ZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS8uZ2l0aWdub3JlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5Ly5naXRpZ25vcmUKaW5kZXggOTQ4OTRkNC4uZDNlZjQ3MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5Ly5naXRpZ25vcmUKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5Ly5naXRpZ25vcmUKQEAgLTE4LDkgKzE4LDEzIEBACiAhbWV0YS15b2N0bwogIW1ldGEteW9jdG8tYnNwCiAhbWV0YS15b2N0by1pbXBvcnRlZAotZG9jdW1lbnRhdGlvbi91c2VyLW1hbnVhbC91c2VyLW1hbnVhbC5odG1sCi1kb2N1bWVudGF0aW9uL3VzZXItbWFudWFsL3VzZXItbWFudWFsLnBkZgotZG9jdW1lbnRhdGlvbi91c2VyLW1hbnVhbC91c2VyLW1hbnVhbC50Z3oKKy9kb2N1bWVudGF0aW9uLyovZWNsaXBzZS8KKy9kb2N1bWVudGF0aW9uLyovKi5odG1sCisvZG9jdW1lbnRhdGlvbi8qLyoucGRmCisvZG9jdW1lbnRhdGlvbi8qLyoudGd6CisvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLmh0bWwKKy9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwucGRmCisvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLnRnegogcHVsbC0qLwogYml0YmFrZS9saWIvdG9hc3Rlci9jb250cmliL3R0cy9iYWNrbG9nLnR4dAogYml0YmFrZS9saWIvdG9hc3Rlci9jb250cmliL3R0cy9sb2cvKgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L1JFQURNRS5MU0IgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvUkVBRE1FLkxTQgppbmRleCBjOWRjYTNmLi5mNjhkMDdjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvUkVBRE1FLkxTQgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvUkVBRE1FLkxTQgpAQCAtMjMsMyArMjMsNCBAQAogKiBsaWJwbmcgMS4yIGlzbid0IHByb3ZpZGVkOyBvZS1jb3JlIGluY2x1ZGVzIHRoZSBsYXRlc3QgcmVsZWFzZSBvZiBsaWJwbmcKICAgaW5zdGVhZC4KIAorKiBwYXggKFBPU0lYIHN0YW5kYXJkIGFyY2hpdmUpIHRvb2wgaXMgbm90IHByb3ZpZGVkLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvYmluL2JpdGJha2UgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vYml0YmFrZQppbmRleCAzYWNjMjNhLi4zNDJjZWY5IDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vYml0YmFrZQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vYml0YmFrZQpAQCAtMzgsNyArMzgsNyBAQAogaWYgc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpICE9ICJ1dGYtOCI6CiAgICAgc3lzLmV4aXQoIlBsZWFzZSB1c2UgYSBsb2NhbGUgc2V0dGluZyB3aGljaCBzdXBwb3J0cyBVVEYtOCAoc3VjaCBhcyBMQU5HPWVuX1VTLlVURi04KS5cblB5dGhvbiBjYW4ndCBjaGFuZ2UgdGhlIGZpbGVzeXN0ZW0gbG9jYWxlIGFmdGVyIGxvYWRpbmcgc28gd2UgbmVlZCBhIFVURi04IHdoZW4gUHl0aG9uIHN0YXJ0cyBvciB0aGluZ3Mgd29uJ3Qgd29yay4iKQogCi1fX3ZlcnNpb25fXyA9ICIxLjM2LjAiCitfX3ZlcnNpb25fXyA9ICIxLjM4LjAiCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgaWYgX192ZXJzaW9uX18gIT0gYmIuX192ZXJzaW9uX186CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9iaW4vdG9hc3RlciBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi90b2FzdGVyCmluZGV4IDQwMzZmMGEuLmVkMzY1ZWUgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi90b2FzdGVyCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2Jpbi90b2FzdGVyCkBAIC02OCw3ICs2OCw3IEBACiAgICAgICAgIGlmIFsgLWYgJHtwaWRmaWxlfSBdOyB0aGVuCiAgICAgICAgICAgICBwaWQ9YGNhdCAke3BpZGZpbGV9YAogICAgICAgICAgICAgd2hpbGUga2lsbCAtMCAkcGlkIDI+L2Rldi9udWxsOyBkbwotICAgICAgICAgICAgICAgIGtpbGwgLVNJR1RFUk0gLSRwaWQgMj4vZGV2L251bGwKKyAgICAgICAgICAgICAgICBraWxsIC1TSUdURVJNICRwaWQgMj4vZGV2L251bGwKICAgICAgICAgICAgICAgICBzbGVlcCAxCiAgICAgICAgICAgICBkb25lCiAgICAgICAgICAgICBybSAgJHtwaWRmaWxlfQpAQCAtOTEsNyArOTEsNyBAQAogCiAgICAgZWNobyAiU3RhcnRpbmcgd2Vic2VydmVyLi4uIgogCi0gICAgJE1BTkFHRSBydW5zZXJ2ZXIgIiRBRERSX1BPUlQiIFwKKyAgICAkTUFOQUdFIHJ1bnNlcnZlciAtLW5vcmVsb2FkICIkQUREUl9QT1JUIiBcCiAgICAgICAgICAgIDwvZGV2L251bGwgPj4ke0JVSUxERElSfS90b2FzdGVyX3dlYi5sb2cgMj4mMSBcCiAgICAgICAgICAgICYgZWNobyAkISA+JHtCVUlMRERJUn0vLnRvYXN0ZXJtYWluLnBpZAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9jb250cmliL2R1bXBfY2FjaGUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9jb250cmliL2R1bXBfY2FjaGUucHkKaW5kZXggZjRkNGMxYi4uODk2M2NhNCAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvY29udHJpYi9kdW1wX2NhY2hlLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2NvbnRyaWIvZHVtcF9jYWNoZS5weQpAQCAtMiw3ICsyLDcgQEAKICMgZXg6dHM9NDpzdz00OnN0cz00OmV0CiAjIC0qLSB0YWItd2lkdGg6IDQ7IGMtYmFzaWMtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWwgLSotCiAjCi0jIENvcHlyaWdodCAoQykgMjAxMiBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KKyMgQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE4IFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgogIwogIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwpAQCAtMTgsNTEgKzE4LDY4IEBACiAjIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCiAKICMKLSMgVGhpcyBpcyB1c2VkIGZvciBkdW1waW5nIHRoZSBiYl9jYWNoZS5kYXQsIHRoZSBvdXRwdXQgZm9ybWF0IGlzOgotIyByZWNpcGVfcGF0aCBQTiBQViBQQUNLQUdFUworIyBVc2VkIGZvciBkdW1waW5nIHRoZSBiYl9jYWNoZS5kYXQKICMKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IHdhcm5pbmdzCitpbXBvcnQgYXJncGFyc2UKIAogIyBGb3IgaW1wb3J0aW5nIGJiLmNhY2hlCiBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoc3lzLmFyZ3ZbMF0pKSwgJy4uL2xpYicpKQogZnJvbSBiYi5jYWNoZSBpbXBvcnQgQ29yZVJlY2lwZUluZm8KIAotaW1wb3J0IHBpY2tsZSBhcyBwaWNrbGUKK2ltcG9ydCBwaWNrbGUKIAotZGVmIG1haW4oYXJndj1Ob25lKToKLSAgICAiIiIKLSAgICBHZXQgdGhlIG1hcHBpbmcgZm9yIHRoZSB0YXJnZXQgcmVjaXBlLgotICAgICIiIgotICAgIGlmIGxlbihhcmd2KSAhPSAxOgotICAgICAgICBwcmludCgiRXJyb3IsIG5lZWQgb25lIGFyZ3VtZW50ISIsIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgcmV0dXJuIDIKK2NsYXNzIER1bXBDYWNoZShvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoCisgICAgICAgICAgICBkZXNjcmlwdGlvbj0iYmJfY2FjaGUuZGF0J3MgZHVtcGVyIiwKKyAgICAgICAgICAgIGVwaWxvZz0iVXNlICUocHJvZylzIC0taGVscCB0byBnZXQgaGVscCIpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1yIiwgIi0tcmVjaXBlIiwKKyAgICAgICAgICAgIGhlbHA9InNwZWNpZnkgdGhlIHJlY2lwZSwgZGVmYXVsdDogYWxsIHJlY2lwZXMiLCBhY3Rpb249InN0b3JlIikKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLW0iLCAiLS1tZW1iZXJzIiwKKyAgICAgICAgICAgIGhlbHAgPSAic3BlY2lmeSB0aGUgbWVtYmVyLCB1c2UgY29tbWEgYXMgc2VwYXJhdG9yIGZvciBtdWx0aXBsZSBvbmVzLCBkZWZhdWx0OiBhbGwgbWVtYmVycyIsIGFjdGlvbj0ic3RvcmUiLCBkZWZhdWx0PSIiKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItcyIsICItLXNraXAiLAorICAgICAgICAgICAgaGVscCA9ICJza2lwIHNraXBwZWQgcmVjaXBlcyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoImNhY2hlZmlsZSIsCisgICAgICAgICAgICBoZWxwID0gInNwZWNpZnkgYmJfY2FjaGUuZGF0IiwgbmFyZ3MgPSAxLCBhY3Rpb249InN0b3JlIiwgZGVmYXVsdD0iIikKIAotICAgIGNhY2hlZmlsZSA9IGFyZ3ZbMF0KKyAgICAgICAgc2VsZi5hcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogCi0gICAgd2l0aCBvcGVuKGNhY2hlZmlsZSwgInJiIikgYXMgY2FjaGVmaWxlOgotICAgICAgICBwaWNrbGVkID0gcGlja2xlLlVucGlja2xlcihjYWNoZWZpbGUpCi0gICAgICAgIHdoaWxlIGNhY2hlZmlsZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBrZXkgPSBwaWNrbGVkLmxvYWQoKQotICAgICAgICAgICAgICAgIHZhbCA9IHBpY2tsZWQubG9hZCgpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbCwgQ29yZVJlY2lwZUluZm8pIGFuZCAobm90IHZhbC5za2lwcGVkKToKLSAgICAgICAgICAgICAgICBwbiA9IHZhbC5wbgotICAgICAgICAgICAgICAgICMgRmlsdGVyIG91dCB0aGUgbmF0aXZlIHJlY2lwZXMuCi0gICAgICAgICAgICAgICAgaWYga2V5LnN0YXJ0c3dpdGgoJ3ZpcnR1YWw6bmF0aXZlOicpIG9yIHBuLmVuZHN3aXRoKCItbmF0aXZlIik6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgZGVmIG1haW4oc2VsZik6CisgICAgICAgIHdpdGggb3BlbihzZWxmLmFyZ3MuY2FjaGVmaWxlWzBdLCAicmIiKSBhcyBjYWNoZWZpbGU6CisgICAgICAgICAgICBwaWNrbGVkID0gcGlja2xlLlVucGlja2xlcihjYWNoZWZpbGUpCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAga2V5ID0gcGlja2xlZC5sb2FkKCkKKyAgICAgICAgICAgICAgICAgICAgdmFsID0gcGlja2xlZC5sb2FkKCkKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsLCBDb3JlUmVjaXBlSW5mbyk6CisgICAgICAgICAgICAgICAgICAgIHBuID0gdmFsLnBuCiAKLSAgICAgICAgICAgICAgICAjIDEuMCBpcyB0aGUgZGVmYXVsdCB2ZXJzaW9uIGZvciBhIG5vIFBWIHJlY2lwZS4KLSAgICAgICAgICAgICAgICBpZiAicHYiIGluIHZhbC5fX2RpY3RfXzoKLSAgICAgICAgICAgICAgICAgICAgcHYgPSB2YWwucHYKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBwdiA9ICIxLjAiCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuYXJncy5yZWNpcGUgYW5kIHNlbGYuYXJncy5yZWNpcGUgIT0gcG46CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICAgICAgcHJpbnQoIiVzICVzICVzICVzIiAlIChrZXksIHBuLCBwdiwgJyAnLmpvaW4odmFsLnBhY2thZ2VzKSkpCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuYXJncy5za2lwIGFuZCB2YWwuc2tpcHBlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5hcmdzLm1lbWJlcnM6CisgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBrZXkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBtZW1iZXIgaW4gc2VsZi5hcmdzLm1lbWJlcnMuc3BsaXQoJywnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gIjogJXMiICUgdmFsLl9fZGljdF9fLmdldChtZW1iZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiJXMiICUgb3V0KQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiVzOiAlcyIgJSAoa2V5LCB2YWwuX19kaWN0X18pKQorICAgICAgICAgICAgICAgIGVsaWYgbm90IHNlbGYuYXJncy5yZWNpcGU6CisgICAgICAgICAgICAgICAgICAgIHByaW50KCIlcyAlcyIgJSAoa2V5LCB2YWwpKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHN5cy5leGl0KG1haW4oc3lzLmFyZ3ZbMTpdKSkKLQorICAgIHRyeToKKyAgICAgICAgZHVtcCA9IER1bXBDYWNoZSgpCisgICAgICAgIHJldCA9IGR1bXAubWFpbigpCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlc2M6CisgICAgICAgIHJldCA9IDEKKyAgICAgICAgaW1wb3J0IHRyYWNlYmFjaworICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKKyAgICBzeXMuZXhpdChyZXQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWV4ZWN1dGlvbi54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWV4ZWN1dGlvbi54bWwKaW5kZXggZTRjYzQyMi4uZjFjYWFlYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1leGVjdXRpb24ueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtZXhlY3V0aW9uLnhtbApAQCAtNzgxLDcgKzc4MSw3IEBACiAgICAgICAgICAgICBUaGUgY29kZSBpbiA8ZmlsZW5hbWU+bWV0YS9saWIvb2Uvc3N0YXRlc2lnLnB5PC9maWxlbmFtZT4gc2hvd3MgdHdvIGV4YW1wbGVzCiAgICAgICAgICAgICBvZiB0aGlzIGFuZCBhbHNvIGlsbHVzdHJhdGVzIGhvdyB5b3UgY2FuIGluc2VydCB5b3VyIG93biBwb2xpY3kgaW50byB0aGUgc3lzdGVtCiAgICAgICAgICAgICBpZiBzbyBkZXNpcmVkLgotICAgICAgICAgICAgVGhpcyBmaWxlIGRlZmluZXMgdGhlIHR3byBiYXNpYyBzaWduYXR1cmUgZ2VuZXJhdG9ycyBPcGVuRW1iZWRkZWQgQ29yZQorICAgICAgICAgICAgVGhpcyBmaWxlIGRlZmluZXMgdGhlIHR3byBiYXNpYyBzaWduYXR1cmUgZ2VuZXJhdG9ycyBPcGVuRW1iZWRkZWQtQ29yZQogICAgICAgICAgICAgdXNlczogICJPRUJhc2ljIiBhbmQgIk9FQmFzaWNIYXNoIi4KICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZXJlIGlzIGEgZHVtbXkgIm5vb3AiIHNpZ25hdHVyZSBoYW5kbGVyIGVuYWJsZWQgaW4gQml0QmFrZS4KICAgICAgICAgICAgIFRoaXMgbWVhbnMgdGhhdCBiZWhhdmlvciBpcyB1bmNoYW5nZWQgZnJvbSBwcmV2aW91cyB2ZXJzaW9ucy4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtZmV0Y2hpbmcueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1mZXRjaGluZy54bWwKaW5kZXggYzcyMWU4Ni4uMjlhZTQ4NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1mZXRjaGluZy54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1mZXRjaGluZy54bWwKQEAgLTc3Nyw2ICs3NzcsNDMgQEAKICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogCisgICAgICAgIDxzZWN0aW9uIGlkPSdyZXBvLWZldGNoZXInPgorICAgICAgICAgICAgPHRpdGxlPlJlcG8gRmV0Y2hlciAoPGZpbGVuYW1lPnJlcG86Ly88L2ZpbGVuYW1lPik8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIGZldGNoZXIgc3VibW9kdWxlIGZldGNoZXMgY29kZSBmcm9tCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdvb2dsZS1yZXBvPC9maWxlbmFtZT4gc291cmNlIGNvbnRyb2wgc3lzdGVtLgorICAgICAgICAgICAgICAgIFRoZSBmZXRjaGVyIHdvcmtzIGJ5IGluaXRpYXRpbmcgYW5kIHN5bmNpbmcgc291cmNlcyBvZiB0aGUKKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5IGludG8KKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUkVQT0RJUic+PGZpbGVuYW1lPlJFUE9ESVI8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgdXN1YWxseQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ETF9ESVInPjxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+L3JlcG88L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhpcyBmZXRjaGVyIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+InByb3RvY29sIjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG9jb2wgdG8gZmV0Y2ggdGhlIHJlcG9zaXRvcnkgbWFuaWZlc3QgKGRlZmF1bHQ6IGdpdCkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPiJicmFuY2giOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBCcmFuY2ggb3IgdGFnIG9mIHJlcG9zaXRvcnkgdG8gZ2V0IChkZWZhdWx0OiBtYXN0ZXIpLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4ibWFuaWZlc3QiOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBOYW1lIG9mIHRoZSBtYW5pZmVzdCBmaWxlIChkZWZhdWx0OiA8ZmlsZW5hbWU+ZGVmYXVsdC54bWw8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICBIZXJlIGFyZSBzb21lIGV4YW1wbGUgVVJMczoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgU1JDX1VSSSA9ICJyZXBvOi8vUkVQT1JPT1Q7cHJvdG9jb2w9Z2l0O2JyYW5jaD1zb21lX2JyYW5jaDttYW5pZmVzdD1teV9tYW5pZmVzdC54bWwiCisgICAgU1JDX1VSSSA9ICJyZXBvOi8vUkVQT1JPT1Q7cHJvdG9jb2w9ZmlsZTticmFuY2g9c29tZV9icmFuY2g7bWFuaWZlc3Q9bXlfbWFuaWZlc3QueG1sIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCiAgICAgICAgIDxzZWN0aW9uIGlkPSdvdGhlci1mZXRjaGVycyc+CiAgICAgICAgICAgICA8dGl0bGU+T3RoZXIgRmV0Y2hlcnM8L3RpdGxlPgogCkBAIC03OTYsOSArODMzLDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFNlY3VyZSBTaGVsbCAoPGZpbGVuYW1lPnNzaDovLzwvZmlsZW5hbWU+KQogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFJlcG8gKDxmaWxlbmFtZT5yZXBvOi8vPC9maWxlbmFtZT4pCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgT1NDICg8ZmlsZW5hbWU+b3NjOi8vPC9maWxlbmFtZT4pCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1oZWxsby54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWhlbGxvLnhtbAppbmRleCA5MjUzZWFmLi45MDc2ZjBmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWhlbGxvLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWhlbGxvLnhtbApAQCAtMjYwLDcgKzI2MCw3IEBACiAgICAgICAgICAgICAgICAgZmlsZXMuCiAgICAgICAgICAgICAgICAgRm9yIHRoaXMgZXhhbXBsZSwgeW91IG5lZWQgdG8gY3JlYXRlIHRoZSBmaWxlIGluIHlvdXIgcHJvamVjdCBkaXJlY3RvcnkKICAgICAgICAgICAgICAgICBhbmQgZGVmaW5lIHNvbWUga2V5IEJpdEJha2UgdmFyaWFibGVzLgotICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS5jb25mPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIDxmaWxlbmFtZT5iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLAogICAgICAgICAgICAgICAgIHNlZQogICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlL3RyZWUvY29uZi9iaXRiYWtlLmNvbmYnPjwvdWxpbms+LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTI3MywxNCArMjczLDMyIEBACiAgICAgICAgICAgICAgICAgc29tZSBlZGl0b3IgdG8gY3JlYXRlIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS5jb25mPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICBzbyB0aGF0IGl0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICA8bGluayBsaW5rZW5kPSd2YXItUE4nPlBOPC9saW5rPiAgPSAiJHtAYmIucGFyc2UuQkJIYW5kbGVyLnZhcnNfZnJvbV9maWxlKGQuZ2V0VmFyKCdGSUxFJywgRmFsc2UpLGQpWzBdIG9yICdkZWZhdWx0cGtnbmFtZSd9IgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIFRNUERJUiAgPSAiJHs8bGluayBsaW5rZW5kPSd2YXItVE9QRElSJz5UT1BESVI8L2xpbms+fS90bXAiCiAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DQUNIRSc+Q0FDSEU8L2xpbms+ICAgPSAiJHtUTVBESVJ9L2NhY2hlIgotICAgICA8bGluayBsaW5rZW5kPSd2YXItU1RBTVAnPlNUQU1QPC9saW5rPiAgID0gIiR7VE1QRElSfS9zdGFtcHMiCi0gICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UJz5UPC9saW5rPiAgICAgICA9ICIke1RNUERJUn0vd29yayIKLSAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUInPkI8L2xpbms+ICAgICAgID0gIiR7VE1QRElSfSIKKyAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNUQU1QJz5TVEFNUDwvbGluaz4gICA9ICIke1RNUERJUn0vJHtQTn0vc3RhbXBzIgorICAgICA8bGluayBsaW5rZW5kPSd2YXItVCc+VDwvbGluaz4gICAgICAgPSAiJHtUTVBESVJ9LyR7UE59L3dvcmsiCisgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CJz5CPC9saW5rPiAgICAgICA9ICIke1RNUERJUn0vJHtQTn0iCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBXaXRob3V0IGEgdmFsdWUgZm9yIDxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzIDxmaWxlbmFtZT5TVEFNUDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VDwvZmlsZW5hbWU+LCBhbmQgPGZpbGVuYW1lPkI8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgcHJldmVudCBtb3JlIHRoYW4gb25lIHJlY2lwZSBmcm9tIHdvcmtpbmcuIFlvdSBjYW4gZml4CisgICAgICAgICAgICAgICAgICAgIHRoaXMgYnkgZWl0aGVyIHNldHRpbmcgPGZpbGVuYW1lPlBOPC9maWxlbmFtZT4gdG8gaGF2ZQorICAgICAgICAgICAgICAgICAgICBhIHZhbHVlIHNpbWlsYXIgdG8gd2hhdCBPcGVuRW1iZWRkZWQgYW5kIEJpdEJha2UgdXNlCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSBkZWZhdWx0IDxmaWxlbmFtZT5iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgIChzZWUgcHJldmlvdXMgZXhhbXBsZSkuIE9yLCBieSBtYW51YWxseSB1cGRhdGluZyBlYWNoCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZSB0byBzZXQgPGZpbGVuYW1lPlBOPC9maWxlbmFtZT4uIFlvdSB3aWxsIGFsc28KKyAgICAgICAgICAgICAgICAgICAgbmVlZCB0byBpbmNsdWRlIDxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+IGFzIHBhcnQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TVEFNUDwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+VDwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkI8L2ZpbGVuYW1lPiB2YXJpYWJsZSBkZWZpbml0aW9ucyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IHZhcmlhYmxlIGVzdGFibGlzaGVzIGEgZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgdGhhdCBCaXRCYWtlIHVzZXMgZm9yIGJ1aWxkIG91dHB1dCBhbmQgaW50ZXJtZWRpYXRlIGZpbGVzIChvdGhlcgorICAgICAgICAgICAgICAgIHRoYXQgQml0QmFrZSB1c2VzIGZvciBidWlsZCBvdXRwdXQgYW5kIGludGVybWVkaWF0ZSBmaWxlcyBvdGhlcgogICAgICAgICAgICAgICAgIHRoYW4gdGhlIGNhY2hlZCBpbmZvcm1hdGlvbiB1c2VkIGJ5IHRoZQogICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NldHNjZW5lJz5TZXRzY2VuZTwvbGluaz4gcHJvY2Vzcy4KICAgICAgICAgICAgICAgICBIZXJlLCB0aGUgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpcyBzZXQgdG8KQEAgLTMwMCwxOSArMzE4LDE5IEBACiAgICAgICAgICAgICAgICAgZmlsZSBleGlzdHMsIHlvdSBjYW4gcnVuIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgY29tbWFuZCBhZ2FpbjoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0kIGJpdGJha2UKLUVSUk9SOiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gIEZpbGUgIi9ob21lL3Njb3R0LWxlbm92by9iaXRiYWtlL2xpYi9iYi9jb29rZXJkYXRhLnB5IiwgbGluZSAxNjMsIGluIHdyYXBwZWQKLSAgICByZXR1cm4gZnVuYyhmbiwgKmFyZ3MpCi0gIEZpbGUgIi9ob21lL3Njb3R0LWxlbm92by9iaXRiYWtlL2xpYi9iYi9jb29rZXJkYXRhLnB5IiwgbGluZSAxNzcsIGluIF9pbmhlcml0Ci0gICAgYmIucGFyc2UuQkJIYW5kbGVyLmluaGVyaXQoYmJjbGFzcywgImNvbmZpZ3VyYXRpb24gSU5IRVJJVHMiLCAwLCBkYXRhKQotICBGaWxlICIvaG9tZS9zY290dC1sZW5vdm8vYml0YmFrZS9saWIvYmIvcGFyc2UvcGFyc2VfcHkvQkJIYW5kbGVyLnB5IiwgbGluZSA5MiwgaW4gaW5oZXJpdAotICAgIGluY2x1ZGUoZm4sIGZpbGUsIGxpbmVubywgZCwgImluaGVyaXQiKQotICBGaWxlICIvaG9tZS9zY290dC1sZW5vdm8vYml0YmFrZS9saWIvYmIvcGFyc2UvcGFyc2VfcHkvQ29uZkhhbmRsZXIucHkiLCBsaW5lIDEwMCwgaW4gaW5jbHVkZQotICAgIHJhaXNlIFBhcnNlRXJyb3IoIkNvdWxkIG5vdCAlKGVycm9yX291dClzIGZpbGUgJShmbilzIiAlIHZhcnMoKSwgb2xkZm4sIGxpbmVubykKLVBhcnNlRXJyb3I6IFBhcnNlRXJyb3IgaW4gY29uZmlndXJhdGlvbiBJTkhFUklUczogQ291bGQgbm90IGluaGVyaXQgZmlsZSBjbGFzc2VzL2Jhc2UuYmJjbGFzcworICAgICAkIGJpdGJha2UKKyAgICAgRVJST1I6IFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICBGaWxlICIvaG9tZS9zY290dC1sZW5vdm8vYml0YmFrZS9saWIvYmIvY29va2VyZGF0YS5weSIsIGxpbmUgMTYzLCBpbiB3cmFwcGVkCisgICAgICAgICByZXR1cm4gZnVuYyhmbiwgKmFyZ3MpCisgICAgICAgRmlsZSAiL2hvbWUvc2NvdHQtbGVub3ZvL2JpdGJha2UvbGliL2JiL2Nvb2tlcmRhdGEucHkiLCBsaW5lIDE3NywgaW4gX2luaGVyaXQKKyAgICAgICAgIGJiLnBhcnNlLkJCSGFuZGxlci5pbmhlcml0KGJiY2xhc3MsICJjb25maWd1cmF0aW9uIElOSEVSSVRzIiwgMCwgZGF0YSkKKyAgICAgICBGaWxlICIvaG9tZS9zY290dC1sZW5vdm8vYml0YmFrZS9saWIvYmIvcGFyc2UvcGFyc2VfcHkvQkJIYW5kbGVyLnB5IiwgbGluZSA5MiwgaW4gaW5oZXJpdAorICAgICAgICAgaW5jbHVkZShmbiwgZmlsZSwgbGluZW5vLCBkLCAiaW5oZXJpdCIpCisgICAgICAgRmlsZSAiL2hvbWUvc2NvdHQtbGVub3ZvL2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0NvbmZIYW5kbGVyLnB5IiwgbGluZSAxMDAsIGluIGluY2x1ZGUKKyAgICAgICAgIHJhaXNlIFBhcnNlRXJyb3IoIkNvdWxkIG5vdCAlKGVycm9yX291dClzIGZpbGUgJShmbilzIiAlIHZhcnMoKSwgb2xkZm4sIGxpbmVubykKKyAgICAgUGFyc2VFcnJvcjogUGFyc2VFcnJvciBpbiBjb25maWd1cmF0aW9uIElOSEVSSVRzOiBDb3VsZCBub3QgaW5oZXJpdCBmaWxlIGNsYXNzZXMvYmFzZS5iYmNsYXNzCiAKLUVSUk9SOiBVbmFibGUgdG8gcGFyc2UgYmFzZTogUGFyc2VFcnJvciBpbiBjb25maWd1cmF0aW9uIElOSEVSSVRzOiBDb3VsZCBub3QgaW5oZXJpdCBmaWxlIGNsYXNzZXMvYmFzZS5iYmNsYXNzCisgICAgIEVSUk9SOiBVbmFibGUgdG8gcGFyc2UgYmFzZTogUGFyc2VFcnJvciBpbiBjb25maWd1cmF0aW9uIElOSEVSSVRzOiBDb3VsZCBub3QgaW5oZXJpdCBmaWxlIGNsYXNzZXMvYmFzZS5iYmNsYXNzCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIEluIHRoZSBzYW1wbGUgb3V0cHV0LCBCaXRCYWtlIGNvdWxkIG5vdCBmaW5kIHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jbGFzc2VzL2Jhc2UuYmJjbGFzczwvZmlsZW5hbWU+IGZpbGUuCkBAIC0zNjUsMTAgKzM4MywxMCBAQAogICAgICAgICAgICAgICAgIGNvZGUgc2VwYXJhdGUgZnJvbSB0aGUgZ2VuZXJhbCBtZXRhZGF0YSB1c2VkIGJ5IEJpdEJha2UuCiAgICAgICAgICAgICAgICAgVGh1cywgdGhpcyBleGFtcGxlIGNyZWF0ZXMgYW5kIHVzZXMgYSBsYXllciBjYWxsZWQgIm15bGF5ZXIiLgogICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBsYXllcnMgYXQKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi4zL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC5odG1sI2xheWVycyc+PC91bGluaz4uCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gbGF5ZXJzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbGF5ZXJzJz5MYXllcnM8L2xpbms+IiBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CisKICAgICAgICAgICAgICAgICA8cGFyYT5NaW5pbWFsbHksIHlvdSBuZWVkIGEgcmVjaXBlIGZpbGUgYW5kIGEgbGF5ZXIgY29uZmlndXJhdGlvbgogICAgICAgICAgICAgICAgIGZpbGUgaW4geW91ciBsYXllci4KICAgICAgICAgICAgICAgICBUaGUgY29uZmlndXJhdGlvbiBmaWxlIG5lZWRzIHRvIGJlIGluIHRoZSA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWludHJvLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaW50cm8ueG1sCmluZGV4IDA4ZDlhZmQuLjRjZjBlZDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaW50cm8ueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaW50cm8ueG1sCkBAIC00ODgsOCArNDg4LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IHRoYXQgZmFpbGVkIGFuZCBhbnl0aGluZyBkZXBlbmRpbmcgb24gaXQgY2Fubm90CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGJ1aWx0LCBhcyBtdWNoIGFzIHBvc3NpYmxlIHdpbGwgYmUgYnVpbHQgYmVmb3JlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BwaW5nLgotICAgICAgIC1hLCAtLXRyeWFsdGNvbmZpZ3MgICBDb250aW51ZSB3aXRoIGJ1aWxkcyBieSB0cnlpbmcgdG8gdXNlIGFsdGVybmF0aXZlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVycyB3aGVyZSBwb3NzaWJsZS4KICAgICAgICAtZiwgLS1mb3JjZSAgICAgICAgICAgRm9yY2UgdGhlIHNwZWNpZmllZCB0YXJnZXRzL3Rhc2sgdG8gcnVuIChpbnZhbGlkYXRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55IGV4aXN0aW5nIHN0YW1wIGZpbGUpLgogICAgICAgIC1jIENNRCwgLS1jbWQ9Q01EICAgICBTcGVjaWZ5IHRoZSB0YXNrIHRvIGV4ZWN1dGUuIFRoZSBleGFjdCBvcHRpb25zCkBAIC01MDQsMTkgKzUwMiwyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkIHRoZSBzcGVjaWZpZWQgZmlsZSBiZWZvcmUgYml0YmFrZS5jb25mLgogICAgICAgIC1SIFBPU1RGSUxFLCAtLXBvc3RyZWFkPVBPU1RGSUxFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWQgdGhlIHNwZWNpZmllZCBmaWxlIGFmdGVyIGJpdGJha2UuY29uZi4KLSAgICAgICAtdiwgLS12ZXJib3NlICAgICAgICAgRW5hYmxlIHRyYWNpbmcgb2Ygc2hlbGwgdGFza3MgKHdpdGggJ3NldCAteCcpLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHNvIHByaW50IGJiLm5vdGUoLi4uKSBtZXNzYWdlcyB0byBzdGRvdXQgKGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uIHRvIHdyaXRpbmcgdGhlbSB0byAke1R9L2xvZy5kb18mbHQ7dGFzayZndDspLgotICAgICAgIC1ELCAtLWRlYnVnICAgICAgICAgICBJbmNyZWFzZSB0aGUgZGVidWcgbGV2ZWwuIFlvdSBjYW4gc3BlY2lmeSB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmUgdGhhbiBvbmNlLiAtRCBzZXRzIHRoZSBkZWJ1ZyBsZXZlbCB0byAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSBvbmx5IGJiLmRlYnVnKDEsIC4uLikgbWVzc2FnZXMgYXJlIHByaW50ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gc3Rkb3V0OyAtREQgc2V0cyB0aGUgZGVidWcgbGV2ZWwgdG8gMiwgd2hlcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aCBiYi5kZWJ1ZygxLCAuLi4pIGFuZCBiYi5kZWJ1ZygyLCAuLi4pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzIGFyZSBwcmludGVkOyBldGMuIFdpdGhvdXQgLUQsIG5vIGRlYnVnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzIGFyZSBwcmludGVkLiBOb3RlIHRoYXQgLUQgb25seSBhZmZlY3RzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCB0byBzdGRvdXQuIEFsbCBkZWJ1ZyBtZXNzYWdlcyBhcmUgd3JpdHRlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byAke1R9L2xvZy5kb190YXNrbmFtZSwgcmVnYXJkbGVzcyBvZiB0aGUgZGVidWcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwuCisgICAgICAgLXYsIC0tdmVyYm9zZSAgICAgICAgIEVuYWJsZSB0cmFjaW5nIG9mIHNoZWxsIHRhc2tzICh3aXRoICdzZXQgLXgnKS4gQWxzbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCBiYi5ub3RlKC4uLikgbWVzc2FnZXMgdG8gc3Rkb3V0IChpbiBhZGRpdGlvbiB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0aW5nIHRoZW0gdG8gJHtUfS9sb2cuZG9fJmx0O3Rhc2smZ3Q7KS4KKyAgICAgICAtRCwgLS1kZWJ1ZyAgICAgICAgICAgSW5jcmVhc2UgdGhlIGRlYnVnIGxldmVsLiBZb3UgY2FuIHNwZWNpZnkgdGhpcyBtb3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYW4gb25jZS4gLUQgc2V0cyB0aGUgZGVidWcgbGV2ZWwgdG8gMSwgd2hlcmUgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAuLi4pIG1lc3NhZ2VzIGFyZSBwcmludGVkIHRvIHN0ZG91dDsgLURECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHMgdGhlIGRlYnVnIGxldmVsIHRvIDIsIHdoZXJlIGJvdGggYmIuZGVidWcoMSwgLi4uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYmIuZGVidWcoMiwgLi4uKSBtZXNzYWdlcyBhcmUgcHJpbnRlZDsgZXRjLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaXRob3V0IC1ELCBubyBkZWJ1ZyBtZXNzYWdlcyBhcmUgcHJpbnRlZC4gTm90ZSB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1EIG9ubHkgYWZmZWN0cyBvdXRwdXQgdG8gc3Rkb3V0LiBBbGwgZGVidWcgbWVzc2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIHdyaXR0ZW4gdG8gJHtUfS9sb2cuZG9fdGFza25hbWUsIHJlZ2FyZGxlc3Mgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnIGxldmVsLgorICAgICAgIC1xLCAtLXF1aWV0ICAgICAgICAgICBPdXRwdXQgbGVzcyBsb2cgbWVzc2FnZSBkYXRhIHRvIHRoZSB0ZXJtaW5hbC4gWW91IGNhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IHRoaXMgbW9yZSB0aGFuIG9uY2UuCiAgICAgICAgLW4sIC0tZHJ5LXJ1biAgICAgICAgIERvbid0IGV4ZWN1dGUsIGp1c3QgZ28gdGhyb3VnaCB0aGUgbW90aW9ucy4KICAgICAgICAtUyBTSUdOQVRVUkVfSEFORExFUiwgLS1kdW1wLXNpZ25hdHVyZXM9U0lHTkFUVVJFX0hBTkRMRVIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHVtcCBvdXQgdGhlIHNpZ25hdHVyZSBjb25zdHJ1Y3Rpb24gaW5mb3JtYXRpb24sIHdpdGgKQEAgLTUzOSwzMCArNTM4LDM4IEBACiAgICAgICAgLWwgREVCVUdfRE9NQUlOUywgLS1sb2ctZG9tYWlucz1ERUJVR19ET01BSU5TCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNob3cgZGVidWcgbG9nZ2luZyBmb3IgdGhlIHNwZWNpZmllZCBsb2dnaW5nIGRvbWFpbnMKICAgICAgICAtUCwgLS1wcm9maWxlICAgICAgICAgUHJvZmlsZSB0aGUgY29tbWFuZCBhbmQgc2F2ZSByZXBvcnRzLgotICAgICAgIC11IFVJLCAtLXVpPVVJICAgICAgICBUaGUgdXNlciBpbnRlcmZhY2UgdG8gdXNlICh0YXNrZXhwLCBrbm90dHkgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmN1cnNlcyAtIGRlZmF1bHQga25vdHR5KS4KLSAgICAgICAtdCBTRVJWRVJUWVBFLCAtLXNlcnZlcnR5cGU9U0VSVkVSVFlQRQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaG9vc2Ugd2hpY2ggc2VydmVyIHR5cGUgdG8gdXNlIChwcm9jZXNzIG9yIHhtbHJwYyAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgcHJvY2VzcykuCisgICAgICAgLXUgVUksIC0tdWk9VUkgICAgICAgIFRoZSB1c2VyIGludGVyZmFjZSB0byB1c2UgKGtub3R0eSwgbmN1cnNlcyBvciB0YXNrZXhwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gZGVmYXVsdCBrbm90dHkpLgogICAgICAgIC0tdG9rZW49WE1MUlBDVE9LRU4gICBTcGVjaWZ5IHRoZSBjb25uZWN0aW9uIHRva2VuIHRvIGJlIHVzZWQgd2hlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW5nIHRvIGEgcmVtb3RlIHNlcnZlci4KICAgICAgICAtLXJldmlzaW9ucy1jaGFuZ2VkICAgU2V0IHRoZSBleGl0IGNvZGUgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdXBzdHJlYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXRpbmcgcmV2aXNpb25zIGhhdmUgY2hhbmdlZCBvciBub3QuCiAgICAgICAgLS1zZXJ2ZXItb25seSAgICAgICAgIFJ1biBiaXRiYWtlIHdpdGhvdXQgYSBVSSwgb25seSBzdGFydGluZyBhIHNlcnZlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29va2VyKSBwcm9jZXNzLgotICAgICAgIC1CIEJJTkQsIC0tYmluZD1CSU5EICBUaGUgbmFtZS9hZGRyZXNzIGZvciB0aGUgYml0YmFrZSBzZXJ2ZXIgdG8gYmluZCB0by4KKyAgICAgICAtQiBCSU5ELCAtLWJpbmQ9QklORCAgVGhlIG5hbWUvYWRkcmVzcyBmb3IgdGhlIGJpdGJha2UgeG1scnBjIHNlcnZlciB0byBiaW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvLgorICAgICAgIC1UIFNFUlZFUl9USU1FT1VULCAtLWlkbGUtdGltZW91dD1TRVJWRVJfVElNRU9VVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgdGltZW91dCB0byB1bmxvYWQgYml0YmFrZSBzZXJ2ZXIgZHVlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluYWN0aXZpdHksIHNldCB0byAtMSBtZWFucyBubyB1bmxvYWQsIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudmlyb25tZW50IHZhcmlhYmxlIEJCX1NFUlZFUl9USU1FT1VULgogICAgICAgIC0tbm8tc2V0c2NlbmUgICAgICAgICBEbyBub3QgcnVuIGFueSBzZXRzY2VuZSB0YXNrcy4gc3N0YXRlIHdpbGwgYmUgaWdub3JlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZXZlcnl0aGluZyBuZWVkZWQsIGJ1aWx0LgogICAgICAgIC0tc2V0c2NlbmUtb25seSAgICAgICBPbmx5IHJ1biBzZXRzY2VuZSB0YXNrcywgZG9uJ3QgcnVuIGFueSByZWFsIHRhc2tzLgogICAgICAgIC0tcmVtb3RlLXNlcnZlcj1SRU1PVEVfU0VSVkVSCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbm5lY3QgdG8gdGhlIHNwZWNpZmllZCBzZXJ2ZXIuCi0gICAgICAgLW0sIC0ta2lsbC1zZXJ2ZXIgICAgIFRlcm1pbmF0ZSB0aGUgcmVtb3RlIHNlcnZlci4KKyAgICAgICAtbSwgLS1raWxsLXNlcnZlciAgICAgVGVybWluYXRlIGFueSBydW5uaW5nIGJpdGJha2Ugc2VydmVyLgogICAgICAgIC0tb2JzZXJ2ZS1vbmx5ICAgICAgICBDb25uZWN0IHRvIGEgc2VydmVyIGFzIGFuIG9ic2VydmluZy1vbmx5IGNsaWVudC4KICAgICAgICAtLXN0YXR1cy1vbmx5ICAgICAgICAgQ2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgcmVtb3RlIGJpdGJha2Ugc2VydmVyLgogICAgICAgIC13IFdSSVRFRVZFTlRMT0csIC0td3JpdGUtbG9nPVdSSVRFRVZFTlRMT0cKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVzIHRoZSBldmVudCBsb2cgb2YgdGhlIGJ1aWxkIHRvIGEgYml0YmFrZSBldmVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uIGZpbGUuIFVzZSAnJyAoZW1wdHkgc3RyaW5nKSB0byBhc3NpZ24gdGhlIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseS4KKyAgICAgICAtLXJ1bmFsbD1SVU5BTEwgICAgICAgUnVuIHRoZSBzcGVjaWZpZWQgdGFzayBmb3IgYW55IHJlY2lwZSBpbiB0aGUgdGFza2dyYXBoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBzcGVjaWZpZWQgdGFyZ2V0IChldmVuIGlmIGl0IHdvdWxkbid0IG90aGVyd2lzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlIHJ1bikuCisgICAgICAgLS1ydW5vbmx5PVJVTk9OTFkgICAgIFJ1biBvbmx5IHRoZSBzcGVjaWZpZWQgdGFzayB3aXRoaW4gdGhlIHRhc2tncmFwaCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc3BlY2lmaWVkIHRhcmdldHMgKGFuZCBhbnkgdGFzayBkZXBlbmRlbmNpZXMgdGhvc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza3MgbWF5IGhhdmUpLgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YS54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhLnhtbAppbmRleCAwY2ZhNTNkLi5iNGZjNjRlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhLnhtbApAQCAtMjEzMiw2ICsyMTMyLDggQEAKICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5ldmVudC5CdWlsZFN0YXJ0ZWQoKTwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgICAgICBGaXJlZCB3aGVuIGEgbmV3IGJ1aWxkIHN0YXJ0cy4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBmaXJlcyBtdWx0aXBsZSAiQnVpbGRTdGFydGVkIiBldmVudHMgKG9uZSBwZXIgY29uZmlndXJhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgd2hlbiBtdWx0aXBsZSBjb25maWd1cmF0aW9uIChtdWx0aWNvbmZpZykgaXMgZW5hYmxlZC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIuYnVpbGQuVGFza1N0YXJ0ZWQoKTwvZmlsZW5hbWU+OgpAQCAtMjY1MCw0NyArMjY1Miw3MCBAQAogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGlzIGxpc3QgaXMgYSBwbGFjZSBob2xkZXIgb2YgY29udGVudCBleGlzdGVkIGZyb20gcHJldmlvdXMgd29yawotICAgICAgICAgICAgb24gdGhlIG1hbnVhbC4KLSAgICAgICAgICAgIFNvbWUgb3IgYWxsIG9mIGl0IHByb2JhYmx5IG5lZWRzIGludGVncmF0ZWQgaW50byB0aGUgc3Vic2VjdGlvbnMKLSAgICAgICAgICAgIHRoYXQgbWFrZSB1cCB0aGlzIHNlY3Rpb24uCi0gICAgICAgICAgICBGb3Igbm93LCBJIGhhdmUganVzdCBwcm92aWRlZCBhIHNob3J0IGdsb3NzYXJ5LWxpa2UgZGVzY3JpcHRpb24KLSAgICAgICAgICAgIGZvciBlYWNoIHZhcmlhYmxlLgotICAgICAgICAgICAgVWx0aW1hdGVseSwgdGhpcyBsaXN0IGdvZXMgYXdheS4KKyAgICAgICAgICAgIFRoZXNlIGNoZWNrc3VtcyBhcmUgc3RvcmVkIGluCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1RBTVAnPjxmaWxlbmFtZT5TVEFNUDwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgIFlvdSBjYW4gZXhhbWluZSB0aGUgY2hlY2tzdW1zIHVzaW5nIHRoZSBmb2xsb3dpbmcgQml0QmFrZSBjb21tYW5kOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UtZHVtcHNpZ3MKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoaXMgY29tbWFuZCByZXR1cm5zIHRoZSBzaWduYXR1cmUgZGF0YSBpbiBhIHJlYWRhYmxlIGZvcm1hdAorICAgICAgICAgICAgdGhhdCBhbGxvd3MgeW91IHRvIGV4YW1pbmUgdGhlIGlucHV0cyB1c2VkIHdoZW4gdGhlCisgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGdlbmVyYXRlcyBzaWduYXR1cmVzLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHVzaW5nIDxmaWxlbmFtZT5iaXRiYWtlLWR1bXBzaWdzPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGFsbG93cyB5b3UgdG8gZXhhbWluZSB0aGUgPGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgdGFzaydzIOKAnHNpZ2RhdGHigJ0gZm9yIGEgQyBhcHBsaWNhdGlvbiAoZS5nLgorICAgICAgICAgICAgPGZpbGVuYW1lPmJhc2g8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICBSdW5uaW5nIHRoZSBjb21tYW5kIGFsc28gcmV2ZWFscyB0aGF0IHRoZSDigJxDQ+KAnSB2YXJpYWJsZSBpcyBwYXJ0IG9mCisgICAgICAgICAgICB0aGUgaW5wdXRzIHRoYXQgYXJlIGhhc2hlZC4KKyAgICAgICAgICAgIEFueSBjaGFuZ2VzIHRvIHRoaXMgdmFyaWFibGUgd291bGQgaW52YWxpZGF0ZSB0aGUgc3RhbXAgYW5kCisgICAgICAgICAgICBjYXVzZSB0aGUgPGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPiB0YXNrIHRvIHJ1bi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IGRlc2NyaWJlcyByZWxhdGVkIHZhcmlhYmxlczoKICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5TVEFNUDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBUaGUgYmFzZSBwYXRoIHRvIGNyZWF0ZSBzdGFtcCBmaWxlcy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPlNUQU1QQ0xFQU48L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBBZ2FpbiwgdGhlIGJhc2UgcGF0aCB0byBjcmVhdGUgc3RhbXAgZmlsZXMgYnV0IGNhbiB1c2Ugd2lsZGNhcmRzCi0gICAgICAgICAgICAgICAgICAgIGZvciBtYXRjaGluZyBhIHJhbmdlIG9mIGZpbGVzIGZvciBjbGVhbiBvcGVyYXRpb25zLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPkJCX1NUQU1QX1dISVRFTElTVDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIExpc3RzIHN0YW1wIGZpbGVzIHRoYXQgYXJlIGxvb2tlZCBhdCB3aGVuIHRoZSBzdGFtcCBwb2xpY3kKLSAgICAgICAgICAgICAgICAgICAgaXMgIndoaXRlbGlzdCIuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+QkJfU1RBTVBfUE9MSUNZPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyB0aGUgbW9kZSBmb3IgY29tcGFyaW5nIHRpbWVzdGFtcHMgb2Ygc3RhbXAgZmlsZXMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+QkJfSEFTSENIRUNLX0ZVTkNUSU9OPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CQl9IQVNIQ0hFQ0tfRlVOQ1RJT04nPjxmaWxlbmFtZT5CQl9IQVNIQ0hFQ0tfRlVOQ1RJT048L2ZpbGVuYW1lPjwvbGluaz46CiAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gdG8gY2FsbCBkdXJpbmcKICAgICAgICAgICAgICAgICAgICAgdGhlICJzZXRzY2VuZSIgcGFydCBvZiB0aGUgdGFzaydzIGV4ZWN1dGlvbiBpbiBvcmRlcgogICAgICAgICAgICAgICAgICAgICB0byB2YWxpZGF0ZSB0aGUgbGlzdCBvZiB0YXNrIGhhc2hlcy4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5CQl9TRVRTQ0VORV9WRVJJRllfRlVOQ1RJT04yPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgZnVuY3Rpb24gdG8gY2FsbCB0aGF0IHZlcmlmaWVzIHRoZSBsaXN0IG9mCi0gICAgICAgICAgICAgICAgICAgIHBsYW5uZWQgdGFzayBleGVjdXRpb24gYmVmb3JlIHRoZSBtYWluIHRhc2sgZXhlY3V0aW9uCi0gICAgICAgICAgICAgICAgICAgIGhhcHBlbnMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+QkJfU0VUU0NFTkVfREVQVkFMSUQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCX1NFVFNDRU5FX0RFUFZBTElEJz48ZmlsZW5hbWU+QkJfU0VUU0NFTkVfREVQVkFMSUQ8L2ZpbGVuYW1lPjwvbGluaz46CiAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhIGZ1bmN0aW9uIEJpdEJha2UgY2FsbHMgdGhhdCBkZXRlcm1pbmVzCiAgICAgICAgICAgICAgICAgICAgIHdoZXRoZXIgQml0QmFrZSByZXF1aXJlcyBhIHNldHNjZW5lIGRlcGVuZGVuY3kgdG8KICAgICAgICAgICAgICAgICAgICAgYmUgbWV0LgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPkJCX1RBU0tIQVNIPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CQl9TRVRTQ0VORV9WRVJJRllfRlVOQ1RJT04yJz48ZmlsZW5hbWU+QkJfU0VUU0NFTkVfVkVSSUZZX0ZVTkNUSU9OMjwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgZnVuY3Rpb24gdG8gY2FsbCB0aGF0IHZlcmlmaWVzIHRoZSBsaXN0IG9mCisgICAgICAgICAgICAgICAgICAgIHBsYW5uZWQgdGFzayBleGVjdXRpb24gYmVmb3JlIHRoZSBtYWluIHRhc2sgZXhlY3V0aW9uCisgICAgICAgICAgICAgICAgICAgIGhhcHBlbnMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCX1NUQU1QX1BPTElDWSc+PGZpbGVuYW1lPkJCX1NUQU1QX1BPTElDWTwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyB0aGUgbW9kZSBmb3IgY29tcGFyaW5nIHRpbWVzdGFtcHMgb2Ygc3RhbXAgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCX1NUQU1QX1dISVRFTElTVCc+PGZpbGVuYW1lPkJCX1NUQU1QX1dISVRFTElTVDwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICAgICAgTGlzdHMgc3RhbXAgZmlsZXMgdGhhdCBhcmUgbG9va2VkIGF0IHdoZW4gdGhlIHN0YW1wIHBvbGljeQorICAgICAgICAgICAgICAgICAgICBpcyAid2hpdGVsaXN0Ii4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQkJfVEFTS0hBU0gnPjxmaWxlbmFtZT5CQl9UQVNLSEFTSDwvZmlsZW5hbWU+PC9saW5rPjoKICAgICAgICAgICAgICAgICAgICAgV2l0aGluIGFuIGV4ZWN1dGluZyB0YXNrLCB0aGlzIHZhcmlhYmxlIGhvbGRzIHRoZSBoYXNoCiAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSB0YXNrIGFzIHJldHVybmVkIGJ5IHRoZSBjdXJyZW50bHkgZW5hYmxlZAogICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmUgZ2VuZXJhdG9yLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TVEFNUCc+PGZpbGVuYW1lPlNUQU1QPC9maWxlbmFtZT48L2xpbms+OgorICAgICAgICAgICAgICAgICAgICBUaGUgYmFzZSBwYXRoIHRvIGNyZWF0ZSBzdGFtcCBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1RBTVBDTEVBTic+PGZpbGVuYW1lPlNUQU1QQ0xFQU48L2ZpbGVuYW1lPjwvbGluaz46CisgICAgICAgICAgICAgICAgICAgIEFnYWluLCB0aGUgYmFzZSBwYXRoIHRvIGNyZWF0ZSBzdGFtcCBmaWxlcyBidXQgY2FuIHVzZSB3aWxkY2FyZHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIG1hdGNoaW5nIGEgcmFuZ2Ugb2YgZmlsZXMgZm9yIGNsZWFuIG9wZXJhdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLXJlZi12YXJpYWJsZXMueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1yZWYtdmFyaWFibGVzLnhtbAppbmRleCBkODllMTIzLi4wMzEzMzU5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLXJlZi12YXJpYWJsZXMueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtcmVmLXZhcmlhYmxlcy54bWwKQEAgLTc4LDcgKzc4LDcgQEAKICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgSW4gT3BlbkVtYmVkZGVkIENvcmUsIDxmaWxlbmFtZT5BU1NVTUVfUFJPVklERUQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBJbiBPcGVuRW1iZWRkZWQtQ29yZSwgPGZpbGVuYW1lPkFTU1VNRV9QUk9WSURFRDwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIG1vc3RseSBzcGVjaWZpZXMgbmF0aXZlIHRvb2xzIHRoYXQgc2hvdWxkIG5vdCBiZSBidWlsdC4KICAgICAgICAgICAgICAgICAgICAgQW4gZXhhbXBsZSBpcyA8ZmlsZW5hbWU+Z2l0LW5hdGl2ZTwvZmlsZW5hbWU+LCB3aGljaAogICAgICAgICAgICAgICAgICAgICB3aGVuIHNwZWNpZmllZCBhbGxvd3MgZm9yIHRoZSBHaXQgYmluYXJ5IGZyb20gdGhlIGhvc3QgdG8KQEAgLTk2NCw3ICs5NjQsNyBAQAogICAgICAgICAgICAgICAgICAgICBBbGxvd3MgeW91IHRvIGV4dGVuZCBhIHJlY2lwZSBzbyB0aGF0IGl0IGJ1aWxkcyB2YXJpYW50cwogICAgICAgICAgICAgICAgICAgICBvZiB0aGUgc29mdHdhcmUuCiAgICAgICAgICAgICAgICAgICAgIFNvbWUgZXhhbXBsZXMgb2YgdGhlc2UgdmFyaWFudHMgZm9yIHJlY2lwZXMgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIENvcmUgbWV0YWRhdGEgYXJlICJuYXRpdmVzIiBzdWNoIGFzCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZC1Db3JlIG1ldGFkYXRhIGFyZSAibmF0aXZlcyIgc3VjaCBhcwogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cXVpbHQtbmF0aXZlPC9maWxlbmFtZT4sIHdoaWNoIGlzIGEgY29weSBvZgogICAgICAgICAgICAgICAgICAgICBRdWlsdCBidWlsdCB0byBydW4gb24gdGhlIGJ1aWxkIHN5c3RlbTsgImNyb3NzZXMiIHN1Y2gKICAgICAgICAgICAgICAgICAgICAgYXMgPGZpbGVuYW1lPmdjYy1jcm9zczwvZmlsZW5hbWU+LCB3aGljaCBpcyBhIGNvbXBpbGVyCkBAIC05ODAsNyArOTgwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgYW1vdW50IG9mIGNvZGUsIGl0IHVzdWFsbHkgaXMgYXMgc2ltcGxlIGFzIGFkZGluZyB0aGUKICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8geW91ciByZWNpcGUuCiAgICAgICAgICAgICAgICAgICAgIEhlcmUgYXJlIHR3byBleGFtcGxlcy4KLSAgICAgICAgICAgICAgICAgICAgVGhlICJuYXRpdmUiIHZhcmlhbnRzIGFyZSBmcm9tIHRoZSBPcGVuRW1iZWRkZWQgQ29yZQorICAgICAgICAgICAgICAgICAgICBUaGUgIm5hdGl2ZSIgdmFyaWFudHMgYXJlIGZyb20gdGhlIE9wZW5FbWJlZGRlZC1Db3JlCiAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIEJCQ0xBU1NFWFRFTkQgPSsgIm5hdGl2ZSBuYXRpdmVzZGsiCkBAIC0yMDg5LDYgKzIwODksMTYgQEAKICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KIAorICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVJFUE9ESVInPjxnbG9zc3Rlcm0+UkVQT0RJUjwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGlyZWN0b3J5IGluIHdoaWNoIGEgbG9jYWwgY29weSBvZiBhCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nb29nbGUtcmVwbzwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpcyBzdG9yZWQKKyAgICAgICAgICAgICAgICAgICAgd2hlbiBpdCBpcyBzeW5jZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUlBST1ZJREVTJz48Z2xvc3N0ZXJtPlJQUk9WSURFUzwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLnhtbAppbmRleCA0YWVmNGU3Li5kNzkzMjY1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLnhtbApAQCAtNTYsNyArNTYsNyBAQAogLS0+CiAKICAgICAgICAgPGNvcHlyaWdodD4KLSAgICAgICAgICAgIDx5ZWFyPjIwMDQtMjAxNjwveWVhcj4KKyAgICAgICAgICAgIDx5ZWFyPjIwMDQtMjAxODwveWVhcj4KICAgICAgICAgICAgIDxob2xkZXI+UmljaGFyZCBQdXJkaWU8L2hvbGRlcj4KICAgICAgICAgICAgIDxob2xkZXI+Q2hyaXMgTGFyc29uPC9ob2xkZXI+CiAgICAgICAgICAgICA8aG9sZGVyPmFuZCBQaGlsIEJsdW5kZWxsPC9ob2xkZXI+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvX19pbml0X18ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvX19pbml0X18ucHkKaW5kZXggNTI2ODgzMS4uZDI0YWRiOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL19faW5pdF9fLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9fX2luaXRfXy5weQpAQCAtMjEsNyArMjEsNyBAQAogIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAogIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgogCi1fX3ZlcnNpb25fXyA9ICIxLjM2LjAiCitfX3ZlcnNpb25fXyA9ICIxLjM4LjAiCiAKIGltcG9ydCBzeXMKIGlmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgNCwgMCk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvYnVpbGQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvYnVpbGQucHkKaW5kZXggMGQwMTAwYS4uNDYzMWFiZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2J1aWxkLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9idWlsZC5weQpAQCAtODcyLDYgKzg3MiwxMiBAQAogICAgIHRoYXQgdGhpcyBtYXkgbGVhZCB0byB0aGUgdGFzayBpdHNlbGYgYmVpbmcgbGlzdGVkLgogICAgICIiIgogICAgIHByZWNlZWQgPSBzZXQoKQorCisgICAgIyBJZ25vcmUgdGFza3Mgd2hpY2ggZG9uJ3QgZXhpc3QKKyAgICB0YXNrcyA9IGQuZ2V0VmFyKCdfX0JCVEFTS1MnLCBGYWxzZSkKKyAgICBpZiB0YXNrIG5vdCBpbiB0YXNrczoKKyAgICAgICAgcmV0dXJuIHByZWNlZWQKKwogICAgIHByZWNlZWQudXBkYXRlKGQuZ2V0VmFyRmxhZyh0YXNrLCAnZGVwcycpIG9yIFtdKQogICAgIGlmIHdpdGhfcmVjcmRlcHRhc2tzOgogICAgICAgICByZWNyZGVwdGFzayA9IGQuZ2V0VmFyRmxhZyh0YXNrLCAncmVjcmRlcHRhc2snKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2NhY2hlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2NhY2hlLnB5CmluZGV4IDg2Y2UwZTcuLjE2OGE3N2EgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9jYWNoZS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvY2FjaGUucHkKQEAgLTM5NSw3ICszOTUsNyBAQAogICAgICAgICBzZWxmLmhhc19jYWNoZSA9IFRydWUKICAgICAgICAgc2VsZi5jYWNoZWZpbGUgPSBnZXRDYWNoZUZpbGUoc2VsZi5jYWNoZWRpciwgImJiX2NhY2hlLmRhdCIsIHNlbGYuZGF0YV9oYXNoKQogCi0gICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiVXNpbmcgY2FjaGUgaW4gJyVzJyIsIHNlbGYuY2FjaGVkaXIpCisgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiQ2FjaGUgZGlyOiAlcyIsIHNlbGYuY2FjaGVkaXIpCiAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzZWxmLmNhY2hlZGlyKQogCiAgICAgICAgIGNhY2hlX29rID0gVHJ1ZQpAQCAtNDA4LDYgKzQwOCw4IEBACiAgICAgICAgICAgICBzZWxmLmxvYWRfY2FjaGVmaWxlKCkKICAgICAgICAgZWxpZiBvcy5wYXRoLmlzZmlsZShzZWxmLmNhY2hlZmlsZSk6CiAgICAgICAgICAgICBsb2dnZXIuaW5mbygiT3V0IG9mIGRhdGUgY2FjaGUgZm91bmQsIHJlYnVpbGRpbmcuLi4iKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJDYWNoZSBmaWxlICVzIG5vdCBmb3VuZCwgYnVpbGRpbmcuLi4iICUgc2VsZi5jYWNoZWZpbGUpCiAKICAgICBkZWYgbG9hZF9jYWNoZWZpbGUoc2VsZik6CiAgICAgICAgIGNhY2hlc2l6ZSA9IDAKQEAgLTQyNCw2ICs0MjYsNyBAQAogCiAgICAgICAgIGZvciBjYWNoZV9jbGFzcyBpbiBzZWxmLmNhY2hlc19hcnJheToKICAgICAgICAgICAgIGNhY2hlZmlsZSA9IGdldENhY2hlRmlsZShzZWxmLmNhY2hlZGlyLCBjYWNoZV9jbGFzcy5jYWNoZWZpbGUsIHNlbGYuZGF0YV9oYXNoKQorICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICdMb2FkaW5nIGNhY2hlIGZpbGU6ICVzJyAlIGNhY2hlZmlsZSkKICAgICAgICAgICAgIHdpdGggb3BlbihjYWNoZWZpbGUsICJyYiIpIGFzIGNhY2hlZmlsZToKICAgICAgICAgICAgICAgICBwaWNrbGVkID0gcGlja2xlLlVucGlja2xlcihjYWNoZWZpbGUpCiAgICAgICAgICAgICAgICAgIyBDaGVjayBjYWNoZSB2ZXJzaW9uIGluZm9ybWF0aW9uCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvY29va2VyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2Nvb2tlci5weQppbmRleCBjN2ZkZDcyLi4xZmRhNDBkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvY29va2VyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9jb29rZXIucHkKQEAgLTUxNiw2ICs1MTYsOCBAQAogICAgICAgICAgICAgZm4gPSBydW5saXN0WzBdWzNdCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBlbnZkYXRhID0gc2VsZi5kYXRhCisgICAgICAgICAgICBkYXRhLmV4cGFuZEtleXMoZW52ZGF0YSkKKyAgICAgICAgICAgIHBhcnNlLmFzdC5ydW5Bbm9uRnVuY3MoZW52ZGF0YSkKIAogICAgICAgICBpZiBmbjoKICAgICAgICAgICAgIHRyeToKQEAgLTUzNiw3ICs1MzgsNiBAQAogICAgICAgICAgICAgbG9nZ2VyLnBsYWluKGVudi5nZXR2YWx1ZSgpKQogCiAgICAgICAgICMgZW1pdCB0aGUgbWV0YWRhdGEgd2hpY2ggaXNudCB2YWxpZCBzaGVsbAotICAgICAgICBkYXRhLmV4cGFuZEtleXMoZW52ZGF0YSkKICAgICAgICAgZm9yIGUgaW4gc29ydGVkKGVudmRhdGEua2V5cygpKToKICAgICAgICAgICAgIGlmIGVudmRhdGEuZ2V0VmFyRmxhZyhlLCAnZnVuYycsIEZhbHNlKSBhbmQgZW52ZGF0YS5nZXRWYXJGbGFnKGUsICdweXRob24nLCBGYWxzZSk6CiAgICAgICAgICAgICAgICAgbG9nZ2VyLnBsYWluKCJcbnB5dGhvbiAlcyAoKSB7XG4lc31cbiIsIGUsIGVudmRhdGEuZ2V0VmFyKGUsIEZhbHNlKSkKQEAgLTg1NiwxMiArODU3LDEyIEBACiAKICAgICAgICAgd2l0aCBvcGVuKCd0YXNrLWRlcGVuZHMuZG90JywgJ3cnKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZSgiZGlncmFwaCBkZXBlbmRzIHtcbiIpCi0gICAgICAgICAgICBmb3IgdGFzayBpbiBkZXBncmFwaFsidGRlcGVuZHMiXToKKyAgICAgICAgICAgIGZvciB0YXNrIGluIHNvcnRlZChkZXBncmFwaFsidGRlcGVuZHMiXSk6CiAgICAgICAgICAgICAgICAgKHBuLCB0YXNrbmFtZSkgPSB0YXNrLnJzcGxpdCgiLiIsIDEpCiAgICAgICAgICAgICAgICAgZm4gPSBkZXBncmFwaFsicG4iXVtwbl1bImZpbGVuYW1lIl0KICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gZGVwZ3JhcGhbInBuIl1bcG5dWyJ2ZXJzaW9uIl0KICAgICAgICAgICAgICAgICBmLndyaXRlKCciJXMuJXMiIFtsYWJlbD0iJXMgJXNcXG4lc1xcbiVzIl1cbicgJSAocG4sIHRhc2tuYW1lLCBwbiwgdGFza25hbWUsIHZlcnNpb24sIGZuKSkKLSAgICAgICAgICAgICAgICBmb3IgZGVwIGluIGRlcGdyYXBoWyJ0ZGVwZW5kcyJdW3Rhc2tdOgorICAgICAgICAgICAgICAgIGZvciBkZXAgaW4gc29ydGVkKGRlcGdyYXBoWyJ0ZGVwZW5kcyJdW3Rhc2tdKToKICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnIiVzIiAtPiAiJXMiXG4nICUgKHRhc2ssIGRlcCkpCiAgICAgICAgICAgICBmLndyaXRlKCJ9XG4iKQogICAgICAgICBsb2dnZXIuaW5mbygiVGFzayBkZXBlbmRlbmNpZXMgc2F2ZWQgdG8gJ3Rhc2stZGVwZW5kcy5kb3QnIikKQEAgLTg2OSwyMyArODcwLDIzIEBACiAgICAgICAgIHdpdGggb3BlbigncmVjaXBlLWRlcGVuZHMuZG90JywgJ3cnKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZSgiZGlncmFwaCBkZXBlbmRzIHtcbiIpCiAgICAgICAgICAgICBwbmRlcHMgPSB7fQotICAgICAgICAgICAgZm9yIHRhc2sgaW4gZGVwZ3JhcGhbInRkZXBlbmRzIl06CisgICAgICAgICAgICBmb3IgdGFzayBpbiBzb3J0ZWQoZGVwZ3JhcGhbInRkZXBlbmRzIl0pOgogICAgICAgICAgICAgICAgIChwbiwgdGFza25hbWUpID0gdGFzay5yc3BsaXQoIi4iLCAxKQogICAgICAgICAgICAgICAgIGlmIHBuIG5vdCBpbiBwbmRlcHM6CiAgICAgICAgICAgICAgICAgICAgIHBuZGVwc1twbl0gPSBzZXQoKQotICAgICAgICAgICAgICAgIGZvciBkZXAgaW4gZGVwZ3JhcGhbInRkZXBlbmRzIl1bdGFza106CisgICAgICAgICAgICAgICAgZm9yIGRlcCBpbiBzb3J0ZWQoZGVwZ3JhcGhbInRkZXBlbmRzIl1bdGFza10pOgogICAgICAgICAgICAgICAgICAgICAoZGVwcG4sIGRlcHRhc2tuYW1lKSA9IGRlcC5yc3BsaXQoIi4iLCAxKQogICAgICAgICAgICAgICAgICAgICBwbmRlcHNbcG5dLmFkZChkZXBwbikKLSAgICAgICAgICAgIGZvciBwbiBpbiBwbmRlcHM6CisgICAgICAgICAgICBmb3IgcG4gaW4gc29ydGVkKHBuZGVwcyk6CiAgICAgICAgICAgICAgICAgZm4gPSBkZXBncmFwaFsicG4iXVtwbl1bImZpbGVuYW1lIl0KICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gZGVwZ3JhcGhbInBuIl1bcG5dWyJ2ZXJzaW9uIl0KICAgICAgICAgICAgICAgICBmLndyaXRlKCciJXMiIFtsYWJlbD0iJXNcXG4lc1xcbiVzIl1cbicgJSAocG4sIHBuLCB2ZXJzaW9uLCBmbikpCi0gICAgICAgICAgICAgICAgZm9yIGRlcCBpbiBwbmRlcHNbcG5dOgorICAgICAgICAgICAgICAgIGZvciBkZXAgaW4gc29ydGVkKHBuZGVwc1twbl0pOgogICAgICAgICAgICAgICAgICAgICBpZiBkZXAgPT0gcG46CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCciJXMiIC0+ICIlcyJcbicgJSAocG4sIGRlcCkpCiAgICAgICAgICAgICBmLndyaXRlKCJ9XG4iKQotICAgICAgICBsb2dnZXIuaW5mbygiRmxhdGVuZWQgcmVjaXBlIGRlcGVuZGVuY2llcyBzYXZlZCB0byAncmVjaXBlLWRlcGVuZHMuZG90JyIpCisgICAgICAgIGxvZ2dlci5pbmZvKCJGbGF0dGVuZWQgcmVjaXBlIGRlcGVuZGVuY2llcyBzYXZlZCB0byAncmVjaXBlLWRlcGVuZHMuZG90JyIpCiAKICAgICBkZWYgc2hvd19hcHBlbmRzX3dpdGhfbm9fcmVjaXBlcyhzZWxmKToKICAgICAgICAgIyBEZXRlcm1pbmUgd2hpY2ggYmJhcHBlbmRzIGhhdmVuJ3QgYmVlbiBhcHBsaWVkCkBAIC0xMTcwLDYgKzExNzEsNyBAQAogICAgICAgICAgICAgICAgIGVsaWYgcmVnZXggPT0gIiI6CiAgICAgICAgICAgICAgICAgICAgIHBhcnNlbG9nLmRlYnVnKDEsICJCQkZJTEVfUEFUVEVSTl8lcyBpcyBlbXB0eSIgJSBjKQogICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgIGNyZSA9IHJlLmNvbXBpbGUocmVnZXgpCkBAIC0xNjAzLDggKzE2MDUsNiBAQAogCiAgICAgICAgIGlmIHNlbGYucGFyc2VyOgogICAgICAgICAgICAgc2VsZi5wYXJzZXIuc2h1dGRvd24oY2xlYW49bm90IGZvcmNlLCBmb3JjZT1mb3JjZSkKLSAgICAgICAgc2VsZi5ub3RpZmllci5zdG9wKCkKLSAgICAgICAgc2VsZi5jb25maWdub3RpZmllci5zdG9wKCkKIAogICAgIGRlZiBmaW5pc2hjb21tYW5kKHNlbGYpOgogICAgICAgICBzZWxmLnN0YXRlID0gc3RhdGUuaW5pdGlhbApAQCAtMTgwNywyMSArMTgwNywyNSBAQAogICAgICAgICAgICAgcmVhbGZuLCBjbHMsIG1jID0gYmIuY2FjaGUudmlydHVhbGZuMnJlYWxmbihwKQogICAgICAgICAgICAgcHJpb3JpdGllc1twXSA9IHNlbGYuY2FsY19iYmZpbGVfcHJpb3JpdHkocmVhbGZuLCBtYXRjaGVkKQogCi0gICAgICAgICMgRG9uJ3Qgc2hvdyB0aGUgd2FybmluZyBpZiB0aGUgQkJGSUxFX1BBVFRFUk4gZGlkIG1hdGNoIC5iYmFwcGVuZCBmaWxlcwogICAgICAgICB1bm1hdGNoZWQgPSBzZXQoKQogICAgICAgICBmb3IgXywgXywgcmVnZXgsIHByaSBpbiBzZWxmLmJiZmlsZV9jb25maWdfcHJpb3JpdGllczoKICAgICAgICAgICAgIGlmIG5vdCByZWdleCBpbiBtYXRjaGVkOgogICAgICAgICAgICAgICAgIHVubWF0Y2hlZC5hZGQocmVnZXgpCiAKLSAgICAgICAgZGVmIGZpbmRtYXRjaChyZWdleCk6CisgICAgICAgICMgRG9uJ3Qgc2hvdyB0aGUgd2FybmluZyBpZiB0aGUgQkJGSUxFX1BBVFRFUk4gZGlkIG1hdGNoIC5iYmFwcGVuZCBmaWxlcworICAgICAgICBkZWYgZmluZF9iYmFwcGVuZF9tYXRjaChyZWdleCk6CiAgICAgICAgICAgICBmb3IgYiBpbiBzZWxmLmJiYXBwZW5kczoKICAgICAgICAgICAgICAgICAoYmJmaWxlLCBhcHBlbmQpID0gYgogICAgICAgICAgICAgICAgIGlmIHJlZ2V4Lm1hdGNoKGFwcGVuZCk6CisgICAgICAgICAgICAgICAgICAgICMgSWYgdGhlIGJiYXBwZW5kIGlzIG1hdGNoZWQgYnkgYWxyZWFkeSAibWF0Y2hlZCBzZXQiLCByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgZm9yIG1hdGNoZWRfcmVnZXggaW4gbWF0Y2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG1hdGNoZWRfcmVnZXgubWF0Y2goYXBwZW5kKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgICAgIGZvciB1bm1hdGNoIGluIHVubWF0Y2hlZC5jb3B5KCk6Ci0gICAgICAgICAgICBpZiBmaW5kbWF0Y2godW5tYXRjaCk6CisgICAgICAgICAgICBpZiBmaW5kX2JiYXBwZW5kX21hdGNoKHVubWF0Y2gpOgogICAgICAgICAgICAgICAgIHVubWF0Y2hlZC5yZW1vdmUodW5tYXRjaCkKIAogICAgICAgICBmb3IgY29sbGVjdGlvbiwgcGF0dGVybiwgcmVnZXgsIF8gaW4gc2VsZi5iYmZpbGVfY29uZmlnX3ByaW9yaXRpZXM6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvY29va2VyZGF0YS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9jb29rZXJkYXRhLnB5CmluZGV4IGZhYjQ3YzcuLjVkZjY2ZTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9jb29rZXJkYXRhLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9jb29rZXJkYXRhLnB5CkBAIC0xNDMsNyArMTQzLDggQEAKICAgICAgICAgc2VsZi53cml0ZWV2ZW50bG9nID0gRmFsc2UKICAgICAgICAgc2VsZi5zZXJ2ZXJfb25seSA9IEZhbHNlCiAgICAgICAgIHNlbGYubGltaXRlZF9kZXBzID0gRmFsc2UKLSAgICAgICAgc2VsZi5ydW5hbGwgPSBOb25lCisgICAgICAgIHNlbGYucnVuYWxsID0gW10KKyAgICAgICAgc2VsZi5ydW5vbmx5ID0gW10KIAogICAgICAgICBzZWxmLmVudiA9IHt9CiAKQEAgLTM5NSw2ICszOTYsOCBAQAogICAgICAgICAgICAgICAgIGlmIGNvbXBhdCBhbmQgbm90IChjb21wYXQgJiBsYXllcnNlcmllcyk6CiAgICAgICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJMYXllciAlcyBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSBjb3JlIGxheWVyIHdoaWNoIG9ubHkgc3VwcG9ydHMgdGhlc2Ugc2VyaWVzOiAlcyAobGF5ZXIgaXMgY29tcGF0aWJsZSB3aXRoICVzKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGMsICIgIi5qb2luKGxheWVyc2VyaWVzKSwgIiAiLmpvaW4oY29tcGF0KSkpCisgICAgICAgICAgICAgICAgZWxpZiBub3QgY29tcGF0IGFuZCBub3QgZGF0YS5nZXRWYXIoIkJCX1dPUktFUkNPTlRFWFQiKToKKyAgICAgICAgICAgICAgICAgICAgYmIud2FybigiTGF5ZXIgJXMgc2hvdWxkIHNldCBMQVlFUlNFUklFU19DT01QQVRfJXMgaW4gaXRzIGNvbmYvbGF5ZXIuY29uZiBmaWxlIHRvIGxpc3QgdGhlIGNvcmUgbGF5ZXIgbmFtZXMgaXQgaXMgY29tcGF0aWJsZSB3aXRoLiIgJSAoYywgYykpCiAKICAgICAgICAgaWYgbm90IGRhdGEuZ2V0VmFyKCJCQlBBVEgiKToKICAgICAgICAgICAgIG1zZyA9ICJUaGUgQkJQQVRIIHZhcmlhYmxlIGlzIG5vdCBzZXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZXZlbnQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZXZlbnQucHkKaW5kZXggNTIwNzJiNS4uNWQwMDQ5NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2V2ZW50LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9ldmVudC5weQpAQCAtNDQ5LDEyICs0NDksNiBAQAogICAgIGRlZiBzZXROYW1lKHNlbGYsIG5hbWUpOgogICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQogCi0gICAgZGVmIGdldENmZyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZGF0YQotCi0gICAgZGVmIHNldENmZyhzZWxmLCBjZmcpOgotICAgICAgICBzZWxmLmRhdGEgPSBjZmcKLQogICAgIGRlZiBnZXRGYWlsdXJlcyhzZWxmKToKICAgICAgICAgIiIiCiAgICAgICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGZhaWxlZCBwYWNrYWdlcwpAQCAtNDYzLDkgKzQ1Nyw2IEBACiAKICAgICBwa2dzID0gcHJvcGVydHkoZ2V0UGtncywgc2V0UGtncywgTm9uZSwgInBrZ3MgcHJvcGVydHkiKQogICAgIG5hbWUgPSBwcm9wZXJ0eShnZXROYW1lLCBzZXROYW1lLCBOb25lLCAibmFtZSBwcm9wZXJ0eSIpCi0gICAgY2ZnID0gcHJvcGVydHkoZ2V0Q2ZnLCBzZXRDZmcsIE5vbmUsICJjZmcgcHJvcGVydHkiKQotCi0KIAogY2xhc3MgQnVpbGRJbml0KEJ1aWxkQmFzZSk6CiAgICAgIiIiYnVpbGRGaWxlIG9yIGJ1aWxkVGFyZ2V0cyB3YXMgaW52b2tlZCIiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9fX2luaXRfXy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvX19pbml0X18ucHkKaW5kZXggZjcwZjFiNS4uNzJkNjA5MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9fX2luaXRfXy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL19faW5pdF9fLnB5CkBAIC02NDMsMjYgKzY0MywyNSBAQAogICAgIGlmIG5vdCB1ZC5uZWVkZG9uZXN0YW1wIG9yIChvcmlndWQgYW5kIG5vdCBvcmlndWQubmVlZGRvbmVzdGFtcCk6CiAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModWQuZG9uZXN0YW1wKToKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKToKKyAgICAgICAgIyBsb2NhbCBwYXRoIGRvZXMgbm90IGV4aXN0CisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHVkLmRvbmVzdGFtcCk6CisgICAgICAgICAgICAjIGRvbmUgc3RhbXAgZXhpc3RzLCBidXQgdGhlIGRvd25sb2FkZWQgZmlsZSBkb2VzIG5vdDsgdGhlIGRvbmUgc3RhbXAKKyAgICAgICAgICAgICMgbXVzdCBiZSBpbmNvcnJlY3QsIHJlLXRyaWdnZXIgdGhlIGRvd25sb2FkCisgICAgICAgICAgICBiYi51dGlscy5yZW1vdmUodWQuZG9uZXN0YW1wKQogICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgIGlmIChub3QgdWQubWV0aG9kLnN1cHBvcnRzX2NoZWNrc3VtKHVkKSBvcgogICAgICAgICAob3JpZ3VkIGFuZCBub3Qgb3JpZ3VkLm1ldGhvZC5zdXBwb3J0c19jaGVja3N1bShvcmlndWQpKSk6Ci0gICAgICAgICMgZG9uZSBzdGFtcCBleGlzdHMsIGNoZWNrc3VtcyBub3Qgc3VwcG9ydGVkOyBhc3N1bWUgdGhlIGxvY2FsIGZpbGUgaXMKLSAgICAgICAgIyBjdXJyZW50Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKToKLSAgICAgICAgIyBkb25lIHN0YW1wIGV4aXN0cywgYnV0IHRoZSBkb3dubG9hZGVkIGZpbGUgZG9lcyBub3Q7IHRoZSBkb25lIHN0YW1wCi0gICAgICAgICMgbXVzdCBiZSBpbmNvcnJlY3QsIHJlLXRyaWdnZXIgdGhlIGRvd25sb2FkCi0gICAgICAgIGJiLnV0aWxzLnJlbW92ZSh1ZC5kb25lc3RhbXApCi0gICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAjIGlmIGRvbmUgc3RhbXAgZXhpc3RzIGFuZCBjaGVja3N1bXMgbm90IHN1cHBvcnRlZDsgYXNzdW1lIHRoZSBsb2NhbAorICAgICAgICAjIGZpbGUgaXMgY3VycmVudAorICAgICAgICByZXR1cm4gb3MucGF0aC5leGlzdHModWQuZG9uZXN0YW1wKQogCiAgICAgcHJlY29tcHV0ZWRfY2hlY2tzdW1zID0ge30KICAgICAjIE9ubHkgcmUtdXNlIHRoZSBwcmVjb21wdXRlZCBjaGVja3N1bXMgaWYgdGhlIGRvbmVzdGFtcCBpcyBuZXdlciB0aGFuIHRoZQogICAgICMgZmlsZS4gRG8gbm90IHJlbHkgb24gdGhlIG10aW1lIG9mIGRpcmVjdG9yaWVzLCB0aG91Z2guIElmIHVkLmxvY2FscGF0aCBpcwogICAgICMgYSBkaXJlY3RvcnksIHRoZXJlIHdpbGwgcHJvYmFibHkgbm90IGJlIGFueSBjaGVja3N1bXMgYW55d2F5LgotICAgIGlmIChvcy5wYXRoLmlzZGlyKHVkLmxvY2FscGF0aCkgb3IKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyh1ZC5kb25lc3RhbXApIGFuZCAob3MucGF0aC5pc2Rpcih1ZC5sb2NhbHBhdGgpIG9yCiAgICAgICAgICAgICBvcy5wYXRoLmdldG10aW1lKHVkLmxvY2FscGF0aCkgPCBvcy5wYXRoLmdldG10aW1lKHVkLmRvbmVzdGFtcCkpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICB3aXRoIG9wZW4odWQuZG9uZXN0YW1wLCAicmIiKSBhcyBjYWNoZWZpbGU6CkBAIC04NTMsNiArODUyLDkgQEAKICAgICAgICAgaWYgdmFsOgogICAgICAgICAgICAgY21kID0gJ2V4cG9ydCAnICsgdmFyICsgJz1cIiVzXCI7ICVzJyAlICh2YWwsIGNtZCkKIAorICAgICMgRGlzYWJsZSBwc2V1ZG8gYXMgaXQgbWF5IGFmZmVjdCBzc2gsIHBvdGVudGlhbGx5IGNhdXNpbmcgaXQgdG8gaGFuZy4KKyAgICBjbWQgPSAnZXhwb3J0IFBTRVVET19ESVNBQkxFRD0xOyAnICsgY21kCisKICAgICBsb2dnZXIuZGVidWcoMSwgIlJ1bm5pbmcgJXMiLCBjbWQpCiAKICAgICBzdWNjZXNzID0gRmFsc2UKQEAgLTE0MjQsNyArMTQyNiw3IEBACiAgICAgICAgICAgICAgICAgY21kID0gJ2d6aXAgLWRjICVzID4gJXMnICUgKGZpbGUsIGVmaWxlKQogICAgICAgICAgICAgZWxpZiBmaWxlLmVuZHN3aXRoKCcuYnoyJyk6CiAgICAgICAgICAgICAgICAgY21kID0gJ2J6aXAyIC1kYyAlcyA+ICVzJyAlIChmaWxlLCBlZmlsZSkKLSAgICAgICAgICAgIGVsaWYgZmlsZS5lbmRzd2l0aCgnLnRhci54eicpOgorICAgICAgICAgICAgZWxpZiBmaWxlLmVuZHN3aXRoKCcudHh6Jykgb3IgZmlsZS5lbmRzd2l0aCgnLnRhci54eicpOgogICAgICAgICAgICAgICAgIGNtZCA9ICd4eiAtZGMgJXMgfCB0YXIgeCAtLW5vLXNhbWUtb3duZXIgLWYgLScgJSBmaWxlCiAgICAgICAgICAgICBlbGlmIGZpbGUuZW5kc3dpdGgoJy54eicpOgogICAgICAgICAgICAgICAgIGNtZCA9ICd4eiAtZGMgJXMgPiAlcycgJSAoZmlsZSwgZWZpbGUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2dpdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0LnB5CmluZGV4IDVlZjhjZDYuLjNkZTgzYmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0LnB5CkBAIC0xMjUsNiArMTI1LDkgQEAKIAogCiBjbGFzcyBHaXQoRmV0Y2hNZXRob2QpOgorICAgIGJpdGJha2VfZGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5qb2luKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpKSwgJy4uJywgJy4uJywgJy4uJykpCisgICAgbWFrZV9zaGFsbG93X3BhdGggPSBvcy5wYXRoLmpvaW4oYml0YmFrZV9kaXIsICdiaW4nLCAnZ2l0LW1ha2Utc2hhbGxvdycpCisKICAgICAiIiJDbGFzcyB0byBmZXRjaCBhIG1vZHVsZSBvciBtb2R1bGVzIGZyb20gZ2l0IHJlcG9zaXRvcmllcyIiIgogICAgIGRlZiBpbml0KHNlbGYsIGQpOgogICAgICAgICBwYXNzCkBAIC0zNjMsNiArMzY2LDcgQEAKICAgICAgICAgICAgIHByb2dyZXNzaGFuZGxlciA9IEdpdFByb2dyZXNzSGFuZGxlcihkKQogICAgICAgICAgICAgcnVuZmV0Y2hjbWQoZmV0Y2hfY21kLCBkLCBsb2c9cHJvZ3Jlc3NoYW5kbGVyLCB3b3JrZGlyPXVkLmNsb25lZGlyKQogICAgICAgICAgICAgcnVuZmV0Y2hjbWQoIiVzIHBydW5lLXBhY2tlZCIgJSB1ZC5iYXNlY21kLCBkLCB3b3JrZGlyPXVkLmNsb25lZGlyKQorICAgICAgICAgICAgcnVuZmV0Y2hjbWQoIiVzIHBhY2stcmVmcyAtLWFsbCIgJSB1ZC5iYXNlY21kLCBkLCB3b3JrZGlyPXVkLmNsb25lZGlyKQogICAgICAgICAgICAgcnVuZmV0Y2hjbWQoIiVzIHBhY2stcmVkdW5kYW50IC0tYWxsIHwgeGFyZ3MgLXIgcm0iICUgdWQuYmFzZWNtZCwgZCwgd29ya2Rpcj11ZC5jbG9uZWRpcikKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBvcy51bmxpbmsodWQuZnVsbG1pcnJvcikKQEAgLTQ0NSw3ICs0NDksNyBAQAogICAgICAgICAgICAgICAgIHNoYWxsb3dfYnJhbmNoZXMuYXBwZW5kKHIpCiAKICAgICAgICAgIyBNYWtlIHRoZSByZXBvc2l0b3J5IHNoYWxsb3cKLSAgICAgICAgc2hhbGxvd19jbWQgPSBbJ2dpdCcsICdtYWtlLXNoYWxsb3cnLCAnLXMnXQorICAgICAgICBzaGFsbG93X2NtZCA9IFtzZWxmLm1ha2Vfc2hhbGxvd19wYXRoLCAnLXMnXQogICAgICAgICBmb3IgYiBpbiBzaGFsbG93X2JyYW5jaGVzOgogICAgICAgICAgICAgc2hhbGxvd19jbWQuYXBwZW5kKCctcicpCiAgICAgICAgICAgICBzaGFsbG93X2NtZC5hcHBlbmQoYikKQEAgLTU5MSw3ICs1OTUsOCBAQAogICAgICAgICB0YWdyZWdleCA9IHJlLmNvbXBpbGUoZC5nZXRWYXIoJ1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYJykgb3IgIig/UDxwdmVyPihbMC05XVtcLnxfXT8pKykiKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvdXRwdXQgPSBzZWxmLl9sc3JlbW90ZSh1ZCwgZCwgInJlZnMvdGFncy8qIikKLSAgICAgICAgZXhjZXB0IGJiLmZldGNoMi5GZXRjaEVycm9yIG9yIGJiLmZldGNoMi5OZXR3b3JrQWNjZXNzOgorICAgICAgICBleGNlcHQgKGJiLmZldGNoMi5GZXRjaEVycm9yLCBiYi5mZXRjaDIuTmV0d29ya0FjY2VzcykgYXMgZToKKyAgICAgICAgICAgIGJiLm5vdGUoIkNvdWxkIG5vdCBsaXN0IHJlbW90ZTogJXMiICUgc3RyKGUpKQogICAgICAgICAgICAgcmV0dXJuIHB1cHZlcgogCiAgICAgICAgIHZlcnN0cmluZyA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL25wbS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvbnBtLnB5CmluZGV4IGI1ZjE0OGMuLjczMGMzNDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvbnBtLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvbnBtLnB5CkBAIC0xOTUsOSArMTk1LDExIEBACiAgICAgICAgIG91dHB1dHVybCA9IHBkYXRhWydkaXN0J11bJ3RhcmJhbGwnXQogICAgICAgICBkYXRhW3BrZ10gPSB7fQogICAgICAgICBkYXRhW3BrZ11bJ3RneiddID0gb3MucGF0aC5iYXNlbmFtZShvdXRwdXR1cmwpCi0gICAgICAgIGlmIG5vdCBvdXRwdXR1cmwgaW4gZmV0Y2hlZGxpc3Q6Ci0gICAgICAgICAgICBzZWxmLl9ydW53Z2V0KHVkLCBkLCAiJXMgLS1kaXJlY3RvcnktcHJlZml4PSVzICVzIiAlIChzZWxmLmJhc2VjbWQsIHVkLnByZWZpeGRpciwgb3V0cHV0dXJsKSwgRmFsc2UpCi0gICAgICAgICAgICBmZXRjaGVkbGlzdC5hcHBlbmQob3V0cHV0dXJsKQorICAgICAgICBpZiBvdXRwdXR1cmwgaW4gZmV0Y2hlZGxpc3Q6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzZWxmLl9ydW53Z2V0KHVkLCBkLCAiJXMgLS1kaXJlY3RvcnktcHJlZml4PSVzICVzIiAlIChzZWxmLmJhc2VjbWQsIHVkLnByZWZpeGRpciwgb3V0cHV0dXJsKSwgRmFsc2UpCisgICAgICAgIGZldGNoZWRsaXN0LmFwcGVuZChvdXRwdXR1cmwpCiAKICAgICAgICAgZGVwZW5kZW5jaWVzID0gcGRhdGEuZ2V0KCdkZXBlbmRlbmNpZXMnLCB7fSkKICAgICAgICAgb3B0aW9uYWxEZXBlbmRlbmNpZXMgPSBwZGF0YS5nZXQoJ29wdGlvbmFsRGVwZW5kZW5jaWVzJywge30pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3dnZXQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3dnZXQucHkKaW5kZXggN2M0OWMyYi4uOGY1MDViNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi93Z2V0LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvd2dldC5weQpAQCAtMjUwLDYgKzI1MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICAgICAgICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICAgICBjbG9zZWQgPSBGYWxzZQogCiAgICAgICAgICAgICAgICAgcmVzcCA9IGFkZGluZm91cmwoZnBfZHVtbXkoKSwgci5tc2csIHJlcS5nZXRfZnVsbF91cmwoKSkKICAgICAgICAgICAgICAgICByZXNwLmNvZGUgPSByLnN0YXR1cwpAQCAtMzMyLDcgKzMzMyw4IEBACiAgICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgSW1wb3J0RXJyb3IsIElPRXJyb3IsIG5ldHJjLk5ldHJjUGFyc2VFcnJvcik6CiAgICAgICAgICAgICAgICAgIHBhc3MKIAotICAgICAgICAgICAgb3BlbmVyLm9wZW4ocikKKyAgICAgICAgICAgIHdpdGggb3BlbmVyLm9wZW4ocikgYXMgcmVzcG9uc2U6CisgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBleGNlcHQgdXJsbGliLmVycm9yLlVSTEVycm9yIGFzIGU6CiAgICAgICAgICAgICBpZiB0cnlfYWdhaW46CiAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICJjaGVja3N0YXR1czogdHJ5aW5nIGFnYWluIikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9tYWluLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL21haW4ucHkKaW5kZXggNzcxMWIyOS4uZjQ0NzRlNCAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL21haW4ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL21haW4ucHkKQEAgLTI5Miw4ICsyOTIsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iV3JpdGVzIHRoZSBldmVudCBsb2cgb2YgdGhlIGJ1aWxkIHRvIGEgYml0YmFrZSBldmVudCBqc29uIGZpbGUuICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVXNlICcnIChlbXB0eSBzdHJpbmcpIHRvIGFzc2lnbiB0aGUgbmFtZSBhdXRvbWF0aWNhbGx5LiIpCiAKLSAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXJ1bmFsbCIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJydW5hbGwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJSdW4gdGhlIHNwZWNpZmllZCB0YXNrIGZvciBhbGwgYnVpbGQgdGFyZ2V0cyBhbmQgdGhlaXIgZGVwZW5kZW5jaWVzLiIpCisgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1ydW5hbGwiLCBhY3Rpb249ImFwcGVuZCIsIGRlc3Q9InJ1bmFsbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlJ1biB0aGUgc3BlY2lmaWVkIHRhc2sgZm9yIGFueSByZWNpcGUgaW4gdGhlIHRhc2tncmFwaCBvZiB0aGUgc3BlY2lmaWVkIHRhcmdldCAoZXZlbiBpZiBpdCB3b3VsZG4ndCBvdGhlcndpc2UgaGF2ZSBydW4pLiIpCisKKyAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXJ1bm9ubHkiLCBhY3Rpb249ImFwcGVuZCIsIGRlc3Q9InJ1bm9ubHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJSdW4gb25seSB0aGUgc3BlY2lmaWVkIHRhc2sgd2l0aGluIHRoZSB0YXNrZ3JhcGggb2YgdGhlIHNwZWNpZmllZCB0YXJnZXRzIChhbmQgYW55IHRhc2sgZGVwZW5kZW5jaWVzIHRob3NlIHRhc2tzIG1heSBoYXZlKS4iKQorCiAKICAgICAgICAgb3B0aW9ucywgdGFyZ2V0cyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3YpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9fX2luaXRfXy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9fX2luaXRfXy5weQppbmRleCAyZmM0MDAyLi41Mzk3ZDU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvX19pbml0X18ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL19faW5pdF9fLnB5CkBAIC0xMzQsOCArMTM0LDkgQEAKICAgICAgICAgaWYgbm90IG5ld2ZuOgogICAgICAgICAgICAgcmFpc2UgSU9FcnJvcihlcnJuby5FTk9FTlQsICJmaWxlICVzIG5vdCBmb3VuZCBpbiAlcyIgJSAoZm4sIGJicGF0aCkpCiAgICAgICAgIGZuID0gbmV3Zm4KKyAgICBlbHNlOgorICAgICAgICBtYXJrX2RlcGVuZGVuY3koZCwgZm4pCiAKLSAgICBtYXJrX2RlcGVuZGVuY3koZCwgZm4pCiAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKGZuKToKICAgICAgICAgcmFpc2UgSU9FcnJvcihlcnJuby5FTk9FTlQsICJmaWxlICVzIG5vdCBmb3VuZCIgJSBmbikKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL2FzdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9hc3QucHkKaW5kZXggZGJhNDU0MC4uNjY5MGRjNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL2FzdC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvYXN0LnB5CkBAIC0zMzUsNiArMzM1LDEyIEBACiAgICAgY2xhc3NlcyA9IG0uZ3JvdXAoMSkKICAgICBzdGF0ZW1lbnRzLmFwcGVuZChJbmhlcml0Tm9kZShmaWxlbmFtZSwgbGluZW5vLCBjbGFzc2VzKSkKIAorZGVmIHJ1bkFub25GdW5jcyhkKToKKyAgICBjb2RlID0gW10KKyAgICBmb3IgZnVuY25hbWUgaW4gZC5nZXRWYXIoIl9fQkJBTk9ORlVOQ1MiLCBGYWxzZSkgb3IgW106CisgICAgICAgIGNvZGUuYXBwZW5kKCIlcyhkKSIgJSBmdW5jbmFtZSkKKyAgICBiYi51dGlscy5iZXR0ZXJfZXhlYygiXG4iLmpvaW4oY29kZSksIHsiZCI6IGR9KQorCiBkZWYgZmluYWxpemUoZm4sIGQsIHZhcmlhbnQgPSBOb25lKToKICAgICBzYXZlZF9oYW5kbGVycyA9IGJiLmV2ZW50LmdldF9oYW5kbGVycygpLmNvcHkoKQogCkBAIC0zNDksMTAgKzM1NSw3IEBACiAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5SZWNpcGVQcmVGaW5hbGlzZShmbiksIGQpCiAKICAgICBiYi5kYXRhLmV4cGFuZEtleXMoZCkKLSAgICBjb2RlID0gW10KLSAgICBmb3IgZnVuY25hbWUgaW4gZC5nZXRWYXIoIl9fQkJBTk9ORlVOQ1MiLCBGYWxzZSkgb3IgW106Ci0gICAgICAgIGNvZGUuYXBwZW5kKCIlcyhkKSIgJSBmdW5jbmFtZSkKLSAgICBiYi51dGlscy5iZXR0ZXJfZXhlYygiXG4iLmpvaW4oY29kZSksIHsiZCI6IGR9KQorICAgIHJ1bkFub25GdW5jcyhkKQogCiAgICAgdGFza2xpc3QgPSBkLmdldFZhcignX19CQlRBU0tTJywgRmFsc2UpIG9yIFtdCiAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5SZWNpcGVUYXNrUHJlUHJvY2VzcyhmbiwgbGlzdCh0YXNrbGlzdCkpLCBkKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0JCSGFuZGxlci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9wYXJzZV9weS9CQkhhbmRsZXIucHkKaW5kZXggZjg5YWQyNC4uZTUwMzllMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0JCSGFuZGxlci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvcGFyc2VfcHkvQkJIYW5kbGVyLnB5CkBAIC0xMzEsOSArMTMxLDYgQEAKIAogICAgIGFic19mbiA9IHJlc29sdmVfZmlsZShmbiwgZCkKIAotICAgIGlmIGluY2x1ZGU6Ci0gICAgICAgIGJiLnBhcnNlLm1hcmtfZGVwZW5kZW5jeShkLCBhYnNfZm4pCi0KICAgICAjIGFjdHVhbCBsb2FkaW5nCiAgICAgc3RhdGVtZW50cyA9IGdldF9zdGF0ZW1lbnRzKGZuLCBhYnNfZm4sIGJhc2VfbmFtZSkKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0NvbmZIYW5kbGVyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0NvbmZIYW5kbGVyLnB5CmluZGV4IDk3YWExMzAuLjlkM2ViZTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9wYXJzZV9weS9Db25mSGFuZGxlci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvcGFyc2VfcHkvQ29uZkhhbmRsZXIucHkKQEAgLTEzNCw5ICsxMzQsNiBAQAogICAgIGFic19mbiA9IHJlc29sdmVfZmlsZShmbiwgZGF0YSkKICAgICBmID0gb3BlbihhYnNfZm4sICdyJykKIAotICAgIGlmIGluY2x1ZGU6Ci0gICAgICAgIGJiLnBhcnNlLm1hcmtfZGVwZW5kZW5jeShkYXRhLCBhYnNfZm4pCi0KICAgICBzdGF0ZW1lbnRzID0gYXN0LlN0YXRlbWVudEdyb3VwKCkKICAgICBsaW5lbm8gPSAwCiAgICAgd2hpbGUgVHJ1ZToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9ydW5xdWV1ZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9ydW5xdWV1ZS5weQppbmRleCBhZTEyYzI1Li5mMmU1MmNmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvcnVucXVldWUucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3J1bnF1ZXVlLnB5CkBAIC0xODEsNyArMTgxLDcgQEAKICAgICAgICAgaWYgc2VsZi5ycS5zdGF0cy5hY3RpdmUgPCBzZWxmLnJxLm51bWJlcl90YXNrczoKICAgICAgICAgICAgIHJldHVybiBzZWxmLm5leHRfYnVpbGRhYmxlX3Rhc2soKQogCi0gICAgZGVmIG5ld2J1aWxhYmxlKHNlbGYsIHRhc2spOgorICAgIGRlZiBuZXdidWlsZGFibGUoc2VsZiwgdGFzayk6CiAgICAgICAgIHNlbGYuYnVpbGRhYmxlLmFwcGVuZCh0YXNrKQogCiAgICAgZGVmIGRlc2NyaWJlX3Rhc2soc2VsZiwgdGFza2lkKToKQEAgLTU4MSwxMiArNTgxLDYgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgdCBpbiB0YXNrRGF0YVttY10udGFza2VudHJpZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzLmFkZCh0KQogCi0gICAgICAgIGRlZiBhZGRfcmVzb2x2ZWRfZGVwZW5kZW5jaWVzKG1jLCBmbiwgdGFza25hbWVzLCBkZXBlbmRzKToKLSAgICAgICAgICAgIGZvciB0YXNrbmFtZSBpbiB0YXNrbmFtZXM6Ci0gICAgICAgICAgICAgICAgdGlkID0gYnVpbGRfdGlkKG1jLCBmbiwgdGFza25hbWUpCi0gICAgICAgICAgICAgICAgaWYgdGlkIGluIHNlbGYucnVudGFza2VudHJpZXM6Ci0gICAgICAgICAgICAgICAgICAgIGRlcGVuZHMuYWRkKHRpZCkKLQogICAgICAgICBmb3IgbWMgaW4gdGFza0RhdGE6CiAgICAgICAgICAgICBmb3IgdGlkIGluIHRhc2tEYXRhW21jXS50YXNrZW50cmllczoKIApAQCAtNjczLDU3ICs2NjcsMTA2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdXJzaXZlaXRhc2tzW3RpZF0uYXBwZW5kKG5ld2RlcCkKIAogICAgICAgICAgICAgICAgIHNlbGYucnVudGFza2VudHJpZXNbdGlkXS5kZXBlbmRzID0gZGVwZW5kcworICAgICAgICAgICAgICAgICMgUmVtb3ZlIGFsbCBzZWxmIHJlZmVyZW5jZXMKKyAgICAgICAgICAgICAgICBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kcy5kaXNjYXJkKHRpZCkKIAogICAgICAgICAjc2VsZi5kdW1wX2RhdGEoKQogCisgICAgICAgIHNlbGYuaW5pdF9wcm9ncmVzc19yZXBvcnRlci5uZXh0X3N0YWdlKCkKKwogICAgICAgICAjIFJlc29sdmUgcmVjdXJzaXZlICdyZWNyZGVwdGFzaycgZGVwZW5kZW5jaWVzIChQYXJ0IEIpCiAgICAgICAgICMKICAgICAgICAgIyBlLmcuIGRvX3NvbWV0YXNrW3JlY3JkZXB0YXNrXSA9ICJkb19zb21lb3RoZXJ0YXNrIgogICAgICAgICAjIChtYWtlcyBzdXJlIHNvbWV0YXNrIHJ1bnMgYWZ0ZXIgc29tZW90aGVydGFzayBvZiBhbGwgREVQRU5EUywgUkRFUEVORFMgYW5kIGludGVydGFzayBkZXBlbmRlbmNpZXMsIHJlY3Vyc2l2ZWx5KQogICAgICAgICAjIFdlIG5lZWQgdG8gZG8gdGhpcyBzZXBhcmF0ZWx5IHNpbmNlIHdlIG5lZWQgYWxsIG9mIHJ1bnRhc2tlbnRyaWVzWypdLmRlcGVuZHMgdG8gYmUgY29tcGxldGUgYmVmb3JlIHRoaXMgaXMgcHJvY2Vzc2VkCi0gICAgICAgIHNlbGYuaW5pdF9wcm9ncmVzc19yZXBvcnRlci5uZXh0X3N0YWdlKGxlbihyZWN1cnNpdmV0YXNrcykpCi0gICAgICAgIGV4dHJhZGVwcyA9IHt9Ci0gICAgICAgIGZvciB0YXNrY291bnRlciwgdGlkIGluIGVudW1lcmF0ZShyZWN1cnNpdmV0YXNrcyk6Ci0gICAgICAgICAgICBleHRyYWRlcHNbdGlkXSA9IHNldChzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kcykKIAotICAgICAgICAgICAgdGFza25hbWVzID0gcmVjdXJzaXZldGFza3NbdGlkXQotICAgICAgICAgICAgc2VlbmRlcHMgPSBzZXQoKQorICAgICAgICAjIEdlbmVyYXRpbmcvaW50ZXJhdGluZyByZWN1cnNpdmUgbGlzdHMgb2YgZGVwZW5kZW5jaWVzIGlzIHBhaW5mdWwgYW5kIHBvdGVudGlhbGx5IHNsb3cKKyAgICAgICAgIyBQcmVjb21wdXRlIHJlY3Vyc2l2ZSB0YXNrIGRlcGVuZGVuY2llcyBoZXJlIGJ5OgorICAgICAgICAjICAgICBhKSBjcmVhdGUgYSB0ZW1wIGxpc3Qgb2YgcmV2ZXJzZSBkZXBlbmRlbmNpZXMgKHJldmRlcHMpCisgICAgICAgICMgICAgIGIpIHdhbGsgdXAgdGhlIGVuZHMgb2YgdGhlIGNoYWlucyAod2hlbiBhIGdpdmVuIHRhc2sgbm8gbG9uZ2VyIGhhcyBkZXBlbmRlbmNpZXMgaS5lLiBsZW4oZGVwcykgPT0gMCkKKyAgICAgICAgIyAgICAgYykgY29tYmluZSB0aGUgdG90YWwgbGlzdCBvZiBkZXBlbmRlbmNpZXMgaW4gY3VtdWxhdGl2ZWRlcHMKKyAgICAgICAgIyAgICAgZCkgb3B0aW1pc2UgYnkgcHJlLXRydW5jYXRpbmcgJ3Rhc2snIG9mZiB0aGUgaXRlbXMgaW4gY3VtdWxhdGl2ZWRlcHMgKGtlZXBzIGl0ZW1zIGluIHNldHMgbG93ZXIpCiAKLSAgICAgICAgICAgIGRlZiBnZW5lcmF0ZV9yZWNkZXBzKHQpOgotICAgICAgICAgICAgICAgIG5ld2RlcHMgPSBzZXQoKQotICAgICAgICAgICAgICAgIChtYywgZm4sIHRhc2tuYW1lLCBfKSA9IHNwbGl0X3RpZF9tY2ZuKHQpCi0gICAgICAgICAgICAgICAgYWRkX3Jlc29sdmVkX2RlcGVuZGVuY2llcyhtYywgZm4sIHRhc2tuYW1lcywgbmV3ZGVwcykKLSAgICAgICAgICAgICAgICBleHRyYWRlcHNbdGlkXS51cGRhdGUobmV3ZGVwcykKLSAgICAgICAgICAgICAgICBzZWVuZGVwcy5hZGQodCkKLSAgICAgICAgICAgICAgICBuZXdkZXBzLmFkZCh0KQotICAgICAgICAgICAgICAgIGZvciBpIGluIG5ld2RlcHM6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGkgbm90IGluIHNlbGYucnVudGFza2VudHJpZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIE5vdCBhbGwgcmVjaXBlcyBtaWdodCBoYXZlIHRoZSByZWNyZGVwdGFzayB0YXNrIGFzIGEgdGFzawotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgdGFzayA9IHNlbGYucnVudGFza2VudHJpZXNbaV0udGFzawotICAgICAgICAgICAgICAgICAgICBmb3IgbiBpbiBzZWxmLnJ1bnRhc2tlbnRyaWVzW2ldLmRlcGVuZHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBuIG5vdCBpbiBzZWVuZGVwczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVfcmVjZGVwcyhuKQotICAgICAgICAgICAgZ2VuZXJhdGVfcmVjZGVwcyh0aWQpCiAKLSAgICAgICAgICAgIGlmIHRpZCBpbiByZWN1cnNpdmVpdGFza3M6Ci0gICAgICAgICAgICAgICAgZm9yIGRlcCBpbiByZWN1cnNpdmVpdGFza3NbdGlkXToKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVfcmVjZGVwcyhkZXApCi0gICAgICAgICAgICBzZWxmLmluaXRfcHJvZ3Jlc3NfcmVwb3J0ZXIudXBkYXRlKHRhc2tjb3VudGVyKQotCi0gICAgICAgICMgUmVtb3ZlIGNpcmN1bGFyIHJlZmVyZW5jZXMgc28gdGhhdCBkb19hW3JlY3JkZXB0YXNrXSA9ICJkb19hIGRvX2IiIGNhbiB3b3JrCi0gICAgICAgIGZvciB0aWQgaW4gcmVjdXJzaXZldGFza3M6Ci0gICAgICAgICAgICBleHRyYWRlcHNbdGlkXS5kaWZmZXJlbmNlX3VwZGF0ZShyZWN1cnNpdmV0YXNrc3NlbGZyZWYpCi0KKyAgICAgICAgcmV2ZGVwcyA9IHt9CisgICAgICAgIGRlcHMgPSB7fQorICAgICAgICBjdW11bGF0aXZlZGVwcyA9IHt9CiAgICAgICAgIGZvciB0aWQgaW4gc2VsZi5ydW50YXNrZW50cmllczoKLSAgICAgICAgICAgIHRhc2sgPSBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0udGFzawotICAgICAgICAgICAgIyBBZGQgaW4gZXh0cmEgZGVwZW5kZW5jaWVzCi0gICAgICAgICAgICBpZiB0aWQgaW4gZXh0cmFkZXBzOgotICAgICAgICAgICAgICAgICBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kcyA9IGV4dHJhZGVwc1t0aWRdCi0gICAgICAgICAgICAjIFJlbW92ZSBhbGwgc2VsZiByZWZlcmVuY2VzCi0gICAgICAgICAgICBpZiB0aWQgaW4gc2VsZi5ydW50YXNrZW50cmllc1t0aWRdLmRlcGVuZHM6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICJUYXNrICVzIGNvbnRhaW5zIHNlbGYgcmVmZXJlbmNlISIsIHRpZCkKLSAgICAgICAgICAgICAgICBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kcy5yZW1vdmUodGlkKQorICAgICAgICAgICAgZGVwc1t0aWRdID0gc2V0KHNlbGYucnVudGFza2VudHJpZXNbdGlkXS5kZXBlbmRzKQorICAgICAgICAgICAgcmV2ZGVwc1t0aWRdID0gc2V0KCkKKyAgICAgICAgICAgIGN1bXVsYXRpdmVkZXBzW3RpZF0gPSBzZXQoKQorICAgICAgICAjIEdlbmVyYXRlIGEgdGVtcCBsaXN0IG9mIHJldmVyc2UgZGVwZW5kZW5jaWVzCisgICAgICAgIGZvciB0aWQgaW4gc2VsZi5ydW50YXNrZW50cmllczoKKyAgICAgICAgICAgIGZvciBkZXAgaW4gc2VsZi5ydW50YXNrZW50cmllc1t0aWRdLmRlcGVuZHM6CisgICAgICAgICAgICAgICAgcmV2ZGVwc1tkZXBdLmFkZCh0aWQpCisgICAgICAgICMgRmluZCB0aGUgZGVwZW5kZW5jeSBjaGFpbiBlbmRwb2ludHMKKyAgICAgICAgZW5kcG9pbnRzID0gc2V0KCkKKyAgICAgICAgZm9yIHRpZCBpbiBzZWxmLnJ1bnRhc2tlbnRyaWVzOgorICAgICAgICAgICAgaWYgbGVuKGRlcHNbdGlkXSkgPT0gMDoKKyAgICAgICAgICAgICAgICBlbmRwb2ludHMuYWRkKHRpZCkKKyAgICAgICAgIyBJdGVyYXRlIHRoZSBjaGFpbnMgY29sbGF0aW5nIGRlcGVuZGVuY2llcworICAgICAgICB3aGlsZSBlbmRwb2ludHM6CisgICAgICAgICAgICBuZXh0ID0gc2V0KCkKKyAgICAgICAgICAgIGZvciB0aWQgaW4gZW5kcG9pbnRzOgorICAgICAgICAgICAgICAgIGZvciBkZXAgaW4gcmV2ZGVwc1t0aWRdOgorICAgICAgICAgICAgICAgICAgICBjdW11bGF0aXZlZGVwc1tkZXBdLmFkZChmbl9mcm9tX3RpZCh0aWQpKQorICAgICAgICAgICAgICAgICAgICBjdW11bGF0aXZlZGVwc1tkZXBdLnVwZGF0ZShjdW11bGF0aXZlZGVwc1t0aWRdKQorICAgICAgICAgICAgICAgICAgICBpZiB0aWQgaW4gZGVwc1tkZXBdOgorICAgICAgICAgICAgICAgICAgICAgICAgZGVwc1tkZXBdLnJlbW92ZSh0aWQpCisgICAgICAgICAgICAgICAgICAgIGlmIGxlbihkZXBzW2RlcF0pID09IDA6CisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LmFkZChkZXApCisgICAgICAgICAgICBlbmRwb2ludHMgPSBuZXh0CisgICAgICAgICNmb3IgdGlkIGluIGRlcHM6CisgICAgICAgICMgICAgaWYgbGVuKGRlcHNbdGlkXSkgIT0gMDoKKyAgICAgICAgIyAgICAgICAgYmIud2FybigiU2FuaXR5IHRlc3QgZmFpbHVyZSwgZGVwZW5kZW5jaWVzIGxlZnQgZm9yICVzICglcykiICUgKHRpZCwgZGVwc1t0aWRdKSkKKworICAgICAgICAjIExvb3AgaGVyZSBzaW5jZSByZWNyZGVwdGFza3MgY2FuIGRlcGVuZCB1cG9uIG90aGVyIHJlY3JkZXB0YXNrcyBhbmQgd2UgaGF2ZSB0bworICAgICAgICAjIHJlc29sdmUgdGhlc2UgcmVjdXJzaXZlbHkgdW50aWwgd2UgYXJlbid0IGFkZGluZyBhbnkgZnVydGhlciBleHRyYSBkZXBlbmRlbmNpZXMKKyAgICAgICAgZXh0cmFkZXBzID0gVHJ1ZQorICAgICAgICB3aGlsZSBleHRyYWRlcHM6CisgICAgICAgICAgICBleHRyYWRlcHMgPSAwCisgICAgICAgICAgICBmb3IgdGlkIGluIHJlY3Vyc2l2ZXRhc2tzOgorICAgICAgICAgICAgICAgIHRhc2tuYW1lcyA9IHJlY3Vyc2l2ZXRhc2tzW3RpZF0KKworICAgICAgICAgICAgICAgIHRvdGFsZGVwcyA9IHNldChzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kcykKKyAgICAgICAgICAgICAgICBpZiB0aWQgaW4gcmVjdXJzaXZlaXRhc2tzOgorICAgICAgICAgICAgICAgICAgICB0b3RhbGRlcHMudXBkYXRlKHJlY3Vyc2l2ZWl0YXNrc1t0aWRdKQorICAgICAgICAgICAgICAgICAgICBmb3IgZGVwIGluIHJlY3Vyc2l2ZWl0YXNrc1t0aWRdOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVwIG5vdCBpbiBzZWxmLnJ1bnRhc2tlbnRyaWVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbGRlcHMudXBkYXRlKHNlbGYucnVudGFza2VudHJpZXNbZGVwXS5kZXBlbmRzKQorCisgICAgICAgICAgICAgICAgZGVwcyA9IHNldCgpCisgICAgICAgICAgICAgICAgZm9yIGRlcCBpbiB0b3RhbGRlcHM6CisgICAgICAgICAgICAgICAgICAgIGlmIGRlcCBpbiBjdW11bGF0aXZlZGVwczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcHMudXBkYXRlKGN1bXVsYXRpdmVkZXBzW2RlcF0pCisKKyAgICAgICAgICAgICAgICBmb3IgdCBpbiBkZXBzOgorICAgICAgICAgICAgICAgICAgICBmb3IgdGFza25hbWUgaW4gdGFza25hbWVzOgorICAgICAgICAgICAgICAgICAgICAgICAgbmV3dGlkID0gdCArICI6IiArIHRhc2tuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBuZXd0aWQgPT0gdGlkOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBuZXd0aWQgaW4gc2VsZi5ydW50YXNrZW50cmllcyBhbmQgbmV3dGlkIG5vdCBpbiBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWRlcHMgKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucnVudGFza2VudHJpZXNbdGlkXS5kZXBlbmRzLmFkZChuZXd0aWQpCisKKyAgICAgICAgICAgICAgICAjIEhhbmRsZSByZWN1cnNpdmUgdGFza3Mgd2hpY2ggZGVwZW5kIHVwb24gb3RoZXIgcmVjdXJzaXZlIHRhc2tzCisgICAgICAgICAgICAgICAgZGVwcyA9IHNldCgpCisgICAgICAgICAgICAgICAgZm9yIGRlcCBpbiBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kcy5pbnRlcnNlY3Rpb24ocmVjdXJzaXZldGFza3MpOgorICAgICAgICAgICAgICAgICAgICBkZXBzLnVwZGF0ZShzZWxmLnJ1bnRhc2tlbnRyaWVzW2RlcF0uZGVwZW5kcy5kaWZmZXJlbmNlKHNlbGYucnVudGFza2VudHJpZXNbdGlkXS5kZXBlbmRzKSkKKyAgICAgICAgICAgICAgICBmb3IgbmV3dGlkIGluIGRlcHM6CisgICAgICAgICAgICAgICAgICAgIGZvciB0YXNrbmFtZSBpbiB0YXNrbmFtZXM6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgbmV3dGlkLmVuZHN3aXRoKCI6IiArIHRhc2tuYW1lKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmV3dGlkIGluIHNlbGYucnVudGFza2VudHJpZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFkZXBzICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kcy5hZGQobmV3dGlkKQorCisgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiQWRkZWQgJXMgcmVjdXJzaXZlIGRlcGVuZGVuY2llcyBpbiB0aGlzIGxvb3AiICUgZXh0cmFkZXBzKQorCisgICAgICAgICMgUmVtb3ZlIHJlY3JkZXB0YXNrIGNpcmN1bGFyIHJlZmVyZW5jZXMgc28gdGhhdCBkb19hW3JlY3JkZXB0YXNrXSA9ICJkb19hIGRvX2IiIGNhbiB3b3JrCisgICAgICAgIGZvciB0aWQgaW4gcmVjdXJzaXZldGFza3NzZWxmcmVmOgorICAgICAgICAgICAgc2VsZi5ydW50YXNrZW50cmllc1t0aWRdLmRlcGVuZHMuZGlmZmVyZW5jZV91cGRhdGUocmVjdXJzaXZldGFza3NzZWxmcmVmKQogCiAgICAgICAgIHNlbGYuaW5pdF9wcm9ncmVzc19yZXBvcnRlci5uZXh0X3N0YWdlKCkKIApAQCAtNzk4LDMwICs4NDEsNTcgQEAKICAgICAgICAgIwogICAgICAgICAjIE9uY2UgYWxsIGFjdGl2ZSB0YXNrcyBhcmUgbWFya2VkLCBwcnVuZSB0aGUgb25lcyB3ZSBkb24ndCBuZWVkLgogCi0gICAgICAgIGRlbGNvdW50ID0gMAorICAgICAgICBkZWxjb3VudCA9IHt9CiAgICAgICAgIGZvciB0aWQgaW4gbGlzdChzZWxmLnJ1bnRhc2tlbnRyaWVzLmtleXMoKSk6CiAgICAgICAgICAgICBpZiB0aWQgbm90IGluIHJ1bnFfYnVpbGQ6CisgICAgICAgICAgICAgICAgZGVsY291bnRbdGlkXSA9IHNlbGYucnVudGFza2VudHJpZXNbdGlkXQogICAgICAgICAgICAgICAgIGRlbCBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0KLSAgICAgICAgICAgICAgICBkZWxjb3VudCArPSAxCiAKLSAgICAgICAgc2VsZi5pbml0X3Byb2dyZXNzX3JlcG9ydGVyLm5leHRfc3RhZ2UoKQotCi0gICAgICAgIGlmIHNlbGYuY29va2VyLmNvbmZpZ3VyYXRpb24ucnVuYWxsIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcnVuYWxsID0gImRvXyVzIiAlIHNlbGYuY29va2VyLmNvbmZpZ3VyYXRpb24ucnVuYWxsCi0gICAgICAgICAgICBydW5hbGxfdGlkcyA9IHsgazogdiBmb3IgaywgdiBpbiBzZWxmLnJ1bnRhc2tlbnRyaWVzLml0ZW1zKCkgaWYgdGFza25hbWVfZnJvbV90aWQoaykgPT0gcnVuYWxsIH0KLQorICAgICAgICAjIEhhbmRsZSAtLXJ1bmFsbAorICAgICAgICBpZiBzZWxmLmNvb2tlci5jb25maWd1cmF0aW9uLnJ1bmFsbDoKICAgICAgICAgICAgICMgcmUtcnVuIHRoZSBtYXJrX2FjdGl2ZSBhbmQgdGhlbiBkcm9wIHVudXNlZCB0YXNrcyBmcm9tIG5ldyBsaXN0CiAgICAgICAgICAgICBydW5xX2J1aWxkID0ge30KLSAgICAgICAgICAgIGZvciB0aWQgaW4gbGlzdChydW5hbGxfdGlkcyk6Ci0gICAgICAgICAgICAgICAgbWFya19hY3RpdmUodGlkLDEpCisKKyAgICAgICAgICAgIGZvciB0YXNrIGluIHNlbGYuY29va2VyLmNvbmZpZ3VyYXRpb24ucnVuYWxsOgorICAgICAgICAgICAgICAgIHJ1bmFsbF90aWRzID0gc2V0KCkKKyAgICAgICAgICAgICAgICBmb3IgdGlkIGluIGxpc3Qoc2VsZi5ydW50YXNrZW50cmllcyk6CisgICAgICAgICAgICAgICAgICAgIHdhbnR0aWQgPSBmbl9mcm9tX3RpZCh0aWQpICsgIjpkb18lcyIgJSB0YXNrCisgICAgICAgICAgICAgICAgICAgIGlmIHdhbnR0aWQgaW4gZGVsY291bnQ6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJ1bnRhc2tlbnRyaWVzW3dhbnR0aWRdID0gZGVsY291bnRbd2FudHRpZF0KKyAgICAgICAgICAgICAgICAgICAgaWYgd2FudHRpZCBpbiBzZWxmLnJ1bnRhc2tlbnRyaWVzOgorICAgICAgICAgICAgICAgICAgICAgICAgcnVuYWxsX3RpZHMuYWRkKHdhbnR0aWQpCisKKyAgICAgICAgICAgICAgICBmb3IgdGlkIGluIGxpc3QocnVuYWxsX3RpZHMpOgorICAgICAgICAgICAgICAgICAgICBtYXJrX2FjdGl2ZSh0aWQsMSkKIAogICAgICAgICAgICAgZm9yIHRpZCBpbiBsaXN0KHNlbGYucnVudGFza2VudHJpZXMua2V5cygpKToKICAgICAgICAgICAgICAgICBpZiB0aWQgbm90IGluIHJ1bnFfYnVpbGQ6CisgICAgICAgICAgICAgICAgICAgIGRlbGNvdW50W3RpZF0gPSBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0KICAgICAgICAgICAgICAgICAgICAgZGVsIHNlbGYucnVudGFza2VudHJpZXNbdGlkXQotICAgICAgICAgICAgICAgICAgICBkZWxjb3VudCArPSAxCiAKICAgICAgICAgICAgIGlmIGxlbihzZWxmLnJ1bnRhc2tlbnRyaWVzKSA9PSAwOgotICAgICAgICAgICAgICAgIGJiLm1zZy5mYXRhbCgiUnVuUXVldWUiLCAiTm8gcmVtYWluaW5nIHRhc2tzIHRvIHJ1biBmb3IgYnVpbGQgdGFyZ2V0ICVzIHdpdGggcnVuYWxsICVzIiAlICh0YXJnZXQsIHJ1bmFsbCkpCisgICAgICAgICAgICAgICAgYmIubXNnLmZhdGFsKCJSdW5RdWV1ZSIsICJDb3VsZCBub3QgZmluZCBhbnkgdGFza3Mgd2l0aCB0aGUgdGFza25hbWVzICVzIHRvIHJ1biB3aXRoaW4gdGhlIHJlY2lwZXMgb2YgdGhlIHRhc2tncmFwaHMgb2YgdGhlIHRhcmdldHMgJXMiICUgKHN0cihzZWxmLmNvb2tlci5jb25maWd1cmF0aW9uLnJ1bmFsbCksIHN0cihzZWxmLnRhcmdldHMpKSkKKworICAgICAgICBzZWxmLmluaXRfcHJvZ3Jlc3NfcmVwb3J0ZXIubmV4dF9zdGFnZSgpCisKKyAgICAgICAgIyBIYW5kbGUgcnVub25seQorICAgICAgICBpZiBzZWxmLmNvb2tlci5jb25maWd1cmF0aW9uLnJ1bm9ubHk6CisgICAgICAgICAgICAjIHJlLXJ1biB0aGUgbWFya19hY3RpdmUgYW5kIHRoZW4gZHJvcCB1bnVzZWQgdGFza3MgZnJvbSBuZXcgbGlzdAorICAgICAgICAgICAgcnVucV9idWlsZCA9IHt9CisKKyAgICAgICAgICAgIGZvciB0YXNrIGluIHNlbGYuY29va2VyLmNvbmZpZ3VyYXRpb24ucnVub25seToKKyAgICAgICAgICAgICAgICBydW5vbmx5X3RpZHMgPSB7IGs6IHYgZm9yIGssIHYgaW4gc2VsZi5ydW50YXNrZW50cmllcy5pdGVtcygpIGlmIHRhc2tuYW1lX2Zyb21fdGlkKGspID09ICJkb18lcyIgJSB0YXNrIH0KKworICAgICAgICAgICAgICAgIGZvciB0aWQgaW4gbGlzdChydW5vbmx5X3RpZHMpOgorICAgICAgICAgICAgICAgICAgICBtYXJrX2FjdGl2ZSh0aWQsMSkKKworICAgICAgICAgICAgZm9yIHRpZCBpbiBsaXN0KHNlbGYucnVudGFza2VudHJpZXMua2V5cygpKToKKyAgICAgICAgICAgICAgICBpZiB0aWQgbm90IGluIHJ1bnFfYnVpbGQ6CisgICAgICAgICAgICAgICAgICAgIGRlbGNvdW50W3RpZF0gPSBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0KKyAgICAgICAgICAgICAgICAgICAgZGVsIHNlbGYucnVudGFza2VudHJpZXNbdGlkXQorCisgICAgICAgICAgICBpZiBsZW4oc2VsZi5ydW50YXNrZW50cmllcykgPT0gMDoKKyAgICAgICAgICAgICAgICBiYi5tc2cuZmF0YWwoIlJ1blF1ZXVlIiwgIkNvdWxkIG5vdCBmaW5kIGFueSB0YXNrcyB3aXRoIHRoZSB0YXNrbmFtZXMgJXMgdG8gcnVuIHdpdGhpbiB0aGUgdGFza2dyYXBocyBvZiB0aGUgdGFyZ2V0cyAlcyIgJSAoc3RyKHNlbGYuY29va2VyLmNvbmZpZ3VyYXRpb24ucnVub25seSksIHN0cihzZWxmLnRhcmdldHMpKSkKIAogICAgICAgICAjCiAgICAgICAgICMgU3RlcCBEIC0gU2FuaXR5IGNoZWNrcyBhbmQgY29tcHV0YXRpb24KQEAgLTgzNCw3ICs5MDQsNyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBiYi5tc2cuZmF0YWwoIlJ1blF1ZXVlIiwgIk5vIGFjdGl2ZSB0YXNrcyBhbmQgbm90IGluIC0tY29udGludWUgbW9kZT8hIFBsZWFzZSByZXBvcnQgdGhpcyBidWcuIikKIAotICAgICAgICBsb2dnZXIudmVyYm9zZSgiUHJ1bmVkICVzIGluYWN0aXZlIHRhc2tzLCAlcyBsZWZ0IiwgZGVsY291bnQsIGxlbihzZWxmLnJ1bnRhc2tlbnRyaWVzKSkKKyAgICAgICAgbG9nZ2VyLnZlcmJvc2UoIlBydW5lZCAlcyBpbmFjdGl2ZSB0YXNrcywgJXMgbGVmdCIsIGxlbihkZWxjb3VudCksIGxlbihzZWxmLnJ1bnRhc2tlbnRyaWVzKSkKIAogICAgICAgICBsb2dnZXIudmVyYm9zZSgiQXNzaWduIFdlaWdodGluZ3MiKQogCkBAIC0xNzgxLDcgKzE4NTEsNyBAQAogCiAgICAgZGVmIHNldGJ1aWxkYWJsZShzZWxmLCB0YXNrKToKICAgICAgICAgc2VsZi5ydW5xX2J1aWxkYWJsZS5hZGQodGFzaykKLSAgICAgICAgc2VsZi5zY2hlZC5uZXdidWlsYWJsZSh0YXNrKQorICAgICAgICBzZWxmLnNjaGVkLm5ld2J1aWxkYWJsZSh0YXNrKQogCiAgICAgZGVmIHRhc2tfY29tcGxldGVvdXRyaWdodChzZWxmLCB0YXNrKToKICAgICAgICAgIiIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3Byb2Nlc3MucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3Byb2Nlc3MucHkKaW5kZXggM2QzMTM1NS4uODI4MTU5ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3NlcnZlci9wcm9jZXNzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9zZXJ2ZXIvcHJvY2Vzcy5weQpAQCAtMjIzLDYgKzIyMyw4IEBACiAKICAgICAgICAgdHJ5OiAKICAgICAgICAgICAgIHNlbGYuY29va2VyLnNodXRkb3duKFRydWUpCisgICAgICAgICAgICBzZWxmLmNvb2tlci5ub3RpZmllci5zdG9wKCkKKyAgICAgICAgICAgIHNlbGYuY29va2VyLmNvbmZpZ25vdGlmaWVyLnN0b3AoKQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBwYXNzCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9zaGVsbC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi9zaGVsbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWRkOGQ1NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvc2hlbGwucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4MjAgKzAsMCBAQAotIyBleDp0cz00OnN3PTQ6c3RzPTQ6ZXQKLSMgLSotIHRhYi13aWR0aDogNDsgYy1iYXNpYy1vZmZzZXQ6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbCAtKi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jCi0jIENvcHlyaWdodCAoQykgMjAwNS0yMDA2IE1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1pY2tleUBWYW5pbGxlLmRlPgotIyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAwNiBWYW5pbGxlIE1lZGlhCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCi0jIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAotIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgotIwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgVGhhbmtzIHRvOgotIyAqIEhvbGdlciBGcmV5dGhlciA8emVja2VAaGFuZGhlbGRzLm9yZz4KLSMgKiBKdXN0aW4gUGF0cmluIDxwYXBlcmNyYW5lQHJldmVyc2Vmb2xkLmNvbT4KLSMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSIiIgotQml0QmFrZSBTaGVsbAotCi1JREVBUzoKLSAgICAqIGxpc3QgZGVmaW5lZCB0YXNrcyBwZXIgcGFja2FnZQotICAgICogbGlzdCBjbGFzc2VzCi0gICAgKiB0b2dnbGUgZm9yY2UKLSAgICAqIGNvbW1hbmQgdG8gcmVwYXJzZSBqdXN0IG9uZSAob3IgbW9yZSkgYmJmaWxlKHMpCi0gICAgKiBhdXRvbWF0aWMgY2hlY2sgaWYgcmVwYXJzaW5nIGlzIG5lY2Vzc2FyeSAoaW5vdGlmeT8pCi0gICAgKiBmcm9udGVuZCBmb3IgYmIgZmlsZSBtYW5pcHVsYXRpb24KLSAgICAqIG1vcmUgc2hlbGwtbGlrZSBmZWF0dXJlczoKLSAgICAgICAgLSBvdXRwdXQgY29udHJvbCwgaS5lLiBwaXBlIG91dHB1dCBpbnRvIGdyZXAsIHNvcnQsIGV0Yy4KLSAgICAgICAgLSBqb2IgY29udHJvbCwgaS5lLiBicmluZyBydW5uaW5nIGNvbW1hbmRzIGludG8gYmFja2dyb3VuZCBhbmQgZm9yZWdyb3VuZAotICAgICogc3RhcnQgcGFyc2luZyBpbiBiYWNrZ3JvdW5kIHJpZ2h0IGFmdGVyIHN0YXJ0dXAKLSAgICAqIG5jdXJzZXMgaW50ZXJmYWNlCi0KLVBST0JMRU1TOgotICAgICogZm9yY2UgZG9lc24ndCBhbHdheXMgd29yawotICAgICogcmVhZGxpbmUgY29tcGxldGlvbiBmb3IgY29tbWFuZHMgd2l0aCBtb3JlIHRoYW4gb25lIHBhcmFtZXRlcnMKLQotIiIiCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIEltcG9ydCBhbmQgc2V0dXAgZ2xvYmFsIHZhcmlhYmxlcwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgotZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHJlZHVjZQotdHJ5OgotICAgIHNldAotZXhjZXB0IE5hbWVFcnJvcjoKLSAgICBmcm9tIHNldHMgaW1wb3J0IFNldCBhcyBzZXQKLWltcG9ydCBzeXMsIG9zLCByZWFkbGluZSwgc29ja2V0LCBodHRwbGliLCB1cmxsaWIsIGNvbW1hbmRzLCBwb3BlbjIsIHNobGV4LCBRdWV1ZSwgZm5tYXRjaAotZnJvbSBiYiBpbXBvcnQgZGF0YSwgcGFyc2UsIGJ1aWxkLCBjYWNoZSwgdGFza2RhdGEsIHJ1bnF1ZXVlLCBwcm92aWRlcnMgYXMgUHJvdmlkZXJzCi0KLV9fdmVyc2lvbl9fID0gIjAuNS4zLjEiCi1fX2NyZWRpdHNfXyA9ICIiIkJpdEJha2UgU2hlbGwgVmVyc2lvbiAlcyAoQykgMjAwNSBNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtaWNrZXlAVmFuaWxsZS5kZT4KLVR5cGUgJ2hlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLCBwcmVzcyBDVFJMLUQgdG8gZXhpdC4iIiIgJSBfX3ZlcnNpb25fXwotCi1jbWRzID0ge30KLWxlYXZlX21haW5sb29wID0gRmFsc2UKLWxhc3RfZXhjZXB0aW9uID0gTm9uZQotY29va2VyID0gTm9uZQotcGFyc2VkID0gRmFsc2UKLWRlYnVnID0gb3MuZW52aXJvbi5nZXQoICJCQlNIRUxMX0RFQlVHIiwgIiIgKQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDbGFzcyBCaXRCYWtlU2hlbGxDb21tYW5kcwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotY2xhc3MgQml0QmFrZVNoZWxsQ29tbWFuZHM6Ci0gICAgIiIiVGhpcyBjbGFzcyBjb250YWlucyB0aGUgdmFsaWQgY29tbWFuZHMgZm9yIHRoZSBzaGVsbCIiIgotCi0gICAgZGVmIF9faW5pdF9fKCBzZWxmLCBzaGVsbCApOgotICAgICAgICAiIiJSZWdpc3RlciBhbGwgdGhlIGNvbW1hbmRzIiIiCi0gICAgICAgIHNlbGYuX3NoZWxsID0gc2hlbGwKLSAgICAgICAgZm9yIGF0dHIgaW4gQml0QmFrZVNoZWxsQ29tbWFuZHMuX19kaWN0X186Ci0gICAgICAgICAgICBpZiBub3QgYXR0ci5zdGFydHN3aXRoKCAiXyIgKToKLSAgICAgICAgICAgICAgICBpZiBhdHRyLmVuZHN3aXRoKCAiXyIgKToKLSAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA9IGF0dHJbOi0xXS5sb3dlcigpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA9IGF0dHJbOl0ubG93ZXIoKQotICAgICAgICAgICAgICAgIG1ldGhvZCA9IGdldGF0dHIoIEJpdEJha2VTaGVsbENvbW1hbmRzLCBhdHRyICkKLSAgICAgICAgICAgICAgICBkZWJ1Z091dCggInJlZ2lzdGVyaW5nIGNvbW1hbmQgJyVzJyIgJSBjb21tYW5kICkKLSAgICAgICAgICAgICAgICAjIHNjYW4gbnVtYmVyIG9mIGFyZ3VtZW50cwotICAgICAgICAgICAgICAgIHVzYWdlID0gZ2V0YXR0ciggbWV0aG9kLCAidXNhZ2UiLCAiIiApCi0gICAgICAgICAgICAgICAgaWYgdXNhZ2UgIT0gIjwuLi4+IjoKLSAgICAgICAgICAgICAgICAgICAgbnVtQXJncyA9IGxlbiggdXNhZ2Uuc3BsaXQoKSApCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgbnVtQXJncyA9IC0xCi0gICAgICAgICAgICAgICAgc2hlbGwucmVnaXN0ZXJDb21tYW5kKCBjb21tYW5kLCBtZXRob2QsIG51bUFyZ3MsICIlcyAlcyIgJSAoIGNvbW1hbmQsIHVzYWdlICksIG1ldGhvZC5fX2RvY19fICkKLQotICAgIGRlZiBfY2hlY2tQYXJzZWQoIHNlbGYgKToKLSAgICAgICAgaWYgbm90IHBhcnNlZDoKLSAgICAgICAgICAgIHByaW50KCJTSEVMTDogVGhpcyBjb21tYW5kIG5lZWRzIHRvIHBhcnNlIGJiZmlsZXMuLi4iKQotICAgICAgICAgICAgc2VsZi5wYXJzZSggTm9uZSApCi0KLSAgICBkZWYgX2ZpbmRQcm92aWRlciggc2VsZiwgaXRlbSApOgotICAgICAgICBzZWxmLl9jaGVja1BhcnNlZCgpCi0gICAgICAgICMgTmVlZCB0byB1c2UgdGFza0RhdGEgZm9yIHRoaXMgaW5mb3JtYXRpb24KLSAgICAgICAgcHJlZmVycmVkID0gZGF0YS5nZXRWYXIoICJQUkVGRVJSRURfUFJPVklERVJfJXMiICUgaXRlbSwgY29va2VyLmNvbmZpZ3VyYXRpb24uZGF0YSwgMSApCi0gICAgICAgIGlmIG5vdCBwcmVmZXJyZWQ6IHByZWZlcnJlZCA9IGl0ZW0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbHYsIGxmLCBwdiwgcGYgPSBQcm92aWRlcnMuZmluZEJlc3RQcm92aWRlcihwcmVmZXJyZWQsIGNvb2tlci5jb25maWd1cmF0aW9uLmRhdGEsIGNvb2tlci5zdGF0dXMpCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIGlmIGl0ZW0gaW4gY29va2VyLnN0YXR1cy5wcm92aWRlcnM6Ci0gICAgICAgICAgICAgICAgcGYgPSBjb29rZXIuc3RhdHVzLnByb3ZpZGVyc1tpdGVtXVswXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwZiA9IE5vbmUKLSAgICAgICAgcmV0dXJuIHBmCi0KLSAgICBkZWYgYWxpYXMoIHNlbGYsIHBhcmFtcyApOgotICAgICAgICAiIiJSZWdpc3RlciBhIG5ldyBuYW1lIGZvciBhIGNvbW1hbmQiIiIKLSAgICAgICAgbmV3LCBvbGQgPSBwYXJhbXMKLSAgICAgICAgaWYgbm90IG9sZCBpbiBjbWRzOgotICAgICAgICAgICAgcHJpbnQoIkVSUk9SOiBDb21tYW5kICclcycgbm90IGtub3duIiAlIG9sZCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNtZHNbbmV3XSA9IGNtZHNbb2xkXQotICAgICAgICAgICAgcHJpbnQoIk9LIikKLSAgICBhbGlhcy51c2FnZSA9ICI8YWxpYXM+IDxjb21tYW5kPiIKLQotICAgIGRlZiBidWZmZXIoIHNlbGYsIHBhcmFtcyApOgotICAgICAgICAiIiJEdW1wIHNwZWNpZmllZCBvdXRwdXQgYnVmZmVyIiIiCi0gICAgICAgIGluZGV4ID0gcGFyYW1zWzBdCi0gICAgICAgIHByaW50KHNlbGYuX3NoZWxsLm15b3V0LmJ1ZmZlciggaW50KCBpbmRleCApICkpCi0gICAgYnVmZmVyLnVzYWdlID0gIjxpbmRleD4iCi0KLSAgICBkZWYgYnVmZmVycyggc2VsZiwgcGFyYW1zICk6Ci0gICAgICAgICIiIlNob3cgdGhlIGF2YWlsYWJsZSBvdXRwdXQgYnVmZmVycyIiIgotICAgICAgICBjb21tYW5kcyA9IHNlbGYuX3NoZWxsLm15b3V0LmJ1ZmZlcmVkQ29tbWFuZHMoKQotICAgICAgICBpZiBub3QgY29tbWFuZHM6Ci0gICAgICAgICAgICBwcmludCgiU0hFTEw6IE5vIGJ1ZmZlcmVkIGNvbW1hbmRzIGF2YWlsYWJsZSB5ZXQuIFN0YXJ0IGRvaW5nIHNvbWV0aGluZy4iKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJpbnQoIj0iKjM1LCAiQXZhaWxhYmxlIE91dHB1dCBCdWZmZXJzIiwgIj0iKjI3KQotICAgICAgICAgICAgZm9yIGluZGV4LCBjbWQgaW4gZW51bWVyYXRlKCBjb21tYW5kcyApOgotICAgICAgICAgICAgICAgIHByaW50KCJ8ICVzICVzIiAlICggc3RyKCBpbmRleCApLmxqdXN0KCAzICksIGNtZCApKQotICAgICAgICAgICAgcHJpbnQoIj0iKjg4KQotCi0gICAgZGVmIGJ1aWxkKCBzZWxmLCBwYXJhbXMsIGNtZCA9ICJidWlsZCIgKToKLSAgICAgICAgIiIiQnVpbGQgYSBwcm92aWRlZSIiIgotICAgICAgICBnbG9iYWwgbGFzdF9leGNlcHRpb24KLSAgICAgICAgZ2xvYmV4cHIgPSBwYXJhbXNbMF0KLSAgICAgICAgc2VsZi5fY2hlY2tQYXJzZWQoKQotICAgICAgICBuYW1lcyA9IGdsb2JmaWx0ZXIoIGNvb2tlci5zdGF0dXMucGtnX3BuLCBnbG9iZXhwciApCi0gICAgICAgIGlmIGxlbiggbmFtZXMgKSA9PSAwOiBuYW1lcyA9IFsgZ2xvYmV4cHIgXQotICAgICAgICBwcmludCgiU0hFTEw6IEJ1aWxkaW5nICVzIiAlICcgJy5qb2luKCBuYW1lcyApKQotCi0gICAgICAgIHRkID0gdGFza2RhdGEuVGFza0RhdGEoY29va2VyLmNvbmZpZ3VyYXRpb24uYWJvcnQpCi0gICAgICAgIGxvY2FsZGF0YSA9IGRhdGEuY3JlYXRlQ29weShjb29rZXIuY29uZmlndXJhdGlvbi5kYXRhKQotICAgICAgICBkYXRhLnVwZGF0ZV9kYXRhKGxvY2FsZGF0YSkKLSAgICAgICAgZGF0YS5leHBhbmRLZXlzKGxvY2FsZGF0YSkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0YXNrcyA9IFtdCi0gICAgICAgICAgICBmb3IgbmFtZSBpbiBuYW1lczoKLSAgICAgICAgICAgICAgICB0ZC5hZGRfcHJvdmlkZXIobG9jYWxkYXRhLCBjb29rZXIuc3RhdHVzLCBuYW1lKQotICAgICAgICAgICAgICAgIHByb3ZpZGVycyA9IHRkLmdldF9wcm92aWRlcihuYW1lKQotCi0gICAgICAgICAgICAgICAgaWYgbGVuKHByb3ZpZGVycykgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgUHJvdmlkZXJzLk5vUHJvdmlkZXIKLQotICAgICAgICAgICAgICAgIHRhc2tzLmFwcGVuZChbbmFtZSwgImRvXyVzIiAlIGNtZF0pCi0KLSAgICAgICAgICAgIHRkLmFkZF91bnJlc29sdmVkKGxvY2FsZGF0YSwgY29va2VyLnN0YXR1cykKLQotICAgICAgICAgICAgcnEgPSBydW5xdWV1ZS5SdW5RdWV1ZShjb29rZXIsIGxvY2FsZGF0YSwgY29va2VyLnN0YXR1cywgdGQsIHRhc2tzKQotICAgICAgICAgICAgcnEucHJlcGFyZV9ydW5xdWV1ZSgpCi0gICAgICAgICAgICBycS5leGVjdXRlX3J1bnF1ZXVlKCkKLQotICAgICAgICBleGNlcHQgUHJvdmlkZXJzLk5vUHJvdmlkZXI6Ci0gICAgICAgICAgICBwcmludCgiRVJST1I6IE5vIFByb3ZpZGVyIikKLSAgICAgICAgICAgIGxhc3RfZXhjZXB0aW9uID0gUHJvdmlkZXJzLk5vUHJvdmlkZXIKLQotICAgICAgICBleGNlcHQgcnVucXVldWUuVGFza0ZhaWx1cmUgYXMgZm5pZHM6Ci0gICAgICAgICAgICBsYXN0X2V4Y2VwdGlvbiA9IHJ1bnF1ZXVlLlRhc2tGYWlsdXJlCi0KLSAgICAgICAgZXhjZXB0IGJ1aWxkLkZ1bmNGYWlsZWQgYXMgZToKLSAgICAgICAgICAgIHByaW50KCJFUlJPUjogQ291bGRuJ3QgYnVpbGQgJyVzJyIgJSBuYW1lcykKLSAgICAgICAgICAgIGxhc3RfZXhjZXB0aW9uID0gZQotCi0KLSAgICBidWlsZC51c2FnZSA9ICI8cHJvdmlkZWU+IgotCi0gICAgZGVmIGNsZWFuKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiQ2xlYW4gYSBwcm92aWRlZSIiIgotICAgICAgICBzZWxmLmJ1aWxkKCBwYXJhbXMsICJjbGVhbiIgKQotICAgIGNsZWFuLnVzYWdlID0gIjxwcm92aWRlZT4iCi0KLSAgICBkZWYgY29tcGlsZSggc2VsZiwgcGFyYW1zICk6Ci0gICAgICAgICIiIkV4ZWN1dGUgJ2NvbXBpbGUnIG9uIGEgcHJvdmlkZWUiIiIKLSAgICAgICAgc2VsZi5idWlsZCggcGFyYW1zLCAiY29tcGlsZSIgKQotICAgIGNvbXBpbGUudXNhZ2UgPSAiPHByb3ZpZGVlPiIKLQotICAgIGRlZiBjb25maWd1cmUoIHNlbGYsIHBhcmFtcyApOgotICAgICAgICAiIiJFeGVjdXRlICdjb25maWd1cmUnIG9uIGEgcHJvdmlkZWUiIiIKLSAgICAgICAgc2VsZi5idWlsZCggcGFyYW1zLCAiY29uZmlndXJlIiApCi0gICAgY29uZmlndXJlLnVzYWdlID0gIjxwcm92aWRlZT4iCi0KLSAgICBkZWYgaW5zdGFsbCggc2VsZiwgcGFyYW1zICk6Ci0gICAgICAgICIiIkV4ZWN1dGUgJ2luc3RhbGwnIG9uIGEgcHJvdmlkZWUiIiIKLSAgICAgICAgc2VsZi5idWlsZCggcGFyYW1zLCAiaW5zdGFsbCIgKQotICAgIGluc3RhbGwudXNhZ2UgPSAiPHByb3ZpZGVlPiIKLQotICAgIGRlZiBlZGl0KCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiQ2FsbCAkRURJVE9SIG9uIGEgcHJvdmlkZWUiIiIKLSAgICAgICAgbmFtZSA9IHBhcmFtc1swXQotICAgICAgICBiYmZpbGUgPSBzZWxmLl9maW5kUHJvdmlkZXIoIG5hbWUgKQotICAgICAgICBpZiBiYmZpbGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBvcy5zeXN0ZW0oICIlcyAlcyIgJSAoIG9zLmVudmlyb24uZ2V0KCAiRURJVE9SIiwgInZpIiApLCBiYmZpbGUgKSApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCgiRVJST1I6IE5vdGhpbmcgcHJvdmlkZXMgJyVzJyIgJSBuYW1lKQotICAgIGVkaXQudXNhZ2UgPSAiPHByb3ZpZGVlPiIKLQotICAgIGRlZiBlbnZpcm9ubWVudCggc2VsZiwgcGFyYW1zICk6Ci0gICAgICAgICIiIkR1bXAgb3V0IHRoZSBvdXRlciBCaXRCYWtlIGVudmlyb25tZW50IiIiCi0gICAgICAgIGNvb2tlci5zaG93RW52aXJvbm1lbnQoKQotCi0gICAgZGVmIGV4aXRfKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiTGVhdmUgdGhlIEJpdEJha2UgU2hlbGwiIiIKLSAgICAgICAgZGVidWdPdXQoICJzZXR0aW5nIGxlYXZlX21haW5sb29wIHRvIHRydWUiICkKLSAgICAgICAgZ2xvYmFsIGxlYXZlX21haW5sb29wCi0gICAgICAgIGxlYXZlX21haW5sb29wID0gVHJ1ZQotCi0gICAgZGVmIGZldGNoKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiRmV0Y2ggYSBwcm92aWRlZSIiIgotICAgICAgICBzZWxmLmJ1aWxkKCBwYXJhbXMsICJmZXRjaCIgKQotICAgIGZldGNoLnVzYWdlID0gIjxwcm92aWRlZT4iCi0KLSAgICBkZWYgZmlsZUJ1aWxkKCBzZWxmLCBwYXJhbXMsIGNtZCA9ICJidWlsZCIgKToKLSAgICAgICAgIiIiUGFyc2UgYW5kIGJ1aWxkIGEgLmJiIGZpbGUiIiIKLSAgICAgICAgZ2xvYmFsIGxhc3RfZXhjZXB0aW9uCi0gICAgICAgIG5hbWUgPSBwYXJhbXNbMF0KLSAgICAgICAgYmYgPSBjb21wbGV0ZUZpbGVQYXRoKCBuYW1lICkKLSAgICAgICAgcHJpbnQoIlNIRUxMOiBDYWxsaW5nICclcycgb24gJyVzJyIgJSAoIGNtZCwgYmYgKSkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjb29rZXIuYnVpbGRGaWxlKGJmLCBjbWQpCi0gICAgICAgIGV4Y2VwdCBwYXJzZS5QYXJzZUVycm9yOgotICAgICAgICAgICAgcHJpbnQoIkVSUk9SOiBVbmFibGUgdG8gb3BlbiBvciBwYXJzZSAnJXMnIiAlIGJmKQotICAgICAgICBleGNlcHQgYnVpbGQuRnVuY0ZhaWxlZCBhcyBlOgotICAgICAgICAgICAgcHJpbnQoIkVSUk9SOiBDb3VsZG4ndCBidWlsZCAnJXMnIiAlIG5hbWUpCi0gICAgICAgICAgICBsYXN0X2V4Y2VwdGlvbiA9IGUKLQotICAgIGZpbGVCdWlsZC51c2FnZSA9ICI8YmJmaWxlPiIKLQotICAgIGRlZiBmaWxlQ2xlYW4oIHNlbGYsIHBhcmFtcyApOgotICAgICAgICAiIiJDbGVhbiBhIC5iYiBmaWxlIiIiCi0gICAgICAgIHNlbGYuZmlsZUJ1aWxkKCBwYXJhbXMsICJjbGVhbiIgKQotICAgIGZpbGVDbGVhbi51c2FnZSA9ICI8YmJmaWxlPiIKLQotICAgIGRlZiBmaWxlRWRpdCggc2VsZiwgcGFyYW1zICk6Ci0gICAgICAgICIiIkNhbGwgJEVESVRPUiBvbiBhIC5iYiBmaWxlIiIiCi0gICAgICAgIG5hbWUgPSBwYXJhbXNbMF0KLSAgICAgICAgb3Muc3lzdGVtKCAiJXMgJXMiICUgKCBvcy5lbnZpcm9uLmdldCggIkVESVRPUiIsICJ2aSIgKSwgY29tcGxldGVGaWxlUGF0aCggbmFtZSApICkgKQotICAgIGZpbGVFZGl0LnVzYWdlID0gIjxiYmZpbGU+IgotCi0gICAgZGVmIGZpbGVSZWJ1aWxkKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiUmVidWlsZCAoY2xlYW4gJiBidWlsZCkgYSAuYmIgZmlsZSIiIgotICAgICAgICBzZWxmLmZpbGVCdWlsZCggcGFyYW1zLCAicmVidWlsZCIgKQotICAgIGZpbGVSZWJ1aWxkLnVzYWdlID0gIjxiYmZpbGU+IgotCi0gICAgZGVmIGZpbGVSZXBhcnNlKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiKHJlKVBhcnNlIGEgYmIgZmlsZSIiIgotICAgICAgICBiYmZpbGUgPSBwYXJhbXNbMF0KLSAgICAgICAgcHJpbnQoIlNIRUxMOiBQYXJzaW5nICclcyciICUgYmJmaWxlKQotICAgICAgICBwYXJzZS51cGRhdGVfbXRpbWUoIGJiZmlsZSApCi0gICAgICAgIGNvb2tlci5wYXJzZXIucmVwYXJzZShiYmZpbGUpCi0gICAgICAgIGlmIEZhbHNlOiAjZnJvbUNhY2hlOgotICAgICAgICAgICAgcHJpbnQoIlNIRUxMOiBGaWxlIGhhcyBub3QgYmVlbiB1cGRhdGVkLCBub3QgcmVwYXJzaW5nIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCJTSEVMTDogUGFyc2VkIikKLSAgICBmaWxlUmVwYXJzZS51c2FnZSA9ICI8YmJmaWxlPiIKLQotICAgIGRlZiBhYm9ydCggc2VsZiwgcGFyYW1zICk6Ci0gICAgICAgICIiIlRvZ2dsZSBhYm9ydCB0YXNrIGV4ZWN1dGlvbiBmbGFnIChzZWUgYml0YmFrZSAtaykiIiIKLSAgICAgICAgY29va2VyLmNvbmZpZ3VyYXRpb24uYWJvcnQgPSBub3QgY29va2VyLmNvbmZpZ3VyYXRpb24uYWJvcnQKLSAgICAgICAgcHJpbnQoIlNIRUxMOiBBYm9ydCBGbGFnIGlzIG5vdyAnJXMnIiAlIHJlcHIoIGNvb2tlci5jb25maWd1cmF0aW9uLmFib3J0ICkpCi0KLSAgICBkZWYgZm9yY2UoIHNlbGYsIHBhcmFtcyApOgotICAgICAgICAiIiJUb2dnbGUgZm9yY2UgdGFzayBleGVjdXRpb24gZmxhZyAoc2VlIGJpdGJha2UgLWYpIiIiCi0gICAgICAgIGNvb2tlci5jb25maWd1cmF0aW9uLmZvcmNlID0gbm90IGNvb2tlci5jb25maWd1cmF0aW9uLmZvcmNlCi0gICAgICAgIHByaW50KCJTSEVMTDogRm9yY2UgRmxhZyBpcyBub3cgJyVzJyIgJSByZXByKCBjb29rZXIuY29uZmlndXJhdGlvbi5mb3JjZSApKQotCi0gICAgZGVmIGhlbHAoIHNlbGYsIHBhcmFtcyApOgotICAgICAgICAiIiJTaG93IGEgY29tcHJlaGVuc2l2ZSBsaXN0IG9mIGNvbW1hbmRzIGFuZCB0aGVpciBwdXJwb3NlIiIiCi0gICAgICAgIHByaW50KCI9IiozMCwgIkF2YWlsYWJsZSBDb21tYW5kcyIsICI9IiozMCkKLSAgICAgICAgZm9yIGNtZCBpbiBzb3J0ZWQoY21kcyk6Ci0gICAgICAgICAgICBmdW5jdGlvbiwgbnVtcGFyYW1zLCB1c2FnZSwgaGVscHRleHQgPSBjbWRzW2NtZF0KLSAgICAgICAgICAgIHByaW50KCJ8ICVzIHwgJXMiICUgKHVzYWdlLmxqdXN0KDMwKSwgaGVscHRleHQpKQotICAgICAgICBwcmludCgiPSIqNzgpCi0KLSAgICBkZWYgbGFzdEVycm9yKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiU2hvdyB0aGUgcmVhc29uIG9yIGxvZyB0aGF0IHdhcyBwcm9kdWNlZCBieSB0aGUgbGFzdCBCaXRCYWtlIGV2ZW50IGV4Y2VwdGlvbiIiIgotICAgICAgICBpZiBsYXN0X2V4Y2VwdGlvbiBpcyBOb25lOgotICAgICAgICAgICAgcHJpbnQoIlNIRUxMOiBObyBFcnJvcnMgeWV0IChQaGV3KS4uLiIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZWFzb24sIGV2ZW50ID0gbGFzdF9leGNlcHRpb24uYXJncwotICAgICAgICAgICAgcHJpbnQoIlNIRUxMOiBSZWFzb24gZm9yIHRoZSBsYXN0IGVycm9yOiAnJXMnIiAlIHJlYXNvbikKLSAgICAgICAgICAgIGlmICc6JyBpbiByZWFzb246Ci0gICAgICAgICAgICAgICAgbXNnLCBmaWxlbmFtZSA9IHJlYXNvbi5zcGxpdCggJzonICkKLSAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnN0cmlwKCkKLSAgICAgICAgICAgICAgICBwcmludCgiU0hFTEw6IER1bXBpbmcgbG9nIGZpbGUgZm9yIGxhc3QgZXJyb3I6IikKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KG9wZW4oIGZpbGVuYW1lICkucmVhZCgpKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICAgICAgICAgICAgICBwcmludCgiRVJST1I6IENvdWxkbid0IG9wZW4gJyVzJyIgJSBmaWxlbmFtZSkKLQotICAgIGRlZiBtYXRjaCggc2VsZiwgcGFyYW1zICk6Ci0gICAgICAgICIiIkR1bXAgYWxsIGZpbGVzIG9yIHByb3ZpZGVycyBtYXRjaGluZyBhIGdsb2IgZXhwcmVzc2lvbiIiIgotICAgICAgICB3aGF0LCBnbG9iZXhwciA9IHBhcmFtcwotICAgICAgICBpZiB3aGF0ID09ICJmaWxlcyI6Ci0gICAgICAgICAgICBzZWxmLl9jaGVja1BhcnNlZCgpCi0gICAgICAgICAgICBmb3Iga2V5IGluIGdsb2JmaWx0ZXIoIGNvb2tlci5zdGF0dXMucGtnX2ZuLCBnbG9iZXhwciApOiBwcmludChrZXkpCi0gICAgICAgIGVsaWYgd2hhdCA9PSAicHJvdmlkZXJzIjoKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrUGFyc2VkKCkKLSAgICAgICAgICAgIGZvciBrZXkgaW4gZ2xvYmZpbHRlciggY29va2VyLnN0YXR1cy5wa2dfcG4sIGdsb2JleHByICk6IHByaW50KGtleSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCJVc2FnZTogbWF0Y2ggJXMiICUgc2VsZi5wcmludF8udXNhZ2UpCi0gICAgbWF0Y2gudXNhZ2UgPSAiPGZpbGVzfHByb3ZpZGVycz4gPGdsb2I+IgotCi0gICAgZGVmIG5ldyggc2VsZiwgcGFyYW1zICk6Ci0gICAgICAgICIiIkNyZWF0ZSBhIG5ldyAuYmIgZmlsZSBhbmQgb3BlbiB0aGUgZWRpdG9yIiIiCi0gICAgICAgIGRpcm5hbWUsIGZpbGVuYW1lID0gcGFyYW1zCi0gICAgICAgIHBhY2thZ2VzID0gJy8nLmpvaW4oIGRhdGEuZ2V0VmFyKCAiQkJGSUxFUyIsIGNvb2tlci5jb25maWd1cmF0aW9uLmRhdGEsIDEgKS5zcGxpdCgnLycpWzotMl0gKQotICAgICAgICBmdWxsZGlybmFtZSA9ICIlcy8lcyIgJSAoIHBhY2thZ2VzLCBkaXJuYW1lICkKLQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoIGZ1bGxkaXJuYW1lICk6Ci0gICAgICAgICAgICBwcmludCgiU0hFTEw6IENyZWF0aW5nICclcyciICUgZnVsbGRpcm5hbWUpCi0gICAgICAgICAgICBvcy5ta2RpciggZnVsbGRpcm5hbWUgKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyggZnVsbGRpcm5hbWUgKSBhbmQgb3MucGF0aC5pc2RpciggZnVsbGRpcm5hbWUgKToKLSAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKCAiJXMvJXMiICUgKCBmdWxsZGlybmFtZSwgZmlsZW5hbWUgKSApOgotICAgICAgICAgICAgICAgIHByaW50KCJTSEVMTDogRVJST1I6ICVzLyVzIGFscmVhZHkgZXhpc3RzIiAlICggZnVsbGRpcm5hbWUsIGZpbGVuYW1lICkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBwcmludCgiU0hFTEw6IENyZWF0aW5nICclcy8lcyciICUgKCBmdWxsZGlybmFtZSwgZmlsZW5hbWUgKSkKLSAgICAgICAgICAgIG5ld3BhY2thZ2UgPSBvcGVuKCAiJXMvJXMiICUgKCBmdWxsZGlybmFtZSwgZmlsZW5hbWUgKSwgInciICkKLSAgICAgICAgICAgIHByaW50KCIiIkRFU0NSSVBUSU9OID0gIiIKLVNFQ1RJT04gPSAiIgotQVVUSE9SID0gIiIKLUhPTUVQQUdFID0gIiIKLU1BSU5UQUlORVIgPSAiIgotTElDRU5TRSA9ICJHUEwiCi1QUiA9ICJyMCIKLQotU1JDX1VSSSA9ICIiCi0KLSNpbmhlcml0IGJhc2UKLQotI2RvX2NvbmZpZ3VyZSgpIHsKLSMKLSN9Ci0KLSNkb19jb21waWxlKCkgewotIwotI30KLQotI2RvX3N0YWdlKCkgewotIwotI30KLQotI2RvX2luc3RhbGwoKSB7Ci0jCi0jfQotIiIiLCBmaWxlPW5ld3BhY2thZ2UpCi0gICAgICAgICAgICBuZXdwYWNrYWdlLmNsb3NlKCkKLSAgICAgICAgICAgIG9zLnN5c3RlbSggIiVzICVzLyVzIiAlICggb3MuZW52aXJvbi5nZXQoICJFRElUT1IiICksIGZ1bGxkaXJuYW1lLCBmaWxlbmFtZSApICkKLSAgICBuZXcudXNhZ2UgPSAiPGRpcmVjdG9yeT4gPGZpbGVuYW1lPiIKLQotICAgIGRlZiBwYWNrYWdlKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiRXhlY3V0ZSAncGFja2FnZScgb24gYSBwcm92aWRlZSIiIgotICAgICAgICBzZWxmLmJ1aWxkKCBwYXJhbXMsICJwYWNrYWdlIiApCi0gICAgcGFja2FnZS51c2FnZSA9ICI8cHJvdmlkZWU+IgotCi0gICAgZGVmIHBhc3RlQmluKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiU2VuZCBhIGNvbW1hbmQgKyBvdXRwdXQgYnVmZmVyIHRvIHRoZSBwYXN0ZWJpbiBhdCBodHRwOi8vcmFmYi5uZXQvcGFzdGUiIiIKLSAgICAgICAgaW5kZXggPSBwYXJhbXNbMF0KLSAgICAgICAgY29udGVudHMgPSBzZWxmLl9zaGVsbC5teW91dC5idWZmZXIoIGludCggaW5kZXggKSApCi0gICAgICAgIHNlbmRUb1Bhc3RlYmluKCAib3V0cHV0IG9mICIgKyBwYXJhbXNbMF0sIGNvbnRlbnRzICkKLSAgICBwYXN0ZUJpbi51c2FnZSA9ICI8aW5kZXg+IgotCi0gICAgZGVmIHBhc3RlTG9nKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiU2VuZCB0aGUgbGFzdCBldmVudCBleGNlcHRpb24gZXJyb3IgbG9nIChpZiB0aGVyZSBpcyBvbmUpIHRvIGh0dHA6Ly9yYWZiLm5ldC9wYXN0ZSIiIgotICAgICAgICBpZiBsYXN0X2V4Y2VwdGlvbiBpcyBOb25lOgotICAgICAgICAgICAgcHJpbnQoIlNIRUxMOiBObyBFcnJvcnMgeWV0IChQaGV3KS4uLiIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZWFzb24sIGV2ZW50ID0gbGFzdF9leGNlcHRpb24uYXJncwotICAgICAgICAgICAgcHJpbnQoIlNIRUxMOiBSZWFzb24gZm9yIHRoZSBsYXN0IGVycm9yOiAnJXMnIiAlIHJlYXNvbikKLSAgICAgICAgICAgIGlmICc6JyBpbiByZWFzb246Ci0gICAgICAgICAgICAgICAgbXNnLCBmaWxlbmFtZSA9IHJlYXNvbi5zcGxpdCggJzonICkKLSAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnN0cmlwKCkKLSAgICAgICAgICAgICAgICBwcmludCgiU0hFTEw6IFBhc3RpbmcgbG9nIGZpbGUgdG8gcGFzdGViaW4uLi4iKQotCi0gICAgICAgICAgICAgICAgZmlsZSA9IG9wZW4oIGZpbGVuYW1lICkucmVhZCgpCi0gICAgICAgICAgICAgICAgc2VuZFRvUGFzdGViaW4oICJjb250ZW50cyBvZiAiICsgZmlsZW5hbWUsIGZpbGUgKQotCi0gICAgZGVmIHBhdGNoKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiRXhlY3V0ZSAncGF0Y2gnIGNvbW1hbmQgb24gYSBwcm92aWRlZSIiIgotICAgICAgICBzZWxmLmJ1aWxkKCBwYXJhbXMsICJwYXRjaCIgKQotICAgIHBhdGNoLnVzYWdlID0gIjxwcm92aWRlZT4iCi0KLSAgICBkZWYgcGFyc2UoIHNlbGYsIHBhcmFtcyApOgotICAgICAgICAiIiIoUmUtKXBhcnNlIC5iYiBmaWxlcyBhbmQgY2FsY3VsYXRlIHRoZSBkZXBlbmRlbmN5IGdyYXBoIiIiCi0gICAgICAgIGNvb2tlci5zdGF0dXMgPSBjYWNoZS5DYWNoZURhdGEoY29va2VyLmNhY2hlc19hcnJheSkKLSAgICAgICAgaWdub3JlID0gZGF0YS5nZXRWYXIoIkFTU1VNRV9QUk9WSURFRCIsIGNvb2tlci5jb25maWd1cmF0aW9uLmRhdGEsIDEpIG9yICIiCi0gICAgICAgIGNvb2tlci5zdGF0dXMuaWdub3JlZF9kZXBlbmRlbmNpZXMgPSBzZXQoIGlnbm9yZS5zcGxpdCgpICkKLSAgICAgICAgY29va2VyLmhhbmRsZUNvbGxlY3Rpb25zKCBkYXRhLmdldFZhcigiQkJGSUxFX0NPTExFQ1RJT05TIiwgY29va2VyLmNvbmZpZ3VyYXRpb24uZGF0YSwgMSkgKQotCi0gICAgICAgIChmaWxlbGlzdCwgbWFza2VkKSA9IGNvb2tlci5jb2xsZWN0X2JiZmlsZXMoKQotICAgICAgICBjb29rZXIucGFyc2VfYmJmaWxlcyhmaWxlbGlzdCwgbWFza2VkLCBjb29rZXIubXlQcm9ncmVzc0NhbGxiYWNrKQotICAgICAgICBjb29rZXIuYnVpbGREZXBncmFwaCgpCi0gICAgICAgIGdsb2JhbCBwYXJzZWQKLSAgICAgICAgcGFyc2VkID0gVHJ1ZQotICAgICAgICBwcmludCgpCi0KLSAgICBkZWYgcmVwYXJzZSggc2VsZiwgcGFyYW1zICk6Ci0gICAgICAgICIiIihyZSlQYXJzZSBhIHByb3ZpZGVlJ3MgYmIgZmlsZSIiIgotICAgICAgICBiYmZpbGUgPSBzZWxmLl9maW5kUHJvdmlkZXIoIHBhcmFtc1swXSApCi0gICAgICAgIGlmIGJiZmlsZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHByaW50KCJTSEVMTDogRm91bmQgYmJmaWxlICclcycgZm9yICclcyciICUgKCBiYmZpbGUsIHBhcmFtc1swXSApKQotICAgICAgICAgICAgc2VsZi5maWxlUmVwYXJzZSggWyBiYmZpbGUgXSApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCgiRVJST1I6IE5vdGhpbmcgcHJvdmlkZXMgJyVzJyIgJSBwYXJhbXNbMF0pCi0gICAgcmVwYXJzZS51c2FnZSA9ICI8cHJvdmlkZWU+IgotCi0gICAgZGVmIGdldHZhciggc2VsZiwgcGFyYW1zICk6Ci0gICAgICAgICIiIkR1bXAgdGhlIGNvbnRlbnRzIG9mIGFuIG91dGVyIEJpdEJha2UgZW52aXJvbm1lbnQgdmFyaWFibGUiIiIKLSAgICAgICAgdmFyID0gcGFyYW1zWzBdCi0gICAgICAgIHZhbHVlID0gZGF0YS5nZXRWYXIoIHZhciwgY29va2VyLmNvbmZpZ3VyYXRpb24uZGF0YSwgMSApCi0gICAgICAgIHByaW50KHZhbHVlKQotICAgIGdldHZhci51c2FnZSA9ICI8dmFyaWFibGU+IgotCi0gICAgZGVmIHBlZWsoIHNlbGYsIHBhcmFtcyApOgotICAgICAgICAiIiJEdW1wIGNvbnRlbnRzIG9mIHZhcmlhYmxlIGRlZmluZWQgaW4gcHJvdmlkZWUncyBtZXRhZGF0YSIiIgotICAgICAgICBuYW1lLCB2YXIgPSBwYXJhbXMKLSAgICAgICAgYmJmaWxlID0gc2VsZi5fZmluZFByb3ZpZGVyKCBuYW1lICkKLSAgICAgICAgaWYgYmJmaWxlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgdGhlX2RhdGEgPSBjYWNoZS5DYWNoZS5sb2FkRGF0YUZ1bGwoYmJmaWxlLCBjb29rZXIuY29uZmlndXJhdGlvbi5kYXRhKQotICAgICAgICAgICAgdmFsdWUgPSB0aGVfZGF0YS5nZXRWYXIoIHZhciwgMSApCi0gICAgICAgICAgICBwcmludCh2YWx1ZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCJFUlJPUjogTm90aGluZyBwcm92aWRlcyAnJXMnIiAlIG5hbWUpCi0gICAgcGVlay51c2FnZSA9ICI8cHJvdmlkZWU+IDx2YXJpYWJsZT4iCi0KLSAgICBkZWYgcG9rZSggc2VsZiwgcGFyYW1zICk6Ci0gICAgICAgICIiIlNldCBjb250ZW50cyBvZiB2YXJpYWJsZSBkZWZpbmVkIGluIHByb3ZpZGVlJ3MgbWV0YWRhdGEiIiIKLSAgICAgICAgbmFtZSwgdmFyLCB2YWx1ZSA9IHBhcmFtcwotICAgICAgICBiYmZpbGUgPSBzZWxmLl9maW5kUHJvdmlkZXIoIG5hbWUgKQotICAgICAgICBpZiBiYmZpbGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBwcmludCgiRVJST1I6IFNvcnJ5LCB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgY3VycmVudGx5IGJyb2tlbiIpCi0gICAgICAgICAgICAjZCA9IGNvb2tlci5wa2dkYXRhW2JiZmlsZV0KLSAgICAgICAgICAgICNkYXRhLnNldFZhciggdmFyLCB2YWx1ZSwgZCApCi0KLSAgICAgICAgICAgICMgbWFyayB0aGUgY2hhbmdlIHNlbWkgcGVyc2lzdGFudAotICAgICAgICAgICAgI2Nvb2tlci5wa2dkYXRhLnNldERpcnR5KGJiZmlsZSwgZCkKLSAgICAgICAgICAgICNwcmludCAiT0siCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCgiRVJST1I6IE5vdGhpbmcgcHJvdmlkZXMgJyVzJyIgJSBuYW1lKQotICAgIHBva2UudXNhZ2UgPSAiPHByb3ZpZGVlPiA8dmFyaWFibGU+IDx2YWx1ZT4iCi0KLSAgICBkZWYgcHJpbnRfKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiRHVtcCBhbGwgZmlsZXMgb3IgcHJvdmlkZXJzIiIiCi0gICAgICAgIHdoYXQgPSBwYXJhbXNbMF0KLSAgICAgICAgaWYgd2hhdCA9PSAiZmlsZXMiOgotICAgICAgICAgICAgc2VsZi5fY2hlY2tQYXJzZWQoKQotICAgICAgICAgICAgZm9yIGtleSBpbiBjb29rZXIuc3RhdHVzLnBrZ19mbjogcHJpbnQoa2V5KQotICAgICAgICBlbGlmIHdoYXQgPT0gInByb3ZpZGVycyI6Ci0gICAgICAgICAgICBzZWxmLl9jaGVja1BhcnNlZCgpCi0gICAgICAgICAgICBmb3Iga2V5IGluIGNvb2tlci5zdGF0dXMucHJvdmlkZXJzOiBwcmludChrZXkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCgiVXNhZ2U6IHByaW50ICVzIiAlIHNlbGYucHJpbnRfLnVzYWdlKQotICAgIHByaW50Xy51c2FnZSA9ICI8ZmlsZXN8cHJvdmlkZXJzPiIKLQotICAgIGRlZiBweXRob24oIHNlbGYsIHBhcmFtcyApOgotICAgICAgICAiIiJFbnRlciB0aGUgZXhwZXJ0IG1vZGUgLSBhbiBpbnRlcmFjdGl2ZSBCaXRCYWtlIFB5dGhvbiBJbnRlcnByZXRlciIiIgotICAgICAgICBzeXMucHMxID0gIkVYUEVSVCBCQj4+PiAiCi0gICAgICAgIHN5cy5wczIgPSAiRVhQRVJUIEJCLi4uICIKLSAgICAgICAgaW1wb3J0IGNvZGUKLSAgICAgICAgaW50ZXJwcmV0ZXIgPSBjb2RlLkludGVyYWN0aXZlQ29uc29sZSggZGljdCggZ2xvYmFscygpICkgKQotICAgICAgICBpbnRlcnByZXRlci5pbnRlcmFjdCggIlNIRUxMOiBFeHBlcnQgTW9kZSAtIEJpdEJha2UgUHl0aG9uICVzXG5UeXBlICdoZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiwgcHJlc3MgQ1RSTC1EIHRvIHN3aXRjaCBiYWNrIHRvIEJCU0hFTEwuIiAlIHN5cy52ZXJzaW9uICkKLQotICAgIGRlZiBzaG93ZGF0YSggc2VsZiwgcGFyYW1zICk6Ci0gICAgICAgICIiIkV4ZWN1dGUgJ3Nob3dkYXRhJyBvbiBhIHByb3ZpZGVlIiIiCi0gICAgICAgIGNvb2tlci5zaG93RW52aXJvbm1lbnQoTm9uZSwgcGFyYW1zKQotICAgIHNob3dkYXRhLnVzYWdlID0gIjxwcm92aWRlZT4iCi0KLSAgICBkZWYgc2V0VmFyKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiU2V0IGFuIG91dGVyIEJpdEJha2UgZW52aXJvbm1lbnQgdmFyaWFibGUiIiIKLSAgICAgICAgdmFyLCB2YWx1ZSA9IHBhcmFtcwotICAgICAgICBkYXRhLnNldFZhciggdmFyLCB2YWx1ZSwgY29va2VyLmNvbmZpZ3VyYXRpb24uZGF0YSApCi0gICAgICAgIHByaW50KCJPSyIpCi0gICAgc2V0VmFyLnVzYWdlID0gIjx2YXJpYWJsZT4gPHZhbHVlPiIKLQotICAgIGRlZiByZWJ1aWxkKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiQ2xlYW4gYW5kIHJlYnVpbGQgYSAuYmIgZmlsZSBvciBhIHByb3ZpZGVlIiIiCi0gICAgICAgIHNlbGYuYnVpbGQoIHBhcmFtcywgImNsZWFuIiApCi0gICAgICAgIHNlbGYuYnVpbGQoIHBhcmFtcywgImJ1aWxkIiApCi0gICAgcmVidWlsZC51c2FnZSA9ICI8cHJvdmlkZWU+IgotCi0gICAgZGVmIHNoZWxsKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiRXhlY3V0ZSBhIHNoZWxsIGNvbW1hbmQgYW5kIGR1bXAgdGhlIG91dHB1dCIiIgotICAgICAgICBpZiBwYXJhbXMgIT0gIiI6Ci0gICAgICAgICAgICBwcmludChjb21tYW5kcy5nZXRvdXRwdXQoICIgIi5qb2luKCBwYXJhbXMgKSApKQotICAgIHNoZWxsLnVzYWdlID0gIjwuLi4+IgotCi0gICAgZGVmIHN0YWdlKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiRXhlY3V0ZSAnc3RhZ2UnIG9uIGEgcHJvdmlkZWUiIiIKLSAgICAgICAgc2VsZi5idWlsZCggcGFyYW1zLCAicG9wdWxhdGVfc3RhZ2luZyIgKQotICAgIHN0YWdlLnVzYWdlID0gIjxwcm92aWRlZT4iCi0KLSAgICBkZWYgc3RhdHVzKCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiPGp1c3QgZm9yIHRlc3Rpbmc+IiIiCi0gICAgICAgIHByaW50KCItIiAqIDc4KQotICAgICAgICBwcmludCgiYnVpbGRpbmcgbGlzdCA9ICclcyciICUgY29va2VyLmJ1aWxkaW5nX2xpc3QpCi0gICAgICAgIHByaW50KCJidWlsZCBwYXRoID0gJyVzJyIgJSBjb29rZXIuYnVpbGRfcGF0aCkKLSAgICAgICAgcHJpbnQoImNvbnNpZGVyX21zZ3NfY2FjaGUgPSAnJXMnIiAlIGNvb2tlci5jb25zaWRlcl9tc2dzX2NhY2hlKQotICAgICAgICBwcmludCgiYnVpbGQgc3RhdHMgPSAnJXMnIiAlIGNvb2tlci5zdGF0cykKLSAgICAgICAgaWYgbGFzdF9leGNlcHRpb24gaXMgbm90IE5vbmU6IHByaW50KCJsYXN0X2V4Y2VwdGlvbiA9ICclcyciICUgcmVwciggbGFzdF9leGNlcHRpb24uYXJncyApKQotICAgICAgICBwcmludCgibWVtb3J5IG91dHB1dCBjb250ZW50cyA9ICclcyciICUgc2VsZi5fc2hlbGwubXlvdXQuX2J1ZmZlcikKLQotICAgIGRlZiB0ZXN0KCBzZWxmLCBwYXJhbXMgKToKLSAgICAgICAgIiIiPGp1c3QgZm9yIHRlc3Rpbmc+IiIiCi0gICAgICAgIHByaW50KCJ0ZXN0Q29tbWFuZCBjYWxsZWQgd2l0aCAnJXMnIiAlIHBhcmFtcykKLQotICAgIGRlZiB1bnBhY2soIHNlbGYsIHBhcmFtcyApOgotICAgICAgICAiIiJFeGVjdXRlICd1bnBhY2snIG9uIGEgcHJvdmlkZWUiIiIKLSAgICAgICAgc2VsZi5idWlsZCggcGFyYW1zLCAidW5wYWNrIiApCi0gICAgdW5wYWNrLnVzYWdlID0gIjxwcm92aWRlZT4iCi0KLSAgICBkZWYgd2hpY2goIHNlbGYsIHBhcmFtcyApOgotICAgICAgICAiIiJDb21wdXRlcyB0aGUgcHJvdmlkZXJzIGZvciBhIGdpdmVuIHByb3ZpZGVlIiIiCi0gICAgICAgICMgTmVlZCB0byB1c2UgdGFza0RhdGEgZm9yIHRoaXMgaW5mb3JtYXRpb24KLSAgICAgICAgaXRlbSA9IHBhcmFtc1swXQotCi0gICAgICAgIHNlbGYuX2NoZWNrUGFyc2VkKCkKLQotICAgICAgICBwcmVmZXJyZWQgPSBkYXRhLmdldFZhciggIlBSRUZFUlJFRF9QUk9WSURFUl8lcyIgJSBpdGVtLCBjb29rZXIuY29uZmlndXJhdGlvbi5kYXRhLCAxICkKLSAgICAgICAgaWYgbm90IHByZWZlcnJlZDogcHJlZmVycmVkID0gaXRlbQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGx2LCBsZiwgcHYsIHBmID0gUHJvdmlkZXJzLmZpbmRCZXN0UHJvdmlkZXIocHJlZmVycmVkLCBjb29rZXIuY29uZmlndXJhdGlvbi5kYXRhLCBjb29rZXIuc3RhdHVzKQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBsdiwgbGYsIHB2LCBwZiA9IChOb25lLCkqNAotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHByb3ZpZGVycyA9IGNvb2tlci5zdGF0dXMucHJvdmlkZXJzW2l0ZW1dCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHByaW50KCJTSEVMTDogRVJST1I6IE5vdGhpbmcgcHJvdmlkZXMiLCBwcmVmZXJyZWQpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmb3IgcHJvdmlkZXIgaW4gcHJvdmlkZXJzOgotICAgICAgICAgICAgICAgIGlmIHByb3ZpZGVyID09IHBmOiBwcm92aWRlciA9ICIgKCoqKikgJXMiICUgcHJvdmlkZXIKLSAgICAgICAgICAgICAgICBlbHNlOiAgICAgICAgICAgICAgcHJvdmlkZXIgPSAiICAgICAgICVzIiAlIHByb3ZpZGVyCi0gICAgICAgICAgICAgICAgcHJpbnQocHJvdmlkZXIpCi0gICAgd2hpY2gudXNhZ2UgPSAiPHByb3ZpZGVlPiIKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29tbW9uIGhlbHBlciBmdW5jdGlvbnMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLWRlZiBjb21wbGV0ZUZpbGVQYXRoKCBiYmZpbGUgKToKLSAgICAiIiJHZXQgdGhlIGNvbXBsZXRlIGJiZmlsZSBwYXRoIiIiCi0gICAgaWYgbm90IGNvb2tlci5zdGF0dXM6IHJldHVybiBiYmZpbGUKLSAgICBpZiBub3QgY29va2VyLnN0YXR1cy5wa2dfZm46IHJldHVybiBiYmZpbGUKLSAgICBmb3Iga2V5IGluIGNvb2tlci5zdGF0dXMucGtnX2ZuOgotICAgICAgICBpZiBrZXkuZW5kc3dpdGgoIGJiZmlsZSApOgotICAgICAgICAgICAgcmV0dXJuIGtleQotICAgIHJldHVybiBiYmZpbGUKLQotZGVmIHNlbmRUb1Bhc3RlYmluKCBkZXNjLCBjb250ZW50ICk6Ci0gICAgIiIiU2VuZCBjb250ZW50IHRvIGh0dHA6Ly9vZS5wYXN0ZWJpbi5jb20iIiIKLSAgICBteWRhdGEgPSB7fQotICAgIG15ZGF0YVsibGFuZyJdID0gIlBsYWluIFRleHQiCi0gICAgbXlkYXRhWyJkZXNjIl0gPSBkZXNjCi0gICAgbXlkYXRhWyJjdnRfdGFicyJdID0gIk5vIgotICAgIG15ZGF0YVsibmljayJdID0gIiVzQCVzIiAlICggb3MuZW52aXJvbi5nZXQoICJVU0VSIiwgInVua25vd24iICksIHNvY2tldC5nZXRob3N0bmFtZSgpIG9yICJ1bmtub3duIiApCi0gICAgbXlkYXRhWyJ0ZXh0Il0gPSBjb250ZW50Ci0gICAgcGFyYW1zID0gdXJsbGliLnVybGVuY29kZSggbXlkYXRhICkKLSAgICBoZWFkZXJzID0geyJDb250ZW50LXR5cGUiOiAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiwgIkFjY2VwdCI6ICJ0ZXh0L3BsYWluIn0KLQotICAgIGhvc3QgPSAicmFmYi5uZXQiCi0gICAgY29ubiA9IGh0dHBsaWIuSFRUUENvbm5lY3Rpb24oICIlczo4MCIgJSBob3N0ICkKLSAgICBjb25uLnJlcXVlc3QoIlBPU1QiLCAiL3Bhc3RlL3Bhc3RlLnBocCIsIHBhcmFtcywgaGVhZGVycyApCi0KLSAgICByZXNwb25zZSA9IGNvbm4uZ2V0cmVzcG9uc2UoKQotICAgIGNvbm4uY2xvc2UoKQotCi0gICAgaWYgcmVzcG9uc2Uuc3RhdHVzID09IDMwMjoKLSAgICAgICAgbG9jYXRpb24gPSByZXNwb25zZS5nZXRoZWFkZXIoICJsb2NhdGlvbiIgKSBvciAidW5rbm93biIKLSAgICAgICAgcHJpbnQoIlNIRUxMOiBQYXN0ZWQgdG8gaHR0cDovLyVzJXMiICUgKCBob3N0LCBsb2NhdGlvbiApKQotICAgIGVsc2U6Ci0gICAgICAgIHByaW50KCJFUlJPUjogJXMgJXMiICUgKCByZXNwb25zZS5zdGF0dXMsIHJlc3BvbnNlLnJlYXNvbiApKQotCi1kZWYgY29tcGxldGVyKCB0ZXh0LCBzdGF0ZSApOgotICAgICIiIlJldHVybiBhIHBvc3NpYmxlIHJlYWRsaW5lIGNvbXBsZXRpb24iIiIKLSAgICBkZWJ1Z091dCggImNvbXBsZXRlciBjYWxsZWQgd2l0aCB0ZXh0PSclcycsIHN0YXRlPSclZCciICUgKCB0ZXh0LCBzdGF0ZSApICkKLQotICAgIGlmIHN0YXRlID09IDA6Ci0gICAgICAgIGxpbmUgPSByZWFkbGluZS5nZXRfbGluZV9idWZmZXIoKQotICAgICAgICBpZiAiICIgaW4gbGluZToKLSAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0KCkKLSAgICAgICAgICAgICMgd2UgYXJlIGluIHNlY29uZCAob3IgbW9yZSkgYXJndW1lbnQKLSAgICAgICAgICAgIGlmIGxpbmVbMF0gaW4gY21kcyBhbmQgaGFzYXR0ciggY21kc1tsaW5lWzBdXVswXSwgInVzYWdlIiApOiAjIGtub3duIGNvbW1hbmQgYW5kIHVzYWdlCi0gICAgICAgICAgICAgICAgdSA9IGdldGF0dHIoIGNtZHNbbGluZVswXV1bMF0sICJ1c2FnZSIgKS5zcGxpdCgpWzBdCi0gICAgICAgICAgICAgICAgaWYgdSA9PSAiPHZhcmlhYmxlPiI6Ci0gICAgICAgICAgICAgICAgICAgIGFsbG1hdGNoZXMgPSBjb29rZXIuY29uZmlndXJhdGlvbi5kYXRhLmtleXMoKQotICAgICAgICAgICAgICAgIGVsaWYgdSA9PSAiPGJiZmlsZT4iOgotICAgICAgICAgICAgICAgICAgICBpZiBjb29rZXIuc3RhdHVzLnBrZ19mbiBpcyBOb25lOiBhbGxtYXRjaGVzID0gWyAiKE5vIE1hdGNoZXMgQXZhaWxhYmxlLiBQYXJzZWQgeWV0PykiIF0KLSAgICAgICAgICAgICAgICAgICAgZWxzZTogYWxsbWF0Y2hlcyA9IFsgeC5zcGxpdCgiLyIpWy0xXSBmb3IgeCBpbiBjb29rZXIuc3RhdHVzLnBrZ19mbiBdCi0gICAgICAgICAgICAgICAgZWxpZiB1ID09ICI8cHJvdmlkZWU+IjoKLSAgICAgICAgICAgICAgICAgICAgaWYgY29va2VyLnN0YXR1cy5wa2dfZm4gaXMgTm9uZTogYWxsbWF0Y2hlcyA9IFsgIihObyBNYXRjaGVzIEF2YWlsYWJsZS4gUGFyc2VkIHlldD8pIiBdCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6IGFsbG1hdGNoZXMgPSBjb29rZXIuc3RhdHVzLnByb3ZpZGVycy5pdGVya2V5cygpCi0gICAgICAgICAgICAgICAgZWxzZTogYWxsbWF0Y2hlcyA9IFsgIihObyB0YWIgY29tcGxldGlvbiBhdmFpbGFibGUgZm9yIHRoaXMgY29tbWFuZCkiIF0KLSAgICAgICAgICAgIGVsc2U6IGFsbG1hdGNoZXMgPSBbICIoTm8gdGFiIGNvbXBsZXRpb24gYXZhaWxhYmxlIGZvciB0aGlzIGNvbW1hbmQpIiBdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIHdlIGFyZSBpbiBmaXJzdCBhcmd1bWVudAotICAgICAgICAgICAgYWxsbWF0Y2hlcyA9IGNtZHMuaXRlcmtleXMoKQotCi0gICAgICAgIGNvbXBsZXRlci5tYXRjaGVzID0gWyB4IGZvciB4IGluIGFsbG1hdGNoZXMgaWYgeFs6bGVuKHRleHQpXSA9PSB0ZXh0IF0KLSAgICAgICAgI3ByaW50ICJjb21wbGV0ZXIubWF0Y2hlcyA9ICclcyciICUgY29tcGxldGVyLm1hdGNoZXMKLSAgICBpZiBsZW4oIGNvbXBsZXRlci5tYXRjaGVzICkgPiBzdGF0ZToKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRlci5tYXRjaGVzW3N0YXRlXQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiBOb25lCi0KLWRlZiBkZWJ1Z091dCggdGV4dCApOgotICAgIGlmIGRlYnVnOgotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCAiKCAlcyApXG4iICUgdGV4dCApCi0KLWRlZiBjb2x1bW5pemUoIGFsaXN0LCB3aWR0aCA9IDgwICk6Ci0gICAgIiIiCi0gICAgQSB3b3JkLXdyYXAgZnVuY3Rpb24gdGhhdCBwcmVzZXJ2ZXMgZXhpc3RpbmcgbGluZSBicmVha3MKLSAgICBhbmQgbW9zdCBzcGFjZXMgaW4gdGhlIHRleHQuIEV4cGVjdHMgdGhhdCBleGlzdGluZyBsaW5lCi0gICAgYnJlYWtzIGFyZSBwb3NpeCBuZXdsaW5lcyAoXG4pLgotICAgICIiIgotICAgIHJldHVybiByZWR1Y2UobGFtYmRhIGxpbmUsIHdvcmQsIHdpZHRoPXdpZHRoOiAnJXMlcyVzJyAlCi0gICAgICAgICAgICAgICAgICAobGluZSwKLSAgICAgICAgICAgICAgICAgICAnIFxuJ1sobGVuKGxpbmVbbGluZS5yZmluZCgnXG4nKSsxOl0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgKyBsZW4od29yZC5zcGxpdCgnXG4nLCAxKVswXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA+PSB3aWR0aCldLAotICAgICAgICAgICAgICAgICAgIHdvcmQpLAotICAgICAgICAgICAgICAgICAgYWxpc3QKLSAgICAgICAgICAgICAgICAgKQotCi1kZWYgZ2xvYmZpbHRlciggbmFtZXMsIHBhdHRlcm4gKToKLSAgICByZXR1cm4gZm5tYXRjaC5maWx0ZXIoIG5hbWVzLCBwYXR0ZXJuICkKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ2xhc3MgTWVtb3J5T3V0cHV0Ci0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi1jbGFzcyBNZW1vcnlPdXRwdXQ6Ci0gICAgIiIiRmlsZS1saWtlIG91dHB1dCBjbGFzcyBidWZmZXJpbmcgdGhlIG91dHB1dCBvZiB0aGUgbGFzdCAxMCBjb21tYW5kcyIiIgotICAgIGRlZiBfX2luaXRfXyggc2VsZiwgZGVsZWdhdGUgKToKLSAgICAgICAgc2VsZi5kZWxlZ2F0ZSA9IGRlbGVnYXRlCi0gICAgICAgIHNlbGYuX2J1ZmZlciA9IFtdCi0gICAgICAgIHNlbGYudGV4dCA9IFtdCi0gICAgICAgIHNlbGYuX2NvbW1hbmQgPSBOb25lCi0KLSAgICBkZWYgc3RhcnRDb21tYW5kKCBzZWxmLCBjb21tYW5kICk6Ci0gICAgICAgIHNlbGYuX2NvbW1hbmQgPSBjb21tYW5kCi0gICAgICAgIHNlbGYudGV4dCA9IFtdCi0gICAgZGVmIGVuZENvbW1hbmQoIHNlbGYgKToKLSAgICAgICAgaWYgc2VsZi5fY29tbWFuZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGlmIGxlbiggc2VsZi5fYnVmZmVyICkgPT0gMTA6IGRlbCBzZWxmLl9idWZmZXJbMF0KLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlci5hcHBlbmQoICggc2VsZi5fY29tbWFuZCwgc2VsZi50ZXh0ICkgKQotICAgIGRlZiByZW1vdmVMYXN0KCBzZWxmICk6Ci0gICAgICAgIGlmIHNlbGYuX2J1ZmZlcjoKLSAgICAgICAgICAgIGRlbCBzZWxmLl9idWZmZXJbIGxlbiggc2VsZi5fYnVmZmVyICkgLSAxIF0KLSAgICAgICAgc2VsZi50ZXh0ID0gW10KLSAgICAgICAgc2VsZi5fY29tbWFuZCA9IE5vbmUKLSAgICBkZWYgbGFzdEJ1ZmZlciggc2VsZiApOgotICAgICAgICBpZiBzZWxmLl9idWZmZXI6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyWyBsZW4oIHNlbGYuX2J1ZmZlciApIC0xIF1bMV0KLSAgICBkZWYgYnVmZmVyZWRDb21tYW5kcyggc2VsZiApOgotICAgICAgICByZXR1cm4gWyBjbWQgZm9yIGNtZCwgb3V0cHV0IGluIHNlbGYuX2J1ZmZlciBdCi0gICAgZGVmIGJ1ZmZlciggc2VsZiwgaSApOgotICAgICAgICBpZiBpIDwgbGVuKCBzZWxmLl9idWZmZXIgKToKLSAgICAgICAgICAgIHJldHVybiAiQkI+PiAlc1xuJXMiICUgKCBzZWxmLl9idWZmZXJbaV1bMF0sICIiLmpvaW4oIHNlbGYuX2J1ZmZlcltpXVsxXSApICkKLSAgICAgICAgZWxzZTogcmV0dXJuICJFUlJPUjogSW52YWxpZCBidWZmZXIgbnVtYmVyLiBCdWZmZXIgbmVlZHMgdG8gYmUgaW4gKDAsICVkKSIgJSAoIGxlbiggc2VsZi5fYnVmZmVyICkgLSAxICkKLSAgICBkZWYgd3JpdGUoIHNlbGYsIHRleHQgKToKLSAgICAgICAgaWYgc2VsZi5fY29tbWFuZCBpcyBub3QgTm9uZSBhbmQgdGV4dCAhPSAiQkI+PiAiOiBzZWxmLnRleHQuYXBwZW5kKCB0ZXh0ICkKLSAgICAgICAgaWYgc2VsZi5kZWxlZ2F0ZSBpcyBub3QgTm9uZTogc2VsZi5kZWxlZ2F0ZS53cml0ZSggdGV4dCApCi0gICAgZGVmIGZsdXNoKCBzZWxmICk6Ci0gICAgICAgIHJldHVybiBzZWxmLmRlbGVnYXRlLmZsdXNoKCkKLSAgICBkZWYgZmlsZW5vKCBzZWxmICk6Ci0gICAgICAgIHJldHVybiBzZWxmLmRlbGVnYXRlLmZpbGVubygpCi0gICAgZGVmIGlzYXR0eSggc2VsZiApOgotICAgICAgICByZXR1cm4gc2VsZi5kZWxlZ2F0ZS5pc2F0dHkoKQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDbGFzcyBCaXRCYWtlU2hlbGwKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLWNsYXNzIEJpdEJha2VTaGVsbDoKLQotICAgIGRlZiBfX2luaXRfXyggc2VsZiApOgotICAgICAgICAiIiJSZWdpc3RlciBjb21tYW5kcyBhbmQgc2V0IHVwIHJlYWRsaW5lIiIiCi0gICAgICAgIHNlbGYuY29tbWFuZFEgPSBRdWV1ZS5RdWV1ZSgpCi0gICAgICAgIHNlbGYuY29tbWFuZHMgPSBCaXRCYWtlU2hlbGxDb21tYW5kcyggc2VsZiApCi0gICAgICAgIHNlbGYubXlvdXQgPSBNZW1vcnlPdXRwdXQoIHN5cy5zdGRvdXQgKQotICAgICAgICBzZWxmLmhpc3RvcnlmaWxlbmFtZSA9IG9zLnBhdGguZXhwYW5kdXNlciggIn4vLmJic2hfaGlzdG9yeSIgKQotICAgICAgICBzZWxmLnN0YXJ0dXBmaWxlbmFtZSA9IG9zLnBhdGguZXhwYW5kdXNlciggIn4vLmJic2hfc3RhcnR1cCIgKQotCi0gICAgICAgIHJlYWRsaW5lLnNldF9jb21wbGV0ZXIoIGNvbXBsZXRlciApCi0gICAgICAgIHJlYWRsaW5lLnNldF9jb21wbGV0ZXJfZGVsaW1zKCAiICIgKQotICAgICAgICByZWFkbGluZS5wYXJzZV9hbmRfYmluZCgidGFiOiBjb21wbGV0ZSIpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVhZGxpbmUucmVhZF9oaXN0b3J5X2ZpbGUoIHNlbGYuaGlzdG9yeWZpbGVuYW1lICkKLSAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICBwYXNzICAjIEl0IGRvZXNuJ3QgZXhpc3QgeWV0LgotCi0gICAgICAgIHByaW50KF9fY3JlZGl0c19fKQotCi0gICAgZGVmIGNsZWFudXAoIHNlbGYgKToKLSAgICAgICAgIiIiV3JpdGUgcmVhZGxpbmUgaGlzdG9yeSBhbmQgY2xlYW4gdXAgcmVzb3VyY2VzIiIiCi0gICAgICAgIGRlYnVnT3V0KCAid3JpdGluZyBjb21tYW5kIGhpc3RvcnkiICkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVhZGxpbmUud3JpdGVfaGlzdG9yeV9maWxlKCBzZWxmLmhpc3RvcnlmaWxlbmFtZSApCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHByaW50KCJTSEVMTDogVW5hYmxlIHRvIHNhdmUgY29tbWFuZCBoaXN0b3J5IikKLQotICAgIGRlZiByZWdpc3RlckNvbW1hbmQoIHNlbGYsIGNvbW1hbmQsIGZ1bmN0aW9uLCBudW1wYXJhbXMgPSAwLCB1c2FnZSA9ICIiLCBoZWxwdGV4dCA9ICIiICk6Ci0gICAgICAgICIiIlJlZ2lzdGVyIGEgY29tbWFuZCIiIgotICAgICAgICBpZiB1c2FnZSA9PSAiIjogdXNhZ2UgPSBjb21tYW5kCi0gICAgICAgIGlmIGhlbHB0ZXh0ID09ICIiOiBoZWxwdGV4dCA9IGZ1bmN0aW9uLl9fZG9jX18gb3IgIjxub3QgeWV0IGRvY3VtZW50ZWQ+IgotICAgICAgICBjbWRzW2NvbW1hbmRdID0gKCBmdW5jdGlvbiwgbnVtcGFyYW1zLCB1c2FnZSwgaGVscHRleHQgKQotCi0gICAgZGVmIHByb2Nlc3NDb21tYW5kKCBzZWxmLCBjb21tYW5kLCBwYXJhbXMgKToKLSAgICAgICAgIiIiUHJvY2VzcyBhIGNvbW1hbmQuIENoZWNrIG51bWJlciBvZiBwYXJhbXMgYW5kIHByaW50IGEgdXNhZ2Ugc3RyaW5nLCBpZiBhcHByb3ByaWF0ZSIiIgotICAgICAgICBkZWJ1Z091dCggInByb2Nlc3NpbmcgY29tbWFuZCAnJXMnLi4uIiAlIGNvbW1hbmQgKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmdW5jdGlvbiwgbnVtcGFyYW1zLCB1c2FnZSwgaGVscHRleHQgPSBjbWRzW2NvbW1hbmRdCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHByaW50KCJTSEVMTDogRVJST1I6ICclcycgY29tbWFuZCBpcyBub3QgYSB2YWxpZCBjb21tYW5kLiIgJSBjb21tYW5kKQotICAgICAgICAgICAgc2VsZi5teW91dC5yZW1vdmVMYXN0KCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIChudW1wYXJhbXMgIT0gLTEpIGFuZCAobm90IGxlbiggcGFyYW1zICkgPT0gbnVtcGFyYW1zKToKLSAgICAgICAgICAgICAgICBwcmludCgiVXNhZ2U6ICclcyciICUgdXNhZ2UpCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9uKCBzZWxmLmNvbW1hbmRzLCBwYXJhbXMgKQotICAgICAgICAgICAgZGVidWdPdXQoICJyZXN1bHQgd2FzICclcyciICUgcmVzdWx0ICkKLQotICAgIGRlZiBwcm9jZXNzU3RhcnR1cEZpbGUoIHNlbGYgKToKLSAgICAgICAgIiIiUmVhZCBhbmQgZXhlY3V0ZSBhbGwgY29tbWFuZHMgZm91bmQgaW4gJEhPTUUvLmJic2hfc3RhcnR1cCIiIgotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyggc2VsZi5zdGFydHVwZmlsZW5hbWUgKToKLSAgICAgICAgICAgIHN0YXJ0dXBmaWxlID0gb3Blbiggc2VsZi5zdGFydHVwZmlsZW5hbWUsICJyIiApCi0gICAgICAgICAgICBmb3IgY21kbGluZSBpbiBzdGFydHVwZmlsZToKLSAgICAgICAgICAgICAgICBkZWJ1Z091dCggInByb2Nlc3Npbmcgc3RhcnR1cCBsaW5lICclcyciICUgY21kbGluZSApCi0gICAgICAgICAgICAgICAgaWYgbm90IGNtZGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgInwiIGluIGNtZGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KCJFUlJPUjogJ3wnIGluIHN0YXJ0dXAgZmlsZSBpcyBub3QgYWxsb3dlZC4gSWdub3JpbmcgbGluZSIpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgc2VsZi5jb21tYW5kUS5wdXQoIGNtZGxpbmUuc3RyaXAoKSApCi0KLSAgICBkZWYgbWFpbiggc2VsZiApOgotICAgICAgICAiIiJUaGUgbWFpbiBjb21tYW5kIGxvb3AiIiIKLSAgICAgICAgd2hpbGUgbm90IGxlYXZlX21haW5sb29wOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGlmIHNlbGYuY29tbWFuZFEuZW1wdHkoKToKLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHNlbGYubXlvdXQuZGVsZWdhdGUKLSAgICAgICAgICAgICAgICAgICAgY21kbGluZSA9IHJhd19pbnB1dCggIkJCPj4gIiApCi0gICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzZWxmLm15b3V0Ci0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgY21kbGluZSA9IHNlbGYuY29tbWFuZFEuZ2V0KCkKLSAgICAgICAgICAgICAgICBpZiBjbWRsaW5lOgotICAgICAgICAgICAgICAgICAgICBhbGxDb21tYW5kcyA9IGNtZGxpbmUuc3BsaXQoICc7JyApCi0gICAgICAgICAgICAgICAgICAgIGZvciBjb21tYW5kIGluIGFsbENvbW1hbmRzOgotICAgICAgICAgICAgICAgICAgICAgICAgcGlwZWNtZCA9IE5vbmUKLSAgICAgICAgICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAgICAgICAgICMgc3BlY2lhbCBjYXNlIGZvciBleHBlcnQgbW9kZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29tbWFuZCA9PSAncHl0aG9uJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gc2VsZi5teW91dC5kZWxlZ2F0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzc0NvbW1hbmQoIGNvbW1hbmQsICIiICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gc2VsZi5teW91dAotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm15b3V0LnN0YXJ0Q29tbWFuZCggY29tbWFuZCApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ3wnIGluIGNvbW1hbmQ6ICMgZGlzYWJsZSBvdXRwdXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCwgcGlwZWNtZCA9IGNvbW1hbmQuc3BsaXQoICd8JyApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlID0gc2VsZi5teW91dC5kZWxlZ2F0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm15b3V0LmRlbGVnYXRlID0gTm9uZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VucyA9IHNobGV4LnNwbGl0KCBjb21tYW5kLCBUcnVlICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3NDb21tYW5kKCB0b2tlbnNbMF0sIHRva2Vuc1sxOl0gb3IgIiIgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubXlvdXQuZW5kQ29tbWFuZCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGlwZWNtZCBpcyBub3QgTm9uZTogIyByZXN0b3JlIG91dHB1dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm15b3V0LmRlbGVnYXRlID0gZGVsZWdhdGUKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlID0gcG9wZW4yLlBvcGVuNCggcGlwZWNtZCApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcGUudG9jaGlsZC53cml0ZSggIlxuIi5qb2luKCBzZWxmLm15b3V0Lmxhc3RCdWZmZXIoKSApICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlwZS50b2NoaWxkLmNsb3NlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSggcGlwZS5mcm9tY2hpbGQucmVhZCgpICkKLSAgICAgICAgICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgIGV4Y2VwdCBFT0ZFcnJvcjoKLSAgICAgICAgICAgICAgICBwcmludCgpCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICAgICAgcHJpbnQoKQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBTdGFydCBmdW5jdGlvbiAtIGNhbGxlZCBmcm9tIHRoZSBCaXRCYWtlIGNvbW1hbmQgbGluZSB1dGlsaXR5Ci0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi1kZWYgc3RhcnQoIGFDb29rZXIgKToKLSAgICBnbG9iYWwgY29va2VyCi0gICAgY29va2VyID0gYUNvb2tlcgotICAgIGJic2hlbGwgPSBCaXRCYWtlU2hlbGwoKQotICAgIGJic2hlbGwucHJvY2Vzc1N0YXJ0dXBGaWxlKCkKLSAgICBiYnNoZWxsLm1haW4oKQotICAgIGJic2hlbGwuY2xlYW51cCgpCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgcHJpbnQoIlNIRUxMOiBTb3JyeSwgdGhpcyBwcm9ncmFtIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSBCaXRCYWtlLiIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZXZlbnQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZXZlbnQucHkKaW5kZXggYzdlYjFmZS4uZDNhNWY2MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2V2ZW50LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9ldmVudC5weQpAQCAtMzAsMjggKzMwLDQ1IEBACiBpbXBvcnQgcGlja2xlCiBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IE1vY2sKIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgY2FsbAorZnJvbSBiYi5tc2cgaW1wb3J0IEJCTG9nRm9ybWF0dGVyCiAKIAotY2xhc3MgRXZlbnRRdWV1ZVN0dWIoKToKK2NsYXNzIEV2ZW50UXVldWVTdHViQmFzZShvYmplY3QpOgorICAgICIiIiBCYXNlIGNsYXNzIGZvciBFdmVudFF1ZXVlU3R1YiBjbGFzc2VzICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5ldmVudF9jYWxscyA9IFtdCisgICAgICAgIHJldHVybgorCisgICAgZGVmIF9zdG9yZV9ldmVudF9kYXRhX3N0cmluZyhzZWxmLCBldmVudCk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGxvZ2dpbmcuTG9nUmVjb3JkKToKKyAgICAgICAgICAgIGZvcm1hdHRlciA9IEJCTG9nRm9ybWF0dGVyKCIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIpCisgICAgICAgICAgICBzZWxmLmV2ZW50X2NhbGxzLmFwcGVuZChmb3JtYXR0ZXIuZm9ybWF0KGV2ZW50KSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZXZlbnRfY2FsbHMuYXBwZW5kKGJiLmV2ZW50LmdldE5hbWUoZXZlbnQpKQorICAgICAgICByZXR1cm4KKworCitjbGFzcyBFdmVudFF1ZXVlU3R1YihFdmVudFF1ZXVlU3R1YkJhc2UpOgogICAgICIiIiBDbGFzcyB1c2VkIGFzIHNwZWNpZmljYXRpb24gZm9yIFVJIGV2ZW50IGhhbmRsZXIgcXVldWUgc3R1YiBvYmplY3RzICIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuCisgICAgICAgIHN1cGVyKEV2ZW50UXVldWVTdHViLCBzZWxmKS5fX2luaXRfXygpCiAKICAgICBkZWYgc2VuZChzZWxmLCBldmVudCk6Ci0gICAgICAgIHJldHVybgorICAgICAgICBzdXBlcihFdmVudFF1ZXVlU3R1Yiwgc2VsZikuX3N0b3JlX2V2ZW50X2RhdGFfc3RyaW5nKGV2ZW50KQogCiAKLWNsYXNzIFBpY2tsZUV2ZW50UXVldWVTdHViKCk6CitjbGFzcyBQaWNrbGVFdmVudFF1ZXVlU3R1YihFdmVudFF1ZXVlU3R1YkJhc2UpOgogICAgICIiIiBDbGFzcyB1c2VkIGFzIHNwZWNpZmljYXRpb24gZm9yIFVJIGV2ZW50IGhhbmRsZXIgcXVldWUgc3R1YiBvYmplY3RzCiAgICAgICAgIHdpdGggc2VuZHBpY2tsZSBtZXRob2QgIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICByZXR1cm4KKyAgICAgICAgc3VwZXIoUGlja2xlRXZlbnRRdWV1ZVN0dWIsIHNlbGYpLl9faW5pdF9fKCkKIAogICAgIGRlZiBzZW5kcGlja2xlKHNlbGYsIHBpY2tsZWRfZXZlbnQpOgotICAgICAgICByZXR1cm4KKyAgICAgICAgZXZlbnQgPSBwaWNrbGUubG9hZHMocGlja2xlZF9ldmVudCkKKyAgICAgICAgc3VwZXIoUGlja2xlRXZlbnRRdWV1ZVN0dWIsIHNlbGYpLl9zdG9yZV9ldmVudF9kYXRhX3N0cmluZyhldmVudCkKIAogCi1jbGFzcyBVSUNsaWVudFN0dWIoKToKK2NsYXNzIFVJQ2xpZW50U3R1YihvYmplY3QpOgogICAgICIiIiBDbGFzcyB1c2VkIGFzIHNwZWNpZmljYXRpb24gZm9yIFVJIGV2ZW50IGhhbmRsZXIgc3R1YiBvYmplY3RzICIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgc2VsZi5ldmVudCA9IE5vbmUKQEAgLTU5LDcgKzc2LDcgQEAKIAogY2xhc3MgRXZlbnRIYW5kbGluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIiBFdmVudCBoYW5kbGluZyB0ZXN0IGNsYXNzICIiIgotICAgIF90aHJlYWRsb2NrX3Rlc3RfY2FsbHMgPSBbXQorCiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3RfcHJvY2VzcyA9IE1vY2soKQpAQCAtMTc5LDYgKzE5NiwzMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3Rlc3RfcHJvY2Vzcy5ldmVudF9oYW5kbGVyMi5jYWxsX2FyZ3NfbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9ldmVudF9oYW5kbGVyMikKIAorICAgIGRlZiB0ZXN0X2NsYXNzX2hhbmRsZXJfZmlsdGVycyhzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgZmlsdGVycyBmb3IgY2xhc3MgaGFuZGxlcnMgIiIiCisgICAgICAgIG1hc2sgPSBbImJiLmV2ZW50Lk9wZXJhdGlvblN0YXJ0ZWQiXQorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZWdpc3RlcigiZXZlbnRfaGFuZGxlcjEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X3Byb2Nlc3MuZXZlbnRfaGFuZGxlcjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBiYi5ldmVudC5SZWdpc3RlcmVkKQorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZWdpc3RlcigiZXZlbnRfaGFuZGxlcjIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X3Byb2Nlc3MuZXZlbnRfaGFuZGxlcjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIqIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGJiLmV2ZW50LlJlZ2lzdGVyZWQpCisgICAgICAgIGJiLmV2ZW50LnNldF9ldmVudGZpbHRlcigKKyAgICAgICAgICAgIGxhbWJkYSBuYW1lLCBoYW5kbGVyLCBldmVudCwgZCA6CisgICAgICAgICAgICBuYW1lID09ICdldmVudF9oYW5kbGVyMicgYW5kCisgICAgICAgICAgICBiYi5ldmVudC5nZXROYW1lKGV2ZW50KSA9PSAiT3BlcmF0aW9uU3RhcnRlZCIpCisgICAgICAgIGV2ZW50MSA9IGJiLmV2ZW50Lk9wZXJhdGlvblN0YXJ0ZWQoKQorICAgICAgICBldmVudDIgPSBiYi5ldmVudC5PcGVyYXRpb25Db21wbGV0ZWQodG90YWw9MTIzKQorICAgICAgICBiYi5ldmVudC5maXJlX2NsYXNzX2hhbmRsZXJzKGV2ZW50MSwgTm9uZSkKKyAgICAgICAgYmIuZXZlbnQuZmlyZV9jbGFzc19oYW5kbGVycyhldmVudDIsIE5vbmUpCisgICAgICAgIGJiLmV2ZW50LmZpcmVfY2xhc3NfaGFuZGxlcnMoZXZlbnQyLCBOb25lKQorICAgICAgICBleHBlY3RlZF9ldmVudF9oYW5kbGVyMSA9IFtdCisgICAgICAgIGV4cGVjdGVkX2V2ZW50X2hhbmRsZXIyID0gW2NhbGwoZXZlbnQxKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl90ZXN0X3Byb2Nlc3MuZXZlbnRfaGFuZGxlcjEuY2FsbF9hcmdzX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZXZlbnRfaGFuZGxlcjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGVzdF9wcm9jZXNzLmV2ZW50X2hhbmRsZXIyLmNhbGxfYXJnc19saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V2ZW50X2hhbmRsZXIyKQorCiAgICAgZGVmIHRlc3RfY2hhbmdlX2hhbmRsZXJfZXZlbnRfbWFwcGluZyhzZWxmKToKICAgICAgICAgIiIiIFRlc3QgY2hhbmdpbmcgdGhlIGV2ZW50IG1hcHBpbmcgZm9yIGNsYXNzIGhhbmRsZXJzICIiIgogICAgICAgICBldmVudDEgPSBiYi5ldmVudC5PcGVyYXRpb25TdGFydGVkKCkKQEAgLTE5Niw4ICsyNDAsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKQogCiAgICAgICAgICMgdW5yZWdpc3RlciBoYW5kbGVyIGFuZCByZWdpc3RlciBpdCBvbmx5IGZvciBPcGVyYXRpb25TdGFydGVkCi0gICAgICAgIHJlc3VsdCA9IGJiLmV2ZW50LnJlbW92ZSgiZXZlbnRfaGFuZGxlcjEiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdGVzdF9wcm9jZXNzLmV2ZW50X2hhbmRsZXIxKQorICAgICAgICBiYi5ldmVudC5yZW1vdmUoImV2ZW50X2hhbmRsZXIxIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RfcHJvY2Vzcy5ldmVudF9oYW5kbGVyMSkKICAgICAgICAgbWFzayA9IFsiYmIuZXZlbnQuT3BlcmF0aW9uU3RhcnRlZCJdCiAgICAgICAgIHJlc3VsdCA9IGJiLmV2ZW50LnJlZ2lzdGVyKCJldmVudF9oYW5kbGVyMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RfcHJvY2Vzcy5ldmVudF9oYW5kbGVyMSwKQEAgLTIxMCw4ICsyNTQsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKQogCiAgICAgICAgICMgdW5yZWdpc3RlciBoYW5kbGVyIGFuZCByZWdpc3RlciBpdCBvbmx5IGZvciBPcGVyYXRpb25Db21wbGV0ZWQKLSAgICAgICAgcmVzdWx0ID0gYmIuZXZlbnQucmVtb3ZlKCJldmVudF9oYW5kbGVyMSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X3Byb2Nlc3MuZXZlbnRfaGFuZGxlcjEpCisgICAgICAgIGJiLmV2ZW50LnJlbW92ZSgiZXZlbnRfaGFuZGxlcjEiLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdGVzdF9wcm9jZXNzLmV2ZW50X2hhbmRsZXIxKQogICAgICAgICBtYXNrID0gWyJiYi5ldmVudC5PcGVyYXRpb25Db21wbGV0ZWQiXQogICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZWdpc3RlcigiZXZlbnRfaGFuZGxlcjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X3Byb2Nlc3MuZXZlbnRfaGFuZGxlcjEsCkBAIC0yNTksNiArMzAzLDYxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGVzdF91aTIuZXZlbnQuc2VuZHBpY2tsZS5jYWxsX2FyZ3NfbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKIAorICAgIGRlZiB0ZXN0X3VpX2hhbmRsZXJfbWFza19maWx0ZXIoc2VsZik6CisgICAgICAgICIiIiBUZXN0IGZpbHRlcnMgZm9yIFVJIGhhbmRsZXJzICIiIgorICAgICAgICBtYXNrID0gWyJiYi5ldmVudC5PcGVyYXRpb25TdGFydGVkIl0KKyAgICAgICAgZGVidWdfZG9tYWlucyA9IHt9CisgICAgICAgIHNlbGYuX3Rlc3RfdWkxLmV2ZW50ID0gTW9jayhzcGVjX3NldD1FdmVudFF1ZXVlU3R1YikKKyAgICAgICAgcmVzdWx0ID0gYmIuZXZlbnQucmVnaXN0ZXJfVUlIaGFuZGxlcihzZWxmLl90ZXN0X3VpMSwgbWFpbnVpPVRydWUpCisgICAgICAgIGJiLmV2ZW50LnNldF9VSUhtYXNrKHJlc3VsdCwgbG9nZ2luZy5JTkZPLCBkZWJ1Z19kb21haW5zLCBtYXNrKQorICAgICAgICBzZWxmLl90ZXN0X3VpMi5ldmVudCA9IE1vY2soc3BlY19zZXQ9UGlja2xlRXZlbnRRdWV1ZVN0dWIpCisgICAgICAgIHJlc3VsdCA9IGJiLmV2ZW50LnJlZ2lzdGVyX1VJSGhhbmRsZXIoc2VsZi5fdGVzdF91aTIsIG1haW51aT1UcnVlKQorICAgICAgICBiYi5ldmVudC5zZXRfVUlIbWFzayhyZXN1bHQsIGxvZ2dpbmcuSU5GTywgZGVidWdfZG9tYWlucywgbWFzaykKKworICAgICAgICBldmVudDEgPSBiYi5ldmVudC5PcGVyYXRpb25TdGFydGVkKCkKKyAgICAgICAgZXZlbnQyID0gYmIuZXZlbnQuT3BlcmF0aW9uQ29tcGxldGVkKHRvdGFsPTEpCisKKyAgICAgICAgYmIuZXZlbnQuZmlyZV91aV9oYW5kbGVycyhldmVudDEsIE5vbmUpCisgICAgICAgIGJiLmV2ZW50LmZpcmVfdWlfaGFuZGxlcnMoZXZlbnQyLCBOb25lKQorICAgICAgICBleHBlY3RlZCA9IFtjYWxsKGV2ZW50MSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGVzdF91aTEuZXZlbnQuc2VuZC5jYWxsX2FyZ3NfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKKyAgICAgICAgZXhwZWN0ZWQgPSBbY2FsbChwaWNrbGUuZHVtcHMoZXZlbnQxKSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGVzdF91aTIuZXZlbnQuc2VuZHBpY2tsZS5jYWxsX2FyZ3NfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3VpX2hhbmRsZXJfbG9nX2ZpbHRlcihzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgbG9nIGZpbHRlcnMgZm9yIFVJIGhhbmRsZXJzICIiIgorICAgICAgICBtYXNrID0gWyIqIl0KKyAgICAgICAgZGVidWdfZG9tYWlucyA9IHsnQml0QmFrZS5Gb28nOiBsb2dnaW5nLldBUk5JTkd9CisKKyAgICAgICAgc2VsZi5fdGVzdF91aTEuZXZlbnQgPSBFdmVudFF1ZXVlU3R1YigpCisgICAgICAgIHJlc3VsdCA9IGJiLmV2ZW50LnJlZ2lzdGVyX1VJSGhhbmRsZXIoc2VsZi5fdGVzdF91aTEsIG1haW51aT1UcnVlKQorICAgICAgICBiYi5ldmVudC5zZXRfVUlIbWFzayhyZXN1bHQsIGxvZ2dpbmcuRVJST1IsIGRlYnVnX2RvbWFpbnMsIG1hc2spCisgICAgICAgIHNlbGYuX3Rlc3RfdWkyLmV2ZW50ID0gUGlja2xlRXZlbnRRdWV1ZVN0dWIoKQorICAgICAgICByZXN1bHQgPSBiYi5ldmVudC5yZWdpc3Rlcl9VSUhoYW5kbGVyKHNlbGYuX3Rlc3RfdWkyLCBtYWludWk9VHJ1ZSkKKyAgICAgICAgYmIuZXZlbnQuc2V0X1VJSG1hc2socmVzdWx0LCBsb2dnaW5nLkVSUk9SLCBkZWJ1Z19kb21haW5zLCBtYXNrKQorCisgICAgICAgIGV2ZW50MSA9IGJiLmV2ZW50Lk9wZXJhdGlvblN0YXJ0ZWQoKQorICAgICAgICBiYi5ldmVudC5maXJlX3VpX2hhbmRsZXJzKGV2ZW50MSwgTm9uZSkgICAjIEFsbCBldmVudHMgbWF0Y2gKKworICAgICAgICBldmVudF9sb2dfaGFuZGxlciA9IGJiLmV2ZW50LkxvZ0hhbmRsZXIoKQorICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiQml0QmFrZSIpCisgICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKGV2ZW50X2xvZ19oYW5kbGVyKQorICAgICAgICBsb2dnZXIxID0gbG9nZ2luZy5nZXRMb2dnZXIoIkJpdEJha2UuRm9vIikKKyAgICAgICAgbG9nZ2VyMS53YXJuaW5nKCJUZXN0IHdhcm5pbmcgTG9nUmVjb3JkMSIpICMgTWF0Y2hlcyBkZWJ1Z19kb21haW5zIGxldmVsCisgICAgICAgIGxvZ2dlcjEuaW5mbygiVGVzdCBpbmZvIExvZ1JlY29yZCIpICAgICAgICAjIEZpbHRlcmVkIG91dAorICAgICAgICBsb2dnZXIyID0gbG9nZ2luZy5nZXRMb2dnZXIoIkJpdEJha2UuQmFyIikKKyAgICAgICAgbG9nZ2VyMi5lcnJvcigiVGVzdCBlcnJvciBMb2dSZWNvcmQiKSAgICAgICMgTWF0Y2hlcyBmaWx0ZXIgYmFzZSBsZXZlbAorICAgICAgICBsb2dnZXIyLndhcm5pbmcoIlRlc3Qgd2FybmluZyBMb2dSZWNvcmQyIikgIyBGaWx0ZXJlZCBvdXQKKyAgICAgICAgbG9nZ2VyLnJlbW92ZUhhbmRsZXIoZXZlbnRfbG9nX2hhbmRsZXIpCisKKyAgICAgICAgZXhwZWN0ZWQgPSBbJ09wZXJhdGlvblN0YXJ0ZWQnLAorICAgICAgICAgICAgICAgICAgICAnV0FSTklORzogVGVzdCB3YXJuaW5nIExvZ1JlY29yZDEnLAorICAgICAgICAgICAgICAgICAgICAnRVJST1I6IFRlc3QgZXJyb3IgTG9nUmVjb3JkJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl90ZXN0X3VpMS5ldmVudC5ldmVudF9jYWxscywgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGVzdF91aTIuZXZlbnQuZXZlbnRfY2FsbHMsIGV4cGVjdGVkKQorCiAgICAgZGVmIHRlc3RfZmlyZShzZWxmKToKICAgICAgICAgIiIiIFRlc3QgZmlyZSBtZXRob2QgdXNlZCB0byB0cmlnZ2VyIGNsYXNzIGFuZCB1aSBldmVudCBoYW5kbGVycyAiIiIKICAgICAgICAgbWFzayA9IFsiYmIuZXZlbnQuQ29uZmlnUGFyc2VkIl0KQEAgLTI4OSwxOCArMzg4LDI4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGVzdF91aTEuZXZlbnQuc2VuZC5jYWxsX2FyZ3NfbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKIAorICAgIGRlZiB0ZXN0X3dvcmtlcl9maXJlKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCB0aGUgdHJpZ2dlcmluZyBvZiBiYi5ldmVudC53b3JrZXJfZmlyZSBjYWxsYmFjayAiIiIKKyAgICAgICAgYmIuZXZlbnQud29ya2VyX2ZpcmUgPSBNb2NrKCkKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5FdmVudCgpCisgICAgICAgIGJiLmV2ZW50LmZpcmUoZXZlbnQsIE5vbmUpCisgICAgICAgIGV4cGVjdGVkID0gW2NhbGwoZXZlbnQsIE5vbmUpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJiLmV2ZW50Lndvcmtlcl9maXJlLmNhbGxfYXJnc19saXN0LCBleHBlY3RlZCkKKwogICAgIGRlZiB0ZXN0X3ByaW50X3VpX3F1ZXVlKHNlbGYpOgogICAgICAgICAiIiIgVGVzdCBwcmludF91aV9xdWV1ZSBtZXRob2QgIiIiCiAgICAgICAgIGV2ZW50MSA9IGJiLmV2ZW50Lk9wZXJhdGlvblN0YXJ0ZWQoKQogICAgICAgICBldmVudDIgPSBiYi5ldmVudC5PcGVyYXRpb25Db21wbGV0ZWQodG90YWw9MTIzKQogICAgICAgICBiYi5ldmVudC5maXJlKGV2ZW50MSwgTm9uZSkKICAgICAgICAgYmIuZXZlbnQuZmlyZShldmVudDIsIE5vbmUpCisgICAgICAgIGV2ZW50X2xvZ19oYW5kbGVyID0gYmIuZXZlbnQuTG9nSGFuZGxlcigpCiAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlIikKLSAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoYmIuZXZlbnQuTG9nSGFuZGxlcigpKQorICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihldmVudF9sb2dfaGFuZGxlcikKICAgICAgICAgbG9nZ2VyLmluZm8oIlRlc3QgaW5mbyBMb2dSZWNvcmQiKQogICAgICAgICBsb2dnZXIud2FybmluZygiVGVzdCB3YXJuaW5nIExvZ1JlY29yZCIpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRMb2dzKCJCaXRCYWtlIiwgbGV2ZWw9IklORk8iKSBhcyBjbToKICAgICAgICAgICAgIGJiLmV2ZW50LnByaW50X3VpX3F1ZXVlKCkKKyAgICAgICAgbG9nZ2VyLnJlbW92ZUhhbmRsZXIoZXZlbnRfbG9nX2hhbmRsZXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20ub3V0cHV0LAogICAgICAgICAgICAgICAgICAgICAgICAgIFsiSU5GTzpCaXRCYWtlOlRlc3QgaW5mbyBMb2dSZWNvcmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiV0FSTklORzpCaXRCYWtlOlRlc3Qgd2FybmluZyBMb2dSZWNvcmQiXSkKQEAgLTM2NCw2ICs0NzMsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3RocmVhZGxvY2tfdGVzdF9jYWxscywKICAgICAgICAgICAgICAgICAgICAgICAgICBbIncxX3VpMSIsICJ3MV91aTIiLCAidzJfdWkxIiwgIncyX3VpMiJdKQogCisKICAgICBkZWYgdGVzdF9kaXNhYmxlX3RocmVhZGxvY2soc2VsZik6CiAgICAgICAgICIiIiBUZXN0IGRpc2FibGVfdGhyZWFkbG9jayBtZXRob2QgIiIiCiAgICAgICAgIHNlbGYuX3NldF90aHJlYWRsb2NrX3Rlc3RfbW9ja3VwcygpCkBAIC0zNzUsMyArNDg1LDUwMiBAQAogICAgICAgICAjIHByb2Nlc3NlZCBiZWZvcmUgZmluaXNoaW5nIGhhbmRsaW5nIHRoZSBmaXJzdCB3b3JrZXIgZXZlbnQuCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGhyZWFkbG9ja190ZXN0X2NhbGxzLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsidzFfdWkxIiwgIncyX3VpMSIsICJ3MV91aTIiLCAidzJfdWkyIl0pCisKKworY2xhc3MgRXZlbnRDbGFzc2VzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiIEV2ZW50IGNsYXNzZXMgdGVzdCBjbGFzcyAiIiIKKworICAgIF93b3JrZXJfcGlkID0gNTQzMjEKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgYmIuZXZlbnQud29ya2VyX3BpZCA9IEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQKKworICAgIGRlZiB0ZXN0X0V2ZW50KHNlbGYpOgorICAgICAgICAiIiIgVGVzdCB0aGUgRXZlbnQgYmFzZSBjbGFzcyAiIiIKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5FdmVudCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfSGVhcnRiZWF0RXZlbnQoc2VsZik6CisgICAgICAgICIiIiBUZXN0IHRoZSBIZWFydGJlYXRFdmVudCBjbGFzcyAiIiIKKyAgICAgICAgdGltZSA9IDEwCisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuSGVhcnRiZWF0RXZlbnQodGltZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC50aW1lLCB0aW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X09wZXJhdGlvblN0YXJ0ZWQoc2VsZik6CisgICAgICAgICIiIiBUZXN0IE9wZXJhdGlvblN0YXJ0ZWQgZXZlbnQgY2xhc3MgIiIiCisgICAgICAgIG1zZyA9ICJGb28gQmFyIgorICAgICAgICBldmVudCA9IGJiLmV2ZW50Lk9wZXJhdGlvblN0YXJ0ZWQobXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Lm1zZywgbXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X09wZXJhdGlvbkNvbXBsZXRlZChzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgT3BlcmF0aW9uQ29tcGxldGVkIGV2ZW50IGNsYXNzICIiIgorICAgICAgICBtc2cgPSAiRm9vIEJhciIKKyAgICAgICAgdG90YWwgPSAxMjMKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5PcGVyYXRpb25Db21wbGV0ZWQodG90YWwsIG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5tc2csIG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC50b3RhbCwgdG90YWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfT3BlcmF0aW9uUHJvZ3Jlc3Moc2VsZik6CisgICAgICAgICIiIiBUZXN0IE9wZXJhdGlvblByb2dyZXNzIGV2ZW50IGNsYXNzICIiIgorICAgICAgICBtc2cgPSAiRm9vIEJhciIKKyAgICAgICAgdG90YWwgPSAxMjMKKyAgICAgICAgY3VycmVudCA9IDExMQorICAgICAgICBldmVudCA9IGJiLmV2ZW50Lk9wZXJhdGlvblByb2dyZXNzKGN1cnJlbnQsIHRvdGFsLCBtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQubXNnLCBtc2cgKyAiOiAlcy8lcyIgJSAoY3VycmVudCwgdG90YWwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X0NvbmZpZ1BhcnNlZChzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgdGhlIENvbmZpZ1BhcnNlZCBjbGFzcyAiIiIKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5Db25maWdQYXJzZWQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X011bHRpQ29uZmlnUGFyc2VkKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBNdWx0aUNvbmZpZ1BhcnNlZCBldmVudCBjbGFzcyAiIiIKKyAgICAgICAgbWNkYXRhID0geyJmb29iYXIiOiAiRm9vIEJhciJ9CisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuTXVsdGlDb25maWdQYXJzZWQobWNkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Lm1jZGF0YSwgbWNkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X1JlY2lwZUV2ZW50KHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBSZWNpcGVFdmVudCBldmVudCBiYXNlIGNsYXNzICIiIgorICAgICAgICBjYWxsYmFjayA9IGxhbWJkYSBhOiAyICogYQorICAgICAgICBldmVudCA9IGJiLmV2ZW50LlJlY2lwZUV2ZW50KGNhbGxiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmZuKDEpLCBjYWxsYmFjaygxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisKKyAgICBkZWYgdGVzdF9SZWNpcGVQcmVGaW5hbGlzZShzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgUmVjaXBlUHJlRmluYWxpc2UgZXZlbnQgY2xhc3MgIiIiCisgICAgICAgIGNhbGxiYWNrID0gbGFtYmRhIGE6IDIgKiBhCisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuUmVjaXBlUHJlRmluYWxpc2UoY2FsbGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZm4oMSksIGNhbGxiYWNrKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X1JlY2lwZVRhc2tQcmVQcm9jZXNzKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBSZWNpcGVUYXNrUHJlUHJvY2VzcyBldmVudCBjbGFzcyAiIiIKKyAgICAgICAgY2FsbGJhY2sgPSBsYW1iZGEgYTogMiAqIGEKKyAgICAgICAgdGFza2xpc3QgPSBbKCJmb29iYXIiLCBjYWxsYmFjayldCisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuUmVjaXBlVGFza1ByZVByb2Nlc3MoY2FsbGJhY2ssIHRhc2tsaXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmZuKDEpLCBjYWxsYmFjaygxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC50YXNrbGlzdCwgdGFza2xpc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfUmVjaXBlUGFyc2VkKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBSZWNpcGVQYXJzZWQgZXZlbnQgYmFzZSBjbGFzcyAiIiIKKyAgICAgICAgY2FsbGJhY2sgPSBsYW1iZGEgYTogMiAqIGEKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5SZWNpcGVQYXJzZWQoY2FsbGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZm4oMSksIGNhbGxiYWNrKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X1N0YW1wVXBkYXRlKHNlbGYpOgorICAgICAgICB0YXJnZXRzID0gWyJmb28iLCAiYmFyIl0KKyAgICAgICAgc3RhbXBmbnMgPSBbbGFtYmRhOiJmb29iYXIiXQorICAgICAgICBldmVudCA9IGJiLmV2ZW50LlN0YW1wVXBkYXRlKHRhcmdldHMsIHN0YW1wZm5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnRhcmdldHMsIHRhcmdldHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuc3RhbXBQcmVmaXgsIHN0YW1wZm5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X0J1aWxkQmFzZShzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgYmFzZSBjbGFzcyBmb3IgYml0YmFrZSBidWlsZCBldmVudHMgIiIiCisgICAgICAgIG5hbWUgPSAiZm9vIgorICAgICAgICBwa2dzID0gWyJiYXIiXQorICAgICAgICBmYWlsdXJlcyA9IDEyMworICAgICAgICBldmVudCA9IGJiLmV2ZW50LkJ1aWxkQmFzZShuYW1lLCBwa2dzLCBmYWlsdXJlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5uYW1lLCBuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBrZ3MsIHBrZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZ2V0RmFpbHVyZXMoKSwgZmFpbHVyZXMpCisgICAgICAgIG5hbWUgPSBldmVudC5uYW1lID0gImJhciIKKyAgICAgICAgcGtncyA9IGV2ZW50LnBrZ3MgPSBbImZvbyJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQubmFtZSwgbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5wa2dzLCBwa2dzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmdldEZhaWx1cmVzKCksIGZhaWx1cmVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X0J1aWxkSW5pdChzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgY2xhc3MgZm9yIGJpdGJha2UgYnVpbGQgaW52b2NhdGlvbiBldmVudHMgIiIiCisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuQnVpbGRJbml0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5uYW1lLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBrZ3MsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmdldEZhaWx1cmVzKCksIDApCisgICAgICAgIG5hbWUgPSBldmVudC5uYW1lID0gImJhciIKKyAgICAgICAgcGtncyA9IGV2ZW50LnBrZ3MgPSBbImZvbyJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQubmFtZSwgbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5wa2dzLCBwa2dzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmdldEZhaWx1cmVzKCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfQnVpbGRTdGFydGVkKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBjbGFzcyBmb3IgYnVpbGQgc3RhcnRlZCBldmVudHMgIiIiCisgICAgICAgIG5hbWUgPSAiZm9vIgorICAgICAgICBwa2dzID0gWyJiYXIiXQorICAgICAgICBmYWlsdXJlcyA9IDEyMworICAgICAgICBldmVudCA9IGJiLmV2ZW50LkJ1aWxkU3RhcnRlZChuYW1lLCBwa2dzLCBmYWlsdXJlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5uYW1lLCBuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBrZ3MsIHBrZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZ2V0RmFpbHVyZXMoKSwgZmFpbHVyZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQubXNnLCAiQnVpbGRpbmcgU3RhcnRlZCIpCisgICAgICAgIG5hbWUgPSBldmVudC5uYW1lID0gImJhciIKKyAgICAgICAgcGtncyA9IGV2ZW50LnBrZ3MgPSBbImZvbyJdCisgICAgICAgIG1zZyA9IGV2ZW50Lm1zZyA9ICJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQubmFtZSwgbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5wa2dzLCBwa2dzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmdldEZhaWx1cmVzKCksIGZhaWx1cmVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Lm1zZywgbXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X0J1aWxkQ29tcGxldGVkKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBjbGFzcyBmb3IgYnVpbGQgY29tcGxldGVkIGV2ZW50cyAiIiIKKyAgICAgICAgdG90YWwgPSAxMDAwCisgICAgICAgIG5hbWUgPSAiZm9vIgorICAgICAgICBwa2dzID0gWyJiYXIiXQorICAgICAgICBmYWlsdXJlcyA9IDEyMworICAgICAgICBpbnRlcnJ1cHRlZCA9IDEKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5CdWlsZENvbXBsZXRlZCh0b3RhbCwgbmFtZSwgcGtncywgZmFpbHVyZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJydXB0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQubmFtZSwgbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5wa2dzLCBwa2dzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmdldEZhaWx1cmVzKCksIGZhaWx1cmVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Lm1zZywgIkJ1aWxkaW5nIEZhaWxlZCIpCisgICAgICAgIGV2ZW50MiA9IGJiLmV2ZW50LkJ1aWxkQ29tcGxldGVkKHRvdGFsLCBuYW1lLCBwa2dzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Mi5uYW1lLCBuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Mi5wa2dzLCBwa2dzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Mi5nZXRGYWlsdXJlcygpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Mi5tc2csICJCdWlsZGluZyBTdWNjZWVkZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Mi5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisKKyAgICBkZWYgdGVzdF9EaXNrRnVsbChzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgRGlza0Z1bGwgZXZlbnQgY2xhc3MgIiIiCisgICAgICAgIGRldiA9ICIvZGV2L2ZvbyIKKyAgICAgICAgdHlwZSA9ICJleHQ0IgorICAgICAgICBmcmVlc3BhY2UgPSAiMTA0TSIKKyAgICAgICAgbW91bnRwb2ludCA9ICIvIgorICAgICAgICBldmVudCA9IGJiLmV2ZW50LkRpc2tGdWxsKGRldiwgdHlwZSwgZnJlZXNwYWNlLCBtb3VudHBvaW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X01vbml0b3JEaXNrRXZlbnQoc2VsZik6CisgICAgICAgICIiIiBUZXN0IE1vbml0b3JEaXNrRXZlbnQgY2xhc3MgIiIiCisgICAgICAgIGF2YWlsYWJsZV9ieXRlcyA9IDEwMDAwMDAwCisgICAgICAgIGZyZWVfYnl0ZXMgPSA5MDAwMDAwMAorICAgICAgICB0b3RhbF9ieXRlcyA9IDEwMDAwMDAwMDAKKyAgICAgICAgZHUgPSBiYi5ldmVudC5EaXNrVXNhZ2VTYW1wbGUoYXZhaWxhYmxlX2J5dGVzLCBmcmVlX2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbF9ieXRlcykKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5Nb25pdG9yRGlza0V2ZW50KGR1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmRpc2tfdXNhZ2UuYXZhaWxhYmxlX2J5dGVzLCBhdmFpbGFibGVfYnl0ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZGlza191c2FnZS5mcmVlX2J5dGVzLCBmcmVlX2J5dGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmRpc2tfdXNhZ2UudG90YWxfYnl0ZXMsIHRvdGFsX2J5dGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X05vUHJvdmlkZXIoc2VsZik6CisgICAgICAgICIiIiBUZXN0IE5vUHJvdmlkZXIgZXZlbnQgY2xhc3MgIiIiCisgICAgICAgIGl0ZW0gPSAiZm9vYmFyIgorICAgICAgICBldmVudDEgPSBiYi5ldmVudC5Ob1Byb3ZpZGVyKGl0ZW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQxLmdldEl0ZW0oKSwgaXRlbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudDEuaXNSdW50aW1lKCksIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihldmVudDEpLCAiTm90aGluZyBQUk9WSURFUyAnZm9vYmFyJyIpCisgICAgICAgIHJ1bnRpbWUgPSBUcnVlCisgICAgICAgIGRlcGVuZGVlcyA9IFsiZm9vIiwgImJhciJdCisgICAgICAgIHJlYXNvbnMgPSBOb25lCisgICAgICAgIGNsb3NlX21hdGNoZXMgPSBbImZvaWJhciIsICJmb290YmFyIl0KKyAgICAgICAgZXZlbnQyID0gYmIuZXZlbnQuTm9Qcm92aWRlcihpdGVtLCBydW50aW1lLCBkZXBlbmRlZXMsIHJlYXNvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfbWF0Y2hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudDIuaXNSdW50aW1lKCksIFRydWUpCisgICAgICAgIGV4cGVjdGVkID0gKCJOb3RoaW5nIFJQUk9WSURFUyAnZm9vYmFyJyAoYnV0IGZvbywgYmFyIFJERVBFTkRTIgorICAgICAgICAgICAgICAgICAgICAiIG9uIG9yIG90aGVyd2lzZSByZXF1aXJlcyBpdCkuIENsb3NlIG1hdGNoZXM6XG4iCisgICAgICAgICAgICAgICAgICAgICIgIGZvaWJhclxuIgorICAgICAgICAgICAgICAgICAgICAiICBmb290YmFyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXZlbnQyKSwgZXhwZWN0ZWQpCisgICAgICAgIHJlYXNvbnMgPSBbIkl0ZW0gZG9lcyBub3QgZXhpc3Qgb24gZGF0YWJhc2UiXQorICAgICAgICBjbG9zZV9tYXRjaGVzID0gWyJmb2liYXIiLCAiZm9vdGJhciJdCisgICAgICAgIGV2ZW50MyA9IGJiLmV2ZW50Lk5vUHJvdmlkZXIoaXRlbSwgcnVudGltZSwgZGVwZW5kZWVzLCByZWFzb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX21hdGNoZXMpCisgICAgICAgIGV4cGVjdGVkID0gKCJOb3RoaW5nIFJQUk9WSURFUyAnZm9vYmFyJyAoYnV0IGZvbywgYmFyIFJERVBFTkRTIgorICAgICAgICAgICAgICAgICAgICAiIG9uIG9yIG90aGVyd2lzZSByZXF1aXJlcyBpdClcbiIKKyAgICAgICAgICAgICAgICAgICAgIkl0ZW0gZG9lcyBub3QgZXhpc3Qgb24gZGF0YWJhc2UiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihldmVudDMpLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudDMucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfTXVsdGlwbGVQcm92aWRlcnMoc2VsZik6CisgICAgICAgICIiIiBUZXN0IE11bHRpcGxlUHJvdmlkZXJzIGV2ZW50IGNsYXNzICIiIgorICAgICAgICBpdGVtID0gImZvb2JhciIKKyAgICAgICAgY2FuZGlkYXRlcyA9IFsiZm9vYmFydjEiLCAiZm9vYmFycyJdCisgICAgICAgIGV2ZW50MSA9IGJiLmV2ZW50Lk11bHRpcGxlUHJvdmlkZXJzKGl0ZW0sIGNhbmRpZGF0ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQxLmlzUnVudGltZSgpLCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudDEuZ2V0SXRlbSgpLCBpdGVtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50MS5nZXRDYW5kaWRhdGVzKCksIGNhbmRpZGF0ZXMpCisgICAgICAgIGV4cGVjdGVkID0gKCJNdWx0aXBsZSBwcm92aWRlcnMgYXJlIGF2YWlsYWJsZSBmb3IgZm9vYmFyIChmb29iYXJ2MSwiCisgICAgICAgICAgICAgICAgICAgICIgZm9vYmFycylcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnNpZGVyIGRlZmluaW5nIGEgUFJFRkVSUkVEX1BST1ZJREVSIGVudHJ5IHRvIG1hdGNoICIKKyAgICAgICAgICAgICAgICAgICAgImZvb2JhciIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGV2ZW50MSksIGV4cGVjdGVkKQorICAgICAgICBydW50aW1lID0gVHJ1ZQorICAgICAgICBldmVudDIgPSBiYi5ldmVudC5NdWx0aXBsZVByb3ZpZGVycyhpdGVtLCBjYW5kaWRhdGVzLCBydW50aW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Mi5pc1J1bnRpbWUoKSwgcnVudGltZSkKKyAgICAgICAgZXhwZWN0ZWQgPSAoIk11bHRpcGxlIHByb3ZpZGVycyBhcmUgYXZhaWxhYmxlIGZvciBydW50aW1lIGZvb2JhciAiCisgICAgICAgICAgICAgICAgICAgICIoZm9vYmFydjEsIGZvb2JhcnMpXG4iCisgICAgICAgICAgICAgICAgICAgICJDb25zaWRlciBkZWZpbmluZyBhIFBSRUZFUlJFRF9SUFJPVklERVIgZW50cnkgdG8gbWF0Y2ggIgorICAgICAgICAgICAgICAgICAgICAiZm9vYmFyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXZlbnQyKSwgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQyLnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X1BhcnNlU3RhcnRlZChzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgUGFyc2VTdGFydGVkIGV2ZW50IGNsYXNzICIiIgorICAgICAgICB0b3RhbCA9IDEyMworICAgICAgICBldmVudCA9IGJiLmV2ZW50LlBhcnNlU3RhcnRlZCh0b3RhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5tc2csICJSZWNpcGUgcGFyc2luZyBTdGFydGVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC50b3RhbCwgdG90YWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfUGFyc2VDb21wbGV0ZWQoc2VsZik6CisgICAgICAgICIiIiBUZXN0IFBhcnNlQ29tcGxldGVkIGV2ZW50IGNsYXNzICIiIgorICAgICAgICBjYWNoZWQgPSAxMAorICAgICAgICBwYXJzZWQgPSAxMworICAgICAgICBza2lwcGVkID0gNworICAgICAgICB2aXJ0dWFscyA9IDIKKyAgICAgICAgbWFza2VkID0gMQorICAgICAgICBlcnJvcnMgPSAwCisgICAgICAgIHRvdGFsID0gMjMKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5QYXJzZUNvbXBsZXRlZChjYWNoZWQsIHBhcnNlZCwgc2tpcHBlZCwgbWFza2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxzLCBlcnJvcnMsIHRvdGFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Lm1zZywgIlJlY2lwZSBwYXJzaW5nIENvbXBsZXRlZCIpCisgICAgICAgIGV4cGVjdGVkID0gW2NhY2hlZCwgcGFyc2VkLCBza2lwcGVkLCB2aXJ0dWFscywgbWFza2VkLCBlcnJvcnMsCisgICAgICAgICAgICAgICAgICAgIGNhY2hlZCArIHBhcnNlZCwgdG90YWxdCisgICAgICAgIGFjdHVhbCA9IFtldmVudC5jYWNoZWQsIGV2ZW50LnBhcnNlZCwgZXZlbnQuc2tpcHBlZCwgZXZlbnQudmlydHVhbHMsCisgICAgICAgICAgICAgICAgICBldmVudC5tYXNrZWQsIGV2ZW50LmVycm9ycywgZXZlbnQuc29mYXIsIGV2ZW50LnRvdGFsXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhY3R1YWwpLCBzdHIoZXhwZWN0ZWQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X1BhcnNlUHJvZ3Jlc3Moc2VsZik6CisgICAgICAgICIiIiBUZXN0IFBhcnNlUHJvZ3Jlc3MgZXZlbnQgY2xhc3MgIiIiCisgICAgICAgIGN1cnJlbnQgPSAxMAorICAgICAgICB0b3RhbCA9IDEwMAorICAgICAgICBldmVudCA9IGJiLmV2ZW50LlBhcnNlUHJvZ3Jlc3MoY3VycmVudCwgdG90YWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQubXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICJSZWNpcGUgcGFyc2luZyIgKyAiOiAlcy8lcyIgJSAoY3VycmVudCwgdG90YWwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X0NhY2hlTG9hZFN0YXJ0ZWQoc2VsZik6CisgICAgICAgICIiIiBUZXN0IENhY2hlTG9hZFN0YXJ0ZWQgZXZlbnQgY2xhc3MgIiIiCisgICAgICAgIHRvdGFsID0gMTIzCisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuQ2FjaGVMb2FkU3RhcnRlZCh0b3RhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5tc2csICJMb2FkaW5nIGNhY2hlIFN0YXJ0ZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnRvdGFsLCB0b3RhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisKKyAgICBkZWYgdGVzdF9DYWNoZUxvYWRQcm9ncmVzcyhzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgQ2FjaGVMb2FkUHJvZ3Jlc3MgZXZlbnQgY2xhc3MgIiIiCisgICAgICAgIGN1cnJlbnQgPSAxMAorICAgICAgICB0b3RhbCA9IDEwMAorICAgICAgICBldmVudCA9IGJiLmV2ZW50LkNhY2hlTG9hZFByb2dyZXNzKGN1cnJlbnQsIHRvdGFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Lm1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiTG9hZGluZyBjYWNoZSIgKyAiOiAlcy8lcyIgJSAoY3VycmVudCwgdG90YWwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X0NhY2hlTG9hZENvbXBsZXRlZChzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgQ2FjaGVMb2FkQ29tcGxldGVkIGV2ZW50IGNsYXNzICIiIgorICAgICAgICB0b3RhbCA9IDIzCisgICAgICAgIG51bV9lbnRyaWVzID0gMTIKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5DYWNoZUxvYWRDb21wbGV0ZWQodG90YWwsIG51bV9lbnRyaWVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Lm1zZywgIkxvYWRpbmcgY2FjaGUgQ29tcGxldGVkIikKKyAgICAgICAgZXhwZWN0ZWQgPSBbdG90YWwsIG51bV9lbnRyaWVzXQorICAgICAgICBhY3R1YWwgPSBbZXZlbnQudG90YWwsIGV2ZW50Lm51bV9lbnRyaWVzXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhY3R1YWwpLCBzdHIoZXhwZWN0ZWQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X1RyZWVEYXRhUHJlcGFyYXRpb25TdGFydGVkKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBUcmVlRGF0YVByZXBhcmF0aW9uU3RhcnRlZCBldmVudCBjbGFzcyAiIiIKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5UcmVlRGF0YVByZXBhcmF0aW9uU3RhcnRlZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQubXNnLCAiUHJlcGFyaW5nIHRyZWUgZGF0YSBTdGFydGVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisKKyAgICBkZWYgdGVzdF9UcmVlRGF0YVByZXBhcmF0aW9uUHJvZ3Jlc3Moc2VsZik6CisgICAgICAgICIiIiBUZXN0IFRyZWVEYXRhUHJlcGFyYXRpb25Qcm9ncmVzcyBldmVudCBjbGFzcyAiIiIKKyAgICAgICAgY3VycmVudCA9IDEwCisgICAgICAgIHRvdGFsID0gMTAwCisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuVHJlZURhdGFQcmVwYXJhdGlvblByb2dyZXNzKGN1cnJlbnQsIHRvdGFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Lm1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiUHJlcGFyaW5nIHRyZWUgZGF0YSIgKyAiOiAlcy8lcyIgJSAoY3VycmVudCwgdG90YWwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X1RyZWVEYXRhUHJlcGFyYXRpb25Db21wbGV0ZWQoc2VsZik6CisgICAgICAgICIiIiBUZXN0IFRyZWVEYXRhUHJlcGFyYXRpb25Db21wbGV0ZWQgZXZlbnQgY2xhc3MgIiIiCisgICAgICAgIHRvdGFsID0gMjMKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5UcmVlRGF0YVByZXBhcmF0aW9uQ29tcGxldGVkKHRvdGFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Lm1zZywgIlByZXBhcmluZyB0cmVlIGRhdGEgQ29tcGxldGVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC50b3RhbCwgdG90YWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfRGVwVHJlZUdlbmVyYXRlZChzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgRGVwVHJlZUdlbmVyYXRlZCBldmVudCBjbGFzcyAiIiIKKyAgICAgICAgZGVwZ3JhcGggPSBNb2NrKCkKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5EZXBUcmVlR2VuZXJhdGVkKGRlcGdyYXBoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X1RhcmdldHNUcmVlR2VuZXJhdGVkKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBUYXJnZXRzVHJlZUdlbmVyYXRlZCBldmVudCBjbGFzcyAiIiIKKyAgICAgICAgbW9kZWwgPSBNb2NrKCkKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5UYXJnZXRzVHJlZUdlbmVyYXRlZChtb2RlbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisKKyAgICBkZWYgdGVzdF9SZWFjaGFibGVTdGFtcHMoc2VsZik6CisgICAgICAgICIiIiBUZXN0IFJlYWNoYWJsZVN0YW1wcyBldmVudCBjbGFzcyAiIiIKKyAgICAgICAgc3RhbXBzID0gW01vY2soKSwgTW9jaygpXQorICAgICAgICBldmVudCA9IGJiLmV2ZW50LlJlYWNoYWJsZVN0YW1wcyhzdGFtcHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuc3RhbXBzLCBzdGFtcHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfRmlsZXNNYXRjaGluZ0ZvdW5kKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBGaWxlc01hdGNoaW5nRm91bmQgZXZlbnQgY2xhc3MgIiIiCisgICAgICAgIHBhdHRlcm4gPSAiZm9vLipiYXIiCisgICAgICAgIG1hdGNoZXMgPSBbImZvb2JhciJdCisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuRmlsZXNNYXRjaGluZ0ZvdW5kKHBhdHRlcm4sIG1hdGNoZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfQ29uZmlnRmlsZXNGb3VuZChzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgQ29uZmlnRmlsZXNGb3VuZCBldmVudCBjbGFzcyAiIiIKKyAgICAgICAgdmFyaWFibGUgPSAiRk9PX0JBUiIKKyAgICAgICAgdmFsdWVzID0gWyJmb28iLCAiYmFyIl0KKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5Db25maWdGaWxlc0ZvdW5kKHZhcmlhYmxlLCB2YWx1ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfQ29uZmlnRmlsZVBhdGhGb3VuZChzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgQ29uZmlnRmlsZVBhdGhGb3VuZCBldmVudCBjbGFzcyAiIiIKKyAgICAgICAgcGF0aCA9ICIvZm9vL2JhciIKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5Db25maWdGaWxlUGF0aEZvdW5kKHBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfbWVzc2FnZV9jbGFzc2VzKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBtZXNzYWdlIGV2ZW50IGNsYXNzZXMgIiIiCisgICAgICAgIG1zZyA9ICJmb29iYXIgZm9vIGJhciIKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5Nc2dCYXNlKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuTXNnRGVidWcobXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5Nc2dOb3RlKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuTXNnV2Fybihtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorICAgICAgICBldmVudCA9IGJiLmV2ZW50Lk1zZ0Vycm9yKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuTXNnRmF0YWwobXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5Nc2dQbGFpbihtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfTG9nRXhlY1RUWShzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgTG9nRXhlY1RUWSBldmVudCBjbGFzcyAiIiIKKyAgICAgICAgbXNnID0gImZvbyBiYXIiCisgICAgICAgIHByb2cgPSAiZm9vLnNoIgorICAgICAgICBzbGVlcF9kZWxheSA9IDEwCisgICAgICAgIHJldHJpZXMgPSAzCisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuTG9nRXhlY1RUWShtc2csIHByb2csIHNsZWVwX2RlbGF5LCByZXRyaWVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Lm1zZywgbXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnByb2csIHByb2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuc2xlZXBfZGVsYXksIHNsZWVwX2RlbGF5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnJldHJpZXMsIHJldHJpZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIF90aHJvd196ZXJvX2RpdmlzaW9uX2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgYSA9IDEgLyAwCisgICAgICAgIHJldHVybgorCisgICAgZGVmIF93b3JrZXJfaGFuZGxlcihzZWxmLCBldmVudCwgZCk6CisgICAgICAgIHNlbGYuX3JldHVybmVkX2V2ZW50ID0gZXZlbnQKKyAgICAgICAgcmV0dXJuCisKKyAgICBkZWYgdGVzdF9Mb2dIYW5kbGVyKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBMb2dIYW5kbGVyIGNsYXNzICIiIgorICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiVGVzdEV2ZW50Q2xhc3NlcyIpCisgICAgICAgIGxvZ2dlci5wcm9wYWdhdGUgPSBGYWxzZQorICAgICAgICBoYW5kbGVyID0gYmIuZXZlbnQuTG9nSGFuZGxlcihsb2dnaW5nLklORk8pCisgICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKGhhbmRsZXIpCisgICAgICAgIGJiLmV2ZW50Lndvcmtlcl9maXJlID0gc2VsZi5fd29ya2VyX2hhbmRsZXIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5fdGhyb3dfemVyb19kaXZpc2lvbl9leGNlcHRpb24oKQorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3IgYXMgZXg6CisgICAgICAgICAgICBsb2dnZXIuZXhjZXB0aW9uKGV4KQorICAgICAgICBldmVudCA9IHNlbGYuX3JldHVybmVkX2V2ZW50CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBlID0gcGlja2xlLmR1bXBzKGV2ZW50KQorICAgICAgICAgICAgbmV3ZXZlbnQgPSBwaWNrbGUubG9hZHMocGUpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnTG9nZ2VkIGV2ZW50IGlzIG5vdCBzZXJpYWxpemFibGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnRhc2twaWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisKKyAgICBkZWYgdGVzdF9NZXRhZGF0YUV2ZW50KHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBNZXRhZGF0YUV2ZW50IGNsYXNzICIiIgorICAgICAgICBldmVudHR5cGUgPSAiZm9vdHlwZSIKKyAgICAgICAgZXZlbnRkYXRhID0geyJmb28iOiAiYmFyIn0KKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5NZXRhZGF0YUV2ZW50KGV2ZW50dHlwZSwgZXZlbnRkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnR5cGUsIGV2ZW50dHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisKKyAgICBkZWYgdGVzdF9Qcm9jZXNzU3RhcnRlZChzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgUHJvY2Vzc1N0YXJ0ZWQgY2xhc3MgIiIiCisgICAgICAgIHByb2Nlc3NuYW1lID0gImZvbyIKKyAgICAgICAgdG90YWwgPSA5NzgzMTI4OTc0CisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuUHJvY2Vzc1N0YXJ0ZWQocHJvY2Vzc25hbWUsIHRvdGFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnByb2Nlc3NuYW1lLCBwcm9jZXNzbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC50b3RhbCwgdG90YWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfUHJvY2Vzc1Byb2dyZXNzKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBQcm9jZXNzUHJvZ3Jlc3MgY2xhc3MgIiIiCisgICAgICAgIHByb2Nlc3NuYW1lID0gImZvbyIKKyAgICAgICAgcHJvZ3Jlc3MgPSAyNDMyMjQKKyAgICAgICAgZXZlbnQgPSBiYi5ldmVudC5Qcm9jZXNzUHJvZ3Jlc3MocHJvY2Vzc25hbWUsIHByb2dyZXNzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnByb2Nlc3NuYW1lLCBwcm9jZXNzbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5wcm9ncmVzcywgcHJvZ3Jlc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfUHJvY2Vzc0ZpbmlzaGVkKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBQcm9jZXNzRmluaXNoZWQgY2xhc3MgIiIiCisgICAgICAgIHByb2Nlc3NuYW1lID0gImZvbyIKKyAgICAgICAgdG90YWwgPSAxMjQyMzQyMzQ0CisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuUHJvY2Vzc0ZpbmlzaGVkKHByb2Nlc3NuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnByb2Nlc3NuYW1lLCBwcm9jZXNzbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisKKyAgICBkZWYgdGVzdF9TYW5pdHlDaGVjayhzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgU2FuaXR5Q2hlY2sgY2xhc3MgIiIiCisgICAgICAgIGV2ZW50MSA9IGJiLmV2ZW50LlNhbml0eUNoZWNrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudDEuZ2VuZXJhdGVldmVudHMsIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQxLnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKyAgICAgICAgZ2VuZXJhdGVldmVudHMgPSBGYWxzZQorICAgICAgICBldmVudDIgPSBiYi5ldmVudC5TYW5pdHlDaGVjayhnZW5lcmF0ZWV2ZW50cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudDIuZ2VuZXJhdGVldmVudHMsIGdlbmVyYXRlZXZlbnRzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Mi5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisKKyAgICBkZWYgdGVzdF9TYW5pdHlDaGVja1Bhc3NlZChzZWxmKToKKyAgICAgICAgIiIiIFRlc3QgU2FuaXR5Q2hlY2tQYXNzZWQgY2xhc3MgIiIiCisgICAgICAgIGV2ZW50ID0gYmIuZXZlbnQuU2FuaXR5Q2hlY2tQYXNzZWQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKworICAgIGRlZiB0ZXN0X1Nhbml0eUNoZWNrRmFpbGVkKHNlbGYpOgorICAgICAgICAiIiIgVGVzdCBTYW5pdHlDaGVja0ZhaWxlZCBjbGFzcyAiIiIKKyAgICAgICAgbXNnID0gIlRoZSBzYW5pdHkgdGVzdCBmYWlsZWQuIgorICAgICAgICBldmVudDEgPSBiYi5ldmVudC5TYW5pdHlDaGVja0ZhaWxlZChtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQxLnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKyAgICAgICAgbmV0d29ya19lcnJvciA9IFRydWUKKyAgICAgICAgZXZlbnQyID0gYmIuZXZlbnQuU2FuaXR5Q2hlY2tGYWlsZWQobXNnLCBuZXR3b3JrX2Vycm9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50Mi5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisKKyAgICBkZWYgdGVzdF9uZXR3b3JrX2V2ZW50X2NsYXNzZXMoc2VsZik6CisgICAgICAgICIiIiBUZXN0IG5ldHdvcmsgZXZlbnQgY2xhc3NlcyAiIiIKKyAgICAgICAgZXZlbnQxID0gYmIuZXZlbnQuTmV0d29ya1Rlc3QoKQorICAgICAgICBnZW5lcmF0ZWV2ZW50cyA9IEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQxLnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKyAgICAgICAgZXZlbnQyID0gYmIuZXZlbnQuTmV0d29ya1Rlc3QoZ2VuZXJhdGVldmVudHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQyLnBpZCwgRXZlbnRDbGFzc2VzVGVzdC5fd29ya2VyX3BpZCkKKyAgICAgICAgZXZlbnQzID0gYmIuZXZlbnQuTmV0d29ya1Rlc3RQYXNzZWQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50My5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCisgICAgICAgIGV2ZW50NCA9IGJiLmV2ZW50Lk5ldHdvcmtUZXN0RmFpbGVkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudDQucGlkLCBFdmVudENsYXNzZXNUZXN0Ll93b3JrZXJfcGlkKQorCisgICAgZGVmIHRlc3RfRmluZFNpZ0luZm9SZXN1bHQoc2VsZik6CisgICAgICAgICIiIiBUZXN0IEZpbmRTaWdJbmZvUmVzdWx0IGV2ZW50IGNsYXNzICIiIgorICAgICAgICByZXN1bHQgPSBbTW9jaygpXQorICAgICAgICBldmVudCA9IGJiLmV2ZW50LkZpbmRTaWdJbmZvUmVzdWx0KHJlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5yZXN1bHQsIHJlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5waWQsIEV2ZW50Q2xhc3Nlc1Rlc3QuX3dvcmtlcl9waWQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gucHkKaW5kZXggN2Q3YzVkNy4uNzQ4NTlmOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC5weQpAQCAtMjAsNiArMjAsNyBAQAogIwogCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBoYXNobGliCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgY29sbGVjdGlvbnMKQEAgLTUyMiw2ICs1MjMsMTA5IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmIuZmV0Y2gyLlVucGFja0Vycm9yKToKICAgICAgICAgICAgIHNlbGYuZmV0Y2hVbnBhY2soWydmaWxlOi8vYTtzdWJkaXI9L2Jpbi9zaCddKQogCitjbGFzcyBGZXRjaGVyTm9OZXR3b3JrVGVzdChGZXRjaGVyVGVzdCk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLnNldFVwKCkKKyAgICAgICAgIyBhbGwgdGVzdCBjYXNlcyBhcmUgYmFzZWQgb24gbm90IGhhdmluZyBuZXR3b3JrCisgICAgICAgIHNlbGYuZC5zZXRWYXIoIkJCX05PX05FVFdPUksiLCAiMSIpCisKKyAgICBkZWYgdGVzdF9taXNzaW5nKHNlbGYpOgorICAgICAgICBzdHJpbmcgPSAidGhpcyBpcyBhIHRlc3QgZmlsZVxuIi5lbmNvZGUoInV0Zi04IikKKyAgICAgICAgc2VsZi5kLnNldFZhckZsYWcoIlNSQ19VUkkiLCAibWQ1c3VtIiwgaGFzaGxpYi5tZDUoc3RyaW5nKS5oZXhkaWdlc3QoKSkKKyAgICAgICAgc2VsZi5kLnNldFZhckZsYWcoIlNSQ19VUkkiLCAic2hhMjU2c3VtIiwgaGFzaGxpYi5zaGEyNTYoc3RyaW5nKS5oZXhkaWdlc3QoKSkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAidGVzdC1maWxlLnRhci5neiIpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgInRlc3QtZmlsZS50YXIuZ3ouZG9uZSIpKSkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsiaHR0cDovL2ludmFsaWQueW9jdG9wcm9qZWN0Lm9yZy90ZXN0LWZpbGUudGFyLmd6Il0sIHNlbGYuZCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuTmV0d29ya0FjY2Vzcyk6CisgICAgICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKworICAgIGRlZiB0ZXN0X3ZhbGlkX21pc3NpbmdfZG9uZXN0YW1wKHNlbGYpOgorICAgICAgICAjIGNyZWF0ZSB0aGUgZmlsZSBpbiB0aGUgZG93bmxvYWQgZGlyZWN0b3J5IHdpdGggY29ycmVjdCBoYXNoCisgICAgICAgIHN0cmluZyA9ICJ0aGlzIGlzIGEgdGVzdCBmaWxlXG4iLmVuY29kZSgidXRmLTgiKQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICJ0ZXN0LWZpbGUudGFyLmd6IiksICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHN0cmluZykKKworICAgICAgICBzZWxmLmQuc2V0VmFyRmxhZygiU1JDX1VSSSIsICJtZDVzdW0iLCBoYXNobGliLm1kNShzdHJpbmcpLmhleGRpZ2VzdCgpKQorICAgICAgICBzZWxmLmQuc2V0VmFyRmxhZygiU1JDX1VSSSIsICJzaGEyNTZzdW0iLCBoYXNobGliLnNoYTI1NihzdHJpbmcpLmhleGRpZ2VzdCgpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgInRlc3QtZmlsZS50YXIuZ3oiKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICJ0ZXN0LWZpbGUudGFyLmd6LmRvbmUiKSkpCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbImh0dHA6Ly9pbnZhbGlkLnlvY3RvcHJvamVjdC5vcmcvdGVzdC1maWxlLnRhci5neiJdLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICJ0ZXN0LWZpbGUudGFyLmd6LmRvbmUiKSkpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX21pc3NpbmdfZG9uZXN0YW1wKHNlbGYpOgorICAgICAgICAjIGNyZWF0ZSBhbiBpbnZhbGlkIGZpbGUgaW4gdGhlIGRvd25sb2FkIGRpcmVjdG9yeSB3aXRoIGluY29ycmVjdCBoYXNoCisgICAgICAgIHN0cmluZyA9ICJ0aGlzIGlzIGEgdGVzdCBmaWxlXG4iLmVuY29kZSgidXRmLTgiKQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICJ0ZXN0LWZpbGUudGFyLmd6IiksICJ3YiIpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuZC5zZXRWYXJGbGFnKCJTUkNfVVJJIiwgIm1kNXN1bSIsIGhhc2hsaWIubWQ1KHN0cmluZykuaGV4ZGlnZXN0KCkpCisgICAgICAgIHNlbGYuZC5zZXRWYXJGbGFnKCJTUkNfVVJJIiwgInNoYTI1NnN1bSIsIGhhc2hsaWIuc2hhMjU2KHN0cmluZykuaGV4ZGlnZXN0KCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAidGVzdC1maWxlLnRhci5neiIpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgInRlc3QtZmlsZS50YXIuZ3ouZG9uZSIpKSkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsiaHR0cDovL2ludmFsaWQueW9jdG9wcm9qZWN0Lm9yZy90ZXN0LWZpbGUudGFyLmd6Il0sIHNlbGYuZCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuTmV0d29ya0FjY2Vzcyk6CisgICAgICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgIyB0aGUgZXhpc3RpbmcgZmlsZSBzaG91bGQgbm90IGV4aXN0IG9yIHNob3VsZCBoYXZlIGJlIG1vdmVkIHRvICJiYWQtY2hlY2tzdW0iCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICJ0ZXN0LWZpbGUudGFyLmd6IikpKQorCisgICAgZGVmIHRlc3Rfbm9jaGVja3N1bXNfbWlzc2luZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgInRlc3QtZmlsZS50YXIuZ3oiKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICJ0ZXN0LWZpbGUudGFyLmd6LmRvbmUiKSkpCisgICAgICAgICMgc3NoIGZldGNoIGRvZXMgbm90IHN1cHBvcnQgY2hlY2tzdW1zCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbInNzaDovL2ludmFsaWRAaW52YWxpZC55b2N0b3Byb2plY3Qub3JnL3Rlc3QtZmlsZS50YXIuZ3oiXSwgc2VsZi5kKQorICAgICAgICAjIGF0dGVtcHRzIHRvIGRvd25sb2FkIHdpdGggbWlzc2luZyBkb25lc3RhbXAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuTmV0d29ya0FjY2Vzcyk6CisgICAgICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKworICAgIGRlZiB0ZXN0X25vY2hlY2tzdW1zX21pc3NpbmdfZG9uZXN0YW1wKHNlbGYpOgorICAgICAgICAjIGNyZWF0ZSBhIGZpbGUgaW4gdGhlIGRvd25sb2FkIGRpcmVjdG9yeQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICJ0ZXN0LWZpbGUudGFyLmd6IiksICJ3YiIpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgInRlc3QtZmlsZS50YXIuZ3oiKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICJ0ZXN0LWZpbGUudGFyLmd6LmRvbmUiKSkpCisgICAgICAgICMgc3NoIGZldGNoIGRvZXMgbm90IHN1cHBvcnQgY2hlY2tzdW1zCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbInNzaDovL2ludmFsaWRAaW52YWxpZC55b2N0b3Byb2plY3Qub3JnL3Rlc3QtZmlsZS50YXIuZ3oiXSwgc2VsZi5kKQorICAgICAgICAjIGF0dGVtcHRzIHRvIGRvd25sb2FkIHdpdGggbWlzc2luZyBkb25lc3RhbXAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuTmV0d29ya0FjY2Vzcyk6CisgICAgICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKworICAgIGRlZiB0ZXN0X25vY2hlY2tzdW1zX2hhc19kb25lc3RhbXAoc2VsZik6CisgICAgICAgICMgY3JlYXRlIGEgZmlsZSBpbiB0aGUgZG93bmxvYWQgZGlyZWN0b3J5IHdpdGggdGhlIGRvbmVzdGFtcAorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICJ0ZXN0LWZpbGUudGFyLmd6IiksICJ3YiIpOgorICAgICAgICAgICAgcGFzcworICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICJ0ZXN0LWZpbGUudGFyLmd6LmRvbmUiKSwgIndiIik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAidGVzdC1maWxlLnRhci5neiIpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAidGVzdC1maWxlLnRhci5nei5kb25lIikpKQorICAgICAgICAjIHNzaCBmZXRjaCBkb2VzIG5vdCBzdXBwb3J0IGNoZWNrc3VtcworICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyJzc2g6Ly9pbnZhbGlkQGludmFsaWQueW9jdG9wcm9qZWN0Lm9yZy90ZXN0LWZpbGUudGFyLmd6Il0sIHNlbGYuZCkKKyAgICAgICAgIyBzaG91bGQgbm90IGZldGNoCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICAjIGJvdGggZmlsZXMgc2hvdWxkIHN0aWxsIGV4aXN0CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgInRlc3QtZmlsZS50YXIuZ3oiKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgInRlc3QtZmlsZS50YXIuZ3ouZG9uZSIpKSkKKworICAgIGRlZiB0ZXN0X25vY2hlY2tzdW1zX21pc3NpbmdfaGFzX2RvbmVzdGFtcChzZWxmKToKKyAgICAgICAgIyBjcmVhdGUgYSBmaWxlIGluIHRoZSBkb3dubG9hZCBkaXJlY3Rvcnkgd2l0aCB0aGUgZG9uZXN0YW1wCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgInRlc3QtZmlsZS50YXIuZ3ouZG9uZSIpLCAid2IiKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAidGVzdC1maWxlLnRhci5neiIpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAidGVzdC1maWxlLnRhci5nei5kb25lIikpKQorICAgICAgICAjIHNzaCBmZXRjaCBkb2VzIG5vdCBzdXBwb3J0IGNoZWNrc3VtcworICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyJzc2g6Ly9pbnZhbGlkQGludmFsaWQueW9jdG9wcm9qZWN0Lm9yZy90ZXN0LWZpbGUudGFyLmd6Il0sIHNlbGYuZCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuTmV0d29ya0FjY2Vzcyk6CisgICAgICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgIyBib3RoIGZpbGVzIHNob3VsZCBzdGlsbCBleGlzdAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAidGVzdC1maWxlLnRhci5neiIpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgInRlc3QtZmlsZS50YXIuZ3ouZG9uZSIpKSkKKwogY2xhc3MgRmV0Y2hlck5ldHdvcmtUZXN0KEZldGNoZXJUZXN0KToKICAgICBAc2tpcElmTm9OZXR3b3JrKCkKICAgICBkZWYgdGVzdF9mZXRjaChzZWxmKToKQEAgLTgwOSw3ICs5MTMsNyBAQAogICAgICAgICAgICAgdWQgPSBiYi5mZXRjaDIuRmV0Y2hEYXRhKGtbMV0sIHNlbGYuZCkKICAgICAgICAgICAgIHB1cHZlcj0gdWQubWV0aG9kLmxhdGVzdF92ZXJzaW9uc3RyaW5nKHVkLCBzZWxmLmQpCiAgICAgICAgICAgICB2ZXJzdHJpbmcgPSBwdXB2ZXJbMF0KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2ZXJzdHJpbmcsIG1zZz0iQ291bGQgbm90IGZpbmQgdXBzdHJlYW0gdmVyc2lvbiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodmVyc3RyaW5nLCBtc2c9IkNvdWxkIG5vdCBmaW5kIHVwc3RyZWFtIHZlcnNpb24gZm9yICVzIiAlIGtbMF0pCiAgICAgICAgICAgICByID0gYmIudXRpbHMudmVyY21wX3N0cmluZyh2LCB2ZXJzdHJpbmcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUociA9PSAtMSBvciByID09IDAsIG1zZz0iUGFja2FnZSAlcywgdmVyc2lvbjogJXMgPD0gJXMiICUgKGtbMF0sIHYsIHZlcnN0cmluZykpCiAKQEAgLTgyMiw3ICs5MjYsNyBAQAogICAgICAgICAgICAgdWQgPSBiYi5mZXRjaDIuRmV0Y2hEYXRhKGtbMV0sIHNlbGYuZCkKICAgICAgICAgICAgIHB1cHZlciA9IHVkLm1ldGhvZC5sYXRlc3RfdmVyc2lvbnN0cmluZyh1ZCwgc2VsZi5kKQogICAgICAgICAgICAgdmVyc3RyaW5nID0gcHVwdmVyWzBdCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodmVyc3RyaW5nLCBtc2c9IkNvdWxkIG5vdCBmaW5kIHVwc3RyZWFtIHZlcnNpb24iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHZlcnN0cmluZywgbXNnPSJDb3VsZCBub3QgZmluZCB1cHN0cmVhbSB2ZXJzaW9uIGZvciAlcyIgJSBrWzBdKQogICAgICAgICAgICAgciA9IGJiLnV0aWxzLnZlcmNtcF9zdHJpbmcodiwgdmVyc3RyaW5nKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIgPT0gLTEgb3IgciA9PSAwLCBtc2c9IlBhY2thZ2UgJXMsIHZlcnNpb246ICVzIDw9ICVzIiAlIChrWzBdLCB2LCB2ZXJzdHJpbmcpKQogCkBAIC04NzQsOSArOTc4LDYgQEAKIAogCiBjbGFzcyBHaXRNYWtlU2hhbGxvd1Rlc3QoRmV0Y2hlclRlc3QpOgotICAgIGJpdGJha2VfZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmpvaW4oX19maWxlX18pKSwgJy4uJywgJy4uJywgJy4uJykKLSAgICBtYWtlX3NoYWxsb3dfcGF0aCA9IG9zLnBhdGguam9pbihiaXRiYWtlX2RpciwgJ2JpbicsICdnaXQtbWFrZS1zaGFsbG93JykKLQogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgRmV0Y2hlclRlc3Quc2V0VXAoc2VsZikKICAgICAgICAgc2VsZi5naXRkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnZ2l0c2hhbGxvdycpCkBAIC05MDUsNyArMTAwNiw3IEBACiAgICAgZGVmIG1ha2Vfc2hhbGxvdyhzZWxmLCBhcmdzPU5vbmUpOgogICAgICAgICBpZiBhcmdzIGlzIE5vbmU6CiAgICAgICAgICAgICBhcmdzID0gWydIRUFEJ10KLSAgICAgICAgcmV0dXJuIGJiLnByb2Nlc3MucnVuKFtzZWxmLm1ha2Vfc2hhbGxvd19wYXRoXSArIGFyZ3MsIGN3ZD1zZWxmLmdpdGRpcikKKyAgICAgICAgcmV0dXJuIGJiLnByb2Nlc3MucnVuKFtiYi5mZXRjaDIuZ2l0LkdpdC5tYWtlX3NoYWxsb3dfcGF0aF0gKyBhcmdzLCBjd2Q9c2VsZi5naXRkaXIpCiAKICAgICBkZWYgYWRkX2VtcHR5X2ZpbGUoc2VsZiwgcGF0aCwgbXNnPU5vbmUpOgogICAgICAgICBpZiBtc2cgaXMgTm9uZToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi90aW5mb2lsLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3RpbmZvaWwucHkKaW5kZXggZmE5NWY2My4uMzY4MjY0ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3RpbmZvaWwucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3RpbmZvaWwucHkKQEAgLTYwNCwxMyArNjA0LDE2IEBACiAgICAgICAgIHJlY2lwZWNhY2hlID0gc2VsZi5jb29rZXIucmVjaXBlY2FjaGVzW21jXQogICAgICAgICBwcm92ID0gc2VsZi5maW5kX2Jlc3RfcHJvdmlkZXIocG4pCiAgICAgICAgIGZuID0gcHJvdlszXQotICAgICAgICBhY3R1YWxfcG4gPSByZWNpcGVjYWNoZS5wa2dfZm5bZm5dCi0gICAgICAgIHJlY2lwZSA9IFRpbmZvaWxSZWNpcGVJbmZvKHJlY2lwZWNhY2hlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25maWdfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBuPWFjdHVhbF9wbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuPWZuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm5zPXJlY2lwZWNhY2hlLnBrZ19wblthY3R1YWxfcG5dKQotICAgICAgICByZXR1cm4gcmVjaXBlCisgICAgICAgIGlmIGZuOgorICAgICAgICAgICAgYWN0dWFsX3BuID0gcmVjaXBlY2FjaGUucGtnX2ZuW2ZuXQorICAgICAgICAgICAgcmVjaXBlID0gVGluZm9pbFJlY2lwZUluZm8ocmVjaXBlY2FjaGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25maWdfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbj1hY3R1YWxfcG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm49Zm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm5zPXJlY2lwZWNhY2hlLnBrZ19wblthY3R1YWxfcG5dKQorICAgICAgICAgICAgcmV0dXJuIHJlY2lwZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiBwYXJzZV9yZWNpcGUoc2VsZiwgcG4pOgogICAgICAgICAiIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi91dGlscy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYi91dGlscy5weQppbmRleCBjNTQwYjQ5Li4zNzhlNjk5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmIvdXRpbHMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JiL3V0aWxzLnB5CkBAIC0xODcsNyArMTg3LDcgQEAKICAgICAgICAgICAgICNyWy0xXSArPSAnICcgKyAnICcuam9pbihqKQogICAgIHJldHVybiByCiAKLWRlZiBleHBsb2RlX2RlcF92ZXJzaW9uczIocyk6CitkZWYgZXhwbG9kZV9kZXBfdmVyc2lvbnMyKHMsICosIHNvcnQ9VHJ1ZSk6CiAgICAgIiIiCiAgICAgVGFrZSBhbiBSREVQRU5EUyBzdHlsZSBzdHJpbmcgb2YgZm9ybWF0OgogICAgICJERVBFTkQxIChvcHRpb25hbCB2ZXJzaW9uKSBERVBFTkQyIChvcHRpb25hbCB2ZXJzaW9uKSAuLi4iCkBAIC0yNTAsNyArMjUwLDggQEAKICAgICAgICAgaWYgbm90IChpIGluIHIgYW5kIHJbaV0pOgogICAgICAgICAgICAgcltsYXN0ZGVwXSA9IFtdCiAKLSAgICByID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3Qoc29ydGVkKHIuaXRlbXMoKSwga2V5PWxhbWJkYSB4OiB4WzBdKSkKKyAgICBpZiBzb3J0OgorICAgICAgICByID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3Qoc29ydGVkKHIuaXRlbXMoKSwga2V5PWxhbWJkYSB4OiB4WzBdKSkKICAgICByZXR1cm4gcgogCiBkZWYgZXhwbG9kZV9kZXBfdmVyc2lvbnMocyk6CkBAIC04MDYsOCArODA3LDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZSAjIGZhaWx1cmUKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgZGlkY29weToKLSAgICAgICAgICAgICAgICBvcy5sY2hvd24oZGVzdCwgc3N0YXRbc3RhdC5TVF9VSURdLCBzc3RhdFtzdGF0LlNUX0dJRF0pCi0gICAgICAgICAgICAgICAgb3MuY2htb2QoZGVzdCwgc3RhdC5TX0lNT0RFKHNzdGF0W3N0YXQuU1RfTU9ERV0pKSAjIFN0aWNreSBpcyByZXNldCBvbiBjaG93bgorICAgICAgICAgICAgICAgIG9zLmxjaG93bihkZXN0cGF0aCwgc3N0YXRbc3RhdC5TVF9VSURdLCBzc3RhdFtzdGF0LlNUX0dJRF0pCisgICAgICAgICAgICAgICAgb3MuY2htb2QoZGVzdHBhdGgsIHN0YXQuU19JTU9ERShzc3RhdFtzdGF0LlNUX01PREVdKSkgIyBTdGlja3kgaXMgcmVzZXQgb24gY2hvd24KICAgICAgICAgICAgICAgICBvcy51bmxpbmsoc3JjKQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICBwcmludCgibW92ZWZpbGU6IEZhaWxlZCB0byBjaG93bi9jaG1vZC91bmxpbmsiLCBkZXN0LCBlKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL2FjdGlvbi5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9hY3Rpb24ucHkKaW5kZXggYjEzMjZlNS4uYWE1NzVkMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL2FjdGlvbi5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmJsYXllcnMvYWN0aW9uLnB5CkBAIC0xOCwxNiArMTgsMTggQEAKIAogY2xhc3MgQWN0aW9uUGx1Z2luKExheWVyUGx1Z2luKToKICAgICBkZWYgZG9fYWRkX2xheWVyKHNlbGYsIGFyZ3MpOgotICAgICAgICAiIiJBZGQgYSBsYXllciB0byBiYmxheWVycy5jb25mLiIiIgotICAgICAgICBsYXllcmRpciA9IG9zLnBhdGguYWJzcGF0aChhcmdzLmxheWVyZGlyKQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobGF5ZXJkaXIpOgotICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiU3BlY2lmaWVkIGxheWVyIGRpcmVjdG9yeSBkb2Vzbid0IGV4aXN0XG4iKQotICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgIiIiQWRkIG9uZSBvciBtb3JlIGxheWVycyB0byBiYmxheWVycy5jb25mLiIiIgorICAgICAgICBsYXllcmRpcnMgPSBbb3MucGF0aC5hYnNwYXRoKGxkaXIpIGZvciBsZGlyIGluIGFyZ3MubGF5ZXJkaXJdCiAKLSAgICAgICAgbGF5ZXJfY29uZiA9IG9zLnBhdGguam9pbihsYXllcmRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhsYXllcl9jb25mKToKLSAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlNwZWNpZmllZCBsYXllciBkaXJlY3RvcnkgZG9lc24ndCBjb250YWluIGEgY29uZi9sYXllci5jb25mIGZpbGVcbiIpCi0gICAgICAgICAgICByZXR1cm4gMQorICAgICAgICBmb3IgbGF5ZXJkaXIgaW4gbGF5ZXJkaXJzOgorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGxheWVyZGlyKToKKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJTcGVjaWZpZWQgbGF5ZXIgZGlyZWN0b3J5ICVzIGRvZXNuJ3QgZXhpc3RcbiIgJSBsYXllcmRpcikKKyAgICAgICAgICAgICAgICByZXR1cm4gMQorCisgICAgICAgICAgICBsYXllcl9jb25mID0gb3MucGF0aC5qb2luKGxheWVyZGlyLCAnY29uZicsICdsYXllci5jb25mJykKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhsYXllcl9jb25mKToKKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJTcGVjaWZpZWQgbGF5ZXIgZGlyZWN0b3J5ICVzIGRvZXNuJ3QgY29udGFpbiBhIGNvbmYvbGF5ZXIuY29uZiBmaWxlXG4iICUgbGF5ZXJkaXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIDEKIAogICAgICAgICBiYmxheWVyc19jb25mID0gb3MucGF0aC5qb2luKCdjb25mJywgJ2JibGF5ZXJzLmNvbmYnKQogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoYmJsYXllcnNfY29uZik6CkBAIC00MCw3ICs0Miw3IEBACiAgICAgICAgIHNodXRpbC5jb3B5MihiYmxheWVyc19jb25mLCBiYWNrdXApCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgbm90YWRkZWQsIF8gPSBiYi51dGlscy5lZGl0X2JibGF5ZXJzX2NvbmYoYmJsYXllcnNfY29uZiwgbGF5ZXJkaXIsIE5vbmUpCisgICAgICAgICAgICBub3RhZGRlZCwgXyA9IGJiLnV0aWxzLmVkaXRfYmJsYXllcnNfY29uZihiYmxheWVyc19jb25mLCBsYXllcmRpcnMsIE5vbmUpCiAgICAgICAgICAgICBpZiBub3QgKGFyZ3MuZm9yY2Ugb3Igbm90YWRkZWQpOgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgc2VsZi50aW5mb2lsLnBhcnNlUmVjaXBlcygpCkBAIC01NiwxOSArNTgsMjIgQEAKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUodGVtcGRpcikKIAogICAgIGRlZiBkb19yZW1vdmVfbGF5ZXIoc2VsZiwgYXJncyk6Ci0gICAgICAgICIiIlJlbW92ZSBhIGxheWVyIGZyb20gYmJsYXllcnMuY29uZi4iIiIKKyAgICAgICAgIiIiUmVtb3ZlIG9uZSBvciBtb3JlIGxheWVycyBmcm9tIGJibGF5ZXJzLmNvbmYuIiIiCiAgICAgICAgIGJibGF5ZXJzX2NvbmYgPSBvcy5wYXRoLmpvaW4oJ2NvbmYnLCAnYmJsYXllcnMuY29uZicpCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhiYmxheWVyc19jb25mKToKICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlVuYWJsZSB0byBmaW5kIGJibGF5ZXJzLmNvbmZcbiIpCiAgICAgICAgICAgICByZXR1cm4gMQogCi0gICAgICAgIGlmIGFyZ3MubGF5ZXJkaXIuc3RhcnRzd2l0aCgnKicpOgotICAgICAgICAgICAgbGF5ZXJkaXIgPSBhcmdzLmxheWVyZGlyCi0gICAgICAgIGVsaWYgbm90ICcvJyBpbiBhcmdzLmxheWVyZGlyOgotICAgICAgICAgICAgbGF5ZXJkaXIgPSAnKi8lcycgJSBhcmdzLmxheWVyZGlyCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsYXllcmRpciA9IG9zLnBhdGguYWJzcGF0aChhcmdzLmxheWVyZGlyKQotICAgICAgICAoXywgbm90cmVtb3ZlZCkgPSBiYi51dGlscy5lZGl0X2JibGF5ZXJzX2NvbmYoYmJsYXllcnNfY29uZiwgTm9uZSwgbGF5ZXJkaXIpCisgICAgICAgIGxheWVyZGlycyA9IFtdCisgICAgICAgIGZvciBpdGVtIGluIGFyZ3MubGF5ZXJkaXI6CisgICAgICAgICAgICBpZiBpdGVtLnN0YXJ0c3dpdGgoJyonKToKKyAgICAgICAgICAgICAgICBsYXllcmRpciA9IGl0ZW0KKyAgICAgICAgICAgIGVsaWYgbm90ICcvJyBpbiBpdGVtOgorICAgICAgICAgICAgICAgIGxheWVyZGlyID0gJyovJXMnICUgaXRlbQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsYXllcmRpciA9IG9zLnBhdGguYWJzcGF0aChpdGVtKQorICAgICAgICAgICAgbGF5ZXJkaXJzLmFwcGVuZChsYXllcmRpcikKKyAgICAgICAgKF8sIG5vdHJlbW92ZWQpID0gYmIudXRpbHMuZWRpdF9iYmxheWVyc19jb25mKGJibGF5ZXJzX2NvbmYsIE5vbmUsIGxheWVyZGlycykKICAgICAgICAgaWYgbm90cmVtb3ZlZDoKICAgICAgICAgICAgIGZvciBpdGVtIGluIG5vdHJlbW92ZWQ6CiAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiTm8gbGF5ZXJzIG1hdGNoaW5nICVzIGZvdW5kIGluIEJCTEFZRVJTXG4iICUgaXRlbSkKQEAgLTI0MCwxMCArMjQ1LDEwIEBACiAKICAgICBkZWYgcmVnaXN0ZXJfY29tbWFuZHMoc2VsZiwgc3ApOgogICAgICAgICBwYXJzZXJfYWRkX2xheWVyID0gc2VsZi5hZGRfY29tbWFuZChzcCwgJ2FkZC1sYXllcicsIHNlbGYuZG9fYWRkX2xheWVyLCBwYXJzZXJlY2lwZXM9RmFsc2UpCi0gICAgICAgIHBhcnNlcl9hZGRfbGF5ZXIuYWRkX2FyZ3VtZW50KCdsYXllcmRpcicsIGhlbHA9J0xheWVyIGRpcmVjdG9yeSB0byBhZGQnKQorICAgICAgICBwYXJzZXJfYWRkX2xheWVyLmFkZF9hcmd1bWVudCgnbGF5ZXJkaXInLCBuYXJncz0nKycsIGhlbHA9J0xheWVyIGRpcmVjdG9yeS9kaXJlY3RvcmllcyB0byBhZGQnKQogCiAgICAgICAgIHBhcnNlcl9yZW1vdmVfbGF5ZXIgPSBzZWxmLmFkZF9jb21tYW5kKHNwLCAncmVtb3ZlLWxheWVyJywgc2VsZi5kb19yZW1vdmVfbGF5ZXIsIHBhcnNlcmVjaXBlcz1GYWxzZSkKLSAgICAgICAgcGFyc2VyX3JlbW92ZV9sYXllci5hZGRfYXJndW1lbnQoJ2xheWVyZGlyJywgaGVscD0nTGF5ZXIgZGlyZWN0b3J5IHRvIHJlbW92ZSAod2lsZGNhcmRzIGFsbG93ZWQsIGVuY2xvc2UgaW4gcXVvdGVzIHRvIGF2b2lkIHNoZWxsIGV4cGFuc2lvbiknKQorICAgICAgICBwYXJzZXJfcmVtb3ZlX2xheWVyLmFkZF9hcmd1bWVudCgnbGF5ZXJkaXInLCBuYXJncz0nKycsIGhlbHA9J0xheWVyIGRpcmVjdG9yeS9kaXJlY3RvcmllcyB0byByZW1vdmUgKHdpbGRjYXJkcyBhbGxvd2VkLCBlbmNsb3NlIGluIHF1b3RlcyB0byBhdm9pZCBzaGVsbCBleHBhbnNpb24pJykKICAgICAgICAgcGFyc2VyX3JlbW92ZV9sYXllci5zZXRfZGVmYXVsdHMoZnVuYz1zZWxmLmRvX3JlbW92ZV9sYXllcikKIAogICAgICAgICBwYXJzZXJfZmxhdHRlbiA9IHNlbGYuYWRkX2NvbW1hbmQoc3AsICdmbGF0dGVuJywgc2VsZi5kb19mbGF0dGVuKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL3F1ZXJ5LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL3F1ZXJ5LnB5CmluZGV4IGJlZjNhZjMuLjkyOTRkZmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9xdWVyeS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvYmJsYXllcnMvcXVlcnkucHkKQEAgLTE2MSw3ICsxNjEsMTIgQEAKICAgICAgICAgaXRlbXNfbGlzdGVkID0gRmFsc2UKICAgICAgICAgZm9yIHAgaW4gc29ydGVkKHBrZ19wbik6CiAgICAgICAgICAgICBpZiBwbnNwZWM6Ci0gICAgICAgICAgICAgICAgaWYgbm90IGZubWF0Y2guZm5tYXRjaChwLCBwbnNwZWMpOgorICAgICAgICAgICAgICAgIGZvdW5kPUZhbHNlCisgICAgICAgICAgICAgICAgZm9yIHBubSBpbiBwbnNwZWM6CisgICAgICAgICAgICAgICAgICAgIGlmIGZubWF0Y2guZm5tYXRjaChwLCBwbm0pOgorICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQ9VHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBpZiBub3QgZm91bmQ6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgIGlmIGxlbihhbGxwcm92aWRlcnNbcF0pID4gMSBvciBub3Qgc2hvd19tdWx0aV9wcm92aWRlcl9vbmx5OgpAQCAtMjUxLDggKzI1NiwxNCBAQAogICAgICAgICBwbmxpc3Quc29ydCgpCiAgICAgICAgIGFwcGVuZHMgPSBGYWxzZQogICAgICAgICBmb3IgcG4gaW4gcG5saXN0OgotICAgICAgICAgICAgaWYgYXJncy5wbnNwZWMgYW5kIHBuICE9IGFyZ3MucG5zcGVjOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBhcmdzLnBuc3BlYzoKKyAgICAgICAgICAgICAgICBmb3VuZD1GYWxzZQorICAgICAgICAgICAgICAgIGZvciBwbm0gaW4gYXJncy5wbnNwZWM6CisgICAgICAgICAgICAgICAgICAgIGlmIGZubWF0Y2guZm5tYXRjaChwbiwgcG5tKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kPVRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgaWYgbm90IGZvdW5kOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICBpZiBzZWxmLnNob3dfYXBwZW5kc19mb3JfcG4ocG4pOgogICAgICAgICAgICAgICAgIGFwcGVuZHMgPSBUcnVlCkBAIC00NzksMTEgKzQ5MCwxMSBAQAogICAgICAgICBwYXJzZXJfc2hvd19yZWNpcGVzID0gc2VsZi5hZGRfY29tbWFuZChzcCwgJ3Nob3ctcmVjaXBlcycsIHNlbGYuZG9fc2hvd19yZWNpcGVzKQogICAgICAgICBwYXJzZXJfc2hvd19yZWNpcGVzLmFkZF9hcmd1bWVudCgnLWYnLCAnLS1maWxlbmFtZXMnLCBoZWxwPSdpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IGZvcm1hdHRpbmcsIGxpc3QgZmlsZW5hbWVzIG9mIGhpZ2hlciBwcmlvcml0eSByZWNpcGVzIHdpdGggdGhlIG9uZXMgdGhleSBvdmVybGF5IGluZGVudGVkIHVuZGVybmVhdGgnLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgICAgICBwYXJzZXJfc2hvd19yZWNpcGVzLmFkZF9hcmd1bWVudCgnLW0nLCAnLS1tdWx0aXBsZScsIGhlbHA9J29ubHkgbGlzdCB3aGVyZSBtdWx0aXBsZSByZWNpcGVzIChpbiB0aGUgc2FtZSBsYXllciBvciBkaWZmZXJlbnQgbGF5ZXJzKSBleGlzdCBmb3IgdGhlIHNhbWUgcmVjaXBlIG5hbWUnLCBhY3Rpb249J3N0b3JlX3RydWUnKQotICAgICAgICBwYXJzZXJfc2hvd19yZWNpcGVzLmFkZF9hcmd1bWVudCgnLWknLCAnLS1pbmhlcml0cycsIGhlbHA9J29ubHkgbGlzdCByZWNpcGVzIHRoYXQgaW5oZXJpdCB0aGUgbmFtZWQgY2xhc3MnLCBtZXRhdmFyPSdDTEFTUycsIGRlZmF1bHQ9JycpCi0gICAgICAgIHBhcnNlcl9zaG93X3JlY2lwZXMuYWRkX2FyZ3VtZW50KCdwbnNwZWMnLCBuYXJncz0nPycsIGhlbHA9J29wdGlvbmFsIHJlY2lwZSBuYW1lIHNwZWNpZmljYXRpb24gKHdpbGRjYXJkcyBhbGxvd2VkLCBlbmNsb3NlIGluIHF1b3RlcyB0byBhdm9pZCBzaGVsbCBleHBhbnNpb24pJykKKyAgICAgICAgcGFyc2VyX3Nob3dfcmVjaXBlcy5hZGRfYXJndW1lbnQoJy1pJywgJy0taW5oZXJpdHMnLCBoZWxwPSdvbmx5IGxpc3QgcmVjaXBlcyB0aGF0IGluaGVyaXQgdGhlIG5hbWVkIGNsYXNzKGVzKSAtIHNlcGFyYXRlIG11bHRpcGxlIGNsYXNzZXMgdXNpbmcgLCAod2l0aG91dCBzcGFjZXMpJywgbWV0YXZhcj0nQ0xBU1MnLCBkZWZhdWx0PScnKQorICAgICAgICBwYXJzZXJfc2hvd19yZWNpcGVzLmFkZF9hcmd1bWVudCgncG5zcGVjJywgbmFyZ3M9JyonLCBoZWxwPSdvcHRpb25hbCByZWNpcGUgbmFtZSBzcGVjaWZpY2F0aW9uICh3aWxkY2FyZHMgYWxsb3dlZCwgZW5jbG9zZSBpbiBxdW90ZXMgdG8gYXZvaWQgc2hlbGwgZXhwYW5zaW9uKScpCiAKICAgICAgICAgcGFyc2VyX3Nob3dfYXBwZW5kcyA9IHNlbGYuYWRkX2NvbW1hbmQoc3AsICdzaG93LWFwcGVuZHMnLCBzZWxmLmRvX3Nob3dfYXBwZW5kcykKLSAgICAgICAgcGFyc2VyX3Nob3dfYXBwZW5kcy5hZGRfYXJndW1lbnQoJ3Buc3BlYycsIG5hcmdzPSc/JywgaGVscD0nb3B0aW9uYWwgcmVjaXBlIG5hbWUgc3BlY2lmaWNhdGlvbiAod2lsZGNhcmRzIGFsbG93ZWQsIGVuY2xvc2UgaW4gcXVvdGVzIHRvIGF2b2lkIHNoZWxsIGV4cGFuc2lvbiknKQorICAgICAgICBwYXJzZXJfc2hvd19hcHBlbmRzLmFkZF9hcmd1bWVudCgncG5zcGVjJywgbmFyZ3M9JyonLCBoZWxwPSdvcHRpb25hbCByZWNpcGUgbmFtZSBzcGVjaWZpY2F0aW9uICh3aWxkY2FyZHMgYWxsb3dlZCwgZW5jbG9zZSBpbiBxdW90ZXMgdG8gYXZvaWQgc2hlbGwgZXhwYW5zaW9uKScpCiAKICAgICAgICAgcGFyc2VyX3Nob3dfY3Jvc3NfZGVwZW5kcyA9IHNlbGYuYWRkX2NvbW1hbmQoc3AsICdzaG93LWNyb3NzLWRlcGVuZHMnLCBzZWxmLmRvX3Nob3dfY3Jvc3NfZGVwZW5kcykKICAgICAgICAgcGFyc2VyX3Nob3dfY3Jvc3NfZGVwZW5kcy5hZGRfYXJndW1lbnQoJy1mJywgJy0tZmlsZW5hbWVzJywgaGVscD0nc2hvdyBmdWxsIGZpbGUgcGF0aCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL2xvY2FsaG9zdGJlY29udHJvbGxlci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbG9jYWxob3N0YmVjb250cm9sbGVyLnB5CmluZGV4IDRjMTc1NjIuLjE2YzdjODAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbG9jYWxob3N0YmVjb250cm9sbGVyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbG9jYWxob3N0YmVjb250cm9sbGVyLnB5CkBAIC0xOTIsNyArMTkyLDcgQEAKICAgICAgICAgICAgIGlmIGNvbW1pdCAhPSAiSEVBRCI6CiAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJsb2NhbGhvc3RiZWNvbnRyb2xsZXI6IGNoZWNraW5nIG91dCBjb21taXQgJXMgdG8gJXMgIiAlIChjb21taXQsIGxvY2FsZGlybmFtZSkpCiAgICAgICAgICAgICAgICAgcmVmID0gY29tbWl0IGlmIHJlLm1hdGNoKCdeW2EtZkEtRjAtOV0rJCcsIGNvbW1pdCkgZWxzZSAnb3JpZ2luLyVzJyAlIGNvbW1pdAotICAgICAgICAgICAgICAgIHNlbGYuX3NoZWxsY21kKCdnaXQgZmV0Y2ggLS1hbGwgJiYgZ2l0IHJlc2V0IC0taGFyZCAiJXMiJyAlIHJlZiwgbG9jYWxkaXJuYW1lLGVudj1naXRfZW52KQorICAgICAgICAgICAgICAgIHNlbGYuX3NoZWxsY21kKCdnaXQgZmV0Y2ggJiYgZ2l0IHJlc2V0IC0taGFyZCAiJXMiJyAlIHJlZiwgbG9jYWxkaXJuYW1lLGVudj1naXRfZW52KQogCiAgICAgICAgICAgICAjIHRha2UgdGhlIGxvY2FsZGlybmFtZSBhcyBwb2t5IGRpciBpZiB3ZSBjYW4gZmluZCB0aGUgb2UtaW5pdC1idWlsZC1lbnYKICAgICAgICAgICAgIGlmIHNlbGYucG9reWRpcm5hbWUgaXMgTm9uZSBhbmQgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGxvY2FsZGlybmFtZSwgIm9lLWluaXQtYnVpbGQtZW52IikpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9tYW5hZ2VtZW50L2NvbW1hbmRzL2NoZWNrc2V0dGluZ3MucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvY2hlY2tzZXR0aW5ncy5weQppbmRleCA1ODIxMTRhLi44MjNjNmYxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvY2hlY2tzZXR0aW5ncy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvY2hlY2tzZXR0aW5ncy5weQpAQCAtMTA3LDcgKzEwNywxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249Imlnbm9yZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9Il4uKk5vIGZpeHR1cmUgbmFtZWQuKiQiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJJbXBvcnRpbmcgY3VzdG9tIHNldHRpbmdzIGlmIHByZXNlbnQiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxfY29tbWFuZCgibG9hZGRhdGEiLCAiY3VzdG9tIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxfY29tbWFuZCgibG9hZGRhdGEiLCAiY3VzdG9tIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJOT1RFOiBvcHRpb25hbCBmaXh0dXJlICdjdXN0b20nIG5vdCBmb3VuZCIpCiAKICAgICAgICAgICAgICAgICAgICAgICAgICMgd2UgcnVuIGxzdXBkYXRlcyBhZnRlciBjb25maWcgdXBkYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiXG5GZXRjaGluZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBsYXllciBpbmRleCwgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL29lLWNvcmUueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL29lLWNvcmUueG1sCmluZGV4IDAwNzIwYzMuLmQ3ZWE3OGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9vZS1jb3JlLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvb2UtY29yZS54bWwKQEAgLTgsOSArOCw5IEBACiAKICAgPCEtLSBCaXRiYWtlIHZlcnNpb25zIHdoaWNoIGNvcnJlc3BvbmQgdG8gdGhlIG1ldGFkYXRhIHJlbGVhc2UgLS0+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5iaXRiYWtldmVyc2lvbiIgcGs9IjEiPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPnJvY2tvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5zdW1vPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJnaXR1cmwiPmdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2U8L2ZpZWxkPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCI+MS4zNjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj4xLjM4PC9maWVsZD4KICAgPC9vYmplY3Q+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5iaXRiYWtldmVyc2lvbiIgcGs9IjIiPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPkhFQUQ8L2ZpZWxkPgpAQCAtMjIsMTQgKzIyLDE5IEBACiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZ2l0dXJsIj5naXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPm1hc3RlcjwvZmllbGQ+CiAgIDwvb2JqZWN0PgorICA8b2JqZWN0IG1vZGVsPSJvcm0uYml0YmFrZXZlcnNpb24iIHBrPSI0Ij4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5yb2NrbzwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZ2l0dXJsIj5naXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPjEuMzY8L2ZpZWxkPgorICA8L29iamVjdD4KIAogICA8IS0tIFJlbGVhc2VzIGF2YWlsYWJsZSAtLT4KICAgPG9iamVjdCBtb2RlbD0ib3JtLnJlbGVhc2UiIHBrPSIxIj4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5yb2NrbzwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGVzY3JpcHRpb24iPk9wZW5lbWJlZGRlZCBSb2NrbzwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGVzY3JpcHRpb24iPk9wZW5lbWJlZGRlZCBTdW1vPC9maWVsZD4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0uYml0YmFrZXZlcnNpb24iIG5hbWU9ImJpdGJha2VfdmVyc2lvbiI+MTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoX25hbWUiPnJvY2tvPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iVGV4dEZpZWxkIiBuYW1lPSJoZWxwdGV4dCI+VG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPVwiaHR0cDovL2NnaXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZS9sb2cvP2g9cm9ja29cIiZndDtPcGVuRW1iZWRkZWQgUm9ja28mbHQ7L2EmZ3Q7IGJyYW5jaC48L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaF9uYW1lIj5zdW1vPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iVGV4dEZpZWxkIiBuYW1lPSJoZWxwdGV4dCI+VG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPVwiaHR0cDovL2NnaXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZS9sb2cvP2g9c3Vtb1wiJmd0O09wZW5FbWJlZGRlZCBTdW1vJmx0Oy9hJmd0OyBicmFuY2guPC9maWVsZD4KICAgPC9vYmplY3Q+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5yZWxlYXNlIiBwaz0iMiI+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+bG9jYWw8L2ZpZWxkPgpAQCAtNDUsNiArNTAsMTMgQEAKICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2hfbmFtZSI+bWFzdGVyPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iVGV4dEZpZWxkIiBuYW1lPSJoZWxwdGV4dCI+VG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPVwiaHR0cDovL2NnaXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZS9sb2cvXCImZ3Q7T3BlbkVtYmVkZGVkIG1hc3RlciZsdDsvYSZndDsgYnJhbmNoLjwvZmllbGQ+CiAgIDwvb2JqZWN0PgorICA8b2JqZWN0IG1vZGVsPSJvcm0ucmVsZWFzZSIgcGs9IjQiPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPnJvY2tvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkZXNjcmlwdGlvbiI+T3BlbmVtYmVkZGVkIFJvY2tvPC9maWVsZD4KKyAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0uYml0YmFrZXZlcnNpb24iIG5hbWU9ImJpdGJha2VfdmVyc2lvbiI+MTwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoX25hbWUiPnJvY2tvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iVGV4dEZpZWxkIiBuYW1lPSJoZWxwdGV4dCI+VG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPVwiaHR0cDovL2NnaXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZS9sb2cvP2g9cm9ja29cIiZndDtPcGVuRW1iZWRkZWQgUm9ja28mbHQ7L2EmZ3Q7IGJyYW5jaC48L2ZpZWxkPgorICA8L29iamVjdD4KIAogICA8IS0tIERlZmF1bHQgbGF5ZXJzIGZvciBlYWNoIHJlbGVhc2UgLS0+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5yZWxlYXNlZGVmYXVsdGxheWVyIiBwaz0iMSI+CkBAIC01OSw2ICs3MSwxMCBAQAogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIj4zPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJsYXllcl9uYW1lIj5vcGVuZW1iZWRkZWQtY29yZTwvZmllbGQ+CiAgIDwvb2JqZWN0PgorICA8b2JqZWN0IG1vZGVsPSJvcm0ucmVsZWFzZWRlZmF1bHRsYXllciIgcGs9IjQiPgorICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIj40PC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJsYXllcl9uYW1lIj5vcGVuZW1iZWRkZWQtY29yZTwvZmllbGQ+CisgIDwvb2JqZWN0PgogCiAKICAgPCEtLSBMYXllciBmb3IgdGhlIExvY2FsIHJlbGVhc2UgLS0+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvcG9reS54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvcG9reS54bWwKaW5kZXggMmYzOWQ3Ny4uNmM5NjZkYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL3Bva3kueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9wb2t5LnhtbApAQCAtOCw5ICs4LDkgQEAKIAogICA8IS0tIEJpdGJha2UgdmVyc2lvbnMgd2hpY2ggY29ycmVzcG9uZCB0byB0aGUgbWV0YWRhdGEgcmVsZWFzZSAtLT4KICAgPG9iamVjdCBtb2RlbD0ib3JtLmJpdGJha2V2ZXJzaW9uIiBwaz0iMSI+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+cm9ja288L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPnN1bW88L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImdpdHVybCI+Z2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5yb2NrbzwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5zdW1vPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIj5iaXRiYWtlPC9maWVsZD4KICAgPC9vYmplY3Q+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5iaXRiYWtldmVyc2lvbiIgcGs9IjIiPgpAQCAtMjUsMTUgKzI1LDIxIEBACiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5tYXN0ZXI8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRpcnBhdGgiPmJpdGJha2U8L2ZpZWxkPgogICA8L29iamVjdD4KKyAgPG9iamVjdCBtb2RlbD0ib3JtLmJpdGJha2V2ZXJzaW9uIiBwaz0iNCI+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+cm9ja288L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImdpdHVybCI+Z2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reTwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5yb2NrbzwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGlycGF0aCI+Yml0YmFrZTwvZmllbGQ+CisgIDwvb2JqZWN0PgogCiAKICAgPCEtLSBSZWxlYXNlcyBhdmFpbGFibGUgLS0+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5yZWxlYXNlIiBwaz0iMSI+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+cm9ja288L2ZpZWxkPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRlc2NyaXB0aW9uIj5Zb2N0byBQcm9qZWN0IDIuNCAiUm9ja28iPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5zdW1vPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkZXNjcmlwdGlvbiI+WW9jdG8gUHJvamVjdCAyLjUgIlN1bW8iPC9maWVsZD4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0uYml0YmFrZXZlcnNpb24iIG5hbWU9ImJpdGJha2VfdmVyc2lvbiI+MTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoX25hbWUiPnJvY2tvPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iVGV4dEZpZWxkIiBuYW1lPSJoZWxwdGV4dCI+VG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPSJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5L2xvZy8/aD1yb2NrbyImZ3Q7WW9jdG8gUHJvamVjdCBSb2NrbyBicmFuY2gmbHQ7L2EmZ3Q7LjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoX25hbWUiPnN1bW88L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJUZXh0RmllbGQiIG5hbWU9ImhlbHB0ZXh0Ij5Ub2FzdGVyIHdpbGwgcnVuIHlvdXIgYnVpbGRzIHVzaW5nIHRoZSB0aXAgb2YgdGhlICZsdDthIGhyZWY9Imh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3Bva3kvbG9nLz9oPXN1bW8iJmd0O1lvY3RvIFByb2plY3QgU3VtbyBicmFuY2gmbHQ7L2EmZ3Q7LjwvZmllbGQ+CiAgIDwvb2JqZWN0PgogICA8b2JqZWN0IG1vZGVsPSJvcm0ucmVsZWFzZSIgcGs9IjIiPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPmxvY2FsPC9maWVsZD4KQEAgLTQ5LDYgKzU1LDEzIEBACiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoX25hbWUiPm1hc3RlcjwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IlRleHRGaWVsZCIgbmFtZT0iaGVscHRleHQiPlRvYXN0ZXIgd2lsbCBydW4geW91ciBidWlsZHMgdXNpbmcgdGhlIHRpcCBvZiB0aGUgJmx0O2EgaHJlZj0iaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcG9reS9sb2cvIiZndDtZb2N0byBQcm9qZWN0IE1hc3RlciBicmFuY2gmbHQ7L2EmZ3Q7LjwvZmllbGQ+CiAgIDwvb2JqZWN0PgorICA8b2JqZWN0IG1vZGVsPSJvcm0ucmVsZWFzZSIgcGs9IjQiPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPnJvY2tvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkZXNjcmlwdGlvbiI+WW9jdG8gUHJvamVjdCAyLjQgIlJvY2tvIjwvZmllbGQ+CisgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmJpdGJha2V2ZXJzaW9uIiBuYW1lPSJiaXRiYWtlX3ZlcnNpb24iPjE8L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaF9uYW1lIj5yb2NrbzwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IlRleHRGaWVsZCIgbmFtZT0iaGVscHRleHQiPlRvYXN0ZXIgd2lsbCBydW4geW91ciBidWlsZHMgdXNpbmcgdGhlIHRpcCBvZiB0aGUgJmx0O2EgaHJlZj0iaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcG9reS9sb2cvP2g9cm9ja28iJmd0O1lvY3RvIFByb2plY3QgUm9ja28gYnJhbmNoJmx0Oy9hJmd0Oy48L2ZpZWxkPgorICA8L29iamVjdD4KIAogICA8IS0tIERlZmF1bHQgcHJvamVjdCBsYXllcnMgZm9yIGVhY2ggcmVsZWFzZSAtLT4KICAgPG9iamVjdCBtb2RlbD0ib3JtLnJlbGVhc2VkZWZhdWx0bGF5ZXIiIHBrPSIxIj4KQEAgLTg3LDYgKzEwMCwxOCBAQAogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIj4zPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJsYXllcl9uYW1lIj5tZXRhLXlvY3RvLWJzcDwvZmllbGQ+CiAgIDwvb2JqZWN0PgorICA8b2JqZWN0IG1vZGVsPSJvcm0ucmVsZWFzZWRlZmF1bHRsYXllciIgcGs9IjEwIj4KKyAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ucmVsZWFzZSIgbmFtZT0icmVsZWFzZSI+NDwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibGF5ZXJfbmFtZSI+b3BlbmVtYmVkZGVkLWNvcmU8L2ZpZWxkPgorICA8L29iamVjdD4KKyAgPG9iamVjdCBtb2RlbD0ib3JtLnJlbGVhc2VkZWZhdWx0bGF5ZXIiIHBrPSIxMSI+CisgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLnJlbGVhc2UiIG5hbWU9InJlbGVhc2UiPjQ8L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImxheWVyX25hbWUiPm1ldGEtcG9reTwvZmllbGQ+CisgIDwvb2JqZWN0PgorICA8b2JqZWN0IG1vZGVsPSJvcm0ucmVsZWFzZWRlZmF1bHRsYXllciIgcGs9IjEyIj4KKyAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ucmVsZWFzZSIgbmFtZT0icmVsZWFzZSI+NDwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibGF5ZXJfbmFtZSI+bWV0YS15b2N0by1ic3A8L2ZpZWxkPgorICA8L29iamVjdD4KIAogICA8IS0tIERlZmF1bHQgbGF5ZXJzIHByb3ZpZGVkIGJ5IHBva3kKICAgICAgICBvcGVuZW1iZWRkZWQtY29yZQpAQCAtMTA1LDcgKzEzMCw3IEBACiAgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmxheWVyIiBuYW1lPSJsYXllciI+MTwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkludGVnZXJGaWVsZCIgbmFtZT0ibGF5ZXJfc291cmNlIj4wPC9maWVsZD4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ucmVsZWFzZSIgbmFtZT0icmVsZWFzZSI+MTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5yb2NrbzwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5zdW1vPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIj5tZXRhPC9maWVsZD4KICAgPC9vYmplY3Q+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iMiI+CkBAIC0xMjMsNiArMTQ4LDEzIEBACiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5tYXN0ZXI8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRpcnBhdGgiPm1ldGE8L2ZpZWxkPgogICA8L29iamVjdD4KKyAgPG9iamVjdCBtb2RlbD0ib3JtLmxheWVyX3ZlcnNpb24iIHBrPSI0Ij4KKyAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ubGF5ZXIiIG5hbWU9ImxheWVyIj4xPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iSW50ZWdlckZpZWxkIiBuYW1lPSJsYXllcl9zb3VyY2UiPjA8L2ZpZWxkPgorICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIj40PC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPnJvY2tvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIj5tZXRhPC9maWVsZD4KKyAgPC9vYmplY3Q+CiAKICAgPG9iamVjdCBtb2RlbD0ib3JtLmxheWVyIiBwaz0iMiI+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+bWV0YS1wb2t5PC9maWVsZD4KQEAgLTEzMiwxNCArMTY0LDE0IEBACiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0idmNzX3dlYl90cmVlX2Jhc2VfdXJsIj5odHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5L3RyZWUvJXBhdGglP2g9JWJyYW5jaCU8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9InZjc193ZWJfZmlsZV9iYXNlX3VybCI+aHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlLyVwYXRoJT9oPSVicmFuY2glPC9maWVsZD4KICAgPC9vYmplY3Q+Ci0gIDxvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iNCI+CisgIDxvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iNSI+CiAgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmxheWVyIiBuYW1lPSJsYXllciI+MjwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkludGVnZXJGaWVsZCIgbmFtZT0ibGF5ZXJfc291cmNlIj4wPC9maWVsZD4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ucmVsZWFzZSIgbmFtZT0icmVsZWFzZSI+MTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5yb2NrbzwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5zdW1vPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIj5tZXRhLXBva3k8L2ZpZWxkPgogICA8L29iamVjdD4KLSAgPG9iamVjdCBtb2RlbD0ib3JtLmxheWVyX3ZlcnNpb24iIHBrPSI1Ij4KKyAgPG9iamVjdCBtb2RlbD0ib3JtLmxheWVyX3ZlcnNpb24iIHBrPSI2Ij4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ubGF5ZXIiIG5hbWU9ImxheWVyIj4yPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iSW50ZWdlckZpZWxkIiBuYW1lPSJsYXllcl9zb3VyY2UiPjA8L2ZpZWxkPgogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIj4yPC9maWVsZD4KQEAgLTE0NywxMyArMTc5LDIwIEBACiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iY29tbWl0Ij5IRUFEPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIj5tZXRhLXBva3k8L2ZpZWxkPgogICA8L29iamVjdD4KLSAgPG9iamVjdCBtb2RlbD0ib3JtLmxheWVyX3ZlcnNpb24iIHBrPSI2Ij4KKyAgPG9iamVjdCBtb2RlbD0ib3JtLmxheWVyX3ZlcnNpb24iIHBrPSI3Ij4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ubGF5ZXIiIG5hbWU9ImxheWVyIj4yPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iSW50ZWdlckZpZWxkIiBuYW1lPSJsYXllcl9zb3VyY2UiPjA8L2ZpZWxkPgogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIj4zPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPm1hc3RlcjwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGlycGF0aCI+bWV0YS1wb2t5PC9maWVsZD4KICAgPC9vYmplY3Q+CisgIDxvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iOCI+CisgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmxheWVyIiBuYW1lPSJsYXllciI+MjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkludGVnZXJGaWVsZCIgbmFtZT0ibGF5ZXJfc291cmNlIj4wPC9maWVsZD4KKyAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ucmVsZWFzZSIgbmFtZT0icmVsZWFzZSI+NDwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5yb2NrbzwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGlycGF0aCI+bWV0YS1wb2t5PC9maWVsZD4KKyAgPC9vYmplY3Q+CiAKICAgPG9iamVjdCBtb2RlbD0ib3JtLmxheWVyIiBwaz0iMyI+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+bWV0YS15b2N0by1ic3A8L2ZpZWxkPgpAQCAtMTYzLDE0ICsyMDIsMTQgQEAKICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJ2Y3Nfd2ViX3RyZWVfYmFzZV91cmwiPmh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS8lcGF0aCU/aD0lYnJhbmNoJTwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0idmNzX3dlYl9maWxlX2Jhc2VfdXJsIj5odHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5L3RyZWUvJXBhdGglP2g9JWJyYW5jaCU8L2ZpZWxkPgogICA8L29iamVjdD4KLSAgPG9iamVjdCBtb2RlbD0ib3JtLmxheWVyX3ZlcnNpb24iIHBrPSI3Ij4KKyAgPG9iamVjdCBtb2RlbD0ib3JtLmxheWVyX3ZlcnNpb24iIHBrPSI5Ij4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ubGF5ZXIiIG5hbWU9ImxheWVyIj4zPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iSW50ZWdlckZpZWxkIiBuYW1lPSJsYXllcl9zb3VyY2UiPjA8L2ZpZWxkPgogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIj4xPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPnJvY2tvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPnN1bW88L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRpcnBhdGgiPm1ldGEteW9jdG8tYnNwPC9maWVsZD4KICAgPC9vYmplY3Q+Ci0gIDxvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iOCI+CisgIDxvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iMTAiPgogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5sYXllciIgbmFtZT0ibGF5ZXIiPjM8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJJbnRlZ2VyRmllbGQiIG5hbWU9ImxheWVyX3NvdXJjZSI+MDwvZmllbGQ+CiAgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLnJlbGVhc2UiIG5hbWU9InJlbGVhc2UiPjI8L2ZpZWxkPgpAQCAtMTc4LDExICsyMTcsMTggQEAKICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJjb21taXQiPkhFQUQ8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRpcnBhdGgiPm1ldGEteW9jdG8tYnNwPC9maWVsZD4KICAgPC9vYmplY3Q+Ci0gIDxvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iOSI+CisgIDxvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iMTEiPgogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5sYXllciIgbmFtZT0ibGF5ZXIiPjM8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJJbnRlZ2VyRmllbGQiIG5hbWU9ImxheWVyX3NvdXJjZSI+MDwvZmllbGQ+CiAgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLnJlbGVhc2UiIG5hbWU9InJlbGVhc2UiPjM8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCI+bWFzdGVyPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIj5tZXRhLXlvY3RvLWJzcDwvZmllbGQ+CiAgIDwvb2JqZWN0PgorICA8b2JqZWN0IG1vZGVsPSJvcm0ubGF5ZXJfdmVyc2lvbiIgcGs9IjEyIj4KKyAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ubGF5ZXIiIG5hbWU9ImxheWVyIj4zPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iSW50ZWdlckZpZWxkIiBuYW1lPSJsYXllcl9zb3VyY2UiPjA8L2ZpZWxkPgorICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIj40PC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPnJvY2tvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIj5tZXRhLXlvY3RvLWJzcDwvZmllbGQ+CisgIDwvb2JqZWN0PgogPC9kamFuZ28tb2JqZWN0cz4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL01ha2VmaWxlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vTWFrZWZpbGUKaW5kZXggOTg5MTA5NS4uZTQxZDVhMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vTWFrZWZpbGUKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vTWFrZWZpbGUKQEAgLTQ4LDcgKzQ4LDcgQEAKICMgRXhhbXBsZXM6CiAjCiAjICAgICBtYWtlIERPQz1ic3AtZ3VpZGUKLSMgICAgIG1ha2UgaHRtbCBET0M9eW9jdG8tcHJvamVjdC1xcworIyAgICAgbWFrZSBodG1sIERPQz1icmllZi15b2N0b3Byb2plY3RxcwogIyAgICAgbWFrZSBwZGYgRE9DPXJlZi1tYW51YWwKICMgICAgIG1ha2UgRE9DPWRldi1tYW51YWwgQlJBTkNIPWVkaXNvbgogIyAgICAgbWFrZSBET0M9bWVnYS1tYW51YWwgQlJBTkNIPWRlbnppbApAQCAtNTYsNyArNTYsNyBAQAogIyBUaGUgZmlyc3QgZXhhbXBsZSBnZW5lcmF0ZXMgdGhlIEhUTUwgYW5kIEVjbGlwc2UgaGVscCB2ZXJzaW9ucyBvZiB0aGUgQlNQIEd1aWRlLgogIyBUaGUgc2Vjb25kIGV4YW1wbGUgZ2VuZXJhdGVzIHRoZSBIVE1MIHZlcnNpb24gb25seSBvZiB0aGUgUXVpY2sgU3RhcnQuICBOb3RlCiAjIHRoYXQgdGhlIFF1aWNrIFN0YXJ0IG9ubHkgaGFzIGFuIEhUTUwgdmVyc2lvbiBhdmFpbGFibGUuICBTbywgdGhlCi0jICdtYWtlIERPQz15b2N0by1wcm9qZWN0LXFzJyBjb21tYW5kIHdvdWxkIGJlIGVxdWl2YWxlbnQuIFRoZSB0aGlyZCBleGFtcGxlCisjICdtYWtlIERPQz1icmllZi15b2N0b3Byb2plY3RxcycgY29tbWFuZCB3b3VsZCBiZSBlcXVpdmFsZW50LiBUaGUgdGhpcmQgZXhhbXBsZQogIyBnZW5lcmF0ZXMganVzdCB0aGUgUERGIHZlcnNpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KICMgVGhlIGZvdXJ0aCBleGFtcGxlIGdlbmVyYXRlcyB0aGUgSFRNTCAnZWRpc29uJyB2ZXJzaW9uIGFuZCAoaWYgYXZhaWxhYmxlKQogIyB0aGUgRWNsaXBzZSBoZWxwIHZlcnNpb24gb2YgdGhlIFlQIERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4gIFRoZSBsYXN0IGV4YW1wbGUKQEAgLTg0LDYgKzg0LDQwIEBACiAjIGZvciB0aGUgJ2RlbnppbCcgYnJhbmNoLgogIwogCitpZmVxICgkKERPQyksYnJpZWYteW9jdG9wcm9qZWN0cXMpCitYU0xUT1BUUyA9IC0tc3RyaW5ncGFyYW0gaHRtbC5zdHlsZXNoZWV0IGJyaWVmLXlvY3RvcHJvamVjdHFzLXN0eWxlLmNzcyBcCisgICAgICAgICAgIC0tc3RyaW5ncGFyYW0gIGNoYXB0ZXIuYXV0b2xhYmVsIDAgXAorICAgICAgICAgICAtLXN0cmluZ3BhcmFtICBzZWN0aW9uLmF1dG9sYWJlbCAwIFwKKyAgICAgICAgICAgLS1zdHJpbmdwYXJhbSAgc2VjdGlvbi5sYWJlbC5pbmNsdWRlcy5jb21wb25lbnQubGFiZWwgMCBcCisgICAgICAgICAgIC0teGluY2x1ZGUKK0FMTFBSRVEgPSBodG1sIGVjbGlwc2UgdGFyYmFsbAorVEFSRklMRVMgPSBicmllZi15b2N0b3Byb2plY3Rxcy1zdHlsZS5jc3MgYnJpZWYteW9jdG9wcm9qZWN0cXMuaHRtbCBmaWd1cmVzL2J5cHFzLXRpdGxlLnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMveW9jdG8tcHJvamVjdC10cmFuc3AucG5nCitNQU5VQUxTID0gJChET0MpLyQoRE9DKS5odG1sICQoRE9DKS9lY2xpcHNlCitGSUdVUkVTID0gZmlndXJlcworU1RZTEVTSEVFVCA9ICQoRE9DKS8qLmNzcworCitlbmRpZgorCitpZmVxICgkKERPQyksb3ZlcnZpZXctbWFudWFsKQorWFNMVE9QVFMgPSAtLXhpbmNsdWRlCitBTExQUkVRID0gaHRtbCBlY2xpcHNlIHRhcmJhbGwKK1RBUkZJTEVTID0gb3ZlcnZpZXctbWFudWFsLXN0eWxlLmNzcyBvdmVydmlldy1tYW51YWwuaHRtbCBmaWd1cmVzL292ZXJ2aWV3LW1hbnVhbC10aXRsZS5wbmcgXAorICAgICAgICAgICBmaWd1cmVzL2dpdC13b3JrZmxvdy5wbmcgZmlndXJlcy9zb3VyY2UtcmVwb3MucG5nIGZpZ3VyZXMvaW5kZXgtZG93bmxvYWRzLnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMveXAtZG93bmxvYWQucG5nIGZpZ3VyZXMvWVAtZmxvdy1kaWFncmFtLnBuZyBmaWd1cmVzL2tleS1kZXYtZWxlbWVudHMucG5nIFwKKyAgICAgICAgICAgZmlndXJlcy9wb2t5LXJlZmVyZW5jZS1kaXN0cmlidXRpb24ucG5nIGZpZ3VyZXMvY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWlucy5wbmcgXAorICAgICAgICAgICBmaWd1cmVzL3VzZXItY29uZmlndXJhdGlvbi5wbmcgZmlndXJlcy9sYXllci1pbnB1dC5wbmcgZmlndXJlcy9zb3VyY2UtaW5wdXQucG5nIFwKKyAgICAgICAgICAgZmlndXJlcy9wYWNrYWdlLWZlZWRzLnBuZyBmaWd1cmVzL3BhdGNoaW5nLnBuZyBmaWd1cmVzL3NvdXJjZS1mZXRjaGluZy5wbmcgXAorICAgICAgICAgICBmaWd1cmVzL2NvbmZpZ3VyYXRpb24tY29tcGlsZS1hdXRvcmVjb25mLnBuZyBmaWd1cmVzL2FuYWx5c2lzLWZvci1wYWNrYWdlLXNwbGl0dGluZy5wbmcgXAorICAgICAgICAgICBmaWd1cmVzL2ltYWdlLWdlbmVyYXRpb24ucG5nIGZpZ3VyZXMvc2RrLWdlbmVyYXRpb24ucG5nIGZpZ3VyZXMvaW1hZ2VzLnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMvc2RrLnBuZyBcCisgICAgICAgICAgIGVjbGlwc2UKK01BTlVBTFMgPSAkKERPQykvJChET0MpLmh0bWwgJChET0MpL2VjbGlwc2UKK0ZJR1VSRVMgPSBmaWd1cmVzCitTVFlMRVNIRUVUID0gJChET0MpLyouY3NzCisKK2VuZGlmCisKIGlmZXEgKCQoRE9DKSxic3AtZ3VpZGUpCiBYU0xUT1BUUyA9IC0teGluY2x1ZGUKIEFMTFBSRVEgPSBodG1sIGVjbGlwc2UgdGFyYmFsbApAQCAtMTI4LDggKzE2Miw4IEBACiAgICAgICAgICAgIGZpZ3VyZXMvc291cmNlLXJlcG9zLnBuZyBmaWd1cmVzL3lwLWRvd25sb2FkLnBuZyBcCiAgICAgICAgICAgIGZpZ3VyZXMvd2lwLnBuZwogICAgICAgICBlbHNlCi1UQVJGSUxFUyA9IGRldi1zdHlsZS5jc3MgZGV2LW1hbnVhbC5odG1sIFwKLSAgICAgICAgICAgZmlndXJlcy9kZXYtdGl0bGUucG5nIFwKK1RBUkZJTEVTID0gZGV2LXN0eWxlLmNzcyBkZXYtbWFudWFsLmh0bWwgZmlndXJlcy9idWlsZGhpc3Rvcnktd2ViLnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMvZGV2LXRpdGxlLnBuZyBmaWd1cmVzL2J1aWxkaGlzdG9yeS5wbmcgXAogICAgICAgICAgICBmaWd1cmVzL3JlY2lwZS13b3JrZmxvdy5wbmcgZmlndXJlcy9iaXRiYWtlLWJ1aWxkLWZsb3cucG5nIFwKICAgICAgICAgICAgZWNsaXBzZQogCWVuZGlmCkBAIC0xNDAsMTcgKzE3NCw2IEBACiAKIGVuZGlmCiAKLWlmZXEgKCQoRE9DKSx5b2N0by1wcm9qZWN0LXFzKQotWFNMVE9QVFMgPSAtLXhpbmNsdWRlCi1BTExQUkVRID0gaHRtbCBlY2xpcHNlIHRhcmJhbGwKLVRBUkZJTEVTID0geW9jdG8tcHJvamVjdC1xcy5odG1sIHFzLXN0eWxlLmNzcyBcCi0gICAgICAgICAgIGZpZ3VyZXMveW9jdG8tcHJvamVjdC10cmFuc3AucG5nIFwKLSAgICAgICAgICAgZWNsaXBzZQotTUFOVUFMUyA9ICQoRE9DKS8kKERPQykuaHRtbCAkKERPQykvZWNsaXBzZQotRklHVVJFUyA9IGZpZ3VyZXMKLVNUWUxFU0hFRVQgPSAkKERPQykvKi5jc3MKLWVuZGlmCi0KIGlmZXEgKCQoRE9DKSxtZWdhLW1hbnVhbCkKIFhTTFRPUFRTID0gLS1zdHJpbmdwYXJhbSBodG1sLnN0eWxlc2hlZXQgbWVnYS1zdHlsZS5jc3MgXAogICAgICAgICAgICAtLXN0cmluZ3BhcmFtICBjaGFwdGVyLmF1dG9sYWJlbCAxIFwKQEAgLTE5MSw3ICsyMTQsNyBAQAogCWZpZ3VyZXMvd2lwLnBuZwogICAgICAgICBlbHNlCiBUQVJGSUxFUyA9IG1lZ2EtbWFudWFsLmh0bWwgbWVnYS1zdHlsZS5jc3MgXAotICAgICAgICBmaWd1cmVzL2J1aWxkaW5nLWFuLWltYWdlLnBuZyBmaWd1cmVzL1lQLWZsb3ctZGlhZ3JhbS5wbmcgXAorICAgICAgICBmaWd1cmVzL1lQLWZsb3ctZGlhZ3JhbS5wbmcgXAogCWZpZ3VyZXMvdXNpbmctYS1wcmUtYnVpbHQtaW1hZ2UucG5nIFwKIAlmaWd1cmVzL3Bva3ktdGl0bGUucG5nIGZpZ3VyZXMvYnVpbGRoaXN0b3J5LnBuZyBcCiAgICAgICAgIGZpZ3VyZXMvYnVpbGRoaXN0b3J5LXdlYi5wbmcgXApAQCAtMjI5LDIyICsyNTIsMjMgQEAKICAgICAgICAgZmlndXJlcy9zY2hlZC13YWtldXAtcHJvZmlsZS5wbmcgZmlndXJlcy9zeXNwcm9mLWNhbGxlcnMucG5nIFwKICAgICAgICAgZmlndXJlcy9zeXNwcm9mLWNvcHktZnJvbS11c2VyLnBuZyBmaWd1cmVzL3N5c3Byb2YtY29weS10by11c2VyLnBuZyBcCiAgICAgICAgIGZpZ3VyZXMvY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWlucy5wbmcgXAotCWZpZ3VyZXMveW9jdG8tZW52aXJvbm1lbnQtcmVmLnBuZyBmaWd1cmVzL3VzZXItY29uZmlndXJhdGlvbi5wbmcgXAorCWZpZ3VyZXMvdXNlci1jb25maWd1cmF0aW9uLnBuZyBcCiAgICAgICAgIGZpZ3VyZXMvc291cmNlLWlucHV0LnBuZyBmaWd1cmVzL3BhY2thZ2UtZmVlZHMucG5nIFwKICAgICAgICAgZmlndXJlcy9sYXllci1pbnB1dC5wbmcgZmlndXJlcy9pbWFnZXMucG5nIGZpZ3VyZXMvc2RrLnBuZyBcCiAJZmlndXJlcy9zb3VyY2UtZmV0Y2hpbmcucG5nIGZpZ3VyZXMvcGF0Y2hpbmcucG5nIFwKICAgICAgICAgZmlndXJlcy9jb25maWd1cmF0aW9uLWNvbXBpbGUtYXV0b3JlY29uZi5wbmcgXAogCWZpZ3VyZXMvYW5hbHlzaXMtZm9yLXBhY2thZ2Utc3BsaXR0aW5nLnBuZyBcCi0gICAgICAgIGZpZ3VyZXMvaW1hZ2UtZ2VuZXJhdGlvbi5wbmcgXAorICAgICAgICBmaWd1cmVzL2ltYWdlLWdlbmVyYXRpb24ucG5nIGZpZ3VyZXMva2V5LWRldi1lbGVtZW50cy5wbmdcCiAJZmlndXJlcy9zZGstZ2VuZXJhdGlvbi5wbmcgZmlndXJlcy9yZWNpcGUtd29ya2Zsb3cucG5nIFwKIAlmaWd1cmVzL2J1aWxkLXdvcmtzcGFjZS1kaXJlY3RvcnkucG5nIGZpZ3VyZXMvbWVnYS10aXRsZS5wbmcgXAogCWZpZ3VyZXMvdG9hc3Rlci10aXRsZS5wbmcgZmlndXJlcy9ob3N0ZWQtc2VydmljZS5wbmcgXAotCWZpZ3VyZXMvc2ltcGxlLWNvbmZpZ3VyYXRpb24ucG5nIFwKKwlmaWd1cmVzL3NpbXBsZS1jb25maWd1cmF0aW9uLnBuZyBmaWd1cmVzL3Bva3ktcmVmZXJlbmNlLWRpc3RyaWJ1dGlvbi5wbmcgXAogCWZpZ3VyZXMvY29tcGF0aWJsZS1sYXllcnMucG5nIGZpZ3VyZXMvaW1wb3J0LWxheWVyLnBuZyBmaWd1cmVzL25ldy1wcm9qZWN0LnBuZyBcCiAJZmlndXJlcy9zZGstZW52aXJvbm1lbnQucG5nIGZpZ3VyZXMvc2RrLWluc3RhbGxlZC1zdGFuZGFyZC1zZGstZGlyZWN0b3J5LnBuZyBcCiAJZmlndXJlcy9zZGstZGV2dG9vbC1hZGQtZmxvdy5wbmcgZmlndXJlcy9zZGstaW5zdGFsbGVkLWV4dGVuc2libGUtc2RrLWRpcmVjdG9yeS5wbmcgXAogCWZpZ3VyZXMvc2RrLWRldnRvb2wtbW9kaWZ5LWZsb3cucG5nIGZpZ3VyZXMvc2RrLWVjbGlwc2UtZGV2LWZsb3cucG5nIFwKLQlmaWd1cmVzL3Nkay1kZXZ0b29sLXVwZ3JhZGUtZmxvdy5wbmcgZmlndXJlcy9iaXRiYWtlLWJ1aWxkLWZsb3cucG5nCisJZmlndXJlcy9zZGstZGV2dG9vbC11cGdyYWRlLWZsb3cucG5nIGZpZ3VyZXMvYml0YmFrZS1idWlsZC1mbG93LnBuZyBmaWd1cmVzL2J5cHFzLXRpdGxlLnBuZyBcCisJZmlndXJlcy9vdmVydmlldy1tYW51YWwtdGl0bGUucG5nIGZpZ3VyZXMvc2RrLWF1dG90b29scy1mbG93LnBuZyBmaWd1cmVzL3Nkay1tYWtlZmlsZS1mbG93LnBuZwogCWVuZGlmCiAKIE1BTlVBTFMgPSAkKERPQykvJChET0MpLmh0bWwKQEAgLTI1NiwxNyArMjgwLDkgQEAKIGlmZXEgKCQoRE9DKSxyZWYtbWFudWFsKQogWFNMVE9QVFMgPSAtLXhpbmNsdWRlCiBBTExQUkVRID0gaHRtbCBlY2xpcHNlIHRhcmJhbGwKLVRBUkZJTEVTID0gcmVmLW1hbnVhbC5odG1sIHJlZi1zdHlsZS5jc3MgZmlndXJlcy9wb2t5LXRpdGxlLnBuZyBmaWd1cmVzL1lQLWZsb3ctZGlhZ3JhbS5wbmcgXAotCWZpZ3VyZXMvYnVpbGRoaXN0b3J5LnBuZyBmaWd1cmVzL2J1aWxkaGlzdG9yeS13ZWIucG5nIGVjbGlwc2UgXAotICAgICAgICBmaWd1cmVzL2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbnMucG5nIGZpZ3VyZXMvbGF5ZXItaW5wdXQucG5nIFwKLQlmaWd1cmVzL3BhY2thZ2UtZmVlZHMucG5nIGZpZ3VyZXMvc291cmNlLWlucHV0LnBuZyBcCi0JZmlndXJlcy91c2VyLWNvbmZpZ3VyYXRpb24ucG5nIGZpZ3VyZXMveW9jdG8tZW52aXJvbm1lbnQtcmVmLnBuZyBcCi0JZmlndXJlcy9pbWFnZXMucG5nIGZpZ3VyZXMvc2RrLnBuZyBmaWd1cmVzL3NvdXJjZS1mZXRjaGluZy5wbmcgXAotCWZpZ3VyZXMvcGF0Y2hpbmcucG5nIGZpZ3VyZXMvY29uZmlndXJhdGlvbi1jb21waWxlLWF1dG9yZWNvbmYucG5nIFwKLQlmaWd1cmVzL2FuYWx5c2lzLWZvci1wYWNrYWdlLXNwbGl0dGluZy5wbmcgZmlndXJlcy9pbWFnZS1nZW5lcmF0aW9uLnBuZyBcCi0JZmlndXJlcy9zZGstZ2VuZXJhdGlvbi5wbmcgZmlndXJlcy9idWlsZGluZy1hbi1pbWFnZS5wbmcgXAotCWZpZ3VyZXMvYnVpbGQtd29ya3NwYWNlLWRpcmVjdG9yeS5wbmcgZmlndXJlcy9zb3VyY2UtcmVwb3MucG5nIFwKLQlmaWd1cmVzL2luZGV4LWRvd25sb2Fkcy5wbmcgZmlndXJlcy95cC1kb3dubG9hZC5wbmcgZmlndXJlcy9naXQtd29ya2Zsb3cucG5nCitUQVJGSUxFUyA9IHJlZi1tYW51YWwuaHRtbCByZWYtc3R5bGUuY3NzIGZpZ3VyZXMvcG9reS10aXRsZS5wbmcgXAorCWZpZ3VyZXMvYnVpbGQtd29ya3NwYWNlLWRpcmVjdG9yeS5wbmcgXAorCWVjbGlwc2UKIE1BTlVBTFMgPSAkKERPQykvJChET0MpLmh0bWwgJChET0MpL2VjbGlwc2UKIEZJR1VSRVMgPSBmaWd1cmVzCiBTVFlMRVNIRUVUID0gJChET0MpLyouY3NzCkBAIC0yNzksNyArMjk1LDcgQEAKICAgICAgICAgICAgZmlndXJlcy9zZGstZW52aXJvbm1lbnQucG5nIGZpZ3VyZXMvc2RrLWluc3RhbGxlZC1zdGFuZGFyZC1zZGstZGlyZWN0b3J5LnBuZyBcCiAJICAgZmlndXJlcy9zZGstaW5zdGFsbGVkLWV4dGVuc2libGUtc2RrLWRpcmVjdG9yeS5wbmcgZmlndXJlcy9zZGstZGV2dG9vbC1hZGQtZmxvdy5wbmcgXAogCSAgIGZpZ3VyZXMvc2RrLWRldnRvb2wtbW9kaWZ5LWZsb3cucG5nIGZpZ3VyZXMvc2RrLWVjbGlwc2UtZGV2LWZsb3cucG5nIFwKLQkgICBmaWd1cmVzL3Nkay1kZXZ0b29sLXVwZ3JhZGUtZmxvdy5wbmcgXAorCSAgIGZpZ3VyZXMvc2RrLWRldnRvb2wtdXBncmFkZS1mbG93LnBuZyBmaWd1cmVzL3Nkay1hdXRvdG9vbHMtZmxvdy5wbmcgZmlndXJlcy9zZGstbWFrZWZpbGUtZmxvdy5wbmcgXAogICAgICAgICAgICBlY2xpcHNlCiBNQU5VQUxTID0gJChET0MpLyQoRE9DKS5odG1sICQoRE9DKS9lY2xpcHNlCiBGSUdVUkVTID0gZmlndXJlcwpAQCAtMzU1LDkgKzM3MSw5IEBACiBhbGw6ICQoQUxMUFJFUSkKIAogcGRmOgotaWZlcSAoJChET0MpLHlvY3RvLXByb2plY3QtcXMpCitpZmVxICgkKERPQyksYnJpZWYteW9jdG9wcm9qZWN0cXMpCiAJQGVjaG8gIiAiCi0JQGVjaG8gIkVSUk9SOiBZb3UgY2Fubm90IGdlbmVyYXRlIGEgeW9jdG8tcHJvamVjdC1xcyBQREYgZmlsZS4iCisJQGVjaG8gIkVSUk9SOiBZb3UgY2Fubm90IGdlbmVyYXRlIGEgUERGIGZpbGUgZm9yIGJyaWVmLXlvY3RvcHJvamVjdHFzLiIKIAlAZWNobyAiICIKIAogZWxzZSBpZmVxICgkKERPQyksbWVnYS1tYW51YWwpCkBAIC00MDEsMTcgKzQxNywxOCBAQAogLlBIT05ZIDogZWNsaXBzZS1nZW5lcmF0ZSBlY2xpcHNlLXJlc29sdmUtbGlua3MKIAogZWNsaXBzZS1nZW5lcmF0ZToKLWlmZXEgKCQoZmlsdGVyICQoRE9DKSwgc2RrLW1hbnVhbCBic3AtZ3VpZGUgZGV2LW1hbnVhbCBrZXJuZWwtZGV2IHByb2ZpbGUtbWFudWFsIHJlZi1tYW51YWwgeW9jdG8tcHJvamVjdC1xcyksKQoraWZlcSAoJChmaWx0ZXIgJChET0MpLCBvdmVydmlldy1tYW51YWwgc2RrLW1hbnVhbCBic3AtZ3VpZGUgZGV2LW1hbnVhbCBrZXJuZWwtZGV2IHByb2ZpbGUtbWFudWFsIHJlZi1tYW51YWwgYnJpZWYteW9jdG9wcm9qZWN0cXMpLCkKIAlAZWNobyAiICIKIAlAZWNobyAiRVJST1I6IFlvdSBjYW4gb25seSBjcmVhdGUgZWNsaXBzZSBkb2N1bWVudGF0aW9uIgogCUBlY2hvICIgICAgICAgb2YgdGhlIGZvbGxvd2luZyBkb2N1bWVudGF0aW9uIHBhcnRzOiIKKwlAZWNobyAiICAgICAgIC0gb3ZlcnZpZXctbWFudWFsIgogCUBlY2hvICIgICAgICAgLSBzZGstbWFudWFsIgogCUBlY2hvICIgICAgICAgLSBic3AtZ3VpZGUiCiAJQGVjaG8gIiAgICAgICAtIGRldi1tYW51YWwiCiAJQGVjaG8gIiAgICAgICAtIGtlcm5lbC1kZXYiCiAJQGVjaG8gIiAgICAgICAtIHByb2ZpbGUtbWFudWFsIgogCUBlY2hvICIgICAgICAgLSByZWYtbWFudWFsIgotCUBlY2hvICIgICAgICAgLSB5b2N0by1wcm9qZWN0LXFzIgorCUBlY2hvICIgICAgICAgLSBicmllZi15b2N0b3Byb2plY3RxcyIKIAlAZWNobyAiICIKIGVsc2UKIAlAZWNobyAiICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLWN1c3RvbWl6YXRpb24ueHNsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMtY3VzdG9taXphdGlvbi54c2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ1NzQyNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLWN1c3RvbWl6YXRpb24ueHNsCkBAIC0wLDAgKzEsMjQgQEAKKzw/eG1sIHZlcnNpb249JzEuMCc/PgorPHhzbDpzdHlsZXNoZWV0IHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sbnM6Zm89Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML0Zvcm1hdCIgdmVyc2lvbj0iMS4wIj4KKworICA8eHNsOmltcG9ydCBocmVmPSJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL2RvY2Jvb2stbWlycm9yL2RvY2Jvb2steHNsLTEuNzYuMS94aHRtbC9kb2Nib29rLnhzbCIgLz4KKworPCEtLQorCisgIDx4c2w6aW1wb3J0IGhyZWY9Ii4uL3RlbXBsYXRlLzEuNzYuMS9kb2Nib29rLXhzbC0xLjc2LjEveGh0bWwvZG9jYm9vay54c2wiIC8+CisKKyAgPHhzbDppbXBvcnQgaHJlZj0iaHR0cDovL2RvY2Jvb2suc291cmNlZm9yZ2UubmV0L3JlbGVhc2UveHNsLzEuNzYuMS94aHRtbC9kb2Nib29rLnhzbCIgLz4KKworLS0+CisKKyAgPHhzbDppbXBvcnQgaHJlZj0iYnJpZWYteW9jdG9wcm9qZWN0cXMtdGl0bGVwYWdlLnhzbCIvPgorCisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9wZXJtYWxpbmtzLnhzbCIvPgorICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvc2VjdGlvbi50aXRsZS54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL2NvbXBvbmVudC50aXRsZS54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL2RpdmlzaW9uLnRpdGxlLnhzbCIvPgorICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvZm9ybWFsLm9iamVjdC5oZWFkaW5nLnhzbCIvPgorCisgIDx4c2w6cGFyYW0gbmFtZT0iZ2VuZXJhdGUudG9jIiBzZWxlY3Q9IidhcnRpY2xlIG5vcCciPjwveHNsOnBhcmFtPgorICA8eHNsOnBhcmFtIG5hbWU9Imh0bWwuc3R5bGVzaGVldCIgc2VsZWN0PSInYnJpZWYteW9jdG9wcm9qZWN0cXMtc3R5bGUuY3NzJyIgLz4KKzwveHNsOnN0eWxlc2hlZXQ+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy1lY2xpcHNlLWN1c3RvbWl6YXRpb24ueHNsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMtZWNsaXBzZS1jdXN0b21pemF0aW9uLnhzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmIzYjU3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMtZWNsaXBzZS1jdXN0b21pemF0aW9uLnhzbApAQCAtMCwwICsxLDM1IEBACis8P3htbCB2ZXJzaW9uPScxLjAnPz4KKzx4c2w6c3R5bGVzaGVldAorCXhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIgorCXhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIgorCXhtbG5zOmZvPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9Gb3JtYXQiCisJdmVyc2lvbj0iMS4wIj4KKworICA8eHNsOmltcG9ydCBocmVmPSJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL2RvY2Jvb2stbWlycm9yL2RvY2Jvb2steHNsLTEuNzYuMS9lY2xpcHNlL2VjbGlwc2UzLnhzbCIgLz4KKworPCEtLQorCisgIDx4c2w6aW1wb3J0IGhyZWY9Ii4uL3RlbXBsYXRlLzEuNzYuMS9kb2Nib29rLXhzbC0xLjc2LjEvZWNsaXBzZS9lY2xpcHNlMy54c2wiIC8+CisKKyAgPHhzbDppbXBvcnQKKwkgIGhyZWY9Imh0dHA6Ly9kb2Nib29rLnNvdXJjZWZvcmdlLm5ldC9yZWxlYXNlL3hzbC8xLjc2LjEvZWNsaXBzZS9lY2xpcHNlMy54c2wiIC8+CisKKy0tPgorCisgIDx4c2w6aW1wb3J0IGhyZWY9ImJyaWVmLXlvY3RvcHJvamVjdHFzLXRpdGxlcGFnZS54c2wiLz4KKworICA8eHNsOnBhcmFtIG5hbWU9ImNodW5rZXIub3V0cHV0LmluZGVudCIgc2VsZWN0PSIneWVzJyIvPgorICA8eHNsOnBhcmFtIG5hbWU9ImNodW5rLnF1aWV0bHkiIHNlbGVjdD0iMSIvPgorICA8eHNsOnBhcmFtIG5hbWU9InVzZS5pZC5hcy5maWxlbmFtZSIgc2VsZWN0PSIxIi8+CisgIDx4c2w6cGFyYW0gbmFtZT0idWxpbmsudGFyZ2V0IiBzZWxlY3Q9Iidfc2VsZiciIC8+CisgIDx4c2w6cGFyYW0gbmFtZT0iYmFzZS5kaXIiIHNlbGVjdD0iJ2h0bWwvYnJpZWYteW9jdG9wcm9qZWN0cXMvJyIvPgorICA8eHNsOnBhcmFtIG5hbWU9ImNodW5rLnNlY3Rpb24uZGVwdGgiIHNlbGVjdD0iMCIvPgorICA8eHNsOnBhcmFtIG5hbWU9Imh0bWwuc3R5bGVzaGVldCIgc2VsZWN0PSInLi4vYm9vay5jc3MnIi8+CisgIDx4c2w6cGFyYW0gbmFtZT0iZWNsaXBzZS5tYW5pZmVzdCIgc2VsZWN0PSIwIi8+CisgIDx4c2w6cGFyYW0gbmFtZT0iY3JlYXRlLnBsdWdpbi54bWwiIHNlbGVjdD0iMCIvPgorICA8eHNsOnBhcmFtIG5hbWU9InN1cHByZXNzLm5hdmlnYXRpb24iIHNlbGVjdD0iMSIvPgorICA8eHNsOnBhcmFtIG5hbWU9ImdlbmVyYXRlLmluZGV4IiBzZWxlY3Q9IjAiLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJnZW5lcmF0ZS50b2MiIHNlbGVjdD0iJ2FydGljbGUgbm9wJyI+PC94c2w6cGFyYW0+CisgIDx4c2w6cGFyYW0gbmFtZT0iaHRtbC5zdHlsZXNoZWV0IiBzZWxlY3Q9IidzdHlsZS5jc3MnIiAvPgorPC94c2w6c3R5bGVzaGVldD4KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMtc3R5bGUuY3NzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMtc3R5bGUuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4Njg0MWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy1zdHlsZS5jc3MKQEAgLTAsMCArMSw5ODkgQEAKKy8qCisgICBHZW5lcmljIFhIVE1MIC8gRG9jQm9vayBYSFRNTCBDU1MgU3R5bGVzaGVldC4KKworICAgQnJvd3NlciB3cmFuZ2xpbmcgYW5kIHR5cG9ncmFwaGljIGRlc2lnbiBieQorICAgICAgT3l2aW5kIEtvbGFzIC8gcGlwcGluQGdpbXAub3JnCisKKyAgIEN1c3RvbWlzZWQgZm9yIFBva3kgYnkKKyAgICAgIE1hdHRoZXcgQWxsdW0gLyBtYWxsdW1Aby1oYW5kLmNvbQorCisgICBUaGFua3MgdG86CisgICAgIExpYW0gUi4gRS4gUXVpbgorICAgICBXaWxsaWFtIFNrYWdncworICAgICBKYWt1YiBTdGVpbmVyCisKKyAgIFN0cnVjdHVyZQorICAgLS0tLS0tLS0tCisKKyAgIFRoZSBzdHlsZXNoZWV0IGlzIGRpdmlkZWQgaW50byB0aGUgZm9sbG93aW5nIHNlY3Rpb25zOgorCisgICAgICAgUG9zaXRpb25pbmcKKyAgICAgICAgICBNYXJnaW5zLCBwYWRkaW5ncywgd2lkdGgsIGZvbnQtc2l6ZSwgY2xlYXJpbmcuCisgICAgICAgRGVjb3JhdGlvbnMKKyAgICAgICAgICBCb3JkZXJzLCBzdHlsZQorICAgICAgIENvbG9ycworICAgICAgICAgIENvbG9ycworICAgICAgIEdyYXBoaWNzCisgICAgICAgICAgR3JhcGhpY2FsIGJhY2tncm91bmRzCisgICAgICAgTmFzdHkgSUUgdHdlYWtzCisgICAgICAgICAgV29ya2Fyb3VuZHMgbmVlZGVkIHRvIG1ha2UgaXQgd29yayBpbiBpbnRlcm5ldCBleHBsb3JlciwKKyAgICAgICAgICBjdXJyZW50bHkgbWFrZXMgdGhlIHN0eWxlc2hlZXQgbm9uIHZhbGlkYXRpbmcsIGJ1dCB1cCB1bnRpbAorICAgICAgICAgIHRoaXMgcG9pbnQgaXQgaXMgdmFsaWRhdGluZy4KKyAgICAgICBNb3ppbGxhIGV4dGVuc2lvbnMKKyAgICAgICAgICBUcmFuc3BhcmVuY3kgZm9yIGZvb3RlcgorCSAgUm91bmRlZCBjb3JuZXJzIG9uIGJveGVzCisKKyovCisKKworICAvKioqKioqKioqKioqKioqIC8KKyAvICBQb3NpdGlvbmluZyAgIC8KKy8gKioqKioqKioqKioqKioqLworCitib2R5IHsKKyAgZm9udC1mYW1pbHk6IFZlcmRhbmEsIFNhbnMsIHNhbnMtc2VyaWY7CisKKyAgbWluLXdpZHRoOiA2NDBweDsKKyAgd2lkdGg6IDgwJTsKKyAgbWFyZ2luOiAgMGVtIGF1dG87CisgIHBhZGRpbmc6IDJlbSA1ZW0gNWVtIDVlbTsKKyAgY29sb3I6ICMzMzM7Cit9CisKK2gxLGgyLGgzLGg0LGg1LGg2LGg3IHsKKyAgZm9udC1mYW1pbHk6IEFyaWFsLCBTYW5zOworICBjb2xvcjogIzAwNTU3RDsKKyAgY2xlYXI6IGJvdGg7Cit9CisKK2gxIHsKKyAgZm9udC1zaXplOiAyZW07CisgIHRleHQtYWxpZ246IGxlZnQ7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgbWFyZ2luOiAyZW0gMGVtIDBlbSAwZW07Cit9CisKK2gyLnN1YnRpdGxlIHsKKyAgbWFyZ2luOiAwLjEwZW0gMGVtIDMuMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDEuOGVtOworICBwYWRkaW5nLWxlZnQ6IDIwJTsKKyAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgZm9udC1zdHlsZTogaXRhbGljOworfQorCitoMiB7CisgIG1hcmdpbjogMmVtIDBlbSAwLjY2ZW0gMGVtOworICBwYWRkaW5nOiAwLjVlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxLjVlbTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2gzLnN1YnRpdGxlIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDFlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxNDIuMTQlOworICB0ZXh0LWFsaWduOiByaWdodDsKK30KKworaDMgeworICBtYXJnaW46IDFlbSAwZW0gMC41ZW0gMGVtOworICBwYWRkaW5nOiAxZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMTQwJTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2g0IHsKKyAgbWFyZ2luOiAxZW0gMGVtIDAuNWVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDEyMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitoNSB7CisgIG1hcmdpbjogMWVtIDBlbSAwLjVlbSAwZW07CisgIHBhZGRpbmc6IDFlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxMTAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworaDYgeworICBtYXJnaW46IDFlbSAwZW0gMGVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDExMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCisuYXV0aG9yZ3JvdXAgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgcGFkZGluZy10b3A6IDI1NnB4OworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImZpZ3VyZXMvYnlwcXMtdGl0bGUucG5nIik7CisgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgdG9wOworICBtYXJnaW4tdG9wOiAtMjU2cHg7CisgIHBhZGRpbmctcmlnaHQ6IDUwcHg7CisgIG1hcmdpbi1sZWZ0OiAwcHg7CisgIHRleHQtYWxpZ246IHJpZ2h0OworICB3aWR0aDogNzQwcHg7Cit9CisKK2gzLmF1dGhvciB7CisgIG1hcmdpbjogMGVtIDBtZSAwZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgIGZvbnQtc2l6ZTogMTAwJTsKKyAgY29sb3I6ICMzMzM7CisgIGNsZWFyOiBib3RoOworfQorCisuYXV0aG9yIHR0LmVtYWlsIHsKKyAgZm9udC1zaXplOiA2NiU7Cit9CisKKy50aXRsZXBhZ2UgaHIgeworICB3aWR0aDogMGVtOworICBjbGVhcjogYm90aDsKK30KKworLnJldmhpc3RvcnkgeworICBwYWRkaW5nLXRvcDogMmVtOworICBjbGVhcjogYm90aDsKK30KKworLnRvYywKKy5saXN0LW9mLXRhYmxlcywKKy5saXN0LW9mLWV4YW1wbGVzLAorLmxpc3Qtb2YtZmlndXJlcyB7CisgIHBhZGRpbmc6IDEuMzNlbSAwZW0gMi41ZW0gMGVtOworICBjb2xvcjogIzAwNTU3RDsKK30KKworLnRvYyBwLAorLmxpc3Qtb2YtdGFibGVzIHAsCisubGlzdC1vZi1maWd1cmVzIHAsCisubGlzdC1vZi1leGFtcGxlcyBwIHsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDAuM2VtOworICBtYXJnaW46IDEuNWVtIDBlbSAwZW0gMGVtOworfQorCisudG9jIHAgYiwKKy5saXN0LW9mLXRhYmxlcyBwIGIsCisubGlzdC1vZi1maWd1cmVzIHAgYiwKKy5saXN0LW9mLWV4YW1wbGVzIHAgYnsKKyAgZm9udC1zaXplOiAxMDAuMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCisudG9jIGRsLAorLmxpc3Qtb2YtdGFibGVzIGRsLAorLmxpc3Qtb2YtZmlndXJlcyBkbCwKKy5saXN0LW9mLWV4YW1wbGVzIGRsIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDAuNWVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorCisudG9jIGR0IHsKKyAgbWFyZ2luOiAwZW0gMGVtIDBlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworLnRvYyBkZCB7CisgIG1hcmdpbjogMGVtIDBlbSAwZW0gMi42ZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworZGl2Lmdsb3NzYXJ5IGRsLAorZGl2LnZhcmlhYmxlbGlzdCBkbCB7Cit9CisKKy5nbG9zc2FyeSBkbCBkdCwKKy52YXJpYWJsZWxpc3QgZGwgZHQsCisudmFyaWFibGVsaXN0IGRsIGR0IHNwYW4udGVybSB7CisgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgIHdpZHRoOiAyMGVtOworICB0ZXh0LWFsaWduOiByaWdodDsKK30KKworLnZhcmlhYmxlbGlzdCBkbCBkdCB7CisgIG1hcmdpbi10b3A6IDAuNWVtOworfQorCisuZ2xvc3NhcnkgZGwgZGQsCisudmFyaWFibGVsaXN0IGRsIGRkIHsKKyAgbWFyZ2luLXRvcDogLTFlbTsKKyAgbWFyZ2luLWxlZnQ6IDI1LjVlbTsKK30KKworLmdsb3NzYXJ5IGRkIHAsCisudmFyaWFibGVsaXN0IGRkIHAgeworICBtYXJnaW4tdG9wOiAwZW07CisgIG1hcmdpbi1ib3R0b206IDFlbTsKK30KKworCitkaXYuY2FsbG91dGxpc3QgdGFibGUgdGQgeworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07CisgIG1hcmdpbjogMGVtIDBlbSAwZW0gMGVtOworfQorCitkaXYuY2FsbG91dGxpc3QgdGFibGUgdGQgcCB7CisgIG1hcmdpbi10b3A6IDBlbTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworfQorCitkaXYgcC5jb3B5cmlnaHQgeworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCitkaXYubGVnYWxub3RpY2UgcC5sZWdhbG5vdGljZS10aXRsZSB7CisgIG1hcmdpbi1ib3R0b206IDBlbTsKK30KKworcCB7CisgIGxpbmUtaGVpZ2h0OiAxLjVlbTsKKyAgbWFyZ2luLXRvcDogMGVtOworCit9CisKK2RsIHsKKyAgcGFkZGluZy10b3A6IDBlbTsKK30KKworaHIgeworICBib3JkZXI6IHNvbGlkIDFweDsKK30KKworCisubWVkaWFvYmplY3QsCisubWVkaWFvYmplY3RjbyB7CisgIHRleHQtYWxpZ246IGNlbnRlcjsKK30KKworaW1nIHsKKyAgYm9yZGVyOiBub25lOworfQorCit1bCB7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDEuNWVtOworfQorCit1bCBsaSB7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKwordWwgbGkgcCB7CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKK3RhYmxlIHsKKyAgd2lkdGggOjEwMCU7Cit9CisKK3RoIHsKKyAgcGFkZGluZzogMC4yNWVtOworICB0ZXh0LWFsaWduOiBsZWZ0OworICBmb250LXdlaWdodDogbm9ybWFsOworICB2ZXJ0aWNhbC1hbGlnbjogdG9wOworfQorCit0ZCB7CisgIHBhZGRpbmc6IDAuMjVlbTsKKyAgdmVydGljYWwtYWxpZ246IHRvcDsKK30KKworcCBhW2lkXSB7CisgIG1hcmdpbjogMHB4OworICBwYWRkaW5nOiAwcHg7CisgIGRpc3BsYXk6IGlubGluZTsKKyAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKK30KKworYSB7CisgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworICBjb2xvcjogIzQ0NDsKK30KKworcHJlIHsKKyAgICBvdmVyZmxvdzogYXV0bzsKK30KKworYTpob3ZlciB7CisgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworICAvKmZvbnQtd2VpZ2h0OiBib2xkOyovCit9CisKKy8qIFRoaXMgc3R5bGUgZGVmaW5lcyBob3cgdGhlIHBlcm1hbGluayBjaGFyYWN0ZXIKKyAgIGFwcGVhcnMgYnkgaXRzZWxmIGFuZCB3aGVuIGhvdmVyZWQgb3ZlciB3aXRoCisgICB0aGUgbW91c2UuICovCisKK1thbHQ9J1Blcm1hbGluayddIHsgY29sb3I6ICNlZWU7IH0KK1thbHQ9J1Blcm1hbGluayddOmhvdmVyIHsgY29sb3I6IGJsYWNrOyB9CisKKworZGl2LmluZm9ybWFsZmlndXJlLAorZGl2LmluZm9ybWFsZXhhbXBsZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5leGFtcGxlIHsKKyAgbWFyZ2luOiAxZW0gMGVtOworICBwYWRkaW5nOiAxZW07CisgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKK30KKworCitkaXYuaW5mb3JtYWxmaWd1cmUgcC50aXRsZSBiLAorZGl2LmluZm9ybWFsZXhhbXBsZSBwLnRpdGxlIGIsCitkaXYuaW5mb3JtYWx0YWJsZSBwLnRpdGxlIGIsCitkaXYuZmlndXJlIHAudGl0bGUgYiwKK2Rpdi5leGFtcGxlIHAudGl0bGUgYiwKK2Rpdi50YWJsZSBwLnRpdGxlIGJ7CisgICAgcGFkZGluZy10b3A6IDBlbTsKKyAgICBtYXJnaW4tdG9wOiAwZW07CisgICAgZm9udC1zaXplOiAxMDAlOworICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Cit9CisKKy5tZWRpYW9iamVjdCAuY2FwdGlvbiwKKy5tZWRpYW9iamVjdCAuY2FwdGlvbiBwICB7CisgIHRleHQtYWxpZ246IGNlbnRlcjsKKyAgZm9udC1zaXplOiA4MCU7CisgIHBhZGRpbmctdG9wOiAwLjVlbTsKKyAgcGFkZGluZy1ib3R0b206IDAuNWVtOworfQorCisuZXBpZ3JhcGggeworICBwYWRkaW5nLWxlZnQ6IDU1JTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworfQorCisuZXBpZ3JhcGggcCB7CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKKy5lcGlncmFwaCAucXVvdGUgeworICBmb250LXN0eWxlOiBpdGFsaWM7Cit9CisuZXBpZ3JhcGggLmF0dHJpYnV0aW9uIHsKKyAgZm9udC1zdHlsZTogbm9ybWFsOworICB0ZXh0LWFsaWduOiByaWdodDsKK30KKworc3Bhbi5hcHBsaWNhdGlvbiB7CisgIGZvbnQtc3R5bGU6IGl0YWxpYzsKK30KKworLnByb2dyYW1saXN0aW5nIHsKKyAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKKyAgZm9udC1zaXplOiA4MCU7CisgIHdoaXRlLXNwYWNlOiBwcmU7CisgIG1hcmdpbjogMS4zM2VtIDBlbTsKKyAgcGFkZGluZzogMS4zM2VtOworfQorCisudGlwLAorLndhcm5pbmcsCisuY2F1dGlvbiwKKy5ub3RlIHsKKyAgbWFyZ2luLXRvcDogMWVtOworICBtYXJnaW4tYm90dG9tOiAxZW07CisKK30KKworLyogZm9yY2UgZnVsbCB3aWR0aCBvZiB0YWJsZSB3aXRoaW4gZGl2ICovCisudGlwIHRhYmxlLAorLndhcm5pbmcgdGFibGUsCisuY2F1dGlvbiB0YWJsZSwKKy5ub3RlIHRhYmxlIHsKKyAgYm9yZGVyOiBub25lOworICB3aWR0aDogMTAwJTsKK30KKworCisudGlwIHRhYmxlIHRoLAorLndhcm5pbmcgdGFibGUgdGgsCisuY2F1dGlvbiB0YWJsZSB0aCwKKy5ub3RlIHRhYmxlIHRoIHsKKyAgcGFkZGluZzogMC44ZW0gMC4wZW0gMC4wZW0gMC4wZW07CisgIG1hcmdpbiA6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworLnRpcCBwLAorLndhcm5pbmcgcCwKKy5jYXV0aW9uIHAsCisubm90ZSBwIHsKKyAgbWFyZ2luLXRvcDogMC41ZW07CisgIG1hcmdpbi1ib3R0b206IDAuNWVtOworICBwYWRkaW5nLXJpZ2h0OiAxZW07CisgIHRleHQtYWxpZ246IGxlZnQ7Cit9CisKKy5hY3JvbnltIHsKKyAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKK30KKworYi5rZXljYXAsCisua2V5Y2FwIHsKKyAgcGFkZGluZzogMC4wOWVtIDAuM2VtOworICBtYXJnaW46IDBlbTsKK30KKworLml0ZW1pemVkbGlzdCBsaSB7CisgIGNsZWFyOiBub25lOworfQorCisuZmlsZW5hbWUgeworICBmb250LXNpemU6IG1lZGl1bTsKKyAgZm9udC1mYW1pbHk6IENvdXJpZXIsIG1vbm9zcGFjZTsKK30KKworCitkaXYubmF2aGVhZGVyLCBkaXYuaGVhZGluZ3sKKyAgcG9zaXRpb246IGFic29sdXRlOworICBsZWZ0OiAwZW07CisgIHRvcDogMGVtOworICB3aWR0aDogMTAwJTsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2NkZjsKKyAgd2lkdGg6IDEwMCU7Cit9CisKK2Rpdi5uYXZmb290ZXIsIGRpdi5mb290aW5neworICBwb3NpdGlvbjogZml4ZWQ7CisgIGxlZnQ6IDBlbTsKKyAgYm90dG9tOiAwZW07CisgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CisgIHdpZHRoOiAxMDAlOworfQorCisKK2Rpdi5uYXZoZWFkZXIgdGQsCitkaXYubmF2Zm9vdGVyIHRkIHsKKyAgZm9udC1zaXplOiA2NiU7Cit9CisKK2Rpdi5uYXZoZWFkZXIgdGFibGUgdGggeworICAvKmZvbnQtZmFtaWx5OiBHZW9yZ2lhLCBUaW1lcywgc2VyaWY7Ki8KKyAgLypmb250LXNpemU6IHgtbGFyZ2U7Ki8KKyAgZm9udC1zaXplOiA4MCU7Cit9CisKK2Rpdi5uYXZoZWFkZXIgdGFibGUgeworICBib3JkZXItbGVmdDogMGVtOworICBib3JkZXItcmlnaHQ6IDBlbTsKKyAgYm9yZGVyLXRvcDogMGVtOworICB3aWR0aDogMTAwJTsKK30KKworZGl2Lm5hdmZvb3RlciB0YWJsZSB7CisgIGJvcmRlci1sZWZ0OiAwZW07CisgIGJvcmRlci1yaWdodDogMGVtOworICBib3JkZXItYm90dG9tOiAwZW07CisgIHdpZHRoOiAxMDAlOworfQorCitkaXYubmF2aGVhZGVyIHRhYmxlIHRkIGEsCitkaXYubmF2Zm9vdGVyIHRhYmxlIHRkIGEgeworICBjb2xvcjogIzc3NzsKKyAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworfQorCisvKiBub3JtYWwgdGV4dCBpbiB0aGUgZm9vdGVyICovCitkaXYubmF2Zm9vdGVyIHRhYmxlIHRkIHsKKyAgY29sb3I6IGJsYWNrOworfQorCitkaXYubmF2aGVhZGVyIHRhYmxlIHRkIGE6dmlzaXRlZCwKK2Rpdi5uYXZmb290ZXIgdGFibGUgdGQgYTp2aXNpdGVkIHsKKyAgY29sb3I6ICM0NDQ7Cit9CisKKworLyogbGlua3MgaW4gaGVhZGVyIGFuZCBmb290ZXIgKi8KK2Rpdi5uYXZoZWFkZXIgdGFibGUgdGQgYTpob3ZlciwKK2Rpdi5uYXZmb290ZXIgdGFibGUgdGQgYTpob3ZlciB7CisgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgY29sb3I6ICMzM2E7Cit9CisKK2Rpdi5uYXZoZWFkZXIgaHIsCitkaXYubmF2Zm9vdGVyIGhyIHsKKyAgZGlzcGxheTogbm9uZTsKK30KKworCisucWFuZGFzZXQgdHIucXVlc3Rpb24gdGQgcCB7CisgIG1hcmdpbjogMGVtIDBlbSAxZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKKy5xYW5kYXNldCB0ci5hbnN3ZXIgdGQgcCB7CisgIG1hcmdpbjogMGVtIDBlbSAxZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisuYW5zd2VyIHRkIHsKKyAgcGFkZGluZy1ib3R0b206IDEuNWVtOworfQorCisuZW1waGFzaXMgeworICBmb250LXdlaWdodDogYm9sZDsKK30KKworCisgIC8qKioqKioqKioqKioqIC8KKyAvIGRlY29yYXRpb25zICAvCisvICoqKioqKioqKioqKiovCisKKy50aXRsZXBhZ2UgeworfQorCisucGFydCAudGl0bGUgeworfQorCisuc3VidGl0bGUgeworICAgIGJvcmRlcjogbm9uZTsKK30KKworLyoKK2gxIHsKKyAgYm9yZGVyOiBub25lOworfQorCitoMiB7CisgIGJvcmRlci10b3A6IHNvbGlkIDAuMmVtOworICBib3JkZXItYm90dG9tOiBzb2xpZCAwLjA2ZW07Cit9CisKK2gzIHsKKyAgYm9yZGVyLXRvcDogMGVtOworICBib3JkZXItYm90dG9tOiBzb2xpZCAwLjA2ZW07Cit9CisKK2g0IHsKKyAgYm9yZGVyOiAwZW07CisgIGJvcmRlci1ib3R0b206IHNvbGlkIDAuMDZlbTsKK30KKworaDUgeworICBib3JkZXI6IDBlbTsKK30KKyovCisKKy5wcm9ncmFtbGlzdGluZyB7CisgIGJvcmRlcjogc29saWQgMXB4OworfQorCitkaXYuZmlndXJlLAorZGl2LnRhYmxlLAorZGl2LmluZm9ybWFsZmlndXJlLAorZGl2LmluZm9ybWFsdGFibGUsCitkaXYuaW5mb3JtYWxleGFtcGxlLAorZGl2LmV4YW1wbGUgeworICBib3JkZXI6IDFweCBzb2xpZDsKK30KKworCisKKy50aXAsCisud2FybmluZywKKy5jYXV0aW9uLAorLm5vdGUgeworICBib3JkZXI6IDFweCBzb2xpZDsKK30KKworLnRpcCB0YWJsZSB0aCwKKy53YXJuaW5nIHRhYmxlIHRoLAorLmNhdXRpb24gdGFibGUgdGgsCisubm90ZSB0YWJsZSB0aCB7CisgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZDsKK30KKworLnF1ZXN0aW9uIHRkIHsKKyAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGJsYWNrOworfQorCisuYW5zd2VyIHsKK30KKworCitiLmtleWNhcCwKKy5rZXljYXAgeworICBib3JkZXI6IDFweCBzb2xpZDsKK30KKworCitkaXYubmF2aGVhZGVyLCBkaXYuaGVhZGluZ3sKKyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkOworfQorCisKK2Rpdi5uYXZmb290ZXIsIGRpdi5mb290aW5neworICBib3JkZXItdG9wOiAxcHggc29saWQ7Cit9CisKKyAgLyoqKioqKioqKiAvCisgLyAgY29sb3JzICAvCisvICoqKioqKioqKi8KKworYm9keSB7CisgIGNvbG9yOiAjMzMzOworICBiYWNrZ3JvdW5kOiB3aGl0ZTsKK30KKworYSB7CisgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OworfQorCithOmhvdmVyIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2RlZGVkZTsKK30KKworCitoMSwKK2gyLAoraDMsCitoNCwKK2g1LAoraDYsCitoNywKK2g4IHsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cit9CisKK2hyIHsKKyAgYm9yZGVyLWNvbG9yOiAjYWFhOworfQorCisKKy50aXAsIC53YXJuaW5nLCAuY2F1dGlvbiwgLm5vdGUgeworICBib3JkZXItY29sb3I6ICNmZmY7Cit9CisKKworLnRpcCB0YWJsZSB0aCwKKy53YXJuaW5nIHRhYmxlIHRoLAorLmNhdXRpb24gdGFibGUgdGgsCisubm90ZSB0YWJsZSB0aCB7CisgIGJvcmRlci1ib3R0b20tY29sb3I6ICNmZmY7Cit9CisKKworLndhcm5pbmcgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOworfQorCisuY2F1dGlvbiB7CisgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Cit9CisKKy50aXAgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOworfQorCisubm90ZSB7CisgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Cit9CisKKy5nbG9zc2FyeSBkbCBkdCwKKy52YXJpYWJsZWxpc3QgZGwgZHQsCisudmFyaWFibGVsaXN0IGRsIGR0IHNwYW4udGVybSB7CisgIGNvbG9yOiAjMDQ0OworfQorCitkaXYuZmlndXJlLAorZGl2LnRhYmxlLAorZGl2LmV4YW1wbGUsCitkaXYuaW5mb3JtYWxmaWd1cmUsCitkaXYuaW5mb3JtYWx0YWJsZSwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUgeworICBib3JkZXItY29sb3I6ICNhYWE7Cit9CisKK3ByZS5wcm9ncmFtbGlzdGluZyB7CisgIGNvbG9yOiBibGFjazsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKKyAgYm9yZGVyLWNvbG9yOiAjYWFhOworICBib3JkZXItd2lkdGg6IDJweDsKK30KKworLmd1aW1lbnUsCisuZ3VpbGFiZWwsCisuZ3VpbWVudWl0ZW0geworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOworfQorCisKK2Iua2V5Y2FwLAorLmtleWNhcCB7CisgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CisgIGJvcmRlci1jb2xvcjogIzk5OTsKK30KKworCitkaXYubmF2aGVhZGVyIHsKKyAgYm9yZGVyLWNvbG9yOiBibGFjazsKK30KKworCitkaXYubmF2Zm9vdGVyIHsKKyAgYm9yZGVyLWNvbG9yOiBibGFjazsKK30KKworCisud3JpdGVybm90ZXMgeworICBjb2xvcjogcmVkOworfQorCisKKyAgLyoqKioqKioqKioqIC8KKyAvICBncmFwaGljcyAgLworLyAqKioqKioqKioqKi8KKworLyoKK2JvZHkgeworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy9ib2R5X2JnLmpwZyIpOworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworfQorCisubmF2aGVhZGVyLAorLm5vdGUsCisudGlwIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvbm90ZV9iZy5qcGciKTsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKK30KKworLndhcm5pbmcsCisuY2F1dGlvbiB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL3dhcm5pbmdfYmcuanBnIik7CisgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7Cit9CisKKy5maWd1cmUsCisuaW5mb3JtYWxmaWd1cmUsCisuZXhhbXBsZSwKKy5pbmZvcm1hbGV4YW1wbGUsCisudGFibGUsCisuaW5mb3JtYWx0YWJsZSB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL2ZpZ3VyZV9iZy5qcGciKTsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKK30KKworKi8KK2gxLAoraDIsCitoMywKK2g0LAoraDUsCitoNiwKK2g3eworfQorCisvKgorRXhhbXBsZSBvZiBob3cgdG8gc3RpY2sgYW4gaW1hZ2UgYXMgcGFydCBvZiB0aGUgdGl0bGUuCisKK2Rpdi5hcnRpY2xlIC50aXRsZXBhZ2UgLnRpdGxlCit7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZmlndXJlcy93aGl0ZS1vbi1ibGFjay5wbmciKTsKKyAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOworICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7Cit9CisqLworCitkaXYucHJlZmFjZSAudGl0bGVwYWdlIC50aXRsZSwKK2Rpdi5jb2xvcGhvbiAudGl0bGUsCitkaXYuY2hhcHRlciAudGl0bGVwYWdlIC50aXRsZSB7CisgIGJhY2tncm91bmQtcG9zaXRpb246IGJvdHRvbTsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OworfQorCitkaXYuc2VjdGlvbiBkaXYuc2VjdGlvbiAudGl0bGVwYWdlIC50aXRsZSwKK2Rpdi5zZWN0MiAudGl0bGVwYWdlIC50aXRsZSB7CisgICAgYmFja2dyb3VuZDogbm9uZTsKK30KKworCitoMS50aXRsZSB7CisgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICBoZWlnaHQ6IDI1NnB4OworICB0ZXh0LWluZGVudDogLTkwMDBweDsKKyAgb3ZlcmZsb3c6aGlkZGVuOworfQorCitoMi5zdWJ0aXRsZSB7CisgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworICB0ZXh0LWluZGVudDogLTkwMDBweDsKKyAgb3ZlcmZsb3c6aGlkZGVuOworICB3aWR0aDogMHB4OworICBkaXNwbGF5OiBub25lOworfQorCisgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLworIC8gIHBpcHBpbi5naW1wLm9yZyBzcGVjaWZpYyBhbHRlcmF0aW9ucyAgLworLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCitkaXYuaGVhZGluZywgZGl2Lm5hdmhlYWRlciB7CisgIGNvbG9yOiAjNzc3OworICBmb250LXNpemU6IDgwJTsKKyAgcGFkZGluZzogMDsKKyAgbWFyZ2luOiAwOworICB0ZXh0LWFsaWduOiBsZWZ0OworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIHRvcDogMHB4OworICBsZWZ0OiAwcHg7CisgIHdpZHRoOiAxMDAlOworICBoZWlnaHQ6IDUwcHg7CisgIGJhY2tncm91bmQ6IHVybCgnL2dmeC9oZWFkaW5nX2JnLnBuZycpIHRyYW5zcGFyZW50OworICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7CisgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7CisgIGJvcmRlcjogbm9uZTsKK30KKworZGl2LmhlYWRpbmcgYSB7CisgIGNvbG9yOiAjNDQ0OworfQorCitkaXYuZm9vdGluZywgZGl2Lm5hdmZvb3RlciB7CisgIGJvcmRlcjogbm9uZTsKKyAgY29sb3I6ICNkZGQ7CisgIGZvbnQtc2l6ZTogODAlOworICB0ZXh0LWFsaWduOnJpZ2h0OworCisgIHdpZHRoOiAxMDAlOworICBwYWRkaW5nLXRvcDogMTBweDsKKyAgcG9zaXRpb246IGFic29sdXRlOworICBib3R0b206IDBweDsKKyAgbGVmdDogMHB4OworCisgIGJhY2tncm91bmQ6IHVybCgnL2dmeC9mb290aW5nX2JnLnBuZycpIHRyYW5zcGFyZW50OworfQorKi8KKworCisKKyAgLyoqKioqKioqKioqKioqKioqKiAvCisgLyAgbmFzdHkgaWUgdHdlYWtzICAvCisvICoqKioqKioqKioqKioqKioqKi8KKworLyoKK2Rpdi5oZWFkaW5nLCBkaXYubmF2aGVhZGVyIHsKKyAgd2lkdGg6ZXhwcmVzc2lvbihkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoICsgInB4Iik7Cit9CisKK2Rpdi5mb290aW5nLCBkaXYubmF2Zm9vdGVyIHsKKyAgd2lkdGg6ZXhwcmVzc2lvbihkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoICsgInB4Iik7CisgIG1hcmdpbi1sZWZ0OmV4cHJlc3Npb24oIi01ZW0iKTsKK30KK2JvZHkgeworICBwYWRkaW5nOmV4cHJlc3Npb24oIjRlbSA1ZW0gMGVtIDVlbSIpOworfQorKi8KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvCisgLyBtb3ppbGxhIHZlbmRvciBzcGVjaWZpYyBjc3MgZXh0ZW5zaW9ucyAgLworLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKK2Rpdi5uYXZmb290ZXIsIGRpdi5mb290aW5neworICAtbW96LW9wYWNpdHk6IDAuOGVtOworfQorCitkaXYuZmlndXJlLAorZGl2LnRhYmxlLAorZGl2LmluZm9ybWFsZmlndXJlLAorZGl2LmluZm9ybWFsdGFibGUsCitkaXYuaW5mb3JtYWxleGFtcGxlLAorZGl2LmV4YW1wbGUsCisudGlwLAorLndhcm5pbmcsCisuY2F1dGlvbiwKKy5ub3RlIHsKKyAgLW1vei1ib3JkZXItcmFkaXVzOiAwLjVlbTsKK30KKworYi5rZXljYXAsCisua2V5Y2FwIHsKKyAgLW1vei1ib3JkZXItcmFkaXVzOiAwLjNlbTsKK30KKyovCisKK3RhYmxlIHRyIHRkIHRhYmxlIHRyIHRkIHsKKyAgZGlzcGxheTogbm9uZTsKK30KKworCitociB7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3RhYmxlIHsKKyAgYm9yZGVyOiAwZW07Cit9CisKKyAucGhvdG8geworICBmbG9hdDogcmlnaHQ7CisgIG1hcmdpbi1sZWZ0OiAgIDEuNWVtOworICBtYXJnaW4tYm90dG9tOiAxLjVlbTsKKyAgbWFyZ2luLXRvcDogMGVtOworICBtYXgtd2lkdGg6ICAgICAgMTdlbTsKKyAgYm9yZGVyOiAgICAgMXB4IHNvbGlkIGdyYXk7CisgIHBhZGRpbmc6ICAgIDNweDsKKyAgYmFja2dyb3VuZDogd2hpdGU7Cit9CisgLnNlcGVyYXRvciB7CisgICBwYWRkaW5nLXRvcDogMmVtOworICAgY2xlYXI6IGJvdGg7CisgIH0KKworICAjdmFsaWRhdG9ycyB7CisgICAgICBtYXJnaW4tdG9wOiA1ZW07CisgICAgICB0ZXh0LWFsaWduOiByaWdodDsKKyAgICAgIGNvbG9yOiAjNzc3OworICB9CisgIEBtZWRpYSBwcmludCB7CisgICAgICBib2R5IHsKKyAgICAgICAgICBmb250LXNpemU6IDhwdDsKKyAgICAgIH0KKyAgICAgIC5ub3ByaW50IHsKKyAgICAgICAgICBkaXNwbGF5OiBub25lOworICAgICAgfQorICB9CisKKworLnRpcCwKKy5ub3RlIHsKKyAgIGJhY2tncm91bmQ6ICNmMGYwZjI7CisgICBjb2xvcjogIzMzMzsKKyAgIHBhZGRpbmc6IDIwcHg7CisgICBtYXJnaW46IDIwcHg7Cit9CisKKy50aXAgaDMsCisubm90ZSBoMyB7CisgICBwYWRkaW5nOiAwZW07CisgICBtYXJnaW46IDBlbTsKKyAgIGZvbnQtc2l6ZTogMmVtOworICAgZm9udC13ZWlnaHQ6IGJvbGQ7CisgICBjb2xvcjogIzMzMzsKK30KKworLnRpcCBhLAorLm5vdGUgYSB7CisgICBjb2xvcjogIzMzMzsKKyAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOworfQorCisuZm9vdG5vdGUgeworICAgZm9udC1zaXplOiBzbWFsbDsKKyAgIGNvbG9yOiAjMzMzOworfQorCisvKiBDaGFuZ2VzIHRoZSBhbm5vdW5jZW1lbnQgdGV4dCAqLworLnRpcCBoMywKKy53YXJuaW5nIGgzLAorLmNhdXRpb24gaDMsCisubm90ZSBoMyB7CisgICBmb250LXNpemU6bGFyZ2U7CisgICBjb2xvcjogIzAwNTU3RDsKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3lvY3RvLXByb2plY3QtcXMveW9jdG8tcHJvamVjdC1xcy10aXRsZXBhZ2UueHNsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMtdGl0bGVwYWdlLnhzbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24veW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLXRpdGxlcGFnZS54c2wKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLXRpdGxlcGFnZS54c2wKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmM0OTY0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMueG1sCkBAIC0wLDAgKzEsNDkxIEBACis8IURPQ1RZUEUgYXJ0aWNsZSBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorCis8YXJ0aWNsZSBpZD0nYnJpZWYteW9jdG8tcHJvamVjdC1xcy1pbnRybyc+CisgICAgPGFydGljbGVpbmZvPgorICAgICAgICA8dGl0bGU+WW9jdG8gUHJvamVjdCBRdWljayBCdWlsZDwvdGl0bGU+CisKKyAgICAgICAgPGNvcHlyaWdodD4KKyAgICAgICAgICAgIDx5ZWFyPiZDT1BZUklHSFRfWUVBUjs8L3llYXI+CisgICAgICAgICAgICA8aG9sZGVyPkxpbnV4IEZvdW5kYXRpb248L2hvbGRlcj4KKyAgICAgICAgPC9jb3B5cmlnaHQ+CisKKyAgICAgICAgPGxlZ2Fsbm90aWNlPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50IHVuZGVyCisgICAgICAgICAgICAgICAgdGhlIHRlcm1zIG9mIHRoZSA8dWxpbmsgdHlwZT0iaHR0cCIgdXJsPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8yLjAvdWsvIj5DcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uLVNoYXJlIEFsaWtlIDIuMCBVSzogRW5nbGFuZCAmYW1wOyBXYWxlczwvdWxpbms+IGFzIHB1Ymxpc2hlZCBieSBDcmVhdGl2ZSBDb21tb25zLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xlZ2Fsbm90aWNlPgorCisKKyAgICAgICAgPGFic3RyYWN0PgorICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3lvY3RvLXByb2plY3QtdHJhbnNwLnBuZyIKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSI2aW4iIGRlcHRoPSIxaW4iCisgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbj0icmlnaHQiIHNjYWxlPSIyNSIgLz4KKyAgICAgICAgPC9hYnN0cmFjdD4KKyAgICA8L2FydGljbGVpbmZvPgorCisgICAgPHNlY3Rpb24gaWQ9J2JyaWVmLXdlbGNvbWUnPgorICAgICAgICA8dGl0bGU+V2VsY29tZSE8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2VsY29tZSEKKyAgICAgICAgICAgIFRoaXMgc2hvcnQgZG9jdW1lbnQgc3RlcHMgeW91IHRocm91Z2ggdGhlIHByb2Nlc3MgZm9yIGEgdHlwaWNhbAorICAgICAgICAgICAgaW1hZ2UgYnVpbGQgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICBUaGUgZG9jdW1lbnQgYWxzbyBpbnRyb2R1Y2VzIGhvdyB0byBjb25maWd1cmUgYSBidWlsZCBmb3Igc3BlY2lmaWMKKyAgICAgICAgICAgIGhhcmR3YXJlLgorICAgICAgICAgICAgWW91IHdpbGwgdXNlIFlvY3RvIFByb2plY3QgdG8gYnVpbGQgYSByZWZlcmVuY2UgZW1iZWRkZWQgT1MKKyAgICAgICAgICAgIGNhbGxlZCBQb2t5LgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgVGhlIGV4YW1wbGVzIGluIHRoaXMgcGFwZXIgYXNzdW1lIHlvdSBhcmUgdXNpbmcgYSBuYXRpdmUgTGludXgKKyAgICAgICAgICAgICAgICBzeXN0ZW0gcnVubmluZyBhIHJlY2VudCBVYnVudHUgTGludXggZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgIElmIHRoZSBtYWNoaW5lIHlvdSB3YW50IHRvIHVzZQorICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3Qgb24gdG8gYnVpbGQgYW4gaW1hZ2UgaXMgbm90IGEgbmF0aXZlIExpbnV4CisgICAgICAgICAgICAgICAgc3lzdGVtLCB5b3UgY2FuIHN0aWxsIHBlcmZvcm0gdGhlc2Ugc3RlcHMgYnkgdXNpbmcgQ1JPc3MKKyAgICAgICAgICAgICAgICBQbGF0Zm9ybVMgKENST1BTKSBhbmQgc2V0dGluZyB1cCBhIFBva3kgY29udGFpbmVyLgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzZXR0aW5nLXVwLXRvLXVzZS1jcm9wcyc+U2V0dGluZyBVcCB0byBVc2UgQ1JPc3MgUGxhdGZvcm1TIChDUk9QUyk8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IgbW9yZQorICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJZiB5b3Ugd2FudCBtb3JlIGNvbmNlcHR1YWwgb3IgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBvbiB0aGUKKyAgICAgICAgICAgIFlvY3RvIFByb2plY3QsIHNlZSB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsnPllvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbDwvdWxpbms+LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2JyaWVmLWNvbXBhdGlibGUtZGlzdHJvJz4KKyAgICAgICAgPHRpdGxlPkNvbXBhdGlibGUgTGludXggRGlzdHJpYnV0aW9uPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIE1ha2Ugc3VyZSB5b3VyCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+YnVpbGQgaG9zdDwvdWxpbms+CisgICAgICAgICAgICBtZWV0cyB0aGUgZm9sbG93aW5nIHJlcXVpcmVtZW50czoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA1MCBHYnl0ZXMgb2YgZnJlZSBkaXNrIHNwYWNlCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgUnVucyBhIHN1cHBvcnRlZCBMaW51eCBkaXN0cmlidXRpb24gKGkuZS4gcmVjZW50IHJlbGVhc2VzIG9mCisgICAgICAgICAgICAgICAgICAgIEZlZG9yYSwgb3BlblNVU0UsIENlbnRPUywgRGViaWFuLCBvciBVYnVudHUpLiBGb3IgYSBsaXN0IG9mCisgICAgICAgICAgICAgICAgICAgIExpbnV4IGRpc3RyaWJ1dGlvbnMgdGhhdCBzdXBwb3J0IHRoZSBZb2N0byBQcm9qZWN0LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNkZXRhaWxlZC1zdXBwb3J0ZWQtZGlzdHJvcyc+U3VwcG9ydGVkIExpbnV4IERpc3RyaWJ1dGlvbnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2l0IDEuOC4zLjEgb3IgZ3JlYXRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhciAxLjI3IG9yIGdyZWF0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeXRob24gMy40LjAgb3IgZ3JlYXRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdXIgYnVpbGQgaG9zdCBkb2VzIG5vdCBtZWV0IGFueSBvZiB0aGVzZSB0aHJlZSBsaXN0ZWQKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiByZXF1aXJlbWVudHMsIHlvdSBjYW4gdGFrZSBzdGVwcyB0byBwcmVwYXJlIHRoZQorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gc28gdGhhdCB5b3UgY2FuIHN0aWxsIHVzZSB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVxdWlyZWQtZ2l0LXRhci1hbmQtcHl0aG9uLXZlcnNpb25zJz5SZXF1aXJlZCBHaXQsIHRhciwgYW5kIFB5dGhvbiBWZXJzaW9uczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgZm9yIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2JyaWVmLWJ1aWxkLXN5c3RlbS1wYWNrYWdlcyc+CisgICAgICAgIDx0aXRsZT5CdWlsZCBIb3N0IFBhY2thZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBtdXN0IGluc3RhbGwgZXNzZW50aWFsIGhvc3QgcGFja2FnZXMgb24geW91cgorICAgICAgICAgICAgYnVpbGQgaG9zdC4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZCBpbnN0YWxscyB0aGUgaG9zdCBwYWNrYWdlcyBiYXNlZCBvbiBhbgorICAgICAgICAgICAgVWJ1bnR1IGRpc3RyaWJ1dGlvbjoKKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIEZvciBob3N0IHBhY2thZ2UgcmVxdWlyZW1lbnRzIG9uIGFsbCBzdXBwb3J0ZWQgTGludXgKKyAgICAgICAgICAgICAgICBkaXN0cmlidXRpb25zLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlcXVpcmVkLXBhY2thZ2VzLWZvci10aGUtaG9zdC1kZXZlbG9wbWVudC1zeXN0ZW0nPlJlcXVpcmVkIFBhY2thZ2VzIGZvciB0aGUgSG9zdCBEZXZlbG9wbWVudCBTeXN0ZW08L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgJlVCVU5UVV9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTDsgbGlic2RsMS4yLWRldiB4dGVybQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2JyaWVmLXVzZS1naXQtdG8tY2xvbmUtcG9reSc+CisgICAgICAgIDx0aXRsZT5Vc2UgR2l0IHRvIENsb25lIFBva3k8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgT25jZSB5b3UgY29tcGxldGUgdGhlIHNldHVwIGluc3RydWN0aW9ucyBmb3IgeW91ciBtYWNoaW5lLAorICAgICAgICAgICAgeW91IG5lZWQgdG8gZ2V0IGEgY29weSBvZiB0aGUgUG9reSByZXBvc2l0b3J5IG9uIHlvdXIgYnVpbGQKKyAgICAgICAgICAgIGhvc3QuCisgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBjb21tYW5kcyB0byBjbG9uZSB0aGUgUG9reQorICAgICAgICAgICAgcmVwb3NpdG9yeSBhbmQgdGhlbiBjaGVja291dCB0aGUgJkRJU1RST19SRUxfVEFHOyByZWxlYXNlOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5CisgICAgIENsb25pbmcgaW50byAncG9reScuLi4KKyAgICAgcmVtb3RlOiBDb3VudGluZyBvYmplY3RzOiAzNjE3ODIsIGRvbmUuCisgICAgIHJlbW90ZTogQ29tcHJlc3Npbmcgb2JqZWN0czogMTAwJSAoODcxMDAvODcxMDApLCBkb25lLgorICAgICByZW1vdGU6IFRvdGFsIDM2MTc4MiAoZGVsdGEgMjY4NjE5KSwgcmV1c2VkIDM2MTQzOSAoZGVsdGEgMjY4Mjc3KQorICAgICBSZWNlaXZpbmcgb2JqZWN0czogMTAwJSAoMzYxNzgyLzM2MTc4MiksIDEzMS45NCBNaUIgfCA2Ljg4IE1pQi9zLCBkb25lLgorICAgICBSZXNvbHZpbmcgZGVsdGFzOiAxMDAlICgyNjg2MTkvMjY4NjE5KSwgZG9uZS4KKyAgICAgQ2hlY2tpbmcgY29ubmVjdGl2aXR5Li4uIGRvbmUuCisgICAgICQgZ2l0IGNoZWNrb3V0IHRhZ3MveW9jdG8tMi41IC1iIG15LXlvY3RvLTIuNQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhlIHByZXZpb3VzIEdpdCBjaGVja291dCBjb21tYW5kIGNyZWF0ZXMgYSBsb2NhbCBicmFuY2gKKyAgICAgICAgICAgIG5hbWVkIG15LSZESVNUUk9fUkVMX1RBRzsuIFRoZSBmaWxlcyBhdmFpbGFibGUgdG8geW91IGluIHRoYXQKKyAgICAgICAgICAgIGJyYW5jaCBleGFjdGx5IG1hdGNoIHRoZSByZXBvc2l0b3J5J3MgZmlsZXMgaW4gdGhlCisgICAgICAgICAgICAiJkRJU1RST19OQU1FX05PX0NBUDsiIGRldmVsb3BtZW50IGJyYW5jaCBhdCB0aGUgdGltZSBvZiB0aGUKKyAgICAgICAgICAgIFlvY3RvIFByb2plY3QgJkRJU1RSTzsgcmVsZWFzZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9yIG1vcmUgb3B0aW9ucyBhbmQgaW5mb3JtYXRpb24gYWJvdXQgYWNjZXNzaW5nIFlvY3RvCisgICAgICAgICAgICBQcm9qZWN0IHJlbGF0ZWQgcmVwb3NpdG9yaWVzLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbG9jYXRpbmcteW9jdG8tcHJvamVjdC1zb3VyY2UtZmlsZXMnPkxvY2F0aW5nIFlvY3RvIFByb2plY3QgU291cmNlIEZpbGVzPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdicmllZi1idWlsZGluZy15b3VyLWltYWdlJz4KKyAgICAgICAgPHRpdGxlPkJ1aWxkaW5nIFlvdXIgSW1hZ2U8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVXNlIHRoZSBmb2xsb3dpbmcgc3RlcHMgdG8gYnVpbGQgeW91ciBpbWFnZS4KKyAgICAgICAgICAgIFRoZSBidWlsZCBwcm9jZXNzIGNyZWF0ZXMgYW4gZW50aXJlIExpbnV4IGRpc3RyaWJ1dGlvbiwgaW5jbHVkaW5nCisgICAgICAgICAgICB0aGUgdG9vbGNoYWluLCBmcm9tIHNvdXJjZS4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgd29ya2luZyBiZWhpbmQgYSBmaXJld2FsbCBhbmQgeW91ciBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCBpcyBub3Qgc2V0IHVwIGZvciBwcm94aWVzLCB5b3UgY291bGQgZW5jb3VudGVyCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9ibGVtcyB3aXRoIHRoZSBidWlsZCBwcm9jZXNzIHdoZW4gZmV0Y2hpbmcgc291cmNlCisgICAgICAgICAgICAgICAgICAgICAgICBjb2RlIChlLmcuIGZldGNoZXIgZmFpbHVyZXMgb3IgR2l0IGZhaWx1cmVzKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IGtub3cgeW91ciBwcm94eSBzZXR0aW5ncywgY29uc3VsdCB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbCBuZXR3b3JrIGluZnJhc3RydWN0dXJlIHJlc291cmNlcyBhbmQgZ2V0IHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgQSBnb29kIHN0YXJ0aW5nIHBvaW50IGNvdWxkIGFsc28gYmUgdG8gY2hlY2sgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgd2ViIGJyb3dzZXIgc2V0dGluZ3MuCisgICAgICAgICAgICAgICAgICAgICAgICBGaW5hbGx5LCB5b3UgY2FuIGZpbmQgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1dvcmtpbmdfQmVoaW5kX2FfTmV0d29ya19Qcm94eSc+V29ya2luZyBCZWhpbmQgYSBOZXR3b3JrIFByb3h5PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBwYWdlIG9mIHRoZSBZb2N0byBQcm9qZWN0IFdpa2kuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluaXRpYWxpemUgdGhlIEJ1aWxkIEVudmlyb25tZW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFJ1biB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCB0byBkZWZpbmUgWW9jdG8gUHJvamVjdCdzCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGVudmlyb25tZW50IG9uIHlvdXIgYnVpbGQgaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNvdXJjZSAmT0VfSU5JVF9GSUxFOworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEFtb25nIG90aGVyIHRoaW5ncywgdGhlIHNjcmlwdCBjcmVhdGVzIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyA8ZmlsZW5hbWU+YnVpbGQ8L2ZpbGVuYW1lPiBpbiB0aGlzIGNhc2UKKyAgICAgICAgICAgICAgICAgICAgYW5kIGlzIGxvY2F0ZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgdGhlIHNjcmlwdCBydW5zLCB5b3VyIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgaXMgc2V0IHRvIHRoZSBCdWlsZCBEaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIExhdGVyLCB3aGVuIHRoZSBidWlsZCBjb21wbGV0ZXMsIHRoZSBCdWlsZCBEaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgYWxsIHRoZSBmaWxlcyBjcmVhdGVkIGR1cmluZyB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nY29uZi1maWxlLXN0ZXAnPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXhhbWluZSBZb3VyIExvY2FsIENvbmZpZ3VyYXRpb24gRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBzZXQgdXAgdGhlIGJ1aWxkIGVudmlyb25tZW50LCBhIGxvY2FsCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSBuYW1lZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGJlY29tZXMgYXZhaWxhYmxlIGluCisgICAgICAgICAgICAgICAgICAgIGEgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBzdWJkaXJlY3Rvcnkgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIEJ1aWxkIERpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHRoaXMgZXhhbXBsZSwgdGhlIGRlZmF1bHRzIGFyZSBzZXQgdG8gYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgZm9yIGEgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPiB0YXJnZXQsIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgICAgIHN1aXRhYmxlIGZvciBlbXVsYXRpb24uCisgICAgICAgICAgICAgICAgICAgIFRoZSBwYWNrYWdlIG1hbmFnZXIgdXNlZCBpcyBzZXQgdG8gdGhlIFJQTSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIG1hbmFnZXIuCisgICAgICAgICAgICAgICAgICAgIDx0aXA+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNpZ25pZmljYW50bHkgc3BlZWQgdXAgeW91ciBidWlsZCBhbmQgZ3VhcmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFnYWluc3QgZmV0Y2hlciBmYWlsdXJlcyBieSB1c2luZyBtaXJyb3JzLgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gdXNlIG1pcnJvcnMsIGFkZCB0aGVzZSBsaW5lcyB0byB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlIEJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNTVEFURV9NSVJST1JTID0gIlwKKyAgICAgZmlsZTovLy4qIGh0dHA6Ly9zc3RhdGUueW9jdG9wcm9qZWN0Lm9yZy9kZXYvUEFUSDtkb3dubG9hZGZpbGVuYW1lPVBBVEggXG4gXAorICAgICBmaWxlOi8vLiogaHR0cDovL3NzdGF0ZS55b2N0b3Byb2plY3Qub3JnLyZZT0NUT19ET0NfVkVSU0lPTl9NSU5VU19PTkU7L1BBVEg7ZG93bmxvYWRmaWxlbmFtZT1QQVRIIFxuIFwKKyAgICAgZmlsZTovLy4qIGh0dHA6Ly9zc3RhdGUueW9jdG9wcm9qZWN0Lm9yZy8mWU9DVE9fRE9DX1ZFUlNJT047L1BBVEg7ZG93bmxvYWRmaWxlbmFtZT1QQVRIIFxuIFwKKyAgICAgIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGV4YW1wbGVzIHNob3dlZCBob3cgdG8gYWRkIHNzdGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgcGF0aHMgZm9yIFlvY3RvIFByb2plY3QgJllPQ1RPX0RPQ19WRVJTSU9OX01JTlVTX09ORTssCisgICAgICAgICAgICAgICAgICAgICAgICAmWU9DVE9fRE9DX1ZFUlNJT047LCBhbmQgYSBkZXZlbG9wbWVudCBhcmVhLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGEgY29tcGxldGUgaW5kZXggb2Ygc3N0YXRlIGxvY2F0aW9ucywgc2VlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vc3N0YXRlLnlvY3RvcHJvamVjdC5vcmcvJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC90aXA+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlN0YXJ0IHRoZSBCdWlsZDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDb250aW51ZSB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBidWlsZCBhbiBPUyBpbWFnZQorICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIHRhcmdldCwgd2hpY2ggaXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+IGluIHRoaXMgZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgY29yZS1pbWFnZS1zYXRvCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjdXNpbmdwb2t5LWNvbXBvbmVudHMtYml0YmFrZSc+Qml0QmFrZTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwsCisgICAgICAgICAgICAgICAgICAgIG9yIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjYml0YmFrZS11c2VyLW1hbnVhbC1jb21tYW5kJz5CaXRCYWtlIENvbW1hbmQ8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2ltdWxhdGUgWW91ciBJbWFnZSBVc2luZyBRRU1VOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE9uY2UgdGhpcyBwYXJ0aWN1bGFyIGltYWdlIGlzIGJ1aWx0LCB5b3UgY2FuIHN0YXJ0CisgICAgICAgICAgICAgICAgICAgIFFFTVUsIHdoaWNoIGlzIGEgUXVpY2sgRU1VbGF0b3IgdGhhdCBzaGlwcyB3aXRoCisgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgcnVucWVtdSBxZW11eDg2CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gbGVhcm4gbW9yZSBhYm91dCBydW5uaW5nIFFFTVUsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9IiZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1tYW51YWwtcWVtdSI+VXNpbmcgdGhlIFF1aWNrIEVNVWxhdG9yIChRRU1VKTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBjaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXhpdCBRRU1VOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEV4aXQgUUVNVSBieSBlaXRoZXIgY2xpY2tpbmcgb24gdGhlIHNodXRkb3duIGljb24gb3IgYnkKKyAgICAgICAgICAgICAgICAgICAgdHlwaW5nIDxmaWxlbmFtZT5DdHJsLUM8L2ZpbGVuYW1lPiBpbiB0aGUgUUVNVQorICAgICAgICAgICAgICAgICAgICB0cmFuc2NyaXB0IHdpbmRvdyBmcm9tIHdoaWNoIHlvdSBldm9rZWQgUUVNVS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2N1c3RvbWl6aW5nLXlvdXItYnVpbGQtZm9yLXNwZWNpZmljLWhhcmR3YXJlJz4KKyAgICAgICAgPHRpdGxlPkN1c3RvbWl6aW5nIFlvdXIgQnVpbGQgZm9yIFNwZWNpZmljIEhhcmR3YXJlPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFNvIGZhciwgYWxsIHlvdSBoYXZlIGRvbmUgaXMgcXVpY2tseSBidWlsdCBhbiBpbWFnZSBzdWl0YWJsZQorICAgICAgICAgICAgZm9yIGVtdWxhdGlvbiBvbmx5LgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHNob3dzIHlvdSBob3cgdG8gY3VzdG9taXplIHlvdXIgYnVpbGQgZm9yIHNwZWNpZmljCisgICAgICAgICAgICBoYXJkd2FyZSBieSBhZGRpbmcgYSBoYXJkd2FyZSBsYXllciBpbnRvIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSW4gZ2VuZXJhbCwgbGF5ZXJzIGFyZSByZXBvc2l0b3JpZXMgdGhhdCBjb250YWluIHJlbGF0ZWQgc2V0cyBvZgorICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zIGFuZCBjb25maWd1cmF0aW9ucyB0aGF0IHRlbGwgdGhlIFlvY3RvIFByb2plY3Qgd2hhdAorICAgICAgICAgICAgdG8gZG8uCisgICAgICAgICAgICBJc29sYXRpbmcgcmVsYXRlZCBtZXRhZGF0YSBpbnRvIGZ1bmN0aW9uYWxseSBzcGVjaWZpYyBsYXllcnMKKyAgICAgICAgICAgIGZhY2lsaXRhdGVzIG1vZHVsYXIgZGV2ZWxvcG1lbnQgYW5kIG1ha2VzIGl0IGVhc2llciB0byByZXVzZSB0aGUKKyAgICAgICAgICAgIGxheWVyIG1ldGFkYXRhLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgQnkgY29udmVudGlvbiwgbGF5ZXIgbmFtZXMgc3RhcnQgd2l0aCB0aGUgc3RyaW5nICJtZXRhLSIuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBhZGQgYSBoYXJkd2FyZSBsYXllcjoKKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GaW5kIGEgTGF5ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgTG90cyBvZiBoYXJkd2FyZSBsYXllcnMgZXhpc3QuCisgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGhhcyBtYW55IGhhcmR3YXJlIGxheWVycy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIGFkZHMgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZ2l0aHViLmNvbS9rcmFqL21ldGEtYWx0ZXJhJz5tZXRhLWFsdGVyYTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlIGxheWVyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DbG9uZSB0aGUgTGF5ZXI8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBVc2UgR2l0IHRvIG1ha2UgYSBsb2NhbCBjb3B5IG9mIHRoZSBsYXllciBvbiB5b3VyIG1hY2hpbmUuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gcHV0IHRoZSBjb3B5IGluIHRoZSB0b3AgbGV2ZWwgb2YgdGhlIGNvcHkgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIFBva3kgcmVwb3NpdG9yeSBjcmVhdGVkIGVhcmxpZXI6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L3Bva3kKKyAgICAgJCBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2tyYWovbWV0YS1hbHRlcmEuZ2l0CisgICAgIENsb25pbmcgaW50byAnbWV0YS1hbHRlcmEnLi4uCisgICAgIHJlbW90ZTogQ291bnRpbmcgb2JqZWN0czogMjUxNzAsIGRvbmUuCisgICAgIHJlbW90ZTogQ29tcHJlc3Npbmcgb2JqZWN0czogMTAwJSAoMzUwLzM1MCksIGRvbmUuCisgICAgIHJlbW90ZTogVG90YWwgMjUxNzAgKGRlbHRhIDY0NSksIHJldXNlZCA3MTkgKGRlbHRhIDUzOCksIHBhY2stcmV1c2VkIDI0MjE5CisgICAgIFJlY2VpdmluZyBvYmplY3RzOiAxMDAlICgyNTE3MC8yNTE3MCksIDQxLjAyIE1pQiB8IDEuNjQgTWlCL3MsIGRvbmUuCisgICAgIFJlc29sdmluZyBkZWx0YXM6IDEwMCUgKDEzMzg1LzEzMzg1KSwgZG9uZS4KKyAgICAgQ2hlY2tpbmcgY29ubmVjdGl2aXR5Li4uIGRvbmUuCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGhhcmR3YXJlIGxheWVyIG5vdyBleGlzdHMgd2l0aCBvdGhlciBsYXllcnMgaW5zaWRlCisgICAgICAgICAgICAgICAgICAgIHRoZSBQb2t5IHJlZmVyZW5jZSByZXBvc2l0b3J5IG9uIHlvdXIgYnVpbGQgaG9zdCBhcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1hbHRlcmE8L2ZpbGVuYW1lPiBhbmQgY29udGFpbnMgYWxsIHRoZQorICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YSBuZWVkZWQgdG8gc3VwcG9ydCBoYXJkd2FyZSBmcm9tIEFsdGVyYSwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgaXMgb3duZWQgYnkgSW50ZWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNoYW5nZSB0aGUgQ29uZmlndXJhdGlvbiB0byBCdWlsZCBmb3IgYSBTcGVjaWZpYyBNYWNoaW5lOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIHRoZSBtYWNoaW5lIGZvciB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIEZvciB0aGlzIGV4YW1wbGUsIHNldCB0aGUgPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byAiY3ljbG9uZTUiLgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBjb25maWd1cmF0aW9ucyBhcmUgdXNlZDoKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXRodWIuY29tL2tyYWovbWV0YS1hbHRlcmEvYmxvYi9tYXN0ZXIvY29uZi9tYWNoaW5lL2N5Y2xvbmU1LmNvbmYnPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjb25mLWZpbGUtc3RlcCc+RXhhbWluZSBZb3VyIExvY2FsIENvbmZpZ3VyYXRpb24gRmlsZTwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzdGVwIGVhcmxpZXIgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5BZGQgWW91ciBMYXllciB0byB0aGUgTGF5ZXIgQ29uZmlndXJhdGlvbiBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEJlZm9yZSB5b3UgY2FuIHVzZSBhIGxheWVyIGR1cmluZyBhIGJ1aWxkLCB5b3UgbXVzdCBhZGQgaXQKKyAgICAgICAgICAgICAgICAgICAgdG8geW91ciA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIGlzIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeSdzPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlVzZSB0aGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzIGFkZC1sYXllcjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgdG8gYWRkIHRoZSBsYXllciB0byB0aGUgY29uZmlndXJhdGlvbiBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2Qgfi9wb2t5L2J1aWxkCisgICAgICQgYml0YmFrZS1sYXllcnMgYWRkLWxheWVyIC4uL21ldGEtYWx0ZXJhCisgICAgIE5PVEU6IFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyLi4uCisgICAgIFBhcnNpbmcgcmVjaXBlczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjMyCisgICAgIFBhcnNpbmcgb2YgOTE4IC5iYiBmaWxlcyBjb21wbGV0ZSAoMCBjYWNoZWQsIDkxOCBwYXJzZWQpLiAxNDAxIHRhcmdldHMsIDEyMyBza2lwcGVkLCAwIG1hc2tlZCwgMCBlcnJvcnMuCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gYWRkaW5nIGxheWVycyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2FkZGluZy1hLWxheWVyLXVzaW5nLXRoZS1iaXRiYWtlLWxheWVycy1zY3JpcHQnPkFkZGluZyBhIExheWVyIFVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBTY3JpcHQ8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgQ29tcGxldGluZyB0aGVzZSBzdGVwcyBoYXMgYWRkZWQgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1hbHRlcmE8L2ZpbGVuYW1lPiBsYXllciB0byB5b3VyIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgIGRldmVsb3BtZW50IGVudmlyb25tZW50IGFuZCBjb25maWd1cmVkIGl0IHRvIGJ1aWxkIGZvciB0aGUKKyAgICAgICAgICAgICJjeWNsb25lNSIgbWFjaGluZS4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBzdGVwcyBhcmUgZm9yIGRlbW9uc3RyYXRpb24gcHVycG9zZXMgb25seS4KKyAgICAgICAgICAgICAgICBJZiB5b3Ugd2VyZSB0byBhdHRlbXB0IHRvIGJ1aWxkIGFuIGltYWdlIGZvciB0aGUKKyAgICAgICAgICAgICAgICAiY3ljbG9uZTUiIGJ1aWxkLCB5b3Ugc2hvdWxkIHJlYWQgdGhlIEFsdGVyYQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdjcmVhdGluZy15b3VyLW93bi1nZW5lcmFsLWxheWVyJz4KKyAgICAgICAgPHRpdGxlPkNyZWF0aW5nIFlvdXIgT3duIEdlbmVyYWwgTGF5ZXI8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgTWF5YmUgeW91IGhhdmUgYW4gYXBwbGljYXRpb24gb3Igc3BlY2lmaWMgc2V0IG9mIGJlaGF2aW9ycyB5b3UKKyAgICAgICAgICAgIG5lZWQgdG8gaXNvbGF0ZS4KKyAgICAgICAgICAgIFlvdSBjYW4gY3JlYXRlIHlvdXIgb3duIGdlbmVyYWwgbGF5ZXIgdXNpbmcgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnMgY3JlYXRlLWxheWVyPC9maWxlbmFtZT4gY29tbWFuZC4KKyAgICAgICAgICAgIFRoZSB0b29sIGF1dG9tYXRlcyBsYXllciBjcmVhdGlvbiBieSBzZXR0aW5nIHVwIGEKKyAgICAgICAgICAgIHN1YmRpcmVjdG9yeSB3aXRoIGEgPGZpbGVuYW1lPmxheWVyLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlLCBhIDxmaWxlbmFtZT5yZWNpcGVzLWV4YW1wbGU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgc3ViZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgYW4gPGZpbGVuYW1lPmV4YW1wbGUuYmI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgcmVjaXBlLCBhIGxpY2Vuc2luZyBmaWxlLCBhbmQgYSA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZHMgcnVuIHRoZSB0b29sIHRvIGNyZWF0ZSBhIGxheWVyIG5hbWVkCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1teWxheWVyPC9maWxlbmFtZT4gaW4gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGRpcmVjdG9yeToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L3Bva3kKKyAgICAgJCBiaXRiYWtlLWxheWVycyBjcmVhdGUtbGF5ZXIgbWV0YS1teWxheWVyCisgICAgIE5PVEU6IFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyLi4uCisgICAgIEFkZCB5b3VyIG5ldyBsYXllciB3aXRoICdiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIgbWV0YS1teWxheWVyJworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gbGF5ZXJzIGFuZCBob3cgdG8gY3JlYXRlIHRoZW0sIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1hLWdlbmVyYWwtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+Q3JlYXRpbmcgYSBHZW5lcmFsIExheWVyIFVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBTY3JpcHQ8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2JyaWVmLXdoZXJlLXRvLWdvLW5leHQnPgorICAgICAgICA8dGl0bGU+V2hlcmUgVG8gR28gTmV4dDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBOb3cgdGhhdCB5b3UgaGF2ZSBleHBlcmllbmNlZCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCwgeW91IG1pZ2h0CisgICAgICAgICAgICBiZSBhc2tpbmcgeW91cnNlbGYgIldoYXQgbm93PyIKKyAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGhhcyBtYW55IHNvdXJjZXMgb2YgaW5mb3JtYXRpb24gaW5jbHVkaW5nCisgICAgICAgICAgICB0aGUgd2Vic2l0ZSwgd2lraSBwYWdlcywgYW5kIHVzZXIgbWFudWFsczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+V2Vic2l0ZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdCBXZWJzaXRlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXMgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiwgdGhlIGxhdGVzdCBidWlsZHMsCisgICAgICAgICAgICAgICAgICAgIGJyZWFraW5nIG5ld3MsIGZ1bGwgZGV2ZWxvcG1lbnQgZG9jdW1lbnRhdGlvbiwgYW5kCisgICAgICAgICAgICAgICAgICAgIGFjY2VzcyB0byBhIHJpY2ggWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBDb21tdW5pdHkKKyAgICAgICAgICAgICAgICAgICAgaW50byB3aGljaCB5b3UgY2FuIHRhcC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RGV2ZWxvcGVyIFNjcmVlbmNhc3Q6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly92aW1lby5jb20vMzY0NTAzMjEnPkdldHRpbmcgU3RhcnRlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IC0gTmV3IERldmVsb3BlciBTY3JlZW5jYXN0IFR1dG9yaWFsPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXMgYSAzMC1taW51dGUgdmlkZW8gY3JlYXRlZCBmb3IgdXNlcnMgdW5mYW1pbGlhcgorICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IGJ1dCBmYW1pbGlhciB3aXRoIExpbnV4IGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIGhvc3RzLgorICAgICAgICAgICAgICAgICAgICBXaGlsZSB0aGlzIHNjcmVlbmNhc3QgaXMgc29tZXdoYXQgZGF0ZWQsIHRoZQorICAgICAgICAgICAgICAgICAgICBpbnRyb2R1Y3RvcnkgYW5kIGZ1bmRhbWVudGFsIGNvbmNlcHRzIGFyZSB1c2VmdWwgZm9yCisgICAgICAgICAgICAgICAgICAgIHRoZSBiZWdpbm5lci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+WW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7Jz5Zb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWw8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBpcyBhIGdyZWF0IHBsYWNlIHRvIHN0YXJ0IHRvIGxlYXJuIGFib3V0IHRoZQorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICBUaGlzIG1hbnVhbCBpbnRyb2R1Y2VzIHlvdSB0byB0aGUgWW9jdG8gUHJvamVjdCBhbmQgaXRzCisgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgICAgICBUaGUgbWFudWFsIGFsc28gcHJvdmlkZXMgY29uY2VwdHVhbCBpbmZvcm1hdGlvbiBmb3IKKyAgICAgICAgICAgICAgICAgICAgdmFyaW91cyBhc3BlY3RzIG9mIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Zb2N0byBQcm9qZWN0IFdpa2k6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsnPllvY3RvIFByb2plY3QgV2lraTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gd2hlcmUgdG8gZ28gbmV4dAorICAgICAgICAgICAgICAgICAgICB3aGVuIHJhbXBpbmcgdXAgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCwgcmVsZWFzZQorICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiwgcHJvamVjdCBwbGFubmluZywgYW5kIFFBIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Zb2N0byBQcm9qZWN0IE1haWxpbmcgTGlzdHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgUmVsYXRlZCBtYWlsaW5nIGxpc3RzIHByb3ZpZGUgYSBmb3J1bSBmb3IgZGlzY3Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2ggc3VibWlzc2lvbiBhbmQgYW5ub3VuY2VtZW50cy4KKyAgICAgICAgICAgICAgICAgICAgU2V2ZXJhbCBtYWlsaW5nIGxpc3RzIGV4aXN0IGFuZCBhcmUgZ3JvdXBlZCBhY2NvcmRpbmcKKyAgICAgICAgICAgICAgICAgICAgdG8gYXJlYXMgb2YgY29uY2Vybi4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVzb3VyY2VzLW1haWxpbmdsaXN0Jz5NYWlsaW5nIGxpc3RzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IgYQorICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZSBsaXN0IG9mIFlvY3RvIFByb2plY3QgbWFpbGluZyBsaXN0cy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29tcHJlaGVuc2l2ZSBMaXN0IG9mIExpbmtzIGFuZCBPdGhlciBEb2N1bWVudGF0aW9uOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVzb3VyY2VzLWxpbmtzLWFuZC1yZWxhdGVkLWRvY3VtZW50YXRpb24nPkxpbmtzIGFuZCBSZWxhdGVkIERvY3VtZW50YXRpb248L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIHByb3ZpZGVzIGEKKyAgICAgICAgICAgICAgICAgICAgY29tcHJlaGVuc2l2ZSBsaXN0IG9mIGFsbCByZWxhdGVkIGxpbmtzIGFuZCBvdGhlcgorICAgICAgICAgICAgICAgICAgICB1c2VyIGRvY3VtZW50YXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L2FydGljbGU+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JyaWVmLXlvY3RvcHJvamVjdHFzL2ZpZ3VyZXMvYnlwcXMtdGl0bGUucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvZmlndXJlcy9ieXBxcy10aXRsZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWUwYTVjZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JyaWVmLXlvY3RvcHJvamVjdHFzL2ZpZ3VyZXMvYnlwcXMtdGl0bGUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3lvY3RvLXByb2plY3QtcXMvZmlndXJlcy95b2N0by1wcm9qZWN0LXRyYW5zcC5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9icmllZi15b2N0b3Byb2plY3Rxcy9maWd1cmVzL3lvY3RvLXByb2plY3QtdHJhbnNwLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24veW9jdG8tcHJvamVjdC1xcy9maWd1cmVzL3lvY3RvLXByb2plY3QtdHJhbnNwLnBuZwpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvZmlndXJlcy95b2N0by1wcm9qZWN0LXRyYW5zcC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC1ndWlkZS54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9ic3AtZ3VpZGUvYnNwLWd1aWRlLnhtbAppbmRleCA1NzZlZDE4Li43Y2E0YzVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9ic3AtZ3VpZGUvYnNwLWd1aWRlLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9ic3AtZ3VpZGUvYnNwLWd1aWRlLnhtbApAQCAtMTE3LDE0ICsxMTcsOSBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkphbnVhcnkgMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQuMjwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPk1hcmNoIDIwMTg8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNC4yIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjU8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5NYXkgMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi41IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKQEAgLTE0MiwyOCArMTM3LDQwIEBACiAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+WW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgRGV2ZWxvcGVyJ3MgR3VpZGU8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+WW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGU8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICBpcyBmb3IgdGhlICZZT0NUT19ET0NfVkVSU0lPTjsgcmVsZWFzZSBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KICAgICAgICAgICAgICAgICAgICAgICAgVG8gYmUgc3VyZSB5b3UgaGF2ZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIG1hbnVhbAotICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCB1c2UgdGhlIG1hbnVhbCBmcm9tIHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgRm9yIG1hbnVhbHMgYXNzb2NpYXRlZCB3aXRoIG90aGVyIHJlbGVhc2VzIG9mIHRoZSBZb2N0bwotICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0LCBnbyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgZ28gdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICBhbmQgdXNlIHRoZSBkcm9wLWRvd24gIkFjdGl2ZSBSZWxlYXNlcyIgYnV0dG9uCi0gICAgICAgICAgICAgICAgICAgICAgIGFuZCBjaG9vc2UgdGhlIG1hbnVhbCBhc3NvY2lhdGVkIHdpdGggdGhlIGRlc2lyZWQKLSAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIGZyb20gdGhhdCBzaXRlLgorICAgICAgICAgICAgICAgICAgICAgICBNYW51YWxzIGZyb20gdGhlIHNpdGUgYXJlIG1vcmUgdXAtdG8tZGF0ZSB0aGFuIG1hbnVhbHMKKyAgICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2VkIFRBUiBmaWxlcy4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgVG8gcmVwb3J0IGFueSBpbmFjY3VyYWNpZXMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0b0B5b2N0b3Byb2plY3QuY29tPC9maWxlbmFtZT4gb3IgbG9nIGludG8KLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbG9jYXRlZCB0aGlzIG1hbnVhbCB0aHJvdWdoIGEgd2ViIHNlYXJjaCwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIG1hbnVhbCBtaWdodCBub3QgYmUgdGhlIG9uZSB5b3Ugd2FudAorICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiB0aGUgc2VhcmNoIG1pZ2h0IGhhdmUgcmV0dXJuZWQgYSBtYW51YWwgbXVjaAorICAgICAgICAgICAgICAgICAgICAgICBvbGRlciB0aGFuIHRoZSBZb2N0byBQcm9qZWN0IHZlcnNpb24gd2l0aCB3aGljaCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgYXJlIHdvcmtpbmcpLgorICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSBhbGwgWW9jdG8gUHJvamVjdCBtYWpvciByZWxlYXNlcyBieQorICAgICAgICAgICAgICAgICAgICAgICB2aXNpdGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL1JlbGVhc2VzJz5SZWxlYXNlczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuCisgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIGEgdmVyc2lvbiBvZiB0aGlzIG1hbnVhbCBmb3IgYSBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB2aXNpdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBzZXQgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICJBQ1RJVkUgUkVMRUFTRVMgRE9DVU1FTlRBVElPTiIgb3IgIkRPQ1VNRU5UUyBBUkNISVZFIgorICAgICAgICAgICAgICAgICAgICAgICBwdWxsLWRvd24gbWVudXMuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgVG8gcmVwb3J0IGFueSBpbmFjY3VyYWNpZXMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0CisgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0b0B5b2N0b3Byb2plY3QuY29tPC9maWxlbmFtZT4gb3IgbG9nIGludG8KKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICA8L25vdGU+CiAgICAgPC9sZWdhbG5vdGljZT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3Atc3R5bGUuY3NzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC1zdHlsZS5jc3MKaW5kZXggZTQwN2NhNC4uMGM4Njg5YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC1zdHlsZS5jc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC1zdHlsZS5jc3MKQEAgLTczMCw2ICs3MzAsOSBAQAogICBib3JkZXItY29sb3I6IGJsYWNrOwogfQogCisud3JpdGVybm90ZXMgeworICBjb2xvcjogcmVkOworfQogCiAgIC8qKioqKioqKioqKiAvCiAgLyAgZ3JhcGhpY3MgIC8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC54bWwKaW5kZXggZDdiNmYxNS4uMDBhMjhiMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC54bWwKQEAgLTQsMzcxICs0LDQyOCBAQAogCiA8Y2hhcHRlciBpZD0nYnNwJz4KIAotICAgICAgICA8dGl0bGU+Qm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQKSAtIERldmVsb3BlcidzIEd1aWRlPC90aXRsZT4KKzx0aXRsZT5Cb2FyZCBTdXBwb3J0IFBhY2thZ2VzIChCU1ApIC0gRGV2ZWxvcGVyJ3MgR3VpZGU8L3RpdGxlPgogCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQSBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgaXMgYSBjb2xsZWN0aW9uIG9mIGluZm9ybWF0aW9uIHRoYXQKLSAgICAgICAgICAgIGRlZmluZXMgaG93IHRvIHN1cHBvcnQgYSBwYXJ0aWN1bGFyIGhhcmR3YXJlIGRldmljZSwgc2V0IG9mIGRldmljZXMsIG9yCi0gICAgICAgICAgICBoYXJkd2FyZSBwbGF0Zm9ybS4KLSAgICAgICAgICAgIFRoZSBCU1AgaW5jbHVkZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGhhcmR3YXJlIGZlYXR1cmVzCi0gICAgICAgICAgICBwcmVzZW50IG9uIHRoZSBkZXZpY2UgYW5kIGtlcm5lbCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFsb25nIHdpdGggYW55Ci0gICAgICAgICAgICBhZGRpdGlvbmFsIGhhcmR3YXJlIGRyaXZlcnMgcmVxdWlyZWQuCi0gICAgICAgICAgICBUaGUgQlNQIGFsc28gbGlzdHMgYW55IGFkZGl0aW9uYWwgc29mdHdhcmUKLSAgICAgICAgICAgIGNvbXBvbmVudHMgcmVxdWlyZWQgaW4gYWRkaXRpb24gdG8gYSBnZW5lcmljIExpbnV4IHNvZnR3YXJlIHN0YWNrIGZvciBib3RoCi0gICAgICAgICAgICBlc3NlbnRpYWwgYW5kIG9wdGlvbmFsIHBsYXRmb3JtIGZlYXR1cmVzLgotICAgICAgICA8L3BhcmE+Cis8cGFyYT4KKyAgICBBIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBpcyBhIGNvbGxlY3Rpb24gb2YgaW5mb3JtYXRpb24gdGhhdAorICAgIGRlZmluZXMgaG93IHRvIHN1cHBvcnQgYSBwYXJ0aWN1bGFyIGhhcmR3YXJlIGRldmljZSwgc2V0IG9mIGRldmljZXMsIG9yCisgICAgaGFyZHdhcmUgcGxhdGZvcm0uCisgICAgVGhlIEJTUCBpbmNsdWRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaGFyZHdhcmUgZmVhdHVyZXMKKyAgICBwcmVzZW50IG9uIHRoZSBkZXZpY2UgYW5kIGtlcm5lbCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFsb25nIHdpdGggYW55CisgICAgYWRkaXRpb25hbCBoYXJkd2FyZSBkcml2ZXJzIHJlcXVpcmVkLgorICAgIFRoZSBCU1AgYWxzbyBsaXN0cyBhbnkgYWRkaXRpb25hbCBzb2Z0d2FyZQorICAgIGNvbXBvbmVudHMgcmVxdWlyZWQgaW4gYWRkaXRpb24gdG8gYSBnZW5lcmljIExpbnV4IHNvZnR3YXJlIHN0YWNrIGZvciBib3RoCisgICAgZXNzZW50aWFsIGFuZCBvcHRpb25hbCBwbGF0Zm9ybSBmZWF0dXJlcy4KKzwvcGFyYT4KIAotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoaXMgZ3VpZGUgcHJlc2VudHMgaW5mb3JtYXRpb24gYWJvdXQgQlNQIExheWVycywgZGVmaW5lcyBhIHN0cnVjdHVyZSBmb3IgY29tcG9uZW50cwotICAgICAgICAgICAgc28gdGhhdCBCU1BzIGZvbGxvdyBhIGNvbW1vbmx5IHVuZGVyc3Rvb2QgbGF5b3V0LCBkaXNjdXNzZXMgaG93IHRvIGN1c3RvbWl6ZQotICAgICAgICAgICAgYSByZWNpcGUgZm9yIGEgQlNQLCBhZGRyZXNzZXMgQlNQIGxpY2Vuc2luZywgYW5kIHByb3ZpZGVzIGluZm9ybWF0aW9uIHRoYXQKLSAgICAgICAgICAgIHNob3dzIHlvdSBob3cgdG8gY3JlYXRlIGFuZCBtYW5hZ2UgYQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnNwLWxheWVycyc+QlNQIExheWVyPC9saW5rPiB1c2luZyB0d28gWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndXNpbmctdGhlLXlvY3RvLXByb2plY3RzLWJzcC10b29scyc+QlNQIFRvb2xzPC9saW5rPi4KLSAgICAgICAgPC9wYXJhPgorPHBhcmE+CisgICAgVGhpcyBndWlkZSBwcmVzZW50cyBpbmZvcm1hdGlvbiBhYm91dCBCU1AgTGF5ZXJzLCBkZWZpbmVzIGEgc3RydWN0dXJlIGZvciBjb21wb25lbnRzCisgICAgc28gdGhhdCBCU1BzIGZvbGxvdyBhIGNvbW1vbmx5IHVuZGVyc3Rvb2QgbGF5b3V0LCBkaXNjdXNzZXMgaG93IHRvIGN1c3RvbWl6ZQorICAgIGEgcmVjaXBlIGZvciBhIEJTUCwgYWRkcmVzc2VzIEJTUCBsaWNlbnNpbmcsIGFuZCBwcm92aWRlcyBpbmZvcm1hdGlvbiB0aGF0CisgICAgc2hvd3MgeW91IGhvdyB0byBjcmVhdGUgYQorICAgIDxsaW5rIGxpbmtlbmQ9J2JzcC1sYXllcnMnPkJTUCBMYXllcjwvbGluaz4gdXNpbmcgdGhlCisgICAgPGxpbmsgbGlua2VuZD0nY3JlYXRpbmctYS1uZXctYnNwLWxheWVyLXVzaW5nLXRoZS1iaXRiYWtlLWxheWVycy1zY3JpcHQnPjxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+PC9saW5rPgorICAgIHRvb2wuCis8L3BhcmE+CiAKLSAgICAgICAgPHNlY3Rpb24gaWQ9J2JzcC1sYXllcnMnPgotICAgICAgICAgICAgPHRpdGxlPkJTUCBMYXllcnM8L3RpdGxlPgorPHNlY3Rpb24gaWQ9J2JzcC1sYXllcnMnPgorICAgIDx0aXRsZT5CU1AgTGF5ZXJzPC90aXRsZT4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQSBCU1AgY29uc2lzdHMgb2YgYSBmaWxlIHN0cnVjdHVyZSBpbnNpZGUgYSBiYXNlIGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICBDb2xsZWN0aXZlbHksIHlvdSBjYW4gdGhpbmsgb2YgdGhlIGJhc2UgZGlyZWN0b3J5LCBpdHMgZmlsZSBzdHJ1Y3R1cmUsCi0gICAgICAgICAgICAgICAgYW5kIHRoZSBjb250ZW50cyBhcyBhIEJTUCBMYXllci4KLSAgICAgICAgICAgICAgICBBbHRob3VnaCBub3QgYSBzdHJpY3QgcmVxdWlyZW1lbnQsIGxheWVycyBpbiB0aGUgWW9jdG8gUHJvamVjdCB1c2UgdGhlCi0gICAgICAgICAgICAgICAgZm9sbG93aW5nIHdlbGwtZXN0YWJsaXNoZWQgbmFtaW5nIGNvbnZlbnRpb246Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIFRoZSBzdHJpbmcgIm1ldGEtIiBpcyBwcmVwZW5kZWQgdG8gdGhlIG1hY2hpbmUgb3IgcGxhdGZvcm0gbmFtZSwgd2hpY2ggaXMKLSAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+YnNwX25hbWU8L3JlcGxhY2VhYmxlPiBpbiB0aGUgYWJvdmUgZm9ybS4KLSAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KLSAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGUgQlNQIGxheWVyIG5hbWluZyBjb252ZW50aW9uIGlzIHdlbGwtZXN0YWJsaXNoZWQsCi0gICAgICAgICAgICAgICAgICAgIGl0IGlzIGFkdmlzYWJsZSB0byBmb2xsb3cgaXQgd2hlbiBjcmVhdGluZyBsYXllcnMuCi0gICAgICAgICAgICAgICAgICAgIFRlY2huaWNhbGx5IHNwZWFraW5nLCBhIEJTUCBsYXllciBuYW1lIGRvZXMgbm90IG5lZWQgdG8KLSAgICAgICAgICAgICAgICAgICAgc3RhcnQgd2l0aCA8ZmlsZW5hbWU+bWV0YS08L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgeW91IG1pZ2h0IHJ1biBpbnRvIHNpdHVhdGlvbnMgd2hlcmUgb2JzY3VyZQotICAgICAgICAgICAgICAgICAgICBzY3JpcHRzIGFzc3VtZSB0aGlzIGNvbnZlbnRpb24uCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgICBBIEJTUCBjb25zaXN0cyBvZiBhIGZpbGUgc3RydWN0dXJlIGluc2lkZSBhIGJhc2UgZGlyZWN0b3J5LgorICAgICAgICBDb2xsZWN0aXZlbHksIHlvdSBjYW4gdGhpbmsgb2YgdGhlIGJhc2UgZGlyZWN0b3J5LCBpdHMgZmlsZSBzdHJ1Y3R1cmUsCisgICAgICAgIGFuZCB0aGUgY29udGVudHMgYXMgYSBCU1AgTGF5ZXIuCisgICAgICAgIEFsdGhvdWdoIG5vdCBhIHN0cmljdCByZXF1aXJlbWVudCwgQlNQIGxheWVycyBpbiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICB1c2UgdGhlIGZvbGxvd2luZyB3ZWxsLWVzdGFibGlzaGVkIG5hbWluZyBjb252ZW50aW9uOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIFRoZSBzdHJpbmcgIm1ldGEtIiBpcyBwcmVwZW5kZWQgdG8gdGhlIG1hY2hpbmUgb3IgcGxhdGZvcm0gbmFtZSwgd2hpY2ggaXMKKyAgICAgICAgPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPiBpbiB0aGUgYWJvdmUgZm9ybS4KKyAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CisgICAgICAgICAgICBCZWNhdXNlIHRoZSBCU1AgbGF5ZXIgbmFtaW5nIGNvbnZlbnRpb24gaXMgd2VsbC1lc3RhYmxpc2hlZCwKKyAgICAgICAgICAgIGl0IGlzIGFkdmlzYWJsZSB0byBmb2xsb3cgaXQgd2hlbiBjcmVhdGluZyBsYXllcnMuCisgICAgICAgICAgICBUZWNobmljYWxseSBzcGVha2luZywgYSBCU1AgbGF5ZXIgbmFtZSBkb2VzIG5vdCBuZWVkIHRvCisgICAgICAgICAgICBzdGFydCB3aXRoIDxmaWxlbmFtZT5tZXRhLTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgSG93ZXZlciwgdmFyaW91cyBzY3JpcHRzIGFuZCB0b29scyBpbiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgYXNzdW1lIHRoaXMgY29udmVudGlvbi4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVG8gaGVscCB1bmRlcnN0YW5kIHRoZSBCU1AgbGF5ZXIgY29uY2VwdCwgY29uc2lkZXIgdGhlIEJTUHMgdGhhdCB0aGUKLSAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHN1cHBvcnRzIGFuZCBwcm92aWRlcyB3aXRoIGVhY2ggcmVsZWFzZS4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGUgbGF5ZXJzIGluIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3lvY3RvLXByb2plY3QtcmVwb3NpdG9yaWVzJz5Zb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgotICAgICAgICAgICAgICAgIHRocm91Z2ggYSB3ZWIgaW50ZXJmYWNlIGF0Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2knPjwvdWxpbms+LgotICAgICAgICAgICAgICAgIElmIHlvdSBnbyB0byB0aGF0IGludGVyZmFjZSwgeW91IHdpbGwgZmluZCBuZWFyIHRoZSBib3R0b20gb2YgdGhlIGxpc3QKLSAgICAgICAgICAgICAgICB1bmRlciAiWW9jdG8gTWV0YWRhdGEgTGF5ZXJzIiBzZXZlcmFsIEJTUCBsYXllcnMgYWxsIG9mIHdoaWNoIGFyZQotICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBieSB0aGUgWW9jdG8gUHJvamVjdCAoZS5nLiA8ZmlsZW5hbWU+bWV0YS1yYXNwYmVycnlwaTwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgIEVhY2ggb2YgdGhlc2UgbGF5ZXJzIGlzIGEgcmVwb3NpdG9yeSB1bnRvIGl0c2VsZiBhbmQgY2xpY2tpbmcgb24gYQotICAgICAgICAgICAgICAgIGxheWVyIHJldmVhbHMgaW5mb3JtYXRpb24gdGhhdCBpbmNsdWRlcyB0d28gbGlua3MgZnJvbSB3aGljaCB5b3UgY2FuIGNob29zZQotICAgICAgICAgICAgICAgIHRvIHNldCB1cCBhIGNsb25lIG9mIHRoZSBsYXllcidzIHJlcG9zaXRvcnkgb24geW91ciBsb2NhbCBob3N0IHN5c3RlbS4KLSAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBjbG9uZXMgdGhlIFJhc3BiZXJyeSBQaSBCU1AgbGF5ZXI6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIDxwYXJhPgorICAgICAgICBUbyBoZWxwIHVuZGVyc3RhbmQgdGhlIEJTUCBsYXllciBjb25jZXB0LCBjb25zaWRlciB0aGUgQlNQcyB0aGF0IHRoZQorICAgICAgICBZb2N0byBQcm9qZWN0IHN1cHBvcnRzIGFuZCBwcm92aWRlcyB3aXRoIGVhY2ggcmVsZWFzZS4KKyAgICAgICAgWW91IGNhbiBzZWUgdGhlIGxheWVycyBpbiB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyN5b2N0by1wcm9qZWN0LXJlcG9zaXRvcmllcyc+WW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KKyAgICAgICAgdGhyb3VnaCBhIHdlYiBpbnRlcmZhY2UgYXQKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz48L3VsaW5rPi4KKyAgICAgICAgSWYgeW91IGdvIHRvIHRoYXQgaW50ZXJmYWNlLCB5b3Ugd2lsbCBmaW5kIGEgbGlzdCBvZiByZXBvc2l0b3JpZXMKKyAgICAgICAgdW5kZXIgIllvY3RvIE1ldGFkYXRhIExheWVycyIuCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgTGF5ZXJzIHRoYXQgYXJlIG5vIGxvbmdlciBhY3RpdmVseSBzdXBwb3J0ZWQgYXMgcGFydCBvZiB0aGUKKyAgICAgICAgICAgIFlvY3RvIFByb2plY3QgYXBwZWFyIHVuZGVyIHRoZSBoZWFkaW5nICJZb2N0byBNZXRhZGF0YSBMYXllcgorICAgICAgICAgICAgQXJjaGl2ZS4iCisgICAgICAgIDwvbm90ZT4KKyAgICAgICAgRWFjaCByZXBvc2l0b3J5IGlzIGEgQlNQIGxheWVyIHN1cHBvcnRlZCBieSB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+bWV0YS1yYXNwYmVycnlwaTwvZmlsZW5hbWU+IGFuZAorICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+KS4KKyAgICAgICAgRWFjaCBvZiB0aGVzZSBsYXllcnMgaXMgYSByZXBvc2l0b3J5IHVudG8gaXRzZWxmIGFuZCBjbGlja2luZyBvbiBhCisgICAgICAgIGxheWVyIHJldmVhbHMgaW5mb3JtYXRpb24gdGhhdCBpbmNsdWRlcyB0d28gbGlua3MgZnJvbSB3aGljaCB5b3UgY2FuIGNob29zZQorICAgICAgICB0byBzZXQgdXAgYSBjbG9uZSBvZiB0aGUgbGF5ZXIncyByZXBvc2l0b3J5IG9uIHlvdXIgbG9jYWwgaG9zdCBzeXN0ZW0uCisgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IGNsb25lcyB0aGUgUmFzcGJlcnJ5IFBpIEJTUCBsYXllcjoKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9tZXRhLXJhc3BiZXJyeXBpCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgPC9wYXJhPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBJbiBhZGRpdGlvbiB0byBCU1AgbGF5ZXJzIG5lYXIgdGhlIGJvdHRvbSBvZiB0aGF0IHJlZmVyZW5jZWQKLSAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3J5LCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPiBsYXllciBpcyBwYXJ0IG9mIHRoZQotICAgICAgICAgICAgICAgIHNoaXBwZWQgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPiBsYXllciBtYWludGFpbnMgc2V2ZXJhbAotICAgICAgICAgICAgICAgIEJTUHMgc3VjaCBhcyB0aGUgQmVhZ2xlYm9uZSwgRWRnZVJvdXRlciwgYW5kIGdlbmVyaWMgdmVyc2lvbnMgb2YKLSAgICAgICAgICAgICAgICBib3RoIDMyIGFuZCA2NC1iaXQgSUEgbWFjaGluZXMuCi0gICAgICAgICAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICAgIEluIGFkZGl0aW9uIHRvIEJTUCBsYXllcnMsIHRoZQorICAgICAgICA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPiBsYXllciBpcyBwYXJ0IG9mIHRoZQorICAgICAgICBzaGlwcGVkIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeS4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5tZXRhLXlvY3RvLWJzcDwvZmlsZW5hbWU+IGxheWVyIG1haW50YWlucyBzZXZlcmFsCisgICAgICAgIEJTUHMgc3VjaCBhcyB0aGUgQmVhZ2xlYm9uZSwgRWRnZVJvdXRlciwgYW5kIGdlbmVyaWMgdmVyc2lvbnMgb2YKKyAgICAgICAgYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBJQSBtYWNoaW5lcy4KKyAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgQlNQIGRldmVsb3BtZW50IHdvcmtmbG93LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2RldmVsb3BpbmctYS1ib2FyZC1zdXBwb3J0LXBhY2thZ2UtYnNwJz5EZXZlbG9waW5nIGEgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApPC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzZXQgdXAgYSBsb2NhbCBjb3B5IG9mIHNvdXJjZSBmaWxlcwotICAgICAgICAgICAgICAgIGZyb20gYSBHaXQgcmVwb3NpdG9yeSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN3b3JraW5nLXdpdGgteW9jdG8tcHJvamVjdC1zb3VyY2UtZmlsZXMnPldvcmtpbmcgV2l0aCBZb2N0byBQcm9qZWN0IFNvdXJjZSBGaWxlczwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gYWxzbyBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCi0gICAgICAgICAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgQlNQIGRldmVsb3BtZW50IHdvcmtmbG93LCBzZWUgdGhlCisgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXZlbG9waW5nLWEtYm9hcmQtc3VwcG9ydC1wYWNrYWdlLWJzcCc+RGV2ZWxvcGluZyBhIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKTwvbGluaz4iCisgICAgICAgIHNlY3Rpb24uCisgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzZXQgdXAgYSBsb2NhbCBjb3B5IG9mIHNvdXJjZSBmaWxlcworICAgICAgICBmcm9tIGEgR2l0IHJlcG9zaXRvcnksIHNlZSB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2xvY2F0aW5nLXlvY3RvLXByb2plY3Qtc291cmNlLWZpbGVzJz5Mb2NhdGluZyBZb2N0byBQcm9qZWN0IFNvdXJjZSBGaWxlczwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBsYXllcidzIGJhc2UgZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5tZXRhLTxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4pCi0gICAgICAgICAgICAgICAgaXMgdGhlIHJvb3Qgb2YgdGhlIEJTUCBMYXllci4KLSAgICAgICAgICAgICAgICBUaGlzIHJvb3QgaXMgd2hhdCB5b3UgYWRkIHRvIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CQkxBWUVSUyc+PGZpbGVuYW1lPkJCTEFZRVJTPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHRoZSA8ZmlsZW5hbWU+Y29uZi9iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAotICAgICAgICAgICAgICAgIHdoaWNoIGlzIGVzdGFibGlzaGVkIGFmdGVyIHlvdSBydW4gdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBlbnZpcm9ubWVudAotICAgICAgICAgICAgICAgIHNldHVwIHNjcmlwdCAoaS5lLgotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3VsaW5rPikuCi0gICAgICAgICAgICAgICAgQWRkaW5nIHRoZSByb290IGFsbG93cyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byByZWNvZ25pemUgdGhlIEJTUAotICAgICAgICAgICAgICAgIGRlZmluaXRpb24gYW5kIGZyb20gaXQgYnVpbGQgYW4gaW1hZ2UuCi0gICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIGxheWVyJ3MgYmFzZSBkaXJlY3RvcnkKKyAgICAgICAgKDxmaWxlbmFtZT5tZXRhLTxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPikKKyAgICAgICAgaXMgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBCU1AgTGF5ZXIuCisgICAgICAgIFRoaXMgZGlyZWN0b3J5IGlzIHdoYXQgeW91IGFkZCB0byB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCTEFZRVJTJz48ZmlsZW5hbWU+QkJMQVlFUlM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgIHZhcmlhYmxlIGluIHRoZSA8ZmlsZW5hbWU+Y29uZi9iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbiB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPiwKKyAgICAgICAgd2hpY2ggaXMgZXN0YWJsaXNoZWQgYWZ0ZXIgeW91IHJ1biB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIGVudmlyb25tZW50CisgICAgICAgIHNldHVwIHNjcmlwdCAoaS5lLgorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC91bGluaz4pLgorICAgICAgICBBZGRpbmcgdGhlIHJvb3QgZGlyZWN0b3J5IGFsbG93cyB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPgorICAgICAgICB0byByZWNvZ25pemUgdGhlIEJTUCBsYXllciBhbmQgZnJvbSBpdCBidWlsZCBhbiBpbWFnZS4KKyAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIEJCTEFZRVJTID89ICIgXAogICAgICAgIC91c3IvbG9jYWwvc3JjL3lvY3RvL21ldGEgXAogICAgICAgIC91c3IvbG9jYWwvc3JjL3lvY3RvL21ldGEtcG9reSBcCiAgICAgICAgL3Vzci9sb2NhbC9zcmMveW9jdG8vbWV0YS15b2N0by1ic3AgXAogICAgICAgIC91c3IvbG9jYWwvc3JjL3lvY3RvL21ldGEtbXlsYXllciBcCiAgICAgICAgIgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KKyAgICAgICAgICAgIE9yZGVyaW5nIGFuZAorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCRklMRV9QUklPUklUWSc+PGZpbGVuYW1lPkJCRklMRV9QUklPUklUWTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIGZvciB0aGUgbGF5ZXJzIGxpc3RlZCBpbiA8ZmlsZW5hbWU+QkJMQVlFUlM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgbWF0dGVyLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIG11bHRpcGxlIGxheWVycyBkZWZpbmUgYSBtYWNoaW5lCisgICAgICAgICAgICBjb25maWd1cmF0aW9uLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzCisgICAgICAgICAgICB0aGUgbGFzdCBsYXllciBzZWFyY2hlZCBnaXZlbiBzaW1pbGFyIGxheWVyCisgICAgICAgICAgICBwcmlvcml0aWVzLgorICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSB3b3JrcyBmcm9tIHRoZSB0b3AtZG93biB0aHJvdWdoCisgICAgICAgICAgICB0aGUgbGF5ZXJzIGxpc3RlZCBpbiA8ZmlsZW5hbWU+QkJMQVlFUlM8L2ZpbGVuYW1lPi4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgU29tZSBCU1BzIHJlcXVpcmUgYWRkaXRpb25hbCBsYXllcnMgb24KLSAgICAgICAgICAgICAgICB0b3Agb2YgdGhlIEJTUCdzIHJvb3QgbGF5ZXIgaW4gb3JkZXIgdG8gYmUgZnVuY3Rpb25hbC4KLSAgICAgICAgICAgICAgICBGb3IgdGhlc2UgY2FzZXMsIHlvdSBhbHNvIG5lZWQgdG8gYWRkIHRob3NlIGxheWVycyB0byB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QkJMQVlFUlM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbiBvcmRlciB0byBidWlsZCB0aGUgQlNQLgotICAgICAgICAgICAgICAgIFlvdSBtdXN0IGFsc28gc3BlY2lmeSBpbiB0aGUgIkRlcGVuZGVuY2llcyIgc2VjdGlvbiBvZiB0aGUgQlNQJ3MKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gZmlsZSBhbnkgcmVxdWlyZW1lbnRzIGZvciBhZGRpdGlvbmFsCi0gICAgICAgICAgICAgICAgbGF5ZXJzIGFuZCwgcHJlZmVyYWJseSwgYW55Ci0gICAgICAgICAgICAgICAgYnVpbGQgaW5zdHJ1Y3Rpb25zIHRoYXQgbWlnaHQgYmUgY29udGFpbmVkIGVsc2V3aGVyZQotICAgICAgICAgICAgICAgIGluIHRoZSA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gZmlsZS4KLSAgICAgICAgICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgICAgU29tZSBCU1BzIHJlcXVpcmUgb3IgZGVwZW5kIG9uIGFkZGl0aW9uYWwgbGF5ZXJzCisgICAgICAgIGJleW9uZCB0aGUgQlNQJ3Mgcm9vdCBsYXllciBpbiBvcmRlciB0byBiZSBmdW5jdGlvbmFsLgorICAgICAgICBJbiB0aGlzIGNhc2UsIHlvdSBuZWVkIHRvIHNwZWNpZnkgdGhlc2UgbGF5ZXJzIGluIHRoZQorICAgICAgICA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gIkRlcGVuZGVuY2llcyIgc2VjdGlvbiBvZiB0aGUKKyAgICAgICAgQlNQJ3Mgcm9vdCBsYXllci4KKyAgICAgICAgQWRkaXRpb25hbGx5LCBpZiBhbnkgYnVpbGQgaW5zdHJ1Y3Rpb25zIGV4aXN0IGZvciB0aGUKKyAgICAgICAgQlNQLCB5b3UgbXVzdCBhZGQgdGhlbSB0byB0aGUgIkRlcGVuZGVuY2llcyIgc2VjdGlvbi4KKyAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFNvbWUgbGF5ZXJzIGZ1bmN0aW9uIGFzIGEgbGF5ZXIgdG8gaG9sZCBvdGhlciBCU1AgbGF5ZXJzLgotICAgICAgICAgICAgICAgIEFuIGV4YW1wbGUgb2YgdGhpcyB0eXBlIG9mIGxheWVyIGlzIHRoZSA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IGxheWVyLAotICAgICAgICAgICAgICAgIHdoaWNoIGNvbnRhaW5zIGEgbnVtYmVyIG9mIGluZGl2aWR1YWwgQlNQIHN1Yi1sYXllcnMsIGFzIHdlbGwgYXMgYSBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICBuYW1lZCA8ZmlsZW5hbWU+Y29tbW9uLzwvZmlsZW5hbWU+IGZ1bGwgb2YgY29tbW9uIGNvbnRlbnQgYWNyb3NzIHRob3NlIGxheWVycy4KLSAgICAgICAgICAgICAgICBBbm90aGVyIGV4YW1wbGUgaXMgdGhlIDxmaWxlbmFtZT5tZXRhLXlvY3RvLWJzcDwvZmlsZW5hbWU+IGxheWVyIG1lbnRpb25lZAotICAgICAgICAgICAgICAgIGVhcmxpZXIuCi0gICAgICAgICAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICAgIFNvbWUgbGF5ZXJzIGZ1bmN0aW9uIGFzIGEgbGF5ZXIgdG8gaG9sZCBvdGhlciBCU1AgbGF5ZXJzLgorICAgICAgICBUaGVzZSBsYXllcnMgYXJlIGtub3dzIGFzCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN0ZXJtLWNvbnRhaW5lci1sYXllcic+Y29udGFpbmVyIGxheWVyczwvdWxpbms+Ii4KKyAgICAgICAgQW4gZXhhbXBsZSBvZiB0aGlzIHR5cGUgb2YgbGF5ZXIgaXMgdGhlCisgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gbGF5ZXIuCisgICAgICAgIFRoaXMgbGF5ZXIgY29udGFpbnMgQlNQIGxheWVycyBmb3IgdGhlIEludGVsLWNvcmUyLTMyCisgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3JlZ2lzdGVyZWQnPkludGVsPC90cmFkZW1hcms+IENvbW1vbiBDb3JlCisgICAgICAgIChJbnRlbC1jb3JlMi0zMikgYW5kIHRoZSBJbnRlbC1jb3JlaTctNjQKKyAgICAgICAgPHRyYWRlbWFyayBjbGFzcz0ncmVnaXN0ZXJlZCc+SW50ZWw8L3RyYWRlbWFyaz4gQ29tbW9uIENvcmUKKyAgICAgICAgKEludGVsLWNvcmVpNy02NCkuCisgICAgICAgIHRoZSA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IGxheWVyIGFsc28gY29udGFpbnMKKyAgICAgICAgdGhlIDxmaWxlbmFtZT5jb21tb24vPC9maWxlbmFtZT4gZGlyZWN0b3J5LCB3aGljaCBjb250YWlucworICAgICAgICBjb21tb24gY29udGVudCBhY3Jvc3MgdGhvc2UgbGF5ZXJzLgorICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRm9yIG1vcmUgZGV0YWlsZWQgaW5mb3JtYXRpb24gb24gbGF5ZXJzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KKyAgICA8cGFyYT4KKyAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gbGF5ZXJzLCBzZWUgdGhlCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcgYW5kIENyZWF0aW5nIExheWVyczwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CiAKLSAgICAgICAgPHNlY3Rpb24gaWQ9J3ByZXBhcmluZy15b3VyLWJ1aWxkLWhvc3QtdG8td29yay13aXRoLWJzcC1sYXllcnMnPgotICAgICAgICAgICAgPHRpdGxlPlByZXBhcmluZyBZb3VyIEJ1aWxkIEhvc3QgdG8gV29yayBXaXRoIEJTUCBMYXllcnM8L3RpdGxlPgorPHNlY3Rpb24gaWQ9J3ByZXBhcmluZy15b3VyLWJ1aWxkLWhvc3QtdG8td29yay13aXRoLWJzcC1sYXllcnMnPgorICAgIDx0aXRsZT5QcmVwYXJpbmcgWW91ciBCdWlsZCBIb3N0IHRvIFdvcmsgV2l0aCBCU1AgTGF5ZXJzPC90aXRsZT4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBob3cgdG8gZ2V0IHlvdXIgYnVpbGQgaG9zdCByZWFkeQotICAgICAgICAgICAgICAgIHRvIHdvcmsgd2l0aCBCU1AgbGF5ZXJzLgotICAgICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgdGhlIGhvc3Qgc2V0IHVwLCB5b3UgY2FuIGNyZWF0ZSB0aGUgbGF5ZXIKLSAgICAgICAgICAgICAgICBhcyBkZXNjcmliZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLWEtbmV3LWJzcC1sYXllci11c2luZy10aGUteW9jdG8tYnNwLXNjcmlwdCc+Q3JlYXRpbmcgYSBuZXcgQlNQIExheWVyIFVzaW5nIHRoZSB5b2N0by1ic3AgU2NyaXB0PC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBGb3Igc3RydWN0dXJhbCBpbmZvcm1hdGlvbiBvbiBCU1BzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JzcC1maWxlbGF5b3V0Jz5FeGFtcGxlIEZpbGVzeXN0ZW0gTGF5b3V0PC9saW5rPgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBob3cgdG8gZ2V0IHlvdXIgYnVpbGQgaG9zdCByZWFkeQorICAgICAgICB0byB3b3JrIHdpdGggQlNQIGxheWVycy4KKyAgICAgICAgT25jZSB5b3UgaGF2ZSB0aGUgaG9zdCBzZXQgdXAsIHlvdSBjYW4gY3JlYXRlIHRoZSBsYXllcgorICAgICAgICBhcyBkZXNjcmliZWQgaW4gdGhlCisgICAgICAgICI8bGluayBsaW5rZW5kPSdjcmVhdGluZy1hLW5ldy1ic3AtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+Q3JlYXRpbmcgYSBuZXcgQlNQIExheWVyIFVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBTY3JpcHQ8L2xpbms+IgorICAgICAgICBzZWN0aW9uLgorICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIEZvciBzdHJ1Y3R1cmFsIGluZm9ybWF0aW9uIG9uIEJTUHMsIHNlZSB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JzcC1maWxlbGF5b3V0Jz5FeGFtcGxlIEZpbGVzeXN0ZW0gTGF5b3V0PC9saW5rPgorICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgPC9ub3RlPgorICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCBVcCB0aGUgQnVpbGQgRW52aXJvbm1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBCZSBzdXJlIHlvdSBhcmUgc2V0IHVwIHRvIHVzZSBCaXRCYWtlIGluIGEgc2hlbGwuCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzZXR0aW5nLXVwLXRoZS1kZXZlbG9wbWVudC1ob3N0LXRvLXVzZS10aGUteW9jdG8tcHJvamVjdCc+UHJlcGFyaW5nIHRoZSBCdWlsZCBIb3N0PC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yIGluZm9ybWF0aW9uCisgICAgICAgICAgICAgICAgb24gaG93IHRvIGdldCBhIGJ1aWxkIGhvc3QgcmVhZHkgdGhhdCBpcyBlaXRoZXIgYSBuYXRpdmUKKyAgICAgICAgICAgICAgICBMaW51eCBtYWNoaW5lIG9yIGEgbWFjaGluZSB0aGF0IHVzZXMgQ1JPUFMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNsb25lIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IFJlcG9zaXRvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBoYXZlIGEgbG9jYWwgY29weSBvZiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgIChpLmUuIGEgbG9jYWwgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5KS4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Nsb25pbmctdGhlLXBva3ktcmVwb3NpdG9yeSc+Q2xvbmluZyB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBSZXBvc2l0b3J5PC91bGluaz4iCisgICAgICAgICAgICAgICAgYW5kIHBvc3NpYmx5IHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjaGVja2luZy1vdXQtYnktYnJhbmNoLWluLXBva3knPkNoZWNraW5nIE91dCBieSBCcmFuY2ggaW4gUG9reTwvdWxpbms+IgorICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NoZWNrb3V0LW91dC1ieS10YWctaW4tcG9reSc+Q2hlY2tpbmcgT3V0IGJ5IFRhZyBpbiBQb2t5PC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbnMgYWxsIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbCBmb3IKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY2xvbmUgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5IGFuZCBjaGVjayBvdXQgdGhlIGFwcHJvcHJpYXRlIGJyYW5jaCBmb3IgeW91ciB3b3JrLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXRlcm1pbmUgdGhlIEJTUCBMYXllciBZb3UgV2FudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHN1cHBvcnRzIG1hbnkgQlNQcywgd2hpY2ggYXJlIG1haW50YWluZWQgaW4KKyAgICAgICAgICAgICAgICB0aGVpciBvd24gbGF5ZXJzIG9yIGluIGxheWVycyBkZXNpZ25lZCB0byBjb250YWluIHNldmVyYWwKKyAgICAgICAgICAgICAgICBCU1BzLgorICAgICAgICAgICAgICAgIFRvIGdldCBhbiBpZGVhIG9mIG1hY2hpbmUgc3VwcG9ydCB0aHJvdWdoIEJTUCBsYXllcnMsIHlvdSBjYW4KKyAgICAgICAgICAgICAgICBsb29rIGF0IHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19SRUxFQVNFX0RMX1VSTDsvbWFjaGluZXMnPmluZGV4IG9mIG1hY2hpbmVzPC91bGluaz4KKyAgICAgICAgICAgICAgICBmb3IgdGhlIHJlbGVhc2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9wdGlvbmFsbHkgQ2xvbmUgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBCU1AgTGF5ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJZiB5b3VyIGhhcmR3YXJlIGlzIGJhc2VkIG9uIGN1cnJlbnQgSW50ZWwgQ1BVcyBhbmQgZGV2aWNlcywKKyAgICAgICAgICAgICAgICB5b3UgY2FuIGxldmVyYWdlIHRoaXMgQlNQIGxheWVyLgorICAgICAgICAgICAgICAgIEZvciBkZXRhaWxzIG9uIHRoZSA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IEJTUCBsYXllciwKKyAgICAgICAgICAgICAgICBzZWUgdGhlIGxheWVyJ3MKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9tZXRhLWludGVsL3RyZWUvUkVBRE1FJz48ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGZpbGUuCiAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IFVwIHRoZSBCdWlsZCBFbnZpcm9ubWVudDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB5b3UgYXJlIHNldCB1cCB0byB1c2UgQml0QmFrZSBpbiBhIHNoZWxsLgotICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NldHRpbmctdXAtdGhlLWRldmVsb3BtZW50LWhvc3QtdG8tdXNlLXRoZS15b2N0by1wcm9qZWN0Jz5TZXR0aW5nIFVwIHRoZSBEZXZlbG9wbWVudCBIb3N0IHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yIGluZm9ybWF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICBvbiBob3cgdG8gZ2V0IGEgYnVpbGQgaG9zdCByZWFkeSB0aGF0IGlzIGVpdGhlciBhIG5hdGl2ZQotICAgICAgICAgICAgICAgICAgICAgICAgTGludXggbWFjaGluZSBvciBhIG1hY2hpbmUgdGhhdCB1c2VzIENST1BTLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DbG9uZSB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBSZXBvc2l0b3J5OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBoYXZlIGEgbG9jYWwgY29weSBvZiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk5hdmlnYXRlIHRvIFlvdXIgU291cmNlIERpcmVjdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVHlwaWNhbGx5LCB5b3Ugc2V0IHVwIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgaW5zaWRlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiBhIGxvY2FsIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeSkuCi0gICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY2xvbmluZy10aGUtcG9reS1yZXBvc2l0b3J5Jz5DbG9uaW5nIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IFJlcG9zaXRvcnk8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBwb3NzaWJseSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjaGVja2luZy1vdXQtYnktYnJhbmNoLWluLXBva3knPkNoZWNraW5nIE91dCBieSBCcmFuY2ggaW4gUG9reTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY2hlY2tvdXQtb3V0LWJ5LXRhZy1pbi1wb2t5Jz5DaGVja2luZyBPdXQgYnkgVGFnIGluIFBva3k8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zIGFsbCBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY2xvbmUgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgYW5kIGNoZWNrIG91dCB0aGUgYXBwcm9wcmlhdGUgYnJhbmNoIGZvciB5b3VyIHdvcmsuCisgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCAvaG9tZS88cmVwbGFjZWFibGU+eW91PC9yZXBsYWNlYWJsZT4vcG9reQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXRlcm1pbmUgdGhlIEJTUCBMYXllciBZb3UgV2FudDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3Qgc3VwcG9ydHMgbWFueSBCU1BzLCB3aGljaCBhcmUgbWFpbnRhaW5lZCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgdGhlaXIgb3duIGxheWVycyBvciBpbiBsYXllcnMgZGVzaWduZWQgdG8gY29udGFpbiBzZXZlcmFsCi0gICAgICAgICAgICAgICAgICAgICAgICBCU1BzLgotICAgICAgICAgICAgICAgICAgICAgICAgVG8gZ2V0IGFuIGlkZWEgb2YgbWFjaGluZSBzdXBwb3J0IHRocm91Z2ggQlNQIGxheWVycywgeW91IGNhbgotICAgICAgICAgICAgICAgICAgICAgICAgbG9vayBhdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19SRUxFQVNFX0RMX1VSTDsvbWFjaGluZXMnPmluZGV4IG9mIG1hY2hpbmVzPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgcmVsZWFzZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3B0aW9uYWxseSBDbG9uZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gQlNQIExheWVyOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIGhhcmR3YXJlIGlzIGJhc2VkIG9uIGN1cnJlbnQgSW50ZWwgQ1BVcyBhbmQgZGV2aWNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gbGV2ZXJhZ2UgdGhpcyBCU1AgbGF5ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgZGV0YWlscyBvbiB0aGUgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBCU1AgbGF5ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlIGxheWVyJ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL21ldGEtaW50ZWwvdHJlZS9SRUFETUUnPjxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaWxlLgotICAgICAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk5hdmlnYXRlIHRvIFlvdXIgU291cmNlIERpcmVjdG9yeTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBpY2FsbHksIHlvdSBzZXQgdXAgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zaWRlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNsb25lIHRoZSBMYXllcjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2xvbmUgdGhlIExheWVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL21ldGEtaW50ZWwuZ2l0CiAgICAgIENsb25pbmcgaW50byAnbWV0YS1pbnRlbCcuLi4KLSAgICAgcmVtb3RlOiBDb3VudGluZyBvYmplY3RzOiAxNDIyNCwgZG9uZS4KLSAgICAgcmVtb3RlOiBDb21wcmVzc2luZyBvYmplY3RzOiAxMDAlICg0NTkxLzQ1OTEpLCBkb25lLgotICAgICByZW1vdGU6IFRvdGFsIDE0MjI0IChkZWx0YSA4MjQ1KSwgcmV1c2VkIDEzOTg1IChkZWx0YSA4MDA2KQotICAgICBSZWNlaXZpbmcgb2JqZWN0czogMTAwJSAoMTQyMjQvMTQyMjQpLCA0LjI5IE1pQiB8IDIuOTAgTWlCL3MsIGRvbmUuCi0gICAgIFJlc29sdmluZyBkZWx0YXM6IDEwMCUgKDgyNDUvODI0NSksIGRvbmUuCi0gICAgIENoZWNraW5nIGNvbm5lY3Rpdml0eS4uLiBkb25lLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNoZWNrIE91dCB0aGUgUHJvcGVyIEJyYW5jaDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYnJhbmNoIHlvdSBjaGVjayBvdXQgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gbXVzdCBtYXRjaCB0aGUgc2FtZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2ggeW91IGFyZSB1c2luZyBmb3IgdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiAmRElTVFJPX05BTUVfTk9fQ0FQOyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBnaXQgY2hlY2tvdXQgPHJlcGxhY2VhYmxlPmJyYW5jaF9uYW1lPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSBvbiBob3cgdG8gZGlzY292ZXIgYnJhbmNoIG5hbWVzIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja291dCBvbiBhIGJyYW5jaCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY2hlY2tpbmctb3V0LWJ5LWJyYW5jaC1pbi1wb2t5Jz5DaGVja2luZyBPdXQgQnkgQnJhbmNoIGluIFBva3k8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3B0aW9uYWxseSBTZXQgVXAgYW4gQWx0ZXJuYXRpdmUgQlNQIExheWVyOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIGhhcmR3YXJlIGNhbiBiZSBtb3JlIGNsb3NlbHkgbGV2ZXJhZ2VkIHRvIGFuCi0gICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZyBCU1Agbm90IHdpdGhpbiB0aGUgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgQlNQIGxheWVyLCB5b3UgY2FuIGNsb25lIHRoYXQgQlNQIGxheWVyLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIHByb2Nlc3MgaXMgaWRlbnRpY2FsIHRvIHRoZSBwcm9jZXNzIHVzZWQgZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBsYXllciBleGNlcHQgZm9yIHRoZSBsYXllcidzCi0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkZXRlcm1pbmUgdGhhdCB5b3VyIGhhcmR3YXJlIG1vc3QKLSAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlbHkgbWF0Y2hlcyB0aGUgPGZpbGVuYW1lPm1ldGEtbWlubm93PC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICBjbG9uZSB0aGF0IGxheWVyOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9tZXRhLW1pbm5vdwotICAgICBDbG9uaW5nIGludG8gJ21ldGEtbWlubm93Jy4uLgotICAgICByZW1vdGU6IENvdW50aW5nIG9iamVjdHM6IDQ1NiwgZG9uZS4KLSAgICAgcmVtb3RlOiBDb21wcmVzc2luZyBvYmplY3RzOiAxMDAlICgyODMvMjgzKSwgZG9uZS4KLSAgICAgcmVtb3RlOiBUb3RhbCA0NTYgKGRlbHRhIDE2MyksIHJldXNlZCAzODQgKGRlbHRhIDkxKQotICAgICBSZWNlaXZpbmcgb2JqZWN0czogMTAwJSAoNDU2LzQ1NiksIDk2Ljc0IEtpQiB8IDAgYnl0ZXMvcywgZG9uZS4KLSAgICAgUmVzb2x2aW5nIGRlbHRhczogMTAwJSAoMTYzLzE2MyksIGRvbmUuCisgICAgIHJlbW90ZTogQ291bnRpbmcgb2JqZWN0czogMTU1ODUsIGRvbmUuCisgICAgIHJlbW90ZTogQ29tcHJlc3Npbmcgb2JqZWN0czogMTAwJSAoNTA1Ni81MDU2KSwgZG9uZS4KKyAgICAgcmVtb3RlOiBUb3RhbCAxNTU4NSAoZGVsdGEgOTEyMyksIHJldXNlZCAxNTMyOSAoZGVsdGEgODg2NykKKyAgICAgUmVjZWl2aW5nIG9iamVjdHM6IDEwMCUgKDE1NTg1LzE1NTg1KSwgNC41MSBNaUIgfCAzLjE5IE1pQi9zLCBkb25lLgorICAgICBSZXNvbHZpbmcgZGVsdGFzOiAxMDAlICg5MTIzLzkxMjMpLCBkb25lLgogICAgICBDaGVja2luZyBjb25uZWN0aXZpdHkuLi4gZG9uZS4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW5pdGlhbGl6ZSB0aGUgQnVpbGQgRW52aXJvbm1lbnQ6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFdoaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgU291cmNlIERpcmVjdG9yeSAoaS5lLgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiksIHJ1biB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IHRvIGRlZmluZSB0aGUgT3BlbkVtYmVkZGVkCi0gICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBlbnZpcm9ubWVudCBvbiB5b3VyIGJ1aWxkIGhvc3QuCisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2hlY2sgT3V0IHRoZSBQcm9wZXIgQnJhbmNoOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYnJhbmNoIHlvdSBjaGVjayBvdXQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IG11c3QgbWF0Y2ggdGhlIHNhbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaCB5b3UgYXJlIHVzaW5nIGZvciB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlCisgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiAmRElTVFJPX05BTUVfTk9fQ0FQOyk6CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc291cmNlICZPRV9JTklUX0ZJTEU7CisgICAgICQgY2QgbWV0YS1pbnRlbAorICAgICAkIGdpdCBjaGVja291dCAtYiAmRElTVFJPX05BTUVfTk9fQ0FQOyByZW1vdGVzL29yaWdpbi8mRElTVFJPX05BTUVfTk9fQ0FQOworICAgICBCcmFuY2ggJkRJU1RST19OQU1FX05PX0NBUDsgc2V0IHVwIHRvIHRyYWNrIHJlbW90ZSBicmFuY2ggJkRJU1RST19OQU1FX05PX0NBUDsgZnJvbSBvcmlnaW4uCisgICAgIFN3aXRjaGVkIHRvIGEgbmV3IGJyYW5jaCAnJkRJU1RST19OQU1FX05PX0NBUDsnCiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBbW9uZyBvdGhlciB0aGluZ3MsIHRoZSBzY3JpcHQgY3JlYXRlcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sCi0gICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyA8ZmlsZW5hbWU+YnVpbGQ8L2ZpbGVuYW1lPiBpbiB0aGlzIGNhc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBpcyBsb2NhdGVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgdGhlIHNjcmlwdCBydW5zLCB5b3VyIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzIHNldCB0byB0aGUgPGZpbGVuYW1lPmJ1aWxkPC9maWxlbmFtZT4gZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG8gc2VlIHRoZSBhdmFpbGFibGUgYnJhbmNoIG5hbWVzIGluIGEgY2xvbmVkIHJlcG9zaXRvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlIHRoZSA8ZmlsZW5hbWU+Z2l0IGJyYW5jaCAtYWw8L2ZpbGVuYW1lPiBjb21tYW5kLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY2hlY2tpbmctb3V0LWJ5LWJyYW5jaC1pbi1wb2t5Jz5DaGVja2luZyBPdXQgQnkgQnJhbmNoIGluIFBva3k8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcHRpb25hbGx5IFNldCBVcCBhbiBBbHRlcm5hdGl2ZSBCU1AgTGF5ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJZiB5b3VyIGhhcmR3YXJlIGNhbiBiZSBtb3JlIGNsb3NlbHkgbGV2ZXJhZ2VkIHRvIGFuCisgICAgICAgICAgICAgICAgZXhpc3RpbmcgQlNQIG5vdCB3aXRoaW4gdGhlIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBCU1AgbGF5ZXIsIHlvdSBjYW4gY2xvbmUgdGhhdCBCU1AgbGF5ZXIuPC9wYXJhPgogCi0gICAgICAgIDxzZWN0aW9uIGlkPSJic3AtZmlsZWxheW91dCI+Ci0gICAgICAgICAgICA8dGl0bGU+RXhhbXBsZSBGaWxlc3lzdGVtIExheW91dDwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIERlZmluaW5nIGEgY29tbW9uIEJTUCBkaXJlY3Rvcnkgc3RydWN0dXJlIGFsbG93cyBlbmQtdXNlcnMgdG8gdW5kZXJzdGFuZCBhbmQKLSAgICAgICAgICAgICAgICBiZWNvbWUgZmFtaWxpYXIgd2l0aCB0aGF0IHN0cnVjdHVyZS4KLSAgICAgICAgICAgICAgICBBIGNvbW1vbiBmb3JtYXQgYWxzbyBlbmNvdXJhZ2VzIHN0YW5kYXJkaXphdGlvbiBvZiBzb2Z0d2FyZSBzdXBwb3J0IG9mIGhhcmR3YXJlLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgcHJvcG9zZWQgZm9ybSBkb2VzIGhhdmUgZWxlbWVudHMgdGhhdCBhcmUgc3BlY2lmaWMgdG8gdGhlCi0gICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KLSAgICAgICAgICAgICAgICBJdCBpcyBpbnRlbmRlZCB0aGF0IHRoaXMgaW5mb3JtYXRpb24gY2FuIGJlCi0gICAgICAgICAgICAgICAgdXNlZCBieSBvdGhlciBidWlsZCBzeXN0ZW1zIGJlc2lkZXMgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KLSAgICAgICAgICAgICAgICBhbmQgdGhhdCBpdCB3aWxsIGJlIHNpbXBsZQotICAgICAgICAgICAgICAgIHRvIGV4dHJhY3QgaW5mb3JtYXRpb24gYW5kIGNvbnZlcnQgaXQgdG8gb3RoZXIgZm9ybWF0cyBpZiByZXF1aXJlZC4KLSAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSwgdGhyb3VnaCBpdHMgc3RhbmRhcmQgbGF5ZXJzIG1lY2hhbmlzbSwgY2FuIGRpcmVjdGx5Ci0gICAgICAgICAgICAgICAgYWNjZXB0IHRoZSBmb3JtYXQgZGVzY3JpYmVkIGFzIGEgbGF5ZXIuCi0gICAgICAgICAgICAgICAgVGhlIEJTUCBjYXB0dXJlcyBhbGwKLSAgICAgICAgICAgICAgICB0aGUgaGFyZHdhcmUtc3BlY2lmaWMgZGV0YWlscyBpbiBvbmUgcGxhY2UgaW4gYSBzdGFuZGFyZCBmb3JtYXQsIHdoaWNoIGlzCi0gICAgICAgICAgICAgICAgdXNlZnVsIGZvciBhbnkgcGVyc29uIHdpc2hpbmcgdG8gdXNlIHRoZSBoYXJkd2FyZSBwbGF0Zm9ybSByZWdhcmRsZXNzIG9mCi0gICAgICAgICAgICAgICAgdGhlIGJ1aWxkIHN5c3RlbSB0aGV5IGFyZSB1c2luZy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIEJTUCBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGluY2x1ZGUgYSBidWlsZCBzeXN0ZW0gb3Igb3RoZXIgdG9vbHMgLQotICAgICAgICAgICAgICAgIGl0IGlzIGNvbmNlcm5lZCB3aXRoIHRoZSBoYXJkd2FyZS1zcGVjaWZpYyBjb21wb25lbnRzIG9ubHkuCi0gICAgICAgICAgICAgICAgQXQgdGhlIGVuZC1kaXN0cmlidXRpb24gcG9pbnQsIHlvdSBjYW4gc2hpcCB0aGUgQlNQIGNvbWJpbmVkIHdpdGggYSBidWlsZCBzeXN0ZW0KLSAgICAgICAgICAgICAgICBhbmQgb3RoZXIgdG9vbHMuCi0gICAgICAgICAgICAgICAgSG93ZXZlciwgaXQgaXMgaW1wb3J0YW50IHRvIG1haW50YWluIHRoZSBkaXN0aW5jdGlvbiB0aGF0IHRoZXNlCi0gICAgICAgICAgICAgICAgYXJlIHNlcGFyYXRlIGNvbXBvbmVudHMgdGhhdCBoYXBwZW4gdG8gYmUgY29tYmluZWQgaW4gY2VydGFpbiBlbmQgcHJvZHVjdHMuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEJlZm9yZSBsb29raW5nIGF0IHRoZSBjb21tb24gZm9ybSBmb3IgdGhlIGZpbGUgc3RydWN0dXJlIGluc2lkZSBhIEJTUCBMYXllciwKLSAgICAgICAgICAgICAgICB5b3Ugc2hvdWxkIGJlIGF3YXJlIHRoYXQgc29tZSByZXF1aXJlbWVudHMgZG8gZXhpc3QgaW4gb3JkZXIgZm9yIGEgQlNQIHRvCi0gICAgICAgICAgICAgICAgYmUgY29uc2lkZXJlZCBjb21wbGlhbnQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICBGb3IgdGhhdCBsaXN0IG9mIHJlcXVpcmVtZW50cywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWxlYXNlZC1ic3AtcmVxdWlyZW1lbnRzJz5SZWxlYXNlZCBCU1AgUmVxdWlyZW1lbnRzPC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBCZWxvdyBpcyB0aGUgY29tbW9uIGZvcm0gZm9yIHRoZSBmaWxlIHN0cnVjdHVyZSBpbnNpZGUgYSBCU1AgTGF5ZXIuCi0gICAgICAgICAgICAgICAgV2hpbGUgeW91IGNhbiB1c2UgdGhpcyBiYXNpYyBmb3JtIGZvciB0aGUgc3RhbmRhcmQsIHJlYWxpemUgdGhhdCB0aGUgYWN0dWFsIHN0cnVjdHVyZXMKLSAgICAgICAgICAgICAgICBmb3Igc3BlY2lmaWMgQlNQcyBjb3VsZCBkaWZmZXIuCi0KKyAgICAgICAgICAgICAgICA8cGFyYT5UaGUgcHJvY2VzcyBpcyBpZGVudGljYWwgdG8gdGhlIHByb2Nlc3MgdXNlZCBmb3IgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBsYXllciBleGNlcHQgZm9yIHRoZSBsYXllcidzCisgICAgICAgICAgICAgICAgbmFtZS4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGRldGVybWluZSB0aGF0IHlvdXIgaGFyZHdhcmUgbW9zdAorICAgICAgICAgICAgICAgIGNsb3NlbHkgbWF0Y2hlcyB0aGUgPGZpbGVuYW1lPm1ldGEtcmFzcGJlcnJ5cGk8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICBjbG9uZSB0aGF0IGxheWVyOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX25hbWU8L3JlcGxhY2VhYmxlPi8KLSAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX25hbWU8L3JlcGxhY2VhYmxlPi88cmVwbGFjZWFibGU+YnNwX2xpY2Vuc2VfZmlsZTwvcmVwbGFjZWFibGU+Ci0gICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT4vUkVBRE1FCi0gICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT4vUkVBRE1FLnNvdXJjZXMKLSAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX25hbWU8L3JlcGxhY2VhYmxlPi9iaW5hcnkvPHJlcGxhY2VhYmxlPmJvb3RhYmxlX2ltYWdlczwvcmVwbGFjZWFibGU+Ci0gICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT4vY29uZi9sYXllci5jb25mCi0gICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT4vY29uZi9tYWNoaW5lLyouY29uZgotICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+L3JlY2lwZXMtYnNwLyoKLSAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX25hbWU8L3JlcGxhY2VhYmxlPi9yZWNpcGVzLWNvcmUvKgotICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+L3JlY2lwZXMtZ3JhcGhpY3MvKgotICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzxyZXBsYWNlYWJsZT5rZXJuZWxfcmV2PC9yZXBsYWNlYWJsZT4uYmJhcHBlbmQKKyAgICAgJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbWV0YS1yYXNwYmVycnlwaQorICAgICBDbG9uaW5nIGludG8gJ21ldGEtcmFzcGJlcnJ5cGknLi4uCisgICAgIHJlbW90ZTogQ291bnRpbmcgb2JqZWN0czogNDc0MywgZG9uZS4KKyAgICAgcmVtb3RlOiBDb21wcmVzc2luZyBvYmplY3RzOiAxMDAlICgyMTg1LzIxODUpLCBkb25lLgorICAgICByZW1vdGU6IFRvdGFsIDQ3NDMgKGRlbHRhIDI0NDcpLCByZXVzZWQgNDQ5NiAoZGVsdGEgMjI1OCkKKyAgICAgUmVjZWl2aW5nIG9iamVjdHM6IDEwMCUgKDQ3NDMvNDc0MyksIDEuMTggTWlCIHwgMCBieXRlcy9zLCBkb25lLgorICAgICBSZXNvbHZpbmcgZGVsdGFzOiAxMDAlICgyNDQ3LzI0NDcpLCBkb25lLgorICAgICBDaGVja2luZyBjb25uZWN0aXZpdHkuLi4gZG9uZS4KICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEJlbG93IGlzIGFuIGV4YW1wbGUgb2YgdGhlIFJhc3BiZXJyeSBQaSBCU1A6Ci0KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW5pdGlhbGl6ZSB0aGUgQnVpbGQgRW52aXJvbm1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBXaGlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIFNvdXJjZSBEaXJlY3RvcnkgKGkuZS4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KSwgcnVuIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCB0byBkZWZpbmUgdGhlIE9wZW5FbWJlZGRlZAorICAgICAgICAgICAgICAgIGJ1aWxkIGVudmlyb25tZW50IG9uIHlvdXIgYnVpbGQgaG9zdC4KICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc291cmNlICZPRV9JTklUX0ZJTEU7CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEFtb25nIG90aGVyIHRoaW5ncywgdGhlIHNjcmlwdCBjcmVhdGVzIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgPGZpbGVuYW1lPmJ1aWxkPC9maWxlbmFtZT4gaW4gdGhpcyBjYXNlCisgICAgICAgICAgICAgICAgYW5kIGlzIGxvY2F0ZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgIEFmdGVyIHRoZSBzY3JpcHQgcnVucywgeW91ciBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgaXMgc2V0IHRvIHRoZSA8ZmlsZW5hbWU+YnVpbGQ8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0iYnNwLWZpbGVsYXlvdXQiPgorICAgIDx0aXRsZT5FeGFtcGxlIEZpbGVzeXN0ZW0gTGF5b3V0PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBEZWZpbmluZyBhIGNvbW1vbiBCU1AgZGlyZWN0b3J5IHN0cnVjdHVyZSBhbGxvd3MKKyAgICAgICAgZW5kLXVzZXJzIHRvIHVuZGVyc3RhbmQgYW5kIGJlY29tZSBmYW1pbGlhciB3aXRoCisgICAgICAgIHRoYXQgc3RhbmRhcmQuCisgICAgICAgIEEgY29tbW9uIGZvcm1hdCBhbHNvIGVuY291cmFnZXMgc3RhbmRhcmRpemF0aW9uCisgICAgICAgIG9mIHNvZnR3YXJlIHN1cHBvcnQgZm9yIGhhcmR3YXJlLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgcHJvcG9zZWQgZm9ybSBkZXNjcmliZWQgaW4gdGhpcyBzZWN0aW9uIGRvZXMKKyAgICAgICAgaGF2ZSBlbGVtZW50cyB0aGF0IGFyZSBzcGVjaWZpYyB0byB0aGUgT3BlbkVtYmVkZGVkCisgICAgICAgIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgSXQgaXMgaW50ZW5kZWQgdGhhdCBkZXZlbG9wZXJzIGNhbiB1c2UgdGhpcyBzdHJ1Y3R1cmUKKyAgICAgICAgd2l0aCBvdGhlciBidWlsZCBzeXN0ZW1zIGJlc2lkZXMgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICBzeXN0ZW0uCisgICAgICAgIEl0IGlzIGFsc28gaW50ZW5kZWQgdGhhdCBpdCB3aWxsIGJlIGJlIHNpbXBsZSB0byBleHRyYWN0CisgICAgICAgIGluZm9ybWF0aW9uIGFuZCBjb252ZXJ0IGl0IHRvIG90aGVyIGZvcm1hdHMgaWYgcmVxdWlyZWQuCisgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLCB0aHJvdWdoIGl0cyBzdGFuZGFyZAorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3RoZS15b2N0by1wcm9qZWN0LWxheWVyLW1vZGVsJz5sYXllcnMgbWVjaGFuaXNtPC91bGluaz4sCisgICAgICAgIGNhbiBkaXJlY3RseSBhY2NlcHQgdGhlIGZvcm1hdCBkZXNjcmliZWQgYXMgYSBsYXllci4KKyAgICAgICAgVGhlIEJTUCBsYXllciBjYXB0dXJlcyBhbGwgdGhlIGhhcmR3YXJlLXNwZWNpZmljIGRldGFpbHMKKyAgICAgICAgaW4gb25lIHBsYWNlIHVzaW5nIGEgc3RhbmRhcmQgZm9ybWF0LCB3aGljaCBpcyB1c2VmdWwKKyAgICAgICAgZm9yIGFueSBwZXJzb24gd2lzaGluZyB0byB1c2UgdGhlIGhhcmR3YXJlIHBsYXRmb3JtCisgICAgICAgIHJlZ2FyZGxlc3Mgb2YgdGhlIGJ1aWxkIHN5c3RlbSB0aGV5IGFyZSB1c2luZy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIEJTUCBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGluY2x1ZGUgYSBidWlsZCBzeXN0ZW0KKyAgICAgICAgb3Igb3RoZXIgdG9vbHMgLSB0aGUgc3BlY2lmaWNhdGlvbiBpcyBjb25jZXJuZWQgd2l0aAorICAgICAgICB0aGUgaGFyZHdhcmUtc3BlY2lmaWMgY29tcG9uZW50cyBvbmx5LgorICAgICAgICBBdCB0aGUgZW5kLWRpc3RyaWJ1dGlvbiBwb2ludCwgeW91IGNhbiBzaGlwIHRoZSBCU1AKKyAgICAgICAgbGF5ZXIgY29tYmluZWQgd2l0aCBhIGJ1aWxkIHN5c3RlbSBhbmQgb3RoZXIgdG9vbHMuCisgICAgICAgIFJlYWxpemUgdGhhdCBpdCBpcyBpbXBvcnRhbnQgdG8gbWFpbnRhaW4gdGhlIGRpc3RpbmN0aW9uCisgICAgICAgIHRoYXQgdGhlIEJTUCBsYXllciwgYSBidWlsZCBzeXN0ZW0sIGFuZCB0b29scyBhcmUKKyAgICAgICAgc2VwYXJhdGUgY29tcG9uZW50cyB0aGF0IGNvdWxkIHRvIGJlIGNvbWJpbmVkIGluCisgICAgICAgIGNlcnRhaW4gZW5kIHByb2R1Y3RzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBCZWZvcmUgbG9va2luZyBhdCB0aGUgY29tbW9uIGZvcm0gZm9yIHRoZSBmaWxlIHN0cnVjdHVyZQorICAgICAgICBpbnNpZGUgYSBCU1AgTGF5ZXIsIHlvdSBzaG91bGQgYmUgYXdhcmUgdGhhdCBzb21lCisgICAgICAgIHJlcXVpcmVtZW50cyBkbyBleGlzdCBpbiBvcmRlciBmb3IgYSBCU1AgbGF5ZXIgdG8KKyAgICAgICAgYmUgY29uc2lkZXJlZCBjb21wbGlhbnQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgRm9yIHRoYXQgbGlzdCBvZiByZXF1aXJlbWVudHMsIHNlZSB0aGUKKyAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlbGVhc2VkLWJzcC1yZXF1aXJlbWVudHMnPlJlbGVhc2VkIEJTUCBSZXF1aXJlbWVudHM8L2xpbms+IgorICAgICAgICBzZWN0aW9uLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBCZWxvdyBpcyB0aGUgY29tbW9uIGZvcm0gZm9yIHRoZSBmaWxlIHN0cnVjdHVyZQorICAgICAgICBpbnNpZGUgYSBCU1AgTGF5ZXIuCisgICAgICAgIFdoaWxlIHRoaXMgYmFzaWMgZm9ybSByZXByZXNlbnRzIHRoZSBzdGFuZGFyZCwKKyAgICAgICAgcmVhbGl6ZSB0aGF0IHRoZSBhY3R1YWwgZmlsZSBzdHJ1Y3R1cmVzIGZvciBzcGVjaWZpYworICAgICAgICBCU1BzIGNvdWxkIGRpZmZlci4KKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT4vCisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi88cmVwbGFjZWFibGU+YnNwX2xpY2Vuc2VfZmlsZTwvcmVwbGFjZWFibGU+CisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi9SRUFETUUKKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L1JFQURNRS5zb3VyY2VzCisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi9iaW5hcnkvPHJlcGxhY2VhYmxlPmJvb3RhYmxlX2ltYWdlczwvcmVwbGFjZWFibGU+CisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi9jb25mL2xheWVyLmNvbmYKKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L2NvbmYvbWFjaGluZS8qLmNvbmYKKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L3JlY2lwZXMtYnNwLyoKKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L3JlY2lwZXMtY29yZS8qCisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi9yZWNpcGVzLWdyYXBoaWNzLyoKKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzxyZXBsYWNlYWJsZT5rZXJuZWxfcmV2PC9yZXBsYWNlYWJsZT4uYmJhcHBlbmQKKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBCZWxvdyBpcyBhbiBleGFtcGxlIG9mIHRoZSBSYXNwYmVycnkgUGkgQlNQCisgICAgICAgIGxheWVyIHRoYXQgaXMgYXZhaWxhYmxlIGZyb20gdGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+U291cmNlIFJlc3Bvc2l0b3JpZXM8L3VsaW5rPjoKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBtZXRhLXJhc3BiZXJyeXBpL0NPUFlJTkcuTUlUCi0gICAgIG1ldGEtcmFzcGJlcnJ5cGkvUkVBRE1FCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvUkVBRE1FLm1kCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvY2xhc3NlcwotICAgICBtZXRhLXJhc3BiZXJyeXBpL2NsYXNzZXMvbGludXgtcmFzcGJlcnJ5cGktYmFzZS5iYmNsYXNzCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvY2xhc3Nlcy9zZGNhcmRfaW1hZ2UtcnBpLmJiY2xhc3MKICAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mLwogICAgICBtZXRhLXJhc3BiZXJyeXBpL2NvbmYvbGF5ZXIuY29uZgogICAgICBtZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS8KKyAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGktY20uY29uZgorICAgICBtZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9yYXNwYmVycnlwaS1jbTMuY29uZgogICAgICBtZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9yYXNwYmVycnlwaS5jb25mCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL3Jhc3BiZXJyeXBpMC13aWZpLmNvbmYKICAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGkwLmNvbmYKICAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGkyLmNvbmYKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGkzLTY0LmNvbmYKICAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGkzLmNvbmYKICAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvaW5jbHVkZQogICAgICBtZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9pbmNsdWRlL3JwaS1iYXNlLmluYwogICAgICBtZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9pbmNsdWRlL3JwaS1kZWZhdWx0LXByb3ZpZGVycy5pbmMKICAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvaW5jbHVkZS9ycGktZGVmYXVsdC1zZXR0aW5ncy5pbmMKICAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvaW5jbHVkZS9ycGktZGVmYXVsdC12ZXJzaW9ucy5pbmMKLSAgICAgbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvaW5jbHVkZS9ycGktdHVuZS1hcm0xMTc2anpmLXMuaW5jCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm0xMTc2anpmLXMuaW5jCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvZG9jcworICAgICBtZXRhLXJhc3BiZXJyeXBpL2RvY3MvTWFrZWZpbGUKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9kb2NzL2NvbmYucHkKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9kb2NzL2NvbnRyaWJ1dGluZy5tZAorICAgICBtZXRhLXJhc3BiZXJyeXBpL2RvY3MvZXh0cmEtYXBwcy5tZAorICAgICBtZXRhLXJhc3BiZXJyeXBpL2RvY3MvZXh0cmEtYnVpbGQtY29uZmlnLm1kCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvZG9jcy9pbmRleC5yc3QKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9kb2NzL2xheWVyLWNvbnRlbnRzLm1kCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvZG9jcy9yZWFkbWUubWQKICAgICAgbWV0YS1yYXNwYmVycnlwaS9maWxlcwogICAgICBtZXRhLXJhc3BiZXJyeXBpL2ZpbGVzL2N1c3RvbS1saWNlbnNlcwogICAgICBtZXRhLXJhc3BiZXJyeXBpL2ZpbGVzL2N1c3RvbS1saWNlbnNlcy9Ccm9hZGNvbQpAQCAtMzc4LDEyICs0MzUsMjYgQEAKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ib290ZmlsZXMvcnBpLWNvbmZpZ19naXQuYmIKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9jb21tb24KICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9jb21tb24vZmlybXdhcmUuaW5jCi0gICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvZm9ybWZhY3Rvcl8wMC5iYmFwcGVuZAotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL2Zvcm1mYWN0b3IvcmFzcGJlcnJ5cGkvbWFjaGNvbmZpZwotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3JwaS1ta2ltYWdlX2dpdC5iYgotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3JwaS1ta2ltYWdlL0xpY2Vuc2UKLSAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ycGktbWtpbWFnZS9vcGVuLWZpbGVzLXJlbGF0aXZlLXRvLXNjcmlwdC5wYXRjaAotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtcnBpX2dpdC5iYgorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL2Zvcm1mYWN0b3IKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9mb3JtZmFjdG9yL2Zvcm1mYWN0b3IKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9mb3JtZmFjdG9yL2Zvcm1mYWN0b3IvcmFzcGJlcnJ5cGkKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9mb3JtZmFjdG9yL2Zvcm1mYWN0b3IvcmFzcGJlcnJ5cGkvbWFjaGNvbmZpZworICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL2Zvcm1mYWN0b3IvZm9ybWZhY3Rvcl8wLjAuYmJhcHBlbmQKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ycGktdS1ib290LXNyYworICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3JwaS11LWJvb3Qtc3JjL2ZpbGVzCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvcnBpLXUtYm9vdC1zcmMvZmlsZXMvYm9vdC5jbWQuaW4KKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9ycGktdS1ib290LXNyYy9ycGktdS1ib290LXNjci5iYgorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3UtYm9vdAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LyoucGF0Y2gKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290XyUuYmJhcHBlbmQKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvbm5lY3Rpdml0eQorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NQorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LyoucGF0Y2gKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L0JDTTQzNDMwQTEuaGNkCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NWJyY200MzQzOC5zZXJ2aWNlCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV8lLmJiYXBwZW5kCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL2ltYWdlcwogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS9pbWFnZXMvcnBpLWJhc2ljLWltYWdlLmJiCkBAIC0zOTMsMzcgKzQ2NCw0MSBAQAogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1ycGktdGVzdC5iYgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS9wc3BsYXNoCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL3BzcGxhc2gvZmlsZXMKLSAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9wc3BsYXNoX2dpdC5iYmFwcGVuZAogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS9wc3BsYXNoL2ZpbGVzL3BzcGxhc2gtcmFzcGJlcnJ5cGktaW1nLmgKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9wc3BsYXNoX2dpdC5iYmFwcGVuZAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS91ZGV2CisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb3JlL3VkZXYvdWRldi1ydWxlcy1ycGkKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvdWRldi91ZGV2LXJ1bGVzLXJwaS85OS1jb20ucnVsZXMKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvdWRldi91ZGV2LXJ1bGVzLXJwaS5iYgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL2JjbTI4MzUKLSAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL2JjbTI4MzUvYmNtMjgzNV8xLjQ2LmJiCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9iY20yODM1L2JjbTI4MzVfMS41Mi5iYgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcGktYmxhc3RlcgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcGktYmxhc3Rlci9maWxlcwotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcGktYmxhc3Rlci8qLnBhdGNoCi0gICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9waS1ibGFzdGVyL3BpLWJsYXN0ZXIuaW5jCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9waS1ibGFzdGVyL2ZpbGVzLyoucGF0Y2gKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3BpLWJsYXN0ZXIvcGktYmxhc3Rlcl9naXQuYmIKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ydGltdQogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ydGltdS8qLnBhdGNoCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJ0aW11X2dpdC5iYgotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZW5zZS1oYXRfMi4xLjAuYmIKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2Vuc2UtaGF0XzIuMi4wLmJiCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcnBpLWdwaW8KICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9ycGktZ3Bpby8qLnBhdGNoCi0gICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcnBpLWdwaW9fMC42LjEuYmIKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9ycGktZ3Bpb18wLjYuMy5iYgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3JwaW8KICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9ycGlvLyoucGF0Y2gKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9ycGlvXzAuMTAuMC5iYgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvd2lyaW5nUGkKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3dpcmluZ1BpL2ZpbGVzCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy93aXJpbmdQaS9maWxlcy8qLnBhdGNoCi0gICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy93aXJpbmdQaS93aXJpbmdwaQotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvd2lyaW5nUGkvd2lyaW5ncGkvKi5wYXRjaAogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvd2lyaW5nUGkvd2lyaW5ncGlfZ2l0LmJiCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcwogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mbwogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9lZ2xpbmZvLWZiXyUuYmJhcHBlbmQKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL2VnbGluZm8vZWdsaW5mby14MTFfJS5iYmFwcGVuZAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYQorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXyUuYmJhcHBlbmQKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8lLmJiYXBwZW5kCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZAogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLyoucGF0Y2gKQEAgLTQzNywxOTQgKzUxMiwyMDQgQEAKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3ZjLWdyYXBoaWNzL3ZjLWdyYXBoaWNzLmluYwogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZAogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fJS5iYmFwcGVuZAotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3Mvd2VzdG9uCi0gICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy93ZXN0b24vd2VzdG9uXyUuYmJhcHBlbmQKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlcgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL3JwaQogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvcnBpL3hvcmcuY29uZgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvcnBpL3hvcmcuY29uZi5kCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9ycGkveG9yZy5jb25mLmQvMTAtZXZkZXYuY29uZgotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvcnBpL3hvcmcuY29uZi5kLzk5LXBpdGZ0LmNvbmYKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL3JwaS94b3JnLmNvbmYuZC85OC1waXRmdC5jb25mCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9ycGkveG9yZy5jb25mLmQvOTktY2FsaWJyYXRpb24uY29uZgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWdfMC4xLmJiYXBwZW5kCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXyUuYmJhcHBlbmQKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbAogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlCi0gICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmUKLSAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZS9MSUNFTlNFLmJyb2FkY29tX2JyY204MDIxMQotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlL2JyY21mbWFjNDM0MzAtc2Rpby5iaW4KLSAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZS9icmNtZm1hYzQzNDMwLXNkaW8udHh0Ci0gICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfZ2l0LmJiYXBwZW5kCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvZmlsZXMKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9maWxlcy9icmNtZm1hYzQzNDMwLXNkaW8uYmluCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvZmlsZXMvYnJjZm1hYzQzNDMwLXNkaW8udHh0CisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfJS5iYmFwcGVuZAogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4Ci0gICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGktMy4xNAotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpLTMuMTQvKi5wYXRjaAotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpLTMuMTgKLSAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaS0zLjE4LyoucGF0Y2gKLSAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaS00LjEKLSAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaS00LjEvKi5wYXRjaAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpLWRldi5iYgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpLmluYwotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpCi0gICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGkvZGVmY29uZmlnCi0gICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGlfMy4xNC5iYgotICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpXzMuMTguYmIKLSAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaV80LjEuYmIKLSAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaV80LjQuYmIKLSAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC5pbmMKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaV80LjE0LmJiCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGlfNC45LmJiCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lcgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teAogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC8qLnBhdGNoCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XyUuYmJhcHBlbmQKICAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8lLmJiYXBwZW5kCisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTIKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMi8qLnBhdGNoCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllcgogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyCiAgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXIvKi5wYXRjaAogICAgICBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyX2dpdC5iYgotICAgICBtZXRhLXJhc3BiZXJyeXBpL3NjcmlwdHMKLSAgICAgbWV0YS1yYXNwYmVycnlwaS9zY3JpcHRzL2xpYgotICAgICBtZXRhLXJhc3BiZXJyeXBpL3NjcmlwdHMvbGliL2ltYWdlCi0gICAgIG1ldGEtcmFzcGJlcnJ5cGkvc2NyaXB0cy9saWIvaW1hZ2UvY2FubmVkLXdrcwotICAgICBtZXRhLXJhc3BiZXJyeXBpL3NjcmlwdHMvbGliL2ltYWdlL2Nhbm5lZC13a3Mvc2RpbWFnZS1yYXNwYmVycnlwaS53a3MKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+CisgICAgIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQKKyAgICAgbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYmFwcGVuZAorICAgICBtZXRhLXJhc3BiZXJyeXBpL3dpYworICAgICBtZXRhLXJhc3BiZXJyeXBpL3dpYy9zZGltYWdlLXJhc3BiZXJyeXBpLndrcworICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgPC9wYXJhPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHNlY3Rpb25zIGRlc2NyaWJlIGVhY2ggcGFydCBvZiB0aGUgcHJvcG9zZWQgQlNQIGZvcm1hdC4KLSAgICAgICAgICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIGZvbGxvd2luZyBzZWN0aW9ucyBkZXNjcmliZSBlYWNoIHBhcnQgb2YgdGhlIHByb3Bvc2VkCisgICAgICAgIEJTUCBmb3JtYXQuCisgICAgPC9wYXJhPgogCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0iYnNwLWZpbGVsYXlvdXQtbGljZW5zZSI+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPkxpY2Vuc2UgRmlsZXM8L3RpdGxlPgorICAgIDxzZWN0aW9uIGlkPSJic3AtZmlsZWxheW91dC1saWNlbnNlIj4KKyAgICAgICAgPHRpdGxlPkxpY2Vuc2UgRmlsZXM8L3RpdGxlPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGVzZSBmaWxlcyBpbiB0aGUgQlNQIExheWVyIGF0OgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT4vPHJlcGxhY2VhYmxlPmJzcF9saWNlbnNlX2ZpbGU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGVzZSBmaWxlcyBpbiB0aGUgQlNQIExheWVyIGF0OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT4vPHJlcGxhY2VhYmxlPmJzcF9saWNlbnNlX2ZpbGU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlc2Ugb3B0aW9uYWwgZmlsZXMgc2F0aXNmeSBsaWNlbnNpbmcgcmVxdWlyZW1lbnRzIGZvciB0aGUgQlNQLgotICAgICAgICAgICAgICAgICAgICBUaGUgdHlwZSBvciB0eXBlcyBvZiBmaWxlcyBoZXJlIGNhbiB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgbGljZW5zaW5nIHJlcXVpcmVtZW50cy4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGluIHRoZSBSYXNwYmVycnkgUGkgQlNQIGFsbCBsaWNlbnNpbmcgcmVxdWlyZW1lbnRzIGFyZSBoYW5kbGVkIHdpdGggdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DT1BZSU5HLk1JVDwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZXNlIG9wdGlvbmFsIGZpbGVzIHNhdGlzZnkgbGljZW5zaW5nIHJlcXVpcmVtZW50cworICAgICAgICAgICAgZm9yIHRoZSBCU1AuCisgICAgICAgICAgICBUaGUgdHlwZSBvciB0eXBlcyBvZiBmaWxlcyBoZXJlIGNhbiB2YXJ5IGRlcGVuZGluZworICAgICAgICAgICAgb24gdGhlIGxpY2Vuc2luZyByZXF1aXJlbWVudHMuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaW4gdGhlIFJhc3BiZXJyeSBQaSBCU1AgYWxsIGxpY2Vuc2luZworICAgICAgICAgICAgcmVxdWlyZW1lbnRzIGFyZSBoYW5kbGVkIHdpdGggdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Q09QWUlORy5NSVQ8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgTGljZW5zaW5nIGZpbGVzIGNhbiBiZSBNSVQsIEJTRCwgR1BMdiosIGFuZCBzbyBmb3J0aC4KLSAgICAgICAgICAgICAgICAgICAgVGhlc2UgZmlsZXMgYXJlIHJlY29tbWVuZGVkIGZvciB0aGUgQlNQIGJ1dCBhcmUgb3B0aW9uYWwgYW5kIHRvdGFsbHkgdXAgdG8gdGhlIEJTUCBkZXZlbG9wZXIuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIExpY2Vuc2luZyBmaWxlcyBjYW4gYmUgTUlULCBCU0QsIEdQTHYqLCBhbmQgc28gZm9ydGguCisgICAgICAgICAgICBUaGVzZSBmaWxlcyBhcmUgcmVjb21tZW5kZWQgZm9yIHRoZSBCU1AgYnV0IGFyZQorICAgICAgICAgICAgb3B0aW9uYWwgYW5kIHRvdGFsbHkgdXAgdG8gdGhlIEJTUCBkZXZlbG9wZXIuCisgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIG1haW50YWluIGxpY2Vuc2UKKyAgICAgICAgICAgIGNvbXBsaWFuY2UsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtYWludGFpbmluZy1vcGVuLXNvdXJjZS1saWNlbnNlLWNvbXBsaWFuY2UtZHVyaW5nLXlvdXItcHJvZHVjdHMtbGlmZWN5Y2xlJz5NYWludGFpbmluZyBPcGVuIFNvdXJjZSBMaWNlbnNlIENvbXBsaWFuY2UgRHVyaW5nIFlvdXIgUHJvZHVjdCdzIExpZmVjeWNsZTwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcworICAgICAgICAgICAgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgogCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0iYnNwLWZpbGVsYXlvdXQtcmVhZG1lIj4KLSAgICAgICAgICAgICAgICA8dGl0bGU+UkVBRE1FIEZpbGU8L3RpdGxlPgorICAgIDxzZWN0aW9uIGlkPSJic3AtZmlsZWxheW91dC1yZWFkbWUiPgorICAgICAgICA8dGl0bGU+UkVBRE1FIEZpbGU8L3RpdGxlPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGlzIGZpbGUgaW4gdGhlIEJTUCBMYXllciBhdDoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+L1JFQURNRQotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGlzIGZpbGUgaW4gdGhlIEJTUCBMYXllciBhdDoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L1JFQURNRQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIHByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIGhvdyB0byBib290IHRoZSBsaXZlIGltYWdlcyB0aGF0IGFyZSBvcHRpb25hbGx5Ci0gICAgICAgICAgICAgICAgICAgIGluY2x1ZGVkIGluIHRoZSA8ZmlsZW5hbWU+YmluYXJ5LzwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlIGFsc28gcHJvdmlkZXMgc3BlY2lhbCBpbmZvcm1hdGlvbiBuZWVkZWQgZm9yCi0gICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIHRoZSBpbWFnZS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBmaWxlIHByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIGhvdyB0byBib290IHRoZSBsaXZlCisgICAgICAgICAgICBpbWFnZXMgdGhhdCBhcmUgb3B0aW9uYWxseSBpbmNsdWRlZCBpbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5iaW5hcnkvPC9maWxlbmFtZT4gZGlyZWN0b3J5LgorICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlIGFsc28gcHJvdmlkZXMKKyAgICAgICAgICAgIGluZm9ybWF0aW9uIG5lZWRlZCBmb3IgYnVpbGRpbmcgdGhlIGltYWdlLgorICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQXQgYSBtaW5pbXVtLCB0aGUgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+IGZpbGUgbXVzdAotICAgICAgICAgICAgICAgICAgICBjb250YWluIGEgbGlzdCBvZiBkZXBlbmRlbmNpZXMsIHN1Y2ggYXMgdGhlIG5hbWVzIG9mCi0gICAgICAgICAgICAgICAgICAgIGFueSBvdGhlciBsYXllcnMgb24gd2hpY2ggdGhlIEJTUCBkZXBlbmRzIGFuZCB0aGUgbmFtZSBvZgotICAgICAgICAgICAgICAgICAgICB0aGUgQlNQIG1haW50YWluZXIgd2l0aCBoaXMgb3IgaGVyIGNvbnRhY3QgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEF0IGEgbWluaW11bSwgdGhlIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlIG11c3QKKyAgICAgICAgICAgIGNvbnRhaW4gYSBsaXN0IG9mIGRlcGVuZGVuY2llcywgc3VjaCBhcyB0aGUgbmFtZXMgb2YKKyAgICAgICAgICAgIGFueSBvdGhlciBsYXllcnMgb24gd2hpY2ggdGhlIEJTUCBkZXBlbmRzIGFuZCB0aGUgbmFtZSBvZgorICAgICAgICAgICAgdGhlIEJTUCBtYWludGFpbmVyIHdpdGggaGlzIG9yIGhlciBjb250YWN0IGluZm9ybWF0aW9uLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgogCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0iYnNwLWZpbGVsYXlvdXQtcmVhZG1lLXNvdXJjZXMiPgotICAgICAgICAgICAgICAgIDx0aXRsZT5SRUFETUUuc291cmNlcyBGaWxlPC90aXRsZT4KKyAgICA8c2VjdGlvbiBpZD0iYnNwLWZpbGVsYXlvdXQtcmVhZG1lLXNvdXJjZXMiPgorICAgICAgICA8dGl0bGU+UkVBRE1FLnNvdXJjZXMgRmlsZTwvdGl0bGU+CiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoaXMgZmlsZSBpbiB0aGUgQlNQIExheWVyIGF0OgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT4vUkVBRE1FLnNvdXJjZXMKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhpcyBmaWxlIGluIHRoZSBCU1AgTGF5ZXIgYXQ6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi9SRUFETUUuc291cmNlcworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIHByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIHdoZXJlIHRvIGxvY2F0ZSB0aGUgQlNQCi0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSBmaWxlcyB1c2VkIHRvIGJ1aWxkIHRoZSBpbWFnZXMgKGlmIGFueSkgdGhhdCByZXNpZGUgaW4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT4vYmluYXJ5PC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIEltYWdlcyBpbiB0aGUgPGZpbGVuYW1lPmJpbmFyeTwvZmlsZW5hbWU+IHdvdWxkIGJlIGltYWdlcwotICAgICAgICAgICAgICAgICAgICByZWxlYXNlZCB3aXRoIHRoZSBCU1AuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgPGZpbGVuYW1lPlJFQURNRS5zb3VyY2VzPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZmlsZSBhbHNvIGhlbHBzIHlvdSBmaW5kIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICB1c2VkIHRvIGdlbmVyYXRlIHRoZSBpbWFnZXMgdGhhdCBzaGlwIHdpdGggdGhlIEJTUC4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgQlNQJ3MgPGZpbGVuYW1lPmJpbmFyeTwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpcwotICAgICAgICAgICAgICAgICAgICAgICAgbWlzc2luZyBvciB0aGUgZGlyZWN0b3J5IGhhcyBubyBpbWFnZXMsIGFuIGV4aXN0aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UkVBRE1FLnNvdXJjZXM8L2ZpbGVuYW1lPiBmaWxlIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICBtZWFuaW5nbGVzcy4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIGZpbGUgcHJvdmlkZXMgaW5mb3JtYXRpb24gb24gd2hlcmUgdG8gbG9jYXRlIHRoZSBCU1AKKyAgICAgICAgICAgIHNvdXJjZSBmaWxlcyB1c2VkIHRvIGJ1aWxkIHRoZSBpbWFnZXMgKGlmIGFueSkgdGhhdAorICAgICAgICAgICAgcmVzaWRlIGluCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L2JpbmFyeTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgSW1hZ2VzIGluIHRoZSA8ZmlsZW5hbWU+YmluYXJ5PC9maWxlbmFtZT4gd291bGQgYmUgaW1hZ2VzCisgICAgICAgICAgICByZWxlYXNlZCB3aXRoIHRoZSBCU1AuCisgICAgICAgICAgICBUaGUgaW5mb3JtYXRpb24gaW4gdGhlIDxmaWxlbmFtZT5SRUFETUUuc291cmNlczwvZmlsZW5hbWU+CisgICAgICAgICAgICBmaWxlIGFsc28gaGVscHMgeW91IGZpbmQgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNtZXRhZGF0YSc+TWV0YWRhdGE8L3VsaW5rPgorICAgICAgICAgICAgdXNlZCB0byBnZW5lcmF0ZSB0aGUgaW1hZ2VzIHRoYXQgc2hpcCB3aXRoIHRoZSBCU1AuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBJZiB0aGUgQlNQJ3MgPGZpbGVuYW1lPmJpbmFyeTwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpcworICAgICAgICAgICAgICAgIG1pc3Npbmcgb3IgdGhlIGRpcmVjdG9yeSBoYXMgbm8gaW1hZ2VzLCBhbiBleGlzdGluZworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SRUFETUUuc291cmNlczwvZmlsZW5hbWU+IGZpbGUgaXMKKyAgICAgICAgICAgICAgICBtZWFuaW5nbGVzcyBhbmQgdXN1YWxseSBkb2VzIG5vdCBleGlzdC4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KIAotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9ImJzcC1maWxlbGF5b3V0LWJpbmFyeSI+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPlByZS1idWlsdCBVc2VyIEJpbmFyaWVzPC90aXRsZT4KKyAgICA8c2VjdGlvbiBpZD0iYnNwLWZpbGVsYXlvdXQtYmluYXJ5Ij4KKyAgICAgICAgPHRpdGxlPlByZS1idWlsdCBVc2VyIEJpbmFyaWVzPC90aXRsZT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlc2UgZmlsZXMgaW4gdGhlIEJTUCBMYXllciBhdDoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+L2JpbmFyeS88cmVwbGFjZWFibGU+Ym9vdGFibGVfaW1hZ2VzPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlc2UgZmlsZXMgaW4gdGhlIEJTUCBMYXllciBhdDoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L2JpbmFyeS88cmVwbGFjZWFibGU+Ym9vdGFibGVfaW1hZ2VzPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uYWwgYXJlYSBjb250YWlucyB1c2VmdWwgcHJlLWJ1aWx0IGtlcm5lbHMgYW5kCi0gICAgICAgICAgICAgICAgICAgIHVzZXItc3BhY2UgZmlsZXN5c3RlbSBpbWFnZXMgcmVsZWFzZWQgd2l0aCB0aGUgQlNQIHRoYXQgYXJlCi0gICAgICAgICAgICAgICAgICAgIGFwcHJvcHJpYXRlIHRvIHRoZSB0YXJnZXQgc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSB0eXBpY2FsbHkgY29udGFpbnMgZ3JhcGhpY2FsIChlLmcuIFNhdG8pIGFuZAotICAgICAgICAgICAgICAgICAgICBtaW5pbWFsIGxpdmUgaW1hZ2VzIHdoZW4gdGhlIEJTUCB0YXJiYWxsIGhhcyBiZWVuIGNyZWF0ZWQgYW5kCi0gICAgICAgICAgICAgICAgICAgIG1hZGUgYXZhaWxhYmxlIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0PC91bGluaz4gd2Vic2l0ZS4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlc2Uga2VybmVscyBhbmQgaW1hZ2VzIHRvIGdldCBhIHN5c3RlbSBydW5uaW5nCi0gICAgICAgICAgICAgICAgICAgIGFuZCBxdWlja2x5IGdldCBzdGFydGVkIG9uIGRldmVsb3BtZW50IHRhc2tzLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIG9wdGlvbmFsIGFyZWEgY29udGFpbnMgdXNlZnVsIHByZS1idWlsdCBrZXJuZWxzCisgICAgICAgICAgICBhbmQgdXNlci1zcGFjZSBmaWxlc3lzdGVtIGltYWdlcyByZWxlYXNlZCB3aXRoIHRoZQorICAgICAgICAgICAgQlNQIHRoYXQgYXJlIGFwcHJvcHJpYXRlIHRvIHRoZSB0YXJnZXQgc3lzdGVtLgorICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgdHlwaWNhbGx5IGNvbnRhaW5zIGdyYXBoaWNhbCAoZS5nLiBTYXRvKQorICAgICAgICAgICAgYW5kIG1pbmltYWwgbGl2ZSBpbWFnZXMgd2hlbiB0aGUgQlNQIHRhcmJhbGwgaGFzIGJlZW4KKyAgICAgICAgICAgIGNyZWF0ZWQgYW5kIG1hZGUgYXZhaWxhYmxlIGluIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdDwvdWxpbms+CisgICAgICAgICAgICB3ZWJzaXRlLgorICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlc2Uga2VybmVscyBhbmQgaW1hZ2VzIHRvIGdldCBhIHN5c3RlbQorICAgICAgICAgICAgcnVubmluZyBhbmQgcXVpY2tseSBnZXQgc3RhcnRlZCBvbiBkZXZlbG9wbWVudCB0YXNrcy4KKyAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBleGFjdCB0eXBlcyBvZiBiaW5hcmllcyBwcmVzZW50IGFyZSBoaWdobHkKLSAgICAgICAgICAgICAgICAgICAgaGFyZHdhcmUtZGVwZW5kZW50LgotICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+IGZpbGUgc2hvdWxkIGJlIHByZXNlbnQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIEJTUCBMYXllciBhbmQgaXQgd2lsbCBleHBsYWluIGhvdyB0byB1c2UgdGhlIGltYWdlcyB3aXRoIHRoZQotICAgICAgICAgICAgICAgICAgICB0YXJnZXQgaGFyZHdhcmUuCi0gICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgdGhlIDxmaWxlbmFtZT5SRUFETUUuc291cmNlczwvZmlsZW5hbWU+IGZpbGUKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIHByZXNlbnQgdG8gbG9jYXRlIHRoZSBzb3VyY2VzIHVzZWQgdG8gYnVpbGQgdGhlCi0gICAgICAgICAgICAgICAgICAgIGltYWdlcyBhbmQgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiB0aGUgTWV0YWRhdGEuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBleGFjdCB0eXBlcyBvZiBiaW5hcmllcyBwcmVzZW50IGFyZSBoaWdobHkKKyAgICAgICAgICAgIGhhcmR3YXJlLWRlcGVuZGVudC4KKyAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnNwLWZpbGVsYXlvdXQtcmVhZG1lJz48ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBmaWxlIHNob3VsZCBiZSBwcmVzZW50IGluIHRoZSBCU1AgTGF5ZXIgYW5kIGl0CisgICAgICAgICAgICBleHBsYWlucyBob3cgdG8gdXNlIHRoZSBpbWFnZXMgd2l0aCB0aGUgdGFyZ2V0IGhhcmR3YXJlLgorICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JzcC1maWxlbGF5b3V0LXJlYWRtZS1zb3VyY2VzJz48ZmlsZW5hbWU+UkVBRE1FLnNvdXJjZXM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIGZpbGUgc2hvdWxkIGJlIHByZXNlbnQgdG8gbG9jYXRlIHRoZSBzb3VyY2VzIHVzZWQgdG8KKyAgICAgICAgICAgIGJ1aWxkIHRoZSBpbWFnZXMgYW5kIHByb3ZpZGUgaW5mb3JtYXRpb24gb24gdGhlCisgICAgICAgICAgICBNZXRhZGF0YS4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KIAotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2JzcC1maWxlbGF5b3V0LWxheWVyJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+TGF5ZXIgQ29uZmlndXJhdGlvbiBGaWxlPC90aXRsZT4KKyAgICA8c2VjdGlvbiBpZD0nYnNwLWZpbGVsYXlvdXQtbGF5ZXInPgorICAgICAgICA8dGl0bGU+TGF5ZXIgQ29uZmlndXJhdGlvbiBGaWxlPC90aXRsZT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhpcyBmaWxlIGluIHRoZSBCU1AgTGF5ZXIgYXQ6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX25hbWU8L3JlcGxhY2VhYmxlPi9jb25mL2xheWVyLmNvbmYKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhpcyBmaWxlIGluIHRoZSBCU1AgTGF5ZXIgYXQ6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi9jb25mL2xheWVyLmNvbmYKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Y29uZi9sYXllci5jb25mPC9maWxlbmFtZT4gZmlsZSBpZGVudGlmaWVzIHRoZSBmaWxlIHN0cnVjdHVyZSBhcyBhCi0gICAgICAgICAgICAgICAgICAgIGxheWVyLCBpZGVudGlmaWVzIHRoZQotICAgICAgICAgICAgICAgICAgICBjb250ZW50cyBvZiB0aGUgbGF5ZXIsIGFuZCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBob3cgdGhlIGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgIHN5c3RlbSBzaG91bGQgdXNlIGl0LgotICAgICAgICAgICAgICAgICAgICBHZW5lcmFsbHksIGEgc3RhbmRhcmQgYm9pbGVycGxhdGUgZmlsZSBzdWNoIGFzIHRoZSBmb2xsb3dpbmcgd29ya3MuCi0gICAgICAgICAgICAgICAgICAgIEluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgeW91IHdvdWxkIHJlcGxhY2UgIjxyZXBsYWNlYWJsZT5ic3A8L3JlcGxhY2VhYmxlPiIgYW5kCi0gICAgICAgICAgICAgICAgICAgICI8cmVwbGFjZWFibGU+X2JzcDwvcmVwbGFjZWFibGU+IiB3aXRoIHRoZSBhY3R1YWwgbmFtZQotICAgICAgICAgICAgICAgICAgICBvZiB0aGUgQlNQIChpLmUuIDxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+IGZyb20gdGhlIGV4YW1wbGUgdGVtcGxhdGUpLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmNvbmYvbGF5ZXIuY29uZjwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgIGlkZW50aWZpZXMgdGhlIGZpbGUgc3RydWN0dXJlIGFzIGEgbGF5ZXIsCisgICAgICAgICAgICBpZGVudGlmaWVzIHRoZSBjb250ZW50cyBvZiB0aGUgbGF5ZXIsIGFuZAorICAgICAgICAgICAgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgaG93IHRoZSBidWlsZCBzeXN0ZW0gc2hvdWxkCisgICAgICAgICAgICB1c2UgaXQuCisgICAgICAgICAgICBHZW5lcmFsbHksIGEgc3RhbmRhcmQgYm9pbGVycGxhdGUgZmlsZSBzdWNoIGFzIHRoZQorICAgICAgICAgICAgZm9sbG93aW5nIHdvcmtzLgorICAgICAgICAgICAgSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCB5b3Ugd291bGQgcmVwbGFjZQorICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmJzcDwvcmVwbGFjZWFibGU+IHdpdGggdGhlIGFjdHVhbAorICAgICAgICAgICAgbmFtZSBvZiB0aGUgQlNQIChpLmUuCisgICAgICAgICAgICA8cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+IGZyb20gdGhlIGV4YW1wbGUKKyAgICAgICAgICAgIHRlbXBsYXRlKS4KKyAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgIyBXZSBoYXZlIGEgY29uZiBhbmQgY2xhc3NlcyBkaXJlY3RvcnksIGFkZCB0byBCQlBBVEgKICAgICAgQkJQQVRIIC49ICI6JHtMQVlFUkRJUn0iCiAKQEAgLTYzNywxMyArNzIyLDE0IEBACiAgICAgIEJCRklMRV9QUklPUklUWV88cmVwbGFjZWFibGU+YnNwPC9yZXBsYWNlYWJsZT4gPSAiNiIKIAogICAgICBMQVlFUkRFUEVORFNfPHJlcGxhY2VhYmxlPmJzcDwvcmVwbGFjZWFibGU+ID0gImludGVsIgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVG8gaWxsdXN0cmF0ZSB0aGUgc3RyaW5nIHN1YnN0aXR1dGlvbnMsIGhlcmUgYXJlIHRoZSBjb3JyZXNwb25kaW5nIHN0YXRlbWVudHMKLSAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgUmFzcGJlcnJ5IFBpIDxmaWxlbmFtZT5jb25mL2xheWVyLmNvbmY8L2ZpbGVuYW1lPiBmaWxlOgotICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyBpbGx1c3RyYXRlIHRoZSBzdHJpbmcgc3Vic3RpdHV0aW9ucywgaGVyZSBhcmUKKyAgICAgICAgICAgIHRoZSBjb3JyZXNwb25kaW5nIHN0YXRlbWVudHMgZnJvbSB0aGUgUmFzcGJlcnJ5CisgICAgICAgICAgICBQaSA8ZmlsZW5hbWU+Y29uZi9sYXllci5jb25mPC9maWxlbmFtZT4gZmlsZToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgIyBXZSBoYXZlIGEgY29uZiBhbmQgY2xhc3NlcyBkaXJlY3RvcnksIGFwcGVuZCB0byBCQlBBVEgKICAgICAgQkJQQVRIIC49ICI6JHtMQVlFUkRJUn0iCiAKQEAgLTY1NywxMjY1ICs3NDMsMTUyNyBAQAogCiAgICAgICMgQWRkaXRpb25hbCBsaWNlbnNlIGRpcmVjdG9yaWVzLgogICAgICBMSUNFTlNFX1BBVEggKz0gIiR7TEFZRVJESVJ9L2ZpbGVzL2N1c3RvbS1saWNlbnNlcyIKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAuCisgICAgICAgICAgLgorICAgICAgICAgIC4KKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgZmlsZSBzaW1wbHkgbWFrZXMKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgYXdhcmUgb2YgdGhlIHJlY2lwZXMgYW5kIGNvbmZpZ3VyYXRpb24gZGlyZWN0b3JpZXMuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBmaWxlIG11c3QgZXhpc3Qgc28gdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjYW4gcmVjb2duaXplIHRoZSBCU1AuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgZmlsZSBzaW1wbHkgbWFrZXMKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2JpdGJha2UtdGVybSc+Qml0QmFrZTwvdWxpbms+CisgICAgICAgICAgICBhd2FyZSBvZiB0aGUgcmVjaXBlcyBhbmQgY29uZmlndXJhdGlvbiBkaXJlY3Rvcmllcy4KKyAgICAgICAgICAgIFRoZSBmaWxlIG11c3QgZXhpc3Qgc28gdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgY2FuIHJlY29nbml6ZSB0aGUgQlNQLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgogCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0iYnNwLWZpbGVsYXlvdXQtbWFjaGluZSI+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPkhhcmR3YXJlIENvbmZpZ3VyYXRpb24gT3B0aW9uczwvdGl0bGU+CisgICAgPHNlY3Rpb24gaWQ9ImJzcC1maWxlbGF5b3V0LW1hY2hpbmUiPgorICAgICAgICA8dGl0bGU+SGFyZHdhcmUgQ29uZmlndXJhdGlvbiBPcHRpb25zPC90aXRsZT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlc2UgZmlsZXMgaW4gdGhlIEJTUCBMYXllciBhdDoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+L2NvbmYvbWFjaGluZS8qLmNvbmYKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlc2UgZmlsZXMgaW4gdGhlIEJTUCBMYXllciBhdDoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L2NvbmYvbWFjaGluZS8qLmNvbmYKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBtYWNoaW5lIGZpbGVzIGJpbmQgdG9nZXRoZXIgYWxsIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgZWxzZXdoZXJlCi0gICAgICAgICAgICAgICAgICAgIGluIHRoZSBCU1AgaW50byBhIGZvcm1hdCB0aGF0IHRoZSBidWlsZCBzeXN0ZW0gY2FuIHVuZGVyc3RhbmQuCi0gICAgICAgICAgICAgICAgICAgIElmIHRoZSBCU1Agc3VwcG9ydHMgbXVsdGlwbGUgbWFjaGluZXMsIG11bHRpcGxlIG1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlcwotICAgICAgICAgICAgICAgICAgICBjYW4gYmUgcHJlc2VudC4KLSAgICAgICAgICAgICAgICAgICAgVGhlc2UgZmlsZW5hbWVzIGNvcnJlc3BvbmQgdG8gdGhlIHZhbHVlcyB0byB3aGljaCB1c2VycyBoYXZlIHNldCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPiB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIG1hY2hpbmUgZmlsZXMgYmluZCB0b2dldGhlciBhbGwgdGhlIGluZm9ybWF0aW9uCisgICAgICAgICAgICBjb250YWluZWQgZWxzZXdoZXJlIGluIHRoZSBCU1AgaW50byBhIGZvcm1hdCB0aGF0CisgICAgICAgICAgICB0aGUgYnVpbGQgc3lzdGVtIGNhbiB1bmRlcnN0YW5kLgorICAgICAgICAgICAgRWFjaCBCU1AgTGF5ZXIgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIG1hY2hpbmUgZmlsZS4KKyAgICAgICAgICAgIElmIHRoZSBCU1Agc3VwcG9ydHMgbXVsdGlwbGUgbWFjaGluZXMsIG11bHRpcGxlCisgICAgICAgICAgICBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gZmlsZXMgY2FuIGV4aXN0LgorICAgICAgICAgICAgVGhlc2UgZmlsZW5hbWVzIGNvcnJlc3BvbmQgdG8gdGhlIHZhbHVlcyB0byB3aGljaAorICAgICAgICAgICAgdXNlcnMgaGF2ZSBzZXQgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+IHZhcmlhYmxlLgorICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlc2UgZmlsZXMgZGVmaW5lIHRoaW5ncyBzdWNoIGFzIHRoZSBrZXJuZWwgcGFja2FnZSB0byB1c2UKLSAgICAgICAgICAgICAgICAgICAgKDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUkVGRVJSRURfUFJPVklERVInPjxmaWxlbmFtZT5QUkVGRVJSRURfUFJPVklERVI8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIG9mIHZpcnR1YWwva2VybmVsKSwgdGhlIGhhcmR3YXJlIGRyaXZlcnMgdG8KLSAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBpbiBkaWZmZXJlbnQgdHlwZXMgb2YgaW1hZ2VzLCBhbnkgc3BlY2lhbCBzb2Z0d2FyZSBjb21wb25lbnRzCi0gICAgICAgICAgICAgICAgICAgIHRoYXQgYXJlIG5lZWRlZCwgYW55IGJvb3Rsb2FkZXIgaW5mb3JtYXRpb24sIGFuZCBhbHNvIGFueSBzcGVjaWFsIGltYWdlCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdCByZXF1aXJlbWVudHMuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZXNlIGZpbGVzIGRlZmluZSB0aGluZ3Mgc3VjaCBhcyB0aGUga2VybmVsIHBhY2thZ2UKKyAgICAgICAgICAgIHRvIHVzZQorICAgICAgICAgICAgKDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUkVGRVJSRURfUFJPVklERVInPjxmaWxlbmFtZT5QUkVGRVJSRURfUFJPVklERVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICBvZgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWV0YWRhdGEtdmlydHVhbC1wcm92aWRlcnMnPnZpcnR1YWwva2VybmVsPC91bGluaz4pLAorICAgICAgICAgICAgdGhlIGhhcmR3YXJlIGRyaXZlcnMgdG8gaW5jbHVkZSBpbiBkaWZmZXJlbnQgdHlwZXMKKyAgICAgICAgICAgIG9mIGltYWdlcywgYW55IHNwZWNpYWwgc29mdHdhcmUgY29tcG9uZW50cyB0aGF0IGFyZQorICAgICAgICAgICAgbmVlZGVkLCBhbnkgYm9vdGxvYWRlciBpbmZvcm1hdGlvbiwgYW5kIGFsc28gYW55CisgICAgICAgICAgICBzcGVjaWFsIGltYWdlIGZvcm1hdCByZXF1aXJlbWVudHMuCisgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBFYWNoIEJTUCBMYXllciByZXF1aXJlcyBhdCBsZWFzdCBvbmUgbWFjaGluZSBmaWxlLgotICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB5b3UgY2FuIHN1cHBseSBtb3JlIHRoYW4gb25lIGZpbGUuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgY29uZmlndXJhdGlvbiBmaWxlIGNvdWxkIGFsc28gaW5jbHVkZSBhIGhhcmR3YXJlCisgICAgICAgICAgICAidHVuaW5nIiBmaWxlIHRoYXQgaXMgY29tbW9ubHkgdXNlZCB0byBkZWZpbmUgdGhlCisgICAgICAgICAgICBwYWNrYWdlIGFyY2hpdGVjdHVyZSBhbmQgc3BlY2lmeSBvcHRpbWl6YXRpb24gZmxhZ3MsCisgICAgICAgICAgICB3aGljaCBhcmUgY2FyZWZ1bGx5IGNob3NlbiB0byBnaXZlIGJlc3QgcGVyZm9ybWFuY2UKKyAgICAgICAgICAgIG9uIGEgZ2l2ZW4gcHJvY2Vzc29yLgorICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBjb25maWd1cmF0aW9uIGZpbGUgY291bGQgYWxzbyBpbmNsdWRlIGEgaGFyZHdhcmUgInR1bmluZyIKLSAgICAgICAgICAgICAgICAgICAgZmlsZSB0aGF0IGlzIGNvbW1vbmx5IHVzZWQgdG8gZGVmaW5lIHRoZSBwYWNrYWdlIGFyY2hpdGVjdHVyZQotICAgICAgICAgICAgICAgICAgICBhbmQgc3BlY2lmeSBvcHRpbWl6YXRpb24gZmxhZ3MsIHdoaWNoIGFyZSBjYXJlZnVsbHkgY2hvc2VuCi0gICAgICAgICAgICAgICAgICAgIHRvIGdpdmUgYmVzdCBwZXJmb3JtYW5jZSBvbiBhIGdpdmVuIHByb2Nlc3Nvci4KLSAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVHVuaW5nIGZpbGVzIGFyZSBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGRpcmVjdG9yeSB3aXRoaW4gdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgbWFueSA8ZmlsZW5hbWU+dHVuZS0qPC9maWxlbmFtZT4gZmlsZXMKKyAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT50dW5lLWFybTExMzZqZi1zLmluYzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgPGZpbGVuYW1lPnR1bi0xNTg2LW5scC5pbmM8L2ZpbGVuYW1lPiwgYW5kIHNvIGZvcnRoKQorICAgICAgICAgICAgcmVzaWRlIGluIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZTwvZmlsZW5hbWU+CisgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUdW5pbmcgZmlsZXMgYXJlIGZvdW5kIGluIHRoZSA8ZmlsZW5hbWU+bWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSB3aXRoaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSA8ZmlsZW5hbWU+aWEzMi1iYXNlLmluYzwvZmlsZW5hbWU+IGZpbGUgcmVzaWRlcyBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGU8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRvIHVzZSBhbiBpbmNsdWRlIGZpbGUsIHlvdSBzaW1wbHkgaW5jbHVkZSB0aGVtIGluIHRoZQorICAgICAgICAgICAgbWFjaGluZSBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIFJhc3BiZXJyeSBQaSBCU1AKKyAgICAgICAgICAgIDxmaWxlbmFtZT5yYXNwYmVycnlwaTMuY29uZjwvZmlsZW5hbWU+IGNvbnRhaW5zIHRoZQorICAgICAgICAgICAgZm9sbG93aW5nIHN0YXRlbWVudDoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS9ycGktYmFzZS5pbmMKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUbyB1c2UgYW4gaW5jbHVkZSBmaWxlLCB5b3Ugc2ltcGx5IGluY2x1ZGUgdGhlbSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSBjb25maWd1cmF0aW9uIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgUmFzcGJlcnJ5IFBpIEJTUAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmFzcGJlcnJ5cGkzLmNvbmY8L2ZpbGVuYW1lPiBjb250YWlucyB0aGUKLSAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIHN0YXRlbWVudDoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBpbmNsdWRlIGNvbmYvbWFjaGluZS9yYXNwYmVycnlwaTIuY29uZgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgIDxzZWN0aW9uIGlkPSdic3AtZmlsZWxheW91dC1taXNjLXJlY2lwZXMnPgorICAgICAgICA8dGl0bGU+TWlzY2VsbGFuZW91cyBCU1AtU3BlY2lmaWMgUmVjaXBlIEZpbGVzPC90aXRsZT4KIAotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2JzcC1maWxlbGF5b3V0LW1pc2MtcmVjaXBlcyc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPk1pc2NlbGxhbmVvdXMgQlNQLVNwZWNpZmljIFJlY2lwZSBGaWxlczwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZXNlIGZpbGVzIGluIHRoZSBCU1AgTGF5ZXIgYXQ6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi9yZWNpcGVzLWJzcC8qCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlc2UgZmlsZXMgaW4gdGhlIEJTUCBMYXllciBhdDoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBtZXRhLTxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+L3JlY2lwZXMtYnNwLyoKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbmFsIGRpcmVjdG9yeSBjb250YWlucyBtaXNjZWxsYW5lb3VzIHJlY2lwZSBmaWxlcyBmb3IKLSAgICAgICAgICAgICAgICAgICAgdGhlIEJTUC4KLSAgICAgICAgICAgICAgICAgICAgTW9zdCBub3RhYmx5IHdvdWxkIGJlIHRoZSBmb3JtZmFjdG9yIGZpbGVzLgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaW4gdGhlIFJhc3BiZXJyeSBQaSBCU1AgdGhlcmUgaXMgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mb3JtZmFjdG9yXzAuMC5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGlzIGFuCi0gICAgICAgICAgICAgICAgICAgIGFwcGVuZCBmaWxlIHVzZWQgdG8gYXVnbWVudCB0aGUgcmVjaXBlIHRoYXQgc3RhcnRzIHRoZSBidWlsZC4KLSAgICAgICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIHRoZXJlIGFyZSBtYWNoaW5lLXNwZWNpZmljIHNldHRpbmdzIHVzZWQgZHVyaW5nCi0gICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZCB0aGF0IGFyZSBkZWZpbmVkIGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWFjaGNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgZnVydGhlciBkb3duIGluIHRoZQotICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgdGhlIDxmaWxlbmFtZT5tYWNoY29uZmlnPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZmlsZSBmb3IgdGhlIFJhc3BiZXJyeSBQaSBCU1A6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIG9wdGlvbmFsIGRpcmVjdG9yeSBjb250YWlucyBtaXNjZWxsYW5lb3VzIHJlY2lwZQorICAgICAgICAgICAgZmlsZXMgZm9yIHRoZSBCU1AuCisgICAgICAgICAgICBNb3N0IG5vdGFibHkgd291bGQgYmUgdGhlIGZvcm1mYWN0b3IgZmlsZXMuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaW4gdGhlIFJhc3BiZXJyeSBQaSBCU1AgdGhlcmUgaXMgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Zm9ybWZhY3Rvcl8wLjAuYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlLAorICAgICAgICAgICAgd2hpY2ggaXMgYW4gYXBwZW5kIGZpbGUgdXNlZCB0byBhdWdtZW50IHRoZSByZWNpcGUKKyAgICAgICAgICAgIHRoYXQgc3RhcnRzIHRoZSBidWlsZC4KKyAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGVyZSBhcmUgbWFjaGluZS1zcGVjaWZpYyBzZXR0aW5ncyB1c2VkCisgICAgICAgICAgICBkdXJpbmcgdGhlIGJ1aWxkIHRoYXQgYXJlIGRlZmluZWQgYnkgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWFjaGNvbmZpZzwvZmlsZW5hbWU+IGZpbGUgZnVydGhlciBkb3duIGluCisgICAgICAgICAgICB0aGUgZGlyZWN0b3J5LgorICAgICAgICAgICAgSGVyZSBpcyB0aGUgPGZpbGVuYW1lPm1hY2hjb25maWc8L2ZpbGVuYW1lPiBmaWxlIGZvcgorICAgICAgICAgICAgdGhlIFJhc3BiZXJyeSBQaSBCU1A6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIEhBVkVfVE9VQ0hTQ1JFRU49MAogICAgICBIQVZFX0tFWUJPQVJEPTEKIAogICAgICBESVNQTEFZX0NBTl9ST1RBVEU9MAogICAgICBESVNQTEFZX09SSUVOVEFUSU9OPTAKICAgICAgRElTUExBWV9EUEk9MTMzCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgICAgIDxub3RlPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBJZiBhIEJTUCBkb2VzIG5vdCBoYXZlIGEgZm9ybWZhY3RvciBlbnRyeSwgZGVmYXVsdHMgYXJlIGVzdGFibGlzaGVkIGFjY29yZGluZyB0bwotICAgICAgICAgICAgICAgICAgICB0aGUgZm9ybWZhY3RvciBjb25maWd1cmF0aW9uIGZpbGUgdGhhdCBpcyBpbnN0YWxsZWQgYnkgdGhlIG1haW4KLSAgICAgICAgICAgICAgICAgICAgZm9ybWZhY3RvciByZWNpcGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1ic3AvZm9ybWZhY3Rvci9mb3JtZmFjdG9yXzAuMC5iYjwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgotICAgICAgICAgICAgICAgIDwvcGFyYT48L25vdGU+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDxub3RlPjxwYXJhPgorICAgICAgICAgICAgSWYgYSBCU1AgZG9lcyBub3QgaGF2ZSBhIGZvcm1mYWN0b3IgZW50cnksIGRlZmF1bHRzCisgICAgICAgICAgICBhcmUgZXN0YWJsaXNoZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtZmFjdG9yCisgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUgdGhhdCBpcyBpbnN0YWxsZWQgYnkgdGhlIG1haW4KKyAgICAgICAgICAgIGZvcm1mYWN0b3IgcmVjaXBlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWJzcC9mb3JtZmFjdG9yL2Zvcm1mYWN0b3JfMC4wLmJiPC9maWxlbmFtZT4sCisgICAgICAgICAgICB3aGljaCBpcyBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgPC9wYXJhPjwvbm90ZT4KKyAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdic3AtZmlsZWxheW91dC1yZWNpcGVzLWdyYXBoaWNzJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+RGlzcGxheSBTdXBwb3J0IEZpbGVzPC90aXRsZT4KKyAgICA8c2VjdGlvbiBpZD0nYnNwLWZpbGVsYXlvdXQtcmVjaXBlcy1ncmFwaGljcyc+CisgICAgICAgIDx0aXRsZT5EaXNwbGF5IFN1cHBvcnQgRmlsZXM8L3RpdGxlPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGVzZSBmaWxlcyBpbiB0aGUgQlNQIExheWVyIGF0OgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT4vcmVjaXBlcy1ncmFwaGljcy8qCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZXNlIGZpbGVzIGluIHRoZSBCU1AgTGF5ZXIgYXQ6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi9yZWNpcGVzLWdyYXBoaWNzLyoKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uYWwgZGlyZWN0b3J5IGNvbnRhaW5zIHJlY2lwZXMgZm9yIHRoZSBCU1AgaWYgaXQgaGFzCi0gICAgICAgICAgICAgICAgICAgIHNwZWNpYWwgcmVxdWlyZW1lbnRzIGZvciBncmFwaGljcyBzdXBwb3J0LgotICAgICAgICAgICAgICAgICAgICBBbGwgZmlsZXMgdGhhdCBhcmUgbmVlZGVkIGZvciB0aGUgQlNQIHRvIHN1cHBvcnQgYSBkaXNwbGF5IGFyZQotICAgICAgICAgICAgICAgICAgICBrZXB0IGhlcmUuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgb3B0aW9uYWwgZGlyZWN0b3J5IGNvbnRhaW5zIHJlY2lwZXMgZm9yIHRoZQorICAgICAgICAgICAgQlNQIGlmIGl0IGhhcyBzcGVjaWFsIHJlcXVpcmVtZW50cyBmb3IgZ3JhcGhpY3MKKyAgICAgICAgICAgIHN1cHBvcnQuCisgICAgICAgICAgICBBbGwgZmlsZXMgdGhhdCBhcmUgbmVlZGVkIGZvciB0aGUgQlNQIHRvIHN1cHBvcnQKKyAgICAgICAgICAgIGEgZGlzcGxheSBhcmUga2VwdCBoZXJlLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgogCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nYnNwLWZpbGVsYXlvdXQta2VybmVsJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+TGludXggS2VybmVsIENvbmZpZ3VyYXRpb248L3RpdGxlPgorICAgIDxzZWN0aW9uIGlkPSdic3AtZmlsZWxheW91dC1rZXJuZWwnPgorICAgICAgICA8dGl0bGU+TGludXggS2VybmVsIENvbmZpZ3VyYXRpb248L3RpdGxlPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGVzZSBmaWxlcyBpbiB0aGUgQlNQIExheWVyIGF0OgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT4vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8qLmJiYXBwZW5kCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZXNlIGZpbGVzIGluIHRoZSBCU1AgTGF5ZXIgYXQ6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eCouYmJhcHBlbmQKKyAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L3JlY2lwZXMta2VybmVsL2xpbnV4LyouYmIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZXNlIGZpbGVzIGFwcGVuZCBtYWNoaW5lLXNwZWNpZmljIGNoYW5nZXMgdG8gdGhlIG1haW4KLSAgICAgICAgICAgICAgICAgICAga2VybmVsIHJlY2lwZSB5b3UgYXJlIHVzaW5nLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBcHBlbmQgZmlsZXMgKDxmaWxlbmFtZT4qLmJiYXBwZW5kPC9maWxlbmFtZT4pIG1vZGlmeQorICAgICAgICAgICAgdGhlIG1haW4ga2VybmVsIHJlY2lwZSBiZWluZyB1c2VkIHRvIGJ1aWxkIHRoZSBpbWFnZS4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Ki5iYjwvZmlsZW5hbWU+IGZpbGVzIHdvdWxkIGJlIGEKKyAgICAgICAgICAgIGRldmVsb3Blci1zdXBwbGllZCBrZXJuZWwgcmVjaXBlLgorICAgICAgICAgICAgVGhpcyBhcmVhIG9mIHRoZSBCU1AgaGllcmFyY2h5IGNhbiBjb250YWluIGJvdGggdGhlc2UKKyAgICAgICAgICAgIHR5cGVzIG9mIGZpbGVzLCBhbHRob3VnaCBpbiBwcmFjdGljZSwgaXQgaXMgbGlrZWx5IHRoYXQKKyAgICAgICAgICAgIHlvdSB3b3VsZCBoYXZlIG9uZSBvciB0aGUgb3RoZXIuCisgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBGb3IgeW91ciBCU1AsIHlvdSB0eXBpY2FsbHkgd2FudCB0byB1c2UgYW4gZXhpc3RpbmcgWW9jdG8KLSAgICAgICAgICAgICAgICAgICAgUHJvamVjdCBrZXJuZWwgcmVjaXBlIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgYXQgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1rZXJuZWwvbGludXg8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhcHBlbmQgbWFjaGluZS1zcGVjaWZpYyBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgcmVjaXBlCi0gICAgICAgICAgICAgICAgICAgIGJ5IHVzaW5nIGEgc2ltaWxhcmx5IG5hbWVkIGFwcGVuZCBmaWxlLCB3aGljaCBpcyBsb2NhdGVkIGluCi0gICAgICAgICAgICAgICAgICAgIHRoZSBCU1AgTGF5ZXIgZm9yIHlvdXIgdGFyZ2V0IGRldmljZSAoZS5nLiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT4vcmVjaXBlcy1rZXJuZWwvbGludXg8L2ZpbGVuYW1lPiBkaXJlY3RvcnkpLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgeW91ciBCU1AsIHlvdSB0eXBpY2FsbHkgd2FudCB0byB1c2UgYW4gZXhpc3RpbmcgWW9jdG8KKyAgICAgICAgICAgIFByb2plY3Qga2VybmVsIHJlY2lwZSBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgYXQgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1rZXJuZWwvbGludXg8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIFlvdSBjYW4gYXBwZW5kIG1hY2hpbmUtc3BlY2lmaWMgY2hhbmdlcyB0byB0aGUKKyAgICAgICAgICAgIGtlcm5lbCByZWNpcGUgYnkgdXNpbmcgYSBzaW1pbGFybHkgbmFtZWQgYXBwZW5kCisgICAgICAgICAgICBmaWxlLCB3aGljaCBpcyBsb2NhdGVkIGluIHRoZSBCU1AgTGF5ZXIgZm9yIHlvdXIKKyAgICAgICAgICAgIHRhcmdldCBkZXZpY2UgKGUuZy4gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+L3JlY2lwZXMta2VybmVsL2xpbnV4PC9maWxlbmFtZT4gZGlyZWN0b3J5KS4KKyAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFN1cHBvc2UgeW91IGFyZSB1c2luZyB0aGUgPGZpbGVuYW1lPmxpbnV4LXlvY3RvXzQuNC5iYjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIHJlY2lwZSB0byBidWlsZCB0aGUga2VybmVsLgotICAgICAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgeW91IGhhdmUgc2VsZWN0ZWQgdGhlIGtlcm5lbCBpbiB5b3VyCi0gICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi5jb25mPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZmlsZSBieSBhZGRpbmcKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSRUZFUlJFRF9QUk9WSURFUic+PGZpbGVuYW1lPlBSRUZFUlJFRF9QUk9WSURFUjwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUkVGRVJSRURfVkVSU0lPTic+PGZpbGVuYW1lPlBSRUZFUlJFRF9WRVJTSU9OPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnRzIGFzIGZvbGxvd3M6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTdXBwb3NlIHlvdSBhcmUgdXNpbmcgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG9fNC40LmJiPC9maWxlbmFtZT4gcmVjaXBlIHRvCisgICAgICAgICAgICBidWlsZCB0aGUga2VybmVsLgorICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIHlvdSBoYXZlIHNlbGVjdGVkIHRoZSBrZXJuZWwgaW4geW91cgorICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICBmaWxlIGJ5IGFkZGluZworICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSRUZFUlJFRF9QUk9WSURFUic+PGZpbGVuYW1lPlBSRUZFUlJFRF9QUk9WSURFUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSRUZFUlJFRF9WRVJTSU9OJz48ZmlsZW5hbWU+UFJFRkVSUkVEX1ZFUlNJT048L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICBzdGF0ZW1lbnRzIGFzIGZvbGxvd3M6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAibGludXgteW9jdG8iCiAgICAgIFBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI0LjQlIgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB0aGUgcHJlZmVycmVkIHByb3ZpZGVyIGlzIGFzc3VtZWQgYnkgZGVmYXVsdCwgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UFJFRkVSUkVEX1BST1ZJREVSPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudCBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+YnNwX25hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgWW91IHdvdWxkIHVzZSB0aGUgPGZpbGVuYW1lPmxpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGZpbGUgdG8gYXBwZW5kIHNwZWNpZmljIEJTUCBzZXR0aW5ncyB0byB0aGUga2VybmVsLCB0aHVzCi0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyaW5nIHRoZSBrZXJuZWwgZm9yIHlvdXIgcGFydGljdWxhciBCU1AuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgV2hlbiB0aGUgcHJlZmVycmVkIHByb3ZpZGVyIGlzIGFzc3VtZWQgYnkKKyAgICAgICAgICAgICAgICBkZWZhdWx0LCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UFJFRkVSUkVEX1BST1ZJREVSPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgZG9lcyBub3QgYXBwZWFyIGluIHRoZQorICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgWW91IHdvdWxkIHVzZSB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0b180LjQuYmJhcHBlbmQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgZmlsZSB0byBhcHBlbmQgc3BlY2lmaWMgQlNQIHNldHRpbmdzIHRvIHRoZSBrZXJuZWwsCisgICAgICAgICAgICB0aHVzIGNvbmZpZ3VyaW5nIHRoZSBrZXJuZWwgZm9yIHlvdXIgcGFydGljdWxhciBCU1AuCisgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgbW9yZSBpbmZvcm1hdGlvbiBvbiB3aGF0IHlvdXIgYXBwZW5kIGZpbGUKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGNvbnRhaW4gaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfVVJMOyNjcmVhdGluZy10aGUtYXBwZW5kLWZpbGUnPkNyZWF0aW5nIHRoZSBBcHBlbmQgRmlsZTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudAotICAgICAgICAgICAgICAgICAgICBNYW51YWwuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgotICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gd2hhdCB5b3VyIGFwcGVuZCBmaWxlCisgICAgICAgICAgICBzaG91bGQgY29udGFpbiBpbiB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsjY3JlYXRpbmctdGhlLWFwcGVuZC1maWxlJz5DcmVhdGluZyB0aGUgQXBwZW5kIEZpbGU8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50CisgICAgICAgICAgICBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KIAotICAgICAgICA8c2VjdGlvbiBpZD0nZGV2ZWxvcGluZy1hLWJvYXJkLXN1cHBvcnQtcGFja2FnZS1ic3AnPgotICAgICAgICAgICAgPHRpdGxlPkRldmVsb3BpbmcgYSBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCk8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFuIGFsdGVybmF0ZSBzY2VuYXJpbyBpcyB3aGVuIHlvdSBjcmVhdGUgeW91ciBvd24KKyAgICAgICAgICAgIGtlcm5lbCByZWNpcGUgZm9yIHRoZSBCU1AuCisgICAgICAgICAgICBBIGdvb2QgZXhhbXBsZSBvZiB0aGlzIGlzIHRoZSBSYXNwYmVycnkgUGkgQlNQLgorICAgICAgICAgICAgSWYgeW91IGV4YW1pbmUgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy1rZXJuZWwvbGludXg8L2ZpbGVuYW1lPiBkaXJlY3RvcnkKKyAgICAgICAgICAgIHlvdSBzZWUgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgbGludXgtcmFzcGJlcnJ5cGktZGV2LmJiCisgICAgIGxpbnV4LXJhc3BiZXJyeXBpLmluYworICAgICBsaW51eC1yYXNwYmVycnlwaV80LjE0LmJiCisgICAgIGxpbnV4LXJhc3BiZXJyeXBpXzQuOS5iYgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSBjb250YWlucyB0aHJlZSBrZXJuZWwgcmVjaXBlcyBhbmQgYQorICAgICAgICAgICAgY29tbW9uIGluY2x1ZGUgZmlsZS4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIHRoZSBoaWdoLWxldmVsIHByb2NlZHVyZSB5b3UgY2FuIGZvbGxvdwotICAgICAgICAgICAgICAgIHRvIGNyZWF0ZSBhIEJTUCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCdzCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndXNpbmctdGhlLXlvY3RvLXByb2plY3RzLWJzcC10b29scyc+QlNQIFRvb2xzPC9saW5rPi4KLSAgICAgICAgICAgICAgICBBbHRob3VnaCBub3QgcmVxdWlyZWQgZm9yIEJTUCBjcmVhdGlvbiwgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LCB3aGljaCBjb250YWlucwotICAgICAgICAgICAgICAgIG1hbnkgQlNQcyBzdXBwb3J0ZWQgYnkgdGhlIFlvY3RvIFByb2plY3QsIGlzIHBhcnQgb2YgdGhlCi0gICAgICAgICAgICAgICAgZXhhbXBsZS4KLSAgICAgICAgICAgIDwvcGFyYT4KKzxzZWN0aW9uIGlkPSdkZXZlbG9waW5nLWEtYm9hcmQtc3VwcG9ydC1wYWNrYWdlLWJzcCc+CisgICAgPHRpdGxlPkRldmVsb3BpbmcgYSBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCk8L3RpdGxlPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSB0aGF0IHNob3dzIGhvdyB0byBjcmVhdGUgYSBuZXcgbGF5ZXIgdXNpbmcKLSAgICAgICAgICAgICAgICB0aGUgdG9vbHMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3JlYXRpbmctYS1uZXctYnNwLWxheWVyLXVzaW5nLXRoZS15b2N0by1ic3Atc2NyaXB0Jz5DcmVhdGluZyBhIE5ldyBCU1AgTGF5ZXIgVXNpbmcgdGhlIHlvY3RvLWJzcCBTY3JpcHQ8L2xpbms+IgotICAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgICBUaGlzIHNlY3Rpb24gY29udGFpbnMgdGhlIGhpZ2gtbGV2ZWwgcHJvY2VkdXJlIHlvdSBjYW4KKyAgICAgICAgZm9sbG93IHRvIGNyZWF0ZSBhIEJTUC4KKyAgICAgICAgQWx0aG91Z2ggbm90IHJlcXVpcmVkIGZvciBCU1AgY3JlYXRpb24sIHRoZQorICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IHJlcG9zaXRvcnksIHdoaWNoCisgICAgICAgIGNvbnRhaW5zIG1hbnkgQlNQcyBzdXBwb3J0ZWQgYnkgdGhlIFlvY3RvIFByb2plY3QsCisgICAgICAgIGlzIHBhcnQgb2YgdGhlIGV4YW1wbGUuCisgICAgPC9wYXJhPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGlsbHVzdHJhdGlvbiBhbmQgbGlzdCBzdW1tYXJpemUgdGhlIEJTUAotICAgICAgICAgICAgICAgIGNyZWF0aW9uIGdlbmVyYWwgd29ya2Zsb3cuCi0gICAgICAgICAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICAgIEZvciBhbiBleGFtcGxlIHRoYXQgc2hvd3MgaG93IHRvIGNyZWF0ZSBhIG5ldworICAgICAgICBsYXllciB1c2luZyB0aGUgdG9vbHMsIHNlZSB0aGUKKyAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLWEtbmV3LWJzcC1sYXllci11c2luZy10aGUtYml0YmFrZS1sYXllcnMtc2NyaXB0Jz5DcmVhdGluZyBhIE5ldyBCU1AgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvbGluaz4iCisgICAgICAgIHNlY3Rpb24uCisgICAgPC9wYXJhPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvYnNwLWRldi1mbG93LnBuZyIgd2lkdGg9IjdpbiIgZGVwdGg9IjVpbiIgYWxpZ249ImNlbnRlciIgc2NhbGVmaXQ9IjEiIC8+Ci0gICAgICAgICAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICAgIFRoZSBmb2xsb3dpbmcgaWxsdXN0cmF0aW9uIGFuZCBsaXN0IHN1bW1hcml6ZSB0aGUgQlNQCisgICAgICAgIGNyZWF0aW9uIGdlbmVyYWwgd29ya2Zsb3cuCisgICAgPC9wYXJhPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgdXAgWW91ciBIb3N0IERldmVsb3BtZW50IFN5c3RlbSB0byBTdXBwb3J0Ci0gICAgICAgICAgICAgICAgICAgICAgICBEZXZlbG9wbWVudCBVc2luZyB0aGUgWW9jdG8gUHJvamVjdDwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjeXAtcmVzb3VyY2VzJz5TZXR0aW5nIFVwIHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBRdWljayBTdGFydCBmb3Igb3B0aW9ucyBvbiBob3cKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvIGdldCBhIGJ1aWxkIGhvc3QgcmVhZHkgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Fc3RhYmxpc2ggdGhlIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFJlcG9zaXRvcnkgb24gWW91ciBTeXN0ZW06PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIEhhdmluZyBsb2NhbCBjb3BpZXMgb2YgdGhlc2Ugc3VwcG9ydGVkIEJTUCBsYXllcnMgb24KLSAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgc3lzdGVtIGdpdmVzIHlvdSBhY2Nlc3MgdG8gbGF5ZXJzIHlvdSBtaWdodCBiZSBhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICB0byBidWlsZCBvbiBvciBtb2RpZnkgdG8gY3JlYXRlIHlvdXIgQlNQLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBnZXQgdGhlc2UgZmlsZXMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdwcmVwYXJpbmcteW91ci1idWlsZC1ob3N0LXRvLXdvcmstd2l0aC1ic3AtbGF5ZXJzJz5QcmVwYXJpbmcgWW91ciBCdWlsZCBIb3N0IHRvIFdvcmsgd2l0aCBCU1AgTGF5ZXJzPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBZb3VyIE93biBCU1AgTGF5ZXIgVXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdjcmVhdGluZy1hLW5ldy1ic3AtbGF5ZXItdXNpbmctdGhlLXlvY3RvLWJzcC1zY3JpcHQnPjxmaWxlbmFtZT55b2N0by1ic3A8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgTGF5ZXJzIGFyZSBpZGVhbCBmb3IgaXNvbGF0aW5nIGFuZCBzdG9yaW5nIHdvcmsgZm9yIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIGdpdmVuIHBpZWNlIG9mIGhhcmR3YXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgQSBsYXllciBpcyByZWFsbHkganVzdCBhIGxvY2F0aW9uIG9yIGFyZWEgaW4gd2hpY2ggeW91Ci0gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZSB0aGUgcmVjaXBlcyBhbmQgY29uZmlndXJhdGlvbnMgZm9yIHlvdXIgQlNQLgotICAgICAgICAgICAgICAgICAgICAgICAgSW4gZmFjdCwgYSBCU1AgaXMsIGluIGl0c2VsZiwgYSBzcGVjaWFsIHR5cGUgb2YgbGF5ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgc2ltcGxlc3Qgd2F5IHRvIGNyZWF0ZSBhIG5ldyBCU1AgbGF5ZXIgdGhhdCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxpYW50IHdpdGggdGhlIFlvY3RvIFByb2plY3QgaXMgdG8gdXNlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWJzcDwvZmlsZW5hbWU+IHNjcmlwdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGF0IHNjcmlwdCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLWEtbmV3LWJzcC1sYXllci11c2luZy10aGUteW9jdG8tYnNwLXNjcmlwdCc+Q3JlYXRpbmcgYSBOZXcgQlNQIExheWVyIFVzaW5nIHRoZSB5b2N0by1ic3AgU2NyaXB0PC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvYnNwLWRldi1mbG93LnBuZyIgd2lkdGg9IjdpbiIgZGVwdGg9IjVpbiIgYWxpZ249ImNlbnRlciIgc2NhbGVmaXQ9IjEiIC8+CisgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Bbm90aGVyIGV4YW1wbGUgdGhhdCBpbGx1c3RyYXRlcyBhIGxheWVyCi0gICAgICAgICAgICAgICAgICAgICAgICBpcyBhbiBhcHBsaWNhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIFN1cHBvc2UgeW91IGFyZSBjcmVhdGluZyBhbiBhcHBsaWNhdGlvbiB0aGF0IGhhcwotICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeSBvciBvdGhlciBkZXBlbmRlbmNpZXMgaW4gb3JkZXIgZm9yIGl0IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlIGFuZCBydW4uCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgbGF5ZXIsIGluIHRoaXMgY2FzZSwgd291bGQgYmUgd2hlcmUgYWxsIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlcyB0aGF0IGRlZmluZSB0aG9zZSBkZXBlbmRlbmNpZXMgYXJlIGtlcHQuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUga2V5IHBvaW50IGZvciBhIGxheWVyIGlzIHRoYXQgaXQgaXMgYW4gaXNvbGF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIGFyZWEgdGhhdCBjb250YWlucyBhbGwgdGhlIHJlbGV2YW50IGluZm9ybWF0aW9uIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHByb2plY3QgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBrbm93cwotICAgICAgICAgICAgICAgICAgICAgICAgYWJvdXQuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBsYXllcnMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcgYW5kIENyZWF0aW5nIExheWVyczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBCU1AgbGF5ZXJzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nYnNwLWxheWVycyc+QlNQIExheWVyczwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5GaXZlIEJTUHMgZXhpc3QgdGhhdCBhcmUgcGFydCBvZiB0aGUgWW9jdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0IHJlbGVhc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJlYWdsZWJvbmU8L2ZpbGVuYW1lPiAoQVJNKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bXBjODMxNWU8L2ZpbGVuYW1lPiAoUG93ZXJQQyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5lZGdlcm91dGVyPC9maWxlbmFtZT4gKE1JUFMpLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGVzIGFuZCBjb25maWd1cmF0aW9ucyBmb3IgdGhlc2UgZml2ZSBCU1BzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGxvY2F0ZWQgYW5kIGRpc3BlcnNlZCB3aXRoaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgdXAgWW91ciBIb3N0IERldmVsb3BtZW50IFN5c3RlbQorICAgICAgICAgICAgICAgIHRvIFN1cHBvcnQgRGV2ZWxvcG1lbnQgVXNpbmcgdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgUHJvamVjdDwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc2V0dGluZy11cC10aGUtZGV2ZWxvcG1lbnQtaG9zdC10by11c2UtdGhlLXlvY3RvLXByb2plY3QnPlByZXBhcmluZyB0aGUgQnVpbGQgSG9zdDwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MKKyAgICAgICAgICAgICAgICBNYW51YWwgZm9yIG9wdGlvbnMgb24gaG93IHRvIGdldCBhIHN5c3RlbSByZWFkeQorICAgICAgICAgICAgICAgIHRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXN0YWJsaXNoIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBSZXBvc2l0b3J5IG9uIFlvdXIgU3lzdGVtOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgSGF2aW5nIGxvY2FsIGNvcGllcyBvZiB0aGVzZSBzdXBwb3J0ZWQgQlNQIGxheWVycworICAgICAgICAgICAgICAgIG9uIHlvdXIgc3lzdGVtIGdpdmVzIHlvdSBhY2Nlc3MgdG8gbGF5ZXJzIHlvdQorICAgICAgICAgICAgICAgIG1pZ2h0IGJlIGFibGUgdG8gbGV2ZXJhZ2Ugd2hlbiBjcmVhdGluZyB5b3VyIEJTUC4KKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGdldCB0aGVzZSBmaWxlcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdwcmVwYXJpbmcteW91ci1idWlsZC1ob3N0LXRvLXdvcmstd2l0aC1ic3AtbGF5ZXJzJz5QcmVwYXJpbmcgWW91ciBCdWlsZCBIb3N0IHRvIFdvcmsgd2l0aCBCU1AgTGF5ZXJzPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgWW91ciBPd24gQlNQIExheWVyIFVzaW5nIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgU2NyaXB0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgTGF5ZXJzIGFyZSBpZGVhbCBmb3IgaXNvbGF0aW5nIGFuZCBzdG9yaW5nIHdvcmsKKyAgICAgICAgICAgICAgICBmb3IgYSBnaXZlbiBwaWVjZSBvZiBoYXJkd2FyZS4KKyAgICAgICAgICAgICAgICBBIGxheWVyIGlzIHJlYWxseSBqdXN0IGEgbG9jYXRpb24gb3IgYXJlYSBpbiB3aGljaCB5b3UKKyAgICAgICAgICAgICAgICBwbGFjZSB0aGUgcmVjaXBlcyBhbmQgY29uZmlndXJhdGlvbnMgZm9yIHlvdXIgQlNQLgorICAgICAgICAgICAgICAgIEluIGZhY3QsIGEgQlNQIGlzLCBpbiBpdHNlbGYsIGEgc3BlY2lhbCB0eXBlIG9mIGxheWVyLgorICAgICAgICAgICAgICAgIFRoZSBzaW1wbGVzdCB3YXkgdG8gY3JlYXRlIGEgbmV3IEJTUCBsYXllciB0aGF0IGlzCisgICAgICAgICAgICAgICAgY29tcGxpYW50IHdpdGggdGhlIFlvY3RvIFByb2plY3QgaXMgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IHNjcmlwdC4KKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhhdCBzY3JpcHQsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3JlYXRpbmctYS1uZXctYnNwLWxheWVyLXVzaW5nLXRoZS1iaXRiYWtlLWxheWVycy1zY3JpcHQnPkNyZWF0aW5nIGEgTmV3IEJTUCBMYXllciBVc2luZyB0aGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gU2NyaXB0PC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uLjwvcGFyYT4KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRocmVlIGNvcmUgSW50ZWwgQlNQcyBleGlzdCBhcyBwYXJ0IG9mIHRoZSBZb2N0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QgcmVsZWFzZSBpbiB0aGUKKyAgICAgICAgICAgICAgICA8cGFyYT5Bbm90aGVyIGV4YW1wbGUgdGhhdCBpbGx1c3RyYXRlcyBhIGxheWVyCisgICAgICAgICAgICAgICAgaXMgYW4gYXBwbGljYXRpb24uCisgICAgICAgICAgICAgICAgU3VwcG9zZSB5b3UgYXJlIGNyZWF0aW5nIGFuIGFwcGxpY2F0aW9uIHRoYXQgaGFzCisgICAgICAgICAgICAgICAgbGlicmFyeSBvciBvdGhlciBkZXBlbmRlbmNpZXMgaW4gb3JkZXIgZm9yIGl0IHRvCisgICAgICAgICAgICAgICAgY29tcGlsZSBhbmQgcnVuLgorICAgICAgICAgICAgICAgIFRoZSBsYXllciwgaW4gdGhpcyBjYXNlLCB3b3VsZCBiZSB3aGVyZSBhbGwgdGhlCisgICAgICAgICAgICAgICAgcmVjaXBlcyB0aGF0IGRlZmluZSB0aG9zZSBkZXBlbmRlbmNpZXMgYXJlIGtlcHQuCisgICAgICAgICAgICAgICAgVGhlIGtleSBwb2ludCBmb3IgYSBsYXllciBpcyB0aGF0IGl0IGlzIGFuCisgICAgICAgICAgICAgICAgaXNvbGF0ZWQgYXJlYSB0aGF0IGNvbnRhaW5zIGFsbCB0aGUgcmVsZXZhbnQKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBmb3IgdGhlIHByb2plY3QgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGtub3dzIGFib3V0LgorICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGxheWVycywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3RoZS15b2N0by1wcm9qZWN0LWxheWVyLW1vZGVsJz5UaGUgWW9jdG8gUHJvamVjdCBMYXllciBNb2RlbDwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzCisgICAgICAgICAgICAgICAgTWFudWFsLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyByZWZlcmVuY2UgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcworICAgICAgICAgICAgICAgIE1hbnVhbC4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBCU1AgbGF5ZXJzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaXZlIGhhcmR3YXJlIHJlZmVyZW5jZSBCU1BzIGV4aXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBhcmUgcGFydCBvZiB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGFyZSBsb2NhdGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5L21ldGEteW9jdG8tYnNwPC9maWxlbmFtZT4gQlNQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4YXMgSW5zdHJ1bWVudHMgQmVhZ2xlYm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5iZWFnbGVib25lLXlvY3RvPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJlZXNjYWxlIE1QQzgzMTVFLVJEQgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5tcGM4MzE1ZS1yZGI8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVYmlxdWl0aSBOZXR3b3JrcyBFZGdlUm91dGVyIExpdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5lZGdlcm91dGVyPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUd28gZ2VuZXJhbCBJQSBwbGF0Zm9ybXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Z2VuZXJpY3g4NjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdlbmVyaWN4ODYtNjQ8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVlIGNvcmUgSW50ZWwgQlNQcyBleGlzdCBhcyBwYXJ0IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZSBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IGxheWVyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbnRlbC1jb3JlMi0zMjwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgYSBCU1Agb3B0aW1pemVkIGZvciB0aGUgQ29yZTIgZmFtaWx5IG9mIENQVXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHdlbGwgYXMgYWxsIENQVXMgcHJpb3IgdG8gdGhlIFNpbHZlcm1vbnQgY29yZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGEgQlNQIG9wdGltaXplZCBmb3IgdGhlIENvcmUyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYW1pbHkgb2YgQ1BVcyBhcyB3ZWxsIGFzIGFsbCBDUFVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvciB0byB0aGUgU2lsdmVybW9udCBjb3JlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbnRlbC1jb3JlaTctNjQ8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGEgQlNQIG9wdGltaXplZCBmb3IgTmVoYWxlbSBhbmQgbGF0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmUgYW5kIFhlb24gQ1BVcyBhcyB3ZWxsIGFzIFNpbHZlcm1vbnQgYW5kIGxhdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdG9tIENQVXMsIHN1Y2ggYXMgdGhlIEJheXRyYWlsIFNvQ3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBhIEJTUCBvcHRpbWl6ZWQgZm9yIE5laGFsZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsYXRlciBDb3JlIGFuZCBYZW9uIENQVXMgYXMgd2VsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgU2lsdmVybW9udCBhbmQgbGF0ZXIgQXRvbSBDUFVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjaCBhcyB0aGUgQmF5dHJhaWwgU29Dcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW50ZWwtcXVhcms8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGEgQlNQIG9wdGltaXplZCBmb3IgdGhlIEludGVsIEdhbGlsZW8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbjEgJmFtcDsgZ2VuMiBkZXZlbG9wbWVudCBib2FyZHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBhIEJTUCBvcHRpbWl6ZWQgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWwgR2FsaWxlbyBnZW4xICZhbXA7IGdlbjIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGJvYXJkcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPldoZW4geW91IHNldCB1cCBhIGxheWVyIGZvciBhIG5ldyBCU1AsIHlvdSBzaG91bGQKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvdyBhIHN0YW5kYXJkIGxheW91dC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbGF5b3V0IGlzIGRlc2NyaWJlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdic3AtZmlsZWxheW91dCc+RXhhbXBsZSBGaWxlc3lzdGVtIExheW91dDwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhlIHN0YW5kYXJkIGxheW91dCwgeW91IHdpbGwgbm90aWNlIGEgc3VnZ2VzdGVkCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgZm9yIHJlY2lwZXMgYW5kIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGUgc3RhbmRhcmQgbGF5b3V0IGZvciBhIEJTUCBieSBleGFtaW5pbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIGFueSBzdXBwb3J0ZWQgQlNQIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBsYXllciBpbnNpZGUgdGhlIFNvdXJjZQotICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIENvbmZpZ3VyYXRpb24gQ2hhbmdlcyB0byBZb3VyIE5ldyBCU1AKLSAgICAgICAgICAgICAgICAgICAgICAgIExheWVyOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgc3RhbmRhcmQgQlNQIGxheWVyIHN0cnVjdHVyZSBvcmdhbml6ZXMgdGhlIGZpbGVzCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byBlZGl0IGluIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXZlcmFsIDxmaWxlbmFtZT5yZWNpcGVzLSo8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgd2l0aGluIHRoZSBCU1AgbGF5ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uIGNoYW5nZXMgaWRlbnRpZnkgd2hlcmUgeW91ciBuZXcgbGF5ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzIG9uIHRoZSBsb2NhbCBzeXN0ZW0gYW5kIGlkZW50aWZ5IHdoaWNoIGtlcm5lbCB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBnb2luZyB0byB1c2UuCi0gICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBydW4gdGhlIDxmaWxlbmFtZT55b2N0by1ic3A8L2ZpbGVuYW1lPiBzY3JpcHQsCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3UgYXJlIGFibGUgdG8gaW50ZXJhY3RpdmVseSBjb25maWd1cmUgbWFueSB0aGluZ3MgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgQlNQIChlLmcuIGtleWJvYXJkLCB0b3VjaHNjcmVlbiwgYW5kIHNvIGZvcnRoKS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBSZWNpcGUgQ2hhbmdlcyB0byBZb3VyIE5ldyBCU1AKLSAgICAgICAgICAgICAgICAgICAgICAgIExheWVyOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGUgY2hhbmdlcyBpbmNsdWRlIGFsdGVyaW5nIHJlY2lwZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gZmlsZXMpLCByZW1vdmluZyByZWNpcGVzIHlvdQotICAgICAgICAgICAgICAgICAgICAgICAgZG8gbm90IHVzZSwgYW5kIGFkZGluZyBuZXcgcmVjaXBlcyBvciBhcHBlbmQgZmlsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4pIHRoYXQgeW91IG5lZWQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQgeW91ciBoYXJkd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UHJlcGFyZSBmb3IgdGhlIEJ1aWxkOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIG1hZGUgYWxsIHRoZSBjaGFuZ2VzIHRvIHlvdXIgQlNQIGxheWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgdGhlcmUgcmVtYWlucyBhIGZldyB0aGluZ3MgeW91IG5lZWQgdG8gZG8gZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBpbiBvcmRlciBmb3IgaXQgdG8gY3JlYXRlCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3VyIGltYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gZ2V0IHRoZSBidWlsZCBlbnZpcm9ubWVudCByZWFkeSBieQotICAgICAgICAgICAgICAgICAgICAgICAgc291cmNpbmcgYW4gZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0Ci0gICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnY8L2ZpbGVuYW1lPikKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB5b3UgbmVlZCB0byBiZSBzdXJlIHR3byBrZXkgY29uZmlndXJhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMgYXJlIGNvbmZpZ3VyZWQgYXBwcm9wcmlhdGVseTogdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gYW5kIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvYmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBtYWtlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGF3YXJlCi0gICAgICAgICAgICAgICAgICAgICAgICBvZiB5b3VyIG5ldyBsYXllci4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNlbmFibGluZy15b3VyLWxheWVyJz5FbmFibGluZyBZb3VyIExheWVyPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbAotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBsZXQgdGhlIGJ1aWxkIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICAgICAga25vdyBhYm91dCB5b3VyIG5ldyBsYXllci48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBlbnRpcmUgcHJvY2VzcyBmb3IgYnVpbGRpbmcgYW4gaW1hZ2UgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJ2aWV3ZWQgaW4gdGhlIHNlY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7I3FzLWJ1aWxkaW5nLWltYWdlcyc+QnVpbGRpbmcgSW1hZ2VzPC91bGluaz4iIHNlY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0LgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IG1pZ2h0IHdhbnQgdG8gcmVmZXJlbmNlIHRoaXMgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBJbWFnZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0aGUgQml0QmFrZSB0b29sCi0gICAgICAgICAgICAgICAgICAgICAgICB0byBidWlsZCBpbWFnZXMgYmFzZWQgb24gdGhlIHR5cGUgb2YgaW1hZ2UgeW91IHdhbnQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBtb3JlIGluZm9ybWF0aW9uIGFib3V0IEJpdEJha2UgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7Jz5CaXRCYWtlIFVzZXIgTWFudWFsPC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBidWlsZCBwcm9jZXNzIHN1cHBvcnRzIHNldmVyYWwgdHlwZXMgb2YKLSAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlcyB0byBzYXRpc2Z5IGRpZmZlcmVudCBuZWVkcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtaW1hZ2VzJz5JbWFnZXM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIG9uIHN1cHBvcnRlZCBpbWFnZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J3JlcXVpcmVtZW50cy1hbmQtcmVjb21tZW5kYXRpb25zLWZvci1yZWxlYXNlZC1ic3BzJz4KLSAgICAgICAgICAgIDx0aXRsZT5SZXF1aXJlbWVudHMgYW5kIFJlY29tbWVuZGF0aW9ucyBmb3IgUmVsZWFzZWQgQlNQczwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIENlcnRhaW4gcmVxdWlyZW1lbnRzIGV4aXN0IGZvciBhIHJlbGVhc2VkIEJTUCB0byBiZSBjb25zaWRlcmVkCi0gICAgICAgICAgICAgICAgY29tcGxpYW50IHdpdGggdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCByZWNvbW1lbmRhdGlvbnMgYWxzbyBleGlzdC4KLSAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHRoZSByZXF1aXJlbWVudHMgYW5kIHJlY29tbWVuZGF0aW9ucyBmb3IKLSAgICAgICAgICAgICAgICByZWxlYXNlZCBCU1BzLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0ncmVsZWFzZWQtYnNwLXJlcXVpcmVtZW50cyc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPlJlbGVhc2VkIEJTUCBSZXF1aXJlbWVudHM8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEJlZm9yZSBsb29raW5nIGF0IEJTUCByZXF1aXJlbWVudHMsIHlvdSBzaG91bGQgY29uc2lkZXIgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgcmVxdWlyZW1lbnRzIGhlcmUgYXNzdW1lIHRoZSBCU1AgbGF5ZXIgaXMgYSB3ZWxsLWZvcm1lZCwgImxlZ2FsIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyIHRoYXQgY2FuIGJlIGFkZGVkIHRvIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBndWlkZWxpbmVzIG9uIGNyZWF0aW5nIGEgbGF5ZXIgdGhhdCBtZWV0cyB0aGVzZSBiYXNlIHJlcXVpcmVtZW50cywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdic3AtbGF5ZXJzJz5CU1AgTGF5ZXJzPC9saW5rPiIgYW5kIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgQ3JlYXRpbmcgTGF5ZXJzIjwvdWxpbms+IGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgcmVxdWlyZW1lbnRzIGluIHRoaXMgc2VjdGlvbiBhcHBseSByZWdhcmRsZXNzIG9mIGhvdyB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIGEgQlNQLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgY29uc3VsdCB0aGUgcGFja2FnaW5nIGFuZCBkaXN0cmlidXRpb24gZ3VpZGVsaW5lcyBmb3IgeW91cgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIHJlbGVhc2UgcHJvY2Vzcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSBvZiBwYWNrYWdpbmcgYW5kIGRpc3RyaWJ1dGlvbiByZXF1aXJlbWVudHMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaGlyZF9QYXJ0eV9CU1BfUmVsZWFzZV9Qcm9jZXNzJz5UaGlyZCBQYXJ0eSBCU1AgUmVsZWFzZSBQcm9jZXNzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lraSBwYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSByZXF1aXJlbWVudHMgZm9yIHRoZSBCU1AgYXMgaXQgaXMgbWFkZSBhdmFpbGFibGUgdG8gYSBkZXZlbG9wZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgY29tcGxldGVseSBpbmRlcGVuZGVudCBvZiB0aGUgcmVsZWFzZWQgZm9ybSBvZiB0aGUgQlNQLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgQlNQIE1ldGFkYXRhIGNhbiBiZSBjb250YWluZWQgd2l0aGluIGEgR2l0IHJlcG9zaXRvcnkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgY291bGQgaGF2ZSBhIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgY29tcGxldGVseSBkaWZmZXJlbnQgZnJvbSB3aGF0IGFwcGVhcnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgb2ZmaWNpYWxseSByZWxlYXNlZCBCU1AgbGF5ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SXQgaXMgbm90IHJlcXVpcmVkIHRoYXQgc3BlY2lmaWMgcGFja2FnZXMgb3IgcGFja2FnZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWNhdGlvbnMgZXhpc3QgaW4gdGhlIEJTUCBsYXllciwgYmV5b25kIHRoZSByZXF1aXJlbWVudHMgZm9yIGdlbmVyYWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGlhbmNlIHdpdGggdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIG5vIHJlcXVpcmVtZW50IGV4aXN0cyBkaWN0YXRpbmcgdGhhdCBhIHNwZWNpZmljIGtlcm5lbCBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbCB2ZXJzaW9uIGJlIHVzZWQgaW4gYSBnaXZlbiBCU1AuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5XaGVuIHlvdSBzZXQgdXAgYSBsYXllciBmb3IgYSBuZXcgQlNQLAorICAgICAgICAgICAgICAgIHlvdSBzaG91bGQgZm9sbG93IGEgc3RhbmRhcmQgbGF5b3V0LgorICAgICAgICAgICAgICAgIFRoaXMgbGF5b3V0IGlzIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nYnNwLWZpbGVsYXlvdXQnPkV4YW1wbGUgRmlsZXN5c3RlbSBMYXlvdXQ8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgSW4gdGhlIHN0YW5kYXJkIGxheW91dCwgbm90aWNlIHRoZSBzdWdnZXN0ZWQKKyAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgZm9yIHJlY2lwZXMgYW5kIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGUgc3RhbmRhcmQgbGF5b3V0IGZvciBhIEJTUAorICAgICAgICAgICAgICAgIGJ5IGV4YW1pbmluZyBhbnkgc3VwcG9ydGVkIEJTUCBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IGxheWVyIGluc2lkZQorICAgICAgICAgICAgICAgIHRoZSBTb3VyY2UgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIENvbmZpZ3VyYXRpb24gQ2hhbmdlcyB0byBZb3VyIE5ldworICAgICAgICAgICAgICAgIEJTUCBMYXllcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSBzdGFuZGFyZCBCU1AgbGF5ZXIgc3RydWN0dXJlIG9yZ2FuaXplcyB0aGUKKyAgICAgICAgICAgICAgICBmaWxlcyB5b3UgbmVlZCB0byBlZGl0IGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBhbmQgc2V2ZXJhbAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLSo8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcworICAgICAgICAgICAgICAgIHdpdGhpbiB0aGUgQlNQIGxheWVyLgorICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gY2hhbmdlcyBpZGVudGlmeSB3aGVyZSB5b3VyIG5ldworICAgICAgICAgICAgICAgIGxheWVyIGlzIG9uIHRoZSBsb2NhbCBzeXN0ZW0gYW5kIGlkZW50aWZpZXMgdGhlCisgICAgICAgICAgICAgICAga2VybmVsIHlvdSBhcmUgZ29pbmcgdG8gdXNlLgorICAgICAgICAgICAgICAgIFdoZW4geW91IHJ1biB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBzY3JpcHQsCisgICAgICAgICAgICAgICAgeW91IGFyZSBhYmxlIHRvIGludGVyYWN0aXZlbHkgY29uZmlndXJlIG1hbnkKKyAgICAgICAgICAgICAgICB0aGluZ3MgZm9yIHRoZSBCU1AgKGUuZy4ga2V5Ym9hcmQsIHRvdWNoc2NyZWVuLAorICAgICAgICAgICAgICAgIGFuZCBzbyBmb3J0aCkuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ha2UgUmVjaXBlIENoYW5nZXMgdG8gWW91ciBOZXcgQlNQCisgICAgICAgICAgICAgICAgTGF5ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBSZWNpcGUgY2hhbmdlcyBpbmNsdWRlIGFsdGVyaW5nIHJlY2lwZXMKKyAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPiouYmI8L2ZpbGVuYW1lPiBmaWxlcyksIHJlbW92aW5nCisgICAgICAgICAgICAgICAgcmVjaXBlcyB5b3UgZG8gbm90IHVzZSwgYW5kIGFkZGluZyBuZXcgcmVjaXBlcworICAgICAgICAgICAgICAgIG9yIGFwcGVuZCBmaWxlcyAoPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgIHRoYXQgc3VwcG9ydCB5b3VyIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QcmVwYXJlIGZvciB0aGUgQnVpbGQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIG1hZGUgYWxsIHRoZSBjaGFuZ2VzIHRvIHlvdXIgQlNQCisgICAgICAgICAgICAgICAgbGF5ZXIsIHRoZXJlIHJlbWFpbnMgYSBmZXcgdGhpbmdzIHlvdSBuZWVkIHRvCisgICAgICAgICAgICAgICAgZG8gZm9yIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGluIG9yZGVyCisgICAgICAgICAgICAgICAgZm9yIGl0IHRvIGNyZWF0ZSB5b3VyIGltYWdlLgorICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGdldCB0aGUgYnVpbGQgZW52aXJvbm1lbnQgcmVhZHkgYnkKKyAgICAgICAgICAgICAgICBzb3VyY2luZyBhbiBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQKKyAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnY8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICBhbmQgeW91IG5lZWQgdG8gYmUgc3VyZSB0d28ga2V5IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICBmaWxlcyBhcmUgY29uZmlndXJlZCBhcHByb3ByaWF0ZWx5OiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gYW5kIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2JibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgIFlvdSBtdXN0IG1ha2UgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYXdhcmUKKyAgICAgICAgICAgICAgICBvZiB5b3VyIG5ldyBsYXllci4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2VuYWJsaW5nLXlvdXItbGF5ZXInPkVuYWJsaW5nIFlvdXIgTGF5ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbAorICAgICAgICAgICAgICAgIGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gbGV0IHRoZSBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICBrbm93IGFib3V0IHlvdXIgbmV3IGxheWVyLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCB0aGUgSW1hZ2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRoZSBCaXRCYWtlIHRvb2wKKyAgICAgICAgICAgICAgICB0byBidWlsZCBpbWFnZXMgYmFzZWQgb24gdGhlIHR5cGUgb2YgaW1hZ2UgeW91IHdhbnQgdG8KKyAgICAgICAgICAgICAgICBjcmVhdGUuCisgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQml0QmFrZSBpbiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7Jz5CaXRCYWtlIFVzZXIgTWFudWFsPC91bGluaz4uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgdGhlIHJlcXVpcmVtZW50cyBmb3IgYSByZWxlYXNlZCBCU1AgdGhhdCBjb25mb3JtIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0OgorICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBidWlsZCBwcm9jZXNzIHN1cHBvcnRzIHNldmVyYWwgdHlwZXMgb2YKKyAgICAgICAgICAgICAgICBpbWFnZXMgdG8gc2F0aXNmeSBkaWZmZXJlbnQgbmVlZHMuCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtaW1hZ2VzJz5JbWFnZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBjaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgZm9yCisgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gb24gc3VwcG9ydGVkIGltYWdlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdyZXF1aXJlbWVudHMtYW5kLXJlY29tbWVuZGF0aW9ucy1mb3ItcmVsZWFzZWQtYnNwcyc+CisgICAgPHRpdGxlPlJlcXVpcmVtZW50cyBhbmQgUmVjb21tZW5kYXRpb25zIGZvciBSZWxlYXNlZCBCU1BzPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBDZXJ0YWluIHJlcXVpcmVtZW50cyBleGlzdCBmb3IgYSByZWxlYXNlZCBCU1AgdG8gYmUKKyAgICAgICAgY29uc2lkZXJlZCBjb21wbGlhbnQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgQWRkaXRpb25hbGx5LCByZWNvbW1lbmRhdGlvbnMgYWxzbyBleGlzdC4KKyAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgcmVxdWlyZW1lbnRzIGFuZAorICAgICAgICByZWNvbW1lbmRhdGlvbnMgZm9yIHJlbGVhc2VkIEJTUHMuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlbGVhc2VkLWJzcC1yZXF1aXJlbWVudHMnPgorICAgICAgICA8dGl0bGU+UmVsZWFzZWQgQlNQIFJlcXVpcmVtZW50czwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCZWZvcmUgbG9va2luZyBhdCBCU1AgcmVxdWlyZW1lbnRzLCB5b3Ugc2hvdWxkIGNvbnNpZGVyCisgICAgICAgICAgICB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSByZXF1aXJlbWVudHMgaGVyZSBhc3N1bWUgdGhlIEJTUCBsYXllcgorICAgICAgICAgICAgICAgICAgICBpcyBhIHdlbGwtZm9ybWVkLCAibGVnYWwiIGxheWVyIHRoYXQgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgIGFkZGVkIHRvIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICBGb3IgZ3VpZGVsaW5lcyBvbiBjcmVhdGluZyBhIGxheWVyIHRoYXQgbWVldHMKKyAgICAgICAgICAgICAgICAgICAgdGhlc2UgYmFzZSByZXF1aXJlbWVudHMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoaXMgbWFudWFsIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzIjwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCisgICAgICAgICAgICAgICAgICAgIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVxdWlyZW1lbnRzIGluIHRoaXMgc2VjdGlvbiBhcHBseQorICAgICAgICAgICAgICAgICAgICByZWdhcmRsZXNzIG9mIGhvdyB5b3UgcGFja2FnZSBhIEJTUC4KKyAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBjb25zdWx0IHRoZSBwYWNrYWdpbmcgYW5kIGRpc3RyaWJ1dGlvbgorICAgICAgICAgICAgICAgICAgICBndWlkZWxpbmVzIGZvciB5b3VyIHNwZWNpZmljIHJlbGVhc2UgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGFuIGV4YW1wbGUgb2YgcGFja2FnaW5nIGFuZCBkaXN0cmlidXRpb24KKyAgICAgICAgICAgICAgICAgICAgcmVxdWlyZW1lbnRzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RoaXJkX1BhcnR5X0JTUF9SZWxlYXNlX1Byb2Nlc3MnPlRoaXJkIFBhcnR5IEJTUCBSZWxlYXNlIFByb2Nlc3M8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgd2lraSBwYWdlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSByZXF1aXJlbWVudHMgZm9yIHRoZSBCU1AgYXMgaXQgaXMgbWFkZQorICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUgdG8gYSBkZXZlbG9wZXIgYXJlIGNvbXBsZXRlbHkKKyAgICAgICAgICAgICAgICAgICAgaW5kZXBlbmRlbnQgb2YgdGhlIHJlbGVhc2VkIGZvcm0gb2YgdGhlIEJTUC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBCU1AgTWV0YWRhdGEgY2FuIGJlIGNvbnRhaW5lZAorICAgICAgICAgICAgICAgICAgICB3aXRoaW4gYSBHaXQgcmVwb3NpdG9yeSBhbmQgY291bGQgaGF2ZSBhIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgY29tcGxldGVseSBkaWZmZXJlbnQgZnJvbSB3aGF0IGFwcGVhcnMKKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIG9mZmljaWFsbHkgcmVsZWFzZWQgQlNQIGxheWVyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEl0IGlzIG5vdCByZXF1aXJlZCB0aGF0IHNwZWNpZmljIHBhY2thZ2VzIG9yCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgbW9kaWZpY2F0aW9ucyBleGlzdCBpbiB0aGUgQlNQIGxheWVyLAorICAgICAgICAgICAgICAgICAgICBiZXlvbmQgdGhlIHJlcXVpcmVtZW50cyBmb3IgZ2VuZXJhbAorICAgICAgICAgICAgICAgICAgICBjb21wbGlhbmNlIHdpdGggdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBubyByZXF1aXJlbWVudCBleGlzdHMgZGljdGF0aW5nCisgICAgICAgICAgICAgICAgICAgIHRoYXQgYSBzcGVjaWZpYyBrZXJuZWwgb3Iga2VybmVsIHZlcnNpb24gYmUKKyAgICAgICAgICAgICAgICAgICAgdXNlZCBpbiBhIGdpdmVuIEJTUC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93aW5nIGFyZSB0aGUgcmVxdWlyZW1lbnRzIGZvciBhIHJlbGVhc2VkIEJTUAorICAgICAgICAgICAgdGhhdCBjb25mb3JtIHRvIHRoZSBZb2N0byBQcm9qZWN0OgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MYXllciBOYW1lOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBCU1AgbXVzdCBoYXZlIGEgbGF5ZXIgbmFtZSB0aGF0IGZvbGxvd3MKKyAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3Qgc3RhbmRhcmRzLgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gQlNQIGxheWVyIG5hbWVzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdic3AtbGF5ZXJzJz5CU1AgTGF5ZXJzPC9saW5rPiIgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RmlsZSBTeXN0ZW0gTGF5b3V0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFdoZW4gcG9zc2libGUsIHVzZSB0aGUgc2FtZSBkaXJlY3RvcnkgbmFtZXMKKyAgICAgICAgICAgICAgICAgICAgaW4geW91ciBCU1AgbGF5ZXIgYXMgbGlzdGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy50eHQ8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaAorICAgICAgICAgICAgICAgICAgICBpcyBmb3VuZCBpbiA8ZmlsZW5hbWU+cG9reS9tZXRhPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgb3IgaW4gdGhlIE9wZW5FbWJlZGRlZC1Db3JlIExheWVyCisgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+b3BlbmVtYmVkZGVkLWNvcmU8L2ZpbGVuYW1lPikgYXQKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL29wZW5lbWJlZGRlZC1jb3JlL3RyZWUvbWV0YSc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3Ugc2hvdWxkIHBsYWNlIHJlY2lwZXMKKyAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4qLmJiPC9maWxlbmFtZT4gZmlsZXMpIGFuZCByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgbW9kaWZpY2F0aW9ucyAoPGZpbGVuYW1lPiouYmJhcHBlbmQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlcykgaW50byA8ZmlsZW5hbWU+cmVjaXBlcy0qPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgc3ViZGlyZWN0b3JpZXMgYnkgZnVuY3Rpb25hbCBhcmVhIGFzIG91dGxpbmVkCisgICAgICAgICAgICAgICAgICAgIGluIDxmaWxlbmFtZT5yZWNpcGVzLnR4dDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgY2Fubm90IGZpbmQgYSBjYXRlZ29yeSBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy50eHQ8L2ZpbGVuYW1lPiB0byBmaXQgYQorICAgICAgICAgICAgICAgICAgICBwYXJ0aWN1bGFyIHJlY2lwZSwgeW91IGNhbiBtYWtlIHVwIHlvdXIgb3duCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLSo8L2ZpbGVuYW1lPiBzdWJkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5XaXRoaW4gYW55IHBhcnRpY3VsYXIKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMtKjwvZmlsZW5hbWU+IGNhdGVnb3J5LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgbGF5b3V0IHNob3VsZCBtYXRjaCB3aGF0IGlzIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQtQ29yZSBHaXQgcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPm9wZW5lbWJlZGRlZC1jb3JlPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgIG9yIHRoZSBTb3VyY2UgRGlyZWN0b3J5ICg8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIG1ha2Ugc3VyZSB5b3UgcGxhY2UgcmVsYXRlZAorICAgICAgICAgICAgICAgICAgICBmaWxlcyBpbiBhcHByb3ByaWF0ZWx5IHJlbGF0ZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMtKjwvZmlsZW5hbWU+IHN1YmRpcmVjdG9yaWVzCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIHRvIHRoZSByZWNpcGUncyBmdW5jdGlvbiwgb3Igd2l0aGluCisgICAgICAgICAgICAgICAgICAgIGEgc3ViZGlyZWN0b3J5IGNvbnRhaW5pbmcgYSBzZXQgb2YgY2xvc2VseS1yZWxhdGVkCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGVzIHRoZW1zZWx2ZXMgc2hvdWxkIGZvbGxvdyB0aGUgZ2VuZXJhbAorICAgICAgICAgICAgICAgICAgICBndWlkZWxpbmVzIGZvciByZWNpcGVzIHVzZWQgaW4gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgZm91bmQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPSdodHRwOi8vb3BlbmVtYmVkZGVkLm9yZy93aWtpL1N0eWxlZ3VpZGUnPk9wZW5FbWJlZGRlZCBTdHlsZSBHdWlkZTwvdWxpbms+Ii4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TGljZW5zZSBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGluY2x1ZGUgYSBsaWNlbnNlIGZpbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgbGljZW5zZSBjb3ZlcnMgdGhlIEJTUCBNZXRhZGF0YSBhcyBhIHdob2xlLgorICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBzcGVjaWZ5IHdoaWNoIGxpY2Vuc2UgdG8gdXNlIHNpbmNlIG5vCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgbGljZW5zZSBleGlzdHMgd2hlbiBvbmUgbm90IHNwZWNpZmllZC4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2kvbWV0YS1yYXNwYmVycnlwaS90cmVlL0NPUFlJTkcuTUlUJz48ZmlsZW5hbWU+Q09QWUlORy5NSVQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgZm9yIHRoZSBSYXNwYmVycnkgUGkgQlNQIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1yYXNwYmVycnlwaTwvZmlsZW5hbWU+IEJTUCBsYXllcgorICAgICAgICAgICAgICAgICAgICBhcyBhbiBleGFtcGxlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SRUFETUUgRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBpbmNsdWRlIGEgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpL21ldGEtcmFzcGJlcnJ5cGkvdHJlZS9SRUFETUUubWQnPjxmaWxlbmFtZT5SRUFETUUubWQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgZm9yIHRoZSBSYXNwYmVycnkgUGkgQlNQIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1yYXNwYmVycnlwaTwvZmlsZW5hbWU+IEJTUCBsYXllcgorICAgICAgICAgICAgICAgICAgICBhcyBhbiBleGFtcGxlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5BdCBhIG1pbmltdW0sIHRoZSA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBzaG91bGQgY29udGFpbiB0aGUgZm9sbG93aW5nOgogICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5MYXllciBOYW1lOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIEJTUCBtdXN0IGhhdmUgYSBsYXllciBuYW1lIHRoYXQgZm9sbG93cyB0aGUgWW9jdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0IHN0YW5kYXJkcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gQlNQIGxheWVyIG5hbWVzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L2xpbms+IiBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgYnJpZWYgZGVzY3JpcHRpb24gYWJvdXQgdGhlIGhhcmR3YXJlIHRoZSBCU1AKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5GaWxlIFN5c3RlbSBMYXlvdXQ6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHBvc3NpYmxlLCB1c2UgdGhlIHNhbWUgZGlyZWN0b3J5IG5hbWVzIGluIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU1AgbGF5ZXIgYXMgbGlzdGVkIGluIHRoZSA8ZmlsZW5hbWU+cmVjaXBlcy50eHQ8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHBhcnRpY3VsYXIsIHlvdSBzaG91bGQgcGxhY2UgcmVjaXBlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gZmlsZXMpIGFuZCByZWNpcGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmljYXRpb25zICg8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZXMpIGludG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy0qPC9maWxlbmFtZT4gc3ViZGlyZWN0b3JpZXMgYnkgZnVuY3Rpb25hbCBhcmVhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgb3V0bGluZWQgaW4gPGZpbGVuYW1lPnJlY2lwZXMudHh0PC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGNhbm5vdCBmaW5kIGEgY2F0ZWdvcnkgaW4gPGZpbGVuYW1lPnJlY2lwZXMudHh0PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBmaXQgYSBwYXJ0aWN1bGFyIHJlY2lwZSwgeW91IGNhbiBtYWtlIHVwIHlvdXIgb3duCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMtKjwvZmlsZW5hbWU+IHN1YmRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgPGZpbGVuYW1lPnJlY2lwZXMudHh0PC9maWxlbmFtZT4gaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGluIHRoZSBPcGVuRW1iZWRkZWQgQ29yZSBMYXllcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+b3BlbmVtYmVkZGVkLWNvcmU8L2ZpbGVuYW1lPikgZm91bmQgYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvb3BlbmVtYmVkZGVkLWNvcmUvdHJlZS9tZXRhJz48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+V2l0aGluIGFueSBwYXJ0aWN1bGFyIDxmaWxlbmFtZT5yZWNpcGVzLSo8L2ZpbGVuYW1lPiBjYXRlZ29yeSwgdGhlIGxheW91dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZCBtYXRjaCB3aGF0IGlzIGZvdW5kIGluIHRoZSBPcGVuRW1iZWRkZWQgQ29yZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5ICg8ZmlsZW5hbWU+b3BlbmVtYmVkZGVkLWNvcmU8L2ZpbGVuYW1lPikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciB0aGUgU291cmNlIERpcmVjdG9yeSAoPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIG1ha2Ugc3VyZSB5b3UgcGxhY2UgcmVsYXRlZCBmaWxlcyBpbiBhcHByb3ByaWF0ZWx5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZCA8ZmlsZW5hbWU+cmVjaXBlcy0qPC9maWxlbmFtZT4gc3ViZGlyZWN0b3JpZXMgc3BlY2lmaWMgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlJ3MgZnVuY3Rpb24sIG9yIHdpdGhpbiBhIHN1YmRpcmVjdG9yeSBjb250YWluaW5nIGEgc2V0IG9mIGNsb3NlbHktcmVsYXRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZXMgdGhlbXNlbHZlcyBzaG91bGQgZm9sbG93IHRoZSBnZW5lcmFsIGd1aWRlbGluZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcmVjaXBlcyB1c2VkIGluIHRoZSBZb2N0byBQcm9qZWN0IGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPSdodHRwOi8vb3BlbmVtYmVkZGVkLm9yZy93aWtpL1N0eWxlZ3VpZGUnPk9wZW5FbWJlZGRlZCBTdHlsZSBHdWlkZTwvdWxpbms+Ii4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgYWxsIHRoZSBkZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiB3aGljaCBhIEJTUCBsYXllciBkZXBlbmRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIGRlcGVuZGVuY2llcyBhcmUgdHlwaWNhbGx5IGEgbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHJlcXVpcmVkIGxheWVycyBuZWVkZWQgdG8gYnVpbGQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNQLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBkZXBlbmRlbmNpZXMgc2hvdWxkIGFsc28KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBhbnkgb3RoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgdGhlIEJTUCBtaWdodCBoYXZlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5MaWNlbnNlIEZpbGU6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBpbmNsdWRlIGEgbGljZW5zZSBmaWxlIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLTxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4gZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbGljZW5zZSBjb3ZlcnMgdGhlIEJTUCBNZXRhZGF0YSBhcyBhIHdob2xlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IHNwZWNpZnkgd2hpY2ggbGljZW5zZSB0byB1c2Ugc2luY2UgdGhlcmUgaXMgbm8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IGxpY2Vuc2UgaWYgb25lIGlzIG5vdCBzcGVjaWZpZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9tZXRhLXJhc3BiZXJyeXBpL3RyZWUvQ09QWUlORy5NSVQnPjxmaWxlbmFtZT5DT1BZSU5HLk1JVDwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIGZvciB0aGUgUmFzcGJlcnJ5IFBpIEJTUCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1yYXNwYmVycnlwaTwvZmlsZW5hbWU+IEJTUCBsYXllciBhcyBhbiBleGFtcGxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFueSByZXF1aXJlZCBzcGVjaWFsIGxpY2Vuc2luZyBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhpcyBpbmZvcm1hdGlvbiBpbmNsdWRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIG9uIHNwZWNpYWwgdmFyaWFibGVzIG5lZWRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHNhdGlzZnkgYSBFVUxBLCBvciBpbnN0cnVjdGlvbnMgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gYnVpbGQgb3IgZGlzdHJpYnV0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyaWVzIGJ1aWx0IGZyb20gdGhlIEJTUCBNZXRhZGF0YS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UkVBRE1FIEZpbGU6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBpbmNsdWRlIGEgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9tZXRhLXJhc3BiZXJyeXBpL3RyZWUvUkVBRE1FJz48ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgZm9yIHRoZSBSYXNwYmVycnkgUGkgQlNQIGluIHRoZSA8ZmlsZW5hbWU+bWV0YS1yYXNwYmVycnlwaTwvZmlsZW5hbWU+IEJTUCBsYXllcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIGFuIGV4YW1wbGUuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkF0IGEgbWluaW11bSwgdGhlIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlIHNob3VsZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW4gdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QSBicmllZiBkZXNjcmlwdGlvbiBhYm91dCB0aGUgaGFyZHdhcmUgdGhlIEJTUAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkEgbGlzdCBvZiBhbGwgdGhlIGRlcGVuZGVuY2llcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gd2hpY2ggYSBCU1AgbGF5ZXIgZGVwZW5kcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIGRlcGVuZGVuY2llcyBhcmUgdHlwaWNhbGx5IGEgbGlzdCBvZiByZXF1aXJlZCBsYXllcnMgbmVlZGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBidWlsZCB0aGUgQlNQLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhlIGRlcGVuZGVuY2llcyBzaG91bGQgYWxzbyBjb250YWluIGluZm9ybWF0aW9uIHJlZ2FyZGluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55IG90aGVyIGRlcGVuZGVuY2llcyB0aGUgQlNQIG1pZ2h0IGhhdmUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BbnkgcmVxdWlyZWQgc3BlY2lhbCBsaWNlbnNpbmcgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhpcyBpbmZvcm1hdGlvbiBpbmNsdWRlcyBpbmZvcm1hdGlvbiBvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lhbCB2YXJpYWJsZXMgbmVlZGVkIHRvIHNhdGlzZnkgYSBFVUxBLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgaW5zdHJ1Y3Rpb25zIG9uIGluZm9ybWF0aW9uIG5lZWRlZCB0byBidWlsZCBvciBkaXN0cmlidXRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcmllcyBidWlsdCBmcm9tIHRoZSBCU1AgTWV0YWRhdGEuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgbmFtZSBhbmQgY29udGFjdCBpbmZvcm1hdGlvbiBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU1AgbGF5ZXIgbWFpbnRhaW5lci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgdGhlIHBlcnNvbiB0byB3aG9tIHBhdGNoZXMgYW5kIHF1ZXN0aW9ucyBzaG91bGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIHNlbnQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGZpbmQgdGhlIHJpZ2h0IHBlcnNvbiwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPlN1Ym1pdHRpbmcgYSBDaGFuZ2UgdG8gdGhlIFlvY3RvIFByb2plY3Q8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JbnN0cnVjdGlvbnMgb24gaG93IHRvIGJ1aWxkIHRoZSBCU1AgdXNpbmcgdGhlIEJTUAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JbnN0cnVjdGlvbnMgb24gaG93IHRvIGJvb3QgdGhlIEJTUCBidWlsZCBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgQlNQIGxheWVyLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byBib290IHRoZSBiaW5hcnkgaW1hZ2VzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZWQgaW4gdGhlIDxmaWxlbmFtZT5iaW5hcnk8L2ZpbGVuYW1lPiBkaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBwcmVzZW50LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SW5mb3JtYXRpb24gb24gYW55IGtub3duIGJ1Z3Mgb3IgaXNzdWVzIHRoYXQgdXNlcnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZCBrbm93IGFib3V0IHdoZW4gZWl0aGVyIGJ1aWxkaW5nIG9yIGJvb3RpbmcgdGhlIEJTUAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJpZXMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlJFQURNRS5zb3VyY2VzIEZpbGU6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBpbmNsdWRlIGEgPGZpbGVuYW1lPlJFQURNRS5zb3VyY2VzPC9maWxlbmFtZT4gaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIHNwZWNpZmllcyBleGFjdGx5IHdoZXJlIHlvdSBjYW4gZmluZCB0aGUgc291cmNlcyB1c2VkIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUgdGhlIGJpbmFyeSBpbWFnZXMgY29udGFpbmVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaW5hcnk8L2ZpbGVuYW1lPiBkaXJlY3RvcnksIGlmIHByZXNlbnQuCisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG5hbWUgYW5kIGNvbnRhY3QgaW5mb3JtYXRpb24gZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTUCBsYXllciBtYWludGFpbmVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgdGhlIHBlcnNvbiB0byB3aG9tIHBhdGNoZXMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb25zIHNob3VsZCBiZSBzZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZmluZCB0aGUgcmlnaHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJzb24sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjaG93LXRvLXN1Ym1pdC1hLWNoYW5nZSc+U3VibWl0dGluZyBhIENoYW5nZSB0byB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkxheWVyIENvbmZpZ3VyYXRpb24gRmlsZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGluY2x1ZGUgYSA8ZmlsZW5hbWU+Y29uZi9sYXllci5jb25mPC9maWxlbmFtZT4gaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIGlkZW50aWZpZXMgdGhlIDxmaWxlbmFtZT5tZXRhLTxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU1AgbGF5ZXIgYXMgYSBsYXllciB0byB0aGUgYnVpbGQgc3lzdGVtLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5NYWNoaW5lIENvbmZpZ3VyYXRpb24gRmlsZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGluY2x1ZGUgb25lIG9yIG1vcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9tYWNoaW5lLzxyZXBsYWNlYWJsZT5ic3BfbmFtZTwvcmVwbGFjZWFibGU+LmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzIGluIHRoZSA8ZmlsZW5hbWU+bWV0YS08cmVwbGFjZWFibGU+YnNwX25hbWU8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSBjb25maWd1cmF0aW9uIGZpbGVzIGRlZmluZSBtYWNoaW5lIHRhcmdldHMgdGhhdCBjYW4gYmUgYnVpbHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgQlNQIGxheWVyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11bHRpcGxlIG1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlcyBkZWZpbmUgdmFyaWF0aW9ucyBvZiBtYWNoaW5lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBCU1AuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgYSBCU1Agc3VwcG9ydHMgbXVsdGlwbGUgbWFjaGluZSB2YXJpYXRpb25zLCB5b3UgbmVlZCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZXF1YXRlbHkgZGVzY3JpYmUgZWFjaCB2YXJpYXRpb24gaW4gdGhlIEJTUAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvIG5vdCB1c2UgbXVsdGlwbGUgbWFjaGluZSBjb25maWd1cmF0aW9uIGZpbGVzIHRvIGRlc2NyaWJlIGRpc3BhcmF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBoYXZlIHZlcnkgZGlmZmVyZW50IHRhcmdldHMsIHlvdSBzaG91bGQgY3JlYXRlIHNlcGFyYXRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNQIGxheWVycyBmb3IgZWFjaCB0YXJnZXQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+SXQgaXMgY29tcGxldGVseSBwb3NzaWJsZSBmb3IgYSBkZXZlbG9wZXIgdG8gc3RydWN0dXJlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtpbmcgcmVwb3NpdG9yeSBhcyBhIGNvbmdsb21lcmF0aW9uIG9mIHVucmVsYXRlZCBCU1AKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcywgYW5kIHRvIHBvc3NpYmx5IGdlbmVyYXRlIEJTUHMgdGFyZ2V0ZWQgZm9yIHJlbGVhc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoYXQgZGlyZWN0b3J5IHVzaW5nIHNjcmlwdHMgb3Igc29tZSBvdGhlciBtZWNoYW5pc20KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPiBsYXllcikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VjaCBjb25zaWRlcmF0aW9ucyBhcmUgb3V0c2lkZSB0aGUgc2NvcGUgb2YgdGhpcyBkb2N1bWVudC48L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byBidWlsZCB0aGUgQlNQIHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIEJTUCBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbnMgb24gaG93IHRvIGJvb3QgdGhlIEJTUCBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIEJTUCBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbnMgb24gaG93IHRvIGJvb3QgdGhlIGJpbmFyeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlcyBjb250YWluZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpbmFyeTwvZmlsZW5hbWU+IGRpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBwcmVzZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uIG9uIGFueSBrbm93biBidWdzIG9yIGlzc3VlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgdXNlcnMgc2hvdWxkIGtub3cgYWJvdXQgd2hlbiBlaXRoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGluZyBvciBib290aW5nIHRoZSBCU1AgYmluYXJpZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UkVBRE1FLnNvdXJjZXMgRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgQlNQIGNvbnRhaW5zIGJpbmFyeSBpbWFnZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaW5hcnk8L2ZpbGVuYW1lPiBkaXJlY3RvcnksIHlvdSBtdXN0CisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgYSA8ZmlsZW5hbWU+UkVBRE1FLnNvdXJjZXM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS08L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICBUaGlzIGZpbGUgc3BlY2lmaWVzIGV4YWN0bHkgd2hlcmUgeW91IGNhbiBmaW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2VzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGJpbmFyeSBpbWFnZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxheWVyIENvbmZpZ3VyYXRpb24gRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBpbmNsdWRlIGEKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbGF5ZXIuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4KKyAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgZmlsZSBpZGVudGlmaWVzIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS08L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgQlNQIGxheWVyIGFzIGEgbGF5ZXIgdG8gdGhlIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFjaGluZSBDb25maWd1cmF0aW9uIEZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgaW5jbHVkZSBvbmUgb3IgbW9yZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9tYWNoaW5lLzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGVzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS08L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBjb25maWd1cmF0aW9uIGZpbGVzIGRlZmluZSBtYWNoaW5lIHRhcmdldHMKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBjYW4gYmUgYnVpbHQgdXNpbmcgdGhlIEJTUCBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgTXVsdGlwbGUgbWFjaGluZSBjb25maWd1cmF0aW9uIGZpbGVzIGRlZmluZQorICAgICAgICAgICAgICAgICAgICB2YXJpYXRpb25zIG9mIG1hY2hpbmUgY29uZmlndXJhdGlvbnMgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgQlNQIHN1cHBvcnRzLgorICAgICAgICAgICAgICAgICAgICBJZiBhIEJTUCBzdXBwb3J0cyBtdWx0aXBsZSBtYWNoaW5lIHZhcmlhdGlvbnMsCisgICAgICAgICAgICAgICAgICAgIHlvdSBuZWVkIHRvIGFkZXF1YXRlbHkgZGVzY3JpYmUgZWFjaCB2YXJpYXRpb24KKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIEJTUCA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgRG8gbm90IHVzZSBtdWx0aXBsZSBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgdG8gZGVzY3JpYmUgZGlzcGFyYXRlIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gaGF2ZSB2ZXJ5IGRpZmZlcmVudCB0YXJnZXRzLCB5b3Ugc2hvdWxkCisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBzZXBhcmF0ZSBCU1AgbGF5ZXJzIGZvciBlYWNoIHRhcmdldC4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBJdCBpcyBjb21wbGV0ZWx5IHBvc3NpYmxlIGZvciBhIGRldmVsb3BlciB0bworICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlIHRoZSB3b3JraW5nIHJlcG9zaXRvcnkgYXMgYQorICAgICAgICAgICAgICAgICAgICAgICAgY29uZ2xvbWVyYXRpb24gb2YgdW5yZWxhdGVkIEJTUCBmaWxlcywgYW5kIHRvCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NzaWJseSBnZW5lcmF0ZSBCU1BzIHRhcmdldGVkIGZvciByZWxlYXNlCisgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoYXQgZGlyZWN0b3J5IHVzaW5nIHNjcmlwdHMgb3Igc29tZQorICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIgbWVjaGFuaXNtCisgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPiBsYXllcikuCisgICAgICAgICAgICAgICAgICAgICAgICBTdWNoIGNvbnNpZGVyYXRpb25zIGFyZSBvdXRzaWRlIHRoZSBzY29wZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBkb2N1bWVudC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgogCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0ncmVsZWFzZWQtYnNwLXJlY29tbWVuZGF0aW9ucyc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPlJlbGVhc2VkIEJTUCBSZWNvbW1lbmRhdGlvbnM8L3RpdGxlPgorICAgIDxzZWN0aW9uIGlkPSdyZWxlYXNlZC1ic3AtcmVjb21tZW5kYXRpb25zJz4KKyAgICAgICAgPHRpdGxlPlJlbGVhc2VkIEJTUCBSZWNvbW1lbmRhdGlvbnM8L3RpdGxlPgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgcmVjb21tZW5kYXRpb25zIGZvciBhIHJlbGVhc2VkIEJTUCB0aGF0IGNvbmZvcm1zIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0OgotICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Cb290YWJsZSBJbWFnZXM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU1AgcmVsZWFzZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW4gY29udGFpbiBvbmUgb3IgbW9yZSBib290YWJsZSBpbWFnZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5jbHVkaW5nIGJvb3RhYmxlIGltYWdlcyBhbGxvd3MgdXNlcnMgdG8gZWFzaWx5IHRyeSBvdXQgdGhlIEJTUAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRoZWlyIG93biBoYXJkd2FyZS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SW4gc29tZSBjYXNlcywgaXQgbWlnaHQgbm90IGJlIGNvbnZlbmllbnQgdG8gaW5jbHVkZSBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vdGFibGUgaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB5b3UgbWlnaHQgd2FudCB0byBtYWtlIHR3byB2ZXJzaW9ucyBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU1AgYXZhaWxhYmxlOiBvbmUgdGhhdCBjb250YWlucyBiaW5hcnkgaW1hZ2VzLCBhbmQgb25lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBkb2VzIG5vdC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdmVyc2lvbiB0aGF0IGRvZXMgbm90IGNvbnRhaW4gYm9vdGFibGUgaW1hZ2VzIGF2b2lkcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVubmVjZXNzYXJ5IGRvd25sb2FkIHRpbWVzIGZvciB1c2VycyBub3QgaW50ZXJlc3RlZCBpbiB0aGUgaW1hZ2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgbmVlZCB0byBkaXN0cmlidXRlIGEgQlNQIGFuZCBpbmNsdWRlIGJvb3RhYmxlIGltYWdlcyBvciBidWlsZCBrZXJuZWwgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbXMgbWVhbnQgdG8gYWxsb3cgdXNlcnMgdG8gYm9vdCB0aGUgQlNQIGZvciBldmFsdWF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVycG9zZXMsIHlvdSBzaG91bGQgcHV0IHRoZSBpbWFnZXMgYW5kIGFydGlmYWN0cyB3aXRoaW4gYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaW5hcnkvPC9maWxlbmFtZT4gc3ViZGlyZWN0b3J5IGxvY2F0ZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+SWYgeW91IGRvIGluY2x1ZGUgYSBib290YWJsZSBpbWFnZSBhcyBwYXJ0IG9mIHRoZSBCU1AgYW5kIHRoZSBpbWFnZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBidWlsdCBieSBzb2Z0d2FyZSBjb3ZlcmVkIGJ5IHRoZSBHUEwgb3Igb3RoZXIgb3BlbiBzb3VyY2UgbGljZW5zZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQgaXMgeW91ciByZXNwb25zaWJpbGl0eSB0byB1bmRlcnN0YW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG1lZXQgYWxsIGxpY2Vuc2luZyByZXF1aXJlbWVudHMsIHdoaWNoIGNvdWxkIGluY2x1ZGUgZGlzdHJpYnV0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Ygc291cmNlIGZpbGVzLjwvbm90ZT48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VXNlIGEgWW9jdG8gTGludXggS2VybmVsOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgS2VybmVsIHJlY2lwZXMgaW4gdGhlIEJTUCBzaG91bGQgYmUgYmFzZWQgb24gYSBZb2N0byBMaW51eCBrZXJuZWwuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzaW5nIHlvdXIgcmVjaXBlcyBvbiB0aGVzZSBrZXJuZWxzIHJlZHVjZXMgdGhlIGNvc3RzIGZvciBtYWludGFpbmluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBCU1AgYW5kIGluY3JlYXNlcyBpdHMgc2NhbGFiaWxpdHkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSA8ZmlsZW5hbWU+WW9jdG8gTGludXggS2VybmVsPC9maWxlbmFtZT4gY2F0ZWdvcnkgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlc2Uga2VybmVscy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgotICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93aW5nIGFyZSByZWNvbW1lbmRhdGlvbnMgZm9yIHJlbGVhc2VkIEJTUHMgdGhhdAorICAgICAgICAgICAgY29uZm9ybSB0byB0aGUgWW9jdG8gUHJvamVjdDoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Qm9vdGFibGUgSW1hZ2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFJlbGVhc2VkIEJTUHMgY2FuIGNvbnRhaW4gb25lIG9yIG1vcmUgYm9vdGFibGUKKyAgICAgICAgICAgICAgICAgICAgaW1hZ2VzLgorICAgICAgICAgICAgICAgICAgICBJbmNsdWRpbmcgYm9vdGFibGUgaW1hZ2VzIGFsbG93cyB1c2VycyB0byBlYXNpbHkKKyAgICAgICAgICAgICAgICAgICAgdHJ5IG91dCB0aGUgQlNQIHVzaW5nIHRoZWlyIG93biBoYXJkd2FyZS48L3BhcmE+CiAKLSAgICAgICAgPHNlY3Rpb24gaWQ9J2N1c3RvbWl6aW5nLWEtcmVjaXBlLWZvci1hLWJzcCc+Ci0gICAgICAgICAgICA8dGl0bGU+Q3VzdG9taXppbmcgYSBSZWNpcGUgZm9yIGEgQlNQPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+SW4gc29tZSBjYXNlcywgaXQgbWlnaHQgbm90IGJlIGNvbnZlbmllbnQKKyAgICAgICAgICAgICAgICAgICAgdG8gaW5jbHVkZSBhIGJvb3RhYmxlIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBJZiBzbywgeW91IG1pZ2h0IHdhbnQgdG8gbWFrZSB0d28gdmVyc2lvbnMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIEJTUCBhdmFpbGFibGU6IG9uZSB0aGF0IGNvbnRhaW5zIGJpbmFyeSBpbWFnZXMsIGFuZAorICAgICAgICAgICAgICAgICAgICBvbmUgdGhhdCBkb2VzIG5vdC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHZlcnNpb24gdGhhdCBkb2VzIG5vdCBjb250YWluIGJvb3RhYmxlIGltYWdlcworICAgICAgICAgICAgICAgICAgICBhdm9pZHMgdW5uZWNlc3NhcnkgZG93bmxvYWQgdGltZXMgZm9yIHVzZXJzIG5vdAorICAgICAgICAgICAgICAgICAgICBpbnRlcmVzdGVkIGluIHRoZSBpbWFnZXMuPC9wYXJhPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgIElmIHlvdSBwbGFuIG9uIGN1c3RvbWl6aW5nIGEgcmVjaXBlIGZvciBhIHBhcnRpY3VsYXIgQlNQLCB5b3UgbmVlZCB0byBkbyB0aGUKLSAgICAgICAgICAgICAgIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNyZWF0ZSBhIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICBmaWxlIGZvciB0aGUgbW9kaWZpZWQgcmVjaXBlLgotICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdXNpbmcgYXBwZW5kIGZpbGVzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZy1iYmFwcGVuZC1maWxlcyc+VXNpbmcgLmJiYXBwZW5kIEZpbGVzIGluIFlvdXIgTGF5ZXI8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCi0gICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgRW5zdXJlIHlvdXIgZGlyZWN0b3J5IHN0cnVjdHVyZSBpbiB0aGUgQlNQIGxheWVyCi0gICAgICAgICAgICAgICAgICAgICAgIHRoYXQgc3VwcG9ydHMgeW91ciBtYWNoaW5lIGlzIHN1Y2ggdGhhdCBpdCBjYW4gYmUgZm91bmQKLSAgICAgICAgICAgICAgICAgICAgICAgYnkgdGhlIGJ1aWxkIHN5c3RlbS4KLSAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBleGFtcGxlIGxhdGVyIGluIHRoaXMgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICBQdXQgdGhlIGFwcGVuZCBmaWxlIGluIGEgZGlyZWN0b3J5IHdob3NlIG5hbWUgbWF0Y2hlcwotICAgICAgICAgICAgICAgICAgICAgICB0aGUgbWFjaGluZSdzIG5hbWUgYW5kIGlzIGxvY2F0ZWQgaW4gYW4gYXBwcm9wcmlhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgc3ViLWRpcmVjdG9yeSBpbnNpZGUgdGhlIEJTUCBsYXllciAoaS5lLgotICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy1ic3A8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPnJlY2lwZXMtZ3JhcGhpY3M8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMtY29yZTwvZmlsZW5hbWU+LCBhbmQgc28gZm9ydGgpLgotICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+UGxhY2UgdGhlIEJTUC1zcGVjaWZpYyBmaWxlcyBpbiB0aGUgcHJvcGVyIGRpcmVjdG9yeQotICAgICAgICAgICAgICAgICAgICAgICBpbnNpZGUgdGhlIEJTUCBsYXllci4KLSAgICAgICAgICAgICAgICAgICAgICAgSG93IGV4cGFuc2l2ZSB0aGUgbGF5ZXIgaXMgYWZmZWN0cyB3aGVyZSB5b3UgbXVzdCBwbGFjZSB0aGVzZSBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdXIgbGF5ZXIgc3VwcG9ydHMgc2V2ZXJhbCBkaWZmZXJlbnQgbWFjaGluZSB0eXBlcywKLSAgICAgICAgICAgICAgICAgICAgICAgeW91IG5lZWQgdG8gYmUgc3VyZSB5b3VyIGxheWVyJ3MgZGlyZWN0b3J5IHN0cnVjdHVyZSBpbmNsdWRlcyBoaWVyYXJjaHkKLSAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBzZXBhcmF0ZXMgdGhlIGZpbGVzIG91dCBhY2NvcmRpbmcgdG8gbWFjaGluZS4KLSAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBsYXllciBkb2VzIG5vdCBzdXBwb3J0IG11bHRpcGxlIG1hY2hpbmVzLCB0aGUgbGF5ZXIgd291bGQgbm90Ci0gICAgICAgICAgICAgICAgICAgICAgIGhhdmUgdGhhdCBhZGRpdGlvbmFsIGhpZXJhcmNoeSBhbmQgdGhlIGZpbGVzIHdvdWxkIG9idmlvdXNseSBub3QgYmUKLSAgICAgICAgICAgICAgICAgICAgICAgYWJsZSB0byByZXNpZGUgaW4gYSBtYWNoaW5lLXNwZWNpZmljIGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgbmVlZCB0byBkaXN0cmlidXRlIGEgQlNQIGFuZCBpbmNsdWRlCisgICAgICAgICAgICAgICAgICAgIGJvb3RhYmxlIGltYWdlcyBvciBidWlsZCBrZXJuZWwgYW5kIGZpbGVzeXN0ZW1zCisgICAgICAgICAgICAgICAgICAgIG1lYW50IHRvIGFsbG93IHVzZXJzIHRvIGJvb3QgdGhlIEJTUCBmb3IgZXZhbHVhdGlvbgorICAgICAgICAgICAgICAgICAgICBwdXJwb3NlcywgeW91IHNob3VsZCBwdXQgdGhlIGltYWdlcyBhbmQgYXJ0aWZhY3RzCisgICAgICAgICAgICAgICAgICAgIHdpdGhpbiBhCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaW5hcnkvPC9maWxlbmFtZT4gc3ViZGlyZWN0b3J5IGxvY2F0ZWQKKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIGluY2x1ZGUgYSBib290YWJsZSBpbWFnZSBhcyBwYXJ0CisgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgQlNQIGFuZCB0aGUgaW1hZ2Ugd2FzIGJ1aWx0IGJ5IHNvZnR3YXJlCisgICAgICAgICAgICAgICAgICAgICAgICBjb3ZlcmVkIGJ5IHRoZSBHUEwgb3Igb3RoZXIgb3BlbiBzb3VyY2UgbGljZW5zZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBpdCBpcyB5b3VyIHJlc3BvbnNpYmlsaXR5IHRvIHVuZGVyc3RhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBtZWV0IGFsbCBsaWNlbnNpbmcgcmVxdWlyZW1lbnRzLCB3aGljaCBjb3VsZAorICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBkaXN0cmlidXRpb24gb2Ygc291cmNlIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVzZSBhIFlvY3RvIExpbnV4IEtlcm5lbDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBLZXJuZWwgcmVjaXBlcyBpbiB0aGUgQlNQIHNob3VsZCBiZSBiYXNlZCBvbiBhCisgICAgICAgICAgICAgICAgICAgIFlvY3RvIExpbnV4IGtlcm5lbC4KKyAgICAgICAgICAgICAgICAgICAgQmFzaW5nIHlvdXIgcmVjaXBlcyBvbiB0aGVzZSBrZXJuZWxzIHJlZHVjZXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIGNvc3RzIGZvciBtYWludGFpbmluZyB0aGUgQlNQIGFuZCBpbmNyZWFzZXMKKyAgICAgICAgICAgICAgICAgICAgaXRzIHNjYWxhYmlsaXR5LgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlIDxmaWxlbmFtZT5Zb2N0byBMaW51eCBLZXJuZWw8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgZm9yIHRoZXNlIGtlcm5lbHMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+CiAKLSAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYSBzcGVjaWZpYyBleGFtcGxlIHRvIGhlbHAgeW91IGJldHRlciB1bmRlcnN0YW5kIHRoZSBwcm9jZXNzLgotICAgICAgICAgICAgICAgQ29uc2lkZXIgYW4gZXhhbXBsZSB0aGF0IGN1c3RvbWl6ZXMgYSByZWNpcGUgYnkgYWRkaW5nCi0gICAgICAgICAgICAgICBhIEJTUC1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGUgbmFtZWQgPGZpbGVuYW1lPmludGVyZmFjZXM8L2ZpbGVuYW1lPiB0byB0aGUKLSAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbml0LWlmdXBkb3duXzEuMC5iYjwvZmlsZW5hbWU+IHJlY2lwZSBmb3IgbWFjaGluZSAieHl6IiB3aGVyZSB0aGUKLSAgICAgICAgICAgICAgIEJTUCBsYXllciBhbHNvIHN1cHBvcnRzIHNldmVyYWwgb3RoZXIgbWFjaGluZXMuCi0gICAgICAgICAgICAgICBEbyB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FZGl0IHRoZSA8ZmlsZW5hbWU+aW5pdC1pZnVwZG93bl8xLjAuYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlIHNvIHRoYXQgaXQKLSAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorPHNlY3Rpb24gaWQ9J2N1c3RvbWl6aW5nLWEtcmVjaXBlLWZvci1hLWJzcCc+CisgICAgPHRpdGxlPkN1c3RvbWl6aW5nIGEgUmVjaXBlIGZvciBhIEJTUDwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSWYgeW91IHBsYW4gb24gY3VzdG9taXppbmcgYSByZWNpcGUgZm9yIGEgcGFydGljdWxhciBCU1AsCisgICAgICAgIHlvdSBuZWVkIHRvIGRvIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgQ3JlYXRlIGEgPGZpbGVuYW1lPiouYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlIGZvcgorICAgICAgICAgICAgICAgIHRoZSBtb2RpZmllZCByZWNpcGUuCisgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHVzaW5nIGFwcGVuZCBmaWxlcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZy1iYmFwcGVuZC1maWxlcyc+VXNpbmcgLmJiYXBwZW5kIEZpbGVzIGluIFlvdXIgTGF5ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCisgICAgICAgICAgICAgICAgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIEVuc3VyZSB5b3VyIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgaW4gdGhlIEJTUCBsYXllcgorICAgICAgICAgICAgICAgIHRoYXQgc3VwcG9ydHMgeW91ciBtYWNoaW5lIGlzIHN1Y2ggdGhhdCB0aGUKKyAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNhbiBmaW5kIGl0LgorICAgICAgICAgICAgICAgIFNlZSB0aGUgZXhhbXBsZSBsYXRlciBpbiB0aGlzIHNlY3Rpb24gZm9yIG1vcmUKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBQdXQgdGhlIGFwcGVuZCBmaWxlIGluIGEgZGlyZWN0b3J5IHdob3NlIG5hbWUgbWF0Y2hlcworICAgICAgICAgICAgICAgIHRoZSBtYWNoaW5lJ3MgbmFtZSBhbmQgaXMgbG9jYXRlZCBpbiBhbiBhcHByb3ByaWF0ZQorICAgICAgICAgICAgICAgIHN1Yi1kaXJlY3RvcnkgaW5zaWRlIHRoZSBCU1AgbGF5ZXIgKGkuZS4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy1ic3A8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy1ncmFwaGljczwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLWNvcmU8L2ZpbGVuYW1lPiwgYW5kIHNvIGZvcnRoKS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBQbGFjZSB0aGUgQlNQLXNwZWNpZmljIGZpbGVzIGluIHRoZSBwcm9wZXIKKyAgICAgICAgICAgICAgICBkaXJlY3RvcnkgaW5zaWRlIHRoZSBCU1AgbGF5ZXIuCisgICAgICAgICAgICAgICAgSG93IGV4cGFuc2l2ZSB0aGUgbGF5ZXIgaXMgYWZmZWN0cyB3aGVyZSB5b3UgbXVzdAorICAgICAgICAgICAgICAgIHBsYWNlIHRoZXNlIGZpbGVzLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3VyIGxheWVyIHN1cHBvcnRzIHNldmVyYWwKKyAgICAgICAgICAgICAgICBkaWZmZXJlbnQgbWFjaGluZSB0eXBlcywgeW91IG5lZWQgdG8gYmUgc3VyZSB5b3VyCisgICAgICAgICAgICAgICAgbGF5ZXIncyBkaXJlY3Rvcnkgc3RydWN0dXJlIGluY2x1ZGVzIGhpZXJhcmNoeQorICAgICAgICAgICAgICAgIHRoYXQgc2VwYXJhdGVzIHRoZSBmaWxlcyBhY2NvcmRpbmcgdG8gbWFjaGluZS4KKyAgICAgICAgICAgICAgICBJZiB5b3VyIGxheWVyIGRvZXMgbm90IHN1cHBvcnQgbXVsdGlwbGUgbWFjaGluZXMsCisgICAgICAgICAgICAgICAgdGhlIGxheWVyIHdvdWxkIG5vdCBoYXZlIHRoYXQgYWRkaXRpb25hbCBoaWVyYXJjaHkKKyAgICAgICAgICAgICAgICBhbmQgdGhlIGZpbGVzIHdvdWxkIG9idmlvdXNseSBub3QgYmUgYWJsZSB0byByZXNpZGUKKyAgICAgICAgICAgICAgICBpbiBhIG1hY2hpbmUtc3BlY2lmaWMgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRm9sbG93aW5nIGlzIGEgc3BlY2lmaWMgZXhhbXBsZSB0byBoZWxwIHlvdSBiZXR0ZXIgdW5kZXJzdGFuZAorICAgICAgICB0aGUgcHJvY2Vzcy4KKyAgICAgICAgVGhpcyBleGFtcGxlIGN1c3RvbWl6ZXMgY3VzdG9taXplcyBhIHJlY2lwZSBieSBhZGRpbmcgYQorICAgICAgICBCU1Atc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmaWxlIG5hbWVkCisgICAgICAgIDxmaWxlbmFtZT5pbnRlcmZhY2VzPC9maWxlbmFtZT4gdG8gdGhlCisgICAgICAgIDxmaWxlbmFtZT5pbml0LWlmdXBkb3duXzEuMC5iYjwvZmlsZW5hbWU+IHJlY2lwZSBmb3IgbWFjaGluZQorICAgICAgICAieHl6IiB3aGVyZSB0aGUgQlNQIGxheWVyIGFsc28gc3VwcG9ydHMgc2V2ZXJhbCBvdGhlcgorICAgICAgICBtYWNoaW5lczoKKyAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIEVkaXQgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmluaXQtaWZ1cGRvd25fMS4wLmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgIHNvIHRoYXQgaXQgY29udGFpbnMgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIEZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLSAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICBUaGUgYXBwZW5kIGZpbGUgbmVlZHMgdG8gYmUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXh5ei9yZWNpcGVzLWNvcmUvaW5pdC1pZnVwZG93bjwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNyZWF0ZSBhbmQgcGxhY2UgdGhlIG5ldyA8ZmlsZW5hbWU+aW50ZXJmYWNlczwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiB0aGUgQlNQJ3MgbGF5ZXIgaGVyZToKLSAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgYXBwZW5kIGZpbGUgbmVlZHMgdG8gYmUgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEteHl6L3JlY2lwZXMtY29yZS9pbml0LWlmdXBkb3duPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgQ3JlYXRlIGFuZCBwbGFjZSB0aGUgbmV3CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmludGVyZmFjZXM8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUgaW4KKyAgICAgICAgICAgICAgICB0aGUgQlNQJ3MgbGF5ZXIgaGVyZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIG1ldGEteHl6L3JlY2lwZXMtY29yZS9pbml0LWlmdXBkb3duL2ZpbGVzL3h5ei1tYWNoaW5lLW9uZS9pbnRlcmZhY2VzCi0gICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgPGZpbGVuYW1lPm1ldGEteHl6PC9maWxlbmFtZT4gbGF5ZXIgZGlkIG5vdCBzdXBwb3J0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSBtYWNoaW5lcywgeW91IHdvdWxkIHBsYWNlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmludGVyZmFjZXM8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllciBoZXJlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhlIDxmaWxlbmFtZT5tZXRhLXh5ejwvZmlsZW5hbWU+IGxheWVyIGRpZAorICAgICAgICAgICAgICAgICAgICBub3Qgc3VwcG9ydCBtdWx0aXBsZSBtYWNoaW5lcywgeW91IHdvdWxkIHBsYWNlCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+aW50ZXJmYWNlczwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBpbiB0aGUgbGF5ZXIgaGVyZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBtZXRhLXh5ei9yZWNpcGVzLWNvcmUvaW5pdC1pZnVwZG93bi9maWxlcy9pbnRlcmZhY2VzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgVGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1GSUxFU0VYVFJBUEFUSFMnPjxmaWxlbmFtZT5GSUxFU0VYVFJBUEFUSFM8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHRoZSBhcHBlbmQgZmlsZXMgZXh0ZW5kcyB0aGUgc2VhcmNoIHBhdGgKLSAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIHN5c3RlbSB1c2VzIHRvIGZpbmQgZmlsZXMgZHVyaW5nIHRoZSBidWlsZC4KLSAgICAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCBmb3IgdGhpcyBleGFtcGxlIHlvdSBuZWVkIHRvIGhhdmUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5maWxlczwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpbiB0aGUgc2FtZSBsb2NhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICBhcyB5b3VyIGFwcGVuZCBmaWxlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdic3AtbGljZW5zaW5nLWNvbnNpZGVyYXRpb25zJz4KLSAgICAgICAgICAgIDx0aXRsZT5CU1AgTGljZW5zaW5nIENvbnNpZGVyYXRpb25zPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSW4gc29tZSBjYXNlcywgYSBCU1AgY29udGFpbnMgc2VwYXJhdGVseSBsaWNlbnNlZCBJbnRlbGxlY3R1YWwgUHJvcGVydHkgKElQKQotICAgICAgICAgICAgICAgIGZvciBhIGNvbXBvbmVudCBvciBjb21wb25lbnRzLgotICAgICAgICAgICAgICAgIEZvciB0aGVzZSBjYXNlcywgeW91IGFyZSByZXF1aXJlZCB0byBhY2NlcHQgdGhlIHRlcm1zIG9mIGEgY29tbWVyY2lhbCBvciBvdGhlcgotICAgICAgICAgICAgICAgIHR5cGUgb2YgbGljZW5zZSB0aGF0IHJlcXVpcmVzIHNvbWUga2luZCBvZiBleHBsaWNpdCBFbmQgVXNlciBMaWNlbnNlIEFncmVlbWVudCAoRVVMQSkuCi0gICAgICAgICAgICAgICAgT25jZSB0aGUgbGljZW5zZSBpcyBhY2NlcHRlZCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY2FuIHRoZW4gYnVpbGQgYW5kCi0gICAgICAgICAgICAgICAgaW5jbHVkZSB0aGUgY29ycmVzcG9uZGluZyBjb21wb25lbnQgaW4gdGhlIGZpbmFsIEJTUCBpbWFnZS4KLSAgICAgICAgICAgICAgICBJZiB0aGUgQlNQIGlzIGF2YWlsYWJsZSBhcyBhIHByZS1idWlsdCBpbWFnZSwgeW91IGNhbiBkb3dubG9hZCB0aGUgaW1hZ2UgYWZ0ZXIKLSAgICAgICAgICAgICAgICBhZ3JlZWluZyB0byB0aGUgbGljZW5zZSBvciBFVUxBLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBZb3UgY291bGQgZmluZCB0aGF0IHNvbWUgc2VwYXJhdGVseSBsaWNlbnNlZCBjb21wb25lbnRzIHRoYXQgYXJlIGVzc2VudGlhbAotICAgICAgICAgICAgICAgIGZvciBub3JtYWwgb3BlcmF0aW9uIG9mIHRoZSBzeXN0ZW0gbWlnaHQgbm90IGhhdmUgYW4gdW5lbmN1bWJlcmVkIChvciBmcmVlKQotICAgICAgICAgICAgICAgIHN1YnN0aXR1dGUuCi0gICAgICAgICAgICAgICAgV2l0aG91dCB0aGVzZSBlc3NlbnRpYWwgY29tcG9uZW50cywgdGhlIHN5c3RlbSB3b3VsZCBiZSBub24tZnVuY3Rpb25hbC4KLSAgICAgICAgICAgICAgICBUaGVuIGFnYWluLCB5b3UgbWlnaHQgZmluZCB0aGF0IG90aGVyIGxpY2Vuc2VkIGNvbXBvbmVudHMgdGhhdCBhcmUgc2ltcGx5Ci0gICAgICAgICAgICAgICAgJ2dvb2QtdG8taGF2ZScgb3IgcHVyZWx5IGVsZWN0aXZlIGRvIGhhdmUgYW4gdW5lbmN1bWJlcmVkLCBmcmVlIHJlcGxhY2VtZW50Ci0gICAgICAgICAgICAgICAgY29tcG9uZW50IHRoYXQgeW91IGNhbiB1c2UgcmF0aGVyIHRoYW4gYWdyZWVpbmcgdG8gdGhlIHNlcGFyYXRlbHkgbGljZW5zZWQgY29tcG9uZW50LgotICAgICAgICAgICAgICAgIEV2ZW4gZm9yIGNvbXBvbmVudHMgZXNzZW50aWFsIHRvIHRoZSBzeXN0ZW0sIHlvdSBtaWdodCBmaW5kIGFuIHVuZW5jdW1iZXJlZCBjb21wb25lbnQKLSAgICAgICAgICAgICAgICB0aGF0IGlzIG5vdCBpZGVudGljYWwgYnV0IHdpbGwgd29yayBhcyBhIGxlc3MtY2FwYWJsZSB2ZXJzaW9uIG9mIHRoZQotICAgICAgICAgICAgICAgIGxpY2Vuc2VkIHZlcnNpb24gaW4gdGhlIEJTUCByZWNpcGUuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEZvciBjYXNlcyB3aGVyZSB5b3UgY2FuIHN1YnN0aXR1dGUgYSBmcmVlIGNvbXBvbmVudCBhbmQgc3RpbGwKLSAgICAgICAgICAgICAgICBtYWludGFpbiB0aGUgc3lzdGVtJ3MgZnVuY3Rpb25hbGl0eSwgdGhlICJEb3dubG9hZHMiIHBhZ2UgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IHdlYnNpdGUnczwvdWxpbms+Ci0gICAgICAgICAgICAgICAgbWFrZXMgYXZhaWxhYmxlIGRlLWZlYXR1cmVkIEJTUHMKLSAgICAgICAgICAgICAgICB0aGF0IGFyZSBjb21wbGV0ZWx5IGZyZWUgb2YgYW55IElQIGVuY3VtYnJhbmNlcy4KLSAgICAgICAgICAgICAgICBGb3IgdGhlc2UgY2FzZXMsIHlvdSBjYW4gdXNlIHRoZSBzdWJzdGl0dXRpb24gZGlyZWN0bHkgYW5kCi0gICAgICAgICAgICAgICAgd2l0aG91dCBhbnkgZnVydGhlciBsaWNlbnNpbmcgcmVxdWlyZW1lbnRzLgotICAgICAgICAgICAgICAgIElmIHByZXNlbnQsIHRoZXNlIGZ1bGx5IGRlLWZlYXR1cmVkIEJTUHMgYXJlIG5hbWVkIGFwcHJvcHJpYXRlbHkKLSAgICAgICAgICAgICAgICBkaWZmZXJlbnQgYXMgY29tcGFyZWQgdG8gdGhlIG5hbWVzIG9mIHRoZSByZXNwZWN0aXZlCi0gICAgICAgICAgICAgICAgZW5jdW1iZXJlZCBCU1BzLgotICAgICAgICAgICAgICAgIElmIGF2YWlsYWJsZSwgdGhlc2Ugc3Vic3RpdHV0aW9ucyBhcmUgeW91cgotICAgICAgICAgICAgICAgIHNpbXBsZXN0IGFuZCBtb3N0IHByZWZlcnJlZCBvcHRpb25zLgotICAgICAgICAgICAgICAgIFVzZSBvZiB0aGVzZSBzdWJzdGl0dXRpb25zIG9mIGNvdXJzZSBhc3N1bWVzIHRoZSByZXN1bHRpbmcgZnVuY3Rpb25hbGl0eSBtZWV0cwotICAgICAgICAgICAgICAgIHN5c3RlbSByZXF1aXJlbWVudHMuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIElmIGhvd2V2ZXIsIGEgbm9uLWVuY3VtYmVyZWQgdmVyc2lvbiBpcyB1bmF2YWlsYWJsZSBvcgotICAgICAgICAgICAgICAgIGl0IHByb3ZpZGVzIHVuc3VpdGFibGUgZnVuY3Rpb25hbGl0eSBvciBxdWFsaXR5LCB5b3UgY2FuIHVzZSBhbiBlbmN1bWJlcmVkCi0gICAgICAgICAgICAgICAgdmVyc2lvbi4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQSBjb3VwbGUgZGlmZmVyZW50IG1ldGhvZHMgZXhpc3Qgd2l0aGluIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvCi0gICAgICAgICAgICAgICAgc2F0aXNmeSB0aGUgbGljZW5zaW5nIHJlcXVpcmVtZW50cyBmb3IgYW4gZW5jdW1iZXJlZCBCU1AuCi0gICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IGRlc2NyaWJlcyB0aGVtIGluIG9yZGVyIG9mIHByZWZlcmVuY2U6Ci0JICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VXNlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJQ0VOU0VfRkxBR1MnPjxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gZGVmaW5lIHRoZSByZWNpcGVzIHRoYXQgaGF2ZSBjb21tZXJjaWFsIG9yIG90aGVyCi0gICAgICAgICAgICAgICAgICAgICAgICB0eXBlcyBvZiBzcGVjaWFsbHktbGljZW5zZWQgcGFja2FnZXM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBlYWNoIG9mIHRob3NlIHJlY2lwZXMsIHlvdSBjYW4KLSAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgYSBtYXRjaGluZyBsaWNlbnNlIHN0cmluZyBpbiBhCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IHZhcmlhYmxlIG5hbWVkCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTElDRU5TRV9GTEFHU19XSElURUxJU1QnPjxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTX1dISVRFTElTVDwvZmlsZW5hbWU+PC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZ5aW5nIHRoZSBtYXRjaGluZyBsaWNlbnNlIHN0cmluZyBzaWduaWZpZXMgdGhhdCB5b3UgYWdyZWUgdG8gdGhlIGxpY2Vuc2UuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaHVzLCB0aGUgYnVpbGQgc3lzdGVtIGNhbiBidWlsZCB0aGUgY29ycmVzcG9uZGluZyByZWNpcGUgYW5kIGluY2x1ZGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb21wb25lbnQgaW4gdGhlIGltYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2VuYWJsaW5nLWNvbW1lcmNpYWxseS1saWNlbnNlZC1yZWNpcGVzJz5FbmFibGluZwotICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWVyY2lhbGx5IExpY2Vuc2VkIFJlY2lwZXM8L3VsaW5rPiIgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UKLSAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbCBmb3IgZGV0YWlscyBvbiBob3cgdG8gdXNlIHRoZXNlIHZhcmlhYmxlcy48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgYnVpbGQgYXMgeW91IG5vcm1hbGx5IHdvdWxkLCB3aXRob3V0Ci0JCSAgICAgICAgc3BlY2lmeWluZyBhbnkgcmVjaXBlcyBpbiB0aGUKLQkJICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHU19XSElURUxJU1Q8L2ZpbGVuYW1lPiwgdGhlIGJ1aWxkIHN0b3BzIGFuZAotCQkgICAgICAgIHByb3ZpZGVzIHlvdSB3aXRoIHRoZSBsaXN0IG9mIHJlY2lwZXMgdGhhdCB5b3UgaGF2ZQotCQkgICAgICAgIHRyaWVkIHRvIGluY2x1ZGUgaW4gdGhlIGltYWdlIHRoYXQgbmVlZCBlbnRyaWVzIGluCi0JCSAgICAgICAgdGhlIDxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTX1dISVRFTElTVDwvZmlsZW5hbWU+LgotCQkgICAgICAgIE9uY2UgeW91IGVudGVyIHRoZSBhcHByb3ByaWF0ZSBsaWNlbnNlIGZsYWdzIGludG8gdGhlIHdoaXRlbGlzdCwKLQkJICAgICAgICByZXN0YXJ0IHRoZSBidWlsZCB0byBjb250aW51ZSB3aGVyZSBpdCBsZWZ0IG9mZi4KLQkJICAgICAgICBEdXJpbmcgdGhlIGJ1aWxkLCB0aGUgcHJvbXB0IHdpbGwgbm90IGFwcGVhciBhZ2FpbgotCQkgICAgICAgIHNpbmNlIHlvdSBoYXZlIHNhdGlzZmllZCB0aGUgcmVxdWlyZW1lbnQuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+T25jZSB0aGUgYXBwcm9wcmlhdGUgbGljZW5zZSBmbGFncyBhcmUgb24gdGhlIHdoaXRlIGxpc3QKLQkJICAgICAgICBpbiB0aGUgPGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUPC9maWxlbmFtZT4gdmFyaWFibGUsIHlvdQotCQkgICAgICAgIGNhbiBidWlsZCB0aGUgZW5jdW1iZXJlZCBpbWFnZSB3aXRoIG5vIGNoYW5nZSBhdCBhbGwKLQkJICAgICAgICB0byB0aGUgbm9ybWFsIGJ1aWxkIHByb2Nlc3MuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+R2V0IGEgcHJlLWJ1aWx0IHZlcnNpb24gb2YgdGhlIEJTUDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBnZXQgdGhpcyB0eXBlIG9mIEJTUCBieSB2aXNpdGluZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICJEb3dubG9hZHMiIHBhZ2Ugb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IHdlYnNpdGU8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZG93bmxvYWQgQlNQIHRhcmJhbGxzIHRoYXQgY29udGFpbiBwcm9wcmlldGFyeSBjb21wb25lbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICBhZnRlciBhZ3JlZWluZyB0byB0aGUgbGljZW5zaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlbWVudHMgb2YgZWFjaCBvZiB0aGUgaW5kaXZpZHVhbGx5IGVuY3VtYmVyZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIGFzIHBhcnQgb2YgdGhlIGRvd25sb2FkIHByb2Nlc3MuCi0gICAgICAgICAgICAgICAgICAgICAgICBPYnRhaW5pbmcgdGhlIEJTUCB0aGlzIHdheSBhbGxvd3MgeW91IHRvIGFjY2VzcyBhbiBlbmN1bWJlcmVkCi0gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSBpbW1lZGlhdGVseSBhZnRlciBhZ3JlZWluZyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrLXRocm91Z2ggbGljZW5zZSBhZ3JlZW1lbnRzIHByZXNlbnRlZCBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHdlYnNpdGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBOb3RlIHRoYXQgaWYgeW91IHdhbnQgdG8gYnVpbGQgdGhlIGltYWdlCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3Vyc2VsZiB1c2luZyB0aGUgcmVjaXBlcyBjb250YWluZWQgd2l0aGluIHRoZSBCU1AKLSAgICAgICAgICAgICAgICAgICAgICAgIHRhcmJhbGwsIHlvdSB3aWxsIHN0aWxsIG5lZWQgdG8gY3JlYXRlIGFuCi0gICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZSA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHU19XSElURUxJU1Q8L2ZpbGVuYW1lPiB0byBtYXRjaCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuY3VtYmVyZWQgcmVjaXBlcyBpbiB0aGUgQlNQLjwvcGFyYT48L2xpc3RpdGVtPgotCSAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgUHJlLWNvbXBpbGVkIGltYWdlcyBhcmUgYnVuZGxlZCB3aXRoCi0gICAgICAgICAgICAgICAgYSB0aW1lLWxpbWl0ZWQga2VybmVsIHRoYXQgcnVucyBmb3IgYQotICAgICAgICAgICAgICAgIHByZWRldGVybWluZWQgYW1vdW50IG9mIHRpbWUgKDEwIGRheXMpIGJlZm9yZSBpdCBmb3JjZXMKLSAgICAgICAgICAgICAgICB0aGUgc3lzdGVtIHRvIHJlYm9vdC4KLSAgICAgICAgICAgICAgICBUaGlzIGxpbWl0YXRpb24gaXMgbWVhbnQgdG8gZGlzY291cmFnZSBkaXJlY3QgcmVkaXN0cmlidXRpb24KLSAgICAgICAgICAgICAgICBvZiB0aGUgaW1hZ2UuCi0gICAgICAgICAgICAgICAgWW91IG11c3QgZXZlbnR1YWxseSByZWJ1aWxkIHRoZSBpbWFnZSBpZiB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyByZXN0cmljdGlvbi4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSd1c2luZy10aGUteW9jdG8tcHJvamVjdHMtYnNwLXRvb2xzJz4KLSAgICAgICAgICAgIDx0aXRsZT5Vc2luZyB0aGUgWW9jdG8gUHJvamVjdCdzIEJTUCBUb29sczwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGluY2x1ZGVzIGEgY291cGxlIG9mIHRvb2xzIHRoYXQgZW5hYmxlCi0gICAgICAgICAgICAgICAgeW91IHRvIGNyZWF0ZSBhIDxsaW5rIGxpbmtlbmQ9J2JzcC1sYXllcnMnPkJTUCBsYXllcjwvbGluaz4KLSAgICAgICAgICAgICAgICBmcm9tIHNjcmF0Y2ggYW5kIGRvIGJhc2ljIGNvbmZpZ3VyYXRpb24gYW5kIG1haW50ZW5hbmNlCi0gICAgICAgICAgICAgICAgb2YgdGhlIGtlcm5lbCB3aXRob3V0IGV2ZXIgbG9va2luZyBhdCBhIE1ldGFkYXRhIGZpbGUuCi0gICAgICAgICAgICAgICAgVGhlc2UgdG9vbHMgYXJlIDxmaWxlbmFtZT55b2N0by1ic3A8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbDwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIHJlc3BlY3RpdmVseS4KLQkgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHNlY3Rpb25zIGRlc2NyaWJlIHRoZSBjb21tb24gbG9jYXRpb24gYW5kIGhlbHAgZmVhdHVyZXMgYXMgd2VsbAotICAgICAgICAgICAgICAgIGFzIHByb3ZpZGUgZGV0YWlscyBmb3IgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWJzcDwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsPC9maWxlbmFtZT4gdG9vbHMuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdjb21tb24tZmVhdHVyZXMnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5Db21tb24gRmVhdHVyZXM8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIERlc2lnbmVkIHRvIGhhdmUgYSAgY29tbWFuZCBpbnRlcmZhY2Ugc29tZXdoYXQgbGlrZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNnaXQnPkdpdDwvdWxpbms+LCBlYWNoCi0gICAgICAgICAgICAgICAgICAgIHRvb2wgaXMgc3RydWN0dXJlZCBhcyBhIHNldCBvZiBzdWItY29tbWFuZHMgdW5kZXIgYQotICAgICAgICAgICAgICAgICAgICB0b3AtbGV2ZWwgY29tbWFuZC4KLSAgICAgICAgICAgICAgICAgICAgVGhlIHRvcC1sZXZlbCBjb21tYW5kICg8ZmlsZW5hbWU+eW9jdG8tYnNwPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgb3IgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbDwvZmlsZW5hbWU+KSBpdHNlbGYgZG9lcwotICAgICAgICAgICAgICAgICAgICBub3RoaW5nIGJ1dCBpbnZva2Ugb3IgcHJvdmlkZSBoZWxwIG9uIHRoZSBzdWItY29tbWFuZHMKLSAgICAgICAgICAgICAgICAgICAgaXQgc3VwcG9ydHMuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEJvdGggdG9vbHMgcmVzaWRlIGluIHRoZSA8ZmlsZW5hbWU+c2NyaXB0cy88L2ZpbGVuYW1lPiBzdWJkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICAgICAgb2YgdGhlIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB0byB1c2UgdGhlIHNjcmlwdHMsIHlvdSBtdXN0IDxmaWxlbmFtZT5zb3VyY2U8L2ZpbGVuYW1lPiB0aGUKLSAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQganVzdCBhcyB5b3Ugd291bGQgd2hlbiBpbnZva2luZyBhIGJ1aWxkOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc291cmNlIG9lLWluaXQtYnVpbGQtZW52IDxyZXBsYWNlYWJsZT5idWlsZF9kaXI8L3JlcGxhY2VhYmxlPgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1GSUxFU0VYVFJBUEFUSFMnPjxmaWxlbmFtZT5GSUxFU0VYVFJBUEFUSFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gdGhlIGFwcGVuZCBmaWxlcyBleHRlbmRzIHRoZSBzZWFyY2ggcGF0aAorICAgICAgICAgICAgICAgIHRoZSBidWlsZCBzeXN0ZW0gdXNlcyB0byBmaW5kIGZpbGVzIGR1cmluZyB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCBmb3IgdGhpcyBleGFtcGxlIHlvdSBuZWVkIHRvIGhhdmUgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZpbGVzPC9maWxlbmFtZT4gZGlyZWN0b3J5IGluIHRoZSBzYW1lCisgICAgICAgICAgICAgICAgbG9jYXRpb24gYXMgeW91ciBhcHBlbmQgZmlsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J2JzcC1saWNlbnNpbmctY29uc2lkZXJhdGlvbnMnPgorICAgIDx0aXRsZT5CU1AgTGljZW5zaW5nIENvbnNpZGVyYXRpb25zPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBJbiBzb21lIGNhc2VzLCBhIEJTUCBjb250YWlucyBzZXBhcmF0ZWx5IGxpY2Vuc2VkCisgICAgICAgIEludGVsbGVjdHVhbCBQcm9wZXJ0eSAoSVApIGZvciBhIGNvbXBvbmVudCBvciBjb21wb25lbnRzLgorICAgICAgICBGb3IgdGhlc2UgY2FzZXMsIHlvdSBhcmUgcmVxdWlyZWQgdG8gYWNjZXB0IHRoZSB0ZXJtcworICAgICAgICBvZiBhIGNvbW1lcmNpYWwgb3Igb3RoZXIgdHlwZSBvZiBsaWNlbnNlIHRoYXQgcmVxdWlyZXMKKyAgICAgICAgc29tZSBraW5kIG9mIGV4cGxpY2l0IEVuZCBVc2VyIExpY2Vuc2UgQWdyZWVtZW50IChFVUxBKS4KKyAgICAgICAgT25jZSB5b3UgYWNjZXB0IHRoZSBsaWNlbnNlLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICBjYW4gdGhlbiBidWlsZCBhbmQgaW5jbHVkZSB0aGUgY29ycmVzcG9uZGluZyBjb21wb25lbnQKKyAgICAgICAgaW4gdGhlIGZpbmFsIEJTUCBpbWFnZS4KKyAgICAgICAgSWYgdGhlIEJTUCBpcyBhdmFpbGFibGUgYXMgYSBwcmUtYnVpbHQgaW1hZ2UsIHlvdSBjYW4KKyAgICAgICAgZG93bmxvYWQgdGhlIGltYWdlIGFmdGVyIGFncmVlaW5nIHRvIHRoZSBsaWNlbnNlIG9yIEVVTEEuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFlvdSBjb3VsZCBmaW5kIHRoYXQgc29tZSBzZXBhcmF0ZWx5IGxpY2Vuc2VkIGNvbXBvbmVudHMKKyAgICAgICAgdGhhdCBhcmUgZXNzZW50aWFsIGZvciBub3JtYWwgb3BlcmF0aW9uIG9mIHRoZSBzeXN0ZW0gbWlnaHQKKyAgICAgICAgbm90IGhhdmUgYW4gdW5lbmN1bWJlcmVkIChvciBmcmVlKSBzdWJzdGl0dXRlLgorICAgICAgICBXaXRob3V0IHRoZXNlIGVzc2VudGlhbCBjb21wb25lbnRzLCB0aGUgc3lzdGVtIHdvdWxkIGJlCisgICAgICAgIG5vbi1mdW5jdGlvbmFsLgorICAgICAgICBUaGVuIGFnYWluLCB5b3UgbWlnaHQgZmluZCB0aGF0IG90aGVyIGxpY2Vuc2VkIGNvbXBvbmVudHMKKyAgICAgICAgdGhhdCBhcmUgc2ltcGx5ICdnb29kLXRvLWhhdmUnIG9yIHB1cmVseSBlbGVjdGl2ZSBkbyBoYXZlCisgICAgICAgIGFuIHVuZW5jdW1iZXJlZCwgZnJlZSByZXBsYWNlbWVudCBjb21wb25lbnQgdGhhdCB5b3UgY2FuCisgICAgICAgIHVzZSByYXRoZXIgdGhhbiBhZ3JlZWluZyB0byB0aGUgc2VwYXJhdGVseSBsaWNlbnNlZAorICAgICAgICBjb21wb25lbnQuCisgICAgICAgIEV2ZW4gZm9yIGNvbXBvbmVudHMgZXNzZW50aWFsIHRvIHRoZSBzeXN0ZW0sIHlvdSBtaWdodAorICAgICAgICBmaW5kIGFuIHVuZW5jdW1iZXJlZCBjb21wb25lbnQgdGhhdCBpcyBub3QgaWRlbnRpY2FsIGJ1dAorICAgICAgICB3aWxsIHdvcmsgYXMgYSBsZXNzLWNhcGFibGUgdmVyc2lvbiBvZiB0aGUgbGljZW5zZWQgdmVyc2lvbgorICAgICAgICBpbiB0aGUgQlNQIHJlY2lwZS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRm9yIGNhc2VzIHdoZXJlIHlvdSBjYW4gc3Vic3RpdHV0ZSBhIGZyZWUgY29tcG9uZW50IGFuZAorICAgICAgICBzdGlsbCBtYWludGFpbiB0aGUgc3lzdGVtJ3MgZnVuY3Rpb25hbGl0eSwgdGhlICJET1dOTE9BRFMiCisgICAgICAgIHNlbGVjdGlvbiBmcm9tIHRoZSAiU09GVFdBUkUiIHRhYiBvbiB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdCB3ZWJzaXRlPC91bGluaz4KKyAgICAgICAgbWFrZXMgYXZhaWxhYmxlIGRlLWZlYXR1cmVkIEJTUHMgdGhhdCBhcmUgY29tcGxldGVseSBmcmVlCisgICAgICAgIG9mIGFueSBJUCBlbmN1bWJyYW5jZXMuCisgICAgICAgIEZvciB0aGVzZSBjYXNlcywgeW91IGNhbiB1c2UgdGhlIHN1YnN0aXR1dGlvbiBkaXJlY3RseSBhbmQKKyAgICAgICAgd2l0aG91dCBhbnkgZnVydGhlciBsaWNlbnNpbmcgcmVxdWlyZW1lbnRzLgorICAgICAgICBJZiBwcmVzZW50LCB0aGVzZSBmdWxseSBkZS1mZWF0dXJlZCBCU1BzIGFyZSBuYW1lZAorICAgICAgICBhcHByb3ByaWF0ZWx5IGRpZmZlcmVudCBhcyBjb21wYXJlZCB0byB0aGUgbmFtZXMgb2YgdGhlaXIKKyAgICAgICAgcmVzcGVjdGl2ZSBlbmN1bWJlcmVkIEJTUHMuCisgICAgICAgIElmIGF2YWlsYWJsZSwgdGhlc2Ugc3Vic3RpdHV0aW9ucyBhcmUgeW91ciBzaW1wbGVzdCBhbmQKKyAgICAgICAgbW9zdCBwcmVmZXJyZWQgb3B0aW9ucy4KKyAgICAgICAgT2J2aW91c2x5LCB1c2Ugb2YgdGhlc2Ugc3Vic3RpdHV0aW9ucyBhc3N1bWVzIHRoZSByZXN1bHRpbmcKKyAgICAgICAgZnVuY3Rpb25hbGl0eSBtZWV0cyBzeXN0ZW0gcmVxdWlyZW1lbnRzLgorICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIElmIGhvd2V2ZXIsIGEgbm9uLWVuY3VtYmVyZWQgdmVyc2lvbiBpcyB1bmF2YWlsYWJsZSBvcgorICAgICAgICAgICAgaXQgcHJvdmlkZXMgdW5zdWl0YWJsZSBmdW5jdGlvbmFsaXR5IG9yIHF1YWxpdHksIHlvdSBjYW4KKyAgICAgICAgICAgIHVzZSBhbiBlbmN1bWJlcmVkIHZlcnNpb24uCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgQSBjb3VwbGUgZGlmZmVyZW50IG1ldGhvZHMgZXhpc3Qgd2l0aGluIHRoZSBPcGVuRW1iZWRkZWQKKyAgICAgICAgYnVpbGQgc3lzdGVtIHRvIHNhdGlzZnkgdGhlIGxpY2Vuc2luZyByZXF1aXJlbWVudHMgZm9yIGFuCisgICAgICAgIGVuY3VtYmVyZWQgQlNQLgorICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgZGVzY3JpYmVzIHRoZW0gaW4gb3JkZXIgb2YgcHJlZmVyZW5jZToKKyAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Vc2UgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJQ0VOU0VfRkxBR1MnPjxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIFZhcmlhYmxlIHRvIERlZmluZSB0aGUgUmVjaXBlcyB0aGF0IEhhdmUgQ29tbWVyY2lhbAorICAgICAgICAgICAgICAgIG9yIE90aGVyIFR5cGVzIG9mIFNwZWNpYWxseS1MaWNlbnNlZCBQYWNrYWdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEZvciBlYWNoIG9mIHRob3NlIHJlY2lwZXMsIHlvdSBjYW4gc3BlY2lmeSBhCisgICAgICAgICAgICAgICAgbWF0Y2hpbmcgbGljZW5zZSBzdHJpbmcgaW4gYQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gdmFyaWFibGUgbmFtZWQKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTElDRU5TRV9GTEFHU19XSElURUxJU1QnPjxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTX1dISVRFTElTVDwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgU3BlY2lmeWluZyB0aGUgbWF0Y2hpbmcgbGljZW5zZSBzdHJpbmcgc2lnbmlmaWVzCisgICAgICAgICAgICAgICAgdGhhdCB5b3UgYWdyZWUgdG8gdGhlIGxpY2Vuc2UuCisgICAgICAgICAgICAgICAgVGh1cywgdGhlIGJ1aWxkIHN5c3RlbSBjYW4gYnVpbGQgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICByZWNpcGUgYW5kIGluY2x1ZGUgdGhlIGNvbXBvbmVudCBpbiB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNlbmFibGluZy1jb21tZXJjaWFsbHktbGljZW5zZWQtcmVjaXBlcyc+RW5hYmxpbmcgQ29tbWVyY2lhbGx5IExpY2Vuc2VkIFJlY2lwZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCisgICAgICAgICAgICAgICAgTWFudWFsIGZvciBkZXRhaWxzIG9uIGhvdyB0byB1c2UgdGhlc2UgdmFyaWFibGVzLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGUgbW9zdCBpbW1lZGlhdGVseSB1c2VmdWwgZnVuY3Rpb24gaXMgdG8gZ2V0IGhlbHAgb24gYm90aCB0b29scy4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWx0LWluIGhlbHAgc3lzdGVtIG1ha2VzIGl0IGVhc3kgdG8gZHJpbGwgZG93biBhdAotICAgICAgICAgICAgICAgICAgICBhbnkgdGltZSBhbmQgdmlldyB0aGUgc3ludGF4IHJlcXVpcmVkIGZvciBhbnkgc3BlY2lmaWMgY29tbWFuZC4KLSAgICAgICAgICAgICAgICAgICAgU2ltcGx5IGVudGVyIHRoZSBuYW1lIG9mIHRoZSBjb21tYW5kIHdpdGggdGhlIDxmaWxlbmFtZT5oZWxwPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgeW9jdG8tYnNwIGhlbHAKLSAgICAgVXNhZ2U6CisgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IGJ1aWxkIGFzIHlvdSBub3JtYWxseSB3b3VsZCwgd2l0aG91dAorCSAgICAgICAgc3BlY2lmeWluZyBhbnkgcmVjaXBlcyBpbiB0aGUKKwkgICAgICAgIDxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTX1dISVRFTElTVDwvZmlsZW5hbWU+LCB0aGUKKyAgICAgICAgICAgICAgICBidWlsZCBzdG9wcyBhbmQgcHJvdmlkZXMgeW91IHdpdGggdGhlIGxpc3Qgb2YgcmVjaXBlcworICAgICAgICAgICAgICAgIHRoYXQgeW91IGhhdmUgdHJpZWQgdG8gaW5jbHVkZSBpbiB0aGUgaW1hZ2UgdGhhdAorICAgICAgICAgICAgICAgIG5lZWQgZW50cmllcyBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHU19XSElURUxJU1Q8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBPbmNlIHlvdSBlbnRlciB0aGUgYXBwcm9wcmlhdGUgbGljZW5zZSBmbGFncyBpbnRvCisgICAgICAgICAgICAgICAgdGhlIHdoaXRlbGlzdCwgcmVzdGFydCB0aGUgYnVpbGQgdG8gY29udGludWUgd2hlcmUKKyAgICAgICAgICAgICAgICBpdCBsZWZ0IG9mZi4KKwkgICAgICAgIER1cmluZyB0aGUgYnVpbGQsIHRoZSBwcm9tcHQgd2lsbCBub3QgYXBwZWFyIGFnYWluCisJICAgICAgICBzaW5jZSB5b3UgaGF2ZSBzYXRpc2ZpZWQgdGhlIHJlcXVpcmVtZW50LjwvcGFyYT4KIAotICAgICAgQ3JlYXRlIGEgY3VzdG9taXplZCBZb2N0byBCU1AgbGF5ZXIuCisgICAgICAgICAgICAgICAgPHBhcmE+T25jZSB0aGUgYXBwcm9wcmlhdGUgbGljZW5zZSBmbGFncyBhcmUgb24gdGhlCisgICAgICAgICAgICAgICAgd2hpdGUgbGlzdCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHU19XSElURUxJU1Q8L2ZpbGVuYW1lPiB2YXJpYWJsZSwKKyAgICAgICAgICAgICAgICB5b3UgY2FuIGJ1aWxkIHRoZSBlbmN1bWJlcmVkIGltYWdlIHdpdGggbm8gY2hhbmdlCisgICAgICAgICAgICAgICAgYXQgYWxsIHRvIHRoZSBub3JtYWwgYnVpbGQgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+R2V0IGEgUHJlLUJ1aWx0IFZlcnNpb24gb2YgdGhlIEJTUDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZ2V0IHRoaXMgdHlwZSBvZiBCU1AgYnkgc2VsZWN0aW5nIHRoZQorICAgICAgICAgICAgICAgICJET1dOTE9BRFMiIGl0ZW0gZnJvbSB0aGUgIlNPRlRXQVJFIiB0YWIgb24gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdCB3ZWJzaXRlPC91bGluaz4uCisgICAgICAgICAgICAgICAgWW91IGNhbiBkb3dubG9hZCBCU1AgdGFyYmFsbHMgdGhhdCBjb250YWluCisgICAgICAgICAgICAgICAgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBhZnRlciBhZ3JlZWluZyB0byB0aGUKKyAgICAgICAgICAgICAgICBsaWNlbnNpbmcgcmVxdWlyZW1lbnRzIG9mIGVhY2ggb2YgdGhlIGluZGl2aWR1YWxseQorICAgICAgICAgICAgICAgIGVuY3VtYmVyZWQgcGFja2FnZXMgYXMgcGFydCBvZiB0aGUgZG93bmxvYWQgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICBPYnRhaW5pbmcgdGhlIEJTUCB0aGlzIHdheSBhbGxvd3MgeW91IHRvIGFjY2VzcyBhbgorICAgICAgICAgICAgICAgIGVuY3VtYmVyZWQgaW1hZ2UgaW1tZWRpYXRlbHkgYWZ0ZXIgYWdyZWVpbmcgdG8gdGhlCisgICAgICAgICAgICAgICAgY2xpY2stdGhyb3VnaCBsaWNlbnNlIGFncmVlbWVudHMgcHJlc2VudGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgIHdlYnNpdGUuCisgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gYnVpbGQgdGhlIGltYWdlIHlvdXJzZWxmIHVzaW5nCisgICAgICAgICAgICAgICAgdGhlIHJlY2lwZXMgY29udGFpbmVkIHdpdGhpbiB0aGUgQlNQIHRhcmJhbGwsCisgICAgICAgICAgICAgICAgeW91IHdpbGwgc3RpbGwgbmVlZCB0byBjcmVhdGUgYW4gYXBwcm9wcmlhdGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHU19XSElURUxJU1Q8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHRvIG1hdGNoIHRoZSBlbmN1bWJlcmVkIHJlY2lwZXMgaW4gdGhlIEJTUC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBQcmUtY29tcGlsZWQgaW1hZ2VzIGFyZSBidW5kbGVkIHdpdGggYSB0aW1lLWxpbWl0ZWQKKyAgICAgICAgICAgIGtlcm5lbCB0aGF0IHJ1bnMgZm9yIGEgcHJlZGV0ZXJtaW5lZCBhbW91bnQgb2YgdGltZQorICAgICAgICAgICAgKDEwIGRheXMpIGJlZm9yZSBpdCBmb3JjZXMgdGhlIHN5c3RlbSB0byByZWJvb3QuCisgICAgICAgICAgICBUaGlzIGxpbWl0YXRpb24gaXMgbWVhbnQgdG8gZGlzY291cmFnZSBkaXJlY3QKKyAgICAgICAgICAgIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBpbWFnZS4KKyAgICAgICAgICAgIFlvdSBtdXN0IGV2ZW50dWFsbHkgcmVidWlsZCB0aGUgaW1hZ2UgaWYgeW91IHdhbnQKKyAgICAgICAgICAgIHRvIHJlbW92ZSB0aGlzIHJlc3RyaWN0aW9uLgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgogCi0gICAgICB1c2FnZTogeW9jdG8tYnNwIFstLXZlcnNpb25dIFstLWhlbHBdIENPTU1BTkQgW0FSR1NdCis8c2VjdGlvbiBpZD0nY3JlYXRpbmctYS1uZXctYnNwLWxheWVyLXVzaW5nLXRoZS1iaXRiYWtlLWxheWVycy1zY3JpcHQnPgorICAgIDx0aXRsZT5DcmVhdGluZyBhIG5ldyBCU1AgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvdGl0bGU+CiAKLSAgICAgIEN1cnJlbnQgJ3lvY3RvLWJzcCcgY29tbWFuZHMgYXJlOgotICAgICAgICAgY3JlYXRlICAgICAgICAgICAgQ3JlYXRlIGEgbmV3IFlvY3RvIEJTUAotICAgICAgICAgbGlzdCAgICAgICAgICAgICAgTGlzdCBhdmFpbGFibGUgdmFsdWVzIGZvciBvcHRpb25zIGFuZCBCU1AgcHJvcGVydGllcworICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllcjwvZmlsZW5hbWU+IHNjcmlwdAorICAgICAgICBhdXRvbWF0ZXMgY3JlYXRpbmcgYSBCU1AgbGF5ZXIuCisgICAgICAgIFdoYXQgbWFrZXMgYSBsYXllciBhICJCU1AgbGF5ZXIiLCBpcyB0aGUgcHJlc2VuY2Ugb2YgYSBtYWNoaW5lCisgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgQWRkaXRpb25hbGx5LCBhIEJTUCBsYXllciB1c3VhbGx5IGhhcyBhIGtlcm5lbCByZWNpcGUKKyAgICAgICAgb3IgYW4gYXBwZW5kIGZpbGUgdGhhdCBsZXZlcmFnZXMgb2ZmIGFuIGV4aXN0aW5nIGtlcm5lbCByZWNpcGUuCisgICAgICAgIFRoZSBwcmltYXJ5IHJlcXVpcmVtZW50LCBob3dldmVyLCBpcyB0aGUgbWFjaGluZSBjb25maWd1cmF0aW9uLgorICAgIDwvcGFyYT4KIAotICAgICAgU2VlICd5b2N0by1ic3AgaGVscCBDT01NQU5EJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBhIHNwZWNpZmljIGNvbW1hbmQuCisgICAgPHBhcmE+CisgICAgICAgIFVzZSB0aGVzZSBzdGVwcyB0byBjcmVhdGUgYSBCU1AgbGF5ZXI6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhIEdlbmVyYWwgTGF5ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IHNjcmlwdCB3aXRoIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jcmVhdGUtbGF5ZXI8L2ZpbGVuYW1lPiBzdWJjb21tYW5kIHRvIGNyZWF0ZSBhCisgICAgICAgICAgICAgICAgbmV3IGdlbmVyYWwgbGF5ZXIuCisgICAgICAgICAgICAgICAgRm9yIGluc3RydWN0aW9ucyBvbiBob3cgdG8gY3JlYXRlIGEgZ2VuZXJhbCBsYXllciB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBzY3JpcHQsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctYS1nZW5lcmFsLWxheWVyLXVzaW5nLXRoZS1iaXRiYWtlLWxheWVycy1zY3JpcHQnPkNyZWF0aW5nIGEgR2VuZXJhbCBMYXllciBVc2luZyB0aGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gU2NyaXB0PC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhIExheWVyIENvbmZpZ3VyYXRpb24gRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEV2ZXJ5IGxheWVyIG5lZWRzIGEgbGF5ZXIgY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgICAgICAgIFRoaXMgY29uZmlndXJhdGlvbiBmaWxlIGVzdGFibGlzaGVzIGxvY2F0aW9ucyBmb3IgdGhlCisgICAgICAgICAgICAgICAgbGF5ZXIncyByZWNpcGVzLCBwcmlvcml0aWVzIGZvciB0aGUgbGF5ZXIsIGFuZCBzbyBmb3J0aC4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgZXhhbXBsZXMgb2YgPGZpbGVuYW1lPmxheWVyLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGVzIGluIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4uCisgICAgICAgICAgICAgICAgVG8gZ2V0IGV4YW1wbGVzIG9mIHdoYXQgeW91IG5lZWQgaW4geW91ciBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgZmlsZSwgbG9jYXRlIGEgbGF5ZXIgKGUuZy4gIm1ldGEtdGkiKSBhbmQgZXhhbWluZSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS9tZXRhLXRpL3RyZWUvY29uZi9sYXllci5jb25mJz48L3VsaW5rPgorICAgICAgICAgICAgICAgIGZpbGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhIE1hY2hpbmUgQ29uZmlndXJhdGlvbiBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQ3JlYXRlIGEgPGZpbGVuYW1lPmNvbmYvbWFjaGluZS88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGUuCisgICAgICAgICAgICAgICAgU2VlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlL21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZSc+PGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBmb3Igc2FtcGxlCisgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZXMuCisgICAgICAgICAgICAgICAgT3RoZXIgc2FtcGxlcyBzdWNoIGFzCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvbWV0YS10aS90cmVlL2NvbmYvbWFjaGluZSc+PGZpbGVuYW1lPm1ldGEtdGk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvbWV0YS1mcmVlc2NhbGUvdHJlZS9jb25mL21hY2hpbmUnPjxmaWxlbmFtZT5tZXRhLWZyZWVzY2FsZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBleGlzdCBmcm9tIG90aGVyIHZlbmRvcnMgdGhhdCBoYXZlIG1vcmUgc3BlY2lmaWMgbWFjaGluZQorICAgICAgICAgICAgICAgIGFuZCB0dW5pbmcgZXhhbXBsZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhIEtlcm5lbCBSZWNpcGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBDcmVhdGUgYSBrZXJuZWwgcmVjaXBlIGluIDxmaWxlbmFtZT5yZWNpcGVzLWtlcm5lbC9saW51eDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgYnkgZWl0aGVyIHVzaW5nIGEga2VybmVsIGFwcGVuZCBmaWxlIG9yIGEgbmV3IGN1c3RvbSBrZXJuZWwKKyAgICAgICAgICAgICAgICByZWNpcGUgZmlsZSAoZS5nLiA8ZmlsZW5hbWU+eW9jdG8tbGludXhfNC4xMi5iYjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICBUaGUgQlNQIGxheWVycyBtZW50aW9uZWQgaW4gdGhlIHByZXZpb3VzIHN0ZXAgYWxzbyBjb250YWluIGRpZmZlcmVudAorICAgICAgICAgICAgICAgIGtlcm5lbCBleGFtcGxlcy4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyNtb2RpZnlpbmctYW4tZXhpc3RpbmctcmVjaXBlJz5Nb2RpZnlpbmcgYW4gRXhpc3RpbmcgUmVjaXBlPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsCisgICAgICAgICAgICAgICAgZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjcmVhdGUgYSBjdXN0b20ga2VybmVsLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CiAKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGlzIHNlY3Rpb24gcHJvdmlkZXMgYSBkZXNjcmlwdGlvbiBvZgorICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCByZWZlcmVuY2UgQlNQIGZvciBCZWFnbGVib25lLCB3aGljaAorICAgICAgICByZXNpZGVzIGluIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN0ZXJtLWNvbnRhaW5lci1sYXllcic+Q29udGFpbmVyIExheWVyPC91bGluaz4KKyAgICAgICAgKGkuZS4KKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlL21ldGEteW9jdG8tYnNwJz48ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPjwvdWxpbms+KS4KKyAgICA8L3BhcmE+CiAKLSAgICAgT3B0aW9uczoKLSAgICAgICAtLXZlcnNpb24gICAgc2hvdyBwcm9ncmFtJ3MgdmVyc2lvbiBudW1iZXIgYW5kIGV4aXQKLSAgICAgICAtaCwgLS1oZWxwICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAotICAgICAgIC1ELCAtLWRlYnVnICBvdXRwdXQgZGVidWcgaW5mb3JtYXRpb24KLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICA8c2VjdGlvbiBpZD0nYnNwLWxheWVyLWNvbmZpZ3VyYXRpb24tZXhhbXBsZSc+CisgICAgICAgIDx0aXRsZT5CU1AgTGF5ZXIgQ29uZmlndXJhdGlvbiBFeGFtcGxlPC90aXRsZT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBTaW1pbGFybHksIGVudGVyaW5nIGp1c3QgdGhlIG5hbWUgb2YgYSBzdWItY29tbWFuZCBzaG93cyB0aGUgZGV0YWlsZWQgdXNhZ2UKLSAgICAgICAgICAgICAgICAgICAgZm9yIHRoYXQgc3ViLWNvbW1hbmQ6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCB5b2N0by1ic3AgY3JlYXRlCi0gICAgIEVSUk9SOnJvb3Q6V3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cywgZXhpdGluZworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBsYXllcidzIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5CisgICAgICAgICAgICBjb250YWlucyB0aGUgPGZpbGVuYW1lPmxheWVyLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xheWVyLmNvbmY8L2ZpbGVuYW1lPiBpcyB0aGUKKyAgICAgICAgICAgIGZvbGxvd2luZzoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgIyBXZSBoYXZlIGEgY29uZiBhbmQgY2xhc3NlcyBkaXJlY3RvcnksIGFkZCB0byBCQlBBVEgKKyAgICAgQkJQQVRIIC49ICI6JHtMQVlFUkRJUn0iCiAKLSAgICAgVXNhZ2U6CisgICAgICMgV2UgaGF2ZSByZWNpcGVzLSogZGlyZWN0b3JpZXMsIGFkZCB0byBCQkZJTEVTCisgICAgIEJCRklMRVMgKz0gIiR7TEFZRVJESVJ9L3JlY2lwZXMtKi8qLyouYmIgXAorICAgICAgICAgICAgICAgICAke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiYXBwZW5kIgogCi0gICAgICBDcmVhdGUgYSBuZXcgWW9jdG8gQlNQCisgICAgIEJCRklMRV9DT0xMRUNUSU9OUyArPSAieW9jdG9ic3AiCisgICAgIEJCRklMRV9QQVRURVJOX3lvY3RvYnNwID0gIl4ke0xBWUVSRElSfS8iCisgICAgIEJCRklMRV9QUklPUklUWV95b2N0b2JzcCA9ICI1IgorICAgICBMQVlFUlZFUlNJT05feW9jdG9ic3AgPSAiNCIKKyAgICAgTEFZRVJTRVJJRVNfQ09NUEFUX3lvY3RvYnNwID0gIiZESVNUUk9fTkFNRV9OT19DQVA7IgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhlIHZhcmlhYmxlcyB1c2VkIGluIHRoaXMgZmlsZSBjb25maWd1cmUgdGhlCisgICAgICAgICAgICBsYXllci4KKyAgICAgICAgICAgIEEgZ29vZCB3YXkgdG8gbGVhcm4gYWJvdXQgbGF5ZXIgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgZmlsZXMgaXMgdG8gZXhhbWluZSB2YXJpb3VzIGZpbGVzIGZvciBCU1AgZnJvbQorICAgICAgICAgICAgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPi4KKyAgICAgICAgPC9wYXJhPgogCi0gICAgICB1c2FnZTogeW9jdG8tYnNwIGNyZWF0ZSAmbHQ7YnNwLW5hbWUmZ3Q7ICZsdDtrYXJjaCZndDsgWy1vICZsdDtESVJOQU1FJmd0OyB8IC0tb3V0ZGlyICZsdDtESVJOQU1FJmd0O10KLSAgICAgICAgICAgIFstaSAmbHQ7SlNPTiBQUk9QRVJUWSBGSUxFJmd0OyB8IC0taW5maWxlICZsdDtKU09OIFBST1BFUlRZX0ZJTEUmZ3Q7XQorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvciBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoaXMgcGFydGljdWxhcgorICAgICAgICAgICAgbGF5ZXIgY29uZmlndXJhdGlvbiBmaWxlLCBzZWUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtbGF5ZXItY29uZmlnLWZpbGUtZGVzY3JpcHRpb24nPnN0ZXAgMzwvdWxpbms+CisgICAgICAgICAgICBpbiB0aGUgZGlzY3Vzc2lvbiB0aGF0IGRlc2NyaWJlcyBob3cgdG8gY3JlYXRlCisgICAgICAgICAgICBsYXllcnMgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgogCi0gICAgICBUaGlzIGNvbW1hbmQgY3JlYXRlcyBhIFlvY3RvIEJTUCBiYXNlZCBvbiB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMuCi0gICAgICBUaGUgbmV3IEJTUCB3aWxsIGJlIGEgbmV3IFlvY3RvIEJTUCBsYXllciBjb250YWluZWQgYnkgZGVmYXVsdCB3aXRoaW4KLSAgICAgIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5IHNwZWNpZmllZCBhcyAnbWV0YS1ic3AtbmFtZScuICBUaGUgLW8gb3B0aW9uCi0gICAgICBjYW4gYmUgdXNlZCB0byBwbGFjZSB0aGUgQlNQIGxheWVyIGluIGEgZGlyZWN0b3J5IHdpdGggYSBkaWZmZXJlbnQKLSAgICAgIG5hbWUgYW5kIGxvY2F0aW9uLgorICAgIDxzZWN0aW9uIGlkPSdic3AtbWFjaGluZS1jb25maWd1cmF0aW9uLWV4YW1wbGUnPgorICAgICAgICA8dGl0bGU+QlNQIE1hY2hpbmUgQ29uZmlndXJhdGlvbiBFeGFtcGxlPC90aXRsZT4KIAotICAgICAgVGhlIHZhbHVlIG9mIHRoZSAna2FyY2gnIHBhcmFtZXRlciBkZXRlcm1pbmVzIHRoZSBzZXQgb2YgZmlsZXMgdGhhdAotICAgICAgd2lsbCBiZSBnZW5lcmF0ZWQgZm9yIHRoZSBCU1AsIGFsb25nIHdpdGggdGhlIHNwZWNpZmljIHNldCBvZgotICAgICAgJ3Byb3BlcnRpZXMnIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGZpbGwgb3V0IHRoZSBCU1Atc3BlY2lmaWMgcG9ydGlvbnMKLSAgICAgIG9mIHRoZSBCU1AuICBUaGUgcG9zc2libGUgdmFsdWVzIGZvciB0aGUgJ2thcmNoJyBwYXJhbWV0ZXIgY2FuIGJlCi0gICAgICBsaXN0ZWQgdmlhICd5b2N0by1ic3AgbGlzdCBrYXJjaCcuCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQXMgbWVudGlvbmVkIGVhcmxpZXIgaW4gdGhpcyBzZWN0aW9uLCB0aGUgZXhpc3RlbmNlCisgICAgICAgICAgICBvZiBhIG1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlIGlzIHdoYXQgbWFrZXMgYQorICAgICAgICAgICAgbGF5ZXIgYSBCU1AgbGF5ZXIgYXMgY29tcGFyZWQgdG8gYSBnZW5lcmFsIG9yCisgICAgICAgICAgICBrZXJuZWwgbGF5ZXIuCisgICAgICAgIDwvcGFyYT4KIAotICAgICAgLi4uCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgTWFjaGluZSBjb25maWd1cmF0aW9uIGZpbGVzIGV4aXN0IGluIHRoZQorICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmJzcF9sYXllcjwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi9jb25mL21hY2hpbmUvPC9maWxlbmFtZT4KKyAgICAgICAgICAgIGRpcmVjdG9yeSBvZiB0aGUgbGF5ZXI6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIDxyZXBsYWNlYWJsZT5ic3BfbGF5ZXI8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4vY29uZi9tYWNoaW5lLzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIG1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9iZWFnbGVib2FyZC5vcmcvYm9uZSc+QmVhZ2xlQm9uZSBhbmQgQmVhZ2xlQm9uZSBCbGFjayBkZXZlbG9wbWVudCBib2FyZHM8L3VsaW5rPgorICAgICAgICAgICAgaXMgbG9jYXRlZCBpbiB0aGUgY29udGFpbmVyIGxheWVyCisgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgYW5kIGlzIG5hbWVkIDxmaWxlbmFtZT5iZWFnbGVib25lLXlvY3RvLmNvbmY8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgI0BUWVBFOiBNYWNoaW5lCisgICAgICNATkFNRTogQmVhZ2xlYm9uZS15b2N0byBtYWNoaW5lCisgICAgICNAREVTQ1JJUFRJT046IFJlZmVyZW5jZSBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gZm9yIGh0dHA6Ly9iZWFnbGVib2FyZC5vcmcvYm9uZSBhbmQgaHR0cDovL2JlYWdsZWJvYXJkLm9yZy9ibGFjayBib2FyZHMKIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBGb3IgYW55IHN1Yi1jb21tYW5kLCB5b3UgY2FuIHVzZSB0aGUgd29yZCAiaGVscCIgb3B0aW9uIGp1c3QgYmVmb3JlIHRoZQotICAgICAgICAgICAgICAgICAgICBzdWItY29tbWFuZCB0byBnZXQgbW9yZSBleHRlbnNpdmUgZG9jdW1lbnRhdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHlvY3RvLWJzcCBoZWxwIGNyZWF0ZQorICAgICBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC94c2VydmVyID89ICJ4c2VydmVyLXhvcmciCisgICAgIFhTRVJWRVIgPz0gInhzZXJ2ZXIteG9yZyBcCisgICAgICAgICAgICAgICAgeGY4Ni12aWRlby1tb2Rlc2V0dGluZyBcCisgICAgICAgICAgICAgICAgIgogCi0gICAgIE5BTUUKLSAgICAgICAgIHlvY3RvLWJzcCBjcmVhdGUgLSBDcmVhdGUgYSBuZXcgWW9jdG8gQlNQCisgICAgIE1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgPSAia2VybmVsLW1vZHVsZXMga2VybmVsLWRldmljZXRyZWUiCiAKLSAgICAgU1lOT1BTSVMKLSAgICAgICAgIHlvY3RvLWJzcCBjcmVhdGUgJmx0O2JzcC1uYW1lPiAmbHQ7a2FyY2gmZ3Q7IFstbyAmbHQ7RElSTkFNRSZndDsgfCAtLW91dGRpciAmbHQ7RElSTkFNRSZndDtdCi0gICAgICAgICAgICAgWy1pICZsdDtKU09OIFBST1BFUlRZIEZJTEUmZ3Q7IHwgLS1pbmZpbGUgJmx0O0pTT04gUFJPUEVSVFlfRklMRSZndDtdCisgICAgIEVYVFJBX0lNQUdFREVQRU5EUyArPSAidS1ib290IgogCi0gICAgIERFU0NSSVBUSU9OCi0gICAgICAgICBUaGlzIGNvbW1hbmQgY3JlYXRlcyBhIFlvY3RvIEJTUCBiYXNlZCBvbiB0aGUgc3BlY2lmaWVkCi0gICAgICAgICBwYXJhbWV0ZXJzLiAgVGhlIG5ldyBCU1Agd2lsbCBiZSBhIG5ldyBZb2N0byBCU1AgbGF5ZXIgY29udGFpbmVkCi0gICAgICAgICBieSBkZWZhdWx0IHdpdGhpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeSBzcGVjaWZpZWQgYXMKLSAgICAgICAgICdtZXRhLWJzcC1uYW1lJy4gIFRoZSAtbyBvcHRpb24gY2FuIGJlIHVzZWQgdG8gcGxhY2UgdGhlIEJTUCBsYXllcgotICAgICAgICAgaW4gYSBkaXJlY3Rvcnkgd2l0aCBhIGRpZmZlcmVudCBuYW1lIGFuZCBsb2NhdGlvbi4KKyAgICAgREVGQVVMVFRVTkUgPz0gImNvcnRleGE4aGYtbmVvbiIKKyAgICAgaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGE4LmluYwogCi0gICAgICAgICAuLi4KLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgSU1BR0VfRlNUWVBFUyArPSAidGFyLmJ6MiBqZmZzMiB3aWMgd2ljLmJtYXAiCisgICAgIEVYVFJBX0lNQUdFQ01EX2pmZnMyID0gIi1sbnAgIgorICAgICBXS1NfRklMRSA/PSAiYmVhZ2xlYm9uZS15b2N0by53a3MiCisgICAgIElNQUdFX0lOU1RBTExfYXBwZW5kID0gIiBrZXJuZWwtZGV2aWNldHJlZSBrZXJuZWwtaW1hZ2UtemltYWdlIgorICAgICBkb19pbWFnZV93aWNbZGVwZW5kc10gKz0gIm10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBkb3Nmc3Rvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgogCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIE5vdyB0aGF0IHlvdSBrbm93IHdoZXJlIHRoZXNlIHR3byBjb21tYW5kcyByZXNpZGUgYW5kIGhvdyB0byBhY2Nlc3MgaW5mb3JtYXRpb24KLSAgICAgICAgICAgICAgICAgICAgb24gdGhlbSwgeW91IHNob3VsZCBmaW5kIGl0IHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIHRvIGRpc2NvdmVyIHRoZSBjb21tYW5kcwotICAgICAgICAgICAgICAgICAgICBuZWNlc3NhcnkgdG8gY3JlYXRlIGEgQlNQIGFuZCBwZXJmb3JtIGJhc2ljIGtlcm5lbCBtYWludGVuYW5jZSBvbiB0aGF0IEJTUCB1c2luZwotICAgICAgICAgICAgICAgICAgICB0aGUgdG9vbHMuCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHVzZSB0aGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gc2NyaXB0IHRvIGNyZWF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgYSAiZ2VuZXJpYyIgbGF5ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhpcyBzY3JpcHQgdG8gY3JlYXRlIGEgbGF5ZXIsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1hLWdlbmVyYWwtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+Q3JlYXRpbmcgYSBHZW5lcmFsIExheWVyIFVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBTY3JpcHQ8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICBTRVJJQUxfQ09OU09MRVMgPSAiMTE1MjAwO3R0eU8wIgorCisgICAgIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAibGludXgteW9jdG8iCisgICAgIFBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI0LjEyJSIKKworICAgICBLRVJORUxfSU1BR0VUWVBFID0gInpJbWFnZSIKKyAgICAgS0VSTkVMX0RFVklDRVRSRUUgPSAiYW0zMzV4LWJvbmUuZHRiIGFtMzM1eC1ib25lYmxhY2suZHRiIGFtMzM1eC1ib25lZ3JlZW4uZHRiIgorICAgICBLRVJORUxfRVhUUkFfQVJHUyArPSAiTE9BREFERFI9JHtVQk9PVF9FTlRSWVBPSU5UfSIKKworICAgICBTUExfQklOQVJZID0gIk1MTyIKKyAgICAgVUJPT1RfU1VGRklYID0gImltZyIKKyAgICAgVUJPT1RfTUFDSElORSA9ICJhbTMzNXhfYm9uZWJsYWNrX2NvbmZpZyIKKyAgICAgVUJPT1RfRU5UUllQT0lOVCA9ICIweDgwMDA4MDAwIgorICAgICBVQk9PVF9MT0FEQUREUkVTUyA9ICIweDgwMDA4MDAwIgorCisgICAgIE1BQ0hJTkVfRkVBVFVSRVMgPSAidXNiZ2FkZ2V0IHVzYmhvc3QgdmZhdCBhbHNhIgorCisgICAgIElNQUdFX0JPT1RfRklMRVMgPz0gInUtYm9vdC4ke1VCT09UX1NVRkZJWH0gTUxPIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgVGhlIHZhcmlhYmxlcyB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgbWFjaGluZSBkZWZpbmUKKyAgICAgICAgICAgIG1hY2hpbmUtc3BlY2lmaWMgcHJvcGVydGllcy4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCBtYWNoaW5lLWRlcGVuZGVudCBwYWNrYWdlcywgbWFjaGluZQorICAgICAgICAgICAgdHVuaW5ncywgdGhlIHR5cGUgb2Yga2VybmVsIHRvIGJ1aWxkLCBhbmQKKyAgICAgICAgICAgIFUtQm9vdCBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHByb3ZpZGVzIHNvbWUgZXhwbGFuYXRpb24KKyAgICAgICAgICAgIGZvciB0aGUgc3RhdGVtZW50cyBmb3VuZCBpbiB0aGUgZXhhbXBsZSByZWZlcmVuY2UKKyAgICAgICAgICAgIG1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgQmVhZ2xlQm9uZQorICAgICAgICAgICAgZGV2ZWxvcG1lbnQgYm9hcmRzLgorICAgICAgICAgICAgUmVhbGl6ZSB0aGF0IG11Y2ggbW9yZSBjYW4gYmUgZGVmaW5lZCBhcyBwYXJ0IG9mCisgICAgICAgICAgICBhIG1hY2hpbmVzIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgICAgIEluIGdlbmVyYWwsIHlvdSBjYW4gbGVhcm4gYWJvdXQgcmVsYXRlZCB2YXJpYWJsZXMKKyAgICAgICAgICAgIHRoYXQgdGhpcyBleGFtcGxlIGRvZXMgbm90IGhhdmUgYnkgbG9jYXRpbmcgdGhlCisgICAgICAgICAgICB2YXJpYWJsZXMgaW4gdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXZhcmlhYmxlcy1nbG9zJz5Zb2N0byBQcm9qZWN0IFZhcmlhYmxlcyBHbG9zc2FyeTwvdWxpbms+IgorICAgICAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFJFRkVSUkVEX1BST1ZJREVSJz48ZmlsZW5hbWU+UFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwveHNlcnZlcjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGUgdGhhdCBwcm92aWRlcyAidmlydHVhbC94c2VydmVyIiB3aGVuCisgICAgICAgICAgICAgICAgICAgIG1vcmUgdGhhbiBvbmUgcHJvdmlkZXIgaXMgZm91bmQuCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIHJlY2lwZSB0aGF0IHByb3ZpZGVzCisgICAgICAgICAgICAgICAgICAgICJ2aXJ0dWFsL3hzZXJ2ZXIiIGlzICJ4c2VydmVyLXhvcmciLCB3aGljaAorICAgICAgICAgICAgICAgICAgICBleGlzdHMgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hzZXJ2ZXIteG9yZzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1YU0VSVkVSJz48ZmlsZW5hbWU+WFNFUlZFUjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIFRoZSBwYWNrYWdlcyB0aGF0IHNob3VsZCBiZSBpbnN0YWxsZWQgdG8gcHJvdmlkZQorICAgICAgICAgICAgICAgICAgICBhbiBYIHNlcnZlciBhbmQgZHJpdmVycyBmb3IgdGhlIG1hY2hpbmUuCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgdGhlICJ4c2VydmVyLXhvcmciIGFuZAorICAgICAgICAgICAgICAgICAgICAieGY4Ni12aWRlby1tb2Rlc2V0dGluZyIgYXJlIGluc3RhbGxlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyc+PGZpbGVuYW1lPk1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFM8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgbWFjaGluZS1kZXBlbmRlbnQgcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgbm90IGVzc2VudGlhbCBmb3IgYm9vdGluZyB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFRodXMsIHRoZSBidWlsZCBkb2VzIG5vdCBmYWlsIGlmIHRoZSBwYWNrYWdlcworICAgICAgICAgICAgICAgICAgICBkbyBub3QgZXhpc3QuCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBwYWNrYWdlcyBhcmUgcmVxdWlyZWQgZm9yIGEKKyAgICAgICAgICAgICAgICAgICAgZnVsbHktZmVhdHVyZWQgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICAgICAgTWFueSA8ZmlsZW5hbWU+TUFDSElORSo8L2ZpbGVuYW1lPiB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0IHRoYXQgaGVscCB5b3UgY29uZmlndXJlIGEgcGFydGljdWxhcgorICAgICAgICAgICAgICAgICAgICAgICAgcGllY2Ugb2YgaGFyZHdhcmUuCiAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUVYVFJBX0lNQUdFREVQRU5EUyc+PGZpbGVuYW1lPkVYVFJBX0lNQUdFREVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIFJlY2lwZXMgdG8gYnVpbGQgdGhhdCBkbyBub3QgcHJvdmlkZSBwYWNrYWdlcworICAgICAgICAgICAgICAgICAgICBmb3IgaW5zdGFsbGluZyBpbnRvIHRoZSByb290IGZpbGVzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgYnV0IGJ1aWxkaW5nIHRoZSBpbWFnZSBkZXBlbmRzIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICByZWNpcGVzLgorICAgICAgICAgICAgICAgICAgICBTb21ldGltZXMgYSByZWNpcGUgaXMgcmVxdWlyZWQgdG8gYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgdGhlIGZpbmFsIGltYWdlIGJ1dCBpcyBub3QgbmVlZGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICByb290IGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIFUtQm9vdCByZWNpcGUgbXVzdCBiZQorICAgICAgICAgICAgICAgICAgICBidWlsdCBmb3IgdGhlIGltYWdlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERUZBVUxUVFVORSc+PGZpbGVuYW1lPkRFRkFVTFRUVU5FPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgTWFjaGluZXMgdXNlIHR1bmluZ3MgdG8gb3B0aW1pemUgbWFjaGluZSwKKyAgICAgICAgICAgICAgICAgICAgQ1BVLCBhbmQgYXBwbGljYXRpb24gcGVyZm9ybWFuY2UuCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIGZlYXR1cmVzLCB3aGljaCBhcmUgY29sbGVjdGl2ZWx5IGtub3duCisgICAgICAgICAgICAgICAgICAgIGFzICJ0dW5pbmcgZmVhdHVyZXMiLCBleGlzdCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjb2UtY29yZSc+T3BlbkVtYmVkZGVkLUNvcmUgKE9FLUNvcmUpPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgbGF5ZXIgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZTwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUgZGVmYXVsdCB0dW5uaW5nIGZpbGUgaXMKKyAgICAgICAgICAgICAgICAgICAgImNvcnRleGE4aGYtbmVvbiIuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5pbmNsdWRlPC9maWxlbmFtZT4gc3RhdGVtZW50CisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHB1bGxzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29ydGV4YTguaW5jPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgcHJvdmlkZXMgbWFueSB0dW5pbmcgcG9zc2liaWxpdGllcy4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9GU1RZUEVTJz48ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIFRoZSBmb3JtYXRzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIHVzZXMgZHVyaW5nIHRoZSBidWlsZCB3aGVuIGNyZWF0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICByb290IGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgZm91ciB0eXBlcyBvZiBpbWFnZXMgYXJlCisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRVhUUkFfSU1BR0VDTUQnPjxmaWxlbmFtZT5FWFRSQV9JTUFHRUNNRDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBhZGRpdGlvbmFsIG9wdGlvbnMgZm9yIGltYWdlCisgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uIGNvbW1hbmRzLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZSAiLWxucCAiIG9wdGlvbiBpcyB1c2VkCisgICAgICAgICAgICAgICAgICAgIHdoZW4gY3JlYXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0pGRlMyJz5KRkZTMjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGltYWdlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XS1NfRklMRSc+PGZpbGVuYW1lPldLU19GSUxFPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIGxvY2F0aW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYta2lja3N0YXJ0Jz5XaWMga2lja3N0YXJ0PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvCisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBhIHBhcnRpdGlvbmVkIGltYWdlIChpbWFnZS53aWMpLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9JTlNUQUxMJz48ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBwYWNrYWdlcyB0byBpbnN0YWxsIGludG8gYW4gaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtaW1hZ2UnPjxmaWxlbmFtZT5pbWFnZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MuCisgICAgICAgICAgICAgICAgICAgIFJlY2lwZXMgdXNlIHRoZSA8ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19pbWFnZV93aWNbZGVwZW5kc108L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgQSB0YXNrIHRoYXQgaXMgY29uc3RydWN0ZWQgZHVyaW5nIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUgdGFzayBkZXBlbmRzIG9uIHNwZWNpZmljIHRvb2xzCisgICAgICAgICAgICAgICAgICAgIGluIG9yZGVyIHRvIGNyZWF0ZSB0aGUgc3lzcm9vdCB3aGVuIGJ1aWRpbmcgYSBXaWMKKyAgICAgICAgICAgICAgICAgICAgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNFUklBTF9DT05TT0xFUyc+PGZpbGVuYW1lPlNFUklBTF9DT05TT0xFUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIERlZmluZXMgYSBzZXJpYWwgY29uc29sZSAoVFRZKSB0byBlbmFibGUgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgZ2V0dHkuCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIGJhdWQgcmF0ZSBpcyAiMTE1MjAwIiBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgIGRldmljZSBuYW1lIGlzICJ0dHlPMCIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSRUZFUlJFRF9QUk9WSURFUic+PGZpbGVuYW1lPlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgcmVjaXBlIHRoYXQgcHJvdmlkZXMKKyAgICAgICAgICAgICAgICAgICAgInZpcnR1YWwva2VybmVsIiB3aGVuIG1vcmUgdGhhbiBvbmUgcHJvdmlkZXIKKyAgICAgICAgICAgICAgICAgICAgaXMgZm91bmQuCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIHJlY2lwZSB0aGF0IHByb3ZpZGVzCisgICAgICAgICAgICAgICAgICAgICJ2aXJ0dWFsL2tlcm5lbCIgaXMgImxpbnV4LXlvY3RvIiwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgZXhpc3RzIGluIHRoZSBsYXllcidzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLWtlcm5lbC9saW51eDwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFJFRkVSUkVEX1ZFUlNJT04nPjxmaWxlbmFtZT5QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0bzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIHZlcnNpb24gb2YgdGhlIHJlY2lwZSB1c2VkCisgICAgICAgICAgICAgICAgICAgIHRvIGJ1aWxkIHRoZSBrZXJuZWwsIHdoaWNoIGlzICI0LjEyIiBpbiB0aGlzCisgICAgICAgICAgICAgICAgICAgIGNhc2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUtFUk5FTF9JTUFHRVRZUEUnPjxmaWxlbmFtZT5LRVJORUxfSU1BR0VUWVBFPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIHR5cGUgb2Yga2VybmVsIHRvIGJ1aWxkIGZvciB0aGUgZGV2aWNlLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZXMgYSAiekltYWdlIiBpbWFnZSB0eXBlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LRVJORUxfREVWSUNFVFJFRSc+PGZpbGVuYW1lPktFUk5FTF9ERVZJQ0VUUkVFPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGdlbmVyYXRlZCBMaW51eCBrZXJuZWwgZGV2aWNlCisgICAgICAgICAgICAgICAgICAgIHRyZWUgKGkuZS4gdGhlIDxmaWxlbmFtZT4uZHRiPC9maWxlbmFtZT4pIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIEFsbCB0aGUgZGV2aWNlIHRyZWVzIGZvciB0aGUgdmFyaW91cyBCZWFnbGVCb25lCisgICAgICAgICAgICAgICAgICAgIGRldmljZXMgYXJlIGluY2x1ZGVkLgorPCEtLQorICAgICAgICAgICAgICAgICAgICBZb3UgaGF2ZSB0byBpbmNsdWRlIHNvbWUgKi5pbmMgZmlsZXMgYWNjb3JkaW5nIHRvIHRoZSBkZWZpbml0aW9uIG9mIEtFUk5FTF9ERVZJQ0VUUkVFLgorICAgICAgICAgICAgICAgICAgICBJIGRvbid0IHNlZSB3aGVyZSB0aGVzZSBhcmUgYmVpbmcgcHJvdmlkZWQuCistLT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItS0VSTkVMX0VYVFJBX0FSR1MnPjxmaWxlbmFtZT5LRVJORUxfRVhUUkFfQVJHUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWwgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHBhc3NlcyBvbiB3aGVuIGNvbXBpbGluZyB0aGUga2VybmVsLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsICJMT0FEQUREUj0ke1VCT09UX0VOVFJZUE9JTlR9IgorICAgICAgICAgICAgICAgICAgICBpcyBwYXNzZWQgYXMgYSBjb21tYW5kLWxpbmUgYXJndW1lbnQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNQTF9CSU5BUlknPjxmaWxlbmFtZT5TUExfQklOQVJZPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyB0aGUgU2Vjb25kYXJ5IFByb2dyYW0gTG9hZGVyIChTUEwpIGJpbmFyeQorICAgICAgICAgICAgICAgICAgICB0eXBlLgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHRoZSBTUEwgYmluYXJ5IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAiTUxPIiwgd2hpY2ggc3RhbmRzIGZvciBNdWx0aW1lZGlhIGNhcmQgTE9hZGVyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIG5leHQgc2VjdGlvbnMgcHJvdmlkZSBhIGNvbmNyZXRlIHN0YXJ0aW5nIHBvaW50IHRvIGV4cGFuZCBvbiBhIGZldyBwb2ludHMgdGhhdAotICAgICAgICAgICAgICAgICAgICBtaWdodCBub3QgYmUgaW1tZWRpYXRlbHkgb2J2aW91cyBvciB0aGF0IGNvdWxkIHVzZSBmdXJ0aGVyIGV4cGxhbmF0aW9uLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nY3JlYXRpbmctYS1uZXctYnNwLWxheWVyLXVzaW5nLXRoZS15b2N0by1ic3Atc2NyaXB0Jz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgYSBuZXcgQlNQIExheWVyIFVzaW5nIHRoZSB5b2N0by1ic3AgU2NyaXB0PC90aXRsZT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnlvY3RvLWJzcDwvZmlsZW5hbWU+IHNjcmlwdCBjcmVhdGVzIGEgbmV3Ci0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JzcC1sYXllcnMnPkJTUCBsYXllcjwvbGluaz4gZm9yIGFueSBhcmNoaXRlY3R1cmUgc3VwcG9ydGVkCi0gICAgICAgICAgICAgICAgICAgIGJ5IHRoZSBZb2N0byBQcm9qZWN0LCBhcyB3ZWxsIGFzIFFFTVUgdmVyc2lvbnMgb2YgdGhlIHNhbWUuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IG1vZGUgb2YgdGhlIHNjcmlwdCdzIG9wZXJhdGlvbiBpcyB0byBwcm9tcHQgeW91IGZvciBpbmZvcm1hdGlvbiBuZWVkZWQKLSAgICAgICAgICAgICAgICAgICAgdG8gZ2VuZXJhdGUgdGhlIEJTUCBsYXllci4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBjdXJyZW50IHNldCBvZiBCU1BzLCB0aGUgc2NyaXB0IHByb21wdHMgeW91IGZvciB2YXJpb3VzIGltcG9ydGFudAotICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzIHN1Y2ggYXM6CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBCZWFnbGVCb25lIGRldmVsb3BtZW50IGJvYXJkIHJlcXVpcmVzIGFuCisgICAgICAgICAgICAgICAgICAgIFNQTCB0byBib290IGFuZCB0aGF0IFNQTCBmaWxlIHR5cGUgbXVzdCBiZSBNTE8uCisgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgdGhlIG1hY2hpbmUgY29uZmlndXJhdGlvbiBuZWVkcyB0bworICAgICAgICAgICAgICAgICAgICBkZWZpbmUgPGZpbGVuYW1lPlNQTF9CSU5BUlk8L2ZpbGVuYW1lPiBhcyAiTUxPIi4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdGhlIFNQTCB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZSB1c2VkLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS9wb2t5L3RyZWUvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LmluYyc+PGZpbGVuYW1lPnUtYm9vdC5pbmM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVUJPT1RfRU5UUllQT0lOVCc+PGZpbGVuYW1lPlVCT09UXyo8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIHZhcmlvdXMgVS1Cb290IGNvbmZpZ3VyYXRpb25zIG5lZWRlZAorICAgICAgICAgICAgICAgICAgICB0byBidWlsZCBhIFUtQm9vdCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCBhIFUtQm9vdCBpbWFnZSBpcyByZXF1aXJlZAorICAgICAgICAgICAgICAgICAgICB0byBib290IHRoZSBCZWFnbGVCb25lIGRldmljZS4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGZvciBtb3JlIGluZm9ybWF0aW9uOgogICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBrZXJuZWwgdG8gdXNlPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIGJyYW5jaCBvZiB0aGF0IGtlcm5lbCB0byB1c2UgKG9yIHJlLXVzZSk8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5XaGV0aGVyIG9yIG5vdCB0byB1c2UgWCwgYW5kIGlmIHNvLCB3aGljaCBkcml2ZXJzIHRvIHVzZTwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPldoZXRoZXIgdG8gdHVybiBvbiBTTVA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5XaGV0aGVyIHRoZSBCU1AgaGFzIGEga2V5Ym9hcmQ8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5XaGV0aGVyIHRoZSBCU1AgaGFzIGEgdG91Y2hzY3JlZW48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5SZW1haW5pbmcgY29uZmlndXJhYmxlIGl0ZW1zIGFzc29jaWF0ZWQgd2l0aCB0aGUgQlNQPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVVCT09UX1NVRkZJWCc+PGZpbGVuYW1lPlVCT09UX1NVRkZJWDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9pbnRzIHRvIHRoZSBnZW5lcmF0ZWQgVS1Cb290IGV4dGVuc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVUJPT1RfTUFDSElORSc+PGZpbGVuYW1lPlVCT09UX01BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgdmFsdWUgcGFzc2VkIG9uIHRoZSBtYWtlIGNvbW1hbmQgbGluZSB3aGVuIGJ1aWxkaW5nIGEgVS1Cb290IGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1VQk9PVF9FTlRSWVBPSU5UJz48ZmlsZW5hbWU+VUJPT1RfRU5UUllQT0lOVDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIFUtQm9vdCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVUJPT1RfTE9BREFERFJFU1MnPjxmaWxlbmFtZT5VQk9PVF9MT0FEQUREUkVTUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBsb2FkIGFkZHJlc3MgZm9yIHRoZSBVLUJvb3QgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORV9GRUFUVVJFUyc+PGZpbGVuYW1lPk1BQ0hJTkVfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGxpc3Qgb2YgaGFyZHdhcmUgZmVhdHVyZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIEJlYWdsZUJvbmUgZGV2aWNlIGlzIGNhcGFibGUgb2Ygc3VwcG9ydGluZy4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgZGV2aWNlIHN1cHBvcnRzCisgICAgICAgICAgICAgICAgICAgICJ1c2JnYWRnZXQgdXNiaG9zdCB2ZmF0IGFsc2EiLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9CT09UX0ZJTEVTJz48ZmlsZW5hbWU+SU1BR0VfQk9PVF9GSUxFUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIEZpbGVzIGluc3RhbGxlZCBpbnRvIHRoZSBkZXZpY2UncyBib290IHBhcnRpdGlvbgorICAgICAgICAgICAgICAgICAgICB3aGVuIHByZXBhcmluZyB0aGUgaW1hZ2UgdXNpbmcgdGhlIFdpYyB0b29sCisgICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIDxmaWxlbmFtZT5ib290aW1nLXBhcnRpdGlvbjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBwbHVnaW4uCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlICJ1LWJvb3QuJHtVQk9PVF9TVUZGSVh9IiBhbmQKKyAgICAgICAgICAgICAgICAgICAgIk1MTyIgZmlsZXMgYXJlIGluc3RhbGxlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBZb3UgdXNlIHRoZSA8ZmlsZW5hbWU+eW9jdG8tYnNwIGNyZWF0ZTwvZmlsZW5hbWU+IHN1Yi1jb21tYW5kIHRvIGNyZWF0ZQotICAgICAgICAgICAgICAgICAgICBhIG5ldyBCU1AgbGF5ZXIuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCByZXF1aXJlcyB5b3UgdG8gc3BlY2lmeSBhIHBhcnRpY3VsYXIga2VybmVsIGFyY2hpdGVjdHVyZQotICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmthcmNoPC9maWxlbmFtZT4pIG9uIHdoaWNoIHRvIGJhc2UgdGhlIEJTUC4KLSAgICAgICAgICAgICAgICAgICAgQXNzdW1pbmcgeW91IGhhdmUgc291cmNlZCB0aGUgZW52aXJvbm1lbnQsIHlvdSBjYW4gdXNlIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8tYnNwIGxpc3Qga2FyY2g8L2ZpbGVuYW1lPiBzdWItY29tbWFuZCB0byBsaXN0IHRoZQotICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmVzIGF2YWlsYWJsZSBmb3IgQlNQIGNyZWF0aW9uIGFzIGZvbGxvd3M6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCB5b2N0by1ic3AgbGlzdCBrYXJjaAotICAgICBBcmNoaXRlY3R1cmVzIGF2YWlsYWJsZToKLSAgICAgICAgIHBvd2VycGMKLSAgICAgICAgIHg4Nl82NAotICAgICAgICAgaTM4NgotICAgICAgICAgYXJtCi0gICAgICAgICBxZW11Ci0gICAgICAgICBtaXBzCi0gICAgICAgICBtaXBzNjQKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICA8c2VjdGlvbiBpZD0nYnNwLWtlcm5lbC1yZWNpcGUtZXhhbXBsZSc+CisgICAgICAgIDx0aXRsZT5CU1AgS2VybmVsIFJlY2lwZSBFeGFtcGxlPC90aXRsZT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiBwcmVzZW50cyBhbiBleGFtcGxlIHRoYXQgdXNlcwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bXlhcm08L2ZpbGVuYW1lPiBhcyB0aGUgbWFjaGluZSBuYW1lIGFuZCA8ZmlsZW5hbWU+cWVtdTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGFzIHRoZSBtYWNoaW5lIGFyY2hpdGVjdHVyZS4KLSAgICAgICAgICAgICAgICAgICAgT2YgdGhlIGF2YWlsYWJsZSBhcmNoaXRlY3R1cmVzLCA8ZmlsZW5hbWU+cWVtdTwvZmlsZW5hbWU+IGlzIHRoZSBvbmx5IGFyY2hpdGVjdHVyZQotICAgICAgICAgICAgICAgICAgICB0aGF0IGNhdXNlcyB0aGUgc2NyaXB0IHRvIHByb21wdCB5b3UgZnVydGhlciBmb3IgYW4gYWN0dWFsIGFyY2hpdGVjdHVyZS4KLSAgICAgICAgICAgICAgICAgICAgSW4gZXZlcnkgb3RoZXIgd2F5LCB0aGlzIGFyY2hpdGVjdHVyZSBpcyByZXByZXNlbnRhdGl2ZSBvZiBob3cgY3JlYXRpbmcgYSBCU1AgZm9yCi0gICAgICAgICAgICAgICAgICAgIGFuIGFjdHVhbCBtYWNoaW5lIHdvdWxkIHdvcmsuCi0gICAgICAgICAgICAgICAgICAgIFRoZSByZWFzb24gdGhlIGV4YW1wbGUgdXNlcyB0aGlzIGFyY2hpdGVjdHVyZSBpcyBiZWNhdXNlIGl0IGlzIGFuIGVtdWxhdGVkIGFyY2hpdGVjdHVyZQotICAgICAgICAgICAgICAgICAgICBhbmQgY2FuIGVhc2lseSBiZSBmb2xsb3dlZCB3aXRob3V0IHJlcXVpcmluZyBhY3R1YWwgaGFyZHdhcmUuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBrZXJuZWwgcmVjaXBlIHVzZWQgdG8gYnVpbGQgdGhlIGtlcm5lbCBpbWFnZQorICAgICAgICAgICAgZm9yIHRoZSBCZWFnbGVCb25lIGRldmljZSB3YXMgZXN0YWJsaXNoZWQgaW4gdGhlCisgICAgICAgICAgICBtYWNoaW5lIGNvbmZpZ3VyYXRpb246CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAibGludXgteW9jdG8iCisgICAgIFBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI0LjEyJSIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXg8L2ZpbGVuYW1lPgorICAgICAgICAgICAgZGlyZWN0b3J5IGluIHRoZSBsYXllciBjb250YWlucyBtZXRhZGF0YSB1c2VkCisgICAgICAgICAgICB0byBidWlsZCB0aGUga2VybmVsLgorICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCBhIGtlcm5lbCBhcHBlbmQgZmlsZSBpcyB1c2VkIHRvCisgICAgICAgICAgICBvdmVycmlkZSBhbiBlc3RhYmxpc2hlZCBrZXJuZWwgcmVjaXBlLCB3aGljaCBpcworICAgICAgICAgICAgbG9jYXRlZCBpbgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlL21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgnPjwvdWxpbms+CisgICAgICAgICAgICBhbmQgbmFtZWQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0b180LjEyLmJiPC9maWxlbmFtZT4uCisgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBBcyB0aGUgPGZpbGVuYW1lPnlvY3RvLWJzcCBjcmVhdGU8L2ZpbGVuYW1lPiBjb21tYW5kIHJ1bnMsIGRlZmF1bHQgdmFsdWVzIGZvcgotICAgICAgICAgICAgICAgICAgICB0aGUgcHJvbXB0cyBhcHBlYXIgaW4gYnJhY2tldHMuCi0gICAgICAgICAgICAgICAgICAgIFByZXNzaW5nIGVudGVyIHdpdGhvdXQgc3VwcGx5aW5nIGFueXRoaW5nIG9uIHRoZSBjb21tYW5kIGxpbmUgb3IgcHJlc3NpbmcgZW50ZXIKLSAgICAgICAgICAgICAgICAgICAgd2l0aCBhbiBpbnZhbGlkIHJlc3BvbnNlIGNhdXNlcyB0aGUgc2NyaXB0IHRvIGFjY2VwdCB0aGUgZGVmYXVsdCB2YWx1ZS4KLSAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgc2NyaXB0IGNvbXBsZXRlcywgdGhlIG5ldyA8ZmlsZW5hbWU+bWV0YS1teWFybTwvZmlsZW5hbWU+IEJTUCBsYXllcgotICAgICAgICAgICAgICAgICAgICBpcyBjcmVhdGVkIGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICBUaGlzIGV4YW1wbGUgYXNzdW1lcyB5b3UgaGF2ZSBzb3VyY2VkIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgc2V0dXAgc2NyaXB0LgotICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb2xsb3dpbmcgaXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBhcHBlbmQgZmlsZToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgS0JSQU5DSF9nZW5lcmljeDg2ICA9ICJzdGFuZGFyZC9iYXNlIgorICAgICBLQlJBTkNIX2dlbmVyaWN4ODYtNjQgID0gInN0YW5kYXJkL2Jhc2UiCiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIHRoZSBjb21wbGV0ZSBleGFtcGxlOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgeW9jdG8tYnNwIGNyZWF0ZSBteWFybSBxZW11Ci0gICAgIENoZWNraW5nIGJhc2ljIGdpdCBjb25uZWN0aXZpdHkuLi4KLSAgICAgRG9uZS4KKyAgICAgS01BQ0hJTkVfZ2VuZXJpY3g4NiA/PSAiY29tbW9uLXBjIgorICAgICBLTUFDSElORV9nZW5lcmljeDg2LTY0ID89ICJjb21tb24tcGMtNjQiCisgICAgIEtCUkFOQ0hfZWRnZXJvdXRlciA9ICJzdGFuZGFyZC9lZGdlcm91dGVyIgorICAgICBLQlJBTkNIX2JlYWdsZWJvbmUteW9jdG8gPSAic3RhbmRhcmQvYmVhZ2xlYm9uZSIKKyAgICAgS01BQ0hJTkVfYmVhZ2xlYm9uZS15b2N0byA9ICJiZWFnbGVib25lIgorICAgICBLQlJBTkNIX21wYzgzMTVlLXJkYiA9ICJzdGFuZGFyZC9mc2wtbXBjODMxNWUtcmRiIgogCi0gICAgIFdoaWNoIHFlbXUgYXJjaGl0ZWN0dXJlIHdvdWxkIHlvdSBsaWtlIHRvIHVzZT8gW2RlZmF1bHQ6IGkzODZdCi0JICAgICAxKSBpMzg2ICAgICgzMi1iaXQpCi0JICAgICAyKSB4ODZfNjQgICg2NC1iaXQpCi0JICAgICAzKSBBUk0gICAgICgzMi1iaXQpCi0JICAgICA0KSBQb3dlclBDICgzMi1iaXQpCi0JICAgICA1KSBNSVBTICAgICgzMi1iaXQpCi0JICAgICA2KSBNSVBTNjQgICg2NC1iaXQpCi0gICAgIDMKLSAgICAgV291bGQgeW91IGxpa2UgdG8gdXNlIHRoZSBkZWZhdWx0ICg0LjgpIGtlcm5lbD8gKHkvbikgW2RlZmF1bHQ6IHldCi0gICAgIERvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSBbZGVmYXVsdDogeV0KLSAgICAgR2V0dGluZyBicmFuY2hlcyBmcm9tIHJlbW90ZSByZXBvIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuOC5naXQuLi4KLSAgICAgUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IFtkZWZhdWx0OiBzdGFuZGFyZC9iYXNlXQotCSAgICAgMSkgc3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMKLQkgICAgIDIpIHN0YW5kYXJkL2Jhc2UKLQkgICAgIDMpIHN0YW5kYXJkL2JlYWdsZWJvbmUKLQkgICAgIDQpIHN0YW5kYXJkL2VkZ2Vyb3V0ZXIKLQkgICAgIDUpIHN0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIKLQkgICAgIDYpIHN0YW5kYXJkL210aS1tYWx0YTMyCi0JICAgICA3KSBzdGFuZGFyZC9tdGktbWFsdGE2NAotCSAgICAgOCkgc3RhbmRhcmQvcWVtdWFybTY0Ci0JICAgICA5KSBzdGFuZGFyZC9xZW11cHBjCi0gICAgIDEKLSAgICAgV291bGQgeW91IGxpa2UgU01QIHN1cHBvcnQ/ICh5L24pIFtkZWZhdWx0OiB5XQotICAgICBEb2VzIHlvdXIgQlNQIGhhdmUgYSB0b3VjaHNjcmVlbj8gKHkvbikgW2RlZmF1bHQ6IG5dCi0gICAgIERvZXMgeW91ciBCU1AgaGF2ZSBhIGtleWJvYXJkPyAoeS9uKSBbZGVmYXVsdDogeV0KLQotICAgICBOZXcgcWVtdSBCU1AgY3JlYXRlZCBpbiBtZXRhLW15YXJtCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgVGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBleGFtcGxlIG5vdzoKLSAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZvciB0aGUgUUVNVSBhcmNoaXRlY3R1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNjcmlwdCBmaXJzdCBwcm9tcHRzIHlvdSBmb3Igd2hpY2ggZW11bGF0ZWQgYXJjaGl0ZWN0dXJlIHRvIHVzZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGUgZXhhbXBsZSwgd2UgdXNlIHRoZSBBUk0gYXJjaGl0ZWN0dXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBzY3JpcHQgdGhlbiBwcm9tcHRzIHlvdSBmb3IgdGhlIGtlcm5lbC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCA0Ljgga2VybmVsIGlzIGFjY2VwdGFibGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU28sIHRoZSBleGFtcGxlIGFjY2VwdHMgdGhlIGRlZmF1bHQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGVudGVyICduJywgdGhlIHNjcmlwdCBwcm9tcHRzIHlvdSB0byBmdXJ0aGVyIGVudGVyIHRoZSBrZXJuZWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgZG8gd2FudCB0byB1c2UuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+TmV4dCwgdGhlIHNjcmlwdCBhc2tzIHdoZXRoZXIgeW91IHdvdWxkIGxpa2UgdG8gaGF2ZSBhIG5ldwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaCBjcmVhdGVkIGVzcGVjaWFsbHkgZm9yIHlvdXIgQlNQIGluIHRoZSBsb2NhbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbnV4IFlvY3RvIEtlcm5lbCBHaXQgcmVwb3NpdG9yeSAuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgbm90LCB0aGVuIHRoZSBzY3JpcHQgcmUtdXNlcyBhbiBleGlzdGluZyBicmFuY2guPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkluIHRoaXMgZXhhbXBsZSwgdGhlIGRlZmF1bHQgKG9yICJ5ZXMiKSBpcyBhY2NlcHRlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHVzLCBhIG5ldyBicmFuY2ggaXMgY3JlYXRlZCBmb3IgdGhlIEJTUCByYXRoZXIgdGhhbiB1c2luZyBhIGNvbW1vbiwgc2hhcmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBuZXcgYnJhbmNoIGlzIHRoZSBicmFuY2ggY29tbWl0dGVkIHRvIGZvciBhbnkgcGF0Y2hlcyB5b3UgbWlnaHQgbGF0ZXIgYWRkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZWFzb24gYSBuZXcgYnJhbmNoIGlzIHRoZSBkZWZhdWx0IGlzIHRoYXQgdHlwaWNhbGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEJTUHMgZG8gcmVxdWlyZSBCU1Atc3BlY2lmaWMgcGF0Y2hlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdG9vbCB0aHVzIGFzc3VtZXMgdGhhdCBtb3N0IG9mIHRpbWUgYSBuZXcgYnJhbmNoIGlzIHJlcXVpcmVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlJlZ2FyZGxlc3Mgb2Ygd2hpY2ggY2hvaWNlIHlvdSBtYWtlIGluIHRoZSBwcmV2aW91cyBzdGVwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBhcmUgbm93IGdpdmVuIHRoZSBvcHBvcnR1bml0eSB0byBzZWxlY3QgYSBwYXJ0aWN1bGFyIG1hY2hpbmUgYnJhbmNoIG9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggdG8gYmFzZSB5b3VyIG5ldyBCU1Atc3BlY2lmaWMgbWFjaGluZSBicmFuY2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgdG8gcmUtdXNlIGlmIHlvdSBoYWQgZWxlY3RlZCB0byBub3QgY3JlYXRlIGEgbmV3IGJyYW5jaCkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGlzIGV4YW1wbGUgaXMgZ2VuZXJhdGluZyBhbiBBUk0tYmFzZWQgQlNQLCB0aGUgZXhhbXBsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXMgPGZpbGVuYW1lPiMxPC9maWxlbmFtZT4gYXQgdGhlIHByb21wdCwgd2hpY2ggc2VsZWN0cyB0aGUgQVJNLXZlcnNhdGlsZSBicmFuY2guCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIHJlbWFpbmRlciBvZiB0aGUgcHJvbXB0cyBhcmUgcm91dGluZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0cyBhcmUgYWNjZXB0ZWQgZm9yIGVhY2guPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QnkgZGVmYXVsdCwgdGhlIHNjcmlwdCBjcmVhdGVzIHRoZSBuZXcgQlNQIExheWVyIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5wb2t5L2J1aWxkPC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBPbmNlIHRoZSBCU1AgTGF5ZXIgaXMgY3JlYXRlZCwgeW91IG11c3QgYWRkIGl0IHRvIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgQkJMQVlFUlMgPSA/ICIgXAotICAgICAgICAvdXNyL2xvY2FsL3NyYy95b2N0by9tZXRhIFwKLSAgICAgICAgL3Vzci9sb2NhbC9zcmMveW9jdG8vbWV0YS1wb2t5IFwKLSAgICAgICAgL3Vzci9sb2NhbC9zcmMveW9jdG8vbWV0YS15b2N0by1ic3AgXAotICAgICAgICAvdXNyL2xvY2FsL3NyYy95b2N0by9tZXRhLW15YXJtIFwKLSAgICAgICAgIgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIEFkZGluZyB0aGUgbGF5ZXIgdG8gdGhpcyBmaWxlIGFsbG93cyB0aGUgYnVpbGQgc3lzdGVtIHRvIGJ1aWxkIHRoZSBCU1AgYW5kCi0gICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsPC9maWxlbmFtZT4gdG9vbCB0byBiZSBhYmxlIHRvIGZpbmQgdGhlIGxheWVyIGFuZAotICAgICAgICAgICAgICAgICAgICBvdGhlciBNZXRhZGF0YSBpdCBuZWVkcyBvbiB3aGljaCB0byBvcGVyYXRlLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J21hbmFnaW5nLWtlcm5lbC1wYXRjaGVzLWFuZC1jb25maWctaXRlbXMtd2l0aC15b2N0by1rZXJuZWwnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5NYW5hZ2luZyBLZXJuZWwgUGF0Y2hlcyBhbmQgQ29uZmlnIEl0ZW1zIHdpdGggeW9jdG8ta2VybmVsPC90aXRsZT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBBc3N1bWluZyB5b3UgaGF2ZSBjcmVhdGVkIGEgPGxpbmsgbGlua2VuZD0nYnNwLWxheWVycyc+QlNQIExheWVyPC9saW5rPiB1c2luZwotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdjcmVhdGluZy1hLW5ldy1ic3AtbGF5ZXItdXNpbmctdGhlLXlvY3RvLWJzcC1zY3JpcHQnPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8tYnNwPC9maWxlbmFtZT48L2xpbms+IGFuZCB5b3UgYWRkZWQgaXQgdG8geW91cgotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJMQVlFUlMnPjxmaWxlbmFtZT5CQkxBWUVSUzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gdGhlIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSwgeW91IGNhbiBub3cgdXNlCi0gICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsPC9maWxlbmFtZT4gc2NyaXB0IHRvIGFkZCBwYXRjaGVzIGFuZCBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgIGl0ZW1zIHRvIHRoZSBCU1AncyBrZXJuZWwuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsPC9maWxlbmFtZT4gc2NyaXB0IGFsbG93cyB5b3UgdG8gYWRkLCByZW1vdmUsIGFuZCBsaXN0IHBhdGNoZXMKLSAgICAgICAgICAgICAgICAgICAgYW5kIGtlcm5lbCBjb25maWcgc2V0dGluZ3MgdG8gYSBCU1AncyBrZXJuZWwKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICAgICAgICAgIEFsbCB5b3UgbmVlZCB0byBkbyBpcyB1c2UgdGhlIGFwcHJvcHJpYXRlIHN1Yi1jb21tYW5kLgotICAgICAgICAgICAgICAgICAgICBSZWNhbGwgdGhhdCB0aGUgZWFzaWVzdCB3YXkgdG8gc2VlIGV4YWN0bHkgd2hhdCBzdWItY29tbWFuZHMgYXJlIGF2YWlsYWJsZQotICAgICAgICAgICAgICAgICAgICBpcyB0byB1c2UgdGhlIDxmaWxlbmFtZT55b2N0by1rZXJuZWw8L2ZpbGVuYW1lPiBidWlsdC1pbiBoZWxwIGFzIGZvbGxvd3M6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCB5b2N0by1rZXJuZWwgLS1oZWxwCi0gICAgIFVzYWdlOgotCi0gICAgICBNb2RpZnkgYW5kIGxpc3QgWW9jdG8gQlNQIGtlcm5lbCBjb25maWcgaXRlbXMgYW5kIHBhdGNoZXMuCi0KLSAgICAgIHVzYWdlOiB5b2N0by1rZXJuZWwgWy0tdmVyc2lvbl0gWy0taGVscF0gQ09NTUFORCBbQVJHU10KLQotICAgICAgQ3VycmVudCAneW9jdG8ta2VybmVsJyBjb21tYW5kcyBhcmU6Ci0gICAgICAgIGNvbmZpZyBsaXN0ICAgICAgIExpc3QgdGhlIG1vZGlmaWFibGUgc2V0IG9mIGJhcmUga2VybmVsIGNvbmZpZyBvcHRpb25zIGZvciBhIEJTUAotICAgICAgICBjb25maWcgYWRkICAgICAgICBBZGQgb3IgbW9kaWZ5IGJhcmUga2VybmVsIGNvbmZpZyBvcHRpb25zIGZvciBhIEJTUAotICAgICAgICBjb25maWcgcm0gICAgICAgICBSZW1vdmUgYmFyZSBrZXJuZWwgY29uZmlnIG9wdGlvbnMgZnJvbSBhIEJTUAotICAgICAgICBwYXRjaCBsaXN0ICAgICAgICBMaXN0IHRoZSBwYXRjaGVzIGFzc29jaWF0ZWQgd2l0aCBhIEJTUAotICAgICAgICBwYXRjaCBhZGQgICAgICAgICBQYXRjaCB0aGUgWW9jdG8ga2VybmVsIGZvciBhIEJTUAotICAgICAgICBwYXRjaCBybSAgICAgICAgICBSZW1vdmUgcGF0Y2hlcyBmcm9tIGEgQlNQCi0gICAgICAgIGZlYXR1cmUgbGlzdCAgICAgIExpc3QgdGhlIGZlYXR1cmVzIHVzZWQgYnkgYSBCU1AKLSAgICAgICAgZmVhdHVyZSBhZGQgICAgICAgSGF2ZSBhIEJTUCB1c2UgYSBmZWF0dXJlCi0gICAgICAgIGZlYXR1cmUgcm0gICAgICAgIEhhdmUgYSBCU1Agc3RvcCB1c2luZyBhIGZlYXR1cmUKLSAgICAgICAgZmVhdHVyZXMgbGlzdCAgICAgTGlzdCB0aGUgZmVhdHVyZXMgYXZhaWxhYmxlIHRvIEJTUHMKLSAgICAgICAgZmVhdHVyZSBkZXNjcmliZSAgRGVzY3JpYmUgYSBwYXJ0aWN1bGFyIGZlYXR1cmUKLSAgICAgICAgZmVhdHVyZSBjcmVhdGUgICAgQ3JlYXRlIGEgbmV3IEJTUC1sb2NhbCBmZWF0dXJlCi0gICAgICAgIGZlYXR1cmUgZGVzdHJveSAgIFJlbW92ZSBhIEJTUC1sb2NhbCBmZWF0dXJlCi0KLSAgICAgIFNlZSAneW9jdG8ta2VybmVsIGhlbHAgQ09NTUFORCcgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gYSBzcGVjaWZpYyBjb21tYW5kLgorICAgICBTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2ICAgID89ICIxYzRhZDU2OWFmM2UyM2E3Nzk5NDIzNTQzNTA0MGUzMjI5MDg2ODdmIgorICAgICBTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICIxYzRhZDU2OWFmM2UyM2E3Nzk5NDIzNTQzNTA0MGUzMjI5MDg2ODdmIgorICAgICBTUkNSRVZfbWFjaGluZV9lZGdlcm91dGVyID89ICIyNTdmODQzZWEzNjc3NDQ2MjBmMWQ5MjkxMGFmZDJmNDU0ZTMxNDgzIgorICAgICBTUkNSRVZfbWFjaGluZV9iZWFnbGVib25lLXlvY3RvID89ICIyNTdmODQzZWEzNjc3NDQ2MjBmMWQ5MjkxMGFmZDJmNDU0ZTMxNDgzIgorICAgICBTUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gIjAxNDU2MDg3NGY5ZWIyYTg2MTM4YzljYzM1MDQ2ZmYxNzIwNDg1ZTEiCiAKIAorICAgICBDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4NiA9ICJnZW5lcmljeDg2IgorICAgICBDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgorICAgICBDT01QQVRJQkxFX01BQ0hJTkVfZWRnZXJvdXRlciA9ICJlZGdlcm91dGVyIgorICAgICBDT01QQVRJQkxFX01BQ0hJTkVfYmVhZ2xlYm9uZS15b2N0byA9ICJiZWFnbGVib25lLXlvY3RvIgorICAgICBDT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKIAotICAgICBPcHRpb25zOgotICAgICAgIC0tdmVyc2lvbiAgICBzaG93IHByb2dyYW0ncyB2ZXJzaW9uIG51bWJlciBhbmQgZXhpdAotICAgICAgIC1oLCAtLWhlbHAgICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0Ci0gICAgICAgLUQsIC0tZGVidWcgIG91dHB1dCBkZWJ1ZyBpbmZvcm1hdGlvbgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICBMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYgPSAiNC4xMi4yMCIKKyAgICAgTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2LTY0ID0gIjQuMTIuMjAiCisgICAgIExJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjEyLjE5IgorICAgICBMSU5VWF9WRVJTSU9OX2JlYWdsZWJvbmUteW9jdG8gPSAiNC4xMi4xOSIKKyAgICAgTElOVVhfVkVSU0lPTl9tcGM4MzE1ZS1yZGIgPSAiNC4xMi4xOSIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFRoaXMgcGFydGljdWxhciBhcHBlbmQgZmlsZSB3b3JrcyBmb3IgYWxsIHRoZQorICAgICAgICAgICAgbWFjaGluZXMgdGhhdCBhcmUgcGFydCBvZiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXlvY3RvLWJzcDwvZmlsZW5hbWU+IGNvbnRhaW5lcgorICAgICAgICAgICAgbGF5ZXIuCisgICAgICAgICAgICBUaGUgcmVsZXZhbnQgc3RhdGVtZW50cyBhcmUgYXBwZW5kZWQgd2l0aAorICAgICAgICAgICAgdGhlICJiZWFnbGVib25lLXlvY3RvIiBzdHJpbmcuCisgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRoZXNlCisgICAgICAgICAgICBzdGF0ZW1lbnRzIHRvIG92ZXJyaWRlIHNpbWlsYXIgc3RhdGVtZW50cworICAgICAgICAgICAgaW4gdGhlIGtlcm5lbCByZWNpcGU6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUtCUkFOQ0gnPjxmaWxlbmFtZT5LQlJBTkNIPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllcyB0aGUga2VybmVsIGJyYW5jaCB0aGF0IGlzIHZhbGlkYXRlZCwKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hlZCwgYW5kIGNvbmZpZ3VyZWQgZHVyaW5nIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItS01BQ0hJTkUnPjxmaWxlbmFtZT5LTUFDSElORTwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXMgdGhlIG1hY2hpbmUgbmFtZSBhcyBrbm93biBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAga2VybmVsLCB3aGljaCBpcyBzb21ldGltZXMgYSBkaWZmZXJlbnQgbmFtZQorICAgICAgICAgICAgICAgICAgICB0aGFuIHdoYXQgaXMga25vd24gYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ1JFVic+PGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXMgdGhlIHJldmlzaW9uIG9mIHRoZSBzb3VyY2UgY29kZSB1c2VkCisgICAgICAgICAgICAgICAgICAgIHRvIGJ1aWxkIHRoZSBpbWFnZS4KKzwhLS0KKyAgICAgICAgICAgICAgICAgICAgWW91IGZpbmQgb3V0IGFib3V0IHRoYXQgcG9pbnQgaW4gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSBieQorICAgICAgICAgICAgICAgICAgICBkb2luZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CiAKLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT55b2N0by1rZXJuZWwgcGF0Y2ggYWRkPC9maWxlbmFtZT4gc3ViLWNvbW1hbmQgYWxsb3dzIHlvdSB0byBhZGQgYQotICAgICAgICAgICAgICAgICAgICBwYXRjaCB0byBhIEJTUC4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIGFkZHMgdHdvIHBhdGNoZXMgdG8gdGhlIDxmaWxlbmFtZT5teWFybTwvZmlsZW5hbWU+IEJTUDoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHlvY3RvLWtlcm5lbCBwYXRjaCBhZGQgbXlhcm0gfi90ZXN0LnBhdGNoCi0gICAgIEFkZGVkIHBhdGNoZXM6Ci0gICAgICAgdGVzdC5wYXRjaAorICAgICAgICAgICAgICAgICAgICBnaXQgbG9nICZkYXNoOyZkYXNoO2RlY29yYXRlIDI1N2Y4NDNlYTM2Nzc0NDYyMGYxZDkyOTEwYWZkMmY0NTRlMzE0ODMKIAotICAgICAkIHlvY3RvLWtlcm5lbCBwYXRjaCBhZGQgbXlhcm0gfi95b2N0by10ZXN0bW9kLnBhdGNoCi0gICAgIEFkZGVkIHBhdGNoZXM6Ci0gICAgICAgeW9jdG8tdGVzdG1vZC5wYXRjaAotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIDxub3RlPkFsdGhvdWdoIHRoZSBwcmV2aW91cyBleGFtcGxlIGFkZHMgcGF0Y2hlcyBvbmUgYXQgYSB0aW1lLCBpdCBpcyBwb3NzaWJsZQotICAgICAgICAgICAgICAgICAgICB0byBhZGQgbXVsdGlwbGUgcGF0Y2hlcyBhdCB0aGUgc2FtZSB0aW1lLjwvbm90ZT4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB2ZXJpZnkgcGF0Y2hlcyBoYXZlIGJlZW4gYWRkZWQgYnkgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWwgcGF0Y2ggbGlzdDwvZmlsZW5hbWU+IHN1Yi1jb21tYW5kLgotICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCB5b2N0by1rZXJuZWwgcGF0Y2ggbGlzdCBteWFybQotICAgICBUaGUgY3VycmVudCBzZXQgb2YgbWFjaGluZS1zcGVjaWZpYyBwYXRjaGVzIGZvciBteWFybSBpczoKLSAgICAgICAxKSB0ZXN0LnBhdGNoCi0gICAgICAgMikgeW9jdG8tdGVzdG1vZC5wYXRjaAotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyB1c2UgdGhlIDxmaWxlbmFtZT55b2N0by1rZXJuZWw8L2ZpbGVuYW1lPiBzY3JpcHQgdG8KLSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlIGEgcGF0Y2ggdXNpbmcgdGhlIDxmaWxlbmFtZT55b2N0by1rZXJuZWwgcGF0Y2ggcm08L2ZpbGVuYW1lPiBzdWItY29tbWFuZC4KLSAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgeW9jdG8ta2VybmVsIHBhdGNoIHJtIG15YXJtCi0gICAgIFNwZWNpZnkgdGhlIHBhdGNoZXMgdG8gcmVtb3ZlOgotICAgICAgIDEpIHRlc3QucGF0Y2gKLSAgICAgICAyKSB5b2N0by10ZXN0bW9kLnBhdGNoCi0gICAgIDEKLSAgICAgUmVtb3ZlZCBwYXRjaGVzOgotICAgICAgIHRlc3QucGF0Y2gKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBBZ2FpbiwgdXNpbmcgdGhlIDxmaWxlbmFtZT55b2N0by1rZXJuZWwgcGF0Y2ggbGlzdDwvZmlsZW5hbWU+IHN1Yi1jb21tYW5kLAotICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIHZlcmlmeSB0aGF0IHRoZSBwYXRjaCB3YXMgaW4gZmFjdCByZW1vdmVkOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgeW9jdG8ta2VybmVsIHBhdGNoIGxpc3QgbXlhcm0KLSAgICAgVGhlIGN1cnJlbnQgc2V0IG9mIG1hY2hpbmUtc3BlY2lmaWMgcGF0Y2hlcyBmb3IgbXlhcm0gaXM6Ci0gICAgICAgMSkgeW9jdG8tdGVzdG1vZC5wYXRjaAotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEluIGEgY29tcGxldGVseSBzaW1pbGFyIHdheSwgeW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT55b2N0by1rZXJuZWwgY29uZmlnIGFkZDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIHN1Yi1jb21tYW5kIHRvIGFkZCBvbmUgb3IgbW9yZSBrZXJuZWwgY29uZmlnIGl0ZW0gc2V0dGluZ3MgdG8gYSBCU1AuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZHMgYWRkIGEgY291cGxlIG9mIGNvbmZpZyBpdGVtcyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm15YXJtPC9maWxlbmFtZT4gQlNQOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgeW9jdG8ta2VybmVsIGNvbmZpZyBhZGQgbXlhcm0gQ09ORklHX01JU0NfREVWSUNFUz15Ci0gICAgIEFkZGVkIGl0ZW06Ci0gICAgICAgQ09ORklHX01JU0NfREVWSUNFUz15Ci0KLSAgICAgJCB5b2N0by1rZXJuZWwgY29uZmlnIGFkZCBteWFybSBDT05GSUdfWU9DVE9fVEVTVE1PRD15Ci0gICAgIEFkZGVkIGl0ZW06Ci0gICAgICAgQ09ORklHX1lPQ1RPX1RFU1RNT0Q9eQotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgQWx0aG91Z2ggdGhlIHByZXZpb3VzIGV4YW1wbGUgYWRkcyBjb25maWcgaXRlbXMgb25lIGF0IGEgdGltZSwgaXQgaXMgcG9zc2libGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFkZCBtdWx0aXBsZSBjb25maWcgaXRlbXMgYXQgdGhlIHNhbWUgdGltZS4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGxpc3QgdGhlIGNvbmZpZyBpdGVtcyBub3cgYXNzb2NpYXRlZCB3aXRoIHRoZSBCU1AuCi0gICAgICAgICAgICAgICAgICAgIERvaW5nIHNvIHNob3dzIHlvdSB0aGUgY29uZmlnIGl0ZW1zIHlvdSBhZGRlZCBhcyB3ZWxsIGFzIG90aGVycyBhc3NvY2lhdGVkCi0gICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIEJTUDoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHlvY3RvLWtlcm5lbCBjb25maWcgbGlzdCBteWFybQotICAgICBUaGUgY3VycmVudCBzZXQgb2YgbWFjaGluZS1zcGVjaWZpYyBrZXJuZWwgY29uZmlnIGl0ZW1zIGZvciBteWFybSBpczoKLSAgICAgICAgICAgICAxKSBDT05GSUdfTUlTQ19ERVZJQ0VTPXkKLSAgICAgICAgICAgICAyKSBDT05GSUdfWU9DVE9fVEVTVE1PRD15Ci0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgRmluYWxseSwgeW91IGNhbiByZW1vdmUgb25lIG9yIG1vcmUgY29uZmlnIGl0ZW1zIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsIGNvbmZpZyBybTwvZmlsZW5hbWU+IHN1Yi1jb21tYW5kIGluIGEgbWFubmVyCi0gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlbHkgYW5hbG9nb3VzIHRvIDxmaWxlbmFtZT55b2N0by1rZXJuZWwgcGF0Y2ggcm08L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+Ci0gICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgUmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29tbWl0LCB3aGljaCBpcyB1c3VhbGx5CisgICAgICAgICAgICAgICAgICAgIHRoYXQgaXQgaXMgYSBtZXJnZSBwb2ludCBmb3IgYSBzdGFibGUga2VybmVsIHJlbGVhc2UuCistLT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ09NUEFUSUJMRV9NQUNISU5FJz48ZmlsZW5hbWU+Q09NUEFUSUJMRV9NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgQSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCByZXNvbHZlcyB0byBvbmUgb3IKKyAgICAgICAgICAgICAgICAgICAgbW9yZSB0YXJnZXQgbWFjaGluZXMgd2l0aCB3aGljaCB0aGUgcmVjaXBlCisgICAgICAgICAgICAgICAgICAgIGlzIGNvbXBhdGlibGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJTlVYX1ZFUlNJT04nPjxmaWxlbmFtZT5MSU5VWF9WRVJTSU9OPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIExpbnV4IHZlcnNpb24gZnJvbSBrZXJuZWwub3JnIHVzZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gYnVpbGQgdGhlCisgICAgICAgICAgICAgICAgICAgIGtlcm5lbCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KIDwvY2hhcHRlcj4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9maWd1cmVzL2JzcC1kZXYtZmxvdy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9ic3AtZ3VpZGUvZmlndXJlcy9ic3AtZGV2LWZsb3cucG5nCmluZGV4IDBmODJhMWYuLjJjYTFmZWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9maWd1cmVzL2JzcC1kZXYtZmxvdy5wbmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2ZpZ3VyZXMvYnNwLWRldi1mbG93LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtY29tbW9uLXRhc2tzLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1jb21tb24tdGFza3MueG1sCmluZGV4IDAwODE3MzguLmZlMWJmYmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1jb21tb24tdGFza3MueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1jb21tb24tdGFza3MueG1sCkBAIC0yMiw5MCArMjIsMjQgQEAKICAgICAgICAgICAgIG11bHRpcGxlIGxheWVycy4KICAgICAgICAgICAgIExheWVycyBhbGxvdyB5b3UgdG8gaXNvbGF0ZSBkaWZmZXJlbnQgdHlwZXMgb2YgY3VzdG9taXphdGlvbnMgZnJvbQogICAgICAgICAgICAgZWFjaCBvdGhlci4KLSAgICAgICAgICAgIFlvdSBtaWdodCBmaW5kIGl0IHRlbXB0aW5nIHRvIGtlZXAgZXZlcnl0aGluZyBpbiBvbmUgbGF5ZXIgd2hlbgotICAgICAgICAgICAgd29ya2luZyBvbiBhIHNpbmdsZSBwcm9qZWN0LgotICAgICAgICAgICAgSG93ZXZlciwgdGhlIG1vcmUgbW9kdWxhciB5b3VyIE1ldGFkYXRhLCB0aGUgZWFzaWVyCi0gICAgICAgICAgICBpdCBpcyB0byBjb3BlIHdpdGggZnV0dXJlIGNoYW5nZXMuCisgICAgICAgICAgICBGb3IgaW50cm9kdWN0b3J5IGluZm9ybWF0aW9uIG9uIHRoZSBZb2N0byBQcm9qZWN0IExheWVyIE1vZGVsLAorICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjdGhlLXlvY3RvLXByb2plY3QtbGF5ZXItbW9kZWwnPlRoZSBZb2N0byBQcm9qZWN0IExheWVyIE1vZGVsPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCiAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRvIGlsbHVzdHJhdGUgaG93IGxheWVycyBhcmUgdXNlZCB0byBrZWVwIHRoaW5ncyBtb2R1bGFyLCBjb25zaWRlcgotICAgICAgICAgICAgbWFjaGluZSBjdXN0b21pemF0aW9ucy4KLSAgICAgICAgICAgIFRoZXNlIHR5cGVzIG9mIGN1c3RvbWl6YXRpb25zIHR5cGljYWxseSByZXNpZGUgaW4gYSBzcGVjaWFsIGxheWVyLAotICAgICAgICAgICAgcmF0aGVyIHRoYW4gYSBnZW5lcmFsIGxheWVyLCBjYWxsZWQgYSBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkKLSAgICAgICAgICAgIExheWVyLgotICAgICAgICAgICAgRnVydGhlcm1vcmUsIHRoZSBtYWNoaW5lIGN1c3RvbWl6YXRpb25zIHNob3VsZCBiZSBpc29sYXRlZCBmcm9tCi0gICAgICAgICAgICByZWNpcGVzIGFuZCBNZXRhZGF0YSB0aGF0IHN1cHBvcnQgYSBuZXcgR1VJIGVudmlyb25tZW50LAotICAgICAgICAgICAgZm9yIGV4YW1wbGUuCi0gICAgICAgICAgICBUaGlzIHNpdHVhdGlvbiBnaXZlcyB5b3UgYSBjb3VwbGUgb2YgbGF5ZXJzOiBvbmUgZm9yIHRoZSBtYWNoaW5lCi0gICAgICAgICAgICBjb25maWd1cmF0aW9ucywgYW5kIG9uZSBmb3IgdGhlIEdVSSBlbnZpcm9ubWVudC4KLSAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kLCBob3dldmVyLCB0aGF0IHRoZSBCU1AgbGF5ZXIgY2FuCi0gICAgICAgICAgICBzdGlsbCBtYWtlIG1hY2hpbmUtc3BlY2lmaWMgYWRkaXRpb25zIHRvIHJlY2lwZXMgd2l0aGluIHRoZSBHVUkKLSAgICAgICAgICAgIGVudmlyb25tZW50IGxheWVyIHdpdGhvdXQgcG9sbHV0aW5nIHRoZSBHVUkgbGF5ZXIgaXRzZWxmCi0gICAgICAgICAgICB3aXRoIHRob3NlIG1hY2hpbmUtc3BlY2lmaWMgY2hhbmdlcy4KLSAgICAgICAgICAgIFlvdSBjYW4gYWNjb21wbGlzaCB0aGlzIHRocm91Z2ggYSByZWNpcGUgdGhhdCBpcyBhIEJpdEJha2UgYXBwZW5kCi0gICAgICAgICAgICAoPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+KSBmaWxlLCB3aGljaCBpcyBkZXNjcmliZWQgbGF0ZXIKLSAgICAgICAgICAgIGluIHRoaXMgc2VjdGlvbi4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIEZvciBnZW5lcmFsIGluZm9ybWF0aW9uIG9uIEJTUCBsYXllciBzdHJ1Y3R1cmUsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNic3AnPkJvYXJkIFN1cHBvcnQgUGFja2FnZXMgKEJTUCkgLSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0neW9jdG8tcHJvamVjdC1sYXllcnMnPgotICAgICAgICAgICAgPHRpdGxlPkxheWVyczwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgICAgICBjb250YWlucyBib3RoIGdlbmVyYWwgbGF5ZXJzIGFuZCBCU1AKLSAgICAgICAgICAgICAgICBsYXllcnMgcmlnaHQgb3V0IG9mIHRoZSBib3guCi0gICAgICAgICAgICAgICAgWW91IGNhbiBlYXNpbHkgaWRlbnRpZnkgbGF5ZXJzIHRoYXQgc2hpcCB3aXRoIGEKLSAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UgaW4gdGhlIFNvdXJjZSBEaXJlY3RvcnkgYnkgdGhlaXIKLSAgICAgICAgICAgICAgICBmb2xkZXIgbmFtZXMuCi0gICAgICAgICAgICAgICAgRm9sZGVycyB0aGF0IHJlcHJlc2VudCBsYXllcnMgdHlwaWNhbGx5IGhhdmUgbmFtZXMgdGhhdCBiZWdpbiB3aXRoCi0gICAgICAgICAgICAgICAgdGhlIHN0cmluZyA8ZmlsZW5hbWU+bWV0YS08L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgSXQgaXMgbm90IGEgcmVxdWlyZW1lbnQgdGhhdCBhIGxheWVyIG5hbWUgYmVnaW4gd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgcHJlZml4IDxmaWxlbmFtZT5tZXRhLTwvZmlsZW5hbWU+LCBidXQgaXQgaXMgYSBjb21tb25seQotICAgICAgICAgICAgICAgICAgICBhY2NlcHRlZCBzdGFuZGFyZCBpbiB0aGUgWW9jdG8gUHJvamVjdCBjb21tdW5pdHkuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB3aGVuIHlvdSBzZXQgdXAgdGhlIFNvdXJjZSBEaXJlY3Rvcnkgc3RydWN0dXJlLAotICAgICAgICAgICAgICAgIHlvdSB3aWxsIHNlZSBzZXZlcmFsIGxheWVyczoKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXNrZWxldG9uPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtc2VsZnRlc3Q8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5PC9maWxlbmFtZT4sIGFuZAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXlvY3RvLWJzcDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIEVhY2ggb2YgdGhlc2UgZm9sZGVycyByZXByZXNlbnRzIGEgZGlzdGluY3QgbGF5ZXIuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEFzIGFub3RoZXIgZXhhbXBsZSwgaWYgeW91IHNldCB1cCBhIGxvY2FsIGNvcHkgb2YgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeQotICAgICAgICAgICAgICAgIGFuZCB0aGVuIGV4cGxvcmUgdGhlIGZvbGRlciBvZiB0aGF0IGdlbmVyYWwgbGF5ZXIsCi0gICAgICAgICAgICAgICAgeW91IHdpbGwgZGlzY292ZXIgbWFueSBJbnRlbC1zcGVjaWZpYyBCU1AgbGF5ZXJzIGluc2lkZS4KLSAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBCU1AgbGF5ZXJzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKQotICAgICAgICAgICAgICAgIERldmVsb3BlcidzIEd1aWRlLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KICAgICAgICAgPHNlY3Rpb24gaWQ9J2NyZWF0aW5nLXlvdXItb3duLWxheWVyJz4KICAgICAgICAgICAgIDx0aXRsZT5DcmVhdGluZyBZb3VyIE93biBMYXllcjwvdGl0bGU+CiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIEl0IGlzIHZlcnkgZWFzeSB0byBjcmVhdGUgeW91ciBvd24gbGF5ZXJzIHRvIHVzZSB3aXRoIHRoZQogICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3Qgc2hpcHMgd2l0aCBzY3JpcHRzIHRoYXQgc3BlZWQgdXAgY3JlYXRpbmcKLSAgICAgICAgICAgICAgICBnZW5lcmFsIGxheWVycyBhbmQgQlNQIGxheWVycy4KKyAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBzaGlwcyB3aXRoIHRvb2xzIHRoYXQgc3BlZWQgdXAgY3JlYXRpbmcKKyAgICAgICAgICAgICAgICBsYXllcnMuCiAgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgc3RlcHMgeW91IHBlcmZvcm0gYnkgaGFuZCB0byBjcmVhdGUKLSAgICAgICAgICAgICAgICBhIGxheWVyIHNvIHRoYXQgeW91IGNhbiBiZXR0ZXIgdW5kZXJzdGFuZCB0aGVtLgotICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbGF5ZXItY3JlYXRpb24gc2NyaXB0cywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNjcmVhdGluZy1hLW5ldy1ic3AtbGF5ZXItdXNpbmctdGhlLXlvY3RvLWJzcC1zY3JpcHQnPkNyZWF0aW5nIGEgTmV3IEJTUCBMYXllciBVc2luZyB0aGUgeW9jdG8tYnNwIFNjcmlwdDwvdWxpbms+IgorICAgICAgICAgICAgICAgIGxheWVycyBzbyB0aGF0IHlvdSBjYW4gYmV0dGVyIHVuZGVyc3RhbmQgdGhlbS4KKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxheWVyLWNyZWF0aW9uIHRvb2xzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2NyZWF0aW5nLWEtbmV3LWJzcC1sYXllci11c2luZy10aGUtYml0YmFrZS1sYXllcnMtc2NyaXB0Jz5DcmVhdGluZyBhIE5ldyBCU1AgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvdWxpbms+IgogICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApCiAgICAgICAgICAgICAgICAgRGV2ZWxvcGVyJ3MgR3VpZGUgYW5kIHRoZQogICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjcmVhdGluZy1hLWdlbmVyYWwtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+Q3JlYXRpbmcgYSBHZW5lcmFsIExheWVyIFVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBTY3JpcHQ8L2xpbms+IgpAQCAtMTEzLDQwICs0Nyw3MCBAQAogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBGb2xsb3cgdGhlc2UgZ2VuZXJhbCBzdGVwcyB0byBjcmVhdGUgeW91ciBsYXllciB3aXRob3V0IHRoZSBhaWQgb2YgYSBzY3JpcHQ6CisgICAgICAgICAgICAgICAgRm9sbG93IHRoZXNlIGdlbmVyYWwgc3RlcHMgdG8gY3JlYXRlIHlvdXIgbGF5ZXIgd2l0aG91dCB1c2luZworICAgICAgICAgICAgICAgIHRvb2xzOgogICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5DaGVjayBFeGlzdGluZyBMYXllcnM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNoZWNrIEV4aXN0aW5nIExheWVyczo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgQmVmb3JlIGNyZWF0aW5nIGEgbmV3IGxheWVyLCB5b3Ugc2hvdWxkIGJlIHN1cmUgc29tZW9uZQogICAgICAgICAgICAgICAgICAgICAgICAgaGFzIG5vdCBhbHJlYWR5IGNyZWF0ZWQgYSBsYXllciBjb250YWluaW5nIHRoZSBNZXRhZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAgeW91IG5lZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9sYXllcnMub3BlbmVtYmVkZGVkLm9yZy9sYXllcmluZGV4L2xheWVycy8nPjxmaWxlbmFtZT5PcGVuRW1iZWRkZWQgTWV0YWRhdGEgSW5kZXg8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGF5ZXJzLm9wZW5lbWJlZGRlZC5vcmcvbGF5ZXJpbmRleC9sYXllcnMvJz5PcGVuRW1iZWRkZWQgTWV0YWRhdGEgSW5kZXg8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGEgbGlzdCBvZiBsYXllcnMgZnJvbSB0aGUgT3BlbkVtYmVkZGVkIGNvbW11bml0eQogICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBjYW4gYmUgdXNlZCBpbiB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjb3VsZCBmaW5kIGEgbGF5ZXIgdGhhdCBpcyBpZGVudGljYWwgb3IgY2xvc2UgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHdoYXQgeW91IG5lZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5DcmVhdGUgYSBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhIERpcmVjdG9yeTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIHRoZSBkaXJlY3RvcnkgZm9yIHlvdXIgbGF5ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICBXaGlsZSBub3Qgc3RyaWN0bHkgcmVxdWlyZWQsIHByZXBlbmQgdGhlIG5hbWUgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBmb2xkZXIgd2l0aCB0aGUgc3RyaW5nIDxmaWxlbmFtZT5tZXRhLTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgY3JlYXRlIHRoZSBsYXllciwgYmUgc3VyZSB0byBjcmVhdGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgaW4gYW4gYXJlYSBub3QgYXNzb2NpYXRlZCB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiB0aGUgY2xvbmVkIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeSkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPldoaWxlIG5vdCBzdHJpY3RseSByZXF1aXJlZCwgcHJlcGVuZCB0aGUgbmFtZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRpcmVjdG9yeSB3aXRoIHRoZSBzdHJpbmcgIm1ldGEtIi4KICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlOgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBtZXRhLW15bGF5ZXIKICAgICAgbWV0YS1HVUlfeHl6CiAgICAgIG1ldGEtbXltYWNoaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBXaXRoIHJhcmUgZXhjZXB0aW9ucywgYSBsYXllcidzIG5hbWUgZm9sbG93cyB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBtZXRhLTxyZXBsYWNlYWJsZT5yb290X25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIHRoaXMgbGF5ZXIgbmFtaW5nIGNvbnZlbnRpb24gY2FuCisgICAgICAgICAgICAgICAgICAgICAgICBzYXZlIHlvdSB0cm91YmxlIGxhdGVyIHdoZW4gdG9vbHMsIGNvbXBvbmVudHMsIG9yCisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgImFzc3VtZSIgeW91ciBsYXllciBuYW1lIGJlZ2lucyB3aXRoICJtZXRhLSIuCisgICAgICAgICAgICAgICAgICAgICAgICBBIG5vdGFibGUgZXhhbXBsZSBpcyBpbiBjb25maWd1cmF0aW9uIGZpbGVzIGFzCisgICAgICAgICAgICAgICAgICAgICAgICBzaG93biBpbiB0aGUgZm9sbG93aW5nIHN0ZXAgd2hlcmUgbGF5ZXIgbmFtZXMgd2l0aG91dAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlICJtZXRhLSIgc3RyaW5nIGFyZSBhcHBlbmRlZAorICAgICAgICAgICAgICAgICAgICAgICAgdG8gc2V2ZXJhbCB2YXJpYWJsZXMgdXNlZCBpbiB0aGUgY29uZmlndXJhdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkNyZWF0ZSBhIExheWVyIENvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgRmlsZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICBJbnNpZGUgeW91ciBuZXcgbGF5ZXIgZm9sZGVyLCB5b3UgbmVlZCB0byBjcmVhdGUgYQotICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sYXllci5jb25mPC9maWxlbmFtZT4gZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgSXQgaXMgZWFzaWVzdCB0byB0YWtlIGFuIGV4aXN0aW5nIGxheWVyIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBhbmQgY29weSB0aGF0IHRvIHlvdXIgbGF5ZXIncwotICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBhbmQgdGhlbiBtb2RpZnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIGZpbGUgYXMgbmVlZGVkLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXlvY3RvLWJzcC9jb25mL2xheWVyLmNvbmY8L2ZpbGVuYW1lPiBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgIGRlbW9uc3RyYXRlcyB0aGUgcmVxdWlyZWQgc3ludGF4OgotICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nZGV2LWxheWVyLWNvbmZpZy1maWxlLWRlc2NyaXB0aW9uJz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgYSBMYXllciBDb25maWd1cmF0aW9uIEZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluc2lkZSB5b3VyIG5ldyBsYXllciBmb2xkZXIsIHlvdSBuZWVkIHRvIGNyZWF0ZSBhCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sYXllci5jb25mPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIGVhc2llc3QgdG8gdGFrZSBhbiBleGlzdGluZyBsYXllciBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIGFuZCBjb3B5IHRoYXQgdG8geW91ciBsYXllcidzCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBhbmQgdGhlbiBtb2RpZnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIGFzIG5lZWRlZC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwL2NvbmYvbGF5ZXIuY29uZjwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS9wb2t5L3RyZWUvbWV0YS15b2N0by1ic3AvY29uZic+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBkZW1vbnN0cmF0ZXMgdGhlIHJlcXVpcmVkIHN5bnRheC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciB5b3VyIGxheWVyLCB5b3UgbmVlZCB0byByZXBsYWNlICJ5b2N0b2JzcCIgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgYSB1bmlxdWUgaWRlbnRpZmllciBmb3IgeW91ciBsYXllciAoZS5nLiAibWFjaGluZXh5eiIKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhIGxheWVyIG5hbWVkICJtZXRhLW1hY2hpbmV4eXoiKToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgIyBXZSBoYXZlIGEgY29uZiBhbmQgY2xhc3NlcyBkaXJlY3RvcnksIGFkZCB0byBCQlBBVEgKICAgICAgQkJQQVRIIC49ICI6JHtMQVlFUkRJUn0iCiAKQEAgLTE1Nyw3NSArMTIxLDgyIEBACiAgICAgIEJCRklMRV9DT0xMRUNUSU9OUyArPSAieW9jdG9ic3AiCiAgICAgIEJCRklMRV9QQVRURVJOX3lvY3RvYnNwID0gIl4ke0xBWUVSRElSfS8iCiAgICAgIEJCRklMRV9QUklPUklUWV95b2N0b2JzcCA9ICI1IgotICAgICBMQVlFUlZFUlNJT05feW9jdG9ic3AgPSAiMyIKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5IZXJlIGlzIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBleGFtcGxlOgorICAgICBMQVlFUlZFUlNJT05feW9jdG9ic3AgPSAiNCIKKyAgICAgTEFZRVJTRVJJRVNfQ09NUEFUX3lvY3RvYnNwID0gIiZESVNUUk9fTkFNRV9OT19DQVA7IgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBsYXllciBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOgogICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIGNvbmZpZ3VyYXRpb24gYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXMgZGlyZWN0b3J5IGlzIGFwcGVuZGVkIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CQlBBVEgnPjxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPjwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbCBub24tZGlzdHJvIGxheWVycywgd2hpY2ggaW5jbHVkZSBhbGwgQlNQCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnMsIGFyZSBleHBlY3RlZCB0byBhcHBlbmQgdGhlIGxheWVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QkJQQVRIPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbiB0aGUgb3RoZXIgaGFuZCwgZGlzdHJvIGxheWVycywgc3VjaCBhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reTwvZmlsZW5hbWU+LCBjYW4gY2hvb3NlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBlbmZvcmNlIHRoZWlyIG93biBwcmVjZWRlbmNlIG92ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhbiBleGFtcGxlIG9mIHRoYXQgc3ludGF4LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGF5ZXIuY29uZjwvZmlsZW5hbWU+IGZpbGUgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPm1ldGEtcG9reTwvZmlsZW5hbWU+IGxheWVyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSByZWNpcGVzIGZvciB0aGUgbGF5ZXJzIGFyZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRlZCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCRklMRVMnPkJCRklMRVM8L3VsaW5rPjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCUEFUSCc+PGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHMgdGhlIGxheWVyJ3Mgcm9vdCBkaXJlY3RvcnkgdG8gQml0QmFrZSdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaCBwYXRoLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJvdWdoIHRoZSB1c2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiB2YXJpYWJsZSwgQml0QmFrZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGVzIGNsYXNzIGZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMsIGFuZCBmaWxlcyB0aGF0IGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlZCB3aXRoIDxmaWxlbmFtZT5pbmNsdWRlPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZXF1aXJlPC9maWxlbmFtZT4gc3RhdGVtZW50cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoZXNlIGNhc2VzLCBCaXRCYWtlIHVzZXMgdGhlIGZpcnN0IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBtYXRjaGVzIHRoZSBuYW1lIGZvdW5kIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSB3YXkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4gdmFyaWFibGUgaXMgdXNlZCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIHJlY29tbWVuZGVkLCB0aGVyZWZvcmUsIHRoYXQgeW91IHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWUgY2xhc3MgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZW5hbWVzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgY3VzdG9tIGxheWVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJGSUxFX0NPTExFQ1RJT05TJz5CQkZJTEVfQ09MTEVDVElPTlM8L3VsaW5rPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGlzIHRoZW4gYXBwZW5kZWQgd2l0aCB0aGUgbGF5ZXIgbmFtZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCRklMRV9QQVRURVJOJz5CQkZJTEVfUEFUVEVSTjwvdWxpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaXMgc2V0IHRvIGEgcmVndWxhciBleHByZXNzaW9uIGFuZCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkIHRvIG1hdGNoIGZpbGVzIGZyb20KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCRklMRVM8L2ZpbGVuYW1lPiBpbnRvIGEgcGFydGljdWxhcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCRklMRVMnPjxmaWxlbmFtZT5CQkZJTEVTPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyB0aGUgbG9jYXRpb24gZm9yIGFsbCByZWNpcGVzIGluIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxBWUVSRElSJz5MQVlFUkRJUjwvdWxpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgdXNlZCB0byBtYWtlIDxmaWxlbmFtZT5CQkZJTEVfUEFUVEVSTjwvZmlsZW5hbWU+IG1hdGNoIHdpdGhpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIncyBwYXRoLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CQkZJTEVfUFJJT1JJVFknPkJCRklMRV9QUklPUklUWTwvdWxpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdGhlbiBhc3NpZ25zIGEgcHJpb3JpdHkgdG8gdGhlIGxheWVyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcHBseWluZyBwcmlvcml0aWVzIGlzIHVzZWZ1bCBpbiBzaXR1YXRpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIHRoZSBzYW1lIHJlY2lwZSBtaWdodCBhcHBlYXIgaW4gbXVsdGlwbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzIGFuZCBhbGxvd3MgeW91IHRvIGNob29zZSB0aGUgbGF5ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB0YWtlcyBwcmVjZWRlbmNlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MQVlFUlZFUlNJT04nPkxBWUVSVkVSU0lPTjwvdWxpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgb3B0aW9uYWxseSBzcGVjaWZpZXMgdGhlIHZlcnNpb24gb2YgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllciBhcyBhIHNpbmdsZSBudW1iZXIuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Ob3RlIHRoZSB1c2Ugb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxBWUVSRElSJz5MQVlFUkRJUjwvdWxpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLCB3aGljaCBleHBhbmRzIHRvIHRoZSBkaXJlY3Rvcnkgb2YgdGhlIGN1cnJlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRocm91Z2ggdGhlIHVzZSBvZiB0aGUgPGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgQml0QmFrZSBsb2NhdGVzIGNsYXNzIGZpbGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPi5iYmNsYXNzPC9maWxlbmFtZT4pLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcywgYW5kIGZpbGVzIHRoYXQgYXJlIGluY2x1ZGVkCi0gICAgICAgICAgICAgICAgICAgICAgICB3aXRoIDxmaWxlbmFtZT5pbmNsdWRlPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVxdWlyZTwvZmlsZW5hbWU+IHN0YXRlbWVudHMuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhlc2UgY2FzZXMsIEJpdEJha2UgdXNlcyB0aGUgZmlyc3QgZmlsZSB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVzIHRoZSBuYW1lIGZvdW5kIGluIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgc2ltaWxhciB0byB0aGUgd2F5IHRoZSA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyB1c2VkIGZvciBiaW5hcmllcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIHJlY29tbWVuZGVkLCB0aGVyZWZvcmUsIHRoYXQgeW91IHVzZSB1bmlxdWUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzIGFuZCBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZXMgaW4geW91ciBjdXN0b20gbGF5ZXIuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QWRkIENvbnRlbnQ6PC9lbXBoYXNpcz4gRGVwZW5kaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgdHlwZSBvZiBsYXllciwgYWRkIHRoZSBjb250ZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CQkZJTEVfQ09MTEVDVElPTlMnPjxmaWxlbmFtZT5CQkZJTEVfQ09MTEVDVElPTlM8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFc3RhYmxpc2hlcyB0aGUgY3VycmVudCBsYXllciB0aHJvdWdoIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlIGlkZW50aWZpZXIgdGhhdCBpcyB1c2VkIHRocm91Z2hvdXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gcmVmZXIgdG8gdGhlIGxheWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZSBpZGVudGlmaWVyICJ5b2N0b2JzcCIgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgY29udGFpbmVyIGxheWVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVkICJtZXRhLXlvY3RvLWJzcCIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCRklMRV9QQVRURVJOJz48ZmlsZW5hbWU+QkJGSUxFX1BBVFRFUk48L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHBhbmRzIGltbWVkaWF0ZWx5IGR1cmluZyBwYXJzaW5nIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGUgdGhlIGRpcmVjdG9yeSBvZiB0aGUgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCRklMRV9QUklPUklUWSc+PGZpbGVuYW1lPkJCRklMRV9QUklPUklUWTwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVzdGFibGlzaGVzIGEgcHJpb3JpdHkgdG8gdXNlIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGVzIGluIHRoZSBsYXllciB3aGVuIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZHMgcmVjaXBlcyBvZiB0aGUgc2FtZSBuYW1lIGluIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxBWUVSVkVSU0lPTic+PGZpbGVuYW1lPkxBWUVSVkVSU0lPTjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVzdGFibGlzaGVzIGEgdmVyc2lvbiBudW1iZXIgZm9yIHRoZSBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhpcyB2ZXJzaW9uIG51bWJlciB0byBzcGVjaWZ5IHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3QgdmVyc2lvbiBvZiB0aGUgbGF5ZXIgYXMgYSBkZXBlbmRlbmN5IHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MQVlFUkRFUEVORFMnPjxmaWxlbmFtZT5MQVlFUkRFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MQVlFUlNFUklFU19DT01QQVQnPjxmaWxlbmFtZT5MQVlFUlNFUklFU19DT01QQVQ8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0cyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL1JlbGVhc2VzJz5Zb2N0byBQcm9qZWN0PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZXMgZm9yIHdoaWNoIHRoZSBjdXJyZW50IHZlcnNpb24gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBhIGdvb2Qgd2F5IHRvIGluZGljYXRlIGhvdworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cC10by1kYXRlIHlvdXIgcGFydGljdWxhciBsYXllciBpcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QWRkIENvbnRlbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiBsYXllciwgYWRkIHRoZSBjb250ZW50LgogICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGxheWVyIGFkZHMgc3VwcG9ydCBmb3IgYSBtYWNoaW5lLCBhZGQgdGhlIG1hY2hpbmUKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gaW4gYSA8ZmlsZW5hbWU+Y29uZi9tYWNoaW5lLzwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIHdpdGhpbiB0aGUgbGF5ZXIuCkBAIC0yMzUsOSArMjA2LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgbGF5ZXIgaW50cm9kdWNlcyBuZXcgcmVjaXBlcywgcHV0IHRoZSByZWNpcGVzCiAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCBpbiA8ZmlsZW5hbWU+cmVjaXBlcy0qPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmRpcmVjdG9yaWVzIHdpdGhpbiB0aGUgbGF5ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT5JbiBvcmRlciB0byBiZSBjb21wbGlhbnQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIGxheWVyIG11c3QgY29udGFpbiBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjYnNwLWZpbGVsYXlvdXQtcmVhZG1lJz5SRUFETUUgZmlsZS48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGFuIGV4cGxhbmF0aW9uIG9mIGxheWVyIGhpZXJhcmNoeSB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgY29tcGxpYW50IHdpdGggdGhlIFlvY3RvIFByb2plY3QsIHNlZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNic3AtZmlsZWxheW91dCc+RXhhbXBsZSBGaWxlc3lzdGVtIExheW91dDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGUuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpAQCAtNDkyLDcgKzQ2Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHRhYmxlIGV4cGxhbmF0aW9uIGZvciBhbnkgcXVlc3Rpb25zIGFuc3dlcmVkICJObyIuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gYmUgYSBZb2N0byBQcm9qZWN0IE1lbWJlciBPcmdhbml6YXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBCZSBhIFlvY3RvIFByb2plY3QgTWVtYmVyIE9yZ2FuaXphdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgPC9wYXJhPgpAQCAtNTYyLDcgKzUzNyw3IEBACiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBzY3JpcHQgZGl2aWRlcyB0ZXN0cyBpbnRvIHRocmVlIGFyZWFzOiBDT01NT04sIEJTRCwKKyAgICAgICAgICAgICAgICAgICAgVGhlIHNjcmlwdCBkaXZpZGVzIHRlc3RzIGludG8gdGhyZWUgYXJlYXM6IENPTU1PTiwgQlNQLAogICAgICAgICAgICAgICAgICAgICBhbmQgRElTVFJPLgogICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgZ2l2ZW4gYSBkaXN0cmlidXRpb24gbGF5ZXIgKERJU1RSTyksIHRoZQogICAgICAgICAgICAgICAgICAgICBsYXllciBtdXN0IHBhc3MgYm90aCB0aGUgQ09NTU9OIGFuZCBESVNUUk8gcmVsYXRlZCB0ZXN0cy4KQEAgLTY0NiwyMyArNjIxLDI2IEBACiAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIGhvdyB0byBlbmFibGUgYSBsYXllciBuYW1lZAogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW15bGF5ZXI8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIExDT05GX1ZFUlNJT04gPSAiNiIKKyAgICAgIyBQT0tZX0JCTEFZRVJTX0NPTkZfVkVSU0lPTiBpcyBpbmNyZWFzZWQgZWFjaCB0aW1lIGJ1aWxkL2NvbmYvYmJsYXllcnMuY29uZgorICAgICAjIGNoYW5nZXMgaW5jb21wYXRpYmx5CisgICAgIFBPS1lfQkJMQVlFUlNfQ09ORl9WRVJTSU9OID0gIjIiCiAKICAgICAgQkJQQVRIID0gIiR7VE9QRElSfSIKICAgICAgQkJGSUxFUyA/PSAiIgogCiAgICAgIEJCTEFZRVJTID89ICIgXAotICAgICAgICRIT01FL3Bva3kvbWV0YSBcCi0gICAgICAgJEhPTUUvcG9reS9tZXRhLXBva3kgXAotICAgICAgICRIT01FL3Bva3kvbWV0YS15b2N0by1ic3AgXAotICAgICAgICRIT01FL3Bva3kvbWV0YS1teWxheWVyIFwKKyAgICAgICAvaG9tZS88cmVwbGFjZWFibGU+dXNlcjwvcmVwbGFjZWFibGU+L3Bva3kvbWV0YSBcCisgICAgICAgL2hvbWUvPHJlcGxhY2VhYmxlPnVzZXI8L3JlcGxhY2VhYmxlPi9wb2t5L21ldGEtcG9reSBcCisgICAgICAgL2hvbWUvPHJlcGxhY2VhYmxlPnVzZXI8L3JlcGxhY2VhYmxlPi9wb2t5L21ldGEteW9jdG8tYnNwIFwKKyAgICAgICAvaG9tZS88cmVwbGFjZWFibGU+dXNlcjwvcmVwbGFjZWFibGU+L3Bva3kvbWV0YS1teWxheWVyIFwKICAgICAgICAiCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBCaXRCYWtlIHBhcnNlcyBlYWNoIDxmaWxlbmFtZT5jb25mL2xheWVyLmNvbmY8L2ZpbGVuYW1lPiBmaWxlCi0gICAgICAgICAgICAgICAgYXMgc3BlY2lmaWVkIGluIHRoZSA8ZmlsZW5hbWU+QkJMQVlFUlM8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgIGZyb20gdGhlIHRvcCBkb3duIGFzIHNwZWNpZmllZCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QkJMQVlFUlM8L2ZpbGVuYW1lPiB2YXJpYWJsZQogICAgICAgICAgICAgICAgIHdpdGhpbiB0aGUgPGZpbGVuYW1lPmNvbmYvYmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUuCiAgICAgICAgICAgICAgICAgRHVyaW5nIHRoZSBwcm9jZXNzaW5nIG9mIGVhY2gKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sYXllci5jb25mPC9maWxlbmFtZT4gZmlsZSwgQml0QmFrZSBhZGRzIHRoZQpAQCAtODQwLDggKzgxOCw3IEBACiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBUbyBzcGVjaWZ5IHRoZSBsYXllcidzIHByaW9yaXR5IG1hbnVhbGx5LCB1c2UgdGhlCiAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCRklMRV9QUklPUklUWSc+PGZpbGVuYW1lPkJCRklMRV9QUklPUklUWTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZToKKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgYXBwZW5kIHRoZSBsYXllcidzIHJvb3QgbmFtZToKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIEJCRklMRV9QUklPUklUWV9teWxheWVyID0gIjEiCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgpAQCAtODYyLDcgKzgzOSw4IEBACiAgICAgICAgICAgICA8dGl0bGU+TWFuYWdpbmcgTGF5ZXJzPC90aXRsZT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIEJpdEJha2UgbGF5ZXIgbWFuYWdlbWVudCB0b29sIHRvIHByb3ZpZGUgYSB2aWV3CisgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIEJpdEJha2UgbGF5ZXIgbWFuYWdlbWVudCB0b29sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gdG8gcHJvdmlkZSBhIHZpZXcKICAgICAgICAgICAgICAgICBpbnRvIHRoZSBzdHJ1Y3R1cmUgb2YgcmVjaXBlcyBhY3Jvc3MgYSBtdWx0aS1sYXllciBwcm9qZWN0LgogICAgICAgICAgICAgICAgIEJlaW5nIGFibGUgdG8gZ2VuZXJhdGUgb3V0cHV0IHRoYXQgcmVwb3J0cyBvbiBjb25maWd1cmVkIGxheWVycwogICAgICAgICAgICAgICAgIHdpdGggdGhlaXIgcGF0aHMgYW5kIHByaW9yaXRpZXMgYW5kIG9uCkBAIC04NzEsNDIgKzg0OSw4OCBAQAogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBmb3JtIHdoZW4gcnVubmluZyB0aGUgbGF5ZXIgbWFuYWdlbWVudCB0b29sLgorICAgICAgICAgICAgICAgIEZvciBoZWxwIG9uIHRoZSBCaXRCYWtlIGxheWVyIG1hbmFnZW1lbnQgdG9vbCwgdXNlIHRoZQorICAgICAgICAgICAgICAgIGZvbGxvd2luZyBjb21tYW5kOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlLWxheWVycyA8cmVwbGFjZWFibGU+Y29tbWFuZDwvcmVwbGFjZWFibGU+IFs8cmVwbGFjZWFibGU+YXJndW1lbnRzPC9yZXBsYWNlYWJsZT5dCisgICAgICQgYml0YmFrZS1sYXllcnMgLS1oZWxwCisgICAgIE5PVEU6IFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyLi4uCisgICAgIHVzYWdlOiBiaXRiYWtlLWxheWVycyBbLWRdIFstcV0gWy1GXSBbLS1jb2xvciBDT0xPUl0gWy1oXSAmbHQ7c3ViY29tbWFuZCZndDsgLi4uCisKKyAgICAgQml0QmFrZSBsYXllcnMgdXRpbGl0eQorCisgICAgIG9wdGlvbmFsIGFyZ3VtZW50czoKKyAgICAgICAtZCwgLS1kZWJ1ZyAgICAgICAgICAgRW5hYmxlIGRlYnVnIG91dHB1dAorICAgICAgIC1xLCAtLXF1aWV0ICAgICAgICAgICBQcmludCBvbmx5IGVycm9ycworICAgICAgIC1GLCAtLWZvcmNlICAgICAgICAgICBGb3JjZSBhZGQgd2l0aG91dCByZWNpcGUgcGFyc2UgdmVyaWZpY2F0aW9uCisgICAgICAgLS1jb2xvciBDT0xPUiAgICAgICAgIENvbG9yaXplIG91dHB1dCAod2hlcmUgQ09MT1IgaXMgYXV0bywgYWx3YXlzLCBuZXZlcikKKyAgICAgICAtaCwgLS1oZWxwICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAorCisgICAgIHN1YmNvbW1hbmRzOgorICAgICAgICZsdDtzdWJjb21tYW5kJmd0OworICAgICAgICAgc2hvdy1sYXllcnMgICAgICAgICBzaG93IGN1cnJlbnQgY29uZmlndXJlZCBsYXllcnMuCisgICAgICAgICBzaG93LW92ZXJsYXllZCAgICAgIGxpc3Qgb3ZlcmxheWVkIHJlY2lwZXMgKHdoZXJlIHRoZSBzYW1lIHJlY2lwZSBleGlzdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYW5vdGhlciBsYXllcikKKyAgICAgICAgIHNob3ctcmVjaXBlcyAgICAgICAgbGlzdCBhdmFpbGFibGUgcmVjaXBlcywgc2hvd2luZyB0aGUgbGF5ZXIgdGhleSBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQgYnkKKyAgICAgICAgIHNob3ctYXBwZW5kcyAgICAgICAgbGlzdCBiYmFwcGVuZCBmaWxlcyBhbmQgcmVjaXBlIGZpbGVzIHRoZXkgYXBwbHkgdG8KKyAgICAgICAgIHNob3ctY3Jvc3MtZGVwZW5kcyAgU2hvdyBkZXBlbmRlbmNpZXMgYmV0d2VlbiByZWNpcGVzIHRoYXQgY3Jvc3MgbGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRhcmllcy4KKyAgICAgICAgIGFkZC1sYXllciAgICAgICAgICAgQWRkIG9uZSBvciBtb3JlIGxheWVycyB0byBiYmxheWVycy5jb25mLgorICAgICAgICAgcmVtb3ZlLWxheWVyICAgICAgICBSZW1vdmUgb25lIG9yIG1vcmUgbGF5ZXJzIGZyb20gYmJsYXllcnMuY29uZi4KKyAgICAgICAgIGZsYXR0ZW4gICAgICAgICAgICAgZmxhdHRlbiBsYXllciBjb25maWd1cmF0aW9uIGludG8gYSBzZXBhcmF0ZSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgbGF5ZXJpbmRleC1mZXRjaCAgICBGZXRjaGVzIGEgbGF5ZXIgZnJvbSBhIGxheWVyIGluZGV4IGFsb25nIHdpdGggaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVudCBsYXllcnMsIGFuZCBhZGRzIHRoZW0gdG8gY29uZi9iYmxheWVycy5jb25mLgorICAgICAgICAgbGF5ZXJpbmRleC1zaG93LWRlcGVuZHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmluZCBsYXllciBkZXBlbmRlbmNpZXMgZnJvbSBsYXllciBpbmRleC4KKyAgICAgICAgIGNyZWF0ZS1sYXllciAgICAgICAgQ3JlYXRlIGEgYmFzaWMgbGF5ZXIKKworICAgICBVc2UgYml0YmFrZS1sYXllcnMgJmx0O3N1YmNvbW1hbmQmZ3Q7IC0taGVscCB0byBnZXQgaGVscCBvbiBhIHNwZWNpZmljIGNvbW1hbmQKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBkZXNjcmliZXMgdGhlIGF2YWlsYWJsZSBjb21tYW5kczoKICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxlbXBoYXNpcz5oZWxwOjwvZW1waGFzaXM+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5oZWxwOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXlzIGdlbmVyYWwgaGVscCBvciBoZWxwIG9uIGEgc3BlY2lmaWVkIGNvbW1hbmQuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48ZW1waGFzaXM+c2hvdy1sYXllcnM6PC9lbXBoYXNpcz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnNob3ctbGF5ZXJzOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIFNob3dzIHRoZSBjdXJyZW50IGNvbmZpZ3VyZWQgbGF5ZXJzLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PGVtcGhhc2lzPnNob3ctcmVjaXBlczo8L2VtcGhhc2lzPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBMaXN0cyBhdmFpbGFibGUgcmVjaXBlcyBhbmQgdGhlIGxheWVycyB0aGF0IHByb3ZpZGUgdGhlbS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxlbXBoYXNpcz5zaG93LW92ZXJsYXllZDo8L2VtcGhhc2lzPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+c2hvdy1vdmVybGF5ZWQ6PC9maWxlbmFtZT48L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgb3ZlcmxheWVkIHJlY2lwZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICBBIHJlY2lwZSBpcyBvdmVybGF5ZWQgd2hlbiBhIHJlY2lwZSB3aXRoIHRoZSBzYW1lIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0cyBpbiBhbm90aGVyIGxheWVyIHRoYXQgaGFzIGEgaGlnaGVyIGxheWVyCiAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eS4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxlbXBoYXNpcz5zaG93LWFwcGVuZHM6PC9lbXBoYXNpcz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnNob3ctcmVjaXBlczo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBMaXN0cyBhdmFpbGFibGUgcmVjaXBlcyBhbmQgdGhlIGxheWVycyB0aGF0IHByb3ZpZGUgdGhlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnNob3ctYXBwZW5kczo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0cyA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZXMgYW5kIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGZpbGVzIHRvIHdoaWNoIHRoZXkgYXBwbHkuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48ZW1waGFzaXM+c2hvdy1jcm9zcy1kZXBlbmRzOjwvZW1waGFzaXM+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5zaG93LWNyb3NzLWRlcGVuZHM6PC9maWxlbmFtZT48L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgZGVwZW5kZW5jeSByZWxhdGlvbnNoaXBzIGJldHdlZW4gcmVjaXBlcyB0aGF0CiAgICAgICAgICAgICAgICAgICAgICAgICBjcm9zcyBsYXllciBib3VuZGFyaWVzLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PGVtcGhhc2lzPmFkZC1sYXllcjo8L2VtcGhhc2lzPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+YWRkLWxheWVyOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHMgYSBsYXllciB0byA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PGVtcGhhc2lzPnJlbW92ZS1sYXllcjo8L2VtcGhhc2lzPjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+cmVtb3ZlLWxheWVyOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIFJlbW92ZXMgYSBsYXllciBmcm9tIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxlbXBoYXNpcz5mbGF0dGVuOjwvZW1waGFzaXM+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5mbGF0dGVuOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIEZsYXR0ZW5zIHRoZSBsYXllciBjb25maWd1cmF0aW9uIGludG8gYSBzZXBhcmF0ZSBvdXRwdXQKICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KICAgICAgICAgICAgICAgICAgICAgICAgIEZsYXR0ZW5pbmcgeW91ciBsYXllciBjb25maWd1cmF0aW9uIGJ1aWxkcyBhICJmbGF0dGVuZWQiCkBAIC05MTcsMTggKzk0MSwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgWW91IG1pZ2h0IGhhdmUgdG8gcGVyZm9ybSBzb21lIG1hbnVhbCBjbGVhbnVwIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgZmxhdHRlbmVkIGxheWVyIGFzIGZvbGxvd3M6CiAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Ob24tcmVjaXBlIGZpbGVzIChzdWNoIGFzIHBhdGNoZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb24tcmVjaXBlIGZpbGVzIChzdWNoIGFzIHBhdGNoZXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBvdmVyd3JpdHRlbi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZsYXR0ZW4gY29tbWFuZCBzaG93cyBhIHdhcm5pbmcgZm9yIHRoZXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QW55dGhpbmcgYmV5b25kIHRoZSBub3JtYWwgbGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFueXRoaW5nIGJleW9uZCB0aGUgbm9ybWFsIGxheWVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHVwIGhhcyBiZWVuIGFkZGVkIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGF5ZXIuY29uZjwvZmlsZW5hbWU+IGZpbGUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9ubHkgdGhlIGxvd2VzdCBwcmlvcml0eSBsYXllcidzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sYXllci5jb25mPC9maWxlbmFtZT4gaXMgdXNlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPk92ZXJyaWRkZW4gYW5kIGFwcGVuZGVkIGl0ZW1zIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE92ZXJyaWRkZW4gYW5kIGFwcGVuZGVkIGl0ZW1zIGZyb20KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGVzIG5lZWQgdG8gYmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW5lZCB1cC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNvbnRlbnRzIG9mIGVhY2gKQEAgLTEwMDAsMTMgKzEwMjcsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gc2NyaXB0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZXMgdGhlIDxmaWxlbmFtZT55b2N0by1sYXllcjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0LCB3aGljaCBpcyBkZXByZWNhdGVkIGluIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgMi40IHJlbGVhc2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT55b2N0by1sYXllcjwvZmlsZW5hbWU+IHNjcmlwdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlcyB0byBmdW5jdGlvbiBhcyBwYXJ0IG9mIHRoZSAyLjQgcmVsZWFzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCB3aWxsIGJlIHJlbW92ZWQgcG9zdCAyLjQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gdXNlIGEgbGF5ZXIgd2l0aCB0aGUgT3BlbkVtYmVkZGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtLCB5b3UgbmVlZCB0byBhZGQgdGhlIGxheWVyIHRvIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nYWRkaW5nLWEtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+QWRkaW5nIGEgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgPC9ub3RlPgpAQCAtMTA0Nyw2ICsxMDc0LDE0IEBACiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGJpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllciA8cmVwbGFjZWFibGU+eW91cl9sYXllcl9uYW1lPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kIGNyZWF0ZXMgYSBsYXllciBuYW1lZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXNjb3R0cmlmPC9maWxlbmFtZT4gaW4geW91ciBob21lIGRpcmVjdG9yeToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgL3Vzci9ob21lCisgICAgICQgYml0YmFrZS1sYXllcnMgY3JlYXRlLWxheWVyIG1ldGEtc2NvdHRyaWYKKyAgICAgTk9URTogU3RhcnRpbmcgYml0YmFrZSBzZXJ2ZXIuLi4KKyAgICAgQWRkIHlvdXIgbmV3IGxheWVyIHdpdGggJ2JpdGJha2UtbGF5ZXJzIGFkZC1sYXllciBtZXRhLXNjb3R0cmlmJworICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+CkBAIC0xMDg5LDI2ICsxMTI0LDM2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lIG9mIHRoZSBleGFtcGxlIHJlY2lwZQogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdhZGRpbmctYS1sYXllci11c2luZy10aGUtYml0YmFrZS1sYXllcnMtc2NyaXB0Jz4KKyAgICAgICAgICAgIDx0aXRsZT5BZGRpbmcgYSBMYXllciBVc2luZyB0aGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gU2NyaXB0PC90aXRsZT4KIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgT25jZSB5b3UgY3JlYXRlIHlvdXIgZ2VuZXJhbCBsYXllciwgeW91IG11c3QgYWRkIGl0IHRvIHlvdXIKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICAgICAgWW91IGNhbiBhZGQgeW91ciBsYXllciBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICBBZGRpbmcgdGhlIGxheWVyIHRvIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlIG1ha2VzIHRoZQorICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYXdhcmUgb2YgeW91ciBsYXllciBzbyB0aGF0IGl0IGNhbgorICAgICAgICAgICAgICAgIHNlYXJjaCBpdCBmb3IgbWV0YWRhdGEuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFkZCB5b3VyIGxheWVyIGJ5IHVzaW5nIHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVycyBhZGQtbGF5ZXI8L2ZpbGVuYW1lPiBjb21tYW5kOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIgPHJlcGxhY2VhYmxlPnlvdXJfbGF5ZXJfbmFtZTwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB3aGVyZSBhIGxheWVyIG5hbWVkCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtc2NvdHRyaWY8L2ZpbGVuYW1lPiBpcyBhZGRlZCBhbmQgdGhlbiB0aGUKLSAgICAgICAgICAgICAgICBsYXllcnMgYXJlIHNob3duIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVycyBzaG93LWxheWVyczwvZmlsZW5hbWU+IGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHRoYXQgYWRkcyBhIGxheWVyIG5hbWVkCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtc2NvdHRyaWY8L2ZpbGVuYW1lPiB0byB0aGUgY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgICAgICAgIEZvbGxvd2luZyB0aGUgY29tbWFuZCB0aGF0IGFkZHMgdGhlIGxheWVyIGlzIGFub3RoZXIKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBjb21tYW5kIHRoYXQgc2hvd3MgdGhlCisgICAgICAgICAgICAgICAgbGF5ZXJzIHRoYXQgYXJlIGluIHlvdXIgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGU6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGJpdGJha2UtbGF5ZXJzIGFkZC1sYXllciBtZXRhLXNjb3R0cmlmCiAgICAgIE5PVEU6IFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyLi4uCi0gICAgIExvYWRpbmcgY2FjaGU6IDEwMCUgfCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCi0gICAgIExvYWRlZCAxMjc1IGVudHJpZXMgZnJvbSBkZXBlbmRlbmN5IGNhY2hlLgotICAgICBQYXJzaW5nIHJlY2lwZXM6IDEwMCUgfCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMAotICAgICBQYXJzaW5nIG9mIDgxOSAuYmIgZmlsZXMgY29tcGxldGUgKDgxNyBjYWNoZWQsIDIgcGFyc2VkKS4gMTI3NiB0YXJnZXRzLCA0NCBza2lwcGVkLCAwIG1hc2tlZCwgMCBlcnJvcnMuCisgICAgIFBhcnNpbmcgcmVjaXBlczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDo0OQorICAgICBQYXJzaW5nIG9mIDE0NDEgLmJiIGZpbGVzIGNvbXBsZXRlICgwIGNhY2hlZCwgMTQ0MSBwYXJzZWQpLiAyMDU1IHRhcmdldHMsIDU2IHNraXBwZWQsIDAgbWFza2VkLCAwIGVycm9ycy4KICAgICAgJCBiaXRiYWtlLWxheWVycyBzaG93LWxheWVycwogICAgICBOT1RFOiBTdGFydGluZyBiaXRiYWtlIHNlcnZlci4uLgogICAgICBsYXllciAgICAgICAgICAgICAgICAgcGF0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHkKQEAgLTExMTYsMTIgKzExNjEsMTYgQEAKICAgICAgbWV0YSAgICAgICAgICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvbWV0YSAgICAgICAgICAgICAgICAgIDUKICAgICAgbWV0YS1wb2t5ICAgICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvbWV0YS1wb2t5ICAgICAgICAgICAgIDUKICAgICAgbWV0YS15b2N0by1ic3AgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvbWV0YS15b2N0by1ic3AgICAgICAgIDUKLSAgICAgbWV0YS1teWxheWVyICAgICAgICAgIC9ob21lL3Njb3R0cmlmL21ldGEtbXlsYXllciAgICAgICAgICAgICAgIDYKICAgICAgd29ya3NwYWNlICAgICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvd29ya3NwYWNlICAgICAgIDk5CiAgICAgIG1ldGEtc2NvdHRyaWYgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL21ldGEtc2NvdHRyaWYgICA2CiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIEFkZGluZyB0aGUgbGF5ZXIgdG8gdGhpcyBmaWxlIGVuYWJsZXMgdGhlIGJ1aWxkIHN5c3RlbSB0bwogICAgICAgICAgICAgICAgIGxvY2F0ZSB0aGUgbGF5ZXIgZHVyaW5nIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgRHVyaW5nIGEgYnVpbGQsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGxvb2tzIGluCisgICAgICAgICAgICAgICAgICAgIHRoZSBsYXllcnMgZnJvbSB0aGUgdG9wIG9mIHRoZSBsaXN0IGRvd24gdG8gdGhlIGJvdHRvbQorICAgICAgICAgICAgICAgICAgICBpbiB0aGF0IG9yZGVyLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KICAgICA8L3NlY3Rpb24+CkBAIC0xMjIyLDggKzEyNzEsOCBAQAogICAgICAgICAgICAgICAgIFRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGZlYXR1cmVzIHdvcmssIHRoZSBiZXN0IHJlZmVyZW5jZSBpcwogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXMvY29yZS1pbWFnZS5iYmNsYXNzPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgVGhpcyBjbGFzcyBsaXN0cyBvdXQgdGhlIGF2YWlsYWJsZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIG9mIHdoaWNoIG1vc3QgbWFwIHRvIHBhY2thZ2UgZ3JvdXBzIHdoaWxlIHNvbWUsIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPiBvZiB3aGljaCBtb3N0IG1hcCB0bworICAgICAgICAgICAgICAgIHBhY2thZ2UgZ3JvdXBzIHdoaWxlIHNvbWUsIHN1Y2ggYXMKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVidWctdHdlYWtzPC9maWxlbmFtZT4gYW5kCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlYWQtb25seS1yb290ZnM8L2ZpbGVuYW1lPiwgcmVzb2x2ZSBhcyBnZW5lcmFsCiAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4KQEAgLTE1MjAsOCArMTU2OSw4IEBACiAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiByZWNpcGUgc3ludGF4LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWNpcGUtc3ludGF4Jz5SZWNpcGUgU3ludGF4PC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlY2lwZS1zeW50YXgnPlJlY2lwZSBTeW50YXg8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgogICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtMTU3Miw0NyArMTYyMSw0MyBAQAogICAgICAgICAgICAgICAgICAgICBhbmQgaGF2ZSBzb3VyY2VkIHRoZSBidWlsZCBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQKICAgICAgICAgICAgICAgICAgICAgKGkuZS4KICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnY8L2ZpbGVuYW1lPjwvdWxpbms+KS4KLSAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyB0aGUgYmFzaWMgPGZpbGVuYW1lPnJlY2lwZXRvb2w8L2ZpbGVuYW1lPiBzeW50YXg6Ci0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgUnVubmluZyA8ZmlsZW5hbWU+cmVjaXBldG9vbCAtaDwvZmlsZW5hbWU+IG9yCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBldG9vbCBjcmVhdGUgLWg8L2ZpbGVuYW1lPiBwcm9kdWNlcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbi1nZW5lcmF0ZWQgaGVscCwgd2hpY2ggcHJlc2VudGVkIGRpZmZlcmVudGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGFuIHdoYXQgZm9sbG93cyBoZXJlLgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIFRvIGdldCBoZWxwIG9uIHRoZSB0b29sLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIHJlY2lwZXRvb2wgLWgKLSAgICAgcmVjaXBldG9vbCBjcmVhdGUgWy1oXQotICAgICByZWNpcGV0b29sIFstZF0gWy1xXSBbLS1jb2xvciBhdXRvIHwgYWx3YXlzIHwgbmV2ZXIgXSBjcmVhdGUgLW8gPHJlcGxhY2VhYmxlPk9VVEZJTEU8L3JlcGxhY2VhYmxlPiBbLW1dIFsteCA8cmVwbGFjZWFibGU+RVhURVJOQUxTUkM8L3JlcGxhY2VhYmxlPl0gPHJlcGxhY2VhYmxlPnNvdXJjZTwvcmVwbGFjZWFibGU+CisgICAgICQgcmVjaXBldG9vbCAtaAorICAgICBOT1RFOiBTdGFydGluZyBiaXRiYWtlIHNlcnZlci4uLgorICAgICB1c2FnZTogcmVjaXBldG9vbCBbLWRdIFstcV0gWy0tY29sb3IgQ09MT1JdIFstaF0gJmx0O3N1YmNvbW1hbmQmZ3Q7IC4uLgogCi0gICAgICAgICAgLWQgICAgICAgRW5hYmxlcyBkZWJ1ZyBvdXRwdXQuCi0gICAgICAgICAgLXEgICAgICAgT3V0cHV0cyBvbmx5IGVycm9ycyAocXVpZXQgbW9kZSkuCi0gICAgICAgICAgLS1jb2xvciAgQ29sb3JpemVzIHRoZSBvdXRwdXQgYXV0b21hdGljYWxseSwgYWx3YXlzLCBvciBuZXZlci4KLSAgICAgICAgICAtaCAgICAgICBEaXNwbGF5cyBQeXRob24gZ2VuZXJhdGVkIHN5bnRheCBmb3IgcmVjaXBldG9vbC4KLSAgICAgICAgICBjcmVhdGUgICBDYXVzZXMgcmVjaXBldG9vbCB0byBjcmVhdGUgYSBiYXNlIHJlY2lwZS4gIFRoZSBjcmVhdGUKLSAgICAgICAgICAgICAgICAgICBjb21tYW5kIGlzIGZ1cnRoZXIgZGVmaW5lZCB3aXRoIHRoZXNlIG9wdGlvbnM6CisgICAgIE9wZW5FbWJlZGRlZCByZWNpcGUgdG9vbAogCi0gICAgICAgICAgICAgICAgICAgLW8gPHJlcGxhY2VhYmxlPk9VVEZJTEU8L3JlcGxhY2VhYmxlPiAgICAgIFNwZWNpZmllcyB0aGUgZnVsbCBwYXRoIGFuZCBmaWxlbmFtZSBmb3IgdGhlIGdlbmVyYXRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUuCi0gICAgICAgICAgICAgICAgICAgLW0gICAgICAgICAgICAgIENhdXNlcyB0aGUgcmVjaXBlIHRvIGJlIG1hY2hpbmUtc3BlY2lmaWMgcmF0aGVyIHRoYW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIChkZWZhdWx0KS4KLSAgICAgICAgICAgICAgICAgICAteCA8cmVwbGFjZWFibGU+RVhURVJOQUxTUkM8L3JlcGxhY2VhYmxlPiAgRmV0Y2hlcyBhbmQgZXh0cmFjdHMgc291cmNlIGZpbGVzIGZyb20gPHJlcGxhY2VhYmxlPnNvdXJjZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBwbGFjZXMgdGhlbSBpbiA8cmVwbGFjZWFibGU+RVhURVJOQUxTUkM8L3JlcGxhY2VhYmxlPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNvdXJjZTwvcmVwbGFjZWFibGU+IG11c3QgYmUgYSBVUkwuCi0gICAgICAgICAgICAgICAgICAgLWggICAgICAgICAgICAgIERpc3BsYXlzIFB5dGhvbi1nZW5lcmF0ZWQgc3ludGF4IGZvciBjcmVhdGUuCi0gICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNvdXJjZTwvcmVwbGFjZWFibGU+ICAgICAgICAgIFNwZWNpZmllcyB0aGUgc291cmNlIGNvZGUgb24gd2hpY2ggdG8gYmFzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlLgorICAgICBvcHRpb25zOgorICAgICAgIC1kLCAtLWRlYnVnICAgICBFbmFibGUgZGVidWcgb3V0cHV0CisgICAgICAgLXEsIC0tcXVpZXQgICAgIFByaW50IG9ubHkgZXJyb3JzCisgICAgICAgLS1jb2xvciBDT0xPUiAgIENvbG9yaXplIG91dHB1dCAod2hlcmUgQ09MT1IgaXMgYXV0bywgYWx3YXlzLCBuZXZlcikKKyAgICAgICAtaCwgLS1oZWxwICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAorCisgICAgIHN1YmNvbW1hbmRzOgorICAgICAgIGNyZWF0ZSAgICAgICAgICBDcmVhdGUgYSBuZXcgcmVjaXBlCisgICAgICAgbmV3YXBwZW5kICAgICAgIENyZWF0ZSBhIGJiYXBwZW5kIGZvciB0aGUgc3BlY2lmaWVkIHRhcmdldCBpbiB0aGUgc3BlY2lmaWVkCisgICAgICAgICAgICAgICAgICAgICAgIGxheWVyCisgICAgICAgc2V0dmFyICAgICAgICAgIFNldCBhIHZhcmlhYmxlIHdpdGhpbiBhIHJlY2lwZQorICAgICAgIGFwcGVuZGZpbGUgICAgICBDcmVhdGUvdXBkYXRlIGEgYmJhcHBlbmQgdG8gcmVwbGFjZSBhIHRhcmdldCBmaWxlCisgICAgICAgYXBwZW5kc3JjZmlsZXMgIENyZWF0ZS91cGRhdGUgYSBiYmFwcGVuZCB0byBhZGQgb3IgcmVwbGFjZSBzb3VyY2UgZmlsZXMKKyAgICAgICBhcHBlbmRzcmNmaWxlICAgQ3JlYXRlL3VwZGF0ZSBhIGJiYXBwZW5kIHRvIGFkZCBvciByZXBsYWNlIGEgc291cmNlIGZpbGUKKyAgICAgVXNlIHJlY2lwZXRvb2wgJmx0O3N1YmNvbW1hbmQmZ3Q7IC0taGVscCB0byBnZXQgaGVscCBvbiBhIHNwZWNpZmljIGNvbW1hbmQKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBSdW5uaW5nIDxmaWxlbmFtZT5yZWNpcGV0b29sIGNyZWF0ZSAtbzwvZmlsZW5hbWU+Jm5ic3A7PHJlcGxhY2VhYmxlPk9VVEZJTEU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICBSdW5uaW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGV0b29sIGNyZWF0ZSAtbzwvZmlsZW5hbWU+Jm5ic3A7PHJlcGxhY2VhYmxlPk9VVEZJTEU8L3JlcGxhY2VhYmxlPgogICAgICAgICAgICAgICAgICAgICBjcmVhdGVzIHRoZSBiYXNlIHJlY2lwZSBhbmQgbG9jYXRlcyBpdCBwcm9wZXJseSBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgbGF5ZXIgdGhhdCBjb250YWlucyB5b3VyIHNvdXJjZSBmaWxlcy4KICAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBzb21lIHN5bnRheCBleGFtcGxlczoKICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVXNlIHRoaXMgc3ludGF4IHRvIGdlbmVyYXRlIGEgcmVjaXBlIGJhc2VkIG9uIDxyZXBsYWNlYWJsZT5zb3VyY2U8L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoaXMgc3ludGF4IHRvIGdlbmVyYXRlIGEgcmVjaXBlIGJhc2VkIG9uCisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5zb3VyY2U8L3JlcGxhY2VhYmxlPi4KICAgICAgICAgICAgICAgICAgICAgT25jZSBnZW5lcmF0ZWQsIHRoZSByZWNpcGUgcmVzaWRlcyBpbiB0aGUgZXhpc3Rpbmcgc291cmNlCiAgICAgICAgICAgICAgICAgICAgIGNvZGUgbGF5ZXI6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KQEAgLTE2MjUsNyArMTY3MCw4IEBACiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgcmVjaXBldG9vbCBjcmVhdGUgLW8gPHJlcGxhY2VhYmxlPk9VVEZJTEU8L3JlcGxhY2VhYmxlPiAteCA8cmVwbGFjZWFibGU+RVhURVJOQUxTUkM8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+c291cmNlPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBVc2UgdGhpcyBzeW50YXggdG8gZ2VuZXJhdGUgYSByZWNpcGUgYmFzZWQgb24gPHJlcGxhY2VhYmxlPnNvdXJjZTwvcmVwbGFjZWFibGU+LgorICAgICAgICAgICAgICAgICAgICBVc2UgdGhpcyBzeW50YXggdG8gZ2VuZXJhdGUgYSByZWNpcGUgYmFzZWQgb24KKyAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNvdXJjZTwvcmVwbGFjZWFibGU+LgogICAgICAgICAgICAgICAgICAgICBUaGUgb3B0aW9ucyBkaXJlY3QgPGZpbGVuYW1lPnJlY2lwZXRvb2w8L2ZpbGVuYW1lPiB0bwogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgIE9uY2UgZ2VuZXJhdGVkLCB0aGUgcmVjaXBlIHJlc2lkZXMgaW4gdGhlIGV4aXN0aW5nIHNvdXJjZQpAQCAtMTY0Niw3ICsxNjkyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgYW5kIE9wZW5FbWJlZGRlZCBjb21tdW5pdGllcyBtYWludGFpbiBtYW55CiAgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMgdGhhdCBtaWdodCBiZSBjYW5kaWRhdGVzIGZvciB3aGF0IHlvdSBhcmUgZG9pbmcuCiAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBhIGdvb2QgY2VudHJhbCBpbmRleCBvZiB0aGVzZSByZWNpcGVzIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGF5ZXJzLm9wZW5lbWJlZGRlZC5vcmcnPk9wZW5FbWJlZGRlZCBtZXRhZGF0YSBpbmRleDwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGF5ZXJzLm9wZW5lbWJlZGRlZC5vcmcnPk9wZW5FbWJlZGRlZCBMYXllciBJbmRleDwvdWxpbms+LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtMTgxMSw4ICsxODU3LDggQEAKIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJ1aWxkIHByb2Nlc3MgaW4KLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWRldmVsb3BtZW50LWVudmlyb25tZW50Jz5UaGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDwvdWxpbms+IgotICAgICAgICAgICAgICAgIGNoYXB0ZXIgb2YgdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNvdmVydmlldy1kZXZlbG9wbWVudC1lbnZpcm9ubWVudCc+VGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQ8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBjaGFwdGVyIG9mIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KIApAQCAtMTgyOCw4ICsxODc0LDggQEAKICAgICAgICAgICAgICAgICBZb3VyIHJlY2lwZSBtdXN0IGhhdmUgYSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHZhcmlhYmxlCiAgICAgICAgICAgICAgICAgdGhhdCBwb2ludHMgdG8gd2hlcmUgdGhlIHNvdXJjZSBpcyBsb2NhdGVkLgogICAgICAgICAgICAgICAgIEZvciBhIGdyYXBoaWNhbCByZXByZXNlbnRhdGlvbiBvZiBzb3VyY2UgbG9jYXRpb25zLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZXMtZGV2LWVudmlyb25tZW50Jz5Tb3VyY2VzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NvdXJjZXMtZGV2LWVudmlyb25tZW50Jz5Tb3VyY2VzPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KQEAgLTIxNDEsOCArMjE4Nyw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluaW5nIHRoZSBjdXJyZW50IGNoZWNrc3VtLgogICAgICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgZXhwbGFuYXRpb24gYW5kIGV4YW1wbGVzIG9mIGhvdyB0byBzZXQgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+IHZhcmlhYmxlLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdXNpbmdwb2t5LWNvbmZpZ3VyaW5nLUxJQ19GSUxFU19DSEtTVU0nPlRyYWNraW5nIExpY2Vuc2UgQ2hhbmdlczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rPSd1c2luZ3Bva3ktY29uZmlndXJpbmctTElDX0ZJTEVTX0NIS1NVTSc+VHJhY2tpbmcgTGljZW5zZSBDaGFuZ2VzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uPC9wYXJhPgorCiAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UbyBkZXRlcm1pbmUgdGhlIGNvcnJlY3QgY2hlY2tzdW0gc3RyaW5nLCB5b3UKICAgICAgICAgICAgICAgICAgICAgICAgIGNhbiBsaXN0IHRoZSBhcHByb3ByaWF0ZSBmaWxlcyBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MSUNfRklMRVNfQ0hLU1VNPC9maWxlbmFtZT4gdmFyaWFibGUgd2l0aApAQCAtMjI4OCw4ICsyMzM1LDkgQEAKICAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IGFkZCBhIHJ1bnRpbWUgZGVwZW5kZW5jeSB0byAibXlwYWNrYWdlIiBvbgogICAgICAgICAgICAgICAgICJleGFtcGxlIikuCiAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNhdXRvbWF0aWNhbGx5LWFkZGVkLXJ1bnRpbWUtZGVwZW5kZW5jaWVzJz5BdXRvbWF0aWNhbGx5IEFkZGVkIFJ1bnRpbWUgRGVwZW5kZW5jaWVzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IgZnVydGhlciBkZXRhaWxzLgorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2F1dG9tYXRpY2FsbHktYWRkZWQtcnVudGltZS1kZXBlbmRlbmNpZXMnPkF1dG9tYXRpY2FsbHkgQWRkZWQgUnVudGltZSBEZXBlbmRlbmNpZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwgZm9yCisgICAgICAgICAgICAgICAgZnVydGhlciBkZXRhaWxzLgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3Rpb24+CiAKQEAgLTI5NzcsNiArMzAyNSwxMzMgQEAKICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogCisgICAgICAgIDxzZWN0aW9uIGlkPSdtZXRhZGF0YS12aXJ0dWFsLXByb3ZpZGVycyc+CisgICAgICAgICAgICA8dGl0bGU+VXNpbmcgVmlydHVhbCBQcm92aWRlcnM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBQcmlvciB0byBhIGJ1aWxkLCBpZiB5b3Uga25vdyB0aGF0IHNldmVyYWwgZGlmZmVyZW50IHJlY2lwZXMKKyAgICAgICAgICAgICAgICBwcm92aWRlIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHksIHlvdSBjYW4gdXNlIGEgdmlydHVhbCBwcm92aWRlcgorICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT52aXJ0dWFsLyo8L2ZpbGVuYW1lPikgYXMgYSBwbGFjZWhvbGRlciBmb3IgdGhlCisgICAgICAgICAgICAgICAgYWN0dWFsIHByb3ZpZGVyLgorICAgICAgICAgICAgICAgIFRoZSBhY3R1YWwgcHJvdmlkZXIgaXMgZGV0ZXJtaW5lZCBhdCBidWlsZC10aW1lLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBIGNvbW1vbiBzY2VuYXJpbyB3aGVyZSBhIHZpcnR1YWwgcHJvdmlkZXIgaXMgdXNlZCB3b3VsZCBiZQorICAgICAgICAgICAgICAgIGZvciB0aGUga2VybmVsIHJlY2lwZS4KKyAgICAgICAgICAgICAgICBTdXBwb3NlIHlvdSBoYXZlIHRocmVlIGtlcm5lbCByZWNpcGVzIHdob3NlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBOJz48ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFsdWVzIG1hcCB0byA8ZmlsZW5hbWU+a2VybmVsLWJpZzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5rZXJuZWwtbWlkPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5rZXJuZWwtc21hbGw8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBGdXJ0aGVybW9yZSwgZWFjaCBvZiB0aGVzZSByZWNpcGVzIGluIHNvbWUgd2F5IHVzZXMgYQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUk9WSURFUyc+PGZpbGVuYW1lPlBST1ZJREVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHN0YXRlbWVudCB0aGF0IGVzc2VudGlhbGx5IGlkZW50aWZpZXMgaXRzZWxmIGFzIGJlaW5nIGFibGUKKyAgICAgICAgICAgICAgICB0byBwcm92aWRlIDxmaWxlbmFtZT52aXJ0dWFsL2tlcm5lbDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIEhlcmUgaXMgb25lIHdheSB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLWtlcm5lbCc+PGZpbGVuYW1lPmtlcm5lbDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBjbGFzczoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBST1ZJREVTICs9ICIke0AgInZpcnR1YWwva2VybmVsIiBpZiAoZC5nZXRWYXIoIktFUk5FTF9QQUNLQUdFX05BTUUiKSA9PSAia2VybmVsIikgZWxzZSAiIiB9IgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBBbnkgcmVjaXBlIHRoYXQgaW5oZXJpdHMgdGhlIDxmaWxlbmFtZT5rZXJuZWw8L2ZpbGVuYW1lPiBjbGFzcworICAgICAgICAgICAgICAgIGlzIGdvaW5nIHRvIHV0aWxpemUgYSA8ZmlsZW5hbWU+UFJPVklERVM8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQKKyAgICAgICAgICAgICAgICB0aGF0IGlkZW50aWZpZXMgdGhhdCByZWNpcGUgYXMgYmVpbmcgYWJsZSB0byBwcm92aWRlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52aXJ0dWFsL2tlcm5lbDwvZmlsZW5hbWU+IGl0ZW0uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE5vdyBjb21lcyB0aGUgdGltZSB0byBhY3R1YWxseSBidWlsZCBhbiBpbWFnZSBhbmQgeW91IG5lZWQgYQorICAgICAgICAgICAgICAgIGtlcm5lbCByZWNpcGUsIGJ1dCB3aGljaCBvbmU/CisgICAgICAgICAgICAgICAgWW91IGNhbiBjb25maWd1cmUgeW91ciBidWlsZCB0byBjYWxsIG91dCB0aGUga2VybmVsIHJlY2lwZQorICAgICAgICAgICAgICAgIHlvdSB3YW50IGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUkVGRVJSRURfUFJPVklERVInPjxmaWxlbmFtZT5QUkVGRVJSRURfUFJPVklERVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgY29uc2lkZXIgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni1iYXNlLmluYyc+PGZpbGVuYW1lPng4Ni1iYXNlLmluYzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBpbmNsdWRlIGZpbGUsIHdoaWNoIGlzIGEgbWFjaGluZQorICAgICAgICAgICAgICAgIChpLmUuIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4pCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgICAgICAgIFRoaXMgaW5jbHVkZSBmaWxlIGlzIHRoZSByZWFzb24gYWxsIHg4Ni1iYXNlZCBtYWNoaW5lcyB1c2UgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvPC9maWxlbmFtZT4ga2VybmVsLgorICAgICAgICAgICAgICAgIEhlcmUgYXJlIHRoZSByZWxldmFudCBsaW5lcyBmcm9tIHRoZSBpbmNsdWRlIGZpbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz89ICJsaW51eC15b2N0byIKKyAgICAgUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz89ICI0LjE1JSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFdoZW4geW91IHVzZSBhIHZpcnR1YWwgcHJvdmlkZXIsIHlvdSBkbyBub3QgaGF2ZSB0bworICAgICAgICAgICAgICAgICJoYXJkIGNvZGUiIGEgcmVjaXBlIG5hbWUgYXMgYSBidWlsZCBkZXBlbmRlbmN5LgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBzdGF0ZSB0aGUgYnVpbGQgaXMgZGVwZW5kZW50IG9uCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnZpcnR1YWwva2VybmVsPC9maWxlbmFtZT4gZm9yIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBERVBFTkRTID0gInZpcnR1YWwva2VybmVsIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBEdXJpbmcgdGhlIGJ1aWxkLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBwaWNrcworICAgICAgICAgICAgICAgIHRoZSBjb3JyZWN0IHJlY2lwZSBuZWVkZWQgZm9yIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52aXJ0dWFsL2tlcm5lbDwvZmlsZW5hbWU+IGRlcGVuZGVuY3kgYmFzZWQgb24gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBSRUZFUlJFRF9QUk9WSURFUjwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIHVzZSB0aGUgc21hbGwga2VybmVsIG1lbnRpb25lZCBhdCB0aGUgYmVnaW5uaW5nCisgICAgICAgICAgICAgICAgb2YgdGhpcyBzZWN0aW9uLCBjb25maWd1cmUgeW91ciBidWlsZCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID8/PSAia2VybmVsLXNtYWxsIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQW55IHJlY2lwZSB0aGF0CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUk9WSURFUyc+PGZpbGVuYW1lPlBST1ZJREVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBhIDxmaWxlbmFtZT52aXJ0dWFsLyo8L2ZpbGVuYW1lPiBpdGVtIHRoYXQgaXMgdWx0aW1hdGVseQorICAgICAgICAgICAgICAgICAgICBub3Qgc2VsZWN0ZWQgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UFJFRkVSUkVEX1BST1ZJREVSPC9maWxlbmFtZT4gZG9lcyBub3QgZ2V0IGJ1aWx0LgorICAgICAgICAgICAgICAgICAgICBQcmV2ZW50aW5nIHRoZXNlIHJlY2lwZXMgZnJvbSBidWlsZGluZyBpcyB1c3VhbGx5IHRoZQorICAgICAgICAgICAgICAgICAgICBkZXNpcmVkIGJlaGF2aW9yIHNpbmNlIHRoaXMgbWVjaGFuaXNtJ3MgcHVycG9zZSBpcyB0bworICAgICAgICAgICAgICAgICAgICBzZWxlY3QgYmV0d2VlbiBtdXR1YWxseSBleGNsdXNpdmUgYWx0ZXJuYXRpdmUgcHJvdmlkZXJzLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0cyBzcGVjaWZpYyBleGFtcGxlcyBvZiB2aXJ0dWFsIHByb3ZpZGVyczoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dmlydHVhbC9rZXJuZWw8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGVzIHRoZSBuYW1lIG9mIHRoZSBrZXJuZWwgcmVjaXBlIHRvIHVzZSB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGluZyBhIGtlcm5lbCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dmlydHVhbC9ib290bG9hZGVyPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICBQcm92aWRlcyB0aGUgbmFtZSBvZiB0aGUgYm9vdGxvYWRlciB0byB1c2Ugd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRpbmcgYW4gaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnZpcnR1YWwvbWVzYTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZXMgPGZpbGVuYW1lPmdibS5wYzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52aXJ0dWFsL2VnbDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZXMgPGZpbGVuYW1lPmVnbC5wYzwvZmlsZW5hbWU+IGFuZCBwb3NzaWJseQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndheWxhbmQtZWdsLnBjPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnZpcnR1YWwvbGliZ2w8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGVzIDxmaWxlbmFtZT5nbC5wYzwvZmlsZW5hbWU+IChpLmUuIGxpYkdMKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dmlydHVhbC9saWJnbGVzMTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZXMgPGZpbGVuYW1lPmdsZXN2MV9jbS5wYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiBsaWJHTEVTdjFfQ00pLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52aXJ0dWFsL2xpYmdsZXMyPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICBQcm92aWRlcyA8ZmlsZW5hbWU+Z2xlc3YyLnBjPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIGxpYkdMRVN2MikuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCiAgICAgICAgIDxzZWN0aW9uIGlkPSdwcm9wZXJseS12ZXJzaW9uaW5nLXByZS1yZWxlYXNlLXJlY2lwZXMnPgogICAgICAgICAgICAgPHRpdGxlPlByb3Blcmx5IFZlcnNpb25pbmcgUHJlLVJlbGVhc2UgUmVjaXBlczwvdGl0bGU+CiAKQEAgLTMyMjQsOCArMzM5OSwxMCBAQAogICAgICAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MSUNfRklMRVNfQ0hLU1VNJz5MSUNfRklMRVNfQ0hLU1VNPC91bGluaz48L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBpcyB1c2VkIHRvIHRyYWNrIHNvdXJjZSBsaWNlbnNlIGNoYW5nZXMgYXMgZGVzY3JpYmVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdXNpbmdwb2t5LWNvbmZpZ3VyaW5nLUxJQ19GSUxFU19DSEtTVU0nPlRyYWNraW5nIExpY2Vuc2UgQ2hhbmdlczwvdWxpbms+IiBzZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHF1aWNrbHkgY3JlYXRlIEF1dG90b29sLWJhc2VkIHJlY2lwZXMgaW4gYSBtYW5uZXIgc2ltaWxhciB0byB0aGUgcHJldmlvdXMgZXhhbXBsZS4KKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5ncG9reS1jb25maWd1cmluZy1MSUNfRklMRVNfQ0hLU1VNJz5UcmFja2luZyBMaWNlbnNlIENoYW5nZXM8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gcXVpY2tseSBjcmVhdGUgQXV0b3Rvb2wtYmFzZWQgcmVjaXBlcyBpbiBhIG1hbm5lcgorICAgICAgICAgICAgICAgICAgICBzaW1pbGFyIHRvIHRoZSBwcmV2aW91cyBleGFtcGxlLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvc2VjdGlvbj4KIApAQCAtMzQzMCw5ICszNjA3LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dzIHJ1bnRpbWUgZGVwZW5kZW5jaWVzIGJldHdlZW4gcGFja2FnZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYmUgYWRkZWQgYXV0b21hdGljYWxseS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYXV0b21hdGljYWxseS1hZGRlZC1ydW50aW1lLWRlcGVuZGVuY2llcyc+QXV0b21hdGljYWxseSBBZGRlZCBSdW50aW1lIERlcGVuZGVuY2llczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2F1dG9tYXRpY2FsbHktYWRkZWQtcnVudGltZS1kZXBlbmRlbmNpZXMnPkF1dG9tYXRpY2FsbHkgQWRkZWQgUnVudGltZSBEZXBlbmRlbmNpZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uY2VwdHMgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICA8L25vdGU+CkBAIC0zNTE3LDYgKzM2OTQsMzMwIEBACiAgICAgICAgICAgICAgICAgc3R5bGUuCiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0ncmVjaXBlLXN5bnRheCc+CisgICAgICAgICAgICA8dGl0bGU+UmVjaXBlIFN5bnRheDwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFVuZGVyc3RhbmRpbmcgcmVjaXBlIGZpbGUgc3ludGF4IGlzIGltcG9ydGFudCBmb3Igd3JpdGluZworICAgICAgICAgICAgICAgIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IG92ZXJ2aWV3cyB0aGUgYmFzaWMgaXRlbXMgdGhhdCBtYWtlIHVwIGEKKyAgICAgICAgICAgICAgICBCaXRCYWtlIHJlY2lwZSBmaWxlLgorICAgICAgICAgICAgICAgIEZvciBtb3JlIGNvbXBsZXRlIEJpdEJha2Ugc3ludGF4IGRlc2NyaXB0aW9ucywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2JpdGJha2UtdXNlci1tYW51YWwtbWV0YWRhdGEnPlN5bnRheCBhbmQgT3BlcmF0b3JzPC91bGluaz4iCisgICAgICAgICAgICAgICAgY2hhcHRlciBvZiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VmFyaWFibGUgQXNzaWdubWVudHMgYW5kIE1hbmlwdWxhdGlvbnM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlIGFzc2lnbm1lbnRzIGFsbG93IGEgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gYQorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYXNzaWdubWVudCBjYW4gYmUgc3RhdGljIHRleHQgb3IgbWlnaHQgaW5jbHVkZQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbnRlbnRzIG9mIG90aGVyIHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIGFkZGl0aW9uIHRvIHRoZSBhc3NpZ25tZW50LCBhcHBlbmRpbmcgYW5kIHByZXBlbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMgYXJlIGFsc28gc3VwcG9ydGVkLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIHNvbWUgb2YgdGhlIHdheXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gdXNlIHZhcmlhYmxlcyBpbiByZWNpcGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTID0gIiR7V09SS0RJUn0vcG9zdGZpeC0ke1BWfSIKKyAgICAgQ0ZMQUdTICs9ICItRE5PX0FTTSIKKyAgICAgU1JDX1VSSV9hcHBlbmQgPSAiIGZpbGU6Ly9maXh1cC5wYXRjaCIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RnVuY3Rpb25zOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbnMgcHJvdmlkZSBhIHNlcmllcyBvZiBhY3Rpb25zIHRvIGJlIHBlcmZvcm1lZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSB1c3VhbGx5IHVzZSBmdW5jdGlvbnMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uIG9mIGEgdGFzayBmdW5jdGlvbiBvciB0byBjb21wbGVtZW50CisgICAgICAgICAgICAgICAgICAgICAgICBhIGRlZmF1bHQgZnVuY3Rpb24gKGkuZS4gYXBwZW5kIG9yIHByZXBlbmQgdG8gYW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nIGZ1bmN0aW9uKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkIGZ1bmN0aW9ucyB1c2UgPGZpbGVuYW1lPnNoPC9maWxlbmFtZT4gc2hlbGwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheCwgYWx0aG91Z2ggYWNjZXNzIHRvIE9wZW5FbWJlZGRlZCB2YXJpYWJsZXMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbCBtZXRob2RzIGFyZSBhbHNvIGF2YWlsYWJsZS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBmdW5jdGlvbiBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNlZDwvZmlsZW5hbWU+IHJlY2lwZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZG9faW5zdGFsbCAoKSB7CisgICAgICAgICBhdXRvdG9vbHNfZG9faW5zdGFsbAorICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKyAgICAgICAgIG12ICR7RH0ke2JpbmRpcn0vc2VkICR7RH0ke2Jhc2VfYmluZGlyfS9zZWQKKyAgICAgICAgIHJtZGlyICR7RH0ke2JpbmRpcn0vCisgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIGFsc28gcG9zc2libGUgdG8gaW1wbGVtZW50IG5ldyBmdW5jdGlvbnMgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGNhbGxlZCBiZXR3ZWVuIGV4aXN0aW5nIHRhc2tzIGFzIGxvbmcgYXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgZnVuY3Rpb25zIGFyZSBub3QgcmVwbGFjaW5nIG9yIGNvbXBsZW1lbnRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IGZ1bmN0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gaW1wbGVtZW50IGZ1bmN0aW9ucyBpbiBQeXRob24KKyAgICAgICAgICAgICAgICAgICAgICAgIGluc3RlYWQgb2Ygc2hlbGwuCisgICAgICAgICAgICAgICAgICAgICAgICBCb3RoIG9mIHRoZXNlIG9wdGlvbnMgYXJlIG5vdCBzZWVuIGluIHRoZSBtYWpvcml0eSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPktleXdvcmRzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIHJlY2lwZXMgdXNlIG9ubHkgYSBmZXcga2V5d29yZHMuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgdXNlIGtleXdvcmRzIHRvIGluY2x1ZGUgY29tbW9uCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMgKDxmaWxlbmFtZT5pbmhlcml0PC9maWxlbmFtZT4pLCBsb2FkIHBhcnRzCisgICAgICAgICAgICAgICAgICAgICAgICBvZiBhIHJlY2lwZSBmcm9tIG90aGVyIGZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmluY2x1ZGU8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZXF1aXJlPC9maWxlbmFtZT4pIGFuZCBleHBvcnQgdmFyaWFibGVzCisgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgZW52aXJvbm1lbnQgKDxmaWxlbmFtZT5leHBvcnQ8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyB0aGUgdXNlIG9mIHNvbWUgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZXNlIGtleXdvcmRzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBleHBvcnQgUE9TVENPTkYgPSAiJHtTVEFHSU5HX0JJTkRJUn0vcG9zdGNvbmYiCisgICAgIGluaGVyaXQgYXV0b2NvbmYKKyAgICAgcmVxdWlyZSBvdGhlcmZpbGUuaW5jCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbW1lbnRzICgjKTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQW55IGxpbmVzIHRoYXQgYmVnaW4gd2l0aCB0aGUgaGFzaCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+IzwvZmlsZW5hbWU+KSBhcmUgdHJlYXRlZCBhcyBjb21tZW50IGxpbmVzCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYXJlIGlnbm9yZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICMgVGhpcyBpcyBhIGNvbW1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIG5leHQgbGlzdCBzdW1tYXJpemVzIHRoZSBtb3N0IGltcG9ydGFudCBhbmQgbW9zdCBjb21tb25seQorICAgICAgICAgICAgICAgIHVzZWQgcGFydHMgb2YgdGhlIHJlY2lwZSBzeW50YXguCisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlc2UgcGFydHMgb2YgdGhlIHN5bnRheCwgeW91IGNhbgorICAgICAgICAgICAgICAgIHJlZmVyZW5jZSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2JpdGJha2UtdXNlci1tYW51YWwtbWV0YWRhdGEnPlN5bnRheCBhbmQgT3BlcmF0b3JzPC91bGluaz4KKyAgICAgICAgICAgICAgICBjaGFwdGVyIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsLgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MaW5lIENvbnRpbnVhdGlvbiAoXCk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgYmFja3dhcmQgc2xhc2ggKDxmaWxlbmFtZT5cPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgdG8gc3BsaXQgYSBzdGF0ZW1lbnQgb3ZlciBtdWx0aXBsZSBsaW5lcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBsYWNlIHRoZSBzbGFzaCBjaGFyYWN0ZXIgYXQgdGhlIGVuZCBvZiB0aGUgbGluZSB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICBpcyB0byBiZSBjb250aW51ZWQgb24gdGhlIG5leHQgbGluZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVkFSID0gIkEgcmVhbGx5IGxvbmcgXAorICAgICAgICAgICAgbGluZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgaGF2ZSBhbnkgY2hhcmFjdGVycyBpbmNsdWRpbmcgc3BhY2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgdGFicyBhZnRlciB0aGUgc2xhc2ggY2hhcmFjdGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Vc2luZyBWYXJpYWJsZXMgKCR7PHJlcGxhY2VhYmxlPlZBUk5BTUU8L3JlcGxhY2VhYmxlPn0pOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT4kezxyZXBsYWNlYWJsZT5WQVJOQU1FPC9yZXBsYWNlYWJsZT59PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheCB0byBhY2Nlc3MgdGhlIGNvbnRlbnRzIG9mIGEgdmFyaWFibGU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2xpYnBuZy96bGliLSR7UFZ9LnRhci5neiIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoYXQgdGhlIHZhbHVlIG9mIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBleHByZXNzZWQgaW4gdGhpcyBmb3JtIGRvZXMgbm90IGdldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN0aXR1dGVkIGF1dG9tYXRpY2FsbHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGV4cGFuc2lvbiBvZiB0aGVzZSBleHByZXNzaW9ucyBoYXBwZW5zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24tZGVtYW5kIGxhdGVyIChlLmcuIHVzdWFsbHkgd2hlbiBhIGZ1bmN0aW9uIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlcyByZWZlcmVuY2UgdG8gdGhlIHZhcmlhYmxlIGV4ZWN1dGVzKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGJlaGF2aW9yIGVuc3VyZXMgdGhhdCB0aGUgdmFsdWVzIGFyZSBtb3N0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwcm9wcmlhdGUgZm9yIHRoZSBjb250ZXh0IGluIHdoaWNoIHRoZXkgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB1c2VkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIHRoZSByYXJlIG9jY2FzaW9uIHRoYXQgeW91IGRvIG5lZWQgdGhlIHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbiB0byBiZSBleHBhbmRlZCBpbW1lZGlhdGVseSwgeW91IGNhbiB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPjo9PC9maWxlbmFtZT4gb3BlcmF0b3IgaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT49PC9maWxlbmFtZT4gd2hlbiB5b3UgbWFrZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ25tZW50LCBidXQgdGhpcyBpcyBub3QgZ2VuZXJhbGx5IG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UXVvdGUgQWxsIEFzc2lnbm1lbnRzICgiPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT4iKTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIGRvdWJsZSBxdW90ZXMgYXJvdW5kIHZhbHVlcyBpbiBhbGwgdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2lnbm1lbnRzIChlLmcuCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+IjxyZXBsYWNlYWJsZT52YWx1ZTwvcmVwbGFjZWFibGU+IjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBWQVIxID0gIiR7T1RIRVJWQVJ9IgorICAgICBWQVIyID0gIlRoZSB2ZXJzaW9uIGlzICR7UFZ9IgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db25kaXRpb25hbCBBc3NpZ25tZW50ICg/PSk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbmRpdGlvbmFsIGFzc2lnbm1lbnQgaXMgdXNlZCB0byBhc3NpZ24gYQorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgdG8gYSB2YXJpYWJsZSwgYnV0IG9ubHkgd2hlbiB0aGUgdmFyaWFibGUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRseSB1bnNldC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgcXVlc3Rpb24gbWFyayBmb2xsb3dlZCBieSB0aGUgZXF1YWwgc2lnbgorICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4/PTwvZmlsZW5hbWU+KSB0byBtYWtlIGEgInNvZnQiIGFzc2lnbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGFzc2lnbm1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBUeXBpY2FsbHksICJzb2Z0IiBhc3NpZ25tZW50cyBhcmUgdXNlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3IgdmFyaWFibGVzCisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGFyZSBhbGxvd2VkIHRvIGNvbWUgdGhyb3VnaCBmcm9tIHRoZSBleHRlcm5hbAorICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkhlcmUgaXMgYW4gZXhhbXBsZSB3aGVyZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlZBUjE8L2ZpbGVuYW1lPiBpcyBzZXQgdG8gIk5ldyB2YWx1ZSIgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0IGlzIGN1cnJlbnRseSBlbXB0eS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIDxmaWxlbmFtZT5WQVIxPC9maWxlbmFtZT4gaGFzIGFscmVhZHkgYmVlbgorICAgICAgICAgICAgICAgICAgICAgICAgc2V0LCBpdCByZW1haW5zIHVuY2hhbmdlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVkFSMSA/PSAiTmV3IHZhbHVlIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBuZXh0IGV4YW1wbGUsIDxmaWxlbmFtZT5WQVIxPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlzIGxlZnQgd2l0aCB0aGUgdmFsdWUgIk9yaWdpbmFsIHZhbHVlIjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVkFSMSA9ICJPcmlnaW5hbCB2YWx1ZSIKKyAgICAgVkFSMSA/PSAiTmV3IHZhbHVlIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5BcHBlbmRpbmcgKCs9KTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBwbHVzIGNoYXJhY3RlciBmb2xsb3dlZCBieSB0aGUgZXF1YWxzIHNpZ24KKyAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Kz08L2ZpbGVuYW1lPikgdG8gYXBwZW5kIHZhbHVlcyB0byBleGlzdGluZworICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcGVyYXRvciBhZGRzIGEgc3BhY2UgYmV0d2VlbiB0aGUgZXhpc3RpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50IG9mIHRoZSB2YXJpYWJsZSBhbmQgdGhlIG5ldyBjb250ZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJICs9ICJmaWxlOi8vZml4LW1ha2VmaWxlLnBhdGNoIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QcmVwZW5kaW5nICg9Kyk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgZXF1YWxzIHNpZ24gZm9sbG93ZWQgYnkgdGhlIHBsdXMgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPj0rPC9maWxlbmFtZT4pIHRvIHByZXBlbmQgdmFsdWVzIHRvIGV4aXN0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wZXJhdG9yIGFkZHMgYSBzcGFjZSBiZXR3ZWVuIHRoZSBuZXcgY29udGVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgZXhpc3RpbmcgY29udGVudCBvZiB0aGUgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5IZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFZBUiA9KyAiU3RhcnRzIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5BcHBlbmRpbmcgKF9hcHBlbmQpOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5fYXBwZW5kPC9maWxlbmFtZT4gb3BlcmF0b3IgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZCB2YWx1ZXMgdG8gZXhpc3RpbmcgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcGVyYXRvciBkb2VzIG5vdCBhZGQgYW55IGFkZGl0aW9uYWwgc3BhY2UuCisgICAgICAgICAgICAgICAgICAgICAgICBBbHNvLCB0aGUgb3BlcmF0b3IgaXMgYXBwbGllZCBhZnRlciBhbGwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Kz08L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PSs8L2ZpbGVuYW1lPiBvcGVyYXRvcnMgaGF2ZSBiZWVuIGFwcGxpZWQgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBhZnRlciBhbGwgPGZpbGVuYW1lPj08L2ZpbGVuYW1lPiBhc3NpZ25tZW50cyBoYXZlCisgICAgICAgICAgICAgICAgICAgICAgICBvY2N1cnJlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIHRoZSBzcGFjZSBiZWluZworICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGljaXRseSBhZGRlZCB0byB0aGUgc3RhcnQgdG8gZW5zdXJlIHRoZSBhcHBlbmRlZAorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgaXMgbm90IG1lcmdlZCB3aXRoIHRoZSBleGlzdGluZyB2YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU1JDX1VSSV9hcHBlbmQgPSAiIGZpbGU6Ly9maXgtbWFrZWZpbGUucGF0Y2giCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gdXNlIHRoZSA8ZmlsZW5hbWU+X2FwcGVuZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvciB3aXRoIG92ZXJyaWRlcywgd2hpY2ggcmVzdWx0cyBpbiB0aGUgYWN0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgb25seSBiZWluZyBwZXJmb3JtZWQgZm9yIHRoZSBzcGVjaWZpZWQgdGFyZ2V0IG9yCisgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJX2FwcGVuZF9zaDQgPSAiIGZpbGU6Ly9maXgtbWFrZWZpbGUucGF0Y2giCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlByZXBlbmRpbmcgKF9wcmVwZW5kKTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+X3ByZXBlbmQ8L2ZpbGVuYW1lPiBvcGVyYXRvciB0bworICAgICAgICAgICAgICAgICAgICAgICAgcHJlcGVuZCB2YWx1ZXMgdG8gZXhpc3RpbmcgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcGVyYXRvciBkb2VzIG5vdCBhZGQgYW55IGFkZGl0aW9uYWwgc3BhY2UuCisgICAgICAgICAgICAgICAgICAgICAgICBBbHNvLCB0aGUgb3BlcmF0b3IgaXMgYXBwbGllZCBhZnRlciBhbGwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Kz08L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PSs8L2ZpbGVuYW1lPiBvcGVyYXRvcnMgaGF2ZSBiZWVuIGFwcGxpZWQgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBhZnRlciBhbGwgPGZpbGVuYW1lPj08L2ZpbGVuYW1lPiBhc3NpZ25tZW50cyBoYXZlCisgICAgICAgICAgICAgICAgICAgICAgICBvY2N1cnJlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIHRoZSBzcGFjZSBiZWluZworICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGljaXRseSBhZGRlZCB0byB0aGUgZW5kIHRvIGVuc3VyZSB0aGUgcHJlcGVuZGVkCisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBpcyBub3QgbWVyZ2VkIHdpdGggdGhlIGV4aXN0aW5nIHZhbHVlOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBDRkxBR1NfcHJlcGVuZCA9ICItSSR7U30vbXlpbmNsdWRlcyAiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gdXNlIHRoZSA8ZmlsZW5hbWU+X3ByZXBlbmQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3Igd2l0aCBvdmVycmlkZXMsIHdoaWNoIHJlc3VsdHMgaW4gdGhlIGFjdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkgYmVpbmcgcGVyZm9ybWVkIGZvciB0aGUgc3BlY2lmaWVkIHRhcmdldCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQ0ZMQUdTX3ByZXBlbmRfc2g0ID0gIi1JJHtTfS9teWluY2x1ZGVzICIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3ZlcnJpZGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSBvdmVycmlkZXMgdG8gc2V0IGEgdmFsdWUgY29uZGl0aW9uYWxseSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGljYWxseSBiYXNlZCBvbiBob3cgdGhlIHJlY2lwZSBpcyBiZWluZyBidWlsdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0byBzZXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItS0JSQU5DSCc+PGZpbGVuYW1lPktCUkFOQ0g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSdzIHZhbHVlIHRvICJzdGFuZGFyZC9iYXNlIiBmb3IgYW55IHRhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBmb3IgcWVtdWFybSB3aGVyZSBpdCBzaG91bGQgYmUgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAic3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiLCB5b3Ugd291bGQgZG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEtCUkFOQ0ggPSAic3RhbmRhcmQvYmFzZSIKKyAgICAgS0JSQU5DSF9xZW11YXJtICA9ICJzdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIE92ZXJyaWRlcyBhcmUgYWxzbyB1c2VkIHRvIHNlcGFyYXRlIGFsdGVybmF0ZSB2YWx1ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIGEgdmFyaWFibGUgaW4gb3RoZXIgc2l0dWF0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB3aGVuIHNldHRpbmcgdmFyaWFibGVzIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1GSUxFUyc+PGZpbGVuYW1lPkZJTEVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUkRFUEVORFMnPjxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgYXJlIHNwZWNpZmljIHRvIGluZGl2aWR1YWwgcGFja2FnZXMgcHJvZHVjZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgIGEgcmVjaXBlLCB5b3Ugc2hvdWxkIGFsd2F5cyB1c2UgYW4gb3ZlcnJpZGUgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5JbmRlbnRhdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHNwYWNlcyBmb3IgaW5kZW50YXRpb24gcmF0aGVyIHRoYW4gdGhhbiB0YWJzLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHNoZWxsIGZ1bmN0aW9ucywgYm90aCBjdXJyZW50bHkgd29yay4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGl0IGlzIGEgcG9saWN5IGRlY2lzaW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICB0byB1c2UgdGFicyBpbiBzaGVsbCBmdW5jdGlvbnMuCisgICAgICAgICAgICAgICAgICAgICAgICBSZWFsaXplIHRoYXQgc29tZSBsYXllcnMgaGF2ZSBhIHBvbGljeSB0byB1c2Ugc3BhY2VzCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYWxsIGluZGVudGF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Vc2luZyBQeXRob24gZm9yIENvbXBsZXggT3BlcmF0aW9uczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgYWR2YW5jZWQgcHJvY2Vzc2luZywgaXQgaXMgcG9zc2libGUgdG8gdXNlCisgICAgICAgICAgICAgICAgICAgICAgICBQeXRob24gY29kZSBkdXJpbmcgdmFyaWFibGUgYXNzaWdubWVudHMgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaCBhbmQgcmVwbGFjZW1lbnQgb24gYSB2YXJpYWJsZSkuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgaW5kaWNhdGUgUHl0aG9uIGNvZGUgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtAPHJlcGxhY2VhYmxlPnB5dGhvbl9jb2RlPC9yZXBsYWNlYWJsZT59PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheCBmb3IgdGhlIHZhcmlhYmxlIGFzc2lnbm1lbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNSQ19VUkkgPSAiZnRwOi8vZnRwLmluZm8temlwLm9yZy9wdWIvaW5mb3ppcC9zcmMvemlwJHtAZC5nZXRWYXIoJ1BWJywxKS5yZXBsYWNlKCcuJywgJycpfS50Z3oKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2hlbGwgRnVuY3Rpb24gU3ludGF4OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZSBzaGVsbCBmdW5jdGlvbnMgYXMgaWYgeW91IHdlcmUgd3JpdGluZyBhIHNoZWxsCisgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHQgd2hlbiB5b3UgZGVzY3JpYmUgYSBsaXN0IG9mIGFjdGlvbnMgdG8gdGFrZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgZW5zdXJlIHRoYXQgeW91ciBzY3JpcHQgd29ya3Mgd2l0aCBhIGdlbmVyaWMKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zaDwvZmlsZW5hbWU+IGFuZCB0aGF0IGl0IGRvZXMgbm90IHJlcXVpcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGFueSA8ZmlsZW5hbWU+YmFzaDwvZmlsZW5hbWU+IG9yIG90aGVyIHNoZWxsLXNwZWNpZmljCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbmFsaXR5LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHNhbWUgY29uc2lkZXJhdGlvbnMgYXBwbHkgdG8gdmFyaW91cyBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgIHV0aWxpdGllcyAoZS5nLiA8ZmlsZW5hbWU+c2VkPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3JlcDwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+YXdrPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc28gZm9ydGgpIHRoYXQgeW91IG1pZ2h0IHdpc2ggdG8gdXNlLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgaW4gZG91YnQsIHlvdSBzaG91bGQgY2hlY2sgd2l0aCBtdWx0aXBsZQorICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zIC0gaW5jbHVkaW5nIHRob3NlIGZyb20gQnVzeUJveC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CiAgICAgPC9zZWN0aW9uPgogCiAgICAgPHNlY3Rpb24gaWQ9InBsYXRkZXYtbmV3bWFjaGluZSI+CkBAIC0zNTM4LDggKzQwMzksOSBAQAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIEZvciBhIGNvbXBsZXRlIGV4YW1wbGUgdGhhdCBzaG93cyBob3cgdG8gYWRkIGEgbmV3IG1hY2hpbmUsCiAgICAgICAgICAgICBzZWUgdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjY3JlYXRpbmctYS1uZXctYnNwLWxheWVyLXVzaW5nLXRoZS15b2N0by1ic3Atc2NyaXB0Jz5DcmVhdGluZyBhIE5ldyBCU1AgTGF5ZXIgVXNpbmcgdGhlIHlvY3RvLWJzcCBTY3JpcHQ8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlLgorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2NyZWF0aW5nLWEtbmV3LWJzcC1sYXllci11c2luZy10aGUtYml0YmFrZS1sYXllcnMtc2NyaXB0Jz5DcmVhdGluZyBhIE5ldyBCU1AgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkKKyAgICAgICAgICAgIERldmVsb3BlcidzIEd1aWRlLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHNlY3Rpb24gaWQ9InBsYXRkZXYtbmV3bWFjaGluZS1jb25mZmlsZSI+CkBAIC0zNjk0LDYgKzQxOTYsNTYyIEBACiAgICAgICAgIDwvc2VjdGlvbj4KICAgICA8L3NlY3Rpb24+CiAKKyAgICA8c2VjdGlvbiBpZD0nZ3MtdXBncmFkaW5nLXJlY2lwZXMnPgorICAgICAgICA8dGl0bGU+VXBncmFkaW5nIFJlY2lwZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgT3ZlciB0aW1lLCB1cHN0cmVhbSBkZXZlbG9wZXJzIHB1Ymxpc2ggbmV3IHZlcnNpb25zIGZvciBzb2Z0d2FyZQorICAgICAgICAgICAgYnVpbHQgYnkgbGF5ZXIgcmVjaXBlcy4KKyAgICAgICAgICAgIEl0IGlzIHJlY29tbWVuZGVkIHRvIGtlZXAgcmVjaXBlcyB1cC10by1kYXRlIHdpdGggdXBzdHJlYW0KKyAgICAgICAgICAgIHZlcnNpb24gcmVsZWFzZXMuCisgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgQXV0b21hdGVkIFVwZ3JhZGUgSGVscGVyIChBVUgpIHRvIHNldCB1cAorICAgICAgICAgICAgYXV0b21hdGljIHZlcnNpb24gdXBncmFkZXMuCisgICAgICAgICAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHRvIHNldCB1cCBzZW1pLWF1dG9tYXRpYyB2ZXJzaW9uIHVwZ3JhZGVzLgorICAgICAgICAgICAgRmluYWxseSwgeW91IGNhbiBldmVuIG1hbnVhbGx5IHVwZ3JhZGUgYSByZWNpcGUgYnkgZWRpdGluZyB0aGUKKyAgICAgICAgICAgIHJlY2lwZSBpdHNlbGYuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZ3MtdXNpbmctdGhlLWF1dG8tdXBncmFkZS1oZWxwZXInPgorICAgICAgICAgICAgPHRpdGxlPlVzaW5nIHRoZSBBdXRvIFVwZ3JhZGUgSGVscGVyIChBVUgpPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIEFVSCB1dGlsaXR5IHdvcmtzIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlCisgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBpbiBvcmRlciB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlCisgICAgICAgICAgICAgICAgdXBncmFkZXMgZm9yIHJlY2lwZXMgYmFzZWQgb24gbmV3IHZlcnNpb25zIGJlaW5nCisgICAgICAgICAgICAgICAgcHVibGlzaGVkIHVwc3RyZWFtLgorICAgICAgICAgICAgICAgIFVzZSBBVUggd2hlbiB5b3Ugd2FudCB0byBjcmVhdGUgYSBzZXJ2aWNlIHRoYXQgcGVyZm9ybXMgdGhlCisgICAgICAgICAgICAgICAgdXBncmFkZXMgYXV0b21hdGljYWxseSBhbmQgb3B0aW9uYWxseSBzZW5kcyB5b3UgYW4gZW1haWwgd2l0aAorICAgICAgICAgICAgICAgIHRoZSByZXN1bHRzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBVUggYWxsb3dzIHlvdSB0byB1cGRhdGUgc2V2ZXJhbCByZWNpcGVzIHdpdGggYSBzaW5nbGUgdXNlLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBvcHRpb25hbGx5IHBlcmZvcm0gYnVpbGQgYW5kIGludGVncmF0aW9uIHRlc3RzCisgICAgICAgICAgICAgICAgdXNpbmcgaW1hZ2VzIHdpdGggdGhlIHJlc3VsdHMgc2F2ZWQgdG8geW91ciBoYXJkIGRyaXZlIGFuZAorICAgICAgICAgICAgICAgIGVtYWlscyBvZiByZXN1bHRzIG9wdGlvbmFsbHkgc2VudCB0byByZWNpcGUgbWFpbnRhaW5lcnMuCisgICAgICAgICAgICAgICAgRmluYWxseSwgQVVIIGNyZWF0ZXMgR2l0IGNvbW1pdHMgd2l0aCBhcHByb3ByaWF0ZSBjb21taXQKKyAgICAgICAgICAgICAgICBtZXNzYWdlcyBpbiB0aGUgbGF5ZXIncyB0cmVlIGZvciB0aGUgY2hhbmdlcyBtYWRlIHRvIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIENvbmRpdGlvbnMgZG8gZXhpc3Qgd2hlbiB5b3Ugc2hvdWxkIG5vdCB1c2UgQVVIIHRvIHVwZ3JhZGUKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlcyBhbmQgeW91IHNob3VsZCBpbnN0ZWFkIHVzZSBlaXRoZXIKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IG9yIHVwZ3JhZGUgeW91cgorICAgICAgICAgICAgICAgICAgICByZWNpcGVzIG1hbnVhbGx5OgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gQVVIIGNhbm5vdCBjb21wbGV0ZSB0aGUgdXBncmFkZSBzZXF1ZW5jZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHNpdHVhdGlvbiB1c3VhbGx5IHJlc3VsdHMgYmVjYXVzZSBjdXN0b20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaGVzIGNhcnJpZWQgYnkgdGhlIHJlY2lwZSBjYW5ub3QgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IHJlYmFzZWQgdG8gdGhlIG5ldyB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dzIHlvdSB0byBtYW51YWxseSByZXNvbHZlIGNvbmZsaWN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIGZvciBhbnkgcmVhc29uIHlvdSB3YW50IGZ1bGxlciBjb250cm9sIG92ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdXBncmFkZSBwcm9jZXNzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB3aGVuIHlvdSB3YW50IHNwZWNpYWwgYXJyYW5nZW1lbnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRlc3RpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBzdGVwcyBkZXNjcmliZSBob3cgdG8gc2V0IHVwIHRoZSBBVUggdXRpbGl0eToKKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CZSBTdXJlIHRoZSBEZXZlbG9wbWVudCBIb3N0IGlzIFNldCBVcDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gYmUgc3VyZSB0aGF0IHlvdXIgZGV2ZWxvcG1lbnQgaG9zdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgc2V0IHVwIHRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gc2V0IHVwIHlvdXIgaG9zdCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3NldHRpbmctdXAtdGhlLWRldmVsb3BtZW50LWhvc3QtdG8tdXNlLXRoZS15b2N0by1wcm9qZWN0Jz5QcmVwYXJpbmcgdGhlIEJ1aWxkIEhvc3Q8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBTdXJlIEdpdCBpcyBDb25maWd1cmVkOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgQVVIIHV0aWxpdHkgcmVxdWlyZXMgR2l0IHRvIGJlIGNvbmZpZ3VyZWQgYmVjYXVzZQorICAgICAgICAgICAgICAgICAgICAgICAgQVVIIHVzZXMgR2l0IHRvIHNhdmUgdXBncmFkZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBUaHVzLCB5b3UgbXVzdCBoYXZlIEdpdCB1c2VyIGFuZCBlbWFpbCBjb25maWd1cmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kIHNob3dzIHlvdXIgY29uZmlndXJhdGlvbnM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IGNvbmZpZyAtLWxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgaGF2ZSB0aGUgdXNlciBhbmQgZW1haWwgY29uZmlndXJlZCwgeW91CisgICAgICAgICAgICAgICAgICAgICAgICBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgdG8gZG8gc286CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLm5hbWUgPHJlcGxhY2VhYmxlPnNvbWVfbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICQgZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLmVtYWlsIDxyZXBsYWNlYWJsZT51c2VybmFtZTwvcmVwbGFjZWFibGU+QDxyZXBsYWNlYWJsZT5kb21haW48L3JlcGxhY2VhYmxlPi5jb20KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2xvbmUgdGhlIEFVSCBSZXBvc2l0b3J5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUbyB1c2UgQVVILCB5b3UgbXVzdCBjbG9uZSB0aGUgcmVwb3NpdG9yeSBvbnRvIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGhvc3QuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgdXNlcyBHaXQgdG8gY3JlYXRlIGEgbG9jYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvcHkgb2YgdGhlIHJlcG9zaXRvcnkgb24geW91ciBzeXN0ZW06CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2F1dG8tdXBncmFkZS1oZWxwZXIKKyAgICAgQ2xvbmluZyBpbnRvICdhdXRvLXVwZ3JhZGUtaGVscGVyJy4uLgorICAgICByZW1vdGU6IENvdW50aW5nIG9iamVjdHM6IDc2OCwgZG9uZS4KKyAgICAgcmVtb3RlOiBDb21wcmVzc2luZyBvYmplY3RzOiAxMDAlICgzMDAvMzAwKSwgZG9uZS4KKyAgICAgcmVtb3RlOiBUb3RhbCA3NjggKGRlbHRhIDQ5OSksIHJldXNlZCA3MDMgKGRlbHRhIDQzNCkKKyAgICAgUmVjZWl2aW5nIG9iamVjdHM6IDEwMCUgKDc2OC83NjgpLCAxOTEuNDcgS2lCIHwgOTguMDAgS2lCL3MsIGRvbmUuCisgICAgIFJlc29sdmluZyBkZWx0YXM6IDEwMCUgKDQ5OS80OTkpLCBkb25lLgorICAgICBDaGVja2luZyBjb25uZWN0aXZpdHkuLi4gZG9uZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFVSCBpcyBub3QgcGFydCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I29lLWNvcmUnPk9wZW5FbWJlZGRlZC1Db3JlIChPRS1Db3JlKTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBvcgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcG9reSc+UG9reTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhIERlZGljYXRlZCBCdWlsZCBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFJ1biB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0IHRvIGNyZWF0ZSBhIGZyZXNoIGJ1aWxkIGRpcmVjdG9yeSB0aGF0IHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgdXNlIGV4Y2x1c2l2ZWx5IGZvciBydW5uaW5nIHRoZSBBVUggdXRpbGl0eToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+L3Bva3kKKyAgICAgJCBzb3VyY2Ugb2UtaW5pdC1idWlsZC1lbnYgPHJlcGxhY2VhYmxlPnlvdXJfQVVIX2J1aWxkX2RpcmVjdG9yeTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBSZS11c2luZyBhbiBleGlzdGluZyBidWlsZCBkaXJlY3RvcnkgYW5kIGl0cworICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMgaXMgbm90IHJlY29tbWVuZGVkIGFzIGV4aXN0aW5nIHNldHRpbmdzCisgICAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBjYXVzZSBBVUggdG8gZmFpbCBvciBiZWhhdmUgdW5kZXNpcmFibHkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ha2UgQ29uZmlndXJhdGlvbnMgaW4gWW91ciBMb2NhbCBDb25maWd1cmF0aW9uIEZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNldmVyYWwgc2V0dGluZ3MgbmVlZCB0byBleGlzdCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSB5b3UganVzdCBjcmVhdGVkIGZvciBBVUguCisgICAgICAgICAgICAgICAgICAgICAgICBNYWtlIHRoZXNlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uczoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmFibGUgImRpc3Ryb2RhdGEiIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU5IRVJJVCA9KyAiZGlzdHJvZGF0YSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtYWludGFpbmluZy1idWlsZC1vdXRwdXQtcXVhbGl0eSc+QnVpbGQgSGlzdG9yeTwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBvcHRpb25hbCwgeW91IG5lZWQgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU5IRVJJVCA9KyAiYnVpbGRoaXN0b3J5IgorICAgICBCVUlMREhJU1RPUllfQ09NTUlUID0gIjEiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2l0aCB0aGlzIGNvbmZpZ3VyYXRpb24gYW5kIGEgc3VjY2Vzc2Z1bAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGdyYWRlLCBhIGJ1aWxkIGhpc3RvcnkgImRpZmYiIGZpbGUgYXBwZWFycyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnVwZ3JhZGUtaGVscGVyL3dvcmsvcmVjaXBlL2J1aWxkaGlzdG9yeS1kaWZmLnR4dDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgZm91bmQgaW4geW91ciBidWlsZCBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gZW5hYmxlIHRlc3RpbmcgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtdGVzdGltYWdlKic+PGZpbGVuYW1lPnRlc3RpbWFnZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHdoaWNoIGlzIG9wdGlvbmFsLCB5b3UgbmVlZCB0byBoYXZlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgc2V0IGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU5IRVJJVCArPSAidGVzdGltYWdlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBkaXN0cm8gZG9lcyBub3QgZW5hYmxlIGJ5IGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0ZXN0LCB3aGljaCBQb2t5IGRvZXMsIHlvdSBuZWVkIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRElTVFJPX0ZFQVRVUkVTX2FwcGVuZCA9ICIgcHRlc3QiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3B0aW9uYWxseSBTdGFydCBhIHZuY3NlcnZlcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSBydW5uaW5nIGluIGEgc2VydmVyIHdpdGhvdXQgYW4gWDExIHNlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byBzdGFydCBhIHZuY3NlcnZlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB2bmNzZXJ2ZXIgOjEKKyAgICAgJCBleHBvcnQgRElTUExBWT06MQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgYW5kIEVkaXQgYW4gQVVIIENvbmZpZ3VyYXRpb24gRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gaGF2ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT51cGdyYWRlLWhlbHBlci91cGdyYWRlLWhlbHBlci5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiB5b3VyIGJ1aWxkIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBhIHNhbXBsZSBjb25maWd1cmF0aW9uIGZpbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9hdXRvLXVwZ3JhZGUtaGVscGVyL3RyZWUvJz5BVUggc291cmNlIHJlcG9zaXRvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+UmVhZCB0aHJvdWdoIHRoZSBzYW1wbGUgZmlsZSBhbmQgbWFrZQorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMgYXMgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSBlbmFibGVkIGJ1aWxkIGhpc3RvcnkgaW4geW91cgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBhcyBkZXNjcmliZWQgZWFybGllciwKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBtdXN0IGVuYWJsZSBpdCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnVwZ3JhZGUtaGVscGVyLmNvbmY8L2ZpbGVuYW1lPi48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkFsc28sIGlmIHlvdSBhcmUgdXNpbmcgdGhlIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tYWludGFpbmVycy5pbmM8L2ZpbGVuYW1lPiBmaWxlIHN1cHBsaWVkCisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIFBva3kgYW5kIGxvY2F0ZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXlvY3RvPC9maWxlbmFtZT4gYW5kIHlvdSBkbyBub3Qgc2V0IGEKKyAgICAgICAgICAgICAgICAgICAgICAgICJtYWludGFpbmVyc193aGl0ZWxpc3QiIG9yICJnbG9iYWxfbWFpbnRhaW5lcl9vdmVycmlkZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSA8ZmlsZW5hbWU+dXBncmFkZS1oZWxwZXIuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLCBhbmQgeW91IHNwZWNpZnkgIi1lIGFsbCIgb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBBVUggY29tbWFuZC1saW5lLCB0aGUgdXRpbGl0eSBhdXRvbWF0aWNhbGx5IHNlbmRzIG91dAorICAgICAgICAgICAgICAgICAgICAgICAgZW1haWxzIHRvIGFsbCB0aGUgZGVmYXVsdCBtYWludGFpbmVycy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBsZWFzZSBhdm9pZCB0aGlzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhpcyBuZXh0IHNldCBvZiBleGFtcGxlcyBkZXNjcmliZXMgaG93IHRvIHVzZSB0aGUgQVVIOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5VcGdyYWRpbmcgYSBTcGVjaWZpYyBSZWNpcGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIHVwZ3JhZGUgYSBzcGVjaWZpYyByZWNpcGUsIHVzZSB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHVwZ3JhZGUtaGVscGVyLnB5IDxyZXBsYWNlYWJsZT5yZWNpcGVfbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhpcyBjb21tYW5kIHVwZ3JhZGVzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnhtb2RtYXA8L2ZpbGVuYW1lPiByZWNpcGU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgdXBncmFkZS1oZWxwZXIucHkgeG1vZG1hcAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5VcGdyYWRpbmcgYSBTcGVjaWZpYyBSZWNpcGUgdG8gYSBQYXJ0aWN1bGFyIFZlcnNpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIHVwZ3JhZGUgYSBzcGVjaWZpYyByZWNpcGUgdG8gYSBwYXJ0aWN1bGFyIHZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICB1c2UgdGhlIGZvbGxvd2luZyBmb3JtOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHVwZ3JhZGUtaGVscGVyLnB5IDxyZXBsYWNlYWJsZT5yZWNpcGVfbmFtZTwvcmVwbGFjZWFibGU+IC10IDxyZXBsYWNlYWJsZT52ZXJzaW9uPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGlzIGNvbW1hbmQgdXBncmFkZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eG1vZG1hcDwvZmlsZW5hbWU+IHJlY2lwZSB0byB2ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAxLjIuMzoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB1cGdyYWRlLWhlbHBlci5weSB4bW9kbWFwIC10IDEuMi4zCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVwZ3JhZGluZyBhbGwgUmVjaXBlcyB0byB0aGUgTGF0ZXN0IFZlcnNpb25zIGFuZCBTdXBwcmVzc2luZyBFbWFpbCBOb3RpZmljYXRpb25zOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUbyB1cGdyYWRlIGFsbCByZWNpcGVzIHRvIHRoZWlyIG1vc3QgcmVjZW50IHZlcnNpb25zCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc3VwcHJlc3MgdGhlIGVtYWlsIG5vdGlmaWNhdGlvbnMsIHVzZSB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHVwZ3JhZGUtaGVscGVyLnB5IGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5VcGdyYWRpbmcgYWxsIFJlY2lwZXMgdG8gdGhlIExhdGVzdCBWZXJzaW9ucyBhbmQgU2VuZCBFbWFpbCBOb3RpZmljYXRpb25zOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUbyB1cGdyYWRlIGFsbCByZWNpcGVzIHRvIHRoZWlyIG1vc3QgcmVjZW50IHZlcnNpb25zCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VuZCBlbWFpbCBtZXNzYWdlcyB0byBtYWludGFpbmVycyBmb3IgZWFjaAorICAgICAgICAgICAgICAgICAgICAgICAgYXR0ZW1wdGVkIHJlY2lwZSBhcyB3ZWxsIGFzIGEgc3RhdHVzIGVtYWlsLCB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB1cGdyYWRlLWhlbHBlci5weSAtZSBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHJ1biB0aGUgQVVIIHV0aWxpdHksIHlvdSBjYW4gZmluZCB0aGUgcmVzdWx0cworICAgICAgICAgICAgICAgIGluIHRoZSBBVUggYnVpbGQgZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJHtCVUlMRERJUn0vdXBncmFkZS1oZWxwZXIvPHJlcGxhY2VhYmxlPnRpbWVzdGFtcDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSBBVUggdXRpbGl0eSBhbHNvIGNyZWF0ZXMgcmVjaXBlIHVwZGF0ZSBjb21taXRzIGZyb20KKyAgICAgICAgICAgICAgICBzdWNjZXNzZnVsIHVwZ3JhZGUgYXR0ZW1wdHMgaW4gdGhlIGxheWVyIHRyZWUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZWFzaWx5IHNldCB1cCB0byBydW4gdGhlIEFVSCB1dGlsaXR5IG9uIGEgcmVndWxhcgorICAgICAgICAgICAgICAgIGJhc2lzIGJ5IHVzaW5nIGEgY3JvbiBqb2IuCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL2F1dG8tdXBncmFkZS1oZWxwZXIvdHJlZS93ZWVrbHlqb2Iuc2gnPjxmaWxlbmFtZT53ZWVrbHlqb2Iuc2g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgZmlsZSBkaXN0cmlidXRlZCB3aXRoIHRoZSB1dGlsaXR5IGZvciBhbiBleGFtcGxlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2dzLXVzaW5nLWRldnRvb2wtdXBncmFkZSc+CisgICAgICAgICAgICA8dGl0bGU+VXNpbmcgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQXMgbWVudGlvbmVkIGVhcmxpZXIsIGFuIGFsdGVybmF0aXZlIG1ldGhvZCBmb3IgdXBncmFkaW5nCisgICAgICAgICAgICAgICAgcmVjaXBlcyB0byBuZXdlciB2ZXJzaW9ucyBpcyB0byB1c2UKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtZGV2dG9vbC1yZWZlcmVuY2UnPjxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgICAgIFlvdSBjYW4gcmVhZCBhYm91dCA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4gaW4KKyAgICAgICAgICAgICAgICBnZW5lcmFsIGluIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstZGV2dG9vbC11c2UtZGV2dG9vbC11cGdyYWRlLXRvLWNyZWF0ZS1hLXZlcnNpb24tb2YtdGhlLXJlY2lwZS10aGF0LXN1cHBvcnRzLWEtbmV3ZXItdmVyc2lvbi1vZi10aGUtc29mdHdhcmUnPlVzZSA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4gdG8gQ3JlYXRlIGEgVmVyc2lvbiBvZiB0aGUgUmVjaXBlIHRoYXQgU3VwcG9ydHMgYSBOZXdlciBWZXJzaW9uIG9mIHRoZSBTb2Z0d2FyZTwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQorICAgICAgICAgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBNYW51YWwuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIHNlZSBhbGwgdGhlIGNvbW1hbmQtbGluZSBvcHRpb25zIGF2YWlsYWJsZSB3aXRoCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+LCB1c2UgdGhlIGZvbGxvd2luZyBoZWxwCisgICAgICAgICAgICAgICAgY29tbWFuZDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCB1cGdyYWRlIC1oCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBmaW5kIG91dCB3aGF0IHZlcnNpb24gYSByZWNpcGUgaXMgY3VycmVudGx5IGF0CisgICAgICAgICAgICAgICAgdXBzdHJlYW0gd2l0aG91dCBhbnkgYXR0ZW1wdCB0byB1cGdyYWRlIHlvdXIgbG9jYWwgdmVyc2lvbiBvZgorICAgICAgICAgICAgICAgIHRoZSByZWNpcGUsIHlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBsYXRlc3QtdmVyc2lvbiA8cmVwbGFjZWFibGU+cmVjaXBlX25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQXMgbWVudGlvbmVkIGluIHRoZSBwcmV2aW91cyBzZWN0aW9uIGRlc2NyaWJpbmcgQVVILAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPiB3b3JrcyBpbiBhCisgICAgICAgICAgICAgICAgbGVzcy1hdXRvbWF0ZWQgbWFubmVyIHRoYW4gQVVILgorICAgICAgICAgICAgICAgIFNwZWNpZmljYWxseSwgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IG9ubHkKKyAgICAgICAgICAgICAgICB3b3JrcyBvbiBhIHNpbmdsZSByZWNpcGUgdGhhdCB5b3UgbmFtZSBvbiB0aGUgY29tbWFuZCBsaW5lLAorICAgICAgICAgICAgICAgIGNhbm5vdCBwZXJmb3JtIGJ1aWxkIGFuZCBpbnRlZ3JhdGlvbiB0ZXN0aW5nIHVzaW5nIGltYWdlcywKKyAgICAgICAgICAgICAgICBhbmQgZG9lcyBub3QgYXV0b21hdGljYWxseSBnZW5lcmF0ZSBjb21taXRzIGZvciBjaGFuZ2VzIGluCisgICAgICAgICAgICAgICAgdGhlIHNvdXJjZSB0cmVlLgorICAgICAgICAgICAgICAgIERlc3BpdGUgYWxsIHRoZXNlICJsaW1pdGF0aW9ucyIsCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IHVwZGF0ZXMgdGhlIHJlY2lwZSBmaWxlCisgICAgICAgICAgICAgICAgdG8gdGhlIG5ldyB1cHN0cmVhbSB2ZXJzaW9uIGFuZCBhdHRlbXB0cyB0byByZWJhc2UgY3VzdG9tCisgICAgICAgICAgICAgICAgcGF0Y2hlcyBjb250YWluZWQgYnkgdGhlIHJlY2lwZSBhcyBuZWVkZWQuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEFVSCB1c2VzIG11Y2ggb2YgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGJlaGluZCB0aGUgc2NlbmVzIG1ha2luZyBBVUggc29tZXdoYXQgb2YgYSAid3JhcHBlciIKKyAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24gZm9yIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEEgdHlwaWNhbCBzY2VuYXJpbyBpbnZvbHZlcyBoYXZpbmcgdXNlZCBHaXQgdG8gY2xvbmUgYW4KKyAgICAgICAgICAgICAgICB1cHN0cmVhbSByZXBvc2l0b3J5IHRoYXQgeW91IHVzZSBkdXJpbmcgYnVpbGQgb3BlcmF0aW9ucy4KKyAgICAgICAgICAgICAgICBCZWNhdXNlIHlvdSBhcmUgKG9yIGhhdmUpIGJ1aWx0IHRoZSByZWNpcGUgaW4gdGhlIHBhc3QsIHRoZQorICAgICAgICAgICAgICAgIGxheWVyIGlzIGxpa2VseSBhZGRlZCB0byB5b3VyIGNvbmZpZ3VyYXRpb24gYWxyZWFkeS4KKyAgICAgICAgICAgICAgICBJZiBmb3Igc29tZSByZWFzb24sIHRoZSBsYXllciBpcyBub3QgYWRkZWQsIHlvdSBjb3VsZCBhZGQKKyAgICAgICAgICAgICAgICBpdCBlYXNpbHkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjY3JlYXRpbmctYS1uZXctYnNwLWxheWVyLXVzaW5nLXRoZS1iaXRiYWtlLWxheWVycy1zY3JpcHQnPjxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBzY3JpcHQuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IHVzZSB0aGUgPGZpbGVuYW1lPm5hbm8uYmI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHJlY2lwZSBmcm9tIHRoZSA8ZmlsZW5hbWU+bWV0YS1vZTwvZmlsZW5hbWU+IGxheWVyIGluIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLW9wZW5lbWJlZGRlZDwvZmlsZW5hbWU+IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgRm9yIHRoaXMgZXhhbXBsZSwgYXNzdW1lIHRoYXQgdGhlIGxheWVyIGhhcyBiZWVuIGNsb25lZCBpbnRvCisgICAgICAgICAgICAgICAgZm9sbG93aW5nIGFyZWE6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAvaG9tZS9zY290dHJpZi9tZXRhLW9wZW5lbWJlZGRlZAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgZnJvbSB5b3VyCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgIGFkZHMgdGhlIGxheWVyIHRvIHlvdXIgYnVpbGQgY29uZmlndXJhdGlvbiAoaS5lLgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke0JVSUxERElSfS9jb25mL2JibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPik6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAvaG9tZS9zY290dHJpZi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lCisgICAgIE5PVEU6IFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyLi4uCisgICAgIFBhcnNpbmcgcmVjaXBlczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjU1CisgICAgIFBhcnNpbmcgb2YgMTQzMSAuYmIgZmlsZXMgY29tcGxldGUgKDAgY2FjaGVkLCAxNDMxIHBhcnNlZCkuIDIwNDAgdGFyZ2V0cywgNTYgc2tpcHBlZCwgMCBtYXNrZWQsIDAgZXJyb3JzLgorICAgICBSZW1vdmluZyAxMiByZWNpcGVzIGZyb20gdGhlIHg4Nl82NCBzeXNyb290OiAxMDAlIHwjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMAorICAgICBSZW1vdmluZyAxIHJlY2lwZXMgZnJvbSB0aGUgeDg2XzY0X2k1ODYgc3lzcm9vdDogMTAwJSB8IyMjIyMjIyMjI3wgVGltZTogMDowMDowMAorICAgICBSZW1vdmluZyA1IHJlY2lwZXMgZnJvbSB0aGUgaTU4NiBzeXNyb290OiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMAorICAgICBSZW1vdmluZyA1IHJlY2lwZXMgZnJvbSB0aGUgcWVtdXg4NiBzeXNyb290OiAxMDAlIHwjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLCBhc3N1bWUgdGhhdCB0aGUgPGZpbGVuYW1lPm5hbm8uYmI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHJlY2lwZSB0aGF0IGlzIHVwc3RyZWFtIGhhcyBhIDIuOS4zIHZlcnNpb24gbnVtYmVyLgorICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSB2ZXJzaW9uIGluIHRoZSBsb2NhbCByZXBvc2l0b3J5IGlzIDIuNy40LgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZCBmcm9tIHlvdXIgYnVpbGQgZGlyZWN0b3J5IGF1dG9tYXRpY2FsbHkKKyAgICAgICAgICAgICAgICB1cGdyYWRlcyB0aGUgcmVjaXBlIGZvciB5b3U6CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFVzaW5nIHRoZSA8ZmlsZW5hbWU+LVY8L2ZpbGVuYW1lPiBvcHRpb24gaXMgbm90IG5lY2Vzc2FyeS4KKyAgICAgICAgICAgICAgICAgICAgT21pdHRpbmcgdGhlIHZlcnNpb24gbnVtYmVyIGNhdXNlcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4gdG8gdXBncmFkZSB0aGUgcmVjaXBlCisgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBtb3N0IHJlY2VudCB2ZXJzaW9uLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCB1cGdyYWRlIG5hbm8gLVYgMi45LjMKKyAgICAgTk9URTogU3RhcnRpbmcgYml0YmFrZSBzZXJ2ZXIuLi4KKyAgICAgTk9URTogQ3JlYXRpbmcgd29ya3NwYWNlIGxheWVyIGluIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvd29ya3NwYWNlCisgICAgIFBhcnNpbmcgcmVjaXBlczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjQ2CisgICAgIFBhcnNpbmcgb2YgMTQzMSAuYmIgZmlsZXMgY29tcGxldGUgKDAgY2FjaGVkLCAxNDMxIHBhcnNlZCkuIDIwNDAgdGFyZ2V0cywgNTYgc2tpcHBlZCwgMCBtYXNrZWQsIDAgZXJyb3JzLgorICAgICBOT1RFOiBFeHRyYWN0aW5nIGN1cnJlbnQgdmVyc2lvbiBzb3VyY2UuLi4KKyAgICAgTk9URTogUmVzb2x2aW5nIGFueSBtaXNzaW5nIHRhc2sgcXVldWUgZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAuCisgICAgICAgICAgICAuCisgICAgICAgICAgICAuCisgICAgIE5PVEU6IEV4ZWN1dGluZyBTZXRTY2VuZSBUYXNrcworICAgICBOT1RFOiBFeGVjdXRpbmcgUnVuUXVldWUgVGFza3MKKyAgICAgTk9URTogVGFza3MgU3VtbWFyeTogQXR0ZW1wdGVkIDc0IHRhc2tzIG9mIHdoaWNoIDcyIGRpZG4ndCBuZWVkIHRvIGJlIHJlcnVuIGFuZCBhbGwgc3VjY2VlZGVkLgorICAgICBBZGRpbmcgY2hhbmdlZCBmaWxlczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMAorICAgICBOT1RFOiBVcGdyYWRlZCBzb3VyY2UgZXh0cmFjdGVkIHRvIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvd29ya3NwYWNlL3NvdXJjZXMvbmFubworICAgICBOT1RFOiBOZXcgcmVjaXBlIGlzIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvd29ya3NwYWNlL3JlY2lwZXMvbmFuby9uYW5vXzIuOS4zLmJiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIENvbnRpbnVpbmcgd2l0aCB0aGlzIGV4YW1wbGUsIHlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQ8L2ZpbGVuYW1lPiB0byBidWlsZCB0aGUgbmV3bHkgdXBncmFkZWQKKyAgICAgICAgICAgICAgICByZWNpcGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGRldnRvb2wgYnVpbGQgbmFubworICAgICBOT1RFOiBTdGFydGluZyBiaXRiYWtlIHNlcnZlci4uLgorICAgICBMb2FkaW5nIGNhY2hlOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN8IFRpbWU6IDA6MDA6MDEKKyAgICAgTG9hZGVkIDIwNDAgZW50cmllcyBmcm9tIGRlcGVuZGVuY3kgY2FjaGUuCisgICAgIFBhcnNpbmcgcmVjaXBlczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMAorICAgICBQYXJzaW5nIG9mIDE0MzIgLmJiIGZpbGVzIGNvbXBsZXRlICgxNDMxIGNhY2hlZCwgMSBwYXJzZWQpLiAyMDQxIHRhcmdldHMsIDU2IHNraXBwZWQsIDAgbWFza2VkLCAwIGVycm9ycy4KKyAgICAgTk9URTogUmVzb2x2aW5nIGFueSBtaXNzaW5nIHRhc2sgcXVldWUgZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAuCisgICAgICAgICAgICAuCisgICAgICAgICAgICAuCisgICAgIE5PVEU6IEV4ZWN1dGluZyBTZXRTY2VuZSBUYXNrcworICAgICBOT1RFOiBFeGVjdXRpbmcgUnVuUXVldWUgVGFza3MKKyAgICAgTk9URTogbmFubzogY29tcGlsaW5nIGZyb20gZXh0ZXJuYWwgc291cmNlIHRyZWUgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC93b3Jrc3BhY2Uvc291cmNlcy9uYW5vCisgICAgIE5PVEU6IFRhc2tzIFN1bW1hcnk6IEF0dGVtcHRlZCA1MjAgdGFza3Mgb2Ygd2hpY2ggMzA0IGRpZG4ndCBuZWVkIHRvIGJlIHJlcnVuIGFuZCBhbGwgc3VjY2VlZGVkLgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBXaXRoaW4gdGhlIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPiB3b3JrZmxvdywKKyAgICAgICAgICAgICAgICBvcHBvcnR1bml0eSBleGlzdHMgdG8gZGVwbG95IGFuZCB0ZXN0IHlvdXIgcmVidWlsdCBzb2Z0d2FyZS4KKyAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLCBob3dldmVyLCBydW5uaW5nCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgZmluaXNoPC9maWxlbmFtZT4gY2xlYW5zIHVwIHRoZSB3b3Jrc3BhY2UKKyAgICAgICAgICAgICAgICBvbmNlIHRoZSBzb3VyY2UgaW4geW91ciB3b3Jrc3BhY2UgaXMgY2xlYW4uCisgICAgICAgICAgICAgICAgVGhpcyB1c3VhbGx5IG1lYW5zIHVzaW5nIEdpdCB0byBzdGFnZSBhbmQgc3VibWl0IGNvbW1pdHMKKyAgICAgICAgICAgICAgICBmb3IgdGhlIGNoYW5nZXMgZ2VuZXJhdGVkIGJ5IHRoZSB1cGdyYWRlIHByb2Nlc3MuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE9uY2UgdGhlIHRyZWUgaXMgY2xlYW4sIHlvdSBjYW4gY2xlYW4gdGhpbmdzIHVwIGluIHRoaXMKKyAgICAgICAgICAgICAgICBleGFtcGxlIHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kIGZyb20gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7QlVJTERESVJ9L3dvcmtzcGFjZS9zb3VyY2VzL25hbm88L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGRpcmVjdG9yeToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBmaW5pc2ggbmFubyBtZXRhLW9lCisgICAgIE5PVEU6IFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyLi4uCisgICAgIExvYWRpbmcgY2FjaGU6IDEwMCUgfCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI3wgVGltZTogMDowMDowMAorICAgICBMb2FkZWQgMjA0MCBlbnRyaWVzIGZyb20gZGVwZW5kZW5jeSBjYWNoZS4KKyAgICAgUGFyc2luZyByZWNpcGVzOiAxMDAlIHwjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAxCisgICAgIFBhcnNpbmcgb2YgMTQzMiAuYmIgZmlsZXMgY29tcGxldGUgKDE0MzEgY2FjaGVkLCAxIHBhcnNlZCkuIDIwNDEgdGFyZ2V0cywgNTYgc2tpcHBlZCwgMCBtYXNrZWQsIDAgZXJyb3JzLgorICAgICBOT1RFOiBBZGRpbmcgbmV3IHBhdGNoIDAwMDEtbmFuby5iYi1TdHVmZi1JLWNoYW5nZWQtd2hlbi11cGdyYWRpbmctbmFuby5iYi5wYXRjaAorICAgICBOT1RFOiBVcGRhdGluZyByZWNpcGUgbmFub18yLjkuMy5iYgorICAgICBOT1RFOiBSZW1vdmluZyBmaWxlIC9ob21lL3Njb3R0cmlmL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25hbm8vbmFub18yLjcuNC5iYgorICAgICBOT1RFOiBNb3ZpbmcgcmVjaXBlIGZpbGUgdG8gL2hvbWUvc2NvdHRyaWYvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmFubworICAgICBOT1RFOiBMZWF2aW5nIHNvdXJjZSB0cmVlIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvd29ya3NwYWNlL3NvdXJjZXMvbmFubyBhcy1pczsgaWYgeW91IG5vIGxvbmdlciBuZWVkIGl0IHRoZW4gcGxlYXNlIGRlbGV0ZSBpdCBtYW51YWxseQorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBVc2luZyB0aGUgPGZpbGVuYW1lPmRldnRvb2wgZmluaXNoPC9maWxlbmFtZT4gY29tbWFuZCBjbGVhbnMKKyAgICAgICAgICAgICAgICB1cCB0aGUgd29ya3NwYWNlIGFuZCBjcmVhdGVzIGEgcGF0Y2ggZmlsZSBiYXNlZCBvbiB5b3VyCisgICAgICAgICAgICAgICAgY29tbWl0cy4KKyAgICAgICAgICAgICAgICBUaGUgdG9vbCBwdXRzIGFsbCBwYXRjaCBmaWxlcyBiYWNrIGludG8gdGhlIHNvdXJjZSBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICBpbiBhIHN1Yi1kaXJlY3RvcnkgbmFtZWQgPGZpbGVuYW1lPm5hbm88L2ZpbGVuYW1lPiBpbiB0aGlzCisgICAgICAgICAgICAgICAgY2FzZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkZXYtbWFudWFsbHktdXBncmFkaW5nLWEtcmVjaXBlJz4KKyAgICAgICAgICAgIDx0aXRsZT5NYW51YWxseSBVcGdyYWRpbmcgYSBSZWNpcGU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJZiBmb3Igc29tZSByZWFzb24geW91IGNob29zZSBub3QgdG8gdXBncmFkZSByZWNpcGVzIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dzLXVzaW5nLXRoZS1hdXRvLXVwZ3JhZGUtaGVscGVyJz5BdXRvIFVwZ3JhZGUgSGVscGVyIChBVUgpPC9saW5rPgorICAgICAgICAgICAgICAgIG9yIGJ5IHVzaW5nCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ3MtdXNpbmctZGV2dG9vbC11cGdyYWRlJz48ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgIHlvdSBjYW4gbWFudWFsbHkgZWRpdCB0aGUgcmVjaXBlIGZpbGVzIHRvIHVwZ3JhZGUgdGhlIHZlcnNpb25zLgorICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5DYXV0aW9uPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgTWFudWFsbHkgdXBkYXRpbmcgbXVsdGlwbGUgcmVjaXBlcyBzY2FsZXMgcG9vcmx5IGFuZAorICAgICAgICAgICAgICAgICAgICBpbnZvbHZlcyBtYW55IHN0ZXBzLgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVjb21tZW5kYXRpb24gdG8gdXBncmFkZSByZWNpcGUgdmVyc2lvbnMgaXMgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICBBVUggb3IgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+LCBib3RoIG9mIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRlIHNvbWUgc3RlcHMgYW5kIHByb3ZpZGUgZ3VpZGFuY2UgZm9yIG90aGVycyBuZWVkZWQKKyAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBtYW51YWwgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIG1hbnVhbGx5IHVwZ3JhZGUgcmVjaXBlIHZlcnNpb25zLCBmb2xsb3cgdGhlc2UgZ2VuZXJhbCBzdGVwczoKKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DaGFuZ2UgdGhlIFZlcnNpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFJlbmFtZSB0aGUgcmVjaXBlIHN1Y2ggdGhhdCB0aGUgdmVyc2lvbiAoaS5lLiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgcGFydCBvZiB0aGUgcmVjaXBlIG5hbWUpIGNoYW5nZXMgYXBwcm9wcmlhdGVseS4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSB2ZXJzaW9uIGlzIG5vdCBwYXJ0IG9mIHRoZSByZWNpcGUgbmFtZSwgY2hhbmdlCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdmFsdWUgYXMgaXQgaXMgc2V0IGZvciA8ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aGluIHRoZSByZWNpcGUgaXRzZWxmLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5VcGRhdGUgPGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+IGlmIE5lZWRlZDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHNvdXJjZSBjb2RlIHlvdXIgcmVjaXBlIGJ1aWxkcyBpcyBmZXRjaGVkIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgIEdpdCBvciBzb21lIG90aGVyIHZlcnNpb24gY29udHJvbCBzeXN0ZW0sIHVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ1JFVic+PGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHBvaW50IHRvIHRoZSBjb21taXQgaGFzaCB0aGF0IG1hdGNoZXMgdGhlIG5ldworICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgdGhlIFNvZnR3YXJlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUcnkgdG8gYnVpbGQgdGhlIHJlY2lwZSB1c2luZyBCaXRCYWtlLgorICAgICAgICAgICAgICAgICAgICAgICAgVHlwaWNhbCBidWlsZCBmYWlsdXJlcyBpbmNsdWRlIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGljZW5zZSBzdGF0ZW1lbnRzIHdlcmUgdXBkYXRlZCBmb3IgdGhlIG5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhpcyBjYXNlLCB5b3UgbmVlZCB0byByZXZpZXcgYW55IGNoYW5nZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIGxpY2Vuc2UgYW5kIHVwZGF0ZSB0aGUgdmFsdWVzIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MSUNFTlNFJz48ZmlsZW5hbWU+TElDRU5TRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MSUNfRklMRVNfQ0hLU1VNJz48ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpY2Vuc2UgY2hhbmdlcyBhcmUgb2Z0ZW4gaW5jb25zZXF1ZW50aWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBsaWNlbnNlIHRleHQncyBjb3B5cmlnaHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllYXIgbWlnaHQgaGF2ZSBjaGFuZ2VkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tIHBhdGNoZXMgY2FycmllZCBieSB0aGUgb2xkZXIgdmVyc2lvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVjaXBlIG1pZ2h0IGZhaWwgdG8gYXBwbHkgdG8gdGhlIG5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhlc2UgY2FzZXMsIHlvdSBuZWVkIHRvIHJldmlldyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGNoZXMgbWlnaHQgbm90IGJlIG5lY2Vzc2FyeSBmb3IgdGhlIG5ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIG9mIHRoZSBzb2Z0d2FyZSBpZiB0aGUgdXBncmFkZWQgdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXMgZml4ZWQgdGhvc2UgaXNzdWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBhIHBhdGNoIGlzIG5lY2Vzc2FyeSBhbmQgZmFpbGluZywgeW91IG5lZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gcmViYXNlIGl0IGludG8gdGhlIG5ldyB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcHRpb25hbGx5IEF0dGVtcHQgdG8gQnVpbGQgZm9yIFNldmVyYWwgQXJjaGl0ZWN0dXJlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgT25jZSB5b3Ugc3VjY2Vzc2Z1bGx5IGJ1aWxkIHRoZSBuZXcgc29mdHdhcmUgZm9yIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGdpdmVuIGFyY2hpdGVjdHVyZSwgeW91IGNvdWxkIHRlc3QgdGhlIGJ1aWxkIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIgYXJjaGl0ZWN0dXJlcyBieSBjaGFuZ2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGFuZCByZWJ1aWxkaW5nIHRoZSBzb2Z0d2FyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uYWwgc3RlcCBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBpZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBpcyB0byBiZSByZWxlYXNlZCBwdWJsaWNseS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2hlY2sgdGhlIFVwc3RyZWFtIENoYW5nZSBMb2cgb3IgUmVsZWFzZSBOb3Rlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tpbmcgYm90aCB0aGVzZSByZXZlYWxzIGlmIG5ldyBmZWF0dXJlcyBleGlzdCB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBicmVhayBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eS4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHNvLCB5b3UgbmVlZCB0byB0YWtlIHN0ZXBzIHRvIG1pdGlnYXRlIG9yIGVsaW1pbmF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBzaXR1YXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9wdGlvbmFsbHkgQ3JlYXRlIGEgQm9vdGFibGUgSW1hZ2UgYW5kIFRlc3Q6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50LCB5b3UgY2FuIHRlc3QgdGhlIG5ldyBzb2Z0d2FyZSBieSBib290aW5nCisgICAgICAgICAgICAgICAgICAgICAgICBpdCBvbnRvIGFjdHVhbCBoYXJkd2FyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIGEgQ29tbWl0IHdpdGggdGhlIENoYW5nZSBpbiB0aGUgTGF5ZXIgUmVwb3NpdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgYWxsIGJ1aWxkcyB3b3JrIGFuZCBhbnkgdGVzdGluZyBpcyBzdWNjZXNzZnVsLAorICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBjcmVhdGUgY29tbWl0cyBmb3IgYW55IGNoYW5nZXMgaW4gdGhlIGxheWVyCisgICAgICAgICAgICAgICAgICAgICAgICBob2xkaW5nIHlvdXIgdXBncmFkZWQgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKwogICAgIDxzZWN0aW9uIGlkPSdmaW5kaW5nLXRoZS10ZW1wb3Jhcnktc291cmNlLWNvZGUnPgogICAgICAgICA8dGl0bGU+RmluZGluZyBUZW1wb3JhcnkgU291cmNlIENvZGU8L3RpdGxlPgogCkBAIC0zODg4LDggKzQ5NDYsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgTW9kaWZpY2F0aW9ucyB3aWxsIGFsc28gZGlzYXBwZWFyIGlmIHlvdSB1c2UgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cm1fd29yazwvZmlsZW5hbWU+IGZlYXR1cmUgYXMgZGVzY3JpYmVkCiAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7I3FzLWJ1aWxkaW5nLWltYWdlcyc+QnVpbGRpbmcgSW1hZ2VzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0LgorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1zYXZpbmctbWVtb3J5LWR1cmluZy1hLWJ1aWxkJz5Db25zZXJ2aW5nIERpc2sgU3BhY2UgRHVyaW5nIEJ1aWxkczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CkBAIC00MTA1LDEwMiArNTE2MywxMjI0IEBACiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKLSAgICA8c2VjdGlvbiBpZD0ncGxhdGRldi1idWlsZGluZy10YXJnZXRzLXdpdGgtbXVsdGlwbGUtY29uZmlndXJhdGlvbnMnPgotICAgICAgICA8dGl0bGU+QnVpbGRpbmcgVGFyZ2V0cyB3aXRoIE11bHRpcGxlIENvbmZpZ3VyYXRpb25zPC90aXRsZT4KKyAgICA8c2VjdGlvbiBpZD0nZGV2LWJ1aWxkaW5nJz4KKyAgICAgICAgPHRpdGxlPkJ1aWxkaW5nPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEJpdGJha2UgYWxzbyBoYXMgZnVuY3Rpb25hbGl0eSB0aGF0IGFsbG93cyB5b3UgdG8gYnVpbGQKLSAgICAgICAgICAgIG11bHRpcGxlIHRhcmdldHMgYXQgdGhlIHNhbWUgdGltZSwgd2hlcmUgZWFjaCB0YXJnZXQgdXNlcwotICAgICAgICAgICAgYSBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdmFyaW91cyBidWlsZCBwcm9jZWR1cmVzLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBzdGVwcyBuZWVkZWQgZm9yIGEgc2ltcGxlIGJ1aWxkLCBhIHRhcmdldCB0aGF0CisgICAgICAgICAgICB1c2VzIG11bHRpcGxlIGNvbmZpZ3VyYXRpb25zLCBidWlsZGluZyBhbiBpbWFnZSBmb3IgbW9yZSB0aGFuCisgICAgICAgICAgICBvbmUgbWFjaGluZSwgYW5kIHNvIGZvcnRoLgogICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJbiBvcmRlciB0byBhY2NvbXBsaXNoIHRoaXMsIHlvdSBzZXR1cCBlYWNoIG9mIHRoZSBjb25maWd1cmF0aW9ucwotICAgICAgICAgICAgeW91IG5lZWQgdG8gdXNlIGluIHBhcmFsbGVsIGJ5IHBsYWNpbmcgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4KLSAgICAgICAgICAgIHlvdXIgY3VycmVudCBidWlsZCBkaXJlY3RvcnkgYWxvbmdzaWRlIHRoZSB1c3VhbAotICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICA8L3BhcmE+CisgICAgICAgIDxzZWN0aW9uIGlkPSdkZXYtYnVpbGRpbmctYS1zaW1wbGUtaW1hZ2UnPgorICAgICAgICAgICAgPHRpdGxlPkJ1aWxkaW5nIGEgU2ltcGxlIEltYWdlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSW4gdGhlIGRldmVsb3BtZW50IGVudmlyb25tZW50LCB5b3UgbmVlZCB0byBidWlsZCBhbiBpbWFnZQorICAgICAgICAgICAgICAgIHdoZW5ldmVyIHlvdSBjaGFuZ2UgaGFyZHdhcmUgc3VwcG9ydCwgYWRkIG9yIGNoYW5nZSBzeXN0ZW0KKyAgICAgICAgICAgICAgICBsaWJyYXJpZXMsIG9yIGFkZCBvciBjaGFuZ2Ugc2VydmljZXMgdGhhdCBoYXZlIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgICAgICBTZXZlcmFsIG1ldGhvZHMgZXhpc3QgdGhhdCBhbGxvdyB5b3UgdG8gYnVpbGQgYW4gaW1hZ2Ugd2l0aGluCisgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByZXNlbnRzIHRoZSBiYXNpYyBzdGVwcyB5b3UgbmVlZCB0byBidWlsZCBhCisgICAgICAgICAgICAgICAgc2ltcGxlIGltYWdlIHVzaW5nIEJpdEJha2UgZnJvbSBhIGJ1aWxkIGhvc3QgcnVubmluZyBMaW51eC4KKyAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gYnVpbGQgYW4gaW1hZ2UgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN0b2FzdGVyLXRlcm0nPlRvYXN0ZXI8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVE9BU1RfVVJMOyc+VG9hc3RlciBVc2VyIE1hbnVhbDwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB0byBidWlsZCBpbWFnZXMsIHNlZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyN1c2luZy1kZXZ0b29sLWluLXlvdXItc2RrLXdvcmtmbG93Jz5Vc2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGluIFlvdXIgU0RLIFdvcmtmbG93PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtpdCAoZVNESykgbWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhIHF1aWNrIGV4YW1wbGUgb24gaG93IHRvIGJ1aWxkIGFuIGltYWdlIHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CUklFRl9VUkw7Jz5Zb2N0byBQcm9qZWN0IFF1aWNrIEJ1aWxkPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgcHJvY2VzcyBjcmVhdGVzIGFuIGVudGlyZSBMaW51eCBkaXN0cmlidXRpb24gZnJvbQorICAgICAgICAgICAgICAgIHNvdXJjZSBhbmQgcGxhY2VzIGl0IGluIHlvdXIKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgdW5kZXIgPGZpbGVuYW1lPnRtcC9kZXBsb3kvaW1hZ2VzPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgRm9yIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHRoZSBidWlsZCBwcm9jZXNzIHVzaW5nIEJpdEJha2UsCisgICAgICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2ltYWdlcy1kZXYtZW52aXJvbm1lbnQnPkltYWdlczwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBmaWd1cmUgYW5kIGxpc3Qgb3ZlcnZpZXdzIHRoZSBidWlsZCBwcm9jZXNzOgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9iaXRiYWtlLWJ1aWxkLWZsb3cucG5nIiB3aWR0aD0iN2luIiBkZXB0aD0iNGluIiBhbGlnbj0iY2VudGVyIiBzY2FsZWZpdD0iMSIgLz4KKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgdXAgWW91ciBIb3N0IERldmVsb3BtZW50IFN5c3RlbSB0byBTdXBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICBEZXZlbG9wbWVudCBVc2luZyB0aGUgWW9jdG8gUHJvamVjdDwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2Rldi1tYW51YWwtc3RhcnQnPlNldHRpbmcgVXAgdG8gVXNlIHRoZSBZb2N0byBQcm9qZWN0PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG9wdGlvbnMgb24gaG93IHRvIGdldCBhIGJ1aWxkIGhvc3QgcmVhZHkgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZSB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW5pdGlhbGl6ZSB0aGUgQnVpbGQgRW52aXJvbm1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemUgdGhlIGJ1aWxkIGVudmlyb25tZW50IGJ5IHNvdXJjaW5nIHRoZSBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgc2NyaXB0IChpLmUuCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC91bGluaz4pOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNvdXJjZSAmT0VfSU5JVF9GSUxFOyBbPHJlcGxhY2VhYmxlPmJ1aWxkX2RpcjwvcmVwbGFjZWFibGU+XQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+V2hlbiB5b3UgdXNlIHRoZSBpbml0aWFsaXphdGlvbiBzY3JpcHQsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGQ8L2ZpbGVuYW1lPiBhcyB0aGUgZGVmYXVsdCBCdWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5IGluIHlvdXIgY3VycmVudCB3b3JrIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIGEgPHJlcGxhY2VhYmxlPmJ1aWxkX2RpcjwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudCB3aXRoIHRoZSBzY3JpcHQgdG8gc3BlY2lmeSBhIGRpZmZlcmVudCBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBjb21tb24gcHJhY3RpY2UgaXMgdG8gdXNlIGEgZGlmZmVyZW50IEJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5IGZvciBkaWZmZXJlbnQgdGFyZ2V0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgPGZpbGVuYW1lPn4vYnVpbGQveDg2PC9maWxlbmFtZT4gZm9yIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+IHRhcmdldCwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPn4vYnVpbGQvYXJtPC9maWxlbmFtZT4gZm9yIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdWFybTwvZmlsZW5hbWU+IHRhcmdldC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBTdXJlIFlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgRmlsZSBpcyBDb3JyZWN0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBFbnN1cmUgdGhlIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlLCB3aGljaCBpcyBmb3VuZCBpbiB0aGUgQnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeSwgaXMgc2V0IHVwIGhvdyB5b3Ugd2FudCBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmlsZSBkZWZpbmVzIG1hbnkgYXNwZWN0cyBvZiB0aGUgYnVpbGQgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyB0aGUgdGFyZ2V0IG1hY2hpbmUgYXJjaGl0ZWN0dXJlIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPk1BQ0hJTkU8L3VsaW5rPjwvZmlsZW5hbWU+IHZhcmlhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHBhY2thZ2luZyBmb3JtYXQgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICAoPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfQ0xBU1NFUyc+PGZpbGVuYW1lPlBBQ0tBR0VfQ0xBU1NFUzwvZmlsZW5hbWU+PC91bGluaz4pLAorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGEgY2VudHJhbGl6ZWQgdGFyYmFsbCBkb3dubG9hZCBkaXJlY3RvcnkgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ETF9ESVInPjxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCB0aGUgSW1hZ2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIHRoZSBpbWFnZSB1c2luZyB0aGUgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIEJpdEJha2UsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7Jz5CaXRCYWtlIFVzZXIgTWFudWFsPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+IGlzIHRoZSBuYW1lIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIHlvdSB3YW50IHRvIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uIHRhcmdldHMgYXJlIHRoZSBpbWFnZXMgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXM8L2ZpbGVuYW1lPiwgYW5kIHNvCisgICAgICAgICAgICAgICAgICAgICAgICBmb3J0aCBhbGwgZm91bmQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICBPciwgdGhlIHRhcmdldCBjYW4gYmUgdGhlIG5hbWUgb2YgYSByZWNpcGUgZm9yIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIHBpZWNlIG9mIHNvZnR3YXJlIHN1Y2ggYXMgQnVzeUJveC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGRldGFpbHMgYWJvdXQgdGhlIGltYWdlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gc3VwcG9ydHMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtaW1hZ2VzJz5JbWFnZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkFzIGFuIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBidWlsZHMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4gaW1hZ2U6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBjb3JlLWltYWdlLW1pbmltYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgYW4gaW1hZ2UgaGFzIGJlZW4gYnVpbHQsIGl0IG9mdGVuIG5lZWRzIHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgaW1hZ2VzIGFuZCBrZXJuZWxzIGJ1aWx0IGJ5IHRoZSBPcGVuRW1iZWRkZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSBhcmUgcGxhY2VkIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZSBjbGFzcz0iZGlyZWN0b3J5Ij50bXAvZGVwbG95L2ltYWdlczwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBydW4gcHJlLWJ1aWx0IGltYWdlcyBzdWNoIGFzCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+cWVtdWFybTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byBpbnN0YWxsIHRoZXNlIGltYWdlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgeW91ciBwYXJ0aWN1bGFyIGJvYXJkIG9yCisgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdwbGF0ZGV2LWJ1aWxkaW5nLXRhcmdldHMtd2l0aC1tdWx0aXBsZS1jb25maWd1cmF0aW9ucyc+CisgICAgICAgICAgICA8dGl0bGU+QnVpbGRpbmcgVGFyZ2V0cyB3aXRoIE11bHRpcGxlIENvbmZpZ3VyYXRpb25zPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQml0YmFrZSBhbHNvIGhhcyBmdW5jdGlvbmFsaXR5IHRoYXQgYWxsb3dzIHlvdSB0byBidWlsZAorICAgICAgICAgICAgICAgIG11bHRpcGxlIHRhcmdldHMgYXQgdGhlIHNhbWUgdGltZSwgd2hlcmUgZWFjaCB0YXJnZXQgdXNlcworICAgICAgICAgICAgICAgIGEgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEluIG9yZGVyIHRvIGFjY29tcGxpc2ggdGhpcywgeW91IHNldHVwIGVhY2ggb2YgdGhlIGNvbmZpZ3VyYXRpb25zCisgICAgICAgICAgICAgICAgeW91IG5lZWQgdG8gdXNlIGluIHBhcmFsbGVsIGJ5IHBsYWNpbmcgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4KKyAgICAgICAgICAgICAgICB5b3VyIGN1cnJlbnQgYnVpbGQgZGlyZWN0b3J5IGFsb25nc2lkZSB0aGUgdXN1YWwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBndWlkZWxpbmVzIHRvIGNyZWF0ZSBhbiBlbnZpcm9ubWVudCB0aGF0IHN1cHBvcnRzCisgICAgICAgICAgICAgICAgbXVsdGlwbGUgY29uZmlndXJhdGlvbnM6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBDb25maWd1cmF0aW9uIEZpbGVzPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBjcmVhdGUgYSBzaW5nbGUgY29uZmlndXJhdGlvbiBmaWxlIGZvciBlYWNoCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZvciB3aGljaCB5b3Ugd2FudCB0byBhZGQgc3VwcG9ydC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIGZpbGVzIHdvdWxkIGNvbnRhaW4gbGluZXMgc3VjaCBhcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBNQUNISU5FID0gIkEiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZmlsZXMgd291bGQgY29udGFpbiBhbnkgb3RoZXIgdmFyaWFibGVzIHRoYXQgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICBiZSBzZXQgYW5kIGJ1aWx0IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY2hhbmdlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gbm90IGNvbmZsaWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBGdXJ0aGVybW9yZSwgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBtdXN0IGJlIGxvY2F0ZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50IGJ1aWxkIGRpcmVjdG9yeSBpbiBhIGRpcmVjdG9yeSBuYW1lZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm11bHRpY29uZmlnPC9maWxlbmFtZT4gdW5kZXIgdGhlIGJ1aWxkJ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5IHdoZXJlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IHJlc2lkZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVhc29uIGZvciB0aGlzIHJlc3RyaWN0aW9uIGlzIGJlY2F1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QkJQQVRIPC9maWxlbmFtZT4gdmFyaWFibGUgaXMgbm90IGNvbnN0cnVjdGVkCisgICAgICAgICAgICAgICAgICAgICAgICB1bnRpbCB0aGUgbGF5ZXJzIGFyZSBwYXJzZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHVzaW5nIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgYXMgYQorICAgICAgICAgICAgICAgICAgICAgICAgcHJlLWNvbmZpZ3VyYXRpb24gZmlsZSBpcyBub3QgcG9zc2libGUgdW5sZXNzIGl0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGVkIGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5BZGQgdGhlIEJpdEJha2UgTXVsdGktQ29uZmlnIFZhcmlhYmxlIHRvIHlvdSBMb2NhbCBDb25maWd1cmF0aW9uIEZpbGU8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQk1VTFRJQ09ORklHPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHlvdXIgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUgdG8gc3BlY2lmeSBlYWNoIHNlcGFyYXRlIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBsaW5lIHRlbGxzIEJpdEJha2UgaXQgc2hvdWxkIGxvYWQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL211bHRpY29uZmlnL2NvbmZpZ0EuY29uZjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbXVsdGljb25maWcvY29uZmlnQi5jb25mPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbXVsdGljb25maWcvY29uZmlnQy5jb25mPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEJCTVVMVElDT05GSUcgPSAiY29uZmlnQSBjb25maWdCIGNvbmZpZ0MiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxhdW5jaCBCaXRCYWtlPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBCaXRCYWtlIGNvbW1hbmQgZm9ybSB0byBsYXVuY2ggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIFttdWx0aWNvbmZpZzo8cmVwbGFjZWFibGU+bXVsdGljb25maWduYW1lPC9yZXBsYWNlYWJsZT46XTxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPiBbW1ttdWx0aWNvbmZpZzo8cmVwbGFjZWFibGU+bXVsdGljb25maWduYW1lPC9yZXBsYWNlYWJsZT46XTxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPl0gLi4uIF0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHRoYXQgc3VwcG9ydHMgYnVpbGRpbmcgYSBtaW5pbWFsCisgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSBmb3IgY29uZmlndXJhdGlvbiBBIGFsb25nc2lkZSBhIHN0YW5kYXJkCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4sIHdoaWNoIHRha2VzIGl0cworICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmcm9tIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBtdWx0aWNvbmZpZzpjb25maWdBOmNvcmUtaW1hZ2UtbWluaW1hbCBjb3JlLWltYWdlLXNhdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb25maWd1cmF0aW9ucyBpbiB0aGlzIGN1cnJlbnQgcmVsZWFzZSBvZgorICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0ICgmRElTVFJPX05BTUU7ICZESVNUUk87KSBoYXMgc29tZSBrbm93biBpc3N1ZXM6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgTm8gaW50ZXItbXVsdGktY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgZXhpc3QuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU2hhcmVkIFN0YXRlIChzc3RhdGUpIG9wdGltaXphdGlvbnMgZG8gbm90IGV4aXN0LgorICAgICAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCBpZiB0aGUgYnVpbGQgdXNlcyB0aGUgc2FtZSBvYmplY3QgdHdpY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGluLCBmb3IgZXhhbXBsZSwgdHdvIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IGRpcmVjdG9yaWVzLCB0aGUgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgZWl0aGVyIGxvYWQgZnJvbSBhbiBleGlzdGluZyBzc3RhdGUgY2FjaGUgYXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCBvciBidWlsZCB0aGUgb2JqZWN0IHR3aWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nYnVpbGRpbmctYW4taW5pdHJhbWZzLWltYWdlJz4KKyAgICAgICAgICAgIDx0aXRsZT5CdWlsZGluZyBhbiBJbml0aWFsIFJBTSBGaWxlc3lzdGVtIChpbml0cmFtZnMpIEltYWdlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQW4gaW5pdGlhbCBSQU0gZmlsZXN5c3RlbSAoaW5pdHJhbWZzKSBpbWFnZSBwcm92aWRlcyBhIHRlbXBvcmFyeQorICAgICAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbSB1c2VkIGZvciBlYXJseSBzeXN0ZW0gaW5pdGlhbGl6YXRpb24gKGUuZy4KKyAgICAgICAgICAgICAgICBsb2FkaW5nIG9mIG1vZHVsZXMgbmVlZGVkIHRvIGxvY2F0ZSBhbmQgbW91bnQgdGhlICJyZWFsIiByb290CisgICAgICAgICAgICAgICAgZmlsZXN5c3RlbSkuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSBpbml0cmFtZnMgaW1hZ2UgaXMgdGhlIHN1Y2Nlc3NvciBvZiBpbml0aWFsIFJBTSBkaXNrCisgICAgICAgICAgICAgICAgICAgIChpbml0cmQpLgorICAgICAgICAgICAgICAgICAgICBJdCBpcyBhICJjb3B5IGluIGFuZCBvdXQiIChjcGlvKSBhcmNoaXZlIG9mIHRoZSBpbml0aWFsCisgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gdGhhdCBnZXRzIGxvYWRlZCBpbnRvIG1lbW9yeSBkdXJpbmcgdGhlIExpbnV4CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0dXAgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSBMaW51eCB1c2VzIHRoZSBjb250ZW50cyBvZiB0aGUgYXJjaGl2ZSBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24sIHRoZSBpbml0cmFtZnMgaW1hZ2UgbmVlZHMgdG8gY29udGFpbiBhbGwgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGRldmljZSBkcml2ZXJzIGFuZCB0b29scyBuZWVkZWQgdG8gbW91bnQgdGhlIGZpbmFsIHJvb3QKKyAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBjcmVhdGUgYW4gaW5pdHJhbWZzIGltYWdlOgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSB0aGUgaW5pdHJhbWZzIEltYWdlIFJlY2lwZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiByZWZlcmVuY2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcy5iYjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgZm91bmQgaW4gdGhlIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtY29yZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFzIGFuIGV4YW1wbGUgZnJvbSB3aGljaCB0byB3b3JrLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZWNpZGUgaWYgWW91IE5lZWQgdG8gQnVuZGxlIHRoZSBpbml0cmFtZnMgSW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIEludG8gdGhlIEtlcm5lbCBJbWFnZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdGhlIGluaXRyYW1mcyBpbWFnZSB0aGF0IGlzIGJ1aWx0IHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICBidW5kbGVkIGluIHdpdGggdGhlIGtlcm5lbCBpbWFnZSwgc2V0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlOSVRSQU1GU19JTUFHRV9CVU5ETEUnPjxmaWxlbmFtZT5JTklUUkFNRlNfSU1BR0VfQlVORExFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gIjEiIGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIGFuZCBzZXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU5JVFJBTUZTX0lNQUdFJz48ZmlsZW5hbWU+SU5JVFJBTUZTX0lNQUdFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gdGhlIHJlY2lwZSB0aGF0IGJ1aWxkcyB0aGUga2VybmVsIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgZG8gYnVuZGxlIHRoZSBpbml0cmFtZnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSB3aXRoIHRoZSBrZXJuZWwgaW1hZ2UgdG8gYXZvaWQgY2lyY3VsYXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGUga2VybmVsIHJlY2lwZSBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdHJhbWZzIHJlY2lwZSBzaG91bGQgdGhlIGluaXRyYW1mcyBpbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUga2VybmVsIG1vZHVsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5nIHRoZSA8ZmlsZW5hbWU+SU5JVFJBTUZTX0lNQUdFX0JVTkRMRTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBmbGFnIGNhdXNlcyB0aGUgaW5pdHJhbWZzIGltYWdlIHRvIGJlIHVucGFja2VkCisgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSA8ZmlsZW5hbWU+JHtCfS91c3IvPC9maWxlbmFtZT4gZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHVucGFja2VkIGluaXRyYW1mcyBpbWFnZSBpcyB0aGVuIHBhc3NlZCB0byB0aGUga2VybmVsJ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZTwvZmlsZW5hbWU+IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNPTkZJR19JTklUUkFNRlNfU09VUkNFJz48ZmlsZW5hbWU+Q09ORklHX0lOSVRSQU1GU19TT1VSQ0U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgYWxsb3dpbmcgdGhlIGluaXRyYW1mcyBpbWFnZSB0byBiZSBidWlsdCBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUga2VybmVsIG5vcm1hbGx5LgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGNob29zZSB0byBub3QgYnVuZGxlIHRoZSBpbml0cmFtZnMgaW1hZ2Ugd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgaW1hZ2UsIHlvdSBhcmUgZXNzZW50aWFsbHkgdXNpbmcgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Jbml0cmQnPkluaXRpYWwgUkFNIERpc2sgKGluaXRyZCk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGluZyBhbiBpbml0cmQgaXMgaGFuZGxlZCBwcmltYXJpbHkgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU5JVFJEX0lNQUdFJz48ZmlsZW5hbWU+SU5JVFJEX0lNQUdFPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU5JVFJEX0xJVkU8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklOSVRSRF9JTUFHRV9MSVZFPC9maWxlbmFtZT4gdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlL21ldGEvY2xhc3Nlcy9pbWFnZS1saXZlLmJiY2xhc3MnPjxmaWxlbmFtZT5pbWFnZS1saXZlLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3B0aW9uYWxseSBBZGQgSXRlbXMgdG8gdGhlIGluaXRyYW1mcyBJbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgVGhyb3VnaCB0aGUgaW5pdHJhbWZzIEltYWdlIFJlY2lwZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFkZCBpdGVtcyB0byB0aGUgaW5pdHJhbWZzIGltYWdlIGJ5IHdheSBvZiBpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSwgeW91IHNob3VsZCB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0lOU1RBTEwnPjxmaWxlbmFtZT5QQUNLQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICByYXRoZXIgdGhhbgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlNQUdFX0lOU1RBTEwnPjxmaWxlbmFtZT5JTUFHRV9JTlNUQUxMPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPiBnaXZlcyBtb3JlIGRpcmVjdAorICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbCBvZiB3aGF0IGlzIGFkZGVkIHRvIHRoZSBpbWFnZSBhcyBjb21wYXJlZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRlZmF1bHRzIHlvdSBtaWdodCBub3QgbmVjZXNzYXJpbHkgd2FudCB0aGF0IGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgc2V0IGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtaW1hZ2UnPjxmaWxlbmFtZT5pbWFnZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1jb3JlLWltYWdlJz48ZmlsZW5hbWU+Y29yZS1pbWFnZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBLZXJuZWwgSW1hZ2UgYW5kIHRoZSBpbml0cmFtZnMKKyAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCB5b3VyIGtlcm5lbCBpbWFnZSB1c2luZyBCaXRCYWtlLgorICAgICAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGUgaW5pdHJhbWZzIGltYWdlIHJlY2lwZSBpcyBhIGRlcGVuZGVuY3kgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwgaW1hZ2UsIHRoZSBpbml0cmFtZnMgaW1hZ2UgaXMgYnVpbHQgYXMgd2VsbCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1bmRsZWQgd2l0aCB0aGUga2VybmVsIGltYWdlIGlmIHlvdSB1c2VkIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlOSVRSQU1GU19JTUFHRV9CVU5ETEUnPjxmaWxlbmFtZT5JTklUUkFNRlNfSU1BR0VfQlVORExFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZGVzY3JpYmVkIGVhcmxpZXIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2J1aWxkaW5nLWEtdGlueS1zeXN0ZW0nPgorICAgICAgICAgICAgPHRpdGxlPkJ1aWxkaW5nIGEgVGlueSBTeXN0ZW08L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBWZXJ5IHNtYWxsIGRpc3RyaWJ1dGlvbnMgaGF2ZSBzb21lIHNpZ25pZmljYW50IGFkdmFudGFnZXMgc3VjaAorICAgICAgICAgICAgICAgIGFzIHJlcXVpcmluZyBsZXNzIG9uLWRpZSBvciBpbi1wYWNrYWdlIG1lbW9yeSAoY2hlYXBlciksIGJldHRlcgorICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlIHRocm91Z2ggZWZmaWNpZW50IGNhY2hlIHVzYWdlLCBsb3dlciBwb3dlciByZXF1aXJlbWVudHMKKyAgICAgICAgICAgICAgICBkdWUgdG8gbGVzcyBtZW1vcnksIGZhc3RlciBib290IHRpbWVzLCBhbmQgcmVkdWNlZCBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgIG92ZXJoZWFkLgorICAgICAgICAgICAgICAgIFNvbWUgcmVhbC13b3JsZCBleGFtcGxlcyB3aGVyZSBhIHZlcnkgc21hbGwgZGlzdHJpYnV0aW9uIGdpdmVzCisgICAgICAgICAgICAgICAgeW91IGRpc3RpbmN0IGFkdmFudGFnZXMgYXJlIGRpZ2l0YWwgY2FtZXJhcywgbWVkaWNhbCBkZXZpY2VzLAorICAgICAgICAgICAgICAgIGFuZCBzbWFsbCBoZWFkbGVzcyBzeXN0ZW1zLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJlc2VudHMgaW5mb3JtYXRpb24gdGhhdCBzaG93cyB5b3UgaG93IHlvdSBjYW4KKyAgICAgICAgICAgICAgICB0cmltIHlvdXIgZGlzdHJpYnV0aW9uIHRvIGV2ZW4gc21hbGxlciBzaXplcyB0aGFuIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5LXRpbnk8L2ZpbGVuYW1lPiBkaXN0cmlidXRpb24sIHdoaWNoIGlzIGFyb3VuZAorICAgICAgICAgICAgICAgIDUgTWJ5dGVzLCB0aGF0IGNhbiBiZSBidWlsdCBvdXQtb2YtdGhlLWJveCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3Rpbnktc3lzdGVtLW92ZXJ2aWV3Jz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+T3ZlcnZpZXc8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBwcmVzZW50cyB0aGUgb3ZlcmFsbCBzdGVwcyB5b3UgbmVlZCB0bworICAgICAgICAgICAgICAgICAgICBjb25zaWRlciBhbmQgcGVyZm9ybSB0byBjcmVhdGUgZGlzdHJpYnV0aW9ucyB3aXRoIHNtYWxsZXIKKyAgICAgICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtcywgYWNoaWV2ZSBmYXN0ZXIgYm9vdCB0aW1lcywgbWFpbnRhaW4geW91ciBjcml0aWNhbAorICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbmFsaXR5LCBhbmQgYXZvaWQgaW5pdGlhbCBSQU0gZGlza3M6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ29hbHMtYW5kLWd1aWRpbmctcHJpbmNpcGxlcyc+RGV0ZXJtaW5lIHlvdXIgZ29hbHMgYW5kIGd1aWRpbmcgcHJpbmNpcGxlcy48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndW5kZXJzdGFuZC13aGF0LWdpdmVzLXlvdXItaW1hZ2Utc2l6ZSc+VW5kZXJzdGFuZCB3aGF0IGNvbnRyaWJ1dGVzIHRvIHlvdXIgaW1hZ2Ugc2l6ZS48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndHJpbS10aGUtcm9vdC1maWxlc3lzdGVtJz5SZWR1Y2UgdGhlIHNpemUgb2YgdGhlIHJvb3QgZmlsZXN5c3RlbS48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndHJpbS10aGUta2VybmVsJz5SZWR1Y2UgdGhlIHNpemUgb2YgdGhlIGtlcm5lbC48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVtb3ZlLXBhY2thZ2UtbWFuYWdlbWVudC1yZXF1aXJlbWVudHMnPkVsaW1pbmF0ZSBwYWNrYWdpbmcgcmVxdWlyZW1lbnRzLjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdsb29rLWZvci1vdGhlci13YXlzLXRvLW1pbmltaXplLXNpemUnPkxvb2sgZm9yIG90aGVyIHdheXMgdG8gbWluaW1pemUgc2l6ZS48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0naXRlcmF0ZS1vbi10aGUtcHJvY2Vzcyc+SXRlcmF0ZSBvbiB0aGUgcHJvY2Vzcy48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2dvYWxzLWFuZC1ndWlkaW5nLXByaW5jaXBsZXMnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Hb2FscyBhbmQgR3VpZGluZyBQcmluY2lwbGVzPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCZWZvcmUgeW91IGNhbiByZWFjaCB5b3VyIGRlc3RpbmF0aW9uLCB5b3UgbmVlZCB0byBrbm93CisgICAgICAgICAgICAgICAgICAgIHdoZXJlIHlvdSBhcmUgZ29pbmcuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBsaXN0IHRoYXQgeW91IGNhbiB1c2UgYXMgYSBndWlkZSB3aGVuCisgICAgICAgICAgICAgICAgICAgIGNyZWF0aW5nIHZlcnkgc21hbGwgZGlzdHJpYnV0aW9uczoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZXRlcm1pbmUgaG93IG11Y2ggc3BhY2UgeW91IG5lZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiBhIGtlcm5lbCB0aGF0IGlzIDEgTWJ5dGUgb3IgbGVzcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHJvb3QgZmlsZXN5c3RlbSB0aGF0IGlzIDMgTWJ5dGVzIG9yIGxlc3MpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZpbmQgdGhlIGFyZWFzIHRoYXQgYXJlIGN1cnJlbnRseQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2luZyA5MCUgb2YgdGhlIHNwYWNlIGFuZCBjb25jZW50cmF0ZSBvbiByZWR1Y2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRob3NlIGFyZWFzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRvIG5vdCBjcmVhdGUgYW55IGRpZmZpY3VsdCAiaGFja3MiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWNoaWV2ZSB5b3VyIGdvYWxzLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkxldmVyYWdlIHRoZSBkZXZpY2Utc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPldvcmsgaW4gYSBzZXBhcmF0ZSBsYXllciBzbyB0aGF0IHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXAgY2hhbmdlcyBpc29sYXRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGNyZWF0ZSBsYXllcnMsIHNlZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSAiPGxpbmsgbGlua2VuZD0ndW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZCBDcmVhdGluZyBMYXllcnM8L2xpbms+IiBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSd1bmRlcnN0YW5kLXdoYXQtZ2l2ZXMteW91ci1pbWFnZS1zaXplJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+VW5kZXJzdGFuZCBXaGF0IENvbnRyaWJ1dGVzIHRvIFlvdXIgSW1hZ2UgU2l6ZTwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSXQgaXMgZWFzaWVzdCB0byBoYXZlIHNvbWV0aGluZyB0byBzdGFydCB3aXRoIHdoZW4gY3JlYXRpbmcKKyAgICAgICAgICAgICAgICAgICAgeW91ciBvd24gZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgWW9jdG8gUHJvamVjdCBvdXQtb2YtdGhlLWJveCB0byBjcmVhdGUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5LXRpbnk8L2ZpbGVuYW1lPiBkaXN0cmlidXRpb24uCisgICAgICAgICAgICAgICAgICAgIFVsdGltYXRlbHksIHlvdSB3aWxsIHdhbnQgdG8gbWFrZSBjaGFuZ2VzIGluIHlvdXIgb3duCisgICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbiB0aGF0IGFyZSBsaWtlbHkgbW9kZWxlZCBhZnRlcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS10aW55PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gdXNlIDxmaWxlbmFtZT5wb2t5LXRpbnk8L2ZpbGVuYW1lPiBpbiB5b3VyIGJ1aWxkLAorICAgICAgICAgICAgICAgICAgICAgICAgc2V0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURJU1RSTyc+PGZpbGVuYW1lPkRJU1RSTzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSB0byAicG9reS10aW55IgorICAgICAgICAgICAgICAgICAgICAgICAgYXMgZGVzY3JpYmVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLXlvdXItb3duLWRpc3RyaWJ1dGlvbic+Q3JlYXRpbmcgWW91ciBPd24gRGlzdHJpYnV0aW9uPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVW5kZXJzdGFuZGluZyBzb21lIG1lbW9yeSBjb25jZXB0cyB3aWxsIGhlbHAgeW91IHJlZHVjZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHNpemUuCisgICAgICAgICAgICAgICAgICAgIE1lbW9yeSBjb25zaXN0cyBvZiBzdGF0aWMsIGR5bmFtaWMsIGFuZCB0ZW1wb3JhcnkgbWVtb3J5LgorICAgICAgICAgICAgICAgICAgICBTdGF0aWMgbWVtb3J5IGlzIHRoZSBURVhUIChjb2RlKSwgREFUQSAoaW5pdGlhbGl6ZWQgZGF0YQorICAgICAgICAgICAgICAgICAgICBpbiB0aGUgY29kZSksIGFuZCBCU1MgKHVuaW5pdGlhbGl6ZWQgZGF0YSkgc2VjdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIER5bmFtaWMgbWVtb3J5IHJlcHJlc2VudHMgbWVtb3J5IHRoYXQgaXMgYWxsb2NhdGVkIGF0IHJ1bnRpbWU6CisgICAgICAgICAgICAgICAgICAgIHN0YWNrcywgaGFzaCB0YWJsZXMsIGFuZCBzbyBmb3J0aC4KKyAgICAgICAgICAgICAgICAgICAgVGVtcG9yYXJ5IG1lbW9yeSBpcyByZWNvdmVyZWQgYWZ0ZXIgdGhlIGJvb3QgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBtZW1vcnkgY29uc2lzdHMgb2YgbWVtb3J5IHVzZWQgZm9yIGRlY29tcHJlc3NpbmcKKyAgICAgICAgICAgICAgICAgICAgdGhlIGtlcm5lbCBhbmQgZm9yIHRoZSA8ZmlsZW5hbWU+X19pbml0X188L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIGhlbHAgeW91IHNlZSB3aGVyZSB5b3UgY3VycmVudGx5IGFyZSB3aXRoIGtlcm5lbCBhbmQgcm9vdAorICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIHNpemVzLCB5b3UgY2FuIHVzZSB0d28gdG9vbHMgZm91bmQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPiBpbgorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPnNjcmlwdHMvdGlueS88L2ZpbGVuYW1lPiBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmtzaXplLnB5PC9maWxlbmFtZT46IFJlcG9ydHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQgc2l6ZXMgZm9yIHRoZSBrZXJuZWwgYnVpbGQgb2JqZWN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+ZGlyc2l6ZS5weTwvZmlsZW5hbWU+OiBSZXBvcnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50IHNpemVzIGZvciB0aGUgcm9vdCBmaWxlc3lzdGVtLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBuZXh0IHRvb2wgYW5kIGNvbW1hbmQgaGVscCB5b3Ugb3JnYW5pemUgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBmcmFnbWVudHMgYW5kIHZpZXcgZmlsZSBkZXBlbmRlbmNpZXMgaW4gYSBodW1hbi1yZWFkYWJsZSBmb3JtOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5tZXJnZV9jb25maWcuc2g8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZWxwcyB5b3UgbWFuYWdlIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIGZyYWdtZW50cworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhpbiB0aGUga2VybmVsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpdGggdGhpcyB0b29sLCB5b3UgY2FuIG1lcmdlIGluZGl2aWR1YWwgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50cyB0b2dldGhlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdG9vbCBhbGxvd3MgeW91IHRvIG1ha2Ugb3ZlcnJpZGVzIGFuZCB3YXJucyB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBhbnkgbWlzc2luZyBjb25maWd1cmF0aW9uIG9wdGlvbnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRvb2wgaXMgaWRlYWwgZm9yIGFsbG93aW5nIHlvdSB0byBpdGVyYXRlIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMsIGNyZWF0ZSBtaW5pbWFsIGNvbmZpZ3VyYXRpb25zLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGUgY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgZGlmZmVyZW50IG1hY2hpbmVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aG91dCBoYXZpbmcgdG8gZHVwbGljYXRlIHlvdXIgcHJvY2Vzcy48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIDxmaWxlbmFtZT5tZXJnZV9jb25maWcuc2g8L2ZpbGVuYW1lPiBzY3JpcHQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0IG9mIHRoZSBMaW51eCBZb2N0byBrZXJuZWwgR2l0IHJlcG9zaXRvcmllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5saW51eC15b2N0by0zLjE0PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTMuMTA8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tMy44PC9maWxlbmFtZT4sIGFuZCBzbyBmb3J0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0cy9rY29uZmlnPC9maWxlbmFtZT4gZGlyZWN0b3J5LjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb25maWd1cmF0aW9uIGZyYWdtZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyNjcmVhdGluZy1jb25maWctZnJhZ21lbnRzJz5DcmVhdGluZyBDb25maWd1cmF0aW9uIEZyYWdtZW50czwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5iaXRiYWtlIC11IHRhc2tleHAgLWcgPHJlcGxhY2VhYmxlPmJpdGJha2VfdGFyZ2V0PC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2luZyB0aGUgQml0QmFrZSBjb21tYW5kIHdpdGggdGhlc2Ugb3B0aW9ucyBicmluZ3MgdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIERlcGVuZGVuY3kgRXhwbG9yZXIgZnJvbSB3aGljaCB5b3UgY2FuIHZpZXcgZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmRlcnN0YW5kaW5nIHRoZXNlIGRlcGVuZGVuY2llcyBhbGxvd3MgeW91IHRvIG1ha2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1lZCBkZWNpc2lvbnMgd2hlbiBjdXR0aW5nIG91dCB2YXJpb3VzIHBpZWNlcyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwgYW5kIHJvb3QgZmlsZXN5c3RlbS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ndHJpbS10aGUtcm9vdC1maWxlc3lzdGVtJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+VHJpbSB0aGUgUm9vdCBGaWxlc3lzdGVtPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgcm9vdCBmaWxlc3lzdGVtIGlzIG1hZGUgdXAgb2YgcGFja2FnZXMgZm9yIGJvb3RpbmcsCisgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcywgYW5kIGFwcGxpY2F0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgVG8gY2hhbmdlIHRoaW5ncywgeW91IGNhbiBjb25maWd1cmUgaG93IHRoZSBwYWNrYWdpbmcgaGFwcGVucywKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggY2hhbmdlcyB0aGUgd2F5IHlvdSBidWlsZCB0aGVtLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gbW9kaWZ5IHRoZSBmaWxlc3lzdGVtIGl0c2VsZiBvciBzZWxlY3QgYSBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRmlyc3QsIGZpbmQgb3V0IHdoYXQgaXMgaG9nZ2luZyB5b3VyIHJvb3QgZmlsZXN5c3RlbSBieSBydW5uaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlyc2l6ZS5weTwvZmlsZW5hbWU+IHNjcmlwdCBmcm9tIHlvdXIgcm9vdCBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCA8cmVwbGFjZWFibGU+cm9vdC1kaXJlY3Rvcnktb2YtaW1hZ2U8L3JlcGxhY2VhYmxlPgorICAgICAkIGRpcnNpemUucHkgMTAwMDAwID4gZGlyc2l6ZS0xMDBrLmxvZworICAgICAkIGNhdCBkaXJzaXplLTEwMGsubG9nCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhcHBseSBhIGZpbHRlciB0byB0aGUgc2NyaXB0IHRvIGlnbm9yZSBmaWxlcyB1bmRlcgorICAgICAgICAgICAgICAgICAgICBhIGNlcnRhaW4gc2l6ZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGV4YW1wbGUgZmlsdGVycyBvdXQgYW55IGZpbGVzIGJlbG93IDEwMCBLYnl0ZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBzaXplcyByZXBvcnRlZCBieSB0aGUgdG9vbCBhcmUgdW5jb21wcmVzc2VkLCBhbmQgdGh1cworICAgICAgICAgICAgICAgICAgICB3aWxsIGJlIHNtYWxsZXIgYnkgYSByZWxhdGl2ZWx5IGNvbnN0YW50IGZhY3RvciBpbiBhCisgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzZWQgcm9vdCBmaWxlc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBleGFtaW5lIHlvdXIgbG9nIGZpbGUsIHlvdSBjYW4gZm9jdXMgb24gYXJlYXMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbSB0aGF0IHRha2UgdXAgbGFyZ2UgYW1vdW50cyBvZiBtZW1vcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB3aGF0IHlvdSBlbGltaW5hdGUgZG9lcyBub3QgY3JpcHBsZQorICAgICAgICAgICAgICAgICAgICB0aGUgZnVuY3Rpb25hbGl0eSB5b3UgbmVlZC4KKyAgICAgICAgICAgICAgICAgICAgT25lIHdheSB0byBzZWUgaG93IHBhY2thZ2VzIHJlbGF0ZSB0byBlYWNoIG90aGVyIGlzIGJ5IHVzaW5nCisgICAgICAgICAgICAgICAgICAgIHRoZSBEZXBlbmRlbmN5IEV4cGxvcmVyIFVJIHdpdGggdGhlIEJpdEJha2UgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIDxyZXBsYWNlYWJsZT5pbWFnZS1kaXJlY3Rvcnk8L3JlcGxhY2VhYmxlPgorICAgICAkIGJpdGJha2UgLXUgdGFza2V4cCAtZyA8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgaW50ZXJmYWNlIHRvIHNlbGVjdCBwb3RlbnRpYWwgcGFja2FnZXMgeW91IHdpc2ggdG8KKyAgICAgICAgICAgICAgICAgICAgZWxpbWluYXRlIGFuZCBzZWUgdGhlaXIgZGVwZW5kZW5jeSByZWxhdGlvbnNoaXBzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaGVuIGRlY2lkaW5nIGhvdyB0byByZWR1Y2UgdGhlIHNpemUsIGdldCByaWQgb2YgcGFja2FnZXMgdGhhdAorICAgICAgICAgICAgICAgICAgICByZXN1bHQgaW4gbWluaW1hbCBpbXBhY3Qgb24gdGhlIGZlYXR1cmUgc2V0LgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IG1pZ2h0IG5vdCBuZWVkIGEgVkdBIGRpc3BsYXkuCisgICAgICAgICAgICAgICAgICAgIE9yLCB5b3UgbWlnaHQgYmUgYWJsZSB0byBnZXQgYnkgd2l0aCA8ZmlsZW5hbWU+ZGV2dG1wZnM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPm1kZXY8L2ZpbGVuYW1lPiBpbnN0ZWFkIG9mCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT51ZGV2PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFVzZSB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSB0byBtYWtlIGNoYW5nZXMuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0byBlbGltaW5hdGUgPGZpbGVuYW1lPnVkZXY8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdsaWI8L2ZpbGVuYW1lPiwgc2V0IHRoZSBmb2xsb3dpbmcgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGxvY2FsIGNvbmZpZ3VyYXRpb24gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBWSVJUVUFMLVJVTlRJTUVfZGV2X21hbmFnZXIgPSAiIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZpbmFsbHksIHlvdSBzaG91bGQgY29uc2lkZXIgZXhhY3RseSB0aGUgdHlwZSBvZiByb290CisgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0geW91IG5lZWQgdG8gbWVldCB5b3VyIG5lZWRzIHdoaWxlIGFsc28gcmVkdWNpbmcKKyAgICAgICAgICAgICAgICAgICAgaXRzIHNpemUuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBjb25zaWRlciA8ZmlsZW5hbWU+Y3JhbWZzPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zcXVhc2hmczwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+dWJpZnM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmV4dDI8L2ZpbGVuYW1lPiwgb3IgYW4gPGZpbGVuYW1lPmluaXRyYW1mczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHVzaW5nIDxmaWxlbmFtZT5pbml0cmFtZnM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgQmUgYXdhcmUgdGhhdCA8ZmlsZW5hbWU+ZXh0MzwvZmlsZW5hbWU+IHJlcXVpcmVzIGEgMSBNYnl0ZQorICAgICAgICAgICAgICAgICAgICBqb3VybmFsLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIG9rYXkgd2l0aCBydW5uaW5nIHJlYWQtb25seSwgeW91IGRvIG5vdCBuZWVkIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgam91cm5hbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgZWFjaCByb3VuZCBvZiBlbGltaW5hdGlvbiwgeW91IG5lZWQgdG8gcmVidWlsZCB5b3VyCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSBhbmQgdGhlbiB1c2UgdGhlIHRvb2xzIHRvIHNlZSB0aGUgZWZmZWN0cyBvZiB5b3VyCisgICAgICAgICAgICAgICAgICAgIHJlZHVjdGlvbnMuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ndHJpbS10aGUta2VybmVsJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+VHJpbSB0aGUgS2VybmVsPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUga2VybmVsIGlzIGJ1aWx0IGJ5IGluY2x1ZGluZyBwb2xpY2llcyBmb3IgaGFyZHdhcmUtaW5kZXBlbmRlbnQKKyAgICAgICAgICAgICAgICAgICAgYXNwZWN0cy4KKyAgICAgICAgICAgICAgICAgICAgV2hhdCBzdWJzeXN0ZW1zIGRvIHlvdSBlbmFibGU/CisgICAgICAgICAgICAgICAgICAgIEZvciB3aGF0IGFyY2hpdGVjdHVyZSBhcmUgeW91IGJ1aWxkaW5nPworICAgICAgICAgICAgICAgICAgICBXaGljaCBkcml2ZXJzIGRvIHlvdSBidWlsZCBieSBkZWZhdWx0PworICAgICAgICAgICAgICAgICAgICA8bm90ZT5Zb3UgY2FuIG1vZGlmeSB0aGUga2VybmVsIHNvdXJjZSBpZiB5b3Ugd2FudCB0byBoZWxwCisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGJvb3QgdGltZS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBSdW4gdGhlIDxmaWxlbmFtZT5rc2l6ZS5weTwvZmlsZW5hbWU+IHNjcmlwdCBmcm9tIHRoZSB0b3AtbGV2ZWwKKyAgICAgICAgICAgICAgICAgICAgTGludXggYnVpbGQgZGlyZWN0b3J5IHRvIGdldCBhbiBpZGVhIG9mIHdoYXQgaXMgbWFraW5nIHVwCisgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWw6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCA8cmVwbGFjZWFibGU+dG9wLWxldmVsLWxpbnV4LWJ1aWxkLWRpcmVjdG9yeTwvcmVwbGFjZWFibGU+CisgICAgICQga3NpemUucHkgPiBrc2l6ZS5sb2cKKyAgICAgJCBjYXQga3NpemUubG9nCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgZXhhbWluZSB0aGUgbG9nLCB5b3Ugd2lsbCBzZWUgaG93IG11Y2ggc3BhY2UgaXMKKyAgICAgICAgICAgICAgICAgICAgdGFrZW4gdXAgd2l0aCB0aGUgYnVpbHQtaW4gPGZpbGVuYW1lPi5vPC9maWxlbmFtZT4gZmlsZXMgZm9yCisgICAgICAgICAgICAgICAgICAgIGRyaXZlcnMsIG5ldHdvcmtpbmcsIGNvcmUga2VybmVsIGZpbGVzLCBmaWxlc3lzdGVtLCBzb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgYW5kIHNvIGZvcnRoLgorICAgICAgICAgICAgICAgICAgICBUaGUgc2l6ZXMgcmVwb3J0ZWQgYnkgdGhlIHRvb2wgYXJlIHVuY29tcHJlc3NlZCwgYW5kIHRodXMKKyAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSBzbWFsbGVyIGJ5IGEgcmVsYXRpdmVseSBjb25zdGFudCBmYWN0b3IgaW4gYSBjb21wcmVzc2VkCisgICAgICAgICAgICAgICAgICAgIGtlcm5lbCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgTG9vayB0byByZWR1Y2UgdGhlIGFyZWFzIHRoYXQgYXJlIGxhcmdlIGFuZCB0YWtpbmcgdXAgYXJvdW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSAiOTAlIHJ1bGUuIgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBleGFtaW5lLCBvciBkcmlsbCBkb3duLCBpbnRvIGFueSBwYXJ0aWN1bGFyIGFyZWEsIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1kPC9maWxlbmFtZT4gb3B0aW9uIHdpdGggdGhlIHNjcmlwdDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGtzaXplLnB5IC1kID4ga3NpemUubG9nCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhpcyBvcHRpb24gYnJlYWtzIG91dCB0aGUgaW5kaXZpZHVhbCBmaWxlIGluZm9ybWF0aW9uCisgICAgICAgICAgICAgICAgICAgIGZvciBlYWNoIGFyZWEgb2YgdGhlIGtlcm5lbCAoZS5nLiBkcml2ZXJzLCBuZXR3b3JraW5nLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgc28gZm9ydGgpLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBVc2UgeW91ciBsb2cgZmlsZSB0byBzZWUgd2hhdCB5b3UgY2FuIGVsaW1pbmF0ZSBmcm9tIHRoZSBrZXJuZWwKKyAgICAgICAgICAgICAgICAgICAgYmFzZWQgb24gZmVhdHVyZXMgeW91IGNhbiBsZXQgZ28uCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3UgYXJlIG5vdCBnb2luZyB0byBuZWVkIHNvdW5kLCB5b3UgZG8gbm90CisgICAgICAgICAgICAgICAgICAgIG5lZWQgYW55IGRyaXZlcnMgdGhhdCBzdXBwb3J0IHNvdW5kLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBZnRlciBmaWd1cmluZyBvdXQgd2hhdCB0byBlbGltaW5hdGUsIHlvdSBuZWVkIHRvIHJlY29uZmlndXJlCisgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgdG8gcmVmbGVjdCB0aG9zZSBjaGFuZ2VzIGR1cmluZyB0aGUgbmV4dCBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNvdWxkIHJ1biA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+IGFuZCBtYWtlIGFsbCB5b3VyCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZXMgYXQgb25jZS4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhhdCBtYWtlcyBpdCBkaWZmaWN1bHQgdG8gc2VlIHRoZSBlZmZlY3RzIG9mIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgaW5kaXZpZHVhbCBlbGltaW5hdGlvbnMgYW5kIGFsc28gbWFrZXMgaXQgZGlmZmljdWx0IHRvIHJlcGxpY2F0ZQorICAgICAgICAgICAgICAgICAgICB0aGUgY2hhbmdlcyBmb3IgcGVyaGFwcyBhbm90aGVyIHRhcmdldCBkZXZpY2UuCisgICAgICAgICAgICAgICAgICAgIEEgYmV0dGVyIG1ldGhvZCBpcyB0byBzdGFydCB3aXRoIG5vIGNvbmZpZ3VyYXRpb25zIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hbGxub2NvbmZpZzwvZmlsZW5hbWU+LCBjcmVhdGUgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBmcmFnbWVudHMgZm9yIGluZGl2aWR1YWwgY2hhbmdlcywgYW5kIHRoZW4gbWFuYWdlIHRoZQorICAgICAgICAgICAgICAgICAgICBmcmFnbWVudHMgaW50byBhIHNpbmdsZSBjb25maWd1cmF0aW9uIGZpbGUgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1lcmdlX2NvbmZpZy5zaDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaGUgdG9vbCBtYWtlcyBpdCBlYXN5IGZvciB5b3UgdG8gaXRlcmF0ZSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBjaGFuZ2UgYW5kIGJ1aWxkIGN5Y2xlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBFYWNoIHRpbWUgeW91IG1ha2UgY29uZmlndXJhdGlvbiBjaGFuZ2VzLCB5b3UgbmVlZCB0byByZWJ1aWxkCisgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgYW5kIGNoZWNrIHRvIHNlZSB3aGF0IGltcGFjdCB5b3VyIGNoYW5nZXMgaGFkIG9uCisgICAgICAgICAgICAgICAgICAgIHRoZSBvdmVyYWxsIHNpemUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ncmVtb3ZlLXBhY2thZ2UtbWFuYWdlbWVudC1yZXF1aXJlbWVudHMnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5SZW1vdmUgUGFja2FnZSBNYW5hZ2VtZW50IFJlcXVpcmVtZW50czwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgUGFja2FnaW5nIHJlcXVpcmVtZW50cyBhZGQgc2l6ZSB0byB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIE9uZSB3YXkgdG8gcmVkdWNlIHRoZSBzaXplIG9mIHRoZSBpbWFnZSBpcyB0byByZW1vdmUgYWxsIHRoZQorICAgICAgICAgICAgICAgICAgICBwYWNrYWdpbmcgcmVxdWlyZW1lbnRzIGZyb20gdGhlIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlZHVjdGlvbiBpbmNsdWRlcyBib3RoIHJlbW92aW5nIHRoZSBwYWNrYWdlIG1hbmFnZXIKKyAgICAgICAgICAgICAgICAgICAgYW5kIGl0cyB1bmlxdWUgZGVwZW5kZW5jaWVzIGFzIHdlbGwgYXMgcmVtb3ZpbmcgdGhlIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgbWFuYWdlbWVudCBkYXRhIGl0c2VsZi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVG8gZWxpbWluYXRlIGFsbCB0aGUgcGFja2FnaW5nIHJlcXVpcmVtZW50cyBmb3IgYW4gaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgIGJlIHN1cmUgdGhhdCAicGFja2FnZS1tYW5hZ2VtZW50IiBpcyBub3QgcGFydCBvZiB5b3VyCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgZm9yIHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgcmVtb3ZlIHRoaXMgZmVhdHVyZSwgeW91IGFyZSByZW1vdmluZyB0aGUgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyIGFzIHdlbGwgYXMgaXRzIGRlcGVuZGVuY2llcyBmcm9tIHRoZSByb290IGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nbG9vay1mb3Itb3RoZXItd2F5cy10by1taW5pbWl6ZS1zaXplJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+TG9vayBmb3IgT3RoZXIgV2F5cyB0byBNaW5pbWl6ZSBTaXplPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24geW91ciBwYXJ0aWN1bGFyIGNpcmN1bXN0YW5jZXMsIG90aGVyIGFyZWFzIHRoYXQgeW91CisgICAgICAgICAgICAgICAgICAgIGNhbiB0cmltIGxpa2VseSBleGlzdC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGtleSB0byBmaW5kaW5nIHRoZXNlIGFyZWFzIGlzIHRocm91Z2ggdG9vbHMgYW5kIG1ldGhvZHMKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVkIGhlcmUgY29tYmluZWQgd2l0aCBleHBlcmltZW50YXRpb24gYW5kIGl0ZXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBhcmUgYSBjb3VwbGUgb2YgYXJlYXMgdG8gZXhwZXJpbWVudCB3aXRoOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5nbGliYzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIGdlbmVyYWwsIGZvbGxvdyB0aGlzIHByb2Nlc3M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+UmVtb3ZlIDxmaWxlbmFtZT5nbGliYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRElTVFJPX0ZFQVRVUkVTJz48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB5b3UgdGhpbmsgeW91IGRvIG5vdCBuZWVkLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QnVpbGQgeW91ciBkaXN0cmlidXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPklmIHRoZSBidWlsZCBmYWlscyBkdWUgdG8gbWlzc2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9scyBpbiBhIHBhY2thZ2UsIGRldGVybWluZSBpZiB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvbmZpZ3VyZSB0aGUgcGFja2FnZSB0byBub3QgbmVlZCB0aG9zZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgY2hhbmdlIHRoZSBjb25maWd1cmF0aW9uIHRvIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCB3aWRlIGNoYXJhY3RlciBzdXBwb3J0IGFzIGlzIGRvbmUgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bmN1cnNlczwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3IsIGlmIHN1cHBvcnQgZm9yIHRob3NlIGNoYXJhY3RlcnMgaXMgbmVlZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lIHdoYXQgPGZpbGVuYW1lPmdsaWJjPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzIHByb3ZpZGUgdGhlIHN1cHBvcnQgYW5kIHJlc3RvcmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5SZWJ1aWxkIGFuZCByZXBlYXQgdGhlIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5idXN5Ym94PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIEJ1c3lCb3gsIHVzZSBhIHByb2Nlc3Mgc2ltaWxhciBhcyBkZXNjcmliZWQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdsaWJjPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBkaWZmZXJlbmNlIGlzIHlvdSB3aWxsIG5lZWQgdG8gYm9vdCB0aGUgcmVzdWx0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHRvIHNlZSBpZiB5b3UgYXJlIGFibGUgdG8gZG8gZXZlcnl0aGluZyB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3QgZnJvbSB0aGUgcnVubmluZyBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gYmUgc3VyZSB0byBpbnRlZ3JhdGUgY29uZmlndXJhdGlvbiBmcmFnbWVudHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIEJ1c3lib3ggYmVjYXVzZSBCdXN5Qm94IGhhbmRsZXMgaXRzIG93biBjb3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgYW5kIHRoZW4gYWxsb3dzIHlvdSB0byBhZGQgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50cyBvbiB0b3AuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2l0ZXJhdGUtb24tdGhlLXByb2Nlc3MnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5JdGVyYXRlIG9uIHRoZSBQcm9jZXNzPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBub3QgcmVhY2hlZCB5b3VyIGdvYWxzIG9uIHN5c3RlbSBzaXplLCB5b3UgbmVlZAorICAgICAgICAgICAgICAgICAgICB0byBpdGVyYXRlIG9uIHRoZSBwcm9jZXNzLgorICAgICAgICAgICAgICAgICAgICBUaGUgcHJvY2VzcyBpcyB0aGUgc2FtZS4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSB0b29scyBhbmQgc2VlIGp1c3Qgd2hhdCBpcyB0YWtpbmcgdXAgOTAlIG9mIHRoZSByb290CisgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gYW5kIHRoZSBrZXJuZWwuCisgICAgICAgICAgICAgICAgICAgIERlY2lkZSB3aGF0IHlvdSBjYW4gZWxpbWluYXRlIHdpdGhvdXQgbGltaXRpbmcgeW91ciBkZXZpY2UKKyAgICAgICAgICAgICAgICAgICAgYmV5b25kIHdoYXQgeW91IG5lZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB5b3VyIHN5c3RlbSwgYSBnb29kIHBsYWNlIHRvIGxvb2sgbWlnaHQgYmUKKyAgICAgICAgICAgICAgICAgICAgQnVzeWJveCwgd2hpY2ggcHJvdmlkZXMgYSBzdHJpcHBlZCBkb3duCisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgVW5peCB0b29scyBpbiBhIHNpbmdsZSwgZXhlY3V0YWJsZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICBZb3UgbWlnaHQgYmUgYWJsZSB0byBkcm9wIHZpcnR1YWwgdGVybWluYWwgc2VydmljZXMgb3IgcGVyaGFwcworICAgICAgICAgICAgICAgICAgICBpcHY2LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdidWlsZGluZy1pbWFnZXMtZm9yLW1vcmUtdGhhbi1vbmUtbWFjaGluZSc+CisgICAgICAgICAgICA8dGl0bGU+QnVpbGRpbmcgSW1hZ2VzIGZvciBNb3JlIHRoYW4gT25lIE1hY2hpbmU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBIGNvbW1vbiBzY2VuYXJpbyBkZXZlbG9wZXJzIGZhY2UgaXMgY3JlYXRpbmcgaW1hZ2VzIGZvciBzZXZlcmFsCisgICAgICAgICAgICAgICAgZGlmZmVyZW50IG1hY2hpbmVzIHRoYXQgdXNlIHRoZSBzYW1lIHNvZnR3YXJlIGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgIEluIHRoaXMgc2l0dWF0aW9uLCBpdCBpcyB0ZW1wdGluZyB0byBzZXQgdGhlCisgICAgICAgICAgICAgICAgdHVuaW5ncyBhbmQgb3B0aW1pemF0aW9uIGZsYWdzIGZvciBlYWNoIGJ1aWxkIHNwZWNpZmljYWxseSBmb3IKKyAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0ZWQgaGFyZHdhcmUgKGkuZS4gIm1heGluZyBvdXQiIHRoZSB0dW5pbmdzKS4KKyAgICAgICAgICAgICAgICBEb2luZyBzbyBjYW4gY29uc2lkZXJhYmx5IGFkZCB0byBidWlsZCB0aW1lcyBhbmQgcGFja2FnZSBmZWVkCisgICAgICAgICAgICAgICAgbWFpbnRlbmFuY2UgY29sbGVjdGl2ZWx5IGZvciB0aGUgbWFjaGluZXMuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHNlbGVjdGluZyB0dW5lcyB0aGF0IGFyZSBleHRyZW1lbHkgc3BlY2lmaWMgdG8gYQorICAgICAgICAgICAgICAgIENQVSBjb3JlIHVzZWQgaW4gYSBzeXN0ZW0gbWlnaHQgZW5hYmxlIHNvbWUgbWljcm8gb3B0aW1pemF0aW9ucworICAgICAgICAgICAgICAgIGluIEdDQyBmb3IgdGhhdCBwYXJ0aWN1bGFyIHN5c3RlbSBidXQgd291bGQgb3RoZXJ3aXNlIG5vdCBnYWluCisgICAgICAgICAgICAgICAgeW91IG11Y2ggb2YgYSBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlIGFjcm9zcyB0aGUgb3RoZXIgc3lzdGVtcworICAgICAgICAgICAgICAgIGFzIGNvbXBhcmVkIHRvIHVzaW5nIGEgbW9yZSBnZW5lcmFsIHR1bmluZyBhY3Jvc3MgYWxsIHRoZSBidWlsZHMKKyAgICAgICAgICAgICAgICAoZS5nLiBzZXR0aW5nCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFRkFVTFRUVU5FJz48ZmlsZW5hbWU+REVGQVVMVFRVTkU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgc3BlY2lmaWNhbGx5IGZvciBlYWNoIG1hY2hpbmUncyBidWlsZCkuCisgICAgICAgICAgICAgICAgUmF0aGVyIHRoYW4gIm1heCBvdXQiIGVhY2ggYnVpbGQncyB0dW5pbmdzLCB5b3UgY2FuIHRha2Ugc3RlcHMgdGhhdAorICAgICAgICAgICAgICAgIGNhdXNlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIHJldXNlIHNvZnR3YXJlIGFjcm9zcyB0aGUKKyAgICAgICAgICAgICAgICB2YXJpb3VzIG1hY2hpbmVzIHdoZXJlIGl0IG1ha2VzIHNlbnNlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJZiBidWlsZCBzcGVlZCBhbmQgcGFja2FnZSBmZWVkIG1haW50ZW5hbmNlIGFyZSBjb25zaWRlcmF0aW9ucywKKyAgICAgICAgICAgICAgICB5b3Ugc2hvdWxkIGNvbnNpZGVyIHRoZSBwb2ludHMgaW4gdGhpcyBzZWN0aW9uIHRoYXQgY2FuIGhlbHAgeW91CisgICAgICAgICAgICAgICAgb3B0aW1pemUgeW91ciB0dW5pbmdzIHRvIGJlc3QgY29uc2lkZXIgYnVpbGQgdGltZXMgYW5kIHBhY2thZ2UKKyAgICAgICAgICAgICAgICBmZWVkIG1haW50ZW5hbmNlLgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TaGFyZSB0aGUgQnVpbGQgRGlyZWN0b3J5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiBhdCBhbGwgcG9zc2libGUsIHNoYXJlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFjcm9zcyBidWlsZHMuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyBzd2l0Y2hpbmcgYmV0d2VlbiBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyBpbiB0aGUgc2FtZSA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHByYWN0aWNlIGlzIHdlbGwgc3VwcG9ydGVkIGFuZCByZWd1bGFybHkgdXNlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcGVycyB3aGVuIGJ1aWxkaW5nIGZvciBtdWx0aXBsZSBtYWNoaW5lcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHVzZSB0aGUgc2FtZSA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4gZm9yCisgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSBtYWNoaW5lIGJ1aWxkcywgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY2FuCisgICAgICAgICAgICAgICAgICAgICAgICByZXVzZSB0aGUgZXhpc3RpbmcgbmF0aXZlIGFuZCBvZnRlbiBjcm9zcy1yZWNpcGVzIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUgbWFjaGluZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBUaHVzLCBidWlsZCB0aW1lIGRlY3JlYXNlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURJU1RSTyc+PGZpbGVuYW1lPkRJU1RSTzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncyBjaGFuZ2Ugb3IgZnVuZGFtZW50YWwgY29uZmlndXJhdGlvbiBzZXR0aW5ncworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2ggYXMgdGhlIGZpbGVzeXN0ZW0gbGF5b3V0LCB5b3UgbmVlZCB0byB3b3JrIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIGNsZWFuIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFyaW5nIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiB1bmRlciB0aGVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpcmN1bXN0YW5jZXMgbWlnaHQgd29yayBidXQgc2luY2UgaXQgaXMgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VhcmFudGVlZCwgeW91IHNob3VsZCB1c2UgYSBjbGVhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RW5hYmxlIHRoZSBBcHByb3ByaWF0ZSBQYWNrYWdlIEFyY2hpdGVjdHVyZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZW5hYmxlcyB0aHJlZQorICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzIG9mIHBhY2thZ2UgYXJjaGl0ZWN0dXJlczogImFsbCIsICJ0dW5lIiBvciAicGFja2FnZSIsCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgIm1hY2hpbmUiLgorICAgICAgICAgICAgICAgICAgICAgICAgQW55IGdpdmVuIHJlY2lwZSB1c3VhbGx5IHNlbGVjdHMgb25lIG9mIHRoZXNlIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZXMgKHR5cGVzKSBmb3IgaXRzIG91dHB1dC4KKyAgICAgICAgICAgICAgICAgICAgICAgIERlcGVuZGluZyBmb3Igd2hhdCBhIGdpdmVuIHJlY2lwZSBjcmVhdGVzIHBhY2thZ2VzLCBtYWtpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1cmUgeW91IGVuYWJsZSB0aGUgYXBwcm9wcmlhdGUgcGFja2FnZSBhcmNoaXRlY3R1cmUgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RseSBpbXBhY3QgdGhlIGJ1aWxkIHRpbWUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5BIHJlY2lwZSB0aGF0IGp1c3QgZ2VuZXJhdGVzIHNjcmlwdHMgY2FuIGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgImFsbCIgYXJjaGl0ZWN0dXJlIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGJpbmFyaWVzIHRvIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gc3BlY2lmaWNhbGx5IGVuYWJsZSAiYWxsIiBhcmNoaXRlY3R1cmUsIGJlIHN1cmUgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGluaGVyaXRzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtYWxsYXJjaCc+PGZpbGVuYW1lPmFsbGFyY2g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY2xhc3MgaXMgdXNlZnVsIGZvciAiYWxsIiBhcmNoaXRlY3R1cmVzIGJlY2F1c2UgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZXMgbWFueSB2YXJpYWJsZXMgc28gcGFja2FnZXMgY2FuIGJlIHVzZWQgYWNyb3NzCisgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSBhcmNoaXRlY3R1cmVzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91ciByZWNpcGUgbmVlZHMgdG8gZ2VuZXJhdGUgcGFja2FnZXMgdGhhdCBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUtc3BlY2lmaWMgb3Igd2hlbiBvbmUgb2YgdGhlIGJ1aWxkIG9yIHJ1bnRpbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBpcyBhbHJlYWR5IG1hY2hpbmUtYXJjaGl0ZWN0dXJlIGRlcGVuZGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIG1ha2VzIHlvdXIgcmVjaXBlIGFsc28gbWFjaGluZS1hcmNoaXRlY3R1cmUgZGVwZW5kZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgbWFrZSBzdXJlIHlvdXIgcmVjaXBlIGVuYWJsZXMgdGhlICJtYWNoaW5lIiBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmUgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FX0FSQ0gnPjxmaWxlbmFtZT5NQUNISU5FX0FSQ0g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IGRvIG5vdCBzcGVjaWZpY2FsbHkgZW5hYmxlIGEgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRV9BUkNIJz48ZmlsZW5hbWU+UEFDS0FHRV9BUkNIPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGRlZmF1bHRzIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRVTkVfUEtHQVJDSCc+PGZpbGVuYW1lPlRVTkVfUEtHQVJDSDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBBQ0tBR0VfQVJDSCA9ICIke1RVTkVfUEtHQVJDSH0iCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNob29zZSBhIEdlbmVyaWMgVHVuaW5nIEZpbGUgaWYgUG9zc2libGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgdHVuZXMgYXJlIG1vcmUgZ2VuZXJpYyBhbmQgY2FuIHJ1biBvbiBtdWx0aXBsZSB0YXJnZXRzCisgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiBhbiA8ZmlsZW5hbWU+YXJtdjU8L2ZpbGVuYW1lPiBzZXQgb2YgcGFja2FnZXMgY291bGQKKyAgICAgICAgICAgICAgICAgICAgICAgIHJ1biBvbiA8ZmlsZW5hbWU+YXJtdjY8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hcm12NzwvZmlsZW5hbWU+IHByb2Nlc3NvcnMgaW4gbW9zdCBjYXNlcykuCisgICAgICAgICAgICAgICAgICAgICAgICBTaW1pbGFybHksIDxmaWxlbmFtZT5pNDg2PC9maWxlbmFtZT4gYmluYXJpZXMgY291bGQgd29yaworICAgICAgICAgICAgICAgICAgICAgICAgb24gPGZpbGVuYW1lPmk1ODY8L2ZpbGVuYW1lPiBhbmQgaGlnaGVyIHByb2Nlc3NvcnMuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIHJlYWxpemUsIGhvd2V2ZXIsIHRoYXQgYWR2YW5jZXMgb24gbmV3ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvciB2ZXJzaW9ucyB3b3VsZCBub3QgYmUgdXNlZC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBzZWxlY3QgdGhlIHNhbWUgdHVuZSBmb3Igc2V2ZXJhbCBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVzLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSByZXVzZXMgc29mdHdhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzbHkgYnVpbHQsIHRodXMgc3BlZWRpbmcgdXAgdGhlIG92ZXJhbGwgYnVpbGQgdGltZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFJlYWxpemUgdGhhdCBldmVuIHRob3VnaCBhIG5ldyBzeXNyb290IGZvciBlYWNoIG1hY2hpbmUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZCwgdGhlIHNvZnR3YXJlIGlzIG5vdCByZWNvbXBpbGVkIGFuZCBvbmx5IG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBmZWVkIGV4aXN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFuYWdlIEdyYW51bGFyIExldmVsIFBhY2thZ2luZzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgU29tZXRpbWVzIGNhc2VzIGV4aXN0IHdoZXJlIGluamVjdGluZyBhbm90aGVyIGxldmVsIG9mCisgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIGFyY2hpdGVjdHVyZSBiZXlvbmQgdGhlIHRocmVlIGhpZ2hlciBsZXZlbHMgbm90ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGVhcmxpZXIgY2FuIGJlIHVzZWZ1bC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBjb25zaWRlciBob3cgTlhQIChmb3JtZXJseSBGcmVlc2NhbGUpIGFsbG93cworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBlYXN5IHJldXNlIG9mIGJpbmFyeSBwYWNrYWdlcyBpbiB0aGVpciBsYXllcgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvbWV0YS1mcmVlc2NhbGUvJz48ZmlsZW5hbWU+bWV0YS1mcmVlc2NhbGU8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL21ldGEtZnJlZXNjYWxlL3RyZWUvY2xhc3Nlcy9mc2wtZHluYW1pYy1wYWNrYWdlYXJjaC5iYmNsYXNzJz48ZmlsZW5hbWU+ZnNsLWR5bmFtaWMtcGFja2FnZWFyY2g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBzaGFyZXMgR1BVIHBhY2thZ2VzIGZvciBpLk1YNTMgYm9hcmRzIGJlY2F1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGFsbCBib2FyZHMgc2hhcmUgdGhlIEFNRCBHUFUuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgaS5NWDYtYmFzZWQgYm9hcmRzIGNhbiBkbyB0aGUgc2FtZSBiZWNhdXNlIGFsbCBib2FyZHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlIHRoZSBWaXZhbnRlIEdQVS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY2xhc3MgaW5zcGVjdHMgdGhlIEJpdEJha2UgZGF0YXN0b3JlIHRvIGlkZW50aWZ5IGlmCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcGFja2FnZSBwcm92aWRlcyBvciBkZXBlbmRzIG9uIG9uZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1Yi1hcmNoaXRlY3R1cmUgdmFsdWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgc28sIHRoZSBjbGFzcyBzZXRzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfQVJDSCc+PGZpbGVuYW1lPlBBQ0tBR0VfQVJDSDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIGJhc2VkIG9uIHRoZSA8ZmlsZW5hbWU+TUFDSElORV9TVUJBUkNIPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHBhY2thZ2UgZG9lcyBub3QgcHJvdmlkZSBvciBkZXBlbmQgb24gb25lIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc3ViLWFyY2hpdGVjdHVyZSB2YWx1ZXMgYnV0IGl0IG1hdGNoZXMgYSB2YWx1ZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUtc3BlY2lmaWMgZmlsdGVyLCBpdCBzZXRzCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORV9BUkNIJz48ZmlsZW5hbWU+TUFDSElORV9BUkNIPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgYmVoYXZpb3IgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHBhY2thZ2VzIGJ1aWx0IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZXMgYnVpbGQgdGltZSBieSByZXVzaW5nIGJpbmFyaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Vc2UgVG9vbHMgdG8gRGVidWcgSXNzdWVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBTb21ldGltZXMgeW91IGNhbiBydW4gaW50byBzaXR1YXRpb25zIHdoZXJlIHNvZnR3YXJlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyByZWJ1aWx0IHdoZW4geW91IHRoaW5rIGl0IHNob3VsZCBub3QgYmUuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gbWlnaHQgbm90IGJlCisgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyBzaGFyZWQgc3RhdGUgYmV0d2VlbiBtYWNoaW5lcyB3aGVuIHlvdSB0aGluayBpdAorICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgdHlwZXMgb2Ygc2l0dWF0aW9ucyBhcmUgdXN1YWxseSBkdWUgdG8gcmVmZXJlbmNlcworICAgICAgICAgICAgICAgICAgICAgICAgdG8gbWFjaGluZS1zcGVjaWZpYyB2YXJpYWJsZXMgc3VjaCBhcworICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TRVJJQUxfQ09OU09MRVMnPjxmaWxlbmFtZT5TRVJJQUxfQ09OU09MRVM8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVhTRVJWRVInPjxmaWxlbmFtZT5YU0VSVkVSPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FX0ZFQVRVUkVTJz48ZmlsZW5hbWU+TUFDSElORV9GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc28gZm9ydGggaW4gY29kZSB0aGF0IGlzIHN1cHBvc2VkIHRvIG9ubHkgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHR1bmUtc3BlY2lmaWMgb3Igd2hlbiB0aGUgcmVjaXBlIGRlcGVuZHMKKyAgICAgICAgICAgICAgICAgICAgICAgICg8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVJERVBFTkRTJz48ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVJSRUNPTU1FTkRTJz48ZmlsZW5hbWU+UlJFQ09NTUVORFM8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVJTVUdHRVNUUyc+PGZpbGVuYW1lPlJTVUdHRVNUUzwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc28gZm9ydGgpIG9uIHNvbWUgb3RoZXIgcmVjaXBlIHRoYXQgYWxyZWFkeSBoYXMKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0FSQ0gnPjxmaWxlbmFtZT5QQUNLQUdFX0FSQ0g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkIGFzICIke01BQ0hJTkVfQVJDSH0iLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0Y2hlcyB0byBmaXggYW55IGlzc3VlcyBpZGVudGlmaWVkIGFyZSBtb3N0IHdlbGNvbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyB0aGVzZSBpc3N1ZXMgb2NjYXNpb25hbGx5IGRvIG9jY3VyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIHN1Y2ggY2FzZXMsIHlvdSBjYW4gdXNlIHNvbWUgdG9vbHMgdG8gaGVscCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgb3V0IHRoZSBzaXR1YXRpb246CisgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5zc3RhdGUtZGlmZi1tYWNoaW5lcy5zaDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGlzIHRvb2wgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzPC9maWxlbmFtZT4gZGlyZWN0b3J5IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2UgUmVwb3NpdG9yaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlIGNvbW1lbnRzIGluIHRoZSBzY3JpcHQgZm9yIGluZm9ybWF0aW9uIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdyB0byB1c2UgdGhlIHRvb2wuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJpdEJha2UncyAiLVMgcHJpbnRkaWZmIiBPcHRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhpcyBvcHRpb24gY2F1c2VzIEJpdEJha2UgdG8gdHJ5IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzdGFibGlzaCB0aGUgY2xvc2VzdCBzaWduYXR1cmUgbWF0Y2ggaXQgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIGluIHRoZSBzaGFyZWQgc3RhdGUgY2FjaGUpIGFuZCB0aGVuIHJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1kaWZmc2lnczwvZmlsZW5hbWU+IG92ZXIgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMgdG8gZGV0ZXJtaW5lIHRoZSBzdGFtcHMgYW5kIGRlbHRhIHdoZXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZXNlIHR3byBzdGFtcCB0cmVlcyBkaXZlcmdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0iYnVpbGRpbmctc29mdHdhcmUtZnJvbS1hbi1leHRlcm5hbC1zb3VyY2UiPgorICAgICAgICAgICAgPHRpdGxlPkJ1aWxkaW5nIFNvZnR3YXJlIGZyb20gYW4gRXh0ZXJuYWwgU291cmNlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyBzb3VyY2UgY29kZS4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgcHJvY2VzcyBpbnZvbHZlcyBmZXRjaGluZyB0aGUgc291cmNlIGZpbGVzLCB1bnBhY2tpbmcKKyAgICAgICAgICAgICAgICB0aGVtLCBhbmQgdGhlbiBwYXRjaGluZyB0aGVtIGlmIG5lY2Vzc2FyeSBiZWZvcmUgdGhlIGJ1aWxkIHRha2VzCisgICAgICAgICAgICAgICAgcGxhY2UuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFNpdHVhdGlvbnMgZXhpc3Qgd2hlcmUgeW91IG1pZ2h0IHdhbnQgdG8gYnVpbGQgc29mdHdhcmUgZnJvbSBzb3VyY2UKKyAgICAgICAgICAgICAgICBmaWxlcyB0aGF0IGFyZSBleHRlcm5hbCB0byBhbmQgdGh1cyBvdXRzaWRlIG9mIHRoZQorICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGhhdmUgYSBwcm9qZWN0IHRoYXQgaW5jbHVkZXMgYSBuZXcgQlNQIHdpdGgKKyAgICAgICAgICAgICAgICBhIGhlYXZpbHkgY3VzdG9taXplZCBrZXJuZWwuCisgICAgICAgICAgICAgICAgQW5kLCB5b3Ugd2FudCB0byBtaW5pbWl6ZSBleHBvc2luZyB0aGUgYnVpbGQgc3lzdGVtIHRvIHRoZQorICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IHRlYW0gc28gdGhhdCB0aGV5IGNhbiBmb2N1cyBvbiB0aGVpciBwcm9qZWN0IGFuZAorICAgICAgICAgICAgICAgIG1haW50YWluIGV2ZXJ5b25lJ3Mgd29ya2Zsb3cgYXMgbXVjaCBhcyBwb3NzaWJsZS4KKyAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHlvdSB3YW50IGEga2VybmVsIHNvdXJjZSBkaXJlY3Rvcnkgb24gdGhlIGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgbWFjaGluZSB3aGVyZSB0aGUgZGV2ZWxvcG1lbnQgb2NjdXJzLgorICAgICAgICAgICAgICAgIFlvdSB3YW50IHRoZSByZWNpcGUncworICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBwb2ludCB0byB0aGUgZXh0ZXJuYWwgZGlyZWN0b3J5IGFuZCB1c2UgaXQgYXMgaXMsIG5vdAorICAgICAgICAgICAgICAgIGNvcHkgaXQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIGJ1aWxkIGZyb20gc29mdHdhcmUgdGhhdCBjb21lcyBmcm9tIGFuIGV4dGVybmFsIHNvdXJjZSwgYWxsIHlvdQorICAgICAgICAgICAgICAgIG5lZWQgdG8gZG8gaXMgaW5oZXJpdCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1leHRlcm5hbHNyYyc+PGZpbGVuYW1lPmV4dGVybmFsc3JjPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGNsYXNzIGFuZCB0aGVuIHNldCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRVhURVJOQUxTUkMnPjxmaWxlbmFtZT5FWFRFUk5BTFNSQzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBwb2ludCB0byB5b3VyIGV4dGVybmFsIHNvdXJjZSBjb2RlLgorICAgICAgICAgICAgICAgIEhlcmUgYXJlIHRoZSBzdGF0ZW1lbnRzIHRvIHB1dCBpbiB5b3VyCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU5IRVJJVCArPSAiZXh0ZXJuYWxzcmMiCisgICAgIEVYVEVSTkFMU1JDX3BuLTxyZXBsYWNlYWJsZT5teXJlY2lwZTwvcmVwbGFjZWFibGU+ID0gIjxyZXBsYWNlYWJsZT5wYXRoLXRvLXlvdXItc291cmNlLXRyZWU8L3JlcGxhY2VhYmxlPiIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgbmV4dCBleGFtcGxlIHNob3dzIGhvdyB0byBhY2NvbXBsaXNoIHRoZSBzYW1lIHRoaW5nIGJ5IHNldHRpbmcKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RVhURVJOQUxTUkM8L2ZpbGVuYW1lPiBpbiB0aGUgcmVjaXBlIGl0c2VsZiBvciBpbiB0aGUKKyAgICAgICAgICAgICAgICByZWNpcGUncyBhcHBlbmQgZmlsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEVYVEVSTkFMU1JDID0gIjxyZXBsYWNlYWJsZT5wYXRoPC9yZXBsYWNlYWJsZT4iCisgICAgIEVYVEVSTkFMU1JDX0JVSUxEID0gIjxyZXBsYWNlYWJsZT5wYXRoPC9yZXBsYWNlYWJsZT4iCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBJbiBvcmRlciBmb3IgdGhlc2Ugc2V0dGluZ3MgdG8gdGFrZSBlZmZlY3QsIHlvdSBtdXN0IGdsb2JhbGx5CisgICAgICAgICAgICAgICAgICAgIG9yIGxvY2FsbHkgaW5oZXJpdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtZXh0ZXJuYWxzcmMnPjxmaWxlbmFtZT5leHRlcm5hbHNyYzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCA8ZmlsZW5hbWU+ZXh0ZXJuYWxzcmMuYmJjbGFzczwvZmlsZW5hbWU+IGJ1aWxkcworICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UgY29kZSBpbiBhIGRpcmVjdG9yeSBzZXBhcmF0ZSBmcm9tIHRoZSBleHRlcm5hbCBzb3VyY2UKKyAgICAgICAgICAgICAgICBkaXJlY3RvcnkgYXMgc3BlY2lmaWVkIGJ5CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUVYVEVSTkFMU1JDJz48ZmlsZW5hbWU+RVhURVJOQUxTUkM8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIHRvIGhhdmUgdGhlIHNvdXJjZSBidWlsdCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgaW4KKyAgICAgICAgICAgICAgICB3aGljaCBpdCByZXNpZGVzLCBvciBzb21lIG90aGVyIG5vbWluYXRlZCBkaXJlY3RvcnksIHlvdSBjYW4gc2V0CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUVYVEVSTkFMU1JDX0JVSUxEJz48ZmlsZW5hbWU+RVhURVJOQUxTUkNfQlVJTEQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdG8gcG9pbnQgdG8gdGhhdCBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBFWFRFUk5BTFNSQ19CVUlMRF9wbi08cmVwbGFjZWFibGU+bXlyZWNpcGU8L3JlcGxhY2VhYmxlPiA9ICI8cmVwbGFjZWFibGU+cGF0aC10by15b3VyLXNvdXJjZS10cmVlPC9yZXBsYWNlYWJsZT4iCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisKKworICAgIDxzZWN0aW9uIGlkPSdzcGVlZGluZy11cC1hLWJ1aWxkJz4KKyAgICAgICAgPHRpdGxlPlNwZWVkaW5nIFVwIGEgQnVpbGQ8L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRm9sbG93IHRoZXNlIGd1aWRlbGluZXMgdG8gY3JlYXRlIGFuIGVudmlyb25tZW50IHRoYXQgc3VwcG9ydHMKLSAgICAgICAgICAgIG11bHRpcGxlIGNvbmZpZ3VyYXRpb25zOgorICAgICAgICAgICAgQnVpbGQgdGltZSBjYW4gYmUgYW4gaXNzdWUuCisgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgYnVpbGQgc3lzdGVtIHVzZXMgc2ltcGxlIGNvbnRyb2xzIHRvIHRyeSBhbmQgbWF4aW1pemUKKyAgICAgICAgICAgIGJ1aWxkIGVmZmljaWVuY3kuCisgICAgICAgICAgICBJbiBnZW5lcmFsLCB0aGUgZGVmYXVsdCBzZXR0aW5ncyBmb3IgYWxsIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzCisgICAgICAgICAgICByZXN1bHQgaW4gdGhlIG1vc3QgZWZmaWNpZW50IGJ1aWxkIHRpbWVzIHdoZW4gZGVhbGluZyB3aXRoIHNpbmdsZQorICAgICAgICAgICAgc29ja2V0IHN5c3RlbXMgKGkuZS4gYSBzaW5nbGUgQ1BVKS4KKyAgICAgICAgICAgIElmIHlvdSBoYXZlIG11bHRpcGxlIENQVXMsIHlvdSBtaWdodCB0cnkgaW5jcmVhc2luZyB0aGUgZGVmYXVsdAorICAgICAgICAgICAgdmFsdWVzIHRvIGdhaW4gbW9yZSBzcGVlZC4KKyAgICAgICAgICAgIFNlZSB0aGUgZGVzY3JpcHRpb25zIGluIHRoZSBnbG9zc2FyeSBmb3IgZWFjaCB2YXJpYWJsZSBmb3IgbW9yZQorICAgICAgICAgICAgaW5mb3JtYXRpb246CiAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBDb25maWd1cmF0aW9uIEZpbGVzPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGNyZWF0ZSBhIHNpbmdsZSBjb25maWd1cmF0aW9uIGZpbGUgZm9yIGVhY2gKLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmb3Igd2hpY2ggeW91IHdhbnQgdG8gYWRkIHN1cHBvcnQuCi0gICAgICAgICAgICAgICAgICAgIFRoZXNlIGZpbGVzIHdvdWxkIGNvbnRhaW4gbGluZXMgc3VjaCBhcyB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIE1BQ0hJTkUgPSAiQSIKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBUaGUgZmlsZXMgd291bGQgY29udGFpbiBhbnkgb3RoZXIgdmFyaWFibGVzIHRoYXQgY2FuCi0gICAgICAgICAgICAgICAgICAgIGJlIHNldCBhbmQgYnVpbHQgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY2hhbmdlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRvIG5vdCBjb25mbGljdC4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgbXVzdCBiZSBsb2NhdGVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICBjdXJyZW50IGJ1aWxkIGRpcmVjdG9yeSBpbiBhIGRpcmVjdG9yeSBuYW1lZAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bXVsdGljb25maWc8L2ZpbGVuYW1lPiB1bmRlciB0aGUgYnVpbGQncwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeSB3aGVyZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IHJlc2lkZXMuCi0gICAgICAgICAgICAgICAgICAgIFRoZSByZWFzb24gZm9yIHRoaXMgcmVzdHJpY3Rpb24gaXMgYmVjYXVzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzIG5vdCBjb25zdHJ1Y3RlZAotICAgICAgICAgICAgICAgICAgICB1bnRpbCB0aGUgbGF5ZXJzIGFyZSBwYXJzZWQuCi0gICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgdXNpbmcgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBhcyBhCi0gICAgICAgICAgICAgICAgICAgIHByZS1jb25maWd1cmF0aW9uIGZpbGUgaXMgbm90IHBvc3NpYmxlIHVubGVzcyBpdCBpcwotICAgICAgICAgICAgICAgICAgICBsb2NhdGVkIGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJfTlVNQkVSX1RIUkVBRFMnPjxmaWxlbmFtZT5CQl9OVU1CRVJfVEhSRUFEUzwvZmlsZW5hbWU+OjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzIEJpdEJha2Ugc2ltdWx0YW5lb3VzbHkgZXhlY3V0ZXMuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkFkZCB0aGUgQml0QmFrZSBNdWx0aS1Db25maWcgVmFyaWFibGUgdG8geW91IExvY2FsIENvbmZpZ3VyYXRpb24gRmlsZTwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICBVc2UgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQk1VTFRJQ09ORklHPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4geW91ciA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIHRvIHNwZWNpZnkgZWFjaCBzZXBhcmF0ZSBjb25maWd1cmF0aW9uLgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBsaW5lIHRlbGxzIEJpdEJha2UgaXQgc2hvdWxkIGxvYWQKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbXVsdGljb25maWcvY29uZmlnQS5jb25mPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL211bHRpY29uZmlnL2NvbmZpZ0IuY29uZjwvZmlsZW5hbWU+LCBhbmQKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbXVsdGljb25maWcvY29uZmlnQy5jb25mPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgQkJNVUxUSUNPTkZJRyA9ICJjb25maWdBIGNvbmZpZ0IgY29uZmlnQyIKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3Zhci1CQl9OVU1CRVJfUEFSU0VfVEhSRUFEUyc+PGZpbGVuYW1lPkJCX05VTUJFUl9QQVJTRV9USFJFQURTPC9maWxlbmFtZT46PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG51bWJlciBvZiB0aHJlYWRzIEJpdEJha2UgdXNlcyBkdXJpbmcgcGFyc2luZy4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TGF1bmNoIEJpdEJha2U8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBmb2xsb3dpbmcgQml0QmFrZSBjb21tYW5kIGZvcm0gdG8gbGF1bmNoIHRoZQotICAgICAgICAgICAgICAgICAgICBidWlsZDoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgW211bHRpY29uZmlnOjxyZXBsYWNlYWJsZT5tdWx0aWNvbmZpZ25hbWU8L3JlcGxhY2VhYmxlPjpdPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+IFtbW211bHRpY29uZmlnOjxyZXBsYWNlYWJsZT5tdWx0aWNvbmZpZ25hbWU8L3JlcGxhY2VhYmxlPjpdPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+XSAuLi4gXQotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHRoYXQgc3VwcG9ydHMgYnVpbGRpbmcgYSBtaW5pbWFsCi0gICAgICAgICAgICAgICAgICAgIGltYWdlIGZvciBjb25maWd1cmF0aW9uIEEgYWxvbmdzaWRlIGEgc3RhbmRhcmQKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+LCB3aGljaCB0YWtlcyBpdHMKLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmcm9tIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlIG11bHRpY29uZmlnOmNvbmZpZ0E6Y29yZS1pbWFnZS1taW5pbWFsIGNvcmUtaW1hZ2Utc2F0bwotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQVJBTExFTF9NQUtFJz48ZmlsZW5hbWU+UEFSQUxMRUxfTUFLRTwvZmlsZW5hbWU+OjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIEV4dHJhIG9wdGlvbnMgcGFzc2VkIHRvIHRoZSA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtY29tcGlsZSc+PGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgaW4gb3JkZXIgdG8gc3BlY2lmeSBwYXJhbGxlbCBjb21waWxhdGlvbiBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgbG9jYWwgYnVpbGQgaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFSQUxMRUxfTUFLRUlOU1QnPjxmaWxlbmFtZT5QQVJBTExFTF9NQUtFSU5TVDwvZmlsZW5hbWU+OjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIEV4dHJhIG9wdGlvbnMgcGFzc2VkIHRvIHRoZSA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtaW5zdGFsbCc+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgaW4gb3JkZXIgdG8gc3BlY2lmeSBwYXJhbGxlbCBpbnN0YWxsYXRpb24gb24gdGhlCisgICAgICAgICAgICAgICAgICAgIGxvY2FsIGJ1aWxkIGhvc3QuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICBBcyBtZW50aW9uZWQsIHRoZXNlIHZhcmlhYmxlcyBhbGwgc2NhbGUgdG8gdGhlIG51bWJlciBvZiBwcm9jZXNzb3IKKyAgICAgICAgICAgIGNvcmVzIGF2YWlsYWJsZSBvbiB0aGUgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgRm9yIHNpbmdsZSBzb2NrZXQgc3lzdGVtcywgdGhpcyBhdXRvLXNjYWxpbmcgZW5zdXJlcyB0aGF0IHRoZSBidWlsZAorICAgICAgICAgICAgc3lzdGVtIGZ1bmRhbWVudGFsbHkgdGFrZXMgYWR2YW50YWdlIG9mIHBvdGVudGlhbCBwYXJhbGxlbCBvcGVyYXRpb25zCisgICAgICAgICAgICBkdXJpbmcgdGhlIGJ1aWxkIGJhc2VkIG9uIHRoZSBidWlsZCBtYWNoaW5lJ3MgY2FwYWJpbGl0aWVzLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb25maWd1cmF0aW9ucyBpbiB0aGlzIGN1cnJlbnQgcmVsZWFzZSBvZgotICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgKCZESVNUUk9fTkFNRTsgJkRJU1RSTzspIGhhcyBzb21lIGtub3duIGlzc3VlczoKKyAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgYWRkaXRpb25hbCBmYWN0b3JzIHRoYXQgY2FuIGFmZmVjdCBidWlsZCBzcGVlZDoKICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBObyBpbnRlci1tdWx0aS1jb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBleGlzdC4KKyAgICAgICAgICAgICAgICAgICAgRmlsZSBzeXN0ZW0gdHlwZToKKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpbGUgc3lzdGVtIHR5cGUgdGhhdCB0aGUgYnVpbGQgaXMgYmVpbmcgcGVyZm9ybWVkIG9uIGNhbgorICAgICAgICAgICAgICAgICAgICBhbHNvIGluZmx1ZW5jZSBwZXJmb3JtYW5jZS4KKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgPGZpbGVuYW1lPmV4dDQ8L2ZpbGVuYW1lPiBpcyByZWNvbW1lbmRlZCBhcyBjb21wYXJlZAorICAgICAgICAgICAgICAgICAgICB0byA8ZmlsZW5hbWU+ZXh0MjwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+ZXh0MzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGR1ZSB0byA8ZmlsZW5hbWU+ZXh0NDwvZmlsZW5hbWU+IGltcHJvdmVkIGZlYXR1cmVzCisgICAgICAgICAgICAgICAgICAgIHN1Y2ggYXMgZXh0ZW50cy4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBTaGFyZWQgU3RhdGUgKHNzdGF0ZSkgb3B0aW1pemF0aW9ucyBkbyBub3QgZXhpc3QuCi0gICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgaWYgdGhlIGJ1aWxkIHVzZXMgdGhlIHNhbWUgb2JqZWN0IHR3aWNlCi0gICAgICAgICAgICAgICAgICAgIGluLCBmb3IgZXhhbXBsZSwgdHdvIGRpZmZlcmVudAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4gZGlyZWN0b3JpZXMsIHRoZSBidWlsZAotICAgICAgICAgICAgICAgICAgICB3aWxsIGVpdGhlciBsb2FkIGZyb20gYW4gZXhpc3Rpbmcgc3N0YXRlIGNhY2hlIGF0IHRoZQotICAgICAgICAgICAgICAgICAgICBzdGFydCBvciBidWlsZCB0aGUgb2JqZWN0IHR3aWNlLgorICAgICAgICAgICAgICAgICAgICBEaXNhYmxpbmcgdGhlIHVwZGF0aW5nIG9mIGFjY2VzcyB0aW1lIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ub2F0aW1lPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bm9hdGltZTwvZmlsZW5hbWU+IG1vdW50IG9wdGlvbiBwcmV2ZW50cyB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIGZyb20gdXBkYXRpbmcgZmlsZSBhbmQgZGlyZWN0b3J5IGFjY2VzcyB0aW1lcy4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTZXR0aW5nIGEgbG9uZ2VyIGNvbW1pdDoKKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhlICJjb21taXQ9IiBtb3VudCBvcHRpb24gaW5jcmVhc2VzIHRoZSBpbnRlcnZhbAorICAgICAgICAgICAgICAgICAgICBpbiBzZWNvbmRzIGJldHdlZW4gZGlzayBjYWNoZSB3cml0ZXMuCisgICAgICAgICAgICAgICAgICAgIENoYW5naW5nIHRoaXMgaW50ZXJ2YWwgZnJvbSB0aGUgZml2ZSBzZWNvbmQgZGVmYXVsdCB0bworICAgICAgICAgICAgICAgICAgICBzb21ldGhpbmcgbG9uZ2VyIGluY3JlYXNlcyB0aGUgcmlzayBvZiBkYXRhIGxvc3MgYnV0IGRlY3JlYXNlcworICAgICAgICAgICAgICAgICAgICB0aGUgbmVlZCB0byB3cml0ZSB0byB0aGUgZGlzaywgdGh1cyBpbmNyZWFzaW5nIHRoZSBidWlsZAorICAgICAgICAgICAgICAgICAgICBwZXJmb3JtYW5jZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBDaG9vc2luZyB0aGUgcGFja2FnaW5nIGJhY2tlbmQ6CisgICAgICAgICAgICAgICAgICAgIE9mIHRoZSBhdmFpbGFibGUgcGFja2FnaW5nIGJhY2tlbmRzLCBJUEsgaXMgdGhlIGZhc3Rlc3QuCisgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgc2VsZWN0aW5nIGEgc2luZ3VsYXIgcGFja2FnaW5nIGJhY2tlbmQgYWxzbworICAgICAgICAgICAgICAgICAgICBoZWxwcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBVc2luZyA8ZmlsZW5hbWU+dG1wZnM8L2ZpbGVuYW1lPiBmb3IKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgYXMgYSB0ZW1wb3JhcnkgZmlsZSBzeXN0ZW06CisgICAgICAgICAgICAgICAgICAgIFdoaWxlIHRoaXMgY2FuIGhlbHAgc3BlZWQgdXAgdGhlIGJ1aWxkLCB0aGUgYmVuZWZpdHMgYXJlCisgICAgICAgICAgICAgICAgICAgIGxpbWl0ZWQgZHVlIHRvIHRoZSBjb21waWxlciB1c2luZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LXBpcGU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBnb2VzIHRvIHNvbWUgbGVuZ3RocyB0byBhdm9pZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3luYygpPC9maWxlbmFtZT4gY2FsbHMgaW50byB0aGUKKyAgICAgICAgICAgICAgICAgICAgZmlsZSBzeXN0ZW0gb24gdGhlIHByaW5jaXBsZSB0aGF0IGlmIHRoZXJlIHdhcyBhIHNpZ25pZmljYW50CisgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUsIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzIGNvdWxkIGVhc2lseSBiZSByZWJ1aWx0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEluaGVyaXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLXJtLXdvcmsnPjxmaWxlbmFtZT5ybV93b3JrPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzczoKKyAgICAgICAgICAgICAgICAgICAgSW5oZXJpdGluZyB0aGlzIGNsYXNzIGhhcyBzaG93biB0byBzcGVlZCB1cCBidWlsZHMgZHVlIHRvCisgICAgICAgICAgICAgICAgICAgIHNpZ25pZmljYW50bHkgbG93ZXIgYW1vdW50cyBvZiBkYXRhIHN0b3JlZCBpbiB0aGUgZGF0YQorICAgICAgICAgICAgICAgICAgICBjYWNoZSBhcyB3ZWxsIGFzIG9uIGRpc2suCisgICAgICAgICAgICAgICAgICAgIEluaGVyaXRpbmcgdGhpcyBjbGFzcyBhbHNvIG1ha2VzIGNsZWFudXAgb2YKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgZmFzdGVyLCBhdCB0aGUgZXhwZW5zZSBvZiBiZWluZyBlYXNpbHkgYWJsZSB0byBkaXZlIGludG8gdGhlCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBjb2RlLgorICAgICAgICAgICAgICAgICAgICBGaWxlIHN5c3RlbSBtYWludGFpbmVycyBoYXZlIHJlY29tbWVuZGVkIHRoYXQgdGhlIGZhc3Rlc3Qgd2F5CisgICAgICAgICAgICAgICAgICAgIHRvIGNsZWFuIHVwIGxhcmdlIG51bWJlcnMgb2YgZmlsZXMgaXMgdG8gcmVmb3JtYXQgcGFydGl0aW9ucworICAgICAgICAgICAgICAgICAgICByYXRoZXIgdGhhbiBkZWxldGUgZmlsZXMgZHVlIHRvIHRoZSBsaW5lYXIgbmF0dXJlIG9mCisgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMsIG9mIGNvdXJzZSwgYXNzdW1lcyB5b3Ugc3RydWN0dXJlIHRoZSBkaXNrIHBhcnRpdGlvbnMgYW5kCisgICAgICAgICAgICAgICAgICAgIGZpbGUgc3lzdGVtcyBpbiBhIHdheSB0aGF0IHRoaXMgaXMgcHJhY3RpY2FsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgQXNpZGUgZnJvbSB0aGUgcHJldmlvdXMgbGlzdCwgeW91IHNob3VsZCBrZWVwIHNvbWUgdHJhZGUgb2ZmcyBpbgorICAgICAgICAgICAgbWluZCB0aGF0IGNhbiBoZWxwIHlvdSBzcGVlZCB1cCB0aGUgYnVpbGQ6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgUmVtb3ZlIGl0ZW1zIGZyb20KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURJU1RST19GRUFUVVJFUyc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGhhdCB5b3UgbWlnaHQgbm90IG5lZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRXhjbHVkZSBkZWJ1ZyBzeW1ib2xzIGFuZCBvdGhlciBkZWJ1ZyBpbmZvcm1hdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBuZWVkIHRoZXNlIHN5bWJvbHMgYW5kIG90aGVyIGRlYnVnIGluZm9ybWF0aW9uLAorICAgICAgICAgICAgICAgICAgICBkaXNhYmxpbmcgdGhlIDxmaWxlbmFtZT4qLWRiZzwvZmlsZW5hbWU+IHBhY2thZ2UgZ2VuZXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBjYW4gc3BlZWQgdXAgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGRpc2FibGUgdGhpcyBnZW5lcmF0aW9uIGJ5IHNldHRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQnPjxmaWxlbmFtZT5JTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvICIxIi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEaXNhYmxlIHN0YXRpYyBsaWJyYXJ5IGdlbmVyYXRpb24gZm9yIHJlY2lwZXMgZGVyaXZlZCBmcm9tCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvY29uZjwvZmlsZW5hbWU+IG9yIDxmaWxlbmFtZT5saWJ0b29sPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHNob3dpbmcgaG93IHRvIGRpc2FibGUgc3RhdGljCisgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcyBhbmQgc3RpbGwgcHJvdmlkZSBhbiBvdmVycmlkZSB0byBoYW5kbGUgZXhjZXB0aW9uczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTVEFUSUNMSUJDT05GID0gIi0tZGlzYWJsZS1zdGF0aWMiCisgICAgIFNUQVRJQ0xJQkNPTkZfc3FsaXRlMy1uYXRpdmUgPSAiIgorICAgICBFWFRSQV9PRUNPTkYgKz0gIiR7U1RBVElDTElCQ09ORn0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lIHJlY2lwZXMgbmVlZCBzdGF0aWMgbGlicmFyaWVzIGluIG9yZGVyIHRvIHdvcmsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ycmVjdGx5IChlLmcuIDxmaWxlbmFtZT5wc2V1ZG8tbmF0aXZlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZHMgPGZpbGVuYW1lPnNxbGl0ZTMtbmF0aXZlPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdmVycmlkZXMsIGFzIGluIHRoZSBwcmV2aW91cyBleGFtcGxlLCBhY2NvdW50IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVzZSBraW5kcyBvZiBleGNlcHRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgcGFja2FnZXMgaGF2ZSBwYWNrYWdpbmcgY29kZSB0aGF0IGFzc3VtZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlbmNlIG9mIHRoZSBzdGF0aWMgbGlicmFyaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBzbywgeW91IG1pZ2h0IG5lZWQgdG8gZXhjbHVkZSB0aGVtIGFzIHdlbGwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgpAQCAtNDU0Myw2ICs2NzIzLDg0IEBACiAgICAgICAgIDwvc2VjdGlvbj4KICAgICA8L3NlY3Rpb24+CiAKKyAgICA8c2VjdGlvbiBpZD0ndXNpbmcteDMyLXBzYWJpJz4KKyAgICAgICAgPHRpdGxlPlVzaW5nIHgzMiBwc0FCSTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICB4MzIgcHJvY2Vzc29yLXNwZWNpZmljIEFwcGxpY2F0aW9uIEJpbmFyeSBJbnRlcmZhY2UKKyAgICAgICAgICAgICg8dWxpbmsgdXJsPSdodHRwczovL3NvZnR3YXJlLmludGVsLmNvbS9lbi11cy9ub2RlLzYyODk0OCc+eDMyIHBzQUJJPC91bGluaz4pCisgICAgICAgICAgICBpcyBhIG5hdGl2ZSAzMi1iaXQgcHJvY2Vzc29yLXNwZWNpZmljIEFCSSBmb3IKKyAgICAgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3JlZ2lzdGVyZWQnPkludGVsPC90cmFkZW1hcms+IDY0ICh4ODYtNjQpCisgICAgICAgICAgICBhcmNoaXRlY3R1cmVzLgorICAgICAgICAgICAgQW4gQUJJIGRlZmluZXMgdGhlIGNhbGxpbmcgY29udmVudGlvbnMgYmV0d2VlbiBmdW5jdGlvbnMgaW4gYQorICAgICAgICAgICAgcHJvY2Vzc2luZyBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIFRoZSBpbnRlcmZhY2UgZGV0ZXJtaW5lcyB3aGF0IHJlZ2lzdGVycyBhcmUgdXNlZCBhbmQgd2hhdCB0aGUKKyAgICAgICAgICAgIHNpemVzIGFyZSBmb3IgdmFyaW91cyBDIGRhdGEgdHlwZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFNvbWUgcHJvY2Vzc2luZyBlbnZpcm9ubWVudHMgcHJlZmVyIHVzaW5nIDMyLWJpdCBhcHBsaWNhdGlvbnMgZXZlbgorICAgICAgICAgICAgd2hlbiBydW5uaW5nIG9uIEludGVsIDY0LWJpdCBwbGF0Zm9ybXMuCisgICAgICAgICAgICBDb25zaWRlciB0aGUgaTM4NiBwc0FCSSwgd2hpY2ggaXMgYSB2ZXJ5IG9sZCAzMi1iaXQgQUJJIGZvciBJbnRlbAorICAgICAgICAgICAgNjQtYml0IHBsYXRmb3Jtcy4KKyAgICAgICAgICAgIFRoZSBpMzg2IHBzQUJJIGRvZXMgbm90IHByb3ZpZGUgZWZmaWNpZW50IHVzZSBhbmQgYWNjZXNzIG9mIHRoZQorICAgICAgICAgICAgSW50ZWwgNjQtYml0IHByb2Nlc3NvciByZXNvdXJjZXMsIGxlYXZpbmcgdGhlIHN5c3RlbSB1bmRlcnV0aWxpemVkLgorICAgICAgICAgICAgTm93IGNvbnNpZGVyIHRoZSB4ODZfNjQgcHNBQkkuCisgICAgICAgICAgICBUaGlzIEFCSSBpcyBuZXdlciBhbmQgdXNlcyA2NC1iaXRzIGZvciBkYXRhIHNpemVzIGFuZCBwcm9ncmFtCisgICAgICAgICAgICBwb2ludGVycy4KKyAgICAgICAgICAgIFRoZSBleHRyYSBiaXRzIGluY3JlYXNlIHRoZSBmb290cHJpbnQgc2l6ZSBvZiB0aGUgcHJvZ3JhbXMsCisgICAgICAgICAgICBsaWJyYXJpZXMsIGFuZCBhbHNvIGluY3JlYXNlcyB0aGUgbWVtb3J5IGFuZCBmaWxlIHN5c3RlbSBzaXplCisgICAgICAgICAgICByZXF1aXJlbWVudHMuCisgICAgICAgICAgICBFeGVjdXRpbmcgdW5kZXIgdGhlIHgzMiBwc0FCSSBlbmFibGVzIHVzZXIgcHJvZ3JhbXMgdG8gdXRpbGl6ZSBDUFUKKyAgICAgICAgICAgIGFuZCBzeXN0ZW0gcmVzb3VyY2VzIG1vcmUgZWZmaWNpZW50bHkgd2hpbGUga2VlcGluZyB0aGUgbWVtb3J5CisgICAgICAgICAgICBmb290cHJpbnQgb2YgdGhlIGFwcGxpY2F0aW9ucyBsb3cuCisgICAgICAgICAgICBFeHRyYSBiaXRzIGFyZSB1c2VkIGZvciByZWdpc3RlcnMgYnV0IG5vdCBmb3IgYWRkcmVzc2luZyBtZWNoYW5pc21zLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyB0aGUgZmluYWwgc3BlY2lmaWNhdGlvbnMgb2YgeDMyIHBzQUJJCisgICAgICAgICAgICBhcyBmb2xsb3dzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY3JlYXRlIHBhY2thZ2VzIGFuZCBpbWFnZXMgaW4geDMyIHBzQUJJIGZvcm1hdCBvbgorICAgICAgICAgICAgICAgICAgICB4ODZfNjQgYXJjaGl0ZWN0dXJlIHRhcmdldHMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzdWNjZXNzZnVsbHkgYnVpbGQgcmVjaXBlcyB3aXRoIHRoZSB4MzIgdG9vbGNoYWluLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY3JlYXRlIGFuZCBib290CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+IGltYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBSUE0gUGFja2FnZSBNYW5hZ2VyIChSUE0pIHN1cHBvcnQgZXhpc3RzIGZvciB4MzIgYmluYXJpZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU3VwcG9ydCBmb3IgbGFyZ2UgaW1hZ2VzIGV4aXN0cy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG8gdXNlIHRoZSB4MzIgcHNBQkksIHlvdSBuZWVkIHRvIGVkaXQgeW91cgorICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gZmlsZSBhcworICAgICAgICAgICAgZm9sbG93czoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTUFDSElORSA9ICJxZW11eDg2LTY0IgorICAgICBERUZBVUxUVFVORSA9ICJ4ODYtNjQteDMyIgorICAgICBiYXNlbGliID0gIiR7QGQuZ2V0VmFyKCdCQVNFX0xJQl90dW5lLScgKyAoZC5nZXRWYXIoJ0RFRkFVTFRUVU5FJywgVHJ1ZSkgXAorICAgICAgICBvciAnSU5WQUxJRCcpLCBUcnVlKSBvciAnbGliJ30iCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHNldCB1cCB5b3VyIGNvbmZpZ3VyYXRpb24gZmlsZSwgdXNlIEJpdEJha2UgdG8KKyAgICAgICAgICAgIGJ1aWxkIGFuIGltYWdlIHRoYXQgc3VwcG9ydHMgdGhlIHgzMiBwc0FCSS4KKyAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIGNvcmUtaW1hZ2Utc2F0bworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCiAgICAgPHNlY3Rpb24gaWQ9J2VuYWJsaW5nLWdvYmplY3QtaW50cm9zcGVjdGlvbi1zdXBwb3J0Jz4KICAgICAgICAgPHRpdGxlPkVuYWJsaW5nIEdPYmplY3QgSW50cm9zcGVjdGlvbiBTdXBwb3J0PC90aXRsZT4KIApAQCAtNDc5NSw4ICs3MDUzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgU2V0IHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRVhURVJOQUxfVE9PTENIQUlOJz48ZmlsZW5hbWU+RVhURVJOQUxfVE9PTENIQUlOPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBTZXQgdGhlIDxmaWxlbmFtZT5FWFRFUk5BTF9UT09MQ0hBSU48L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZQogICAgICAgICAgICAgICAgICAgICB0byB0aGUgbG9jYXRpb24gaW4gd2hpY2ggeW91IGluc3RhbGxlZCB0aGUgdG9vbGNoYWluLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KQEAgLTQ4NDYsNyArNzEwMyw3IEBACiAgICAgICAgICAgICBzeXN0ZW0uCiAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICBGb3IgYSBraWNrc3RhcnQgZmlsZSByZWZlcmVuY2UsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjb3BlbmVtYmVkZGVkLWtpY2tzdGFydC13a3MtcmVmZXJlbmNlJz5PcGVuRW1iZWRkZWQgS2lja3N0YXJ0ICg8ZmlsZW5hbWU+LndrczwvZmlsZW5hbWU+KSBSZWZlcmVuY2U8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWtpY2tzdGFydCc+T3BlbkVtYmVkZGVkIEtpY2tzdGFydCAoPGZpbGVuYW1lPi53a3M8L2ZpbGVuYW1lPikgUmVmZXJlbmNlPC91bGluaz4iCiAgICAgICAgICAgICAgICAgQ2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgogICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L3BhcmE+CkBAIC00ODU4LDE2ICs3MTE1LDE3IEBACiAgICAgICAgICAgICBjdXN0b21pemVkIGltYWdlcywgYW5kIGFzIHN1Y2gsIHdhcyBkZXNpZ25lZCB0byBiZQogICAgICAgICAgICAgY29tcGxldGVseSBleHRlbnNpYmxlIHRocm91Z2ggYSBwbHVnLWluIGludGVyZmFjZS4KICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN3aWMtcGx1Zy1pbnMtaW50ZXJmYWNlJz5XaWMgUGx1Zy1JbnMgSW50ZXJmYWNlPC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgZm9yIGluZm9ybWF0aW9uCi0gICAgICAgICAgICBvbiB0aGVzZSBwbHVnLWlucy4KKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd3aWMtdXNpbmctdGhlLXdpYy1wbHVnLWlucy1pbnRlcmZhY2UnPlVzaW5nIHRoZSBXaWMgUGx1Zy1JbnMgSW50ZXJmYWNlPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIG9uIHRoZXNlIHBsdWctaW5zLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgc29tZSBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIG9uIFdpYywKICAgICAgICAgICAgIGRlc2NyaWJlcyB3aGF0IHlvdSBuZWVkIHRvIGhhdmUgaW4KICAgICAgICAgICAgIHBsYWNlIHRvIHJ1biB0aGUgdG9vbCwgcHJvdmlkZXMgaW5zdHJ1Y3Rpb24gb24gaG93IHRvIHVzZQotICAgICAgICAgICAgdGhlIFdpYyB1dGlsaXR5LCBhbmQgcHJvdmlkZXMgc2V2ZXJhbCBleGFtcGxlcy4KKyAgICAgICAgICAgIHRoZSBXaWMgdXRpbGl0eSwgcHJvdmlkZXMgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlIFdpYyBwbHVnLWlucworICAgICAgICAgICAgaW50ZXJmYWNlLCBhbmQgcHJvdmlkZXMgc2V2ZXJhbCBleGFtcGxlcyB0aGF0IHNob3cgaG93IHRvIHVzZQorICAgICAgICAgICAgV2ljLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHNlY3Rpb24gaWQ9J3dpYy1iYWNrZ3JvdW5kJz4KQEAgLTQ4OTksNyArNzE1Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBXaWMgaXMgYSBjb21wbGV0ZWx5IGluZGVwZW5kZW50CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFuZGFsb25lIHV0aWxpdHkgdGhhdCBpbml0aWFsbHkgcHJvdmlkZXMKICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2llci10by11c2UgYW5kIG1vcmUgZmxleGlibGUgcmVwbGFjZW1lbnRzIGZvciBhbgotICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgZnVuY3Rpb25hbGl0eSBpbiBPRSBDb3JlJ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHkgaW4gT0UtQ29yZSdzCiAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1pbWFnZS1saXZlJz48ZmlsZW5hbWU+aW1hZ2UtbGl2ZTwvZmlsZW5hbWU+PC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzIGFuZCA8ZmlsZW5hbWU+bWtlZmlkaXNrLnNoPC9maWxlbmFtZT4gc2NyaXB0LgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbgpAQCAtNDk4OCw2ICs3MjQ2LDcgQEAKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgd2ljIC1oCiAgICAgICQgd2ljIC0taGVscAorICAgICAkIHdpYyBoZWxwCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgPC9wYXJhPgogCkBAIC00OTk3LDUxICs3MjU2LDY2IEBACiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmhlbHA8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmxpc3Q8L2ZpbGVuYW1lPiwKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bHM8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPnJtPC9maWxlbmFtZT4sIGFuZAogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT53cml0ZTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIFlvdSBjYW4gZ2V0IGhlbHAgZm9yIHRoZXNlIGNvbW1hbmRzIGFzIGZvbGxvd3Mgd2l0aAotICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5jb21tYW5kPC9yZXBsYWNlYWJsZT4gYmVpbmcgb25lIG9mIHRoZQotICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBjb21tYW5kczoKKyAgICAgICAgICAgICAgICBZb3UgY2FuIGdldCBoZWxwIGZvciBhbGwgdGhlc2UgY29tbWFuZHMgZXhjZXB0ICJoZWxwIiBieQorICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBmb2xsb3dpbmcgZm9ybToKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgd2ljIGhlbHAgPHJlcGxhY2VhYmxlPmNvbW1hbmQ8L3JlcGxhY2VhYmxlPgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIGdldCBkZXRhaWxlZCBoZWxwIG9uIGEgbnVtYmVyIG9mIHRvcGljcwotICAgICAgICAgICAgICAgIGZyb20gdGhlIGhlbHAgc3lzdGVtLgotICAgICAgICAgICAgICAgIFRoZSBvdXRwdXQgb2YgPGZpbGVuYW1lPndpYyAtLWhlbHA8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGRpc3BsYXlzIGEgbGlzdCBvZiBhdmFpbGFibGUgaGVscAotICAgICAgICAgICAgICAgIHRvcGljcyB1bmRlciBhICJIZWxwIHRvcGljcyIgaGVhZGluZy4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIGhhdmUgdGhlIGhlbHAgc3lzdGVtIGRpc3BsYXkgdGhlIGhlbHAgdGV4dCBmb3IKLSAgICAgICAgICAgICAgICBhIGdpdmVuIHRvcGljIGJ5IHByZWZhY2luZyB0aGUgdG9waWMgd2l0aAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT53aWMgaGVscDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgcmV0dXJucyBoZWxwIGZvciB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+d3JpdGU8L2ZpbGVuYW1lPiBjb21tYW5kOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCB3aWMgaGVscCA8cmVwbGFjZWFibGU+aGVscF90b3BpYzwvcmVwbGFjZWFibGU+CisgICAgICQgd2ljIGhlbHAgd3JpdGUKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBvdXQgbW9yZSBhYm91dCB0aGUgaW1hZ2VzIFdpYyBjcmVhdGVzIHVzaW5nCi0gICAgICAgICAgICAgICAgdGhlIGV4aXN0aW5nIGtpY2tzdGFydCBmaWxlcyB3aXRoIHRoZSBmb2xsb3dpbmcgZm9ybSBvZgotICAgICAgICAgICAgICAgIHRoZSBjb21tYW5kOgorICAgICAgICAgICAgICAgIFdpYyBzdXBwb3J0cyBoZWxwIGZvciB0aHJlZSB0b3BpY3M6CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm92ZXJ2aWV3PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBsdWdpbnM8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmtpY2tzdGFydDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZ2V0IGhlbHAgZm9yIGFueSB0b3BpYyB1c2luZyB0aGUgZm9sbG93aW5nIGZvcm06CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHdpYyBsaXN0IDxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+IGhlbHAKKyAgICAgJCB3aWMgaGVscCA8cmVwbGFjZWFibGU+dG9waWM8L3JlcGxhY2VhYmxlPgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBGb3IgPHJlcGxhY2VhYmxlPmltYWdlPC9yZXBsYWNlYWJsZT4sIHlvdSBjYW4gcHJvdmlkZQotICAgICAgICAgICAgICAgIGFueSBvZiB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHJldHVybnMgb3ZlcnZpZXcgaGVscCBmb3IgV2ljOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgICBiZWFnbGVib25lCi0gICAgICAgbXBjODMxNWUtcmRiCi0gICAgICAgZ2VuZXJpY3g4NgotICAgICAgIGVkZ2Vyb3V0ZXIKLSAgICAgICBxZW11eDg2LWRpcmVjdGRpc2sKLSAgICAgICBkaXJlY3RkaXNrLWdwdAotICAgICAgIG1rZWZpZGlzawotICAgICAgIGRpcmVjdGRpc2sKLSAgICAgICBzeXN0ZW1kLWJvb3RkaXNrCi0gICAgICAgbWtoeWJyaWRpc28KLSAgICAgICBzZGltYWdlLWJvb3RwYXJ0Ci0gICAgICAgZGlyZWN0ZGlzay1tdWx0aS1yb290ZnMKLSAgICAgICBkaXJlY3RkaXNrLWJvb3Rsb2FkZXItY29uZmlnCisgICAgICQgd2ljIGhlbHAgb3ZlcnZpZXcKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIE9uZSBhZGRpdGlvbmFsIGxldmVsIG9mIGhlbHAgZXhpc3RzIGZvciBXaWMuCisgICAgICAgICAgICAgICAgWW91IGNhbiBnZXQgaGVscCBvbiBpbmRpdmlkdWFsIGltYWdlcyB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saXN0PC9maWxlbmFtZT4gY29tbWFuZC4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPmxpc3Q8L2ZpbGVuYW1lPiBjb21tYW5kIHRvIHJldHVybiB0aGUKKyAgICAgICAgICAgICAgICBhdmFpbGFibGUgV2ljIGltYWdlcyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB3aWMgbGlzdCBpbWFnZXMKKyAgICAgICBtcGM4MzE1ZS1yZGIgICAgICAgICAgICAgICAgICAJCUNyZWF0ZSBTRCBjYXJkIGltYWdlIGZvciBNUEM4MzE1RS1SREIKKyAgICAgICBnZW5lcmljeDg2ICAgICAgICAgICAgICAgICAgICAJCUNyZWF0ZSBhbiBFRkkgZGlzayBpbWFnZSBmb3IgZ2VuZXJpY3g4NioKKyAgICAgICBiZWFnbGVib25lLXlvY3RvICAgICAgICAgICAgICAJCUNyZWF0ZSBTRCBjYXJkIGltYWdlIGZvciBCZWFnbGVib25lCisgICAgICAgZWRnZXJvdXRlciAgICAgICAgICAgICAgICAgICAgCQlDcmVhdGUgU0QgY2FyZCBpbWFnZSBmb3IgRWRnZXJvdXRlcgorICAgICAgIHFlbXV4ODYtZGlyZWN0ZGlzayAgICAgICAgICAgIAkJQ3JlYXRlIGEgcWVtdSBtYWNoaW5lICdwY2Jpb3MnIGRpcmVjdCBkaXNrIGltYWdlCisgICAgICAgZGlyZWN0ZGlzay1ncHQgICAgICAgICAgICAgICAgCQlDcmVhdGUgYSAncGNiaW9zJyBkaXJlY3QgZGlzayBpbWFnZQorICAgICAgIG1rZWZpZGlzayAgICAgICAgICAgICAgICAgICAgIAkJQ3JlYXRlIGFuIEVGSSBkaXNrIGltYWdlCisgICAgICAgZGlyZWN0ZGlzayAgICAgICAgICAgICAgICAgICAgCQlDcmVhdGUgYSAncGNiaW9zJyBkaXJlY3QgZGlzayBpbWFnZQorICAgICAgIHN5c3RlbWQtYm9vdGRpc2sgICAgICAgICAgICAgIAkJQ3JlYXRlIGFuIEVGSSBkaXNrIGltYWdlIHdpdGggc3lzdGVtZC1ib290CisgICAgICAgbWtoeWJyaWRpc28gICAgICAgICAgICAgICAgICAgCQlDcmVhdGUgYSBoeWJyaWQgSVNPIGltYWdlCisgICAgICAgc2RpbWFnZS1ib290cGFydCAgICAgICAgICAgICAgCQlDcmVhdGUgU0QgY2FyZCBpbWFnZSB3aXRoIGEgYm9vdCBwYXJ0aXRpb24KKyAgICAgICBkaXJlY3RkaXNrLW11bHRpLXJvb3RmcyAgICAgICAJCUNyZWF0ZSBtdWx0aSByb290ZnMgaW1hZ2UgdXNpbmcgcm9vdGZzIHBsdWdpbgorICAgICAgIGRpcmVjdGRpc2stYm9vdGxvYWRlci1jb25maWcgIAkJQ3JlYXRlIGEgJ3BjYmlvcycgZGlyZWN0IGRpc2sgaW1hZ2Ugd2l0aCBjdXN0b20gYm9vdGxvYWRlciBjb25maWcKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgT25jZSB5b3Uga25vdyB0aGUgbGlzdCBvZiBhdmFpbGFibGUgV2ljIGltYWdlcywgeW91IGNhbiB1c2UKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aGVscDwvZmlsZW5hbWU+IHdpdGggdGhlIGNvbW1hbmQgdG8gZ2V0IGhlbHAgb24gYQorICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIgaW1hZ2UuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZCByZXR1cm5zIGhlbHAgb24gdGhlCisgICAgICAgICAgICAgICAgImJlYWdsZWJvbmUteW9jdG8iIGltYWdlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB3aWMgbGlzdCBiZWFnbGVib25lLXlvY3RvIGhlbHAKKworCisgICAgIENyZWF0ZXMgYSBwYXJ0aXRpb25lZCBTRCBjYXJkIGltYWdlIGZvciBCZWFnbGVib25lLgorICAgICBCb290IGZpbGVzIGFyZSBsb2NhdGVkIGluIHRoZSBmaXJzdCB2ZmF0IHBhcnRpdGlvbi4KICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KQEAgLTUwNTgsNyArNzMzMiw3IEBACiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SYXcgTW9kZTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgWW91IGV4cGxpY2l0bHkgc3BlY2lmeSBidWlsZCBhcnRpZmFjdHMgdGhyb3VnaAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+IGNvbW1hbmQtbGluZSBhcmd1bWVudHMuCisgICAgICAgICAgICAgICAgICAgICAgICBXaWMgY29tbWFuZC1saW5lIGFyZ3VtZW50cy4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29va2VkIE1vZGU6PC9lbXBoYXNpcz4KQEAgLTUxNTMsNyArNzQyNyw3IEBACiAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgUnVubmluZyBXaWMgaW4gY29va2VkIG1vZGUgbGV2ZXJhZ2VzIG9mZiBhcnRpZmFjdHMgaW4KLSAgICAgICAgICAgICAgICAgICAgQnVpbGQgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICB0aGUgQnVpbGQgRGlyZWN0b3J5LgogICAgICAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgeW91IGRvIG5vdCBoYXZlIHRvIHNwZWNpZnkga2VybmVsIG9yCiAgICAgICAgICAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbSBsb2NhdGlvbnMgYXMgcGFydCBvZiB0aGUgY29tbWFuZC4KICAgICAgICAgICAgICAgICAgICAgQWxsIHlvdSBuZWVkIHRvIHByb3ZpZGUgaXMgYSBraWNrc3RhcnQgZmlsZSBhbmQgdGhlCkBAIC01MTk1LDcgKzc0NjksNyBAQAogICAgICAgICAgICAgICAgIGNhbiB1c2UgYW4gZXhpc3RpbmcgZmlsZSBwcm92aWRlZCBieSB0aGUgV2ljIGluc3RhbGxhdGlvbi4KICAgICAgICAgICAgICAgICBBcyBzaGlwcGVkLCBraWNrc3RhcnQgZmlsZXMgY2FuIGJlIGZvdW5kIGluIHRoZQogICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgogICAgICAgICAgICAgICAgIGluIHRoZSBmb2xsb3dpbmcgdHdvIGxvY2F0aW9uczoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIHBva3kvbWV0YS15b2N0by1ic3Avd2ljCkBAIC01MjA1LDkgKzc0NzksOSBAQAogICAgICAgICAgICAgICAgIGZpbGVzOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCB3aWMgbGlzdCBpbWFnZXMKLSAgICAgICBiZWFnbGVib25lICAgICAgICAgICAgICAgICAgICAJCUNyZWF0ZSBTRCBjYXJkIGltYWdlIGZvciBCZWFnbGVib25lCiAgICAgICAgbXBjODMxNWUtcmRiICAgICAgICAgICAgICAgICAgCQlDcmVhdGUgU0QgY2FyZCBpbWFnZSBmb3IgTVBDODMxNUUtUkRCCiAgICAgICAgZ2VuZXJpY3g4NiAgICAgICAgICAgICAgICAgICAgCQlDcmVhdGUgYW4gRUZJIGRpc2sgaW1hZ2UgZm9yIGdlbmVyaWN4ODYqCisgICAgICAgYmVhZ2xlYm9uZS15b2N0byAgICAgICAgICAgICAgCQlDcmVhdGUgU0QgY2FyZCBpbWFnZSBmb3IgQmVhZ2xlYm9uZQogICAgICAgIGVkZ2Vyb3V0ZXIgICAgICAgICAgICAgICAgICAgIAkJQ3JlYXRlIFNEIGNhcmQgaW1hZ2UgZm9yIEVkZ2Vyb3V0ZXIKICAgICAgICBxZW11eDg2LWRpcmVjdGRpc2sgICAgICAgICAgICAJCUNyZWF0ZSBhIHFlbXUgbWFjaGluZSAncGNiaW9zJyBkaXJlY3QgZGlzayBpbWFnZQogICAgICAgIGRpcmVjdGRpc2stZ3B0ICAgICAgICAgICAgICAgIAkJQ3JlYXRlIGEgJ3BjYmlvcycgZGlyZWN0IGRpc2sgaW1hZ2UKQEAgLTUyNDUsNiArNzUxOSwyMDkgQEAKICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogCisgICAgICAgIDxzZWN0aW9uIGlkPSd3aWMtdXNpbmctdGhlLXdpYy1wbHVnLWlucy1pbnRlcmZhY2UnPgorICAgICAgICAgICAgPHRpdGxlPlVzaW5nIHRoZSBXaWMgUGx1Zy1JbnMgSW50ZXJmYWNlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiBleHRlbmQgYW5kIHNwZWNpYWxpemUgV2ljIGZ1bmN0aW9uYWxpdHkgYnkgdXNpbmcKKyAgICAgICAgICAgICAgICBXaWMgcGx1Zy1pbnMuCisgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGV4cGxhaW5zIHRoZSBXaWMgcGx1Zy1pbiBpbnRlcmZhY2UuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFdpYyBwbHVnLWlucyBjb25zaXN0IG9mICJzb3VyY2UiIGFuZCAiaW1hZ2VyIiBwbHVnLWlucy4KKyAgICAgICAgICAgICAgICAgICAgSW1hZ2VyIHBsdWctaW5zIGFyZSBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoaXMgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFNvdXJjZSBwbHVnLWlucyBwcm92aWRlIGEgbWVjaGFuaXNtIHRvIGN1c3RvbWl6ZSBwYXJ0aXRpb24KKyAgICAgICAgICAgICAgICBjb250ZW50IGR1cmluZyB0aGUgV2ljIGltYWdlIGdlbmVyYXRpb24gcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSBzb3VyY2UgcGx1Zy1pbnMgdG8gbWFwIHZhbHVlcyB0aGF0IHlvdSBzcGVjaWZ5CisgICAgICAgICAgICAgICAgdXNpbmcgPGZpbGVuYW1lPi0tc291cmNlPC9maWxlbmFtZT4gY29tbWFuZHMgaW4ga2lja3N0YXJ0CisgICAgICAgICAgICAgICAgZmlsZXMgKGkuZS4gPGZpbGVuYW1lPioud2tzPC9maWxlbmFtZT4pIHRvIGEgcGx1Zy1pbgorICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uIHVzZWQgdG8gcG9wdWxhdGUgYSBnaXZlbiBwYXJ0aXRpb24uCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB1c2UgcGx1Zy1pbnMgdGhhdCBoYXZlIGJ1aWxkLXRpbWUgZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAgICAgICAgIChlLmcuIG5hdGl2ZSB0b29scywgYm9vdGxvYWRlcnMsIGFuZCBzbyBmb3J0aCkKKyAgICAgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyBhIFdpYyBpbWFnZSwgeW91IG5lZWQgdG8gc3BlY2lmeSB0aG9zZQorICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XS1NfRklMRV9ERVBFTkRTJz48ZmlsZW5hbWU+V0tTX0ZJTEVfREVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTb3VyY2UgcGx1Zy1pbnMgYXJlIHN1YmNsYXNzZXMgZGVmaW5lZCBpbiBwbHVnLWluIGZpbGVzLgorICAgICAgICAgICAgICAgIEFzIHNoaXBwZWQsIHRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzIHNldmVyYWwgcGx1Zy1pbgorICAgICAgICAgICAgICAgIGZpbGVzLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIHRoZSBzb3VyY2UgcGx1Zy1pbiBmaWxlcyB0aGF0IHNoaXAgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlL3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZSc+aGVyZTwvdWxpbms+LgorICAgICAgICAgICAgICAgIEVhY2ggb2YgdGhlc2UgcGx1Zy1pbiBmaWxlcyBjb250YWlucyBzb3VyY2UgcGx1Zy1pbnMgdGhhdAorICAgICAgICAgICAgICAgIGFyZSBkZXNpZ25lZCB0byBwb3B1bGF0ZSBhIHNwZWNpZmljIFdpYyBpbWFnZSBwYXJ0aXRpb24uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFNvdXJjZSBwbHVnLWlucyBhcmUgc3ViY2xhc3NlcyBvZiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3MsIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgZGVmaW5lZCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2luYmFzZS5weTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIDxmaWxlbmFtZT5Cb290aW1nRUZJUGx1Z2luPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBzb3VyY2UgcGx1Zy1pbiBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ym9vdGltZy1lZmkucHk8L2ZpbGVuYW1lPiBmaWxlIGlzIGEgc3ViY2xhc3Mgb2YKKyAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPlNvdXJjZVBsdWdpbjwvZmlsZW5hbWU+IGNsYXNzLCB3aGljaCBpcyBmb3VuZAorICAgICAgICAgICAgICAgIGluIHRoZSA8ZmlsZW5hbWU+cGx1Z2luYmFzZS5weTwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBpbXBsZW1lbnQgc291cmNlIHBsdWctaW5zIGluIGEgbGF5ZXIgb3V0c2lkZQorICAgICAgICAgICAgICAgIG9mIHRoZSBTb3VyY2UgUmVwb3NpdG9yaWVzIChleHRlcm5hbCBsYXllcikuCisgICAgICAgICAgICAgICAgVG8gZG8gc28sIGJlIHN1cmUgdGhhdCB5b3VyIHBsdWctaW4gZmlsZXMgYXJlIGxvY2F0ZWQgaW4KKyAgICAgICAgICAgICAgICBhIGRpcmVjdG9yeSB3aG9zZSBwYXRoIGlzCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS88L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHdpdGhpbiB5b3VyIGV4dGVybmFsIGxheWVyLgorICAgICAgICAgICAgICAgIFdoZW4gdGhlIHBsdWctaW4gZmlsZXMgYXJlIGxvY2F0ZWQgdGhlcmUsIHRoZSBzb3VyY2UKKyAgICAgICAgICAgICAgICBwbHVnLWlucyB0aGV5IGNvbnRhaW4gYXJlIG1hZGUgYXZhaWxhYmxlIHRvIFdpYy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hlbiB0aGUgV2ljIGltcGxlbWVudGF0aW9uIG5lZWRzIHRvIGludm9rZSBhCisgICAgICAgICAgICAgICAgcGFydGl0aW9uLXNwZWNpZmljIGltcGxlbWVudGF0aW9uLCBpdCBsb29rcyBmb3IgdGhlIHBsdWctaW4KKyAgICAgICAgICAgICAgICB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIDxmaWxlbmFtZT4tLXNvdXJjZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgcGFyYW1ldGVyIHVzZWQgaW4gdGhlIGtpY2tzdGFydCBmaWxlIGdpdmVuIHRvIHRoYXQKKyAgICAgICAgICAgICAgICBwYXJ0aXRpb24uCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHRoZSBwYXJ0aXRpb24gaXMgc2V0IHVwIHVzaW5nIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICBjb21tYW5kIGluIGEga2lja3N0YXJ0IGZpbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBwYXJ0IC9ib290IC0tc291cmNlIGJvb3RpbWctcGNiaW9zIC0tb25kaXNrIHNkYSAtLWxhYmVsIGJvb3QgLS1hY3RpdmUgLS1hbGlnbiAxMDI0CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSBtZXRob2RzIGRlZmluZWQgYXMgY2xhc3MgbWVtYmVycyBvZiB0aGUgbWF0Y2hpbmcKKyAgICAgICAgICAgICAgICBzb3VyY2UgcGx1Zy1pbiAoaS5lLiA8ZmlsZW5hbWU+Ym9vdGltZy1wY2Jpb3M8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICBpbiB0aGUgPGZpbGVuYW1lPmJvb3RpbWctcGNiaW9zLnB5PC9maWxlbmFtZT4gcGx1Zy1pbiBmaWxlCisgICAgICAgICAgICAgICAgYXJlIHVzZWQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIGJlIG1vcmUgY29uY3JldGUsIGhlcmUgaXMgdGhlIGNvcnJlc3BvbmRpbmcgcGx1Zy1pbgorICAgICAgICAgICAgICAgIGRlZmluaXRpb24gZnJvbSB0aGUgPGZpbGVuYW1lPmJvb3RpbWctcGNiaW9zLnB5PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmaWxlIGZvciB0aGUgcHJldmlvdXMgY29tbWFuZCBhbG9uZyB3aXRoIGFuIGV4YW1wbGUKKyAgICAgICAgICAgICAgICBtZXRob2QgY2FsbGVkIGJ5IHRoZSBXaWMgaW1wbGVtZW50YXRpb24gd2hlbiBpdCBuZWVkcyB0bworICAgICAgICAgICAgICAgIHByZXBhcmUgYSBwYXJ0aXRpb24gdXNpbmcgYW4gaW1wbGVtZW50YXRpb24tc3BlY2lmaWMKKyAgICAgICAgICAgICAgICBmdW5jdGlvbjoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAgICAuCisgICAgIGNsYXNzIEJvb3RpbWdQY2Jpb3NQbHVnaW4oU291cmNlUGx1Z2luKToKKyAgICAgICAgICIiIgorICAgICAgICAgQ3JlYXRlIE1CUiBib290IHBhcnRpdGlvbiBhbmQgaW5zdGFsbCBzeXNsaW51eCBvbiBpdC4KKyAgICAgICAgICIiIgorCisgICAgICAgICBuYW1lID0gJ2Jvb3RpbWctcGNiaW9zJworICAgICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgICAgICAgLgorICAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgICBkZWYgZG9fcHJlcGFyZV9wYXJ0aXRpb24oY2xzLCBwYXJ0LCBzb3VyY2VfcGFyYW1zLCBjcmVhdG9yLCBjcl93b3JrZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9lX2J1aWxkZGlyLCBib290aW1nX2Rpciwga2VybmVsX2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290ZnNfZGlyLCBuYXRpdmVfc3lzcm9vdCk6CisgICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgQ2FsbGVkIHRvIGRvIHRoZSBhY3R1YWwgY29udGVudCBwb3B1bGF0aW9uIGZvciBhIHBhcnRpdGlvbiBpLmUuIGl0CisgICAgICAgICAgICAgJ3ByZXBhcmVzJyB0aGUgcGFydGl0aW9uIHRvIGJlIGluY29ycG9yYXRlZCBpbnRvIHRoZSBpbWFnZS4KKyAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHByZXBhcmUgY29udGVudCBmb3IgbGVnYWN5IGJpb3MgYm9vdCBwYXJ0aXRpb24uCisgICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIElmIGEgc3ViY2xhc3MgKHBsdWctaW4pIGl0c2VsZiBkb2VzIG5vdCBpbXBsZW1lbnQgYQorICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIgZnVuY3Rpb24sIFdpYyBsb2NhdGVzIGFuZCB1c2VzIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgdmVyc2lvbiBpbiB0aGUgc3VwZXJjbGFzcy4KKyAgICAgICAgICAgICAgICBJdCBpcyBmb3IgdGhpcyByZWFzb24gdGhhdCBhbGwgc291cmNlIHBsdWctaW5zIGFyZSBkZXJpdmVkCisgICAgICAgICAgICAgICAgZnJvbSB0aGUgPGZpbGVuYW1lPlNvdXJjZVBsdWdpbjwvZmlsZW5hbWU+IGNsYXNzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlNvdXJjZVBsdWdpbjwvZmlsZW5hbWU+IGNsYXNzIGRlZmluZWQgaW4KKyAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPnBsdWdpbmJhc2UucHk8L2ZpbGVuYW1lPiBmaWxlIGRlZmluZXMKKyAgICAgICAgICAgICAgICBhIHNldCBvZiBtZXRob2RzIHRoYXQgc291cmNlIHBsdWctaW5zIGNhbiBpbXBsZW1lbnQgb3IKKyAgICAgICAgICAgICAgICBvdmVycmlkZS4KKyAgICAgICAgICAgICAgICBBbnkgcGx1Zy1pbnMgKHN1YmNsYXNzIG9mCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNvdXJjZVBsdWdpbjwvZmlsZW5hbWU+KSB0aGF0IGRvIG5vdCBpbXBsZW1lbnQKKyAgICAgICAgICAgICAgICBhIHBhcnRpY3VsYXIgbWV0aG9kIGluaGVyaXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZQorICAgICAgICAgICAgICAgIG1ldGhvZCBmcm9tIHRoZSA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3MuCisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3MgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBsdWdpbmJhc2UucHk8L2ZpbGVuYW1lPiBmaWxlIGZvciBkZXRhaWxzOgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgZGVzY3JpYmVzIHRoZSBtZXRob2RzIGltcGxlbWVudGVkIGluIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5Tb3VyY2VQbHVnaW48L2ZpbGVuYW1lPiBjbGFzczoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmRvX3ByZXBhcmVfcGFydGl0aW9uKCk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbGVkIHRvIHBvcHVsYXRlIGEgcGFydGl0aW9uIHdpdGggYWN0dWFsIGNvbnRlbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgdGhlIG1ldGhvZCBwcmVwYXJlcyB0aGUgZmluYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbiBpbWFnZSB0aGF0IGlzIGluY29ycG9yYXRlZCBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZGlzayBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmRvX2NvbmZpZ3VyZV9wYXJ0aXRpb24oKTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBDYWxsZWQgYmVmb3JlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcHJlcGFyZV9wYXJ0aXRpb24oKTwvZmlsZW5hbWU+IHRvCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGUgY3VzdG9tIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIGEgcGFydGl0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiBzeXNsaW51eCBvciBncnViIGNvbmZpZ3VyYXRpb24gZmlsZXMpLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+ZG9faW5zdGFsbF9kaXNrKCk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbGVkIGFmdGVyIGFsbCBwYXJ0aXRpb25zIGhhdmUgYmVlbiBwcmVwYXJlZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VtYmxlZCBpbnRvIGEgZGlzayBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbWV0aG9kIHByb3ZpZGVzIGEgaG9vayB0byBhbGxvdyBmaW5hbGl6YXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIGEgZGlzayBpbWFnZSAoZS5nLiB3cml0aW5nIGFuIE1CUikuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kb19zdGFnZV9wYXJ0aXRpb24oKTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWFsIGNvbnRlbnQtc3RhZ2luZyBob29rIGNhbGxlZCBiZWZvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wcmVwYXJlX3BhcnRpdGlvbigpPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCBpcyBub3JtYWxseSBlbXB0eS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlR5cGljYWxseSwgYSBwYXJ0aXRpb24ganVzdCB1c2VzIHRoZSBwYXNzZWQtaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMgKGUuZy4gdGhlIHVubW9kaWZpZWQgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ib290aW1nX2RpcjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGluIHNvbWUgY2FzZXMsIHRoaW5ncyBtaWdodCBuZWVkIHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICBtb3JlIHRhaWxvcmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgY2VydGFpbiBmaWxlcyBtaWdodCBhZGRpdGlvbmFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gYmUgdGFrZW4gZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJvb3RpbWdfZGlyICsgL2Jvb3Q8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaG9vayBhbGxvd3MgdGhvc2UgZmlsZXMgdG8gYmUgc3RhZ2VkIGluIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbWl6ZWQgZmFzaGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nZXRfYml0YmFrZV92YXIoKTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dzIHlvdSB0byBhY2Nlc3Mgbm9uLXN0YW5kYXJkIHZhcmlhYmxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgeW91IG1pZ2h0IHdhbnQgdG8gdXNlIGZvciB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVoYXZpb3IuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiBleHRlbmQgdGhlIHNvdXJjZSBwbHVnLWluIG1lY2hhbmlzbS4KKyAgICAgICAgICAgICAgICBUbyBhZGQgbW9yZSBob29rcywgY3JlYXRlIG1vcmUgc291cmNlIHBsdWctaW4gbWV0aG9kcworICAgICAgICAgICAgICAgIHdpdGhpbiA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gYW5kIHRoZQorICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgZGVyaXZlZCBzdWJjbGFzc2VzLgorICAgICAgICAgICAgICAgIFRoZSBjb2RlIHRoYXQgY2FsbHMgdGhlIHBsdWctaW4gbWV0aG9kcyB1c2VzIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wbHVnaW4uZ2V0X3NvdXJjZV9wbHVnaW5fbWV0aG9kcygpPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmdW5jdGlvbiB0byBmaW5kIHRoZSBtZXRob2Qgb3IgbWV0aG9kcyBuZWVkZWQgYnkgdGhlIGNhbGwuCisgICAgICAgICAgICAgICAgUmV0cmlldmFsIG9mIHRob3NlIG1ldGhvZHMgaXMgYWNjb21wbGlzaGVkIGJ5IGZpbGxpbmcgdXAKKyAgICAgICAgICAgICAgICBhIGRpY3Qgd2l0aCBrZXlzIHRoYXQgY29udGFpbiB0aGUgbWV0aG9kIG5hbWVzIG9mIGludGVyZXN0LgorICAgICAgICAgICAgICAgIE9uIHN1Y2Nlc3MsIHRoZXNlIHdpbGwgYmUgZmlsbGVkIGluIHdpdGggdGhlIGFjdHVhbAorICAgICAgICAgICAgICAgIG1ldGhvZHMuCisgICAgICAgICAgICAgICAgU2VlIHRoZSBXaWMgaW1wbGVtZW50YXRpb24gZm9yIGV4YW1wbGVzIGFuZCBkZXRhaWxzLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKICAgICAgICAgPHNlY3Rpb24gaWQ9J3dpYy11c2FnZS1leGFtcGxlcyc+CiAgICAgICAgICAgICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgogCkBAIC01MjcxLDE2ICs3NzQ4LDE2IEBACiAgICAgICAgICAgICAgICAuCiAgICAgICAgICAgICAgICAuCiAgICAgIElORk86IFRoZSBuZXcgaW1hZ2UocykgY2FuIGJlIGZvdW5kIGhlcmU6Ci0gICAgICAgLi9ta2VmaWRpc2stMjAxNzEwMDYxNDA5LXNkYS5kaXJlY3QKKyAgICAgICAuL21rZWZpZGlzay0yMDE4MDQxOTEwMTctc2RhLmRpcmVjdAogCiAgICAgIFRoZSBmb2xsb3dpbmcgYnVpbGQgYXJ0aWZhY3RzIHdlcmUgdXNlZCB0byBjcmVhdGUgdGhlIGltYWdlKHMpOgotICAgICAgIFJPT1RGU19ESVI6ICAgICAgICAgICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wLndpYy5yNGhrZHMwYi9yb290ZnNfY29weQotICAgICAgIEJPT1RJTUdfRElSOiAgICAgICAgICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL3dvcmsvcWVtdXg4Ni1wb2t5LWxpbnV4L2NvcmUtaW1hZ2UtbWluaW1hbC8xLjAtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL3NoYXJlCi0gICAgICAgS0VSTkVMX0RJUjogICAgICAgICAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2Ci0gICAgICAgTkFUSVZFX1NZU1JPT1Q6ICAgICAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvd29yay9pNTg2LXBva3ktbGludXgvd2ljLXRvb2xzLzEuMC1yMC9yZWNpcGUtc3lzcm9vdC1uYXRpdmUKKyAgICAgICBST09URlNfRElSOiAgICAgICAgICAgICAgICAgICAvaG9tZS9zdGVwaGFuby9idWlsZC9tYXN0ZXIvYnVpbGQvdG1wLWdsaWJjL3dvcmsvcWVtdXg4Ni1vZS1saW51eC9jb3JlLWltYWdlLW1pbmltYWwvMS4wLXIwL3Jvb3RmcworICAgICAgIEJPT1RJTUdfRElSOiAgICAgICAgICAgICAgICAgIC9ob21lL3N0ZXBoYW5vL2J1aWxkL21hc3Rlci9idWlsZC90bXAtZ2xpYmMvd29yay9xZW11eDg2LW9lLWxpbnV4L2NvcmUtaW1hZ2UtbWluaW1hbC8xLjAtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL3NoYXJlCisgICAgICAgS0VSTkVMX0RJUjogICAgICAgICAgICAgICAgICAgL2hvbWUvc3RlcGhhbm8vYnVpbGQvbWFzdGVyL2J1aWxkL3RtcC1nbGliYy9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYKKyAgICAgICBOQVRJVkVfU1lTUk9PVDogICAgICAgICAgICAgICAvaG9tZS9zdGVwaGFuby9idWlsZC9tYXN0ZXIvYnVpbGQvdG1wLWdsaWJjL3dvcmsvaTU4Ni1vZS1saW51eC93aWMtdG9vbHMvMS4wLXIwL3JlY2lwZS1zeXNyb290LW5hdGl2ZQogCiAgICAgIElORk86IFRoZSBpbWFnZShzKSB3ZXJlIGNyZWF0ZWQgdXNpbmcgT0Uga2lja3N0YXJ0IGZpbGU6Ci0gICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9ta2VmaWRpc2sud2tzCisgICAgICAgL2hvbWUvc3RlcGhhbm8vYnVpbGQvbWFzdGVyL29wZW5lbWJlZGRlZC1jb3JlL3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL21rZWZpZGlzay53a3MKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgZXhhbXBsZSBzaG93cyB0aGUgZWFzaWVzdCB3YXkgdG8gY3JlYXRlCiAgICAgICAgICAgICAgICAgICAgIGFuIGltYWdlIGJ5IHJ1bm5pbmcgaW4gY29va2VkIG1vZGUgYW5kIHN1cHBseWluZwpAQCAtNTMwNSwxNyArNzc4MiwxOCBAQAogCiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIENvbnRpbnVpbmcgd2l0aCB0aGUgZXhhbXBsZSwgeW91IGNhbiBub3cgd3JpdGUgdGhlCi0gICAgICAgICAgICAgICAgICAgIGltYWdlIHRvIGEgVVNCIHN0aWNrLCBvciB3aGF0ZXZlciBtZWRpYSBmb3Igd2hpY2ggeW91Ci0gICAgICAgICAgICAgICAgICAgIGJ1aWx0IHlvdXIgaW1hZ2UsIGFuZCBib290IGZyb20gdGhlIG1lZGlhLgorICAgICAgICAgICAgICAgICAgICBpbWFnZSBmcm9tIHRoZSBCdWlsZCBEaXJlY3Rvcnkgb250byBhIFVTQiBzdGljaywgb3IKKyAgICAgICAgICAgICAgICAgICAgd2hhdGV2ZXIgbWVkaWEgZm9yIHdoaWNoIHlvdSBidWlsdCB5b3VyIGltYWdlLCBhbmQgYm9vdAorICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBtZWRpYS4KICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB3cml0ZSB0aGUgaW1hZ2UgYnkgdXNpbmcKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJtYXB0b29sPC9maWxlbmFtZT4gb3IKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRkPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBvZS1ydW4tbmF0aXZlIGJtYXB0b29sIGNvcHkgYnVpbGQvbWtlZmlkaXNrLTIwMTcxMDA2MTQwOS1zZGEuZGlyZWN0IC9kZXYvc2Q8cmVwbGFjZWFibGU+WDwvcmVwbGFjZWFibGU+CisgICAgICQgb2UtcnVuLW5hdGl2ZSBibWFwdG9vbCBjb3B5IG1rZWZpZGlzay0yMDE4MDQxOTEwMTctc2RhLmRpcmVjdCAvZGV2L3NkPHJlcGxhY2VhYmxlPlg8L3JlcGxhY2VhYmxlPgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIG9yCiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIGRkIGlmPWJ1aWxkL21rZWZpZGlzay0yMDE3MTAwNjE0MDktc2RhLmRpcmVjdCBvZj0vZGV2L3NkPHJlcGxhY2VhYmxlPlg8L3JlcGxhY2VhYmxlPgorICAgICAkIHN1ZG8gZGQgaWY9bWtlZmlkaXNrLTIwMTgwNDE5MTAxNy1zZGEuZGlyZWN0IG9mPS9kZXYvc2Q8cmVwbGFjZWFibGU+WDwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZQpAQCAtNTM3NSw4ICs3ODUzLDggQEAKICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGFuZCB0aGVuIGJ5IGNoYW5naW5nIHRoZSBsaW5lcyB0aGF0IHNwZWNpZnkKICAgICAgICAgICAgICAgICAgICAgdGhlIHRhcmdldCBkaXNrIGZyb20gd2hpY2ggdG8gYm9vdC4KICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNwIC9ob21lL3Njb3R0cmlmL3Bva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3MvZGlyZWN0ZGlzay1ncHQud2tzIFwKLSAgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL2RpcmVjdGRpc2tzZGItZ3B0LndrcworICAgICAkIGNwIC9ob21lL3N0ZXBoYW5vL3Bva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3MvZGlyZWN0ZGlzay1ncHQud2tzIFwKKyAgICAgICAgICAvaG9tZS9zdGVwaGFuby9wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL2RpcmVjdGRpc2tzZGItZ3B0LndrcwogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIE5leHQsIHRoZSBleGFtcGxlIG1vZGlmaWVzIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlyZWN0ZGlza3NkYi1ncHQud2tzPC9maWxlbmFtZT4gZmlsZSBhbmQKQEAgLTU0MTIsMTMgKzc4OTAsMTMgQEAKICAgICAgICAuL2RpcmVjdGRpc2tzZGItZ3B0LTIwMTcxMDA5MDkzOC1zZGIuZGlyZWN0CiAKICAgICAgVGhlIGZvbGxvd2luZyBidWlsZCBhcnRpZmFjdHMgd2VyZSB1c2VkIHRvIGNyZWF0ZSB0aGUgaW1hZ2Uocyk6Ci0gICAgICAgUk9PVEZTX0RJUjogICAgICAgICAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAud2ljLmhrM3dsNnpuL3Jvb3Rmc19jb3B5Ci0gICAgICAgQk9PVElNR19ESVI6ICAgICAgICAgICAgICAgICAgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvd29yay9xZW11eDg2LXBva3ktbGludXgvY29yZS1pbWFnZS1taW5pbWFsLzEuMC1yMC9yZWNpcGUtc3lzcm9vdC91c3Ivc2hhcmUKLSAgICAgICBLRVJORUxfRElSOiAgICAgICAgICAgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYKLSAgICAgICBOQVRJVkVfU1lTUk9PVDogICAgICAgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC93aWMtdG9vbHMvMS4wLXIwL3JlY2lwZS1zeXNyb290LW5hdGl2ZQorICAgICAgIFJPT1RGU19ESVI6ICAgICAgICAgICAgICAgICAgIC9ob21lL3N0ZXBoYW5vL2J1aWxkL21hc3Rlci9idWlsZC90bXAtZ2xpYmMvd29yay9xZW11eDg2LW9lLWxpbnV4L2NvcmUtaW1hZ2UtbWluaW1hbC8xLjAtcjAvcm9vdGZzCisgICAgICAgQk9PVElNR19ESVI6ICAgICAgICAgICAgICAgICAgL2hvbWUvc3RlcGhhbm8vYnVpbGQvbWFzdGVyL2J1aWxkL3RtcC1nbGliYy93b3JrL3FlbXV4ODYtb2UtbGludXgvY29yZS1pbWFnZS1taW5pbWFsLzEuMC1yMC9yZWNpcGUtc3lzcm9vdC91c3Ivc2hhcmUKKyAgICAgICBLRVJORUxfRElSOiAgICAgICAgICAgICAgICAgICAvaG9tZS9zdGVwaGFuby9idWlsZC9tYXN0ZXIvYnVpbGQvdG1wLWdsaWJjL2RlcGxveS9pbWFnZXMvcWVtdXg4NgorICAgICAgIE5BVElWRV9TWVNST09UOiAgICAgICAgICAgICAgIC9ob21lL3N0ZXBoYW5vL2J1aWxkL21hc3Rlci9idWlsZC90bXAtZ2xpYmMvd29yay9pNTg2LW9lLWxpbnV4L3dpYy10b29scy8xLjAtcjAvcmVjaXBlLXN5c3Jvb3QtbmF0aXZlCiAKICAgICAgSU5GTzogVGhlIGltYWdlKHMpIHdlcmUgY3JlYXRlZCB1c2luZyBPRSBraWNrc3RhcnQgZmlsZToKLSAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL2RpcmVjdGRpc2tzZGItZ3B0LndrcworICAgICAgIC9ob21lL3N0ZXBoYW5vL3Bva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3MvZGlyZWN0ZGlza3NkYi1ncHQud2tzCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgQ29udGludWluZyB3aXRoIHRoZSBleGFtcGxlLCB5b3UgY2FuIG5vdyBkaXJlY3RseQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGQ8L2ZpbGVuYW1lPiB0aGUgaW1hZ2UgdG8gYSBVU0Igc3RpY2ssIG9yCkBAIC01NDQ1LDI1ICs3OTIzLDI1IEBACiAgICAgICAgICAgICAgICAgICAgIHNvbWV3aGVyZSBvdGhlciB0aGFuIHRoZSBkZWZhdWx0IG91dHB1dCBkaXJlY3RvcnksCiAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIHRoZSBjdXJyZW50IGRpcmVjdG9yeToKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHdpYyBjcmVhdGUgL2hvbWUvc2NvdHRyaWYvbXlfeW9jdG8vdGVzdC53a3MgLW8gL2hvbWUvc2NvdHRyaWYvdGVzdHdpYyBcCi0gICAgICAgICAgLS1yb290ZnMtZGlyIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL3dvcmsvcWVtdXg4Ni1wb2t5LWxpbnV4L2NvcmUtaW1hZ2UtbWluaW1hbC8xLjAtcjAvcm9vdGZzIFwKLSAgICAgICAgICAtLWJvb3RpbWctZGlyIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL3dvcmsvcWVtdXg4Ni1wb2t5LWxpbnV4L2NvcmUtaW1hZ2UtbWluaW1hbC8xLjAtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL3NoYXJlIFwKLSAgICAgICAgICAtLWtlcm5lbC1kaXIgL2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2IFwKLSAgICAgICAgICAtLW5hdGl2ZS1zeXNyb290IC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L3dpYy10b29scy8xLjAtcjAvcmVjaXBlLXN5c3Jvb3QtbmF0aXZlCisgICAgICQgd2ljIGNyZWF0ZSAvaG9tZS9zdGVwaGFuby9teV95b2N0by90ZXN0LndrcyAtbyAvaG9tZS9zdGVwaGFuby90ZXN0d2ljIFwKKyAgICAgICAgICAtLXJvb3Rmcy1kaXIgL2hvbWUvc3RlcGhhbm8vYnVpbGQvbWFzdGVyL2J1aWxkL3RtcC93b3JrL3FlbXV4ODYtcG9reS1saW51eC9jb3JlLWltYWdlLW1pbmltYWwvMS4wLXIwL3Jvb3RmcyBcCisgICAgICAgICAgLS1ib290aW1nLWRpciAvaG9tZS9zdGVwaGFuby9idWlsZC9tYXN0ZXIvYnVpbGQvdG1wL3dvcmsvcWVtdXg4Ni1wb2t5LWxpbnV4L2NvcmUtaW1hZ2UtbWluaW1hbC8xLjAtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL3NoYXJlIFwKKyAgICAgICAgICAtLWtlcm5lbC1kaXIgL2hvbWUvc3RlcGhhbm8vYnVpbGQvbWFzdGVyL2J1aWxkL3RtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYgXAorICAgICAgICAgIC0tbmF0aXZlLXN5c3Jvb3QgL2hvbWUvc3RlcGhhbm8vYnVpbGQvbWFzdGVyL2J1aWxkL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC93aWMtdG9vbHMvMS4wLXIwL3JlY2lwZS1zeXNyb290LW5hdGl2ZQogCiAgICAgIElORk86IENyZWF0aW5nIGltYWdlKHMpLi4uCiAKICAgICAgSU5GTzogVGhlIG5ldyBpbWFnZShzKSBjYW4gYmUgZm91bmQgaGVyZToKLSAgICAgICAvaG9tZS9zY290dHJpZi90ZXN0d2ljL3Rlc3QtMjAxNzEwMDkxNDQ1LXNkYi5kaXJlY3QKKyAgICAgICAvaG9tZS9zdGVwaGFuby90ZXN0d2ljL3Rlc3QtMjAxNzEwMDkxNDQ1LXNkYi5kaXJlY3QKIAogICAgICBUaGUgZm9sbG93aW5nIGJ1aWxkIGFydGlmYWN0cyB3ZXJlIHVzZWQgdG8gY3JlYXRlIHRoZSBpbWFnZShzKToKLSAgICAgICBST09URlNfRElSOiAgICAgICAgICAgICAgICAgICAvaG9tZS9zY290dHJpZi90ZXN0d2ljL3RtcC53aWMueDR3aXBibWIvcm9vdGZzX2NvcHkKLSAgICAgICBCT09USU1HX0RJUjogICAgICAgICAgICAgICAgICAvaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkL3RtcC93b3JrL3FlbXV4ODYtcG9reS1saW51eC9jb3JlLWltYWdlLW1pbmltYWwvMS4wLXIwL3JlY2lwZS1zeXNyb290L3Vzci9zaGFyZQotICAgICAgIEtFUk5FTF9ESVI6ICAgICAgICAgICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4NgotICAgICAgIE5BVElWRV9TWVNST09UOiAgICAgICAgICAgICAgIC9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvdG1wL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L3dpYy10b29scy8xLjAtcjAvcmVjaXBlLXN5c3Jvb3QtbmF0aXZlCisgICAgICAgUk9PVEZTX0RJUjogICAgICAgICAgICAgICAgICAgL2hvbWUvc3RlcGhhbm8vYnVpbGQvbWFzdGVyL2J1aWxkL3RtcC1nbGliYy93b3JrL3FlbXV4ODYtb2UtbGludXgvY29yZS1pbWFnZS1taW5pbWFsLzEuMC1yMC9yb290ZnMKKyAgICAgICBCT09USU1HX0RJUjogICAgICAgICAgICAgICAgICAvaG9tZS9zdGVwaGFuby9idWlsZC9tYXN0ZXIvYnVpbGQvdG1wLWdsaWJjL3dvcmsvcWVtdXg4Ni1vZS1saW51eC9jb3JlLWltYWdlLW1pbmltYWwvMS4wLXIwL3JlY2lwZS1zeXNyb290L3Vzci9zaGFyZQorICAgICAgIEtFUk5FTF9ESVI6ICAgICAgICAgICAgICAgICAgIC9ob21lL3N0ZXBoYW5vL2J1aWxkL21hc3Rlci9idWlsZC90bXAtZ2xpYmMvZGVwbG95L2ltYWdlcy9xZW11eDg2CisgICAgICAgTkFUSVZFX1NZU1JPT1Q6ICAgICAgICAgICAgICAgL2hvbWUvc3RlcGhhbm8vYnVpbGQvbWFzdGVyL2J1aWxkL3RtcC1nbGliYy93b3JrL2k1ODYtb2UtbGludXgvd2ljLXRvb2xzLzEuMC1yMC9yZWNpcGUtc3lzcm9vdC1uYXRpdmUKIAogICAgICBJTkZPOiBUaGUgaW1hZ2Uocykgd2VyZSBjcmVhdGVkIHVzaW5nIE9FIGtpY2tzdGFydCBmaWxlOgotICAgICAgIC9ob21lL3Njb3R0cmlmL215X3lvY3RvL3Rlc3Qud2tzCisgICAgICAgL2hvbWUvc3RlcGhhbm8vbXlfeW9jdG8vdGVzdC53a3MKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLAogICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+CkBAIC01NjA4LDIyMiArODA4Niw5MSBAQAogICAgICAgICA8L3NlY3Rpb24+CiAgICAgPC9zZWN0aW9uPgogCi0gICAgPHNlY3Rpb24gaWQ9J2J1aWxkaW5nLWFuLWluaXRyYW1mcy1pbWFnZSc+Ci0gICAgICAgIDx0aXRsZT5CdWlsZGluZyBhbiBJbml0aWFsIFJBTSBGaWxlc3lzdGVtIChpbml0cmFtZnMpIEltYWdlPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEFuIGluaXRpYWwgUkFNIGZpbGVzeXN0ZW0gKGluaXRyYW1mcykgaW1hZ2UgcHJvdmlkZXMgYSB0ZW1wb3JhcnkKLSAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbSB1c2VkIGZvciBlYXJseSBzeXN0ZW0gaW5pdGlhbGl6YXRpb24gKGUuZy4KLSAgICAgICAgICAgIGxvYWRpbmcgb2YgbW9kdWxlcyBuZWVkZWQgdG8gbG9jYXRlIGFuZCBtb3VudCB0aGUgInJlYWwiIHJvb3QKLSAgICAgICAgICAgIGZpbGVzeXN0ZW0pLgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgVGhlIGluaXRyYW1mcyBpbWFnZSBpcyB0aGUgc3VjY2Vzc29yIG9mIGluaXRpYWwgUkFNIGRpc2sKLSAgICAgICAgICAgICAgICAoaW5pdHJkKS4KLSAgICAgICAgICAgICAgICBJdCBpcyBhICJjb3B5IGluIGFuZCBvdXQiIChjcGlvKSBhcmNoaXZlIG9mIHRoZSBpbml0aWFsCi0gICAgICAgICAgICAgICAgZmlsZXN5c3RlbSB0aGF0IGdldHMgbG9hZGVkIGludG8gbWVtb3J5IGR1cmluZyB0aGUgTGludXgKLSAgICAgICAgICAgICAgICBzdGFydHVwIHByb2Nlc3MuCi0gICAgICAgICAgICAgICAgQmVjYXVzZSBMaW51eCB1c2VzIHRoZSBjb250ZW50cyBvZiB0aGUgYXJjaGl2ZSBkdXJpbmcKLSAgICAgICAgICAgICAgICBpbml0aWFsaXphdGlvbiwgdGhlIGluaXRyYW1mcyBpbWFnZSBuZWVkcyB0byBjb250YWluIGFsbCBvZiB0aGUKLSAgICAgICAgICAgICAgICBkZXZpY2UgZHJpdmVycyBhbmQgdG9vbHMgbmVlZGVkIHRvIG1vdW50IHRoZSBmaW5hbCByb290Ci0gICAgICAgICAgICAgICAgZmlsZXN5c3RlbS4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGNyZWF0ZSBhbiBpbml0cmFtZnMgaW1hZ2U6Ci0gICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIHRoZSBpbml0cmFtZnMgSW1hZ2UgUmVjaXBlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gcmVmZXJlbmNlIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcy5iYjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIHJlY2lwZSBmb3VuZCBpbiB0aGUgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1jb3JlPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IG9mIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgYXMgYW4gZXhhbXBsZSBmcm9tIHdoaWNoIHRvIHdvcmsuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRlY2lkZSBpZiBZb3UgTmVlZCB0byBCdW5kbGUgdGhlIGluaXRyYW1mcyBJbWFnZQotICAgICAgICAgICAgICAgICAgICBJbnRvIHRoZSBLZXJuZWwgSW1hZ2U6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdGhlIGluaXRyYW1mcyBpbWFnZSB0aGF0IGlzIGJ1aWx0IHRvIGJlCi0gICAgICAgICAgICAgICAgICAgIGJ1bmRsZWQgaW4gd2l0aCB0aGUga2VybmVsIGltYWdlLCBzZXQgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTklUUkFNRlNfSU1BR0VfQlVORExFJz48ZmlsZW5hbWU+SU5JVFJBTUZTX0lNQUdFX0JVTkRMRTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gIjEiIGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUgYW5kIHNldCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlOSVRSQU1GU19JTUFHRSc+PGZpbGVuYW1lPklOSVRSQU1GU19JTUFHRTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gdGhlIHJlY2lwZSB0aGF0IGJ1aWxkcyB0aGUga2VybmVsIGltYWdlLgotICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IGRvIGJ1bmRsZSB0aGUgaW5pdHJhbWZzCi0gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSB3aXRoIHRoZSBrZXJuZWwgaW1hZ2UgdG8gYXZvaWQgY2lyY3VsYXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZSBrZXJuZWwgcmVjaXBlIGFuZCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGluaXRyYW1mcyByZWNpcGUgc2hvdWxkIHRoZSBpbml0cmFtZnMgaW1hZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUga2VybmVsIG1vZHVsZXMuCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgU2V0dGluZyB0aGUgPGZpbGVuYW1lPklOSVRSQU1GU19JTUFHRV9CVU5ETEU8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBmbGFnIGNhdXNlcyB0aGUgaW5pdHJhbWZzIGltYWdlIHRvIGJlIHVucGFja2VkCi0gICAgICAgICAgICAgICAgICAgIGludG8gdGhlIDxmaWxlbmFtZT4ke0J9L3Vzci88L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgIFRoZSB1bnBhY2tlZCBpbml0cmFtZnMgaW1hZ2UgaXMgdGhlbiBwYXNzZWQgdG8gdGhlIGtlcm5lbCdzCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZTwvZmlsZW5hbWU+IHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ09ORklHX0lOSVRSQU1GU19TT1VSQ0UnPjxmaWxlbmFtZT5DT05GSUdfSU5JVFJBTUZTX1NPVVJDRTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIGFsbG93aW5nIHRoZSBpbml0cmFtZnMgaW1hZ2UgdG8gYmUgYnVpbHQgaW50bwotICAgICAgICAgICAgICAgICAgICB0aGUga2VybmVsIG5vcm1hbGx5LgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBjaG9vc2UgdG8gbm90IGJ1bmRsZSB0aGUgaW5pdHJhbWZzIGltYWdlIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgaW1hZ2UsIHlvdSBhcmUgZXNzZW50aWFsbHkgdXNpbmcgYW4KLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0luaXRyZCc+SW5pdGlhbCBSQU0gRGlzayAoaW5pdHJkKTwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRpbmcgYW4gaW5pdHJkIGlzIGhhbmRsZWQgcHJpbWFyaWx5IHRocm91Z2ggdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU5JVFJEX0lNQUdFJz48ZmlsZW5hbWU+SU5JVFJEX0lNQUdFPC9maWxlbmFtZT48L3VsaW5rPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5JTklUUkRfTElWRTwvZmlsZW5hbWU+LCBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5JTklUUkRfSU1BR0VfTElWRTwvZmlsZW5hbWU+IHZhcmlhYmxlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS9wb2t5L3RyZWUvbWV0YS9jbGFzc2VzL2ltYWdlLWxpdmUuYmJjbGFzcyc+PGZpbGVuYW1lPmltYWdlLWxpdmUuYmJjbGFzczwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci08IS0tCi1Tb21lIG5vdGVzIGZyb20gQ2FsOgotCi0gICAgQSBub24tYnVuZGxlZCBpbml0cmFtZnMgaXMgZXNzZW50aWFsbHkgYW4gaW5pdHJkLCB3aGljaCBJIGFtIGRpc2NvdmVyaW5nCi0gICAgdG8gYmUgcmF0aGVyIGNvbmZ1c2luZ2x5IHN1cHBvcnRlZCBpbiBPRSBhdCB0aGUgbW9tZW50LgotCi0gICAgSXRzIHByaW1hcmlseSBoYW5kbGVkIHRocm91Z2ggSU5JVFJEX0lNQUdFKF9MSVZFL19WTSkgYW5kIElOSVRSRChfTElWRS9fVk0pCi0gICAgdmFyaWFibGVzLiBJTklUUkRfSU1BR0UqIGlzIHRoZSBwcmltYXJ5IGltYWdlIHRhcmdldCwgd2hpY2ggZ2V0cyBhZGRlZCB0bwotICAgIElOSVRSRCosIHdoaWNoIGlzIGEgbGlzdCBvZiBjcGlvIGZpbGVzeXN0ZW1zLiBZb3UgY2FuIGFkZCBtb3JlIGNwaW8KLSAgICBmaWxlc3lzdGVtcyB0byB0aGUgSU5JVFJEIHZhcmlhYmxlIHRvIGFkZCBtb3JlIHRvIHRoZSBpbml0cmQuIEZvcgotICAgIGluc3RhbmNlLCBtZXRhLWludGVsIGFkZHMgaW50ZWwtbWljcm9jb2RlIHZpYSB0aGUgZm9sbG93aW5nOgotCi0gICAgICAgIElOSVRSRF9MSVZFX3ByZXBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAnaW50ZWwtdWNvZGUnLCAnJHtERVBMT1lfRElSX0lNQUdFfS9taWNyb2NvZGUuY3BpbyAnLCAnJywgZCl9IgotCi0gICAgSWYgJ2ludGVsLXVjb2RlJyBpcyBpbiBNQUNISU5FX0ZFQVRVUkVTLCB0aGlzIHJlc29sdmVzIHRvOgotCi0gICAgICAgIElOSVRSRF9MSVZFX3ByZXBlbmQgPSAiJHtERVBMT1lfRElSX0lNQUdFfS9taWNyb2NvZGUuY3BpbyAiCi0KLSAgICBVbmZvcnR1bmF0ZWx5IHlvdSBuZWVkIHRoZSBmdWxsIHBhdGgsIGFuZCBpdHMgdXAgdG8geW91IHRvIHNvcnQgb3V0Ci0gICAgZGVwZW5kZW5jaWVzIGFzIHdlbGwuIEZvciBpbnN0YW5jZSwgd2UgaGF2ZSB0aGUgZm9sbG93aW5nOgotCi0gICAgICAgIE1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JERVBFTkRTX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICdpbnRlbC11Y29kZScsICcgaW50ZWwtbWljcm9jb2RlJywgJycsIGQpfSIKLQotICAgIHdoaWNoIHJlc29sdmVzIHRvOgotCi0gICAgICAgIE1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JERVBFTkRTX2FwcGVuZCA9ICJpbnRlbC1taWNyb2NvZGUiCi0KLSAgICBIb3dldmVyLCB0aGUgYWJvdmUgaXMgb25seSB0cnVlIHdpdGggdGhlICJsaXZlIiBJTUFHRV9GU1RZUEUuIFdpYyBpcwotICAgIGFub3RoZXIgYmVhc3QgZW50aXJlbHksIHdpdGggY3VycmVudCB3aWMga2lja3N0YXJ0IGZpbGVzIG5vdCBzdXBwb3J0aW5nCi0gICAgaW5pdHJkcywgYW5kIG9ubHkgcGFydGlhbCBzdXBwb3J0IGluIHRoZSBzb3VyY2UgcGx1Z2lucy4gVGhhdCBiZWluZyBzYWlkLAotICAgIEkga25vdyB0aGUgZ2VuZXJpYyBib290ZnMgd29yayBFZCBpcyB3b3JraW5nIG9uIHdpbGwgaGVscCBpbW1lbnNlbHkgaW4gdGhpcwotICAgIGFzcGVjdC4gSGUgb3IgU2F1bCBjYW4gcHJvdmlkZSBtb3JlIGRldGFpbHMgaGVyZS4KLQotICAgIEFueWhvdywgaXRzIHJhdGhlciBmcmFjdHVyZWQgYW5kIGNvbmZ1c2luZyBhbmQgY291bGQgcHJvYmFibHkgdXNlIGEKLSAgICByZXdvcmsgaG9uZXN0bHkuIEkgZG9uJ3Qga25vdyBob3cgZmVhc2libGUgaXQgaXMgdG8gZG9jdW1lbnQgYWxsIHRoZQotICAgIGRldGFpbHMgYW5kIGNvcm5lciBjYXNlcyBvZiB0aGlzIGFyZWEuCi0tLT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcHRpb25hbGx5IEFkZCBJdGVtcyB0byB0aGUgaW5pdHJhbWZzIEltYWdlCi0gICAgICAgICAgICAgICAgICAgIFRocm91Z2ggdGhlIGluaXRyYW1mcyBJbWFnZSBSZWNpcGU6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFkZCBpdGVtcyB0byB0aGUgaW5pdHJhbWZzIGltYWdlIGJ5IHdheSBvZiBpdHMKLSAgICAgICAgICAgICAgICAgICAgcmVjaXBlLCB5b3Ugc2hvdWxkIHVzZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRV9JTlNUQUxMJz48ZmlsZW5hbWU+UEFDS0FHRV9JTlNUQUxMPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICByYXRoZXIgdGhhbgotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfSU5TVEFMTCc+PGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPjwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRV9JTlNUQUxMPC9maWxlbmFtZT4gZ2l2ZXMgbW9yZSBkaXJlY3QKLSAgICAgICAgICAgICAgICAgICAgY29udHJvbCBvZiB3aGF0IGlzIGFkZGVkIHRvIHRoZSBpbWFnZSBhcyBjb21wYXJlZCB0bwotICAgICAgICAgICAgICAgICAgICB0aGUgZGVmYXVsdHMgeW91IG1pZ2h0IG5vdCBuZWNlc3NhcmlseSB3YW50IHRoYXQgYXJlCi0gICAgICAgICAgICAgICAgICAgIHNldCBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtaW1hZ2UnPjxmaWxlbmFtZT5pbWFnZTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgb3IKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtY29yZS1pbWFnZSc+PGZpbGVuYW1lPmNvcmUtaW1hZ2U8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIGNsYXNzZXMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBLZXJuZWwgSW1hZ2UgYW5kIHRoZSBpbml0cmFtZnMKLSAgICAgICAgICAgICAgICAgICAgSW1hZ2U6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgQnVpbGQgeW91ciBrZXJuZWwgaW1hZ2UgdXNpbmcgQml0QmFrZS4KLSAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGUgaW5pdHJhbWZzIGltYWdlIHJlY2lwZSBpcyBhIGRlcGVuZGVuY3kgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgIGtlcm5lbCBpbWFnZSwgdGhlIGluaXRyYW1mcyBpbWFnZSBpcyBidWlsdCBhcyB3ZWxsIGFuZAotICAgICAgICAgICAgICAgICAgICBidW5kbGVkIHdpdGggdGhlIGtlcm5lbCBpbWFnZSBpZiB5b3UgdXNlZCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlOSVRSQU1GU19JTUFHRV9CVU5ETEUnPjxmaWxlbmFtZT5JTklUUkFNRlNfSU1BR0VfQlVORExFPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBkZXNjcmliZWQgZWFybGllci4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCiAgICAgPHNlY3Rpb24gaWQ9J2ZsYXNoaW5nLWltYWdlcy11c2luZy1ibWFwdG9vbCc+CiAgICAgICAgIDx0aXRsZT5GbGFzaGluZyBJbWFnZXMgVXNpbmcgPGZpbGVuYW1lPmJtYXB0b29sPC9maWxlbmFtZT48L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQW4gZWFzeSB3YXkgdG8gZmxhc2ggYW4gaW1hZ2UgdG8gYSBib290YWJsZSBkZXZpY2UgaXMgdG8gdXNlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+Ym1hcHRvb2w8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgaW50ZWdyYXRlZCBpbnRvIHRoZQotICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgIEEgZmFzdCBhbmQgZWFzeSB3YXkgdG8gZmxhc2ggYW4gaW1hZ2UgdG8gYSBib290YWJsZSBkZXZpY2UKKyAgICAgICAgICAgIGlzIHRvIHVzZSBCbWFwdG9vbCwgd2hpY2ggaXMgaW50ZWdyYXRlZCBpbnRvIHRoZSBPcGVuRW1iZWRkZWQKKyAgICAgICAgICAgIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgIEJtYXB0b29sIGlzIGEgZ2VuZXJpYyB0b29sIHRoYXQgY3JlYXRlcyBhIGZpbGUncyBibG9jayBtYXAgKGJtYXApCisgICAgICAgICAgICBhbmQgdGhlbiB1c2VzIHRoYXQgbWFwIHRvIGNvcHkgdGhlIGZpbGUuCisgICAgICAgICAgICBBcyBjb21wYXJlZCB0byB0cmFkaXRpb25hbCB0b29scyBzdWNoIGFzIGRkIG9yIGNwLCBCbWFwdG9vbAorICAgICAgICAgICAgY2FuIGNvcHkgKG9yIGZsYXNoKSBsYXJnZSBmaWxlcyBsaWtlIHJhdyBzeXN0ZW0gaW1hZ2UgZmlsZXMKKyAgICAgICAgICAgIG11Y2ggZmFzdGVyLgorICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHVzaW5nIFVidW50dSBvciBEZWJpYW4gZGlzdHJpYnV0aW9ucywgeW91CisgICAgICAgICAgICAgICAgICAgICAgICBjYW4gaW5zdGFsbCB0aGUgPGZpbGVuYW1lPmJtYXAtdG9vbHM8L2ZpbGVuYW1lPiBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQgYW5kIHRoZW4gdXNlIHRoZSB0b29sCisgICAgICAgICAgICAgICAgICAgICAgICB3aXRob3V0IHNwZWNpZnlpbmcgPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPiBldmVuIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByb290IGFjY291bnQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgYm1hcC10b29scworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgdW5hYmxlIHRvIGluc3RhbGwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ym1hcC10b29sczwvZmlsZW5hbWU+IHBhY2thZ2UsIHlvdSB3aWxsCisgICAgICAgICAgICAgICAgICAgICAgICBuZWVkIHRvIGJ1aWxkIEJtYXB0b29sIGJlZm9yZSB1c2luZyBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBibWFwLXRvb2xzLW5hdGl2ZQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIEZvbGxvd2luZywgaXMgYW4gZXhhbXBsZSB0aGF0IHNob3dzIGhvdyB0byBmbGFzaCBhIFdpYyBpbWFnZS4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIDxmaWxlbmFtZT5ibWFwdG9vbDwvZmlsZW5hbWU+IHRvIGZsYXNoIGFueQotICAgICAgICAgICAgICAgIHR5cGUgb2YgaW1hZ2UuCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICBVc2UgdGhlc2Ugc3RlcHMgdG8gZmxhc2ggYW4gaW1hZ2UgdXNpbmcKLSAgICAgICAgICAgIDxmaWxlbmFtZT5ibWFwdG9vbDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgVW5sZXNzIHlvdSBhcmUgYWJsZSB0byBpbnN0YWxsIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ibWFwLXRvb2xzPC9maWxlbmFtZT4gcGFja2FnZSBhcyBtZW50aW9uZWQgaW4gdGhlIG5vdGUKLSAgICAgICAgICAgICAgICBpbiB0aGUgc2Vjb25kIGJ1bGxldCBvZiBzdGVwIDMgZnVydGhlciBkb3duLCB5b3Ugd2lsbCBuZWVkIHRvIGJ1aWxkCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJtYXB0b29sPC9maWxlbmFtZT4gYmVmb3JlIHVzaW5nIGl0LgotICAgICAgICAgICAgICAgIEJ1aWxkIHRoZSB0b29sIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSBibWFwLXRvb2xzLW5hdGl2ZQotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIFJlYWxpemUgdGhhdCB3aGlsZSB0aGlzIGV4YW1wbGUgdXNlcyBhIFdpYyBpbWFnZSwgeW91IGNhbiB1c2UKKyAgICAgICAgICAgIEJtYXB0b29sIHRvIGZsYXNoIGFueSB0eXBlIG9mIGltYWdlLgorICAgICAgICAgICAgVXNlIHRoZXNlIHN0ZXBzIHRvIGZsYXNoIGFuIGltYWdlIHVzaW5nIEJtYXB0b29sOgogICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVwZGF0ZSB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBGaWxlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIEFkZCB0aGUgZm9sbG93aW5nIHRvIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VXBkYXRlIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGhhdmUgdGhlIGZvbGxvd2luZyBzZXQgaW4geW91cgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgYmVmb3JlIGJ1aWxkaW5nCisgICAgICAgICAgICAgICAgICAgIHlvdXIgaW1hZ2U6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgSU1BR0VfRlNUWVBFUyArPSAid2ljIHdpYy5ibWFwIgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdldCBZb3VyIEltYWdlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIEVpdGhlciBoYXZlIHlvdXIgaW1hZ2UgcmVhZHkgKHByZS1idWlsdCkgb3IgdGFrZSB0aGUgc3RlcAotICAgICAgICAgICAgICAgICAgICBidWlsZCB0aGUgaW1hZ2U6CisgICAgICAgICAgICAgICAgICAgIEVpdGhlciBoYXZlIHlvdXIgaW1hZ2UgcmVhZHkgKHByZS1idWlsdCB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfRlNUWVBFUyc+PGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHNldHRpbmcgcHJldmlvdXNseSBtZW50aW9uZWQpIG9yIHRha2UgdGhlIHN0ZXAgdG8gYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgdGhlIGltYWdlOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkZsYXNoIHRoZSBEZXZpY2U6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgRmxhc2ggdGhlIGRldmljZSB3aXRoIHRoZSBpbWFnZSBieSB1c2luZwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ym1hcHRvb2w8L2ZpbGVuYW1lPiBkZXBlbmRpbmcgb24geW91ciBwYXJ0aWN1bGFyCi0gICAgICAgICAgICAgICAgICAgIHNldHVwOgorICAgICAgICAgICAgICAgICAgICBGbGFzaCB0aGUgZGV2aWNlIHdpdGggdGhlIGltYWdlIGJ5IHVzaW5nIEJtYXB0b29sCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZGluZyBvbiB5b3VyIHBhcnRpY3VsYXIgc2V0dXAuCisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZHMgYXNzdW1lIHRoZSBpbWFnZSByZXNpZGVzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICBCdWlsZCBEaXJlY3RvcnkncyA8ZmlsZW5hbWU+ZGVwbG95L2ltYWdlcy88L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBhcmVhOgogICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGUgbWVkaWEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlIHRoaXMgY29tbWFuZCBmb3JtOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGUgbWVkaWEsIHVzZSB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBmb3JtOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBvZS1ydW4tbmF0aXZlIGJtYXAtdG9vbHMtbmF0aXZlIGJtYXB0b29sIGNvcHkgLi90bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2LTY0LWNvcmUtaW1hZ2UtbWluaW1hbC08cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+LndpYyAvZGV2L3NkPHJlcGxhY2VhYmxlPlg8L3JlcGxhY2VhYmxlPgorICAgICAkIG9lLXJ1bi1uYXRpdmUgYm1hcC10b29scy1uYXRpdmUgYm1hcHRvb2wgY29weSA8cmVwbGFjZWFibGU+YnVpbGQtZGlyZWN0b3J5PC9yZXBsYWNlYWJsZT4vdG1wL2RlcGxveS9pbWFnZXMvPHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPi88cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPi53aWMgL2Rldi9zZDxyZXBsYWNlYWJsZT5YPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBoYXZlIHdyaXRlIGFjY2VzcyB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBtZWRpYSwgdXNlIHRoZSBmb2xsb3dpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoZSBtZWRpYSwgc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBwZXJtaXNzaW9ucyBmaXJzdCBhbmQgdGhlbiB1c2UgdGhlIHNhbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIGZvcm06CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHN1ZG8gY2htb2QgNjY2IC9kZXYvc2Q8cmVwbGFjZWFibGU+WDwvcmVwbGFjZWFibGU+Ci0gICAgICQgb2UtcnVuLW5hdGl2ZSBibWFwLXRvb2xzLW5hdGl2ZSBibWFwdG9vbCBjb3B5IC4vdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni02NC1jb3JlLWltYWdlLW1pbmltYWwtPHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPi53aWMgL2Rldi9zZDxyZXBsYWNlYWJsZT5YPC9yZXBsYWNlYWJsZT4KKyAgICAgJCBvZS1ydW4tbmF0aXZlIGJtYXAtdG9vbHMtbmF0aXZlIGJtYXB0b29sIGNvcHkgPHJlcGxhY2VhYmxlPmJ1aWxkLWRpcmVjdG9yeTwvcmVwbGFjZWFibGU+L3RtcC9kZXBsb3kvaW1hZ2VzLzxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT4vPHJlcGxhY2VhYmxlPmltYWdlPC9yZXBsYWNlYWJsZT4ud2ljIC9kZXYvc2Q8cmVwbGFjZWFibGU+WDwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHVzaW5nIFVidW50dSBvciBEZWJpYW4gZGlzdHJpYnV0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBpbnN0YWxsIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ym1hcC10b29sczwvZmlsZW5hbWU+IHBhY2thZ2UgdXNpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kIGFuZCB0aGVuIHVzZSB0aGUgdG9vbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRob3V0IHNwZWNpZnlpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPiBldmVuIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QgYWNjb3VudDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHN1ZG8gYXB0LWdldCBpbnN0YWxsIGJtYXAtdG9vbHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgpAQCAtNTg1Miw3ICs4MTk5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgYnkgQnJ1Y2UgU2NobmVpZXIKICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9J2h0dHA6Ly9pbnRlcm5ldGNlbnN1czIwMTIuYml0YnVja2V0Lm9yZy9wYXBlci5odG1sJz5JbnRlcm5ldCBDZW5zdXMgMjAxMjwvdWxpbms+IjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPSdodHRwOi8vY2Vuc3VzMjAxMi5zb3VyY2Vmb3JnZS5uZXQvcGFwZXIuaHRtbCc+SW50ZXJuZXQgQ2Vuc3VzIDIwMTI8L3VsaW5rPiI8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBieSBDYXJuYSBCb3RuZXQ8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0naHR0cDovL2VsaW51eC5vcmcvaW1hZ2VzLzYvNmYvU2VjdXJpdHktaXNzdWVzLnBkZic+U2VjdXJpdHkgSXNzdWVzIGZvciBFbWJlZGRlZCBEZXZpY2VzPC91bGluaz4iPC9lbXBoYXNpcz4KQEAgLTYwNjAsNyArODQwNyw3IEBACiAgICAgICAgICAgICAgICAgbW9yZSBzZWN1cmUuCiAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZXNlIHRvb2xzIGluIHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXNlY3VyaXR5PC9maWxlbmFtZT4gbGF5ZXIgb2YgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2knPllvY3RvIFByb2plY3QgU291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+LgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+WW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4uCiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KICAgICA8L3NlY3Rpb24+CkBAIC02MzA4LDYxNiArODY1NSwyMiBAQAogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCi0gICAgPHNlY3Rpb24gaWQ9J2J1aWxkaW5nLWEtdGlueS1zeXN0ZW0nPgotICAgICAgICA8dGl0bGU+QnVpbGRpbmcgYSBUaW55IFN5c3RlbTwvdGl0bGU+CisgICAgPHNlY3Rpb24gaWQ9J2Rldi1zYXZpbmctbWVtb3J5LWR1cmluZy1hLWJ1aWxkJz4KKyAgICAgICAgPHRpdGxlPkNvbnNlcnZpbmcgRGlzayBTcGFjZSBEdXJpbmcgQnVpbGRzPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFZlcnkgc21hbGwgZGlzdHJpYnV0aW9ucyBoYXZlIHNvbWUgc2lnbmlmaWNhbnQgYWR2YW50YWdlcyBzdWNoCi0gICAgICAgICAgICBhcyByZXF1aXJpbmcgbGVzcyBvbi1kaWUgb3IgaW4tcGFja2FnZSBtZW1vcnkgKGNoZWFwZXIpLCBiZXR0ZXIKLSAgICAgICAgICAgIHBlcmZvcm1hbmNlIHRocm91Z2ggZWZmaWNpZW50IGNhY2hlIHVzYWdlLCBsb3dlciBwb3dlciByZXF1aXJlbWVudHMKLSAgICAgICAgICAgIGR1ZSB0byBsZXNzIG1lbW9yeSwgZmFzdGVyIGJvb3QgdGltZXMsIGFuZCByZWR1Y2VkIGRldmVsb3BtZW50Ci0gICAgICAgICAgICBvdmVyaGVhZC4KLSAgICAgICAgICAgIFNvbWUgcmVhbC13b3JsZCBleGFtcGxlcyB3aGVyZSBhIHZlcnkgc21hbGwgZGlzdHJpYnV0aW9uIGdpdmVzCi0gICAgICAgICAgICB5b3UgZGlzdGluY3QgYWR2YW50YWdlcyBhcmUgZGlnaXRhbCBjYW1lcmFzLCBtZWRpY2FsIGRldmljZXMsCi0gICAgICAgICAgICBhbmQgc21hbGwgaGVhZGxlc3Mgc3lzdGVtcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByZXNlbnRzIGluZm9ybWF0aW9uIHRoYXQgc2hvd3MgeW91IGhvdyB5b3UgY2FuCi0gICAgICAgICAgICB0cmltIHlvdXIgZGlzdHJpYnV0aW9uIHRvIGV2ZW4gc21hbGxlciBzaXplcyB0aGFuIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPnBva3ktdGlueTwvZmlsZW5hbWU+IGRpc3RyaWJ1dGlvbiwgd2hpY2ggaXMgYXJvdW5kCi0gICAgICAgICAgICA1IE1ieXRlcywgdGhhdCBjYW4gYmUgYnVpbHQgb3V0LW9mLXRoZS1ib3ggdXNpbmcgdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0ndGlueS1zeXN0ZW0tb3ZlcnZpZXcnPgotICAgICAgICAgICAgPHRpdGxlPk92ZXJ2aWV3PC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHByZXNlbnRzIHRoZSBvdmVyYWxsIHN0ZXBzIHlvdSBuZWVkIHRvCi0gICAgICAgICAgICAgICAgY29uc2lkZXIgYW5kIHBlcmZvcm0gdG8gY3JlYXRlIGRpc3RyaWJ1dGlvbnMgd2l0aCBzbWFsbGVyCi0gICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtcywgYWNoaWV2ZSBmYXN0ZXIgYm9vdCB0aW1lcywgbWFpbnRhaW4geW91ciBjcml0aWNhbAotICAgICAgICAgICAgICAgIGZ1bmN0aW9uYWxpdHksIGFuZCBhdm9pZCBpbml0aWFsIFJBTSBkaXNrczoKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnb2Fscy1hbmQtZ3VpZGluZy1wcmluY2lwbGVzJz5EZXRlcm1pbmUgeW91ciBnb2FscyBhbmQgZ3VpZGluZyBwcmluY2lwbGVzLjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd1bmRlcnN0YW5kLXdoYXQtZ2l2ZXMteW91ci1pbWFnZS1zaXplJz5VbmRlcnN0YW5kIHdoYXQgY29udHJpYnV0ZXMgdG8geW91ciBpbWFnZSBzaXplLjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd0cmltLXRoZS1yb290LWZpbGVzeXN0ZW0nPlJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUgcm9vdCBmaWxlc3lzdGVtLjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd0cmltLXRoZS1rZXJuZWwnPlJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUga2VybmVsLjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZW1vdmUtcGFja2FnZS1tYW5hZ2VtZW50LXJlcXVpcmVtZW50cyc+RWxpbWluYXRlIHBhY2thZ2luZyByZXF1aXJlbWVudHMuPC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2xvb2stZm9yLW90aGVyLXdheXMtdG8tbWluaW1pemUtc2l6ZSc+TG9vayBmb3Igb3RoZXIgd2F5cyB0byBtaW5pbWl6ZSBzaXplLjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdpdGVyYXRlLW9uLXRoZS1wcm9jZXNzJz5JdGVyYXRlIG9uIHRoZSBwcm9jZXNzLjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J2dvYWxzLWFuZC1ndWlkaW5nLXByaW5jaXBsZXMnPgotICAgICAgICAgICAgPHRpdGxlPkdvYWxzIGFuZCBHdWlkaW5nIFByaW5jaXBsZXM8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBCZWZvcmUgeW91IGNhbiByZWFjaCB5b3VyIGRlc3RpbmF0aW9uLCB5b3UgbmVlZCB0byBrbm93Ci0gICAgICAgICAgICAgICAgd2hlcmUgeW91IGFyZSBnb2luZy4KLSAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgbGlzdCB0aGF0IHlvdSBjYW4gdXNlIGFzIGEgZ3VpZGUgd2hlbgotICAgICAgICAgICAgICAgIGNyZWF0aW5nIHZlcnkgc21hbGwgZGlzdHJpYnV0aW9uczoKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RGV0ZXJtaW5lIGhvdyBtdWNoIHNwYWNlIHlvdSBuZWVkCi0gICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiBhIGtlcm5lbCB0aGF0IGlzIDEgTWJ5dGUgb3IgbGVzcyBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIGEgcm9vdCBmaWxlc3lzdGVtIHRoYXQgaXMgMyBNYnl0ZXMgb3IgbGVzcykuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZpbmQgdGhlIGFyZWFzIHRoYXQgYXJlIGN1cnJlbnRseQotICAgICAgICAgICAgICAgICAgICAgICAgdGFraW5nIDkwJSBvZiB0aGUgc3BhY2UgYW5kIGNvbmNlbnRyYXRlIG9uIHJlZHVjaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICB0aG9zZSBhcmVhcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RG8gbm90IGNyZWF0ZSBhbnkgZGlmZmljdWx0ICJoYWNrcyIKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFjaGlldmUgeW91ciBnb2Fscy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkxldmVyYWdlIHRoZSBkZXZpY2Utc3BlY2lmaWMKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Xb3JrIGluIGEgc2VwYXJhdGUgbGF5ZXIgc28gdGhhdCB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgIGtlZXAgY2hhbmdlcyBpc29sYXRlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY3JlYXRlIGxheWVycywgc2VlCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgIjxsaW5rIGxpbmtlbmQ9J3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC9saW5rPiIgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J3VuZGVyc3RhbmQtd2hhdC1naXZlcy15b3VyLWltYWdlLXNpemUnPgotICAgICAgICAgICAgPHRpdGxlPlVuZGVyc3RhbmQgV2hhdCBDb250cmlidXRlcyB0byBZb3VyIEltYWdlIFNpemU8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBJdCBpcyBlYXNpZXN0IHRvIGhhdmUgc29tZXRoaW5nIHRvIHN0YXJ0IHdpdGggd2hlbiBjcmVhdGluZwotICAgICAgICAgICAgICAgIHlvdXIgb3duIGRpc3RyaWJ1dGlvbi4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgWW9jdG8gUHJvamVjdCBvdXQtb2YtdGhlLWJveCB0byBjcmVhdGUgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3ktdGlueTwvZmlsZW5hbWU+IGRpc3RyaWJ1dGlvbi4KLSAgICAgICAgICAgICAgICBVbHRpbWF0ZWx5LCB5b3Ugd2lsbCB3YW50IHRvIG1ha2UgY2hhbmdlcyBpbiB5b3VyIG93bgotICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbiB0aGF0IGFyZSBsaWtlbHkgbW9kZWxlZCBhZnRlcgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5LXRpbnk8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgVG8gdXNlIDxmaWxlbmFtZT5wb2t5LXRpbnk8L2ZpbGVuYW1lPiBpbiB5b3VyIGJ1aWxkLAotICAgICAgICAgICAgICAgICAgICBzZXQgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ESVNUUk8nPjxmaWxlbmFtZT5ESVNUUk88L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHRvICJwb2t5LXRpbnkiCi0gICAgICAgICAgICAgICAgICAgIGFzIGRlc2NyaWJlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NyZWF0aW5nLXlvdXItb3duLWRpc3RyaWJ1dGlvbic+Q3JlYXRpbmcgWW91ciBPd24gRGlzdHJpYnV0aW9uPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFVuZGVyc3RhbmRpbmcgc29tZSBtZW1vcnkgY29uY2VwdHMgd2lsbCBoZWxwIHlvdSByZWR1Y2UgdGhlCi0gICAgICAgICAgICAgICAgc3lzdGVtIHNpemUuCi0gICAgICAgICAgICAgICAgTWVtb3J5IGNvbnNpc3RzIG9mIHN0YXRpYywgZHluYW1pYywgYW5kIHRlbXBvcmFyeSBtZW1vcnkuCi0gICAgICAgICAgICAgICAgU3RhdGljIG1lbW9yeSBpcyB0aGUgVEVYVCAoY29kZSksIERBVEEgKGluaXRpYWxpemVkIGRhdGEKLSAgICAgICAgICAgICAgICBpbiB0aGUgY29kZSksIGFuZCBCU1MgKHVuaW5pdGlhbGl6ZWQgZGF0YSkgc2VjdGlvbnMuCi0gICAgICAgICAgICAgICAgRHluYW1pYyBtZW1vcnkgcmVwcmVzZW50cyBtZW1vcnkgdGhhdCBpcyBhbGxvY2F0ZWQgYXQgcnVudGltZToKLSAgICAgICAgICAgICAgICBzdGFja3MsIGhhc2ggdGFibGVzLCBhbmQgc28gZm9ydGguCi0gICAgICAgICAgICAgICAgVGVtcG9yYXJ5IG1lbW9yeSBpcyByZWNvdmVyZWQgYWZ0ZXIgdGhlIGJvb3QgcHJvY2Vzcy4KLSAgICAgICAgICAgICAgICBUaGlzIG1lbW9yeSBjb25zaXN0cyBvZiBtZW1vcnkgdXNlZCBmb3IgZGVjb21wcmVzc2luZwotICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgYW5kIGZvciB0aGUgPGZpbGVuYW1lPl9faW5pdF9fPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBmdW5jdGlvbnMuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRvIGhlbHAgeW91IHNlZSB3aGVyZSB5b3UgY3VycmVudGx5IGFyZSB3aXRoIGtlcm5lbCBhbmQgcm9vdAotICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gc2l6ZXMsIHlvdSBjYW4gdXNlIHR3byB0b29scyBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4gaW4KLSAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPnNjcmlwdHMvdGlueS88L2ZpbGVuYW1lPiBkaXJlY3Rvcnk6Ci0gICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5rc2l6ZS5weTwvZmlsZW5hbWU+OiBSZXBvcnRzCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQgc2l6ZXMgZm9yIHRoZSBrZXJuZWwgYnVpbGQgb2JqZWN0cy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmRpcnNpemUucHk8L2ZpbGVuYW1lPjogUmVwb3J0cwotICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50IHNpemVzIGZvciB0aGUgcm9vdCBmaWxlc3lzdGVtLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIFRoaXMgbmV4dCB0b29sIGFuZCBjb21tYW5kIGhlbHAgeW91IG9yZ2FuaXplIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgICAgICBmcmFnbWVudHMgYW5kIHZpZXcgZmlsZSBkZXBlbmRlbmNpZXMgaW4gYSBodW1hbi1yZWFkYWJsZSBmb3JtOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bWVyZ2VfY29uZmlnLnNoPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgICAgICBIZWxwcyB5b3UgbWFuYWdlIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIGZyYWdtZW50cwotICAgICAgICAgICAgICAgICAgICAgICAgd2l0aGluIHRoZSBrZXJuZWwuCi0gICAgICAgICAgICAgICAgICAgICAgICBXaXRoIHRoaXMgdG9vbCwgeW91IGNhbiBtZXJnZSBpbmRpdmlkdWFsIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50cyB0b2dldGhlci4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB0b29sIGFsbG93cyB5b3UgdG8gbWFrZSBvdmVycmlkZXMgYW5kIHdhcm5zIHlvdQotICAgICAgICAgICAgICAgICAgICAgICAgb2YgYW55IG1pc3NpbmcgY29uZmlndXJhdGlvbiBvcHRpb25zLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRvb2wgaXMgaWRlYWwgZm9yIGFsbG93aW5nIHlvdSB0byBpdGVyYXRlIG9uCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucywgY3JlYXRlIG1pbmltYWwgY29uZmlndXJhdGlvbnMsIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIGRpZmZlcmVudCBtYWNoaW5lcwotICAgICAgICAgICAgICAgICAgICAgICAgd2l0aG91dCBoYXZpbmcgdG8gZHVwbGljYXRlIHlvdXIgcHJvY2Vzcy48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgPGZpbGVuYW1lPm1lcmdlX2NvbmZpZy5zaDwvZmlsZW5hbWU+IHNjcmlwdCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgcGFydCBvZiB0aGUgTGludXggWW9jdG8ga2VybmVsIEdpdCByZXBvc2l0b3JpZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5saW51eC15b2N0by0zLjE0PC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tMy4xMDwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLTMuODwvZmlsZW5hbWU+LCBhbmQgc28gZm9ydGgpCi0gICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzL2tjb25maWc8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29uZmlndXJhdGlvbiBmcmFnbWVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I2NyZWF0aW5nLWNvbmZpZy1mcmFnbWVudHMnPkNyZWF0aW5nIENvbmZpZ3VyYXRpb24gRnJhZ21lbnRzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudAotICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Yml0YmFrZSAtdSB0YXNrZXhwIC1nIDxyZXBsYWNlYWJsZT5iaXRiYWtlX3RhcmdldDwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgICAgICBVc2luZyB0aGUgQml0QmFrZSBjb21tYW5kIHdpdGggdGhlc2Ugb3B0aW9ucyBicmluZ3MgdXAKLSAgICAgICAgICAgICAgICAgICAgICAgIGEgRGVwZW5kZW5jeSBFeHBsb3JlciBmcm9tIHdoaWNoIHlvdSBjYW4gdmlldyBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBVbmRlcnN0YW5kaW5nIHRoZXNlIGRlcGVuZGVuY2llcyBhbGxvd3MgeW91IHRvIG1ha2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWVkIGRlY2lzaW9ucyB3aGVuIGN1dHRpbmcgb3V0IHZhcmlvdXMgcGllY2VzIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsIGFuZCByb290IGZpbGVzeXN0ZW0uPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0ndHJpbS10aGUtcm9vdC1maWxlc3lzdGVtJz4KLSAgICAgICAgICAgIDx0aXRsZT5UcmltIHRoZSBSb290IEZpbGVzeXN0ZW08L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgcm9vdCBmaWxlc3lzdGVtIGlzIG1hZGUgdXAgb2YgcGFja2FnZXMgZm9yIGJvb3RpbmcsCi0gICAgICAgICAgICAgICAgbGlicmFyaWVzLCBhbmQgYXBwbGljYXRpb25zLgotICAgICAgICAgICAgICAgIFRvIGNoYW5nZSB0aGluZ3MsIHlvdSBjYW4gY29uZmlndXJlIGhvdyB0aGUgcGFja2FnaW5nIGhhcHBlbnMsCi0gICAgICAgICAgICAgICAgd2hpY2ggY2hhbmdlcyB0aGUgd2F5IHlvdSBidWlsZCB0aGVtLgotICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBtb2RpZnkgdGhlIGZpbGVzeXN0ZW0gaXRzZWxmIG9yIHNlbGVjdCBhIGRpZmZlcmVudAotICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0uCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEZpcnN0LCBmaW5kIG91dCB3aGF0IGlzIGhvZ2dpbmcgeW91ciByb290IGZpbGVzeXN0ZW0gYnkgcnVubmluZyB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlyc2l6ZS5weTwvZmlsZW5hbWU+IHNjcmlwdCBmcm9tIHlvdXIgcm9vdCBkaXJlY3Rvcnk6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNkIDxyZXBsYWNlYWJsZT5yb290LWRpcmVjdG9yeS1vZi1pbWFnZTwvcmVwbGFjZWFibGU+Ci0gICAgICQgZGlyc2l6ZS5weSAxMDAwMDAgPiBkaXJzaXplLTEwMGsubG9nCi0gICAgICQgY2F0IGRpcnNpemUtMTAway5sb2cKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgWW91IGNhbiBhcHBseSBhIGZpbHRlciB0byB0aGUgc2NyaXB0IHRvIGlnbm9yZSBmaWxlcyB1bmRlcgotICAgICAgICAgICAgICAgIGEgY2VydGFpbiBzaXplLgotICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBleGFtcGxlIGZpbHRlcnMgb3V0IGFueSBmaWxlcyBiZWxvdyAxMDAgS2J5dGVzLgotICAgICAgICAgICAgICAgIFRoZSBzaXplcyByZXBvcnRlZCBieSB0aGUgdG9vbCBhcmUgdW5jb21wcmVzc2VkLCBhbmQgdGh1cwotICAgICAgICAgICAgICAgIHdpbGwgYmUgc21hbGxlciBieSBhIHJlbGF0aXZlbHkgY29uc3RhbnQgZmFjdG9yIGluIGEKLSAgICAgICAgICAgICAgICBjb21wcmVzc2VkIHJvb3QgZmlsZXN5c3RlbS4KLSAgICAgICAgICAgICAgICBXaGVuIHlvdSBleGFtaW5lIHlvdXIgbG9nIGZpbGUsIHlvdSBjYW4gZm9jdXMgb24gYXJlYXMgb2YgdGhlCi0gICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtIHRoYXQgdGFrZSB1cCBsYXJnZSBhbW91bnRzIG9mIG1lbW9yeS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gYmUgc3VyZSB0aGF0IHdoYXQgeW91IGVsaW1pbmF0ZSBkb2VzIG5vdCBjcmlwcGxlCi0gICAgICAgICAgICAgICAgdGhlIGZ1bmN0aW9uYWxpdHkgeW91IG5lZWQuCi0gICAgICAgICAgICAgICAgT25lIHdheSB0byBzZWUgaG93IHBhY2thZ2VzIHJlbGF0ZSB0byBlYWNoIG90aGVyIGlzIGJ5IHVzaW5nCi0gICAgICAgICAgICAgICAgdGhlIERlcGVuZGVuY3kgRXhwbG9yZXIgVUkgd2l0aCB0aGUgQml0QmFrZSBjb21tYW5kOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjZCA8cmVwbGFjZWFibGU+aW1hZ2UtZGlyZWN0b3J5PC9yZXBsYWNlYWJsZT4KLSAgICAgJCBiaXRiYWtlIC11IHRhc2tleHAgLWcgPHJlcGxhY2VhYmxlPmltYWdlPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgVXNlIHRoZSBpbnRlcmZhY2UgdG8gc2VsZWN0IHBvdGVudGlhbCBwYWNrYWdlcyB5b3Ugd2lzaCB0bwotICAgICAgICAgICAgICAgIGVsaW1pbmF0ZSBhbmQgc2VlIHRoZWlyIGRlcGVuZGVuY3kgcmVsYXRpb25zaGlwcy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgV2hlbiBkZWNpZGluZyBob3cgdG8gcmVkdWNlIHRoZSBzaXplLCBnZXQgcmlkIG9mIHBhY2thZ2VzIHRoYXQKLSAgICAgICAgICAgICAgICByZXN1bHQgaW4gbWluaW1hbCBpbXBhY3Qgb24gdGhlIGZlYXR1cmUgc2V0LgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgbWlnaHQgbm90IG5lZWQgYSBWR0EgZGlzcGxheS4KLSAgICAgICAgICAgICAgICBPciwgeW91IG1pZ2h0IGJlIGFibGUgdG8gZ2V0IGJ5IHdpdGggPGZpbGVuYW1lPmRldnRtcGZzPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPm1kZXY8L2ZpbGVuYW1lPiBpbnN0ZWFkIG9mCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnVkZXY8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVXNlIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHRvIG1ha2UgY2hhbmdlcy4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdG8gZWxpbWluYXRlIDxmaWxlbmFtZT51ZGV2PC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdsaWI8L2ZpbGVuYW1lPiwgc2V0IHRoZSBmb2xsb3dpbmcgaW4gdGhlCi0gICAgICAgICAgICAgICAgbG9jYWwgY29uZmlndXJhdGlvbiBmaWxlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgVklSVFVBTC1SVU5USU1FX2Rldl9tYW5hZ2VyID0gIiIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEZpbmFsbHksIHlvdSBzaG91bGQgY29uc2lkZXIgZXhhY3RseSB0aGUgdHlwZSBvZiByb290Ci0gICAgICAgICAgICAgICAgZmlsZXN5c3RlbSB5b3UgbmVlZCB0byBtZWV0IHlvdXIgbmVlZHMgd2hpbGUgYWxzbyByZWR1Y2luZwotICAgICAgICAgICAgICAgIGl0cyBzaXplLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBjb25zaWRlciA8ZmlsZW5hbWU+Y3JhbWZzPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNxdWFzaGZzPC9maWxlbmFtZT4sIDxmaWxlbmFtZT51YmlmczwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5leHQyPC9maWxlbmFtZT4sIG9yIGFuIDxmaWxlbmFtZT5pbml0cmFtZnM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIHVzaW5nIDxmaWxlbmFtZT5pbml0cmFtZnM8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICBCZSBhd2FyZSB0aGF0IDxmaWxlbmFtZT5leHQzPC9maWxlbmFtZT4gcmVxdWlyZXMgYSAxIE1ieXRlCi0gICAgICAgICAgICAgICAgam91cm5hbC4KLSAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIG9rYXkgd2l0aCBydW5uaW5nIHJlYWQtb25seSwgeW91IGRvIG5vdCBuZWVkIHRoaXMKLSAgICAgICAgICAgICAgICBqb3VybmFsLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBBZnRlciBlYWNoIHJvdW5kIG9mIGVsaW1pbmF0aW9uLCB5b3UgbmVlZCB0byByZWJ1aWxkIHlvdXIKLSAgICAgICAgICAgICAgICBzeXN0ZW0gYW5kIHRoZW4gdXNlIHRoZSB0b29scyB0byBzZWUgdGhlIGVmZmVjdHMgb2YgeW91cgotICAgICAgICAgICAgICAgIHJlZHVjdGlvbnMuCi0gICAgICAgICAgICA8L25vdGU+Ci0KLQotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J3RyaW0tdGhlLWtlcm5lbCc+Ci0gICAgICAgICAgICA8dGl0bGU+VHJpbSB0aGUgS2VybmVsPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGtlcm5lbCBpcyBidWlsdCBieSBpbmNsdWRpbmcgcG9saWNpZXMgZm9yIGhhcmR3YXJlLWluZGVwZW5kZW50Ci0gICAgICAgICAgICAgICAgYXNwZWN0cy4KLSAgICAgICAgICAgICAgICBXaGF0IHN1YnN5c3RlbXMgZG8geW91IGVuYWJsZT8KLSAgICAgICAgICAgICAgICBGb3Igd2hhdCBhcmNoaXRlY3R1cmUgYXJlIHlvdSBidWlsZGluZz8KLSAgICAgICAgICAgICAgICBXaGljaCBkcml2ZXJzIGRvIHlvdSBidWlsZCBieSBkZWZhdWx0PwotICAgICAgICAgICAgICAgIDxub3RlPllvdSBjYW4gbW9kaWZ5IHRoZSBrZXJuZWwgc291cmNlIGlmIHlvdSB3YW50IHRvIGhlbHAKLSAgICAgICAgICAgICAgICAgICAgd2l0aCBib290IHRpbWUuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBSdW4gdGhlIDxmaWxlbmFtZT5rc2l6ZS5weTwvZmlsZW5hbWU+IHNjcmlwdCBmcm9tIHRoZSB0b3AtbGV2ZWwKLSAgICAgICAgICAgICAgICBMaW51eCBidWlsZCBkaXJlY3RvcnkgdG8gZ2V0IGFuIGlkZWEgb2Ygd2hhdCBpcyBtYWtpbmcgdXAKLSAgICAgICAgICAgICAgICB0aGUga2VybmVsOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjZCA8cmVwbGFjZWFibGU+dG9wLWxldmVsLWxpbnV4LWJ1aWxkLWRpcmVjdG9yeTwvcmVwbGFjZWFibGU+Ci0gICAgICQga3NpemUucHkgPiBrc2l6ZS5sb2cKLSAgICAgJCBjYXQga3NpemUubG9nCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIFdoZW4geW91IGV4YW1pbmUgdGhlIGxvZywgeW91IHdpbGwgc2VlIGhvdyBtdWNoIHNwYWNlIGlzCi0gICAgICAgICAgICAgICAgdGFrZW4gdXAgd2l0aCB0aGUgYnVpbHQtaW4gPGZpbGVuYW1lPi5vPC9maWxlbmFtZT4gZmlsZXMgZm9yCi0gICAgICAgICAgICAgICAgZHJpdmVycywgbmV0d29ya2luZywgY29yZSBrZXJuZWwgZmlsZXMsIGZpbGVzeXN0ZW0sIHNvdW5kLAotICAgICAgICAgICAgICAgIGFuZCBzbyBmb3J0aC4KLSAgICAgICAgICAgICAgICBUaGUgc2l6ZXMgcmVwb3J0ZWQgYnkgdGhlIHRvb2wgYXJlIHVuY29tcHJlc3NlZCwgYW5kIHRodXMKLSAgICAgICAgICAgICAgICB3aWxsIGJlIHNtYWxsZXIgYnkgYSByZWxhdGl2ZWx5IGNvbnN0YW50IGZhY3RvciBpbiBhIGNvbXByZXNzZWQKLSAgICAgICAgICAgICAgICBrZXJuZWwgaW1hZ2UuCi0gICAgICAgICAgICAgICAgTG9vayB0byByZWR1Y2UgdGhlIGFyZWFzIHRoYXQgYXJlIGxhcmdlIGFuZCB0YWtpbmcgdXAgYXJvdW5kCi0gICAgICAgICAgICAgICAgdGhlICI5MCUgcnVsZS4iCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRvIGV4YW1pbmUsIG9yIGRyaWxsIGRvd24sIGludG8gYW55IHBhcnRpY3VsYXIgYXJlYSwgdXNlIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tZDwvZmlsZW5hbWU+IG9wdGlvbiB3aXRoIHRoZSBzY3JpcHQ6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGtzaXplLnB5IC1kID4ga3NpemUubG9nCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIFVzaW5nIHRoaXMgb3B0aW9uIGJyZWFrcyBvdXQgdGhlIGluZGl2aWR1YWwgZmlsZSBpbmZvcm1hdGlvbgotICAgICAgICAgICAgICAgIGZvciBlYWNoIGFyZWEgb2YgdGhlIGtlcm5lbCAoZS5nLiBkcml2ZXJzLCBuZXR3b3JraW5nLCBhbmQKLSAgICAgICAgICAgICAgICBzbyBmb3J0aCkuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFVzZSB5b3VyIGxvZyBmaWxlIHRvIHNlZSB3aGF0IHlvdSBjYW4gZWxpbWluYXRlIGZyb20gdGhlIGtlcm5lbAotICAgICAgICAgICAgICAgIGJhc2VkIG9uIGZlYXR1cmVzIHlvdSBjYW4gbGV0IGdvLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3UgYXJlIG5vdCBnb2luZyB0byBuZWVkIHNvdW5kLCB5b3UgZG8gbm90Ci0gICAgICAgICAgICAgICAgbmVlZCBhbnkgZHJpdmVycyB0aGF0IHN1cHBvcnQgc291bmQuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEFmdGVyIGZpZ3VyaW5nIG91dCB3aGF0IHRvIGVsaW1pbmF0ZSwgeW91IG5lZWQgdG8gcmVjb25maWd1cmUKLSAgICAgICAgICAgICAgICB0aGUga2VybmVsIHRvIHJlZmxlY3QgdGhvc2UgY2hhbmdlcyBkdXJpbmcgdGhlIG5leHQgYnVpbGQuCi0gICAgICAgICAgICAgICAgWW91IGNvdWxkIHJ1biA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+IGFuZCBtYWtlIGFsbCB5b3VyCi0gICAgICAgICAgICAgICAgY2hhbmdlcyBhdCBvbmNlLgotICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoYXQgbWFrZXMgaXQgZGlmZmljdWx0IHRvIHNlZSB0aGUgZWZmZWN0cyBvZiB5b3VyCi0gICAgICAgICAgICAgICAgaW5kaXZpZHVhbCBlbGltaW5hdGlvbnMgYW5kIGFsc28gbWFrZXMgaXQgZGlmZmljdWx0IHRvIHJlcGxpY2F0ZQotICAgICAgICAgICAgICAgIHRoZSBjaGFuZ2VzIGZvciBwZXJoYXBzIGFub3RoZXIgdGFyZ2V0IGRldmljZS4KLSAgICAgICAgICAgICAgICBBIGJldHRlciBtZXRob2QgaXMgdG8gc3RhcnQgd2l0aCBubyBjb25maWd1cmF0aW9ucyB1c2luZwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hbGxub2NvbmZpZzwvZmlsZW5hbWU+LCBjcmVhdGUgY29uZmlndXJhdGlvbgotICAgICAgICAgICAgICAgIGZyYWdtZW50cyBmb3IgaW5kaXZpZHVhbCBjaGFuZ2VzLCBhbmQgdGhlbiBtYW5hZ2UgdGhlCi0gICAgICAgICAgICAgICAgZnJhZ21lbnRzIGludG8gYSBzaW5nbGUgY29uZmlndXJhdGlvbiBmaWxlIHVzaW5nCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1lcmdlX2NvbmZpZy5zaDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIFRoZSB0b29sIG1ha2VzIGl0IGVhc3kgZm9yIHlvdSB0byBpdGVyYXRlIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gY2hhbmdlIGFuZCBidWlsZCBjeWNsZS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRWFjaCB0aW1lIHlvdSBtYWtlIGNvbmZpZ3VyYXRpb24gY2hhbmdlcywgeW91IG5lZWQgdG8gcmVidWlsZAotICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgYW5kIGNoZWNrIHRvIHNlZSB3aGF0IGltcGFjdCB5b3VyIGNoYW5nZXMgaGFkIG9uCi0gICAgICAgICAgICAgICAgdGhlIG92ZXJhbGwgc2l6ZS4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdyZW1vdmUtcGFja2FnZS1tYW5hZ2VtZW50LXJlcXVpcmVtZW50cyc+Ci0gICAgICAgICAgICA8dGl0bGU+UmVtb3ZlIFBhY2thZ2UgTWFuYWdlbWVudCBSZXF1aXJlbWVudHM8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBQYWNrYWdpbmcgcmVxdWlyZW1lbnRzIGFkZCBzaXplIHRvIHRoZSBpbWFnZS4KLSAgICAgICAgICAgICAgICBPbmUgd2F5IHRvIHJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UgaXMgdG8gcmVtb3ZlIGFsbCB0aGUKLSAgICAgICAgICAgICAgICBwYWNrYWdpbmcgcmVxdWlyZW1lbnRzIGZyb20gdGhlIGltYWdlLgotICAgICAgICAgICAgICAgIFRoaXMgcmVkdWN0aW9uIGluY2x1ZGVzIGJvdGggcmVtb3ZpbmcgdGhlIHBhY2thZ2UgbWFuYWdlcgotICAgICAgICAgICAgICAgIGFuZCBpdHMgdW5pcXVlIGRlcGVuZGVuY2llcyBhcyB3ZWxsIGFzIHJlbW92aW5nIHRoZSBwYWNrYWdlCi0gICAgICAgICAgICAgICAgbWFuYWdlbWVudCBkYXRhIGl0c2VsZi4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVG8gZWxpbWluYXRlIGFsbCB0aGUgcGFja2FnaW5nIHJlcXVpcmVtZW50cyBmb3IgYW4gaW1hZ2UsCi0gICAgICAgICAgICAgICAgYmUgc3VyZSB0aGF0ICJwYWNrYWdlLW1hbmFnZW1lbnQiIGlzIG5vdCBwYXJ0IG9mIHlvdXIKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfRkVBVFVSRVMnPjxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgZm9yIHRoZSBpbWFnZS4KLSAgICAgICAgICAgICAgICBXaGVuIHlvdSByZW1vdmUgdGhpcyBmZWF0dXJlLCB5b3UgYXJlIHJlbW92aW5nIHRoZSBwYWNrYWdlCi0gICAgICAgICAgICAgICAgbWFuYWdlciBhcyB3ZWxsIGFzIGl0cyBkZXBlbmRlbmNpZXMgZnJvbSB0aGUgcm9vdCBmaWxlc3lzdGVtLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J2xvb2stZm9yLW90aGVyLXdheXMtdG8tbWluaW1pemUtc2l6ZSc+Ci0gICAgICAgICAgICA8dGl0bGU+TG9vayBmb3IgT3RoZXIgV2F5cyB0byBNaW5pbWl6ZSBTaXplPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHlvdXIgcGFydGljdWxhciBjaXJjdW1zdGFuY2VzLCBvdGhlciBhcmVhcyB0aGF0IHlvdQotICAgICAgICAgICAgICAgIGNhbiB0cmltIGxpa2VseSBleGlzdC4KLSAgICAgICAgICAgICAgICBUaGUga2V5IHRvIGZpbmRpbmcgdGhlc2UgYXJlYXMgaXMgdGhyb3VnaCB0b29scyBhbmQgbWV0aG9kcwotICAgICAgICAgICAgICAgIGRlc2NyaWJlZCBoZXJlIGNvbWJpbmVkIHdpdGggZXhwZXJpbWVudGF0aW9uIGFuZCBpdGVyYXRpb24uCi0gICAgICAgICAgICAgICAgSGVyZSBhcmUgYSBjb3VwbGUgb2YgYXJlYXMgdG8gZXhwZXJpbWVudCB3aXRoOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIEluIGdlbmVyYWwsIGZvbGxvdyB0aGlzIHByb2Nlc3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlJlbW92ZSA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ESVNUUk9fRkVBVFVSRVMnPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgeW91IHRoaW5rIHlvdSBkbyBub3QgbmVlZC48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QnVpbGQgeW91ciBkaXN0cmlidXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JZiB0aGUgYnVpbGQgZmFpbHMgZHVlIHRvIG1pc3NpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9scyBpbiBhIHBhY2thZ2UsIGRldGVybWluZSBpZiB5b3UgY2FuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29uZmlndXJlIHRoZSBwYWNrYWdlIHRvIG5vdCBuZWVkIHRob3NlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgY2hhbmdlIHRoZSBjb25maWd1cmF0aW9uIHRvIG5vdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IHdpZGUgY2hhcmFjdGVyIHN1cHBvcnQgYXMgaXMgZG9uZSBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5jdXJzZXM8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3IsIGlmIHN1cHBvcnQgZm9yIHRob3NlIGNoYXJhY3RlcnMgaXMgbmVlZGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRlcm1pbmUgd2hhdCA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyBwcm92aWRlIHRoZSBzdXBwb3J0IGFuZCByZXN0b3JlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+UmVidWlsZCBhbmQgcmVwZWF0IHRoZSBwcm9jZXNzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+YnVzeWJveDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIEJ1c3lCb3gsIHVzZSBhIHByb2Nlc3Mgc2ltaWxhciBhcyBkZXNjcmliZWQgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIEEgZGlmZmVyZW5jZSBpcyB5b3Ugd2lsbCBuZWVkIHRvIGJvb3QgdGhlIHJlc3VsdGluZwotICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHRvIHNlZSBpZiB5b3UgYXJlIGFibGUgdG8gZG8gZXZlcnl0aGluZyB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdCBmcm9tIHRoZSBydW5uaW5nIHN5c3RlbS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGJlIHN1cmUgdG8gaW50ZWdyYXRlIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnRvIEJ1c3lib3ggYmVjYXVzZSBCdXN5Qm94IGhhbmRsZXMgaXRzIG93biBjb3JlCi0gICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyBhbmQgdGhlbiBhbGxvd3MgeW91IHRvIGFkZCBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudHMgb24gdG9wLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0naXRlcmF0ZS1vbi10aGUtcHJvY2Vzcyc+Ci0gICAgICAgICAgICA8dGl0bGU+SXRlcmF0ZSBvbiB0aGUgUHJvY2VzczwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIG5vdCByZWFjaGVkIHlvdXIgZ29hbHMgb24gc3lzdGVtIHNpemUsIHlvdSBuZWVkCi0gICAgICAgICAgICAgICAgdG8gaXRlcmF0ZSBvbiB0aGUgcHJvY2Vzcy4KLSAgICAgICAgICAgICAgICBUaGUgcHJvY2VzcyBpcyB0aGUgc2FtZS4KLSAgICAgICAgICAgICAgICBVc2UgdGhlIHRvb2xzIGFuZCBzZWUganVzdCB3aGF0IGlzIHRha2luZyB1cCA5MCUgb2YgdGhlIHJvb3QKLSAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIGFuZCB0aGUga2VybmVsLgotICAgICAgICAgICAgICAgIERlY2lkZSB3aGF0IHlvdSBjYW4gZWxpbWluYXRlIHdpdGhvdXQgbGltaXRpbmcgeW91ciBkZXZpY2UKLSAgICAgICAgICAgICAgICBiZXlvbmQgd2hhdCB5b3UgbmVlZC4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHlvdXIgc3lzdGVtLCBhIGdvb2QgcGxhY2UgdG8gbG9vayBtaWdodCBiZQotICAgICAgICAgICAgICAgIEJ1c3lib3gsIHdoaWNoIHByb3ZpZGVzIGEgc3RyaXBwZWQgZG93bgotICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgVW5peCB0b29scyBpbiBhIHNpbmdsZSwgZXhlY3V0YWJsZSBmaWxlLgotICAgICAgICAgICAgICAgIFlvdSBtaWdodCBiZSBhYmxlIHRvIGRyb3AgdmlydHVhbCB0ZXJtaW5hbCBzZXJ2aWNlcyBvciBwZXJoYXBzCi0gICAgICAgICAgICAgICAgaXB2Ni4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdidWlsZGluZy1pbWFnZXMtZm9yLW1vcmUtdGhhbi1vbmUtbWFjaGluZSc+Ci0gICAgICAgIDx0aXRsZT5CdWlsZGluZyBJbWFnZXMgZm9yIE1vcmUgdGhhbiBPbmUgTWFjaGluZTwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBBIGNvbW1vbiBzY2VuYXJpbyBkZXZlbG9wZXJzIGZhY2UgaXMgY3JlYXRpbmcgaW1hZ2VzIGZvciBzZXZlcmFsCi0gICAgICAgICAgICBkaWZmZXJlbnQgbWFjaGluZXMgdGhhdCB1c2UgdGhlIHNhbWUgc29mdHdhcmUgZW52aXJvbm1lbnQuCi0gICAgICAgICAgICBJbiB0aGlzIHNpdHVhdGlvbiwgaXQgaXMgdGVtcHRpbmcgdG8gc2V0IHRoZQotICAgICAgICAgICAgdHVuaW5ncyBhbmQgb3B0aW1pemF0aW9uIGZsYWdzIGZvciBlYWNoIGJ1aWxkIHNwZWNpZmljYWxseSBmb3IKLSAgICAgICAgICAgIHRoZSB0YXJnZXRlZCBoYXJkd2FyZSAoaS5lLiAibWF4aW5nIG91dCIgdGhlIHR1bmluZ3MpLgotICAgICAgICAgICAgRG9pbmcgc28gY2FuIGNvbnNpZGVyYWJseSBhZGQgdG8gYnVpbGQgdGltZXMgYW5kIHBhY2thZ2UgZmVlZAotICAgICAgICAgICAgbWFpbnRlbmFuY2UgY29sbGVjdGl2ZWx5IGZvciB0aGUgbWFjaGluZXMuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgc2VsZWN0aW5nIHR1bmVzIHRoYXQgYXJlIGV4dHJlbWVseSBzcGVjaWZpYyB0byBhCi0gICAgICAgICAgICBDUFUgY29yZSB1c2VkIGluIGEgc3lzdGVtIG1pZ2h0IGVuYWJsZSBzb21lIG1pY3JvIG9wdGltaXphdGlvbnMKLSAgICAgICAgICAgIGluIEdDQyBmb3IgdGhhdCBwYXJ0aWN1bGFyIHN5c3RlbSBidXQgd291bGQgb3RoZXJ3aXNlIG5vdCBnYWluCi0gICAgICAgICAgICB5b3UgbXVjaCBvZiBhIHBlcmZvcm1hbmNlIGRpZmZlcmVuY2UgYWNyb3NzIHRoZSBvdGhlciBzeXN0ZW1zCi0gICAgICAgICAgICBhcyBjb21wYXJlZCB0byB1c2luZyBhIG1vcmUgZ2VuZXJhbCB0dW5pbmcgYWNyb3NzIGFsbCB0aGUgYnVpbGRzCi0gICAgICAgICAgICAoZS5nLiBzZXR0aW5nCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItREVGQVVMVFRVTkUnPjxmaWxlbmFtZT5ERUZBVUxUVFVORTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgIHNwZWNpZmljYWxseSBmb3IgZWFjaCBtYWNoaW5lJ3MgYnVpbGQpLgotICAgICAgICAgICAgUmF0aGVyIHRoYW4gIm1heCBvdXQiIGVhY2ggYnVpbGQncyB0dW5pbmdzLCB5b3UgY2FuIHRha2Ugc3RlcHMgdGhhdAotICAgICAgICAgICAgY2F1c2UgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gcmV1c2Ugc29mdHdhcmUgYWNyb3NzIHRoZQotICAgICAgICAgICAgdmFyaW91cyBtYWNoaW5lcyB3aGVyZSBpdCBtYWtlcyBzZW5zZS4KLSAgICAgICAgPC9wYXJhPgotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIElmIGJ1aWxkIHNwZWVkIGFuZCBwYWNrYWdlIGZlZWQgbWFpbnRlbmFuY2UgYXJlIGNvbnNpZGVyYXRpb25zLAotICAgICAgICAgICAgeW91IHNob3VsZCBjb25zaWRlciB0aGUgcG9pbnRzIGluIHRoaXMgc2VjdGlvbiB0aGF0IGNhbiBoZWxwIHlvdQotICAgICAgICAgICAgb3B0aW1pemUgeW91ciB0dW5pbmdzIHRvIGJlc3QgY29uc2lkZXIgYnVpbGQgdGltZXMgYW5kIHBhY2thZ2UKLSAgICAgICAgICAgIGZlZWQgbWFpbnRlbmFuY2UuCi0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U2hhcmUgdGhlIEJ1aWxkIERpcmVjdG9yeTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBJZiBhdCBhbGwgcG9zc2libGUsIHNoYXJlIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICBhY3Jvc3MgYnVpbGRzLgotICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyBzd2l0Y2hpbmcgYmV0d2VlbiBkaWZmZXJlbnQKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgaW4gdGhlIHNhbWUgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICBUaGlzIHByYWN0aWNlIGlzIHdlbGwgc3VwcG9ydGVkIGFuZCByZWd1bGFybHkgdXNlZCBieQotICAgICAgICAgICAgICAgICAgICBkZXZlbG9wZXJzIHdoZW4gYnVpbGRpbmcgZm9yIG11bHRpcGxlIG1hY2hpbmVzLgotICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSB1c2UgdGhlIHNhbWUgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IGZvcgotICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSBtYWNoaW5lIGJ1aWxkcywgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY2FuCi0gICAgICAgICAgICAgICAgICAgIHJldXNlIHRoZSBleGlzdGluZyBuYXRpdmUgYW5kIG9mdGVuIGNyb3NzLXJlY2lwZXMgZm9yCi0gICAgICAgICAgICAgICAgICAgIG11bHRpcGxlIG1hY2hpbmVzLgotICAgICAgICAgICAgICAgICAgICBUaHVzLCBidWlsZCB0aW1lIGRlY3JlYXNlcy4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJZgotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURJU1RSTyc+PGZpbGVuYW1lPkRJU1RSTzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzIGNoYW5nZSBvciBmdW5kYW1lbnRhbCBjb25maWd1cmF0aW9uIHNldHRpbmdzCi0gICAgICAgICAgICAgICAgICAgICAgICBzdWNoIGFzIHRoZSBmaWxlc3lzdGVtIGxheW91dCwgeW91IG5lZWQgdG8gd29yayB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICBhIGNsZWFuIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNoYXJpbmcgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IHVuZGVyIHRoZXNlCi0gICAgICAgICAgICAgICAgICAgICAgICBjaXJjdW1zdGFuY2VzIG1pZ2h0IHdvcmsgYnV0IHNpbmNlIGl0IGlzIG5vdAotICAgICAgICAgICAgICAgICAgICAgICAgZ3VhcmFudGVlZCwgeW91IHNob3VsZCB1c2UgYSBjbGVhbgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RW5hYmxlIHRoZSBBcHByb3ByaWF0ZSBQYWNrYWdlIEFyY2hpdGVjdHVyZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBlbmFibGVzIHRocmVlCi0gICAgICAgICAgICAgICAgICAgIGxldmVscyBvZiBwYWNrYWdlIGFyY2hpdGVjdHVyZXM6ICJhbGwiLCAidHVuZSIgb3IgInBhY2thZ2UiLAotICAgICAgICAgICAgICAgICAgICBhbmQgIm1hY2hpbmUiLgotICAgICAgICAgICAgICAgICAgICBBbnkgZ2l2ZW4gcmVjaXBlIHVzdWFsbHkgc2VsZWN0cyBvbmUgb2YgdGhlc2UgcGFja2FnZQotICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmVzICh0eXBlcykgZm9yIGl0cyBvdXRwdXQuCi0gICAgICAgICAgICAgICAgICAgIERlcGVuZGluZyBmb3Igd2hhdCBhIGdpdmVuIHJlY2lwZSBjcmVhdGVzIHBhY2thZ2VzLCBtYWtpbmcKLSAgICAgICAgICAgICAgICAgICAgc3VyZSB5b3UgZW5hYmxlIHRoZSBhcHByb3ByaWF0ZSBwYWNrYWdlIGFyY2hpdGVjdHVyZSBjYW4KLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0bHkgaW1wYWN0IHRoZSBidWlsZCB0aW1lLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+QSByZWNpcGUgdGhhdCBqdXN0IGdlbmVyYXRlcyBzY3JpcHRzIGNhbiBlbmFibGUKLSAgICAgICAgICAgICAgICAgICAgImFsbCIgYXJjaGl0ZWN0dXJlIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGJpbmFyaWVzIHRvIGJ1aWxkLgotICAgICAgICAgICAgICAgICAgICBUbyBzcGVjaWZpY2FsbHkgZW5hYmxlICJhbGwiIGFyY2hpdGVjdHVyZSwgYmUgc3VyZSB5b3VyCi0gICAgICAgICAgICAgICAgICAgIHJlY2lwZSBpbmhlcml0cyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtYWxsYXJjaCc+PGZpbGVuYW1lPmFsbGFyY2g8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIGNsYXNzLgotICAgICAgICAgICAgICAgICAgICBUaGlzIGNsYXNzIGlzIHVzZWZ1bCBmb3IgImFsbCIgYXJjaGl0ZWN0dXJlcyBiZWNhdXNlIGl0Ci0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZXMgbWFueSB2YXJpYWJsZXMgc28gcGFja2FnZXMgY2FuIGJlIHVzZWQgYWNyb3NzCi0gICAgICAgICAgICAgICAgICAgIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3VyIHJlY2lwZSBuZWVkcyB0byBnZW5lcmF0ZSBwYWNrYWdlcyB0aGF0IGFyZQotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLXNwZWNpZmljIG9yIHdoZW4gb25lIG9mIHRoZSBidWlsZCBvciBydW50aW1lCi0gICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBpcyBhbHJlYWR5IG1hY2hpbmUtYXJjaGl0ZWN0dXJlIGRlcGVuZGVudCwKLSAgICAgICAgICAgICAgICAgICAgd2hpY2ggbWFrZXMgeW91ciByZWNpcGUgYWxzbyBtYWNoaW5lLWFyY2hpdGVjdHVyZSBkZXBlbmRlbnQsCi0gICAgICAgICAgICAgICAgICAgIG1ha2Ugc3VyZSB5b3VyIHJlY2lwZSBlbmFibGVzIHRoZSAibWFjaGluZSIgcGFja2FnZQotICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmUgdGhyb3VnaCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkVfQVJDSCc+PGZpbGVuYW1lPk1BQ0hJTkVfQVJDSDwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGU6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBkbyBub3Qgc3BlY2lmaWNhbGx5IGVuYWJsZSBhIHBhY2thZ2UKLSAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlIHRocm91Z2ggdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0FSQ0gnPjxmaWxlbmFtZT5QQUNLQUdFX0FSQ0g8L2ZpbGVuYW1lPjwvdWxpbms+LAotICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBkZWZhdWx0cyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRVTkVfUEtHQVJDSCc+PGZpbGVuYW1lPlRVTkVfUEtHQVJDSDwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgc2V0dGluZzoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBQQUNLQUdFX0FSQ0ggPSAiJHtUVU5FX1BLR0FSQ0h9IgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q2hvb3NlIGEgR2VuZXJpYyBUdW5pbmcgRmlsZSBpZiBQb3NzaWJsZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBTb21lIHR1bmVzIGFyZSBtb3JlIGdlbmVyaWMgYW5kIGNhbiBydW4gb24gbXVsdGlwbGUgdGFyZ2V0cwotICAgICAgICAgICAgICAgICAgICAoZS5nLiBhbiA8ZmlsZW5hbWU+YXJtdjU8L2ZpbGVuYW1lPiBzZXQgb2YgcGFja2FnZXMgY291bGQKLSAgICAgICAgICAgICAgICAgICAgcnVuIG9uIDxmaWxlbmFtZT5hcm12NjwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXJtdjc8L2ZpbGVuYW1lPiBwcm9jZXNzb3JzIGluIG1vc3QgY2FzZXMpLgotICAgICAgICAgICAgICAgICAgICBTaW1pbGFybHksIDxmaWxlbmFtZT5pNDg2PC9maWxlbmFtZT4gYmluYXJpZXMgY291bGQgd29yawotICAgICAgICAgICAgICAgICAgICBvbiA8ZmlsZW5hbWU+aTU4NjwvZmlsZW5hbWU+IGFuZCBoaWdoZXIgcHJvY2Vzc29ycy4KLSAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCByZWFsaXplLCBob3dldmVyLCB0aGF0IGFkdmFuY2VzIG9uIG5ld2VyCi0gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvciB2ZXJzaW9ucyB3b3VsZCBub3QgYmUgdXNlZC48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBzZWxlY3QgdGhlIHNhbWUgdHVuZSBmb3Igc2V2ZXJhbCBkaWZmZXJlbnQKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZXMsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHJldXNlcyBzb2Z0d2FyZQotICAgICAgICAgICAgICAgICAgICBwcmV2aW91c2x5IGJ1aWx0LCB0aHVzIHNwZWVkaW5nIHVwIHRoZSBvdmVyYWxsIGJ1aWxkIHRpbWUuCi0gICAgICAgICAgICAgICAgICAgIFJlYWxpemUgdGhhdCBldmVuIHRob3VnaCBhIG5ldyBzeXNyb290IGZvciBlYWNoIG1hY2hpbmUgaXMKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVkLCB0aGUgc29mdHdhcmUgaXMgbm90IHJlY29tcGlsZWQgYW5kIG9ubHkgb25lCi0gICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgZmVlZCBleGlzdHMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TWFuYWdlIEdyYW51bGFyIExldmVsIFBhY2thZ2luZzo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBTb21ldGltZXMgY2FzZXMgZXhpc3Qgd2hlcmUgaW5qZWN0aW5nIGFub3RoZXIgbGV2ZWwKLSAgICAgICAgICAgICAgICAgICAgb2YgcGFja2FnZSBhcmNoaXRlY3R1cmUgYmV5b25kIHRoZSB0aHJlZSBoaWdoZXIgbGV2ZWxzCi0gICAgICAgICAgICAgICAgICAgIG5vdGVkIGVhcmxpZXIgY2FuIGJlIHVzZWZ1bC4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSA8ZmlsZW5hbWU+ZW1nZDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzIHN0YWNrIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IGxheWVyLgotICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGxheWVyLCBhIHN1YnNldCBvZiBzb2Z0d2FyZSBleGlzdHMgdGhhdCBpcwotICAgICAgICAgICAgICAgICAgICBjb21waWxlZCBhZ2FpbnN0IHNvbWV0aGluZyBkaWZmZXJlbnQgZnJvbSB0aGUgcmVzdCBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJpYyBwYWNrYWdlcy4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBleGFtaW5lIHRoZSBrZXkgY29kZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2knPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAiZGFpc3kiIGJyYW5jaCBpbgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y2xhc3Nlcy9lbWdkLWdsLmJiY2xhc3M8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGEgc3BlY2lmaWMgc2V0IG9mIHBhY2thZ2VzLCB0aGUgY29kZSByZWRlZmluZXMKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfQVJDSCc+PGZpbGVuYW1lPlBBQ0tBR0VfQVJDSDwvZmlsZW5hbWU+PC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0VYVFJBX0FSQ0hTJz48ZmlsZW5hbWU+UEFDS0FHRV9FWFRSQV9BUkNIUzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgaXMgdGhlbiBhcHBlbmRlZCB3aXRoIHRoaXMgZXh0cmEgdHVuZSBuYW1lIGluCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsLWVtZ2QuaW5jPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgdGhhdCB3aGVuIHNlYXJjaGluZyBmb3IgcGFja2FnZXMsIHRoZQotICAgICAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gdXNlcyBhIGZvdXItbGV2ZWwgc2VhcmNoIGFuZCB0aGUgcGFja2FnZXMKLSAgICAgICAgICAgICAgICAgICAgaW4gdGhpcyBuZXcgbGV2ZWwgYXJlIHByZWZlcnJlZCBhcyBjb21wYXJlZCB0byB0aGUgc3RhbmRhcmQKLSAgICAgICAgICAgICAgICAgICAgdHVuZS4KLSAgICAgICAgICAgICAgICAgICAgVGhlIG92ZXJhbGwgcmVzdWx0IGlzIHRoYXQgdGhlIGJ1aWxkIHN5c3RlbSByZXVzZXMgbW9zdAotICAgICAgICAgICAgICAgICAgICBzb2Z0d2FyZSBmcm9tIHRoZSBjb21tb24gdHVuZSBleGNlcHQgZm9yIHNwZWNpZmljIGNhc2VzCi0gICAgICAgICAgICAgICAgICAgIGFzIG5lZWRlZC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Vc2UgVG9vbHMgdG8gRGVidWcgSXNzdWVzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFNvbWV0aW1lcyB5b3UgY2FuIHJ1biBpbnRvIHNpdHVhdGlvbnMgd2hlcmUgc29mdHdhcmUgaXMKLSAgICAgICAgICAgICAgICAgICAgYmVpbmcgcmVidWlsdCB3aGVuIHlvdSB0aGluayBpdCBzaG91bGQgbm90IGJlLgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gbWlnaHQgbm90IGJlCi0gICAgICAgICAgICAgICAgICAgIHVzaW5nIHNoYXJlZCBzdGF0ZSBiZXR3ZWVuIG1hY2hpbmVzIHdoZW4geW91IHRoaW5rIGl0Ci0gICAgICAgICAgICAgICAgICAgIHNob3VsZCBiZS4KLSAgICAgICAgICAgICAgICAgICAgVGhlc2UgdHlwZXMgb2Ygc2l0dWF0aW9ucyBhcmUgdXN1YWxseSBkdWUgdG8gcmVmZXJlbmNlcwotICAgICAgICAgICAgICAgICAgICB0byBtYWNoaW5lLXNwZWNpZmljIHZhcmlhYmxlcyBzdWNoIGFzCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4sCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TRVJJQUxfQ09OU09MRSc+PGZpbGVuYW1lPlNFUklBTF9DT05TT0xFPC9maWxlbmFtZT48L3VsaW5rPiwKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVhTRVJWRVInPjxmaWxlbmFtZT5YU0VSVkVSPC9maWxlbmFtZT48L3VsaW5rPiwKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkVfRkVBVFVSRVMnPjxmaWxlbmFtZT5NQUNISU5FX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPiwKLSAgICAgICAgICAgICAgICAgICAgYW5kIHNvIGZvcnRoIGluIGNvZGUgdGhhdCBpcyBzdXBwb3NlZCB0byBvbmx5IGJlCi0gICAgICAgICAgICAgICAgICAgIHR1bmUtc3BlY2lmaWMgb3Igd2hlbiB0aGUgcmVjaXBlIGRlcGVuZHMKLSAgICAgICAgICAgICAgICAgICAgKDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz4sCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1SREVQRU5EUyc+PGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT48L3VsaW5rPiwKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVJSRUNPTU1FTkRTJz48ZmlsZW5hbWU+UlJFQ09NTUVORFM8L2ZpbGVuYW1lPjwvdWxpbms+LAotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUlNVR0dFU1RTJz48ZmlsZW5hbWU+UlNVR0dFU1RTPC9maWxlbmFtZT48L3VsaW5rPiwKLSAgICAgICAgICAgICAgICAgICAgYW5kIHNvIGZvcnRoKSBvbiBzb21lIG90aGVyIHJlY2lwZSB0aGF0IGFscmVhZHkgaGFzCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0FSQ0gnPjxmaWxlbmFtZT5QQUNLQUdFX0FSQ0g8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIGRlZmluZWQgYXMgIiR7TUFDSElORV9BUkNIfSIuCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgUGF0Y2hlcyB0byBmaXggYW55IGlzc3VlcyBpZGVudGlmaWVkIGFyZSBtb3N0IHdlbGNvbWUKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzIHRoZXNlIGlzc3VlcyBvY2Nhc2lvbmFsbHkgZG8gb2NjdXIuCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBzdWNoIGNhc2VzLCB5b3UgY2FuIHVzZSBzb21lIHRvb2xzIHRvIGhlbHAgeW91Ci0gICAgICAgICAgICAgICAgICAgIHNvcnQgb3V0IHRoZSBzaXR1YXRpb246Ci0gICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5zc3RhdGUtZGlmZi1tYWNoaW5lcy5zaDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoaXMgdG9vbCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0czwvZmlsZW5hbWU+IGRpcmVjdG9yeSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2UgUmVwb3NpdG9yaWVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgY29tbWVudHMgaW4gdGhlIHNjcmlwdCBmb3IgaW5mb3JtYXRpb24gb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3cgdG8gdXNlIHRoZSB0b29sLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CaXRCYWtlJ3MgIi1TIHByaW50ZGlmZiIgT3B0aW9uOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhpcyBvcHRpb24gY2F1c2VzIEJpdEJha2UgdG8gdHJ5IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXN0YWJsaXNoIHRoZSBjbG9zZXN0IHNpZ25hdHVyZSBtYXRjaCBpdCBjYW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiBpbiB0aGUgc2hhcmVkIHN0YXRlIGNhY2hlKSBhbmQgdGhlbiBydW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1kaWZmc2lnczwvZmlsZW5hbWU+IG92ZXIgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcyB0byBkZXRlcm1pbmUgdGhlIHN0YW1wcyBhbmQgZGVsdGEgd2hlcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVzZSB0d28gc3RhbXAgdHJlZXMgZGl2ZXJnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICBUbyBoZWxwIGNvbnNlcnZlIGRpc2sgc3BhY2UgZHVyaW5nIGJ1aWxkcywgeW91IGNhbiBhZGQgdGhlCisgICAgICAgICAgICBmb2xsb3dpbmcgc3RhdGVtZW50IHRvIHlvdXIgcHJvamVjdCdzCisgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gZmlsZSBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz46CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElOSEVSSVQgKz0gInJtX3dvcmsiCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBBZGRpbmcgdGhpcyBzdGF0ZW1lbnQgZGVsZXRlcyB0aGUgd29yayBkaXJlY3RvcnkgdXNlZCBmb3IgYnVpbGRpbmcKKyAgICAgICAgICAgIGEgcmVjaXBlIG9uY2UgdGhlIHJlY2lwZSBpcyBidWlsdC4KKyAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uICJybV93b3JrIiwgc2VlIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtcm0td29yayc+PGZpbGVuYW1lPnJtX3dvcms8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICBjbGFzcyBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC03MTIxLDcgKzg4NzQsNyBAQAogCiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEJlY2F1c2UgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcwotICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjY2hlY2tzdW1zJz5zaWduYXR1cmVzPC91bGluaz4iLAorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNvdmVydmlldy1jaGVja3N1bXMnPnNpZ25hdHVyZXM8L3VsaW5rPiIsCiAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGFyZSB1bmlxdWUgdG8gYSBnaXZlbiBidWlsZCwgdGhlIGJ1aWxkIHN5c3RlbQogICAgICAgICAgICAgICAgICAgICBrbm93cyB3aGVuIHRvIHJlYnVpbGQgcGFja2FnZXMuCiAgICAgICAgICAgICAgICAgICAgIEFsbCB0aGUgaW5wdXRzIGludG8gYSBnaXZlbiB0YXNrIGFyZSByZXByZXNlbnRlZCBieSBhCkBAIC03MjA2LDggKzg5NTksOCBAQAogICAgICBCVUlMREhJU1RPUllfQ09NTUlUID0gIjEiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGJ1aWxkIGhpc3RvcnksIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I21haW50YWluaW5nLWJ1aWxkLW91dHB1dC1xdWFsaXR5Jz5NYWludGFpbmluZyBCdWlsZCBPdXRwdXQgUXVhbGl0eTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdtYWludGFpbmluZy1idWlsZC1vdXRwdXQtcXVhbGl0eSc+TWFpbnRhaW5pbmcgQnVpbGQgT3V0cHV0IFF1YWxpdHk8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxub3RlPgpAQCAtNzIyNSw4ICs4OTc4LDkgQEAKIAogICAgICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHNoYXJlZCBzdGF0ZSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NoYXJlZC1zdGF0ZS1jYWNoZSc+U2hhcmVkIFN0YXRlIENhY2hlPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzaGFyZWQtc3RhdGUtY2FjaGUnPlNoYXJlZCBTdGF0ZSBDYWNoZTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMKKyAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgIDwvc2VjdGlvbj4KQEAgLTc0NzAsNyArOTIyNCw3IEBACiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25ubWFuLmluYzwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IG9mIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3lvY3RvLXByb2plY3QtcmVwb3NpdG9yaWVzJz5zb3VyY2UgcmVwb3NpdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3lvY3RvLXByb2plY3QtcmVwb3NpdG9yaWVzJz5zb3VyY2UgcmVwb3NpdG9yeTwvdWxpbms+LgogICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gZmluZCBleGFtcGxlcyBpbgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzL2tlcm5lbC5iYmNsYXNzPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTc1OTksMTEgKzkzNTMsMTMgQEAKICAgICAgICAgICAgICAgICBEdXJpbmcgYSBidWlsZCwgQml0QmFrZSBhbHdheXMgdHJhbnNmb3JtcyBhIHJlY2lwZSBpbnRvIG9uZSBvcgogICAgICAgICAgICAgICAgIG1vcmUgcGFja2FnZXMuCiAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIEJpdEJha2UgdGFrZXMgdGhlIDxmaWxlbmFtZT5iYXNoPC9maWxlbmFtZT4gcmVjaXBlCi0gICAgICAgICAgICAgICAgYW5kIGN1cnJlbnRseSBwcm9kdWNlcyB0aGUgPGZpbGVuYW1lPmJhc2gtZGJnPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJhc2gtc3RhdGljZGV2PC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJhc2gtZGV2PC9maWxlbmFtZT4sIDxmaWxlbmFtZT5iYXNoLWRvYzwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXNoLWxvY2FsZTwvZmlsZW5hbWU+LCBhbmQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmFzaDwvZmlsZW5hbWU+IHBhY2thZ2VzLgorICAgICAgICAgICAgICAgIGFuZCBwcm9kdWNlcyBhIG51bWJlciBvZiBwYWNrYWdlcyAoZS5nLgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXNoPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5iYXNoLWJhc2hidWc8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmFzaC1jb21wbGV0aW9uPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJhc2gtY29tcGxldGlvbi1kYmc8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmFzaC1jb21wbGV0aW9uLWRldjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXNoLWNvbXBsZXRpb24tZXh0cmE8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmFzaC1kYmc8L2ZpbGVuYW1lPiwgYW5kIHNvIGZvcnRoKS4KICAgICAgICAgICAgICAgICBOb3QgYWxsIGdlbmVyYXRlZCBwYWNrYWdlcyBhcmUgaW5jbHVkZWQgaW4gYW4gaW1hZ2UuCiAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTc2NDcsNyArOTQwMyw3IEBACiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIEluIG9yZGVyIHRvIHVzZSBydW50aW1lIHBhY2thZ2UgbWFuYWdlbWVudCwgeW91Ci0gICAgICAgICAgICAgICAgbmVlZCBhIGhvc3Qvc2VydmVyIG1hY2hpbmUgdGhhdCBzZXJ2ZXMgdXAgdGhlIHByZS1jb21waWxlZAorICAgICAgICAgICAgICAgIG5lZWQgYSBob3N0IG9yIHNlcnZlciBtYWNoaW5lIHRoYXQgc2VydmVzIHVwIHRoZSBwcmUtY29tcGlsZWQKICAgICAgICAgICAgICAgICBwYWNrYWdlcyBwbHVzIHRoZSByZXF1aXJlZCBtZXRhZGF0YS4KICAgICAgICAgICAgICAgICBZb3UgYWxzbyBuZWVkIHBhY2thZ2UgbWFuaXB1bGF0aW9uIHRvb2xzIG9uIHRoZSB0YXJnZXQuCiAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIG1hY2hpbmUgaXMgYSBsaWtlbHkgY2FuZGlkYXRlIHRvIGFjdCBhcyB0aGUgc2VydmVyLgpAQCAtNzY1NSw2ICs5NDExLDEwIEBACiAgICAgICAgICAgICAgICAgcGFja2FnZSBzZXJ2ZXIuCiAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIG1hY2hpbmUgY291bGQgcHVzaCBpdHMgYXJ0aWZhY3RzIHRvIGFub3RoZXIgbWFjaGluZQogICAgICAgICAgICAgICAgIHRoYXQgYWN0cyBhcyB0aGUgc2VydmVyIChlLmcuIEludGVybmV0LWZhY2luZykuCisgICAgICAgICAgICAgICAgSW4gZmFjdCwgZG9pbmcgc28gaXMgYWR2YW50YWdlb3VzIGZvciBhIHByb2R1Y3Rpb24KKyAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCBhcyBnZXR0aW5nIHRoZSBwYWNrYWdlcyBhd2F5IGZyb20gdGhlCisgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgc3lzdGVtJ3MgYnVpbGQgZGlyZWN0b3J5IHByZXZlbnRzIGFjY2lkZW50YWwKKyAgICAgICAgICAgICAgICBvdmVyd3JpdGVzLgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KQEAgLTc2NjQsMTEgKzk0MjQsMTEgQEAKICAgICAgICAgICAgICAgICBvdXQgaW50byBhIGNvdXBsZSBvZiBkaWZmZXJlbnQgcGFja2FnZSBncm91cGluZ3MgYmFzZWQgb24KICAgICAgICAgICAgICAgICBjcml0ZXJpYSBzdWNoIGFzIHRoZSB0YXJnZXQncyBDUFUgYXJjaGl0ZWN0dXJlLCB0aGUgdGFyZ2V0CiAgICAgICAgICAgICAgICAgYm9hcmQsIG9yIHRoZSBDIGxpYnJhcnkgdXNlZCBvbiB0aGUgdGFyZ2V0LgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBhIGJ1aWxkIHRhcmdldGluZyB0aGUgPGZpbGVuYW1lPnFlbXVhcm08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBhIGJ1aWxkIHRhcmdldGluZyB0aGUgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgIGRldmljZSBwcm9kdWNlcyB0aGUgZm9sbG93aW5nIHRocmVlIHBhY2thZ2UgZGF0YWJhc2VzOgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hbGw8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmFybXY1dGU8L2ZpbGVuYW1lPiwgYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnFlbXVhcm08L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudGVkIHlvdXIgPGZpbGVuYW1lPnFlbXVhcm08L2ZpbGVuYW1lPiBkZXZpY2UgdG8gYmUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bm9hcmNoPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5pNTg2PC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11eDg2PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgSWYgeW91IHdhbnRlZCB5b3VyIDxmaWxlbmFtZT5xZW11eDg2PC9maWxlbmFtZT4gZGV2aWNlIHRvIGJlCiAgICAgICAgICAgICAgICAgYXdhcmUgb2YgYWxsIHRoZSBwYWNrYWdlcyB0aGF0IHdlcmUgYXZhaWxhYmxlIHRvIGl0LAogICAgICAgICAgICAgICAgIHlvdSB3b3VsZCBuZWVkIHRvIHBvaW50IGl0IHRvIGVhY2ggb2YgdGhlc2UgZGF0YWJhc2VzCiAgICAgICAgICAgICAgICAgaW5kaXZpZHVhbGx5LgpAQCAtNzcxNCwxMCArOTQ3NCwxMCBAQAogICAgICBQQUNLQUdFX0NMQVNTRVMgPz0g4oCccGFja2FnZV88cmVwbGFjZWFibGU+cGFja2FnZWZvcm1hdDwvcmVwbGFjZWFibGU+4oCdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIDxyZXBsYWNlYWJsZT5wYWNrYWdlZm9ybWF0PC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW4gYmUgImlwayIsICJycG0iLCBhbmQgImRlYiIsIHdoaWNoIGFyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW4gYmUgImlwayIsICJycG0iLCAiZGViIiwgb3IgInRhciIgd2hpY2ggYXJlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBwYWNrYWdlIGZvcm1hdHMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJlY2F1c2UgdGhlIFlvY3RvIFByb2plY3Qgc3VwcG9ydHMgdGhyZWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGUgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyBmb3VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVudCBwYWNrYWdlIGZvcm1hdHMsIHlvdSBjYW4gc2V0IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB3aXRoIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIG9ubHkKQEAgLTc3MzYsMTIgKzk0OTYsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgInBhY2thZ2UtbWFuYWdlbWVudCIgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICAgICAgSW5jbHVkaW5nICJwYWNrYWdlLW1hbmFnZW1lbnQiIGluIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBlbnN1cmVzIHRoYXQgd2hlbiB0aGUgaW1hZ2UKLSAgICAgICAgICAgICAgICAgICAgaXMgYXNzZW1ibGVkIGZvciB5b3VyIHRhcmdldCwgdGhlIGltYWdlIGluY2x1ZGVzCi0gICAgICAgICAgICAgICAgICAgIHRoZSBjdXJyZW50bHkta25vd24gcGFja2FnZSBkYXRhYmFzZXMgYXMgd2VsbCBhcwotICAgICAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0LXNwZWNpZmljIHRvb2xzIHJlcXVpcmVkIGZvciBydW50aW1lCi0gICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgbWFuYWdlbWVudCB0byBiZSBwZXJmb3JtZWQgb24gdGhlIHRhcmdldC4KKyAgICAgICAgICAgICAgICAgICAgSW5jbHVkaW5nICJwYWNrYWdlLW1hbmFnZW1lbnQiIGluIHRoaXMgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBlbnN1cmVzIHRoYXQgd2hlbiB0aGUgaW1hZ2UgaXMgYXNzZW1ibGVkIGZvciB5b3VyCisgICAgICAgICAgICAgICAgICAgIHRhcmdldCwgdGhlIGltYWdlIGluY2x1ZGVzIHRoZSBjdXJyZW50bHkta25vd24gcGFja2FnZQorICAgICAgICAgICAgICAgICAgICBkYXRhYmFzZXMgYXMgd2VsbCBhcyB0aGUgdGFyZ2V0LXNwZWNpZmljIHRvb2xzIHJlcXVpcmVkCisgICAgICAgICAgICAgICAgICAgIGZvciBydW50aW1lIHBhY2thZ2UgbWFuYWdlbWVudCB0byBiZSBwZXJmb3JtZWQgb24gdGhlCisgICAgICAgICAgICAgICAgICAgIHRhcmdldC4KICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhpcyBpcyBub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5LgogICAgICAgICAgICAgICAgICAgICBZb3UgY291bGQgc3RhcnQgeW91ciBpbWFnZSBvZmYgd2l0aG91dCBhbnkgZGF0YWJhc2VzCiAgICAgICAgICAgICAgICAgICAgIGJ1dCBvbmx5IGluY2x1ZGUgdGhlIHJlcXVpcmVkIG9uLXRhcmdldCBwYWNrYWdlCkBAIC03NzU1LDIxICs5NTE1LDI2IEBACiAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgV2hlbmV2ZXIgeW91IHBlcmZvcm0gYW55IHNvcnQgb2YgYnVpbGQgc3RlcCB0aGF0IGNhbgotICAgICAgICAgICAgICAgICAgICBwb3RlbnRpYWxseSBnZW5lcmF0ZSBhIHBhY2thZ2Ugb3IgbW9kaWZ5IGFuIGV4aXN0aW5nCisgICAgICAgICAgICAgICAgICAgIHBvdGVudGlhbGx5IGdlbmVyYXRlIGEgcGFja2FnZSBvciBtb2RpZnkgICBleGlzdGluZwogICAgICAgICAgICAgICAgICAgICBwYWNrYWdlLCBpdCBpcyBhbHdheXMgYSBnb29kIGlkZWEgdG8gcmUtZ2VuZXJhdGUgdGhlCi0gICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgaW5kZXggd2l0aDoKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBpbmRleCBhZnRlciB0aGUgYnVpbGQgYnkgdXNpbmcgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICBjb21tYW5kOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgJCBiaXRiYWtlIHBhY2thZ2UtaW5kZXgKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBSZWFsaXplIHRoYXQgaXQgaXMgbm90IHN1ZmZpY2llbnQgdG8gc2ltcGx5IGRvIHRoZQotICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgIEl0IG1pZ2h0IGJlIHRlbXB0aW5nIHRvIGJ1aWxkIHRoZSBwYWNrYWdlIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBpbmRleCBhdCB0aGUgc2FtZSB0aW1lIHdpdGggYSBjb21tYW5kIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZzoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+c29tZS1wYWNrYWdlPC9yZXBsYWNlYWJsZT4gcGFja2FnZS1pbmRleAogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSByZWFzb24gZm9yIHRoaXMgcmVzdHJpY3Rpb24gaXMgYmVjYXVzZSBCaXRCYWtlIGRvZXMgbm90Ci0gICAgICAgICAgICAgICAgICAgIHByb3Blcmx5IHNjaGVkdWxlIHRoZSA8ZmlsZW5hbWU+cGFja2FnZS1pbmRleDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIHRhcmdldCBmdWxseSBhZnRlciBhbnkgb3RoZXIgdGFyZ2V0IGhhcyBjb21wbGV0ZWQuCi0gICAgICAgICAgICAgICAgICAgIFRodXMsIGJlIHN1cmUgdG8gcnVuIHRoZSBwYWNrYWdlIHVwZGF0ZSBzdGVwIHNlcGFyYXRlbHkuCisgICAgICAgICAgICAgICAgICAgIERvIG5vdCBkbyB0aGlzIGFzIEJpdEJha2UgZG9lcyBub3Qgc2NoZWR1bGUgdGhlIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgaW5kZXggZm9yIGFmdGVyIHRoZSBjb21wbGV0aW9uIG9mIHRoZSBwYWNrYWdlIHlvdSBhcmUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRpbmcuCisgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IGNhbm5vdCBiZSBzdXJlIG9mIHRoZSBwYWNrYWdlIGluZGV4CisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBpbmZvcm1hdGlvbiBmb3IgdGhlIHBhY2thZ2UgeW91IGp1c3QgYnVpbHQuCisgICAgICAgICAgICAgICAgICAgIFRodXMsIGJlIHN1cmUgdG8gcnVuIHRoZSBwYWNrYWdlIHVwZGF0ZSBzdGVwIHNlcGFyYXRlbHkKKyAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgYnVpbGRpbmcgYW55IHBhY2thZ2VzLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtNzc5NCw4ICs5NTU5LDggQEAKICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIGlzIDxmaWxlbmFtZT50bXA8L2ZpbGVuYW1lPiBhbmQgeW91ciBzZWxlY3RlZCBwYWNrYWdlIHR5cGUKLSAgICAgICAgICAgICAgICAgICAgaXMgSVBLLCB0aGVuIHlvdXIgSVBLIHBhY2thZ2VzIGFyZSBhdmFpbGFibGUgaW4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC9kZXBsb3kvaXBrPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIGlzIFJQTSwgdGhlbiB5b3VyIFJQTSBwYWNrYWdlcyBhcmUgYXZhaWxhYmxlIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50bXAvZGVwbG95L3JwbTwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvc2VjdGlvbj4KIApAQCAtNzg1MCwxNyArOTYxNSwzOSBAQAogICAgICAgICAgICAgICAgICAgICA8dGl0bGU+VXNpbmcgUlBNPC90aXRsZT4KIAogICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG5mPC9maWxlbmFtZT4gYXBwbGljYXRpb24gcGVyZm9ybXMKLSAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWUgcGFja2FnZSBtYW5hZ2VtZW50IG9mIFJQTSBwYWNrYWdlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IHBlcmZvcm0gYW4gaW5pdGlhbCBzZXR1cCBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kbmY8L2ZpbGVuYW1lPiBvbiB0aGUgdGFyZ2V0IG1hY2hpbmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfRkVFRF9BUkNIUyc+PGZpbGVuYW1lPlBBQ0tBR0VfRkVFRF9BUkNIUzwvZmlsZW5hbWU+PC91bGluaz4sCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRV9GRUVEX0JBU0VfUEFUSFMnPjxmaWxlbmFtZT5QQUNLQUdFX0ZFRURfQkFTRV9QQVRIUzwvZmlsZW5hbWU+PC91bGluaz4sCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0ZFRURfVVJJUyc+PGZpbGVuYW1lPlBBQ0tBR0VfRkVFRF9VUklTPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzIGhhdmUgbm90IGJlZW4gc2V0IG9yIHRoZSB0YXJnZXQgaW1hZ2Ugd2FzCi0gICAgICAgICAgICAgICAgICAgICAgICBidWlsdCBiZWZvcmUgdGhlIHZhcmlhYmxlcyB3ZXJlIHNldC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRE5GXyhzb2Z0d2FyZSknPkRhbmRpZmllZCBQYWNrYWdpbmcgVG9vbDwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAoRE5GKSBwZXJmb3JtcyBydW50aW1lIHBhY2thZ2UgbWFuYWdlbWVudCBvZiBSUE0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gdXNlIERORiBmb3IgcnVudGltZSBwYWNrYWdlIG1hbmFnZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICB5b3UgbXVzdCBwZXJmb3JtIGFuIGluaXRpYWwgc2V0dXAgb24gdGhlIHRhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZSBmb3IgY2FzZXMgd2hlcmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRV9GRUVEXyo8L2ZpbGVuYW1lPiB2YXJpYWJsZXMgd2VyZSBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldCBhcyBwYXJ0IG9mIHRoZSBpbWFnZSB0aGF0IGlzIHJ1bm5pbmcgb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG1lYW5zIGlmIHlvdSBidWlsdCB5b3VyIGltYWdlIGFuZCBkaWQgbm90IG5vdCB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZXNlIHZhcmlhYmxlcyBhcyBwYXJ0IG9mIHRoZSBidWlsZCBhbmQgeW91ciBpbWFnZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgbm93IHJ1bm5pbmcgb24gdGhlIHRhcmdldCwgeW91IG5lZWQgdG8gcGVyZm9ybSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBzIGluIHRoaXMgc2VjdGlvbiBpZiB5b3Ugd2FudCB0byB1c2UgcnVudGltZQorICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBtYW5hZ2VtZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFX0ZFRURfKjwvZmlsZW5hbWU+IHZhcmlhYmxlcywgc2VlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfRkVFRF9BUkNIUyc+PGZpbGVuYW1lPlBBQ0tBR0VfRkVFRF9BUkNIUzwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfRkVFRF9CQVNFX1BBVEhTJz48ZmlsZW5hbWU+UEFDS0FHRV9GRUVEX0JBU0VfUEFUSFM8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0ZFRURfVVJJUyc+PGZpbGVuYW1lPlBBQ0tBR0VfRkVFRF9VUklTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgdmFyaWFibGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvc3NhcnkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9uIHRoZSB0YXJnZXQsIHlvdSBtdXN0IGluZm9ybSBETkYgdGhhdCBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhYmFzZXMgYXJlIGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBkbyB0aGlzIGJ5IGNyZWF0aW5nIGEgZmlsZSBuYW1lZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ldGMveXVtLnJlcG9zLmQvb2UtcGFja2FnZXMucmVwbzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZGVmaW5pbmcgdGhlIDxmaWxlbmFtZT5vZS1wYWNrYWdlczwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CkBAIC03ODY5LDIxICs5NjU2LDY1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YWxsPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5pNTg2PC9maWxlbmFtZT4sCiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPiBmcm9tIGEgc2VydmVyIG5hbWVkCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bXkuc2VydmVyPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBpbmZvcm0gPGZpbGVuYW1lPmRuZjwvZmlsZW5hbWU+IG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5IG9mIHRoZXNlIGRhdGFiYXNlcyBieSBjcmVhdGluZyBhCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2V0Yy95dW0ucmVwb3MuZC9vZS1wYWNrYWdlcy5yZXBvPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgd2l0aCB0aGUgZm9sbG93aW5nIGNvbnRlbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc3BlY2lmaWNzIGZvciBzZXR0aW5nIHVwIHRoZSB3ZWIgc2VydmVyIGFyZSB1cCB0bworICAgICAgICAgICAgICAgICAgICAgICAgeW91LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNyaXRpY2FsIHJlcXVpcmVtZW50IGlzIHRoYXQgdGhlIFVSSXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQgcmVwb3NpdG9yeSBjb25maWd1cmF0aW9uIHBvaW50IHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgY29ycmVjdCByZW1vdGUgbG9jYXRpb24gZm9yIHRoZSBmZWVkcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBkZXZlbG9wbWVudCBwdXJwb3NlcywgeW91IGNhbiBwb2ludCB0aGUgd2ViCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyIHRvIHRoZSBidWlsZCBzeXN0ZW0ncworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgZm9yIHByb2R1Y3Rpb24gdXNlLCBpdCBpcyBiZXR0ZXIgdG8gY29weQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBwYWNrYWdlIGRpcmVjdG9yaWVzIHRvIGEgbG9jYXRpb24gb3V0c2lkZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZCBhcmVhIGFuZCB1c2UgdGhhdCBsb2NhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb2luZyBzbyBhdm9pZHMgc2l0dWF0aW9ucyB3aGVyZSB0aGUgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcndyaXRlcyBvciBjaGFuZ2VzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gdGVsbGluZyBETkYgd2hlcmUgdG8gbG9vayBmb3IgdGhlIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFiYXNlcywgeW91IG11c3QgZGVjbGFyZSBpbmRpdmlkdWFsIGxvY2F0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgcGVyIGFyY2hpdGVjdHVyZSBvciBhIHNpbmdsZSBsb2NhdGlvbiB1c2VkIGZvciBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IGRvIGJvdGg6CisgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhbiBFeHBsaWNpdCBMaXN0IG9mIEFyY2hpdGVjdHVyZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmaW5lIGluZGl2aWR1YWwgYmFzZSBVUkxzIHRvIGlkZW50aWZ5IHdoZXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhY2ggcGFja2FnZSBkYXRhYmFzZSBpcyBsb2NhdGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIFtvZS1wYWNrYWdlc10KICAgICAgYmFzZXVybD1odHRwOi8vbXkuc2VydmVyL3JwbS9pNTg2IGh0dHA6Ly9teS5zZXJ2ZXIvcnBtL3FlbXV4ODYgaHR0cDovL215LnNlcnZlci9ycG0vYWxsCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBGcm9tIHRoZSB0YXJnZXQgbWFjaGluZSwgZmV0Y2ggdGhlIHJlcG9zaXRvcnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIGluZm9ybXMgRE5GIGFib3V0IGluZGl2aWR1YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBkYXRhYmFzZXMgZm9yIGFsbCB0aHJlZSBhcmNoaXRlY3R1cmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgYSBTaW5nbGUgKEZ1bGwpIFBhY2thZ2UgSW5kZXg6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmaW5lIGEgc2luZ2xlIGJhc2UgVVJMIHRoYXQgaWRlbnRpZmllcyB3aGVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIGZ1bGwgcGFja2FnZSBkYXRhYmFzZSBpcyBsb2NhdGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFtvZS1wYWNrYWdlc10KKyAgICAgYmFzZXVybD1odHRwOi8vbXkuc2VydmVyL3JwbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBpbmZvcm1zIERORiBhYm91dCBhIHNpbmdsZSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFiYXNlIHRoYXQgY29udGFpbnMgYWxsIHRoZSBwYWNrYWdlIGluZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIGZvciBhbGwgc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgaW5mb3JtZWQgRE5GIHdoZXJlIHRvIGZpbmQgdGhlIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFiYXNlcywgeW91IG5lZWQgdG8gZmV0Y2ggdGhlbToKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgIyBkbmYgbWFrZWNhY2hlCiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBZnRlciBldmVyeXRoaW5nIGlzIHNldCB1cCwgPGZpbGVuYW1lPmRuZjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBpcyBhYmxlIHRvIGZpbmQsIGluc3RhbGwsIGFuZCB1cGdyYWRlIHBhY2thZ2VzIGZyb20KLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzcGVjaWZpZWQgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIERORiBpcyBub3cgYWJsZSB0byBmaW5kLCBpbnN0YWxsLCBhbmQgdXBncmFkZSBwYWNrYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgc3BlY2lmaWVkIHJlcG9zaXRvcnkgb3IgcmVwb3NpdG9yaWVzLgogICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9kbmYucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0Lyc+RE5GIGRvY3VtZW50YXRpb248L3VsaW5rPgpAQCAtODI5NCw4ICsxMDEyNSw4IEBACiAgICAgICAgIDwvc2VjdGlvbj4KICAgICA8L3NlY3Rpb24+CiAKLSAgICA8c2VjdGlvbiBpZD0nd29ya2luZy13aXRoLXNvdXJjZS1maWxlcyc+Ci0gICAgICAgIDx0aXRsZT5Xb3JraW5nIHdpdGggU291cmNlIEZpbGVzPC90aXRsZT4KKyAgICA8c2VjdGlvbiBpZD0nZWZmaWNpZW50bHktZmV0Y2hpbmctc291cmNlLWZpbGVzLWR1cmluZy1hLWJ1aWxkJz4KKyAgICAgICAgPHRpdGxlPkVmZmljaWVudGx5IEZldGNoaW5nIFNvdXJjZSBGaWxlcyBEdXJpbmcgYSBCdWlsZDwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB3b3JrcyB3aXRoIHNvdXJjZSBmaWxlcyBsb2NhdGVkCkBAIC04MzA5LDE2ICsxMDE0MCwxNiBAQAogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJlc2VudHMgaW5mb3JtYXRpb24gZm9yIHdvcmtpbmcgd2l0aCBzb3VyY2UKLSAgICAgICAgICAgIGZpbGVzIHRoYXQgY2FuIGxlYWQgdG8gbW9yZSBlZmZpY2llbnQgdXNlIG9mIHJlc291cmNlcyBhbmQKLSAgICAgICAgICAgIHRpbWUuCisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gc2hvd3MgeW91IGhvdyB5b3UgY2FuIHVzZSBtaXJyb3JzIHRvIHNwZWVkIHVwCisgICAgICAgICAgICBmZXRjaGluZyBzb3VyY2UgZmlsZXMgYW5kIGhvdyB5b3UgY2FuIHByZS1mZXRjaCBmaWxlcyBhbGwgb2Ygd2hpY2gKKyAgICAgICAgICAgIGxlYWRzIHRvIG1vcmUgZWZmaWNpZW50IHVzZSBvZiByZXNvdXJjZXMgYW5kIHRpbWUuCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8c2VjdGlvbiBpZD0nc2V0dGluZy11cC1lZmZlY3RpdmUtbWlycm9ycyc+CiAgICAgICAgICAgICA8dGl0bGU+U2V0dGluZyB1cCBFZmZlY3RpdmUgTWlycm9yczwvdGl0bGU+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEFzIG1lbnRpb25lZCwgYSBnb29kIGRlYWwgdGhhdCBnb2VzIGludG8gYSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgQSBnb29kIGRlYWwgdGhhdCBnb2VzIGludG8gYSBZb2N0byBQcm9qZWN0CiAgICAgICAgICAgICAgICAgYnVpbGQgaXMgc2ltcGx5IGRvd25sb2FkaW5nIGFsbCBvZiB0aGUgc291cmNlIHRhcmJhbGxzLgogICAgICAgICAgICAgICAgIE1heWJlIHlvdSBoYXZlIGJlZW4gd29ya2luZyB3aXRoIGFub3RoZXIgYnVpbGQgc3lzdGVtCiAgICAgICAgICAgICAgICAgKE9wZW5FbWJlZGRlZCBvciBBbmdzdHJvbSkgZm9yIHdoaWNoIHlvdSBoYXZlIGJ1aWx0IHVwIGEKQEAgLTgzODEsNyArMTAyMTIsNyBAQAogICAgICAgICAgICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIEJpdEJha2UgY29tbWFuZCBmb3JtIHRvIGZldGNoIGFsbCB0aGUKICAgICAgICAgICAgICAgICBuZWNlc3Nhcnkgc291cmNlcyB3aXRob3V0IHN0YXJ0aW5nIHRoZSBidWlsZDoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSAtYyBmZXRjaGFsbCA8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4KKyAgICAgJCBiaXRiYWtlIC1jIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPiBydW5hbGw9ImZldGNoIgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhdGlvbiBvZiB0aGUgQml0QmFrZSBjb21tYW5kIGd1YXJhbnRlZXMgdGhhdCB5b3UKICAgICAgICAgICAgICAgICBoYXZlIGFsbCB0aGUgc291cmNlcyBmb3IgdGhhdCBCaXRCYWtlIHRhcmdldCBzaG91bGQgeW91CkBAIC04MzkxLDgxICsxMDIyMiw2IEBACiAgICAgICAgIDwvc2VjdGlvbj4KICAgICA8L3NlY3Rpb24+CiAKLSAgICA8c2VjdGlvbiBpZD0iYnVpbGRpbmctc29mdHdhcmUtZnJvbS1hbi1leHRlcm5hbC1zb3VyY2UiPgotICAgICAgICA8dGl0bGU+QnVpbGRpbmcgU29mdHdhcmUgZnJvbSBhbiBFeHRlcm5hbCBTb3VyY2U8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgIHdoZW4gYnVpbGRpbmcgc291cmNlIGNvZGUuCi0gICAgICAgICAgICBUaGUgYnVpbGQgcHJvY2VzcyBpbnZvbHZlcyBmZXRjaGluZyB0aGUgc291cmNlIGZpbGVzLCB1bnBhY2tpbmcKLSAgICAgICAgICAgIHRoZW0sIGFuZCB0aGVuIHBhdGNoaW5nIHRoZW0gaWYgbmVjZXNzYXJ5IGJlZm9yZSB0aGUgYnVpbGQgdGFrZXMKLSAgICAgICAgICAgIHBsYWNlLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBTaXR1YXRpb25zIGV4aXN0IHdoZXJlIHlvdSBtaWdodCB3YW50IHRvIGJ1aWxkIHNvZnR3YXJlIGZyb20gc291cmNlCi0gICAgICAgICAgICBmaWxlcyB0aGF0IGFyZSBleHRlcm5hbCB0byBhbmQgdGh1cyBvdXRzaWRlIG9mIHRoZQotICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KLSAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBoYXZlIGEgcHJvamVjdCB0aGF0IGluY2x1ZGVzIGEgbmV3IEJTUCB3aXRoCi0gICAgICAgICAgICBhIGhlYXZpbHkgY3VzdG9taXplZCBrZXJuZWwuCi0gICAgICAgICAgICBBbmQsIHlvdSB3YW50IHRvIG1pbmltaXplIGV4cG9zaW5nIHRoZSBidWlsZCBzeXN0ZW0gdG8gdGhlCi0gICAgICAgICAgICBkZXZlbG9wbWVudCB0ZWFtIHNvIHRoYXQgdGhleSBjYW4gZm9jdXMgb24gdGhlaXIgcHJvamVjdCBhbmQKLSAgICAgICAgICAgIG1haW50YWluIGV2ZXJ5b25lJ3Mgd29ya2Zsb3cgYXMgbXVjaCBhcyBwb3NzaWJsZS4KLSAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgeW91IHdhbnQgYSBrZXJuZWwgc291cmNlIGRpcmVjdG9yeSBvbiB0aGUgZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgIG1hY2hpbmUgd2hlcmUgdGhlIGRldmVsb3BtZW50IG9jY3Vycy4KLSAgICAgICAgICAgIFlvdSB3YW50IHRoZSByZWNpcGUncwotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgdmFyaWFibGUgdG8gcG9pbnQgdG8gdGhlIGV4dGVybmFsIGRpcmVjdG9yeSBhbmQgdXNlIGl0IGFzIGlzLCBub3QKLSAgICAgICAgICAgIGNvcHkgaXQuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRvIGJ1aWxkIGZyb20gc29mdHdhcmUgdGhhdCBjb21lcyBmcm9tIGFuIGV4dGVybmFsIHNvdXJjZSwgYWxsIHlvdQotICAgICAgICAgICAgbmVlZCB0byBkbyBpcyBpbmhlcml0IHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtZXh0ZXJuYWxzcmMnPjxmaWxlbmFtZT5leHRlcm5hbHNyYzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgIGNsYXNzIGFuZCB0aGVuIHNldCB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1FWFRFUk5BTFNSQyc+PGZpbGVuYW1lPkVYVEVSTkFMU1JDPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgdmFyaWFibGUgdG8gcG9pbnQgdG8geW91ciBleHRlcm5hbCBzb3VyY2UgY29kZS4KLSAgICAgICAgICAgIEhlcmUgYXJlIHRoZSBzdGF0ZW1lbnRzIHRvIHB1dCBpbiB5b3VyCi0gICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGU6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIElOSEVSSVQgKz0gImV4dGVybmFsc3JjIgotICAgICBFWFRFUk5BTFNSQ19wbi08cmVwbGFjZWFibGU+bXlyZWNpcGU8L3JlcGxhY2VhYmxlPiA9ICI8cmVwbGFjZWFibGU+cGF0aC10by15b3VyLXNvdXJjZS10cmVlPC9yZXBsYWNlYWJsZT4iCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoaXMgbmV4dCBleGFtcGxlIHNob3dzIGhvdyB0byBhY2NvbXBsaXNoIHRoZSBzYW1lIHRoaW5nIGJ5IHNldHRpbmcKLSAgICAgICAgICAgIDxmaWxlbmFtZT5FWFRFUk5BTFNSQzwvZmlsZW5hbWU+IGluIHRoZSByZWNpcGUgaXRzZWxmIG9yIGluIHRoZQotICAgICAgICAgICAgcmVjaXBlJ3MgYXBwZW5kIGZpbGU6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIEVYVEVSTkFMU1JDID0gIjxyZXBsYWNlYWJsZT5wYXRoPC9yZXBsYWNlYWJsZT4iCi0gICAgIEVYVEVSTkFMU1JDX0JVSUxEID0gIjxyZXBsYWNlYWJsZT5wYXRoPC9yZXBsYWNlYWJsZT4iCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBJbiBvcmRlciBmb3IgdGhlc2Ugc2V0dGluZ3MgdG8gdGFrZSBlZmZlY3QsIHlvdSBtdXN0IGdsb2JhbGx5Ci0gICAgICAgICAgICAgICAgb3IgbG9jYWxseSBpbmhlcml0IHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLWV4dGVybmFsc3JjJz48ZmlsZW5hbWU+ZXh0ZXJuYWxzcmM8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgY2xhc3MuCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEJ5IGRlZmF1bHQsIDxmaWxlbmFtZT5leHRlcm5hbHNyYy5iYmNsYXNzPC9maWxlbmFtZT4gYnVpbGRzCi0gICAgICAgICAgICB0aGUgc291cmNlIGNvZGUgaW4gYSBkaXJlY3Rvcnkgc2VwYXJhdGUgZnJvbSB0aGUgZXh0ZXJuYWwgc291cmNlCi0gICAgICAgICAgICBkaXJlY3RvcnkgYXMgc3BlY2lmaWVkIGJ5Ci0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRVhURVJOQUxTUkMnPjxmaWxlbmFtZT5FWFRFUk5BTFNSQzwvZmlsZW5hbWU+PC91bGluaz4uCi0gICAgICAgICAgICBJZiB5b3UgbmVlZCB0byBoYXZlIHRoZSBzb3VyY2UgYnVpbHQgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGluCi0gICAgICAgICAgICB3aGljaCBpdCByZXNpZGVzLCBvciBzb21lIG90aGVyIG5vbWluYXRlZCBkaXJlY3RvcnksIHlvdSBjYW4gc2V0Ci0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRVhURVJOQUxTUkNfQlVJTEQnPjxmaWxlbmFtZT5FWFRFUk5BTFNSQ19CVUlMRDwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgIHRvIHBvaW50IHRvIHRoYXQgZGlyZWN0b3J5OgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBFWFRFUk5BTFNSQ19CVUlMRF9wbi08cmVwbGFjZWFibGU+bXlyZWNpcGU8L3JlcGxhY2VhYmxlPiA9ICI8cmVwbGFjZWFibGU+cGF0aC10by15b3VyLXNvdXJjZS10cmVlPC9yZXBsYWNlYWJsZT4iCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KICAgICA8c2VjdGlvbiBpZD0ic2VsZWN0aW5nLWFuLWluaXRpYWxpemF0aW9uLW1hbmFnZXIiPgogICAgICAgICA8dGl0bGU+U2VsZWN0aW5nIGFuIEluaXRpYWxpemF0aW9uIE1hbmFnZXI8L3RpdGxlPgogCkBAIC04ODYzLDYgKzEwNjE5LDU2NiBAQAogICAgICAgICA8L3NlY3Rpb24+CiAgICAgPC9zZWN0aW9uPgogCisKKworCisgICAgPHNlY3Rpb24gaWQ9J21haW50YWluaW5nLWJ1aWxkLW91dHB1dC1xdWFsaXR5Jz4KKyAgICAgICAgPHRpdGxlPk1haW50YWluaW5nIEJ1aWxkIE91dHB1dCBRdWFsaXR5PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIE1hbnkgZmFjdG9ycyBjYW4gaW5mbHVlbmNlIHRoZSBxdWFsaXR5IG9mIGEgYnVpbGQuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IHVwZ3JhZGUgYSByZWNpcGUgdG8gdXNlIGEgbmV3IHZlcnNpb24gb2YgYW4KKyAgICAgICAgICAgIHVwc3RyZWFtIHNvZnR3YXJlIHBhY2thZ2Ugb3IgeW91IGV4cGVyaW1lbnQgd2l0aCBzb21lIG5ldworICAgICAgICAgICAgY29uZmlndXJhdGlvbiBvcHRpb25zLCBzdWJ0bGUgY2hhbmdlcyBjYW4gb2NjdXIgdGhhdCB5b3UgbWlnaHQKKyAgICAgICAgICAgIG5vdCBkZXRlY3QgdW50aWwgbGF0ZXIuCisgICAgICAgICAgICBDb25zaWRlciB0aGUgY2FzZSB3aGVyZSB5b3VyIHJlY2lwZSBpcyB1c2luZyBhIG5ld2VyIHZlcnNpb24gb2YKKyAgICAgICAgICAgIGFuIHVwc3RyZWFtIHBhY2thZ2UuCisgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIGEgbmV3IHZlcnNpb24gb2YgYSBwaWVjZSBvZiBzb2Z0d2FyZSBtaWdodAorICAgICAgICAgICAgaW50cm9kdWNlIGFuIG9wdGlvbmFsIGRlcGVuZGVuY3kgb24gYW5vdGhlciBsaWJyYXJ5LCB3aGljaCBpcworICAgICAgICAgICAgYXV0by1kZXRlY3RlZC4KKyAgICAgICAgICAgIElmIHRoYXQgbGlicmFyeSBoYXMgYWxyZWFkeSBiZWVuIGJ1aWx0IHdoZW4gdGhlIHNvZnR3YXJlIGlzCisgICAgICAgICAgICBidWlsZGluZywgdGhlIHNvZnR3YXJlIHdpbGwgbGluayB0byB0aGUgYnVpbHQgbGlicmFyeSBhbmQgdGhhdAorICAgICAgICAgICAgbGlicmFyeSB3aWxsIGJlIHB1bGxlZCBpbnRvIHlvdXIgaW1hZ2UgYWxvbmcgd2l0aCB0aGUgbmV3CisgICAgICAgICAgICBzb2Z0d2FyZSBldmVuIGlmIHlvdSBkaWQgbm90IHdhbnQgdGhlIGxpYnJhcnkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtYnVpbGRoaXN0b3J5Jz48ZmlsZW5hbWU+YnVpbGRoaXN0b3J5PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgY2xhc3MgZXhpc3RzIHRvIGhlbHAgeW91IG1haW50YWluIHRoZSBxdWFsaXR5IG9mIHlvdXIgYnVpbGQKKyAgICAgICAgICAgIG91dHB1dC4KKyAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSBjbGFzcyB0byBoaWdobGlnaHQgdW5leHBlY3RlZCBhbmQgcG9zc2libHkKKyAgICAgICAgICAgIHVud2FudGVkIGNoYW5nZXMgaW4gdGhlIGJ1aWxkIG91dHB1dC4KKyAgICAgICAgICAgIFdoZW4geW91IGVuYWJsZSBidWlsZCBoaXN0b3J5LCBpdCByZWNvcmRzIGluZm9ybWF0aW9uIGFib3V0IHRoZQorICAgICAgICAgICAgY29udGVudHMgb2YgZWFjaCBwYWNrYWdlIGFuZCBpbWFnZSBhbmQgdGhlbiBjb21taXRzIHRoYXQKKyAgICAgICAgICAgIGluZm9ybWF0aW9uIHRvIGEgbG9jYWwgR2l0IHJlcG9zaXRvcnkgd2hlcmUgeW91IGNhbiBleGFtaW5lCisgICAgICAgICAgICB0aGUgaW5mb3JtYXRpb24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSByZW1haW5kZXIgb2YgdGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICBIb3cgeW91IGNhbiBlbmFibGUgYW5kIGRpc2FibGUgYnVpbGQgaGlzdG9yeQorICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgIEhvdyB0byB1bmRlcnN0YW5kIHdoYXQgdGhlIGJ1aWxkIGhpc3RvcnkgY29udGFpbnMKKyAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICBIb3cgdG8gbGltaXQgdGhlIGluZm9ybWF0aW9uIHVzZWQgZm9yIGJ1aWxkIGhpc3RvcnkKKyAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICBIb3cgdG8gZXhhbWluZSB0aGUgYnVpbGQgaGlzdG9yeSBmcm9tIGJvdGggYQorICAgICAgICAgICAgICAgICAgIGNvbW1hbmQtbGluZSBhbmQgd2ViIGludGVyZmFjZQorICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdlbmFibGluZy1hbmQtZGlzYWJsaW5nLWJ1aWxkLWhpc3RvcnknPgorICAgICAgICAgICAgPHRpdGxlPkVuYWJsaW5nIGFuZCBEaXNhYmxpbmcgQnVpbGQgSGlzdG9yeTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJ1aWxkIGhpc3RvcnkgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICBUbyBlbmFibGUgaXQsIGFkZCB0aGUgZm9sbG93aW5nIDxmaWxlbmFtZT5JTkhFUklUPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgYW5kIHNldCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQlVJTERISVNUT1JZX0NPTU1JVCc+PGZpbGVuYW1lPkJVSUxESElTVE9SWV9DT01NSVQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gIjEiIGF0IHRoZSBlbmQgb2YgeW91cgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz46CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTkhFUklUICs9ICJidWlsZGhpc3RvcnkiCisgICAgIEJVSUxESElTVE9SWV9DT01NSVQgPSAiMSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgRW5hYmxpbmcgYnVpbGQgaGlzdG9yeSBhcyBwcmV2aW91c2x5IGRlc2NyaWJlZCBjYXVzZXMgdGhlCisgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBjb2xsZWN0IGJ1aWxkIG91dHB1dCBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgIGFuZCBjb21taXQgaXQgYXMgYSBzaW5nbGUgY29tbWl0IHRvIGEgbG9jYWwKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2dpdCc+R2l0PC91bGluaz4KKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBFbmFibGluZyBidWlsZCBoaXN0b3J5IGluY3JlYXNlcyB5b3VyIGJ1aWxkIHRpbWVzIHNsaWdodGx5LAorICAgICAgICAgICAgICAgICAgICBwYXJ0aWN1bGFybHkgZm9yIGltYWdlcywgYW5kIGluY3JlYXNlcyB0aGUgYW1vdW50IG9mIGRpc2sKKyAgICAgICAgICAgICAgICAgICAgc3BhY2UgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiBkaXNhYmxlIGJ1aWxkIGhpc3RvcnkgYnkgcmVtb3ZpbmcgdGhlIHByZXZpb3VzCisgICAgICAgICAgICAgICAgc3RhdGVtZW50cyBmcm9tIHlvdXIgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSd1bmRlcnN0YW5kaW5nLXdoYXQtdGhlLWJ1aWxkLWhpc3RvcnktY29udGFpbnMnPgorICAgICAgICAgICAgPHRpdGxlPlVuZGVyc3RhbmRpbmcgV2hhdCB0aGUgQnVpbGQgSGlzdG9yeSBDb250YWluczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJ1aWxkIGhpc3RvcnkgaW5mb3JtYXRpb24gaXMga2VwdCBpbgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRPUERJUic+PGZpbGVuYW1lPlRPUERJUjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fS9idWlsZGhpc3Rvcnk8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkgYXMgZGVmaW5lZCBieSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQlVJTERISVNUT1JZX0RJUic+PGZpbGVuYW1lPkJVSUxESElTVE9SWV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIGFiYnJldmlhdGVkIGxpc3Rpbmc6CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2J1aWxkaGlzdG9yeS5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI2aW4iIGRlcHRoPSI0aW4iIC8+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEF0IHRoZSB0b3AgbGV2ZWwsIGEgPGZpbGVuYW1lPm1ldGFkYXRhLXJldnM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGUgZXhpc3RzIHRoYXQgbGlzdHMgdGhlIHJldmlzaW9ucyBvZiB0aGUgcmVwb3NpdG9yaWVzIGZvcgorICAgICAgICAgICAgICAgIHRoZSBlbmFibGVkIGxheWVycyB3aGVuIHRoZSBidWlsZCB3YXMgcHJvZHVjZWQuCisgICAgICAgICAgICAgICAgVGhlIHJlc3Qgb2YgdGhlIGRhdGEgc3BsaXRzIGludG8gc2VwYXJhdGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZXM8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmltYWdlczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5zZGs8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcywgdGhlIGNvbnRlbnRzIG9mCisgICAgICAgICAgICAgICAgd2hpY2ggYXJlIGRlc2NyaWJlZCBhcyBmb2xsb3dzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nYnVpbGQtaGlzdG9yeS1wYWNrYWdlLWluZm9ybWF0aW9uJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+QnVpbGQgSGlzdG9yeSBQYWNrYWdlIEluZm9ybWF0aW9uPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgaGlzdG9yeSBmb3IgZWFjaCBwYWNrYWdlIGNvbnRhaW5zIGEgdGV4dCBmaWxlIHRoYXQgaGFzCisgICAgICAgICAgICAgICAgICAgIG5hbWUtdmFsdWUgcGFpcnMgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZGhpc3RvcnkvcGFja2FnZXMvaTU4Ni1wb2t5LWxpbnV4L2J1c3lib3gvYnVzeWJveC9sYXRlc3Q8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjb250YWlucyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBWID0gMS4yMi4xCisgICAgIFBSID0gcjMyCisgICAgIFJQUk9WSURFUyA9CisgICAgIFJERVBFTkRTID0gZ2xpYmMgKD49IDIuMjApIHVwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZworICAgICBSUkVDT01NRU5EUyA9IGJ1c3lib3gtc3lzbG9nIGJ1c3lib3gtdWRoY3BjIHVwZGF0ZS1yYy5kCisgICAgIFBLR1NJWkUgPSA1NDAxNjgKKyAgICAgRklMRVMgPSAvdXNyL2Jpbi8qIC91c3Ivc2Jpbi8qIC91c3IvbGliL2J1c3lib3gvKiAvdXNyL2xpYi9saWIqLnNvLiogXAorICAgICAgICAvZXRjIC9jb20gL3ZhciAvYmluLyogL3NiaW4vKiAvbGliLyouc28uKiAvbGliL3VkZXYvcnVsZXMuZCBcCisgICAgICAgIC91c3IvbGliL3VkZXYvcnVsZXMuZCAvdXNyL3NoYXJlL2J1c3lib3ggL3Vzci9saWIvYnVzeWJveC8qIFwKKyAgICAgICAgL3Vzci9zaGFyZS9waXhtYXBzIC91c3Ivc2hhcmUvYXBwbGljYXRpb25zIC91c3Ivc2hhcmUvaWRsIFwKKyAgICAgICAgL3Vzci9zaGFyZS9vbWYgL3Vzci9zaGFyZS9zb3VuZHMgL3Vzci9saWIvYm9ub2JvL3NlcnZlcnMKKyAgICAgRklMRUxJU1QgPSAvYmluL2J1c3lib3ggL2Jpbi9idXN5Ym94Lm5vc3VpZCAvYmluL2J1c3lib3guc3VpZCAvYmluL3NoIFwKKyAgICAgICAgL2V0Yy9idXN5Ym94LmxpbmtzLm5vc3VpZCAvZXRjL2J1c3lib3gubGlua3Muc3VpZAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIE1vc3Qgb2YgdGhlc2UgbmFtZS12YWx1ZSBwYWlycyBjb3JyZXNwb25kIHRvIHZhcmlhYmxlcworICAgICAgICAgICAgICAgICAgICB1c2VkIHRvIHByb2R1Y2UgdGhlIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoZSBleGNlcHRpb25zIGFyZSA8ZmlsZW5hbWU+RklMRUxJU1Q8L2ZpbGVuYW1lPiwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgaXMgdGhlIGFjdHVhbCBsaXN0IG9mIGZpbGVzIGluIHRoZSBwYWNrYWdlLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBLR1NJWkU8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgdGhlIHRvdGFsIHNpemUgb2YKKyAgICAgICAgICAgICAgICAgICAgZmlsZXMgaW4gdGhlIHBhY2thZ2UgaW4gYnl0ZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEEgZmlsZSBhbHNvIGV4aXN0cyB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSByZWNpcGUgZnJvbQorICAgICAgICAgICAgICAgICAgICB3aGljaCB0aGUgcGFja2FnZSBjYW1lIChlLmcuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZGhpc3RvcnkvcGFja2FnZXMvaTU4Ni1wb2t5LWxpbnV4L2J1c3lib3gvbGF0ZXN0PC9maWxlbmFtZT4pOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBWID0gMS4yMi4xCisgICAgIFBSID0gcjMyCisgICAgIERFUEVORFMgPSBpbml0c2NyaXB0cyBrZXJuLXRvb2xzLW5hdGl2ZSB1cGRhdGUtcmMuZC1uYXRpdmUgXAorICAgICAgICB2aXJ0dWFsL2k1ODYtcG9reS1saW51eC1jb21waWxlcmxpYnMgdmlydHVhbC9pNTg2LXBva3ktbGludXgtZ2NjIFwKKyAgICAgICAgdmlydHVhbC9saWJjIHZpcnR1YWwvdXBkYXRlLWFsdGVybmF0aXZlcworICAgICBQQUNLQUdFUyA9IGJ1c3lib3gtcHRlc3QgYnVzeWJveC1odHRwZCBidXN5Ym94LXVkaGNwZCBidXN5Ym94LXVkaGNwYyBcCisgICAgICAgIGJ1c3lib3gtc3lzbG9nIGJ1c3lib3gtbWRldiBidXN5Ym94LWh3Y2xvY2sgYnVzeWJveC1kYmcgXAorICAgICAgICBidXN5Ym94LXN0YXRpY2RldiBidXN5Ym94LWRldiBidXN5Ym94LWRvYyBidXN5Ym94LWxvY2FsZSBidXN5Ym94CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRmluYWxseSwgZm9yIHRob3NlIHJlY2lwZXMgZmV0Y2hlZCBmcm9tIGEgdmVyc2lvbiBjb250cm9sCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSAoZS5nLiwgR2l0KSwgYSBmaWxlIGV4aXN0cyB0aGF0IGxpc3RzIHNvdXJjZQorICAgICAgICAgICAgICAgICAgICByZXZpc2lvbnMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIHRoZSByZWNpcGUgYW5kIGxpc3RzCisgICAgICAgICAgICAgICAgICAgIHRoZSBhY3R1YWwgcmV2aXNpb25zIHVzZWQgZHVyaW5nIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgTGlzdGVkIGFuZCBhY3R1YWwgcmV2aXNpb25zIG1pZ2h0IGRpZmZlciB3aGVuCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNSRVYnPjxmaWxlbmFtZT5TUkNSRVY8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAkezx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1BVVRPUkVWJz48ZmlsZW5hbWU+QVVUT1JFVjwvZmlsZW5hbWU+PC91bGluaz59LgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgYXNzdW1pbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeS9wYWNrYWdlcy9xZW11eDg2LXBva3ktbGludXgvbGludXgteW9jdG8vbGF0ZXN0X3NyY3JldjwvZmlsZW5hbWU+KToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAjIFNSQ1JFVl9tYWNoaW5lID0gIjM4Y2Q1NjBkNTAyMmVkMmRiZDFhYjBkY2E5NjQyZTQ3Yzk4YTBhYTEiCisgICAgIFNSQ1JFVl9tYWNoaW5lID0gIjM4Y2Q1NjBkNTAyMmVkMmRiZDFhYjBkY2E5NjQyZTQ3Yzk4YTBhYTEiCisgICAgICMgU1JDUkVWX21ldGEgPSAiYTIyN2YyMGVmZjA1NmU1MTFkNTA0YjJlNDkwZjM3NzRhYjI2MGQ2ZiIKKyAgICAgU1JDUkVWX21ldGEgPSAiYTIyN2YyMGVmZjA1NmU1MTFkNTA0YjJlNDkwZjM3NzRhYjI2MGQ2ZiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeS1jb2xsZWN0LXNyY3JldnM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjb21tYW5kIHdpdGggdGhlIDxmaWxlbmFtZT4tYTwvZmlsZW5hbWU+IG9wdGlvbiB0bworICAgICAgICAgICAgICAgICAgICBjb2xsZWN0IHRoZSBzdG9yZWQgPGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+IHZhbHVlcworICAgICAgICAgICAgICAgICAgICBmcm9tIGJ1aWxkIGhpc3RvcnkgYW5kIHJlcG9ydCB0aGVtIGluIGEgZm9ybWF0IHN1aXRhYmxlIGZvcgorICAgICAgICAgICAgICAgICAgICB1c2UgaW4gZ2xvYmFsIGNvbmZpZ3VyYXRpb24gKGUuZy4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gb3IgYSBkaXN0cm8gaW5jbHVkZSBmaWxlKQorICAgICAgICAgICAgICAgICAgICB0byBvdmVycmlkZSBmbG9hdGluZyA8ZmlsZW5hbWU+QVVUT1JFVjwvZmlsZW5hbWU+IHZhbHVlcworICAgICAgICAgICAgICAgICAgICB0byBhIGZpeGVkIHNldCBvZiByZXZpc2lvbnMuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgc29tZSBleGFtcGxlIG91dHB1dCBmcm9tIHRoaXMgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJ1aWxkaGlzdG9yeS1jb2xsZWN0LXNyY3JldnMgLWEKKyAgICAgIyBpNTg2LXBva3ktbGludXgKKyAgICAgU1JDUkVWX3BuLWdsaWJjID0gImI4MDc5ZGQwZDM2MDY0OGU0ZThkZTQ4NjU2YzVjMzg5NzI2MjEwNzIiCisgICAgIFNSQ1JFVl9wbi1nbGliYy1pbml0aWFsID0gImI4MDc5ZGQwZDM2MDY0OGU0ZThkZTQ4NjU2YzVjMzg5NzI2MjEwNzIiCisgICAgIFNSQ1JFVl9wbi1vcGtnLXV0aWxzID0gIjUzMjc0ZjA4NzU2NWZkNDVkODQ1MmM1MzY3OTk3YmE2YTY4MmEzN2EiCisgICAgIFNSQ1JFVl9wbi1rbW9kID0gImZkNTY2MzhhZWQzZmUxNDcwMTViZmExMGVkNGE1Zjc0OTEzMDNjYjQiCisgICAgICMgeDg2XzY0LWxpbnV4CisgICAgIFNSQ1JFVl9wbi1ndGstZG9jLXN0dWItbmF0aXZlID0gIjFkZWEyNjY1OTNlZGI3NjZkNmQ4OThjNzk0NTFlZjE5M2ViMTdjZmEiCisgICAgIFNSQ1JFVl9wbi1kdGMtbmF0aXZlID0gIjY1Y2M0ZDI3NDhhMmMyZTZmMjdmMWNmMzllMDdhNWRiYWJkODBlYmYiCisgICAgIFNSQ1JFVl9wbi11cGRhdGUtcmMuZC1uYXRpdmUgPSAiZWNhNjgwZGRmMjhkMDI0OTU0ODk1ZjU5YTI0MWE2MjJkZDU3NWMxMSIKKyAgICAgU1JDUkVWX2dsaWJjX3BuLWNyb3NzLWxvY2FsZWRlZi1uYXRpdmUgPSAiYjgwNzlkZDBkMzYwNjQ4ZTRlOGRlNDg2NTZjNWMzODk3MjYyMTA3MiIKKyAgICAgU1JDUkVWX2xvY2FsZWRlZl9wbi1jcm9zcy1sb2NhbGVkZWYtbmF0aXZlID0gImM4MzMzNjczNDhkMzlkYWQ3YmEwMTg5OTBiZmRhZmZhZWM4ZTllZDMiCisgICAgIFNSQ1JFVl9wbi1wcmVsaW5rLW5hdGl2ZSA9ICJmYWEwNjlkZWVjOTliZjYxNDE4ZDBiYWI4MzFjODNkN2MxYjc5N2NhIgorICAgICBTUkNSRVZfcG4tb3BrZy11dGlscy1uYXRpdmUgPSAiNTMyNzRmMDg3NTY1ZmQ0NWQ4NDUyYzUzNjc5OTdiYTZhNjgyYTM3YSIKKyAgICAgU1JDUkVWX3BuLWtlcm4tdG9vbHMtbmF0aXZlID0gIjIzMzQ1Yjg4NDZmZTRiZDE2N2VmZGYxYmQ4YTEyMjRiMmJhOWE1ZmYiCisgICAgIFNSQ1JFVl9wbi1rbW9kLW5hdGl2ZSA9ICJmZDU2NjM4YWVkM2ZlMTQ3MDE1YmZhMTBlZDRhNWY3NDkxMzAzY2I0IgorICAgICAjIHFlbXV4ODYtcG9reS1saW51eAorICAgICBTUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0byA9ICIzOGNkNTYwZDUwMjJlZDJkYmQxYWIwZGNhOTY0MmU0N2M5OGEwYWExIgorICAgICBTUkNSRVZfbWV0YV9wbi1saW51eC15b2N0byA9ICJhMjI3ZjIwZWZmMDU2ZTUxMWQ1MDRiMmU0OTBmMzc3NGFiMjYwZDZmIgorICAgICAjIGFsbC1wb2t5LWxpbnV4CisgICAgIFNSQ1JFVl9wbi11cGRhdGUtcmMuZCA9ICJlY2E2ODBkZGYyOGQwMjQ5NTQ4OTVmNTlhMjQxYTYyMmRkNTc1YzExIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBhcmUgc29tZSBub3RlcyBvbiB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZGhpc3RvcnktY29sbGVjdC1zcmNyZXZzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgb25seSB2YWx1ZXMgd2hlcmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNSRVY8L2ZpbGVuYW1lPiB3YXMgbm90IGhhcmRjb2RlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodXN1YWxseSB3aGVuIDxmaWxlbmFtZT5BVVRPUkVWPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgdXNlZCkgYXJlIHJlcG9ydGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT4tYTwvZmlsZW5hbWU+IG9wdGlvbiB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWUgYWxsIDxmaWxlbmFtZT5TUkNSRVY8L2ZpbGVuYW1lPiB2YWx1ZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG91dHB1dCBzdGF0ZW1lbnRzIG1pZ2h0IG5vdCBoYXZlIGFueSBlZmZlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgb3ZlcnJpZGVzIGFyZSBhcHBsaWVkIGVsc2V3aGVyZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPi1mPC9maWxlbmFtZT4gb3B0aW9uIHRvIGFkZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmZvcmNldmFyaWFibGU8L2ZpbGVuYW1lPiBvdmVycmlkZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBlYWNoIG91dHB1dCBsaW5lIGlmIHlvdSBuZWVkIHRvIHdvcmsgYXJvdW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgcmVzdHJpY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHNjcmlwdCBkb2VzIGFwcGx5IHNwZWNpYWwgaGFuZGxpbmcgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGluZyBmb3IgbXVsdGlwbGUgbWFjaGluZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBzY3JpcHQgZG9lcyBwbGFjZSBhIGNvbW1lbnQgYmVmb3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhY2ggc2V0IG9mIHZhbHVlcyB0aGF0IHNwZWNpZmllcyB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlwbGV0IHRvIHdoaWNoIHRoZXkgYmVsb25nIGFzIHByZXZpb3VzbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd24gKGUuZy4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pNTg2LXBva3ktbGludXg8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdidWlsZC1oaXN0b3J5LWltYWdlLWluZm9ybWF0aW9uJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+QnVpbGQgSGlzdG9yeSBJbWFnZSBJbmZvcm1hdGlvbjwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpbGVzIHByb2R1Y2VkIGZvciBlYWNoIGltYWdlIGFyZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbWFnZS1maWxlczo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgc2VsZWN0ZWQgZmlsZXMgZnJvbSB0aGUgcm9vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZpbGVzIGFyZSBkZWZpbmVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJVSUxESElTVE9SWV9JTUFHRV9GSUxFUyc+PGZpbGVuYW1lPkJVSUxESElTVE9SWV9JTUFHRV9GSUxFUzwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkLWlkLnR4dDo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh1bWFuLXJlYWRhYmxlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gYW5kIG1ldGFkYXRhIHNvdXJjZSByZXZpc2lvbnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBmdWxsIGJ1aWxkIGhlYWRlciBhcyBwcmludGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgQml0QmFrZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5kb3Q6PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXBlbmRlbmN5IGdyYXBocyBmb3IgdGhlIGltYWdlIHRoYXQgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSB3aXRoIDxmaWxlbmFtZT5ncmFwaHZpejwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5maWxlcy1pbi1pbWFnZS50eHQ6PC9maWxlbmFtZT4KKyAJICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGZpbGVzIGluIHRoZSBpbWFnZSB3aXRoIHBlcm1pc3Npb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG93bmVyLCBncm91cCwgc2l6ZSwgYW5kIHN5bWxpbmsgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmltYWdlLWluZm8udHh0OjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSB0ZXh0IGZpbGUgY29udGFpbmluZyBuYW1lLXZhbHVlIHBhaXJzIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBmb2xsb3dpbmcgbGlzdGluZyBleGFtcGxlIGZvciBtb3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmluc3RhbGxlZC1wYWNrYWdlLW5hbWVzLnR4dDo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBpbnN0YWxsZWQgcGFja2FnZXMgYnkgbmFtZSBvbmx5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbnN0YWxsZWQtcGFja2FnZS1zaXplcy50eHQ6PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgaW5zdGFsbGVkIHBhY2thZ2VzIG9yZGVyZWQgYnkgc2l6ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5zdGFsbGVkLXBhY2thZ2VzLnR4dDo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBpbnN0YWxsZWQgcGFja2FnZXMgd2l0aCBmdWxsIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxlZCBwYWNrYWdlIGluZm9ybWF0aW9uIGlzIGFibGUgdG8gYmUgZ2F0aGVyZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBwcm9kdWNlZCBldmVuIGlmIHBhY2thZ2UgbWFuYWdlbWVudCBpcyBkaXNhYmxlZAorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBmaW5hbCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgb2YgPGZpbGVuYW1lPmltYWdlLWluZm8udHh0PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRElTVFJPID0gcG9reQorICAgICBESVNUUk9fVkVSU0lPTiA9IDEuNworICAgICBVU0VSX0NMQVNTRVMgPSBidWlsZHN0YXRzIGltYWdlLW1rbGlicyBpbWFnZS1wcmVsaW5rCisgICAgIElNQUdFX0NMQVNTRVMgPSBpbWFnZV90eXBlcworICAgICBJTUFHRV9GRUFUVVJFUyA9IGRlYnVnLXR3ZWFrcworICAgICBJTUFHRV9MSU5HVUFTID0KKyAgICAgSU1BR0VfSU5TVEFMTCA9IHBhY2thZ2Vncm91cC1jb3JlLWJvb3QgcnVuLXBvc3RpbnN0cworICAgICBCQURfUkVDT01NRU5EQVRJT05TID0KKyAgICAgTk9fUkVDT01NRU5EQVRJT05TID0KKyAgICAgUEFDS0FHRV9FWENMVURFID0KKyAgICAgUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQgPSB3cml0ZV9wYWNrYWdlX21hbmlmZXN0OyBsaWNlbnNlX2NyZWF0ZV9tYW5pZmVzdDsgXAorICAgICAgICB3cml0ZV9pbWFnZV9tYW5pZmVzdCA7IGJ1aWxkaGlzdG9yeV9saXN0X2luc3RhbGxlZF9pbWFnZSA7IFwKKyAgICAgICAgYnVpbGRoaXN0b3J5X2dldF9pbWFnZV9pbnN0YWxsZWQgOyBzc2hfYWxsb3dfZW1wdHlfcGFzc3dvcmQ7ICBcCisgICAgICAgIHBvc3RpbnN0X2VuYWJsZV9sb2dnaW5nOyByb290ZnNfdXBkYXRlX3RpbWVzdGFtcCA7IHNzaF9kaXNhYmxlX2Ruc19sb29rdXAgOworICAgICBJTUFHRV9QT1NUUFJPQ0VTU19DT01NQU5EID0gICBidWlsZGhpc3RvcnlfZ2V0X2ltYWdlaW5mbyA7CisgICAgIElNQUdFU0laRSA9IDY5MDAKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBPdGhlciB0aGFuIDxmaWxlbmFtZT5JTUFHRVNJWkU8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgdGhlCisgICAgICAgICAgICAgICAgICAgIHRvdGFsIHNpemUgb2YgdGhlIGZpbGVzIGluIHRoZSBpbWFnZSBpbiBLYnl0ZXMsIHRoZQorICAgICAgICAgICAgICAgICAgICBuYW1lLXZhbHVlIHBhaXJzIGFyZSB2YXJpYWJsZXMgdGhhdCBtYXkgaGF2ZSBpbmZsdWVuY2VkIHRoZQorICAgICAgICAgICAgICAgICAgICBjb250ZW50IG9mIHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBpbmZvcm1hdGlvbiBpcyBvZnRlbiB1c2VmdWwgd2hlbiB5b3UgYXJlIHRyeWluZyB0bworICAgICAgICAgICAgICAgICAgICBkZXRlcm1pbmUgd2h5IGEgY2hhbmdlIGluIHRoZSBwYWNrYWdlIG9yIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgbGlzdGluZ3MgaGFzIG9jY3VycmVkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3VzaW5nLWJ1aWxkLWhpc3RvcnktdG8tZ2F0aGVyLWltYWdlLWluZm9ybWF0aW9uLW9ubHknPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBCdWlsZCBIaXN0b3J5IHRvIEdhdGhlciBJbWFnZSBJbmZvcm1hdGlvbiBPbmx5PC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBcyB5b3UgY2FuIHNlZSwgYnVpbGQgaGlzdG9yeSBwcm9kdWNlcyBpbWFnZSBpbmZvcm1hdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGRlcGVuZGVuY3kgZ3JhcGhzLCBzbyB5b3UgY2FuIHNlZSB3aHkgc29tZXRoaW5nCisgICAgICAgICAgICAgICAgICAgIHdhcyBwdWxsZWQgaW50byB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUganVzdCBpbnRlcmVzdGVkIGluIHRoaXMgaW5mb3JtYXRpb24gYW5kIG5vdAorICAgICAgICAgICAgICAgICAgICBpbnRlcmVzdGVkIGluIGNvbGxlY3Rpbmcgc3BlY2lmaWMgcGFja2FnZSBvciBTREsKKyAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24sIHlvdSBjYW4gZW5hYmxlIHdyaXRpbmcgb25seSBpbWFnZSBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgICAgICB3aXRob3V0IGFueSBoaXN0b3J5IGJ5IGFkZGluZyB0aGUgZm9sbG93aW5nIHRvIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgZm91bmQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU5IRVJJVCArPSAiYnVpbGRoaXN0b3J5IgorICAgICBCVUlMREhJU1RPUllfQ09NTUlUID0gIjAiCisgICAgIEJVSUxESElTVE9SWV9GRUFUVVJFUyA9ICJpbWFnZSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBIZXJlLCB5b3Ugc2V0IHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQlVJTERISVNUT1JZX0ZFQVRVUkVTJz48ZmlsZW5hbWU+QlVJTERISVNUT1JZX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byB1c2UgdGhlIGltYWdlIGZlYXR1cmUgb25seS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdidWlsZC1oaXN0b3J5LXNkay1pbmZvcm1hdGlvbic+CisgICAgICAgICAgICAgICAgPHRpdGxlPkJ1aWxkIEhpc3RvcnkgU0RLIEluZm9ybWF0aW9uPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCdWlsZCBoaXN0b3J5IGNvbGxlY3RzIHNpbWlsYXIgaW5mb3JtYXRpb24gb24gdGhlIGNvbnRlbnRzCisgICAgICAgICAgICAgICAgICAgIG9mIFNES3MKKyAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPmJpdGJha2UgLWMgcG9wdWxhdGVfc2RrIGltYWdlbmFtZTwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICBhcyBjb21wYXJlZCB0byBpbmZvcm1hdGlvbiBpdCBjb2xsZWN0cyBmb3IgaW1hZ2VzLgorICAgICAgICAgICAgICAgICAgICBGdXJ0aGVybW9yZSwgdGhpcyBpbmZvcm1hdGlvbiBkaWZmZXJzIGRlcGVuZGluZyBvbiB3aGV0aGVyCisgICAgICAgICAgICAgICAgICAgIGFuIGV4dGVuc2libGUgb3Igc3RhbmRhcmQgU0RLIGlzIGJlaW5nIHByb2R1Y2VkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3Qgc2hvd3MgdGhlIGZpbGVzIHByb2R1Y2VkIGZvciBTREtzOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5maWxlcy1pbi1zZGsudHh0OjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGZpbGVzIGluIHRoZSBTREsgd2l0aCBwZXJtaXNzaW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd25lciwgZ3JvdXAsIHNpemUsIGFuZCBzeW1saW5rIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbGlzdCBpbmNsdWRlcyBib3RoIHRoZSBob3N0IGFuZCB0YXJnZXQgcGFydHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgU0RLLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZGstaW5mby50eHQ6PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIHRleHQgZmlsZSBjb250YWluaW5nIG5hbWUtdmFsdWUgcGFpcnMgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBmb2xsb3dpbmcgbGlzdGluZyBleGFtcGxlIGZvciBtb3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNzdGF0ZS10YXNrLXNpemVzLnR4dDo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgdGV4dCBmaWxlIGNvbnRhaW5pbmcgbmFtZS12YWx1ZSBwYWlycyB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gYWJvdXQgdGFzayBncm91cCBzaXplcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrcyBoYXZlIGEgdG90YWwgc2l6ZSkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5zc3RhdGUtdGFzay1zaXplcy50eHQ8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RzIG9ubHkgd2hlbiBhbiBleHRlbnNpYmxlIFNESyBpcyBjcmVhdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc3RhdGUtcGFja2FnZS1zaXplcy50eHQ6PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIHRleHQgZmlsZSBjb250YWluaW5nIG5hbWUtdmFsdWUgcGFpcnMgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIGZvciB0aGUgc2hhcmVkLXN0YXRlIHBhY2thZ2VzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzIGluIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5zc3RhdGUtcGFja2FnZS1zaXplcy50eHQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgZXhpc3RzIG9ubHkgd2hlbiBhbiBleHRlbnNpYmxlIFNESyBpcyBjcmVhdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZGstZmlsZXM6PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGZvbGRlciB0aGF0IGNvbnRhaW5zIGNvcGllcyBvZiB0aGUgZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW50aW9uZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QlVJTERISVNUT1JZX1NES19GSUxFUzwvZmlsZW5hbWU+IGlmIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzIGFyZSBwcmVzZW50IGluIHRoZSBvdXRwdXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUgZGVmYXVsdCB2YWx1ZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CVUlMREhJU1RPUllfU0RLX0ZJTEVTPC9maWxlbmFtZT4gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyB0byB0aGUgZXh0ZW5zaWJsZSBTREsgYWx0aG91Z2ggeW91IGNhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldCBpdCBkaWZmZXJlbnRseSBpZiB5b3Ugd291bGQgbGlrZSB0byBwdWxsIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgZmlsZXMgZnJvbSB0aGUgc3RhbmRhcmQgU0RLLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBkZWZhdWx0IGZpbGVzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9iYmxheWVycy5jb25mPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvYXV0by5jb25mPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9ja2VkLXNpZ3MuaW5jPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2RldnRvb2wuY29uZjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRodXMsIGZvciBhbiBleHRlbnNpYmxlIFNESywgdGhlc2UgZmlsZXMgZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29waWVkIGludG8gdGhlIDxmaWxlbmFtZT5zZGstZmlsZXM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGFwcGVhcnMgdW5kZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYWNoIG9mIHRoZSA8ZmlsZW5hbWU+aG9zdDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT50YXJnZXQ8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgcG9ydGlvbnMgb2YgdGhlIFNESyB0aGF0IHJ1biBvbiB0aGUgaG9zdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBvbiB0aGUgdGFyZ2V0LCByZXNwZWN0aXZlbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZmlsZXMgZm9yIHRoZSBtb3N0IHBhcnQgYXJlIGVtcHR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gcHJvZHVjaW5nIGFuIGV4dGVuc2libGUgU0RLIGJlY2F1c2UgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIG9mIFNESyBpcyBub3QgY29uc3RydWN0ZWQgZnJvbSBwYWNrYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBpcyB0aGUgc3RhbmRhcmQgU0RLLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVwZW5kcy5kb3Q6PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcGVuZGVuY3kgZ3JhcGggZm9yIHRoZSBTREsgdGhhdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3JhcGh2aXo8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5zdGFsbGVkLXBhY2thZ2UtbmFtZXMudHh0OjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgaW5zdGFsbGVkIHBhY2thZ2VzIGJ5IG5hbWUgb25seS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5zdGFsbGVkLXBhY2thZ2Utc2l6ZXMudHh0OjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgaW5zdGFsbGVkIHBhY2thZ2VzIG9yZGVyZWQgYnkgc2l6ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5zdGFsbGVkLXBhY2thZ2VzLnR4dDo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGluc3RhbGxlZCBwYWNrYWdlcyB3aXRoIGZ1bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgZmlsZW5hbWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIG9mIDxmaWxlbmFtZT5zZGstaW5mby50eHQ8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBESVNUUk8gPSBwb2t5CisgICAgIERJU1RST19WRVJTSU9OID0gMS4zK3NuYXBzaG90LTIwMTMwMzI3CisgICAgIFNES19OQU1FID0gcG9reS1nbGliYy1pNjg2LWFybQorICAgICBTREtfVkVSU0lPTiA9IDEuMytzbmFwc2hvdAorICAgICBTREtNQUNISU5FID0KKyAgICAgU0RLSU1BR0VfRkVBVFVSRVMgPSBkZXYtcGtncyBkYmctcGtncworICAgICBCQURfUkVDT01NRU5EQVRJT05TID0KKyAgICAgU0RLU0laRSA9IDM1MjcxMgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIE90aGVyIHRoYW4gPGZpbGVuYW1lPlNES1NJWkU8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgdGhlCisgICAgICAgICAgICAgICAgICAgIHRvdGFsIHNpemUgb2YgdGhlIGZpbGVzIGluIHRoZSBTREsgaW4gS2J5dGVzLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgbmFtZS12YWx1ZSBwYWlycyBhcmUgdmFyaWFibGVzIHRoYXQgbWlnaHQgaGF2ZSBpbmZsdWVuY2VkCisgICAgICAgICAgICAgICAgICAgIHRoZSBjb250ZW50IG9mIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgaW5mb3JtYXRpb24gaXMgb2Z0ZW4gdXNlZnVsIHdoZW4geW91IGFyZSB0cnlpbmcgdG8KKyAgICAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lIHdoeSBhIGNoYW5nZSBpbiB0aGUgcGFja2FnZSBvciBmaWxlIGxpc3RpbmdzCisgICAgICAgICAgICAgICAgICAgIGhhcyBvY2N1cnJlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdleGFtaW5pbmctYnVpbGQtaGlzdG9yeS1pbmZvcm1hdGlvbic+CisgICAgICAgICAgICAgICAgPHRpdGxlPkV4YW1pbmluZyBCdWlsZCBIaXN0b3J5IEluZm9ybWF0aW9uPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGV4YW1pbmUgYnVpbGQgaGlzdG9yeSBvdXRwdXQgZnJvbSB0aGUgY29tbWFuZAorICAgICAgICAgICAgICAgICAgICBsaW5lIG9yIGZyb20gYSB3ZWIgaW50ZXJmYWNlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBzZWUgYW55IGNoYW5nZXMgdGhhdCBoYXZlIG9jY3VycmVkIChhc3N1bWluZyB5b3UgaGF2ZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQlVJTERISVNUT1JZX0NPTU1JVCc+PGZpbGVuYW1lPkJVSUxESElTVE9SWV9DT01NSVQ8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPiZuYnNwOz0gIjEiPC9maWxlbmFtZT4pLAorICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIHNpbXBseSB1c2UgYW55IEdpdCBjb21tYW5kIHRoYXQgYWxsb3dzIHlvdSB0bworICAgICAgICAgICAgICAgICAgICB2aWV3IHRoZSBoaXN0b3J5IG9mIGEgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBvbmUgbWV0aG9kOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAkIGdpdCBsb2cgLXAKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byByZWFsaXplLCBob3dldmVyLCB0aGF0IHRoaXMgbWV0aG9kIGRvZXMgc2hvdworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzIHRoYXQgYXJlIG5vdCBzaWduaWZpY2FudCAoZS5nLiBhIHBhY2thZ2UncyBzaXplCisgICAgICAgICAgICAgICAgICAgIGNoYW5naW5nIGJ5IGEgZmV3IGJ5dGVzKS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQSBjb21tYW5kLWxpbmUgdG9vbCBjYWxsZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeS1kaWZmPC9maWxlbmFtZT4gZG9lcyBleGlzdCwgdGhvdWdoLAorICAgICAgICAgICAgICAgICAgICB0aGF0IHF1ZXJpZXMgdGhlIEdpdCByZXBvc2l0b3J5IGFuZCBwcmludHMganVzdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZXMgdGhhdCBtaWdodCBiZSBzaWduaWZpY2FudCBpbiBodW1hbi1yZWFkYWJsZQorICAgICAgICAgICAgICAgICAgICBmb3JtLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB+L3Bva3kvcG9reS9zY3JpcHRzL2J1aWxkaGlzdG9yeS1kaWZmIC4gSEVBRF4KKyAgICAgQ2hhbmdlcyB0byBpbWFnZXMvcWVtdXg4Nl82NC9nbGliYy9jb3JlLWltYWdlLW1pbmltYWwgKGZpbGVzLWluLWltYWdlLnR4dCk6CisgICAgICAgIC9ldGMvYW5vdGhlcnBrZy5jb25mIHdhcyBhZGRlZAorICAgICAgICAvc2Jpbi9hbm90aGVycGtnIHdhcyBhZGRlZAorICAgICAgICAqIChpbnN0YWxsZWQtcGFja2FnZS1uYW1lcy50eHQpOgorICAgICAgICAqICAgYW5vdGhlcnBrZyB3YXMgYWRkZWQKKyAgICAgQ2hhbmdlcyB0byBpbWFnZXMvcWVtdXg4Nl82NC9nbGliYy9jb3JlLWltYWdlLW1pbmltYWwgKGluc3RhbGxlZC1wYWNrYWdlLW5hbWVzLnR4dCk6CisgICAgICAgIGFub3RoZXJwa2cgd2FzIGFkZGVkCisgICAgIHBhY2thZ2VzL3FlbXV4ODZfNjQtcG9reS1saW51eC92ODZkOiBQQUNLQUdFUzogYWRkZWQgInY4NmQtZXh0cmFzIgorICAgICAgICAqIFBSIGNoYW5nZWQgZnJvbSAicjAiIHRvICJyMSIKKyAgICAgICAgKiBQViBjaGFuZ2VkIGZyb20gIjAuMS4xMCIgdG8gIjAuMS4xMiIKKyAgICAgcGFja2FnZXMvcWVtdXg4Nl82NC1wb2t5LWxpbnV4L3Y4NmQvdjg2ZDogUEtHU0laRSBjaGFuZ2VkIGZyb20gMTEwNTc5IHRvIDE0NDM4MSAoKzMwJSkKKyAgICAgICAgKiBQUiBjaGFuZ2VkIGZyb20gInIwIiB0byAicjEiCisgICAgICAgICogUFYgY2hhbmdlZCBmcm9tICIwLjEuMTAiIHRvICIwLjEuMTIiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeS1kaWZmPC9maWxlbmFtZT4gdG9vbAorICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXMgdGhlIDxmaWxlbmFtZT5HaXRQeXRob248L2ZpbGVuYW1lPiBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBpbnN0YWxsIGl0IHVzaW5nIFBpcDMgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICQgcGlwMyBpbnN0YWxsIEdpdFB5dGhvbiAtLXVzZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gaW5zdGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnB5dGhvbjMtZ2l0PC9maWxlbmFtZT4gdXNpbmcgdGhlIGFwcHJvcHJpYXRlCisgICAgICAgICAgICAgICAgICAgICAgICBkaXN0cmlidXRpb24gcGFja2FnZSBtYW5hZ2VyIChlLmcuCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXB0LWdldDwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+ZG5mPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICBvciA8ZmlsZW5hbWU+emlwcGVyPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIHNlZSBjaGFuZ2VzIHRvIHRoZSBidWlsZCBoaXN0b3J5IHVzaW5nIGEgd2ViIGludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgZm9sbG93IHRoZSBpbnN0cnVjdGlvbiBpbiB0aGUgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgaGVyZS4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvYnVpbGRoaXN0b3J5LXdlYi8nPjwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGEgc2FtcGxlIHNjcmVlbnNob3Qgb2YgdGhlIGludGVyZmFjZToKKyAgICAgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2J1aWxkaGlzdG9yeS13ZWIucG5nIiBhbGlnbj0iY2VudGVyIiBzY2FsZWZpdD0iMSIgd2lkdGg9IjEzMCUiIGNvbnRlbnRkZXB0aD0iMTMwJSIgLz4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKICAgICA8c2VjdGlvbiBpZD0icGVyZm9ybWluZy1hdXRvbWF0ZWQtcnVudGltZS10ZXN0aW5nIj4KICAgICAgICAgPHRpdGxlPlBlcmZvcm1pbmcgQXV0b21hdGVkIFJ1bnRpbWUgVGVzdGluZzwvdGl0bGU+CiAKQEAgLTg5MjYsNiArMTEyNDIsMjUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIHNob3VsZCBnZW5lcmF0ZSBhIGxpc3Qgb2YgdGFwIGRldmljZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIHRoZSBvcHRpb24gdHlwaWNhbGx5IGNob3NlbiBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dG9idWlsZGVyLXR5cGUgZW52aXJvbm1lbnRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHVzZSBhbiBhYnNvbHV0ZSBwYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIGNhbGxpbmcgdGhpcyBzY3JpcHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggc3Vkby4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcGFja2FnZSByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11LWhlbHBlci1uYXRpdmU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgcmVxdWlyZWQgdG8gcnVuIHRoaXMgc2NyaXB0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgdGhlIHBhY2thZ2UgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIHFlbXUtaGVscGVyLW5hdGl2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD48L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U2V0IHRoZQpAQCAtOTc2OCwzNjggKzEyMTAzLDEwMDkgQEAKICAgICAgICAgPC9zZWN0aW9uPgogICAgIDwvc2VjdGlvbj4KIAotICAgIDxzZWN0aW9uIGlkPSJwbGF0ZGV2LWdkYi1yZW1vdGVkZWJ1ZyI+Ci0gICAgICAgIDx0aXRsZT5EZWJ1Z2dpbmcgV2l0aCB0aGUgR05VIFByb2plY3QgRGVidWdnZXIgKEdEQikgUmVtb3RlbHk8L3RpdGxlPgorICAgIDxzZWN0aW9uIGlkPSd1c2luZ3Bva3ktZGVidWdnaW5nLXRvb2xzLWFuZC10ZWNobmlxdWVzJz4KKyAgICAgICAgPHRpdGxlPkRlYnVnZ2luZyBUb29scyBhbmQgVGVjaG5pcXVlczwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBHREIgYWxsb3dzIHlvdSB0byBleGFtaW5lIHJ1bm5pbmcgcHJvZ3JhbXMsIHdoaWNoIGluIHR1cm4gaGVscHMgeW91IHRvIHVuZGVyc3RhbmQgYW5kIGZpeCBwcm9ibGVtcy4KLSAgICAgICAgICAgIEl0IGFsc28gYWxsb3dzIHlvdSB0byBwZXJmb3JtIHBvc3QtbW9ydGVtIHN0eWxlIGFuYWx5c2lzIG9mIHByb2dyYW0gY3Jhc2hlcy4KLSAgICAgICAgICAgIEdEQiBpcyBhdmFpbGFibGUgYXMgYSBwYWNrYWdlIHdpdGhpbiB0aGUgWW9jdG8gUHJvamVjdCBhbmQgaXMKLSAgICAgICAgICAgIGluc3RhbGxlZCBpbiBTREsgaW1hZ2VzIGJ5IGRlZmF1bHQuCi0gICAgICAgICAgICBTZWUgdGhlICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtaW1hZ2VzJz5JbWFnZXM8L3VsaW5rPiIgY2hhcHRlcgotICAgICAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVzZSBpbWFnZXMuCi0gICAgICAgICAgICBZb3UgY2FuIGZpbmQgaW5mb3JtYXRpb24gb24gR0RCIGF0IDx1bGluayB1cmw9Imh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9nZGIvIi8+LgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHRpcD4KLSAgICAgICAgICAgIEZvciBiZXN0IHJlc3VsdHMsIGluc3RhbGwgZGVidWcgKDxmaWxlbmFtZT4tZGJnPC9maWxlbmFtZT4pIHBhY2thZ2VzCi0gICAgICAgICAgICBmb3IgdGhlIGFwcGxpY2F0aW9ucyB5b3UgYXJlIGdvaW5nIHRvIGRlYnVnLgotICAgICAgICAgICAgRG9pbmcgc28gbWFrZXMgZXh0cmEgZGVidWcgc3ltYm9scyBhdmFpbGFibGUgdGhhdCBnaXZlIHlvdSBtb3JlCi0gICAgICAgICAgICBtZWFuaW5nZnVsIG91dHB1dC4KLSAgICAgICAgPC90aXA+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBTb21ldGltZXMsIGR1ZSB0byBtZW1vcnkgb3IgZGlzayBzcGFjZSBjb25zdHJhaW50cywgaXQgaXMgbm90IHBvc3NpYmxlCi0gICAgICAgICAgICB0byB1c2UgR0RCIGRpcmVjdGx5IG9uIHRoZSByZW1vdGUgdGFyZ2V0IHRvIGRlYnVnIGFwcGxpY2F0aW9ucy4KLSAgICAgICAgICAgIFRoZXNlIGNvbnN0cmFpbnRzIGFyaXNlIGJlY2F1c2UgR0RCIG5lZWRzIHRvIGxvYWQgdGhlIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBhbmQgdGhlCi0gICAgICAgICAgICBiaW5hcmllcyBvZiB0aGUgcHJvY2VzcyBiZWluZyBkZWJ1Z2dlZC4KLSAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgR0RCIG5lZWRzIHRvIHBlcmZvcm0gbWFueSBjb21wdXRhdGlvbnMgdG8gbG9jYXRlIGluZm9ybWF0aW9uIHN1Y2ggYXMgZnVuY3Rpb24KLSAgICAgICAgICAgIG5hbWVzLCB2YXJpYWJsZSBuYW1lcyBhbmQgdmFsdWVzLCBzdGFjayB0cmFjZXMgYW5kIHNvIGZvcnRoIC0gZXZlbiBiZWZvcmUgc3RhcnRpbmcgdGhlCi0gICAgICAgICAgICBkZWJ1Z2dpbmcgcHJvY2Vzcy4KLSAgICAgICAgICAgIFRoZXNlIGV4dHJhIGNvbXB1dGF0aW9ucyBwbGFjZSBtb3JlIGxvYWQgb24gdGhlIHRhcmdldCBzeXN0ZW0gYW5kIGNhbiBhbHRlciB0aGUKLSAgICAgICAgICAgIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZC4KKyAgICAgICAgICAgIFRoZSBleGFjdCBtZXRob2QgZm9yIGRlYnVnZ2luZyBidWlsZCBmYWlsdXJlcyBkZXBlbmRzIG9uIHRoZSBuYXR1cmUKKyAgICAgICAgICAgIG9mIHRoZSBwcm9ibGVtIGFuZCBvbiB0aGUgc3lzdGVtJ3MgYXJlYSBmcm9tIHdoaWNoIHRoZSBidWcKKyAgICAgICAgICAgIG9yaWdpbmF0ZXMuCisgICAgICAgICAgICBTdGFuZGFyZCBkZWJ1Z2dpbmcgcHJhY3RpY2VzIHN1Y2ggYXMgY29tcGFyaXNvbiBhZ2FpbnN0IHRoZSBsYXN0CisgICAgICAgICAgICBrbm93biB3b3JraW5nIHZlcnNpb24gd2l0aCBleGFtaW5hdGlvbiBvZiB0aGUgY2hhbmdlcyBhbmQgdGhlCisgICAgICAgICAgICByZS1hcHBsaWNhdGlvbiBvZiBzdGVwcyB0byBpZGVudGlmeSB0aGUgb25lIGNhdXNpbmcgdGhlIHByb2JsZW0gYXJlCisgICAgICAgICAgICB2YWxpZCBmb3IgdGhlIFlvY3RvIFByb2plY3QganVzdCBhcyB0aGV5IGFyZSBmb3IgYW55IG90aGVyIHN5c3RlbS4KKyAgICAgICAgICAgIEV2ZW4gdGhvdWdoIGl0IGlzIGltcG9zc2libGUgdG8gZGV0YWlsIGV2ZXJ5IHBvc3NpYmxlIHBvdGVudGlhbAorICAgICAgICAgICAgZmFpbHVyZSwgdGhpcyBzZWN0aW9uIHByb3ZpZGVzIHNvbWUgZ2VuZXJhbCB0aXBzIHRvIGFpZCBpbgorICAgICAgICAgICAgZGVidWdnaW5nIGdpdmVuIGEgdmFyaWV0eSBvZiBzaXR1YXRpb25zLgorICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CisgICAgICAgICAgICAgICAgQSB1c2VmdWwgZmVhdHVyZSBmb3IgZGVidWdnaW5nIGlzIHRoZSBlcnJvciByZXBvcnRpbmcgdG9vbC4KKyAgICAgICAgICAgICAgICBDb25maWd1cmluZyB0aGUgWW9jdG8gUHJvamVjdCB0byB1c2UgdGhpcyB0b29sIGNhdXNlcyB0aGUKKyAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIHByb2R1Y2UgZXJyb3IgcmVwb3J0aW5nIGNvbW1hbmRzIGFzCisgICAgICAgICAgICAgICAgcGFydCBvZiB0aGUgY29uc29sZSBvdXRwdXQuCisgICAgICAgICAgICAgICAgWW91IGNhbiBlbnRlciB0aGUgY29tbWFuZHMgYWZ0ZXIgdGhlIGJ1aWxkIGNvbXBsZXRlcyB0byBsb2cKKyAgICAgICAgICAgICAgICBlcnJvciBpbmZvcm1hdGlvbiBpbnRvIGEgY29tbW9uIGRhdGFiYXNlLCB0aGF0IGNhbiBoZWxwIHlvdQorICAgICAgICAgICAgICAgIGZpZ3VyZSBvdXQgd2hhdCBtaWdodCBiZSBnb2luZyB3cm9uZy4KKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGVuYWJsZSBhbmQgdXNlIHRoaXMgZmVhdHVyZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZy10aGUtZXJyb3ItcmVwb3J0aW5nLXRvb2wnPlVzaW5nIHRoZSBFcnJvciBSZXBvcnRpbmcgVG9vbDwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVG8gaGVscCBnZXQgcGFzdCB0aGUgcHJldmlvdXNseSBtZW50aW9uZWQgY29uc3RyYWludHMsIHlvdSBjYW4gdXNlCi0gICAgICAgICAgICBnZGJzZXJ2ZXIsIHdoaWNoIHJ1bnMgb24gdGhlIHJlbW90ZSB0YXJnZXQgYW5kIGRvZXMgbm90IGxvYWQgYW55Ci0gICAgICAgICAgICBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZnJvbSB0aGUgZGVidWdnZWQgcHJvY2Vzcy4KLSAgICAgICAgICAgIEluc3RlYWQsIGEgR0RCIGluc3RhbmNlIHByb2Nlc3NlcyB0aGUgZGVidWdnaW5nIGluZm9ybWF0aW9uIHRoYXQgaXMgcnVuIG9uIGEKLSAgICAgICAgICAgIHJlbW90ZSBjb21wdXRlciAtIHRoZSBob3N0IEdEQi4KLSAgICAgICAgICAgIFRoZSBob3N0IEdEQiB0aGVuIHNlbmRzIGNvbnRyb2wgY29tbWFuZHMgdG8gZ2Ric2VydmVyIHRvIG1ha2UgaXQgc3RvcCBvciBzdGFydCB0aGUgZGVidWdnZWQKLSAgICAgICAgICAgIHByb2dyYW0sIGFzIHdlbGwgYXMgcmVhZCBvciB3cml0ZSBtZW1vcnkgcmVnaW9ucyBvZiB0aGF0IGRlYnVnZ2VkIHByb2dyYW0uCi0gICAgICAgICAgICBBbGwgdGhlIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBsb2FkZWQgYW5kIHByb2Nlc3NlZCBhcyB3ZWxsCi0gICAgICAgICAgICBhcyBhbGwgdGhlIGhlYXZ5IGRlYnVnZ2luZyBpcyBkb25lIGJ5IHRoZSBob3N0IEdEQi4KLSAgICAgICAgICAgIE9mZmxvYWRpbmcgdGhlc2UgcHJvY2Vzc2VzIGdpdmVzIHRoZSBnZGJzZXJ2ZXIgcnVubmluZyBvbiB0aGUgdGFyZ2V0IGEgY2hhbmNlIHRvIHJlbWFpbgotICAgICAgICAgICAgc21hbGwgYW5kIGZhc3QuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEJlY2F1c2UgdGhlIGhvc3QgR0RCIGlzIHJlc3BvbnNpYmxlIGZvciBsb2FkaW5nIHRoZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gYW5kCi0gICAgICAgICAgICBmb3IgZG9pbmcgdGhlIG5lY2Vzc2FyeSBwcm9jZXNzaW5nIHRvIG1ha2UgYWN0dWFsIGRlYnVnZ2luZyBoYXBwZW4sCi0gICAgICAgICAgICB5b3UgaGF2ZSB0byBtYWtlIHN1cmUgdGhlIGhvc3QgY2FuIGFjY2VzcyB0aGUgdW5zdHJpcHBlZCBiaW5hcmllcyBjb21wbGV0ZQotICAgICAgICAgICAgd2l0aCB0aGVpciBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gYW5kIGFsc28gYmUgc3VyZSB0aGUgdGFyZ2V0IGlzIGNvbXBpbGVkIHdpdGggbm8gb3B0aW1pemF0aW9ucy4KLSAgICAgICAgICAgIFRoZSBob3N0IEdEQiBtdXN0IGFsc28gaGF2ZSBsb2NhbCBhY2Nlc3MgdG8gYWxsIHRoZSBsaWJyYXJpZXMgdXNlZCBieSB0aGUKLSAgICAgICAgICAgIGRlYnVnZ2VkIHByb2dyYW0uCi0gICAgICAgICAgICBCZWNhdXNlIGdkYnNlcnZlciBkb2VzIG5vdCBuZWVkIGFueSBsb2NhbCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24sIHRoZSBiaW5hcmllcyBvbgotICAgICAgICAgICAgdGhlIHJlbW90ZSB0YXJnZXQgY2FuIHJlbWFpbiBzdHJpcHBlZC4KLSAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBiaW5hcmllcyBtdXN0IGFsc28gYmUgY29tcGlsZWQgd2l0aG91dCBvcHRpbWl6YXRpb24KLSAgICAgICAgICAgIHNvIHRoZXkgbWF0Y2ggdGhlIGhvc3QncyBiaW5hcmllcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVG8gcmVtYWluIGNvbnNpc3RlbnQgd2l0aCBHREIgZG9jdW1lbnRhdGlvbiBhbmQgdGVybWlub2xvZ3ksIHRoZSBiaW5hcnkgYmVpbmcgZGVidWdnZWQKLSAgICAgICAgICAgIG9uIHRoZSByZW1vdGUgdGFyZ2V0IG1hY2hpbmUgaXMgcmVmZXJyZWQgdG8gYXMgdGhlICJpbmZlcmlvciIgYmluYXJ5LgotICAgICAgICAgICAgRm9yIGRvY3VtZW50YXRpb24gb24gR0RCIHNlZSB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9nZGIvZG9jdW1lbnRhdGlvbi8iPkdEQiBzaXRlPC91bGluaz4uCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgc3RlcHMgc2hvdyB5b3UgaG93IHRvIGRlYnVnIHVzaW5nIHRoZSBHTlUgcHJvamVjdAotICAgICAgICAgICAgZGVidWdnZXIuCi0gICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29uZmlndXJlIHlvdXIgYnVpbGQgc3lzdGVtIHRvIGNvbnN0cnVjdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgY29tcGFuaW9uIGRlYnVnIGZpbGVzeXN0ZW06PC9lbXBoYXNpcz48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+SW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUsIHNldAotICAgICAgICAgICAgICAgICAgICB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIElNQUdFX0dFTl9ERUJVR0ZTID0gIjEiCi0gICAgIElNQUdFX0ZTVFlQRVNfREVCVUdGUyA9ICJ0YXIuYnoyIgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIFRoZXNlIG9wdGlvbnMgY2F1c2UgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgdG8gZ2VuZXJhdGUgYSBzcGVjaWFsIGNvbXBhbmlvbiBmaWxlc3lzdGVtIGZyYWdtZW50LAotICAgICAgICAgICAgICAgICAgICB3aGljaCBjb250YWlucyB0aGUgbWF0Y2hpbmcgc291cmNlIGFuZCBkZWJ1ZyBzeW1ib2xzIHRvCi0gICAgICAgICAgICAgICAgICAgIHlvdXIgZGVwbG95YWJsZSBmaWxlc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIGRvZXMgdGhpcyBieSBsb29raW5nIGF0IHdoYXQgaXMgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIGRlcGxveWVkIGZpbGVzeXN0ZW0sIGFuZCBwdWxsaW5nIHRoZSBjb3JyZXNwb25kaW5nCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tZGJnPC9maWxlbmFtZT4gcGFja2FnZXMuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBjb21wYW5pb24gZGVidWcgZmlsZXN5c3RlbSBpcyBub3QgYSBjb21wbGV0ZQotICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtLCBidXQgb25seSBjb250YWlucyB0aGUgZGVidWcgZnJhZ21lbnRzLgotICAgICAgICAgICAgICAgICAgICBUaGlzIGZpbGVzeXN0ZW0gbXVzdCBiZSBjb21iaW5lZCB3aXRoIHRoZSBmdWxsIGZpbGVzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgZm9yIGRlYnVnZ2luZy4KLSAgICAgICAgICAgICAgICAgICAgU3Vic2VxdWVudCBzdGVwcyBpbiB0aGlzIHByb2NlZHVyZSBzaG93IGhvdyB0byBjb21iaW5lCi0gICAgICAgICAgICAgICAgICAgIHRoZSBwYXJ0aWFsIGZpbGVzeXN0ZW0gd2l0aCB0aGUgZnVsbCBmaWxlc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db25maWd1cmUgdGhlIHN5c3RlbSB0byBpbmNsdWRlIGdkYnNlcnZlciBpbgotICAgICAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0IGZpbGVzeXN0ZW06PC9lbXBoYXNpcz48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+TWFrZSB0aGUgZm9sbG93aW5nIGFkZGl0aW9uIGluIGVpdGhlciB5b3VyCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBvciBpbiBhbiBpbWFnZQotICAgICAgICAgICAgICAgICAgICByZWNpcGU6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgSU1BR0VfSU5TVEFMTF9hcHBlbmQgPSDigJwgZ2Ric2VydmVyIgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBjaGFuZ2UgbWFrZXMgc3VyZSB0aGUgPGZpbGVuYW1lPmdkYnNlcnZlcjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgaXMgaW5jbHVkZWQuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBlbnZpcm9ubWVudDo8L2VtcGhhc2lzPjwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT5Vc2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIGNvbnN0cnVjdCB0aGUgaW1hZ2UgYW5kCi0gICAgICAgICAgICAgICAgICAgIHRoZSBjb21wYW5pb24gRGVidWcgRmlsZXN5c3RlbToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgPHJlcGxhY2VhYmxlPmltYWdlPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBCdWlsZCB0aGUgY3Jvc3MgR0RCIGNvbXBvbmVudCBhbmQgbWFrZSBpdCBhdmFpbGFibGUKLSAgICAgICAgICAgICAgICAgICAgZm9yIGRlYnVnZ2luZy4KLSAgICAgICAgICAgICAgICAgICAgQnVpbGQgdGhlIFNESyB0aGF0IG1hdGNoZXMgdGhlIGltYWdlLgotICAgICAgICAgICAgICAgICAgICBCdWlsZGluZyB0aGUgU0RLIGlzIGJlc3QgZm9yIGEgcHJvZHVjdGlvbiBidWlsZAotICAgICAgICAgICAgICAgICAgICB0aGF0IGNhbiBiZSB1c2VkIGxhdGVyIGZvciBkZWJ1Z2dpbmcsIGVzcGVjaWFsbHkKLSAgICAgICAgICAgICAgICAgICAgZHVyaW5nIGxvbmcgdGVybSBtYWludGVuYW5jZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgLWMgcG9wdWxhdGVfc2RrIDxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+QWx0ZXJuYXRpdmVseSwgeW91IGNhbiBidWlsZCB0aGUgbWluaW1hbAotICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4gY29tcG9uZW50cyB0aGF0IG1hdGNoIHRoZSB0YXJnZXQuCi0gICAgICAgICAgICAgICAgICAgIERvaW5nIHNvIGNyZWF0ZXMgYSBzbWFsbGVyIHRoYW4gdHlwaWNhbCBTREsgYW5kIG9ubHkKLSAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgYSBtaW5pbWFsIHNldCBvZiBjb21wb25lbnRzIHdpdGggd2hpY2ggdG8KLSAgICAgICAgICAgICAgICAgICAgYnVpbGQgc2ltcGxlIHRlc3QgYXBwbGljYXRpb25zLCBhcyB3ZWxsIGFzIHJ1biB0aGUKLSAgICAgICAgICAgICAgICAgICAgZGVidWdnZXI6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlIG1ldGEtdG9vbGNoYWluCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+QSBmaW5hbCBtZXRob2QgaXMgdG8gYnVpbGQgR2RiIGl0c2VsZiB3aXRoaW4KLSAgICAgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIHN5c3RlbToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgZ2RiLWNyb3NzLTxyZXBsYWNlYWJsZT5hcmNoaXRlY3R1cmU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIERvaW5nIHNvIHByb2R1Y2VzIGEgdGVtcG9yYXJ5IGNvcHkgb2YKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNyb3NzLWdkYjwvZmlsZW5hbWU+IHlvdSBjYW4gdXNlIGZvcgotICAgICAgICAgICAgICAgICAgICBkZWJ1Z2dpbmcgZHVyaW5nIGRldmVsb3BtZW50LgotICAgICAgICAgICAgICAgICAgICBXaGlsZSB0aGlzIGlzIHRoZSBxdWlja2VzdCBhcHByb2FjaCwgdGhlIHR3byBwcmV2aW91cwotICAgICAgICAgICAgICAgICAgICBtZXRob2RzIGluIHRoaXMgc3RlcCBhcmUgYmV0dGVyIHdoZW4gY29uc2lkZXJpbmcKLSAgICAgICAgICAgICAgICAgICAgbG9uZy10ZXJtIG1haW50ZW5hbmNlIHN0cmF0ZWdpZXMuCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHJ1bgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgZ2RiLWNyb3NzPC9maWxlbmFtZT4sIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBzdWdnZXN0cyB0aGUgYWN0dWFsCi0gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSAoZS5nLiA8ZmlsZW5hbWU+Z2RiLWNyb3NzLWk1ODY8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgc3VnZ2VzdGlvbiBpcyB1c3VhbGx5IHRoZSBhY3R1YWwgbmFtZSB5b3Ugd2FudAotICAgICAgICAgICAgICAgICAgICAgICAgdG8gdXNlLgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCB1cCB0aGU8L2VtcGhhc2lzPiZuYnNwOzxmaWxlbmFtZT5kZWJ1Z2ZzPC9maWxlbmFtZT48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+UnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgdG8gc2V0IHVwIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVidWdmczwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgbWtkaXIgZGVidWdmcwotICAgICAkIGNkIGRlYnVnZnMKLSAgICAgJCB0YXIgeHZmaiA8cmVwbGFjZWFibGU+YnVpbGQtZGlyPC9yZXBsYWNlYWJsZT4vdG1wLWdsaWJjL2RlcGxveS9pbWFnZXMvPHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPi88cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPi5yb290ZnMudGFyLmJ6MgotICAgICAkIHRhciB4dmZqIDxyZXBsYWNlYWJsZT5idWlsZC1kaXI8L3JlcGxhY2VhYmxlPi90bXAtZ2xpYmMvZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+LzxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+LWRiZy5yb290ZnMudGFyLmJ6MgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCB1cCBHREI8L2VtcGhhc2lzPjwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT5JbnN0YWxsIHRoZSBTREsgKGlmIHlvdSBidWlsdCBvbmUpIGFuZCB0aGVuCi0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSB0aGUgY29ycmVjdCBlbnZpcm9ubWVudCBmaWxlLgotICAgICAgICAgICAgICAgICAgICBTb3VyY2luZyB0aGUgZW52aXJvbm1lbnQgZmlsZSBwdXRzIHRoZSBTREsgaW4geW91cgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+IGVudmlyb25tZW50IHZhcmlhYmxlLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgYXJlIHVzaW5nIHRoZSBidWlsZCBzeXN0ZW0sIEdkYiBpcwotICAgICAgICAgICAgICAgICAgICBsb2NhdGVkIGluCi0gICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5idWlsZC1kaXI8L3JlcGxhY2VhYmxlPi90bXAvc3lzcm9vdHMvPHJlcGxhY2VhYmxlPmhvc3Q8L3JlcGxhY2VhYmxlPi91c3IvYmluLzxyZXBsYWNlYWJsZT5hcmNoaXRlY3R1cmU8L3JlcGxhY2VhYmxlPi88cmVwbGFjZWFibGU+YXJjaGl0ZWN0dXJlPC9yZXBsYWNlYWJsZT4tZ2RiCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJvb3QgdGhlIHRhcmdldDo8L2VtcGhhc2lzPjwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHJ1biBRRU1VLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93aWtpLnFlbXUub3JnL0RvY3VtZW50YXRpb24vR2V0dGluZ1N0YXJ0ZWREZXZlbG9wZXJzJz5RRU1VIERvY3VtZW50YXRpb248L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHZlcmlmeSB0aGF0IHlvdXIgaG9zdCBjYW4gYWNjZXNzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IHZpYSBUQ1AuCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RGVidWcgYSBwcm9ncmFtOjwvZW1waGFzaXM+PC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPkRlYnVnZ2luZyBhIHByb2dyYW0gaW52b2x2ZXMgcnVubmluZyBnZGJzZXJ2ZXIKLSAgICAgICAgICAgICAgICAgICAgb24gdGhlIHRhcmdldCBhbmQgdGhlbiBydW5uaW5nIEdkYiBvbiB0aGUgaG9zdC4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGV4YW1wbGUgaW4gdGhpcyBzdGVwIGRlYnVncwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3ppcDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIHJvb3RAcWVtdXg4Njp+IyBnZGJzZXJ2ZXIgbG9jYWxob3N0OjEyMzQgL2Jpbi9nemlwIOKAlGhlbHAKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBGb3IgYWRkaXRpb25hbCBnZGJzZXJ2ZXIgb3B0aW9ucywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dkYi9kb2N1bWVudGF0aW9uLyc+R0RCIFNlcnZlciBEb2N1bWVudGF0aW9uPC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT5BZnRlciBydW5uaW5nIGdkYnNlcnZlciBvbiB0aGUgdGFyZ2V0LCB5b3UgbmVlZAotICAgICAgICAgICAgICAgICAgICB0byBydW4gR2RiIG9uIHRoZSBob3N0IGFuZCBjb25maWd1cmUgaXQgYW5kIGNvbm5lY3QgdG8KLSAgICAgICAgICAgICAgICAgICAgdGhlIHRhcmdldC4KLSAgICAgICAgICAgICAgICAgICAgVXNlIHRoZXNlIGNvbW1hbmRzOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgY2QgPHJlcGxhY2VhYmxlPmRpcmVjdG9yeS1ob2xkaW5nLXRoZS1kZWJ1Z2ZzLWRpcmVjdG9yeTwvcmVwbGFjZWFibGU+Ci0gICAgICQgPHJlcGxhY2VhYmxlPmFyY2g8L3JlcGxhY2VhYmxlPi1nZGIKLQotICAgICAoZ2RiKSBzZXQgc3lzcm9vdCBkZWJ1Z2ZzCi0gICAgIChnZGIpIHNldCBzdWJzdGl0dXRlLXBhdGggL3Vzci9zcmMvZGVidWcgZGVidWdmcy91c3Ivc3JjL2RlYnVnCi0gICAgIChnZGIpIHRhcmdldCByZW1vdGUgPHJlcGxhY2VhYmxlPklQLW9mLXRhcmdldDwvcmVwbGFjZWFibGU+OjEyMzQKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCBldmVyeXRoaW5nIHNob3VsZCBhdXRvbWF0aWNhbGx5IGxvYWQKLSAgICAgICAgICAgICAgICAgICAgKGkuZS4gbWF0Y2hpbmcgYmluYXJpZXMsIHN5bWJvbHMgYW5kIGhlYWRlcnMpLgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBHZGIgPGZpbGVuYW1lPnNldDwvZmlsZW5hbWU+IGNvbW1hbmRzIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgZXhhbXBsZSBjYW4gYmUgcGxhY2VkIGludG8gdGhlIHVzZXJzCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+fi8uZ2RiaW5pdDwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBVcG9uIHN0YXJ0aW5nLCBHZGIgYXV0b21hdGljYWxseSBydW5zIHdoYXRldmVyCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kcyBhcmUgaW4gdGhhdCBmaWxlLgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRlcGxveWluZyB3aXRob3V0IGEgZnVsbCBpbWFnZQotICAgICAgICAgICAgICAgICAgICByZWJ1aWxkOjwvZW1waGFzaXM+PC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPkluIG1hbnkgY2FzZXMsIGR1cmluZyBkZXZlbG9wbWVudCB5b3Ugd2FudCBhCi0gICAgICAgICAgICAgICAgICAgIHF1aWNrIG1ldGhvZCB0byBkZXBsb3kgYSBuZXcgYmluYXJ5IHRvIHRoZSB0YXJnZXQgYW5kCi0gICAgICAgICAgICAgICAgICAgIGRlYnVnIGl0LCB3aXRob3V0IHdhaXRpbmcgZm9yIGEgZnVsbCBpbWFnZSBidWlsZC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPk9uZSBhcHByb2FjaCB0byBzb2x2aW5nIHRoaXMgc2l0dWF0aW9uIGlzIHRvCi0gICAgICAgICAgICAgICAgICAgIGp1c3QgYnVpbGQgdGhlIGNvbXBvbmVudCB5b3Ugd2FudCB0byBkZWJ1Zy4KLSAgICAgICAgICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSBidWlsdCB0aGUgY29tcG9uZW50LCBjb3B5IHRoZQotICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlIGRpcmVjdGx5IHRvIGJvdGggdGhlIHRhcmdldCBhbmQgdGhlCi0gICAgICAgICAgICAgICAgICAgIGhvc3QgPGZpbGVuYW1lPmRlYnVnZnM8L2ZpbGVuYW1lPi48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgdGhlIGJpbmFyeSBpcyBwcm9jZXNzZWQgdGhyb3VnaCB0aGUgZGVidWcKLSAgICAgICAgICAgICAgICAgICAgc3BsaXR0aW5nIGluIE9wZW5FbWJlZGRlZCwgeW91IHNob3VsZCBhbHNvCi0gICAgICAgICAgICAgICAgICAgIGNvcHkgdGhlIGRlYnVnIGl0ZW1zIChpLmUuIDxmaWxlbmFtZT4uZGVidWc8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBjb250ZW50cyBhbmQgY29ycmVzcG9uZGluZwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3Vzci9zcmMvZGVidWc8L2ZpbGVuYW1lPiBmaWxlcykKLSAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgd29yayBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgYmFzaAotICAgICAkIGJpdGJha2UgLWMgZGV2c2hlbGwgYmFzaAotICAgICAkIGNkIC4uCi0gICAgICQgc2NwIHBhY2thZ2VzLXNwbGl0L2Jhc2gvYmluL2Jhc2ggPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+Oi9iaW4vYmFzaAotICAgICAkIGNwIC1hIHBhY2thZ2VzLXNwbGl0L2Jhc2gtZGJnLyogPHJlcGxhY2VhYmxlPnBhdGg8L3JlcGxhY2VhYmxlPi9kZWJ1Z2ZzCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J2RlYnVnZ2luZy13aXRoLXRoZS1nbnUtcHJvamVjdC1kZWJ1Z2dlci1nZGItb24tdGhlLXRhcmdldCc+Ci0gICAgICAgIDx0aXRsZT5EZWJ1Z2dpbmcgd2l0aCB0aGUgR05VIFByb2plY3QgRGVidWdnZXIgKEdEQikgb24gdGhlIFRhcmdldDwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgcHJldmlvdXMgc2VjdGlvbiBhZGRyZXNzZWQgdXNpbmcgR0RCIHJlbW90ZWx5IGZvciBkZWJ1Z2dpbmcKLSAgICAgICAgICAgIHB1cnBvc2VzLCB3aGljaCBpcyB0aGUgbW9zdCB1c3VhbCBjYXNlIGR1ZSB0byB0aGUgaW5oZXJlbnQKLSAgICAgICAgICAgIGhhcmR3YXJlIGxpbWl0YXRpb25zIG9uIG1hbnkgZW1iZWRkZWQgZGV2aWNlcy4KLSAgICAgICAgICAgIEhvd2V2ZXIsIGRlYnVnZ2luZyBpbiB0aGUgdGFyZ2V0IGhhcmR3YXJlIGl0c2VsZiBpcyBhbHNvIHBvc3NpYmxlCi0gICAgICAgICAgICB3aXRoIG1vcmUgcG93ZXJmdWwgZGV2aWNlcy4KLSAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgd2hhdCB5b3UgbmVlZCB0byBkbyBpbiBvcmRlciB0byBzdXBwb3J0Ci0gICAgICAgICAgICB1c2luZyBHREIgdG8gZGVidWcgb24gdGhlIHRhcmdldCBoYXJkd2FyZS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVG8gc3VwcG9ydCB0aGlzIGtpbmQgb2YgZGVidWdnaW5nLCB5b3UgbmVlZCBkbyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHNob3dzIHRoZSBkZWJ1Z2dpbmcgdG9waWNzIGluIHRoZSByZW1haW5kZXIgb2YKKyAgICAgICAgICAgIHRoaXMgc2VjdGlvbjoKICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBFbnN1cmUgdGhhdCBHREIgaXMgb24gdGhlIHRhcmdldC4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBkbyB0aGlzIGJ5IGFkZGluZyAiZ2RiIiB0bwotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfSU5TVEFMTCc+PGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPjwvdWxpbms+OgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIElNQUdFX0lOU1RBTExfYXBwZW5kID0gIiBnZGIiCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBhZGQgInRvb2xzLWRlYnVnIiB0bwotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfRkVBVFVSRVMnPjxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz46Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgSU1BR0VfRkVBVFVSRVNfYXBwZW5kID0gIiB0b29scy1kZWJ1ZyIKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZGV2LWRlYnVnZ2luZy12aWV3aW5nLWxvZ3MtZnJvbS1mYWlsZWQtdGFza3MnPlZpZXdpbmcgTG9ncyBmcm9tIEZhaWxlZCBUYXNrczwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlcyBob3cgdG8gZmluZCBhbmQgdmlldyBsb2dzIGZyb20gdGFza3MgdGhhdAorICAgICAgICAgICAgICAgICAgICBmYWlsZWQgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEVuc3VyZSB0aGF0IGRlYnVnIHN5bWJvbHMgYXJlIHByZXNlbnQuCi0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gbWFrZSBzdXJlIHRoZXNlIHN5bWJvbHMgYXJlIHByZXNlbnQgYnkgaW5zdGFsbGluZwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LWRiZzwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIElNQUdFX0lOU1RBTExfYXBwZW5kID0gIiA8cmVwbGFjZWFibGU+cGFja2FnZW5hbWU8L3JlcGxhY2VhYmxlPi1kYmciCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBkbyB0aGUgZm9sbG93aW5nIHRvIGluY2x1ZGUgYWxsIHRoZQotICAgICAgICAgICAgICAgICAgICBkZWJ1ZyBzeW1ib2xzOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIElNQUdFX0ZFQVRVUkVTX2FwcGVuZCA9ICIgZGJnLXBrZ3MiCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2Rldi1kZWJ1Z2dpbmctdmlld2luZy12YXJpYWJsZS12YWx1ZXMnPlZpZXdpbmcgVmFyaWFibGUgVmFsdWVzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIGhvdyB0byB1c2UgdGhlIEJpdEJha2UgPGZpbGVuYW1lPi1lPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uIHRvIGV4YW1pbmUgdmFyaWFibGUgdmFsdWVzIGFmdGVyIGEgcmVjaXBlIGhhcyBiZWVuCisgICAgICAgICAgICAgICAgICAgIHBhcnNlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndmlld2luZy1wYWNrYWdlLWluZm9ybWF0aW9uLXdpdGgtb2UtcGtnZGF0YS11dGlsJz5WaWV3aW5nIFBhY2thZ2UgSW5mb3JtYXRpb24gd2l0aCA8ZmlsZW5hbWU+b2UtcGtnZGF0YS11dGlsPC9maWxlbmFtZT48L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBkZXNjcmliZXMgaG93IHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXBrZ2RhdGEtdXRpbDwvZmlsZW5hbWU+IHV0aWxpdHkgdG8gcXVlcnkKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBLR0RBVEFfRElSJz48ZmlsZW5hbWU+UEtHREFUQV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZCBkaXNwbGF5IHBhY2thZ2UtcmVsYXRlZCBpbmZvcm1hdGlvbiBmb3IgYnVpbHQKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2Rldi12aWV3aW5nLWRlcGVuZGVuY2llcy1iZXR3ZWVuLXJlY2lwZXMtYW5kLXRhc2tzJz5WaWV3aW5nIERlcGVuZGVuY2llcyBCZXR3ZWVuIFJlY2lwZXMgYW5kIFRhc2tzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIGhvdyB0byB1c2UgdGhlIEJpdEJha2UgPGZpbGVuYW1lPi1nPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uIHRvIGRpc3BsYXkgcmVjaXBlIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24gdXNlZAorICAgICAgICAgICAgICAgICAgICBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXYtdmlld2luZy10YXNrLXZhcmlhYmxlLWRlcGVuZGVuY2llcyc+Vmlld2luZyBUYXNrIFZhcmlhYmxlIERlcGVuZGVuY2llczwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlcyBob3cgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1kdW1wc2lnPC9maWxlbmFtZT4gY29tbWFuZCBpbgorICAgICAgICAgICAgICAgICAgICBjb25qdW5jdGlvbiB3aXRoIGtleSBzdWJkaXJlY3RvcmllcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB0byBkZXRlcm1pbmUgdmFyaWFibGUgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXYtZGVidWdnaW5nLXRhc2tydW5uaW5nJz5SdW5uaW5nIFNwZWNpZmljIFRhc2tzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIGhvdyB0byB1c2Ugc2V2ZXJhbCBCaXRCYWtlIG9wdGlvbnMgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1jPC9maWxlbmFtZT4sIDxmaWxlbmFtZT4tQzwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1mPC9maWxlbmFtZT4pIHRvIHJ1biBzcGVjaWZpYyB0YXNrcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgY2hhaW4uCisgICAgICAgICAgICAgICAgICAgIEl0IGNhbiBiZSB1c2VmdWwgdG8gcnVuIHRhc2tzICJvdXQtb2Ytb3JkZXIiIHdoZW4gdHJ5aW5nCisgICAgICAgICAgICAgICAgICAgIGlzb2xhdGUgYnVpbGQgaXNzdWVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXYtZGVidWdnaW5nLWJpdGJha2UnPkdlbmVyYWwgQml0QmFrZSBQcm9ibGVtczwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlcyBob3cgdG8gdXNlIEJpdEJha2UncyA8ZmlsZW5hbWU+LUQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBkZWJ1ZyBvdXRwdXQgb3B0aW9uIHRvIHJldmVhbCBtb3JlIGFib3V0IHdoYXQgQml0QmFrZSBpcworICAgICAgICAgICAgICAgICAgICBkb2luZyBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXYtZGVidWdnaW5nLWJ1aWxkZmlsZSc+QnVpbGRpbmcgd2l0aCBObyBEZXBlbmRlbmNpZXM8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBkZXNjcmliZXMgaG93IHRvIHVzZSB0aGUgQml0QmFrZSA8ZmlsZW5hbWU+LWI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBvcHRpb24gdG8gYnVpbGQgYSByZWNpcGUgd2hpbGUgaWdub3JpbmcgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWNpcGUtbG9nZ2luZy1tZWNoYW5pc21zJz5SZWNpcGUgTG9nZ2luZyBNZWNoYW5pc21zPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIGhvdyB0byB1c2UgdGhlIG1hbnkgcmVjaXBlIGxvZ2dpbmcgZnVuY3Rpb25zCisgICAgICAgICAgICAgICAgICAgIHRvIHByb2R1Y2UgZGVidWdnaW5nIG91dHB1dCBhbmQgcmVwb3J0IGVycm9ycyBhbmQgd2FybmluZ3MuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2RlYnVnZ2luZy1wYXJhbGxlbC1tYWtlLXJhY2VzJz5EZWJ1Z2dpbmcgUGFyYWxsZWwgTWFrZSBSYWNlczwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlcyBob3cgdG8gZGVidWcgc2l0dWF0aW9ucyB3aGVyZSB0aGUgYnVpbGQgY29uc2lzdHMKKyAgICAgICAgICAgICAgICAgICAgb2Ygc2V2ZXJhbCBwYXJ0cyB0aGF0IGFyZSBydW4gc2ltdWx0YW5lb3VzbHkgYW5kIHdoZW4gdGhlCisgICAgICAgICAgICAgICAgICAgIG91dHB1dCBvciByZXN1bHQgb2Ygb25lIHBhcnQgaXMgbm90IHJlYWR5IGZvciB1c2Ugd2l0aCBhCisgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVudCBwYXJ0IG9mIHRoZSBidWlsZCB0aGF0IGRlcGVuZHMgb24gdGhhdCBvdXRwdXQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3BsYXRkZXYtZ2RiLXJlbW90ZWRlYnVnJz5EZWJ1Z2dpbmcgV2l0aCB0aGUgR05VIFByb2plY3QgRGVidWdnZXIgKEdEQikgUmVtb3RlbHk8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBkZXNjcmliZXMgaG93IHRvIHVzZSBHREIgdG8gYWxsb3cgeW91IHRvIGV4YW1pbmUgcnVubmluZworICAgICAgICAgICAgICAgICAgICBwcm9ncmFtcywgd2hpY2ggY2FuIGhlbHAgeW91IGZpeCBwcm9ibGVtcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZGVidWdnaW5nLXdpdGgtdGhlLWdudS1wcm9qZWN0LWRlYnVnZ2VyLWdkYi1vbi10aGUtdGFyZ2V0Jz5EZWJ1Z2dpbmcgd2l0aCB0aGUgR05VIFByb2plY3QgRGVidWdnZXIgKEdEQikgb24gdGhlIFRhcmdldDwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlcyBob3cgdG8gdXNlIEdEQiBkaXJlY3RseSBvbiB0YXJnZXQgaGFyZHdhcmUgZm9yCisgICAgICAgICAgICAgICAgICAgIGRlYnVnZ2luZy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZGV2LW90aGVyLWRlYnVnZ2luZy1vdGhlcnMnPk90aGVyIERlYnVnZ2luZyBUaXBzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIG1pc2NlbGxhbmVvdXMgZGVidWdnaW5nIHRpcHMgdGhhdCBjYW4gYmUgdXNlZnVsLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgVG8gaW1wcm92ZSB0aGUgZGVidWcgaW5mb3JtYXRpb24gYWNjdXJhY3ksIHlvdSBjYW4gcmVkdWNlIHRoZQotICAgICAgICAgICAgICAgIGxldmVsIG9mIG9wdGltaXphdGlvbiB1c2VkIGJ5IHRoZSBjb21waWxlci4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgd2hlbiBhZGRpbmcgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHlvdXIKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUsIHlvdSB3aWxsIHJlZHVjZQotICAgICAgICAgICAgICAgIG9wdGltaXphdGlvbiBmcm9tCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUZVTExfT1BUSU1JWkFUSU9OJz48ZmlsZW5hbWU+RlVMTF9PUFRJTUlaQVRJT048L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgb2YgIi1PMiIgdG8KLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItREVCVUdfT1BUSU1JWkFUSU9OJz48ZmlsZW5hbWU+REVCVUdfT1BUSU1JWkFUSU9OPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIG9mICItTyAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciI6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBERUJVR19CVUlMRCA9ICIxIgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBDb25zaWRlciB0aGF0IHRoaXMgd2lsbCByZWR1Y2UgdGhlIGFwcGxpY2F0aW9uJ3MgcGVyZm9ybWFuY2UKLSAgICAgICAgICAgICAgICBhbmQgaXMgcmVjb21tZW5kZWQgb25seSBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLgotICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J2RlYnVnZ2luZy1wYXJhbGxlbC1tYWtlLXJhY2VzJz4KLSAgICAgICAgPHRpdGxlPkRlYnVnZ2luZyBQYXJhbGxlbCBNYWtlIFJhY2VzPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEEgcGFyYWxsZWwgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPiByYWNlIG9jY3VycyB3aGVuIHRoZSBidWlsZAotICAgICAgICAgICAgY29uc2lzdHMgb2Ygc2V2ZXJhbCBwYXJ0cyB0aGF0IGFyZSBydW4gc2ltdWx0YW5lb3VzbHkgYW5kCi0gICAgICAgICAgICBhIHNpdHVhdGlvbiBvY2N1cnMgd2hlbiB0aGUgb3V0cHV0IG9yIHJlc3VsdCBvZiBvbmUKLSAgICAgICAgICAgIHBhcnQgaXMgbm90IHJlYWR5IGZvciB1c2Ugd2l0aCBhIGRpZmZlcmVudCBwYXJ0IG9mIHRoZSBidWlsZCB0aGF0Ci0gICAgICAgICAgICBkZXBlbmRzIG9uIHRoYXQgb3V0cHV0LgotICAgICAgICAgICAgUGFyYWxsZWwgbWFrZSByYWNlcyBhcmUgYW5ub3lpbmcgYW5kIGNhbiBzb21ldGltZXMgYmUgZGlmZmljdWx0Ci0gICAgICAgICAgICB0byByZXByb2R1Y2UgYW5kIGZpeC4KLSAgICAgICAgICAgIEhvd2V2ZXIsIHNvbWUgc2ltcGxlIHRpcHMgYW5kIHRyaWNrcyBleGlzdCB0aGF0IGNhbiBoZWxwCi0gICAgICAgICAgICB5b3UgZGVidWcgYW5kIGZpeCB0aGVtLgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByZXNlbnRzIGEgcmVhbC13b3JsZCBleGFtcGxlIG9mIGFuIGVycm9yIGVuY291bnRlcmVkCi0gICAgICAgICAgICBvbiB0aGUgWW9jdG8gUHJvamVjdCBhdXRvYnVpbGRlciBhbmQgdGhlIHByb2Nlc3MgdXNlZCB0byBmaXggaXQuCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBJZiB5b3UgY2Fubm90IHByb3Blcmx5IGZpeCBhIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gcmFjZQotICAgICAgICAgICAgICAgIGNvbmRpdGlvbiwgeW91IGNhbiB3b3JrIGFyb3VuZCBpdCBieSBjbGVhcmluZyBlaXRoZXIgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBUkFMTEVMX01BS0UnPjxmaWxlbmFtZT5QQVJBTExFTF9NQUtFPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIG9yCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBUkFMTEVMX01BS0VJTlNUJz48ZmlsZW5hbWU+UEFSQUxMRUxfTUFLRUlOU1Q8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGVzLgotICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgRm9yIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiB3aXRoaW4gdGhlIHBvcHVsYXIKKyAgICAgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+IElERSwgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I2FkdC1lY2xpcHNlJz5Xb3JraW5nIHdpdGhpbiBFY2xpcHNlPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKKyAgICAgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCiAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICA8c2VjdGlvbiBpZD0ndGhlLWZhaWx1cmUnPgotICAgICAgICAgICAgPHRpdGxlPlRoZSBGYWlsdXJlPC90aXRsZT4KKyAgICAgICAgPHNlY3Rpb24gaWQ9J2Rldi1kZWJ1Z2dpbmctdmlld2luZy1sb2dzLWZyb20tZmFpbGVkLXRhc2tzJz4KKyAgICAgICAgICAgIDx0aXRsZT5WaWV3aW5nIExvZ3MgZnJvbSBGYWlsZWQgVGFza3M8L3RpdGxlPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLCBhc3N1bWUgdGhhdCB5b3UgYXJlIGJ1aWxkaW5nIGFuIGltYWdlIHRoYXQKLSAgICAgICAgICAgICAgICBkZXBlbmRzIG9uIHRoZSAibmVhcmQiIHBhY2thZ2UuCi0gICAgICAgICAgICAgICAgQW5kLCBkdXJpbmcgdGhlIGJ1aWxkLCBCaXRCYWtlIHJ1bnMgaW50byBwcm9ibGVtcyBhbmQKLSAgICAgICAgICAgICAgICBjcmVhdGVzIHRoZSBmb2xsb3dpbmcgb3V0cHV0LgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBUaGlzIGV4YW1wbGUgbG9nIGZpbGUgaGFzIGxvbmdlciBsaW5lcyBhcnRpZmljaWFsbHkKLSAgICAgICAgICAgICAgICAgICAgYnJva2VuIHRvIG1ha2UgdGhlIGxpc3RpbmcgZWFzaWVyIHRvIHJlYWQuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIElmIHlvdSBleGFtaW5lIHRoZSBvdXRwdXQgb3IgdGhlIGxvZyBmaWxlLCB5b3Ugc2VlIHRoZQotICAgICAgICAgICAgICAgIGZhaWx1cmUgZHVyaW5nIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZSBsb2cgZm9yIGEgdGFzayBpbiB0aGUgZmlsZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59L3RlbXAvbG9nLmRvXzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnRhc2tuYW1lPC9yZXBsYWNlYWJsZT4uCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBsb2cgZm9yIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1jb21waWxlJz48ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB0YXNrIG9mIHRoZSBRRU1VIG1pbmltYWwgaW1hZ2UgZm9yIHRoZSB4ODYgbWFjaGluZQorICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+KSBtaWdodCBiZSBpbgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50bXAvd29yay9xZW11eDg2LXBva3ktbGludXgvY29yZS1pbWFnZS1taW5pbWFsLzEuMC1yMC90ZW1wL2xvZy5kb19jb21waWxlPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgVG8gc2VlIHRoZSBjb21tYW5kcworICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2JpdGJha2UtdGVybSc+Qml0QmFrZTwvdWxpbms+CisgICAgICAgICAgICAgICAgcmFuIHRvIGdlbmVyYXRlIGEgbG9nLCBsb29rIGF0IHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bi5kb188L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT50YXNrbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2cuZG9fPC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ydW4uZG9fPC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgIGFyZSBhY3R1YWxseSBzeW1ib2xpYyBsaW5rcyB0bworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2cuZG9fPC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uPC9maWxlbmFtZT48cmVwbGFjZWFibGU+cGlkPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9nLnJ1bl88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT50YXNrbmFtZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi48L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5waWQ8L3JlcGxhY2VhYmxlPiwKKyAgICAgICAgICAgICAgICB3aGVyZSA8cmVwbGFjZWFibGU+cGlkPC9yZXBsYWNlYWJsZT4gaXMgdGhlIFBJRCB0aGUgdGFzayBoYWQKKyAgICAgICAgICAgICAgICB3aGVuIGl0IHJhbi4KKyAgICAgICAgICAgICAgICBUaGUgc3ltbGlua3MgYWx3YXlzIHBvaW50IHRvIHRoZSBmaWxlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBtb3N0CisgICAgICAgICAgICAgICAgcmVjZW50IHJ1bi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkZXYtZGVidWdnaW5nLXZpZXdpbmctdmFyaWFibGUtdmFsdWVzJz4KKyAgICAgICAgICAgIDx0aXRsZT5WaWV3aW5nIFZhcmlhYmxlIFZhbHVlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJpdEJha2UncyA8ZmlsZW5hbWU+LWU8L2ZpbGVuYW1lPiBvcHRpb24gaXMgdXNlZCB0byBkaXNwbGF5CisgICAgICAgICAgICAgICAgdmFyaWFibGUgdmFsdWVzIGFmdGVyIHBhcnNpbmcuCisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kIGRpc3BsYXlzIHRoZSB2YXJpYWJsZSB2YWx1ZXMgYWZ0ZXIgdGhlCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcyAoaS5lLiA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UuY29uZjwvZmlsZW5hbWU+IGFuZCBzbyBmb3J0aCkgaGF2ZSBiZWVuCisgICAgICAgICAgICAgICAgcGFyc2VkOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIC1lCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZCBkaXNwbGF5cyB2YXJpYWJsZSB2YWx1ZXMgYWZ0ZXIgYSBzcGVjaWZpYworICAgICAgICAgICAgICAgIHJlY2lwZSBoYXMgYmVlbiBwYXJzZWQuCisgICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlcyBpbmNsdWRlIHRob3NlIGZyb20gdGhlIGNvbmZpZ3VyYXRpb24gYXMgd2VsbDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSAtZSByZWNpcGVuYW1lCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDxub3RlPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBFYWNoIHJlY2lwZSBoYXMgaXRzIG93biBwcml2YXRlIHNldCBvZiB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgICAgICAgKGRhdGFzdG9yZSkuCisgICAgICAgICAgICAgICAgICAgIEludGVybmFsbHksIGFmdGVyIHBhcnNpbmcgdGhlIGNvbmZpZ3VyYXRpb24sIGEgY29weSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0aW5nIGRhdGFzdG9yZSBpcyBtYWRlIHByaW9yIHRvIHBhcnNpbmcgZWFjaCByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY29weWluZyBpbXBsaWVzIHRoYXQgdmFyaWFibGVzIHNldCBpbiBvbmUgcmVjaXBlIHdpbGwKKyAgICAgICAgICAgICAgICAgICAgbm90IGJlIHZpc2libGUgdG8gb3RoZXIgcmVjaXBlcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+TGlrZXdpc2UsIGVhY2ggdGFzayB3aXRoaW4gYSByZWNpcGUgZ2V0cyBhIHByaXZhdGUKKyAgICAgICAgICAgICAgICAgICAgZGF0YXN0b3JlIGJhc2VkIG9uIHRoZSByZWNpcGUgZGF0YXN0b3JlLCB3aGljaCBtZWFucyB0aGF0CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBzZXQgd2l0aGluIG9uZSB0YXNrIHdpbGwgbm90IGJlIHZpc2libGUgdG8KKyAgICAgICAgICAgICAgICAgICAgb3RoZXIgdGFza3MuPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSW4gdGhlIG91dHB1dCBvZiA8ZmlsZW5hbWU+Yml0YmFrZSAtZTwvZmlsZW5hbWU+LCBlYWNoCisgICAgICAgICAgICAgICAgdmFyaWFibGUgaXMgcHJlY2VkZWQgYnkgYSBkZXNjcmlwdGlvbiBvZiBob3cgdGhlIHZhcmlhYmxlCisgICAgICAgICAgICAgICAgZ290IGl0cyB2YWx1ZSwgaW5jbHVkaW5nIHRlbXBvcmFyeSB2YWx1ZXMgdGhhdCB3ZXJlIGxhdGVyCisgICAgICAgICAgICAgICAgb3ZlcnJpZGVuLgorICAgICAgICAgICAgICAgIFRoaXMgZGVzY3JpcHRpb24gYWxzbyBpbmNsdWRlcyB2YXJpYWJsZSBmbGFncyAodmFyZmxhZ3MpIHNldCBvbgorICAgICAgICAgICAgICAgIHRoZSB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICBUaGUgb3V0cHV0IGNhbiBiZSB2ZXJ5IGhlbHBmdWwgZHVyaW5nIGRlYnVnZ2luZy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVmFyaWFibGVzIHRoYXQgYXJlIGV4cG9ydGVkIHRvIHRoZSBlbnZpcm9ubWVudCBhcmUgcHJlY2VkZWQgYnkKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZXhwb3J0PC9maWxlbmFtZT4gaW4gdGhlIG91dHB1dCBvZgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIC1lPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgU2VlIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGV4cG9ydCBDQz0iaTU4Ni1wb2t5LWxpbnV4LWdjYyAtbTMyIC1tYXJjaD1pNTg2IC0tc3lzcm9vdD0vaG9tZS91bGYvcG9reS9idWlsZC90bXAvc3lzcm9vdHMvcWVtdXg4NiIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEluIGFkZGl0aW9uIHRvIHZhcmlhYmxlIHZhbHVlcywgdGhlIG91dHB1dCBvZiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtZTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIC1lPC9maWxlbmFtZT4mbmJzcDs8cmVwbGFjZWFibGU+cmVjaXBlPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICBjb21tYW5kcyBpbmNsdWRlcyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBvdXRwdXQgc3RhcnRzIHdpdGggYSB0cmVlIGxpc3RpbmcgYWxsIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzIGFuZCBjbGFzc2VzIGluY2x1ZGVkIGdsb2JhbGx5LCByZWN1cnNpdmVseSBsaXN0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZmlsZXMgdGhleSBpbmNsdWRlIG9yIGluaGVyaXQgaW4gdHVybi4KKyAgICAgICAgICAgICAgICAgICAgICAgIE11Y2ggb2YgdGhlIGJlaGF2aW9yIG9mIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAoaW5jbHVkaW5nIHRoZSBiZWhhdmlvciBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I25vcm1hbC1yZWNpcGUtYnVpbGQtdGFza3MnPm5vcm1hbCByZWNpcGUgYnVpbGQgdGFza3M8L3VsaW5rPikKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzIGltcGxlbWVudGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtYmFzZSc+PGZpbGVuYW1lPmJhc2U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBhbmQgdGhlIGNsYXNzZXMgaXQgaW5oZXJpdHMsIHJhdGhlciB0aGFuIGJlaW5nCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsdCBpbnRvIEJpdEJha2UgaXRzZWxmLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIHRoZSB2YXJpYWJsZSB2YWx1ZXMsIGFsbCBmdW5jdGlvbnMgYXBwZWFyIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHNoZWxsIGZ1bmN0aW9ucywgdmFyaWFibGVzIHJlZmVyZW5jZWQgd2l0aGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYm9keSBhcmUgZXhwYW5kZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiBhIGZ1bmN0aW9uIGhhcyBiZWVuIG1vZGlmaWVkIHVzaW5nIG92ZXJyaWRlcyBvcgorICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgb3ZlcnJpZGUtc3R5bGUgb3BlcmF0b3JzIGxpa2UKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5fYXBwZW5kPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+X3ByZXBlbmQ8L2ZpbGVuYW1lPiwgdGhlbiB0aGUgZmluYWwgYXNzZW1ibGVkCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBib2R5IGFwcGVhcnMgaW4gdGhlIG91dHB1dC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3ZpZXdpbmctcGFja2FnZS1pbmZvcm1hdGlvbi13aXRoLW9lLXBrZ2RhdGEtdXRpbCc+CisgICAgICAgICAgICA8dGl0bGU+Vmlld2luZyBQYWNrYWdlIEluZm9ybWF0aW9uIHdpdGggPGZpbGVuYW1lPm9lLXBrZ2RhdGEtdXRpbDwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT5vZS1wa2dkYXRhLXV0aWw8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGNvbW1hbmQtbGluZSB1dGlsaXR5IHRvIHF1ZXJ5CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBLR0RBVEFfRElSJz48ZmlsZW5hbWU+UEtHREFUQV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgYW5kIGRpc3BsYXkgdmFyaW91cyBwYWNrYWdlLXJlbGF0ZWQgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgV2hlbiB5b3UgdXNlIHRoZSB1dGlsaXR5LCB5b3UgbXVzdCB1c2UgaXQgdG8gdmlldyBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgIG9uIHBhY2thZ2VzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gYnVpbHQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgYSBmZXcgb2YgdGhlIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1wa2dkYXRhLXV0aWw8L2ZpbGVuYW1lPiBzdWJjb21tYW5kcy4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIHN0YW5kYXJkICogYW5kID8gZ2xvYmJpbmcgd2lsZGNhcmRzIGFzIHBhcnQKKyAgICAgICAgICAgICAgICAgICAgb2YgcGFja2FnZSBuYW1lcyBhbmQgcGF0aHMuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2dzIFs8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5wYXR0ZXJuPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+XTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgYWxsIHBhY2thZ2VzIHRoYXQgaGF2ZSBiZWVuIGJ1aWx0LCBvcHRpb25hbGx5CisgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdGluZyB0aGUgbWF0Y2ggdG8gcGFja2FnZXMgdGhhdCBtYXRjaAorICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnBhdHRlcm48L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b2UtcGtnZGF0YS11dGlsIGxpc3QtcGtnLWZpbGVzJm5ic3A7PC9maWxlbmFtZT48cmVwbGFjZWFibGU+cGFja2FnZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPiZuYnNwOy4uLjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgdGhlIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBjb250YWluZWQgaW4gdGhlIGdpdmVuCisgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgZGlmZmVyZW50IHdheSB0byB2aWV3IHRoZSBjb250ZW50cyBvZiBhIHBhY2thZ2UgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBsb29rIGF0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59L3BhY2thZ2VzLXNwbGl0PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgb2YgdGhlIHJlY2lwZSB0aGF0IGdlbmVyYXRlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGlzIGNyZWF0ZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXBhY2thZ2UnPjxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sgYW5kIGhhcyBvbmUgc3ViZGlyZWN0b3J5IGZvciBlYWNoIHBhY2thZ2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGdlbmVyYXRlcywgd2hpY2ggY29udGFpbnMgdGhlIGZpbGVzIHN0b3JlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgcGFja2FnZS48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gaW5zcGVjdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtXT1JLRElSfS9wYWNrYWdlcy1zcGxpdDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LCBtYWtlIHN1cmUgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLXJtLXdvcmsnPjxmaWxlbmFtZT5ybV93b3JrPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIG5vdCBlbmFibGVkIHdoZW4geW91IGJ1aWxkIHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b2UtcGtnZGF0YS11dGlsIGZpbmQtcGF0aCZuYnNwOzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnBhdGg8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4mbmJzcDsuLi48L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIExpc3RzIHRoZSBuYW1lcyBvZiB0aGUgcGFja2FnZXMgdGhhdCBjb250YWluIHRoZSBnaXZlbgorICAgICAgICAgICAgICAgICAgICAgICAgcGF0aHMuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyB0ZWxscyB1cyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3Vzci9zaGFyZS9tYW4vbWFuMS9tYWtlLjE8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgaXMgY29udGFpbmVkIGluIHRoZSA8ZmlsZW5hbWU+bWFrZS1kb2M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBvZS1wa2dkYXRhLXV0aWwgZmluZC1wYXRoIC91c3Ivc2hhcmUvbWFuL21hbjEvbWFrZS4xCisgICAgIG1ha2UtZG9jOiAvdXNyL3NoYXJlL21hbi9tYW4xL21ha2UuMQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1wa2dkYXRhLXV0aWwgbG9va3VwLXJlY2lwZSZuYnNwOzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnBhY2thZ2U8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4mbmJzcDsuLi48L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIExpc3RzIHRoZSBuYW1lIG9mIHRoZSByZWNpcGVzIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y2UgdGhlIGdpdmVuIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSA8ZmlsZW5hbWU+b2UtcGtnZGF0YS11dGlsPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBjb21tYW5kLCB1c2UgdGhlIGhlbHAgZmFjaWxpdHk6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIG9lLXBrZ2RhdGEtdXRpbCAmZGFzaDsmZGFzaDtoZWxwCisgICAgICQgb2UtcGtnZGF0YS11dGlsIDxyZXBsYWNlYWJsZT5zdWJjb21tYW5kPC9yZXBsYWNlYWJsZT4gLS1oZWxwCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2Rldi12aWV3aW5nLWRlcGVuZGVuY2llcy1iZXR3ZWVuLXJlY2lwZXMtYW5kLXRhc2tzJz4KKyAgICAgICAgICAgIDx0aXRsZT5WaWV3aW5nIERlcGVuZGVuY2llcyBCZXR3ZWVuIFJlY2lwZXMgYW5kIFRhc2tzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgU29tZXRpbWVzIGl0IGNhbiBiZSBoYXJkIHRvIHNlZSB3aHkgQml0QmFrZSB3YW50cyB0byBidWlsZCBvdGhlcgorICAgICAgICAgICAgICAgIHJlY2lwZXMgYmVmb3JlIHRoZSBvbmUgeW91IGhhdmUgc3BlY2lmaWVkLgorICAgICAgICAgICAgICAgIERlcGVuZGVuY3kgaW5mb3JtYXRpb24gY2FuIGhlbHAgeW91IHVuZGVyc3RhbmQgd2h5IGEgcmVjaXBlIGlzCisgICAgICAgICAgICAgICAgYnVpbHQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIGdlbmVyYXRlIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24gZm9yIGEgcmVjaXBlLCBydW4gdGhlCisgICAgICAgICAgICAgICAgZm9sbG93aW5nIGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgLWcgPHJlcGxhY2VhYmxlPnJlY2lwZW5hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQgd3JpdGVzIHRoZSBmb2xsb3dpbmcgZmlsZXMgaW4gdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBuLWJ1aWxkbGlzdDwvZmlsZW5hbWU+OiBBIGxpc3Qgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMvdGFyZ2V0cyBpbnZvbHZlZCBpbiBidWlsZGluZworICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnJlY2lwZW5hbWU8L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICJJbnZvbHZlZCIgaGVyZSBtZWFucyB0aGF0IGF0IGxlYXN0IG9uZSB0YXNrIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIG5lZWRzIHRvIHJ1biB3aGVuIGJ1aWxkaW5nCisgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+cmVjaXBlbmFtZTwvcmVwbGFjZWFibGU+IGZyb20gc2NyYXRjaC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldHMgdGhhdCBhcmUgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1BU1NVTUVfUFJPVklERUQnPjxmaWxlbmFtZT5BU1NVTUVfUFJPVklERUQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBhcmUgbm90IGxpc3RlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dGFzay1kZXBlbmRzLmRvdDwvZmlsZW5hbWU+OiBBIGdyYXBoIHNob3dpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRhc2tzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBncmFwaHMgYXJlIGluCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRE9UXyUyOGdyYXBoX2Rlc2NyaXB0aW9uX2xhbmd1YWdlJTI5Jz5ET1Q8L3VsaW5rPgorICAgICAgICAgICAgICAgIGZvcm1hdCBhbmQgY2FuIGJlIGNvbnZlcnRlZCB0byBpbWFnZXMgKGUuZy4gdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvdDwvZmlsZW5hbWU+IHRvb2wgZnJvbQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cuZ3JhcGh2aXoub3JnLyc+R3JhcGh2aXo8L3VsaW5rPikuCisgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBET1QgZmlsZXMgdXNlIGEgcGxhaW4gdGV4dCBmb3JtYXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGdyYXBocyBnZW5lcmF0ZWQgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgLWc8L2ZpbGVuYW1lPiBjb21tYW5kIGFyZSBvZnRlbiBzbworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhcmdlIGFzIHRvIGJlIGRpZmZpY3VsdCB0byByZWFkIHdpdGhvdXQgc3BlY2lhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBydW5pbmcgKGUuZy4gd2l0aCBCaXRiYWtlJ3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LUk8L2ZpbGVuYW1lPiBvcHRpb24pIGFuZCBwcm9jZXNzaW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc3BpdGUgdGhlIGZvcm0gYW5kIHNpemUgb2YgdGhlIGdyYXBocywgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ycmVzcG9uZGluZyA8ZmlsZW5hbWU+LmRvdDwvZmlsZW5hbWU+IGZpbGVzIGNhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aWxsIGJlIHBvc3NpYmxlIHRvIHJlYWQgYW5kIHByb3ZpZGUgdXNlZnVsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QXMgYW4gZXhhbXBsZSwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRhc2stZGVwZW5kcy5kb3Q8L2ZpbGVuYW1lPiBmaWxlIGNvbnRhaW5zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMgc3VjaCBhcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgImxpYnhzbHQuZG9fY29uZmlndXJlIiAtPiAibGlieG1sMi5kb19wb3B1bGF0ZV9zeXNyb290IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYWJvdmUgZXhhbXBsZSBsaW5lIHJldmVhbHMgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtY29uZmlndXJlJz48ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sgaW4gPGZpbGVuYW1lPmxpYnhzbHQ8L2ZpbGVuYW1lPiBkZXBlbmRzIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wb3B1bGF0ZV9zeXNyb290Jz48ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc3lzcm9vdDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrIGluIDxmaWxlbmFtZT5saWJ4bWwyPC9maWxlbmFtZT4sIHdoaWNoIGlzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jeSBiZXR3ZWVuIHRoZSB0d28gcmVjaXBlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSBvZiBob3cgPGZpbGVuYW1lPi5kb3Q8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzIGNhbiBiZSBwcm9jZXNzZWQsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0cy9jb250cmliL2dyYXBoLXRvb2w8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiBzY3JpcHQsIHdoaWNoIGZpbmRzIGFuZCBkaXNwbGF5cyBwYXRocworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJldHdlZW4gZ3JhcGggbm9kZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgYSBkaWZmZXJlbnQgbWV0aG9kIHRvIHZpZXcgZGVwZW5kZW5jeSBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgIGJ5IHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSAtZyAtdSB0YXNrZXhwIDxyZXBsYWNlYWJsZT5yZWNpcGVuYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGRpc3BsYXlzIGEgR1VJIHdpbmRvdyBmcm9tIHdoaWNoIHlvdSBjYW4gdmlldworICAgICAgICAgICAgICAgIGJ1aWxkLXRpbWUgYW5kIHJ1bnRpbWUgZGVwZW5kZW5jaWVzIGZvciB0aGUgcmVjaXBlcyBpbnZvbHZlZCBpbgorICAgICAgICAgICAgICAgIGJ1aWxkaW5nIDxyZXBsYWNlYWJsZT5yZWNpcGVuYW1lPC9yZXBsYWNlYWJsZT4uCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZGV2LXZpZXdpbmctdGFzay12YXJpYWJsZS1kZXBlbmRlbmNpZXMnPgorICAgICAgICAgICAgPHRpdGxlPlZpZXdpbmcgVGFzayBWYXJpYWJsZSBEZXBlbmRlbmNpZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBcyBtZW50aW9uZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjY2hlY2tzdW1zJz5DaGVja3N1bXMgKFNpZ25hdHVyZXMpPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBvZiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbCwgQml0QmFrZSB0cmllcyB0bworICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lIHdoYXQgdmFyaWFibGVzIGEgdGFzayBkZXBlbmRzIG9uIHNvCisgICAgICAgICAgICAgICAgdGhhdCBpdCBjYW4gcmVydW4gdGhlIHRhc2sgaWYgYW55IHZhbHVlcyBvZiB0aGUgdmFyaWFibGVzCisgICAgICAgICAgICAgICAgY2hhbmdlLgorICAgICAgICAgICAgICAgIFRoaXMgZGV0ZXJtaW5hdGlvbiBpcyB1c3VhbGx5IHJlbGlhYmxlLgorICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdSBkbyB0aGluZ3MgbGlrZSBjb25zdHJ1Y3QgdmFyaWFibGUgbmFtZXMgYXQKKyAgICAgICAgICAgICAgICBydW50aW1lLCB0aGVuIHlvdSBtaWdodCBoYXZlIHRvIG1hbnVhbGx5IGRlY2xhcmUgZGVwZW5kZW5jaWVzCisgICAgICAgICAgICAgICAgb24gdGhvc2UgdmFyaWFibGVzIHVzaW5nIDxmaWxlbmFtZT52YXJkZXBzPC9maWxlbmFtZT4gYXMKKyAgICAgICAgICAgICAgICBkZXNjcmliZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyaWFibGUtZmxhZ3MnPlZhcmlhYmxlIEZsYWdzPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBvZiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1bnN1cmUgd2hldGhlciBhIHZhcmlhYmxlIGRlcGVuZGVuY3kgaXMgYmVpbmcKKyAgICAgICAgICAgICAgICBwaWNrZWQgdXAgYXV0b21hdGljYWxseSBmb3IgYSBnaXZlbiB0YXNrLCB5b3UgY2FuIGxpc3QgdGhlCisgICAgICAgICAgICAgICAgdmFyaWFibGUgZGVwZW5kZW5jaWVzIEJpdEJha2UgaGFzIGRldGVybWluZWQgYnkgZG9pbmcgdGhlCisgICAgICAgICAgICAgICAgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgdGhlIHJlY2lwZSBjb250YWluaW5nIHRoZSB0YXNrOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgPHJlcGxhY2VhYmxlPnJlY2lwZW5hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluc2lkZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TVEFNUFNfRElSJz48ZmlsZW5hbWU+U1RBTVBTX0RJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSwgZmluZCB0aGUgc2lnbmF0dXJlIGRhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+c2lnZGF0YTwvZmlsZW5hbWU+KSBmaWxlIHRoYXQgY29ycmVzcG9uZHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSB0YXNrLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5zaWdkYXRhPC9maWxlbmFtZT4gZmlsZXMgY29udGFpbiBhIHBpY2tsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiBkYXRhYmFzZSBvZiBhbGwgdGhlIG1ldGFkYXRhIHRoYXQgd2VudCBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGluZyB0aGUgaW5wdXQgY2hlY2tzdW0gZm9yIHRoZSB0YXNrLgorICAgICAgICAgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWZldGNoJz48ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB0YXNrIG9mIHRoZSA8ZmlsZW5hbWU+ZGI8L2ZpbGVuYW1lPiByZWNpcGUsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNpZ2RhdGE8L2ZpbGVuYW1lPiBmaWxlIG1pZ2h0IGJlIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGxvY2F0aW9uOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAke0JVSUxERElSfS90bXAvc3RhbXBzL2k1ODYtcG9reS1saW51eC9kYi82LjAuMzAtcjEuZG9fZmV0Y2guc2lnZGF0YS43YzA0OGMxODIyMmIxNmZmMGJjZWUyMDAwZWY2NDhiMQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRhc2tzIHRoYXQgYXJlIGFjY2VsZXJhdGVkIHRocm91Z2ggdGhlIHNoYXJlZCBzdGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgKDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc2hhcmVkLXN0YXRlLWNhY2hlJz5zc3RhdGU8L3VsaW5rPikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlLCBhbiBhZGRpdGlvbmFsIDxmaWxlbmFtZT5zaWdpbmZvPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgaXMgd3JpdHRlbiBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBhbG9uZyB3aXRoIHRoZSBjYWNoZWQgdGFzayBvdXRwdXQuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnNpZ2luZm88L2ZpbGVuYW1lPiBmaWxlcyBjb250YWluIGV4YWN0bHkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzYW1lIGluZm9ybWF0aW9uIGFzIDxmaWxlbmFtZT5zaWdkYXRhPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFJ1biA8ZmlsZW5hbWU+Yml0YmFrZS1kdW1wc2lnPC9maWxlbmFtZT4gb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2lnZGF0YTwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2lnaW5mbzwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZS1kdW1wc2lnICR7QlVJTERESVJ9L3RtcC9zdGFtcHMvaTU4Ni1wb2t5LWxpbnV4L2RiLzYuMC4zMC1yMS5kb19mZXRjaC5zaWdkYXRhLjdjMDQ4YzE4MjIyYjE2ZmYwYmNlZTIwMDBlZjY0OGIxCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGUgb3V0cHV0IG9mIHRoZSBhYm92ZSBjb21tYW5kLCB5b3Ugd2lsbCBmaW5kIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgbGlrZSB0aGUgZm9sbG93aW5nLCB3aGljaCBsaXN0cyBhbGwgdGhlIChpbmZlcnJlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGRlcGVuZGVuY2llcyBmb3IgdGhlIHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGxpc3QgYWxzbyBpbmNsdWRlcyBpbmRpcmVjdCBkZXBlbmRlbmNpZXMgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzIGRlcGVuZGluZyBvbiBvdGhlciB2YXJpYWJsZXMsIHJlY3Vyc2l2ZWx5LgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBUYXNrIGRlcGVuZGVuY2llczogWydQVicsICdTUkNSRVYnLCAnU1JDX1VSSScsICdTUkNfVVJJW21kNXN1bV0nLCAnU1JDX1VSSVtzaGEyNTZzdW1dJywgJ2Jhc2VfZG9fZmV0Y2gnXQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25zIChlLmcuIDxmaWxlbmFtZT5iYXNlX2RvX2ZldGNoPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxzbyBjb3VudCBhcyB2YXJpYWJsZSBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgZnVuY3Rpb25zIGluIHR1cm4gZGVwZW5kIG9uIHRoZSB2YXJpYWJsZXMgdGhleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBvdXRwdXQgb2YgPGZpbGVuYW1lPmJpdGJha2UtZHVtcHNpZzwvZmlsZW5hbWU+IGFsc28KKyAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzIHRoZSB2YWx1ZSBlYWNoIHZhcmlhYmxlIGhhZCwgYSBsaXN0IG9mCisgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgZm9yIGVhY2ggdmFyaWFibGUsIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXItQkJfSEFTSEJBU0VfV0hJVEVMSVNUJz48ZmlsZW5hbWU+QkJfSEFTSEJBU0VfV0hJVEVMSVNUPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGVyZSBpcyBhbHNvIGEgPGZpbGVuYW1lPmJpdGJha2UtZGlmZnNpZ3M8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgZm9yIGNvbXBhcmluZyB0d28gPGZpbGVuYW1lPnNpZ2luZm88L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zaWdkYXRhPC9maWxlbmFtZT4gZmlsZXMuCisgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGNhbiBiZSBoZWxwZnVsIHdoZW4gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgd2hhdAorICAgICAgICAgICAgICAgIGNoYW5nZWQgYmV0d2VlbiB0d28gdmVyc2lvbnMgb2YgYSB0YXNrLgorICAgICAgICAgICAgICAgIElmIHlvdSBjYWxsIDxmaWxlbmFtZT5iaXRiYWtlLWRpZmZzaWdzPC9maWxlbmFtZT4gd2l0aCBqdXN0IG9uZQorICAgICAgICAgICAgICAgIGZpbGUsIHRoZSBjb21tYW5kIGJlaGF2ZXMgbGlrZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWR1bXBzaWc8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHVzZSBCaXRCYWtlIHRvIGR1bXAgb3V0IHRoZSBzaWduYXR1cmUgY29uc3RydWN0aW9uCisgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gd2l0aG91dCBleGVjdXRpbmcgdGFza3MgYnkgdXNpbmcgZWl0aGVyIG9mIHRoZQorICAgICAgICAgICAgICAgIGZvbGxvd2luZyBCaXRCYWtlIGNvbW1hbmQtbGluZSBvcHRpb25zOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJmRhc2g7JmRhc2g7ZHVtcC1zaWduYXR1cmVzPTxyZXBsYWNlYWJsZT5TSUdOQVRVUkVfSEFORExFUjwvcmVwbGFjZWFibGU+CisgICAgIC1TIDxyZXBsYWNlYWJsZT5TSUdOQVRVUkVfSEFORExFUjwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBUd28gY29tbW9uIHZhbHVlcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPlNJR05BVFVSRV9IQU5ETEVSPC9yZXBsYWNlYWJsZT4gYXJlICJub25lIiBhbmQKKyAgICAgICAgICAgICAgICAgICAgInByaW50ZGlmZiIsIHdoaWNoIGR1bXAgb25seSB0aGUgc2lnbmF0dXJlIG9yIGNvbXBhcmUgdGhlCisgICAgICAgICAgICAgICAgICAgIGR1bXBlZCBzaWduYXR1cmUgd2l0aCB0aGUgY2FjaGVkIG9uZSwgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICBVc2luZyBCaXRCYWtlIHdpdGggZWl0aGVyIG9mIHRoZXNlIG9wdGlvbnMgY2F1c2VzIEJpdEJha2UgdG8KKyAgICAgICAgICAgICAgICBkdW1wIG91dCA8ZmlsZW5hbWU+c2lnZGF0YTwvZmlsZW5hbWU+IGZpbGVzIGluIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zdGFtcHM8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgZm9yIGV2ZXJ5IHRhc2sgaXQgd291bGQKKyAgICAgICAgICAgICAgICBoYXZlIGV4ZWN1dGVkIGluc3RlYWQgb2YgYnVpbGRpbmcgdGhlIHNwZWNpZmllZCB0YXJnZXQgcGFja2FnZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkZXYtdmlld2luZy1tZXRhZGF0YS11c2VkLXRvLWNyZWF0ZS10aGUtaW5wdXQtc2lnbmF0dXJlLW9mLWEtc2hhcmVkLXN0YXRlLXRhc2snPgorICAgICAgICAgICAgPHRpdGxlPlZpZXdpbmcgTWV0YWRhdGEgVXNlZCB0byBDcmVhdGUgdGhlIElucHV0IFNpZ25hdHVyZSBvZiBhIFNoYXJlZCBTdGF0ZSBUYXNrPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgU2VlaW5nIHdoYXQgbWV0YWRhdGEgd2VudCBpbnRvIGNyZWF0aW5nIHRoZSBpbnB1dCBzaWduYXR1cmUKKyAgICAgICAgICAgICAgICBvZiBhIHNoYXJlZCBzdGF0ZSAoc3N0YXRlKSB0YXNrIGNhbiBiZSBhIHVzZWZ1bCBkZWJ1Z2dpbmcKKyAgICAgICAgICAgICAgICBhaWQuCisgICAgICAgICAgICAgICAgVGhpcyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgaW4gc2lnbmF0dXJlIGluZm9ybWF0aW9uCisgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5zaWdpbmZvPC9maWxlbmFtZT4pIGZpbGVzIGluCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNTVEFURV9ESVInPjxmaWxlbmFtZT5TU1RBVEVfRElSPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHZpZXcgYW5kIGludGVycHJldCBpbmZvcm1hdGlvbiBpbgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zaWdpbmZvPC9maWxlbmFtZT4gZmlsZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZGV2LXZpZXdpbmctdGFzay12YXJpYWJsZS1kZXBlbmRlbmNpZXMnPlZpZXdpbmcgVGFzayBWYXJpYWJsZSBEZXBlbmRlbmNpZXM8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEZvciBjb25jZXB0dWFsIGluZm9ybWF0aW9uIG9uIHNoYXJlZCBzdGF0ZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NoYXJlZC1zdGF0ZSc+U2hhcmVkIFN0YXRlPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2Rldi1pbnZhbGlkYXRpbmctc2hhcmVkLXN0YXRlLXRvLWZvcmNlLWEtdGFzay10by1ydW4nPgorICAgICAgICAgICAgPHRpdGxlPkludmFsaWRhdGluZyBTaGFyZWQgU3RhdGUgdG8gRm9yY2UgYSBUYXNrIHRvIFJ1bjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I292ZXJ2aWV3LWNoZWNrc3Vtcyc+Y2hlY2tzdW1zPC91bGluaz4KKyAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NoYXJlZC1zdGF0ZSc+c2hhcmVkIHN0YXRlPC91bGluaz4KKyAgICAgICAgICAgICAgICBjYWNoZSB0byBhdm9pZCB1bm5lY2Vzc2FyaWx5IHJlYnVpbGRpbmcgdGFza3MuCisgICAgICAgICAgICAgICAgQ29sbGVjdGl2ZWx5LCB0aGlzIHNjaGVtZSBpcyBrbm93biBhcyAic2hhcmVkIHN0YXRlIGNvZGUuIgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBcyB3aXRoIGFsbCBzY2hlbWVzLCB0aGlzIG9uZSBoYXMgc29tZSBkcmF3YmFja3MuCisgICAgICAgICAgICAgICAgSXQgaXMgcG9zc2libGUgdGhhdCB5b3UgY291bGQgbWFrZSBpbXBsaWNpdCBjaGFuZ2VzIHRvIHlvdXIKKyAgICAgICAgICAgICAgICBjb2RlIHRoYXQgdGhlIGNoZWNrc3VtIGNhbGN1bGF0aW9ucyBkbyBub3QgdGFrZSBpbnRvCisgICAgICAgICAgICAgICAgYWNjb3VudC4KKyAgICAgICAgICAgICAgICBUaGVzZSBpbXBsaWNpdCBjaGFuZ2VzIGFmZmVjdCBhIHRhc2sncyBvdXRwdXQgYnV0IGRvIG5vdAorICAgICAgICAgICAgICAgIHRyaWdnZXIgdGhlIHNoYXJlZCBzdGF0ZSBjb2RlIGludG8gcmVidWlsZGluZyBhIHJlY2lwZS4KKyAgICAgICAgICAgICAgICBDb25zaWRlciBhbiBleGFtcGxlIGR1cmluZyB3aGljaCBhIHRvb2wgY2hhbmdlcyBpdHMgb3V0cHV0LgorICAgICAgICAgICAgICAgIEFzc3VtZSB0aGF0IHRoZSBvdXRwdXQgb2YgPGZpbGVuYW1lPnJwbWRlcHM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGNoYW5nZXMuCisgICAgICAgICAgICAgICAgVGhlIHJlc3VsdCBvZiB0aGUgY2hhbmdlIHNob3VsZCBiZSB0aGF0IGFsbCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlX3dyaXRlX3JwbTwvZmlsZW5hbWU+IHNoYXJlZCBzdGF0ZSBjYWNoZQorICAgICAgICAgICAgICAgIGl0ZW1zIGJlY29tZSBpbnZhbGlkLgorICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGJlY2F1c2UgdGhlIGNoYW5nZSB0byB0aGUgb3V0cHV0IGlzCisgICAgICAgICAgICAgICAgZXh0ZXJuYWwgdG8gdGhlIGNvZGUgYW5kIHRoZXJlZm9yZSBpbXBsaWNpdCwKKyAgICAgICAgICAgICAgICB0aGUgYXNzb2NpYXRlZCBzaGFyZWQgc3RhdGUgY2FjaGUgaXRlbXMgZG8gbm90IGJlY29tZQorICAgICAgICAgICAgICAgIGludmFsaWRhdGVkLgorICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIGJ1aWxkIHByb2Nlc3MgdXNlcyB0aGUgY2FjaGVkIGl0ZW1zCisgICAgICAgICAgICAgICAgcmF0aGVyIHRoYW4gcnVubmluZyB0aGUgdGFzayBhZ2Fpbi4KKyAgICAgICAgICAgICAgICBPYnZpb3VzbHksIHRoZXNlIHR5cGVzIG9mIGltcGxpY2l0IGNoYW5nZXMgY2FuIGNhdXNlCisgICAgICAgICAgICAgICAgcHJvYmxlbXMuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIGF2b2lkIHRoZXNlIHByb2JsZW1zIGR1cmluZyB0aGUgYnVpbGQsIHlvdSBuZWVkIHRvCisgICAgICAgICAgICAgICAgdW5kZXJzdGFuZCB0aGUgZWZmZWN0cyBvZiBhbnkgY2hhbmdlcyB5b3UgbWFrZS4KKyAgICAgICAgICAgICAgICBSZWFsaXplIHRoYXQgY2hhbmdlcyB5b3UgbWFrZSBkaXJlY3RseSB0byBhIGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgYXJlIGF1dG9tYXRpY2FsbHkgZmFjdG9yZWQgaW50byB0aGUgY2hlY2tzdW0gY2FsY3VsYXRpb24uCisgICAgICAgICAgICAgICAgVGh1cywgdGhlc2UgZXhwbGljaXQgY2hhbmdlcyBpbnZhbGlkYXRlIHRoZSBhc3NvY2lhdGVkCisgICAgICAgICAgICAgICAgYXJlYSBvZiBzaGFyZWQgc3RhdGUgY2FjaGUuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgeW91IG5lZWQgdG8gYmUgYXdhcmUgb2YgYW55IGltcGxpY2l0IGNoYW5nZXMgdGhhdAorICAgICAgICAgICAgICAgIGFyZSBub3Qgb2J2aW91cyBjaGFuZ2VzIHRvIHRoZSBjb2RlIGFuZCBjb3VsZCBhZmZlY3QKKyAgICAgICAgICAgICAgICB0aGUgb3V0cHV0IG9mIGEgZ2l2ZW4gdGFzay4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hlbiB5b3UgaWRlbnRpZnkgYW4gaW1wbGljaXQgY2hhbmdlLCB5b3UgY2FuIGVhc2lseQorICAgICAgICAgICAgICAgIHRha2Ugc3RlcHMgdG8gaW52YWxpZGF0ZSB0aGUgY2FjaGUgYW5kIGZvcmNlIHRoZSB0YXNrcworICAgICAgICAgICAgICAgIHRvIHJ1bi4KKyAgICAgICAgICAgICAgICBUaGUgc3RlcHMgeW91IGNhbiB0YWtlIGFyZSBhcyBzaW1wbGUgYXMgY2hhbmdpbmcgYQorICAgICAgICAgICAgICAgIGZ1bmN0aW9uJ3MgY29tbWVudHMgaW4gdGhlIHNvdXJjZSBjb2RlLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0byBpbnZhbGlkYXRlIHBhY2thZ2Ugc2hhcmVkIHN0YXRlIGZpbGVzLAorICAgICAgICAgICAgICAgIGNoYW5nZSB0aGUgY29tbWVudCBzdGF0ZW1lbnRzIG9mCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXBhY2thZ2UnPjxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIG9yIHRoZSBjb21tZW50cyBvZiBvbmUgb2YgdGhlIGZ1bmN0aW9ucyBpdCBjYWxscy4KKyAgICAgICAgICAgICAgICBFdmVuIHRob3VnaCB0aGUgY2hhbmdlIGlzIHB1cmVseSBjb3NtZXRpYywgaXQgY2F1c2VzIHRoZQorICAgICAgICAgICAgICAgIGNoZWNrc3VtIHRvIGJlIHJlY2FsY3VsYXRlZCBhbmQgZm9yY2VzIHRoZSBidWlsZCBzeXN0ZW0gdG8KKyAgICAgICAgICAgICAgICBydW4gdGhlIHRhc2sgYWdhaW4uCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEZvciBhbiBleGFtcGxlIG9mIGEgY29tbWl0IHRoYXQgbWFrZXMgYSBjb3NtZXRpYworICAgICAgICAgICAgICAgICAgICBjaGFuZ2UgdG8gaW52YWxpZGF0ZSBzaGFyZWQgc3RhdGUsIHNlZSB0aGlzCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9wb2t5L2NvbW1pdC9tZXRhL2NsYXNzZXMvcGFja2FnZS5iYmNsYXNzP2lkPTczN2Y4YmJiNGYyN2I0ODM3MDQ3Y2I5YjRmYmZlMDFkZmRlMzZkNTQnPmNvbW1pdDwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkZXYtZGVidWdnaW5nLXRhc2tydW5uaW5nJz4KKyAgICAgICAgICAgIDx0aXRsZT5SdW5uaW5nIFNwZWNpZmljIFRhc2tzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQW55IGdpdmVuIHJlY2lwZSBjb25zaXN0cyBvZiBhIHNldCBvZiB0YXNrcy4KKyAgICAgICAgICAgICAgICBUaGUgc3RhbmRhcmQgQml0QmFrZSBiZWhhdmlvciBpbiBtb3N0IGNhc2VzIGlzOgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19mZXRjaDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb191bnBhY2s8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGF0Y2g8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfKjwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fYnVpbGQ8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB0YXNrIGlzIDxmaWxlbmFtZT5kb19idWlsZDwvZmlsZW5hbWU+IGFuZCBhbnkgdGFza3MKKyAgICAgICAgICAgICAgICBvbiB3aGljaCBpdCBkZXBlbmRzIGJ1aWxkIGZpcnN0LgorICAgICAgICAgICAgICAgIFNvbWUgdGFza3MsIHN1Y2ggYXMgPGZpbGVuYW1lPmRvX2RldnNoZWxsPC9maWxlbmFtZT4sIGFyZSBub3QKKyAgICAgICAgICAgICAgICBwYXJ0IG9mIHRoZSBkZWZhdWx0IGJ1aWxkIGNoYWluLgorICAgICAgICAgICAgICAgIElmIHlvdSB3aXNoIHRvIHJ1biBhIHRhc2sgdGhhdCBpcyBub3QgcGFydCBvZiB0aGUgZGVmYXVsdCBidWlsZAorICAgICAgICAgICAgICAgIGNoYWluLCB5b3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPi1jPC9maWxlbmFtZT4gb3B0aW9uIGluCisgICAgICAgICAgICAgICAgQml0QmFrZS4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgbWF0Y2hib3gtZGVza3RvcCAtYyBkZXZzaGVsbAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT4tYzwvZmlsZW5hbWU+IG9wdGlvbiByZXNwZWN0cyB0YXNrIGRlcGVuZGVuY2llcywKKyAgICAgICAgICAgICAgICB3aGljaCBtZWFucyB0aGF0IGFsbCBvdGhlciB0YXNrcyAoaW5jbHVkaW5nIHRhc2tzIGZyb20gb3RoZXIKKyAgICAgICAgICAgICAgICByZWNpcGVzKSB0aGF0IHRoZSBzcGVjaWZpZWQgdGFzayBkZXBlbmRzIG9uIHdpbGwgYmUgcnVuIGJlZm9yZQorICAgICAgICAgICAgICAgIHRoZSB0YXNrLgorICAgICAgICAgICAgICAgIEV2ZW4gd2hlbiB5b3UgbWFudWFsbHkgc3BlY2lmeSBhIHRhc2sgdG8gcnVuIHdpdGgKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LWM8L2ZpbGVuYW1lPiwgQml0QmFrZSB3aWxsIG9ubHkgcnVuIHRoZSB0YXNrIGlmIGl0CisgICAgICAgICAgICAgICAgY29uc2lkZXJzIGl0ICJvdXQgb2YgZGF0ZSIuCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3N0YW1wLWZpbGVzLWFuZC10aGUtcmVydW5uaW5nLW9mLXRhc2tzJz5TdGFtcCBGaWxlcyBhbmQgdGhlIFJlcnVubmluZyBvZiBUYXNrczwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbCBmb3IKKyAgICAgICAgICAgICAgICBob3cgQml0QmFrZSBkZXRlcm1pbmVzIHdoZXRoZXIgYSB0YXNrIGlzICJvdXQgb2YgZGF0ZSIuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIGZvcmNlIGFuIHVwLXRvLWRhdGUgdGFzayB0byBiZSByZXJ1biAoZS5nLgorICAgICAgICAgICAgICAgIGJlY2F1c2UgeW91IG1hZGUgbWFudWFsIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHJlY2lwZSdzCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHRoYXQgeW91IHdhbnQgdG8gdHJ5IG91dCksIHRoZW4geW91IGNhbiB1c2UgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1mPC9maWxlbmFtZT4gb3B0aW9uLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVhc29uIDxmaWxlbmFtZT4tZjwvZmlsZW5hbWU+IGlzIG5ldmVyIHJlcXVpcmVkIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgcnVubmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWRldnNoZWxsJz48ZmlsZW5hbWU+ZG9fZGV2c2hlbGw8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgaXMgYmVjYXVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPls8L2ZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyaWFibGUtZmxhZ3MnPjxmaWxlbmFtZT5ub3N0YW1wPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT5dPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZmxhZyBpcyBhbHJlYWR5IHNldCBmb3IgdGhlIHRhc2suCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyBvbmUgd2F5IHlvdSBjYW4gdXNlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tZjwvZmlsZW5hbWU+IG9wdGlvbjoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBtYXRjaGJveC1kZXNrdG9wCisgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAuCisgICAgIG1ha2Ugc29tZSBjaGFuZ2VzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGUgd29yayBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgIC4KKyAgICAgJCBiaXRiYWtlIG1hdGNoYm94LWRlc2t0b3AgLWMgY29tcGlsZSAtZgorICAgICAkIGJpdGJha2UgbWF0Y2hib3gtZGVza3RvcAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhpcyBzZXF1ZW5jZSBmaXJzdCBidWlsZHMgYW5kIHRoZW4gcmVjb21waWxlcworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tYXRjaGJveC1kZXNrdG9wPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgVGhlIGxhc3QgY29tbWFuZCByZXJ1bnMgYWxsIHRhc2tzIChiYXNpY2FsbHkgdGhlIHBhY2thZ2luZworICAgICAgICAgICAgICAgIHRhc2tzKSBhZnRlciB0aGUgY29tcGlsZS4KKyAgICAgICAgICAgICAgICBCaXRCYWtlIHJlY29nbml6ZXMgdGhhdCB0aGUgPGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHRhc2sgd2FzIHJlcnVuIGFuZCB0aGVyZWZvcmUgdW5kZXJzdGFuZHMgdGhhdCB0aGUgb3RoZXIgdGFza3MKKyAgICAgICAgICAgICAgICBhbHNvIG5lZWQgdG8gYmUgcnVuIGFnYWluLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBbm90aGVyLCBzaG9ydGVyIHdheSB0byByZXJ1biBhIHRhc2sgYW5kIGFsbAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I25vcm1hbC1yZWNpcGUtYnVpbGQtdGFza3MnPm5vcm1hbCByZWNpcGUgYnVpbGQgdGFza3M8L3VsaW5rPgorICAgICAgICAgICAgICAgIHRoYXQgZGVwZW5kIG9uIGl0IGlzIHRvIHVzZSB0aGUgPGZpbGVuYW1lPi1DPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBvcHRpb24uCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIHVwcGVyLWNhc2VkIGFuZCBpcyBzZXBhcmF0ZSBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LWM8L2ZpbGVuYW1lPiBvcHRpb24sIHdoaWNoIGlzIGxvd2VyLWNhc2VkLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICBVc2luZyB0aGlzIG9wdGlvbiBpbnZhbGlkYXRlcyB0aGUgZ2l2ZW4gdGFzayBhbmQgdGhlbiBydW5zIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1idWlsZCc+PGZpbGVuYW1lPmRvX2J1aWxkPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHRhc2ssIHdoaWNoIGlzIHRoZSBkZWZhdWx0IHRhc2sgaWYgbm8gdGFzayBpcyBnaXZlbiwgYW5kIHRoZQorICAgICAgICAgICAgICAgIHRhc2tzIG9uIHdoaWNoIGl0IGRlcGVuZHMuCisgICAgICAgICAgICAgICAgWW91IGNvdWxkIHJlcGxhY2UgdGhlIGZpbmFsIHR3byBjb21tYW5kcyBpbiB0aGUgcHJldmlvdXMgZXhhbXBsZQorICAgICAgICAgICAgICAgIHdpdGggdGhlIGZvbGxvd2luZyBzaW5nbGUgY29tbWFuZDoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBtYXRjaGJveC1kZXNrdG9wIC1DIGNvbXBpbGUKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgSW50ZXJuYWxseSwgdGhlIDxmaWxlbmFtZT4tZjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tQzwvZmlsZW5hbWU+IG9wdGlvbnMgd29yayBieSB0YWludGluZyAobW9kaWZ5aW5nKSB0aGUKKyAgICAgICAgICAgICAgICBpbnB1dCBjaGVja3N1bSBvZiB0aGUgc3BlY2lmaWVkIHRhc2suCisgICAgICAgICAgICAgICAgVGhpcyB0YWludGluZyBpbmRpcmVjdGx5IGNhdXNlcyB0aGUgdGFzayBhbmQgaXRzCisgICAgICAgICAgICAgICAgZGVwZW5kZW50IHRhc2tzIHRvIGJlIHJlcnVuIHRocm91Z2ggdGhlIG5vcm1hbCB0YXNrIGRlcGVuZGVuY3kKKyAgICAgICAgICAgICAgICBtZWNoYW5pc21zLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIGV4cGxpY2l0bHkga2VlcHMgdHJhY2sgb2Ygd2hpY2ggdGFza3MgaGF2ZSBiZWVuCisgICAgICAgICAgICAgICAgICAgIHRhaW50ZWQgaW4gdGhpcyBmYXNoaW9uLCBhbmQgd2lsbCBwcmludCB3YXJuaW5ncyBzdWNoIGFzIHRoZQorICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgZm9yIGJ1aWxkcyBpbnZvbHZpbmcgc3VjaCB0YXNrczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBXQVJOSU5HOiAvaG9tZS91bGYvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1kZXNrdG9wL21hdGNoYm94LWRlc2t0b3BfMi4xLmJiLmRvX2NvbXBpbGUgaXMgdGFpbnRlZCBmcm9tIGEgZm9yY2VkIHJ1bgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSBwdXJwb3NlIG9mIHRoZSB3YXJuaW5nIGlzIHRvIGxldCB5b3Uga25vdyB0aGF0IHRoZSB3b3JrCisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBhbmQgYnVpbGQgb3V0cHV0IG1pZ2h0IG5vdCBiZSBpbiB0aGUgY2xlYW4gc3RhdGUKKyAgICAgICAgICAgICAgICAgICAgdGhleSB3b3VsZCBiZSBpbiBmb3IgYSAibm9ybWFsIiBidWlsZCwgZGVwZW5kaW5nIG9uIHdoYXQKKyAgICAgICAgICAgICAgICAgICAgYWN0aW9ucyB5b3UgdG9vay4KKyAgICAgICAgICAgICAgICAgICAgVG8gZ2V0IHJpZCBvZiBzdWNoIHdhcm5pbmdzLCB5b3UgY2FuIHJlbW92ZSB0aGUgd29yaworICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgYW5kIHJlYnVpbGQgdGhlIHJlY2lwZSwgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgbWF0Y2hib3gtZGVza3RvcCAtYyBjbGVhbgorICAgICAkIGJpdGJha2UgbWF0Y2hib3gtZGVza3RvcAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHZpZXcgYSBsaXN0IG9mIHRhc2tzIGluIGEgZ2l2ZW4gcGFja2FnZSBieSBydW5uaW5nIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19saXN0dGFza3M8L2ZpbGVuYW1lPiB0YXNrIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgbWF0Y2hib3gtZGVza3RvcCAtYyBsaXN0dGFza3MKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhlIHJlc3VsdHMgYXBwZWFyIGFzIG91dHB1dCB0byB0aGUgY29uc29sZSBhbmQgYXJlIGFsc28gaW4gdGhlCisgICAgICAgICAgICAgICAgZmlsZSA8ZmlsZW5hbWU+JHtXT1JLRElSfS90ZW1wL2xvZy5kb19saXN0dGFza3M8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkZXYtZGVidWdnaW5nLWJpdGJha2UnPgorICAgICAgICAgICAgPHRpdGxlPkdlbmVyYWwgQml0QmFrZSBQcm9ibGVtczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIGRlYnVnIG91dHB1dCBmcm9tIEJpdEJha2UgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1EPC9maWxlbmFtZT4gb3B0aW9uLgorICAgICAgICAgICAgICAgIFRoZSBkZWJ1ZyBvdXRwdXQgZ2l2ZXMgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IEJpdEJha2UKKyAgICAgICAgICAgICAgICBpcyBkb2luZyBhbmQgdGhlIHJlYXNvbiBiZWhpbmQgaXQuCisgICAgICAgICAgICAgICAgRWFjaCA8ZmlsZW5hbWU+LUQ8L2ZpbGVuYW1lPiBvcHRpb24geW91IHVzZSBpbmNyZWFzZXMgdGhlCisgICAgICAgICAgICAgICAgbG9nZ2luZyBsZXZlbC4KKyAgICAgICAgICAgICAgICBUaGUgbW9zdCBjb21tb24gdXNhZ2UgaXMgPGZpbGVuYW1lPi1EREQ8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIG91dHB1dCBmcm9tCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgLURERCAtdjwvZmlsZW5hbWU+IDxyZXBsYWNlYWJsZT50YXJnZXRuYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICBjYW4gcmV2ZWFsIHdoeSBCaXRCYWtlIGNob3NlIGEgY2VydGFpbiB2ZXJzaW9uIG9mIGEgcGFja2FnZSBvcgorICAgICAgICAgICAgICAgIHdoeSBCaXRCYWtlIHBpY2tlZCBhIGNlcnRhaW4gcHJvdmlkZXIuCisgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGNvdWxkIGFsc28gaGVscCB5b3UgaW4gYSBzaXR1YXRpb24gd2hlcmUgeW91IHRoaW5rCisgICAgICAgICAgICAgICAgQml0QmFrZSBkaWQgc29tZXRoaW5nIHVuZXhwZWN0ZWQuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZGV2LWRlYnVnZ2luZy1idWlsZGZpbGUnPgorICAgICAgICAgICAgPHRpdGxlPkJ1aWxkaW5nIHdpdGggTm8gRGVwZW5kZW5jaWVzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gYnVpbGQgYSBzcGVjaWZpYyByZWNpcGUgKDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPiBmaWxlKSwKKyAgICAgICAgICAgICAgICB5b3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgZm9ybToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSAtYiA8cmVwbGFjZWFibGU+c29tZXBhdGg8L3JlcGxhY2VhYmxlPi88cmVwbGFjZWFibGU+c29tZXJlY2lwZTwvcmVwbGFjZWFibGU+LmJiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCBmb3JtIGRvZXMgbm90IGNoZWNrIGZvciBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB5b3Ugc2hvdWxkIHVzZSBpdCBvbmx5IHdoZW4geW91IGtub3cgZXhpc3RpbmcKKyAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgaGF2ZSBiZWVuIG1ldC4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHNwZWNpZnkgZnJhZ21lbnRzIG9mIHRoZSBmaWxlbmFtZS4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCBCaXRCYWtlIGNoZWNrcyBmb3IgYSB1bmlxdWUgbWF0Y2guCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3JlY2lwZS1sb2dnaW5nLW1lY2hhbmlzbXMnPgorICAgICAgICAgICAgPHRpdGxlPlJlY2lwZSBMb2dnaW5nIE1lY2hhbmlzbXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcyBzZXZlcmFsIGxvZ2dpbmcgZnVuY3Rpb25zIGZvcgorICAgICAgICAgICAgICAgIHByb2R1Y2luZyBkZWJ1Z2dpbmcgb3V0cHV0IGFuZCByZXBvcnRpbmcgZXJyb3JzIGFuZCB3YXJuaW5ncy4KKyAgICAgICAgICAgICAgICBGb3IgUHl0aG9uIGZ1bmN0aW9ucywgdGhlIGZvbGxvd2luZyBsb2dnaW5nIGZ1bmN0aW9ucyBleGlzdC4KKyAgICAgICAgICAgICAgICBBbGwgb2YgdGhlc2UgZnVuY3Rpb25zIGxvZyB0bworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1R9L2xvZy5kb188L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT50YXNrPC9yZXBsYWNlYWJsZT4sCisgICAgICAgICAgICAgICAgYW5kIGNhbiBhbHNvIGxvZyB0byBzdGFuZGFyZCBvdXRwdXQgKHN0ZG91dCkgd2l0aCB0aGUgcmlnaHQKKyAgICAgICAgICAgICAgICBzZXR0aW5nczoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIucGxhaW4oPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bXNnPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+KTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVzIDxyZXBsYWNlYWJsZT5tc2c8L3JlcGxhY2VhYmxlPiBhcyBpcyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZyB3aGlsZSBhbHNvIGxvZ2dpbmcgdG8gc3Rkb3V0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5ub3RlKDwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1zZzwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPik8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlcyAiTk9URTogPHJlcGxhY2VhYmxlPm1zZzwvcmVwbGFjZWFibGU+IiB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFsc28gbG9ncyB0byBzdGRvdXQgaWYgQml0QmFrZSBpcyBjYWxsZWQgd2l0aCAiLXYiLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5kZWJ1Zyg8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5sZXZlbDwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPiwmbmJzcDs8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tc2c8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4pPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZXMgIkRFQlVHOiA8cmVwbGFjZWFibGU+bXNnPC9yZXBsYWNlYWJsZT4iIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgbG9nLgorICAgICAgICAgICAgICAgICAgICAgICAgQWxzbyBsb2dzIHRvIHN0ZG91dCBpZiB0aGUgbG9nIGxldmVsIGlzIGdyZWF0ZXIgdGhhbiBvcgorICAgICAgICAgICAgICAgICAgICAgICAgZXF1YWwgdG8gPHJlcGxhY2VhYmxlPmxldmVsPC9yZXBsYWNlYWJsZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN1c2FnZS1hbmQtc3ludGF4Jz4tRDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi53YXJuKDwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1zZzwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPik8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlcyAiV0FSTklORzogPHJlcGxhY2VhYmxlPm1zZzwvcmVwbGFjZWFibGU+IiB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZyB3aGlsZSBhbHNvIGxvZ2dpbmcgdG8gc3Rkb3V0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5lcnJvcig8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tc2c8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4pPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZXMgIkVSUk9SOiA8cmVwbGFjZWFibGU+bXNnPC9yZXBsYWNlYWJsZT4iIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgbG9nIHdoaWxlIGFsc28gbG9nZ2luZyB0byBzdGFuZGFyZCBvdXQgKHN0ZG91dCkuCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2F1c2UgdGhlIHRhc2sgdG8gZmFpbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIuZmF0YWwoPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bXNnPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+KTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBsb2dnaW5nIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5lcnJvcig8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tc2c8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4pPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBhbHNvIGNhdXNlcyB0aGUgY2FsbGluZyB0YXNrIHRvIGZhaWwuCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIuZmF0YWwoKTwvZmlsZW5hbWU+IHJhaXNlcyBhbiBleGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggbWVhbnMgeW91IGRvIG5vdCBuZWVkIHRvIHB1dCBhICJyZXR1cm4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50IGFmdGVyIHRoZSBmdW5jdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgc2FtZSBsb2dnaW5nIGZ1bmN0aW9ucyBhcmUgYWxzbyBhdmFpbGFibGUgaW4gc2hlbGwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbnMsIHVuZGVyIHRoZSBuYW1lcworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYnBsYWluPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5iYm5vdGU8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJkZWJ1ZzwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+YmJ3YXJuPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJiZXJyb3I8L2ZpbGVuYW1lPiwgYW5kIDxmaWxlbmFtZT5iYmZhdGFsPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtbG9nZ2luZyc+PGZpbGVuYW1lPmxvZ2dpbmc8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgY2xhc3MgaW1wbGVtZW50cyB0aGVzZSBmdW5jdGlvbnMuCisgICAgICAgICAgICAgICAgU2VlIHRoYXQgY2xhc3MgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY2xhc3NlczwvZmlsZW5hbWU+IGZvbGRlciBvZiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICBmb3IgaW5mb3JtYXRpb24uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdsb2dnaW5nLXdpdGgtcHl0aG9uJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+TG9nZ2luZyBXaXRoIFB5dGhvbjwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBjcmVhdGluZyByZWNpcGVzIHVzaW5nIFB5dGhvbiBhbmQgaW5zZXJ0aW5nIGNvZGUgdGhhdAorICAgICAgICAgICAgICAgICAgICBoYW5kbGVzIGJ1aWxkIGxvZ3MsIGtlZXAgaW4gbWluZCB0aGUgZ29hbCBpcyB0byBoYXZlCisgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aXZlIGxvZ3Mgd2hpbGUga2VlcGluZyB0aGUgY29uc29sZSBhcyAic2lsZW50IiBhcworICAgICAgICAgICAgICAgICAgICBwb3NzaWJsZS4KKyAgICAgICAgICAgICAgICAgICAgQWxzbywgaWYgeW91IHdhbnQgc3RhdHVzIG1lc3NhZ2VzIGluIHRoZSBsb2csIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgImRlYnVnIiBsb2dsZXZlbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgd3JpdHRlbiBpbiBQeXRob24uCisgICAgICAgICAgICAgICAgICAgIFRoZSBjb2RlIGhhbmRsZXMgbG9nZ2luZyBmb3IgYSBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIG51bWJlciBvZiB0YXNrcyBuZWVkZWQgdG8gYmUgcnVuLgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtbGlzdHRhc2tzJz48ZmlsZW5hbWU+ZG9fbGlzdHRhc2tzPC9maWxlbmFtZT48L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBweXRob24gZG9fbGlzdHRhc2tzKCkgeworICAgICAgICAgYmIuZGVidWcoMiwgIlN0YXJ0aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIHRhc2sgbGlzdCIpCisgICAgICAgICBpZiBub3Rld29ydGh5X2NvbmRpdGlvbjoKKyAgICAgICAgICAgICBiYi5ub3RlKCJUaGVyZSBhcmUgNDcgdGFza3MgdG8gcnVuIikKKyAgICAgICAgIGJiLmRlYnVnKDIsICJHb3QgdG8gcG9pbnQgeHl6IikKKyAgICAgICAgIGlmIHdhcm5pbmdfdHJpZ2dlcjoKKyAgICAgICAgICAgICBiYi53YXJuKCJEZXRlY3RlZCB3YXJuaW5nX3RyaWdnZXIsIHRoaXMgbWlnaHQgYmUgYSBwcm9ibGVtIGxhdGVyLiIpCisgICAgICAgICBpZiByZWNvdmVyYWJsZV9lcnJvcjoKKyAgICAgICAgICAgICBiYi5lcnJvcigiSGl0IHJlY292ZXJhYmxlX2Vycm9yLCB5b3UgcmVhbGx5IG5lZWQgdG8gZml4IHRoaXMhIikKKyAgICAgICAgIGlmIGZhdGFsX2Vycm9yOgorICAgICAgICAgICAgIGJiLmZhdGFsKCJmYXRhbF9lcnJvciBkZXRlY3RlZCwgdW5hYmxlIHRvIHByaW50IHRoZSB0YXNrIGxpc3QiKQorICAgICAgICAgYmIucGxhaW4oIlRoZSB0YXNrcyBwcmVzZW50IGFyZSBhYmMiKQorICAgICAgICAgYmIuZGVidWcoMiwgIkZpbmlzaGVkIGZpZ3VyaW5nIG91dCB0aGUgdGFza2xpc3QiKQorICAgICB9CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdsb2dnaW5nLXdpdGgtYmFzaCc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkxvZ2dpbmcgV2l0aCBCYXNoPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaGVuIGNyZWF0aW5nIHJlY2lwZXMgdXNpbmcgQmFzaCBhbmQgaW5zZXJ0aW5nIGNvZGUgdGhhdAorICAgICAgICAgICAgICAgICAgICBoYW5kbGVzIGJ1aWxkIGxvZ3MsIHlvdSBoYXZlIHRoZSBzYW1lIGdvYWxzIC0gaW5mb3JtYXRpdmUKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBtaW5pbWFsIGNvbnNvbGUgb3V0cHV0LgorICAgICAgICAgICAgICAgICAgICBUaGUgc3ludGF4IHlvdSB1c2UgZm9yIHJlY2lwZXMgd3JpdHRlbiBpbiBCYXNoIGlzIHNpbWlsYXIKKyAgICAgICAgICAgICAgICAgICAgdG8gdGhhdCBvZiByZWNpcGVzIHdyaXR0ZW4gaW4gUHl0aG9uIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgd3JpdHRlbiBpbiBCYXNoLgorICAgICAgICAgICAgICAgICAgICBUaGUgY29kZSBsb2dzIHRoZSBwcm9ncmVzcyBvZiB0aGUgPGZpbGVuYW1lPmRvX215X2Z1bmN0aW9uPC9maWxlbmFtZT4gZnVuY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZG9fbXlfZnVuY3Rpb24oKSB7CisgICAgICAgICBiYmRlYnVnIDIgIlJ1bm5pbmcgZG9fbXlfZnVuY3Rpb24iCisgICAgICAgICBpZiBbIGV4Y2VwdGlvbmFsX2NvbmRpdGlvbiBdOyB0aGVuCisgICAgICAgICAgICAgYmJub3RlICJIaXQgZXhjZXB0aW9uYWxfY29uZGl0aW9uIgorICAgICAgICAgZmkKKyAgICAgICAgIGJiZGVidWcgMiAgIkdvdCB0byBwb2ludCB4eXoiCisgICAgICAgICBpZiBbIHdhcm5pbmdfdHJpZ2dlciBdOyB0aGVuCisgICAgICAgICAgICAgYmJ3YXJuICJEZXRlY3RlZCB3YXJuaW5nX3RyaWdnZXIsIHRoaXMgbWlnaHQgY2F1c2UgYSBwcm9ibGVtIGxhdGVyLiIKKyAgICAgICAgIGZpCisgICAgICAgICBpZiBbIHJlY292ZXJhYmxlX2Vycm9yIF07IHRoZW4KKyAgICAgICAgICAgICBiYmVycm9yICJIaXQgcmVjb3ZlcmFibGVfZXJyb3IsIGNvcnJlY3RpbmciCisgICAgICAgICBmaQorICAgICAgICAgaWYgWyBmYXRhbF9lcnJvciBdOyB0aGVuCisgICAgICAgICAgICAgYmJmYXRhbCAiZmF0YWxfZXJyb3IgZGV0ZWN0ZWQiCisgICAgICAgICBmaQorICAgICAgICAgYmJkZWJ1ZyAyICJDb21wbGV0ZWQgZG9fbXlfZnVuY3Rpb24iCisgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkZWJ1Z2dpbmctcGFyYWxsZWwtbWFrZS1yYWNlcyc+CisgICAgICAgICAgICA8dGl0bGU+RGVidWdnaW5nIFBhcmFsbGVsIE1ha2UgUmFjZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBIHBhcmFsbGVsIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gcmFjZSBvY2N1cnMgd2hlbiB0aGUgYnVpbGQKKyAgICAgICAgICAgICAgICBjb25zaXN0cyBvZiBzZXZlcmFsIHBhcnRzIHRoYXQgYXJlIHJ1biBzaW11bHRhbmVvdXNseSBhbmQKKyAgICAgICAgICAgICAgICBhIHNpdHVhdGlvbiBvY2N1cnMgd2hlbiB0aGUgb3V0cHV0IG9yIHJlc3VsdCBvZiBvbmUKKyAgICAgICAgICAgICAgICBwYXJ0IGlzIG5vdCByZWFkeSBmb3IgdXNlIHdpdGggYSBkaWZmZXJlbnQgcGFydCBvZiB0aGUgYnVpbGQKKyAgICAgICAgICAgICAgICB0aGF0IGRlcGVuZHMgb24gdGhhdCBvdXRwdXQuCisgICAgICAgICAgICAgICAgUGFyYWxsZWwgbWFrZSByYWNlcyBhcmUgYW5ub3lpbmcgYW5kIGNhbiBzb21ldGltZXMgYmUgZGlmZmljdWx0CisgICAgICAgICAgICAgICAgdG8gcmVwcm9kdWNlIGFuZCBmaXguCisgICAgICAgICAgICAgICAgSG93ZXZlciwgc29tZSBzaW1wbGUgdGlwcyBhbmQgdHJpY2tzIGV4aXN0IHRoYXQgY2FuIGhlbHAKKyAgICAgICAgICAgICAgICB5b3UgZGVidWcgYW5kIGZpeCB0aGVtLgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcmVzZW50cyBhIHJlYWwtd29ybGQgZXhhbXBsZSBvZiBhbiBlcnJvcgorICAgICAgICAgICAgICAgIGVuY291bnRlcmVkIG9uIHRoZSBZb2N0byBQcm9qZWN0IGF1dG9idWlsZGVyIGFuZCB0aGUgcHJvY2VzcworICAgICAgICAgICAgICAgIHVzZWQgdG8gZml4IGl0LgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgY2Fubm90IHByb3Blcmx5IGZpeCBhIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gcmFjZQorICAgICAgICAgICAgICAgICAgICBjb25kaXRpb24sIHlvdSBjYW4gd29yayBhcm91bmQgaXQgYnkgY2xlYXJpbmcgZWl0aGVyIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFSQUxMRUxfTUFLRSc+PGZpbGVuYW1lPlBBUkFMTEVMX01BS0U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQVJBTExFTF9NQUtFSU5TVCc+PGZpbGVuYW1lPlBBUkFMTEVMX01BS0VJTlNUPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ndGhlLWZhaWx1cmUnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5UaGUgRmFpbHVyZTwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHRoaXMgZXhhbXBsZSwgYXNzdW1lIHRoYXQgeW91IGFyZSBidWlsZGluZyBhbiBpbWFnZSB0aGF0CisgICAgICAgICAgICAgICAgICAgIGRlcGVuZHMgb24gdGhlICJuZWFyZCIgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgQW5kLCBkdXJpbmcgdGhlIGJ1aWxkLCBCaXRCYWtlIHJ1bnMgaW50byBwcm9ibGVtcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlcyB0aGUgZm9sbG93aW5nIG91dHB1dC4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGV4YW1wbGUgbG9nIGZpbGUgaGFzIGxvbmdlciBsaW5lcyBhcnRpZmljaWFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyb2tlbiB0byBtYWtlIHRoZSBsaXN0aW5nIGVhc2llciB0byByZWFkLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBleGFtaW5lIHRoZSBvdXRwdXQgb3IgdGhlIGxvZyBmaWxlLCB5b3Ugc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICBmYWlsdXJlIGR1cmluZyA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIHwgREVCVUc6IFNJVEUgZmlsZXMgWydlbmRpYW4tbGl0dGxlJywgJ2JpdC0zMicsICdpeDg2LWNvbW1vbicsICdjb21tb24tbGludXgnLCAnY29tbW9uLWdsaWJjJywgJ2k1ODYtbGludXgnLCAnY29tbW9uJ10KICAgICAgfCBERUJVRzogRXhlY3V0aW5nIHNoZWxsIGZ1bmN0aW9uIGRvX2NvbXBpbGUKICAgICAgfCBOT1RFOiBtYWtlIC1qIDE2CkBAIC0xMDE5NCw2MSArMTMxNzAsNjIgQEAKICAgICAgfCBtYWtlWzFdOiAqKiogV2FpdGluZyBmb3IgdW5maW5pc2hlZCBqb2JzLi4uLgogICAgICB8IG1ha2U6ICoqKiBbYWxsXSBFcnJvciAyCiAgICAgIHwgRVJST1I6IG9lX3J1bm1ha2UgZmFpbGVkCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgPHNlY3Rpb24gaWQ9J3JlcHJvZHVjaW5nLXRoZS1lcnJvcic+Ci0gICAgICAgICAgICA8dGl0bGU+UmVwcm9kdWNpbmcgdGhlIEVycm9yPC90aXRsZT4KKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdyZXByb2R1Y2luZy10aGUtZXJyb3InPgorICAgICAgICAgICAgICAgIDx0aXRsZT5SZXByb2R1Y2luZyB0aGUgRXJyb3I8L3RpdGxlPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBCZWNhdXNlIHJhY2UgY29uZGl0aW9ucyBhcmUgaW50ZXJtaXR0ZW50LCB0aGV5IGRvIG5vdAotICAgICAgICAgICAgICAgIG1hbmlmZXN0IHRoZW1zZWx2ZXMgZXZlcnkgdGltZSB5b3UgZG8gdGhlIGJ1aWxkLgotICAgICAgICAgICAgICAgIEluIGZhY3QsIG1vc3QgdGltZXMgdGhlIGJ1aWxkIHdpbGwgY29tcGxldGUgd2l0aG91dCBwcm9ibGVtcwotICAgICAgICAgICAgICAgIGV2ZW4gdGhvdWdoIHRoZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gZXhpc3RzLgotICAgICAgICAgICAgICAgIFRodXMsIG9uY2UgdGhlIGVycm9yIHN1cmZhY2VzLCB5b3UgbmVlZCBhIHdheSB0byByZXByb2R1Y2UgaXQuCi0gICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJlY2F1c2UgcmFjZSBjb25kaXRpb25zIGFyZSBpbnRlcm1pdHRlbnQsIHRoZXkgZG8gbm90CisgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0IHRoZW1zZWx2ZXMgZXZlcnkgdGltZSB5b3UgZG8gdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBJbiBmYWN0LCBtb3N0IHRpbWVzIHRoZSBidWlsZCB3aWxsIGNvbXBsZXRlIHdpdGhvdXQgcHJvYmxlbXMKKyAgICAgICAgICAgICAgICAgICAgZXZlbiB0aG91Z2ggdGhlIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBleGlzdHMuCisgICAgICAgICAgICAgICAgICAgIFRodXMsIG9uY2UgdGhlIGVycm9yIHN1cmZhY2VzLCB5b3UgbmVlZCBhIHdheSB0byByZXByb2R1Y2UKKyAgICAgICAgICAgICAgICAgICAgaXQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIGNvbXBpbGluZyB0aGUgIm5lYXJkIiBwYWNrYWdlIGlzIGNhdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgcHJvYmxlbS4KLSAgICAgICAgICAgICAgICBTbyB0aGUgZmlyc3QgdGhpbmcgdG8gZG8gaXMgYnVpbGQgIm5lYXJkIiBsb2NhbGx5LgotICAgICAgICAgICAgICAgIEJlZm9yZSB5b3Ugc3RhcnQgdGhlIGJ1aWxkLCBzZXQgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBUkFMTEVMX01BS0UnPjxmaWxlbmFtZT5QQVJBTExFTF9NQUtFPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHRvCi0gICAgICAgICAgICAgICAgYSBoaWdoIG51bWJlciAoZS5nLiAiLWogMjAiKS4KLSAgICAgICAgICAgICAgICBVc2luZyBhIGhpZ2ggdmFsdWUgZm9yIDxmaWxlbmFtZT5QQVJBTExFTF9NQUtFPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBpbmNyZWFzZXMgdGhlIGNoYW5jZXMgb2YgdGhlIHJhY2UgY29uZGl0aW9uIHNob3dpbmcgdXA6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIGNvbXBpbGluZyB0aGUgIm5lYXJkIiBwYWNrYWdlIGlzIGNhdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgdGhlIHByb2JsZW0uCisgICAgICAgICAgICAgICAgICAgIFNvIHRoZSBmaXJzdCB0aGluZyB0byBkbyBpcyBidWlsZCAibmVhcmQiIGxvY2FsbHkuCisgICAgICAgICAgICAgICAgICAgIEJlZm9yZSB5b3Ugc3RhcnQgdGhlIGJ1aWxkLCBzZXQgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQVJBTExFTF9NQUtFJz48ZmlsZW5hbWU+UEFSQUxMRUxfTUFLRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgdG8KKyAgICAgICAgICAgICAgICAgICAgYSBoaWdoIG51bWJlciAoZS5nLiAiLWogMjAiKS4KKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgYSBoaWdoIHZhbHVlIGZvciA8ZmlsZW5hbWU+UEFSQUxMRUxfTUFLRTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGluY3JlYXNlcyB0aGUgY2hhbmNlcyBvZiB0aGUgcmFjZSBjb25kaXRpb24gc2hvd2luZyB1cDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGJpdGJha2UgbmVhcmQKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIE9uY2UgdGhlIGxvY2FsIGJ1aWxkIGZvciAibmVhcmQiIGNvbXBsZXRlcywgc3RhcnQgYQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+IGJ1aWxkOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgbG9jYWwgYnVpbGQgZm9yICJuZWFyZCIgY29tcGxldGVzLCBzdGFydCBhCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+IGJ1aWxkOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgYml0YmFrZSBuZWFyZCAtYyBkZXZzaGVsbAotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSBhCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnNoZWxsPC9maWxlbmFtZT4sIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncGxhdGRldi1hcHBkZXYtZGV2c2hlbGwnPlVzaW5nIGEgRGV2ZWxvcG1lbnQgU2hlbGw8L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgYQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncGxhdGRldi1hcHBkZXYtZGV2c2hlbGwnPlVzaW5nIGEgRGV2ZWxvcG1lbnQgU2hlbGw8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSW4gdGhlIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+LCBkbyB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhlIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+LCBkbyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgbWFrZSBjbGVhbgogICAgICAkIG1ha2UgdG9vbHMvc25lcC1zZW5kLm8KLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+IGNvbW1hbmRzIGNhdXNlIHRoZSBmYWlsdXJlCi0gICAgICAgICAgICAgICAgdG8gY2xlYXJseSBiZSB2aXNpYmxlLgotICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgYSBtaXNzaW5nIGRlcGVuZGVuY3kgZXhpc3RzIGZvciB0aGUgIm5lYXJkIgotICAgICAgICAgICAgICAgIE1ha2VmaWxlIHRhcmdldC4KLSAgICAgICAgICAgICAgICBIZXJlIGlzIHNvbWUgYWJicmV2aWF0ZWQsIHNhbXBsZSBvdXRwdXQgd2l0aCB0aGUKLSAgICAgICAgICAgICAgICBtaXNzaW5nIGRlcGVuZGVuY3kgY2xlYXJseSB2aXNpYmxlIGF0IHRoZSBlbmQ6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPiBjb21tYW5kcyBjYXVzZSB0aGUgZmFpbHVyZQorICAgICAgICAgICAgICAgICAgICB0byBjbGVhcmx5IGJlIHZpc2libGUuCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgYSBtaXNzaW5nIGRlcGVuZGVuY3kgZXhpc3RzIGZvciB0aGUgIm5lYXJkIgorICAgICAgICAgICAgICAgICAgICBNYWtlZmlsZSB0YXJnZXQuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgc29tZSBhYmJyZXZpYXRlZCwgc2FtcGxlIG91dHB1dCB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICBtaXNzaW5nIGRlcGVuZGVuY3kgY2xlYXJseSB2aXNpYmxlIGF0IHRoZSBlbmQ6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgaTU4Ni1wb2t5LWxpbnV4LWdjYyAgLW0zMiAtbWFyY2g9aTU4NiAtLXN5c3Jvb3Q9L2hvbWUvc2NvdHQtbGVub3ZvLy4uLi4uLgogICAgICAgICAuCiAgICAgICAgIC4KQEAgLTEwMjYxLDIzOCArMTMyMzgsMTY4NyBAQAogICAgICBjb21waWxhdGlvbiB0ZXJtaW5hdGVkLgogICAgICBtYWtlOiAqKiogW3Rvb2xzL3NuZXAtc2VuZC5vXSBFcnJvciAxCiAgICAgICQKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KIAotICAgICAgICA8c2VjdGlvbiBpZD0nY3JlYXRpbmctYS1wYXRjaC1mb3ItdGhlLWZpeCc+Ci0gICAgICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgYSBQYXRjaCBmb3IgdGhlIEZpeDwvdGl0bGU+CisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nY3JlYXRpbmctYS1wYXRjaC1mb3ItdGhlLWZpeCc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkNyZWF0aW5nIGEgUGF0Y2ggZm9yIHRoZSBGaXg8L3RpdGxlPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBCZWNhdXNlIHRoZXJlIGlzIGEgbWlzc2luZyBkZXBlbmRlbmN5IGZvciB0aGUgTWFrZWZpbGUKLSAgICAgICAgICAgICAgICB0YXJnZXQsIHlvdSBuZWVkIHRvIHBhdGNoIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZS5hbTwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGlzIGdlbmVyYXRlZAotICAgICAgICAgICAgICAgIGZyb20gPGZpbGVuYW1lPk1ha2VmaWxlLmluPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgUXVpbHQgdG8gY3JlYXRlIHRoZSBwYXRjaDoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJlY2F1c2UgdGhlcmUgaXMgYSBtaXNzaW5nIGRlcGVuZGVuY3kgZm9yIHRoZSBNYWtlZmlsZQorICAgICAgICAgICAgICAgICAgICB0YXJnZXQsIHlvdSBuZWVkIHRvIHBhdGNoIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TWFrZWZpbGUuYW08L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBpcyBnZW5lcmF0ZWQKKyAgICAgICAgICAgICAgICAgICAgZnJvbSA8ZmlsZW5hbWU+TWFrZWZpbGUuaW48L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgUXVpbHQgdG8gY3JlYXRlIHRoZSBwYXRjaDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHF1aWx0IG5ldyBwYXJhbGxlbG1ha2UucGF0Y2gKICAgICAgUGF0Y2ggcGF0Y2hlcy9wYXJhbGxlbG1ha2UucGF0Y2ggaXMgbm93IG9uIHRvcAogICAgICAkIHF1aWx0IGFkZCBNYWtlZmlsZS5hbQogICAgICBGaWxlIE1ha2VmaWxlLmFtIGFkZGVkIHRvIHBhdGNoIHBhdGNoZXMvcGFyYWxsZWxtYWtlLnBhdGNoCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHVzaW5nIFF1aWx0LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLWEtcXVpbHQtd29ya2Zsb3cnPlVzaW5nIFF1aWx0IGluIFlvdXIgV29ya2Zsb3c8L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdXNpbmcgUXVpbHQsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5nLWEtcXVpbHQtd29ya2Zsb3cnPlVzaW5nIFF1aWx0IGluIFlvdXIgV29ya2Zsb3c8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQXQgdGhpcyBwb2ludCB5b3UgbmVlZCB0byBtYWtlIHRoZSBlZGl0cyB0bwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZS5hbTwvZmlsZW5hbWU+IHRvIGFkZCB0aGUgbWlzc2luZwotICAgICAgICAgICAgICAgIGRlcGVuZGVuY3kuCi0gICAgICAgICAgICAgICAgRm9yIG91ciBleGFtcGxlLCB5b3UgaGF2ZSB0byBhZGQgdGhlIGZvbGxvd2luZyBsaW5lCi0gICAgICAgICAgICAgICAgdG8gdGhlIGZpbGU6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50IHlvdSBuZWVkIHRvIG1ha2UgdGhlIGVkaXRzIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZS5hbTwvZmlsZW5hbWU+IHRvIGFkZCB0aGUgbWlzc2luZworICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmN5LgorICAgICAgICAgICAgICAgICAgICBGb3Igb3VyIGV4YW1wbGUsIHlvdSBoYXZlIHRvIGFkZCB0aGUgZm9sbG93aW5nIGxpbmUKKyAgICAgICAgICAgICAgICAgICAgdG8gdGhlIGZpbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgdG9vbHMvc25lcC1zZW5kLiQoT0JKRVhUKTogaW5jbHVkZS9uZWFyL2RidXMuaAotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSBlZGl0ZWQgdGhlIGZpbGUsIHVzZSB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVmcmVzaDwvZmlsZW5hbWU+IGNvbW1hbmQgdG8gY3JlYXRlIHRoZSBwYXRjaDoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgZWRpdGVkIHRoZSBmaWxlLCB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWZyZXNoPC9maWxlbmFtZT4gY29tbWFuZCB0byBjcmVhdGUgdGhlIHBhdGNoOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgcXVpbHQgcmVmcmVzaAogICAgICBSZWZyZXNoZWQgcGF0Y2ggcGF0Y2hlcy9wYXJhbGxlbG1ha2UucGF0Y2gKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgT25jZSB0aGUgcGF0Y2ggZmlsZSBleGlzdHMsIHlvdSBuZWVkIHRvIGFkZCBpdCBiYWNrIHRvIHRoZQotICAgICAgICAgICAgICAgIG9yaWdpbmF0aW5nIHJlY2lwZSBmb2xkZXIuCi0gICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIGFzc3VtaW5nIGEgdG9wLWxldmVsCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgbmFtZWQgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgcGF0Y2ggZmlsZSBleGlzdHMsIHlvdSBuZWVkIHRvIGFkZCBpdCBiYWNrIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICBvcmlnaW5hdGluZyByZWNpcGUgZm9sZGVyLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgYXNzdW1pbmcgYSB0b3AtbGV2ZWwKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIG5hbWVkIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBjcCBwYXRjaGVzL3BhcmFsbGVsbWFrZS5wYXRjaCBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmVhcmQvbmVhcmQKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgVGhlIGZpbmFsIHRoaW5nIHlvdSBuZWVkIHRvIGRvIHRvIGltcGxlbWVudCB0aGUgZml4IGluIHRoZQotICAgICAgICAgICAgICAgIGJ1aWxkIGlzIHRvIHVwZGF0ZSB0aGUgIm5lYXJkIiByZWNpcGUgKGkuZS4KLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bmVhcmQtMC4xNC5iYjwvZmlsZW5hbWU+KSBzbyB0aGF0IHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgaW5jbHVkZXMgdGhlIHBhdGNoIGZpbGUuCi0gICAgICAgICAgICAgICAgVGhlIHJlY2lwZSBmaWxlIGlzIGluIHRoZSBmb2xkZXIgYWJvdmUgdGhlIHBhdGNoLgotICAgICAgICAgICAgICAgIEhlcmUgaXMgd2hhdCB0aGUgZWRpdGVkIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgd291bGQgbG9vayBsaWtlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgZmluYWwgdGhpbmcgeW91IG5lZWQgdG8gZG8gdG8gaW1wbGVtZW50IHRoZSBmaXggaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGlzIHRvIHVwZGF0ZSB0aGUgIm5lYXJkIiByZWNpcGUgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5lYXJkLTAuMTQuYmI8L2ZpbGVuYW1lPikgc28gdGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgaW5jbHVkZXMgdGhlIHBhdGNoIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGUgZmlsZSBpcyBpbiB0aGUgZm9sZGVyIGFib3ZlIHRoZSBwYXRjaC4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyB3aGF0IHRoZSBlZGl0ZWQgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgd291bGQgbG9vayBsaWtlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIFNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9uZXR3b3JrL25mYy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKICAgICAgICAgICAgICAgICBmaWxlOi8vbmVhcmQuaW4gXAogICAgICAgICAgICAgICAgIGZpbGU6Ly9uZWFyZC5zZXJ2aWNlLmluIFwKICAgICAgICAgICAgICAgICBmaWxlOi8vcGFyYWxsZWxtYWtlLnBhdGNoIFwKICAgICAgICAgICAgICAgICIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFdpdGggdGhlIHBhdGNoIGNvbXBsZXRlIGFuZCBtb3ZlZCB0byB0aGUgY29ycmVjdCBmb2xkZXIgYW5kCi0gICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gc3RhdGVtZW50IHVwZGF0ZWQsIHlvdSBjYW4KLSAgICAgICAgICAgICAgICBleGl0IHRoZSA8ZmlsZW5hbWU+ZGV2c2hlbGw8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFdpdGggdGhlIHBhdGNoIGNvbXBsZXRlIGFuZCBtb3ZlZCB0byB0aGUgY29ycmVjdCBmb2xkZXIgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHN0YXRlbWVudCB1cGRhdGVkLCB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgIGV4aXQgdGhlIDxmaWxlbmFtZT5kZXZzaGVsbDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZXhpdAotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgIDxzZWN0aW9uIGlkPSd0ZXN0aW5nLXRoZS1idWlsZCc+Ci0gICAgICAgICAgICA8dGl0bGU+VGVzdGluZyB0aGUgQnVpbGQ8L3RpdGxlPgorICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3Rlc3RpbmctdGhlLWJ1aWxkJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+VGVzdGluZyB0aGUgQnVpbGQ8L3RpdGxlPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBXaXRoIGV2ZXJ5dGhpbmcgaW4gcGxhY2UsIHlvdSBjYW4gZ2V0IGJhY2sgdG8gdHJ5aW5nIHRoZQotICAgICAgICAgICAgICAgIGJ1aWxkIGFnYWluIGxvY2FsbHk6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaXRoIGV2ZXJ5dGhpbmcgaW4gcGxhY2UsIHlvdSBjYW4gZ2V0IGJhY2sgdG8gdHJ5aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICBidWlsZCBhZ2FpbiBsb2NhbGx5OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgYml0YmFrZSBuZWFyZAotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBUaGlzIGJ1aWxkIHNob3VsZCBzdWNjZWVkLgotICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgYnVpbGQgc2hvdWxkIHN1Y2NlZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBOb3cgeW91IGNhbiBvcGVuIHVwIGEgPGZpbGVuYW1lPmRldnNoZWxsPC9maWxlbmFtZT4gYWdhaW4KLSAgICAgICAgICAgICAgICBhbmQgcmVwZWF0IHRoZSBjbGVhbiBhbmQgbWFrZSBvcGVyYXRpb25zIGFzIGZvbGxvd3M6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBOb3cgeW91IGNhbiBvcGVuIHVwIGEgPGZpbGVuYW1lPmRldnNoZWxsPC9maWxlbmFtZT4gYWdhaW4KKyAgICAgICAgICAgICAgICAgICAgYW5kIHJlcGVhdCB0aGUgY2xlYW4gYW5kIG1ha2Ugb3BlcmF0aW9ucyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgYml0YmFrZSBuZWFyZCAtYyBkZXZzaGVsbAogICAgICAkIG1ha2UgY2xlYW4KICAgICAgJCBtYWtlIHRvb2xzL3NuZXAtc2VuZC5vCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzaG91bGQgd29yayB3aXRob3V0IGlzc3VlLgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzaG91bGQgd29yayB3aXRob3V0IGlzc3VlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBcyB3aXRoIGFsbCBzb2x2ZWQgcHJvYmxlbXMsIGlmIHRoZXkgb3JpZ2luYXRlZCB1cHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgeW91IG5lZWQgdG8gc3VibWl0IHRoZSBmaXggZm9yIHRoZSByZWNpcGUgaW4gT0UtQ29yZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW0gc28gdGhhdCB0aGUgcHJvYmxlbSBpcyB0YWtlbiBjYXJlIG9mIGF0IGl0cworICAgICAgICAgICAgICAgICAgICBzb3VyY2UuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPlN1Ym1pdHRpbmcgYSBDaGFuZ2UgdG8gdGhlIFlvY3RvIFByb2plY3Q8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSJwbGF0ZGV2LWdkYi1yZW1vdGVkZWJ1ZyI+CisgICAgICAgICAgICA8dGl0bGU+RGVidWdnaW5nIFdpdGggdGhlIEdOVSBQcm9qZWN0IERlYnVnZ2VyIChHREIpIFJlbW90ZWx5PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgR0RCIGFsbG93cyB5b3UgdG8gZXhhbWluZSBydW5uaW5nIHByb2dyYW1zLCB3aGljaCBpbiB0dXJuIGhlbHBzCisgICAgICAgICAgICAgICAgeW91IHRvIHVuZGVyc3RhbmQgYW5kIGZpeCBwcm9ibGVtcy4KKyAgICAgICAgICAgICAgICBJdCBhbHNvIGFsbG93cyB5b3UgdG8gcGVyZm9ybSBwb3N0LW1vcnRlbSBzdHlsZSBhbmFseXNpcyBvZgorICAgICAgICAgICAgICAgIHByb2dyYW0gY3Jhc2hlcy4KKyAgICAgICAgICAgICAgICBHREIgaXMgYXZhaWxhYmxlIGFzIGEgcGFja2FnZSB3aXRoaW4gdGhlIFlvY3RvIFByb2plY3QgYW5kIGlzCisgICAgICAgICAgICAgICAgaW5zdGFsbGVkIGluIFNESyBpbWFnZXMgYnkgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1pbWFnZXMnPkltYWdlczwvdWxpbms+IgorICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IgYSBkZXNjcmlwdGlvbiBvZgorICAgICAgICAgICAgICAgIHRoZXNlIGltYWdlcy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgaW5mb3JtYXRpb24gb24gR0RCIGF0CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3NvdXJjZXdhcmUub3JnL2dkYi8iLz4uCisgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgIEZvciBiZXN0IHJlc3VsdHMsIGluc3RhbGwgZGVidWcgKDxmaWxlbmFtZT4tZGJnPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIGZvciB0aGUgYXBwbGljYXRpb25zIHlvdSBhcmUgZ29pbmcgdG8gZGVidWcuCisgICAgICAgICAgICAgICAgICAgIERvaW5nIHNvIG1ha2VzIGV4dHJhIGRlYnVnIHN5bWJvbHMgYXZhaWxhYmxlIHRoYXQgZ2l2ZSB5b3UKKyAgICAgICAgICAgICAgICAgICAgbW9yZSBtZWFuaW5nZnVsIG91dHB1dC4KKyAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEFzIHdpdGggYWxsIHNvbHZlZCBwcm9ibGVtcywgaWYgdGhleSBvcmlnaW5hdGVkIHVwc3RyZWFtLCB5b3UKLSAgICAgICAgICAgICAgICBuZWVkIHRvIHN1Ym1pdCB0aGUgZml4IGZvciB0aGUgcmVjaXBlIGluIE9FLUNvcmUgYW5kIHVwc3RyZWFtCi0gICAgICAgICAgICAgICAgc28gdGhhdCB0aGUgcHJvYmxlbSBpcyB0YWtlbiBjYXJlIG9mIGF0IGl0cyBzb3VyY2UuCi0gICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5TdWJtaXR0aW5nIGEgQ2hhbmdlIHRvIHRoZSBZb2N0byBQcm9qZWN0PC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIFNvbWV0aW1lcywgZHVlIHRvIG1lbW9yeSBvciBkaXNrIHNwYWNlIGNvbnN0cmFpbnRzLCBpdCBpcyBub3QKKyAgICAgICAgICAgICAgICBwb3NzaWJsZSB0byB1c2UgR0RCIGRpcmVjdGx5IG9uIHRoZSByZW1vdGUgdGFyZ2V0IHRvIGRlYnVnCisgICAgICAgICAgICAgICAgYXBwbGljYXRpb25zLgorICAgICAgICAgICAgICAgIFRoZXNlIGNvbnN0cmFpbnRzIGFyaXNlIGJlY2F1c2UgR0RCIG5lZWRzIHRvIGxvYWQgdGhlIGRlYnVnZ2luZworICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIGFuZCB0aGUgYmluYXJpZXMgb2YgdGhlIHByb2Nlc3MgYmVpbmcgZGVidWdnZWQuCisgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCBHREIgbmVlZHMgdG8gcGVyZm9ybSBtYW55IGNvbXB1dGF0aW9ucyB0byBsb2NhdGUKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBzdWNoIGFzIGZ1bmN0aW9uIG5hbWVzLCB2YXJpYWJsZSBuYW1lcyBhbmQgdmFsdWVzLAorICAgICAgICAgICAgICAgIHN0YWNrIHRyYWNlcyBhbmQgc28gZm9ydGggLSBldmVuIGJlZm9yZSBzdGFydGluZyB0aGUgZGVidWdnaW5nCisgICAgICAgICAgICAgICAgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICBUaGVzZSBleHRyYSBjb21wdXRhdGlvbnMgcGxhY2UgbW9yZSBsb2FkIG9uIHRoZSB0YXJnZXQgc3lzdGVtCisgICAgICAgICAgICAgICAgYW5kIGNhbiBhbHRlciB0aGUgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyBoZWxwIGdldCBwYXN0IHRoZSBwcmV2aW91c2x5IG1lbnRpb25lZCBjb25zdHJhaW50cywgeW91IGNhbgorICAgICAgICAgICAgICAgIHVzZSBnZGJzZXJ2ZXIsIHdoaWNoIHJ1bnMgb24gdGhlIHJlbW90ZSB0YXJnZXQgYW5kIGRvZXMgbm90CisgICAgICAgICAgICAgICAgbG9hZCBhbnkgZGVidWdnaW5nIGluZm9ybWF0aW9uIGZyb20gdGhlIGRlYnVnZ2VkIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgSW5zdGVhZCwgYSBHREIgaW5zdGFuY2UgcHJvY2Vzc2VzIHRoZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gdGhhdAorICAgICAgICAgICAgICAgIGlzIHJ1biBvbiBhIHJlbW90ZSBjb21wdXRlciAtIHRoZSBob3N0IEdEQi4KKyAgICAgICAgICAgICAgICBUaGUgaG9zdCBHREIgdGhlbiBzZW5kcyBjb250cm9sIGNvbW1hbmRzIHRvIGdkYnNlcnZlciB0byBtYWtlCisgICAgICAgICAgICAgICAgaXQgc3RvcCBvciBzdGFydCB0aGUgZGVidWdnZWQgcHJvZ3JhbSwgYXMgd2VsbCBhcyByZWFkIG9yIHdyaXRlCisgICAgICAgICAgICAgICAgbWVtb3J5IHJlZ2lvbnMgb2YgdGhhdCBkZWJ1Z2dlZCBwcm9ncmFtLgorICAgICAgICAgICAgICAgIEFsbCB0aGUgZGVidWdnaW5nIGluZm9ybWF0aW9uIGxvYWRlZCBhbmQgcHJvY2Vzc2VkIGFzIHdlbGwKKyAgICAgICAgICAgICAgIGFzIGFsbCB0aGUgaGVhdnkgZGVidWdnaW5nIGlzIGRvbmUgYnkgdGhlIGhvc3QgR0RCLgorICAgICAgICAgICAgICAgIE9mZmxvYWRpbmcgdGhlc2UgcHJvY2Vzc2VzIGdpdmVzIHRoZSBnZGJzZXJ2ZXIgcnVubmluZyBvbiB0aGUKKyAgICAgICAgICAgICAgICB0YXJnZXQgYSBjaGFuY2UgdG8gcmVtYWluIHNtYWxsIGFuZCBmYXN0LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCZWNhdXNlIHRoZSBob3N0IEdEQiBpcyByZXNwb25zaWJsZSBmb3IgbG9hZGluZyB0aGUgZGVidWdnaW5nCisgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gYW5kIGZvciBkb2luZyB0aGUgbmVjZXNzYXJ5IHByb2Nlc3NpbmcgdG8gbWFrZQorICAgICAgICAgICAgICAgIGFjdHVhbCBkZWJ1Z2dpbmcgaGFwcGVuLCB5b3UgaGF2ZSB0byBtYWtlIHN1cmUgdGhlIGhvc3QgY2FuCisgICAgICAgICAgICAgICAgYWNjZXNzIHRoZSB1bnN0cmlwcGVkIGJpbmFyaWVzIGNvbXBsZXRlIHdpdGggdGhlaXIgZGVidWdnaW5nCisgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gYW5kIGFsc28gYmUgc3VyZSB0aGUgdGFyZ2V0IGlzIGNvbXBpbGVkIHdpdGggbm8KKyAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb25zLgorICAgICAgICAgICAgICAgIFRoZSBob3N0IEdEQiBtdXN0IGFsc28gaGF2ZSBsb2NhbCBhY2Nlc3MgdG8gYWxsIHRoZSBsaWJyYXJpZXMKKyAgICAgICAgICAgICAgICB1c2VkIGJ5IHRoZSBkZWJ1Z2dlZCBwcm9ncmFtLgorICAgICAgICAgICAgICAgIEJlY2F1c2UgZ2Ric2VydmVyIGRvZXMgbm90IG5lZWQgYW55IGxvY2FsIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiwKKyAgICAgICAgICAgICAgICB0aGUgYmluYXJpZXMgb24gdGhlIHJlbW90ZSB0YXJnZXQgY2FuIHJlbWFpbiBzdHJpcHBlZC4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgYmluYXJpZXMgbXVzdCBhbHNvIGJlIGNvbXBpbGVkIHdpdGhvdXQgb3B0aW1pemF0aW9uCisgICAgICAgICAgICAgICAgc28gdGhleSBtYXRjaCB0aGUgaG9zdCdzIGJpbmFyaWVzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyByZW1haW4gY29uc2lzdGVudCB3aXRoIEdEQiBkb2N1bWVudGF0aW9uIGFuZCB0ZXJtaW5vbG9neSwKKyAgICAgICAgICAgICAgICB0aGUgYmluYXJ5IGJlaW5nIGRlYnVnZ2VkIG9uIHRoZSByZW1vdGUgdGFyZ2V0IG1hY2hpbmUgaXMKKyAgICAgICAgICAgICAgICByZWZlcnJlZCB0byBhcyB0aGUgImluZmVyaW9yIiBiaW5hcnkuCisgICAgICAgICAgICAgICAgRm9yIGRvY3VtZW50YXRpb24gb24gR0RCIHNlZSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL2RvY3VtZW50YXRpb24vIj5HREIgc2l0ZTwvdWxpbms+LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHN0ZXBzIHNob3cgeW91IGhvdyB0byBkZWJ1ZyB1c2luZyB0aGUgR05VIHByb2plY3QKKyAgICAgICAgICAgICAgICBkZWJ1Z2dlci4KKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db25maWd1cmUgeW91ciBidWlsZCBzeXN0ZW0gdG8gY29uc3RydWN0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFuaW9uIGRlYnVnIGZpbGVzeXN0ZW06PC9lbXBoYXNpcz48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLCBzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElNQUdFX0dFTl9ERUJVR0ZTID0gIjEiCisgICAgIElNQUdFX0ZTVFlQRVNfREVCVUdGUyA9ICJ0YXIuYnoyIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2Ugb3B0aW9ucyBjYXVzZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgdG8gZ2VuZXJhdGUgYSBzcGVjaWFsIGNvbXBhbmlvbiBmaWxlc3lzdGVtIGZyYWdtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggY29udGFpbnMgdGhlIG1hdGNoaW5nIHNvdXJjZSBhbmQgZGVidWcgc3ltYm9scyB0bworICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBkZXBsb3lhYmxlIGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIGRvZXMgdGhpcyBieSBsb29raW5nIGF0IHdoYXQgaXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBkZXBsb3llZCBmaWxlc3lzdGVtLCBhbmQgcHVsbGluZyB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1kYmc8L2ZpbGVuYW1lPiBwYWNrYWdlcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBjb21wYW5pb24gZGVidWcgZmlsZXN5c3RlbSBpcyBub3QgYSBjb21wbGV0ZQorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbSwgYnV0IG9ubHkgY29udGFpbnMgdGhlIGRlYnVnIGZyYWdtZW50cy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmlsZXN5c3RlbSBtdXN0IGJlIGNvbWJpbmVkIHdpdGggdGhlIGZ1bGwgZmlsZXN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGRlYnVnZ2luZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFN1YnNlcXVlbnQgc3RlcHMgaW4gdGhpcyBwcm9jZWR1cmUgc2hvdyBob3cgdG8gY29tYmluZQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHBhcnRpYWwgZmlsZXN5c3RlbSB3aXRoIHRoZSBmdWxsIGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbmZpZ3VyZSB0aGUgc3lzdGVtIHRvIGluY2x1ZGUgZ2Ric2VydmVyIGluCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0IGZpbGVzeXN0ZW06PC9lbXBoYXNpcz48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPk1ha2UgdGhlIGZvbGxvd2luZyBhZGRpdGlvbiBpbiBlaXRoZXIgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIG9yIGluIGFuIGltYWdlCisgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElNQUdFX0lOU1RBTExfYXBwZW5kID0g4oCcIGdkYnNlcnZlciIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjaGFuZ2UgbWFrZXMgc3VyZSB0aGUgPGZpbGVuYW1lPmdkYnNlcnZlcjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIGlzIGluY2x1ZGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCB0aGUgZW52aXJvbm1lbnQ6PC9lbXBoYXNpcz48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gY29uc3RydWN0IHRoZSBpbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRoZSBjb21wYW5pb24gRGVidWcgRmlsZXN5c3RlbToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIDxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCB0aGUgY3Jvc3MgR0RCIGNvbXBvbmVudCBhbmQgbWFrZSBpdCBhdmFpbGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkZWJ1Z2dpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCB0aGUgU0RLIHRoYXQgbWF0Y2hlcyB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZGluZyB0aGUgU0RLIGlzIGJlc3QgZm9yIGEgcHJvZHVjdGlvbiBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBjYW4gYmUgdXNlZCBsYXRlciBmb3IgZGVidWdnaW5nLCBlc3BlY2lhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICBkdXJpbmcgbG9uZyB0ZXJtIG1haW50ZW5hbmNlOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgLWMgcG9wdWxhdGVfc2RrIDxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5BbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGJ1aWxkIHRoZSBtaW5pbWFsCisgICAgICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4gY29tcG9uZW50cyB0aGF0IG1hdGNoIHRoZSB0YXJnZXQuCisgICAgICAgICAgICAgICAgICAgICAgICBEb2luZyBzbyBjcmVhdGVzIGEgc21hbGxlciB0aGFuIHR5cGljYWwgU0RLIGFuZCBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICBjb250YWlucyBhIG1pbmltYWwgc2V0IG9mIGNvbXBvbmVudHMgd2l0aCB3aGljaCB0bworICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgc2ltcGxlIHRlc3QgYXBwbGljYXRpb25zLCBhcyB3ZWxsIGFzIHJ1biB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnZ2VyOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgbWV0YS10b29sY2hhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkEgZmluYWwgbWV0aG9kIGlzIHRvIGJ1aWxkIEdkYiBpdHNlbGYgd2l0aGluCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVpbGQgc3lzdGVtOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgZ2RiLWNyb3NzLTxyZXBsYWNlYWJsZT5hcmNoaXRlY3R1cmU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgRG9pbmcgc28gcHJvZHVjZXMgYSB0ZW1wb3JhcnkgY29weSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNyb3NzLWdkYjwvZmlsZW5hbWU+IHlvdSBjYW4gdXNlIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdnaW5nIGR1cmluZyBkZXZlbG9wbWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdoaWxlIHRoaXMgaXMgdGhlIHF1aWNrZXN0IGFwcHJvYWNoLCB0aGUgdHdvIHByZXZpb3VzCisgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RzIGluIHRoaXMgc3RlcCBhcmUgYmV0dGVyIHdoZW4gY29uc2lkZXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvbmctdGVybSBtYWludGVuYW5jZSBzdHJhdGVnaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIGdkYi1jcm9zczwvZmlsZW5hbWU+LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHN1Z2dlc3RzIHRoZSBhY3R1YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSAoZS5nLiA8ZmlsZW5hbWU+Z2RiLWNyb3NzLWk1ODY8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHN1Z2dlc3Rpb24gaXMgdXN1YWxseSB0aGUgYWN0dWFsIG5hbWUgeW91IHdhbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB1c2UuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCB1cCB0aGU8L2VtcGhhc2lzPiZuYnNwOzxmaWxlbmFtZT5kZWJ1Z2ZzPC9maWxlbmFtZT48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIHRvIHNldCB1cCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZWJ1Z2ZzPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgbWtkaXIgZGVidWdmcworICAgICAkIGNkIGRlYnVnZnMKKyAgICAgJCB0YXIgeHZmaiA8cmVwbGFjZWFibGU+YnVpbGQtZGlyPC9yZXBsYWNlYWJsZT4vdG1wLWdsaWJjL2RlcGxveS9pbWFnZXMvPHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPi88cmVwbGFjZWFibGU+aW1hZ2U8L3JlcGxhY2VhYmxlPi5yb290ZnMudGFyLmJ6MgorICAgICAkIHRhciB4dmZqIDxyZXBsYWNlYWJsZT5idWlsZC1kaXI8L3JlcGxhY2VhYmxlPi90bXAtZ2xpYmMvZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+LzxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+LWRiZy5yb290ZnMudGFyLmJ6MgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgdXAgR0RCPC9lbXBoYXNpcz48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkluc3RhbGwgdGhlIFNESyAoaWYgeW91IGJ1aWx0IG9uZSkgYW5kIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSB0aGUgY29ycmVjdCBlbnZpcm9ubWVudCBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNpbmcgdGhlIGVudmlyb25tZW50IGZpbGUgcHV0cyB0aGUgU0RLIGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4gZW52aXJvbm1lbnQgdmFyaWFibGUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgYXJlIHVzaW5nIHRoZSBidWlsZCBzeXN0ZW0sIEdkYiBpcworICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmJ1aWxkLWRpcjwvcmVwbGFjZWFibGU+L3RtcC9zeXNyb290cy88cmVwbGFjZWFibGU+aG9zdDwvcmVwbGFjZWFibGU+L3Vzci9iaW4vPHJlcGxhY2VhYmxlPmFyY2hpdGVjdHVyZTwvcmVwbGFjZWFibGU+LzxyZXBsYWNlYWJsZT5hcmNoaXRlY3R1cmU8L3JlcGxhY2VhYmxlPi1nZGIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Qm9vdCB0aGUgdGFyZ2V0OjwvZW1waGFzaXM+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHJ1biBRRU1VLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd2lraS5xZW11Lm9yZy9Eb2N1bWVudGF0aW9uL0dldHRpbmdTdGFydGVkRGV2ZWxvcGVycyc+UUVNVSBEb2N1bWVudGF0aW9uPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHZlcmlmeSB0aGF0IHlvdXIgaG9zdCBjYW4gYWNjZXNzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCB2aWEgVENQLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZWJ1ZyBhIHByb2dyYW06PC9lbXBoYXNpcz48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkRlYnVnZ2luZyBhIHByb2dyYW0gaW52b2x2ZXMgcnVubmluZyBnZGJzZXJ2ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRoZSB0YXJnZXQgYW5kIHRoZW4gcnVubmluZyBHZGIgb24gdGhlIGhvc3QuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZXhhbXBsZSBpbiB0aGlzIHN0ZXAgZGVidWdzCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3ppcDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICByb290QHFlbXV4ODY6fiMgZ2Ric2VydmVyIGxvY2FsaG9zdDoxMjM0IC9iaW4vZ3ppcCDigJRoZWxwCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYWRkaXRpb25hbCBnZGJzZXJ2ZXIgb3B0aW9ucywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nZGIvZG9jdW1lbnRhdGlvbi8nPkdEQiBTZXJ2ZXIgRG9jdW1lbnRhdGlvbjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5BZnRlciBydW5uaW5nIGdkYnNlcnZlciBvbiB0aGUgdGFyZ2V0LCB5b3UgbmVlZAorICAgICAgICAgICAgICAgICAgICAgICAgdG8gcnVuIEdkYiBvbiB0aGUgaG9zdCBhbmQgY29uZmlndXJlIGl0IGFuZCBjb25uZWN0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0LgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZXNlIGNvbW1hbmRzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIDxyZXBsYWNlYWJsZT5kaXJlY3RvcnktaG9sZGluZy10aGUtZGVidWdmcy1kaXJlY3Rvcnk8L3JlcGxhY2VhYmxlPgorICAgICAkIDxyZXBsYWNlYWJsZT5hcmNoPC9yZXBsYWNlYWJsZT4tZ2RiCisKKyAgICAgKGdkYikgc2V0IHN5c3Jvb3QgZGVidWdmcworICAgICAoZ2RiKSBzZXQgc3Vic3RpdHV0ZS1wYXRoIC91c3Ivc3JjL2RlYnVnIGRlYnVnZnMvdXNyL3NyYy9kZWJ1ZworICAgICAoZ2RiKSB0YXJnZXQgcmVtb3RlIDxyZXBsYWNlYWJsZT5JUC1vZi10YXJnZXQ8L3JlcGxhY2VhYmxlPjoxMjM0CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCBldmVyeXRoaW5nIHNob3VsZCBhdXRvbWF0aWNhbGx5IGxvYWQKKyAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIG1hdGNoaW5nIGJpbmFyaWVzLCBzeW1ib2xzIGFuZCBoZWFkZXJzKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBHZGIgPGZpbGVuYW1lPnNldDwvZmlsZW5hbWU+IGNvbW1hbmRzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzIGV4YW1wbGUgY2FuIGJlIHBsYWNlZCBpbnRvIHRoZSB1c2VycworICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPn4vLmdkYmluaXQ8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVwb24gc3RhcnRpbmcsIEdkYiBhdXRvbWF0aWNhbGx5IHJ1bnMgd2hhdGV2ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kcyBhcmUgaW4gdGhhdCBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXBsb3lpbmcgd2l0aG91dCBhIGZ1bGwgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlYnVpbGQ6PC9lbXBoYXNpcz48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkluIG1hbnkgY2FzZXMsIGR1cmluZyBkZXZlbG9wbWVudCB5b3Ugd2FudCBhCisgICAgICAgICAgICAgICAgICAgICAgICBxdWljayBtZXRob2QgdG8gZGVwbG95IGEgbmV3IGJpbmFyeSB0byB0aGUgdGFyZ2V0IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcgaXQsIHdpdGhvdXQgd2FpdGluZyBmb3IgYSBmdWxsIGltYWdlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5PbmUgYXBwcm9hY2ggdG8gc29sdmluZyB0aGlzIHNpdHVhdGlvbiBpcyB0bworICAgICAgICAgICAgICAgICAgICAgICAganVzdCBidWlsZCB0aGUgY29tcG9uZW50IHlvdSB3YW50IHRvIGRlYnVnLgorICAgICAgICAgICAgICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSBidWlsdCB0aGUgY29tcG9uZW50LCBjb3B5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSBkaXJlY3RseSB0byBib3RoIHRoZSB0YXJnZXQgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCA8ZmlsZW5hbWU+ZGVidWdmczwvZmlsZW5hbWU+LjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgdGhlIGJpbmFyeSBpcyBwcm9jZXNzZWQgdGhyb3VnaCB0aGUgZGVidWcKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwbGl0dGluZyBpbiBPcGVuRW1iZWRkZWQsIHlvdSBzaG91bGQgYWxzbworICAgICAgICAgICAgICAgICAgICAgICAgY29weSB0aGUgZGVidWcgaXRlbXMgKGkuZS4gPGZpbGVuYW1lPi5kZWJ1ZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50cyBhbmQgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3Ivc3JjL2RlYnVnPC9maWxlbmFtZT4gZmlsZXMpCisgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSB3b3JrIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIGJhc2gKKyAgICAgJCBiaXRiYWtlIC1jIGRldnNoZWxsIGJhc2gKKyAgICAgJCBjZCAuLgorICAgICAkIHNjcCBwYWNrYWdlcy1zcGxpdC9iYXNoL2Jpbi9iYXNoIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPjovYmluL2Jhc2gKKyAgICAgJCBjcCAtYSBwYWNrYWdlcy1zcGxpdC9iYXNoLWRiZy8qIDxyZXBsYWNlYWJsZT5wYXRoPC9yZXBsYWNlYWJsZT4vZGVidWdmcworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkZWJ1Z2dpbmctd2l0aC10aGUtZ251LXByb2plY3QtZGVidWdnZXItZ2RiLW9uLXRoZS10YXJnZXQnPgorICAgICAgICAgICAgPHRpdGxlPkRlYnVnZ2luZyB3aXRoIHRoZSBHTlUgUHJvamVjdCBEZWJ1Z2dlciAoR0RCKSBvbiB0aGUgVGFyZ2V0PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIHNlY3Rpb24gYWRkcmVzc2VkIHVzaW5nIEdEQiByZW1vdGVseSBmb3IgZGVidWdnaW5nCisgICAgICAgICAgICAgICAgcHVycG9zZXMsIHdoaWNoIGlzIHRoZSBtb3N0IHVzdWFsIGNhc2UgZHVlIHRvIHRoZSBpbmhlcmVudAorICAgICAgICAgICAgICAgIGhhcmR3YXJlIGxpbWl0YXRpb25zIG9uIG1hbnkgZW1iZWRkZWQgZGV2aWNlcy4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCBkZWJ1Z2dpbmcgaW4gdGhlIHRhcmdldCBoYXJkd2FyZSBpdHNlbGYgaXMgYWxzbworICAgICAgICAgICAgICAgIHBvc3NpYmxlIHdpdGggbW9yZSBwb3dlcmZ1bCBkZXZpY2VzLgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgd2hhdCB5b3UgbmVlZCB0byBkbyBpbiBvcmRlciB0byBzdXBwb3J0CisgICAgICAgICAgICAgICAgdXNpbmcgR0RCIHRvIGRlYnVnIG9uIHRoZSB0YXJnZXQgaGFyZHdhcmUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIHN1cHBvcnQgdGhpcyBraW5kIG9mIGRlYnVnZ2luZywgeW91IG5lZWQgZG8gdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBFbnN1cmUgdGhhdCBHREIgaXMgb24gdGhlIHRhcmdldC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZG8gdGhpcyBieSBhZGRpbmcgImdkYiIgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9JTlNUQUxMJz48ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElNQUdFX0lOU1RBTExfYXBwZW5kID0gIiBnZGIiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGFkZCAidG9vbHMtZGVidWciIHRvCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfRkVBVFVSRVMnPjxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElNQUdFX0ZFQVRVUkVTX2FwcGVuZCA9ICIgdG9vbHMtZGVidWciCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgRW5zdXJlIHRoYXQgZGVidWcgc3ltYm9scyBhcmUgcHJlc2VudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gbWFrZSBzdXJlIHRoZXNlIHN5bWJvbHMgYXJlIHByZXNlbnQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxpbmcgPGZpbGVuYW1lPi1kYmc8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU1BR0VfSU5TVEFMTF9hcHBlbmQgPSAiIDxyZXBsYWNlYWJsZT5wYWNrYWdlbmFtZTwvcmVwbGFjZWFibGU+LWRiZyIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gZG8gdGhlIGZvbGxvd2luZyB0byBpbmNsdWRlIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRlYnVnIHN5bWJvbHM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElNQUdFX0ZFQVRVUkVTX2FwcGVuZCA9ICIgZGJnLXBrZ3MiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVG8gaW1wcm92ZSB0aGUgZGVidWcgaW5mb3JtYXRpb24gYWNjdXJhY3ksIHlvdSBjYW4gcmVkdWNlCisgICAgICAgICAgICAgICAgICAgIHRoZSBsZXZlbCBvZiBvcHRpbWl6YXRpb24gdXNlZCBieSB0aGUgY29tcGlsZXIuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB3aGVuIGFkZGluZyB0aGUgZm9sbG93aW5nIGxpbmUgdG8geW91cgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUsIHlvdSB3aWxsIHJlZHVjZQorICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb24gZnJvbQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRlVMTF9PUFRJTUlaQVRJT04nPjxmaWxlbmFtZT5GVUxMX09QVElNSVpBVElPTjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgb2YgIi1PMiIgdG8KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFQlVHX09QVElNSVpBVElPTic+PGZpbGVuYW1lPkRFQlVHX09QVElNSVpBVElPTjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgb2YgIi1PIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBERUJVR19CVUlMRCA9ICIxIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIENvbnNpZGVyIHRoYXQgdGhpcyB3aWxsIHJlZHVjZSB0aGUgYXBwbGljYXRpb24ncyBwZXJmb3JtYW5jZQorICAgICAgICAgICAgICAgICAgICBhbmQgaXMgcmVjb21tZW5kZWQgb25seSBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdkZXYtb3RoZXItZGVidWdnaW5nLW90aGVycyc+CisgICAgICAgICAgICA8dGl0bGU+T3RoZXIgRGVidWdnaW5nIFRpcHM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBIZXJlIGFyZSBzb21lIG90aGVyIHRpcHMgdGhhdCB5b3UgbWlnaHQgZmluZCB1c2VmdWw6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiBhZGRpbmcgbmV3IHBhY2thZ2VzLCBpdCBpcyB3b3J0aCB3YXRjaGluZyBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVzaXJhYmxlIGl0ZW1zIG1ha2luZyB0aGVpciB3YXkgaW50byBjb21waWxlciBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgZG8gbm90IHdhbnQgcmVmZXJlbmNlcyB0byBsb2NhbCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzIGxpa2UKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL2xpYi88L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3IvaW5jbHVkZS88L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byByZW1vdmUgdGhlIDxmaWxlbmFtZT5wc3BsYXNoPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb3Qgc3BsYXNoc2NyZWVuLAorICAgICAgICAgICAgICAgICAgICAgICAgYWRkIDxmaWxlbmFtZT5wc3BsYXNoPWZhbHNlPC9maWxlbmFtZT4gdG8gIHRoZSBrZXJuZWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgbGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIERvaW5nIHNvIHByZXZlbnRzIDxmaWxlbmFtZT5wc3BsYXNoPC9maWxlbmFtZT4gZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZyBhbmQgdGh1cyBhbGxvd3MgeW91IHRvIHNlZSB0aGUgY29uc29sZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIGFsc28gcG9zc2libGUgdG8gc3dpdGNoIG91dCBvZiB0aGUgc3BsYXNoc2NyZWVuIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hpbmcgdGhlIHZpcnR1YWwgY29uc29sZSAoZS5nLiBGbitMZWZ0IG9yIEZuK1JpZ2h0CisgICAgICAgICAgICAgICAgICAgICAgICBvbiBhIFphdXJ1cykuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3ZpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAodXN1YWxseSA8ZmlsZW5hbWU+dG1wLzwvZmlsZW5hbWU+LCB3aXRoaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+KQorICAgICAgICAgICAgICAgICAgICAgICAgY2FuIG9mdGVuIGZpeCB0ZW1wb3JhcnkgYnVpbGQgaXNzdWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3ZpbmcgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IGlzIHVzdWFsbHkgYQorICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVseSBjaGVhcCBvcGVyYXRpb24sIGJlY2F1c2UgdGFzayBvdXRwdXQgd2lsbCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkIGluCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAodXN1YWxseSA8ZmlsZW5hbWU+c3N0YXRlLWNhY2hlLzwvZmlsZW5hbWU+LCB3aGljaCBpcworICAgICAgICAgICAgICAgICAgICAgICAgYWxzbyBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbW92aW5nIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiBtaWdodCBiZSBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2Fyb3VuZCByYXRoZXIgdGhhbiBhIGZpeC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHRyeWluZyB0byBkZXRlcm1pbmUgdGhlIHVuZGVybHlpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXVzZSBvZiBhbiBpc3N1ZSBiZWZvcmUgcmVtb3ZpbmcgdGhlIGRpcmVjdG9yeSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgZ29vZCBpZGVhLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVuZGVyc3RhbmRpbmcgaG93IGEgZmVhdHVyZSBpcyB1c2VkIGluIHByYWN0aWNlIHdpdGhpbgorICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgcmVjaXBlcyBjYW4gYmUgdmVyeSBoZWxwZnVsLgorICAgICAgICAgICAgICAgICAgICAgICAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgY29uZmlndXJlIHNvbWUgbWV0aG9kIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93cyB5b3UgdG8gcXVpY2tseSBzZWFyY2ggdGhyb3VnaCBmaWxlcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlVzaW5nIEdOVSBHcmVwLCB5b3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIHNoZWxsCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0byByZWN1cnNpdmVseSBzZWFyY2ggdGhyb3VnaCBjb21tb24KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZS1yZWxhdGVkIGZpbGVzLCBza2lwcGluZyBiaW5hcnkgZmlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmdpdDwvZmlsZW5hbWU+IGRpcmVjdG9yaWVzLCBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCBEaXJlY3RvcnkgKGFzc3VtaW5nIGl0cyBuYW1lIHN0YXJ0cyB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAiYnVpbGQiKToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZygpIHsKKyAgICAgICAgIGdyZXAgLUlyIFwKKyAgICAgICAgICAgICAgLS1leGNsdWRlLWRpcj0uZ2l0IFwKKyAgICAgICAgICAgICAgLS1leGNsdWRlLWRpcj0nYnVpbGQqJyBcCisgICAgICAgICAgICAgIC0taW5jbHVkZT0nKi5iYionIFwKKyAgICAgICAgICAgICAgLS1pbmNsdWRlPScqLmluYyonIFwKKyAgICAgICAgICAgICAgLS1pbmNsdWRlPScqLmNvbmYqJyBcCisgICAgICAgICAgICAgIC0taW5jbHVkZT0nKi5weSonIFwKKyAgICAgICAgICAgICAgIiRAIgorICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBGb2xsb3dpbmcgYXJlIHNvbWUgdXNhZ2UgZXhhbXBsZXM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZyBGT08gICAgIyBTZWFyY2ggcmVjdXJzaXZlbHkgZm9yICJGT08iCisgICAgICQgZyAtaSBmb28gIyBTZWFyY2ggcmVjdXJzaXZlbHkgZm9yICJmb28iLCBpZ25vcmluZyBjYXNlCisgICAgICQgZyAtdyBGT08gIyBTZWFyY2ggcmVjdXJzaXZlbHkgZm9yICJGT08iIGFzIGEgd29yZCwgaWdub3JpbmcgZS5nLiAiRk9PQkFSIgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgZmlndXJpbmcgb3V0IGhvdyBzb21lIGZlYXR1cmUgd29ya3MgcmVxdWlyZXMgYSBsb3Qgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaGluZywgaXQgbWlnaHQgaW5kaWNhdGUgdGhhdCB0aGUgZG9jdW1lbnRhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIGV4dGVuZGVkIG9yIGltcHJvdmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gc3VjaCBjYXNlcywgY29uc2lkZXIgZmlsaW5nIGEgZG9jdW1lbnRhdGlvbiBidWcgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGltcGxlbWVudGF0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvJz5CdWd6aWxsYTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzdWJtaXQgYSBidWcgYWdhaW5zdAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QsIHNlZSB0aGUgWW9jdG8gUHJvamVjdCBCdWd6aWxsYQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL0J1Z3ppbGxhX0NvbmZpZ3VyYXRpb25fYW5kX0J1Z19UcmFja2luZyc+d2lraSBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzdWJtaXR0aW5nLWEtZGVmZWN0LWFnYWluc3QtdGhlLXlvY3RvLXByb2plY3QnPlN1Ym1pdHRpbmcgYSBEZWZlY3QgQWdhaW5zdCB0aGUgWW9jdG8gUHJvamVjdDwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1hbnVhbHMgbWlnaHQgbm90IGJlIHRoZSByaWdodCBwbGFjZSB0byBkb2N1bWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyB0aGF0IGFyZSBwdXJlbHkgaW50ZXJuYWwgYW5kIGhhdmUgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0ZWQgc2NvcGUgKGUuZy4gaW50ZXJuYWwgdmFyaWFibGVzIHVzZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnQgYSBzaW5nbGUgPGZpbGVuYW1lPi5iYmNsYXNzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3Rpb24+CiAgICAgPC9zZWN0aW9uPgogCi0gICAgPHNlY3Rpb24gaWQ9J21haW50YWluaW5nLW9wZW4tc291cmNlLWxpY2Vuc2UtY29tcGxpYW5jZS1kdXJpbmcteW91ci1wcm9kdWN0cy1saWZlY3ljbGUnPgotICAgICAgICA8dGl0bGU+TWFpbnRhaW5pbmcgT3BlbiBTb3VyY2UgTGljZW5zZSBDb21wbGlhbmNlIER1cmluZyBZb3VyIFByb2R1Y3QncyBMaWZlY3ljbGU8L3RpdGxlPgorICAgIDxzZWN0aW9uIGlkPSdtYWtpbmctY2hhbmdlcy10by10aGUteW9jdG8tcHJvamVjdCc+CisgICAgICAgIDx0aXRsZT5NYWtpbmcgQ2hhbmdlcyB0byB0aGUgWW9jdG8gUHJvamVjdDwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBPbmUgb2YgdGhlIGNvbmNlcm5zIGZvciBhIGRldmVsb3BtZW50IG9yZ2FuaXphdGlvbiB1c2luZyBvcGVuIHNvdXJjZQotICAgICAgICAgICAgc29mdHdhcmUgaXMgaG93IHRvIG1haW50YWluIGNvbXBsaWFuY2Ugd2l0aCB2YXJpb3VzIG9wZW4gc291cmNlCi0gICAgICAgICAgICBsaWNlbnNpbmcgZHVyaW5nIHRoZSBsaWZlY3ljbGUgb2YgdGhlIHByb2R1Y3QuCi0gICAgICAgICAgICBXaGlsZSB0aGlzIHNlY3Rpb24gZG9lcyBub3QgcHJvdmlkZSBsZWdhbCBhZHZpY2Ugb3IKLSAgICAgICAgICAgIGNvbXByZWhlbnNpdmVseSBjb3ZlciBhbGwgc2NlbmFyaW9zLCBpdCBkb2VzCi0gICAgICAgICAgICBwcmVzZW50IG1ldGhvZHMgdGhhdCB5b3UgY2FuIHVzZSB0bwotICAgICAgICAgICAgYXNzaXN0IHlvdSBpbiBtZWV0aW5nIHRoZSBjb21wbGlhbmNlIHJlcXVpcmVtZW50cyBkdXJpbmcgYSBzb2Z0d2FyZQotICAgICAgICAgICAgcmVsZWFzZS4KKyAgICAgICAgICAgIEJlY2F1c2UgdGhlIFlvY3RvIFByb2plY3QgaXMgYW4gb3Blbi1zb3VyY2UsIGNvbW11bml0eS1iYXNlZAorICAgICAgICAgICAgcHJvamVjdCwgeW91IGNhbiBlZmZlY3QgY2hhbmdlcyB0byB0aGUgcHJvamVjdC4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcmVzZW50cyBwcm9jZWR1cmVzIHRoYXQgc2hvdyB5b3UgaG93IHRvIHN1Ym1pdAorICAgICAgICAgICAgYSBkZWZlY3QgYWdhaW5zdCB0aGUgcHJvamVjdCBhbmQgaG93IHRvIHN1Ym1pdCBhIGNoYW5nZS4KICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgV2l0aCBodW5kcmVkcyBvZiBkaWZmZXJlbnQgb3BlbiBzb3VyY2UgbGljZW5zZXMgdGhhdCB0aGUgWW9jdG8KLSAgICAgICAgICAgIFByb2plY3QgdHJhY2tzLCBpdCBpcyBkaWZmaWN1bHQgdG8ga25vdyB0aGUgcmVxdWlyZW1lbnRzIG9mIGVhY2gKLSAgICAgICAgICAgIGFuZCBldmVyeSBsaWNlbnNlLgotICAgICAgICAgICAgSG93ZXZlciwgdGhlIHJlcXVpcmVtZW50cyBvZiB0aGUgbWFqb3IgRkxPU1MgbGljZW5zZXMgY2FuIGJlZ2luCi0gICAgICAgICAgICB0byBiZSBjb3ZlcmVkIGJ5Ci0gICAgICAgICAgICBhc3N1bWluZyB0aGF0IHRocmVlIG1haW4gYXJlYXMgb2YgY29uY2VybiBleGlzdDoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNvdXJjZSBjb2RlIG11c3QgYmUgcHJvdmlkZWQuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkxpY2Vuc2UgdGV4dCBmb3IgdGhlIHNvZnR3YXJlIG11c3QgYmUKLSAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNvbXBpbGF0aW9uIHNjcmlwdHMgYW5kIG1vZGlmaWNhdGlvbnMgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSBjb2RlIG11c3QgYmUgcHJvdmlkZWQuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICBUaGVyZSBhcmUgb3RoZXIgcmVxdWlyZW1lbnRzIGJleW9uZCB0aGUgc2NvcGUgb2YgdGhlc2UKLSAgICAgICAgICAgIHRocmVlIGFuZCB0aGUgbWV0aG9kcyBkZXNjcmliZWQgaW4gdGhpcyBzZWN0aW9uCi0gICAgICAgICAgICAoZS5nLiB0aGUgbWVjaGFuaXNtIHRocm91Z2ggd2hpY2ggc291cmNlIGNvZGUgaXMgZGlzdHJpYnV0ZWQpLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBBcyBkaWZmZXJlbnQgb3JnYW5pemF0aW9ucyBoYXZlIGRpZmZlcmVudCBtZXRob2RzIG9mIGNvbXBseWluZyB3aXRoCi0gICAgICAgICAgICBvcGVuIHNvdXJjZSBsaWNlbnNpbmcsIHRoaXMgc2VjdGlvbiBpcyBub3QgbWVhbnQgdG8gaW1wbHkgdGhhdAotICAgICAgICAgICAgdGhlcmUgaXMgb25seSBvbmUgc2luZ2xlIHdheSB0byBtZWV0IHlvdXIgY29tcGxpYW5jZSBvYmxpZ2F0aW9ucywKLSAgICAgICAgICAgIGJ1dCByYXRoZXIgdG8gZGVzY3JpYmUgb25lIG1ldGhvZCBvZiBhY2hpZXZpbmcgY29tcGxpYW5jZS4KLSAgICAgICAgICAgIFRoZSByZW1haW5kZXIgb2YgdGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBtZXRob2RzIHN1cHBvcnRlZCB0byBtZWV0IHRoZQotICAgICAgICAgICAgcHJldmlvdXNseSBtZW50aW9uZWQgdGhyZWUgcmVxdWlyZW1lbnRzLgotICAgICAgICAgICAgT25jZSB5b3UgdGFrZSBzdGVwcyB0byBtZWV0IHRoZXNlIHJlcXVpcmVtZW50cywKLSAgICAgICAgICAgIGFuZCBwcmlvciB0byByZWxlYXNpbmcgaW1hZ2VzLCBzb3VyY2VzLCBhbmQgdGhlIGJ1aWxkIHN5c3RlbSwKLSAgICAgICAgICAgIHlvdSBzaG91bGQgYXVkaXQgYWxsIGFydGlmYWN0cyB0byBlbnN1cmUgY29tcGxldGVuZXNzLgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgZ2VuZXJhdGVzIGEgbGljZW5zZSBtYW5pZmVzdCBkdXJpbmcKLSAgICAgICAgICAgICAgICBpbWFnZSBjcmVhdGlvbiB0aGF0IGlzIGxvY2F0ZWQKLSAgICAgICAgICAgICAgICBpbiA8ZmlsZW5hbWU+JHtERVBMT1lfRElSfS9saWNlbnNlcy88cmVwbGFjZWFibGU+aW1hZ2VfbmFtZS1kYXRlc3RhbXA8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgdG8gYXNzaXN0IHdpdGggYW55IGF1ZGl0cy4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdwcm92aWRpbmctdGhlLXNvdXJjZS1jb2RlJz4KLSAgICAgICAgICAgIDx0aXRsZT5Qcm92aWRpbmcgdGhlIFNvdXJjZSBDb2RlPC90aXRsZT4KKyAgICAgICAgPHNlY3Rpb24gaWQ9J3N1Ym1pdHRpbmctYS1kZWZlY3QtYWdhaW5zdC10aGUteW9jdG8tcHJvamVjdCc+CisgICAgICAgICAgICA8dGl0bGU+U3VibWl0dGluZyBhIERlZmVjdCBBZ2FpbnN0IHRoZSBZb2N0byBQcm9qZWN0PC90aXRsZT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQ29tcGxpYW5jZSBhY3Rpdml0aWVzIHNob3VsZCBiZWdpbiBiZWZvcmUgeW91IGdlbmVyYXRlIHRoZQotICAgICAgICAgICAgICAgIGZpbmFsIGltYWdlLgotICAgICAgICAgICAgICAgIFRoZSBmaXJzdCB0aGluZyB5b3Ugc2hvdWxkIGxvb2sgYXQgaXMgdGhlIHJlcXVpcmVtZW50IHRoYXQKLSAgICAgICAgICAgICAgICB0b3BzIHRoZSBsaXN0IGZvciBtb3N0IGNvbXBsaWFuY2UgZ3JvdXBzIC0gcHJvdmlkaW5nCi0gICAgICAgICAgICAgICAgdGhlIHNvdXJjZS4KLSAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBoYXMgYSBmZXcgd2F5cyBvZiBtZWV0aW5nIHRoaXMKLSAgICAgICAgICAgICAgICByZXF1aXJlbWVudC4KKyAgICAgICAgICAgICAgICBVc2UgdGhlIFlvY3RvIFByb2plY3QgaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LmJ1Z3ppbGxhLm9yZy9hYm91dC8nPkJ1Z3ppbGxhPC91bGluaz4KKyAgICAgICAgICAgICAgICB0byBzdWJtaXQgYSBkZWZlY3QgKGJ1ZykgYWdhaW5zdCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICBGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGlzIGltcGxlbWVudGF0aW9uIG9mIEJ1Z3ppbGxhIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVzb3VyY2VzLWJ1Z3RyYWNrZXInPllvY3RvIFByb2plY3QgQnVnemlsbGE8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICAgICAgRm9yIG1vcmUgZGV0YWlsIG9uIGFueSBvZiB0aGUgZm9sbG93aW5nIHN0ZXBzLCBzZWUgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvQnVnemlsbGFfQ29uZmlndXJhdGlvbl9hbmRfQnVnX1RyYWNraW5nJz5CdWd6aWxsYSB3aWtpIHBhZ2U8L3VsaW5rPi4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgT25lIG9mIHRoZSBlYXNpZXN0IHdheXMgdG8gbWVldCB0aGlzIHJlcXVpcmVtZW50IGlzCi0gICAgICAgICAgICAgICAgdG8gcHJvdmlkZSB0aGUgZW50aXJlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURMX0RJUic+PGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICB1c2VkIGJ5IHRoZSBidWlsZC4KLSAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCwgaG93ZXZlciwgaGFzIGEgZmV3IGlzc3Vlcy4KLSAgICAgICAgICAgICAgICBUaGUgbW9zdCBvYnZpb3VzIGlzIHRoZSBzaXplIG9mIHRoZSBkaXJlY3Rvcnkgc2luY2UgaXQgaW5jbHVkZXMKLSAgICAgICAgICAgICAgICBhbGwgc291cmNlcyB1c2VkIGluIHRoZSBidWlsZCBhbmQgbm90IGp1c3QgdGhlIHNvdXJjZSB1c2VkIGluCi0gICAgICAgICAgICAgICAgdGhlIHJlbGVhc2VkIGltYWdlLgotICAgICAgICAgICAgICAgIEl0IHdpbGwgaW5jbHVkZSB0b29sY2hhaW4gc291cmNlLCBhbmQgb3RoZXIgYXJ0aWZhY3RzLCB3aGljaAotICAgICAgICAgICAgICAgIHlvdSB3b3VsZCBub3QgZ2VuZXJhbGx5IHJlbGVhc2UuCi0gICAgICAgICAgICAgICAgSG93ZXZlciwgdGhlIG1vcmUgc2VyaW91cyBpc3N1ZSBmb3IgbW9zdCBjb21wYW5pZXMgaXMgYWNjaWRlbnRhbAotICAgICAgICAgICAgICAgIHJlbGVhc2Ugb2YgcHJvcHJpZXRhcnkgc29mdHdhcmUuCi0gICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgcHJvdmlkZXMgYW4KLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1hcmNoaXZlcic+PGZpbGVuYW1lPmFyY2hpdmVyPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIGNsYXNzIHRvIGhlbHAgYXZvaWQgc29tZSBvZiB0aGVzZSBjb25jZXJucy4KKyAgICAgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBnZW5lcmFsIHN0ZXBzIHRvIHN1Ym1pdCBhIGJ1ZyIKKworICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgT3BlbiB0aGUgWW9jdG8gUHJvamVjdCBpbXBsZW1lbnRhdGlvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0JVR1pJTExBX1VSTDsnPkJ1Z3ppbGxhPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIkZpbGUgYSBCdWciIHRvIGVudGVyIGEgbmV3IGJ1Zy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDaG9vc2UgdGhlIGFwcHJvcHJpYXRlICJDbGFzc2lmaWNhdGlvbiIsICJQcm9kdWN0IiwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAiQ29tcG9uZW50IiBmb3Igd2hpY2ggdGhlIGJ1ZyB3YXMgZm91bmQuCisgICAgICAgICAgICAgICAgICAgICAgICBCdWdzIGZvciB0aGUgWW9jdG8gUHJvamVjdCBmYWxsIGludG8gb25lIG9mIHNldmVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzaWZpY2F0aW9ucywgd2hpY2ggaW4gdHVybiBicmVhayBkb3duIGludG8gc2V2ZXJhbAorICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdHMgYW5kIGNvbXBvbmVudHMuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgZm9yIGEgYnVnIGFnYWluc3QgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IGxheWVyLCB5b3Ugd291bGQgY2hvb3NlCisgICAgICAgICAgICAgICAgICAgICAgICAiQnVpbGQgU3lzdGVtLCBNZXRhZGF0YSAmYW1wOyBSdW50aW1lIiwgIkJTUHMiLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICJic3BzLW1ldGEtaW50ZWwiLCByZXNwZWN0aXZlbHkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQ2hvb3NlIHRoZSAiVmVyc2lvbiIgb2YgdGhlIFlvY3RvIFByb2plY3QgZm9yIHdoaWNoIHlvdSBmb3VuZAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1ZyAoZS5nLiAmRElTVFJPOykuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgRGV0ZXJtaW5lIGFuZCBzZWxlY3QgdGhlICJTZXZlcml0eSIgb2YgdGhlIGJ1Zy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBzZXZlcml0eSBpbmRpY2F0ZXMgaG93IHRoZSBidWcgaW1wYWN0ZWQgeW91ciB3b3JrLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIENob29zZSB0aGUgIkhhcmR3YXJlIiB0aGF0IHRoZSBidWcgaW1wYWN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDaG9vc2UgdGhlICJBcmNoaXRlY3R1cmUiIHRoYXQgdGhlIGJ1ZyBpbXBhY3RzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIENob29zZSBhICJEb2N1bWVudGF0aW9uIGNoYW5nZSIgaXRlbSBmb3IgdGhlIGJ1Zy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZpeGluZyBhIGJ1ZyBtaWdodCBvciBtaWdodCBub3QgYWZmZWN0IHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1bnN1cmUgb2YgdGhlIGltcGFjdCB0byB0aGUgZG9jdW1lbnRhdGlvbiwgc2VsZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAiRG9uJ3QgS25vdyIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZSBhIGJyaWVmICJTdW1tYXJ5IiBvZiB0aGUgYnVnLgorICAgICAgICAgICAgICAgICAgICAgICAgVHJ5IHRvIGxpbWl0IHlvdXIgc3VtbWFyeSB0byBqdXN0IGEgbGluZSBvciB0d28gYW5kIGJlIHN1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGNhcHR1cmUgdGhlIGVzc2VuY2Ugb2YgdGhlIGJ1Zy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBQcm92aWRlIGEgZGV0YWlsZWQgIkRlc2NyaXB0aW9uIiBvZiB0aGUgYnVnLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBwcm92aWRlIGFzIG11Y2ggZGV0YWlsIGFzIHlvdSBjYW4gYWJvdXQgdGhlIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBiZWhhdmlvciwgb3V0cHV0LCBhbmQgc28gZm9ydGggdGhhdCBzdXJyb3VuZHMgdGhlIGJ1Zy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZXZlbiBhdHRhY2ggc3VwcG9ydGluZyBmaWxlcyBmb3Igb3V0cHV0IGZyb20gbG9ncyBieQorICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlICJBZGQgYW4gYXR0YWNobWVudCIgYnV0dG9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrIHRoZSAiU3VibWl0IEJ1ZyIgYnV0dG9uIHN1Ym1pdCB0aGUgYnVnLgorICAgICAgICAgICAgICAgICAgICAgICAgQSBuZXcgQnVnemlsbGEgbnVtYmVyIGlzIGFzc2lnbmVkIHRvIHRoZSBidWcgYW5kIHRoZSBkZWZlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzIGxvZ2dlZCBpbiB0aGUgYnVnIHRyYWNraW5nIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgT25jZSB5b3UgZmlsZSBhIGJ1ZywgdGhlIGJ1ZyBpcyBwcm9jZXNzZWQgYnkgdGhlIFlvY3RvIFByb2plY3QgQnVnCisgICAgICAgICAgICAgICAgVHJpYWdlIFRlYW0gYW5kIGZ1cnRoZXIgZGV0YWlscyBjb25jZXJuaW5nIHRoZSBidWcgYXJlIGFzc2lnbmVkCisgICAgICAgICAgICAgICAgKGUuZy4gcHJpb3JpdHkgYW5kIG93bmVyKS4KKyAgICAgICAgICAgICAgICBZb3UgYXJlIHRoZSAiU3VibWl0dGVyIiBvZiB0aGUgYnVnIGFuZCBhbnkgZnVydGhlciBjYXRlZ29yaXphdGlvbiwKKyAgICAgICAgICAgICAgICBwcm9ncmVzcywgb3IgY29tbWVudHMgb24gdGhlIGJ1ZyByZXN1bHQgaW4gQnVnemlsbGEgc2VuZGluZyB5b3UgYW4KKyAgICAgICAgICAgICAgICBhdXRvbWF0ZWQgZW1haWwgY29uY2VybmluZyB0aGUgcGFydGljdWxhciBjaGFuZ2Ugb3IgcHJvZ3Jlc3MgdG8gdGhlCisgICAgICAgICAgICAgICAgYnVnLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPgorICAgICAgICAgICAgPHRpdGxlPlN1Ym1pdHRpbmcgYSBDaGFuZ2UgdG8gdGhlIFlvY3RvIFByb2plY3Q8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBDb250cmlidXRpb25zIHRvIHRoZSBZb2N0byBQcm9qZWN0IGFuZCBPcGVuRW1iZWRkZWQgYXJlIHZlcnkgd2VsY29tZS4KKyAgICAgICAgICAgICAgICBCZWNhdXNlIHRoZSBzeXN0ZW0gaXMgZXh0cmVtZWx5IGNvbmZpZ3VyYWJsZSBhbmQgZmxleGlibGUsIHdlIHJlY29nbml6ZQorICAgICAgICAgICAgICAgIHRoYXQgZGV2ZWxvcGVycyB3aWxsIHdhbnQgdG8gZXh0ZW5kLCBjb25maWd1cmUgb3Igb3B0aW1pemUgaXQgZm9yCisgICAgICAgICAgICAgICAgdGhlaXIgc3BlY2lmaWMgdXNlcy4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQmVmb3JlIHlvdSBlbXBsb3kgPGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+IG9yIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hcmNoaXZlcjwvZmlsZW5hbWU+IGNsYXNzLCB5b3UgbmVlZCB0byBkZWNpZGUgaG93Ci0gICAgICAgICAgICAgICAgeW91IGNob29zZSB0byBwcm92aWRlIHNvdXJjZS4KLSAgICAgICAgICAgICAgICBUaGUgc291cmNlIDxmaWxlbmFtZT5hcmNoaXZlcjwvZmlsZW5hbWU+IGNsYXNzIGNhbiBnZW5lcmF0ZQotICAgICAgICAgICAgICAgIHRhcmJhbGxzIGFuZCBTUlBNcyBhbmQgY2FuIGNyZWF0ZSB0aGVtIHdpdGggdmFyaW91cyBsZXZlbHMgb2YKLSAgICAgICAgICAgICAgICBjb21wbGlhbmNlIGluIG1pbmQuCisgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdXNlcyBhIG1haWxpbmcgbGlzdCBhbmQgYSBwYXRjaC1iYXNlZCB3b3JrZmxvdworICAgICAgICAgICAgICAgIHRoYXQgaXMgc2ltaWxhciB0byB0aGUgTGludXgga2VybmVsIGJ1dCBjb250YWlucyBpbXBvcnRhbnQKKyAgICAgICAgICAgICAgICBkaWZmZXJlbmNlcy4KKyAgICAgICAgICAgICAgICBJbiBnZW5lcmFsLCBhIG1haWxpbmcgbGlzdCBleGlzdHMgdGhyb3VnaCB3aGljaCB5b3UgY2FuIHN1Ym1pdAorICAgICAgICAgICAgICAgIHBhdGNoZXMuCisgICAgICAgICAgICAgICAgWW91IHNob3VsZCBzZW5kIHBhdGNoZXMgdG8gdGhlIGFwcHJvcHJpYXRlIG1haWxpbmcgbGlzdCBzbyB0aGF0IHRoZXkKKyAgICAgICAgICAgICAgICBjYW4gYmUgcmV2aWV3ZWQgYW5kIG1lcmdlZCBieSB0aGUgYXBwcm9wcmlhdGUgbWFpbnRhaW5lci4KKyAgICAgICAgICAgICAgICBUaGUgc3BlY2lmaWMgbWFpbGluZyBsaXN0IHlvdSBuZWVkIHRvIHVzZSBkZXBlbmRzIG9uIHRoZQorICAgICAgICAgICAgICAgIGxvY2F0aW9uIG9mIHRoZSBjb2RlIHlvdSBhcmUgY2hhbmdpbmcuCisgICAgICAgICAgICAgICAgRWFjaCBjb21wb25lbnQgKGUuZy4gbGF5ZXIpIHNob3VsZCBoYXZlIGEKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gZmlsZSB0aGF0IGluZGljYXRlcyB3aGVyZSB0byBzZW5kCisgICAgICAgICAgICAgICAgdGhlIGNoYW5nZXMgYW5kIHdoaWNoIHByb2Nlc3MgdG8gZm9sbG93LgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBPbmUgd2F5IG9mIGRvaW5nIHRoaXMgKGJ1dCBjZXJ0YWlubHkgbm90IHRoZSBvbmx5IHdheSkgaXMgdG8KLSAgICAgICAgICAgICAgICByZWxlYXNlIGp1c3QgdGhlIHNvdXJjZSBhcyBhIHRhcmJhbGwuCi0gICAgICAgICAgICAgICAgWW91IGNhbiBkbyB0aGlzIGJ5IGFkZGluZyB0aGUgZm9sbG93aW5nIHRvIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+OgorICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VuZCB0aGUgcGF0Y2ggdG8gdGhlIG1haWxpbmcgbGlzdCB1c2luZyB3aGljaGV2ZXIgYXBwcm9hY2gKKyAgICAgICAgICAgICAgICB5b3UgZmVlbCBjb21mb3J0YWJsZSB3aXRoIHRvIGdlbmVyYXRlIHRoZSBwYXRjaC4KKyAgICAgICAgICAgICAgICBPbmNlIHNlbnQsIHRoZSBwYXRjaCBpcyB1c3VhbGx5IHJldmlld2VkIGJ5IHRoZSBjb21tdW5pdHkgYXQgbGFyZ2UuCisgICAgICAgICAgICAgICAgSWYgc29tZWJvZHkgaGFzIGNvbmNlcm5zIHdpdGggdGhlIHBhdGNoLCB0aGV5IHdpbGwgdXN1YWxseSB2b2ljZQorICAgICAgICAgICAgICAgIHRoZWlyIGNvbmNlcm4gb3ZlciB0aGUgbWFpbGluZyBsaXN0LgorICAgICAgICAgICAgICAgIElmIGEgcGF0Y2ggZG9lcyBub3QgcmVjZWl2ZSBhbnkgbmVnYXRpdmUgcmV2aWV3cywgdGhlIG1haW50YWluZXIgb2YKKyAgICAgICAgICAgICAgICB0aGUgYWZmZWN0ZWQgbGF5ZXIgdHlwaWNhbGx5IHRha2VzIHRoZSBwYXRjaCwgdGVzdHMgaXQsIGFuZCB0aGVuCisgICAgICAgICAgICAgICAgYmFzZWQgb24gc3VjY2Vzc2Z1bCB0ZXN0aW5nLCBtZXJnZXMgdGhlIHBhdGNoLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYSBpZD0nZmlndXJpbmctb3V0LXRoZS1tYWlsaW5nLWxpc3QtdG8tdXNlJz4KKyAgICAgICAgICAgICAgICBUaGUgInBva3kiIHJlcG9zaXRvcnksIHdoaWNoIGlzIHRoZSBZb2N0byBQcm9qZWN0J3MgcmVmZXJlbmNlIGJ1aWxkCisgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQsIGlzIGEgaHlicmlkIHJlcG9zaXRvcnkgdGhhdCBjb250YWlucyBzZXZlcmFsCisgICAgICAgICAgICAgICAgaW5kaXZpZHVhbCBwaWVjZXMgKGUuZy4gQml0QmFrZSwgTWV0YWRhdGEsIGRvY3VtZW50YXRpb24sCisgICAgICAgICAgICAgICAgYW5kIHNvIGZvcnRoKSBidWlsdCB1c2luZyB0aGUgY29tYm8tbGF5ZXIgdG9vbC4KKyAgICAgICAgICAgICAgICBUaGUgdXBzdHJlYW0gbG9jYXRpb24gdXNlZCBmb3Igc3VibWl0dGluZyBjaGFuZ2VzIHZhcmllcyBieQorICAgICAgICAgICAgICAgIGNvbXBvbmVudDoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29yZSBNZXRhZGF0YTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgU2VuZCB5b3VyIHBhdGNoIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2xpc3RzLm9wZW5lbWJlZGRlZC5vcmcvbWFpbG1hbi9saXN0aW5mby9vcGVuZW1iZWRkZWQtY29yZSc+b3BlbmVtYmVkZGVkLWNvcmU8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgbWFpbGluZyBsaXN0LiAgRm9yIGV4YW1wbGUsIGEgY2hhbmdlIHRvIGFueXRoaW5nIHVuZGVyCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNjcmlwdHM8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcyBzaG91bGQgYmUgc2VudAorICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhpcyBtYWlsaW5nIGxpc3QuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJpdEJha2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBjaGFuZ2VzIHRvIEJpdEJha2UgKGkuZS4gYW55dGhpbmcgdW5kZXIgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGRpcmVjdG9yeSksIHNlbmQgeW91ciBwYXRjaAorICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGlzdHMub3BlbmVtYmVkZGVkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2JpdGJha2UtZGV2ZWwnPmJpdGJha2UtZGV2ZWw8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgbWFpbGluZyBsaXN0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4ibWV0YS0qIiB0cmVlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgdHJlZXMgY29udGFpbiBNZXRhZGF0YS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vbGlzdHMueW9jdG9wcm9qZWN0Lm9yZy9saXN0aW5mby9wb2t5Jz5wb2t5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIG1haWxpbmcgbGlzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBGb3IgY2hhbmdlcyB0byBvdGhlciBsYXllcnMgaG9zdGVkIGluIHRoZSBZb2N0byBQcm9qZWN0IHNvdXJjZQorICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcyAoaS5lLiA8ZmlsZW5hbWU+eW9jdG9wcm9qZWN0Lm9yZzwvZmlsZW5hbWU+KSwgdG9vbHMsCisgICAgICAgICAgICAgICAgYW5kIHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24sIHVzZSB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2xpc3RzLnlvY3RvcHJvamVjdC5vcmcvbGlzdGluZm8veW9jdG8nPllvY3RvIFByb2plY3Q8L3VsaW5rPgorICAgICAgICAgICAgICAgIGdlbmVyYWwgbWFpbGluZyBsaXN0LgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBTb21ldGltZXMgYSBsYXllcidzIGRvY3VtZW50YXRpb24gc3BlY2lmaWVzIHRvIHVzZSBhCisgICAgICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIgbWFpbGluZyBsaXN0LgorICAgICAgICAgICAgICAgICAgICBJZiBzbywgdXNlIHRoYXQgbGlzdC4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgRm9yIGFkZGl0aW9uYWwgcmVjaXBlcyB0aGF0IGRvIG5vdCBmaXQgaW50byB0aGUgY29yZSBNZXRhZGF0YSwgeW91CisgICAgICAgICAgICAgICAgc2hvdWxkIGRldGVybWluZSB3aGljaCBsYXllciB0aGUgcmVjaXBlIHNob3VsZCBnbyBpbnRvIGFuZCBzdWJtaXQKKyAgICAgICAgICAgICAgICB0aGUgY2hhbmdlIGluIHRoZSBtYW5uZXIgcmVjb21tZW5kZWQgYnkgdGhlIGRvY3VtZW50YXRpb24gKGUuZy4KKyAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+IGZpbGUpIHN1cHBsaWVkIHdpdGggdGhlIGxheWVyLgorICAgICAgICAgICAgICAgIElmIGluIGRvdWJ0LCBwbGVhc2UgYXNrIG9uIHRoZSBZb2N0byBnZW5lcmFsIG1haWxpbmcgbGlzdCBvciBvbgorICAgICAgICAgICAgICAgIHRoZSBvcGVuZW1iZWRkZWQtZGV2ZWwgbWFpbGluZyBsaXN0LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gcHVzaCBhIGNoYW5nZSB1cHN0cmVhbSBhbmQgcmVxdWVzdCBhIG1haW50YWluZXIgdG8KKyAgICAgICAgICAgICAgICBwdWxsIHRoZSBjaGFuZ2UgaW50byB0aGUgY29tcG9uZW50J3MgdXBzdHJlYW0gcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICBZb3UgZG8gdGhpcyBieSBwdXNoaW5nIHRvIGEgY29udHJpYnV0aW9uIHJlcG9zaXRvcnkgdGhhdCBpcyB1cHN0cmVhbS4KKyAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjZ3MtZ2l0LXdvcmtmbG93cy1hbmQtdGhlLXlvY3RvLXByb2plY3QnPkdpdCBXb3JrZmxvd3MgYW5kIHRoZSBZb2N0byBQcm9qZWN0PC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsIGZvciBhZGRpdGlvbmFsCisgICAgICAgICAgICAgICAgY29uY2VwdHMgb24gd29ya2luZyBpbiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVHdvIGNvbW1vbmx5IHVzZWQgdGVzdGluZyByZXBvc2l0b3JpZXMgZXhpc3QgZm9yCisgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkLUNvcmU6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPiJyb3NzL211dCIgYnJhbmNoOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgIm11dCIgKG1hc3Rlci11bmRlci10ZXN0KSB0cmVlCisgICAgICAgICAgICAgICAgICAgICAgICBleGlzdHMgaW4gdGhlIDxmaWxlbmFtZT5wb2t5LWNvbnRyaWI8L2ZpbGVuYW1lPiByZXBvc2l0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+WW9jdG8gUHJvamVjdCBzb3VyY2UgcmVwb3NpdG9yaWVzPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPiJtYXN0ZXItbmV4dCIgYnJhbmNoOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGJyYW5jaCBpcyBwYXJ0IG9mIHRoZSBtYWluCisgICAgICAgICAgICAgICAgICAgICAgICAicG9reSIgcmVwb3NpdG9yeSBpbiB0aGUgWW9jdG8gUHJvamVjdCBzb3VyY2UgcmVwb3NpdG9yaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgTWFpbnRhaW5lcnMgdXNlIHRoZXNlIGJyYW5jaGVzIHRvIHRlc3Qgc3VibWlzc2lvbnMgcHJpb3IgdG8gbWVyZ2luZworICAgICAgICAgICAgICAgIHBhdGNoZXMuCisgICAgICAgICAgICAgICAgVGh1cywgeW91IGNhbiBnZXQgYW4gaWRlYSBvZiB0aGUgc3RhdHVzIG9mIGEgcGF0Y2ggYmFzZWQgb24KKyAgICAgICAgICAgICAgICB3aGV0aGVyIHRoZSBwYXRjaCBoYXMgYmVlbiBtZXJnZWQgaW50byBvbmUgb2YgdGhlc2UgYnJhbmNoZXMuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgc3lzdGVtIGlzIGltcGVyZmVjdCBhbmQgY2hhbmdlcyBjYW4gc29tZXRpbWVzIGdldCBsb3N0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICBmbG93LgorICAgICAgICAgICAgICAgICAgICBBc2tpbmcgYWJvdXQgdGhlIHN0YXR1cyBvZiBhIHBhdGNoIG9yIGNoYW5nZSBpcyByZWFzb25hYmxlIGlmIHRoZQorICAgICAgICAgICAgICAgICAgICBjaGFuZ2UgaGFzIGJlZW4gaWRsZSBmb3IgYSB3aGlsZSB3aXRoIG5vIGZlZWRiYWNrLgorICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBkb2VzIGhhdmUgcGxhbnMgdG8gdXNlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1BhdGNod29ya18oc29mdHdhcmUpJz5QYXRjaHdvcms8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB0byB0cmFjayB0aGUgc3RhdHVzIG9mIHBhdGNoZXMgYW5kIGFsc28gdG8gYXV0b21hdGljYWxseSBwcmV2aWV3CisgICAgICAgICAgICAgICAgICAgIHBhdGNoZXMuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHNlY3Rpb25zIHByb3ZpZGUgcHJvY2VkdXJlcyBmb3Igc3VibWl0dGluZyBhIGNoYW5nZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3B1c2hpbmctYS1jaGFuZ2UtdXBzdHJlYW0nPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBTY3JpcHRzIHRvIFB1c2ggYSBDaGFuZ2UgVXBzdHJlYW0gYW5kIFJlcXVlc3QgYSBQdWxsPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb2xsb3cgdGhpcyBwcm9jZWR1cmUgdG8gcHVzaCBhIGNoYW5nZSB0byBhbiB1cHN0cmVhbSAiY29udHJpYiIKKyAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnk6CisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIGdlbmVyYWwgR2l0IGluZm9ybWF0aW9uIG9uIGhvdyB0byBwdXNoIGEgY2hhbmdlCisgICAgICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQtc2NtLmNvbS9ib29rL2VuL3YyL0Rpc3RyaWJ1dGVkLUdpdC1EaXN0cmlidXRlZC1Xb3JrZmxvd3MnPkdpdCBDb21tdW5pdHkgQm9vazwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBZb3VyIENoYW5nZXMgTG9jYWxseTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ha2UgeW91ciBjaGFuZ2VzIGluIHlvdXIgbG9jYWwgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBtYWtlIHNtYWxsLCBjb250cm9sbGVkLCBpc29sYXRlZCBjaGFuZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtlZXBpbmcgY2hhbmdlcyBzbWFsbCBhbmQgaXNvbGF0ZWQgYWlkcyByZXZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZXMgbWVyZ2luZy9yZWJhc2luZyBlYXNpZXIgYW5kIGtlZXBzIHRoZSBjaGFuZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaXN0b3J5IGNsZWFuIHNob3VsZCBhbnlvbmUgbmVlZCB0byByZWZlciB0byBpdCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1dHVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U3RhZ2UgWW91ciBDaGFuZ2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhZ2UgeW91ciBjaGFuZ2VzIGJ5IHVzaW5nIHRoZSA8ZmlsZW5hbWU+Z2l0IGFkZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBvbiBlYWNoIGZpbGUgeW91IGNoYW5nZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J21ha2luZy1zdXJlLXlvdS1oYXZlLWNvcnJlY3QtY29tbWl0LWluZm9ybWF0aW9uJz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29tbWl0IFlvdXIgQ2hhbmdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1pdCB0aGUgY2hhbmdlIGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgY29tbWl0PC9maWxlbmFtZT4gY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWtlIHN1cmUgeW91ciBjb21taXQgaW5mb3JtYXRpb24gZm9sbG93cyBzdGFuZGFyZHMgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgdGhlc2UgYWNjZXB0ZWQgY29udmVudGlvbnM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBpbmNsdWRlIGEgIlNpZ25lZC1vZmYtYnk6IiBsaW5lIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtZSBzdHlsZSBhcyByZXF1aXJlZCBieSB0aGUgTGludXgga2VybmVsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkaW5nIHRoaXMgbGluZSBzaWduaWZpZXMgdGhhdCB5b3UsIHRoZSBzdWJtaXR0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlIGFncmVlZCB0byB0aGUgRGV2ZWxvcGVyJ3MgQ2VydGlmaWNhdGUgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yaWdpbiAxLjEgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRGV2ZWxvcGVyJ3MgQ2VydGlmaWNhdGUgb2YgT3JpZ2luIDEuMQorCisgICAgIEJ5IG1ha2luZyBhIGNvbnRyaWJ1dGlvbiB0byB0aGlzIHByb2plY3QsIEkgY2VydGlmeSB0aGF0OgorCisgICAgIChhKSBUaGUgY29udHJpYnV0aW9uIHdhcyBjcmVhdGVkIGluIHdob2xlIG9yIGluIHBhcnQgYnkgbWUgYW5kIEkKKyAgICAgICAgIGhhdmUgdGhlIHJpZ2h0IHRvIHN1Ym1pdCBpdCB1bmRlciB0aGUgb3BlbiBzb3VyY2UgbGljZW5zZQorICAgICAgICAgaW5kaWNhdGVkIGluIHRoZSBmaWxlOyBvcgorCisgICAgIChiKSBUaGUgY29udHJpYnV0aW9uIGlzIGJhc2VkIHVwb24gcHJldmlvdXMgd29yayB0aGF0LCB0byB0aGUgYmVzdAorICAgICAgICAgb2YgbXkga25vd2xlZGdlLCBpcyBjb3ZlcmVkIHVuZGVyIGFuIGFwcHJvcHJpYXRlIG9wZW4gc291cmNlCisgICAgICAgICBsaWNlbnNlIGFuZCBJIGhhdmUgdGhlIHJpZ2h0IHVuZGVyIHRoYXQgbGljZW5zZSB0byBzdWJtaXQgdGhhdAorICAgICAgICAgd29yayB3aXRoIG1vZGlmaWNhdGlvbnMsIHdoZXRoZXIgY3JlYXRlZCBpbiB3aG9sZSBvciBpbiBwYXJ0CisgICAgICAgICBieSBtZSwgdW5kZXIgdGhlIHNhbWUgb3BlbiBzb3VyY2UgbGljZW5zZSAodW5sZXNzIEkgYW0KKyAgICAgICAgIHBlcm1pdHRlZCB0byBzdWJtaXQgdW5kZXIgYSBkaWZmZXJlbnQgbGljZW5zZSksIGFzIGluZGljYXRlZAorICAgICAgICAgaW4gdGhlIGZpbGU7IG9yCisKKyAgICAgKGMpIFRoZSBjb250cmlidXRpb24gd2FzIHByb3ZpZGVkIGRpcmVjdGx5IHRvIG1lIGJ5IHNvbWUgb3RoZXIKKyAgICAgICAgIHBlcnNvbiB3aG8gY2VydGlmaWVkIChhKSwgKGIpIG9yIChjKSBhbmQgSSBoYXZlIG5vdCBtb2RpZmllZAorICAgICAgICAgaXQuCisKKyAgICAgKGQpIEkgdW5kZXJzdGFuZCBhbmQgYWdyZWUgdGhhdCB0aGlzIHByb2plY3QgYW5kIHRoZSBjb250cmlidXRpb24KKyAgICAgICAgIGFyZSBwdWJsaWMgYW5kIHRoYXQgYSByZWNvcmQgb2YgdGhlIGNvbnRyaWJ1dGlvbiAoaW5jbHVkaW5nIGFsbAorICAgICAgICAgcGVyc29uYWwgaW5mb3JtYXRpb24gSSBzdWJtaXQgd2l0aCBpdCwgaW5jbHVkaW5nIG15IHNpZ24tb2ZmKSBpcworICAgICAgICAgbWFpbnRhaW5lZCBpbmRlZmluaXRlbHkgYW5kIG1heSBiZSByZWRpc3RyaWJ1dGVkIGNvbnNpc3RlbnQgd2l0aAorICAgICAgICAgdGhpcyBwcm9qZWN0IG9yIHRoZSBvcGVuIHNvdXJjZSBsaWNlbnNlKHMpIGludm9sdmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGUgYSBzaW5nbGUtbGluZSBzdW1tYXJ5IG9mIHRoZSBjaGFuZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBtb3JlIGV4cGxhbmF0aW9uIGlzIG5lZWRlZCwgcHJvdmlkZSBtb3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWwgaW4gdGhlIGJvZHkgb2YgdGhlIGNvbW1pdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgc3VtbWFyeSBpcyB0eXBpY2FsbHkgdmlld2FibGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvcnRsaXN0IiBvZiBjaGFuZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGh1cywgcHJvdmlkaW5nIHNvbWV0aGluZyBzaG9ydCBhbmQgZGVzY3JpcHRpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgZ2l2ZXMgdGhlIHJlYWRlciBhIHN1bW1hcnkgb2YgdGhlIGNoYW5nZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZnVsIHdoZW4gdmlld2luZyBhIGxpc3Qgb2YgbWFueSBjb21taXRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBwcmVmaXggdGhpcyBzaG9ydCBkZXNjcmlwdGlvbiB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIG5hbWUgKGlmIGNoYW5naW5nIGEgcmVjaXBlKSwgb3IgZWxzZSB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2hvcnQgZm9ybSBwYXRoIHRvIHRoZSBmaWxlIGJlaW5nIGNoYW5nZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBib2R5IG9mIHRoZSBjb21taXQgbWVzc2FnZSwgcHJvdmlkZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsZWQgaW5mb3JtYXRpb24gdGhhdCBkZXNjcmliZXMgd2hhdCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQsIHdoeSB5b3UgbWFkZSB0aGUgY2hhbmdlLCBhbmQgdGhlIGFwcHJvYWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgdXNlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0IG1pZ2h0IGFsc28gYmUgaGVscGZ1bCBpZiB5b3UgbWVudGlvbiBob3cgeW91CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZWQgdGhlIGNoYW5nZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGUgYXMgbXVjaCBkZXRhaWwgYXMgeW91IGNhbiBpbiB0aGUgYm9keSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbW1pdCBtZXNzYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGRvIG5vdCBuZWVkIHRvIHByb3ZpZGUgYSBtb3JlIGRldGFpbGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGFuYXRpb24gb2YgYSBjaGFuZ2UgaWYgdGhlIGNoYW5nZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbm9yIHRvIHRoZSBwb2ludCBvZiB0aGUgc2luZ2xlIGxpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5IHByb3ZpZGluZyBhbGwgdGhlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSBjaGFuZ2UgYWRkcmVzc2VzIGEgc3BlY2lmaWMgYnVnIG9yIGlzc3VlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBhIGJ1Zy10cmFja2luZyBJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgYSByZWZlcmVuY2UgdG8gdGhhdCBJRCBpbiB5b3VyIGRldGFpbGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgWW9jdG8gUHJvamVjdCB1c2VzIGEgc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlbnRpb24gZm9yIGJ1ZyByZWZlcmVuY2VzIC0gYW55IGNvbW1pdCB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzZXMgYSBzcGVjaWZpYyBidWcgc2hvdWxkIHVzZSB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHVzZSB0aGUgYWN0dWFsIGJ1Zy10cmFja2luZyBJRCBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWd6aWxsYSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5idWctaWQ8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgRml4ZXMgW1lPQ1RPICM8cmVwbGFjZWFibGU+YnVnLWlkPC9yZXBsYWNlYWJsZT5dCisKKyAgICAgPHJlcGxhY2VhYmxlPmRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIGNoYW5nZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UHVzaCBZb3VyIENvbW1pdHMgdG8gYSAiQ29udHJpYiIgVXBzdHJlYW06PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBhcnJhbmdlZCBmb3IgcGVybWlzc2lvbnMgdG8gcHVzaCB0byBhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtIGNvbnRyaWIgcmVwb3NpdG9yeSwgcHVzaCB0aGUgY2hhbmdlIHRvIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBnaXQgcHVzaCA8cmVwbGFjZWFibGU+dXBzdHJlYW1fcmVtb3RlX3JlcG88L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+bG9jYWxfYnJhbmNoX25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgaGF2ZSBwZXJtaXNzaW9ucyB0byBwdXNoIGludG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW0gPGZpbGVuYW1lPm1ldGEtaW50ZWwtY29udHJpYjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSBhbmQgeW91IGFyZSB3b3JraW5nIGluIGEgbG9jYWwgYnJhbmNoIG5hbWVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnlvdXJfbmFtZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi9SRUFETUU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgcHVzaGVzIHlvdXIgbG9jYWwgY29tbWl0cyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbC1jb250cmliPC9maWxlbmFtZT4gdXBzdHJlYW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5IGFuZCBwdXRzIHRoZSBjb21taXQgaW4gYSBicmFuY2ggbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+eW91cl9uYW1lPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+L1JFQURNRTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBnaXQgcHVzaCBtZXRhLWludGVsLWNvbnRyaWIgPHJlcGxhY2VhYmxlPnlvdXJfbmFtZTwvcmVwbGFjZWFibGU+L1JFQURNRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0ncHVzaC1kZXRlcm1pbmUtd2hvLXRvLW5vdGlmeSc+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRldGVybWluZSBXaG8gdG8gTm90aWZ5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV0ZXJtaW5lIHRoZSBtYWludGFpbmVyIG9yIHRoZSBtYWlsaW5nIGxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHlvdSBuZWVkIHRvIG5vdGlmeSBmb3IgdGhlIGNoYW5nZS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5CZWZvcmUgc3VibWl0dGluZyBhbnkgY2hhbmdlLCB5b3UgbmVlZCB0byBiZSBzdXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hvIHRoZSBtYWludGFpbmVyIGlzIG9yIHdoYXQgbWFpbGluZyBsaXN0IHRoYXQgeW91IG5lZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBub3RpZnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIGVpdGhlciB0aGVzZSBtZXRob2RzIHRvIGZpbmQgb3V0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWludGVuYW5jZSBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGFtaW5lIHRoZSA8ZmlsZW5hbWU+bWFpbnRhaW5lcnMuaW5jPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUsIHdoaWNoIGlzIGxvY2F0ZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBzZWUgd2hvIGlzIHJlc3BvbnNpYmxlIGZvciBjb2RlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZWFyY2ggYnkgRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNnaXQnPkdpdDwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBlbnRlciB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gYnJpbmcgdXAgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnQgbGlzdCBvZiBhbGwgY29tbWl0cyBhZ2FpbnN0IGEgc3BlY2lmaWMgZmlsZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZ2l0IHNob3J0bG9nIC0tIDxyZXBsYWNlYWJsZT5maWxlbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKdXN0IHByb3ZpZGUgdGhlIG5hbWUgb2YgdGhlIGZpbGUgZm9yIHdoaWNoIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGludGVyZXN0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgaW5mb3JtYXRpb24gcmV0dXJuZWQgaXMgbm90IG9yZGVyZWQgYnkgaGlzdG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGRvZXMgaW5jbHVkZSBhIGxpc3Qgb2YgZXZlcnlvbmUgd2hvIGhhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0dGVkIGdyb3VwZWQgYnkgbmFtZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyb20gdGhlIGxpc3QsIHlvdSBjYW4gc2VlIHdobyBpcyByZXNwb25zaWJsZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBidWxrIG9mIHRoZSBjaGFuZ2VzIGFnYWluc3QgdGhlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkV4YW1pbmUgdGhlIExpc3Qgb2YgTWFpbGluZyBMaXN0czo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGEgbGlzdCBvZiB0aGUgWW9jdG8gUHJvamVjdCBhbmQgcmVsYXRlZCBtYWlsaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0cywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Jlc291cmNlcy1tYWlsaW5nbGlzdCc+TWFpbGluZyBsaXN0czwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ha2UgYSBQdWxsIFJlcXVlc3Q6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RpZnkgdGhlIG1haW50YWluZXIgb3IgdGhlIG1haWxpbmcgbGlzdCB0aGF0IHlvdSBoYXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaGVkIGEgY2hhbmdlIGJ5IG1ha2luZyBhIHB1bGwgcmVxdWVzdC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcyB0d28gc2NyaXB0cyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVuaWVudGx5IGxldCB5b3UgZ2VuZXJhdGUgYW5kIHNlbmQgcHVsbCByZXF1ZXN0cyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIHNjcmlwdHMgYXJlIDxmaWxlbmFtZT5jcmVhdGUtcHVsbC1yZXF1ZXN0PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPnNlbmQtcHVsbC1yZXF1ZXN0PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZXNlIHNjcmlwdHMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNjcmlwdHM8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgd2l0aGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5+L3Bva3kvc2NyaXB0czwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Vc2luZyB0aGVzZSBzY3JpcHRzIGNvcnJlY3RseSBmb3JtYXRzIHRoZSByZXF1ZXN0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgaW50cm9kdWNpbmcgYW55IHdoaXRlc3BhY2Ugb3IgSFRNTCBmb3JtYXR0aW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBtYWludGFpbmVyIHRoYXQgcmVjZWl2ZXMgeW91ciBwYXRjaGVzIGVpdGhlciBkaXJlY3RseQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIHRocm91Z2ggdGhlIG1haWxpbmcgbGlzdCBuZWVkcyB0byBiZSBhYmxlIHRvIHNhdmUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbHkgdGhlbSBkaXJlY3RseSBmcm9tIHlvdXIgZW1haWxzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzaW5nIHRoZXNlIHNjcmlwdHMgaXMgdGhlIHByZWZlcnJlZCBtZXRob2QgZm9yIHNlbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaGVzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZpcnN0LCBjcmVhdGUgdGhlIHB1bGwgcmVxdWVzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kIHJ1bnMgdGhlIHNjcmlwdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgdGhlIHVwc3RyZWFtIHJlcG9zaXRvcnkgaW4gdGhlIGNvbnRyaWIgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50byB3aGljaCB5b3UgcHVzaGVkIHRoZSBjaGFuZ2UsIGFuZCBwcm92aWRlcyBhIHN1YmplY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lIGluIHRoZSBjcmVhdGVkIHBhdGNoIGZpbGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB+L3Bva3kvc2NyaXB0cy9jcmVhdGUtcHVsbC1yZXF1ZXN0IC11IG1ldGEtaW50ZWwtY29udHJpYiAtcyAiVXBkYXRlZCBNYW51YWwgU2VjdGlvbiBSZWZlcmVuY2UgaW4gUkVBRE1FIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW5uaW5nIHRoaXMgc2NyaXB0IGZvcm1zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPioucGF0Y2g8L2ZpbGVuYW1lPiBmaWxlcyBpbiBhIGZvbGRlciBuYW1lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wdWxsLTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPlBJRDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uZSBvZiB0aGUgcGF0Y2ggZmlsZXMgaXMgYSBjb3ZlciBsZXR0ZXIuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QmVmb3JlIHJ1bm5pbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNlbmQtcHVsbC1yZXF1ZXN0PC9maWxlbmFtZT4gc2NyaXB0LCB5b3UgbXVzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXQgdGhlIGNvdmVyIGxldHRlciBwYXRjaCB0byBpbnNlcnQgaW5mb3JtYXRpb24gYWJvdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3VyIGNoYW5nZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZnRlciBlZGl0aW5nIHRoZSBjb3ZlciBsZXR0ZXIsIHNlbmQgdGhlIHB1bGwgcmVxdWVzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kIHJ1bnMgdGhlIHNjcmlwdCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgdGhlIHBhdGNoIGRpcmVjdG9yeSBhbmQgZW1haWwgYWRkcmVzcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZSBlbWFpbCBhZGRyZXNzIGlzIGEgbWFpbGluZyBsaXN0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB+L3Bva3kvc2NyaXB0cy9zZW5kLXB1bGwtcmVxdWVzdCAtcCB+L21ldGEtaW50ZWwvcHVsbC0xMDU2NSAtdCBtZXRhLWludGVsQHlvY3RvcHJvamVjdC5vcmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gZm9sbG93IHRoZSBwcm9tcHRzIGFzIHRoZSBzY3JpcHQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGl2ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGhlbHAgb24gdXNpbmcgdGhlc2Ugc2NyaXB0cywgc2ltcGx5IHByb3ZpZGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4taDwvZmlsZW5hbWU+IGFyZ3VtZW50IGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBwb2t5L3NjcmlwdHMvY3JlYXRlLXB1bGwtcmVxdWVzdCAtaAorICAgICAkIHBva3kvc2NyaXB0cy9zZW5kLXB1bGwtcmVxdWVzdCAtaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3N1Ym1pdHRpbmctYS1wYXRjaCc+CisgICAgICAgICAgICAgICAgPHRpdGxlPlVzaW5nIEVtYWlsIHRvIFN1Ym1pdCBhIFBhdGNoPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHN1Ym1pdCBwYXRjaGVzIHdpdGhvdXQgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jcmVhdGUtcHVsbC1yZXF1ZXN0PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZW5kLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+IHNjcmlwdHMgZGVzY3JpYmVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBrZWVwIGluIG1pbmQsIHRoZSBwcmVmZXJyZWQgbWV0aG9kIGlzIHRvIHVzZSB0aGUgc2NyaXB0cy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSBjb21wb25lbnRzIGNoYW5nZWQsIHlvdSBuZWVkIHRvIHN1Ym1pdCB0aGUgZW1haWwKKyAgICAgICAgICAgICAgICAgICAgdG8gYSBzcGVjaWZpYyBtYWlsaW5nIGxpc3QuCisgICAgICAgICAgICAgICAgICAgIEZvciBzb21lIGd1aWRhbmNlIG9uIHdoaWNoIG1haWxpbmcgbGlzdCB0byB1c2UsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZmlndXJpbmctb3V0LXRoZS1tYWlsaW5nLWxpc3QtdG8tdXNlJz5saXN0PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGEgZGVzY3JpcHRpb24gb2YgYWxsIHRoZSBhdmFpbGFibGUgbWFpbGluZyBsaXN0cywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVzb3VyY2VzLW1haWxpbmdsaXN0Jz5NYWlsaW5nIExpc3RzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyB0aGUgZ2VuZXJhbCBwcm9jZWR1cmUgb24gaG93IHRvIHN1Ym1pdCBhIHBhdGNoIHRocm91Z2gKKyAgICAgICAgICAgICAgICAgICAgZW1haWwgd2l0aG91dCB1c2luZyB0aGUgc2NyaXB0czoKKyAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIFlvdXIgQ2hhbmdlcyBMb2NhbGx5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFrZSB5b3VyIGNoYW5nZXMgaW4geW91ciBsb2NhbCBHaXQgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIG1ha2Ugc21hbGwsIGNvbnRyb2xsZWQsIGlzb2xhdGVkIGNoYW5nZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2VlcGluZyBjaGFuZ2VzIHNtYWxsIGFuZCBpc29sYXRlZCBhaWRzIHJldmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlcyBtZXJnaW5nL3JlYmFzaW5nIGVhc2llciBhbmQga2VlcHMgdGhlIGNoYW5nZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpc3RvcnkgY2xlYW4gc2hvdWxkIGFueW9uZSBuZWVkIHRvIHJlZmVyIHRvIGl0IGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnV0dXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TdGFnZSBZb3VyIENoYW5nZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFnZSB5b3VyIGNoYW5nZXMgYnkgdXNpbmcgdGhlIDxmaWxlbmFtZT5naXQgYWRkPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIG9uIGVhY2ggZmlsZSB5b3UgY2hhbmdlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29tbWl0IFlvdXIgQ2hhbmdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1pdCB0aGUgY2hhbmdlIGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgY29tbWl0IC0tc2lnbm9mZjwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhlIDxmaWxlbmFtZT4tLXNpZ25vZmY8L2ZpbGVuYW1lPiBvcHRpb24gaWRlbnRpZmllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBhcyB0aGUgcGVyc29uIG1ha2luZyB0aGUgY2hhbmdlIGFuZCBhbHNvIHNhdGlzZmllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBEZXZlbG9wZXIncyBDZXJ0aWZpY2F0ZSBvZiBPcmlnaW4gKERDTykgc2hvd24gZWFybGllci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5XaGVuIHlvdSBmb3JtIGEgY29tbWl0LCB5b3UgbXVzdCBmb2xsb3cgY2VydGFpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YW5kYXJkcyBlc3RhYmxpc2hlZCBieSB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlYW0uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWFraW5nLXN1cmUteW91LWhhdmUtY29ycmVjdC1jb21taXQtaW5mb3JtYXRpb24nPlN0ZXAgMzwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZSBjb21taXQgaW5mb3JtYXRpb24gdGhhdCBtZWV0cyBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0IG1lc3NhZ2Ugc3RhbmRhcmRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Gb3JtYXQgdGhlIENvbW1pdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdCB0aGUgY29tbWl0IGludG8gYW4gZW1haWwgbWVzc2FnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUbyBmb3JtYXQgY29tbWl0cywgdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgZm9ybWF0LXBhdGNoPC9maWxlbmFtZT4gY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBwcm92aWRlIHRoZSBjb21tYW5kLCB5b3UgbXVzdCBpbmNsdWRlIGEgcmV2aXNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0IG9yIGEgbnVtYmVyIG9mIHBhdGNoZXMgYXMgcGFydCBvZiB0aGUgY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgZWl0aGVyIG9mIHRoZXNlIHR3byBjb21tYW5kcyB0YWtlcyB5b3VyIG1vc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlbnQgc2luZ2xlIGNvbW1pdCBhbmQgZm9ybWF0cyBpdCBhcyBhbiBlbWFpbCBtZXNzYWdlIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGN1cnJlbnQgZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBnaXQgZm9ybWF0LXBhdGNoIC0xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGdpdCBmb3JtYXQtcGF0Y2ggSEVBRH4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QWZ0ZXIgdGhlIGNvbW1hbmQgaXMgcnVuLCB0aGUgY3VycmVudCBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWlucyBhIG51bWJlcmVkIDxmaWxlbmFtZT4ucGF0Y2g8L2ZpbGVuYW1lPiBmaWxlIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb21taXQuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IHByb3ZpZGUgc2V2ZXJhbCBjb21taXRzIGFzIHBhcnQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCwgdGhlIDxmaWxlbmFtZT5naXQgZm9ybWF0LXBhdGNoPC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y2VzIGEgc2VyaWVzIG9mIG51bWJlcmVkIGZpbGVzIGluIHRoZSBjdXJyZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IOKAkyBvbmUgZm9yIGVhY2ggY29tbWl0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIG1vcmUgdGhhbiBvbmUgcGF0Y2gsIHlvdSBzaG91bGQgYWxzbyB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi0tY292ZXI8L2ZpbGVuYW1lPiBvcHRpb24gd2l0aCB0aGUgY29tbWFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBnZW5lcmF0ZXMgYSBjb3ZlciBsZXR0ZXIgYXMgdGhlIGZpcnN0ICJwYXRjaCIgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2VyaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdGhlbiBlZGl0IHRoZSBjb3ZlciBsZXR0ZXIgdG8gcHJvdmlkZSBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gZm9yIHRoZSBzZXJpZXMgb2YgcGF0Y2hlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBmb3JtYXQtcGF0Y2g8L2ZpbGVuYW1lPiBjb21tYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZSA8ZmlsZW5hbWU+R0lUX0ZPUk1BVF9QQVRDSCgxKTwvZmlsZW5hbWU+IGRpc3BsYXllZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSA8ZmlsZW5hbWU+bWFuIGdpdC1mb3JtYXQtcGF0Y2g8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgb3Igd2lsbCBiZSBhIGZyZXF1ZW50IGNvbnRyaWJ1dG9yIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IG9yIHRvIE9wZW5FbWJlZGRlZCwgeW91IG1pZ2h0IGNvbnNpZGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RpbmcgYSBjb250cmliIGFyZWEgYW5kIHRoZSBuZWNlc3NhcnkgYXNzb2NpYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5JbXBvcnQgdGhlIEZpbGVzIEludG8gWW91ciBNYWlsIENsaWVudDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltcG9ydCB0aGUgZmlsZXMgaW50byB5b3VyIG1haWwgY2xpZW50IGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgc2VuZC1lbWFpbDwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIG9yZGVyIHRvIHVzZSA8ZmlsZW5hbWU+Z2l0IHNlbmQtZW1haWw8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IG11c3QgaGF2ZSB0aGUgcHJvcGVyIEdpdCBwYWNrYWdlcyBpbnN0YWxsZWQgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBob3N0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgVWJ1bnR1LCBEZWJpYW4sIGFuZCBGZWRvcmEgdGhlIHBhY2thZ2UgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdC1lbWFpbDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgPGZpbGVuYW1lPmdpdCBzZW5kLWVtYWlsPC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRzIGVtYWlsIGJ5IHVzaW5nIGEgbG9jYWwgb3IgcmVtb3RlIE1haWwgVHJhbnNwb3J0IEFnZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE1UQSkgc3VjaCBhcyA8ZmlsZW5hbWU+bXNtdHA8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2VuZG1haWw8L2ZpbGVuYW1lPiwgb3IgdGhyb3VnaCBhIGRpcmVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zbXRwPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBpbiB5b3VyIEdpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5+Ly5naXRjb25maWc8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgc3VibWl0dGluZyBwYXRjaGVzIHRocm91Z2ggZW1haWwgb25seSwgaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ5IGltcG9ydGFudCB0aGF0IHlvdSBzdWJtaXQgdGhlbSB3aXRob3V0IGFueSB3aGl0ZXNwYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgSFRNTCBmb3JtYXR0aW5nIHRoYXQgZWl0aGVyIHlvdSBvciB5b3VyIG1haWxlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludHJvZHVjZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1haW50YWluZXIgdGhhdCByZWNlaXZlcyB5b3VyIHBhdGNoZXMgbmVlZHMgdG8gYmUgYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHNhdmUgYW5kIGFwcGx5IHRoZW0gZGlyZWN0bHkgZnJvbSB5b3VyIGVtYWlscy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGdvb2Qgd2F5IHRvIHZlcmlmeSB0aGF0IHdoYXQgeW91IGFyZSBzZW5kaW5nIHdpbGwgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhYmxlIGJ5IHRoZSBtYWludGFpbmVyIGlzIHRvIGRvIGEgZHJ5IHJ1biBhbmQgc2VuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW0gdG8geW91cnNlbGYgYW5kIHRoZW4gc2F2ZSBhbmQgYXBwbHkgdGhlbSBhcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWludGFpbmVyIHdvdWxkLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSA8ZmlsZW5hbWU+Z2l0IHNlbmQtZW1haWw8L2ZpbGVuYW1lPiBjb21tYW5kIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHByZWZlcnJlZCBtZXRob2QgZm9yIHNlbmRpbmcgeW91ciBwYXRjaGVzIHVzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1haWwgc2luY2UgdGhlcmUgaXMgbm8gcmlzayBvZiBjb21wcm9taXNpbmcgd2hpdGVzcGFjZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBib2R5IG9mIHRoZSBtZXNzYWdlLCB3aGljaCBjYW4gb2NjdXIgd2hlbiB5b3UgdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBvd24gbWFpbCBjbGllbnQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNvbW1hbmQgYWxzbyBoYXMgc2V2ZXJhbCBvcHRpb25zIHRoYXQgbGV0IHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgcmVjaXBpZW50cyBhbmQgcGVyZm9ybSBmdXJ0aGVyIGVkaXRpbmcgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1haWwgbWVzc2FnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IHNlbmQtZW1haWw8L2ZpbGVuYW1lPiBjb21tYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZSA8ZmlsZW5hbWU+R0lULVNFTkQtRU1BSUwoMSk8L2ZpbGVuYW1lPiBkaXNwbGF5ZWQgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPm1hbiBnaXQtc2VuZC1lbWFpbDwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3dvcmtpbmctd2l0aC1saWNlbnNlcyc+CisgICAgICAgIDx0aXRsZT5Xb3JraW5nIFdpdGggTGljZW5zZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQXMgbWVudGlvbmVkIGluIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjbGljZW5zaW5nJz5MaWNlbnNpbmc8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbCwKKyAgICAgICAgICAgIG9wZW4gc291cmNlIHByb2plY3RzIGFyZSBvcGVuIHRvIHRoZSBwdWJsaWMgYW5kIHRoZXkKKyAgICAgICAgICAgIGNvbnNlcXVlbnRseSBoYXZlIGRpZmZlcmVudCBsaWNlbnNpbmcgc3RydWN0dXJlcyBpbiBwbGFjZS4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdGhlIG1lY2hhbmlzbSBieSB3aGljaCB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4KKyAgICAgICAgICAgIHRyYWNrcyBjaGFuZ2VzIHRvIGxpY2Vuc2luZyB0ZXh0IGFuZCBjb3ZlcnMgaG93IHRvIG1haW50YWluIG9wZW4KKyAgICAgICAgICAgIHNvdXJjZSBsaWNlbnNlIGNvbXBsaWFuY2UgZHVyaW5nIHlvdXIgcHJvamVjdCdzIGxpZmVjeWNsZS4KKyAgICAgICAgICAgIFRoZSBzZWN0aW9uIGFsc28gZGVzY3JpYmVzIGhvdyB0byBlbmFibGUgY29tbWVyY2lhbGx5IGxpY2Vuc2VkCisgICAgICAgICAgICByZWNpcGVzLCB3aGljaCBieSBkZWZhdWx0IGFyZSBkaXNhYmxlZC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSJ1c2luZ3Bva3ktY29uZmlndXJpbmctTElDX0ZJTEVTX0NIS1NVTSI+CisgICAgICAgICAgICA8dGl0bGU+VHJhY2tpbmcgTGljZW5zZSBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGxpY2Vuc2Ugb2YgYW4gdXBzdHJlYW0gcHJvamVjdCBtaWdodCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KKyAgICAgICAgICAgICAgICBJbiBvcmRlciB0byBwcmV2ZW50IHRoZXNlIGNoYW5nZXMgZ29pbmcgdW5ub3RpY2VkLCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTElDX0ZJTEVTX0NIS1NVTSc+PGZpbGVuYW1lPkxJQ19GSUxFU19DSEtTVU08L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgdHJhY2tzIGNoYW5nZXMgdG8gdGhlIGxpY2Vuc2UgdGV4dC4gVGhlIGNoZWNrc3VtcyBhcmUKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgY29uZmlndXJlIHN0ZXAsIGFuZCBpZiB0aGUKKyAgICAgICAgICAgICAgICBjaGVja3N1bXMgZG8gbm90IG1hdGNoLCB0aGUgYnVpbGQgd2lsbCBmYWlsLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0idXNpbmdwb2t5LXNwZWNpZnlpbmctTElDX0ZJTEVTX0NIS1NVTSI+CisgICAgICAgICAgICAgICAgPHRpdGxlPlNwZWNpZnlpbmcgdGhlIDxmaWxlbmFtZT5MSUNfRklMRVNfQ0hLU1VNPC9maWxlbmFtZT4gVmFyaWFibGU8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGNvbnRhaW5zIGNoZWNrc3VtcyBvZiB0aGUgbGljZW5zZSB0ZXh0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICBzb3VyY2UgY29kZSBmb3IgdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHNwZWNpZnkKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ19GSUxFU19DSEtTVU08L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT14eHh4IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGljZmlsZTEudHh0O2JlZ2lubGluZT01O2VuZGxpbmU9Mjk7bWQ1PXl5eXkgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWNmaWxlMi50eHQ7ZW5kbGluZT01MDttZDU9enp6eiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgLi4uIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB1c2luZyAiYmVnaW5saW5lIiBhbmQgImVuZGxpbmUiLCByZWFsaXplCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgbGluZSBudW1iZXJpbmcgYmVnaW5zIHdpdGggb25lIGFuZCBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemVyby4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxzbywgdGhlIGluY2x1ZGVkIGxpbmVzIGFyZSBpbmNsdXNpdmUgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMgZml2ZSB0aHJvdWdoIGFuZCBpbmNsdWRpbmcgMjkgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzIGV4YW1wbGUgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWNmaWxlMS50eHQ8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiBhIGxpY2Vuc2UgY2hlY2sgZmFpbHMsIHRoZSBzZWxlY3RlZCBsaWNlbnNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgaXMgaW5jbHVkZWQgYXMgcGFydCBvZiB0aGUgUUEgbWVzc2FnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhpcyBvdXRwdXQsIHlvdSBjYW4gZGV0ZXJtaW5lIHRoZSBleGFjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCBhbmQgZmluaXNoIGZvciB0aGUgbmVlZGVkIGxpY2Vuc2UgdGV4dC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIHVzZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgYXMgdGhlIGRlZmF1bHQgZGlyZWN0b3J5IHdoZW4gc2VhcmNoaW5nIGZpbGVzCisgICAgICAgICAgICAgICAgICAgIGxpc3RlZCBpbiA8ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgZXhhbXBsZSBlbXBsb3lzIHRoZSBkZWZhdWx0IGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQ29uc2lkZXIgdGhpcyBuZXh0IGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjL2xzLmM7YmVnaW5saW5lPTU7ZW5kbGluZT0xNjtcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1kNT1iYjE0ZWQzYzRjZGE1ODNhYmM4NTQwMTMwNGI1Y2Q0ZSIKKyAgICAgTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtXT1JLRElSfS9saWNlbnNlLmh0bWw7bWQ1PTVjOTQ3NjdjZWRiNWQ2OTg3YzkwMmFjODUwZGVkMmM2IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmaXJzdCBsaW5lIGxvY2F0ZXMgYSBmaWxlIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1N9L3NyYy9scy5jPC9maWxlbmFtZT4gYW5kIGlzb2xhdGVzIGxpbmVzIGZpdmUKKyAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCAxNiBhcyBsaWNlbnNlIHRleHQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBzZWNvbmQgbGluZSByZWZlcnMgdG8gYSBmaWxlIGluCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE5vdGUgdGhhdCA8ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzCisgICAgICAgICAgICAgICAgICAgIG1hbmRhdG9yeSBmb3IgYWxsIHJlY2lwZXMsIHVubGVzcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ0VOU0U8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcyBzZXQgdG8gIkNMT1NFRCIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0idXNpbmdwb2t5LUxJQ19GSUxFU19DSEtTVU0tZXhwbGFuYXRpb24tb2Ytc3ludGF4Ij4KKyAgICAgICAgICAgICAgICA8dGl0bGU+RXhwbGFuYXRpb24gb2YgU3ludGF4PC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBcyBtZW50aW9uZWQgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24sIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+IHZhcmlhYmxlIGxpc3RzIGFsbAorICAgICAgICAgICAgICAgICAgICB0aGUgaW1wb3J0YW50IGZpbGVzIHRoYXQgY29udGFpbiB0aGUgbGljZW5zZSB0ZXh0IGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgc291cmNlIGNvZGUuCisgICAgICAgICAgICAgICAgICAgIEl0IGlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgYSBjaGVja3N1bSBmb3IgYW4gZW50aXJlIGZpbGUsCisgICAgICAgICAgICAgICAgICAgIG9yIGEgc3BlY2lmaWMgc2VjdGlvbiBvZiBhIGZpbGUgKHNwZWNpZmllZCBieSBiZWdpbm5pbmcgYW5kCisgICAgICAgICAgICAgICAgICAgIGVuZGluZyBsaW5lIG51bWJlcnMgd2l0aCB0aGUgImJlZ2lubGluZSIgYW5kICJlbmRsaW5lIgorICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLCByZXNwZWN0aXZlbHkpLgorICAgICAgICAgICAgICAgICAgICBUaGUgbGF0dGVyIGlzIHVzZWZ1bCBmb3Igc291cmNlIGZpbGVzIHdpdGggYSBsaWNlbnNlCisgICAgICAgICAgICAgICAgICAgIG5vdGljZSBoZWFkZXIsIFJFQURNRSBkb2N1bWVudHMsIGFuZCBzbyBmb3J0aC4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCB1c2UgdGhlICJiZWdpbmxpbmUiIHBhcmFtZXRlciwgdGhlbiBpdCBpcworICAgICAgICAgICAgICAgICAgICBhc3N1bWVkIHRoYXQgdGhlIHRleHQgYmVnaW5zIG9uIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICBTaW1pbGFybHksIGlmIHlvdSBkbyBub3QgdXNlIHRoZSAiZW5kbGluZSIgcGFyYW1ldGVyLAorICAgICAgICAgICAgICAgICAgICBpdCBpcyBhc3N1bWVkIHRoYXQgdGhlIGxpY2Vuc2UgdGV4dCBlbmRzIHdpdGggdGhlIGxhc3QKKyAgICAgICAgICAgICAgICAgICAgbGluZSBvZiB0aGUgZmlsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlICJtZDUiIHBhcmFtZXRlciBzdG9yZXMgdGhlIG1kNSBjaGVja3N1bSBvZiB0aGUgbGljZW5zZQorICAgICAgICAgICAgICAgICAgICB0ZXh0LgorICAgICAgICAgICAgICAgICAgICBJZiB0aGUgbGljZW5zZSB0ZXh0IGNoYW5nZXMgaW4gYW55IHdheSBhcyBjb21wYXJlZCB0bworICAgICAgICAgICAgICAgICAgICB0aGlzIHBhcmFtZXRlciB0aGVuIGEgbWlzbWF0Y2ggb2NjdXJzLgorICAgICAgICAgICAgICAgICAgICBUaGlzIG1pc21hdGNoIHRyaWdnZXJzIGEgYnVpbGQgZmFpbHVyZSBhbmQgbm90aWZpZXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIGRldmVsb3Blci4KKyAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uIGFsbG93cyB0aGUgZGV2ZWxvcGVyIHRvIHJldmlldyBhbmQgYWRkcmVzcworICAgICAgICAgICAgICAgICAgICB0aGUgbGljZW5zZSB0ZXh0IGNoYW5nZXMuCisgICAgICAgICAgICAgICAgICAgIEFsc28gbm90ZSB0aGF0IGlmIGEgbWlzbWF0Y2ggb2NjdXJzIGR1cmluZyB0aGUgYnVpbGQsCisgICAgICAgICAgICAgICAgICAgIHRoZSBjb3JyZWN0IG1kNSBjaGVja3N1bSBpcyBwbGFjZWQgaW4gdGhlIGJ1aWxkIGxvZyBhbmQKKyAgICAgICAgICAgICAgICAgICAgY2FuIGJlIGVhc2lseSBjb3BpZWQgdG8gdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlcmUgaXMgbm8gbGltaXQgdG8gaG93IG1hbnkgZmlsZXMgeW91IGNhbiBzcGVjaWZ5IHVzaW5nCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBHZW5lcmFsbHksIGhvd2V2ZXIsIGV2ZXJ5IHByb2plY3QgcmVxdWlyZXMgYSBmZXcKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNhdGlvbnMgZm9yIGxpY2Vuc2UgdHJhY2tpbmcuCisgICAgICAgICAgICAgICAgICAgIE1hbnkgcHJvamVjdHMgaGF2ZSBhICJDT1BZSU5HIiBmaWxlIHRoYXQgc3RvcmVzIHRoZQorICAgICAgICAgICAgICAgICAgICBsaWNlbnNlIGluZm9ybWF0aW9uIGZvciBhbGwgdGhlIHNvdXJjZSBjb2RlIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHByYWN0aWNlIGFsbG93cyB5b3UgdG8ganVzdCB0cmFjayB0aGUgIkNPUFlJTkciCisgICAgICAgICAgICAgICAgICAgIGZpbGUgYXMgbG9uZyBhcyBpdCBpcyBrZXB0IHVwIHRvIGRhdGUuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXBzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugc3BlY2lmeSBhbiBlbXB0eSBvciBpbnZhbGlkICJtZDUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJucyBhbiBtZDUgbWlzLW1hdGNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yIGFuZCBkaXNwbGF5cyB0aGUgY29ycmVjdCAibWQ1IiBwYXJhbWV0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgZHVyaW5nIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNvcnJlY3QgcGFyYW1ldGVyIGlzIGFsc28gY2FwdHVyZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIGxvZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgd2hvbGUgZmlsZSBjb250YWlucyBvbmx5IGxpY2Vuc2UgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGRvIG5vdCBuZWVkIHRvIHVzZSB0aGUgImJlZ2lubGluZSIgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZGxpbmUiIHBhcmFtZXRlcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSJlbmFibGluZy1jb21tZXJjaWFsbHktbGljZW5zZWQtcmVjaXBlcyI+CisgICAgICAgICAgICA8dGl0bGU+RW5hYmxpbmcgQ29tbWVyY2lhbGx5IExpY2Vuc2VkIFJlY2lwZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBkaXNhYmxlcworICAgICAgICAgICAgICAgIGNvbXBvbmVudHMgdGhhdCBoYXZlIGNvbW1lcmNpYWwgb3Igb3RoZXIgc3BlY2lhbCBsaWNlbnNpbmcKKyAgICAgICAgICAgICAgICByZXF1aXJlbWVudHMuCisgICAgICAgICAgICAgICAgU3VjaCByZXF1aXJlbWVudHMgYXJlIGRlZmluZWQgb24gYQorICAgICAgICAgICAgICAgIHJlY2lwZS1ieS1yZWNpcGUgYmFzaXMgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTElDRU5TRV9GTEFHUyc+PGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1M8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgZGVmaW5pdGlvbiBpbiB0aGUgYWZmZWN0ZWQgcmVjaXBlLgorICAgICAgICAgICAgICAgIEZvciBpbnN0YW5jZSwgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbHVnaW5zLXVnbHk8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHJlY2lwZSBjb250YWlucyB0aGUgZm9sbG93aW5nIHN0YXRlbWVudDoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIExJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgSGVyZSBpcyBhIHNsaWdodGx5IG1vcmUgY29tcGxpY2F0ZWQgZXhhbXBsZSB0aGF0IGNvbnRhaW5zIGJvdGgKKyAgICAgICAgICAgICAgICBhbiBleHBsaWNpdCByZWNpcGUgbmFtZSBhbmQgdmVyc2lvbiAoYWZ0ZXIgdmFyaWFibGUgZXhwYW5zaW9uKToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIExJQ0VOU0VfRkxBR1MgPSAibGljZW5zZV8ke1BOfV8ke1BWfSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisJICAgICAgICAgICAgSW4gb3JkZXIgZm9yIGEgY29tcG9uZW50IHJlc3RyaWN0ZWQgYnkgYQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTPC9maWxlbmFtZT4gZGVmaW5pdGlvbiB0byBiZSBlbmFibGVkIGFuZAorICAgICAgICAgICAgICAgIGluY2x1ZGVkIGluIGFuIGltYWdlLCBpdCBuZWVkcyB0byBoYXZlIGEgbWF0Y2hpbmcgZW50cnkgaW4gdGhlCisgICAgICAgICAgICAgICAgZ2xvYmFsCisJICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUJz48ZmlsZW5hbWU+TElDRU5TRV9GTEFHU19XSElURUxJU1Q8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUsIHdoaWNoIGlzIGEgdmFyaWFibGUgdHlwaWNhbGx5IGRlZmluZWQgaW4geW91cgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdG8gZW5hYmxlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGx1Z2lucy11Z2x5PC9maWxlbmFtZT4KKwkgICAgICAgICAgICBwYWNrYWdlLCB5b3UgY291bGQgYWRkIGVpdGhlciB0aGUgc3RyaW5nCisJICAgICAgICAgICAgImNvbW1lcmNpYWxfZ3N0LXBsdWdpbnMtdWdseSIgb3IgdGhlIG1vcmUgZ2VuZXJhbCBzdHJpbmcKKwkgICAgICAgICAgICAiY29tbWVyY2lhbCIgdG8gPGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdsaWNlbnNlLWZsYWctbWF0Y2hpbmcnPkxpY2Vuc2UgRmxhZyBNYXRjaGluZzwvbGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgYSBmdWxsCisgICAgICAgICAgICAgICAgZXhwbGFuYXRpb24gb2YgaG93IDxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTPC9maWxlbmFtZT4gbWF0Y2hpbmcKKyAgICAgICAgICAgICAgICB3b3Jrcy4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIHRoZSBleGFtcGxlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTElDRU5TRV9GTEFHU19XSElURUxJU1QgPSAiY29tbWVyY2lhbF9nc3QtcGx1Z2lucy11Z2x5IgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKwkgICAgICAgICAgICBMaWtld2lzZSwgdG8gYWRkaXRpb25hbGx5IGVuYWJsZSB0aGUgcGFja2FnZSBidWlsdCBmcm9tIHRoZQorICAgICAgICAgICAgICAgIHJlY2lwZSBjb250YWluaW5nCisJICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1MgPSAibGljZW5zZV8ke1BOfV8ke1BWfSI8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICBhbmQgYXNzdW1pbmcgdGhhdCB0aGUgYWN0dWFsIHJlY2lwZSBuYW1lIHdhcworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5lbWdkXzEuMTAuYmI8L2ZpbGVuYW1lPiwgdGhlIGZvbGxvd2luZyBzdHJpbmcgd291bGQKKyAgICAgICAgICAgICAgICBlbmFibGUgdGhhdCBwYWNrYWdlIGFzIHdlbGwgYXMgdGhlIG9yaWdpbmFsCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdzdC1wbHVnaW5zLXVnbHk8L2ZpbGVuYW1lPiBwYWNrYWdlOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTElDRU5TRV9GTEFHU19XSElURUxJU1QgPSAiY29tbWVyY2lhbF9nc3QtcGx1Z2lucy11Z2x5IGxpY2Vuc2VfZW1nZF8xLjEwIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKwkgICAgICAgICAgICBBcyBhIGNvbnZlbmllbmNlLCB5b3UgZG8gbm90IG5lZWQgdG8gc3BlY2lmeSB0aGUgY29tcGxldGUKKyAgICAgICAgICAgICAgICBsaWNlbnNlIHN0cmluZyBpbiB0aGUgd2hpdGVsaXN0IGZvciBldmVyeSBwYWNrYWdlLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIGFuIGFiYnJldmlhdGVkIGZvcm0sIHdoaWNoIGNvbnNpc3RzCisgICAgICAgICAgICAgICAgb2YganVzdCB0aGUgZmlyc3QgcG9ydGlvbiBvciBwb3J0aW9ucyBvZiB0aGUgbGljZW5zZQorICAgICAgICAgICAgICAgIHN0cmluZyBiZWZvcmUgdGhlIGluaXRpYWwgdW5kZXJzY29yZSBjaGFyYWN0ZXIgb3IgY2hhcmFjdGVycy4KKyAgICAgICAgICAgICAgICBBIHBhcnRpYWwgc3RyaW5nIHdpbGwgbWF0Y2ggYW55IGxpY2Vuc2UgdGhhdCBjb250YWlucyB0aGUKKyAgICAgICAgICAgICAgICBnaXZlbiBzdHJpbmcgYXMgdGhlIGZpcnN0IHBvcnRpb24gb2YgaXRzIGxpY2Vuc2UuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgd2hpdGVsaXN0IHN0cmluZyB3aWxsIGFsc28gbWF0Y2gKKyAgICAgICAgICAgICAgICBib3RoIG9mIHRoZSBwYWNrYWdlcyBwcmV2aW91c2x5IG1lbnRpb25lZCBhcyB3ZWxsIGFzIGFueSBvdGhlcgorICAgICAgICAgICAgICAgIHBhY2thZ2VzIHRoYXQgaGF2ZSBsaWNlbnNlcyBzdGFydGluZyB3aXRoICJjb21tZXJjaWFsIiBvcgorICAgICAgICAgICAgICAgICJsaWNlbnNlIi4KKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIExJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUID0gImNvbW1lcmNpYWwgbGljZW5zZSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJsaWNlbnNlLWZsYWctbWF0Y2hpbmciPgorICAgICAgICAgICAgICAgIDx0aXRsZT5MaWNlbnNlIEZsYWcgTWF0Y2hpbmc8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisJCSAgICAgICAgICAgIExpY2Vuc2UgZmxhZyBtYXRjaGluZyBhbGxvd3MgeW91IHRvIGNvbnRyb2wgd2hhdCByZWNpcGVzCisgICAgICAgICAgICAgICAgICAgIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGluY2x1ZGVzIGluIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgRnVuZGFtZW50YWxseSwgdGhlIGJ1aWxkIHN5c3RlbSBhdHRlbXB0cyB0byBtYXRjaAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHUzwvZmlsZW5hbWU+IHN0cmluZ3MgZm91bmQgaW4gcmVjaXBlcworICAgICAgICAgICAgICAgICAgICBhZ2FpbnN0IDxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTX1dISVRFTElTVDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHN0cmluZ3MgZm91bmQgaW4gdGhlIHdoaXRlbGlzdC4KKyAgICAgICAgICAgICAgICAgICAgQSBtYXRjaCBjYXVzZXMgdGhlIGJ1aWxkIHN5c3RlbSB0byBpbmNsdWRlIGEgcmVjaXBlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICBidWlsZCwgd2hpbGUgZmFpbHVyZSB0byBmaW5kIGEgbWF0Y2ggY2F1c2VzIHRoZSBidWlsZAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gdG8gZXhjbHVkZSBhIHJlY2lwZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgbGljZW5zZSBmbGFnIG1hdGNoaW5nIGlzIHNpbXBsZS4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdW5kZXJzdGFuZGluZyBzb21lIGNvbmNlcHRzIHdpbGwgaGVscCB5b3UKKyAgICAgICAgICAgICAgICAgICAgY29ycmVjdGx5IGFuZCBlZmZlY3RpdmVseSB1c2UgbWF0Y2hpbmcuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJlZm9yZSBhIGZsYWcKKyAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCBieSBhIHBhcnRpY3VsYXIgcmVjaXBlIGlzIHRlc3RlZCBhZ2FpbnN0IHRoZQorICAgICAgICAgICAgICAgICAgICBjb250ZW50cyBvZiB0aGUgd2hpdGVsaXN0LCB0aGUgZXhwYW5kZWQgc3RyaW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5fJHtQTn08L2ZpbGVuYW1lPiBpcyBhcHBlbmRlZCB0byB0aGUgZmxhZy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBleHBhbnNpb24gbWFrZXMgZWFjaAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHUzwvZmlsZW5hbWU+IHZhbHVlIHJlY2lwZS1zcGVjaWZpYy4KKyAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgZXhwYW5zaW9uLCB0aGUgc3RyaW5nIGlzIHRoZW4gbWF0Y2hlZCBhZ2FpbnN0IHRoZQorICAgICAgICAgICAgICAgICAgICB3aGl0ZWxpc3QuCisgICAgICAgICAgICAgICAgICAgIFRodXMsIHNwZWNpZnlpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpbiByZWNpcGUgImZvbyIsIGZvciBleGFtcGxlLCByZXN1bHRzIGluIHRoZSBzdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiJjb21tZXJjaWFsX2ZvbyI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgQW5kLCB0byBjcmVhdGUgYSBtYXRjaCwgdGhhdCBzdHJpbmcgbXVzdCBhcHBlYXIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIHdoaXRlbGlzdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSnVkaWNpb3VzIHVzZSBvZiB0aGUgPGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBzdHJpbmdzIGFuZCB0aGUgY29udGVudHMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTX1dISVRFTElTVDwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgIGFsbG93cyB5b3UgYSBsb3Qgb2YgZmxleGliaWxpdHkgZm9yIGluY2x1ZGluZyBvciBleGNsdWRpbmcKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlcyBiYXNlZCBvbiBsaWNlbnNpbmcuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgY2FuIGJyb2FkZW4gdGhlIG1hdGNoaW5nIGNhcGFiaWxpdGllcyBieQorICAgICAgICAgICAgICAgICAgICB1c2luZyBsaWNlbnNlIGZsYWdzIHN0cmluZyBzdWJzZXRzIGluIHRoZSB3aGl0ZWxpc3QuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB1c2luZyBhIHN0cmluZyBzdWJzZXQsIGJlIHN1cmUgdG8gdXNlIHRoZSBwYXJ0IG9mCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZXhwYW5kZWQgc3RyaW5nIHRoYXQgcHJlY2VkZXMgdGhlIGFwcGVuZGVkCisgICAgICAgICAgICAgICAgICAgICAgICB1bmRlcnNjb3JlIGNoYXJhY3RlciAoZS5nLgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnVzZXRoaXNwYXJ0XzEuMzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnVzZXRoaXNwYXJ0XzEuNDwvZmlsZW5hbWU+LCBhbmQgc28gZm9ydGgpLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzaW1wbHkgc3BlY2lmeWluZyB0aGUgc3RyaW5nICJjb21tZXJjaWFsIiBpbgorICAgICAgICAgICAgICAgICAgICB0aGUgd2hpdGVsaXN0IG1hdGNoZXMgYW55IGV4cGFuZGVkCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTPC9maWxlbmFtZT4gZGVmaW5pdGlvbiB0aGF0IHN0YXJ0cworICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBzdHJpbmcgImNvbW1lcmNpYWwiIHN1Y2ggYXMgImNvbW1lcmNpYWxfZm9vIiBhbmQKKyAgICAgICAgICAgICAgICAgICAgImNvbW1lcmNpYWxfYmFyIiwgd2hpY2ggYXJlIHRoZSBzdHJpbmdzIHRoZSBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBnZW5lcmF0ZXMgZm9yIGh5cG90aGV0aWNhbCByZWNpcGVzIG5hbWVkCisgICAgICAgICAgICAgICAgICAgICJmb28iIGFuZCAiYmFyIiBhc3N1bWluZyB0aG9zZSByZWNpcGVzIHNpbXBseSBzcGVjaWZ5IHRoZQorICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRodXMsIHlvdSBjYW4gY2hvb3NlIHRvIGV4aGF1c3RpdmVseQorICAgICAgICAgICAgICAgICAgICBlbnVtZXJhdGUgZWFjaCBsaWNlbnNlIGZsYWcgaW4gdGhlIHdoaXRlbGlzdCBhbmQKKyAgICAgICAgICAgICAgICAgICAgYWxsb3cgb25seSBzcGVjaWZpYyByZWNpcGVzIGludG8gdGhlIGltYWdlLCBvcgorICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIHVzZSBhIHN0cmluZyBzdWJzZXQgdGhhdCBjYXVzZXMgYSBicm9hZGVyIHJhbmdlIG9mCisgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMgdG8gYWxsb3cgYSByYW5nZSBvZiByZWNpcGVzIGludG8gdGhlIGltYWdlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHNjaGVtZSB3b3JrcyBldmVuIGlmIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHUzwvZmlsZW5hbWU+IHN0cmluZyBhbHJlYWR5CisgICAgICAgICAgICAgICAgICAgIGhhcyA8ZmlsZW5hbWU+XyR7UE59PC9maWxlbmFtZT4gYXBwZW5kZWQuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgYnVpbGQgc3lzdGVtIHR1cm5zIHRoZSBsaWNlbnNlIGZsYWcKKyAgICAgICAgICAgICAgICAgICAgImNvbW1lcmNpYWxfMS4yX2ZvbyIgaW50byAiY29tbWVyY2lhbF8xLjJfZm9vX2ZvbyIgYW5kCisgICAgICAgICAgICAgICAgICAgIHdvdWxkIG1hdGNoIGJvdGggdGhlIGdlbmVyYWwgImNvbW1lcmNpYWwiIGFuZCB0aGUgc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgImNvbW1lcmNpYWxfMS4yX2ZvbyIgc3RyaW5ncyBmb3VuZCBpbiB0aGUgd2hpdGVsaXN0LCBhcworICAgICAgICAgICAgICAgICAgICBleHBlY3RlZC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBhcmUgc29tZSBvdGhlciBzY2VuYXJpb3M6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzcGVjaWZ5IGEgdmVyc2lvbmVkIHN0cmluZyBpbiB0aGUgcmVjaXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjaCBhcyAiY29tbWVyY2lhbF9mb29fMS4yIiBpbiBhICJmb28iIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIGV4cGFuZHMgdGhpcyBzdHJpbmcgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWVyY2lhbF9mb29fMS4yX2ZvbyIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tYmluZSB0aGlzIGxpY2Vuc2UgZmxhZyB3aXRoIGEgd2hpdGVsaXN0IHRoYXQgaGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHN0cmluZyAiY29tbWVyY2lhbCIgYW5kIHlvdSBtYXRjaCB0aGUgZmxhZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsb25nIHdpdGggYW55IG90aGVyIGZsYWcgdGhhdCBzdGFydHMgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgImNvbW1lcmNpYWwiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuZGVyIHRoZSBzYW1lIGNpcmN1bXN0YW5jZXMsIHlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1lcmNpYWxfZm9vIiBpbiB0aGUgd2hpdGVsaXN0IGFuZCB0aGUgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gbm90IG9ubHkgbWF0Y2hlcyAiY29tbWVyY2lhbF9mb29fMS4yIiBidXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHNvIG1hdGNoZXMgYW55IGxpY2Vuc2UgZmxhZyB3aXRoIHRoZSBzdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWVyY2lhbF9mb28iLCByZWdhcmRsZXNzIG9mIHRoZSB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYmUgdmVyeSBzcGVjaWZpYyBhbmQgdXNlIGJvdGggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBhbmQgdmVyc2lvbiBwYXJ0cyBpbiB0aGUgd2hpdGVsaXN0IChlLmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1lcmNpYWxfZm9vXzEuMiIpIHRvIHNwZWNpZmljYWxseSBtYXRjaCBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbmVkIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ib3RoZXItdmFyaWFibGVzLXJlbGF0ZWQtdG8tY29tbWVyY2lhbC1saWNlbnNlcyI+CisgICAgICAgICAgICAgICAgPHRpdGxlPk90aGVyIFZhcmlhYmxlcyBSZWxhdGVkIHRvIENvbW1lcmNpYWwgTGljZW5zZXM8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE90aGVyIGhlbHBmdWwgdmFyaWFibGVzIHJlbGF0ZWQgdG8gY29tbWVyY2lhbAorICAgICAgICAgICAgICAgICAgICBsaWNlbnNlIGhhbmRsaW5nIGV4aXN0IGFuZCBhcmUgZGVmaW5lZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtZGlzdHJvdmFycy5pbmM8L2ZpbGVuYW1lPiBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIENPTU1FUkNJQUxfQVVESU9fUExVR0lOUyA/PSAiIgorICAgICBDT01NRVJDSUFMX1ZJREVPX1BMVUdJTlMgPz0gIiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBlbmFibGUgdGhlc2UgY29tcG9uZW50cywgeW91IGNhbiBkbyBzbyBieQorICAgICAgICAgICAgICAgICAgICBtYWtpbmcgc3VyZSB5b3UgaGF2ZSBzdGF0ZW1lbnRzIHNpbWlsYXIgdG8gdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIENPTU1FUkNJQUxfQVVESU9fUExVR0lOUyA9ICJnc3QtcGx1Z2lucy11Z2x5LW1hZCBcCisgICAgICAgIGdzdC1wbHVnaW5zLXVnbHktbXBlZ2F1ZGlvcGFyc2UiCisgICAgIENPTU1FUkNJQUxfVklERU9fUExVR0lOUyA9ICJnc3QtcGx1Z2lucy11Z2x5LW1wZWcyZGVjIFwKKyAgICAgICAgZ3N0LXBsdWdpbnMtdWdseS1tcGVnc3RyZWFtIGdzdC1wbHVnaW5zLWJhZC1tcGVndmlkZW9wYXJzZSIKKyAgICAgTElDRU5TRV9GTEFHU19XSElURUxJU1QgPSAiY29tbWVyY2lhbF9nc3QtcGx1Z2lucy11Z2x5IGNvbW1lcmNpYWxfZ3N0LXBsdWdpbnMtYmFkIGNvbW1lcmNpYWxfcW1tcCIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBPZiBjb3Vyc2UsIHlvdSBjb3VsZCBhbHNvIGNyZWF0ZSBhIG1hdGNoaW5nIHdoaXRlbGlzdAorICAgICAgICAgICAgICAgICAgICBmb3IgdGhvc2UgY29tcG9uZW50cyB1c2luZyB0aGUgbW9yZSBnZW5lcmFsICJjb21tZXJjaWFsIgorICAgICAgICAgICAgICAgICAgICBpbiB0aGUgd2hpdGVsaXN0LCBidXQgdGhhdCB3b3VsZCBhbHNvIGVuYWJsZSBhbGwgdGhlCisgICAgICAgICAgICAgICAgICAgIG90aGVyIHBhY2thZ2VzIHdpdGggPGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjb250YWluaW5nICJjb21tZXJjaWFsIiwgd2hpY2ggeW91IG1heSBvciBtYXkgbm90IHdhbnQ6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTElDRU5TRV9GTEFHU19XSElURUxJU1QgPSAiY29tbWVyY2lhbCIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZ5aW5nIGF1ZGlvIGFuZCB2aWRlbyBwbHVnLWlucyBhcyBwYXJ0IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Q09NTUVSQ0lBTF9BVURJT19QTFVHSU5TPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DT01NRVJDSUFMX1ZJREVPX1BMVUdJTlM8L2ZpbGVuYW1lPiBzdGF0ZW1lbnRzCisgICAgICAgICAgICAgICAgICAgIChhbG9uZyB3aXRoIHRoZSBlbmFibGluZworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHU19XSElURUxJU1Q8L2ZpbGVuYW1lPikgaW5jbHVkZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIHBsdWctaW5zIG9yIGNvbXBvbmVudHMgaW50byBidWlsdCBpbWFnZXMsIHRodXMgYWRkaW5nCisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQgZm9yIG1lZGlhIGZvcm1hdHMgb3IgY29tcG9uZW50cy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbWFpbnRhaW5pbmctb3Blbi1zb3VyY2UtbGljZW5zZS1jb21wbGlhbmNlLWR1cmluZy15b3VyLXByb2R1Y3RzLWxpZmVjeWNsZSc+CisgICAgICAgICAgICA8dGl0bGU+TWFpbnRhaW5pbmcgT3BlbiBTb3VyY2UgTGljZW5zZSBDb21wbGlhbmNlIER1cmluZyBZb3VyIFByb2R1Y3QncyBMaWZlY3ljbGU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBPbmUgb2YgdGhlIGNvbmNlcm5zIGZvciBhIGRldmVsb3BtZW50IG9yZ2FuaXphdGlvbiB1c2luZyBvcGVuIHNvdXJjZQorICAgICAgICAgICAgICAgIHNvZnR3YXJlIGlzIGhvdyB0byBtYWludGFpbiBjb21wbGlhbmNlIHdpdGggdmFyaW91cyBvcGVuIHNvdXJjZQorICAgICAgICAgICAgICAgIGxpY2Vuc2luZyBkdXJpbmcgdGhlIGxpZmVjeWNsZSBvZiB0aGUgcHJvZHVjdC4KKyAgICAgICAgICAgICAgICBXaGlsZSB0aGlzIHNlY3Rpb24gZG9lcyBub3QgcHJvdmlkZSBsZWdhbCBhZHZpY2Ugb3IKKyAgICAgICAgICAgICAgICBjb21wcmVoZW5zaXZlbHkgY292ZXIgYWxsIHNjZW5hcmlvcywgaXQgZG9lcworICAgICAgICAgICAgICAgIHByZXNlbnQgbWV0aG9kcyB0aGF0IHlvdSBjYW4gdXNlIHRvCisgICAgICAgICAgICAgICAgYXNzaXN0IHlvdSBpbiBtZWV0aW5nIHRoZSBjb21wbGlhbmNlIHJlcXVpcmVtZW50cyBkdXJpbmcgYSBzb2Z0d2FyZQorICAgICAgICAgICAgICAgIHJlbGVhc2UuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFdpdGggaHVuZHJlZHMgb2YgZGlmZmVyZW50IG9wZW4gc291cmNlIGxpY2Vuc2VzIHRoYXQgdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgUHJvamVjdCB0cmFja3MsIGl0IGlzIGRpZmZpY3VsdCB0byBrbm93IHRoZSByZXF1aXJlbWVudHMgb2YgZWFjaAorICAgICAgICAgICAgICAgIGFuZCBldmVyeSBsaWNlbnNlLgorICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSByZXF1aXJlbWVudHMgb2YgdGhlIG1ham9yIEZMT1NTIGxpY2Vuc2VzIGNhbiBiZWdpbgorICAgICAgICAgICAgICAgIHRvIGJlIGNvdmVyZWQgYnkKKyAgICAgICAgICAgICAgICBhc3N1bWluZyB0aGF0IHRocmVlIG1haW4gYXJlYXMgb2YgY29uY2VybiBleGlzdDoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+U291cmNlIGNvZGUgbXVzdCBiZSBwcm92aWRlZC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkxpY2Vuc2UgdGV4dCBmb3IgdGhlIHNvZnR3YXJlIG11c3QgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVkLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q29tcGlsYXRpb24gc2NyaXB0cyBhbmQgbW9kaWZpY2F0aW9ucyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBjb2RlIG11c3QgYmUgcHJvdmlkZWQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICBUaGVyZSBhcmUgb3RoZXIgcmVxdWlyZW1lbnRzIGJleW9uZCB0aGUgc2NvcGUgb2YgdGhlc2UKKyAgICAgICAgICAgICAgICB0aHJlZSBhbmQgdGhlIG1ldGhvZHMgZGVzY3JpYmVkIGluIHRoaXMgc2VjdGlvbgorICAgICAgICAgICAgICAgIChlLmcuIHRoZSBtZWNoYW5pc20gdGhyb3VnaCB3aGljaCBzb3VyY2UgY29kZSBpcyBkaXN0cmlidXRlZCkuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzIGRpZmZlcmVudCBvcmdhbml6YXRpb25zIGhhdmUgZGlmZmVyZW50IG1ldGhvZHMgb2YgY29tcGx5aW5nIHdpdGgKKyAgICAgICAgICAgICAgICBvcGVuIHNvdXJjZSBsaWNlbnNpbmcsIHRoaXMgc2VjdGlvbiBpcyBub3QgbWVhbnQgdG8gaW1wbHkgdGhhdAorICAgICAgICAgICAgICAgIHRoZXJlIGlzIG9ubHkgb25lIHNpbmdsZSB3YXkgdG8gbWVldCB5b3VyIGNvbXBsaWFuY2Ugb2JsaWdhdGlvbnMsCisgICAgICAgICAgICAgICAgYnV0IHJhdGhlciB0byBkZXNjcmliZSBvbmUgbWV0aG9kIG9mIGFjaGlldmluZyBjb21wbGlhbmNlLgorICAgICAgICAgICAgICAgIFRoZSByZW1haW5kZXIgb2YgdGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBtZXRob2RzIHN1cHBvcnRlZCB0byBtZWV0IHRoZQorICAgICAgICAgICAgICAgIHByZXZpb3VzbHkgbWVudGlvbmVkIHRocmVlIHJlcXVpcmVtZW50cy4KKyAgICAgICAgICAgICAgICBPbmNlIHlvdSB0YWtlIHN0ZXBzIHRvIG1lZXQgdGhlc2UgcmVxdWlyZW1lbnRzLAorICAgICAgICAgICAgICAgIGFuZCBwcmlvciB0byByZWxlYXNpbmcgaW1hZ2VzLCBzb3VyY2VzLCBhbmQgdGhlIGJ1aWxkIHN5c3RlbSwKKyAgICAgICAgICAgICAgICB5b3Ugc2hvdWxkIGF1ZGl0IGFsbCBhcnRpZmFjdHMgdG8gZW5zdXJlIGNvbXBsZXRlbmVzcy4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgZ2VuZXJhdGVzIGEgbGljZW5zZSBtYW5pZmVzdCBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgaW1hZ2UgY3JlYXRpb24gdGhhdCBpcyBsb2NhdGVkCisgICAgICAgICAgICAgICAgICAgIGluIDxmaWxlbmFtZT4ke0RFUExPWV9ESVJ9L2xpY2Vuc2VzLzxyZXBsYWNlYWJsZT5pbWFnZV9uYW1lLWRhdGVzdGFtcDwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdG8gYXNzaXN0IHdpdGggYW55IGF1ZGl0cy4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdwcm92aWRpbmctdGhlLXNvdXJjZS1jb2RlJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+UHJvdmlkaW5nIHRoZSBTb3VyY2UgQ29kZTwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQ29tcGxpYW5jZSBhY3Rpdml0aWVzIHNob3VsZCBiZWdpbiBiZWZvcmUgeW91IGdlbmVyYXRlIHRoZQorICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpcnN0IHRoaW5nIHlvdSBzaG91bGQgbG9vayBhdCBpcyB0aGUgcmVxdWlyZW1lbnQgdGhhdAorICAgICAgICAgICAgICAgICAgICB0b3BzIHRoZSBsaXN0IGZvciBtb3N0IGNvbXBsaWFuY2UgZ3JvdXBzIC0gcHJvdmlkaW5nCisgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UuCisgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGhhcyBhIGZldyB3YXlzIG9mIG1lZXRpbmcgdGhpcworICAgICAgICAgICAgICAgICAgICByZXF1aXJlbWVudC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgT25lIG9mIHRoZSBlYXNpZXN0IHdheXMgdG8gbWVldCB0aGlzIHJlcXVpcmVtZW50IGlzCisgICAgICAgICAgICAgICAgICAgIHRvIHByb3ZpZGUgdGhlIGVudGlyZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRExfRElSJz48ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB1c2VkIGJ5IHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBtZXRob2QsIGhvd2V2ZXIsIGhhcyBhIGZldyBpc3N1ZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBtb3N0IG9idmlvdXMgaXMgdGhlIHNpemUgb2YgdGhlIGRpcmVjdG9yeSBzaW5jZSBpdCBpbmNsdWRlcworICAgICAgICAgICAgICAgICAgICBhbGwgc291cmNlcyB1c2VkIGluIHRoZSBidWlsZCBhbmQgbm90IGp1c3QgdGhlIHNvdXJjZSB1c2VkIGluCisgICAgICAgICAgICAgICAgICAgIHRoZSByZWxlYXNlZCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgSXQgd2lsbCBpbmNsdWRlIHRvb2xjaGFpbiBzb3VyY2UsIGFuZCBvdGhlciBhcnRpZmFjdHMsIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIHlvdSB3b3VsZCBub3QgZ2VuZXJhbGx5IHJlbGVhc2UuCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBtb3JlIHNlcmlvdXMgaXNzdWUgZm9yIG1vc3QgY29tcGFuaWVzIGlzIGFjY2lkZW50YWwKKyAgICAgICAgICAgICAgICAgICAgcmVsZWFzZSBvZiBwcm9wcmlldGFyeSBzb2Z0d2FyZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgcHJvdmlkZXMgYW4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtYXJjaGl2ZXInPjxmaWxlbmFtZT5hcmNoaXZlcjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MgdG8gaGVscCBhdm9pZCBzb21lIG9mIHRoZXNlIGNvbmNlcm5zLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCZWZvcmUgeW91IGVtcGxveSA8ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT4gb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hcmNoaXZlcjwvZmlsZW5hbWU+IGNsYXNzLCB5b3UgbmVlZCB0byBkZWNpZGUgaG93CisgICAgICAgICAgICAgICAgICAgIHlvdSBjaG9vc2UgdG8gcHJvdmlkZSBzb3VyY2UuCisgICAgICAgICAgICAgICAgICAgIFRoZSBzb3VyY2UgPGZpbGVuYW1lPmFyY2hpdmVyPC9maWxlbmFtZT4gY2xhc3MgY2FuIGdlbmVyYXRlCisgICAgICAgICAgICAgICAgICAgIHRhcmJhbGxzIGFuZCBTUlBNcyBhbmQgY2FuIGNyZWF0ZSB0aGVtIHdpdGggdmFyaW91cyBsZXZlbHMgb2YKKyAgICAgICAgICAgICAgICAgICAgY29tcGxpYW5jZSBpbiBtaW5kLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBPbmUgd2F5IG9mIGRvaW5nIHRoaXMgKGJ1dCBjZXJ0YWlubHkgbm90IHRoZSBvbmx5IHdheSkgaXMgdG8KKyAgICAgICAgICAgICAgICAgICAgcmVsZWFzZSBqdXN0IHRoZSBzb3VyY2UgYXMgYSB0YXJiYWxsLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGRvIHRoaXMgYnkgYWRkaW5nIHRoZSBmb2xsb3dpbmcgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBJTkhFUklUICs9ICJhcmNoaXZlciIKICAgICAgQVJDSElWRVJfTU9ERVtzcmNdID0gIm9yaWdpbmFsIgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBEdXJpbmcgdGhlIGNyZWF0aW9uIG9mIHlvdXIgaW1hZ2UsIHRoZSBzb3VyY2UgZnJvbSBhbGwKLSAgICAgICAgICAgICAgICByZWNpcGVzIHRoYXQgZGVwbG95IHBhY2thZ2VzIHRvIHRoZSBpbWFnZSBpcyBwbGFjZWQgd2l0aGluCi0gICAgICAgICAgICAgICAgc3ViZGlyZWN0b3JpZXMgb2YKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+REVQTE9ZX0RJUi9zb3VyY2VzPC9maWxlbmFtZT4gYmFzZWQgb24gdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJQ0VOU0UnPjxmaWxlbmFtZT5MSUNFTlNFPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIGZvciBlYWNoIHJlY2lwZS4KLSAgICAgICAgICAgICAgICBSZWxlYXNpbmcgdGhlIGVudGlyZSBkaXJlY3RvcnkgZW5hYmxlcyB5b3UgdG8gY29tcGx5IHdpdGgKLSAgICAgICAgICAgICAgICByZXF1aXJlbWVudHMgY29uY2VybmluZyBwcm92aWRpbmcgdGhlIHVubW9kaWZpZWQgc291cmNlLgotICAgICAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIHNpemUgb2YgdGhlIGRpcmVjdG9yeSBjYW4KLSAgICAgICAgICAgICAgICBnZXQgbGFyZ2UuCi0gICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgRHVyaW5nIHRoZSBjcmVhdGlvbiBvZiB5b3VyIGltYWdlLCB0aGUgc291cmNlIGZyb20gYWxsCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMgdGhhdCBkZXBsb3kgcGFja2FnZXMgdG8gdGhlIGltYWdlIGlzIHBsYWNlZCB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgc3ViZGlyZWN0b3JpZXMgb2YKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkRFUExPWV9ESVIvc291cmNlczwvZmlsZW5hbWU+IGJhc2VkIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTElDRU5TRSc+PGZpbGVuYW1lPkxJQ0VOU0U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGZvciBlYWNoIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgUmVsZWFzaW5nIHRoZSBlbnRpcmUgZGlyZWN0b3J5IGVuYWJsZXMgeW91IHRvIGNvbXBseSB3aXRoCisgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVtZW50cyBjb25jZXJuaW5nIHByb3ZpZGluZyB0aGUgdW5tb2RpZmllZCBzb3VyY2UuCisgICAgICAgICAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIHNpemUgb2YgdGhlIGRpcmVjdG9yeSBjYW4KKyAgICAgICAgICAgICAgICAgICAgZ2V0IGxhcmdlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQSB3YXkgdG8gaGVscCBtaXRpZ2F0ZSB0aGUgc2l6ZSBpc3N1ZSBpcyB0byBvbmx5IHJlbGVhc2UKLSAgICAgICAgICAgICAgICB0YXJiYWxscyBmb3IgbGljZW5zZXMgdGhhdCByZXF1aXJlIHRoZSByZWxlYXNlIG9mCi0gICAgICAgICAgICAgICAgc291cmNlLgotICAgICAgICAgICAgICAgIExldCB1cyBhc3N1bWUgeW91IGFyZSBvbmx5IGNvbmNlcm5lZCB3aXRoIEdQTCBjb2RlIGFzCi0gICAgICAgICAgICAgICAgaWRlbnRpZmllZCBieSBydW5uaW5nIHRoZSBmb2xsb3dpbmcgc2NyaXB0OgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQSB3YXkgdG8gaGVscCBtaXRpZ2F0ZSB0aGUgc2l6ZSBpc3N1ZSBpcyB0byBvbmx5IHJlbGVhc2UKKyAgICAgICAgICAgICAgICAgICAgdGFyYmFsbHMgZm9yIGxpY2Vuc2VzIHRoYXQgcmVxdWlyZSB0aGUgcmVsZWFzZSBvZgorICAgICAgICAgICAgICAgICAgICBzb3VyY2UuCisgICAgICAgICAgICAgICAgICAgIExldCB1cyBhc3N1bWUgeW91IGFyZSBvbmx5IGNvbmNlcm5lZCB3aXRoIEdQTCBjb2RlIGFzCisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZWQgYnkgcnVubmluZyB0aGUgZm9sbG93aW5nIHNjcmlwdDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAjIFNjcmlwdCB0byBhcmNoaXZlIGEgc3Vic2V0IG9mIHBhY2thZ2VzIG1hdGNoaW5nIHNwZWNpZmljIGxpY2Vuc2UocykKICAgICAgIyBTb3VyY2UgYW5kIGxpY2Vuc2UgZmlsZXMgYXJlIGNvcGllZCBpbnRvIHN1YiBmb2xkZXJzIG9mIHBhY2thZ2UgZm9sZGVyCiAgICAgICMgTXVzdCBiZSBydW4gZnJvbSBidWlsZCBmb2xkZXIKQEAgLTEwNTE1LDk2ICsxNDk0MSw5NyBAQAogICAgICAgICAgICAgICBjcCB0bXAvZGVwbG95L2xpY2Vuc2VzLyRwLyogJHNyY19yZWxlYXNlX2Rpci8kcC9saWNlbnNlIDI+IC9kZXYvbnVsbAogICAgICAgICAgICBmaQogICAgICAgICBkb25lCi0gICAgIGRvbmUgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIEF0IHRoaXMgcG9pbnQsIHlvdSBjb3VsZCBjcmVhdGUgYSB0YXJiYWxsIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdwbF9zb3VyY2VfcmVsZWFzZTwvZmlsZW5hbWU+IGRpcmVjdG9yeSBhbmQKLSAgICAgICAgICAgICAgICBwcm92aWRlIHRoYXQgdG8gdGhlIGVuZCB1c2VyLgotICAgICAgICAgICAgICAgIFRoaXMgbWV0aG9kIHdvdWxkIGJlIGEgc3RlcCB0b3dhcmQgYWNoaWV2aW5nIGNvbXBsaWFuY2UKLSAgICAgICAgICAgICAgICB3aXRoIHNlY3Rpb24gM2Egb2YgR1BMdjIgYW5kIHdpdGggc2VjdGlvbiA2IG9mIEdQTHYzLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+CisgICAgIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB5b3UgY291bGQgY3JlYXRlIGEgdGFyYmFsbCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3BsX3NvdXJjZV9yZWxlYXNlPC9maWxlbmFtZT4gZGlyZWN0b3J5IGFuZAorICAgICAgICAgICAgICAgICAgICBwcm92aWRlIHRoYXQgdG8gdGhlIGVuZCB1c2VyLgorICAgICAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCB3b3VsZCBiZSBhIHN0ZXAgdG93YXJkIGFjaGlldmluZyBjb21wbGlhbmNlCisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VjdGlvbiAzYSBvZiBHUEx2MiBhbmQgd2l0aCBzZWN0aW9uIDYgb2YgR1BMdjMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgIDxzZWN0aW9uIGlkPSdwcm92aWRpbmctbGljZW5zZS10ZXh0Jz4KLSAgICAgICAgICAgIDx0aXRsZT5Qcm92aWRpbmcgTGljZW5zZSBUZXh0PC90aXRsZT4KKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdwcm92aWRpbmctbGljZW5zZS10ZXh0Jz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+UHJvdmlkaW5nIExpY2Vuc2UgVGV4dDwvdGl0bGU+CiAKLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIE9uZSByZXF1aXJlbWVudCB0aGF0IGlzIG9mdGVuIG92ZXJsb29rZWQgaXMgaW5jbHVzaW9uCi0gICAgICAgICAgICAgICAgb2YgbGljZW5zZSB0ZXh0LgotICAgICAgICAgICAgICAgIFRoaXMgcmVxdWlyZW1lbnQgYWxzbyBuZWVkcyB0byBiZSBkZWFsdCB3aXRoIHByaW9yIHRvCi0gICAgICAgICAgICAgICAgZ2VuZXJhdGluZyB0aGUgZmluYWwgaW1hZ2UuCi0gICAgICAgICAgICAgICAgU29tZSBsaWNlbnNlcyByZXF1aXJlIHRoZSBsaWNlbnNlIHRleHQgdG8gYWNjb21wYW55Ci0gICAgICAgICAgICAgICAgdGhlIGJpbmFyeS4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIGFjaGlldmUgdGhpcyBieSBhZGRpbmcgdGhlIGZvbGxvd2luZyB0byB5b3VyCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgT25lIHJlcXVpcmVtZW50IHRoYXQgaXMgb2Z0ZW4gb3Zlcmxvb2tlZCBpcyBpbmNsdXNpb24KKyAgICAgICAgICAgICAgICAgICAgb2YgbGljZW5zZSB0ZXh0LgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlcXVpcmVtZW50IGFsc28gbmVlZHMgdG8gYmUgZGVhbHQgd2l0aCBwcmlvciB0bworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0aW5nIHRoZSBmaW5hbCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgU29tZSBsaWNlbnNlcyByZXF1aXJlIHRoZSBsaWNlbnNlIHRleHQgdG8gYWNjb21wYW55CisgICAgICAgICAgICAgICAgICAgIHRoZSBiaW5hcnkuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWNoaWV2ZSB0aGlzIGJ5IGFkZGluZyB0aGUgZm9sbG93aW5nIHRvIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIENPUFlfTElDX01BTklGRVNUID0gIjEiCiAgICAgIENPUFlfTElDX0RJUlMgPSAiMSIKICAgICAgTElDRU5TRV9DUkVBVEVfUEFDS0FHRSA9ICIxIgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBBZGRpbmcgdGhlc2Ugc3RhdGVtZW50cyB0byB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGVuc3VyZXMKLSAgICAgICAgICAgICAgICB0aGF0IHRoZSBsaWNlbnNlcyBjb2xsZWN0ZWQgZHVyaW5nIHBhY2thZ2UgZ2VuZXJhdGlvbgotICAgICAgICAgICAgICAgIGFyZSBpbmNsdWRlZCBvbiB5b3VyIGltYWdlLgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICA8cGFyYT5TZXR0aW5nIGFsbCB0aHJlZSB2YXJpYWJsZXMgdG8gIjEiIHJlc3VsdHMgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIGltYWdlIGhhdmluZyB0d28gY29waWVzIG9mIHRoZSBzYW1lIGxpY2Vuc2UgZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgT25lIGNvcHkgcmVzaWRlcyBpbgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3Vzci9zaGFyZS9jb21tb24tbGljZW5zZXM8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICAgICAgdGhlIG90aGVyIHJlc2lkZXMgaW4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3Ivc2hhcmUvbGljZW5zZTwvZmlsZW5hbWU+LjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBBZGRpbmcgdGhlc2Ugc3RhdGVtZW50cyB0byB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGVuc3VyZXMKKyAgICAgICAgICAgICAgICAgICAgdGhhdCB0aGUgbGljZW5zZXMgY29sbGVjdGVkIGR1cmluZyBwYWNrYWdlIGdlbmVyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgYXJlIGluY2x1ZGVkIG9uIHlvdXIgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+U2V0dGluZyBhbGwgdGhyZWUgdmFyaWFibGVzIHRvICIxIiByZXN1bHRzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgaGF2aW5nIHR3byBjb3BpZXMgb2YgdGhlIHNhbWUgbGljZW5zZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgT25lIGNvcHkgcmVzaWRlcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3Ivc2hhcmUvY29tbW9uLWxpY2Vuc2VzPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgb3RoZXIgcmVzaWRlcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3Ivc2hhcmUvbGljZW5zZTwvZmlsZW5hbWU+LjwvcGFyYT4KIAotICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgcmVhc29uIGZvciB0aGlzIGJlaGF2aW9yIGlzIGJlY2F1c2UKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNPUFlfTElDX0RJUlMnPjxmaWxlbmFtZT5DT1BZX0xJQ19ESVJTPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNPUFlfTElDX01BTklGRVNUJz48ZmlsZW5hbWU+Q09QWV9MSUNfTUFOSUZFU1Q8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIGFkZCBhIGNvcHkgb2YgdGhlIGxpY2Vuc2Ugd2hlbiB0aGUgaW1hZ2UgaXMgYnVpbHQgYnV0IGRvCi0gICAgICAgICAgICAgICAgICAgIG5vdCBvZmZlciBhIHBhdGggZm9yIGFkZGluZyBsaWNlbnNlcyBmb3IgbmV3bHkgaW5zdGFsbGVkCi0gICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIHRvIGFuIGltYWdlLgotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTElDRU5TRV9DUkVBVEVfUEFDS0FHRSc+PGZpbGVuYW1lPkxJQ0VOU0VfQ1JFQVRFX1BBQ0tBR0U8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIGFkZHMgYSBzZXBhcmF0ZSBwYWNrYWdlIGFuZCBhbiB1cGdyYWRlIHBhdGggZm9yIGFkZGluZwotICAgICAgICAgICAgICAgICAgICBsaWNlbnNlcyB0byBhbiBpbWFnZS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIHJlYXNvbiBmb3IgdGhpcyBiZWhhdmlvciBpcyBiZWNhdXNlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ09QWV9MSUNfRElSUyc+PGZpbGVuYW1lPkNPUFlfTElDX0RJUlM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DT1BZX0xJQ19NQU5JRkVTVCc+PGZpbGVuYW1lPkNPUFlfTElDX01BTklGRVNUPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgYWRkIGEgY29weSBvZiB0aGUgbGljZW5zZSB3aGVuIHRoZSBpbWFnZSBpcyBidWlsdCBidXQgZG8KKyAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBvZmZlciBhIHBhdGggZm9yIGFkZGluZyBsaWNlbnNlcyBmb3IgbmV3bHkgaW5zdGFsbGVkCisgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyB0byBhbiBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MSUNFTlNFX0NSRUFURV9QQUNLQUdFJz48ZmlsZW5hbWU+TElDRU5TRV9DUkVBVEVfUEFDS0FHRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZHMgYSBzZXBhcmF0ZSBwYWNrYWdlIGFuZCBhbiB1cGdyYWRlIHBhdGggZm9yIGFkZGluZworICAgICAgICAgICAgICAgICAgICAgICAgbGljZW5zZXMgdG8gYW4gaW1hZ2UuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBBcyB0aGUgc291cmNlIDxmaWxlbmFtZT5hcmNoaXZlcjwvZmlsZW5hbWU+IGNsYXNzIGhhcyBhbHJlYWR5Ci0gICAgICAgICAgICAgICAgYXJjaGl2ZWQgdGhlIG9yaWdpbmFsCi0gICAgICAgICAgICAgICAgdW5tb2RpZmllZCBzb3VyY2UgdGhhdCBjb250YWlucyB0aGUgbGljZW5zZSBmaWxlcywKLSAgICAgICAgICAgICAgICB5b3Ugd291bGQgaGF2ZSBhbHJlYWR5IG1ldCB0aGUgcmVxdWlyZW1lbnRzIGZvciBpbmNsdXNpb24KLSAgICAgICAgICAgICAgICBvZiB0aGUgbGljZW5zZSBpbmZvcm1hdGlvbiB3aXRoIHNvdXJjZSBhcyBkZWZpbmVkIGJ5IHRoZSBHUEwKLSAgICAgICAgICAgICAgICBhbmQgb3RoZXIgb3BlbiBzb3VyY2UgbGljZW5zZXMuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQXMgdGhlIHNvdXJjZSA8ZmlsZW5hbWU+YXJjaGl2ZXI8L2ZpbGVuYW1lPiBjbGFzcyBoYXMgYWxyZWFkeQorICAgICAgICAgICAgICAgICAgICBhcmNoaXZlZCB0aGUgb3JpZ2luYWwKKyAgICAgICAgICAgICAgICAgICAgdW5tb2RpZmllZCBzb3VyY2UgdGhhdCBjb250YWlucyB0aGUgbGljZW5zZSBmaWxlcywKKyAgICAgICAgICAgICAgICAgICAgeW91IHdvdWxkIGhhdmUgYWxyZWFkeSBtZXQgdGhlIHJlcXVpcmVtZW50cyBmb3IgaW5jbHVzaW9uCisgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBsaWNlbnNlIGluZm9ybWF0aW9uIHdpdGggc291cmNlIGFzIGRlZmluZWQgYnkgdGhlIEdQTAorICAgICAgICAgICAgICAgICAgICBhbmQgb3RoZXIgb3BlbiBzb3VyY2UgbGljZW5zZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgIDxzZWN0aW9uIGlkPSdwcm92aWRpbmctY29tcGlsYXRpb24tc2NyaXB0cy1hbmQtc291cmNlLWNvZGUtbW9kaWZpY2F0aW9ucyc+Ci0gICAgICAgICAgICA8dGl0bGU+UHJvdmlkaW5nIENvbXBpbGF0aW9uIFNjcmlwdHMgYW5kIFNvdXJjZSBDb2RlIE1vZGlmaWNhdGlvbnM8L3RpdGxlPgorICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3Byb3ZpZGluZy1jb21waWxhdGlvbi1zY3JpcHRzLWFuZC1zb3VyY2UtY29kZS1tb2RpZmljYXRpb25zJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+UHJvdmlkaW5nIENvbXBpbGF0aW9uIFNjcmlwdHMgYW5kIFNvdXJjZSBDb2RlIE1vZGlmaWNhdGlvbnM8L3RpdGxlPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlIGFkZHJlc3NlZCBhbGwgd2UgbmVlZCB0bwotICAgICAgICAgICAgICAgIHByaW9yIHRvIGdlbmVyYXRpbmcgdGhlIGltYWdlLgotICAgICAgICAgICAgICAgIFRoZSBuZXh0IHR3byByZXF1aXJlbWVudHMgYXJlIGFkZHJlc3NlZCBkdXJpbmcgdGhlIGZpbmFsCi0gICAgICAgICAgICAgICAgcGFja2FnaW5nIG9mIHRoZSByZWxlYXNlLgotICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlIGFkZHJlc3NlZCBhbGwgd2UgbmVlZCB0bworICAgICAgICAgICAgICAgICAgICBwcmlvciB0byBnZW5lcmF0aW5nIHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG5leHQgdHdvIHJlcXVpcmVtZW50cyBhcmUgYWRkcmVzc2VkIGR1cmluZyB0aGUgZmluYWwKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnaW5nIG9mIHRoZSByZWxlYXNlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQnkgcmVsZWFzaW5nIHRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCi0gICAgICAgICAgICAgICAgYW5kIHRoZSBsYXllcnMgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkLCB5b3Ugd2lsbCBiZSBwcm92aWRpbmcgYm90aAotICAgICAgICAgICAgICAgIGNvbXBpbGF0aW9uIHNjcmlwdHMgYW5kIHRoZSBzb3VyY2UgY29kZSBtb2RpZmljYXRpb25zIGluIG9uZQotICAgICAgICAgICAgICAgIHN0ZXAuCi0gICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJ5IHJlbGVhc2luZyB0aGUgdmVyc2lvbiBvZiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIGxheWVycyB1c2VkIGR1cmluZyB0aGUgYnVpbGQsIHlvdSB3aWxsIGJlIHByb3ZpZGluZyBib3RoCisgICAgICAgICAgICAgICAgICAgIGNvbXBpbGF0aW9uIHNjcmlwdHMgYW5kIHRoZSBzb3VyY2UgY29kZSBtb2RpZmljYXRpb25zIGluIG9uZQorICAgICAgICAgICAgICAgICAgICBzdGVwLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSWYgdGhlIGRlcGxveW1lbnQgdGVhbSBoYXMgYQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1sYXllcnMnPkJTUCBsYXllcjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgYW5kIGEgZGlzdHJvIGxheWVyLCBhbmQgdGhvc2UgdGhvc2UgbGF5ZXJzIGFyZSB1c2VkIHRvIHBhdGNoLAotICAgICAgICAgICAgICAgIGNvbXBpbGUsIHBhY2thZ2UsIG9yIG1vZGlmeSAoaW4gYW55IHdheSkgYW55IG9wZW4gc291cmNlCi0gICAgICAgICAgICAgICAgc29mdHdhcmUgaW5jbHVkZWQgaW4geW91ciByZWxlYXNlZCBpbWFnZXMsIHlvdQotICAgICAgICAgICAgICAgIG1pZ2h0IGJlIHJlcXVpcmVkIHRvIHJlbGVhc2UgdGhvc2UgbGF5ZXJzIHVuZGVyIHNlY3Rpb24gMyBvZgotICAgICAgICAgICAgICAgIEdQTHYyIG9yIHNlY3Rpb24gMSBvZiBHUEx2My4KLSAgICAgICAgICAgICAgICBPbmUgd2F5IG9mIGRvaW5nIHRoYXQgaXMgd2l0aCBhIGNsZWFuCi0gICAgICAgICAgICAgICAgY2hlY2tvdXQgb2YgdGhlIHZlcnNpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgYW5kIGxheWVycyB1c2VkCi0gICAgICAgICAgICAgICAgZHVyaW5nIHlvdXIgYnVpbGQuCi0gICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGRlcGxveW1lbnQgdGVhbSBoYXMgYQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNic3AtbGF5ZXJzJz5CU1AgbGF5ZXI8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQgYSBkaXN0cm8gbGF5ZXIsIGFuZCB0aG9zZSB0aG9zZSBsYXllcnMgYXJlIHVzZWQgdG8gcGF0Y2gsCisgICAgICAgICAgICAgICAgICAgIGNvbXBpbGUsIHBhY2thZ2UsIG9yIG1vZGlmeSAoaW4gYW55IHdheSkgYW55IG9wZW4gc291cmNlCisgICAgICAgICAgICAgICAgICAgIHNvZnR3YXJlIGluY2x1ZGVkIGluIHlvdXIgcmVsZWFzZWQgaW1hZ2VzLCB5b3UKKyAgICAgICAgICAgICAgICAgICAgbWlnaHQgYmUgcmVxdWlyZWQgdG8gcmVsZWFzZSB0aG9zZSBsYXllcnMgdW5kZXIgc2VjdGlvbiAzIG9mCisgICAgICAgICAgICAgICAgICAgIEdQTHYyIG9yIHNlY3Rpb24gMSBvZiBHUEx2My4KKyAgICAgICAgICAgICAgICAgICAgT25lIHdheSBvZiBkb2luZyB0aGF0IGlzIHdpdGggYSBjbGVhbgorICAgICAgICAgICAgICAgICAgICBjaGVja291dCBvZiB0aGUgdmVyc2lvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBhbmQgbGF5ZXJzIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHlvdXIgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAjIFdlIGJ1aWx0IHVzaW5nIHRoZSAmRElTVFJPX05BTUVfTk9fQ0FQOyBicmFuY2ggb2YgdGhlIHBva3kgcmVwbwogICAgICAkIGdpdCBjbG9uZSAtYiAmRElTVFJPX05BTUVfTk9fQ0FQOyBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5CiAgICAgICQgY2QgcG9reQpAQCAtMTA2MTMsMTggKzE1MDQwLDE4IEBACiAgICAgICQgZ2l0IGNsb25lIC1iIHJlbGVhc2VfYnJhbmNoIGdpdDovL2dpdC5teWNvbXBhbnkuY29tL21ldGEtbXktc29mdHdhcmUtbGF5ZXIKICAgICAgIyBjbGVhbiB1cCB0aGUgLmdpdCByZXBvcwogICAgICAkIGZpbmQgLiAtbmFtZSAiLmdpdCIgLXR5cGUgZCAtZXhlYyBybSAtcmYge30gXDsKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgT25lIHRoaW5nIGEgZGV2ZWxvcG1lbnQgb3JnYW5pemF0aW9uIG1pZ2h0IHdhbnQgdG8gY29uc2lkZXIKLSAgICAgICAgICAgICAgICBmb3IgZW5kLXVzZXIgY29udmVuaWVuY2UgaXMgdG8gbW9kaWZ5Ci0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mL2JibGF5ZXJzLmNvbmYuc2FtcGxlPC9maWxlbmFtZT4gdG8KLSAgICAgICAgICAgICAgICBlbnN1cmUgdGhhdCB3aGVuIHRoZSBlbmQgdXNlciB1dGlsaXplcyB0aGUgcmVsZWFzZWQgYnVpbGQKLSAgICAgICAgICAgICAgICBzeXN0ZW0gdG8gYnVpbGQgYW4gaW1hZ2UsIHRoZSBkZXZlbG9wbWVudCBvcmdhbml6YXRpb24ncwotICAgICAgICAgICAgICAgIGxheWVycyBhcmUgaW5jbHVkZWQgaW4gdGhlIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBmaWxlIGF1dG9tYXRpY2FsbHk6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAjIExBWUVSX0NPTkZfVkVSU0lPTiBpcyBpbmNyZWFzZWQgZWFjaCB0aW1lIGJ1aWxkL2NvbmYvYmJsYXllcnMuY29uZgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIE9uZSB0aGluZyBhIGRldmVsb3BtZW50IG9yZ2FuaXphdGlvbiBtaWdodCB3YW50IHRvIGNvbnNpZGVyCisgICAgICAgICAgICAgICAgICAgIGZvciBlbmQtdXNlciBjb252ZW5pZW5jZSBpcyB0byBtb2RpZnkKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mL2JibGF5ZXJzLmNvbmYuc2FtcGxlPC9maWxlbmFtZT4gdG8KKyAgICAgICAgICAgICAgICAgICAgZW5zdXJlIHRoYXQgd2hlbiB0aGUgZW5kIHVzZXIgdXRpbGl6ZXMgdGhlIHJlbGVhc2VkIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSB0byBidWlsZCBhbiBpbWFnZSwgdGhlIGRldmVsb3BtZW50IG9yZ2FuaXphdGlvbidzCisgICAgICAgICAgICAgICAgICAgIGxheWVycyBhcmUgaW5jbHVkZWQgaW4gdGhlIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBhdXRvbWF0aWNhbGx5OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICMgUE9LWV9CQkxBWUVSU19DT05GX1ZFUlNJT04gaXMgaW5jcmVhc2VkIGVhY2ggdGltZSBidWlsZC9jb25mL2JibGF5ZXJzLmNvbmYKICAgICAgIyBjaGFuZ2VzIGluY29tcGF0aWJseQotICAgICBMQ09ORl9WRVJTSU9OID0gIjYiCisgICAgIFBPS1lfQkJMQVlFUlNfQ09ORl9WRVJTSU9OID0gIjIiCiAKICAgICAgQkJQQVRIID0gIiR7VE9QRElSfSIKICAgICAgQkJGSUxFUyA/PSAiIgpAQCAtMTA2MzUsMTQgKzE1MDYyLDE1IEBACiAgICAgICAgIyNPRVJPT1QjIy9tZXRhLXlvY3RvLWJzcCBcCiAgICAgICAgIyNPRVJPT1QjIy9tZXRhLW15bGF5ZXIgXAogICAgICAgICIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgQ3JlYXRpbmcgYW5kIHByb3ZpZGluZyBhbiBhcmNoaXZlIG9mIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgbGF5ZXJzIChyZWNpcGVzLCBjb25maWd1cmF0aW9uIGZpbGVzLCBhbmQgc28gZm9ydGgpCi0gICAgICAgICAgICAgICAgZW5hYmxlcyB5b3UgdG8gbWVldCB5b3VyCi0gICAgICAgICAgICAgICAgcmVxdWlyZW1lbnRzIHRvIGluY2x1ZGUgdGhlIHNjcmlwdHMgdG8gY29udHJvbCBjb21waWxhdGlvbgotICAgICAgICAgICAgICAgIGFzIHdlbGwgYXMgYW55IG1vZGlmaWNhdGlvbnMgdG8gdGhlIG9yaWdpbmFsIHNvdXJjZS4KLSAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBDcmVhdGluZyBhbmQgcHJvdmlkaW5nIGFuIGFyY2hpdmUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGxheWVycyAocmVjaXBlcywgY29uZmlndXJhdGlvbiBmaWxlcywgYW5kIHNvIGZvcnRoKQorICAgICAgICAgICAgICAgICAgICBlbmFibGVzIHlvdSB0byBtZWV0IHlvdXIKKyAgICAgICAgICAgICAgICAgICAgcmVxdWlyZW1lbnRzIHRvIGluY2x1ZGUgdGhlIHNjcmlwdHMgdG8gY29udHJvbCBjb21waWxhdGlvbgorICAgICAgICAgICAgICAgICAgICBhcyB3ZWxsIGFzIGFueSBtb2RpZmljYXRpb25zIHRvIHRoZSBvcmlnaW5hbCBzb3VyY2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICA8L3NlY3Rpb24+CiAgICAgPC9zZWN0aW9uPgogCkBAIC0xMDc2MSw2ICsxNTE4OSwxMzYgQEAKICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogICAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0iZGV2LXVzaW5nLXdheWxhbmQtYW5kLXdlc3RvbiI+CisgICAgICAgIDx0aXRsZT5Vc2luZyBXYXlsYW5kIGFuZCBXZXN0b248L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XYXlsYW5kXyhkaXNwbGF5X3NlcnZlcl9wcm90b2NvbCknPldheWxhbmQ8L3VsaW5rPgorICAgICAgICAgICAgaXMgYSBjb21wdXRlciBkaXNwbGF5IHNlcnZlciBwcm90b2NvbCB0aGF0CisgICAgICAgICAgICBwcm92aWRlcyBhIG1ldGhvZCBmb3IgY29tcG9zaXRpbmcgd2luZG93IG1hbmFnZXJzIHRvIGNvbW11bmljYXRlCisgICAgICAgICAgICBkaXJlY3RseSB3aXRoIGFwcGxpY2F0aW9ucyBhbmQgdmlkZW8gaGFyZHdhcmUgYW5kIGV4cGVjdHMgdGhlbSB0bworICAgICAgICAgICAgY29tbXVuaWNhdGUgd2l0aCBpbnB1dCBoYXJkd2FyZSB1c2luZyBvdGhlciBsaWJyYXJpZXMuCisgICAgICAgICAgICBVc2luZyBXYXlsYW5kIHdpdGggc3VwcG9ydGluZyB0YXJnZXRzIGNhbiByZXN1bHQgaW4gYmV0dGVyIGNvbnRyb2wKKyAgICAgICAgICAgIG92ZXIgZ3JhcGhpY3MgZnJhbWUgcmVuZGVyaW5nIHRoYW4gYW4gYXBwbGljYXRpb24gbWlnaHQgb3RoZXJ3aXNlCisgICAgICAgICAgICBhY2hpZXZlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcyB0aGUgV2F5bGFuZCBwcm90b2NvbCBsaWJyYXJpZXMgYW5kIHRoZQorICAgICAgICAgICAgcmVmZXJlbmNlCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dheWxhbmRfKGRpc3BsYXlfc2VydmVyX3Byb3RvY29sKSNXZXN0b24nPldlc3RvbjwvdWxpbms+CisgICAgICAgICAgICBjb21wb3NpdG9yIGFzIHBhcnQgb2YgaXRzIHJlbGVhc2UuCisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlIGludGVncmF0ZWQgcGFja2FnZXMgaW4gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+IGxheWVyIG9mIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgU3BlY2lmaWNhbGx5LCB5b3UgY2FuIGZpbmQgdGhlIHJlY2lwZXMgdGhhdCBidWlsZCBib3RoIFdheWxhbmQKKyAgICAgICAgICAgIGFuZCBXZXN0b24gYXQgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kPC9maWxlbmFtZT4uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gYnVpbGQgYm90aCB0aGUgV2F5bGFuZCBhbmQgV2VzdG9uIHBhY2thZ2VzIGZvciB1c2Ugb25seQorICAgICAgICAgICAgd2l0aCB0YXJnZXRzIHRoYXQgYWNjZXB0IHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWVzYV8oY29tcHV0ZXJfZ3JhcGhpY3MpJz5NZXNhIDNEIGFuZCBEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJlPC91bGluaz4sCisgICAgICAgICAgICB3aGljaCBpcyBhbHNvIGtub3duIGFzIE1lc2EgRFJJLgorICAgICAgICAgICAgVGhpcyBpbXBsaWVzIHRoYXQgeW91IGNhbm5vdCBidWlsZCBhbmQgdXNlIHRoZSBwYWNrYWdlcyBpZiB5b3VyCisgICAgICAgICAgICB0YXJnZXQgdXNlcywgZm9yIGV4YW1wbGUsIHRoZQorICAgICAgICAgICAgPHRyYWRlbWFyayBjbGFzcz0ncmVnaXN0ZXJlZCc+SW50ZWw8L3RyYWRlbWFyaz4gRW1iZWRkZWQgTWVkaWEKKyAgICAgICAgICAgIGFuZCBHcmFwaGljcyBEcml2ZXIKKyAgICAgICAgICAgICg8dHJhZGVtYXJrIGNsYXNzPSdyZWdpc3RlcmVkJz5JbnRlbDwvdHJhZGVtYXJrPiBFTUdEKSB0aGF0CisgICAgICAgICAgICBvdmVycmlkZXMgTWVzYSBEUkkuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBEdWUgdG8gbGFjayBvZiBFR0wgc3VwcG9ydCwgV2VzdG9uIDEuMC4zIHdpbGwgbm90IHJ1bgorICAgICAgICAgICAgICAgIGRpcmVjdGx5IG9uIHRoZSBlbXVsYXRlZCBRRU1VIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoaXMgdmVyc2lvbiBvZiBXZXN0b24gd2lsbCBydW4gdW5kZXIgWCBlbXVsYXRpb24KKyAgICAgICAgICAgICAgICB3aXRob3V0IGlzc3Vlcy4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB3aGF0IHlvdSBuZWVkIHRvIGRvIHRvIGltcGxlbWVudCBXYXlsYW5kIGFuZAorICAgICAgICAgICAgdXNlIHRoZSBXZXN0b24gY29tcG9zaXRvciB3aGVuIGJ1aWxkaW5nIGFuIGltYWdlIGZvciBhIHN1cHBvcnRpbmcKKyAgICAgICAgICAgIHRhcmdldC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSJlbmFibGluZy13YXlsYW5kLWluLWFuLWltYWdlIj4KKyAgICAgICAgICAgIDx0aXRsZT5FbmFibGluZyBXYXlsYW5kIGluIGFuIEltYWdlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gZW5hYmxlIFdheWxhbmQsIHlvdSBuZWVkIHRvIGVuYWJsZSBpdCB0byBiZSBidWlsdCBhbmQgZW5hYmxlCisgICAgICAgICAgICAgICAgaXQgdG8gYmUgaW5jbHVkZWQgKGluc3RhbGxlZCkgaW4gdGhlIGltYWdlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0iZW5hYmxlLWJ1aWxkaW5nIj4KKyAgICAgICAgICAgICAgICA8dGl0bGU+QnVpbGRpbmc8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIGNhdXNlIE1lc2EgdG8gYnVpbGQgdGhlIDxmaWxlbmFtZT53YXlsYW5kLWVnbDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtIGFuZCBXZXN0b24gdG8gYnVpbGQgV2F5bGFuZCB3aXRoIEtlcm5lbCBNb2RlCisgICAgICAgICAgICAgICAgICAgIFNldHRpbmcKKyAgICAgICAgICAgICAgICAgICAgKDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS5hcmNobGludXgub3JnL2luZGV4LnBocC9LZXJuZWxfTW9kZV9TZXR0aW5nJz5LTVM8L3VsaW5rPikKKyAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCwgaW5jbHVkZSB0aGUgIndheWxhbmQiIGZsYWcgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9IiZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ESVNUUk9fRkVBVFVSRVMiPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudCBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBESVNUUk9fRkVBVFVSRVNfYXBwZW5kID0gIiB3YXlsYW5kIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgWDExIGhhcyBiZWVuIGVuYWJsZWQgZWxzZXdoZXJlLCBXZXN0b24gd2lsbCBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgV2F5bGFuZCB3aXRoIFgxMSBzdXBwb3J0CisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSJlbmFibGUtaW5zdGFsbGF0aW9uLWluLWFuLWltYWdlIj4KKyAgICAgICAgICAgICAgICA8dGl0bGU+SW5zdGFsbGluZzwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVG8gaW5zdGFsbCB0aGUgV2F5bGFuZCBmZWF0dXJlIGludG8gYW4gaW1hZ2UsIHlvdSBtdXN0CisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ09SRV9JTUFHRV9FWFRSQV9JTlNUQUxMJz48ZmlsZW5hbWU+Q09SRV9JTUFHRV9FWFRSQV9JTlNUQUxMPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQgaW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQ09SRV9JTUFHRV9FWFRSQV9JTlNUQUxMICs9ICJ3YXlsYW5kIHdlc3RvbiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSJydW5uaW5nLXdlc3RvbiI+CisgICAgICAgICAgICA8dGl0bGU+UnVubmluZyBXZXN0b248L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUbyBydW4gV2VzdG9uIGluc2lkZSBYMTEsIGVuYWJsaW5nIGl0IGFzIGRlc2NyaWJlZCBlYXJsaWVyIGFuZAorICAgICAgICAgICAgICAgIGJ1aWxkaW5nIGEgU2F0byBpbWFnZSBpcyBzdWZmaWNpZW50LgorICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgcnVubmluZyB5b3VyIGltYWdlIHVuZGVyIFNhdG8sIGEgV2VzdG9uIExhdW5jaGVyCisgICAgICAgICAgICAgICAgYXBwZWFycyBpbiB0aGUgIlV0aWxpdHkiIGNhdGVnb3J5LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHJ1biBXZXN0b24gdGhyb3VnaCB0aGUgY29tbWFuZC1saW5lCisgICAgICAgICAgICAgICAgaW50ZXJwcmV0b3IgKENMSSksIHdoaWNoIGlzIGJldHRlciBzdWl0ZWQgZm9yIGRldmVsb3BtZW50IHdvcmsuCisgICAgICAgICAgICAgICAgVG8gcnVuIFdlc3RvbiB1bmRlciB0aGUgQ0xJLCB5b3UgbmVlZCB0byBkbyB0aGUgZm9sbG93aW5nIGFmdGVyCisgICAgICAgICAgICAgICAgeW91ciBpbWFnZSBpcyBidWlsdDoKKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFJ1biB0aGVzZSBjb21tYW5kcyB0byBleHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5YREdfUlVOVElNRV9ESVI8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgbWtkaXIgLXAgL3RtcC8kVVNFUi13ZXN0b24KKyAgICAgY2htb2QgMDcwMCAvdG1wLyRVU0VSLXdlc3RvbgorICAgICBleHBvcnQgWERHX1JVTlRJTUVfRElSPS90bXAvJFVTRVItd2VzdG9uCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgTGF1bmNoIFdlc3RvbiBpbiB0aGUgc2hlbGw6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIHdlc3RvbgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CiA8L2NoYXB0ZXI+CiAKIDwhLS0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1pbnRyby54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtaW50cm8ueG1sCmluZGV4IDQ3YzgwMDYuLmY0NTdjODAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1pbnRyby54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLWludHJvLnhtbApAQCAtMTYsMzMgKzE2LDI5IEBACiAgICAgICAgICAgICBUaGUgbWFudWFsIGdyb3VwcyByZWxhdGVkIHByb2NlZHVyZXMgaW50byBoaWdoZXItbGV2ZWwgc2VjdGlvbnMuCiAgICAgICAgICAgICBQcm9jZWR1cmVzIGNhbiBjb25zaXN0IG9mIGhpZ2gtbGV2ZWwgc3RlcHMgb3IgbG93LWxldmVsIHN0ZXBzCiAgICAgICAgICAgICBkZXBlbmRpbmcgb24gdGhlIHRvcGljLgotICAgICAgICAgICAgWW91IGNhbiBmaW5kIGNvbmNlcHR1YWwgaW5mb3JtYXRpb24gcmVsYXRlZCB0byBhIHByb2NlZHVyZSBieQotICAgICAgICAgICAgZm9sbG93aW5nIGFwcHJvcHJpYXRlIGxpbmtzIHRvIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZQotICAgICAgICAgICAgTWFudWFsLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgZGVzY3JpYmVzIHdoYXQgeW91IGNhbiBnZXQgZnJvbSB0aGlzIG1hbnVhbDoKICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0dXAgUHJvY2VkdXJlczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBQcm9jZWR1cmVzIHRoYXQgc2hvdyB5b3UgaG93IHRvIHNldAotICAgICAgICAgICAgICAgICAgICB1cCBhIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgYW5kIGhvdwotICAgICAgICAgICAgICAgICAgICB0byBhY2NvbXBsaXNoIHRoZSBjaGFuZ2Ugd29ya2Zsb3cgdGhyb3VnaCBsb2dnaW5nCi0gICAgICAgICAgICAgICAgICAgIGRlZmVjdHMgYW5kIHN1Ym1pdHRpbmcgY2hhbmdlcy4KKyAgICAgICAgICAgICAgICAgICAgUHJvY2VkdXJlcyB0aGF0IGhlbHAgeW91IGdldCBnb2luZyB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgcHJvY2VkdXJlcyB0aGF0IHNob3cgeW91IGhvdyB0byBzZXQgdXAKKyAgICAgICAgICAgICAgICAgICAgYSBidWlsZCBob3N0IGFuZCB3b3JrIHdpdGggdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgc291cmNlIHJlcG9zaXRvcmllcy4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RW11bGF0aW9uIFByb2NlZHVyZXM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgUHJvY2VkdXJlcyB0aGF0IHNob3cgeW91IGhvdyB0byB1c2UgdGhlCi0gICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgaW50ZWdyYXRlZCBRdWlja0VNVWxhdG9yIChRRU1VKSwgd2hpY2ggbGV0cwotICAgICAgICAgICAgICAgICAgICB5b3Ugc2ltdWxhdGUgcnVubmluZyBvbiBoYXJkd2FyZSBhbiBpbWFnZSB5b3UgaGF2ZSBidWlsdAotICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgUHJvY2VkdXJlcyB0aGF0IHNob3cgeW91IGhvdyB0byBzdWJtaXQgY2hhbmdlcyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgQ2hhbmdlcyBjYW4gYmUgaW1wcm92ZW1lbnRzLCBuZXcgZmVhdHVyZXMsIG9yIGJ1ZworICAgICAgICAgICAgICAgICAgICBmaXhlcy4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29tbW9uIFByb2NlZHVyZXM6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgUHJvY2VkdXJlcyByZWxhdGVkIHRvICJldmVyeWRheSIgdGFza3MgeW91IHBlcmZvcm0gd2hpbGUKICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcGluZyBpbWFnZXMgYW5kIGFwcGxpY2F0aW9ucyB1c2luZyB0aGUgWW9jdG8KICAgICAgICAgICAgICAgICAgICAgUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHByb2NlZHVyZXMgdG8gY3JlYXRlIGEgbGF5ZXIsIGN1c3RvbWl6ZSBhbgorICAgICAgICAgICAgICAgICAgICBpbWFnZSwgd3JpdGUgYSBuZXcgcmVjaXBlLCBhbmQgc28gZm9ydGguCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgIDwvcGFyYT4KQEAgLTUxLDcgKzQ3LDcgQEAKICAgICAgICAgICAgIFRoaXMgbWFudWFsIHdpbGwgbm90IGdpdmUgeW91IHRoZSBmb2xsb3dpbmc6CiAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJlZHVuZGFudCBTdGVwLWJ5LXN0ZXAgSW5zdHJ1Y3Rpb25zOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFJlZHVuZGFudCBTdGVwLWJ5LXN0ZXAgSW5zdHJ1Y3Rpb25zOgogICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7Jz5Zb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgbWFudWFsIGNvbnRhaW5zIGRldGFpbGVkIGluc3RydWN0aW9ucyBvbiBob3cgdG8gaW5zdGFsbCBhbgpAQCAtNTksMTQgKzU1LDE1IEBACiAgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SZWZlcmVuY2Ugb3IgQ29uY2VwdHVhbCBNYXRlcmlhbDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBUaGlzIHR5cGUgb2YgbWF0ZXJpYWwgcmVzaWRlcyBpbiBhbiBhcHByb3ByaWF0ZSByZWZlcmVuY2UgbWFudWFsLgorICAgICAgICAgICAgICAgICAgICBSZWZlcmVuY2Ugb3IgQ29uY2VwdHVhbCBNYXRlcmlhbDoKKyAgICAgICAgICAgICAgICAgICAgVGhpcyB0eXBlIG9mIG1hdGVyaWFsIHJlc2lkZXMgaW4gYW4gYXBwcm9wcmlhdGUgcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgIG1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN5c3RlbSB2YXJpYWJsZXMgYXJlIGRvY3VtZW50ZWQgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7Jz5Zb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWw8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RGV0YWlsZWQgUHVibGljIEluZm9ybWF0aW9uIE5vdCBTcGVjaWZpYyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBEZXRhaWxlZCBQdWJsaWMgSW5mb3JtYXRpb24gTm90IFNwZWNpZmljIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0OgogICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgZXhoYXVzdGl2ZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZQogICAgICAgICAgICAgICAgICAgICBTb3VyY2UgQ29udHJvbCBNYW5hZ2VyIEdpdCBpcyBiZXR0ZXIgY292ZXJlZCB3aXRoIEludGVybmV0CiAgICAgICAgICAgICAgICAgICAgIHNlYXJjaGVzIGFuZCBvZmZpY2lhbCBHaXQgRG9jdW1lbnRhdGlvbiB0aGFuIHRocm91Z2ggdGhlCkBAIC04NSw5ICs4MiwxMCBAQAogICAgICAgICAgICAgY29tcHJlaGVuc2lvbi4KICAgICAgICAgICAgIEZvciBpbnRyb2R1Y3RvcnkgaW5mb3JtYXRpb24gb24gdGhlIFlvY3RvIFByb2plY3QsIHNlZSB0aGUKICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsnPllvY3RvIFByb2plY3QgV2Vic2l0ZTwvdWxpbms+LgotICAgICAgICAgICAgWW91IGNhbiBmaW5kIGFuIGludHJvZHVjdG9yeSB0byB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCBieSB3b3JraW5nCi0gICAgICAgICAgICB0aHJvdWdoIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyc+WW9jdG8gUHJvamVjdCBRdWljayBTdGFydDwvdWxpbms+LgorICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gYnVpbGQgYW4gaW1hZ2Ugd2l0aCBubyBrbm93bGVkZ2Ugb2YgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgYXMgYSB3YXkgb2YgcXVpY2tseSB0ZXN0aW5nIGl0IG91dCwgc2VlIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlJJRUZfVVJMOyc+WW9jdG8gUHJvamVjdCBRdWljayBCdWlsZDwvdWxpbms+CisgICAgICAgICAgICBkb2N1bWVudC4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLW5ld2JpZS54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtbmV3YmllLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBmYmI0Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtbmV3YmllLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDk4OSArMCwwIEBACi08IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCi0iaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgotWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgotCi08Y2hhcHRlciBpZD0nZGV2LW1hbnVhbC1uZXdiaWUnPgotCi08dGl0bGU+VGhlIFlvY3RvIFByb2plY3QgT3BlbiBTb3VyY2UgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQ8L3RpdGxlPgotCi08c2VjdGlvbiBpZD0idXNpbmdwb2t5LWNoYW5nZXMtY29sbGFib3JhdGUiPgotICAgIDx0aXRsZT5TZXR0aW5nIFVwIGEgVGVhbSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50PC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBJdCBtaWdodCBub3QgYmUgaW1tZWRpYXRlbHkgY2xlYXIgaG93IHlvdSBjYW4gdXNlIHRoZSBZb2N0bwotICAgICAgICBQcm9qZWN0IGluIGEgdGVhbSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCwgb3Igc2NhbGUgaXQgZm9yIGEgbGFyZ2UKLSAgICAgICAgdGVhbSBvZiBkZXZlbG9wZXJzLgotICAgICAgICBPbmUgb2YgdGhlIHN0cmVuZ3RocyBvZiB0aGUgWW9jdG8gUHJvamVjdCBpcyB0aGF0IGl0IGlzIGV4dHJlbWVseQotICAgICAgICBmbGV4aWJsZS4KLSAgICAgICAgVGh1cywgeW91IGNhbiBhZGFwdCBpdCB0byBtYW55IGRpZmZlcmVudCB1c2UgY2FzZXMgYW5kIHNjZW5hcmlvcy4KLSAgICAgICAgSG93ZXZlciwgdGhlc2UgY2hhcmFjdGVyaXN0aWNzIGNhbiBjYXVzZSBhIHN0cnVnZ2xlIGlmIHlvdSBhcmUgdHJ5aW5nCi0gICAgICAgIHRvIGNyZWF0ZSBhIHdvcmtpbmcgc2V0dXAgdGhhdCBzY2FsZXMgYWNyb3NzIGEgbGFyZ2UgdGVhbS4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVG8gaGVscCB5b3UgdW5kZXJzdGFuZCBob3cgdG8gc2V0IHVwIHRoaXMgdHlwZSBvZiBlbnZpcm9ubWVudCwKLSAgICAgICAgdGhpcyBzZWN0aW9uIHByZXNlbnRzIGEgcHJvY2VkdXJlIHRoYXQgZ2l2ZXMgeW91IHRoZSBpbmZvcm1hdGlvbgotICAgICAgICB0byBsZWFybiBob3cgdG8gZ2V0IHRoZSByZXN1bHRzIHlvdSB3YW50LgotICAgICAgICBUaGUgcHJvY2VkdXJlIGlzIGhpZ2gtbGV2ZWwgYW5kIHByZXNlbnRzIHNvbWUgb2YgdGhlIHByb2plY3QncyBtb3N0Ci0gICAgICAgIHN1Y2Nlc3NmdWwgZXhwZXJpZW5jZXMsIHByYWN0aWNlcywgc29sdXRpb25zLCBhbmQgYXZhaWxhYmxlCi0gICAgICAgIHRlY2hub2xvZ2llcyB0aGF0IHdvcmsgd2VsbC4KLSAgICAgICAgS2VlcCBpbiBtaW5kLCB0aGUgcHJvY2VkdXJlIGhlcmUgaXMgYSBzdGFydGluZyBwb2ludC4KLSAgICAgICAgWW91IGNhbiBidWlsZCBvZmYgaXQgYW5kIGN1c3RvbWl6ZSBpdCB0byBmaXQgYW55Ci0gICAgICAgIHBhcnRpY3VsYXIgd29ya2luZyBlbnZpcm9ubWVudCBhbmQgc2V0IG9mIHByYWN0aWNlcy4KLSAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXRlcm1pbmUgV2hvIGlzIEdvaW5nIHRvIGJlIERldmVsb3Bpbmc6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byB1bmRlcnN0YW5kIHdobyBpcyBnb2luZyB0byBiZSBkb2luZyBhbnl0aGluZwotICAgICAgICAgICAgICAgIHJlbGF0ZWQgdG8gdGhlIFlvY3RvIFByb2plY3QgYW5kIHdoYXQgdGhlaXIgcm9sZXMgd291bGQgYmUuCi0gICAgICAgICAgICAgICAgTWFraW5nIHRoaXMgZGV0ZXJtaW5hdGlvbiBpcyBlc3NlbnRpYWwgdG8gY29tcGxldGluZyB0aGUKLSAgICAgICAgICAgICAgICBzdGVwcyB0d28gYW5kIHRocmVlLCB3aGljaCBhcmUgdG8gZ2V0IHlvdXIgZXF1aXBtZW50IHRvZ2V0aGVyCi0gICAgICAgICAgICAgICAgYW5kIHNldCB1cCB5b3VyIGRldmVsb3BtZW50IGVudmlyb25tZW50J3MgaGFyZHdhcmUgdG9wb2xvZ3kuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyByb2xlcyBleGlzdDoKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QXBwbGljYXRpb24gRGV2ZWxvcG1lbnQ6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIHR5cGVzIG9mIGRldmVsb3BlcnMgZG8gYXBwbGljYXRpb24gbGV2ZWwgd29yawotICAgICAgICAgICAgICAgICAgICAgICAgb24gdG9wIG9mIGFuIGV4aXN0aW5nIHNvZnR3YXJlIHN0YWNrLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db3JlIFN5c3RlbSBEZXZlbG9wbWVudDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgdHlwZXMgb2YgZGV2ZWxvcGVycyB3b3JrIG9uIHRoZSBjb250ZW50cyBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGluZyBzeXN0ZW0gaW1hZ2UgaXRzZWxmLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCBFbmdpbmVlcjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0eXBlIG9mIGRldmVsb3BlciBtYW5hZ2VzIEF1dG9idWlsZGVycyBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgTm90IGFsbCBlbnZpcm9ubWVudHMgbmVlZCBhIEJ1aWxkIEVuZ2luZWVyLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5UZXN0IEVuZ2luZWVyOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHR5cGUgb2YgZGV2ZWxvcGVyIGNyZWF0ZXMgYW5kIG1hbmFnZXMgYXV0b21hdGVkCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cyBuZWVkZWQgdG8gZW5zdXJlIGFsbCBhcHBsaWNhdGlvbiBhbmQgY29yZQotICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIGRldmVsb3BtZW50IG1lZXRzIGRlc2lyZWQgcXVhbGl0eSBzdGFuZGFyZHMuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+R2F0aGVyIHRoZSBIYXJkd2FyZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEJhc2VkIG9uIHRoZSBzaXplIGFuZCBtYWtlLXVwIG9mIHRoZSB0ZWFtLCBnZXQgdGhlIGhhcmR3YXJlCi0gICAgICAgICAgICAgICAgdG9nZXRoZXIuCi0gICAgICAgICAgICAgICAgQW55IGRldmVsb3BtZW50LCBidWlsZCwgb3IgdGVzdCBlbmdpbmVlciBzaG91bGQgYmUgdXNpbmcKLSAgICAgICAgICAgICAgICBhIHN5c3RlbSB0aGF0IGlzIHJ1bm5pbmcgYSBzdXBwb3J0ZWQgTGludXggZGlzdHJpYnV0aW9uLgotICAgICAgICAgICAgICAgIFN5c3RlbXMsIGluIGdlbmVyYWwsIHNob3VsZCBiZSBoaWdoIHBlcmZvcm1hbmNlIChlLmcuIGR1YWwsCi0gICAgICAgICAgICAgICAgc2l4LWNvcmUgWGVvbnMgd2l0aCAyNCBHYnl0ZXMgb2YgUkFNIGFuZCBwbGVudHkgb2YgZGlzayBzcGFjZSkuCi0gICAgICAgICAgICAgICAgWW91IGNhbiBoZWxwIGVuc3VyZSBlZmZpY2llbmN5IGJ5IGhhdmluZyBhbnkgbWFjaGluZXMgdXNlZAotICAgICAgICAgICAgICAgIGZvciB0ZXN0aW5nIG9yIHRoYXQgcnVuIEF1dG9idWlsZGVycyBiZSBhcyBoaWdoIHBlcmZvcm1hbmNlCi0gICAgICAgICAgICAgICAgYXMgcG9zc2libGUuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVuZGVyc3RhbmQgdGhlIEhhcmR3YXJlIFRvcG9sb2d5IG9mIHRoZSBFbnZpcm9ubWVudDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIE5vdyB0aGF0IHlvdSBrbm93IGhvdyBtYW55IGRldmVsb3BlcnMgYW5kIHN1cHBvcnQgZW5naW5lZXJzCi0gICAgICAgICAgICAgICAgYXJlIHJlcXVpcmVkLCB5b3UgY2FuIHVuZGVyc3RhbmQgdGhlIHRvcG9sb2d5IG9mIHRoZQotICAgICAgICAgICAgICAgIGhhcmR3YXJlIGVudmlyb25tZW50LgotICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZmlndXJlIHNob3dzIGEgbW9kZXJhdGVseSBzaXplZCBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCi0KLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJ3cml0ZXJub3RlcyI+Ci0gICAgICAgICAgICAgICAgTmVlZCBmaWd1cmUuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVzZSBHaXQgYXMgWW91ciBTb3VyY2UgQ29udHJvbCBNYW5hZ2VyIChTQ00pOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgS2VlcGluZyB5b3VyCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjbWV0YWRhdGEnPk1ldGFkYXRhPC91bGluaz4KLSAgICAgICAgICAgICAgICBhbmQgYW55IHNvZnR3YXJlIHlvdSBhcmUgZGV2ZWxvcGluZyB1bmRlciB0aGUKLSAgICAgICAgICAgICAgICBjb250cm9sIG9mIGFuIFNDTSBzeXN0ZW0gdGhhdCBpcyBjb21wYXRpYmxlCi0gICAgICAgICAgICAgICAgd2l0aCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBpcyBhZHZpc2FibGUuCi0gICAgICAgICAgICAgICAgT2YgdGhlIFNDTXMgQml0QmFrZSBzdXBwb3J0cywgdGhlCi0gICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCB0ZWFtIHN0cm9uZ2x5IHJlY29tbWVuZHMgdXNpbmcKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNnaXQnPkdpdDwvdWxpbms+LgotICAgICAgICAgICAgICAgIEdpdCBpcyBhIGRpc3RyaWJ1dGVkIHN5c3RlbSB0aGF0IGlzIGVhc3kgdG8gYmFja3VwLAotICAgICAgICAgICAgICAgIGFsbG93cyB5b3UgdG8gd29yayByZW1vdGVseSwgYW5kIHRoZW4gY29ubmVjdHMgYmFjayB0byB0aGUKLSAgICAgICAgICAgICAgICBpbmZyYXN0cnVjdHVyZS4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIGFib3V0IEJpdEJha2UsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyc+Qml0QmFrZSBVc2VyIE1hbnVhbDwvdWxpbms+LgotICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5JdCBpcyByZWxhdGl2ZWx5IGVhc3kgdG8gc2V0IHVwIEdpdCBzZXJ2aWNlcyBhbmQgY3JlYXRlCi0gICAgICAgICAgICAgICAgaW5mcmFzdHJ1Y3R1cmUgbGlrZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+aHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnPC91bGluaz4sCi0gICAgICAgICAgICAgICAgd2hpY2ggaXMgYmFzZWQgb24gc2VydmVyIHNvZnR3YXJlIGNhbGxlZAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXRvbGl0ZTwvZmlsZW5hbWU+IHdpdGggPGZpbGVuYW1lPmNnaXQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGJlaW5nIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHdlYiBpbnRlcmZhY2UgdGhhdCBsZXRzIHlvdSB2aWV3IHRoZQotICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcy4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmdpdG9saXRlPC9maWxlbmFtZT4gc29mdHdhcmUgaWRlbnRpZmllcyB1c2VycwotICAgICAgICAgICAgICAgIHVzaW5nIFNTSCBrZXlzIGFuZCBhbGxvd3MgYnJhbmNoLWJhc2VkCi0gICAgICAgICAgICAgICAgYWNjZXNzIGNvbnRyb2xzIHRvIHJlcG9zaXRvcmllcyB0aGF0IHlvdSBjYW4gY29udHJvbCBhcyBsaXR0bGUKLSAgICAgICAgICAgICAgICBvciBhcyBtdWNoIGFzIG5lY2Vzc2FyeS4KLQotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgIFRoZSBzZXR1cCBvZiB0aGVzZSBzZXJ2aWNlcyBpcyBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoaXMKLSAgICAgICAgICAgICAgICAgICBtYW51YWwuCi0gICAgICAgICAgICAgICAgICAgSG93ZXZlciwgc2l0ZXMgc3VjaCBhcyB0aGVzZSBleGlzdCB0aGF0IGRlc2NyaWJlIGhvdyB0bwotICAgICAgICAgICAgICAgICAgIHBlcmZvcm0gc2V0dXA6Ci0gICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC1zY20uY29tL2Jvb2svY2g0LTguaHRtbCc+R2l0IGRvY3VtZW50YXRpb248L3VsaW5rPjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaWJlcyBob3cgdG8gaW5zdGFsbCA8ZmlsZW5hbWU+Z2l0b2xpdGU8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gdGhlIHNlcnZlci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vc2l0YXJhbWMuZ2l0aHViLmNvbS9naXRvbGl0ZS9tYXN0ZXItdG9jLmh0bWwnPlRoZSA8ZmlsZW5hbWU+Z2l0b2xpdGU8L2ZpbGVuYW1lPiBtYXN0ZXIgaW5kZXg8L3VsaW5rPjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGwgdG9waWNzIGZvciA8ZmlsZW5hbWU+Z2l0b2xpdGU8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0ludGVyZmFjZXMsX2Zyb250ZW5kcyxfYW5kX3Rvb2xzJz5JbnRlcmZhY2VzLCBmcm9udGVuZHMsIGFuZCB0b29sczwvdWxpbms+OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gb24gaG93IHRvIGNyZWF0ZSBpbnRlcmZhY2VzIGFuZCBmcm9udGVuZHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgR2l0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCB1cCB0aGUgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgTWFjaGluZXM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBBcyBtZW50aW9uZWQgZWFybGllciwgYXBwbGljYXRpb24gZGV2ZWxvcGVycyBhcmUgY3JlYXRpbmcKLSAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbnMgb24gdG9wIG9mIGV4aXN0aW5nIHNvZnR3YXJlIHN0YWNrcy4KLSAgICAgICAgICAgICAgICBGb2xsb3dpbmcgYXJlIHNvbWUgYmVzdCBwcmFjdGljZXMgZm9yIHNldHRpbmcgdXAgbWFjaGluZXMKLSAgICAgICAgICAgICAgICB0aGF0IGRvIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50OgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBhIHByZS1idWlsdCB0b29sY2hhaW4gdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgdGhlIHNvZnR3YXJlIHN0YWNrIGl0c2VsZi4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZW4sIGRldmVsb3AgdGhlIGFwcGxpY2F0aW9uIGNvZGUgb24gdG9wIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2suCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCB3b3JrcyB3ZWxsIGZvciBzbWFsbCBudW1iZXJzIG9mIHJlbGF0aXZlbHkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzb2xhdGVkIGFwcGxpY2F0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHBvc3NpYmxlLCB1c2UgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgIHBsdWctaW4gZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz4gSURFCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgU0RLIGRldmVsb3BtZW50IHByYWN0aWNlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBLZWVwIHlvdXIgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWlucyB1cGRhdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBkbyB0aGlzIHRocm91Z2ggcHJvdmlzaW9uaW5nIGVpdGhlciBhcyBuZXcKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xjaGFpbiBkb3dubG9hZHMgb3IgYXMgdXBkYXRlcyB0aHJvdWdoIGEgcGFja2FnZQotICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlIG1lY2hhbmlzbSB1c2luZyA8ZmlsZW5hbWU+b3BrZzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICB0byBwcm92aWRlIHVwZGF0ZXMgdG8gYW4gZXhpc3RpbmcgdG9vbGNoYWluLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGV4YWN0IG1lY2hhbmljcyBvZiBob3cgYW5kIHdoZW4gdG8gZG8gdGhpcyBhcmUgYQotICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb24gZm9yIGxvY2FsIHBvbGljeS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBVc2UgbXVsdGlwbGUgdG9vbGNoYWlucyBpbnN0YWxsZWQgbG9jYWxseQotICAgICAgICAgICAgICAgICAgICAgICAgaW50byBkaWZmZXJlbnQgbG9jYXRpb25zIHRvIGFsbG93IGRldmVsb3BtZW50IGFjcm9zcwotICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbnMuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IHVwIHRoZSBDb3JlIERldmVsb3BtZW50IE1hY2hpbmVzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgQXMgbWVudGlvbmVkIGVhcmxpZXIsIHRoZXNlIHR5cGVzIG9mIGRldmVsb3BlcnMgd29yayBvbiB0aGUKLSAgICAgICAgICAgICAgICBjb250ZW50cyBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBpdHNlbGYuCi0gICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBzb21lIGJlc3QgcHJhY3RpY2VzIGZvciBzZXR0aW5nIHVwIG1hY2hpbmVzCi0gICAgICAgICAgICAgICAgdXNlZCBmb3IgZGV2ZWxvcGluZyBpbWFnZXM6Ci0gICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgSGF2ZSB0aGUgWW9jdG8gUHJvamVjdCBidWlsZCBzeXN0ZW0gaXRzZWxmIGF2YWlsYWJsZSBvbgotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRldmVsb3BlciB3b3Jrc3RhdGlvbnMgc28gZGV2ZWxvcGVycyBjYW4gcnVuIHRoZWlyIG93bgotICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRzIGFuZCBkaXJlY3RseSByZWJ1aWxkIHRoZSBzb2Z0d2FyZSBzdGFjay4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBLZWVwIHRoZSBjb3JlIHN5c3RlbSB1bmNoYW5nZWQgYXMgbXVjaCBhcwotICAgICAgICAgICAgICAgICAgICAgICAgcG9zc2libGUgYW5kIGRvIHlvdXIgd29yayBpbiBsYXllcnMgb24gdG9wIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgY29yZSBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgICAgICAgICBEb2luZyBzbyBnaXZlcyB5b3UgYSBncmVhdGVyIGxldmVsIG9mIHBvcnRhYmlsaXR5IHdoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgIHVwZ3JhZGluZyB0byBuZXcgdmVyc2lvbnMgb2YgdGhlIGNvcmUgc3lzdGVtIG9yIEJvYXJkCi0gICAgICAgICAgICAgICAgICAgICAgICBTdXBwb3J0IFBhY2thZ2VzIChCU1BzKS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBTaGFyZSBsYXllcnMgYW1vbmdzdCB0aGUgZGV2ZWxvcGVycyBvZiBhCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWN1bGFyIHByb2plY3QgYW5kIGNvbnRhaW4gdGhlIHBvbGljeSBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGRlZmluZXMgdGhlIHByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IHVwIGFuIEF1dG9idWlsZGVyOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgQXV0b2J1aWxkZXJzIGFyZSBvZnRlbiB0aGUgY29yZSBvZiB0aGUgZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgICAgICBlbnZpcm9ubWVudC4KLSAgICAgICAgICAgICAgICBJdCBpcyBoZXJlIHRoYXQgY2hhbmdlcyBmcm9tIGluZGl2aWR1YWwgZGV2ZWxvcGVycyBhcmUgYnJvdWdodAotICAgICAgICAgICAgICAgIHRvZ2V0aGVyIGFuZCBjZW50cmFsbHkgdGVzdGVkIGFuZCBzdWJzZXF1ZW50IGRlY2lzaW9ucyBhYm91dAotICAgICAgICAgICAgICAgIHJlbGVhc2VzIGNhbiBiZSBtYWRlLgotICAgICAgICAgICAgICAgIEF1dG9idWlsZGVycyBhbHNvIGFsbG93IGZvciAiY29udGludW91cyBpbnRlZ3JhdGlvbiIgc3R5bGUKLSAgICAgICAgICAgICAgICB0ZXN0aW5nIG9mIHNvZnR3YXJlIGNvbXBvbmVudHMgYW5kIHJlZ3Jlc3Npb24gaWRlbnRpZmljYXRpb24KLSAgICAgICAgICAgICAgICBhbmQgdHJhY2tpbmcuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+U2VlICI8dWxpbmsgdXJsPSdodHRwOi8vYXV0b2J1aWxkZXIueW9jdG9wcm9qZWN0Lm9yZyc+WW9jdG8gUHJvamVjdCBBdXRvYnVpbGRlcjwvdWxpbms+IgotICAgICAgICAgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBsaW5rcyB0byBidWlsZGJvdC4KLSAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB0ZWFtIGhhcyBmb3VuZCB0aGlzIGltcGxlbWVudGF0aW9uCi0gICAgICAgICAgICAgICAgd29ya3Mgd2VsbCBpbiB0aGlzIHJvbGUuCi0gICAgICAgICAgICAgICAgQSBwdWJsaWMgZXhhbXBsZSBvZiB0aGlzIGlzIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgQXV0b2J1aWxkZXJzLCB3aGljaCB3ZSB1c2UgdG8gdGVzdCB0aGUgb3ZlcmFsbCBoZWFsdGggb2YgdGhlCi0gICAgICAgICAgICAgICAgcHJvamVjdC48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZmVhdHVyZXMgb2YgdGhpcyBzeXN0ZW0gYXJlOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICBIaWdobGlnaHRzIHdoZW4gY29tbWl0cyBicmVhayB0aGUgYnVpbGQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFBvcHVsYXRlcyBhbiBzc3RhdGUgY2FjaGUgZnJvbSB3aGljaAotICAgICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcGVycyBjYW4gcHVsbCByYXRoZXIgdGhhbiByZXF1aXJpbmcgbG9jYWwKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBbGxvd3MgY29tbWl0IGhvb2sgdHJpZ2dlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICB3aGljaCB0cmlnZ2VyIGJ1aWxkcyB3aGVuIGNvbW1pdHMgYXJlIG1hZGUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dzIHRyaWdnZXJpbmcgb2YgYXV0b21hdGVkIGltYWdlIGJvb3RpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0ZXN0aW5nIHVuZGVyIHRoZSBRdWlja0VNVWxhdG9yIChRRU1VKS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBTdXBwb3J0cyBpbmNyZW1lbnRhbCBidWlsZCB0ZXN0aW5nIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgZnJvbS1zY3JhdGNoIGJ1aWxkcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBTaGFyZXMgb3V0cHV0IHRoYXQgYWxsb3dzIGRldmVsb3BlcgotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZyBhbmQgaGlzdG9yaWNhbCByZWdyZXNzaW9uIGludmVzdGlnYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlcyBvdXRwdXQgdGhhdCBjYW4gYmUgdXNlZCBmb3IgcmVsZWFzZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dzIHNjaGVkdWxpbmcgb2YgYnVpbGRzIHNvIHRoYXQgcmVzb3VyY2VzCi0gICAgICAgICAgICAgICAgICAgICAgICBjYW4gYmUgdXNlZCBlZmZpY2llbnRseS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCB1cCBUZXN0IE1hY2hpbmVzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICBVc2UgYSBzbWFsbCBudW1iZXIgb2Ygc2hhcmVkLCBoaWdoIHBlcmZvcm1hbmNlIHN5c3RlbXMKLSAgICAgICAgICAgICAgIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgotICAgICAgICAgICAgICAgRGV2ZWxvcGVycyBjYW4gdXNlIHRoZXNlIHN5c3RlbXMgZm9yIHdpZGVyLCBtb3JlCi0gICAgICAgICAgICAgICBleHRlbnNpdmUgdGVzdGluZyB3aGlsZSB0aGV5IGNvbnRpbnVlIHRvIGRldmVsb3AKLSAgICAgICAgICAgICAgIGxvY2FsbHkgdXNpbmcgdGhlaXIgcHJpbWFyeSBkZXZlbG9wbWVudCBzeXN0ZW0uCi0gICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRvY3VtZW50IFBvbGljaWVzIGFuZCBDaGFuZ2UgRmxvdzo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaXRzZWxmIHVzZXMgYSBoaWVyYXJjaGljYWwgc3RydWN0dXJlIGFuZCBhCi0gICAgICAgICAgICAgICAgcHVsbCBtb2RlbC4KLSAgICAgICAgICAgICAgICBTY3JpcHRzIGV4aXN0IHRvIGNyZWF0ZSBhbmQgc2VuZCBwdWxsIHJlcXVlc3RzCi0gICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPmNyZWF0ZS1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2VuZC1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgVGhpcyBtb2RlbCBpcyBpbiBsaW5lIHdpdGggb3RoZXIgb3BlbiBzb3VyY2UgcHJvamVjdHMgd2hlcmUKLSAgICAgICAgICAgICAgICBtYWludGFpbmVycyBhcmUgcmVzcG9uc2libGUgZm9yIHNwZWNpZmljIGFyZWFzIG9mIHRoZSBwcm9qZWN0Ci0gICAgICAgICAgICAgICAgYW5kIGEgc2luZ2xlIG1haW50YWluZXIgaGFuZGxlcyB0aGUgZmluYWwgInRvcC1vZi10cmVlIiBtZXJnZXMuCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyB1c2UgYSBtb3JlIGNvbGxlY3RpdmUgcHVzaCBtb2RlbC4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5naXRvbGl0ZTwvZmlsZW5hbWU+IHNvZnR3YXJlIHN1cHBvcnRzIGJvdGggdGhlCi0gICAgICAgICAgICAgICAgICAgIHB1c2ggYW5kIHB1bGwgbW9kZWxzIHF1aXRlIGVhc2lseS4KLSAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+QXMgd2l0aCBhbnkgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIGl0IGlzIGltcG9ydGFudAotICAgICAgICAgICAgICAgIHRvIGRvY3VtZW50IHRoZSBwb2xpY3kgdXNlZCBhcyB3ZWxsIGFzIGFueSBtYWluIHByb2plY3QKLSAgICAgICAgICAgICAgICBndWlkZWxpbmVzIHNvIHRoZXkgYXJlIHVuZGVyc3Rvb2QgYnkgZXZlcnlvbmUuCi0gICAgICAgICAgICAgICAgSXQgaXMgYWxzbyBhIGdvb2QgaWRlYSB0byBoYXZlIHdlbGwgc3RydWN0dXJlZAotICAgICAgICAgICAgICAgIGNvbW1pdCBtZXNzYWdlcywgd2hpY2ggYXJlIHVzdWFsbHkgYSBwYXJ0IG9mIGEgcHJvamVjdCdzCi0gICAgICAgICAgICAgICAgZ3VpZGVsaW5lcy4KLSAgICAgICAgICAgICAgICBHb29kIGNvbW1pdCBtZXNzYWdlcyBhcmUgZXNzZW50aWFsIHdoZW4gbG9va2luZyBiYWNrIGluIHRpbWUgYW5kCi0gICAgICAgICAgICAgICAgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgd2h5IGNoYW5nZXMgd2VyZSBtYWRlLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBkaXNjb3ZlciB0aGF0IGNoYW5nZXMgYXJlIG5lZWRlZCB0byB0aGUgY29yZQotICAgICAgICAgICAgICAgIGxheWVyIG9mIHRoZSBwcm9qZWN0LCBpdCBpcyB3b3J0aCBzaGFyaW5nIHRob3NlIHdpdGggdGhlCi0gICAgICAgICAgICAgICAgY29tbXVuaXR5IGFzIHNvb24gYXMgcG9zc2libGUuCi0gICAgICAgICAgICAgICAgQ2hhbmNlcyBhcmUgaWYgeW91IGhhdmUgZGlzY292ZXJlZCB0aGUgbmVlZCBmb3IgY2hhbmdlcywKLSAgICAgICAgICAgICAgICBzb21lb25lIGVsc2UgaW4gdGhlIGNvbW11bml0eSBuZWVkcyB0aGVtIGFsc28uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRldmVsb3BtZW50IEVudmlyb25tZW50IFN1bW1hcnk6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBBc2lkZSBmcm9tIHRoZSBwcmV2aW91cyBzdGVwcywgc29tZSBiZXN0IHByYWN0aWNlcyBleGlzdAotICAgICAgICAgICAgICAgIHdpdGhpbiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KLSAgICAgICAgICAgICAgICBDb25zaWRlciB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFVzZSA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNnaXQnPkdpdDwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICBhcyB0aGUgc291cmNlIGNvbnRyb2wgc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIE1haW50YWluIHlvdXIgTWV0YWRhdGEgaW4gbGF5ZXJzIHRoYXQgbWFrZSBzZW5zZQotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHlvdXIgc2l0dWF0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0ndW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC9saW5rPiIgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbgotICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNlcGFyYXRlIHRoZSBwcm9qZWN0J3MgTWV0YWRhdGEgYW5kIGNvZGUgYnkgdXNpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRlIEdpdCByZXBvc2l0b3JpZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjeW9jdG8tcHJvamVjdC1yZXBvc2l0b3JpZXMnPllvY3RvIFByb2plY3QgU291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24gb24gdGhlc2UgcmVwb3NpdG9yaWVzLgotICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3dvcmtpbmctd2l0aC15b2N0by1wcm9qZWN0LXNvdXJjZS1maWxlcyc+V29ya2luZyBXaXRoIFlvY3RvIFByb2plY3QgU291cmNlIEZpbGVzPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzZXQgdXAgbG9jYWwgR2l0Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXMgZm9yIHJlbGF0ZWQgdXBzdHJlYW0gWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcmllcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBTZXQgdXAgdGhlIGRpcmVjdG9yeSBmb3IgdGhlIHNoYXJlZCBzdGF0ZSBjYWNoZQotICAgICAgICAgICAgICAgICAgICAgICAgKDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TU1RBVEVfRElSJz48ZmlsZW5hbWU+U1NUQVRFX0RJUjwvZmlsZW5hbWU+PC91bGluaz4pCi0gICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSBpdCBtYWtlcyBzZW5zZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzZXQgdXAgdGhlIHNzdGF0ZSBjYWNoZSBvbiBhIHN5c3RlbSB1c2VkCi0gICAgICAgICAgICAgICAgICAgICAgICBieSBkZXZlbG9wZXJzIGluIHRoZSBzYW1lIG9yZ2FuaXphdGlvbiBhbmQgc2hhcmUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBzYW1lIHNvdXJjZSBkaXJlY3RvcmllcyBvbiB0aGVpciBtYWNoaW5lcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBTZXQgdXAgYW4gQXV0b2J1aWxkZXIgYW5kIGhhdmUgaXQgcG9wdWxhdGUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBzc3RhdGUgY2FjaGUgYW5kIHNvdXJjZSBkaXJlY3Rvcmllcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBjb21tdW5pdHkgZW5jb3VyYWdlcyB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvIHNlbmQgcGF0Y2hlcyB0byB0aGUgcHJvamVjdCB0byBmaXggYnVncyBvciBhZGQgZmVhdHVyZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gc3VibWl0IHBhdGNoZXMsIGZvbGxvdyB0aGUgcHJvamVjdCBjb21taXQKLSAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlbGluZXMgZm9yIHdyaXRpbmcgZ29vZCBjb21taXQgbWVzc2FnZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlICI8bGluayBsaW5rZW5kPSdob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5TdWJtaXR0aW5nIGEgQ2hhbmdlIHRvIHRoZSBZb2N0byBQcm9qZWN0PC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgU2VuZCBjaGFuZ2VzIHRvIHRoZSBjb3JlIHNvb25lciB0aGFuIGxhdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICBhcyBvdGhlcnMgYXJlIGxpa2VseSB0byBydW4gaW50byB0aGUgc2FtZSBpc3N1ZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3Igc29tZSBndWlkYW5jZSBvbiBtYWlsaW5nIGxpc3RzIHRvIHVzZSwgc2VlIHRoZSBsaXN0IGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPlN1Ym1pdHRpbmcgYSBDaGFuZ2UgdG8gdGhlIFlvY3RvIFByb2plY3Q8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBhdmFpbGFibGUgbWFpbGluZyBsaXN0cywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Jlc291cmNlcy1tYWlsaW5nbGlzdCc+TWFpbGluZyBMaXN0czwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0nc3VibWl0dGluZy1hLWRlZmVjdC1hZ2FpbnN0LXRoZS15b2N0by1wcm9qZWN0Jz4KLSAgICA8dGl0bGU+U3VibWl0dGluZyBhIERlZmVjdCBBZ2FpbnN0IHRoZSBZb2N0byBQcm9qZWN0PC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBVc2UgdGhlIFlvY3RvIFByb2plY3QgaW1wbGVtZW50YXRpb24gb2YKLSAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5idWd6aWxsYS5vcmcvYWJvdXQvJz5CdWd6aWxsYTwvdWxpbms+Ci0gICAgICAgIHRvIHN1Ym1pdCBhIGRlZmVjdCAoYnVnKSBhZ2FpbnN0IHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICBGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGlzIGltcGxlbWVudGF0aW9uIG9mIEJ1Z3ppbGxhIHNlZSB0aGUKLSAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Jlc291cmNlcy1idWd0cmFja2VyJz5Zb2N0byBQcm9qZWN0IEJ1Z3ppbGxhPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KLSAgICAgICAgRm9yIG1vcmUgZGV0YWlsIG9uIGFueSBvZiB0aGUgZm9sbG93aW5nIHN0ZXBzLCBzZWUgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL0J1Z3ppbGxhX0NvbmZpZ3VyYXRpb25fYW5kX0J1Z19UcmFja2luZyc+QnVnemlsbGEgd2lraSBwYWdlPC91bGluaz4uCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIGdlbmVyYWwgc3RlcHMgdG8gc3VibWl0IGEgYnVnIgotCi0gICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICBPcGVuIHRoZSBZb2N0byBQcm9qZWN0IGltcGxlbWVudGF0aW9uIG9mCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0JVR1pJTExBX1VSTDsnPkJ1Z3ppbGxhPC91bGluaz4uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgQ2xpY2sgIkZpbGUgYSBCdWciIHRvIGVudGVyIGEgbmV3IGJ1Zy4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICBDaG9vc2UgdGhlIGFwcHJvcHJpYXRlICJDbGFzc2lmaWNhdGlvbiIsICJQcm9kdWN0IiwgYW5kCi0gICAgICAgICAgICAgICAgIkNvbXBvbmVudCIgZm9yIHdoaWNoIHRoZSBidWcgd2FzIGZvdW5kLgotICAgICAgICAgICAgICAgIEJ1Z3MgZm9yIHRoZSBZb2N0byBQcm9qZWN0IGZhbGwgaW50byBvbmUgb2Ygc2V2ZXJhbAotICAgICAgICAgICAgICAgIGNsYXNzaWZpY2F0aW9ucywgd2hpY2ggaW4gdHVybiBicmVhayBkb3duIGludG8gc2V2ZXJhbAotICAgICAgICAgICAgICAgIHByb2R1Y3RzIGFuZCBjb21wb25lbnRzLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBmb3IgYSBidWcgYWdhaW5zdCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IGxheWVyLCB5b3Ugd291bGQgY2hvb3NlCi0gICAgICAgICAgICAgICAgIkJ1aWxkIFN5c3RlbSwgTWV0YWRhdGEgJmFtcDsgUnVudGltZSIsICJCU1BzIiwgYW5kCi0gICAgICAgICAgICAgICAgImJzcHMtbWV0YS1pbnRlbCIsIHJlc3BlY3RpdmVseS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICBDaG9vc2UgdGhlICJWZXJzaW9uIiBvZiB0aGUgWW9jdG8gUHJvamVjdCBmb3Igd2hpY2ggeW91IGZvdW5kCi0gICAgICAgICAgICAgICAgdGhlIGJ1ZyAoZS5nLiAmRElTVFJPOykuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgRGV0ZXJtaW5lIGFuZCBzZWxlY3QgdGhlICJTZXZlcml0eSIgb2YgdGhlIGJ1Zy4KLSAgICAgICAgICAgICAgICBUaGUgc2V2ZXJpdHkgaW5kaWNhdGVzIGhvdyB0aGUgYnVnIGltcGFjdGVkIHlvdXIgd29yay4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICBDaG9vc2UgdGhlICJIYXJkd2FyZSIgdGhhdCB0aGUgYnVnIGltcGFjdHMuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgQ2hvb3NlIHRoZSAiQXJjaGl0ZWN0dXJlIiB0aGF0IHRoZSBidWcgaW1wYWN0cy4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICBDaG9vc2UgYSAiRG9jdW1lbnRhdGlvbiBjaGFuZ2UiIGl0ZW0gZm9yIHRoZSBidWcuCi0gICAgICAgICAgICAgICAgRml4aW5nIGEgYnVnIG1pZ2h0IG9yIG1pZ2h0IG5vdCBhZmZlY3QgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uLgotICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgdW5zdXJlIG9mIHRoZSBpbXBhY3QgdG8gdGhlIGRvY3VtZW50YXRpb24sIHNlbGVjdAotICAgICAgICAgICAgICAgICJEb24ndCBLbm93Ii4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICBQcm92aWRlIGEgYnJpZWYgIlN1bW1hcnkiIG9mIHRoZSBidWcuCi0gICAgICAgICAgICAgICAgVHJ5IHRvIGxpbWl0IHlvdXIgc3VtbWFyeSB0byBqdXN0IGEgbGluZSBvciB0d28gYW5kIGJlIHN1cmUKLSAgICAgICAgICAgICAgICB0byBjYXB0dXJlIHRoZSBlc3NlbmNlIG9mIHRoZSBidWcuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgUHJvdmlkZSBhIGRldGFpbGVkICJEZXNjcmlwdGlvbiIgb2YgdGhlIGJ1Zy4KLSAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIHByb3ZpZGUgYXMgbXVjaCBkZXRhaWwgYXMgeW91IGNhbiBhYm91dCB0aGUgY29udGV4dCwKLSAgICAgICAgICAgICAgICBiZWhhdmlvciwgb3V0cHV0LCBhbmQgc28gZm9ydGggdGhhdCBzdXJyb3VuZHMgdGhlIGJ1Zy4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIGV2ZW4gYXR0YWNoIHN1cHBvcnRpbmcgZmlsZXMgZm9yIG91dHB1dCBmcm9tIGxvZ3MgYnkKLSAgICAgICAgICAgICAgICB1c2luZyB0aGUgIkFkZCBhbiBhdHRhY2htZW50IiBidXR0b24uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgQ2xpY2sgdGhlICJTdWJtaXQgQnVnIiBidXR0b24gc3VibWl0IHRoZSBidWcuCi0gICAgICAgICAgICAgICAgQSBuZXcgQnVnemlsbGEgbnVtYmVyIGlzIGFzc2lnbmVkIHRvIHRoZSBidWcgYW5kIHRoZSBkZWZlY3QKLSAgICAgICAgICAgICAgICBpcyBsb2dnZWQgaW4gdGhlIGJ1ZyB0cmFja2luZyBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgIE9uY2UgeW91IGZpbGUgYSBidWcsIHRoZSBidWcgaXMgcHJvY2Vzc2VkIGJ5IHRoZSBZb2N0byBQcm9qZWN0IEJ1ZwotICAgICAgICBUcmlhZ2UgVGVhbSBhbmQgZnVydGhlciBkZXRhaWxzIGNvbmNlcm5pbmcgdGhlIGJ1ZyBhcmUgYXNzaWduZWQKLSAgICAgICAgKGUuZy4gcHJpb3JpdHkgYW5kIG93bmVyKS4KLSAgICAgICAgWW91IGFyZSB0aGUgIlN1Ym1pdHRlciIgb2YgdGhlIGJ1ZyBhbmQgYW55IGZ1cnRoZXIgY2F0ZWdvcml6YXRpb24sCi0gICAgICAgIHByb2dyZXNzLCBvciBjb21tZW50cyBvbiB0aGUgYnVnIHJlc3VsdCBpbiBCdWd6aWxsYSBzZW5kaW5nIHlvdSBhbgotICAgICAgICBhdXRvbWF0ZWQgZW1haWwgY29uY2VybmluZyB0aGUgcGFydGljdWxhciBjaGFuZ2Ugb3IgcHJvZ3Jlc3MgdG8gdGhlCi0gICAgICAgIGJ1Zy4KLSAgICA8L3BhcmE+Ci08L3NlY3Rpb24+Ci0KLTxzZWN0aW9uIGlkPSdob3ctdG8tc3VibWl0LWEtY2hhbmdlJz4KLSAgICA8dGl0bGU+U3VibWl0dGluZyBhIENoYW5nZSB0byB0aGUgWW9jdG8gUHJvamVjdDwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgQ29udHJpYnV0aW9ucyB0byB0aGUgWW9jdG8gUHJvamVjdCBhbmQgT3BlbkVtYmVkZGVkIGFyZSB2ZXJ5IHdlbGNvbWUuCi0gICAgICAgIEJlY2F1c2UgdGhlIHN5c3RlbSBpcyBleHRyZW1lbHkgY29uZmlndXJhYmxlIGFuZCBmbGV4aWJsZSwgd2UgcmVjb2duaXplCi0gICAgICAgIHRoYXQgZGV2ZWxvcGVycyB3aWxsIHdhbnQgdG8gZXh0ZW5kLCBjb25maWd1cmUgb3Igb3B0aW1pemUgaXQgZm9yCi0gICAgICAgIHRoZWlyIHNwZWNpZmljIHVzZXMuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHVzZXMgYSBtYWlsaW5nIGxpc3QgYW5kIGEgcGF0Y2gtYmFzZWQgd29ya2Zsb3cKLSAgICAgICAgdGhhdCBpcyBzaW1pbGFyIHRvIHRoZSBMaW51eCBrZXJuZWwgYnV0IGNvbnRhaW5zIGltcG9ydGFudAotICAgICAgICBkaWZmZXJlbmNlcy4KLSAgICAgICAgSW4gZ2VuZXJhbCwgYSBtYWlsaW5nIGxpc3QgZXhpc3RzIHRocm91Z2ggd2hpY2ggeW91IGNhbiBzdWJtaXQKLSAgICAgICAgcGF0Y2hlcy4KLSAgICAgICAgWW91IHNob3VsZCBzZW5kIHBhdGNoZXMgdG8gdGhlIGFwcHJvcHJpYXRlIG1haWxpbmcgbGlzdCBzbyB0aGF0IHRoZXkKLSAgICAgICAgY2FuIGJlIHJldmlld2VkIGFuZCBtZXJnZWQgYnkgdGhlIGFwcHJvcHJpYXRlIG1haW50YWluZXIuCi0gICAgICAgIFRoZSBzcGVjaWZpYyBtYWlsaW5nIGxpc3QgeW91IG5lZWQgdG8gdXNlIGRlcGVuZHMgb24gdGhlCi0gICAgICAgIGxvY2F0aW9uIG9mIHRoZSBjb2RlIHlvdSBhcmUgY2hhbmdpbmcuCi0gICAgICAgIEVhY2ggY29tcG9uZW50IChlLmcuIGxheWVyKSBzaG91bGQgaGF2ZSBhCi0gICAgICAgIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlIHRoYXQgaW5kaWNhdGVzIHdoZXJlIHRvIHNlbmQKLSAgICAgICAgdGhlIGNoYW5nZXMgYW5kIHdoaWNoIHByb2Nlc3MgdG8gZm9sbG93LgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBZb3UgY2FuIHNlbmQgdGhlIHBhdGNoIHRvIHRoZSBtYWlsaW5nIGxpc3QgdXNpbmcgd2hpY2hldmVyIGFwcHJvYWNoCi0gICAgICAgIHlvdSBmZWVsIGNvbWZvcnRhYmxlIHdpdGggdG8gZ2VuZXJhdGUgdGhlIHBhdGNoLgotICAgICAgICBPbmNlIHNlbnQsIHRoZSBwYXRjaCBpcyB1c3VhbGx5IHJldmlld2VkIGJ5IHRoZSBjb21tdW5pdHkgYXQgbGFyZ2UuCi0gICAgICAgIElmIHNvbWVib2R5IGhhcyBjb25jZXJucyB3aXRoIHRoZSBwYXRjaCwgdGhleSB3aWxsIHVzdWFsbHkgdm9pY2UKLSAgICAgICAgdGhlaXIgY29uY2VybiBvdmVyIHRoZSBtYWlsaW5nIGxpc3QuCi0gICAgICAgIElmIGEgcGF0Y2ggZG9lcyBub3QgcmVjZWl2ZSBhbnkgbmVnYXRpdmUgcmV2aWV3cywgdGhlIG1haW50YWluZXIgb2YKLSAgICAgICAgdGhlIGFmZmVjdGVkIGxheWVyIHR5cGljYWxseSB0YWtlcyB0aGUgcGF0Y2gsIHRlc3RzIGl0LCBhbmQgdGhlbgotICAgICAgICBiYXNlZCBvbiBzdWNjZXNzZnVsIHRlc3RpbmcsIG1lcmdlcyB0aGUgcGF0Y2guCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmEgaWQ9J2ZpZ3VyaW5nLW91dC10aGUtbWFpbGluZy1saXN0LXRvLXVzZSc+Ci0gICAgICAgIFRoZSAicG9reSIgcmVwb3NpdG9yeSwgd2hpY2ggaXMgdGhlIFlvY3RvIFByb2plY3QncyByZWZlcmVuY2UgYnVpbGQKLSAgICAgICAgZW52aXJvbm1lbnQsIGlzIGEgaHlicmlkIHJlcG9zaXRvcnkgdGhhdCBjb250YWlucyBzZXZlcmFsCi0gICAgICAgIGluZGl2aWR1YWwgcGllY2VzIChlLmcuIEJpdEJha2UsIE1ldGFkYXRhLCBkb2N1bWVudGF0aW9uLAotICAgICAgICBhbmQgc28gZm9ydGgpIGJ1aWx0IHVzaW5nIHRoZSBjb21iby1sYXllciB0b29sLgotICAgICAgICBUaGUgdXBzdHJlYW0gbG9jYXRpb24gdXNlZCBmb3Igc3VibWl0dGluZyBjaGFuZ2VzIHZhcmllcyBieQotICAgICAgICBjb21wb25lbnQ6Ci0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvcmUgTWV0YWRhdGE6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBTZW5kIHlvdXIgcGF0Y2ggdG8gdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2xpc3RzLm9wZW5lbWJlZGRlZC5vcmcvbWFpbG1hbi9saXN0aW5mby9vcGVuZW1iZWRkZWQtY29yZSc+b3BlbmVtYmVkZGVkLWNvcmU8L3VsaW5rPgotICAgICAgICAgICAgICAgIG1haWxpbmcgbGlzdC4gIEZvciBleGFtcGxlLCBhIGNoYW5nZSB0byBhbnl0aGluZyB1bmRlcgotICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+IG9yCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNjcmlwdHM8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcyBzaG91bGQgYmUgc2VudAotICAgICAgICAgICAgICAgIHRvIHRoaXMgbWFpbGluZyBsaXN0LgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CaXRCYWtlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgRm9yIGNoYW5nZXMgdG8gQml0QmFrZSAoaS5lLiBhbnl0aGluZyB1bmRlciB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGRpcmVjdG9yeSksIHNlbmQgeW91ciBwYXRjaAotICAgICAgICAgICAgICAgIHRvIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9saXN0cy5vcGVuZW1iZWRkZWQub3JnL21haWxtYW4vbGlzdGluZm8vYml0YmFrZS1kZXZlbCc+Yml0YmFrZS1kZXZlbDwvdWxpbms+Ci0gICAgICAgICAgICAgICAgbWFpbGluZyBsaXN0LgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4ibWV0YS0qIiB0cmVlczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoZXNlIHRyZWVzIGNvbnRhaW4gTWV0YWRhdGEuCi0gICAgICAgICAgICAgICAgVXNlIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vbGlzdHMueW9jdG9wcm9qZWN0Lm9yZy9saXN0aW5mby9wb2t5Jz5wb2t5PC91bGluaz4KLSAgICAgICAgICAgICAgICBtYWlsaW5nIGxpc3QuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBGb3IgY2hhbmdlcyB0byBvdGhlciBsYXllcnMgaG9zdGVkIGluIHRoZSBZb2N0byBQcm9qZWN0IHNvdXJjZQotICAgICAgICByZXBvc2l0b3JpZXMgKGkuZS4gPGZpbGVuYW1lPnlvY3RvcHJvamVjdC5vcmc8L2ZpbGVuYW1lPiksIHRvb2xzLAotICAgICAgICBhbmQgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiwgdXNlIHRoZQotICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2xpc3RzLnlvY3RvcHJvamVjdC5vcmcvbGlzdGluZm8veW9jdG8nPllvY3RvIFByb2plY3Q8L3VsaW5rPgotICAgICAgICBnZW5lcmFsIG1haWxpbmcgbGlzdC4KLSAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICBTb21ldGltZXMgYSBsYXllcidzIGRvY3VtZW50YXRpb24gc3BlY2lmaWVzIHRvIHVzZSBhCi0gICAgICAgICAgICBwYXJ0aWN1bGFyIG1haWxpbmcgbGlzdC4KLSAgICAgICAgICAgIElmIHNvLCB1c2UgdGhhdCBsaXN0LgotICAgICAgICA8L25vdGU+Ci0gICAgICAgIEZvciBhZGRpdGlvbmFsIHJlY2lwZXMgdGhhdCBkbyBub3QgZml0IGludG8gdGhlIGNvcmUgTWV0YWRhdGEsIHlvdQotICAgICAgICBzaG91bGQgZGV0ZXJtaW5lIHdoaWNoIGxheWVyIHRoZSByZWNpcGUgc2hvdWxkIGdvIGludG8gYW5kIHN1Ym1pdAotICAgICAgICB0aGUgY2hhbmdlIGluIHRoZSBtYW5uZXIgcmVjb21tZW5kZWQgYnkgdGhlIGRvY3VtZW50YXRpb24gKGUuZy4KLSAgICAgICAgdGhlIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlKSBzdXBwbGllZCB3aXRoIHRoZSBsYXllci4KLSAgICAgICAgSWYgaW4gZG91YnQsIHBsZWFzZSBhc2sgb24gdGhlIFlvY3RvIGdlbmVyYWwgbWFpbGluZyBsaXN0IG9yIG9uCi0gICAgICAgIHRoZSBvcGVuZW1iZWRkZWQtZGV2ZWwgbWFpbGluZyBsaXN0LgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBZb3UgY2FuIGFsc28gcHVzaCBhIGNoYW5nZSB1cHN0cmVhbSBhbmQgcmVxdWVzdCBhIG1haW50YWluZXIgdG8KLSAgICAgICAgcHVsbCB0aGUgY2hhbmdlIGludG8gdGhlIGNvbXBvbmVudCdzIHVwc3RyZWFtIHJlcG9zaXRvcnkuCi0gICAgICAgIFlvdSBkbyB0aGlzIGJ5IHB1c2hpbmcgdG8gYSBjb250cmlidXRpb24gcmVwb3NpdG9yeSB0aGF0IGlzIHVwc3RyZWFtLgotICAgICAgICBTZWUgdGhlCi0gICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN3b3JrZmxvd3MnPldvcmtmbG93czwvdWxpbms+IgotICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgZm9yIGFkZGl0aW9uYWwKLSAgICAgICAgY29uY2VwdHMgb24gd29ya2luZyBpbiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVHdvIGNvbW1vbmx5IHVzZWQgdGVzdGluZyByZXBvc2l0b3JpZXMgZXhpc3QgZm9yCi0gICAgICAgIE9wZW5FbWJlZGRlZC1Db3JlOgotICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4icm9zcy9tdXQiIGJyYW5jaDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoZSAibXV0IiAobWFzdGVyLXVuZGVyLXRlc3QpIHRyZWUKLSAgICAgICAgICAgICAgICBleGlzdHMgaW4gdGhlIDxmaWxlbmFtZT5wb2t5LWNvbnRyaWI8L2ZpbGVuYW1lPiByZXBvc2l0b3J5Ci0gICAgICAgICAgICAgICAgaW4gdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz5Zb2N0byBQcm9qZWN0IHNvdXJjZSByZXBvc2l0b3JpZXM8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Im1hc3Rlci1uZXh0IiBicmFuY2g6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBUaGlzIGJyYW5jaCBpcyBwYXJ0IG9mIHRoZSBtYWluCi0gICAgICAgICAgICAgICAgInBva3kiIHJlcG9zaXRvcnkgaW4gdGhlIFlvY3RvIFByb2plY3Qgc291cmNlIHJlcG9zaXRvcmllcy4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgIE1haW50YWluZXJzIHVzZSB0aGVzZSBicmFuY2hlcyB0byB0ZXN0IHN1Ym1pc3Npb25zIHByaW9yIHRvIG1lcmdpbmcKLSAgICAgICAgcGF0Y2hlcy4KLSAgICAgICAgVGh1cywgeW91IGNhbiBnZXQgYW4gaWRlYSBvZiB0aGUgc3RhdHVzIG9mIGEgcGF0Y2ggYmFzZWQgb24KLSAgICAgICAgd2hldGhlciB0aGUgcGF0Y2ggaGFzIGJlZW4gbWVyZ2VkIGludG8gb25lIG9mIHRoZXNlIGJyYW5jaGVzLgotICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgIFRoaXMgc3lzdGVtIGlzIGltcGVyZmVjdCBhbmQgY2hhbmdlcyBjYW4gc29tZXRpbWVzIGdldCBsb3N0IGluIHRoZQotICAgICAgICAgICAgZmxvdy4KLSAgICAgICAgICAgIEFza2luZyBhYm91dCB0aGUgc3RhdHVzIG9mIGEgcGF0Y2ggb3IgY2hhbmdlIGlzIHJlYXNvbmFibGUgaWYgdGhlCi0gICAgICAgICAgICBjaGFuZ2UgaGFzIGJlZW4gaWRsZSBmb3IgYSB3aGlsZSB3aXRoIG5vIGZlZWRiYWNrLgotICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgZG9lcyBoYXZlIHBsYW5zIHRvIHVzZQotICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGF0Y2h3b3JrXyhzb2Z0d2FyZSknPlBhdGNod29yazwvdWxpbms+Ci0gICAgICAgICAgICB0byB0cmFjayB0aGUgc3RhdHVzIG9mIHBhdGNoZXMgYW5kIGFsc28gdG8gYXV0b21hdGljYWxseSBwcmV2aWV3Ci0gICAgICAgICAgICBwYXRjaGVzLgotICAgICAgICA8L25vdGU+Ci0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgcHJvdmlkZSBwcm9jZWR1cmVzIGZvciBzdWJtaXR0aW5nIGEgY2hhbmdlLgotICAgIDwvcGFyYT4KLQotICAgIDxzZWN0aW9uIGlkPSdwdXNoaW5nLWEtY2hhbmdlLXVwc3RyZWFtJz4KLSAgICAgICAgPHRpdGxlPlVzaW5nIFNjcmlwdHMgdG8gUHVzaCBhIENoYW5nZSBVcHN0cmVhbSBhbmQgUmVxdWVzdCBhIFB1bGw8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRm9sbG93IHRoaXMgcHJvY2VkdXJlIHRvIHB1c2ggYSBjaGFuZ2UgdG8gYW4gdXBzdHJlYW0gImNvbnRyaWIiCi0gICAgICAgICAgICBHaXQgcmVwb3NpdG9yeToKLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBnZW5lcmFsIEdpdCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gcHVzaCBhIGNoYW5nZQotICAgICAgICAgICAgICAgIHVwc3RyZWFtIGluIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQtc2NtLmNvbS9ib29rL2VuL3YyL0Rpc3RyaWJ1dGVkLUdpdC1EaXN0cmlidXRlZC1Xb3JrZmxvd3MnPkdpdCBDb21tdW5pdHkgQm9vazwvdWxpbms+LgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ha2UgWW91ciBDaGFuZ2VzIExvY2FsbHk6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgTWFrZSB5b3VyIGNoYW5nZXMgaW4geW91ciBsb2NhbCBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBtYWtlIHNtYWxsLCBjb250cm9sbGVkLCBpc29sYXRlZCBjaGFuZ2VzLgotICAgICAgICAgICAgICAgICAgICBLZWVwaW5nIGNoYW5nZXMgc21hbGwgYW5kIGlzb2xhdGVkIGFpZHMgcmV2aWV3LAotICAgICAgICAgICAgICAgICAgICBtYWtlcyBtZXJnaW5nL3JlYmFzaW5nIGVhc2llciBhbmQga2VlcHMgdGhlIGNoYW5nZQotICAgICAgICAgICAgICAgICAgICBoaXN0b3J5IGNsZWFuIHNob3VsZCBhbnlvbmUgbmVlZCB0byByZWZlciB0byBpdCBpbgotICAgICAgICAgICAgICAgICAgICBmdXR1cmUuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlN0YWdlIFlvdXIgQ2hhbmdlczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBTdGFnZSB5b3VyIGNoYW5nZXMgYnkgdXNpbmcgdGhlIDxmaWxlbmFtZT5naXQgYWRkPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBvbiBlYWNoIGZpbGUgeW91IGNoYW5nZWQuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nbWFraW5nLXN1cmUteW91LWhhdmUtY29ycmVjdC1jb21taXQtaW5mb3JtYXRpb24nPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29tbWl0IFlvdXIgQ2hhbmdlczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBDb21taXQgdGhlIGNoYW5nZSBieSB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBjb21taXQ8L2ZpbGVuYW1lPiBjb21tYW5kLgotICAgICAgICAgICAgICAgICAgICBNYWtlIHN1cmUgeW91ciBjb21taXQgaW5mb3JtYXRpb24gZm9sbG93cyBzdGFuZGFyZHMgYnkKLSAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIHRoZXNlIGFjY2VwdGVkIGNvbnZlbnRpb25zOgotICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gaW5jbHVkZSBhICJTaWduZWQtb2ZmLWJ5OiIgbGluZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1lIHN0eWxlIGFzIHJlcXVpcmVkIGJ5IHRoZSBMaW51eCBrZXJuZWwuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkaW5nIHRoaXMgbGluZSBzaWduaWZpZXMgdGhhdCB5b3UsIHRoZSBzdWJtaXR0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZSBhZ3JlZWQgdG8gdGhlIERldmVsb3BlcidzIENlcnRpZmljYXRlIG9mCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JpZ2luIDEuMSBhcyBmb2xsb3dzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgRGV2ZWxvcGVyJ3MgQ2VydGlmaWNhdGUgb2YgT3JpZ2luIDEuMQotCi0gICAgIEJ5IG1ha2luZyBhIGNvbnRyaWJ1dGlvbiB0byB0aGlzIHByb2plY3QsIEkgY2VydGlmeSB0aGF0OgotCi0gICAgIChhKSBUaGUgY29udHJpYnV0aW9uIHdhcyBjcmVhdGVkIGluIHdob2xlIG9yIGluIHBhcnQgYnkgbWUgYW5kIEkKLSAgICAgICAgIGhhdmUgdGhlIHJpZ2h0IHRvIHN1Ym1pdCBpdCB1bmRlciB0aGUgb3BlbiBzb3VyY2UgbGljZW5zZQotICAgICAgICAgaW5kaWNhdGVkIGluIHRoZSBmaWxlOyBvcgotCi0gICAgIChiKSBUaGUgY29udHJpYnV0aW9uIGlzIGJhc2VkIHVwb24gcHJldmlvdXMgd29yayB0aGF0LCB0byB0aGUgYmVzdAotICAgICAgICAgb2YgbXkga25vd2xlZGdlLCBpcyBjb3ZlcmVkIHVuZGVyIGFuIGFwcHJvcHJpYXRlIG9wZW4gc291cmNlCi0gICAgICAgICBsaWNlbnNlIGFuZCBJIGhhdmUgdGhlIHJpZ2h0IHVuZGVyIHRoYXQgbGljZW5zZSB0byBzdWJtaXQgdGhhdAotICAgICAgICAgd29yayB3aXRoIG1vZGlmaWNhdGlvbnMsIHdoZXRoZXIgY3JlYXRlZCBpbiB3aG9sZSBvciBpbiBwYXJ0Ci0gICAgICAgICBieSBtZSwgdW5kZXIgdGhlIHNhbWUgb3BlbiBzb3VyY2UgbGljZW5zZSAodW5sZXNzIEkgYW0KLSAgICAgICAgIHBlcm1pdHRlZCB0byBzdWJtaXQgdW5kZXIgYSBkaWZmZXJlbnQgbGljZW5zZSksIGFzIGluZGljYXRlZAotICAgICAgICAgaW4gdGhlIGZpbGU7IG9yCi0KLSAgICAgKGMpIFRoZSBjb250cmlidXRpb24gd2FzIHByb3ZpZGVkIGRpcmVjdGx5IHRvIG1lIGJ5IHNvbWUgb3RoZXIKLSAgICAgICAgIHBlcnNvbiB3aG8gY2VydGlmaWVkIChhKSwgKGIpIG9yIChjKSBhbmQgSSBoYXZlIG5vdCBtb2RpZmllZAotICAgICAgICAgaXQuCi0KLSAgICAgKGQpIEkgdW5kZXJzdGFuZCBhbmQgYWdyZWUgdGhhdCB0aGlzIHByb2plY3QgYW5kIHRoZSBjb250cmlidXRpb24KLSAgICAgICAgIGFyZSBwdWJsaWMgYW5kIHRoYXQgYSByZWNvcmQgb2YgdGhlIGNvbnRyaWJ1dGlvbiAoaW5jbHVkaW5nIGFsbAotICAgICAgICAgcGVyc29uYWwgaW5mb3JtYXRpb24gSSBzdWJtaXQgd2l0aCBpdCwgaW5jbHVkaW5nIG15IHNpZ24tb2ZmKSBpcwotICAgICAgICAgbWFpbnRhaW5lZCBpbmRlZmluaXRlbHkgYW5kIG1heSBiZSByZWRpc3RyaWJ1dGVkIGNvbnNpc3RlbnQgd2l0aAotICAgICAgICAgdGhpcyBwcm9qZWN0IG9yIHRoZSBvcGVuIHNvdXJjZSBsaWNlbnNlKHMpIGludm9sdmVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm92aWRlIGEgc2luZ2xlLWxpbmUgc3VtbWFyeSBvZiB0aGUgY2hhbmdlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBtb3JlIGV4cGxhbmF0aW9uIGlzIG5lZWRlZCwgcHJvdmlkZSBtb3JlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsIGluIHRoZSBib2R5IG9mIHRoZSBjb21taXQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBzdW1tYXJ5IGlzIHR5cGljYWxseSB2aWV3YWJsZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvcnRsaXN0IiBvZiBjaGFuZ2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRodXMsIHByb3ZpZGluZyBzb21ldGhpbmcgc2hvcnQgYW5kIGRlc2NyaXB0aXZlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBnaXZlcyB0aGUgcmVhZGVyIGEgc3VtbWFyeSBvZiB0aGUgY2hhbmdlIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZnVsIHdoZW4gdmlld2luZyBhIGxpc3Qgb2YgbWFueSBjb21taXRzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgcHJlZml4IHRoaXMgc2hvcnQgZGVzY3JpcHRpb24gd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgbmFtZSAoaWYgY2hhbmdpbmcgYSByZWNpcGUpLCBvciBlbHNlIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2hvcnQgZm9ybSBwYXRoIHRvIHRoZSBmaWxlIGJlaW5nIGNoYW5nZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBib2R5IG9mIHRoZSBjb21taXQgbWVzc2FnZSwgcHJvdmlkZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbGVkIGluZm9ybWF0aW9uIHRoYXQgZGVzY3JpYmVzIHdoYXQgeW91Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCwgd2h5IHlvdSBtYWRlIHRoZSBjaGFuZ2UsIGFuZCB0aGUgYXBwcm9hY2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgdXNlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdCBtaWdodCBhbHNvIGJlIGhlbHBmdWwgaWYgeW91IG1lbnRpb24gaG93IHlvdQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlZCB0aGUgY2hhbmdlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGUgYXMgbXVjaCBkZXRhaWwgYXMgeW91IGNhbiBpbiB0aGUgYm9keSBvZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb21taXQgbWVzc2FnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGRvIG5vdCBuZWVkIHRvIHByb3ZpZGUgYSBtb3JlIGRldGFpbGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxhbmF0aW9uIG9mIGEgY2hhbmdlIGlmIHRoZSBjaGFuZ2UgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlub3IgdG8gdGhlIHBvaW50IG9mIHRoZSBzaW5nbGUgbGluZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5IHByb3ZpZGluZyBhbGwgdGhlIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgY2hhbmdlIGFkZHJlc3NlcyBhIHNwZWNpZmljIGJ1ZyBvciBpc3N1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIGEgYnVnLXRyYWNraW5nIElELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgYSByZWZlcmVuY2UgdG8gdGhhdCBJRCBpbiB5b3VyIGRldGFpbGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBZb2N0byBQcm9qZWN0IHVzZXMgYSBzcGVjaWZpYwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlbnRpb24gZm9yIGJ1ZyByZWZlcmVuY2VzIC0gYW55IGNvbW1pdCB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2VzIGEgc3BlY2lmaWMgYnVnIHNob3VsZCB1c2UgdGhlIGZvbGxvd2luZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm0gZm9yIHRoZSBkZXRhaWxlZCBkZXNjcmlwdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIHVzZSB0aGUgYWN0dWFsIGJ1Zy10cmFja2luZyBJRCBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVnemlsbGEgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmJ1Zy1pZDwvcmVwbGFjZWFibGU+OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgRml4ZXMgW1lPQ1RPICM8cmVwbGFjZWFibGU+YnVnLWlkPC9yZXBsYWNlYWJsZT5dCi0KLSAgICAgPHJlcGxhY2VhYmxlPmRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIGNoYW5nZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UHVzaCBZb3VyIENvbW1pdHMgdG8gYSAiQ29udHJpYiIgVXBzdHJlYW06PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgYXJyYW5nZWQgZm9yIHBlcm1pc3Npb25zIHRvIHB1c2ggdG8gYW4KLSAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW0gY29udHJpYiByZXBvc2l0b3J5LCBwdXNoIHRoZSBjaGFuZ2UgdG8gdGhhdAotICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5OgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZ2l0IHB1c2ggPHJlcGxhY2VhYmxlPnVwc3RyZWFtX3JlbW90ZV9yZXBvPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPmxvY2FsX2JyYW5jaF9uYW1lPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgaGF2ZSBwZXJtaXNzaW9ucyB0byBwdXNoIGludG8gdGhlCi0gICAgICAgICAgICAgICAgICAgIHVwc3RyZWFtIDxmaWxlbmFtZT5tZXRhLWludGVsLWNvbnRyaWI8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5IGFuZCB5b3UgYXJlIHdvcmtpbmcgaW4gYSBsb2NhbCBicmFuY2ggbmFtZWQKLSAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnlvdXJfbmFtZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi9SRUFETUU8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kIHB1c2hlcyB5b3VyIGxvY2FsIGNvbW1pdHMgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsLWNvbnRyaWI8L2ZpbGVuYW1lPiB1cHN0cmVhbQotICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5IGFuZCBwdXRzIHRoZSBjb21taXQgaW4gYSBicmFuY2ggbmFtZWQKLSAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnlvdXJfbmFtZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi9SRUFETUU8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCBwdXNoIG1ldGEtaW50ZWwtY29udHJpYiA8cmVwbGFjZWFibGU+eW91cl9uYW1lPC9yZXBsYWNlYWJsZT4vUkVBRE1FCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdwdXNoLWRldGVybWluZS13aG8tdG8tbm90aWZ5Jz4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRldGVybWluZSBXaG8gdG8gTm90aWZ5OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIERldGVybWluZSB0aGUgbWFpbnRhaW5lciBvciB0aGUgbWFpbGluZyBsaXN0Ci0gICAgICAgICAgICAgICAgICAgIHRoYXQgeW91IG5lZWQgdG8gbm90aWZ5IGZvciB0aGUgY2hhbmdlLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT5CZWZvcmUgc3VibWl0dGluZyBhbnkgY2hhbmdlLCB5b3UgbmVlZCB0byBiZSBzdXJlCi0gICAgICAgICAgICAgICAgICAgIHdobyB0aGUgbWFpbnRhaW5lciBpcyBvciB3aGF0IG1haWxpbmcgbGlzdCB0aGF0IHlvdSBuZWVkCi0gICAgICAgICAgICAgICAgICAgIHRvIG5vdGlmeS4KLSAgICAgICAgICAgICAgICAgICAgVXNlIGVpdGhlciB0aGVzZSBtZXRob2RzIHRvIGZpbmQgb3V0OgotICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWludGVuYW5jZSBGaWxlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhhbWluZSB0aGUgPGZpbGVuYW1lPm1haW50YWluZXJzLmluYzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSwgd2hpY2ggaXMgbG9jYXRlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGU8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBzZWUgd2hvIGlzIHJlc3BvbnNpYmxlIGZvciBjb2RlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZWFyY2ggYnkgRmlsZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzaW5nIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2dpdCc+R2l0PC91bGluaz4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBlbnRlciB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gYnJpbmcgdXAgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0IGxpc3Qgb2YgYWxsIGNvbW1pdHMgYWdhaW5zdCBhIHNwZWNpZmljIGZpbGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBnaXQgc2hvcnRsb2cgLS0gPHJlcGxhY2VhYmxlPmZpbGVuYW1lPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSnVzdCBwcm92aWRlIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGZvciB3aGljaCB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgaW50ZXJlc3RlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgaW5mb3JtYXRpb24gcmV0dXJuZWQgaXMgbm90IG9yZGVyZWQgYnkgaGlzdG9yeQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBkb2VzIGluY2x1ZGUgYSBsaXN0IG9mIGV2ZXJ5b25lIHdobyBoYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXR0ZWQgZ3JvdXBlZCBieSBuYW1lLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyb20gdGhlIGxpc3QsIHlvdSBjYW4gc2VlIHdobyBpcyByZXNwb25zaWJsZSBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVsayBvZiB0aGUgY2hhbmdlcyBhZ2FpbnN0IHRoZSBmaWxlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FeGFtaW5lIHRoZSBMaXN0IG9mIE1haWxpbmcgTGlzdHM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYSBsaXN0IG9mIHRoZSBZb2N0byBQcm9qZWN0IGFuZCByZWxhdGVkIG1haWxpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0cywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXNvdXJjZXMtbWFpbGluZ2xpc3QnPk1haWxpbmcgbGlzdHM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIGEgUHVsbCBSZXF1ZXN0OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIE5vdGlmeSB0aGUgbWFpbnRhaW5lciBvciB0aGUgbWFpbGluZyBsaXN0IHRoYXQgeW91IGhhdmUKLSAgICAgICAgICAgICAgICAgICAgcHVzaGVkIGEgY2hhbmdlIGJ5IG1ha2luZyBhIHB1bGwgcmVxdWVzdC48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIFlvY3RvIFByb2plY3QgcHJvdmlkZXMgdHdvIHNjcmlwdHMgdGhhdAotICAgICAgICAgICAgICAgICAgICBjb252ZW5pZW50bHkgbGV0IHlvdSBnZW5lcmF0ZSBhbmQgc2VuZCBwdWxsIHJlcXVlc3RzIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgICAgICAgICBUaGVzZSBzY3JpcHRzIGFyZSA8ZmlsZW5hbWU+Y3JlYXRlLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+c2VuZC1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZXNlIHNjcmlwdHMgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzPC9maWxlbmFtZT4gZGlyZWN0b3J5IHdpdGhpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5+L3Bva3kvc2NyaXB0czwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPlVzaW5nIHRoZXNlIHNjcmlwdHMgY29ycmVjdGx5IGZvcm1hdHMgdGhlIHJlcXVlc3RzCi0gICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgaW50cm9kdWNpbmcgYW55IHdoaXRlc3BhY2Ugb3IgSFRNTCBmb3JtYXR0aW5nLgotICAgICAgICAgICAgICAgICAgICBUaGUgbWFpbnRhaW5lciB0aGF0IHJlY2VpdmVzIHlvdXIgcGF0Y2hlcyBlaXRoZXIgZGlyZWN0bHkKLSAgICAgICAgICAgICAgICAgICAgb3IgdGhyb3VnaCB0aGUgbWFpbGluZyBsaXN0IG5lZWRzIHRvIGJlIGFibGUgdG8gc2F2ZSBhbmQKLSAgICAgICAgICAgICAgICAgICAgYXBwbHkgdGhlbSBkaXJlY3RseSBmcm9tIHlvdXIgZW1haWxzLgotICAgICAgICAgICAgICAgICAgICBVc2luZyB0aGVzZSBzY3JpcHRzIGlzIHRoZSBwcmVmZXJyZWQgbWV0aG9kIGZvciBzZW5kaW5nCi0gICAgICAgICAgICAgICAgICAgIHBhdGNoZXMuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPkZpcnN0LCBjcmVhdGUgdGhlIHB1bGwgcmVxdWVzdC4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBydW5zIHRoZSBzY3JpcHQsCi0gICAgICAgICAgICAgICAgICAgIHNwZWNpZmllcyB0aGUgdXBzdHJlYW0gcmVwb3NpdG9yeSBpbiB0aGUgY29udHJpYiBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICAgICAgaW50byB3aGljaCB5b3UgcHVzaGVkIHRoZSBjaGFuZ2UsIGFuZCBwcm92aWRlcyBhIHN1YmplY3QKLSAgICAgICAgICAgICAgICAgICAgbGluZSBpbiB0aGUgY3JlYXRlZCBwYXRjaCBmaWxlczoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIH4vcG9reS9zY3JpcHRzL2NyZWF0ZS1wdWxsLXJlcXVlc3QgLXUgbWV0YS1pbnRlbC1jb250cmliIC1zICJVcGRhdGVkIE1hbnVhbCBTZWN0aW9uIFJlZmVyZW5jZSBpbiBSRUFETUUiCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgUnVubmluZyB0aGlzIHNjcmlwdCBmb3JtcwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5wYXRjaDwvZmlsZW5hbWU+IGZpbGVzIGluIGEgZm9sZGVyIG5hbWVkCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wdWxsLTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPlBJRDwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgT25lIG9mIHRoZSBwYXRjaCBmaWxlcyBpcyBhIGNvdmVyIGxldHRlci48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+QmVmb3JlIHJ1bm5pbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZW5kLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+IHNjcmlwdCwgeW91IG11c3QKLSAgICAgICAgICAgICAgICAgICAgZWRpdCB0aGUgY292ZXIgbGV0dGVyIHBhdGNoIHRvIGluc2VydCBpbmZvcm1hdGlvbiBhYm91dAotICAgICAgICAgICAgICAgICAgICB5b3VyIGNoYW5nZS4KLSAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgZWRpdGluZyB0aGUgY292ZXIgbGV0dGVyLCBzZW5kIHRoZSBwdWxsIHJlcXVlc3QuCi0gICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgcnVucyB0aGUgc2NyaXB0IGFuZAotICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgdGhlIHBhdGNoIGRpcmVjdG9yeSBhbmQgZW1haWwgYWRkcmVzcy4KLSAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUgZW1haWwgYWRkcmVzcyBpcyBhIG1haWxpbmcgbGlzdDoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIH4vcG9reS9zY3JpcHRzL3NlbmQtcHVsbC1yZXF1ZXN0IC1wIH4vbWV0YS1pbnRlbC9wdWxsLTEwNTY1IC10IG1ldGEtaW50ZWxAeW9jdG9wcm9qZWN0Lm9yZwotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGZvbGxvdyB0aGUgcHJvbXB0cyBhcyB0aGUgc2NyaXB0IGlzCi0gICAgICAgICAgICAgICAgICAgIGludGVyYWN0aXZlLgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBoZWxwIG9uIHVzaW5nIHRoZXNlIHNjcmlwdHMsIHNpbXBseSBwcm92aWRlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1oPC9maWxlbmFtZT4gYXJndW1lbnQgYXMgZm9sbG93czoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBwb2t5L3NjcmlwdHMvY3JlYXRlLXB1bGwtcmVxdWVzdCAtaAotICAgICAkIHBva3kvc2NyaXB0cy9zZW5kLXB1bGwtcmVxdWVzdCAtaAotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdzdWJtaXR0aW5nLWEtcGF0Y2gnPgotICAgICAgICA8dGl0bGU+VXNpbmcgRW1haWwgdG8gU3VibWl0IGEgUGF0Y2g8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IGNhbiBzdWJtaXQgcGF0Y2hlcyB3aXRob3V0IHVzaW5nIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPmNyZWF0ZS1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgIDxmaWxlbmFtZT5zZW5kLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+IHNjcmlwdHMgZGVzY3JpYmVkIGluIHRoZQotICAgICAgICAgICAgcHJldmlvdXMgc2VjdGlvbi4KLSAgICAgICAgICAgIEhvd2V2ZXIsIGtlZXAgaW4gbWluZCwgdGhlIHByZWZlcnJlZCBtZXRob2QgaXMgdG8gdXNlIHRoZSBzY3JpcHRzLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhlIGNvbXBvbmVudHMgY2hhbmdlZCwgeW91IG5lZWQgdG8gc3VibWl0IHRoZSBlbWFpbAotICAgICAgICAgICAgdG8gYSBzcGVjaWZpYyBtYWlsaW5nIGxpc3QuCi0gICAgICAgICAgICBGb3Igc29tZSBndWlkYW5jZSBvbiB3aGljaCBtYWlsaW5nIGxpc3QgdG8gdXNlLCBzZWUgdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdmaWd1cmluZy1vdXQtdGhlLW1haWxpbmctbGlzdC10by11c2UnPmJlZ2lubmluZzwvbGluaz4KLSAgICAgICAgICAgIG9mIHRoaXMgc2VjdGlvbi4KLSAgICAgICAgICAgIEZvciBhIGRlc2NyaXB0aW9uIG9mIGFsbCB0aGUgYXZhaWxhYmxlIG1haWxpbmcgbGlzdHMsIHNlZSB0aGUKLSAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXNvdXJjZXMtbWFpbGluZ2xpc3QnPk1haWxpbmcgTGlzdHM8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSGVyZSBpcyB0aGUgZ2VuZXJhbCBwcm9jZWR1cmUgb24gaG93IHRvIHN1Ym1pdCBhIHBhdGNoIHRocm91Z2gKLSAgICAgICAgICAgIGVtYWlsIHdpdGhvdXQgdXNpbmcgdGhlIHNjcmlwdHM6Ci0gICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBZb3VyIENoYW5nZXMgTG9jYWxseTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBNYWtlIHlvdXIgY2hhbmdlcyBpbiB5b3VyIGxvY2FsIEdpdCByZXBvc2l0b3J5LgotICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIG1ha2Ugc21hbGwsIGNvbnRyb2xsZWQsIGlzb2xhdGVkIGNoYW5nZXMuCi0gICAgICAgICAgICAgICAgICAgIEtlZXBpbmcgY2hhbmdlcyBzbWFsbCBhbmQgaXNvbGF0ZWQgYWlkcyByZXZpZXcsCi0gICAgICAgICAgICAgICAgICAgIG1ha2VzIG1lcmdpbmcvcmViYXNpbmcgZWFzaWVyIGFuZCBrZWVwcyB0aGUgY2hhbmdlCi0gICAgICAgICAgICAgICAgICAgIGhpc3RvcnkgY2xlYW4gc2hvdWxkIGFueW9uZSBuZWVkIHRvIHJlZmVyIHRvIGl0IGluCi0gICAgICAgICAgICAgICAgICAgIGZ1dHVyZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U3RhZ2UgWW91ciBDaGFuZ2VzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFN0YWdlIHlvdXIgY2hhbmdlcyBieSB1c2luZyB0aGUgPGZpbGVuYW1lPmdpdCBhZGQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBjb21tYW5kIG9uIGVhY2ggZmlsZSB5b3UgY2hhbmdlZC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29tbWl0IFlvdXIgQ2hhbmdlczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBDb21taXQgdGhlIGNoYW5nZSBieSB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBjb21taXQgLS1zaWdub2ZmPC9maWxlbmFtZT4gY29tbWFuZC4KLSAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhlIDxmaWxlbmFtZT4tLXNpZ25vZmY8L2ZpbGVuYW1lPiBvcHRpb24gaWRlbnRpZmllcwotICAgICAgICAgICAgICAgICAgICB5b3UgYXMgdGhlIHBlcnNvbiBtYWtpbmcgdGhlIGNoYW5nZSBhbmQgYWxzbyBzYXRpc2ZpZXMKLSAgICAgICAgICAgICAgICAgICAgdGhlIERldmVsb3BlcidzIENlcnRpZmljYXRlIG9mIE9yaWdpbiAoRENPKSBzaG93biBlYXJsaWVyLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+V2hlbiB5b3UgZm9ybSBhIGNvbW1pdCwgeW91IG11c3QgZm9sbG93IGNlcnRhaW4KLSAgICAgICAgICAgICAgICAgICAgc3RhbmRhcmRzIGVzdGFibGlzaGVkIGJ5IHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50Ci0gICAgICAgICAgICAgICAgICAgIHRlYW0uCi0gICAgICAgICAgICAgICAgICAgIFNlZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdtYWtpbmctc3VyZS15b3UtaGF2ZS1jb3JyZWN0LWNvbW1pdC1pbmZvcm1hdGlvbic+U3RlcCAzPC9saW5rPgotICAgICAgICAgICAgICAgICAgICBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvCi0gICAgICAgICAgICAgICAgICAgIHByb3ZpZGUgY29tbWl0IGluZm9ybWF0aW9uIHRoYXQgbWVldHMgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICBjb21taXQgbWVzc2FnZSBzdGFuZGFyZHMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkZvcm1hdCB0aGUgQ29tbWl0OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIEZvcm1hdCB0aGUgY29tbWl0IGludG8gYW4gZW1haWwgbWVzc2FnZS4KLSAgICAgICAgICAgICAgICAgICAgVG8gZm9ybWF0IGNvbW1pdHMsIHVzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBmb3JtYXQtcGF0Y2g8L2ZpbGVuYW1lPiBjb21tYW5kLgotICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBwcm92aWRlIHRoZSBjb21tYW5kLCB5b3UgbXVzdCBpbmNsdWRlIGEgcmV2aXNpb24KLSAgICAgICAgICAgICAgICAgICAgbGlzdCBvciBhIG51bWJlciBvZiBwYXRjaGVzIGFzIHBhcnQgb2YgdGhlIGNvbW1hbmQuCi0gICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBlaXRoZXIgb2YgdGhlc2UgdHdvIGNvbW1hbmRzIHRha2VzIHlvdXIgbW9zdAotICAgICAgICAgICAgICAgICAgICByZWNlbnQgc2luZ2xlIGNvbW1pdCBhbmQgZm9ybWF0cyBpdCBhcyBhbiBlbWFpbCBtZXNzYWdlIGluCi0gICAgICAgICAgICAgICAgICAgIHRoZSBjdXJyZW50IGRpcmVjdG9yeToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGdpdCBmb3JtYXQtcGF0Y2ggLTEKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBvcgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZ2l0IGZvcm1hdC1wYXRjaCBIRUFEfgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPkFmdGVyIHRoZSBjb21tYW5kIGlzIHJ1biwgdGhlIGN1cnJlbnQgZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zIGEgbnVtYmVyZWQgPGZpbGVuYW1lPi5wYXRjaDwvZmlsZW5hbWU+IGZpbGUgZm9yCi0gICAgICAgICAgICAgICAgICAgIHRoZSBjb21taXQuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBwcm92aWRlIHNldmVyYWwgY29tbWl0cyBhcyBwYXJ0IG9mIHRoZQotICAgICAgICAgICAgICAgICAgICBjb21tYW5kLCB0aGUgPGZpbGVuYW1lPmdpdCBmb3JtYXQtcGF0Y2g8L2ZpbGVuYW1lPiBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgIHByb2R1Y2VzIGEgc2VyaWVzIG9mIG51bWJlcmVkIGZpbGVzIGluIHRoZSBjdXJyZW50Ci0gICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSDigJMgb25lIGZvciBlYWNoIGNvbW1pdC4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgbW9yZSB0aGFuIG9uZSBwYXRjaCwgeW91IHNob3VsZCBhbHNvIHVzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi0tY292ZXI8L2ZpbGVuYW1lPiBvcHRpb24gd2l0aCB0aGUgY29tbWFuZCwKLSAgICAgICAgICAgICAgICAgICAgd2hpY2ggZ2VuZXJhdGVzIGEgY292ZXIgbGV0dGVyIGFzIHRoZSBmaXJzdCAicGF0Y2giIGluCi0gICAgICAgICAgICAgICAgICAgIHRoZSBzZXJpZXMuCi0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdGhlbiBlZGl0IHRoZSBjb3ZlciBsZXR0ZXIgdG8gcHJvdmlkZSBhCi0gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uIGZvciB0aGUgc2VyaWVzIG9mIHBhdGNoZXMuCi0gICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBmb3JtYXQtcGF0Y2g8L2ZpbGVuYW1lPiBjb21tYW5kLAotICAgICAgICAgICAgICAgICAgICBzZWUgPGZpbGVuYW1lPkdJVF9GT1JNQVRfUEFUQ0goMSk8L2ZpbGVuYW1lPiBkaXNwbGF5ZWQKLSAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIDxmaWxlbmFtZT5tYW4gZ2l0LWZvcm1hdC1wYXRjaDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGNvbW1hbmQuCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSBvciB3aWxsIGJlIGEgZnJlcXVlbnQgY29udHJpYnV0b3IgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IG9yIHRvIE9wZW5FbWJlZGRlZCwgeW91IG1pZ2h0IGNvbnNpZGVyCi0gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0aW5nIGEgY29udHJpYiBhcmVhIGFuZCB0aGUgbmVjZXNzYXJ5IGFzc29jaWF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0cy4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5JbXBvcnQgdGhlIEZpbGVzIEludG8gWW91ciBNYWlsIENsaWVudDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBJbXBvcnQgdGhlIGZpbGVzIGludG8geW91ciBtYWlsIGNsaWVudCBieSB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBzZW5kLWVtYWlsPC9maWxlbmFtZT4gY29tbWFuZC4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJbiBvcmRlciB0byB1c2UgPGZpbGVuYW1lPmdpdCBzZW5kLWVtYWlsPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3UgbXVzdCBoYXZlIHRoZSBwcm9wZXIgR2l0IHBhY2thZ2VzIGluc3RhbGxlZCBvbgotICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBob3N0LgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIFVidW50dSwgRGViaWFuLCBhbmQgRmVkb3JhIHRoZSBwYWNrYWdlIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0LWVtYWlsPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIDxmaWxlbmFtZT5naXQgc2VuZC1lbWFpbDwvZmlsZW5hbWU+IGNvbW1hbmQKLSAgICAgICAgICAgICAgICAgICAgc2VuZHMgZW1haWwgYnkgdXNpbmcgYSBsb2NhbCBvciByZW1vdGUgTWFpbCBUcmFuc3BvcnQgQWdlbnQKLSAgICAgICAgICAgICAgICAgICAgKE1UQSkgc3VjaCBhcyA8ZmlsZW5hbWU+bXNtdHA8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNlbmRtYWlsPC9maWxlbmFtZT4sIG9yIHRocm91Z2ggYSBkaXJlY3QKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNtdHA8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGluIHlvdXIgR2l0Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5+Ly5naXRjb25maWc8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHN1Ym1pdHRpbmcgcGF0Y2hlcyB0aHJvdWdoIGVtYWlsIG9ubHksIGl0IGlzCi0gICAgICAgICAgICAgICAgICAgIHZlcnkgaW1wb3J0YW50IHRoYXQgeW91IHN1Ym1pdCB0aGVtIHdpdGhvdXQgYW55IHdoaXRlc3BhY2UKLSAgICAgICAgICAgICAgICAgICAgb3IgSFRNTCBmb3JtYXR0aW5nIHRoYXQgZWl0aGVyIHlvdSBvciB5b3VyIG1haWxlcgotICAgICAgICAgICAgICAgICAgICBpbnRyb2R1Y2VzLgotICAgICAgICAgICAgICAgICAgICBUaGUgbWFpbnRhaW5lciB0aGF0IHJlY2VpdmVzIHlvdXIgcGF0Y2hlcyBuZWVkcyB0byBiZSBhYmxlCi0gICAgICAgICAgICAgICAgICAgIHRvIHNhdmUgYW5kIGFwcGx5IHRoZW0gZGlyZWN0bHkgZnJvbSB5b3VyIGVtYWlscy4KLSAgICAgICAgICAgICAgICAgICAgQSBnb29kIHdheSB0byB2ZXJpZnkgdGhhdCB3aGF0IHlvdSBhcmUgc2VuZGluZyB3aWxsIGJlCi0gICAgICAgICAgICAgICAgICAgIGFwcGxpY2FibGUgYnkgdGhlIG1haW50YWluZXIgaXMgdG8gZG8gYSBkcnkgcnVuIGFuZCBzZW5kCi0gICAgICAgICAgICAgICAgICAgIHRoZW0gdG8geW91cnNlbGYgYW5kIHRoZW4gc2F2ZSBhbmQgYXBwbHkgdGhlbSBhcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgbWFpbnRhaW5lciB3b3VsZC48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIDxmaWxlbmFtZT5naXQgc2VuZC1lbWFpbDwvZmlsZW5hbWU+IGNvbW1hbmQgaXMKLSAgICAgICAgICAgICAgICAgICAgdGhlIHByZWZlcnJlZCBtZXRob2QgZm9yIHNlbmRpbmcgeW91ciBwYXRjaGVzIHVzaW5nCi0gICAgICAgICAgICAgICAgICAgIGVtYWlsIHNpbmNlIHRoZXJlIGlzIG5vIHJpc2sgb2YgY29tcHJvbWlzaW5nIHdoaXRlc3BhY2UKLSAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UsIHdoaWNoIGNhbiBvY2N1ciB3aGVuIHlvdSB1c2UKLSAgICAgICAgICAgICAgICAgICAgeW91ciBvd24gbWFpbCBjbGllbnQuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBjb21tYW5kIGFsc28gaGFzIHNldmVyYWwgb3B0aW9ucyB0aGF0IGxldCB5b3UKLSAgICAgICAgICAgICAgICAgICAgc3BlY2lmeSByZWNpcGllbnRzIGFuZCBwZXJmb3JtIGZ1cnRoZXIgZWRpdGluZyBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgZW1haWwgbWVzc2FnZS4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgc2VuZC1lbWFpbDwvZmlsZW5hbWU+IGNvbW1hbmQsCi0gICAgICAgICAgICAgICAgICAgIHNlZSA8ZmlsZW5hbWU+R0lULVNFTkQtRU1BSUwoMSk8L2ZpbGVuYW1lPiBkaXNwbGF5ZWQgdXNpbmcKLSAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5tYW4gZ2l0LXNlbmQtZW1haWw8L2ZpbGVuYW1lPiBjb21tYW5kLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci08L3NlY3Rpb24+Ci08L2NoYXB0ZXI+Ci08IS0tCi12aW06IGV4cGFuZHRhYiB0dz04MCB0cz00Ci0tLT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1xZW11LnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1xZW11LnhtbAppbmRleCA4NWU3MzE1Li40ZTdiNWRlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtcWVtdS54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXFlbXUueG1sCkBAIC03LDE1ICs3LDUxIEBACiA8dGl0bGU+VXNpbmcgdGhlIFF1aWNrIEVNVWxhdG9yIChRRU1VKTwvdGl0bGU+CiAKICAgICA8cGFyYT4KLSAgICAgICAgVGhpcyBjaGFwdGVyIHByb3ZpZGVzIHByb2NlZHVyZXMgdGhhdCBzaG93IHlvdSBob3cgdG8gdXNlIHRoZQotICAgICAgICBRdWljayBFTVVsYXRvciAoUUVNVSksIHdoaWNoIGlzIGFuIE9wZW4gU291cmNlIHByb2plY3QgdGhlIFlvY3RvCi0gICAgICAgIFByb2plY3QgdXNlcyBhcyBwYXJ0IG9mIGl0cyBkZXZlbG9wbWVudCAidG9vbCBzZXQiLgotICAgICAgICBGb3IgcmVmZXJlbmNlIGluZm9ybWF0aW9uIG9uIHRoZSBZb2N0byBQcm9qZWN0IGltcGxlbWVudGF0aW9uIG9mIFFFTVUsCi0gICAgICAgIHNlZSB0aGUKLSAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1xdWljay1lbXVsYXRvci1xZW11Jz5RdWljayBFTVVsYXRvciAoUUVNVSk8L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB1c2VzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBRdWljayBFTVVsYXRvciAoUUVNVSkKKyAgICAgICAgT3BlbiBTb3VyY2UgcHJvamVjdCBhcyBwYXJ0IG9mIHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50ICJ0b29sCisgICAgICAgIHNldCIuCisgICAgICAgIFRoaXMgY2hhcHRlciBwcm92aWRlcyBib3RoIHByb2NlZHVyZXMgdGhhdCBzaG93IHlvdSBob3cgdG8gdXNlIHRoZQorICAgICAgICBRdWljayBFTVVsYXRvciAoUUVNVSkgYW5kIG90aGVyIFFFTVUgaW5mb3JtYXRpb24gaGVscGZ1bCBmb3IKKyAgICAgICAgZGV2ZWxvcG1lbnQgcHVycG9zZXMuCiAgICAgPC9wYXJhPgogCisgICAgPHNlY3Rpb24gaWQ9J3FlbXUtZGV2LW92ZXJ2aWV3Jz4KKyAgICAgICAgPHRpdGxlPk92ZXJ2aWV3PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgWW9jdG8gUHJvamVjdCwgUUVNVSBpcyBhbgorICAgICAgICAgICAgZW11bGF0b3IgYW5kIHZpcnR1YWxpemF0aW9uIG1hY2hpbmUgdGhhdCBhbGxvd3MgeW91IHRvIHJ1biBhCisgICAgICAgICAgICBjb21wbGV0ZSBpbWFnZSB5b3UgaGF2ZSBidWlsdCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCBhcyBqdXN0CisgICAgICAgICAgICBhbm90aGVyIHRhc2sgb24geW91ciBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICBRRU1VIGlzIHVzZWZ1bCBmb3IgcnVubmluZyBhbmQgdGVzdGluZyBpbWFnZXMgYW5kIGFwcGxpY2F0aW9ucyBvbgorICAgICAgICAgICAgc3VwcG9ydGVkIFlvY3RvIFByb2plY3QgYXJjaGl0ZWN0dXJlcyB3aXRob3V0IGhhdmluZyBhY3R1YWwKKyAgICAgICAgICAgIGhhcmR3YXJlLgorICAgICAgICAgICAgQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGUgWW9jdG8gUHJvamVjdCB1c2VzIFFFTVUgdG8gcnVuIGF1dG9tYXRlZAorICAgICAgICAgICAgUXVhbGl0eSBBc3N1cmFuY2UgKFFBKSB0ZXN0cyBvbiBmaW5hbCBpbWFnZXMgc2hpcHBlZCB3aXRoIGVhY2gKKyAgICAgICAgICAgIHJlbGVhc2UuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBUaGlzIGltcGxlbWVudGF0aW9uIGlzIG5vdCB0aGUgc2FtZSBhcyBRRU1VIGluIGdlbmVyYWwuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgYSBicmllZiByZWZlcmVuY2UgZm9yIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBRRU1VLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3Igb2ZmaWNpYWwgaW5mb3JtYXRpb24gYW5kIGRvY3VtZW50YXRpb24gb24gUUVNVSBpbiBnZW5lcmFsLCBzZWUKKyAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgcmVmZXJlbmNlczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PHVsaW5rIHVybD0naHR0cDovL3dpa2kucWVtdS5vcmcvTWFpbl9QYWdlJz5RRU1VIFdlYnNpdGU8L3VsaW5rPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgb2ZmaWNpYWwgd2Vic2l0ZSBmb3IgdGhlIFFFTVUgT3BlbiBTb3VyY2UgcHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PHVsaW5rIHVybD0naHR0cDovL3dpa2kucWVtdS5vcmcvTWFudWFsJz5Eb2N1bWVudGF0aW9uPC91bGluaz46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIFFFTVUgdXNlciBtYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKICAgICA8c2VjdGlvbiBpZD0ncWVtdS1ydW5uaW5nLXFlbXUnPgogICAgICAgICA8dGl0bGU+UnVubmluZyBRRU1VPC90aXRsZT4KIApAQCAtMjcsNiArNjMsOSBAQAogICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluc3RhbGwgUUVNVTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBRRU1VIGlzIG1hZGUgYXZhaWxhYmxlIHdpdGggdGhlIFlvY3RvIFByb2plY3QgYSBudW1iZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgd2F5cy4KKyAgICAgICAgICAgICAgICAgICAgT25lIG1ldGhvZCBpcyB0byBpbnN0YWxsIGEgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspLgogICAgICAgICAgICAgICAgICAgICBTZWUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3RoZS1xZW11LWVtdWxhdG9yJz5UaGUgUUVNVSBFbXVsYXRvcjwvdWxpbms+IgogICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZApAQCAtMzAzLDYgKzM0MiwzNDUgQEAKICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdxZW11LWt2bS1jcHUtY29tcGF0aWJpbGl0eSc+CisgICAgICAgIDx0aXRsZT5RRU1VIENQVSBDb21wYXRpYmlsaXR5IFVuZGVyIEtWTTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgUUVNVSBidWlsZCBjb21waWxlcyBmb3IgYW5kIHRhcmdldHMgNjQtYml0IGFuZCB4ODYKKyAgICAgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3JlZ2lzdGVyZWQnPkludGVsPC90cmFkZW1hcms+IDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlbWFyayc+Q29yZTwvdHJhZGVtYXJrPjIKKyAgICAgICAgICAgIER1byBwcm9jZXNzb3JzIGFuZCAzMi1iaXQgeDg2CisgICAgICAgICAgICA8dHJhZGVtYXJrIGNsYXNzPSdyZWdpc3RlcmVkJz5JbnRlbDwvdHJhZGVtYXJrPiA8dHJhZGVtYXJrIGNsYXNzPSdyZWdpc3RlcmVkJz5QZW50aXVtPC90cmFkZW1hcms+CisgICAgICAgICAgICBJSSBwcm9jZXNzb3JzLgorICAgICAgICAgICAgUUVNVSBidWlsZHMgZm9yIGFuZCB0YXJnZXRzIHRoZXNlIENQVSB0eXBlcyBiZWNhdXNlIHRoZXkgZGlzcGxheQorICAgICAgICAgICAgYSBicm9hZCByYW5nZSBvZiBDUFUgZmVhdHVyZSBjb21wYXRpYmlsaXR5IHdpdGggbWFueSBjb21tb25seQorICAgICAgICAgICAgdXNlZCBDUFVzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBEZXNwaXRlIHRoaXMgYnJvYWQgcmFuZ2Ugb2YgY29tcGF0aWJpbGl0eSwgdGhlIENQVXMgY291bGQgc3VwcG9ydAorICAgICAgICAgICAgYSBmZWF0dXJlIHRoYXQgeW91ciBob3N0IENQVSBkb2VzIG5vdCBzdXBwb3J0LgorICAgICAgICAgICAgQWx0aG91Z2ggdGhpcyBzaXR1YXRpb24gaXMgbm90IGEgcHJvYmxlbSB3aGVuIFFFTVUgdXNlcyBzb2Z0d2FyZQorICAgICAgICAgICAgZW11bGF0aW9uIG9mIHRoZSBmZWF0dXJlLCBpdCBjYW4gYmUgYSBwcm9ibGVtIHdoZW4gUUVNVSBpcworICAgICAgICAgICAgcnVubmluZyB3aXRoIEtWTSBlbmFibGVkLgorICAgICAgICAgICAgU3BlY2lmaWNhbGx5LCBzb2Z0d2FyZSBjb21waWxlZCB3aXRoIGEgY2VydGFpbiBDUFUgZmVhdHVyZSBjcmFzaGVzCisgICAgICAgICAgICB3aGVuIHJ1biBvbiBhIENQVSB1bmRlciBLVk0gdGhhdCBkb2VzIG5vdCBzdXBwb3J0IHRoYXQgZmVhdHVyZS4KKyAgICAgICAgICAgIFRvIHdvcmsgYXJvdW5kIHRoaXMgcHJvYmxlbSwgeW91IGNhbiBvdmVycmlkZSBRRU1VJ3MgcnVudGltZSBDUFUKKyAgICAgICAgICAgIHNldHRpbmcgYnkgY2hhbmdpbmcgdGhlIDxmaWxlbmFtZT5RQl9DUFVfS1ZNPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHZhcmlhYmxlIGluIDxmaWxlbmFtZT5xZW11Ym9vdC5jb25mPC9maWxlbmFtZT4gaW4gdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeSdzPC91bGluaz4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3kvaW1hZ2U8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICBUaGlzIHNldHRpbmcgc3BlY2lmaWVzIGEgPGZpbGVuYW1lPi1jcHU8L2ZpbGVuYW1lPiBvcHRpb24KKyAgICAgICAgICAgIHBhc3NlZCBpbnRvIFFFTVUgaW4gdGhlIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gc2NyaXB0LgorICAgICAgICAgICAgUnVubmluZyA8ZmlsZW5hbWU+cWVtdSAtY3B1IGhlbHA8L2ZpbGVuYW1lPiByZXR1cm5zIGEgbGlzdCBvZgorICAgICAgICAgICAgYXZhaWxhYmxlIHN1cHBvcnRlZCBDUFUgdHlwZXMuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncWVtdS1kZXYtcGVyZm9ybWFuY2UnPgorICAgICAgICA8dGl0bGU+UUVNVSBQZXJmb3JtYW5jZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBVc2luZyBRRU1VIHRvIGVtdWxhdGUgeW91ciBoYXJkd2FyZSBjYW4gcmVzdWx0IGluIHNwZWVkIGlzc3VlcworICAgICAgICAgICAgZGVwZW5kaW5nIG9uIHRoZSB0YXJnZXQgYW5kIGhvc3QgYXJjaGl0ZWN0dXJlIG1peC4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCB1c2luZyB0aGUgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPiBpbWFnZSBpbiB0aGUKKyAgICAgICAgICAgIGVtdWxhdG9yIG9uIGFuIEludGVsLWJhc2VkIDMyLWJpdCAoeDg2KSBob3N0IG1hY2hpbmUgaXMgZmFzdAorICAgICAgICAgICAgYmVjYXVzZSB0aGUgdGFyZ2V0IGFuZCBob3N0IGFyY2hpdGVjdHVyZXMgbWF0Y2guCisgICAgICAgICAgICBPbiB0aGUgb3RoZXIgaGFuZCwgdXNpbmcgdGhlIDxmaWxlbmFtZT5xZW11YXJtPC9maWxlbmFtZT4gaW1hZ2UKKyAgICAgICAgICAgIG9uIHRoZSBzYW1lIEludGVsLWJhc2VkIGhvc3QgY2FuIGJlIHNsb3dlci4KKyAgICAgICAgICAgIEJ1dCwgeW91IHN0aWxsIGFjaGlldmUgZmFpdGhmdWwgZW11bGF0aW9uIG9mIEFSTS1zcGVjaWZpYyBpc3N1ZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRvIHNwZWVkIHRoaW5ncyB1cCwgdGhlIFFFTVUgaW1hZ2VzIHN1cHBvcnQgdXNpbmcKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kaXN0Y2M8L2ZpbGVuYW1lPiB0byBjYWxsIGEgY3Jvc3MtY29tcGlsZXIgb3V0c2lkZSB0aGUKKyAgICAgICAgICAgIGVtdWxhdGVkIHN5c3RlbS4KKyAgICAgICAgICAgIElmIHlvdSB1c2VkIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gdG8gc3RhcnQgUUVNVSwgYW5kIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmRpc3RjY2Q8L2ZpbGVuYW1lPiBhcHBsaWNhdGlvbiBpcyBwcmVzZW50IG9uIHRoZSBob3N0CisgICAgICAgICAgICBzeXN0ZW0sIGFueSBCaXRCYWtlIGNyb3NzLWNvbXBpbGluZyB0b29sY2hhaW4gYXZhaWxhYmxlIGZyb20gdGhlCisgICAgICAgICAgICBidWlsZCBzeXN0ZW0gaXMgYXV0b21hdGljYWxseSB1c2VkIGZyb20gd2l0aGluIFFFTVUgc2ltcGx5IGJ5CisgICAgICAgICAgICBjYWxsaW5nIDxmaWxlbmFtZT5kaXN0Y2M8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIFlvdSBjYW4gYWNjb21wbGlzaCB0aGlzIGJ5IGRlZmluaW5nIHRoZSBjcm9zcy1jb21waWxlciB2YXJpYWJsZQorICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPmV4cG9ydCBDQz0iZGlzdGNjIjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIGlmIHlvdSBhcmUgdXNpbmcgYSBzdWl0YWJsZSBTREsgaW1hZ2Ugb3IgdGhlCisgICAgICAgICAgICBhcHByb3ByaWF0ZSBzdGFuZC1hbG9uZSB0b29sY2hhaW4gaXMgcHJlc2VudCwgdGhlIHRvb2xjaGFpbiBpcworICAgICAgICAgICAgYWxzbyBhdXRvbWF0aWNhbGx5IHVzZWQuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBTZXZlcmFsIG1lY2hhbmlzbXMgZXhpc3QgdGhhdCBsZXQgeW91IGNvbm5lY3QgdG8gdGhlIHN5c3RlbQorICAgICAgICAgICAgICAgIHJ1bm5pbmcgb24gdGhlIFFFTVUgZW11bGF0b3I6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgUUVNVSBwcm92aWRlcyBhIGZyYW1lYnVmZmVyIGludGVyZmFjZSB0aGF0IG1ha2VzCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFuZGFyZCBjb25zb2xlcyBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhbGx5LCBoZWFkbGVzcyBlbWJlZGRlZCBkZXZpY2VzIGhhdmUgYSBzZXJpYWwgcG9ydC4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHNvLCB5b3UgY2FuIGNvbmZpZ3VyZSB0aGUgb3BlcmF0aW5nIHN5c3RlbSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmcgaW1hZ2UgdG8gdXNlIHRoYXQgcG9ydCB0byBydW4gYSBjb25zb2xlLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNvbm5lY3Rpb24gdXNlcyBzdGFuZGFyZCBJUCBuZXR3b3JraW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNTSCBzZXJ2ZXJzIGV4aXN0IGluIHNvbWUgUUVNVSBpbWFnZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+IFFFTVUgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhcyBhIERyb3BiZWFyIHNlY3VyZSBzaGVsbCAoU1NIKSBzZXJ2ZXIgdGhhdCBydW5zCisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSByb290IHBhc3N3b3JkIGRpc2FibGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5jb3JlLWltYWdlLWZ1bGwtY21kbGluZTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbHNiPC9maWxlbmFtZT4gUUVNVSBpbWFnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmUgT3BlblNTSCBpbnN0ZWFkIG9mIERyb3BiZWFyLgorICAgICAgICAgICAgICAgICAgICAgICAgSW5jbHVkaW5nIHRoZXNlIFNTSCBzZXJ2ZXJzIGFsbG93IHlvdSB0byB1c2Ugc3RhbmRhcmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc2g8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPnNjcDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4gUUVNVSBpbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhvd2V2ZXIsIGNvbnRhaW5zIG5vIFNTSCBzZXJ2ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgYSBwcm92aWRlZCwgdXNlci1zcGFjZSBORlMgc2VydmVyIHRvIGJvb3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBRRU1VIHNlc3Npb24gdXNpbmcgYSBsb2NhbCBjb3B5IG9mIHRoZSByb290CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIG9uIHRoZSBob3N0LgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gbWFrZSB0aGlzIGNvbm5lY3Rpb24sIHlvdSBtdXN0IGV4dHJhY3QgYQorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtIHRhcmJhbGwgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdS1leHRyYWN0LXNkazwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgICAgICBBZnRlciBydW5uaW5nIHRoZSBjb21tYW5kLCB5b3UgbXVzdCB0aGVuIHBvaW50IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0IHRvIHRoZSBleHRyYWN0ZWQgZGlyZWN0b3J5IGluc3RlYWQgb2YgYSByb290CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIGltYWdlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncWVtdS1ydW5uaW5nLXVuZGVyLWEtbmV0d29yay1maWxlLXN5c3RlbS1uZnMtc2VydmVyJz5SdW5uaW5nIFVuZGVyIGEgTmV0d29yayBGaWxlIFN5c3RlbSAoTkZTKSBTZXJ2ZXI8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3FlbXUtZGV2LWNvbW1hbmQtbGluZS1zeW50YXgnPgorICAgICAgICA8dGl0bGU+UUVNVSBDb21tYW5kLUxpbmUgU3ludGF4PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBiYXNpYyA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IGNvbW1hbmQgc3ludGF4IGlzIGFzCisgICAgICAgICAgICBmb2xsb3dzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHJ1bnFlbXUgWzxyZXBsYWNlYWJsZT5vcHRpb248L3JlcGxhY2VhYmxlPiBdICBbLi4uXQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgQmFzZWQgb24gd2hhdCB5b3UgcHJvdmlkZSBvbiB0aGUgY29tbWFuZCBsaW5lLAorICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBkb2VzIGEgZ29vZCBqb2Igb2YgZmlndXJpbmcgb3V0IHdoYXQKKyAgICAgICAgICAgIHlvdSBhcmUgdHJ5aW5nIHRvIGRvLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGJ5IGRlZmF1bHQsIFFFTVUgbG9va3MgZm9yIHRoZSBtb3N0IHJlY2VudGx5IGJ1aWx0CisgICAgICAgICAgICBpbWFnZSBhY2NvcmRpbmcgdG8gdGhlIHRpbWVzdGFtcCB3aGVuIGl0IG5lZWRzIHRvIGxvb2sgZm9yIGFuCisgICAgICAgICAgICBpbWFnZS4KKyAgICAgICAgICAgIE1pbmltYWxseSwgdGhyb3VnaCB0aGUgdXNlIG9mIG9wdGlvbnMsIHlvdSBtdXN0IHByb3ZpZGUgZWl0aGVyCisgICAgICAgICAgICBhIG1hY2hpbmUgbmFtZSwgYSB2aXJ0dWFsIG1hY2hpbmUgaW1hZ2UKKyAgICAgICAgICAgICg8ZmlsZW5hbWU+KndpYy52bWRrPC9maWxlbmFtZT4pLCBvciBhIGtlcm5lbCBpbWFnZQorICAgICAgICAgICAgKDxmaWxlbmFtZT4qLmJpbjwvZmlsZW5hbWU+KS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93aW5nIGlzIHRoZSBjb21tYW5kLWxpbmUgaGVscCBvdXRwdXQgZm9yIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBjb21tYW5kOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHJ1bnFlbXUgLS1oZWxwCisKKyAgICAgVXNhZ2U6IHlvdSBjYW4gcnVuIHRoaXMgc2NyaXB0IHdpdGggYW55IHZhbGlkIGNvbWJpbmF0aW9uCisgICAgIG9mIHRoZSBmb2xsb3dpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIChpbiBhbnkgb3JkZXIpOgorICAgICAgIEtFUk5FTCAtIHRoZSBrZXJuZWwgaW1hZ2UgZmlsZSB0byB1c2UKKyAgICAgICBST09URlMgLSB0aGUgcm9vdGZzIGltYWdlIGZpbGUgb3IgbmZzcm9vdCBkaXJlY3RvcnkgdG8gdXNlCisgICAgICAgTUFDSElORSAtIHRoZSBtYWNoaW5lIG5hbWUgKG9wdGlvbmFsLCBhdXRvZGV0ZWN0ZWQgZnJvbSBLRVJORUwgZmlsZW5hbWUgaWYgdW5zcGVjaWZpZWQpCisgICAgICAgU2ltcGxpZmllZCBRRU1VIGNvbW1hbmQtbGluZSBvcHRpb25zIGNhbiBiZSBwYXNzZWQgd2l0aDoKKyAgICAgICAgIG5vZ3JhcGhpYyAtIGRpc2FibGUgdmlkZW8gY29uc29sZQorICAgICAgICAgc2VyaWFsIC0gZW5hYmxlIGEgc2VyaWFsIGNvbnNvbGUgb24gL2Rldi90dHlTMAorICAgICAgICAgc2xpcnAgLSBlbmFibGUgdXNlciBuZXR3b3JraW5nLCBubyByb290IHByaXZpbGVnZXMgaXMgcmVxdWlyZWQKKyAgICAgICAgIGt2bSAtIGVuYWJsZSBLVk0gd2hlbiBydW5uaW5nIHg4Ni94ODZfNjQgKFZULWNhcGFibGUgQ1BVIHJlcXVpcmVkKQorICAgICAgICAga3ZtLXZob3N0IC0gZW5hYmxlIEtWTSB3aXRoIHZob3N0IHdoZW4gcnVubmluZyB4ODYveDg2XzY0IChWVC1jYXBhYmxlIENQVSByZXF1aXJlZCkKKyAgICAgICAgIHB1YmxpY3ZuYyAtIGVuYWJsZSBhIFZOQyBzZXJ2ZXIgb3BlbiB0byBhbGwgaG9zdHMKKyAgICAgICAgIGF1ZGlvIC0gZW5hYmxlIGF1ZGlvCisgICAgICAgICBbKi9db3ZtZiogLSBPVk1GIGZpcm13YXJlIGZpbGUgb3IgYmFzZSBuYW1lIGZvciBib290aW5nIHdpdGggVUVGSQorICAgICAgIHRjcHNlcmlhbD0mbHQ7cG9ydCZndDsgLSBzcGVjaWZ5IHRjcCBzZXJpYWwgcG9ydCBudW1iZXIKKyAgICAgICBiaW9zZGlyPSZsdDtkaXImZ3Q7IC0gc3BlY2lmeSBjdXN0b20gYmlvcyBkaXIKKyAgICAgICBiaW9zZmlsZW5hbWU9Jmx0O2ZpbGVuYW1lJmd0OyAtIHNwZWNpZnkgYmlvcyBmaWxlbmFtZQorICAgICAgIHFlbXVwYXJhbXM9Jmx0O3h5eiZndDsgLSBzcGVjaWZ5IGN1c3RvbSBwYXJhbWV0ZXJzIHRvIFFFTVUKKyAgICAgICBib290cGFyYW1zPSZsdDt4eXomZ3Q7IC0gc3BlY2lmeSBjdXN0b20ga2VybmVsIHBhcmFtZXRlcnMgZHVyaW5nIGJvb3QKKyAgICAgICBoZWxwLCAtaCwgLS1oZWxwOiBwcmludCB0aGlzIHRleHQKKworICAgICBFeGFtcGxlczoKKyAgICAgICBydW5xZW11CisgICAgICAgcnVucWVtdSBxZW11YXJtCisgICAgICAgcnVucWVtdSB0bXAvZGVwbG95L2ltYWdlcy9xZW11YXJtCisgICAgICAgcnVucWVtdSB0bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2LyZsdDtxZW11Ym9vdC5jb25mJmd0OworICAgICAgIHJ1bnFlbXUgcWVtdXg4Ni02NCBjb3JlLWltYWdlLXNhdG8gZXh0NAorICAgICAgIHJ1bnFlbXUgcWVtdXg4Ni02NCB3aWMtaW1hZ2UtbWluaW1hbCB3aWMKKyAgICAgICBydW5xZW11IHBhdGgvdG8vYnpJbWFnZS1xZW11eDg2LmJpbiBwYXRoL3RvL25mc3Jvb3RkaXIvIHNlcmlhbAorICAgICAgIHJ1bnFlbXUgcWVtdXg4NiBpc28vaGRkaW1nL3dpYy52bWRrL3dpYy5xY293Mi93aWMudmRpL3JhbWZzL2NwaW8uZ3ouLi4KKyAgICAgICBydW5xZW11IHFlbXV4ODYgcWVtdXBhcmFtcz0iLW0gMjU2IgorICAgICAgIHJ1bnFlbXUgcWVtdXg4NiBib290cGFyYW1zPSJwc3BsYXNoPWZhbHNlIgorICAgICAgIHJ1bnFlbXUgcGF0aC90by8mbHQ7aW1hZ2UmZ3Q7LSZsdDttYWNoaW5lJmd0Oy53aWMKKyAgICAgICBydW5xZW11IHBhdGgvdG8vJmx0O2ltYWdlJmd0Oy0mbHQ7bWFjaGluZSZndDsud2ljLnZtZGsKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdxZW11LWRldi1ydW5xZW11LWNvbW1hbmQtbGluZS1vcHRpb25zJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gQ29tbWFuZC1MaW5lIE9wdGlvbnM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93aW5nIGlzIGEgZGVzY3JpcHRpb24gb2YgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgb3B0aW9ucyB5b3UgY2FuIHByb3ZpZGUgb24gdGhlIGNvbW1hbmQgbGluZToKKyAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgorICAgICAgICAgICAgICAgIElmIHlvdSBkbyBwcm92aWRlIHNvbWUgImlsbGVnYWwiIG9wdGlvbiBjb21iaW5hdGlvbiBvciBwZXJoYXBzCisgICAgICAgICAgICAgICAgeW91IGRvIG5vdCBwcm92aWRlIGVub3VnaCBpbiB0aGUgd2F5IG9mIG9wdGlvbnMsCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBwcm92aWRlcyBhcHByb3ByaWF0ZSBlcnJvcgorICAgICAgICAgICAgICAgIG1lc3NhZ2luZyB0byBoZWxwIHlvdSBjb3JyZWN0IHRoZSBwcm9ibGVtLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5RRU1VQVJDSDwvcmVwbGFjZWFibGU+OgorICAgICAgICAgICAgICAgICAgICBUaGUgUUVNVSBtYWNoaW5lIGFyY2hpdGVjdHVyZSwgd2hpY2ggbXVzdCBiZSAicWVtdWFybSIsCisgICAgICAgICAgICAgICAgICAgICJxZW11YXJtNjQiLCAicWVtdW1pcHMiLCAicWVtdW1pcHM2NCIsICJxZW11cHBjIiwKKyAgICAgICAgICAgICAgICAgICAgInFlbXV4ODYiLCBvciAicWVtdXg4Ni02NCIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5WTTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFRoZSB2aXJ0dWFsIG1hY2hpbmUgaW1hZ2UsIHdoaWNoIG11c3QgYmUgYQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LndpYy52bWRrPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoaXMgb3B0aW9uIHdoZW4geW91IHdhbnQgdG8gYm9vdCBhCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ud2ljLnZtZGs8L2ZpbGVuYW1lPiBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGltYWdlIGZpbGVuYW1lIHlvdSBwcm92aWRlIG11c3QgY29udGFpbiBvbmUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBzdHJpbmdzOiAicWVtdXg4Ni02NCIsICJxZW11eDg2IiwgInFlbXVhcm0iLAorICAgICAgICAgICAgICAgICAgICAicWVtdW1pcHM2NCIsICJxZW11bWlwcyIsICJxZW11cHBjIiwgb3IgInFlbXVzaDQiLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5ST09URlM8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgQSByb290IGZpbGVzeXN0ZW0gdGhhdCBoYXMgb25lIG9mIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgZmlsZXR5cGUgZXh0ZW5zaW9uczogImV4dDIiLCAiZXh0MyIsICJleHQ0IiwgImpmZnMyIiwKKyAgICAgICAgICAgICAgICAgICAgIm5mcyIsIG9yICJidHJmcyIuCisgICAgICAgICAgICAgICAgICAgIElmIHRoZSBmaWxlbmFtZSB5b3UgcHJvdmlkZSBmb3IgdGhpcyBvcHRpb24gdXNlcyDigJxuZnPigJ0sIGl0CisgICAgICAgICAgICAgICAgICAgIG11c3QgcHJvdmlkZSBhbiBleHBsaWNpdCByb290IGZpbGVzeXN0ZW0gcGF0aC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+S0VSTkVMPC9yZXBsYWNlYWJsZT46CisgICAgICAgICAgICAgICAgICAgIEEga2VybmVsIGltYWdlLCB3aGljaCBpcyBhIDxmaWxlbmFtZT4uYmluPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgcHJvdmlkZSBhIDxmaWxlbmFtZT4uYmluPC9maWxlbmFtZT4gZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBkZXRlY3RzIGl0IGFuZCBhc3N1bWVzIHRoZQorICAgICAgICAgICAgICAgICAgICBmaWxlIGlzIGEga2VybmVsIGltYWdlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5NQUNISU5FPC9yZXBsYWNlYWJsZT46CisgICAgICAgICAgICAgICAgICAgIFRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIFFFTVUgbWFjaGluZSwgd2hpY2ggbXVzdCBiZSBvbmUKKyAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGZvbGxvd2luZzogInFlbXV4ODYiLCAicWVtdXg4Ni02NCIsICJxZW11YXJtIiwKKyAgICAgICAgICAgICAgICAgICAgInFlbXVhcm02NCIsICJxZW11bWlwcyIsIOKAnHFlbXVtaXBzNjQiLCBvciAicWVtdXBwYyIuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+UUVNVUFSQ0g8L3JlcGxhY2VhYmxlPiBvcHRpb25zIGFyZSBiYXNpY2FsbHkKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpY2FsLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHByb3ZpZGUgYSA8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiB0cmllcyB0byBkZXRlcm1pbmUKKyAgICAgICAgICAgICAgICAgICAgaXQgYmFzZWQgb24gb3RoZXIgb3B0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmFtZnM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgSW5kaWNhdGVzIHlvdSBhcmUgYm9vdGluZyBhbiBpbml0aWFsIFJBTSBkaXNrIChpbml0cmFtZnMpCisgICAgICAgICAgICAgICAgICAgIGltYWdlLCB3aGljaCBtZWFucyB0aGUgPGZpbGVuYW1lPkZTVFlQRTwvZmlsZW5hbWU+IGlzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jcGlvLmd6PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmlzbzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBJbmRpY2F0ZXMgeW91IGFyZSBib290aW5nIGFuIElTTyBpbWFnZSwgd2hpY2ggbWVhbnMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GU1RZUEU8L2ZpbGVuYW1lPiBpcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmlzbzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ub2dyYXBoaWM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgRGlzYWJsZXMgdGhlIHZpZGVvIGNvbnNvbGUsIHdoaWNoIHNldHMgdGhlIGNvbnNvbGUgdG8KKyAgICAgICAgICAgICAgICAgICAgInR0eXMwIi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2VyaWFsPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgYSBzZXJpYWwgY29uc29sZSBvbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2Rldi90dHlTMDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaW9zZGlyPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEVzdGFibGlzaGVzIGEgY3VzdG9tIGRpcmVjdG9yeSBmb3IgQklPUywgVkdBIEJJT1MgYW5kCisgICAgICAgICAgICAgICAgICAgIGtleW1hcHMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpb3NmaWxlbmFtZTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBFc3RhYmxpc2hlcyBhIGN1c3RvbSBCSU9TIG5hbWUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnFlbXVwYXJhbXM9XCI8cmVwbGFjZWFibGU+eHl6PC9yZXBsYWNlYWJsZT5cIjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgY3VzdG9tIFFFTVUgcGFyYW1ldGVycy4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoaXMgb3B0aW9uIHRvIHBhc3Mgb3B0aW9ucyBvdGhlciB0aGFuIHRoZSBzaW1wbGUKKyAgICAgICAgICAgICAgICAgICAgImt2bSIgYW5kICJzZXJpYWwiIG9wdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Ym9vdHBhcmFtcz1cIjxyZXBsYWNlYWJsZT54eXo8L3JlcGxhY2VhYmxlPlwiPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBjdXN0b20gYm9vdCBwYXJhbWV0ZXJzIGZvciB0aGUga2VybmVsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdWRpbzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBFbmFibGVzIGF1ZGlvIGluIFFFTVUuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+IG9wdGlvbiBtdXN0IGJlCisgICAgICAgICAgICAgICAgICAgIGVpdGhlciAicWVtdXg4NiIgb3IgInFlbXV4ODYtNjQiIGluIG9yZGVyIGZvciBhdWRpbyB0byBiZQorICAgICAgICAgICAgICAgICAgICBlbmFibGVkLgorICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSA8ZmlsZW5hbWU+c25kX2ludGVsOHgwPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgb3IgPGZpbGVuYW1lPnNuZF9lbnMxMzcwPC9maWxlbmFtZT4gZHJpdmVyIG11c3QgYmUKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIGluIGxpbnV4IGd1ZXN0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zbGlycDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBFbmFibGVzICJzbGlycCIgbmV0d29ya2luZywgd2hpY2ggaXMgYSBkaWZmZXJlbnQgd2F5CisgICAgICAgICAgICAgICAgICAgIG9mIG5ldHdvcmtpbmcgdGhhdCBkb2VzIG5vdCBuZWVkIHJvb3QgYWNjZXNzCisgICAgICAgICAgICAgICAgICAgIGJ1dCBhbHNvIGlzIG5vdCBhcyBlYXN5IHRvIHVzZSBvciBjb21wcmVoZW5zaXZlCisgICAgICAgICAgICAgICAgICAgIGFzIHRoZSBkZWZhdWx0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J2t2bS1jb25kJz4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmt2bTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBFbmFibGVzIEtWTSB3aGVuIHJ1bm5pbmcgInFlbXV4ODYiIG9yICJxZW11eDg2LTY0IgorICAgICAgICAgICAgICAgICAgICBRRU1VIGFyY2hpdGVjdHVyZXMuCisgICAgICAgICAgICAgICAgICAgIEZvciBLVk0gdG8gd29yaywgYWxsIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBtdXN0IGJlIG1ldDoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3VyIDxyZXBsYWNlYWJsZT5NQUNISU5FPC9yZXBsYWNlYWJsZT4gbXVzdCBiZSBlaXRoZXIKK3FlbXV4ODYiIG9yICJxZW11eDg2LTY0Ii4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3VyIGJ1aWxkIGhvc3QgaGFzIHRvIGhhdmUgdGhlIEtWTSBtb2R1bGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkLCB3aGljaCBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2Rldi9rdm08L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgIGJ1aWxkIGhvc3QgPGZpbGVuYW1lPi9kZXYva3ZtPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgaGFzIHRvIGJlIGJvdGggd3JpdGFibGUgYW5kIHJlYWRhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+a3ZtLXZob3N0PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgS1ZNIHdpdGggVkhPU1Qgc3VwcG9ydCB3aGVuIHJ1bm5pbmcgInFlbXV4ODYiCisgICAgICAgICAgICAgICAgICAgIG9yICJxZW11eDg2LTY0IiBRRU1VIGFyY2hpdGVjdHVyZXMuCisgICAgICAgICAgICAgICAgICAgIEZvciBLVk0gd2l0aCBWSE9TVCB0byB3b3JrLCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgbXVzdAorICAgICAgICAgICAgICAgICAgICBiZSBtZXQ6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0na3ZtLWNvbmQnPmt2bTwvbGluaz4gb3B0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9ucyBtdXN0IGJlIG1ldC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3VyIGJ1aWxkIGhvc3QgaGFzIHRvIGhhdmUgdmlydGlvIG5ldCBkZXZpY2UsIHdoaWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIDxmaWxlbmFtZT4vZGV2L3Zob3N0LW5ldDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBob3N0IDxmaWxlbmFtZT4vZGV2L3Zob3N0LW5ldDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGhhcyB0byBiZSBlaXRoZXIgcmVhZGFibGUgb3Igd3JpdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQg4oCcc2xpcnAtZW5hYmxlZOKAnS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnB1YmxpY3ZuYzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBFbmFibGVzIGEgVk5DIHNlcnZlciBvcGVuIHRvIGFsbCBob3N0cy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KIDwvY2hhcHRlcj4KIDwhLS0KIHZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1zdGFydC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtc3RhcnQueG1sCmluZGV4IDE5NWIyMmQuLmQ4NzI2YjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1zdGFydC54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXN0YXJ0LnhtbApAQCAtNCwxOCArNCwzODYgQEAKIAogPGNoYXB0ZXIgaWQ9J2Rldi1tYW51YWwtc3RhcnQnPgogCi08dGl0bGU+R2V0dGluZyBTdGFydGVkIHdpdGggdGhlIFlvY3RvIFByb2plY3Q8L3RpdGxlPgorPHRpdGxlPlNldHRpbmcgVXAgdG8gVXNlIHRoZSBZb2N0byBQcm9qZWN0PC90aXRsZT4KIAogPHBhcmE+CiAgICAgVGhpcyBjaGFwdGVyIHByb3ZpZGVzIHByb2NlZHVyZXMgcmVsYXRlZCB0byBnZXR0aW5nIHNldCB1cCB0byB1c2UgdGhlCiAgICAgWW9jdG8gUHJvamVjdC4KLSAgICBGb3IgYSBtb3JlIGZyb250LXRvLWVuZCBwcm9jZXNzIHRoYXQgdGFrZXMgeW91IGZyb20gbWluaW1hbGx5IHByZXBhcmluZwotICAgIGEgYnVpbGQgaG9zdCB0aHJvdWdoIGJ1aWxkaW5nIGFuIGltYWdlLCBzZWUgdGhlCi0gICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyc+WW9jdG8gUHJvamVjdCBRdWljayBTdGFydDwvdWxpbms+LgorICAgIFlvdSBjYW4gbGVhcm4gYWJvdXQgY3JlYXRpbmcgYSB0ZWFtIGVudmlyb25tZW50IHRoYXQgZGV2ZWxvcHMgdXNpbmcgdGhlCisgICAgWW9jdG8gUHJvamVjdCwgaG93IHRvIHNldCB1cCBhIGJ1aWxkIGhvc3QsIGhvdyB0byBsb2NhdGUgWW9jdG8gUHJvamVjdAorICAgIHNvdXJjZSByZXBvc2l0b3JpZXMsIGFuZCBob3cgdG8gY3JlYXRlIGxvY2FsIEdpdCByZXBvc2l0b3JpZXMuCiA8L3BhcmE+CiAKKzxzZWN0aW9uIGlkPSJ1c2luZ3Bva3ktY2hhbmdlcy1jb2xsYWJvcmF0ZSI+CisgICAgPHRpdGxlPkNyZWF0aW5nIGEgVGVhbSBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSXQgbWlnaHQgbm90IGJlIGltbWVkaWF0ZWx5IGNsZWFyIGhvdyB5b3UgY2FuIHVzZSB0aGUgWW9jdG8KKyAgICAgICAgUHJvamVjdCBpbiBhIHRlYW0gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIG9yIHNjYWxlIGl0IGZvciBhIGxhcmdlCisgICAgICAgIHRlYW0gb2YgZGV2ZWxvcGVycy4KKyAgICAgICAgT25lIG9mIHRoZSBzdHJlbmd0aHMgb2YgdGhlIFlvY3RvIFByb2plY3QgaXMgdGhhdCBpdCBpcyBleHRyZW1lbHkKKyAgICAgICAgZmxleGlibGUuCisgICAgICAgIFRodXMsIHlvdSBjYW4gYWRhcHQgaXQgdG8gbWFueSBkaWZmZXJlbnQgdXNlIGNhc2VzIGFuZCBzY2VuYXJpb3MuCisgICAgICAgIEhvd2V2ZXIsIHRoZXNlIGNoYXJhY3RlcmlzdGljcyBjYW4gY2F1c2UgYSBzdHJ1Z2dsZSBpZiB5b3UgYXJlIHRyeWluZworICAgICAgICB0byBjcmVhdGUgYSB3b3JraW5nIHNldHVwIHRoYXQgc2NhbGVzIGFjcm9zcyBhIGxhcmdlIHRlYW0uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRvIGhlbHAgeW91IHVuZGVyc3RhbmQgaG93IHRvIHNldCB1cCB0aGlzIHR5cGUgb2YgZW52aXJvbm1lbnQsCisgICAgICAgIHRoaXMgc2VjdGlvbiBwcmVzZW50cyBhIHByb2NlZHVyZSB0aGF0IGdpdmVzIHlvdSB0aGUgaW5mb3JtYXRpb24KKyAgICAgICAgdG8gbGVhcm4gaG93IHRvIGdldCB0aGUgcmVzdWx0cyB5b3Ugd2FudC4KKyAgICAgICAgVGhlIHByb2NlZHVyZSBpcyBoaWdoLWxldmVsIGFuZCBwcmVzZW50cyBzb21lIG9mIHRoZSBwcm9qZWN0J3MgbW9zdAorICAgICAgICBzdWNjZXNzZnVsIGV4cGVyaWVuY2VzLCBwcmFjdGljZXMsIHNvbHV0aW9ucywgYW5kIGF2YWlsYWJsZQorICAgICAgICB0ZWNobm9sb2dpZXMgdGhhdCB3b3JrIHdlbGwuCisgICAgICAgIEtlZXAgaW4gbWluZCwgdGhlIHByb2NlZHVyZSBoZXJlIGlzIGEgc3RhcnRpbmcgcG9pbnQuCisgICAgICAgIFlvdSBjYW4gYnVpbGQgb2ZmIGl0IGFuZCBjdXN0b21pemUgaXQgdG8gZml0IGFueQorICAgICAgICBwYXJ0aWN1bGFyIHdvcmtpbmcgZW52aXJvbm1lbnQgYW5kIHNldCBvZiBwcmFjdGljZXMuCisgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RGV0ZXJtaW5lIFdobyBpcyBHb2luZyB0byBiZSBEZXZlbG9waW5nOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gdW5kZXJzdGFuZCB3aG8gaXMgZ29pbmcgdG8gYmUgZG9pbmcgYW55dGhpbmcKKyAgICAgICAgICAgICAgICByZWxhdGVkIHRvIHRoZSBZb2N0byBQcm9qZWN0IGFuZCB3aGF0IHRoZWlyIHJvbGVzIHdvdWxkIGJlLgorICAgICAgICAgICAgICAgIE1ha2luZyB0aGlzIGRldGVybWluYXRpb24gaXMgZXNzZW50aWFsIHRvIGNvbXBsZXRpbmcgdGhlCisgICAgICAgICAgICAgICAgc3RlcHMgdHdvIGFuZCB0aHJlZSwgd2hpY2ggYXJlIHRvIGdldCB5b3VyIGVxdWlwbWVudCB0b2dldGhlcgorICAgICAgICAgICAgICAgIGFuZCBzZXQgdXAgeW91ciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCdzIGhhcmR3YXJlIHRvcG9sb2d5LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgcm9sZXMgZXhpc3Q6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkFwcGxpY2F0aW9uIERldmVsb3BtZW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSB0eXBlcyBvZiBkZXZlbG9wZXJzIGRvIGFwcGxpY2F0aW9uIGxldmVsIHdvcmsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRvcCBvZiBhbiBleGlzdGluZyBzb2Z0d2FyZSBzdGFjay4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29yZSBTeXN0ZW0gRGV2ZWxvcG1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIHR5cGVzIG9mIGRldmVsb3BlcnMgd29yayBvbiB0aGUgY29udGVudHMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpbmcgc3lzdGVtIGltYWdlIGl0c2VsZi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgRW5naW5lZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdHlwZSBvZiBkZXZlbG9wZXIgbWFuYWdlcyBBdXRvYnVpbGRlcnMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIE5vdCBhbGwgZW52aXJvbm1lbnRzIG5lZWQgYSBCdWlsZCBFbmdpbmVlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VGVzdCBFbmdpbmVlcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0eXBlIG9mIGRldmVsb3BlciBjcmVhdGVzIGFuZCBtYW5hZ2VzIGF1dG9tYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMgbmVlZGVkIHRvIGVuc3VyZSBhbGwgYXBwbGljYXRpb24gYW5kIGNvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSBkZXZlbG9wbWVudCBtZWV0cyBkZXNpcmVkIHF1YWxpdHkgc3RhbmRhcmRzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdhdGhlciB0aGUgSGFyZHdhcmU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBCYXNlZCBvbiB0aGUgc2l6ZSBhbmQgbWFrZS11cCBvZiB0aGUgdGVhbSwgZ2V0IHRoZSBoYXJkd2FyZQorICAgICAgICAgICAgICAgIHRvZ2V0aGVyLgorICAgICAgICAgICAgICAgIEFueSBkZXZlbG9wbWVudCwgYnVpbGQsIG9yIHRlc3QgZW5naW5lZXIgc2hvdWxkIGJlIHVzaW5nCisgICAgICAgICAgICAgICAgYSBzeXN0ZW0gdGhhdCBpcyBydW5uaW5nIGEgc3VwcG9ydGVkIExpbnV4IGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgICAgICBTeXN0ZW1zLCBpbiBnZW5lcmFsLCBzaG91bGQgYmUgaGlnaCBwZXJmb3JtYW5jZSAoZS5nLiBkdWFsLAorICAgICAgICAgICAgICAgIHNpeC1jb3JlIFhlb25zIHdpdGggMjQgR2J5dGVzIG9mIFJBTSBhbmQgcGxlbnR5IG9mIGRpc2sgc3BhY2UpLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gaGVscCBlbnN1cmUgZWZmaWNpZW5jeSBieSBoYXZpbmcgYW55IG1hY2hpbmVzIHVzZWQKKyAgICAgICAgICAgICAgICBmb3IgdGVzdGluZyBvciB0aGF0IHJ1biBBdXRvYnVpbGRlcnMgYmUgYXMgaGlnaCBwZXJmb3JtYW5jZQorICAgICAgICAgICAgICAgIGFzIHBvc3NpYmxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5VbmRlcnN0YW5kIHRoZSBIYXJkd2FyZSBUb3BvbG9neSBvZiB0aGUgRW52aXJvbm1lbnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBPbmNlIHlvdSB1bmRlcnN0YW5kIHRoZSBoYXJkd2FyZSBpbnZvbHZlZCBhbmQgdGhlIG1ha2UtdXAKKyAgICAgICAgICAgICAgICBvZiB0aGUgdGVhbSwgeW91IGNhbiB1bmRlcnN0YW5kIHRoZSBoYXJkd2FyZSB0b3BvbG9neSBvZiB0aGUKKyAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGdldCBhIHZpc3VhbCBpZGVhIG9mIHRoZSBtYWNoaW5lcyBhbmQgdGhlaXIgcm9sZXMKKyAgICAgICAgICAgICAgICBhY3Jvc3MgdGhlIGRldmVsb3BtZW50IGVudmlyb25tZW50LgorCis8IS0tCisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBmaWd1cmUgc2hvd3MgYSBtb2RlcmF0ZWx5IHNpemVkIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKworICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9IndyaXRlcm5vdGVzIj4KKyAgICAgICAgICAgICAgICBOZWVkIGZpZ3VyZS48L3BhcmE+CistLT4KKworICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Vc2UgR2l0IGFzIFlvdXIgU291cmNlIENvbnRyb2wgTWFuYWdlciAoU0NNKTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEtlZXBpbmcgeW91cgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+CisgICAgICAgICAgICAgICAgYW5kIGFueSBzb2Z0d2FyZSB5b3UgYXJlIGRldmVsb3BpbmcgdW5kZXIgdGhlCisgICAgICAgICAgICAgICAgY29udHJvbCBvZiBhbiBTQ00gc3lzdGVtIHRoYXQgaXMgY29tcGF0aWJsZQorICAgICAgICAgICAgICAgIHdpdGggdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaXMgYWR2aXNhYmxlLgorICAgICAgICAgICAgICAgIE9mIHRoZSBTQ01zIEJpdEJha2Ugc3VwcG9ydHMsIHRoZQorICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgdGVhbSBzdHJvbmdseSByZWNvbW1lbmRzIHVzaW5nCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNnaXQnPkdpdDwvdWxpbms+LgorICAgICAgICAgICAgICAgIEdpdCBpcyBhIGRpc3RyaWJ1dGVkIHN5c3RlbSB0aGF0IGlzIGVhc3kgdG8gYmFja3VwLAorICAgICAgICAgICAgICAgIGFsbG93cyB5b3UgdG8gd29yayByZW1vdGVseSwgYW5kIHRoZW4gY29ubmVjdHMgYmFjayB0byB0aGUKKyAgICAgICAgICAgICAgICBpbmZyYXN0cnVjdHVyZS4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIGFib3V0IEJpdEJha2UsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyc+Qml0QmFrZSBVc2VyIE1hbnVhbDwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5JdCBpcyByZWxhdGl2ZWx5IGVhc3kgdG8gc2V0IHVwIEdpdCBzZXJ2aWNlcyBhbmQgY3JlYXRlCisgICAgICAgICAgICAgICAgaW5mcmFzdHJ1Y3R1cmUgbGlrZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+aHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnPC91bGluaz4sCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgYmFzZWQgb24gc2VydmVyIHNvZnR3YXJlIGNhbGxlZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXRvbGl0ZTwvZmlsZW5hbWU+IHdpdGggPGZpbGVuYW1lPmNnaXQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGJlaW5nIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHdlYiBpbnRlcmZhY2UgdGhhdCBsZXRzIHlvdSB2aWV3IHRoZQorICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcy4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmdpdG9saXRlPC9maWxlbmFtZT4gc29mdHdhcmUgaWRlbnRpZmllcyB1c2VycworICAgICAgICAgICAgICAgIHVzaW5nIFNTSCBrZXlzIGFuZCBhbGxvd3MgYnJhbmNoLWJhc2VkCisgICAgICAgICAgICAgICAgYWNjZXNzIGNvbnRyb2xzIHRvIHJlcG9zaXRvcmllcyB0aGF0IHlvdSBjYW4gY29udHJvbCBhcyBsaXR0bGUKKyAgICAgICAgICAgICAgICBvciBhcyBtdWNoIGFzIG5lY2Vzc2FyeS4KKworICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgIFRoZSBzZXR1cCBvZiB0aGVzZSBzZXJ2aWNlcyBpcyBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoaXMKKyAgICAgICAgICAgICAgICAgICBtYW51YWwuCisgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgc2l0ZXMgc3VjaCBhcyB0aGVzZSBleGlzdCB0aGF0IGRlc2NyaWJlIGhvdyB0bworICAgICAgICAgICAgICAgICAgIHBlcmZvcm0gc2V0dXA6CisgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC1zY20uY29tL2Jvb2svY2g0LTguaHRtbCc+R2l0IGRvY3VtZW50YXRpb248L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaWJlcyBob3cgdG8gaW5zdGFsbCA8ZmlsZW5hbWU+Z2l0b2xpdGU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gdGhlIHNlcnZlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0b2xpdGUuY29tJz5HaXRvbGl0ZTwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uIGZvciA8ZmlsZW5hbWU+Z2l0b2xpdGU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0ludGVyZmFjZXMsX2Zyb250ZW5kcyxfYW5kX3Rvb2xzJz5JbnRlcmZhY2VzLCBmcm9udGVuZHMsIGFuZCB0b29sczwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gb24gaG93IHRvIGNyZWF0ZSBpbnRlcmZhY2VzIGFuZCBmcm9udGVuZHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgR2l0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCB1cCB0aGUgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgTWFjaGluZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBcyBtZW50aW9uZWQgZWFybGllciwgYXBwbGljYXRpb24gZGV2ZWxvcGVycyBhcmUgY3JlYXRpbmcKKyAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbnMgb24gdG9wIG9mIGV4aXN0aW5nIHNvZnR3YXJlIHN0YWNrcy4KKyAgICAgICAgICAgICAgICBGb2xsb3dpbmcgYXJlIHNvbWUgYmVzdCBwcmFjdGljZXMgZm9yIHNldHRpbmcgdXAgbWFjaGluZXMKKyAgICAgICAgICAgICAgICB0aGF0IGRvIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50OgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBhIHByZS1idWlsdCB0b29sY2hhaW4gdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgdGhlIHNvZnR3YXJlIHN0YWNrIGl0c2VsZi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZW4sIGRldmVsb3AgdGhlIGFwcGxpY2F0aW9uIGNvZGUgb24gdG9wIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2suCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCB3b3JrcyB3ZWxsIGZvciBzbWFsbCBudW1iZXJzIG9mIHJlbGF0aXZlbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzb2xhdGVkIGFwcGxpY2F0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHBvc3NpYmxlLCB1c2UgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHBsdWctaW4gZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz4gSURFCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgU0RLIGRldmVsb3BtZW50IHByYWN0aWNlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBLZWVwIHlvdXIgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWlucyB1cGRhdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBkbyB0aGlzIHRocm91Z2ggcHJvdmlzaW9uaW5nIGVpdGhlciBhcyBuZXcKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xjaGFpbiBkb3dubG9hZHMgb3IgYXMgdXBkYXRlcyB0aHJvdWdoIGEgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlIG1lY2hhbmlzbSB1c2luZyA8ZmlsZW5hbWU+b3BrZzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICB0byBwcm92aWRlIHVwZGF0ZXMgdG8gYW4gZXhpc3RpbmcgdG9vbGNoYWluLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGV4YWN0IG1lY2hhbmljcyBvZiBob3cgYW5kIHdoZW4gdG8gZG8gdGhpcyBhcmUgYQorICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb24gZm9yIGxvY2FsIHBvbGljeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBVc2UgbXVsdGlwbGUgdG9vbGNoYWlucyBpbnN0YWxsZWQgbG9jYWxseQorICAgICAgICAgICAgICAgICAgICAgICAgaW50byBkaWZmZXJlbnQgbG9jYXRpb25zIHRvIGFsbG93IGRldmVsb3BtZW50IGFjcm9zcworICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbnMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IHVwIHRoZSBDb3JlIERldmVsb3BtZW50IE1hY2hpbmVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQXMgbWVudGlvbmVkIGVhcmxpZXIsIHRoZXNlIHR5cGVzIG9mIGRldmVsb3BlcnMgd29yayBvbiB0aGUKKyAgICAgICAgICAgICAgICBjb250ZW50cyBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBpdHNlbGYuCisgICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBzb21lIGJlc3QgcHJhY3RpY2VzIGZvciBzZXR0aW5nIHVwIG1hY2hpbmVzCisgICAgICAgICAgICAgICAgdXNlZCBmb3IgZGV2ZWxvcGluZyBpbWFnZXM6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgSGF2ZSB0aGUgWW9jdG8gUHJvamVjdCBidWlsZCBzeXN0ZW0gaXRzZWxmIGF2YWlsYWJsZSBvbgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRldmVsb3BlciB3b3Jrc3RhdGlvbnMgc28gZGV2ZWxvcGVycyBjYW4gcnVuIHRoZWlyIG93bgorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRzIGFuZCBkaXJlY3RseSByZWJ1aWxkIHRoZSBzb2Z0d2FyZSBzdGFjay4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBLZWVwIHRoZSBjb3JlIHN5c3RlbSB1bmNoYW5nZWQgYXMgbXVjaCBhcworICAgICAgICAgICAgICAgICAgICAgICAgcG9zc2libGUgYW5kIGRvIHlvdXIgd29yayBpbiBsYXllcnMgb24gdG9wIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgY29yZSBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICBEb2luZyBzbyBnaXZlcyB5b3UgYSBncmVhdGVyIGxldmVsIG9mIHBvcnRhYmlsaXR5IHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHVwZ3JhZGluZyB0byBuZXcgdmVyc2lvbnMgb2YgdGhlIGNvcmUgc3lzdGVtIG9yIEJvYXJkCisgICAgICAgICAgICAgICAgICAgICAgICBTdXBwb3J0IFBhY2thZ2VzIChCU1BzKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTaGFyZSBsYXllcnMgYW1vbmdzdCB0aGUgZGV2ZWxvcGVycyBvZiBhCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWN1bGFyIHByb2plY3QgYW5kIGNvbnRhaW4gdGhlIHBvbGljeSBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGRlZmluZXMgdGhlIHByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IHVwIGFuIEF1dG9idWlsZGVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQXV0b2J1aWxkZXJzIGFyZSBvZnRlbiB0aGUgY29yZSBvZiB0aGUgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICBJdCBpcyBoZXJlIHRoYXQgY2hhbmdlcyBmcm9tIGluZGl2aWR1YWwgZGV2ZWxvcGVycyBhcmUgYnJvdWdodAorICAgICAgICAgICAgICAgIHRvZ2V0aGVyIGFuZCBjZW50cmFsbHkgdGVzdGVkIGFuZCBzdWJzZXF1ZW50IGRlY2lzaW9ucyBhYm91dAorICAgICAgICAgICAgICAgIHJlbGVhc2VzIGNhbiBiZSBtYWRlLgorICAgICAgICAgICAgICAgIEF1dG9idWlsZGVycyBhbHNvIGFsbG93IGZvciAiY29udGludW91cyBpbnRlZ3JhdGlvbiIgc3R5bGUKKyAgICAgICAgICAgICAgICB0ZXN0aW5nIG9mIHNvZnR3YXJlIGNvbXBvbmVudHMgYW5kIHJlZ3Jlc3Npb24gaWRlbnRpZmljYXRpb24KKyAgICAgICAgICAgICAgICBhbmQgdHJhY2tpbmcuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+U2VlICI8dWxpbmsgdXJsPSdodHRwOi8vYXV0b2J1aWxkZXIueW9jdG9wcm9qZWN0Lm9yZyc+WW9jdG8gUHJvamVjdCBBdXRvYnVpbGRlcjwvdWxpbms+IgorICAgICAgICAgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBsaW5rcyB0byBidWlsZGJvdC4KKyAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB0ZWFtIGhhcyBmb3VuZCB0aGlzIGltcGxlbWVudGF0aW9uCisgICAgICAgICAgICAgICAgd29ya3Mgd2VsbCBpbiB0aGlzIHJvbGUuCisgICAgICAgICAgICAgICAgQSBwdWJsaWMgZXhhbXBsZSBvZiB0aGlzIGlzIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgQXV0b2J1aWxkZXJzLCB3aGljaCB3ZSB1c2UgdG8gdGVzdCB0aGUgb3ZlcmFsbCBoZWFsdGggb2YgdGhlCisgICAgICAgICAgICAgICAgcHJvamVjdC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZmVhdHVyZXMgb2YgdGhpcyBzeXN0ZW0gYXJlOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICBIaWdobGlnaHRzIHdoZW4gY29tbWl0cyBicmVhayB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBvcHVsYXRlcyBhbiBzc3RhdGUgY2FjaGUgZnJvbSB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcGVycyBjYW4gcHVsbCByYXRoZXIgdGhhbiByZXF1aXJpbmcgbG9jYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd3MgY29tbWl0IGhvb2sgdHJpZ2dlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCB0cmlnZ2VyIGJ1aWxkcyB3aGVuIGNvbW1pdHMgYXJlIG1hZGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dzIHRyaWdnZXJpbmcgb2YgYXV0b21hdGVkIGltYWdlIGJvb3RpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0ZXN0aW5nIHVuZGVyIHRoZSBRdWlja0VNVWxhdG9yIChRRU1VKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTdXBwb3J0cyBpbmNyZW1lbnRhbCBidWlsZCB0ZXN0aW5nIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgZnJvbS1zY3JhdGNoIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTaGFyZXMgb3V0cHV0IHRoYXQgYWxsb3dzIGRldmVsb3BlcgorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZyBhbmQgaGlzdG9yaWNhbCByZWdyZXNzaW9uIGludmVzdGlnYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlcyBvdXRwdXQgdGhhdCBjYW4gYmUgdXNlZCBmb3IgcmVsZWFzZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dzIHNjaGVkdWxpbmcgb2YgYnVpbGRzIHNvIHRoYXQgcmVzb3VyY2VzCisgICAgICAgICAgICAgICAgICAgICAgICBjYW4gYmUgdXNlZCBlZmZpY2llbnRseS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCB1cCBUZXN0IE1hY2hpbmVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICBVc2UgYSBzbWFsbCBudW1iZXIgb2Ygc2hhcmVkLCBoaWdoIHBlcmZvcm1hbmNlIHN5c3RlbXMKKyAgICAgICAgICAgICAgIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgorICAgICAgICAgICAgICAgRGV2ZWxvcGVycyBjYW4gdXNlIHRoZXNlIHN5c3RlbXMgZm9yIHdpZGVyLCBtb3JlCisgICAgICAgICAgICAgICBleHRlbnNpdmUgdGVzdGluZyB3aGlsZSB0aGV5IGNvbnRpbnVlIHRvIGRldmVsb3AKKyAgICAgICAgICAgICAgIGxvY2FsbHkgdXNpbmcgdGhlaXIgcHJpbWFyeSBkZXZlbG9wbWVudCBzeXN0ZW0uCisgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRvY3VtZW50IFBvbGljaWVzIGFuZCBDaGFuZ2UgRmxvdzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaXRzZWxmIHVzZXMgYSBoaWVyYXJjaGljYWwgc3RydWN0dXJlIGFuZCBhCisgICAgICAgICAgICAgICAgcHVsbCBtb2RlbC4KKyAgICAgICAgICAgICAgICBTY3JpcHRzIGV4aXN0IHRvIGNyZWF0ZSBhbmQgc2VuZCBwdWxsIHJlcXVlc3RzCisgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPmNyZWF0ZS1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2VuZC1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgVGhpcyBtb2RlbCBpcyBpbiBsaW5lIHdpdGggb3RoZXIgb3BlbiBzb3VyY2UgcHJvamVjdHMgd2hlcmUKKyAgICAgICAgICAgICAgICBtYWludGFpbmVycyBhcmUgcmVzcG9uc2libGUgZm9yIHNwZWNpZmljIGFyZWFzIG9mIHRoZSBwcm9qZWN0CisgICAgICAgICAgICAgICAgYW5kIGEgc2luZ2xlIG1haW50YWluZXIgaGFuZGxlcyB0aGUgZmluYWwgInRvcC1vZi10cmVlIiBtZXJnZXMuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyB1c2UgYSBtb3JlIGNvbGxlY3RpdmUgcHVzaCBtb2RlbC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5naXRvbGl0ZTwvZmlsZW5hbWU+IHNvZnR3YXJlIHN1cHBvcnRzIGJvdGggdGhlCisgICAgICAgICAgICAgICAgICAgIHB1c2ggYW5kIHB1bGwgbW9kZWxzIHF1aXRlIGVhc2lseS4KKyAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+QXMgd2l0aCBhbnkgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIGl0IGlzIGltcG9ydGFudAorICAgICAgICAgICAgICAgIHRvIGRvY3VtZW50IHRoZSBwb2xpY3kgdXNlZCBhcyB3ZWxsIGFzIGFueSBtYWluIHByb2plY3QKKyAgICAgICAgICAgICAgICBndWlkZWxpbmVzIHNvIHRoZXkgYXJlIHVuZGVyc3Rvb2QgYnkgZXZlcnlvbmUuCisgICAgICAgICAgICAgICAgSXQgaXMgYWxzbyBhIGdvb2QgaWRlYSB0byBoYXZlIHdlbGwgc3RydWN0dXJlZAorICAgICAgICAgICAgICAgIGNvbW1pdCBtZXNzYWdlcywgd2hpY2ggYXJlIHVzdWFsbHkgYSBwYXJ0IG9mIGEgcHJvamVjdCdzCisgICAgICAgICAgICAgICAgZ3VpZGVsaW5lcy4KKyAgICAgICAgICAgICAgICBHb29kIGNvbW1pdCBtZXNzYWdlcyBhcmUgZXNzZW50aWFsIHdoZW4gbG9va2luZyBiYWNrIGluIHRpbWUgYW5kCisgICAgICAgICAgICAgICAgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgd2h5IGNoYW5nZXMgd2VyZSBtYWRlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBkaXNjb3ZlciB0aGF0IGNoYW5nZXMgYXJlIG5lZWRlZCB0byB0aGUgY29yZQorICAgICAgICAgICAgICAgIGxheWVyIG9mIHRoZSBwcm9qZWN0LCBpdCBpcyB3b3J0aCBzaGFyaW5nIHRob3NlIHdpdGggdGhlCisgICAgICAgICAgICAgICAgY29tbXVuaXR5IGFzIHNvb24gYXMgcG9zc2libGUuCisgICAgICAgICAgICAgICAgQ2hhbmNlcyBhcmUgaWYgeW91IGhhdmUgZGlzY292ZXJlZCB0aGUgbmVlZCBmb3IgY2hhbmdlcywKKyAgICAgICAgICAgICAgICBzb21lb25lIGVsc2UgaW4gdGhlIGNvbW11bml0eSBuZWVkcyB0aGVtIGFsc28uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRldmVsb3BtZW50IEVudmlyb25tZW50IFN1bW1hcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBc2lkZSBmcm9tIHRoZSBwcmV2aW91cyBzdGVwcywgc29tZSBiZXN0IHByYWN0aWNlcyBleGlzdAorICAgICAgICAgICAgICAgIHdpdGhpbiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICBDb25zaWRlciB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNnaXQnPkdpdDwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBhcyB0aGUgc291cmNlIGNvbnRyb2wgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIE1haW50YWluIHlvdXIgTWV0YWRhdGEgaW4gbGF5ZXJzIHRoYXQgbWFrZSBzZW5zZQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHlvdXIgc2l0dWF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0ndW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC9saW5rPiIgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbgorICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlcGFyYXRlIHRoZSBwcm9qZWN0J3MgTWV0YWRhdGEgYW5kIGNvZGUgYnkgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRlIEdpdCByZXBvc2l0b3JpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyN5b2N0by1wcm9qZWN0LXJlcG9zaXRvcmllcyc+WW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBpbmZvcm1hdGlvbiBvbiB0aGVzZSByZXBvc2l0b3JpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbG9jYXRpbmcteW9jdG8tcHJvamVjdC1zb3VyY2UtZmlsZXMnPkxvY2F0aW5nIFlvY3RvIFByb2plY3QgU291cmNlIEZpbGVzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzZXQgdXAgbG9jYWwgR2l0CisgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXMgZm9yIHJlbGF0ZWQgdXBzdHJlYW0gWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcmllcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTZXQgdXAgdGhlIGRpcmVjdG9yeSBmb3IgdGhlIHNoYXJlZCBzdGF0ZSBjYWNoZQorICAgICAgICAgICAgICAgICAgICAgICAgKDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TU1RBVEVfRElSJz48ZmlsZW5hbWU+U1NUQVRFX0RJUjwvZmlsZW5hbWU+PC91bGluaz4pCisgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSBpdCBtYWtlcyBzZW5zZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzZXQgdXAgdGhlIHNzdGF0ZSBjYWNoZSBvbiBhIHN5c3RlbSB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICBieSBkZXZlbG9wZXJzIGluIHRoZSBzYW1lIG9yZ2FuaXphdGlvbiBhbmQgc2hhcmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBzYW1lIHNvdXJjZSBkaXJlY3RvcmllcyBvbiB0aGVpciBtYWNoaW5lcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTZXQgdXAgYW4gQXV0b2J1aWxkZXIgYW5kIGhhdmUgaXQgcG9wdWxhdGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBzc3RhdGUgY2FjaGUgYW5kIHNvdXJjZSBkaXJlY3Rvcmllcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBjb21tdW5pdHkgZW5jb3VyYWdlcyB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHNlbmQgcGF0Y2hlcyB0byB0aGUgcHJvamVjdCB0byBmaXggYnVncyBvciBhZGQgZmVhdHVyZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gc3VibWl0IHBhdGNoZXMsIGZvbGxvdyB0aGUgcHJvamVjdCBjb21taXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlbGluZXMgZm9yIHdyaXRpbmcgZ29vZCBjb21taXQgbWVzc2FnZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlICI8bGluayBsaW5rZW5kPSdob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5TdWJtaXR0aW5nIGEgQ2hhbmdlIHRvIHRoZSBZb2N0byBQcm9qZWN0PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU2VuZCBjaGFuZ2VzIHRvIHRoZSBjb3JlIHNvb25lciB0aGFuIGxhdGVyCisgICAgICAgICAgICAgICAgICAgICAgICBhcyBvdGhlcnMgYXJlIGxpa2VseSB0byBydW4gaW50byB0aGUgc2FtZSBpc3N1ZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3Igc29tZSBndWlkYW5jZSBvbiBtYWlsaW5nIGxpc3RzIHRvIHVzZSwgc2VlIHRoZSBsaXN0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPlN1Ym1pdHRpbmcgYSBDaGFuZ2UgdG8gdGhlIFlvY3RvIFByb2plY3Q8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBhdmFpbGFibGUgbWFpbGluZyBsaXN0cywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Jlc291cmNlcy1tYWlsaW5nbGlzdCc+TWFpbGluZyBMaXN0czwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCiA8c2VjdGlvbiBpZD0nc2V0dGluZy11cC10aGUtZGV2ZWxvcG1lbnQtaG9zdC10by11c2UtdGhlLXlvY3RvLXByb2plY3QnPgotICAgIDx0aXRsZT5TZXR0aW5nIFVwIHRoZSBEZXZlbG9wbWVudCBIb3N0IHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDwvdGl0bGU+CisgICAgPHRpdGxlPlByZXBhcmluZyB0aGUgQnVpbGQgSG9zdDwvdGl0bGU+CiAKICAgICA8cGFyYT4KICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIHByb2NlZHVyZXMgdG8gc2V0IHVwIHlvdXIgZGV2ZWxvcG1lbnQgaG9zdCB0bwpAQCAtMTc3LDcgKzU0NSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHNpdGUuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdvIHRoZSBJbnN0YWxsIFNpdGUgZm9yIFlvdXIgUGxhdGZvcm06PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdvIHRvIHRoZSBJbnN0YWxsIFNpdGUgZm9yIFlvdXIgUGxhdGZvcm06PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgdGhlIGxpbmsgZm9yIHRoZSBEb2NrZXIgZWRpdGlvbiBhc3NvY2lhdGVkIHdpdGgKICAgICAgICAgICAgICAgICAgICAgeW91ciBkZXZlbG9wbWVudCBob3N0IG1hY2hpbmUncyBuYXRpdmUgc29mdHdhcmUuCiAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3VyIG1hY2hpbmUgaXMgcnVubmluZyBNaWNyb3NvZnQKQEAgLTIxMyw4ICs1ODEsOCBAQAogICAgICAgICAgICAgICAgICAgICB0aGUgdHlwZSBvZiB0aGUgc29mdHdhcmUgeW91IG5lZWQgdG8gaW5zdGFsbC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3B0aW9uYWxseSBPcmllbnQgWW91cnNlbGYgV2l0aCBEb2NrZXJzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgdW5mYW1pbGlhciB3aXRoIERvY2tlcnMgYW5kIHRoZSBjb250YWluZXIKKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9wdGlvbmFsbHkgT3JpZW50IFlvdXJzZWxmIFdpdGggRG9ja2VyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgdW5mYW1pbGlhciB3aXRoIERvY2tlciBhbmQgdGhlIGNvbnRhaW5lcgogICAgICAgICAgICAgICAgICAgICBjb25jZXB0LCB5b3UgY2FuIGxlYXJuIG1vcmUgaGVyZSAtCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2dldC1zdGFydGVkLyc+PC91bGluaz4uCiAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgYmUgYWJsZSB0byBsYXVuY2ggRG9ja2VyIG9yIHRoZSBEb2NrZXIgVG9vbGJveApAQCAtMjUwLDI1ICs2MTgsMjUgQEAKICAgICA8L3NlY3Rpb24+CiA8L3NlY3Rpb24+CiAKLTxzZWN0aW9uIGlkPSd3b3JraW5nLXdpdGgteW9jdG8tcHJvamVjdC1zb3VyY2UtZmlsZXMnPgotICAgIDx0aXRsZT5Xb3JraW5nIFdpdGggWW9jdG8gUHJvamVjdCBTb3VyY2UgRmlsZXM8L3RpdGxlPgorPHNlY3Rpb24gaWQ9J2xvY2F0aW5nLXlvY3RvLXByb2plY3Qtc291cmNlLWZpbGVzJz4KKyAgICA8dGl0bGU+TG9jYXRpbmcgWW9jdG8gUHJvamVjdCBTb3VyY2UgRmlsZXM8L3RpdGxlPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIFRoaXMgc2VjdGlvbiBjb250YWlucyBwcm9jZWR1cmVzIHJlbGF0ZWQgdG8gbG9jYXRpbmcgYW5kIHNlY3VyaW5nCi0gICAgICAgIFlvY3RvIFByb2plY3QgZmlsZXMuCisgICAgICAgIFRoaXMgc2VjdGlvbiBjb250YWlucyBwcm9jZWR1cmVzIHJlbGF0ZWQgdG8gbG9jYXRpbmcgWW9jdG8gUHJvamVjdAorICAgICAgICBmaWxlcy4KICAgICAgICAgWW91IGVzdGFibGlzaCBhbmQgdXNlIHRoZXNlIGxvY2FsIGZpbGVzIHRvIHdvcmsgb24gcHJvamVjdHMuCiAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CiAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgRm9yIGNvbmNlcHRzIGFuZCBpbnRyb2R1Y3RvcnkgaW5mb3JtYXRpb24gYWJvdXQgR2l0IGFzIGl0CiAgICAgICAgICAgICAgICAgICAgIGlzIHVzZWQgaW4gdGhlIFlvY3RvIFByb2plY3QsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2dpdCc+R2l0PC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEZvciBjb25jZXB0cyBvbiBZb2N0byBQcm9qZWN0IHNvdXJjZSByZXBvc2l0b3JpZXMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3lvY3RvLXByb2plY3QtcmVwb3NpdG9yaWVzJz5Zb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLiIKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjeW9jdG8tcHJvamVjdC1yZXBvc2l0b3JpZXMnPllvY3RvIFByb2plY3QgU291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuIgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICA8L25vdGU+CkBAIC0yNzgsOSArNjQ2LDIwIEBACiAgICAgICAgIDx0aXRsZT5BY2Nlc3NpbmcgU291cmNlIFJlcG9zaXRvcmllczwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBZb2N0byBQcm9qZWN0IG1haW50YWlucyB1cHN0cmVhbSBHaXQKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgotICAgICAgICAgICAgdGhhdCB5b3UgY2FuIGV4YW1pbmUgYW5kIGFjY2VzcyB1c2luZyBhIGJyb3dzZXItYmFzZWQgVUk6CisgICAgICAgICAgICBXb3JraW5nIGZyb20gYSBjb3B5IG9mIHRoZSB1cHN0cmVhbSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgorICAgICAgICAgICAgaXMgdGhlIHByZWZlcnJlZCBtZXRob2QgZm9yIG9idGFpbmluZyBhbmQgdXNpbmcgYSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICByZWxlYXNlLgorICAgICAgICAgICAgWW91IGNhbiB2aWV3IHRoZSBZb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXMgYXQKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+PC91bGluaz4uCisgICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCB5b3UgY2FuIGZpbmQgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgYXQKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3Bva3kvJz48L3VsaW5rPi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVXNlIHRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlIHRvIGxvY2F0ZSB0aGUgbGF0ZXN0IHVwc3RyZWFtIGNvcHkgb2YKKyAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdCByZXBvc2l0b3J5OgogICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkFjY2VzcyBSZXBvc2l0b3JpZXM6PC9lbXBoYXNpcz4KQEAgLTI5MCwyNCArNjY5LDIxIEBACiAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcy4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2VsZWN0IGEgUmVwb3NpdG9yeTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBDbGljayBvbiBhbnkgcmVwb3NpdG9yeSBpbiB3aGljaCB5b3UgYXJlIGludGVyZXN0ZWQgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNlbGVjdCB0aGUgUmVwb3NpdG9yeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDbGljayBvbiB0aGUgcmVwb3NpdG9yeSBpbiB3aGljaCB5b3UgYXJlIGludGVyZXN0ZWQgKGkuZS4KICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkZpbmQgdGhlIFVSTCBVc2VkIHRvIENsb25lIHRoZSBSZXBvc2l0b3J5OjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgIEF0IHRoZSBib3R0b20gb2YgdGhlIHBhZ2UsIG5vdGUgdGhlIFVSTCB1c2VkIHRvCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2dpdC1jb21tYW5kcy1jbG9uZSc+Y2xvbmU8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2dpdC1jb21tYW5kcy1jbG9uZSc+Y2xvbmU8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICB0aGF0IHJlcG9zaXRvcnkgKGUuZy4KICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiZZT0NUT19HSVRfVVJMOy9wb2t5PC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FeGFtaW5lIENoYW5nZSBIaXN0b3J5IG9mIHRoZSBSZXBvc2l0b3J5OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIEF0IHRoZSB0b3Agb2YgdGhlIHBhZ2UsIGNsaWNrIG9uIGFueSBicmFuY2ggaW4gd2hpY2ggeW91Ci0gICAgICAgICAgICAgICAgICAgIG1pZ2h0IGJlIGludGVyZXN0ZWQgKGUuZy4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiZESVNUUk9fTkFNRV9OT19DQVA7PC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHRoZW4gdmlldyB0aGUgY29tbWl0IGxvZyBvciB0cmVlIHZpZXcgZm9yIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgYnJhbmNoLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBjbG9uaW5nIGEgcmVwb3NpdG9yeSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2Nsb25pbmctdGhlLXBva3ktcmVwb3NpdG9yeSc+Q2xvbmluZyB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBSZXBvc2l0b3J5PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgogICAgICAgICA8L3BhcmE+CkBAIC0zMTksMTIgKzY5NSwxMiBAQAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgbWFpbnRhaW5zIGFuIEluZGV4IG9mIFJlbGVhc2VzIGFyZWEgdGhhdCBjb250YWlucwogICAgICAgICAgICAgcmVsYXRlZCBmaWxlcyB0aGF0IGNvbnRyaWJ1dGUgdG8gdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICBSYXRoZXIgdGhhbiBHaXQgcmVwb3NpdG9yaWVzLCB0aGVzZSBmaWxlcyByZXByZXNlbnQgc25hcHNob3QKLSAgICAgICAgICAgIHRhcmJhbGxzLgorICAgICAgICAgICAgUmF0aGVyIHRoYW4gR2l0IHJlcG9zaXRvcmllcywgdGhlc2UgZmlsZXMgYXJlIHRhcmJhbGxzIHRoYXQKKyAgICAgICAgICAgIHJlcHJlc2VudCBzbmFwc2hvdHMgaW4gdGltZSBvZiBhIGdpdmVuIGNvbXBvbmVudC4KICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgogICAgICAgICAgICAgICAgIFRoZSByZWNvbW1lbmRlZCBtZXRob2QgZm9yIGFjY2Vzc2luZyBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgY29tcG9uZW50cyBpcyB0byB1c2UgR2l0IHRvIGNsb25lIGEgcmVwb3NpdG9yeSBhbmQgd29yayBmcm9tCi0gICAgICAgICAgICAgICAgd2l0aGluIHRoYXQgbG9jYWwgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICBjb21wb25lbnRzIGlzIHRvIHVzZSBHaXQgdG8gY2xvbmUgdGhlIHVwc3RyZWFtIHJlcG9zaXRvcnkgYW5kCisgICAgICAgICAgICAgICAgd29yayBmcm9tIHdpdGhpbiB0aGF0IGxvY2FsbHkgY2xvbmVkIHJlcG9zaXRvcnkuCiAgICAgICAgICAgICAgICAgVGhlIHByb2NlZHVyZSBpbiB0aGlzIHNlY3Rpb24gZXhpc3RzIHNob3VsZCB5b3UgZGVzaXJlIGEKICAgICAgICAgICAgICAgICB0YXJiYWxsIHNuYXBzaG90IG9mIGFueSBnaXZlbiBjb21wb25lbnQuCiAgICAgICAgICAgICA8L25vdGU+CkBAIC0zNDIsOCArNzE4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwgYXJyYXkgb2YgcmVsZWFzZWQgUG9reSB0YXJiYWxscy4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IG9mIFJlbGVhc2VzIHdhcyBoaXN0b3JpY2FsbHkgdXNlZCBmb3IgdmVyeQotICAgICAgICAgICAgICAgICAgICAgICAgZWFybHkgcmVsZWFzZXMgYW5kIGV4aXN0cyBmb3IgcmV0cm9hY3RpdmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlbmVzcyBvbmx5LgorICAgICAgICAgICAgICAgICAgICAgICAgZWFybHkgcmVsZWFzZXMgYW5kIGV4aXN0cyBub3cgb25seSBmb3IgcmV0cm9hY3RpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlbmVzcy4KICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CkBAIC0zNjEsNyArNzM3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RG93bmxvYWQgdGhlIFRhcmJhbGw6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgQ2xpY2sgYSB0YXJiYWxsIHRvIGRvd25sb2FkIGFuZCBzYXZlIGEgc25hcHNob3Qgb2YgYQorICAgICAgICAgICAgICAgICAgICBDbGljayB0aGUgdGFyYmFsbCB0byBkb3dubG9hZCBhbmQgc2F2ZSBhIHNuYXBzaG90IG9mIHRoZQogICAgICAgICAgICAgICAgICAgICBnaXZlbiBjb21wb25lbnQuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KQEAgLTM3NCw3ICs3NTAsNyBAQAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFRoZQogICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdCBXZWJzaXRlPC91bGluaz4KLSAgICAgICAgICAgIHVzZXMgYSAiRG93bmxvYWRzIiBhcmVhIGZyb20gd2hpY2ggeW91IGNhbiBsb2NhdGUgYW5kIGRvd25sb2FkCisgICAgICAgICAgICB1c2VzIGEgIkRPV05MT0FEUyIgcGFnZSBmcm9tIHdoaWNoIHlvdSBjYW4gbG9jYXRlIGFuZCBkb3dubG9hZAogICAgICAgICAgICAgdGFyYmFsbHMgb2YgYW55IFlvY3RvIFByb2plY3QgcmVsZWFzZS4KICAgICAgICAgICAgIFJhdGhlciB0aGFuIEdpdCByZXBvc2l0b3JpZXMsIHRoZXNlIGZpbGVzIHJlcHJlc2VudCBzbmFwc2hvdAogICAgICAgICAgICAgdGFyYmFsbHMuCkBAIC0zOTQsNTIgKzc3MCwxMDAgQEAKICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+R2V0IHRvIHRoZSBEb3dubG9hZHMgQXJlYTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBDbGljayB0aGUgIkRvd25sb2FkcyIgdGFiLgorICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdGhlICJET1dOTE9BRFMiIGl0ZW0gZnJvbSB0aGUgcHVsbC1kb3duCisgICAgICAgICAgICAgICAgICAgICJTT0ZUV0FSRSIgdGFiIG1lbnUuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNlbGVjdCB0aGUgVHlwZSBvZiBGaWxlczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBDbGljayB0aGUgdHlwZSBvZiBmaWxlcyB5b3Ugd2FudCAoaS5lICJCdWlsZCBTeXN0ZW0iLAotICAgICAgICAgICAgICAgICAgICAiVG9vbHMiLCBvciAiQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQcykiLgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2VsZWN0IGEgWW9jdG8gUHJvamVjdCBSZWxlYXNlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgbWVudSBuZXh0IHRvICJSRUxFQVNFIiB0byBkaXNwbGF5IGFuZCBjaG9vc2UKKyAgICAgICAgICAgICAgICAgICAgYSBZb2N0byBQcm9qZWN0IHJlbGVhc2UgKGUuZy4gc3Vtbywgcm9ja28sIHB5cm8sIGFuZAorICAgICAgICAgICAgICAgICAgICBzbyBmb3J0aC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGEgIm1hcCIgb2YgWW9jdG8gUHJvamVjdCByZWxlYXNlcyB0byB2ZXJzaW9uIG51bWJlcnMsCisgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9SZWxlYXNlcyc+UmVsZWFzZXM8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB3aWtpIHBhZ2UuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxvY2F0ZSBhbmQgRG93bmxvYWQgdGhlIFRhcmJhbGw6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgRnJvbSB0aGUgbGlzdCBvZiByZWxlYXNlcywgbG9jYXRlIHRoZSBhcHByb3ByaWF0ZQotICAgICAgICAgICAgICAgICAgICBkb3dubG9hZCBsaW5rIGFuZCBkb3dubG9hZCB0aGUgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Eb3dubG9hZCBUb29scyBvciBCb2FyZCBTdXBwb3J0IFBhY2thZ2VzIChCU1BzKTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBGcm9tIHRoZSAiRE9XTkxPQURTIiBwYWdlLCB5b3UgY2FuIGRvd25sb2FkIHRvb2xzIG9yCisgICAgICAgICAgICAgICAgICAgIEJTUHMgYXMgd2VsbC4KKyAgICAgICAgICAgICAgICAgICAgSnVzdCBzY3JvbGwgZG93biB0aGUgcGFnZSBhbmQgbG9vayBmb3Igd2hhdCB5b3UgbmVlZC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCisgICAgPHNlY3Rpb24gaWQ9J2FjY2Vzc2luZy1uaWdodGx5LWJ1aWxkcyc+CisgICAgICAgIDx0aXRsZT5BY2Nlc3NpbmcgTmlnaHRseSBCdWlsZHM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBtYWludGFpbnMgYW4gYXJlYSBmb3IgbmlnaHRseSBidWlsZHMgdGhhdCBjb250YWlucworICAgICAgICAgICAgdGFyYmFsbCByZWxlYXNlcyBhdCA8dWxpbmsgdXJsPScmWU9DVE9fQUJfTklHSFRMWV9VUkw7Jy8+LgorICAgICAgICAgICAgVGhlc2UgYnVpbGRzIGluY2x1ZGUgWW9jdG8gUHJvamVjdCByZWxlYXNlcywgU0RLIGluc3RhbGxhdGlvbgorICAgICAgICAgICAgc2NyaXB0cywgYW5kIGV4cGVyaW1lbnRhbCBidWlsZHMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFNob3VsZCB5b3UgZXZlciB3YW50IHRvIGFjY2VzcyBhIG5pZ2h0bHkgYnVpbGQgb2YgYSBwYXJ0aWN1bGFyCisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGNvbXBvbmVudCwgdXNlIHRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlOgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkFjY2VzcyB0aGUgTmlnaHRseSBCdWlsZHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgT3BlbiBhIGJyb3dzZXIgYW5kIGdvIHRvCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19BQl9OSUdIVExZX1VSTDsnLz4gdG8gYWNjZXNzIHRoZQorICAgICAgICAgICAgICAgICAgICBOaWdodGx5IEJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2VsZWN0IGEgQnVpbGQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ2xpY2sgb24gYW55IGJ1aWxkIGJ5IGRhdGUgaW4gd2hpY2ggeW91IGFyZSBpbnRlcmVzdGVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GaW5kIHRoZSBUYXJiYWxsOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIERyaWxsIGRvd24gdG8gZmluZCB0aGUgYXNzb2NpYXRlZCB0YXJiYWxsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Eb3dubG9hZCB0aGUgVGFyYmFsbDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDbGljayB0aGUgdGFyYmFsbCB0byBkb3dubG9hZCBhbmQgc2F2ZSBhIHNuYXBzaG90IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBnaXZlbiBjb21wb25lbnQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J2Nsb25pbmctYW5kLWNoZWNraW5nLW91dC1icmFuY2hzJz4KKyAgICA8dGl0bGU+Q2xvbmluZyBhbmQgQ2hlY2tpbmcgT3V0IEJyYW5jaGVzPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUbyB1c2UgdGhlIFlvY3RvIFByb2plY3QsIHlvdSBuZWVkIGEgcmVsZWFzZSBvZiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICBsb2NhbGx5IGluc3RhbGxlZCBvbiB5b3VyIGRldmVsb3BtZW50IHN5c3RlbS4KKyAgICAgICAgVGhlIGxvY2FsbHkgaW5zdGFsbGVkIHNldCBvZiBmaWxlcyBpcyByZWZlcnJlZCB0byBhcyB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFlvdSBjcmVhdGUgeW91ciBTb3VyY2UgRGlyZWN0b3J5IGJ5IHVzaW5nCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiB0byBjbG9uZSBhIGxvY2FsCisgICAgICAgIGNvcHkgb2YgdGhlIHVwc3RyZWFtIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeS4KKyAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CisgICAgICAgICAgICBUaGUgcHJlZmVycmVkIG1ldGhvZCBvZiBnZXR0aW5nIHRoZSBZb2N0byBQcm9qZWN0IFNvdXJjZQorICAgICAgICAgICAgRGlyZWN0b3J5IHNldCB1cCBpcyB0byBjbG9uZSB0aGUgcmVwb3NpdG9yeS4KKyAgICAgICAgPC9ub3RlPgorICAgICAgICBXb3JraW5nIGZyb20gYSBjb3B5IG9mIHRoZSB1cHN0cmVhbSByZXBvc2l0b3J5IGFsbG93cyB5b3UKKyAgICAgICAgdG8gY29udHJpYnV0ZSBiYWNrIGludG8gdGhlIFlvY3RvIFByb2plY3Qgb3Igc2ltcGx5IHdvcmsgd2l0aAorICAgICAgICB0aGUgbGF0ZXN0IHNvZnR3YXJlIG9uIGEgZGV2ZWxvcG1lbnQgYnJhbmNoLgorICAgICAgICBCZWNhdXNlIEdpdCBtYWludGFpbnMgYW5kIGNyZWF0ZXMgYW4gdXBzdHJlYW0gcmVwb3NpdG9yeSB3aXRoCisgICAgICAgIGEgY29tcGxldGUgaGlzdG9yeSBvZiBjaGFuZ2VzIGFuZCB5b3UgYXJlIHdvcmtpbmcgd2l0aCBhIGxvY2FsCisgICAgICAgIGNsb25lIG9mIHRoYXQgcmVwb3NpdG9yeSwgeW91IGhhdmUgYWNjZXNzIHRvIGFsbCB0aGUgWW9jdG8KKyAgICAgICAgUHJvamVjdCBkZXZlbG9wbWVudCBicmFuY2hlcyBhbmQgdGFnIG5hbWVzIHVzZWQgaW4gdGhlIHVwc3RyZWFtCisgICAgICAgIHJlcG9zaXRvcnkuCisgICAgPC9wYXJhPgorCiAgICAgPHNlY3Rpb24gaWQ9J2Nsb25pbmctdGhlLXBva3ktcmVwb3NpdG9yeSc+CiAgICAgICAgIDx0aXRsZT5DbG9uaW5nIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IFJlcG9zaXRvcnk8L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0LCB5b3UgbmVlZCBhIHJlbGVhc2Ugb2YgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgIGxvY2FsbHkgaW5zdGFsbGVkIG9uIHlvdXIgZGV2ZWxvcG1lbnQgc3lzdGVtLgotICAgICAgICAgICAgVGhlIGxvY2FsbHkgaW5zdGFsbGVkIHNldCBvZiBmaWxlcyBpcyByZWZlcnJlZCB0byBhcyB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgotICAgICAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IGNyZWF0ZSB5b3VyIFNvdXJjZSBEaXJlY3RvcnkgYnkgdXNpbmcKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2dpdCc+R2l0PC91bGluaz4gdG8gY2xvbmUgYSBsb2NhbAotICAgICAgICAgICAgY29weSBvZiB0aGUgdXBzdHJlYW0gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LgotICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+Ci0gICAgICAgICAgICAgICAgVGhlIHByZWZlcnJlZCBtZXRob2Qgb2YgZ2V0dGluZyB0aGUgWW9jdG8gUHJvamVjdCBTb3VyY2UKLSAgICAgICAgICAgICAgICBEaXJlY3Rvcnkgc2V0IHVwIGlzIHRvIGNsb25lIHRoZSByZXBvc2l0b3J5LgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgV29ya2luZyBmcm9tIGEgY29weSBvZiB0aGUgdXBzdHJlYW0gcmVwb3NpdG9yeSBhbGxvd3MgeW91Ci0gICAgICAgICAgICB0byBjb250cmlidXRlIGJhY2sgaW50byB0aGUgWW9jdG8gUHJvamVjdCBvciBzaW1wbHkgd29yayB3aXRoCi0gICAgICAgICAgICB0aGUgbGF0ZXN0IHNvZnR3YXJlIG9uIGEgZGV2ZWxvcG1lbnQgYnJhbmNoLgotICAgICAgICAgICAgQmVjYXVzZSBHaXQgbWFpbnRhaW5zIGFuZCBjcmVhdGVzIGFuIHVwc3RyZWFtIHJlcG9zaXRvcnkgd2l0aAotICAgICAgICAgICAgYSBjb21wbGV0ZSBoaXN0b3J5IG9mIGNoYW5nZXMgYW5kIHlvdSBhcmUgd29ya2luZyB3aXRoIGEgbG9jYWwKLSAgICAgICAgICAgIGNsb25lIG9mIHRoYXQgcmVwb3NpdG9yeSwgeW91IGhhdmUgYWNjZXNzIHRvIGFsbCB0aGUgWW9jdG8KLSAgICAgICAgICAgIFByb2plY3QgZGV2ZWxvcG1lbnQgYnJhbmNoZXMgYW5kIHRhZyBuYW1lcyB1c2VkIGluIHRoZSB1cHN0cmVhbQotICAgICAgICAgICAgcmVwb3NpdG9yeS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgogICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGNyZWF0ZSBhIGxvY2FsIHZlcnNpb24gb2YgdGhlCiAgICAgICAgICAgICB1cHN0cmVhbQogICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcG9reSc+PGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPjwvdWxpbms+CkBAIC00NzMsOCArODk3LDggQEAKICAgICAgICAgICAgICAgICAgICAgYnJhbmNoIGJhc2VkIG9uIGEgdGFnIG5hbWUsIHNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2NoZWNraW5nLW91dC1ieS1icmFuY2gtaW4tcG9reSc+Q2hlY2tpbmcgT3V0IEJ5IEJyYW5jaCBpbiBQb2t5PC9saW5rPiIKICAgICAgICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2NoZWNrb3V0LW91dC1ieS10YWctaW4tcG9reSc+Q2hlY2tpbmcgT3V0IEJ5IFRhZyBpbiBQb2t5PC9saW5rPiIsCi0gICAgICAgICAgICAgICAgICAgIHJlc3BlY3RpdmVseS48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2NoZWNrb3V0LW91dC1ieS10YWctaW4tcG9reSc+Q2hlY2tpbmcgT3V0IEJ5IFRhZyBpbiBQb2t5PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMsIHJlc3BlY3RpdmVseS48L3BhcmE+CiAKICAgICAgICAgICAgICAgICAgICAgPHBhcmE+T25jZSB0aGUgcmVwb3NpdG9yeSBpcyBjcmVhdGVkLCB5b3UgY2FuIGNoYW5nZSB0bwogICAgICAgICAgICAgICAgICAgICB0aGF0IGRpcmVjdG9yeSBhbmQgY2hlY2sgaXRzIHN0YXR1cy4KQEAgLTYzNSw3ICsxMDU5LDcgQEAKICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DaGVja291dCB0aGUgQnJhbmNoOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBnaXQgY2hlY2tvdXQgdGFncy8mRElTVFJPOyAtYiBteV95b2N0b18mRElTVFJPOworICAgICAkIGdpdCBjaGVja291dCB0YWdzLyZESVNUUk9fUkVMX1RBRzsgLWIgbXlfeW9jdG9fJkRJU1RSTzsKICAgICAgU3dpdGNoZWQgdG8gYSBuZXcgYnJhbmNoICdteV95b2N0b18mRElTVFJPOycKICAgICAgJCBnaXQgYnJhbmNoCiAgICAgICAgbWFzdGVyCkBAIC02NTYsOTUgKzEwODAsNiBAQAogICAgIDwvc2VjdGlvbj4KIDwvc2VjdGlvbj4KIAotPHNlY3Rpb24gaWQ9J3BlcmZvcm1pbmctYS1zaW1wbGUtYnVpbGQnPgotICAgIDx0aXRsZT5QZXJmb3JtaW5nIGEgU2ltcGxlIEJ1aWxkPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBTZXZlcmFsIG1ldGhvZHMgZXhpc3QgdGhhdCBhbGxvdyB5b3UgdG8gYnVpbGQgYW4gaW1hZ2Ugd2l0aGluIHRoZQotICAgICAgICBZb2N0byBQcm9qZWN0LgotICAgICAgICBUaGlzIHByb2NlZHVyZSBzaG93cyBob3cgdG8gYnVpbGQgYW4gaW1hZ2UgdXNpbmcgQml0QmFrZSBmcm9tIGEKLSAgICAgICAgTGludXggaG9zdC4KLSAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGJ1aWxkIGFuIGltYWdlIHVzaW5nCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3RvYXN0ZXItdGVybSc+VG9hc3RlcjwvdWxpbms+LAotICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1RPQVNUX1VSTDsnPllvY3RvIFByb2plY3QgVG9hc3RlciBNYW51YWw8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHRvIGJ1aWxkIGltYWdlcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjdXNpbmctZGV2dG9vbC1pbi15b3VyLXNkay13b3JrZmxvdyc+VXNpbmcgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBpbiBZb3VyIFNESyBXb3JrZmxvdzwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZAotICAgICAgICAgICAgICAgICAgICB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9ub3RlPgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgYnVpbGQgcHJvY2VzcyBjcmVhdGVzIGFuIGVudGlyZSBMaW51eCBkaXN0cmlidXRpb24gZnJvbSBzb3VyY2UKLSAgICAgICAgYW5kIHBsYWNlcyBpdCBpbiB5b3VyCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgdW5kZXIgPGZpbGVuYW1lPnRtcC9kZXBsb3kvaW1hZ2VzPC9maWxlbmFtZT4uCi0gICAgICAgIEZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiB0aGUgYnVpbGQgcHJvY2VzcyB1c2luZyBCaXRCYWtlLCBzZWUgdGhlCi0gICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNpbWFnZXMtZGV2LWVudmlyb25tZW50Jz5JbWFnZXM8L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgotICAgICAgICBZb3UgY2FuIGFsc28gcmVmZXJlbmNlIHRoZQotICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyNxcy1idWlsZGluZy1pbWFnZXMnPkJ1aWxkaW5nIEltYWdlczwvdWxpbms+IgotICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0LgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgZm9sbG93aW5nIGZpZ3VyZSBhbmQgbGlzdCBvdmVydmlld3MgdGhlIGJ1aWxkIHByb2Nlc3M6Ci0gICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9iaXRiYWtlLWJ1aWxkLWZsb3cucG5nIiB3aWR0aD0iN2luIiBkZXB0aD0iNGluIiBhbGlnbj0iY2VudGVyIiBzY2FsZWZpdD0iMSIgLz4KLSAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgdXAgWW91ciBIb3N0IERldmVsb3BtZW50IFN5c3RlbSB0byBTdXBwb3J0Ci0gICAgICAgICAgICAgICAgRGV2ZWxvcG1lbnQgVXNpbmcgdGhlIFlvY3RvIFByb2plY3Q8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjeXAtcmVzb3VyY2VzJz5TZXR0aW5nIFVwIHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQgZm9yIG9wdGlvbnMgb24gaG93Ci0gICAgICAgICAgICAgICAgdG8gZ2V0IGEgYnVpbGQgaG9zdCByZWFkeSB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluaXRpYWxpemUgdGhlIEJ1aWxkIEVudmlyb25tZW50OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgSW5pdGlhbGl6ZSB0aGUgYnVpbGQgZW52aXJvbm1lbnQgYnkgc291cmNpbmcgdGhlIGJ1aWxkCi0gICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgc2NyaXB0IChpLmUuCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+KS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBTdXJlIFlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIEZpbGUgaXMgQ29ycmVjdDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEVuc3VyZSB0aGUgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgICAgICBmaWxlLCB3aGljaCBpcyBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAotICAgICAgICAgICAgICAgIGlzIHNldCB1cCBob3cgeW91IHdhbnQgaXQuCi0gICAgICAgICAgICAgICAgVGhpcyBmaWxlIGRlZmluZXMgbWFueSBhc3BlY3RzIG9mIHRoZSBidWlsZCBlbnZpcm9ubWVudAotICAgICAgICAgICAgICAgIGluY2x1ZGluZyB0aGUgdGFyZ2V0IG1hY2hpbmUgYXJjaGl0ZWN0dXJlIHRocm91Z2ggdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz5NQUNISU5FPC91bGluaz48L2ZpbGVuYW1lPiB2YXJpYWJsZSwKLSAgICAgICAgICAgICAgICB0aGUgcGFja2FnaW5nIGZvcm1hdCB1c2VkIGR1cmluZyB0aGUgYnVpbGQKLSAgICAgICAgICAgICAgICAoPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfQ0xBU1NFUyc+PGZpbGVuYW1lPlBBQ0tBR0VfQ0xBU1NFUzwvZmlsZW5hbWU+PC91bGluaz4pLAotICAgICAgICAgICAgICAgIGFuZCBhIGNlbnRyYWxpemVkIHRhcmJhbGwgZG93bmxvYWQgZGlyZWN0b3J5IHRocm91Z2ggdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ETF9ESVInPkRMX0RJUjwvdWxpbms+PC9maWxlbmFtZT4gdmFyaWFibGUuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBJbWFnZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEJ1aWxkIHRoZSBpbWFnZSB1c2luZyB0aGUgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPiBjb21tYW5kLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgYnVpbGRzIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPiBpbWFnZToKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSBjb3JlLWltYWdlLW1pbmltYWwKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIEJpdEJha2UsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7Jz5CaXRCYWtlIFVzZXIgTWFudWFsPC91bGluaz4uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCi0tLT4KIDwvY2hhcHRlcj4KIDwhLS0KIHZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwueG1sCmluZGV4IGVkODAxMWQuLjkzYTYxNWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLnhtbApAQCAtMTAyLDE0ICsxMDIsOSBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkphbnVhcnkgMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQuMjwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPk1hcmNoIDIwMTg8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNC4yIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjU8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5NYXkgMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi41IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKQEAgLTEzMywyNCArMTI4LDM2IEBACiAgICAgICAgICAgICAgICAgICAgICAgIGlzIGZvciB0aGUgJllPQ1RPX0RPQ19WRVJTSU9OOyByZWxlYXNlIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCi0gICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIHVzZSB0aGUgbWFudWFsIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICBGb3IgbWFudWFscyBhc3NvY2lhdGVkIHdpdGggb3RoZXIgcmVsZWFzZXMgb2YgdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QsIGdvIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCBnbyB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgIGFuZCB1c2UgdGhlIGRyb3AtZG93biAiQWN0aXZlIFJlbGVhc2VzIiBidXR0b24KLSAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNob29zZSB0aGUgbWFudWFsIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVzaXJlZAotICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgZnJvbSB0aGF0IHNpdGUuCisgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbHMgZnJvbSB0aGUgc2l0ZSBhcmUgbW9yZSB1cC10by1kYXRlIHRoYW4gbWFudWFscworICAgICAgICAgICAgICAgICAgICAgICBkZXJpdmVkIGZyb20gdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZWQgVEFSIGZpbGVzLgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bwotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBsb2NhdGVkIHRoaXMgbWFudWFsIHRocm91Z2ggYSB3ZWIgc2VhcmNoLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiBvZiB0aGUgbWFudWFsIG1pZ2h0IG5vdCBiZSB0aGUgb25lIHlvdSB3YW50CisgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIHRoZSBzZWFyY2ggbWlnaHQgaGF2ZSByZXR1cm5lZCBhIG1hbnVhbCBtdWNoCisgICAgICAgICAgICAgICAgICAgICAgIG9sZGVyIHRoYW4gdGhlIFlvY3RvIFByb2plY3QgdmVyc2lvbiB3aXRoIHdoaWNoIHlvdQorICAgICAgICAgICAgICAgICAgICAgICBhcmUgd29ya2luZykuCisgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIGFsbCBZb2N0byBQcm9qZWN0IG1ham9yIHJlbGVhc2VzIGJ5CisgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvUmVsZWFzZXMnPlJlbGVhc2VzPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgcGFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgYSB2ZXJzaW9uIG9mIHRoaXMgbWFudWFsIGZvciBhIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UsIHZpc2l0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIHNldCBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIkFDVElWRSBSRUxFQVNFUyBET0NVTUVOVEFUSU9OIiBvciAiRE9DVU1FTlRTIEFSQ0hJVkUiCisgICAgICAgICAgICAgICAgICAgICAgIHB1bGwtZG93biBtZW51cy4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bworICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgIDwvbm90ZT4KICAgICA8L2xlZ2Fsbm90aWNlPgpAQCAtMTYxLDggKzE2OCw2IEBACiAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJkZXYtbWFudWFsLXN0YXJ0LnhtbCIvPgogCi0gICAgPHhpOmluY2x1ZGUgaHJlZj0iZGV2LW1hbnVhbC1uZXdiaWUueG1sIi8+Ci0KICAgICA8eGk6aW5jbHVkZSBocmVmPSJkZXYtbWFudWFsLWNvbW1vbi10YXNrcy54bWwiLz4KIAogICAgIDx4aTppbmNsdWRlIGhyZWY9ImRldi1tYW51YWwtcWVtdS54bWwiLz4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9idWlsZGhpc3Rvcnktd2ViLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy9idWlsZGhpc3Rvcnktd2ViLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2J1aWxkaGlzdG9yeS13ZWIucG5nCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvYnVpbGRoaXN0b3J5LXdlYi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2J1aWxkaGlzdG9yeS5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2ZpZ3VyZXMvYnVpbGRoaXN0b3J5LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2J1aWxkaGlzdG9yeS5wbmcKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy9idWlsZGhpc3RvcnkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1hZHZhbmNlZC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtYWR2YW5jZWQueG1sCmluZGV4IGMzMDEzYjguLjVjNzZlZDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1hZHZhbmNlZC54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWFkdmFuY2VkLnhtbApAQCAtMjEsNyArMjEsNyBAQAogICAgIDxwYXJhPgogICAgICAgICBLZXJuZWwgTWV0YWRhdGEgZXhpc3RzIGluIG1hbnkgcGxhY2VzLgogICAgICAgICBPbmUgYXJlYSBpbiB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KICAgICAgICAgaXMgdGhlIDxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeS4KICAgICAgICAgWW91IGNhbiBmaW5kIHRoaXMgcmVwb3NpdG9yeSBncm91cGVkIHVuZGVyIHRoZSAiWW9jdG8gTGludXggS2VybmVsIgogICAgICAgICBoZWFkaW5nIGluIHRoZQpAQCAtNjQsOCArNjQsNyBAQAogICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItS01BQ0hJTkUnPjxmaWxlbmFtZT5LTUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KICAgICAgICAgdmFyaWFibGUuCiAgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgdHlwaWNhbGx5IHNldCB0byB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICB2YXJpYWJsZSwgd2hpY2ggaXMgdXNlZCBieQorICAgICAgICA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+IHZhcmlhYmxlLCB3aGljaCBpcyB1c2VkIGJ5CiAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2JpdGJha2UtdGVybSc+Qml0QmFrZTwvdWxpbms+LgogICAgICAgICBIb3dldmVyLCBpbiBzb21lIGNhc2VzLCB0aGUgdmFyaWFibGUgbWlnaHQgaW5zdGVhZCByZWZlciB0byB0aGUKICAgICAgICAgdW5kZXJseWluZyBwbGF0Zm9ybSBvZiB0aGUgPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPi4KQEAgLTc3LDggKzc2LDcgQEAKICAgICAgICAgTXVsdGlwbGUgQ29yZWk3LWJhc2VkIEJTUHMgY291bGQgc2hhcmUgdGhlIHNhbWUgImludGVsLWNvcmVpNy02NCIKICAgICAgICAgdmFsdWUgZm9yIDxmaWxlbmFtZT5LTUFDSElORTwvZmlsZW5hbWU+LgogICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gcmVhbGl6ZSB0aGF0IDxmaWxlbmFtZT5LTUFDSElORTwvZmlsZW5hbWU+IGlzCi0gICAgICAgIGp1c3QgZm9yIGtlcm5lbCBtYXBwaW5nLCB3aGlsZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgIGp1c3QgZm9yIGtlcm5lbCBtYXBwaW5nLCB3aGlsZSA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+CiAgICAgICAgIGlzIHRoZSBtYWNoaW5lIHR5cGUgd2l0aGluIGEgQlNQIExheWVyLgogICAgICAgICBFdmVuIHdpdGggdGhpcyBkaXN0aW5jdGlvbiwgaG93ZXZlciwgdGhlc2UgdHdvIHZhcmlhYmxlcyBjYW4gaG9sZAogICAgICAgICB0aGUgc2FtZSB2YWx1ZS4KQEAgLTExNiw4ICsxMTQsNyBAQAogICAgICAgICB1c2VkIGluIGFzc2VtYmxpbmcgdGhlIGNvbmZpZ3VyYXRpb24uCiAgICAgICAgIElmIHlvdSBkbyBub3Qgc3BlY2lmeSBhIDxmaWxlbmFtZT5MSU5VWF9LRVJORUxfVFlQRTwvZmlsZW5hbWU+LAogICAgICAgICBpdCBkZWZhdWx0cyB0byAic3RhbmRhcmQiLgotICAgICAgICBUb2dldGhlciB3aXRoCi0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LTUFDSElORSc+PGZpbGVuYW1lPktNQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgVG9nZXRoZXIgd2l0aCA8ZmlsZW5hbWU+S01BQ0hJTkU8L2ZpbGVuYW1lPiwKICAgICAgICAgPGZpbGVuYW1lPkxJTlVYX0tFUk5FTF9UWVBFPC9maWxlbmFtZT4gZGVmaW5lcyB0aGUgc2VhcmNoCiAgICAgICAgIGFyZ3VtZW50cyB1c2VkIGJ5IHRoZSBrZXJuZWwgdG9vbHMgdG8gZmluZCB0aGUKICAgICAgICAgYXBwcm9wcmlhdGUgZGVzY3JpcHRpb24gd2l0aGluIHRoZSBrZXJuZWwgTWV0YWRhdGEgd2l0aCB3aGljaCB0bwpAQCAtNjMxLDggKzYyOCwxMCBAQAogICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgRm9yIEJTUHMgc3VwcG9ydGVkIGJ5IHRoZSBZb2N0byBQcm9qZWN0LCB0aGUgQlNQIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICAgICAgZmlsZXMgYXJlIGxvY2F0ZWQgaW4gdGhlIDxmaWxlbmFtZT5ic3A8L2ZpbGVuYW1lPiBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICBvZiB0aGUgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkKLSAgICAgICAgICAgICAgICBvcmdhbml6ZWQgdW5kZXIgdGhlICJZb2N0byBMaW51eCBLZXJuZWwiIGhlYWRpbmcgaW4gdGhlCisgICAgICAgICAgICAgICAgb2YgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kveW9jdG8ta2VybmVsLWNhY2hlL3RyZWUvYnNwJz48ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgb3JnYW5pemVkIHVuZGVyIHRoZSAiWW9jdG8gTGludXggS2VybmVsIiBoZWFkaW5nCisgICAgICAgICAgICAgICAgaW4gdGhlCiAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2knPllvY3RvIFByb2plY3QgU291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+LgogICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L3BhcmE+CkBAIC02NDEsMjcgKzY0MCwzMCBAQAogICAgICAgICAgICAgVGhpcyBzZWN0aW9uIG92ZXJ2aWV3cyB0aGUgQlNQIGRlc2NyaXB0aW9uIHN0cnVjdHVyZSwgdGhlCiAgICAgICAgICAgICBhZ2dyZWdhdGlvbiBjb25jZXB0cywgYW5kIHByZXNlbnRzIGEgZGV0YWlsZWQgZXhhbXBsZSB1c2luZwogICAgICAgICAgICAgYSBCU1Agc3VwcG9ydGVkIGJ5IHRoZSBZb2N0byBQcm9qZWN0IChpLmUuIEJlYWdsZUJvbmUgQm9hcmQpLgorICAgICAgICAgICAgRm9yIGNvbXBsZXRlIGluZm9ybWF0aW9uIG9uIEJTUCBsYXllciBmaWxlIGhpZXJhcmNoeSwgc2VlIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsnPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4uCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8c2VjdGlvbiBpZD0nYnNwLWRlc2NyaXB0aW9uLWZpbGUtb3ZlcnZpZXcnPgogICAgICAgICAgICAgPHRpdGxlPk92ZXJ2aWV3PC90aXRsZT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRm9yIHNpbXBsaWNpdHksIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgdG9wLWxldmVsIEJTUAorICAgICAgICAgICAgICAgIEZvciBzaW1wbGljaXR5LCBjb25zaWRlciB0aGUgZm9sbG93aW5nIHJvb3QgQlNQIGxheWVyCiAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gZmlsZXMgZm9yIHRoZSBCZWFnbGVCb25lIGJvYXJkLgotICAgICAgICAgICAgICAgIFRvcC1sZXZlbCBCU1AgZGVzY3JpcHRpb25zIGZpbGVzIGVtcGxveSBib3RoIGEgc3RydWN0dXJlCi0gICAgICAgICAgICAgICAgYW5kIG5hbWluZyBjb252ZW50aW9uIGZvciBjb25zaXN0ZW5jeS4KKyAgICAgICAgICAgICAgICBUaGVzZSBmaWxlcyBlbXBsb3kgYm90aCBhIHN0cnVjdHVyZSBhbmQgbmFtaW5nIGNvbnZlbnRpb24KKyAgICAgICAgICAgICAgICBmb3IgY29uc2lzdGVuY3kuCiAgICAgICAgICAgICAgICAgVGhlIG5hbWluZyBjb252ZW50aW9uIGZvciB0aGUgZmlsZSBpcyBhcyBmb2xsb3dzOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgPHJlcGxhY2VhYmxlPmJzcF9uYW1lPC9yZXBsYWNlYWJsZT4tPHJlcGxhY2VhYmxlPmtlcm5lbF90eXBlPC9yZXBsYWNlYWJsZT4uc2NjCisgICAgIDxyZXBsYWNlYWJsZT5ic3Bfcm9vdF9uYW1lPC9yZXBsYWNlYWJsZT4tPHJlcGxhY2VhYmxlPmtlcm5lbF90eXBlPC9yZXBsYWNlYWJsZT4uc2NjCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIEhlcmUgYXJlIHNvbWUgZXhhbXBsZSB0b3AtbGV2ZWwgQlNQIGZpbGVuYW1lcyBmb3IgdGhlCisgICAgICAgICAgICAgICAgSGVyZSBhcmUgc29tZSBleGFtcGxlIHJvb3QgbGF5ZXIgQlNQIGZpbGVuYW1lcyBmb3IgdGhlCiAgICAgICAgICAgICAgICAgQmVhZ2xlQm9uZSBCb2FyZCBCU1AsIHdoaWNoIGlzIHN1cHBvcnRlZCBieSB0aGUgWW9jdG8gUHJvamVjdDoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIGJlYWdsZWJvbmUtc3RhbmRhcmQuc2NjCiAgICAgIGJlYWdsZWJvbmUtcHJlZW1wdC1ydC5zY2MKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgRWFjaCBmaWxlIHVzZXMgdGhlIEJTUCBuYW1lIGZvbGxvd2VkIGJ5IHRoZSBrZXJuZWwgdHlwZS4KKyAgICAgICAgICAgICAgICBFYWNoIGZpbGUgdXNlcyB0aGUgcm9vdCBuYW1lIChpLmUgImJlYWdsZWJvbmUiKSBCU1AgbmFtZQorICAgICAgICAgICAgICAgIGZvbGxvd2VkIGJ5IHRoZSBrZXJuZWwgdHlwZS4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+CkBAIC04NTAsNyArODUyLDcgQEAKIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgTm93IGNvbnNpZGVyIHRoZSAibWlubm93IiBkZXNjcmlwdGlvbiBmb3IgdGhlICJ0aW55IiBrZXJuZWwKLSAgICAgICAgICAgICAgICB0eXBlIChpLmUuIDxmaWxlbmFtZT5taW5ub3ctdGlueS5zY2M8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICB0eXBlIChpLmUuIDxmaWxlbmFtZT5taW5ub3ctdGlueS5zY2M8L2ZpbGVuYW1lPik6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAgICBkZWZpbmUgS01BQ0hJTkUgbWlubm93CiAgICAgICAgIGRlZmluZSBLVFlQRSB0aW55CkBAIC0xMDEyLDggKzEwMTQsNyBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgSWYgeW91IG1vZGlmeSB0aGUgTWV0YWRhdGEsIHlvdSBtdXN0IG5vdCBmb3JnZXQgdG8gdXBkYXRlIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ1JFVic+PGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgIHN0YXRlbWVudHMgaW4gdGhlIGtlcm5lbCdzIHJlY2lwZS4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNSRVY8L2ZpbGVuYW1lPiBzdGF0ZW1lbnRzIGluIHRoZSBrZXJuZWwncyByZWNpcGUuCiAgICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCB5b3UgbmVlZCB0byB1cGRhdGUgdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDUkVWX21ldGE8L2ZpbGVuYW1lPiB2YXJpYWJsZSB0byBtYXRjaCB0aGUgY29tbWl0IGluCiAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPktNRVRBPC9maWxlbmFtZT4gYnJhbmNoIHlvdSB3aXNoIHRvIHVzZS4KQEAgLTEyMjEsOSArMTIyMiwxMyBAQAogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZWZpbmU8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICBEZWZpbmVzIHZhcmlhYmxlcywgc3VjaCBhcyA8ZmlsZW5hbWU+S01BQ0hJTkU8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+S1RZUEU8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPktBUkNIPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5LRkVBVFVSRV9ERVNDUklQVElPTjwvZmlsZW5hbWU+LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIERlZmluZXMgdmFyaWFibGVzLCBzdWNoIGFzCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUtNQUNISU5FJz48ZmlsZW5hbWU+S01BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LVFlQRSc+PGZpbGVuYW1lPktUWVBFPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItS0FSQ0gnPjxmaWxlbmFtZT5LQVJDSDwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUtGRUFUVVJFX0RFU0NSSVBUSU9OJz48ZmlsZW5hbWU+S0ZFQVRVUkVfREVTQ1JJUFRJT048L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbmNsdWRlIFNDQ19GSUxFPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgSW5jbHVkZXMgYW4gU0NDIGZpbGUgaW4gdGhlIGN1cnJlbnQgZmlsZS4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb21tb24ueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbW1vbi54bWwKaW5kZXggYjhmZDg3MC4uMjk5YmFjNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbW1vbi54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbW1vbi54bWwKQEAgLTI1LDcgKzI1LDcgQEAKICAgICAgICAgICAgIEJlZm9yZSB5b3UgY2FuIGRvIGFueSBrZXJuZWwgZGV2ZWxvcG1lbnQsIHlvdSBuZWVkIHRvIGJlCiAgICAgICAgICAgICBzdXJlIHlvdXIgYnVpbGQgaG9zdCBpcyBzZXQgdXAgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBnZXQgc2V0IHVwLCBzZWUgdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc2V0dGluZy11cC10aGUtZGV2ZWxvcG1lbnQtaG9zdC10by11c2UtdGhlLXlvY3RvLXByb2plY3QnPlNldHRpbmcgVXAgdG8gVXNlIHRoZSBZb2N0byBQcm9qZWN0PC91bGluaz4iCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc2V0dGluZy11cC10aGUtZGV2ZWxvcG1lbnQtaG9zdC10by11c2UtdGhlLXlvY3RvLXByb2plY3QnPlByZXBhcmluZyB0aGUgQnVpbGQgSG9zdDwvdWxpbms+IgogICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICBQYXJ0IG9mIHByZXBhcmluZyB0aGUgc3lzdGVtIGlzIGNyZWF0aW5nIGEgbG9jYWwgR2l0CiAgICAgICAgICAgICByZXBvc2l0b3J5IG9mIHRoZQpAQCAtNzksNyArNzksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGNvbW1hbmRzIGFzc3VtZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4pIGhhdmUgYmVlbiBjbG9uZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyBHaXQgYW5kIHRoZSBsb2NhbCByZXBvc2l0b3J5IGlzIG5hbWVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBva3kiLgpAQCAtMTM2LDcgKzEzNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2ZWxvcGVyJ3MgR3VpZGUsIHJlc3BlY3RpdmVseS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnMgY3JlYXRlLWxheWVyPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCB0byBxdWlja2x5IHNldCB1cCBhIGxheWVyLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLWEtZ2VuZXJhbC1sYXllci11c2luZy10aGUtYml0YmFrZS1sYXllcnMtc2NyaXB0Jz5DcmVhdGluZyBhIEdlbmVyYWwgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvdWxpbms+IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW51YWwuCkBAIC0zMDMsNyArMzAzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBjb21tYW5kcyBhc3N1bWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLXJlcG9zaXRvcmllcyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KSBoYXZlIGJlZW4gY2xvbmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgR2l0IGFuZCB0aGUgbG9jYWwgcmVwb3NpdG9yeSBpcyBuYW1lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb2t5Ii4KQEAgLTM2MCw3ICszNjAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldmVsb3BlcidzIEd1aWRlLCByZXNwZWN0aXZlbHkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllcjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgdG8gcXVpY2tseSBzZXQgdXAgYSBsYXllciwgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1hLWdlbmVyYWwtbGF5ZXItdXNpbmctdGhlLWJpdGJha2UtbGF5ZXJzLXNjcmlwdCc+Q3JlYXRpbmcgYSBHZW5lcmFsIExheWVyIFVzaW5nIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnM8L2ZpbGVuYW1lPiBTY3JpcHQ8L3VsaW5rPiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsLgpAQCAtMzg3LDcgKzM4Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgR2l0IHJlcG9zaXRvcmllcyBvZiBzdXBwb3J0ZWQgWW9jdG8gUHJvamVjdAogICAgICAgICAgICAgICAgICAgICAgICAga2VybmVscyBvcmdhbml6ZWQgdW5kZXIgIllvY3RvIExpbnV4IEtlcm5lbCIgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXMgYXQKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaSc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPjwvdWxpbms+LgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTQ4OSw3ICs0ODksOCBAQAogICAgICAgICAgICAgICAgIFNlZSB0aGUKICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctYS1nZW5lcmFsLWxheWVyLXVzaW5nLXRoZS1iaXRiYWtlLWxheWVycy1zY3JpcHQnPkNyZWF0aW5nIGEgR2VuZXJhbCBMYXllciBVc2luZyB0aGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzPC9maWxlbmFtZT4gU2NyaXB0PC91bGluaz4iCiAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yCi0gICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGlzIHNjcmlwdC4KKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoaXMgc2NyaXB0IHRvIHF1aWNrIHNldCB1cCBhCisgICAgICAgICAgICAgICAgbmV3IGxheWVyLgogICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L3BhcmE+CiAKQEAgLTEyMjQsMTggKzEyMjUsNiBAQAogICAgICAgICAgICAgdGhlCiAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nZ2V0dGluZy1yZWFkeS1mb3ItdHJhZGl0aW9uYWwta2VybmVsLWRldmVsb3BtZW50Jz5HZXR0aW5nIFJlYWR5IGZvciBUcmFkaXRpb25hbCBLZXJuZWwgRGV2ZWxvcG1lbnQ8L2xpbms+IgogICAgICAgICAgICAgU2VjdGlvbi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQWx0aG91Z2ggdGhpcyBleGFtcGxlIHVzZXMgR2l0IGFuZCBzaGVsbCBjb21tYW5kcyB0byBnZW5lcmF0ZSB0aGUKLSAgICAgICAgICAgIHBhdGNoLCB5b3UgY291bGQgdXNlIHRoZSA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsPC9maWxlbmFtZT4gc2NyaXB0Ci0gICAgICAgICAgICBmb3VuZCBpbiB0aGUgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+Ci0gICAgICAgICAgICB1bmRlciA8ZmlsZW5hbWU+c2NyaXB0czwvZmlsZW5hbWU+IHRvIGFkZCBhbmQgbWFuYWdlIGtlcm5lbAotICAgICAgICAgICAgcGF0Y2hlcyBhbmQgY29uZmlndXJhdGlvbi4KLSAgICAgICAgICAgIFNlZSB0aGUgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I21hbmFnaW5nLWtlcm5lbC1wYXRjaGVzLWFuZC1jb25maWctaXRlbXMtd2l0aC15b2N0by1rZXJuZWwnPk1hbmFnaW5nIGtlcm5lbCBQYXRjaGVzIGFuZCBDb25maWcgSXRlbXMgd2l0aCB5b2N0by1rZXJuZWw8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQKQotICAgICAgICAgICAgRGV2ZWxvcGVyJ3MgR3VpZGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG8ta2VybmVsPC9maWxlbmFtZT4gc2NyaXB0LgogICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkVkaXQgdGhlIFNvdXJjZSBGaWxlczwvZW1waGFzaXM+CkBAIC0xNDEzLDkgKzE0MDIsOSBAQAogICAgICBTUkNfVVJJX2FwcGVuZCA9ICIgZmlsZTovLzAwMDEtY2FsaWJyYXRlLmMtQWRkZWQtc29tZS1wcmludGstc3RhdGVtZW50cy5wYXRjaCIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICBUaGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDt2YXItRklMRVNFWFRSQVBBVEhTJz48ZmlsZW5hbWU+RklMRVNFWFRSQVBBVEhTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRklMRVNFWFRSQVBBVEhTJz48ZmlsZW5hbWU+RklMRVNFWFRSQVBBVEhTPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDt2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50cyBlbmFibGUgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gZmluZAogICAgICAgICAgICAgICAgICAgICB0aGUgcGF0Y2ggZmlsZS48L3BhcmE+CiAKQEAgLTE2NjcsNyArMTY1Niw3IEBACiAgICAgICAgICAgICAgICAgICAgIGFmdGVyIGFwcGx5aW5nIHRoZSBleGlzdGluZyBkZWZjb25maWcgZmlsZSBjb25maWd1cmF0aW9ucy4KICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGtlcm5lbCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rPSdjaGFuZ2luZy10aGUtY29uZmlndXJhdGlvbic+Q2hhbmdpbmcgdGhlIENvbmZpZ3VyYXRpb248L2xpbms+IgorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjaGFuZ2luZy10aGUtY29uZmlndXJhdGlvbic+Q2hhbmdpbmcgdGhlIENvbmZpZ3VyYXRpb248L2xpbms+IgogICAgICAgICAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KQEAgLTI0MjksNyArMjQxOCw3IEBACiAgICAgICAgICAgICAgICAgbW9kdWxlcy4KICAgICAgICAgICAgICAgICBJZiB5b3VyIG1vZHVsZSA8ZmlsZW5hbWU+TWFrZWZpbGU8L2ZpbGVuYW1lPiB1c2VzIGEgZGlmZmVyZW50CiAgICAgICAgICAgICAgICAgdmFyaWFibGUsIHlvdSBtaWdodCB3YW50IHRvIG92ZXJyaWRlIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1jb21waWxlJz48ZmlsZW5hbWU+ZG9fY29tcGlsZSgpPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1jb21waWxlJz48ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+PC91bGluaz4KICAgICAgICAgICAgICAgICBzdGVwLCBvciBjcmVhdGUgYSBwYXRjaCB0bwogICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+TWFrZWZpbGU8L2ZpbGVuYW1lPiB0byB3b3JrIHdpdGggdGhlIG1vcmUgdHlwaWNhbAogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5LRVJORUxfU1JDPC9maWxlbmFtZT4gb3IKQEAgLTI1MDUsNyArMjQ5NCw3IEBACiAgICAgICAgICAgICAgICAgICAgIHRoZSBHaXQgY29tbWFuZHMuCiAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIHRoZSBicmFuY2ggbmFtZXMgdGhyb3VnaCB0aGUgd2ViIGludGVyZmFjZQogICAgICAgICAgICAgICAgICAgICB0byB0aGUgWW9jdG8gUHJvamVjdCBzb3VyY2UgcmVwb3NpdG9yaWVzIGF0Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0LmNnaSc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+PC91bGluaz4uCiAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgIFRvIHNlZSBhIGZ1bGwgcmFuZ2Ugb2YgdGhlIGNoYW5nZXMsIHVzZSB0aGUKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IHdoYXRjaGFuZ2VkPC9maWxlbmFtZT4gY29tbWFuZCBhbmQgc3BlY2lmeSBhCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29uY2VwdHMtYXBweC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29uY2VwdHMtYXBweC54bWwKaW5kZXggZmJlY2MxMy4uNmQ2NzVhNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbmNlcHRzLWFwcHgueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb25jZXB0cy1hcHB4LnhtbApAQCAtNDksNyArNDksNyBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgWW91IGNhbiBmaW5kIGEgd2ViIGludGVyZmFjZSB0byB0aGUgWW9jdG8gTGludXgga2VybmVscyBpbiB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KICAgICAgICAgICAgIGF0CiAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPjwvdWxpbms+LgogICAgICAgICAgICAgSWYgeW91IGxvb2sgYXQgdGhlIGludGVyZmFjZSwgeW91IHdpbGwgc2VlIHRvIHRoZSBsZWZ0IGEKQEAgLTIzOSw4ICsyMzksOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC1zY20uY29tL2RvY3VtZW50YXRpb24nPjwvdWxpbms+LgogICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIGdldCBhbiBpbnRyb2R1Y3Rpb24gdG8gR2l0IGFzIGl0CiAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWVzIHRvIHRoZSBZb2N0byBQcm9qZWN0IGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2dpdCc+R2l0PC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNnaXQnPkdpdDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMKKyAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBsYXR0ZXIgcmVmZXJlbmNlIHByb3ZpZGVzIGFuIG92ZXJ2aWV3IG9mCiAgICAgICAgICAgICAgICAgICAgICAgICBHaXQgYW5kIHByZXNlbnRzIGEgbWluaW1hbCBzZXQgb2YgR2l0IGNvbW1hbmRzCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGFsbG93cyB5b3UgdG8gYmUgZnVuY3Rpb25hbCB1c2luZyBHaXQuCkBAIC0zODEsNyArMzgyLDcgQEAKICAgICAgICAgICAgICAgICBnZW5lcmljIGtlcm5lbCBqdXN0IGZvciBjb25jZXB0dWFsIHB1cnBvc2VzLgogICAgICAgICAgICAgICAgIEFsc28ga2VlcCBpbiBtaW5kIHRoYXQgdGhpcyBzdHJ1Y3R1cmUgcmVwcmVzZW50cyB0aGUgWW9jdG8KICAgICAgICAgICAgICAgICBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLXJlcG9zaXRvcmllcyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KICAgICAgICAgICAgICAgICB0aGF0IGFyZSBlaXRoZXIgcHVsbGVkIGZyb20gZHVyaW5nIHRoZSBidWlsZCBvciBlc3RhYmxpc2hlZAogICAgICAgICAgICAgICAgIG9uIHRoZSBob3N0IGRldmVsb3BtZW50IHN5c3RlbSBwcmlvciB0byB0aGUgYnVpbGQgYnkgZWl0aGVyCiAgICAgICAgICAgICAgICAgY2xvbmluZyBhIHBhcnRpY3VsYXIga2VybmVsJ3MgR2l0IHJlcG9zaXRvcnkgb3IgYnkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1pbnRyby54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtaW50cm8ueG1sCmluZGV4IGRiYTQ1NDkuLjRlNGZkMjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1pbnRyby54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWludHJvLnhtbApAQCAtMTA4LDcgKzEwOCwxMSBAQAogICAgICAgICByZXZpZXcgYW5kIHVuZGVyc3RhbmQgdGhlIGZvbGxvd2luZyBkb2N1bWVudGF0aW9uOgogICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsnPllvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQ8L3VsaW5rPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JSSUVGX1VSTDsnPllvY3RvIFByb2plY3QgUXVpY2sgQnVpbGQ8L3VsaW5rPgorICAgICAgICAgICAgICAgIGRvY3VtZW50LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsnPllvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbDwvdWxpbms+LgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3VzaW5nLWRldnRvb2wtaW4teW91ci1zZGstd29ya2Zsb3cnPjxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd29ya2Zsb3c8L3VsaW5rPgpAQCAtMTI3LDE4ICsxMzEsNiBAQAogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgRmluYWxseSwgd2hpbGUgdGhpcyBkb2N1bWVudCBmb2N1c2VzIG9uIHRoZSBtYW51YWwgY3JlYXRpb24gb2YKLSAgICAgICAgcmVjaXBlcywgcGF0Y2hlcywgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMsIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSB0b29scyBhcmUgYXZhaWxhYmxlIHRvIGF1dG9tYXRlCi0gICAgICAgIHRoaXMgcHJvY2VzcyB3aXRoIGV4aXN0aW5nIGNvbnRlbnQgYW5kIHdvcmsgd2VsbCB0byBjcmVhdGUgdGhlCi0gICAgICAgIGluaXRpYWwgZnJhbWV3b3JrIGFuZCBib2lsZXJwbGF0ZSBjb2RlLgotICAgICAgICBGb3IgZGV0YWlscyBvbiB0aGVzZSB0b29scywgc2VlIHRoZQotICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjdXNpbmctdGhlLXlvY3RvLXByb2plY3RzLWJzcC10b29scyc+VXNpbmcgdGhlIFlvY3RvIFByb2plY3QncyBCU1AgVG9vbHM8L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MKLSAgICAgICAgR3VpZGUuCi0gICAgPC9wYXJhPgogPC9zZWN0aW9uPgogCiA8c2VjdGlvbiBpZD0na2VybmVsLW1vZGlmaWNhdGlvbi13b3JrZmxvdyc+CkBAIC0xNjUsMTIgKzE1NywxNSBAQAogICAgIDxwYXJhPgogICAgICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCBVcCBZb3VyIEhvc3QgRGV2ZWxvcG1lbnQgU3lzdGVtIHRvIFN1cHBvcnQKLSAgICAgICAgICAgICAgICBEZXZlbG9wbWVudCBVc2luZyB0aGUgWW9jdG8gUHJvamVjdDo8L2VtcGhhc2lzPgorCisKKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IHVwIFlvdXIgSG9zdCBEZXZlbG9wbWVudCBTeXN0ZW0gdG8gU3VwcG9ydAorICAgICAgICAgICAgICAgIERldmVsb3BtZW50IFVzaW5nIHRoZSBZb2N0byBQcm9qZWN0PC9lbXBoYXNpcz46CiAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7I3lwLXJlc291cmNlcyc+U2V0dGluZyBVcCB0byBVc2UgdGhlIFlvY3RvIFByb2plY3Q8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0IGZvciBvcHRpb25zIG9uIGhvdwotICAgICAgICAgICAgICAgIHRvIGdldCBhIGJ1aWxkIGhvc3QgcmVhZHkgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtbWFudWFsLXN0YXJ0Jz5TZXR0aW5nIFVwIHRoZSBEZXZlbG9wbWVudCBIb3N0IHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvcgorICAgICAgICAgICAgICAgIG9wdGlvbnMgb24gaG93IHRvIGdldCBhIGJ1aWxkIGhvc3QgcmVhZHkgdG8gdXNlIHRoZSBZb2N0bworICAgICAgICAgICAgICAgIFByb2plY3QuCiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCBVcCBZb3VyIEhvc3QgRGV2ZWxvcG1lbnQgU3lzdGVtIGZvciBLZXJuZWwgRGV2ZWxvcG1lbnQ6PC9lbXBoYXNpcz4KQEAgLTI0MywxMSArMjM4LDcgQEAKIAogICAgICAgICAgICAgICAgIDxwYXJhPkFkZGl0aW9uYWxseSwgaWYgeW91IGFyZSB3b3JraW5nIGluIGEgQlNQIGxheWVyCiAgICAgICAgICAgICAgICAgYW5kIG5lZWQgdG8gbW9kaWZ5IHRoZSBCU1AncyBrZXJuZWwncyBjb25maWd1cmF0aW9uLAotICAgICAgICAgICAgICAgIHlvdSBjYW4gdXNlIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I21hbmFnaW5nLWtlcm5lbC1wYXRjaGVzLWFuZC1jb25maWctaXRlbXMtd2l0aC15b2N0by1rZXJuZWwnPjxmaWxlbmFtZT55b2N0by1rZXJuZWw8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgc2NyaXB0IGFzIHdlbGwgYXMgPGZpbGVuYW1lPm1lbnVjb25maWc8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbDwvZmlsZW5hbWU+IHNjcmlwdCBsZXRzCi0gICAgICAgICAgICAgICAgeW91IGludGVyYWN0aXZlbHkgc2V0IHVwIGtlcm5lbCBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgICAgICAgICB5b3UgY2FuIHVzZSA8ZmlsZW5hbWU+bWVudWNvbmZpZzwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SZWJ1aWxkIHRoZSBLZXJuZWwgSW1hZ2UgV2l0aCBZb3VyIENoYW5nZXM6PC9lbXBoYXNpcz4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1tYWludC1hcHB4LnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1tYWludC1hcHB4LnhtbAppbmRleCBmNWZkMTgzLi5iODI1YWU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtbWFpbnQtYXBweC54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LW1haW50LWFwcHgueG1sCkBAIC0xNCw3ICsxNCw3IEBACiAgICAgICAgICAgICBjcmVhdGUgWW9jdG8gTGludXgga2VybmVsIHJlcG9zaXRvcmllcy4KICAgICAgICAgICAgIFRoZXNlIGtlcm5lbCByZXBvc2l0b3JpZXMgYXJlIGZvdW5kIHVuZGVyIHRoZSBoZWFkaW5nICJZb2N0byBMaW51eAogICAgICAgICAgICAgS2VybmVsIiBhdAotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpJz4mWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2k8L3VsaW5rPgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz4mWU9DVE9fR0lUX1VSTDs8L3VsaW5rPgogICAgICAgICAgICAgYW5kIGFyZSBzaGlwcGVkIGFzIHBhcnQgb2YgYSBZb2N0byBQcm9qZWN0IHJlbGVhc2UuCiAgICAgICAgICAgICBUaGUgdGVhbSBjcmVhdGVzIHRoZXNlIHJlcG9zaXRvcmllcyBieSBjb21waWxpbmcgYW5kIGV4ZWN1dGluZyB0aGUKICAgICAgICAgICAgIHNldCBvZiBmZWF0dXJlIGRlc2NyaXB0aW9ucyBmb3IgZXZlcnkgQlNQIGFuZCBmZWF0dXJlIGluIHRoZQpAQCAtMTE4LDEzICsxMTgsMTMgQEAKICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgc3RlcHMgZGVzY3JpYmUgd2hhdCBoYXBwZW5zIHdoZW4gdGhlIFlvY3RvIFByb2plY3QKICAgICAgICAgICAgIFRlYW0gY29uc3RydWN0cyB0aGUgWW9jdG8gUHJvamVjdCBrZXJuZWwgc291cmNlIEdpdCByZXBvc2l0b3J5CiAgICAgICAgICAgICAob3IgdHJlZSkgZm91bmQgYXQKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaSc+PC91bGluaz4gZ2l2ZW4gdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPjwvdWxpbms+IGdpdmVuIHRoZQogICAgICAgICAgICAgaW50cm9kdWN0aW9uIG9mIGEgbmV3IHRvcC1sZXZlbCBrZXJuZWwgZmVhdHVyZSBvciBCU1AuCi0gICAgICAgICAgICBUaGVzZSBhcmUgdGhlIGFjdGlvbnMgdGhhdCBlZmZlY3RpdmVseSBwcm92aWRlIHRoZSBNZXRhZGF0YQotICAgICAgICAgICAgYW5kIGNyZWF0ZSB0aGUgdHJlZSB0aGF0IGluY2x1ZGVzIHRoZSBuZXcgZmVhdHVyZSwgcGF0Y2ggb3IgQlNQOgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBhY3Rpb25zIGVmZmVjdGl2ZWx5IHByb3ZpZGUgdGhlIE1ldGFkYXRhCisgICAgICAgICAgICBhbmQgY3JlYXRlIHRoZSB0cmVlIHRoYXQgaW5jbHVkZXMgdGhlIG5ldyBmZWF0dXJlLCBwYXRjaCwgb3IgQlNQOgogICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlBhc3MgRmVhdHVyZSB0byBCdWlsZCBTdWJzeXN0ZW06PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlBhc3MgRmVhdHVyZSB0byB0aGUgT3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBBIHRvcC1sZXZlbCBrZXJuZWwgZmVhdHVyZSBpcyBwYXNzZWQgdG8gdGhlIGtlcm5lbCBidWlsZAogICAgICAgICAgICAgICAgICAgICBzdWJzeXN0ZW0uCiAgICAgICAgICAgICAgICAgICAgIE5vcm1hbGx5LCB0aGlzIGZlYXR1cmUgaXMgYSBCU1AgZm9yIGEgcGFydGljdWxhciBrZXJuZWwKQEAgLTEzOCw4ICsxMzgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgaW4tdHJlZSBrZXJuZWwtY2FjaGUgZGlyZWN0b3JpZXMsIHdoaWNoIGFyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0ZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3lvY3RvLWtlcm5lbC1jYWNoZS90cmVlL2JzcCc+PGZpbGVuYW1lPnlvY3RvLWtlcm5lbC1jYWNoZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5IG9yZ2FuaXplZCB1bmRlciB0aGUgIllvY3RvIExpbnV4IEtlcm5lbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkaW5nIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpJz5Zb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmVhcyBwb2ludGVkIHRvIGJ5IDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4KQEAgLTE0OCw5ICsxNTAsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgIEZvciBhIHR5cGljYWwgYnVpbGQsIHRoZSB0YXJnZXQgb2YgdGhlIHNlYXJjaCBpcyBhCiAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmUgZGVzY3JpcHRpb24gaW4gYW4gPGZpbGVuYW1lPi5zY2M8L2ZpbGVuYW1lPiBmaWxlCi0gICAgICAgICAgICAgICAgICAgIHdob3NlIG5hbWUgZm9sbG93cyB0aGlzIGZvcm1hdDoKKyAgICAgICAgICAgICAgICAgICAgd2hvc2UgbmFtZSBmb2xsb3dzIHRoaXMgZm9ybWF0IChlLmcuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iZWFnbGVib25lLXN0YW5kYXJkLnNjYzwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmVhZ2xlYm9uZS1wcmVlbXB0LXJ0LnNjYzwvZmlsZW5hbWU+KToKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICA8cmVwbGFjZWFibGU+YnNwX25hbWU8L3JlcGxhY2VhYmxlPi08cmVwbGFjZWFibGU+a2VybmVsX3R5cGU8L3JlcGxhY2VhYmxlPi5zY2MKKyAgICAgPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi08cmVwbGFjZWFibGU+a2VybmVsX3R5cGU8L3JlcGxhY2VhYmxlPi5zY2MKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KQEAgLTIxMyw3ICsyMTcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZW5kIG9mIGFuIGV4aXN0aW5nIGJyYW5jaC4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmdWxsIHJlcG9zaXRvcnkgZ2VuZXJhdGlvbiB0aGF0IGlzIGZvdW5kIGluIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgb2ZmaWNpYWwgWW9jdG8gUHJvamVjdCBrZXJuZWwgcmVwb3NpdG9yaWVzIGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2knPmh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0LmNnaTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPmh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZzwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgICBpcyB0aGUgY29tYmluYXRpb24gb2YgYWxsIHN1cHBvcnRlZCBib2FyZHMgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucy4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgpAQCAtMjI3LDcgKzIzMSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZ1bGwga2VybmVsIHRyZWUgdGhhdCB5b3Ugc2VlIG9uCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2knPjwvdWxpbms+IGlzCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPjwvdWxpbms+IGlzCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZWQgdGhyb3VnaCByZXBlYXRpbmcgdGhlIGFib3ZlIHN0ZXBzIGZvciBhbGwKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkIEJTUHMuCiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZW5kIHJlc3VsdCBpcyBhIGJyYW5jaGVkLCBjbGVhbiBoaXN0b3J5IHRyZWUgdGhhdApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi54bWwKaW5kZXggZWMzNmQyNC4uOTg2YzQ0MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYueG1sCkBAIC04NywxNCArODcsOSBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkphbnVhcnkgMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQuMjwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPk1hcmNoIDIwMTg8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNC4yIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjU8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5NYXkgMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi41IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKQEAgLTExNiwyNCArMTExLDM2IEBACiAgICAgICAgICAgICAgICAgICAgICAgIGlzIGZvciB0aGUgJllPQ1RPX0RPQ19WRVJTSU9OOyByZWxlYXNlIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCi0gICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIHVzZSB0aGUgbWFudWFsIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICBGb3IgbWFudWFscyBhc3NvY2lhdGVkIHdpdGggb3RoZXIgcmVsZWFzZXMgb2YgdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QsIGdvIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCBnbyB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgIGFuZCB1c2UgdGhlIGRyb3AtZG93biAiQWN0aXZlIFJlbGVhc2VzIiBidXR0b24KLSAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNob29zZSB0aGUgbWFudWFsIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVzaXJlZAotICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgZnJvbSB0aGF0IHNpdGUuCisgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbHMgZnJvbSB0aGUgc2l0ZSBhcmUgbW9yZSB1cC10by1kYXRlIHRoYW4gbWFudWFscworICAgICAgICAgICAgICAgICAgICAgICBkZXJpdmVkIGZyb20gdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZWQgVEFSIGZpbGVzLgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bwotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBsb2NhdGVkIHRoaXMgbWFudWFsIHRocm91Z2ggYSB3ZWIgc2VhcmNoLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiBvZiB0aGUgbWFudWFsIG1pZ2h0IG5vdCBiZSB0aGUgb25lIHlvdSB3YW50CisgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIHRoZSBzZWFyY2ggbWlnaHQgaGF2ZSByZXR1cm5lZCBhIG1hbnVhbCBtdWNoCisgICAgICAgICAgICAgICAgICAgICAgIG9sZGVyIHRoYW4gdGhlIFlvY3RvIFByb2plY3QgdmVyc2lvbiB3aXRoIHdoaWNoIHlvdQorICAgICAgICAgICAgICAgICAgICAgICBhcmUgd29ya2luZykuCisgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIGFsbCBZb2N0byBQcm9qZWN0IG1ham9yIHJlbGVhc2VzIGJ5CisgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvUmVsZWFzZXMnPlJlbGVhc2VzPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgcGFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgYSB2ZXJzaW9uIG9mIHRoaXMgbWFudWFsIGZvciBhIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UsIHZpc2l0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIHNldCBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIkFDVElWRSBSRUxFQVNFUyBET0NVTUVOVEFUSU9OIiBvciAiRE9DVU1FTlRTIEFSQ0hJVkUiCisgICAgICAgICAgICAgICAgICAgICAgIHB1bGwtZG93biBtZW51cy4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bworICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgIDwvbm90ZT4KICAgICA8L2xlZ2Fsbm90aWNlPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9hbmFseXNpcy1mb3ItcGFja2FnZS1zcGxpdHRpbmcucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9hbmFseXNpcy1mb3ItcGFja2FnZS1zcGxpdHRpbmcucG5nCmluZGV4IDA0ZjI3OTQuLjBjYjAzODYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYW5hbHlzaXMtZm9yLXBhY2thZ2Utc3BsaXR0aW5nLnBuZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2FuYWx5c2lzLWZvci1wYWNrYWdlLXNwbGl0dGluZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9ic3AtZGV2LWZsb3cucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9ic3AtZGV2LWZsb3cucG5nCmluZGV4IDBmODJhMWYuLjJjYTFmZWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvYnNwLWRldi1mbG93LnBuZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2JzcC1kZXYtZmxvdy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9ieXBxcy10aXRsZS5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2J5cHFzLXRpdGxlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTBhNWNlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9ieXBxcy10aXRsZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9jb25jZXB0cy1tYW51YWwtdGl0bGUucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9jb25jZXB0cy1tYW51YWwtdGl0bGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhYzdhNjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2NvbmNlcHRzLW1hbnVhbC10aXRsZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9jb25maWd1cmF0aW9uLWNvbXBpbGUtYXV0b3JlY29uZi5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2NvbmZpZ3VyYXRpb24tY29tcGlsZS1hdXRvcmVjb25mLnBuZwppbmRleCBhMDc0NjRmLi4wNDNkMTk1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2NvbmZpZ3VyYXRpb24tY29tcGlsZS1hdXRvcmVjb25mLnBuZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2NvbmZpZ3VyYXRpb24tY29tcGlsZS1hdXRvcmVjb25mLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbnMucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9jcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW5zLnBuZwppbmRleCBkMzY2NzBhLi5jYmU4MzcxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbnMucG5nCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWlucy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9pbWFnZS1nZW5lcmF0aW9uLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvaW1hZ2UtZ2VuZXJhdGlvbi5wbmcKaW5kZXggNzFhNDhkYy4uYWZmOWZjMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9pbWFnZS1nZW5lcmF0aW9uLnBuZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2ltYWdlLWdlbmVyYXRpb24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvaW1hZ2VzLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvaW1hZ2VzLnBuZwppbmRleCBkOTllYWMxLi4yMGMwMTMwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2ltYWdlcy5wbmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9pbWFnZXMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMva2V5LWRldi1lbGVtZW50cy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tleS1kZXYtZWxlbWVudHMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2YzQ0MDUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL2tleS1kZXYtZWxlbWVudHMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvbGF5ZXItaW5wdXQucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9sYXllci1pbnB1dC5wbmcKaW5kZXggMGE0ZjJlNy4uMjliNTZmOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9sYXllci1pbnB1dC5wbmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9sYXllci1pbnB1dC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9vdmVydmlldy1tYW51YWwtdGl0bGUucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9vdmVydmlldy1tYW51YWwtdGl0bGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxZTkwMTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL292ZXJ2aWV3LW1hbnVhbC10aXRsZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wYWNrYWdlLWZlZWRzLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvcGFja2FnZS1mZWVkcy5wbmcKaW5kZXggMzdjOWMzMi4uNzU5MjgzOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wYWNrYWdlLWZlZWRzLnBuZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3BhY2thZ2UtZmVlZHMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvcGF0Y2hpbmcucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wYXRjaGluZy5wbmcKaW5kZXggOGVjZDAxOC4uODBmYmE3ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wYXRjaGluZy5wbmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wYXRjaGluZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wb2t5LXJlZmVyZW5jZS1kaXN0cmlidXRpb24ucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9wb2t5LXJlZmVyZW5jZS1kaXN0cmlidXRpb24ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiZTg5YWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Bva3ktcmVmZXJlbmNlLWRpc3RyaWJ1dGlvbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstYXV0b3Rvb2xzLWZsb3cucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstYXV0b3Rvb2xzLWZsb3cucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjNjY4NWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Nkay1hdXRvdG9vbHMtZmxvdy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstZGV2dG9vbC1hZGQtZmxvdy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Nkay1kZXZ0b29sLWFkZC1mbG93LnBuZwppbmRleCBjMDllNjBlLi5lN2Q2MTczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Nkay1kZXZ0b29sLWFkZC1mbG93LnBuZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Nkay1kZXZ0b29sLWFkZC1mbG93LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Nkay1kZXZ0b29sLW1vZGlmeS1mbG93LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLWRldnRvb2wtbW9kaWZ5LWZsb3cucG5nCmluZGV4IGNkMDZjMDEuLjE4YmE4YjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLWRldnRvb2wtbW9kaWZ5LWZsb3cucG5nCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLWRldnRvb2wtbW9kaWZ5LWZsb3cucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLWRldnRvb2wtdXBncmFkZS1mbG93LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLWRldnRvb2wtdXBncmFkZS1mbG93LnBuZwppbmRleCA2NTQ3NGRhLi43ZDRmMzk1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Nkay1kZXZ0b29sLXVwZ3JhZGUtZmxvdy5wbmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstZGV2dG9vbC11cGdyYWRlLWZsb3cucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLWdlbmVyYXRpb24ucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstZ2VuZXJhdGlvbi5wbmcKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCBhZGJlMWY0Li45MzlmODM5Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLWdlbmVyYXRpb24ucG5nCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLWdlbmVyYXRpb24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLW1ha2VmaWxlLWZsb3cucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGstbWFrZWZpbGUtZmxvdy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNjYjQxOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLW1ha2VmaWxlLWZsb3cucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc2RrLnBuZwppbmRleCA1YzM2Yjc1Li5hMzc2ODcyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3Nkay5wbmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zZGsucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc291cmNlLWZldGNoaW5nLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc291cmNlLWZldGNoaW5nLnBuZwppbmRleCAyNmFlZmI1Li5iZjVlMTg3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3NvdXJjZS1mZXRjaGluZy5wbmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zb3VyY2UtZmV0Y2hpbmcucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc291cmNlLWlucHV0LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvc291cmNlLWlucHV0LnBuZwppbmRleCBmNzUxNTA1Li42YjZiYTRiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3NvdXJjZS1pbnB1dC5wbmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9zb3VyY2UtaW5wdXQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvdXNlci1jb25maWd1cmF0aW9uLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvdXNlci1jb25maWd1cmF0aW9uLnBuZwpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IGMyOTg0MDEuLjE0MjQ1NDcKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy91c2VyLWNvbmZpZ3VyYXRpb24ucG5nCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL2ZpZ3VyZXMvdXNlci1jb25maWd1cmF0aW9uLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3lvY3RvLWVudmlyb25tZW50LXJlZi5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3lvY3RvLWVudmlyb25tZW50LXJlZi5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1MGM2YzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy95b2N0by1lbnZpcm9ubWVudC1yZWYucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy95cC1kb3dubG9hZC5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3lwLWRvd25sb2FkLnBuZwppbmRleCA1NzcwYmU2Li5iZmQxMmI2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3lwLWRvd25sb2FkLnBuZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL3lwLWRvd25sb2FkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9tZWdhLW1hbnVhbC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9tZWdhLW1hbnVhbC54bWwKaW5kZXggYTk0MWQ3OS4uMmMwOTQzZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvbWVnYS1tYW51YWwueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL21lZ2EtbWFudWFsLnhtbApAQCAtNzEsMTQgKzcxLDkgQEAKICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi40LjE8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5KYW51YXJ5IDIwMTg8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNC4xIFJlbGVhc2UuPC9yZXZyZW1hcms+Ci0gICAgICAgICAgICA8L3JldmlzaW9uPgotICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi40LjI8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5NYXJjaCAyMDE4PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQuMiBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi41PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+TWF5IDIwMTg8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKQEAgLTEwMCwyNCArOTUsMzYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgaXMgZm9yIHRoZSAmWU9DVE9fRE9DX1ZFUlNJT047IHJlbGVhc2Ugb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKLSAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgdXNlIHRoZSBtYW51YWwgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgIEZvciBtYW51YWxzIGFzc29jaWF0ZWQgd2l0aCBvdGhlciByZWxlYXNlcyBvZiB0aGUgWW9jdG8KLSAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCwgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIGdvIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgYW5kIHVzZSB0aGUgZHJvcC1kb3duICJBY3RpdmUgUmVsZWFzZXMiIGJ1dHRvbgotICAgICAgICAgICAgICAgICAgICAgICBhbmQgY2hvb3NlIHRoZSBtYW51YWwgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXNpcmVkCi0gICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBmcm9tIHRoYXQgc2l0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgTWFudWFscyBmcm9tIHRoZSBzaXRlIGFyZSBtb3JlIHVwLXRvLWRhdGUgdGhhbiBtYW51YWxzCisgICAgICAgICAgICAgICAgICAgICAgIGRlcml2ZWQgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlZCBUQVIgZmlsZXMuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcwotICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGxvY2F0ZWQgdGhpcyBtYW51YWwgdGhyb3VnaCBhIHdlYiBzZWFyY2gsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIG9mIHRoZSBtYW51YWwgbWlnaHQgbm90IGJlIHRoZSBvbmUgeW91IHdhbnQKKyAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gdGhlIHNlYXJjaCBtaWdodCBoYXZlIHJldHVybmVkIGEgbWFudWFsIG11Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgb2xkZXIgdGhhbiB0aGUgWW9jdG8gUHJvamVjdCB2ZXJzaW9uIHdpdGggd2hpY2ggeW91CisgICAgICAgICAgICAgICAgICAgICAgIGFyZSB3b3JraW5nKS4KKyAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgYWxsIFlvY3RvIFByb2plY3QgbWFqb3IgcmVsZWFzZXMgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9SZWxlYXNlcyc+UmVsZWFzZXM8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICBwYWdlLgorICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCBhIHZlcnNpb24gb2YgdGhpcyBtYW51YWwgZm9yIGEgZGlmZmVyZW50CisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSwgdmlzaXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgc2V0IGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAiQUNUSVZFIFJFTEVBU0VTIERPQ1VNRU5UQVRJT04iIG9yICJET0NVTUVOVFMgQVJDSElWRSIKKyAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnVzLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcworICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAorICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgPC9ub3RlPgogCkBAIC0xMjUsMTAgKzEzMiwzMiBAQAogCiAgICAgPC9ib29raW5mbz4KIAotPCEtLSBJbmNsdWRlcyB5b2N0by1wcm9qZWN0LXFzIC0tPgorPCEtLSBJbmNsdWRlcyBicmllZi15b2N0b3Byb2plY3RxcyAtLT4KKworICAgIDxwYXJhPgorICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvYnlwcXMtdGl0bGUucG5nIiB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIHNjYWxlZml0PSIxIiAvPgorICAgIDwvcGFyYT4KIAogICAgIDx4aTppbmNsdWRlCi0gICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi95b2N0by1wcm9qZWN0LXFzL3lvY3RvLXByb2plY3QtcXMueG1sIi8+CisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy54bWwiLz4KKworPCEtLSBJbmNsdWRlcyBvdmVydmlldy1tYW51YWwgdGl0bGUgaW1hZ2UgYW5kIHRoZW4gb3ZlcnZpZXctbWFudWFsIGNoYXB0ZXJzIC0tPgorCisgICAgPHBhcmE+CisgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9vdmVydmlldy1tYW51YWwtdGl0bGUucG5nIiB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIHNjYWxlZml0PSIxIiAvPgorICAgIDwvcGFyYT4KKworICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWludHJvLnhtbCIvPgorCisgICAgPHhpOmluY2x1ZGUKKyAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwteXAtaW50cm8ueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZQorICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC54bWwiLz4KKworICAgIDx4aTppbmNsdWRlCisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWNvbmNlcHRzLnhtbCIvPgogCiA8IS0tIEluY2x1ZGVzIGRldi1tYW51YWwgdGl0bGUgaW1hZ2UgYW5kIHRoZW4gZGV2LW1hbnVhbCBjaGFwdGVycyAtLT4KIApAQCAtMTQxLDggKzE3MCw2IEBACiAgICAgPHhpOmluY2x1ZGUKICAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1zdGFydC54bWwiLz4KICAgICA8eGk6aW5jbHVkZQotICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vZGV2LW1hbnVhbC9kZXYtbWFudWFsLW5ld2JpZS54bWwiLz4KLSAgICA8eGk6aW5jbHVkZQogICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vZGV2LW1hbnVhbC9kZXYtbWFudWFsLWNvbW1vbi10YXNrcy54bWwiLz4KICAgICA8eGk6aW5jbHVkZQogICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXFlbXUueG1sIi8+CkBAIC0xNzAsNyArMTk3LDcgQEAKICAgICA8eGk6aW5jbHVkZQogICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtY3VzdG9taXppbmctc3RhbmRhcmQueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUKLSAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LW1hcnMueG1sIi8+CisgICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1uZW9uLnhtbCIvPgogCiA8IS0tIEluY2x1ZGVzIGJzcC1ndWlkZSB0aXRsZSBpbWFnZSBhbmQgdGhlbiBic3AtZ3VpZGUgY2hhcHRlcnMgLS0+CiAKQEAgLTIyMCwxNiArMjQ3LDEwIEBACiAgICAgPC9wYXJhPgogCiAgICAgPHhpOmluY2x1ZGUKLSAgICAgICAgeG1sbnM6eGk9Imh0dHA6Ly93d3cudzMub3JnLzIwMDMvWEluY2x1ZGUiIGhyZWY9Ii4uL3JlZi1tYW51YWwvaW50cm9kdWN0aW9uLnhtbCIvPgorICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vcmVmLW1hbnVhbC9yZWYtc3lzdGVtLXJlcXVpcmVtZW50cy54bWwiLz4KIAogICAgIDx4aTppbmNsdWRlCi0gICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9yZWYtbWFudWFsL3VzaW5ncG9reS54bWwiLz4KLQotICAgIDx4aTppbmNsdWRlCi0gICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9yZWYtbWFudWFsL3JlZi1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC54bWwiLz4KLQotICAgIDx4aTppbmNsdWRlCi0gICAgICAgIHhtbG5zOnhpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAzL1hJbmNsdWRlIiBocmVmPSIuLi9yZWYtbWFudWFsL3RlY2huaWNhbC1kZXRhaWxzLnhtbCIvPgorICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vcmVmLW1hbnVhbC9yZWYtdGVybXMueG1sIi8+CiAKICAgICA8eGk6aW5jbHVkZQogICAgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIgaHJlZj0iLi4vcmVmLW1hbnVhbC9yZWYtcmVsZWFzZS1wcm9jZXNzLnhtbCIvPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL1lQLWZsb3ctZGlhZ3JhbS5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9ZUC1mbG93LWRpYWdyYW0ucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvWVAtZmxvdy1kaWFncmFtLnBuZwpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvWVAtZmxvdy1kaWFncmFtLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9hbmFseXNpcy1mb3ItcGFja2FnZS1zcGxpdHRpbmcucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvYW5hbHlzaXMtZm9yLXBhY2thZ2Utc3BsaXR0aW5nLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2IwMzg2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvYW5hbHlzaXMtZm9yLXBhY2thZ2Utc3BsaXR0aW5nLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9jb25maWd1cmF0aW9uLWNvbXBpbGUtYXV0b3JlY29uZi5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9jb25maWd1cmF0aW9uLWNvbXBpbGUtYXV0b3JlY29uZi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQzZDE5NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL2NvbmZpZ3VyYXRpb24tY29tcGlsZS1hdXRvcmVjb25mLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9jcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW5zLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbnMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiZTgzNzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9jcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW5zLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvZ2l0LXdvcmtmbG93LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL2dpdC13b3JrZmxvdy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9naXQtd29ya2Zsb3cucG5nCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9naXQtd29ya2Zsb3cucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL2ltYWdlLWdlbmVyYXRpb24ucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvaW1hZ2UtZ2VuZXJhdGlvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZmOWZjMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL2ltYWdlLWdlbmVyYXRpb24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL2ltYWdlcy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9pbWFnZXMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwYzAxMzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9pbWFnZXMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9pbmRleC1kb3dubG9hZHMucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvaW5kZXgtZG93bmxvYWRzLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2luZGV4LWRvd25sb2Fkcy5wbmcKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL2luZGV4LWRvd25sb2Fkcy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMva2V5LWRldi1lbGVtZW50cy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9rZXktZGV2LWVsZW1lbnRzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmM0NDA1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMva2V5LWRldi1lbGVtZW50cy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvbGF5ZXItaW5wdXQucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvbGF5ZXItaW5wdXQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5YjU2ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9sYXllci1pbnB1dC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvb3ZlcnZpZXctbWFudWFsLXRpdGxlLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL292ZXJ2aWV3LW1hbnVhbC10aXRsZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFlOTAxMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL292ZXJ2aWV3LW1hbnVhbC10aXRsZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvcGFja2FnZS1mZWVkcy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9wYWNrYWdlLWZlZWRzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTkyODM5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvcGFja2FnZS1mZWVkcy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvcGF0Y2hpbmcucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvcGF0Y2hpbmcucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZmJhN2UKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9wYXRjaGluZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvcG9reS1yZWZlcmVuY2UtZGlzdHJpYnV0aW9uLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL3Bva3ktcmVmZXJlbmNlLWRpc3RyaWJ1dGlvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJlODlhZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL3Bva3ktcmVmZXJlbmNlLWRpc3RyaWJ1dGlvbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvc2RrLWdlbmVyYXRpb24ucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvc2RrLWdlbmVyYXRpb24ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzOWY4MzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy9zZGstZ2VuZXJhdGlvbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvc2RrLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL3Nkay5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM3Njg3MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL3Nkay5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvc291cmNlLWZldGNoaW5nLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL3NvdXJjZS1mZXRjaGluZy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY1ZTE4NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL3NvdXJjZS1mZXRjaGluZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvc291cmNlLWlucHV0LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL3NvdXJjZS1pbnB1dC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmI2YmE0YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL3NvdXJjZS1pbnB1dC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvc291cmNlLXJlcG9zLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL3NvdXJjZS1yZXBvcy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjAzMzAwYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL3NvdXJjZS1yZXBvcy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMvdXNlci1jb25maWd1cmF0aW9uLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL3VzZXItY29uZmlndXJhdGlvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQyNDU0NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9maWd1cmVzL3VzZXItY29uZmlndXJhdGlvbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMveXAtZG93bmxvYWQucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL2ZpZ3VyZXMveXAtZG93bmxvYWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmZDEyYjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvZmlndXJlcy95cC1kb3dubG9hZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1jb25jZXB0cy54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWNvbmNlcHRzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzhhMTkwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1jb25jZXB0cy54bWwKQEAgLTAsMCArMSwzMjMyIEBACis8IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorCis8Y2hhcHRlciBpZD0nIG92ZXJ2aWV3LW1hbnVhbC1jb25jZXB0cyc+Cis8dGl0bGU+WW9jdG8gUHJvamVjdCBDb25jZXB0czwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBjaGFwdGVyIHByb3ZpZGVzIGV4cGxhbmF0aW9ucyBmb3IgWW9jdG8gUHJvamVjdCBjb25jZXB0cyB0aGF0CisgICAgICAgIGdvIGJleW9uZCB0aGUgc3VyZmFjZSBvZiAiaG93LXRvIiBpbmZvcm1hdGlvbiBhbmQgcmVmZXJlbmNlIChvcgorICAgICAgICBsb29rLXVwKSBtYXRlcmlhbC4KKyAgICAgICAgQ29uY2VwdHMgc3VjaCBhcyBjb21wb25lbnRzLCB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPgorICAgICAgICB3b3JrZmxvdywgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWlucywgc2hhcmVkIHN0YXRlIGNhY2hlLCBhbmQgc28KKyAgICAgICAgZm9ydGggYXJlIGV4cGxhaW5lZC4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0neW9jdG8tcHJvamVjdC1jb21wb25lbnRzJz4KKyAgICAgICAgPHRpdGxlPllvY3RvIFByb2plY3QgQ29tcG9uZW50czwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2JpdGJha2UtdGVybSc+Qml0QmFrZTwvdWxpbms+CisgICAgICAgICAgICB0YXNrIGV4ZWN1dG9yIHRvZ2V0aGVyIHdpdGggdmFyaW91cyB0eXBlcyBvZiBjb25maWd1cmF0aW9uIGZpbGVzCisgICAgICAgICAgICBmb3JtIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjb2UtY29yZSc+T3BlbkVtYmVkZGVkLUNvcmU8L3VsaW5rPi4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBvdmVydmlld3MgdGhlc2UgY29tcG9uZW50cyBieSBkZXNjcmliaW5nIHRoZWlyIHVzZSBhbmQKKyAgICAgICAgICAgIGhvdyB0aGV5IGludGVyYWN0LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCaXRCYWtlIGhhbmRsZXMgdGhlIHBhcnNpbmcgYW5kIGV4ZWN1dGlvbiBvZiB0aGUgZGF0YSBmaWxlcy4KKyAgICAgICAgICAgIFRoZSBkYXRhIGl0c2VsZiBpcyBvZiB2YXJpb3VzIHR5cGVzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SZWNpcGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFByb3ZpZGVzIGRldGFpbHMgYWJvdXQgcGFydGljdWxhciBwaWVjZXMgb2Ygc29mdHdhcmUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNsYXNzIERhdGE6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQWJzdHJhY3RzIGNvbW1vbiBidWlsZCBpbmZvcm1hdGlvbiAoZS5nLiBob3cgdG8gYnVpbGQgYQorICAgICAgICAgICAgICAgICAgICBMaW51eCBrZXJuZWwpLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db25maWd1cmF0aW9uIERhdGE6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyBtYWNoaW5lLXNwZWNpZmljIHNldHRpbmdzLCBwb2xpY3kgZGVjaXNpb25zLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgc28gZm9ydGguCisgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gZGF0YSBhY3RzIGFzIHRoZSBnbHVlIHRvIGJpbmQgZXZlcnl0aGluZworICAgICAgICAgICAgICAgICAgICB0b2dldGhlci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQml0QmFrZSBrbm93cyBob3cgdG8gY29tYmluZSBtdWx0aXBsZSBkYXRhIHNvdXJjZXMgdG9nZXRoZXIgYW5kCisgICAgICAgICAgICByZWZlcnMgdG8gZWFjaCBkYXRhIHNvdXJjZSBhcyBhIGxheWVyLgorICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGxheWVycywgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBzb21lIGJyaWVmIGRldGFpbHMgb24gdGhlc2UgY29yZSBjb21wb25lbnRzLgorICAgICAgICAgICAgRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gaG93IHRoZXNlIGNvbXBvbmVudHMgaW50ZXJhY3QgZHVyaW5nCisgICAgICAgICAgICBhIGJ1aWxkLCBzZWUgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nb3BlbmVtYmVkZGVkLWJ1aWxkLXN5c3RlbS1idWlsZC1jb25jZXB0cyc+T3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbSBDb25jZXB0czwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3VzaW5ncG9reS1jb21wb25lbnRzLWJpdGJha2UnPgorICAgICAgICAgICAgPHRpdGxlPkJpdEJha2U8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCaXRCYWtlIGlzIHRoZSB0b29sIGF0IHRoZSBoZWFydCBvZiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbTwvdWxpbms+CisgICAgICAgICAgICAgICAgYW5kIGlzIHJlc3BvbnNpYmxlIGZvciBwYXJzaW5nIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+LAorICAgICAgICAgICAgICAgIGdlbmVyYXRpbmcgYSBsaXN0IG9mIHRhc2tzIGZyb20gaXQsIGFuZCB0aGVuIGV4ZWN1dGluZyB0aG9zZQorICAgICAgICAgICAgICAgIHRhc2tzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gYnJpZWZseSBpbnRyb2R1Y2VzIEJpdEJha2UuCisgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgbW9yZSBpbmZvcm1hdGlvbiBvbiBCaXRCYWtlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNiaXRiYWtlLXVzZXItbWFudWFsJz5CaXRCYWtlIFVzZXIgTWFudWFsPC91bGluaz4uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIHNlZSBhIGxpc3Qgb2YgdGhlIG9wdGlvbnMgQml0QmFrZSBzdXBwb3J0cywgdXNlIGVpdGhlciBvZgorICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgLWgKKyAgICAgJCBiaXRiYWtlIC0taGVscAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIG1vc3QgY29tbW9uIHVzYWdlIGZvciBCaXRCYWtlIGlzCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgPHJlcGxhY2VhYmxlPnBhY2thZ2VuYW1lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICB3aGVyZSA8ZmlsZW5hbWU+cGFja2FnZW5hbWU8L2ZpbGVuYW1lPiBpcyB0aGUgbmFtZSBvZiB0aGUKKyAgICAgICAgICAgICAgICBwYWNrYWdlIHlvdSB3YW50IHRvIGJ1aWxkIChyZWZlcnJlZCB0byBhcyB0aGUgInRhcmdldCIpLgorICAgICAgICAgICAgICAgIFRoZSB0YXJnZXQgb2Z0ZW4gZXF1YXRlcyB0byB0aGUgZmlyc3QgcGFydCBvZiBhIHJlY2lwZSdzCisgICAgICAgICAgICAgICAgZmlsZW5hbWUgKGUuZy4gImZvbyIgZm9yIGEgcmVjaXBlIG5hbWVkCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvb18xLjMuMC1yMC5iYjwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICBTbywgdG8gcHJvY2VzcyB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWF0Y2hib3gtZGVza3RvcF8xLjIuMy5iYjwvZmlsZW5hbWU+IHJlY2lwZSBmaWxlLCB5b3UKKyAgICAgICAgICAgICAgICBtaWdodCB0eXBlIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgbWF0Y2hib3gtZGVza3RvcAorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBTZXZlcmFsIGRpZmZlcmVudCB2ZXJzaW9ucyBvZgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tYXRjaGJveC1kZXNrdG9wPC9maWxlbmFtZT4gbWlnaHQgZXhpc3QuCisgICAgICAgICAgICAgICAgQml0QmFrZSBjaG9vc2VzIHRoZSBvbmUgc2VsZWN0ZWQgYnkgdGhlIGRpc3RyaWJ1dGlvbgorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgWW91IGNhbiBnZXQgbW9yZSBkZXRhaWxzIGFib3V0IGhvdyBCaXRCYWtlIGNob29zZXMgYmV0d2VlbgorICAgICAgICAgICAgICAgIGRpZmZlcmVudCB0YXJnZXQgdmVyc2lvbnMgYW5kIHByb3ZpZGVycyBpbiB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNiYi1iaXRiYWtlLXByZWZlcmVuY2VzJz5QcmVmZXJlbmNlczwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIEJpdEJha2UgVXNlciBNYW51YWwuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJpdEJha2UgYWxzbyB0cmllcyB0byBleGVjdXRlIGFueSBkZXBlbmRlbnQgdGFza3MgZmlyc3QuCisgICAgICAgICAgICAgICAgU28gZm9yIGV4YW1wbGUsIGJlZm9yZSBidWlsZGluZworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tYXRjaGJveC1kZXNrdG9wPC9maWxlbmFtZT4sIEJpdEJha2Ugd291bGQgYnVpbGQgYQorICAgICAgICAgICAgICAgIGNyb3NzIGNvbXBpbGVyIGFuZCA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPiBpZiB0aGV5IGhhZCBub3QKKyAgICAgICAgICAgICAgICBhbHJlYWR5IGJlZW4gYnVpbHQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEEgdXNlZnVsIEJpdEJha2Ugb3B0aW9uIHRvIGNvbnNpZGVyIGlzIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tazwvZmlsZW5hbWU+IG9yIDxmaWxlbmFtZT4tLWNvbnRpbnVlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBvcHRpb24uCisgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaW5zdHJ1Y3RzIEJpdEJha2UgdG8gdHJ5IGFuZCBjb250aW51ZSBwcm9jZXNzaW5nCisgICAgICAgICAgICAgICAgdGhlIGpvYiBhcyBsb25nIGFzIHBvc3NpYmxlIGV2ZW4gYWZ0ZXIgZW5jb3VudGVyaW5nIGFuIGVycm9yLgorICAgICAgICAgICAgICAgIFdoZW4gYW4gZXJyb3Igb2NjdXJzLCB0aGUgdGFyZ2V0IHRoYXQgZmFpbGVkIGFuZCB0aG9zZSB0aGF0CisgICAgICAgICAgICAgICAgZGVwZW5kIG9uIGl0IGNhbm5vdCBiZSByZW1hZGUuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgd2hlbiB5b3UgdXNlIHRoaXMgb3B0aW9uIG90aGVyIGRlcGVuZGVuY2llcyBjYW4KKyAgICAgICAgICAgICAgICBzdGlsbCBiZSBwcm9jZXNzZWQuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nb3ZlcnZpZXctY29tcG9uZW50cy1yZWNpcGVzJz4KKyAgICAgICAgICAgIDx0aXRsZT5SZWNpcGVzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRmlsZXMgdGhhdCBoYXZlIHRoZSA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gc3VmZml4IGFyZQorICAgICAgICAgICAgICAgICJyZWNpcGVzIiBmaWxlcy4KKyAgICAgICAgICAgICAgICBJbiBnZW5lcmFsLCBhIHJlY2lwZSBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBhIHNpbmdsZSBwaWVjZQorICAgICAgICAgICAgICAgIG9mIHNvZnR3YXJlLgorICAgICAgICAgICAgICAgIFRoaXMgaW5mb3JtYXRpb24gaW5jbHVkZXMgdGhlIGxvY2F0aW9uIGZyb20gd2hpY2ggdG8gZG93bmxvYWQKKyAgICAgICAgICAgICAgICB0aGUgdW5hbHRlcmVkIHNvdXJjZSwgYW55IHNvdXJjZSBwYXRjaGVzIHRvIGJlIGFwcGxpZWQgdG8gdGhhdAorICAgICAgICAgICAgICAgIHNvdXJjZSAoaWYgbmVlZGVkKSwgd2hpY2ggc3BlY2lhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8KKyAgICAgICAgICAgICAgICBhcHBseSwgaG93IHRvIGNvbXBpbGUgdGhlIHNvdXJjZSBmaWxlcywgYW5kIGhvdyB0byBwYWNrYWdlIHRoZQorICAgICAgICAgICAgICAgIGNvbXBpbGVkIG91dHB1dC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIHRlcm0gInBhY2thZ2UiIGlzIHNvbWV0aW1lcyB1c2VkIHRvIHJlZmVyIHRvIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgc2luY2UgdGhlIHdvcmQgInBhY2thZ2UiIGlzIHVzZWQgZm9yIHRoZSBwYWNrYWdlZAorICAgICAgICAgICAgICAgIG91dHB1dCBmcm9tIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIChpLmUuCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5pcGs8L2ZpbGVuYW1lPiBvciA8ZmlsZW5hbWU+LmRlYjwvZmlsZW5hbWU+IGZpbGVzKSwKKyAgICAgICAgICAgICAgICB0aGlzIGRvY3VtZW50IGF2b2lkcyB1c2luZyB0aGUgdGVybSAicGFja2FnZSIgd2hlbiByZWZlcnJpbmcKKyAgICAgICAgICAgICAgICB0byByZWNpcGVzLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J292ZXJ2aWV3LWNvbXBvbmVudHMtY2xhc3Nlcyc+CisgICAgICAgICAgICA8dGl0bGU+Q2xhc3NlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIENsYXNzIGZpbGVzICg8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPikgY29udGFpbiBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgIHRoYXQgaXMgdXNlZnVsIHRvIHNoYXJlIGJldHdlZW4gcmVjaXBlcyBmaWxlcy4KKyAgICAgICAgICAgICAgICBBbiBleGFtcGxlIGlzIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLWF1dG90b29scyc+PGZpbGVuYW1lPmF1dG90b29sczwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBjbGFzcywgd2hpY2ggY29udGFpbnMgY29tbW9uIHNldHRpbmdzIGZvciBhbnkgYXBwbGljYXRpb24gdGhhdAorICAgICAgICAgICAgICAgIEF1dG90b29scyB1c2VzLgorICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcyc+Q2xhc3NlczwvdWxpbms+IgorICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBwcm92aWRlcworICAgICAgICAgICAgICAgIGRldGFpbHMgYWJvdXQgY2xhc3NlcyBhbmQgaG93IHRvIHVzZSB0aGVtLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J292ZXJ2aWV3LWNvbXBvbmVudHMtY29uZmlndXJhdGlvbnMnPgorICAgICAgICAgICAgPHRpdGxlPkNvbmZpZ3VyYXRpb25zPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgKDxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+KSBkZWZpbmUKKyAgICAgICAgICAgICAgICB2YXJpb3VzIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRoYXQgZ292ZXJuIHRoZSBPcGVuRW1iZWRkZWQKKyAgICAgICAgICAgICAgICBidWlsZCBwcm9jZXNzLgorICAgICAgICAgICAgICAgIFRoZXNlIGZpbGVzIGZhbGwgaW50byBzZXZlcmFsIGFyZWFzIHRoYXQgZGVmaW5lIG1hY2hpbmUKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIG9wdGlvbnMsCisgICAgICAgICAgICAgICAgY29tcGlsZXIgdHVuaW5nIG9wdGlvbnMsIGdlbmVyYWwgY29tbW9uIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywKKyAgICAgICAgICAgICAgICBhbmQgdXNlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4sIHdoaWNoIGlzIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nb3ZlcnZpZXctbGF5ZXJzJz4KKyAgICAgICAgPHRpdGxlPkxheWVyczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBMYXllcnMgYXJlIHJlcG9zaXRvcmllcyB0aGF0IGNvbnRhaW4gcmVsYXRlZCBtZXRhZGF0YSAoaS5lLgorICAgICAgICAgICAgc2V0cyBvZiBpbnN0cnVjdGlvbnMpIHRoYXQgdGVsbCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBob3cKKyAgICAgICAgICAgIHRvIGJ1aWxkIGEgdGFyZ2V0LgorICAgICAgICAgICAgWW9jdG8gUHJvamVjdCdzCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd0aGUteW9jdG8tcHJvamVjdC1sYXllci1tb2RlbCc+bGF5ZXIgbW9kZWw8L2xpbms+CisgICAgICAgICAgICBmYWNpbGl0YXRlcyBjb2xsYWJvcmF0aW9uLCBzaGFyaW5nLCBjdXN0b21pemF0aW9uLCBhbmQgcmV1c2UKKyAgICAgICAgICAgIHdpdGhpbiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIExheWVycyBsb2dpY2FsbHkgc2VwYXJhdGUgaW5mb3JtYXRpb24gZm9yIHlvdXIgcHJvamVjdC4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSBhIGxheWVyIHRvIGhvbGQgYWxsIHRoZSBjb25maWd1cmF0aW9ucworICAgICAgICAgICAgZm9yIGEgcGFydGljdWxhciBwaWVjZSBvZiBoYXJkd2FyZS4KKyAgICAgICAgICAgIElzb2xhdGluZyBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhbGxvd3MgeW91IHRvIHNoYXJlCisgICAgICAgICAgICBvdGhlciBtZXRhZGF0YSBieSB1c2luZyBhIGRpZmZlcmVudCBsYXllciB3aGVyZSB0aGF0IG1ldGFkYXRhCisgICAgICAgICAgICBtaWdodCBiZSBjb21tb24gYWNyb3NzIHNldmVyYWwgcGllY2VzIG9mIGhhcmR3YXJlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBNYW55IGxheWVycyBleGlzdCB0aGF0IHdvcmsgaW4gdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgIGVudmlyb25tZW50LgorICAgICAgICAgICAgVGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2NhZmZlbGxpLXN0YWdpbmcueW9jdG9wcm9qZWN0Lm9yZy9zb2Z0d2FyZS1vdmVydmlldy9sYXllcnMvJz5Zb2N0byBQcm9qZWN0IEN1cmF0ZWQgTGF5ZXIgSW5kZXg8L3VsaW5rPgorICAgICAgICAgICAgYW5kCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGF5ZXJzLm9wZW5lbWJlZGRlZC5vcmcvbGF5ZXJpbmRleC9icmFuY2gvbWFzdGVyL2xheWVycy8nPk9wZW5FbWJlZGRlZCBMYXllciBJbmRleDwvdWxpbms+CisgICAgICAgICAgICBib3RoIGNvbnRhaW4gbGF5ZXJzIGZyb20gd2hpY2ggeW91IGNhbiB1c2Ugb3IgbGV2ZXJhZ2UuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJ5IGNvbnZlbnRpb24sIGxheWVycyBpbiB0aGUgWW9jdG8gUHJvamVjdCBmb2xsb3cgYSBzcGVjaWZpYyBmb3JtLgorICAgICAgICAgICAgQ29uZm9ybWluZyB0byBhIGtub3duIHN0cnVjdHVyZSBhbGxvd3MgQml0QmFrZSB0byBtYWtlIGFzc3VtcHRpb25zCisgICAgICAgICAgICBkdXJpbmcgYnVpbGRzIG9uIHdoZXJlIHRvIGZpbmQgdHlwZXMgb2YgbWV0YWRhdGEuCisgICAgICAgICAgICBZb3UgY2FuIGZpbmQgcHJvY2VkdXJlcyBhbmQgbGVhcm4gYWJvdXQgdG9vbHMgKGkuZS4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+KSBmb3IgY3JlYXRpbmcgbGF5ZXJzIHN1aXRhYmxlCisgICAgICAgICAgICBmb3IgdGhlIFlvY3RvIFByb2plY3QgaW4gdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZCBDcmVhdGluZyBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9Im9wZW5lbWJlZGRlZC1idWlsZC1zeXN0ZW0tYnVpbGQtY29uY2VwdHMiPgorICAgICAgICA8dGl0bGU+T3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbSBDb25jZXB0czwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gdGFrZXMgYSBtb3JlIGRldGFpbGVkIGxvb2sgaW5zaWRlIHRoZSBidWlsZAorICAgICAgICAgICAgcHJvY2VzcyB1c2VkIGJ5IHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPiwKKyAgICAgICAgICAgIHdoaWNoIGlzIHRoZSBidWlsZCBzeXN0ZW0gc3BlY2lmaWMgdG8gdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICBBdCB0aGUgaGVhcnQgb2YgdGhlIGJ1aWxkIHN5c3RlbSBpcyBCaXRCYWtlLCB0aGUgdGFzayBleGVjdXRvci4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBkaWFncmFtIHJlcHJlc2VudHMgdGhlIGhpZ2gtbGV2ZWwgd29ya2Zsb3cgb2YgYQorICAgICAgICAgICAgYnVpbGQuCisgICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiBleHBhbmRzIG9uIHRoZSBmdW5kYW1lbnRhbCBpbnB1dCwKKyAgICAgICAgICAgIG91dHB1dCwgcHJvY2VzcywgYW5kIG1ldGFkYXRhIGxvZ2ljYWwgYmxvY2tzIHRoYXQgbWFrZSB1cCB0aGUKKyAgICAgICAgICAgIHdvcmtmbG93LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmEgaWQ9J2dlbmVyYWwtd29ya2Zsb3ctZmlndXJlJz4KKyAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9ZUC1mbG93LWRpYWdyYW0ucG5nIiBmb3JtYXQ9IlBORyIgYWxpZ249J2NlbnRlcicgd2lkdGg9IjhpbiIvPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiBnZW5lcmFsLCB0aGUgYnVpbGQncyB3b3JrZmxvdyBjb25zaXN0cyBvZiBzZXZlcmFsIGZ1bmN0aW9uYWwKKyAgICAgICAgICAgIGFyZWFzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Vc2VyIENvbmZpZ3VyYXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEgeW91IGNhbiB1c2UgdG8gY29udHJvbCB0aGUgYnVpbGQgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWV0YWRhdGEgTGF5ZXJzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFZhcmlvdXMgbGF5ZXJzIHRoYXQgcHJvdmlkZSBzb2Z0d2FyZSwgbWFjaGluZSwgYW5kCisgICAgICAgICAgICAgICAgICAgIGRpc3RybyBtZXRhZGF0YS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U291cmNlIEZpbGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFVwc3RyZWFtIHJlbGVhc2VzLCBsb2NhbCBwcm9qZWN0cywgYW5kIFNDTXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIFN5c3RlbTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBQcm9jZXNzZXMgdW5kZXIgdGhlIGNvbnRyb2wgb2YKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIFRoaXMgYmxvY2sgZXhwYW5kcyBvbiBob3cgQml0QmFrZSBmZXRjaGVzIHNvdXJjZSwgYXBwbGllcworICAgICAgICAgICAgICAgICAgICBwYXRjaGVzLCBjb21wbGV0ZXMgY29tcGlsYXRpb24sIGFuYWx5emVzIG91dHB1dCBmb3IgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICBnZW5lcmF0aW9uLCBjcmVhdGVzIGFuZCB0ZXN0cyBwYWNrYWdlcywgZ2VuZXJhdGVzIGltYWdlcywKKyAgICAgICAgICAgICAgICAgICAgYW5kIGdlbmVyYXRlcyBjcm9zcy1kZXZlbG9wbWVudCB0b29scy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UGFja2FnZSBGZWVkczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBEaXJlY3RvcmllcyBjb250YWluaW5nIG91dHB1dCBwYWNrYWdlcyAoUlBNLCBERUIgb3IgSVBLKSwKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggYXJlIHN1YnNlcXVlbnRseSB1c2VkIGluIHRoZSBjb25zdHJ1Y3Rpb24gb2YgYW4KKyAgICAgICAgICAgICAgICAgICAgaW1hZ2Ugb3IgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspLCBwcm9kdWNlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBmZWVkcyBjYW4gYWxzbyBiZSBjb3BpZWQgYW5kIHNoYXJlZCB1c2luZyBhIHdlYgorICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIgb3Igb3RoZXIgbWVhbnMgdG8gZmFjaWxpdGF0ZSBleHRlbmRpbmcgb3IgdXBkYXRpbmcKKyAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgaW1hZ2VzIG9uIGRldmljZXMgYXQgcnVudGltZSBpZiBydW50aW1lIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgbWFuYWdlbWVudCBpcyBlbmFibGVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5JbWFnZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSW1hZ2VzIHByb2R1Y2VkIGJ5IHRoZSB3b3JrZmxvdy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgU0RLOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENyb3NzLWRldmVsb3BtZW50IHRvb2xzIHRoYXQgYXJlIHByb2R1Y2VkIGFsb25nIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgYW4gaW1hZ2Ugb3Igc2VwYXJhdGVseSB3aXRoIEJpdEJha2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0idXNlci1jb25maWd1cmF0aW9uIj4KKyAgICAgICAgICAgIDx0aXRsZT5Vc2VyIENvbmZpZ3VyYXRpb248L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBVc2VyIGNvbmZpZ3VyYXRpb24gaGVscHMgZGVmaW5lIHRoZSBidWlsZC4KKyAgICAgICAgICAgICAgICBUaHJvdWdoIHVzZXIgY29uZmlndXJhdGlvbiwgeW91IGNhbiB0ZWxsIEJpdEJha2UgdGhlCisgICAgICAgICAgICAgICAgdGFyZ2V0IGFyY2hpdGVjdHVyZSBmb3Igd2hpY2ggeW91IGFyZSBidWlsZGluZyB0aGUgaW1hZ2UsCisgICAgICAgICAgICAgICAgd2hlcmUgdG8gc3RvcmUgZG93bmxvYWRlZCBzb3VyY2UsIGFuZCBvdGhlciBidWlsZCBwcm9wZXJ0aWVzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGZpZ3VyZSBzaG93cyBhbiBleHBhbmRlZCByZXByZXNlbnRhdGlvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICAiVXNlciBDb25maWd1cmF0aW9uIiBib3ggb2YgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2VuZXJhbC13b3JrZmxvdy1maWd1cmUnPmdlbmVyYWwgd29ya2Zsb3cgZmlndXJlPC9saW5rPjoKKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3VzZXItY29uZmlndXJhdGlvbi5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI4aW4iIGRlcHRoPSI0LjVpbiIgLz4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQml0QmFrZSBuZWVkcyBzb21lIGJhc2ljIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4gb3JkZXIgdG8KKyAgICAgICAgICAgICAgICBjb21wbGV0ZSBhIGJ1aWxkLgorICAgICAgICAgICAgICAgIFRoZXNlIGZpbGVzIGFyZSA8ZmlsZW5hbWU+Ki5jb25mPC9maWxlbmFtZT4gZmlsZXMuCisgICAgICAgICAgICAgICAgVGhlIG1pbmltYWxseSBuZWNlc3Nhcnkgb25lcyByZXNpZGUgYXMgZXhhbXBsZSBmaWxlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGQvY29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBvZiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgRm9yIHNpbXBsaWNpdHksIHRoaXMgc2VjdGlvbiByZWZlcnMgdG8gdGhlIFNvdXJjZSBEaXJlY3RvcnkgYXMKKyAgICAgICAgICAgICAgICB0aGUgIlBva3kgRGlyZWN0b3J5LiIKKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hlbiB5b3UgY2xvbmUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcG9reSc+UG9reTwvdWxpbms+CisgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkgb3IgeW91IGRvd25sb2FkIGFuZCB1bnBhY2sgYSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgcmVsZWFzZSwgeW91IGNhbiBzZXQgdXAgdGhlIFNvdXJjZSBEaXJlY3RvcnkgdG8gYmUgbmFtZWQKKyAgICAgICAgICAgICAgICBhbnl0aGluZyB5b3Ugd2FudC4KKyAgICAgICAgICAgICAgICBGb3IgdGhpcyBkaXNjdXNzaW9uLCB0aGUgY2xvbmVkIHJlcG9zaXRvcnkgdXNlcyB0aGUgZGVmYXVsdAorICAgICAgICAgICAgICAgIG5hbWUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIFBva3kgcmVwb3NpdG9yeSBpcyBwcmltYXJpbHkgYW4gYWdncmVnYXRpb24gb2YgZXhpc3RpbmcKKyAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzLgorICAgICAgICAgICAgICAgICAgICBJdCBpcyBub3QgYSBjYW5vbmljYWwgdXBzdHJlYW0gc291cmNlLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5tZXRhLXBva3k8L2ZpbGVuYW1lPiBsYXllciBpbnNpZGUgUG9reSBjb250YWlucworICAgICAgICAgICAgICAgIGEgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgdGhhdCBoYXMgZXhhbXBsZQorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMuCisgICAgICAgICAgICAgICAgVGhlc2UgZXhhbXBsZSBmaWxlcyBhcmUgdXNlZCBhcyBhIGJhc2lzIGZvciBjcmVhdGluZyBhY3R1YWwKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGVzIHdoZW4geW91IHNvdXJjZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICB3aGljaCBpcyB0aGUgYnVpbGQgZW52aXJvbm1lbnQgc2NyaXB0LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTb3VyY2luZyB0aGUgYnVpbGQgZW52aXJvbm1lbnQgc2NyaXB0IGNyZWF0ZXMgYQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICBpZiBvbmUgZG9lcyBub3QgYWxyZWFkeSBleGlzdC4KKyAgICAgICAgICAgICAgICBCaXRCYWtlIHVzZXMgdGhlIEJ1aWxkIERpcmVjdG9yeSBmb3IgYWxsIGl0cyB3b3JrIGR1cmluZworICAgICAgICAgICAgICAgIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICBUaGUgQnVpbGQgRGlyZWN0b3J5IGhhcyBhIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgdGhhdCBjb250YWlucyBkZWZhdWx0IHZlcnNpb25zIG9mIHlvdXIKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlcy4KKyAgICAgICAgICAgICAgICBUaGVzZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIGNyZWF0ZWQgb25seSBpZiB2ZXJzaW9ucworICAgICAgICAgICAgICAgIGRvIG5vdCBhbHJlYWR5IGV4aXN0IGluIHRoZSBCdWlsZCBEaXJlY3RvcnkgYXQgdGhlIHRpbWUgeW91CisgICAgICAgICAgICAgICAgc291cmNlIHRoZSBidWlsZCBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJlY2F1c2UgdGhlIFBva3kgcmVwb3NpdG9yeSBpcyBmdW5kYW1lbnRhbGx5IGFuIGFnZ3JlZ2F0aW9uIG9mCisgICAgICAgICAgICAgICAgZXhpc3RpbmcgcmVwb3NpdG9yaWVzLCBzb21lIHVzZXJzIG1pZ2h0IGJlIGZhbWlsaWFyIHdpdGgKKyAgICAgICAgICAgICAgICBydW5uaW5nIHRoZSA8ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPiBzY3JpcHQKKyAgICAgICAgICAgICAgICBpbiB0aGUgY29udGV4dCBvZiBzZXBhcmF0ZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I29lLWNvcmUnPk9wZW5FbWJlZGRlZC1Db3JlPC91bGluaz4KKyAgICAgICAgICAgICAgICBhbmQgQml0QmFrZSByZXBvc2l0b3JpZXMgcmF0aGVyIHRoYW4gYSBzaW5nbGUgUG9reSByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgIFRoaXMgZGlzY3Vzc2lvbiBhc3N1bWVzIHRoZSBzY3JpcHQgaXMgZXhlY3V0ZWQgZnJvbQorICAgICAgICAgICAgICAgIHdpdGhpbiBhIGNsb25lZCBvciB1bnBhY2tlZCB2ZXJzaW9uIG9mIFBva3kuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB3aGVyZSB0aGUgc2NyaXB0IGlzIHNvdXJjZWQsIGRpZmZlcmVudAorICAgICAgICAgICAgICAgIHN1Yi1zY3JpcHRzIGFyZSBjYWxsZWQgdG8gc2V0IHVwIHRoZSBCdWlsZCBEaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAoWW9jdG8gb3IgT3BlbkVtYmVkZGVkKS4KKyAgICAgICAgICAgICAgICBTcGVjaWZpY2FsbHksIHRoZSBzY3JpcHQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0cy9vZS1zZXR1cC1idWlsZGRpcjwvZmlsZW5hbWU+IGluc2lkZSB0aGUKKyAgICAgICAgICAgICAgICBwb2t5IGRpcmVjdG9yeSBzZXRzIHVwIHRoZSBCdWlsZCBEaXJlY3RvcnkgYW5kIHNlZWRzIHRoZQorICAgICAgICAgICAgICAgIGRpcmVjdG9yeSAoaWYgbmVjZXNzYXJ5KSB3aXRoIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXBwcm9wcmlhdGUKKyAgICAgICAgICAgICAgICBmb3IgdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+c2NyaXB0cy9vZS1zZXR1cC1idWlsZGRpcjwvZmlsZW5hbWU+IHNjcmlwdAorICAgICAgICAgICAgICAgICAgICB1c2VzIHRoZSA8ZmlsZW5hbWU+JFRFTVBMQVRFQ09ORjwvZmlsZW5hbWU+IHZhcmlhYmxlIHRvCisgICAgICAgICAgICAgICAgICAgIGRldGVybWluZSB3aGljaCBzYW1wbGUgY29uZmlndXJhdGlvbiBmaWxlcyB0byBsb2NhdGUuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHByb3ZpZGVzIG1hbnkKKyAgICAgICAgICAgICAgICBiYXNpYyB2YXJpYWJsZXMgdGhhdCBkZWZpbmUgYSBidWlsZCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGEgbGlzdCBvZiBhIGZldy4KKyAgICAgICAgICAgICAgICBUbyBzZWUgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbnMgaW4gYQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBjcmVhdGVkIGJ5IHRoZSBidWlsZAorICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNjcmlwdCwgc2VlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZSc+PGZpbGVuYW1lPmxvY2FsLmNvbmYuc2FtcGxlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGluIHRoZSA8ZmlsZW5hbWU+bWV0YS1wb2t5PC9maWxlbmFtZT4gbGF5ZXI6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlRhcmdldCBNYWNoaW5lIFNlbGVjdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Eb3dubG9hZCBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRExfRElSJz48ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNoYXJlZCBTdGF0ZSBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgT3V0cHV0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EaXN0cmlidXRpb24gUG9saWN5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURJU1RSTyc+PGZpbGVuYW1lPkRJU1RSTzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QYWNrYWdpbmcgRm9ybWF0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfQ0xBU1NFUyc+PGZpbGVuYW1lPlBBQ0tBR0VfQ0xBU1NFUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TREsgVGFyZ2V0IEFyY2hpdGVjdHVyZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtNQUNISU5FJz48ZmlsZW5hbWU+U0RLTUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FeHRyYSBJbWFnZSBQYWNrYWdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1FWFRSQV9JTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPkVYVFJBX0lNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbnMgc2V0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBjYW4gYWxzbyBiZSBzZXQKKyAgICAgICAgICAgICAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT5jb25mL3NpdGUuY29uZjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9hdXRvLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGVzLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSB0ZWxscyBCaXRCYWtlIHdoYXQKKyAgICAgICAgICAgICAgICBsYXllcnMgeW91IHdhbnQgY29uc2lkZXJlZCBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBsYXllcnMgbGlzdGVkIGluIHRoaXMgZmlsZSBpbmNsdWRlIGxheWVycworICAgICAgICAgICAgICAgIG1pbmltYWxseSBuZWVkZWQgYnkgdGhlIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCB5b3UgbXVzdCBtYW51YWxseSBhZGQgYW55IGN1c3RvbSBsYXllcnMgeW91IGhhdmUKKyAgICAgICAgICAgICAgICBjcmVhdGVkLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBtb3JlIGluZm9ybWF0aW9uIG9uIHdvcmtpbmcgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2VuYWJsaW5nLXlvdXItbGF5ZXInPkVuYWJsaW5nIFlvdXIgTGF5ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZpbGVzIDxmaWxlbmFtZT5zaXRlLmNvbmY8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0by5jb25mPC9maWxlbmFtZT4gYXJlIG5vdCBjcmVhdGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgIGVudmlyb25tZW50IGluaXRpYWxpemF0aW9uIHNjcmlwdC4KKyAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0aGUgPGZpbGVuYW1lPnNpdGUuY29uZjwvZmlsZW5hbWU+IGZpbGUsIHlvdQorICAgICAgICAgICAgICAgIG5lZWQgdG8gY3JlYXRlIHRoYXQgeW91cnNlbGYuCisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5hdXRvLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGlzIHR5cGljYWxseSBjcmVhdGVkIGJ5CisgICAgICAgICAgICAgICAgYW4gYXV0b2J1aWxkZXI6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5zaXRlLmNvbmY8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT5jb25mL3NpdGUuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUgdG8gY29uZmlndXJlIG11bHRpcGxlCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBkaXJlY3Rvcmllcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBoYWQgc2V2ZXJhbCBidWlsZCBlbnZpcm9ubWVudHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGV5IHNoYXJlZCBzb21lIGNvbW1vbiBmZWF0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2V0IHRoZXNlIGRlZmF1bHQgYnVpbGQgcHJvcGVydGllcyBoZXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgQSBnb29kIGV4YW1wbGUgaXMgcGVyaGFwcyB0aGUgcGFja2FnaW5nIGZvcm1hdCB0byB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRV9DTEFTU0VTJz48ZmlsZW5hbWU+UEFDS0FHRV9DTEFTU0VTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5PbmUgdXNlZnVsIHNjZW5hcmlvIGZvciB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL3NpdGUuY29uZjwvZmlsZW5hbWU+IGZpbGUgaXMgdG8gZXh0ZW5kCisgICAgICAgICAgICAgICAgICAgICAgICB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJQQVRIJz48ZmlsZW5hbWU+QkJQQVRIPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gaW5jbHVkZSB0aGUgcGF0aCB0byBhCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9zaXRlLmNvbmY8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZW4sIHdoZW4gQml0QmFrZSBsb29rcyBmb3IgTWV0YWRhdGEgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiwgaXQgZmluZHMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9zaXRlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGFuZCBhcHBsaWVzCisgICAgICAgICAgICAgICAgICAgICAgICB5b3VyIGNvbW1vbiBjb25maWd1cmF0aW9ucyBmb3VuZCBpbiB0aGUgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIG92ZXJyaWRlIGNvbmZpZ3VyYXRpb25zIGluIGEgcGFydGljdWxhciBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LCBhbHRlciB0aGUgc2ltaWxhciBjb25maWd1cmF0aW9ucyB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgYnVpbGQgZGlyZWN0b3J5J3MKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+YXV0by5jb25mPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmaWxlIGlzIHVzdWFsbHkgY3JlYXRlZCBhbmQgd3JpdHRlbiB0byBieQorICAgICAgICAgICAgICAgICAgICAgICAgYW4gYXV0b2J1aWxkZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc2V0dGluZ3MgcHV0IGludG8gdGhlIGZpbGUgYXJlIHR5cGljYWxseSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNhbWUgYXMgeW91IHdvdWxkIGZpbmQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9zaXRlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGVkaXQgYWxsIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gZnVydGhlciBkZWZpbmUKKyAgICAgICAgICAgICAgICBhbnkgcGFydGljdWxhciBidWlsZCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICBUaGlzIHByb2Nlc3MgaXMgcmVwcmVzZW50ZWQgYnkgdGhlICJVc2VyIENvbmZpZ3VyYXRpb24gRWRpdHMiCisgICAgICAgICAgICAgICAgYm94IGluIHRoZSBmaWd1cmUuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFdoZW4geW91IGxhdW5jaCB5b3VyIGJ1aWxkIHdpdGggdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBjb21tYW5kLCBCaXRCYWtlIHNvcnRzIG91dCB0aGUgY29uZmlndXJhdGlvbnMgdG8gdWx0aW1hdGVseQorICAgICAgICAgICAgICAgIGRlZmluZSB5b3VyIGJ1aWxkIGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPgorICAgICAgICAgICAgICAgIHJlYWRzIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIGluIGEgc3BlY2lmaWMgb3JkZXI6CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNpdGUuY29uZjwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+YXV0by5jb25mPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgQW5kLCB0aGUgYnVpbGQgc3lzdGVtIGFwcGxpZXMgdGhlIG5vcm1hbCBhc3NpZ25tZW50IHN0YXRlbWVudAorICAgICAgICAgICAgICAgIHJ1bGVzIGFzIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNiaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhJz5TeW50YXggYW5kIE9wZXJhdG9yczwvdWxpbms+IgorICAgICAgICAgICAgICAgIGNoYXB0ZXIgb2YgdGhlIEJpdEJha2UgVXNlciBNYW51YWwuCisgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGUgZmlsZXMgYXJlIHBhcnNlZCBpbiBhIHNwZWNpZmljIG9yZGVyLCB2YXJpYWJsZQorICAgICAgICAgICAgICAgIGFzc2lnbm1lbnRzIGZvciB0aGUgc2FtZSB2YXJpYWJsZSBjb3VsZCBiZSBhZmZlY3RlZC4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgdGhlIDxmaWxlbmFtZT5hdXRvLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGFuZAorICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IHNldAorICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT52YXJpYWJsZTE8L3JlcGxhY2VhYmxlPiB0byBkaWZmZXJlbnQgdmFsdWVzLAorICAgICAgICAgICAgICAgIGJlY2F1c2UgdGhlIGJ1aWxkIHN5c3RlbSBwYXJzZXMgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGFmdGVyIDxmaWxlbmFtZT5hdXRvLmNvbmY8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+dmFyaWFibGUxPC9yZXBsYWNlYWJsZT4gaXMgYXNzaWduZWQgdGhlIHZhbHVlIGZyb20KKyAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9Im1ldGFkYXRhLW1hY2hpbmUtY29uZmlndXJhdGlvbi1hbmQtcG9saWN5LWNvbmZpZ3VyYXRpb24iPgorICAgICAgICAgICAgPHRpdGxlPk1ldGFkYXRhLCBNYWNoaW5lIENvbmZpZ3VyYXRpb24sIGFuZCBQb2xpY3kgQ29uZmlndXJhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBzZWN0aW9uIGRlc2NyaWJlZCB0aGUgdXNlciBjb25maWd1cmF0aW9ucyB0aGF0CisgICAgICAgICAgICAgICAgZGVmaW5lIEJpdEJha2UncyBnbG9iYWwgYmVoYXZpb3IuCisgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHRha2VzIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGxheWVycyB0aGUgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgdXNlcyB0byBmdXJ0aGVyIGNvbnRyb2wgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgIFRoZXNlIGxheWVycyBwcm92aWRlIE1ldGFkYXRhIGZvciB0aGUgc29mdHdhcmUsIG1hY2hpbmUsIGFuZAorICAgICAgICAgICAgICAgIHBvbGljaWVzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJbiBnZW5lcmFsLCB0aHJlZSB0eXBlcyBvZiBsYXllciBpbnB1dCBleGlzdHMuCisgICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgdGhlbSBiZWxvdyB0aGUgIlVzZXIgQ29uZmlndXJhdGlvbiIgYm94IGluIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dlbmVyYWwtd29ya2Zsb3ctZmlndXJlJz5nZW5lcmFsIHdvcmtmbG93IGZpZ3VyZTwvbGluaz46CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ldGFkYXRhICg8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gKyBQYXRjaGVzKTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgU29mdHdhcmUgbGF5ZXJzIGNvbnRhaW5pbmcgdXNlci1zdXBwbGllZCByZWNpcGUgZmlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaGVzLCBhbmQgYXBwZW5kIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgQSBnb29kIGV4YW1wbGUgb2YgYSBzb2Z0d2FyZSBsYXllciBtaWdodCBiZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZ2l0aHViLmNvbS9tZXRhLXF0NS9tZXRhLXF0NSc+PGZpbGVuYW1lPm1ldGEtcXQ1PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9sYXllcnMub3BlbmVtYmVkZGVkLm9yZy9sYXllcmluZGV4L2JyYW5jaC9tYXN0ZXIvbGF5ZXJzLyc+T3BlbkVtYmVkZGVkIExheWVyIEluZGV4PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGxheWVyIGlzIGZvciB2ZXJzaW9uIDUuMCBvZiB0aGUgcG9wdWxhcgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnF0LmlvL0Fib3V0X1F0Jz5RdDwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBjcm9zcy1wbGF0Zm9ybSBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCBmcmFtZXdvcmsgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICBkZXNrdG9wLCBlbWJlZGRlZCBhbmQgbW9iaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWNoaW5lIEJTUCBDb25maWd1cmF0aW9uOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgbGF5ZXJzIChpLmUuICJCU1AgTGF5ZXIiCisgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgZm9sbG93aW5nIGZpZ3VyZSkgcHJvdmlkaW5nIG1hY2hpbmUtc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0eXBlIG9mIGluZm9ybWF0aW9uIGlzIHNwZWNpZmljIHRvIGEgcGFydGljdWxhcgorICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEEgZ29vZCBleGFtcGxlIG9mIGEgQlNQIGxheWVyIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdncy1yZWZlcmVuY2UtZGlzdHJpYnV0aW9uLXBva3knPlBva3kgUmVmZXJlbmNlIERpc3RyaWJ1dGlvbjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlL21ldGEteW9jdG8tYnNwJz48ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UG9saWN5IENvbmZpZ3VyYXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIERpc3RyaWJ1dGlvbiBMYXllcnMgKGkuZS4gIkRpc3RybyBMYXllciIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgZmlndXJlKSBwcm92aWRpbmcgdG9wLWxldmVsIG9yIGdlbmVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljaWVzIGZvciB0aGUgaW1hZ2VzIG9yIFNES3MgYmVpbmcgYnVpbHQgZm9yIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIgZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGluIHRoZSBQb2t5IFJlZmVyZW5jZSBEaXN0cmlidXRpb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBkaXN0cm8gbGF5ZXIgaXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS9wb2t5L3RyZWUvbWV0YS1wb2t5Jz48ZmlsZW5hbWU+bWV0YS1wb2t5PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBXaXRoaW4gdGhlIGRpc3RybyBsYXllciBpcyBhCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9kaXN0cm88L2ZpbGVuYW1lPiBkaXJlY3RvcnkgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgZGlzdHJvIGNvbmZpZ3VyYXRpb24gZmlsZXMgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS5jb25mJz48ZmlsZW5hbWU+cG9reS5jb25mPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBjb250YWluIG1hbnkgcG9saWN5IGNvbmZpZ3VyYXRpb25zIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFBva3kgZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZmlndXJlIHNob3dzIGFuIGV4cGFuZGVkIHJlcHJlc2VudGF0aW9uIG9mCisgICAgICAgICAgICAgICAgdGhlc2UgdGhyZWUgbGF5ZXJzIGZyb20gdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2VuZXJhbC13b3JrZmxvdy1maWd1cmUnPmdlbmVyYWwgd29ya2Zsb3cgZmlndXJlPC9saW5rPjoKKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2xheWVyLWlucHV0LnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjhpbiIgZGVwdGg9IjhpbiIgLz4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgYWxsIGxheWVycyBoYXZlIGEgc2ltaWxhciBzdHJ1Y3R1cmUuCisgICAgICAgICAgICAgICAgVGhleSBhbGwgY29udGFpbiBhIGxpY2Vuc2luZyBmaWxlCisgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPkNPUFlJTkcuTUlUPC9maWxlbmFtZT4pIGlmIHRoZSBsYXllciBpcyB0byBiZQorICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGVkLCBhIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlIGFzIGdvb2QKKyAgICAgICAgICAgICAgICBwcmFjdGljZSBhbmQgZXNwZWNpYWxseSBpZiB0aGUgbGF5ZXIgaXMgdG8gYmUgZGlzdHJpYnV0ZWQsIGEKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGRpcmVjdG9yeSwgYW5kIHJlY2lwZSBkaXJlY3Rvcmllcy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGxlYXJuIGFib3V0IHRoZSBnZW5lcmFsIHN0cnVjdHVyZSBmb3IgbGF5ZXJzIHVzZWQgd2l0aAorICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGluIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy15b3VyLW93bi1sYXllcic+Q3JlYXRpbmcgWW91ciBPd24gTGF5ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICBGb3IgYSBnZW5lcmFsIGRpc2N1c3Npb24gb24gbGF5ZXJzIGFuZCB0aGUgbWFueSBsYXllcnMgZnJvbQorICAgICAgICAgICAgICAgIHdoaWNoIHlvdSBjYW4gZHJhdywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdvdmVydmlldy1sYXllcnMnPkxheWVyczwvbGluaz4iIGFuZAorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd0aGUteW9jdG8tcHJvamVjdC1sYXllci1tb2RlbCc+VGhlIFlvY3RvIFByb2plY3QgTGF5ZXIgTW9kZWw8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb25zIGJvdGggZWFybGllciBpbiB0aGlzIG1hbnVhbC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgSWYgeW91IGV4cGxvcmVkIHRoZSBwcmV2aW91cyBsaW5rcywgeW91IGRpc2NvdmVyZWQgc29tZQorICAgICAgICAgICAgICAgIGFyZWFzIHdoZXJlIG1hbnkgbGF5ZXJzIHRoYXQgd29yayB3aXRoIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgZXhpc3QuCisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyI+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+CisgICAgICAgICAgICAgICAgYWxzbyBzaG93cyBsYXllcnMgY2F0ZWdvcml6ZWQgdW5kZXIgIllvY3RvIE1ldGFkYXRhIExheWVycy4iCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIExheWVycyBleGlzdCBpbiB0aGUgWW9jdG8gUHJvamVjdCBTb3VyY2UgUmVwb3NpdG9yaWVzIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgY2Fubm90IGJlIGZvdW5kIGluIHRoZSBPcGVuRW1iZWRkZWQgTGF5ZXIgSW5kZXguCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIGxheWVycyBhcmUgZWl0aGVyIGRlcHJlY2F0ZWQgb3IgZXhwZXJpbWVudGFsCisgICAgICAgICAgICAgICAgICAgIGluIG5hdHVyZS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEJpdEJha2UgdXNlcyB0aGUgPGZpbGVuYW1lPmNvbmYvYmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUsCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgcGFydCBvZiB0aGUgdXNlciBjb25maWd1cmF0aW9uLCB0byBmaW5kIHdoYXQgbGF5ZXJzIGl0CisgICAgICAgICAgICAgICAgc2hvdWxkIGJlIHVzaW5nIGFzIHBhcnQgb2YgdGhlIGJ1aWxkLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0iZGlzdHJvLWxheWVyIj4KKyAgICAgICAgICAgICAgICA8dGl0bGU+RGlzdHJvIExheWVyPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGlzdHJpYnV0aW9uIGxheWVyIHByb3ZpZGVzIHBvbGljeSBjb25maWd1cmF0aW9ucyBmb3IKKyAgICAgICAgICAgICAgICAgICAgeW91ciBkaXN0cmlidXRpb24uCisgICAgICAgICAgICAgICAgICAgIEJlc3QgcHJhY3RpY2VzIGRpY3RhdGUgdGhhdCB5b3UgaXNvbGF0ZSB0aGVzZSB0eXBlcyBvZgorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucyBpbnRvIHRoZWlyIG93biBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MgeW91IHByb3ZpZGUgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvZGlzdHJvLzxyZXBsYWNlYWJsZT5kaXN0cm88L3JlcGxhY2VhYmxlPi5jb25mPC9maWxlbmFtZT4gb3ZlcnJpZGUKKyAgICAgICAgICAgICAgICAgICAgc2ltaWxhciBzZXR0aW5ncyB0aGF0IEJpdEJha2UgZmluZHMgaW4geW91cgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUgQnVpbGQKKyAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgcHJvdmlkZXMgc29tZSBleHBsYW5hdGlvbiBhbmQgcmVmZXJlbmNlcworICAgICAgICAgICAgICAgICAgICBmb3Igd2hhdCB5b3UgdHlwaWNhbGx5IGZpbmQgaW4gdGhlIGRpc3RyaWJ1dGlvbiBsYXllcjoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Y2xhc3Nlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzIGZpbGVzICg8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPikgaG9sZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbiBmdW5jdGlvbmFsaXR5IHRoYXQgY2FuIGJlIHNoYXJlZCBhbW9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMgaW4gdGhlIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdXIgcmVjaXBlcyBpbmhlcml0IGEgY2xhc3MsIHRoZXkgdGFrZSBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncyBhbmQgZnVuY3Rpb25zIGZvciB0aGF0IGNsYXNzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gcmVhZCBtb3JlIGFib3V0IGNsYXNzIGZpbGVzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcyc+Q2xhc3NlczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXB0ZXIgb2YgdGhlIFlvY3RvIFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPmNvbmY6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGFyZWEgaG9sZHMgY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIgKDxmaWxlbmFtZT5jb25mL2xheWVyLmNvbmY8L2ZpbGVuYW1lPiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRpc3RyaWJ1dGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Y29uZi9kaXN0cm8vPHJlcGxhY2VhYmxlPmRpc3RybzwvcmVwbGFjZWFibGU+LmNvbmY8L2ZpbGVuYW1lPiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGFueSBkaXN0cmlidXRpb24td2lkZSBpbmNsdWRlIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5yZWNpcGVzLSo6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNpcGVzIGFuZCBhcHBlbmQgZmlsZXMgdGhhdCBhZmZlY3QgY29tbW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eSBhY3Jvc3MgdGhlIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGFyZWEgY291bGQgaW5jbHVkZSByZWNpcGVzIGFuZCBhcHBlbmQgZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhZGQgZGlzdHJpYnV0aW9uLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gc2NyaXB0cywgY3VzdG9tIGltYWdlIHJlY2lwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNvIGZvcnRoLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4YW1wbGVzIG9mIDxmaWxlbmFtZT5yZWNpcGVzLSo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIGFyZSA8ZmlsZW5hbWU+cmVjaXBlcy1jb3JlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPnJlY2lwZXMtZXh0cmE8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIaWVyYXJjaHkgYW5kIGNvbnRlbnRzIHdpdGhpbiBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMtKjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBjYW4gdmFyeS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmFsbHksIHRoZXNlIGRpcmVjdG9yaWVzIGNvbnRhaW4gcmVjaXBlIGZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4qLmJiPC9maWxlbmFtZT4pLCByZWNpcGUgYXBwZW5kIGZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4qLmJiYXBwZW5kPC9maWxlbmFtZT4pLCBkaXJlY3RvcmllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgYXJlIGRpc3Ryby1zcGVjaWZpYyBmb3IgY29uZmlndXJhdGlvbiBmaWxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc28gZm9ydGguCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9ImJzcC1sYXllciI+CisgICAgICAgICAgICAgICAgPHRpdGxlPkJTUCBMYXllcjwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIEJTUCBMYXllciBwcm92aWRlcyBtYWNoaW5lIGNvbmZpZ3VyYXRpb25zIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IHNwZWNpZmljIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICBFdmVyeXRoaW5nIGluIHRoaXMgbGF5ZXIgaXMgc3BlY2lmaWMgdG8gdGhlIG1hY2hpbmUgZm9yCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIHlvdSBhcmUgYnVpbGRpbmcgdGhlIGltYWdlIG9yIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgIEEgY29tbW9uIHN0cnVjdHVyZSBvciBmb3JtIGlzIGRlZmluZWQgZm9yIEJTUCBsYXllcnMuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gbGVhcm4gbW9yZSBhYm91dCB0aGlzIHN0cnVjdHVyZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsnPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgZm9yIGEgQlNQIGxheWVyIHRvIGJlIGNvbnNpZGVyZWQgY29tcGxpYW50CisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LCBpdCBtdXN0IG1lZXQgc29tZSBzdHJ1Y3R1cmFsCisgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlbWVudHMuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIEJTUCBMYXllcidzIGNvbmZpZ3VyYXRpb24gZGlyZWN0b3J5IGNvbnRhaW5zCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIHRoZSBtYWNoaW5lCisgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Y29uZi9tYWNoaW5lLzxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT4uY29uZjwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICBhbmQsIG9mIGNvdXJzZSwgdGhlIGxheWVyCisgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Y29uZi9sYXllci5jb25mPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoZSBsYXllciBpcyBkZWRpY2F0ZWQgdG8gc3BlY2lmaWMgcmVjaXBlcworICAgICAgICAgICAgICAgICAgICBieSBmdW5jdGlvbjogPGZpbGVuYW1lPnJlY2lwZXMtYnNwPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLWNvcmU8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMtZ3JhcGhpY3M8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMta2VybmVsPC9maWxlbmFtZT4sIGFuZCBzbyBmb3J0aC4KKyAgICAgICAgICAgICAgICAgICAgTWV0YWRhdGEgY2FuIGV4aXN0IGZvciBtdWx0aXBsZSBmb3JtZmFjdG9ycywgZ3JhcGhpY3MKKyAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCBzeXN0ZW1zLCBhbmQgc28gZm9ydGguCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgV2hpbGUgdGhlIGZpZ3VyZSBzaG93cyBzZXZlcmFsCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy0qPC9maWxlbmFtZT4gZGlyZWN0b3JpZXMsIG5vdCBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZXNlIGRpcmVjdG9yaWVzIGFwcGVhciBpbiBhbGwgQlNQIGxheWVycy4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9InNvZnR3YXJlLWxheWVyIj4KKyAgICAgICAgICAgICAgICA8dGl0bGU+U29mdHdhcmUgTGF5ZXI8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBzb2Z0d2FyZSBsYXllciBwcm92aWRlcyB0aGUgTWV0YWRhdGEgZm9yIGFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgc29mdHdhcmUgcGFja2FnZXMgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBUaGlzIGxheWVyIGRvZXMgbm90IGluY2x1ZGUgTWV0YWRhdGEgdGhhdCBpcyBzcGVjaWZpYyB0bworICAgICAgICAgICAgICAgICAgICB0aGUgZGlzdHJpYnV0aW9uIG9yIHRoZSBtYWNoaW5lLCB3aGljaCBhcmUgZm91bmQgaW4gdGhlaXIKKyAgICAgICAgICAgICAgICAgICAgcmVzcGVjdGl2ZSBsYXllcnMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgbGF5ZXIgY29udGFpbnMgYW55IHJlY2lwZXMsIGFwcGVuZCBmaWxlcywgYW5kCisgICAgICAgICAgICAgICAgICAgIHBhdGNoZXMsIHRoYXQgeW91ciBwcm9qZWN0IG5lZWRzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSJzb3VyY2VzLWRldi1lbnZpcm9ubWVudCI+CisgICAgICAgICAgICA8dGl0bGU+U291cmNlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEluIG9yZGVyIGZvciB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBjcmVhdGUgYW4KKyAgICAgICAgICAgICAgICBpbWFnZSBvciBhbnkgdGFyZ2V0LCBpdCBtdXN0IGJlIGFibGUgdG8gYWNjZXNzIHNvdXJjZSBmaWxlcy4KKyAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnZW5lcmFsLXdvcmtmbG93LWZpZ3VyZSc+Z2VuZXJhbCB3b3JrZmxvdyBmaWd1cmU8L2xpbms+CisgICAgICAgICAgICAgICAgcmVwcmVzZW50cyBzb3VyY2UgZmlsZXMgdXNpbmcgdGhlICJVcHN0cmVhbSBQcm9qZWN0IFJlbGVhc2VzIiwKKyAgICAgICAgICAgICAgICAiTG9jYWwgUHJvamVjdHMiLCBhbmQgIlNDTXMgKG9wdGlvbmFsKSIgYm94ZXMuCisgICAgICAgICAgICAgICAgVGhlIGZpZ3VyZSByZXByZXNlbnRzIG1pcnJvcnMsIHdoaWNoIGFsc28gcGxheSBhIHJvbGUgaW4KKyAgICAgICAgICAgICAgICBsb2NhdGluZyBzb3VyY2UgZmlsZXMsIHdpdGggdGhlICJTb3VyY2UgTWF0ZXJpYWxzIiBib3guCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBtZXRob2QgYnkgd2hpY2ggc291cmNlIGZpbGVzIGFyZSB1bHRpbWF0ZWx5IG9yZ2FuaXplZCBpcworICAgICAgICAgICAgICAgIGEgZnVuY3Rpb24gb2YgdGhlIHByb2plY3QuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGZvciByZWxlYXNlZCBzb2Z0d2FyZSwgcHJvamVjdHMgdGVuZCB0byB1c2UKKyAgICAgICAgICAgICAgICB0YXJiYWxscyBvciBvdGhlciBhcmNoaXZlZCBmaWxlcyB0aGF0IGNhbiBjYXB0dXJlIHRoZQorICAgICAgICAgICAgICAgIHN0YXRlIG9mIGEgcmVsZWFzZSBndWFyYW50ZWVpbmcgdGhhdCBpdCBpcyBzdGF0aWNhbGx5CisgICAgICAgICAgICAgICAgcmVwcmVzZW50ZWQuCisgICAgICAgICAgICAgICAgT24gdGhlIG90aGVyIGhhbmQsIGZvciBhIHByb2plY3QgdGhhdCBpcyBtb3JlIGR5bmFtaWMgb3IKKyAgICAgICAgICAgICAgICBleHBlcmltZW50YWwgaW4gbmF0dXJlLCBhIHByb2plY3QgbWlnaHQga2VlcCBzb3VyY2UgZmlsZXMgaW4gYQorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgY29udHJvbGxlZCBieSBhIFNvdXJjZSBDb250cm9sIE1hbmFnZXIgKFNDTSkgc3VjaCBhcworICAgICAgICAgICAgICAgIEdpdC4KKyAgICAgICAgICAgICAgICBQdWxsaW5nIHNvdXJjZSBmcm9tIGEgcmVwb3NpdG9yeSBhbGxvd3MgeW91IHRvIGNvbnRyb2wKKyAgICAgICAgICAgICAgICB0aGUgcG9pbnQgaW4gdGhlIHJlcG9zaXRvcnkgKHRoZSByZXZpc2lvbikgZnJvbSB3aGljaCB5b3UKKyAgICAgICAgICAgICAgICB3YW50IHRvIGJ1aWxkIHNvZnR3YXJlLgorICAgICAgICAgICAgICAgIEZpbmFsbHksIGEgY29tYmluYXRpb24gb2YgdGhlIHR3byBtaWdodCBleGlzdCwgd2hpY2ggd291bGQKKyAgICAgICAgICAgICAgICBnaXZlIHRoZSBjb25zdW1lciBhIGNob2ljZSB3aGVuIGRlY2lkaW5nIHdoZXJlIHRvIGdldAorICAgICAgICAgICAgICAgIHNvdXJjZSBmaWxlcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQml0QmFrZSB1c2VzIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBwb2ludCB0byBzb3VyY2UgZmlsZXMgcmVnYXJkbGVzcyBvZiB0aGVpciBsb2NhdGlvbi4KKyAgICAgICAgICAgICAgICBFYWNoIHJlY2lwZSBtdXN0IGhhdmUgYSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgdGhhdCBwb2ludHMgdG8gdGhlIHNvdXJjZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQW5vdGhlciBhcmVhIHRoYXQgcGxheXMgYSBzaWduaWZpY2FudCByb2xlIGluIHdoZXJlIHNvdXJjZQorICAgICAgICAgICAgICAgIGZpbGVzIGNvbWUgZnJvbSBpcyBwb2ludGVkIHRvIGJ5IHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ETF9ESVInPjxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgVGhpcyBhcmVhIGlzIGEgY2FjaGUgdGhhdCBjYW4gaG9sZCBwcmV2aW91c2x5IGRvd25sb2FkZWQKKyAgICAgICAgICAgICAgICBzb3VyY2UuCisgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIGluc3RydWN0IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGNyZWF0ZQorICAgICAgICAgICAgICAgIHRhcmJhbGxzIGZyb20gR2l0IHJlcG9zaXRvcmllcywgd2hpY2ggaXMgbm90IHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgYmVoYXZpb3IsIGFuZCBzdG9yZSB0aGVtIGluIHRoZSA8ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTJz48ZmlsZW5hbWU+QkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBKdWRpY2lvdXMgdXNlIG9mIGEgPGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBjYW4KKyAgICAgICAgICAgICAgICBzYXZlIHRoZSBidWlsZCBzeXN0ZW0gYSB0cmlwIGFjcm9zcyB0aGUgSW50ZXJuZXQgd2hlbiBsb29raW5nCisgICAgICAgICAgICAgICAgZm9yIGZpbGVzLgorICAgICAgICAgICAgICAgIEEgZ29vZCBtZXRob2QgZm9yIHVzaW5nIGEgZG93bmxvYWQgZGlyZWN0b3J5IGlzIHRvIGhhdmUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT4gcG9pbnQgdG8gYW4gYXJlYSBvdXRzaWRlIG9mIHlvdXIKKyAgICAgICAgICAgICAgICBCdWlsZCBEaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgRG9pbmcgc28gYWxsb3dzIHlvdSB0byBzYWZlbHkgZGVsZXRlIHRoZSBCdWlsZCBEaXJlY3RvcnkKKyAgICAgICAgICAgICAgICBpZiBuZWVkZWQgd2l0aG91dCBmZWFyIG9mIHJlbW92aW5nIGFueSBkb3dubG9hZGVkIHNvdXJjZSBmaWxlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiBwcm92aWRlcyBhIGRlZXBlciBsb29rIGludG8gdGhlCisgICAgICAgICAgICAgICAgc291cmNlIGZpbGVzIGFuZCB0aGUgbWlycm9ycy4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGEgbW9yZSBkZXRhaWxlZCBsb29rIGF0IHRoZSBzb3VyY2UgZmlsZSBhcmVhIG9mIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dlbmVyYWwtd29ya2Zsb3ctZmlndXJlJz5nZW5lcmFsIHdvcmtmbG93IGZpZ3VyZTwvbGluaz46CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9zb3VyY2UtaW5wdXQucG5nIiB3aWR0aD0iNmluIiBkZXB0aD0iNmluIiBhbGlnbj0iY2VudGVyIiAvPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ndXBzdHJlYW0tcHJvamVjdC1yZWxlYXNlcyc+CisgICAgICAgICAgICAgICAgPHRpdGxlPlVwc3RyZWFtIFByb2plY3QgUmVsZWFzZXM8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFVwc3RyZWFtIHByb2plY3QgcmVsZWFzZXMgZXhpc3QgYW55d2hlcmUgaW4gdGhlIGZvcm0gb2YgYW4KKyAgICAgICAgICAgICAgICAgICAgYXJjaGl2ZWQgZmlsZSAoZS5nLiB0YXJiYWxsIG9yIHppcCBmaWxlKS4KKyAgICAgICAgICAgICAgICAgICAgVGhlc2UgZmlsZXMgY29ycmVzcG9uZCB0byBpbmRpdmlkdWFsIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZmlndXJlIHVzZXMgc3BlY2lmaWMgcmVsZWFzZXMgZWFjaCBmb3IKKyAgICAgICAgICAgICAgICAgICAgQnVzeUJveCwgUXQsIGFuZCBEYnVzLgorICAgICAgICAgICAgICAgICAgICBBbiBhcmNoaXZlIGZpbGUgY2FuIGJlIGZvciBhbnkgcmVsZWFzZWQgcHJvZHVjdCB0aGF0IGNhbiBiZQorICAgICAgICAgICAgICAgICAgICBidWlsdCB1c2luZyBhIHJlY2lwZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdsb2NhbC1wcm9qZWN0cyc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkxvY2FsIFByb2plY3RzPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBMb2NhbCBwcm9qZWN0cyBhcmUgY3VzdG9tIGJpdHMgb2Ygc29mdHdhcmUgdGhlIHVzZXIKKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIGJpdHMgcmVzaWRlIHNvbWV3aGVyZSBsb2NhbCB0byBhIHByb2plY3QgLSBwZXJoYXBzCisgICAgICAgICAgICAgICAgICAgIGEgZGlyZWN0b3J5IGludG8gd2hpY2ggdGhlIHVzZXIgY2hlY2tzIGluIGl0ZW1zIChlLmcuCisgICAgICAgICAgICAgICAgICAgIGEgbG9jYWwgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYSBkZXZlbG9wbWVudCBzb3VyY2UgdHJlZQorICAgICAgICAgICAgICAgICAgICB1c2VkIGJ5IHRoZSBncm91cCkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBjYW5vbmljYWwgbWV0aG9kIHRocm91Z2ggd2hpY2ggdG8gaW5jbHVkZSBhIGxvY2FsCisgICAgICAgICAgICAgICAgICAgIHByb2plY3QgaXMgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1leHRlcm5hbHNyYyc+PGZpbGVuYW1lPmV4dGVybmFsc3JjPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcyB0byBpbmNsdWRlIHRoYXQgbG9jYWwgcHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgWW91IHVzZSBlaXRoZXIgdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gb3IgYQorICAgICAgICAgICAgICAgICAgICByZWNpcGUncyBhcHBlbmQgZmlsZSB0byBvdmVycmlkZSBvciBzZXQgdGhlCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZSB0byBwb2ludCB0byB0aGUgbG9jYWwgZGlyZWN0b3J5IG9uIHlvdXIgZGlzayB0byBwdWxsCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSB3aG9sZSBzb3VyY2UgdHJlZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdzY21zJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+U291cmNlIENvbnRyb2wgTWFuYWdlcnMgKE9wdGlvbmFsKTwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQW5vdGhlciBwbGFjZSB0aGUgYnVpbGQgc3lzdGVtIGNhbiBnZXQgc291cmNlIGZpbGVzIGZyb20gaXMKKyAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCBhbiBTQ00gc3VjaCBhcyBHaXQgb3IgU3VidmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCBhIHJlcG9zaXRvcnkgaXMgY2xvbmVkIG9yIGNoZWNrZWQgb3V0LgorICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWZldGNoJz48ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgaW5zaWRlIEJpdEJha2UgdXNlcworICAgICAgICAgICAgICAgICAgICB0aGUgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgdGhlIGFyZ3VtZW50J3MgcHJlZml4IHRvIGRldGVybWluZSB0aGUgY29ycmVjdAorICAgICAgICAgICAgICAgICAgICBmZXRjaGVyIG1vZHVsZS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGhhdmUgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIGdlbmVyYXRlIHRhcmJhbGxzIGZvciBHaXQgcmVwb3NpdG9yaWVzIGFuZCBwbGFjZQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlbSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ETF9ESVInPjxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnksIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMnPjxmaWxlbmFtZT5CQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaGVuIGZldGNoaW5nIGEgcmVwb3NpdG9yeSwgQml0QmFrZSB1c2VzIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDUkVWJz48ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBkZXRlcm1pbmUgdGhlIHNwZWNpZmljIHJldmlzaW9uIGZyb20gd2hpY2ggdG8KKyAgICAgICAgICAgICAgICAgICAgYnVpbGQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nc291cmNlLW1pcnJvcnMnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Tb3VyY2UgTWlycm9yKHMpPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUd28ga2luZHMgb2YgbWlycm9ycyBleGlzdDogcHJlLW1pcnJvcnMgYW5kIHJlZ3VsYXIKKyAgICAgICAgICAgICAgICAgICAgbWlycm9ycy4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUkVNSVJST1JTJz48ZmlsZW5hbWU+UFJFTUlSUk9SUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NSVJST1JTJz48ZmlsZW5hbWU+TUlSUk9SUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzIHBvaW50IHRvIHRoZXNlLCByZXNwZWN0aXZlbHkuCisgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgY2hlY2tzIHByZS1taXJyb3JzIGJlZm9yZSBsb29raW5nIHVwc3RyZWFtIGZvciBhbnkKKyAgICAgICAgICAgICAgICAgICAgc291cmNlIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICBQcmUtbWlycm9ycyBhcmUgYXBwcm9wcmlhdGUgd2hlbiB5b3UgaGF2ZSBhIHNoYXJlZAorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgdGhhdCBpcyBub3QgYSBkaXJlY3RvcnkgZGVmaW5lZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURMX0RJUic+PGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIEEgUHJlLW1pcnJvciB0eXBpY2FsbHkgcG9pbnRzIHRvIGEgc2hhcmVkIGRpcmVjdG9yeSB0aGF0IGlzCisgICAgICAgICAgICAgICAgICAgIGxvY2FsIHRvIHlvdXIgb3JnYW5pemF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBSZWd1bGFyIG1pcnJvcnMgY2FuIGJlIGFueSBzaXRlIGFjcm9zcyB0aGUgSW50ZXJuZXQKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBpcyB1c2VkIGFzIGFuIGFsdGVybmF0aXZlIGxvY2F0aW9uIGZvciBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgY29kZSBzaG91bGQgdGhlIHByaW1hcnkgc2l0ZSBub3QgYmUgZnVuY3Rpb25pbmcgZm9yCisgICAgICAgICAgICAgICAgICAgIHNvbWUgcmVhc29uIG9yIGFub3RoZXIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9InBhY2thZ2UtZmVlZHMtZGV2LWVudmlyb25tZW50Ij4KKyAgICAgICAgICAgIDx0aXRsZT5QYWNrYWdlIEZlZWRzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgV2hlbiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBnZW5lcmF0ZXMgYW4gaW1hZ2Ugb3IgYW4KKyAgICAgICAgICAgICAgICBTREssIGl0IGdldHMgdGhlIHBhY2thZ2VzIGZyb20gYSBwYWNrYWdlIGZlZWQgYXJlYSBsb2NhdGVkCisgICAgICAgICAgICAgICAgaW4gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnZW5lcmFsLXdvcmtmbG93LWZpZ3VyZSc+Z2VuZXJhbCB3b3JrZmxvdyBmaWd1cmU8L2xpbms+CisgICAgICAgICAgICAgICAgc2hvd3MgdGhpcyBwYWNrYWdlIGZlZWRzIGFyZWEgaW4gdGhlIHVwcGVyLXJpZ2h0IGNvcm5lci4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGxvb2tzIGEgbGl0dGxlIGNsb3NlciBpbnRvIHRoZSBwYWNrYWdlIGZlZWRzCisgICAgICAgICAgICAgICAgYXJlYSB1c2VkIGJ5IHRoZSBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgSGVyZSBpcyBhIG1vcmUgZGV0YWlsZWQgbG9vayBhdCB0aGUgYXJlYToKKyAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvcGFja2FnZS1mZWVkcy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI3aW4iIGRlcHRoPSI2aW4iIC8+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFBhY2thZ2UgZmVlZHMgYXJlIGFuIGludGVybWVkaWFyeSBzdGVwIGluIHRoZSBidWlsZCBwcm9jZXNzLgorICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHByb3ZpZGVzIGNsYXNzZXMgdG8gZ2VuZXJhdGUKKyAgICAgICAgICAgICAgICBkaWZmZXJlbnQgcGFja2FnZSB0eXBlcywgYW5kIHlvdSBzcGVjaWZ5IHdoaWNoIGNsYXNzZXMgdG8KKyAgICAgICAgICAgICAgICBlbmFibGUgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRV9DTEFTU0VTJz48ZmlsZW5hbWU+UEFDS0FHRV9DTEFTU0VTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIEJlZm9yZSBwbGFjaW5nIHRoZSBwYWNrYWdlcyBpbnRvIHBhY2thZ2UgZmVlZHMsCisgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIHByb2Nlc3MgdmFsaWRhdGVzIHRoZW0gd2l0aCBnZW5lcmF0ZWQgb3V0cHV0IHF1YWxpdHkKKyAgICAgICAgICAgICAgICBhc3N1cmFuY2UgY2hlY2tzIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtaW5zYW5lJz48ZmlsZW5hbWU+aW5zYW5lPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGNsYXNzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgcGFja2FnZSBmZWVkIGFyZWEgcmVzaWRlcyBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIFRoZSBkaXJlY3RvcnkgdGhlIGJ1aWxkIHN5c3RlbSB1c2VzIHRvIHRlbXBvcmFyaWx5IHN0b3JlCisgICAgICAgICAgICAgICAgcGFja2FnZXMgaXMgZGV0ZXJtaW5lZCBieSBhIGNvbWJpbmF0aW9uIG9mIHZhcmlhYmxlcyBhbmQgdGhlCisgICAgICAgICAgICAgICAgcGFydGljdWxhciBwYWNrYWdlIG1hbmFnZXIgaW4gdXNlLgorICAgICAgICAgICAgICAgIFNlZSB0aGUgIlBhY2thZ2UgRmVlZHMiIGJveCBpbiB0aGUgaWxsdXN0cmF0aW9uIGFuZCBub3RlIHRoZQorICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIHRvIHRoZSByaWdodCBvZiB0aGF0IGFyZWEuCisgICAgICAgICAgICAgICAgSW4gcGFydGljdWxhciwgdGhlIGZvbGxvd2luZyBkZWZpbmVzIHdoZXJlIHBhY2thZ2UgZmlsZXMgYXJlCisgICAgICAgICAgICAgICAga2VwdDoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItREVQTE9ZX0RJUic+PGZpbGVuYW1lPkRFUExPWV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgRGVmaW5lZCBhcyA8ZmlsZW5hbWU+dG1wL2RlcGxveTwvZmlsZW5hbWU+IGluIHRoZSBCdWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ERVBMT1lfRElSXyo8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB0aGUgcGFja2FnZSBtYW5hZ2VyIHVzZWQsIHRoZSBwYWNrYWdlIHR5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1Yi1mb2xkZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBHaXZlbiBSUE0sIElQSywgb3IgREVCIHBhY2thZ2luZyBhbmQgdGFyYmFsbCBjcmVhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFUExPWV9ESVJfUlBNJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9SUE08L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFUExPWV9ESVJfSVBLJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9JUEs8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFUExPWV9ESVJfREVCJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9ERUI8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERVBMT1lfRElSX1RBUic+PGZpbGVuYW1lPkRFUExPWV9ESVJfVEFSPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBhcmUgdXNlZCwgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0FSQ0gnPjxmaWxlbmFtZT5QQUNLQUdFX0FSQ0g8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgc3ViLWZvbGRlcnMuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgcGFja2FnZXMgY291bGQgZXhpc3QgZm9yIHRoZSBpNTg2IG9yCisgICAgICAgICAgICAgICAgICAgICAgICBxZW11eDg2IGFyY2hpdGVjdHVyZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQml0QmFrZSB1c2VzIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX2RlYic+PGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfKjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB0YXNrcyB0byBnZW5lcmF0ZSBwYWNrYWdlcyBhbmQgcGxhY2UgdGhlbSBpbnRvIHRoZSBwYWNrYWdlCisgICAgICAgICAgICAgICAgaG9sZGluZyBhcmVhIChlLmcuIDxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlX2lwazwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZm9yIElQSyBwYWNrYWdlcykuCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZV93cml0ZV9kZWInPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlX2RlYjwvZmlsZW5hbWU+PC91bGluaz4iLAorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZV93cml0ZV9pcGsnPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlX2lwazwvZmlsZW5hbWU+PC91bGluaz4iLAorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZV93cml0ZV9ycG0nPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlX3JwbTwvZmlsZW5hbWU+PC91bGluaz4iLAorICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZV93cml0ZV90YXInPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlX3RhcjwvZmlsZW5hbWU+PC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbnMgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbAorICAgICAgICAgICAgICAgIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGNvbnNpZGVyIGEgc2NlbmFyaW8gd2hlcmUgYW4gSVBLIHBhY2thZ2luZworICAgICAgICAgICAgICAgIG1hbmFnZXIgaXMgYmVpbmcgdXNlZCBhbmQgcGFja2FnZSBhcmNoaXRlY3R1cmUgc3VwcG9ydCBmb3IKKyAgICAgICAgICAgICAgICBib3RoIGk1ODYgYW5kIHFlbXV4ODYgZXhpc3QuCisgICAgICAgICAgICAgICAgUGFja2FnZXMgZm9yIHRoZSBpNTg2IGFyY2hpdGVjdHVyZSBhcmUgcGxhY2VkIGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkL3RtcC9kZXBsb3kvaXBrL2k1ODY8L2ZpbGVuYW1lPiwgd2hpbGUgcGFja2FnZXMKKyAgICAgICAgICAgICAgICBmb3IgdGhlIHFlbXV4ODYgYXJjaGl0ZWN0dXJlIGFyZSBwbGFjZWQgaW4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGQvdG1wL2RlcGxveS9pcGsvcWVtdXg4NjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2JpdGJha2UtZGV2LWVudmlyb25tZW50Jz4KKyAgICAgICAgICAgIDx0aXRsZT5CaXRCYWtlPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcworICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2JpdGJha2UtdGVybSc+Qml0QmFrZTwvdWxpbms+CisgICAgICAgICAgICAgICAgdG8gcHJvZHVjZSBpbWFnZXMgYW5kIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdHMgKFNES3MpLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIGZyb20gdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2VuZXJhbC13b3JrZmxvdy1maWd1cmUnPmdlbmVyYWwgd29ya2Zsb3cgZmlndXJlPC9saW5rPiwKKyAgICAgICAgICAgICAgICB0aGUgQml0QmFrZSBhcmVhIGNvbnNpc3RzIG9mIHNldmVyYWwgZnVuY3Rpb25hbCBhcmVhcy4KKyAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gdGFrZXMgYSBjbG9zZXIgbG9vayBhdCBlYWNoIG9mIHRob3NlIGFyZWFzLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBTZXBhcmF0ZSBkb2N1bWVudGF0aW9uIGV4aXN0cyBmb3IgdGhlIEJpdEJha2UgdG9vbC4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2JpdGJha2UtdXNlci1tYW51YWwnPkJpdEJha2UgVXNlciBNYW51YWw8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBmb3IgcmVmZXJlbmNlIG1hdGVyaWFsIG9uIEJpdEJha2UuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nc291cmNlLWZldGNoaW5nLWRldi1lbnZpcm9ubWVudCc+CisgICAgICAgICAgICAgICAgPHRpdGxlPlNvdXJjZSBGZXRjaGluZzwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpcnN0IHN0YWdlcyBvZiBidWlsZGluZyBhIHJlY2lwZSBhcmUgdG8gZmV0Y2ggYW5kCisgICAgICAgICAgICAgICAgICAgIHVucGFjayB0aGUgc291cmNlIGNvZGU6CisgICAgICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9zb3VyY2UtZmV0Y2hpbmcucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNi41aW4iIGRlcHRoPSI1aW4iIC8+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtZmV0Y2gnPjxmaWxlbmFtZT5kb19mZXRjaDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy11bnBhY2snPjxmaWxlbmFtZT5kb191bnBhY2s8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2tzIGZldGNoIHRoZSBzb3VyY2UgZmlsZXMgYW5kIHVucGFjayB0aGVtIGludG8gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV2ZXJ5IGxvY2FsIGZpbGUgKGUuZy4gPGZpbGVuYW1lPmZpbGU6Ly88L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgaXMgcGFydCBvZiBhIHJlY2lwZSdzCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRha2VzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrc3VtIG9mIHRoZSBmaWxlIGZvciB0aGUgcmVjaXBlIGFuZCBpbnNlcnRzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tzdW0gaW50byB0aGUgc2lnbmF0dXJlIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19mZXRjaDwvZmlsZW5hbWU+IHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICBJZiBhbnkgbG9jYWwgZmlsZSBoYXMgYmVlbiBtb2RpZmllZCwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPiB0YXNrIGFuZCBhbGwgdGFza3MgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kIG9uIGl0IGFyZSByZS1leGVjdXRlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCBldmVyeXRoaW5nIGlzIGFjY29tcGxpc2hlZCBpbiB0aGUgQnVpbGQKKyAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5LCB3aGljaCBoYXMgYSBkZWZpbmVkIHN0cnVjdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGFkZGl0aW9uYWwgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvbiB0aGUgQnVpbGQgRGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzdHJ1Y3R1cmUtY29yZS1idWlsZCc+PGZpbGVuYW1lPmJ1aWxkLzwvZmlsZW5hbWU+PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRWFjaCByZWNpcGUgaGFzIGFuIGFyZWEgaW4gdGhlIEJ1aWxkIERpcmVjdG9yeSB3aGVyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgdW5wYWNrZWQgc291cmNlIGNvZGUgcmVzaWRlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgcG9pbnRzIHRvIHRoaXMgYXJlYSBmb3IgYSByZWNpcGUncyB1bnBhY2tlZCBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgY29kZS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhhdCBkaXJlY3RvcnkgZm9yIGFueSBnaXZlbiByZWNpcGUgaXMgZGVmaW5lZAorICAgICAgICAgICAgICAgICAgICBmcm9tIHNldmVyYWwgZGlmZmVyZW50IHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHByZWNlZGluZyBmaWd1cmUgYW5kIHRoZSBmb2xsb3dpbmcgbGlzdCBkZXNjcmliZQorICAgICAgICAgICAgICAgICAgICB0aGUgQnVpbGQgRGlyZWN0b3J5J3MgaGllcmFyY2h5OgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBiYXNlIGRpcmVjdG9yeSB3aGVyZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHBlcmZvcm1zIGFsbCBpdHMgd29yayBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGJhc2UgZGlyZWN0b3J5IGlzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50bXA8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfQVJDSCc+PGZpbGVuYW1lPlBBQ0tBR0VfQVJDSDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgYnVpbHQgcGFja2FnZSBvciBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhlIGV2ZW50dWFsIGRlc3RpbmF0aW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2Ugb3IgcGFja2FnZXMgKGkuZS4gbWFjaGluZSBhcmNoaXRlY3R1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjaGFyZHdhcmUtYnVpbGQtc3lzdGVtLXRlcm0nPmJ1aWxkIGhvc3Q8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTREssIG9yIHNwZWNpZmljIG1hY2hpbmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFX0FSQ0g8L2ZpbGVuYW1lPiB2YXJpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSB2YXJpYWJsZSdzIGRlc2NyaXB0aW9uIGZvciBkZXRhaWxzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UQVJHRVRfT1MnPjxmaWxlbmFtZT5UQVJHRVRfT1M8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBvcGVyYXRpbmcgc3lzdGVtIG9mIHRoZSB0YXJnZXQgZGV2aWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgdHlwaWNhbCB2YWx1ZSB3b3VsZCBiZSAibGludXgiIChlLmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInFlbXV4ODYtcG9reS1saW51eCIpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGUgcmVjaXBlIHVzZWQgdG8gYnVpbGQgdGhlIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBjYW4gaGF2ZSBtdWx0aXBsZSBtZWFuaW5ncy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB3aGVuIHVzZWQgaW4gdGhlIGNvbnRleHQgb2YgaW5wdXQgZmlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBOPC9maWxlbmFtZT4gcmVwcmVzZW50cyB0aGUgdGhlIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGxvY2F0aW9uIHdoZXJlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRzIGEgcmVjaXBlIChpLmUuIGRvZXMgdGhlIHdvcmsgdG8gY3JlYXRlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB2ZXJzaW9uIG9mIHRoZSByZWNpcGUgdXNlZCB0byBidWlsZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSJz48ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJldmlzaW9uIG9mIHRoZSByZWNpcGUgdXNlZCB0byBidWlsZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUyc+PGZpbGVuYW1lPlM8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhaW5zIHRoZSB1bnBhY2tlZCBzb3VyY2UgZmlsZXMgZm9yIGEgZ2l2ZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJQTic+PGZpbGVuYW1lPkJQTjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGUgcmVjaXBlIHVzZWQgdG8gYnVpbGQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5CUE48L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSB2ZXJzaW9uIG9mIHRoZSA8ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgYnV0IHdpdGggY29tbW9uIHByZWZpeGVzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4ZXMgcmVtb3ZlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdmVyc2lvbiBvZiB0aGUgcmVjaXBlIHVzZWQgdG8gYnVpbGQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoZSBwcmV2aW91cyBmaWd1cmUsIG5vdGljZSB0aGF0IHR3byBzYW1wbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGhpZXJhcmNoaWVzIGV4aXN0OiBvbmUgYmFzZWQgb24gcGFja2FnZSBhcmNoaXRlY3R1cmUgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFX0FSQ0g8L2ZpbGVuYW1lPikgYW5kIG9uZSBiYXNlZCBvbiBhCisgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lIChpLmUuIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHVuZGVybHlpbmcgc3RydWN0dXJlcyBhcmUgaWRlbnRpY2FsLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGRpZmZlcmVudGlhdG9yIGJlaW5nIHdoYXQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIGlzIHVzaW5nIGFzIGEgYnVpbGQgdGFyZ2V0IChlLmcuIGdlbmVyYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZSwgYSBidWlsZCBob3N0LCBhbiBTREssIG9yIGEgc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUpLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0ncGF0Y2hpbmctZGV2LWVudmlyb25tZW50Jz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+UGF0Y2hpbmc8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE9uY2Ugc291cmNlIGNvZGUgaXMgZmV0Y2hlZCBhbmQgdW5wYWNrZWQsIEJpdEJha2UgbG9jYXRlcworICAgICAgICAgICAgICAgICAgICBwYXRjaCBmaWxlcyBhbmQgYXBwbGllcyB0aGVtIHRvIHRoZSBzb3VyY2UgZmlsZXM6CisgICAgICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9wYXRjaGluZy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI3aW4iIGRlcHRoPSI2aW4iIC8+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGF0Y2gnPjxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzayB1c2VzIGEgcmVjaXBlJ3MKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnRzIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUZJTEVTUEFUSCc+PGZpbGVuYW1lPkZJTEVTUEFUSDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gbG9jYXRlIGFwcGxpY2FibGUgcGF0Y2ggZmlsZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgcHJvY2Vzc2luZyBmb3IgcGF0Y2ggZmlsZXMgYXNzdW1lcyB0aGUgZmlsZXMgaGF2ZQorICAgICAgICAgICAgICAgICAgICBlaXRoZXIgPGZpbGVuYW1lPioucGF0Y2g8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5kaWZmPC9maWxlbmFtZT4gZmlsZSB0eXBlcy4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBwYXJhbWV0ZXJzIHRvCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZSB0aGUgd2F5IHRoZSBidWlsZCBzeXN0ZW0gcmVjb2duaXplcyBwYXRjaCBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGF0Y2gnPjxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzayBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBmaW5kcyBhbmQgYXBwbGllcyBtdWx0aXBsZSBwYXRjaGVzIGZvciBhIHNpbmdsZQorICAgICAgICAgICAgICAgICAgICByZWNpcGUgaW4gdGhlIG9yZGVyIGluIHdoaWNoIGl0IGxvY2F0ZXMgdGhlIHBhdGNoZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+RklMRVNQQVRIPC9maWxlbmFtZT4gdmFyaWFibGUgZGVmaW5lcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBzZXQgb2YgZGlyZWN0b3JpZXMgdGhhdCB0aGUgYnVpbGQgc3lzdGVtIHVzZXMgdG8KKyAgICAgICAgICAgICAgICAgICAgc2VhcmNoIGZvciBwYXRjaCBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgT25jZSBmb3VuZCwgcGF0Y2hlcyBhcmUgYXBwbGllZCB0byB0aGUgcmVjaXBlJ3Mgc291cmNlCisgICAgICAgICAgICAgICAgICAgIGZpbGVzLCB3aGljaCBhcmUgbG9jYXRlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0aGUgc291cmNlIGRpcmVjdG9yaWVzIGFyZQorICAgICAgICAgICAgICAgICAgICBjcmVhdGVkLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzb3VyY2UtZmV0Y2hpbmctZGV2LWVudmlyb25tZW50Jz5Tb3VyY2UgRmV0Y2hpbmc8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY3JlYXRlIHBhdGNoZXMgYW5kIGhvdyB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIHByb2Nlc3NlcyBwYXRjaGVzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNuZXctcmVjaXBlLXBhdGNoaW5nLWNvZGUnPlBhdGNoaW5nIENvZGU8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstZGV2dG9vbC11c2UtZGV2dG9vbC1tb2RpZnktdG8tbW9kaWZ5LXRoZS1zb3VyY2Utb2YtYW4tZXhpc3RpbmctY29tcG9uZW50Jz5Vc2UgPGZpbGVuYW1lPmRldnRvb2wgbW9kaWZ5PC9maWxlbmFtZT4gdG8gTW9kaWZ5IHRoZSBTb3VyY2Ugb2YgYW4gRXhpc3RpbmcgQ29tcG9uZW50PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBtYW51YWwgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I3VzaW5nLXRyYWRpdGlvbmFsLWtlcm5lbC1kZXZlbG9wbWVudC10by1wYXRjaC10aGUta2VybmVsJz5Vc2luZyBUcmFkaXRpb25hbCBLZXJuZWwgRGV2ZWxvcG1lbnQgdG8gUGF0Y2ggdGhlIEtlcm5lbDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nY29uZmlndXJhdGlvbi1jb21waWxhdGlvbi1hbmQtc3RhZ2luZy1kZXYtZW52aXJvbm1lbnQnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmF0aW9uLCBDb21waWxhdGlvbiwgYW5kIFN0YWdpbmc8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFmdGVyIHNvdXJjZSBjb2RlIGlzIHBhdGNoZWQsIEJpdEJha2UgZXhlY3V0ZXMgdGFza3MgdGhhdAorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmUgYW5kIGNvbXBpbGUgdGhlIHNvdXJjZSBjb2RlLgorICAgICAgICAgICAgICAgICAgICBPbmNlIGNvbXBpbGF0aW9uIG9jY3VycywgdGhlIGZpbGVzIGFyZSBjb3BpZWQgdG8gYSBob2xkaW5nCisgICAgICAgICAgICAgICAgICAgIGFyZWEgKHN0YWdlZCkgaW4gcHJlcGFyYXRpb24gZm9yIHBhY2thZ2luZzoKKyAgICAgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2NvbmZpZ3VyYXRpb24tY29tcGlsZS1hdXRvcmVjb25mLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjdpbiIgZGVwdGg9IjVpbiIgLz4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBzdGVwIGluIHRoZSBidWlsZCBwcm9jZXNzIGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgdGFza3M6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wcmVwYXJlX3JlY2lwZV9zeXNyb290Jz48ZmlsZW5hbWU+ZG9fcHJlcGFyZV9yZWNpcGVfc3lzcm9vdDwvZmlsZW5hbWU+PC91bGluaz48L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHRhc2sgc2V0cyB1cCB0aGUgdHdvIHN5c3Jvb3RzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5yZWNpcGUtc3lzcm9vdDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGUtc3lzcm9vdC1uYXRpdmU8L2ZpbGVuYW1lPikgc28gdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmluZyB0aGUgcGFja2FnaW5nIHBoYXNlIHRoZSBzeXNyb290cyBjYW4gY29udGFpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb250ZW50cyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcG9wdWxhdGVfc3lzcm9vdCc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza3Mgb2YgdGhlIHJlY2lwZXMgb24gd2hpY2ggdGhlIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5pbmcgdGhlIHRhc2tzIGRlcGVuZHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBzeXNyb290IGV4aXN0cyBmb3IgYm90aCB0aGUgdGFyZ2V0IGFuZCBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlIGJpbmFyaWVzLCB3aGljaCBydW4gb24gdGhlIGhvc3Qgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT48L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHRhc2sgY29uZmlndXJlcyB0aGUgc291cmNlIGJ5IGVuYWJsaW5nIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGluZyBhbnkgYnVpbGQtdGltZSBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBzb2Z0d2FyZSBiZWluZyBidWlsdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9ucyBjYW4gY29tZSBmcm9tIHRoZSByZWNpcGUgaXRzZWxmIGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VsbCBhcyBmcm9tIGFuIGluaGVyaXRlZCBjbGFzcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSBzb2Z0d2FyZSBpdHNlbGYgbWlnaHQgY29uZmlndXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRzZWxmIGRlcGVuZGluZyBvbiB0aGUgdGFyZ2V0IGZvciB3aGljaCBpdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlaW5nIGJ1aWx0LjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBjb25maWd1cmF0aW9ucyBoYW5kbGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1jb25maWd1cmUnPjxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzayBhcmUgc3BlY2lmaWMgdG8gY29uZmlndXJhdGlvbnMgZm9yIHRoZSBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlIGJlaW5nIGJ1aWx0IGJ5IHRoZSByZWNpcGUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IGFyZSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1hdXRvdG9vbHMnPjxmaWxlbmFtZT5hdXRvdG9vbHM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHlvdSBjYW4gYWRkIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUVYVFJBX09FQ09ORic+PGZpbGVuYW1lPkVYVFJBX09FQ09ORjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFQ09ORklHX0NPTkZBUkdTJz48ZmlsZW5hbWU+UEFDS0FHRUNPTkZJR19DT05GQVJHUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0aGlzIHZhcmlhYmxlIHdvcmtzIHdpdGhpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgY2xhc3MsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1hdXRvdG9vbHMnPjxmaWxlbmFtZT5hdXRvdG9vbHM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS9wb2t5L3RyZWUvbWV0YS9jbGFzc2VzL2F1dG90b29scy5iYmNsYXNzJz5oZXJlPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT48L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmNlIGEgY29uZmlndXJhdGlvbiB0YXNrIGhhcyBiZWVuIHNhdGlzZmllZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIGNvbXBpbGVzIHRoZSBzb3VyY2UgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWNvbXBpbGUnPjxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGlsYXRpb24gb2NjdXJzIGluIHRoZSBkaXJlY3RvcnkgcG9pbnRlZCB0byBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1CJz48ZmlsZW5hbWU+QjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFsaXplIHRoYXQgdGhlIDxmaWxlbmFtZT5CPC9maWxlbmFtZT4gZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMsIGJ5IGRlZmF1bHQsIHRoZSBzYW1lIGFzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT48L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZnRlciBjb21waWxhdGlvbiBjb21wbGV0ZXMsIEJpdEJha2UgZXhlY3V0ZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWluc3RhbGwnPjxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0YXNrIGNvcGllcyBmaWxlcyBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CPC9maWxlbmFtZT4gZGlyZWN0b3J5IGFuZCBwbGFjZXMgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGEgaG9sZGluZyBhcmVhIHBvaW50ZWQgdG8gYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUQnPjxmaWxlbmFtZT5EPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2luZyBvY2N1cnMgbGF0ZXIgdXNpbmcgZmlsZXMgZnJvbSB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9sZGluZyBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3BhY2thZ2Utc3BsaXR0aW5nLWRldi1lbnZpcm9ubWVudCc+CisgICAgICAgICAgICAgICAgPHRpdGxlPlBhY2thZ2UgU3BsaXR0aW5nPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBZnRlciBzb3VyY2UgY29kZSBpcyBjb25maWd1cmVkLCBjb21waWxlZCwgYW5kIHN0YWdlZCwgdGhlCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSBhbmFseXplcyB0aGUgcmVzdWx0cyBhbmQgc3BsaXRzIHRoZSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgaW50byBwYWNrYWdlczoKKyAgICAgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2FuYWx5c2lzLWZvci1wYWNrYWdlLXNwbGl0dGluZy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI3aW4iIGRlcHRoPSI3aW4iIC8+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZWRhdGEnPjxmaWxlbmFtZT5kb19wYWNrYWdlZGF0YTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFza3MgY29tYmluZSB0byBhbmFseXplIHRoZSBmaWxlcyBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUQnPjxmaWxlbmFtZT5EPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgYW5kIHNwbGl0IHRoZW0gaW50byBzdWJzZXRzIGJhc2VkIG9uIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBhbmQgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIEFuYWx5c2lzIGludm9sdmVzIHRoZSBmb2xsb3dpbmcgYXMgd2VsbCBhcyBvdGhlciBpdGVtczoKKyAgICAgICAgICAgICAgICAgICAgc3BsaXR0aW5nIG91dCBkZWJ1Z2dpbmcgc3ltYm9scywgbG9va2luZyBhdCBzaGFyZWQgbGlicmFyeQorICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgYmV0d2VlbiBwYWNrYWdlcywgYW5kIGxvb2tpbmcgYXQgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRvX3BhY2thZ2VkYXRhPC9maWxlbmFtZT4gdGFzayBjcmVhdGVzCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgbWV0YWRhdGEgYmFzZWQgb24gdGhlIGFuYWx5c2lzIHN1Y2ggdGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIGNhbiBnZW5lcmF0ZSB0aGUgZmluYWwgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcG9wdWxhdGVfc3lzcm9vdCc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgc3RhZ2VzIChjb3BpZXMpIGEgc3Vic2V0IG9mIHRoZSBmaWxlcyBpbnN0YWxsZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzayBpbnRvIHRoZSBhcHByb3ByaWF0ZSBzeXNyb290LgorICAgICAgICAgICAgICAgICAgICBXb3JraW5nLCBzdGFnZWQsIGFuZCBpbnRlcm1lZGlhdGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMKKyAgICAgICAgICAgICAgICAgICAgYW5kIHBhY2thZ2Ugc3BsaXR0aW5nIHByb2Nlc3MgdXNlIHNldmVyYWwgYXJlYXM6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBLR0QnPjxmaWxlbmFtZT5QS0dEPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVzdGluYXRpb24gZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPnBhY2thZ2U8L2ZpbGVuYW1lPikgZm9yIHBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlIHRoZXkgYXJlIHNwbGl0IGludG8gaW5kaXZpZHVhbCBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEtHREVTVFdPUksnPjxmaWxlbmFtZT5QS0dERVNUV09SSzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSB0ZW1wb3Jhcnkgd29yayBhcmVhIChpLmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBrZ2RhdGE8L2ZpbGVuYW1lPikgdXNlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+IHRhc2sgdG8gc2F2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgbWV0YWRhdGEuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBLR0RFU1QnPjxmaWxlbmFtZT5QS0dERVNUPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcGFyZW50IGRpcmVjdG9yeSAoaS5lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlcy1zcGxpdDwvZmlsZW5hbWU+KSBmb3IgcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlciB0aGV5IGhhdmUgYmVlbiBzcGxpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEtHREFUQV9ESVInPjxmaWxlbmFtZT5QS0dEQVRBX0RJUjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBzaGFyZWQsIGdsb2JhbC1zdGF0ZSBkaXJlY3RvcnkgdGhhdCBob2xkcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2luZyBtZXRhZGF0YSBnZW5lcmF0ZWQgZHVyaW5nIHRoZSBwYWNrYWdpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwYWNrYWdpbmcgcHJvY2VzcyBjb3BpZXMgbWV0YWRhdGEgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QS0dERVNUV09SSzwvZmlsZW5hbWU+IHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QS0dEQVRBX0RJUjwvZmlsZW5hbWU+IGFyZWEgd2hlcmUgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWNvbWVzIGdsb2JhbGx5IGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1RBR0lOR19ESVJfSE9TVCc+PGZpbGVuYW1lPlNUQUdJTkdfRElSX0hPU1Q8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwYXRoIGZvciB0aGUgc3lzcm9vdCBmb3IgdGhlIHN5c3RlbSBvbiB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgY29tcG9uZW50IGlzIGJ1aWx0IHRvIHJ1biAoaS5lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGUtc3lzcm9vdDwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1RBR0lOR19ESVJfTkFUSVZFJz48ZmlsZW5hbWU+U1RBR0lOR19ESVJfTkFUSVZFPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcGF0aCBmb3IgdGhlIHN5c3Jvb3QgdXNlZCB3aGVuIGJ1aWxkaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cyBmb3IgdGhlIGJ1aWxkIGhvc3QgKGkuZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlLXN5c3Jvb3QtbmF0aXZlPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TVEFHSU5HX0RJUl9UQVJHRVQnPjxmaWxlbmFtZT5TVEFHSU5HX0RJUl9UQVJHRVQ8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwYXRoIGZvciB0aGUgc3lzcm9vdCB1c2VkIHdoZW4gYSBjb21wb25lbnQgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGJ1aWx0IHRvIGV4ZWN1dGUgb24gYSBzeXN0ZW0gYW5kIGl0IGdlbmVyYXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgZm9yIHlldCBhbm90aGVyIG1hY2hpbmUgKGUuZy4gY3Jvc3MtY2FuYWRpYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGVzKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRklMRVMnPjxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZGVmaW5lcyB0aGUgZmlsZXMgdGhhdCBnbyBpbnRvIGVhY2ggcGFja2FnZSBpbgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRVMnPjxmaWxlbmFtZT5QQUNLQUdFUzwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IGRldGFpbHMgb24gaG93IHRoaXMgaXMgYWNjb21wbGlzaGVkLCB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgIGxvb2sgYXQKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlL21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MnPjxmaWxlbmFtZT5wYWNrYWdlLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgcGFja2FnZXMgYmVpbmcgY3JlYXRlZCAoUlBNLCBERUIsCisgICAgICAgICAgICAgICAgICAgIG9yIElQSyksIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZV93cml0ZV9kZWInPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlXyo8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgY3JlYXRlcyB0aGUgYWN0dWFsIHBhY2thZ2VzIGFuZCBwbGFjZXMgdGhlbSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgUGFja2FnZSBGZWVkIGFyZWEsIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1RNUERJUn0vZGVwbG95PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQnPlBhY2thZ2UgRmVlZHM8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGRldGFpbCBvbiB0aGF0IHBhcnQgb2YgdGhlIGJ1aWxkIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgU3VwcG9ydCBmb3IgY3JlYXRpbmcgZmVlZHMgZGlyZWN0bHkgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3kvKjwvZmlsZW5hbWU+IGRpcmVjdG9yaWVzIGRvZXMgbm90CisgICAgICAgICAgICAgICAgICAgICAgICBleGlzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0aW5nIHN1Y2ggZmVlZHMgdXN1YWxseSByZXF1aXJlcyBzb21lIGtpbmQgb2YgZmVlZAorICAgICAgICAgICAgICAgICAgICAgICAgbWFpbnRlbmFuY2UgbWVjaGFuaXNtIHRoYXQgd291bGQgdXBsb2FkIHRoZSBuZXcKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIGludG8gYW4gb2ZmaWNpYWwgcGFja2FnZSBmZWVkIChlLmcuIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgw4VuZ3N0csO2bSBkaXN0cmlidXRpb24pLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGhpZ2hseSBkaXN0cmlidXRpb24tc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aHVzIGlzIG5vdCBwcm92aWRlZCBvdXQgb2YgdGhlIGJveC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2ltYWdlLWdlbmVyYXRpb24tZGV2LWVudmlyb25tZW50Jz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+SW1hZ2UgR2VuZXJhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgT25jZSBwYWNrYWdlcyBhcmUgc3BsaXQgYW5kIHN0b3JlZCBpbiB0aGUgUGFja2FnZSBGZWVkcworICAgICAgICAgICAgICAgICAgICBhcmVhLCB0aGUgYnVpbGQgc3lzdGVtIHVzZXMgQml0QmFrZSB0byBnZW5lcmF0ZSB0aGUgcm9vdAorICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIGltYWdlOgorICAgICAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvaW1hZ2UtZ2VuZXJhdGlvbi5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI3LjVpbiIgZGVwdGg9IjcuNWluIiAvPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgaW1hZ2UgZ2VuZXJhdGlvbiBwcm9jZXNzIGNvbnNpc3RzIG9mIHNldmVyYWwgc3RhZ2VzIGFuZAorICAgICAgICAgICAgICAgICAgICBkZXBlbmRzIG9uIHNldmVyYWwgdGFza3MgYW5kIHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1yb290ZnMnPjxmaWxlbmFtZT5kb19yb290ZnM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgY3JlYXRlcyB0aGUgcm9vdCBmaWxlc3lzdGVtIChmaWxlIGFuZCBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlKSBmb3IgYW4gaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdGFzayB1c2VzIHNldmVyYWwga2V5IHZhcmlhYmxlcyB0byBoZWxwIGNyZWF0ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgbGlzdCBvZiBwYWNrYWdlcyB0byBhY3R1YWxseSBpbnN0YWxsOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9JTlNUQUxMJz48ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgb3V0IHRoZSBiYXNlIHNldCBvZiBwYWNrYWdlcyBmcm9tIHdoaWNoIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCBmcm9tIHRoZSBQYWNrYWdlIEZlZWRzIGFyZWEuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfRVhDTFVERSc+PGZpbGVuYW1lPlBBQ0tBR0VfRVhDTFVERTwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHBhY2thZ2VzIHRoYXQgc2hvdWxkIG5vdCBiZSBpbnN0YWxsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfRkVBVFVSRVMnPjxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGZlYXR1cmVzIHRvIGluY2x1ZGUgaW4gdGhlIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vc3Qgb2YgdGhlc2UgZmVhdHVyZXMgbWFwIHRvIGFkZGl0aW9uYWwgcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW5zdGFsbGF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5QQUNLQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgcGFja2FnZSBiYWNrZW5kIChlLmcuIFJQTSwgREVCLCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQSykgdG8gdXNlIGFuZCBjb25zZXF1ZW50bHkgaGVscHMgZGV0ZXJtaW5lIHdoZXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gbG9jYXRlIHBhY2thZ2VzIHdpdGhpbiB0aGUgUGFja2FnZSBGZWVkcyBhcmVhLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9MSU5HVUFTJz48ZmlsZW5hbWU+SU1BR0VfTElOR1VBUzwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV0ZXJtaW5lcyB0aGUgbGFuZ3VhZ2UocykgZm9yIHdoaWNoIGFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZSBzdXBwb3J0IHBhY2thZ2VzIGFyZSBpbnN0YWxsZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfSU5TVEFMTCc+PGZpbGVuYW1lPlBBQ0tBR0VfSU5TVEFMTDwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZpbmFsIGxpc3Qgb2YgcGFja2FnZXMgcGFzc2VkIHRvIHRoZSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlciBmb3IgaW5zdGFsbGF0aW9uIGludG8gdGhlIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgV2l0aAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfUk9PVEZTJz48ZmlsZW5hbWU+SU1BR0VfUk9PVEZTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBwb2ludGluZyB0byB0aGUgbG9jYXRpb24gb2YgdGhlIGZpbGVzeXN0ZW0gdW5kZXIKKyAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0aW9uIGFuZCB0aGUgPGZpbGVuYW1lPlBBQ0tBR0VfSU5TVEFMTDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHByb3ZpZGluZyB0aGUgZmluYWwgbGlzdCBvZiBwYWNrYWdlcyB0byBpbnN0YWxsLAorICAgICAgICAgICAgICAgICAgICB0aGUgcm9vdCBmaWxlIHN5c3RlbSBpcyBjcmVhdGVkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBQYWNrYWdlIGluc3RhbGxhdGlvbiBpcyB1bmRlciBjb250cm9sIG9mIHRoZSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIG1hbmFnZXIgKGUuZy4gZG5mL3JwbSwgb3BrZywgb3IgYXB0L2Rwa2cpIHJlZ2FyZGxlc3Mgb2YKKyAgICAgICAgICAgICAgICAgICAgd2hldGhlciBvciBub3QgcGFja2FnZSBtYW5hZ2VtZW50IGlzIGVuYWJsZWQgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICB0YXJnZXQuCisgICAgICAgICAgICAgICAgICAgIEF0IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3MsIGlmIHBhY2thZ2UgbWFuYWdlbWVudCBpcyBub3QKKyAgICAgICAgICAgICAgICAgICAgZW5hYmxlZCBmb3IgdGhlIHRhcmdldCwgdGhlIHBhY2thZ2UgbWFuYWdlcidzIGRhdGEgZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgYXJlIGRlbGV0ZWQgZnJvbSB0aGUgcm9vdCBmaWxlc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICBBcyBwYXJ0IG9mIHRoZSBmaW5hbCBzdGFnZSBvZiBwYWNrYWdlIGluc3RhbGxhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgcG9zdCBpbnN0YWxsYXRpb24gc2NyaXB0cyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBwYWNrYWdlcworICAgICAgICAgICAgICAgICAgICBhcmUgcnVuLgorICAgICAgICAgICAgICAgICAgICBBbnkgc2NyaXB0cyB0aGF0IGZhaWwgdG8gcnVuIG9uIHRoZSBidWlsZCBob3N0IGFyZSBydW4gb24KKyAgICAgICAgICAgICAgICAgICAgdGhlIHRhcmdldCB3aGVuIHRoZSB0YXJnZXQgc3lzdGVtIGlzIGZpcnN0IGJvb3RlZC4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1c2luZyBhCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLWEtcmVhZC1vbmx5LXJvb3QtZmlsZXN5c3RlbSc+cmVhZC1vbmx5IHJvb3QgZmlsZXN5c3RlbTwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICBhbGwgdGhlIHBvc3QgaW5zdGFsbGF0aW9uIHNjcmlwdHMgbXVzdCBzdWNjZWVkIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICBidWlsZCBob3N0IGR1cmluZyB0aGUgcGFja2FnZSBpbnN0YWxsYXRpb24gcGhhc2Ugc2luY2UgdGhlCisgICAgICAgICAgICAgICAgICAgIHJvb3QgZmlsZXN5c3RlbSBvbiB0aGUgdGFyZ2V0IGlzIHJlYWQtb25seS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpbmFsIHN0YWdlcyBvZiB0aGUgPGZpbGVuYW1lPmRvX3Jvb3RmczwvZmlsZW5hbWU+IHRhc2sKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlIHBvc3QgcHJvY2Vzc2luZy4KKyAgICAgICAgICAgICAgICAgICAgUG9zdCBwcm9jZXNzaW5nIGluY2x1ZGVzIGNyZWF0aW9uIG9mIGEgbWFuaWZlc3QgZmlsZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9ucy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG1hbmlmZXN0IGZpbGUgKDxmaWxlbmFtZT4ubWFuaWZlc3Q8L2ZpbGVuYW1lPikgcmVzaWRlcworICAgICAgICAgICAgICAgICAgICBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIHJvb3QgZmlsZXN5c3RlbSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIGxpc3RzIG91dCwgbGluZS1ieS1saW5lLCB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICBUaGUgbWFuaWZlc3QgZmlsZSBpcyB1c2VmdWwgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy10ZXN0aW1hZ2UqJz48ZmlsZW5hbWU+dGVzdGltYWdlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcywgZm9yIGV4YW1wbGUsIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0byBydW4KKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgdGVzdHMuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlNQUdFX01BTklGRVNUJz48ZmlsZW5hbWU+SU1BR0VfTUFOSUZFU1Q8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBPcHRpbWl6aW5nIHByb2Nlc3NlcyB0aGF0IGFyZSBydW4gYWNyb3NzIHRoZSBpbWFnZSBpbmNsdWRlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ta2xpYnM8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPnByZWxpbms8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgYW5kIGFueSBvdGhlciBwb3N0LXByb2Nlc3NpbmcgY29tbWFuZHMgYXMgZGVmaW5lZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVJPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EJz48ZmlsZW5hbWU+Uk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm1rbGliczwvZmlsZW5hbWU+IHByb2Nlc3Mgb3B0aW1pemVzIHRoZSBzaXplCisgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBsaWJyYXJpZXMsIHdoaWxlIHRoZSA8ZmlsZW5hbWU+cHJlbGluazwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Mgb3B0aW1pemVzIHRoZSBkeW5hbWljIGxpbmtpbmcgb2Ygc2hhcmVkIGxpYnJhcmllcworICAgICAgICAgICAgICAgICAgICB0byByZWR1Y2Ugc3RhcnQgdXAgdGltZSBvZiBleGVjdXRhYmxlcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgdGhlIHJvb3QgZmlsZXN5c3RlbSBpcyBidWlsdCwgcHJvY2Vzc2luZyBiZWdpbnMgb24KKyAgICAgICAgICAgICAgICAgICAgdGhlIGltYWdlIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1pbWFnZSc+PGZpbGVuYW1lPmRvX2ltYWdlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB0YXNrLgorICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIHJ1bnMgYW55IHByZS1wcm9jZXNzaW5nIGNvbW1hbmRzIGFzCisgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9QUkVQUk9DRVNTX0NPTU1BTkQnPjxmaWxlbmFtZT5JTUFHRV9QUkVQUk9DRVNTX0NPTU1BTkQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIHNwZWNpZmllcyBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIGNhbGwgYmVmb3JlCisgICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZCBzeXN0ZW0gY3JlYXRlcyB0aGUgZmluYWwgaW1hZ2Ugb3V0cHV0IGZpbGVzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIGR5bmFtaWNhbGx5IGNyZWF0ZXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2ltYWdlXyo8L2ZpbGVuYW1lPiB0YXNrcyBhcyBuZWVkZWQsIGJhc2VkCisgICAgICAgICAgICAgICAgICAgIG9uIHRoZSBpbWFnZSB0eXBlcyBzcGVjaWZpZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1JTUFHRV9GU1RZUEVTJz48ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIFRoZSBwcm9jZXNzIHR1cm5zIGV2ZXJ5dGhpbmcgaW50byBhbiBpbWFnZSBmaWxlIG9yIGEgc2V0IG9mCisgICAgICAgICAgICAgICAgICAgIGltYWdlIGZpbGVzIGFuZCBjYW4gY29tcHJlc3MgdGhlIHJvb3QgZmlsZXN5c3RlbSBpbWFnZSB0bworICAgICAgICAgICAgICAgICAgICByZWR1Y2UgdGhlIG92ZXJhbGwgc2l6ZSBvZiB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoZSBmb3JtYXRzIHVzZWQgZm9yIHRoZSByb290IGZpbGVzeXN0ZW0gZGVwZW5kIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2lvbiBkZXBlbmRzIG9uIHdoZXRoZXIgdGhlIGZvcm1hdHMgc3VwcG9ydAorICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2lvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgYSBkeW5hbWljYWxseSBjcmVhdGVkIHRhc2sgd2hlbiBjcmVhdGluZyBhCisgICAgICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIgaW1hZ2UgPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPiB3b3VsZAorICAgICAgICAgICAgICAgICAgICB0YWtlIHRoZSBmb2xsb3dpbmcgZm9ybToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBkb19pbWFnZV88cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgU28sIGlmIHRoZSA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+IGFzIHNwZWNpZmllZCBieQorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPiB3ZXJlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5leHQ0PC9maWxlbmFtZT4sIHRoZSBkeW5hbWljYWxseSBnZW5lcmF0ZWQgdGFzaworICAgICAgICAgICAgICAgICAgICB3b3VsZCBiZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGRvX2ltYWdlX2V4dDQKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZmluYWwgdGFzayBpbnZvbHZlZCBpbiBpbWFnZSBjcmVhdGlvbiBpcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWltYWdlLWNvbXBsZXRlJz48ZmlsZW5hbWU+ZG9faW1hZ2VfY29tcGxldGU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2suCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdGFzayBjb21wbGV0ZXMgdGhlIGltYWdlIGJ5IGFwcGx5aW5nIGFueSBpbWFnZQorICAgICAgICAgICAgICAgICAgICBwb3N0IHByb2Nlc3NpbmcgYXMgZGVmaW5lZCB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItSU1BR0VfUE9TVFBST0NFU1NfQ09NTUFORCc+PGZpbGVuYW1lPklNQUdFX1BPU1RQUk9DRVNTX0NPTU1BTkQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUgc3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBvbmNlIHRoZQorICAgICAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gaGFzIGNyZWF0ZWQgdGhlIGZpbmFsIGltYWdlIG91dHB1dCBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZW50aXJlIGltYWdlIGdlbmVyYXRpb24gcHJvY2VzcyBpcyBydW4gdW5kZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2Zha2Vyb290LWFuZC1wc2V1ZG8nPlBzZXVkbzwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICBSdW5uaW5nIHVuZGVyIFBzZXVkbyBlbnN1cmVzIHRoYXQgdGhlIGZpbGVzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtIGhhdmUgY29ycmVjdCBvd25lcnNoaXAuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdzZGstZ2VuZXJhdGlvbi1kZXYtZW52aXJvbm1lbnQnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5TREsgR2VuZXJhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyBCaXRCYWtlIHRvIGdlbmVyYXRlIHRoZQorICAgICAgICAgICAgICAgICAgICBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykgaW5zdGFsbGVyIHNjcmlwdHMgZm9yIGJvdGgKKyAgICAgICAgICAgICAgICAgICAgdGhlIHN0YW5kYXJkIFNESyBhbmQgdGhlIGV4dGVuc2libGUgU0RLIChlU0RLKToKKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3Nkay1nZW5lcmF0aW9uLnBuZyIgd2lkdGg9IjlpbiIgYWxpZ249ImNlbnRlciIgLz4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluCisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluLWdlbmVyYXRpb24nPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbiBHZW5lcmF0aW9uPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gYWR2YW50YWdlcyBnYWluZWQgd2hlbiBidWlsZGluZyBhCisgICAgICAgICAgICAgICAgICAgICAgICBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4gdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcG9wdWxhdGVfc2RrJz48ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc2RrPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdGFzaywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1idWlsZGluZy1hbi1zZGstaW5zdGFsbGVyJz5CdWlsZGluZyBhbiBTREsgSW5zdGFsbGVyPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKQorICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIExpa2UgaW1hZ2UgZ2VuZXJhdGlvbiwgdGhlIFNESyBzY3JpcHQgcHJvY2VzcyBjb25zaXN0cyBvZgorICAgICAgICAgICAgICAgICAgICBzZXZlcmFsIHN0YWdlcyBhbmQgZGVwZW5kcyBvbiBtYW55IHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wb3B1bGF0ZV9zZGsnPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zZGs8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcG9wdWxhdGVfc2RrX2V4dCc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3Nka19leHQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2tzIHVzZSB0aGVzZSBrZXkgdmFyaWFibGVzIHRvIGhlbHAgY3JlYXRlIHRoZSBsaXN0IG9mCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIHRvIGFjdHVhbGx5IGluc3RhbGwuCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgdmFyaWFibGVzIGxpc3RlZCBpbiB0aGUgZmlndXJlLAorICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstZGV2LWVudmlyb25tZW50Jz5BcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBTREs8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRvX3BvcHVsYXRlX3NkazwvZmlsZW5hbWU+IHRhc2sgaGVscHMgY3JlYXRlCisgICAgICAgICAgICAgICAgICAgIHRoZSBzdGFuZGFyZCBTREsgYW5kIGhhbmRsZXMgdHdvIHBhcnRzOiBhIHRhcmdldCBwYXJ0IGFuZCBhCisgICAgICAgICAgICAgICAgICAgIGhvc3QgcGFydC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHRhcmdldCBwYXJ0IGlzIHRoZSBwYXJ0IGJ1aWx0IGZvciB0aGUgdGFyZ2V0IGhhcmR3YXJlCisgICAgICAgICAgICAgICAgICAgIGFuZCBpbmNsdWRlcyBsaWJyYXJpZXMgYW5kIGhlYWRlcnMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBob3N0IHBhcnQgaXMgdGhlIHBhcnQgb2YgdGhlIFNESyB0aGF0IHJ1bnMgb24gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtNQUNISU5FJz48ZmlsZW5hbWU+U0RLTUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc2RrX2V4dDwvZmlsZW5hbWU+IHRhc2sgaGVscHMKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlIHRoZSBleHRlbnNpYmxlIFNESyBhbmQgaGFuZGxlcyBob3N0IGFuZCB0YXJnZXQgcGFydHMKKyAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW50bHkgdGhhbiBpdHMgY291bnRlciBwYXJ0IGRvZXMgZm9yIHRoZSBzdGFuZGFyZCBTREsuCisgICAgICAgICAgICAgICAgICAgIEZvciB0aGUgZXh0ZW5zaWJsZSBTREssIHRoZSB0YXNrIGVuY2Fwc3VsYXRlcyB0aGUgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtLCB3aGljaCBpbmNsdWRlcyBldmVyeXRoaW5nIG5lZWRlZCAoaG9zdCBhbmQgdGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIFNESy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgUmVnYXJkbGVzcyBvZiB0aGUgdHlwZSBvZiBTREsgYmVpbmcgY29uc3RydWN0ZWQsIHRoZQorICAgICAgICAgICAgICAgICAgICB0YXNrcyBwZXJmb3JtIHNvbWUgY2xlYW51cCBhZnRlciB3aGljaCBhIGNyb3NzLWRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBhbmQgYW55IG5lZWRlZCBjb25maWd1cmF0aW9uIGZpbGVzCisgICAgICAgICAgICAgICAgICAgIGFyZSBjcmVhdGVkLgorICAgICAgICAgICAgICAgICAgICBUaGUgZmluYWwgb3V0cHV0IGlzIHRoZSBDcm9zcy1kZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4gaW5zdGFsbGF0aW9uIHNjcmlwdCAoPGZpbGVuYW1lPi5zaDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUpLCB3aGljaCBpbmNsdWRlcyB0aGUgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3N0YW1wLWZpbGVzLWFuZC10aGUtcmVydW5uaW5nLW9mLXRhc2tzJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+U3RhbXAgRmlsZXMgYW5kIHRoZSBSZXJ1bm5pbmcgb2YgVGFza3M8L3RpdGxlPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBlYWNoIHRhc2sgdGhhdCBjb21wbGV0ZXMgc3VjY2Vzc2Z1bGx5LCBCaXRCYWtlIHdyaXRlcyBhCisgICAgICAgICAgICAgICAgICAgIHN0YW1wIGZpbGUgaW50byB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNUQU1QU19ESVInPjxmaWxlbmFtZT5TVEFNUFNfRElSPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIFRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0YW1wIGZpbGUncyBmaWxlbmFtZSBpcyBkZXRlcm1pbmVkCisgICAgICAgICAgICAgICAgICAgIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1RBTVAnPjxmaWxlbmFtZT5TVEFNUDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIGFuZCB0aGUgZW5kIG9mIHRoZSBuYW1lIGNvbnNpc3RzIG9mIHRoZSB0YXNrJ3MKKyAgICAgICAgICAgICAgICAgICAgbmFtZSBhbmQgY3VycmVudAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdvdmVydmlldy1jaGVja3N1bXMnPmlucHV0IGNoZWNrc3VtPC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG5hbWluZyBzY2hlbWUgYXNzdW1lcyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3Zhci1CQl9TSUdOQVRVUkVfSEFORExFUic+PGZpbGVuYW1lPkJCX1NJR05BVFVSRV9IQU5ETEVSPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgaXMgIk9FQmFzaWNIYXNoIiwgd2hpY2ggaXMgYWxtb3N0IGFsd2F5cyB0aGUgY2FzZSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCBPcGVuRW1iZWRkZWQuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVG8gZGV0ZXJtaW5lIGlmIGEgdGFzayBuZWVkcyB0byBiZSByZXJ1biwgQml0QmFrZSBjaGVja3MKKyAgICAgICAgICAgICAgICAgICAgaWYgYSBzdGFtcCBmaWxlIHdpdGggYSBtYXRjaGluZyBpbnB1dCBjaGVja3N1bSBleGlzdHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSB0YXNrLgorICAgICAgICAgICAgICAgICAgICBJZiBzdWNoIGEgc3RhbXAgZmlsZSBleGlzdHMsIHRoZSB0YXNrJ3Mgb3V0cHV0IGlzCisgICAgICAgICAgICAgICAgICAgIGFzc3VtZWQgdG8gZXhpc3QgYW5kIHN0aWxsIGJlIHZhbGlkLgorICAgICAgICAgICAgICAgICAgICBJZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCwgdGhlIHRhc2sgaXMgcmVydW4uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIHN0YW1wIG1lY2hhbmlzbSBpcyBtb3JlIGdlbmVyYWwgdGhhbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZCBzdGF0ZSAoc3N0YXRlKSBjYWNoZSBtZWNoYW5pc20gZGVzY3JpYmVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3NldHNjZW5lLXRhc2tzLWFuZC1zaGFyZWQtc3RhdGUnPlNldHNjZW5lIFRhc2tzIGFuZCBTaGFyZWQgU3RhdGU8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgYXZvaWRzIHJlcnVubmluZyBhbnkgdGFzayB0aGF0IGhhcyBhIHZhbGlkCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFtcCBmaWxlLCBub3QganVzdCB0YXNrcyB0aGF0IGNhbiBiZSBhY2NlbGVyYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCB0aGUgc3N0YXRlIGNhY2hlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SG93ZXZlciwgeW91IHNob3VsZCByZWFsaXplIHRoYXQgc3RhbXAgZmlsZXMgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgc2VydmUgYXMgYSBtYXJrZXIgdGhhdCBzb21lIHdvcmsgaGFzIGJlZW4gZG9uZSBhbmQgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlc2UgZmlsZXMgZG8gbm90IHJlY29yZCB0YXNrIG91dHB1dC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBhY3R1YWwgdGFzayBvdXRwdXQgd291bGQgdXN1YWxseSBiZSBzb21ld2hlcmUgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiBpbiBzb21lIHJlY2lwZSdzCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvdWxpbms+LikKKyAgICAgICAgICAgICAgICAgICAgICAgIFdoYXQgdGhlIHNzdGF0ZSBjYWNoZSBtZWNoYW5pc20gYWRkcyBpcyBhIHdheSB0byBjYWNoZQorICAgICAgICAgICAgICAgICAgICAgICAgdGFzayBvdXRwdXQgdGhhdCBjYW4gdGhlbiBiZSBzaGFyZWQgYmV0d2VlbiBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXMuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIFNpbmNlIDxmaWxlbmFtZT5TVEFNUFNfRElSPC9maWxlbmFtZT4gaXMgdXN1YWxseSBhCisgICAgICAgICAgICAgICAgICAgIHN1YmRpcmVjdG9yeSBvZiA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4sIHJlbW92aW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiB3aWxsIGFsc28gcmVtb3ZlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TVEFNUFNfRElSPC9maWxlbmFtZT4sIHdoaWNoIG1lYW5zIHRhc2tzIHdpbGwKKyAgICAgICAgICAgICAgICAgICAgcHJvcGVybHkgYmUgcmVydW4gdG8gcmVwb3B1bGF0ZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHNvbWUgdGFzayB0byBhbHdheXMgYmUgY29uc2lkZXJlZCAib3V0IG9mCisgICAgICAgICAgICAgICAgICAgIGRhdGUiLCB5b3UgY2FuIG1hcmsgaXQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXJpYWJsZS1mbGFncyc+PGZpbGVuYW1lPm5vc3RhbXA8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmZsYWcuCisgICAgICAgICAgICAgICAgICAgIElmIHNvbWUgb3RoZXIgdGFzayBkZXBlbmRzIG9uIHN1Y2ggYSB0YXNrLCB0aGVuIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgdGFzayB3aWxsIGFsc28gYWx3YXlzIGJlIGNvbnNpZGVyZWQgb3V0IG9mIGRhdGUsIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIG1pZ2h0IG5vdCBiZSB3aGF0IHlvdSB3YW50LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgZGV0YWlscyBvbiBob3cgdG8gdmlldyBpbmZvcm1hdGlvbiBhYm91dCBhIHRhc2sncworICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmUsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi12aWV3aW5nLXRhc2stdmFyaWFibGUtZGVwZW5kZW5jaWVzJz5WaWV3aW5nIFRhc2sgVmFyaWFibGUgRGVwZW5kZW5jaWVzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3NldHNjZW5lLXRhc2tzLWFuZC1zaGFyZWQtc3RhdGUnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5TZXRzY2VuZSBUYXNrcyBhbmQgU2hhcmVkIFN0YXRlPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVzY3JpcHRpb24gb2YgdGFza3Mgc28gZmFyIGFzc3VtZXMgdGhhdCBCaXRCYWtlIG5lZWRzCisgICAgICAgICAgICAgICAgICAgIHRvIGJ1aWxkIGV2ZXJ5dGhpbmcgYW5kIG5vIGF2YWlsYWJsZSBwcmVidWlsdCBvYmplY3RzCisgICAgICAgICAgICAgICAgICAgIGV4aXN0LgorICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIGRvZXMgc3VwcG9ydCBza2lwcGluZyB0YXNrcyBpZiBwcmVidWlsdCBvYmplY3RzIGFyZQorICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIG9iamVjdHMgYXJlIHVzdWFsbHkgbWFkZSBhdmFpbGFibGUgaW4gdGhlIGZvcm0gb2YgYQorICAgICAgICAgICAgICAgICAgICBzaGFyZWQgc3RhdGUgKHNzdGF0ZSkgY2FjaGUuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHZhcmlhYmxlcyBhZmZlY3Rpbmcgc3N0YXRlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TU1RBVEVfTUlSUk9SUyc+PGZpbGVuYW1lPlNTVEFURV9NSVJST1JTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBpZGVhIG9mIGEgc2V0c2NlbmUgdGFzayAoaS5lCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb188L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT50YXNrbmFtZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPl9zZXRzY2VuZTwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICBpcyBhIHZlcnNpb24gb2YgdGhlIHRhc2sgd2hlcmUKKyAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCBvZiBidWlsZGluZyBzb21ldGhpbmcsIEJpdEJha2UgY2FuIHNraXAgdG8gdGhlIGVuZAorICAgICAgICAgICAgICAgICAgICByZXN1bHQgYW5kIHNpbXBseSBwbGFjZSBhIHNldCBvZiBmaWxlcyBpbnRvIHNwZWNpZmljCisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9ucyBhcyBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgIEluIHNvbWUgY2FzZXMsIGl0IG1ha2VzIHNlbnNlIHRvIGhhdmUgYSBzZXRzY2VuZSB0YXNrCisgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQgKGUuZy4gZ2VuZXJhdGluZyBwYWNrYWdlIGZpbGVzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZV93cml0ZV9kZWInPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlXyo8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2spLgorICAgICAgICAgICAgICAgICAgICBJbiBvdGhlciBjYXNlcywgaXQgZG9lcyBub3QgbWFrZSBzZW5zZSAoZS5nLiBhCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wYXRjaCc+PGZpbGVuYW1lPmRvX3BhdGNoPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB0YXNrIG9yIGEKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXVucGFjayc+PGZpbGVuYW1lPmRvX3VucGFjazwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzaykgc2luY2UgdGhlIHdvcmsgaW52b2x2ZWQgd291bGQgYmUgZXF1YWwgdG8gb3IgZ3JlYXRlcgorICAgICAgICAgICAgICAgICAgICB0aGFuIHRoZSB1bmRlcmx5aW5nIHRhc2suCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEluIHRoZSBidWlsZCBzeXN0ZW0sIHRoZSBjb21tb24gdGFza3MgdGhhdCBoYXZlIHNldHNjZW5lCisgICAgICAgICAgICAgICAgICAgIHZhcmlhbnRzIGFyZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV8qPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1kZXBsb3knPjxmaWxlbmFtZT5kb19kZXBsb3k8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZWRhdGEnPjxmaWxlbmFtZT5kb19wYWNrYWdlZGF0YTwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcG9wdWxhdGVfc3lzcm9vdCc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICBOb3RpY2UgdGhhdCB0aGVzZSB0YXNrcyByZXByZXNlbnQgbW9zdCBvZiB0aGUgdGFza3Mgd2hvc2UKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0IGlzIGFuIGVuZCByZXN1bHQuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gaGFzIGtub3dsZWRnZSBvZiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4KKyAgICAgICAgICAgICAgICAgICAgdGhlc2UgdGFza3MgYW5kIG90aGVyIHByZWNlZGluZyB0YXNrcy4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIEJpdEJha2UgcnVucworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZTwvZmlsZW5hbWU+IGZvcgorICAgICAgICAgICAgICAgICAgICBzb21ldGhpbmcsIGl0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgdG8gcnVuIGFueSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb191bnBhY2s8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BhdGNoPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT4gdGFza3MuCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIDxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT4gbmVlZHMgdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgcnVuLCBCaXRCYWtlIG5lZWRzIHRvIHJ1biB0aG9zZSBvdGhlciB0YXNrcy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSXQgYmVjb21lcyBtb3JlIGNvbXBsaWNhdGVkIGlmIGV2ZXJ5dGhpbmcgY2FuIGNvbWUKKyAgICAgICAgICAgICAgICAgICAgZnJvbSBhbiBzc3RhdGUgY2FjaGUgYmVjYXVzZSBzb21lIG9iamVjdHMgYXJlIHNpbXBseQorICAgICAgICAgICAgICAgICAgICBub3QgcmVxdWlyZWQgYXQgYWxsLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IGRvIG5vdCBuZWVkIGEgY29tcGlsZXIgb3IgbmF0aXZlIHRvb2xzLAorICAgICAgICAgICAgICAgICAgICBzdWNoIGFzIHF1aWx0LCBpZiBub3RoaW5nIGV4aXN0cyB0byBjb21waWxlIG9yIHBhdGNoLgorICAgICAgICAgICAgICAgICAgICBJZiB0aGUgPGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfKjwvZmlsZW5hbWU+IHBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgIGFyZSBhdmFpbGFibGUgZnJvbSBzc3RhdGUsIEJpdEJha2UgZG9lcyBub3QgbmVlZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPiB0YXNrIGRhdGEuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRvIGhhbmRsZSBhbGwgdGhlc2UgY29tcGxleGl0aWVzLCBCaXRCYWtlIHJ1bnMgaW4gdHdvCisgICAgICAgICAgICAgICAgICAgIHBoYXNlcy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZpcnN0IGlzIHRoZSAic2V0c2NlbmUiIHN0YWdlLgorICAgICAgICAgICAgICAgICAgICBEdXJpbmcgdGhpcyBzdGFnZSwgQml0QmFrZSBmaXJzdCBjaGVja3MgdGhlIHNzdGF0ZSBjYWNoZQorICAgICAgICAgICAgICAgICAgICBmb3IgYW55IHRhcmdldHMgaXQgaXMgcGxhbm5pbmcgdG8gYnVpbGQuCisgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgZG9lcyBhIGZhc3QgY2hlY2sgdG8gc2VlIGlmIHRoZSBvYmplY3QgZXhpc3RzCisgICAgICAgICAgICAgICAgICAgIHJhdGhlciB0aGFuIGEgY29tcGxldGUgZG93bmxvYWQuCisgICAgICAgICAgICAgICAgICAgIElmIG5vdGhpbmcgZXhpc3RzLCB0aGUgc2Vjb25kIHBoYXNlLCB3aGljaCBpcyB0aGUgc2V0c2NlbmUKKyAgICAgICAgICAgICAgICAgICAgc3RhZ2UsIGNvbXBsZXRlcyBhbmQgdGhlIG1haW4gYnVpbGQgcHJvY2VlZHMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIG9iamVjdHMgYXJlIGZvdW5kIGluIHRoZSBzc3RhdGUgY2FjaGUsIHRoZSBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgd29ya3MgYmFja3dhcmRzIGZyb20gdGhlIGVuZCB0YXJnZXRzIHNwZWNpZmllZCBieSB0aGUgdXNlci4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIGFuIGltYWdlIGlzIGJlaW5nIGJ1aWx0LCB0aGUgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIGZpcnN0IGxvb2tzIGZvciB0aGUgcGFja2FnZXMgbmVlZGVkIGZvciB0aGF0IGltYWdlIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgdG9vbHMgbmVlZGVkIHRvIGNvbnN0cnVjdCBhbiBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhvc2UgYXJlIGF2YWlsYWJsZSwgdGhlIGNvbXBpbGVyIGlzIG5vdCBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgIFRodXMsIHRoZSBjb21waWxlciBpcyBub3QgZXZlbiBkb3dubG9hZGVkLgorICAgICAgICAgICAgICAgICAgICBJZiBzb21ldGhpbmcgd2FzIGZvdW5kIHRvIGJlIHVuYXZhaWxhYmxlLCBvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQgb3Igc2V0c2NlbmUgdGFzayBmYWlscywgdGhlIGJ1aWxkIHN5c3RlbSB0aGVuCisgICAgICAgICAgICAgICAgICAgIHRyaWVzIHRvIGluc3RhbGwgZGVwZW5kZW5jaWVzLCBzdWNoIGFzIHRoZSBjb21waWxlciwgZnJvbQorICAgICAgICAgICAgICAgICAgICB0aGUgY2FjaGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBhdmFpbGFiaWxpdHkgb2Ygb2JqZWN0cyBpbiB0aGUgc3N0YXRlIGNhY2hlIGlzCisgICAgICAgICAgICAgICAgICAgIGhhbmRsZWQgYnkgdGhlIGZ1bmN0aW9uIHNwZWNpZmllZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXItQkJfSEFTSENIRUNLX0ZVTkNUSU9OJz48ZmlsZW5hbWU+QkJfSEFTSENIRUNLX0ZVTkNUSU9OPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgcmV0dXJucyBhIGxpc3Qgb2YgYXZhaWxhYmxlIG9iamVjdHMuCisgICAgICAgICAgICAgICAgICAgIFRoZSBmdW5jdGlvbiBzcGVjaWZpZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyLUJCX1NFVFNDRU5FX0RFUFZBTElEJz48ZmlsZW5hbWU+QkJfU0VUU0NFTkVfREVQVkFMSUQ8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciBhIGdpdmVuCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY3kgbmVlZHMgdG8gYmUgZm9sbG93ZWQsIGFuZCB3aGV0aGVyIGZvciBhbnkgZ2l2ZW4KKyAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwIHRoZSBmdW5jdGlvbiBuZWVkcyB0byBiZSBwYXNzZWQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBmdW5jdGlvbiByZXR1cm5zIGEgVHJ1ZSBvciBGYWxzZSB2YWx1ZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0naW1hZ2VzLWRldi1lbnZpcm9ubWVudCc+CisgICAgICAgICAgICA8dGl0bGU+SW1hZ2VzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGltYWdlcyBwcm9kdWNlZCBieSB0aGUgYnVpbGQgc3lzdGVtIGFyZSBjb21wcmVzc2VkIGZvcm1zCisgICAgICAgICAgICAgICAgb2YgdGhlIHJvb3QgZmlsZXN5c3RlbSBhbmQgYXJlIHJlYWR5IHRvIGJvb3Qgb24gYSB0YXJnZXQKKyAgICAgICAgICAgICAgICBkZXZpY2UuCisgICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnZW5lcmFsLXdvcmtmbG93LWZpZ3VyZSc+Z2VuZXJhbCB3b3JrZmxvdyBmaWd1cmU8L2xpbms+CisgICAgICAgICAgICAgICAgdGhhdCBCaXRCYWtlIG91dHB1dCwgaW4gcGFydCwgY29uc2lzdHMgb2YgaW1hZ2VzLgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiB0YWtlcyBhIGNsb3NlciBsb29rIGF0IHRoaXMgb3V0cHV0OgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9pbWFnZXMucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNS41aW4iIGRlcHRoPSI1LjVpbiIgLz4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgRm9yIGEgbGlzdCBvZiBleGFtcGxlIGltYWdlcyB0aGF0IHRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzLAorICAgICAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWltYWdlcyc+SW1hZ2VzPC91bGluaz4iCisgICAgICAgICAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICAgICAgPC9ub3RlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgcHJvY2VzcyB3cml0ZXMgaW1hZ2VzIG91dCB0byB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgaW5zaWRlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50bXAvZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+LzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZm9sZGVyIGFzIHNob3duIGluIHRoZSBmaWd1cmUuCisgICAgICAgICAgICAgICAgVGhpcyBmb2xkZXIgY29udGFpbnMgYW55IGZpbGVzIGV4cGVjdGVkIHRvIGJlIGxvYWRlZCBvbiB0aGUKKyAgICAgICAgICAgICAgICB0YXJnZXQgZGV2aWNlLgorICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERVBMT1lfRElSJz48ZmlsZW5hbWU+REVQTE9ZX0RJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBwb2ludHMgdG8gdGhlIDxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPiBkaXJlY3RvcnksCisgICAgICAgICAgICAgICAgd2hpbGUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFUExPWV9ESVJfSU1BR0UnPjxmaWxlbmFtZT5ERVBMT1lfRElSX0lNQUdFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlIHBvaW50cyB0byB0aGUgYXBwcm9wcmlhdGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgaW1hZ2VzCisgICAgICAgICAgICAgICAgZm9yIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmtlcm5lbC1pbWFnZTwvcmVwbGFjZWFibGU+OgorICAgICAgICAgICAgICAgICAgICAgICAgQSBrZXJuZWwgYmluYXJ5IGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1LRVJORUxfSU1BR0VUWVBFJz48ZmlsZW5hbWU+S0VSTkVMX0lNQUdFVFlQRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGRldGVybWluZXMgdGhlIG5hbWluZyBzY2hlbWUgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsIGltYWdlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhpcyB2YXJpYWJsZSwgdGhlIGZpbGUgY291bGQgYmVnaW4gd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgYSB2YXJpZXR5IG9mIG5hbWluZyBzdHJpbmdzLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVwbG95L2ltYWdlcy88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBjYW4gY29udGFpbiBtdWx0aXBsZSBpbWFnZSBmaWxlcyBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5yb290LWZpbGVzeXN0ZW0taW1hZ2U8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFJvb3QgZmlsZXN5c3RlbXMgZm9yIHRoZSB0YXJnZXQgZGV2aWNlIChlLmcuCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5leHQzPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4qLmJ6MjwvZmlsZW5hbWU+IGZpbGVzKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlNQUdFX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZGV0ZXJtaW5lcyB0aGUgcm9vdCBmaWxlc3lzdGVtIGltYWdlIHR5cGUuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3kvaW1hZ2VzLzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGNhbiBjb250YWluIG11bHRpcGxlIHJvb3QgZmlsZXN5c3RlbXMgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+a2VybmVsLW1vZHVsZXM8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFRhcmJhbGxzIHRoYXQgY29udGFpbiBhbGwgdGhlIG1vZHVsZXMgYnVpbHQgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsLgorICAgICAgICAgICAgICAgICAgICAgICAgS2VybmVsIG1vZHVsZSB0YXJiYWxscyBleGlzdCBmb3IgbGVnYWN5IHB1cnBvc2VzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgY2FuIGJlIHN1cHByZXNzZWQgYnkgc2V0dGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NT0RVTEVfVEFSQkFMTF9ERVBMT1knPjxmaWxlbmFtZT5NT0RVTEVfVEFSQkFMTF9ERVBMT1k8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byAiMCIuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3kvaW1hZ2VzLzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGNhbiBjb250YWluIG11bHRpcGxlIGtlcm5lbCBtb2R1bGUgdGFyYmFsbHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+Ym9vdGxvYWRlcnM8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIElmIGFwcGxpY2FibGUgdG8gdGhlIHRhcmdldCBtYWNoaW5lLCBib290bG9hZGVycworICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGluZyB0aGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRlcGxveS9pbWFnZXMvPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgY2FuIGNvbnRhaW4gbXVsdGlwbGUgYm9vdGxvYWRlcnMgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+c3ltbGlua3M8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlcGxveS9pbWFnZXMvPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICBmb2xkZXIgY29udGFpbnMgYSBzeW1ib2xpYyBsaW5rIHRoYXQgcG9pbnRzIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgbW9zdCByZWNlbnRseSBidWlsdCBmaWxlIGZvciBlYWNoIG1hY2hpbmUuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSBsaW5rcyBtaWdodCBiZSB1c2VmdWwgZm9yIGV4dGVybmFsIHNjcmlwdHMgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgbmVlZCB0byBvYnRhaW4gdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGVhY2ggZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J3Nkay1kZXYtZW52aXJvbm1lbnQnPgorICAgICAgICAgICAgPHRpdGxlPkFwcGxpY2F0aW9uIERldmVsb3BtZW50IFNESzwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEluIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dlbmVyYWwtd29ya2Zsb3ctZmlndXJlJz5nZW5lcmFsIHdvcmtmbG93IGZpZ3VyZTwvbGluaz4sCisgICAgICAgICAgICAgICAgdGhlIG91dHB1dCBsYWJlbGVkICJBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBTREsiIHJlcHJlc2VudHMgYW4KKyAgICAgICAgICAgICAgICBTREsuCisgICAgICAgICAgICAgICAgVGhlIFNESyBnZW5lcmF0aW9uIHByb2Nlc3MgZGlmZmVycyBkZXBlbmRpbmcgb24gd2hldGhlciB5b3UKKyAgICAgICAgICAgICAgICBidWlsZCBhbiBleHRlbnNpYmxlIFNESyAoZS5nLgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIC1jIHBvcHVsYXRlX3Nka19leHQ8L2ZpbGVuYW1lPiA8cmVwbGFjZWFibGU+aW1hZ2VuYW1lPC9yZXBsYWNlYWJsZT4pCisgICAgICAgICAgICAgICAgb3IgYSBzdGFuZGFyZCBTREsgKGUuZy4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtYyBwb3B1bGF0ZV9zZGs8L2ZpbGVuYW1lPiA8cmVwbGFjZWFibGU+aW1hZ2VuYW1lPC9yZXBsYWNlYWJsZT4pLgorICAgICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiB0YWtlcyBhIGNsb3NlciBsb29rIGF0IHRoaXMgb3V0cHV0OgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9zZGsucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iOWluIiBkZXB0aD0iNy4yNWluIiAvPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgc3BlY2lmaWMgZm9ybSBvZiB0aGlzIG91dHB1dCBpcyBhIHNldCBvZiBmaWxlcyB0aGF0CisgICAgICAgICAgICAgICAgaW5jbHVkZXMgYSBzZWxmLWV4dHJhY3RpbmcgU0RLIGluc3RhbGxlcgorICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Ki5zaDwvZmlsZW5hbWU+KSwgaG9zdCBhbmQgdGFyZ2V0IG1hbmlmZXN0IGZpbGVzLAorICAgICAgICAgICAgICAgIGFuZCBmaWxlcyB1c2VkIGZvciBTREsgdGVzdGluZy4KKyAgICAgICAgICAgICAgICBXaGVuIHRoZSBTREsgaW5zdGFsbGVyIGZpbGUgaXMgcnVuLCBpdCBpbnN0YWxscyB0aGUgU0RLLgorICAgICAgICAgICAgICAgIFRoZSBTREsgY29uc2lzdHMgb2YgYSBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4sIGEgc2V0IG9mCisgICAgICAgICAgICAgICAgbGlicmFyaWVzIGFuZCBoZWFkZXJzLCBhbmQgYW4gU0RLIGVudmlyb25tZW50IHNldHVwIHNjcmlwdC4KKyAgICAgICAgICAgICAgICBSdW5uaW5nIHRoaXMgaW5zdGFsbGVyIGVzc2VudGlhbGx5IHNldHMgdXAgeW91cgorICAgICAgICAgICAgICAgIGNyb3NzLWRldmVsb3BtZW50IGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdGhpbmsgb2YgdGhlIGNyb3NzLXRvb2xjaGFpbiBhcyB0aGUgImhvc3QiCisgICAgICAgICAgICAgICAgcGFydCBiZWNhdXNlIGl0IHJ1bnMgb24gdGhlIFNESyBtYWNoaW5lLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdGhpbmsgb2YgdGhlIGxpYnJhcmllcyBhbmQgaGVhZGVycyBhcyB0aGUgInRhcmdldCIKKyAgICAgICAgICAgICAgICBwYXJ0IGJlY2F1c2UgdGhleSBhcmUgYnVpbHQgZm9yIHRoZSB0YXJnZXQgaGFyZHdhcmUuCisgICAgICAgICAgICAgICAgVGhlIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBpcyBhZGRlZCBzbyB0aGF0IHlvdSBjYW4KKyAgICAgICAgICAgICAgICBpbml0aWFsaXplIHRoZSBlbnZpcm9ubWVudCBiZWZvcmUgdXNpbmcgdGhlIHRvb2xzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHN1cHBvcnRzIHNldmVyYWwgbWV0aG9kcyBieSB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBzZXQgdXAgdGhpcyBjcm9zcy1kZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIG1ldGhvZHMgaW5jbHVkZSBkb3dubG9hZGluZyBwcmUtYnVpbHQgU0RLCisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZXJzIG9yIGJ1aWxkaW5nIGFuZCBpbnN0YWxsaW5nIHlvdXIgb3duIFNESworICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIG9uIGNyb3NzLWRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW5zIGluIHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbi1nZW5lcmF0aW9uJz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW4gR2VuZXJhdGlvbjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBzZXR0aW5nIHVwIGEgY3Jvc3MtZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvbm90ZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQWxsIHRoZSBvdXRwdXQgZmlsZXMgZm9yIGFuIFNESyBhcmUgd3JpdHRlbiB0byB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVwbG95L3NkazwvZmlsZW5hbWU+IGZvbGRlciBpbnNpZGUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgIGFzIHNob3duIGluIHRoZSBwcmV2aW91cyBmaWd1cmUuCisgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIFNESywgc2V2ZXJhbCB2YXJpYWJsZXMgZXhpc3QgdGhhdCBoZWxwCisgICAgICAgICAgICAgICAgY29uZmlndXJlIHRoZXNlIGZpbGVzLgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBzaG93cyB0aGUgdmFyaWFibGVzIGFzc29jaWF0ZWQgd2l0aCBhbgorICAgICAgICAgICAgICAgIGV4dGVuc2libGUgU0RLOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERVBMT1lfRElSJz48ZmlsZW5hbWU+REVQTE9ZX0RJUjwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICBQb2ludHMgdG8gdGhlIDxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNES19FWFRfVFlQRSc+PGZpbGVuYW1lPlNES19FWFRfVFlQRTwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICBDb250cm9scyB3aGV0aGVyIG9yIG5vdCBzaGFyZWQgc3RhdGUgYXJ0aWZhY3RzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgY29waWVkIGludG8gdGhlIGV4dGVuc2libGUgU0RLLgorICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgYWxsIHJlcXVpcmVkIHNoYXJlZCBzdGF0ZSBhcnRpZmFjdHMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICBjb3BpZWQgaW50byB0aGUgU0RLLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtfSU5DTFVERV9QS0dEQVRBJz48ZmlsZW5hbWU+U0RLX0lOQ0xVREVfUEtHREFUQTwvZmlsZW5hbWU+PC91bGluaz46CisgICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgd2hldGhlciBvciBub3QgcGFja2FnZWRhdGEgaXMgaW5jbHVkZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpYmxlIFNESyBmb3IgYWxsIHJlY2lwZXMgaW4gdGhlICJ3b3JsZCIgdGFyZ2V0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtfSU5DTFVERV9UT09MQ0hBSU4nPjxmaWxlbmFtZT5TREtfSU5DTFVERV9UT09MQ0hBSU48L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgb3Igbm90IHRoZSB0b29sY2hhaW4gaXMgaW5jbHVkZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gYnVpbGRpbmcgdGhlIGV4dGVuc2libGUgU0RLLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtfTE9DQUxfQ09ORl9XSElURUxJU1QnPjxmaWxlbmFtZT5TREtfTE9DQUxfQ09ORl9XSElURUxJU1Q8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIHZhcmlhYmxlcyBhbGxvd2VkIHRocm91Z2ggZnJvbSB0aGUgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSBjb25maWd1cmF0aW9uIGludG8gdGhlIGV4dGVuc2libGUgU0RLCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtfTE9DQUxfQ09ORl9CTEFDS0xJU1QnPjxmaWxlbmFtZT5TREtfTE9DQUxfQ09ORl9CTEFDS0xJU1Q8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIHZhcmlhYmxlcyBub3QgYWxsb3dlZCB0aHJvdWdoIGZyb20gdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gY29uZmlndXJhdGlvbiBpbnRvIHRoZSBleHRlbnNpYmxlIFNESworICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLX0lOSEVSSVRfQkxBQ0tMSVNUJz48ZmlsZW5hbWU+U0RLX0lOSEVSSVRfQkxBQ0tMSVNUPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBjbGFzc2VzIHRvIHJlbW92ZSBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUlOSEVSSVQnPjxmaWxlbmFtZT5JTkhFUklUPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgZ2xvYmFsbHkgd2l0aGluIHRoZSBleHRlbnNpYmxlIFNESyBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgVGhpcyBuZXh0IGxpc3QsIHNob3dzIHRoZSB2YXJpYWJsZXMgYXNzb2NpYXRlZCB3aXRoIGEgc3RhbmRhcmQKKyAgICAgICAgICAgICAgICBTREs6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURFUExPWV9ESVInPjxmaWxlbmFtZT5ERVBMT1lfRElSPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFBvaW50cyB0byB0aGUgPGZpbGVuYW1lPmRlcGxveTwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLTUFDSElORSc+PGZpbGVuYW1lPlNES01BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIG1hY2hpbmUgb24gd2hpY2ggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBjcm9zcy1kZXZlbG9wbWVudCB0b29scyBhcmUgcnVuIHRvIGNyZWF0ZSBwYWNrYWdlcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0YXJnZXQgaGFyZHdhcmUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNES0lNQUdFX0ZFQVRVUkVTJz48ZmlsZW5hbWU+U0RLSU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgdGhlIGZlYXR1cmVzIHRvIGluY2x1ZGUgaW4gdGhlICJ0YXJnZXQiIHBhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRPT0xDSEFJTl9IT1NUX1RBU0snPjxmaWxlbmFtZT5UT09MQ0hBSU5fSE9TVF9UQVNLPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIExpc3RzIHBhY2thZ2VzIHRoYXQgbWFrZSB1cCB0aGUgaG9zdCBwYXJ0IG9mIHRoZSBTREsKKyAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIHRoZSBwYXJ0IHRoYXQgcnVucyBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TREtNQUNISU5FPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgdXNlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtYyBwb3B1bGF0ZV9zZGsgPHJlcGxhY2VhYmxlPmltYWdlbmFtZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGNyZWF0ZSB0aGUgU0RLLCBhIHNldCBvZiBkZWZhdWx0IHBhY2thZ2VzIGFwcGx5LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBhbGxvd3MgeW91IHRvIGFkZCBtb3JlIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1UT09MQ0hBSU5fVEFSR0VUX1RBU0snPjxmaWxlbmFtZT5UT09MQ0hBSU5fVEFSR0VUX1RBU0s8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgcGFja2FnZXMgdGhhdCBtYWtlIHVwIHRoZSB0YXJnZXQgcGFydCBvZiB0aGUgU0RLCisgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiB0aGUgcGFydCBidWlsdCBmb3IgdGhlIHRhcmdldCBoYXJkd2FyZSkuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNES1BBVEgnPjxmaWxlbmFtZT5TREtQQVRIPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIGRlZmF1bHQgU0RLIGluc3RhbGxhdGlvbiBwYXRoIG9mZmVyZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBpbnN0YWxsYXRpb24gc2NyaXB0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtfSE9TVF9NQU5JRkVTVCc+PGZpbGVuYW1lPlNES19IT1NUX01BTklGRVNUPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIExpc3RzIGFsbCB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzIHRoYXQgbWFrZSB1cCB0aGUgaG9zdAorICAgICAgICAgICAgICAgICAgICAgICAgcGFydCBvZiB0aGUgU0RLLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBhbHNvIHBsYXlzIGEgbWlub3Igcm9sZSBmb3IgZXh0ZW5zaWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgU0RLIGRldmVsb3BtZW50IGFzIHdlbGwuCisgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBpdCBpcyBtYWlubHkgdXNlZCBmb3IgdGhlIHN0YW5kYXJkIFNESy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLX1RBUkdFVF9NQU5JRkVTVCc+PGZpbGVuYW1lPlNES19UQVJHRVRfTUFOSUZFU1Q8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgYWxsIHRoZSBpbnN0YWxsZWQgcGFja2FnZXMgdGhhdCBtYWtlIHVwIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IHBhcnQgb2YgdGhlIFNESy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgYWxzbyBwbGF5cyBhIG1pbm9yIHJvbGUgZm9yIGV4dGVuc2libGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFNESyBkZXZlbG9wbWVudCBhcyB3ZWxsLgorICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaXQgaXMgbWFpbmx5IHVzZWQgZm9yIHRoZSBzdGFuZGFyZCBTREsuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4tZ2VuZXJhdGlvbiI+CisgICAgICAgIDx0aXRsZT5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW4gR2VuZXJhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBkb2VzIG1vc3Qgb2YgdGhlIHdvcmsgZm9yIHlvdSB3aGVuIGl0IGNvbWVzIHRvCisgICAgICAgICAgICBjcmVhdGluZworICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluJz5jcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW5zPC91bGluaz4uCisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgc29tZSB0ZWNobmljYWwgYmFja2dyb3VuZCBvbiBob3cKKyAgICAgICAgICAgIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbnMgYXJlIGNyZWF0ZWQgYW5kIHVzZWQuCisgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0b29sY2hhaW5zLCB5b3UgY2FuIGFsc28gc2VlIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgorICAgICAgICAgICAgbWFudWFsLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCwgY3Jvc3MtZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgIHRvb2xjaGFpbnMgYXJlIHVzZWQgdG8gYnVpbGQgaW1hZ2VzIGFuZCBhcHBsaWNhdGlvbnMgdGhhdCBydW4KKyAgICAgICAgICAgIG9uIHRoZSB0YXJnZXQgaGFyZHdhcmUuCisgICAgICAgICAgICBXaXRoIGp1c3QgYSBmZXcgY29tbWFuZHMsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNyZWF0ZXMKKyAgICAgICAgICAgIHRoZXNlIG5lY2Vzc2FyeSB0b29sY2hhaW5zIGZvciB5b3UuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZmlndXJlIHNob3dzIGEgaGlnaC1sZXZlbCBidWlsZCBlbnZpcm9ubWVudCByZWdhcmRpbmcKKyAgICAgICAgICAgIHRvb2xjaGFpbiBjb25zdHJ1Y3Rpb24gYW5kIHVzZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbnMucG5nIiB3aWR0aD0iOGluIiBkZXB0aD0iNmluIiBhbGlnbj0iY2VudGVyIiAvPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBNb3N0IG9mIHRoZSB3b3JrIG9jY3VycyBvbiB0aGUgQnVpbGQgSG9zdC4KKyAgICAgICAgICAgIFRoaXMgaXMgdGhlIG1hY2hpbmUgdXNlZCB0byBidWlsZCBpbWFnZXMgYW5kIGdlbmVyYWxseSB3b3JrIHdpdGhpbgorICAgICAgICAgICAgdGhlIHRoZSBZb2N0byBQcm9qZWN0IGVudmlyb25tZW50LgorICAgICAgICAgICAgV2hlbiB5b3UgcnVuCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNiaXRiYWtlLXRlcm0nPkJpdEJha2U8L3VsaW5rPgorICAgICAgICAgICAgdG8gY3JlYXRlIGFuIGltYWdlLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgdXNlcyB0aGUgaG9zdCA8ZmlsZW5hbWU+Z2NjPC9maWxlbmFtZT4gY29tcGlsZXIgdG8gYm9vdHN0cmFwIGEKKyAgICAgICAgICAgIGNyb3NzLWNvbXBpbGVyIG5hbWVkIDxmaWxlbmFtZT5nY2MtY3Jvc3M8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Z2NjLWNyb3NzPC9maWxlbmFtZT4gY29tcGlsZXIgaXMgd2hhdCBCaXRCYWtlIHVzZXMgdG8KKyAgICAgICAgICAgIGNvbXBpbGUgc291cmNlIGZpbGVzIHdoZW4gY3JlYXRpbmcgdGhlIHRhcmdldCBpbWFnZS4KKyAgICAgICAgICAgIFlvdSBjYW4gdGhpbmsgb2YgPGZpbGVuYW1lPmdjYy1jcm9zczwvZmlsZW5hbWU+IHNpbXBseSBhcyBhbgorICAgICAgICAgICAgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgY3Jvc3MtY29tcGlsZXIgdGhhdCBpcyB1c2VkIGludGVybmFsbHkKKyAgICAgICAgICAgIHdpdGhpbiBCaXRCYWtlIG9ubHkuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBUaGUgZXh0ZW5zaWJsZSBTREsgZG9lcyBub3QgdXNlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdjYy1jcm9zcy1jYW5hZGlhbjwvZmlsZW5hbWU+IHNpbmNlIHRoaXMgU0RLCisgICAgICAgICAgICAgICAgc2hpcHMgYSBjb3B5IG9mIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGFuZCB0aGUgc3lzcm9vdAorICAgICAgICAgICAgICAgIHdpdGhpbiBpdCBjb250YWlucyA8ZmlsZW5hbWU+Z2NjLWNyb3NzPC9maWxlbmFtZT4uCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBjaGFpbiBvZiBldmVudHMgdGhhdCBvY2N1cnMgd2hlbiA8ZmlsZW5hbWU+Z2NjLWNyb3NzPC9maWxlbmFtZT4gaXMKKyAgICAgICAgICAgIGJvb3RzdHJhcHBlZCBpcyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBnY2MgLT4gYmludXRpbHMtY3Jvc3MgLT4gZ2NjLWNyb3NzLWluaXRpYWwgLT4gbGludXgtbGliYy1oZWFkZXJzIC0+IGdsaWJjLWluaXRpYWwgLT4gZ2xpYmMgLT4gZ2NjLWNyb3NzIC0+IGdjYy1ydW50aW1lCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdjYzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgaG9zdCdzIEdOVSBDb21waWxlciBDb2xsZWN0aW9uIChHQ0MpLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaW51dGlscy1jcm9zczwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBUaGUgYmFyZSBtaW5pbXVtIGJpbmFyeSB1dGlsaXRpZXMgbmVlZGVkIGluIG9yZGVyIHRvIHJ1bgorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmdjYy1jcm9zcy1pbml0aWFsPC9maWxlbmFtZT4gcGhhc2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGJvb3RzdHJhcCBvcGVyYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdjYy1jcm9zcy1pbml0aWFsPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEFuIGVhcmx5IHN0YWdlIG9mIHRoZSBib290c3RyYXAgcHJvY2VzcyBmb3IgY3JlYXRpbmcKKyAgICAgICAgICAgICAgICAgICAgdGhlIGNyb3NzLWNvbXBpbGVyLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHN0YWdlIGJ1aWxkcyBlbm91Z2ggb2YgdGhlIDxmaWxlbmFtZT5nY2MtY3Jvc3M8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgdGhlIEMgbGlicmFyeSwgYW5kIG90aGVyIHBpZWNlcyBuZWVkZWQgdG8gZmluaXNoIGJ1aWxkaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICBmaW5hbCBjcm9zcy1jb21waWxlciBpbiBsYXRlciBzdGFnZXMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdG9vbCBpcyBhICJuYXRpdmUiIHBhY2thZ2UgKGkuZS4gaXQgaXMgZGVzaWduZWQgdG8gcnVuIG9uCisgICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZCBob3N0KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgtbGliYy1oZWFkZXJzPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIEhlYWRlcnMgbmVlZGVkIGZvciB0aGUgY3Jvc3MtY29tcGlsZXIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdsaWJjLWluaXRpYWw8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgQW4gaW5pdGlhbCB2ZXJzaW9uIG9mIHRoZSBFbWJlZGRlZCBHTlUgQyBMaWJyYXJ5CisgICAgICAgICAgICAgICAgICAgIChHTElCQykgbmVlZGVkIHRvIGJvb3RzdHJhcCA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIEdOVSBDIExpYnJhcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdjYy1jcm9zczwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBUaGUgZmluYWwgc3RhZ2Ugb2YgdGhlIGJvb3RzdHJhcCBwcm9jZXNzIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgY3Jvc3MtY29tcGlsZXIuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgc3RhZ2UgcmVzdWx0cyBpbiB0aGUgYWN0dWFsIGNyb3NzLWNvbXBpbGVyIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSB1c2VzIHdoZW4gaXQgYnVpbGRzIGFuIGltYWdlIGZvciBhIHRhcmdldGVkCisgICAgICAgICAgICAgICAgICAgIGRldmljZS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHJlcGxhY2luZyB0aGlzIGNyb3NzIGNvbXBpbGVyIHRvb2xjaGFpbgorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBhIGN1c3RvbSB2ZXJzaW9uLCB5b3UgbXVzdCByZXBsYWNlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjLWNyb3NzPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB0b29sIGlzIGFsc28gYSAibmF0aXZlIiBwYWNrYWdlIChpLmUuIGl0IGlzCisgICAgICAgICAgICAgICAgICAgIGRlc2lnbmVkIHRvIHJ1biBvbiB0aGUgYnVpbGQgaG9zdCkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdjYy1ydW50aW1lPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWUgbGlicmFyaWVzIHJlc3VsdGluZyBmcm9tIHRoZSB0b29sY2hhaW4gYm9vdHN0cmFwcGluZworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHRvb2wgcHJvZHVjZXMgYSBiaW5hcnkgdGhhdCBjb25zaXN0cyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgcnVudGltZSBsaWJyYXJpZXMgbmVlZCBmb3IgdGhlIHRhcmdldGVkIGRldmljZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gYnVpbGQgYW4gaW5zdGFsbGVyIGZvcgorICAgICAgICAgICAgdGhlIHJlbG9jYXRhYmxlIFNESyB1c2VkIHRvIGRldmVsb3AgYXBwbGljYXRpb25zLgorICAgICAgICAgICAgV2hlbiB5b3UgcnVuIHRoZSBpbnN0YWxsZXIsIGl0IGluc3RhbGxzIHRoZSB0b29sY2hhaW4sIHdoaWNoCisgICAgICAgICAgICBjb250YWlucyB0aGUgZGV2ZWxvcG1lbnQgdG9vbHMgKGUuZy4sCisgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjLWNyb3NzLWNhbmFkaWFuPC9maWxlbmFtZT4sCisgICAgICAgICAgICA8ZmlsZW5hbWU+YmludXRpbHMtY3Jvc3MtY2FuYWRpYW48L2ZpbGVuYW1lPiwgYW5kIG90aGVyCisgICAgICAgICAgICA8ZmlsZW5hbWU+bmF0aXZlc2RrLSo8L2ZpbGVuYW1lPiB0b29scyksCisgICAgICAgICAgICB3aGljaCBhcmUgdG9vbHMgbmF0aXZlIHRvIHRoZSBTREsgKGkuZS4gbmF0aXZlIHRvCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLX0FSQ0gnPjxmaWxlbmFtZT5TREtfQVJDSDwvZmlsZW5hbWU+PC91bGluaz4pLAorICAgICAgICAgICAgeW91IG5lZWQgdG8gY3Jvc3MtY29tcGlsZSBhbmQgdGVzdCB5b3VyIHNvZnR3YXJlLgorICAgICAgICAgICAgVGhlIGZpZ3VyZSBzaG93cyB0aGUgY29tbWFuZHMgeW91IHVzZSB0byBlYXNpbHkgYnVpbGQgb3V0IHRoaXMKKyAgICAgICAgICAgIHRvb2xjaGFpbi4KKyAgICAgICAgICAgIFRoaXMgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluIGlzIGJ1aWx0IHRvIGV4ZWN1dGUgb24gdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLTUFDSElORSc+PGZpbGVuYW1lPlNES01BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgd2hpY2ggbWlnaHQgb3IgbWlnaHQgbm90IGJlIHRoZSBzYW1lCisgICAgICAgICAgICBtYWNoaW5lIGFzIHRoZSBCdWlsZCBIb3N0LgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgSWYgeW91ciB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgWW9jdG8gUHJvamVjdCwKKyAgICAgICAgICAgICAgICB5b3UgY2FuIHRha2UgYWR2YW50YWdlIG9mIHByZS1idWlsdCBpbWFnZXMgdGhhdCBzaGlwIHdpdGggdGhlCisgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBhbmQgYWxyZWFkeSBjb250YWluIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbgorICAgICAgICAgICAgICAgIGluc3RhbGxlcnMuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEhlcmUgaXMgdGhlIGJvb3RzdHJhcCBwcm9jZXNzIGZvciB0aGUgcmVsb2NhdGFibGUgdG9vbGNoYWluOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBnY2MgLT4gYmludXRpbHMtY3Jvc3NzZGsgLT4gZ2NjLWNyb3Nzc2RrLWluaXRpYWwgLT4gbGludXgtbGliYy1oZWFkZXJzIC0+CisgICAgICAgIGdsaWJjLWluaXRpYWwgLT4gbmF0aXZlc2RrLWdsaWJjIC0+IGdjYy1jcm9zc3NkayAtPiBnY2MtY3Jvc3MtY2FuYWRpYW4KKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBob3N0J3MgR05VIENvbXBpbGVyIENvbGxlY3Rpb24gKEdDQykuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpbnV0aWxzLWNyb3Nzc2RrPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFRoZSBiYXJlIG1pbmltdW0gYmluYXJ5IHV0aWxpdGllcyBuZWVkZWQgaW4gb3JkZXIgdG8gcnVuCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Z2NjLWNyb3Nzc2RrLWluaXRpYWw8L2ZpbGVuYW1lPiBwaGFzZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgYm9vdHN0cmFwIG9wZXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjLWNyb3Nzc2RrLWluaXRpYWw8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgQW4gZWFybHkgc3RhZ2Ugb2YgdGhlIGJvb3RzdHJhcCBwcm9jZXNzIGZvciBjcmVhdGluZworICAgICAgICAgICAgICAgICAgICB0aGUgY3Jvc3MtY29tcGlsZXIuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgc3RhZ2UgYnVpbGRzIGVub3VnaCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdjYy1jcm9zc3NkazwvZmlsZW5hbWU+IGFuZCBzdXBwb3J0aW5nIHBpZWNlcyBzbyB0aGF0CisgICAgICAgICAgICAgICAgICAgIHRoZSBmaW5hbCBzdGFnZSBvZiB0aGUgYm9vdHN0cmFwIHByb2Nlc3MgY2FuIHByb2R1Y2UgdGhlCisgICAgICAgICAgICAgICAgICAgIGZpbmlzaGVkIGNyb3NzLWNvbXBpbGVyLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHRvb2wgaXMgYSAibmF0aXZlIiBiaW5hcnkgdGhhdCBydW5zIG9uIHRoZSBidWlsZCBob3N0LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC1saWJjLWhlYWRlcnM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgSGVhZGVycyBuZWVkZWQgZm9yIHRoZSBjcm9zcy1jb21waWxlci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2xpYmMtaW5pdGlhbDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBBbiBpbml0aWFsIHZlcnNpb24gb2YgdGhlIEVtYmVkZGVkIEdMSUJDIG5lZWRlZCB0byBib290c3RyYXAKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5hdGl2ZXNkay1nbGliYzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5uYXRpdmVzZGstZ2xpYmM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIEVtYmVkZGVkIEdMSUJDIG5lZWRlZCB0byBib290c3RyYXAgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nY2MtY3Jvc3NzZGs8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjLWNyb3Nzc2RrPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFRoZSBmaW5hbCBzdGFnZSBvZiB0aGUgYm9vdHN0cmFwIHByb2Nlc3MgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICByZWxvY2F0YWJsZSBjcm9zcy1jb21waWxlci4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5nY2MtY3Jvc3NzZGs8L2ZpbGVuYW1lPiBpcyBhIHRyYW5zaXRvcnkKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIgYW5kIG5ldmVyIGxlYXZlcyB0aGUgYnVpbGQgaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgSXRzIHB1cnBvc2UgaXMgdG8gaGVscCBpbiB0aGUgYm9vdHN0cmFwIHByb2Nlc3MgdG8gY3JlYXRlCisgICAgICAgICAgICAgICAgICAgIHRoZSBldmVudHVhbCA8ZmlsZW5hbWU+Z2NjLWNyb3NzLWNhbmFkaWFuPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIsIHdoaWNoIGlzIHJlbG9jYXRhYmxlLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHRvb2wgaXMgYWxzbyBhICJuYXRpdmUiIHBhY2thZ2UgKGkuZS4gaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgZGVzaWduZWQgdG8gcnVuIG9uIHRoZSBidWlsZCBob3N0KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjLWNyb3NzLWNhbmFkaWFuPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIFRoZSBmaW5hbCByZWxvY2F0YWJsZSBjcm9zcy1jb21waWxlci4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBydW4gb24gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtNQUNISU5FJz48ZmlsZW5hbWU+U0RLTUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgIHRoaXMgdG9vbAorICAgICAgICAgICAgICAgICAgICBwcm9kdWNlcyBleGVjdXRhYmxlIGNvZGUgdGhhdCBydW5zIG9uIHRoZSB0YXJnZXQgZGV2aWNlLgorICAgICAgICAgICAgICAgICAgICBPbmx5IG9uZSBjcm9zcy1jYW5hZGlhbiBjb21waWxlciBpcyBwcm9kdWNlZCBwZXIgYXJjaGl0ZWN0dXJlCisgICAgICAgICAgICAgICAgICAgIHNpbmNlIHRoZXkgY2FuIGJlIHRhcmdldGVkIGF0IGRpZmZlcmVudCBwcm9jZXNzb3Igb3B0aW1pemF0aW9ucworICAgICAgICAgICAgICAgICAgICB1c2luZyBjb25maWd1cmF0aW9ucyBwYXNzZWQgdG8gdGhlIGNvbXBpbGVyIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgIGNvbXBpbGUgY29tbWFuZHMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY2lyY3VtdmVudHMgdGhlIG5lZWQgZm9yIG11bHRpcGxlIGNvbXBpbGVycyBhbmQgdGh1cworICAgICAgICAgICAgICAgICAgICByZWR1Y2VzIHRoZSBzaXplIG9mIHRoZSB0b29sY2hhaW5zLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gYWR2YW50YWdlcyBnYWluZWQgd2hlbiBidWlsZGluZyBhCisgICAgICAgICAgICBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4gaW5zdGFsbGVyLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWJ1aWxkaW5nLWFuLXNkay1pbnN0YWxsZXInPkJ1aWxkaW5nIGFuIFNESyBJbnN0YWxsZXI8L3VsaW5rPiIKKyAgICAgICAgICAgIGFwcGVuZGl4IGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKKyAgICAgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ic2hhcmVkLXN0YXRlLWNhY2hlIj4KKyAgICAgICAgPHRpdGxlPlNoYXJlZCBTdGF0ZSBDYWNoZTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBCeSBkZXNpZ24sIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGJ1aWxkcyBldmVyeXRoaW5nIGZyb20KKyAgICAgICAgICAgIHNjcmF0Y2ggdW5sZXNzCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNiaXRiYWtlLXRlcm0nPkJpdEJha2U8L3VsaW5rPgorICAgICAgICAgICAgY2FuIGRldGVybWluZSB0aGF0IHBhcnRzIGRvIG5vdCBuZWVkIHRvIGJlIHJlYnVpbHQuCisgICAgICAgICAgICBGdW5kYW1lbnRhbGx5LCBidWlsZGluZyBmcm9tIHNjcmF0Y2ggaXMgYXR0cmFjdGl2ZSBhcyBpdCBtZWFucyBhbGwKKyAgICAgICAgICAgIHBhcnRzIGFyZSBidWlsdCBmcmVzaCBhbmQgbm8gcG9zc2liaWxpdHkgb2Ygc3RhbGUgZGF0YSBleGlzdHMgdGhhdAorICAgICAgICAgICAgY2FuIGNhdXNlIHByb2JsZW1zLgorICAgICAgICAgICAgV2hlbiBkZXZlbG9wZXJzIGhpdCBwcm9ibGVtcywgdGhleSB0eXBpY2FsbHkgZGVmYXVsdCBiYWNrIHRvCisgICAgICAgICAgICBidWlsZGluZyBmcm9tIHNjcmF0Y2ggc28gdGhleSBoYXZlIGEga25vdyBzdGF0ZSBmcm9tIHRoZQorICAgICAgICAgICAgc3RhcnQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJ1aWxkaW5nIGFuIGltYWdlIGZyb20gc2NyYXRjaCBpcyBib3RoIGFuIGFkdmFudGFnZSBhbmQgYQorICAgICAgICAgICAgZGlzYWR2YW50YWdlIHRvIHRoZSBwcm9jZXNzLgorICAgICAgICAgICAgQXMgbWVudGlvbmVkIGluIHRoZSBwcmV2aW91cyBwYXJhZ3JhcGgsIGJ1aWxkaW5nIGZyb20gc2NyYXRjaAorICAgICAgICAgICAgZW5zdXJlcyB0aGF0IGV2ZXJ5dGhpbmcgaXMgY3VycmVudCBhbmQgc3RhcnRzIGZyb20gYSBrbm93biBzdGF0ZS4KKyAgICAgICAgICAgIEhvd2V2ZXIsIGJ1aWxkaW5nIGZyb20gc2NyYXRjaCBhbHNvIHRha2VzIG11Y2ggbG9uZ2VyIGFzIGl0CisgICAgICAgICAgICBnZW5lcmFsbHkgbWVhbnMgcmVidWlsZGluZyB0aGluZ3MgdGhhdCBkbyBub3QgbmVjZXNzYXJpbHkgbmVlZAorICAgICAgICAgICAgdG8gYmUgcmVidWlsdC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaW1wbGVtZW50cyBzaGFyZWQgc3RhdGUgY29kZSB0aGF0IHN1cHBvcnRzCisgICAgICAgICAgICBpbmNyZW1lbnRhbCBidWlsZHMuCisgICAgICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHNoYXJlZCBzdGF0ZSBjb2RlIGFuc3dlcnMgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgcXVlc3Rpb25zIHRoYXQgd2VyZSBmdW5kYW1lbnRhbCByb2FkYmxvY2tzIHdpdGhpbiB0aGUgT3BlbkVtYmVkZGVkCisgICAgICAgICAgICBpbmNyZW1lbnRhbCBidWlsZCBzdXBwb3J0IHN5c3RlbToKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaGF0IHBpZWNlcyBvZiB0aGUgc3lzdGVtIGhhdmUgY2hhbmdlZCBhbmQgd2hhdCBwaWVjZXMgaGF2ZQorICAgICAgICAgICAgICAgICAgICBub3QgY2hhbmdlZD8KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBIb3cgYXJlIGNoYW5nZWQgcGllY2VzIG9mIHNvZnR3YXJlIHJlbW92ZWQgYW5kIHJlcGxhY2VkPworICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEhvdyBhcmUgcHJlLWJ1aWx0IGNvbXBvbmVudHMgdGhhdCBkbyBub3QgbmVlZCB0byBiZSByZWJ1aWx0CisgICAgICAgICAgICAgICAgICAgIGZyb20gc2NyYXRjaCB1c2VkIHdoZW4gdGhleSBhcmUgYXZhaWxhYmxlPworICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgdGhlIGZpcnN0IHF1ZXN0aW9uLCB0aGUgYnVpbGQgc3lzdGVtIGRldGVjdHMgY2hhbmdlcyBpbiB0aGUKKyAgICAgICAgICAgICJpbnB1dHMiIHRvIGEgZ2l2ZW4gdGFzayBieSBjcmVhdGluZyBhIGNoZWNrc3VtIChvciBzaWduYXR1cmUpIG9mCisgICAgICAgICAgICB0aGUgdGFzaydzIGlucHV0cy4KKyAgICAgICAgICAgIElmIHRoZSBjaGVja3N1bSBjaGFuZ2VzLCB0aGUgc3lzdGVtIGFzc3VtZXMgdGhlIGlucHV0cyBoYXZlIGNoYW5nZWQKKyAgICAgICAgICAgIGFuZCB0aGUgdGFzayBuZWVkcyB0byBiZSByZXJ1bi4KKyAgICAgICAgICAgIEZvciB0aGUgc2Vjb25kIHF1ZXN0aW9uLCB0aGUgc2hhcmVkIHN0YXRlIChzc3RhdGUpIGNvZGUgdHJhY2tzCisgICAgICAgICAgICB3aGljaCB0YXNrcyBhZGQgd2hpY2ggb3V0cHV0IHRvIHRoZSBidWlsZCBwcm9jZXNzLgorICAgICAgICAgICAgVGhpcyBtZWFucyB0aGUgb3V0cHV0IGZyb20gYSBnaXZlbiB0YXNrIGNhbiBiZSByZW1vdmVkLCB1cGdyYWRlZAorICAgICAgICAgICAgb3Igb3RoZXJ3aXNlIG1hbmlwdWxhdGVkLgorICAgICAgICAgICAgVGhlIHRoaXJkIHF1ZXN0aW9uIGlzIHBhcnRseSBhZGRyZXNzZWQgYnkgdGhlIHNvbHV0aW9uIGZvciB0aGUKKyAgICAgICAgICAgIHNlY29uZCBxdWVzdGlvbiBhc3N1bWluZyB0aGUgYnVpbGQgc3lzdGVtIGNhbiBmZXRjaCB0aGUgc3N0YXRlCisgICAgICAgICAgICBvYmplY3RzIGZyb20gcmVtb3RlIGxvY2F0aW9ucyBhbmQgaW5zdGFsbCB0aGVtIGlmIHRoZXkgYXJlIGRlZW1lZAorICAgICAgICAgICAgdG8gYmUgdmFsaWQuCisgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gZG9lcyBub3QgbWFpbnRhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gYXMgcGFydCBvZiB0aGUgc2hhcmVkIHN0YXRlIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCBjb25zaWRlcmF0aW9ucyBleGlzdCB0aGF0IGFmZmVjdAorICAgICAgICAgICAgICAgICAgICAgICAgbWFpbnRhaW5pbmcgc2hhcmVkIHN0YXRlIGZlZWRzLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0aGUgYnVpbGQgc3lzdGVtIHdvcmtzIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIGFuZCBjYW4gdHJhY2sgaW5jcmVtZW50aW5nCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPiBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYXV0b21hdGljYWxseS1pbmNyZW1lbnRpbmctYS1iaW5hcnktcGFja2FnZS1yZXZpc2lvbi1udW1iZXInPkF1dG9tYXRpY2FsbHkgSW5jcmVtZW50aW5nIGEgQmluYXJ5IFBhY2thZ2UgUmV2aXNpb24gTnVtYmVyPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY29kZSBpbiB0aGUgYnVpbGQgc3lzdGVtIHRoYXQgc3VwcG9ydHMgaW5jcmVtZW50YWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkcyBpcyBub3Qgc2ltcGxlIGNvZGUuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGVjaG5pcXVlcyB0aGF0IGhlbHAgeW91IHdvcmsgYXJvdW5kIGlzc3VlcyByZWxhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICB0byBzaGFyZWQgc3RhdGUgY29kZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi12aWV3aW5nLW1ldGFkYXRhLXVzZWQtdG8tY3JlYXRlLXRoZS1pbnB1dC1zaWduYXR1cmUtb2YtYS1zaGFyZWQtc3RhdGUtdGFzayc+Vmlld2luZyBNZXRhZGF0YSBVc2VkIHRvIENyZWF0ZSB0aGUgSW5wdXQgU2lnbmF0dXJlIG9mIGEgU2hhcmVkIFN0YXRlIFRhc2s8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1pbnZhbGlkYXRpbmctc2hhcmVkLXN0YXRlLXRvLWZvcmNlLWEtdGFzay10by1ydW4nPkludmFsaWRhdGluZyBTaGFyZWQgU3RhdGUgdG8gRm9yY2UgYSBUYXNrIHRvIFJ1bjwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMgYm90aCBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcworICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSByZXN0IG9mIHRoaXMgc2VjdGlvbiBnb2VzIGludG8gZGV0YWlsIGFib3V0IHRoZSBvdmVyYWxsCisgICAgICAgICAgICBpbmNyZW1lbnRhbCBidWlsZCBhcmNoaXRlY3R1cmUsIHRoZSBjaGVja3N1bXMgKHNpZ25hdHVyZXMpLCBhbmQKKyAgICAgICAgICAgIHNoYXJlZCBzdGF0ZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdjb25jZXB0cy1vdmVyYWxsLWFyY2hpdGVjdHVyZSc+CisgICAgICAgICAgICA8dGl0bGU+T3ZlcmFsbCBBcmNoaXRlY3R1cmU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBXaGVuIGRldGVybWluaW5nIHdoYXQgcGFydHMgb2YgdGhlIHN5c3RlbSBuZWVkIHRvIGJlIGJ1aWx0LAorICAgICAgICAgICAgICAgIEJpdEJha2Ugd29ya3Mgb24gYSBwZXItdGFzayBiYXNpcyByYXRoZXIgdGhhbiBhIHBlci1yZWNpcGUKKyAgICAgICAgICAgICAgICBiYXNpcy4KKyAgICAgICAgICAgICAgICBZb3UgbWlnaHQgd29uZGVyIHdoeSB1c2luZyBhIHBlci10YXNrIGJhc2lzIGlzIHByZWZlcnJlZCBvdmVyCisgICAgICAgICAgICAgICAgYSBwZXItcmVjaXBlIGJhc2lzLgorICAgICAgICAgICAgICAgIFRvIGhlbHAgZXhwbGFpbiwgY29uc2lkZXIgaGF2aW5nIHRoZSBJUEsgcGFja2FnaW5nIGJhY2tlbmQKKyAgICAgICAgICAgICAgICBlbmFibGVkIGFuZCB0aGVuIHN3aXRjaGluZyB0byBERUIuCisgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtaW5zdGFsbCc+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXBhY2thZ2UnPjxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHRhc2sgb3V0cHV0cyBhcmUgc3RpbGwgdmFsaWQuCisgICAgICAgICAgICAgICAgSG93ZXZlciwgd2l0aCBhIHBlci1yZWNpcGUgYXBwcm9hY2gsIHRoZSBidWlsZCB3b3VsZCBub3QKKyAgICAgICAgICAgICAgICBpbmNsdWRlIHRoZSA8ZmlsZW5hbWU+LmRlYjwvZmlsZW5hbWU+IGZpbGVzLgorICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IHdvdWxkIGhhdmUgdG8gaW52YWxpZGF0ZSB0aGUgd2hvbGUgYnVpbGQgYW5kCisgICAgICAgICAgICAgICAgcmVydW4gaXQuCisgICAgICAgICAgICAgICAgUmVydW5uaW5nIGV2ZXJ5dGhpbmcgaXMgbm90IHRoZSBiZXN0IHNvbHV0aW9uLgorICAgICAgICAgICAgICAgIEFsc28sIGluIHRoaXMgY2FzZSwgdGhlIGNvcmUgbXVzdCBiZSAidGF1Z2h0IiBtdWNoIGFib3V0CisgICAgICAgICAgICAgICAgc3BlY2lmaWMgdGFza3MuCisgICAgICAgICAgICAgICAgVGhpcyBtZXRob2RvbG9neSBkb2VzIG5vdCBzY2FsZSB3ZWxsIGFuZCBkb2VzIG5vdCBhbGxvdyB1c2VycworICAgICAgICAgICAgICAgIHRvIGVhc2lseSBhZGQgbmV3IHRhc2tzIGluIGxheWVycyBvciBhcyBleHRlcm5hbCByZWNpcGVzCisgICAgICAgICAgICAgICAgd2l0aG91dCB0b3VjaGluZyB0aGUgcGFja2FnZWQtc3RhZ2luZyBjb3JlLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J292ZXJ2aWV3LWNoZWNrc3Vtcyc+CisgICAgICAgICAgICA8dGl0bGU+Q2hlY2tzdW1zIChTaWduYXR1cmVzKTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBzaGFyZWQgc3RhdGUgY29kZSB1c2VzIGEgY2hlY2tzdW0sIHdoaWNoIGlzIGEgdW5pcXVlCisgICAgICAgICAgICAgICAgc2lnbmF0dXJlIG9mIGEgdGFzaydzIGlucHV0cywgdG8gZGV0ZXJtaW5lIGlmIGEgdGFzayBuZWVkcyB0bworICAgICAgICAgICAgICAgIGJlIHJ1biBhZ2Fpbi4KKyAgICAgICAgICAgICAgICBCZWNhdXNlIGl0IGlzIGEgY2hhbmdlIGluIGEgdGFzaydzIGlucHV0cyB0aGF0IHRyaWdnZXJzIGEKKyAgICAgICAgICAgICAgICByZXJ1biwgdGhlIHByb2Nlc3MgbmVlZHMgdG8gZGV0ZWN0IGFsbCB0aGUgaW5wdXRzIHRvIGEgZ2l2ZW4KKyAgICAgICAgICAgICAgICB0YXNrLgorICAgICAgICAgICAgICAgIEZvciBzaGVsbCB0YXNrcywgdGhpcyB0dXJucyBvdXQgdG8gYmUgZmFpcmx5IGVhc3kgYmVjYXVzZQorICAgICAgICAgICAgICAgIHRoZSBidWlsZCBwcm9jZXNzIGdlbmVyYXRlcyBhICJydW4iIHNoZWxsIHNjcmlwdCBmb3IgZWFjaCB0YXNrCisgICAgICAgICAgICAgICAgYW5kIGl0IGlzIHBvc3NpYmxlIHRvIGNyZWF0ZSBhIGNoZWNrc3VtIHRoYXQgZ2l2ZXMgeW91IGEgZ29vZAorICAgICAgICAgICAgICAgIGlkZWEgb2Ygd2hlbiB0aGUgdGFzaydzIGRhdGEgY2hhbmdlcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVG8gY29tcGxpY2F0ZSB0aGUgcHJvYmxlbSwgdGhlcmUgYXJlIHRoaW5ncyB0aGF0IHNob3VsZCBub3QgYmUKKyAgICAgICAgICAgICAgICBpbmNsdWRlZCBpbiB0aGUgY2hlY2tzdW0uCisgICAgICAgICAgICAgICAgRmlyc3QsIHRoZXJlIGlzIHRoZSBhY3R1YWwgc3BlY2lmaWMgYnVpbGQgcGF0aCBvZiBhIGdpdmVuCisgICAgICAgICAgICAgICAgdGFzayAtIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgSXQgZG9lcyBub3QgbWF0dGVyIGlmIHRoZSB3b3JrIGRpcmVjdG9yeSBjaGFuZ2VzIGJlY2F1c2UgaXQKKyAgICAgICAgICAgICAgICBzaG91bGQgbm90IGFmZmVjdCB0aGUgb3V0cHV0IGZvciB0YXJnZXQgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgQWxzbywgdGhlIGJ1aWxkIHByb2Nlc3MgaGFzIHRoZSBvYmplY3RpdmUgb2YgbWFraW5nIG5hdGl2ZQorICAgICAgICAgICAgICAgIG9yIGNyb3NzIHBhY2thZ2VzIHJlbG9jYXRhYmxlLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBCb3RoIG5hdGl2ZSBhbmQgY3Jvc3MgcGFja2FnZXMgcnVuIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+YnVpbGQgaG9zdDwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBjcm9zcyBwYWNrYWdlcyBnZW5lcmF0ZSBvdXRwdXQgZm9yIHRoZSB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICBUaGUgY2hlY2tzdW0gdGhlcmVmb3JlIG5lZWRzIHRvIGV4Y2x1ZGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFRoZSBzaW1wbGlzdGljIGFwcHJvYWNoIGZvciBleGNsdWRpbmcgdGhlIHdvcmsgZGlyZWN0b3J5IGlzIHRvCisgICAgICAgICAgICAgICAgc2V0IDxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT4gdG8gc29tZSBmaXhlZCB2YWx1ZSBhbmQKKyAgICAgICAgICAgICAgICBjcmVhdGUgdGhlIGNoZWNrc3VtIGZvciB0aGUgInJ1biIgc2NyaXB0LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBBbm90aGVyIHByb2JsZW0gcmVzdWx0cyBmcm9tIHRoZSAicnVuIiBzY3JpcHRzIGNvbnRhaW5pbmcKKyAgICAgICAgICAgICAgICBmdW5jdGlvbnMgdGhhdCBtaWdodCBvciBtaWdodCBub3QgZ2V0IGNhbGxlZC4KKyAgICAgICAgICAgICAgICBUaGUgaW5jcmVtZW50YWwgYnVpbGQgc29sdXRpb24gY29udGFpbnMgY29kZSB0aGF0IGZpZ3VyZXMgb3V0CisgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzIGJldHdlZW4gc2hlbGwgZnVuY3Rpb25zLgorICAgICAgICAgICAgICAgIFRoaXMgY29kZSBpcyB1c2VkIHRvIHBydW5lIHRoZSAicnVuIiBzY3JpcHRzIGRvd24gdG8gdGhlCisgICAgICAgICAgICAgICAgbWluaW11bSBzZXQsIHRoZXJlYnkgYWxsZXZpYXRpbmcgdGhpcyBwcm9ibGVtIGFuZCBtYWtpbmcgdGhlCisgICAgICAgICAgICAgICAgInJ1biIgc2NyaXB0cyBtdWNoIG1vcmUgcmVhZGFibGUgYXMgYSBib251cy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgU28gZmFyLCBzb2x1dGlvbnMgZm9yIHNoZWxsIHNjcmlwdHMgZXhpc3QuCisgICAgICAgICAgICAgICAgV2hhdCBhYm91dCBQeXRob24gdGFza3M/CisgICAgICAgICAgICAgICAgVGhlIHNhbWUgYXBwcm9hY2ggYXBwbGllcyBldmVuIHRob3VnaCB0aGVzZSB0YXNrcyBhcmUgbW9yZQorICAgICAgICAgICAgICAgIGRpZmZpY3VsdC4KKyAgICAgICAgICAgICAgICBUaGUgcHJvY2VzcyBuZWVkcyB0byBmaWd1cmUgb3V0IHdoYXQgdmFyaWFibGVzIGEgUHl0aG9uCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gYWNjZXNzZXMgYW5kIHdoYXQgZnVuY3Rpb25zIGl0IGNhbGxzLgorICAgICAgICAgICAgICAgIEFnYWluLCB0aGUgaW5jcmVtZW50YWwgYnVpbGQgc29sdXRpb24gY29udGFpbnMgY29kZSB0aGF0IGZpcnN0CisgICAgICAgICAgICAgICAgZmlndXJlcyBvdXQgdGhlIHZhcmlhYmxlIGFuZCBmdW5jdGlvbiBkZXBlbmRlbmNpZXMsIGFuZCB0aGVuCisgICAgICAgICAgICAgICAgY3JlYXRlcyBhIGNoZWNrc3VtIGZvciB0aGUgZGF0YSB1c2VkIGFzIHRoZSBpbnB1dCB0byB0aGUgdGFzay4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgTGlrZSB0aGUgPGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPiBjYXNlLCBzaXR1YXRpb25zIGV4aXN0CisgICAgICAgICAgICAgICAgd2hlcmUgZGVwZW5kZW5jaWVzIHNob3VsZCBiZSBpZ25vcmVkLgorICAgICAgICAgICAgICAgIEZvciB0aGVzZSBzaXR1YXRpb25zLCB5b3UgY2FuIGluc3RydWN0IHRoZSBidWlsZCBwcm9jZXNzIHRvCisgICAgICAgICAgICAgICAgaWdub3JlIGEgZGVwZW5kZW5jeSBieSB1c2luZyBhIGxpbmUgbGlrZSB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUEFDS0FHRV9BUkNIU1t2YXJkZXBzZXhjbHVkZV0gPSAiTUFDSElORSIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIGVuc3VyZXMgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRV9BUkNIUyc+PGZpbGVuYW1lPlBBQ0tBR0VfQVJDSFM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdmFyaWFibGUgZG9lcyBub3QgZGVwZW5kIG9uIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICAgICAgZXZlbiBpZiBpdCBkb2VzIHJlZmVyZW5jZSBpdC4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRXF1YWxseSwgdGhlcmUgYXJlIGNhc2VzIHdoZXJlIHlvdSBuZWVkIHRvIGFkZCBkZXBlbmRlbmNpZXMKKyAgICAgICAgICAgICAgICBCaXRCYWtlIGlzIG5vdCBhYmxlIHRvIGZpbmQuCisgICAgICAgICAgICAgICAgWW91IGNhbiBhY2NvbXBsaXNoIHRoaXMgYnkgdXNpbmcgYSBsaW5lIGxpa2UgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICBQQUNLQUdFX0FSQ0hTW3ZhcmRlcHNdID0gIk1BQ0hJTkUiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBleHBsaWNpdGx5IGFkZHMgdGhlIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBhcyBhIGRlcGVuZGVuY3kgZm9yCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VfQVJDSFM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgY29uc2lkZXIgYSBjYXNlIHdpdGggaW4tbGluZSBQeXRob24gd2hlcmUKKyAgICAgICAgICAgICAgICBCaXRCYWtlIGlzIG5vdCBhYmxlIHRvIGZpZ3VyZSBvdXQgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgICAgIFdoZW4gcnVubmluZyBpbiBkZWJ1ZyBtb2RlIChpLmUuIHVzaW5nCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1EREQ8L2ZpbGVuYW1lPiksIEJpdEJha2UgcHJvZHVjZXMgb3V0cHV0IHdoZW4gaXQKKyAgICAgICAgICAgICAgICBkaXNjb3ZlcnMgc29tZXRoaW5nIGZvciB3aGljaCBpdCBjYW5ub3QgZmlndXJlIG91dCBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdGVhbSBoYXMgY3VycmVudGx5IG5vdCBtYW5hZ2VkIHRvIGNvdmVyCisgICAgICAgICAgICAgICAgdGhvc2UgZGVwZW5kZW5jaWVzIGluIGRldGFpbCBhbmQgaXMgYXdhcmUgb2YgdGhlIG5lZWQgdG8gZml4CisgICAgICAgICAgICAgICAgdGhpcyBzaXR1YXRpb24uCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRodXMgZmFyLCB0aGlzIHNlY3Rpb24gaGFzIGxpbWl0ZWQgZGlzY3Vzc2lvbiB0byB0aGUgZGlyZWN0CisgICAgICAgICAgICAgICAgaW5wdXRzIGludG8gYSB0YXNrLgorICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uIGJhc2VkIG9uIGRpcmVjdCBpbnB1dHMgaXMgcmVmZXJyZWQgdG8gYXMgdGhlCisgICAgICAgICAgICAgICAgImJhc2VoYXNoIiBpbiB0aGUgY29kZS4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgcXVlc3Rpb24gb2YgYSB0YXNrJ3MgaW5kaXJlY3QgaW5wdXRzIHN0aWxsCisgICAgICAgICAgICAgICAgZXhpdHMgLSBpdGVtcyBhbHJlYWR5IGJ1aWx0IGFuZCBwcmVzZW50IGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgVGhlIGNoZWNrc3VtIChvciBzaWduYXR1cmUpIGZvciBhIHBhcnRpY3VsYXIgdGFzayBuZWVkcyB0byBhZGQKKyAgICAgICAgICAgICAgICB0aGUgaGFzaGVzIG9mIGFsbCB0aGUgdGFza3Mgb24gd2hpY2ggdGhlIHBhcnRpY3VsYXIgdGFzaworICAgICAgICAgICAgICAgIGRlcGVuZHMuCisgICAgICAgICAgICAgICAgQ2hvb3Npbmcgd2hpY2ggZGVwZW5kZW5jaWVzIHRvIGFkZCBpcyBhIHBvbGljeSBkZWNpc2lvbi4KKyAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgZWZmZWN0IGlzIHRvIGdlbmVyYXRlIGEgbWFzdGVyIGNoZWNrc3VtIHRoYXQKKyAgICAgICAgICAgICAgICBjb21iaW5lcyB0aGUgYmFzZWhhc2ggYW5kIHRoZSBoYXNoZXMgb2YgdGhlIHRhc2sncworICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQXQgdGhlIGNvZGUgbGV2ZWwsIGEgdmFyaWV0eSBvZiB3YXlzIGV4aXN0IGJ5IHdoaWNoIGJvdGggdGhlCisgICAgICAgICAgICAgICAgYmFzZWhhc2ggYW5kIHRoZSBkZXBlbmRlbnQgdGFzayBoYXNoZXMgY2FuIGJlIGluZmx1ZW5jZWQuCisgICAgICAgICAgICAgICAgV2l0aGluIHRoZSBCaXRCYWtlIGNvbmZpZ3VyYXRpb24gZmlsZSwgeW91IGNhbiBnaXZlIEJpdEJha2UKKyAgICAgICAgICAgICAgICBzb21lIGV4dHJhIGluZm9ybWF0aW9uIHRvIGhlbHAgaXQgY29uc3RydWN0IHRoZSBiYXNlaGFzaC4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHN0YXRlbWVudCBlZmZlY3RpdmVseSByZXN1bHRzIGluIGEgbGlzdCBvZgorICAgICAgICAgICAgICAgIGdsb2JhbCB2YXJpYWJsZSBkZXBlbmRlbmN5IGV4Y2x1ZGVzIChpLmUuIHZhcmlhYmxlcyBuZXZlcgorICAgICAgICAgICAgICAgIGluY2x1ZGVkIGluIGFueSBjaGVja3N1bSk6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCQl9IQVNIQkFTRV9XSElURUxJU1QgPz0gIlRNUERJUiBGSUxFIFBBVEggUFdEIEJCX1RBU0tIQVNIIEJCUEFUSCBETF9ESVIgXAorICAgICAgICAgU1NUQVRFX0RJUiBUSElTRElSIEZJTEVTRVhUUkFQQVRIUyBGSUxFX0RJUk5BTUUgSE9NRSBMT0dOQU1FIFNIRUxMIFRFUk0gXAorICAgICAgICAgVVNFUiBGSUxFU1BBVEggU1RBR0lOR19ESVJfSE9TVCBTVEFHSU5HX0RJUl9UQVJHRVQgQ09SRUJBU0UgUFJTRVJWX0hPU1QgXAorICAgICAgICAgUFJTRVJWX0RVTVBESVIgUFJTRVJWX0RVTVBGSUxFIFBSU0VSVl9MT0NLRE9XTiBQQVJBTExFTF9NQUtFIFwKKyAgICAgICAgIENDQUNIRV9ESVIgRVhURVJOQUxfVE9PTENIQUlOIENDQUNIRSBDQ0FDSEVfRElTQUJMRSBMSUNFTlNFX1BBVEggU0RLUEtHU1VGRklYIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgZXhhbXBsZSBleGNsdWRlcworICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBzaW5jZSB0aGF0IHZhcmlhYmxlIGlzIGFjdHVhbGx5IGNvbnN0cnVjdGVkIGFzIGEgcGF0aCB3aXRoaW4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICB3aGljaCBpcyBvbiB0aGUgd2hpdGVsaXN0LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgcnVsZXMgZm9yIGRlY2lkaW5nIHdoaWNoIGhhc2hlcyBvZiBkZXBlbmRlbnQgdGFza3MgdG8KKyAgICAgICAgICAgICAgICBpbmNsdWRlIHRocm91Z2ggZGVwZW5kZW5jeSBjaGFpbnMgYXJlIG1vcmUgY29tcGxleCBhbmQgYXJlCisgICAgICAgICAgICAgICAgZ2VuZXJhbGx5IGFjY29tcGxpc2hlZCB3aXRoIGEgUHl0aG9uIGZ1bmN0aW9uLgorICAgICAgICAgICAgICAgIFRoZSBjb2RlIGluIDxmaWxlbmFtZT5tZXRhL2xpYi9vZS9zc3RhdGVzaWcucHk8L2ZpbGVuYW1lPiBzaG93cworICAgICAgICAgICAgICAgIHR3byBleGFtcGxlcyBvZiB0aGlzIGFuZCBhbHNvIGlsbHVzdHJhdGVzIGhvdyB5b3UgY2FuIGluc2VydAorICAgICAgICAgICAgICAgIHlvdXIgb3duIHBvbGljeSBpbnRvIHRoZSBzeXN0ZW0gaWYgc28gZGVzaXJlZC4KKyAgICAgICAgICAgICAgICBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgdHdvIGJhc2ljIHNpZ25hdHVyZSBnZW5lcmF0b3JzCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjb2UtY29yZSc+T0UtQ29yZTwvdWxpbms+CisgICAgICAgICAgICAgICAgdXNlczogICJPRUJhc2ljIiBhbmQgIk9FQmFzaWNIYXNoIi4KKyAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCBhIGR1bW15ICJub29wIiBzaWduYXR1cmUgaGFuZGxlciBpcyBlbmFibGVkCisgICAgICAgICAgICAgICAgaW4gQml0QmFrZS4KKyAgICAgICAgICAgICAgICBUaGlzIG1lYW5zIHRoYXQgYmVoYXZpb3IgaXMgdW5jaGFuZ2VkIGZyb20gcHJldmlvdXMgdmVyc2lvbnMuCisgICAgICAgICAgICAgICAgT0UtQ29yZSB1c2VzIHRoZSAiT0VCYXNpY0hhc2giIHNpZ25hdHVyZSBoYW5kbGVyIGJ5IGRlZmF1bHQKKyAgICAgICAgICAgICAgICB0aHJvdWdoIHRoaXMgc2V0dGluZyBpbiB0aGUgPGZpbGVuYW1lPmJpdGJha2UuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZmlsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEJCX1NJR05BVFVSRV9IQU5ETEVSID89ICJPRUJhc2ljSGFzaCIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhlICJPRUJhc2ljSGFzaCIgPGZpbGVuYW1lPkJCX1NJR05BVFVSRV9IQU5ETEVSPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBpcyB0aGUgc2FtZSBhcyB0aGUgIk9FQmFzaWMiIHZlcnNpb24gYnV0IGFkZHMgdGhlIHRhc2sgaGFzaCB0bworICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0YW1wLWZpbGVzLWFuZC10aGUtcmVydW5uaW5nLW9mLXRhc2tzJz5zdGFtcCBmaWxlczwvbGluaz4uCisgICAgICAgICAgICAgICAgVGhpcyByZXN1bHRzIGluIGFueSBtZXRhZGF0YSBjaGFuZ2UgdGhhdCBjaGFuZ2VzIHRoZSB0YXNrIGhhc2gsCisgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBjYXVzaW5nIHRoZSB0YXNrIHRvIGJlIHJ1biBhZ2Fpbi4KKyAgICAgICAgICAgICAgICBUaGlzIHJlbW92ZXMgdGhlIG5lZWQgdG8gYnVtcAorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhbHVlcywgYW5kIGNoYW5nZXMgdG8gbWV0YWRhdGEgYXV0b21hdGljYWxseSByaXBwbGUgYWNyb3NzCisgICAgICAgICAgICAgICAgdGhlIGJ1aWxkLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBJdCBpcyBhbHNvIHdvcnRoIG5vdGluZyB0aGF0IHRoZSBlbmQgcmVzdWx0IG9mIHRoZXNlCisgICAgICAgICAgICAgICAgc2lnbmF0dXJlIGdlbmVyYXRvcnMgaXMgdG8gbWFrZSBzb21lIGRlcGVuZGVuY3kgYW5kIGhhc2gKKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBhdmFpbGFibGUgdG8gdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgIFRoaXMgaW5mb3JtYXRpb24gaW5jbHVkZXM6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCX0JBU0VIQVNIX3Rhc2stPC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBiYXNlIGhhc2hlcyBmb3IgZWFjaCB0YXNrIGluIHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCX0JBU0VIQVNIXzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmZpbGVuYW1lPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+OjwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnRhc2tuYW1lPC9yZXBsYWNlYWJsZT46CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYmFzZSBoYXNoZXMgZm9yIGVhY2ggZGVwZW5kZW50IHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCSEFTSERFUFNfPC9maWxlbmFtZT48cmVwbGFjZWFibGU+ZmlsZW5hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT46PC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB0YXNrIGRlcGVuZGVuY2llcyBmb3IgZWFjaCB0YXNrLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQl9UQVNLSEFTSDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGhhc2ggb2YgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdzaGFyZWQtc3RhdGUnPgorICAgICAgICAgICAgPHRpdGxlPlNoYXJlZCBTdGF0ZTwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIENoZWNrc3VtcyBhbmQgZGVwZW5kZW5jaWVzLCBhcyBkaXNjdXNzZWQgaW4gdGhlIHByZXZpb3VzCisgICAgICAgICAgICAgICAgc2VjdGlvbiwgc29sdmUgaGFsZiB0aGUgcHJvYmxlbSBvZiBzdXBwb3J0aW5nIGEgc2hhcmVkIHN0YXRlLgorICAgICAgICAgICAgICAgIFRoZSBvdGhlciBoYWxmIG9mIHRoZSBwcm9ibGVtIGlzIGJlaW5nIGFibGUgdG8gdXNlIGNoZWNrc3VtCisgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gZHVyaW5nIHRoZSBidWlsZCBhbmQgYmVpbmcgYWJsZSB0byByZXVzZSBvciByZWJ1aWxkCisgICAgICAgICAgICAgICAgc3BlY2lmaWMgY29tcG9uZW50cy4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtc3N0YXRlJz48ZmlsZW5hbWU+c3N0YXRlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGNsYXNzIGlzIGEgcmVsYXRpdmVseSBnZW5lcmljIGltcGxlbWVudGF0aW9uIG9mIGhvdyB0bworICAgICAgICAgICAgICAgICJjYXB0dXJlIiBhIHNuYXBzaG90IG9mIGEgZ2l2ZW4gdGFzay4KKyAgICAgICAgICAgICAgICBUaGUgaWRlYSBpcyB0aGF0IHRoZSBidWlsZCBwcm9jZXNzIGRvZXMgbm90IGNhcmUgYWJvdXQgdGhlCisgICAgICAgICAgICAgICAgc291cmNlIG9mIGEgdGFzaydzIG91dHB1dC4KKyAgICAgICAgICAgICAgICBPdXRwdXQgY291bGQgYmUgZnJlc2hseSBidWlsdCBvciBpdCBjb3VsZCBiZSBkb3dubG9hZGVkIGFuZAorICAgICAgICAgICAgICAgIHVucGFja2VkIGZyb20gc29tZXdoZXJlLgorICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCB0aGUgYnVpbGQgcHJvY2VzcyBkb2VzIG5vdCBuZWVkIHRvIHdvcnJ5IGFib3V0CisgICAgICAgICAgICAgICAgaXRzIG9yaWdpbi4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVHdvIHR5cGVzIG9mIG91dHB1dCBleGlzdC4KKyAgICAgICAgICAgICAgICBPbmUgdHlwZSBpcyBqdXN0IGFib3V0IGNyZWF0aW5nIGEgZGlyZWN0b3J5IGluCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICBBIGdvb2QgZXhhbXBsZSBpcyB0aGUgb3V0cHV0IG9mIGVpdGhlcgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBvcgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wYWNrYWdlJz48ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+PC91bGluaz4uCisgICAgICAgICAgICAgICAgVGhlIG90aGVyIHR5cGUgb2Ygb3V0cHV0IG9jY3VycyB3aGVuIGEgc2V0IG9mIGRhdGEgaXMgbWVyZ2VkCisgICAgICAgICAgICAgICAgaW50byBhIHNoYXJlZCBkaXJlY3RvcnkgdHJlZSBzdWNoIGFzIHRoZSBzeXNyb290LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB0ZWFtIGhhcyB0cmllZCB0byBrZWVwIHRoZSBkZXRhaWxzIG9mIHRoZQorICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uIGhpZGRlbiBpbiA8ZmlsZW5hbWU+c3N0YXRlPC9maWxlbmFtZT4gY2xhc3MuCisgICAgICAgICAgICAgICAgRnJvbSBhIHVzZXIncyBwZXJzcGVjdGl2ZSwgYWRkaW5nIHNoYXJlZCBzdGF0ZSB3cmFwcGluZyB0byBhCisgICAgICAgICAgICAgICAgdGFzayBpcyBhcyBzaW1wbGUgYXMgdGhpcworICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1kZXBsb3knPjxmaWxlbmFtZT5kb19kZXBsb3k8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgZXhhbXBsZSB0YWtlbiBmcm9tIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzLWRlcGxveSc+PGZpbGVuYW1lPmRlcGxveTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICBjbGFzczoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIERFUExPWURJUiA9ICIke1dPUktESVJ9L2RlcGxveS0ke1BOfSIKKyAgICAgU1NUQVRFVEFTS1MgKz0gImRvX2RlcGxveSIKKyAgICAgZG9fZGVwbG95W3NzdGF0ZS1pbnB1dGRpcnNdID0gIiR7REVQTE9ZRElSfSIKKyAgICAgZG9fZGVwbG95W3NzdGF0ZS1vdXRwdXRkaXJzXSA9ICIke0RFUExPWV9ESVJfSU1BR0V9IgorCisgICAgIHB5dGhvbiBkb19kZXBsb3lfc2V0c2NlbmUgKCkgeworICAgICAgICAgc3N0YXRlX3NldHNjZW5lKGQpCisgICAgIH0KKyAgICAgYWRkdGFzayBkb19kZXBsb3lfc2V0c2NlbmUKKyAgICAgZG9fZGVwbG95W2RpcnNdID0gIiR7REVQTE9ZRElSfSAke0J9IgorICAgICBkb19kZXBsb3lbc3RhbXAtZXh0cmEtaW5mb10gPSAiJHtNQUNISU5FX0FSQ0h9IgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgZXhwbGFpbnMgdGhlIHByZXZpb3VzIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQWRkaW5nICJkb19kZXBsb3kiIHRvIDxmaWxlbmFtZT5TU1RBVEVUQVNLUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRzIHNvbWUgcmVxdWlyZWQgc3N0YXRlLXJlbGF0ZWQgcHJvY2Vzc2luZywgd2hpY2ggaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtc3N0YXRlJz48ZmlsZW5hbWU+c3N0YXRlPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHRvIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtZGVwbG95Jz48ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdGFzay4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19kZXBsb3lbc3N0YXRlLWlucHV0ZGlyc10gPSAiJHtERVBMT1lESVJ9IjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBkZWNsYXJlcyB0aGF0IDxmaWxlbmFtZT5kb19kZXBsb3k8L2ZpbGVuYW1lPiBwbGFjZXMgaXRzCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgaW4gPGZpbGVuYW1lPiR7REVQTE9ZRElSfTwvZmlsZW5hbWU+IHdoZW4gcnVuCisgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxseSAoaS5lLiB3aGVuIG5vdCB1c2luZyB0aGUgc3N0YXRlIGNhY2hlKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3V0cHV0IGJlY29tZXMgdGhlIGlucHV0IHRvIHRoZSBzaGFyZWQgc3RhdGUgY2FjaGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fZGVwbG95W3NzdGF0ZS1vdXRwdXRkaXJzXSA9ICIke0RFUExPWV9ESVJfSU1BR0V9IjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lIGNhdXNlcyB0aGUgY29udGVudHMgb2YgdGhlIHNoYXJlZCBzdGF0ZSBjYWNoZSB0byBiZQorICAgICAgICAgICAgICAgICAgICAgICAgY29waWVkIHRvIDxmaWxlbmFtZT4ke0RFUExPWV9ESVJfSU1BR0V9PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiA8ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT4gaXMgbm90IGFscmVhZHkgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2hhcmVkIHN0YXRlIGNhY2hlIG9yIGlmIGl0cyBpbnB1dCBjaGVja3N1bQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaWduYXR1cmUpIGhhcyBjaGFuZ2VkIGZyb20gd2hlbiB0aGUgb3V0cHV0IHdhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlZCwgdGhlIHRhc2sgcnVucyB0byBwb3B1bGF0ZSB0aGUgc2hhcmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgY2FjaGUsIGFmdGVyIHdoaWNoIHRoZSBjb250ZW50cyBvZiB0aGUgc2hhcmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgY2FjaGUgaXMgY29waWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7REVQTE9ZX0RJUl9JTUFHRX08L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiA8ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT4gaXMgaW4gdGhlIHNoYXJlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlIGNhY2hlIGFuZCBpdHMgc2lnbmF0dXJlIGluZGljYXRlcyB0aGF0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlZCBvdXRwdXQgaXMgc3RpbGwgdmFsaWQgKGkuZS4gaWYgbm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxldmFudCB0YXNrIGlucHV0cyBoYXZlIGNoYW5nZWQpLCB0aGVuIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzIG9mIHRoZSBzaGFyZWQgc3RhdGUgY2FjaGUgY29waWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0bHkgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtERVBMT1lfRElSX0lNQUdFfTwvZmlsZW5hbWU+IGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19kZXBsb3lfc2V0c2NlbmU8L2ZpbGVuYW1lPiB0YXNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCwgc2tpcHBpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2RlcGxveTwvZmlsZW5hbWU+IHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyB0YXNrIGRlZmluaXRpb24gaXMgZ2x1ZSBsb2dpYyBuZWVkZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIG1ha2UgdGhlIHByZXZpb3VzIHNldHRpbmdzIGVmZmVjdGl2ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcHl0aG9uIGRvX2RlcGxveV9zZXRzY2VuZSAoKSB7CisgICAgICAgICBzc3RhdGVfc2V0c2NlbmUoZCkKKyAgICAgfQorICAgICBhZGR0YXNrIGRvX2RlcGxveV9zZXRzY2VuZQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNzdGF0ZV9zZXRzY2VuZSgpPC9maWxlbmFtZT4gdGFrZXMgdGhlIGZsYWdzCisgICAgICAgICAgICAgICAgICAgICAgICBhYm92ZSBhcyBpbnB1dCBhbmQgYWNjZWxlcmF0ZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT4gdGFzayB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkIHN0YXRlIGNhY2hlIGlmIHBvc3NpYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHRhc2sgd2FzIGFjY2VsZXJhdGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNzdGF0ZV9zZXRzY2VuZSgpPC9maWxlbmFtZT4gcmV0dXJucyBUcnVlLgorICAgICAgICAgICAgICAgICAgICAgICAgT3RoZXJ3aXNlLCBpdCByZXR1cm5zIEZhbHNlLCBhbmQgdGhlIG5vcm1hbAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2RlcGxveTwvZmlsZW5hbWU+IHRhc2sgcnVucy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNzZXRzY2VuZSc+c2V0c2NlbmU8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIEJpdEJha2UgVXNlciBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kb19kZXBsb3lbZGlyc10gPSAiJHtERVBMT1lESVJ9ICR7Qn0iPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgY3JlYXRlcyA8ZmlsZW5hbWU+JHtERVBMT1lESVJ9PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtCfTwvZmlsZW5hbWU+IGJlZm9yZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19kZXBsb3k8L2ZpbGVuYW1lPiB0YXNrIHJ1bnMsIGFuZCBhbHNvIHNldHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IG9mCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT4gdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke0J9PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyaWFibGUtZmxhZ3MnPlZhcmlhYmxlIEZsYWdzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gY2FzZXMgd2hlcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3N0YXRlLWlucHV0ZGlyczwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc3RhdGUtb3V0cHV0ZGlyczwvZmlsZW5hbWU+IHdvdWxkIGJlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbWUsIHlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNzdGF0ZS1wbGFpbmRpcnM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdG8gcHJlc2VydmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7UEtHRH08L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtQS0dERVNUfTwvZmlsZW5hbWU+IG91dHB1dCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1wYWNrYWdlJz48ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLCB1c2UgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGRvX3BhY2thZ2Vbc3N0YXRlLXBsYWluZGlyc10gPSAiJHtQS0dEfSAke1BLR0RFU1R9IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRvX2RlcGxveVtzdGFtcC1leHRyYS1pbmZvXSA9ICIke01BQ0hJTkVfQVJDSH0iPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgYXBwZW5kcyBleHRyYSBtZXRhZGF0YSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0YW1wLWZpbGVzLWFuZC10aGUtcmVydW5uaW5nLW9mLXRhc2tzJz5zdGFtcCBmaWxlPC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIG1ldGFkYXRhIG1ha2VzIHRoZSB0YXNrIHNwZWNpZmljCisgICAgICAgICAgICAgICAgICAgICAgICB0byBhIG1hY2hpbmUncyBhcmNoaXRlY3R1cmUuCisgICAgICAgICAgICAgICAgICAgICAgICBTZWUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3JlZi1iaXRiYWtlLXRhc2tsaXN0Jz5UaGUgVGFzayBMaXN0PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsIGZvciBtb3JlCisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiB0aGUgPGZpbGVuYW1lPnN0YW1wLWV4dHJhLWluZm88L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgZmxhZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3N0YXRlLWlucHV0ZGlyczwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNzdGF0ZS1vdXRwdXRkaXJzPC9maWxlbmFtZT4gY2FuIGFsc28gYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBtdWx0aXBsZSBkaXJlY3Rvcmllcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGRlY2xhcmVzCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEtHREVTVFdPUks8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TSExJQldPUks8L2ZpbGVuYW1lPiBhcyBzaGFyZWQgc3RhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0IGRpcmVjdG9yaWVzLCB3aGljaCBwb3B1bGF0ZXMgdGhlIHNoYXJlZCBzdGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGUsIGFuZCA8ZmlsZW5hbWU+UEtHREFUQV9ESVI8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TSExJQlNESVI8L2ZpbGVuYW1lPiBhcyB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkIHN0YXRlIG91dHB1dCBkaXJlY3RvcmllczoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZG9fcGFja2FnZVtzc3RhdGUtaW5wdXRkaXJzXSA9ICIke1BLR0RFU1RXT1JLfSAke1NITElCU1dPUktESVJ9IgorICAgICBkb19wYWNrYWdlW3NzdGF0ZS1vdXRwdXRkaXJzXSA9ICIke1BLR0RBVEFfRElSfSAke1NITElCU0RJUn0iCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgbWV0aG9kcyBhbHNvIGluY2x1ZGUgdGhlIGFiaWxpdHkgdG8gdGFrZSBhCisgICAgICAgICAgICAgICAgICAgICAgICBsb2NrZmlsZSB3aGVuIG1hbmlwdWxhdGluZyBzaGFyZWQgc3RhdGUgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVzLCBmb3IgY2FzZXMgd2hlcmUgZmlsZSBhZGRpdGlvbnMgb3IgcmVtb3ZhbHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBzZW5zaXRpdmU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGRvX3BhY2thZ2Vbc3N0YXRlLWxvY2tmaWxlXSA9ICIke1BBQ0tBR0VMT0NLfSIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCZWhpbmQgdGhlIHNjZW5lcywgdGhlIHNoYXJlZCBzdGF0ZSBjb2RlIHdvcmtzIGJ5IGxvb2tpbmcgaW4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNTVEFURV9NSVJST1JTJz48ZmlsZW5hbWU+U1NUQVRFX01JUlJPUlM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgZm9yIHNoYXJlZCBzdGF0ZSBmaWxlcy4KKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTU1RBVEVfTUlSUk9SUyA/PSAiXAorICAgICBmaWxlOi8vLiogaHR0cDovL3NvbWVzZXJ2ZXIudGxkL3NoYXJlL3NzdGF0ZS9QQVRIO2Rvd25sb2FkZmlsZW5hbWU9UEFUSCBcbiBcCisgICAgIGZpbGU6Ly8uKiBmaWxlOi8vL3NvbWUvbG9jYWwvZGlyL3NzdGF0ZS9QQVRIIgorICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHNoYXJlZCBzdGF0ZSBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5TU1RBVEVfRElSPC9maWxlbmFtZT4pIGlzIG9yZ2FuaXplZCBpbnRvCisgICAgICAgICAgICAgICAgICAgIHR3by1jaGFyYWN0ZXIgc3ViZGlyZWN0b3JpZXMsIHdoZXJlIHRoZSBzdWJkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgbmFtZXMgYXJlIGJhc2VkIG9uIHRoZSBmaXJzdCB0d28gY2hhcmFjdGVycyBvZiB0aGUgaGFzaC4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHNoYXJlZCBzdGF0ZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBhIG1pcnJvciBoYXMgdGhlCisgICAgICAgICAgICAgICAgICAgIHNhbWUgc3RydWN0dXJlIGFzIDxmaWxlbmFtZT5TU1RBVEVfRElSPC9maWxlbmFtZT4sIHlvdSBtdXN0CisgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgIlBBVEgiIGFzIHBhcnQgb2YgdGhlIFVSSSB0byBlbmFibGUgdGhlIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICB0byBtYXAgdG8gdGhlIGFwcHJvcHJpYXRlIHN1YmRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBzaGFyZWQgc3RhdGUgcGFja2FnZSB2YWxpZGl0eSBjYW4gYmUgZGV0ZWN0ZWQganVzdCBieQorICAgICAgICAgICAgICAgIGxvb2tpbmcgYXQgdGhlIGZpbGVuYW1lIHNpbmNlIHRoZSBmaWxlbmFtZSBjb250YWlucyB0aGUgdGFzaworICAgICAgICAgICAgICAgIGNoZWNrc3VtIChvciBzaWduYXR1cmUpIGFzIGRlc2NyaWJlZCBlYXJsaWVyIGluIHRoaXMgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICBJZiBhIHZhbGlkIHNoYXJlZCBzdGF0ZSBwYWNrYWdlIGlzIGZvdW5kLCB0aGUgYnVpbGQgcHJvY2VzcworICAgICAgICAgICAgICAgIGRvd25sb2FkcyBpdCBhbmQgdXNlcyBpdCB0byBhY2NlbGVyYXRlIHRoZSB0YXNrLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgcHJvY2Vzc2VzIHVzZSB0aGUgPGZpbGVuYW1lPipfc2V0c2NlbmU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHRhc2tzIGZvciB0aGUgdGFzayBhY2NlbGVyYXRpb24gcGhhc2UuCisgICAgICAgICAgICAgICAgQml0QmFrZSBnb2VzIHRocm91Z2ggdGhpcyBwaGFzZSBiZWZvcmUgdGhlIG1haW4gZXhlY3V0aW9uCisgICAgICAgICAgICAgICAgY29kZSBhbmQgdHJpZXMgdG8gYWNjZWxlcmF0ZSBhbnkgdGFza3MgZm9yIHdoaWNoIGl0IGNhbiBmaW5kCisgICAgICAgICAgICAgICAgc2hhcmVkIHN0YXRlIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgIElmIGEgc2hhcmVkIHN0YXRlIHBhY2thZ2UgZm9yIGEgdGFzayBpcyBhdmFpbGFibGUsIHRoZQorICAgICAgICAgICAgICAgIHNoYXJlZCBzdGF0ZSBwYWNrYWdlIGlzIHVzZWQuCisgICAgICAgICAgICAgICAgVGhpcyBtZWFucyB0aGUgdGFzayBhbmQgYW55IHRhc2tzIG9uIHdoaWNoIGl0IGlzIGRlcGVuZGVudAorICAgICAgICAgICAgICAgIGFyZSBub3QgZXhlY3V0ZWQuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIEFzIGEgcmVhbCB3b3JsZCBleGFtcGxlLCB0aGUgYWltIGlzIHdoZW4gYnVpbGRpbmcgYW4gSVBLLWJhc2VkCisgICAgICAgICAgICAgICAgaW1hZ2UsIG9ubHkgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXBhY2thZ2Vfd3JpdGVfaXBrJz48ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV9pcGs8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdGFza3Mgd291bGQgaGF2ZSB0aGVpciBzaGFyZWQgc3RhdGUgcGFja2FnZXMgZmV0Y2hlZCBhbmQKKyAgICAgICAgICAgICAgICBleHRyYWN0ZWQuCisgICAgICAgICAgICAgICAgU2luY2UgdGhlIHN5c3Jvb3QgaXMgbm90IHVzZWQsIGl0IHdvdWxkIG5ldmVyIGdldCBleHRyYWN0ZWQuCisgICAgICAgICAgICAgICAgVGhpcyBpcyBhbm90aGVyIHJlYXNvbiB3aHkgYSB0YXNrLWJhc2VkIGFwcHJvYWNoIGlzIHByZWZlcnJlZAorICAgICAgICAgICAgICAgIG92ZXIgYSByZWNpcGUtYmFzZWQgYXBwcm9hY2gsIHdoaWNoIHdvdWxkIGhhdmUgdG8gaW5zdGFsbCB0aGUKKyAgICAgICAgICAgICAgICBvdXRwdXQgZnJvbSBldmVyeSB0YXNrLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2F1dG9tYXRpY2FsbHktYWRkZWQtcnVudGltZS1kZXBlbmRlbmNpZXMnPgorICAgICAgICA8dGl0bGU+QXV0b21hdGljYWxseSBBZGRlZCBSdW50aW1lIERlcGVuZGVuY2llczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBhdXRvbWF0aWNhbGx5IGFkZHMgY29tbW9uIHR5cGVzIG9mCisgICAgICAgICAgICBydW50aW1lIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHBhY2thZ2VzLCB3aGljaCBtZWFucyB0aGF0IHlvdSBkbyBub3QKKyAgICAgICAgICAgIG5lZWQgdG8gZXhwbGljaXRseSBkZWNsYXJlIHRoZSBwYWNrYWdlcyB1c2luZworICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVJERVBFTkRTJz48ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+LgorICAgICAgICAgICAgVGhyZWUgYXV0b21hdGljIG1lY2hhbmlzbXMgZXhpc3QgKDxmaWxlbmFtZT5zaGxpYmRlcHM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIDxmaWxlbmFtZT5wY2RlcHM8L2ZpbGVuYW1lPiwgYW5kIDxmaWxlbmFtZT5kZXBjaGFpbnM8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgIHRoYXQgaGFuZGxlIHNoYXJlZCBsaWJyYXJpZXMsIHBhY2thZ2UgY29uZmlndXJhdGlvbiAocGtnLWNvbmZpZykKKyAgICAgICAgICAgIG1vZHVsZXMsIGFuZCA8ZmlsZW5hbWU+LWRldjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPi1kYmc8L2ZpbGVuYW1lPiBwYWNrYWdlcywgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgICAgRm9yIG90aGVyIHR5cGVzIG9mIHJ1bnRpbWUgZGVwZW5kZW5jaWVzLCB5b3UgbXVzdCBtYW51YWxseSBkZWNsYXJlCisgICAgICAgICAgICB0aGUgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zaGxpYmRlcHM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgRHVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgb2YgZWFjaCByZWNpcGUsIGFsbCBzaGFyZWQgbGlicmFyaWVzIGluc3RhbGxlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGFyZSBsb2NhdGVkLgorICAgICAgICAgICAgICAgICAgICBGb3IgZWFjaCBzaGFyZWQgbGlicmFyeSwgdGhlIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUKKyAgICAgICAgICAgICAgICAgICAgc2hhcmVkIGxpYnJhcnkgaXMgcmVnaXN0ZXJlZCBhcyBwcm92aWRpbmcgdGhlIHNoYXJlZAorICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5LgorICAgICAgICAgICAgICAgICAgICBNb3JlIHNwZWNpZmljYWxseSwgdGhlIHBhY2thZ2UgaXMgcmVnaXN0ZXJlZCBhcyBwcm92aWRpbmcKKyAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvbmFtZSc+c29uYW1lPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGxpYnJhcnkuCisgICAgICAgICAgICAgICAgICAgIFRoZSByZXN1bHRpbmcgc2hhcmVkLWxpYnJhcnktdG8tcGFja2FnZSBtYXBwaW5nCisgICAgICAgICAgICAgICAgICAgIGlzIHNhdmVkIGdsb2JhbGx5IGluCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QS0dEQVRBX0RJUic+PGZpbGVuYW1lPlBLR0RBVEFfRElSPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXBhY2thZ2VkYXRhJz48ZmlsZW5hbWU+ZG9fcGFja2FnZWRhdGE8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2suPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlNpbXVsdGFuZW91c2x5LCBhbGwgZXhlY3V0YWJsZXMgYW5kIHNoYXJlZCBsaWJyYXJpZXMKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIGJ5IHRoZSByZWNpcGUgYXJlIGluc3BlY3RlZCB0byBzZWUgd2hhdCBzaGFyZWQKKyAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzIHRoZXkgbGluayBhZ2FpbnN0LgorICAgICAgICAgICAgICAgICAgICBGb3IgZWFjaCBzaGFyZWQgbGlicmFyeSBkZXBlbmRlbmN5IHRoYXQgaXMgZm91bmQsCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QS0dEQVRBX0RJUjwvZmlsZW5hbWU+IGlzIHF1ZXJpZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgc2VlIGlmIHNvbWUgcGFja2FnZSAobGlrZWx5IGZyb20gYSBkaWZmZXJlbnQgcmVjaXBlKQorICAgICAgICAgICAgICAgICAgICBjb250YWlucyB0aGUgc2hhcmVkIGxpYnJhcnkuCisgICAgICAgICAgICAgICAgICAgIElmIHN1Y2ggYSBwYWNrYWdlIGlzIGZvdW5kLCBhIHJ1bnRpbWUgZGVwZW5kZW5jeSBpcyBhZGRlZAorICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBwYWNrYWdlIHRoYXQgZGVwZW5kcyBvbiB0aGUgc2hhcmVkIGxpYnJhcnkgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUgbGlicmFyeS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGF1dG9tYXRpY2FsbHkgYWRkZWQgcnVudGltZSBkZXBlbmRlbmN5IGFsc28KKyAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXMgYSB2ZXJzaW9uIHJlc3RyaWN0aW9uLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZlcnNpb24gcmVzdHJpY3Rpb24gc3BlY2lmaWVzIHRoYXQgYXQgbGVhc3QgdGhlCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgcGFja2FnZSB0aGF0IHByb3ZpZGVzIHRoZSBzaGFyZWQKKyAgICAgICAgICAgICAgICAgICAgbGlicmFyeSBtdXN0IGJlIHVzZWQsIGFzIGlmCisgICAgICAgICAgICAgICAgICAgICI8cmVwbGFjZWFibGU+cGFja2FnZTwvcmVwbGFjZWFibGU+ICg+PSA8cmVwbGFjZWFibGU+dmVyc2lvbjwvcmVwbGFjZWFibGU+KSIKKyAgICAgICAgICAgICAgICAgICAgaGFkIGJlZW4gYWRkZWQgdG8gPGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFRoaXMgZm9yY2VzIGFuIHVwZ3JhZGUgb2YgdGhlIHBhY2thZ2UgY29udGFpbmluZyB0aGUgc2hhcmVkCisgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkgd2hlbiBpbnN0YWxsaW5nIHRoZSBwYWNrYWdlIHRoYXQgZGVwZW5kcyBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgbGlicmFyeSwgaWYgbmVlZGVkLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3Ugd2FudCB0byBhdm9pZCBhIHBhY2thZ2UgYmVpbmcgcmVnaXN0ZXJlZCBhcworICAgICAgICAgICAgICAgICAgICBwcm92aWRpbmcgYSBwYXJ0aWN1bGFyIHNoYXJlZCBsaWJyYXJ5IChlLmcuIGJlY2F1c2UgdGhlIGxpYnJhcnkKKyAgICAgICAgICAgICAgICAgICAgaXMgZm9yIGludGVybmFsIHVzZSBvbmx5KSwgdGhlbiBhZGQgdGhlIGxpYnJhcnkgdG8KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBSSVZBVEVfTElCUyc+PGZpbGVuYW1lPlBSSVZBVEVfTElCUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgaW5zaWRlIHRoZSBwYWNrYWdlJ3MgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wY2RlcHM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgRHVyaW5nIHRoZSA8ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+IHRhc2sgb2YgZWFjaAorICAgICAgICAgICAgICAgICAgICByZWNpcGUsIGFsbCBwa2ctY29uZmlnIG1vZHVsZXMKKyAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4qLnBjPC9maWxlbmFtZT4gZmlsZXMpIGluc3RhbGxlZCBieSB0aGUgcmVjaXBlCisgICAgICAgICAgICAgICAgICAgIGFyZSBsb2NhdGVkLgorICAgICAgICAgICAgICAgICAgICBGb3IgZWFjaCBtb2R1bGUsIHRoZSBwYWNrYWdlIHRoYXQgY29udGFpbnMgdGhlIG1vZHVsZSBpcworICAgICAgICAgICAgICAgICAgICByZWdpc3RlcmVkIGFzIHByb3ZpZGluZyB0aGUgbW9kdWxlLgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVzdWx0aW5nIG1vZHVsZS10by1wYWNrYWdlIG1hcHBpbmcgaXMgc2F2ZWQgZ2xvYmFsbHkgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBLR0RBVEFfRElSPC9maWxlbmFtZT4gYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wYWNrYWdlZGF0YTwvZmlsZW5hbWU+IHRhc2suPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlNpbXVsdGFuZW91c2x5LCBhbGwgcGtnLWNvbmZpZyBtb2R1bGVzIGluc3RhbGxlZCBieQorICAgICAgICAgICAgICAgICAgICB0aGUgcmVjaXBlIGFyZSBpbnNwZWN0ZWQgdG8gc2VlIHdoYXQgb3RoZXIgcGtnLWNvbmZpZworICAgICAgICAgICAgICAgICAgICBtb2R1bGVzIHRoZXkgZGVwZW5kIG9uLgorICAgICAgICAgICAgICAgICAgICBBIG1vZHVsZSBpcyBzZWVuIGFzIGRlcGVuZGluZyBvbiBhbm90aGVyIG1vZHVsZSBpZiBpdAorICAgICAgICAgICAgICAgICAgICBjb250YWlucyBhICJSZXF1aXJlczoiIGxpbmUgdGhhdCBzcGVjaWZpZXMgdGhlIG90aGVyIG1vZHVsZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGVhY2ggbW9kdWxlIGRlcGVuZGVuY3ksCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QS0dEQVRBX0RJUjwvZmlsZW5hbWU+IGlzIHF1ZXJpZWQgdG8gc2VlIGlmIHNvbWUKKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBjb250YWlucyB0aGUgbW9kdWxlLgorICAgICAgICAgICAgICAgICAgICBJZiBzdWNoIGEgcGFja2FnZSBpcyBmb3VuZCwgYSBydW50aW1lIGRlcGVuZGVuY3kgaXMgYWRkZWQKKyAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgcGFja2FnZSB0aGF0IGRlcGVuZHMgb24gdGhlIG1vZHVsZSB0byB0aGUgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICB0aGF0IGNvbnRhaW5zIHRoZSBtb2R1bGUuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5wY2RlcHM8L2ZpbGVuYW1lPiBtZWNoYW5pc20gbW9zdCBvZnRlbgorICAgICAgICAgICAgICAgICAgICAgICAgaW5mZXJzIGRlcGVuZGVuY2llcyBiZXR3ZWVuIDxmaWxlbmFtZT4tZGV2PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlcGNoYWluczwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICBJZiBhIHBhY2thZ2UgPGZpbGVuYW1lPmZvbzwvZmlsZW5hbWU+IGRlcGVuZHMgb24gYSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXI8L2ZpbGVuYW1lPiwgdGhlbiA8ZmlsZW5hbWU+Zm9vLWRldjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+Zm9vLWRiZzwvZmlsZW5hbWU+IGFyZSBhbHNvIG1hZGUgdG8gZGVwZW5kIG9uCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXItZGV2PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXItZGJnPC9maWxlbmFtZT4sIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICAgICAgICAgICAgVGFraW5nIHRoZSA8ZmlsZW5hbWU+LWRldjwvZmlsZW5hbWU+IHBhY2thZ2VzIGFzIGFuCisgICAgICAgICAgICAgICAgICAgIGV4YW1wbGUsIHRoZSA8ZmlsZW5hbWU+YmFyLWRldjwvZmlsZW5hbWU+IHBhY2thZ2UgbWlnaHQKKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZSBoZWFkZXJzIGFuZCBzaGFyZWQgbGlicmFyeSBzeW1saW5rcyBuZWVkZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvby1kZXY8L2ZpbGVuYW1lPiwgd2hpY2ggc2hvd3MgdGhlIG5lZWQKKyAgICAgICAgICAgICAgICAgICAgZm9yIGEgZGVwZW5kZW5jeSBiZXR3ZWVuIHRoZSBwYWNrYWdlcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGRlcGVuZGVuY2llcyBhZGRlZCBieQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVwY2hhaW5zPC9maWxlbmFtZT4gYXJlIGluIHRoZSBmb3JtIG9mCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1SUkVDT01NRU5EUyc+PGZpbGVuYW1lPlJSRUNPTU1FTkRTPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCA8ZmlsZW5hbWU+Zm9vLWRldjwvZmlsZW5hbWU+IGFsc28gaGFzIGFuCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPi1zdHlsZSBkZXBlbmRlbmN5IG9uCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Zm9vPC9maWxlbmFtZT4sIGJlY2F1c2UgdGhlIGRlZmF1bHQgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SREVQRU5EU18ke1BOfS1kZXY8L2ZpbGVuYW1lPiAoc2V0IGluCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS5jb25mPC9maWxlbmFtZT4pIGluY2x1ZGVzCisgICAgICAgICAgICAgICAgICAgICAgICAiJHtQTn0iLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRvIGVuc3VyZSB0aGF0IHRoZSBkZXBlbmRlbmN5IGNoYWluIGlzIG5ldmVyIGJyb2tlbiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1kZXY8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPi1kYmc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBhcmUgYWx3YXlzIGdlbmVyYXRlZCBieSBkZWZhdWx0LCBldmVuIGlmIHRoZQorICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyB0dXJuIG91dCB0byBiZSBlbXB0eS4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQUxMT1dfRU1QVFknPjxmaWxlbmFtZT5BTExPV19FTVBUWTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+IHRhc2sgZGVwZW5kcyBvbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wYWNrYWdlZGF0YTwvZmlsZW5hbWU+IHRhc2sgb2YgZWFjaCByZWNpcGUgaW4KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIHRocm91Z2ggdXNlIG9mIGEKKyAgICAgICAgICAgIDxmaWxlbmFtZT5bPC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3ZhcmlhYmxlLWZsYWdzJz48ZmlsZW5hbWU+ZGVwdGFzazwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+XTwvZmlsZW5hbWU+CisgICAgICAgICAgICBkZWNsYXJhdGlvbiwgd2hpY2ggZ3VhcmFudGVlcyB0aGF0IHRoZSByZXF1aXJlZAorICAgICAgICAgICAgc2hhcmVkLWxpYnJhcnkvbW9kdWxlLXRvLXBhY2thZ2UgbWFwcGluZyBpbmZvcm1hdGlvbiB3aWxsIGJlIGF2YWlsYWJsZQorICAgICAgICAgICAgd2hlbiBuZWVkZWQgYXMgbG9uZyBhcyA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+IGhhcyBiZWVuCisgICAgICAgICAgICBjb3JyZWN0bHkgc2V0LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2Zha2Vyb290LWFuZC1wc2V1ZG8nPgorICAgICAgICA8dGl0bGU+RmFrZXJvb3QgYW5kIFBzZXVkbzwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTb21lIHRhc2tzIGFyZSBlYXNpZXIgdG8gaW1wbGVtZW50IHdoZW4gYWxsb3dlZCB0byBwZXJmb3JtIGNlcnRhaW4KKyAgICAgICAgICAgIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm9ybWFsbHkgcmVzZXJ2ZWQgZm9yIHRoZSByb290IHVzZXIgKGUuZy4KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZV93cml0ZV9kZWInPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlKjwvZmlsZW5hbWU+PC91bGluaz4sCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3Mtcm9vdGZzJz48ZmlsZW5hbWU+ZG9fcm9vdGZzPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWltYWdlJz48ZmlsZW5hbWU+ZG9faW1hZ2UqPC9maWxlbmFtZT48L3VsaW5rPikuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIDxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT4gdGFzayBiZW5lZml0cworICAgICAgICAgICAgZnJvbSBiZWluZyBhYmxlIHRvIHNldCB0aGUgVUlEIGFuZCBHSUQgb2YgaW5zdGFsbGVkIGZpbGVzIHRvCisgICAgICAgICAgICBhcmJpdHJhcnkgdmFsdWVzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBPbmUgYXBwcm9hY2ggdG8gYWxsb3dpbmcgdGFza3MgdG8gcGVyZm9ybSByb290LW9ubHkgb3BlcmF0aW9ucworICAgICAgICAgICAgd291bGQgYmUgdG8gcmVxdWlyZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4KKyAgICAgICAgICAgIHRvIHJ1biBhcyByb290LgorICAgICAgICAgICAgSG93ZXZlciwgdGhpcyBtZXRob2QgaXMgY3VtYmVyc29tZSBhbmQgaGFzIHNlY3VyaXR5IGlzc3Vlcy4KKyAgICAgICAgICAgIFRoZSBhcHByb2FjaCB0aGF0IGlzIGFjdHVhbGx5IHVzZWQgaXMgdG8gcnVuIHRhc2tzIHRoYXQgYmVuZWZpdAorICAgICAgICAgICAgZnJvbSByb290IHByaXZpbGVnZXMgaW4gYSAiZmFrZSIgcm9vdCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIFdpdGhpbiB0aGlzIGVudmlyb25tZW50LCB0aGUgdGFzayBhbmQgaXRzIGNoaWxkIHByb2Nlc3NlcyBiZWxpZXZlCisgICAgICAgICAgICB0aGF0IHRoZXkgYXJlIHJ1bm5pbmcgYXMgdGhlIHJvb3QgdXNlciwgYW5kIHNlZSBhbiBpbnRlcm5hbGx5CisgICAgICAgICAgICBjb25zaXN0ZW50IHZpZXcgb2YgdGhlIGZpbGVzeXN0ZW0uCisgICAgICAgICAgICBBcyBsb25nIGFzIGdlbmVyYXRpbmcgdGhlIGZpbmFsIG91dHB1dCAoZS5nLiBhIHBhY2thZ2Ugb3IgYW4gaW1hZ2UpCisgICAgICAgICAgICBkb2VzIG5vdCByZXF1aXJlIHJvb3QgcHJpdmlsZWdlcywgdGhlIGZhY3QgdGhhdCBzb21lIGVhcmxpZXIKKyAgICAgICAgICAgIHN0ZXBzIHJhbiBpbiBhIGZha2Ugcm9vdCBlbnZpcm9ubWVudCBkb2VzIG5vdCBjYXVzZSBwcm9ibGVtcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGNhcGFiaWxpdHkgdG8gcnVuIHRhc2tzIGluIGEgZmFrZSByb290IGVudmlyb25tZW50IGlzIGtub3duIGFzCisgICAgICAgICAgICAiPHVsaW5rIHVybD0naHR0cDovL21hbi5oZS5uZXQvbWFuMS9mYWtlcm9vdCc+ZmFrZXJvb3Q8L3VsaW5rPiIsCisgICAgICAgICAgICB3aGljaCBpcyBkZXJpdmVkIGZyb20gdGhlIEJpdEJha2Uga2V5d29yZC92YXJpYWJsZQorICAgICAgICAgICAgZmxhZyB0aGF0IHJlcXVlc3RzIGEgZmFrZSByb290IGVudmlyb25tZW50IGZvciBhIHRhc2suCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEluIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPiwKKyAgICAgICAgICAgIHRoZSBwcm9ncmFtIHRoYXQgaW1wbGVtZW50cyBmYWtlcm9vdCBpcyBrbm93biBhcyBQc2V1ZG8uCisgICAgICAgICAgICBQc2V1ZG8gb3ZlcnJpZGVzIHN5c3RlbSBjYWxscyBieSB1c2luZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5MRF9QUkVMT0FEPC9maWxlbmFtZT4sIHdoaWNoIHJlc3VsdHMgaW4gdGhlIGlsbHVzaW9uCisgICAgICAgICAgICBvZiBydW5uaW5nIGFzIHJvb3QuCisgICAgICAgICAgICBUbyBrZWVwIHRyYWNrIG9mICJmYWtlIiBmaWxlIG93bmVyc2hpcCBhbmQgcGVybWlzc2lvbnMgcmVzdWx0aW5nCisgICAgICAgICAgICBmcm9tIG9wZXJhdGlvbnMgdGhhdCByZXF1aXJlIHJvb3QgcGVybWlzc2lvbnMsIFBzZXVkbyB1c2VzCisgICAgICAgICAgICBhbiBTUUxpdGUgMyBkYXRhYmFzZS4KKyAgICAgICAgICAgIFRoaXMgZGF0YWJhc2UgaXMgc3RvcmVkIGluCisgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fS9wc2V1ZG8vZmlsZXMuZGI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgZm9yIGluZGl2aWR1YWwgcmVjaXBlcy4KKyAgICAgICAgICAgIFN0b3JpbmcgdGhlIGRhdGFiYXNlIGluIGEgZmlsZSBhcyBvcHBvc2VkIHRvIGluIG1lbW9yeQorICAgICAgICAgICAgZ2l2ZXMgcGVyc2lzdGVuY2UgYmV0d2VlbiB0YXNrcyBhbmQgYnVpbGRzLCB3aGljaCBpcyBub3QKKyAgICAgICAgICAgIGFjY29tcGxpc2hlZCB1c2luZyBmYWtlcm9vdC4KKyAgICAgICAgICAgIDxub3RlPjx0aXRsZT5DYXV0aW9uPC90aXRsZT4KKyAgICAgICAgICAgICAgICBJZiB5b3UgYWRkIHlvdXIgb3duIHRhc2sgdGhhdCBtYW5pcHVsYXRlcyB0aGUgc2FtZSBmaWxlcyBvcgorICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIGFzIGEgZmFrZXJvb3QgdGFzaywgdGhlbiB0aGF0IHRhc2sgYWxzbyBuZWVkcyB0bworICAgICAgICAgICAgICAgIHJ1biB1bmRlciBmYWtlcm9vdC4KKyAgICAgICAgICAgICAgICBPdGhlcndpc2UsIHRoZSB0YXNrIGNhbm5vdCBydW4gcm9vdC1vbmx5IG9wZXJhdGlvbnMsIGFuZAorICAgICAgICAgICAgICAgIGNhbm5vdCBzZWUgdGhlIGZha2UgZmlsZSBvd25lcnNoaXAgYW5kIHBlcm1pc3Npb25zIHNldCBieSB0aGUKKyAgICAgICAgICAgICAgICBvdGhlciB0YXNrLgorICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGFsc28gYWRkIGEgZGVwZW5kZW5jeSBvbgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52aXJ0dWFsL2Zha2Vyb290LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgZ2l2aW5nIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgIGZha2Vyb290IGRvX215dGFzayAoKSB7CisgICAgICAgICAgIC4uLgorICAgICAgIH0KKyAgICAgICBkb19teXRhc2tbZGVwZW5kc10gKz0gInZpcnR1YWwvZmFrZXJvb3QtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyLUZBS0VST09UJz48ZmlsZW5hbWU+RkFLRVJPT1QqPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgdmFyaWFibGVzIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsLgorICAgICAgICAgICAgWW91IGNhbiBhbHNvIHJlZmVyZW5jZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPSdodHRwOi8vd3d3LmlibS5jb20vZGV2ZWxvcGVyd29ya3Mvb3BlbnNvdXJjZS9saWJyYXJ5L29zLWFhcHNldWRvMS9pbmRleC5odG1sJz5Qc2V1ZG88L3VsaW5rPiIKKyAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgIjx1bGluayB1cmw9J2h0dHBzOi8vZ2l0aHViLmNvbS93cnBzZXVkby9wc2V1ZG8vd2lraS9XaHlOb3RGYWtlcm9vdCc+V2h5IE5vdCBGYWtlcm9vdD88L3VsaW5rPiIKKyAgICAgICAgICAgIGFydGljbGVzIGZvciBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIG9uIFBzZXVkby4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvY2hhcHRlcj4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1jdXN0b21pemF0aW9uLnhzbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwtY3VzdG9taXphdGlvbi54c2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjIzNjBlNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwtY3VzdG9taXphdGlvbi54c2wKQEAgLTAsMCArMSwyNyBAQAorPD94bWwgdmVyc2lvbj0nMS4wJz8+Cis8eHNsOnN0eWxlc2hlZXQgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWxuczpmbz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvRm9ybWF0IiB2ZXJzaW9uPSIxLjAiPgorCisgIDx4c2w6aW1wb3J0IGhyZWY9Imh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3IvZG9jYm9vay1taXJyb3IvZG9jYm9vay14c2wtMS43Ni4xL3hodG1sL2RvY2Jvb2sueHNsIiAvPgorCis8IS0tCisKKyAgPHhzbDppbXBvcnQgaHJlZj0iLi4vdGVtcGxhdGUvMS43Ni4xL2RvY2Jvb2steHNsLTEuNzYuMS94aHRtbC9kb2Nib29rLnhzbCIgLz4KKworICA8eHNsOmltcG9ydCBocmVmPSJodHRwOi8vZG9jYm9vay5zb3VyY2Vmb3JnZS5uZXQvcmVsZWFzZS94c2wvMS43Ni4xL3hodG1sL2RvY2Jvb2sueHNsIiAvPgorCistLT4KKworICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvcGVybWFsaW5rcy54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL3NlY3Rpb24udGl0bGUueHNsIi8+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9jb21wb25lbnQudGl0bGUueHNsIi8+CisgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9kaXZpc2lvbi50aXRsZS54c2wiLz4KKyAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL2Zvcm1hbC5vYmplY3QuaGVhZGluZy54c2wiLz4KKworICA8eHNsOnBhcmFtIG5hbWU9Imh0bWwuc3R5bGVzaGVldCIgc2VsZWN0PSInb3ZlcnZpZXctbWFudWFsLXN0eWxlLmNzcyciIC8+CisgIDx4c2w6cGFyYW0gbmFtZT0iY2hhcHRlci5hdXRvbGFiZWwiIHNlbGVjdD0iMSIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJhcHBlbmRpeC5hdXRvbGFiZWwiIHNlbGVjdD0iQSIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJzZWN0aW9uLmF1dG9sYWJlbCIgc2VsZWN0PSIxIiAvPgorICA8eHNsOnBhcmFtIG5hbWU9InNlY3Rpb24ubGFiZWwuaW5jbHVkZXMuY29tcG9uZW50LmxhYmVsIiBzZWxlY3Q9IjEiIC8+CisgIDx4c2w6cGFyYW0gbmFtZT0iZ2VuZXJhdGUuaWQuYXR0cmlidXRlcyIgc2VsZWN0PSIxIiAvPgorCis8L3hzbDpzdHlsZXNoZWV0PgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWRldmVsb3BtZW50LWVudmlyb25tZW50LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmE5M2NjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC54bWwKQEAgLTAsMCArMSw5NzAgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+CisKKzxjaGFwdGVyIGlkPSdvdmVydmlldy1kZXZlbG9wbWVudC1lbnZpcm9ubWVudCc+Cis8dGl0bGU+VGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQ8L3RpdGxlPgorCis8cGFyYT4KKyAgICBUaGlzIGNoYXB0ZXIgdGFrZXMgYSBsb29rIGF0IHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50CisgICAgZW52aXJvbm1lbnQuCisgICAgVGhlIGNoYXB0ZXIgcHJvdmlkZXMgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBlbnZpcm9ubWVudCBjb25jZXB0cyB0aGF0CisgICAgaGVscCB5b3UgdW5kZXJzdGFuZCBob3cgd29yayBpcyBhY2NvbXBsaXNoZWQgaW4gYW4gb3BlbiBzb3VyY2UgZW52aXJvbm1lbnQsCisgICAgd2hpY2ggaXMgdmVyeSBkaWZmZXJlbnQgYXMgY29tcGFyZWQgdG8gd29yayBhY2NvbXBsaXNoZWQgaW4gYSBjbG9zZWQsCisgICAgcHJvcHJpZXRhcnkgZW52aXJvbm1lbnQuCis8L3BhcmE+CisKKzxwYXJhPgorICAgIFNwZWNpZmljYWxseSwgdGhpcyBjaGFwdGVyIGFkZHJlc3NlcyBvcGVuIHNvdXJjZSBwaGlsb3NvcGh5LCBzb3VyY2UKKyAgICByZXBvc2l0b3JpZXMsIHdvcmtmbG93cywgR2l0LCBhbmQgbGljZW5zaW5nLgorPC9wYXJhPgorCis8c2VjdGlvbiBpZD0nb3Blbi1zb3VyY2UtcGhpbG9zb3BoeSc+CisgICAgPHRpdGxlPk9wZW4gU291cmNlIFBoaWxvc29waHk8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIE9wZW4gc291cmNlIHBoaWxvc29waHkgaXMgY2hhcmFjdGVyaXplZCBieSBzb2Z0d2FyZSBkZXZlbG9wbWVudAorICAgICAgICBkaXJlY3RlZCBieSBwZWVyIHByb2R1Y3Rpb24gYW5kIGNvbGxhYm9yYXRpb24gdGhyb3VnaCBhbiBhY3RpdmUKKyAgICAgICAgY29tbXVuaXR5IG9mIGRldmVsb3BlcnMuCisgICAgICAgIENvbnRyYXN0IHRoaXMgdG8gdGhlIG1vcmUgc3RhbmRhcmQgY2VudHJhbGl6ZWQgZGV2ZWxvcG1lbnQgbW9kZWxzCisgICAgICAgIHVzZWQgYnkgY29tbWVyY2lhbCBzb2Z0d2FyZSBjb21wYW5pZXMgd2hlcmUgYSBmaW5pdGUgc2V0IG9mIGRldmVsb3BlcnMKKyAgICAgICAgcHJvZHVjZXMgYSBwcm9kdWN0IGZvciBzYWxlIHVzaW5nIGEgZGVmaW5lZCBzZXQgb2YgcHJvY2VkdXJlcyB0aGF0CisgICAgICAgIHVsdGltYXRlbHkgcmVzdWx0IGluIGFuIGVuZCBwcm9kdWN0IHdob3NlIGFyY2hpdGVjdHVyZSBhbmQgc291cmNlCisgICAgICAgIG1hdGVyaWFsIGFyZSBjbG9zZWQgdG8gdGhlIHB1YmxpYy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgT3BlbiBzb3VyY2UgcHJvamVjdHMgY29uY2VwdHVhbGx5IGhhdmUgZGlmZmVyaW5nIGNvbmN1cnJlbnQgYWdlbmRhcywKKyAgICAgICAgYXBwcm9hY2hlcywgYW5kIHByb2R1Y3Rpb24uCisgICAgICAgIFRoZXNlIGZhY2V0cyBvZiB0aGUgZGV2ZWxvcG1lbnQgcHJvY2VzcyBjYW4gY29tZSBmcm9tIGFueW9uZSBpbiB0aGUKKyAgICAgICAgcHVibGljIChjb21tdW5pdHkpIHdobyBoYXMgYSBzdGFrZSBpbiB0aGUgc29mdHdhcmUgcHJvamVjdC4KKyAgICAgICAgVGhlIG9wZW4gc291cmNlIGVudmlyb25tZW50IGNvbnRhaW5zIG5ldyBjb3B5cmlnaHQsIGxpY2Vuc2luZywgZG9tYWluLAorICAgICAgICBhbmQgY29uc3VtZXIgaXNzdWVzIHRoYXQgZGlmZmVyIGZyb20gdGhlIG1vcmUgdHJhZGl0aW9uYWwgZGV2ZWxvcG1lbnQKKyAgICAgICAgZW52aXJvbm1lbnQuCisgICAgICAgIEluIGFuIG9wZW4gc291cmNlIGVudmlyb25tZW50LCB0aGUgZW5kIHByb2R1Y3QsIHNvdXJjZSBtYXRlcmlhbCwKKyAgICAgICAgYW5kIGRvY3VtZW50YXRpb24gYXJlIGFsbCBhdmFpbGFibGUgdG8gdGhlIHB1YmxpYyBhdCBubyBjb3N0LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBBIGJlbmNobWFyayBleGFtcGxlIG9mIGFuIG9wZW4gc291cmNlIHByb2plY3QgaXMgdGhlIExpbnV4IGtlcm5lbCwKKyAgICAgICAgd2hpY2ggd2FzIGluaXRpYWxseSBjb25jZWl2ZWQgYW5kIGNyZWF0ZWQgYnkgRmlubmlzaCBjb21wdXRlciBzY2llbmNlCisgICAgICAgIHN0dWRlbnQgTGludXMgVG9ydmFsZHMgaW4gMTk5MS4KKyAgICAgICAgQ29udmVyc2VseSwgYSBnb29kIGV4YW1wbGUgb2YgYSBub24tb3BlbiBzb3VyY2UgcHJvamVjdCBpcyB0aGUKKyAgICAgICAgPHRyYWRlbWFyayBjbGFzcz0ncmVnaXN0ZXJlZCc+V2luZG93czwvdHJhZGVtYXJrPiBmYW1pbHkgb2Ygb3BlcmF0aW5nCisgICAgICAgIHN5c3RlbXMgZGV2ZWxvcGVkIGJ5CisgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3JlZ2lzdGVyZWQnPk1pY3Jvc29mdDwvdHJhZGVtYXJrPiBDb3Jwb3JhdGlvbi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgV2lraXBlZGlhIGhhcyBhIGdvb2QgaGlzdG9yaWNhbCBkZXNjcmlwdGlvbiBvZiB0aGUgT3BlbiBTb3VyY2UKKyAgICAgICAgUGhpbG9zb3BoeQorICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09wZW5fc291cmNlJz5oZXJlPC91bGluaz4uCisgICAgICAgIFlvdSBjYW4gYWxzbyBmaW5kIGhlbHBmdWwgaW5mb3JtYXRpb24gb24gaG93IHRvIHBhcnRpY2lwYXRlIGluIHRoZQorICAgICAgICBMaW51eCBDb21tdW5pdHkKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2xkbi5saW51eGZvdW5kYXRpb24ub3JnL2Jvb2svaG93LXBhcnRpY2lwYXRlLWxpbnV4LWNvbW11bml0eSc+aGVyZTwvdWxpbms+LgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J2dzLXRoZS1kZXZlbG9wbWVudC1ob3N0Jz4KKyAgICA8dGl0bGU+VGhlIERldmVsb3BtZW50IEhvc3Q8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIEEgZGV2ZWxvcG1lbnQgaG9zdCBvcgorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+YnVpbGQgaG9zdDwvdWxpbms+CisgICAgICAgIGlzIGtleSB0byB1c2luZyB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgQmVjYXVzZSB0aGUgZ29hbCBvZiB0aGUgWW9jdG8gUHJvamVjdCBpcyB0byBkZXZlbG9wIGltYWdlcyBvcgorICAgICAgICBhcHBsaWNhdGlvbnMgdGhhdCBydW4gb24gZW1iZWRkZWQgaGFyZHdhcmUsIGRldmVsb3BtZW50IG9mIHRob3NlCisgICAgICAgIGltYWdlcyBhbmQgYXBwbGljYXRpb25zIGdlbmVyYWxseSB0YWtlcyBwbGFjZSBvbiBhIHN5c3RlbSBub3QKKyAgICAgICAgaW50ZW5kZWQgdG8gcnVuIHRoZSBzb2Z0d2FyZSAtIHRoZSBkZXZlbG9wbWVudCBob3N0LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBZb3UgbmVlZCB0byBzZXQgdXAgYSBkZXZlbG9wbWVudCBob3N0IGluIG9yZGVyIHRvIHVzZSBpdCB3aXRoIHRoZQorICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICBNb3N0IGZpbmQgdGhhdCBpdCBpcyBiZXN0IHRvIGhhdmUgYSBuYXRpdmUgTGludXggbWFjaGluZSBmdW5jdGlvbiBhcworICAgICAgICB0aGUgZGV2ZWxvcG1lbnQgaG9zdC4KKyAgICAgICAgSG93ZXZlciwgaXQgaXMgcG9zc2libGUgdG8gdXNlIGEgc3lzdGVtIHRoYXQgZG9lcyBub3QgcnVuIExpbnV4CisgICAgICAgIGFzIGl0cyBvcGVyYXRpbmcgc3lzdGVtIGFzIHlvdXIgZGV2ZWxvcG1lbnQgaG9zdC4KKyAgICAgICAgV2hlbiB5b3UgaGF2ZSBhIE1hYyBvciBXaW5kb3dzLWJhc2VkIHN5c3RlbSwgeW91IGNhbiBzZXQgaXQgdXAKKyAgICAgICAgYXMgdGhlIGRldmVsb3BtZW50IGhvc3QgYnkgdXNpbmcKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL2Nyb3BzL2Fib3V0Lyc+Q1JPUFM8L3VsaW5rPiwKKyAgICAgICAgd2hpY2ggbGV2ZXJhZ2VzCisgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LmRvY2tlci5jb20vJz5Eb2NrZXIgQ29udGFpbmVyczwvdWxpbms+LgorICAgICAgICBPbmNlIHlvdSB0YWtlIHRoZSBzdGVwcyB0byBzZXQgdXAgYSBDUk9QUyBtYWNoaW5lLCB5b3UgZWZmZWN0aXZlbHkKKyAgICAgICAgaGF2ZSBhY2Nlc3MgdG8gYSBzaGVsbCBlbnZpcm9ubWVudCB0aGF0IGlzIHNpbWlsYXIgdG8gd2hhdCB5b3Ugc2VlCisgICAgICAgIHdoZW4gdXNpbmcgYSBMaW51eC1iYXNlZCBkZXZlbG9wbWVudCBob3N0LgorICAgICAgICBGb3IgdGhlIHN0ZXBzIG5lZWRlZCB0byBzZXQgdXAgYSBzeXN0ZW0gdXNpbmcgQ1JPUFMsIHNlZSB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NldHRpbmctdXAtdG8tdXNlLWNyb3BzJz5TZXR0aW5nIFVwIHRvIFVzZSBDUk9zcyBQbGF0Zm9ybVMgKENST1BTKTwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSWYgeW91ciBkZXZlbG9wbWVudCBob3N0IGlzIGdvaW5nIHRvIGJlIGEgc3lzdGVtIHRoYXQgcnVucyBhIExpbnV4CisgICAgICAgIGRpc3RyaWJ1dGlvbiwgc3RlcHMgc3RpbGwgZXhpc3QgdGhhdCB5b3UgbXVzdCB0YWtlIHRvIHByZXBhcmUgdGhlCisgICAgICAgIHN5c3RlbSBmb3IgdXNlIHdpdGggdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgIFlvdSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGUgTGludXggZGlzdHJpYnV0aW9uIG9uIHRoZSBzeXN0ZW0gaXMKKyAgICAgICAgb25lIHRoYXQgc3VwcG9ydHMgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgIFlvdSBhbHNvIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZSBjb3JyZWN0IHNldCBvZiBob3N0IHBhY2thZ2VzIGFyZQorICAgICAgICBpbnN0YWxsZWQgdGhhdCBhbGxvdyBkZXZlbG9wbWVudCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgRm9yIHRoZSBzdGVwcyBuZWVkZWQgdG8gc2V0IHVwIGEgZGV2ZWxvcG1lbnQgaG9zdCB0aGF0IHJ1bnMgTGludXgsCisgICAgICAgIHNlZSB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NldHRpbmctdXAtYS1uYXRpdmUtbGludXgtaG9zdCc+U2V0dGluZyBVcCBhIE5hdGl2ZSBMaW51eCBIb3N0PC91bGluaz4iCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBPbmNlIHlvdXIgZGV2ZWxvcG1lbnQgaG9zdCBpcyBzZXQgdXAgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0LAorICAgICAgICBzZXZlcmFsIG1ldGhvZHMgZXhpc3QgZm9yIHlvdSB0byBkbyB3b3JrIGluIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgIGVudmlyb25tZW50OgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db21tYW5kIExpbmVzLCBCaXRCYWtlLCBhbmQgU2hlbGxzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVHJhZGl0aW9uYWwgZGV2ZWxvcG1lbnQgaW4gdGhlIFlvY3RvIFByb2plY3QgaW52b2x2ZXMgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPiwKKyAgICAgICAgICAgICAgICB3aGljaCB1c2VzIEJpdEJha2UsIGluIGEgY29tbWFuZC1saW5lIGVudmlyb25tZW50IGZyb20gYSBzaGVsbAorICAgICAgICAgICAgICAgIG9uIHlvdXIgZGV2ZWxvcG1lbnQgaG9zdC4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGFjY29tcGxpc2ggdGhpcyBmcm9tIGEgaG9zdCB0aGF0IGlzIGEgbmF0aXZlIExpbnV4CisgICAgICAgICAgICAgICAgbWFjaGluZSBvciBmcm9tIGEgaG9zdCB0aGF0IGhhcyBiZWVuIHNldCB1cCB3aXRoIENST1BTLgorICAgICAgICAgICAgICAgIEVpdGhlciB3YXksIHlvdSBjcmVhdGUsIG1vZGlmeSwgYW5kIGJ1aWxkIGltYWdlcyBhbmQKKyAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbnMgYWxsIHdpdGhpbiBhIHNoZWxsLWJhc2VkIGVudmlyb25tZW50IHVzaW5nCisgICAgICAgICAgICAgICAgY29tcG9uZW50cyBhbmQgdG9vbHMgYXZhaWxhYmxlIHRocm91Z2ggeW91ciBMaW51eCBkaXN0cmlidXRpb24KKyAgICAgICAgICAgICAgICBhbmQgdGhlIFlvY3RvIFByb2plY3QuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIGEgZ2VuZXJhbCBmbG93IG9mIHRoZSBidWlsZCBwcm9jZWR1cmVzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1idWlsZGluZy1hLXNpbXBsZS1pbWFnZSc+QnVpbGRpbmcgYSBTaW1wbGUgSW1hZ2U8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Qm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BtZW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgRGV2ZWxvcG1lbnQgb2YgQlNQcyBpbnZvbHZlcyB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCB0bworICAgICAgICAgICAgICAgIGNyZWF0ZSBhbmQgdGVzdCBsYXllcnMgdGhhdCBhbGxvdyBlYXN5IGRldmVsb3BtZW50IG9mCisgICAgICAgICAgICAgICAgaW1hZ2VzIGFuZCBhcHBsaWNhdGlvbnMgdGFyZ2V0ZWQgZm9yIHNwZWNpZmljIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgIFRvIGRldmVsb3BtZW50IEJTUHMsIHlvdSBuZWVkIHRvIHRha2Ugc29tZSBhZGRpdGlvbmFsIHN0ZXBzCisgICAgICAgICAgICAgICAgYmV5b25kIHdoYXQgd2FzIGRlc2NyaWJlZCBpbiBzZXR0aW5nIHVwIGEgZGV2ZWxvcG1lbnQgaG9zdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5UaGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyc+WW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPgorICAgICAgICAgICAgICAgIHByb3ZpZGVzIEJTUC1yZWxhdGVkIGRldmVsb3BtZW50IGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIEZvciBzcGVjaWZpY3Mgb24gZGV2ZWxvcG1lbnQgaG9zdCBwcmVwYXJhdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNwcmVwYXJpbmcteW91ci1idWlsZC1ob3N0LXRvLXdvcmstd2l0aC1ic3AtbGF5ZXJzJz5QcmVwYXJpbmcgWW91ciBCdWlsZCBIb3N0IHRvIFdvcmsgV2l0aCBCU1AgTGF5ZXJzPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkKKyAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+S2VybmVsIERldmVsb3BtZW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgSWYgeW91IGFyZSBnb2luZyB0byBiZSBkZXZlbG9waW5nIGtlcm5lbHMgdXNpbmcgdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgUHJvamVjdCB5b3UgbGlrZWx5IHdpbGwgYmUgdXNpbmcgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICBBIHdvcmtmbG93IHVzaW5nIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gbWFrZXMga2VybmVsCisgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgcXVpY2tlciBieSByZWR1Y2luZyBpdGVyYXRpb24gY3ljbGUgdGltZXMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+VGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7Jz5Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWw8L3VsaW5rPgorICAgICAgICAgICAgICAgIHByb3ZpZGVzIGtlcm5lbC1yZWxhdGVkIGRldmVsb3BtZW50IGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgIEZvciBzcGVjaWZpY3Mgb24gZGV2ZWxvcG1lbnQgaG9zdCBwcmVwYXJhdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfREVWX1VSTDsjcHJlcGFyaW5nLXRoZS1idWlsZC1ob3N0LXRvLXdvcmstb24tdGhlLWtlcm5lbCc+UHJlcGFyaW5nIHRoZSBCdWlsZCBIb3N0IHRvIFdvcmsgb24gdGhlIEtlcm5lbDwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VXNpbmcgdGhlIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+IElERTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIE9uZSBvZiB0d28gWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBtZXRob2RzIHRoYXQgaW52b2x2ZXMgYW4KKyAgICAgICAgICAgICAgICBpbnRlcmZhY2UgdGhhdCBlZmZlY3RpdmVseSBwdXRzIHRoZSBZb2N0byBQcm9qZWN0IGludG8gdGhlCisgICAgICAgICAgICAgICAgYmFja2dyb3VuZCBpcyB0aGUgcG9wdWxhciBFY2xpcHNlIElERS4KKyAgICAgICAgICAgICAgICBUaGlzIG1ldGhvZCBvZiBkZXZlbG9wbWVudCBpcyBhZHZhbnRhZ2VvdXMgaWYgeW91IGFyZSBhbHJlYWR5CisgICAgICAgICAgICAgICAgZmFtaWxpYXIgd2l0aCB3b3JraW5nIHdpdGhpbiBFY2xpcHNlLgorICAgICAgICAgICAgICAgIERldmVsb3BtZW50IGlzIHN1cHBvcnRlZCB0aHJvdWdoIGEgcGx1Z2luIHRoYXQgeW91IGluc3RhbGwKKyAgICAgICAgICAgICAgICBvbnRvIHlvdXIgZGV2ZWxvcG1lbnQgaG9zdC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Gb3Igc3RlcHMgdGhhdCBzaG93IHlvdSBob3cgdG8gc2V0IHVwIHlvdXIgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICBob3N0IHRvIHVzZSB0aGUgRWNsaXBzZSBZb2N0byBQcm9qZWN0IHBsdWdpbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstZWNsaXBzZS1wcm9qZWN0Jz5EZXZlbG9waW5nIEFwcGxpY2F0aW9ucyBVc2luZyA8dHJhZGVtYXJrIGNsYXNzPSd0cmFkZSc+RWNsaXBzZTwvdHJhZGVtYXJrPjwvdWxpbms+IgorICAgICAgICAgICAgICAgIENoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQorICAgICAgICAgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVzaW5nIFRvYXN0ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGUgb3RoZXIgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBtZXRob2QgdGhhdCBpbnZvbHZlcyBhbgorICAgICAgICAgICAgICAgIGludGVyZmFjZSB0aGF0IGVmZmVjdGl2ZWx5IHB1dHMgdGhlIFlvY3RvIFByb2plY3QgaW50byB0aGUKKyAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kIGlzIFRvYXN0ZXIuCisgICAgICAgICAgICAgICAgVG9hc3RlciBwcm92aWRlcyBhbiBpbnRlcmZhY2UgdG8gdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgVGhlIGludGVyZmFjZSBlbmFibGVzIHlvdSB0byBjb25maWd1cmUgYW5kIHJ1biB5b3VyIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICBJbmZvcm1hdGlvbiBhYm91dCBidWlsZHMgaXMgY29sbGVjdGVkIGFuZCBzdG9yZWQgaW4gYSBkYXRhYmFzZS4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSBUb2FzdGVyIHRvIGNvbmZpZ3VyZSBhbmQgc3RhcnQgYnVpbGRzIG9uIG11bHRpcGxlCisgICAgICAgICAgICAgICAgcmVtb3RlIGJ1aWxkIHNlcnZlcnMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIHN0ZXBzIHRoYXQgc2hvdyB5b3UgaG93IHRvIHNldCB1cCB5b3VyIGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgaG9zdCB0byB1c2UgVG9hc3RlciBhbmQgb24gaG93IHRvIHVzZSBUb2FzdGVyIGluIGdlbmVyYWwsCisgICAgICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1RPQVNUX1VSTDsnPlRvYXN0ZXIgVXNlciBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0neW9jdG8tcHJvamVjdC1yZXBvc2l0b3JpZXMnPgorICAgIDx0aXRsZT5Zb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXM8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHRlYW0gbWFpbnRhaW5zIGNvbXBsZXRlIHNvdXJjZSByZXBvc2l0b3JpZXMgZm9yIGFsbAorICAgICAgICBZb2N0byBQcm9qZWN0IGZpbGVzIGF0CisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+PC91bGluaz4uCisgICAgICAgIFRoaXMgd2ViLWJhc2VkIHNvdXJjZSBjb2RlIGJyb3dzZXIgaXMgb3JnYW5pemVkIGludG8gY2F0ZWdvcmllcyBieQorICAgICAgICBmdW5jdGlvbiBzdWNoIGFzIElERSBQbHVnaW5zLCBNYXRjaGJveCwgUG9reSwgWW9jdG8gTGludXggS2VybmVsLCBhbmQKKyAgICAgICAgc28gZm9ydGguCisgICAgICAgIEZyb20gdGhlIGludGVyZmFjZSwgeW91IGNhbiBjbGljayBvbiBhbnkgcGFydGljdWxhciBpdGVtIGluIHRoZSAiTmFtZSIKKyAgICAgICAgY29sdW1uIGFuZCBzZWUgdGhlIFVSTCBhdCB0aGUgYm90dG9tIG9mIHRoZSBwYWdlIHRoYXQgeW91IG5lZWQgdG8gY2xvbmUKKyAgICAgICAgYSBHaXQgcmVwb3NpdG9yeSBmb3IgdGhhdCBwYXJ0aWN1bGFyIGl0ZW0uCisgICAgICAgIEhhdmluZyBhIGxvY2FsIEdpdCByZXBvc2l0b3J5IG9mIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4sCisgICAgICAgIHdoaWNoIGlzIHVzdWFsbHkgbmFtZWQgInBva3kiLCBhbGxvd3MKKyAgICAgICAgeW91IHRvIG1ha2UgY2hhbmdlcywgY29udHJpYnV0ZSB0byB0aGUgaGlzdG9yeSwgYW5kIHVsdGltYXRlbHkgZW5oYW5jZQorICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCdzIHRvb2xzLCBCb2FyZCBTdXBwb3J0IFBhY2thZ2VzLCBhbmQgc28gZm9ydGguCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEZvciBhbnkgc3VwcG9ydGVkIHJlbGVhc2Ugb2YgWW9jdG8gUHJvamVjdCwgeW91IGNhbiBhbHNvIGdvIHRvIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IFdlYnNpdGU8L3VsaW5rPiBhbmQKKyAgICAgICAgc2VsZWN0IHRoZSAiRE9XTkxPQURTIiBpdGVtIGZyb20gdGhlICJTT0ZUV0FSRSIgbWVudSBhbmQgZ2V0IGEKKyAgICAgICAgcmVsZWFzZWQgdGFyYmFsbCBvZiB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LCBhbnkKKyAgICAgICAgc3VwcG9ydGVkIEJTUCB0YXJiYWxsLCBvciBZb2N0byBQcm9qZWN0IHRvb2xzLgorICAgICAgICBVbnBhY2tpbmcgdGhlc2UgdGFyYmFsbHMgZ2l2ZXMgeW91IGEgc25hcHNob3Qgb2YgdGhlIHJlbGVhc2VkCisgICAgICAgIGZpbGVzLgorICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSByZWNvbW1lbmRlZCBtZXRob2QgZm9yIHNldHRpbmcgdXAgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgZmlsZXMgZm9yIHN1cHBvcnRlZCBCU1BzCisgICAgICAgICAgICAgICAgICAgIChlLmcuLCA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+KSBpcyB0byB1c2UKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2l0Jz5HaXQ8L2xpbms+IHRvIGNyZWF0ZSBhIGxvY2FsIGNvcHkgb2YKKyAgICAgICAgICAgICAgICAgICAgdGhlIHVwc3RyZWFtIHJlcG9zaXRvcmllcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIGFsd2F5cyB3b3JrIGluIG1hdGNoaW5nIGJyYW5jaGVzIGZvciBib3RoCisgICAgICAgICAgICAgICAgICAgIHRoZSBzZWxlY3RlZCBCU1AgcmVwb3NpdG9yeSBhbmQgdGhlIFNvdXJjZSBEaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSBoYXZlIGNoZWNrZWQgb3V0IHRoZSAibWFzdGVyIiBicmFuY2gKKyAgICAgICAgICAgICAgICAgICAgb2YgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBhbmQgeW91IGFyZSBnb2luZyB0byB1c2UKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiwgYmUgc3VyZSB0byBjaGVja291dCB0aGUKKyAgICAgICAgICAgICAgICAgICAgIm1hc3RlciIgYnJhbmNoIG9mIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSW4gc3VtbWFyeSwgaGVyZSBpcyB3aGVyZSB5b3UgY2FuIGdldCB0aGUgcHJvamVjdCBmaWxlcyBuZWVkZWQgZm9yCisgICAgICAgIGRldmVsb3BtZW50OgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdzb3VyY2UtcmVwb3NpdG9yaWVzJz4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz5Tb3VyY2UgUmVwb3NpdG9yaWVzOjwvdWxpbms+CisgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGlzIGFyZWEgY29udGFpbnMgSURFIFBsdWdpbnMsIE1hdGNoYm94LCBQb2t5LCBQb2t5IFN1cHBvcnQsCisgICAgICAgICAgICAgICAgVG9vbHMsIFlvY3RvIExpbnV4IEtlcm5lbCwgYW5kIFlvY3RvIE1ldGFkYXRhIExheWVycy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGNyZWF0ZSBsb2NhbCBjb3BpZXMgb2YgR2l0IHJlcG9zaXRvcmllcyBmb3IgZWFjaCBvZgorICAgICAgICAgICAgICAgIHRoZXNlIGFyZWFzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9zb3VyY2UtcmVwb3MucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNmluIiBkZXB0aD0iNGluIiAvPgorICAgICAgICAgICAgICAgIEZvciBzdGVwcyBvbiBob3cgdG8gdmlldyBhbmQgYWNjZXNzIHRoZXNlIHVwc3RyZWFtIEdpdAorICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNhY2Nlc3Npbmctc291cmNlLXJlcG9zaXRvcmllcyc+QWNjZXNzaW5nIFNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBTZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48YW5jaG9yIGlkPSdpbmRleC1kb3dubG9hZHMnIC8+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ETF9VUkw7L3JlbGVhc2VzLyc+SW5kZXggb2YgL3JlbGVhc2VzOjwvdWxpbms+CisgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGlzIGlzIGFuIGluZGV4IG9mIHJlbGVhc2VzIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICB0aGUgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz4KKyAgICAgICAgICAgICAgICBZb2N0byBQbHVnLWluLCBtaXNjZWxsYW5lb3VzIHN1cHBvcnQsIFBva3ksIFBzZXVkbywgaW5zdGFsbGVycworICAgICAgICAgICAgICAgIGZvciBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW5zLCBhbmQgYWxsIHJlbGVhc2VkIHZlcnNpb25zIG9mCisgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBpbiB0aGUgZm9ybSBvZiBpbWFnZXMgb3IgdGFyYmFsbHMuCisgICAgICAgICAgICAgICAgRG93bmxvYWRpbmcgYW5kIGV4dHJhY3RpbmcgdGhlc2UgZmlsZXMgZG9lcyBub3QgcHJvZHVjZSBhIGxvY2FsCisgICAgICAgICAgICAgICAgY29weSBvZiB0aGUgR2l0IHJlcG9zaXRvcnkgYnV0IHJhdGhlciBhIHNuYXBzaG90IG9mIGEKKyAgICAgICAgICAgICAgICBwYXJ0aWN1bGFyIHJlbGVhc2Ugb3IgaW1hZ2UuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2luZGV4LWRvd25sb2Fkcy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI2aW4iIGRlcHRoPSIzLjVpbiIgLz4KKyAgICAgICAgICAgICAgICBGb3Igc3RlcHMgb24gaG93IHRvIHZpZXcgYW5kIGFjY2VzcyB0aGVzZSBmaWxlcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNhY2Nlc3NpbmctaW5kZXgtb2YtcmVsZWFzZXMnPkFjY2Vzc2luZyBJbmRleCBvZiBSZWxlYXNlczwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdkb3dubG9hZHMtcGFnZSc+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPiJET1dOTE9BRFMiIHBhZ2UgZm9yIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsnPllvY3RvIFByb2plY3QgV2Vic2l0ZTwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+PC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+VGhlIFlvY3RvIFByb2plY3Qgd2Vic2l0ZSBpbmNsdWRlcyBhICJET1dOTE9BRFMiIHBhZ2UKKyAgICAgICAgICAgICAgICBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlICJTT0ZUV0FSRSIgbWVudSB0aGF0IGFsbG93cyB5b3UgdG8KKyAgICAgICAgICAgICAgICBkb3dubG9hZCBhbnkgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB0b29sLCBhbmQgQm9hcmQgU3VwcG9ydAorICAgICAgICAgICAgICAgIFBhY2thZ2UgKEJTUCkgaW4gdGFyYmFsbCBmb3JtLgorICAgICAgICAgICAgICAgIFRoZSB0YXJiYWxscyBhcmUgc2ltaWxhciB0byB0aG9zZSBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRExfVVJMOy9yZWxlYXNlcy8nPkluZGV4IG9mIC9yZWxlYXNlczo8L3VsaW5rPgorICAgICAgICAgICAgICAgIGFyZWEuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3lwLWRvd25sb2FkLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjZpbiIgZGVwdGg9IjRpbiIgLz4KKyAgICAgICAgICAgICAgICBGb3Igc3RlcHMgb24gaG93IHRvIHVzZSB0aGUgIkRPV05MT0FEUyIgcGFnZSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZy10aGUtZG93bmxvYWRzLXBhZ2UnPlVzaW5nIHRoZSBEb3dubG9hZHMgUGFnZTwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdncy1naXQtd29ya2Zsb3dzLWFuZC10aGUteW9jdG8tcHJvamVjdCc+CisgICAgPHRpdGxlPkdpdCBXb3JrZmxvd3MgYW5kIHRoZSBZb2N0byBQcm9qZWN0PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBEZXZlbG9waW5nIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0IGxpa2VseSByZXF1aXJlcyB0aGUgdXNlIG9mCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dpdCc+R2l0PC9saW5rPi4KKyAgICAgICAgR2l0IGlzIGEgZnJlZSwgb3BlbiBzb3VyY2UgZGlzdHJpYnV0ZWQgdmVyc2lvbiBjb250cm9sIHN5c3RlbQorICAgICAgICB1c2VkIGFzIHBhcnQgb2YgbWFueSBjb2xsYWJvcmF0aXZlIGRlc2lnbiBlbnZpcm9ubWVudHMuCisgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyB3b3JrZmxvdyBjb25jZXB0cyB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCBhbmQKKyAgICAgICAgR2l0LgorICAgICAgICBJbiBwYXJ0aWN1bGFyLCB0aGUgaW5mb3JtYXRpb24gY292ZXJzIGJhc2ljIHByYWN0aWNlcyB0aGF0IGRlc2NyaWJlCisgICAgICAgIHJvbGVzIGFuZCBhY3Rpb25zIGluIGEgY29sbGFib3JhdGl2ZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICAgICAgPG5vdGU+CisgICAgICAgICAgICBJZiB5b3UgYXJlIGZhbWlsaWFyIHdpdGggdGhpcyB0eXBlIG9mIGRldmVsb3BtZW50IGVudmlyb25tZW50LCB5b3UKKyAgICAgICAgICAgIG1pZ2h0IG5vdCB3YW50IHRvIHJlYWQgdGhpcyBzZWN0aW9uLgorICAgICAgICA8L25vdGU+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGZpbGVzIGFyZSBtYWludGFpbmVkIHVzaW5nIEdpdCBpbiAiYnJhbmNoZXMiCisgICAgICAgIHdob3NlIEdpdCBoaXN0b3JpZXMgdHJhY2sgZXZlcnkgY2hhbmdlIGFuZCB3aG9zZSBzdHJ1Y3R1cmVzCisgICAgICAgIHByb3ZpZGUgYnJhbmNoZXMgZm9yIGFsbCBkaXZlcmdpbmcgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgQWx0aG91Z2ggdGhlcmUgaXMgbm8gbmVlZCB0byB1c2UgR2l0LCBtYW55IG9wZW4gc291cmNlIHByb2plY3RzIGRvIHNvLgorICAgIDxwYXJhPgorCisgICAgPC9wYXJhPgorICAgICAgICBGb3IgdGhlIFlvY3RvIFByb2plY3QsIGEga2V5IGluZGl2aWR1YWwgY2FsbGVkIHRoZSAibWFpbnRhaW5lciIgaXMKKyAgICAgICAgcmVzcG9uc2libGUgZm9yIHRoZSBpbnRlZ3JpdHkgb2YgdGhlICJtYXN0ZXIiIGJyYW5jaCBvZiBhIGdpdmVuIEdpdAorICAgICAgICByZXBvc2l0b3J5LgorICAgICAgICBUaGUgIm1hc3RlciIgYnJhbmNoIGlzIHRoZSDigJx1cHN0cmVhbeKAnSByZXBvc2l0b3J5IGZyb20gd2hpY2ggZmluYWwgb3IKKyAgICAgICAgbW9zdCByZWNlbnQgYnVpbGRzIG9mIGEgcHJvamVjdCBvY2N1ci4KKyAgICAgICAgVGhlIG1haW50YWluZXIgaXMgcmVzcG9uc2libGUgZm9yIGFjY2VwdGluZyBjaGFuZ2VzIGZyb20gb3RoZXIKKyAgICAgICAgZGV2ZWxvcGVycyBhbmQgZm9yIG9yZ2FuaXppbmcgdGhlIHVuZGVybHlpbmcgYnJhbmNoIHN0cnVjdHVyZSB0bworICAgICAgICByZWZsZWN0IHJlbGVhc2Ugc3RyYXRlZ2llcyBhbmQgc28gZm9ydGguCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGZpbmRpbmcgb3V0IHdobyBpcyByZXNwb25zaWJsZSBmb3IgKG1haW50YWlucykKKyAgICAgICAgICAgIGEgcGFydGljdWxhciBhcmVhIG9mIGNvZGUgaW4gdGhlIFlvY3RvIFByb2plY3QsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5TdWJtaXR0aW5nIGEgQ2hhbmdlIHRvIHRoZSBZb2N0byBQcm9qZWN0PC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgPC9ub3RlPgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdCByZXBvc2l0b3J5IGFsc28gaGFzIGFuCisgICAgICAgIHVwc3RyZWFtIGNvbnRyaWJ1dGlvbiBHaXQgcmVwb3NpdG9yeSBuYW1lZAorICAgICAgICA8ZmlsZW5hbWU+cG9reS1jb250cmliPC9maWxlbmFtZT4uCisgICAgICAgIFlvdSBjYW4gc2VlIGFsbCB0aGUgYnJhbmNoZXMgaW4gdGhpcyByZXBvc2l0b3J5IHVzaW5nIHRoZSB3ZWIgaW50ZXJmYWNlCisgICAgICAgIG9mIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPiBvcmdhbml6ZWQKKyAgICAgICAgd2l0aGluIHRoZSAiUG9reSBTdXBwb3J0IiBhcmVhLgorICAgICAgICBUaGVzZSBicmFuY2hlcyBob2xkIGNoYW5nZXMgKGNvbW1pdHMpIHRvIHRoZSBwcm9qZWN0IHRoYXQgaGF2ZSBiZWVuCisgICAgICAgIHN1Ym1pdHRlZCBvciBjb21taXR0ZWQgYnkgdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgdGVhbSBhbmQgYnkKKyAgICAgICAgY29tbXVuaXR5IG1lbWJlcnMgd2hvIGNvbnRyaWJ1dGUgdG8gdGhlIHByb2plY3QuCisgICAgICAgIFRoZSBtYWludGFpbmVyIGRldGVybWluZXMgaWYgdGhlIGNoYW5nZXMgYXJlIHF1YWxpZmllZCB0byBiZSBtb3ZlZAorICAgICAgICBmcm9tIHRoZSAiY29udHJpYiIgYnJhbmNoZXMgaW50byB0aGUgIm1hc3RlciIgYnJhbmNoIG9mIHRoZSBHaXQKKyAgICAgICAgcmVwb3NpdG9yeS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRGV2ZWxvcGVycyAoaW5jbHVkaW5nIGNvbnRyaWJ1dGluZyBjb21tdW5pdHkgbWVtYmVycykgY3JlYXRlIGFuZAorICAgICAgICBtYWludGFpbiBjbG9uZWQgcmVwb3NpdG9yaWVzIG9mIHVwc3RyZWFtIGJyYW5jaGVzLgorICAgICAgICBUaGUgY2xvbmVkIHJlcG9zaXRvcmllcyBhcmUgbG9jYWwgdG8gdGhlaXIgZGV2ZWxvcG1lbnQgcGxhdGZvcm1zIGFuZAorICAgICAgICBhcmUgdXNlZCB0byBkZXZlbG9wIGNoYW5nZXMuCisgICAgICAgIFdoZW4gYSBkZXZlbG9wZXIgaXMgc2F0aXNmaWVkIHdpdGggYSBwYXJ0aWN1bGFyIGZlYXR1cmUgb3IgY2hhbmdlLAorICAgICAgICB0aGV5ICJwdXNoIiB0aGUgY2hhbmdlIHRvIHRoZSBhcHByb3ByaWF0ZSAiY29udHJpYiIgcmVwb3NpdG9yeS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgRGV2ZWxvcGVycyBhcmUgcmVzcG9uc2libGUgZm9yIGtlZXBpbmcgdGhlaXIgbG9jYWwgcmVwb3NpdG9yeQorICAgICAgICB1cC10by1kYXRlIHdpdGggd2hhdGV2ZXIgdXBzdHJlYW0gYnJhbmNoIHRoZXkgYXJlIHdvcmtpbmcgYWdhaW5zdC4KKyAgICAgICAgVGhleSBhcmUgYWxzbyByZXNwb25zaWJsZSBmb3Igc3RyYWlnaHRlbmluZyBvdXQgYW55IGNvbmZsaWN0cyB0aGF0CisgICAgICAgIG1pZ2h0IGFyaXNlIHdpdGhpbiBmaWxlcyB0aGF0IGFyZSBiZWluZyB3b3JrZWQgb24gc2ltdWx0YW5lb3VzbHkgYnkKKyAgICAgICAgbW9yZSB0aGFuIG9uZSBwZXJzb24uCisgICAgICAgIEFsbCB0aGlzIHdvcmsgaXMgZG9uZSBsb2NhbGx5IG9uIHRoZSBkZXZlbG9wbWVudCBob3N0IGJlZm9yZQorICAgICAgICBhbnl0aGluZyBpcyBwdXNoZWQgdG8gYSAiY29udHJpYiIgYXJlYSBhbmQgZXhhbWluZWQgYXQgdGhlIG1haW50YWluZXLigJlzCisgICAgICAgIGxldmVsLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBBIHNvbWV3aGF0IGZvcm1hbCBtZXRob2QgZXhpc3RzIGJ5IHdoaWNoIGRldmVsb3BlcnMgY29tbWl0IGNoYW5nZXMKKyAgICAgICAgYW5kIHB1c2ggdGhlbSBpbnRvIHRoZSAiY29udHJpYiIgYXJlYSBhbmQgc3Vic2VxdWVudGx5IHJlcXVlc3QgdGhhdAorICAgICAgICB0aGUgbWFpbnRhaW5lciBpbmNsdWRlIHRoZW0gaW50byBhbiB1cHN0cmVhbSBicmFuY2guCisgICAgICAgIFRoaXMgcHJvY2VzcyBpcyBjYWxsZWQg4oCcc3VibWl0dGluZyBhIHBhdGNo4oCdIG9yICJzdWJtaXR0aW5nIGEgY2hhbmdlLiIKKyAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHN1Ym1pdHRpbmcgcGF0Y2hlcyBhbmQgY2hhbmdlcywgc2VlIHRoZQorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjaG93LXRvLXN1Ym1pdC1hLWNoYW5nZSc+U3VibWl0dGluZyBhIENoYW5nZSB0byB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSW4gc3VtbWFyeSwgYSBzaW5nbGUgcG9pbnQgb2YgZW50cnkKKyAgICAgICAgZXhpc3RzIGZvciBjaGFuZ2VzIGludG8gYSAibWFzdGVyIiBvciBkZXZlbG9wbWVudCBicmFuY2ggb2YgdGhlCisgICAgICAgIEdpdCByZXBvc2l0b3J5LCB3aGljaCBpcyBjb250cm9sbGVkIGJ5IHRoZSBwcm9qZWN04oCZcyBtYWludGFpbmVyLgorICAgICAgICBBbmQsIGEgc2V0IG9mIGRldmVsb3BlcnMgZXhpc3Qgd2hvIGluZGVwZW5kZW50bHkgZGV2ZWxvcCwgdGVzdCwgYW5kCisgICAgICAgIHN1Ym1pdCBjaGFuZ2VzIHRvICJjb250cmliIiBhcmVhcyBmb3IgdGhlIG1haW50YWluZXIgdG8gZXhhbWluZS4KKyAgICAgICAgVGhlIG1haW50YWluZXIgdGhlbiBjaG9vc2VzIHdoaWNoIGNoYW5nZXMgYXJlIGdvaW5nIHRvIGJlY29tZSBhCisgICAgICAgIHBlcm1hbmVudCBwYXJ0IG9mIHRoZSBwcm9qZWN0LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZ2l0LXdvcmtmbG93LnBuZyIgd2lkdGg9IjZpbiIgZGVwdGg9IjNpbiIgYWxpZ249ImxlZnQiIHNjYWxlZml0PSIxIiAvPgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBXaGlsZSBlYWNoIGRldmVsb3BtZW50IGVudmlyb25tZW50IGlzIHVuaXF1ZSwgdGhlcmUgYXJlIHNvbWUgYmVzdAorICAgICAgICBwcmFjdGljZXMgb3IgbWV0aG9kcyB0aGF0IGhlbHAgZGV2ZWxvcG1lbnQgcnVuIHNtb290aGx5LgorICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgZGVzY3JpYmVzIHNvbWUgb2YgdGhlc2UgcHJhY3RpY2VzLgorICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBHaXQgd29ya2Zsb3dzLCBzZWUgdGhlIHdvcmtmbG93IHRvcGljcyBpbgorICAgICAgICB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2Jvb2suZ2l0LXNjbS5jb20nPkdpdCBDb21tdW5pdHkgQm9vazwvdWxpbms+LgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIFNtYWxsIENoYW5nZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJdCBpcyBiZXN0IHRvIGtlZXAgdGhlIGNoYW5nZXMgeW91IGNvbW1pdCBzbWFsbCBhcyBjb21wYXJlZCB0bworICAgICAgICAgICAgICAgIGJ1bmRsaW5nIG1hbnkgZGlzcGFyYXRlIGNoYW5nZXMgaW50byBhIHNpbmdsZSBjb21taXQuCisgICAgICAgICAgICAgICAgVGhpcyBwcmFjdGljZSBub3Qgb25seSBrZWVwcyB0aGluZ3MgbWFuYWdlYWJsZSBidXQgYWxzbyBhbGxvd3MKKyAgICAgICAgICAgICAgICB0aGUgbWFpbnRhaW5lciB0byBtb3JlIGVhc2lseSBpbmNsdWRlIG9yIHJlZnVzZSBjaGFuZ2VzLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIENvbXBsZXRlIENoYW5nZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJdCBpcyBhbHNvIGdvb2QgcHJhY3RpY2UgdG8gbGVhdmUgdGhlIHJlcG9zaXRvcnkgaW4gYQorICAgICAgICAgICAgICAgIHN0YXRlIHRoYXQgYWxsb3dzIHlvdSB0byBzdGlsbCBzdWNjZXNzZnVsbHkgYnVpbGQgeW91ciBwcm9qZWN0LgorICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCBkbyBub3QgY29tbWl0IGhhbGYgb2YgYSBmZWF0dXJlLAorICAgICAgICAgICAgICAgIHRoZW4gYWRkIHRoZSBvdGhlciBoYWxmIGFzIGEgc2VwYXJhdGUsIGxhdGVyIGNvbW1pdC4KKyAgICAgICAgICAgICAgICBFYWNoIGNvbW1pdCBzaG91bGQgdGFrZSB5b3UgZnJvbSBvbmUgYnVpbGRhYmxlIHByb2plY3Qgc3RhdGUKKyAgICAgICAgICAgICAgICB0byBhbm90aGVyIGJ1aWxkYWJsZSBzdGF0ZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VXNlIEJyYW5jaGVzIExpYmVyYWxseTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEl0IGlzIHZlcnkgZWFzeSB0byBjcmVhdGUsIHVzZSwgYW5kIGRlbGV0ZSBsb2NhbCBicmFuY2hlcyBpbgorICAgICAgICAgICAgICAgIHlvdXIgd29ya2luZyBHaXQgcmVwb3NpdG9yeSBvbiB0aGUgZGV2ZWxvcG1lbnQgaG9zdC4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIG5hbWUgdGhlc2UgYnJhbmNoZXMgYW55dGhpbmcgeW91IGxpa2UuCisgICAgICAgICAgICAgICAgSXQgaXMgaGVscGZ1bCB0byBnaXZlIHRoZW0gbmFtZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXJ0aWN1bGFyCisgICAgICAgICAgICAgICAgZmVhdHVyZSBvciBjaGFuZ2Ugb24gd2hpY2ggeW91IGFyZSB3b3JraW5nLgorICAgICAgICAgICAgICAgIE9uY2UgeW91IGFyZSBkb25lIHdpdGggYSBmZWF0dXJlIG9yIGNoYW5nZSBhbmQgaGF2ZSBtZXJnZWQgaXQKKyAgICAgICAgICAgICAgICBpbnRvIHlvdXIgbG9jYWwgbWFzdGVyIGJyYW5jaCwgc2ltcGx5IGRpc2NhcmQgdGhlIHRlbXBvcmFyeQorICAgICAgICAgICAgICAgIGJyYW5jaC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWVyZ2UgQ2hhbmdlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Z2l0IG1lcmdlPC9maWxlbmFtZT4gY29tbWFuZCBhbGxvd3MgeW91IHRvIHRha2UKKyAgICAgICAgICAgICAgICB0aGUgY2hhbmdlcyBmcm9tIG9uZSBicmFuY2ggYW5kIGZvbGQgdGhlbSBpbnRvIGFub3RoZXIgYnJhbmNoLgorICAgICAgICAgICAgICAgIFRoaXMgcHJvY2VzcyBpcyBlc3BlY2lhbGx5IGhlbHBmdWwgd2hlbiBtb3JlIHRoYW4gYSBzaW5nbGUKKyAgICAgICAgICAgICAgICBkZXZlbG9wZXIgbWlnaHQgYmUgd29ya2luZyBvbiBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIHNhbWUKKyAgICAgICAgICAgICAgICBmZWF0dXJlLgorICAgICAgICAgICAgICAgIE1lcmdpbmcgY2hhbmdlcyBhbHNvIGF1dG9tYXRpY2FsbHkgaWRlbnRpZmllcyBhbnkgY29sbGlzaW9ucworICAgICAgICAgICAgICAgIG9yICJjb25mbGljdHMiIHRoYXQgbWlnaHQgaGFwcGVuIGFzIGEgcmVzdWx0IG9mIHRoZSBzYW1lIGxpbmVzCisgICAgICAgICAgICAgICAgb2YgY29kZSBiZWluZyBhbHRlcmVkIGJ5IHR3byBkaWZmZXJlbnQgZGV2ZWxvcGVycy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFuYWdlIEJyYW5jaGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQmVjYXVzZSBicmFuY2hlcyBhcmUgZWFzeSB0byB1c2UsIHlvdSBzaG91bGQgdXNlIGEgc3lzdGVtCisgICAgICAgICAgICAgICAgd2hlcmUgYnJhbmNoZXMgaW5kaWNhdGUgdmFyeWluZyBsZXZlbHMgb2YgY29kZSByZWFkaW5lc3MuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBjYW4gaGF2ZSBhICJ3b3JrIiBicmFuY2ggdG8gZGV2ZWxvcCBpbiwgYQorICAgICAgICAgICAgICAgICJ0ZXN0IiBicmFuY2ggd2hlcmUgdGhlIGNvZGUgb3IgY2hhbmdlIGlzIHRlc3RlZCwgYSAic3RhZ2UiCisgICAgICAgICAgICAgICAgYnJhbmNoIHdoZXJlIGNoYW5nZXMgYXJlIHJlYWR5IHRvIGJlIGNvbW1pdHRlZCwgYW5kIHNvIGZvcnRoLgorICAgICAgICAgICAgICAgIEFzIHlvdXIgcHJvamVjdCBkZXZlbG9wcywgeW91IGNhbiBtZXJnZSBjb2RlIGFjcm9zcyB0aGUKKyAgICAgICAgICAgICAgICBicmFuY2hlcyB0byByZWZsZWN0IGV2ZXItaW5jcmVhc2luZyBzdGFibGUgc3RhdGVzIG9mIHRoZQorICAgICAgICAgICAgICAgIGRldmVsb3BtZW50LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Vc2UgUHVzaCBhbmQgUHVsbDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSBwdXNoLXB1bGwgd29ya2Zsb3cgaXMgYmFzZWQgb24gdGhlIGNvbmNlcHQgb2YgZGV2ZWxvcGVycworICAgICAgICAgICAgICAgICJwdXNoaW5nIiBsb2NhbCBjb21taXRzIHRvIGEgcmVtb3RlIHJlcG9zaXRvcnksIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgdXN1YWxseSBhIGNvbnRyaWJ1dGlvbiByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgIFRoaXMgd29ya2Zsb3cgaXMgYWxzbyBiYXNlZCBvbiBkZXZlbG9wZXJzICJwdWxsaW5nIiBrbm93bgorICAgICAgICAgICAgICAgIHN0YXRlcyBvZiB0aGUgcHJvamVjdCBkb3duIGludG8gdGhlaXIgbG9jYWwgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXMuCisgICAgICAgICAgICAgICAgVGhlIHdvcmtmbG93IGVhc2lseSBhbGxvd3MgeW91IHRvIHB1bGwgY2hhbmdlcyBzdWJtaXR0ZWQgYnkKKyAgICAgICAgICAgICAgICBvdGhlciBkZXZlbG9wZXJzIGZyb20gdGhlIHVwc3RyZWFtIHJlcG9zaXRvcnkgaW50byB5b3VyCisgICAgICAgICAgICAgICAgd29yayBhcmVhIGVuc3VyaW5nIHRoYXQgeW91IGhhdmUgdGhlIG1vc3QgcmVjZW50IHNvZnR3YXJlCisgICAgICAgICAgICAgICAgb24gd2hpY2ggdG8gZGV2ZWxvcC4KKyAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBoYXMgdHdvIHNjcmlwdHMgbmFtZWQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y3JlYXRlLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZW5kLXB1bGwtcmVxdWVzdDwvZmlsZW5hbWU+IHRoYXQgc2hpcCB3aXRoIHRoZQorICAgICAgICAgICAgICAgIHJlbGVhc2UgdG8gZmFjaWxpdGF0ZSB0aGlzIHdvcmtmbG93LgorICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGVzZSBzY3JpcHRzIGluIHRoZSA8ZmlsZW5hbWU+c2NyaXB0czwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgZm9sZGVyIG9mIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGVzZSBzY3JpcHRzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3B1c2hpbmctYS1jaGFuZ2UtdXBzdHJlYW0nPlVzaW5nIFNjcmlwdHMgdG8gUHVzaCBhIENoYW5nZSBVcHN0cmVhbSBhbmQgUmVxdWVzdCBhIFB1bGw8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UGF0Y2ggV29ya2Zsb3c6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGlzIHdvcmtmbG93IGFsbG93cyB5b3UgdG8gbm90aWZ5IHRoZSBtYWludGFpbmVyIHRocm91Z2ggYW4KKyAgICAgICAgICAgICAgICBlbWFpbCB0aGF0IHlvdSBoYXZlIGEgY2hhbmdlIChvciBwYXRjaCkgeW91IHdvdWxkIGxpa2UKKyAgICAgICAgICAgICAgICBjb25zaWRlcmVkIGZvciB0aGUgIm1hc3RlciIgYnJhbmNoIG9mIHRoZSBHaXQgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICBUbyBzZW5kIHRoaXMgdHlwZSBvZiBjaGFuZ2UsIHlvdSBmb3JtYXQgdGhlIHBhdGNoIGFuZCB0aGVuCisgICAgICAgICAgICAgICAgc2VuZCB0aGUgZW1haWwgdXNpbmcgdGhlIEdpdCBjb21tYW5kcworICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgZm9ybWF0LXBhdGNoPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBzZW5kLWVtYWlsPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlc2Ugc2NyaXB0cywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5TdWJtaXR0aW5nIGEgQ2hhbmdlIHRvIHRoZSBZb2N0byBQcm9qZWN0PC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9J2dpdCc+CisgICAgPHRpdGxlPkdpdDwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgbWFrZXMgZXh0ZW5zaXZlIHVzZSBvZiBHaXQsIHdoaWNoIGlzIGEKKyAgICAgICAgZnJlZSwgb3BlbiBzb3VyY2UgZGlzdHJpYnV0ZWQgdmVyc2lvbiBjb250cm9sIHN5c3RlbS4KKyAgICAgICAgR2l0IHN1cHBvcnRzIGRpc3RyaWJ1dGVkIGRldmVsb3BtZW50LCBub24tbGluZWFyIGRldmVsb3BtZW50LAorICAgICAgICBhbmQgY2FuIGhhbmRsZSBsYXJnZSBwcm9qZWN0cy4KKyAgICAgICAgSXQgaXMgYmVzdCB0aGF0IHlvdSBoYXZlIHNvbWUgZnVuZGFtZW50YWwgdW5kZXJzdGFuZGluZworICAgICAgICBvZiBob3cgR2l0IHRyYWNrcyBwcm9qZWN0cyBhbmQgaG93IHRvIHdvcmsgd2l0aCBHaXQgaWYKKyAgICAgICAgeW91IGFyZSBnb2luZyB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QgZm9yIGRldmVsb3BtZW50LgorICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgYSBxdWljayBvdmVydmlldyBvZiBob3cgR2l0IHdvcmtzIGFuZAorICAgICAgICBwcm92aWRlcyB5b3Ugd2l0aCBhIHN1bW1hcnkgb2Ygc29tZSBlc3NlbnRpYWwgR2l0IGNvbW1hbmRzLgorICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEdpdCwgc2VlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQtc2NtLmNvbS9kb2N1bWVudGF0aW9uJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCB0byBkb3dubG9hZCBHaXQsIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IGFkZAorICAgICAgICAgICAgICAgICAgICBHaXQgdG8geW91ciBzeXN0ZW0gdGhyb3VnaCB5b3VyIGRpc3RyaWJ1dGlvbidzICJzb2Z0d2FyZQorICAgICAgICAgICAgICAgICAgICBzdG9yZSIgKGUuZy4gZm9yIFVidW50dSwgdXNlIHRoZSBVYnVudHUgU29mdHdhcmUgZmVhdHVyZSkuCisgICAgICAgICAgICAgICAgICAgIEZvciB0aGUgR2l0IGRvd25sb2FkIHBhZ2UsIHNlZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LXNjbS5jb20vZG93bmxvYWQnPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBiZXlvbmQgdGhlIGludHJvZHVjdG9yeSBuYXR1cmUgaW4gdGhpcworICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNsb2NhdGluZy15b2N0by1wcm9qZWN0LXNvdXJjZS1maWxlcyc+TG9jYXRpbmcgWW9jdG8gUHJvamVjdCBTb3VyY2UgRmlsZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVwb3NpdG9yaWVzLXRhZ3MtYW5kLWJyYW5jaGVzJz4KKyAgICAgICAgPHRpdGxlPlJlcG9zaXRvcmllcywgVGFncywgYW5kIEJyYW5jaGVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFzIG1lbnRpb25lZCBicmllZmx5IGluIHRoZSBwcmV2aW91cyBzZWN0aW9uIGFuZCBhbHNvIGluIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2dzLWdpdC13b3JrZmxvd3MtYW5kLXRoZS15b2N0by1wcm9qZWN0Jz5HaXQgV29ya2Zsb3dzIGFuZCB0aGUgWW9jdG8gUHJvamVjdDwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLCB0aGUgWW9jdG8gUHJvamVjdCBtYWludGFpbnMgc291cmNlIHJlcG9zaXRvcmllcyBhdAorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz48L3VsaW5rPi4KKyAgICAgICAgICAgIElmIHlvdSBsb29rIGF0IHRoaXMgd2ViLWludGVyZmFjZSBvZiB0aGUgcmVwb3NpdG9yaWVzLCBlYWNoIGl0ZW0KKyAgICAgICAgICAgIGlzIGEgc2VwYXJhdGUgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEdpdCByZXBvc2l0b3JpZXMgdXNlIGJyYW5jaGluZyB0ZWNobmlxdWVzIHRoYXQgdHJhY2sgY29udGVudAorICAgICAgICAgICAgY2hhbmdlIChub3QgZmlsZXMpIHdpdGhpbiBhIHByb2plY3QgKGUuZy4gYSBuZXcgZmVhdHVyZSBvciB1cGRhdGVkCisgICAgICAgICAgICBkb2N1bWVudGF0aW9uKS4KKyAgICAgICAgICAgIENyZWF0aW5nIGEgdHJlZS1saWtlIHN0cnVjdHVyZSBiYXNlZCBvbiBwcm9qZWN0IGRpdmVyZ2VuY2UgYWxsb3dzCisgICAgICAgICAgICBmb3IgZXhjZWxsZW50IGhpc3RvcmljYWwgaW5mb3JtYXRpb24gb3ZlciB0aGUgbGlmZSBvZiBhIHByb2plY3QuCisgICAgICAgICAgICBUaGlzIG1ldGhvZG9sb2d5IGFsc28gYWxsb3dzIGZvciBhbiBlbnZpcm9ubWVudCBmcm9tIHdoaWNoIHlvdSBjYW4KKyAgICAgICAgICAgIGRvIGxvdHMgb2YgbG9jYWwgZXhwZXJpbWVudGF0aW9uIG9uIHByb2plY3RzIGFzIHlvdSBkZXZlbG9wCisgICAgICAgICAgICBjaGFuZ2VzIG9yIG5ldyBmZWF0dXJlcy4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQSBHaXQgcmVwb3NpdG9yeSByZXByZXNlbnRzIGFsbCBkZXZlbG9wbWVudCBlZmZvcnRzIGZvciBhIGdpdmVuCisgICAgICAgICAgICBwcm9qZWN0LgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBHaXQgcmVwb3NpdG9yeSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGNvbnRhaW5zCisgICAgICAgICAgICBhbGwgY2hhbmdlcyBhbmQgZGV2ZWxvcG1lbnRzIGZvciB0aGF0IHJlcG9zaXRvcnkgb3ZlciB0aGUgY291cnNlCisgICAgICAgICAgICBvZiBpdHMgZW50aXJlIGxpZmUuCisgICAgICAgICAgICBUaGF0IG1lYW5zIHRoYXQgYWxsIGNoYW5nZXMgdGhhdCBtYWtlIHVwIGFsbCByZWxlYXNlcyBhcmUgY2FwdHVyZWQuCisgICAgICAgICAgICBUaGUgcmVwb3NpdG9yeSBtYWludGFpbnMgYSBjb21wbGV0ZSBoaXN0b3J5IG9mIGNoYW5nZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gY3JlYXRlIGEgbG9jYWwgY29weSBvZiBhbnkgcmVwb3NpdG9yeSBieSAiY2xvbmluZyIgaXQKKyAgICAgICAgICAgIHdpdGggdGhlIDxmaWxlbmFtZT5naXQgY2xvbmU8L2ZpbGVuYW1lPiBjb21tYW5kLgorICAgICAgICAgICAgV2hlbiB5b3UgY2xvbmUgYSBHaXQgcmVwb3NpdG9yeSwgeW91IGVuZCB1cCB3aXRoIGFuIGlkZW50aWNhbAorICAgICAgICAgICAgY29weSBvZiB0aGUgcmVwb3NpdG9yeSBvbiB5b3VyIGRldmVsb3BtZW50IHN5c3RlbS4KKyAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgYSBsb2NhbCBjb3B5IG9mIGEgcmVwb3NpdG9yeSwgeW91IGNhbiB0YWtlIHN0ZXBzIHRvCisgICAgICAgICAgICBkZXZlbG9wIGxvY2FsbHkuCisgICAgICAgICAgICBGb3IgZXhhbXBsZXMgb24gaG93IHRvIGNsb25lIEdpdCByZXBvc2l0b3JpZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNsb2NhdGluZy15b2N0by1wcm9qZWN0LXNvdXJjZS1maWxlcyc+TG9jYXRpbmcgWW9jdG8gUHJvamVjdCBTb3VyY2UgRmlsZXM8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGF0IEdpdCB0cmFja3MgY29udGVudCBjaGFuZ2UgYW5kCisgICAgICAgICAgICBub3QgZmlsZXMuCisgICAgICAgICAgICBHaXQgdXNlcyAiYnJhbmNoZXMiIHRvIG9yZ2FuaXplIGRpZmZlcmVudCBkZXZlbG9wbWVudCBlZmZvcnRzLgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgaGFzCisgICAgICAgICAgICBzZXZlcmFsIGJyYW5jaGVzIHRoYXQgaW5jbHVkZSB0aGUgY3VycmVudCAiJkRJU1RST19OQU1FX05PX0NBUDsiCisgICAgICAgICAgICBicmFuY2gsIHRoZSAibWFzdGVyIiBicmFuY2gsIGFuZCBtYW55IGJyYW5jaGVzIGZvciBwYXN0CisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2VzLgorICAgICAgICAgICAgWW91IGNhbiBzZWUgYWxsIHRoZSBicmFuY2hlcyBieSBnb2luZyB0bworICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpL3Bva3kvJz48L3VsaW5rPiBhbmQKKyAgICAgICAgICAgIGNsaWNraW5nIG9uIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9wb2t5L3JlZnMvaGVhZHMnPlsuLi5dPC91bGluaz48L2ZpbGVuYW1lPgorICAgICAgICAgICAgbGluayBiZW5lYXRoIHRoZSAiQnJhbmNoIiBoZWFkaW5nLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBFYWNoIG9mIHRoZXNlIGJyYW5jaGVzIHJlcHJlc2VudHMgYSBzcGVjaWZpYyBhcmVhIG9mIGRldmVsb3BtZW50LgorICAgICAgICAgICAgVGhlICJtYXN0ZXIiIGJyYW5jaCByZXByZXNlbnRzIHRoZSBjdXJyZW50IG9yIG1vc3QgcmVjZW50CisgICAgICAgICAgICBkZXZlbG9wbWVudC4KKyAgICAgICAgICAgIEFsbCBvdGhlciBicmFuY2hlcyByZXByZXNlbnQgb2Zmc2hvb3RzIG9mIHRoZSAibWFzdGVyIiBicmFuY2guCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoZW4geW91IGNyZWF0ZSBhIGxvY2FsIGNvcHkgb2YgYSBHaXQgcmVwb3NpdG9yeSwgdGhlIGNvcHkgaGFzCisgICAgICAgICAgICB0aGUgc2FtZSBzZXQgb2YgYnJhbmNoZXMgYXMgdGhlIG9yaWdpbmFsLgorICAgICAgICAgICAgVGhpcyBtZWFucyB5b3UgY2FuIHVzZSBHaXQgdG8gY3JlYXRlIGEgbG9jYWwgd29ya2luZyBhcmVhCisgICAgICAgICAgICAoYWxzbyBjYWxsZWQgYSBicmFuY2gpIHRoYXQgdHJhY2tzIGEgc3BlY2lmaWMgZGV2ZWxvcG1lbnQgYnJhbmNoCisgICAgICAgICAgICBmcm9tIHRoZSB1cHN0cmVhbSBzb3VyY2UgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICBpbiBvdGhlciB3b3JkcywgeW91IGNhbiBkZWZpbmUgeW91ciBsb2NhbCBHaXQgZW52aXJvbm1lbnQgdG8KKyAgICAgICAgICAgIHdvcmsgb24gYW55IGRldmVsb3BtZW50IGJyYW5jaCBpbiB0aGUgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIFRvIGhlbHAgaWxsdXN0cmF0ZSwgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlIEdpdCBjb21tYW5kczoKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+CisgICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3kKKyAgICAgJCBjZCBwb2t5CisgICAgICQgZ2l0IGNoZWNrb3V0IC1iICZESVNUUk9fTkFNRV9OT19DQVA7IG9yaWdpbi8mRElTVFJPX05BTUVfTk9fQ0FQOworICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGV4YW1wbGUgYWZ0ZXIgbW92aW5nIHRvIHRoZSBob21lIGRpcmVjdG9yeSwgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IGNsb25lPC9maWxlbmFtZT4gY29tbWFuZCBjcmVhdGVzIGEKKyAgICAgICAgICAgIGxvY2FsIGNvcHkgb2YgdGhlIHVwc3RyZWFtIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICBCeSBkZWZhdWx0LCBHaXQgY2hlY2tzIG91dCB0aGUgIm1hc3RlciIgYnJhbmNoIGZvciB5b3VyIHdvcmsuCisgICAgICAgICAgICBBZnRlciBjaGFuZ2luZyB0aGUgd29ya2luZyBkaXJlY3RvcnkgdG8gdGhlIG5ldyBsb2NhbCByZXBvc2l0b3J5CisgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KSwgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IGNoZWNrb3V0PC9maWxlbmFtZT4gY29tbWFuZCBjcmVhdGVzCisgICAgICAgICAgICBhbmQgY2hlY2tzIG91dCBhIGxvY2FsIGJyYW5jaCBuYW1lZCAiJkRJU1RST19OQU1FX05PX0NBUDsiLCB3aGljaAorICAgICAgICAgICAgdHJhY2tzIHRoZSB1cHN0cmVhbSAib3JpZ2luLyZESVNUUk9fTkFNRV9OT19DQVA7IiBicmFuY2guCisgICAgICAgICAgICBDaGFuZ2VzIHlvdSBtYWtlIHdoaWxlIGluIHRoaXMgYnJhbmNoIHdvdWxkIHVsdGltYXRlbHkgYWZmZWN0CisgICAgICAgICAgICB0aGUgdXBzdHJlYW0gIiZESVNUUk9fTkFNRV9OT19DQVA7IiBicmFuY2ggb2YgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoYXQgd2hlbiB5b3UgY3JlYXRlIGFuZCBjaGVja291dCBhCisgICAgICAgICAgICBsb2NhbCB3b3JraW5nIGJyYW5jaCBiYXNlZCBvbiBhIGJyYW5jaCBuYW1lLAorICAgICAgICAgICAgeW91ciBsb2NhbCBlbnZpcm9ubWVudCBtYXRjaGVzIHRoZSAidGlwIiBvZiB0aGF0IHBhcnRpY3VsYXIKKyAgICAgICAgICAgIGRldmVsb3BtZW50IGJyYW5jaCBhdCB0aGUgdGltZSB5b3UgY3JlYXRlZCB5b3VyIGxvY2FsIGJyYW5jaCwKKyAgICAgICAgICAgIHdoaWNoIGNvdWxkIGJlIGRpZmZlcmVudCBmcm9tIHRoZSBmaWxlcyBpbiB0aGUgIm1hc3RlciIgYnJhbmNoCisgICAgICAgICAgICBvZiB0aGUgdXBzdHJlYW0gcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCBjcmVhdGluZyBhbmQgY2hlY2tpbmcgb3V0IGEgbG9jYWwgYnJhbmNoIGJhc2VkIG9uCisgICAgICAgICAgICB0aGUgIiZESVNUUk9fTkFNRV9OT19DQVA7IiBicmFuY2ggbmFtZSBpcyBub3QgdGhlIHNhbWUgYXMKKyAgICAgICAgICAgIGNoZWNraW5nIG91dCB0aGUgIm1hc3RlciIgYnJhbmNoIGluIHRoZSByZXBvc2l0b3J5LgorICAgICAgICAgICAgS2VlcCByZWFkaW5nIHRvIHNlZSBob3cgeW91IGNyZWF0ZSBhIGxvY2FsIHNuYXBzaG90IG9mIGEgWW9jdG8KKyAgICAgICAgICAgIFByb2plY3QgUmVsZWFzZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgR2l0IHVzZXMgInRhZ3MiIHRvIG1hcmsgc3BlY2lmaWMgY2hhbmdlcyBpbiBhIHJlcG9zaXRvcnkgYnJhbmNoCisgICAgICAgICAgICBzdHJ1Y3R1cmUuCisgICAgICAgICAgICBUeXBpY2FsbHksIGEgdGFnIGlzIHVzZWQgdG8gbWFyayBhIHNwZWNpYWwgcG9pbnQgc3VjaCBhcyB0aGUgZmluYWwKKyAgICAgICAgICAgIGNoYW5nZSAob3IgY29tbWl0KSBiZWZvcmUgYSBwcm9qZWN0IGlzIHJlbGVhc2VkLgorICAgICAgICAgICAgWW91IGNhbiBzZWUgdGhlIHRhZ3MgdXNlZCB3aXRoIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdAorICAgICAgICAgICAgcmVwb3NpdG9yeSBieSBnb2luZyB0bworICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpL3Bva3kvJz48L3VsaW5rPiBhbmQKKyAgICAgICAgICAgIGNsaWNraW5nIG9uIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9wb2t5L3JlZnMvdGFncyc+Wy4uLl08L3VsaW5rPjwvZmlsZW5hbWU+CisgICAgICAgICAgICBsaW5rIGJlbmVhdGggdGhlICJUYWciIGhlYWRpbmcuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFNvbWUga2V5IHRhZ3MgZm9yIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgYXJlCisgICAgICAgICAgICA8ZmlsZW5hbWU+amV0aHJvLTE0LjAuMzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgPGZpbGVuYW1lPm1vcnR5LTE2LjAuMTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgPGZpbGVuYW1lPnB5cm8tMTcuMC4wPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPiZESVNUUk9fTkFNRV9OT19DQVA7LSZQT0tZVkVSU0lPTjs8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIFRoZXNlIHRhZ3MgcmVwcmVzZW50IFlvY3RvIFByb2plY3QgcmVsZWFzZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoZW4geW91IGNyZWF0ZSBhIGxvY2FsIGNvcHkgb2YgdGhlIEdpdCByZXBvc2l0b3J5LCB5b3UgYWxzbworICAgICAgICAgICAgaGF2ZSBhY2Nlc3MgdG8gYWxsIHRoZSB0YWdzIGluIHRoZSB1cHN0cmVhbSByZXBvc2l0b3J5LgorICAgICAgICAgICAgU2ltaWxhciB0byBicmFuY2hlcywgeW91IGNhbiBjcmVhdGUgYW5kIGNoZWNrb3V0IGEgbG9jYWwgd29ya2luZworICAgICAgICAgICAgR2l0IGJyYW5jaCBiYXNlZCBvbiBhIHRhZyBuYW1lLgorICAgICAgICAgICAgV2hlbiB5b3UgZG8gdGhpcywgeW91IGdldCBhIHNuYXBzaG90IG9mIHRoZSBHaXQgcmVwb3NpdG9yeSB0aGF0CisgICAgICAgICAgICByZWZsZWN0cyB0aGUgc3RhdGUgb2YgdGhlIGZpbGVzIHdoZW4gdGhlIGNoYW5nZSB3YXMgbWFkZSBhc3NvY2lhdGVkCisgICAgICAgICAgICB3aXRoIHRoYXQgdGFnLgorICAgICAgICAgICAgVGhlIG1vc3QgY29tbW9uIHVzZSBpcyB0byBjaGVja291dCBhIHdvcmtpbmcgYnJhbmNoIHRoYXQgbWF0Y2hlcworICAgICAgICAgICAgYSBzcGVjaWZpYyBZb2N0byBQcm9qZWN0IHJlbGVhc2UuCisgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgfgorICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5CisgICAgICQgY2QgcG9reQorICAgICAkIGdpdCBmZXRjaCAtLXRhZ3MKKyAgICAgJCBnaXQgY2hlY2tvdXQgdGFncy9yb2Nrby0xOC4wLjAgLWIgbXlfcm9ja28tMTguMC4wCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZSBuYW1lIG9mIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5IG9mIHlvdXIKKyAgICAgICAgICAgIGxvY2FsIFlvY3RvIFByb2plY3QgcmVwb3NpdG9yeSBpcyA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgQWZ0ZXIgbW92aW5nIHRvIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGRpcmVjdG9yeSwgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0IGZldGNoPC9maWxlbmFtZT4gY29tbWFuZCBtYWtlcyBhbGwgdGhlIHVwc3RyZWFtCisgICAgICAgICAgICB0YWdzIGF2YWlsYWJsZSBsb2NhbGx5IGluIHlvdXIgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIEZpbmFsbHksIHRoZSA8ZmlsZW5hbWU+Z2l0IGNoZWNrb3V0PC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgY3JlYXRlcyBhbmQgY2hlY2tzIG91dCBhIGJyYW5jaCBuYW1lZCAibXktcm9ja28tMTguMC4wIiB0aGF0IGlzCisgICAgICAgICAgICBiYXNlZCBvbiB0aGUgdXBzdHJlYW0gYnJhbmNoIHdob3NlICJIRUFEIiBtYXRjaGVzIHRoZQorICAgICAgICAgICAgY29tbWl0IGluIHRoZSByZXBvc2l0b3J5IGFzc29jaWF0ZWQgd2l0aCB0aGUgInJvY2tvLTE4LjAuMCIgdGFnLgorICAgICAgICAgICAgVGhlIGZpbGVzIGluIHlvdXIgcmVwb3NpdG9yeSBub3cgZXhhY3RseSBtYXRjaCB0aGF0IHBhcnRpY3VsYXIKKyAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSBhcyBpdCBpcyB0YWdnZWQgaW4gdGhlIHVwc3RyZWFtIEdpdAorICAgICAgICAgICAgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoYXQgd2hlbiB5b3UgY3JlYXRlIGFuZAorICAgICAgICAgICAgY2hlY2tvdXQgYSBsb2NhbCB3b3JraW5nIGJyYW5jaCBiYXNlZCBvbiBhIHRhZywgeW91ciBlbnZpcm9ubWVudAorICAgICAgICAgICAgbWF0Y2hlcyBhIHNwZWNpZmljIHBvaW50IGluIHRpbWUgYW5kIG5vdCB0aGUgZW50aXJlIGRldmVsb3BtZW50CisgICAgICAgICAgICBicmFuY2ggKGkuZS4gZnJvbSB0aGUgInRpcCIgb2YgdGhlIGJyYW5jaCBiYWNrd2FyZHMpLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2Jhc2ljLWNvbW1hbmRzJz4KKyAgICAgICAgPHRpdGxlPkJhc2ljIENvbW1hbmRzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEdpdCBoYXMgYW4gZXh0ZW5zaXZlIHNldCBvZiBjb21tYW5kcyB0aGF0IGxldHMgeW91IG1hbmFnZSBjaGFuZ2VzCisgICAgICAgICAgICBhbmQgcGVyZm9ybSBjb2xsYWJvcmF0aW9uIG92ZXIgdGhlIGxpZmUgb2YgYSBwcm9qZWN0LgorICAgICAgICAgICAgQ29udmVuaWVudGx5IHRob3VnaCwgeW91IGNhbiBtYW5hZ2Ugd2l0aCBhIHNtYWxsIHNldCBvZiBiYXNpYworICAgICAgICAgICAgb3BlcmF0aW9ucyBhbmQgd29ya2Zsb3dzIG9uY2UgeW91IHVuZGVyc3RhbmQgdGhlIGJhc2ljCisgICAgICAgICAgICBwaGlsb3NvcGh5IGJlaGluZCBHaXQuCisgICAgICAgICAgICBZb3UgZG8gbm90IGhhdmUgdG8gYmUgYW4gZXhwZXJ0IGluIEdpdCB0byBiZSBmdW5jdGlvbmFsLgorICAgICAgICAgICAgQSBnb29kIHBsYWNlIHRvIGxvb2sgZm9yIGluc3RydWN0aW9uIG9uIGEgbWluaW1hbCBzZXQgb2YgR2l0CisgICAgICAgICAgICBjb21tYW5kcyBpcworICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC1zY20uY29tL2RvY3VtZW50YXRpb24nPmhlcmU8L3VsaW5rPi4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IG9mIEdpdCBjb21tYW5kcyBicmllZmx5IGRlc2NyaWJlcyBzb21lIGJhc2ljCisgICAgICAgICAgICBHaXQgb3BlcmF0aW9ucyBhcyBhIHdheSB0byBnZXQgc3RhcnRlZC4KKyAgICAgICAgICAgIEFzIHdpdGggYW55IHNldCBvZiBjb21tYW5kcywgdGhpcyBsaXN0IChpbiBtb3N0IGNhc2VzKSBzaW1wbHkgc2hvd3MKKyAgICAgICAgICAgIHRoZSBiYXNlIGNvbW1hbmQgYW5kIG9taXRzIHRoZSBtYW55IGFyZ3VtZW50cyBpdCBzdXBwb3J0cy4KKyAgICAgICAgICAgIFNlZSB0aGUgR2l0IGRvY3VtZW50YXRpb24gZm9yIGNvbXBsZXRlIGRlc2NyaXB0aW9ucyBhbmQgc3RyYXRlZ2llcworICAgICAgICAgICAgb24gaG93IHRvIHVzZSB0aGVzZSBjb21tYW5kczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBpbml0PC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZXMgYW4gZW1wdHkgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgdXNlIEdpdCBjb21tYW5kcyB1bmxlc3MgeW91IGhhdmUgYQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmdpdDwvZmlsZW5hbWU+IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nZ2l0LWNvbW1hbmRzLWNsb25lJz4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgY2xvbmU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDcmVhdGVzIGEgbG9jYWwgY2xvbmUgb2YgYSBHaXQgcmVwb3NpdG9yeSB0aGF0IGlzIG9uCisgICAgICAgICAgICAgICAgICAgIGVxdWFsIGZvb3Rpbmcgd2l0aCBhIGZlbGxvdyBkZXZlbG9wZXLigJlzIEdpdCByZXBvc2l0b3J5CisgICAgICAgICAgICAgICAgICAgIG9yIGFuIHVwc3RyZWFtIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgYWRkPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgTG9jYWxseSBzdGFnZXMgdXBkYXRlZCBmaWxlIGNvbnRlbnRzIHRvIHRoZSBpbmRleCB0aGF0CisgICAgICAgICAgICAgICAgICAgIEdpdCB1c2VzIHRvIHRyYWNrIGNoYW5nZXMuCisgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IHN0YWdlIGFsbCBmaWxlcyB0aGF0IGhhdmUgY2hhbmdlZCBiZWZvcmUgeW91CisgICAgICAgICAgICAgICAgICAgIGNhbiBjb21taXQgdGhlbS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBjb21taXQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDcmVhdGVzIGEgbG9jYWwgImNvbW1pdCIgdGhhdCBkb2N1bWVudHMgdGhlIGNoYW5nZXMgeW91CisgICAgICAgICAgICAgICAgICAgIG1hZGUuCisgICAgICAgICAgICAgICAgICAgIE9ubHkgY2hhbmdlcyB0aGF0IGhhdmUgYmVlbiBzdGFnZWQgY2FuIGJlIGNvbW1pdHRlZC4KKyAgICAgICAgICAgICAgICAgICAgQ29tbWl0cyBhcmUgdXNlZCBmb3IgaGlzdG9yaWNhbCBwdXJwb3NlcywgZm9yIGRldGVybWluaW5nCisgICAgICAgICAgICAgICAgICAgIGlmIGEgbWFpbnRhaW5lciBvZiBhIHByb2plY3Qgd2lsbCBhbGxvdyB0aGUgY2hhbmdlLAorICAgICAgICAgICAgICAgICAgICBhbmQgZm9yIHVsdGltYXRlbHkgcHVzaGluZyB0aGUgY2hhbmdlIGZyb20geW91ciBsb2NhbAorICAgICAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeSBpbnRvIHRoZSBwcm9qZWN04oCZcyB1cHN0cmVhbSByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IHN0YXR1czwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFJlcG9ydHMgYW55IG1vZGlmaWVkIGZpbGVzIHRoYXQgcG9zc2libHkgbmVlZCB0byBiZQorICAgICAgICAgICAgICAgICAgICBzdGFnZWQgYW5kIGdpdmVzIHlvdSBhIHN0YXR1cyBvZiB3aGVyZSB5b3Ugc3RhbmQgcmVnYXJkaW5nCisgICAgICAgICAgICAgICAgICAgIGxvY2FsIGNvbW1pdHMgYXMgY29tcGFyZWQgdG8gdGhlIHVwc3RyZWFtIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgY2hlY2tvdXQ8L2ZpbGVuYW1lPiA8cmVwbGFjZWFibGU+YnJhbmNoLW5hbWU8L3JlcGxhY2VhYmxlPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDaGFuZ2VzIHlvdXIgbG9jYWwgd29ya2luZyBicmFuY2ggYW5kIGluIHRoaXMgZm9ybQorICAgICAgICAgICAgICAgICAgICBhc3N1bWVzIHRoZSBsb2NhbCBicmFuY2ggYWxyZWFkeSBleGlzdHMuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCBpcyBhbmFsb2dvdXMgdG8gImNkIi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBjaGVja291dCDigJNiPC9maWxlbmFtZT4gPHJlcGxhY2VhYmxlPndvcmtpbmctYnJhbmNoPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPnVwc3RyZWFtLWJyYW5jaDwvcmVwbGFjZWFibGU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENyZWF0ZXMgYW5kIGNoZWNrcyBvdXQgYSB3b3JraW5nIGJyYW5jaCBvbiB5b3VyIGxvY2FsCisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUuCisgICAgICAgICAgICAgICAgICAgIFRoZSBsb2NhbCBicmFuY2ggdHJhY2tzIHRoZSB1cHN0cmVhbSBicmFuY2guCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHlvdXIgbG9jYWwgYnJhbmNoIHRvIGlzb2xhdGUgeW91ciB3b3JrLgorICAgICAgICAgICAgICAgICAgICBJdCBpcyBhIGdvb2QgaWRlYSB0byB1c2UgbG9jYWwgYnJhbmNoZXMgd2hlbiBhZGRpbmcKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgZmVhdHVyZXMgb3IgY2hhbmdlcy4KKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgaXNvbGF0ZWQgYnJhbmNoZXMgZmFjaWxpdGF0ZXMgZWFzeSByZW1vdmFsIG9mCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZXMgaWYgdGhleSBkbyBub3Qgd29yayBvdXQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBicmFuY2g8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBEaXNwbGF5cyB0aGUgZXhpc3RpbmcgbG9jYWwgYnJhbmNoZXMgYXNzb2NpYXRlZCB3aXRoIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgbG9jYWwgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJyYW5jaCB0aGF0IHlvdSBoYXZlIGN1cnJlbnRseSBjaGVja2VkIG91dCBpcyBub3RlZAorICAgICAgICAgICAgICAgICAgICB3aXRoIGFuIGFzdGVyaXNrIGNoYXJhY3Rlci4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBicmFuY2ggLUQ8L2ZpbGVuYW1lPiA8cmVwbGFjZWFibGU+YnJhbmNoLW5hbWU8L3JlcGxhY2VhYmxlPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBEZWxldGVzIGFuIGV4aXN0aW5nIGxvY2FsIGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gYmUgaW4gYSBsb2NhbCBicmFuY2ggb3RoZXIgdGhhbiB0aGUgb25lIHlvdQorICAgICAgICAgICAgICAgICAgICBhcmUgZGVsZXRpbmcgaW4gb3JkZXIgdG8gZGVsZXRlCisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5icmFuY2gtbmFtZTwvcmVwbGFjZWFibGU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IHB1bGwgLS1yZWJhc2U8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gZnJvbSBhbiB1cHN0cmVhbSBHaXQgcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgICAgICBhbmQgcGxhY2VzIGl0IGluIHlvdXIgbG9jYWwgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIFlvdSB1c2UgdGhpcyBjb21tYW5kIHRvIG1ha2Ugc3VyZSB5b3UgYXJlIHN5bmNocm9uaXplZCB3aXRoCisgICAgICAgICAgICAgICAgICAgIHRoZSByZXBvc2l0b3J5IGZyb20gd2hpY2ggeW91IGFyZSBiYXNpbmcgY2hhbmdlcworICAgICAgICAgICAgICAgICAgICAoLmUuZy4gdGhlICJtYXN0ZXIiIGJyYW5jaCkuCisgICAgICAgICAgICAgICAgICAgIFRoZSAiLS1yZWJhc2UiIG9wdGlvbiBlbnN1cmVzIHRoYXQgYW55IGxvY2FsIGNvbW1pdHMgeW91CisgICAgICAgICAgICAgICAgICAgIGhhdmUgaW4geW91ciBicmFuY2ggYXJlIHByZXNlcnZlZCBhdCB0aGUgdG9wIG9mIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgbG9jYWwgYnJhbmNoLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IHB1c2g8L2ZpbGVuYW1lPiA8cmVwbGFjZWFibGU+cmVwby1uYW1lPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPmxvY2FsLWJyYW5jaDwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPjo8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT51cHN0cmVhbS1icmFuY2g8L3JlcGxhY2VhYmxlPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBTZW5kcyBhbGwgeW91ciBjb21taXR0ZWQgbG9jYWwgY2hhbmdlcyB0byB0aGUgdXBzdHJlYW0gR2l0CisgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgdGhhdCB5b3VyIGxvY2FsIHJlcG9zaXRvcnkgaXMgdHJhY2tpbmcKKyAgICAgICAgICAgICAgICAgICAgKGUuZy4gYSBjb250cmlidXRpb24gcmVwb3NpdG9yeSkuCisgICAgICAgICAgICAgICAgICAgIFRoZSBtYWludGFpbmVyIG9mIHRoZSBwcm9qZWN0IGRyYXdzIGZyb20gdGhlc2UgcmVwb3NpdG9yaWVzCisgICAgICAgICAgICAgICAgICAgIHRvIG1lcmdlIGNoYW5nZXMgKGNvbW1pdHMpIGludG8gdGhlIGFwcHJvcHJpYXRlIGJyYW5jaAorICAgICAgICAgICAgICAgICAgICBvZiBwcm9qZWN0J3MgdXBzdHJlYW0gcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBtZXJnZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENvbWJpbmVzIG9yIGFkZHMgY2hhbmdlcyBmcm9tIG9uZQorICAgICAgICAgICAgICAgICAgICBsb2NhbCBicmFuY2ggb2YgeW91ciByZXBvc2l0b3J5IHdpdGggYW5vdGhlciBicmFuY2guCisgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IGNyZWF0ZSBhIGxvY2FsIEdpdCByZXBvc2l0b3J5LCB0aGUgZGVmYXVsdCBicmFuY2gKKyAgICAgICAgICAgICAgICAgICAgaXMgbmFtZWQgIm1hc3RlciIuCisgICAgICAgICAgICAgICAgICAgIEEgdHlwaWNhbCB3b3JrZmxvdyBpcyB0byBjcmVhdGUgYSB0ZW1wb3JhcnkgYnJhbmNoIHRoYXQgaXMKKyAgICAgICAgICAgICAgICAgICAgYmFzZWQgb2ZmICJtYXN0ZXIiIHRoYXQgeW91IHdvdWxkIHVzZSBmb3IgaXNvbGF0ZWQgd29yay4KKyAgICAgICAgICAgICAgICAgICAgWW91IHdvdWxkIG1ha2UgeW91ciBjaGFuZ2VzIGluIHRoYXQgaXNvbGF0ZWQgYnJhbmNoLAorICAgICAgICAgICAgICAgICAgICBzdGFnZSBhbmQgY29tbWl0IHRoZW0gbG9jYWxseSwgc3dpdGNoIHRvIHRoZSAibWFzdGVyIgorICAgICAgICAgICAgICAgICAgICBicmFuY2gsIGFuZCB0aGVuIHVzZSB0aGUgPGZpbGVuYW1lPmdpdCBtZXJnZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgdG8gYXBwbHkgdGhlIGNoYW5nZXMgZnJvbSB5b3VyIGlzb2xhdGVkIGJyYW5jaAorICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSBjdXJyZW50bHkgY2hlY2tlZCBvdXQgYnJhbmNoIChlLmcuICJtYXN0ZXIiKS4KKyAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgdGhlIG1lcmdlIGlzIGNvbXBsZXRlIGFuZCBpZiB5b3UgYXJlIGRvbmUgd2l0aAorICAgICAgICAgICAgICAgICAgICB3b3JraW5nIGluIHRoYXQgaXNvbGF0ZWQgYnJhbmNoLCB5b3UgY2FuIHNhZmVseSBkZWxldGUKKyAgICAgICAgICAgICAgICAgICAgdGhlIGlzb2xhdGVkIGJyYW5jaC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBjaGVycnktcGljazwvZmlsZW5hbWU+IDxyZXBsYWNlYWJsZT5jb21taXRzPC9yZXBsYWNlYWJsZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ2hvb3NlIGFuZCBhcHBseSBzcGVjaWZpYyBjb21taXRzIGZyb20gb25lIGJyYW5jaAorICAgICAgICAgICAgICAgICAgICBpbnRvIGFub3RoZXIgYnJhbmNoLgorICAgICAgICAgICAgICAgICAgICBUaGVyZSBhcmUgdGltZXMgd2hlbiB5b3UgbWlnaHQgbm90IGJlIGFibGUgdG8gbWVyZ2UKKyAgICAgICAgICAgICAgICAgICAgYWxsIHRoZSBjaGFuZ2VzIGluIG9uZSBicmFuY2ggd2l0aAorICAgICAgICAgICAgICAgICAgICBhbm90aGVyIGJ1dCBuZWVkIHRvIHBpY2sgb3V0IGNlcnRhaW4gb25lcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdGs8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBQcm92aWRlcyBhIEdVSSB2aWV3IG9mIHRoZSBicmFuY2hlcyBhbmQgY2hhbmdlcyBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgIGxvY2FsIEdpdCByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQgaXMgYSBnb29kIHdheSB0byBncmFwaGljYWxseSBzZWUgd2hlcmUgdGhpbmdzCisgICAgICAgICAgICAgICAgICAgIGhhdmUgZGl2ZXJnZWQgaW4geW91ciBsb2NhbCByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGluc3RhbGwgdGhlIDxmaWxlbmFtZT5naXRrPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2Ugb24geW91ciBkZXZlbG9wbWVudCBzeXN0ZW0gdG8gdXNlIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBsb2c8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBSZXBvcnRzIGEgaGlzdG9yeSBvZiB5b3VyIGNvbW1pdHMgdG8gdGhlIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVwb3J0IGxpc3RzIGFsbCBjb21taXRzIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB5b3UKKyAgICAgICAgICAgICAgICAgICAgaGF2ZSBwdXNoZWQgdGhlbSB1cHN0cmVhbSBvciBub3QuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgZGlmZjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIERpc3BsYXlzIGxpbmUtYnktbGluZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGEgbG9jYWwKKyAgICAgICAgICAgICAgICAgICAgd29ya2luZyBmaWxlIGFuZCB0aGUgc2FtZSBmaWxlIGFzIHVuZGVyc3Rvb2QgYnkgR2l0LgorICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQgaXMgdXNlZnVsIHRvIHNlZSB3aGF0IHlvdSBoYXZlIGNoYW5nZWQKKyAgICAgICAgICAgICAgICAgICAgaW4gYW55IGdpdmVuIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdsaWNlbnNpbmcnPgorICAgIDx0aXRsZT5MaWNlbnNpbmc8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIEJlY2F1c2Ugb3BlbiBzb3VyY2UgcHJvamVjdHMgYXJlIG9wZW4gdG8gdGhlIHB1YmxpYywgdGhleSBoYXZlCisgICAgICAgIGRpZmZlcmVudCBsaWNlbnNpbmcgc3RydWN0dXJlcyBpbiBwbGFjZS4KKyAgICAgICAgTGljZW5zZSBldm9sdXRpb24gZm9yIGJvdGggT3BlbiBTb3VyY2UgYW5kIEZyZWUgU29mdHdhcmUgaGFzIGFuCisgICAgICAgIGludGVyZXN0aW5nIGhpc3RvcnkuCisgICAgICAgIElmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiB0aGlzIGhpc3RvcnksIHlvdSBjYW4gZmluZCBiYXNpYyBpbmZvcm1hdGlvbgorICAgICAgICBoZXJlOgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3Blbi1zb3VyY2VfbGljZW5zZSc+T3BlbiBzb3VyY2UgbGljZW5zZSBoaXN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZyZWVfc29mdHdhcmVfbGljZW5zZSc+RnJlZSBzb2Z0d2FyZSBsaWNlbnNlIGhpc3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgSW4gZ2VuZXJhbCwgdGhlIFlvY3RvIFByb2plY3QgaXMgYnJvYWRseSBsaWNlbnNlZCB1bmRlciB0aGUKKyAgICAgICAgTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSAoTUlUKSBMaWNlbnNlLgorICAgICAgICBNSVQgbGljZW5zaW5nIHBlcm1pdHMgdGhlIHJldXNlIG9mIHNvZnR3YXJlIHdpdGhpbiBwcm9wcmlldGFyeQorICAgICAgICBzb2Z0d2FyZSBhcyBsb25nIGFzIHRoZSBsaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIHdpdGggdGhhdCBzb2Z0d2FyZS4KKyAgICAgICAgTUlUIGlzIGFsc28gY29tcGF0aWJsZSB3aXRoIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKS4KKyAgICAgICAgUGF0Y2hlcyB0byB0aGUgWW9jdG8gUHJvamVjdCBmb2xsb3cgdGhlIHVwc3RyZWFtIGxpY2Vuc2luZyBzY2hlbWUuCisgICAgICAgIFlvdSBjYW4gZmluZCBpbmZvcm1hdGlvbiBvbiB0aGUgTUlUIGxpY2Vuc2UKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHAnPmhlcmU8L3VsaW5rPi4KKyAgICAgICAgWW91IGNhbiBmaW5kIGluZm9ybWF0aW9uIG9uIHRoZSBHTlUgR1BMCisgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTEdQTC0zLjAnPmhlcmU8L3VsaW5rPi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgV2hlbiB5b3UgYnVpbGQgYW4gaW1hZ2UgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QsIHRoZSBidWlsZCBwcm9jZXNzCisgICAgICAgIHVzZXMgYSBrbm93biBsaXN0IG9mIGxpY2Vuc2VzIHRvIGVuc3VyZSBjb21wbGlhbmNlLgorICAgICAgICBZb3UgY2FuIGZpbmQgdGhpcyBsaXN0IGluIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgYXQgPGZpbGVuYW1lPm1ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzPC9maWxlbmFtZT4uCisgICAgICAgIE9uY2UgdGhlIGJ1aWxkIGNvbXBsZXRlcywgdGhlIGxpc3Qgb2YgYWxsIGxpY2Vuc2VzIGZvdW5kIGFuZCB1c2VkCisgICAgICAgIGR1cmluZyB0aGF0IGJ1aWxkIGFyZSBrZXB0IGluIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgIGF0IDxmaWxlbmFtZT50bXAvZGVwbG95L2xpY2Vuc2VzPC9maWxlbmFtZT4uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIElmIGEgbW9kdWxlIHJlcXVpcmVzIGEgbGljZW5zZSB0aGF0IGlzIG5vdCBpbiB0aGUgYmFzZSBsaXN0LCB0aGUKKyAgICAgICAgYnVpbGQgcHJvY2VzcyBnZW5lcmF0ZXMgYSB3YXJuaW5nIGR1cmluZyB0aGUgYnVpbGQuCisgICAgICAgIFRoZXNlIHRvb2xzIG1ha2UgaXQgZWFzaWVyIGZvciBhIGRldmVsb3BlciB0byBiZSBjZXJ0YWluIG9mIHRoZQorICAgICAgICBsaWNlbnNlcyB3aXRoIHdoaWNoIHRoZWlyIHNoaXBwZWQgcHJvZHVjdHMgbXVzdCBjb21wbHkuCisgICAgICAgIEhvd2V2ZXIsIGV2ZW4gd2l0aCB0aGVzZSB0b29scyBpdCBpcyBzdGlsbCB1cCB0byB0aGUgZGV2ZWxvcGVyIHRvCisgICAgICAgIHJlc29sdmUgcG90ZW50aWFsIGxpY2Vuc2luZyBpc3N1ZXMuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSBiYXNlIGxpc3Qgb2YgbGljZW5zZXMgdXNlZCBieSB0aGUgYnVpbGQgcHJvY2VzcyBpcyBhIGNvbWJpbmF0aW9uCisgICAgICAgIG9mIHRoZSBTb2Z0d2FyZSBQYWNrYWdlIERhdGEgRXhjaGFuZ2UgKFNQRFgpIGxpc3QgYW5kIHRoZSBPcGVuCisgICAgICAgIFNvdXJjZSBJbml0aWF0aXZlIChPU0kpIHByb2plY3RzLgorICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vc3BkeC5vcmcnPlNQRFggR3JvdXA8L3VsaW5rPiBpcyBhIHdvcmtpbmcgZ3JvdXAgb2YKKyAgICAgICAgdGhlIExpbnV4IEZvdW5kYXRpb24gdGhhdCBtYWludGFpbnMgYSBzcGVjaWZpY2F0aW9uIGZvciBhIHN0YW5kYXJkCisgICAgICAgIGZvcm1hdCBmb3IgY29tbXVuaWNhdGluZyB0aGUgY29tcG9uZW50cywgbGljZW5zZXMsIGFuZCBjb3B5cmlnaHRzCisgICAgICAgIGFzc29jaWF0ZWQgd2l0aCBhIHNvZnR3YXJlIHBhY2thZ2UuCisgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9vcGVuc291cmNlLm9yZyc+T1NJPC91bGluaz4gaXMgYSBjb3Jwb3JhdGlvbgorICAgICAgICBkZWRpY2F0ZWQgdG8gdGhlIE9wZW4gU291cmNlIERlZmluaXRpb24gYW5kIHRoZSBlZmZvcnQgZm9yIHJldmlld2luZworICAgICAgICBhbmQgYXBwcm92aW5nIGxpY2Vuc2VzIHRoYXQgY29uZm9ybSB0byB0aGUgT3BlbiBTb3VyY2UgRGVmaW5pdGlvbgorICAgICAgICAoT1NEKS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgWW91IGNhbiBmaW5kIGEgbGlzdCBvZiB0aGUgY29tYmluZWQgU1BEWCBhbmQgT1NJIGxpY2Vuc2VzIHRoYXQgdGhlCisgICAgICAgIFlvY3RvIFByb2plY3QgdXNlcyBpbiB0aGUKKyAgICAgICAgPGZpbGVuYW1lPm1ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzPC9maWxlbmFtZT4gZGlyZWN0b3J5IGluIHlvdXIKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBGb3IgaW5mb3JtYXRpb24gdGhhdCBjYW4gaGVscCB5b3UgbWFpbnRhaW4gY29tcGxpYW5jZSB3aXRoIHZhcmlvdXMKKyAgICAgICAgb3BlbiBzb3VyY2UgbGljZW5zaW5nIGR1cmluZyB0aGUgbGlmZWN5Y2xlIG9mIGEgcHJvZHVjdCBjcmVhdGVkIHVzaW5nCisgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LCBzZWUgdGhlCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtYWludGFpbmluZy1vcGVuLXNvdXJjZS1saWNlbnNlLWNvbXBsaWFuY2UtZHVyaW5nLXlvdXItcHJvZHVjdHMtbGlmZWN5Y2xlJz5NYWludGFpbmluZyBPcGVuIFNvdXJjZSBMaWNlbnNlIENvbXBsaWFuY2UgRHVyaW5nIFlvdXIgUHJvZHVjdCdzIExpZmVjeWNsZTwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+Cis8L2NoYXB0ZXI+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwtZWNsaXBzZS1jdXN0b21pemF0aW9uLnhzbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwtZWNsaXBzZS1jdXN0b21pemF0aW9uLnhzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWY5OWVhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1lY2xpcHNlLWN1c3RvbWl6YXRpb24ueHNsCkBAIC0wLDAgKzEsMzUgQEAKKzw/eG1sIHZlcnNpb249JzEuMCc/PgorPHhzbDpzdHlsZXNoZWV0CisJeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iCisJeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiCisJeG1sbnM6Zm89Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML0Zvcm1hdCIKKwl2ZXJzaW9uPSIxLjAiPgorCisgIDx4c2w6aW1wb3J0IGhyZWY9Imh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3IvZG9jYm9vay1taXJyb3IvZG9jYm9vay14c2wtMS43Ni4xL2VjbGlwc2UvZWNsaXBzZTMueHNsIiAvPgorCis8IS0tCisKKyAgPHhzbDppbXBvcnQgaHJlZj0iLi4vdGVtcGxhdGUvMS43Ni4xL2RvY2Jvb2steHNsLTEuNzYuMS9lY2xpcHNlL2VjbGlwc2UzLnhzbCIgLz4KKworICA8eHNsOmltcG9ydAorCSAgaHJlZj0iaHR0cDovL2RvY2Jvb2suc291cmNlZm9yZ2UubmV0L3JlbGVhc2UveHNsLzEuNzYuMS9lY2xpcHNlL2VjbGlwc2UzLnhzbCIgLz4KKworLS0+CisKKyAgPHhzbDpwYXJhbSBuYW1lPSJjaHVua2VyLm91dHB1dC5pbmRlbnQiIHNlbGVjdD0iJ3llcyciLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJjaHVuay5xdWlldGx5IiBzZWxlY3Q9IjEiLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJjaHVuay5maXJzdC5zZWN0aW9ucyIgc2VsZWN0PSIxIi8+CisgIDx4c2w6cGFyYW0gbmFtZT0iY2h1bmsuc2VjdGlvbi5kZXB0aCIgc2VsZWN0PSIxMCIvPgorICA8eHNsOnBhcmFtIG5hbWU9InVzZS5pZC5hcy5maWxlbmFtZSIgc2VsZWN0PSIxIi8+CisgIDx4c2w6cGFyYW0gbmFtZT0idWxpbmsudGFyZ2V0IiBzZWxlY3Q9Iidfc2VsZiciIC8+CisgIDx4c2w6cGFyYW0gbmFtZT0iYmFzZS5kaXIiIHNlbGVjdD0iJ2h0bWwvb3ZlcnZpZXctbWFudWFsLyciLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJodG1sLnN0eWxlc2hlZXQiIHNlbGVjdD0iJy4uL2Jvb2suY3NzJyIvPgorICA8eHNsOnBhcmFtIG5hbWU9ImVjbGlwc2UubWFuaWZlc3QiIHNlbGVjdD0iMCIvPgorICA8eHNsOnBhcmFtIG5hbWU9ImNyZWF0ZS5wbHVnaW4ueG1sIiBzZWxlY3Q9IjAiLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJzdXBwcmVzcy5uYXZpZ2F0aW9uIiBzZWxlY3Q9IjEiLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJnZW5lcmF0ZS5pbmRleCIgc2VsZWN0PSIwIi8+CisgIDx4c2w6cGFyYW0gbmFtZT0iY2hhcHRlci5hdXRvbGFiZWwiIHNlbGVjdD0iMSIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJhcHBlbmRpeC5hdXRvbGFiZWwiIHNlbGVjdD0iMSIgLz4KKyAgPHhzbDpwYXJhbSBuYW1lPSJzZWN0aW9uLmF1dG9sYWJlbCIgc2VsZWN0PSIxIiAvPgorICA8eHNsOnBhcmFtIG5hbWU9InNlY3Rpb24ubGFiZWwuaW5jbHVkZXMuY29tcG9uZW50LmxhYmVsIiBzZWxlY3Q9IjEiIC8+Cis8L3hzbDpzdHlsZXNoZWV0PgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1pbnRyby54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWludHJvLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTQzM2FhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1pbnRyby54bWwKQEAgLTAsMCArMSwxMTIgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+CisKKzxjaGFwdGVyIGlkPSdvdmVydmlldy1tYW51YWwtaW50cm8nPgorCis8dGl0bGU+VGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbDwvdGl0bGU+CisgICAgPHNlY3Rpb24gaWQ9J292ZXJ2aWV3LW1hbnVhbC13ZWxjb21lJz4KKyAgICAgICAgPHRpdGxlPldlbGNvbWU8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2VsY29tZSB0byB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsIQorICAgICAgICAgICAgVGhpcyBtYW51YWwgaW50cm9kdWNlcyB0aGUgWW9jdG8gUHJvamVjdCBieSBwcm92aWRpbmcgY29uY2VwdHMsCisgICAgICAgICAgICBzb2Z0d2FyZSBvdmVydmlld3MsIGJlc3Qta25vd24tbWV0aG9kcyAoQktNcyksIGFuZCBhbnkgb3RoZXIKKyAgICAgICAgICAgIGhpZ2gtbGV2ZWwgaW50cm9kdWN0b3J5IGluZm9ybWF0aW9uIHN1aXRhYmxlIGZvciBhIG5ldyBZb2N0bworICAgICAgICAgICAgUHJvamVjdCB1c2VyLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgZGVzY3JpYmVzIHdoYXQgeW91IGNhbiBnZXQgZnJvbSB0aGlzIG1hbnVhbDoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGxpbmsgbGlua2VuZD0nb3ZlcnZpZXcteXAnPkludHJvZHVjaW5nIHRoZSBZb2N0byBQcm9qZWN0PC9saW5rPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIGNoYXB0ZXIgcHJvdmlkZXMgYW4gaW50cm9kdWN0aW9uIHRvIHRoZSBZb2N0bworICAgICAgICAgICAgICAgICAgICBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICBZb3Ugd2lsbCBsZWFybiBhYm91dCBmZWF0dXJlcyBhbmQgY2hhbGxlbmdlcyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCwgdGhlIGxheWVyIG1vZGVsLCBjb21wb25lbnRzIGFuZCB0b29scywKKyAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgbWV0aG9kcywgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Bva3knPlBva3k8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2UgZGlzdHJpYnV0aW9uLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICB3b3JrZmxvdywgYW5kIHNvbWUgYmFzaWMgWW9jdG8gdGVybXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxsaW5rIGxpbmtlbmQ9J292ZXJ2aWV3LWRldmVsb3BtZW50LWVudmlyb25tZW50Jz5UaGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDwvbGluaz46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBjaGFwdGVyIGhlbHBzIHlvdSBnZXQgc3RhcnRlZCB1bmRlcnN0YW5kaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgICAgICBZb3Ugd2lsbCBsZWFybiBhYm91dCBvcGVuIHNvdXJjZSwgZGV2ZWxvcG1lbnQgaG9zdHMsCisgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3Qgc291cmNlIHJlcG9zaXRvcmllcywgd29ya2Zsb3dzIHVzaW5nIEdpdAorICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIFlvY3RvIFByb2plY3QsIGEgR2l0IHByaW1lciwgYW5kIGluZm9ybWF0aW9uCisgICAgICAgICAgICAgICAgICAgIGFib3V0IGxpY2Vuc2luZy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGxpbmsgbGlua2VuZD0nb3ZlcnZpZXctbWFudWFsLWNvbmNlcHRzJz5Zb2N0byBQcm9qZWN0IENvbmNlcHRzPC9saW5rPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIGNoYXB0ZXIgcHJlc2VudHMgdmFyaW91cyBjb25jZXB0cyByZWdhcmRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBjb25jZXB0dWFsIGluZm9ybWF0aW9uIGFib3V0IGNvbXBvbmVudHMsCisgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50LCBjcm9zcy10b29sY2hhaW5zLCBhbmQgc28gZm9ydGguCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgbWFudWFsIGRvZXMgbm90IGdpdmUgeW91IHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlN0ZXAtYnktc3RlcCBJbnN0cnVjdGlvbnMgZm9yIERldmVsb3BtZW50IFRhc2tzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEluc3RydWN0aW9uYWwgcHJvY2VkdXJlcyByZXNpZGUgaW4gb3RoZXIgbWFudWFscyB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBzZXQuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsnPllvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXMgZXhhbXBsZXMgb24gaG93IHRvIHBlcmZvcm0gdmFyaW91cyBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICB0YXNrcy4KKyAgICAgICAgICAgICAgICAgICAgQXMgYW5vdGhlciBleGFtcGxlLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBtYW51YWwgY29udGFpbnMgZGV0YWlsZWQgaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byBpbnN0YWxsIGFuCisgICAgICAgICAgICAgICAgICAgIFNESywgd2hpY2ggaXMgdXNlZCB0byBkZXZlbG9wIGFwcGxpY2F0aW9ucyBmb3IgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SZWZlcmVuY2UgTWF0ZXJpYWw6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB0eXBlIG9mIG1hdGVyaWFsIHJlc2lkZXMgaW4gYW4gYXBwcm9wcmlhdGUgcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgIG1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN5c3RlbSB2YXJpYWJsZXMgYXJlIGRvY3VtZW50ZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7Jz5Zb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgQXMgYW5vdGhlciBleGFtcGxlLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsnPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgcmVmZXJlbmNlIGluZm9ybWF0aW9uIG9uIEJTUHMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRldGFpbGVkIFB1YmxpYyBJbmZvcm1hdGlvbiBOb3QgU3BlY2lmaWMgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3Q6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGV4aGF1c3RpdmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgU291cmNlIENvbnRyb2wgTWFuYWdlciBHaXQgaXMgYmV0dGVyIGNvdmVyZWQgd2l0aCBJbnRlcm5ldAorICAgICAgICAgICAgICAgICAgICBzZWFyY2hlcyBhbmQgb2ZmaWNpYWwgR2l0IERvY3VtZW50YXRpb24gdGhhbiB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nb3ZlcnZpZXctbWFudWFsLW90aGVyLWluZm9ybWF0aW9uJz4KKyAgICAgICAgPHRpdGxlPk90aGVyIEluZm9ybWF0aW9uPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEJlY2F1c2UgdGhpcyBtYW51YWwgcHJlc2VudHMgaW5mb3JtYXRpb24gZm9yIG1hbnkgZGlmZmVyZW50CisgICAgICAgICAgICB0b3BpY3MsIHN1cHBsZW1lbnRhbCBpbmZvcm1hdGlvbiBpcyByZWNvbW1lbmRlZCBmb3IgZnVsbAorICAgICAgICAgICAgY29tcHJlaGVuc2lvbi4KKyAgICAgICAgICAgIEZvciBhZGRpdGlvbmFsIGludHJvZHVjdG9yeSBpbmZvcm1hdGlvbiBvbiB0aGUgWW9jdG8gUHJvamVjdCwgc2VlCisgICAgICAgICAgICB0aGUgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdCBXZWJzaXRlPC91bGluaz4uCisgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBidWlsZCBhbiBpbWFnZSB3aXRoIG5vIGtub3dsZWRnZSBvZiBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICBhcyBhIHdheSBvZiBxdWlja2x5IHRlc3RpbmcgaXQgb3V0LCBzZWUgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CUklFRl9VUkw7Jz5Zb2N0byBQcm9qZWN0IFF1aWNrIEJ1aWxkPC91bGluaz4KKyAgICAgICAgICAgIGRvY3VtZW50LgorICAgICAgICAgICAgRm9yIGEgY29tcHJlaGVuc2l2ZSBsaXN0IG9mIGxpbmtzIGFuZCBvdGhlciBkb2N1bWVudGF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVzb3VyY2VzLWxpbmtzLWFuZC1yZWxhdGVkLWRvY3VtZW50YXRpb24nPkxpbmtzIGFuZCBSZWxhdGVkIERvY3VtZW50YXRpb248L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvY2hhcHRlcj4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1zdHlsZS5jc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLXN0eWxlLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2EzNjRiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1zdHlsZS5jc3MKQEAgLTAsMCArMSw5ODggQEAKKy8qCisgICBHZW5lcmljIFhIVE1MIC8gRG9jQm9vayBYSFRNTCBDU1MgU3R5bGVzaGVldC4KKworICAgQnJvd3NlciB3cmFuZ2xpbmcgYW5kIHR5cG9ncmFwaGljIGRlc2lnbiBieQorICAgICAgT3l2aW5kIEtvbGFzIC8gcGlwcGluQGdpbXAub3JnCisKKyAgIEN1c3RvbWlzZWQgZm9yIFBva3kgYnkKKyAgICAgIE1hdHRoZXcgQWxsdW0gLyBtYWxsdW1Aby1oYW5kLmNvbQorCisgICBUaGFua3MgdG86CisgICAgIExpYW0gUi4gRS4gUXVpbgorICAgICBXaWxsaWFtIFNrYWdncworICAgICBKYWt1YiBTdGVpbmVyCisKKyAgIFN0cnVjdHVyZQorICAgLS0tLS0tLS0tCisKKyAgIFRoZSBzdHlsZXNoZWV0IGlzIGRpdmlkZWQgaW50byB0aGUgZm9sbG93aW5nIHNlY3Rpb25zOgorCisgICAgICAgUG9zaXRpb25pbmcKKyAgICAgICAgICBNYXJnaW5zLCBwYWRkaW5ncywgd2lkdGgsIGZvbnQtc2l6ZSwgY2xlYXJpbmcuCisgICAgICAgRGVjb3JhdGlvbnMKKyAgICAgICAgICBCb3JkZXJzLCBzdHlsZQorICAgICAgIENvbG9ycworICAgICAgICAgIENvbG9ycworICAgICAgIEdyYXBoaWNzCisgICAgICAgICAgR3JhcGhpY2FsIGJhY2tncm91bmRzCisgICAgICAgTmFzdHkgSUUgdHdlYWtzCisgICAgICAgICAgV29ya2Fyb3VuZHMgbmVlZGVkIHRvIG1ha2UgaXQgd29yayBpbiBpbnRlcm5ldCBleHBsb3JlciwKKyAgICAgICAgICBjdXJyZW50bHkgbWFrZXMgdGhlIHN0eWxlc2hlZXQgbm9uIHZhbGlkYXRpbmcsIGJ1dCB1cCB1bnRpbAorICAgICAgICAgIHRoaXMgcG9pbnQgaXQgaXMgdmFsaWRhdGluZy4KKyAgICAgICBNb3ppbGxhIGV4dGVuc2lvbnMKKyAgICAgICAgICBUcmFuc3BhcmVuY3kgZm9yIGZvb3RlcgorCSAgUm91bmRlZCBjb3JuZXJzIG9uIGJveGVzCisKKyovCisKKworICAvKioqKioqKioqKioqKioqIC8KKyAvICBQb3NpdGlvbmluZyAgIC8KKy8gKioqKioqKioqKioqKioqLworCitib2R5IHsKKyAgZm9udC1mYW1pbHk6IFZlcmRhbmEsIFNhbnMsIHNhbnMtc2VyaWY7CisKKyAgbWluLXdpZHRoOiA2NDBweDsKKyAgd2lkdGg6IDgwJTsKKyAgbWFyZ2luOiAgMGVtIGF1dG87CisgIHBhZGRpbmc6IDJlbSA1ZW0gNWVtIDVlbTsKKyAgY29sb3I6ICMzMzM7Cit9CisKK2gxLGgyLGgzLGg0LGg1LGg2LGg3IHsKKyAgZm9udC1mYW1pbHk6IEFyaWFsLCBTYW5zOworICBjb2xvcjogIzAwNTU3RDsKKyAgY2xlYXI6IGJvdGg7Cit9CisKK2gxIHsKKyAgZm9udC1zaXplOiAyZW07CisgIHRleHQtYWxpZ246IGxlZnQ7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgbWFyZ2luOiAyZW0gMGVtIDBlbSAwZW07Cit9CisKK2gyLnN1YnRpdGxlIHsKKyAgbWFyZ2luOiAwLjEwZW0gMGVtIDMuMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDEuOGVtOworICBwYWRkaW5nLWxlZnQ6IDIwJTsKKyAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgZm9udC1zdHlsZTogaXRhbGljOworfQorCitoMiB7CisgIG1hcmdpbjogMmVtIDBlbSAwLjY2ZW0gMGVtOworICBwYWRkaW5nOiAwLjVlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxLjVlbTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2gzLnN1YnRpdGxlIHsKKyAgbWFyZ2luOiAwZW0gMGVtIDFlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxNDIuMTQlOworICB0ZXh0LWFsaWduOiByaWdodDsKK30KKworaDMgeworICBtYXJnaW46IDFlbSAwZW0gMC41ZW0gMGVtOworICBwYWRkaW5nOiAxZW0gMGVtIDBlbSAwZW07CisgIGZvbnQtc2l6ZTogMTQwJTsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2g0IHsKKyAgbWFyZ2luOiAxZW0gMGVtIDAuNWVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDEyMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitoNSB7CisgIG1hcmdpbjogMWVtIDBlbSAwLjVlbSAwZW07CisgIHBhZGRpbmc6IDFlbSAwZW0gMGVtIDBlbTsKKyAgZm9udC1zaXplOiAxMTAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworaDYgeworICBtYXJnaW46IDFlbSAwZW0gMGVtIDBlbTsKKyAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOworICBmb250LXNpemU6IDExMCU7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCisuYXV0aG9yZ3JvdXAgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgcGFkZGluZy10b3A6IDI1NnB4OworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImZpZ3VyZXMvb3ZlcnZpZXctbWFudWFsLXRpdGxlLnBuZyIpOworICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IHRvcDsKKyAgbWFyZ2luLXRvcDogLTI1NnB4OworICBwYWRkaW5nLXJpZ2h0OiA1MHB4OworICBtYXJnaW4tbGVmdDogMHB4OworICB0ZXh0LWFsaWduOiByaWdodDsKKyAgd2lkdGg6IDc0MHB4OworfQorCitoMy5hdXRob3IgeworICBtYXJnaW46IDBlbSAwbWUgMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBmb250LXdlaWdodDogbm9ybWFsOworICBmb250LXNpemU6IDEwMCU7CisgIGNvbG9yOiAjMzMzOworICBjbGVhcjogYm90aDsKK30KKworLmF1dGhvciB0dC5lbWFpbCB7CisgIGZvbnQtc2l6ZTogNjYlOworfQorCisudGl0bGVwYWdlIGhyIHsKKyAgd2lkdGg6IDBlbTsKKyAgY2xlYXI6IGJvdGg7Cit9CisKKy5yZXZoaXN0b3J5IHsKKyAgcGFkZGluZy10b3A6IDJlbTsKKyAgY2xlYXI6IGJvdGg7Cit9CisKKy50b2MsCisubGlzdC1vZi10YWJsZXMsCisubGlzdC1vZi1leGFtcGxlcywKKy5saXN0LW9mLWZpZ3VyZXMgeworICBwYWRkaW5nOiAxLjMzZW0gMGVtIDIuNWVtIDBlbTsKKyAgY29sb3I6ICMwMDU1N0Q7Cit9CisKKy50b2MgcCwKKy5saXN0LW9mLXRhYmxlcyBwLAorLmxpc3Qtb2YtZmlndXJlcyBwLAorLmxpc3Qtb2YtZXhhbXBsZXMgcCB7CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwLjNlbTsKKyAgbWFyZ2luOiAxLjVlbSAwZW0gMGVtIDBlbTsKK30KKworLnRvYyBwIGIsCisubGlzdC1vZi10YWJsZXMgcCBiLAorLmxpc3Qtb2YtZmlndXJlcyBwIGIsCisubGlzdC1vZi1leGFtcGxlcyBwIGJ7CisgIGZvbnQtc2l6ZTogMTAwLjAlOworICBmb250LXdlaWdodDogYm9sZDsKK30KKworLnRvYyBkbCwKKy5saXN0LW9mLXRhYmxlcyBkbCwKKy5saXN0LW9mLWZpZ3VyZXMgZGwsCisubGlzdC1vZi1leGFtcGxlcyBkbCB7CisgIG1hcmdpbjogMGVtIDBlbSAwLjVlbSAwZW07CisgIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKK30KKworLnRvYyBkdCB7CisgIG1hcmdpbjogMGVtIDBlbSAwZW0gMGVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKKy50b2MgZGQgeworICBtYXJnaW46IDBlbSAwZW0gMGVtIDIuNmVtOworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKK2Rpdi5nbG9zc2FyeSBkbCwKK2Rpdi52YXJpYWJsZWxpc3QgZGwgeworfQorCisuZ2xvc3NhcnkgZGwgZHQsCisudmFyaWFibGVsaXN0IGRsIGR0LAorLnZhcmlhYmxlbGlzdCBkbCBkdCBzcGFuLnRlcm0geworICBmb250LXdlaWdodDogbm9ybWFsOworICB3aWR0aDogMjBlbTsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKKy52YXJpYWJsZWxpc3QgZGwgZHQgeworICBtYXJnaW4tdG9wOiAwLjVlbTsKK30KKworLmdsb3NzYXJ5IGRsIGRkLAorLnZhcmlhYmxlbGlzdCBkbCBkZCB7CisgIG1hcmdpbi10b3A6IC0xZW07CisgIG1hcmdpbi1sZWZ0OiAyNS41ZW07Cit9CisKKy5nbG9zc2FyeSBkZCBwLAorLnZhcmlhYmxlbGlzdCBkZCBwIHsKKyAgbWFyZ2luLXRvcDogMGVtOworICBtYXJnaW4tYm90dG9tOiAxZW07Cit9CisKKworZGl2LmNhbGxvdXRsaXN0IHRhYmxlIHRkIHsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworICBtYXJnaW46IDBlbSAwZW0gMGVtIDBlbTsKK30KKworZGl2LmNhbGxvdXRsaXN0IHRhYmxlIHRkIHAgeworICBtYXJnaW4tdG9wOiAwZW07CisgIG1hcmdpbi1ib3R0b206IDFlbTsKK30KKworZGl2IHAuY29weXJpZ2h0IHsKKyAgdGV4dC1hbGlnbjogbGVmdDsKK30KKworZGl2LmxlZ2Fsbm90aWNlIHAubGVnYWxub3RpY2UtdGl0bGUgeworICBtYXJnaW4tYm90dG9tOiAwZW07Cit9CisKK3AgeworICBsaW5lLWhlaWdodDogMS41ZW07CisgIG1hcmdpbi10b3A6IDBlbTsKKworfQorCitkbCB7CisgIHBhZGRpbmctdG9wOiAwZW07Cit9CisKK2hyIHsKKyAgYm9yZGVyOiBzb2xpZCAxcHg7Cit9CisKKworLm1lZGlhb2JqZWN0LAorLm1lZGlhb2JqZWN0Y28geworICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKK2ltZyB7CisgIGJvcmRlcjogbm9uZTsKK30KKwordWwgeworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAxLjVlbTsKK30KKwordWwgbGkgeworICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKK3VsIGxpIHAgeworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCit0YWJsZSB7CisgIHdpZHRoIDoxMDAlOworfQorCit0aCB7CisgIHBhZGRpbmc6IDAuMjVlbTsKKyAgdGV4dC1hbGlnbjogbGVmdDsKKyAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKKyAgdmVydGljYWwtYWxpZ246IHRvcDsKK30KKwordGQgeworICBwYWRkaW5nOiAwLjI1ZW07CisgIHZlcnRpY2FsLWFsaWduOiB0b3A7Cit9CisKK3AgYVtpZF0geworICBtYXJnaW46IDBweDsKKyAgcGFkZGluZzogMHB4OworICBkaXNwbGF5OiBpbmxpbmU7CisgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cit9CisKK2EgeworICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKyAgY29sb3I6ICM0NDQ7Cit9CisKK3ByZSB7CisgICAgb3ZlcmZsb3c6IGF1dG87Cit9CisKK2E6aG92ZXIgeworICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKyAgLypmb250LXdlaWdodDogYm9sZDsqLworfQorCisvKiBUaGlzIHN0eWxlIGRlZmluZXMgaG93IHRoZSBwZXJtYWxpbmsgY2hhcmFjdGVyCisgICBhcHBlYXJzIGJ5IGl0c2VsZiBhbmQgd2hlbiBob3ZlcmVkIG92ZXIgd2l0aAorICAgdGhlIG1vdXNlLiAqLworCitbYWx0PSdQZXJtYWxpbmsnXSB7IGNvbG9yOiAjZWVlOyB9CitbYWx0PSdQZXJtYWxpbmsnXTpob3ZlciB7IGNvbG9yOiBibGFjazsgfQorCisKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUsCitkaXYuaW5mb3JtYWx0YWJsZSwKK2Rpdi5maWd1cmUsCitkaXYudGFibGUsCitkaXYuZXhhbXBsZSB7CisgIG1hcmdpbjogMWVtIDBlbTsKKyAgcGFkZGluZzogMWVtOworICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7Cit9CisKKworZGl2LmluZm9ybWFsZmlndXJlIHAudGl0bGUgYiwKK2Rpdi5pbmZvcm1hbGV4YW1wbGUgcC50aXRsZSBiLAorZGl2LmluZm9ybWFsdGFibGUgcC50aXRsZSBiLAorZGl2LmZpZ3VyZSBwLnRpdGxlIGIsCitkaXYuZXhhbXBsZSBwLnRpdGxlIGIsCitkaXYudGFibGUgcC50aXRsZSBieworICAgIHBhZGRpbmctdG9wOiAwZW07CisgICAgbWFyZ2luLXRvcDogMGVtOworICAgIGZvbnQtc2l6ZTogMTAwJTsKKyAgICBmb250LXdlaWdodDogbm9ybWFsOworfQorCisubWVkaWFvYmplY3QgLmNhcHRpb24sCisubWVkaWFvYmplY3QgLmNhcHRpb24gcCAgeworICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgIGZvbnQtc2l6ZTogODAlOworICBwYWRkaW5nLXRvcDogMC41ZW07CisgIHBhZGRpbmctYm90dG9tOiAwLjVlbTsKK30KKworLmVwaWdyYXBoIHsKKyAgcGFkZGluZy1sZWZ0OiA1NSU7CisgIG1hcmdpbi1ib3R0b206IDFlbTsKK30KKworLmVwaWdyYXBoIHAgeworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCisuZXBpZ3JhcGggLnF1b3RlIHsKKyAgZm9udC1zdHlsZTogaXRhbGljOworfQorLmVwaWdyYXBoIC5hdHRyaWJ1dGlvbiB7CisgIGZvbnQtc3R5bGU6IG5vcm1hbDsKKyAgdGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKK3NwYW4uYXBwbGljYXRpb24geworICBmb250LXN0eWxlOiBpdGFsaWM7Cit9CisKKy5wcm9ncmFtbGlzdGluZyB7CisgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CisgIGZvbnQtc2l6ZTogODAlOworICB3aGl0ZS1zcGFjZTogcHJlOworICBtYXJnaW46IDEuMzNlbSAwZW07CisgIHBhZGRpbmc6IDEuMzNlbTsKK30KKworLnRpcCwKKy53YXJuaW5nLAorLmNhdXRpb24sCisubm90ZSB7CisgIG1hcmdpbi10b3A6IDFlbTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworCit9CisKKy8qIGZvcmNlIGZ1bGwgd2lkdGggb2YgdGFibGUgd2l0aGluIGRpdiAqLworLnRpcCB0YWJsZSwKKy53YXJuaW5nIHRhYmxlLAorLmNhdXRpb24gdGFibGUsCisubm90ZSB0YWJsZSB7CisgIGJvcmRlcjogbm9uZTsKKyAgd2lkdGg6IDEwMCU7Cit9CisKKworLnRpcCB0YWJsZSB0aCwKKy53YXJuaW5nIHRhYmxlIHRoLAorLmNhdXRpb24gdGFibGUgdGgsCisubm90ZSB0YWJsZSB0aCB7CisgIHBhZGRpbmc6IDAuOGVtIDAuMGVtIDAuMGVtIDAuMGVtOworICBtYXJnaW4gOiAwZW0gMGVtIDBlbSAwZW07Cit9CisKKy50aXAgcCwKKy53YXJuaW5nIHAsCisuY2F1dGlvbiBwLAorLm5vdGUgcCB7CisgIG1hcmdpbi10b3A6IDAuNWVtOworICBtYXJnaW4tYm90dG9tOiAwLjVlbTsKKyAgcGFkZGluZy1yaWdodDogMWVtOworICB0ZXh0LWFsaWduOiBsZWZ0OworfQorCisuYWNyb255bSB7CisgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Cit9CisKK2Iua2V5Y2FwLAorLmtleWNhcCB7CisgIHBhZGRpbmc6IDAuMDllbSAwLjNlbTsKKyAgbWFyZ2luOiAwZW07Cit9CisKKy5pdGVtaXplZGxpc3QgbGkgeworICBjbGVhcjogbm9uZTsKK30KKworLmZpbGVuYW1lIHsKKyAgZm9udC1zaXplOiBtZWRpdW07CisgIGZvbnQtZmFtaWx5OiBDb3VyaWVyLCBtb25vc3BhY2U7Cit9CisKKworZGl2Lm5hdmhlYWRlciwgZGl2LmhlYWRpbmd7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgbGVmdDogMGVtOworICB0b3A6IDBlbTsKKyAgd2lkdGg6IDEwMCU7CisgIGJhY2tncm91bmQtY29sb3I6ICNjZGY7CisgIHdpZHRoOiAxMDAlOworfQorCitkaXYubmF2Zm9vdGVyLCBkaXYuZm9vdGluZ3sKKyAgcG9zaXRpb246IGZpeGVkOworICBsZWZ0OiAwZW07CisgIGJvdHRvbTogMGVtOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOworICB3aWR0aDogMTAwJTsKK30KKworCitkaXYubmF2aGVhZGVyIHRkLAorZGl2Lm5hdmZvb3RlciB0ZCB7CisgIGZvbnQtc2l6ZTogNjYlOworfQorCitkaXYubmF2aGVhZGVyIHRhYmxlIHRoIHsKKyAgLypmb250LWZhbWlseTogR2VvcmdpYSwgVGltZXMsIHNlcmlmOyovCisgIC8qZm9udC1zaXplOiB4LWxhcmdlOyovCisgIGZvbnQtc2l6ZTogODAlOworfQorCitkaXYubmF2aGVhZGVyIHRhYmxlIHsKKyAgYm9yZGVyLWxlZnQ6IDBlbTsKKyAgYm9yZGVyLXJpZ2h0OiAwZW07CisgIGJvcmRlci10b3A6IDBlbTsKKyAgd2lkdGg6IDEwMCU7Cit9CisKK2Rpdi5uYXZmb290ZXIgdGFibGUgeworICBib3JkZXItbGVmdDogMGVtOworICBib3JkZXItcmlnaHQ6IDBlbTsKKyAgYm9yZGVyLWJvdHRvbTogMGVtOworICB3aWR0aDogMTAwJTsKK30KKworZGl2Lm5hdmhlYWRlciB0YWJsZSB0ZCBhLAorZGl2Lm5hdmZvb3RlciB0YWJsZSB0ZCBhIHsKKyAgY29sb3I6ICM3Nzc7CisgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKK30KKworLyogbm9ybWFsIHRleHQgaW4gdGhlIGZvb3RlciAqLworZGl2Lm5hdmZvb3RlciB0YWJsZSB0ZCB7CisgIGNvbG9yOiBibGFjazsKK30KKworZGl2Lm5hdmhlYWRlciB0YWJsZSB0ZCBhOnZpc2l0ZWQsCitkaXYubmF2Zm9vdGVyIHRhYmxlIHRkIGE6dmlzaXRlZCB7CisgIGNvbG9yOiAjNDQ0OworfQorCisKKy8qIGxpbmtzIGluIGhlYWRlciBhbmQgZm9vdGVyICovCitkaXYubmF2aGVhZGVyIHRhYmxlIHRkIGE6aG92ZXIsCitkaXYubmF2Zm9vdGVyIHRhYmxlIHRkIGE6aG92ZXIgeworICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKyAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgIGNvbG9yOiAjMzNhOworfQorCitkaXYubmF2aGVhZGVyIGhyLAorZGl2Lm5hdmZvb3RlciBociB7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisKKworLnFhbmRhc2V0IHRyLnF1ZXN0aW9uIHRkIHAgeworICBtYXJnaW46IDBlbSAwZW0gMWVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorCisucWFuZGFzZXQgdHIuYW5zd2VyIHRkIHAgeworICBtYXJnaW46IDBlbSAwZW0gMWVtIDBlbTsKKyAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOworfQorLmFuc3dlciB0ZCB7CisgIHBhZGRpbmctYm90dG9tOiAxLjVlbTsKK30KKworLmVtcGhhc2lzIHsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKKworICAvKioqKioqKioqKioqKiAvCisgLyBkZWNvcmF0aW9ucyAgLworLyAqKioqKioqKioqKioqLworCisudGl0bGVwYWdlIHsKK30KKworLnBhcnQgLnRpdGxlIHsKK30KKworLnN1YnRpdGxlIHsKKyAgICBib3JkZXI6IG5vbmU7Cit9CisKKy8qCitoMSB7CisgIGJvcmRlcjogbm9uZTsKK30KKworaDIgeworICBib3JkZXItdG9wOiBzb2xpZCAwLjJlbTsKKyAgYm9yZGVyLWJvdHRvbTogc29saWQgMC4wNmVtOworfQorCitoMyB7CisgIGJvcmRlci10b3A6IDBlbTsKKyAgYm9yZGVyLWJvdHRvbTogc29saWQgMC4wNmVtOworfQorCitoNCB7CisgIGJvcmRlcjogMGVtOworICBib3JkZXItYm90dG9tOiBzb2xpZCAwLjA2ZW07Cit9CisKK2g1IHsKKyAgYm9yZGVyOiAwZW07Cit9CisqLworCisucHJvZ3JhbWxpc3RpbmcgeworICBib3JkZXI6IHNvbGlkIDFweDsKK30KKworZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmluZm9ybWFsZXhhbXBsZSwKK2Rpdi5leGFtcGxlIHsKKyAgYm9yZGVyOiAxcHggc29saWQ7Cit9CisKKworCisudGlwLAorLndhcm5pbmcsCisuY2F1dGlvbiwKKy5ub3RlIHsKKyAgYm9yZGVyOiAxcHggc29saWQ7Cit9CisKKy50aXAgdGFibGUgdGgsCisud2FybmluZyB0YWJsZSB0aCwKKy5jYXV0aW9uIHRhYmxlIHRoLAorLm5vdGUgdGFibGUgdGggeworICBib3JkZXItYm90dG9tOiAxcHggc29saWQ7Cit9CisKKy5xdWVzdGlvbiB0ZCB7CisgIGJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjazsKK30KKworLmFuc3dlciB7Cit9CisKKworYi5rZXljYXAsCisua2V5Y2FwIHsKKyAgYm9yZGVyOiAxcHggc29saWQ7Cit9CisKKworZGl2Lm5hdmhlYWRlciwgZGl2LmhlYWRpbmd7CisgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZDsKK30KKworCitkaXYubmF2Zm9vdGVyLCBkaXYuZm9vdGluZ3sKKyAgYm9yZGVyLXRvcDogMXB4IHNvbGlkOworfQorCisgIC8qKioqKioqKiogLworIC8gIGNvbG9ycyAgLworLyAqKioqKioqKiovCisKK2JvZHkgeworICBjb2xvcjogIzMzMzsKKyAgYmFja2dyb3VuZDogd2hpdGU7Cit9CisKK2EgeworICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKK30KKworYTpob3ZlciB7CisgIGJhY2tncm91bmQtY29sb3I6ICNkZWRlZGU7Cit9CisKKworaDEsCitoMiwKK2gzLAoraDQsCitoNSwKK2g2LAoraDcsCitoOCB7CisgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OworfQorCitociB7CisgIGJvcmRlci1jb2xvcjogI2FhYTsKK30KKworCisudGlwLCAud2FybmluZywgLmNhdXRpb24sIC5ub3RlIHsKKyAgYm9yZGVyLWNvbG9yOiAjZmZmOworfQorCisKKy50aXAgdGFibGUgdGgsCisud2FybmluZyB0YWJsZSB0aCwKKy5jYXV0aW9uIHRhYmxlIHRoLAorLm5vdGUgdGFibGUgdGggeworICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmZmOworfQorCisKKy53YXJuaW5nIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMjsKK30KKworLmNhdXRpb24geworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOworfQorCisudGlwIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMjsKK30KKworLm5vdGUgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOworfQorCisuZ2xvc3NhcnkgZGwgZHQsCisudmFyaWFibGVsaXN0IGRsIGR0LAorLnZhcmlhYmxlbGlzdCBkbCBkdCBzcGFuLnRlcm0geworICBjb2xvcjogIzA0NDsKK30KKworZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5leGFtcGxlLAorZGl2LmluZm9ybWFsZmlndXJlLAorZGl2LmluZm9ybWFsdGFibGUsCitkaXYuaW5mb3JtYWxleGFtcGxlIHsKKyAgYm9yZGVyLWNvbG9yOiAjYWFhOworfQorCitwcmUucHJvZ3JhbWxpc3RpbmcgeworICBjb2xvcjogYmxhY2s7CisgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CisgIGJvcmRlci1jb2xvcjogI2FhYTsKKyAgYm9yZGVyLXdpZHRoOiAycHg7Cit9CisKKy5ndWltZW51LAorLmd1aWxhYmVsLAorLmd1aW1lbnVpdGVtIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKK30KKworCitiLmtleWNhcCwKKy5rZXljYXAgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOworICBib3JkZXItY29sb3I6ICM5OTk7Cit9CisKKworZGl2Lm5hdmhlYWRlciB7CisgIGJvcmRlci1jb2xvcjogYmxhY2s7Cit9CisKKworZGl2Lm5hdmZvb3RlciB7CisgIGJvcmRlci1jb2xvcjogYmxhY2s7Cit9CisKKy53cml0ZXJub3RlcyB7CisgIGNvbG9yOiByZWQ7Cit9CisKKworICAvKioqKioqKioqKiogLworIC8gIGdyYXBoaWNzICAvCisvICoqKioqKioqKioqLworCisvKgorYm9keSB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL2JvZHlfYmcuanBnIik7CisgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7Cit9CisKKy5uYXZoZWFkZXIsCisubm90ZSwKKy50aXAgeworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy9ub3RlX2JnLmpwZyIpOworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworfQorCisud2FybmluZywKKy5jYXV0aW9uIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvd2FybmluZ19iZy5qcGciKTsKKyAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKK30KKworLmZpZ3VyZSwKKy5pbmZvcm1hbGZpZ3VyZSwKKy5leGFtcGxlLAorLmluZm9ybWFsZXhhbXBsZSwKKy50YWJsZSwKKy5pbmZvcm1hbHRhYmxlIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvZmlndXJlX2JnLmpwZyIpOworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworfQorCisqLworaDEsCitoMiwKK2gzLAoraDQsCitoNSwKK2g2LAoraDd7Cit9CisKKy8qCitFeGFtcGxlIG9mIGhvdyB0byBzdGljayBhbiBpbWFnZSBhcyBwYXJ0IG9mIHRoZSB0aXRsZS4KKworZGl2LmFydGljbGUgLnRpdGxlcGFnZSAudGl0bGUKK3sKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJmaWd1cmVzL3doaXRlLW9uLWJsYWNrLnBuZyIpOworICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7CisgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKK30KKyovCisKK2Rpdi5wcmVmYWNlIC50aXRsZXBhZ2UgLnRpdGxlLAorZGl2LmNvbG9waG9uIC50aXRsZSwKK2Rpdi5jaGFwdGVyIC50aXRsZXBhZ2UgLnRpdGxlLAorZGl2LmFydGljbGUgLnRpdGxlcGFnZSAudGl0bGUKK3sKK30KKworZGl2LnNlY3Rpb24gZGl2LnNlY3Rpb24gLnRpdGxlcGFnZSAudGl0bGUsCitkaXYuc2VjdDIgLnRpdGxlcGFnZSAudGl0bGUgeworICAgIGJhY2tncm91bmQ6IG5vbmU7Cit9CisKKworaDEudGl0bGUgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgaGVpZ2h0OiAyNTZweDsKKyAgdGV4dC1pbmRlbnQ6IC05MDAwcHg7CisgIG92ZXJmbG93OmhpZGRlbjsKK30KKworaDIuc3VidGl0bGUgeworICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKKyAgdGV4dC1pbmRlbnQ6IC05MDAwcHg7CisgIG92ZXJmbG93OmhpZGRlbjsKKyAgd2lkdGg6IDBweDsKKyAgZGlzcGxheTogbm9uZTsKK30KKworICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8KKyAvICBwaXBwaW4uZ2ltcC5vcmcgc3BlY2lmaWMgYWx0ZXJhdGlvbnMgIC8KKy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorZGl2LmhlYWRpbmcsIGRpdi5uYXZoZWFkZXIgeworICBjb2xvcjogIzc3NzsKKyAgZm9udC1zaXplOiA4MCU7CisgIHBhZGRpbmc6IDA7CisgIG1hcmdpbjogMDsKKyAgdGV4dC1hbGlnbjogbGVmdDsKKyAgcG9zaXRpb246IGFic29sdXRlOworICB0b3A6IDBweDsKKyAgbGVmdDogMHB4OworICB3aWR0aDogMTAwJTsKKyAgaGVpZ2h0OiA1MHB4OworICBiYWNrZ3JvdW5kOiB1cmwoJy9nZngvaGVhZGluZ19iZy5wbmcnKSB0cmFuc3BhcmVudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OworICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOworICBib3JkZXI6IG5vbmU7Cit9CisKK2Rpdi5oZWFkaW5nIGEgeworICBjb2xvcjogIzQ0NDsKK30KKworZGl2LmZvb3RpbmcsIGRpdi5uYXZmb290ZXIgeworICBib3JkZXI6IG5vbmU7CisgIGNvbG9yOiAjZGRkOworICBmb250LXNpemU6IDgwJTsKKyAgdGV4dC1hbGlnbjpyaWdodDsKKworICB3aWR0aDogMTAwJTsKKyAgcGFkZGluZy10b3A6IDEwcHg7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgYm90dG9tOiAwcHg7CisgIGxlZnQ6IDBweDsKKworICBiYWNrZ3JvdW5kOiB1cmwoJy9nZngvZm9vdGluZ19iZy5wbmcnKSB0cmFuc3BhcmVudDsKK30KKyovCisKKworCisgIC8qKioqKioqKioqKioqKioqKiogLworIC8gIG5hc3R5IGllIHR3ZWFrcyAgLworLyAqKioqKioqKioqKioqKioqKiovCisKKy8qCitkaXYuaGVhZGluZywgZGl2Lm5hdmhlYWRlciB7CisgIHdpZHRoOmV4cHJlc3Npb24oZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCArICJweCIpOworfQorCitkaXYuZm9vdGluZywgZGl2Lm5hdmZvb3RlciB7CisgIHdpZHRoOmV4cHJlc3Npb24oZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCArICJweCIpOworICBtYXJnaW4tbGVmdDpleHByZXNzaW9uKCItNWVtIik7Cit9Citib2R5IHsKKyAgcGFkZGluZzpleHByZXNzaW9uKCI0ZW0gNWVtIDBlbSA1ZW0iKTsKK30KKyovCisKKyAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLworIC8gbW96aWxsYSB2ZW5kb3Igc3BlY2lmaWMgY3NzIGV4dGVuc2lvbnMgIC8KKy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCitkaXYubmF2Zm9vdGVyLCBkaXYuZm9vdGluZ3sKKyAgLW1vei1vcGFjaXR5OiAwLjhlbTsKK30KKworZGl2LmZpZ3VyZSwKK2Rpdi50YWJsZSwKK2Rpdi5pbmZvcm1hbGZpZ3VyZSwKK2Rpdi5pbmZvcm1hbHRhYmxlLAorZGl2LmluZm9ybWFsZXhhbXBsZSwKK2Rpdi5leGFtcGxlLAorLnRpcCwKKy53YXJuaW5nLAorLmNhdXRpb24sCisubm90ZSB7CisgIC1tb3otYm9yZGVyLXJhZGl1czogMC41ZW07Cit9CisKK2Iua2V5Y2FwLAorLmtleWNhcCB7CisgIC1tb3otYm9yZGVyLXJhZGl1czogMC4zZW07Cit9CisqLworCit0YWJsZSB0ciB0ZCB0YWJsZSB0ciB0ZCB7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisKKworaHIgeworICBkaXNwbGF5OiBub25lOworfQorCit0YWJsZSB7CisgIGJvcmRlcjogMGVtOworfQorCisgLnBob3RvIHsKKyAgZmxvYXQ6IHJpZ2h0OworICBtYXJnaW4tbGVmdDogICAxLjVlbTsKKyAgbWFyZ2luLWJvdHRvbTogMS41ZW07CisgIG1hcmdpbi10b3A6IDBlbTsKKyAgbWF4LXdpZHRoOiAgICAgIDE3ZW07CisgIGJvcmRlcjogICAgIDFweCBzb2xpZCBncmF5OworICBwYWRkaW5nOiAgICAzcHg7CisgIGJhY2tncm91bmQ6IHdoaXRlOworfQorIC5zZXBlcmF0b3IgeworICAgcGFkZGluZy10b3A6IDJlbTsKKyAgIGNsZWFyOiBib3RoOworICB9CisKKyAgI3ZhbGlkYXRvcnMgeworICAgICAgbWFyZ2luLXRvcDogNWVtOworICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CisgICAgICBjb2xvcjogIzc3NzsKKyAgfQorICBAbWVkaWEgcHJpbnQgeworICAgICAgYm9keSB7CisgICAgICAgICAgZm9udC1zaXplOiA4cHQ7CisgICAgICB9CisgICAgICAubm9wcmludCB7CisgICAgICAgICAgZGlzcGxheTogbm9uZTsKKyAgICAgIH0KKyAgfQorCisKKy50aXAsCisubm90ZSB7CisgICBiYWNrZ3JvdW5kOiAjZjBmMGYyOworICAgY29sb3I6ICMzMzM7CisgICBwYWRkaW5nOiAyMHB4OworICAgbWFyZ2luOiAyMHB4OworfQorCisudGlwIGgzLAorLm5vdGUgaDMgeworICAgcGFkZGluZzogMGVtOworICAgbWFyZ2luOiAwZW07CisgICBmb250LXNpemU6IDJlbTsKKyAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAgY29sb3I6ICMzMzM7Cit9CisKKy50aXAgYSwKKy5ub3RlIGEgeworICAgY29sb3I6ICMzMzM7CisgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKK30KKworLmZvb3Rub3RlIHsKKyAgIGZvbnQtc2l6ZTogc21hbGw7CisgICBjb2xvcjogIzMzMzsKK30KKworLyogQ2hhbmdlcyB0aGUgYW5ub3VuY2VtZW50IHRleHQgKi8KKy50aXAgaDMsCisud2FybmluZyBoMywKKy5jYXV0aW9uIGgzLAorLm5vdGUgaDMgeworICAgZm9udC1zaXplOmxhcmdlOworICAgY29sb3I6ICMwMDU1N0Q7Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLXlwLWludHJvLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwteXAtaW50cm8ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjZjVlMjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLXlwLWludHJvLnhtbApAQCAtMCwwICsxLDEzNTcgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+CisKKzxjaGFwdGVyIGlkPSdvdmVydmlldy15cCc+CisgICAgPHRpdGxlPkludHJvZHVjaW5nIHRoZSBZb2N0byBQcm9qZWN0PC90aXRsZT4KKworICAgIDxzZWN0aW9uIGlkPSd3aGF0LWlzLXRoZS15b2N0by1wcm9qZWN0Jz4KKyAgICAgICAgPHRpdGxlPldoYXQgaXMgdGhlIFlvY3RvIFByb2plY3Q/PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGlzIGFuIG9wZW4gc291cmNlIGNvbGxhYm9yYXRpb24gcHJvamVjdAorICAgICAgICAgICAgdGhhdCBoZWxwcyBkZXZlbG9wZXJzIGNyZWF0ZSBjdXN0b20gTGludXgtYmFzZWQgc3lzdGVtcyB0aGF0IGFyZQorICAgICAgICAgICAgZGVzaWduZWQgZm9yIGVtYmVkZGVkIHByb2R1Y3RzIHJlZ2FyZGxlc3Mgb2YgdGhlIHByb2R1Y3QncyBoYXJkd2FyZQorICAgICAgICAgICAgYXJjaGl0ZWN0dXJlLgorICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBwcm92aWRlcyBhIGZsZXhpYmxlIHRvb2xzZXQgYW5kIGEgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgIGVudmlyb25tZW50IHRoYXQgYWxsb3dzIGVtYmVkZGVkIGRldmljZSBkZXZlbG9wZXJzIGFjcm9zcyB0aGUKKyAgICAgICAgICAgIHdvcmxkIHRvIGNvbGxhYm9yYXRlIHRocm91Z2ggc2hhcmVkIHRlY2hub2xvZ2llcywgc29mdHdhcmUgc3RhY2tzLAorICAgICAgICAgICAgY29uZmlndXJhdGlvbnMsIGFuZCBiZXN0IHByYWN0aWNlcyB1c2VkIHRvIGNyZWF0ZSB0aGVzZSB0YWlsb3JlZAorICAgICAgICAgICAgTGludXggaW1hZ2VzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaG91c2FuZHMgb2YgZGV2ZWxvcGVycyB3b3JsZHdpZGUgaGF2ZSBkaXNjb3ZlcmVkIHRoYXQgWW9jdG8KKyAgICAgICAgICAgIFByb2plY3QgcHJvdmlkZXMgYWR2YW50YWdlcyBpbiBib3RoIHN5c3RlbXMgYW5kIGFwcGxpY2F0aW9ucworICAgICAgICAgICAgZGV2ZWxvcG1lbnQsIGFyY2hpdmFsIGFuZCBtYW5hZ2VtZW50IGJlbmVmaXRzLCBhbmQgY3VzdG9taXphdGlvbnMKKyAgICAgICAgICAgIHVzZWQgZm9yIHNwZWVkLCBmb290cHJpbnQsIGFuZCBtZW1vcnkgdXRpbGl6YXRpb24uCisgICAgICAgICAgICBUaGUgcHJvamVjdCBpcyBhIHN0YW5kYXJkIHdoZW4gaXQgY29tZXMgdG8gZGVsaXZlcmluZyBlbWJlZGRlZAorICAgICAgICAgICAgc29mdHdhcmUgc3RhY2tzLgorICAgICAgICAgICAgVGhlIHByb2plY3QgYWxsb3dzIHNvZnR3YXJlIGN1c3RvbWl6YXRpb25zIGFuZCBidWlsZCBpbnRlcmNoYW5nZQorICAgICAgICAgICAgZm9yIG11bHRpcGxlIGhhcmR3YXJlIHBsYXRmb3JtcyBhcyB3ZWxsIGFzIHNvZnR3YXJlIHN0YWNrcyB0aGF0CisgICAgICAgICAgICBjYW4gYmUgbWFpbnRhaW5lZCBhbmQgc2NhbGVkLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmEgaWQ9J3lwLWtleS1kZXYtZWxlbWVudHMnPgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9rZXktZGV2LWVsZW1lbnRzLnBuZyIgZm9ybWF0PSJQTkciIGFsaWduPSdjZW50ZXInIHdpZHRoPSI4aW4iLz4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9yIGZ1cnRoZXIgaW50cm9kdWN0b3J5IGluZm9ybWF0aW9uIG9uIHRoZSBZb2N0byBQcm9qZWN0LCB5b3UKKyAgICAgICAgICAgIG1pZ2h0IGJlIGludGVyZXN0ZWQgaW4gdGhpcworICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZW1iZWRkZWQuY29tL2VsZWN0cm9uaWNzLWJsb2dzL3NheS13aGF0LS80NDU4NjAwL1doeS10aGUtWW9jdG8tUHJvamVjdC1mb3ItbXktSW9ULVByb2plY3QtJz5hcnRpY2xlPC91bGluaz4KKyAgICAgICAgICAgIGJ5IERyZXcgTW9zZWxleSBhbmQgaW4gdGhpcyBzaG9ydCBpbnRyb2R1Y3RvcnkKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9dXRacEtNN2k1WjQnPnZpZGVvPC91bGluaz4uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSByZW1haW5kZXIgb2YgdGhpcyBzZWN0aW9uIG92ZXJ2aWV3cyBhZHZhbnRhZ2VzIGFuZCBjaGFsbGVuZ2VzCisgICAgICAgICAgICB0aWVkIHRvIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2dzLWZlYXR1cmVzJz4KKyAgICAgICAgICAgIDx0aXRsZT5GZWF0dXJlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBkZXNjcmliZXMgZmVhdHVyZXMgYW5kIGFkdmFudGFnZXMgb2YgdGhlCisgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdDoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+V2lkZWx5IEFkb3B0ZWQgQWNyb3NzIHRoZSBJbmR1c3RyeTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgU2VtaWNvbmR1Y3Rvciwgb3BlcmF0aW5nIHN5c3RlbSwgc29mdHdhcmUsIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZSB2ZW5kb3JzIGV4aXN0IHdob3NlIHByb2R1Y3RzIGFuZCBzZXJ2aWNlcworICAgICAgICAgICAgICAgICAgICAgICAgYWRvcHQgYW5kIHN1cHBvcnQgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYSBsb29rIGF0IHRoZSBZb2N0byBQcm9qZWN0IGNvbW11bml0eSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb21wYW5pZXMgaW52b2x2ZWQgd2l0aCB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QsIHNlZSB0aGUgIkNPTU1VTklUWSIgYW5kICJFQ09TWVNURU0iIHRhYnMKKyAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdDwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBob21lIHBhZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkFyY2hpdGVjdHVyZSBBZ25vc3RpYzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyBJbnRlbCwgQVJNLCBNSVBTLCBBTUQsIFBQQworICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG90aGVyIGFyY2hpdGVjdHVyZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBNb3N0IE9ETXMsIE9TVnMsIGFuZCBjaGlwIHZlbmRvcnMgY3JlYXRlIGFuZCBzdXBwbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIEJTUHMgdGhhdCBzdXBwb3J0IHRoZWlyIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgY3VzdG9tIHNpbGljb24sIHlvdSBjYW4gY3JlYXRlIGEgQlNQCisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHN1cHBvcnRzIHRoYXQgYXJjaGl0ZWN0dXJlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QXNpZGUgZnJvbSBsb3RzIG9mIGFyY2hpdGVjdHVyZSBzdXBwb3J0LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgZnVsbHkgc3VwcG9ydHMgYSB3aWRlIHJhbmdlIG9mIGRldmljZQorICAgICAgICAgICAgICAgICAgICAgICAgZW11bGF0aW9uIHRocm91Z2ggdGhlIFF1aWNrIEVNVWxhdG9yIChRRU1VKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW1hZ2VzIGFuZCBDb2RlIFRyYW5zZmVyIEVhc2lseTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBvdXRwdXQgY2FuIGVhc2lseSBtb3ZlIGJldHdlZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZXMgd2l0aG91dCBtb3ZpbmcgdG8gbmV3IGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudHMuCisgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIGlmIHlvdSBoYXZlIHVzZWQgdGhlIFlvY3RvIFByb2plY3QgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBhbiBpbWFnZSBvciBhcHBsaWNhdGlvbiBhbmQgeW91IGZpbmQgeW91cnNlbGYKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBhYmxlIHRvIHN1cHBvcnQgaXQsIGNvbW1lcmNpYWwgTGludXggdmVuZG9ycyBzdWNoCisgICAgICAgICAgICAgICAgICAgICAgICBhcyBXaW5kIFJpdmVyLCBNZW50b3IgR3JhcGhpY3MsIFRpbWVzeXMsIGFuZCBFTkVBIGNvdWxkCisgICAgICAgICAgICAgICAgICAgICAgICB0YWtlIGl0IGFuZCBwcm92aWRlIG9uZ29pbmcgc3VwcG9ydC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIHZlbmRvcnMgaGF2ZSBvZmZlcmluZ3MgdGhhdCBhcmUgYnVpbHQgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GbGV4aWJpbGl0eTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgQ29ycG9yYXRpb25zIHVzZSB0aGUgWW9jdG8gUHJvamVjdCBtYW55IGRpZmZlcmVudCB3YXlzLgorICAgICAgICAgICAgICAgICAgICAgICAgT25lIGV4YW1wbGUgaXMgdG8gY3JlYXRlIGFuIGludGVybmFsIExpbnV4IGRpc3RyaWJ1dGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgYXMgYSBjb2RlIGJhc2UgdGhlIGNvcnBvcmF0aW9uIGNhbiB1c2UgYWNyb3NzIG11bHRpcGxlCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0IGdyb3Vwcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRocm91Z2ggY3VzdG9taXphdGlvbiBhbmQgbGF5ZXJpbmcsIGEgcHJvamVjdCBncm91cAorICAgICAgICAgICAgICAgICAgICAgICAgY2FuIGxldmVyYWdlIHRoZSBiYXNlIExpbnV4IGRpc3RyaWJ1dGlvbiB0byBjcmVhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGEgZGlzdHJpYnV0aW9uIHRoYXQgd29ya3MgZm9yIHRoZWlyIHByb2R1Y3QgbmVlZHMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPklkZWFsIGZvciBDb25zdHJhaW5lZCBFbWJlZGRlZCBhbmQgSW9UIGRldmljZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVubGlrZSBhIGZ1bGwgTGludXggZGlzdHJpYnV0aW9uLCB5b3UgY2FuIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgdG8gY3JlYXRlIGV4YWN0bHkgd2hhdCB5b3UgbmVlZCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtYmVkZGVkIGRldmljZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugb25seSBhZGQgdGhlIGZlYXR1cmUgc3VwcG9ydCBvciBwYWNrYWdlcyB0aGF0IHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgYWJzb2x1dGVseSBuZWVkIGZvciB0aGUgZGV2aWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGRldmljZXMgdGhhdCBoYXZlIGRpc3BsYXkgaGFyZHdhcmUsIHlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUgc3lzdGVtIGNvbXBvbmVudHMgc3VjaCBhcyBYMTEsIEdUSyssIFF0LAorICAgICAgICAgICAgICAgICAgICAgICAgQ2x1dHRlciwgYW5kIFNETCAoYW1vbmcgb3RoZXJzKSB0byBjcmVhdGUgYSByaWNoIHVzZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVyaWVuY2UuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZGV2aWNlcyB0aGF0IGRvIG5vdCBoYXZlIGEgZGlzcGxheSBvciB3aGVyZSB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgIHdhbnQgdG8gdXNlIGFsdGVybmF0aXZlIFVJIGZyYW1ld29ya3MsIHlvdSBjYW4gY2hvb3NlCisgICAgICAgICAgICAgICAgICAgICAgICB0byBub3QgaW5zdGFsbCB0aGVzZSBjb21wb25lbnRzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db21wcmVoZW5zaXZlIFRvb2xjaGFpbiBDYXBhYmlsaXRpZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvb2xjaGFpbnMgZm9yIHN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzIHNhdGlzZnkgbW9zdAorICAgICAgICAgICAgICAgICAgICAgICAgdXNlIGNhc2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91ciBoYXJkd2FyZSBzdXBwb3J0cyBmZWF0dXJlcyB0aGF0IGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgbm90IHBhcnQgb2YgYSBzdGFuZGFyZCB0b29sY2hhaW4sIHlvdSBjYW4gZWFzaWx5CisgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21pemUgdGhhdCB0b29sY2hhaW4gdGhyb3VnaCBzcGVjaWZpY2F0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybS1zcGVjaWZpYyB0dW5pbmcgcGFyYW1ldGVycy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFuZCwgc2hvdWxkIHlvdSBuZWVkIHRvIHVzZSBhIHRoaXJkLXBhcnR5IHRvb2xjaGFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lY2hhbmlzbXMgYnVpbHQgaW50byB0aGUgWW9jdG8gUHJvamVjdCBhbGxvdyBmb3IgdGhhdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWVjaGFuaXNtIFJ1bGVzIE92ZXIgUG9saWN5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBGb2N1c2luZyBvbiBtZWNoYW5pc20gcmF0aGVyIHRoYW4gcG9saWN5IGVuc3VyZXMgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgeW91IGFyZSBmcmVlIHRvIHNldCBwb2xpY2llcyBiYXNlZCBvbiB0aGUgbmVlZHMgb2YgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgZGVzaWduIGluc3RlYWQgb2YgYWRvcHRpbmcgZGVjaXNpb25zIGVuZm9yY2VkIGJ5IHNvbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSBzb2Z0d2FyZSBwcm92aWRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VXNlcyBhIExheWVyIE1vZGVsOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndGhlLXlvY3RvLXByb2plY3QtbGF5ZXItbW9kZWwnPmxheWVyIGluZnJhc3RydWN0dXJlPC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eSBpbnRvIHNlcGFyYXRlIGJ1bmRsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGluY3JlbWVudGFsbHkgYWRkIHRoZXNlIGdyb3VwZWQgZnVuY3Rpb25hbGl0aWVzCisgICAgICAgICAgICAgICAgICAgICAgICB0byB5b3VyIHByb2plY3QgYXMgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgbGF5ZXJzIHRvIGlzb2xhdGUgYW5kIGdyb3VwIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZHVjZXMgcHJvamVjdCBjb21wbGV4aXR5IGFuZCByZWR1bmRhbmN5LCBhbGxvd3MgeW91CisgICAgICAgICAgICAgICAgICAgICAgICB0byBlYXNpbHkgZXh0ZW5kIHRoZSBzeXN0ZW0sIG1ha2UgY3VzdG9taXphdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQga2VlcCBmdW5jdGlvbmFsaXR5IG9yZ2FuaXplZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlN1cHBvcnRzIFBhcnRpYWwgQnVpbGRzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGJ1aWxkIGFuZCByZWJ1aWxkIGluZGl2aWR1YWwgcGFja2FnZXMgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgYWNjb21wbGlzaGVzIHRoaXMgdGhyb3VnaCBpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NoYXJlZC1zdGF0ZS1jYWNoZSc+c2hhcmVkLXN0YXRlIGNhY2hlPC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgKHNzdGF0ZSkgc2NoZW1lLgorICAgICAgICAgICAgICAgICAgICAgICAgQmVpbmcgYWJsZSB0byBidWlsZCBhbmQgZGVidWcgY29tcG9uZW50cyBpbmRpdmlkdWFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVhc2VzIHByb2plY3QgZGV2ZWxvcG1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJlbGVhc2VzIEFjY29yZGluZyB0byBhIFN0cmljdCBTY2hlZHVsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgTWFqb3IgcmVsZWFzZXMgb2NjdXIgb24gYQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXJlbGVhc2UtcHJvY2Vzcyc+c2l4LW1vbnRoIGN5Y2xlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY3RhYmx5IGluIE9jdG9iZXIgYW5kIEFwcmlsLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1vc3QgcmVjZW50IHR3byByZWxlYXNlcyBzdXBwb3J0IHBvaW50IHJlbGVhc2VzCisgICAgICAgICAgICAgICAgICAgICAgICB0byBhZGRyZXNzIGNvbW1vbiB2dWxuZXJhYmlsaXRpZXMgYW5kIGV4cG9zdXJlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcHJlZGljdGFiaWxpdHkgaXMgY3J1Y2lhbCBmb3IgcHJvamVjdHMgYmFzZWQgb24KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGFuZCBhbGxvd3MgZGV2ZWxvcG1lbnQgdGVhbXMgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHBsYW4gYWN0aXZpdGllcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmljaCBFY29zeXN0ZW0gb2YgSW5kaXZpZHVhbHMgYW5kIE9yZ2FuaXphdGlvbnM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBvcGVuIHNvdXJjZSBwcm9qZWN0cywgdGhlIHZhbHVlIG9mIGNvbW11bml0eSBpcworICAgICAgICAgICAgICAgICAgICAgICAgdmVyeSBpbXBvcnRhbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBTdXBwb3J0IGZvcnVtcywgZXhwZXJ0aXNlLCBhbmQgYWN0aXZlIGRldmVsb3BlcnMgd2hvCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSB0byBwdXNoIHRoZSBZb2N0byBQcm9qZWN0IGZvcndhcmQgYXJlIHJlYWRpbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QmluYXJ5IFJlcHJvZHVjaWJpbGl0eTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgYWxsb3dzIHlvdSB0byBiZSB2ZXJ5IHNwZWNpZmljIGFib3V0CisgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgYW5kIGFjaGlldmVzIHZlcnkgaGlnaCBwZXJjZW50YWdlcyBvZgorICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5IHJlcHJvZHVjaWJpbGl0eSAoZS5nLiA5OS44JSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIGRpc3RyaWJ1dGlvbnMgYXJlIG5vdCBzcGVjaWZpYyBhYm91dCB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZXMgYXJlIHB1bGxlZCBpbiBhbmQgaW4gd2hhdCBvcmRlciB0byBzdXBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMsIG90aGVyIGJ1aWxkIHN5c3RlbXMgY2FuIGFyYml0cmFyaWx5CisgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MaWNlbnNlIE1hbmlmZXN0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcyBhCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtYWludGFpbmluZy1vcGVuLXNvdXJjZS1saWNlbnNlLWNvbXBsaWFuY2UtZHVyaW5nLXlvdXItcHJvZHVjdHMtbGlmZWN5Y2xlJz5saWNlbnNlIG1hbmlmZXN0PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciByZXZpZXcgYnkgcGVvcGxlIHdobyBuZWVkIHRvIHRyYWNrIHRoZSB1c2Ugb2Ygb3BlbgorICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlIGxpY2Vuc2VzIChlLmcubGVnYWwgdGVhbXMpLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZ3MtY2hhbGxlbmdlcyc+CisgICAgICAgICAgICA8dGl0bGU+Q2hhbGxlbmdlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBwcmVzZW50cyBjaGFsbGVuZ2VzIHlvdSBtaWdodCBlbmNvdW50ZXIKKyAgICAgICAgICAgICAgICB3aGVuIGRldmVsb3BpbmcgdXNpbmcgdGhlIFlvY3RvIFByb2plY3Q6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlN0ZWVwIExlYXJuaW5nIEN1cnZlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBoYXMgYSBzdGVlcCBsZWFybmluZyBjdXJ2ZSBhbmQgaGFzCisgICAgICAgICAgICAgICAgICAgICAgICBtYW55IGRpZmZlcmVudCB3YXlzIHRvIGFjY29tcGxpc2ggc2ltaWxhciB0YXNrcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEl0IGNhbiBiZSBkaWZmaWN1bHQgdG8gY2hvb3NlIGhvdyB0byBwcm9jZWVkIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcnlpbmcgbWV0aG9kcyBleGlzdCBieSB3aGljaCB0byBhY2NvbXBsaXNoIGEgZ2l2ZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhc2suCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVuZGVyc3RhbmRpbmcgV2hhdCBDaGFuZ2VzIFlvdSBOZWVkIHRvIE1ha2UKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBZb3VyIERlc2lnbiBSZXF1aXJlcyBTb21lIFJlc2VhcmNoOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBCZXlvbmQgdGhlIHNpbXBsZSB0dXRvcmlhbCBzdGFnZSwgdW5kZXJzdGFuZGluZyB3aGF0CisgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzIG5lZWQgdG8gYmUgbWFkZSBmb3IgeW91ciBwYXJ0aWN1bGFyIGRlc2lnbgorICAgICAgICAgICAgICAgICAgICAgICAgY2FuIHJlcXVpcmUgYSBzaWduaWZpY2FudCBhbW91bnQgb2YgcmVzZWFyY2ggYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBpbnZlc3RpZ2F0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIHRoYXQgaGVscHMgeW91IHRyYW5zaXRpb24gZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5aW5nIG91dCB0aGUgWW9jdG8gUHJvamVjdCB0byB1c2luZyBpdCBmb3IgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdCwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jcy93aGF0LWktd2lzaC1pZC1rbm93bi8nPldoYXQgSSB3aXNoIEknZCBLbm93bjwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2NzL3RyYW5zaXRpb25pbmctdG8tYS1jdXN0b20tZW52aXJvbm1lbnQvJz5UcmFuc2l0aW9uaW5nIHRvIGEgQ3VzdG9tIEVudmlyb25tZW50IGZvciBTeXN0ZW1zIERldmVsb3BtZW50PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudHMgb24gdGhlIFlvY3RvIFByb2plY3Qgd2Vic2l0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UHJvamVjdCBXb3JrZmxvdyBDb3VsZCBCZSBDb25mdXNpbmc6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nb3ZlcnZpZXctZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQnPllvY3RvIFByb2plY3Qgd29ya2Zsb3c8L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBjb25mdXNpbmcgaWYgeW91IGFyZSB1c2VkIHRvIHRyYWRpdGlvbmFsCisgICAgICAgICAgICAgICAgICAgICAgICBkZXNrdG9wIGFuZCBzZXJ2ZXIgc29mdHdhcmUgZGV2ZWxvcG1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBJbiBhIGRlc2t0b3AgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIG1lY2hhbmlzbXMgZXhpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGVhc2lseSBwdWxsIGFuZCBpbnN0YWxsIG5ldyBwYWNrYWdlcywgd2hpY2ggYXJlCisgICAgICAgICAgICAgICAgICAgICAgICB0eXBpY2FsbHkgcHJlLWNvbXBpbGVkIGJpbmFyaWVzIGZyb20gc2VydmVycyBhY2Nlc3NpYmxlCisgICAgICAgICAgICAgICAgICAgICAgICBvdmVyIHRoZSBJbnRlcm5ldC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFVzaW5nIHRoZSBZb2N0byBQcm9qZWN0LCB5b3UgbXVzdCBtb2RpZnkgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBhbmQgcmVidWlsZCB0byBhZGQgYWRkaXRpb25hbCBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+V29ya2luZyBpbiBhIENyb3NzLUJ1aWxkIEVudmlyb25tZW50IENhbgorICAgICAgICAgICAgICAgICAgICAgICAgRmVlbCBVbmZhbWlsaWFyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIGRldmVsb3BpbmcgY29kZSB0byBydW4gb24gYSB0YXJnZXQsIGNvbXBpbGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0aW9uLCBhbmQgdGVzdGluZyBkb25lIG9uIHRoZSBhY3R1YWwgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICBjYW4gYmUgZmFzdGVyIHRoYW4gcnVubmluZyBhIEJpdEJha2UgYnVpbGQgb24gYQorICAgICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgaG9zdCBhbmQgdGhlbiBkZXBsb3lpbmcgYmluYXJpZXMgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQgZm9yIHRlc3QuCisgICAgICAgICAgICAgICAgICAgICAgICBXaGlsZSB0aGUgWW9jdG8gUHJvamVjdCBkb2VzIHN1cHBvcnQgZGV2ZWxvcG1lbnQgdG9vbHMKKyAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRoZSB0YXJnZXQsIHRoZSBhZGRpdGlvbmFsIHN0ZXAgb2YgaW50ZWdyYXRpbmcgeW91cgorICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlcyBiYWNrIGludG8gdGhlIFlvY3RvIFByb2plY3QgYnVpbGQgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHdvdWxkIGJlIHJlcXVpcmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyBhbiBpbnRlcm1lZGlhdGUgYXBwcm9hY2ggdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgaW52b2x2ZXMgbWFraW5nIGNoYW5nZXMgb24gdGhlIGRldmVsb3BtZW50IHN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aGluIHRoZSBCaXRCYWtlIGVudmlyb25tZW50IGFuZCB0aGVuIGRlcGxveWluZyBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdXBkYXRlZCBwYWNrYWdlcyB0byB0aGUgdGFyZ2V0LjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y2VzIHBhY2thZ2VzIGluIHN0YW5kYXJkIGZvcm1hdHMgKGkuZS4gUlBNLAorICAgICAgICAgICAgICAgICAgICAgICAgREVCLCBJUEssIGFuZCBUQVIpLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBkZXBsb3kgdGhlc2UgcGFja2FnZXMgaW50byB0aGUgcnVubmluZyBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRoZSB0YXJnZXQgYnkgdXNpbmcgdXRpbGl0aWVzIG9uIHRoZSB0YXJnZXQgc3VjaAorICAgICAgICAgICAgICAgICAgICAgICAgYXMgPGZpbGVuYW1lPnJwbTwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aXBrPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluaXRpYWwgQnVpbGQgVGltZXMgQ2FuIGJlIFNpZ25pZmljYW50OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBMb25nIGluaXRpYWwgYnVpbGQgdGltZXMgYXJlIHVuZm9ydHVuYXRlbHkgdW5hdm9pZGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGR1ZSB0byB0aGUgbGFyZ2UgbnVtYmVyIG9mIHBhY2thZ2VzIGluaXRpYWxseSBidWlsdAorICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBzY3JhdGNoIGZvciBhIGZ1bGx5IGZ1bmN0aW9uaW5nIExpbnV4IHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgdGhhdCBpbml0aWFsIGJ1aWxkIGlzIGNvbXBsZXRlZCwgaG93ZXZlciwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWQtc3RhdGUgKHNzdGF0ZSkgY2FjaGUgbWVjaGFuaXNtIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZXMga2VlcHMgdGhlIHN5c3RlbSBmcm9tIHJlYnVpbGRpbmcgcGFja2FnZXMgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZSBub3QgYmVlbiAidG91Y2hlZCIgc2luY2UgdGhlIGxhc3QgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc3N0YXRlIG1lY2hhbmlzbSBzaWduaWZpY2FudGx5IHJlZHVjZXMgdGltZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBzdWNjZXNzaXZlIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3RoZS15b2N0by1wcm9qZWN0LWxheWVyLW1vZGVsJz4KKyAgICAgICAgPHRpdGxlPlRoZSBZb2N0byBQcm9qZWN0IExheWVyIE1vZGVsPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0J3MgIkxheWVyIE1vZGVsIiBpcyBhIGRldmVsb3BtZW50IG1vZGVsIGZvcgorICAgICAgICAgICAgZW1iZWRkZWQgYW5kIElvVCBMaW51eCBjcmVhdGlvbiB0aGF0IGRpc3Rpbmd1aXNoZXMgdGhlCisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGZyb20gb3RoZXIgc2ltcGxlIGJ1aWxkIHN5c3RlbXMuCisgICAgICAgICAgICBUaGUgTGF5ZXIgTW9kZWwgc2ltdWx0YW5lb3VzbHkgc3VwcG9ydHMgY29sbGFib3JhdGlvbiBhbmQKKyAgICAgICAgICAgIGN1c3RvbWl6YXRpb24uCisgICAgICAgICAgICBMYXllcnMgYXJlIHJlcG9zaXRvcmllcyB0aGF0IGNvbnRhaW4gcmVsYXRlZCBzZXRzIG9mIGluc3RydWN0aW9ucworICAgICAgICAgICAgdGhhdCB0ZWxsIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPgorICAgICAgICAgICAgd2hhdCB0byBkby4KKyAgICAgICAgICAgIFlvdSBjYW4gY29sbGFib3JhdGUsIHNoYXJlLCBhbmQgcmV1c2UgbGF5ZXJzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBMYXllcnMgY2FuIGNvbnRhaW4gY2hhbmdlcyB0byBwcmV2aW91cyBpbnN0cnVjdGlvbnMgb3Igc2V0dGluZ3MKKyAgICAgICAgICAgIGF0IGFueSB0aW1lLgorICAgICAgICAgICAgVGhpcyBwb3dlcmZ1bCBvdmVycmlkZSBjYXBhYmlsaXR5IGlzIHdoYXQgYWxsb3dzIHlvdSB0byBjdXN0b21pemUKKyAgICAgICAgICAgIHByZXZpb3VzbHkgc3VwcGxpZWQgY29sbGFib3JhdGl2ZSBvciBjb21tdW5pdHkgbGF5ZXJzIHRvIHN1aXQgeW91cgorICAgICAgICAgICAgcHJvZHVjdCByZXF1aXJlbWVudHMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSB1c2UgZGlmZmVyZW50IGxheWVycyB0byBsb2dpY2FsbHkgc2VwYXJhdGUgaW5mb3JtYXRpb24gaW4geW91cgorICAgICAgICAgICAgYnVpbGQuCisgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCB5b3UgY291bGQgaGF2ZSBCU1AsIEdVSSwgZGlzdHJvIGNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICBtaWRkbGV3YXJlLCBvciBhcHBsaWNhdGlvbiBsYXllcnMuCisgICAgICAgICAgICBQdXR0aW5nIHlvdXIgZW50aXJlIGJ1aWxkIGludG8gb25lIGxheWVyIGxpbWl0cyBhbmQgY29tcGxpY2F0ZXMKKyAgICAgICAgICAgIGZ1dHVyZSBjdXN0b21pemF0aW9uIGFuZCByZXVzZS4KKyAgICAgICAgICAgIElzb2xhdGluZyBpbmZvcm1hdGlvbiBpbnRvIGxheWVycywgb24gdGhlIG90aGVyIGhhbmQsIGhlbHBzCisgICAgICAgICAgICBzaW1wbGlmeSBmdXR1cmUgY3VzdG9taXphdGlvbnMgYW5kIHJldXNlLgorICAgICAgICAgICAgWW91IG1pZ2h0IGZpbmQgaXQgdGVtcHRpbmcgdG8ga2VlcCBldmVyeXRoaW5nIGluIG9uZSBsYXllciB3aGVuCisgICAgICAgICAgICB3b3JraW5nIG9uIGEgc2luZ2xlIHByb2plY3QuCisgICAgICAgICAgICBIb3dldmVyLCB0aGUgbW9yZSBtb2R1bGFyIHlvdXIgTWV0YWRhdGEsIHRoZSBlYXNpZXIKKyAgICAgICAgICAgIGl0IGlzIHRvIGNvcGUgd2l0aCBmdXR1cmUgY2hhbmdlcy4KKyAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBsYXllcnMgZnJvbSBzaWxpY29uCisgICAgICAgICAgICAgICAgICAgICAgICB2ZW5kb3JzIHdoZW4gcG9zc2libGUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgRmFtaWxpYXJpemUgeW91cnNlbGYgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vY2FmZmVsbGktc3RhZ2luZy55b2N0b3Byb2plY3Qub3JnL3NvZnR3YXJlLW92ZXJ2aWV3L2xheWVycy8nPllvY3RvIFByb2plY3QgY3VyYXRlZCBsYXllciBpbmRleDwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9sYXllcnMub3BlbmVtYmVkZGVkLm9yZy9sYXllcmluZGV4L2JyYW5jaC9tYXN0ZXIvbGF5ZXJzLyc+T3BlbkVtYmVkZGVkIGxheWVyIGluZGV4PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbGF0dGVyIGNvbnRhaW5zIG1vcmUgbGF5ZXJzIGJ1dCB0aGV5IGFyZSBsZXNzCisgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxseSB2YWxpZGF0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgTGF5ZXJzIHN1cHBvcnQgdGhlIGluY2x1c2lvbiBvZiB0ZWNobm9sb2dpZXMsIGhhcmR3YXJlCisgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzLCBhbmQgc29mdHdhcmUgY29tcG9uZW50cy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWFraW5nLXN1cmUteW91ci1sYXllci1pcy1jb21wYXRpYmxlLXdpdGgteW9jdG8tcHJvamVjdCc+WW9jdG8gUHJvamVjdCBDb21wYXRpYmxlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc2lnbmF0aW9uIHByb3ZpZGVzIGEgbWluaW11bSBsZXZlbCBvZiBzdGFuZGFyZGl6YXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgY29udHJpYnV0ZXMgdG8gYSBzdHJvbmcgZWNvc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICAgICAgIllQIENvbXBhdGlibGUiIGlzIGFwcGxpZWQgdG8gYXBwcm9wcmlhdGUgcHJvZHVjdHMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBzb2Z0d2FyZSBjb21wb25lbnRzIHN1Y2ggYXMgQlNQcywgb3RoZXIgT0UtY29tcGF0aWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzLCBhbmQgcmVsYXRlZCBvcGVuLXNvdXJjZSBwcm9qZWN0cywgYWxsb3dpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWNlciB0byB1c2UgWW9jdG8gUHJvamVjdCBiYWRnZXMgYW5kIGJyYW5kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICBhc3NldHMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG8gaWxsdXN0cmF0ZSBob3cgbGF5ZXJzIGFyZSB1c2VkIHRvIGtlZXAgdGhpbmdzIG1vZHVsYXIsIGNvbnNpZGVyCisgICAgICAgICAgICBtYWNoaW5lIGN1c3RvbWl6YXRpb25zLgorICAgICAgICAgICAgVGhlc2UgdHlwZXMgb2YgY3VzdG9taXphdGlvbnMgdHlwaWNhbGx5IHJlc2lkZSBpbiBhIHNwZWNpYWwgbGF5ZXIsCisgICAgICAgICAgICByYXRoZXIgdGhhbiBhIGdlbmVyYWwgbGF5ZXIsIGNhbGxlZCBhIEJTUCBMYXllci4KKyAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGUgbWFjaGluZSBjdXN0b21pemF0aW9ucyBzaG91bGQgYmUgaXNvbGF0ZWQgZnJvbQorICAgICAgICAgICAgcmVjaXBlcyBhbmQgTWV0YWRhdGEgdGhhdCBzdXBwb3J0IGEgbmV3IEdVSSBlbnZpcm9ubWVudCwKKyAgICAgICAgICAgIGZvciBleGFtcGxlLgorICAgICAgICAgICAgVGhpcyBzaXR1YXRpb24gZ2l2ZXMgeW91IGEgY291cGxlIG9mIGxheWVyczogb25lIGZvciB0aGUgbWFjaGluZQorICAgICAgICAgICAgY29uZmlndXJhdGlvbnMsIGFuZCBvbmUgZm9yIHRoZSBHVUkgZW52aXJvbm1lbnQuCisgICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCwgaG93ZXZlciwgdGhhdCB0aGUgQlNQIGxheWVyIGNhbgorICAgICAgICAgICAgc3RpbGwgbWFrZSBtYWNoaW5lLXNwZWNpZmljIGFkZGl0aW9ucyB0byByZWNpcGVzIHdpdGhpbiB0aGUgR1VJCisgICAgICAgICAgICBlbnZpcm9ubWVudCBsYXllciB3aXRob3V0IHBvbGx1dGluZyB0aGUgR1VJIGxheWVyIGl0c2VsZgorICAgICAgICAgICAgd2l0aCB0aG9zZSBtYWNoaW5lLXNwZWNpZmljIGNoYW5nZXMuCisgICAgICAgICAgICBZb3UgY2FuIGFjY29tcGxpc2ggdGhpcyB0aHJvdWdoIGEgcmVjaXBlIHRoYXQgaXMgYSBCaXRCYWtlIGFwcGVuZAorICAgICAgICAgICAgKDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPikgZmlsZSwgd2hpY2ggaXMgZGVzY3JpYmVkIGxhdGVyCisgICAgICAgICAgICBpbiB0aGlzIHNlY3Rpb24uCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBGb3IgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvbiBCU1AgbGF5ZXIgc3RydWN0dXJlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsnPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgY29udGFpbnMgYm90aCBnZW5lcmFsIGxheWVycyBhbmQgQlNQIGxheWVycyByaWdodCBvdXQgb2YgdGhlIGJveC4KKyAgICAgICAgICAgIFlvdSBjYW4gZWFzaWx5IGlkZW50aWZ5IGxheWVycyB0aGF0IHNoaXAgd2l0aCBhIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgIHJlbGVhc2UgaW4gdGhlIFNvdXJjZSBEaXJlY3RvcnkgYnkgdGhlaXIgbmFtZXMuCisgICAgICAgICAgICBMYXllcnMgdHlwaWNhbGx5IGhhdmUgbmFtZXMgdGhhdCBiZWdpbiB3aXRoIHRoZSBzdHJpbmcKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgSXQgaXMgbm90IGEgcmVxdWlyZW1lbnQgdGhhdCBhIGxheWVyIG5hbWUgYmVnaW4gd2l0aCB0aGUKKyAgICAgICAgICAgICAgICBwcmVmaXggPGZpbGVuYW1lPm1ldGEtPC9maWxlbmFtZT4sIGJ1dCBpdCBpcyBhIGNvbW1vbmx5CisgICAgICAgICAgICAgICAgYWNjZXB0ZWQgc3RhbmRhcmQgaW4gdGhlIFlvY3RvIFByb2plY3QgY29tbXVuaXR5LgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSB3ZXJlIHRvIGV4YW1pbmUgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcG9reS90cmVlLyc+dHJlZSB2aWV3PC91bGluaz4KKyAgICAgICAgICAgIG9mIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnksIHlvdSB3aWxsIHNlZSBzZXZlcmFsCisgICAgICAgICAgICBsYXllcnM6IDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4sCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1za2VsZXRvbjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtc2VsZnRlc3Q8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3k8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIEVhY2ggb2YgdGhlc2UgcmVwb3NpdG9yaWVzIHJlcHJlc2VudHMgYSBkaXN0aW5jdCBsYXllci4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9yIHByb2NlZHVyZXMgb24gaG93IHRvIGNyZWF0ZSBsYXllcnMsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcgYW5kIENyZWF0aW5nIExheWVyczwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nY29tcG9uZW50cy1hbmQtdG9vbHMnPgorICAgICAgICA8dGl0bGU+Q29tcG9uZW50cyBhbmQgVG9vbHM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgZW1wbG95cyBhIGNvbGxlY3Rpb24gb2YgY29tcG9uZW50cyBhbmQKKyAgICAgICAgICAgIHRvb2xzIHVzZWQgYnkgdGhlIHByb2plY3QgaXRzZWxmLCBieSBwcm9qZWN0IGRldmVsb3BlcnMsCisgICAgICAgICAgICBhbmQgYnkgdGhvc2UgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICBUaGVzZSBjb21wb25lbnRzIGFuZCB0b29scyBhcmUgb3BlbiBzb3VyY2UgcHJvamVjdHMgYW5kCisgICAgICAgICAgICBtZXRhZGF0YSB0aGF0IGFyZSBzZXBhcmF0ZSBmcm9tIHRoZSByZWZlcmVuY2UgZGlzdHJpYnV0aW9uCisgICAgICAgICAgICAoPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcG9reSc+UG9reTwvdWxpbms+KQorICAgICAgICAgICAgYW5kIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPi4KKyAgICAgICAgICAgIE1vc3Qgb2YgdGhlIGNvbXBvbmVudHMgYW5kIHRvb2xzIGFyZSBkb3dubG9hZGVkIHNlcGFyYXRlbHkuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBicmllZiBvdmVydmlld3Mgb2YgdGhlIGNvbXBvbmVudHMgYW5kCisgICAgICAgICAgICB0b29scyBhc3NvY2lhdGVkIHdpdGggdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZ3MtZGV2ZWxvcG1lbnQtdG9vbHMnPgorICAgICAgICAgICAgPHRpdGxlPkRldmVsb3BtZW50IFRvb2xzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IGNvbnNpc3RzIG9mIHRvb2xzIHRoYXQgaGVscCB5b3UgZGV2ZWxvcAorICAgICAgICAgICAgICAgIGltYWdlcyBhbmQgYXBwbGljYXRpb25zIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0OgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nZ3MtY3JvcHMtb3ZlcnZpZXcnPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNST1BTOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvY3JvcHMvYWJvdXQvJz5DUk9QUzwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBpcyBhbiBvcGVuIHNvdXJjZSwgY3Jvc3MtcGxhdGZvcm0gZGV2ZWxvcG1lbnQgZnJhbWV3b3JrCisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGxldmVyYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8nPkRvY2tlciBDb250YWluZXJzPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICBDUk9QUyBwcm92aWRlcyBhbiBlYXNpbHkgbWFuYWdlZCwgZXh0ZW5zaWJsZSBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBhbGxvd3MgeW91IHRvIGJ1aWxkIGJpbmFyaWVzIGZvciBhIHZhcmlldHkgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZXMgb24gV2luZG93cywgTGludXggYW5kIE1hYyBPUyBYIGhvc3RzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQtbGluZSB0b29sIGlzIGF2YWlsYWJsZSBhcyBwYXJ0IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaWJsZSBTREsgKGVTREspIGFuZCBpcyBpdHMgY29ybmVyc3RvbmUuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHRvIGhlbHAgYnVpbGQsCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0LCBhbmQgcGFja2FnZSBzb2Z0d2FyZSB3aXRoaW4gdGhlIGVTREsuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgdG9vbCB0byBvcHRpb25hbGx5IGludGVncmF0ZSB3aGF0IHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgaW50byBhbiBpbWFnZSBidWlsdCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW0uPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBjb21tYW5kIGVtcGxveXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGEgbnVtYmVyIG9mIHN1Yi1jb21tYW5kcyB0aGF0IGFsbG93IHlvdSB0byBhZGQsIG1vZGlmeSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB1cGdyYWRlIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBBcyB3aXRoIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLCDigJxyZWNpcGVz4oCdCisgICAgICAgICAgICAgICAgICAgICAgICByZXByZXNlbnQgc29mdHdhcmUgcGFja2FnZXMgd2l0aGluCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgdXNlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+LCBhIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICAgICAgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgdXNlIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBleGlzdGluZyByZWNpcGUgaXMgdXNlZCBpbiBvcmRlciB0byBkZXRlcm1pbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIHRvIGdldCB0aGUgc291cmNlIGNvZGUgYW5kIGhvdyB0byBwYXRjaCBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIGJvdGggY2FzZXMsIGFuIGVudmlyb25tZW50IGlzIHNldCB1cCBzbyB0aGF0IHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBidWlsZCB0aGUgcmVjaXBlIGEgc291cmNlIHRyZWUgdGhhdCBpcyB1bmRlciB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sIGlzIHVzZWQgaW4gb3JkZXIgdG8gYWxsb3cgeW91IHRvIG1ha2UgY2hhbmdlcworICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIHNvdXJjZSBhcyBkZXNpcmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgYm90aCBuZXcgcmVjaXBlcyBhbmQgdGhlIHNvdXJjZSBnbyBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgICBhIOKAnHdvcmtzcGFjZeKAnSBkaXJlY3RvcnkgdW5kZXIgdGhlIGVTREsuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZXMgYW4gZXhpc3RpbmcgcmVjaXBlIHNvIHRoYXQgeW91IGNhbiBidWlsZCBpdAorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGFuIHVwZGF0ZWQgc2V0IG9mIHNvdXJjZSBmaWxlcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4gcmVhZCBhYm91dCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd29ya2Zsb3cgaW4gdGhlIFlvY3RvCisgICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCBFeHRlbnNpYmxlCisgICAgICAgICAgICAgICAgICAgICAgICBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIE1hbnVhbCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyN1c2luZy1kZXZ0b29sLWluLXlvdXItc2RrLXdvcmtmbG93Jz5Vc2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGluIFlvdXIgU0RLIFdvcmtmbG93JzwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZVNESyBwcm92aWRlcyBhIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcyB0YWlsb3JlZCB0byB0aGUgY29udGVudHMgb2YgYSBzcGVjaWZpYyBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBlU0RLIG1ha2VzIGl0IGVhc3kgdG8gYWRkIG5ldyBhcHBsaWNhdGlvbnMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMgdG8gYW4gaW1hZ2UsIG1vZGlmeSB0aGUgc291cmNlIGZvciBhbgorICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgY29tcG9uZW50LCB0ZXN0IGNoYW5nZXMgb24gdGhlIHRhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgaGFyZHdhcmUsIGFuZCBpbnRlZ3JhdGUgaW50byB0aGUgcmVzdCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZVNESyBnaXZlcyB5b3UgYSB0b29sY2hhaW4gZXhwZXJpZW5jZSBzdXBwbGVtZW50ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIHBvd2VyZnVsIHNldCBvZiA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kcyB0YWlsb3JlZCBmb3IgdGhlIFlvY3RvIFByb2plY3QgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBpbmZvcm1hdGlvbiBvbiB0aGUgZVNESywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48dHJhZGVtYXJrIGNsYXNzPSd0cmFkZSc+RWNsaXBzZTwvdHJhZGVtYXJrPiBJREUgUGx1Zy1pbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwbHVnLWluIGVuYWJsZXMgeW91IHRvIHVzZSB0aGUgcG9wdWxhciBFY2xpcHNlCisgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ3JhdGVkIERldmVsb3BtZW50IEVudmlyb25tZW50IChJREUpLCB3aGljaCBhbGxvd3MKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkZXZlbG9wbWVudCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCBhbGwgd2l0aGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgRWNsaXBzZSBJREUuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHdvcmsgd2l0aGluIEVjbGlwc2UgdG8gY3Jvc3MtY29tcGlsZSwgZGVwbG95LAorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGV4ZWN1dGUgeW91ciBvdXRwdXQgaW50byBhIFFFTVUgZW11bGF0aW9uIHNlc3Npb24KKyAgICAgICAgICAgICAgICAgICAgICAgIGFzIHdlbGwgYXMgb250byBhY3R1YWwgdGFyZ2V0IGhhcmR3YXJlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGVudmlyb25tZW50IGFsc28gc3VwcG9ydHMgcGVyZm9ybWFuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuaGFuY2luZyB0b29scyB0aGF0IGFsbG93IHlvdSB0byBwZXJmb3JtIHJlbW90ZQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsaW5nLCB0cmFjaW5nLCBjb2xsZWN0aW9uIG9mIHBvd2VyIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uIG9mIGxhdGVuY3kgZGF0YSwgYW5kIGNvbGxlY3Rpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlIGRhdGEuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5PbmNlIHlvdSBlbmFibGUgdGhlIHBsdWctaW4sIHN0YW5kYXJkIEVjbGlwc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucyBhdXRvbWF0aWNhbGx5IHVzZSB0aGUgY3Jvc3MtdG9vbGNoYWluCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdGFyZ2V0IHN5c3RlbSBsaWJyYXJpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGJ1aWxkIGFwcGxpY2F0aW9ucyB1c2luZyBhbnkgb2YgdGhlc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBFY2xpcHNlIHBsdWctaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjYWR0LWVjbGlwc2UnPldvcmtpbmcgV2l0aGluIEVjbGlwc2U8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspCisgICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlRvYXN0ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvYXN0ZXIgaXMgYSB3ZWIgaW50ZXJmYWNlIHRvIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICAgICAgVG9hc3RlciBhbGxvd3MgeW91IHRvIGNvbmZpZ3VyZSwgcnVuLCBhbmQgdmlldworICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gYWJvdXQgYnVpbGRzLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIFRvYXN0ZXIsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1RPQVNUX1VSTDsnPlRvYXN0ZXIgVXNlciBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2dzLXByb2R1Y3Rpb24tdG9vbHMnPgorICAgICAgICAgICAgPHRpdGxlPlByb2R1Y3Rpb24gVG9vbHM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgY29uc2lzdHMgb2YgdG9vbHMgdGhhdCBoZWxwIHByb2R1Y3Rpb24KKyAgICAgICAgICAgICAgICByZWxhdGVkIGFjdGl2aXRpZXMgdXNpbmcgdGhlIFlvY3RvIFByb2plY3Q6CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkF1dG8gVXBncmFkZSBIZWxwZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdXRpbGl0eSB3aGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIChCaXRCYWtlIGFuZCBPRS1Db3JlKSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlcyB1cGdyYWRlcworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHJlY2lwZXMgdGhhdCBhcmUgYmFzZWQgb24gbmV3IHZlcnNpb25zIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlcyBwdWJsaXNoZWQgdXBzdHJlYW0uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJlY2lwZSBSZXBvcnRpbmcgU3lzdGVtOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgUmVjaXBlIFJlcG9ydGluZyBTeXN0ZW0gdHJhY2tzIHJlY2lwZSB2ZXJzaW9ucworICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlIGZvciBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1haW4gcHVycG9zZSBvZiB0aGUgc3lzdGVtIGlzIHRvIGhlbHAgeW91CisgICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2UgdGhlIHJlY2lwZXMgeW91IG1haW50YWluIGFuZCB0byBvZmZlciBhIGR5bmFtaWMKKyAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJ2aWV3IG9mIHRoZSBwcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFJlY2lwZSBSZXBvcnRpbmcgU3lzdGVtIGlzIGJ1aWx0IG9uIHRvcCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9sYXllcnMub3BlbmVtYmVkZGVkLm9yZy9sYXllcmluZGV4L2xheWVycy8iPk9wZW5FbWJlZGRlZCBMYXllciBJbmRleDwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgYSB3ZWJzaXRlIHRoYXQgaW5kZXhlcyBPcGVuRW1iZWRkZWQtQ29yZQorICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QYXRjaHdvcms6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9qay5vemxhYnMub3JnL3Byb2plY3RzL3BhdGNod29yay8nPlBhdGNod29yazwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBpcyBhIGZvcmsgb2YgYSBwcm9qZWN0IG9yaWdpbmFsbHkgc3RhcnRlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL296bGFicy5vcmcvJz5PekxhYnM8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwcm9qZWN0IGlzIGEgd2ViLWJhc2VkIHRyYWNraW5nIHN5c3RlbSBkZXNpZ25lZAorICAgICAgICAgICAgICAgICAgICAgICAgdG8gc3RyZWFtbGluZSB0aGUgcHJvY2VzcyBvZiBicmluZ2luZyBjb250cmlidXRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIGEgcHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHVzZXMgUGF0Y2h3b3JrIGFzIGFuIG9yZ2FuaXphdGlvbmFsCisgICAgICAgICAgICAgICAgICAgICAgICB0b29sIHRvIGhhbmRsZSBwYXRjaGVzLCB3aGljaCBudW1iZXIgaW4gdGhlIHRob3VzYW5kcworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGV2ZXJ5IHJlbGVhc2UuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkF1dG9CdWlsZGVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBBdXRvQnVpbGRlciBpcyBhIHByb2plY3QgdGhhdCBhdXRvbWF0ZXMgYnVpbGQgdGVzdHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBxdWFsaXR5IGFzc3VyYW5jZSAoUUEpLgorICAgICAgICAgICAgICAgICAgICAgICAgQnkgdXNpbmcgdGhlIHB1YmxpYyBBdXRvQnVpbGRlciwgYW55b25lIGNhbiBkZXRlcm1pbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzdGF0dXMgb2YgdGhlIGN1cnJlbnQgIm1hc3RlciIgYnJhbmNoIG9mIFBva3kuCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdXRvQnVpbGRlciBpcyBiYXNlZCBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vYnVpbGRib3QubmV0Lyc+YnVpbGRib3Q8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkEgZ29hbCBvZiB0aGUgWW9jdG8gUHJvamVjdCBpcyB0byBsZWFkIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgb3BlbiBzb3VyY2UgaW5kdXN0cnkgd2l0aCBhIHByb2plY3QgdGhhdCBhdXRvbWF0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RpbmcgYW5kIFFBIHByb2NlZHVyZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBJbiBkb2luZyBzbywgdGhlIHByb2plY3QgZW5jb3VyYWdlcyBhIGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tdW5pdHkgdGhhdCBwdWJsaXNoZXMgUUEgYW5kIHRlc3QgcGxhbnMsIHB1YmxpY2x5CisgICAgICAgICAgICAgICAgICAgICAgICBkZW1vbnN0cmF0ZXMgUUEgYW5kIHRlc3QgcGxhbnMsIGFuZCBlbmNvdXJhZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBvZiB0b29scyB0aGF0IGF1dG9tYXRlIGFuZCB0ZXN0IGFuZCBRQQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2VkdXJlcyBmb3IgdGhlIGJlbmVmaXQgb2YgdGhlIGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tdW5pdHkuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgY2FuIGxlYXJuIG1vcmUgYWJvdXQgdGhlIEF1dG9CdWlsZGVyIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fQUJfVVJMOyc+aGVyZTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Dcm9zcy1QcmVsaW5rOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQcmVsaW5raW5nIGlzIHRoZSBwcm9jZXNzIG9mIHByZS1jb21wdXRpbmcgdGhlIGxvYWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NlcyBhbmQgbGluayB0YWJsZXMgZ2VuZXJhdGVkIGJ5IHRoZSBkeW5hbWljCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5rZXIgYXMgY29tcGFyZWQgdG8gZG9pbmcgdGhpcyBhdCBydW50aW1lLgorICAgICAgICAgICAgICAgICAgICAgICAgRG9pbmcgdGhpcyBhaGVhZCBvZiB0aW1lIHJlc3VsdHMgaW4gcGVyZm9ybWFuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGltcHJvdmVtZW50cyB3aGVuIHRoZSBhcHBsaWNhdGlvbiBpcyBsYXVuY2hlZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZHVjZWQgbWVtb3J5IHVzYWdlIGZvciBsaWJyYXJpZXMgc2hhcmVkIGJ5IG1hbnkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9ucy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkhpc3RvcmljYWxseSwgY3Jvc3MtcHJlbGluayBpcyBhIHZhcmlhbnQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZWxpbmssIHdoaWNoIHdhcyBjb25jZWl2ZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9wZW9wbGUucmVkaGF0LmNvbS9qYWt1Yi9wcmVsaW5rLnBkZic+SmFrdWIgSmVsJmlhY3V0ZTtuZWs8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgYSBudW1iZXIgb2YgeWVhcnMgYWdvLgorICAgICAgICAgICAgICAgICAgICAgICAgQm90aCBwcmVsaW5rIGFuZCBjcm9zcy1wcmVsaW5rIGFyZSBtYWludGFpbmVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc2FtZSByZXBvc2l0b3J5IGFsYmVpdCBvbiBzZXBhcmF0ZSBicmFuY2hlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJ5IHByb3ZpZGluZyBhbiBlbXVsYXRlZCBydW50aW1lIGR5bmFtaWMgbGlua2VyCisgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPi1kZXJpdmVkCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGQuc288L2ZpbGVuYW1lPiBlbXVsYXRpb24pLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyb3NzLXByZWxpbmsgcHJvamVjdCBleHRlbmRzIHRoZSBwcmVsaW5rIHNvZnR3YXJl4oCZcworICAgICAgICAgICAgICAgICAgICAgICAgYWJpbGl0eSB0byBwcmVsaW5rIGEgc3lzcm9vdCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgdGhlIGNyb3NzLXByZWxpbmsgc29mdHdhcmUgZW5hYmxlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGFiaWxpdHkgdG8gd29yayBpbiBzeXNyb290IHN0eWxlIGVudmlyb25tZW50cy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBkeW5hbWljIGxpbmtlciBkZXRlcm1pbmVzIHN0YW5kYXJkIGxvYWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MgY2FsY3VsYXRpb25zIGJhc2VkIG9uIGEgdmFyaWV0eSBvZiBmYWN0b3JzCisgICAgICAgICAgICAgICAgICAgICAgICBzdWNoIGFzIG1hcHBpbmcgYWRkcmVzc2VzLCBsaWJyYXJ5IHVzYWdlLCBhbmQgbGlicmFyeQorICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gY29uZmxpY3RzLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHByZWxpbmsgdG9vbCB1c2VzIHRoaXMgaW5mb3JtYXRpb24sIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBkeW5hbWljIGxpbmtlciwgdG8gZGV0ZXJtaW5lIHVuaXF1ZSBsb2FkIGFkZHJlc3NlcworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGV4ZWN1dGFibGUgYW5kIGxpbmthYmxlIGZvcm1hdCAoRUxGKSBiaW5hcmllcworICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBhcmUgc2hhcmVkIGxpYnJhcmllcyBhbmQgZHluYW1pY2FsbHkgbGlua2VkLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHByZWxpbmsgdG9vbCBtb2RpZmllcyB0aGVzZSBFTEYgYmluYXJpZXMgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZS1jb21wdXRlZCBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgZmFzdGVyIGxvYWRpbmcgYW5kIG9mdGVuIGxvd2VyIG1lbW9yeQorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VtcHRpb24gYmVjYXVzZSBtb3JlIG9mIHRoZSBsaWJyYXJ5IGNvZGUgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICBiZSByZS11c2VkIGZyb20gc2hhcmVkIENvcHktT24tV3JpdGUgKENPVykgcGFnZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBvcmlnaW5hbCB1cHN0cmVhbSBwcmVsaW5rIHByb2plY3Qgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHMgcnVubmluZyBwcmVsaW5rIG9uIHRoZSBlbmQgdGFyZ2V0IGRldmljZQorICAgICAgICAgICAgICAgICAgICAgICAgZHVlIHRvIHRoZSByZWxpYW5jZSBvbiB0aGUgdGFyZ2V0IGRldmljZeKAmXMgZHluYW1pYworICAgICAgICAgICAgICAgICAgICAgICAgbGlua2VyLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyByZXN0cmljdGlvbiBjYXVzZXMgaXNzdWVzIHdoZW4gZGV2ZWxvcGluZyBhCisgICAgICAgICAgICAgICAgICAgICAgICBjcm9zcy1jb21waWxlZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY3Jvc3MtcHJlbGluayBhZGRzIGEgc3ludGhlc2l6ZWQgZHluYW1pYyBsb2FkZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgcnVucyBvbiB0aGUgaG9zdCwgdGh1cyBwZXJtaXR0aW5nIGNyb3NzLXByZWxpbmtpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgZXZlciBoYXZpbmcgdG8gcnVuIG9uIGEgcmVhZC13cml0ZSB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlBzZXVkbzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUHNldWRvIGlzIHRoZSBZb2N0byBQcm9qZWN0IGltcGxlbWVudGF0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbWFuLmhlLm5ldC9tYW4xL2Zha2Vyb290Jz5mYWtlcm9vdDwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgdXNlZCB0byBydW4gY29tbWFuZHMgaW4gYW4gZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgc2VlbWluZ2x5IGhhcyByb290IHByaXZpbGVnZXMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5EdXJpbmcgYSBidWlsZCwgaXQgY2FuIGJlIG5lY2Vzc2FyeSB0byBwZXJmb3JtCisgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zIHRoYXQgcmVxdWlyZSBzeXN0ZW0gYWRtaW5pc3RyYXRvcgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpdmlsZWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBmaWxlIG93bmVyc2hpcCBvciBwZXJtaXNzaW9ucyBtaWdodCBuZWVkCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbml0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgUHNldWRvIGlzIGEgdG9vbCB0aGF0IHlvdSBjYW4gZWl0aGVyIHVzZSBkaXJlY3RseSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MRF9QUkVMT0FEPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBFaXRoZXIgbWV0aG9kIGFsbG93cyB0aGVzZSBvcGVyYXRpb25zIHRvIHN1Y2NlZWQgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHByaXZpbGVnZXMgZXhpc3QgZXZlbgorICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB0aGV5IGRvIG5vdC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4gcmVhZCBtb3JlIGFib3V0IFBzZXVkbyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdmYWtlcm9vdC1hbmQtcHNldWRvJz5GYWtlcm9vdCBhbmQgUHNldWRvPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdncy1vcGVuZW1iZWRkZWQtYnVpbGQtc3lzdGVtJz4KKyAgICAgICAgICAgIDx0aXRsZT5PcGVuLUVtYmVkZGVkIEJ1aWxkIFN5c3RlbSBDb21wb25lbnRzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IGNvbnNpc3RzIG9mIGNvbXBvbmVudHMgYXNzb2NpYXRlZCB3aXRoIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz46CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJpdEJha2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgaXMgYSBjb3JlIGNvbXBvbmVudCBvZiB0aGUgWW9jdG8gUHJvamVjdCBhbmQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gYnVpbGQgaW1hZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgV2hpbGUgQml0QmFrZSBpcyBrZXkgdG8gdGhlIGJ1aWxkIHN5c3RlbSwgQml0QmFrZQorICAgICAgICAgICAgICAgICAgICAgICAgaXMgbWFpbnRhaW5lZCBzZXBhcmF0ZWx5IGZyb20gdGhlIFlvY3RvIFByb2plY3QuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5CaXRCYWtlIGlzIGEgZ2VuZXJpYyB0YXNrIGV4ZWN1dGlvbiBlbmdpbmUgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dzIHNoZWxsIGFuZCBQeXRob24gdGFza3MgdG8gYmUgcnVuIGVmZmljaWVudGx5CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgaW4gcGFyYWxsZWwgd2hpbGUgd29ya2luZyB3aXRoaW4gY29tcGxleCBpbnRlci10YXNrCisgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmN5IGNvbnN0cmFpbnRzLgorICAgICAgICAgICAgICAgICAgICAgICAgSW4gc2hvcnQsIEJpdEJha2UgaXMgYSBidWlsZCBlbmdpbmUgdGhhdCB3b3JrcworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCByZWNpcGVzIHdyaXR0ZW4gaW4gYSBzcGVjaWZpYyBmb3JtYXQgaW4gb3JkZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHBlcmZvcm0gc2V0cyBvZiB0YXNrcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4gbGVhcm4gbW9yZSBhYm91dCBCaXRCYWtlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyc+Qml0QmFrZSBVc2VyIE1hbnVhbDwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcGVuRW1iZWRkZWQtQ29yZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkLUNvcmUgKE9FLUNvcmUpIGlzIGEgY29tbW9uIGxheWVyIG9mCisgICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YSAoaS5lLiByZWNpcGVzLCBjbGFzc2VzLCBhbmQgYXNzb2NpYXRlZCBmaWxlcykKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgYnkgT3BlbkVtYmVkZGVkLWRlcml2ZWQgc3lzdGVtcywgd2hpY2ggaW5jbHVkZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgYW5kIHRoZSBPcGVuRW1iZWRkZWQgUHJvamVjdCBib3RoCisgICAgICAgICAgICAgICAgICAgICAgICBtYWludGFpbiB0aGUgT3BlbkVtYmVkZGVkLUNvcmUuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlIE9FLUNvcmUgbWV0YWRhdGEgaW4gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS9tZXRhJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkhpc3RvcmljYWxseSwgdGhlIFlvY3RvIFByb2plY3QgaW50ZWdyYXRlZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIE9FLUNvcmUgbWV0YWRhdGEgdGhyb3VnaG91dCB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlIHJlcG9zaXRvcnkgcmVmZXJlbmNlIHN5c3RlbSAoUG9reSkuCisgICAgICAgICAgICAgICAgICAgICAgICBBZnRlciBZb2N0byBQcm9qZWN0IFZlcnNpb24gMS4wLCB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIE9wZW5FbWJlZGRlZCBhZ3JlZWQgdG8gd29yayB0b2dldGhlciBhbmQgc2hhcmUgYQorICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uIGNvcmUgc2V0IG9mIG1ldGFkYXRhIChPRS1Db3JlKSwgd2hpY2ggY29udGFpbmVkCisgICAgICAgICAgICAgICAgICAgICAgICBtdWNoIG9mIHRoZSBmdW5jdGlvbmFsaXR5IHByZXZpb3VzbHkgZm91bmQgaW4gUG9reS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY29sbGFib3JhdGlvbiBhY2hpZXZlZCBhIGxvbmctc3RhbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBvYmplY3RpdmUgZm9yIGhhdmluZyBhIG1vcmUgdGlnaHRseQorICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlZCBhbmQgcXVhbGl0eS1hc3N1cmVkIGNvcmUuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVzdWx0cyBhbHNvIGZpdCB3ZWxsIHdpdGggdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdGl2ZSBvZiBhY2hpZXZpbmcgYSBzbWFsbGVyIG51bWJlciBvZiBmdWxseQorICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZWQgdG9vbHMgYXMgY29tcGFyZWQgdG8gbWFueSBkaWZmZXJlbnQgb25lcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+U2hhcmluZyBhIGNvcmUgc2V0IG9mIG1ldGFkYXRhIHJlc3VsdHMgaW4gUG9reQorICAgICAgICAgICAgICAgICAgICAgICAgYXMgYW4gaW50ZWdyYXRpb24gbGF5ZXIgb24gdG9wIG9mIE9FLUNvcmUuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGF0IGluIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3lwLWtleS1kZXYtZWxlbWVudHMnPmZpZ3VyZTwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBjb21iaW5lcyB2YXJpb3VzIGNvbXBvbmVudHMgc3VjaCBhcworICAgICAgICAgICAgICAgICAgICAgICAgQml0QmFrZSwgT0UtQ29yZSwgc2NyaXB0IOKAnGdsdWXigJ0sIGFuZCBkb2N1bWVudGF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaXRzIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2dzLXJlZmVyZW5jZS1kaXN0cmlidXRpb24tcG9reSc+CisgICAgICAgICAgICA8dGl0bGU+UmVmZXJlbmNlIERpc3RyaWJ1dGlvbiAoUG9reSk8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBQb2t5IGlzIHRoZSBZb2N0byBQcm9qZWN0IHJlZmVyZW5jZSBkaXN0cmlidXRpb24uCisgICAgICAgICAgICAgICAgSXQgY29udGFpbnMgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW4tRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4KKyAgICAgICAgICAgICAgICAoQml0QmFrZSBhbmQgT0UtQ29yZSkgYXMgd2VsbCBhcyBhIHNldCBvZiBtZXRhZGF0YSB0byBnZXQgeW91CisgICAgICAgICAgICAgICAgc3RhcnRlZCBidWlsZGluZyB5b3VyIG93biBkaXN0cmlidXRpb24uCisgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3doYXQtaXMtdGhlLXlvY3RvLXByb2plY3QnPmZpZ3VyZTwvbGluaz4gaW4KKyAgICAgICAgICAgICAgICAiV2hhdCBpcyB0aGUgWW9jdG8gUHJvamVjdD8iIHNlY3Rpb24gZm9yIGFuIGlsbHVzdHJhdGlvbgorICAgICAgICAgICAgICAgIHRoYXQgc2hvd3MgUG9reSBhbmQgaXRzIHJlbGF0aW9uc2hpcCB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZQorICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+VG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0IHRvb2xzIGFuZCBjb21wb25lbnRzLCB5b3UKKyAgICAgICAgICAgICAgICBjYW4gZG93bmxvYWQgKDxmaWxlbmFtZT5jbG9uZTwvZmlsZW5hbWU+KSBQb2t5IGFuZCB1c2UgaXQKKyAgICAgICAgICAgICAgICB0byBib290c3RyYXAgeW91ciBvd24gZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBQb2t5IGRvZXMgbm90IGNvbnRhaW4gYmluYXJ5IGZpbGVzLgorICAgICAgICAgICAgICAgICAgICBJdCBpcyBhIHdvcmtpbmcgZXhhbXBsZSBvZiBob3cgdG8gYnVpbGQgeW91ciBvd24gY3VzdG9tCisgICAgICAgICAgICAgICAgICAgIExpbnV4IGRpc3RyaWJ1dGlvbiBmcm9tIHNvdXJjZS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgWW91IGNhbiByZWFkIG1vcmUgYWJvdXQgUG9reSBpbiB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmZXJlbmNlLWVtYmVkZGVkLWRpc3RyaWJ1dGlvbic+UmVmZXJlbmNlIEVtYmVkZGVkIERpc3RyaWJ1dGlvbiAoUG9reSk8L2xpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZ3MtcGFja2FnZXMtZm9yLWZpbmlzaGVkLXRhcmdldHMnPgorICAgICAgICAgICAgPHRpdGxlPlBhY2thZ2VzIGZvciBGaW5pc2hlZCBUYXJnZXRzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0cyBjb21wb25lbnRzIGFzc29jaWF0ZWQgd2l0aCBwYWNrYWdlcworICAgICAgICAgICAgICAgIGZvciBmaW5pc2hlZCB0YXJnZXRzOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYXRjaGJveDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hib3ggaXMgYW4gT3BlbiBTb3VyY2UsIGJhc2UgZW52aXJvbm1lbnQgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgWCBXaW5kb3cgU3lzdGVtIHJ1bm5pbmcgb24gbm9uLWRlc2t0b3AsIGVtYmVkZGVkCisgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybXMgc3VjaCBhcyBoYW5kaGVsZHMsIHNldC10b3AgYm94ZXMsIGtpb3NrcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhbnl0aGluZyBlbHNlIGZvciB3aGljaCBzY3JlZW4gc3BhY2UsIGlucHV0CisgICAgICAgICAgICAgICAgICAgICAgICBtZWNoYW5pc21zLCBvciBzeXN0ZW0gcmVzb3VyY2VzIGFyZSBsaW1pdGVkLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+TWF0Y2hib3ggY29uc2lzdHMgb2YgYSBudW1iZXIgb2YgaW50ZXJjaGFuZ2VhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgb3B0aW9uYWwgYXBwbGljYXRpb25zIHRoYXQgeW91IGNhbiB0YWlsb3IgdG8gYQorICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMsIG5vbi1kZXNrdG9wIHBsYXRmb3JtIHRvIGVuaGFuY2UgdXNhYmlsaXR5CisgICAgICAgICAgICAgICAgICAgICAgICBpbiBjb25zdHJhaW5lZCBlbnZpcm9ubWVudHMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgY2FuIGZpbmQgdGhlIE1hdGNoYm94IHNvdXJjZSBpbiB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcGtnPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9wZW4gUGFjS2FHZSBtYW5hZ2VtZW50IChvcGtnKSBpcyBhIGxpZ2h0d2VpZ2h0CisgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIG1hbmFnZW1lbnQgc3lzdGVtIGJhc2VkIG9uIHRoZSBpdHN5IHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIChpcGtnKSBtYW5hZ2VtZW50IHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9wa2cgaXMgd3JpdHRlbiBpbiBDIGFuZCByZXNlbWJsZXMgQWR2YW5jZWQgUGFja2FnZQorICAgICAgICAgICAgICAgICAgICAgICAgVG9vbCAoQVBUKSBhbmQgRGViaWFuIFBhY2thZ2UgKGRwa2cpIGluIG9wZXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+T3BrZyBpcyBpbnRlbmRlZCBmb3IgdXNlIG9uIGVtYmVkZGVkIExpbnV4CisgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VzIGFuZCBpcyB1c2VkIGluIHRoaXMgY2FwYWNpdHkgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3Lm9wZW5lbWJlZGRlZC5vcmcvd2lraS9NYWluX1BhZ2UnPk9wZW5FbWJlZGRlZDwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vb3BlbndydC5vcmcvJz5PcGVuV3J0PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RzLCBhcyB3ZWxsIGFzIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXMgYmVzdCBpdCBjYW4sIG9wa2cgbWFpbnRhaW5zIGJhY2t3YXJkcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdGliaWxpdHkgd2l0aCBpcGtnIGFuZCBjb25mb3JtcyB0byBhIHN1YnNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIERlYmlhbuKAmXMgcG9saWN5IG1hbnVhbCByZWdhcmRpbmcgY29udHJvbCBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2dzLWFyY2hpdmVkLWNvbXBvbmVudHMnPgorICAgICAgICAgICAgPHRpdGxlPkFyY2hpdmVkIENvbXBvbmVudHM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgQnVpbGQgQXBwbGlhbmNlIGlzIGEgdmlydHVhbCBtYWNoaW5lIGltYWdlIHRoYXQgZW5hYmxlcworICAgICAgICAgICAgICAgIHlvdSB0byBidWlsZCBhbmQgYm9vdCBhIGN1c3RvbSBlbWJlZGRlZCBMaW51eCBpbWFnZSB3aXRoCisgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgdXNpbmcgYSBub24tTGludXggZGV2ZWxvcG1lbnQgc3lzdGVtLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBIaXN0b3JpY2FsbHksIHRoZSBCdWlsZCBBcHBsaWFuY2Ugd2FzIHRoZSBzZWNvbmQgb2YgdGhyZWUKKyAgICAgICAgICAgICAgICBtZXRob2RzIGJ5IHdoaWNoIHlvdSBjb3VsZCB1c2UgdGhlIFlvY3RvIFByb2plY3Qgb24gYSBzeXN0ZW0KKyAgICAgICAgICAgICAgICB0aGF0IHdhcyBub3QgbmF0aXZlIHRvIExpbnV4LgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkhvYjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgSG9iLCB3aGljaCBpcyBub3cgZGVwcmVjYXRlZCBhbmQgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgc2luY2UgdGhlIDIuMSByZWxlYXNlIG9mIHRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVkCisgICAgICAgICAgICAgICAgICAgICAgICBhIHJ1ZGltZW50YXJ5LCBHVUktYmFzZWQgaW50ZXJmYWNlIHRvIHRoZSBZb2N0bworICAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvYXN0ZXIgaGFzIGZ1bGx5IHJlcGxhY2VkIEhvYi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgQXBwbGlhbmNlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQb3N0IEhvYiwgdGhlIEJ1aWxkIEFwcGxpYW5jZSBiZWNhbWUgYXZhaWxhYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAgSXQgd2FzIG5ldmVyIHJlY29tbWVuZGVkIHRoYXQgeW91IHVzZSB0aGUgQnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIEFwcGxpYW5jZSBhcyBhIGRheS10by1kYXkgcHJvZHVjdGlvbiBkZXZlbG9wbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIEFwcGxpYW5jZSB3YXMgdXNlZnVsIGFzIGEgd2F5IHRvIHRyeSBvdXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGluIHRoZSBZb2N0byBQcm9qZWN0IGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DUk9QUzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZpbmFsIGFuZCBiZXN0IHNvbHV0aW9uIGF2YWlsYWJsZSBub3cgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICBkZXZlbG9waW5nIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0IG9uIGEgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICBub3QgbmF0aXZlIHRvIExpbnV4IGlzIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dzLWNyb3BzLW92ZXJ2aWV3Jz5DUk9QUzwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J2dzLWRldmVsb3BtZW50LW1ldGhvZHMnPgorICAgICAgICA8dGl0bGU+RGV2ZWxvcG1lbnQgTWV0aG9kczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCB1c3VhbGx5IGludm9sdmVzIGEKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2hhcmR3YXJlLWJ1aWxkLXN5c3RlbS10ZXJtJz5CdWlsZCBIb3N0PC91bGluaz4KKyAgICAgICAgICAgIGFuZCB0YXJnZXQgaGFyZHdhcmUuCisgICAgICAgICAgICBZb3UgdXNlIHRoZSBCdWlsZCBIb3N0IHRvIGJ1aWxkIGltYWdlcyBhbmQgZGV2ZWxvcCBhcHBsaWNhdGlvbnMsCisgICAgICAgICAgICB3aGlsZSB5b3UgdXNlIHRoZSB0YXJnZXQgaGFyZHdhcmUgdG8gdGVzdCBkZXBsb3llZCBzb2Z0d2FyZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGFuIGludHJvZHVjdGlvbiB0byB0aGUgY2hvaWNlcyBvcgorICAgICAgICAgICAgZGV2ZWxvcG1lbnQgbWV0aG9kcyB5b3UgaGF2ZSB3aGVuIHNldHRpbmcgdXAgeW91ciBCdWlsZCBIb3N0LgorICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSB5b3VyIHBhcnRpY3VsYXIgd29ya2Zsb3cgcHJlZmVyZW5jZSBhbmQgdGhlCisgICAgICAgICAgICB0eXBlIG9mIG9wZXJhdGluZyBzeXN0ZW0geW91ciBCdWlsZCBIb3N0IHJ1bnMsIHNldmVyYWwgY2hvaWNlcworICAgICAgICAgICAgZXhpc3QgdGhhdCBhbGxvdyB5b3UgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgRm9yIGFkZGl0aW9uYWwgZGV0YWlsIGFib3V0IHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nb3ZlcnZpZXctZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQnPlRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50PC9saW5rPiIKKyAgICAgICAgICAgICAgICBjaGFwdGVyLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5OYXRpdmUgTGludXggSG9zdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBCeSBmYXIgdGhlIGJlc3Qgb3B0aW9uIGZvciBhIEJ1aWxkIEhvc3QuCisgICAgICAgICAgICAgICAgICAgIEEgc3lzdGVtIHJ1bm5pbmcgTGludXggYXMgaXRzIG5hdGl2ZSBvcGVyYXRpbmcgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIGFsbG93cyB5b3UgdG8gZGV2ZWxvcCBzb2Z0d2FyZSBieSBkaXJlY3RseSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdG9vbC4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhY2NvbXBsaXNoIGFsbCBhc3BlY3RzIG9mIGRldmVsb3BtZW50IGZyb20gYQorICAgICAgICAgICAgICAgICAgICBmYW1pbGlhciBzaGVsbCBvZiBhIHN1cHBvcnRlZCBMaW51eCBkaXN0cmlidXRpb24uPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gc2V0IHVwIGEgQnVpbGQgSG9zdCBvbgorICAgICAgICAgICAgICAgICAgICBhIHN5c3RlbSBydW5uaW5nIExpbnV4IGFzIGl0cyBuYXRpdmUgb3BlcmF0aW5nIHN5c3RlbSwKKyAgICAgICAgICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc2V0dGluZy11cC1hLW5hdGl2ZS1saW51eC1ob3N0Jz5TZXR0aW5nIFVwIGEgTmF0aXZlIExpbnV4IEhvc3Q8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNST3NzIFBsYXRmb3JtUyAoQ1JPUFMpOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFR5cGljYWxseSwgeW91IHVzZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvY3JvcHMvYWJvdXQvJz5DUk9QUzwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICB3aGljaCBsZXZlcmFnZXMKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8nPkRvY2tlciBDb250YWluZXJzPC91bGluaz4sCisgICAgICAgICAgICAgICAgICAgIHRvIHNldCB1cCBhIEJ1aWxkIEhvc3QgdGhhdCBpcyBub3QgcnVubmluZyBMaW51eCAoZS5nLgorICAgICAgICAgICAgICAgICAgICA8dHJhZGVtYXJrIGNsYXNzPSdyZWdpc3RlcmVkJz5NaWNyb3NvZnQ8L3RyYWRlbWFyaz4KKyAgICAgICAgICAgICAgICAgICAgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGVtYXJrJz5XaW5kb3dzPC90cmFkZW1hcms+CisgICAgICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3JlZ2lzdGVyZWQnPm1hY09TPC90cmFkZW1hcms+KS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuLCBob3dldmVyLCB1c2UgQ1JPUFMgb24gYSBMaW51eC1iYXNlZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQ1JPUFMgaXMgYW4gb3BlbiBzb3VyY2UsIGNyb3NzLXBsYXRmb3JtIGRldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgIGZyYW1ld29yayB0aGF0IHByb3ZpZGVzIGFuIGVhc2lseSBtYW5hZ2VkLCBleHRlbnNpYmxlCisgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IGZvciBidWlsZGluZyBiaW5hcmllcyB0YXJnZXRlZCBmb3IgYSB2YXJpZXR5CisgICAgICAgICAgICAgICAgICAgIG9mIGFyY2hpdGVjdHVyZXMgb24gV2luZG93cywgbWFjT1MsIG9yIExpbnV4IGhvc3RzLgorICAgICAgICAgICAgICAgICAgICBPbmNlIHRoZSBCdWlsZCBIb3N0IGlzIHNldCB1cCB1c2luZyBDUk9QUywgeW91IGNhbiBwcmVwYXJlCisgICAgICAgICAgICAgICAgICAgIGEgc2hlbGwgZW52aXJvbm1lbnQgdG8gbWltaWMgdGhhdCBvZiBhIHNoZWxsIGJlaW5nIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgb24gYSBzeXN0ZW0gbmF0aXZlbHkgcnVubmluZyBMaW51eC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzZXQgdXAgYSBCdWlsZCBIb3N0IHdpdGgKKyAgICAgICAgICAgICAgICAgICAgQ1JPUFMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NldHRpbmctdXAtdG8tdXNlLWNyb3BzJz5TZXR0aW5nIFVwIHRvIFVzZSBDUk9zcyBQbGF0Zm9ybVMgKENST1BTKTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VG9hc3Rlcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBSZWdhcmRsZXNzIG9mIHdoYXQgeW91ciBCdWlsZCBIb3N0IGlzIHJ1bm5pbmcsIHlvdSBjYW4KKyAgICAgICAgICAgICAgICAgICAgdXNlIFRvYXN0ZXIgdG8gZGV2ZWxvcCBzb2Z0d2FyZSB1c2luZyB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgVG9hc3RlciBpcyBhIHdlYiBpbnRlcmZhY2UgdG8gdGhlIFlvY3RvIFByb2plY3QncworICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1zeXN0ZW0tdGVybSc+T3Blbi1FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGludGVyZmFjZSBlbmFibGVzIHlvdSB0byBjb25maWd1cmUgYW5kIHJ1biB5b3VyCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgICAgSW5mb3JtYXRpb24gYWJvdXQgYnVpbGRzIGlzIGNvbGxlY3RlZCBhbmQgc3RvcmVkIGluIGEKKyAgICAgICAgICAgICAgICAgICAgZGF0YWJhc2UuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIFRvYXN0ZXIgdG8gY29uZmlndXJlIGFuZCBzdGFydCBidWlsZHMgb24KKyAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUgcmVtb3RlIGJ1aWxkIHNlcnZlcnMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBpbmZvcm1hdGlvbiBhYm91dCBhbmQgaG93IHRvIHVzZSBUb2FzdGVyLAorICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1RPQVNUX1VSTDsnPlRvYXN0ZXIgVXNlciBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz4gSURFOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdXIgQnVpbGQgSG9zdCBzdXBwb3J0cyBhbmQgcnVucyB0aGUgcG9wdWxhcgorICAgICAgICAgICAgICAgICAgICBFY2xpcHNlIElERSwgeW91IGNhbiBpbnN0YWxsIHRoZSBZb2N0byBQcm9qZWN0IEVjbGlwc2UKKyAgICAgICAgICAgICAgICAgICAgcGx1Zy1pbiBhbmQgdXNlIHRoZSBZb2N0byBQcm9qZWN0IHRvIGRldmVsb3Agc29mdHdhcmUuCisgICAgICAgICAgICAgICAgICAgIFRoZSBwbHVnLWluIGludGVncmF0ZXMgdGhlIFlvY3RvIFByb2plY3QgZnVuY3Rpb25hbGl0eQorICAgICAgICAgICAgICAgICAgICBpbnRvIEVjbGlwc2UgZGV2ZWxvcG1lbnQgcHJhY3RpY2VzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgaW5mb3JtYXRpb24gYWJvdXQgaG93IHRvIGluc3RhbGwgYW5kIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBFY2xpcHNlIHBsdWctaW4sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1lY2xpcHNlLXByb2plY3QnPkRldmVsb3BpbmcgQXBwbGljYXRpb25zIFVzaW5nIEVjbGlwc2U8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQKKyAgICAgICAgICAgICAgICAgICAgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ncmVmZXJlbmNlLWVtYmVkZGVkLWRpc3RyaWJ1dGlvbic+CisgICAgICAgIDx0aXRsZT5SZWZlcmVuY2UgRW1iZWRkZWQgRGlzdHJpYnV0aW9uIChQb2t5KTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAiUG9reSIsIHdoaWNoIGlzIHByb25vdW5jZWQgPGVtcGhhc2lzPlBvY2s8L2VtcGhhc2lzPi1lZSwgaXMgdGhlCisgICAgICAgICAgICBuYW1lIG9mIHRoZSBZb2N0byBQcm9qZWN0J3MgcmVmZXJlbmNlIGRpc3RyaWJ1dGlvbiBvciBSZWZlcmVuY2UgT1MKKyAgICAgICAgICAgIEtpdC4KKyAgICAgICAgICAgIFBva3kgY29udGFpbnMgdGhlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbTwvdWxpbms+CisgICAgICAgICAgICAoPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYml0YmFrZS10ZXJtJz5CaXRCYWtlPC91bGluaz4gYW5kCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNvZS1jb3JlJz5PcGVuRW1iZWRkZWQtQ29yZTwvdWxpbms+KQorICAgICAgICAgICAgYXMgd2VsbCBhcyBhIHNldCBvZgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjbWV0YWRhdGEnPm1ldGFkYXRhPC91bGluaz4gdG8gZ2V0CisgICAgICAgICAgICB5b3Ugc3RhcnRlZCBidWlsZGluZyB5b3VyIG93biBkaXN0cm8uCisgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgUG9reSBpcyBhIGJhc2Ugc3BlY2lmaWNhdGlvbiBvZiB0aGUgZnVuY3Rpb25hbGl0eQorICAgICAgICAgICAgbmVlZGVkIGZvciBhIHR5cGljYWwgZW1iZWRkZWQgc3lzdGVtIGFzIHdlbGwgYXMgdGhlIGNvbXBvbmVudHMKKyAgICAgICAgICAgIGZyb20gdGhlIFlvY3RvIFByb2plY3QgdGhhdCBhbGxvdyB5b3UgdG8gYnVpbGQgYSBkaXN0cmlidXRpb24gaW50bworICAgICAgICAgICAgYSB1c2FibGUgYmluYXJ5IGltYWdlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBQb2t5IGlzIGEgY29tYmluZWQgcmVwb3NpdG9yeSBvZiBCaXRCYWtlLCBPcGVuRW1iZWRkZWQtQ29yZQorICAgICAgICAgICAgKHdoaWNoIGlzIGZvdW5kIGluIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4pLAorICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reTwvZmlsZW5hbWU+LAorICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwPC9maWxlbmFtZT4sIGFuZCBkb2N1bWVudGF0aW9uIHByb3ZpZGVkCisgICAgICAgICAgICBhbGwgdG9nZXRoZXIgYW5kIGtub3duIHRvIHdvcmsgd2VsbCB0b2dldGhlci4KKyAgICAgICAgICAgIFlvdSBjYW4gdmlldyB0aGVzZSBpdGVtcyB0aGF0IG1ha2UgdXAgdGhlIFBva3kgcmVwb3NpdG9yeSBpbiB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS8nPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPi4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiBhbGwgdGhlIGNvbnRlbnRzIG9mIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnksIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUnPlRvcC1MZXZlbCBDb3JlIENvbXBvbmVudHM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYSBpZD0nZ3MtcG9reS1yZWZlcmVuY2UtZGlzdHJpYnV0aW9uJz4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZmlndXJlIGlsbHVzdHJhdGVzIHdoYXQgZ2VuZXJhbGx5IGNvbXByaXNlcyBQb2t5OgorICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3Bva3ktcmVmZXJlbmNlLWRpc3RyaWJ1dGlvbi5wbmciIGZvcm1hdD0iUE5HIiBhbGlnbj0nY2VudGVyJyB3aWR0aD0iOGluIi8+CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBpcyBhIHRhc2sgZXhlY3V0b3IgYW5kIHNjaGVkdWxlciB0aGF0IGlzIHRoZSBoZWFydCBvZgorICAgICAgICAgICAgICAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5PC9maWxlbmFtZT4sIHdoaWNoIGlzIFBva3ktc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwPC9maWxlbmFtZT4sIHdoaWNoIGFyZSBZb2N0bworICAgICAgICAgICAgICAgICAgICBQcm9qZWN0LXNwZWNpZmljIEJvYXJkIFN1cHBvcnQgUGFja2FnZXMgKEJTUHMpLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZC1Db3JlIChPRS1Db3JlKSBtZXRhZGF0YSwgd2hpY2ggaW5jbHVkZXMKKyAgICAgICAgICAgICAgICAgICAgc2hhcmVkIGNvbmZpZ3VyYXRpb25zLCBnbG9iYWwgdmFyaWFibGUgZGVmaW5pdGlvbnMsCisgICAgICAgICAgICAgICAgICAgIHNoYXJlZCBjbGFzc2VzLCBwYWNrYWdpbmcsIGFuZCByZWNpcGVzLgorICAgICAgICAgICAgICAgICAgICBDbGFzc2VzIGRlZmluZSB0aGUgZW5jYXBzdWxhdGlvbiBhbmQgaW5oZXJpdGFuY2Ugb2YgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgbG9naWMuCisgICAgICAgICAgICAgICAgICAgIFJlY2lwZXMgYXJlIHRoZSBsb2dpY2FsIHVuaXRzIG9mIHNvZnR3YXJlIGFuZCBpbWFnZXMKKyAgICAgICAgICAgICAgICAgICAgdG8gYmUgYnVpbHQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbiwgd2hpY2ggY29udGFpbnMgdGhlIFlvY3RvIFByb2plY3Qgc291cmNlCisgICAgICAgICAgICAgICAgICAgIGZpbGVzIHVzZWQgdG8gbWFrZSB0aGUgc2V0IG9mIHVzZXIgbWFudWFscy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFdoaWxlIFBva3kgaXMgYSAiY29tcGxldGUiIGRpc3RyaWJ1dGlvbiBzcGVjaWZpY2F0aW9uIGFuZCBpcworICAgICAgICAgICAgICAgIHRlc3RlZCBhbmQgcHV0IHRocm91Z2ggUUEsIHlvdSBjYW5ub3QgdXNlIGl0IGFzIGEgcHJvZHVjdAorICAgICAgICAgICAgICAgICJvdXQgb2YgdGhlIGJveCIgaW4gaXRzIGN1cnJlbnQgZm9ybS4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0IHRvb2xzLCB5b3UgY2FuIHVzZSBHaXQgdG8gY2xvbmUgKGRvd25sb2FkKQorICAgICAgICAgICAgdGhlIFBva3kgcmVwb3NpdG9yeSB0aGVuIHVzZSB5b3VyIGxvY2FsIGNvcHkgb2YgdGhlIHJlZmVyZW5jZQorICAgICAgICAgICAgZGlzdHJpYnV0aW9uIHRvIGJvb3RzdHJhcCB5b3VyIG93biBkaXN0cmlidXRpb24uCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBQb2t5IGRvZXMgbm90IGNvbnRhaW4gYmluYXJ5IGZpbGVzLgorICAgICAgICAgICAgICAgIEl0IGlzIGEgd29ya2luZyBleGFtcGxlIG9mIGhvdyB0byBidWlsZCB5b3VyIG93biBjdXN0b20gTGludXggZGlzdHJpYnV0aW9uCisgICAgICAgICAgICAgICAgZnJvbSBzb3VyY2UuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFBva3kgaGFzIGEgcmVndWxhciwgd2VsbCBlc3RhYmxpc2hlZCwgc2l4LW1vbnRoIHJlbGVhc2UgY3ljbGUKKyAgICAgICAgICAgIHVuZGVyIGl0cyBvd24gdmVyc2lvbi4KKyAgICAgICAgICAgIE1ham9yIHJlbGVhc2VzIG9jY3VyIGF0IHRoZSBzYW1lIHRpbWUgbWFqb3IgcmVsZWFzZXMgKHBvaW50CisgICAgICAgICAgICByZWxlYXNlcykgb2NjdXIgZm9yIHRoZSBZb2N0byBQcm9qZWN0LCB3aGljaCBhcmUgdHlwaWNhbGx5IGluIHRoZQorICAgICAgICAgICAgU3ByaW5nIGFuZCBGYWxsLgorICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZSBzY2hlZHVsZSBhbmQKKyAgICAgICAgICAgIGNhZGVuY2UsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtcmVsZWFzZS1wcm9jZXNzJz5Zb2N0byBQcm9qZWN0IFJlbGVhc2VzIGFuZCB0aGUgU3RhYmxlIFJlbGVhc2UgUHJvY2VzczwvdWxpbms+IgorICAgICAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBNdWNoIGhhcyBiZWVuIHNhaWQgYWJvdXQgUG9reSBiZWluZyBhICJkZWZhdWx0IGNvbmZpZ3VyYXRpb24uIgorICAgICAgICAgICAgQSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gcHJvdmlkZXMgYSBzdGFydGluZyBpbWFnZSBmb290cHJpbnQuCisgICAgICAgICAgICBZb3UgY2FuIHVzZSBQb2t5IG91dCBvZiB0aGUgYm94IHRvIGNyZWF0ZSBhbiBpbWFnZSByYW5naW5nIGZyb20gYQorICAgICAgICAgICAgc2hlbGwtYWNjZXNzaWJsZSBtaW5pbWFsIGltYWdlIGFsbCB0aGUgd2F5IHVwIHRvIGEgTGludXgKKyAgICAgICAgICAgIFN0YW5kYXJkIEJhc2UtY29tcGxpYW50IGltYWdlIHRoYXQgdXNlcyBhIEdOT01FIE1vYmlsZSBhbmQKKyAgICAgICAgICAgIEVtYmVkZGVkIChHTUFFKSBiYXNlZCByZWZlcmVuY2UgdXNlciBpbnRlcmZhY2UgY2FsbGVkIFNhdG8uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIE9uZSBvZiB0aGUgbW9zdCBwb3dlcmZ1bCBwcm9wZXJ0aWVzIG9mIFBva3kgaXMgdGhhdCBldmVyeSBhc3BlY3QKKyAgICAgICAgICAgIG9mIGEgYnVpbGQgaXMgY29udHJvbGxlZCBieSB0aGUgbWV0YWRhdGEuCisgICAgICAgICAgICBZb3UgY2FuIHVzZSBtZXRhZGF0YSB0byBhdWdtZW50IHRoZXNlIGJhc2UgaW1hZ2UgdHlwZXMgYnkKKyAgICAgICAgICAgIGFkZGluZyBtZXRhZGF0YQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndGhlLXlvY3RvLXByb2plY3QtbGF5ZXItbW9kZWwnPmxheWVyczwvbGluaz4KKyAgICAgICAgICAgIHRoYXQgZXh0ZW5kIGZ1bmN0aW9uYWxpdHkuCisgICAgICAgICAgICBUaGVzZSBsYXllcnMgY2FuIHByb3ZpZGUsIGZvciBleGFtcGxlLCBhbiBhZGRpdGlvbmFsIHNvZnR3YXJlCisgICAgICAgICAgICBzdGFjayBmb3IgYW4gaW1hZ2UgdHlwZSwgYWRkIGEgYm9hcmQgc3VwcG9ydCBwYWNrYWdlIChCU1ApIGZvcgorICAgICAgICAgICAgYWRkaXRpb25hbCBoYXJkd2FyZSwgb3IgZXZlbiBjcmVhdGUgYSBuZXcgaW1hZ2UgdHlwZS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgTWV0YWRhdGEgaXMgbG9vc2VseSBncm91cGVkIGludG8gY29uZmlndXJhdGlvbiBmaWxlcyBvciBwYWNrYWdlCisgICAgICAgICAgICByZWNpcGVzLgorICAgICAgICAgICAgQSByZWNpcGUgaXMgYSBjb2xsZWN0aW9uIG9mIG5vbi1leGVjdXRhYmxlIG1ldGFkYXRhIHVzZWQgYnkKKyAgICAgICAgICAgIEJpdEJha2UgdG8gc2V0IHZhcmlhYmxlcyBvciBkZWZpbmUgYWRkaXRpb25hbCBidWlsZC10aW1lIHRhc2tzLgorICAgICAgICAgICAgQSByZWNpcGUgY29udGFpbnMgZmllbGRzIHN1Y2ggYXMgdGhlIHJlY2lwZSBkZXNjcmlwdGlvbiwgdGhlIHJlY2lwZQorICAgICAgICAgICAgdmVyc2lvbiwgdGhlIGxpY2Vuc2Ugb2YgdGhlIHBhY2thZ2UgYW5kIHRoZSB1cHN0cmVhbSBzb3VyY2UKKyAgICAgICAgICAgIHJlcG9zaXRvcnkuCisgICAgICAgICAgICBBIHJlY2lwZSBtaWdodCBhbHNvIGluZGljYXRlIHRoYXQgdGhlIGJ1aWxkIHByb2Nlc3MgdXNlcyBhdXRvdG9vbHMsCisgICAgICAgICAgICBtYWtlLCBkaXN0dXRpbHMgb3IgYW55IG90aGVyIGJ1aWxkIHByb2Nlc3MsIGluIHdoaWNoIGNhc2UgdGhlIGJhc2ljCisgICAgICAgICAgICBmdW5jdGlvbmFsaXR5IGNhbiBiZSBkZWZpbmVkIGJ5IHRoZSBjbGFzc2VzIGl0IGluaGVyaXRzIGZyb20KKyAgICAgICAgICAgIHRoZSBPRS1Db3JlIGxheWVyJ3MgY2xhc3MgZGVmaW5pdGlvbnMgaW4KKyAgICAgICAgICAgIDxmaWxlbmFtZT4uL21ldGEvY2xhc3NlczwvZmlsZW5hbWU+LgorICAgICAgICAgICAgV2l0aGluIGEgcmVjaXBlIHlvdSBjYW4gYWxzbyBkZWZpbmUgYWRkaXRpb25hbCB0YXNrcyBhcyB3ZWxsIGFzCisgICAgICAgICAgICB0YXNrIHByZXJlcXVpc2l0ZXMuCisgICAgICAgICAgICBSZWNpcGUgc3ludGF4IHRocm91Z2ggQml0QmFrZSBhbHNvIHN1cHBvcnRzIGJvdGgKKyAgICAgICAgICAgIDxmaWxlbmFtZT5fcHJlcGVuZDwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+X2FwcGVuZDwvZmlsZW5hbWU+CisgICAgICAgICAgICBvcGVyYXRvcnMgYXMgYSBtZXRob2Qgb2YgZXh0ZW5kaW5nIHRhc2sgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgICAgIFRoZXNlIG9wZXJhdG9ycyBpbmplY3QgY29kZSBpbnRvIHRoZSBiZWdpbm5pbmcgb3IgZW5kIG9mIGEgdGFzay4KKyAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGVzZSBCaXRCYWtlIG9wZXJhdG9ycywgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjYXBwZW5kaW5nLWFuZC1wcmVwZW5kaW5nLW92ZXJyaWRlLXN0eWxlLXN5bnRheCc+QXBwZW5kaW5nIGFuZCBQcmVwZW5kaW5nIChPdmVycmlkZSBTdHlsZSBTeW50YXgpPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBCaXRCYWtlIFVzZXIncyBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nb3BlbmVtYmVkZGVkLWJ1aWxkLXN5c3RlbS13b3JrZmxvdyc+CisgICAgICAgIDx0aXRsZT5UaGUgT3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbSBXb3JrZmxvdzwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4KKyAgICAgICAgICAgIHVzZXMgYSAid29ya2Zsb3ciIHRvIGFjY29tcGxpc2ggaW1hZ2UgYW5kIFNESyBnZW5lcmF0aW9uLgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBmaWd1cmUgb3ZlcnZpZXdzIHRoYXQgd29ya2Zsb3c6CisgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvWVAtZmxvdy1kaWFncmFtLnBuZyIKKyAgICAgICAgICAgICAgICBmb3JtYXQ9IlBORyIgYWxpZ249J2NlbnRlcicgd2lkdGg9IjhpbiIvPgorICAgICAgICAgICAgRm9sbG93aW5nIGlzIGEgYnJpZWYgc3VtbWFyeSBvZiB0aGUgIndvcmtmbG93IjoKKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIERldmVsb3BlcnMgc3BlY2lmeSBhcmNoaXRlY3R1cmUsIHBvbGljaWVzLCBwYXRjaGVzIGFuZAorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGRldGFpbHMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBmZXRjaGVzIGFuZCBkb3dubG9hZHMgdGhlIHNvdXJjZSBjb2RlCisgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIHNwZWNpZmllZCBsb2NhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBzdXBwb3J0cyBzdGFuZGFyZCBtZXRob2RzIHN1Y2ggYXMgdGFyYmFsbHMKKyAgICAgICAgICAgICAgICAgICAgb3Igc291cmNlIGNvZGUgcmVwb3NpdG9yaWVzIHN5c3RlbXMgc3VjaCBhcyBHaXQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgT25jZSBzb3VyY2UgY29kZSBpcyBkb3dubG9hZGVkLCB0aGUgYnVpbGQgc3lzdGVtIGV4dHJhY3RzCisgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2VzIGludG8gYSBsb2NhbCB3b3JrIGFyZWEgd2hlcmUgcGF0Y2hlcyBhcmUKKyAgICAgICAgICAgICAgICAgICAgYXBwbGllZCBhbmQgY29tbW9uIHN0ZXBzIGZvciBjb25maWd1cmluZyBhbmQgY29tcGlsaW5nCisgICAgICAgICAgICAgICAgICAgIHRoZSBzb2Z0d2FyZSBhcmUgcnVuLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gdGhlbiBpbnN0YWxscyB0aGUgc29mdHdhcmUgaW50byBhCisgICAgICAgICAgICAgICAgICAgIHRlbXBvcmFyeSBzdGFnaW5nIGFyZWEgd2hlcmUgdGhlIGJpbmFyeSBwYWNrYWdlIGZvcm1hdCB5b3UKKyAgICAgICAgICAgICAgICAgICAgc2VsZWN0IChERUIsIFJQTSwgb3IgSVBLKSBpcyB1c2VkIHRvIHJvbGwgdXAgdGhlIHNvZnR3YXJlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIERpZmZlcmVudCBRQSBhbmQgc2FuaXR5IGNoZWNrcyBydW4gdGhyb3VnaG91dCBlbnRpcmUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBZnRlciB0aGUgYmluYXJpZXMgYXJlIGNyZWF0ZWQsIHRoZSBidWlsZCBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVzIGEgYmluYXJ5IHBhY2thZ2UgZmVlZCB0aGF0IGlzIHVzZWQgdG8gY3JlYXRlCisgICAgICAgICAgICAgICAgICAgIHRoZSBmaW5hbCByb290IGZpbGUgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBnZW5lcmF0ZXMgdGhlIGZpbGUgc3lzdGVtIGltYWdlIGFuZCBhCisgICAgICAgICAgICAgICAgICAgIGN1c3RvbWl6ZWQgRXh0ZW5zaWJsZSBTREsgKGVTRFNLKSBmb3IgYXBwbGljYXRpb24KKyAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgaW4gcGFyYWxsZWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9yIGEgdmVyeSBkZXRhaWxlZCBsb29rIGF0IHRoaXMgd29ya2Zsb3csIHNlZSB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdvcGVuZW1iZWRkZWQtYnVpbGQtc3lzdGVtLWJ1aWxkLWNvbmNlcHRzJz5PcGVuRW1iZWRkZWQgQnVpbGQgU3lzdGVtIENvbmNlcHRzPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKworICAgIDxzZWN0aW9uIGlkPSdzb21lLWJhc2ljLXRlcm1zJz4KKyAgICAgICAgPHRpdGxlPlNvbWUgQmFzaWMgVGVybXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSXQgaGVscHMgdG8gdW5kZXJzdGFuZCBzb21lIGJhc2ljIGZ1bmRhbWVudGFsIHRlcm1zIHdoZW4KKyAgICAgICAgICAgIGxlYXJuaW5nIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgQWx0aG91Z2ggYSBsaXN0IG9mIHRlcm1zIGV4aXN0cyBpbiB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGVybXMnPllvY3RvIFByb2plY3QgVGVybXM8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCwgdGhpcyBzZWN0aW9uCisgICAgICAgICAgICBwcm92aWRlcyB0aGUgZGVmaW5pdGlvbnMgb2Ygc29tZSB0ZXJtcyBoZWxwZnVsIGZvciBnZXR0aW5nIHN0YXJ0ZWQ6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbmZpZ3VyYXRpb24gRmlsZXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRmlsZXMgdGhhdCBob2xkIGdsb2JhbCBkZWZpbml0aW9ucyBvZiB2YXJpYWJsZXMsCisgICAgICAgICAgICAgICAgICAgIHVzZXItZGVmaW5lZCB2YXJpYWJsZXMsIGFuZCBoYXJkd2FyZSBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBmaWxlcyB0ZWxsIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1zeXN0ZW0tdGVybSc+T3Blbi1FbWJlZGRlZCBidWlsZCBzeXN0ZW08L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB3aGF0IHRvIGJ1aWxkIGFuZCB3aGF0IHRvIHB1dCBpbnRvIHRoZSBpbWFnZSB0byBzdXBwb3J0IGEKKyAgICAgICAgICAgICAgICAgICAgcGFydGljdWxhciBwbGF0Zm9ybS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEEgY3VzdG9tIFNESyBmb3IgYXBwbGljYXRpb24gZGV2ZWxvcGVycy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBlU0RLIGFsbG93cyBkZXZlbG9wZXJzIHRvIGluY29ycG9yYXRlIHRoZWlyIGxpYnJhcnkKKyAgICAgICAgICAgICAgICAgICAgYW5kIHByb2dyYW1taW5nIGNoYW5nZXMgYmFjayBpbnRvIHRoZSBpbWFnZSB0byBtYWtlCisgICAgICAgICAgICAgICAgICAgIHRoZWlyIGNvZGUgYXZhaWxhYmxlIHRvIG90aGVyIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMuCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgZVNESywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIG1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TGF5ZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQSBjb2xsZWN0aW9uIG9mIHJlbGF0ZWQgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICAgICAgTGF5ZXJzIGFsbG93IHlvdSB0byBjb25zb2xpZGF0ZSByZWxhdGVkIG1ldGFkYXRhIHRvCisgICAgICAgICAgICAgICAgICAgIGN1c3RvbWl6ZSB5b3VyIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBMYXllcnMgYWxzbyBpc29sYXRlIGluZm9ybWF0aW9uIHVzZWQgd2hlbiBidWlsZGluZworICAgICAgICAgICAgICAgICAgICBmb3IgbXVsdGlwbGUgYXJjaGl0ZWN0dXJlcy4KKyAgICAgICAgICAgICAgICAgICAgTGF5ZXJzIGFyZSBoaWVyYXJjaGljYWwgaW4gdGhlaXIgYWJpbGl0eSB0byBvdmVycmlkZQorICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyBzcGVjaWZpY2F0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBpbmNsdWRlIGFueSBudW1iZXIgb2YgYXZhaWxhYmxlIGxheWVycyBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGFuZCBjdXN0b21pemUgdGhlIGJ1aWxkIGJ5IGFkZGluZyB5b3VyCisgICAgICAgICAgICAgICAgICAgIGxheWVycyBhZnRlciB0aGVtLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlYXJjaCB0aGUgTGF5ZXIgSW5kZXggZm9yIGxheWVycyB1c2VkIHdpdGhpbgorICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgbW9yZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiBsYXllcnMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICBGb3IgYSBkaXNjdXNzaW9uIHNwZWNpZmljYWxseSBvbiBCU1AgTGF5ZXJzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyNic3AtbGF5ZXJzJz5CU1AgTGF5ZXJzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQKQorICAgICAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWV0YWRhdGE6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQSBrZXkgZWxlbWVudCBvZiB0aGUgWW9jdG8gUHJvamVjdCBpcyB0aGUgTWV0YWRhdGEgdGhhdAorICAgICAgICAgICAgICAgICAgICBpcyB1c2VkIHRvIGNvbnN0cnVjdCBhIExpbnV4IGRpc3RyaWJ1dGlvbiBhbmQgaXMgY29udGFpbmVkCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSBmaWxlcyB0aGF0IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHBhcnNlcworICAgICAgICAgICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIGFuIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBJbiBnZW5lcmFsLCBNZXRhZGF0YSBpbmNsdWRlcyByZWNpcGVzLCBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGZpbGVzLCBhbmQgb3RoZXIgaW5mb3JtYXRpb24gdGhhdCByZWZlcnMgdG8gdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucyB0aGVtc2VsdmVzLCBhcyB3ZWxsIGFzIHRoZSBkYXRhIHVzZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgY29udHJvbCB3aGF0IHRoaW5ncyBnZXQgYnVpbHQgYW5kIHRoZSBlZmZlY3RzIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgTWV0YWRhdGEgYWxzbyBpbmNsdWRlcyBjb21tYW5kcyBhbmQgZGF0YSB1c2VkIHRvCisgICAgICAgICAgICAgICAgICAgIGluZGljYXRlIHdoYXQgdmVyc2lvbnMgb2Ygc29mdHdhcmUgYXJlIHVzZWQsIGZyb20KKyAgICAgICAgICAgICAgICAgICAgd2hlcmUgdGhleSBhcmUgb2J0YWluZWQsIGFuZCBjaGFuZ2VzIG9yIGFkZGl0aW9ucyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgc29mdHdhcmUgaXRzZWxmIChwYXRjaGVzIG9yIGF1eGlsaWFyeSBmaWxlcykgdGhhdAorICAgICAgICAgICAgICAgICAgICBhcmUgdXNlZCB0byBmaXggYnVncyBvciBjdXN0b21pemUgdGhlIHNvZnR3YXJlIGZvciB1c2UKKyAgICAgICAgICAgICAgICAgICAgaW4gYSBwYXJ0aWN1bGFyIHNpdHVhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkLUNvcmUgaXMgYW4gaW1wb3J0YW50IHNldCBvZiB2YWxpZGF0ZWQKKyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nZ3MtdGVybS1vcGVuZW1iZWRkZWQtYnVpbGQtc3lzdGVtJz4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9wZW5FbWJlZGRlZCBCdWlsZCBTeXN0ZW06PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHRlcm1zICJCaXRCYWtlIiBhbmQgImJ1aWxkIHN5c3RlbSIgYXJlIHNvbWV0aW1lcworICAgICAgICAgICAgICAgICAgICB1c2VkIGZvciB0aGUgT3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+Qml0QmFrZSBpcyBhIHRhc2sgc2NoZWR1bGVyIGFuZCBleGVjdXRpb24gZW5naW5lCisgICAgICAgICAgICAgICAgICAgIHRoYXQgcGFyc2VzIGluc3RydWN0aW9ucyAoaS5lLiByZWNpcGVzKSBhbmQgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBkYXRhLgorICAgICAgICAgICAgICAgICAgICBBZnRlciBhIHBhcnNpbmcgcGhhc2UsIEJpdEJha2UgY3JlYXRlcyBhIGRlcGVuZGVuY3kgdHJlZQorICAgICAgICAgICAgICAgICAgICB0byBvcmRlciB0aGUgY29tcGlsYXRpb24sIHNjaGVkdWxlcyB0aGUgY29tcGlsYXRpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgdGhlIGluY2x1ZGVkIGNvZGUsIGFuZCBmaW5hbGx5IGV4ZWN1dGVzIHRoZSBidWlsZGluZworICAgICAgICAgICAgICAgICAgICBvZiB0aGUgc3BlY2lmaWVkIGN1c3RvbSBMaW51eCBpbWFnZSAoZGlzdHJpYnV0aW9uKS4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBpcyBzaW1pbGFyIHRvIHRoZSA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHRvb2wuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkR1cmluZyBhIGJ1aWxkIHByb2Nlc3MsIHRoZSBidWlsZCBzeXN0ZW0gdHJhY2tzCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBhbmQgcGVyZm9ybXMgYSBuYXRpdmUgb3IgY3Jvc3MtY29tcGlsYXRpb24KKyAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIEFzIGEgZmlyc3Qgc3RlcCBpbiBhIGNyb3NzLWJ1aWxkIHNldHVwLCB0aGUgZnJhbWV3b3JrCisgICAgICAgICAgICAgICAgICAgIGF0dGVtcHRzIHRvIGNyZWF0ZSBhIGNyb3NzLWNvbXBpbGVyIHRvb2xjaGFpbgorICAgICAgICAgICAgICAgICAgICAoaS5lLiBFeHRlbnNpYmxlIFNESykgc3VpdGVkIGZvciB0aGUgdGFyZ2V0IHBsYXRmb3JtLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcGVuRW1iZWRkZWQtQ29yZSAoT0UtQ29yZSk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgT0UtQ29yZSBpcyBtZXRhZGF0YSBjb21wcmlzZWQgb2YgZm91bmRhdGlvbiByZWNpcGVzLAorICAgICAgICAgICAgICAgICAgICBjbGFzc2VzLCBhbmQgYXNzb2NpYXRlZCBmaWxlcyB0aGF0IGFyZSBtZWFudCB0byBiZQorICAgICAgICAgICAgICAgICAgICBjb21tb24gYW1vbmcgbWFueSBkaWZmZXJlbnQgT3BlbkVtYmVkZGVkLWRlcml2ZWQgc3lzdGVtcywKKyAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICBPRS1Db3JlIGlzIGEgY3VyYXRlZCBzdWJzZXQgb2YgYW4gb3JpZ2luYWwgcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgICAgICBkZXZlbG9wZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBjb21tdW5pdHkgdGhhdCBoYXMgYmVlbgorICAgICAgICAgICAgICAgICAgICBwYXJlZCBkb3duIGludG8gYSBzbWFsbGVyLCBjb3JlIHNldCBvZiBjb250aW51b3VzbHkKKyAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVkIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgIFRoZSByZXN1bHQgaXMgYSB0aWdodGx5IGNvbnRyb2xsZWQgYW5kIHF1YWxpdHktYXNzdXJlZAorICAgICAgICAgICAgICAgICAgICBjb3JlIHNldCBvZiByZWNpcGVzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgY2FuIHNlZSB0aGUgTWV0YWRhdGEgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4gZGlyZWN0b3J5IG9mIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlBhY2thZ2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEluIHRoZSBjb250ZXh0IG9mIHRoZSBZb2N0byBQcm9qZWN0LCB0aGlzIHRlcm0gcmVmZXJzIHRvIGEKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlJ3MgcGFja2FnZWQgb3V0cHV0IHByb2R1Y2VkIGJ5IEJpdEJha2UgKGkuZS4gYQorICAgICAgICAgICAgICAgICAgICAiYmFrZWQgcmVjaXBlIikuCisgICAgICAgICAgICAgICAgICAgIEEgcGFja2FnZSBpcyBnZW5lcmFsbHkgdGhlIGNvbXBpbGVkIGJpbmFyaWVzIHByb2R1Y2VkIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZSdzIHNvdXJjZXMuCisgICAgICAgICAgICAgICAgICAgIFlvdSAiYmFrZSIgc29tZXRoaW5nIGJ5IHJ1bm5pbmcgaXQgdGhyb3VnaCBCaXRCYWtlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5JdCBpcyB3b3J0aCBub3RpbmcgdGhhdCB0aGUgdGVybSAicGFja2FnZSIgY2FuLAorICAgICAgICAgICAgICAgICAgICBpbiBnZW5lcmFsLCBoYXZlIHN1YnRsZSBtZWFuaW5ncy4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBwYWNrYWdlcyByZWZlcnJlZCB0byBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlcXVpcmVkLXBhY2thZ2VzLWZvci10aGUtaG9zdC1kZXZlbG9wbWVudC1zeXN0ZW0nPlJlcXVpcmVkIFBhY2thZ2VzIGZvciB0aGUgSG9zdCBEZXZlbG9wbWVudCBTeXN0ZW08L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGFyZSBjb21waWxlZAorICAgICAgICAgICAgICAgICAgICBiaW5hcmllcyB0aGF0LCB3aGVuIGluc3RhbGxlZCwgYWRkIGZ1bmN0aW9uYWxpdHkgdG8geW91cgorICAgICAgICAgICAgICAgICAgICBMaW51eCBkaXN0cmlidXRpb24uPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkFub3RoZXIgcG9pbnQgd29ydGggbm90aW5nIGlzIHRoYXQgaGlzdG9yaWNhbGx5IHdpdGhpbgorICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCwgcmVjaXBlcyB3ZXJlIHJlZmVycmVkIHRvIGFzIHBhY2thZ2VzIC0gdGh1cywKKyAgICAgICAgICAgICAgICAgICAgdGhlIGV4aXN0ZW5jZSBvZiBzZXZlcmFsIEJpdEJha2UgdmFyaWFibGVzIHRoYXQgYXJlIHNlZW1pbmdseQorICAgICAgICAgICAgICAgICAgICBtaXMtbmFtZWQsCisgICAgICAgICAgICAgICAgICAgIChlLmcuIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBFJz48ZmlsZW5hbWU+UEU8L2ZpbGVuYW1lPjwvdWxpbms+KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UG9reTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBQb2t5IGlzIGEgcmVmZXJlbmNlIGVtYmVkZGVkIGRpc3RyaWJ1dGlvbiBhbmQgYSByZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgdGVzdCBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgICAgICBQb2t5IHByb3ZpZGVzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBiYXNlLWxldmVsIGZ1bmN0aW9uYWwgZGlzdHJvIHVzZWQgdG8gaWxsdXN0cmF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdyB0byBjdXN0b21pemUgYSBkaXN0cmlidXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBtZWFucyBieSB3aGljaCB0byB0ZXN0IHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cyAoaS5lLiBQb2t5IGlzIHVzZWQgdG8gdmFsaWRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSB2ZWhpY2xlIHRocm91Z2ggd2hpY2ggeW91IGNhbiBkb3dubG9hZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgUG9reSBpcyBub3QgYSBwcm9kdWN0IGxldmVsIGRpc3Ryby4KKyAgICAgICAgICAgICAgICAgICAgUmF0aGVyLCBpdCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGN1c3RvbWl6YXRpb24uCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgUG9reSBpcyBhbiBpbnRlZ3JhdGlvbiBsYXllciBvbiB0b3Agb2YgT0UtQ29yZS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SZWNpcGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG1vc3QgY29tbW9uIGZvcm0gb2YgbWV0YWRhdGEuCisgICAgICAgICAgICAgICAgICAgIEEgcmVjaXBlIGNvbnRhaW5zIGEgbGlzdCBvZiBzZXR0aW5ncyBhbmQgdGFza3MKKyAgICAgICAgICAgICAgICAgICAgKGkuZS4gaW5zdHJ1Y3Rpb25zKSBmb3IgYnVpbGRpbmcgcGFja2FnZXMgdGhhdCBhcmUgdGhlbgorICAgICAgICAgICAgICAgICAgICB1c2VkIHRvIGJ1aWxkIHRoZSBiaW5hcnkgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIEEgcmVjaXBlIGRlc2NyaWJlcyB3aGVyZSB5b3UgZ2V0IHNvdXJjZSBjb2RlIGFuZCB3aGljaAorICAgICAgICAgICAgICAgICAgICBwYXRjaGVzIHRvIGFwcGx5LgorICAgICAgICAgICAgICAgICAgICBSZWNpcGVzIGRlc2NyaWJlIGRlcGVuZGVuY2llcyBmb3IgbGlicmFyaWVzIG9yIGZvciBvdGhlcgorICAgICAgICAgICAgICAgICAgICByZWNpcGVzIGFzIHdlbGwgYXMgY29uZmlndXJhdGlvbiBhbmQgY29tcGlsYXRpb24gb3B0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgUmVsYXRlZCByZWNpcGVzIGFyZSBjb25zb2xpZGF0ZWQgaW50byBhIGxheWVyLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorPC9jaGFwdGVyPgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyODNmOWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLnhtbApAQCAtMCwwICsxLDEwOCBAQAorPCFET0NUWVBFIGJvb2sgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKworPGJvb2sgaWQ9J292ZXJ2aWV3LW1hbnVhbCcgbGFuZz0nZW4nCisgICAgICB4bWxuczp4aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy9YSW5jbHVkZSIKKyAgICAgIHhtbG5zPSJodHRwOi8vZG9jYm9vay5vcmcvbnMvZG9jYm9vayIKKyAgICAgID4KKyAgICA8Ym9va2luZm8+CisKKyAgICAgICAgPG1lZGlhb2JqZWN0PgorICAgICAgICAgICAgPGltYWdlb2JqZWN0PgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0nZmlndXJlcy9vdmVydmlldy1tYW51YWwtdGl0bGUucG5nJworICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9J1NWRycKKyAgICAgICAgICAgICAgICAgICAgYWxpZ249J2xlZnQnIHNjYWxlZml0PScxJyB3aWR0aD0nMTAwJScvPgorICAgICAgICAgICAgPC9pbWFnZW9iamVjdD4KKyAgICAgICAgPC9tZWRpYW9iamVjdD4KKworICAgICAgICA8dGl0bGU+CisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwKKyAgICAgICAgPC90aXRsZT4KKworICAgICAgICA8YXV0aG9yZ3JvdXA+CisgICAgICAgICAgICA8YXV0aG9yPgorICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+U2NvdHQ8L2ZpcnN0bmFtZT4gPHN1cm5hbWU+UmlmZW5iYXJrPC9zdXJuYW1lPgorICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+U2NvdHR5J3MgRG9jdW1lbnRhdGlvbiBTZXJ2aWNlcywgSU5DPC9vcmduYW1lPgorICAgICAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+CisgICAgICAgICAgICAgICAgPGVtYWlsPnNyaWZlbmJhcmtAZ21haWwuY29tPC9lbWFpbD4KKyAgICAgICAgICAgIDwvYXV0aG9yPgorICAgICAgICA8L2F1dGhvcmdyb3VwPgorCisgICAgICAgIDxyZXZoaXN0b3J5PgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi41PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+TWF5IDIwMTg8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5UaGUgaW5pdGlhbCBkb2N1bWVudCByZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgPC9yZXZoaXN0b3J5PgorCisgICAgPGNvcHlyaWdodD4KKyAgICAgPHllYXI+JkNPUFlSSUdIVF9ZRUFSOzwveWVhcj4KKyAgICAgIDxob2xkZXI+TGludXggRm91bmRhdGlvbjwvaG9sZGVyPgorICAgIDwvY29weXJpZ2h0PgorCisgICAgPGxlZ2Fsbm90aWNlPgorICAgICAgPHBhcmE+CisgICAgICAgICAgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50IHVuZGVyCisgICAgICAgICAgdGhlIHRlcm1zIG9mIHRoZSA8dWxpbmsgdHlwZT0iaHR0cCIgdXJsPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8yLjAvdWsvIj4KKyAgICAgICAgICBDcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uLVNoYXJlIEFsaWtlIDIuMCBVSzogRW5nbGFuZCAmYW1wOyBXYWxlczwvdWxpbms+IGFzIHB1Ymxpc2hlZCBieQorICAgICAgICAgIENyZWF0aXZlIENvbW1vbnMuCisgICAgICA8L3BhcmE+CisgICAgICAgICAgIDxub3RlPjx0aXRsZT5NYW51YWwgTm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmVyc2lvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPllvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgIGlzIGZvciB0aGUgJllPQ1RPX0RPQ19WRVJTSU9OOyByZWxlYXNlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCisgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIGdvIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIGZyb20gdGhhdCBzaXRlLgorICAgICAgICAgICAgICAgICAgICAgICBNYW51YWxzIGZyb20gdGhlIHNpdGUgYXJlIG1vcmUgdXAtdG8tZGF0ZSB0aGFuIG1hbnVhbHMKKyAgICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2VkIFRBUiBmaWxlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbG9jYXRlZCB0aGlzIG1hbnVhbCB0aHJvdWdoIGEgd2ViIHNlYXJjaCwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIG1hbnVhbCBtaWdodCBub3QgYmUgdGhlIG9uZSB5b3Ugd2FudAorICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiB0aGUgc2VhcmNoIG1pZ2h0IGhhdmUgcmV0dXJuZWQgYSBtYW51YWwgbXVjaAorICAgICAgICAgICAgICAgICAgICAgICBvbGRlciB0aGFuIHRoZSBZb2N0byBQcm9qZWN0IHZlcnNpb24gd2l0aCB3aGljaCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgYXJlIHdvcmtpbmcpLgorICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSBhbGwgWW9jdG8gUHJvamVjdCBtYWpvciByZWxlYXNlcyBieQorICAgICAgICAgICAgICAgICAgICAgICB2aXNpdGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL1JlbGVhc2VzJz5SZWxlYXNlczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuCisgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIGEgdmVyc2lvbiBvZiB0aGlzIG1hbnVhbCBmb3IgYSBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB2aXNpdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBzZXQgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICJBQ1RJVkUgUkVMRUFTRVMgRE9DVU1FTlRBVElPTiIgb3IgIkRPQ1VNRU5UUyBBUkNISVZFIgorICAgICAgICAgICAgICAgICAgICAgICBwdWxsLWRvd24gbWVudXMuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgVG8gcmVwb3J0IGFueSBpbmFjY3VyYWNpZXMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0CisgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0b0B5b2N0b3Byb2plY3QuY29tPC9maWxlbmFtZT4gb3IgbG9nIGludG8KKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICA8L25vdGU+CisgICAgPC9sZWdhbG5vdGljZT4KKworICAgIDwvYm9va2luZm8+CisKKyAgICA8eGk6aW5jbHVkZSBocmVmPSJvdmVydmlldy1tYW51YWwtaW50cm8ueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZSBocmVmPSJvdmVydmlldy1tYW51YWwteXAtaW50cm8ueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZSBocmVmPSJvdmVydmlldy1tYW51YWwtZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQueG1sIi8+CisKKyAgICA8eGk6aW5jbHVkZSBocmVmPSJvdmVydmlldy1tYW51YWwtY29uY2VwdHMueG1sIiAvPgorCis8L2Jvb2s+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Bva3kuZW50IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcG9reS5lbnQKaW5kZXggZGIzZWVmMC4uNDliMTkwMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcG9reS5lbnQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcG9reS5lbnQKQEAgLTEsMTMgKzEsMTcgQEAKLTwhRU5USVRZIERJU1RSTyAiMi40LjIiPgotPCFFTlRJVFkgRElTVFJPX0NPTVBSRVNTRUQgIjI0MiI+Ci08IUVOVElUWSBESVNUUk9fTkFNRV9OT19DQVAgInJvY2tvIj4KLTwhRU5USVRZIERJU1RST19OQU1FICJSb2NrbyI+Ci08IUVOVElUWSBZT0NUT19ET0NfVkVSU0lPTiAiMi40LjIiPgotPCFFTlRJVFkgRElTVFJPX1JFTF9UQUcgInlvY3RvLTIuNC4yIj4KLTwhRU5USVRZIE1FVEFJTlRFTFZFUlNJT04gIjguMCI+Cis8IUVOVElUWSBESVNUUk8gIjIuNSI+Cis8IUVOVElUWSBESVNUUk9fQ09NUFJFU1NFRCAiMjUiPgorPCFFTlRJVFkgRElTVFJPX05BTUVfTk9fQ0FQICJzdW1vIj4KKzwhRU5USVRZIERJU1RST19OQU1FICJTdW1vIj4KKzwhRU5USVRZIERJU1RST19OQU1FX05PX0NBUF9NSU5VU19PTkUgInJvY2tvIj4KKzwhRU5USVRZIERJU1RST19OQU1FX01JTlVTX09ORSAiUm9ja28iPgorPCFFTlRJVFkgWU9DVE9fRE9DX1ZFUlNJT04gIjIuNSI+Cis8IUVOVElUWSBZT0NUT19ET0NfVkVSU0lPTl9NSU5VU19PTkUgIjIuNCI+Cis8IUVOVElUWSBESVNUUk9fUkVMX1RBRyAieW9jdG8tMi41Ij4KKzwhRU5USVRZIE1FVEFJTlRFTFZFUlNJT04gIjkuMCI+Cis8IUVOVElUWSBSRUxfTU9OVEhfWUVBUiAiTWF5IDIwMTgiPgogPCFFTlRJVFkgTUVUQV9JTlRFTF9SRUxfVEFHICImTUVUQUlOVEVMVkVSU0lPTjstJkRJU1RST19OQU1FX05PX0NBUDstJllPQ1RPX0RPQ19WRVJTSU9OOyI+Ci08IUVOVElUWSBQT0tZVkVSU0lPTiAiMTkuMC4yIj4KLTwhRU5USVRZIFBPS1lWRVJTSU9OX0NPTVBSRVNTRUQgIjE5MDIiPgorPCFFTlRJVFkgUE9LWVZFUlNJT04gIjIwLjAuMCI+Cis8IUVOVElUWSBQT0tZVkVSU0lPTl9DT01QUkVTU0VEICIyMDAwIj4KIDwhRU5USVRZIFlPQ1RPX1BPS1kgInBva3ktJkRJU1RST19OQU1FX05PX0NBUDstJlBPS1lWRVJTSU9OOyI+CiA8IUVOVElUWSBDT1BZUklHSFRfWUVBUiAiMjAxMC0yMDE4Ij4KIDwhRU5USVRZIFlPQ1RPX0RMX1VSTCAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnIj4KQEAgLTE4LDcgKzIyLDYgQEAKIDwhRU5USVRZIFlPQ1RPX0FCX1VSTCAiaHR0cDovL2F1dG9idWlsZGVyLnlvY3RvcHJvamVjdC5vcmciPgogPCFFTlRJVFkgWU9DVE9fR0lUX1VSTCAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnIj4KIDwhRU5USVRZIFlPQ1RPX0FEVFJFUE9fVVJMICJodHRwOi8vYWR0cmVwby55b2N0b3Byb2plY3Qub3JnIj4KLTwhRU5USVRZIFlPQ1RPX1JFTEVBU0VfTk9URVMgIiZZT0NUT19IT01FX1VSTDsvZG93bmxvYWRzL2NvcmUvJkRJU1RST19OQU1FX05PX0NBUDsmRElTVFJPX0NPTVBSRVNTRUQ7Ij4KIDwhRU5USVRZIE9FX0hPTUVfVVJMICJodHRwOi8vd3d3Lm9wZW5lbWJlZGRlZC5vcmciPgogPCFFTlRJVFkgT0VfTElTVFNfVVJMICJodHRwOi8vbGlzdHMub3BlbmVtYmVkZGVkLm9yZy9tYWlsbWFuIj4KIDwhRU5USVRZIE9FX0RPQ1NfVVJMICJodHRwOi8vZG9jcy5vcGVuZW1iZWRkZWQub3JnIj4KQEAgLTM1LDggKzM4LDggQEAKIDwhRU5USVRZIEVDTElQU0VfSU5ESUdPX0NEVF9VUkwgIiZFQ0xJUFNFX0RMX1VSTDsvdG9vbHMvY2R0L3JlbGVhc2VzL2luZGlnbyI+CiA8IUVOVElUWSBZT0NUT19ET0NTX1VSTCAiJllPQ1RPX0hPTUVfVVJMOy9kb2NzIj4KIDwhRU5USVRZIFlPQ1RPX1NPVVJDRVNfVVJMICImWU9DVE9fSE9NRV9VUkw7L3NvdXJjZXMvIj4KLTwhRU5USVRZIFlPQ1RPX0FCX1BPUlRfVVJMICImWU9DVE9fQUJfVVJMOzo4MDEwIj4KLTwhRU5USVRZIFlPQ1RPX0FCX05JR0hUTFlfVVJMICImWU9DVE9fQUJfVVJMOy9wdWIvbmlnaHRseS8iPgorPCFFTlRJVFkgWU9DVE9fQUJfUE9SVF9VUkwgImh0dHBzOi8vYXV0b2J1aWxkZXIueW9jdG8uaW8vIj4KKzwhRU5USVRZIFlPQ1RPX0FCX05JR0hUTFlfVVJMICImWU9DVE9fQUJfUE9SVF9VUkw7L3B1Yi9uaWdodGx5LyI+CiA8IUVOVElUWSBZT0NUT19QT0tZX1VSTCAiJllPQ1RPX0RMX1VSTDsvcmVsZWFzZXMvcG9reS8iPgogPCFFTlRJVFkgWU9DVE9fUkVMRUFTRV9ETF9VUkwgIiZZT0NUT19ETF9VUkw7L3JlbGVhc2VzL3lvY3RvL3lvY3RvLSZESVNUUk87Ij4KIDwhRU5USVRZIFlPQ1RPX1RPT0xDSEFJTl9ETF9VUkwgIiZZT0NUT19SRUxFQVNFX0RMX1VSTDsvdG9vbGNoYWluLyI+CkBAIC01MiwxMyArNTUsMTQgQEAKIDwhRU5USVRZIFlPQ1RPX0RPQ1NfUkVGX1VSTCAiJllPQ1RPX0RPQ1NfVVJMOy8mWU9DVE9fRE9DX1ZFUlNJT047L3JlZi1tYW51YWwvcmVmLW1hbnVhbC5odG1sIj4KIDwhRU5USVRZIFlPQ1RPX0RPQ1NfQlNQX1VSTCAiJllPQ1RPX0RPQ1NfVVJMOy8mWU9DVE9fRE9DX1ZFUlNJT047L2JzcC1ndWlkZS9ic3AtZ3VpZGUuaHRtbCI+CiA8IUVOVElUWSBZT0NUT19ET0NTX0RFVl9VUkwgIiZZT0NUT19ET0NTX1VSTDsvJllPQ1RPX0RPQ19WRVJTSU9OOy9kZXYtbWFudWFsL2Rldi1tYW51YWwuaHRtbCI+Ci08IUVOVElUWSBZT0NUT19ET0NTX0tFUk5FTF9VUkwgIiZZT0NUT19ET0NTX1VSTDsvJllPQ1RPX0RPQ19WRVJTSU9OOy9rZXJuZWwtbWFudWFsL2tlcm5lbC1tYW51YWwuaHRtbCI+CiA8IUVOVElUWSBZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMICImWU9DVE9fRE9DU19VUkw7LyZZT0NUT19ET0NfVkVSU0lPTjsva2VybmVsLWRldi9rZXJuZWwtZGV2Lmh0bWwiPgogPCFFTlRJVFkgWU9DVE9fRE9DU19QUk9GX1VSTCAiJllPQ1RPX0RPQ1NfVVJMOy8mWU9DVE9fRE9DX1ZFUlNJT047L3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLmh0bWwiPgogPCFFTlRJVFkgWU9DVE9fRE9DU19NTV9VUkwgIiZZT0NUT19ET0NTX1VSTDsvJllPQ1RPX0RPQ19WRVJTSU9OOy9tZWdhLW1hbnVhbC9tZWdhLW1hbnVhbC5odG1sIj4KIDwhRU5USVRZIFlPQ1RPX0RPQ1NfQkJfVVJMICImWU9DVE9fRE9DU19VUkw7LyZZT0NUT19ET0NfVkVSU0lPTjsvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLmh0bWwiPgogPCFFTlRJVFkgWU9DVE9fRE9DU19UT0FTVF9VUkwgIiZZT0NUT19ET0NTX1VSTDsvJllPQ1RPX0RPQ19WRVJTSU9OOy90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC5odG1sIj4KIDwhRU5USVRZIFlPQ1RPX0RPQ1NfU0RLX1VSTCAiJllPQ1RPX0RPQ1NfVVJMOy8mWU9DVE9fRE9DX1ZFUlNJT047L3Nkay1tYW51YWwvc2RrLW1hbnVhbC5odG1sIj4KKzwhRU5USVRZIFlPQ1RPX0RPQ1NfT01fVVJMICImWU9DVE9fRE9DU19VUkw7LyZZT0NUT19ET0NfVkVSU0lPTjsvb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC5odG1sIj4KKzwhRU5USVRZIFlPQ1RPX0RPQ1NfQlJJRUZfVVJMICImWU9DVE9fRE9DU19VUkw7LyZZT0NUT19ET0NfVkVSU0lPTjsvYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMuaHRtbCI+CiA8IUVOVElUWSBZT0NUT19BRFRQQVRIX0RJUiAiL29wdC9wb2t5LyZESVNUUk87Ij4KIDwhRU5USVRZIFlPQ1RPX1BPS1lfVEFSQkFMTCAiJllPQ1RPX1BPS1k7LnRhci5iejIiPgogPCFFTlRJVFkgT0VfSU5JVF9QQVRIICImWU9DVE9fUE9LWTsvb2UtaW5pdC1idWlsZC1lbnYiPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwueG1sCmluZGV4IGY3NDJlODguLmI2NDg3NWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC54bWwKQEAgLTg3LDE0ICs4Nyw5IEBACiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+SmFudWFyeSAyMDE4PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgotICAgICAgICAgICAgPC9yZXZpc2lvbj4KLSAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4yPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+TWFyY2ggMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40LjIgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNTwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk1heSAyMDE4PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjUgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgIDwvcmV2aGlzdG9yeT4KIApAQCAtMTE4LDI0ICsxMTMsMzYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgaXMgZm9yIHRoZSAmWU9DVE9fRE9DX1ZFUlNJT047IHJlbGVhc2Ugb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKLSAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgdXNlIHRoZSBtYW51YWwgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgIEZvciBtYW51YWxzIGFzc29jaWF0ZWQgd2l0aCBvdGhlciByZWxlYXNlcyBvZiB0aGUgWW9jdG8KLSAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCwgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIGdvIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgYW5kIHVzZSB0aGUgZHJvcC1kb3duICJBY3RpdmUgUmVsZWFzZXMiIGJ1dHRvbgotICAgICAgICAgICAgICAgICAgICAgICBhbmQgY2hvb3NlIHRoZSBtYW51YWwgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXNpcmVkCi0gICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBmcm9tIHRoYXQgc2l0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgTWFudWFscyBmcm9tIHRoZSBzaXRlIGFyZSBtb3JlIHVwLXRvLWRhdGUgdGhhbiBtYW51YWxzCisgICAgICAgICAgICAgICAgICAgICAgIGRlcml2ZWQgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlZCBUQVIgZmlsZXMuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcwotICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGxvY2F0ZWQgdGhpcyBtYW51YWwgdGhyb3VnaCBhIHdlYiBzZWFyY2gsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIG9mIHRoZSBtYW51YWwgbWlnaHQgbm90IGJlIHRoZSBvbmUgeW91IHdhbnQKKyAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gdGhlIHNlYXJjaCBtaWdodCBoYXZlIHJldHVybmVkIGEgbWFudWFsIG11Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgb2xkZXIgdGhhbiB0aGUgWW9jdG8gUHJvamVjdCB2ZXJzaW9uIHdpdGggd2hpY2ggeW91CisgICAgICAgICAgICAgICAgICAgICAgIGFyZSB3b3JraW5nKS4KKyAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgYWxsIFlvY3RvIFByb2plY3QgbWFqb3IgcmVsZWFzZXMgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9SZWxlYXNlcyc+UmVsZWFzZXM8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICBwYWdlLgorICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCBhIHZlcnNpb24gb2YgdGhpcyBtYW51YWwgZm9yIGEgZGlmZmVyZW50CisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSwgdmlzaXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgc2V0IGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAiQUNUSVZFIFJFTEVBU0VTIERPQ1VNRU5UQVRJT04iIG9yICJET0NVTUVOVFMgQVJDSElWRSIKKyAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnVzLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcworICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAorICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgPC9ub3RlPgogICAgIDwvbGVnYWxub3RpY2U+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZhcS54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZhcS54bWwKaW5kZXggMTFkZmM1Yi4uNDlmZjg2MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9mYXEueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmFxLnhtbApAQCAtMTQzLDcgKzE0Myw3IEBACiAgICAgICAgICAgICAgICAgVG8gYWRkIGEgcGFja2FnZSwgeW91IG5lZWQgdG8gY3JlYXRlIGEgQml0QmFrZSByZWNpcGUuCiAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjcmVhdGUgYSBCaXRCYWtlIHJlY2lwZSwgc2VlIHRoZQogICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNuZXctcmVjaXBlLXdyaXRpbmctYS1uZXctcmVjaXBlJz5Xcml0aW5nIGEgTmV3IFJlY2lwZTwvdWxpbms+IgotICAgICAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9hbnN3ZXI+CiAgICAgPC9xYW5kYWVudHJ5PgpAQCAtNDE3LDEwICs0MTcsMTEgQEAKIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gbGljZW5zaW5nIGluIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdsaWNlbnNpbmcnPkxpY2Vuc2luZzwvbGluaz4iIHNlY3Rpb24gYW5kIGluIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2xpY2Vuc2luZyc+TGljZW5zaW5nPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsCisgICAgICAgICAgICAgICAgYW5kIGFsc28gaW4gdGhlCiAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLW9wZW4tc291cmNlLWxpY2Vuc2UtY29tcGxpYW5jZS1kdXJpbmcteW91ci1wcm9kdWN0cy1saWZlY3ljbGUnPk1haW50YWluaW5nIE9wZW4gU291cmNlIExpY2Vuc2UgQ29tcGxpYW5jZSBEdXJpbmcgWW91ciBQcm9kdWN0J3MgTGlmZWN5Y2xlPC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiwgd2hpY2ggaXMgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MKLSAgICAgICAgICAgICAgICBNYW51YWwuCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvYW5zd2VyPgogICAgIDwvcWFuZGFlbnRyeT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9hbmFseXNpcy1mb3ItcGFja2FnZS1zcGxpdHRpbmcucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2FuYWx5c2lzLWZvci1wYWNrYWdlLXNwbGl0dGluZy5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0ZjI3OTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2FuYWx5c2lzLWZvci1wYWNrYWdlLXNwbGl0dGluZy5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvYnVpbGRpbmctYW4taW1hZ2UucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2J1aWxkaW5nLWFuLWltYWdlLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMWZiZWE1YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvYnVpbGRpbmctYW4taW1hZ2UucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2NvbmZpZ3VyYXRpb24tY29tcGlsZS1hdXRvcmVjb25mLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9jb25maWd1cmF0aW9uLWNvbXBpbGUtYXV0b3JlY29uZi5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwNzQ2NGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2NvbmZpZ3VyYXRpb24tY29tcGlsZS1hdXRvcmVjb25mLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9jcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW5zLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9jcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW5zLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM2NjcwYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWlucy5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvaW1hZ2UtZ2VuZXJhdGlvbi5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvaW1hZ2UtZ2VuZXJhdGlvbi5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxYTQ4ZGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2ltYWdlLWdlbmVyYXRpb24ucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL2ltYWdlcy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvaW1hZ2VzLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDk5ZWFjMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvaW1hZ2VzLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9sYXllci1pbnB1dC5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvbGF5ZXItaW5wdXQucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTRmMmU3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9sYXllci1pbnB1dC5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvcGFja2FnZS1mZWVkcy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvcGFja2FnZS1mZWVkcy5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3YzljMzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL3BhY2thZ2UtZmVlZHMucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL3BhdGNoaW5nLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9wYXRjaGluZy5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlY2QwMTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL3BhdGNoaW5nLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9zZGstZ2VuZXJhdGlvbi5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvc2RrLWdlbmVyYXRpb24ucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhZGJlMWY0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9zZGstZ2VuZXJhdGlvbi5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvc2RrLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9zZGsucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzM2Yjc1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9zZGsucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL3NvdXJjZS1mZXRjaGluZy5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvc291cmNlLWZldGNoaW5nLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZhZWZiNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvc291cmNlLWZldGNoaW5nLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9zb3VyY2UtaW5wdXQucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL3NvdXJjZS1pbnB1dC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3NTE1MDUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL3NvdXJjZS1pbnB1dC5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvc291cmNlLXJlcG9zLnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9zb3VyY2UtcmVwb3MucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOWNmZjE2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy9zb3VyY2UtcmVwb3MucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL3VzZXItY29uZmlndXJhdGlvbi5wbmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvdXNlci1jb25maWd1cmF0aW9uLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYzI5ODQwMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMvdXNlci1jb25maWd1cmF0aW9uLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmlndXJlcy95b2N0by1lbnZpcm9ubWVudC1yZWYucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL3lvY3RvLWVudmlyb25tZW50LXJlZi5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1MGM2YzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL3lvY3RvLWVudmlyb25tZW50LXJlZi5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMveXAtZG93bmxvYWQucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9maWd1cmVzL3lwLWRvd25sb2FkLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTc3MGJlNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZpZ3VyZXMveXAtZG93bmxvYWQucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9pbnRyb2R1Y3Rpb24ueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9pbnRyb2R1Y3Rpb24ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWVmMmQ1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvaW50cm9kdWN0aW9uLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwODQgKzAsMCBAQAotPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgotImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKLVs8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KLQotPGNoYXB0ZXIgaWQ9J3JlZi1tYW51YWwtaW50cm8nPgotPHRpdGxlPkludHJvZHVjdGlvbjwvdGl0bGU+Ci0KLTxzZWN0aW9uIGlkPSdyZWYtd2VsY29tZSc+Ci0gICAgPHRpdGxlPldlbGNvbWU8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFdlbGNvbWUgdG8gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KLSAgICAgICAgVGhpcyBtYW51YWwgcHJvdmlkZXMgcmVmZXJlbmNlIGluZm9ybWF0aW9uIGZvciB0aGUgY3VycmVudCByZWxlYXNlCi0gICAgICAgIG9mIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICBUaGlzIG1hbnVhbCBpcyBiZXN0IHVzZWQgYWZ0ZXIgeW91IGhhdmUgYW4gdW5kZXJzdGFuZGluZwotICAgICAgICBvZiB0aGUgYmFzaWNzIG9mIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICBUaGUgbWFudWFsIGlzIG5laXRoZXIgbWVhbnQgdG8gYmUgcmVhZCBhcyBhIHN0YXJ0aW5nIHBvaW50IHRvIHRoZQotICAgICAgICBZb2N0byBQcm9qZWN0IG5vciByZWFkIGZyb20gc3RhcnQgdG8gZmluaXNoLgotICAgICAgICBVc2UgdGhpcyBtYW51YWwgdG8gZmluZCBjb25jZXB0cywgdmFyaWFibGUgZGVmaW5pdGlvbnMsIGNsYXNzCi0gICAgICAgIGRlc2NyaXB0aW9ucywgYW5kIHNvIGZvcnRoIGFzIG5lZWRlZCBkdXJpbmcgdGhlIGNvdXJzZSBvZiB1c2luZwotICAgICAgICB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgRm9yIGludHJvZHVjdG9yeSBpbmZvcm1hdGlvbiBvbiB0aGUgWW9jdG8gUHJvamVjdCwgc2VlIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IFdlYnNpdGU8L3VsaW5rPiBhbmQgdGhlCi0gICAgICAgICI8bGluayBsaW5rZW5kPSd5cC1pbnRybyc+SW50cm9kdWNpbmcgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQ8L2xpbms+IgotICAgICAgICBzZWN0aW9uLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBJZiB5b3Ugd2FudCB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QgdG8gdGVzdCBydW4gYnVpbGRpbmcgYW4gaW1hZ2UKLSAgICAgICAgd2l0aG91dCBoYXZpbmcgdG8gdW5kZXJzdGFuZCBjb25jZXB0cywgd29yayB0aHJvdWdoIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7Jz5Zb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0PC91bGluaz4uCi0gICAgICAgIFlvdSBjYW4gZmluZCAiaG93LXRvIiBpbmZvcm1hdGlvbiBpbiB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsnPllvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsPC91bGluaz4uCi0gICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgotICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIFlvY3RvIFByb2plY3QgRG9jdW1lbnRhdGlvbiBzZXQsCi0gICAgICAgICAgICBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVzb3VyY2VzLWxpbmtzLWFuZC1yZWxhdGVkLWRvY3VtZW50YXRpb24nPkxpbmtzIGFuZCBSZWxhdGVkIERvY3VtZW50YXRpb248L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgPC9ub3RlPgotICAgIDwvcGFyYT4KLTwvc2VjdGlvbj4KLQotPHNlY3Rpb24gaWQ9J3lwLWludHJvJz4KLSAgICA8dGl0bGU+SW50cm9kdWNpbmcgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQ8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGlzIGFuIG9wZW4tc291cmNlIGNvbGxhYm9yYXRpb24gcHJvamVjdCB3aG9zZQotICAgICAgICBmb2N1cyBpcyBmb3IgZGV2ZWxvcGVycyBvZiBlbWJlZGRlZCBMaW51eCBzeXN0ZW1zLgotICAgICAgICBBbW9uZyBvdGhlciB0aGluZ3MsIHRoZSBZb2N0byBQcm9qZWN0IHVzZXMgYW4KLSAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L2xpbms+LgotICAgICAgICBUaGUgYnVpbGQgc3lzdGVtLCB3aGljaCBpcyBiYXNlZCBvbiB0aGUgT3BlbkVtYmVkZGVkIChPRSkgcHJvamVjdCBhbmQKLSAgICAgICAgdXNlcyB0aGUKLSAgICAgICAgPGxpbmsgbGlua2VuZD0nYml0YmFrZS10ZXJtJz5CaXRCYWtlPC9saW5rPiB0b29sLCBjb25zdHJ1Y3RzIGNvbXBsZXRlCi0gICAgICAgIExpbnV4IGltYWdlcyBmb3IgYXJjaGl0ZWN0dXJlcyBiYXNlZCBvbiBBUk0sIE1JUFMsIFBvd2VyUEMsIHg4NiBhbmQKLSAgICAgICAgeDg2LTY0LgotICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgIEhpc3RvcmljYWxseSwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0sIHdoaWNoIGlzIHRoZQotICAgICAgICAgICAgY29tYmluYXRpb24gb2YgQml0QmFrZSBhbmQgT0UgY29tcG9uZW50cywgZm9ybWVkIGEgcmVmZXJlbmNlCi0gICAgICAgICAgICBidWlsZCBob3N0IHRoYXQgd2FzIGtub3duIGFzCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncG9reSc+UG9reTwvbGluaz4iICg8ZW1waGFzaXM+UGFoPC9lbXBoYXNpcz4ta2VlKS4KLSAgICAgICAgICAgIFRoZSB0ZXJtICJQb2t5IiwgYXMgdXNlZCB0aHJvdWdob3V0IHRoZSBZb2N0byBQcm9qZWN0IERvY3VtZW50YXRpb24KLSAgICAgICAgICAgIHNldCwgY2FuIGhhdmUgZGlmZmVyZW50IG1lYW5pbmdzLgotICAgICAgICA8L25vdGU+Ci0gICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzIHZhcmlvdXMgYW5jaWxsYXJ5IHRvb2xzIGZvciB0aGUgZW1iZWRkZWQKLSAgICAgICAgZGV2ZWxvcGVyIGFuZCBhbHNvIGZlYXR1cmVzIHRoZSBTYXRvIHJlZmVyZW5jZSBVc2VyIEludGVyZmFjZSwgd2hpY2gKLSAgICAgICAgaXMgb3B0aW1pemVkIGZvciBzdHlsdXMtZHJpdmVuLCBsb3ctcmVzb2x1dGlvbiBzY3JlZW5zLgotICAgIDwvcGFyYT4KLQotICAgIDxtZWRpYW9iamVjdD4KLSAgICAgICAgPGltYWdlb2JqZWN0PgotICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL1lQLWZsb3ctZGlhZ3JhbS5wbmciCi0gICAgICAgICAgICAgICAgZm9ybWF0PSJQTkciIGFsaWduPSdjZW50ZXInIHdpZHRoPSI4aW4iLz4KLSAgICAgICAgPC9pbWFnZW9iamVjdD4KLSAgICA8L21lZGlhb2JqZWN0PgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEhlcmUgYXJlIHNvbWUgaGlnaGxpZ2h0cyBmb3IgdGhlIFlvY3RvIFByb2plY3Q6Ci0gICAgPC9wYXJhPgotCi0gICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgUHJvdmlkZXMgYSByZWNlbnQgTGludXgga2VybmVsIGFsb25nIHdpdGggYSBzZXQgb2Ygc3lzdGVtCi0gICAgICAgICAgICBjb21tYW5kcyBhbmQgbGlicmFyaWVzIHN1aXRhYmxlIGZvciB0aGUgZW1iZWRkZWQKLSAgICAgICAgICAgIGVudmlyb25tZW50LgotICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgIE1ha2VzIGF2YWlsYWJsZSBzeXN0ZW0gY29tcG9uZW50cyBzdWNoIGFzIFgxMSwgR1RLKywgUXQsCi0gICAgICAgICAgICBDbHV0dGVyLCBhbmQgU0RMIChhbW9uZyBvdGhlcnMpIHNvIHlvdSBjYW4gY3JlYXRlIGEgcmljaCB1c2VyCi0gICAgICAgICAgICBleHBlcmllbmNlIG9uIGRldmljZXMgdGhhdCBoYXZlIGRpc3BsYXkgaGFyZHdhcmUuCi0gICAgICAgICAgICBGb3IgZGV2aWNlcyB0aGF0IGRvIG5vdCBoYXZlIGEgZGlzcGxheSBvciB3aGVyZSB5b3Ugd2lzaCB0bwotICAgICAgICAgICAgdXNlIGFsdGVybmF0aXZlIFVJIGZyYW1ld29ya3MsIHRoZXNlIGNvbXBvbmVudHMgbmVlZCBub3QgYmUKLSAgICAgICAgICAgIGluc3RhbGxlZC4KLSAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICBDcmVhdGVzIGEgZm9jdXNlZCBhbmQgc3RhYmxlIGNvcmUgY29tcGF0aWJsZSB3aXRoIHRoZQotICAgICAgICAgICAgT3BlbkVtYmVkZGVkIHByb2plY3Qgd2l0aCB3aGljaCB5b3UgY2FuIGVhc2lseSBhbmQgcmVsaWFibHkKLSAgICAgICAgICAgIGJ1aWxkIGFuZCBkZXZlbG9wLgotICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgIEZ1bGx5IHN1cHBvcnRzIGEgd2lkZSByYW5nZSBvZiBoYXJkd2FyZSBhbmQgZGV2aWNlIGVtdWxhdGlvbgotICAgICAgICAgICAgdGhyb3VnaCB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpLgotICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgIFByb3ZpZGVzIGEgbGF5ZXIgbWVjaGFuaXNtIHRoYXQgYWxsb3dzIHlvdSB0byBlYXNpbHkgZXh0ZW5kCi0gICAgICAgICAgICB0aGUgc3lzdGVtLCBtYWtlIGN1c3RvbWl6YXRpb25zLCBhbmQga2VlcCB0aGVtIG9yZ2FuaXplZC4KLSAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgIDwvaXRlbWl6ZWRsaXN0PgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFlvdSBjYW4gdXNlIHRoZSBZb2N0byBQcm9qZWN0IHRvIGdlbmVyYXRlIGltYWdlcyBmb3IgbWFueSBraW5kcwotICAgICAgICBvZiBkZXZpY2VzLgotICAgICAgICBBcyBtZW50aW9uZWQgZWFybGllciwgdGhlIFlvY3RvIFByb2plY3Qgc3VwcG9ydHMgY3JlYXRpb24gb2YKLSAgICAgICAgcmVmZXJlbmNlIGltYWdlcyB0aGF0IHlvdSBjYW4gYm9vdCB3aXRoaW4gYW5kIGVtdWxhdGUgdXNpbmcgUUVNVS4KLSAgICAgICAgVGhlIHN0YW5kYXJkIGV4YW1wbGUgbWFjaGluZXMgdGFyZ2V0IFFFTVUgZnVsbC1zeXN0ZW0KLSAgICAgICAgZW11bGF0aW9uIGZvciAzMi1iaXQgYW5kIDY0LWJpdCB2YXJpYW50cyBvZiB4ODYsIEFSTSwgTUlQUywgYW5kCi0gICAgICAgIFBvd2VyUEMgYXJjaGl0ZWN0dXJlcy4KLSAgICAgICAgQmV5b25kIGVtdWxhdGlvbiwgeW91IGNhbiB1c2UgdGhlIGxheWVyIG1lY2hhbmlzbSB0byBleHRlbmQKLSAgICAgICAgc3VwcG9ydCB0byBqdXN0IGFib3V0IGFueSBwbGF0Zm9ybSB0aGF0IExpbnV4IGNhbiBydW4gb24gYW5kIHRoYXQKLSAgICAgICAgYSB0b29sY2hhaW4gY2FuIHRhcmdldC4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgQW5vdGhlciBZb2N0byBQcm9qZWN0IGZlYXR1cmUgaXMgdGhlIFNhdG8gcmVmZXJlbmNlIFVzZXIKLSAgICAgICAgSW50ZXJmYWNlLgotICAgICAgICBUaGlzIG9wdGlvbmFsIFVJIHRoYXQgaXMgYmFzZWQgb24gR1RLKyBpcyBpbnRlbmRlZCBmb3IgZGV2aWNlcyB3aXRoCi0gICAgICAgIHJlc3RyaWN0ZWQgc2NyZWVuIHNpemVzIGFuZCBpcyBpbmNsdWRlZCBhcyBwYXJ0IG9mIHRoZQotICAgICAgICBPcGVuRW1iZWRkZWQgQ29yZSBsYXllciBzbyB0aGF0IGRldmVsb3BlcnMgY2FuIHRlc3QgcGFydHMgb2YgdGhlCi0gICAgICAgIHNvZnR3YXJlIHN0YWNrLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBXaGlsZSB0aGUgWW9jdG8gUHJvamVjdCBkb2VzIG5vdCBwcm92aWRlIGEgc3RyaWN0IHRlc3RpbmcgZnJhbWV3b3JrLAotICAgICAgICBpdCBkb2VzIHByb3ZpZGUgb3IgZ2VuZXJhdGUgZm9yIHlvdSBhcnRpZmFjdHMgdGhhdCBsZXQgeW91IHBlcmZvcm0KLSAgICAgICAgdGFyZ2V0LWxldmVsIGFuZCBlbXVsYXRlZCB0ZXN0aW5nIGFuZCBkZWJ1Z2dpbmcuCi0gICAgICAgIEFkZGl0aW9uYWxseSwgaWYgeW91IGFyZSBhbgotICAgICAgICA8dHJhZGVtYXJrIGNsYXNzPSd0cmFkZSc+RWNsaXBzZTwvdHJhZGVtYXJrPiBJREUgdXNlciwgeW91IGNhbgotICAgICAgICBpbnN0YWxsIGFuIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiB0byBhbGxvdyB5b3UgdG8gZGV2ZWxvcCB3aXRoaW4gdGhhdAotICAgICAgICBmYW1pbGlhciBlbnZpcm9ubWVudC4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgQnkgZGVmYXVsdCwgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QgdG8gYnVpbGQgYW4gaW1hZ2UgY3JlYXRlcyBhIFBva3kKLSAgICAgICAgZGlzdHJpYnV0aW9uLgotICAgICAgICBIb3dldmVyLCB5b3UgY2FuIGNyZWF0ZSB5b3VyIG93biBkaXN0cmlidXRpb24gYnkgcHJvdmlkaW5nIGtleQotICAgICAgICA8bGluayBsaW5rPSdtZXRhZGF0YSc+TWV0YWRhdGE8L2xpbms+LgotICAgICAgICBBIGdvb2QgZXhhbXBsZSBpcyBBbmdzdHJvbSwgd2hpY2ggaGFzIGhhZCBhIGRpc3RyaWJ1dGlvbgotICAgICAgICBiYXNlZCBvbiB0aGUgWW9jdG8gUHJvamVjdCBzaW5jZSBpdHMgaW5jZXB0aW9uLgotICAgICAgICBPdGhlciBleGFtcGxlcyBpbmNsdWRlIGNvbW1lcmNpYWwgZGlzdHJpYnV0aW9ucyBsaWtlCi0gICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvb3JnYW5pemF0aW9uL3dpbmQtcml2ZXItc3lzdGVtcyc+V2luZCBSaXZlciBMaW51eDwvdWxpbms+LAotICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy55b2N0b3Byb2plY3Qub3JnL29yZ2FuaXphdGlvbi9tZW50b3ItZ3JhcGhpY3MnPk1lbnRvciBFbWJlZGRlZCBMaW51eDwvdWxpbms+LAotICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy55b2N0b3Byb2plY3Qub3JnL29yZ2FuaXphdGlvbi9lbmVhLWFiJz5FTkVBIExpbnV4PC91bGluaz4KLSAgICAgICAgYW5kIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZWNvc3lzdGVtL21lbWJlci1vcmdhbml6YXRpb25zJz5vdGhlcnM8L3VsaW5rPi4KLSAgICAgICAgU2VlIHRoZSAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmcteW91ci1vd24tZGlzdHJpYnV0aW9uJz5DcmVhdGluZyBZb3VyIE93biBEaXN0cmlidXRpb248L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yIG1vcmUKLSAgICAgICAgaW5mb3JtYXRpb24uCi0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0naW50cm8tcmVxdWlyZW1lbnRzJz4KLTx0aXRsZT5TeXN0ZW0gUmVxdWlyZW1lbnRzPC90aXRsZT4KLSAgICA8cGFyYT4KLSAgICAgICAgRm9yIGdlbmVyYWwgWW9jdG8gUHJvamVjdCBzeXN0ZW0gcmVxdWlyZW1lbnRzLCBzZWUgdGhlCi0gICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7I3lwLXJlc291cmNlcyc+U2V0dGluZyBVcCB0byBVc2UgdGhlIFlvY3RvIFByb2plY3Q8L3VsaW5rPiIgc2VjdGlvbgotICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBRdWljayBTdGFydC4KLSAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGlzIHNlY3Rpb24gcHJvdmlkZXMgZGV0YWlscyBvbiBzeXN0ZW0gcmVxdWlyZW1lbnRzCi0gICAgICAgIG5vdCBjb3ZlcmVkIGluIHRoZSBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0LgotICAgIDwvcGFyYT4KLQotICAgIDxzZWN0aW9uIGlkPSdkZXRhaWxlZC1zdXBwb3J0ZWQtZGlzdHJvcyc+Ci0gICAgICAgIDx0aXRsZT5TdXBwb3J0ZWQgTGludXggRGlzdHJpYnV0aW9uczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBDdXJyZW50bHksIHRoZSBZb2N0byBQcm9qZWN0IGlzIHN1cHBvcnRlZCBvbiB0aGUgZm9sbG93aW5nCi0gICAgICAgICAgICBkaXN0cmlidXRpb25zOgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZXMgYXJlIHRlc3RlZCBhZ2FpbnN0IHRoZSBzdGFibGUgTGludXgKLSAgICAgICAgICAgICAgICAgICAgZGlzdHJpYnV0aW9ucyBpbiB0aGUgZm9sbG93aW5nIGxpc3QuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHNob3VsZCB3b3JrIG9uIG90aGVyIGRpc3RyaWJ1dGlvbnMgYnV0Ci0gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb24gaXMgbm90IHBlcmZvcm1lZCBhZ2FpbnN0IHRoZW0uCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEluIHBhcnRpY3VsYXIsIHRoZSBZb2N0byBQcm9qZWN0IGRvZXMgbm90IHN1cHBvcnQKLSAgICAgICAgICAgICAgICAgICAgYW5kIGN1cnJlbnRseSBoYXMgbm8gcGxhbnMgdG8gc3VwcG9ydAotICAgICAgICAgICAgICAgICAgICByb2xsaW5nLXJlbGVhc2VzIG9yIGRldmVsb3BtZW50IGRpc3RyaWJ1dGlvbnMgZHVlIHRvIHRoZWlyCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0YW50bHkgY2hhbmdpbmcgbmF0dXJlLgotICAgICAgICAgICAgICAgICAgICBXZSB3ZWxjb21lIHBhdGNoZXMgYW5kIGJ1ZyByZXBvcnRzLCBidXQga2VlcCBpbiBtaW5kIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgb3VyIHByaW9yaXR5IGlzIG9uIHRoZSBzdXBwb3J0ZWQgcGxhdGZvcm1zIGxpc3RlZCBiZWxvdy4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IGVuY291bnRlciBwcm9ibGVtcywgcGxlYXNlIGdvIHRvCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19CVUdaSUxMQV9VUkw7Jz5Zb2N0byBQcm9qZWN0IEJ1Z3ppbGxhPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgYW5kIHN1Ym1pdCBhIGJ1Zy4KLSAgICAgICAgICAgICAgICAgICAgV2UgYXJlIGludGVyZXN0ZWQgaW4gaGVhcmluZyBhYm91dCB5b3VyIGV4cGVyaWVuY2UuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLTwhLS0KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDEwLjA0PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxMS4xMDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5VYnVudHUgMTIuMDQgKExUUyk8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDEzLjEwPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxNC4wNCAoTFRTKTwvcGFyYT48L2xpc3RpdGVtPiAtLT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDE0LjEwPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxNS4wNDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5VYnVudHUgMTUuMTA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDE2LjA0IChMVFMpPC9wYXJhPjwvbGlzdGl0ZW0+Ci08IS0tICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5GZWRvcmEgMTYgKFZlcm5lKTwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5GZWRvcmEgMTcgKFNwaGVyaWNhbCk8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RmVkb3JhIHJlbGVhc2UgMTkgKFNjaHLDtmRpbmdlcidzIENhdCk8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RmVkb3JhIHJlbGVhc2UgMjAgKEhlaXNlbmJ1Zyk8L3BhcmE+PC9saXN0aXRlbT4gLS0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZlZG9yYSByZWxlYXNlIDIyPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZlZG9yYSByZWxlYXNlIDIzPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZlZG9yYSByZWxlYXNlIDI0PC9wYXJhPjwvbGlzdGl0ZW0+Ci08IS0tICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DZW50T1MgcmVsZWFzZSA1LjYgKEZpbmFsKTwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DZW50T1MgcmVsZWFzZSA1LjcgKEZpbmFsKTwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DZW50T1MgcmVsZWFzZSA1LjggKEZpbmFsKTwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DZW50T1MgcmVsZWFzZSA2LjMgKEZpbmFsKTwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DZW50T1MgcmVsZWFzZSA2Lng8L3BhcmE+PC9saXN0aXRlbT4gLS0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNlbnRPUyByZWxlYXNlIDcueDwvcGFyYT48L2xpc3RpdGVtPgotPCEtLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RGViaWFuIEdOVS9MaW51eCA2LjAgKFNxdWVlemUpPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggNy54IChXaGVlenkpPC9wYXJhPjwvbGlzdGl0ZW0+IC0tPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDgueCAoSmVzc2llKTwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDkueCAoU3RyZXRjaCk8L3BhcmE+PC9saXN0aXRlbT4KLTwhLS0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggNy4xIChXaGVlenkpPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggNy4yIChXaGVlenkpPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggNy4zIChXaGVlenkpPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggNy40IChXaGVlenkpPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggNy41IChXaGVlenkpPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggNy42IChXaGVlenkpPC9wYXJhPjwvbGlzdGl0ZW0+IC0tPgotPCEtLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+b3BlblNVU0UgMTEuNDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5vcGVuU1VTRSAxMi4xPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPm9wZW5TVVNFIDEyLjI8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+b3BlblNVU0UgMTIuMzwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5vcGVuU1VTRSAxMy4xPC9wYXJhPjwvbGlzdGl0ZW0+IC0tPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5vcGVuU1VTRSAxMy4yPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPm9wZW5TVVNFIDQyLjE8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICBXaGlsZSB0aGUgWW9jdG8gUHJvamVjdCBUZWFtIGF0dGVtcHRzIHRvIGVuc3VyZSBhbGwgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgcmVsZWFzZXMgYXJlIG9uZSBodW5kcmVkIHBlcmNlbnQgY29tcGF0aWJsZSB3aXRoIGVhY2ggb2ZmaWNpYWxseQotICAgICAgICAgICAgc3VwcG9ydGVkIExpbnV4IGRpc3RyaWJ1dGlvbiwgaW5zdGFuY2VzIG1pZ2h0IGV4aXN0IHdoZXJlIHlvdQotICAgICAgICAgICAgZW5jb3VudGVyIGEgcHJvYmxlbSB3aGlsZSB1c2luZyB0aGUgWW9jdG8gUHJvamVjdCBvbiBhIHNwZWNpZmljCi0gICAgICAgICAgICBkaXN0cmlidXRpb24uCi0gICAgICAgIDwvbm90ZT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0ncmVxdWlyZWQtcGFja2FnZXMtZm9yLXRoZS1ob3N0LWRldmVsb3BtZW50LXN5c3RlbSc+Ci0gICAgPHRpdGxlPlJlcXVpcmVkIFBhY2thZ2VzIGZvciB0aGUgSG9zdCBEZXZlbG9wbWVudCBTeXN0ZW08L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGxpc3Qgb2YgcGFja2FnZXMgeW91IG5lZWQgb24gdGhlIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtIGNhbgotICAgICAgICAgICAgYmUgbGFyZ2Ugd2hlbiBjb3ZlcmluZyBhbGwgYnVpbGQgc2NlbmFyaW9zIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIHJlcXVpcmVkIHBhY2thZ2VzIGFjY29yZGluZyB0bwotICAgICAgICAgICAgTGludXggZGlzdHJpYnV0aW9uIGFuZCBmdW5jdGlvbi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSd1YnVudHUtcGFja2FnZXMnPgotICAgICAgICAgICAgPHRpdGxlPlVidW50dSBhbmQgRGViaWFuPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHNob3dzIHRoZSByZXF1aXJlZCBwYWNrYWdlcyBieSBmdW5jdGlvbgotICAgICAgICAgICAgICAgIGdpdmVuIGEgc3VwcG9ydGVkIFVidW50dSBvciBEZWJpYW4gTGludXggZGlzdHJpYnV0aW9uOgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIGJ1aWxkIHN5c3RlbSBoYXMgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vc3M0LWRldjwvZmlsZW5hbWU+IHBhY2thZ2UgaW5zdGFsbGVkLCB5b3UKLSAgICAgICAgICAgICAgICAgICAgbWlnaHQgZXhwZXJpZW5jZSBRRU1VIGJ1aWxkIGZhaWx1cmVzIGR1ZSB0byB0aGUgcGFja2FnZQotICAgICAgICAgICAgICAgICAgICBpbnN0YWxsaW5nIGl0cyBvd24gY3VzdG9tCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL2luY2x1ZGUvbGludXgvc291bmRjYXJkLmg8L2ZpbGVuYW1lPiBvbgotICAgICAgICAgICAgICAgICAgICB0aGUgRGViaWFuIHN5c3RlbS4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IHJ1biBpbnRvIHRoaXMgc2l0dWF0aW9uLCBlaXRoZXIgb2YgdGhlIGZvbGxvd2luZwotICAgICAgICAgICAgICAgICAgICBzb2x1dGlvbnMgZXhpc3Q6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIGFwdC1nZXQgYnVpbGQtZGVwIHFlbXUKLSAgICAgJCBzdWRvIGFwdC1nZXQgcmVtb3ZlIG9zczQtZGV2Ci0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RXNzZW50aWFsczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIHRvIGJ1aWxkIGFuIGltYWdlIG9uIGEgaGVhZGxlc3MKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIGFwdC1nZXQgaW5zdGFsbCAmVUJVTlRVX0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMOwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkdyYXBoaWNhbCBhbmQgRWNsaXBzZSBQbHVnLUluIEV4dHJhczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgcmVjb21tZW5kZWQgaWYgdGhlIGhvc3Qgc3lzdGVtIGhhcyBncmFwaGljcwotICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCBvciBpZiB5b3UgYXJlIGdvaW5nIHRvIHVzZSB0aGUgRWNsaXBzZQotICAgICAgICAgICAgICAgICAgICAgICAgSURFOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHN1ZG8gYXB0LWdldCBpbnN0YWxsIGxpYnNkbDEuMi1kZXYgeHRlcm0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Eb2N1bWVudGF0aW9uOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyBuZWVkZWQgaWYgeW91IGFyZSBnb2luZyB0byBidWlsZCBvdXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFudWFsczoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIGFwdC1nZXQgaW5zdGFsbCBtYWtlIHhzbHRwcm9jIGRvY2Jvb2stdXRpbHMgZm9wIGRibGF0ZXggeG1sdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5PcGVuRW1iZWRkZWQgU2VsZi1UZXN0ICg8ZmlsZW5hbWU+b2Utc2VsZnRlc3Q8L2ZpbGVuYW1lPik6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCBpZiB5b3UgYXJlIGdvaW5nIHRvIHJ1bgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXNlbGZ0ZXN0PC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgcHl0aG9uLWdpdAotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nZmVkb3JhLXBhY2thZ2VzJz4KLSAgICAgICAgICAgIDx0aXRsZT5GZWRvcmEgUGFja2FnZXM8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3Qgc2hvd3MgdGhlIHJlcXVpcmVkIHBhY2thZ2VzIGJ5IGZ1bmN0aW9uCi0gICAgICAgICAgICAgICAgZ2l2ZW4gYSBzdXBwb3J0ZWQgRmVkb3JhIExpbnV4IGRpc3RyaWJ1dGlvbjoKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkVzc2VudGlhbHM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCB0byBidWlsZCBhbiBpbWFnZSBmb3IgYSBoZWFkbGVzcwotICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHN1ZG8gZG5mIGluc3RhbGwgJkZFRE9SQV9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTDsKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5HcmFwaGljYWwgYW5kIEVjbGlwc2UgUGx1Zy1JbiBFeHRyYXM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIHJlY29tbWVuZGVkIGlmIHRoZSBob3N0IHN5c3RlbSBoYXMgZ3JhcGhpY3MKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQgb3IgaWYgeW91IGFyZSBnb2luZyB0byB1c2UgdGhlIEVjbGlwc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIElERToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIGRuZiBpbnN0YWxsIFNETC1kZXZlbCB4dGVybQotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkRvY3VtZW50YXRpb246PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCBpZiB5b3UgYXJlIGdvaW5nIHRvIGJ1aWxkIG91dCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYW51YWxzOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHN1ZG8gZG5mIGluc3RhbGwgbWFrZSBkb2Nib29rLXN0eWxlLWRzc3NsIGRvY2Jvb2stc3R5bGUteHNsIFwKLSAgICAgZG9jYm9vay1kdGRzIGRvY2Jvb2stdXRpbHMgZm9wIGxpYnhzbHQgZGJsYXRleCB4bWx0bwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk9wZW5FbWJlZGRlZCBTZWxmLVRlc3QgKDxmaWxlbmFtZT5vZS1zZWxmdGVzdDwvZmlsZW5hbWU+KTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIGlmIHlvdSBhcmUgZ29pbmcgdG8gcnVuCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b2Utc2VsZnRlc3Q8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIGRuZiBpbnN0YWxsIHB5dGhvbjMtR2l0UHl0aG9uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdvcGVuc3VzZS1wYWNrYWdlcyc+Ci0gICAgICAgICAgICA8dGl0bGU+b3BlblNVU0UgUGFja2FnZXM8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3Qgc2hvd3MgdGhlIHJlcXVpcmVkIHBhY2thZ2VzIGJ5IGZ1bmN0aW9uCi0gICAgICAgICAgICAgICAgZ2l2ZW4gYSBzdXBwb3J0ZWQgb3BlblNVU0UgTGludXggZGlzdHJpYnV0aW9uOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RXNzZW50aWFsczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIHRvIGJ1aWxkIGFuIGltYWdlIGZvciBhIGhlYWRsZXNzCi0gICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW06Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyB6eXBwZXIgaW5zdGFsbCAmT1BFTlNVU0VfSE9TVF9QQUNLQUdFU19FU1NFTlRJQUw7Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+R3JhcGhpY2FsIGFuZCBFY2xpcHNlIFBsdWctSW4gRXh0cmFzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyByZWNvbW1lbmRlZCBpZiB0aGUgaG9zdCBzeXN0ZW0gaGFzIGdyYXBoaWNzCi0gICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IG9yIGlmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIHRoZSBFY2xpcHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBJREU6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyB6eXBwZXIgaW5zdGFsbCBsaWJTREwtZGV2ZWwgeHRlcm0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Eb2N1bWVudGF0aW9uOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyBuZWVkZWQgaWYgeW91IGFyZSBnb2luZyB0byBidWlsZCBvdXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFudWFsczoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIHp5cHBlciBpbnN0YWxsIG1ha2UgZGJsYXRleCB4bWx0bwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk9wZW5FbWJlZGRlZCBTZWxmLVRlc3QgKDxmaWxlbmFtZT5vZS1zZWxmdGVzdDwvZmlsZW5hbWU+KTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIGlmIHlvdSBhcmUgZ29pbmcgdG8gcnVuCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b2Utc2VsZnRlc3Q8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIHp5cHBlciBpbnN0YWxsIHB5dGhvbi1HaXRQeXRob24KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdjZW50b3MtcGFja2FnZXMnPgotICAgICAgICAgICAgPHRpdGxlPkNlbnRPUyBQYWNrYWdlczwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBzaG93cyB0aGUgcmVxdWlyZWQgcGFja2FnZXMgYnkgZnVuY3Rpb24KLSAgICAgICAgICAgICAgICBnaXZlbiBhIHN1cHBvcnRlZCBDZW50T1MgTGludXggZGlzdHJpYnV0aW9uOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RXNzZW50aWFsczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIHRvIGJ1aWxkIGFuIGltYWdlIGZvciBhIGhlYWRsZXNzCi0gICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW06Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyB5dW0gaW5zdGFsbCAmQ0VOVE9TX0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMOyBTREwtZGV2ZWwgeHRlcm0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXh0cmEgUGFja2FnZXMgZm9yIEVudGVycHJpc2UgTGludXgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5lcGVsLXJlbGVhc2U8L2ZpbGVuYW1lPikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGEgY29sbGVjdGlvbiBvZiBwYWNrYWdlcyBmcm9tIEZlZG9yYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHQgb24gUkhFTC9DZW50T1MgZm9yIGVhc3kgaW5zdGFsbGF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBwYWNrYWdlcyBub3QgaW5jbHVkZWQgaW4gZW50ZXJwcmlzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGludXggYnkgZGVmYXVsdC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGluc3RhbGwgdGhlc2UgcGFja2FnZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRlbHkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5tYWtlY2FjaGU8L2ZpbGVuYW1lPiBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdW1lcyBhZGRpdGlvbmFsIE1ldGFkYXRhIGZyb20KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5lcGVsLXJlbGVhc2U8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+R3JhcGhpY2FsIGFuZCBFY2xpcHNlIFBsdWctSW4gRXh0cmFzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyByZWNvbW1lbmRlZCBpZiB0aGUgaG9zdCBzeXN0ZW0gaGFzIGdyYXBoaWNzCi0gICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IG9yIGlmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIHRoZSBFY2xpcHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBJREU6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyB5dW0gaW5zdGFsbCBTREwtZGV2ZWwgeHRlcm0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Eb2N1bWVudGF0aW9uOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyBuZWVkZWQgaWYgeW91IGFyZSBnb2luZyB0byBidWlsZCBvdXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFudWFsczoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIHl1bSBpbnN0YWxsIG1ha2UgZG9jYm9vay1zdHlsZS1kc3NzbCBkb2Nib29rLXN0eWxlLXhzbCBcCi0gICAgIGRvY2Jvb2stZHRkcyBkb2Nib29rLXV0aWxzIGZvcCBsaWJ4c2x0IGRibGF0ZXggeG1sdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5PcGVuRW1iZWRkZWQgU2VsZi1UZXN0ICg8ZmlsZW5hbWU+b2Utc2VsZnRlc3Q8L2ZpbGVuYW1lPik6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCBpZiB5b3UgYXJlIGdvaW5nIHRvIHJ1bgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXNlbGZ0ZXN0PC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyB5dW0gaW5zdGFsbCBHaXRQeXRob24KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3JlcXVpcmVkLWdpdC10YXItYW5kLXB5dGhvbi12ZXJzaW9ucyc+Ci0gICAgICAgIDx0aXRsZT5SZXF1aXJlZCBHaXQsIHRhciwgYW5kIFB5dGhvbiBWZXJzaW9uczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJbiBvcmRlciB0byB1c2UgdGhlIGJ1aWxkIHN5c3RlbSwgeW91ciBob3N0IGRldmVsb3BtZW50IHN5c3RlbQotICAgICAgICAgICAgbXVzdCBtZWV0IHRoZSBmb2xsb3dpbmcgdmVyc2lvbiByZXF1aXJlbWVudHMgZm9yIEdpdCwgdGFyLCBhbmQKLSAgICAgICAgICAgIFB5dGhvbjoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkdpdCAxLjguMy4xIG9yIGdyZWF0ZXI8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+dGFyIDEuMjcgb3IgZ3JlYXRlcjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5QeXRob24gMy40LjAgb3IgZ3JlYXRlcjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIElmIHlvdXIgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0gZG9lcyBub3QgbWVldCBhbGwgdGhlc2UgcmVxdWlyZW1lbnRzLAotICAgICAgICAgICAgeW91IGNhbiByZXNvbHZlIHRoaXMgYnkgaW5zdGFsbGluZyBhIDxmaWxlbmFtZT5idWlsZHRvb2xzPC9maWxlbmFtZT4KLSAgICAgICAgICAgIHRhcmJhbGwgdGhhdCBjb250YWlucyB0aGVzZSB0b29scy4KLSAgICAgICAgICAgIFlvdSBjYW4gZ2V0IHRoZSB0YXJiYWxsIG9uZSBvZiB0d28gd2F5czogZG93bmxvYWQgYSBwcmUtYnVpbHQKLSAgICAgICAgICAgIHRhcmJhbGwgb3IgdXNlIEJpdEJha2UgdG8gYnVpbGQgdGhlIHRhcmJhbGwuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nZG93bmxvYWRpbmctYS1wcmUtYnVpbHQtYnVpbGR0b29scy10YXJiYWxsJz4KLSAgICAgICAgICAgIDx0aXRsZT5Eb3dubG9hZGluZyBhIFByZS1CdWlsdCA8ZmlsZW5hbWU+YnVpbGR0b29sczwvZmlsZW5hbWU+IFRhcmJhbGw8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBEb3dubG9hZGluZyBhbmQgcnVubmluZyBhIHByZS1idWlsdCBidWlsZHRvb2xzIGluc3RhbGxlciBpcwotICAgICAgICAgICAgICAgIHRoZSBlYXNpZXN0IG9mIHRoZSB0d28gbWV0aG9kcyBieSB3aGljaCB5b3UgY2FuIGdldCB0aGVzZSB0b29sczoKLSAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0ZSBhbmQgZG93bmxvYWQgdGhlIDxmaWxlbmFtZT4qLnNoPC9maWxlbmFtZT4gYXQKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ETF9VUkw7L3JlbGVhc2VzL3lvY3RvL3lvY3RvLSZESVNUUk87L2J1aWxkdG9vbHMvJz48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRlIHRoZSBpbnN0YWxsYXRpb24gc2NyaXB0LgotICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHNoIHBva3ktZ2xpYmMteDg2XzY0LWJ1aWxkdG9vbHMtdGFyYmFsbC14ODZfNjQtYnVpbGR0b29scy1uYXRpdmVzZGstc3RhbmRhbG9uZS0mRElTVFJPOy5zaAotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgRHVyaW5nIGV4ZWN1dGlvbiwgYSBwcm9tcHQgYXBwZWFycyB0aGF0IGFsbG93cyB5b3UgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIGNob29zZSB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgY291bGQgY2hvb3NlIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIC9ob21lLzxyZXBsYWNlYWJsZT55b3VyLXVzZXJuYW1lPC9yZXBsYWNlYWJsZT4vYnVpbGR0b29scwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZSB0aGUgdG9vbHMgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IGJ5IHVzaW5nIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgbGlrZSB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHNvdXJjZSAvaG9tZS88cmVwbGFjZWFibGU+eW91cl91c2VybmFtZTwvcmVwbGFjZWFibGU+L2J1aWxkdG9vbHMvZW52aXJvbm1lbnQtc2V0dXAtaTU4Ni1wb2t5LWxpbnV4Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBPZiBjb3Vyc2UsIHlvdSBuZWVkIHRvIHN1cHBseSB5b3VyIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgYW5kIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICBzdXJlIHRvIHVzZSB0aGUgcmlnaHQgZmlsZSAoaS5lLiBpNTg1IG9yIHg4Ni02NCkuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIHlvdSBoYXZlIHNvdXJjZWQgdGhlIHNldHVwIHNjcmlwdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0b29scyBhcmUgYWRkZWQgdG8gPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGFueSBvdGhlciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgcmVxdWlyZWQgdG8gcnVuIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHMgYXJlIGluaXRpYWxpemVkLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlc3VsdHMgYXJlIHdvcmtpbmcgdmVyc2lvbnMgdmVyc2lvbnMgb2YgR2l0LCB0YXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBQeXRob24gYW5kIDxmaWxlbmFtZT5jaHJwYXRoPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J2J1aWxkaW5nLXlvdXItb3duLWJ1aWxkdG9vbHMtdGFyYmFsbCc+Ci0gICAgICAgICAgICA8dGl0bGU+QnVpbGRpbmcgWW91ciBPd24gPGZpbGVuYW1lPmJ1aWxkdG9vbHM8L2ZpbGVuYW1lPiBUYXJiYWxsPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQnVpbGRpbmcgYW5kIHJ1bm5pbmcgeW91ciBvd24gYnVpbGR0b29scyBpbnN0YWxsZXIgYXBwbGllcwotICAgICAgICAgICAgICAgIG9ubHkgd2hlbiB5b3UgaGF2ZSBhIGJ1aWxkIGhvc3QgdGhhdCBjYW4gYWxyZWFkeSBydW4gQml0QmFrZS4KLSAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHlvdSB1c2UgdGhhdCBtYWNoaW5lIHRvIGJ1aWxkIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uc2g8L2ZpbGVuYW1lPiBmaWxlIGFuZCB0aGVuCi0gICAgICAgICAgICAgICAgdGFrZSBzdGVwcyB0byB0cmFuc2ZlciBhbmQgcnVuIGl0IG9uIGEKLSAgICAgICAgICAgICAgICBtYWNoaW5lIHRoYXQgZG9lcyBub3QgbWVldCB0aGUgbWluaW1hbCBHaXQsIHRhciwgYW5kIFB5dGhvbgotICAgICAgICAgICAgICAgIHJlcXVpcmVtZW50cy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSGVyZSBhcmUgdGhlIHN0ZXBzIHRvIHRha2UgdG8gYnVpbGQgYW5kIHJ1biB5b3VyIG93bgotICAgICAgICAgICAgICAgIGJ1aWxkdG9vbHMgaW5zdGFsbGVyOgotICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgT24gdGhlIG1hY2hpbmUgdGhhdCBpcyBhYmxlIHRvIHJ1biBCaXRCYWtlLAotICAgICAgICAgICAgICAgICAgICAgICAgYmUgc3VyZSB5b3UgaGF2ZSBzZXQgdXAgeW91ciBidWlsZCBlbnZpcm9ubWVudCB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2V0dXAgc2NyaXB0Ci0gICAgICAgICAgICAgICAgICAgICAgICAoPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4pLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFJ1biB0aGUgQml0QmFrZSBjb21tYW5kIHRvIGJ1aWxkIHRoZSB0YXJiYWxsOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgYnVpbGR0b29scy10YXJiYWxsCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNES01BQ0hJTkUnPjxmaWxlbmFtZT5TREtNQUNISU5FPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZQotICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lcyB3aGV0aGVyIHlvdSBidWlsZCB0b29scyBmb3IgYSAzMi1iaXQKLSAgICAgICAgICAgICAgICAgICAgICAgIG9yIDY0LWJpdCBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgYnVpbGQgY29tcGxldGVzLCB5b3UgY2FuIGZpbmQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uc2g8L2ZpbGVuYW1lPiBmaWxlIHRoYXQgaW5zdGFsbHMKLSAgICAgICAgICAgICAgICAgICAgICAgdGhlIHRvb2xzIGluIHRoZSA8ZmlsZW5hbWU+dG1wL2RlcGxveS9zZGs8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcnkgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgVGhlIGluc3RhbGxlciBmaWxlIGhhcyB0aGUgc3RyaW5nICJidWlsZHRvb2xzIgotICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgbmFtZS4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2ZlciB0aGUgPGZpbGVuYW1lPi5zaDwvZmlsZW5hbWU+IGZpbGUgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgaG9zdCB0byB0aGUgbWFjaGluZSB0aGF0IGRvZXMgbm90IG1lZXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIEdpdCwgdGFyLCBvciBQeXRob24gcmVxdWlyZW1lbnRzLgotICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgIE9uIHRoZSBtYWNoaW5lIHRoYXQgZG9lcyBub3QgbWVldCB0aGUgcmVxdWlyZW1lbnRzLAotICAgICAgICAgICAgICAgICAgICAgICBydW4gdGhlIDxmaWxlbmFtZT4uc2g8L2ZpbGVuYW1lPiBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgIHRvIGluc3RhbGwgdGhlIHRvb2xzLgotICAgICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6Ci0gICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzaCBwb2t5LWdsaWJjLXg4Nl82NC1idWlsZHRvb2xzLXRhcmJhbGwteDg2XzY0LWJ1aWxkdG9vbHMtbmF0aXZlc2RrLXN0YW5kYWxvbmUtJkRJU1RSTzsuc2gKLSAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICBEdXJpbmcgZXhlY3V0aW9uLCBhIHByb21wdCBhcHBlYXJzIHRoYXQgYWxsb3dzIHlvdSB0bwotICAgICAgICAgICAgICAgICAgICAgICBjaG9vc2UgdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgY291bGQgY2hvb3NlIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgL2hvbWUvPHJlcGxhY2VhYmxlPnlvdXJfdXNlcm5hbWU8L3JlcGxhY2VhYmxlPi9idWlsZHRvb2xzCi0gICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZSB0aGUgdG9vbHMgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IGJ5IHVzaW5nIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgbGlrZSB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHNvdXJjZSAvaG9tZS88cmVwbGFjZWFibGU+eW91cl91c2VybmFtZTwvcmVwbGFjZWFibGU+L2J1aWxkdG9vbHMvZW52aXJvbm1lbnQtc2V0dXAtaTU4Ni1wb2t5LWxpbnV4Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBPZiBjb3Vyc2UsIHlvdSBuZWVkIHRvIHN1cHBseSB5b3VyIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgYW5kIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICBzdXJlIHRvIHVzZSB0aGUgcmlnaHQgZmlsZSAoaS5lLiBpNTg1IG9yIHg4Ni02NCkuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIHlvdSBoYXZlIHNvdXJjZWQgdGhlIHNldHVwIHNjcmlwdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0b29scyBhcmUgYWRkZWQgdG8gPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGFueSBvdGhlciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgcmVxdWlyZWQgdG8gcnVuIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHMgYXJlIGluaXRpYWxpemVkLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlc3VsdHMgYXJlIHdvcmtpbmcgdmVyc2lvbnMgdmVyc2lvbnMgb2YgR2l0LCB0YXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBQeXRob24gYW5kIDxmaWxlbmFtZT5jaHJwYXRoPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0gICAgPC9zZWN0aW9uPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0naW50cm8tZ2V0aXQnPgotICAgIDx0aXRsZT5PYnRhaW5pbmcgdGhlIFlvY3RvIFByb2plY3Q8L3RpdGxlPgotICAgIDxwYXJhPgotICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCB0ZWFtIG1ha2VzIHRoZSBZb2N0byBQcm9qZWN0IGF2YWlsYWJsZSB0aHJvdWdoIGEgbnVtYmVyCi0gICAgICAgIG9mIG1ldGhvZHM6Ci0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNvdXJjZSBSZXBvc2l0b3JpZXM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBXb3JraW5nIGZyb20gYSBjb3B5IG9mIHRoZSB1cHN0cmVhbQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeSBpcyB0aGUKLSAgICAgICAgICAgICAgICBwcmVmZXJyZWQgbWV0aG9kIGZvciBvYnRhaW5pbmcgYW5kIHVzaW5nIGEgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgIHJlbGVhc2UuCi0gICAgICAgICAgICAgICAgWW91IGNhbiB2aWV3IHRoZSBZb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXMgYXQKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2knPjwvdWxpbms+LgotICAgICAgICAgICAgICAgIEluIHBhcnRpY3VsYXIsIHlvdSBjYW4gZmluZCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgYXQKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5Lyc+PC91bGluaz4uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlJlbGVhc2VzOjwvZW1waGFzaXM+IFN0YWJsZSwgdGVzdGVkCi0gICAgICAgICAgICAgICAgcmVsZWFzZXMgYXJlIGF2YWlsYWJsZSBhcyB0YXJiYWxscyB0aHJvdWdoCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RMX1VSTDsvcmVsZWFzZXMveW9jdG8vJy8+LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5OaWdodGx5IEJ1aWxkczo8L2VtcGhhc2lzPiBUaGVzZQotICAgICAgICAgICAgICAgIHRhcmJhbGwgcmVsZWFzZXMgYXJlIGF2YWlsYWJsZSBhdAotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19BQl9OSUdIVExZX1VSTDsnLz4uCi0gICAgICAgICAgICAgICAgVGhlc2UgYnVpbGRzIGluY2x1ZGUgWW9jdG8gUHJvamVjdCByZWxlYXNlcywgU0RLIGluc3RhbGxhdGlvbgotICAgICAgICAgICAgICAgIHNjcmlwdHMsIGFuZCBleHBlcmltZW50YWwgYnVpbGRzLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Zb2N0byBQcm9qZWN0IFdlYnNpdGU6PC9lbXBoYXNpcz4gWW91IGNhbgotICAgICAgICAgICAgICAgIGZpbmQgdGFyYmFsbCByZWxlYXNlcyBvZiB0aGUgWW9jdG8gUHJvamVjdCBhbmQgc3VwcG9ydGVkIEJTUHMKLSAgICAgICAgICAgICAgICBhdCB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IHdlYnNpdGU8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICBBbG9uZyB3aXRoIHRoZXNlIGRvd25sb2FkcywgeW91IGNhbiBmaW5kIGxvdHMgb2Ygb3RoZXIKLSAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBhdCB0aGlzIHNpdGUuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgIDwvcGFyYT4KLTwvc2VjdGlvbj4KLQotPHNlY3Rpb24gaWQ9J2ludHJvLWdldGl0LWRldic+Ci0gICAgPHRpdGxlPkRldmVsb3BtZW50IENoZWNrb3V0czwvdGl0bGU+Ci0gICAgPHBhcmE+Ci0gICAgICAgIERldmVsb3BtZW50IHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0IHJlcXVpcmVzIGEgbG9jYWwKLSAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCi0gICAgICAgIFlvdSBjYW4gc2V0IHVwIHRoZSBTb3VyY2UgRGlyZWN0b3J5IGJ5IGNsb25pbmcgYSBjb3B5IG9mIHRoZSB1cHN0cmVhbQotICAgICAgICA8bGluayBsaW5rZW5kPSdwb2t5Jz5wb2t5PC9saW5rPiBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBkbyB0aGlzLCBzZWUgdGhlCi0gICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN3b3JraW5nLXdpdGgteW9jdG8tcHJvamVjdC1zb3VyY2UtZmlsZXMnPldvcmtpbmcgV2l0aCBZb2N0byBQcm9qZWN0IFNvdXJjZSBGaWxlczwvdWxpbms+IgotICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KLSAgICA8L3BhcmE+Ci08L3NlY3Rpb24+Ci0KLTxzZWN0aW9uIGlkPSd5b2N0by1wcm9qZWN0LXRlcm1zJz4KLSAgICA8dGl0bGU+WW9jdG8gUHJvamVjdCBUZXJtczwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgRm9sbG93aW5nIGlzIGEgbGlzdCBvZiB0ZXJtcyBhbmQgZGVmaW5pdGlvbnMgdXNlcnMgbmV3IHRvIHRoZSBZb2N0bwotICAgICAgICBQcm9qZWN0IGRldmVsb3BtZW50IGVudmlyb25tZW50IG1pZ2h0IGZpbmQgaGVscGZ1bC4KLSAgICAgICAgV2hpbGUgc29tZSBvZiB0aGVzZSB0ZXJtcyBhcmUgdW5pdmVyc2FsLCB0aGUgbGlzdCBpbmNsdWRlcyB0aGVtCi0gICAgICAgIGp1c3QgaW4gY2FzZToKLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QXBwZW5kIEZpbGVzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgRmlsZXMgdGhhdCBhcHBlbmQgYnVpbGQgaW5mb3JtYXRpb24gdG8gYSByZWNpcGUgZmlsZS4KLSAgICAgICAgICAgICAgICBBcHBlbmQgZmlsZXMgYXJlIGtub3duIGFzIEJpdEJha2UgYXBwZW5kIGZpbGVzIGFuZAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlcy4KLSAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBleHBlY3RzIGV2ZXJ5IGFwcGVuZCBmaWxlIHRvIGhhdmUKLSAgICAgICAgICAgICAgICBhIGNvcnJlc3BvbmRpbmcgcmVjaXBlICg8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4pIGZpbGUuCi0gICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIHRoZSBhcHBlbmQgZmlsZSBhbmQgY29ycmVzcG9uZGluZyByZWNpcGUgZmlsZQotICAgICAgICAgICAgICAgIG11c3QgdXNlIHRoZSBzYW1lIHJvb3QgZmlsZW5hbWUuCi0gICAgICAgICAgICAgICAgVGhlIGZpbGVuYW1lcyBjYW4gZGlmZmVyIG9ubHkgaW4gdGhlIGZpbGUgdHlwZSBzdWZmaXggdXNlZAotICAgICAgICAgICAgICAgIChlLmcuCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvcm1mYWN0b3JfMC4wLmJiPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvcm1mYWN0b3JfMC4wLmJiYXBwZW5kPC9maWxlbmFtZT4pLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPkluZm9ybWF0aW9uIGluIGFwcGVuZCBmaWxlcyBleHRlbmRzIG9yIG92ZXJyaWRlcyB0aGUKLSAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBpbiB0aGUgc2ltaWxhcmx5LW5hbWVkIHJlY2lwZSBmaWxlLgotICAgICAgICAgICAgICAgIEZvciBhbiBleGFtcGxlIG9mIGFuIGFwcGVuZCBmaWxlIGluIHVzZSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZy1iYmFwcGVuZC1maWxlcyc+VXNpbmcgLmJiYXBwZW5kIEZpbGVzIGluIFlvdXIgTGF5ZXI8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgQXBwZW5kIGZpbGVzIGNhbiBhbHNvIHVzZSB3aWxkY2FyZCBwYXR0ZXJucyBpbiB0aGVpcgotICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIG51bWJlcnMgc28gdGhleSBjYW4gYmUgYXBwbGllZCB0byBtb3JlIHRoYW4gb25lCi0gICAgICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIHVuZGVybHlpbmcgcmVjaXBlIGZpbGUuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdiaXRiYWtlLXRlcm0nPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CaXRCYWtlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgVGhlIHRhc2sgZXhlY3V0b3IgYW5kIHNjaGVkdWxlciB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKLSAgICAgICAgICAgICAgICBzeXN0ZW0gdG8gYnVpbGQgaW1hZ2VzLgotICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEJpdEJha2UsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7Jz5CaXRCYWtlIFVzZXIgTWFudWFsPC91bGluaz4uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J2JvYXJkLXN1cHBvcnQtcGFja2FnZS1ic3AtdGVybSc+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEEgZ3JvdXAgb2YgZHJpdmVycywgZGVmaW5pdGlvbnMsIGFuZCBvdGhlciBjb21wb25lbnRzIHRoYXQKLSAgICAgICAgICAgICAgICBwcm92aWRlIHN1cHBvcnQgZm9yIGEgc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbi4KLSAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBCU1BzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsnPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPHBhcmEgaWQ9J2J1aWxkLWRpcmVjdG9yeSc+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIERpcmVjdG9yeTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoaXMgdGVybSByZWZlcnMgdG8gdGhlIGFyZWEgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCi0gICAgICAgICAgICAgICAgc3lzdGVtIGZvciBidWlsZHMuCi0gICAgICAgICAgICAgICAgVGhlIGFyZWEgaXMgY3JlYXRlZCB3aGVuIHlvdSA8ZmlsZW5hbWU+c291cmNlPC9maWxlbmFtZT4gdGhlCi0gICAgICAgICAgICAgICAgc2V0dXAgZW52aXJvbm1lbnQgc2NyaXB0IHRoYXQgaXMgZm91bmQgaW4gdGhlIFNvdXJjZSBEaXJlY3RvcnkKLSAgICAgICAgICAgICAgICAoaS5lLiA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPikuCi0gICAgICAgICAgICAgICAgVGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRPUERJUic+PGZpbGVuYW1lPlRPUERJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlIHBvaW50cyB0byB0aGUgQnVpbGQgRGlyZWN0b3J5LjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPllvdSBoYXZlIGEgbG90IG9mIGZsZXhpYmlsaXR5IHdoZW4gY3JlYXRpbmcgdGhlIEJ1aWxkCi0gICAgICAgICAgICAgICAgRGlyZWN0b3J5LgotICAgICAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgc29tZSBleGFtcGxlcyB0aGF0IHNob3cgaG93IHRvIGNyZWF0ZSB0aGUKLSAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgVGhlIGV4YW1wbGVzIGFzc3VtZSB5b3VyCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4gaXMKLSAgICAgICAgICAgICAgICBuYW1lZCA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DcmVhdGUgdGhlIEJ1aWxkIERpcmVjdG9yeSBpbnNpZGUgeW91cgotICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlIERpcmVjdG9yeSBhbmQgbGV0IHRoZSBuYW1lIG9mIHRoZSBCdWlsZAotICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5IGRlZmF1bHQgdG8gPGZpbGVuYW1lPmJ1aWxkPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgY2QgJEhPTUUvcG9reQotICAgICAkIHNvdXJjZSAmT0VfSU5JVF9GSUxFOwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DcmVhdGUgdGhlIEJ1aWxkIERpcmVjdG9yeSBpbnNpZGUgeW91cgotICAgICAgICAgICAgICAgICAgICAgICAgaG9tZSBkaXJlY3RvcnkgYW5kIHNwZWNpZmljYWxseSBuYW1lIGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dGVzdC1idWlsZHM8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjZCAkSE9NRQotICAgICAkIHNvdXJjZSBwb2t5LyZPRV9JTklUX0ZJTEU7IHRlc3QtYnVpbGRzCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZSBhIGRpcmVjdG9yeSBwYXRoIGFuZCBzcGVjaWZpY2FsbHkgbmFtZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIERpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFueSBpbnRlcm1lZGlhdGUgZm9sZGVycyBpbiB0aGUgcGF0aG5hbWUgbXVzdCBleGlzdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbmV4dCBleGFtcGxlIGNyZWF0ZXMgYSBCdWlsZCBEaXJlY3RvcnkgbmFtZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ZUC0mUE9LWVZFUlNJT047PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGluIHlvdXIgaG9tZSBkaXJlY3Rvcnkgd2l0aGluIHRoZSBleGlzdGluZwotICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IDxmaWxlbmFtZT5teWJ1aWxkczwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkY2QgJEhPTUUKLSAgICAgJCBzb3VyY2UgJEhPTUUvcG9reS8mT0VfSU5JVF9GSUxFOyAkSE9NRS9teWJ1aWxkcy9ZUC0mUE9LWVZFUlNJT047Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIEJ1aWxkIERpcmVjdG9yeSBjb250YWlucwotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgdGhlIGJ1aWxkIHN5c3RlbSB1c2VzIGZvcgotICAgICAgICAgICAgICAgICAgICBpdHMgd29yay4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IGNhbm5vdCBiZSB1bmRlciBORlMuCi0gICAgICAgICAgICAgICAgICAgIFRodXMsIGJ5IGRlZmF1bHQsIHRoZSBCdWlsZCBEaXJlY3RvcnkgY2Fubm90IGJlIHVuZGVyIE5GUy4KLSAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91IG5lZWQgdGhlIEJ1aWxkIERpcmVjdG9yeSB0byBiZSB1bmRlciBORlMsCi0gICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gc2V0IHRoaXMgdXAgYnkgc2V0dGluZyA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgaW4geW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUKLSAgICAgICAgICAgICAgICAgICAgdG8gdXNlIGEgbG9jYWwgZHJpdmUuCi0gICAgICAgICAgICAgICAgICAgIERvaW5nIHNvIGVmZmVjdGl2ZWx5IHNlcGFyYXRlcyA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZnJvbSA8ZmlsZW5hbWU+VE9QRElSPC9maWxlbmFtZT4sIHdoaWNoIGlzIHRoZSBCdWlsZAotICAgICAgICAgICAgICAgICAgICBEaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIFN5c3RlbTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoZSBzeXN0ZW0gdXNlZCB0byBidWlsZCBpbWFnZXMgaW4gYSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgRGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCi0gICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBpcyBzb21ldGltZXMgcmVmZXJyZWQgdG8gYXMgdGhlCi0gICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgaG9zdC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2xhc3Nlczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEZpbGVzIHRoYXQgcHJvdmlkZSBmb3IgbG9naWMgZW5jYXBzdWxhdGlvbiBhbmQgaW5oZXJpdGFuY2Ugc28KLSAgICAgICAgICAgICAgICB0aGF0IGNvbW1vbmx5IHVzZWQgcGF0dGVybnMgY2FuIGJlIGRlZmluZWQgb25jZSBhbmQgdGhlbgotICAgICAgICAgICAgICAgIGVhc2lseSB1c2VkIGluIG11bHRpcGxlIHJlY2lwZXMuCi0gICAgICAgICAgICAgICAgRm9yIHJlZmVyZW5jZSBpbmZvcm1hdGlvbiBvbiB0aGUgWW9jdG8gUHJvamVjdCBjbGFzc2VzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzJz5DbGFzc2VzPC9saW5rPiIgY2hhcHRlci4KLSAgICAgICAgICAgICAgICBDbGFzcyBmaWxlcyBlbmQgd2l0aCB0aGUgPGZpbGVuYW1lPi5iYmNsYXNzPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBmaWxlbmFtZSBleHRlbnNpb24uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbmZpZ3VyYXRpb24gRmlsZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gaW4gdmFyaW91cyA8ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGZpbGVzIHByb3ZpZGVzIGdsb2JhbCBkZWZpbml0aW9ucyBvZiB2YXJpYWJsZXMuCi0gICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUgaW4KLSAgICAgICAgICAgICAgICB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KLSAgICAgICAgICAgICAgICBjb250YWlucyB1c2VyLWRlZmluZWQgdmFyaWFibGVzIHRoYXQgYWZmZWN0IGV2ZXJ5IGJ1aWxkLgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3kuY29uZjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIGRlZmluZXMgWW9jdG8gImRpc3RybyIgY29uZmlndXJhdGlvbgotICAgICAgICAgICAgICAgIHZhcmlhYmxlcyB1c2VkIG9ubHkgd2hlbiBidWlsZGluZyB3aXRoIHRoaXMgcG9saWN5LgotICAgICAgICAgICAgICAgIE1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlcywgd2hpY2gKLSAgICAgICAgICAgICAgICBhcmUgbG9jYXRlZCB0aHJvdWdob3V0IHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LCBkZWZpbmUKLSAgICAgICAgICAgICAgICB2YXJpYWJsZXMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIGFuZCBhcmUgb25seSB1c2VkIHdoZW4gYnVpbGRpbmcKLSAgICAgICAgICAgICAgICBmb3IgdGhhdCB0YXJnZXQgKGUuZy4gdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1hY2hpbmUvYmVhZ2xlYm9uZS5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbgotICAgICAgICAgICAgICAgIGZpbGUgZGVmaW5lcyB2YXJpYWJsZXMgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBBUk0gQ29ydGV4LUE4Ci0gICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgYm9hcmQpLgotICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gZmlsZXMgZW5kIHdpdGggYSA8ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGZpbGVuYW1lIGV4dGVuc2lvbi4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluJz4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3Jvc3MtRGV2ZWxvcG1lbnQgVG9vbGNoYWluOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgYSBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4gaXMgYSBjb2xsZWN0aW9uIG9mCi0gICAgICAgICAgICAgICAgc29mdHdhcmUgZGV2ZWxvcG1lbnQgdG9vbHMgYW5kIHV0aWxpdGllcyB0aGF0IHJ1biBvbiBvbmUKLSAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmUgYW5kIGFsbG93IHlvdSB0byBkZXZlbG9wIHNvZnR3YXJlIGZvciBhCi0gICAgICAgICAgICAgICAgZGlmZmVyZW50LCBvciB0YXJnZXRlZCwgYXJjaGl0ZWN0dXJlLgotICAgICAgICAgICAgICAgIFRoZXNlIHRvb2xjaGFpbnMgY29udGFpbiBjcm9zcy1jb21waWxlcnMsIGxpbmtlcnMsIGFuZAotICAgICAgICAgICAgICAgIGRlYnVnZ2VycyB0aGF0IGFyZSBzcGVjaWZpYyB0byB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5UaGUgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyB0d28gZGlmZmVyZW50IGNyb3NzLWRldmVsb3BtZW50Ci0gICAgICAgICAgICAgICAgdG9vbGNoYWluczoKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBIHRvb2xjaGFpbiBvbmx5IHVzZWQgYnkgYW5kIHdpdGhpbgotICAgICAgICAgICAgICAgICAgICAgICAgQml0QmFrZSB3aGVuIGJ1aWxkaW5nIGFuIGltYWdlIGZvciBhIHRhcmdldAotICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BIHJlbG9jYXRhYmxlIHRvb2xjaGFpbiB1c2VkIG91dHNpZGUgb2YKLSAgICAgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgYnkgZGV2ZWxvcGVycyB3aGVuIGRldmVsb3BpbmcgYXBwbGljYXRpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHdpbGwgcnVuIG9uIGEgdGFyZ2V0ZWQgZGV2aWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+PC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Q3JlYXRpb24gb2YgdGhlc2UgdG9vbGNoYWlucyBpcyBzaW1wbGUgYW5kIGF1dG9tYXRlZC4KLSAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdG9vbGNoYWluIGNvbmNlcHRzIGFzIHRoZXkgYXBwbHkgdG8gdGhlCi0gICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4tZ2VuZXJhdGlvbic+Q3Jvc3MtRGV2ZWxvcG1lbnQgVG9vbGNoYWluIEdlbmVyYXRpb248L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIGZpbmQgbW9yZSBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICByZWxvY2F0YWJsZSB0b29sY2hhaW4gaW4gdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgotICAgICAgICAgICAgICAgIG1hbnVhbC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW1hZ2U6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBBbiBpbWFnZSBpcyBhbiBhcnRpZmFjdCBvZiB0aGUgQml0QmFrZSBidWlsZCBwcm9jZXNzIGdpdmVuCi0gICAgICAgICAgICAgICAgYSBjb2xsZWN0aW9uIG9mIHJlY2lwZXMgYW5kIHJlbGF0ZWQgTWV0YWRhdGEuCi0gICAgICAgICAgICAgICAgSW1hZ2VzIGFyZSB0aGUgYmluYXJ5IG91dHB1dCB0aGF0IHJ1biBvbiBzcGVjaWZpYyBoYXJkd2FyZSBvcgotICAgICAgICAgICAgICAgIFFFTVUgYW5kIGFyZSB1c2VkIGZvciBzcGVjaWZpYyB1c2UtY2FzZXMuCi0gICAgICAgICAgICAgICAgRm9yIGEgbGlzdCBvZiB0aGUgc3VwcG9ydGVkIGltYWdlIHR5cGVzIHRoYXQgdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICBwcm92aWRlcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtaW1hZ2VzJz5JbWFnZXM8L2xpbms+IgotICAgICAgICAgICAgICAgIGNoYXB0ZXIuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxheWVyOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgQSBjb2xsZWN0aW9uIG9mIHJlY2lwZXMgcmVwcmVzZW50aW5nIHRoZSBjb3JlLAotICAgICAgICAgICAgICAgIGEgQlNQLCBvciBhbiBhcHBsaWNhdGlvbiBzdGFjay4KLSAgICAgICAgICAgICAgICBGb3IgYSBkaXNjdXNzaW9uIHNwZWNpZmljYWxseSBvbiBCU1AgTGF5ZXJzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZXMgKEJTUCkKLSAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nbWV0YWRhdGEnPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NZXRhZGF0YTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoZSBmaWxlcyB0aGF0IEJpdEJha2UgcGFyc2VzIHdoZW4gYnVpbGRpbmcgYW4gaW1hZ2UuCi0gICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgTWV0YWRhdGEgaW5jbHVkZXMgcmVjaXBlcywgY2xhc3NlcywgYW5kCi0gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcy4KLSAgICAgICAgICAgICAgICBJbiB0aGUgY29udGV4dCBvZiB0aGUga2VybmVsICgia2VybmVsIE1ldGFkYXRhIiksIHRoZQotICAgICAgICAgICAgICAgIHRlcm0gcmVmZXJzIHRvIHRoZSBrZXJuZWwgY29uZmlnIGZyYWdtZW50cyBhbmQgZmVhdHVyZXMKLSAgICAgICAgICAgICAgICBjb250YWluZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQvY2dpdC5jZ2kveW9jdG8ta2VybmVsLWNhY2hlJz48ZmlsZW5hbWU+eW9jdG8ta2VybmVsLWNhY2hlPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5LgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdvZS1jb3JlJz4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T0UtQ29yZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEEgY29yZSBzZXQgb2YgTWV0YWRhdGEgb3JpZ2luYXRpbmcgd2l0aCBPcGVuRW1iZWRkZWQgKE9FKQotICAgICAgICAgICAgICAgIHRoYXQgaXMgc2hhcmVkIGJldHdlZW4gT0UgYW5kIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgICAgIFRoaXMgTWV0YWRhdGEgaXMgZm91bmQgaW4gdGhlIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgb2YgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J2J1aWxkLXN5c3RlbS10ZXJtJz4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gc3BlY2lmaWMgdG8gdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaXMgYmFzZWQgb24gYW5vdGhlciBwcm9qZWN0IGtub3duCi0gICAgICAgICAgICAgICAgYXMgIlBva3kiLCB3aGljaCB1c2VzCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYml0YmFrZS10ZXJtJz5CaXRCYWtlPC9saW5rPiBhcyB0aGUgdGFzawotICAgICAgICAgICAgICAgIGV4ZWN1dG9yLgotICAgICAgICAgICAgICAgIFRocm91Z2hvdXQgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBzZXQsIHRoZQotICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIHNpbXBseQotICAgICAgICAgICAgICAgIGFzICJ0aGUgYnVpbGQgc3lzdGVtIi4KLSAgICAgICAgICAgICAgICBJZiBvdGhlciBidWlsZCBzeXN0ZW1zLCBzdWNoIGFzIGEgaG9zdCBvciB0YXJnZXQgYnVpbGQgc3lzdGVtCi0gICAgICAgICAgICAgICAgYXJlIHJlZmVyZW5jZWQsIHRoZSBkb2N1bWVudGF0aW9uIGNsZWFybHkgc3RhdGVzIHRoZQotICAgICAgICAgICAgICAgIGRpZmZlcmVuY2UuCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIEZvciBzb21lIGhpc3RvcmljYWwgaW5mb3JtYXRpb24gYWJvdXQgUG9reSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdwb2t5Jz5Qb2t5PC9saW5rPiB0ZXJtLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UGFja2FnZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEluIHRoZSBjb250ZXh0IG9mIHRoZSBZb2N0byBQcm9qZWN0LCB0aGlzIHRlcm0gcmVmZXJzIHRvIGEKLSAgICAgICAgICAgICAgICByZWNpcGUncyBwYWNrYWdlZCBvdXRwdXQgcHJvZHVjZWQgYnkgQml0QmFrZSAoaS5lLiBhCi0gICAgICAgICAgICAgICAgImJha2VkIHJlY2lwZSIpLgotICAgICAgICAgICAgICAgIEEgcGFja2FnZSBpcyBnZW5lcmFsbHkgdGhlIGNvbXBpbGVkIGJpbmFyaWVzIHByb2R1Y2VkIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgcmVjaXBlJ3Mgc291cmNlcy4KLSAgICAgICAgICAgICAgICBZb3UgImJha2UiIHNvbWV0aGluZyBieSBydW5uaW5nIGl0IHRocm91Z2ggQml0QmFrZS48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5JdCBpcyB3b3J0aCBub3RpbmcgdGhhdCB0aGUgdGVybSAicGFja2FnZSIgY2FuLAotICAgICAgICAgICAgICAgIGluIGdlbmVyYWwsIGhhdmUgc3VidGxlIG1lYW5pbmdzLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgcGFja2FnZXMgcmVmZXJyZWQgdG8gaW4gdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjcGFja2FnZXMnPlRoZSBCdWlsZCBIb3N0IFBhY2thZ2VzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBRdWljayBTdGFydCBhcmUgY29tcGlsZWQgYmluYXJpZXMKLSAgICAgICAgICAgICAgICB0aGF0LCB3aGVuIGluc3RhbGxlZCwgYWRkIGZ1bmN0aW9uYWxpdHkgdG8geW91ciBMaW51eAotICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbi48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5Bbm90aGVyIHBvaW50IHdvcnRoIG5vdGluZyBpcyB0aGF0IGhpc3RvcmljYWxseSB3aXRoaW4KLSAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCwgcmVjaXBlcyB3ZXJlIHJlZmVycmVkIHRvIGFzIHBhY2thZ2VzIC0gdGh1cywKLSAgICAgICAgICAgICAgICB0aGUgZXhpc3RlbmNlIG9mIHNldmVyYWwgQml0QmFrZSB2YXJpYWJsZXMgdGhhdCBhcmUgc2VlbWluZ2x5Ci0gICAgICAgICAgICAgICAgbWlzLW5hbWVkLAotICAgICAgICAgICAgICAgIChlLmcuIDxsaW5rIGxpbmtlbmQ9J3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L2xpbms+LCBhbmQKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEUnPjxmaWxlbmFtZT5QRTwvZmlsZW5hbWU+PC9saW5rPikuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPlBhY2thZ2UgR3JvdXBzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgQXJiaXRyYXJ5IGdyb3VwcyBvZiBzb2Z0d2FyZSBSZWNpcGVzLgotICAgICAgICAgICAgICAgIFlvdSB1c2UgcGFja2FnZSBncm91cHMgdG8gaG9sZCByZWNpcGVzIHRoYXQsIHdoZW4gYnVpbHQsCi0gICAgICAgICAgICAgICAgdXN1YWxseSBhY2NvbXBsaXNoIGEgc2luZ2xlIHRhc2suCi0gICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGEgcGFja2FnZSBncm91cCBjb3VsZCBjb250YWluIHRoZSByZWNpcGVzIGZvciBhCi0gICAgICAgICAgICAgICAgY29tcGFueeKAmXMgcHJvcHJpZXRhcnkgb3IgdmFsdWUtYWRkIHNvZnR3YXJlLgotICAgICAgICAgICAgICAgIE9yLCB0aGUgcGFja2FnZSBncm91cCBjb3VsZCBjb250YWluIHRoZSByZWNpcGVzIHRoYXQgZW5hYmxlCi0gICAgICAgICAgICAgICAgZ3JhcGhpY3MuCi0gICAgICAgICAgICAgICAgQSBwYWNrYWdlIGdyb3VwIGlzIHJlYWxseSBqdXN0IGFub3RoZXIgcmVjaXBlLgotICAgICAgICAgICAgICAgIEJlY2F1c2UgcGFja2FnZSBncm91cCBmaWxlcyBhcmUgcmVjaXBlcywgdGhleSBlbmQgd2l0aCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gZmlsZW5hbWUgZXh0ZW5zaW9uLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdwb2t5Jz4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UG9reTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoZSB0ZXJtICJwb2t5Iiwgd2hpY2ggaXMgcHJvbm91bmNlZAotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QYWg8L2VtcGhhc2lzPi1rZWUsIGNhbiBtZWFuIHNldmVyYWwgdGhpbmdzOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEluIGl0cyBtb3N0IGdlbmVyYWwgc2Vuc2UsIHBva3kgaXMgYW4gb3Blbi1zb3VyY2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3QgdGhhdCB3YXMgaW5pdGlhbGx5IGRldmVsb3BlZCBieSBPcGVuZWRIYW5kLgotICAgICAgICAgICAgICAgICAgICAgICAgT3BlbmVkSGFuZCBkZXZlbG9wZWQgcG9reSBvZmYgb2YgdGhlIGV4aXN0aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGNyZWF0ZSBhIGNvbW1lcmNpYWxseQotICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGFibGUgYnVpbGQgc3lzdGVtIGZvciBlbWJlZGRlZCBMaW51eC4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIEludGVsIENvcnBvcmF0aW9uIGFjcXVpcmVkIE9wZW5lZEhhbmQsIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgcG9reSBwcm9qZWN0IGJlY2FtZSB0aGUgYmFzaXMgZm9yIHRoZSBZb2N0byBQcm9qZWN0J3MKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBXaXRoaW4gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+LAotICAgICAgICAgICAgICAgICAgICAgICAgInBva3kiIGV4aXN0cyBhcyBhIHNlcGFyYXRlIEdpdAotICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSBmcm9tIHdoaWNoIHlvdSBjYW4gY2xvbmUgdG8geWllbGQgYSBsb2NhbAotICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkgdGhhdCBpcyBhIGNvcHkgb24geW91ciBob3N0IHN5c3RlbS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRodXMsICJwb2t5IiBjYW4gcmVmZXIgdG8gdGhlIHVwc3RyZWFtIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbCBjb3B5IG9mIHRoZSBmaWxlcyB1c2VkIGZvciBkZXZlbG9wbWVudCB3aXRoaW4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZpbmFsbHksICJwb2t5IiBjYW4gcmVmZXIgdG8gdGhlIGRlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk8nPjxmaWxlbmFtZT5ESVNUUk88L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIGRpc3RyaWJ1dGlvbikgY3JlYXRlZCB3aGVuIHlvdSB1c2UgdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgICAgICAgICBQcm9qZWN0IGluIGNvbmp1bmN0aW9uIHdpdGggdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgdG8gYnVpbGQgYW4gaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmVjaXBlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgQSBzZXQgb2YgaW5zdHJ1Y3Rpb25zIGZvciBidWlsZGluZyBwYWNrYWdlcy4KLSAgICAgICAgICAgICAgICBBIHJlY2lwZSBkZXNjcmliZXMgd2hlcmUgeW91IGdldCBzb3VyY2UgY29kZSwgd2hpY2ggcGF0Y2hlcwotICAgICAgICAgICAgICAgIHRvIGFwcGx5LCBob3cgdG8gY29uZmlndXJlIHRoZSBzb3VyY2UsIGhvdyB0byBjb21waWxlIGl0IGFuZCBzbyBvbi4KLSAgICAgICAgICAgICAgICBSZWNpcGVzIGFsc28gZGVzY3JpYmUgZGVwZW5kZW5jaWVzIGZvciBsaWJyYXJpZXMgb3IgZm9yIG90aGVyCi0gICAgICAgICAgICAgICAgcmVjaXBlcy4KLSAgICAgICAgICAgICAgICBSZWNpcGVzIHJlcHJlc2VudCB0aGUgbG9naWNhbCB1bml0IG9mIGV4ZWN1dGlvbiwgdGhlIHNvZnR3YXJlCi0gICAgICAgICAgICAgICAgdG8gYnVpbGQsIHRoZSBpbWFnZXMgdG8gYnVpbGQsIGFuZCB1c2UgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+IGZpbGUgZXh0ZW5zaW9uLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdyZWZlcmVuY2Uta2l0LXRlcm0nPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5SZWZlcmVuY2UgS2l0OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgQSB3b3JraW5nIGV4YW1wbGUgb2YgYSBzeXN0ZW0sIHdoaWNoIGluY2x1ZGVzIGEKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdib2FyZC1zdXBwb3J0LXBhY2thZ2UtYnNwLXRlcm0nPkJTUDwvbGluaz4KLSAgICAgICAgICAgICAgICBhcyB3ZWxsIGFzIGEKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+YnVpbGQgc3lzdGVtPC9saW5rPgotICAgICAgICAgICAgICAgIGFuZCBvdGhlciBjb21wb25lbnRzLCB0aGF0IGNhbiB3b3JrIG9uIHNwZWNpZmljIGhhcmR3YXJlLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxwYXJhIGlkPSdzb3VyY2UtZGlyZWN0b3J5Jz4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U291cmNlIERpcmVjdG9yeTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoaXMgdGVybSByZWZlcnMgdG8gdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgY3JlYXRlZCBhcyBhIHJlc3VsdAotICAgICAgICAgICAgICAgIG9mIGNyZWF0aW5nIGEgbG9jYWwgY29weSBvZiB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQKLSAgICAgICAgICAgICAgICByZXBvc2l0b3J5IDxmaWxlbmFtZT5naXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBvciBleHBhbmRpbmcgYSByZWxlYXNlZCA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHRhcmJhbGwuCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIENyZWF0aW5nIGEgbG9jYWwgY29weSBvZiB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeSBpcyB0aGUgcmVjb21tZW5kZWQgbWV0aG9kIGZvciBzZXR0aW5nIHVwCi0gICAgICAgICAgICAgICAgICAgIHlvdXIgU291cmNlIERpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgU29tZXRpbWVzIHlvdSBtaWdodCBoZWFyIHRoZSB0ZXJtICJwb2t5IGRpcmVjdG9yeSIgdXNlZCB0byByZWZlcgotICAgICAgICAgICAgICAgIHRvIHRoaXMgZGlyZWN0b3J5IHN0cnVjdHVyZS4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBmaWxlIG9yCi0gICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBuYW1lcyB0aGF0IGNvbnRhaW4gc3BhY2VzLgotICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRoYXQgdGhlIFNvdXJjZSBEaXJlY3RvcnkgeW91IHVzZSBkb2VzIG5vdCBjb250YWluCi0gICAgICAgICAgICAgICAgICAgIHRoZXNlIHR5cGVzIG9mIG5hbWVzLgotICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5UaGUgU291cmNlIERpcmVjdG9yeSBjb250YWlucyBCaXRCYWtlLCBEb2N1bWVudGF0aW9uLAotICAgICAgICAgICAgICAgIE1ldGFkYXRhIGFuZCBvdGhlciBmaWxlcyB0aGF0IGFsbCBzdXBwb3J0IHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IG11c3QgaGF2ZSB0aGUgU291cmNlIERpcmVjdG9yeSBpbiBwbGFjZSBvbgotICAgICAgICAgICAgICAgIHlvdXIgZGV2ZWxvcG1lbnQgc3lzdGVtIGluIG9yZGVyIHRvIGRvIGFueSBkZXZlbG9wbWVudCB1c2luZwotICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPldoZW4geW91IGNyZWF0ZSBhIGxvY2FsIGNvcHkgb2YgdGhlIEdpdCByZXBvc2l0b3J5LCB5b3UKLSAgICAgICAgICAgICAgICBjYW4gbmFtZSB0aGUgcmVwb3NpdG9yeSBhbnl0aGluZyB5b3UgbGlrZS4KLSAgICAgICAgICAgICAgICBUaHJvdWdob3V0IG11Y2ggb2YgdGhlIGRvY3VtZW50YXRpb24sICJwb2t5IgotICAgICAgICAgICAgICAgIGlzIHVzZWQgYXMgdGhlIG5hbWUgb2YgdGhlIHRvcC1sZXZlbCBmb2xkZXIgb2YgdGhlIGxvY2FsIGNvcHkgb2YKLSAgICAgICAgICAgICAgICB0aGUgcG9reSBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICBTbywgZm9yIGV4YW1wbGUsIGNsb25pbmcgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0Ci0gICAgICAgICAgICAgICAgcmVwb3NpdG9yeSByZXN1bHRzIGluIGEgbG9jYWwgR2l0IHJlcG9zaXRvcnkgd2hvc2UgdG9wLWxldmVsCi0gICAgICAgICAgICAgICAgZm9sZGVyIGlzIGFsc28gbmFtZWQgInBva3kiLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPldoaWxlIGl0IGlzIG5vdCByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgdGFyYmFsbCBleHBhbnNpb24KLSAgICAgICAgICAgICAgICB0byBzZXQgdXAgdGhlIFNvdXJjZSBEaXJlY3RvcnksIGlmIHlvdSBkbywgdGhlIHRvcC1sZXZlbAotICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBuYW1lIG9mIHRoZSBTb3VyY2UgRGlyZWN0b3J5IGlzIGRlcml2ZWQgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UgdGFyYmFsbC4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgZG93bmxvYWRpbmcgYW5kIHVucGFja2luZwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4mWU9DVE9fUE9LWV9UQVJCQUxMOzwvZmlsZW5hbWU+IHJlc3VsdHMgaW4gYQotICAgICAgICAgICAgICAgIFNvdXJjZSBEaXJlY3Rvcnkgd2hvc2Ugcm9vdCBmb2xkZXIgaXMgbmFtZWQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JllPQ1RPX1BPS1k7PC9maWxlbmFtZT4uPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+SXQgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlCi0gICAgICAgICAgICAgICAgU291cmNlIERpcmVjdG9yeSBjcmVhdGVkIGJ5IHVucGFja2luZyBhIHJlbGVhc2VkIHRhcmJhbGwgYXMKLSAgICAgICAgICAgICAgICBjb21wYXJlZCB0byBjbG9uaW5nCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3k8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICBXaGVuIHlvdSB1bnBhY2sgYSB0YXJiYWxsLCB5b3UgaGF2ZSBhbiBleGFjdCBjb3B5IG9mIHRoZSBmaWxlcwotICAgICAgICAgICAgICAgIGJhc2VkIG9uIHRoZSB0aW1lIG9mIHJlbGVhc2UgLSBhIGZpeGVkIHJlbGVhc2UgcG9pbnQuCi0gICAgICAgICAgICAgICAgQW55IGNoYW5nZXMgeW91IG1ha2UgdG8geW91ciBsb2NhbCBmaWxlcyBpbiB0aGUgU291cmNlIERpcmVjdG9yeQotICAgICAgICAgICAgICAgIGFyZSBvbiB0b3Agb2YgdGhlIHJlbGVhc2UgYW5kIHdpbGwgcmVtYWluIGxvY2FsIG9ubHkuCi0gICAgICAgICAgICAgICAgT24gdGhlIG90aGVyIGhhbmQsIHdoZW4geW91IGNsb25lIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnksIHlvdSBoYXZlIGFuIGFjdGl2ZSBkZXZlbG9wbWVudCByZXBvc2l0b3J5IHdpdGgKLSAgICAgICAgICAgICAgICBhY2Nlc3MgdG8gdGhlIHVwc3RyZWFtIHJlcG9zaXRvcnkncyBicmFuY2hlcyBhbmQgdGFncy4KLSAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIGFueSBsb2NhbCBjaGFuZ2VzIHlvdSBtYWtlIHRvIHRoZSBsb2NhbAotICAgICAgICAgICAgICAgIFNvdXJjZSBEaXJlY3RvcnkgY2FuIGJlIGxhdGVyIGFwcGxpZWQgdG8gYWN0aXZlIGRldmVsb3BtZW50Ci0gICAgICAgICAgICAgICAgYnJhbmNoZXMgb2YgdGhlIHVwc3RyZWFtIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0Ci0gICAgICAgICAgICAgICAgcmVwb3NpdG9yeS48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb25jZXB0cyByZWxhdGVkIHRvIEdpdAotICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcywgYnJhbmNoZXMsIGFuZCB0YWdzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlcG9zaXRvcmllcy10YWdzLWFuZC1icmFuY2hlcyc+UmVwb3NpdG9yaWVzLCBUYWdzLCBhbmQgQnJhbmNoZXM8L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlRhc2s6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBBIHVuaXQgb2YgZXhlY3V0aW9uIGZvciBCaXRCYWtlIChlLmcuCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWNvbXBpbGUnPjxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1mZXRjaCc+PGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYXRjaCc+PGZpbGVuYW1lPmRvX3BhdGNoPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgICAgIGFuZCBzbyBmb3J0aCkuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J3RvYXN0ZXItdGVybSc+PGVtcGhhc2lzPlRvYXN0ZXI6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBBIHdlYiBpbnRlcmZhY2UgdG8gdGhlIFlvY3RvIFByb2plY3QncwotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgQnVpbGQgU3lzdGVtPC9saW5rPi4KLSAgICAgICAgICAgICAgICBUaGUgaW50ZXJmYWNlIGVuYWJsZXMgeW91IHRvIGNvbmZpZ3VyZSBhbmQgcnVuIHlvdXIgYnVpbGRzLgotICAgICAgICAgICAgICAgIEluZm9ybWF0aW9uIGFib3V0IGJ1aWxkcyBpcyBjb2xsZWN0ZWQgYW5kIHN0b3JlZCBpbiBhIGRhdGFiYXNlLgotICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBUb2FzdGVyLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVE9BU1RfVVJMOyc+WW9jdG8gUHJvamVjdCBUb2FzdGVyIE1hbnVhbDwvdWxpbms+LgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5VcHN0cmVhbTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEEgcmVmZXJlbmNlIHRvIHNvdXJjZSBjb2RlIG9yIHJlcG9zaXRvcmllcwotICAgICAgICAgICAgICAgIHRoYXQgYXJlIG5vdCBsb2NhbCB0byB0aGUgZGV2ZWxvcG1lbnQgc3lzdGVtIGJ1dCBsb2NhdGVkIGluIGEKLSAgICAgICAgICAgICAgICBtYXN0ZXIgYXJlYSB0aGF0IGlzIGNvbnRyb2xsZWQgYnkgdGhlIG1haW50YWluZXIgb2YgdGhlIHNvdXJjZQotICAgICAgICAgICAgICAgIGNvZGUuCi0gICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGluIG9yZGVyIGZvciBhIGRldmVsb3BlciB0byB3b3JrIG9uIGEgcGFydGljdWxhcgotICAgICAgICAgICAgICAgIHBpZWNlIG9mIGNvZGUsIHRoZXkgbmVlZCB0byBmaXJzdCBnZXQgYSBjb3B5IG9mIGl0IGZyb20gYW4KLSAgICAgICAgICAgICAgICAidXBzdHJlYW0iIHNvdXJjZS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCi08L2NoYXB0ZXI+Ci08IS0tCi12aW06IGV4cGFuZHRhYiB0dz04MCB0cz00Ci0tLT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvbWlncmF0aW9uLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvbWlncmF0aW9uLnhtbAppbmRleCA4MTE1NzdiLi5iMDYwOTY4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL21pZ3JhdGlvbi54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9taWdyYXRpb24ueG1sCkBAIC0yOTMsNyArMjkzLDcgQEAKICAgICAgICAgICAgICAgICBGb3IgdGhlIHJlbWFpbmRlciwgeW91IGNhbiBub3cgZmluZCB0aGVtIGluIHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWV4dHJhczwvZmlsZW5hbWU+IHJlcG9zaXRvcnksIHdoaWNoIGlzIGluIHRoZQogICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC9saW5rPi4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPi4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogICAgIDwvc2VjdGlvbj4KQEAgLTQ0Miw3ICs0NDIsNyBAQAogICAgICAgICAgICAgYXQgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1jb3JlL2luaXQtaWZ1cGRvd248L2ZpbGVuYW1lPi4KICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIGFwcGVuZCBmaWxlcywgc2VlIHRoZQogICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5nLWJiYXBwZW5kLWZpbGVzJz5Vc2luZyAuYmJhcHBlbmQgRmlsZXM8L3VsaW5rPiIKLSAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC04NjYsMTAgKzg2Niw4IEBACiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfRkVBVFVSRVMnPjxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPjoKICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGUgdmFsdWUgb2YKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZFQVRVUkVTJz48ZmlsZW5hbWU+SU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgaXMgbm93IHZhbGlkYXRlZCB0byBlbnN1cmUgaW52YWxpZCBmZWF0dXJlIGl0ZW1zIGFyZSBub3QKLSAgICAgICAgICAgICAgICAgICAgYWRkZWQuCisgICAgICAgICAgICAgICAgICAgIFRoZSB2YWx1ZSBvZiA8ZmlsZW5hbWU+SU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPiBpcyBub3cKKyAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVkIHRvIGVuc3VyZSBpbnZhbGlkIGZlYXR1cmUgaXRlbXMgYXJlIG5vdCBhZGRlZC4KICAgICAgICAgICAgICAgICAgICAgU29tZSB1c2VycyBtaXN0YWtlbmx5IGFkZCBwYWNrYWdlIG5hbWVzIHRvIHRoaXMgdmFyaWFibGUKICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCBvZiB1c2luZwogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfSU5TVEFMTCc+PGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPjwvbGluaz4KQEAgLTEwMjIsOCArMTAyMCw4IEBACiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBCdWlsZCBIaXN0b3J5LCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWFpbnRhaW5pbmctYnVpbGQtb3V0cHV0LXF1YWxpdHknPk1haW50YWluaW5nIEJ1aWxkIE91dHB1dCBRdWFsaXR5PC9saW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWFpbnRhaW5pbmctYnVpbGQtb3V0cHV0LXF1YWxpdHknPk1haW50YWluaW5nIEJ1aWxkIE91dHB1dCBRdWFsaXR5PC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApAQCAtMTExNiw4ICsxMTE0LDggQEAKICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHMgcHJlLXJlbmFtZWQgcGFja2FnZSBuYW1lcy48L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jbGFzc2VzL3Jvb3Rmc19ycG08L2ZpbGVuYW1lPjogSW1wbGVtZW50Ci0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CQURfUkVDT01NRU5EQVRJT05TJz48ZmlsZW5hbWU+QkFEX1JFQ09NTUVOREFUSU9OUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICBmb3IgUlBNLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QkFEX1JFQ09NTUVOREFUSU9OUzwvZmlsZW5hbWU+IGZvciBSUE0uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnN5c3RlbWQ8L2ZpbGVuYW1lPjogUmVtb3ZlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zeXN0ZW1kX3VuaXRkaXI8L2ZpbGVuYW1lPiBpZgpAQCAtMTQ1Miw3ICsxNDUwLDcgQEAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBQYWNrYWdlIFRlc3RzIChwdGVzdCkgYXJlIGJ1aWx0IGJ1dCBub3QgaW5zdGFsbGVkIGJ5IGRlZmF1bHQuCiAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdXNpbmcgUGFja2FnZSBUZXN0cywgc2VlIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3Rlc3RpbmctcGFja2FnZXMtd2l0aC1wdGVzdCc+U2V0dGluZyB1cCBhbmQgcnVubmluZyBwYWNrYWdlIHRlc3QgKHB0ZXN0KTwvdWxpbms+IgorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3Rlc3RpbmctcGFja2FnZXMtd2l0aC1wdGVzdCc+VGVzdGluZyBQYWNrYWdlcyB3aXRoIHB0ZXN0PC91bGluaz4iCiAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgPGZpbGVuYW1lPnB0ZXN0PC9maWxlbmFtZT4gY2xhc3MsIHNlZSB0aGUKICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1wdGVzdCc+PGZpbGVuYW1lPnB0ZXN0LmJiY2xhc3M8L2ZpbGVuYW1lPjwvbGluaz4iCkBAIC0xNzQ4LDggKzE3NDYsOCBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgVGhlIG1pbmltdW0KLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dpdCc+R2l0PC9saW5rPiB2ZXJzaW9uIHJlcXVpcmVkCi0gICAgICAgICAgICBvbiB0aGUgYnVpbGQgaG9zdCBpcyBub3cgMS43LjggYmVjYXVzZSB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiB2ZXJzaW9uCisgICAgICAgICAgICByZXF1aXJlZCBvbiB0aGUgYnVpbGQgaG9zdCBpcyBub3cgMS43LjggYmVjYXVzZSB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT4tLWxpc3Q8L2ZpbGVuYW1lPiBvcHRpb24gaXMgbm93IHJlcXVpcmVkIGJ5CiAgICAgICAgICAgICBCaXRCYWtlJ3MgR2l0IGZldGNoZXIuCiAgICAgICAgICAgICBBcyBhbHdheXMsIGlmIHlvdXIgaG9zdCBkaXN0cmlidXRpb24gZG9lcyBub3QgcHJvdmlkZSBhIHZlcnNpb24gb2YKQEAgLTE5MDksMTQgKzE5MDcsNiBAQAogICAgICAgICAgICAgZm9yIHdoaWNoIDxmaWxlbmFtZT5tb2R1bGVfY29uZl8qPC9maWxlbmFtZT4gaXMgc3BlY2lmaWVkIHRvCiAgICAgICAgICAgICA8ZmlsZW5hbWU+S0VSTkVMX01PRFVMRV9QUk9CRUNPTkY8L2ZpbGVuYW1lPi4KICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1LRVJORUxfTU9EVUxFX0FVVE9MT0FEJz48ZmlsZW5hbWU+S0VSTkVMX01PRFVMRV9BVVRPTE9BRDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItS0VSTkVMX01PRFVMRV9QUk9CRUNPTkYnPjxmaWxlbmFtZT5LRVJORUxfTU9EVUxFX1BST0JFQ09ORjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgdmFyaWFibGVzLgotICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCiAgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0xLjctcWEtY2hlY2stY2hhbmdlcyc+CkBAIC0yMDI2LDggKzIwMTYsOCBAQAogICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIG1hbnVhbGx5IHJlbW92ZSBvbGQgImJ1aWxkLWlkIiBmaWxlcyBmcm9tIHlvdXIKICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgYnVpbGQgaGlzdG9yeSByZXBvc2l0b3JpZXMgdG8gYXZvaWQgY29uZnVzaW9uLgogICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlIGJ1aWxkIGhpc3RvcnkgZmVhdHVyZSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWFpbnRhaW5pbmctYnVpbGQtb3V0cHV0LXF1YWxpdHknPk1haW50YWluaW5nIEJ1aWxkIE91dHB1dCBRdWFsaXR5PC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLWJ1aWxkLW91dHB1dC1xdWFsaXR5Jz5NYWludGFpbmluZyBCdWlsZCBPdXRwdXQgUXVhbGl0eTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgPC9wYXJhPgpAQCAtMzAzNyw3ICszMDI3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgYWN0aXZlbHkgbWFpbnRhaW5lZC4KICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVE9BU1RfVVJMOyN1c2luZy10aGUtdG9hc3Rlci13ZWItaW50ZXJmYWNlJz5Vc2luZyB0aGUgVG9hc3RlciBXZWIgSW50ZXJmYWNlPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgVG9hc3RlciBVc2VyIE1hbnVhbCBmb3IgbW9yZQorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBUb2FzdGVyIFVzZXIgTWFudWFsIGZvciBtb3JlCiAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIG9uIHRoaXMgaW50ZXJmYWNlLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJwdWNjaG8iIEJpdEJha2UgVUk8L2VtcGhhc2lzPjoKQEAgLTMwNTcsNyArMzA0Nyw4IEBACiAgICAgICAgICAgICBhbmQgdGhlCiAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstZXh0ZW5zaWJsZSc+ZXh0ZW5zaWJsZSBTREs8L3VsaW5rPi4KICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGVzZSBTREtzIGFuZCBob3cgdG8gYnVpbGQgYW5kIHVzZSB0aGVtLCBzZWUgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstaW50cm8nPllvY3RvIFByb2plY3QgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChTREspIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4uCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvdWxpbms+CisgICAgICAgICAgICBtYW51YWwuCiAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBFY2xpcHNlIElERSBQbHVnLWluIGlzIHN0aWxsIHN1cHBvcnRlZCBhbmQKICAgICAgICAgICAgICAgICBpcyBub3QgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UuCkBAIC00MDM4LDcgKzQwMjksNyBAQAogICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgYW4gZXhhbXBsZSwgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGl4YnVmY2FjaGU8L2ZpbGVuYW1lPiBjbGFzcyBpbgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzLzwvZmlsZW5hbWU+IGluIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L2xpbms+LgorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NvdXJjZS1yZXBvc2l0b3JpZXMnPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlNTVEFURVBPU1RJTlNURlVOQ1M8L2ZpbGVuYW1lPiB2YXJpYWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgaXRzZWxmIGlzIG5vdyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHRoZQpAQCAtNDI1MSw4ICs0MjQyLDggQEAKIAogICAgICAgICAgICAgICAgICAgICA8cGFyYT5TZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3N2bi1mZXRjaGVyJz5TdWJ2ZXJzaW9uIChTVk4pIEZldGNoZXIgKHN2bjovLyk8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCaXRCYWtlIFVzZXIgTWFudWFsIGZvcgotICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsIGZvciBhZGRpdGlvbmFsCisgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+QkJfU0VUU0NFTkVfVkVSSUZZX0ZVTkNUSU9OPC9maWxlbmFtZT4KQEAgLTQ2MjUsOCArNDYxNiw3IEBACiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlVTRV9MRENPTkZJRzwvZmlsZW5hbWU+IHZhcmlhYmxlIGhhcyBiZWVuCiAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VkIHdpdGggdGhlICJsZGNvbmZpZyIKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURJU1RST19GRUFUVVJFUyc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICBmZWF0dXJlLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT4gZmVhdHVyZS4KICAgICAgICAgICAgICAgICAgICAgRGlzdHJpYnV0aW9ucyB0aGF0IHByZXZpb3VzbHkgc2V0OgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIFVTRV9MRENPTkZJRyA9ICIwIgpAQCAtNDY4NSw5ICs0Njc1LDkgQEAKICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICBBbGwgbmF0aXZlIGFuZCBuYXRpdmVzZGsgcmVjaXBlcyBub3cgdXNlIGEgc2VwYXJhdGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURJU1RST19GRUFUVVJFUyc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICB2YWx1ZSBpbnN0ZWFkIG9mIHNoYXJpbmcgdGhlIHZhbHVlIHVzZWQgYnkgcmVjaXBlcyBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgIHRhcmdldCwgaW4gb3JkZXIgdG8gYXZvaWQgdW5uZWNlc3NhcnkgcmVidWlsZHMuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT4gdmFsdWUgaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgICAgICBzaGFyaW5nIHRoZSB2YWx1ZSB1c2VkIGJ5IHJlY2lwZXMgZm9yIHRoZSB0YXJnZXQsIGluIG9yZGVyCisgICAgICAgICAgICAgICAgICAgIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHJlYnVpbGRzLjwvcGFyYT4KIAogICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgPGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+IGZvcgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bmF0aXZlPC9maWxlbmFtZT4gcmVjaXBlcyBpcwpAQCAtNDczOCw5ICs0NzI4LDkgQEAKICAgICAgICAgICAgIHJlcGxhY2luZyBpdHMgcHJldmlvdXMgIm1lbW9yeSByZXNpZGVudCBtb2RlIiAoaS5lLgogICAgICAgICAgICAgPGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52LW1lbXJlczwvZmlsZW5hbWU+KS4KICAgICAgICAgICAgIE5vdyB5b3Ugb25seSBuZWVkIHRvIHNldAotICAgICAgICAgICAgPGZpbGVuYW1lPkJCX1NFUlZFUl9USU1FT1VUPC9maWxlbmFtZT4gdG8gYSB0aW1lb3V0Ci0gICAgICAgICAgICAoaW4gc2Vjb25kcykgYW5kIEJpdEJha2UncyBzZXJ2ZXIgc3RheXMgcmVzaWRlbnQgZm9yIHRoYXQKLSAgICAgICAgICAgIGFtb3VudCBvZiB0aW1lIGJldHdlZW4gaW52b2NhdGlvbnMuCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQkJfU0VSVkVSX1RJTUVPVVQnPjxmaWxlbmFtZT5CQl9TRVJWRVJfVElNRU9VVDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdG8gYSB0aW1lb3V0IChpbiBzZWNvbmRzKSBhbmQgQml0QmFrZSdzIHNlcnZlciBzdGF5cyByZXNpZGVudCBmb3IKKyAgICAgICAgICAgIHRoYXQgYW1vdW50IG9mIHRpbWUgYmV0d2VlbiBpbnZvY2F0aW9ucy4KICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzPC9maWxlbmFtZT4gc2NyaXB0IGhhcyBiZWVuCiAgICAgICAgICAgICByZW1vdmVkIHNpbmNlIGEgc2VwYXJhdGUgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IGlzIG5vIGxvbmdlcgogICAgICAgICAgICAgbmVlZGVkLgpAQCAtNDgwNSw3ICs0Nzk1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUkRFUEVORFMnPjxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgPGZpbGVuYW1lPnV0aWwtbGludXgtc3U8L2ZpbGVuYW1lPiBwYWNrYWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiAicGFtIiBpcyBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVMnPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+c3dpdGNoX3Jvb3Q8L2ZpbGVuYW1lPiBwcm9ncmFtIGlzIG5vdwpAQCAtNDgyNCw3ICs0ODE0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlZCBpbiBhIHNlcGFyYXRlICJ1dGlsLWxpbnV4LWlvbmljZSIgcGFja2FnZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbWFpbiA8ZmlsZW5hbWU+dXRpbC1saW51eDwvZmlsZW5hbWU+IHBhY2thZ2UgaGFzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSByZWNvbW1lbmRlZCBydW50aW1lIGRlcGVuZGVuY3kgKGkuZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUlJFQ09NTUVORFMnPjxmaWxlbmFtZT5SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC9saW5rPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UlJFQ09NTUVORFM8L2ZpbGVuYW1lPikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgPGZpbGVuYW1lPnV0aWwtbGludXgtaW9uaWNlPC9maWxlbmFtZT4gcGFja2FnZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CkBAIC00ODM5LDE4ICs0ODI5LDE1IEBACiAgICAgICAgICAgICAgICAgICAgIFRoZSBjaGFuZ2UgYWxzbyBlbGltaW5hdGVzIG5lZWRpbmcgdG8gcHVsbCBpbiB0aGUgZW50aXJlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbml0c2NyaXB0czwvZmlsZW5hbWU+IHBhY2thZ2UuCiAgICAgICAgICAgICAgICAgICAgIFRoZSBtYWluIDxmaWxlbmFtZT5pbml0c2NyaXB0czwvZmlsZW5hbWU+IHBhY2thZ2UgaGFzIGEKLSAgICAgICAgICAgICAgICAgICAgcnVudGltZSBkZXBlbmRlbmN5IChpLmUuCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SREVQRU5EUyc+PGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT48L2xpbms+KQorICAgICAgICAgICAgICAgICAgICBydW50aW1lIGRlcGVuZGVuY3kgKGkuZS4gPGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT4pCiAgICAgICAgICAgICAgICAgICAgIG9uIHRoZSA8ZmlsZW5hbWU+c3VzaGVsbDwvZmlsZW5hbWU+IHBhY2thZ2Ugd2hlbgotICAgICAgICAgICAgICAgICAgICAic2VsaW51eCIgaXMgaW4KLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURJU1RST19GRUFUVVJFUyc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgInNlbGludXgiIGlzIGluIDxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdsaWItMi4wPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5nbGliLTIuMDwvZmlsZW5hbWU+IHBhY2thZ2Ugbm93IGhhcyBhCiAgICAgICAgICAgICAgICAgICAgIHJlY29tbWVuZGVkIHJ1bnRpbWUgZGVwZW5kZW5jeSAoaS5lLgotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUlJFQ09NTUVORFMnPjxmaWxlbmFtZT5SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC9saW5rPikKLSAgICAgICAgICAgICAgICAgICAgb24gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SUkVDT01NRU5EUzwvZmlsZW5hbWU+KSBvbiB0aGUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNoYXJlZC1taW1lLWluZm88L2ZpbGVuYW1lPiBwYWNrYWdlLCBzaW5jZSBsYXJnZQogICAgICAgICAgICAgICAgICAgICBwb3J0aW9ucyBvZiBHSU8gYXJlIG5vdCB1c2VmdWwgd2l0aG91dCB0aGUgTUlNRSBkYXRhYmFzZS4KICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiByZW1vdmUgdGhlIGRlcGVuZGVuY3kgYnkgdXNpbmcgdGhlCkBAIC01MDQ1LDcgKzUwMzIsOCBAQAogICAgICAgICAgICAgS2VybmVsIERldmljZSBUcmVlIHN1cHBvcnQgaXMgbm93IGVhc2llciB0byBlbmFibGUgaW4gYSBrZXJuZWwKICAgICAgICAgICAgIHJlY2lwZS4KICAgICAgICAgICAgIFRoZSBEZXZpY2UgVHJlZSBjb2RlIGhhcyBtb3ZlZCB0byBhCi0gICAgICAgICAgICA8ZmlsZW5hbWU+a2VybmVsLWRldmljZXRyZWU8L2ZpbGVuYW1lPiBjbGFzcy4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWtlcm5lbC1kZXZpY2V0cmVlJz48ZmlsZW5hbWU+a2VybmVsLWRldmljZXRyZWU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIGNsYXNzLgogICAgICAgICAgICAgRnVuY3Rpb25hbGl0eSBpcyBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgZm9yIGFueSByZWNpcGUgdGhhdCBpbmhlcml0cwogICAgICAgICAgICAgdGhlCiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1rZXJuZWwnPjxmaWxlbmFtZT5rZXJuZWw8L2ZpbGVuYW1lPjwvbGluaz4KQEAgLTUxNzcsMTMgKzUxNjUsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgbXVsdGljb25maWcgaXMgZW5hYmxlZCAob25lIHBlciBjb25maWd1cmF0aW9uKS4KICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjZXZlbnRzJz5FdmVudHM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgaW4gdGhlIEJpdEJha2UgVXNlciBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIEJpdEJha2UgVXNlciBNYW51YWwuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIDxmaWxlbmFtZT5zZWN1cml0eV9mbGFncy5pbmM8L2ZpbGVuYW1lPiBmaWxlCi0gICAgICAgICAgICAgICAgICAgIHNldHMgYSA8ZmlsZW5hbWU+R0NDUElFPC9maWxlbmFtZT4gdmFyaWFibGUgd2l0aCBhbiBvcHRpb24KLSAgICAgICAgICAgICAgICAgICAgdG8gZW5hYmxlIFBvc2l0aW9uIEluZGVwZW5kZW50IEV4ZWN1dGFibGVzIChQSUUpIHdpdGhpbgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIHNldHMgYQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItR0NDUElFJz48ZmlsZW5hbWU+R0NDUElFPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHdpdGggYW4gb3B0aW9uIHRvIGVuYWJsZSBQb3NpdGlvbiBJbmRlcGVuZGVudAorICAgICAgICAgICAgICAgICAgICBFeGVjdXRhYmxlcyAoUElFKSB3aXRoaW4gPGZpbGVuYW1lPmdjYzwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICBFbmFibGluZyBQSUUgaW4gdGhlIEdOVSBDIENvbXBpbGVyIChHQ0MpLCBtYWtlcyBSZXR1cm4KICAgICAgICAgICAgICAgICAgICAgT3JpZW50ZWQgUHJvZ3JhbW1pbmcgKFJPUCkgYXR0YWNrcyBtdWNoIG1vcmUgZGlmZmljdWx0IHRvCiAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGUuCkBAIC01MjM4LDYgKzUyMjcsNDU3IEBACiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiA8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSdtb3ZpbmctdG8tdGhlLXlvY3RvLXByb2plY3QtMi41LXJlbGVhc2UnPgorICAgIDx0aXRsZT5Nb3ZpbmcgdG8gdGhlIFlvY3RvIFByb2plY3QgMi41IFJlbGVhc2U8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBtaWdyYXRpb24gaW5mb3JtYXRpb24gZm9yIG1vdmluZyB0byB0aGUKKyAgICAgICAgWW9jdG8gUHJvamVjdCAyLjUgUmVsZWFzZSBmcm9tIHRoZSBwcmlvciByZWxlYXNlLgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi41LXBhY2thZ2luZy1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPlBhY2thZ2luZyBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCBwYWNrYWdpbmcgY2hhbmdlcyB0aGF0IGhhdmUKKyAgICAgICAgICAgIG9jY3VycmVkOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+YmluZC1saWJzPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxpYnJhcmllcyBwYWNrYWdlZCBieSB0aGUgYmluZCByZWNpcGUgYXJlIGluIGEKKyAgICAgICAgICAgICAgICAgICAgc2VwYXJhdGUgPGZpbGVuYW1lPmJpbmQtbGliczwvZmlsZW5hbWU+IHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5saWJmbS1ndGs8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmxpYmZtPC9maWxlbmFtZT4gR1RLKyBiaW5kaW5ncyBhcmUgc3BsaXQgaW50bworICAgICAgICAgICAgICAgICAgICBhIHNlcGFyYXRlIDxmaWxlbmFtZT5saWJmbS1ndGs8L2ZpbGVuYW1lPiBwYWNrYWdlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+ZmxleC1saWJmbDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmbGV4IHJlY2lwZSBzcGxpdHMgb3V0IGxpYmZsIGludG8gYSBzZXBhcmF0ZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZmxleC1saWJmbDwvZmlsZW5hbWU+IHBhY2thZ2UgdG8gYXZvaWQgdG9vIG1hbnkKKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzIGJlaW5nIHB1bGxlZCBpbiB3aGVyZSBvbmx5IHRoZSBsaWJyYXJ5IGlzCisgICAgICAgICAgICAgICAgICAgIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdydWItZWZpPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5ncnViLWVmaTwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gaXMgc3BsaXQKKyAgICAgICAgICAgICAgICAgICAgaW50byBhIHNlcGFyYXRlIDxmaWxlbmFtZT5ncnViLWJvb3Rjb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgZGVwZW5kZW5jeSByZWxhdGlvbnNoaXAgZnJvbQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3J1Yi1lZmk8L2ZpbGVuYW1lPiBpcyB0aHJvdWdoIGEKKyAgICAgICAgICAgICAgICAgICAgdmlydHVhbC9ncnViLWJvb3Rjb25mIHByb3ZpZGVyIG1ha2luZyBpdCBwb3NzaWJsZSB0byBoYXZlCisgICAgICAgICAgICAgICAgICAgIHlvdXIgb3duIHJlY2lwZSBwcm92aWRlIHRoZSBkZXBlbmRlbmN5LgorICAgICAgICAgICAgICAgICAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSBhIEJpdEJha2UgYXBwZW5kIGZpbGUgdG8gYnJpbmcKKyAgICAgICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gYmFjayBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3J1Yi1lZmk8L2ZpbGVuYW1lPiByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPmFybXY3YSBMZWdhY3kgUGFja2FnZSBGZWVkIFN1cHBvcnQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgTGVnYWN5IHN1cHBvcnQgaXMgcmVtb3ZlZCBmb3IgdHJhbnNpdGlvbmluZyBmcm9tCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hcm12N2E8L2ZpbGVuYW1lPiB0bworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXJtdjdhLXZmcC1uZW9uPC9maWxlbmFtZT4gaW4gcGFja2FnZSBmZWVkcywKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggd2FzIHByZXZpb3VzbHkgZW5hYmxlZCBieSBzZXR0aW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QS0dBUkNIQ09NUEFUX0FSTVY3QTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaGlzIHRyYW5zaXRpb24gb2NjdXJyZWQgaW4gMjAxMSBhbmQgYWN0aXZlIHBhY2thZ2UgZmVlZHMKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJ5IG5vdyBiZSB1cGRhdGVkIHRvIHRoZSBuZXcgbmFtaW5nLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjUtcmVtb3ZlZC1yZWNpcGVzJz4KKyAgICAgICAgPHRpdGxlPlJlbW92ZWQgUmVjaXBlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHJlY2lwZXMgaGF2ZSBiZWVuIHJlbW92ZWQ6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5nY2M8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgdmVyc2lvbiA2LjQgcmVjaXBlcyBhcmUgcmVwbGFjZWQgYnkgNy54LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z3N0LXBsYXllcjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFJlbmFtZWQgdG8gPGZpbGVuYW1lPmdzdC1leGFtcGxlczwvZmlsZW5hbWU+IGFzIHBlcgorICAgICAgICAgICAgICAgICAgICB1cHN0cmVhbS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmhvc3RhcC11dGlsczwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgc29mdHdhcmUgcGFja2FnZSBpcyBvYnNvbGV0ZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmxhdGVuY3l0b3A8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSBpcyBubyBsb25nZXIgbWFpbnRhaW5lZCB1cHN0cmVhbS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxhc3QgcmVsZWFzZSB3YXMgaW4gMjAwOS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmxpYnBmbTQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgb25seSBmaWxlIHRoYXQgcmVxdWlyZXMgdGhpcyByZWNpcGUgaXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9wcm9maWxlPC9maWxlbmFtZT4sIHdoaWNoIGhhcyBiZWVuIHJlbW92ZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5saW51eC15b2N0bzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSB2ZXJzaW9uIDQuNCwgNC45LCBhbmQgNC4xMCByZWNpcGVzIGhhdmUgYmVlbiByZW1vdmVkLgorICAgICAgICAgICAgICAgICAgICBWZXJzaW9ucyA0LjEyLCA0LjE0LCBhbmQgNC4xNSByZW1haW4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5tYW48L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSBoYXMgYmVlbiByZXBsYWNlZCBieSBtb2Rlcm4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1hbi1kYjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5ta2VsZmltYWdlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB0b29sIGhhcyBiZWVuIHJlbW92ZWQgaW4gdGhlIHVwc3RyZWFtIGNvcmVib290IHByb2plY3QsCisgICAgICAgICAgICAgICAgICAgIGFuZCBpcyBubyBsb25nZXIgbmVlZGVkIHdpdGggdGhlIHJlbW92YWwgb2YgdGhlIEVMRiBpbWFnZQorICAgICAgICAgICAgICAgICAgICB0eXBlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bmF0aXZlc2RrLXBvc3RpbnN0LWludGVyY2VwdDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVjaXBlIGlzIG5vdCBtYWludGFpbmVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bmVvbjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgc29mdHdhcmUgcGFja2FnZSBpcyBubyBsb25nZXIgbWFpbnRhaW5lZCB1cHN0cmVhbSBhbmQKKyAgICAgICAgICAgICAgICAgICAgaXMgbm8gbG9uZ2VyIG5lZWRlZCBieSBhbnl0aGluZyBpbiBPcGVuRW1iZWRkZWQtQ29yZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPm9wcm9maWxlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhpcyByZWNpcGUgaXMgcmVwbGFjZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBlcmY8L2ZpbGVuYW1lPiBhbmQga2VlcGluZyBjb21wYXRpYmlsaXR5IG9uCisgICAgICAgICAgICAgICAgICAgIGFuIG9uZ29pbmcgYmFzaXMgd2l0aCA8ZmlsZW5hbWU+bXVzbDwvZmlsZW5hbWU+IGlzCisgICAgICAgICAgICAgICAgICAgIGRpZmZpY3VsdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnBheDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgc29mdHdhcmUgcGFja2FnZSBpcyBvYnNvbGV0ZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnN0YXQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHNvZnR3YXJlIHBhY2thZ2UgaXMgbm90IG1haW50YWluZWQgdXBzdHJlYW0uCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JldXRpbHM8L2ZpbGVuYW1lPiBwcm92aWRlcyBhIG1vZGVybiBzdGF0IGJpbmFyeS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnppc29mcy10b29scy1uYXRpdmU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIHJlY2lwZSBpcyBubyBsb25nZXIgbmVlZGVkIGJlY2F1c2UgdGhlIGNvbXByZXNzZWQKKyAgICAgICAgICAgICAgICAgICAgSVNPIGltYWdlIGZlYXR1cmUgaGFzIGJlZW4gcmVtb3ZlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi41LXNjcmlwdHMtYW5kLXRvb2xzLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+U2NyaXB0cyBhbmQgVG9vbHMgQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGFyZSBjaGFuZ2VzIHRvIHNjcmlwdHMgYW5kIHRvb2xzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+eW9jdG8tYnNwPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWw8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1sYXllcjwvZmlsZW5hbWU+PC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+eW9jdG8tYnNwPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1rZXJuZWw8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0by1sYXllcjwvZmlsZW5hbWU+IHNjcmlwdHMgcHJldmlvdXNseSBzaGlwcGVkCisgICAgICAgICAgICAgICAgICAgIHdpdGggcG9reSBidXQgbm90IGluIE9wZW5FbWJlZGRlZC1Db3JlIGhhdmUgYmVlbiByZW1vdmVkLgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBzY3JpcHRzIGFyZSBub3QgbWFpbnRhaW5lZCBhbmQgYXJlIG91dGRhdGVkLgorICAgICAgICAgICAgICAgICAgICBJbiBtYW55IGNhc2VzLCB0aGV5IGFyZSBhbHNvIGxpbWl0ZWQgaW4gc2NvcGUuCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Yml0YmFrZS1sYXllcnMgY3JlYXRlLWxheWVyPC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgICAgICAgICBpcyBhIGRpcmVjdCByZXBsYWNlbWVudCBmb3IgPGZpbGVuYW1lPnlvY3RvLWxheWVyPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiB0byBjcmVhdGUgYSBCU1Agb3Iga2VybmVsIHJlY2lwZSBpbgorICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1rZXJuZWwtcmVjaXBlLWV4YW1wbGUnPkJTUCBLZXJuZWwgUmVjaXBlIEV4YW1wbGU8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kZXZ0b29sIGZpbmlzaDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGZpbmlzaDwvZmlsZW5hbWU+IG5vdyBleGl0cyB3aXRoIGFuIGVycm9yCisgICAgICAgICAgICAgICAgICAgIGlmIHRoZXJlIGFyZSB1bmNvbW1pdHRlZCBjaGFuZ2VzIG9yIGEgcmViYXNlL2FtIGluIHByb2dyZXNzCisgICAgICAgICAgICAgICAgICAgIGluIHRoZSByZWNpcGUncyBzb3VyY2UgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgSWYgdGhpcyBlcnJvciBvY2N1cnMsIHRoZXJlIG1pZ2h0IGJlIHVuY29tbWl0dGVkIGNoYW5nZXMKKyAgICAgICAgICAgICAgICAgICAgdGhhdCB3aWxsIG5vdCBiZSBpbmNsdWRlZCBpbiB1cGRhdGVzIHRvIHRoZSBwYXRjaGVzIGFwcGxpZWQKKyAgICAgICAgICAgICAgICAgICAgYnkgdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgQSAtZi8tLWZvcmNlIG9wdGlvbiBpcyBwcm92aWRlZCBmb3Igc2l0dWF0aW9ucyB0aGF0IHRoZQorICAgICAgICAgICAgICAgICAgICB1bmNvbW1pdHRlZCBjaGFuZ2VzIGFyZSBpbmNvbnNlcXVlbnRpYWwgYW5kIHlvdSB3YW50IHRvCisgICAgICAgICAgICAgICAgICAgIHByb2NlZWQgcmVnYXJkbGVzcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnNjcmlwdHMvb2Utc2V0dXAtcnBtcmVwbzwvZmlsZW5hbWU+IHNjcmlwdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgZnVuY3Rpb25hbGl0eSBvZgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0cy9vZS1zZXR1cC1ycG1yZXBvPC9maWxlbmFtZT4gaXMgcmVwbGFjZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgcGFja2FnZS1pbmRleDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+c2NyaXB0cy90ZXN0LWRlcGVuZGVuY2llcy5zaDwvZmlsZW5hbWU+IHNjcmlwdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgc2NyaXB0IGlzIGxhcmdlbHkgbWFkZSBvYnNvbGV0ZSBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlLXNwZWNpZmljIHN5c3Jvb3RzIGZ1bmN0aW9uYWxpdHkgaW50cm9kdWNlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgcmVsZWFzZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi41LWJpdGJha2UtY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5CaXRCYWtlIENoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBhcmUgQml0QmFrZSBjaGFuZ2VzOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+LS1ydW5hbGw8L2ZpbGVuYW1lPiBvcHRpb24gaGFzIGNoYW5nZWQuCisgICAgICAgICAgICAgICAgICAgIFRoZXJlIGFyZSB0d28gZGlmZmVyZW50IGJlaGF2aW9ycyBwZW9wbGUgbWlnaHQgd2FudDoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QmVoYXZpb3IgQTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhIGdpdmVuIHRhcmdldCAob3Igc2V0IG9mIHRhcmdldHMpIGxvb2sgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0YXNrIGdyYXBoIGFuZCBydW4gdGFzayBYIG9ubHkgaWYgaXQgaXMgcHJlc2VudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB3aWxsIGJlIGJ1aWx0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CZWhhdmlvciBCOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGEgZ2l2ZW4gdGFyZ2V0IChvciBzZXQgb2YgdGFyZ2V0cykgbG9vayB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHRhc2sgZ3JhcGggYW5kIHJ1biB0YXNrIFggaWYgYW55IHJlY2lwZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrZ3JhcGggaGFzIHN1Y2ggYSB0YXJnZXQsIGV2ZW4gaWYgaXQgaXMgbm90IGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG9yaWdpbmFsIHRhc2sgZ3JhcGguCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPi0tcnVuYWxsPC9maWxlbmFtZT4gb3B0aW9uIG5vdyBwZXJmb3JtcworICAgICAgICAgICAgICAgICAgICAiQmVoYXZpb3IgQiIuCisgICAgICAgICAgICAgICAgICAgIFByZXZpb3VzbHkgPGZpbGVuYW1lPi0tcnVuYWxsPC9maWxlbmFtZT4gYmVoYXZlZCBsaWtlCisgICAgICAgICAgICAgICAgICAgICJCZWhhdmlvciBBIi4KKyAgICAgICAgICAgICAgICAgICAgQSA8ZmlsZW5hbWU+LS1ydW5vbmx5PC9maWxlbmFtZT4gb3B0aW9uIGhhcyBiZWVuIGFkZGVkIHRvCisgICAgICAgICAgICAgICAgICAgIHJldGFpbiB0aGUgYWJpbGl0eSB0byBwZXJmb3JtICJCZWhhdmlvciBBIi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTZXZlcmFsIGV4cGxpY2l0ICJydW4gdGhpcyB0YXNrIGZvciBhbGwgcmVjaXBlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jeSB0cmVlIiB0YXNrcyBoYXZlIGJlZW4gcmVtb3ZlZCAoZS5nLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZmV0Y2hhbGw8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNoZWNrdXJpYWxsPC9maWxlbmFtZT4sIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiphbGw8L2ZpbGVuYW1lPiB0YXNrcyBwcm92aWRlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRpc3Ryb2RhdGE8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmFyY2hpdmVyPC9maWxlbmFtZT4gY2xhc3NlcykuCisgICAgICAgICAgICAgICAgICAgIFRoZXJlIGlzIGEgQml0QmFrZSBvcHRpb24gdG8gY29tcGxldGUgdGhpcyBmb3IgYW55IGFyYml0cmFyeQorICAgICAgICAgICAgICAgICAgICB0YXNrLiBGb3IgZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBiaXRiYWtlICZsdDt0YXJnZXQmZ3Q7IC1jIGZldGNoYWxsCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkIG5vdyBiZSByZXBsYWNlZCB3aXRoOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGJpdGJha2UgJmx0O3RhcmdldCZndDsgLS1ydW5hbGw9ZmV0Y2gKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjUtcHl0aG9uLWFuZC1weXRob24zLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+UHl0aG9uIGFuZCBQeXRob24gMyBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgYXJlIGF1dG8tcGFja2FnaW5nIGNoYW5nZXMgdG8gUHl0aG9uIGFuZCBQeXRob24gMzoKKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBzY3JpcHQtbWFuYWdlZCA8ZmlsZW5hbWU+cHl0aG9uLSotbWFuaWZlc3QuaW5jPC9maWxlbmFtZT4gZmlsZXMKKyAgICAgICAgICAgIHRoYXQgd2VyZSBwcmV2aW91c2x5IHVzZWQgdG8gZ2VuZXJhdGUgUHl0aG9uIGFuZCBQeXRob24gMworICAgICAgICAgICAgcGFja2FnZXMgaGF2ZSBiZWVuIHJlcGxhY2VkIHdpdGggYSBKU09OLWJhc2VkIGZpbGUgdGhhdCBpcworICAgICAgICAgICAgZWFzaWVyIHRvIHJlYWQgYW5kIG1haW50YWluLgorICAgICAgICAgICAgQSBuZXcgdGFzayBpcyBhdmFpbGFibGUgZm9yIG1haW50YWluZXJzIG9mIHRoZSBQeXRob24gcmVjaXBlcyB0bworICAgICAgICAgICAgdXBkYXRlIHRoZSBKU09OIGZpbGUgd2hlbiB1cGdyYWRpbmcgdG8gbmV3IFB5dGhvbiB2ZXJzaW9ucy4KKyAgICAgICAgICAgIFlvdSBjYW4gbm93IGVkaXQgdGhlIGZpbGUgZGlyZWN0bHkgaW5zdGVhZCBvZiBoYXZpbmcgdG8gZWRpdCBhCisgICAgICAgICAgICBzY3JpcHQgYW5kIHJ1biBpdCB0byB1cGRhdGUgdGhlIGZpbGUuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBPbmUgcGFydGljdWxhciBjaGFuZ2UgdG8gbm90ZSBpcyB0aGF0IHRoZSBQeXRob24gcmVjaXBlcyBubyBsb25nZXIKKyAgICAgICAgICAgIGhhdmUgYnVpbGQtdGltZSBwcm92aWRlcyBmb3IgdGhlaXIgcGFja2FnZXMuCisgICAgICAgICAgICBUaGlzIGFzc3VtZXMgPGZpbGVuYW1lPnB5dGhvbi1mb288L2ZpbGVuYW1lPiBpcyBvbmUgb2YgdGhlIHBhY2thZ2VzCisgICAgICAgICAgICBwcm92aWRlZCBieSB0aGUgUHl0aG9uIHJlY2lwZS4KKyAgICAgICAgICAgIFlvdSBjYW4gbm8gbG9uZ2VyIHJ1biA8ZmlsZW5hbWU+Yml0YmFrZSBweXRob24tZm9vPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgIGhhdmUgYSA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+IG9uCisgICAgICAgICAgICA8ZmlsZW5hbWU+cHl0aG9uLWZvbzwvZmlsZW5hbWU+LCBidXQgZG9pbmcgZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgIGNhdXNlcyB0aGUgcGFja2FnZSB0byB3b3JrIGFzIGV4cGVjdGVkOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTUFHRV9JTlNUQUxMX2FwcGVuZCA9ICIgcHl0aG9uLWZvbyIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIG9yCisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFJERVBFTkRTXyR7UE59ID0gInB5dGhvbi1mb28iCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBUaGUgZWFybGllciBidWlsZC10aW1lIHByb3ZpZGVzIGJlaGF2aW9yIHdhcyBhIHF1aXJrIG9mIHRoZSB3YXkgdGhlCisgICAgICAgICAgICBQeXRob24gbWFuaWZlc3QgZmlsZSB3YXMgY3JlYXRlZC4KKyAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgY2hhbmdlIHBsZWFzZSBzZWUKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3Bva3kvY29tbWl0Lz9pZD04ZDk0YjlkYjIyMWQxZGVmNDJmMDkxYjk5MTkwM2ZhYTJkMTY1MWNlJz50aGlzIGNvbW1pdDwvdWxpbms+LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjUtbWlzY2VsbGFuZW91cy1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPk1pc2NlbGxhbmVvdXMgQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGFyZSBhZGRpdGlvbmFsIGNoYW5nZXM6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5rZXJuZWw8L2ZpbGVuYW1lPiBjbGFzcyBzdXBwb3J0cyBidWlsZGluZworICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBmb3IgbXVsdGlwbGUga2VybmVscy4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBrZXJuZWwgcmVjaXBlIG9yIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgIG1lbnRpb25zIHBhY2thZ2luZyBhdCBhbGwsIHlvdSBzaG91bGQgcmVwbGFjZSByZWZlcmVuY2VzIHRvCisgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgaW4gcGFja2FnZSBuYW1lcyB3aXRoCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke0tFUk5FTF9QQUNLQUdFX05BTUV9PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3UgZGlzYWJsZSBhdXRvbWF0aWMgaW5zdGFsbGF0aW9uIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBrZXJuZWwgaW1hZ2UgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlJERVBFTkRTX2tlcm5lbC1iYXNlID0gIiI8L2ZpbGVuYW1lPiB5b3UgY2FuIGF2b2lkCisgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SREVQRU5EU18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWJhc2UgPSAiIjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGluc3RlYWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5idWlsZGhpc3Rvcnk8L2ZpbGVuYW1lPiBjbGFzcyBjb21taXRzIGNoYW5nZXMKKyAgICAgICAgICAgICAgICAgICAgdG8gdGhlIHJlcG9zaXRvcnkgYnkgZGVmYXVsdCBzbyB5b3Ugbm8gbG9uZ2VyIG5lZWQgdG8gc2V0CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CVUlMREhJU1RPUllfQ09NTUlUID0gIjEiPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIGRpc2FibGUgY29tbWl0cyB5b3UgbmVlZCB0byBzZXQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJVSUxESElTVE9SWV9DT01NSVQgPSAiMCI8L2ZpbGVuYW1lPiBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5iZWFnbGVib25lPC9maWxlbmFtZT4gcmVmZXJlbmNlIG1hY2hpbmUgaGFzCisgICAgICAgICAgICAgICAgICAgIGJlZW4gcmVuYW1lZCB0byA8ZmlsZW5hbWU+YmVhZ2xlYm9uZS15b2N0bzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJlYWdsZWJvbmUteW9jdG88L2ZpbGVuYW1lPiBCU1AgaXMgYSByZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb24gdXNpbmcgb25seSBtYWlubGluZSBjb21wb25lbnRzIGF2YWlsYWJsZSBpbgorICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQtQ29yZSBhbmQgPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIHdoZXJlYXMgVGV4YXMgSW5zdHJ1bWVudHMgbWFpbnRhaW5zIGEgZnVsbC1mZWF0dXJlZCBCU1AgaW4KKyAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5tZXRhLXRpPC9maWxlbmFtZT4gbGF5ZXIuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVuYW1lIGF2b2lkcyB0aGUgcHJldmlvdXMgbmFtZSBjbGFzaCB0aGF0IGV4aXN0ZWQKKyAgICAgICAgICAgICAgICAgICAgYmV0d2VlbiB0aGUgdHdvIEJTUHMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT51cGRhdGUtYWx0ZXJuYXRpdmVzPC9maWxlbmFtZT4gY2xhc3Mgbm8gbG9uZ2VyCisgICAgICAgICAgICAgICAgICAgIHdvcmtzIHdpdGggU3lzViA8ZmlsZW5hbWU+aW5pdDwvZmlsZW5hbWU+IHNjcmlwdHMgYmVjYXVzZQorICAgICAgICAgICAgICAgICAgICB0aGlzIHVzYWdlIGhhcyBiZWVuIHByb2JsZW1hdGljLgorICAgICAgICAgICAgICAgICAgICBBbHNvLCB0aGUgPGZpbGVuYW1lPnN5c2tsb2dkPC9maWxlbmFtZT4gcmVjaXBlIG5vIGxvbmdlcgorICAgICAgICAgICAgICAgICAgICB1c2VzIDxmaWxlbmFtZT51cGRhdGUtYWx0ZXJuYXRpdmVzPC9maWxlbmFtZT4gYmVjYXVzZSBpdCBpcworICAgICAgICAgICAgICAgICAgICBpbmNvbXBhdGlibGUgd2l0aCBvdGhlciBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIDxmaWxlbmFtZT5jbWFrZTwvZmlsZW5hbWU+IGNsYXNzIHVzZXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5pbmphPC9maWxlbmFtZT4gaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGZvciBidWlsZGluZy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBpbXByb3ZlcyBidWlsZCBwZXJmb3JtYW5jZS4KKyAgICAgICAgICAgICAgICAgICAgSWYgYSByZWNpcGUgaXMgYnJva2VuIHdpdGggPGZpbGVuYW1lPm5pbmphPC9maWxlbmFtZT4sIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgdGhlIHJlY2lwZSBjYW4gc2V0CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5PRUNNQUtFX0dFTkVSQVRPUiA9ICJVbml4IE1ha2VmaWxlcyI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB0byBjaGFuZ2UgYmFjayB0byA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91c2x5IGRlcHJlY2F0ZWQgPGZpbGVuYW1lPmJhc2VfKjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucyBoYXZlIGJlZW4gcmVtb3ZlZCBpbiBmYXZvciBvZiB0aGVpciByZXBsYWNlbWVudHMKKyAgICAgICAgICAgICAgICAgICAgaW4gPGZpbGVuYW1lPm1ldGEvbGliL29lPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlL2xpYi9iYjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBhcmUgdHlwaWNhbGx5IHVzZWQgZnJvbSByZWNpcGVzIGFuZCBjbGFzc2VzLgorICAgICAgICAgICAgICAgICAgICBBbnkgcmVmZXJlbmNlcyB0byB0aGUgb2xkIGZ1bmN0aW9ucyBtdXN0IGJlIHVwZGF0ZWQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgdGFibGUgc2hvd3MgdGhlIHJlbW92ZWQgZnVuY3Rpb25zIGFuZCB0aGVpcgorICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudHM6CisKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICA8ZW1waGFzaXM+UmVtb3ZlZDwvZW1waGFzaXM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJlcGxhY2VtZW50PC9lbXBoYXNpcz4KKyAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgICAgICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgYmFzZV9wYXRoX2pvaW4oKSAgICAgICAgICAgICAgICAgICAgICAgIG9lLnBhdGguam9pbigpCisgICAgIGJhc2VfcGF0aF9yZWxhdGl2ZSgpICAgICAgICAgICAgICAgICAgICBvZS5wYXRoLnJlbGF0aXZlKCkKKyAgICAgYmFzZV9wYXRoX291dCgpICAgICAgICAgICAgICAgICAgICAgICAgIG9lLnBhdGguZm9ybWF0X2Rpc3BsYXkoKQorICAgICBiYXNlX3JlYWRfZmlsZSgpICAgICAgICAgICAgICAgICAgICAgICAgb2UudXRpbHMucmVhZF9maWxlKCkKKyAgICAgYmFzZV9pZmVsc2UoKSAgICAgICAgICAgICAgICAgICAgICAgICAgIG9lLnV0aWxzLmlmZWxzZSgpCisgICAgIGJhc2VfY29uZGl0aW9uYWwoKSAgICAgICAgICAgICAgICAgICAgICBvZS51dGlscy5jb25kaXRpb25hbCgpCisgICAgIGJhc2VfbGVzc19vcl9lcXVhbCgpICAgICAgICAgICAgICAgICAgICBvZS51dGlscy5sZXNzX29yX2VxdWFsKCkKKyAgICAgYmFzZV92ZXJzaW9uX2xlc3Nfb3JfZXF1YWwoKSAgICAgICAgICAgIG9lLnV0aWxzLnZlcnNpb25fbGVzc19vcl9lcXVhbCgpCisgICAgIGJhc2VfY29udGFpbnMoKSAgICAgICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5jb250YWlucygpCisgICAgIGJhc2VfYm90aF9jb250YWluKCkgICAgICAgICAgICAgICAgICAgICBvZS51dGlscy5ib3RoX2NvbnRhaW4oKQorICAgICBiYXNlX3BydW5lX3N1ZmZpeCgpICAgICAgICAgICAgICAgICAgICAgb2UudXRpbHMucHJ1bmVfc3VmZml4KCkKKyAgICAgb2VfZmlsdGVyKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9lLnV0aWxzLnN0cl9maWx0ZXIoKQorICAgICBvZV9maWx0ZXJfb3V0KCkgICAgICAgICAgICAgICAgICAgICAgICAgb2UudXRpbHMuc3RyX2ZpbHRlcl9vdXQoKSAob3IgdXNlIHRoZSBfcmVtb3ZlIG9wZXJhdG9yKS4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFVzaW5nIDxmaWxlbmFtZT5leGl0IDE8L2ZpbGVuYW1lPiB0byBleHBsaWNpdGx5IGRlZmVyIGEKKyAgICAgICAgICAgICAgICAgICAgcG9zdGluc3RhbGwgc2NyaXB0IHVudGlsIGZpcnN0IGJvb3QgaXMgbm93IGRlcHJlY2F0ZWQgc2luY2UKKyAgICAgICAgICAgICAgICAgICAgaXQgaXMgbm90IGFuIG9idmlvdXMgbWVjaGFuaXNtIGFuZCBjYW4gbWFzayBhY3R1YWwgZXJyb3JzLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBleHBsaWNpdGx5IGRlZmVyIGEgcG9zdGluc3RhbGwgdG8gZmlyc3QgYm9vdAorICAgICAgICAgICAgICAgICAgICBvbiB0aGUgdGFyZ2V0IHJhdGhlciB0aGFuIGF0IDxmaWxlbmFtZT5yb290ZnM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjcmVhdGlvbiB0aW1lLCB1c2UKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBrZ19wb3N0aW5zdF9vbnRhcmdldCgpPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgb3IgY2FsbAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9zdGluc3QtaW50ZXJjZXB0cyBkZWZlcl90b19maXJzdF9ib290PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZnJvbSA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0KCk8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgQW55IGZhaWx1cmUgb2YgYSA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0KCk8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBzY3JpcHQgKGluY2x1ZGluZyA8ZmlsZW5hbWU+ZXhpdCAxPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgIHdpbGwgdHJpZ2dlciBhIHdhcm5pbmcgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19yb290ZnM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmVsZjwvZmlsZW5hbWU+IGltYWdlIHR5cGUgaGFzIGJlZW4gcmVtb3ZlZC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBpbWFnZSB0eXBlIHdhcyByZW1vdmVkIGJlY2F1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ta2VsZmltYWdlPC9maWxlbmFtZT4gdG9vbAorICAgICAgICAgICAgICAgICAgICB0aGF0IHdhcyByZXF1aXJlZCB0byBjcmVhdGUgaXQgaXMgbm8gbG9uZ2VyIHByb3ZpZGVkIGJ5CisgICAgICAgICAgICAgICAgICAgIGNvcmVib290IHVwc3RyZWFtIGFuZCByZXF1aXJlZCB1cGRhdGluZyBldmVyeSB0aW1lCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaW51dGlsczwvZmlsZW5hbWU+IHVwZGF0ZWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU3VwcG9ydCBmb3IgLmlzbyBpbWFnZSBjb21wcmVzc2lvbiAocHJldmlvdXNseSBlbmFibGVkCisgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggPGZpbGVuYW1lPkNPTVBSRVNTSVNPID0gIjEiPC9maWxlbmFtZT4pIGhhcyBiZWVuCisgICAgICAgICAgICAgICAgICAgIHJlbW92ZWQuCisgICAgICAgICAgICAgICAgICAgIFRoZSB1c2Vyc3BhY2UgdG9vbHMgKDxmaWxlbmFtZT56aXNvZnMtdG9vbHM8L2ZpbGVuYW1lPikgYXJlCisgICAgICAgICAgICAgICAgICAgIHVubWFpbnRhaW5lZCBhbmQgPGZpbGVuYW1lPnNxdWFzaGZzPC9maWxlbmFtZT4gcHJvdmlkZXMKKyAgICAgICAgICAgICAgICAgICAgYmV0dGVyIHBlcmZvcm1hbmNlIGFuZCBjb21wcmVzc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gYnVpbGQgYSBsaXZlIGltYWdlIHdpdGggc3F1YXNoZnMrbHo0IGNvbXByZXNzaW9uCisgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQgeW91IHNob3VsZCBub3cgc2V0CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MSVZFX1JPT1RGU19UWVBFID0gInNxdWFzaGZzLWx6NCI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBhbmQgZW5zdXJlIHRoYXQgPGZpbGVuYW1lPmxpdmU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBpcyBpbiA8ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFJlY2lwZXMgd2l0aCBhbiB1bmNvbmRpdGlvbmFsIGRlcGVuZGVuY3kgb24KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYnBhbTwvZmlsZW5hbWU+IGFyZSBvbmx5IGJ1aWxkYWJsZSB3aXRoCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYW08L2ZpbGVuYW1lPiBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIElmIHRoZSBkZXBlbmRlbmN5IGlzIHRydWx5IG9wdGlvbmFsIHRoZW4gaXQgaXMgcmVjb21tZW5kZWQKKyAgICAgICAgICAgICAgICAgICAgdGhhdCB0aGUgZGVwZW5kZW5jeSBiZSBjb25kaXRpb25hbCB1cG9uCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYW08L2ZpbGVuYW1lPiBiZWluZyBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9yIEVGSS1iYXNlZCBtYWNoaW5lcywgdGhlIGJvb3Rsb2FkZXIKKyAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5ncnViLWVmaTwvZmlsZW5hbWU+IGJ5IGRlZmF1bHQpIGlzIGluc3RhbGxlZCBpbnRvCisgICAgICAgICAgICAgICAgICAgIHRoZSBpbWFnZSBhdCAvYm9vdC4KKyAgICAgICAgICAgICAgICAgICAgV2ljIGNhbiBiZSB1c2VkIHRvIHNwbGl0IHRoZSBib290bG9hZGVyIGludG8gc2VwYXJhdGUgYm9vdAorICAgICAgICAgICAgICAgICAgICBhbmQgcm9vdGZzIHBhcnRpdGlvbnMgaWYgbmVjZXNzYXJ5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFBhdGNoZXMgd2hvc2UgY29udGV4dCBkb2VzIG5vdCBtYXRjaCBleGFjdGx5IChpLmUuIHdoZXJlCisgICAgICAgICAgICAgICAgICAgIHBhdGNoIHJlcG9ydHMgImZ1enoiIHdoZW4gYXBwbHlpbmcpIHdpbGwgZ2VuZXJhdGUgYQorICAgICAgICAgICAgICAgICAgICB3YXJuaW5nLgorICAgICAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSBvZiB0aGlzIHNlZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5L2NvbW1pdC8/aWQ9Y2M5N2JjMDgxMjViNjM4MjFjZTNmNjE2NzcxODMwZjc3YzQ1NmY1Nyc+dGhpcyBjb21taXQ8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBMYXllcnMgYXJlIGV4cGVjdGVkIHRvIHNldAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TEFZRVJTRVJJRVNfQ09NUEFUX2xheWVybmFtZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHRvIG1hdGNoIHRoZSB2ZXJzaW9uKHMpIG9mIE9wZW5FbWJlZGRlZC1Db3JlIHRoZXkgYXJlCisgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgd2l0aC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBzcGVjaWZpZWQgYXMgY29kZW5hbWVzIHVzaW5nIHNwYWNlcyB0byBzZXBhcmF0ZQorICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSB2YWx1ZXMgKGUuZy4gInJvY2tvIHN1bW8iKS4KKyAgICAgICAgICAgICAgICAgICAgSWYgYSBsYXllciBkb2VzIG5vdCBzZXQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxBWUVSU0VSSUVTX0NPTVBBVF9sYXllcm5hbWU8L2ZpbGVuYW1lPiwgYSB3YXJuaW5nCisgICAgICAgICAgICAgICAgICAgIHdpbGwgaXMgc2hvd24uCisgICAgICAgICAgICAgICAgICAgIElmIGEgbGF5ZXIgc2V0cyBhIHZhbHVlIHRoYXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgY3VycmVudAorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uICgic3VtbyIgZm9yIHRoZSAyLjUgcmVsZWFzZSksIHRoZW4gYW4gZXJyb3Igd2lsbCBiZQorICAgICAgICAgICAgICAgICAgICBwcm9kdWNlZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlRaPC9maWxlbmFtZT4gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICJVVEMiIHdpdGhpbiB0aGUgYnVpbGQgZW52aXJvbm1lbnQgaW4gb3JkZXIgdG8gZml4CisgICAgICAgICAgICAgICAgICAgIHJlcHJvZHVjaWJpbGl0eSBwcm9ibGVtcyBpbiBzb21lIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+CiA8L2NoYXB0ZXI+CiA8IS0tCiB2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1iaXRiYWtlLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWJpdGJha2UueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2Y0YzU0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWJpdGJha2UueG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDc3ICswLDAgQEAKLTwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKLSJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCi1bPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+Ci0KLTxjaGFwdGVyIGlkPSdyZWYtYml0YmFrZSc+Ci0KLSAgICA8dGl0bGU+Qml0QmFrZTwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgQml0QmFrZSBpcyBhIHByb2dyYW0gd3JpdHRlbiBpbiBQeXRob24gdGhhdCBpbnRlcnByZXRzIHRoZQotICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YSc+TWV0YWRhdGE8L2xpbms+IHVzZWQgYnkKLSAgICAgICAgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCi0gICAgICAgIEF0IHNvbWUgcG9pbnQsIGRldmVsb3BlcnMgd29uZGVyIHdoYXQgYWN0dWFsbHkgaGFwcGVucyB3aGVuIHlvdSBlbnRlcjoKLSAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgY29yZS1pbWFnZS1zYXRvCi0gICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhpcyBjaGFwdGVyIHByb3ZpZGVzIGFuIG92ZXJ2aWV3IG9mIHdoYXQgaGFwcGVucyBiZWhpbmQgdGhlIHNjZW5lcyBmcm9tIEJpdEJha2UncyBwZXJzcGVjdGl2ZS4KLSAgICA8L3BhcmE+Ci0KLSAgICA8bm90ZT4KLSAgICAgICAgQml0QmFrZSBzdHJpdmVzIHRvIGJlIGEgZ2VuZXJpYyAidGFzayIgZXhlY3V0b3IgdGhhdCBpcyBjYXBhYmxlIG9mIGhhbmRsaW5nIGNvbXBsZXggZGVwZW5kZW5jeSByZWxhdGlvbnNoaXBzLgotICAgICAgICBBcyBzdWNoLCBpdCBoYXMgbm8gcmVhbCBrbm93bGVkZ2Ugb2Ygd2hhdCB0aGUgdGFza3MgYmVpbmcgZXhlY3V0ZWQgYWN0dWFsbHkgZG8uCi0gICAgICAgIEJpdEJha2UganVzdCBjb25zaWRlcnMgYSBsaXN0IG9mIHRhc2tzIHdpdGggZGVwZW5kZW5jaWVzIGFuZCBoYW5kbGVzCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4KLSAgICAgICAgY29uc2lzdGluZyBvZiB2YXJpYWJsZXMgaW4gYSBjZXJ0YWluIGZvcm1hdCB0aGF0IGdldCBwYXNzZWQgdG8gdGhlIHRhc2tzLgotICAgIDwvbm90ZT4KLQotICAgIDxzZWN0aW9uIGlkPSdyZWYtYml0YmFrZS1wYXJzaW5nJz4KLSAgICAgICAgPHRpdGxlPlBhcnNpbmc8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQml0QmFrZSBwYXJzZXMgY29uZmlndXJhdGlvbiBmaWxlcywgY2xhc3NlcywgYW5kIDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPiBmaWxlcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGZpcnN0IHRoaW5nIEJpdEJha2UgZG9lcyBpcyBsb29rIGZvciB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgVGhpcyBmaWxlIHJlc2lkZXMgaW4gdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgotICAgICAgICAgICAgd2l0aGluIHRoZSA8ZmlsZW5hbWU+bWV0YS9jb25mLzwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KLSAgICAgICAgICAgIEJpdEJha2UgZmluZHMgaXQgYnkgZXhhbWluaW5nIGl0cwotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCUEFUSCc+PGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+PC9saW5rPiBlbnZpcm9ubWVudAotICAgICAgICAgICAgdmFyaWFibGUgYW5kIGxvb2tpbmcgZm9yIHRoZSA8ZmlsZW5hbWU+bWV0YS9jb25mLzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBkaXJlY3RvcnkuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Yml0YmFrZS5jb25mPC9maWxlbmFtZT4gZmlsZSBsaXN0cyBvdGhlciBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICBmaWxlcyB0byBpbmNsdWRlIGZyb20gYSA8ZmlsZW5hbWU+Y29uZi88L2ZpbGVuYW1lPgotICAgICAgICAgICAgZGlyZWN0b3J5IGJlbG93IHRoZSBkaXJlY3RvcmllcyBsaXN0ZWQgaW4gPGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgSW4gZ2VuZXJhbCwgdGhlIG1vc3QgaW1wb3J0YW50IGNvbmZpZ3VyYXRpb24gZmlsZSBmcm9tIGEgdXNlcidzIHBlcnNwZWN0aXZlCi0gICAgICAgICAgICBpcyA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+LCB3aGljaCBjb250YWlucyBhIHVzZXIncyBjdXN0b21pemVkCi0gICAgICAgICAgICBzZXR0aW5ncyBmb3IgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBlbnZpcm9ubWVudC4KLSAgICAgICAgICAgIE90aGVyIG5vdGFibGUgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgdGhlIGRpc3RyaWJ1dGlvbgotICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIChzZXQgYnkgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLURJU1RSTyc+RElTVFJPPC9saW5rPjwvZmlsZW5hbWU+IHZhcmlhYmxlKQotICAgICAgICAgICAgYW5kIHRoZSBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gZmlsZQotICAgICAgICAgICAgKHNldCBieSB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItTUFDSElORSc+TUFDSElORTwvbGluaz48L2ZpbGVuYW1lPiB2YXJpYWJsZSkuCi0gICAgICAgICAgICBUaGUgPGZpbGVuYW1lPkRJU1RSTzwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+IEJpdEJha2UgZW52aXJvbm1lbnQKLSAgICAgICAgICAgIHZhcmlhYmxlcyBhcmUgYm90aCB1c3VhbGx5IHNldCBpbgotICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZS4KLSAgICAgICAgICAgIFZhbGlkIGRpc3RyaWJ1dGlvbgotICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgYXZhaWxhYmxlIGluIHRoZSA8ZmlsZW5hbWU+bWV0YS9jb25mL2Rpc3Ryby88L2ZpbGVuYW1lPiBkaXJlY3RvcnkKLSAgICAgICAgICAgIGFuZCB2YWxpZCBtYWNoaW5lIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgIGZpbGVzIGluIHRoZSA8ZmlsZW5hbWU+bWV0YS9jb25mL21hY2hpbmUvPC9maWxlbmFtZT4gZGlyZWN0b3J5LgotICAgICAgICAgICAgV2l0aGluIHRoZSA8ZmlsZW5hbWU+bWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS88L2ZpbGVuYW1lPgotICAgICAgICAgICAgZGlyZWN0b3J5IGFyZSB2YXJpb3VzIDxmaWxlbmFtZT50dW5lLSouaW5jPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlcyB0aGF0IHByb3ZpZGUgY29tbW9uCi0gICAgICAgICAgICAidHVuaW5nIiBzZXR0aW5ncyBzcGVjaWZpYyB0byBhbmQgc2hhcmVkIGJldHdlZW4gcGFydGljdWxhciBhcmNoaXRlY3R1cmVzIGFuZCBtYWNoaW5lcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQWZ0ZXIgdGhlIHBhcnNpbmcgb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMsIHNvbWUgc3RhbmRhcmQgY2xhc3NlcyBhcmUgaW5jbHVkZWQuCi0gICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJhc2UuYmJjbGFzczwvZmlsZW5hbWU+IGZpbGUgaXMgYWx3YXlzIGluY2x1ZGVkLgotICAgICAgICAgICAgT3RoZXIgY2xhc3NlcyB0aGF0IGFyZSBzcGVjaWZpZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gdXNpbmcgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLUlOSEVSSVQnPklOSEVSSVQ8L2xpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgIHZhcmlhYmxlIGFyZSBhbHNvIGluY2x1ZGVkLgotICAgICAgICAgICAgQ2xhc3MgZmlsZXMgYXJlIHNlYXJjaGVkIGZvciBpbiBhIDxmaWxlbmFtZT5jbGFzc2VzPC9maWxlbmFtZT4gc3ViZGlyZWN0b3J5Ci0gICAgICAgICAgICB1bmRlciB0aGUgcGF0aHMgaW4gPGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+IGluIHRoZSBzYW1lIHdheSBhcwotICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQWZ0ZXIgY2xhc3NlcyBhcmUgaW5jbHVkZWQsIHRoZSB2YXJpYWJsZQotICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1CQkZJTEVTJz5CQkZJTEVTPC9saW5rPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBpcyBzZXQsIHVzdWFsbHkgaW4KLSAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4sIGFuZCBkZWZpbmVzIHRoZSBsaXN0IG9mIHBsYWNlcyB0byBzZWFyY2ggZm9yCi0gICAgICAgICAgICA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gZmlsZXMuCi0gICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgPGZpbGVuYW1lPkJCRklMRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBzcGVjaWZpZXMgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLSovPC9maWxlbmFtZT4gZGlyZWN0b3J5IHdpdGhpbiBQb2t5LgotICAgICAgICAgICAgQWRkaW5nIGV4dHJhIGNvbnRlbnQgdG8gPGZpbGVuYW1lPkJCRklMRVM8L2ZpbGVuYW1lPiBpcyBiZXN0IGFjaGlldmVkIHRocm91Z2ggdGhlIHVzZSBvZgotICAgICAgICAgICAgQml0QmFrZSBsYXllcnMgYXMgZGVzY3JpYmVkIGluIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyc+VW5kZXJzdGFuZGluZyBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQml0QmFrZSBwYXJzZXMgZWFjaCA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gZmlsZSBpbiA8ZmlsZW5hbWU+QkJGSUxFUzwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgc3RvcmVzIHRoZSB2YWx1ZXMgb2YgdmFyaW91cyB2YXJpYWJsZXMuCi0gICAgICAgICAgICBJbiBzdW1tYXJ5LCBmb3IgZWFjaCA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4KLSAgICAgICAgICAgIGZpbGUgdGhlIGNvbmZpZ3VyYXRpb24gcGx1cyB0aGUgYmFzZSBjbGFzcyBvZiB2YXJpYWJsZXMgYXJlIHNldCwgZm9sbG93ZWQKLSAgICAgICAgICAgIGJ5IHRoZSBkYXRhIGluIHRoZSA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gZmlsZQotICAgICAgICAgICAgaXRzZWxmLCBmb2xsb3dlZCBieSBhbnkgaW5oZXJpdCBjb21tYW5kcyB0aGF0Ci0gICAgICAgICAgICA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gZmlsZSBtaWdodCBjb250YWluLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBCZWNhdXNlIHBhcnNpbmcgPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+IGZpbGVzIGlzIGEgdGltZQotICAgICAgICAgICAgY29uc3VtaW5nIHByb2Nlc3MsIGEgY2FjaGUgaXMga2VwdCB0byBzcGVlZCB1cCBzdWJzZXF1ZW50IHBhcnNpbmcuCi0gICAgICAgICAgICBUaGlzIGNhY2hlIGlzIGludmFsaWQgaWYgdGhlIHRpbWVzdGFtcCBvZiB0aGUgPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBmaWxlIGl0c2VsZiBjaGFuZ2VzLCBvciBpZiB0aGUgdGltZXN0YW1wcyBvZiBhbnkgb2YgdGhlIGluY2x1ZGUsCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGVzIG9yIGNsYXNzIGZpbGVzIG9uIHdoaWNoIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+IGZpbGUgZGVwZW5kcyBjaGFuZ2UuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGJlIGF3YXJlIG9mIGhvdyBCaXRCYWtlIHBhcnNlcyBjdXJseSBicmFjZXMuCi0gICAgICAgICAgICAgICAgSWYgYSByZWNpcGUgdXNlcyBhIGNsb3NpbmcgY3VybHkgYnJhY2Ugd2l0aGluIHRoZSBmdW5jdGlvbiBhbmQKLSAgICAgICAgICAgICAgICB0aGUgY2hhcmFjdGVyIGhhcyBubyBsZWFkaW5nIHNwYWNlcywgQml0QmFrZSBwcm9kdWNlcyBhIHBhcnNpbmcKLSAgICAgICAgICAgICAgICBlcnJvci4KLSAgICAgICAgICAgICAgICBJZiB5b3UgdXNlIGEgcGFpciBvZiBjdXJseSBicmFjZSBpbiBhIHNoZWxsIGZ1bmN0aW9uLCB0aGUKLSAgICAgICAgICAgICAgICBjbG9zaW5nIGN1cmx5IGJyYWNlIG11c3Qgbm90IGJlIGxvY2F0ZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lCi0gICAgICAgICAgICAgICAgd2l0aG91dCBsZWFkaW5nIHNwYWNlcy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHRoYXQgY2F1c2VzIEJpdEJha2UgdG8gcHJvZHVjZSBhIHBhcnNpbmcKLSAgICAgICAgICAgICAgICBlcnJvcjoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIGZha2Vyb290IGNyZWF0ZV9zaGFyKCkgewotICAgICAgICAgY2F0ICZsdDsmbHQ7ICJFT0YiICZndDsgJHtTREtfREVQTE9ZfS8ke1RPT0xDSEFJTl9PVVRQVVROQU1FfS5zaAotICAgICB1c2FnZSgpCi0gICAgIHsKLSAgICAgICBlY2hvICJ0ZXN0IgotICAgICAgICMjIyMjIyBUaGUgZm9sbG93aW5nICJ9IiBhdCB0aGUgc3RhcnQgb2YgdGhlIGxpbmUgY2F1c2VzIGEgcGFyc2luZyBlcnJvciAjIyMjIyMKLSAgICAgfQotICAgICBFT0YKLSAgICAgfQotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBXcml0aW5nIHRoZSByZWNpcGUgdGhpcyB3YXkgYXZvaWRzIHRoZSBlcnJvcjoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIGZha2Vyb290IGNyZWF0ZV9zaGFyKCkgewotICAgICAgICAgY2F0ICZsdDsmbHQ7ICJFT0YiICZndDsgJHtTREtfREVQTE9ZfS8ke1RPT0xDSEFJTl9PVVRQVVROQU1FfS5zaAotICAgICB1c2FnZSgpCi0gICAgIHsKLSAgICAgICBlY2hvICJ0ZXN0IgotICAgICAgICMjIyMjI1RoZSBmb2xsb3dpbmcgIn0iIHdpdGggYSBsZWFkaW5nIHNwYWNlIGF0IHRoZSBzdGFydCBvZiB0aGUgbGluZSBhdm9pZHMgdGhlIGVycm9yICMjIyMjIwotICAgICAgfQotICAgICBFT0YKLSAgICAgfQotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9ub3RlPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdyZWYtYml0YmFrZS1wcm92aWRlcnMnPgotICAgICAgICA8dGl0bGU+UHJlZmVyZW5jZXMgYW5kIFByb3ZpZGVyczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBPbmNlIGFsbCB0aGUgPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+IGZpbGVzIGhhdmUgYmVlbgotICAgICAgICAgICAgcGFyc2VkLCBCaXRCYWtlIHN0YXJ0cyB0byBidWlsZCB0aGUgdGFyZ2V0ICg8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4KLSAgICAgICAgICAgIGluIHRoZSBwcmV2aW91cyBzZWN0aW9uJ3MgZXhhbXBsZSkgYW5kIGxvb2tzIGZvciBwcm92aWRlcnMgb2YgdGhhdCB0YXJnZXQuCi0gICAgICAgICAgICBPbmNlIGEgcHJvdmlkZXIgaXMgc2VsZWN0ZWQsIEJpdEJha2UgcmVzb2x2ZXMgYWxsIHRoZSBkZXBlbmRlbmNpZXMgZm9yCi0gICAgICAgICAgICB0aGUgdGFyZ2V0LgotICAgICAgICAgICAgSW4gdGhlIGNhc2Ugb2YgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+LCBpdCB3b3VsZCBsZWFkIHRvCi0gICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwLWNvcmUteDExLXNhdG88L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgIHdoaWNoIGluIHR1cm4gbGVhZHMgdG8gcmVjaXBlcyBsaWtlIDxmaWxlbmFtZT5tYXRjaGJveC10ZXJtaW5hbDwvZmlsZW5hbWU+LAotICAgICAgICAgICAgPGZpbGVuYW1lPnBjbWFuZm08L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPmd0aHVtYjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgVGhlc2UgcmVjaXBlcyBpbiB0dXJuIGRlcGVuZCBvbiA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPiBhbmQgdGhlIHRvb2xjaGFpbi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgU29tZXRpbWVzIGEgdGFyZ2V0IG1pZ2h0IGhhdmUgbXVsdGlwbGUgcHJvdmlkZXJzLgotICAgICAgICAgICAgQSBjb21tb24gZXhhbXBsZSBpcyAidmlydHVhbC9rZXJuZWwiLCB3aGljaCBpcyBwcm92aWRlZCBieSBlYWNoIGtlcm5lbCBwYWNrYWdlLgotICAgICAgICAgICAgRWFjaCBtYWNoaW5lIG9mdGVuIHNlbGVjdHMgdGhlIGJlc3Qga2VybmVsIHByb3ZpZGVyIGJ5IHVzaW5nIGEgbGluZSBzaW1pbGFyIHRvIHRoZQotICAgICAgICAgICAgZm9sbG93aW5nIGluIHRoZSBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gZmlsZToKLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID0gImxpbnV4LXlvY3RvIgotICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgZGVmYXVsdCA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVBSRUZFUlJFRF9QUk9WSURFUic+UFJFRkVSUkVEX1BST1ZJREVSPC9saW5rPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBpcyB0aGUgcHJvdmlkZXIgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSB0YXJnZXQuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFVuZGVyc3RhbmRpbmcgaG93IHByb3ZpZGVycyBhcmUgY2hvc2VuIGlzIG1hZGUgY29tcGxpY2F0ZWQgYnkgdGhlIGZhY3QKLSAgICAgICAgICAgIHRoYXQgbXVsdGlwbGUgdmVyc2lvbnMgbWlnaHQgZXhpc3QuCi0gICAgICAgICAgICBCaXRCYWtlIGRlZmF1bHRzIHRvIHRoZSBoaWdoZXN0IHZlcnNpb24gb2YgYSBwcm92aWRlci4KLSAgICAgICAgICAgIFZlcnNpb24gY29tcGFyaXNvbnMgYXJlIG1hZGUgdXNpbmcgdGhlIHNhbWUgbWV0aG9kIGFzIERlYmlhbi4KLSAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1QUkVGRVJSRURfVkVSU0lPTic+UFJFRkVSUkVEX1ZFUlNJT048L2xpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgIHZhcmlhYmxlIHRvIHNwZWNpZnkgYSBwYXJ0aWN1bGFyIHZlcnNpb24gKHVzdWFsbHkgaW4gdGhlIGRpc3RybyBjb25maWd1cmF0aW9uKS4KLSAgICAgICAgICAgIFlvdSBjYW4gaW5mbHVlbmNlIHRoZSBvcmRlciBieSB1c2luZyB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItREVGQVVMVF9QUkVGRVJFTkNFJz5ERUZBVUxUX1BSRUZFUkVOQ0U8L2xpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgIHZhcmlhYmxlLgotICAgICAgICAgICAgQnkgZGVmYXVsdCwgZmlsZXMgaGF2ZSBhIHByZWZlcmVuY2Ugb2YgIjAiLgotICAgICAgICAgICAgU2V0dGluZyB0aGUgPGZpbGVuYW1lPkRFRkFVTFRfUFJFRkVSRU5DRTwvZmlsZW5hbWU+IHRvICItMSIgbWFrZXMgdGhlCi0gICAgICAgICAgICBwYWNrYWdlIHVubGlrZWx5IHRvIGJlIHVzZWQgdW5sZXNzIGl0IGlzIGV4cGxpY2l0bHkgcmVmZXJlbmNlZC4KLSAgICAgICAgICAgIFNldHRpbmcgdGhlIDxmaWxlbmFtZT5ERUZBVUxUX1BSRUZFUkVOQ0U8L2ZpbGVuYW1lPiB0byAiMSIgbWFrZXMgaXQgbGlrZWx5IHRoZSBwYWNrYWdlIGlzIHVzZWQuCi0gICAgICAgICAgICA8ZmlsZW5hbWU+UFJFRkVSUkVEX1ZFUlNJT048L2ZpbGVuYW1lPiBvdmVycmlkZXMgYW55IDxmaWxlbmFtZT5ERUZBVUxUX1BSRUZFUkVOQ0U8L2ZpbGVuYW1lPiBzZXR0aW5nLgotICAgICAgICAgICAgPGZpbGVuYW1lPkRFRkFVTFRfUFJFRkVSRU5DRTwvZmlsZW5hbWU+IGlzIG9mdGVuIHVzZWQgdG8gbWFyayBuZXdlciBhbmQgbW9yZSBleHBlcmltZW50YWwgcGFja2FnZQotICAgICAgICAgICAgdmVyc2lvbnMgdW50aWwgdGhleSBoYXZlIHVuZGVyZ29uZSBzdWZmaWNpZW50IHRlc3RpbmcgdG8gYmUgY29uc2lkZXJlZCBzdGFibGUuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEluIHN1bW1hcnksIEJpdEJha2UgaGFzIGNyZWF0ZWQgYSBsaXN0IG9mIHByb3ZpZGVycywgd2hpY2ggaXMgcHJpb3JpdGl6ZWQsIGZvciBlYWNoIHRhcmdldC4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdyZWYtYml0YmFrZS1kZXBlbmRlbmNpZXMnPgotICAgICAgICA8dGl0bGU+RGVwZW5kZW5jaWVzPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEVhY2ggdGFyZ2V0IEJpdEJha2UgYnVpbGRzIGNvbnNpc3RzIG9mIG11bHRpcGxlIHRhc2tzIHN1Y2ggYXMKLSAgICAgICAgICAgIDxmaWxlbmFtZT5mZXRjaDwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+dW5wYWNrPC9maWxlbmFtZT4sCi0gICAgICAgICAgICA8ZmlsZW5hbWU+cGF0Y2g8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmNvbmZpZ3VyZTwvZmlsZW5hbWU+LAotICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5jb21waWxlPC9maWxlbmFtZT4uCi0gICAgICAgICAgICBGb3IgYmVzdCBwZXJmb3JtYW5jZSBvbiBtdWx0aS1jb3JlIHN5c3RlbXMsIEJpdEJha2UgY29uc2lkZXJzIGVhY2ggdGFzayBhcyBhbiBpbmRlcGVuZGVudAotICAgICAgICAgICAgZW50aXR5IHdpdGggaXRzIG93biBzZXQgb2YgZGVwZW5kZW5jaWVzLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBEZXBlbmRlbmNpZXMgYXJlIGRlZmluZWQgdGhyb3VnaCBzZXZlcmFsIHZhcmlhYmxlcy4KLSAgICAgICAgICAgIFlvdSBjYW4gZmluZCBpbmZvcm1hdGlvbiBhYm91dCB2YXJpYWJsZXMgQml0QmFrZSB1c2VzIGluIHRoZQotICAgICAgICAgICAgQml0QmFrZSBkb2N1bWVudGF0aW9uLCB3aGljaCBpcyBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlL2RvYy9tYW51YWw8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgd2l0aGluIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCi0gICAgICAgICAgICBBdCBhIGJhc2ljIGxldmVsLCBpdCBpcyBzdWZmaWNpZW50IHRvIGtub3cgdGhhdCBCaXRCYWtlIHVzZXMgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLURFUEVORFMnPkRFUEVORFM8L2xpbms+PC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVJERVBFTkRTJz5SREVQRU5EUzwvbGluaz48L2ZpbGVuYW1lPgotICAgICAgICAgICAgdmFyaWFibGVzIHdoZW4gY2FsY3VsYXRpbmcgZGVwZW5kZW5jaWVzLgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3JlZi1iaXRiYWtlLXRhc2tsaXN0Jz4KLSAgICAgICAgPHRpdGxlPlRoZSBUYXNrIExpc3Q8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQmFzZWQgb24gdGhlIGdlbmVyYXRlZCBsaXN0IG9mIHByb3ZpZGVycyBhbmQgdGhlIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24sCi0gICAgICAgICAgICBCaXRCYWtlIGNhbiBub3cgY2FsY3VsYXRlIGV4YWN0bHkgd2hhdCB0YXNrcyBpdCBuZWVkcyB0byBydW4gYW5kIGluIHdoYXQKLSAgICAgICAgICAgIG9yZGVyIGl0IG5lZWRzIHRvIHJ1biB0aGVtLgotICAgICAgICAgICAgVGhlIGJ1aWxkIG5vdyBzdGFydHMgd2l0aCBCaXRCYWtlIGZvcmtpbmcgb2ZmIHRocmVhZHMgdXAgdG8gdGhlIGxpbWl0IHNldCBpbiB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItQkJfTlVNQkVSX1RIUkVBRFMnPkJCX05VTUJFUl9USFJFQURTPC9saW5rPjwvZmlsZW5hbWU+IHZhcmlhYmxlLgotICAgICAgICAgICAgQml0QmFrZSBjb250aW51ZXMgdG8gZm9yayB0aHJlYWRzIGFzIGxvbmcgYXMgdGhlcmUgYXJlIHRhc2tzIHJlYWR5IHRvIHJ1biwKLSAgICAgICAgICAgIHRob3NlIHRhc2tzIGhhdmUgYWxsIHRoZWlyIGRlcGVuZGVuY2llcyBtZXQsIGFuZCB0aGUgdGhyZWFkIHRocmVzaG9sZCBoYXMgbm90IGJlZW4KLSAgICAgICAgICAgIGV4Y2VlZGVkLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJdCBpcyB3b3J0aCBub3RpbmcgdGhhdCB5b3UgY2FuIGdyZWF0bHkgc3BlZWQgdXAgdGhlIGJ1aWxkIHRpbWUgYnkgcHJvcGVybHkgc2V0dGluZwotICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5CQl9OVU1CRVJfVEhSRUFEUzwvZmlsZW5hbWU+IHZhcmlhYmxlLgotICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjcXMtYnVpbGRpbmctaW1hZ2VzJz5CdWlsZGluZyBJbWFnZXM8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQgZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEFzIGVhY2ggdGFzayBjb21wbGV0ZXMsIGEgdGltZXN0YW1wIGlzIHdyaXR0ZW4gdG8gdGhlIGRpcmVjdG9yeSBzcGVjaWZpZWQgYnkgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVNUQU1QJz5TVEFNUDwvbGluaz48L2ZpbGVuYW1lPiB2YXJpYWJsZS4KLSAgICAgICAgICAgIE9uIHN1YnNlcXVlbnQgcnVucywgQml0QmFrZSBsb29rcyB3aXRoaW4gdGhlIDxmaWxlbmFtZT5idWlsZC90bXAvc3RhbXBzPC9maWxlbmFtZT4KLSAgICAgICAgICAgIGRpcmVjdG9yeSBhbmQgZG9lcyBub3QgcmVydW4KLSAgICAgICAgICAgIHRhc2tzIHRoYXQgYXJlIGFscmVhZHkgY29tcGxldGVkIHVubGVzcyBhIHRpbWVzdGFtcCBpcyBmb3VuZCB0byBiZSBpbnZhbGlkLgotICAgICAgICAgICAgQ3VycmVudGx5LCBpbnZhbGlkIHRpbWVzdGFtcHMgYXJlIG9ubHkgY29uc2lkZXJlZCBvbiBhIHBlcgotICAgICAgICAgICAgPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+IGZpbGUgYmFzaXMuCi0gICAgICAgICAgICBTbywgZm9yIGV4YW1wbGUsIGlmIHRoZSBjb25maWd1cmUgc3RhbXAgaGFzIGEgdGltZXN0YW1wIGdyZWF0ZXIgdGhhbiB0aGUKLSAgICAgICAgICAgIGNvbXBpbGUgdGltZXN0YW1wIGZvciBhIGdpdmVuIHRhcmdldCwgdGhlbiB0aGUgY29tcGlsZSB0YXNrIHdvdWxkIHJlcnVuLgotICAgICAgICAgICAgUnVubmluZyB0aGUgY29tcGlsZSB0YXNrIGFnYWluLCBob3dldmVyLCBoYXMgbm8gZWZmZWN0IG9uIG90aGVyIHByb3ZpZGVycwotICAgICAgICAgICAgdGhhdCBkZXBlbmQgb24gdGhhdCB0YXJnZXQuCi0gICAgICAgICAgICBUaGlzIGJlaGF2aW9yIGNvdWxkIGNoYW5nZSBvciBiZWNvbWUgY29uZmlndXJhYmxlIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiBCaXRCYWtlLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICBTb21lIHRhc2tzIGFyZSBtYXJrZWQgYXMgIm5vc3RhbXAiIHRhc2tzLgotICAgICAgICAgICAgTm8gdGltZXN0YW1wIGZpbGUgaXMgY3JlYXRlZCB3aGVuIHRoZXNlIHRhc2tzIGFyZSBydW4uCi0gICAgICAgICAgICBDb25zZXF1ZW50bHksICJub3N0YW1wIiB0YXNrcyBhcmUgYWx3YXlzIHJlcnVuLgotICAgICAgICA8L25vdGU+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3JlZi1iaXRiYWtlLXJ1bnRhc2snPgotICAgICAgICA8dGl0bGU+UnVubmluZyBhIFRhc2s8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGFza3MgY2FuIGVpdGhlciBiZSBhIHNoZWxsIHRhc2sgb3IgYSBQeXRob24gdGFzay4KLSAgICAgICAgICAgIEZvciBzaGVsbCB0YXNrcywgQml0QmFrZSB3cml0ZXMgYSBzaGVsbCBzY3JpcHQgdG8KLSAgICAgICAgICAgIDxmaWxlbmFtZT4ke1dPUktESVJ9L3RlbXAvcnVuLmRvX3Rhc2tuYW1lLnBpZDwvZmlsZW5hbWU+IGFuZCB0aGVuIGV4ZWN1dGVzIHRoZSBzY3JpcHQuCi0gICAgICAgICAgICBUaGUgZ2VuZXJhdGVkIHNoZWxsIHNjcmlwdCBjb250YWlucyBhbGwgdGhlIGV4cG9ydGVkIHZhcmlhYmxlcywgYW5kIHRoZSBzaGVsbCBmdW5jdGlvbnMKLSAgICAgICAgICAgIHdpdGggYWxsIHZhcmlhYmxlcyBleHBhbmRlZC4KLSAgICAgICAgICAgIE91dHB1dCBmcm9tIHRoZSBzaGVsbCBzY3JpcHQgZ29lcyB0byB0aGUgZmlsZSA8ZmlsZW5hbWU+JHtXT1JLRElSfS90ZW1wL2xvZy5kb190YXNrbmFtZS5waWQ8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgIExvb2tpbmcgYXQgdGhlIGV4cGFuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiB0aGUgcnVuIGZpbGUgYW5kIHRoZSBvdXRwdXQgaW4gdGhlIGxvZyBmaWxlcwotICAgICAgICAgICAgaXMgYSB1c2VmdWwgZGVidWdnaW5nIHRlY2huaXF1ZS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRm9yIFB5dGhvbiB0YXNrcywgQml0QmFrZSBleGVjdXRlcyB0aGUgdGFzayBpbnRlcm5hbGx5IGFuZCBsb2dzIGluZm9ybWF0aW9uIHRvIHRoZQotICAgICAgICAgICAgY29udHJvbGxpbmcgdGVybWluYWwuCi0gICAgICAgICAgICBGdXR1cmUgdmVyc2lvbnMgb2YgQml0QmFrZSB3aWxsIHdyaXRlIHRoZSBmdW5jdGlvbnMgdG8gZmlsZXMgc2ltaWxhciB0byB0aGUgd2F5Ci0gICAgICAgICAgICBzaGVsbCB0YXNrcyBhcmUgaGFuZGxlZC4KLSAgICAgICAgICAgIExvZ2dpbmcgd2lsbCBiZSBoYW5kbGVkIGluIGEgd2F5IHNpbWlsYXIgdG8gc2hlbGwgdGFza3MgYXMgd2VsbC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgT25jZSBhbGwgdGhlIHRhc2tzIGhhdmUgYmVlbiBjb21wbGV0ZWQgQml0QmFrZSBleGl0cy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgV2hlbiBydW5uaW5nIGEgdGFzaywgQml0QmFrZSB0aWdodGx5IGNvbnRyb2xzIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQKLSAgICAgICAgICAgIG9mIHRoZSBidWlsZCB0YXNrcyB0byBtYWtlIHN1cmUgdW53YW50ZWQgY29udGFtaW5hdGlvbiBmcm9tIHRoZSBidWlsZCBtYWNoaW5lCi0gICAgICAgICAgICBjYW5ub3QgaW5mbHVlbmNlIHRoZSBidWlsZC4KLSAgICAgICAgICAgIENvbnNlcXVlbnRseSwgaWYgeW91IGRvIHdhbnQgc29tZXRoaW5nIHRvIGdldCBwYXNzZWQgaW50byB0aGUgYnVpbGQKLSAgICAgICAgICAgIHRhc2sncyBlbnZpcm9ubWVudCwgeW91IG11c3QgdGFrZSBhIGZldyBzdGVwczoKLSAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGVsbCBCaXRCYWtlIHRvIGxvYWQgd2hhdCB5b3Ugd2FudCBmcm9tIHRoZSBlbnZpcm9ubWVudAotICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSBkYXRhIHN0b3JlLgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGRvIHNvIHRocm91Z2ggdGhlIDxmaWxlbmFtZT5CQl9FTlZfRVhUUkFXSElURTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgYXNzdW1lIHlvdSB3YW50IHRvIHByZXZlbnQgdGhlIGJ1aWxkIHN5c3RlbSBmcm9tCi0gICAgICAgICAgICAgICAgICAgIGFjY2Vzc2luZyB5b3VyIDxmaWxlbmFtZT4kSE9NRS8uY2NhY2hlPC9maWxlbmFtZT4gZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgdGVsbHMgQml0QmFrZSB0byBsb2FkCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DQ0FDSEVfRElSPC9maWxlbmFtZT4gZnJvbSB0aGUgZW52aXJvbm1lbnQgaW50byB0aGUgZGF0YQotICAgICAgICAgICAgICAgICAgICBzdG9yZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBleHBvcnQgQkJfRU5WX0VYVFJBV0hJVEU9IiRCQl9FTlZfRVhUUkFXSElURSBDQ0FDSEVfRElSIgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRlbGwgQml0QmFrZSB0byBleHBvcnQgd2hhdCB5b3UgaGF2ZSBsb2FkZWQgaW50byB0aGUKLSAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgc3RvcmUgdG8gdGhlIHRhc2sgZW52aXJvbm1lbnQgb2YgZXZlcnkgcnVubmluZyB0YXNrLgotICAgICAgICAgICAgICAgICAgICBMb2FkaW5nIHNvbWV0aGluZyBmcm9tIHRoZSBlbnZpcm9ubWVudCBpbnRvIHRoZSBkYXRhIHN0b3JlCi0gICAgICAgICAgICAgICAgICAgIChwcmV2aW91cyBzdGVwKSBvbmx5IG1ha2VzIGl0IGF2YWlsYWJsZSBpbiB0aGUgZGF0YXN0b3JlLgotICAgICAgICAgICAgICAgICAgICBUbyBleHBvcnQgaXQgdG8gdGhlIHRhc2sgZW52aXJvbm1lbnQgb2YgZXZlcnkgcnVubmluZyB0YXNrLAotICAgICAgICAgICAgICAgICAgICB1c2UgYSBjb21tYW5kIHNpbWlsYXIgdG8gdGhlIGZvbGxvd2luZyBpbiB5b3VyCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gb3IgZGlzdHJvIGNvbmZpZ3VyYXRpb24gZmlsZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBleHBvcnQgQ0NBQ0hFX0RJUgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICBBIHNpZGUgZWZmZWN0IG9mIHRoZSBwcmV2aW91cyBzdGVwcyBpcyB0aGF0IEJpdEJha2UgcmVjb3JkcyB0aGUgdmFyaWFibGUKLSAgICAgICAgICAgIGFzIGEgZGVwZW5kZW5jeSBvZiB0aGUgYnVpbGQgcHJvY2VzcyBpbiB0aGluZ3MgbGlrZSB0aGUgc2hhcmVkIHN0YXRlCi0gICAgICAgICAgICBjaGVja3N1bXMuCi0gICAgICAgICAgICBJZiBkb2luZyBzbyByZXN1bHRzIGluIHVubmVjZXNzYXJ5IHJlYnVpbGRzIG9mIHRhc2tzLCB5b3UgY2FuIHdoaXRlbGlzdCB0aGUKLSAgICAgICAgICAgIHZhcmlhYmxlIHNvIHRoYXQgdGhlIHNoYXJlZCBzdGF0ZSBjb2RlIGlnbm9yZXMgdGhlIGRlcGVuZGVuY3kgd2hlbiBpdCBjcmVhdGVzCi0gICAgICAgICAgICBjaGVja3N1bXMuCi0gICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhpcyBwcm9jZXNzLCBzZWUgdGhlIDxmaWxlbmFtZT5CQl9IQVNIQkFTRV9XSElURUxJU1Q8L2ZpbGVuYW1lPgotICAgICAgICAgICAgZXhhbXBsZSBpbiB0aGUgIjxsaW5rIGxpbmtlbmQ9J2NoZWNrc3Vtcyc+Q2hlY2tzdW1zIChTaWduYXR1cmVzKTwvbGluaz4iIHNlY3Rpb24uCi0gICAgICAgIDwvbm90ZT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0ncmVmLWJpdGJha2UtY29tbWFuZGxpbmUnPgotICAgICAgICA8dGl0bGU+Qml0QmFrZSBDb21tYW5kIExpbmU8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRm9sbG93aW5nIGlzIHRoZSBCaXRCYWtlIGhlbHAgb3V0cHV0OgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHNjcmVlbj4KLSQgYml0YmFrZSAtLWhlbHAKLVVzYWdlOiBiaXRiYWtlIFtvcHRpb25zXSBbcmVjaXBlbmFtZS90YXJnZXQgLi4uXQotCi0gICAgRXhlY3V0ZXMgdGhlIHNwZWNpZmllZCB0YXNrIChkZWZhdWx0IGlzICdidWlsZCcpIGZvciBhIGdpdmVuIHNldCBvZiB0YXJnZXQgcmVjaXBlcyAoLmJiIGZpbGVzKS4KLSAgICBJdCBpcyBhc3N1bWVkIHRoZXJlIGlzIGEgY29uZi9iYmxheWVycy5jb25mIGF2YWlsYWJsZSBpbiBjd2Qgb3IgaW4gQkJQQVRIIHdoaWNoCi0gICAgd2lsbCBwcm92aWRlIHRoZSBsYXllciwgQkJGSUxFUyBhbmQgb3RoZXIgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi4KLQotT3B0aW9uczoKLSAgLS12ZXJzaW9uICAgICAgICAgICAgIHNob3cgcHJvZ3JhbSdzIHZlcnNpb24gbnVtYmVyIGFuZCBleGl0Ci0gIC1oLCAtLWhlbHAgICAgICAgICAgICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0Ci0gIC1iIEJVSUxERklMRSwgLS1idWlsZGZpbGU9QlVJTERGSUxFCi0gICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRlIHRhc2tzIGZyb20gYSBzcGVjaWZpYyAuYmIgcmVjaXBlIGRpcmVjdGx5LgotICAgICAgICAgICAgICAgICAgICAgICAgV0FSTklORzogRG9lcyBub3QgaGFuZGxlIGFueSBkZXBlbmRlbmNpZXMgZnJvbSBvdGhlcgotICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlcy4KLSAgLWssIC0tY29udGludWUgICAgICAgIENvbnRpbnVlIGFzIG11Y2ggYXMgcG9zc2libGUgYWZ0ZXIgYW4gZXJyb3IuIFdoaWxlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IHRoYXQgZmFpbGVkIGFuZCBhbnl0aGluZyBkZXBlbmRpbmcgb24gaXQgY2Fubm90Ci0gICAgICAgICAgICAgICAgICAgICAgICBiZSBidWlsdCwgYXMgbXVjaCBhcyBwb3NzaWJsZSB3aWxsIGJlIGJ1aWx0IGJlZm9yZQotICAgICAgICAgICAgICAgICAgICAgICAgc3RvcHBpbmcuCi0gIC1hLCAtLXRyeWFsdGNvbmZpZ3MgICBDb250aW51ZSB3aXRoIGJ1aWxkcyBieSB0cnlpbmcgdG8gdXNlIGFsdGVybmF0aXZlCi0gICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlcnMgd2hlcmUgcG9zc2libGUuCi0gIC1mLCAtLWZvcmNlICAgICAgICAgICBGb3JjZSB0aGUgc3BlY2lmaWVkIHRhcmdldHMvdGFzayB0byBydW4gKGludmFsaWRhdGluZwotICAgICAgICAgICAgICAgICAgICAgICAgYW55IGV4aXN0aW5nIHN0YW1wIGZpbGUpLgotICAtYyBDTUQsIC0tY21kPUNNRCAgICAgU3BlY2lmeSB0aGUgdGFzayB0byBleGVjdXRlLiBUaGUgZXhhY3Qgb3B0aW9ucwotICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlIGRlcGVuZCBvbiB0aGUgbWV0YWRhdGEuIFNvbWUgZXhhbXBsZXMgbWlnaHQKLSAgICAgICAgICAgICAgICAgICAgICAgIGJlICdjb21waWxlJyBvciAncG9wdWxhdGVfc3lzcm9vdCcgb3IgJ2xpc3R0YXNrcycgbWF5Ci0gICAgICAgICAgICAgICAgICAgICAgICBnaXZlIGEgbGlzdCBvZiB0aGUgdGFza3MgYXZhaWxhYmxlLgotICAtQyBJTlZBTElEQVRFX1NUQU1QLCAtLWNsZWFyLXN0YW1wPUlOVkFMSURBVEVfU1RBTVAKLSAgICAgICAgICAgICAgICAgICAgICAgIEludmFsaWRhdGUgdGhlIHN0YW1wIGZvciB0aGUgc3BlY2lmaWVkIHRhc2sgc3VjaCBhcwotICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBpbGUnIGFuZCB0aGVuIHJ1biB0aGUgZGVmYXVsdCB0YXNrIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCB0YXJnZXQocykuCi0gIC1yIFBSRUZJTEUsIC0tcmVhZD1QUkVGSUxFCi0gICAgICAgICAgICAgICAgICAgICAgICBSZWFkIHRoZSBzcGVjaWZpZWQgZmlsZSBiZWZvcmUgYml0YmFrZS5jb25mLgotICAtUiBQT1NURklMRSwgLS1wb3N0cmVhZD1QT1NURklMRQotICAgICAgICAgICAgICAgICAgICAgICAgUmVhZCB0aGUgc3BlY2lmaWVkIGZpbGUgYWZ0ZXIgYml0YmFrZS5jb25mLgotICAtdiwgLS12ZXJib3NlICAgICAgICAgT3V0cHV0IG1vcmUgbG9nIG1lc3NhZ2UgZGF0YSB0byB0aGUgdGVybWluYWwuCi0gIC1ELCAtLWRlYnVnICAgICAgICAgICBJbmNyZWFzZSB0aGUgZGVidWcgbGV2ZWwuIFlvdSBjYW4gc3BlY2lmeSB0aGlzIG1vcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoYW4gb25jZS4KLSAgLW4sIC0tZHJ5LXJ1biAgICAgICAgIERvbid0IGV4ZWN1dGUsIGp1c3QgZ28gdGhyb3VnaCB0aGUgbW90aW9ucy4KLSAgLVMsIC0tZHVtcC1zaWduYXR1cmVzCi0gICAgICAgICAgICAgICAgICAgICAgICBEb24ndCBleGVjdXRlLCBqdXN0IGR1bXAgb3V0IHRoZSBzaWduYXR1cmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdGlvbiBpbmZvcm1hdGlvbi4KLSAgLXAsIC0tcGFyc2Utb25seSAgICAgIFF1aXQgYWZ0ZXIgcGFyc2luZyB0aGUgQkIgcmVjaXBlcy4KLSAgLXMsIC0tc2hvdy12ZXJzaW9ucyAgIFNob3cgY3VycmVudCBhbmQgcHJlZmVycmVkIHZlcnNpb25zIG9mIGFsbCByZWNpcGVzLgotICAtZSwgLS1lbnZpcm9ubWVudCAgICAgU2hvdyB0aGUgZ2xvYmFsIG9yIHBlci1wYWNrYWdlIGVudmlyb25tZW50IGNvbXBsZXRlCi0gICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIHZhcmlhYmxlcyB3ZXJlCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXQvY2hhbmdlZC4KLSAgLWcsIC0tZ3JhcGh2aXogICAgICAgIFNhdmUgZGVwZW5kZW5jeSB0cmVlIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkCi0gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRzIGluIHRoZSBkb3Qgc3ludGF4LgotICAtSSBFWFRSQV9BU1NVTUVfUFJPVklERUQsIC0taWdub3JlLWRlcHM9RVhUUkFfQVNTVU1FX1BST1ZJREVECi0gICAgICAgICAgICAgICAgICAgICAgICBBc3N1bWUgdGhlc2UgZGVwZW5kZW5jaWVzIGRvbid0IGV4aXN0IGFuZCBhcmUgYWxyZWFkeQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQgKGVxdWl2YWxlbnQgdG8gQVNTVU1FX1BST1ZJREVEKS4gVXNlZnVsIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICBtYWtlIGRlcGVuZGVuY3kgZ3JhcGhzIG1vcmUgYXBwZWFsaW5nCi0gIC1sIERFQlVHX0RPTUFJTlMsIC0tbG9nLWRvbWFpbnM9REVCVUdfRE9NQUlOUwotICAgICAgICAgICAgICAgICAgICAgICAgU2hvdyBkZWJ1ZyBsb2dnaW5nIGZvciB0aGUgc3BlY2lmaWVkIGxvZ2dpbmcgZG9tYWlucwotICAtUCwgLS1wcm9maWxlICAgICAgICAgUHJvZmlsZSB0aGUgY29tbWFuZCBhbmQgc2F2ZSByZXBvcnRzLgotICAtdSBVSSwgLS11aT1VSSAgICAgICAgVGhlIHVzZXIgaW50ZXJmYWNlIHRvIHVzZSAoZS5nLiBrbm90dHkgYW5kIHRhc2tleHApLgotICAtdCBTRVJWRVJUWVBFLCAtLXNlcnZlcnR5cGU9U0VSVkVSVFlQRQotICAgICAgICAgICAgICAgICAgICAgICAgQ2hvb3NlIHdoaWNoIHNlcnZlciB0byB1c2UsIHByb2Nlc3Mgb3IgeG1scnBjLgotICAtLXJldmlzaW9ucy1jaGFuZ2VkICAgU2V0IHRoZSBleGl0IGNvZGUgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdXBzdHJlYW0KLSAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0aW5nIHJldmlzaW9ucyBoYXZlIGNoYW5nZWQgb3Igbm90LgotICAtLXNlcnZlci1vbmx5ICAgICAgICAgUnVuIGJpdGJha2Ugd2l0aG91dCBhIFVJLCBvbmx5IHN0YXJ0aW5nIGEgc2VydmVyCi0gICAgICAgICAgICAgICAgICAgICAgICAoY29va2VyKSBwcm9jZXNzLgotICAtQiBCSU5ELCAtLWJpbmQ9QklORCAgVGhlIG5hbWUvYWRkcmVzcyBmb3IgdGhlIGJpdGJha2Ugc2VydmVyIHRvIGJpbmQgdG8uCi0gIC0tbm8tc2V0c2NlbmUgICAgICAgICBEbyBub3QgcnVuIGFueSBzZXRzY2VuZSB0YXNrcy4gc3N0YXRlIHdpbGwgYmUgaWdub3JlZAotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGV2ZXJ5dGhpbmcgbmVlZGVkLCBidWlsdC4KLSAgLS1yZW1vdGUtc2VydmVyPVJFTU9URV9TRVJWRVIKLSAgICAgICAgICAgICAgICAgICAgICAgIENvbm5lY3QgdG8gdGhlIHNwZWNpZmllZCBzZXJ2ZXIuCi0gIC1tLCAtLWtpbGwtc2VydmVyICAgICBUZXJtaW5hdGUgdGhlIHJlbW90ZSBzZXJ2ZXIuCi0gIC0tb2JzZXJ2ZS1vbmx5ICAgICAgICBDb25uZWN0IHRvIGEgc2VydmVyIGFzIGFuIG9ic2VydmluZy1vbmx5IGNsaWVudC4KLSAgICAgICAgPC9zY3JlZW4+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3JlZi1iaXRiYWtlLWZldGNoZXJzJz4KLSAgICAgICAgPHRpdGxlPkZldGNoZXJzPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEJpdEJha2UgYWxzbyBjb250YWlucyBhIHNldCBvZiAiZmV0Y2hlciIgbW9kdWxlcyB0aGF0IGFsbG93Ci0gICAgICAgICAgICByZXRyaWV2YWwgb2Ygc291cmNlIGNvZGUgZnJvbSB2YXJpb3VzIHR5cGVzIG9mIHNvdXJjZXMuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgQml0QmFrZSBjYW4gZ2V0IHNvdXJjZSBjb2RlIGZyb20gYSBkaXNrIHdpdGggdGhlIG1ldGFkYXRhLCBmcm9tIHdlYnNpdGVzLAotICAgICAgICAgICAgZnJvbSByZW1vdGUgc2hlbGwgYWNjb3VudHMsIG9yIGZyb20gU291cmNlIENvZGUgTWFuYWdlbWVudCAoU0NNKSBzeXN0ZW1zCi0gICAgICAgICAgICBsaWtlIDxmaWxlbmFtZT5jdnMvc3VidmVyc2lvbi9naXQ8L2ZpbGVuYW1lPi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRmV0Y2hlcnMgYXJlIHVzdWFsbHkgdHJpZ2dlcmVkIGJ5IGVudHJpZXMgaW4KLSAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItU1JDX1VSSSc+U1JDX1VSSTwvbGluaz48L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgIFlvdSBjYW4gZmluZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb3B0aW9ucyBhbmQgZm9ybWF0cyBvZiBlbnRyaWVzIGZvciBzcGVjaWZpYwotICAgICAgICAgICAgZmV0Y2hlcnMgaW4gdGhlIEJpdEJha2UgbWFudWFsIGxvY2F0ZWQgaW4gdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS9kb2MvbWFudWFsPC9maWxlbmFtZT4gZGlyZWN0b3J5IG9mIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIE9uZSB1c2VmdWwgZmVhdHVyZSBmb3IgY2VydGFpbiBTb3VyY2UgQ29kZSBNYW5hZ2VyIChTQ00pIGZldGNoZXJzCi0gICAgICAgICAgICBpcyB0aGUgYWJpbGl0eSB0byAiYXV0by11cGRhdGUiIHdoZW4gdGhlIHVwc3RyZWFtIFNDTSBjaGFuZ2VzCi0gICAgICAgICAgICB2ZXJzaW9uLgotICAgICAgICAgICAgU2luY2UgdGhpcyBhYmlsaXR5IHJlcXVpcmVzIGNlcnRhaW4gZnVuY3Rpb25hbGl0eSBmcm9tIHRoZSBTQ00sCi0gICAgICAgICAgICBub3QgYWxsIHN5c3RlbXMgc3VwcG9ydCBpdC4KLSAgICAgICAgICAgIEN1cnJlbnRseSBTdWJ2ZXJzaW9uLCBCYXphYXIgYW5kIHRvIGEgbGltaXRlZCBleHRlbnQsIEdpdCBzdXBwb3J0Ci0gICAgICAgICAgICB0aGUgYWJpbGl0eSB0byAiYXV0by11cGRhdGUiLgotICAgICAgICAgICAgVGhpcyBmZWF0dXJlIHdvcmtzIHVzaW5nIHRoZSA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVNSQ1JFVic+U1JDUkVWPC9saW5rPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwbGF0ZGV2LWFwcGRldi1zcmNyZXYnPlVzaW5nIGFuIEV4dGVybmFsIFNDTTwvdWxpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yIG1vcmUKLSAgICAgICAgICAgIGluZm9ybWF0aW9uLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICA8L3NlY3Rpb24+Ci0KLTwvY2hhcHRlcj4KLTwhLS0KLXZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQgc3BlbGwgc3BlbGxsYW5nPWVuX2diCi0tLT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWNsYXNzZXMueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtY2xhc3Nlcy54bWwKaW5kZXggNTk2MWQzZS4uNzdmMjFlZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtY2xhc3Nlcy54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtY2xhc3Nlcy54bWwKQEAgLTM1LDggKzM1LDcgQEAKIDxwYXJhPgogICAgIFRoaXMgY2hhcHRlciBkaXNjdXNzZXMgb25seSB0aGUgbW9zdCB1c2VmdWwgYW5kIGltcG9ydGFudCBjbGFzc2VzLgogICAgIE90aGVyIGNsYXNzZXMgZG8gZXhpc3Qgd2l0aGluIHRoZSA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzPC9maWxlbmFtZT4KLSAgICBkaXJlY3RvcnkgaW4gdGhlCi0gICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCisgICAgZGlyZWN0b3J5IGluIHRoZSBTb3VyY2UgRGlyZWN0b3J5LgogICAgIFlvdSBjYW4gcmVmZXJlbmNlIHRoZSA8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPiBmaWxlcyBkaXJlY3RseQogICAgIGZvciBtb3JlIGluZm9ybWF0aW9uLgogPC9wYXJhPgpAQCAtMTI4LDkgKzEyNyw4IEBACiAgICAgPHBhcmE+CiAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSA8ZmlsZW5hbWU+YXV0b3Rvb2xzKjwvZmlsZW5hbWU+IGNsYXNzZXMKICAgICAgICAgdXNlIG91dC1vZi10cmVlIGJ1aWxkcyAoaS5lLgotICAgICAgICA8ZmlsZW5hbWU+YXV0b3Rvb2xzLmJiY2xhc3M8L2ZpbGVuYW1lPikuCi0gICAgICAgICg8bGluayBsaW5rZW5kPSd2YXItQic+PGZpbGVuYW1lPkI8L2ZpbGVuYW1lPjwvbGluaz4gPGZpbGVuYW1lPiE9PC9maWxlbmFtZT4KLSAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L2xpbms+KS4KKyAgICAgICAgPGZpbGVuYW1lPmF1dG90b29scy5iYmNsYXNzPC9maWxlbmFtZT4gYnVpbGRpbmcgd2l0aAorICAgICAgICA8ZmlsZW5hbWU+QiAhPSBTPC9maWxlbmFtZT4pLgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgpAQCAtMzU3LDggKzM1NSw4IEBACiAgICAgICAgIGhpc3Rvcnkgb2YgYnVpbGQgb3V0cHV0IG1ldGFkYXRhLCB3aGljaCBjYW4gYmUgdXNlZCB0byBkZXRlY3QgcG9zc2libGUKICAgICAgICAgcmVncmVzc2lvbnMgYXMgd2VsbCBhcyB1c2VkIGZvciBhbmFseXNpcyBvZiB0aGUgYnVpbGQgb3V0cHV0LgogICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB1c2luZyBCdWlsZCBIaXN0b3J5LCBzZWUgdGhlCi0gICAgICAgICI8bGluayBsaW5rZW5kPSdtYWludGFpbmluZy1idWlsZC1vdXRwdXQtcXVhbGl0eSc+TWFpbnRhaW5pbmcgQnVpbGQgT3V0cHV0IFF1YWxpdHk8L2xpbms+IgotICAgICAgICBzZWN0aW9uLgorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWFpbnRhaW5pbmctYnVpbGQtb3V0cHV0LXF1YWxpdHknPk1haW50YWluaW5nIEJ1aWxkIE91dHB1dCBRdWFsaXR5PC91bGluaz4iCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgIDwvcGFyYT4KIDwvc2VjdGlvbj4KIApAQCAtNDA3LDggKzQwNSw3IEBACiAgICAgPHRpdGxlPjxmaWxlbmFtZT5jY2FjaGUuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KIAogICAgIDxwYXJhPgotICAgICAgICBUaGUgPGZpbGVuYW1lPmNjYWNoZTwvZmlsZW5hbWU+IGNsYXNzIGVuYWJsZXMgdGhlCi0gICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9jY2FjaGUuc2FtYmEub3JnLyc+Qy9DKysgQ29tcGlsZXIgQ2FjaGU8L3VsaW5rPgorICAgICAgICBUaGUgPGZpbGVuYW1lPmNjYWNoZTwvZmlsZW5hbWU+IGNsYXNzIGVuYWJsZXMgdGhlIEMvQysrIENvbXBpbGVyIENhY2hlCiAgICAgICAgIGZvciB0aGUgYnVpbGQuCiAgICAgICAgIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBnaXZlIGEgbWlub3IgcGVyZm9ybWFuY2UgYm9vc3QgZHVyaW5nIHRoZSBidWlsZC4KICAgICAgICAgSG93ZXZlciwgdXNpbmcgdGhlIGNsYXNzIGNhbiBsZWFkIHRvIHVuZXhwZWN0ZWQgc2lkZS1lZmZlY3RzLgpAQCAtNTY4LDggKzU2NSw5IEBACiAgICAgICAgIHByb3ZpZGVzIHN1cHBvcnQgZm9yIHRoZSByZWNpcGVzIHRoYXQgYnVpbGQgdGhlIENhbmFkaWFuCiAgICAgICAgIENyb3NzLWNvbXBpbGF0aW9uIHRvb2xzIGZvciBTREtzLgogICAgICAgICBTZWUgdGhlCi0gICAgICAgICI8bGluayBsaW5rZW5kPSdjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4tZ2VuZXJhdGlvbic+Q3Jvc3MtRGV2ZWxvcG1lbnQgVG9vbGNoYWluIEdlbmVyYXRpb248L2xpbms+IgotICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGRpc2N1c3Npb24gb24gdGhlc2UgY3Jvc3MtY29tcGlsYXRpb24gdG9vbHMuCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbi1nZW5lcmF0aW9uJz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW4gR2VuZXJhdGlvbjwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwgZm9yIG1vcmUKKyAgICAgICAgZGlzY3Vzc2lvbiBvbiB0aGVzZSBjcm9zcy1jb21waWxhdGlvbiB0b29scy4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKQEAgLTU4MSw4ICs1NzksOSBAQAogICAgICAgICBwcm92aWRlcyBzdXBwb3J0IGZvciB0aGUgcmVjaXBlcyB0aGF0IGJ1aWxkIHRoZSBjcm9zcy1jb21waWxhdGlvbgogICAgICAgICB0b29scyB1c2VkIGZvciBidWlsZGluZyBTREtzLgogICAgICAgICBTZWUgdGhlCi0gICAgICAgICI8bGluayBsaW5rZW5kPSdjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4tZ2VuZXJhdGlvbic+Q3Jvc3MtRGV2ZWxvcG1lbnQgVG9vbGNoYWluIEdlbmVyYXRpb248L2xpbms+IgotICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGRpc2N1c3Npb24gb24gdGhlc2UgY3Jvc3MtY29tcGlsYXRpb24gdG9vbHMuCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbi1nZW5lcmF0aW9uJz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW4gR2VuZXJhdGlvbjwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwgZm9yIG1vcmUKKyAgICAgICAgZGlzY3Vzc2lvbiBvbiB0aGVzZSBjcm9zcy1jb21waWxhdGlvbiB0b29scy4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKQEAgLTEyNDksOCArMTI0OCw4IEBACiAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1c2luZ3Bva3ktZXh0ZW5kLWN1c3RvbWltYWdlJz5DdXN0b21pemluZyBJbWFnZXM8L3VsaW5rPiIKICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgaW1hZ2VzIGFyZSBjcmVhdGVkLCBzZWUgdGhlCi0gICAgICAgICI8bGluayBsaW5rZW5kPSdpbWFnZXMtZGV2LWVudmlyb25tZW50Jz5JbWFnZXM8L2xpbms+IiBzZWN0aW9uIGVsc2V3aGVyZQotICAgICAgICBpbiB0aGlzIG1hbnVhbC4KKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjaW1hZ2VzLWRldi1lbnZpcm9ubWVudCc+SW1hZ2VzPC91bGluaz4iCisgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNwZXRzIE1hbnVhbC4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKQEAgLTEyOTEsNyArMTI5MCw3IEBACiAgICAgICAgIFRoaXMgY2xhc3MgYWxzbyBoYW5kbGVzIGNvbnZlcnNpb24gYW5kIGNvbXByZXNzaW9uIG9mIGltYWdlcy4KICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICBUbyBidWlsZCBhIFZNd2FyZSBWTURLIGltYWdlLCB5b3UgbmVlZCB0byBhZGQgIndpYy52bWRrIiB0bwotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgIFRoaXMgd291bGQgYWxzbyBiZSBzaW1pbGFyIGZvciBWaXJ0dWFsIEJveCBWaXJ0dWFsIERpc2sgSW1hZ2UKICAgICAgICAgICAgICgidmRpIikgYW5kIFFFTVUgQ29weSBPbiBXcml0ZSBWZXJzaW9uIDIgKCJxY293MiIpIGltYWdlcy4KICAgICAgICAgPC9ub3RlPgpAQCAtMTU1Miw3ICsxNTUxLDggQEAKICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRklMRVMnPjxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICAgICAgICAgIHZhcmlhYmxlIHZhbHVlcyB0aGF0IGNvbnRhaW4gIi8vIiwgd2hpY2ggaXMgaW52YWxpZC4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmhvc3QtdXNlci1jb250YW1pbmF0ZWQ6PC9maWxlbmFtZT48L2VtcGhhc2lzPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdpbnNhbmUtaG9zdC11c2VyLWNvbnRhbWluYXRlZCc+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5ob3N0LXVzZXItY29udGFtaW5hdGVkOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICBDaGVja3MgdGhhdCBubyBwYWNrYWdlIHByb2R1Y2VkIGJ5IHRoZSByZWNpcGUgY29udGFpbnMgYW55CiAgICAgICAgICAgICAgICAgZmlsZXMgb3V0c2lkZSBvZiA8ZmlsZW5hbWU+L2hvbWU8L2ZpbGVuYW1lPiB3aXRoIGEgdXNlciBvcgogICAgICAgICAgICAgICAgIGdyb3VwIElEIHRoYXQgbWF0Y2hlcyB0aGUgdXNlciBydW5uaW5nIEJpdEJha2UuCkBAIC0xODgzLDYgKzE4ODMsMTcgQEAKICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKKzxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1rZXJuZWwtZGV2aWNldHJlZSc+CisgICAgPHRpdGxlPjxmaWxlbmFtZT5rZXJuZWwtZGV2aWNldHJlZS5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+a2VybmVsLWRldmljZXRyZWU8L2ZpbGVuYW1lPiBjbGFzcywgd2hpY2ggaXMgaW5oZXJpdGVkIGJ5CisgICAgICAgIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1rZXJuZWwnPjxmaWxlbmFtZT5rZXJuZWw8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgY2xhc3MsIHN1cHBvcnRzIGRldmljZSB0cmVlIGdlbmVyYXRpb24uCisgICAgPC9wYXJhPgorPC9zZWN0aW9uPgorCiA8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMta2VybmVsLWZpdGltYWdlJz4KICAgICA8dGl0bGU+PGZpbGVuYW1lPmtlcm5lbC1maXRpbWFnZS5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgogCkBAIC0yMTIyLDcgKzIxMzMsNyBAQAogCiAgICAgPHBhcmE+CiAgICAgICAgIEZvciBnZW5lcmFsIGluZm9ybWF0aW9uIG9uIG91dC1vZi10cmVlIExpbnV4IGtlcm5lbCBtb2R1bGVzLCBzZWUgdGhlCi0gICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19LRVJORUxfVVJMOyNpbmNvcnBvcmF0aW5nLW91dC1vZi10cmVlLW1vZHVsZXMnPkluY29ycG9yYXRpbmcgT3V0LW9mLVRyZWUgTW9kdWxlczwvdWxpbms+IgorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I2luY29ycG9yYXRpbmctb3V0LW9mLXRyZWUtbW9kdWxlcyc+SW5jb3Jwb3JhdGluZyBPdXQtb2YtVHJlZSBNb2R1bGVzPC91bGluaz4iCiAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbC4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CkBAIC0yNzA5LDggKzI3MjAsOCBAQAogICAgIDxwYXJhPgogICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluCiAgICAgICAgIGdlbmVyYXRpb24sIHNlZSB0aGUKLSAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbi1nZW5lcmF0aW9uJz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW4gR2VuZXJhdGlvbjwvbGluaz4iCi0gICAgICAgIHNlY3Rpb24uCisgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbi1nZW5lcmF0aW9uJz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW4gR2VuZXJhdGlvbjwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCiAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBhZHZhbnRhZ2VzIGdhaW5lZCB3aGVuIGJ1aWxkaW5nIGEKICAgICAgICAgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluIHVzaW5nIHRoZQogICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcG9wdWxhdGVfc2RrJz48ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc2RrPC9maWxlbmFtZT48L2xpbms+CkBAIC0zMDA3LDggKzMwMTgsOCBAQAogCiAgICAgPHBhcmE+CiAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgcm9vdCBmaWxlc3lzdGVtIGltYWdlcyBhcmUgY3JlYXRlZCwgc2VlIHRoZQotICAgICAgICAiPGxpbmsgbGlua2VuZD0naW1hZ2UtZ2VuZXJhdGlvbi1kZXYtZW52aXJvbm1lbnQnPkltYWdlIEdlbmVyYXRpb248L2xpbms+IgotICAgICAgICBzZWN0aW9uLgorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNpbWFnZS1nZW5lcmF0aW9uLWRldi1lbnZpcm9ubWVudCc+SW1hZ2UgR2VuZXJhdGlvbjwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCiAgICAgPC9wYXJhPgogPC9zZWN0aW9uPgogCkBAIC0zMTY5LDggKzMxODAsOCBAQAogCiAgICAgPHBhcmE+CiAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHNzdGF0ZSwgc2VlIHRoZQotICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2hhcmVkLXN0YXRlLWNhY2hlJz5TaGFyZWQgU3RhdGUgQ2FjaGU8L2xpbms+IgotICAgICAgICBzZWN0aW9uLgorICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzaGFyZWQtc3RhdGUtY2FjaGUnPlNoYXJlZCBTdGF0ZSBDYWNoZTwvdWxpbms+IgorICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCiAgICAgPC9wYXJhPgogPC9zZWN0aW9uPgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyMTk3ZDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjc2MSArMCwwIEBACi08IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCi0iaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgotWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgotCi08Y2hhcHRlciBpZD0ncmVmLWRldmVsb3BtZW50LWVudmlyb25tZW50Jz4KLTx0aXRsZT5UaGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDwvdGl0bGU+Ci0KLTxwYXJhPgotICAgIFRoaXMgY2hhcHRlciB0YWtlcyBhIGxvb2sgYXQgdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQKLSAgICBlbnZpcm9ubWVudCBhbmQgYWxzbyBwcm92aWRlcyBhIGRldGFpbGVkIGxvb2sgYXQgd2hhdCBnb2VzIG9uIGR1cmluZwotICAgIGRldmVsb3BtZW50IGluIHRoYXQgZW52aXJvbm1lbnQuCi0gICAgVGhlIGNoYXB0ZXIgcHJvdmlkZXMgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBlbnZpcm9ubWVudCBjb25jZXB0cyB0aGF0Ci0gICAgaGVscCB5b3UgdW5kZXJzdGFuZCBob3cgd29yayBpcyBhY2NvbXBsaXNoZWQgaW4gYW4gb3BlbiBzb3VyY2UgZW52aXJvbm1lbnQsCi0gICAgd2hpY2ggaXMgdmVyeSBkaWZmZXJlbnQgYXMgY29tcGFyZWQgdG8gd29yayBhY2NvbXBsaXNoZWQgaW4gYSBjbG9zZWQsCi0gICAgcHJvcHJpZXRhcnkgZW52aXJvbm1lbnQuCi08L3BhcmE+Ci0KLTxwYXJhPgotICAgIFNwZWNpZmljYWxseSwgdGhpcyBjaGFwdGVyIGFkZHJlc3NlcyBvcGVuIHNvdXJjZSBwaGlsb3NvcGh5LCB3b3JrZmxvd3MsCi0gICAgR2l0LCBzb3VyY2UgcmVwb3NpdG9yaWVzLCBsaWNlbnNpbmcsIHJlY2lwZSBzeW50YXgsIGFuZCBkZXZlbG9wbWVudAotICAgIHN5bnRheC4KLTwvcGFyYT4KLQotPHNlY3Rpb24gaWQ9J29wZW4tc291cmNlLXBoaWxvc29waHknPgotICAgIDx0aXRsZT5PcGVuIFNvdXJjZSBQaGlsb3NvcGh5PC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBPcGVuIHNvdXJjZSBwaGlsb3NvcGh5IGlzIGNoYXJhY3Rlcml6ZWQgYnkgc29mdHdhcmUgZGV2ZWxvcG1lbnQKLSAgICAgICAgZGlyZWN0ZWQgYnkgcGVlciBwcm9kdWN0aW9uIGFuZCBjb2xsYWJvcmF0aW9uIHRocm91Z2ggYW4gYWN0aXZlCi0gICAgICAgIGNvbW11bml0eSBvZiBkZXZlbG9wZXJzLgotICAgICAgICBDb250cmFzdCB0aGlzIHRvIHRoZSBtb3JlIHN0YW5kYXJkIGNlbnRyYWxpemVkIGRldmVsb3BtZW50IG1vZGVscwotICAgICAgICB1c2VkIGJ5IGNvbW1lcmNpYWwgc29mdHdhcmUgY29tcGFuaWVzIHdoZXJlIGEgZmluaXRlIHNldCBvZiBkZXZlbG9wZXJzCi0gICAgICAgIHByb2R1Y2VzIGEgcHJvZHVjdCBmb3Igc2FsZSB1c2luZyBhIGRlZmluZWQgc2V0IG9mIHByb2NlZHVyZXMgdGhhdAotICAgICAgICB1bHRpbWF0ZWx5IHJlc3VsdCBpbiBhbiBlbmQgcHJvZHVjdCB3aG9zZSBhcmNoaXRlY3R1cmUgYW5kIHNvdXJjZQotICAgICAgICBtYXRlcmlhbCBhcmUgY2xvc2VkIHRvIHRoZSBwdWJsaWMuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIE9wZW4gc291cmNlIHByb2plY3RzIGNvbmNlcHR1YWxseSBoYXZlIGRpZmZlcmluZyBjb25jdXJyZW50IGFnZW5kYXMsCi0gICAgICAgIGFwcHJvYWNoZXMsIGFuZCBwcm9kdWN0aW9uLgotICAgICAgICBUaGVzZSBmYWNldHMgb2YgdGhlIGRldmVsb3BtZW50IHByb2Nlc3MgY2FuIGNvbWUgZnJvbSBhbnlvbmUgaW4gdGhlCi0gICAgICAgIHB1YmxpYyAoY29tbXVuaXR5KSB0aGF0IGhhcyBhIHN0YWtlIGluIHRoZSBzb2Z0d2FyZSBwcm9qZWN0LgotICAgICAgICBUaGUgb3BlbiBzb3VyY2UgZW52aXJvbm1lbnQgY29udGFpbnMgbmV3IGNvcHlyaWdodCwgbGljZW5zaW5nLCBkb21haW4sCi0gICAgICAgIGFuZCBjb25zdW1lciBpc3N1ZXMgdGhhdCBkaWZmZXIgZnJvbSB0aGUgbW9yZSB0cmFkaXRpb25hbCBkZXZlbG9wbWVudAotICAgICAgICBlbnZpcm9ubWVudC4KLSAgICAgICAgSW4gYW4gb3BlbiBzb3VyY2UgZW52aXJvbm1lbnQsIHRoZSBlbmQgcHJvZHVjdCwgc291cmNlIG1hdGVyaWFsLAotICAgICAgICBhbmQgZG9jdW1lbnRhdGlvbiBhcmUgYWxsIGF2YWlsYWJsZSB0byB0aGUgcHVibGljIGF0IG5vIGNvc3QuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEEgYmVuY2htYXJrIGV4YW1wbGUgb2YgYW4gb3BlbiBzb3VyY2UgcHJvamVjdCBpcyB0aGUgTGludXgga2VybmVsLAotICAgICAgICB3aGljaCB3YXMgaW5pdGlhbGx5IGNvbmNlaXZlZCBhbmQgY3JlYXRlZCBieSBGaW5uaXNoIGNvbXB1dGVyIHNjaWVuY2UKLSAgICAgICAgc3R1ZGVudCBMaW51cyBUb3J2YWxkcyBpbiAxOTkxLgotICAgICAgICBDb252ZXJzZWx5LCBhIGdvb2QgZXhhbXBsZSBvZiBhIG5vbi1vcGVuIHNvdXJjZSBwcm9qZWN0IGlzIHRoZQotICAgICAgICA8dHJhZGVtYXJrIGNsYXNzPSdyZWdpc3RlcmVkJz5XaW5kb3dzPC90cmFkZW1hcms+IGZhbWlseSBvZiBvcGVyYXRpbmcKLSAgICAgICAgc3lzdGVtcyBkZXZlbG9wZWQgYnkKLSAgICAgICAgPHRyYWRlbWFyayBjbGFzcz0ncmVnaXN0ZXJlZCc+TWljcm9zb2Z0PC90cmFkZW1hcms+IENvcnBvcmF0aW9uLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBXaWtpcGVkaWEgaGFzIGEgZ29vZCBoaXN0b3JpY2FsIGRlc2NyaXB0aW9uIG9mIHRoZSBPcGVuIFNvdXJjZQotICAgICAgICBQaGlsb3NvcGh5Ci0gICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3Blbl9zb3VyY2UnPmhlcmU8L3VsaW5rPi4KLSAgICAgICAgWW91IGNhbiBhbHNvIGZpbmQgaGVscGZ1bCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gcGFydGljaXBhdGUgaW4gdGhlCi0gICAgICAgIExpbnV4IENvbW11bml0eQotICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGRuLmxpbnV4Zm91bmRhdGlvbi5vcmcvYm9vay9ob3ctcGFydGljaXBhdGUtbGludXgtY29tbXVuaXR5Jz5oZXJlPC91bGluaz4uCi0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0nd29ya2Zsb3dzJz4KLSAgICA8dGl0bGU+V29ya2Zsb3dzPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgd29ya2Zsb3cgY29uY2VwdHMgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QgYW5kCi0gICAgICAgIEdpdC4KLSAgICAgICAgSW4gcGFydGljdWxhciwgdGhlIGluZm9ybWF0aW9uIGNvdmVycyBiYXNpYyBwcmFjdGljZXMgdGhhdCBkZXNjcmliZQotICAgICAgICByb2xlcyBhbmQgYWN0aW9ucyBpbiBhIGNvbGxhYm9yYXRpdmUgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCi0gICAgICAgIDxub3RlPgotICAgICAgICAgICAgSWYgeW91IGFyZSBmYW1pbGlhciB3aXRoIHRoaXMgdHlwZSBvZiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCwgeW91Ci0gICAgICAgICAgICBtaWdodCBub3Qgd2FudCB0byByZWFkIHRoaXMgc2VjdGlvbi4KLSAgICAgICAgPC9ub3RlPgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBmaWxlcyBhcmUgbWFpbnRhaW5lZCB1c2luZyBHaXQgaW4gIm1hc3RlciIKLSAgICAgICAgYnJhbmNoZXMgd2hvc2UgR2l0IGhpc3RvcmllcyB0cmFjayBldmVyeSBjaGFuZ2UgYW5kIHdob3NlIHN0cnVjdHVyZXMKLSAgICAgICAgcHJvdmlkZXMgYnJhbmNoZXMgZm9yIGFsbCBkaXZlcmdpbmcgZnVuY3Rpb25hbGl0eS4KLSAgICAgICAgQWx0aG91Z2ggdGhlcmUgaXMgbm8gbmVlZCB0byB1c2UgR2l0LCBtYW55IG9wZW4gc291cmNlIHByb2plY3RzIGRvIHNvLgotICAgIDxwYXJhPgotCi0gICAgPC9wYXJhPgotICAgICAgICBGb3IgdGhlIFlvY3RvIFByb2plY3QsIGEga2V5IGluZGl2aWR1YWwgY2FsbGVkIHRoZSAibWFpbnRhaW5lciIgaXMKLSAgICAgICAgcmVzcG9uc2libGUgZm9yIHRoZSAibWFzdGVyIiBicmFuY2ggb2YgYSBnaXZlbiBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgVGhlICJtYXN0ZXIiIGJyYW5jaCBpcyB0aGUg4oCcdXBzdHJlYW3igJ0gcmVwb3NpdG9yeSBmcm9tIHdoaWNoIGZpbmFsIG9yCi0gICAgICAgIG1vc3QgcmVjZW50IGJ1aWxkcyBvZiB0aGUgcHJvamVjdCBvY2N1ci4KLSAgICAgICAgVGhlIG1haW50YWluZXIgaXMgcmVzcG9uc2libGUgZm9yIGFjY2VwdGluZyBjaGFuZ2VzIGZyb20gb3RoZXIKLSAgICAgICAgZGV2ZWxvcGVycyBhbmQgZm9yIG9yZ2FuaXppbmcgdGhlIHVuZGVybHlpbmcgYnJhbmNoIHN0cnVjdHVyZSB0bwotICAgICAgICByZWZsZWN0IHJlbGVhc2Ugc3RyYXRlZ2llcyBhbmQgc28gZm9ydGguCi0gICAgICAgIDxub3RlPkZvciBpbmZvcm1hdGlvbiBvbiBmaW5kaW5nIG91dCB3aG8gaXMgcmVzcG9uc2libGUgZm9yIChtYWludGFpbnMpCi0gICAgICAgICAgICBhIHBhcnRpY3VsYXIgYXJlYSBvZiBjb2RlLCBzZWUgdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjaG93LXRvLXN1Ym1pdC1hLWNoYW5nZSc+U3VibWl0dGluZyBhIENoYW5nZSB0byB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCi0gICAgICAgIDwvbm90ZT4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeSBhbHNvIGhhcyBhbgotICAgICAgICB1cHN0cmVhbSBjb250cmlidXRpb24gR2l0IHJlcG9zaXRvcnkgbmFtZWQKLSAgICAgICAgPGZpbGVuYW1lPnBva3ktY29udHJpYjwvZmlsZW5hbWU+LgotICAgICAgICBZb3UgY2FuIHNlZSBhbGwgdGhlIGJyYW5jaGVzIGluIHRoaXMgcmVwb3NpdG9yeSB1c2luZyB0aGUgd2ViIGludGVyZmFjZQotICAgICAgICBvZiB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7Jz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4gb3JnYW5pemVkCi0gICAgICAgIHdpdGhpbiB0aGUgIlBva3kgU3VwcG9ydCIgYXJlYS4KLSAgICAgICAgVGhlc2UgYnJhbmNoZXMgdGVtcG9yYXJpbHkgaG9sZCBjaGFuZ2VzIHRvIHRoZSBwcm9qZWN0IHRoYXQgaGF2ZSBiZWVuCi0gICAgICAgIHN1Ym1pdHRlZCBvciBjb21taXR0ZWQgYnkgdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgdGVhbSBhbmQgYnkKLSAgICAgICAgY29tbXVuaXR5IG1lbWJlcnMgd2hvIGNvbnRyaWJ1dGUgdG8gdGhlIHByb2plY3QuCi0gICAgICAgIFRoZSBtYWludGFpbmVyIGRldGVybWluZXMgaWYgdGhlIGNoYW5nZXMgYXJlIHF1YWxpZmllZCB0byBiZSBtb3ZlZAotICAgICAgICBmcm9tIHRoZSAiY29udHJpYiIgYnJhbmNoZXMgaW50byB0aGUgIm1hc3RlciIgYnJhbmNoIG9mIHRoZSBHaXQKLSAgICAgICAgcmVwb3NpdG9yeS4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgRGV2ZWxvcGVycyAoaW5jbHVkaW5nIGNvbnRyaWJ1dGluZyBjb21tdW5pdHkgbWVtYmVycykgY3JlYXRlIGFuZAotICAgICAgICBtYWludGFpbiBjbG9uZWQgcmVwb3NpdG9yaWVzIG9mIHRoZSB1cHN0cmVhbSAibWFzdGVyIiBicmFuY2guCi0gICAgICAgIFRoZSBjbG9uZWQgcmVwb3NpdG9yaWVzIGFyZSBsb2NhbCB0byB0aGVpciBkZXZlbG9wbWVudCBwbGF0Zm9ybXMgYW5kCi0gICAgICAgIGFyZSB1c2VkIHRvIGRldmVsb3AgY2hhbmdlcy4KLSAgICAgICAgV2hlbiBhIGRldmVsb3BlciBpcyBzYXRpc2ZpZWQgd2l0aCBhIHBhcnRpY3VsYXIgZmVhdHVyZSBvciBjaGFuZ2UsCi0gICAgICAgIHRoZXkgInB1c2giIHRoZSBjaGFuZ2VzIHRvIHRoZSBhcHByb3ByaWF0ZSAiY29udHJpYiIgcmVwb3NpdG9yeS4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgRGV2ZWxvcGVycyBhcmUgcmVzcG9uc2libGUgZm9yIGtlZXBpbmcgdGhlaXIgbG9jYWwgcmVwb3NpdG9yeQotICAgICAgICB1cC10by1kYXRlIHdpdGggIm1hc3RlciIuCi0gICAgICAgIFRoZXkgYXJlIGFsc28gcmVzcG9uc2libGUgZm9yIHN0cmFpZ2h0ZW5pbmcgb3V0IGFueSBjb25mbGljdHMgdGhhdAotICAgICAgICBtaWdodCBhcmlzZSB3aXRoaW4gZmlsZXMgdGhhdCBhcmUgYmVpbmcgd29ya2VkIG9uIHNpbXVsdGFuZW91c2x5IGJ5Ci0gICAgICAgIG1vcmUgdGhhbiBvbmUgcGVyc29uLgotICAgICAgICBBbGwgdGhpcyB3b3JrIGlzIGRvbmUgbG9jYWxseSBvbiB0aGUgZGV2ZWxvcGVy4oCZcyBtYWNoaW5lIGJlZm9yZQotICAgICAgICBhbnl0aGluZyBpcyBwdXNoZWQgdG8gYSAiY29udHJpYiIgYXJlYSBhbmQgZXhhbWluZWQgYXQgdGhlIG1haW50YWluZXLigJlzCi0gICAgICAgIGxldmVsLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBBIHNvbWV3aGF0IGZvcm1hbCBtZXRob2QgZXhpc3RzIGJ5IHdoaWNoIGRldmVsb3BlcnMgY29tbWl0IGNoYW5nZXMKLSAgICAgICAgYW5kIHB1c2ggdGhlbSBpbnRvIHRoZSAiY29udHJpYiIgYXJlYSBhbmQgc3Vic2VxdWVudGx5IHJlcXVlc3QgdGhhdAotICAgICAgICB0aGUgbWFpbnRhaW5lciBpbmNsdWRlIHRoZW0gaW50byAibWFzdGVyIi4KLSAgICAgICAgVGhpcyBwcm9jZXNzIGlzIGNhbGxlZCDigJxzdWJtaXR0aW5nIGEgcGF0Y2jigJ0gb3IgInN1Ym1pdHRpbmcgYSBjaGFuZ2UuIgotICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gc3VibWl0dGluZyBwYXRjaGVzIGFuZCBjaGFuZ2VzLCBzZWUgdGhlCi0gICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5TdWJtaXR0aW5nIGEgQ2hhbmdlIHRvIHRoZSBZb2N0byBQcm9qZWN0PC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUbyBzdW1tYXJpemUgdGhlIGRldmVsb3BtZW50IHdvcmtmbG93OiAgYSBzaW5nbGUgcG9pbnQgb2YgZW50cnkKLSAgICAgICAgZXhpc3RzIGZvciBjaGFuZ2VzIGludG8gdGhlIHByb2plY3TigJlzICJtYXN0ZXIiIGJyYW5jaCBvZiB0aGUKLSAgICAgICAgR2l0IHJlcG9zaXRvcnksIHdoaWNoIGlzIGNvbnRyb2xsZWQgYnkgdGhlIHByb2plY3TigJlzIG1haW50YWluZXIuCi0gICAgICAgIEFuZCwgYSBzZXQgb2YgZGV2ZWxvcGVycyBleGlzdCB3aG8gaW5kZXBlbmRlbnRseSBkZXZlbG9wLCB0ZXN0LCBhbmQKLSAgICAgICAgc3VibWl0IGNoYW5nZXMgdG8gImNvbnRyaWIiIGFyZWFzIGZvciB0aGUgbWFpbnRhaW5lciB0byBleGFtaW5lLgotICAgICAgICBUaGUgbWFpbnRhaW5lciB0aGVuIGNob29zZXMgd2hpY2ggY2hhbmdlcyBhcmUgZ29pbmcgdG8gYmVjb21lIGEKLSAgICAgICAgcGVybWFuZW50IHBhcnQgb2YgdGhlIHByb2plY3QuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9naXQtd29ya2Zsb3cucG5nIiB3aWR0aD0iNmluIiBkZXB0aD0iM2luIiBhbGlnbj0ibGVmdCIgc2NhbGVmaXQ9IjEiIC8+Ci0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFdoaWxlIGVhY2ggZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgaXMgdW5pcXVlLCB0aGVyZSBhcmUgc29tZSBiZXN0Ci0gICAgICAgIHByYWN0aWNlcyBvciBtZXRob2RzIHRoYXQgaGVscCBkZXZlbG9wbWVudCBydW4gc21vb3RobHkuCi0gICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBkZXNjcmliZXMgc29tZSBvZiB0aGVzZSBwcmFjdGljZXMuCi0gICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IEdpdCB3b3JrZmxvd3MsIHNlZSB0aGUgd29ya2Zsb3cgdG9waWNzIGluCi0gICAgICAgIHRoZQotICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vYm9vay5naXQtc2NtLmNvbSc+R2l0IENvbW11bml0eSBCb29rPC91bGluaz4uCi0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1ha2UgU21hbGwgQ2hhbmdlczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEl0IGlzIGJlc3QgdG8ga2VlcCB0aGUgY2hhbmdlcyB5b3UgY29tbWl0IHNtYWxsIGFzIGNvbXBhcmVkIHRvCi0gICAgICAgICAgICAgICAgYnVuZGxpbmcgbWFueSBkaXNwYXJhdGUgY2hhbmdlcyBpbnRvIGEgc2luZ2xlIGNvbW1pdC4KLSAgICAgICAgICAgICAgICBUaGlzIHByYWN0aWNlIG5vdCBvbmx5IGtlZXBzIHRoaW5ncyBtYW5hZ2VhYmxlIGJ1dCBhbHNvIGFsbG93cwotICAgICAgICAgICAgICAgIHRoZSBtYWludGFpbmVyIHRvIG1vcmUgZWFzaWx5IGluY2x1ZGUgb3IgcmVmdXNlIGNoYW5nZXMuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+SXQgaXMgYWxzbyBnb29kIHByYWN0aWNlIHRvIGxlYXZlIHRoZSByZXBvc2l0b3J5IGluIGEKLSAgICAgICAgICAgICAgICBzdGF0ZSB0aGF0IGFsbG93cyB5b3UgdG8gc3RpbGwgc3VjY2Vzc2Z1bGx5IGJ1aWxkIHlvdXIgcHJvamVjdC4KLSAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgZG8gbm90IGNvbW1pdCBoYWxmIG9mIGEgZmVhdHVyZSwKLSAgICAgICAgICAgICAgICB0aGVuIGFkZCB0aGUgb3RoZXIgaGFsZiBhcyBhIHNlcGFyYXRlLCBsYXRlciBjb21taXQuCi0gICAgICAgICAgICAgICAgRWFjaCBjb21taXQgc2hvdWxkIHRha2UgeW91IGZyb20gb25lIGJ1aWxkYWJsZSBwcm9qZWN0IHN0YXRlCi0gICAgICAgICAgICAgICAgdG8gYW5vdGhlciBidWlsZGFibGUgc3RhdGUuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVzZSBCcmFuY2hlcyBMaWJlcmFsbHk6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBJdCBpcyB2ZXJ5IGVhc3kgdG8gY3JlYXRlLCB1c2UsIGFuZCBkZWxldGUgbG9jYWwgYnJhbmNoZXMgaW4KLSAgICAgICAgICAgICAgICB5b3VyIHdvcmtpbmcgR2l0IHJlcG9zaXRvcnkuCi0gICAgICAgICAgICAgICAgWW91IGNhbiBuYW1lIHRoZXNlIGJyYW5jaGVzIGFueXRoaW5nIHlvdSBsaWtlLgotICAgICAgICAgICAgICAgIEl0IGlzIGhlbHBmdWwgdG8gZ2l2ZSB0aGVtIG5hbWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFydGljdWxhcgotICAgICAgICAgICAgICAgIGZlYXR1cmUgb3IgY2hhbmdlIG9uIHdoaWNoIHlvdSBhcmUgd29ya2luZy4KLSAgICAgICAgICAgICAgICBPbmNlIHlvdSBhcmUgZG9uZSB3aXRoIGEgZmVhdHVyZSBvciBjaGFuZ2UgYW5kIGhhdmUgbWVyZ2VkIGl0Ci0gICAgICAgICAgICAgICAgaW50byB5b3VyIGxvY2FsIG1hc3RlciBicmFuY2gsIHNpbXBseSBkaXNjYXJkIHRoZSB0ZW1wb3JhcnkKLSAgICAgICAgICAgICAgICBicmFuY2guCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1lcmdlIENoYW5nZXM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmdpdCBtZXJnZTwvZmlsZW5hbWU+IGNvbW1hbmQgYWxsb3dzIHlvdSB0byB0YWtlCi0gICAgICAgICAgICAgICAgdGhlIGNoYW5nZXMgZnJvbSBvbmUgYnJhbmNoIGFuZCBmb2xkIHRoZW0gaW50byBhbm90aGVyIGJyYW5jaC4KLSAgICAgICAgICAgICAgICBUaGlzIHByb2Nlc3MgaXMgZXNwZWNpYWxseSBoZWxwZnVsIHdoZW4gbW9yZSB0aGFuIGEgc2luZ2xlCi0gICAgICAgICAgICAgICAgZGV2ZWxvcGVyIG1pZ2h0IGJlIHdvcmtpbmcgb24gZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBzYW1lCi0gICAgICAgICAgICAgICAgZmVhdHVyZS4KLSAgICAgICAgICAgICAgICBNZXJnaW5nIGNoYW5nZXMgYWxzbyBhdXRvbWF0aWNhbGx5IGlkZW50aWZpZXMgYW55IGNvbGxpc2lvbnMKLSAgICAgICAgICAgICAgICBvciAiY29uZmxpY3RzIiB0aGF0IG1pZ2h0IGhhcHBlbiBhcyBhIHJlc3VsdCBvZiB0aGUgc2FtZSBsaW5lcwotICAgICAgICAgICAgICAgIG9mIGNvZGUgYmVpbmcgYWx0ZXJlZCBieSB0d28gZGlmZmVyZW50IGRldmVsb3BlcnMuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1hbmFnZSBCcmFuY2hlczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEJlY2F1c2UgYnJhbmNoZXMgYXJlIGVhc3kgdG8gdXNlLCB5b3Ugc2hvdWxkIHVzZSBhIHN5c3RlbQotICAgICAgICAgICAgICAgIHdoZXJlIGJyYW5jaGVzIGluZGljYXRlIHZhcnlpbmcgbGV2ZWxzIG9mIGNvZGUgcmVhZGluZXNzLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgY2FuIGhhdmUgYSAid29yayIgYnJhbmNoIHRvIGRldmVsb3AgaW4sIGEKLSAgICAgICAgICAgICAgICAidGVzdCIgYnJhbmNoIHdoZXJlIHRoZSBjb2RlIG9yIGNoYW5nZSBpcyB0ZXN0ZWQsIGEgInN0YWdlIgotICAgICAgICAgICAgICAgIGJyYW5jaCB3aGVyZSBjaGFuZ2VzIGFyZSByZWFkeSB0byBiZSBjb21taXR0ZWQsIGFuZCBzbyBmb3J0aC4KLSAgICAgICAgICAgICAgICBBcyB5b3VyIHByb2plY3QgZGV2ZWxvcHMsIHlvdSBjYW4gbWVyZ2UgY29kZSBhY3Jvc3MgdGhlCi0gICAgICAgICAgICAgICAgYnJhbmNoZXMgdG8gcmVmbGVjdCBldmVyLWluY3JlYXNpbmcgc3RhYmxlIHN0YXRlcyBvZiB0aGUKLSAgICAgICAgICAgICAgICBkZXZlbG9wbWVudC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VXNlIFB1c2ggYW5kIFB1bGw6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBUaGUgcHVzaC1wdWxsIHdvcmtmbG93IGlzIGJhc2VkIG9uIHRoZSBjb25jZXB0IG9mIGRldmVsb3BlcnMKLSAgICAgICAgICAgICAgICAicHVzaGluZyIgbG9jYWwgY29tbWl0cyB0byBhIHJlbW90ZSByZXBvc2l0b3J5LCB3aGljaCBpcwotICAgICAgICAgICAgICAgIHVzdWFsbHkgYSBjb250cmlidXRpb24gcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICBUaGlzIHdvcmtmbG93IGlzIGFsc28gYmFzZWQgb24gZGV2ZWxvcGVycyAicHVsbGluZyIga25vd24KLSAgICAgICAgICAgICAgICBzdGF0ZXMgb2YgdGhlIHByb2plY3QgZG93biBpbnRvIHRoZWlyIGxvY2FsIGRldmVsb3BtZW50Ci0gICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzLgotICAgICAgICAgICAgICAgIFRoZSB3b3JrZmxvdyBlYXNpbHkgYWxsb3dzIHlvdSB0byBwdWxsIGNoYW5nZXMgc3VibWl0dGVkIGJ5Ci0gICAgICAgICAgICAgICAgb3RoZXIgZGV2ZWxvcGVycyBmcm9tIHRoZSB1cHN0cmVhbSByZXBvc2l0b3J5IGludG8geW91cgotICAgICAgICAgICAgICAgIHdvcmsgYXJlYSBlbnN1cmluZyB0aGF0IHlvdSBoYXZlIHRoZSBtb3N0IHJlY2VudCBzb2Z0d2FyZQotICAgICAgICAgICAgICAgIG9uIHdoaWNoIHRvIGRldmVsb3AuCi0gICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaGFzIHR3byBzY3JpcHRzIG5hbWVkCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNyZWF0ZS1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2VuZC1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPiB0aGF0IHNoaXAgd2l0aCB0aGUKLSAgICAgICAgICAgICAgICByZWxlYXNlIHRvIGZhY2lsaXRhdGUgdGhpcyB3b3JrZmxvdy4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlc2Ugc2NyaXB0cyBpbiB0aGUgPGZpbGVuYW1lPnNjcmlwdHM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGZvbGRlciBvZiB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KLSAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGVzZSBzY3JpcHRzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3B1c2hpbmctYS1jaGFuZ2UtdXBzdHJlYW0nPlVzaW5nIFNjcmlwdHMgdG8gUHVzaCBhIENoYW5nZSBVcHN0cmVhbSBhbmQgUmVxdWVzdCBhIFB1bGw8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UGF0Y2ggV29ya2Zsb3c6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBUaGlzIHdvcmtmbG93IGFsbG93cyB5b3UgdG8gbm90aWZ5IHRoZSBtYWludGFpbmVyIHRocm91Z2ggYW4KLSAgICAgICAgICAgICAgICBlbWFpbCB0aGF0IHlvdSBoYXZlIGEgY2hhbmdlIChvciBwYXRjaCkgeW91IHdvdWxkIGxpa2UKLSAgICAgICAgICAgICAgICBjb25zaWRlcmVkIGZvciB0aGUgIm1hc3RlciIgYnJhbmNoIG9mIHRoZSBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICBUbyBzZW5kIHRoaXMgdHlwZSBvZiBjaGFuZ2UsIHlvdSBmb3JtYXQgdGhlIHBhdGNoIGFuZCB0aGVuCi0gICAgICAgICAgICAgICAgc2VuZCB0aGUgZW1haWwgdXNpbmcgdGhlIEdpdCBjb21tYW5kcwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgZm9ybWF0LXBhdGNoPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBzZW5kLWVtYWlsPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlc2Ugc2NyaXB0cywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5TdWJtaXR0aW5nIGEgQ2hhbmdlIHRvIHRoZSBZb2N0byBQcm9qZWN0PC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgIDwvcGFyYT4KLTwvc2VjdGlvbj4KLQotPHNlY3Rpb24gaWQ9J2dpdCc+Ci0gICAgPHRpdGxlPkdpdDwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgbWFrZXMgZXh0ZW5zaXZlIHVzZSBvZiBHaXQsIHdoaWNoIGlzIGEKLSAgICAgICAgZnJlZSwgb3BlbiBzb3VyY2UgZGlzdHJpYnV0ZWQgdmVyc2lvbiBjb250cm9sIHN5c3RlbS4KLSAgICAgICAgR2l0IHN1cHBvcnRzIGRpc3RyaWJ1dGVkIGRldmVsb3BtZW50LCBub24tbGluZWFyIGRldmVsb3BtZW50LAotICAgICAgICBhbmQgY2FuIGhhbmRsZSBsYXJnZSBwcm9qZWN0cy4KLSAgICAgICAgSXQgaXMgYmVzdCB0aGF0IHlvdSBoYXZlIHNvbWUgZnVuZGFtZW50YWwgdW5kZXJzdGFuZGluZwotICAgICAgICBvZiBob3cgR2l0IHRyYWNrcyBwcm9qZWN0cyBhbmQgaG93IHRvIHdvcmsgd2l0aCBHaXQgaWYKLSAgICAgICAgeW91IGFyZSBnb2luZyB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QgZm9yIGRldmVsb3BtZW50LgotICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgYSBxdWljayBvdmVydmlldyBvZiBob3cgR2l0IHdvcmtzIGFuZAotICAgICAgICBwcm92aWRlcyB5b3Ugd2l0aCBhIHN1bW1hcnkgb2Ygc29tZSBlc3NlbnRpYWwgR2l0IGNvbW1hbmRzLgotICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEdpdCwgc2VlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQtc2NtLmNvbS9kb2N1bWVudGF0aW9uJz48L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCB0byBkb3dubG9hZCBHaXQsIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IGFkZAotICAgICAgICAgICAgICAgICAgICBHaXQgdG8geW91ciBzeXN0ZW0gdGhyb3VnaCB5b3VyIGRpc3RyaWJ1dGlvbidzICJzb2Z0d2FyZQotICAgICAgICAgICAgICAgICAgICBzdG9yZSIgKGUuZy4gZm9yIFVidW50dSwgdXNlIHRoZSBVYnVudHUgU29mdHdhcmUgZmVhdHVyZSkuCi0gICAgICAgICAgICAgICAgICAgIEZvciB0aGUgR2l0IGRvd25sb2FkIHBhZ2UsIHNlZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LXNjbS5jb20vZG93bmxvYWQnPjwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlcyBiZXlvbmQgdGhlIGxpbWl0ZWQgZmV3IGluIHRoaXMgc2VjdGlvbiBvbiBob3cKLSAgICAgICAgICAgICAgICAgICAgdG8gdXNlIEdpdCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN3b3JraW5nLXdpdGgteW9jdG8tcHJvamVjdC1zb3VyY2UtZmlsZXMnPldvcmtpbmcgV2l0aCBZb2N0byBQcm9qZWN0IFNvdXJjZSBGaWxlczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9ub3RlPgotICAgIDwvcGFyYT4KLQotICAgIDxzZWN0aW9uIGlkPSdyZXBvc2l0b3JpZXMtdGFncy1hbmQtYnJhbmNoZXMnPgotICAgICAgICA8dGl0bGU+UmVwb3NpdG9yaWVzLCBUYWdzLCBhbmQgQnJhbmNoZXM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQXMgbWVudGlvbmVkIGJyaWVmbHkgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24gYW5kIGFsc28gaW4gdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nd29ya2Zsb3dzJz5Xb3JrZmxvd3M8L2xpbms+IiBzZWN0aW9uLAotICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgbWFpbnRhaW5zIHNvdXJjZSByZXBvc2l0b3JpZXMgYXQKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaSc+PC91bGluaz4uCi0gICAgICAgICAgICBJZiB5b3UgbG9vayBhdCB0aGlzIHdlYi1pbnRlcmZhY2Ugb2YgdGhlIHJlcG9zaXRvcmllcywgZWFjaCBpdGVtCi0gICAgICAgICAgICBpcyBhIHNlcGFyYXRlIEdpdCByZXBvc2l0b3J5LgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBHaXQgcmVwb3NpdG9yaWVzIHVzZSBicmFuY2hpbmcgdGVjaG5pcXVlcyB0aGF0IHRyYWNrIGNvbnRlbnQKLSAgICAgICAgICAgIGNoYW5nZSAobm90IGZpbGVzKSB3aXRoaW4gYSBwcm9qZWN0IChlLmcuIGEgbmV3IGZlYXR1cmUgb3IgdXBkYXRlZAotICAgICAgICAgICAgZG9jdW1lbnRhdGlvbikuCi0gICAgICAgICAgICBDcmVhdGluZyBhIHRyZWUtbGlrZSBzdHJ1Y3R1cmUgYmFzZWQgb24gcHJvamVjdCBkaXZlcmdlbmNlIGFsbG93cwotICAgICAgICAgICAgZm9yIGV4Y2VsbGVudCBoaXN0b3JpY2FsIGluZm9ybWF0aW9uIG92ZXIgdGhlIGxpZmUgb2YgYSBwcm9qZWN0LgotICAgICAgICAgICAgVGhpcyBtZXRob2RvbG9neSBhbHNvIGFsbG93cyBmb3IgYW4gZW52aXJvbm1lbnQgZnJvbSB3aGljaCB5b3UgY2FuCi0gICAgICAgICAgICBkbyBsb3RzIG9mIGxvY2FsIGV4cGVyaW1lbnRhdGlvbiBvbiBwcm9qZWN0cyBhcyB5b3UgZGV2ZWxvcAotICAgICAgICAgICAgY2hhbmdlcyBvciBuZXcgZmVhdHVyZXMuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEEgR2l0IHJlcG9zaXRvcnkgcmVwcmVzZW50cyBhbGwgZGV2ZWxvcG1lbnQgZWZmb3J0cyBmb3IgYSBnaXZlbgotICAgICAgICAgICAgcHJvamVjdC4KLSAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgR2l0IHJlcG9zaXRvcnkgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBjb250YWlucwotICAgICAgICAgICAgYWxsIGNoYW5nZXMgYW5kIGRldmVsb3BtZW50cyBmb3IgUG9reSBvdmVyIHRoZSBjb3Vyc2Ugb2YgaXRzCi0gICAgICAgICAgICBlbnRpcmUgbGlmZS4KLSAgICAgICAgICAgIFRoYXQgbWVhbnMgdGhhdCBhbGwgY2hhbmdlcyB0aGF0IG1ha2UgdXAgYWxsIHJlbGVhc2VzIGFyZSBjYXB0dXJlZC4KLSAgICAgICAgICAgIFRoZSByZXBvc2l0b3J5IG1haW50YWlucyBhIGNvbXBsZXRlIGhpc3Rvcnkgb2YgY2hhbmdlcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IGNhbiBjcmVhdGUgYSBsb2NhbCBjb3B5IG9mIGFueSByZXBvc2l0b3J5IGJ5ICJjbG9uaW5nIiBpdAotICAgICAgICAgICAgd2l0aCB0aGUgPGZpbGVuYW1lPmdpdCBjbG9uZTwvZmlsZW5hbWU+IGNvbW1hbmQuCi0gICAgICAgICAgICBXaGVuIHlvdSBjbG9uZSBhIEdpdCByZXBvc2l0b3J5LCB5b3UgZW5kIHVwIHdpdGggYW4gaWRlbnRpY2FsCi0gICAgICAgICAgICBjb3B5IG9mIHRoZSByZXBvc2l0b3J5IG9uIHlvdXIgZGV2ZWxvcG1lbnQgc3lzdGVtLgotICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSBhIGxvY2FsIGNvcHkgb2YgYSByZXBvc2l0b3J5LCB5b3UgY2FuIHRha2Ugc3RlcHMgdG8KLSAgICAgICAgICAgIGRldmVsb3AgbG9jYWxseS4KLSAgICAgICAgICAgIEZvciBleGFtcGxlcyBvbiBob3cgdG8gY2xvbmUgR2l0IHJlcG9zaXRvcmllcywgc2VlIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3dvcmtpbmctd2l0aC15b2N0by1wcm9qZWN0LXNvdXJjZS1maWxlcyc+V29ya2luZyBXaXRoIFlvY3RvIFByb2plY3QgU291cmNlIEZpbGVzPC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSXQgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhhdCBHaXQgdHJhY2tzIGNvbnRlbnQgY2hhbmdlIGFuZAotICAgICAgICAgICAgbm90IGZpbGVzLgotICAgICAgICAgICAgR2l0IHVzZXMgImJyYW5jaGVzIiB0byBvcmdhbml6ZSBkaWZmZXJlbnQgZGV2ZWxvcG1lbnQgZWZmb3J0cy4KLSAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5IGhhcwotICAgICAgICAgICAgc2V2ZXJhbCBicmFuY2hlcyB0aGF0IGluY2x1ZGUgdGhlIGN1cnJlbnQgIiZESVNUUk9fTkFNRV9OT19DQVA7IgotICAgICAgICAgICAgYnJhbmNoLCB0aGUgIm1hc3RlciIgYnJhbmNoLCBhbmQgbWFueSBicmFuY2hlcyBmb3IgcGFzdAotICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlcy4KLSAgICAgICAgICAgIFlvdSBjYW4gc2VlIGFsbCB0aGUgYnJhbmNoZXMgYnkgZ29pbmcgdG8KLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9wb2t5Lyc+PC91bGluaz4gYW5kCi0gICAgICAgICAgICBjbGlja2luZyBvbiB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2kvcG9reS9yZWZzL2hlYWRzJz5bLi4uXTwvdWxpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgIGxpbmsgYmVuZWF0aCB0aGUgIkJyYW5jaCIgaGVhZGluZy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRWFjaCBvZiB0aGVzZSBicmFuY2hlcyByZXByZXNlbnRzIGEgc3BlY2lmaWMgYXJlYSBvZiBkZXZlbG9wbWVudC4KLSAgICAgICAgICAgIFRoZSAibWFzdGVyIiBicmFuY2ggcmVwcmVzZW50cyB0aGUgY3VycmVudCBvciBtb3N0IHJlY2VudAotICAgICAgICAgICAgZGV2ZWxvcG1lbnQuCi0gICAgICAgICAgICBBbGwgb3RoZXIgYnJhbmNoZXMgcmVwcmVzZW50IG9mZnNob290cyBvZiB0aGUgIm1hc3RlciIgYnJhbmNoLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBXaGVuIHlvdSBjcmVhdGUgYSBsb2NhbCBjb3B5IG9mIGEgR2l0IHJlcG9zaXRvcnksIHRoZSBjb3B5IGhhcwotICAgICAgICAgICAgdGhlIHNhbWUgc2V0IG9mIGJyYW5jaGVzIGFzIHRoZSBvcmlnaW5hbC4KLSAgICAgICAgICAgIFRoaXMgbWVhbnMgeW91IGNhbiB1c2UgR2l0IHRvIGNyZWF0ZSBhIGxvY2FsIHdvcmtpbmcgYXJlYQotICAgICAgICAgICAgKGFsc28gY2FsbGVkIGEgYnJhbmNoKSB0aGF0IHRyYWNrcyBhIHNwZWNpZmljIGRldmVsb3BtZW50IGJyYW5jaAotICAgICAgICAgICAgZnJvbSB0aGUgdXBzdHJlYW0gc291cmNlIEdpdCByZXBvc2l0b3J5LgotICAgICAgICAgICAgaW4gb3RoZXIgd29yZHMsIHlvdSBjYW4gZGVmaW5lIHlvdXIgbG9jYWwgR2l0IGVudmlyb25tZW50IHRvCi0gICAgICAgICAgICB3b3JrIG9uIGFueSBkZXZlbG9wbWVudCBicmFuY2ggaW4gdGhlIHJlcG9zaXRvcnkuCi0gICAgICAgICAgICBUbyBoZWxwIGlsbHVzdHJhdGUsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSBHaXQgY29tbWFuZHM6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgY2QgfgotICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5Ci0gICAgICQgY2QgcG9reQotICAgICAkIGdpdCBjaGVja291dCAtYiAmRElTVFJPX05BTUVfTk9fQ0FQOyBvcmlnaW4vJkRJU1RST19OQU1FX05PX0NBUDsKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIEluIHRoZSBwcmV2aW91cyBleGFtcGxlIGFmdGVyIG1vdmluZyB0byB0aGUgaG9tZSBkaXJlY3RvcnksIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBjbG9uZTwvZmlsZW5hbWU+IGNvbW1hbmQgY3JlYXRlcyBhCi0gICAgICAgICAgICBsb2NhbCBjb3B5IG9mIHRoZSB1cHN0cmVhbSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdCByZXBvc2l0b3J5LgotICAgICAgICAgICAgQnkgZGVmYXVsdCwgR2l0IGNoZWNrcyBvdXQgdGhlICJtYXN0ZXIiIGJyYW5jaCBmb3IgeW91ciB3b3JrLgotICAgICAgICAgICAgQWZ0ZXIgY2hhbmdpbmcgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoZSBuZXcgbG9jYWwgcmVwb3NpdG9yeQotICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiksIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCBjaGVja291dDwvZmlsZW5hbWU+IGNvbW1hbmQgY3JlYXRlcwotICAgICAgICAgICAgYW5kIGNoZWNrcyBvdXQgYSBsb2NhbCBicmFuY2ggbmFtZWQgIiZESVNUUk9fTkFNRV9OT19DQVA7Iiwgd2hpY2gKLSAgICAgICAgICAgIHRyYWNrcyB0aGUgdXBzdHJlYW0gIm9yaWdpbi8mRElTVFJPX05BTUVfTk9fQ0FQOyIgYnJhbmNoLgotICAgICAgICAgICAgQ2hhbmdlcyB5b3UgbWFrZSB3aGlsZSBpbiB0aGlzIGJyYW5jaCB3b3VsZCB1bHRpbWF0ZWx5IGFmZmVjdAotICAgICAgICAgICAgdGhlIHVwc3RyZWFtICImRElTVFJPX05BTUVfTk9fQ0FQOyIgYnJhbmNoIG9mIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGF0IHdoZW4geW91IGNyZWF0ZSBhbmQgY2hlY2tvdXQgYQotICAgICAgICAgICAgbG9jYWwgd29ya2luZyBicmFuY2ggYmFzZWQgb24gYSBicmFuY2ggbmFtZSwKLSAgICAgICAgICAgIHlvdXIgbG9jYWwgZW52aXJvbm1lbnQgbWF0Y2hlcyB0aGUgInRpcCIgb2YgdGhhdCBwYXJ0aWN1bGFyCi0gICAgICAgICAgICBkZXZlbG9wbWVudCBicmFuY2ggYXQgdGhlIHRpbWUgeW91IGNyZWF0ZWQgeW91ciBsb2NhbCBicmFuY2gsCi0gICAgICAgICAgICB3aGljaCBjb3VsZCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgZmlsZXMgaW4gdGhlICJtYXN0ZXIiIGJyYW5jaAotICAgICAgICAgICAgb2YgdGhlIHVwc3RyZWFtIHJlcG9zaXRvcnkuCi0gICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgY3JlYXRpbmcgYW5kIGNoZWNraW5nIG91dCBhIGxvY2FsIGJyYW5jaCBiYXNlZCBvbgotICAgICAgICAgICAgdGhlICImRElTVFJPX05BTUVfTk9fQ0FQOyIgYnJhbmNoIG5hbWUgaXMgbm90IHRoZSBzYW1lIGFzCi0gICAgICAgICAgICBjbG9uaW5nIGFuZCBjaGVja2luZyBvdXQgdGhlICJtYXN0ZXIiIGJyYW5jaCBpZiB0aGUgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgIEtlZXAgcmVhZGluZyB0byBzZWUgaG93IHlvdSBjcmVhdGUgYSBsb2NhbCBzbmFwc2hvdCBvZiBhIFlvY3RvCi0gICAgICAgICAgICBQcm9qZWN0IFJlbGVhc2UuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEdpdCB1c2VzICJ0YWdzIiB0byBtYXJrIHNwZWNpZmljIGNoYW5nZXMgaW4gYSByZXBvc2l0b3J5LgotICAgICAgICAgICAgVHlwaWNhbGx5LCBhIHRhZyBpcyB1c2VkIHRvIG1hcmsgYSBzcGVjaWFsIHBvaW50IHN1Y2ggYXMgdGhlIGZpbmFsCi0gICAgICAgICAgICBjaGFuZ2UgYmVmb3JlIGEgcHJvamVjdCBpcyByZWxlYXNlZC4KLSAgICAgICAgICAgIFlvdSBjYW4gc2VlIHRoZSB0YWdzIHVzZWQgd2l0aCB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQKLSAgICAgICAgICAgIHJlcG9zaXRvcnkgYnkgZ29pbmcgdG8KLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9wb2t5Lyc+PC91bGluaz4gYW5kCi0gICAgICAgICAgICBjbGlja2luZyBvbiB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2kvcG9reS9yZWZzL3RhZ3MnPlsuLi5dPC91bGluaz48L2ZpbGVuYW1lPgotICAgICAgICAgICAgbGluayBiZW5lYXRoIHRoZSAiVGFnIiBoZWFkaW5nLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBTb21lIGtleSB0YWdzIGZvciB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBhcmUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5qZXRocm8tMTQuMC4zPC9maWxlbmFtZT4sCi0gICAgICAgICAgICA8ZmlsZW5hbWU+bW9ydHktMTYuMC4xPC9maWxlbmFtZT4sCi0gICAgICAgICAgICA8ZmlsZW5hbWU+cHlyby0xNy4wLjA8L2ZpbGVuYW1lPiwgYW5kCi0gICAgICAgICAgICA8ZmlsZW5hbWU+JkRJU1RST19OQU1FX05PX0NBUDstJlBPS1lWRVJTSU9OOzwvZmlsZW5hbWU+LgotICAgICAgICAgICAgVGhlc2UgdGFncyByZXByZXNlbnQgWW9jdG8gUHJvamVjdCByZWxlYXNlcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgV2hlbiB5b3UgY3JlYXRlIGEgbG9jYWwgY29weSBvZiB0aGUgR2l0IHJlcG9zaXRvcnksIHlvdSBhbHNvCi0gICAgICAgICAgICBoYXZlIGFjY2VzcyB0byBhbGwgdGhlIHRhZ3MgaW4gdGhlIHVwc3RyZWFtIHJlcG9zaXRvcnkuCi0gICAgICAgICAgICBTaW1pbGFyIHRvIGJyYW5jaGVzLCB5b3UgY2FuIGNyZWF0ZSBhbmQgY2hlY2tvdXQgYSBsb2NhbCB3b3JraW5nCi0gICAgICAgICAgICBHaXQgYnJhbmNoIGJhc2VkIG9uIGEgdGFnIG5hbWUuCi0gICAgICAgICAgICBXaGVuIHlvdSBkbyB0aGlzLCB5b3UgZ2V0IGEgc25hcHNob3Qgb2YgdGhlIEdpdCByZXBvc2l0b3J5IHRoYXQKLSAgICAgICAgICAgIHJlZmxlY3RzIHRoZSBzdGF0ZSBvZiB0aGUgZmlsZXMgd2hlbiB0aGUgY2hhbmdlIHdhcyBtYWRlIGFzc29jaWF0ZWQKLSAgICAgICAgICAgIHdpdGggdGhhdCB0YWcuCi0gICAgICAgICAgICBUaGUgbW9zdCBjb21tb24gdXNlIGlzIHRvIGNoZWNrb3V0IGEgd29ya2luZyBicmFuY2ggdGhhdCBtYXRjaGVzCi0gICAgICAgICAgICBhIHNwZWNpZmljIFlvY3RvIFByb2plY3QgcmVsZWFzZS4KLSAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjZCB+Ci0gICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3kKLSAgICAgJCBjZCBwb2t5Ci0gICAgICQgZ2l0IGZldGNoIC0tYWxsIC0tdGFncyAtLXBydW5lCi0gICAgICQgZ2l0IGNoZWNrb3V0IHRhZ3MvcHlyby0xNy4wLjAgLWIgbXktcHlyby0xNy4wLjAKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgdGhlIG5hbWUgb2YgdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnkgb2YgeW91cgotICAgICAgICAgICAgbG9jYWwgWW9jdG8gUHJvamVjdCByZXBvc2l0b3J5IGlzIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4uCi0gICAgICAgICAgICBBZnRlciBtb3ZpbmcgdG8gdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gZGlyZWN0b3J5LCB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5naXQgZmV0Y2g8L2ZpbGVuYW1lPiBjb21tYW5kIG1ha2VzIGFsbCB0aGUgdXBzdHJlYW0KLSAgICAgICAgICAgIHRhZ3MgYXZhaWxhYmxlIGxvY2FsbHkgaW4geW91ciByZXBvc2l0b3J5LgotICAgICAgICAgICAgRmluYWxseSwgdGhlIDxmaWxlbmFtZT5naXQgY2hlY2tvdXQ8L2ZpbGVuYW1lPiBjb21tYW5kCi0gICAgICAgICAgICBjcmVhdGVzIGFuZCBjaGVja3Mgb3V0IGEgYnJhbmNoIG5hbWVkICJteS1weXJvLTE3LjAuMCIgdGhhdCBpcwotICAgICAgICAgICAgYmFzZWQgb24gdGhlIHNwZWNpZmljIGNoYW5nZSB1cHN0cmVhbSBpbiB0aGUgcmVwb3NpdG9yeQotICAgICAgICAgICAgYXNzb2NpYXRlZCB3aXRoIHRoZSAicHlyby0xNy4wLjAiIHRhZy4KLSAgICAgICAgICAgIFRoZSBmaWxlcyBpbiB5b3VyIHJlcG9zaXRvcnkgbm93IGV4YWN0bHkgbWF0Y2ggdGhhdCBwYXJ0aWN1bGFyCi0gICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UgYXMgaXQgaXMgdGFnZ2VkIGluIHRoZSB1cHN0cmVhbSBHaXQKLSAgICAgICAgICAgIHJlcG9zaXRvcnkuCi0gICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGF0IHdoZW4geW91IGNyZWF0ZSBhbmQKLSAgICAgICAgICAgIGNoZWNrb3V0IGEgbG9jYWwgd29ya2luZyBicmFuY2ggYmFzZWQgb24gYSB0YWcsIHlvdXIgZW52aXJvbm1lbnQKLSAgICAgICAgICAgIG1hdGNoZXMgYSBzcGVjaWZpYyBwb2ludCBpbiB0aW1lIGFuZCBub3QgdGhlIGVudGlyZSBkZXZlbG9wbWVudAotICAgICAgICAgICAgYnJhbmNoIChpLmUuIHRoZSAidGlwIiBvZiB0aGUgYnJhbmNoKS4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdiYXNpYy1jb21tYW5kcyc+Ci0gICAgICAgIDx0aXRsZT5CYXNpYyBDb21tYW5kczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBHaXQgaGFzIGFuIGV4dGVuc2l2ZSBzZXQgb2YgY29tbWFuZHMgdGhhdCBsZXRzIHlvdSBtYW5hZ2UgY2hhbmdlcwotICAgICAgICAgICAgYW5kIHBlcmZvcm0gY29sbGFib3JhdGlvbiBvdmVyIHRoZSBsaWZlIG9mIGEgcHJvamVjdC4KLSAgICAgICAgICAgIENvbnZlbmllbnRseSB0aG91Z2gsIHlvdSBjYW4gbWFuYWdlIHdpdGggYSBzbWFsbCBzZXQgb2YgYmFzaWMKLSAgICAgICAgICAgIG9wZXJhdGlvbnMgYW5kIHdvcmtmbG93cyBvbmNlIHlvdSB1bmRlcnN0YW5kIHRoZSBiYXNpYwotICAgICAgICAgICAgcGhpbG9zb3BoeSBiZWhpbmQgR2l0LgotICAgICAgICAgICAgWW91IGRvIG5vdCBoYXZlIHRvIGJlIGFuIGV4cGVydCBpbiBHaXQgdG8gYmUgZnVuY3Rpb25hbC4KLSAgICAgICAgICAgIEEgZ29vZCBwbGFjZSB0byBsb29rIGZvciBpbnN0cnVjdGlvbiBvbiBhIG1pbmltYWwgc2V0IG9mIEdpdAotICAgICAgICAgICAgY29tbWFuZHMgaXMKLSAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXQtc2NtLmNvbS9kb2N1bWVudGF0aW9uJz5oZXJlPC91bGluaz4uCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIElmIHlvdSBkbyBub3Qga25vdyBtdWNoIGFib3V0IEdpdCwgeW91IHNob3VsZCBlZHVjYXRlCi0gICAgICAgICAgICB5b3Vyc2VsZiBieSB2aXNpdGluZyB0aGUgbGlua3MgcHJldmlvdXNseSBtZW50aW9uZWQuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBvZiBHaXQgY29tbWFuZHMgYnJpZWZseSBkZXNjcmliZXMgc29tZSBiYXNpYwotICAgICAgICAgICAgR2l0IG9wZXJhdGlvbnMgYXMgYSB3YXkgdG8gZ2V0IHN0YXJ0ZWQuCi0gICAgICAgICAgICBBcyB3aXRoIGFueSBzZXQgb2YgY29tbWFuZHMsIHRoaXMgbGlzdCAoaW4gbW9zdCBjYXNlcykgc2ltcGx5IHNob3dzCi0gICAgICAgICAgICB0aGUgYmFzZSBjb21tYW5kIGFuZCBvbWl0cyB0aGUgbWFueSBhcmd1bWVudHMgdGhleSBzdXBwb3J0LgotICAgICAgICAgICAgU2VlIHRoZSBHaXQgZG9jdW1lbnRhdGlvbiBmb3IgY29tcGxldGUgZGVzY3JpcHRpb25zIGFuZCBzdHJhdGVnaWVzCi0gICAgICAgICAgICBvbiBob3cgdG8gdXNlIHRoZXNlIGNvbW1hbmRzOgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IGluaXQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplcyBhbiBlbXB0eSBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbm5vdCB1c2UgR2l0IGNvbW1hbmRzIHVubGVzcyB5b3UgaGF2ZSBhCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uZ2l0PC9maWxlbmFtZT4gcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdnaXQtY29tbWFuZHMtY2xvbmUnPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBjbG9uZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIENyZWF0ZXMgYSBsb2NhbCBjbG9uZSBvZiBhIEdpdCByZXBvc2l0b3J5IHRoYXQgaXMgb24KLSAgICAgICAgICAgICAgICAgICAgZXF1YWwgZm9vdGluZyB3aXRoIGEgZmVsbG93IGRldmVsb3BlcuKAmXMgR2l0IHJlcG9zaXRvcnkKLSAgICAgICAgICAgICAgICAgICAgb3IgYW4gdXBzdHJlYW0gcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBhZGQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBMb2NhbGx5IHN0YWdlcyB1cGRhdGVkIGZpbGUgY29udGVudHMgdG8gdGhlIGluZGV4IHRoYXQKLSAgICAgICAgICAgICAgICAgICAgR2l0IHVzZXMgdG8gdHJhY2sgY2hhbmdlcy4KLSAgICAgICAgICAgICAgICAgICAgWW91IG11c3Qgc3RhZ2UgYWxsIGZpbGVzIHRoYXQgaGF2ZSBjaGFuZ2VkIGJlZm9yZSB5b3UKLSAgICAgICAgICAgICAgICAgICAgY2FuIGNvbW1pdCB0aGVtLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IGNvbW1pdDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIENyZWF0ZXMgYSBsb2NhbCAiY29tbWl0IiB0aGF0IGRvY3VtZW50cyB0aGUgY2hhbmdlcyB5b3UKLSAgICAgICAgICAgICAgICAgICAgbWFkZS4KLSAgICAgICAgICAgICAgICAgICAgT25seSBjaGFuZ2VzIHRoYXQgaGF2ZSBiZWVuIHN0YWdlZCBjYW4gYmUgY29tbWl0dGVkLgotICAgICAgICAgICAgICAgICAgICBDb21taXRzIGFyZSB1c2VkIGZvciBoaXN0b3JpY2FsIHB1cnBvc2VzLCBmb3IgZGV0ZXJtaW5pbmcKLSAgICAgICAgICAgICAgICAgICAgaWYgYSBtYWludGFpbmVyIG9mIGEgcHJvamVjdCB3aWxsIGFsbG93IHRoZSBjaGFuZ2UsCi0gICAgICAgICAgICAgICAgICAgIGFuZCBmb3IgdWx0aW1hdGVseSBwdXNoaW5nIHRoZSBjaGFuZ2UgZnJvbSB5b3VyIGxvY2FsCi0gICAgICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5IGludG8gdGhlIHByb2plY3TigJlzIHVwc3RyZWFtIHJlcG9zaXRvcnkuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgc3RhdHVzPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgUmVwb3J0cyBhbnkgbW9kaWZpZWQgZmlsZXMgdGhhdCBwb3NzaWJseSBuZWVkIHRvIGJlCi0gICAgICAgICAgICAgICAgICAgIHN0YWdlZCBhbmQgZ2l2ZXMgeW91IGEgc3RhdHVzIG9mIHdoZXJlIHlvdSBzdGFuZCByZWdhcmRpbmcKLSAgICAgICAgICAgICAgICAgICAgbG9jYWwgY29tbWl0cyBhcyBjb21wYXJlZCB0byB0aGUgdXBzdHJlYW0gcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBjaGVja291dDwvZmlsZW5hbWU+IDxyZXBsYWNlYWJsZT5icmFuY2gtbmFtZTwvcmVwbGFjZWFibGU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIENoYW5nZXMgeW91ciB3b3JraW5nIGJyYW5jaC4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGlzIGFuYWxvZ291cyB0byAiY2QiLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgY2hlY2tvdXQg4oCTYjwvZmlsZW5hbWU+IDxyZXBsYWNlYWJsZT53b3JraW5nLWJyYW5jaDwvcmVwbGFjZWFibGU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIENyZWF0ZXMgYW5kIGNoZWNrcyBvdXQgYSB3b3JraW5nIGJyYW5jaCBvbiB5b3VyIGxvY2FsCi0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgdGhhdCB5b3UgY2FuIHVzZSB0byBpc29sYXRlIHlvdXIgd29yay4KLSAgICAgICAgICAgICAgICAgICAgSXQgaXMgYSBnb29kIGlkZWEgdG8gdXNlIGxvY2FsIGJyYW5jaGVzIHdoZW4gYWRkaW5nCi0gICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIGZlYXR1cmVzIG9yIGNoYW5nZXMuCi0gICAgICAgICAgICAgICAgICAgIFVzaW5nIGlzb2xhdGVkIGJyYW5jaGVzIGZhY2lsaXRhdGVzIGVhc3kgcmVtb3ZhbCBvZgotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzIGlmIHRoZXkgZG8gbm90IHdvcmsgb3V0LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgYnJhbmNoPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgRGlzcGxheXMgdGhlIGV4aXN0aW5nIGxvY2FsIGJyYW5jaGVzIGFzc29jaWF0ZWQgd2l0aCB5b3VyCi0gICAgICAgICAgICAgICAgICAgIGxvY2FsIHJlcG9zaXRvcnkuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBicmFuY2ggdGhhdCB5b3UgaGF2ZSBjdXJyZW50bHkgY2hlY2tlZCBvdXQgaXMgbm90ZWQKLSAgICAgICAgICAgICAgICAgICAgd2l0aCBhbiBhc3RlcmlzayBjaGFyYWN0ZXIuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgYnJhbmNoIC1EPC9maWxlbmFtZT4gPHJlcGxhY2VhYmxlPmJyYW5jaC1uYW1lPC9yZXBsYWNlYWJsZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgRGVsZXRlcyBhbiBleGlzdGluZyBsb2NhbCBicmFuY2guCi0gICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGJlIGluIGEgbG9jYWwgYnJhbmNoIG90aGVyIHRoYW4gdGhlIG9uZSB5b3UKLSAgICAgICAgICAgICAgICAgICAgYXJlIGRlbGV0aW5nIGluIG9yZGVyIHRvIGRlbGV0ZQotICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+YnJhbmNoLW5hbWU8L3JlcGxhY2VhYmxlPi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBwdWxsPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgUmV0cmlldmVzIGluZm9ybWF0aW9uIGZyb20gYW4gdXBzdHJlYW0gR2l0IHJlcG9zaXRvcnkKLSAgICAgICAgICAgICAgICAgICAgYW5kIHBsYWNlcyBpdCBpbiB5b3VyIGxvY2FsIEdpdCByZXBvc2l0b3J5LgotICAgICAgICAgICAgICAgICAgICBZb3UgdXNlIHRoaXMgY29tbWFuZCB0byBtYWtlIHN1cmUgeW91IGFyZSBzeW5jaHJvbml6ZWQgd2l0aAotICAgICAgICAgICAgICAgICAgICB0aGUgcmVwb3NpdG9yeSBmcm9tIHdoaWNoIHlvdSBhcmUgYmFzaW5nIGNoYW5nZXMKLSAgICAgICAgICAgICAgICAgICAgKC5lLmcuIHRoZSAibWFzdGVyIiBicmFuY2gpLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IHB1c2g8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBTZW5kcyBhbGwgeW91ciBjb21taXR0ZWQgbG9jYWwgY2hhbmdlcyB0byB0aGUgdXBzdHJlYW0gR2l0Ci0gICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgdGhhdCB5b3VyIGxvY2FsIHJlcG9zaXRvcnkgaXMgdHJhY2tpbmcKLSAgICAgICAgICAgICAgICAgICAgKGUuZy4gYSBjb250cmlidXRpb24gcmVwb3NpdG9yeSkuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBtYWludGFpbmVyIG9mIHRoZSBwcm9qZWN0IGRyYXdzIGZyb20gdGhlc2UgcmVwb3NpdG9yaWVzCi0gICAgICAgICAgICAgICAgICAgIHRvIG1lcmdlIGNoYW5nZXMgKGNvbW1pdHMpIGludG8gdGhlIGFwcHJvcHJpYXRlIGJyYW5jaAotICAgICAgICAgICAgICAgICAgICBvZiBwcm9qZWN0J3MgdXBzdHJlYW0gcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBtZXJnZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIENvbWJpbmVzIG9yIGFkZHMgY2hhbmdlcyBmcm9tIG9uZQotICAgICAgICAgICAgICAgICAgICBsb2NhbCBicmFuY2ggb2YgeW91ciByZXBvc2l0b3J5IHdpdGggYW5vdGhlciBicmFuY2guCi0gICAgICAgICAgICAgICAgICAgIFdoZW4geW91IGNyZWF0ZSBhIGxvY2FsIEdpdCByZXBvc2l0b3J5LCB0aGUgZGVmYXVsdCBicmFuY2gKLSAgICAgICAgICAgICAgICAgICAgaXMgbmFtZWQgIm1hc3RlciIuCi0gICAgICAgICAgICAgICAgICAgIEEgdHlwaWNhbCB3b3JrZmxvdyBpcyB0byBjcmVhdGUgYSB0ZW1wb3JhcnkgYnJhbmNoIHRoYXQgaXMKLSAgICAgICAgICAgICAgICAgICAgYmFzZWQgb2ZmICJtYXN0ZXIiIHRoYXQgeW91IHdvdWxkIHVzZSBmb3IgaXNvbGF0ZWQgd29yay4KLSAgICAgICAgICAgICAgICAgICAgWW91IHdvdWxkIG1ha2UgeW91ciBjaGFuZ2VzIGluIHRoYXQgaXNvbGF0ZWQgYnJhbmNoLAotICAgICAgICAgICAgICAgICAgICBzdGFnZSBhbmQgY29tbWl0IHRoZW0gbG9jYWxseSwgc3dpdGNoIHRvIHRoZSAibWFzdGVyIgotICAgICAgICAgICAgICAgICAgICBicmFuY2gsIGFuZCB0aGVuIHVzZSB0aGUgPGZpbGVuYW1lPmdpdCBtZXJnZTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgdG8gYXBwbHkgdGhlIGNoYW5nZXMgZnJvbSB5b3VyIGlzb2xhdGVkIGJyYW5jaAotICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSBjdXJyZW50bHkgY2hlY2tlZCBvdXQgYnJhbmNoIChlLmcuICJtYXN0ZXIiKS4KLSAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgdGhlIG1lcmdlIGlzIGNvbXBsZXRlIGFuZCBpZiB5b3UgYXJlIGRvbmUgd2l0aAotICAgICAgICAgICAgICAgICAgICB3b3JraW5nIGluIHRoYXQgaXNvbGF0ZWQgYnJhbmNoLCB5b3UgY2FuIHNhZmVseSBkZWxldGUKLSAgICAgICAgICAgICAgICAgICAgdGhlIGlzb2xhdGVkIGJyYW5jaC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdpdCBjaGVycnktcGljazwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIENob29zZSBhbmQgYXBwbHkgc3BlY2lmaWMgY29tbWl0cyBmcm9tIG9uZSBicmFuY2gKLSAgICAgICAgICAgICAgICAgICAgaW50byBhbm90aGVyIGJyYW5jaC4KLSAgICAgICAgICAgICAgICAgICAgVGhlcmUgYXJlIHRpbWVzIHdoZW4geW91IG1pZ2h0IG5vdCBiZSBhYmxlIHRvIG1lcmdlCi0gICAgICAgICAgICAgICAgICAgIGFsbCB0aGUgY2hhbmdlcyBpbiBvbmUgYnJhbmNoIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgYW5vdGhlciBidXQgbmVlZCB0byBwaWNrIG91dCBjZXJ0YWluIG9uZXMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXRrPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgUHJvdmlkZXMgYSBHVUkgdmlldyBvZiB0aGUgYnJhbmNoZXMgYW5kIGNoYW5nZXMgaW4geW91cgotICAgICAgICAgICAgICAgICAgICBsb2NhbCBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGlzIGEgZ29vZCB3YXkgdG8gZ3JhcGhpY2FsbHkgc2VlIHdoZXJlIHRoaW5ncwotICAgICAgICAgICAgICAgICAgICBoYXZlIGRpdmVyZ2VkIGluIHlvdXIgbG9jYWwgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBpbnN0YWxsIHRoZSA8ZmlsZW5hbWU+Z2l0azwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlIG9uIHlvdXIgZGV2ZWxvcG1lbnQgc3lzdGVtIHRvIHVzZSB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kLgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5naXQgbG9nPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgUmVwb3J0cyBhIGhpc3Rvcnkgb2YgeW91ciBjb21taXRzIHRvIHRoZSByZXBvc2l0b3J5LgotICAgICAgICAgICAgICAgICAgICBUaGlzIHJlcG9ydCBsaXN0cyBhbGwgY29tbWl0cyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgeW91Ci0gICAgICAgICAgICAgICAgICAgIGhhdmUgcHVzaGVkIHRoZW0gdXBzdHJlYW0gb3Igbm90LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2l0IGRpZmY8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBEaXNwbGF5cyBsaW5lLWJ5LWxpbmUgZGlmZmVyZW5jZXMgYmV0d2VlbiBhIGxvY2FsCi0gICAgICAgICAgICAgICAgICAgIHdvcmtpbmcgZmlsZSBhbmQgdGhlIHNhbWUgZmlsZSBhcyB1bmRlcnN0b29kIGJ5IEdpdC4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGlzIHVzZWZ1bCB0byBzZWUgd2hhdCB5b3UgaGF2ZSBjaGFuZ2VkCi0gICAgICAgICAgICAgICAgICAgIGluIGFueSBnaXZlbiBmaWxlLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0neW9jdG8tcHJvamVjdC1yZXBvc2l0b3JpZXMnPgotICAgIDx0aXRsZT5Zb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXM8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHRlYW0gbWFpbnRhaW5zIGNvbXBsZXRlIHNvdXJjZSByZXBvc2l0b3JpZXMgZm9yIGFsbAotICAgICAgICBZb2N0byBQcm9qZWN0IGZpbGVzIGF0Ci0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpJz48L3VsaW5rPi4KLSAgICAgICAgVGhpcyB3ZWItYmFzZWQgc291cmNlIGNvZGUgYnJvd3NlciBpcyBvcmdhbml6ZWQgaW50byBjYXRlZ29yaWVzIGJ5Ci0gICAgICAgIGZ1bmN0aW9uIHN1Y2ggYXMgSURFIFBsdWdpbnMsIE1hdGNoYm94LCBQb2t5LCBZb2N0byBMaW51eCBLZXJuZWwsIGFuZAotICAgICAgICBzbyBmb3J0aC4KLSAgICAgICAgRnJvbSB0aGUgaW50ZXJmYWNlLCB5b3UgY2FuIGNsaWNrIG9uIGFueSBwYXJ0aWN1bGFyIGl0ZW0gaW4gdGhlICJOYW1lIgotICAgICAgICBjb2x1bW4gYW5kIHNlZSB0aGUgVVJMIGF0IHRoZSBib3R0b20gb2YgdGhlIHBhZ2UgdGhhdCB5b3UgbmVlZCB0byBjbG9uZQotICAgICAgICBhIEdpdCByZXBvc2l0b3J5IGZvciB0aGF0IHBhcnRpY3VsYXIgaXRlbS4KLSAgICAgICAgSGF2aW5nIGEgbG9jYWwgR2l0IHJlcG9zaXRvcnkgb2YgdGhlCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LCB3aGljaCBpcwotICAgICAgICB1c3VhbGx5IG5hbWVkICJwb2t5IiwgYWxsb3dzCi0gICAgICAgIHlvdSB0byBtYWtlIGNoYW5nZXMsIGNvbnRyaWJ1dGUgdG8gdGhlIGhpc3RvcnksIGFuZCB1bHRpbWF0ZWx5IGVuaGFuY2UKLSAgICAgICAgdGhlIFlvY3RvIFByb2plY3QncyB0b29scywgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcywgYW5kIHNvIGZvcnRoLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBGb3IgYW55IHN1cHBvcnRlZCByZWxlYXNlIG9mIFlvY3RvIFByb2plY3QsIHlvdSBjYW4gYWxzbyBnbyB0byB0aGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdCBXZWJzaXRlPC91bGluaz4gYW5kCi0gICAgICAgIHNlbGVjdCB0aGUgIkRvd25sb2FkcyIgdGFiIGFuZCBnZXQgYSByZWxlYXNlZCB0YXJiYWxsIG9mIHRoZQotICAgICAgICA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkgb3IgYW55IHN1cHBvcnRlZCBCU1AgdGFyYmFsbHMuCi0gICAgICAgIFVucGFja2luZyB0aGVzZSB0YXJiYWxscyBnaXZlcyB5b3UgYSBzbmFwc2hvdCBvZiB0aGUgcmVsZWFzZWQKLSAgICAgICAgZmlsZXMuCi0gICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIHJlY29tbWVuZGVkIG1ldGhvZCBmb3Igc2V0dGluZyB1cCB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgotICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIGZpbGVzIGZvciBzdXBwb3J0ZWQgQlNQcwotICAgICAgICAgICAgICAgICAgICAoZS5nLiwgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPikgaXMgdG8gdXNlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dpdCc+R2l0PC9saW5rPiB0byBjcmVhdGUgYSBsb2NhbCBjb3B5IG9mCi0gICAgICAgICAgICAgICAgICAgIHRoZSB1cHN0cmVhbSByZXBvc2l0b3JpZXMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBhbHdheXMgd29yayBpbiBtYXRjaGluZyBicmFuY2hlcyBmb3IgYm90aAotICAgICAgICAgICAgICAgICAgICB0aGUgc2VsZWN0ZWQgQlNQIHJlcG9zaXRvcnkgYW5kIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KSByZXBvc2l0b3J5LgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGhhdmUgY2hlY2tlZCBvdXQgdGhlICJtYXN0ZXIiIGJyYW5jaAotICAgICAgICAgICAgICAgICAgICBvZiA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGFuZCB5b3UgYXJlIGdvaW5nIHRvIHVzZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+LCBiZSBzdXJlIHRvIGNoZWNrb3V0IHRoZQotICAgICAgICAgICAgICAgICAgICAibWFzdGVyIiBicmFuY2ggb2YgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9ub3RlPgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBJbiBzdW1tYXJ5LCBoZXJlIGlzIHdoZXJlIHlvdSBjYW4gZ2V0IHRoZSBwcm9qZWN0IGZpbGVzIG5lZWRlZCBmb3IKLSAgICAgICAgZGV2ZWxvcG1lbnQ6Ci0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J3NvdXJjZS1yZXBvc2l0b3JpZXMnPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaSc+U291cmNlIFJlcG9zaXRvcmllczo8L3VsaW5rPgotICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgVGhpcyBhcmVhIGNvbnRhaW5zIElERSBQbHVnaW5zLCBNYXRjaGJveCwgUG9reSwgUG9reSBTdXBwb3J0LAotICAgICAgICAgICAgICAgIFRvb2xzLCBZb2N0byBMaW51eCBLZXJuZWwsIGFuZCBZb2N0byBNZXRhZGF0YSBMYXllcnMuCi0gICAgICAgICAgICAgICAgWW91IGNhbiBjcmVhdGUgbG9jYWwgY29waWVzIG9mIEdpdCByZXBvc2l0b3JpZXMgZm9yIGVhY2ggb2YKLSAgICAgICAgICAgICAgICB0aGVzZSBhcmVhcy48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvc291cmNlLXJlcG9zLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjZpbiIgZGVwdGg9IjRpbiIgLz4KLSAgICAgICAgICAgICAgICBGb3Igc3RlcHMgb24gaG93IHRvIHZpZXcgYW5kIGFjY2VzcyB0aGVzZSB1cHN0cmVhbSBHaXQKLSAgICAgICAgICAgICAgICByZXBvc2l0b3JpZXMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYWNjZXNzaW5nLXNvdXJjZS1yZXBvc2l0b3JpZXMnPkFjY2Vzc2luZyBTb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgU2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGFuY2hvciBpZD0naW5kZXgtZG93bmxvYWRzJyAvPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRExfVVJMOy9yZWxlYXNlcy8nPkluZGV4IG9mIC9yZWxlYXNlczo8L3VsaW5rPgotICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgVGhpcyBpcyBhbiBpbmRleCBvZiByZWxlYXNlcyBzdWNoIGFzCi0gICAgICAgICAgICAgICAgdGhlIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+Ci0gICAgICAgICAgICAgICAgWW9jdG8gUGx1Zy1pbiwgbWlzY2VsbGFuZW91cyBzdXBwb3J0LCBQb2t5LCBQc2V1ZG8sIGluc3RhbGxlcnMKLSAgICAgICAgICAgICAgICBmb3IgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWlucywgYW5kIGFsbCByZWxlYXNlZCB2ZXJzaW9ucyBvZgotICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgaW4gdGhlIGZvcm0gb2YgaW1hZ2VzIG9yIHRhcmJhbGxzLgotICAgICAgICAgICAgICAgIERvd25sb2FkaW5nIGFuZCBleHRyYWN0aW5nIHRoZXNlIGZpbGVzIGRvZXMgbm90IHByb2R1Y2UgYSBsb2NhbAotICAgICAgICAgICAgICAgIGNvcHkgb2YgdGhlIEdpdCByZXBvc2l0b3J5IGJ1dCByYXRoZXIgYSBzbmFwc2hvdCBvZiBhCi0gICAgICAgICAgICAgICAgcGFydGljdWxhciByZWxlYXNlIG9yIGltYWdlLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9pbmRleC1kb3dubG9hZHMucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNmluIiBkZXB0aD0iMy41aW4iIC8+Ci0gICAgICAgICAgICAgICAgRm9yIHN0ZXBzIG9uIGhvdyB0byB2aWV3IGFuZCBhY2Nlc3MgdGhlc2UgZmlsZXMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYWNjZXNzaW5nLWluZGV4LW9mLXJlbGVhc2VzJz5BY2Nlc3NpbmcgSW5kZXggb2YgUmVsZWFzZXM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nZG93bmxvYWRzLXBhZ2UnPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4iRG93bmxvYWRzIiBwYWdlIGZvciB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7Jz5Zb2N0byBQcm9qZWN0IFdlYnNpdGU8L3VsaW5rPjoKLSAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9IndyaXRlcm5vdGVzIj5UaGlzIHNlY3Rpb24gd2lsbCBjaGFuZ2UgZHVlIHRvCi0gICAgICAgICAgICAgICAgcmV3b3JraW5nIG9mIHRoZSBZUCBXZWJzaXRlLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBZb2N0byBQcm9qZWN0IHdlYnNpdGUgaW5jbHVkZXMgYSAiRG93bmxvYWRzIiB0YWIKLSAgICAgICAgICAgICAgICB0aGF0IGFsbG93cyB5b3UgdG8gZG93bmxvYWQgYW55IFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICByZWxlYXNlIGFuZCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgaW4gdGFyYmFsbCBmb3JtLgotICAgICAgICAgICAgICAgIFRoZSB0YXJiYWxscyBhcmUgc2ltaWxhciB0byB0aG9zZSBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRExfVVJMOy9yZWxlYXNlcy8nPkluZGV4IG9mIC9yZWxlYXNlczo8L3VsaW5rPiBhcmVhLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy95cC1kb3dubG9hZC5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI2aW4iIGRlcHRoPSI0aW4iIC8+Ci0gICAgICAgICAgICAgICAgRm9yIHN0ZXBzIG9uIGhvdyB0byB1c2UgdGhlICJEb3dubG9hZHMiIHBhZ2UsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdXNpbmctdGhlLWRvd25sb2Fkcy1wYWdlJz5Vc2luZyB0aGUgRG93bmxvYWRzIFBhZ2U8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0nbGljZW5zaW5nJz4KLSAgICA8dGl0bGU+TGljZW5zaW5nPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBCZWNhdXNlIG9wZW4gc291cmNlIHByb2plY3RzIGFyZSBvcGVuIHRvIHRoZSBwdWJsaWMsIHRoZXkgaGF2ZQotICAgICAgICBkaWZmZXJlbnQgbGljZW5zaW5nIHN0cnVjdHVyZXMgaW4gcGxhY2UuCi0gICAgICAgIExpY2Vuc2UgZXZvbHV0aW9uIGZvciBib3RoIE9wZW4gU291cmNlIGFuZCBGcmVlIFNvZnR3YXJlIGhhcyBhbgotICAgICAgICBpbnRlcmVzdGluZyBoaXN0b3J5LgotICAgICAgICBJZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gdGhpcyBoaXN0b3J5LCB5b3UgY2FuIGZpbmQgYmFzaWMgaW5mb3JtYXRpb24KLSAgICAgICAgaGVyZToKLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09wZW4tc291cmNlX2xpY2Vuc2UnPk9wZW4gc291cmNlIGxpY2Vuc2UgaGlzdG9yeTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GcmVlX3NvZnR3YXJlX2xpY2Vuc2UnPkZyZWUgc29mdHdhcmUgbGljZW5zZSBoaXN0b3J5PC91bGluaz4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEluIGdlbmVyYWwsIHRoZSBZb2N0byBQcm9qZWN0IGlzIGJyb2FkbHkgbGljZW5zZWQgdW5kZXIgdGhlCi0gICAgICAgIE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3kgKE1JVCkgTGljZW5zZS4KLSAgICAgICAgTUlUIGxpY2Vuc2luZyBwZXJtaXRzIHRoZSByZXVzZSBvZiBzb2Z0d2FyZSB3aXRoaW4gcHJvcHJpZXRhcnkKLSAgICAgICAgc29mdHdhcmUgYXMgbG9uZyBhcyB0aGUgbGljZW5zZSBpcyBkaXN0cmlidXRlZCB3aXRoIHRoYXQgc29mdHdhcmUuCi0gICAgICAgIE1JVCBpcyBhbHNvIGNvbXBhdGlibGUgd2l0aCB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkuCi0gICAgICAgIFBhdGNoZXMgdG8gdGhlIFlvY3RvIFByb2plY3QgZm9sbG93IHRoZSB1cHN0cmVhbSBsaWNlbnNpbmcgc2NoZW1lLgotICAgICAgICBZb3UgY2FuIGZpbmQgaW5mb3JtYXRpb24gb24gdGhlIE1JVCBsaWNlbnNlCi0gICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwJz5oZXJlPC91bGluaz4uCi0gICAgICAgIFlvdSBjYW4gZmluZCBpbmZvcm1hdGlvbiBvbiB0aGUgR05VIEdQTAotICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0xHUEwtMy4wJz5oZXJlPC91bGluaz4uCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFdoZW4geW91IGJ1aWxkIGFuIGltYWdlIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0LCB0aGUgYnVpbGQgcHJvY2VzcwotICAgICAgICB1c2VzIGEga25vd24gbGlzdCBvZiBsaWNlbnNlcyB0byBlbnN1cmUgY29tcGxpYW5jZS4KLSAgICAgICAgWW91IGNhbiBmaW5kIHRoaXMgbGlzdCBpbiB0aGUKLSAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4gYXQKLSAgICAgICAgPGZpbGVuYW1lPm1ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzPC9maWxlbmFtZT4uCi0gICAgICAgIE9uY2UgdGhlIGJ1aWxkIGNvbXBsZXRlcywgdGhlIGxpc3Qgb2YgYWxsIGxpY2Vuc2VzIGZvdW5kIGFuZCB1c2VkCi0gICAgICAgIGR1cmluZyB0aGF0IGJ1aWxkIGFyZSBrZXB0IGluIHRoZQotICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KLSAgICAgICAgYXQgPGZpbGVuYW1lPnRtcC9kZXBsb3kvbGljZW5zZXM8L2ZpbGVuYW1lPi4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgSWYgYSBtb2R1bGUgcmVxdWlyZXMgYSBsaWNlbnNlIHRoYXQgaXMgbm90IGluIHRoZSBiYXNlIGxpc3QsIHRoZQotICAgICAgICBidWlsZCBwcm9jZXNzIGdlbmVyYXRlcyBhIHdhcm5pbmcgZHVyaW5nIHRoZSBidWlsZC4KLSAgICAgICAgVGhlc2UgdG9vbHMgbWFrZSBpdCBlYXNpZXIgZm9yIGEgZGV2ZWxvcGVyIHRvIGJlIGNlcnRhaW4gb2YgdGhlCi0gICAgICAgIGxpY2Vuc2VzIHdpdGggd2hpY2ggdGhlaXIgc2hpcHBlZCBwcm9kdWN0cyBtdXN0IGNvbXBseS4KLSAgICAgICAgSG93ZXZlciwgZXZlbiB3aXRoIHRoZXNlIHRvb2xzIGl0IGlzIHN0aWxsIHVwIHRvIHRoZSBkZXZlbG9wZXIgdG8KLSAgICAgICAgcmVzb2x2ZSBwb3RlbnRpYWwgbGljZW5zaW5nIGlzc3Vlcy4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhlIGJhc2UgbGlzdCBvZiBsaWNlbnNlcyB1c2VkIGJ5IHRoZSBidWlsZCBwcm9jZXNzIGlzIGEgY29tYmluYXRpb24KLSAgICAgICAgb2YgdGhlIFNvZnR3YXJlIFBhY2thZ2UgRGF0YSBFeGNoYW5nZSAoU1BEWCkgbGlzdCBhbmQgdGhlIE9wZW4KLSAgICAgICAgU291cmNlIEluaXRpYXRpdmUgKE9TSSkgcHJvamVjdHMuCi0gICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9zcGR4Lm9yZyc+U1BEWCBHcm91cDwvdWxpbms+IGlzIGEgd29ya2luZyBncm91cCBvZgotICAgICAgICB0aGUgTGludXggRm91bmRhdGlvbiB0aGF0IG1haW50YWlucyBhIHNwZWNpZmljYXRpb24gZm9yIGEgc3RhbmRhcmQKLSAgICAgICAgZm9ybWF0IGZvciBjb21tdW5pY2F0aW5nIHRoZSBjb21wb25lbnRzLCBsaWNlbnNlcywgYW5kIGNvcHlyaWdodHMKLSAgICAgICAgYXNzb2NpYXRlZCB3aXRoIGEgc29mdHdhcmUgcGFja2FnZS4KLSAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL29wZW5zb3VyY2Uub3JnJz5PU0k8L3VsaW5rPiBpcyBhIGNvcnBvcmF0aW9uCi0gICAgICAgIGRlZGljYXRlZCB0byB0aGUgT3BlbiBTb3VyY2UgRGVmaW5pdGlvbiBhbmQgdGhlIGVmZm9ydCBmb3IgcmV2aWV3aW5nCi0gICAgICAgIGFuZCBhcHByb3ZpbmcgbGljZW5zZXMgdGhhdCBjb25mb3JtIHRvIHRoZSBPcGVuIFNvdXJjZSBEZWZpbml0aW9uCi0gICAgICAgIChPU0QpLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBZb3UgY2FuIGZpbmQgYSBsaXN0IG9mIHRoZSBjb21iaW5lZCBTUERYIGFuZCBPU0kgbGljZW5zZXMgdGhhdCB0aGUKLSAgICAgICAgWW9jdG8gUHJvamVjdCB1c2VzIGluIHRoZQotICAgICAgICA8ZmlsZW5hbWU+bWV0YS9maWxlcy9jb21tb24tbGljZW5zZXM8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaW4geW91cgotICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgRm9yIGluZm9ybWF0aW9uIHRoYXQgY2FuIGhlbHAgeW91IG1haW50YWluIGNvbXBsaWFuY2Ugd2l0aCB2YXJpb3VzCi0gICAgICAgIG9wZW4gc291cmNlIGxpY2Vuc2luZyBkdXJpbmcgdGhlIGxpZmVjeWNsZSBvZiBhIHByb2R1Y3QgY3JlYXRlZCB1c2luZwotICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCwgc2VlIHRoZQotICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWFpbnRhaW5pbmctb3Blbi1zb3VyY2UtbGljZW5zZS1jb21wbGlhbmNlLWR1cmluZy15b3VyLXByb2R1Y3RzLWxpZmVjeWNsZSc+TWFpbnRhaW5pbmcgT3BlbiBTb3VyY2UgTGljZW5zZSBDb21wbGlhbmNlIER1cmluZyBZb3VyIFByb2R1Y3QncyBMaWZlY3ljbGU8L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCi0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0ncmVjaXBlLXN5bnRheCc+Ci0gICAgPHRpdGxlPlJlY2lwZSBTeW50YXg8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFVuZGVyc3RhbmRpbmcgcmVjaXBlIGZpbGUgc3ludGF4IGlzIGltcG9ydGFudCBmb3IKLSAgICAgICAgd3JpdGluZyByZWNpcGVzLgotICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3Qgb3ZlcnZpZXdzIHRoZSBiYXNpYyBpdGVtcyB0aGF0IG1ha2UgdXAgYQotICAgICAgICBCaXRCYWtlIHJlY2lwZSBmaWxlLgotICAgICAgICBGb3IgbW9yZSBjb21wbGV0ZSBCaXRCYWtlIHN5bnRheCBkZXNjcmlwdGlvbnMsIHNlZSB0aGUKLSAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YSc+U3ludGF4IGFuZCBPcGVyYXRvcnM8L3VsaW5rPiIKLSAgICAgICAgY2hhcHRlciBvZiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbC4KLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VmFyaWFibGUgQXNzaWdubWVudHMgYW5kIE1hbmlwdWxhdGlvbnM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBWYXJpYWJsZSBhc3NpZ25tZW50cyBhbGxvdyBhIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGEKLSAgICAgICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICBUaGUgYXNzaWdubWVudCBjYW4gYmUgc3RhdGljIHRleHQgb3IgbWlnaHQgaW5jbHVkZQotICAgICAgICAgICAgICAgIHRoZSBjb250ZW50cyBvZiBvdGhlciB2YXJpYWJsZXMuCi0gICAgICAgICAgICAgICAgSW4gYWRkaXRpb24gdG8gdGhlIGFzc2lnbm1lbnQsIGFwcGVuZGluZyBhbmQgcHJlcGVuZGluZwotICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMgYXJlIGFsc28gc3VwcG9ydGVkLjwvcGFyYT4KLSAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3Mgc29tZSBvZiB0aGUgd2F5cwotICAgICAgICAgICAgICAgIHlvdSBjYW4gdXNlIHZhcmlhYmxlcyBpbiByZWNpcGVzOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgUyA9ICIke1dPUktESVJ9L3Bvc3RmaXgtJHtQVn0iCi0gICAgIENGTEFHUyArPSAiLUROT19BU00iCi0gICAgIFNSQ19VUklfYXBwZW5kID0gIiBmaWxlOi8vZml4dXAucGF0Y2giCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5GdW5jdGlvbnM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBGdW5jdGlvbnMgcHJvdmlkZSBhIHNlcmllcyBvZiBhY3Rpb25zIHRvIGJlIHBlcmZvcm1lZC4KLSAgICAgICAgICAgICAgICBZb3UgdXN1YWxseSB1c2UgZnVuY3Rpb25zIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgYSB0YXNrIGZ1bmN0aW9uIG9yIHRvIGNvbXBsZW1lbnQKLSAgICAgICAgICAgICAgICBhIGRlZmF1bHQgZnVuY3Rpb24gKGkuZS4gYXBwZW5kIG9yIHByZXBlbmQgdG8gYW4KLSAgICAgICAgICAgICAgICBleGlzdGluZyBmdW5jdGlvbikuCi0gICAgICAgICAgICAgICAgU3RhbmRhcmQgZnVuY3Rpb25zIHVzZSA8ZmlsZW5hbWU+c2g8L2ZpbGVuYW1lPiBzaGVsbAotICAgICAgICAgICAgICAgIHN5bnRheCwgYWx0aG91Z2ggYWNjZXNzIHRvIE9wZW5FbWJlZGRlZCB2YXJpYWJsZXMgYW5kCi0gICAgICAgICAgICAgICAgaW50ZXJuYWwgbWV0aG9kcyBhcmUgYWxzbyBhdmFpbGFibGUuPC9wYXJhPgotICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBmdW5jdGlvbiBmcm9tIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZWQ8L2ZpbGVuYW1lPiByZWNpcGU6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBkb19pbnN0YWxsICgpIHsKLSAgICAgICAgIGF1dG90b29sc19kb19pbnN0YWxsCi0gICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQotICAgICAgICAgbXYgJHtEfSR7YmluZGlyfS9zZWQgJHtEfSR7YmFzZV9iaW5kaXJ9L3NlZAotICAgICAgICAgcm1kaXIgJHtEfSR7YmluZGlyfS8KLSAgICAgfQotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGltcGxlbWVudCBuZXcgZnVuY3Rpb25zIHRoYXQKLSAgICAgICAgICAgICAgICBhcmUgY2FsbGVkIGJldHdlZW4gZXhpc3RpbmcgdGFza3MgYXMgbG9uZyBhcyB0aGUKLSAgICAgICAgICAgICAgICBuZXcgZnVuY3Rpb25zIGFyZSBub3QgcmVwbGFjaW5nIG9yIGNvbXBsZW1lbnRpbmcgdGhlCi0gICAgICAgICAgICAgICAgZGVmYXVsdCBmdW5jdGlvbnMuCi0gICAgICAgICAgICAgICAgWW91IGNhbiBpbXBsZW1lbnQgZnVuY3Rpb25zIGluIFB5dGhvbgotICAgICAgICAgICAgICAgIGluc3RlYWQgb2Ygc2hlbGwuCi0gICAgICAgICAgICAgICAgQm90aCBvZiB0aGVzZSBvcHRpb25zIGFyZSBub3Qgc2VlbiBpbiB0aGUgbWFqb3JpdHkgb2YKLSAgICAgICAgICAgICAgICByZWNpcGVzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5LZXl3b3Jkczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIEJpdEJha2UgcmVjaXBlcyB1c2Ugb25seSBhIGZldyBrZXl3b3Jkcy4KLSAgICAgICAgICAgICAgICBZb3UgdXNlIGtleXdvcmRzIHRvIGluY2x1ZGUgY29tbW9uCi0gICAgICAgICAgICAgICAgZnVuY3Rpb25zICg8ZmlsZW5hbWU+aW5oZXJpdDwvZmlsZW5hbWU+KSwgbG9hZCBwYXJ0cwotICAgICAgICAgICAgICAgIG9mIGEgcmVjaXBlIGZyb20gb3RoZXIgZmlsZXMKLSAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmluY2x1ZGU8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVxdWlyZTwvZmlsZW5hbWU+KSBhbmQgZXhwb3J0IHZhcmlhYmxlcwotICAgICAgICAgICAgICAgIHRvIHRoZSBlbnZpcm9ubWVudCAoPGZpbGVuYW1lPmV4cG9ydDwvZmlsZW5hbWU+KS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIHRoZSB1c2Ugb2Ygc29tZSBvZgotICAgICAgICAgICAgICAgIHRoZXNlIGtleXdvcmRzOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgZXhwb3J0IFBPU1RDT05GID0gIiR7U1RBR0lOR19CSU5ESVJ9L3Bvc3Rjb25mIgotICAgICBpbmhlcml0IGF1dG9jb25mCi0gICAgIHJlcXVpcmUgb3RoZXJmaWxlLmluYwotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q29tbWVudHM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBBbnkgbGluZXMgdGhhdCBiZWdpbiB3aXRoIHRoZSBoYXNoIGNoYXJhY3RlcgotICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+IzwvZmlsZW5hbWU+KSBhcmUgdHJlYXRlZCBhcyBjb21tZW50IGxpbmVzCi0gICAgICAgICAgICAgICAgYW5kIGFyZSBpZ25vcmVkOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgIyBUaGlzIGlzIGEgY29tbWVudAotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoaXMgbmV4dCBsaXN0IHN1bW1hcml6ZXMgdGhlIG1vc3QgaW1wb3J0YW50IGFuZCBtb3N0IGNvbW1vbmx5Ci0gICAgICAgIHVzZWQgcGFydHMgb2YgdGhlIHJlY2lwZSBzeW50YXguCi0gICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZXNlIHBhcnRzIG9mIHRoZSBzeW50YXgsIHlvdSBjYW4KLSAgICAgICAgcmVmZXJlbmNlIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2JpdGJha2UtdXNlci1tYW51YWwtbWV0YWRhdGEnPlN5bnRheCBhbmQgT3BlcmF0b3JzPC91bGluaz4KLSAgICAgICAgY2hhcHRlciBpbiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbC4KLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TGluZSBDb250aW51YXRpb246IDxmaWxlbmFtZT5cPC9maWxlbmFtZT48L2VtcGhhc2lzPiAtCi0gICAgICAgICAgICAgICAgVXNlIHRoZSBiYWNrd2FyZCBzbGFzaCAoPGZpbGVuYW1lPlw8L2ZpbGVuYW1lPikKLSAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgdG8gc3BsaXQgYSBzdGF0ZW1lbnQgb3ZlciBtdWx0aXBsZSBsaW5lcy4KLSAgICAgICAgICAgICAgICBQbGFjZSB0aGUgc2xhc2ggY2hhcmFjdGVyIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUgdGhhdAotICAgICAgICAgICAgICAgIGlzIHRvIGJlIGNvbnRpbnVlZCBvbiB0aGUgbmV4dCBsaW5lOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgVkFSID0gIkEgcmVhbGx5IGxvbmcgXAotICAgICAgICAgICAgbGluZSIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgaGF2ZSBhbnkgY2hhcmFjdGVycyBpbmNsdWRpbmcgc3BhY2VzCi0gICAgICAgICAgICAgICAgICAgIG9yIHRhYnMgYWZ0ZXIgdGhlIHNsYXNoIGNoYXJhY3Rlci4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVzaW5nIFZhcmlhYmxlczogPGZpbGVuYW1lPiR7Li4ufTwvZmlsZW5hbWU+PC9lbXBoYXNpcz4gLQotICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPiR7PHJlcGxhY2VhYmxlPlZBUk5BTUU8L3JlcGxhY2VhYmxlPn08L2ZpbGVuYW1lPiBzeW50YXggdG8KLSAgICAgICAgICAgICAgICBhY2Nlc3MgdGhlIGNvbnRlbnRzIG9mIGEgdmFyaWFibGU6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9saWJwbmcvemxpYi0ke1BWfS50YXIuZ3oiCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGF0IHRoZSB2YWx1ZSBvZiBhCi0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGV4cHJlc3NlZCBpbiB0aGlzIGZvcm0gZG9lcyBub3QgZ2V0Ci0gICAgICAgICAgICAgICAgICAgIHN1YnN0aXR1dGVkIGF1dG9tYXRpY2FsbHkuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBleHBhbnNpb24gb2YgdGhlc2UgZXhwcmVzc2lvbnMgaGFwcGVucwotICAgICAgICAgICAgICAgICAgICBvbi1kZW1hbmQgbGF0ZXIgKGUuZy4gdXN1YWxseSB3aGVuIGEgZnVuY3Rpb24gdGhhdAotICAgICAgICAgICAgICAgICAgICBtYWtlcyByZWZlcmVuY2UgdG8gdGhlIHZhcmlhYmxlIGV4ZWN1dGVzKS4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBiZWhhdmlvciBlbnN1cmVzIHRoYXQgdGhlIHZhbHVlcyBhcmUgbW9zdAotICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZSBmb3IgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhleSBhcmUKLSAgICAgICAgICAgICAgICAgICAgZmluYWxseSB1c2VkLgotICAgICAgICAgICAgICAgICAgICBPbiB0aGUgcmFyZSBvY2Nhc2lvbiB0aGF0IHlvdSBkbyBuZWVkIHRoZSB2YXJpYWJsZQotICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uIHRvIGJlIGV4cGFuZGVkIGltbWVkaWF0ZWx5LCB5b3UgY2FuIHVzZQotICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPjo9PC9maWxlbmFtZT4gb3BlcmF0b3IgaW5zdGVhZCBvZgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PTwvZmlsZW5hbWU+IHdoZW4geW91IG1ha2UgdGhlCi0gICAgICAgICAgICAgICAgICAgIGFzc2lnbm1lbnQsIGJ1dCB0aGlzIGlzIG5vdCBnZW5lcmFsbHkgbmVlZGVkLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UXVvdGUgQWxsIEFzc2lnbm1lbnRzOiA8ZmlsZW5hbWU+IjxyZXBsYWNlYWJsZT52YWx1ZTwvcmVwbGFjZWFibGU+IjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4gLQotICAgICAgICAgICAgICAgIFVzZSBkb3VibGUgcXVvdGVzIGFyb3VuZCB0aGUgdmFsdWUgaW4gYWxsIHZhcmlhYmxlCi0gICAgICAgICAgICAgICAgYXNzaWdubWVudHMuCi0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBWQVIxID0gIiR7T1RIRVJWQVJ9IgotICAgICBWQVIyID0gIlRoZSB2ZXJzaW9uIGlzICR7UFZ9IgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q29uZGl0aW9uYWwgQXNzaWdubWVudDogPGZpbGVuYW1lPj89PC9maWxlbmFtZT48L2VtcGhhc2lzPiAtCi0gICAgICAgICAgICAgICAgQ29uZGl0aW9uYWwgYXNzaWdubWVudCBpcyB1c2VkIHRvIGFzc2lnbiBhIHZhbHVlIHRvCi0gICAgICAgICAgICAgICAgYSB2YXJpYWJsZSwgYnV0IG9ubHkgd2hlbiB0aGUgdmFyaWFibGUgaXMgY3VycmVudGx5Ci0gICAgICAgICAgICAgICAgdW5zZXQuCi0gICAgICAgICAgICAgICAgVXNlIHRoZSBxdWVzdGlvbiBtYXJrIGZvbGxvd2VkIGJ5IHRoZSBlcXVhbCBzaWduCi0gICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4/PTwvZmlsZW5hbWU+KSB0byBtYWtlIGEgInNvZnQiIGFzc2lnbm1lbnQKLSAgICAgICAgICAgICAgICB1c2VkIGZvciBjb25kaXRpb25hbCBhc3NpZ25tZW50LgotICAgICAgICAgICAgICAgIFR5cGljYWxseSwgInNvZnQiIGFzc2lnbm1lbnRzIGFyZSB1c2VkIGluIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3IgdmFyaWFibGVzCi0gICAgICAgICAgICAgICAgdGhhdCBhcmUgYWxsb3dlZCB0byBjb21lIHRocm91Z2ggZnJvbSB0aGUgZXh0ZXJuYWwKLSAgICAgICAgICAgICAgICBlbnZpcm9ubWVudC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgPHBhcmE+SGVyZSBpcyBhbiBleGFtcGxlIHdoZXJlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPlZBUjE8L2ZpbGVuYW1lPiBpcyBzZXQgdG8gIk5ldyB2YWx1ZSIgaWYKLSAgICAgICAgICAgICAgICBpdCBpcyBjdXJyZW50bHkgZW1wdHkuCi0gICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgPGZpbGVuYW1lPlZBUjE8L2ZpbGVuYW1lPiBoYXMgYWxyZWFkeSBiZWVuCi0gICAgICAgICAgICAgICAgc2V0LCBpdCByZW1haW5zIHVuY2hhbmdlZDoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFZBUjEgPz0gIk5ldyB2YWx1ZSIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgSW4gdGhpcyBuZXh0IGV4YW1wbGUsIDxmaWxlbmFtZT5WQVIxPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBpcyBsZWZ0IHdpdGggdGhlIHZhbHVlICJPcmlnaW5hbCB2YWx1ZSI6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBWQVIxID0gIk9yaWdpbmFsIHZhbHVlIgotICAgICBWQVIxID89ICJOZXcgdmFsdWUiCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5BcHBlbmRpbmc6IDxmaWxlbmFtZT4rPTwvZmlsZW5hbWU+PC9lbXBoYXNpcz4gLQotICAgICAgICAgICAgICAgIFVzZSB0aGUgcGx1cyBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkgdGhlIGVxdWFscyBzaWduCi0gICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4rPTwvZmlsZW5hbWU+KSB0byBhcHBlbmQgdmFsdWVzIHRvIGV4aXN0aW5nCi0gICAgICAgICAgICAgICAgdmFyaWFibGVzLgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBUaGlzIG9wZXJhdG9yIGFkZHMgYSBzcGFjZSBiZXR3ZWVuIHRoZSBleGlzdGluZwotICAgICAgICAgICAgICAgICAgICBjb250ZW50IG9mIHRoZSB2YXJpYWJsZSBhbmQgdGhlIG5ldyBjb250ZW50LgotICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+Ci0gICAgICAgICAgICAgICAgPHBhcmE+SGVyZSBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgU1JDX1VSSSArPSAiZmlsZTovL2ZpeC1tYWtlZmlsZS5wYXRjaCIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlByZXBlbmRpbmc6IDxmaWxlbmFtZT49KzwvZmlsZW5hbWU+PC9lbXBoYXNpcz4gLQotICAgICAgICAgICAgICAgIFVzZSB0aGUgZXF1YWxzIHNpZ24gZm9sbG93ZWQgYnkgdGhlIHBsdXMgY2hhcmFjdGVyCi0gICAgICAgICAgICAgICAgKDxmaWxlbmFtZT49KzwvZmlsZW5hbWU+KSB0byBwcmVwZW5kIHZhbHVlcyB0byBleGlzdGluZwotICAgICAgICAgICAgICAgIHZhcmlhYmxlcy4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBvcGVyYXRvciBhZGRzIGEgc3BhY2UgYmV0d2VlbiB0aGUgbmV3IGNvbnRlbnQKLSAgICAgICAgICAgICAgICAgICAgYW5kIHRoZSBleGlzdGluZyBjb250ZW50IG9mIHRoZSB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgotICAgICAgICAgICAgICAgIDxwYXJhPkhlcmUgaXMgYW4gZXhhbXBsZToKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFZBUiA9KyAiU3RhcnRzIgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QXBwZW5kaW5nOiA8ZmlsZW5hbWU+X2FwcGVuZDwvZmlsZW5hbWU+PC9lbXBoYXNpcz4gLQotICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPl9hcHBlbmQ8L2ZpbGVuYW1lPiBvcGVyYXRvciB0bwotICAgICAgICAgICAgICAgIGFwcGVuZCB2YWx1ZXMgdG8gZXhpc3RpbmcgdmFyaWFibGVzLgotICAgICAgICAgICAgICAgIFRoaXMgb3BlcmF0b3IgZG9lcyBub3QgYWRkIGFueSBhZGRpdGlvbmFsIHNwYWNlLgotICAgICAgICAgICAgICAgIEFsc28sIHRoZSBvcGVyYXRvciBpcyBhcHBsaWVkIGFmdGVyIGFsbCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Kz08L2ZpbGVuYW1lPiwgYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPj0rPC9maWxlbmFtZT4gb3BlcmF0b3JzIGhhdmUgYmVlbiBhcHBsaWVkIGFuZAotICAgICAgICAgICAgICAgIGFmdGVyIGFsbCA8ZmlsZW5hbWU+PTwvZmlsZW5hbWU+IGFzc2lnbm1lbnRzIGhhdmUKLSAgICAgICAgICAgICAgICBvY2N1cnJlZC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIHRoZSBzcGFjZSBiZWluZwotICAgICAgICAgICAgICAgIGV4cGxpY2l0bHkgYWRkZWQgdG8gdGhlIHN0YXJ0IHRvIGVuc3VyZSB0aGUgYXBwZW5kZWQKLSAgICAgICAgICAgICAgICB2YWx1ZSBpcyBub3QgbWVyZ2VkIHdpdGggdGhlIGV4aXN0aW5nIHZhbHVlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgU1JDX1VSSV9hcHBlbmQgPSAiIGZpbGU6Ly9maXgtbWFrZWZpbGUucGF0Y2giCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyB1c2UgdGhlIDxmaWxlbmFtZT5fYXBwZW5kPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBvcGVyYXRvciB3aXRoIG92ZXJyaWRlcywgd2hpY2ggcmVzdWx0cyBpbiB0aGUgYWN0aW9ucwotICAgICAgICAgICAgICAgIG9ubHkgYmVpbmcgcGVyZm9ybWVkIGZvciB0aGUgc3BlY2lmaWVkIHRhcmdldCBvcgotICAgICAgICAgICAgICAgIG1hY2hpbmU6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTUkNfVVJJX2FwcGVuZF9zaDQgPSAiIGZpbGU6Ly9maXgtbWFrZWZpbGUucGF0Y2giCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5QcmVwZW5kaW5nOiA8ZmlsZW5hbWU+X3ByZXBlbmQ8L2ZpbGVuYW1lPjwvZW1waGFzaXM+IC0KLSAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5fcHJlcGVuZDwvZmlsZW5hbWU+IG9wZXJhdG9yIHRvCi0gICAgICAgICAgICAgICAgcHJlcGVuZCB2YWx1ZXMgdG8gZXhpc3RpbmcgdmFyaWFibGVzLgotICAgICAgICAgICAgICAgIFRoaXMgb3BlcmF0b3IgZG9lcyBub3QgYWRkIGFueSBhZGRpdGlvbmFsIHNwYWNlLgotICAgICAgICAgICAgICAgIEFsc28sIHRoZSBvcGVyYXRvciBpcyBhcHBsaWVkIGFmdGVyIGFsbCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Kz08L2ZpbGVuYW1lPiwgYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPj0rPC9maWxlbmFtZT4gb3BlcmF0b3JzIGhhdmUgYmVlbiBhcHBsaWVkIGFuZAotICAgICAgICAgICAgICAgIGFmdGVyIGFsbCA8ZmlsZW5hbWU+PTwvZmlsZW5hbWU+IGFzc2lnbm1lbnRzIGhhdmUKLSAgICAgICAgICAgICAgICBvY2N1cnJlZC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIHRoZSBzcGFjZSBiZWluZwotICAgICAgICAgICAgICAgIGV4cGxpY2l0bHkgYWRkZWQgdG8gdGhlIGVuZCB0byBlbnN1cmUgdGhlIHByZXBlbmRlZAotICAgICAgICAgICAgICAgIHZhbHVlIGlzIG5vdCBtZXJnZWQgd2l0aCB0aGUgZXhpc3RpbmcgdmFsdWU6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBDRkxBR1NfcHJlcGVuZCA9ICItSSR7U30vbXlpbmNsdWRlcyAiCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyB1c2UgdGhlIDxmaWxlbmFtZT5fcHJlcGVuZDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgb3BlcmF0b3Igd2l0aCBvdmVycmlkZXMsIHdoaWNoIHJlc3VsdHMgaW4gdGhlIGFjdGlvbnMKLSAgICAgICAgICAgICAgICBvbmx5IGJlaW5nIHBlcmZvcm1lZCBmb3IgdGhlIHNwZWNpZmllZCB0YXJnZXQgb3IKLSAgICAgICAgICAgICAgICBtYWNoaW5lOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgQ0ZMQUdTX3ByZXBlbmRfc2g0ID0gIi1JJHtTfS9teWluY2x1ZGVzICIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk92ZXJyaWRlczo8L2VtcGhhc2lzPiAtCi0gICAgICAgICAgICAgICAgWW91IGNhbiB1c2Ugb3ZlcnJpZGVzIHRvIHNldCBhIHZhbHVlIGNvbmRpdGlvbmFsbHksCi0gICAgICAgICAgICAgICAgdHlwaWNhbGx5IGJhc2VkIG9uIGhvdyB0aGUgcmVjaXBlIGlzIGJlaW5nIGJ1aWx0LgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0byBzZXQgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUtCUkFOQ0gnPjxmaWxlbmFtZT5LQlJBTkNIPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUncyB2YWx1ZSB0byAic3RhbmRhcmQvYmFzZSIgZm9yIGFueSB0YXJnZXQKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz4sCi0gICAgICAgICAgICAgICAgZXhjZXB0IGZvciBxZW11YXJtIHdoZXJlIGl0IHNob3VsZCBiZSBzZXQgdG8KLSAgICAgICAgICAgICAgICAic3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiLCB5b3Ugd291bGQgZG8gdGhlCi0gICAgICAgICAgICAgICAgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgS0JSQU5DSCA9ICJzdGFuZGFyZC9iYXNlIgotICAgICBLQlJBTkNIX3FlbXVhcm0gID0gInN0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBPdmVycmlkZXMgYXJlIGFsc28gdXNlZCB0byBzZXBhcmF0ZSBhbHRlcm5hdGUgdmFsdWVzCi0gICAgICAgICAgICAgICAgb2YgYSB2YXJpYWJsZSBpbiBvdGhlciBzaXR1YXRpb25zLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB3aGVuIHNldHRpbmcgdmFyaWFibGVzIHN1Y2ggYXMKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRklMRVMnPjxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SREVQRU5EUyc+PGZpbGVuYW1lPlJERVBFTkRTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGhhdCBhcmUgc3BlY2lmaWMgdG8gaW5kaXZpZHVhbCBwYWNrYWdlcyBwcm9kdWNlZCBieQotICAgICAgICAgICAgICAgIGEgcmVjaXBlLCB5b3Ugc2hvdWxkIGFsd2F5cyB1c2UgYW4gb3ZlcnJpZGUgdGhhdAotICAgICAgICAgICAgICAgIHNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgcGFja2FnZS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+SW5kZW50YXRpb246PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBVc2Ugc3BhY2VzIGZvciBpbmRlbnRhdGlvbiByYXRoZXIgdGhhbiB0aGFuIHRhYnMuCi0gICAgICAgICAgICAgICAgRm9yIHNoZWxsIGZ1bmN0aW9ucywgYm90aCBjdXJyZW50bHkgd29yay4KLSAgICAgICAgICAgICAgICBIb3dldmVyLCBpdCBpcyBhIHBvbGljeSBkZWNpc2lvbiBvZiB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgIHRvIHVzZSB0YWJzIGluIHNoZWxsIGZ1bmN0aW9ucy4KLSAgICAgICAgICAgICAgICBSZWFsaXplIHRoYXQgc29tZSBsYXllcnMgaGF2ZSBhIHBvbGljeSB0byB1c2Ugc3BhY2VzCi0gICAgICAgICAgICAgICAgZm9yIGFsbCBpbmRlbnRhdGlvbi4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VXNpbmcgUHl0aG9uIGZvciBDb21wbGV4IE9wZXJhdGlvbnM6IDxmaWxlbmFtZT4ke0A8cmVwbGFjZWFibGU+cHl0aG9uX2NvZGU8L3JlcGxhY2VhYmxlPn08L2ZpbGVuYW1lPjwvZW1waGFzaXM+IC0KLSAgICAgICAgICAgICAgICBGb3IgbW9yZSBhZHZhbmNlZCBwcm9jZXNzaW5nLCBpdCBpcyBwb3NzaWJsZSB0byB1c2UKLSAgICAgICAgICAgICAgICBQeXRob24gY29kZSBkdXJpbmcgdmFyaWFibGUgYXNzaWdubWVudHMgKGUuZy4KLSAgICAgICAgICAgICAgICBzZWFyY2ggYW5kIHJlcGxhY2VtZW50IG9uIGEgdmFyaWFibGUpLjwvcGFyYT4KLSAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgaW5kaWNhdGUgUHl0aG9uIGNvZGUgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7QDxyZXBsYWNlYWJsZT5weXRob25fY29kZTwvcmVwbGFjZWFibGU+fTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgc3ludGF4IGZvciB0aGUgdmFyaWFibGUgYXNzaWdubWVudDoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFNSQ19VUkkgPSAiZnRwOi8vZnRwLmluZm8temlwLm9yZy9wdWIvaW5mb3ppcC9zcmMvemlwJHtAZC5nZXRWYXIoJ1BWJywxKS5yZXBsYWNlKCcuJywgJycpfS50Z3oKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNoZWxsIEZ1bmN0aW9uIFN5bnRheDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFdyaXRlIHNoZWxsIGZ1bmN0aW9ucyBhcyBpZiB5b3Ugd2VyZSB3cml0aW5nIGEgc2hlbGwKLSAgICAgICAgICAgICAgICBzY3JpcHQgd2hlbiB5b3UgZGVzY3JpYmUgYSBsaXN0IG9mIGFjdGlvbnMgdG8gdGFrZS4KLSAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGVuc3VyZSB0aGF0IHlvdXIgc2NyaXB0IHdvcmtzIHdpdGggYSBnZW5lcmljCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNoPC9maWxlbmFtZT4gYW5kIHRoYXQgaXQgZG9lcyBub3QgcmVxdWlyZQotICAgICAgICAgICAgICAgIGFueSA8ZmlsZW5hbWU+YmFzaDwvZmlsZW5hbWU+IG9yIG90aGVyIHNoZWxsLXNwZWNpZmljCi0gICAgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eS4KLSAgICAgICAgICAgICAgICBUaGUgc2FtZSBjb25zaWRlcmF0aW9ucyBhcHBseSB0byB2YXJpb3VzIHN5c3RlbQotICAgICAgICAgICAgICAgIHV0aWxpdGllcyAoZS5nLiA8ZmlsZW5hbWU+c2VkPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdyZXA8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmF3azwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIGFuZCBzbyBmb3J0aCkgdGhhdCB5b3UgbWlnaHQgd2lzaCB0byB1c2UuCi0gICAgICAgICAgICAgICAgSWYgaW4gZG91YnQsIHlvdSBzaG91bGQgY2hlY2sgd2l0aCBtdWx0aXBsZQotICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9ucyAtIGluY2x1ZGluZyB0aG9zZSBmcm9tIEJ1c3lCb3guCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgIDwvcGFyYT4KLTwvc2VjdGlvbj4KLQotPHNlY3Rpb24gaWQ9ImRldmVsb3BtZW50LWNvbmNlcHRzIj4KLSAgICA8dGl0bGU+RGV2ZWxvcG1lbnQgQ29uY2VwdHM8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoaXMgc2VjdGlvbiB0YWtlcyBhIG1vcmUgZGV0YWlsZWQgbG9vayBpbnNpZGUgdGhlIGRldmVsb3BtZW50Ci0gICAgICAgIHByb2Nlc3MuCi0gICAgICAgIFRoZSBmb2xsb3dpbmcgZGlhZ3JhbSByZXByZXNlbnRzIGRldmVsb3BtZW50IGF0IGEgaGlnaCBsZXZlbC4KLSAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGlzIGNoYXB0ZXIgZXhwYW5kcyBvbiB0aGUgZnVuZGFtZW50YWwgaW5wdXQsIG91dHB1dCwKLSAgICAgICAgcHJvY2VzcywgYW5kCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4pIGJsb2NrcwotICAgICAgICB0aGF0IG1ha2UgdXAgZGV2ZWxvcG1lbnQgaW4gdGhlIFlvY3RvIFByb2plY3QgZW52aXJvbm1lbnQuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmEgaWQ9J2dlbmVyYWwteW9jdG8tZW52aXJvbm1lbnQtZmlndXJlJz4KLSAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3lvY3RvLWVudmlyb25tZW50LXJlZi5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI4aW4iIGRlcHRoPSI0LjI1aW4iIC8+Ci0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEluIGdlbmVyYWwsIGRldmVsb3BtZW50IGNvbnNpc3RzIG9mIHNldmVyYWwgZnVuY3Rpb25hbCBhcmVhczoKLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VXNlciBDb25maWd1cmF0aW9uOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgTWV0YWRhdGEgeW91IGNhbiB1c2UgdG8gY29udHJvbCB0aGUgYnVpbGQgcHJvY2Vzcy4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TWV0YWRhdGEgTGF5ZXJzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgVmFyaW91cyBsYXllcnMgdGhhdCBwcm92aWRlIHNvZnR3YXJlLCBtYWNoaW5lLCBhbmQKLSAgICAgICAgICAgICAgICBkaXN0cm8gTWV0YWRhdGEuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNvdXJjZSBGaWxlczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFVwc3RyZWFtIHJlbGVhc2VzLCBsb2NhbCBwcm9qZWN0cywgYW5kIFNDTXMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkJ1aWxkIFN5c3RlbTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFByb2Nlc3NlcyB1bmRlciB0aGUgY29udHJvbCBvZgotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JpdGJha2UtdGVybSc+Qml0QmFrZTwvbGluaz4uCi0gICAgICAgICAgICAgICAgVGhpcyBibG9jayBleHBhbmRzIG9uIGhvdyBCaXRCYWtlIGZldGNoZXMgc291cmNlLCBhcHBsaWVzCi0gICAgICAgICAgICAgICAgcGF0Y2hlcywgY29tcGxldGVzIGNvbXBpbGF0aW9uLCBhbmFseXplcyBvdXRwdXQgZm9yIHBhY2thZ2UKLSAgICAgICAgICAgICAgICBnZW5lcmF0aW9uLCBjcmVhdGVzIGFuZCB0ZXN0cyBwYWNrYWdlcywgZ2VuZXJhdGVzIGltYWdlcywgYW5kCi0gICAgICAgICAgICAgICAgZ2VuZXJhdGVzIGNyb3NzLWRldmVsb3BtZW50IHRvb2xzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5QYWNrYWdlIEZlZWRzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgRGlyZWN0b3JpZXMgY29udGFpbmluZyBvdXRwdXQgcGFja2FnZXMgKFJQTSwgREVCIG9yIElQSyksCi0gICAgICAgICAgICAgICAgd2hpY2ggYXJlIHN1YnNlcXVlbnRseSB1c2VkIGluIHRoZSBjb25zdHJ1Y3Rpb24gb2YgYW4gaW1hZ2Ugb3IKLSAgICAgICAgICAgICAgICBTREssIHByb2R1Y2VkIGJ5IHRoZSBidWlsZCBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgVGhlc2UgZmVlZHMgY2FuIGFsc28gYmUgY29waWVkIGFuZCBzaGFyZWQgdXNpbmcgYSB3ZWIgc2VydmVyIG9yCi0gICAgICAgICAgICAgICAgb3RoZXIgbWVhbnMgdG8gZmFjaWxpdGF0ZSBleHRlbmRpbmcgb3IgdXBkYXRpbmcgZXhpc3RpbmcKLSAgICAgICAgICAgICAgICBpbWFnZXMgb24gZGV2aWNlcyBhdCBydW50aW1lIGlmIHJ1bnRpbWUgcGFja2FnZSBtYW5hZ2VtZW50IGlzCi0gICAgICAgICAgICAgICAgZW5hYmxlZC48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+SW1hZ2VzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgSW1hZ2VzIHByb2R1Y2VkIGJ5IHRoZSBkZXZlbG9wbWVudCBwcm9jZXNzLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5BcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBTREs6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBDcm9zcy1kZXZlbG9wbWVudCB0b29scyB0aGF0IGFyZSBwcm9kdWNlZCBhbG9uZyB3aXRoIGFuIGltYWdlCi0gICAgICAgICAgICAgICAgb3Igc2VwYXJhdGVseSB3aXRoIEJpdEJha2UuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgIDwvcGFyYT4KLQotICAgIDxzZWN0aW9uIGlkPSJ1c2VyLWNvbmZpZ3VyYXRpb24iPgotICAgICAgICA8dGl0bGU+VXNlciBDb25maWd1cmF0aW9uPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFVzZXIgY29uZmlndXJhdGlvbiBoZWxwcyBkZWZpbmUgdGhlIGJ1aWxkLgotICAgICAgICAgICAgVGhyb3VnaCB1c2VyIGNvbmZpZ3VyYXRpb24sIHlvdSBjYW4gdGVsbCBCaXRCYWtlIHRoZQotICAgICAgICAgICAgdGFyZ2V0IGFyY2hpdGVjdHVyZSBmb3Igd2hpY2ggeW91IGFyZSBidWlsZGluZyB0aGUgaW1hZ2UsCi0gICAgICAgICAgICB3aGVyZSB0byBzdG9yZSBkb3dubG9hZGVkIHNvdXJjZSwgYW5kIG90aGVyIGJ1aWxkIHByb3BlcnRpZXMuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZmlndXJlIHNob3dzIGFuIGV4cGFuZGVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZQotICAgICAgICAgICAgIlVzZXIgQ29uZmlndXJhdGlvbiIgYm94IG9mIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2VuZXJhbC15b2N0by1lbnZpcm9ubWVudC1maWd1cmUnPmdlbmVyYWwgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCBmaWd1cmU8L2xpbms+OgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvdXNlci1jb25maWd1cmF0aW9uLnBuZyIgYWxpZ249ImNlbnRlciIgLz4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQml0QmFrZSBuZWVkcyBzb21lIGJhc2ljIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4gb3JkZXIgdG8gY29tcGxldGUKLSAgICAgICAgICAgIGEgYnVpbGQuCi0gICAgICAgICAgICBUaGVzZSBmaWxlcyBhcmUgPGZpbGVuYW1lPiouY29uZjwvZmlsZW5hbWU+IGZpbGVzLgotICAgICAgICAgICAgVGhlIG1pbmltYWxseSBuZWNlc3Nhcnkgb25lcyByZXNpZGUgYXMgZXhhbXBsZSBmaWxlcyBpbiB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgotICAgICAgICAgICAgRm9yIHNpbXBsaWNpdHksIHRoaXMgc2VjdGlvbiByZWZlcnMgdG8gdGhlIFNvdXJjZSBEaXJlY3RvcnkgYXMKLSAgICAgICAgICAgIHRoZSAiUG9reSBEaXJlY3RvcnkuIgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBXaGVuIHlvdSBjbG9uZSB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQgcmVwb3NpdG9yeSBvciB5b3UKLSAgICAgICAgICAgIGRvd25sb2FkIGFuZCB1bnBhY2sgYSBZb2N0byBQcm9qZWN0IHJlbGVhc2UsIHlvdSBjYW4gc2V0IHVwIHRoZQotICAgICAgICAgICAgU291cmNlIERpcmVjdG9yeSB0byBiZSBuYW1lZCBhbnl0aGluZyB5b3Ugd2FudC4KLSAgICAgICAgICAgIEZvciB0aGlzIGRpc2N1c3Npb24sIHRoZSBjbG9uZWQgcmVwb3NpdG9yeSB1c2VzIHRoZSBkZWZhdWx0Ci0gICAgICAgICAgICBuYW1lIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4uCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBUaGUgUG9reSByZXBvc2l0b3J5IGlzIHByaW1hcmlseSBhbiBhZ2dyZWdhdGlvbiBvZiBleGlzdGluZwotICAgICAgICAgICAgICAgIHJlcG9zaXRvcmllcy4KLSAgICAgICAgICAgICAgICBJdCBpcyBub3QgYSBjYW5vbmljYWwgdXBzdHJlYW0gc291cmNlLgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm1ldGEtcG9reTwvZmlsZW5hbWU+IGxheWVyIGluc2lkZSBQb2t5IGNvbnRhaW5zCi0gICAgICAgICAgICBhIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5IHRoYXQgaGFzIGV4YW1wbGUKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMuCi0gICAgICAgICAgICBUaGVzZSBleGFtcGxlIGZpbGVzIGFyZSB1c2VkIGFzIGEgYmFzaXMgZm9yIGNyZWF0aW5nIGFjdHVhbAotICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcyB3aGVuIHlvdSBzb3VyY2UgdGhlIGJ1aWxkIGVudmlyb25tZW50Ci0gICAgICAgICAgICBzY3JpcHQKLSAgICAgICAgICAgIChpLmUuCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPikuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFNvdXJjaW5nIHRoZSBidWlsZCBlbnZpcm9ubWVudCBzY3JpcHQgY3JlYXRlcyBhCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KLSAgICAgICAgICAgIGlmIG9uZSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LgotICAgICAgICAgICAgQml0QmFrZSB1c2VzIHRoZSBCdWlsZCBEaXJlY3RvcnkgZm9yIGFsbCBpdHMgd29yayBkdXJpbmcgYnVpbGRzLgotICAgICAgICAgICAgVGhlIEJ1aWxkIERpcmVjdG9yeSBoYXMgYSA8ZmlsZW5hbWU+Y29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeSB0aGF0Ci0gICAgICAgICAgICBjb250YWlucyBkZWZhdWx0IHZlcnNpb25zIG9mIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlcy4KLSAgICAgICAgICAgIFRoZXNlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgY3JlYXRlZCBvbmx5IGlmIHZlcnNpb25zCi0gICAgICAgICAgICBkbyBub3QgYWxyZWFkeSBleGlzdCBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5IGF0IHRoZSB0aW1lIHlvdQotICAgICAgICAgICAgc291cmNlIHRoZSBidWlsZCBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEJlY2F1c2UgdGhlIFBva3kgcmVwb3NpdG9yeSBpcyBmdW5kYW1lbnRhbGx5IGFuIGFnZ3JlZ2F0aW9uIG9mCi0gICAgICAgICAgICBleGlzdGluZyByZXBvc2l0b3JpZXMsIHNvbWUgdXNlcnMgbWlnaHQgYmUgZmFtaWxpYXIgd2l0aCBydW5uaW5nCi0gICAgICAgICAgICB0aGUgPGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT4gc2NyaXB0IGluIHRoZSBjb250ZXh0Ci0gICAgICAgICAgICBvZiBzZXBhcmF0ZSBPcGVuRW1iZWRkZWQtQ29yZSBhbmQgQml0QmFrZSByZXBvc2l0b3JpZXMgcmF0aGVyIHRoYW4gYQotICAgICAgICAgICAgc2luZ2xlIFBva3kgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgIFRoaXMgZGlzY3Vzc2lvbiBhc3N1bWVzIHRoZSBzY3JpcHQgaXMgZXhlY3V0ZWQgZnJvbSB3aXRoaW4gYSBjbG9uZWQKLSAgICAgICAgICAgIG9yIHVucGFja2VkIHZlcnNpb24gb2YgUG9reS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHdoZXJlIHRoZSBzY3JpcHQgaXMgc291cmNlZCwgZGlmZmVyZW50IHN1Yi1zY3JpcHRzCi0gICAgICAgICAgICBhcmUgY2FsbGVkIHRvIHNldCB1cCB0aGUgQnVpbGQgRGlyZWN0b3J5IChZb2N0byBvciBPcGVuRW1iZWRkZWQpLgotICAgICAgICAgICAgU3BlY2lmaWNhbGx5LCB0aGUgc2NyaXB0Ci0gICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0cy9vZS1zZXR1cC1idWlsZGRpcjwvZmlsZW5hbWU+IGluc2lkZSB0aGUKLSAgICAgICAgICAgIHBva3kgZGlyZWN0b3J5IHNldHMgdXAgdGhlIEJ1aWxkIERpcmVjdG9yeSBhbmQgc2VlZHMgdGhlIGRpcmVjdG9yeQotICAgICAgICAgICAgKGlmIG5lY2Vzc2FyeSkgd2l0aCBjb25maWd1cmF0aW9uIGZpbGVzIGFwcHJvcHJpYXRlIGZvciB0aGUKLSAgICAgICAgICAgIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnNjcmlwdHMvb2Utc2V0dXAtYnVpbGRkaXI8L2ZpbGVuYW1lPiBzY3JpcHQKLSAgICAgICAgICAgICAgICB1c2VzIHRoZSA8ZmlsZW5hbWU+JFRFTVBMQVRFQ09ORjwvZmlsZW5hbWU+IHZhcmlhYmxlIHRvCi0gICAgICAgICAgICAgICAgZGV0ZXJtaW5lIHdoaWNoIHNhbXBsZSBjb25maWd1cmF0aW9uIGZpbGVzIHRvIGxvY2F0ZS4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBwcm92aWRlcyBtYW55Ci0gICAgICAgICAgICBiYXNpYyB2YXJpYWJsZXMgdGhhdCBkZWZpbmUgYSBidWlsZCBlbnZpcm9ubWVudC4KLSAgICAgICAgICAgIEhlcmUgaXMgYSBsaXN0IG9mIGEgZmV3LgotICAgICAgICAgICAgVG8gc2VlIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIGluIGEgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgZmlsZSBjcmVhdGVkIGJ5IHRoZSBidWlsZCBlbnZpcm9ubWVudCBzY3JpcHQsIHNlZSB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mLnNhbXBsZTwvZmlsZW5hbWU+IGluIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reTwvZmlsZW5hbWU+IGxheWVyOgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlBhcmFsbGVsaXNtIE9wdGlvbnM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlZCBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCX05VTUJFUl9USFJFQURTJz48ZmlsZW5hbWU+QkJfTlVNQkVSX1RIUkVBRFM8L2ZpbGVuYW1lPjwvbGluaz4sCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQVJBTExFTF9NQUtFJz48ZmlsZW5hbWU+UEFSQUxMRUxfTUFLRTwvZmlsZW5hbWU+PC9saW5rPiwKLSAgICAgICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyLUJCX05VTUJFUl9QQVJTRV9USFJFQURTJz48ZmlsZW5hbWU+QkJfTlVNQkVSX1BBUlNFX1RIUkVBRFM8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcy48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlRhcmdldCBNYWNoaW5lIFNlbGVjdGlvbjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVkIGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Eb3dubG9hZCBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlZCBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURMX0RJUic+PGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNoYXJlZCBTdGF0ZSBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlZCBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNTVEFURV9ESVInPjxmaWxlbmFtZT5TU1RBVEVfRElSPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QnVpbGQgT3V0cHV0OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb25zIHNldCBpbiB0aGUgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgZmlsZSBjYW4gYWxzbyBiZSBzZXQgaW4gdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvc2l0ZS5jb25mPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvYXV0by5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlcy4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSB0ZWxscyBCaXRCYWtlIHdoYXQKLSAgICAgICAgICAgIGxheWVycyB5b3Ugd2FudCBjb25zaWRlcmVkIGR1cmluZyB0aGUgYnVpbGQuCi0gICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgbGF5ZXJzIGxpc3RlZCBpbiB0aGlzIGZpbGUgaW5jbHVkZSBsYXllcnMKLSAgICAgICAgICAgIG1pbmltYWxseSBuZWVkZWQgYnkgdGhlIGJ1aWxkIHN5c3RlbS4KLSAgICAgICAgICAgIEhvd2V2ZXIsIHlvdSBtdXN0IG1hbnVhbGx5IGFkZCBhbnkgY3VzdG9tIGxheWVycyB5b3UgaGF2ZSBjcmVhdGVkLgotICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gd29ya2luZyB3aXRoIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGluIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2VuYWJsaW5nLXlvdXItbGF5ZXInPkVuYWJsaW5nIFlvdXIgTGF5ZXI8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgZmlsZXMgPGZpbGVuYW1lPnNpdGUuY29uZjwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgPGZpbGVuYW1lPmF1dG8uY29uZjwvZmlsZW5hbWU+IGFyZSBub3QgY3JlYXRlZCBieSB0aGUgZW52aXJvbm1lbnQKLSAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIHNjcmlwdC4KLSAgICAgICAgICAgIElmIHlvdSB3YW50IHRoZSA8ZmlsZW5hbWU+c2l0ZS5jb25mPC9maWxlbmFtZT4gZmlsZSwgeW91IG5lZWQgdG8KLSAgICAgICAgICAgIGNyZWF0ZSB0aGF0IHlvdXJzZWxmLgotICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5hdXRvLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGlzIHR5cGljYWxseSBjcmVhdGVkIGJ5Ci0gICAgICAgICAgICBhbiBhdXRvYnVpbGRlcjoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+c2l0ZS5jb25mPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT5jb25mL3NpdGUuY29uZjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSB0byBjb25maWd1cmUgbXVsdGlwbGUgYnVpbGQgZGlyZWN0b3JpZXMuCi0gICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBoYWQgc2V2ZXJhbCBidWlsZCBlbnZpcm9ubWVudHMgYW5kCi0gICAgICAgICAgICAgICAgICAgIHRoZXkgc2hhcmVkIHNvbWUgY29tbW9uIGZlYXR1cmVzLgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNldCB0aGVzZSBkZWZhdWx0IGJ1aWxkIHByb3BlcnRpZXMgaGVyZS4KLSAgICAgICAgICAgICAgICAgICAgQSBnb29kIGV4YW1wbGUgaXMgcGVyaGFwcyB0aGUgcGFja2FnaW5nIGZvcm1hdCB0byB1c2UKLSAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfQ0xBU1NFUyc+PGZpbGVuYW1lPlBBQ0tBR0VfQ0xBU1NFUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxwYXJhPk9uZSB1c2VmdWwgc2NlbmFyaW8gZm9yIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9zaXRlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGlzIHRvIGV4dGVuZCB5b3VyCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CQlBBVEgnPjxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gaW5jbHVkZSB0aGUgcGF0aCB0byBhCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL3NpdGUuY29uZjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICBUaGVuLCB3aGVuIEJpdEJha2UgbG9va3MgZm9yIE1ldGFkYXRhIHVzaW5nCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiwgaXQgZmluZHMgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL3NpdGUuY29uZjwvZmlsZW5hbWU+IGZpbGUgYW5kIGFwcGxpZXMgeW91cgotICAgICAgICAgICAgICAgICAgICBjb21tb24gY29uZmlndXJhdGlvbnMgZm91bmQgaW4gdGhlIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgIFRvIG92ZXJyaWRlIGNvbmZpZ3VyYXRpb25zIGluIGEgcGFydGljdWxhciBidWlsZCBkaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgIGFsdGVyIHRoZSBzaW1pbGFyIGNvbmZpZ3VyYXRpb25zIHdpdGhpbiB0aGF0IGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSdzIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5hdXRvLmNvbmY8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBUaGUgZmlsZSBpcyB1c3VhbGx5IGNyZWF0ZWQgYW5kIHdyaXR0ZW4gdG8gYnkKLSAgICAgICAgICAgICAgICAgICAgYW4gYXV0b2J1aWxkZXIuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBzZXR0aW5ncyBwdXQgaW50byB0aGUgZmlsZSBhcmUgdHlwaWNhbGx5IHRoZSBzYW1lIGFzCi0gICAgICAgICAgICAgICAgICAgIHlvdSB3b3VsZCBmaW5kIGluIHRoZSA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgb3IgdGhlIDxmaWxlbmFtZT5jb25mL3NpdGUuY29uZjwvZmlsZW5hbWU+IGZpbGVzLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBZb3UgY2FuIGVkaXQgYWxsIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gZnVydGhlciBkZWZpbmUKLSAgICAgICAgICAgIGFueSBwYXJ0aWN1bGFyIGJ1aWxkIGVudmlyb25tZW50LgotICAgICAgICAgICAgVGhpcyBwcm9jZXNzIGlzIHJlcHJlc2VudGVkIGJ5IHRoZSAiVXNlciBDb25maWd1cmF0aW9uIEVkaXRzIgotICAgICAgICAgICAgYm94IGluIHRoZSBmaWd1cmUuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFdoZW4geW91IGxhdW5jaCB5b3VyIGJ1aWxkIHdpdGggdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSA8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgotICAgICAgICAgICAgY29tbWFuZCwgQml0QmFrZSBzb3J0cyBvdXQgdGhlIGNvbmZpZ3VyYXRpb25zIHRvIHVsdGltYXRlbHkKLSAgICAgICAgICAgIGRlZmluZSB5b3VyIGJ1aWxkIGVudmlyb25tZW50LgotICAgICAgICAgICAgSXQgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQotICAgICAgICAgICAgcmVhZHMgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4gYSBzcGVjaWZpYyBvcmRlcjoKLSAgICAgICAgICAgIDxmaWxlbmFtZT5zaXRlLmNvbmY8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmF1dG8uY29uZjwvZmlsZW5hbWU+LAotICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4uCi0gICAgICAgICAgICBBbmQsIHRoZSBidWlsZCBzeXN0ZW0gYXBwbGllcyB0aGUgbm9ybWFsIGFzc2lnbm1lbnQgc3RhdGVtZW50Ci0gICAgICAgICAgICBydWxlcy4KLSAgICAgICAgICAgIEJlY2F1c2UgdGhlIGZpbGVzIGFyZSBwYXJzZWQgaW4gYSBzcGVjaWZpYyBvcmRlciwgdmFyaWFibGUKLSAgICAgICAgICAgIGFzc2lnbm1lbnRzIGZvciB0aGUgc2FtZSB2YXJpYWJsZSBjb3VsZCBiZSBhZmZlY3RlZC4KLSAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB0aGUgPGZpbGVuYW1lPmF1dG8uY29uZjwvZmlsZW5hbWU+IGZpbGUgYW5kCi0gICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBzZXQKLSAgICAgICAgICAgIDxyZXBsYWNlYWJsZT52YXJpYWJsZTE8L3JlcGxhY2VhYmxlPiB0byBkaWZmZXJlbnQgdmFsdWVzLCBiZWNhdXNlCi0gICAgICAgICAgICB0aGUgYnVpbGQgc3lzdGVtIHBhcnNlcyA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGFmdGVyCi0gICAgICAgICAgICA8ZmlsZW5hbWU+YXV0by5jb25mPC9maWxlbmFtZT4sCi0gICAgICAgICAgICA8cmVwbGFjZWFibGU+dmFyaWFibGUxPC9yZXBsYWNlYWJsZT4gaXMgYXNzaWduZWQgdGhlIHZhbHVlIGZyb20KLSAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0ibWV0YWRhdGEtbWFjaGluZS1jb25maWd1cmF0aW9uLWFuZC1wb2xpY3ktY29uZmlndXJhdGlvbiI+Ci0gICAgICAgIDx0aXRsZT5NZXRhZGF0YSwgTWFjaGluZSBDb25maWd1cmF0aW9uLCBhbmQgUG9saWN5IENvbmZpZ3VyYXRpb248L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIHByZXZpb3VzIHNlY3Rpb24gZGVzY3JpYmVkIHRoZSB1c2VyIGNvbmZpZ3VyYXRpb25zIHRoYXQKLSAgICAgICAgICAgIGRlZmluZSBCaXRCYWtlJ3MgZ2xvYmFsIGJlaGF2aW9yLgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHRha2VzIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGxheWVycyB0aGUgYnVpbGQgc3lzdGVtCi0gICAgICAgICAgICB1c2VzIHRvIGZ1cnRoZXIgY29udHJvbCB0aGUgYnVpbGQuCi0gICAgICAgICAgICBUaGVzZSBsYXllcnMgcHJvdmlkZSBNZXRhZGF0YSBmb3IgdGhlIHNvZnR3YXJlLCBtYWNoaW5lLCBhbmQKLSAgICAgICAgICAgIHBvbGljeS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSW4gZ2VuZXJhbCwgdGhyZWUgdHlwZXMgb2YgbGF5ZXIgaW5wdXQgZXhpc3Q6Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UG9saWN5IENvbmZpZ3VyYXRpb246PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgRGlzdHJpYnV0aW9uIExheWVycyBwcm92aWRlIHRvcC1sZXZlbCBvciBnZW5lcmFsCi0gICAgICAgICAgICAgICAgICAgIHBvbGljaWVzIGZvciB0aGUgaW1hZ2Ugb3IgU0RLIGJlaW5nIGJ1aWx0LgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhpcyBsYXllciB3b3VsZCBkaWN0YXRlIHdoZXRoZXIgQml0QmFrZQotICAgICAgICAgICAgICAgICAgICBwcm9kdWNlcyBSUE0gb3IgSVBLIHBhY2thZ2VzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TWFjaGluZSBDb25maWd1cmF0aW9uOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBsYXllcnMgcHJvdmlkZSBtYWNoaW5lCi0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zLgotICAgICAgICAgICAgICAgICAgICBUaGlzIHR5cGUgb2YgaW5mb3JtYXRpb24gaXMgc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyCi0gICAgICAgICAgICAgICAgICAgIHRhcmdldCBhcmNoaXRlY3R1cmUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5NZXRhZGF0YTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBTb2Z0d2FyZSBsYXllcnMgY29udGFpbiB1c2VyLXN1cHBsaWVkIHJlY2lwZSBmaWxlcywKLSAgICAgICAgICAgICAgICAgICAgcGF0Y2hlcywgYW5kIGFwcGVuZCBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBmaWd1cmUgc2hvd3MgYW4gZXhwYW5kZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlCi0gICAgICAgICAgICBNZXRhZGF0YSwgTWFjaGluZSBDb25maWd1cmF0aW9uLCBhbmQgUG9saWN5IENvbmZpZ3VyYXRpb24gaW5wdXQKLSAgICAgICAgICAgIChsYXllcnMpIGJveGVzIG9mIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2VuZXJhbC15b2N0by1lbnZpcm9ubWVudC1maWd1cmUnPmdlbmVyYWwgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCBmaWd1cmU8L2xpbms+OgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvbGF5ZXItaW5wdXQucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iOGluIiBkZXB0aD0iNy41aW4iIC8+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEluIGdlbmVyYWwsIGFsbCBsYXllcnMgaGF2ZSBhIHNpbWlsYXIgc3RydWN0dXJlLgotICAgICAgICAgICAgVGhleSBhbGwgY29udGFpbiBhIGxpY2Vuc2luZyBmaWxlCi0gICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+Q09QWUlORzwvZmlsZW5hbWU+KSBpZiB0aGUgbGF5ZXIgaXMgdG8gYmUKLSAgICAgICAgICAgIGRpc3RyaWJ1dGVkLCBhIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlIGFzIGdvb2QgcHJhY3RpY2UKLSAgICAgICAgICAgIGFuZCBlc3BlY2lhbGx5IGlmIHRoZSBsYXllciBpcyB0byBiZSBkaXN0cmlidXRlZCwgYQotICAgICAgICAgICAgY29uZmlndXJhdGlvbiBkaXJlY3RvcnksIGFuZCByZWNpcGUgZGlyZWN0b3JpZXMuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGhhcyBtYW55IGxheWVycyB0aGF0IGNhbiBiZSB1c2VkLgotICAgICAgICAgICAgWW91IGNhbiBzZWUgYSB3ZWItaW50ZXJmYWNlIGxpc3Rpbmcgb2YgdGhlbSBvbiB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy8iPlNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPgotICAgICAgICAgICAgcGFnZS4KLSAgICAgICAgICAgIFRoZSBsYXllcnMgYXJlIHNob3duIGF0IHRoZSBib3R0b20gY2F0ZWdvcml6ZWQgdW5kZXIKLSAgICAgICAgICAgICJZb2N0byBNZXRhZGF0YSBMYXllcnMuIgotICAgICAgICAgICAgVGhlc2UgbGF5ZXJzIGFyZSBmdW5kYW1lbnRhbGx5IGEgc3Vic2V0IG9mIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL2xheWVycy5vcGVuZW1iZWRkZWQub3JnL2xheWVyaW5kZXgvbGF5ZXJzLyI+T3BlbkVtYmVkZGVkIE1ldGFkYXRhIEluZGV4PC91bGluaz4sCi0gICAgICAgICAgICB3aGljaCBsaXN0cyBhbGwgbGF5ZXJzIHByb3ZpZGVkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgY29tbXVuaXR5LgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgTGF5ZXJzIGV4aXN0IGluIHRoZSBZb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXMgdGhhdAotICAgICAgICAgICAgICAgIGNhbm5vdCBiZSBmb3VuZCBpbiB0aGUgT3BlbkVtYmVkZGVkIE1ldGFkYXRhIEluZGV4LgotICAgICAgICAgICAgICAgIFRoZXNlIGxheWVycyBhcmUgZWl0aGVyIGRlcHJlY2F0ZWQgb3IgZXhwZXJpbWVudGFsIGluIG5hdHVyZS4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQml0QmFrZSB1c2VzIHRoZSA8ZmlsZW5hbWU+Y29uZi9iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSwKLSAgICAgICAgICAgIHdoaWNoIGlzIHBhcnQgb2YgdGhlIHVzZXIgY29uZmlndXJhdGlvbiwgdG8gZmluZCB3aGF0IGxheWVycyBpdAotICAgICAgICAgICAgc2hvdWxkIGJlIHVzaW5nIGFzIHBhcnQgb2YgdGhlIGJ1aWxkLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBsYXllcnMsIHNlZSB0aGUKLSAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcgYW5kIENyZWF0aW5nIExheWVyczwvdWxpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0iZGlzdHJvLWxheWVyIj4KLSAgICAgICAgICAgIDx0aXRsZT5EaXN0cm8gTGF5ZXI8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZGlzdHJpYnV0aW9uIGxheWVyIHByb3ZpZGVzIHBvbGljeSBjb25maWd1cmF0aW9ucyBmb3IgeW91cgotICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbi4KLSAgICAgICAgICAgICAgICBCZXN0IHByYWN0aWNlcyBkaWN0YXRlIHRoYXQgeW91IGlzb2xhdGUgdGhlc2UgdHlwZXMgb2YKLSAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucyBpbnRvIHRoZWlyIG93biBsYXllci4KLSAgICAgICAgICAgICAgICBTZXR0aW5ncyB5b3UgcHJvdmlkZSBpbgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2Rpc3Ryby88cmVwbGFjZWFibGU+ZGlzdHJvPC9yZXBsYWNlYWJsZT4uY29uZjwvZmlsZW5hbWU+IG92ZXJyaWRlCi0gICAgICAgICAgICAgICAgc2ltaWxhcgotICAgICAgICAgICAgICAgIHNldHRpbmdzIHRoYXQgQml0QmFrZSBmaW5kcyBpbiB5b3VyCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlIEJ1aWxkCi0gICAgICAgICAgICAgICAgRGlyZWN0b3J5LgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgcHJvdmlkZXMgc29tZSBleHBsYW5hdGlvbiBhbmQgcmVmZXJlbmNlcwotICAgICAgICAgICAgICAgIGZvciB3aGF0IHlvdSB0eXBpY2FsbHkgZmluZCBpbiB0aGUgZGlzdHJpYnV0aW9uIGxheWVyOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Y2xhc3Nlczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgZmlsZXMgKDxmaWxlbmFtZT4uYmJjbGFzczwvZmlsZW5hbWU+KSBob2xkCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tb24gZnVuY3Rpb25hbGl0eSB0aGF0IGNhbiBiZSBzaGFyZWQgYW1vbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZXMgaW4gdGhlIGRpc3RyaWJ1dGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91ciByZWNpcGVzIGluaGVyaXQgYSBjbGFzcywgdGhleSB0YWtlIG9uIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MgYW5kIGZ1bmN0aW9ucyBmb3IgdGhhdCBjbGFzcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gcmVhZCBtb3JlIGFib3V0IGNsYXNzIGZpbGVzIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzJz5DbGFzc2VzPC9saW5rPiIgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPmNvbmY6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgYXJlYSBob2xkcyBjb25maWd1cmF0aW9uIGZpbGVzIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyICg8ZmlsZW5hbWU+Y29uZi9sYXllci5jb25mPC9maWxlbmFtZT4pLAotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRpc3RyaWJ1dGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5jb25mL2Rpc3Ryby88cmVwbGFjZWFibGU+ZGlzdHJvPC9yZXBsYWNlYWJsZT4uY29uZjwvZmlsZW5hbWU+KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhbnkgZGlzdHJpYnV0aW9uLXdpZGUgaW5jbHVkZSBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPnJlY2lwZXMtKjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgUmVjaXBlcyBhbmQgYXBwZW5kIGZpbGVzIHRoYXQgYWZmZWN0IGNvbW1vbgotICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eSBhY3Jvc3MgdGhlIGRpc3RyaWJ1dGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgYXJlYSBjb3VsZCBpbmNsdWRlIHJlY2lwZXMgYW5kIGFwcGVuZCBmaWxlcwotICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWRkIGRpc3RyaWJ1dGlvbi1zcGVjaWZpYyBjb25maWd1cmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gc2NyaXB0cywgY3VzdG9tIGltYWdlIHJlY2lwZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgc28gZm9ydGguPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0iYnNwLWxheWVyIj4KLSAgICAgICAgICAgIDx0aXRsZT5CU1AgTGF5ZXI8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgQlNQIExheWVyIHByb3ZpZGVzIG1hY2hpbmUgY29uZmlndXJhdGlvbnMuCi0gICAgICAgICAgICAgICAgRXZlcnl0aGluZyBpbiB0aGlzIGxheWVyIGlzIHNwZWNpZmljIHRvIHRoZSBtYWNoaW5lIGZvciB3aGljaAotICAgICAgICAgICAgICAgIHlvdSBhcmUgYnVpbGRpbmcgdGhlIGltYWdlIG9yIHRoZSBTREsuCi0gICAgICAgICAgICAgICAgQSBjb21tb24gc3RydWN0dXJlIG9yIGZvcm0gaXMgZGVmaW5lZCBmb3IgQlNQIGxheWVycy4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIGxlYXJuIG1vcmUgYWJvdXQgdGhpcyBzdHJ1Y3R1cmUgaW4gdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsnPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4uCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIEluIG9yZGVyIGZvciBhIEJTUCBsYXllciB0byBiZSBjb25zaWRlcmVkIGNvbXBsaWFudCB3aXRoIHRoZQotICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LCBpdCBtdXN0IG1lZXQgc29tZSBzdHJ1Y3R1cmFsIHJlcXVpcmVtZW50cy4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBCU1AgTGF5ZXIncyBjb25maWd1cmF0aW9uIGRpcmVjdG9yeSBjb250YWlucwotICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIHRoZSBtYWNoaW5lCi0gICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5jb25mL21hY2hpbmUvPHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPi5jb25mPC9maWxlbmFtZT4pIGFuZCwKLSAgICAgICAgICAgICAgICBvZiBjb3Vyc2UsIHRoZSBsYXllciAoPGZpbGVuYW1lPmNvbmYvbGF5ZXIuY29uZjwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGUgbGF5ZXIgaXMgZGVkaWNhdGVkIHRvIHNwZWNpZmljIHJlY2lwZXMKLSAgICAgICAgICAgICAgICBieSBmdW5jdGlvbjogPGZpbGVuYW1lPnJlY2lwZXMtYnNwPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXMtY29yZTwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLWdyYXBoaWNzPC9maWxlbmFtZT4sIGFuZAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLWtlcm5lbDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIE1ldGFkYXRhIGNhbiBleGlzdCBmb3IgbXVsdGlwbGUgZm9ybWZhY3RvcnMsIGdyYXBoaWNzCi0gICAgICAgICAgICAgICAgc3VwcG9ydCBzeXN0ZW1zLCBhbmQgc28gZm9ydGguCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFdoaWxlIHRoZSBmaWd1cmUgc2hvd3Mgc2V2ZXJhbCA8ZmlsZW5hbWU+cmVjaXBlcy0qPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMsIG5vdCBhbGwgdGhlc2UgZGlyZWN0b3JpZXMgYXBwZWFyIGluIGFsbAotICAgICAgICAgICAgICAgICAgICBCU1AgbGF5ZXJzLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSJzb2Z0d2FyZS1sYXllciI+Ci0gICAgICAgICAgICA8dGl0bGU+U29mdHdhcmUgTGF5ZXI8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgc29mdHdhcmUgbGF5ZXIgcHJvdmlkZXMgdGhlIE1ldGFkYXRhIGZvciBhZGRpdGlvbmFsCi0gICAgICAgICAgICAgICAgc29mdHdhcmUgcGFja2FnZXMgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkLgotICAgICAgICAgICAgICAgIFRoaXMgbGF5ZXIgZG9lcyBub3QgaW5jbHVkZSBNZXRhZGF0YSB0aGF0IGlzIHNwZWNpZmljIHRvIHRoZQotICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbiBvciB0aGUgbWFjaGluZSwgd2hpY2ggYXJlIGZvdW5kIGluIHRoZWlyCi0gICAgICAgICAgICAgICAgcmVzcGVjdGl2ZSBsYXllcnMuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoaXMgbGF5ZXIgY29udGFpbnMgYW55IG5ldyByZWNpcGVzIHRoYXQgeW91ciBwcm9qZWN0IG5lZWRzCi0gICAgICAgICAgICAgICAgaW4gdGhlIGZvcm0gb2YgcmVjaXBlIGZpbGVzLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9InNvdXJjZXMtZGV2LWVudmlyb25tZW50Ij4KLSAgICAgICAgPHRpdGxlPlNvdXJjZXM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSW4gb3JkZXIgZm9yIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGNyZWF0ZSBhbiBpbWFnZSBvcgotICAgICAgICAgICAgYW55IHRhcmdldCwgaXQgbXVzdCBiZSBhYmxlIHRvIGFjY2VzcyBzb3VyY2UgZmlsZXMuCi0gICAgICAgICAgICBUaGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dlbmVyYWwteW9jdG8tZW52aXJvbm1lbnQtZmlndXJlJz5nZW5lcmFsIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgZmlndXJlPC9saW5rPgotICAgICAgICAgICAgcmVwcmVzZW50cyBzb3VyY2UgZmlsZXMgdXNpbmcgdGhlICJVcHN0cmVhbSBQcm9qZWN0IFJlbGVhc2VzIiwKLSAgICAgICAgICAgICJMb2NhbCBQcm9qZWN0cyIsIGFuZCAiU0NNcyAob3B0aW9uYWwpIiBib3hlcy4KLSAgICAgICAgICAgIFRoZSBmaWd1cmUgcmVwcmVzZW50cyBtaXJyb3JzLCB3aGljaCBhbHNvIHBsYXkgYSByb2xlIGluIGxvY2F0aW5nCi0gICAgICAgICAgICBzb3VyY2UgZmlsZXMsIHdpdGggdGhlICJTb3VyY2UgTWlycm9yKHMpIiBib3guCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBtZXRob2QgYnkgd2hpY2ggc291cmNlIGZpbGVzIGFyZSB1bHRpbWF0ZWx5IG9yZ2FuaXplZCBpcwotICAgICAgICAgICAgYSBmdW5jdGlvbiBvZiB0aGUgcHJvamVjdC4KLSAgICAgICAgICAgIEZvciBleGFtcGxlLCBmb3IgcmVsZWFzZWQgc29mdHdhcmUsIHByb2plY3RzIHRlbmQgdG8gdXNlIHRhcmJhbGxzCi0gICAgICAgICAgICBvciBvdGhlciBhcmNoaXZlZCBmaWxlcyB0aGF0IGNhbiBjYXB0dXJlIHRoZSBzdGF0ZSBvZiBhIHJlbGVhc2UKLSAgICAgICAgICAgIGd1YXJhbnRlZWluZyB0aGF0IGl0IGlzIHN0YXRpY2FsbHkgcmVwcmVzZW50ZWQuCi0gICAgICAgICAgICBPbiB0aGUgb3RoZXIgaGFuZCwgZm9yIGEgcHJvamVjdCB0aGF0IGlzIG1vcmUgZHluYW1pYyBvcgotICAgICAgICAgICAgZXhwZXJpbWVudGFsIGluIG5hdHVyZSwgYSBwcm9qZWN0IG1pZ2h0IGtlZXAgc291cmNlIGZpbGVzIGluIGEKLSAgICAgICAgICAgIHJlcG9zaXRvcnkgY29udHJvbGxlZCBieSBhIFNvdXJjZSBDb250cm9sIE1hbmFnZXIgKFNDTSkgc3VjaCBhcwotICAgICAgICAgICAgR2l0LgotICAgICAgICAgICAgUHVsbGluZyBzb3VyY2UgZnJvbSBhIHJlcG9zaXRvcnkgYWxsb3dzIHlvdSB0byBjb250cm9sCi0gICAgICAgICAgICB0aGUgcG9pbnQgaW4gdGhlIHJlcG9zaXRvcnkgKHRoZSByZXZpc2lvbikgZnJvbSB3aGljaCB5b3Ugd2FudCB0bwotICAgICAgICAgICAgYnVpbGQgc29mdHdhcmUuCi0gICAgICAgICAgICBGaW5hbGx5LCBhIGNvbWJpbmF0aW9uIG9mIHRoZSB0d28gbWlnaHQgZXhpc3QsIHdoaWNoIHdvdWxkIGdpdmUgdGhlCi0gICAgICAgICAgICBjb25zdW1lciBhIGNob2ljZSB3aGVuIGRlY2lkaW5nIHdoZXJlIHRvIGdldCBzb3VyY2UgZmlsZXMuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEJpdEJha2UgdXNlcyB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgdmFyaWFibGUgdG8gcG9pbnQgdG8gc291cmNlIGZpbGVzIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgbG9jYXRpb24uCi0gICAgICAgICAgICBFYWNoIHJlY2lwZSBtdXN0IGhhdmUgYSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHZhcmlhYmxlCi0gICAgICAgICAgICB0aGF0IHBvaW50cyB0byB0aGUgc291cmNlLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBBbm90aGVyIGFyZWEgdGhhdCBwbGF5cyBhIHNpZ25pZmljYW50IHJvbGUgaW4gd2hlcmUgc291cmNlIGZpbGVzCi0gICAgICAgICAgICBjb21lIGZyb20gaXMgcG9pbnRlZCB0byBieSB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ETF9ESVInPjxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIHZhcmlhYmxlLgotICAgICAgICAgICAgVGhpcyBhcmVhIGlzIGEgY2FjaGUgdGhhdCBjYW4gaG9sZCBwcmV2aW91c2x5IGRvd25sb2FkZWQgc291cmNlLgotICAgICAgICAgICAgWW91IGNhbiBhbHNvIGluc3RydWN0IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGNyZWF0ZQotICAgICAgICAgICAgdGFyYmFsbHMgZnJvbSBHaXQgcmVwb3NpdG9yaWVzLCB3aGljaCBpcyBub3QgdGhlIGRlZmF1bHQgYmVoYXZpb3IsCi0gICAgICAgICAgICBhbmQgc3RvcmUgdGhlbSBpbiB0aGUgPGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+IGJ5IHVzaW5nIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMUyc+PGZpbGVuYW1lPkJCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgdmFyaWFibGUuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEp1ZGljaW91cyB1c2Ugb2YgYSA8ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT4gZGlyZWN0b3J5IGNhbgotICAgICAgICAgICAgc2F2ZSB0aGUgYnVpbGQgc3lzdGVtIGEgdHJpcCBhY3Jvc3MgdGhlIEludGVybmV0IHdoZW4gbG9va2luZwotICAgICAgICAgICAgZm9yIGZpbGVzLgotICAgICAgICAgICAgQSBnb29kIG1ldGhvZCBmb3IgdXNpbmcgYSBkb3dubG9hZCBkaXJlY3RvcnkgaXMgdG8gaGF2ZQotICAgICAgICAgICAgPGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+IHBvaW50IHRvIGFuIGFyZWEgb3V0c2lkZSBvZiB5b3VyCi0gICAgICAgICAgICBCdWlsZCBEaXJlY3RvcnkuCi0gICAgICAgICAgICBEb2luZyBzbyBhbGxvd3MgeW91IHRvIHNhZmVseSBkZWxldGUgdGhlIEJ1aWxkIERpcmVjdG9yeQotICAgICAgICAgICAgaWYgbmVlZGVkIHdpdGhvdXQgZmVhciBvZiByZW1vdmluZyBhbnkgZG93bmxvYWRlZCBzb3VyY2UgZmlsZS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGlzIHNlY3Rpb24gcHJvdmlkZXMgYSBkZWVwZXIgbG9vayBpbnRvIHRoZQotICAgICAgICAgICAgc291cmNlIGZpbGVzIGFuZCB0aGUgbWlycm9ycy4KLSAgICAgICAgICAgIEhlcmUgaXMgYSBtb3JlIGRldGFpbGVkIGxvb2sgYXQgdGhlIHNvdXJjZSBmaWxlIGFyZWEgb2YgdGhlCi0gICAgICAgICAgICBiYXNlIGZpZ3VyZToKLSAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9zb3VyY2UtaW5wdXQucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iN2luIiBkZXB0aD0iNy41aW4iIC8+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0ndXBzdHJlYW0tcHJvamVjdC1yZWxlYXNlcyc+Ci0gICAgICAgICAgICA8dGl0bGU+VXBzdHJlYW0gUHJvamVjdCBSZWxlYXNlczwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFVwc3RyZWFtIHByb2plY3QgcmVsZWFzZXMgZXhpc3QgYW55d2hlcmUgaW4gdGhlIGZvcm0gb2YgYW4KLSAgICAgICAgICAgICAgICBhcmNoaXZlZCBmaWxlIChlLmcuIHRhcmJhbGwgb3IgemlwIGZpbGUpLgotICAgICAgICAgICAgICAgIFRoZXNlIGZpbGVzIGNvcnJlc3BvbmQgdG8gaW5kaXZpZHVhbCByZWNpcGVzLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZmlndXJlIHVzZXMgc3BlY2lmaWMgcmVsZWFzZXMgZWFjaCBmb3IKLSAgICAgICAgICAgICAgICBCdXN5Qm94LCBRdCwgYW5kIERidXMuCi0gICAgICAgICAgICAgICAgQW4gYXJjaGl2ZSBmaWxlIGNhbiBiZSBmb3IgYW55IHJlbGVhc2VkIHByb2R1Y3QgdGhhdCBjYW4gYmUKLSAgICAgICAgICAgICAgICBidWlsdCB1c2luZyBhIHJlY2lwZS4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdsb2NhbC1wcm9qZWN0cyc+Ci0gICAgICAgICAgICA8dGl0bGU+TG9jYWwgUHJvamVjdHM8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBMb2NhbCBwcm9qZWN0cyBhcmUgY3VzdG9tIGJpdHMgb2Ygc29mdHdhcmUgdGhlIHVzZXIgcHJvdmlkZXMuCi0gICAgICAgICAgICAgICAgVGhlc2UgYml0cyByZXNpZGUgc29tZXdoZXJlIGxvY2FsIHRvIGEgcHJvamVjdCAtIHBlcmhhcHMKLSAgICAgICAgICAgICAgICBhIGRpcmVjdG9yeSBpbnRvIHdoaWNoIHRoZSB1c2VyIGNoZWNrcyBpbiBpdGVtcyAoZS5nLgotICAgICAgICAgICAgICAgIGEgbG9jYWwgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYSBkZXZlbG9wbWVudCBzb3VyY2UgdHJlZQotICAgICAgICAgICAgICAgIHVzZWQgYnkgdGhlIGdyb3VwKS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGNhbm9uaWNhbCBtZXRob2QgdGhyb3VnaCB3aGljaCB0byBpbmNsdWRlIGEgbG9jYWwgcHJvamVjdAotICAgICAgICAgICAgICAgIGlzIHRvIHVzZSB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1leHRlcm5hbHNyYyc+PGZpbGVuYW1lPmV4dGVybmFsc3JjPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgY2xhc3MgdG8gaW5jbHVkZSB0aGF0IGxvY2FsIHByb2plY3QuCi0gICAgICAgICAgICAgICAgWW91IHVzZSBlaXRoZXIgdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gb3IgYQotICAgICAgICAgICAgICAgIHJlY2lwZSdzIGFwcGVuZCBmaWxlIHRvIG92ZXJyaWRlIG9yIHNldCB0aGUKLSAgICAgICAgICAgICAgICByZWNpcGUgdG8gcG9pbnQgdG8gdGhlIGxvY2FsIGRpcmVjdG9yeSBvbiB5b3VyIGRpc2sgdG8gcHVsbAotICAgICAgICAgICAgICAgIGluIHRoZSB3aG9sZSBzb3VyY2UgdHJlZS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmV4dGVybmFsc3JjPC9maWxlbmFtZT4gY2xhc3MsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZXh0ZXJuYWxzcmMnPjxmaWxlbmFtZT5leHRlcm5hbHNyYy5iYmNsYXNzPC9maWxlbmFtZT48L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nc2Ntcyc+Ci0gICAgICAgICAgICA8dGl0bGU+U291cmNlIENvbnRyb2wgTWFuYWdlcnMgKE9wdGlvbmFsKTwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEFub3RoZXIgcGxhY2UgdGhlIGJ1aWxkIHN5c3RlbSBjYW4gZ2V0IHNvdXJjZSBmaWxlcyBmcm9tIGlzCi0gICAgICAgICAgICAgICAgdGhyb3VnaCBhbiBTQ00gc3VjaCBhcyBHaXQgb3IgU3VidmVyc2lvbi4KLSAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIGEgcmVwb3NpdG9yeSBpcyBjbG9uZWQgb3IgY2hlY2tlZCBvdXQuCi0gICAgICAgICAgICAgICAgVGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWZldGNoJz48ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB0YXNrIGluc2lkZSBCaXRCYWtlIHVzZXMKLSAgICAgICAgICAgICAgICB0aGUgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUgYW5kIHRoZSBhcmd1bWVudCdzIHByZWZpeCB0byBkZXRlcm1pbmUgdGhlIGNvcnJlY3QKLSAgICAgICAgICAgICAgICBmZXRjaGVyIG1vZHVsZS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBoYXZlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCi0gICAgICAgICAgICAgICAgZ2VuZXJhdGUgdGFyYmFsbHMgZm9yIEdpdCByZXBvc2l0b3JpZXMgYW5kIHBsYWNlIHRoZW0gaW4gdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURMX0RJUic+PGZpbGVuYW1lPkRMX0RJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIGRpcmVjdG9yeSwgc2VlIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMnPjxmaWxlbmFtZT5CQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgICAgIDwvbm90ZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgV2hlbiBmZXRjaGluZyBhIHJlcG9zaXRvcnksIEJpdEJha2UgdXNlcyB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1JDUkVWJz48ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gZGV0ZXJtaW5lIHRoZSBzcGVjaWZpYyByZXZpc2lvbiBmcm9tIHdoaWNoIHRvCi0gICAgICAgICAgICAgICAgYnVpbGQuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nc291cmNlLW1pcnJvcnMnPgotICAgICAgICAgICAgPHRpdGxlPlNvdXJjZSBNaXJyb3Iocyk8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUd28ga2luZHMgb2YgbWlycm9ycyBleGlzdDogcHJlLW1pcnJvcnMgYW5kIHJlZ3VsYXIgbWlycm9ycy4KLSAgICAgICAgICAgICAgICBUaGUgPGxpbmsgbGlua2VuZD0ndmFyLVBSRU1JUlJPUlMnPjxmaWxlbmFtZT5QUkVNSVJST1JTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1JUlJPUlMnPjxmaWxlbmFtZT5NSVJST1JTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGVzIHBvaW50IHRvIHRoZXNlLCByZXNwZWN0aXZlbHkuCi0gICAgICAgICAgICAgICAgQml0QmFrZSBjaGVja3MgcHJlLW1pcnJvcnMgYmVmb3JlIGxvb2tpbmcgdXBzdHJlYW0gZm9yIGFueQotICAgICAgICAgICAgICAgIHNvdXJjZSBmaWxlcy4KLSAgICAgICAgICAgICAgICBQcmUtbWlycm9ycyBhcmUgYXBwcm9wcmlhdGUgd2hlbiB5b3UgaGF2ZSBhIHNoYXJlZCBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICB0aGF0IGlzIG5vdCBhIGRpcmVjdG9yeSBkZWZpbmVkIGJ5IHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ETF9ESVInPjxmaWxlbmFtZT5ETF9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICBBIFByZS1taXJyb3IgdHlwaWNhbGx5IHBvaW50cyB0byBhIHNoYXJlZCBkaXJlY3RvcnkgdGhhdCBpcwotICAgICAgICAgICAgICAgIGxvY2FsIHRvIHlvdXIgb3JnYW5pemF0aW9uLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBSZWd1bGFyIG1pcnJvcnMgY2FuIGJlIGFueSBzaXRlIGFjcm9zcyB0aGUgSW50ZXJuZXQgdGhhdCBpcwotICAgICAgICAgICAgICAgIHVzZWQgYXMgYW4gYWx0ZXJuYXRpdmUgbG9jYXRpb24gZm9yIHNvdXJjZSBjb2RlIHNob3VsZCB0aGUKLSAgICAgICAgICAgICAgICBwcmltYXJ5IHNpdGUgbm90IGJlIGZ1bmN0aW9uaW5nIGZvciBzb21lIHJlYXNvbiBvciBhbm90aGVyLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9InBhY2thZ2UtZmVlZHMtZGV2LWVudmlyb25tZW50Ij4KLSAgICAgICAgPHRpdGxlPlBhY2thZ2UgRmVlZHM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgV2hlbiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBnZW5lcmF0ZXMgYW4gaW1hZ2Ugb3IgYW4gU0RLLAotICAgICAgICAgICAgaXQgZ2V0cyB0aGUgcGFja2FnZXMgZnJvbSBhIHBhY2thZ2UgZmVlZCBhcmVhIGxvY2F0ZWQgaW4gdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCi0gICAgICAgICAgICBUaGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dlbmVyYWwteW9jdG8tZW52aXJvbm1lbnQtZmlndXJlJz5nZW5lcmFsIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgZmlndXJlPC9saW5rPgotICAgICAgICAgICAgc2hvd3MgdGhpcyBwYWNrYWdlIGZlZWRzIGFyZWEgaW4gdGhlIHVwcGVyLXJpZ2h0IGNvcm5lci4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGxvb2tzIGEgbGl0dGxlIGNsb3NlciBpbnRvIHRoZSBwYWNrYWdlIGZlZWRzIGFyZWEgdXNlZAotICAgICAgICAgICAgYnkgdGhlIGJ1aWxkIHN5c3RlbS4KLSAgICAgICAgICAgIEhlcmUgaXMgYSBtb3JlIGRldGFpbGVkIGxvb2sgYXQgdGhlIGFyZWE6Ci0gICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvcGFja2FnZS1mZWVkcy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI3aW4iIGRlcHRoPSI2aW4iIC8+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFBhY2thZ2UgZmVlZHMgYXJlIGFuIGludGVybWVkaWFyeSBzdGVwIGluIHRoZSBidWlsZCBwcm9jZXNzLgotICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gcHJvdmlkZXMgY2xhc3NlcyB0byBnZW5lcmF0ZQotICAgICAgICAgICAgZGlmZmVyZW50IHBhY2thZ2UgdHlwZXMsIGFuZCB5b3Ugc3BlY2lmeSB3aGljaCBjbGFzc2VzIHRvIGVuYWJsZQotICAgICAgICAgICAgdGhyb3VnaCB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5QQUNLQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIHZhcmlhYmxlLgotICAgICAgICAgICAgQmVmb3JlIHBsYWNpbmcgdGhlIHBhY2thZ2VzIGludG8gcGFja2FnZSBmZWVkcywKLSAgICAgICAgICAgIHRoZSBidWlsZCBwcm9jZXNzIHZhbGlkYXRlcyB0aGVtIHdpdGggZ2VuZXJhdGVkIG91dHB1dCBxdWFsaXR5Ci0gICAgICAgICAgICBhc3N1cmFuY2UgY2hlY2tzIHRocm91Z2ggdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1pbnNhbmUnPjxmaWxlbmFtZT5pbnNhbmU8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIGNsYXNzLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgcGFja2FnZSBmZWVkIGFyZWEgcmVzaWRlcyBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5LgotICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSB0aGUgYnVpbGQgc3lzdGVtIHVzZXMgdG8gdGVtcG9yYXJpbHkgc3RvcmUgcGFja2FnZXMKLSAgICAgICAgICAgIGlzIGRldGVybWluZWQgYnkgYSBjb21iaW5hdGlvbiBvZiB2YXJpYWJsZXMgYW5kIHRoZSBwYXJ0aWN1bGFyCi0gICAgICAgICAgICBwYWNrYWdlIG1hbmFnZXIgaW4gdXNlLgotICAgICAgICAgICAgU2VlIHRoZSAiUGFja2FnZSBGZWVkcyIgYm94IGluIHRoZSBpbGx1c3RyYXRpb24gYW5kIG5vdGUgdGhlCi0gICAgICAgICAgICBpbmZvcm1hdGlvbiB0byB0aGUgcmlnaHQgb2YgdGhhdCBhcmVhLgotICAgICAgICAgICAgSW4gcGFydGljdWxhciwgdGhlIGZvbGxvd2luZyBkZWZpbmVzIHdoZXJlIHBhY2thZ2UgZmlsZXMgYXJlCi0gICAgICAgICAgICBrZXB0OgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVInPjxmaWxlbmFtZT5ERVBMT1lfRElSPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBEZWZpbmVkIGFzIDxmaWxlbmFtZT50bXAvZGVwbG95PC9maWxlbmFtZT4gaW4gdGhlIEJ1aWxkCi0gICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5ERVBMT1lfRElSXyo8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSBwYWNrYWdlIG1hbmFnZXIgdXNlZCwgdGhlIHBhY2thZ2UgdHlwZQotICAgICAgICAgICAgICAgICAgICBzdWItZm9sZGVyLgotICAgICAgICAgICAgICAgICAgICBHaXZlbiBSUE0sIElQSywgb3IgREVCIHBhY2thZ2luZyBhbmQgdGFyYmFsbCBjcmVhdGlvbiwgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSX1JQTSc+PGZpbGVuYW1lPkRFUExPWV9ESVJfUlBNPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQTE9ZX0RJUl9JUEsnPjxmaWxlbmFtZT5ERVBMT1lfRElSX0lQSzwvZmlsZW5hbWU+PC9saW5rPiwKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVJfREVCJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9ERUI8L2ZpbGVuYW1lPjwvbGluaz4sCi0gICAgICAgICAgICAgICAgICAgIG9yCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSX1RBUic+PGZpbGVuYW1lPkRFUExPWV9ESVJfVEFSPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgYXJlIHVzZWQsIHJlc3BlY3RpdmVseS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0FSQ0gnPjxmaWxlbmFtZT5QQUNLQUdFX0FSQ0g8L2ZpbGVuYW1lPjwvbGluaz46Ci0gICAgICAgICAgICAgICAgICAgIERlZmluZXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHN1Yi1mb2xkZXJzLgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgcGFja2FnZXMgY291bGQgZXhpc3QgZm9yIHRoZSBpNTg2IG9yIHFlbXV4ODYKLSAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlcy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQml0QmFrZSB1c2VzIHRoZSA8ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV8qPC9maWxlbmFtZT4gdGFza3MgdG8KLSAgICAgICAgICAgIGdlbmVyYXRlIHBhY2thZ2VzIGFuZCBwbGFjZSB0aGVtIGludG8gdGhlIHBhY2thZ2UgaG9sZGluZyBhcmVhIChlLmcuCi0gICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV9pcGs8L2ZpbGVuYW1lPiBmb3IgSVBLIHBhY2thZ2VzKS4KLSAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZV93cml0ZV9kZWInPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlX2RlYjwvZmlsZW5hbWU+PC9saW5rPiIsCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2Vfd3JpdGVfaXBrJz48ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV9pcGs8L2ZpbGVuYW1lPjwvbGluaz4iLAotICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX3JwbSc+PGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfcnBtPC9maWxlbmFtZT48L2xpbms+IiwKLSAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX3Rhcic+PGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfdGFyPC9maWxlbmFtZT48L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbnMgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBjb25zaWRlciBhIHNjZW5hcmlvIHdoZXJlIGFuIElQSyBwYWNrYWdpbmcgbWFuYWdlcgotICAgICAgICAgICAgaXMgYmVpbmcgdXNlZCBhbmQgcGFja2FnZSBhcmNoaXRlY3R1cmUgc3VwcG9ydCBmb3IgYm90aCBpNTg2Ci0gICAgICAgICAgICBhbmQgcWVtdXg4NiBleGlzdC4KLSAgICAgICAgICAgIFBhY2thZ2VzIGZvciB0aGUgaTU4NiBhcmNoaXRlY3R1cmUgYXJlIHBsYWNlZCBpbgotICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkL3RtcC9kZXBsb3kvaXBrL2k1ODY8L2ZpbGVuYW1lPiwgd2hpbGUgcGFja2FnZXMgZm9yCi0gICAgICAgICAgICB0aGUgcWVtdXg4NiBhcmNoaXRlY3R1cmUgYXJlIHBsYWNlZCBpbgotICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkL3RtcC9kZXBsb3kvaXBrL3FlbXV4ODY8L2ZpbGVuYW1lPi4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdiaXRiYWtlLWRldi1lbnZpcm9ubWVudCc+Ci0gICAgICAgIDx0aXRsZT5CaXRCYWtlPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JpdGJha2UtdGVybSc+Qml0QmFrZTwvbGluaz4KLSAgICAgICAgICAgIHRvIHByb2R1Y2UgaW1hZ2VzLgotICAgICAgICAgICAgWW91IGNhbiBzZWUgZnJvbSB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2dlbmVyYWwteW9jdG8tZW52aXJvbm1lbnQtZmlndXJlJz5nZW5lcmFsIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgZmlndXJlPC9saW5rPiwKLSAgICAgICAgICAgIHRoZSBCaXRCYWtlIGFyZWEgY29uc2lzdHMgb2Ygc2V2ZXJhbCBmdW5jdGlvbmFsIGFyZWFzLgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHRha2VzIGEgY2xvc2VyIGxvb2sgYXQgZWFjaCBvZiB0aG9zZSBhcmVhcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgU2VwYXJhdGUgZG9jdW1lbnRhdGlvbiBleGlzdHMgZm9yIHRoZSBCaXRCYWtlIHRvb2wuCi0gICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2JpdGJha2UtdXNlci1tYW51YWwnPkJpdEJha2UgVXNlciBNYW51YWw8L3VsaW5rPgotICAgICAgICAgICAgZm9yIHJlZmVyZW5jZSBtYXRlcmlhbCBvbiBCaXRCYWtlLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J3NvdXJjZS1mZXRjaGluZy1kZXYtZW52aXJvbm1lbnQnPgotICAgICAgICAgICAgPHRpdGxlPlNvdXJjZSBGZXRjaGluZzwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBmaXJzdCBzdGFnZXMgb2YgYnVpbGRpbmcgYSByZWNpcGUgYXJlIHRvIGZldGNoIGFuZCB1bnBhY2sKLSAgICAgICAgICAgICAgICB0aGUgc291cmNlIGNvZGU6Ci0gICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3NvdXJjZS1mZXRjaGluZy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI2LjVpbiIgZGVwdGg9IjVpbiIgLz4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWZldGNoJz48ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtdW5wYWNrJz48ZmlsZW5hbWU+ZG9fdW5wYWNrPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGFza3MgZmV0Y2ggdGhlIHNvdXJjZSBmaWxlcyBhbmQgdW5wYWNrIHRoZW0gaW50byB0aGUgd29yawotICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV2ZXJ5IGxvY2FsIGZpbGUgKGUuZy4gPGZpbGVuYW1lPmZpbGU6Ly88L2ZpbGVuYW1lPikKLSAgICAgICAgICAgICAgICAgICAgdGhhdCBpcyBwYXJ0IG9mIGEgcmVjaXBlJ3MKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdGFrZXMgYSBjaGVja3N1bQotICAgICAgICAgICAgICAgICAgICBvZiB0aGUgZmlsZSBmb3IgdGhlIHJlY2lwZSBhbmQgaW5zZXJ0cyB0aGUgY2hlY2tzdW0gaW50bwotICAgICAgICAgICAgICAgICAgICB0aGUgc2lnbmF0dXJlIGZvciB0aGUgPGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIElmIGFueSBsb2NhbCBmaWxlIGhhcyBiZWVuIG1vZGlmaWVkLCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT4gdGFzayBhbmQgYWxsIHRhc2tzIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgZGVwZW5kIG9uIGl0IGFyZSByZS1leGVjdXRlZC4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgZXZlcnl0aGluZyBpcyBhY2NvbXBsaXNoZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LAotICAgICAgICAgICAgICAgIHdoaWNoIGhhcyBhIGRlZmluZWQgc3RydWN0dXJlLgotICAgICAgICAgICAgICAgIEZvciBhZGRpdGlvbmFsIGdlbmVyYWwgaW5mb3JtYXRpb24gb24gdGhlIEJ1aWxkIERpcmVjdG9yeSwKLSAgICAgICAgICAgICAgICBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLWJ1aWxkJz48ZmlsZW5hbWU+YnVpbGQvPC9maWxlbmFtZT48L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFVucGFja2VkIHNvdXJjZSBmaWxlcyBhcmUgcG9pbnRlZCB0byBieSB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUyc+PGZpbGVuYW1lPlM8L2ZpbGVuYW1lPjwvbGluaz4gdmFyaWFibGUuCi0gICAgICAgICAgICAgICAgRWFjaCByZWNpcGUgaGFzIGFuIGFyZWEgaW4gdGhlIEJ1aWxkIERpcmVjdG9yeSB3aGVyZSB0aGUKLSAgICAgICAgICAgICAgICB1bnBhY2tlZCBzb3VyY2UgY29kZSByZXNpZGVzLgotICAgICAgICAgICAgICAgIFRoZSBuYW1lIG9mIHRoYXQgZGlyZWN0b3J5IGZvciBhbnkgZ2l2ZW4gcmVjaXBlIGlzIGRlZmluZWQgZnJvbQotICAgICAgICAgICAgICAgIHNldmVyYWwgZGlmZmVyZW50IHZhcmlhYmxlcy4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIHNlZSB0aGUgdmFyaWFibGVzIHRoYXQgZGVmaW5lIHRoZXNlIGRpcmVjdG9yaWVzCi0gICAgICAgICAgICAgICAgYnkgbG9va2luZyBhdCB0aGUgZmlndXJlOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L2xpbms+IC0KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBiYXNlIGRpcmVjdG9yeSB3aGVyZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybXMgYWxsIGl0cyB3b3JrIGR1cmluZyB0aGUgYnVpbGQuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0FSQ0gnPjxmaWxlbmFtZT5QQUNLQUdFX0FSQ0g8L2ZpbGVuYW1lPjwvbGluaz4gLQotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgYnVpbHQgcGFja2FnZSBvciBwYWNrYWdlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVRBUkdFVF9PUyc+PGZpbGVuYW1lPlRBUkdFVF9PUzwvZmlsZW5hbWU+PC9saW5rPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgb3BlcmF0aW5nIHN5c3RlbSBvZiB0aGUgdGFyZ2V0IGRldmljZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBOJz48ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPjwvbGluaz4gLQotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGJ1aWx0IHBhY2thZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L2xpbms+IC0KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB2ZXJzaW9uIG9mIHRoZSByZWNpcGUgdXNlZCB0byBidWlsZCB0aGUgcGFja2FnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBSJz48ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPjwvbGluaz4gLQotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJldmlzaW9uIG9mIHRoZSByZWNpcGUgdXNlZCB0byBidWlsZCB0aGUgcGFja2FnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L2xpbms+IC0KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBsb2NhdGlvbiB3aXRoaW4gPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IHdoZXJlCi0gICAgICAgICAgICAgICAgICAgICAgICBhIHNwZWNpZmljIHBhY2thZ2UgaXMgYnVpbHQuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC9saW5rPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBDb250YWlucyB0aGUgdW5wYWNrZWQgc291cmNlIGZpbGVzIGZvciBhIGdpdmVuIHJlY2lwZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J3BhdGNoaW5nLWRldi1lbnZpcm9ubWVudCc+Ci0gICAgICAgICAgICA8dGl0bGU+UGF0Y2hpbmc8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBPbmNlIHNvdXJjZSBjb2RlIGlzIGZldGNoZWQgYW5kIHVucGFja2VkLCBCaXRCYWtlIGxvY2F0ZXMKLSAgICAgICAgICAgICAgICBwYXRjaCBmaWxlcyBhbmQgYXBwbGllcyB0aGVtIHRvIHRoZSBzb3VyY2UgZmlsZXM6Ci0gICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3BhdGNoaW5nLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjZpbiIgZGVwdGg9IjVpbiIgLz4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhdGNoJz48ZmlsZW5hbWU+ZG9fcGF0Y2g8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB0YXNrIHByb2Nlc3NlcyByZWNpcGVzIGJ5Ci0gICAgICAgICAgICAgICAgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gbG9jYXRlIGFwcGxpY2FibGUgcGF0Y2ggZmlsZXMsIHdoaWNoIGJ5IGRlZmF1bHQKLSAgICAgICAgICAgICAgICBhcmUgPGZpbGVuYW1lPioucGF0Y2g8L2ZpbGVuYW1lPiBvcgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4qLmRpZmY8L2ZpbGVuYW1lPiBmaWxlcywgb3IgYW55IGZpbGUgaWYKLSAgICAgICAgICAgICAgICAiYXBwbHk9eWVzIiBpcyBzcGVjaWZpZWQgZm9yIHRoZSBmaWxlIGluCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQml0QmFrZSBmaW5kcyBhbmQgYXBwbGllcyBtdWx0aXBsZSBwYXRjaGVzIGZvciBhIHNpbmdsZSByZWNpcGUKLSAgICAgICAgICAgICAgICBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggaXQgZmluZHMgdGhlIHBhdGNoZXMuCi0gICAgICAgICAgICAgICAgUGF0Y2hlcyBhcmUgYXBwbGllZCB0byB0aGUgcmVjaXBlJ3Mgc291cmNlIGZpbGVzIGxvY2F0ZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVMnPjxmaWxlbmFtZT5TPC9maWxlbmFtZT48L2xpbms+IGRpcmVjdG9yeS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRoZSBzb3VyY2UgZGlyZWN0b3JpZXMgYXJlCi0gICAgICAgICAgICAgICAgY3JlYXRlZCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzb3VyY2UtZmV0Y2hpbmctZGV2LWVudmlyb25tZW50Jz5Tb3VyY2UgRmV0Y2hpbmc8L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nY29uZmlndXJhdGlvbi1hbmQtY29tcGlsYXRpb24tZGV2LWVudmlyb25tZW50Jz4KLSAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmF0aW9uIGFuZCBDb21waWxhdGlvbjwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEFmdGVyIHNvdXJjZSBjb2RlIGlzIHBhdGNoZWQsIEJpdEJha2UgZXhlY3V0ZXMgdGFza3MgdGhhdAotICAgICAgICAgICAgICAgIGNvbmZpZ3VyZSBhbmQgY29tcGlsZSB0aGUgc291cmNlIGNvZGU6Ci0gICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2NvbmZpZ3VyYXRpb24tY29tcGlsZS1hdXRvcmVjb25mLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjdpbiIgZGVwdGg9IjVpbiIgLz4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhpcyBzdGVwIGluIHRoZSBidWlsZCBwcm9jZXNzIGNvbnNpc3RzIG9mIHRocmVlIHRhc2tzOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcHJlcGFyZV9yZWNpcGVfc3lzcm9vdCc+PGZpbGVuYW1lPmRvX3ByZXBhcmVfcmVjaXBlX3N5c3Jvb3Q8L2ZpbGVuYW1lPjwvbGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdGFzayBzZXRzIHVwIHRoZSB0d28gc3lzcm9vdHMgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPnJlY2lwZS1zeXNyb290PC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlLXN5c3Jvb3QtbmF0aXZlPC9maWxlbmFtZT4pIHNvIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzeXNyb290cyBjb250YWluIHRoZSBjb250ZW50cyBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wb3B1bGF0ZV9zeXNyb290Jz48ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc3lzcm9vdDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdGFza3Mgb2YgdGhlIHJlY2lwZXMgb24gd2hpY2ggdGhlIHJlY2lwZQotICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmluZyB0aGUgdGFza3MgZGVwZW5kcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEEgc3lzcm9vdCBleGlzdHMgZm9yIGJvdGggdGhlIHRhcmdldCBhbmQgZm9yIHRoZSBuYXRpdmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyaWVzLCB3aGljaCBydW4gb24gdGhlIGhvc3Qgc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHRhc2sgY29uZmlndXJlcyB0aGUgc291cmNlIGJ5IGVuYWJsaW5nIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsaW5nIGFueSBidWlsZC10aW1lIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgc29mdHdhcmUgYmVpbmcgYnVpbHQuCi0gICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9ucyBjYW4gY29tZSBmcm9tIHRoZSByZWNpcGUgaXRzZWxmIGFzIHdlbGwKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzIGZyb20gYW4gaW5oZXJpdGVkIGNsYXNzLgotICAgICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUgc29mdHdhcmUgaXRzZWxmIG1pZ2h0IGNvbmZpZ3VyZSBpdHNlbGYKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGluZyBvbiB0aGUgdGFyZ2V0IGZvciB3aGljaCBpdCBpcyBiZWluZyBidWlsdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGNvbmZpZ3VyYXRpb25zIGhhbmRsZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtY29uZmlndXJlJz48ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB0YXNrIGFyZSBzcGVjaWZpYwotICAgICAgICAgICAgICAgICAgICAgICAgdG8gc291cmNlIGNvZGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIHNvdXJjZSBjb2RlCi0gICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBidWlsdCBieSB0aGUgcmVjaXBlLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IGFyZSB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWF1dG90b29scyc+PGZpbGVuYW1lPmF1dG90b29sczwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIGFkZCBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBieSB1c2luZwotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxsaW5rIGxpbmtlbmQ9J3Zhci1FWFRSQV9PRUNPTkYnPjxmaWxlbmFtZT5FWFRSQV9PRUNPTkY8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRUNPTkZJR19DT05GQVJHUyc+PGZpbGVuYW1lPlBBQ0tBR0VDT05GSUdfQ09ORkFSR1M8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdGhpcyB2YXJpYWJsZSB3b3JrcyB3aXRoaW4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgY2xhc3MsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXMvYXV0b3Rvb2xzLmJiY2xhc3M8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgT25jZSBhIGNvbmZpZ3VyYXRpb24gdGFzayBoYXMgYmVlbiBzYXRpc2ZpZWQsIEJpdEJha2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVzIHRoZSBzb3VyY2UgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtY29tcGlsZSc+PGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRhc2suCi0gICAgICAgICAgICAgICAgICAgICAgICBDb21waWxhdGlvbiBvY2N1cnMgaW4gdGhlIGRpcmVjdG9yeSBwb2ludGVkIHRvIGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUInPjxmaWxlbmFtZT5CPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFJlYWxpemUgdGhhdCB0aGUgPGZpbGVuYW1lPkI8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaXMsIGJ5Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0LCB0aGUgc2FtZSBhcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TJz48ZmlsZW5hbWU+UzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgY29tcGlsYXRpb24gaXMgZG9uZSwgQml0QmFrZSBleGVjdXRlcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdGFzay4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdGFzayBjb3BpZXMgZmlsZXMgZnJvbSB0aGUgPGZpbGVuYW1lPkI8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGFuZCBwbGFjZXMgdGhlbSBpbiBhIGhvbGRpbmcgYXJlYSBwb2ludGVkIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1EJz48ZmlsZW5hbWU+RDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0ncGFja2FnZS1zcGxpdHRpbmctZGV2LWVudmlyb25tZW50Jz4KLSAgICAgICAgICAgIDx0aXRsZT5QYWNrYWdlIFNwbGl0dGluZzwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEFmdGVyIHNvdXJjZSBjb2RlIGlzIGNvbmZpZ3VyZWQgYW5kIGNvbXBpbGVkLCB0aGUKLSAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGFuYWx5emVzCi0gICAgICAgICAgICAgICAgdGhlIHJlc3VsdHMgYW5kIHNwbGl0cyB0aGUgb3V0cHV0IGludG8gcGFja2FnZXM6Ci0gICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2FuYWx5c2lzLWZvci1wYWNrYWdlLXNwbGl0dGluZy5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI3aW4iIGRlcHRoPSI3aW4iIC8+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlJz48ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlZGF0YSc+PGZpbGVuYW1lPmRvX3BhY2thZ2VkYXRhPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGFza3MgY29tYmluZSB0byBhbmFseXplCi0gICAgICAgICAgICAgICAgdGhlIGZpbGVzIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1EJz48ZmlsZW5hbWU+RDwvZmlsZW5hbWU+PC9saW5rPiBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICBhbmQgc3BsaXQgdGhlbSBpbnRvIHN1YnNldHMgYmFzZWQgb24gYXZhaWxhYmxlIHBhY2thZ2VzIGFuZAotICAgICAgICAgICAgICAgIGZpbGVzLgotICAgICAgICAgICAgICAgIFRoZSBhbmFseXppbmcgcHJvY2VzcyBpbnZvbHZlcyB0aGUgZm9sbG93aW5nIGFzIHdlbGwgYXMgb3RoZXIKLSAgICAgICAgICAgICAgICBpdGVtczogc3BsaXR0aW5nIG91dCBkZWJ1Z2dpbmcgc3ltYm9scywKLSAgICAgICAgICAgICAgICBsb29raW5nIGF0IHNoYXJlZCBsaWJyYXJ5IGRlcGVuZGVuY2llcyBiZXR3ZWVuIHBhY2thZ2VzLAotICAgICAgICAgICAgICAgIGFuZCBsb29raW5nIGF0IHBhY2thZ2UgcmVsYXRpb25zaGlwcy4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRvX3BhY2thZ2VkYXRhPC9maWxlbmFtZT4gdGFzayBjcmVhdGVzIHBhY2thZ2UKLSAgICAgICAgICAgICAgICBtZXRhZGF0YSBiYXNlZCBvbiB0aGUgYW5hbHlzaXMgc3VjaCB0aGF0IHRoZQotICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY2FuIGdlbmVyYXRlIHRoZSBmaW5hbCBwYWNrYWdlcy4KLSAgICAgICAgICAgICAgICBXb3JraW5nLCBzdGFnZWQsIGFuZCBpbnRlcm1lZGlhdGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMKLSAgICAgICAgICAgICAgICBhbmQgcGFja2FnZSBzcGxpdHRpbmcgcHJvY2VzcyB1c2UgdGhlc2UgYXJlYXM6Ci0gICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1QS0dEJz48ZmlsZW5hbWU+UEtHRDwvZmlsZW5hbWU+PC9saW5rPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVzdGluYXRpb24gZGlyZWN0b3J5IGZvciBwYWNrYWdlcyBiZWZvcmUgdGhleSBhcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIHNwbGl0LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItUEtHREFUQV9ESVInPjxmaWxlbmFtZT5QS0dEQVRBX0RJUjwvZmlsZW5hbWU+PC9saW5rPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBBIHNoYXJlZCwgZ2xvYmFsLXN0YXRlIGRpcmVjdG9yeSB0aGF0IGhvbGRzIGRhdGEKLSAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZCBkdXJpbmcgdGhlIHBhY2thZ2luZyBwcm9jZXNzLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItUEtHREVTVFdPUksnPjxmaWxlbmFtZT5QS0dERVNUV09SSzwvZmlsZW5hbWU+PC9saW5rPiAtCi0gICAgICAgICAgICAgICAgICAgICAgICBBIHRlbXBvcmFyeSB3b3JrIGFyZWEgdXNlZCBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT4gdGFzay4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBLR0RFU1QnPjxmaWxlbmFtZT5QS0dERVNUPC9maWxlbmFtZT48L2xpbms+IC0KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwYXJlbnQgZGlyZWN0b3J5IGZvciBwYWNrYWdlcyBhZnRlciB0aGV5IGhhdmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGJlZW4gc3BsaXQuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICBUaGUgPGxpbmsgbGlua2VuZD0ndmFyLUZJTEVTJz48ZmlsZW5hbWU+RklMRVM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZSBkZWZpbmVzIHRoZSBmaWxlcyB0aGF0IGdvIGludG8gZWFjaCBwYWNrYWdlIGluCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VTJz48ZmlsZW5hbWU+UEFDS0FHRVM8L2ZpbGVuYW1lPjwvbGluaz4uCi0gICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgZGV0YWlscyBvbiBob3cgdGhpcyBpcyBhY2NvbXBsaXNoZWQsIHlvdSBjYW4KLSAgICAgICAgICAgICAgICBsb29rIGF0IHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXBhY2thZ2UnPjxmaWxlbmFtZT5wYWNrYWdlPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgY2xhc3MuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiBwYWNrYWdlcyBiZWluZyBjcmVhdGVkIChSUE0sIERFQiwgb3IKLSAgICAgICAgICAgICAgICBJUEspLCB0aGUgPGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfKjwvZmlsZW5hbWU+IHRhc2sKLSAgICAgICAgICAgICAgICBjcmVhdGVzIHRoZSBhY3R1YWwgcGFja2FnZXMgYW5kIHBsYWNlcyB0aGVtIGluIHRoZQotICAgICAgICAgICAgICAgIFBhY2thZ2UgRmVlZCBhcmVhLCB3aGljaCBpcwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1RNUERJUn0vZGVwbG95PC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3BhY2thZ2UtZmVlZHMtZGV2LWVudmlyb25tZW50Jz5QYWNrYWdlIEZlZWRzPC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGRldGFpbCBvbiB0aGF0IHBhcnQgb2YgdGhlIGJ1aWxkIHByb2Nlc3MuCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFN1cHBvcnQgZm9yIGNyZWF0aW5nIGZlZWRzIGRpcmVjdGx5IGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3kvKjwvZmlsZW5hbWU+IGRpcmVjdG9yaWVzIGRvZXMgbm90IGV4aXN0LgotICAgICAgICAgICAgICAgICAgICBDcmVhdGluZyBzdWNoIGZlZWRzIHVzdWFsbHkgcmVxdWlyZXMgc29tZSBraW5kIG9mIGZlZWQKLSAgICAgICAgICAgICAgICAgICAgbWFpbnRlbmFuY2UgbWVjaGFuaXNtIHRoYXQgd291bGQgdXBsb2FkIHRoZSBuZXcgcGFja2FnZXMKLSAgICAgICAgICAgICAgICAgICAgaW50byBhbiBvZmZpY2lhbCBwYWNrYWdlIGZlZWQgKGUuZy4gdGhlCi0gICAgICAgICAgICAgICAgICAgIMOFbmdzdHLDtm0gZGlzdHJpYnV0aW9uKS4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGhpZ2hseSBkaXN0cmlidXRpb24tc3BlY2lmaWMKLSAgICAgICAgICAgICAgICAgICAgYW5kIHRodXMgaXMgbm90IHByb3ZpZGVkIG91dCBvZiB0aGUgYm94LgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdpbWFnZS1nZW5lcmF0aW9uLWRldi1lbnZpcm9ubWVudCc+Ci0gICAgICAgICAgICA8dGl0bGU+SW1hZ2UgR2VuZXJhdGlvbjwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIE9uY2UgcGFja2FnZXMgYXJlIHNwbGl0IGFuZCBzdG9yZWQgaW4gdGhlIFBhY2thZ2UgRmVlZHMgYXJlYSwKLSAgICAgICAgICAgICAgICB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIEJpdEJha2UgdG8gZ2VuZXJhdGUgdGhlCi0gICAgICAgICAgICAgICAgcm9vdCBmaWxlc3lzdGVtIGltYWdlOgotICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9pbWFnZS1nZW5lcmF0aW9uLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjZpbiIgZGVwdGg9IjdpbiIgLz4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGltYWdlIGdlbmVyYXRpb24gcHJvY2VzcyBjb25zaXN0cyBvZiBzZXZlcmFsIHN0YWdlcyBhbmQKLSAgICAgICAgICAgICAgICBkZXBlbmRzIG9uIHNldmVyYWwgdGFza3MgYW5kIHZhcmlhYmxlcy4KLSAgICAgICAgICAgICAgICBUaGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3Mtcm9vdGZzJz48ZmlsZW5hbWU+ZG9fcm9vdGZzPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGFzayBjcmVhdGVzIHRoZSByb290IGZpbGVzeXN0ZW0gKGZpbGUgYW5kIGRpcmVjdG9yeSBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICAgICAgZm9yIGFuIGltYWdlLgotICAgICAgICAgICAgICAgIFRoaXMgdGFzayB1c2VzIHNldmVyYWwga2V5IHZhcmlhYmxlcyB0byBoZWxwIGNyZWF0ZSB0aGUgbGlzdAotICAgICAgICAgICAgICAgIG9mIHBhY2thZ2VzIHRvIGFjdHVhbGx5IGluc3RhbGw6Ci0gICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9JTlNUQUxMJz48ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+PC9saW5rPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIExpc3RzIG91dCB0aGUgYmFzZSBzZXQgb2YgcGFja2FnZXMgdG8gaW5zdGFsbCBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgUGFja2FnZSBGZWVkcyBhcmVhLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfRVhDTFVERSc+PGZpbGVuYW1lPlBBQ0tBR0VfRVhDTFVERTwvZmlsZW5hbWU+PC9saW5rPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBwYWNrYWdlcyB0aGF0IHNob3VsZCBub3QgYmUgaW5zdGFsbGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItSU1BR0VfRkVBVFVSRVMnPjxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBmZWF0dXJlcyB0byBpbmNsdWRlIGluIHRoZSBpbWFnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIE1vc3Qgb2YgdGhlc2UgZmVhdHVyZXMgbWFwIHRvIGFkZGl0aW9uYWwgcGFja2FnZXMgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsYXRpb24uPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9DTEFTU0VTJz48ZmlsZW5hbWU+UEFDS0FHRV9DTEFTU0VTPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBwYWNrYWdlIGJhY2tlbmQgdG8gdXNlIGFuZCBjb25zZXF1ZW50bHkKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlbHBzIGRldGVybWluZSB3aGVyZSB0byBsb2NhdGUgcGFja2FnZXMgd2l0aGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZSBGZWVkcyBhcmVhLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0xJTkdVQVMnPjxmaWxlbmFtZT5JTUFHRV9MSU5HVUFTPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICAgICAgRGV0ZXJtaW5lcyB0aGUgbGFuZ3VhZ2UocykgZm9yIHdoaWNoIGFkZGl0aW9uYWwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlIHN1cHBvcnQgcGFja2FnZXMgYXJlIGluc3RhbGxlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfSU5TVEFMTCc+PGZpbGVuYW1lPlBBQ0tBR0VfSU5TVEFMTDwvZmlsZW5hbWU+PC9saW5rPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmaW5hbCBsaXN0IG9mIHBhY2thZ2VzIHBhc3NlZCB0byB0aGUgcGFja2FnZSBtYW5hZ2VyCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW5zdGFsbGF0aW9uIGludG8gdGhlIGltYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFdpdGgKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfUk9PVEZTJz48ZmlsZW5hbWU+SU1BR0VfUk9PVEZTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgcG9pbnRpbmcgdG8gdGhlIGxvY2F0aW9uIG9mIHRoZSBmaWxlc3lzdGVtIHVuZGVyIGNvbnN0cnVjdGlvbiBhbmQKLSAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPlBBQ0tBR0VfSU5TVEFMTDwvZmlsZW5hbWU+IHZhcmlhYmxlIHByb3ZpZGluZyB0aGUKLSAgICAgICAgICAgICAgICBmaW5hbCBsaXN0IG9mIHBhY2thZ2VzIHRvIGluc3RhbGwsIHRoZSByb290IGZpbGUgc3lzdGVtIGlzCi0gICAgICAgICAgICAgICAgY3JlYXRlZC4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgUGFja2FnZSBpbnN0YWxsYXRpb24gaXMgdW5kZXIgY29udHJvbCBvZiB0aGUgcGFja2FnZSBtYW5hZ2VyCi0gICAgICAgICAgICAgICAgKGUuZy4gZG5mL3JwbSwgb3BrZywgb3IgYXB0L2Rwa2cpIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvcgotICAgICAgICAgICAgICAgIG5vdCBwYWNrYWdlIG1hbmFnZW1lbnQgaXMgZW5hYmxlZCBmb3IgdGhlIHRhcmdldC4KLSAgICAgICAgICAgICAgICBBdCB0aGUgZW5kIG9mIHRoZSBwcm9jZXNzLCBpZiBwYWNrYWdlIG1hbmFnZW1lbnQgaXMgbm90Ci0gICAgICAgICAgICAgICAgZW5hYmxlZCBmb3IgdGhlIHRhcmdldCwgdGhlIHBhY2thZ2UgbWFuYWdlcidzIGRhdGEgZmlsZXMKLSAgICAgICAgICAgICAgICBhcmUgZGVsZXRlZCBmcm9tIHRoZSByb290IGZpbGVzeXN0ZW0uCi0gICAgICAgICAgICAgICAgQXMgcGFydCBvZiB0aGUgZmluYWwgc3RhZ2Ugb2YgcGFja2FnZSBpbnN0YWxsYXRpb24sIHBvc3RpbnN0YWxsCi0gICAgICAgICAgICAgICAgc2NyaXB0cyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBwYWNrYWdlcyBhcmUgcnVuLgotICAgICAgICAgICAgICAgIEFueSBzY3JpcHRzIHRoYXQgZmFpbCB0byBydW4KLSAgICAgICAgICAgICAgICBvbiB0aGUgYnVpbGQgaG9zdCBhcmUgcnVuIG9uIHRoZSB0YXJnZXQgd2hlbiB0aGUgdGFyZ2V0IHN5c3RlbQotICAgICAgICAgICAgICAgIGlzIGZpcnN0IGJvb3RlZC4KLSAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHVzaW5nIGEKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1hLXJlYWQtb25seS1yb290LWZpbGVzeXN0ZW0nPnJlYWQtb25seSByb290IGZpbGVzeXN0ZW08L3VsaW5rPiwKLSAgICAgICAgICAgICAgICBhbGwgdGhlIHBvc3QgaW5zdGFsbGF0aW9uIHNjcmlwdHMgbXVzdCBzdWNjZWVkIGR1cmluZyB0aGUKLSAgICAgICAgICAgICAgICBwYWNrYWdlIGluc3RhbGxhdGlvbiBwaGFzZSBzaW5jZSB0aGUgcm9vdCBmaWxlc3lzdGVtIGlzCi0gICAgICAgICAgICAgICAgcmVhZC1vbmx5LgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZmluYWwgc3RhZ2VzIG9mIHRoZSA8ZmlsZW5hbWU+ZG9fcm9vdGZzPC9maWxlbmFtZT4gdGFzawotICAgICAgICAgICAgICAgIGhhbmRsZSBwb3N0IHByb2Nlc3NpbmcuCi0gICAgICAgICAgICAgICAgUG9zdCBwcm9jZXNzaW5nIGluY2x1ZGVzIGNyZWF0aW9uIG9mIGEgbWFuaWZlc3QgZmlsZSBhbmQKLSAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb25zLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgbWFuaWZlc3QgZmlsZSAoPGZpbGVuYW1lPi5tYW5pZmVzdDwvZmlsZW5hbWU+KSByZXNpZGVzCi0gICAgICAgICAgICAgICAgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSByb290IGZpbGVzeXN0ZW0gaW1hZ2UuCi0gICAgICAgICAgICAgICAgVGhpcyBmaWxlIGxpc3RzIG91dCwgbGluZS1ieS1saW5lLCB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzLgotICAgICAgICAgICAgICAgIFRoZSBtYW5pZmVzdCBmaWxlIGlzIHVzZWZ1bCBmb3IgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtdGVzdGltYWdlKic+PGZpbGVuYW1lPnRlc3RpbWFnZTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIGNsYXNzLCBmb3IgZXhhbXBsZSwgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRvIHJ1bgotICAgICAgICAgICAgICAgIHNwZWNpZmljIHRlc3RzLgotICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfTUFOSUZFU1QnPjxmaWxlbmFtZT5JTUFHRV9NQU5JRkVTVDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBPcHRpbWl6aW5nIHByb2Nlc3NlcyBydW4gYWNyb3NzIHRoZSBpbWFnZSBpbmNsdWRlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1rbGliczwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+cHJlbGluazwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIGFuZCBhbnkgb3RoZXIgcG9zdC1wcm9jZXNzaW5nIGNvbW1hbmRzIGFzIGRlZmluZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EJz48ZmlsZW5hbWU+Uk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQ8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm1rbGliczwvZmlsZW5hbWU+IHByb2Nlc3Mgb3B0aW1pemVzIHRoZSBzaXplCi0gICAgICAgICAgICAgICAgb2YgdGhlIGxpYnJhcmllcywgd2hpbGUgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnByZWxpbms8L2ZpbGVuYW1lPiBwcm9jZXNzIG9wdGltaXplcyB0aGUgZHluYW1pYwotICAgICAgICAgICAgICAgIGxpbmtpbmcgb2Ygc2hhcmVkIGxpYnJhcmllcyB0byByZWR1Y2Ugc3RhcnQgdXAgdGltZSBvZgotICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVzLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBBZnRlciB0aGUgcm9vdCBmaWxlc3lzdGVtIGlzIGJ1aWx0LCBwcm9jZXNzaW5nIGJlZ2lucyBvbgotICAgICAgICAgICAgICAgIHRoZSBpbWFnZSB0aHJvdWdoIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbWFnZSc+PGZpbGVuYW1lPmRvX2ltYWdlPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGFzay4KLSAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIHJ1bnMgYW55IHByZS1wcm9jZXNzaW5nIGNvbW1hbmRzIGFzIGRlZmluZWQKLSAgICAgICAgICAgICAgICBieSB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfUFJFUFJPQ0VTU19DT01NQU5EJz48ZmlsZW5hbWU+SU1BR0VfUFJFUFJPQ0VTU19DT01NQU5EPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUuCi0gICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgYSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBjYWxsIGJlZm9yZQotICAgICAgICAgICAgICAgIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNyZWF0ZXMgdGhlIGZpbmFsIGltYWdlIG91dHB1dAotICAgICAgICAgICAgICAgIGZpbGVzLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBkeW5hbWljYWxseSBjcmVhdGVzCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2ltYWdlXyo8L2ZpbGVuYW1lPiB0YXNrcyBhcyBuZWVkZWQsIGJhc2VkCi0gICAgICAgICAgICAgICAgb24gdGhlIGltYWdlIHR5cGVzIHNwZWNpZmllZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfRlNUWVBFUyc+PGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICBUaGUgcHJvY2VzcyB0dXJucyBldmVyeXRoaW5nIGludG8gYW4gaW1hZ2UgZmlsZSBvciBhIHNldCBvZgotICAgICAgICAgICAgICAgIGltYWdlIGZpbGVzIGFuZCBjb21wcmVzc2VzIHRoZSByb290IGZpbGVzeXN0ZW0gaW1hZ2UgdG8gcmVkdWNlCi0gICAgICAgICAgICAgICAgdGhlIG92ZXJhbGwgc2l6ZSBvZiB0aGUgaW1hZ2UuCi0gICAgICAgICAgICAgICAgVGhlIGZvcm1hdHMgdXNlZCBmb3IgdGhlIHJvb3QgZmlsZXN5c3RlbSBkZXBlbmQgb24gdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgYSBkeW5hbWljYWxseSBjcmVhdGVkIHRhc2sgd2hlbiBjcmVhdGluZyBhCi0gICAgICAgICAgICAgICAgcGFydGljdWxhciBpbWFnZSA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+IHdvdWxkIHRha2UgdGhlCi0gICAgICAgICAgICAgICAgZm9sbG93aW5nIGZvcm06Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBkb19pbWFnZV88cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+W2RlcGVuZHNdCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIFNvLCBpZiB0aGUgPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPiBhcyBzcGVjaWZpZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPiB3ZXJlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmV4dDQ8L2ZpbGVuYW1lPiwgdGhlIGR5bmFtaWNhbGx5IGdlbmVyYXRlZCB0YXNrCi0gICAgICAgICAgICAgICAgd291bGQgYmUgYXMgZm9sbG93czoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIGRvX2ltYWdlX2V4dDRbZGVwZW5kc10KLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBmaW5hbCB0YXNrIGludm9sdmVkIGluIGltYWdlIGNyZWF0aW9uIGlzIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbWFnZS1jb21wbGV0ZSc+PGZpbGVuYW1lPmRvX2ltYWdlX2NvbXBsZXRlPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGFzay4KLSAgICAgICAgICAgICAgICBUaGlzIHRhc2sgY29tcGxldGVzIHRoZSBpbWFnZSBieSBhcHBseWluZyBhbnkgaW1hZ2UKLSAgICAgICAgICAgICAgICBwb3N0IHByb2Nlc3NpbmcgYXMgZGVmaW5lZCB0aHJvdWdoIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9QT1NUUFJPQ0VTU19DT01NQU5EJz48ZmlsZW5hbWU+SU1BR0VfUE9TVFBST0NFU1NfQ09NTUFORDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlLgotICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSBzcGVjaWZpZXMgYSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBjYWxsIG9uY2UgdGhlCi0gICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBoYXMgY3JlYXRlZCB0aGUgZmluYWwgaW1hZ2Ugb3V0cHV0Ci0gICAgICAgICAgICAgICAgZmlsZXMuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIFRoZSBlbnRpcmUgaW1hZ2UgZ2VuZXJhdGlvbiBwcm9jZXNzIGlzIHJ1biB1bmRlciBQc2V1ZG8uCi0gICAgICAgICAgICAgICAgUnVubmluZyB1bmRlciBQc2V1ZG8gZW5zdXJlcyB0aGF0IHRoZSBmaWxlcyBpbiB0aGUgcm9vdAotICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gaGF2ZSBjb3JyZWN0IG93bmVyc2hpcC4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdzZGstZ2VuZXJhdGlvbi1kZXYtZW52aXJvbm1lbnQnPgotICAgICAgICAgICAgPHRpdGxlPlNESyBHZW5lcmF0aW9uPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyBCaXRCYWtlIHRvIGdlbmVyYXRlIHRoZQotICAgICAgICAgICAgICAgIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBpbnN0YWxsZXIgc2NyaXB0IGZvciBib3RoIHRoZQotICAgICAgICAgICAgICAgIHN0YW5kYXJkIGFuZCBleHRlbnNpYmxlIFNES3M6Ci0gICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3Nkay1nZW5lcmF0aW9uLnBuZyIgYWxpZ249ImNlbnRlciIgLz4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbgotICAgICAgICAgICAgICAgIGdlbmVyYXRpb24sIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluLWdlbmVyYXRpb24nPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbiBHZW5lcmF0aW9uPC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBhZHZhbnRhZ2VzIGdhaW5lZCB3aGVuIGJ1aWxkaW5nIGEKLSAgICAgICAgICAgICAgICBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4gdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBvcHVsYXRlX3Nkayc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3NkazwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHRhc2ssIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWJ1aWxkaW5nLWFuLXNkay1pbnN0YWxsZXInPkJ1aWxkaW5nIGFuIFNESyBJbnN0YWxsZXI8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKLSAgICAgICAgICAgICAgICBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBtYW51YWwuCi0gICAgICAgICAgICA8L25vdGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIExpa2UgaW1hZ2UgZ2VuZXJhdGlvbiwgdGhlIFNESyBzY3JpcHQgcHJvY2VzcyBjb25zaXN0cyBvZgotICAgICAgICAgICAgICAgIHNldmVyYWwgc3RhZ2VzIGFuZCBkZXBlbmRzIG9uIG1hbnkgdmFyaWFibGVzLgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc2RrPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BvcHVsYXRlX3Nka19leHQ8L2ZpbGVuYW1lPiB0YXNrcyB1c2UgdGhlc2UKLSAgICAgICAgICAgICAgICBrZXkgdmFyaWFibGVzIHRvIGhlbHAgY3JlYXRlIHRoZSBsaXN0IG9mIHBhY2thZ2VzIHRvIGFjdHVhbGx5Ci0gICAgICAgICAgICAgICAgaW5zdGFsbC4KLSAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlIHZhcmlhYmxlcyBsaXN0ZWQgaW4gdGhlIGZpZ3VyZSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstZGV2LWVudmlyb25tZW50Jz5BcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBTREs8L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9fcG9wdWxhdGVfc2RrPC9maWxlbmFtZT4gdGFzayBoZWxwcyBjcmVhdGUKLSAgICAgICAgICAgICAgICB0aGUgc3RhbmRhcmQgU0RLIGFuZCBoYW5kbGVzIHR3byBwYXJ0czogYSB0YXJnZXQgcGFydCBhbmQgYQotICAgICAgICAgICAgICAgIGhvc3QgcGFydC4KLSAgICAgICAgICAgICAgICBUaGUgdGFyZ2V0IHBhcnQgaXMgdGhlIHBhcnQgYnVpbHQgZm9yIHRoZSB0YXJnZXQgaGFyZHdhcmUgYW5kCi0gICAgICAgICAgICAgICAgaW5jbHVkZXMgbGlicmFyaWVzIGFuZCBoZWFkZXJzLgotICAgICAgICAgICAgICAgIFRoZSBob3N0IHBhcnQgaXMgdGhlIHBhcnQgb2YgdGhlIFNESyB0aGF0IHJ1bnMgb24gdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNES01BQ0hJTkUnPjxmaWxlbmFtZT5TREtNQUNISU5FPC9maWxlbmFtZT48L2xpbms+LgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRvX3BvcHVsYXRlX3Nka19leHQ8L2ZpbGVuYW1lPiB0YXNrIGhlbHBzIGNyZWF0ZQotICAgICAgICAgICAgICAgIHRoZSBleHRlbnNpYmxlIFNESyBhbmQgaGFuZGxlcyBob3N0IGFuZCB0YXJnZXQgcGFydHMKLSAgICAgICAgICAgICAgICBkaWZmZXJlbnRseSB0aGFuIGl0cyBjb3VudGVyIHBhcnQgZG9lcyBmb3IgdGhlIHN0YW5kYXJkIFNESy4KLSAgICAgICAgICAgICAgICBGb3IgdGhlIGV4dGVuc2libGUgU0RLLCB0aGUgdGFzayBlbmNhcHN1bGF0ZXMgdGhlIGJ1aWxkIHN5c3RlbSwKLSAgICAgICAgICAgICAgICB3aGljaCBpbmNsdWRlcyBldmVyeXRoaW5nIG5lZWRlZCAoaG9zdCBhbmQgdGFyZ2V0KSBmb3IgdGhlIFNESy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgUmVnYXJkbGVzcyBvZiB0aGUgdHlwZSBvZiBTREsgYmVpbmcgY29uc3RydWN0ZWQsIHRoZQotICAgICAgICAgICAgICAgIHRhc2tzIHBlcmZvcm0gc29tZSBjbGVhbnVwIGFmdGVyIHdoaWNoIGEgY3Jvc3MtZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgYW5kIGFueSBuZWVkZWQgY29uZmlndXJhdGlvbiBmaWxlcwotICAgICAgICAgICAgICAgIGFyZSBjcmVhdGVkLgotICAgICAgICAgICAgICAgIFRoZSBmaW5hbCBvdXRwdXQgaXMgdGhlIENyb3NzLWRldmVsb3BtZW50Ci0gICAgICAgICAgICAgICAgdG9vbGNoYWluIGluc3RhbGxhdGlvbiBzY3JpcHQgKDxmaWxlbmFtZT4uc2g8L2ZpbGVuYW1lPiBmaWxlKSwKLSAgICAgICAgICAgICAgICB3aGljaCBpbmNsdWRlcyB0aGUgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0LgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J3N0YW1wLWZpbGVzLWFuZC10aGUtcmVydW5uaW5nLW9mLXRhc2tzJz4KLSAgICAgICAgICAgIDx0aXRsZT5TdGFtcCBGaWxlcyBhbmQgdGhlIFJlcnVubmluZyBvZiBUYXNrczwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEZvciBlYWNoIHRhc2sgdGhhdCBjb21wbGV0ZXMgc3VjY2Vzc2Z1bGx5LCBCaXRCYWtlIHdyaXRlcyBhCi0gICAgICAgICAgICAgICAgc3RhbXAgZmlsZSBpbnRvIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TVEFNUFNfRElSJz48ZmlsZW5hbWU+U1RBTVBTX0RJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICBUaGUgYmVnaW5uaW5nIG9mIHRoZSBzdGFtcCBmaWxlJ3MgZmlsZW5hbWUgaXMgZGV0ZXJtaW5lZCBieSB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1RBTVAnPjxmaWxlbmFtZT5TVEFNUDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlLCBhbmQgdGhlIGVuZCBvZiB0aGUgbmFtZSBjb25zaXN0cyBvZiB0aGUgdGFzaydzIG5hbWUKLSAgICAgICAgICAgICAgICBhbmQgY3VycmVudAotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjY2hlY2tzdW1zJz5pbnB1dCBjaGVja3N1bTwvdWxpbms+LgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBUaGlzIG5hbWluZyBzY2hlbWUgYXNzdW1lcyB0aGF0Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyLUJCX1NJR05BVFVSRV9IQU5ETEVSJz48ZmlsZW5hbWU+QkJfU0lHTkFUVVJFX0hBTkRMRVI8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIGlzICJPRUJhc2ljSGFzaCIsIHdoaWNoIGlzIGFsbW9zdCBhbHdheXMgdGhlIGNhc2UgaW4KLSAgICAgICAgICAgICAgICAgICAgY3VycmVudCBPcGVuRW1iZWRkZWQuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIFRvIGRldGVybWluZSBpZiBhIHRhc2sgbmVlZHMgdG8gYmUgcmVydW4sIEJpdEJha2UgY2hlY2tzIGlmIGEKLSAgICAgICAgICAgICAgICBzdGFtcCBmaWxlIHdpdGggYSBtYXRjaGluZyBpbnB1dCBjaGVja3N1bSBleGlzdHMgZm9yIHRoZSB0YXNrLgotICAgICAgICAgICAgICAgIElmIHN1Y2ggYSBzdGFtcCBmaWxlIGV4aXN0cywgdGhlIHRhc2sncyBvdXRwdXQgaXMgYXNzdW1lZCB0bwotICAgICAgICAgICAgICAgIGV4aXN0IGFuZCBzdGlsbCBiZSB2YWxpZC4KLSAgICAgICAgICAgICAgICBJZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCwgdGhlIHRhc2sgaXMgcmVydW4uCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBzdGFtcCBtZWNoYW5pc20gaXMgbW9yZSBnZW5lcmFsIHRoYW4gdGhlIHNoYXJlZAotICAgICAgICAgICAgICAgICAgICBzdGF0ZSAoc3N0YXRlKSBjYWNoZSBtZWNoYW5pc20gZGVzY3JpYmVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2V0c2NlbmUtdGFza3MtYW5kLXNoYXJlZC1zdGF0ZSc+U2V0c2NlbmUgVGFza3MgYW5kIFNoYXJlZCBTdGF0ZTwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgIEJpdEJha2UgYXZvaWRzIHJlcnVubmluZyBhbnkgdGFzayB0aGF0IGhhcyBhIHZhbGlkCi0gICAgICAgICAgICAgICAgICAgIHN0YW1wIGZpbGUsIG5vdCBqdXN0IHRhc2tzIHRoYXQgY2FuIGJlIGFjY2VsZXJhdGVkIHRocm91Z2gKLSAgICAgICAgICAgICAgICAgICAgdGhlIHNzdGF0ZSBjYWNoZS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxwYXJhPkhvd2V2ZXIsIHlvdSBzaG91bGQgcmVhbGl6ZSB0aGF0IHN0YW1wIGZpbGVzIG9ubHkKLSAgICAgICAgICAgICAgICAgICAgc2VydmUgYXMgYSBtYXJrZXIgdGhhdCBzb21lIHdvcmsgaGFzIGJlZW4gZG9uZSBhbmQgdGhhdAotICAgICAgICAgICAgICAgICAgICB0aGVzZSBmaWxlcyBkbyBub3QgcmVjb3JkIHRhc2sgb3V0cHV0LgotICAgICAgICAgICAgICAgICAgICBUaGUgYWN0dWFsIHRhc2sgb3V0cHV0IHdvdWxkIHVzdWFsbHkgYmUgc29tZXdoZXJlIGluCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgKGUuZy4gaW4gc29tZSByZWNpcGUncwotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvbGluaz4uKQotICAgICAgICAgICAgICAgICAgICBXaGF0IHRoZSBzc3RhdGUgY2FjaGUgbWVjaGFuaXNtIGFkZHMgaXMgYSB3YXkgdG8gY2FjaGUgdGFzawotICAgICAgICAgICAgICAgICAgICBvdXRwdXQgdGhhdCBjYW4gdGhlbiBiZSBzaGFyZWQgYmV0d2VlbiBidWlsZCBtYWNoaW5lcy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICBTaW5jZSA8ZmlsZW5hbWU+U1RBTVBTX0RJUjwvZmlsZW5hbWU+IGlzIHVzdWFsbHkgYSBzdWJkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICBvZiA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4sIHJlbW92aW5nCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IHdpbGwgYWxzbyByZW1vdmUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1RBTVBTX0RJUjwvZmlsZW5hbWU+LCB3aGljaCBtZWFucyB0YXNrcyB3aWxsCi0gICAgICAgICAgICAgICAgcHJvcGVybHkgYmUgcmVydW4gdG8gcmVwb3B1bGF0ZSA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4uCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHNvbWUgdGFzayB0byBhbHdheXMgYmUgY29uc2lkZXJlZCAib3V0IG9mIGRhdGUiLAotICAgICAgICAgICAgICAgIHlvdSBjYW4gbWFyayBpdCB3aXRoIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyaWFibGUtZmxhZ3MnPjxmaWxlbmFtZT5ub3N0YW1wPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgIHZhcmZsYWcuCi0gICAgICAgICAgICAgICAgSWYgc29tZSBvdGhlciB0YXNrIGRlcGVuZHMgb24gc3VjaCBhIHRhc2ssIHRoZW4gdGhhdCB0YXNrIHdpbGwKLSAgICAgICAgICAgICAgICBhbHNvIGFsd2F5cyBiZSBjb25zaWRlcmVkIG91dCBvZiBkYXRlLCB3aGljaCBtaWdodCBub3QgYmUgd2hhdAotICAgICAgICAgICAgICAgIHlvdSB3YW50LgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBGb3IgZGV0YWlscyBvbiBob3cgdG8gdmlldyBpbmZvcm1hdGlvbiBhYm91dCBhIHRhc2sncwotICAgICAgICAgICAgICAgIHNpZ25hdHVyZSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZ3Bva3ktdmlld2luZy10YXNrLXZhcmlhYmxlLWRlcGVuZGVuY2llcyc+Vmlld2luZyBUYXNrIFZhcmlhYmxlIERlcGVuZGVuY2llczwvbGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdzZXRzY2VuZS10YXNrcy1hbmQtc2hhcmVkLXN0YXRlJz4KLSAgICAgICAgICAgIDx0aXRsZT5TZXRzY2VuZSBUYXNrcyBhbmQgU2hhcmVkIFN0YXRlPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGRlc2NyaXB0aW9uIG9mIHRhc2tzIHNvIGZhciBhc3N1bWVzIHRoYXQgQml0QmFrZSBuZWVkcyB0bwotICAgICAgICAgICAgICAgIGJ1aWxkIGV2ZXJ5dGhpbmcgYW5kIHRoZXJlIGFyZSBubyBwcmVidWlsdCBvYmplY3RzIGF2YWlsYWJsZS4KLSAgICAgICAgICAgICAgICBCaXRCYWtlIGRvZXMgc3VwcG9ydCBza2lwcGluZyB0YXNrcyBpZiBwcmVidWlsdCBvYmplY3RzIGFyZQotICAgICAgICAgICAgICAgIGF2YWlsYWJsZS4KLSAgICAgICAgICAgICAgICBUaGVzZSBvYmplY3RzIGFyZSB1c3VhbGx5IG1hZGUgYXZhaWxhYmxlIGluIHRoZSBmb3JtIG9mIGEKLSAgICAgICAgICAgICAgICBzaGFyZWQgc3RhdGUgKHNzdGF0ZSkgY2FjaGUuCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB2YXJpYWJsZXMgYWZmZWN0aW5nIHNzdGF0ZSwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TU1RBVEVfTUlSUk9SUyc+PGZpbGVuYW1lPlNTVEFURV9NSVJST1JTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcy4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBpZGVhIG9mIGEgc2V0c2NlbmUgdGFzayAoaS5lCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvXzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnRhc2tuYW1lPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+X3NldHNjZW5lPC9maWxlbmFtZT4pCi0gICAgICAgICAgICAgICAgaXMgYSB2ZXJzaW9uIG9mIHRoZSB0YXNrIHdoZXJlCi0gICAgICAgICAgICAgICAgaW5zdGVhZCBvZiBidWlsZGluZyBzb21ldGhpbmcsIEJpdEJha2UgY2FuIHNraXAgdG8gdGhlIGVuZAotICAgICAgICAgICAgICAgIHJlc3VsdCBhbmQgc2ltcGx5IHBsYWNlIGEgc2V0IG9mIGZpbGVzIGludG8gc3BlY2lmaWMgbG9jYXRpb25zCi0gICAgICAgICAgICAgICAgYXMgbmVlZGVkLgotICAgICAgICAgICAgICAgIEluIHNvbWUgY2FzZXMsIGl0IG1ha2VzIHNlbnNlIHRvIGhhdmUgYSBzZXRzY2VuZSB0YXNrIHZhcmlhbnQKLSAgICAgICAgICAgICAgICAoZS5nLiBnZW5lcmF0aW5nIHBhY2thZ2UgZmlsZXMgaW4gdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfKjwvZmlsZW5hbWU+IHRhc2spLgotICAgICAgICAgICAgICAgIEluIG90aGVyIGNhc2VzLCBpdCBkb2VzIG5vdCBtYWtlIHNlbnNlLCAoZS5nLiBhCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhdGNoJz48ZmlsZW5hbWU+ZG9fcGF0Y2g8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB0YXNrIG9yCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXVucGFjayc+PGZpbGVuYW1lPmRvX3VucGFjazwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHRhc2spIHNpbmNlIHRoZSB3b3JrIGludm9sdmVkIHdvdWxkIGJlIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbgotICAgICAgICAgICAgICAgIHRoZSB1bmRlcmx5aW5nIHRhc2suCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEluIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLCB0aGUgY29tbW9uIHRhc2tzIHRoYXQgaGF2ZQotICAgICAgICAgICAgICAgIHNldHNjZW5lIHZhcmlhbnRzIGFyZSA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvbGluaz4sCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfKjwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1kZXBsb3knPjxmaWxlbmFtZT5kb19kZXBsb3k8L2ZpbGVuYW1lPjwvbGluaz4sCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2VkYXRhJz48ZmlsZW5hbWU+ZG9fcGFja2FnZWRhdGE8L2ZpbGVuYW1lPjwvbGluaz4sCi0gICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBvcHVsYXRlX3N5c3Jvb3QnPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT48L2xpbms+LgotICAgICAgICAgICAgICAgIE5vdGljZSB0aGF0IHRoZXNlIGFyZSBtb3N0IG9mIHRoZSB0YXNrcyB3aG9zZSBvdXRwdXQgaXMgYW4KLSAgICAgICAgICAgICAgICBlbmQgcmVzdWx0LgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBoYXMga25vd2xlZGdlIG9mIHRoZSByZWxhdGlvbnNoaXAKLSAgICAgICAgICAgICAgICBiZXR3ZWVuIHRoZXNlIHRhc2tzIGFuZCBvdGhlciB0YXNrcyB0aGF0IHByZWNlZGUgdGhlbS4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgQml0QmFrZSBydW5zCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmU8L2ZpbGVuYW1lPiBmb3IKLSAgICAgICAgICAgICAgICBzb21ldGhpbmcsIHRoZXJlIGlzIGxpdHRsZSBwb2ludCBpbiBydW5uaW5nIGFueSBvZiB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmRvX3VucGFjazwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+LCBhbmQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+IHRhc2tzLgotICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIDxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT4gbmVlZHMgdG8gYmUgcnVuLAotICAgICAgICAgICAgICAgIEJpdEJha2Ugd291bGQgbmVlZCB0byBydW4gdGhvc2Ugb3RoZXIgdGFza3MuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEl0IGJlY29tZXMgbW9yZSBjb21wbGljYXRlZCBpZiBldmVyeXRoaW5nIGNhbiBjb21lIGZyb20gYW4KLSAgICAgICAgICAgICAgICBzc3RhdGUgY2FjaGUgYmVjYXVzZSBzb21lIG9iamVjdHMgYXJlIHNpbXBseSBub3QgcmVxdWlyZWQgYXQKLSAgICAgICAgICAgICAgICBhbGwuCi0gICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBkbyBub3QgbmVlZCBhIGNvbXBpbGVyIG9yIG5hdGl2ZSB0b29scywgc3VjaAotICAgICAgICAgICAgICAgIGFzIHF1aWx0LCBpZiB0aGVyZSBpcyBub3RoaW5nIHRvIGNvbXBpbGUgb3IgcGF0Y2guCi0gICAgICAgICAgICAgICAgSWYgdGhlIDxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlXyo8L2ZpbGVuYW1lPiBwYWNrYWdlcyBhcmUKLSAgICAgICAgICAgICAgICBhdmFpbGFibGUgZnJvbSBzc3RhdGUsIEJpdEJha2UgZG9lcyBub3QgbmVlZCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGFja2FnZTwvZmlsZW5hbWU+IHRhc2sgZGF0YS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVG8gaGFuZGxlIGFsbCB0aGVzZSBjb21wbGV4aXRpZXMsIEJpdEJha2UgcnVucyBpbiB0d28gcGhhc2VzLgotICAgICAgICAgICAgICAgIFRoZSBmaXJzdCBpcyB0aGUgInNldHNjZW5lIiBzdGFnZS4KLSAgICAgICAgICAgICAgICBEdXJpbmcgdGhpcyBzdGFnZSwgQml0QmFrZSBmaXJzdCBjaGVja3MgdGhlIHNzdGF0ZSBjYWNoZSBmb3IKLSAgICAgICAgICAgICAgICBhbnkgdGFyZ2V0cyBpdCBpcyBwbGFubmluZyB0byBidWlsZC4KLSAgICAgICAgICAgICAgICBCaXRCYWtlIGRvZXMgYSBmYXN0IGNoZWNrIHRvIHNlZSBpZiB0aGUgb2JqZWN0IGV4aXN0cyByYXRoZXIKLSAgICAgICAgICAgICAgICB0aGFuIGEgY29tcGxldGUgZG93bmxvYWQuCi0gICAgICAgICAgICAgICAgSWYgbm90aGluZyBleGlzdHMsIHRoZSBzZWNvbmQgcGhhc2UsIHdoaWNoIGlzIHRoZSBzZXRzY2VuZQotICAgICAgICAgICAgICAgIHN0YWdlLCBjb21wbGV0ZXMgYW5kIHRoZSBtYWluIGJ1aWxkIHByb2NlZWRzLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBJZiBvYmplY3RzIGFyZSBmb3VuZCBpbiB0aGUgc3N0YXRlIGNhY2hlLCB0aGUgT3BlbkVtYmVkZGVkCi0gICAgICAgICAgICAgICAgYnVpbGQgc3lzdGVtIHdvcmtzIGJhY2t3YXJkcyBmcm9tIHRoZSBlbmQgdGFyZ2V0cyBzcGVjaWZpZWQKLSAgICAgICAgICAgICAgICBieSB0aGUgdXNlci4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgYW4gaW1hZ2UgaXMgYmVpbmcgYnVpbHQsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKLSAgICAgICAgICAgICAgICBzeXN0ZW0gZmlyc3QgbG9va3MgZm9yIHRoZSBwYWNrYWdlcyBuZWVkZWQgZm9yIHRoYXQgaW1hZ2UgYW5kCi0gICAgICAgICAgICAgICAgdGhlIHRvb2xzIG5lZWRlZCB0byBjb25zdHJ1Y3QgYW4gaW1hZ2UuCi0gICAgICAgICAgICAgICAgSWYgdGhvc2UgYXJlIGF2YWlsYWJsZSwgdGhlIGNvbXBpbGVyIGlzIG5vdCBuZWVkZWQuCi0gICAgICAgICAgICAgICAgVGh1cywgdGhlIGNvbXBpbGVyIGlzIG5vdCBldmVuIGRvd25sb2FkZWQuCi0gICAgICAgICAgICAgICAgSWYgc29tZXRoaW5nIHdhcyBmb3VuZCB0byBiZSB1bmF2YWlsYWJsZSwgb3IgdGhlIGRvd25sb2FkIG9yCi0gICAgICAgICAgICAgICAgc2V0c2NlbmUgdGFzayBmYWlscywgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdGhlbiB0cmllcwotICAgICAgICAgICAgICAgIHRvIGluc3RhbGwgZGVwZW5kZW5jaWVzLCBzdWNoIGFzIHRoZSBjb21waWxlciwgZnJvbSB0aGUgY2FjaGUuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBhdmFpbGFiaWxpdHkgb2Ygb2JqZWN0cyBpbiB0aGUgc3N0YXRlIGNhY2hlIGlzIGhhbmRsZWQgYnkKLSAgICAgICAgICAgICAgICB0aGUgZnVuY3Rpb24gc3BlY2lmaWVkIGJ5IHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyLUJCX0hBU0hDSEVDS19GVU5DVElPTic+PGZpbGVuYW1lPkJCX0hBU0hDSEVDS19GVU5DVElPTjwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgcmV0dXJucyBhIGxpc3Qgb2YgdGhlIG9iamVjdHMgdGhhdCBhcmUgYXZhaWxhYmxlLgotICAgICAgICAgICAgICAgIFRoZSBmdW5jdGlvbiBzcGVjaWZpZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXItQkJfU0VUU0NFTkVfREVQVkFMSUQnPjxmaWxlbmFtZT5CQl9TRVRTQ0VORV9ERVBWQUxJRDwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyB0aGUgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgYSBnaXZlbgotICAgICAgICAgICAgICAgIGRlcGVuZGVuY3kgbmVlZHMgdG8gYmUgZm9sbG93ZWQsIGFuZCB3aGV0aGVyIGZvciBhbnkgZ2l2ZW4KLSAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXAgdGhlIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIHBhc3NlZC4KLSAgICAgICAgICAgICAgICBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIFRydWUgb3IgRmFsc2UgdmFsdWUuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0naW1hZ2VzLWRldi1lbnZpcm9ubWVudCc+Ci0gICAgICAgIDx0aXRsZT5JbWFnZXM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGltYWdlcyBwcm9kdWNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQotICAgICAgICAgICAgYXJlIGNvbXByZXNzZWQgZm9ybXMgb2YgdGhlCi0gICAgICAgICAgICByb290IGZpbGVzeXN0ZW0gdGhhdCBhcmUgcmVhZHkgdG8gYm9vdCBvbiBhIHRhcmdldCBkZXZpY2UuCi0gICAgICAgICAgICBZb3UgY2FuIHNlZSBmcm9tIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZ2VuZXJhbC15b2N0by1lbnZpcm9ubWVudC1maWd1cmUnPmdlbmVyYWwgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCBmaWd1cmU8L2xpbms+Ci0gICAgICAgICAgICB0aGF0IEJpdEJha2Ugb3V0cHV0LCBpbiBwYXJ0LCBjb25zaXN0cyBvZiBpbWFnZXMuCi0gICAgICAgICAgICBUaGlzIHNlY3Rpb24gaXMgZ29pbmcgdG8gbG9vayBtb3JlIGNsb3NlbHkgYXQgdGhpcyBvdXRwdXQ6Ci0gICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvaW1hZ2VzLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjUuNWluIiBkZXB0aD0iNS41aW4iIC8+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEZvciBhIGxpc3Qgb2YgZXhhbXBsZSBpbWFnZXMgdGhhdCB0aGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcywKLSAgICAgICAgICAgIHNlZSB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtaW1hZ2VzJz5JbWFnZXM8L2xpbms+IiBjaGFwdGVyLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJbWFnZXMgYXJlIHdyaXR0ZW4gb3V0IHRvIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+Ci0gICAgICAgICAgICBpbnNpZGUgdGhlIDxmaWxlbmFtZT50bXAvZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+LzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBmb2xkZXIgYXMgc2hvd24gaW4gdGhlIGZpZ3VyZS4KLSAgICAgICAgICAgIFRoaXMgZm9sZGVyIGNvbnRhaW5zIGFueSBmaWxlcyBleHBlY3RlZCB0byBiZSBsb2FkZWQgb24gdGhlCi0gICAgICAgICAgICB0YXJnZXQgZGV2aWNlLgotICAgICAgICAgICAgVGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQTE9ZX0RJUic+PGZpbGVuYW1lPkRFUExPWV9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIHZhcmlhYmxlIHBvaW50cyB0byB0aGUgPGZpbGVuYW1lPmRlcGxveTwvZmlsZW5hbWU+IGRpcmVjdG9yeSwKLSAgICAgICAgICAgIHdoaWxlIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVJfSU1BR0UnPjxmaWxlbmFtZT5ERVBMT1lfRElSX0lNQUdFPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICB2YXJpYWJsZSBwb2ludHMgdG8gdGhlIGFwcHJvcHJpYXRlIGRpcmVjdG9yeSBjb250YWluaW5nIGltYWdlcyBmb3IKLSAgICAgICAgICAgIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmtlcm5lbC1pbWFnZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIEEga2VybmVsIGJpbmFyeSBmaWxlLgotICAgICAgICAgICAgICAgICAgICBUaGUgPGxpbmsgbGlua2VuZD0ndmFyLUtFUk5FTF9JTUFHRVRZUEUnPjxmaWxlbmFtZT5LRVJORUxfSU1BR0VUWVBFPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHNldHRpbmcgZGV0ZXJtaW5lcyB0aGUgbmFtaW5nIHNjaGVtZSBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgIGtlcm5lbCBpbWFnZSBmaWxlLgotICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24gdGhhdCB2YXJpYWJsZSwgdGhlIGZpbGUgY291bGQgYmVnaW4gd2l0aAotICAgICAgICAgICAgICAgICAgICBhIHZhcmlldHkgb2YgbmFtaW5nIHN0cmluZ3MuCi0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGNhbiBjb250YWluIG11bHRpcGxlIGltYWdlIGZpbGVzIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5yb290LWZpbGVzeXN0ZW0taW1hZ2U8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBSb290IGZpbGVzeXN0ZW1zIGZvciB0aGUgdGFyZ2V0IGRldmljZSAoZS5nLgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5leHQzPC9maWxlbmFtZT4gb3IgPGZpbGVuYW1lPiouYnoyPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZmlsZXMpLgotICAgICAgICAgICAgICAgICAgICBUaGUgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHNldHRpbmcgZGV0ZXJtaW5lcyB0aGUgcm9vdCBmaWxlc3lzdGVtIGltYWdlCi0gICAgICAgICAgICAgICAgICAgIHR5cGUuCi0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGNhbiBjb250YWluIG11bHRpcGxlIHJvb3QgZmlsZXN5c3RlbXMgZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmtlcm5lbC1tb2R1bGVzPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgVGFyYmFsbHMgdGhhdCBjb250YWluIGFsbCB0aGUgbW9kdWxlcyBidWlsdCBmb3IgdGhlIGtlcm5lbC4KLSAgICAgICAgICAgICAgICAgICAgS2VybmVsIG1vZHVsZSB0YXJiYWxscyBleGlzdCBmb3IgbGVnYWN5IHB1cnBvc2VzIGFuZAotICAgICAgICAgICAgICAgICAgICBjYW4gYmUgc3VwcHJlc3NlZCBieSBzZXR0aW5nIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTU9EVUxFX1RBUkJBTExfREVQTE9ZJz48ZmlsZW5hbWU+TU9EVUxFX1RBUkJBTExfREVQTE9ZPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvICIwIi4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXBsb3kvaW1hZ2VzLzxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgY2FuIGNvbnRhaW4gbXVsdGlwbGUga2VybmVsIG1vZHVsZSB0YXJiYWxscwotICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIG1hY2hpbmUuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT48cmVwbGFjZWFibGU+Ym9vdGxvYWRlcnM8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBCb290bG9hZGVycyBzdXBwb3J0aW5nIHRoZSBpbWFnZSwgaWYgYXBwbGljYWJsZSB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IG1hY2hpbmUuCi0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGNhbiBjb250YWluIG11bHRpcGxlIGJvb3Rsb2FkZXJzIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5zeW1saW5rczwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGVwbG95L2ltYWdlcy88cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZm9sZGVyIGNvbnRhaW5zCi0gICAgICAgICAgICAgICAgICAgIGEgc3ltYm9saWMgbGluayB0aGF0IHBvaW50cyB0byB0aGUgbW9zdCByZWNlbnRseSBidWlsdCBmaWxlCi0gICAgICAgICAgICAgICAgICAgIGZvciBlYWNoIG1hY2hpbmUuCi0gICAgICAgICAgICAgICAgICAgIFRoZXNlIGxpbmtzIG1pZ2h0IGJlIHVzZWZ1bCBmb3IgZXh0ZXJuYWwgc2NyaXB0cyB0aGF0Ci0gICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gb2J0YWluIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBlYWNoIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0nc2RrLWRldi1lbnZpcm9ubWVudCc+Ci0gICAgICAgIDx0aXRsZT5BcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBTREs8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSW4gdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnZW5lcmFsLXlvY3RvLWVudmlyb25tZW50LWZpZ3VyZSc+Z2VuZXJhbCBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IEVudmlyb25tZW50IGZpZ3VyZTwvbGluaz4sCi0gICAgICAgICAgICB0aGUgb3V0cHV0IGxhYmVsZWQgIkFwcGxpY2F0aW9uIERldmVsb3BtZW50IFNESyIgcmVwcmVzZW50cyBhbgotICAgICAgICAgICAgU0RLLgotICAgICAgICAgICAgVGhlIFNESyBnZW5lcmF0aW9uIHByb2Nlc3MgZGlmZmVycyBkZXBlbmRpbmcgb24gd2hldGhlciB5b3UgYnVpbGQKLSAgICAgICAgICAgIGEgc3RhbmRhcmQgU0RLCi0gICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+Yml0YmFrZSAtYyBwb3B1bGF0ZV9zZGs8L2ZpbGVuYW1lPiA8cmVwbGFjZWFibGU+aW1hZ2VuYW1lPC9yZXBsYWNlYWJsZT4pCi0gICAgICAgICAgICBvciBhbiBleHRlbnNpYmxlIFNESwotICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPmJpdGJha2UgLWMgcG9wdWxhdGVfc2RrX2V4dDwvZmlsZW5hbWU+IDxyZXBsYWNlYWJsZT5pbWFnZW5hbWU8L3JlcGxhY2VhYmxlPikuCi0gICAgICAgICAgICBUaGlzIHNlY3Rpb24gaXMgZ29pbmcgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoaXMgb3V0cHV0OgotICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3Nkay5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI5aW4iIGRlcHRoPSI3LjI1aW4iIC8+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBzcGVjaWZpYyBmb3JtIG9mIHRoaXMgb3V0cHV0IGlzIGEgc2VsZi1leHRyYWN0aW5nCi0gICAgICAgICAgICBTREsgaW5zdGFsbGVyICg8ZmlsZW5hbWU+Ki5zaDwvZmlsZW5hbWU+KSB0aGF0LCB3aGVuIHJ1biwKLSAgICAgICAgICAgIGluc3RhbGxzIHRoZSBTREssIHdoaWNoIGNvbnNpc3RzIG9mIGEgY3Jvc3MtZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgIHRvb2xjaGFpbiwgYSBzZXQgb2YgbGlicmFyaWVzIGFuZCBoZWFkZXJzLCBhbmQgYW4gU0RLCi0gICAgICAgICAgICBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQuCi0gICAgICAgICAgICBSdW5uaW5nIHRoaXMgaW5zdGFsbGVyIGVzc2VudGlhbGx5IHNldHMgdXAgeW91cgotICAgICAgICAgICAgY3Jvc3MtZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCi0gICAgICAgICAgICBZb3UgY2FuIHRoaW5rIG9mIHRoZSBjcm9zcy10b29sY2hhaW4gYXMgdGhlICJob3N0IgotICAgICAgICAgICAgcGFydCBiZWNhdXNlIGl0IHJ1bnMgb24gdGhlIFNESyBtYWNoaW5lLgotICAgICAgICAgICAgWW91IGNhbiB0aGluayBvZiB0aGUgbGlicmFyaWVzIGFuZCBoZWFkZXJzIGFzIHRoZSAidGFyZ2V0IgotICAgICAgICAgICAgcGFydCBiZWNhdXNlIHRoZXkgYXJlIGJ1aWx0IGZvciB0aGUgdGFyZ2V0IGhhcmR3YXJlLgotICAgICAgICAgICAgVGhlIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBpcyBhZGRlZCBzbyB0aGF0IHlvdSBjYW4gaW5pdGlhbGl6ZQotICAgICAgICAgICAgdGhlIGVudmlyb25tZW50IGJlZm9yZSB1c2luZyB0aGUgdG9vbHMuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHN1cHBvcnRzIHNldmVyYWwgbWV0aG9kcyBieSB3aGljaCB5b3UgY2FuCi0gICAgICAgICAgICAgICAgICAgIHNldCB1cCB0aGlzIGNyb3NzLWRldmVsb3BtZW50IGVudmlyb25tZW50LgotICAgICAgICAgICAgICAgICAgICBUaGVzZSBtZXRob2RzIGluY2x1ZGUgZG93bmxvYWRpbmcgcHJlLWJ1aWx0IFNESyBpbnN0YWxsZXJzCi0gICAgICAgICAgICAgICAgICAgIG9yIGJ1aWxkaW5nIGFuZCBpbnN0YWxsaW5nIHlvdXIgb3duIFNESyBpbnN0YWxsZXIuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGJhY2tncm91bmQgaW5mb3JtYXRpb24gb24gY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWlucwotICAgICAgICAgICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluLWdlbmVyYXRpb24nPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbiBHZW5lcmF0aW9uPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gc2V0dGluZyB1cCBhIGNyb3NzLWRldmVsb3BtZW50Ci0gICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7Jz5Zb2N0byBQcm9qZWN0IFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L25vdGU+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgT25jZSBidWlsdCwgdGhlIFNESyBpbnN0YWxsZXJzIGFyZSB3cml0dGVuIG91dCB0byB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3kvc2RrPC9maWxlbmFtZT4gZm9sZGVyIGluc2lkZSB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgotICAgICAgICAgICAgYXMgc2hvd24gaW4gdGhlIGZpZ3VyZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgc2VjdGlvbi4KLSAgICAgICAgICAgIERlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiBTREssIHNldmVyYWwgdmFyaWFibGVzIGV4aXN0IHRoYXQgaGVscAotICAgICAgICAgICAgY29uZmlndXJlIHRoZXNlIGZpbGVzLgotICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHNob3dzIHRoZSB2YXJpYWJsZXMgYXNzb2NpYXRlZCB3aXRoIGEgc3RhbmRhcmQKLSAgICAgICAgICAgIFNESzoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSJz48ZmlsZW5hbWU+REVQTE9ZX0RJUjwvZmlsZW5hbWU+PC9saW5rPjoKLSAgICAgICAgICAgICAgICAgICAgUG9pbnRzIHRvIHRoZSA8ZmlsZW5hbWU+ZGVwbG95PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU0RLTUFDSElORSc+PGZpbGVuYW1lPlNES01BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz46Ci0gICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBtYWNoaW5lCi0gICAgICAgICAgICAgICAgICAgIG9uIHdoaWNoIHRoZSBjcm9zcy1kZXZlbG9wbWVudCB0b29scyBhcmUgcnVuIHRvCi0gICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBwYWNrYWdlcyBmb3IgdGhlIHRhcmdldCBoYXJkd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1TREtJTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPlNES0lNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBMaXN0cyB0aGUgZmVhdHVyZXMgdG8gaW5jbHVkZSBpbiB0aGUgInRhcmdldCIgcGFydAotICAgICAgICAgICAgICAgICAgICBvZiB0aGUgU0RLLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVRPT0xDSEFJTl9IT1NUX1RBU0snPjxmaWxlbmFtZT5UT09MQ0hBSU5fSE9TVF9UQVNLPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBMaXN0cyBwYWNrYWdlcyB0aGF0IG1ha2UgdXAgdGhlIGhvc3QKLSAgICAgICAgICAgICAgICAgICAgcGFydCBvZiB0aGUgU0RLIChpLmUuIHRoZSBwYXJ0IHRoYXQgcnVucyBvbgotICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPlNES01BQ0hJTkU8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHVzZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtYyBwb3B1bGF0ZV9zZGsgPHJlcGxhY2VhYmxlPmltYWdlbmFtZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgdG8gY3JlYXRlIHRoZSBTREssIGEgc2V0IG9mIGRlZmF1bHQgcGFja2FnZXMKLSAgICAgICAgICAgICAgICAgICAgYXBwbHkuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgYWxsb3dzIHlvdSB0byBhZGQgbW9yZSBwYWNrYWdlcy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1UT09MQ0hBSU5fVEFSR0VUX1RBU0snPjxmaWxlbmFtZT5UT09MQ0hBSU5fVEFSR0VUX1RBU0s8L2ZpbGVuYW1lPjwvbGluaz46Ci0gICAgICAgICAgICAgICAgICAgIExpc3RzIHBhY2thZ2VzIHRoYXQgbWFrZSB1cCB0aGUgdGFyZ2V0IHBhcnQKLSAgICAgICAgICAgICAgICAgICAgb2YgdGhlIFNESyAoaS5lLiB0aGUgcGFydCBidWlsdCBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgIHRhcmdldCBoYXJkd2FyZSkuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU0RLUEFUSCc+PGZpbGVuYW1lPlNES1BBVEg8L2ZpbGVuYW1lPjwvbGluaz46Ci0gICAgICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIGRlZmF1bHQgU0RLIGluc3RhbGxhdGlvbiBwYXRoIG9mZmVyZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgIGluc3RhbGxhdGlvbiBzY3JpcHQuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICBUaGlzIG5leHQgbGlzdCwgc2hvd3MgdGhlIHZhcmlhYmxlcyBhc3NvY2lhdGVkIHdpdGggYW4gZXh0ZW5zaWJsZQotICAgICAgICAgICAgU0RLOgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVInPjxmaWxlbmFtZT5ERVBMT1lfRElSPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBQb2ludHMgdG8gdGhlIDxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU0RLX0VYVF9UWVBFJz48ZmlsZW5hbWU+U0RLX0VYVF9UWVBFPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBDb250cm9scyB3aGV0aGVyIG9yIG5vdCBzaGFyZWQgc3RhdGUgYXJ0aWZhY3RzIGFyZSBjb3BpZWQKLSAgICAgICAgICAgICAgICAgICAgaW50byB0aGUgZXh0ZW5zaWJsZSBTREsuCi0gICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIGFsbCByZXF1aXJlZCBzaGFyZWQgc3RhdGUgYXJ0aWZhY3RzIGFyZSBjb3BpZWQKLSAgICAgICAgICAgICAgICAgICAgaW50byB0aGUgU0RLLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVNES19JTkNMVURFX1BLR0RBVEEnPjxmaWxlbmFtZT5TREtfSU5DTFVERV9QS0dEQVRBPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgd2hldGhlciBvciBub3QgcGFja2FnZWRhdGEgd2lsbCBiZSBpbmNsdWRlZCBpbgotICAgICAgICAgICAgICAgICAgICB0aGUgZXh0ZW5zaWJsZSBTREsgZm9yIGFsbCByZWNpcGVzIGluIHRoZSAid29ybGQiIHRhcmdldC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9J3Zhci1TREtfSU5DTFVERV9UT09MQ0hBSU4nPjxmaWxlbmFtZT5TREtfSU5DTFVERV9UT09MQ0hBSU48L2ZpbGVuYW1lPjwvbGluaz46Ci0gICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB3aGV0aGVyIG9yIG5vdCB0aGUgdG9vbGNoYWluIHdpbGwgYmUgaW5jbHVkZWQKLSAgICAgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyB0aGUgZXh0ZW5zaWJsZSBTREsuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU0RLX0xPQ0FMX0NPTkZfV0hJVEVMSVNUJz48ZmlsZW5hbWU+U0RLX0xPQ0FMX0NPTkZfV0hJVEVMSVNUPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgdmFyaWFibGVzIGFsbG93ZWQgdGhyb3VnaCBmcm9tIHRoZSBidWlsZCBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBpbnRvIHRoZSBleHRlbnNpYmxlIFNESyBjb25maWd1cmF0aW9uLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0ndmFyLVNES19MT0NBTF9DT05GX0JMQUNLTElTVCc+PGZpbGVuYW1lPlNES19MT0NBTF9DT05GX0JMQUNLTElTVDwvZmlsZW5hbWU+PC9saW5rPjoKLSAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIHZhcmlhYmxlcyBub3QgYWxsb3dlZCB0aHJvdWdoIGZyb20gdGhlIGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgIHN5c3RlbSBjb25maWd1cmF0aW9uIGludG8gdGhlIGV4dGVuc2libGUgU0RLIGNvbmZpZ3VyYXRpb24uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSd2YXItU0RLX0lOSEVSSVRfQkxBQ0tMSVNUJz48ZmlsZW5hbWU+U0RLX0lOSEVSSVRfQkxBQ0tMSVNUPC9maWxlbmFtZT48L2xpbms+OgotICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgY2xhc3NlcyB0byByZW1vdmUgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlOSEVSSVQnPjxmaWxlbmFtZT5JTkhFUklUPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlIGdsb2JhbGx5IHdpdGhpbiB0aGUgZXh0ZW5zaWJsZSBTREsgY29uZmlndXJhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLTwvc2VjdGlvbj4KLQotPC9jaGFwdGVyPgotPCEtLQotdmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAotLS0+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1kZXZ0b29sLXJlZmVyZW5jZS54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1kZXZ0b29sLXJlZmVyZW5jZS54bWwKaW5kZXggZTI5YmY4OS4uYjk3NGQwZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZGV2dG9vbC1yZWZlcmVuY2UueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWRldnRvb2wtcmVmZXJlbmNlLnhtbApAQCAtMjAsNyArMjAsNyBAQAogICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gYXBwbHkgdGhlIGNvbW1hbmQgd2hlbiB1c2luZyB0aGUKICAgICAgICAgZXh0ZW5zaWJsZSBTREssIHNlZSB0aGUKICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1leHRlbnNpYmxlJz5Vc2luZyB0aGUgRXh0ZW5zaWJsZSBTREs8L3VsaW5rPiIKLSAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlCisgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQogICAgICAgICBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsLgogICAgIDwvcGFyYT4KIApAQCAtMzUsNTkgKzM1LDUxIEBACiAgICAgICAgICAgICB0aGUgY29tbWFuZHM6CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCAtLWhlbHAKLSAgICAgdXNhZ2U6IGRldnRvb2wgYWRkIFstaF0gWy0tc2FtZS1kaXIgfCAtLW5vLXNhbWUtZGlyXSBbLS1mZXRjaCBVUkldCi0gICAgICAgICAgICAgICAgICAgICAgICBbLS1mZXRjaC1kZXZdIFstLXZlcnNpb24gVkVSU0lPTl0gWy0tbm8tZ2l0XQotICAgICAgICAgICAgICAgICAgICAgICAgWy0tc3JjcmV2IFNSQ1JFViB8IC0tYXV0b3Jldl0gWy0tc3JjYnJhbmNoIFNSQ0JSQU5DSF0KLSAgICAgICAgICAgICAgICAgICAgICAgIFstLWJpbmFyeV0gWy0tYWxzby1uYXRpdmVdIFstLXNyYy1zdWJkaXIgU1VCRElSXQotICAgICAgICAgICAgICAgICAgICAgICAgWy0tbWlycm9yc10gWy0tcHJvdmlkZXMgUFJPVklERVNdCi0gICAgICAgICAgICAgICAgICAgICAgICBbcmVjaXBlbmFtZV0gW3NyY3RyZWVdIFtmZXRjaHVyaV0KKyAgICAgTk9URTogU3RhcnRpbmcgYml0YmFrZSBzZXJ2ZXIuLi4KKyAgICAgdXNhZ2U6IGRldnRvb2wgWy0tYmFzZXBhdGggQkFTRVBBVEhdIFstLWJicGF0aCBCQlBBVEhdIFstZF0gWy1xXQorICAgICAgICAgICAgICAgICAgICBbLS1jb2xvciBDT0xPUl0gWy1oXQorICAgICAgICAgICAgICAgICAgICAmbHQ7c3ViY29tbWFuZCZndDsgLi4uCiAKLSAgICAgQWRkcyBhIG5ldyByZWNpcGUgdG8gdGhlIHdvcmtzcGFjZSB0byBidWlsZCBhIHNwZWNpZmllZCBzb3VyY2UgdHJlZS4gQ2FuCi0gICAgIG9wdGlvbmFsbHkgZmV0Y2ggYSByZW1vdGUgVVJJIGFuZCB1bnBhY2sgaXQgdG8gY3JlYXRlIHRoZSBzb3VyY2UgdHJlZS4KLQotICAgICBhcmd1bWVudHM6Ci0gICAgICAgcmVjaXBlbmFtZSAgICAgICAgICAgIE5hbWUgZm9yIG5ldyByZWNpcGUgdG8gYWRkIChqdXN0IG5hbWUgLSBubyB2ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoIG9yIGV4dGVuc2lvbikuIElmIG5vdCBzcGVjaWZpZWQsIHdpbGwgYXR0ZW1wdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhdXRvLWRldGVjdCBpdC4KLSAgICAgICBzcmN0cmVlICAgICAgICAgICAgICAgUGF0aCB0byBleHRlcm5hbCBzb3VyY2UgdHJlZS4gSWYgbm90IHNwZWNpZmllZCwgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcnkgb2YKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL2hvbWUvPHJlcGxhY2VhYmxlPnVzZXI8L3JlcGxhY2VhYmxlPi9wb2t5L2J1aWxkL3dvcmtzcGFjZS9zb3VyY2VzIHdpbGwgYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlZC4KLSAgICAgICBmZXRjaHVyaSAgICAgICAgICAgICAgRmV0Y2ggdGhlIHNwZWNpZmllZCBVUkkgYW5kIGV4dHJhY3QgaXQgdG8gY3JlYXRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UgdHJlZQorICAgICBPcGVuRW1iZWRkZWQgZGV2ZWxvcG1lbnQgdG9vbAogCiAgICAgIG9wdGlvbnM6Ci0gICAgICAgLWgsIC0taGVscCAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKLSAgICAgICAtLXNhbWUtZGlyLCAtcyAgICAgICAgQnVpbGQgaW4gc2FtZSBkaXJlY3RvcnkgYXMgc291cmNlCi0gICAgICAgLS1uby1zYW1lLWRpciAgICAgICAgIEZvcmNlIGJ1aWxkIGluIGEgc2VwYXJhdGUgYnVpbGQgZGlyZWN0b3J5Ci0gICAgICAgLS1mZXRjaCBVUkksIC1mIFVSSSAgIEZldGNoIHRoZSBzcGVjaWZpZWQgVVJJIGFuZCBleHRyYWN0IGl0IHRvIGNyZWF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc291cmNlIHRyZWUgKGRlcHJlY2F0ZWQgLSBwYXNzIGFzIHBvc2l0aW9uYWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQgaW5zdGVhZCkKLSAgICAgICAtLWZldGNoLWRldiAgICAgICAgICAgRm9yIG5wbSwgYWxzbyBmZXRjaCBkZXZEZXBlbmRlbmNpZXMKLSAgICAgICAtLXZlcnNpb24gVkVSU0lPTiwgLVYgVkVSU0lPTgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIHRvIHVzZSB3aXRoaW4gcmVjaXBlIChQVikKLSAgICAgICAtLW5vLWdpdCwgLWcgICAgICAgICAgSWYgZmV0Y2hpbmcgc291cmNlLCBkbyBub3Qgc2V0IHVwIHNvdXJjZSB0cmVlIGFzIGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2l0IHJlcG9zaXRvcnkKLSAgICAgICAtLXNyY3JldiBTUkNSRVYsIC1TIFNSQ1JFVgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2UgcmV2aXNpb24gdG8gZmV0Y2ggaWYgZmV0Y2hpbmcgZnJvbSBhbiBTQ00KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjaCBhcyBnaXQgKGRlZmF1bHQgbGF0ZXN0KQotICAgICAgIC0tYXV0b3JldiwgLWEgICAgICAgICBXaGVuIGZldGNoaW5nIGZyb20gYSBnaXQgcmVwb3NpdG9yeSwgc2V0IFNSQ1JFViBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVjaXBlIHRvIGEgZmxvYXRpbmcgcmV2aXNpb24gaW5zdGVhZCBvZiBmaXhlZAotICAgICAgIC0tc3JjYnJhbmNoIFNSQ0JSQU5DSCwgLUIgU1JDQlJBTkNICi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJyYW5jaCBpbiBzb3VyY2UgcmVwb3NpdG9yeSBpZiBmZXRjaGluZyBmcm9tIGFuIFNDTQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNoIGFzIGdpdCAoZGVmYXVsdCBtYXN0ZXIpCi0gICAgICAgLS1iaW5hcnksIC1iICAgICAgICAgIFRyZWF0IHRoZSBzb3VyY2UgdHJlZSBhcyBzb21ldGhpbmcgdGhhdCBzaG91bGQgYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIHZlcmJhdGltIChubyBjb21waWxhdGlvbiwgc2FtZSBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlKS4gVXNlZnVsIHdpdGggYmluYXJ5IHBhY2thZ2VzIGUuZy4gUlBNcy4KLSAgICAgICAtLWFsc28tbmF0aXZlICAgICAgICAgQWxzbyBhZGQgbmF0aXZlIHZhcmlhbnQgKGkuZS4gc3VwcG9ydCBidWlsZGluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgZm9yIHRoZSBidWlsZCBob3N0IGFzIHdlbGwgYXMgdGhlIHRhcmdldAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lKQotICAgICAgIC0tc3JjLXN1YmRpciBTVUJESVIgICBTcGVjaWZ5IHN1YmRpcmVjdG9yeSB3aXRoaW4gc291cmNlIHRyZWUgdG8gdXNlCi0gICAgICAgLS1taXJyb3JzICAgICAgICAgICAgIEVuYWJsZSBQUkVNSVJST1JTIGFuZCBNSVJST1JTIGZvciBzb3VyY2UgdHJlZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZXRjaGluZyAoZGlzYWJsZSBieSBkZWZhdWx0KS4KLSAgICAgICAtLXByb3ZpZGVzIFBST1ZJREVTLCAtcCBQUk9WSURFUwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZ5IGFuIGFsaWFzIGZvciB0aGUgaXRlbSBwcm92aWRlZCBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlLiBFLmcuIHZpcnR1YWwvbGliZ2wKKyAgICAgICAtLWJhc2VwYXRoIEJBU0VQQVRIICBCYXNlIGRpcmVjdG9yeSBvZiBTREsgLyBidWlsZCBkaXJlY3RvcnkKKyAgICAgICAtLWJicGF0aCBCQlBBVEggICAgICBFeHBsaWNpdGx5IHNwZWNpZnkgdGhlIEJCUEFUSCwgcmF0aGVyIHRoYW4gZ2V0dGluZyBpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIG1ldGFkYXRhCisgICAgICAgLWQsIC0tZGVidWcgICAgICAgICAgRW5hYmxlIGRlYnVnIG91dHB1dAorICAgICAgIC1xLCAtLXF1aWV0ICAgICAgICAgIFByaW50IG9ubHkgZXJyb3JzCisgICAgICAgLS1jb2xvciBDT0xPUiAgICAgICAgQ29sb3JpemUgb3V0cHV0ICh3aGVyZSBDT0xPUiBpcyBhdXRvLCBhbHdheXMsIG5ldmVyKQorICAgICAgIC1oLCAtLWhlbHAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKKworICAgICBzdWJjb21tYW5kczoKKyAgICAgICBCZWdpbm5pbmcgd29yayBvbiBhIHJlY2lwZToKKyAgICAgICAgIGFkZCAgICAgICAgICAgICAgICAgIEFkZCBhIG5ldyByZWNpcGUKKyAgICAgICAgIG1vZGlmeSAgICAgICAgICAgICAgIE1vZGlmeSB0aGUgc291cmNlIGZvciBhbiBleGlzdGluZyByZWNpcGUKKyAgICAgICAgIHVwZ3JhZGUgICAgICAgICAgICAgIFVwZ3JhZGUgYW4gZXhpc3RpbmcgcmVjaXBlCisgICAgICAgR2V0dGluZyBpbmZvcm1hdGlvbjoKKyAgICAgICAgIHN0YXR1cyAgICAgICAgICAgICAgIFNob3cgd29ya3NwYWNlIHN0YXR1cworICAgICAgICAgc2VhcmNoICAgICAgICAgICAgICAgU2VhcmNoIGF2YWlsYWJsZSByZWNpcGVzCisgICAgICAgICBsYXRlc3QtdmVyc2lvbiAgICAgICBSZXBvcnQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGFuIGV4aXN0aW5nIHJlY2lwZQorICAgICAgIFdvcmtpbmcgb24gYSByZWNpcGUgaW4gdGhlIHdvcmtzcGFjZToKKyAgICAgICAgIGJ1aWxkICAgICAgICAgICAgICAgIEJ1aWxkIGEgcmVjaXBlCisgICAgICAgICByZW5hbWUgICAgICAgICAgICAgICBSZW5hbWUgYSByZWNpcGUgZmlsZSBpbiB0aGUgd29ya3NwYWNlCisgICAgICAgICBlZGl0LXJlY2lwZSAgICAgICAgICBFZGl0IGEgcmVjaXBlIGZpbGUKKyAgICAgICAgIGZpbmQtcmVjaXBlICAgICAgICAgIEZpbmQgYSByZWNpcGUgZmlsZQorICAgICAgICAgY29uZmlndXJlLWhlbHAgICAgICAgR2V0IGhlbHAgb24gY29uZmlndXJlIHNjcmlwdCBvcHRpb25zCisgICAgICAgICB1cGRhdGUtcmVjaXBlICAgICAgICBBcHBseSBjaGFuZ2VzIGZyb20gZXh0ZXJuYWwgc291cmNlIHRyZWUgdG8gcmVjaXBlCisgICAgICAgICByZXNldCAgICAgICAgICAgICAgICBSZW1vdmUgYSByZWNpcGUgZnJvbSB5b3VyIHdvcmtzcGFjZQorICAgICAgICAgZmluaXNoICAgICAgICAgICAgICAgRmluaXNoIHdvcmtpbmcgb24gYSByZWNpcGUgaW4geW91ciB3b3Jrc3BhY2UKKyAgICAgICBUZXN0aW5nIGNoYW5nZXMgb24gdGFyZ2V0OgorICAgICAgICAgZGVwbG95LXRhcmdldCAgICAgICAgRGVwbG95IHJlY2lwZSBvdXRwdXQgZmlsZXMgdG8gbGl2ZSB0YXJnZXQgbWFjaGluZQorICAgICAgICAgdW5kZXBsb3ktdGFyZ2V0ICAgICAgVW5kZXBsb3kgcmVjaXBlIG91dHB1dCBmaWxlcyBpbiBsaXZlIHRhcmdldCBtYWNoaW5lCisgICAgICAgICBidWlsZC1pbWFnZSAgICAgICAgICBCdWlsZCBpbWFnZSBpbmNsdWRpbmcgd29ya3NwYWNlIHJlY2lwZSBwYWNrYWdlcworICAgICAgIEFkdmFuY2VkOgorICAgICAgICAgY3JlYXRlLXdvcmtzcGFjZSAgICAgU2V0IHVwIHdvcmtzcGFjZSBpbiBhbiBhbHRlcm5hdGl2ZSBsb2NhdGlvbgorICAgICAgICAgZXhwb3J0ICAgICAgICAgICAgICAgRXhwb3J0IHdvcmtzcGFjZSBpbnRvIGEgdGFyIGFyY2hpdmUKKyAgICAgICAgIGltcG9ydCAgICAgICAgICAgICAgIEltcG9ydCBleHBvcnRlZCB0YXIgYXJjaGl2ZSBpbnRvIHdvcmtzcGFjZQorICAgICAgICAgZXh0cmFjdCAgICAgICAgICAgICAgRXh0cmFjdCB0aGUgc291cmNlIGZvciBhbiBleGlzdGluZyByZWNpcGUKKyAgICAgICAgIHN5bmMgICAgICAgICAgICAgICAgIFN5bmNocm9uaXplIHRoZSBzb3VyY2UgdHJlZSBmb3IgYW4gZXhpc3RpbmcgcmVjaXBlCisgICAgIFVzZSBkZXZ0b29sICZsdDtzdWJjb21tYW5kJmd0OyAtLWhlbHAgdG8gZ2V0IGhlbHAgb24gYSBzcGVjaWZpYyBjb21tYW5kCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgIDwvcGFyYT4KIApAQCAtOTcsOSArODksMTIgQEAKICAgICAgICAgICAgICAgICBuYW1lIGFuZCB1c2luZyA8ZmlsZW5hbWU+LS1oZWxwPC9maWxlbmFtZT46CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCBhZGQgLS1oZWxwCisgICAgIE5PVEU6IFN0YXJ0aW5nIGJpdGJha2Ugc2VydmVyLi4uCiAgICAgIHVzYWdlOiBkZXZ0b29sIGFkZCBbLWhdIFstLXNhbWUtZGlyIHwgLS1uby1zYW1lLWRpcl0gWy0tZmV0Y2ggVVJJXQotICAgICAgICAgICAgICAgICAgICAgICAgWy0tdmVyc2lvbiBWRVJTSU9OXSBbLS1uby1naXRdIFstLWF1dG9yZXZdIFstLWJpbmFyeV0KLSAgICAgICAgICAgICAgICAgICAgICAgIFstLWFsc28tbmF0aXZlXSBbLS1zcmMtc3ViZGlyIFNVQkRJUl0KKyAgICAgICAgICAgICAgICAgICAgICAgIFstLWZldGNoLWRldl0gWy0tdmVyc2lvbiBWRVJTSU9OXSBbLS1uby1naXRdCisgICAgICAgICAgICAgICAgICAgICAgICBbLS1zcmNyZXYgU1JDUkVWIHwgLS1hdXRvcmV2XSBbLS1zcmNicmFuY2ggU1JDQlJBTkNIXQorICAgICAgICAgICAgICAgICAgICAgICAgWy0tYmluYXJ5XSBbLS1hbHNvLW5hdGl2ZV0gWy0tc3JjLXN1YmRpciBTVUJESVJdCisgICAgICAgICAgICAgICAgICAgICAgICBbLS1taXJyb3JzXSBbLS1wcm92aWRlcyBQUk9WSURFU10KICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWNpcGVuYW1lXSBbc3JjdHJlZV0gW2ZldGNodXJpXQogCiAgICAgIEFkZHMgYSBuZXcgcmVjaXBlIHRvIHRoZSB3b3Jrc3BhY2UgdG8gYnVpbGQgYSBzcGVjaWZpZWQgc291cmNlIHRyZWUuIENhbgpAQCAtMTIzLDE4ICsxMTgsMzAgQEAKICAgICAgICAtLWZldGNoIFVSSSwgLWYgVVJJICAgRmV0Y2ggdGhlIHNwZWNpZmllZCBVUkkgYW5kIGV4dHJhY3QgaXQgdG8gY3JlYXRlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgdHJlZSAoZGVwcmVjYXRlZCAtIHBhc3MgYXMgcG9zaXRpb25hbCBhcmd1bWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkKQorICAgICAgIC0tZmV0Y2gtZGV2ICAgICAgICAgICBGb3IgbnBtLCBhbHNvIGZldGNoIGRldkRlcGVuZGVuY2llcwogICAgICAgIC0tdmVyc2lvbiBWRVJTSU9OLCAtViBWRVJTSU9OCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gdG8gdXNlIHdpdGhpbiByZWNpcGUgKFBWKQogICAgICAgIC0tbm8tZ2l0LCAtZyAgICAgICAgICBJZiBmZXRjaGluZyBzb3VyY2UsIGRvIG5vdCBzZXQgdXAgc291cmNlIHRyZWUgYXMgYSBnaXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeQorICAgICAgIC0tc3JjcmV2IFNSQ1JFViwgLVMgU1JDUkVWCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZSByZXZpc2lvbiB0byBmZXRjaCBpZiBmZXRjaGluZyBmcm9tIGFuIFNDTSBzdWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIGdpdCAoZGVmYXVsdCBsYXRlc3QpCiAgICAgICAgLS1hdXRvcmV2LCAtYSAgICAgICAgIFdoZW4gZmV0Y2hpbmcgZnJvbSBhIGdpdCByZXBvc2l0b3J5LCBzZXQgU1JDUkVWIGluIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgdG8gYSBmbG9hdGluZyByZXZpc2lvbiBpbnN0ZWFkIG9mIGZpeGVkCisgICAgICAgLS1zcmNicmFuY2ggU1JDQlJBTkNILCAtQiBTUkNCUkFOQ0gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnJhbmNoIGluIHNvdXJjZSByZXBvc2l0b3J5IGlmIGZldGNoaW5nIGZyb20gYW4gU0NNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2ggYXMgZ2l0IChkZWZhdWx0IG1hc3RlcikKICAgICAgICAtLWJpbmFyeSwgLWIgICAgICAgICAgVHJlYXQgdGhlIHNvdXJjZSB0cmVlIGFzIHNvbWV0aGluZyB0aGF0IHNob3VsZCBiZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQgdmVyYmF0aW0gKG5vIGNvbXBpbGF0aW9uLCBzYW1lIGRpcmVjdG9yeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUpLiBVc2VmdWwgd2l0aCBiaW5hcnkgcGFja2FnZXMgZS5nLiBSUE1zLgogICAgICAgIC0tYWxzby1uYXRpdmUgICAgICAgICBBbHNvIGFkZCBuYXRpdmUgdmFyaWFudCAoaS5lLiBzdXBwb3J0IGJ1aWxkaW5nIHJlY2lwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIGJ1aWxkIGhvc3QgYXMgd2VsbCBhcyB0aGUgdGFyZ2V0IG1hY2hpbmUpCiAgICAgICAgLS1zcmMtc3ViZGlyIFNVQkRJUiAgIFNwZWNpZnkgc3ViZGlyZWN0b3J5IHdpdGhpbiBzb3VyY2UgdHJlZSB0byB1c2UKKyAgICAgICAtLW1pcnJvcnMgICAgICAgICAgICAgRW5hYmxlIFBSRU1JUlJPUlMgYW5kIE1JUlJPUlMgZm9yIHNvdXJjZSB0cmVlIGZldGNoaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkaXNhYmxlIGJ5IGRlZmF1bHQpLgorICAgICAgIC0tcHJvdmlkZXMgUFJPVklERVMsIC1wIFBST1ZJREVTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZnkgYW4gYWxpYXMgZm9yIHRoZSBpdGVtIHByb3ZpZGVkIGJ5IHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEUuZy4gdmlydHVhbC9saWJnbAogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgpAQCAtMTYxLDcgKzE2OCw3IEBACiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIGF0dGljIC0gQSBkaXJlY3RvcnkgY3JlYXRlZCBpZiBkZXZ0b29sIGJlbGlldmVzIGl0IHByZXNlcnZlCisgICAgIGF0dGljIC0gQSBkaXJlY3RvcnkgY3JlYXRlZCBpZiBkZXZ0b29sIGJlbGlldmVzIGl0IG11c3QgcHJlc2VydmUKICAgICAgICAgICAgICBhbnl0aGluZyB3aGVuIHlvdSBydW4gImRldnRvb2wgcmVzZXQiLiAgRm9yIGV4YW1wbGUsIGlmIHlvdQogICAgICAgICAgICAgIHJ1biAiZGV2dG9vbCBhZGQiLCBtYWtlIGNoYW5nZXMgdG8gdGhlIHJlY2lwZSwgYW5kIHRoZW4KICAgICAgICAgICAgICBydW4gImRldnRvb2wgcmVzZXQiLCBkZXZ0b29sIHRha2VzIG5vdGljZSB0aGF0IHRoZSBmaWxlIGhhcwpAQCAtNDI2LDEyICs0MzMsMjcgQEAKICAgICAgICAgPHRpdGxlPlVwZ3JhZGluZyBhIFJlY2lwZTwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPiBjb21tYW5kCi0gICAgICAgICAgICB0byB1cGdyYWRlIGFuIGV4aXN0aW5nIHJlY2lwZSB0byBhIG5ldyB1cHN0cmVhbSB2ZXJzaW9uLgotICAgICAgICAgICAgVGhlIGNvbW1hbmQgcHV0cyB0aGUgdXBncmFkZWQgcmVjaXBlIGZpbGUgaW50byB0aGUKLSAgICAgICAgICAgIHdvcmtzcGFjZSBhbG9uZyB3aXRoIGFueSBhc3NvY2lhdGVkIGZpbGVzLCBhbmQgZXh0cmFjdHMKLSAgICAgICAgICAgIHRoZSBzb3VyY2UgdHJlZSB0byBhIHNwZWNpZmllZCBsb2NhdGlvbiBzaG91bGQgcGF0Y2hlcwotICAgICAgICAgICAgbmVlZCByZWJhc2VkIG9yIGFkZGVkIHRvIGFzIGEgcmVzdWx0IG9mIHRoZSB1cGdyYWRlLgorICAgICAgICAgICAgQXMgc29mdHdhcmUgbWF0dXJlcywgdXBzdHJlYW0gcmVjaXBlcyBhcmUgdXBncmFkZWQgdG8gbmV3ZXIKKyAgICAgICAgICAgIHZlcnNpb25zLgorICAgICAgICAgICAgQXMgYSBkZXZlbG9wZXIsIHlvdSBuZWVkIHRvIGtlZXAgeW91ciBsb2NhbCByZWNpcGVzIHVwLXRvLWRhdGUKKyAgICAgICAgICAgIHdpdGggdGhlIHVwc3RyZWFtIHZlcnNpb24gcmVsZWFzZXMuCisgICAgICAgICAgICBTZXZlcmFsIG1ldGhvZHMgZXhpc3QgYnkgd2hpY2ggeW91IGNhbiB1cGdyYWRlIHJlY2lwZXMuCisgICAgICAgICAgICBZb3UgY2FuIHJlYWQgYWJvdXQgdGhlbSBpbiB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNncy11cGdyYWRpbmctcmVjaXBlcyc+VXBncmFkaW5nIFJlY2lwZXM8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgVGhpcyBzZWN0aW9uIG92ZXJ2aWV3cyB0aGUgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+CisgICAgICAgICAgICBjb21tYW5kLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgIHVwZ3JhZGVzIGFuIGV4aXN0aW5nIHJlY2lwZSB0byBhIG1vcmUgcmVjZW50IHZlcnNpb24gb2YgdGhlCisgICAgICAgICAgICByZWNpcGUgdXBzdHJlYW0uCisgICAgICAgICAgICBUaGUgY29tbWFuZCBwdXRzIHRoZSB1cGdyYWRlZCByZWNpcGUgZmlsZSBhbG9uZyB3aXRoIGFueSBhc3NvY2lhdGVkCisgICAgICAgICAgICBmaWxlcyBpbnRvIGEgIndvcmtzcGFjZSIgYW5kLCBpZiBuZWNlc3NhcnksIGV4dHJhY3RzIHRoZSBzb3VyY2UKKyAgICAgICAgICAgIHRyZWUgdG8gYSBzcGVjaWZpZWQgbG9jYXRpb24uCisgICAgICAgICAgICBEdXJpbmcgdGhlIHVwZ3JhZGUsIHBhdGNoZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSByZWNpcGUgYXJlCisgICAgICAgICAgICByZWJhc2VkIG9yIGFkZGVkIGFzIG5lZWRlZC4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgpAQCAtNDQzLDkgKzQ2NSwyMSBAQAogICAgICAgICAgICAgdGhlIHZlcnNpb24gbnVtYmVyIHRvIHdoaWNoIHlvdSB3YW50IHRvIHVwZ3JhZGUgKGkuZS4gdGhlCiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC9saW5rPiksCiAgICAgICAgICAgICB0aGUgc291cmNlIHJldmlzaW9uIHRvIHdoaWNoIHlvdSB3YW50IHRvIHVwZ3JhZGUgKGkuZS4gdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1JDUkVWJz48ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ1JFVic+PGZpbGVuYW1lPlNSQ1JFVjwvZmlsZW5hbWU+PC9saW5rPiksCiAgICAgICAgICAgICB3aGV0aGVyIG9yIG5vdCB0byBhcHBseSBwYXRjaGVzLCBhbmQgc28gZm9ydGguCiAgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gcmVhZCBtb3JlIG9uIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHdvcmtmbG93IGluIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1kZXZ0b29sLXVzZS1kZXZ0b29sLXVwZ3JhZGUtdG8tY3JlYXRlLWEtdmVyc2lvbi1vZi10aGUtcmVjaXBlLXRoYXQtc3VwcG9ydHMtYS1uZXdlci12ZXJzaW9uLW9mLXRoZS1zb2Z0d2FyZSc+VXNlIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPiB0byBDcmVhdGUgYSBWZXJzaW9uIG9mIHRoZSBSZWNpcGUgdGhhdCBTdXBwb3J0cyBhIE5ld2VyIFZlcnNpb24gb2YgdGhlIFNvZnR3YXJlPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKKyAgICAgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCisgICAgICAgICAgICBZb3UgY2FuIGFsc28gc2VlIGFuIGV4YW1wbGUgb2YgaG93IHRvIHVzZQorICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IGluIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2dzLXVzaW5nLWRldnRvb2wtdXBncmFkZSc+VXNpbmcgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+PC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIAogICAgIDxzZWN0aW9uIGlkPSdkZXZ0b29sLXJlc2V0dGluZy1hLXJlY2lwZSc+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1mZWF0dXJlcy54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1mZWF0dXJlcy54bWwKaW5kZXggMDI4NTdkYy4uY2I3NGRmNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZmVhdHVyZXMueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWZlYXR1cmVzLnhtbApAQCAtMTYxLDkgKzE2MSw5IEBACiAgICAgICAgICAgICAgICAgICAgIHByb3RvY29scyBzdXBwb3J0LgogICAgICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVMnPjxmaWxlbmFtZT5ESVNUUk8gRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluY2x1ZGVzICJibHVldG9vdGgiLCB3aGljaCBjYXVzZXMgYmx1ZXo1Ci0gICAgICAgICAgICAgICAgICAgICAgICB0byBiZSBiYWNrZmlsbGVkIGluIGZvciBibHVldG9vdGggc3VwcG9ydC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ESVNUUk8gRkVBVFVSRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbmNsdWRlcworICAgICAgICAgICAgICAgICAgICAgICAgImJsdWV0b290aCIsIHdoaWNoIGNhdXNlcyBibHVlejUgdG8gYmUgYmFja2ZpbGxlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGJsdWV0b290aCBzdXBwb3J0LgogICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCB3YW50IGJsdWV6NSBiYWNrZmlsbGVkIGFuZCB3b3VsZCByYXRoZXIKICAgICAgICAgICAgICAgICAgICAgICAgIHVzZSBibHVlejQsIHlvdSBuZWVkIHRvIHVzZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVNfQkFDS0ZJTExfQ09OU0lERVJFRCc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEPC9maWxlbmFtZT48L2xpbms+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1pbWFnZXMueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtaW1hZ2VzLnhtbAppbmRleCBjNzUyZjk0Li4xZjk2MTg2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1pbWFnZXMueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWltYWdlcy54bWwKQEAgLTQwLDE1ICs0MCwxOSBAQAogICAgIDxwYXJhPgogICAgICAgICBGb2xsb3dpbmcgaXMgYSBsaXN0IG9mIHN1cHBvcnRlZCByZWNpcGVzOgogICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5idWlsZC1hcHBsaWFuY2UtaW1hZ2U8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICBBbiBleGFtcGxlIHZpcnR1YWwgbWFjaGluZSB0aGF0IGNvbnRhaW5zIGFsbCB0aGUgcGllY2VzIHJlcXVpcmVkIHRvCi0gICAgICAgICAgICAgICAgcnVuIGJ1aWxkcyB1c2luZyB0aGUgYnVpbGQgc3lzdGVtIGFzIHdlbGwgYXMgdGhlIGJ1aWxkIHN5c3RlbSBpdHNlbGYuCisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkLWFwcGxpYW5jZS1pbWFnZTwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgIEFuIGV4YW1wbGUgdmlydHVhbCBtYWNoaW5lIHRoYXQgY29udGFpbnMgYWxsIHRoZSBwaWVjZXMKKyAgICAgICAgICAgICAgICByZXF1aXJlZCB0byBydW4gYnVpbGRzIHVzaW5nIHRoZSBidWlsZCBzeXN0ZW0gYXMgd2VsbCBhcyB0aGUKKyAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gaXRzZWxmLgogICAgICAgICAgICAgICAgIFlvdSBjYW4gYm9vdCBhbmQgcnVuIHRoZSBpbWFnZSB1c2luZyBlaXRoZXIgdGhlCiAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy52bXdhcmUuY29tL3Byb2R1Y3RzL3BsYXllci9vdmVydmlldy5odG1sJz5WTXdhcmUgUGxheWVyPC91bGluaz4KLSAgICAgICAgICAgICAgICBvciA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LnZtd2FyZS5jb20vcHJvZHVjdHMvd29ya3N0YXRpb24vb3ZlcnZpZXcuaHRtbCc+Vk13YXJlIFdvcmtzdGF0aW9uPC91bGluaz4uCisgICAgICAgICAgICAgICAgb3IKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LnZtd2FyZS5jb20vcHJvZHVjdHMvd29ya3N0YXRpb24vb3ZlcnZpZXcuaHRtbCc+Vk13YXJlIFdvcmtzdGF0aW9uPC91bGluaz4uCiAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyBpbWFnZSwgc2VlIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbi9idWlsZC1hcHBsaWFuY2UnPkJ1aWxkIEFwcGxpYW5jZTwvdWxpbms+IHBhZ2Ugb24KLSAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCB3ZWJzaXRlLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvc29mdHdhcmUtaXRlbS9idWlsZC1hcHBsaWFuY2UvJz5CdWlsZCBBcHBsaWFuY2U8L3VsaW5rPgorICAgICAgICAgICAgICAgIHBhZ2Ugb24gdGhlIFlvY3RvIFByb2plY3Qgd2Vic2l0ZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Y29yZS1pbWFnZS1iYXNlPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgQSBjb25zb2xlLW9ubHkgaW1hZ2UgdGhhdCBmdWxseSBzdXBwb3J0cyB0aGUgdGFyZ2V0IGRldmljZSBoYXJkd2FyZS48L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Y29yZS1pbWFnZS1jbHV0dGVyPC9maWxlbmFtZT46CkBAIC0xNTEsNyArMTU1LDggQEAKICAgICAgICAgICAgICAgICBUaGlzIGltYWdlIHByb3ZpZGVzIHRoZSBXYXlsYW5kIHByb3RvY29sIGxpYnJhcmllcyBhbmQgdGhlCiAgICAgICAgICAgICAgICAgcmVmZXJlbmNlIFdlc3RvbiBjb21wb3NpdG9yLgogICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3dheWxhbmQnPldheWxhbmQ8L2xpbms+IiBzZWN0aW9uLgorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtdXNpbmctd2F5bGFuZC1hbmQtd2VzdG9uJz5Vc2luZyBXYXlsYW5kIGFuZCBXZXN0b248L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Y29yZS1pbWFnZS14MTE8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICBBIHZlcnkgYmFzaWMgWDExIGltYWdlIHdpdGggYSB0ZXJtaW5hbC4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWtpY2tzdGFydC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1raWNrc3RhcnQueG1sCmluZGV4IDFkZDM2YjIuLmE1OGY5ZDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWtpY2tzdGFydC54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYta2lja3N0YXJ0LnhtbApAQCAtMjcsMTUgKzI3LDEwIEBACiAgICAgICAgICAgICBLaWNrc3RhcnQgY29tbWFuZHMgYXJlIGJhc2VkIG9uIHRoZSBGZWRvcmEga2lja3N0YXJ0IHZlcnNpb25zIGJ1dAogICAgICAgICAgICAgd2l0aCBtb2RpZmljYXRpb25zIHRvIHJlZmxlY3QgV2ljIGNhcGFiaWxpdGllcy4KICAgICAgICAgICAgIFlvdSBjYW4gc2VlIHRoZSBvcmlnaW5hbCBkb2N1bWVudGF0aW9uIGZvciB0aG9zZSBjb21tYW5kcyBhdCB0aGUKLSAgICAgICAgICAgIGZvbGxvd2luZyBsaW5rczoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9BbmFjb25kYS9LaWNrc3RhcnQjcGFydF9vcl9wYXJ0aXRpb24nPmh0dHA6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0FuYWNvbmRhL0tpY2tzdGFydCNwYXJ0X29yX3BhcnRpdGlvbjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvQW5hY29uZGEvS2lja3N0YXJ0I2Jvb3Rsb2FkZXInPmh0dHA6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0FuYWNvbmRhL0tpY2tzdGFydCNib290bG9hZGVyPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIGZvbGxvd2luZyBsaW5rOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICA8dWxpbmsgdXJsPSdodHRwOi8vcHlraWNrc3RhcnQucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L2tpY2tzdGFydC1kb2NzLmh0bWwnPmh0dHA6Ly9weWtpY2tzdGFydC5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3Qva2lja3N0YXJ0LWRvY3MuaHRtbDwvdWxpbms+CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKQEAgLTQzLDcgKzM4LDcgQEAKICAgICAgICAgPHRpdGxlPkNvbW1hbmQ6IHBhcnQgb3IgcGFydGl0aW9uPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEVpdGhlciBvZiB0aGVzZSBjb21tYW5kcyBjcmVhdGUgYSBwYXJ0aXRpb24gb24gdGhlIHN5c3RlbSBhbmQgdXNlCisgICAgICAgICAgICBFaXRoZXIgb2YgdGhlc2UgY29tbWFuZHMgY3JlYXRlcyBhIHBhcnRpdGlvbiBvbiB0aGUgc3lzdGVtIGFuZCB1c2VzCiAgICAgICAgICAgICB0aGUgZm9sbG93aW5nIHN5bnRheDoKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgcGFydCBbPHJlcGxhY2VhYmxlPm1udHBvaW50PC9yZXBsYWNlYWJsZT5dCkBAIC01NSw3ICs1MCw3IEBACiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tbnRwb2ludDwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4gaXMKLSAgICAgICAgICAgIHdoZXJlIHRoZSBwYXJ0aXRpb24gd2lsbCBiZSBtb3VudGVkIGFuZCBtdXN0IGJlIG9mIG9uZSBvZiB0aGUKKyAgICAgICAgICAgIHdoZXJlIHRoZSBwYXJ0aXRpb24gaXMgbW91bnRlZCBhbmQgbXVzdCBiZSBpbiBvbmUgb2YgdGhlCiAgICAgICAgICAgICBmb2xsb3dpbmcgZm9ybXM6CiAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KQEAgLTY0LDcgKzU5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3dhcDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBUaGUgY3JlYXRlZCBwYXJ0aXRpb24gaXMgdXNlZCBhcyBzd2FwIHNwYWNlLgorICAgICAgICAgICAgICAgICAgICBUaGUgY3JlYXRlZCBwYXJ0aXRpb24gaXMgdXNlZCBhcyBzd2FwIHNwYWNlCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgIDwvcGFyYT4KQEAgLTc0LDEzICs2OSwyMiBAQAogICAgICAgICAgICAgcGFydGl0aW9uIHRvIGF1dG9tYXRpY2FsbHkgYmUgbW91bnRlZC4KICAgICAgICAgICAgIFdpYyBhY2hpZXZlcyB0aGlzIGJ5IGFkZGluZyBlbnRyaWVzIHRvIHRoZSBmaWxlc3lzdGVtIHRhYmxlIChmc3RhYikKICAgICAgICAgICAgIGR1cmluZyBpbWFnZSBnZW5lcmF0aW9uLgotICAgICAgICAgICAgSW4gb3JkZXIgZm9yIHdpYyB0byBnZW5lcmF0ZSBhIHZhbGlkIGZzdGFiLCB5b3UgbXVzdCBhbHNvIHByb3ZpZGUKKyAgICAgICAgICAgIEluIG9yZGVyIGZvciBXaWMgdG8gZ2VuZXJhdGUgYSB2YWxpZCBmc3RhYiwgeW91IG11c3QgYWxzbyBwcm92aWRlCiAgICAgICAgICAgICBvbmUgb2YgdGhlIDxmaWxlbmFtZT4tLW9uZHJpdmU8L2ZpbGVuYW1lPiwKICAgICAgICAgICAgIDxmaWxlbmFtZT4tLW9uZGlzazwvZmlsZW5hbWU+LCBvcgogICAgICAgICAgICAgPGZpbGVuYW1lPi0tdXNlLXV1aWQ8L2ZpbGVuYW1lPiBwYXJ0aXRpb24gb3B0aW9ucyBhcyBwYXJ0IG9mIHRoZQogICAgICAgICAgICAgY29tbWFuZC4KLSAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB1c2luZyAiLyIgYXMgdGhlIG1vdW50cG9pbnQuCi0gICAgICAgICAgICBUaGUgY29tbWFuZCB1c2VzICItLW9uZGlzayIgdG8gZm9yY2UgdGhlIHBhcnRpdGlvbiBvbnRvIHRoZQorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgVGhlIG1vdW50IHByb2dyYW0gbXVzdCB1bmRlcnN0YW5kIHRoZSBQQVJUVVVJRCBzeW50YXggeW91IHVzZQorICAgICAgICAgICAgICAgIHdpdGggPGZpbGVuYW1lPi0tdXNlLXV1aWQ8L2ZpbGVuYW1lPiBhbmQgbm9uLXJvb3QKKyAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+bW91bnRwb2ludDwvcmVwbGFjZWFibGU+LCBpbmNsdWRpbmcgc3dhcC4KKyAgICAgICAgICAgICAgICBUaGUgYnVzeWJveCB2ZXJzaW9ucyBvZiB0aGVzZSBhcHBsaWNhdGlvbiBhcmUgY3VycmVudGx5CisgICAgICAgICAgICAgICAgZXhjbHVkZWQuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCB1c2VzICIvIiBhcyB0aGUKKyAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5tb3VudHBvaW50PC9yZXBsYWNlYWJsZT4uCisgICAgICAgICAgICBUaGUgY29tbWFuZCB1c2VzIDxmaWxlbmFtZT4tLW9uZGlzazwvZmlsZW5hbWU+IHRvIGZvcmNlIHRoZQorICAgICAgICAgICAgcGFydGl0aW9uIG9udG8gdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+c2RiPC9maWxlbmFtZT4gZGlzazoKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgcGFydCAvIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBzZGIgLS1mc3R5cGU9ZXh0MyAtLWxhYmVsIHBsYXRmb3JtIC0tYWxpZ24gMTAyNApAQCAtMTAxLDE3ICsxMDUsMjYgQEAKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi0tc291cmNlPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLWZpeGVkLXNpemU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGUgZXhhY3QgcGFydGl0aW9uIHNpemUgaW4gTUJ5dGVzLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IHNwZWNpZnkgd2l0aCA8ZmlsZW5hbWU+LS1zaXplPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEFuIGVycm9yIG9jY3VycyB3aGVuIGFzc2VtYmxpbmcgdGhlIGRpc2sgaW1hZ2UgaWYgdGhlCisgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbiBkYXRhIGlzIGxhcmdlciB0aGFuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tLWZpeGVkLXNpemU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tc291cmNlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYSBXaWMtc3BlY2lmaWMgb3B0aW9uIHRoYXQgbmFtZXMgdGhlIHNvdXJjZQogICAgICAgICAgICAgICAgICAgICBvZiB0aGUgZGF0YSB0aGF0IHBvcHVsYXRlcyB0aGUgcGFydGl0aW9uLgogICAgICAgICAgICAgICAgICAgICBUaGUgbW9zdCBjb21tb24gdmFsdWUgZm9yIHRoaXMgb3B0aW9uIGlzICJyb290ZnMiLCBidXQgeW91CiAgICAgICAgICAgICAgICAgICAgIGNhbiB1c2UgYW55IHZhbHVlIHRoYXQgbWFwcyB0byBhIHZhbGlkIHNvdXJjZSBwbHVnLWluLgogICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlIHNvdXJjZSBwbHVnLWlucywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nd2ljLXBsdWctaW5zLWludGVyZmFjZSc+V2ljIFBsdWctSW5zIEludGVyZmFjZTwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjd2ljLXVzaW5nLXRoZS13aWMtcGx1Zy1pbnMtaW50ZXJmYWNlJz5Vc2luZyB0aGUgV2ljIFBsdWctSW5zIEludGVyZmFjZTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSB1c2UgPGZpbGVuYW1lPi0tc291cmNlIHJvb3RmczwvZmlsZW5hbWU+LCBXaWMKLSAgICAgICAgICAgICAgICAgICAgY3JlYXRlcyBhIHBhcnRpdGlvbiBhcyBsYXJnZSBhcyBuZWVkZWQgYW5kIHRvIGZpbGwgaXQgd2l0aAorICAgICAgICAgICAgICAgICAgICBjcmVhdGVzIGEgcGFydGl0aW9uIGFzIGxhcmdlIGFzIG5lZWRlZCBhbmQgZmlsbHMgaXQgd2l0aAogICAgICAgICAgICAgICAgICAgICB0aGUgY29udGVudHMgb2YgdGhlIHJvb3QgZmlsZXN5c3RlbSBwb2ludGVkIHRvIGJ5IHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LXI8L2ZpbGVuYW1lPiBjb21tYW5kLWxpbmUgb3B0aW9uIG9yIHRoZQogICAgICAgICAgICAgICAgICAgICBlcXVpdmFsZW50IHJvb3RmcyBkZXJpdmVkIGZyb20gdGhlIDxmaWxlbmFtZT4tZTwvZmlsZW5hbWU+CkBAIC0xMzAsOCArMTQzLDggQEAKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1yPC9maWxlbmFtZT4gY29tbWFuZC1saW5lIG9wdGlvbiBvciB0aGUKICAgICAgICAgICAgICAgICAgICAgZXF1aXZhbGVudCByb290ZnMgZGVyaXZlZCBmcm9tIHRoZSA8ZmlsZW5hbWU+LWU8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBjb21tYW5kLWxpbmUgb3B0aW9uLgotICAgICAgICAgICAgICAgICAgICBFeGFjdGx5IHdoYXQgdGhvc2UgY29udGVudHMgYW5kIGZpbGVzeXN0ZW0gdHlwZSBlbmQgdXAKLSAgICAgICAgICAgICAgICAgICAgYmVpbmcgYXJlIGRlcGVuZGVudCBvbiB0aGUgZ2l2ZW4gcGx1Zy1pbiBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgRXhhY3RseSB3aGF0IHRob3NlIGNvbnRlbnRzIGFyZSBhbmQgZmlsZXN5c3RlbSB0eXBlIHVzZWQgYXJlCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVudCBvbiB0aGUgZ2l2ZW4gcGx1Zy1pbiBpbXBsZW1lbnRhdGlvbi4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBkbyBub3QgdXNlIHRoZSA8ZmlsZW5hbWU+LS1zb3VyY2U8L2ZpbGVuYW1lPgpAQCAtMTczLDcgKzE4Niw3IEBACiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1mc29wdGlvbnM8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBmcmVlLWZvcm0gc3RyaW5nIG9mIG9wdGlvbnMgdG8gYmUgdXNlZCB3aGVuCiAgICAgICAgICAgICAgICAgICAgIG1vdW50aW5nIHRoZSBmaWxlc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICBUaGlzIHN0cmluZyB3aWxsIGJlIGNvcGllZCBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgICBUaGlzIHN0cmluZyBpcyBjb3BpZWQgaW50byB0aGUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ldGMvZnN0YWI8L2ZpbGVuYW1lPiBmaWxlIG9mIHRoZSBpbnN0YWxsZWQKICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIGFuZCBzaG91bGQgYmUgZW5jbG9zZWQgaW4gcXVvdGVzLgogICAgICAgICAgICAgICAgICAgICBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCBzdHJpbmcgaXMgImRlZmF1bHRzIi4KQEAgLTE5MSw5ICsyMDQsOSBAQAogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1hbGlnbiAoaW4gS0J5dGVzKTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIGEgV2ljLXNwZWNpZmljIG9wdGlvbiB0aGF0IHNheXMgdG8gc3RhcnQgYQotICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb24gb24gYW4gPHJlcGxhY2VhYmxlPng8L3JlcGxhY2VhYmxlPiBLQnl0ZXMKLSAgICAgICAgICAgICAgICAgICAgYm91bmRhcnkuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIGEgV2ljLXNwZWNpZmljIG9wdGlvbiB0aGF0IHNheXMgdG8gc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9ucyBvbiBib3VuZGFyaWVzIGdpdmVuCisgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT54PC9yZXBsYWNlYWJsZT4gS0J5dGVzLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1uby10YWJsZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CkBAIC0yMDMsMTAgKzIxNiwxNyBAQAogICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgcGFydGl0aW9uIGlzIG5vdCBhZGRlZCB0byB0aGUgcGFydGl0aW9uIHRhYmxlLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+LS1leGNsdWRlLXBhdGg8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBhIFdpYy1zcGVjaWZpYyBvcHRpb24gdGhhdCBleGNsdWRlcyB0aGUgZ2l2ZW4KKyAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmUgcGF0aCBmcm9tIHRoZSByZXN1bHRpbmcgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIG9ubHkgZWZmZWN0aXZlIHdpdGggdGhlIHJvb3RmcyBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgcGx1Zy1pbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tZXh0cmEtc3BhY2U8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBhIFdpYy1zcGVjaWZpYyBvcHRpb24gdGhhdCBhZGRzIGV4dHJhIHNwYWNlCiAgICAgICAgICAgICAgICAgICAgIGFmdGVyIHRoZSBzcGFjZSBmaWxsZWQgYnkgdGhlIGNvbnRlbnQgb2YgdGhlIHBhcnRpdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGZpbmFsIHNpemUgY2FuIGdvIGJleW9uZCB0aGUgc2l6ZSBzcGVjaWZpZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIFRoZSBmaW5hbCBzaXplIGNhbiBleGNlZWQgdGhlIHNpemUgc3BlY2lmaWVkIGJ5IHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LS1zaXplPC9maWxlbmFtZT4gb3B0aW9uLgogICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAxMCBNYnl0ZXMuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgpAQCAtMjE4LDYgKzIzOCwxMSBAQAogICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAiMS4zIi4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tcGFydC1uYW1lPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYSBXaWMtc3BlY2lmaWMgb3B0aW9uIHRoYXQgc3BlY2lmaWVzIGEgbmFtZQorICAgICAgICAgICAgICAgICAgICBmb3IgR1BUIHBhcnRpdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT4tLXBhcnQtdHlwZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIGEgV2ljLXNwZWNpZmljIG9wdGlvbiB0aGF0IHNwZWNpZmllcyB0aGUKICAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9uIHR5cGUgZ2xvYmFsbHkgdW5pcXVlIGlkZW50aWZpZXIgKEdVSUQpIGZvciBHUFQKQEAgLTIzNyw2ICsyNjIsMzEgQEAKICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYSBXaWMtc3BlY2lmaWMgb3B0aW9uIHRoYXQgc3BlY2lmaWVzIHRoZQogICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb24gVVVJRC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tZnN1dWlkPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYSBXaWMtc3BlY2lmaWMgb3B0aW9uIHRoYXQgc3BlY2lmaWVzIHRoZQorICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIFVVSUQuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZ2VuZXJhdGUgb3IgbW9kaWZ5CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1XS1NfRklMRSc+PGZpbGVuYW1lPldLU19GSUxFPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHdpdGggdGhpcyBvcHRpb24gaWYgYSBwcmVjb25maWd1cmVkIGZpbGVzeXN0ZW0gVVVJRCBpcworICAgICAgICAgICAgICAgICAgICBhZGRlZCB0byB0aGUga2VybmVsIGNvbW1hbmQgbGluZSBpbiB0aGUgYm9vdGxvYWRlcgorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGJlZm9yZSB5b3UgcnVuIFdpYy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tc3lzdGVtLWlkPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgYSBXaWMtc3BlY2lmaWMgb3B0aW9uIHRoYXQgc3BlY2lmaWVzIHRoZQorICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb24gc3lzdGVtIElELCB3aGljaCBpcyBhIG9uZSBieXRlIGxvbmcsIGhleGFkZWNpbWFsCisgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlciB3aXRoIG9yIHdpdGhvdXQgdGhlIDB4IHByZWZpeC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPi0tbWtmcy1leHRyYW9wdHM8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBzcGVjaWZpZXMgYWRkaXRpb25hbCBvcHRpb25zIHRvIHBhc3MgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ta2ZzPC9maWxlbmFtZT4gdXRpbGl0eS4KKyAgICAgICAgICAgICAgICAgICAgU29tZSBkZWZhdWx0IG9wdGlvbnMgZm9yIGNlcnRhaW4gZmlsZXN5c3RlbXMgZG8gbm90IHRha2UKKyAgICAgICAgICAgICAgICAgICAgZWZmZWN0LgorICAgICAgICAgICAgICAgICAgICBTZWUgV2ljJ3MgaGVscCBvbiBraWNrc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPndpYyBoZWxwIGtpY2tzdGFydDwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLW1hbnVhbC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1tYW51YWwueG1sCmluZGV4IGQ0YjdiZWUuLjE2OWEzMWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLW1hbnVhbC54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtbWFudWFsLnhtbApAQCAtMTE4LDE0ICsxMTgsOSBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkphbnVhcnkgMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjQuMjwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPk1hcmNoIDIwMTg8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNC4yIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjU8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5NYXkgMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi41IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKQEAgLTE0NywzNyArMTQyLDQ1IEBACiAgICAgICAgICAgICAgICAgICAgICAgIGlzIGZvciB0aGUgJllPQ1RPX0RPQ19WRVJTSU9OOyByZWxlYXNlIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCi0gICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIHVzZSB0aGUgbWFudWFsIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICBGb3IgbWFudWFscyBhc3NvY2lhdGVkIHdpdGggb3RoZXIgcmVsZWFzZXMgb2YgdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QsIGdvIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCBnbyB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgIGFuZCB1c2UgdGhlIGRyb3AtZG93biAiQWN0aXZlIFJlbGVhc2VzIiBidXR0b24KLSAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNob29zZSB0aGUgbWFudWFsIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVzaXJlZAotICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgZnJvbSB0aGF0IHNpdGUuCisgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbHMgZnJvbSB0aGUgc2l0ZSBhcmUgbW9yZSB1cC10by1kYXRlIHRoYW4gbWFudWFscworICAgICAgICAgICAgICAgICAgICAgICBkZXJpdmVkIGZyb20gdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZWQgVEFSIGZpbGVzLgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bwotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBsb2NhdGVkIHRoaXMgbWFudWFsIHRocm91Z2ggYSB3ZWIgc2VhcmNoLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiBvZiB0aGUgbWFudWFsIG1pZ2h0IG5vdCBiZSB0aGUgb25lIHlvdSB3YW50CisgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIHRoZSBzZWFyY2ggbWlnaHQgaGF2ZSByZXR1cm5lZCBhIG1hbnVhbCBtdWNoCisgICAgICAgICAgICAgICAgICAgICAgIG9sZGVyIHRoYW4gdGhlIFlvY3RvIFByb2plY3QgdmVyc2lvbiB3aXRoIHdoaWNoIHlvdQorICAgICAgICAgICAgICAgICAgICAgICBhcmUgd29ya2luZykuCisgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIGFsbCBZb2N0byBQcm9qZWN0IG1ham9yIHJlbGVhc2VzIGJ5CisgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvUmVsZWFzZXMnPlJlbGVhc2VzPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgcGFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgYSB2ZXJzaW9uIG9mIHRoaXMgbWFudWFsIGZvciBhIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UsIHZpc2l0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIHNldCBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIkFDVElWRSBSRUxFQVNFUyBET0NVTUVOVEFUSU9OIiBvciAiRE9DVU1FTlRTIEFSQ0hJVkUiCisgICAgICAgICAgICAgICAgICAgICAgIHB1bGwtZG93biBtZW51cy4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bworICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgIDwvbm90ZT4KICAgICA8L2xlZ2Fsbm90aWNlPgogCiAgICAgPC9ib29raW5mbz4KIAotICAgIDx4aTppbmNsdWRlIGhyZWY9ImludHJvZHVjdGlvbi54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJyZWYtc3lzdGVtLXJlcXVpcmVtZW50cy54bWwiLz4KIAotICAgIDx4aTppbmNsdWRlIGhyZWY9InVzaW5ncG9reS54bWwiLz4KLQotICAgIDx4aTppbmNsdWRlIGhyZWY9InJlZi1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC54bWwiLz4KLQotICAgIDx4aTppbmNsdWRlIGhyZWY9InRlY2huaWNhbC1kZXRhaWxzLnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InJlZi10ZXJtcy54bWwiLz4KIAogICAgIDx4aTppbmNsdWRlIGhyZWY9InJlZi1yZWxlYXNlLXByb2Nlc3MueG1sIi8+CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXJlbGVhc2UtcHJvY2Vzcy54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1yZWxlYXNlLXByb2Nlc3MueG1sCmluZGV4IGUyOTAyZWIuLmM2NjVjZDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXJlbGVhc2UtcHJvY2Vzcy54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtcmVsZWFzZS1wcm9jZXNzLnhtbApAQCAtNjEsNyArNjEsNyBAQAogICAgIDxwYXJhPgogICAgICAgICBFYWNoIG1ham9yIHJlbGVhc2UgcmVjZWl2ZXMgYSBjb2RlbmFtZSB0aGF0IGlkZW50aWZpZXMgdGhlIHJlbGVhc2UgaW4KICAgICAgICAgdGhlCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3lvY3RvLXByb2plY3QtcmVwb3NpdG9yaWVzJz5Zb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXM8L2xpbms+LgorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3lvY3RvLXByb2plY3QtcmVwb3NpdG9yaWVzJz5Zb2N0byBQcm9qZWN0IFNvdXJjZSBSZXBvc2l0b3JpZXM8L3VsaW5rPi4KICAgICAgICAgVGhlIGNvbmNlcHQgaXMgdGhhdCBicmFuY2hlcyBvZgogICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YSc+TWV0YWRhdGE8L2xpbms+CiAgICAgICAgIHdpdGggdGhlIHNhbWUgY29kZW5hbWUgYXJlIGxpa2VseSB0byBiZSBjb21wYXRpYmxlIGFuZCB0aHVzCkBAIC0yMTcsNyArMjE3LDcgQEAKICAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeS4KICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgYWxsIHRoZXNlIGJyYW5jaGVzIGluIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC9saW5rPi4KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc291cmNlLXJlcG9zaXRvcmllcyc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+LgogICAgICAgICA8L25vdGU+CiAgICAgICAgIFRlc3Rpbmcgd2l0aGluIHRoZXNlIHB1YmxpYyBicmFuY2hlcyBlbnN1cmVzIGluIGEgcHVibGljbHkgdmlzaWJsZSB3YXkKICAgICAgICAgdGhhdCBhbGwgb2YgdGhlIG1haW4gc3VwcG9zZWQgYXJjaGl0ZWN0dXJlcyBhbmQgcmVjaXBlcyBpbiBPRS1Db3JlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zdHJ1Y3R1cmUueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3RydWN0dXJlLnhtbAppbmRleCA0YmRkYzU5Li44ZTBjOWY1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zdHJ1Y3R1cmUueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN0cnVjdHVyZS54bWwKQEAgLTE4LDcgKzE4LDcgQEAKIDxwYXJhPgogICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZXN0YWJsaXNoIGEgbG9jYWwgU291cmNlIERpcmVjdG9yeSBvbiB5b3VyCiAgICAgZGV2ZWxvcG1lbnQgc3lzdGVtLCBzZWUgdGhlCi0gICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3dvcmtpbmctd2l0aC15b2N0by1wcm9qZWN0LXNvdXJjZS1maWxlcyc+V29ya2luZyBXaXRoIFlvY3RvIFByb2plY3QgU291cmNlIEZpbGVzPC91bGluaz4iCisgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2xvY2F0aW5nLXlvY3RvLXByb2plY3Qtc291cmNlLWZpbGVzJz5Mb2NhdGluZyBZb2N0byBQcm9qZWN0IFNvdXJjZSBGaWxlczwvdWxpbms+IgogICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogPC9wYXJhPgogCkBAIC0xMTQsNyArMTE0LDcgQEAKICAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5tZXRhLzwvZmlsZW5hbWU+PC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBPcGVuRW1iZWRkZWQgQ29yZSBtZXRhZGF0YS4KKyAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBPcGVuRW1iZWRkZWQtQ29yZSBtZXRhZGF0YS4KICAgICAgICAgICAgIFRoZSBkaXJlY3RvcnkgaG9sZHMgcmVjaXBlcywgY29tbW9uIGNsYXNzZXMsIGFuZCBtYWNoaW5lCiAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZvciBlbXVsYXRlZCB0YXJnZXRzICg8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+LAogICAgICAgICAgICAgPGZpbGVuYW1lPnFlbXVhcm08L2ZpbGVuYW1lPiwgYW5kIHNvIGZvcnRoLikKQEAgLTEzNyw4ICsxMzcsNyBAQAogICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgdGhlIFlvY3RvIFByb2plY3QgcmVmZXJlbmNlCiAgICAgICAgICAgICBoYXJkd2FyZSBCb2FyZCBTdXBwb3J0IFBhY2thZ2VzIChCU1BzKS4KICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEJTUHMsIHNlZSB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7Jz5Zb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQKLSAgICAgICAgICAgIFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGU8L3VsaW5rPi4KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7Jz5Zb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC0yMzQsOCArMjMzLDcgQEAKICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQnkgZGVmYXVsdCwgcnVubmluZyB0aGlzIHNjcmlwdCB3aXRob3V0IGEKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgQnkgZGVmYXVsdCwgcnVubmluZyB0aGlzIHNjcmlwdCB3aXRob3V0IGEgQnVpbGQgRGlyZWN0b3J5CiAgICAgICAgICAgICBhcmd1bWVudCBjcmVhdGVzIHRoZSA8ZmlsZW5hbWU+YnVpbGQ8L2ZpbGVuYW1lPiBkaXJlY3RvcnkKICAgICAgICAgICAgIGluIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KICAgICAgICAgICAgIElmIHlvdSBwcm92aWRlIGEgQnVpbGQgRGlyZWN0b3J5IGFyZ3VtZW50IHdoZW4geW91CkBAIC0zMDYsOCArMzA0LDggQEAKICAgICAgICAgICAgIFRoZSBkaXJlY3RvcnkgdHJhY2tzIGJ1aWxkIGluZm9ybWF0aW9uIGludG8gaW1hZ2UsIHBhY2thZ2VzLCBhbmQKICAgICAgICAgICAgIFNESyBzdWJkaXJlY3Rvcmllcy4KICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgYnVpbGQgaGlzdG9yeSBmZWF0dXJlLCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWFpbnRhaW5pbmctYnVpbGQtb3V0cHV0LXF1YWxpdHknPk1haW50YWluaW5nIEJ1aWxkIE91dHB1dCBRdWFsaXR5PC9saW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWFpbnRhaW5pbmctYnVpbGQtb3V0cHV0LXF1YWxpdHknPk1haW50YWluaW5nIEJ1aWxkIE91dHB1dCBRdWFsaXR5PC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApAQCAtMzUwLDcgKzM0OCw3IEBACiAgICAgICAgICAgICB3aGljaCBkZWZhdWx0cyB0byA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmY8L2ZpbGVuYW1lPgogICAgICAgICAgICAgd2hlbiB5b3UgYXJlIGJ1aWxkaW5nIGZyb20gdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQKICAgICAgICAgICAgIGVudmlyb25tZW50IGFuZCBkZWZhdWx0cyB0byA8ZmlsZW5hbWU+bWV0YS9jb25mPC9maWxlbmFtZT4gd2hlbgotICAgICAgICAgICAgeW91IGFyZSBidWlsZGluZyBmcm9tIHRoZSBPcGVuRW1iZWRkZWQgQ29yZSBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIHlvdSBhcmUgYnVpbGRpbmcgZnJvbSB0aGUgT3BlbkVtYmVkZGVkLUNvcmUgZW52aXJvbm1lbnQuCiAgICAgICAgICAgICBCZWNhdXNlIHRoZSBzY3JpcHQgdmFyaWFibGUgcG9pbnRzIHRvIHRoZSBzb3VyY2Ugb2YgdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZi5zYW1wbGU8L2ZpbGVuYW1lPiBmaWxlLCB0aGlzIGltcGxpZXMgdGhhdAogICAgICAgICAgICAgeW91IGNhbiBjb25maWd1cmUgeW91ciBidWlsZCBlbnZpcm9ubWVudCBmcm9tIGFueSBsYXllciBieSBzZXR0aW5nCkBAIC00MDIsNyArNDAwLDcgQEAKICAgICAgICAgICAgIHdoaWNoIGRlZmF1bHRzIHRvIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZjwvZmlsZW5hbWU+CiAgICAgICAgICAgICB3aGVuIHlvdSBhcmUgYnVpbGRpbmcgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudAogICAgICAgICAgICAgZW52aXJvbm1lbnQgYW5kIGRlZmF1bHRzIHRvIDxmaWxlbmFtZT5tZXRhL2NvbmY8L2ZpbGVuYW1lPiB3aGVuCi0gICAgICAgICAgICB5b3UgYXJlIGJ1aWxkaW5nIGZyb20gdGhlIE9wZW5FbWJlZGRlZCBDb3JlIGVudmlyb25tZW50LgorICAgICAgICAgICAgeW91IGFyZSBidWlsZGluZyBmcm9tIHRoZSBPcGVuRW1iZWRkZWQtQ29yZSBlbnZpcm9ubWVudC4KICAgICAgICAgICAgIEJlY2F1c2UgdGhlIHNjcmlwdCB2YXJpYWJsZSBwb2ludHMgdG8gdGhlIHNvdXJjZSBvZiB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mLnNhbXBsZTwvZmlsZW5hbWU+IGZpbGUsIHRoaXMgaW1wbGllcyB0aGF0CiAgICAgICAgICAgICB5b3UgY2FuIGJhc2UgeW91ciBidWlsZCBmcm9tIGFueSBsYXllciBieSBzZXR0aW5nIHRoZSB2YXJpYWJsZSBpbgpAQCAtNTIwLDkgKzUxOCwxMCBAQAogICAgICAgICAgICAgdmFyaWFibGUgcG9pbnRzIHRvIHRoaXMgZGlyZWN0b3J5LgogICAgICAgICAgICAgRm9yIG1vcmUgZGV0YWlsIG9uIHRoZSBjb250ZW50cyBvZiB0aGUgPGZpbGVuYW1lPmRlcGxveTwvZmlsZW5hbWU+CiAgICAgICAgICAgICBkaXJlY3RvcnksIHNlZSB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdpbWFnZXMtZGV2LWVudmlyb25tZW50Jz5JbWFnZXM8L2xpbms+IiBhbmQKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstZGV2LWVudmlyb25tZW50Jz5BcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBTREs8L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbnMuCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNpbWFnZXMtZGV2LWVudmlyb25tZW50Jz5JbWFnZXM8L3VsaW5rPiIKKyAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc2RrLWRldi1lbnZpcm9ubWVudCc+QXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgU0RLPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9ucyBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC02OTUsOCArNjk0LDggQEAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IEJpdEJha2UgdXNlcyBzdGFtcCBmaWxlcyB0byBkZXRlcm1pbmUgaWYKICAgICAgICAgICAgIGEgdGFzayBzaG91bGQgYmUgcmVydW4sIHNlZSB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzdGFtcC1maWxlcy1hbmQtdGhlLXJlcnVubmluZy1vZi10YXNrcyc+U3RhbXAgRmlsZXMgYW5kIHRoZSBSZXJ1bm5pbmcgb2YgVGFza3M8L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3N0YW1wLWZpbGVzLWFuZC10aGUtcmVydW5uaW5nLW9mLXRhc2tzJz5TdGFtcCBGaWxlcyBhbmQgdGhlIFJlcnVubmluZyBvZiBUYXNrczwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC03MzUsOCArNzM0LDcgQEAKICAgICAgICAgICAgIGJ1aWx0IHdpdGhpbiB0aGUgWW9jdG8gUHJvamVjdC4KICAgICAgICAgICAgIEZvciB0aGlzIHBhY2thZ2UsIGEgd29yayBkaXJlY3Rvcnkgb2YKICAgICAgICAgICAgIDxmaWxlbmFtZT50bXAvd29yay9xZW11eDg2LXBva3ktbGludXgvbGludXgteW9jdG8vMy4wK2dpdDErJmx0Oy4uLi4uJmd0OzwvZmlsZW5hbWU+LAotICAgICAgICAgICAgcmVmZXJyZWQgdG8gYXMgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPldPUktESVI8L2xpbms+PC9maWxlbmFtZT4sIGlzIGNyZWF0ZWQuCisgICAgICAgICAgICByZWZlcnJlZCB0byBhcyB0aGUgPGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPiwgaXMgY3JlYXRlZC4KICAgICAgICAgICAgIFdpdGhpbiB0aGlzIGRpcmVjdG9yeSwgdGhlIHNvdXJjZSBpcyB1bnBhY2tlZCB0bwogICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXFlbXV4ODYtc3RhbmRhcmQtYnVpbGQ8L2ZpbGVuYW1lPiBhbmQgdGhlbiBwYXRjaGVkIGJ5IFF1aWx0LgogICAgICAgICAgICAgKFNlZSB0aGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN5c3RlbS1yZXF1aXJlbWVudHMueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3lzdGVtLXJlcXVpcmVtZW50cy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVhMWZkZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN5c3RlbS1yZXF1aXJlbWVudHMueG1sCkBAIC0wLDAgKzEsNDkwIEBACis8IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCisiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgorWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgorCis8Y2hhcHRlciBpZD0ncmVmLW1hbnVhbC1zeXN0ZW0tcmVxdWlyZW1lbnRzJz4KKzx0aXRsZT5TeXN0ZW0gUmVxdWlyZW1lbnRzPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBXZWxjb21lIHRvIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwhCisgICAgICAgIFRoaXMgbWFudWFsIHByb3ZpZGVzIHJlZmVyZW5jZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGN1cnJlbnQgcmVsZWFzZQorICAgICAgICBvZiB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgVGhlIG1hbnVhbCBpcyBiZXN0IHVzZWQgYWZ0ZXIgeW91IGhhdmUgYW4gdW5kZXJzdGFuZGluZworICAgICAgICBvZiB0aGUgYmFzaWNzIG9mIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICBUaGUgbWFudWFsIGlzIG5laXRoZXIgbWVhbnQgdG8gYmUgcmVhZCBhcyBhIHN0YXJ0aW5nIHBvaW50IHRvIHRoZQorICAgICAgICBZb2N0byBQcm9qZWN0IG5vciByZWFkIGZyb20gc3RhcnQgdG8gZmluaXNoLgorICAgICAgICBVc2UgdGhpcyBtYW51YWwgdG8gZmluZCB2YXJpYWJsZSBkZWZpbml0aW9ucywgY2xhc3MKKyAgICAgICAgZGVzY3JpcHRpb25zLCBhbmQgc28gZm9ydGggYXMgbmVlZGVkIGR1cmluZyB0aGUgY291cnNlIG9mIHVzaW5nCisgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBGb3IgaW50cm9kdWN0b3J5IGluZm9ybWF0aW9uIG9uIHRoZSBZb2N0byBQcm9qZWN0LCBzZWUgdGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsnPllvY3RvIFByb2plY3QgV2Vic2l0ZTwvdWxpbms+IGFuZCB0aGUKKyAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjb3ZlcnZpZXctZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQnPllvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQ8L3VsaW5rPiIKKyAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgICBJZiB5b3Ugd2FudCB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QgdG8gcXVpY2tseSBidWlsZCBhbiBpbWFnZQorICAgICAgICB3aXRob3V0IGhhdmluZyB0byB1bmRlcnN0YW5kIGNvbmNlcHRzLCB3b3JrIHRocm91Z2ggdGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JSSUVGX1VSTDsnPllvY3RvIFByb2plY3QgUXVpY2sgQnVpbGQ8L3VsaW5rPgorICAgICAgICBkb2N1bWVudC4KKyAgICAgICAgWW91IGNhbiBmaW5kICJob3ctdG8iIGluZm9ybWF0aW9uIGluIHRoZQorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyc+WW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgWW91IGNhbiBmaW5kIFlvY3RvIFByb2plY3Qgb3ZlcnZpZXcgYW5kIGNvbmNlcHR1YWwgaW5mb3JtYXRpb24gaW4gdGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsnPllvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbDwvdWxpbms+LgorICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KKyAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBZb2N0byBQcm9qZWN0IERvY3VtZW50YXRpb24gc2V0LAorICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Jlc291cmNlcy1saW5rcy1hbmQtcmVsYXRlZC1kb2N1bWVudGF0aW9uJz5MaW5rcyBhbmQgUmVsYXRlZCBEb2N1bWVudGF0aW9uPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgIDwvbm90ZT4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0nZGV0YWlsZWQtc3VwcG9ydGVkLWRpc3Ryb3MnPgorICAgICAgICA8dGl0bGU+U3VwcG9ydGVkIExpbnV4IERpc3RyaWJ1dGlvbnM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQ3VycmVudGx5LCB0aGUgWW9jdG8gUHJvamVjdCBpcyBzdXBwb3J0ZWQgb24gdGhlIGZvbGxvd2luZworICAgICAgICAgICAgZGlzdHJpYnV0aW9uczoKKyAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlcyBhcmUgdGVzdGVkIGFnYWluc3QgdGhlIHN0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgTGludXggZGlzdHJpYnV0aW9ucyBpbiB0aGUgZm9sbG93aW5nIGxpc3QuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBzaG91bGQgd29yayBvbiBvdGhlciBkaXN0cmlidXRpb25zIGJ1dAorICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbiBpcyBub3QgcGVyZm9ybWVkIGFnYWluc3QgdGhlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCB0aGUgWW9jdG8gUHJvamVjdCBkb2VzIG5vdCBzdXBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgY3VycmVudGx5IGhhcyBubyBwbGFucyB0byBzdXBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICByb2xsaW5nLXJlbGVhc2VzIG9yIGRldmVsb3BtZW50IGRpc3RyaWJ1dGlvbnMgZHVlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICB0aGVpciBjb25zdGFudGx5IGNoYW5naW5nIG5hdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdlIHdlbGNvbWUgcGF0Y2hlcyBhbmQgYnVnIHJlcG9ydHMsIGJ1dCBrZWVwIGluIG1pbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgb3VyIHByaW9yaXR5IGlzIG9uIHRoZSBzdXBwb3J0ZWQgcGxhdGZvcm1zIGxpc3RlZAorICAgICAgICAgICAgICAgICAgICAgICAgYmVsb3cuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGVuY291bnRlciBwcm9ibGVtcywgcGxlYXNlIGdvIHRvCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fQlVHWklMTEFfVVJMOyc+WW9jdG8gUHJvamVjdCBCdWd6aWxsYTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc3VibWl0IGEgYnVnLgorICAgICAgICAgICAgICAgICAgICAgICAgV2UgYXJlIGludGVyZXN0ZWQgaW4gaGVhcmluZyBhYm91dCB5b3VyIGV4cGVyaWVuY2UuCisgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHN1Ym1pdCBhIGJ1Zywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1dJS0lfVVJMOy93aWtpL0J1Z3ppbGxhX0NvbmZpZ3VyYXRpb25fYW5kX0J1Z19UcmFja2luZyc+QnVnemlsbGEgd2lraSBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzdWJtaXR0aW5nLWEtZGVmZWN0LWFnYWluc3QtdGhlLXlvY3RvLXByb2plY3QnPlN1Ym1pdHRpbmcgYSBEZWZlY3QgQWdhaW5zdCB0aGUgWW9jdG8gUHJvamVjdDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Cis8IS0tCisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxMC4wNDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5VYnVudHUgMTEuMTA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDEyLjA0IChMVFMpPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxMy4xMDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5VYnVudHUgMTQuMDQgKExUUyk8L3BhcmE+PC9saXN0aXRlbT4gLS0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxNC4xMDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5VYnVudHUgMTUuMDQ8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDE1LjEwPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxNi4wNCAoTFRTKTwvcGFyYT48L2xpc3RpdGVtPgorPCEtLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RmVkb3JhIDE2IChWZXJuZSk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RmVkb3JhIDE3IChTcGhlcmljYWwpPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZlZG9yYSByZWxlYXNlIDE5IChTY2hyw7ZkaW5nZXIncyBDYXQpPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZlZG9yYSByZWxlYXNlIDIwIChIZWlzZW5idWcpPC9wYXJhPjwvbGlzdGl0ZW0+IC0tPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5GZWRvcmEgcmVsZWFzZSAyMjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5GZWRvcmEgcmVsZWFzZSAyMzwvcGFyYT48L2xpc3RpdGVtPgorPCEtLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RmVkb3JhIHJlbGVhc2UgMjQ8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2VudE9TIHJlbGVhc2UgNS42IChGaW5hbCk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2VudE9TIHJlbGVhc2UgNS43IChGaW5hbCk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2VudE9TIHJlbGVhc2UgNS44IChGaW5hbCk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2VudE9TIHJlbGVhc2UgNi4zIChGaW5hbCk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2VudE9TIHJlbGVhc2UgNi54PC9wYXJhPjwvbGlzdGl0ZW0+IC0tPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DZW50T1MgcmVsZWFzZSA3Lng8L3BhcmE+PC9saXN0aXRlbT4KKzwhLS0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggNi4wIChTcXVlZXplKTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcueCAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPiAtLT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RGViaWFuIEdOVS9MaW51eCA4LnggKEplc3NpZSk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RGViaWFuIEdOVS9MaW51eCA5LnggKFN0cmV0Y2gpPC9wYXJhPjwvbGlzdGl0ZW0+Cis8IS0tICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcuMSAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcuMiAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcuMyAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcuNCAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcuNSAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcuNiAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPiAtLT4KKzwhLS0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPm9wZW5TVVNFIDExLjQ8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+b3BlblNVU0UgMTIuMTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5vcGVuU1VTRSAxMi4yPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPm9wZW5TVVNFIDEyLjM8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+b3BlblNVU0UgMTMuMTwvcGFyYT48L2xpc3RpdGVtPiAtLT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+b3BlblNVU0UgMTMuMjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5vcGVuU1VTRSA0Mi4xPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxub3RlPgorICAgICAgICAgICAgV2hpbGUgdGhlIFlvY3RvIFByb2plY3QgVGVhbSBhdHRlbXB0cyB0byBlbnN1cmUgYWxsIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgIHJlbGVhc2VzIGFyZSBvbmUgaHVuZHJlZCBwZXJjZW50IGNvbXBhdGlibGUgd2l0aCBlYWNoIG9mZmljaWFsbHkKKyAgICAgICAgICAgIHN1cHBvcnRlZCBMaW51eCBkaXN0cmlidXRpb24sIGluc3RhbmNlcyBtaWdodCBleGlzdCB3aGVyZSB5b3UKKyAgICAgICAgICAgIGVuY291bnRlciBhIHByb2JsZW0gd2hpbGUgdXNpbmcgdGhlIFlvY3RvIFByb2plY3Qgb24gYSBzcGVjaWZpYworICAgICAgICAgICAgZGlzdHJpYnV0aW9uLgorICAgICAgICA8L25vdGU+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlcXVpcmVkLXBhY2thZ2VzLWZvci10aGUtaG9zdC1kZXZlbG9wbWVudC1zeXN0ZW0nPgorICAgIDx0aXRsZT5SZXF1aXJlZCBQYWNrYWdlcyBmb3IgdGhlIEhvc3QgRGV2ZWxvcG1lbnQgU3lzdGVtPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBsaXN0IG9mIHBhY2thZ2VzIHlvdSBuZWVkIG9uIHRoZSBob3N0IGRldmVsb3BtZW50IHN5c3RlbSBjYW4KKyAgICAgICAgICAgIGJlIGxhcmdlIHdoZW4gY292ZXJpbmcgYWxsIGJ1aWxkIHNjZW5hcmlvcyB1c2luZyB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyByZXF1aXJlZCBwYWNrYWdlcyBhY2NvcmRpbmcgdG8KKyAgICAgICAgICAgIExpbnV4IGRpc3RyaWJ1dGlvbiBhbmQgZnVuY3Rpb24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0ndWJ1bnR1LXBhY2thZ2VzJz4KKyAgICAgICAgICAgIDx0aXRsZT5VYnVudHUgYW5kIERlYmlhbjwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBzaG93cyB0aGUgcmVxdWlyZWQgcGFja2FnZXMgYnkgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICBnaXZlbiBhIHN1cHBvcnRlZCBVYnVudHUgb3IgRGViaWFuIExpbnV4IGRpc3RyaWJ1dGlvbjoKKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBidWlsZCBzeXN0ZW0gaGFzIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b3NzNC1kZXY8L2ZpbGVuYW1lPiBwYWNrYWdlIGluc3RhbGxlZCwgeW91CisgICAgICAgICAgICAgICAgICAgIG1pZ2h0IGV4cGVyaWVuY2UgUUVNVSBidWlsZCBmYWlsdXJlcyBkdWUgdG8gdGhlIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGluZyBpdHMgb3duIGN1c3RvbQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3Vzci9pbmNsdWRlL2xpbnV4L3NvdW5kY2FyZC5oPC9maWxlbmFtZT4gb24KKyAgICAgICAgICAgICAgICAgICAgdGhlIERlYmlhbiBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgIElmIHlvdSBydW4gaW50byB0aGlzIHNpdHVhdGlvbiwgZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgc29sdXRpb25zIGV4aXN0OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBhcHQtZ2V0IGJ1aWxkLWRlcCBxZW11CisgICAgICQgc3VkbyBhcHQtZ2V0IHJlbW92ZSBvc3M0LWRldgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkVzc2VudGlhbHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCB0byBidWlsZCBhbiBpbWFnZSBvbiBhIGhlYWRsZXNzCisgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW06CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgJlVCVU5UVV9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTDsKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5HcmFwaGljYWwgYW5kIEVjbGlwc2UgUGx1Zy1JbiBFeHRyYXM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIHJlY29tbWVuZGVkIGlmIHRoZSBob3N0IHN5c3RlbSBoYXMgZ3JhcGhpY3MKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQgb3IgaWYgeW91IGFyZSBnb2luZyB0byB1c2UgdGhlIEVjbGlwc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIElERToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzdWRvIGFwdC1nZXQgaW5zdGFsbCBsaWJzZGwxLjItZGV2IHh0ZXJtCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RG9jdW1lbnRhdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIGlmIHlvdSBhcmUgZ29pbmcgdG8gYnVpbGQgb3V0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIG1hbnVhbHM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgbWFrZSB4c2x0cHJvYyBkb2Nib29rLXV0aWxzIGZvcCBkYmxhdGV4IHhtbHRvCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+T3BlbkVtYmVkZGVkIFNlbGYtVGVzdCAoPGZpbGVuYW1lPm9lLXNlbGZ0ZXN0PC9maWxlbmFtZT4pOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyBuZWVkZWQgaWYgeW91IGFyZSBnb2luZyB0byBydW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1zZWxmdGVzdDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHN1ZG8gYXB0LWdldCBpbnN0YWxsIHB5dGhvbi1naXQKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2ZlZG9yYS1wYWNrYWdlcyc+CisgICAgICAgICAgICA8dGl0bGU+RmVkb3JhIFBhY2thZ2VzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHNob3dzIHRoZSByZXF1aXJlZCBwYWNrYWdlcyBieSBmdW5jdGlvbgorICAgICAgICAgICAgICAgIGdpdmVuIGEgc3VwcG9ydGVkIEZlZG9yYSBMaW51eCBkaXN0cmlidXRpb246CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Fc3NlbnRpYWxzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyBuZWVkZWQgdG8gYnVpbGQgYW4gaW1hZ2UgZm9yIGEgaGVhZGxlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzdWRvIGRuZiBpbnN0YWxsICZGRURPUkFfSE9TVF9QQUNLQUdFU19FU1NFTlRJQUw7CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+R3JhcGhpY2FsIGFuZCBFY2xpcHNlIFBsdWctSW4gRXh0cmFzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyByZWNvbW1lbmRlZCBpZiB0aGUgaG9zdCBzeXN0ZW0gaGFzIGdyYXBoaWNzCisgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IG9yIGlmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIHRoZSBFY2xpcHNlCisgICAgICAgICAgICAgICAgICAgICAgICBJREU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBkbmYgaW5zdGFsbCBTREwtZGV2ZWwgeHRlcm0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Eb2N1bWVudGF0aW9uOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyBuZWVkZWQgaWYgeW91IGFyZSBnb2luZyB0byBidWlsZCBvdXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFudWFsczoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzdWRvIGRuZiBpbnN0YWxsIG1ha2UgZG9jYm9vay1zdHlsZS1kc3NzbCBkb2Nib29rLXN0eWxlLXhzbCBcCisgICAgIGRvY2Jvb2stZHRkcyBkb2Nib29rLXV0aWxzIGZvcCBsaWJ4c2x0IGRibGF0ZXggeG1sdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5PcGVuRW1iZWRkZWQgU2VsZi1UZXN0ICg8ZmlsZW5hbWU+b2Utc2VsZnRlc3Q8L2ZpbGVuYW1lPik6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCBpZiB5b3UgYXJlIGdvaW5nIHRvIHJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXNlbGZ0ZXN0PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBkbmYgaW5zdGFsbCBweXRob24zLUdpdFB5dGhvbgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nb3BlbnN1c2UtcGFja2FnZXMnPgorICAgICAgICAgICAgPHRpdGxlPm9wZW5TVVNFIFBhY2thZ2VzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHNob3dzIHRoZSByZXF1aXJlZCBwYWNrYWdlcyBieSBmdW5jdGlvbgorICAgICAgICAgICAgICAgIGdpdmVuIGEgc3VwcG9ydGVkIG9wZW5TVVNFIExpbnV4IGRpc3RyaWJ1dGlvbjoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkVzc2VudGlhbHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCB0byBidWlsZCBhbiBpbWFnZSBmb3IgYSBoZWFkbGVzcworICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHN1ZG8genlwcGVyIGluc3RhbGwgJk9QRU5TVVNFX0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMOworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkdyYXBoaWNhbCBhbmQgRWNsaXBzZSBQbHVnLUluIEV4dHJhczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgcmVjb21tZW5kZWQgaWYgdGhlIGhvc3Qgc3lzdGVtIGhhcyBncmFwaGljcworICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCBvciBpZiB5b3UgYXJlIGdvaW5nIHRvIHVzZSB0aGUgRWNsaXBzZQorICAgICAgICAgICAgICAgICAgICAgICAgSURFOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHN1ZG8genlwcGVyIGluc3RhbGwgbGliU0RMLWRldmVsIHh0ZXJtCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RG9jdW1lbnRhdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIGlmIHlvdSBhcmUgZ29pbmcgdG8gYnVpbGQgb3V0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIG1hbnVhbHM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyB6eXBwZXIgaW5zdGFsbCBtYWtlIGRibGF0ZXggeG1sdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5PcGVuRW1iZWRkZWQgU2VsZi1UZXN0ICg8ZmlsZW5hbWU+b2Utc2VsZnRlc3Q8L2ZpbGVuYW1lPik6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCBpZiB5b3UgYXJlIGdvaW5nIHRvIHJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXNlbGZ0ZXN0PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyB6eXBwZXIgaW5zdGFsbCBweXRob24tR2l0UHl0aG9uCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFNhbml0eSB0ZXN0aW5nLCB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy10ZXN0aW1hZ2UqJz50ZXN0aW1hZ2U8L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzZXMsIGRvZXMgbm90IHdvcmsgb24gc3lzdGVtcyB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi5vcGVuc3VzZS5vcmcvUG9ydGFsOldpY2tlZCc+V2lja2VkPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgbmV0d29yayBtYW5hZ2VyLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdjZW50b3MtcGFja2FnZXMnPgorICAgICAgICAgICAgPHRpdGxlPkNlbnRPUyBQYWNrYWdlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBzaG93cyB0aGUgcmVxdWlyZWQgcGFja2FnZXMgYnkgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICBnaXZlbiBhIHN1cHBvcnRlZCBDZW50T1MgTGludXggZGlzdHJpYnV0aW9uOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RXNzZW50aWFsczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIHRvIGJ1aWxkIGFuIGltYWdlIGZvciBhIGhlYWRsZXNzCisgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW06CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyB5dW0gaW5zdGFsbCAmQ0VOVE9TX0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMOyBTREwtZGV2ZWwgeHRlcm0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXh0cmEgUGFja2FnZXMgZm9yIEVudGVycHJpc2UgTGludXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5lcGVsLXJlbGVhc2U8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGEgY29sbGVjdGlvbiBvZiBwYWNrYWdlcyBmcm9tIEZlZG9yYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHQgb24gUkhFTC9DZW50T1MgZm9yIGVhc3kgaW5zdGFsbGF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBwYWNrYWdlcyBub3QgaW5jbHVkZWQgaW4gZW50ZXJwcmlzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGludXggYnkgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGluc3RhbGwgdGhlc2UgcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRlbHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5tYWtlY2FjaGU8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdW1lcyBhZGRpdGlvbmFsIE1ldGFkYXRhIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5lcGVsLXJlbGVhc2U8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+R3JhcGhpY2FsIGFuZCBFY2xpcHNlIFBsdWctSW4gRXh0cmFzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyByZWNvbW1lbmRlZCBpZiB0aGUgaG9zdCBzeXN0ZW0gaGFzIGdyYXBoaWNzCisgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IG9yIGlmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIHRoZSBFY2xpcHNlCisgICAgICAgICAgICAgICAgICAgICAgICBJREU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyB5dW0gaW5zdGFsbCBTREwtZGV2ZWwgeHRlcm0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Eb2N1bWVudGF0aW9uOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyBuZWVkZWQgaWYgeW91IGFyZSBnb2luZyB0byBidWlsZCBvdXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFudWFsczoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzdWRvIHl1bSBpbnN0YWxsIG1ha2UgZG9jYm9vay1zdHlsZS1kc3NzbCBkb2Nib29rLXN0eWxlLXhzbCBcCisgICAgIGRvY2Jvb2stZHRkcyBkb2Nib29rLXV0aWxzIGZvcCBsaWJ4c2x0IGRibGF0ZXggeG1sdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5PcGVuRW1iZWRkZWQgU2VsZi1UZXN0ICg8ZmlsZW5hbWU+b2Utc2VsZnRlc3Q8L2ZpbGVuYW1lPik6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCBpZiB5b3UgYXJlIGdvaW5nIHRvIHJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXNlbGZ0ZXN0PC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyB5dW0gaW5zdGFsbCBHaXRQeXRob24KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3JlcXVpcmVkLWdpdC10YXItYW5kLXB5dGhvbi12ZXJzaW9ucyc+CisgICAgICAgIDx0aXRsZT5SZXF1aXJlZCBHaXQsIHRhciwgYW5kIFB5dGhvbiBWZXJzaW9uczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiBvcmRlciB0byB1c2UgdGhlIGJ1aWxkIHN5c3RlbSwgeW91ciBob3N0IGRldmVsb3BtZW50IHN5c3RlbQorICAgICAgICAgICAgbXVzdCBtZWV0IHRoZSBmb2xsb3dpbmcgdmVyc2lvbiByZXF1aXJlbWVudHMgZm9yIEdpdCwgdGFyLCBhbmQKKyAgICAgICAgICAgIFB5dGhvbjoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkdpdCAxLjguMy4xIG9yIGdyZWF0ZXI8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+dGFyIDEuMjcgb3IgZ3JlYXRlcjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5QeXRob24gMy40LjAgb3IgZ3JlYXRlcjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIHlvdXIgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0gZG9lcyBub3QgbWVldCBhbGwgdGhlc2UgcmVxdWlyZW1lbnRzLAorICAgICAgICAgICAgeW91IGNhbiByZXNvbHZlIHRoaXMgYnkgaW5zdGFsbGluZyBhIDxmaWxlbmFtZT5idWlsZHRvb2xzPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHRhcmJhbGwgdGhhdCBjb250YWlucyB0aGVzZSB0b29scy4KKyAgICAgICAgICAgIFlvdSBjYW4gZ2V0IHRoZSB0YXJiYWxsIG9uZSBvZiB0d28gd2F5czogZG93bmxvYWQgYSBwcmUtYnVpbHQKKyAgICAgICAgICAgIHRhcmJhbGwgb3IgdXNlIEJpdEJha2UgdG8gYnVpbGQgdGhlIHRhcmJhbGwuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8c2VjdGlvbiBpZD0nZG93bmxvYWRpbmctYS1wcmUtYnVpbHQtYnVpbGR0b29scy10YXJiYWxsJz4KKyAgICAgICAgICAgIDx0aXRsZT5Eb3dubG9hZGluZyBhIFByZS1CdWlsdCA8ZmlsZW5hbWU+YnVpbGR0b29sczwvZmlsZW5hbWU+IFRhcmJhbGw8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBEb3dubG9hZGluZyBhbmQgcnVubmluZyBhIHByZS1idWlsdCBidWlsZHRvb2xzIGluc3RhbGxlciBpcworICAgICAgICAgICAgICAgIHRoZSBlYXNpZXN0IG9mIHRoZSB0d28gbWV0aG9kcyBieSB3aGljaCB5b3UgY2FuIGdldCB0aGVzZSB0b29sczoKKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0ZSBhbmQgZG93bmxvYWQgdGhlIDxmaWxlbmFtZT4qLnNoPC9maWxlbmFtZT4gYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ETF9VUkw7L3JlbGVhc2VzL3lvY3RvL3lvY3RvLSZESVNUUk87L2J1aWxkdG9vbHMvJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRlIHRoZSBpbnN0YWxsYXRpb24gc2NyaXB0LgorICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNoIH4vRG93bmxvYWRzL3g4Nl82NC1idWlsZHRvb2xzLW5hdGl2ZXNkay1zdGFuZGFsb25lLSZESVNUUk87LnNoCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBEdXJpbmcgZXhlY3V0aW9uLCBhIHByb21wdCBhcHBlYXJzIHRoYXQgYWxsb3dzIHlvdSB0bworICAgICAgICAgICAgICAgICAgICAgICAgY2hvb3NlIHRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBjb3VsZCBjaG9vc2UgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgL2hvbWUvPHJlcGxhY2VhYmxlPnlvdXItdXNlcm5hbWU8L3JlcGxhY2VhYmxlPi9idWlsZHRvb2xzCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlIHRoZSB0b29scyBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgYnkgdXNpbmcgYQorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBsaWtlIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc291cmNlIC9ob21lLzxyZXBsYWNlYWJsZT55b3VyX3VzZXJuYW1lPC9yZXBsYWNlYWJsZT4vYnVpbGR0b29scy9lbnZpcm9ubWVudC1zZXR1cC1pNTg2LXBva3ktbGludXgKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9mIGNvdXJzZSwgeW91IG5lZWQgdG8gc3VwcGx5IHlvdXIgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBhbmQgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1cmUgdG8gdXNlIHRoZSByaWdodCBmaWxlIChpLmUuIGk1ODUgb3IgeDg2LTY0KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgeW91IGhhdmUgc291cmNlZCB0aGUgc2V0dXAgc2NyaXB0LAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHRvb2xzIGFyZSBhZGRlZCB0byA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYW55IG90aGVyIGVudmlyb25tZW50IHZhcmlhYmxlcyByZXF1aXJlZCB0byBydW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICB0b29scyBhcmUgaW5pdGlhbGl6ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVzdWx0cyBhcmUgd29ya2luZyB2ZXJzaW9ucyB2ZXJzaW9ucyBvZiBHaXQsIHRhciwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiBhbmQgPGZpbGVuYW1lPmNocnBhdGg8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nYnVpbGRpbmcteW91ci1vd24tYnVpbGR0b29scy10YXJiYWxsJz4KKyAgICAgICAgICAgIDx0aXRsZT5CdWlsZGluZyBZb3VyIE93biA8ZmlsZW5hbWU+YnVpbGR0b29sczwvZmlsZW5hbWU+IFRhcmJhbGw8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBCdWlsZGluZyBhbmQgcnVubmluZyB5b3VyIG93biBidWlsZHRvb2xzIGluc3RhbGxlciBhcHBsaWVzCisgICAgICAgICAgICAgICAgb25seSB3aGVuIHlvdSBoYXZlIGEgYnVpbGQgaG9zdCB0aGF0IGNhbiBhbHJlYWR5IHJ1biBCaXRCYWtlLgorICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgeW91IHVzZSB0aGF0IG1hY2hpbmUgdG8gYnVpbGQgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5zaDwvZmlsZW5hbWU+IGZpbGUgYW5kIHRoZW4KKyAgICAgICAgICAgICAgICB0YWtlIHN0ZXBzIHRvIHRyYW5zZmVyIGFuZCBydW4gaXQgb24gYQorICAgICAgICAgICAgICAgIG1hY2hpbmUgdGhhdCBkb2VzIG5vdCBtZWV0IHRoZSBtaW5pbWFsIEdpdCwgdGFyLCBhbmQgUHl0aG9uCisgICAgICAgICAgICAgICAgcmVxdWlyZW1lbnRzLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBIZXJlIGFyZSB0aGUgc3RlcHMgdG8gdGFrZSB0byBidWlsZCBhbmQgcnVuIHlvdXIgb3duCisgICAgICAgICAgICAgICAgYnVpbGR0b29scyBpbnN0YWxsZXI6CisgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBPbiB0aGUgbWFjaGluZSB0aGF0IGlzIGFibGUgdG8gcnVuIEJpdEJha2UsCisgICAgICAgICAgICAgICAgICAgICAgICBiZSBzdXJlIHlvdSBoYXZlIHNldCB1cCB5b3VyIGJ1aWxkIGVudmlyb25tZW50IHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzZXR1cCBzY3JpcHQKKyAgICAgICAgICAgICAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgUnVuIHRoZSBCaXRCYWtlIGNvbW1hbmQgdG8gYnVpbGQgdGhlIHRhcmJhbGw6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBidWlsZHRvb2xzLXRhcmJhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU0RLTUFDSElORSc+PGZpbGVuYW1lPlNES01BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICBkZXRlcm1pbmVzIHdoZXRoZXIgeW91IGJ1aWxkIHRvb2xzIGZvciBhIDMyLWJpdAorICAgICAgICAgICAgICAgICAgICAgICAgb3IgNjQtYml0IHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHRoZSBidWlsZCBjb21wbGV0ZXMsIHlvdSBjYW4gZmluZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5zaDwvZmlsZW5hbWU+IGZpbGUgdGhhdCBpbnN0YWxscworICAgICAgICAgICAgICAgICAgICAgICB0aGUgdG9vbHMgaW4gdGhlIDxmaWxlbmFtZT50bXAvZGVwbG95L3NkazwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgIHN1YmRpcmVjdG9yeSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgorICAgICAgICAgICAgICAgICAgICAgICBUaGUgaW5zdGFsbGVyIGZpbGUgaGFzIHRoZSBzdHJpbmcgImJ1aWxkdG9vbHMiCisgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBuYW1lLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZmVyIHRoZSA8ZmlsZW5hbWU+LnNoPC9maWxlbmFtZT4gZmlsZSBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBob3N0IHRvIHRoZSBtYWNoaW5lIHRoYXQgZG9lcyBub3QgbWVldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgR2l0LCB0YXIsIG9yIFB5dGhvbiByZXF1aXJlbWVudHMuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgT24gdGhlIG1hY2hpbmUgdGhhdCBkb2VzIG5vdCBtZWV0IHRoZSByZXF1aXJlbWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgIHJ1biB0aGUgPGZpbGVuYW1lPi5zaDwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgdG8gaW5zdGFsbCB0aGUgdG9vbHMuCisgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNoIH4vRG93bmxvYWRzL3g4Nl82NC1idWlsZHRvb2xzLW5hdGl2ZXNkay1zdGFuZGFsb25lLSZESVNUUk87LnNoCisgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgRHVyaW5nIGV4ZWN1dGlvbiwgYSBwcm9tcHQgYXBwZWFycyB0aGF0IGFsbG93cyB5b3UgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgY2hvb3NlIHRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IGNvdWxkIGNob29zZSB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIC9ob21lLzxyZXBsYWNlYWJsZT55b3VyX3VzZXJuYW1lPC9yZXBsYWNlYWJsZT4vYnVpbGR0b29scworICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2UgdGhlIHRvb2xzIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBieSB1c2luZyBhCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIGxpa2UgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzb3VyY2UgL2hvbWUvPHJlcGxhY2VhYmxlPnlvdXJfdXNlcm5hbWU8L3JlcGxhY2VhYmxlPi9idWlsZHRvb2xzL2Vudmlyb25tZW50LXNldHVwLWk1ODYtcG9reS1saW51eAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgT2YgY291cnNlLCB5b3UgbmVlZCB0byBzdXBwbHkgeW91ciBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IGFuZCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgc3VyZSB0byB1c2UgdGhlIHJpZ2h0IGZpbGUgKGkuZS4gaTU4NSBvciB4ODYtNjQpLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBBZnRlciB5b3UgaGF2ZSBzb3VyY2VkIHRoZSBzZXR1cCBzY3JpcHQsCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdG9vbHMgYXJlIGFkZGVkIHRvIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhbnkgb3RoZXIgZW52aXJvbm1lbnQgdmFyaWFibGVzIHJlcXVpcmVkIHRvIHJ1biB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xzIGFyZSBpbml0aWFsaXplZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZXN1bHRzIGFyZSB3b3JraW5nIHZlcnNpb25zIHZlcnNpb25zIG9mIEdpdCwgdGFyLAorICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIGFuZCA8ZmlsZW5hbWU+Y2hycGF0aDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKzwvY2hhcHRlcj4KKzwhLS0KK3ZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKKy0tPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGFza3MueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGFza3MueG1sCmluZGV4IGM3MjZjYjkuLmU2Y2Y2ODYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXRhc2tzLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi10YXNrcy54bWwKQEAgLTExMSw4ICsxMTEsNyBAQAogICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZGVwbG95Jz48ZmlsZW5hbWU+ZGVwbG95PC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICBjbGFzcyBhbmQgc2hvdWxkIHdyaXRlIHRoZSBvdXRwdXQgdG8KICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLURFUExPWURJUic+PGZpbGVuYW1lPkRFUExPWURJUjwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4sCi0gICAgICAgICAgICB3aGljaCBpcyBub3QgdG8gYmUgY29uZnVzZWQgd2l0aAotICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItREVQTE9ZX0RJUic+PGZpbGVuYW1lPkRFUExPWV9ESVI8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgd2hpY2ggaXMgbm90IHRvIGJlIGNvbmZ1c2VkIHdpdGggPGZpbGVuYW1lPiR7REVQTE9ZX0RJUn08L2ZpbGVuYW1lPi4KICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGVwbG95PC9maWxlbmFtZT4gY2xhc3Mgc2V0cyB1cAogICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2RlcGxveTwvZmlsZW5hbWU+IGFzIGEgc2hhcmVkIHN0YXRlIChzc3RhdGUpIHRhc2sgdGhhdAogICAgICAgICAgICAgY2FuIGJlIGFjY2VsZXJhdGVkIHRocm91Z2ggc3N0YXRlIHVzZS4KQEAgLTIyMCw4ICsyMTksOCBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaW1hZ2UgY3JlYXRpb24sIHNlZSB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdpbWFnZS1nZW5lcmF0aW9uLWRldi1lbnZpcm9ubWVudCc+SW1hZ2UgR2VuZXJhdGlvbjwvbGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjaW1hZ2UtZ2VuZXJhdGlvbi1kZXYtZW52aXJvbm1lbnQnPkltYWdlIEdlbmVyYXRpb248L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbC4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApAQCAtMjMyLDcgKzIzMSw3IEBACiAgICAgICAgICAgICBDb21wbGV0ZXMgdGhlIGltYWdlIGdlbmVyYXRpb24gcHJvY2Vzcy4KICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZG9faW1hZ2VfY29tcGxldGU8L2ZpbGVuYW1lPiB0YXNrIHJ1bnMgYWZ0ZXIgdGhlCiAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGhhcyBydW4gdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3Mtcm9vdGZzJz48ZmlsZW5hbWU+ZG9faW1hZ2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbWFnZSc+PGZpbGVuYW1lPmRvX2ltYWdlPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICB0YXNrIGR1cmluZyB3aGljaCBpbWFnZSBwcmUtcHJvY2Vzc2luZyBvY2N1cnMgYW5kIHRocm91Z2gKICAgICAgICAgICAgIGR5bmFtaWNhbGx5IGdlbmVyYXRlZCA8ZmlsZW5hbWU+ZG9faW1hZ2VfKjwvZmlsZW5hbWU+IHRhc2tzIHRoZQogICAgICAgICAgICAgaW1hZ2UgaXMgY29uc3RydWN0ZWQuCkBAIC0yNDYsOCArMjQ1LDggQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGltYWdlIGNyZWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0naW1hZ2UtZ2VuZXJhdGlvbi1kZXYtZW52aXJvbm1lbnQnPkltYWdlIEdlbmVyYXRpb248L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2ltYWdlLWdlbmVyYXRpb24tZGV2LWVudmlyb25tZW50Jz5JbWFnZSBHZW5lcmF0aW9uPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKQEAgLTI2OCw3ICsyNjcsNyBAQAogICAgICAgICAgICAgYW5kCiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3Mtcm9vdGZzJz48ZmlsZW5hbWU+ZG9fcm9vdGZzPC9maWxlbmFtZT48L2xpbms+KSwKICAgICAgICAgICAgIHJ1biB1bmRlcgotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nZmFrZXJvb3QtYW5kLXBzZXVkbyc+ZmFrZXJvb3Q8L2xpbms+LgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNmYWtlcm9vdC1hbmQtcHNldWRvJz5mYWtlcm9vdDwvdWxpbms+LgogICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgPHRpdGxlPkNhdXRpb248L3RpdGxlPgogCkBAIC0yODAsNyArMjc5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgVUlEIGFuZC9vciBHSUQgb2YgdGhlIG9yaWdpbmFsIGZpbGUsIHdoaWNoIGlzIHVzdWFsbHkgbm90CiAgICAgICAgICAgICAgICAgICAgIHdoYXQgeW91IHdhbnQuCiAgICAgICAgICAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1pbnNhbmUnPjxmaWxlbmFtZT5ob3N0LXVzZXItY29udGFtaW5hdGVkPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2luc2FuZS1ob3N0LXVzZXItY29udGFtaW5hdGVkJz48ZmlsZW5hbWU+aG9zdC11c2VyLWNvbnRhbWluYXRlZDwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICAgICAgICAgICAgICBRQSBjaGVjayBjaGVja3MgZm9yIGZpbGVzIHRoYXQgcHJvYmFibHkgaGF2ZSB0aGUgd3JvbmcKICAgICAgICAgICAgICAgICAgICAgb3duZXJzaGlwLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTM0Miw4ICszNDEsOCBAQAogICAgICAgICAgICAgRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24sIHNlZSB0aGUKICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QS0dERVNUV09SSyc+PGZpbGVuYW1lPlBLR0RFU1RXT1JLPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nYXV0b21hdGljYWxseS1hZGRlZC1ydW50aW1lLWRlcGVuZGVuY2llcyc+QXV0b21hdGljYWxseSBBZGRlZCBSdW50aW1lIERlcGVuZGVuY2llczwvbGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjYXV0b21hdGljYWxseS1hZGRlZC1ydW50aW1lLWRlcGVuZGVuY2llcyc+QXV0b21hdGljYWxseSBBZGRlZCBSdW50aW1lIERlcGVuZGVuY2llczwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC0zNjcsOCArMzY2LDggQEAKICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVJfREVCJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9ERUI8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+CiAgICAgICAgICAgICBkaXJlY3RvcnkgaW4gdGhlIHBhY2thZ2UgZmVlZHMgYXJlYS4KICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQnPlBhY2thZ2UgRmVlZHM8L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3BhY2thZ2UtZmVlZHMtZGV2LWVudmlyb25tZW50Jz5QYWNrYWdlIEZlZWRzPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKQEAgLTM4MSw4ICszODAsOCBAQAogICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItREVQTE9ZX0RJUl9JUEsnPjxmaWxlbmFtZT5ERVBMT1lfRElSX0lQSzwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4KICAgICAgICAgICAgIGRpcmVjdG9yeSBpbiB0aGUgcGFja2FnZSBmZWVkcyBhcmVhLgogICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdwYWNrYWdlLWZlZWRzLWRldi1lbnZpcm9ubWVudCc+UGFja2FnZSBGZWVkczwvbGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjcGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQnPlBhY2thZ2UgRmVlZHM8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbC4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApAQCAtMzk1LDggKzM5NCw4IEBACiAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBMT1lfRElSX1JQTSc+PGZpbGVuYW1lPkRFUExPWV9ESVJfUlBNPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgogICAgICAgICAgICAgZGlyZWN0b3J5IGluIHRoZSBwYWNrYWdlIGZlZWRzIGFyZWEuCiAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQotICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3BhY2thZ2UtZmVlZHMtZGV2LWVudmlyb25tZW50Jz5QYWNrYWdlIEZlZWRzPC9saW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNwYWNrYWdlLWZlZWRzLWRldi1lbnZpcm9ubWVudCc+UGFja2FnZSBGZWVkczwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC00MDgsOCArNDA3LDggQEAKICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLURFUExPWV9ESVJfVEFSJz48ZmlsZW5hbWU+REVQTE9ZX0RJUl9UQVI8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+CiAgICAgICAgICAgICBkaXJlY3RvcnkgaW4gdGhlIHBhY2thZ2UgZmVlZHMgYXJlYS4KICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQnPlBhY2thZ2UgRmVlZHM8L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3BhY2thZ2UtZmVlZHMtZGV2LWVudmlyb25tZW50Jz5QYWNrYWdlIEZlZWRzPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKQEAgLTQzMCw5ICs0MjksODcgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIExvY2F0ZXMgcGF0Y2ggZmlsZXMgYW5kIGFwcGxpZXMgdGhlbSB0byB0aGUgc291cmNlIGNvZGUuCi0gICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncGF0Y2hpbmctZGV2LWVudmlyb25tZW50Jz5QYXRjaGluZzwvbGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBZnRlciBmZXRjaGluZyBhbmQgdW5wYWNraW5nIHNvdXJjZSBmaWxlcywgdGhlIGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgdXNlcyB0aGUgcmVjaXBlJ3MKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIHN0YXRlbWVudHMgdG8gbG9jYXRlIGFuZCBhcHBseSBwYXRjaCBmaWxlcyB0byB0aGUgc291cmNlIGNvZGUuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIHVzZXMgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUZJTEVTUEFUSCc+PGZpbGVuYW1lPkZJTEVTUEFUSDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byBkZXRlcm1pbmUgdGhlIGRlZmF1bHQgc2V0IG9mIGRpcmVjdG9yaWVzIHdoZW4KKyAgICAgICAgICAgICAgICBzZWFyY2hpbmcgZm9yIHBhdGNoZXMuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICBQYXRjaCBmaWxlcywgYnkgZGVmYXVsdCwgYXJlIDxmaWxlbmFtZT4qLnBhdGNoPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5kaWZmPC9maWxlbmFtZT4gZmlsZXMgY3JlYXRlZCBhbmQga2VwdCBpbiBhCisgICAgICAgICAgICBzdWJkaXJlY3Rvcnkgb2YgdGhlIGRpcmVjdG9yeSBob2xkaW5nIHRoZSByZWNpcGUgZmlsZS4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCBjb25zaWRlciB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NSc+PGZpbGVuYW1lPmJsdWV6NTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIHJlY2lwZSBmcm9tIHRoZSBPRS1Db3JlIGxheWVyIChpLmUuCisgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS9tZXRhPC9maWxlbmFtZT4pOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBUaGlzIHJlY2lwZSBoYXMgdHdvIHBhdGNoIGZpbGVzIGxvY2F0ZWQgaGVyZToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSW4gdGhlIDxmaWxlbmFtZT5ibHVlejU8L2ZpbGVuYW1lPiByZWNpcGUsIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBzdGF0ZW1lbnRzIHBvaW50IHRvIHRoZSBzb3VyY2UgYW5kCisgICAgICAgICAgICBwYXRjaCBmaWxlcyBuZWVkZWQgdG8gYnVpbGQgdGhlIHBhY2thZ2UuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBJbiB0aGUgY2FzZSBmb3IgdGhlIDxmaWxlbmFtZT5ibHVlejVfNS40OC5iYjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgcmVjaXBlLCB0aGUgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBzdGF0ZW1lbnRzIGFyZSBmcm9tIGFuCisgICAgICAgICAgICAgICAgaW5jbHVkZSBmaWxlIDxmaWxlbmFtZT5ibHVlejUuaW5jPC9maWxlbmFtZT4uCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFzIG1lbnRpb25lZCBlYXJsaWVyLCB0aGUgYnVpbGQgc3lzdGVtIHRyZWF0cyBmaWxlcyB3aG9zZSBmaWxlCisgICAgICAgICAgICB0eXBlcyBhcmUgPGZpbGVuYW1lPi5wYXRjaDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPi5kaWZmPC9maWxlbmFtZT4gYXMgcGF0Y2ggZmlsZXMuCisgICAgICAgICAgICBIb3dldmVyLCB5b3UgY2FuIHVzZSB0aGUgImFwcGx5PXllcyIgcGFyYW1ldGVyIHdpdGggdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHN0YXRlbWVudCB0byBpbmRpY2F0ZSBhbnkgZmlsZSBhcyBhCisgICAgICAgICAgICBwYXRjaCBmaWxlOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTUkNfVVJJID0gIiBcCisgICAgICAgICAgZ2l0Oi8vPHJlcGxhY2VhYmxlPnBhdGhfdG9fcmVwbzwvcmVwbGFjZWFibGU+LzxyZXBsYWNlYWJsZT5zb21lX3BhY2thZ2U8L3JlcGxhY2VhYmxlPiBcCisgICAgICAgICAgZmlsZTovLzxyZXBsYWNlYWJsZT5maWxlPC9yZXBsYWNlYWJsZT47YXBwbHk9eWVzIFwKKyAgICAgIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBDb252ZXJzZWx5LCBpZiB5b3UgaGF2ZSBhIGRpcmVjdG9yeSBmdWxsIG9mIHBhdGNoIGZpbGVzIGFuZCB5b3UKKyAgICAgICAgICAgIHdhbnQgdG8gZXhjbHVkZSBzb21lIHNvIHRoYXQgdGhlIDxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+CisgICAgICAgICAgICB0YXNrIGRvZXMgbm90IGFwcGx5IHRoZW0gZHVyaW5nIHRoZSBwYXRjaCBwaGFzZSwgeW91IGNhbiB1c2UKKyAgICAgICAgICAgIHRoZSAiYXBwbHk9bm8iIHBhcmFtZXRlciB3aXRoIHRoZSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+CisgICAgICAgICAgICBzdGF0ZW1lbnQ6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNSQ19VUkkgPSAiIFwKKyAgICAgICAgICBnaXQ6Ly88cmVwbGFjZWFibGU+cGF0aF90b19yZXBvPC9yZXBsYWNlYWJsZT4vPHJlcGxhY2VhYmxlPnNvbWVfcGFja2FnZTwvcmVwbGFjZWFibGU+IFwKKyAgICAgICAgICBmaWxlOi8vPHJlcGxhY2VhYmxlPnBhdGhfdG9fbG90c19vZl9wYXRjaF9maWxlczwvcmVwbGFjZWFibGU+IFwKKyAgICAgICAgICBmaWxlOi8vPHJlcGxhY2VhYmxlPnBhdGhfdG9fbG90c19vZl9wYXRjaF9maWxlczwvcmVwbGFjZWFibGU+LzxyZXBsYWNlYWJsZT5wYXRjaF9maWxlNTwvcmVwbGFjZWFibGU+O2FwcGx5PW5vIFwKKyAgICAgIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIGFzc3VtaW5nIGFsbCB0aGUgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeQorICAgICAgICAgICAgaG9sZGluZyB0aGUgcGF0Y2ggZmlsZXMgZW5kIHdpdGggZWl0aGVyIDxmaWxlbmFtZT4ucGF0Y2g8L2ZpbGVuYW1lPgorICAgICAgICAgICAgb3IgPGZpbGVuYW1lPi5kaWZmPC9maWxlbmFtZT4sIGV2ZXJ5IGZpbGUgd291bGQgYmUgYXBwbGllZCBhcyBhCisgICAgICAgICAgICBwYXRjaCBieSBkZWZhdWx0IGV4Y2VwdCBmb3IgdGhlCisgICAgICAgICAgICA8cmVwbGFjZWFibGU+cGF0Y2hfZmlsZTU8L3JlcGxhY2VhYmxlPiBwYXRjaC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBmaW5kIG91dCBtb3JlIGFib3V0IHRoZSBwYXRjaGluZyBwcm9jZXNzIGluIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjcGF0Y2hpbmctZGV2LWVudmlyb25tZW50Jz5QYXRjaGluZzwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsIGFuZCB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNuZXctcmVjaXBlLXBhdGNoaW5nLWNvZGUnPlBhdGNoaW5nIENvZGU8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC00NTEsOCArNTI4LDkgQEAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBDcmVhdGVzIHRoZSBmaWxlIGFuZCBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBhbiBpbnN0YWxsYWJsZSBTREsuCiAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWdlbmVyYXRpb24tZGV2LWVudmlyb25tZW50Jz5TREsgR2VuZXJhdGlvbjwvbGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc2RrLWdlbmVyYXRpb24tZGV2LWVudmlyb25tZW50Jz5TREsgR2VuZXJhdGlvbjwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsIGZvciBtb3JlCisgICAgICAgICAgICBpbmZvcm1hdGlvbi4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApAQCAtNTM4LDggKzYxNiw5IEBACiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUyc+PGZpbGVuYW1lPlM8L2ZpbGVuYW1lPjwvbGluaz4gdmFyaWFibGUgYWxzbwogICAgICAgICAgICAgcGxheXMgYSByb2xlIGluIHdoZXJlIHVucGFja2VkIHNvdXJjZSBmaWxlcyB1bHRpbWF0ZWx5IHJlc2lkZS4KICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyBzb3VyY2UgZmlsZXMgYXJlIHVucGFja2VkLCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc291cmNlLWZldGNoaW5nLWRldi1lbnZpcm9ubWVudCc+U291cmNlIEZldGNoaW5nPC9saW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gYW5kIHRoZSA8ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc291cmNlLWZldGNoaW5nLWRldi1lbnZpcm9ubWVudCc+U291cmNlIEZldGNoaW5nPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwgYW5kIGFsc28KKyAgICAgICAgICAgIHNlZSB0aGUgPGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPiBhbmQKICAgICAgICAgICAgIDxmaWxlbmFtZT5TPC9maWxlbmFtZT4gdmFyaWFibGUgZGVzY3JpcHRpb25zLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgpAQCAtNTkzLDI0ICs2NzIsMTMgQEAKICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIAotICAgIDxzZWN0aW9uIGlkPSdyZWYtdGFza3MtY2hlY2t1cmlhbGwnPgotICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmRvX2NoZWNrdXJpYWxsPC9maWxlbmFtZT48L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVmFsaWRhdGVzIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICB2YWx1ZSBmb3IgYWxsIHJlY2lwZXMgcmVxdWlyZWQgdG8gYnVpbGQgYSB0YXJnZXQuCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KICAgICA8c2VjdGlvbiBpZD0ncmVmLXRhc2tzLWNsZWFuJz4KICAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5kb19jbGVhbjwvZmlsZW5hbWU+PC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFJlbW92ZXMgYWxsIG91dHB1dCBmaWxlcyBmb3IgYSB0YXJnZXQgZnJvbSB0aGUKICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy11bnBhY2snPjxmaWxlbmFtZT5kb191bnBhY2s8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIHRhc2sgZm9yd2FyZCAoaS5lLgotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhdGNoJz48ZmlsZW5hbWU+ZG9fdW5wYWNrPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgdGFzayBmb3J3YXJkIChpLmUuIDxmaWxlbmFtZT5kb191bnBhY2s8L2ZpbGVuYW1lPiwKICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1jb25maWd1cmUnPjxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPjwvbGluaz4sCiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtY29tcGlsZSc+PGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPjwvbGluaz4sCiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtaW5zdGFsbCc+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjwvbGluaz4sCkBAIC02MjcsOCArNjk1LDggQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFJ1bm5pbmcgdGhpcyB0YXNrIGRvZXMgbm90IHJlbW92ZSB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NoYXJlZC1zdGF0ZS1jYWNoZSc+c3N0YXRlPC9saW5rPikgY2FjaGUKLSAgICAgICAgICAgIGZpbGVzLgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzaGFyZWQtc3RhdGUtY2FjaGUnPnNzdGF0ZTwvdWxpbms+CisgICAgICAgICAgICBjYWNoZSBmaWxlcy4KICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgaWYgbm8gY2hhbmdlcyBoYXZlIGJlZW4gbWFkZSBhbmQgdGhlIHJlY2lwZSBpcwogICAgICAgICAgICAgcmVidWlsdCBhZnRlciBjbGVhbmluZywgb3V0cHV0IGZpbGVzIGFyZSBzaW1wbHkgcmVzdG9yZWQgZnJvbSB0aGUKICAgICAgICAgICAgIHNzdGF0ZSBjYWNoZS4KQEAgLTY0NCw4ICs3MTIsOSBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgUmVtb3ZlcyBhbGwgb3V0cHV0IGZpbGVzLCBzaGFyZWQgc3RhdGUKLSAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSdzaGFyZWQtc3RhdGUtY2FjaGUnPnNzdGF0ZTwvbGluaz4pIGNhY2hlLCBhbmQKLSAgICAgICAgICAgIGRvd25sb2FkZWQgc291cmNlIGZpbGVzIGZvciBhIHRhcmdldCAoaS5lLiB0aGUgY29udGVudHMgb2YKKyAgICAgICAgICAgICg8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NoYXJlZC1zdGF0ZS1jYWNoZSc+c3N0YXRlPC91bGluaz4pCisgICAgICAgICAgICBjYWNoZSwgYW5kIGRvd25sb2FkZWQgc291cmNlIGZpbGVzIGZvciBhIHRhcmdldCAoaS5lLiB0aGUgY29udGVudHMKKyAgICAgICAgICAgIG9mCiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRExfRElSJz48ZmlsZW5hbWU+RExfRElSPC9maWxlbmFtZT48L2xpbms+KS4KICAgICAgICAgICAgIEVzc2VudGlhbGx5LCB0aGUgPGZpbGVuYW1lPmRvX2NsZWFuYWxsPC9maWxlbmFtZT4gdGFzayBpcwogICAgICAgICAgICAgaWRlbnRpY2FsIHRvIHRoZQpAQCAtNjc0LDEzICs3NDMsMTQgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFJlbW92ZXMgYWxsIG91dHB1dCBmaWxlcyBhbmQgc2hhcmVkIHN0YXRlCi0gICAgICAgICAgICAoPGxpbmsgbGlua2VuZD0nc2hhcmVkLXN0YXRlLWNhY2hlJz5zc3RhdGU8L2xpbms+KQorICAgICAgICAgICAgKDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc2hhcmVkLXN0YXRlLWNhY2hlJz5zc3RhdGU8L3VsaW5rPikKICAgICAgICAgICAgIGNhY2hlIGZvciBhIHRhcmdldC4KICAgICAgICAgICAgIEVzc2VudGlhbGx5LCB0aGUgPGZpbGVuYW1lPmRvX2NsZWFuc3N0YXRlPC9maWxlbmFtZT4gdGFzayBpcwogICAgICAgICAgICAgaWRlbnRpY2FsIHRvIHRoZQogICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWNsZWFuJz48ZmlsZW5hbWU+ZG9fY2xlYW48L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgIHRhc2sgd2l0aCB0aGUgYWRkZWQgcmVtb3ZhbCBvZiBzaGFyZWQgc3RhdGUKLSAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSdzaGFyZWQtc3RhdGUtY2FjaGUnPnNzdGF0ZTwvbGluaz4pIGNhY2hlLgorICAgICAgICAgICAgKDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc2hhcmVkLXN0YXRlLWNhY2hlJz5zc3RhdGU8L3VsaW5rPikKKyAgICAgICAgICAgIGNhY2hlLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+CkBAIC03MzYsMTQgKzgwNiw2IEBACiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKLSAgICA8c2VjdGlvbiBpZD0ncmVmLXRhc2tzLWZldGNoYWxsJz4KLSAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5kb19mZXRjaGFsbDwvZmlsZW5hbWU+PC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEZldGNoZXMgYWxsIHJlbW90ZSBzb3VyY2VzIHJlcXVpcmVkIHRvIGJ1aWxkIGEgdGFyZ2V0LgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCiAgICAgPHNlY3Rpb24gaWQ9J3JlZi10YXNrcy1saXN0dGFza3MnPgogICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmRvX2xpc3R0YXNrczwvZmlsZW5hbWU+PC90aXRsZT4KIApAQCAtNzU3LDcgKzgxOSw3IEBACiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBDcmVhdGVzIG9yIHVwZGF0ZXMgdGhlIGluZGV4IGluIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQnPlBhY2thZ2UgRmVlZHM8L2xpbms+CisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3BhY2thZ2UtZmVlZHMtZGV2LWVudmlyb25tZW50Jz5QYWNrYWdlIEZlZWRzPC91bGluaz4KICAgICAgICAgICAgIGFyZWEuCiAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICBUaGlzIHRhc2sgaXMgbm90IHRyaWdnZXJlZCB3aXRoIHRoZQpAQCAtODA5LDggKzg3MSw5IEBACiAgICAgICAgICAgICBDcmVhdGVzIHRoZSByb290IGZpbGVzeXN0ZW0gKGZpbGUgYW5kIGRpcmVjdG9yeSBzdHJ1Y3R1cmUpIGZvciBhbgogICAgICAgICAgICAgaW1hZ2UuCiAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0naW1hZ2UtZ2VuZXJhdGlvbi1kZXYtZW52aXJvbm1lbnQnPkltYWdlIEdlbmVyYXRpb248L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdGhlIHJvb3QgZmlsZXN5c3RlbSBpcyBjcmVhdGVkLgorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjaW1hZ2UtZ2VuZXJhdGlvbi1kZXYtZW52aXJvbm1lbnQnPkltYWdlIEdlbmVyYXRpb248L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbCBmb3IgbW9yZQorICAgICAgICAgICAgaW5mb3JtYXRpb24gb24gaG93IHRoZSByb290IGZpbGVzeXN0ZW0gaXMgY3JlYXRlZC4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGVybXMueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGVybXMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjMDlkM2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi10ZXJtcy54bWwKQEAgLTAsMCArMSw1MDcgQEAKKzwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCitbPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+CisKKzxjaGFwdGVyIGlkPSdyZWYtdGVybXMnPgorPHRpdGxlPllvY3RvIFByb2plY3QgVGVybXM8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIEZvbGxvd2luZyBpcyBhIGxpc3Qgb2YgdGVybXMgYW5kIGRlZmluaXRpb25zIHVzZXJzIG5ldyB0byB0aGUgWW9jdG8KKyAgICAgICAgUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCBtaWdodCBmaW5kIGhlbHBmdWwuCisgICAgICAgIFdoaWxlIHNvbWUgb2YgdGhlc2UgdGVybXMgYXJlIHVuaXZlcnNhbCwgdGhlIGxpc3QgaW5jbHVkZXMgdGhlbQorICAgICAgICBqdXN0IGluIGNhc2U6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkFwcGVuZCBGaWxlczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEZpbGVzIHRoYXQgYXBwZW5kIGJ1aWxkIGluZm9ybWF0aW9uIHRvIGEgcmVjaXBlIGZpbGUuCisgICAgICAgICAgICAgICAgQXBwZW5kIGZpbGVzIGFyZSBrbm93biBhcyBCaXRCYWtlIGFwcGVuZCBmaWxlcyBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZXMuCisgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZXhwZWN0cyBldmVyeSBhcHBlbmQgZmlsZSB0byBoYXZlCisgICAgICAgICAgICAgICAgYSBjb3JyZXNwb25kaW5nIHJlY2lwZSAoPGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+KSBmaWxlLgorICAgICAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGUgYXBwZW5kIGZpbGUgYW5kIGNvcnJlc3BvbmRpbmcgcmVjaXBlIGZpbGUKKyAgICAgICAgICAgICAgICBtdXN0IHVzZSB0aGUgc2FtZSByb290IGZpbGVuYW1lLgorICAgICAgICAgICAgICAgIFRoZSBmaWxlbmFtZXMgY2FuIGRpZmZlciBvbmx5IGluIHRoZSBmaWxlIHR5cGUgc3VmZml4IHVzZWQKKyAgICAgICAgICAgICAgICAoZS5nLgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mb3JtZmFjdG9yXzAuMC5iYjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mb3JtZmFjdG9yXzAuMC5iYmFwcGVuZDwvZmlsZW5hbWU+KS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5JbmZvcm1hdGlvbiBpbiBhcHBlbmQgZmlsZXMgZXh0ZW5kcyBvciBvdmVycmlkZXMgdGhlCisgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gaW4gdGhlIHNpbWlsYXJseS1uYW1lZCByZWNpcGUgZmlsZS4KKyAgICAgICAgICAgICAgICBGb3IgYW4gZXhhbXBsZSBvZiBhbiBhcHBlbmQgZmlsZSBpbiB1c2UsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdXNpbmctYmJhcHBlbmQtZmlsZXMnPlVzaW5nIC5iYmFwcGVuZCBGaWxlcyBpbiBZb3VyIExheWVyPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEFwcGVuZCBmaWxlcyBjYW4gYWxzbyB1c2Ugd2lsZGNhcmQgcGF0dGVybnMgaW4gdGhlaXIKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiBudW1iZXJzIHNvIHRoZXkgY2FuIGJlIGFwcGxpZWQgdG8gbW9yZSB0aGFuIG9uZQorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIG9mIHRoZSB1bmRlcmx5aW5nIHJlY2lwZSBmaWxlLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nYml0YmFrZS10ZXJtJz4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Qml0QmFrZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSB0YXNrIGV4ZWN1dG9yIGFuZCBzY2hlZHVsZXIgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCisgICAgICAgICAgICAgICAgc3lzdGVtIHRvIGJ1aWxkIGltYWdlcy4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBCaXRCYWtlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyc+Qml0QmFrZSBVc2VyIE1hbnVhbDwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdib2FyZC1zdXBwb3J0LXBhY2thZ2UtYnNwLXRlcm0nPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Cb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBIGdyb3VwIG9mIGRyaXZlcnMsIGRlZmluaXRpb25zLCBhbmQgb3RoZXIgY29tcG9uZW50cyB0aGF0CisgICAgICAgICAgICAgICAgcHJvdmlkZSBzdXBwb3J0IGZvciBhIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQlNQcywgc2VlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7Jz5Zb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZTwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxwYXJhIGlkPSdidWlsZC1kaXJlY3RvcnknPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGlzIHRlcm0gcmVmZXJzIHRvIHRoZSBhcmVhIHVzZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAorICAgICAgICAgICAgICAgIHN5c3RlbSBmb3IgYnVpbGRzLgorICAgICAgICAgICAgICAgIFRoZSBhcmVhIGlzIGNyZWF0ZWQgd2hlbiB5b3UgPGZpbGVuYW1lPnNvdXJjZTwvZmlsZW5hbWU+IHRoZQorICAgICAgICAgICAgICAgIHNldHVwIGVudmlyb25tZW50IHNjcmlwdCB0aGF0IGlzIGZvdW5kIGluIHRoZSBTb3VyY2UgRGlyZWN0b3J5CisgICAgICAgICAgICAgICAgKGkuZS4gPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4pLgorICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UT1BESVInPjxmaWxlbmFtZT5UT1BESVI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSBwb2ludHMgdG8gdGhlIEJ1aWxkIERpcmVjdG9yeS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgaGF2ZSBhIGxvdCBvZiBmbGV4aWJpbGl0eSB3aGVuIGNyZWF0aW5nIHRoZSBCdWlsZAorICAgICAgICAgICAgICAgIERpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICBGb2xsb3dpbmcgYXJlIHNvbWUgZXhhbXBsZXMgdGhhdCBzaG93IGhvdyB0byBjcmVhdGUgdGhlCisgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIFRoZSBleGFtcGxlcyBhc3N1bWUgeW91cgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+IGlzCisgICAgICAgICAgICAgICAgbmFtZWQgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q3JlYXRlIHRoZSBCdWlsZCBEaXJlY3RvcnkgaW5zaWRlIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZSBEaXJlY3RvcnkgYW5kIGxldCB0aGUgbmFtZSBvZiB0aGUgQnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeSBkZWZhdWx0IHRvIDxmaWxlbmFtZT5idWlsZDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkICRIT01FL3Bva3kKKyAgICAgJCBzb3VyY2UgJk9FX0lOSVRfRklMRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q3JlYXRlIHRoZSBCdWlsZCBEaXJlY3RvcnkgaW5zaWRlIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGhvbWUgZGlyZWN0b3J5IGFuZCBzcGVjaWZpY2FsbHkgbmFtZSBpdAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRlc3QtYnVpbGRzPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgJEhPTUUKKyAgICAgJCBzb3VyY2UgcG9reS8mT0VfSU5JVF9GSUxFOyB0ZXN0LWJ1aWxkcworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGUgYSBkaXJlY3RvcnkgcGF0aCBhbmQgc3BlY2lmaWNhbGx5IG5hbWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCBEaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICBBbnkgaW50ZXJtZWRpYXRlIGZvbGRlcnMgaW4gdGhlIHBhdGhuYW1lIG11c3QgZXhpc3QuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG5leHQgZXhhbXBsZSBjcmVhdGVzIGEgQnVpbGQgRGlyZWN0b3J5IG5hbWVkCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+WVAtJlBPS1lWRVJTSU9OOzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5IHdpdGhpbiB0aGUgZXhpc3RpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSA8ZmlsZW5hbWU+bXlidWlsZHM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJGNkICRIT01FCisgICAgICQgc291cmNlICRIT01FL3Bva3kvJk9FX0lOSVRfRklMRTsgJEhPTUUvbXlidWlsZHMvWVAtJlBPS1lWRVJTSU9OOworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBCdWlsZCBEaXJlY3RvcnkgY29udGFpbnMKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRoZSBidWlsZCBzeXN0ZW0gdXNlcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgaXRzIHdvcmsuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiBjYW5ub3QgYmUgdW5kZXIgTkZTLgorICAgICAgICAgICAgICAgICAgICBUaHVzLCBieSBkZWZhdWx0LCB0aGUgQnVpbGQgRGlyZWN0b3J5IGNhbm5vdCBiZSB1bmRlciBORlMuCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdSBuZWVkIHRoZSBCdWlsZCBEaXJlY3RvcnkgdG8gYmUgdW5kZXIgTkZTLAorICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIHNldCB0aGlzIHVwIGJ5IHNldHRpbmcgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgICAgIHRvIHVzZSBhIGxvY2FsIGRyaXZlLgorICAgICAgICAgICAgICAgICAgICBEb2luZyBzbyBlZmZlY3RpdmVseSBzZXBhcmF0ZXMgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZyb20gPGZpbGVuYW1lPlRPUERJUjwvZmlsZW5hbWU+LCB3aGljaCBpcyB0aGUgQnVpbGQKKyAgICAgICAgICAgICAgICAgICAgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0naGFyZHdhcmUtYnVpbGQtc3lzdGVtLXRlcm0nPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCBIb3N0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhlIHN5c3RlbSB1c2VkIHRvIGJ1aWxkIGltYWdlcyBpbiBhIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICBEZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyB0aGUKKyAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBob3N0LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DbGFzc2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgRmlsZXMgdGhhdCBwcm92aWRlIGZvciBsb2dpYyBlbmNhcHN1bGF0aW9uIGFuZCBpbmhlcml0YW5jZSBzbworICAgICAgICAgICAgICAgIHRoYXQgY29tbW9ubHkgdXNlZCBwYXR0ZXJucyBjYW4gYmUgZGVmaW5lZCBvbmNlIGFuZCB0aGVuCisgICAgICAgICAgICAgICAgZWFzaWx5IHVzZWQgaW4gbXVsdGlwbGUgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICBGb3IgcmVmZXJlbmNlIGluZm9ybWF0aW9uIG9uIHRoZSBZb2N0byBQcm9qZWN0IGNsYXNzZXMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMnPkNsYXNzZXM8L2xpbms+IiBjaGFwdGVyLgorICAgICAgICAgICAgICAgIENsYXNzIGZpbGVzIGVuZCB3aXRoIHRoZSA8ZmlsZW5hbWU+LmJiY2xhc3M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGVuYW1lIGV4dGVuc2lvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29uZmlndXJhdGlvbiBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgRmlsZXMgdGhhdCBob2xkIGdsb2JhbCBkZWZpbml0aW9ucyBvZiB2YXJpYWJsZXMsCisgICAgICAgICAgICAgICAgdXNlci1kZWZpbmVkIHZhcmlhYmxlcywgYW5kIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICBUaGVzZSBmaWxlcyB0ZWxsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHdoYXQgdG8KKyAgICAgICAgICAgICAgICBidWlsZCBhbmQgd2hhdCB0byBwdXQgaW50byB0aGUgaW1hZ2UgdG8gc3VwcG9ydCBhCisgICAgICAgICAgICAgICAgcGFydGljdWxhciBwbGF0Zm9ybS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Db25maWd1cmF0aW9uIGZpbGVzIGVuZCB3aXRoIGEgPGZpbGVuYW1lPi5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBmaWxlbmFtZSBleHRlbnNpb24uCisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUgaW4KKyAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KKyAgICAgICAgICAgICAgICBjb250YWlucyB1c2VyLWRlZmluZWQgdmFyaWFibGVzIHRoYXQgYWZmZWN0IGV2ZXJ5IGJ1aWxkLgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3kuY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIGRlZmluZXMgWW9jdG8gImRpc3RybyIgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyB1c2VkIG9ubHkgd2hlbiBidWlsZGluZyB3aXRoIHRoaXMgcG9saWN5LgorICAgICAgICAgICAgICAgIE1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlcywgd2hpY2gKKyAgICAgICAgICAgICAgICBhcmUgbG9jYXRlZCB0aHJvdWdob3V0IHRoZQorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LCBkZWZpbmUKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIGFuZCBhcmUgb25seSB1c2VkIHdoZW4gYnVpbGRpbmcKKyAgICAgICAgICAgICAgICBmb3IgdGhhdCB0YXJnZXQgKGUuZy4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1hY2hpbmUvYmVhZ2xlYm9uZS5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgIGZpbGUgZGVmaW5lcyB2YXJpYWJsZXMgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBBUk0gQ29ydGV4LUE4CisgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgYm9hcmQpLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSd0ZXJtLWNvbnRhaW5lci1sYXllcic+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbnRhaW5lciBMYXllcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIExheWVycyB0aGF0IGhvbGQgb3RoZXIgbGF5ZXJzLgorICAgICAgICAgICAgICAgIEFuIGV4YW1wbGUgb2YgYSBjb250YWluZXIgbGF5ZXIgaXMgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiBsYXllci4KKyAgICAgICAgICAgICAgICBUaGlzIGxheWVyIGNvbnRhaW5zIEJTUCBsYXllcnMgZm9yIHRoZSBJbnRlbC1jb3JlMi0zMgorICAgICAgICAgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3JlZ2lzdGVyZWQnPkludGVsPC90cmFkZW1hcms+IENvbW1vbiBDb3JlCisgICAgICAgICAgICAgICAgKEludGVsLWNvcmUyLTMyKSBhbmQgdGhlIEludGVsLWNvcmVpNy02NAorICAgICAgICAgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3JlZ2lzdGVyZWQnPkludGVsPC90cmFkZW1hcms+IENvbW1vbiBDb3JlCisgICAgICAgICAgICAgICAgKEludGVsLWNvcmVpNy02NCkuCisgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gbGF5ZXIgYWxzbyBjb250YWlucworICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Y29tbW9uLzwvZmlsZW5hbWU+IGRpcmVjdG9yeSwgd2hpY2ggY29udGFpbnMKKyAgICAgICAgICAgICAgICBjb21tb24gY29udGVudCBhY3Jvc3MgdGhvc2UgbGF5ZXJzLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4nPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJbiBnZW5lcmFsLCBhIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbiBpcyBhIGNvbGxlY3Rpb24gb2YKKyAgICAgICAgICAgICAgICBzb2Z0d2FyZSBkZXZlbG9wbWVudCB0b29scyBhbmQgdXRpbGl0aWVzIHRoYXQgcnVuIG9uIG9uZQorICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZSBhbmQgYWxsb3cgeW91IHRvIGRldmVsb3Agc29mdHdhcmUgZm9yIGEKKyAgICAgICAgICAgICAgICBkaWZmZXJlbnQsIG9yIHRhcmdldGVkLCBhcmNoaXRlY3R1cmUuCisgICAgICAgICAgICAgICAgVGhlc2UgdG9vbGNoYWlucyBjb250YWluIGNyb3NzLWNvbXBpbGVycywgbGlua2VycywgYW5kCisgICAgICAgICAgICAgICAgZGVidWdnZXJzIHRoYXQgYXJlIHNwZWNpZmljIHRvIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBZb2N0byBQcm9qZWN0IHN1cHBvcnRzIHR3byBkaWZmZXJlbnQgY3Jvc3MtZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICB0b29sY2hhaW5zOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEEgdG9vbGNoYWluIG9ubHkgdXNlZCBieSBhbmQgd2l0aGluCisgICAgICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIHdoZW4gYnVpbGRpbmcgYW4gaW1hZ2UgZm9yIGEgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkEgcmVsb2NhdGFibGUgdG9vbGNoYWluIHVzZWQgb3V0c2lkZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBieSBkZXZlbG9wZXJzIHdoZW4gZGV2ZWxvcGluZyBhcHBsaWNhdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgd2lsbCBydW4gb24gYSB0YXJnZXRlZCBkZXZpY2UuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5DcmVhdGlvbiBvZiB0aGVzZSB0b29sY2hhaW5zIGlzIHNpbXBsZSBhbmQgYXV0b21hdGVkLgorICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0b29sY2hhaW4gY29uY2VwdHMgYXMgdGhleSBhcHBseSB0byB0aGUKKyAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluLWdlbmVyYXRpb24nPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbiBHZW5lcmF0aW9uPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgcmVsb2NhdGFibGUgdG9vbGNoYWluIGluIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7Jz5Zb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspPC91bGluaz4KKyAgICAgICAgICAgICAgICBtYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEEgY3VzdG9tIFNESyBmb3IgYXBwbGljYXRpb24gZGV2ZWxvcGVycy4KKyAgICAgICAgICAgICAgICBUaGlzIGVTREsgYWxsb3dzIGRldmVsb3BlcnMgdG8gaW5jb3Jwb3JhdGUgdGhlaXIgbGlicmFyeQorICAgICAgICAgICAgICAgIGFuZCBwcm9ncmFtbWluZyBjaGFuZ2VzIGJhY2sgaW50byB0aGUgaW1hZ2UgdG8gbWFrZQorICAgICAgICAgICAgICAgIHRoZWlyIGNvZGUgYXZhaWxhYmxlIHRvIG90aGVyIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIGluZm9ybWF0aW9uIG9uIHRoZSBlU0RLLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgorICAgICAgICAgICAgICAgIG1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW1hZ2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBbiBpbWFnZSBpcyBhbiBhcnRpZmFjdCBvZiB0aGUgQml0QmFrZSBidWlsZCBwcm9jZXNzIGdpdmVuCisgICAgICAgICAgICAgICAgYSBjb2xsZWN0aW9uIG9mIHJlY2lwZXMgYW5kIHJlbGF0ZWQgTWV0YWRhdGEuCisgICAgICAgICAgICAgICAgSW1hZ2VzIGFyZSB0aGUgYmluYXJ5IG91dHB1dCB0aGF0IHJ1biBvbiBzcGVjaWZpYyBoYXJkd2FyZSBvcgorICAgICAgICAgICAgICAgIFFFTVUgYW5kIGFyZSB1c2VkIGZvciBzcGVjaWZpYyB1c2UtY2FzZXMuCisgICAgICAgICAgICAgICAgRm9yIGEgbGlzdCBvZiB0aGUgc3VwcG9ydGVkIGltYWdlIHR5cGVzIHRoYXQgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICBwcm92aWRlcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtaW1hZ2VzJz5JbWFnZXM8L2xpbms+IgorICAgICAgICAgICAgICAgIGNoYXB0ZXIuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxheWVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQSBjb2xsZWN0aW9uIG9mIHJlbGF0ZWQgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICBMYXllcnMgYWxsb3cgeW91IHRvIGNvbnNvbGlkYXRlIHJlbGF0ZWQgbWV0YWRhdGEgdG8KKyAgICAgICAgICAgICAgICBjdXN0b21pemUgeW91ciBidWlsZC4KKyAgICAgICAgICAgICAgICBMYXllcnMgYWxzbyBpc29sYXRlIGluZm9ybWF0aW9uIHVzZWQgd2hlbiBidWlsZGluZworICAgICAgICAgICAgICAgIGZvciBtdWx0aXBsZSBhcmNoaXRlY3R1cmVzLgorICAgICAgICAgICAgICAgIExheWVycyBhcmUgaGllcmFyY2hpY2FsIGluIHRoZWlyIGFiaWxpdHkgdG8gb3ZlcnJpZGUKKyAgICAgICAgICAgICAgICBwcmV2aW91cyBzcGVjaWZpY2F0aW9ucy4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGluY2x1ZGUgYW55IG51bWJlciBvZiBhdmFpbGFibGUgbGF5ZXJzIGZyb20gdGhlCisgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBhbmQgY3VzdG9taXplIHRoZSBidWlsZCBieSBhZGRpbmcgeW91cgorICAgICAgICAgICAgICAgIGxheWVycyBhZnRlciB0aGVtLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VhcmNoIHRoZSBMYXllciBJbmRleCBmb3IgbGF5ZXJzIHVzZWQgd2l0aGluCisgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgaW50cm9kdWN0b3J5IGluZm9ybWF0aW9uIG9uIGxheWVycywgc2VlIHRoZQorICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3RoZS15b2N0by1wcm9qZWN0LWxheWVyLW1vZGVsJz5UaGUgWW9jdG8gUHJvamVjdCBMYXllciBNb2RlbDwvdWxpbms+IgorICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICBGb3IgbW9yZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiBsYXllcnMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZCBDcmVhdGluZyBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICBGb3IgYSBkaXNjdXNzaW9uIHNwZWNpZmljYWxseSBvbiBCU1AgTGF5ZXJzLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZXMgKEJTUCkKKyAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nbWV0YWRhdGEnPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NZXRhZGF0YTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEEga2V5IGVsZW1lbnQgb2YgdGhlIFlvY3RvIFByb2plY3QgaXMgdGhlIE1ldGFkYXRhIHRoYXQKKyAgICAgICAgICAgICAgICBpcyB1c2VkIHRvIGNvbnN0cnVjdCBhIExpbnV4IGRpc3RyaWJ1dGlvbiBhbmQgaXMgY29udGFpbmVkCisgICAgICAgICAgICAgICAgaW4gdGhlIGZpbGVzIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtc3lzdGVtLXRlcm0nPk9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW08L2xpbms+CisgICAgICAgICAgICAgICAgcGFyc2VzIHdoZW4gYnVpbGRpbmcgYW4gaW1hZ2UuCisgICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgTWV0YWRhdGEgaW5jbHVkZXMgcmVjaXBlcywgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgIGZpbGVzLCBhbmQgb3RoZXIgaW5mb3JtYXRpb24gdGhhdCByZWZlcnMgdG8gdGhlIGJ1aWxkCisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zIHRoZW1zZWx2ZXMsIGFzIHdlbGwgYXMgdGhlIGRhdGEgdXNlZCB0bworICAgICAgICAgICAgICAgIGNvbnRyb2wgd2hhdCB0aGluZ3MgZ2V0IGJ1aWx0IGFuZCB0aGUgZWZmZWN0cyBvZiB0aGUKKyAgICAgICAgICAgICAgICBidWlsZC4KKyAgICAgICAgICAgICAgICBNZXRhZGF0YSBhbHNvIGluY2x1ZGVzIGNvbW1hbmRzIGFuZCBkYXRhIHVzZWQgdG8KKyAgICAgICAgICAgICAgICBpbmRpY2F0ZSB3aGF0IHZlcnNpb25zIG9mIHNvZnR3YXJlIGFyZSB1c2VkLCBmcm9tCisgICAgICAgICAgICAgICAgd2hlcmUgdGhleSBhcmUgb2J0YWluZWQsIGFuZCBjaGFuZ2VzIG9yIGFkZGl0aW9ucyB0byB0aGUKKyAgICAgICAgICAgICAgICBzb2Z0d2FyZSBpdHNlbGYgKHBhdGNoZXMgb3IgYXV4aWxpYXJ5IGZpbGVzKSB0aGF0CisgICAgICAgICAgICAgICAgYXJlIHVzZWQgdG8gZml4IGJ1Z3Mgb3IgY3VzdG9taXplIHRoZSBzb2Z0d2FyZSBmb3IgdXNlCisgICAgICAgICAgICAgICAgaW4gYSBwYXJ0aWN1bGFyIHNpdHVhdGlvbi4KKyAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQtQ29yZSBpcyBhbiBpbXBvcnRhbnQgc2V0IG9mIHZhbGlkYXRlZAorICAgICAgICAgICAgICAgIG1ldGFkYXRhLjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPkluIHRoZSBjb250ZXh0IG9mIHRoZSBrZXJuZWwgKCJrZXJuZWwgTWV0YWRhdGEiKSwgdGhlCisgICAgICAgICAgICAgICAgdGVybSByZWZlcnMgdG8gdGhlIGtlcm5lbCBjb25maWcgZnJhZ21lbnRzIGFuZCBmZWF0dXJlcworICAgICAgICAgICAgICAgIGNvbnRhaW5lZCBpbiB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC9jZ2l0LmNnaS95b2N0by1rZXJuZWwtY2FjaGUnPjxmaWxlbmFtZT55b2N0by1rZXJuZWwtY2FjaGU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmEgaWQ9J29lLWNvcmUnPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcGVuRW1iZWRkZWQtQ29yZSAoT0UtQ29yZSk6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBPRS1Db3JlIGlzIG1ldGFkYXRhIGNvbXByaXNlZCBvZiBmb3VuZGF0aW9uYWwgcmVjaXBlcywKKyAgICAgICAgICAgICAgICBjbGFzc2VzLCBhbmQgYXNzb2NpYXRlZCBmaWxlcyB0aGF0IGFyZSBtZWFudCB0byBiZQorICAgICAgICAgICAgICAgIGNvbW1vbiBhbW9uZyBtYW55IGRpZmZlcmVudCBPcGVuRW1iZWRkZWQtZGVyaXZlZCBzeXN0ZW1zLAorICAgICAgICAgICAgICAgIGluY2x1ZGluZyB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICBPRS1Db3JlIGlzIGEgY3VyYXRlZCBzdWJzZXQgb2YgYW4gb3JpZ2luYWwgcmVwb3NpdG9yeQorICAgICAgICAgICAgICAgIGRldmVsb3BlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGNvbW11bml0eSB0aGF0IGhhcyBiZWVuCisgICAgICAgICAgICAgICAgcGFyZWQgZG93biBpbnRvIGEgc21hbGxlciwgY29yZSBzZXQgb2YgY29udGludW91c2x5CisgICAgICAgICAgICAgICAgdmFsaWRhdGVkIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyBhIHRpZ2h0bHkgY29udHJvbGxlZCBhbmQgYW4gcXVhbGl0eS1hc3N1cmVkCisgICAgICAgICAgICAgICAgY29yZSBzZXQgb2YgcmVjaXBlcy48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgY2FuIHNlZSB0aGUgTWV0YWRhdGEgaW4gdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGE8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgb2YgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaSc+U291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdidWlsZC1zeXN0ZW0tdGVybSc+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9wZW5FbWJlZGRlZCBCdWlsZCBTeXN0ZW06PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIHNwZWNpZmljIHRvIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGlzIGJhc2VkIG9uIGFub3RoZXIgcHJvamVjdCBrbm93bgorICAgICAgICAgICAgICAgIGFzICJQb2t5Iiwgd2hpY2ggdXNlcworICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JpdGJha2UtdGVybSc+Qml0QmFrZTwvbGluaz4gYXMgdGhlIHRhc2sKKyAgICAgICAgICAgICAgICBleGVjdXRvci4KKyAgICAgICAgICAgICAgICBUaHJvdWdob3V0IHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gc2V0LCB0aGUKKyAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBzaW1wbHkKKyAgICAgICAgICAgICAgICBhcyAidGhlIGJ1aWxkIHN5c3RlbSIuCisgICAgICAgICAgICAgICAgSWYgb3RoZXIgYnVpbGQgc3lzdGVtcywgc3VjaCBhcyBhIGhvc3Qgb3IgdGFyZ2V0IGJ1aWxkIHN5c3RlbQorICAgICAgICAgICAgICAgIGFyZSByZWZlcmVuY2VkLCB0aGUgZG9jdW1lbnRhdGlvbiBjbGVhcmx5IHN0YXRlcyB0aGUKKyAgICAgICAgICAgICAgICBkaWZmZXJlbmNlLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBGb3Igc29tZSBoaXN0b3JpY2FsIGluZm9ybWF0aW9uIGFib3V0IFBva3ksIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncG9reSc+UG9reTwvbGluaz4gdGVybS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlBhY2thZ2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBJbiB0aGUgY29udGV4dCBvZiB0aGUgWW9jdG8gUHJvamVjdCwgdGhpcyB0ZXJtIHJlZmVycyB0byBhCisgICAgICAgICAgICAgICAgcmVjaXBlJ3MgcGFja2FnZWQgb3V0cHV0IHByb2R1Y2VkIGJ5IEJpdEJha2UgKGkuZS4gYQorICAgICAgICAgICAgICAgICJiYWtlZCByZWNpcGUiKS4KKyAgICAgICAgICAgICAgICBBIHBhY2thZ2UgaXMgZ2VuZXJhbGx5IHRoZSBjb21waWxlZCBiaW5hcmllcyBwcm9kdWNlZCBmcm9tIHRoZQorICAgICAgICAgICAgICAgIHJlY2lwZSdzIHNvdXJjZXMuCisgICAgICAgICAgICAgICAgWW91ICJiYWtlIiBzb21ldGhpbmcgYnkgcnVubmluZyBpdCB0aHJvdWdoIEJpdEJha2UuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+SXQgaXMgd29ydGggbm90aW5nIHRoYXQgdGhlIHRlcm0gInBhY2thZ2UiIGNhbiwKKyAgICAgICAgICAgICAgICBpbiBnZW5lcmFsLCBoYXZlIHN1YnRsZSBtZWFuaW5ncy4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIHBhY2thZ2VzIHJlZmVycmVkIHRvIGluIHRoZQorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZXF1aXJlZC1wYWNrYWdlcy1mb3ItdGhlLWhvc3QtZGV2ZWxvcG1lbnQtc3lzdGVtJz5SZXF1aXJlZCBQYWNrYWdlcyBmb3IgdGhlIEhvc3QgRGV2ZWxvcG1lbnQgU3lzdGVtPC9saW5rPiIKKyAgICAgICAgICAgICAgICBzZWN0aW9uIGFyZSBjb21waWxlZCBiaW5hcmllcyB0aGF0LCB3aGVuIGluc3RhbGxlZCwgYWRkCisgICAgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eSB0byB5b3VyIExpbnV4IGRpc3RyaWJ1dGlvbi48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5Bbm90aGVyIHBvaW50IHdvcnRoIG5vdGluZyBpcyB0aGF0IGhpc3RvcmljYWxseSB3aXRoaW4KKyAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCwgcmVjaXBlcyB3ZXJlIHJlZmVycmVkIHRvIGFzIHBhY2thZ2VzIC0gdGh1cywKKyAgICAgICAgICAgICAgICB0aGUgZXhpc3RlbmNlIG9mIHNldmVyYWwgQml0QmFrZSB2YXJpYWJsZXMgdGhhdCBhcmUgc2VlbWluZ2x5CisgICAgICAgICAgICAgICAgbWlzLW5hbWVkLAorICAgICAgICAgICAgICAgIChlLmcuIDxsaW5rIGxpbmtlbmQ9J3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L2xpbms+LCBhbmQKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEUnPjxmaWxlbmFtZT5QRTwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlBhY2thZ2UgR3JvdXBzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQXJiaXRyYXJ5IGdyb3VwcyBvZiBzb2Z0d2FyZSBSZWNpcGVzLgorICAgICAgICAgICAgICAgIFlvdSB1c2UgcGFja2FnZSBncm91cHMgdG8gaG9sZCByZWNpcGVzIHRoYXQsIHdoZW4gYnVpbHQsCisgICAgICAgICAgICAgICAgdXN1YWxseSBhY2NvbXBsaXNoIGEgc2luZ2xlIHRhc2suCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGEgcGFja2FnZSBncm91cCBjb3VsZCBjb250YWluIHRoZSByZWNpcGVzIGZvciBhCisgICAgICAgICAgICAgICAgY29tcGFueeKAmXMgcHJvcHJpZXRhcnkgb3IgdmFsdWUtYWRkIHNvZnR3YXJlLgorICAgICAgICAgICAgICAgIE9yLCB0aGUgcGFja2FnZSBncm91cCBjb3VsZCBjb250YWluIHRoZSByZWNpcGVzIHRoYXQgZW5hYmxlCisgICAgICAgICAgICAgICAgZ3JhcGhpY3MuCisgICAgICAgICAgICAgICAgQSBwYWNrYWdlIGdyb3VwIGlzIHJlYWxseSBqdXN0IGFub3RoZXIgcmVjaXBlLgorICAgICAgICAgICAgICAgIEJlY2F1c2UgcGFja2FnZSBncm91cCBmaWxlcyBhcmUgcmVjaXBlcywgdGhleSBlbmQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4gZmlsZW5hbWUgZXh0ZW5zaW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdwb2t5Jz4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UG9reTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFBva3ksIHdoaWNoIGlzIHByb25vdW5jZWQgPGVtcGhhc2lzPlBvY2s8L2VtcGhhc2lzPi1lZSwKKyAgICAgICAgICAgICAgICBpcyBhIHJlZmVyZW5jZSBlbWJlZGRlZCBkaXN0cmlidXRpb24gYW5kIGEgcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgdGVzdCBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgIFBva3kgcHJvdmlkZXMgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBBIGJhc2UtbGV2ZWwgZnVuY3Rpb25hbCBkaXN0cm8gdXNlZCB0byBpbGx1c3RyYXRlCisgICAgICAgICAgICAgICAgICAgICAgICBob3cgdG8gY3VzdG9taXplIGEgZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEEgbWVhbnMgYnkgd2hpY2ggdG8gdGVzdCB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cyAoaS5lLiBQb2t5IGlzIHVzZWQgdG8gdmFsaWRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBBIHZlaGljbGUgdGhyb3VnaCB3aGljaCB5b3UgY2FuIGRvd25sb2FkCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIFBva3kgaXMgbm90IGEgcHJvZHVjdCBsZXZlbCBkaXN0cm8uCisgICAgICAgICAgICAgICAgUmF0aGVyLCBpdCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGN1c3RvbWl6YXRpb24uCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFBva3kgYmVnYW4gYW4gb3Blbi1zb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgcHJvamVjdCBpbml0aWFsbHkgZGV2ZWxvcGVkIGJ5IE9wZW5lZEhhbmQuCisgICAgICAgICAgICAgICAgICAgIE9wZW5lZEhhbmQgZGV2ZWxvcGVkIFBva3kgZnJvbSB0aGUgZXhpc3RpbmcKKyAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBjcmVhdGUgYSBjb21tZXJjaWFsbHkKKyAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGFibGUgYnVpbGQgc3lzdGVtIGZvciBlbWJlZGRlZCBMaW51eC4KKyAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgSW50ZWwgQ29ycG9yYXRpb24gYWNxdWlyZWQgT3BlbmVkSGFuZCwgdGhlCisgICAgICAgICAgICAgICAgICAgIHBva3kgcHJvamVjdCBiZWNhbWUgdGhlIGJhc2lzIGZvciB0aGUgWW9jdG8gUHJvamVjdCdzCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJlY2lwZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEEgc2V0IG9mIGluc3RydWN0aW9ucyBmb3IgYnVpbGRpbmcgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgQSByZWNpcGUgZGVzY3JpYmVzIHdoZXJlIHlvdSBnZXQgc291cmNlIGNvZGUsIHdoaWNoIHBhdGNoZXMKKyAgICAgICAgICAgICAgICB0byBhcHBseSwgaG93IHRvIGNvbmZpZ3VyZSB0aGUgc291cmNlLCBob3cgdG8gY29tcGlsZSBpdCBhbmQgc28gb24uCisgICAgICAgICAgICAgICAgUmVjaXBlcyBhbHNvIGRlc2NyaWJlIGRlcGVuZGVuY2llcyBmb3IgbGlicmFyaWVzIG9yIGZvciBvdGhlcgorICAgICAgICAgICAgICAgIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgUmVjaXBlcyByZXByZXNlbnQgdGhlIGxvZ2ljYWwgdW5pdCBvZiBleGVjdXRpb24sIHRoZSBzb2Z0d2FyZQorICAgICAgICAgICAgICAgIHRvIGJ1aWxkLCB0aGUgaW1hZ2VzIHRvIGJ1aWxkLCBhbmQgdXNlIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPiBmaWxlIGV4dGVuc2lvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0ncmVmZXJlbmNlLWtpdC10ZXJtJz4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmVmZXJlbmNlIEtpdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIEEgd29ya2luZyBleGFtcGxlIG9mIGEgc3lzdGVtLCB3aGljaCBpbmNsdWRlcyBhCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYm9hcmQtc3VwcG9ydC1wYWNrYWdlLWJzcC10ZXJtJz5CU1A8L2xpbms+CisgICAgICAgICAgICAgICAgYXMgd2VsbCBhcyBhCisgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0naGFyZHdhcmUtYnVpbGQtc3lzdGVtLXRlcm0nPmJ1aWxkIGhvc3Q8L2xpbms+CisgICAgICAgICAgICAgICAgYW5kIG90aGVyIGNvbXBvbmVudHMsIHRoYXQgY2FuIHdvcmsgb24gc3BlY2lmaWMgaGFyZHdhcmUuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPHBhcmEgaWQ9J3NvdXJjZS1kaXJlY3RvcnknPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Tb3VyY2UgRGlyZWN0b3J5OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhpcyB0ZXJtIHJlZmVycyB0byB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBjcmVhdGVkIGFzIGEgcmVzdWx0CisgICAgICAgICAgICAgICAgb2YgY3JlYXRpbmcgYSBsb2NhbCBjb3B5IG9mIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdAorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgPGZpbGVuYW1lPmdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3k8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIG9yIGV4cGFuZGluZyBhIHJlbGVhc2VkIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gdGFyYmFsbC4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgQ3JlYXRpbmcgYSBsb2NhbCBjb3B5IG9mIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5IGlzIHRoZSByZWNvbW1lbmRlZCBtZXRob2QgZm9yIHNldHRpbmcgdXAKKyAgICAgICAgICAgICAgICAgICAgeW91ciBTb3VyY2UgRGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICBTb21ldGltZXMgeW91IG1pZ2h0IGhlYXIgdGhlIHRlcm0gInBva3kgZGlyZWN0b3J5IiB1c2VkIHRvIHJlZmVyCisgICAgICAgICAgICAgICAgdG8gdGhpcyBkaXJlY3Rvcnkgc3RydWN0dXJlLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGZpbGUgb3IKKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IG5hbWVzIHRoYXQgY29udGFpbiBzcGFjZXMuCisgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdGhhdCB0aGUgU291cmNlIERpcmVjdG9yeSB5b3UgdXNlIGRvZXMgbm90IGNvbnRhaW4KKyAgICAgICAgICAgICAgICAgICAgdGhlc2UgdHlwZXMgb2YgbmFtZXMuCisgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBTb3VyY2UgRGlyZWN0b3J5IGNvbnRhaW5zIEJpdEJha2UsIERvY3VtZW50YXRpb24sCisgICAgICAgICAgICAgICAgTWV0YWRhdGEgYW5kIG90aGVyIGZpbGVzIHRoYXQgYWxsIHN1cHBvcnQgdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB5b3UgbXVzdCBoYXZlIHRoZSBTb3VyY2UgRGlyZWN0b3J5IGluIHBsYWNlIG9uCisgICAgICAgICAgICAgICAgeW91ciBkZXZlbG9wbWVudCBzeXN0ZW0gaW4gb3JkZXIgdG8gZG8gYW55IGRldmVsb3BtZW50IHVzaW5nCisgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+V2hlbiB5b3UgY3JlYXRlIGEgbG9jYWwgY29weSBvZiB0aGUgR2l0IHJlcG9zaXRvcnksIHlvdQorICAgICAgICAgICAgICAgIGNhbiBuYW1lIHRoZSByZXBvc2l0b3J5IGFueXRoaW5nIHlvdSBsaWtlLgorICAgICAgICAgICAgICAgIFRocm91Z2hvdXQgbXVjaCBvZiB0aGUgZG9jdW1lbnRhdGlvbiwgInBva3kiCisgICAgICAgICAgICAgICAgaXMgdXNlZCBhcyB0aGUgbmFtZSBvZiB0aGUgdG9wLWxldmVsIGZvbGRlciBvZiB0aGUgbG9jYWwgY29weSBvZgorICAgICAgICAgICAgICAgIHRoZSBwb2t5IEdpdCByZXBvc2l0b3J5LgorICAgICAgICAgICAgICAgIFNvLCBmb3IgZXhhbXBsZSwgY2xvbmluZyB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQKKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5IHJlc3VsdHMgaW4gYSBsb2NhbCBHaXQgcmVwb3NpdG9yeSB3aG9zZSB0b3AtbGV2ZWwKKyAgICAgICAgICAgICAgICBmb2xkZXIgaXMgYWxzbyBuYW1lZCAicG9reSIuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+V2hpbGUgaXQgaXMgbm90IHJlY29tbWVuZGVkIHRoYXQgeW91IHVzZSB0YXJiYWxsIGV4cGFuc2lvbgorICAgICAgICAgICAgICAgIHRvIHNldCB1cCB0aGUgU291cmNlIERpcmVjdG9yeSwgaWYgeW91IGRvLCB0aGUgdG9wLWxldmVsCisgICAgICAgICAgICAgICAgZGlyZWN0b3J5IG5hbWUgb2YgdGhlIFNvdXJjZSBEaXJlY3RvcnkgaXMgZGVyaXZlZCBmcm9tIHRoZQorICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSB0YXJiYWxsLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBkb3dubG9hZGluZyBhbmQgdW5wYWNraW5nCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiZZT0NUT19QT0tZX1RBUkJBTEw7PC9maWxlbmFtZT4gcmVzdWx0cyBpbiBhCisgICAgICAgICAgICAgICAgU291cmNlIERpcmVjdG9yeSB3aG9zZSByb290IGZvbGRlciBpcyBuYW1lZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4mWU9DVE9fUE9LWTs8L2ZpbGVuYW1lPi48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5JdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUKKyAgICAgICAgICAgICAgICBTb3VyY2UgRGlyZWN0b3J5IGNyZWF0ZWQgYnkgdW5wYWNraW5nIGEgcmVsZWFzZWQgdGFyYmFsbCBhcworICAgICAgICAgICAgICAgIGNvbXBhcmVkIHRvIGNsb25pbmcKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIFdoZW4geW91IHVucGFjayBhIHRhcmJhbGwsIHlvdSBoYXZlIGFuIGV4YWN0IGNvcHkgb2YgdGhlIGZpbGVzCisgICAgICAgICAgICAgICAgYmFzZWQgb24gdGhlIHRpbWUgb2YgcmVsZWFzZSAtIGEgZml4ZWQgcmVsZWFzZSBwb2ludC4KKyAgICAgICAgICAgICAgICBBbnkgY2hhbmdlcyB5b3UgbWFrZSB0byB5b3VyIGxvY2FsIGZpbGVzIGluIHRoZSBTb3VyY2UgRGlyZWN0b3J5CisgICAgICAgICAgICAgICAgYXJlIG9uIHRvcCBvZiB0aGUgcmVsZWFzZSBhbmQgd2lsbCByZW1haW4gbG9jYWwgb25seS4KKyAgICAgICAgICAgICAgICBPbiB0aGUgb3RoZXIgaGFuZCwgd2hlbiB5b3UgY2xvbmUgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeSwgeW91IGhhdmUgYW4gYWN0aXZlIGRldmVsb3BtZW50IHJlcG9zaXRvcnkgd2l0aAorICAgICAgICAgICAgICAgIGFjY2VzcyB0byB0aGUgdXBzdHJlYW0gcmVwb3NpdG9yeSdzIGJyYW5jaGVzIGFuZCB0YWdzLgorICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgYW55IGxvY2FsIGNoYW5nZXMgeW91IG1ha2UgdG8gdGhlIGxvY2FsCisgICAgICAgICAgICAgICAgU291cmNlIERpcmVjdG9yeSBjYW4gYmUgbGF0ZXIgYXBwbGllZCB0byBhY3RpdmUgZGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICBicmFuY2hlcyBvZiB0aGUgdXBzdHJlYW0gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBHaXQKKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5LjwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbmNlcHRzIHJlbGF0ZWQgdG8gR2l0CisgICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzLCBicmFuY2hlcywgYW5kIHRhZ3MsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNyZXBvc2l0b3JpZXMtdGFncy1hbmQtYnJhbmNoZXMnPlJlcG9zaXRvcmllcywgVGFncywgYW5kIEJyYW5jaGVzPC91bGluaz4iCisgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5UYXNrOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQSB1bml0IG9mIGV4ZWN1dGlvbiBmb3IgQml0QmFrZSAoZS5nLgorICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1jb21waWxlJz48ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtZmV0Y2gnPjxmaWxlbmFtZT5kb19mZXRjaDwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGF0Y2gnPjxmaWxlbmFtZT5kb19wYXRjaDwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICBhbmQgc28gZm9ydGgpLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSd0b2FzdGVyLXRlcm0nPjxlbXBoYXNpcz5Ub2FzdGVyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgQSB3ZWIgaW50ZXJmYWNlIHRvIHRoZSBZb2N0byBQcm9qZWN0J3MKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbTwvbGluaz4uCisgICAgICAgICAgICAgICAgVGhlIGludGVyZmFjZSBlbmFibGVzIHlvdSB0byBjb25maWd1cmUgYW5kIHJ1biB5b3VyIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICBJbmZvcm1hdGlvbiBhYm91dCBidWlsZHMgaXMgY29sbGVjdGVkIGFuZCBzdG9yZWQgaW4gYSBkYXRhYmFzZS4KKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gVG9hc3Rlciwgc2VlIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1RPQVNUX1VSTDsnPlRvYXN0ZXIgVXNlciBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VXBzdHJlYW06PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBIHJlZmVyZW5jZSB0byBzb3VyY2UgY29kZSBvciByZXBvc2l0b3JpZXMKKyAgICAgICAgICAgICAgICB0aGF0IGFyZSBub3QgbG9jYWwgdG8gdGhlIGRldmVsb3BtZW50IHN5c3RlbSBidXQgbG9jYXRlZCBpbiBhCisgICAgICAgICAgICAgICAgbWFzdGVyIGFyZWEgdGhhdCBpcyBjb250cm9sbGVkIGJ5IHRoZSBtYWludGFpbmVyIG9mIHRoZSBzb3VyY2UKKyAgICAgICAgICAgICAgICBjb2RlLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpbiBvcmRlciBmb3IgYSBkZXZlbG9wZXIgdG8gd29yayBvbiBhIHBhcnRpY3VsYXIKKyAgICAgICAgICAgICAgICBwaWVjZSBvZiBjb2RlLCB0aGV5IG5lZWQgdG8gZmlyc3QgZ2V0IGEgY29weSBvZiBpdCBmcm9tIGFuCisgICAgICAgICAgICAgICAgInVwc3RyZWFtIiBzb3VyY2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKworPC9jaGFwdGVyPgorPCEtLQordmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAorLS0+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi12YXJpYWJsZXMueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdmFyaWFibGVzLnhtbAppbmRleCAyYjAxNzIzLi4xYzU1YTkyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi12YXJpYWJsZXMueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXZhcmlhYmxlcy54bWwKQEAgLTIyLDcgKzIyLDcgQEAKICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRCc+RDwvbGluaz4KICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRUZJX1BST1ZJREVSJz5FPC9saW5rPgogICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1GRUFUVVJFX1BBQ0tBR0VTJz5GPC9saW5rPgotICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1HREInPkc8L2xpbms+CisgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUdDQ1BJRSc+RzwvbGluaz4KICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSE9NRVBBR0UnPkg8L2xpbms+CiAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlDRUNDX0RJU0FCTEVEJz5JPC9saW5rPgogPCEtLSAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1nbG9zc2FyeS1qJz5KPC9saW5rPiAtLT4KQEAgLTcyLDEyICs3MiwxMyBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQUxMT1dfRU1QVFknPjxnbG9zc3Rlcm0+QUxMT1dfRU1QVFk8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIEFMTE9XX0VNUFRZW2RvY10gPSAiU3BlY2lmaWVzIGlmIGFuIG91dHB1dCBwYWNrYWdlIHNob3VsZCBzdGlsbCBiZSBwcm9kdWNlZCBpZiBpdCBpcyBlbXB0eS4iCisgICAgICAgICAgICAgICAgQUxMT1dfRU1QVFlbZG9jXSA9ICJTcGVjaWZpZXMgd2hldGhlciB0byBwcm9kdWNlIGFuIG91dHB1dCBwYWNrYWdlIGV2ZW4gaWYgaXQgaXMgZW1wdHkuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KLSAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgaWYgYW4gb3V0cHV0IHBhY2thZ2Ugc2hvdWxkIHN0aWxsIGJlIHByb2R1Y2VkIGlmIGl0IGlzIGVtcHR5LgorICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB3aGV0aGVyIHRvIHByb2R1Y2UgYW4gb3V0cHV0IHBhY2thZ2UgZXZlbiBpZiBpdCBpcworICAgICAgICAgICAgICAgICAgIGVtcHR5LgogICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIEJpdEJha2UgZG9lcyBub3QgcHJvZHVjZSBlbXB0eSBwYWNrYWdlcy4KICAgICAgICAgICAgICAgICAgICBUaGlzIGRlZmF1bHQgYmVoYXZpb3IgY2FuIGNhdXNlIGlzc3VlcyB3aGVuIHRoZXJlIGlzIGFuCiAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJERVBFTkRTJz48ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4gb3IKQEAgLTI1MywxMyArMjU0LDE0IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1BUFBFTkQnPjxnbG9zc3Rlcm0+QVBQRU5EPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBBUFBFTkRbZG9jXSA9ICJBbiBvdmVycmlkZSBsaXN0IG9mIGFwcGVuZCBzdHJpbmdzIGZvciBlYWNoIExBQkVMLiIKKyAgICAgICAgICAgICAgICBBUFBFTkRbZG9jXSA9ICJBbiBvdmVycmlkZSBsaXN0IG9mIGFwcGVuZCBzdHJpbmdzIGZvciB0YXJnZXQgc3BlY2lmaWVkIHVzaW5nIExBQkVMUy4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgotICAgICAgICAgICAgICAgICAgICBBbiBvdmVycmlkZSBsaXN0IG9mIGFwcGVuZCBzdHJpbmdzIGZvciBlYWNoCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1MQUJFTFMnPjxmaWxlbmFtZT5MQUJFTDwvZmlsZW5hbWU+PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgQW4gb3ZlcnJpZGUgbGlzdCBvZiBhcHBlbmQgc3RyaW5ncyBmb3IgZWFjaCB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUxBQkVMUyc+PGZpbGVuYW1lPkxBQkVMUzwvZmlsZW5hbWU+PC9saW5rPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTM1NCw3ICszNTYsNyBAQAogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBJbiBPcGVuRW1iZWRkZWQgQ29yZSwgPGZpbGVuYW1lPkFTU1VNRV9QUk9WSURFRDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIEluIE9wZW5FbWJlZGRlZC1Db3JlLCA8ZmlsZW5hbWU+QVNTVU1FX1BST1ZJREVEPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgbW9zdGx5IHNwZWNpZmllcyBuYXRpdmUgdG9vbHMgdGhhdCBzaG91bGQgbm90IGJlIGJ1aWx0LgogICAgICAgICAgICAgICAgICAgICBBbiBleGFtcGxlIGlzIDxmaWxlbmFtZT5naXQtbmF0aXZlPC9maWxlbmFtZT4sIHdoaWNoIHdoZW4KICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkLCBhbGxvd3MgZm9yIHRoZSBHaXQgYmluYXJ5IGZyb20gdGhlIGhvc3QgdG8gYmUKQEAgLTc3NSwxMCArNzc3LDkgQEAKICAgICAgICAgICAgV0FSTjogICAgICBJc3N1ZSBhIHdhcm5pbmcgYnV0IGNvbnRpbnVlIHRoZQogICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHdoZW4gYSB0aHJlc2hvbGQgaXMgYnJva2VuLgogICAgICAgICAgICAgICAgICAgICAgIFN1YnNlcXVlbnQgd2FybmluZ3MgYXJlIGlzc3VlZCBhcwotICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCX0RJU0tNT05fV0FSTklOVEVSVkFMJz5CQl9ESVNLTU9OX1dBUk5JTlRFUlZBTDwvbGluaz4gdmFyaWFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgd2hpY2ggbXVzdCBiZSBkZWZpbmVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgIGNvbmYvbG9jYWwuY29uZiBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgYnkgdGhlIEJCX0RJU0tNT05fV0FSTklOVEVSVkFMCisgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIHdoaWNoIG11c3QgYmUgZGVmaW5lZCBpbgorICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb25mL2xvY2FsLmNvbmYgZmlsZS4KIAogICAgICAgICA8cmVwbGFjZWFibGU+ZGlyPC9yZXBsYWNlYWJsZT4gaXM6CiAgICAgICAgICAgIEFueSBkaXJlY3RvcnkgeW91IGNob29zZS4gWW91IGNhbiBzcGVjaWZ5IG9uZSBvcgpAQCAtOTcxLDE1ICs5NzIsNDEgQEAKIAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBzcGVlZGluZyB1cCBidWlsZHMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3NwZWVkaW5nLXVwLXRoZS1idWlsZCc+U3BlZWRpbmcgVXAgdGhlIEJ1aWxkPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NwZWVkaW5nLXVwLWEtYnVpbGQnPlNwZWVkaW5nIFVwIGEgQnVpbGQ8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQkJfU0VSVkVSX1RJTUVPVVQnPjxnbG9zc3Rlcm0+QkJfU0VSVkVSX1RJTUVPVVQ8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJCX1NFUlZFUl9USU1FT1VUIFtkb2NdID0gIlNwZWNpZmllcyB0aGUgdGltZSAoaW4gc2Vjb25kcykgYWZ0ZXIgd2hpY2ggdG8gdW5sb2FkIHRoZSBCaXRCYWtlIHNlcnZlciBkdWUgdG8gaW5hY3Rpdml0eS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+Cis8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIHRpbWUgKGluIHNlY29uZHMpIGFmdGVyIHdoaWNoIHRvIHVubG9hZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBzZXJ2ZXIgZHVlIHRvIGluYWN0aXZpdHkuCisgICAgICAgICAgICAgICAgICAgIFNldCA8ZmlsZW5hbWU+QkJfU0VSVkVSX1RJTUVPVVQ8L2ZpbGVuYW1lPiB0byBkZXRlcm1pbmUgaG93CisgICAgICAgICAgICAgICAgICAgIGxvbmcgdGhlIEJpdEJha2Ugc2VydmVyIHN0YXlzIHJlc2lkZW50IGJldHdlZW4gaW52b2NhdGlvbnMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHN0YXRlbWVudCBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBpbnN0cnVjdHMgdGhlIHNlcnZlcgorICAgICAgICAgICAgICAgICAgICB0byBiZSB1bmxvYWRlZCBhZnRlciAyMCBzZWNvbmRzIG9mIGluYWN0aXZpdHk6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQkJfU0VSVkVSX1RJTUVPVVQgPSAiMjAiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdGhlIHNlcnZlciB0byBuZXZlciBiZSB1bmxvYWRlZCwgc2V0CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQl9TRVJWRVJfVElNRU9VVDwvZmlsZW5hbWU+IHRvICItMSIuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQkJDTEFTU0VYVEVORCc+PGdsb3NzdGVybT5CQkNMQVNTRVhURU5EPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBCQkNMQVNTRVhURU5EW2RvY10gPSAiQWxsb3dzIHlvdSB0byBleHRlbmQgYSByZWNpcGUgc28gdGhhdCBpdCBidWlsZHMgdmFyaWFudHMgb2YgdGhlIHNvZnR3YXJlLiBDb21tb24gdmFyaWFudHMgZm9yIHJlY2lwZXMgYXJlICduYXRpdmUnLCAnY3Jvc3MnLCAnbmF0aXZlc2RrJyBhbmQgbXVsdGlsaWJzLiIKKyAgICAgICAgICAgICAgICBCQkNMQVNTRVhURU5EW2RvY10gPSAiQWxsb3dzIHlvdSB0byBleHRlbmQgYSByZWNpcGUgc28gdGhhdCBpdCBidWlsZHMgdmFyaWFudHMgb2YgdGhlIHNvZnR3YXJlLiBDb21tb24gdmFyaWFudHMgZm9yIHJlY2lwZXMgYXJlICduYXRpdmUnLCAnY3Jvc3MnLCAnbmF0aXZlc2RrJywgYW5kIG11bHRpbGlicy4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CkBAIC0xMTE2LDYgKzExNDMsNTMgQEAKICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KIAorICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJCRklMRVNfRFlOQU1JQyc+PGdsb3NzdGVybT5CQkZJTEVTX0RZTkFNSUM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJCRklMRVNfRFlOQU1JQ1tkb2NdID0gIkFjdGl2YXRlcyBjb250ZW50IHdoZW4gaWRlbnRpZmllZCBsYXllcnMgYXJlIHByZXNlbnQuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KKyAgICAgICAgICAgICAgICAgICAgQWN0aXZhdGVzIGNvbnRlbnQgd2hlbiBpZGVudGlmaWVkIGxheWVycyBhcmUgcHJlc2VudC4KKyAgICAgICAgICAgICAgICAgICAgWW91IGlkZW50aWZ5IHRoZSBsYXllcnMgYnkgdGhlIGNvbGxlY3Rpb25zIHRoYXQgdGhlIGxheWVycworICAgICAgICAgICAgICAgICAgICBkZWZpbmUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPkJCRklMRVNfRFlOQU1JQzwvZmlsZW5hbWU+IHZhcmlhYmxlIHRvCisgICAgICAgICAgICAgICAgICAgIGF2b2lkIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlcyB3aG9zZQorICAgICAgICAgICAgICAgICAgICBjb3JyZXNwb25kaW5nIDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPiBmaWxlIGlzIGluIGEgbGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBhdHRlbXB0cyB0byBtb2RpZnkgb3RoZXIgbGF5ZXJzIHRocm91Z2gKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IGJ1dCBkb2VzIG5vdCB3YW50IHRvCisgICAgICAgICAgICAgICAgICAgIGludHJvZHVjZSBhIGhhcmQgZGVwZW5kZW5jeSBvbiB0aG9zZSBvdGhlciBsYXllcnMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIGZvcm0gZm9yCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQkZJTEVTX0RZTkFNSUM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICA8cmVwbGFjZWFibGU+Y29sbGVjdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPmZpbGVuYW1lX3BhdHRlcm48L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBpZGVudGlmaWVzIHR3byBjb2xsZWN0aW9uIG5hbWVzIGFuZAorICAgICAgICAgICAgICAgICAgICB0d28gZmlsZW5hbWUgcGF0dGVybnM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQkJGSUxFU19EWU5BTUlDICs9ICIgXAorICAgICAgICAgY2xhbmctbGF5ZXI6JHtMQVlFUkRJUn0vYmJhcHBlbmRzL21ldGEtY2xhbmcvKi8qLyouYmJhcHBlbmQgXAorICAgICAgICAgY29yZToke0xBWUVSRElSfS9iYmFwcGVuZHMvb3BlbmVtYmVkZGVkLWNvcmUvbWV0YS8qLyovKi5iYmFwcGVuZCBcCisgICAgICIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGlzIG5leHQgZXhhbXBsZSBzaG93cyBhbiBlcnJvciBtZXNzYWdlIHRoYXQgb2NjdXJzCisgICAgICAgICAgICAgICAgICAgIGJlY2F1c2UgaW52YWxpZCBlbnRyaWVzIGFyZSBmb3VuZCwgd2hpY2ggY2F1c2UgcGFyc2luZyB0bworICAgICAgICAgICAgICAgICAgICBhYm9ydDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBFUlJPUjogQkJGSUxFU19EWU5BTUlDIGVudHJpZXMgbXVzdCBiZSBvZiB0aGUgZm9ybSAmbHQ7Y29sbGVjdGlvbiBuYW1lJmd0OzombHQ7ZmlsZW5hbWUgcGF0dGVybiZndDssIG5vdDoKKyAgICAgICAgIC93b3JrL215LWxheWVyL2JiYXBwZW5kcy9tZXRhLXNlY3VyaXR5LWlzYWZ3LyovKi8qLmJiYXBwZW5kCisgICAgICAgICAvd29yay9teS1sYXllci9iYmFwcGVuZHMvb3BlbmVtYmVkZGVkLWNvcmUvbWV0YS8qLyovKi5iYmFwcGVuZAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQkJJTkNMVURFTE9HUyc+PGdsb3NzdGVybT5CQklOQ0xVREVMT0dTPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KICAgICAgICAgICAgICAgICBCQklOQ0xVREVMT0dTW2RvY10gPSAiVmFyaWFibGUgdGhhdCBjb250cm9scyBob3cgQml0QmFrZSBkaXNwbGF5cyBsb2dzIG9uIGJ1aWxkIGZhaWx1cmUuIgpAQCAtMTIwMCw4ICsxMjc0LDggQEAKICAgICAgICAgICAgICAgICAgICAgVGhlIGV4cHJlc3Npb25zIGFyZSBjb21wYXJlZCBhZ2FpbnN0IHRoZSBmdWxsIHBhdGhzIHRvCiAgICAgICAgICAgICAgICAgICAgIHRoZSBmaWxlcy4KICAgICAgICAgICAgICAgICAgICAgRm9yIGNvbXBsZXRlIHN5bnRheCBpbmZvcm1hdGlvbiwgc2VlIFB5dGhvbidzCi0gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50YXRpb24gYXQKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2RvY3MucHl0aG9uLm9yZy9yZWxlYXNlLzIuMy9saWIvcmUtc3ludGF4Lmh0bWwnPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uIGZvciB0aGUgYXBwcm9wcmlhdGUgcmVsZWFzZSBhdAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZG9jcy5weXRob24ub3JnL3JlbGVhc2UvJz48L3VsaW5rPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTE1MjAsMTIgKzE1OTQsMTIgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJVSUxEX0NQUEZMQUdTJz48Z2xvc3N0ZXJtPkJVSUxEX0NQUEZMQUdTPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBCVUlMRF9DUFBGTEFHU1tkb2NdID0gIlNwZWNpZmllcyB0aGUgZmxhZ3MgdG8gcGFzcyB0byB0aGUgQyBwcmUtcHJvY2Vzc29yIChpLmUuIHRvIGJvdGggdGhlIEMgYW5kIHRoZSBDKysgY29tcGlsZXJzKSB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgYnVpbGQgaG9zdC4iCisgICAgICAgICAgICAgICAgQlVJTERfQ1BQRkxBR1NbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGZsYWdzIHRvIHBhc3MgdG8gdGhlIEMgcHJlcHJvY2Vzc29yIChpLmUuIHRvIGJvdGggdGhlIEMgYW5kIHRoZSBDKysgY29tcGlsZXJzKSB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgYnVpbGQgaG9zdC4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgotICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGZsYWdzIHRvIHBhc3MgdG8gdGhlIEMgcHJlLXByb2Nlc3NvcgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGZsYWdzIHRvIHBhc3MgdG8gdGhlIEMgcHJlcHJvY2Vzc29yCiAgICAgICAgICAgICAgICAgICAgIChpLmUuIHRvIGJvdGggdGhlIEMgYW5kIHRoZSBDKysgY29tcGlsZXJzKSB3aGVuIGJ1aWxkaW5nCiAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgYnVpbGQgaG9zdC4KICAgICAgICAgICAgICAgICAgICAgV2hlbiBidWlsZGluZyBpbiB0aGUgPGZpbGVuYW1lPi1uYXRpdmU8L2ZpbGVuYW1lPiBjb250ZXh0LApAQCAtMTc5Nyw3ICsxODcxLDcgQEAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcXVpcmVzIHRoYXQgdGhlIHZhbHVlIHlvdSBwcm92aWRlIGZvciB0aGUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJVSUxESElTVE9SWV9DT01NSVRfQVVUSE9SPC9maWxlbmFtZT4gdmFyaWFibGUKLSAgICAgICAgICAgICAgICAgICAgdGFrZXMgdGhlIGZvcm0gb2YgIm5hbWUgJmx0O2VtYWlsQGhvc3QmZ3Q7Ii4KKyAgICAgICAgICAgICAgICAgICAgdGFrZXMgdGhlIGZvcm0gb2YgIm5hbWUgPHJlcGxhY2VhYmxlPmVtYWlsQGhvc3Q8L3JlcGxhY2VhYmxlPiIuCiAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGluZyBhbiBlbWFpbCBhZGRyZXNzIG9yIGhvc3QgdGhhdCBpcyBub3QgdmFsaWQgZG9lcwogICAgICAgICAgICAgICAgICAgICBub3QgcHJvZHVjZSBhbiBlcnJvci4KICAgICAgICAgICAgICAgICA8L3BhcmE+CkBAIC0xODQ5LDEyICsxOTIzLDEyIEBACiAgICAgICAgICAgICAgICAgICAgIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyB0aGUgYnVpbGQgaGlzdG9yeSBmZWF0dXJlcwogICAgICAgICAgICAgICAgICAgICB0byBiZSBlbmFibGVkLgogICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgYnVpbGQgaGlzdG9yeSB3b3Jrcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWFpbnRhaW5pbmctYnVpbGQtb3V0cHV0LXF1YWxpdHknPk1haW50YWluaW5nIEJ1aWxkIE91dHB1dCBRdWFsaXR5PC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLWJ1aWxkLW91dHB1dC1xdWFsaXR5Jz5NYWludGFpbmluZyBCdWlsZCBPdXRwdXQgUXVhbGl0eTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzcGVjaWZ5IHRocmVlIGZlYXR1cmVzIGluIHRoZSBmb3JtIG9mIGEKKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzcGVjaWZ5IHRoZXNlIGZlYXR1cmVzIGluIHRoZSBmb3JtIG9mIGEKICAgICAgICAgICAgICAgICAgICAgc3BhY2Utc2VwYXJhdGVkIGxpc3Q6CiAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPmltYWdlOjwvZW1waGFzaXM+CkBAIC0xODY5LDEyICsxOTQzLDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5hbHlzaXMgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSBzb2Z0d2FyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGtpdCAoU0RLKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+dGFzazo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhdmUgb3V0cHV0IGZpbGUgc2lnbmF0dXJlcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NoYXJlZC1zdGF0ZS1jYWNoZSc+c2hhcmVkIHN0YXRlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3N0YXRlKSB0YXNrcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHNhdmVzIG9uZSBmaWxlIHBlciB0YXNrIGFuZCBsaXN0cyB0aGUgU0hBLTI1NgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrc3VtcyBmb3IgZWFjaCBmaWxlIHN0YWdlZCAoaS5lLiB0aGUgb3V0cHV0IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHRhc2spLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIDxmaWxlbmFtZT5idWlsZGhpc3Rvcnk8L2ZpbGVuYW1lPiBjbGFzcwotICAgICAgICAgICAgICAgICAgICBlbmFibGVzIGFsbCB0aHJlZSBmZWF0dXJlczoKKyAgICAgICAgICAgICAgICAgICAgZW5hYmxlcyB0aGUgZm9sbG93aW5nIGZlYXR1cmVzOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIEJVSUxESElTVE9SWV9GRUFUVVJFUyA/PSAiaW1hZ2UgcGFja2FnZSBzZGsiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KQEAgLTIyMTIsMTMgKzIyOTQsNiBAQAogICAgICAgICAgICAgICAgICAgICBsZXZlbCwgaW4gY2FzZSB0aGUgaGFyZHdhcmUgc3VwcG9ydHMgQmx1ZXRvb3RoIGJ1dCB5b3UKICAgICAgICAgICAgICAgICAgICAgZG8gbm90IGV2ZXIgaW50ZW5kIHRvIHVzZSBpdC4KICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkVfRkVBVFVSRVMnPjxmaWxlbmFtZT5NQUNISU5FX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIGFuZCA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPX0ZFQVRVUkVTJz48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcy4KLSAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CiAKQEAgLTI3MzIsMTMgKzI4MDcsMTMgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUNPUkVCQVNFJz48Z2xvc3N0ZXJtPkNPUkVCQVNFPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBDT1JFQkFTRVtkb2NdID0gIlNwZWNpZmllcyB0aGUgcGFyZW50IGRpcmVjdG9yeSBvZiB0aGUgT3BlbkVtYmVkZGVkIENvcmUgTWV0YWRhdGEgbGF5ZXIgKGkuZS4gbWV0YSkuIgorICAgICAgICAgICAgICAgIENPUkVCQVNFW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBwYXJlbnQgZGlyZWN0b3J5IG9mIHRoZSBPcGVuRW1iZWRkZWQtQ29yZSBNZXRhZGF0YSBsYXllciAoaS5lLiBtZXRhKS4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgotICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIHBhcmVudCBkaXJlY3Rvcnkgb2YgdGhlIE9wZW5FbWJlZGRlZAotICAgICAgICAgICAgICAgICAgICBDb3JlIE1ldGFkYXRhIGxheWVyIChpLmUuIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIHBhcmVudCBkaXJlY3Rvcnkgb2YgdGhlIE9wZW5FbWJlZGRlZC1Db3JlCisgICAgICAgICAgICAgICAgICAgIE1ldGFkYXRhIGxheWVyIChpLmUuIDxmaWxlbmFtZT5tZXRhPC9maWxlbmFtZT4pLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtMjkzOCwxMiArMzAxMywxMiBAQAogICAgICAgICAgICAgICAgICAgICB0YXNrLgogICAgICAgICAgICAgICAgICAgICBUaGlzIGxvY2F0aW9uIGRlZmF1bHRzIHRvOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICR7PGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPldPUktESVI8L2xpbms+fS9pbWFnZQorICAgICAke1dPUktESVJ9L2ltYWdlCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPkNhdXRpb248L3RpdGxlPgogICAgICAgICAgICAgICAgICAgICAgICAgVGFza3MgdGhhdCByZWFkIGZyb20gb3Igd3JpdGUgdG8gdGhpcyBkaXJlY3Rvcnkgc2hvdWxkCiAgICAgICAgICAgICAgICAgICAgICAgICBydW4gdW5kZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2Zha2Vyb290LWFuZC1wc2V1ZG8nPmZha2Vyb290PC9saW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjZmFrZXJvb3QtYW5kLXBzZXVkbyc+ZmFrZXJvb3Q8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CkBAIC0zMTkwLDkgKzMyNjUsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkIGFueSBydW50aW1lIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBwcm9kdWNlZCBieSB0aGUgdHdvIHJlY2lwZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGFzIGV4cGxhaW5lZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2F1dG9tYXRpY2FsbHktYWRkZWQtcnVudGltZS1kZXBlbmRlbmNpZXMnPkF1dG9tYXRpY2FsbHkgQWRkZWQgUnVudGltZSBEZXBlbmRlbmNpZXM8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLCBydW50aW1lIGRlcGVuZGVuY2llcyB3aWxsIG9mdGVuIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGVkIGF1dG9tYXRpY2FsbHksIG1lYW5pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjYXV0b21hdGljYWxseS1hZGRlZC1ydW50aW1lLWRlcGVuZGVuY2llcyc+QXV0b21hdGljYWxseSBBZGRlZCBSdW50aW1lIERlcGVuZGVuY2llczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25jZXB0cyBNYW51YWwsIHJ1bnRpbWUgZGVwZW5kZW5jaWVzIHdpbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Z0ZW4gYmUgYWRkZWQgYXV0b21hdGljYWxseSwgbWVhbmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+IGFsb25lIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpY2llbnQgZm9yIG1vc3QgcmVjaXBlcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC0zMjM0LDEzICszMzEwLDEzIEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1ERVBMT1lfRElSJz48Z2xvc3N0ZXJtPkRFUExPWV9ESVI8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIERFUExPWV9ESVJbZG9jXSA9ICJQb2ludHMgdG8gdGhlIGdlbmVyYWwgYXJlYSB0aGF0IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgdG8gcGxhY2UgaW1hZ2VzLCBwYWNrYWdlcywgU0RLcyBhbmQgb3RoZXIgb3V0cHV0IGZpbGVzIHRoYXQgYXJlIHJlYWR5IHRvIGJlIHVzZWQgb3V0c2lkZSBvZiB0aGUgYnVpbGQgc3lzdGVtLiIKKyAgICAgICAgICAgICAgICBERVBMT1lfRElSW2RvY10gPSAiUG9pbnRzIHRvIHRoZSBnZW5lcmFsIGFyZWEgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRvIHBsYWNlIGltYWdlcywgcGFja2FnZXMsIFNES3MsIGFuZCBvdGhlciBvdXRwdXQgZmlsZXMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgdXNlZCBvdXRzaWRlIG9mIHRoZSBidWlsZCBzeXN0ZW0uIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgUG9pbnRzIHRvIHRoZSBnZW5lcmFsIGFyZWEgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgIHN5c3RlbSB1c2VzIHRvIHBsYWNlIGltYWdlcywgcGFja2FnZXMsIFNES3MgYW5kIG90aGVyIG91dHB1dAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gdXNlcyB0byBwbGFjZSBpbWFnZXMsIHBhY2thZ2VzLCBTREtzLCBhbmQgb3RoZXIgb3V0cHV0CiAgICAgICAgICAgICAgICAgICAgIGZpbGVzIHRoYXQgYXJlIHJlYWR5IHRvIGJlIHVzZWQgb3V0c2lkZSBvZiB0aGUgYnVpbGQgc3lzdGVtLgogICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGlzIGRpcmVjdG9yeSByZXNpZGVzIHdpdGhpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+CkBAIC0zMjU0LDE4ICszMzMwLDE5IEBACiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGRldGFpbCBvbiB0aGUgY29udGVudHMgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPiBkaXJlY3RvcnksIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2ltYWdlcy1kZXYtZW52aXJvbm1lbnQnPkltYWdlczwvbGluaz4iLAotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQnPlBhY2thZ2UgRmVlZHM8L2xpbms+IiwKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjaW1hZ2VzLWRldi1lbnZpcm9ubWVudCc+SW1hZ2VzPC91bGluaz4iLAorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNwYWNrYWdlLWZlZWRzLWRldi1lbnZpcm9ubWVudCc+UGFja2FnZSBGZWVkczwvdWxpbms+IiwKICAgICAgICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstZGV2LWVudmlyb25tZW50Jz5BcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBTREs8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc2RrLWRldi1lbnZpcm9ubWVudCc+QXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgU0RLPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zIGFsbCBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMKKyAgICAgICAgICAgICAgICAgICAgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLURFUExPWV9ESVJfREVCJz48Z2xvc3N0ZXJtPkRFUExPWV9ESVJfREVCPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBERVBMT1lfRElSX0RFQltkb2NdID0gIlBvaW50cyB0byBhIERlYmlhbi1zcGVjaWZpYyBhcmVhIHRoYXQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0byBwbGFjZSBpbWFnZXMsIHBhY2thZ2VzLCBTREtzIGFuZCBvdGhlciBvdXRwdXQgZmlsZXMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgdXNlZCBvdXRzaWRlIG9mIHRoZSBidWlsZCBzeXN0ZW0uIgorICAgICAgICAgICAgICAgIERFUExPWV9ESVJfREVCW2RvY10gPSAiUG9pbnRzIHRvIGEgRGViaWFuLXNwZWNpZmljIGFyZWEgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRvIHBsYWNlIGltYWdlcywgcGFja2FnZXMsIFNES3MsIGFuZCBvdGhlciBvdXRwdXQgZmlsZXMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgdXNlZCBvdXRzaWRlIG9mIHRoZSBidWlsZCBzeXN0ZW0uIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtMzI5Nyw4ICszMzc0LDggQEAKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2Vfd3JpdGVfZGViJz48ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV9kZWI8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgdGFzayB3cml0ZXMgRGViaWFuIHBhY2thZ2VzIGludG8gdGhlIGFwcHJvcHJpYXRlIGZvbGRlci4KICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHBhY2thZ2luZyB3b3Jrcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQnPlBhY2thZ2UgRmVlZHM8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNwYWNrYWdlLWZlZWRzLWRldi1lbnZpcm9ubWVudCc+UGFja2FnZSBGZWVkczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtMzMyNywxNiArMzQwNCwxOCBAQAogICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgogICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBkZXRhaWwgb24gdGhlIGNvbnRlbnRzIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVwbG95PC9maWxlbmFtZT4gZGlyZWN0b3J5LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdpbWFnZXMtZGV2LWVudmlyb25tZW50Jz5JbWFnZXM8L2xpbms+IiBhbmQKLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1kZXYtZW52aXJvbm1lbnQnPkFwcGxpY2F0aW9uIERldmVsb3BtZW50IFNESzwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zLgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNpbWFnZXMtZGV2LWVudmlyb25tZW50Jz5JbWFnZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3Nkay1kZXYtZW52aXJvbm1lbnQnPkFwcGxpY2F0aW9uIERldmVsb3BtZW50IFNESzwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucyBib3RoIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cworICAgICAgICAgICAgICAgICAgICBNYW51YWwuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItREVQTE9ZX0RJUl9JUEsnPjxnbG9zc3Rlcm0+REVQTE9ZX0RJUl9JUEs8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIERFUExPWV9ESVJfSVBLW2RvY10gPSAiUG9pbnRzIHRvIGEgSVBLLXNwZWNpZmljIGFyZWEgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRvIHBsYWNlIGltYWdlcywgcGFja2FnZXMsIFNES3MgYW5kIG90aGVyIG91dHB1dCBmaWxlcyB0aGF0IGFyZSByZWFkeSB0byBiZSB1c2VkIG91dHNpZGUgb2YgdGhlIGJ1aWxkIHN5c3RlbS4iCisgICAgICAgICAgICAgICAgREVQTE9ZX0RJUl9JUEtbZG9jXSA9ICJQb2ludHMgdG8gYSBJUEstc3BlY2lmaWMgYXJlYSB0aGF0IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgdG8gcGxhY2UgaW1hZ2VzLCBwYWNrYWdlcywgU0RLcywgYW5kIG90aGVyIG91dHB1dCBmaWxlcyB0aGF0IGFyZSByZWFkeSB0byBiZSB1c2VkIG91dHNpZGUgb2YgdGhlIGJ1aWxkIHN5c3RlbS4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CkBAIC0zMzY3LDE1ICszNDQ2LDE1IEBACiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX2lwayc+PGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfaXBrPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIHRhc2sgd3JpdGVzIElQSyBwYWNrYWdlcyBpbnRvIHRoZSBhcHByb3ByaWF0ZSBmb2xkZXIuCiAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyBwYWNrYWdpbmcgd29ya3MsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3BhY2thZ2UtZmVlZHMtZGV2LWVudmlyb25tZW50Jz5QYWNrYWdlIEZlZWRzPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjcGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQnPlBhY2thZ2UgRmVlZHM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLURFUExPWV9ESVJfUlBNJz48Z2xvc3N0ZXJtPkRFUExPWV9ESVJfUlBNPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBERVBMT1lfRElSX1JQTVtkb2NdID0gIlBvaW50cyB0byBhIFJQTS1zcGVjaWZpYyBhcmVhIHRoYXQgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0byBwbGFjZSBpbWFnZXMsIHBhY2thZ2VzLCBTREtzIGFuZCBvdGhlciBvdXRwdXQgZmlsZXMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgdXNlZCBvdXRzaWRlIG9mIHRoZSBidWlsZCBzeXN0ZW0uIgorICAgICAgICAgICAgICAgIERFUExPWV9ESVJfUlBNW2RvY10gPSAiUG9pbnRzIHRvIGEgUlBNLXNwZWNpZmljIGFyZWEgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRvIHBsYWNlIGltYWdlcywgcGFja2FnZXMsIFNES3MsIGFuZCBvdGhlciBvdXRwdXQgZmlsZXMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgdXNlZCBvdXRzaWRlIG9mIHRoZSBidWlsZCBzeXN0ZW0uIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtMzQwNiwxNSArMzQ4NSwxNSBAQAogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZV93cml0ZV9ycG0nPjxmaWxlbmFtZT5kb19wYWNrYWdlX3dyaXRlX3JwbTwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICAgICAgICAgICAgICB0YXNrIHdyaXRlcyBSUE0gcGFja2FnZXMgaW50byB0aGUgYXBwcm9wcmlhdGUgZm9sZGVyLgogICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgcGFja2FnaW5nIHdvcmtzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdwYWNrYWdlLWZlZWRzLWRldi1lbnZpcm9ubWVudCc+UGFja2FnZSBGZWVkczwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3BhY2thZ2UtZmVlZHMtZGV2LWVudmlyb25tZW50Jz5QYWNrYWdlIEZlZWRzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1ERVBMT1lfRElSX1RBUic+PGdsb3NzdGVybT5ERVBMT1lfRElSX1RBUjwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgREVQTE9ZX0RJUl9UQVJbZG9jXSA9ICJQb2ludHMgdG8gYSB0YXJiYWxsIGFyZWEgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRvIHBsYWNlIGltYWdlcywgcGFja2FnZXMsIFNES3MgYW5kIG90aGVyIG91dHB1dCBmaWxlcyB0aGF0IGFyZSByZWFkeSB0byBiZSB1c2VkIG91dHNpZGUgb2YgdGhlIGJ1aWxkIHN5c3RlbS4iCisgICAgICAgICAgICAgICAgREVQTE9ZX0RJUl9UQVJbZG9jXSA9ICJQb2ludHMgdG8gYSB0YXJiYWxsIGFyZWEgdGhhdCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRvIHBsYWNlIGltYWdlcywgcGFja2FnZXMsIFNES3MsIGFuZCBvdGhlciBvdXRwdXQgZmlsZXMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgdXNlZCBvdXRzaWRlIG9mIHRoZSBidWlsZCBzeXN0ZW0uIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtMzQ0NSw4ICszNTI0LDggQEAKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2Vfd3JpdGVfdGFyJz48ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV90YXI8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgdGFzayB3cml0ZXMgVEFSIHBhY2thZ2VzIGludG8gdGhlIGFwcHJvcHJpYXRlIGZvbGRlci4KICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHBhY2thZ2luZyB3b3Jrcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncGFja2FnZS1mZWVkcy1kZXYtZW52aXJvbm1lbnQnPlBhY2thZ2UgRmVlZHM8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNwYWNrYWdlLWZlZWRzLWRldi1lbnZpcm9ubWVudCc+UGFja2FnZSBGZWVkczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtMzY5OCw3ICszNzc3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgSXQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZXItY29uZmlndXJhYmxlLgogICAgICAgICAgICAgICAgICAgICBJdCBpcyBiZXN0IHRvIGp1c3QgcmVmZXJlbmNlIHRoZSB2YXJpYWJsZSB0byBzZWUgd2hpY2ggZGlzdHJvIGZlYXR1cmVzIGFyZQogICAgICAgICAgICAgICAgICAgICBiZWluZyBiYWNrZmlsbGVkIGZvciBhbGwgZGlzdHJvIGNvbmZpZ3VyYXRpb25zLgotICAgICAgICAgICAgICAgICAgICBTZWUgdGhlIDxsaW5rIGxpbmtlbmQ9J3JlZi1mZWF0dXJlcy1iYWNrZmlsbCc+RmVhdHVyZSBiYWNrZmlsbGluZzwvbGluaz4gc2VjdGlvbiBmb3IKKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSA8bGluayBsaW5rZW5kPSdyZWYtZmVhdHVyZXMtYmFja2ZpbGwnPkZlYXR1cmUgQmFja2ZpbGxpbmc8L2xpbms+IHNlY3Rpb24gZm9yCiAgICAgICAgICAgICAgICAgICAgIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KQEAgLTQzODYsNyArNDQ2NSw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1FWFRSQV9JTUFHRUNNRCc+PGdsb3NzdGVybT5FWFRSQV9JTUFHRUNNRDwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgRVhUUkFfSU1BR0VDTURbZG9jXSA9ICJTcGVjaWZpZXMgYWRkaXRpb25hbCBvcHRpb25zIGZvciB0aGUgaW1hZ2UgY3JlYXRpb24gY29tbWFuZCB0aGF0IGhhcyBiZWVuIHNwZWNpZmllZCBpbiBJTUFHRV9DTUQuIFdoZW4gc2V0dGluZyB0aGlzIHZhcmlhYmxlLCB5b3Ugc2hvdWxkIHVzZSBhbiBvdmVycmlkZSBmb3IgdGhlIGFzc29jaWF0ZWQgdHlwZS4iCisgICAgICAgICAgICAgICAgRVhUUkFfSU1BR0VDTURbZG9jXSA9ICJTcGVjaWZpZXMgYWRkaXRpb25hbCBvcHRpb25zIGZvciB0aGUgaW1hZ2UgY3JlYXRpb24gY29tbWFuZCB0aGF0IGhhcyBiZWVuIHNwZWNpZmllZCBpbiBJTUFHRV9DTUQuIFdoZW4gc2V0dGluZyB0aGlzIHZhcmlhYmxlLCB5b3Ugc2hvdWxkIHVzZSBhbiBvdmVycmlkZSBmb3IgdGhlIGFzc29jaWF0ZWQgaW1hZ2UgdHlwZS4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CkBAIC00Mzk0LDggKzQ0NzMsOCBAQAogICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYWRkaXRpb25hbCBvcHRpb25zIGZvciB0aGUgaW1hZ2UKICAgICAgICAgICAgICAgICAgICAgY3JlYXRpb24gY29tbWFuZCB0aGF0IGhhcyBiZWVuIHNwZWNpZmllZCBpbgogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfQ01EJz48ZmlsZW5hbWU+SU1BR0VfQ01EPC9maWxlbmFtZT48L2xpbms+LgotICAgICAgICAgICAgICAgICAgICBXaGVuIHNldHRpbmcgdGhpcyB2YXJpYWJsZSwgeW91IHNob3VsZAotICAgICAgICAgICAgICAgICAgICB1c2UgYW4gb3ZlcnJpZGUgZm9yIHRoZSBhc3NvY2lhdGVkIHR5cGUuCisgICAgICAgICAgICAgICAgICAgIFdoZW4gc2V0dGluZyB0aGlzIHZhcmlhYmxlLCB1c2UgYW4gb3ZlcnJpZGUgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICBhc3NvY2lhdGVkIGltYWdlIHR5cGUuCiAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBFWFRSQV9JTUFHRUNNRF9leHQzID89ICItaSA0MDk2IgpAQCAtNDc4Nyw3ICs0ODY2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIHN0YXRlbWVudCBhcHBlYXJzIGluIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGludXgteW9jdG8tZGV2LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZSwgd2hpY2gKICAgICAgICAgICAgICAgICAgICAgaXMgZm91bmQgaW4gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLXJlcG9zaXRvcmllcyc+U291cmNlIFJlcG9zaXRvcmllczwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzb3VyY2UtcmVwb3NpdG9yaWVzJz5Tb3VyY2UgUmVwb3NpdG9yaWVzPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgaW4KICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWwvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4PC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgICAgIEhlcmUsIHRoZSBtYWNoaW5lIG92ZXJyaWRlIGlzIGEgc3BlY2lhbApAQCAtNDgyMSw3ICs0OTAwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUZJTEVTUEFUSCc+PGZpbGVuYW1lPkZJTEVTUEFUSDwvZmlsZW5hbWU+PC9saW5rPi4KICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IG92ZXJyaWRlcyBhcmUgaGFuZGxlZAogICAgICAgICAgICAgICAgICAgICBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyc+Qml0QmFrZSBNYW51YWw8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyc+Qml0QmFrZSBVc2VyIE1hbnVhbDwvdWxpbms+LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtNDg1Myw3ICs0OTMyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgRHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLCBCaXRCYWtlIHNlYXJjaGVzIGVhY2ggZGlyZWN0b3J5IGluCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GSUxFU1BBVEg8L2ZpbGVuYW1lPiBpbiB0aGUgc3BlY2lmaWVkIG9yZGVyIHdoZW4KICAgICAgICAgICAgICAgICAgICAgbG9va2luZyBmb3IgZmlsZXMgYW5kIHBhdGNoZXMgc3BlY2lmaWVkIGJ5IGVhY2gKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZpbGU6Ly88L2ZpbGVuYW1lPiBVUkkgaW4gYSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5maWxlOi8vPC9maWxlbmFtZT4gVVJJIGluIGEgcmVjaXBlJ3MKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudHMuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+CkBAIC00ODgxLDkgKzQ5NjIsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdGhlIGJ1aWxkIHN5c3RlbSB0byBmaW5kIHBhdGNoZXMgb3IgZmlsZXMKICAgICAgICAgICAgICAgICAgICAgdGhhdCByZXNpZGUgd2l0aCB5b3VyIGFwcGVuZCBmaWxlcywgeW91IG5lZWQgdG8gZXh0ZW5kCiAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+RklMRVNQQVRIPC9maWxlbmFtZT4gdmFyaWFibGUgYnkgdXNpbmcKLSAgICAgICAgICAgICAgICAgICAgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1GSUxFU0VYVFJBUEFUSFMnPjxmaWxlbmFtZT5GSUxFU0VYVFJBUEFUSFM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+RklMRVNFWFRSQVBBVEhTPC9maWxlbmFtZT4gdmFyaWFibGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBvdXQgbW9yZSBhYm91dCB0aGUgcGF0Y2hpbmcgcHJvY2VzcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjcGF0Y2hpbmctZGV2LWVudmlyb25tZW50Jz5QYXRjaGluZzwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwKKyAgICAgICAgICAgICAgICAgICAgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbmV3LXJlY2lwZS1wYXRjaGluZy1jb2RlJz5QYXRjaGluZyBDb2RlPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYXRjaCc+PGZpbGVuYW1lPmRvX3BhdGNoPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgYXMgd2VsbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC01MDA0LDYgKzUwOTUsMzAgQEAKIAogICAgIDxnbG9zc2RpdiBpZD0ndmFyLWdsb3NzYXJ5LWcnPjx0aXRsZT5HPC90aXRsZT4KIAorICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUdDQ1BJRSc+PGdsb3NzdGVybT5HQ0NQSUU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEdDQ1BJRVtkb2NdID0gIkVuYWJsZXMgUG9zaXRpb24gSW5kZXBlbmRlbnQgRXhlY3V0YWJsZXMgKFBJRSkgd2l0aGluIHRoZSBHTlUgQyBDb21waWxlciAoR0NDKS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+Cis8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgorICAgICAgICAgICAgICAgICAgICBFbmFibGVzIFBvc2l0aW9uIEluZGVwZW5kZW50IEV4ZWN1dGFibGVzIChQSUUpIHdpdGhpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgR05VIEMgQ29tcGlsZXIgKEdDQykuCisgICAgICAgICAgICAgICAgICAgIEVuYWJsaW5nIFBJRSBpbiB0aGUgR0NDIG1ha2VzIFJldHVybiBPcmllbnRlZCBQcm9ncmFtbWluZworICAgICAgICAgICAgICAgICAgICAoUk9QKSBhdHRhY2tzIG11Y2ggbW9yZSBkaWZmaWN1bHQgdG8KKyAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCB0aGUgPGZpbGVuYW1lPnNlY3VyaXR5X2ZsYWdzLmluYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgZW5hYmxlcyBQSUUgYnkgc2V0dGluZyB0aGUgdmFyaWFibGUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBHQ0NQSUUgPz0gIi0tZW5hYmxlLWRlZmF1bHQtcGllIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItR0RCJz48Z2xvc3N0ZXJtPkdEQjwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+CiAgICAgICAgICAgICAgICAgR0RCW2RvY10gPSAiVGhlIG1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHRvIHJ1biB0aGUgR05VIERlYnVnZ2VyLiIKQEAgLTUwMzEsMTMgKzUxNDYsMTMgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUdMSUJDX0dFTkVSQVRFX0xPQ0FMRVMnPjxnbG9zc3Rlcm0+R0xJQkNfR0VORVJBVEVfTE9DQUxFUzwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgR0xJQkNfR0VORVJBVEVfTE9DQUxFU1tkb2NdPSAiU3BlY2lmaWVzIHRoZSBsaXN0IG9mIEdMSUJDIGxvY2FsZXMgdG8gZ2VuZXJhdGUgc2hvdWxkIHlvdSBub3Qgd2lzaCBnZW5lcmF0ZSBhbGwgTElCQyBsb2NhbHMsIHdoaWNoIGNhbiBiZSB0aW1lIGNvbnN1bWluZy4iCisgICAgICAgICAgICAgICAgR0xJQkNfR0VORVJBVEVfTE9DQUxFU1tkb2NdPSAiU3BlY2lmaWVzIHRoZSBsaXN0IG9mIEdMSUJDIGxvY2FsZXMgdG8gZ2VuZXJhdGUgc2hvdWxkIHlvdSBub3Qgd2lzaCB0byBnZW5lcmF0ZSBhbGwgTElCQyBsb2NhbHMsIHdoaWNoIGNhbiBiZSB0aW1lIGNvbnN1bWluZy4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgogICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGxpc3Qgb2YgR0xJQkMgbG9jYWxlcyB0byBnZW5lcmF0ZSBzaG91bGQgeW91Ci0gICAgICAgICAgICAgICAgICAgIG5vdCB3aXNoIGdlbmVyYXRlIGFsbCBMSUJDIGxvY2Fscywgd2hpY2ggY2FuIGJlIHRpbWUKKyAgICAgICAgICAgICAgICAgICAgbm90IHdpc2ggdG8gZ2VuZXJhdGUgYWxsIExJQkMgbG9jYWxzLCB3aGljaCBjYW4gYmUgdGltZQogICAgICAgICAgICAgICAgICAgICBjb25zdW1pbmcuCiAgICAgICAgICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHNwZWNpZmljYWxseSByZW1vdmUgdGhlIGxvY2FsZQpAQCAtNTMwNyw3ICs1NDIyLDcgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUhPU1RfU1lTJz48Z2xvc3N0ZXJtPkhPU1RfU1lTPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBIT1NUX1NZU1tkb2NdID0gIlNwZWNpZmllcyB0aGUgc3lzdGVtLCBpbmNsdWRpbmcgdGhlIGFyY2hpdGVjdHVyZSBhbmQgdGhlIG9wZXJhdGluZyBzeXN0ZW0sIGZvciB3aXRoIHRoZSBidWlsZCBpcyBvY2N1cnJpbmcgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgcmVjaXBlLiIKKyAgICAgICAgICAgICAgICBIT1NUX1NZU1tkb2NdID0gIlNwZWNpZmllcyB0aGUgc3lzdGVtLCBpbmNsdWRpbmcgdGhlIGFyY2hpdGVjdHVyZSBhbmQgdGhlIG9wZXJhdGluZyBzeXN0ZW0sIGZvciB3aGljaCB0aGUgYnVpbGQgaXMgb2NjdXJyaW5nIGluIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHJlY2lwZS4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CkBAIC01MzgzLDcgKzU0OTgsNyBAQAogICAgICAgICAgICAgICAgICAgICBjb250YW1pbmF0aW9uLgogICAgICAgICAgICAgICAgICAgICBVbmxpa2UKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUhPU1RUT09MUyc+PGZpbGVuYW1lPkhPU1RUT09MUzwvZmlsZW5hbWU+PC9saW5rPiwKLSAgICAgICAgICAgICAgICAgICAgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZG9lcyBub3QgcHJvZHVjZSBhbmQgZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZG9lcyBub3QgcHJvZHVjZSBhbiBlcnJvcgogICAgICAgICAgICAgICAgICAgICBpZiBhIHRvb2wgc3BlY2lmaWVkIGluIHRoZSB2YWx1ZSBvZgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SE9TVFRPT0xTX05PTkZBVEFMPC9maWxlbmFtZT4gaXMgbm90IGZvdW5kIG9uIHRoZQogICAgICAgICAgICAgICAgICAgICBidWlsZCBob3N0LgpAQCAtNTQwMiw3ICs1NTE3LDcgQEAKIDwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CiAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgdmVuZG9yLgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SE9TVF9WRU5ET1I8L2ZpbGVuYW1lPiBpcyBub3JtYWxseSB0aGUgc2FtZSBhcwotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVEFSR0VUX1BSRUZJWCc+PGZpbGVuYW1lPlRBUkdFVF9WRU5ET1I8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UQVJHRVRfVkVORE9SJz48ZmlsZW5hbWU+VEFSR0VUX1ZFTkRPUjwvZmlsZW5hbWU+PC9saW5rPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC01NjIwLDE4ICs1NzM1LDE3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTUFHRV9CT09UX0ZJTEVTJz48Z2xvc3N0ZXJtPklNQUdFX0JPT1RfRklMRVM8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIElNQUdFX0JPT1RfRklMRVNbZG9jXSA9ICJXaGl0ZXNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGZpbGVzIGZyb20gJHtERVBMT1lfRElSX0lNQUdFfSB0byBwbGFjZSBpbiBib290IHBhcnRpdGlvbi4gRW50cmllcyB3aWxsIGJlIGluc3RhbGxlZCB1bmRlciBhIHNhbWUgbmFtZSBhcyB0aGUgc291cmNlIGZpbGUuIFRvIGNoYW5nZSB0aGUgZGVzdGluYXRpb24gZmlsZSBuYW1lLCBwYXNzIGEgZGVzaXJlZCBuYW1lIGFmdGVyIGEgc2VtaWNvbG9uIChlZy4gdS1ib290LmltZzt1Ym9vdCkuIgorICAgICAgICAgICAgICAgIElNQUdFX0JPT1RfRklMRVNbZG9jXSA9ICJBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGZpbGVzIGZyb20gJHtERVBMT1lfRElSX0lNQUdFfSB0byBwbGFjZSBpbiBib290IHBhcnRpdGlvbi4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgogICAgICAgICAgICAgICAgICAgICBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGZpbGVzIGluc3RhbGxlZCBpbnRvIHRoZQotICAgICAgICAgICAgICAgICAgICBib290IHBhcnRpdGlvbiB3aGVuIHByZXBhcmluZyBhbiBpbWFnZSB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+IHRvb2wgd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJvb3RpbWctcGFydGl0aW9uPC9maWxlbmFtZT4gc291cmNlCisgICAgICAgICAgICAgICAgICAgIGJvb3QgcGFydGl0aW9uIHdoZW4gcHJlcGFyaW5nIGFuIGltYWdlIHVzaW5nIHRoZSBXaWMgdG9vbAorICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSA8ZmlsZW5hbWU+Ym9vdGltZy1wYXJ0aXRpb248L2ZpbGVuYW1lPiBzb3VyY2UKICAgICAgICAgICAgICAgICAgICAgcGx1Z2luLgotICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgZmlsZXMgYXJlIGluc3RhbGxlZCB1bmRlcgotICAgICAgICAgICAgICAgICAgICB0aGUgc2FtZSBuYW1lIGFzIHRoZSBzb3VyY2UgZmlsZXMuCisgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBmaWxlcyBhcmUgaW5zdGFsbGVkIHVuZGVyIHRoZSBzYW1lIG5hbWUgYXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIHNvdXJjZSBmaWxlcy4KICAgICAgICAgICAgICAgICAgICAgVG8gY2hhbmdlIHRoZSBpbnN0YWxsZWQgbmFtZSwgc2VwYXJhdGUgaXQgZnJvbSB0aGUKICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWwgbmFtZSB3aXRoIGEgc2VtaS1jb2xvbiAoOykuCiAgICAgICAgICAgICAgICAgICAgIFNvdXJjZSBmaWxlcyBuZWVkIHRvIGJlIGxvY2F0ZWQgaW4KQEAgLTU2NDcsOSArNTc2MSw4IEBACiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIHNvdXJjZSBmaWxlcyBjYW4gYmUgcGlja2VkIHVwIHVzaW5nCiAgICAgICAgICAgICAgICAgICAgIGEgZ2xvYiBwYXR0ZXJuLgotICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHRoZSBkZXN0aW5hdGlvbiBmaWxlCi0gICAgICAgICAgICAgICAgICAgIHdpbGwgaGF2ZSB0aGUgc2FtZSBuYW1lIGFzIHRoZSBiYXNlIG5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlCi0gICAgICAgICAgICAgICAgICAgIHBhdGguCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIGRlc3RpbmF0aW9uIGZpbGUgbXVzdCBoYXZlIHRoZSBzYW1lIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgYXMgdGhlIGJhc2UgbmFtZSBvZiB0aGUgc291cmNlIGZpbGUgcGF0aC4KICAgICAgICAgICAgICAgICAgICAgVG8gaW5zdGFsbCBmaWxlcyBpbnRvIGEgZGlyZWN0b3J5IHdpdGhpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IGxvY2F0aW9uLCBwYXNzIGl0cyBuYW1lIGFmdGVyIGEgc2VtaS1jb2xvbgogICAgICAgICAgICAgICAgICAgICAoOykuCkBAIC01NjY1LDYgKzU3NzgsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJvb3Q8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgd2l0aGluIHRoZQogICAgICAgICAgICAgICAgICAgICB0YXJnZXQgcGFydGl0aW9uLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUgV2ljIHRvb2wgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1wYXJ0aXRpb25lZC1pbWFnZXMtdXNpbmctd2ljJz5DcmVhdGluZyBQYXJ0aXRpb25lZCBJbWFnZXMgVXNpbmcgV2ljPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICBSZWZlcmVuY2UgbWF0ZXJpYWwgZm9yIFdpYyBpcyBsb2NhdGVkIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWtpY2tzdGFydCc+T3BlbkVtYmVkZGVkIEtpY2tzdGFydCAoLndrcykgUmVmZXJlbmNlPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIGNoYXB0ZXIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgogCkBAIC01ODQwLDcwICs1OTYyLDg2IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTUFHRV9JTlNUQUxMJz48Z2xvc3N0ZXJtPklNQUdFX0lOU1RBTEw8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIElNQUdFX0lOU1RBTExbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIHBhY2thZ2VzIHRvIGluc3RhbGwgaW50byBhbiBpbWFnZS4gSW1hZ2UgcmVjaXBlcyBzZXQgSU1BR0VfSU5TVEFMTCB0byBzcGVjaWZ5IHRoZSBwYWNrYWdlcyB0byBpbnN0YWxsIGludG8gYW4gaW1hZ2UgdGhyb3VnaCBpbWFnZS5iYmNsYXNzLiIKKyAgICAgICAgICAgICAgICBJTUFHRV9JTlNUQUxMW2RvY10gPSAiVXNlZCBieSByZWNpcGVzIHRvIHNwZWNpZnkgdGhlIHBhY2thZ2VzIHRvIGluc3RhbGwgaW50byBhbiBpbWFnZSB0aHJvdWdoIGltYWdlLmJiY2xhc3MuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KLSAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBwYWNrYWdlcyB0byBpbnN0YWxsIGludG8gYW4gaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzIGEKLSAgICAgICAgICAgICAgICAgICAgbWVjaGFuaXNtIGZvciBhbiBpbWFnZSByZWNpcGUgYW5kIHlvdSBzaG91bGQgdXNlIGl0Ci0gICAgICAgICAgICAgICAgICAgIHdpdGggY2FyZSB0byBhdm9pZCBvcmRlcmluZyBpc3N1ZXMuCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB3b3JraW5nIHdpdGggYW4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2ltYWdlcy1jb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzJz48ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mczwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UsIGRvIG5vdCB1c2UgdGhlIDxmaWxlbmFtZT5JTUFHRV9JTlNUQUxMPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIHNwZWNpZnkgcGFja2FnZXMgZm9yIGluc3RhbGxhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIEluc3RlYWQsIHVzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0lOU1RBTEwnPjxmaWxlbmFtZT5QQUNLQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLCB3aGljaCBhbGxvd3MgdGhlIGluaXRpYWwgUkFNIGZpbGVzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgIChpbml0cmFtZnMpIHJlY2lwZSB0byB1c2UgYSBmaXhlZCBzZXQgb2YgcGFja2FnZXMgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBub3QgYmUgYWZmZWN0ZWQgYnkgPGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBjcmVhdGluZyBhbiBpbml0cmFtZnMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZGluZy1hbi1pbml0cmFtZnMtaW1hZ2UnPkJ1aWxkaW5nIGFuIEluaXRpYWwgUkFNIEZpbGVzeXN0ZW0gKGluaXRyYW1mcykgSW1hZ2U8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIFVzZWQgYnkgcmVjaXBlcyB0byBzcGVjaWZ5IHRoZSBwYWNrYWdlcyB0byBpbnN0YWxsIGludG8gYW4KKyAgICAgICAgICAgICAgICAgICAgaW1hZ2UgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtaW1hZ2UnPjxmaWxlbmFtZT5pbWFnZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcy4KKyAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+IHZhcmlhYmxlIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgY2FyZSB0byBhdm9pZCBvcmRlcmluZyBpc3N1ZXMuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEltYWdlIHJlY2lwZXMgc2V0IDxmaWxlbmFtZT5JTUFHRV9JTlNUQUxMPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgdG8gc3BlY2lmeSB0aGUgcGFja2FnZXMgdG8gaW5zdGFsbCBpbnRvIGFuIGltYWdlIHRocm91Z2gKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmltYWdlLmJiY2xhc3M8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCAiaGVscGVyIiBjbGFzc2VzIGV4aXN0LCBzdWNoIGFzCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLmJiY2xhc3M8L2ZpbGVuYW1lPiwgdGhhdCBjYW4gdGFrZQorICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksICJoZWxwZXIiIGNsYXNzZXMgc3VjaCBhcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtY29yZS1pbWFnZSc+PGZpbGVuYW1lPmNvcmUtaW1hZ2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MgZXhpc3QgdGhhdCBjYW4gdGFrZSBsaXN0cyB1c2VkIHdpdGgKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GRUFUVVJFUyc+SU1BR0VfRkVBVFVSRVM8L2xpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgbGlzdHMgYW5kIHR1cm4gdGhlc2UgaW50byBhdXRvLWdlbmVyYXRlZCBlbnRyaWVzIGluCisgICAgICAgICAgICAgICAgICAgIGFuZCB0dXJuIHRoZW0gaW50byBhdXRvLWdlbmVyYXRlZCBlbnRyaWVzIGluCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5JTUFHRV9JTlNUQUxMPC9maWxlbmFtZT4gaW4gYWRkaXRpb24gdG8gaXRzCiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgY29udGVudHMuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFVzaW5nIDxmaWxlbmFtZT5JTUFHRV9JTlNUQUxMPC9maWxlbmFtZT4gd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPis9PC9maWxlbmFtZT4gb3BlcmF0b3IgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIG9yIGZyb20gd2l0aGluCi0gICAgICAgICAgICAgICAgICAgIGFuIGltYWdlIHJlY2lwZSBpcyBub3QgcmVjb21tZW5kZWQgYXMgaXQgY2FuIGNhdXNlIG9yZGVyaW5nCi0gICAgICAgICAgICAgICAgICAgIGlzc3Vlcy4KLSAgICAgICAgICAgICAgICAgICAgU2luY2UgPGZpbGVuYW1lPmNvcmUtaW1hZ2UuYmJjbGFzczwvZmlsZW5hbWU+IHNldHMKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPiB0byBhIGRlZmF1bHQgdmFsdWUgdXNpbmcKLSAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT4/PTwvZmlsZW5hbWU+IG9wZXJhdG9yLCB1c2luZyBhCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4rPTwvZmlsZW5hbWU+IG9wZXJhdGlvbiBhZ2FpbnN0Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5JTUFHRV9JTlNUQUxMPC9maWxlbmFtZT4gd2lsbCByZXN1bHQgaW4KLSAgICAgICAgICAgICAgICAgICAgdW5leHBlY3RlZCBiZWhhdmlvciB3aGVuIHVzZWQgaW4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICBGdXJ0aGVybW9yZSwgdGhlIHNhbWUgb3BlcmF0aW9uIGZyb20gd2l0aGluIGFuIGltYWdlCi0gICAgICAgICAgICAgICAgICAgIHJlY2lwZSBtYXkgb3IgbWF5IG5vdCBzdWNjZWVkIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWMKLSAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uLgotICAgICAgICAgICAgICAgICAgICBJbiBib3RoIHRoZXNlIGNhc2VzLCB0aGUgYmVoYXZpb3IgaXMgY29udHJhcnkgdG8gaG93IG1vc3QKLSAgICAgICAgICAgICAgICAgICAgdXNlcnMgZXhwZWN0IHRoZSA8ZmlsZW5hbWU+Kz08L2ZpbGVuYW1lPiBvcGVyYXRvciB0byB3b3JrLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSB1c2UgdGhpcyB2YXJpYWJsZSwgaXQgaXMgYmVzdCB0byB1c2UgaXQgYXMgZm9sbG93czoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBJTUFHRV9JTlNUQUxMX2FwcGVuZCA9ICIgPHJlcGxhY2VhYmxlPnBhY2thZ2UtbmFtZTwvcmVwbGFjZWFibGU+IgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gaW5jbHVkZSB0aGUgc3BhY2UgYmV0d2VlbiB0aGUgcXVvdGF0aW9uIGNoYXJhY3RlcgogICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIHN0YXJ0IG9mIHRoZSBwYWNrYWdlIG5hbWUgb3IgbmFtZXMuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5DYXV0aW9uPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHdvcmtpbmcgd2l0aCBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2ltYWdlcy1jb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzJz48ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mczwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSwgZG8gbm90IHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPiB2YXJpYWJsZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IHBhY2thZ2VzIGZvciBpbnN0YWxsYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RlYWQsIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfSU5TVEFMTCc+PGZpbGVuYW1lPlBBQ0tBR0VfSU5TVEFMTDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgd2hpY2ggYWxsb3dzIHRoZSBpbml0aWFsIFJBTQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIChpbml0cmFtZnMpIHJlY2lwZSB0byB1c2UgYSBmaXhlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQgb2YgcGFja2FnZXMgYW5kIG5vdCBiZSBhZmZlY3RlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU1BR0VfSU5TVEFMTDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gY3JlYXRpbmcgYW4gaW5pdHJhbWZzLCBzZWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNidWlsZGluZy1hbi1pbml0cmFtZnMtaW1hZ2UnPkJ1aWxkaW5nIGFuIEluaXRpYWwgUkFNIEZpbGVzeXN0ZW0gKGluaXRyYW1mcykgSW1hZ2U8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNpbmcgPGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPiB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2FwcGVuZGluZy1hbmQtcHJlcGVuZGluZyc+PGZpbGVuYW1lPis9PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIG9wZXJhdG9yIHdpdGhpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gd2l0aGluIGFuIGltYWdlIHJlY2lwZSBpcyBub3QgcmVjb21tZW5kZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBvZiB0aGlzIG9wZXJhdG9yIGluIHRoZXNlIHdheXMgY2FuIGNhdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyaW5nIGlzc3Vlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luY2UgPGZpbGVuYW1lPmNvcmUtaW1hZ2UuYmJjbGFzczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHMgPGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPiB0byBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgdmFsdWUgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjc2V0dGluZy1hLWRlZmF1bHQtdmFsdWUnPjxmaWxlbmFtZT4/PTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IsIHVzaW5nIGEgPGZpbGVuYW1lPis9PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uIGFnYWluc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPklNQUdFX0lOU1RBTEw8L2ZpbGVuYW1lPiByZXN1bHRzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWQgYmVoYXZpb3Igd2hlbiB1c2VkIHdpdGhpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGUgc2FtZSBvcGVyYXRpb24gZnJvbSB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW4gaW1hZ2UgcmVjaXBlIG1heSBvciBtYXkgbm90IHN1Y2NlZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kaW5nIG9uIHRoZSBzcGVjaWZpYyBzaXR1YXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIGJvdGggdGhlc2UgY2FzZXMsIHRoZSBiZWhhdmlvciBpcyBjb250cmFyeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBob3cgbW9zdCB1c2VycyBleHBlY3QgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4rPTwvZmlsZW5hbWU+IG9wZXJhdG9yIHRvIHdvcmsuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC01OTgxLDggKzYxMTksOCBAQAogICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCiAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBpbmZvcm1hdGlvbiBvbiBob3cgdGhlIGltYWdlCiAgICAgICAgICAgICAgICAgICAgIGlzIGNyZWF0ZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdpbWFnZS1nZW5lcmF0aW9uLWRldi1lbnZpcm9ubWVudCc+SW1hZ2UgR2VuZXJhdGlvbjwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2ltYWdlLWdlbmVyYXRpb24tZGV2LWVudmlyb25tZW50Jz5JbWFnZSBHZW5lcmF0aW9uPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC02MDU2LDEyICs2MTk0LDEyIEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTUFHRV9QS0dUWVBFJz48Z2xvc3N0ZXJtPklNQUdFX1BLR1RZUEU8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIElNQUdFX1BLR1RZUEVbZG9jXSA9ICJEZWZpbmVzIHRoZSBwYWNrYWdlIHR5cGUgKERFQiwgUlBNLCBJUEssIG9yIFRBUikgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4iCisgICAgICAgICAgICAgICAgSU1BR0VfUEtHVFlQRVtkb2NdID0gIkRlZmluZXMgdGhlIHBhY2thZ2UgdHlwZSAoaS5lLiBERUIsIFJQTSwgSVBLLCBvciBUQVIpIHVzZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KLSAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyB0aGUgcGFja2FnZSB0eXBlIChERUIsIFJQTSwgSVBLLCBvciBUQVIpIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyB0aGUgcGFja2FnZSB0eXBlIChpLmUuIERFQiwgUlBNLCBJUEssIG9yIFRBUikgdXNlZAogICAgICAgICAgICAgICAgICAgICBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4KICAgICAgICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlIGlzIGRlZmluZWQgYXBwcm9wcmlhdGVseSBieSB0aGUKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtcGFja2FnZV9kZWInPjxmaWxlbmFtZT5wYWNrYWdlX2RlYjwvZmlsZW5hbWU+PC9saW5rPiwKQEAgLTYxMDgsMTMgKzYyNDYsMTMgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUlNQUdFX1BPU1RQUk9DRVNTX0NPTU1BTkQnPjxnbG9zc3Rlcm0+SU1BR0VfUE9TVFBST0NFU1NfQ09NTUFORDwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgSU1BR0VfUE9TVFBST0NFU1NfQ09NTUFORFtkb2NdID0gIlNwZWNpZmllcyBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIGNhbGwgb25jZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBoYXMgY3JlYXRlZCB0aGUgZmluYWwgaW1hZ2Ugb3V0cHV0IGZpbGVzLiIKKyAgICAgICAgICAgICAgICBJTUFHRV9QT1NUUFJPQ0VTU19DT01NQU5EW2RvY10gPSAiU3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBvbmNlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNyZWF0ZXMgdGhlIGZpbmFsIGltYWdlIG91dHB1dCBmaWxlcy4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgogICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBjYWxsIG9uY2UgdGhlCi0gICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaGFzIGNyZWF0ZWQgdGhlIGZpbmFsIGltYWdlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY3JlYXRlcyB0aGUgZmluYWwgaW1hZ2UKICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IGZpbGVzLgogICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNwZWNpZnkgZnVuY3Rpb25zIHNlcGFyYXRlZCBieSBzZW1pY29sb25zOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC02MTM2LDEzICs2Mjc0LDEzIEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTUFHRV9QUkVQUk9DRVNTX0NPTU1BTkQnPjxnbG9zc3Rlcm0+SU1BR0VfUFJFUFJPQ0VTU19DT01NQU5EPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBJTUFHRV9QUkVQUk9DRVNTX0NPTU1BTkRbZG9jXSA9ICJTcGVjaWZpZXMgYSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBjYWxsIGJlZm9yZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBoYXMgY3JlYXRlZCB0aGUgZmluYWwgaW1hZ2Ugb3V0cHV0IGZpbGVzLiIKKyAgICAgICAgICAgICAgICBJTUFHRV9QUkVQUk9DRVNTX0NPTU1BTkRbZG9jXSA9ICJTcGVjaWZpZXMgYSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBjYWxsIGJlZm9yZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjcmVhdGVzIHRoZSBmaW5hbCBpbWFnZSBvdXRwdXQgZmlsZXMuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBiZWZvcmUgdGhlCi0gICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaGFzIGNyZWF0ZWQgdGhlIGZpbmFsIGltYWdlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY3JlYXRlcyB0aGUgZmluYWwgaW1hZ2UKICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IGZpbGVzLgogICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNwZWNpZnkgZnVuY3Rpb25zIHNlcGFyYXRlZCBieSBzZW1pY29sb25zOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC02NDg4LDcgKzY2MjYsNyBAQAogICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiA8ZmlsZW5hbWU+SU5IRVJJVDwvZmlsZW5hbWU+LCBzZWUKICAgICAgICAgICAgICAgICAgICAgdGhlCiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPSImWU9DVE9fRE9DU19CQl9VUkw7I2luaGVyaXQtY29uZmlndXJhdGlvbi1kaXJlY3RpdmUiPjxmaWxlbmFtZT5JTkhFUklUPC9maWxlbmFtZT4gQ29uZmlndXJhdGlvbiBEaXJlY3RpdmU8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBCaXRiYWtlIFVzZXIgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBCaXRiYWtlIFVzZXIgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTY2NjIsOCArNjgwMCw3IEBACiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBmaW5kIG1vcmUgaW5mb3JtYXRpb24gYnkgcmVmZXJlbmNpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZS5leHRlbmRlZDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiB0aGUgU291cmNlIERpcmVjdG9yeSwKICAgICAgICAgICAgICAgICAgICAgdGhlCiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWltYWdlJz48ZmlsZW5hbWU+aW1hZ2U8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgY2xhc3MsIGFuZCB0aGUKQEAgLTY3MjksOCArNjg2Niw3IEBACiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIFNldHRpbmcgdGhlIHZhcmlhYmxlIHRvICIxIiBpbiBhIGNvbmZpZ3VyYXRpb24gZmlsZSBjYXVzZXMgdGhlCiAgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gZ2VuZXJhdGUgYSBrZXJuZWwgaW1hZ2Ugd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgaW5pdHJhbWZzIHNwZWNpZmllZCBpbgotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU5JVFJBTUZTX0lNQUdFJz48ZmlsZW5hbWU+SU5JVFJBTUZTX0lNQUdFPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGluaXRyYW1mcyBzcGVjaWZpZWQgaW4gPGZpbGVuYW1lPklOSVRSQU1GU19JTUFHRTwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIGJ1bmRsZWQgd2l0aGluOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIElOSVRSQU1GU19JTUFHRV9CVU5ETEUgPSAiMSIKQEAgLTcwMDgsNyArNzE0NCw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1LQlJBTkNIJz48Z2xvc3N0ZXJtPktCUkFOQ0g8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIEtCUkFOQ0hbZG9jXSA9ICJBIHJlZ3VsYXIgZXhwcmVzc2lvbiB1c2VkIGJ5IHRoZSBidWlsZCBwcm9jZXNzIHRvIGV4cGxpY2l0bHkgaWRlbnRpZnkgdGhlIGtlcm5lbCBicmFuY2ggdGhhdCBpcyB2YWxpZGF0ZWQsIHBhdGNoZWQgYW5kIGNvbmZpZ3VyZWQgZHVyaW5nIGEgYnVpbGQuIgorICAgICAgICAgICAgICAgIEtCUkFOQ0hbZG9jXSA9ICJBIHJlZ3VsYXIgZXhwcmVzc2lvbiB1c2VkIGJ5IHRoZSBidWlsZCBwcm9jZXNzIHRvIGV4cGxpY2l0bHkgaWRlbnRpZnkgdGhlIGtlcm5lbCBicmFuY2ggdGhhdCBpcyB2YWxpZGF0ZWQsIHBhdGNoZWQsIGFuZCBjb25maWd1cmVkIGR1cmluZyBhIGJ1aWxkLiIKICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KQEAgLTcxMTIsNyArNzI0OCw4IEBACiAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5LQlVJTERfREVGQ09ORklHPC9maWxlbmFtZT4gdmFyaWFibGUsIHNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyN1c2luZy1hbi1pbi10cmVlLWRlZmNvbmZpZy1maWxlJz5Vc2luZyBhbiAiSW4tVHJlZSIgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IEZpbGU8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQKKyAgICAgICAgICAgICAgICAgICAgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTcxNTUsNyArNzI5Miw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1LRVJORUxfREVWSUNFVFJFRSc+PGdsb3NzdGVybT5LRVJORUxfREVWSUNFVFJFRTwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgS0VSTkVMX0RFVklDRVRSRUVbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIGdlbmVyYXRlZCBMaW51eCBrZXJuZWwgZGV2aWNlIHRyZWUgKGkuZS4gdGhlIDxmaWxlbmFtZT4uZHRiPC9maWxlbmFtZT4pIGZpbGUuIgorICAgICAgICAgICAgICAgIEtFUk5FTF9ERVZJQ0VUUkVFW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgTGludXgga2VybmVsIGRldmljZSB0cmVlIChpLmUuIHRoZSAuZHRiKSBmaWxlLiIKICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KQEAgLTc0MTUsNyArNzU1Miw4IEBACiAgICAgICAgICAgICAgICAgICAgIGNsYXNzLgogICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRoaXMgdmFyaWFibGUgaXMgdXNlZCwgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I2luY29ycG9yYXRpbmctb3V0LW9mLXRyZWUtbW9kdWxlcyc+SW5jb3Jwb3JhdGluZyBPdXQtb2YtVHJlZSBNb2R1bGVzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTc0NDYsNyArNzU4NCw4IEBACiAgICAgICAgICAgICAgICAgICAgIGNsYXNzLgogICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRoaXMgdmFyaWFibGUgaXMgdXNlZCwgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfS0VSTkVMX0RFVl9VUkw7I2luY29ycG9yYXRpbmctb3V0LW9mLXRyZWUtbW9kdWxlcyc+SW5jb3Jwb3JhdGluZyBPdXQtb2YtVHJlZSBNb2R1bGVzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50CisgICAgICAgICAgICAgICAgICAgIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTc2OTYsNiArNzgzNSw1MyBAQAogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgogCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTEFZRVJTRVJJRVNfQ09NUEFUJz48Z2xvc3N0ZXJtPkxBWUVSU0VSSUVTX0NPTVBBVDwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgTEFZRVJTRVJJRVNfQ09NUEFUW2RvY10gPSAiTGlzdHMgdGhlIE9wZW5FbWJlZGRlZC1Db3JlIHZlcnNpb25zIGZvciB3aGljaCBhIGxheWVyIGlzIGNvbXBhdGlibGUuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KKyAgICAgICAgICAgICAgICAgICAgTGlzdHMgdGhlIHZlcnNpb25zIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdvZS1jb3JlJz5PcGVuRW1iZWRkZWQtQ29yZTwvbGluaz4gZm9yIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIGEgbGF5ZXIgaXMgY29tcGF0aWJsZS4KKyAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhlIDxmaWxlbmFtZT5MQVlFUlNFUklFU19DT01QQVQ8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICBhbGxvd3MgdGhlIGxheWVyIG1haW50YWluZXIgdG8gaW5kaWNhdGUgd2hpY2ggY29tYmluYXRpb25zCisgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBsYXllciBhbmQgT0UtQ29yZSBjYW4gYmUgZXhwZWN0ZWQgdG8gd29yay4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlIGdpdmVzIHRoZSBzeXN0ZW0gYSB3YXkgdG8gZGV0ZWN0IHdoZW4gYSBsYXllcgorICAgICAgICAgICAgICAgICAgICBoYXMgbm90IGJlZW4gdGVzdGVkIHdpdGggbmV3IHJlbGVhc2VzIG9mIE9FLUNvcmUgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgdGhlIGxheWVyIGlzIG5vdCBtYWludGFpbmVkKS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVG8gc3BlY2lmeSB0aGUgT0UtQ29yZSB2ZXJzaW9ucyBmb3Igd2hpY2ggYSBsYXllciBpcworICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmxlLCB1c2UgdGhpcyB2YXJpYWJsZSBpbiB5b3VyIGxheWVyJ3MKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbGF5ZXIuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBsaXN0LCB1c2UgdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9SZWxlYXNlcyc+UmVsZWFzZSBOYW1lPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgKGUuZy4gJkRJU1RST19OQU1FX05PX0NBUDspLgorICAgICAgICAgICAgICAgICAgICBUbyBzcGVjaWZ5IG11bHRpcGxlIE9FLUNvcmUgdmVyc2lvbnMgZm9yIHRoZSBsYXllciwKKyAgICAgICAgICAgICAgICAgICAgdXNlIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Q6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTEFZRVJTRVJJRVNfQ09NUEFUXzxyZXBsYWNlYWJsZT5sYXllcl9yb290X25hbWU8L3JlcGxhY2VhYmxlPiA9ICImRElTVFJPX05BTUVfTk9fQ0FQOyAmRElTVFJPX05BTUVfTk9fQ0FQX01JTlVTX09ORTsiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5nIDxmaWxlbmFtZT5MQVlFUlNFUklFU19DT01QQVQ8L2ZpbGVuYW1lPiBpcworICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQgYnkgdGhlIFlvY3RvIFByb2plY3QgQ29tcGF0aWJsZSB2ZXJzaW9uIDIKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YW5kYXJkLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gcHJvZHVjZXMgYSB3YXJuaW5nIGlmCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdmFyaWFibGUgaXMgbm90IHNldCBmb3IgYW55IGdpdmVuIGxheWVyLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLXlvdXItb3duLWxheWVyJz5DcmVhdGluZyBZb3VyIE93biBMYXllcjwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1MQVlFUlZFUlNJT04nPjxnbG9zc3Rlcm0+TEFZRVJWRVJTSU9OPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KICAgICAgICAgICAgICAgICBMQVlFUlZFUlNJT05bZG9jXSA9ICJPcHRpb25hbGx5IHNwZWNpZmllcyB0aGUgdmVyc2lvbiBvZiBhIGxheWVyIGFzIGEgc2luZ2xlIG51bWJlci4gVGhpcyB2YXJpYWJsZSBpcyB1c2VkIGluIHRoZSBjb25mL2xheWVyLmNvbmYgZmlsZSBhbmQgbXVzdCBiZSBzdWZmaXhlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBzcGVjaWZpYyBsYXllci4iCkBAIC03NzY2LDEzICs3OTUyLDEzIEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1MRUFEX1NPTkFNRSc+PGdsb3NzdGVybT5MRUFEX1NPTkFNRTwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgTEVBRF9TT05BTUVbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGxlYWQgKG9yIHByaW1hcnkpIGNvbXBpbGVkIGxpYnJhcnkgZmlsZSAoLnNvKSB0aGF0IHRoZSBkZWJpYW4gY2xhc3MgYXBwbGllcyBpdHMgbmFtaW5nIHBvbGljeSB0byBnaXZlbiBhIHJlY2lwZSB0aGF0IHBhY2thZ2VzIG11bHRpcGxlIGxpYnJhcmllcy4iCisgICAgICAgICAgICAgICAgTEVBRF9TT05BTUVbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGxlYWQgKG9yIHByaW1hcnkpIGNvbXBpbGVkIGxpYnJhcnkgZmlsZSAoaS5lLiAuc28pIHRoYXQgdGhlIGRlYmlhbiBjbGFzcyBhcHBsaWVzIGl0cyBuYW1pbmcgcG9saWN5IHRvIGdpdmVuIGEgcmVjaXBlIHRoYXQgcGFja2FnZXMgbXVsdGlwbGUgbGlicmFyaWVzLiIKICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KIDwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CiAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgbGVhZCAob3IgcHJpbWFyeSkgY29tcGlsZWQgbGlicmFyeSBmaWxlCi0gICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+LnNvPC9maWxlbmFtZT4pIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT4uc288L2ZpbGVuYW1lPikgdGhhdCB0aGUKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZGViaWFuJz48ZmlsZW5hbWU+ZGViaWFuPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIGNsYXNzIGFwcGxpZXMgaXRzIG5hbWluZyBwb2xpY3kgdG8gZ2l2ZW4gYSByZWNpcGUgdGhhdAogICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyBtdWx0aXBsZSBsaWJyYXJpZXMuCkBAIC03ODA4LDggKzc5OTQsOCBAQAogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTElDRU5TRSc+PGZpbGVuYW1lPkxJQ0VOU0U8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgaXMgc2V0IHRvICJDTE9TRUQiKS48L3BhcmE+CiAgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3VzaW5ncG9reS1jb25maWd1cmluZy1MSUNfRklMRVNfQ0hLU1VNJz4KLSAgICAgICAgICAgICAgICAgICAgVHJhY2tpbmcgTGljZW5zZSBDaGFuZ2VzPC9saW5rPiIgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5ncG9reS1jb25maWd1cmluZy1MSUNfRklMRVNfQ0hLU1VNJz5UcmFja2luZyBMaWNlbnNlIENoYW5nZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtNzk0NCw4ICs4MTMwLDggQEAKICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZSBhZGRpdGlvbmFsIGxpY2Vuc2VzIGluIG9yZGVyIHRvIGJlIHVzZWQgaW4gYQogICAgICAgICAgICAgICAgICAgICBjb21tZXJjaWFsIHByb2R1Y3QuCiAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdlbmFibGluZy1jb21tZXJjaWFsbHktbGljZW5zZWQtcmVjaXBlcyc+RW5hYmxpbmcgQ29tbWVyY2lhbGx5IExpY2Vuc2VkIFJlY2lwZXM8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZW5hYmxpbmctY29tbWVyY2lhbGx5LWxpY2Vuc2VkLXJlY2lwZXMnPkVuYWJsaW5nIENvbW1lcmNpYWxseSBMaWNlbnNlZCBSZWNpcGVzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTc5NjQsOCArODE1MCw4IEBACiAgICAgICAgICAgICAgICAgICAgIFRoaXMgcHJhY3RpY2UgaXMgb3RoZXJ3aXNlIGtub3duIGFzICJ3aGl0ZWxpc3RpbmciCiAgICAgICAgICAgICAgICAgICAgIGxpY2Vuc2UgZmxhZ3MuCiAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2VuYWJsaW5nLWNvbW1lcmNpYWxseS1saWNlbnNlZC1yZWNpcGVzJz5FbmFibGluZyBDb21tZXJjaWFsbHkgTGljZW5zZWQgUmVjaXBlczwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNlbmFibGluZy1jb21tZXJjaWFsbHktbGljZW5zZWQtcmVjaXBlcyc+RW5hYmxpbmcgQ29tbWVyY2lhbGx5IExpY2Vuc2VkIFJlY2lwZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtODE4Niw3ICs4MzcyLDcgQEAKIAogICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SREVQRU5EUyc+PGdsb3NzdGVybT5NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SREVQRU5EUzwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUkRFUEVORFNbZG9jXSA9ICJBIGxpc3Qgb2YgcmVxdWlyZWQgbWFjaGluZS1zcGVjaWZpYyBwYWNrYWdlcyB0byBpbnN0YWxsIGFzIHBhcnQgb2YgdGhlIGltYWdlIGJlaW5nIGJ1aWx0LiBCZWNhdXNlIHRoaXMgaXMgYSAnbWFjaGluZSBlc3NlbnRpYWwnIHZhcmlhYmxlLCB0aGUgbGlzdCBvZiBwYWNrYWdlcyBhcmUgZXNzZW50aWFsIGZvciB0aGUgbWFjaGluZSB0byBib290LiIKKyAgICAgICAgICAgICAgICBNQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SREVQRU5EU1tkb2NdID0gIkEgbGlzdCBvZiByZXF1aXJlZCBtYWNoaW5lLXNwZWNpZmljIHBhY2thZ2VzIHRvIGluc3RhbGwgYXMgcGFydCBvZiB0aGUgaW1hZ2UgYmVpbmcgYnVpbHQuIEJlY2F1c2UgdGhpcyBpcyBhICdtYWNoaW5lLWVzc2VudGlhbCcgdmFyaWFibGUsIHRoZSBsaXN0IG9mIHBhY2thZ2VzIGFyZSBlc3NlbnRpYWwgZm9yIHRoZSBtYWNoaW5lIHRvIGJvb3QuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtODE5NCw3ICs4MzgwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIHJlcXVpcmVkIG1hY2hpbmUtc3BlY2lmaWMgcGFja2FnZXMgdG8gaW5zdGFsbCBhcyBwYXJ0IG9mCiAgICAgICAgICAgICAgICAgICAgIHRoZSBpbWFnZSBiZWluZyBidWlsdC4KICAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHByb2Nlc3MgZGVwZW5kcyBvbiB0aGVzZSBwYWNrYWdlcyBiZWluZyBwcmVzZW50LgotICAgICAgICAgICAgICAgICAgICBGdXJ0aGVybW9yZSwgYmVjYXVzZSB0aGlzIGlzIGEgIm1hY2hpbmUgZXNzZW50aWFsIiB2YXJpYWJsZSwgdGhlIGxpc3Qgb2YKKyAgICAgICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIGJlY2F1c2UgdGhpcyBpcyBhICJtYWNoaW5lLWVzc2VudGlhbCIgdmFyaWFibGUsIHRoZSBsaXN0IG9mCiAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIGFyZSBlc3NlbnRpYWwgZm9yIHRoZSBtYWNoaW5lIHRvIGJvb3QuCiAgICAgICAgICAgICAgICAgICAgIFRoZSBpbXBhY3Qgb2YgdGhpcyB2YXJpYWJsZSBhZmZlY3RzIGltYWdlcyBiYXNlZCBvbgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwLWNvcmUtYm9vdDwvZmlsZW5hbWU+LApAQCAtODIyMyw3ICs4NDA5LDcgQEAKIAogICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUyc+PGdsb3NzdGVybT5NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUzwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJFQ09NTUVORFNbZG9jXSA9ICJBIGxpc3Qgb2YgcmVjb21tZW5kZWQgbWFjaGluZS1zcGVjaWZpYyBwYWNrYWdlcyB0byBpbnN0YWxsIGFzIHBhcnQgb2YgdGhlIGltYWdlIGJlaW5nIGJ1aWx0LiBCZWNhdXNlIHRoaXMgaXMgYSAnbWFjaGluZSBlc3NlbnRpYWwnIHZhcmlhYmxlLCB0aGUgbGlzdCBvZiBwYWNrYWdlcyBhcmUgZXNzZW50aWFsIGZvciB0aGUgbWFjaGluZSB0byBib290LiIKKyAgICAgICAgICAgICAgICBNQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EU1tkb2NdID0gIkEgbGlzdCBvZiByZWNvbW1lbmRlZCBtYWNoaW5lLXNwZWNpZmljIHBhY2thZ2VzIHRvIGluc3RhbGwgYXMgcGFydCBvZiB0aGUgaW1hZ2UgYmVpbmcgYnVpbHQuIEJlY2F1c2UgdGhpcyBpcyBhICdtYWNoaW5lLWVzc2VudGlhbCcgdmFyaWFibGUsIHRoZSBsaXN0IG9mIHBhY2thZ2VzIGFyZSBlc3NlbnRpYWwgZm9yIHRoZSBtYWNoaW5lIHRvIGJvb3QuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtODIzMSw3ICs4NDE3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIHJlY29tbWVuZGVkIG1hY2hpbmUtc3BlY2lmaWMgcGFja2FnZXMgdG8gaW5zdGFsbCBhcyBwYXJ0IG9mCiAgICAgICAgICAgICAgICAgICAgIHRoZSBpbWFnZSBiZWluZyBidWlsdC4KICAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHByb2Nlc3MgZG9lcyBub3QgZGVwZW5kIG9uIHRoZXNlIHBhY2thZ2VzIGJlaW5nIHByZXNlbnQuCi0gICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGJlY2F1c2UgdGhpcyBpcyBhICJtYWNoaW5lIGVzc2VudGlhbCIgdmFyaWFibGUsIHRoZSBsaXN0IG9mCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGJlY2F1c2UgdGhpcyBpcyBhICJtYWNoaW5lLWVzc2VudGlhbCIgdmFyaWFibGUsIHRoZSBsaXN0IG9mCiAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIGFyZSBlc3NlbnRpYWwgZm9yIHRoZSBtYWNoaW5lIHRvIGJvb3QuCiAgICAgICAgICAgICAgICAgICAgIFRoZSBpbXBhY3Qgb2YgdGhpcyB2YXJpYWJsZSBhZmZlY3RzIGltYWdlcyBiYXNlZCBvbgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwLWNvcmUtYm9vdDwvZmlsZW5hbWU+LApAQCAtODQyMSw3ICs4NjA3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgSXQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZXItY29uZmlndXJhYmxlLgogICAgICAgICAgICAgICAgICAgICBJdCBpcyBiZXN0IHRvIGp1c3QgcmVmZXJlbmNlIHRoZSB2YXJpYWJsZSB0byBzZWUgd2hpY2ggbWFjaGluZSBmZWF0dXJlcyBhcmUKICAgICAgICAgICAgICAgICAgICAgYmVpbmcgYmFja2ZpbGxlZCBmb3IgYWxsIG1hY2hpbmUgY29uZmlndXJhdGlvbnMuCi0gICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J3JlZi1mZWF0dXJlcy1iYWNrZmlsbCc+RmVhdHVyZSBiYWNrZmlsbGluZzwvbGluaz4iIHNlY3Rpb24gZm9yCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J3JlZi1mZWF0dXJlcy1iYWNrZmlsbCc+RmVhdHVyZSBCYWNrZmlsbGluZzwvbGluaz4iIHNlY3Rpb24gZm9yCiAgICAgICAgICAgICAgICAgICAgIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KQEAgLTg0MzksNyArODYyNSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHRoYXQgc2hvdWxkIG5vdCBiZSBiYWNrZmlsbGVkIChpLmUuIGFkZGVkIHRvCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItTUFDSElORV9GRUFUVVJFUyc+TUFDSElORV9GRUFUVVJFUzwvbGluaz48L2ZpbGVuYW1lPikKICAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHRoZSBidWlsZC4KLSAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0ncmVmLWZlYXR1cmVzLWJhY2tmaWxsJz5GZWF0dXJlIGJhY2tmaWxsaW5nPC9saW5rPiIgc2VjdGlvbiBmb3IKKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0ncmVmLWZlYXR1cmVzLWJhY2tmaWxsJz5GZWF0dXJlIEJhY2tmaWxsaW5nPC9saW5rPiIgc2VjdGlvbiBmb3IKICAgICAgICAgICAgICAgICAgICAgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgpAQCAtODUyOSwxNCArODcxNSwxNCBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTUxQUkVGSVgnPjxnbG9zc3Rlcm0+TUxQUkVGSVg8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIE1MUFJFRklYW2RvY10gPSAiU3BlY2lmaWVzIGEgcHJlZml4IGhhcyBiZWVuIGFkZGVkIHRvIFBOIHRvIGNyZWF0ZSBhIHNwZWNpYWwgdmVyc2lvbiBvZiBhIHJlY2lwZSBvciBwYWNrYWdlLCBzdWNoIGFzIGEgTXVsdGlsaWIgdmVyc2lvbi4iCisgICAgICAgICAgICAgICAgTUxQUkVGSVhbZG9jXSA9ICJTcGVjaWZpZXMgYSBwcmVmaXggaGFzIGJlZW4gYWRkZWQgdG8gUE4gdG8gY3JlYXRlIGEgc3BlY2lhbCB2ZXJzaW9uIG9mIGEgcmVjaXBlIG9yIHBhY2thZ2UgKGkuZS4gYSBNdWx0aWxpYiB2ZXJzaW9uKS4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgogICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSBwcmVmaXggaGFzIGJlZW4gYWRkZWQgdG8KICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBOJz48ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPjwvbGluaz4gdG8gY3JlYXRlIGEgc3BlY2lhbCB2ZXJzaW9uCi0gICAgICAgICAgICAgICAgICAgIG9mIGEgcmVjaXBlIG9yIHBhY2thZ2UsIHN1Y2ggYXMgYSBNdWx0aWxpYiB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICBvZiBhIHJlY2lwZSBvciBwYWNrYWdlIChpLmUuIGEgTXVsdGlsaWIgdmVyc2lvbikuCiAgICAgICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSBpcyB1c2VkIGluIHBsYWNlcyB3aGVyZSB0aGUgcHJlZml4IG5lZWRzIHRvIGJlCiAgICAgICAgICAgICAgICAgICAgIGFkZGVkIHRvIG9yIHJlbW92ZWQgZnJvbSBhIHRoZSBuYW1lIChlLmcuIHRoZQogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQlBOJz48ZmlsZW5hbWU+QlBOPC9maWxlbmFtZT48L2xpbms+IHZhcmlhYmxlKS4KQEAgLTg4MjcsNyArOTAxMyw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1OT19SRUNPTU1FTkRBVElPTlMnPjxnbG9zc3Rlcm0+Tk9fUkVDT01NRU5EQVRJT05TPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBOT19SRUNPTU1FTkRBVElPTlNbZG9jXSA9ICJXaGVuIHNldCB0byAnMScsIG5vIHJlY29tbWVuZGVkIHBhY2thZ2VzIHdpbGwgYmUgaW5zdGFsbGVkLiBSZWFsaXplIHRoYXQgc29tZSByZWNvbW1lbmRlZCBwYWNrYWdlcyBtaWdodCBiZSByZXF1aXJlZCBmb3IgY2VydGFpbiBzeXN0ZW0gZnVuY3Rpb25hbGl0eSwgc3VjaCBhcyBrZXJuZWwtbW9kdWxlcy4gSXQgaXMgdXAgdG8gdGhlIHVzZXIgdG8gYWRkIHBhY2thZ2VzIHRvIElNQUdFX0lOU1RBTEwgYXMgbmVlZGVkLiIKKyAgICAgICAgICAgICAgICBOT19SRUNPTU1FTkRBVElPTlNbZG9jXSA9ICJXaGVuIHNldCB0byAnMScsIG5vIHJlY29tbWVuZGVkIHBhY2thZ2VzIHdpbGwgYmUgaW5zdGFsbGVkLiBTb21lIHJlY29tbWVuZGVkIHBhY2thZ2VzIG1pZ2h0IGJlIHJlcXVpcmVkIGZvciBjZXJ0YWluIHN5c3RlbSBmdW5jdGlvbmFsaXR5LCBzdWNoIGFzIGtlcm5lbC1tb2R1bGVzLiBJdCBpcyB1cCB0byB0aGUgdXNlciB0byBhZGQgcGFja2FnZXMgdG8gSU1BR0VfSU5TVEFMTCBhcyBuZWVkZWQuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtOTAwMyw4ICs5MTg5LDggQEAKICAgICAgICAgICAgICAgICAgICAgZm9yIGRldGFpbHMgb24gaG93IHRoaXMgY2xhc3MgYXBwbGllcyB0aGVzZSBhZGRpdGlvbmFsCiAgICAgICAgICAgICAgICAgICAgIHNlZCBjb21tYW5kIGFyZ3VtZW50cy4KICAgICAgICAgICAgICAgICAgICAgRm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gb24gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaW5jb25maWcuYmJjbGFzczwvZmlsZW5hbWU+IGNsYXNzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1iaW5jb25maWcnPkJpbmFyeSBDb25maWd1cmF0aW9uIFNjcmlwdHMgLSA8ZmlsZW5hbWU+YmluY29uZmlnLmJiY2xhc3M8L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaW5jb25maWc8L2ZpbGVuYW1lPiBjbGFzcywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYmluY29uZmlnJz48ZmlsZW5hbWU+YmluY29uZmlnLmJiY2xhc3M8L2ZpbGVuYW1lPjwvbGluaz4iCiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KQEAgLTkxODMsOCArOTM2OSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+T1ZFUlJJREVTPC9maWxlbmFtZT4gaW4gdGhlIG91dHB1dCBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIC1lPC9maWxlbmFtZT4gY29tbWFuZC4KICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZ3Bva3ktZGVidWdnaW5nLXZpZXdpbmctdmFyaWFibGUtdmFsdWVzJz5WaWV3aW5nIFZhcmlhYmxlIFZhbHVlczwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1kZWJ1Z2dpbmctdmlld2luZy12YXJpYWJsZS12YWx1ZXMnPlZpZXdpbmcgVmFyaWFibGUgVmFsdWVzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCisgICAgICAgICAgICAgICAgICAgICAgICBNYW51YWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgpAQCAtOTIyMywxMSArOTQxMCwxNyBAQAogICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8KICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRVTkVfUEtHQVJDSCc+PGZpbGVuYW1lPlRVTkVfUEtHQVJDSDwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICAgICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QlVJTERfQVJDSDwvZmlsZW5hbWU+IHdoZW4gYnVpbGRpbmcgZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICBidWlsZCBob3N0IGFuZCAiJHtTREtfQVJDSH0tJHtTREtQS0dTVUZGSVh9IiB3aGVuIGJ1aWxkaW5nCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CVUlMRF9BUkNIJz48ZmlsZW5hbWU+QlVJTERfQVJDSDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgaG9zdCwgYW5kICIke1NES19BUkNIfS0ke1NES1BLR1NVRkZJWH0iIHdoZW4gYnVpbGRpbmcKICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU0RLX0FSQ0gnPjxmaWxlbmFtZT5TREtfQVJDSDwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91ciByZWNpcGUncyBvdXRwdXQgcGFja2FnZXMgYXJlIGJ1aWx0Ci0gICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIHRvIHRoZSB0YXJnZXQgbWFjaGluZSByYXRoZXIgdGhhbiBnZW5lcmFsIGZvcgorICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyB0byB0aGUgdGFyZ2V0IG1hY2hpbmUgcmF0aGVyIHRoYW4gZ2VuZXJhbGx5IGZvcgogICAgICAgICAgICAgICAgICAgICB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBtYWNoaW5lLCB5b3Ugc2hvdWxkIHNldAogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRV9BUkNIPC9maWxlbmFtZT4gdG8gdGhlIHZhbHVlIG9mCiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FX0FSQ0gnPjxmaWxlbmFtZT5NQUNISU5FX0FSQ0g8L2ZpbGVuYW1lPjwvbGluaz4KQEAgLTkyOTgsOSArOTQ5MSwxMCBAQAogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5XYXJuaW5nPC90aXRsZT4KICAgICAgICAgICAgICAgICAgICAgICAgIFdoaWxlIGl0IGlzIGEgbGVnYWwgb3B0aW9uLCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlX3RhcjwvZmlsZW5hbWU+IGNsYXNzIGlzIGJyb2tlbgotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGlzIG5vdCBzdXBwb3J0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBkbyBub3QgdXNlIGl0LgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2VfdGFyPC9maWxlbmFtZT4gY2xhc3MgaGFzIGxpbWl0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uYWxpdHkgZHVlIHRvIG5vIHN1cHBvcnQgZm9yIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBieSB0aGF0IGJhY2tlbmQuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGVyZWZvcmUsIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IGRvIG5vdCB1c2UgaXQuCiAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSB1c2VzIG9ubHkgdGhlIGZpcnN0IGFyZ3VtZW50IGluIHRoZSBsaXN0CiAgICAgICAgICAgICAgICAgICAgIGFzIHRoZSBwYWNrYWdlIG1hbmFnZXIgd2hlbiBjcmVhdGluZyB5b3VyIGltYWdlIG9yIFNESy4KQEAgLTk0NzcsMjAgKzk2NzEsMjkgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVBBQ0tBR0VfRkVFRF9BUkNIUyc+PGdsb3NzdGVybT5QQUNLQUdFX0ZFRURfQVJDSFM8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIFBBQ0tBR0VfRkVFRF9BUkNIU1tkb2NdID0gIlNwZWNpZmllcyB1c2VyLWRlZmluZWQgcGFja2FnZSBhcmNoaXRlY3R1cmVzIHdoZW4gY29uc3RydWN0aW5nIHBhY2thZ2UgZmVlZCBVUklzLiIKKyAgICAgICAgICAgICAgICBQQUNLQUdFX0ZFRURfQVJDSFNbZG9jXSA9ICJPcHRpb25hbGx5IHNwZWNpZmllcyB1c2VyLWRlZmluZWQgcGFja2FnZSBhcmNoaXRlY3R1cmVzIHdoZW4gY29uc3RydWN0aW5nIHBhY2thZ2UgZmVlZCBVUklzLiIKICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KIDwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+Ci0gICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgcGFja2FnZSBhcmNoaXRlY3R1cmVzIHVzZWQgYXMgcGFydCBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBmZWVkIFVSSXMgZHVyaW5nIHRoZSBidWlsZC4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5QQUNLQUdFX0ZFRURfQVJDSFM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcwotICAgICAgICAgICAgICAgICAgICBhcHBlbmRlZCB0byB0aGUgZmluYWwgcGFja2FnZSBmZWVkIFVSSSwgd2hpY2ggaXMgY29uc3RydWN0ZWQKLSAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsbHkgc3BlY2lmaWVzIHRoZSBwYWNrYWdlIGFyY2hpdGVjdHVyZXMgdXNlZCBhcworICAgICAgICAgICAgICAgICAgICBwYXJ0IG9mIHRoZSBwYWNrYWdlIGZlZWQgVVJJcyBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBXaGVuIHVzZWQsIHRoZSA8ZmlsZW5hbWU+UEFDS0FHRV9GRUVEX0FSQ0hTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaXMgYXBwZW5kZWQgdG8gdGhlIGZpbmFsIHBhY2thZ2UgZmVlZCBVUkksIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIGlzIGNvbnN0cnVjdGVkIHVzaW5nIHRoZQogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9GRUVEX1VSSVMnPjxmaWxlbmFtZT5QQUNLQUdFX0ZFRURfVVJJUzwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICAgICAgICAgICAgICBhbmQKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfRkVFRF9CQVNFX1BBVEhTJz48ZmlsZW5hbWU+UEFDS0FHRV9GRUVEX0JBU0VfUEFUSFM8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSA8ZmlsZW5hbWU+UEFDS0FHRV9GRUVEU19BUkNIUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byB3aGl0ZWxpc3Qgc3BlY2lmaWMgcGFja2FnZSBhcmNoaXRlY3R1cmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBuZWVkIHRvIHdoaXRlbGlzdCBzcGVjaWZpYyBhcmNoaXRlY3R1cmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgYSBjb21tb24gY2FzZSwgeW91IGNhbiBvbWl0IHRoaXMgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICBPbWl0dGluZyB0aGUgdmFyaWFibGUgcmVzdWx0cyBpbiBhbGwgYXZhaWxhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmVzIGZvciB0aGUgY3VycmVudCBtYWNoaW5lIGJlaW5nIGluY2x1ZGVkCisgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIHJlbW90ZSBwYWNrYWdlIGZlZWRzLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+CkBAIC05Nzk4LDcgKzEwMDAxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCA8ZmlsZW5hbWU+LS13aXRoLWNyb2NvPC9maWxlbmFtZT4gaXMKICAgICAgICAgICAgICAgICAgICAgYWRkZWQgdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQgYXJndW1lbnQgbGlzdCBhbmQKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYmNyb2NvPC9maWxlbmFtZT4gaXMgYWRkZWQgdG8KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBFTkRTJz5ERVBFTkRTPC9saW5rPjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlIGZlYXR1cmUgaXMgZGlzYWJsZWQgc2F5IHRocm91Z2gKICAgICAgICAgICAgICAgICAgICAgYSA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZSBpbiBhbm90aGVyIGxheWVyLCB0aGVuCiAgICAgICAgICAgICAgICAgICAgIHRoZSBzZWNvbmQgYXJndW1lbnQgPGZpbGVuYW1lPi0td2l0aG91dC1jcm9jbzwvZmlsZW5hbWU+IGlzCkBAIC05ODcwLDggKzEwMDczLDggQEAKICAgICAgICAgICAgICAgICAgICAgYW5kCiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWNtYWtlJz48ZmlsZW5hbWU+Y21ha2U8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgdXNlIDxmaWxlbmFtZT5QQUNLQUdFQ09ORklHX0NPTkZBUkdTPC9maWxlbmFtZT4gdG8gcGFzcwotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRUNPTkZJRyc+PGZpbGVuYW1lPlBBQ0tBR0VDT05GSUc8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB0byA8ZmlsZW5hbWU+Y29uZmlndXJlPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFQ09ORklHPC9maWxlbmFtZT4gb3B0aW9ucyB0bworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZmlndXJlPC9maWxlbmFtZT4gYW5kCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jbWFrZTwvZmlsZW5hbWU+LCByZXNwZWN0aXZlbHkuCiAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgdXNpbmcKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VDT05GSUc8L2ZpbGVuYW1lPiBidXQgbm90IGEgY2xhc3MgdGhhdApAQCAtOTg3OSwxMiArMTAwODIsNiBAQAogICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byB1c2UKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VDT05GSUdfQ09ORkFSR1M8L2ZpbGVuYW1lPiBhcHByb3ByaWF0ZWx5LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRUNPTkZJRyc+PGZpbGVuYW1lPlBBQ0tBR0VDT05GSUc8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgogCkBAIC05OTExLDEyICsxMDEwOCwxMiBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUEFDS0FHRVMnPjxnbG9zc3Rlcm0+UEFDS0FHRVM8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIFBBQ0tBR0VTW2RvY10gPSAiVGhlIGxpc3Qgb2YgcGFja2FnZXMgdG8gYmUgY3JlYXRlZCBmcm9tIHRoZSByZWNpcGUuIgorICAgICAgICAgICAgICAgIFBBQ0tBR0VTW2RvY10gPSAiVGhlIGxpc3Qgb2YgcGFja2FnZXMgdGhlIHJlY2lwZSBjcmVhdGVzLiIKICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KIDwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBsaXN0IG9mIHBhY2thZ2VzIHRvIGJlIGNyZWF0ZWQgZnJvbSB0aGUgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICBUaGUgbGlzdCBvZiBwYWNrYWdlcyB0aGUgcmVjaXBlIGNyZWF0ZXMuCiAgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJHtQTn0tZGJnICR7UE59LXN0YXRpY2RldiAke1BOfS1kZXYgJHtQTn0tZG9jICR7UE59LWxvY2FsZSAke1BBQ0tBR0VfQkVGT1JFX1BOfSAke1BOfQpAQCAtMTAwNjYsOCArMTAyNjMsOCBAQAogCiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHNwZWVkaW5nIHVwIGJ1aWxkcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc3BlZWRpbmctdXAtdGhlLWJ1aWxkJz5TcGVlZGluZyBVcCB0aGUgQnVpbGQ8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc3BlZWRpbmctdXAtYS1idWlsZCc+U3BlZWRpbmcgVXAgYSBCdWlsZDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC0xMDMwOCwxMCArMTA1MDUsMTQgQEAKICAgICAgJHtTVEFHSU5HX0RJUl9IT1NUfS9wa2dkYXRhCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGVzIG9mIGhvdyB0aGlzIGRhdGEgaXMgdXNlZCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nYXV0b21hdGljYWxseS1hZGRlZC1ydW50aW1lLWRlcGVuZGVuY2llcyc+QXV0b21hdGljYWxseSBBZGRlZCBSdW50aW1lIERlcGVuZGVuY2llczwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gYW5kIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndmlld2luZy1wYWNrYWdlLWluZm9ybWF0aW9uLXdpdGgtb2UtcGtnZGF0YS11dGlsJz5WaWV3aW5nIFBhY2thZ2UgSW5mb3JtYXRpb24gd2l0aCA8ZmlsZW5hbWU+b2UtcGtnZGF0YS11dGlsPC9maWxlbmFtZT48L2xpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNhdXRvbWF0aWNhbGx5LWFkZGVkLXJ1bnRpbWUtZGVwZW5kZW5jaWVzJz5BdXRvbWF0aWNhbGx5IEFkZGVkIFJ1bnRpbWUgRGVwZW5kZW5jaWVzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbAorICAgICAgICAgICAgICAgICAgICBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN2aWV3aW5nLXBhY2thZ2UtaW5mb3JtYXRpb24td2l0aC1vZS1wa2dkYXRhLXV0aWwnPlZpZXdpbmcgUGFja2FnZSBJbmZvcm1hdGlvbiB3aXRoIDxmaWxlbmFtZT5vZS1wa2dkYXRhLXV0aWw8L2ZpbGVuYW1lPjwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHNoYXJlZCwgZ2xvYmFsLXN0YXRlIGRpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgc2VlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TVEFHSU5HX0RJUl9IT1NUJz48ZmlsZW5hbWU+U1RBR0lOR19ESVJfSE9TVDwvZmlsZW5hbWU+PC9saW5rPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC0xMDQxNCw3ICsxMDYxNSw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1QTic+PGdsb3NzdGVybT5QTjwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgUE5bZG9jXSA9ICJQTiByZWZlcnMgdG8gYSByZWNpcGUgbmFtZSBpbiB0aGUgY29udGV4dCBvZiBhIGZpbGUgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBhcyBpbnB1dCB0byBjcmVhdGUgYSBwYWNrYWdlLiBJdCByZWZlcnMgdG8gYSBwYWNrYWdlIG5hbWUgaW4gdGhlIGNvbnRleHQgb2YgYSBmaWxlIGNyZWF0ZWQgb3IgcHJvZHVjZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uIgorICAgICAgICAgICAgICAgIFBOW2RvY10gPSAiUE4gcmVmZXJzIHRvIGEgcmVjaXBlIG5hbWUgaW4gdGhlIGNvbnRleHQgb2YgYSBmaWxlIHVzZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYXMgaW5wdXQgdG8gY3JlYXRlIGEgcGFja2FnZS4KICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KQEAgLTEwNTU1LDExICsxMDc1NiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBSPC9maWxlbmFtZT4gdG8ga25vdyB3aGVuIHRvIHJlYnVpbGQgYQogICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlLgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSB1c2VzIHRoZSB0YXNrCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2NoZWNrc3Vtcyc+aW5wdXQgY2hlY2tzdW1zPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjb3ZlcnZpZXctY2hlY2tzdW1zJz5pbnB1dCBjaGVja3N1bXM8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgYWxvbmcgd2l0aCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1idWlsZC10bXAtc3RhbXBzJz5zdGFtcDwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc2hhcmVkLXN0YXRlLWNhY2hlJz5zaGFyZWQgc3RhdGUgY2FjaGU8L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3NoYXJlZC1zdGF0ZS1jYWNoZSc+c2hhcmVkIHN0YXRlIGNhY2hlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgIG1lY2hhbmlzbXMuCiAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5QUjwvZmlsZW5hbWU+IHZhcmlhYmxlIHByaW1hcmlseSBiZWNvbWVzCkBAIC0xMDU5OCwyNiArMTA3OTksNDAgQEAKICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KIDwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+Ci0gICAgICAgICAgICAgICAgICAgIElmIG11bHRpcGxlIHJlY2lwZXMgcHJvdmlkZSBhbiBpdGVtLCB0aGlzIHZhcmlhYmxlCi0gICAgICAgICAgICAgICAgICAgIGRldGVybWluZXMgd2hpY2ggcmVjaXBlIHNob3VsZCBiZSBnaXZlbiBwcmVmZXJlbmNlLgotICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGFsd2F5cyBzdWZmaXggdGhlIHZhcmlhYmxlIHdpdGggdGhlIG5hbWUgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgIHByb3ZpZGVkIGl0ZW0sIGFuZCB5b3Ugc2hvdWxkIHNldCBpdCB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBOJz48ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHJlY2lwZSB0byB3aGljaCB5b3Ugd2FudCB0byBnaXZlIHByZWNlZGVuY2UuCi0gICAgICAgICAgICAgICAgICAgIFNvbWUgZXhhbXBsZXM6CisgICAgICAgICAgICAgICAgICAgIElmIG11bHRpcGxlIHJlY2lwZXMgcHJvdmlkZSB0aGUgc2FtZSBpdGVtLCB0aGlzIHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgIGRldGVybWluZXMgd2hpY2ggcmVjaXBlIGlzIHByZWZlcnJlZCBhbmQgdGh1cyBwcm92aWRlcworICAgICAgICAgICAgICAgICAgICB0aGUgaXRlbSAoaS5lLiB0aGUgcHJlZmVycmVkIHByb3ZpZGVyKS4KKyAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBhbHdheXMgc3VmZml4IHRoaXMgdmFyaWFibGUgd2l0aCB0aGUgbmFtZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQgaXRlbS4KKyAgICAgICAgICAgICAgICAgICAgQW5kLCB5b3Ugc2hvdWxkIGRlZmluZSB0aGUgdmFyaWFibGUgdXNpbmcgdGhlIHByZWZlcnJlZAorICAgICAgICAgICAgICAgICAgICByZWNpcGUncyBuYW1lCisgICAgICAgICAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSd2YXItUE4nPjxmaWxlbmFtZT5QTjwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYSBjb21tb24gZXhhbXBsZToKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gImxpbnV4LXlvY3RvIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEluIHRoZSBwcmV2aW91cyBleGFtcGxlLCBtdWx0aXBsZSByZWNpcGVzIGFyZSBwcm92aWRpbmcKKyAgICAgICAgICAgICAgICAgICAgInZpcnR1YWwva2VybmVsIi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5QUkVGRVJSRURfUFJPVklERVI8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcworICAgICAgICAgICAgICAgICAgICBzZXQgd2l0aCB0aGUgbmFtZSAoPGZpbGVuYW1lPlBOPC9maWxlbmFtZT4pIG9mIHRoZSByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgeW91IHByZWZlciB0byBwcm92aWRlICJ2aXJ0dWFsL2tlcm5lbCIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgbW9yZSBleGFtcGxlczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC94c2VydmVyID0gInhzZXJ2ZXIteGY4NiIKICAgICAgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliZ2wgPz0gIm1lc2EiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlOgotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YS12aXJ0dWFsLXByb3ZpZGVycyc+TWV0YWRhdGEgKFZpcnR1YWwgUHJvdmlkZXJzKTwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21ldGFkYXRhLXZpcnR1YWwtcHJvdmlkZXJzJz5Vc2luZyBWaXJ0dWFsIFByb3ZpZGVyczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugc2V0IDxmaWxlbmFtZT5QUkVGRVJSRURfUFJPVklERVI8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGEgPGZpbGVuYW1lPnZpcnR1YWwvKjwvZmlsZW5hbWU+IGl0ZW0sIHRoZW4gYW55CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgdXNlIGEgPGZpbGVuYW1lPnZpcnR1YWwvKjwvZmlsZW5hbWU+IGl0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggPGZpbGVuYW1lPlBSRUZFUlJFRF9QUk9WSURFUjwvZmlsZW5hbWU+LCB0aGVuIGFueQogICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIHRoYXQKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QUk9WSURFUyc+PGZpbGVuYW1lPlBST1ZJREVTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGl0ZW0gdGhhdCBpcyBub3Qgc2VsZWN0ZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgaXRlbSBidXQgaXMgbm90IHNlbGVjdGVkIChkZWZpbmVkKSBieQogICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBSRUZFUlJFRF9QUk9WSURFUjwvZmlsZW5hbWU+IGlzIHByZXZlbnRlZAogICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBidWlsZGluZywgd2hpY2ggaXMgdXN1YWxseSBkZXNpcmFibGUgc2luY2UgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICAgbWVjaGFuaXNtIGlzIGRlc2lnbmVkIHRvIHNlbGVjdCBiZXR3ZWVuIG11dHVhbGx5CkBAIC0xMDY5Niw4ICsxMDkxMSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPl9mb3JjZXZhcmlhYmxlPC9maWxlbmFtZT4gb3ZlcnJpZGUgaXMKICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBoYW5kbGVkIHNwZWNpYWxseS4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3ZlcnJpZGUgb25seSB3b3JrcyBiZWNhdXNlIHRoZSBkZWZhdWx0IHZhbHVlIG9mCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItT1ZFUlJJREVTJz48ZmlsZW5hbWU+T1ZFUlJJREVTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcyAiZm9yY2V2YXJpYWJsZSIuCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+T1ZFUlJJREVTPC9maWxlbmFtZT4gaW5jbHVkZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb3JjZXZhcmlhYmxlIi4KICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CkBAIC0xMDc1NCw3ICsxMDk2OSw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1QUklPUklUWSc+PGdsb3NzdGVybT5QUklPUklUWTwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgUFJJT1JJVFlbZG9jXSA9ICJJbmRpY2F0ZXMgdGhlIGltcG9ydGFuY2Ugb2YgYSBwYWNrYWdlLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgJ29wdGlvbmFsJy4gIE90aGVyIHN0YW5kYXJkIHZhbHVlcyBhcmUgJ3JlcXVpcmVkJywgJ3N0YW5kYXJkJyBhbmQgJ2V4dHJhJy4iCisgICAgICAgICAgICAgICAgUFJJT1JJVFlbZG9jXSA9ICJJbmRpY2F0ZXMgdGhlIGltcG9ydGFuY2Ugb2YgYSBwYWNrYWdlLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgJ29wdGlvbmFsJy4gIE90aGVyIHN0YW5kYXJkIHZhbHVlcyBhcmUgJ3JlcXVpcmVkJywgJ3N0YW5kYXJkJywgYW5kICdleHRyYScuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtMTA4MTQsOCArMTEwMjksOCBAQAogCiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdhdXRvbWF0aWNhbGx5LWFkZGVkLXJ1bnRpbWUtZGVwZW5kZW5jaWVzJz5BdXRvbWF0aWNhbGx5IEFkZGVkIFJ1bnRpbWUgRGVwZW5kZW5jaWVzPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjYXV0b21hdGljYWxseS1hZGRlZC1ydW50aW1lLWRlcGVuZGVuY2llcyc+QXV0b21hdGljYWxseSBBZGRlZCBSdW50aW1lIERlcGVuZGVuY2llczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtMTA4NjAsOCArMTEwNzUsNyBAQAogICAgICAgICAgICAgICAgICAgICBSZWNpcGVzIHRoYXQgcHJvdmlkZSB0aGUgZnVuY3Rpb25hbGl0eSBpbiBxdWVzdGlvbiBsaXN0IHRoZQogICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIHRhcmdldCBpbiA8ZmlsZW5hbWU+UFJPVklERVM8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgICAgUmVjaXBlcyB0aGF0IGRlcGVuZCBvbiB0aGUgZnVuY3Rpb25hbGl0eSBpbiBxdWVzdGlvbiBjYW4KLSAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSB0aGUgdmlydHVhbCB0YXJnZXQgaW4KLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFUEVORFMnPjxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgdGhlIHZpcnR1YWwgdGFyZ2V0IGluIDxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgdG8gbGVhdmUgdGhlIGNob2ljZSBvZiBwcm92aWRlciBvcGVuLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtMTEwMDEsOCArMTEyMTUsNyBAQAogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBSZWNpcGVzIHRoYXQgaW5oZXJpdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZGlzdHV0aWxzJz48ZmlsZW5hbWU+ZGlzdHV0aWxzPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIFJlY2lwZXMgdGhhdCBpbmhlcml0IHRoZSA8ZmlsZW5hbWU+ZGlzdHV0aWxzPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgY2xhc3MgZHVyaW5nIGNyb3NzLWJ1aWxkcyBhbHNvIHVzZSB0aGlzIHZhcmlhYmxlIHRvCiAgICAgICAgICAgICAgICAgICAgIGxvY2F0ZSB0aGUgaGVhZGVycyBhbmQgbGlicmFyaWVzIG9mIHRoZSBhcHByb3ByaWF0ZSBQeXRob24KICAgICAgICAgICAgICAgICAgICAgdGhhdCB0aGUgZXh0ZW5zaW9uIGlzIHRhcmdldGluZy4KQEAgLTExMTMxLDggKzExMzQ0LDggQEAKICAgICAgICAgICAgICAgICAgICAgVGhlcmVmb3JlLCBtb3N0IHJlY2lwZXMgZG8gbm90IG5lZWQgdG8gc2V0CiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nYXV0b21hdGljYWxseS1hZGRlZC1ydW50aW1lLWRlcGVuZGVuY2llcyc+QXV0b21hdGljYWxseSBBZGRlZCBSdW50aW1lIERlcGVuZGVuY2llczwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2F1dG9tYXRpY2FsbHktYWRkZWQtcnVudGltZS1kZXBlbmRlbmNpZXMnPkF1dG9tYXRpY2FsbHkgQWRkZWQgUnVudGltZSBEZXBlbmRlbmNpZXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtMTE1NzEsOSArMTE3ODQsOSBAQAogICAgICAgICAgICAgICAgICAgICBJbiB0aGUgZXhhbXBsZSwgdGhlIHBhY2thZ2UgbmFtZQogICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPiR7PGxpbmsgbGlua2VuZD0ndmFyLVBOJz5QTjwvbGluaz59LWRldjwvZmlsZW5hbWU+KQogICAgICAgICAgICAgICAgICAgICBtdXN0IGFwcGVhciBhcyBpdCB3b3VsZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFUyc+UEFDS0FHRVM8L2xpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlIGJlZm9yZSBhbnkgcmVuYW1pbmcgb2YgdGhlIG91dHB1dCBwYWNrYWdlIGJ5Ci0gICAgICAgICAgICAgICAgICAgIGNsYXNzZXMgc3VjaCBhcyA8ZmlsZW5hbWU+ZGViaWFuLmJiY2xhc3M8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VTPC9maWxlbmFtZT4gbmFtZXNwYWNlIGJlZm9yZSBhbnkgcmVuYW1pbmcKKyAgICAgICAgICAgICAgICAgICAgb2YgdGhlIG91dHB1dCBwYWNrYWdlIGJ5IGNsYXNzZXMgc3VjaCBhcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGViaWFuLmJiY2xhc3M8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTExODA3LDExICsxMjAyMCwxMSBAQAogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSBzZXQgdXAgYW5kIHVzZWQgYnkgdGhlCiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXBvcHVsYXRlLXNkayc+PGZpbGVuYW1lPnBvcHVsYXRlX3Nka19iYXNlPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHRvIHdoaWNoIHRoZSBTREsgaXMgZGVwbG95ZWQuCisgICAgICAgICAgICAgICAgICAgIGNsYXNzIHRvIHdoaWNoIHRoZSBTREsgaXMgZGVwbG95ZWQuCiAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+cG9wdWxhdGVfc2RrX2Jhc2U8L2ZpbGVuYW1lPiBjbGFzcyBkZWZpbmVzCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TREtfREVQTE9ZPC9maWxlbmFtZT4gYXMgZm9sbG93czoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTREtfREVQTE9ZID0gIiR7PGxpbmsgbGlua2VuZD0ndmFyLVRNUERJUic+VE1QRElSPC9saW5rPn0vZGVwbG95L3NkayIKKyAgICAgU0RLX0RFUExPWSA9ICIke1RNUERJUn0vZGVwbG95L3NkayIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CkBAIC0xMTgzMCw3ICsxMjA0Myw3IEBACiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXBvcHVsYXRlLXNkay0qJz48ZmlsZW5hbWU+cG9wdWxhdGVfc2RrX2Jhc2U8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgY2xhc3MgZGVmaW5lcyB0aGUgdmFyaWFibGUgYXMgZm9sbG93czoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTREtfRElSID0gIiR7PGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L2xpbms+fS9zZGsiCisgICAgIFNES19ESVIgPSAiJHtXT1JLRElSfS9zZGsiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlNES19ESVI8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaXMgYQpAQCAtMTE4NzYsNyArMTIwODksNyBAQAogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgVGhlIG1hbmlmZXN0IGZpbGUgZm9yIHRoZSBob3N0IHBhcnQgb2YgdGhlIFNESy4KICAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWxlIGxpc3RzIGFsbCB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzIHRoYXQgbWFrZSB1cAotICAgICAgICAgICAgICAgICAgICB0aGUgaG9zdCBwYXJ0IG9mIFNESy4KKyAgICAgICAgICAgICAgICAgICAgdGhlIGhvc3QgcGFydCBvZiB0aGUgU0RLLgogICAgICAgICAgICAgICAgICAgICBUaGUgZmlsZSBjb250YWlucyBwYWNrYWdlIGluZm9ybWF0aW9uIG9uIGEgbGluZS1wZXItcGFja2FnZQogICAgICAgICAgICAgICAgICAgICBiYXNpcyBhcyBmb2xsb3dzOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC0xMjA2MCwxMyArMTIyNzMsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtcG9wdWxhdGUtc2RrLSonPjxmaWxlbmFtZT5wb3B1bGF0ZV9zZGtfYmFzZTwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICAgICAgICAgICAgICBjbGFzcyBkZWZpbmVzIHRoZSB2YXJpYWJsZSBhcyBmb2xsb3dzOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFNES19PVVRQVVQgPSAiJHs8bGluayBsaW5rZW5kPSd2YXItU0RLX0RJUic+U0RLX0RJUjwvbGluaz59L2ltYWdlIgorICAgICBTREtfRElSID0gIiR7V09SS0RJUn0vc2RrIgorICAgICBTREtfT1VUUFVUID0gIiR7U0RLX0RJUn0vaW1hZ2UiCisgICAgIFNES19ERVBMT1kgPSAiJHtERVBMT1lfRElSfS9zZGsiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlNES19PVVRQVVQ8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaXMgYQogICAgICAgICAgICAgICAgICAgICAgICAgdGVtcG9yYXJ5IGRpcmVjdG9yeSBhcyBpdCBpcyBwYXJ0IG9mCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+IGJ5IHdheSBvZgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNES19ESVI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgYnkgd2F5IG9mCisgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU0RLX0RJUic+PGZpbGVuYW1lPlNES19ESVI8L2ZpbGVuYW1lPjwvbGluaz4uCiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZmluYWwgb3V0cHV0IGRpcmVjdG9yeSBpcwogICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNES19ERVBMT1knPjxmaWxlbmFtZT5TREtfREVQTE9ZPC9maWxlbmFtZT48L2xpbms+LgogICAgICAgICAgICAgICAgICAgICA8L25vdGU+CkBAIC0xMjA5NiwxMyArMTIzMTIsMTMgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNES19QT1NUUFJPQ0VTU19DT01NQU5EJz48Z2xvc3N0ZXJtPlNES19QT1NUUFJPQ0VTU19DT01NQU5EPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBTREtfUE9TVFBST0NFU1NfQ09NTUFORFtkb2NdID0gIlNwZWNpZmllcyBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIGNhbGwgb25jZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBoYXMgY3JlYXRlZCB0aGUgU0RLLiIKKyAgICAgICAgICAgICAgICBTREtfUE9TVFBST0NFU1NfQ09NTUFORFtkb2NdID0gIlNwZWNpZmllcyBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIGNhbGwgb25jZSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjcmVhdGVzIHRoZSBTREsuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGEgbGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBvbmNlIHRoZQotICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGhhcyBjcmVhdGVkIHRoZSBTREsuCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY3JlYXRlcyB0aGUgU0RLLgogICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNwZWNpZnkgZnVuY3Rpb25zIHNlcGFyYXRlZCBieSBzZW1pY29sb25zOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIFNES19QT1NUUFJPQ0VTU19DT01NQU5EICs9ICI8cmVwbGFjZWFibGU+ZnVuY3Rpb248L3JlcGxhY2VhYmxlPjsgLi4uICIKQEAgLTEyNDQzLDEyICsxMjY1OSwxMyBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU0VSSUFMX0NPTlNPTEUnPjxnbG9zc3Rlcm0+U0VSSUFMX0NPTlNPTEU8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIFNFUklBTF9DT05TT0xFW2RvY10gPSAiVGhlIHNwZWVkIGFuZCBkZXZpY2UgZm9yIHRoZSBzZXJpYWwgcG9ydCB1c2VkIHRvIGF0dGFjaCB0aGUgc2VyaWFsIGNvbnNvbGUuIFRoaXMgdmFyaWFibGUgaXMgZ2l2ZW4gdG8gdGhlIGtlcm5lbCBhcyB0aGUgJ2NvbnNvbGUnIHBhcmFtZXRlci4gQWZ0ZXIgYm9vdGluZyBvY2N1cnMsIGdldHR5IGlzIHN0YXJ0ZWQgb24gdGhhdCBwb3J0IHNvIHJlbW90ZSBsb2dpbiBpcyBwb3NzaWJsZS4iCisgICAgICAgICAgICAgICAgU0VSSUFMX0NPTlNPTEVbZG9jXSA9ICJEZWZpbmVzIHRoZSBzZXJpYWwgY29uc29sZXMgKFRUWXMpIHRvIGVuYWJsZSB1c2luZyBnZXR0eS4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgotICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIGEgc2VyaWFsIGNvbnNvbGUgKFRUWSkgdG8gZW5hYmxlIHVzaW5nIGdldHR5LgorICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIGEgc2VyaWFsIGNvbnNvbGUgKFRUWSkgdG8gZW5hYmxlIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dldHR5XyhVbml4KSc+Z2V0dHk8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZSBhIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHRoZSBiYXVkIHJhdGUgZm9sbG93ZWQgYnkKICAgICAgICAgICAgICAgICAgICAgdGhlIFRUWSBkZXZpY2UgbmFtZSBzZXBhcmF0ZWQgYnkgYSBzcGFjZS4KICAgICAgICAgICAgICAgICAgICAgWW91IGNhbm5vdCBzcGVjaWZ5IG1vcmUgdGhhbiBvbmUgVFRZIGRldmljZToKQEAgLTEyNDczLDcgKzEyNjkwLDggQEAKICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KIDwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+Ci0gICAgICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIHNlcmlhbCBjb25zb2xlcyAoVFRZcykgdG8gZW5hYmxlIHVzaW5nIGdldHR5LgorICAgICAgICAgICAgICAgICAgICBEZWZpbmVzIGEgc2VyaWFsIGNvbnNvbGUgKFRUWSkgdG8gZW5hYmxlIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dldHR5XyhVbml4KSc+Z2V0dHk8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgUHJvdmlkZSBhIHZhbHVlIHRoYXQgc3BlY2lmaWVzIHRoZSBiYXVkIHJhdGUgZm9sbG93ZWQgYnkKICAgICAgICAgICAgICAgICAgICAgdGhlIFRUWSBkZXZpY2UgbmFtZSBzZXBhcmF0ZWQgYnkgYSBzZW1pY29sb24uCiAgICAgICAgICAgICAgICAgICAgIFVzZSBzcGFjZXMgdG8gc2VwYXJhdGUgbXVsdGlwbGUgZGV2aWNlczoKQEAgLTEyNTI3LDggKzEyNzQ1LDI1IEBACiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgPGZpbGVuYW1lPmludG9uZTwvZmlsZW5hbWU+IGRlcGVuZHMgb24KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1wbGF5ZXIyPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEluIHRoZSBwcmV2aW91cyBleGFtcGxlLCA8ZmlsZW5hbWU+aW50b25lPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kcyBvbiA8ZmlsZW5hbWU+bXBsYXllcjI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIHNwZWNpYWwgdG9rZW4gPGZpbGVuYW1lPiIqIjwvZmlsZW5hbWU+IG9uCisgICAgICAgICAgICAgICAgICAgIHRoZSBsZWZ0LWhhbmQgc2lkZSBvZiB0aGUgZGVwZW5kZW5jeSB0byBtYXRjaCBhbGwKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlcyBleGNlcHQgdGhlIG9uZSBvbiB0aGUgcmlnaHQtaGFuZCBzaWRlLgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICBTSUdHRU5fRVhDTFVERV9TQUZFX1JFQ0lQRV9ERVBTICs9ICIqLT5xdWlsdC1uYXRpdmUiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIGFsbCByZWNpcGVzIGV4Y2VwdAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cXVpbHQtbmF0aXZlPC9maWxlbmFtZT4gaWdub3JlIHRhc2sKKyAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlcyBmcm9tIHRoZSA8ZmlsZW5hbWU+cXVpbHQtbmF0aXZlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlIHdoZW4gZGV0ZXJtaW5pbmcgdGhlaXIgdGFzayBzaWduYXR1cmVzLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtMTI3ODksNiArMTMwMjQsNDggQEAKICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KIAorICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNQTF9CSU5BUlknPjxnbG9zc3Rlcm0+U1BMX0JJTkFSWTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgU1BMX0JJTkFSWVtkb2NdID0gIlRoZSBmaWxlIHR5cGUgb2YgdGhlIFNlY29uZGFyeSBQcm9ncmFtIExvYWRlciAoU1BMKS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+Cis8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgorICAgICAgICAgICAgICAgICAgICBUaGUgZmlsZSB0eXBlIGZvciB0aGUgU2Vjb25kYXJ5IFByb2dyYW0gTG9hZGVyIChTUEwpLgorICAgICAgICAgICAgICAgICAgICBTb21lIGRldmljZXMgdXNlIGFuIFNQTCBmcm9tIHdoaWNoIHRvIGJvb3QgKGUuZy4gdGhlCisgICAgICAgICAgICAgICAgICAgIEJlYWdsZUJvbmUgZGV2ZWxvcG1lbnQgYm9hcmQpLgorICAgICAgICAgICAgICAgICAgICBGb3Igc3VjaCBjYXNlcywgeW91IGNhbiBkZWNsYXJlIHRoZSBmaWxlIHR5cGUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIFNQTCBiaW5hcnkgaW4gdGhlIDxmaWxlbmFtZT51LWJvb3QuaW5jPC9maWxlbmFtZT4gaW5jbHVkZQorICAgICAgICAgICAgICAgICAgICBmaWxlLCB3aGljaCBpcyB1c2VkIGluIHRoZSBVLUJvb3QgcmVjaXBlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgU1BMIGZpbGUgdHlwZSBpcyBzZXQgdG8gIm51bGwiIGJ5IGRlZmF1bHQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT51LWJvb3QuaW5jPC9maWxlbmFtZT4gZmlsZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICMgU29tZSB2ZXJzaW9ucyBvZiB1LWJvb3QgYnVpbGQgYW4gU1BMIChTZWNvbmQgUHJvZ3JhbSBMb2FkZXIpIGltYWdlIHRoYXQKKyAgICAgIyBzaG91bGQgYmUgcGFja2FnZWQgYWxvbmcgd2l0aCB0aGUgdS1ib290IGJpbmFyeSBhcyB3ZWxsIGFzIHBsYWNlZCBpbiB0aGUKKyAgICAgIyBkZXBsb3kgZGlyZWN0b3J5LiAgRm9yIHRob3NlIHZlcnNpb25zIHRoZXkgY2FuIHNldCB0aGUgZm9sbG93aW5nIHZhcmlhYmxlcworICAgICAjIHRvIGFsbG93IHBhY2thZ2luZyB0aGUgU1BMLgorICAgICBTUExfQklOQVJZID89ICIiCisgICAgIFNQTF9CSU5BUllOQU1FID89ICIke0Bvcy5wYXRoLmJhc2VuYW1lKGQuZ2V0VmFyKCJTUExfQklOQVJZIikpfSIKKyAgICAgU1BMX0lNQUdFID89ICIke1NQTF9CSU5BUllOQU1FfS0ke01BQ0hJTkV9LSR7UFZ9LSR7UFJ9IgorICAgICBTUExfU1lNTElOSyA/PSAiJHtTUExfQklOQVJZTkFNRX0tJHtNQUNISU5FfSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlNQTF9CSU5BUlk8L2ZpbGVuYW1lPiB2YXJpYWJsZSBoZWxwcyBmb3JtCisgICAgICAgICAgICAgICAgICAgIHZhcmlvdXMgPGZpbGVuYW1lPlNQTF8qPC9maWxlbmFtZT4gdmFyaWFibGVzIHVzZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgQmVhZ2xlQm9uZSBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gZXhhbXBsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2NyZWF0aW5nLWEtbmV3LWJzcC1sYXllci11c2luZy10aGUtYml0YmFrZS1sYXllcnMtc2NyaXB0Jz5DcmVhdGluZyBhIG5ldyBCU1AgTGF5ZXIgVXNpbmcgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVyczwvZmlsZW5hbWU+IFNjcmlwdDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZQorICAgICAgICAgICAgICAgICAgICBEZXZlbG9wZXIncyBHdWlkZSBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TUkNfVVJJJz48Z2xvc3N0ZXJtPlNSQ19VUkk8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgogICAgICAgICAgICAgICAgIFNSQ19VUklbZG9jXSA9ICJUaGUgbGlzdCBvZiBzb3VyY2UgZmlsZXMgLSBsb2NhbCBvciByZW1vdGUuIFRoaXMgdmFyaWFibGUgdGVsbHMgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gd2hhdCBiaXRzIHRvIHB1bGwgaW4gZm9yIHRoZSBidWlsZCBhbmQgaG93IHRvIHB1bGwgdGhlbSBpbi4iCkBAIC0xMjgyMyw3ICsxMzEwMCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmV0Y2hlcyBmaWxlcywgd2hpY2ggYXJlIHVzdWFsbHkgZmlsZXMgc2hpcHBlZCB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBsb2NhbCBtYWNoaW5lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIGxvY2FsIG1hY2hpbmUgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3BhdGNoaW5nLWRldi1lbnZpcm9ubWVudCc+cGF0Y2g8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItRklMRVNQQVRIJz48ZmlsZW5hbWU+RklMRVNQQVRIPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCkBAIC0xMjk1MiwxNCArMTMyMzEsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPnN1YmRpcjwvZmlsZW5hbWU+IC08L2VtcGhhc2lzPiBQbGFjZXMgdGhlIGZpbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgZXh0cmFjdHMgaXRzIGNvbnRlbnRzKSBpbnRvIHRoZSBzcGVjaWZpZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcnkgb2YgPGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViZGlyZWN0b3J5IG9mIDxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHRoZSBsb2NhbCAoPGZpbGVuYW1lPmZpbGU6Ly88L2ZpbGVuYW1lPikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZXRjaGVyIGlzIHVzZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5sb2NhbGRpcjwvZmlsZW5hbWU+IC08L2VtcGhhc2lzPiBQbGFjZXMgdGhlIGZpbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgZXh0cmFjdHMgaXRzIGNvbnRlbnRzKSBpbnRvIHRoZSBzcGVjaWZpZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcnkgb2YgPGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB0aGUgQ1ZTIGZldGNoZXIgaXMgdXNlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcnkgb2YgPGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPiB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIENWUyBmZXRjaGVyIGlzIHVzZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5zdWJwYXRoPC9maWxlbmFtZT4gLTwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGltaXRzIHRoZSBjaGVja291dCB0byBhIHNwZWNpZmljIHN1YnBhdGggb2YgdGhlCkBAIC0xMzA0NiwxMyArMTMzMjUsMTMgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNSQ1JFVic+PGdsb3NzdGVybT5TUkNSRVY8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIFNSQ1JFVltkb2NdID0gIlRoZSByZXZpc2lvbiBvZiB0aGUgc291cmNlIGNvZGUgdXNlZCB0byBidWlsZCB0aGUgcGFja2FnZS4gVGhpcyB2YXJpYWJsZSBhcHBsaWVzIHRvIFN1YnZlcnNpb24sIEdpdCwgTWVyY3VyaWFsIGFuZCBCYXphYXIgb25seS4iCisgICAgICAgICAgICAgICAgU1JDUkVWW2RvY10gPSAiVGhlIHJldmlzaW9uIG9mIHRoZSBzb3VyY2UgY29kZSB1c2VkIHRvIGJ1aWxkIHRoZSBwYWNrYWdlLiBUaGlzIHZhcmlhYmxlIGFwcGxpZXMgdG8gU3VidmVyc2lvbiwgR2l0LCBNZXJjdXJpYWwsIGFuZCBCYXphYXIgb25seS4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgogICAgICAgICAgICAgICAgICAgICBUaGUgcmV2aXNpb24gb2YgdGhlIHNvdXJjZSBjb2RlIHVzZWQgdG8gYnVpbGQgdGhlIHBhY2thZ2UuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgYXBwbGllcyB0byBTdWJ2ZXJzaW9uLCBHaXQsIE1lcmN1cmlhbCBhbmQKKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBhcHBsaWVzIHRvIFN1YnZlcnNpb24sIEdpdCwgTWVyY3VyaWFsLCBhbmQKICAgICAgICAgICAgICAgICAgICAgQmF6YWFyIG9ubHkuCiAgICAgICAgICAgICAgICAgICAgIE5vdGUgdGhhdCBpZiB5b3Ugd2FudCB0byBidWlsZCBhIGZpeGVkIHJldmlzaW9uIGFuZCB5b3UKICAgICAgICAgICAgICAgICAgICAgd2FudCB0byBhdm9pZCBwZXJmb3JtaW5nIGEgcXVlcnkgb24gdGhlIHJlbW90ZSByZXBvc2l0b3J5CkBAIC0xMzA4OCw3ICsxMzM2Nyw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TU1RBVEVfTUlSUk9SX0FMTE9XX05FVFdPUksnPjxnbG9zc3Rlcm0+U1NUQVRFX01JUlJPUl9BTExPV19ORVRXT1JLPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBTU1RBVEVfTUlSUk9SX0FMTE9XX05FVFdPUktbZG9jXSA9ICJJZiBzZXQgdG8gIjEiLCBhbGxvd3MgZmV0Y2hlcyBmcm9tIG1pcnJvcnMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIFNTVEFURV9NSVJST1JTIHRvIHdvcmsgZXZlbiB3aGVuIGZldGNoaW5nIGZyb20gdGhlIG5ldHdvcmsgaGFzIGJlZW4gZGlzYWJsZWQgYnkgc2V0dGluZyBCQl9OT19ORVRXT1JLIHRvICIxIi4iCisgICAgICAgICAgICAgICAgU1NUQVRFX01JUlJPUl9BTExPV19ORVRXT1JLW2RvY10gPSAiSWYgc2V0IHRvICIxIiwgYWxsb3dzIGZldGNoZXMgZnJvbSBtaXJyb3JzIHRoYXQgYXJlIHNwZWNpZmllZCBpbiBTU1RBVEVfTUlSUk9SUyB0byB3b3JrIGV2ZW4gd2hlbiBmZXRjaGluZyBmcm9tIHRoZSBuZXR3b3JrIGlzIGRpc2FibGVkIGJ5IHNldHRpbmcgQkJfTk9fTkVUV09SSyB0byAiMSIuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtMTMwOTYsNyArMTMzNzUsNyBAQAogICAgICAgICAgICAgICAgICAgICBJZiBzZXQgdG8gIjEiLCBhbGxvd3MgZmV0Y2hlcyBmcm9tCiAgICAgICAgICAgICAgICAgICAgIG1pcnJvcnMgdGhhdCBhcmUgc3BlY2lmaWVkIGluCiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TU1RBVEVfTUlSUk9SUyc+PGZpbGVuYW1lPlNTVEFURV9NSVJST1JTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHRvIHdvcmsgZXZlbiB3aGVuIGZldGNoaW5nIGZyb20gdGhlIG5ldHdvcmsgaGFzIGJlZW4KKyAgICAgICAgICAgICAgICAgICAgdG8gd29yayBldmVuIHdoZW4gZmV0Y2hpbmcgZnJvbSB0aGUgbmV0d29yayBpcwogICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZCBieSBzZXR0aW5nIDxmaWxlbmFtZT5CQl9OT19ORVRXT1JLPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgdG8gIjEiLgogICAgICAgICAgICAgICAgICAgICBVc2luZyB0aGUKQEAgLTEzMzAxLDI3ICsxMzU4MCwyNyBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU1RBR0lOR19ESVInPjxnbG9zc3Rlcm0+U1RBR0lOR19ESVI8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIFNUQUdJTkdfRElSW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSB0b3AtbGV2ZWwgc3lzcm9vdHMgZGlyZWN0b3J5IChpLmUuICR7VE1QRElSfS9zeXNyb290cykuIgorICAgICAgICAgICAgICAgIFNUQUdJTkdfRElSW2RvY10gPSAiSGVscHMgY29uc3RydWN0IHRoZSByZWNpcGUtc3lzcm9vdHMgZGlyZWN0b3J5LCB3aGljaCBpcyB1c2VkIGR1cmluZyBwYWNrYWdpbmcuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KLSAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSB0b3AtbGV2ZWwgc3lzcm9vdHMgZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgICAgIChpLmUuCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59L3N5c3Jvb3RzPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICBIZWxwcyBjb25zdHJ1Y3QgdGhlIDxmaWxlbmFtZT5yZWNpcGUtc3lzcm9vdHM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnksIHdoaWNoIGlzIHVzZWQgZHVyaW5nIHBhY2thZ2luZy4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNUQUdJTkdfRElSPC9maWxlbmFtZT4gY29udGFpbnMgdGhlIGRpcmVjdG9yaWVzCi0gICAgICAgICAgICAgICAgICAgIHRoYXQgYXJlIHN0YWdlZCBpbnRvIHRoZSBzeXNyb290IGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHN0YWdpbmcgZm9yIHJlY2lwZS1zcGVjaWZpYworICAgICAgICAgICAgICAgICAgICBzeXNyb290cyBvY2N1cnMsIHNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBvcHVsYXRlX3N5c3Jvb3QnPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHRhc2suCi0gICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNZU1JPT1RfRElSUyc+PGZpbGVuYW1lPlNZU1JPT1RfRElSUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgIHRhc2ssIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbmV3LXNoYXJpbmctZmlsZXMtYmV0d2Vlbi1yZWNpcGVzJz5TaGFyaW5nIEZpbGVzIEJldHdlZW4gUmVjaXBlczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbAotICAgICAgICAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwsIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNjb25maWd1cmF0aW9uLWNvbXBpbGF0aW9uLWFuZC1zdGFnaW5nLWRldi1lbnZpcm9ubWVudCc+Q29uZmlndXJhdGlvbiwgQ29tcGlsYXRpb24sIGFuZCBTdGFnaW5nPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbCwKKyAgICAgICAgICAgICAgICAgICAgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1lTUk9PVF9ESVJTJz48ZmlsZW5hbWU+U1lTUk9PVF9ESVJTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgogICAgICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgIFJlY2lwZXMgc2hvdWxkIG5ldmVyIHdyaXRlIGZpbGVzIGRpcmVjdGx5IHVuZGVyCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPlNUQUdJTkdfRElSPC9maWxlbmFtZT4gZGlyZWN0b3J5IGJlY2F1c2UKQEAgLTEzMzQ2LDExICsxMzYyNSwxMiBAQAogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBzeXNyb290IGRpcmVjdG9yeSBmb3IgdGhlIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICB0aGF0IHRoZSBjb21wb25lbnQgaXMgYnVpbHQgdG8gcnVuIG9uICh0aGUgc3lzdGVtIHRoYXQgaG9zdHMKLSAgICAgICAgICAgICAgICAgICAgdGhlIGNvbXBvbmVudCkuCi0gICAgICAgICAgICAgICAgICAgIEZvciBtb3N0IHJlY2lwZXMsIHRoaXMgc3lzcm9vdCBpcyB0aGUgb25lIHRoYXQgdGhlIHJlY2lwZSdzCisgICAgICAgICAgICAgICAgICAgIG9uIHdoaWNoIHRoZSBjb21wb25lbnQgaXMgYnVpbHQgdG8gcnVuICh0aGUgc3lzdGVtIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgaG9zdHMgdGhlIGNvbXBvbmVudCkuCisgICAgICAgICAgICAgICAgICAgIEZvciBtb3N0IHJlY2lwZXMsIHRoaXMgc3lzcm9vdCBpcyB0aGUgb25lIGluIHdoaWNoIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlJ3MKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBvcHVsYXRlX3N5c3Jvb3QnPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHRhc2sgY29waWVzIGZpbGVzIGludG8uCisgICAgICAgICAgICAgICAgICAgIHRhc2sgY29waWVzIGZpbGVzLgogICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25zIGluY2x1ZGUgPGZpbGVuYW1lPi1uYXRpdmU8L2ZpbGVuYW1lPiByZWNpcGVzLAogICAgICAgICAgICAgICAgICAgICB3aGVyZSB0aGUgPGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPiB0YXNrCiAgICAgICAgICAgICAgICAgICAgIGluc3RlYWQgdXNlcwpAQCAtMTMzNTksMTcgKzEzNjM5LDE5IEBACiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TVEFHSU5HX0RJUl9IT1NUPC9maWxlbmFtZT4gY2FuIGhhdmUgdGhlCiAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyB2YWx1ZXM6CiAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Rm9yIHJlY2lwZXMgYnVpbGRpbmcgZm9yIHRoZSB0YXJnZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLCB0aGUgdmFsdWUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgcmVjaXBlcyBidWlsZGluZyBmb3IgdGhlIHRhcmdldCBtYWNoaW5lLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIkezxsaW5rIGxpbmtlbmQ9J3Zhci1TVEFHSU5HX0RJUic+U1RBR0lOR19ESVI8L2xpbms+fS8kezxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FJz5NQUNISU5FPC9saW5rPn0iLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZvciBuYXRpdmUgcmVjaXBlcyBidWlsZGluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgYnVpbGQgaG9zdCwgdGhlIHZhbHVlIGlzIGVtcHR5IGdpdmVuIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc3VtcHRpb24gdGhhdCB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgYnVpbGQgaG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVpbGQgaG9zdCdzIG93biBkaXJlY3RvcmllcyBzaG91bGQgYmUgdXNlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi1uYXRpdmU8L2ZpbGVuYW1lPiByZWNpcGVzIGFyZSBub3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIGludG8gaG9zdCBwYXRocyBsaWtlIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbmF0aXZlIHJlY2lwZXMgYnVpbGRpbmcgZm9yIHRoZSBidWlsZCBob3N0LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBpcyBlbXB0eSBnaXZlbiB0aGUgYXNzdW1wdGlvbiB0aGF0IHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGluZyBmb3IgdGhlIGJ1aWxkIGhvc3QsIHRoZSBidWlsZCBob3N0J3Mgb3duCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgc2hvdWxkIGJlIHVzZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPjxmaWxlbmFtZT4tbmF0aXZlPC9maWxlbmFtZT4gcmVjaXBlcyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGluc3RhbGxlZCBpbnRvIGhvc3QgcGF0aHMgbGlrZSBzdWNoIGFzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhdGhlciwgdGhlc2UgcmVjaXBlcyBhcmUgaW5zdGFsbGVkIGludG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNUQUdJTkdfRElSX05BVElWRTwvZmlsZW5hbWU+LgpAQCAtMTMzODUsNyArMTM2NjcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFtcGxlLCBHQ0MncyA8ZmlsZW5hbWU+LWlzeXN0ZW08L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoaXMgZW1waGFzaXplcyB0aGF0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaHVzLCB0aGUgZW1waGFzaXMgaXMgdGhhdCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNUQUdJTkdfRElSKjwvZmlsZW5hbWU+IHZhcmlhYmxlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGQgYmUgdmlld2VkIGFzIGlucHV0IHZhcmlhYmxlcyBieSB0YXNrcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNoIGFzCkBAIC0xMzM5OSw3ICsxMzY4MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tbmF0aXZlPC9maWxlbmFtZT4gcmVjaXBlcywgYXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhleSBtYWtlIHVzZSBvZiBob3N0IGhlYWRlcnMgYW5kIGxpYnJhcmllcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8L3BhcmE+CkBAIC0xMzU5MCw4ICsxMzg3Miw4IEBACiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgQml0QmFrZSB1c2VzIHN0YW1wIGZpbGVzIHRvIGRldGVybWluZQogICAgICAgICAgICAgICAgICAgICBpZiBhIHRhc2sgc2hvdWxkIGJlIHJlcnVuLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzdGFtcC1maWxlcy1hbmQtdGhlLXJlcnVubmluZy1vZi10YXNrcyc+U3RhbXAgRmlsZXMgYW5kIHRoZSBSZXJ1bm5pbmcgb2YgVGFza3M8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNzdGFtcC1maWxlcy1hbmQtdGhlLXJlcnVubmluZy1vZi10YXNrcyc+U3RhbXAgRmlsZXMgYW5kIHRoZSBSZXJ1bm5pbmcgb2YgVGFza3M8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtMTM2MzcsMTMgKzEzOTE5LDEzIEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TVU1NQVJZJz48Z2xvc3N0ZXJtPlNVTU1BUlk8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIFNVTU1BUllbZG9jXSA9ICJUaGUgc2hvcnQgKDgwIGNoYXJhY3RlcnMgb3IgbGVzcykgc3VtbWFyeSBvZiB0aGUgYmluYXJ5IHBhY2thZ2UgZm9yIHBhY2thZ2luZyBzeXN0ZW1zIHN1Y2ggYXMgb3BrZywgcnBtIG9yIGRwa2cuIEJ5IGRlZmF1bHQsIFNVTU1BUlkgaXMgdXNlZCB0byBkZWZpbmUgdGhlIERFU0NSSVBUSU9OIHZhcmlhYmxlIGlmIERFU0NSSVBUSU9OIGlzIG5vdCBzZXQgaW4gdGhlIHJlY2lwZS4iCisgICAgICAgICAgICAgICAgU1VNTUFSWVtkb2NdID0gIlRoZSBzaG9ydCAoODAgY2hhcmFjdGVycyBvciBsZXNzKSBzdW1tYXJ5IG9mIHRoZSBiaW5hcnkgcGFja2FnZSBmb3IgcGFja2FnaW5nIHN5c3RlbXMgc3VjaCBhcyBvcGtnLCBycG0sIG9yIGRwa2cuIEJ5IGRlZmF1bHQsIFNVTU1BUlkgaXMgdXNlZCB0byBkZWZpbmUgdGhlIERFU0NSSVBUSU9OIHZhcmlhYmxlIGlmIERFU0NSSVBUSU9OIGlzIG5vdCBzZXQgaW4gdGhlIHJlY2lwZS4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgogICAgICAgICAgICAgICAgICAgICBUaGUgc2hvcnQgKDcyIGNoYXJhY3RlcnMgb3IgbGVzcykgc3VtbWFyeSBvZiB0aGUgYmluYXJ5IHBhY2thZ2UgZm9yIHBhY2thZ2luZwotICAgICAgICAgICAgICAgICAgICBzeXN0ZW1zIHN1Y2ggYXMgPGZpbGVuYW1lPm9wa2c8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPnJwbTwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgIHN5c3RlbXMgc3VjaCBhcyA8ZmlsZW5hbWU+b3BrZzwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+cnBtPC9maWxlbmFtZT4sIG9yCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kcGtnPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIDxmaWxlbmFtZT5TVU1NQVJZPC9maWxlbmFtZT4gaXMgdXNlZCB0byBkZWZpbmUKICAgICAgICAgICAgICAgICAgICAgdGhlIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVNDUklQVElPTic+PGZpbGVuYW1lPkRFU0NSSVBUSU9OPC9maWxlbmFtZT48L2xpbms+CkBAIC0xMzY1NSw3ICsxMzkzNyw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TVk5ESVInPjxnbG9zc3Rlcm0+U1ZORElSPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBTVk5ESVJbZG9jXSA9ICJUaGUgZGlyZWN0b3J5IHdoZXJlIFN1YnZlcnNpb24gY2hlY2tvdXRzIHdpbGwgYmUgc3RvcmVkLiIKKyAgICAgICAgICAgICAgICBTVk5ESVJbZG9jXSA9ICJUaGUgZGlyZWN0b3J5IHdoZXJlIFN1YnZlcnNpb24gY2hlY2tvdXRzIGFyZSBzdG9yZWQuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtMTM3MjQsNyArMTQwMDYsNyBAQAogICAgICAgICAgICAgICAgICAgICBpbiB5b3VyIHJlY2lwZS4KICAgICAgICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlJ3MgZGVmYXVsdCB2YWx1ZSBpcyBzZXQgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXN5c2xpbnV4Jz48ZmlsZW5hbWU+c3lzbGludXg8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgY2xhc3MgYXMgZm9sbG93czoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBTWVNMSU5VWF9TRVJJQUwgPz0gIjAgMTE1MjAwIgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CkBAIC0xMzczOCwxMyArMTQwMjAsMTMgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNZU0xJTlVYX1NQTEFTSCc+PGdsb3NzdGVybT5TWVNMSU5VWF9TUExBU0g8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIFNZU0xJTlVYX1NQTEFTSFtkb2NdID0gIkFuIC5MU1MgZmlsZSB1c2VkIGFzIHRoZSBiYWNrZ3JvdW5kIGZvciB0aGUgVkdBIGJvb3QgbWVudSB3aGVuIHlvdSBhcmUgdXNpbmcgdGhlIGJvb3QgbWVudS4iCisgICAgICAgICAgICAgICAgU1lTTElOVVhfU1BMQVNIW2RvY10gPSAiQW4gLkxTUyBmaWxlIHVzZWQgYXMgdGhlIGJhY2tncm91bmQgZm9yIHRoZSBWR0EgYm9vdCBtZW51IHdoZW4geW91IHVzZSB0aGUgYm9vdCBtZW51LiIKICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KIDwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CiAgICAgICAgICAgICAgICAgICAgIEFuIDxmaWxlbmFtZT4uTFNTPC9maWxlbmFtZT4gZmlsZSB1c2VkIGFzIHRoZSBiYWNrZ3JvdW5kCi0gICAgICAgICAgICAgICAgICAgIGZvciB0aGUgVkdBIGJvb3QgbWVudSB3aGVuIHlvdSBhcmUgdXNpbmcgdGhlIGJvb3QgbWVudS4KKyAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBWR0EgYm9vdCBtZW51IHdoZW4geW91IHVzZSB0aGUgYm9vdCBtZW51LgogICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBzZXQgdGhpcyB2YXJpYWJsZSBpbiB5b3VyIHJlY2lwZS4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTEzNzY3LDcgKzE0MDQ5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBhbHRlcm5hdGUgY29uc29sZT10dHkuLi4ga2VybmVsIGJvb3QgYXJndW1lbnQuCiAgICAgICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSdzIGRlZmF1bHQgdmFsdWUgaXMgc2V0IGluIHRoZQogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1zeXNsaW51eCc+PGZpbGVuYW1lPnN5c2xpbnV4PC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGFzIGZvbGxvd3M6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgU1lTTElOVVhfU0VSSUFMX1RUWSA/PSAiY29uc29sZT10dHlTMCwxMTUyMDAiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KQEAgLTEzNzgxLDcgKzE0MDYzLDcgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNZU1JPT1RfREVTVERJUic+PGdsb3NzdGVybT5TWVNST09UX0RFU1RESVI8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIFNZU1JPT1RfREVTVERJUltkb2NdID0gIlBvaW50cyB0byB0aGUgdGVtcG9yYXJ5IHdvcmsgZGlyZWN0b3J5IChkZWZhdWx0ICR7V09SS0RJUn0vc3lzcm9vdC1kZXN0ZGlyKSB3aGVyZSB0aGUgZmlsZXMgdGhhdCB3aWxsIGJlIHBvcHVsYXRlZCBpbnRvIHRoZSBzeXNyb290IGFyZSBhc3NlbWJsZWQgZHVyaW5nIHRoZSBkb19wb3B1bGF0ZV9zeXNyb290IHRhc2suIgorICAgICAgICAgICAgICAgIFNZU1JPT1RfREVTVERJUltkb2NdID0gIlBvaW50cyB0byB0aGUgdGVtcG9yYXJ5IHdvcmsgZGlyZWN0b3J5IChkZWZhdWx0ICR7V09SS0RJUn0vc3lzcm9vdC1kZXN0ZGlyKSB3aGVyZSB0aGUgZmlsZXMgcG9wdWxhdGVkIGludG8gdGhlIHN5c3Jvb3QgYXJlIGFzc2VtYmxlZCBkdXJpbmcgdGhlIGRvX3BvcHVsYXRlX3N5c3Jvb3QgdGFzay4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CkBAIC0xMzc4OSw4ICsxNDA3MSw3IEBACiAgICAgICAgICAgICAgICAgICAgIFBvaW50cyB0byB0aGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSB1bmRlciB0aGUgd29yayBkaXJlY3RvcnkKICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQKICAgICAgICAgICAgICAgICAgICAgIjxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn0vc3lzcm9vdC1kZXN0ZGlyPC9maWxlbmFtZT4iKQotICAgICAgICAgICAgICAgICAgICB3aGVyZSB0aGUgZmlsZXMKLSAgICAgICAgICAgICAgICAgICAgdGhhdCB3aWxsIGJlIHBvcHVsYXRlZCBpbnRvIHRoZSBzeXNyb290IGFyZSBhc3NlbWJsZWQKKyAgICAgICAgICAgICAgICAgICAgd2hlcmUgdGhlIGZpbGVzIHBvcHVsYXRlZCBpbnRvIHRoZSBzeXNyb290IGFyZSBhc3NlbWJsZWQKICAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHRoZQogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcG9wdWxhdGVfc3lzcm9vdCc+PGZpbGVuYW1lPmRvX3BvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgdGFzay4KQEAgLTEzOTA1LDE3ICsxNDE4NiwxNyBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU1lTVEVNRF9BVVRPX0VOQUJMRSc+PGdsb3NzdGVybT5TWVNURU1EX0FVVE9fRU5BQkxFPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBTWVNURU1EX0FVVE9fRU5BQkxFW2RvY10gPSAiRm9yIHJlY2lwZXMgdGhhdCBpbmhlcml0IHRoZSBzeXN0ZW1kIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBzZXJ2aWNlIHlvdSBoYXZlIHNwZWNpZmllZCBpbiBTWVNURU1EX1NFUlZJQ0Ugc2hvdWxkIGJlIHN0YXJ0ZWQgYXV0b21hdGljYWxseSBvciBub3QuIgorICAgICAgICAgICAgICAgIFNZU1RFTURfQVVUT19FTkFCTEVbZG9jXSA9ICJGb3IgcmVjaXBlcyB0aGF0IGluaGVyaXQgdGhlIHN5c3RlbWQgY2xhc3MsIHRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBzZXJ2aWNlIGluIFNZU1RFTURfU0VSVklDRSBzaG91bGQgc3RhcnQgYXV0b21hdGljYWxseSBvciBub3QuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgV2hlbiBpbmhlcml0aW5nIHRoZQogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1zeXN0ZW1kJz48ZmlsZW5hbWU+c3lzdGVtZDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICBjbGFzcywgdGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgd2hldGhlciB0aGUgc2VydmljZSB5b3UgaGF2ZQotICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBzZXJ2aWNlCisgICAgICAgICAgICAgICAgICAgIGluCiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TWVNURU1EX1NFUlZJQ0UnPjxmaWxlbmFtZT5TWVNURU1EX1NFUlZJQ0U8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIHN0YXJ0ZWQgYXV0b21hdGljYWxseSBvciBub3QuCisgICAgICAgICAgICAgICAgICAgIHNob3VsZCBzdGFydCBhdXRvbWF0aWNhbGx5IG9yIG5vdC4KICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIHNlcnZpY2UgaXMgZW5hYmxlZCB0byBhdXRvbWF0aWNhbGx5IHN0YXJ0CiAgICAgICAgICAgICAgICAgICAgIGF0IGJvb3QgdGltZS4KICAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgc2V0dGluZyBpcyBpbiB0aGUKQEAgLTEzOTYzLDcgKzE0MjQ0LDcgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNZU1RFTURfQk9PVF9FTlRSSUVTJz48Z2xvc3N0ZXJtPlNZU1RFTURfQk9PVF9FTlRSSUVTPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBTWVNURU1EX0JPT1RfRU5UUklFU1tkb2NdID0gIldoZW4gRUZJX1BST1ZJREVSIGlzIHNldCB0byAic3lzdGVtZC1ib290IiwgdGhlIFNZU1RFTURfQk9PVF9FTlRSSUVTIHZhcmlhYmxlIHNwZWNpZmllcyBhIGxpc3Qgb2YgZW50cnkgZmlsZXMgKCouY29uZikgdG8gYmUgaW5zdGFsbGVkIGNvbnRhaW5pbmcgb25lIGJvb3QgZW50cnkgcGVyIGZpbGUuIgorICAgICAgICAgICAgICAgIFNZU1RFTURfQk9PVF9FTlRSSUVTW2RvY10gPSAiV2hlbiBFRklfUFJPVklERVIgaXMgc2V0IHRvICJzeXN0ZW1kLWJvb3QiLCB0aGUgU1lTVEVNRF9CT09UX0VOVFJJRVMgdmFyaWFibGUgc3BlY2lmaWVzIGEgbGlzdCBvZiBlbnRyeSBmaWxlcyAoKi5jb25mKSB0byBpbnN0YWxsIHRoYXQgY29udGFpbiBvbmUgYm9vdCBlbnRyeSBwZXIgZmlsZS4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CkBAIC0xMzk3Myw4ICsxNDI1NCw4IEBACiAgICAgICAgICAgICAgICAgICAgIGlzIHNldCB0byAic3lzdGVtZC1ib290IiwgdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TWVNURU1EX0JPT1RfRU5UUklFUzwvZmlsZW5hbWU+IHZhcmlhYmxlIHNwZWNpZmllcwogICAgICAgICAgICAgICAgICAgICBhIGxpc3Qgb2YgZW50cnkgZmlsZXMKLSAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT4qLmNvbmY8L2ZpbGVuYW1lPikgdG8gYmUgaW5zdGFsbGVkCi0gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5pbmcgb25lIGJvb3QgZW50cnkgcGVyIGZpbGUuCisgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Ki5jb25mPC9maWxlbmFtZT4pIHRvIGluc3RhbGwgdGhhdCBjb250YWluCisgICAgICAgICAgICAgICAgICAgIG9uZSBib290IGVudHJ5IHBlciBmaWxlLgogICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtc3lzdGVtZC1ib290Jz48ZmlsZW5hbWU+c3lzdGVtZC1ib290PC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIGNsYXNzIHNldHMgdGhlIDxmaWxlbmFtZT5TWVNURU1EX0JPT1RfRU5UUklFUzwvZmlsZW5hbWU+IGFzCkBAIC0xNDA3Niw3ICsxNDM1Nyw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TWVNWSU5JVF9FTkFCTEVEX0dFVFRZUyc+PGdsb3NzdGVybT5TWVNWSU5JVF9FTkFCTEVEX0dFVFRZUzwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgU1lTVklOSVRfRU5BQkxFRF9HRVRUWVNbZG9jXSA9ICJTcGVjaWZpZXMgd2hpY2ggdmlydHVhbCB0ZXJtaW5hbHMgc2hvdWxkIGJlIHJ1bm5pbmcgYSBnZXR0eSwgdGhlIGRlZmF1bHQgaXMgJzEnLiIKKyAgICAgICAgICAgICAgICBTWVNWSU5JVF9FTkFCTEVEX0dFVFRZU1tkb2NdID0gIlNwZWNpZmllcyB3aGljaCB2aXJ0dWFsIHRlcm1pbmFscyBzaG91bGQgcnVuIGEgZ2V0dHksIHRoZSBkZWZhdWx0IGlzICcxJy4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CkBAIC0xNDA4NCw3ICsxNDM2NSw3IEBACiAgICAgICAgICAgICAgICAgICAgIFdoZW4gdXNpbmcKICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbmV3LXJlY2lwZS1lbmFibGluZy1zeXN0ZW0tc2VydmljZXMnPlN5c1Zpbml0PC91bGluaz4sCiAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllcyBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSB2aXJ0dWFsIHRlcm1pbmFscwotICAgICAgICAgICAgICAgICAgICB0aGF0IHNob3VsZCBiZSBydW5uaW5nIGEKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBzaG91bGQgcnVuIGEKICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HZXR0eV8lMjhVbml4JTI5Jz5nZXR0eTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgIChhbGxvd2luZyBsb2dpbiksIGFzc3VtaW5nCiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1VU0VfVlQnPjxmaWxlbmFtZT5VU0VfVlQ8L2ZpbGVuYW1lPjwvbGluaz4KQEAgLTE0MjUwLDEwICsxNDUzMSw4IEBACiAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUgU0RLJ3MgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IHNldHMKLSAgICAgICAgICAgICAgICAgICAgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DRkxBR1MnPjxmaWxlbmFtZT5DRkxBR1M8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gdGhlIGVudmlyb25tZW50IHRvIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VEFSR0VUX0NGTEFHUzwvZmlsZW5hbWU+IHZhbHVlIHNvIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5DRkxBR1M8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbiB0aGUgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgdG8gdGhlIDxmaWxlbmFtZT5UQVJHRVRfQ0ZMQUdTPC9maWxlbmFtZT4gdmFsdWUgc28gdGhhdAogICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlcyBidWlsdCB1c2luZyB0aGUgU0RLIGFsc28gaGF2ZSB0aGUgZmxhZ3MKICAgICAgICAgICAgICAgICAgICAgYXBwbGllZC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CkBAIC0xNDI3NywxMiArMTQ1NTYsMTAgQEAKIAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSBTREsncyBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgc2V0cwotICAgICAgICAgICAgICAgICAgICB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUNQUEZMQUdTJz48ZmlsZW5hbWU+Q1BQRkxBR1M8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gdGhlIGVudmlyb25tZW50IHRvIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VEFSR0VUX0NQUEZMQUdTPC9maWxlbmFtZT4gdmFsdWUgc28gdGhhdAotICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlcyBidWlsdCB1c2luZyB0aGUgU0RLIGFsc28gaGF2ZSB0aGUgZmxhZ3MKLSAgICAgICAgICAgICAgICAgICAgYXBwbGllZC4KKyAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5DUFBGTEFHUzwvZmlsZW5hbWU+IHZhcmlhYmxlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCB0byB0aGUgPGZpbGVuYW1lPlRBUkdFVF9DUFBGTEFHUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhbHVlIHNvIHRoYXQgZXhlY3V0YWJsZXMgYnVpbHQgdXNpbmcgdGhlIFNESyBhbHNvIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgdGhlIGZsYWdzIGFwcGxpZWQuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtMTQzMDMsMTIgKzE0NTgwLDEwIEBACiAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUgU0RLJ3MgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IHNldHMKLSAgICAgICAgICAgICAgICAgICAgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1DWFhGTEFHUyc+PGZpbGVuYW1lPkNYWEZMQUdTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGluIHRoZSBlbnZpcm9ubWVudCB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRBUkdFVF9DWFhGTEFHUzwvZmlsZW5hbWU+IHZhbHVlIHNvIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZXMgYnVpbHQgdXNpbmcgdGhlIFNESyBhbHNvIGhhdmUgdGhlIGZsYWdzCi0gICAgICAgICAgICAgICAgICAgIGFwcGxpZWQuCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Q1hYRkxBR1M8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgdG8gdGhlIDxmaWxlbmFtZT5UQVJHRVRfQ1hYRkxBR1M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YWx1ZSBzbyB0aGF0IGV4ZWN1dGFibGVzIGJ1aWx0IHVzaW5nIHRoZSBTREsgYWxzbyBoYXZlCisgICAgICAgICAgICAgICAgICAgIHRoZSBmbGFncyBhcHBsaWVkLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTE0MzgyLDEwICsxNDY1NywxMCBAQAogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSB0YXJnZXQncyBvcGVyYXRpbmcgc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUgY2FuIGJlIHNldCB0byAibGludXgiIGZvciA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPi1iYXNlZCBzeXN0ZW1zIGFuZAotICAgICAgICAgICAgICAgICAgICB0byAibGludXgtbXVzbCIgZm9yIDxmaWxlbmFtZT5tdXNsPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIEZvciBBUk0vRUFCSSB0YXJnZXRzLCB0aGVyZSBhcmUgYWxzbyAibGludXgtZ251ZWFiaSIgYW5kCi0gICAgICAgICAgICAgICAgICAgICJsaW51eC1tdXNsZWFiaSIgdmFsdWVzIHBvc3NpYmxlLgorICAgICAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUgY2FuIGJlIHNldCB0byAibGludXgiIGZvciBnbGliYy1iYXNlZCBzeXN0ZW1zCisgICAgICAgICAgICAgICAgICAgIChHTlUgQyBMaWJyYXJ5KSBhbmQgdG8gImxpbnV4LW11c2wiIGZvciBtdXNsIGxpYmMuCisgICAgICAgICAgICAgICAgICAgIEZvciBBUk0vRUFCSSB0YXJnZXRzLCAibGludXgtZ251ZWFiaSIgYW5kICJsaW51eC1tdXNsZWFiaSIKKyAgICAgICAgICAgICAgICAgICAgcG9zc2libGUgdmFsdWVzIGV4aXN0LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTE0NTUzLDEwICsxNDgyOCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCB0b29sY2hhaW4uCiAgICAgICAgICAgICAgICAgICAgICAgICBVc2luZyBvbGRlciBvciBuZXdlciB2ZXJzaW9ucyBvZiB0aGVzZSBjb21wb25lbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICBtaWdodCBjYXVzZSBidWlsZCBwcm9ibGVtcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19SRUxFQVNFX05PVEVTOyc+UmVsZWFzZSBOb3RlczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlIFJlbGVhc2UgTm90ZXMgZm9yIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgc3BlY2lmaWMgY29tcG9uZW50cyB3aXRoIHdoaWNoIHRoZSB0b29sY2hhaW4KICAgICAgICAgICAgICAgICAgICAgICAgIG11c3QgYmUgY29tcGF0aWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIGFjY2VzcyB0aGUgUmVsZWFzZSBOb3RlcywgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L3NvZnR3YXJlLW92ZXJ2aWV3L2Rvd25sb2Fkcy8nPkRvd25sb2FkczwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBwYWdlIG9uIHRoZSBZb2N0byBQcm9qZWN0IHdlYnNpdGUgYW5kIGNsaWNrIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIlJFTEVBU0UgSU5GT1JNQVRJT04iIGxpbmsgZm9yIHRoZSBhcHByb3ByaWF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZS4KICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtMTQ2NzEsNyArMTQ5NTAsNyBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVEVTVF9MT0dfRElSJz48Z2xvc3N0ZXJtPlRFU1RfTE9HX0RJUjwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgVEVTVF9MT0dfRElSW2RvY10gPSAiSG9sZHMgdGhlIFNTSCBsb2cgYW5kIHRoZSBib290IGxvZyBmb3IgUUVNVSBtYWNoaW5lcy4gVGhlIDxmaWxlbmFtZT5URVNUX0xPR19ESVI8L2ZpbGVuYW1lPiB2YXJpYWJsZSBkZWZhdWx0cyB0byAiJHtXT1JLRElSfS90ZXN0aW1hZ2UiLiIKKyAgICAgICAgICAgICAgICBURVNUX0xPR19ESVJbZG9jXSA9ICJIb2xkcyB0aGUgU1NIIGxvZyBhbmQgdGhlIGJvb3QgbG9nIGZvciBRRU1VIG1hY2hpbmVzLiBUaGUgVEVTVF9MT0dfRElSIHZhcmlhYmxlIGRlZmF1bHRzIHRvICIke1dPUktESVJ9L3Rlc3RpbWFnZSIuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtMTUwODMsOCArMTUzNjIsOCBAQAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBGb3IgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBvbiBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW5zCiAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IGVudmlyb25tZW50LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4tZ2VuZXJhdGlvbic+Q3Jvc3MtRGV2ZWxvcG1lbnQgVG9vbGNoYWluIEdlbmVyYXRpb248L2xpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4tZ2VuZXJhdGlvbic+Q3Jvc3MtRGV2ZWxvcG1lbnQgVG9vbGNoYWluIEdlbmVyYXRpb248L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsLgogICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gc2V0dGluZyB1cCBhIGNyb3NzLWRldmVsb3BtZW50CiAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50LCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7Jz5Zb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspPC91bGluaz4KQEAgLTE1MTQyLDggKzE1NDIxLDggQEAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgRm9yIGJhY2tncm91bmQgaW5mb3JtYXRpb24gb24gY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWlucwogICAgICAgICAgICAgICAgICAgICBpbiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluLWdlbmVyYXRpb24nPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbiBHZW5lcmF0aW9uPC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWluLWdlbmVyYXRpb24nPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbiBHZW5lcmF0aW9uPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHNldHRpbmcgdXAgYSBjcm9zcy1kZXZlbG9wbWVudAogICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCwgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvdWxpbms+CkBAIC0xNTE4MSw3ICsxNTQ2MCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGEgdmFsdWUgd2hlcmUgdW5kZXJzY29yZXMgYXJlIG5vdCBhbGxvd2VkLCBmb3IgZXhhbXBsZQogICAgICAgICAgICAgICAgICAgICB3aXRoaW4gcGFja2FnZSBmaWxlbmFtZXMuCiAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgZGFzaCBjaGFyYWN0ZXJzIHJlcGxhY2UgYW55IHVuZGVyc2NvcmUKLSAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVycyB1c2VkIGluIFRBUkdFVF9BUkNILgorICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzIHVzZWQgaW4gPGZpbGVuYW1lPlRBUkdFVF9BUkNIPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+CkBAIC0xNTc0OSw3ICsxNjAyOCw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1VUERBVEVSQ1BOJz48Z2xvc3N0ZXJtPlVQREFURVJDUE48L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgVVBEQVRFUkNQTltkb2NdID0gIlNwZWNpZmllcyB0aGUgcGFja2FnZSB0aGF0IGNvbnRhaW5zIHRoZSBpbml0c2NyaXB0IHRoYXQgaXMgdG8gYmUgZW5hYmxlZC4iCisgICAgICAgICAgICAgICBVUERBVEVSQ1BOW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBwYWNrYWdlIHRoYXQgY29udGFpbnMgdGhlIGluaXRzY3JpcHQgdGhhdCBpcyBlbmFibGVkLiIKICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KQEAgLTE1NzU3LDcgKzE2MDM2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgRm9yIHJlY2lwZXMgaW5oZXJpdGluZyB0aGUKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtdXBkYXRlLXJjLmQnPjxmaWxlbmFtZT51cGRhdGUtcmMuZDwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICAgICAgICAgICAgICBjbGFzcywgPGZpbGVuYW1lPlVQREFURVJDUE48L2ZpbGVuYW1lPiBzcGVjaWZpZXMKLSAgICAgICAgICAgICAgICAgICAgdGhlIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUgaW5pdHNjcmlwdCB0aGF0IGlzIHRvIGJlCisgICAgICAgICAgICAgICAgICAgIHRoZSBwYWNrYWdlIHRoYXQgY29udGFpbnMgdGhlIGluaXRzY3JpcHQgdGhhdCBpcwogICAgICAgICAgICAgICAgICAgICBlbmFibGVkLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtMTYwNDUsNyArMTYzMjQsNyBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVVNFUkFERF9QQVJBTSc+PGdsb3NzdGVybT5VU0VSQUREX1BBUkFNPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgIFVTRVJBRERfUEFSQU1bZG9jXSA9ICJXaGVuIGEgcmVjaXBlIGluaGVyaXRzIHRoZSB1c2VyYWRkIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyBmb3IgYSBwYWNrYWdlIHdoYXQgcGFyYW1ldGVycyBzaG91bGQgYmUgcGFzc2VkIHRvIHRoZSB1c2VyYWRkIGNvbW1hbmQgaWYgeW91IHdpc2ggdG8gYWRkIGEgdXNlciB0byB0aGUgc3lzdGVtIHdoZW4gdGhlIHBhY2thZ2UgaXMgaW5zdGFsbGVkLiIKKyAgICAgICAgICAgICAgIFVTRVJBRERfUEFSQU1bZG9jXSA9ICJXaGVuIGEgcmVjaXBlIGluaGVyaXRzIHRoZSB1c2VyYWRkIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyBmb3IgYSBwYWNrYWdlIHdoYXQgcGFyYW1ldGVycyBzaG91bGQgcGFzcyB0byB0aGUgdXNlcmFkZCBjb21tYW5kIGlmIHlvdSBhZGQgYSB1c2VyIHRvIHRoZSBzeXN0ZW0gd2hlbiB0aGUgcGFja2FnZSBpcyBpbnN0YWxsZWQuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtMTYwNTMsOSArMTYzMzIsOSBAQAogICAgICAgICAgICAgICAgICAgICBXaGVuIGluaGVyaXRpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXVzZXJhZGQnPjxmaWxlbmFtZT51c2VyYWRkPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIGNsYXNzLCB0aGlzIHZhcmlhYmxlCi0gICAgICAgICAgICAgICAgICAgIHNwZWNpZmllcyBmb3IgYSBwYWNrYWdlIHdoYXQgcGFyYW1ldGVycyBzaG91bGQgYmUgcGFzc2VkCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllcyBmb3IgYSBwYWNrYWdlIHdoYXQgcGFyYW1ldGVycyBzaG91bGQgcGFzcwogICAgICAgICAgICAgICAgICAgICB0byB0aGUgPGZpbGVuYW1lPnVzZXJhZGQ8L2ZpbGVuYW1lPiBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgIGlmIHlvdSB3aXNoIHRvIGFkZCBhIHVzZXIgdG8gdGhlIHN5c3RlbSB3aGVuIHRoZSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgIGlmIHlvdSBhZGQgYSB1c2VyIHRvIHRoZSBzeXN0ZW0gd2hlbiB0aGUgcGFja2FnZQogICAgICAgICAgICAgICAgICAgICBpcyBpbnN0YWxsZWQuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCkBAIC0xNjI2Niw3ICsxNjU0NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1wYXJ0aXRpb25lZC1pbWFnZXMtdXNpbmctd2ljJz5DcmVhdGluZyBQYXJ0aXRpb25lZCBJbWFnZXMgVXNpbmcgV2ljPC91bGluaz4iCiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgICAgICBGb3IgZGV0YWlscyBvbiB0aGUga2lja3N0YXJ0IGZpbGUgZm9ybWF0LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdvcGVuZW1iZWRkZWQta2lja3N0YXJ0LXdrcy1yZWZlcmVuY2UnPk9wZW5FbWJlZGRlZCBLaWNrc3RhcnQgKDxmaWxlbmFtZT4ud2tzPC9maWxlbmFtZT4pIFJlZmVyZW5jZTwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1raWNrc3RhcnQnPk9wZW5FbWJlZGRlZCBLaWNrc3RhcnQgKDxmaWxlbmFtZT4ud2tzPC9maWxlbmFtZT4pIFJlZmVyZW5jZTwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgQ2hhcHRlci4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgpAQCAtMTYyOTUsNyArMTY1NzQsNyBAQAogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIFRoZSBhY3R1YWwgZGlyZWN0b3J5IGRlcGVuZHMgb24gc2V2ZXJhbCB0aGluZ3M6CiAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PGxpbmsgbGlua2VuZD0ndmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC9saW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRvcC1sZXZlbCBidWlsZCBvdXRwdXQgZGlyZWN0b3J5PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48bGluayBsaW5rZW5kPSd2YXItTVVMVElNQUNIX1RBUkdFVF9TWVMnPjxmaWxlbmFtZT5NVUxUSU1BQ0hfVEFSR0VUX1NZUzwvZmlsZW5hbWU+PC9saW5rPjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdGFyZ2V0IHN5c3RlbSBpZGVudGlmaWVyPC9saXN0aXRlbT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVzb3VyY2VzLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVzb3VyY2VzLnhtbAppbmRleCBkNTliZWEyLi5iZTA0Njk2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3Jlc291cmNlcy54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZXNvdXJjZXMueG1sCkBAIC0zNyw4ICszNyw4IEBACiAKICAgICA8cGFyYT4KICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdXNlcyBpdHMgb3duIGltcGxlbWVudGF0aW9uIG9mCi0gICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cuYnVnemlsbGEub3JnL2Fib3V0Lyc+QnVnemlsbGE8L3VsaW5rPiB0byB0cmFjawotICAgICAgICBkZWZlY3RzIChidWdzKS4KKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0JVR1pJTExBX1VSTDsnPkJ1Z3ppbGxhPC91bGluaz4gdG8KKyAgICAgICAgdHJhY2sgZGVmZWN0cyAoYnVncykuCiAgICAgICAgIEltcGxlbWVudGF0aW9ucyBvZiBCdWd6aWxsYSB3b3JrIHdlbGwgZm9yIGdyb3VwIGRldmVsb3BtZW50IGJlY2F1c2UKICAgICAgICAgdGhleSB0cmFjayBidWdzIGFuZCBjb2RlIGNoYW5nZXMsIGNhbiBiZSB1c2VkIHRvIGNvbW11bmljYXRlIGNoYW5nZXMKICAgICAgICAgYW5kIHByb2JsZW1zIHdpdGggZGV2ZWxvcGVycywgY2FuIGJlIHVzZWQgdG8gc3VibWl0IGFuZCByZXZpZXcgcGF0Y2hlcywKQEAgLTY4LDYgKzY4LDggQEAKICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvQnVnemlsbGFfQ29uZmlndXJhdGlvbl9hbmRfQnVnX1RyYWNraW5nJz5CdWd6aWxsYSB3aWtpIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIEJ1Z3ppbGxhIGluIGdlbmVyYWwsIHNlZQorICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LmJ1Z3ppbGxhLm9yZy9hYm91dC8nPjwvdWxpbms+LgogICAgIDwvcGFyYT4KIDwvc2VjdGlvbj4KIApAQCAtMTYwLDEwICsxNjIsMTggQEAKICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyc+WW9jdG8gUHJvamVjdCBRdWljayBTdGFydDwvdWxpbms+OgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JSSUVGX1VSTDsnPllvY3RvIFByb2plY3QgUXVpY2sgQnVpbGQ8L3VsaW5rPjoKICAgICAgICAgICAgICAgICA8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFRoaXMgc2hvcnQgZG9jdW1lbnQgbGV0cyB5b3UgZ2V0IHN0YXJ0ZWQKLSAgICAgICAgICAgICAgICB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IGFuZCBxdWlja2x5IGJlZ2luIGJ1aWxkaW5nIGFuIGltYWdlLgorICAgICAgICAgICAgICAgIFRoaXMgc2hvcnQgZG9jdW1lbnQgbGV0cyB5b3UgZXhwZXJpZW5jZSBidWlsZGluZyBhbiBpbWFnZSB1c2luZworICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IHdpdGhvdXQgaGF2aW5nIHRvIHVuZGVyc3RhbmQgYW55IGNvbmNlcHRzIG9yCisgICAgICAgICAgICAgICAgZGV0YWlscy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyc+WW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsPC91bGluaz46CisgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBUaGlzIG1hbnVhbCBwcm92aWRlcyBvdmVydmlldyBhbmQgY29uY2VwdHVhbCBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgIGFib3V0IHRoZSBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KQEAgLTIwMSw2ICsyMTEsMjMgQEAKICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsnPllvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbDwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgcHJvdmlkZXMgcmVmZXJlbmNlIG1hdGVyaWFsIHN1Y2ggYXMgdmFyaWFibGUsCisgICAgICAgICAgICAgICAgdGFzaywgYW5kIGNsYXNzIGRlc2NyaXB0aW9ucy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfTU1fVVJMOyc+WW9jdG8gUHJvamVjdCBNZWdhLU1hbnVhbDwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgaXMgc2ltcGx5IGEgc2luZ2xlIEhUTUwgZmlsZSBjb21wcmlzZWQgb2YgdGhlCisgICAgICAgICAgICAgICAgYnVsayBvZiB0aGUgWW9jdG8gUHJvamVjdCBtYW51YWxzLgorICAgICAgICAgICAgICAgIFRoZSBNZWdhLU1hbnVhbCBwcmltYXJpbHkgZXhpc3RzIGFzIGEgdmVoaWNsZSBieSB3aGljaCB5b3UgY2FuCisgICAgICAgICAgICAgICAgZWFzaWx5IHNlYXJjaCBmb3IgcGhyYXNlcyBhbmQgdGVybXMgdXNlZCBpbiB0aGUgWW9jdG8gUHJvamVjdAorICAgICAgICAgICAgICAgIGRvY3VtZW50YXRpb24gc2V0LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz4KICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19QUk9GX1VSTDsnPllvY3RvIFByb2plY3QgUHJvZmlsaW5nIGFuZCBUcmFjaW5nIE1hbnVhbDwvdWxpbms+OgogICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgcHJlc2VudHMgYSBzZXQgb2YgY29tbW9uIGFuZCBnZW5lcmFsbHkgdXNlZnVsCkBAIC0yMDksNyArMjM2LDE4IEBACiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1hcHBlbmRpeC1sYXRlc3QteXAtZWNsaXBzZS1wbHVnLWluJz5FY2xpcHNlIElERSBZb2N0byBQbHVnLWluPC91bGluaz46CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVE9BU1RfVVJMOyc+VG9hc3RlciBVc2VyIE1hbnVhbDwvdWxpbms+OgorICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgaW50cm9kdWNlcyBhbmQgZGVzY3JpYmVzIGhvdyB0byBzZXQgdXAgYW5kIHVzZQorICAgICAgICAgICAgICAgIFRvYXN0ZXIuCisgICAgICAgICAgICAgICAgVG9hc3RlciBpcyBhbiBBcHBsaWNhdGlvbiBQcm9ncmFtbWluZyBJbnRlcmZhY2UgKEFQSSkgYW5kCisgICAgICAgICAgICAgICAgd2ViLWJhc2VkIGludGVyZmFjZSB0byB0aGUKKyAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbTwvbGluaz4sCisgICAgICAgICAgICAgICAgd2hpY2ggdXNlcyBCaXRCYWtlLCB0aGF0IHJlcG9ydHMgYnVpbGQgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I2FkdC1lY2xpcHNlJz5FY2xpcHNlIElERSBZb2N0byBQbHVnLWluPC91bGluaz46CiAgICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbnMgdGhhdCBkZW1vbnN0cmF0ZSBob3cgYW4gYXBwbGljYXRpb24gZGV2ZWxvcGVyCiAgICAgICAgICAgICAgICAgdXNlcyB0aGUgRWNsaXBzZSBZb2N0byBQcm9qZWN0IFBsdWctaW4gZmVhdHVyZSB3aXRoaW4KQEAgLTIyMiwyMiArMjYwLDEzIEBACiAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGNvbW1vbmx5IGFza2VkIHF1ZXN0aW9ucyBhbmQgdGhlaXIgYW5zd2Vycy4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1JFTEVBU0VfTk9URVM7Jz5SZWxlYXNlIE5vdGVzPC91bGluaz46Ci0gICAgICAgICAgICAgICAgPC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmVsZWFzZSBOb3Rlczo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgIEZlYXR1cmVzLCB1cGRhdGVzIGFuZCBrbm93biBpc3N1ZXMgZm9yIHRoZSBjdXJyZW50CiAgICAgICAgICAgICAgICAgcmVsZWFzZSBvZiB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVE9BU1RfVVJMOyc+VG9hc3RlciBVc2VyIE1hbnVhbDwvdWxpbms+OgotICAgICAgICAgICAgICAgIDwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgaW50cm9kdWNlcyBhbmQgZGVzY3JpYmVzIGhvdyB0byBzZXQgdXAgYW5kIHVzZQotICAgICAgICAgICAgICAgIFRvYXN0ZXIuCi0gICAgICAgICAgICAgICAgVG9hc3RlciBpcyBhbiBBcHBsaWNhdGlvbiBQcm9ncmFtbWluZyBJbnRlcmZhY2UgKEFQSSkgYW5kCi0gICAgICAgICAgICAgICAgd2ViLWJhc2VkIGludGVyZmFjZSB0byB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1zeXN0ZW0tdGVybSc+T3BlbkVtYmVkZGVkIEJ1aWxkIFN5c3RlbTwvbGluaz4sCi0gICAgICAgICAgICAgICAgd2hpY2ggdXNlcyBCaXRCYWtlLCB0aGF0IHJlcG9ydHMgYnVpbGQgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgVG8gYWNjZXNzIHRoZSBSZWxlYXNlIE5vdGVzLCBnbyB0byB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L3NvZnR3YXJlLW92ZXJ2aWV3L2Rvd25sb2Fkcy8nPkRvd25sb2FkczwvdWxpbms+CisgICAgICAgICAgICAgICAgcGFnZSBvbiB0aGUgWW9jdG8gUHJvamVjdCB3ZWJzaXRlIGFuZCBjbGljayBvbiB0aGUKKyAgICAgICAgICAgICAgICAiUkVMRUFTRSBJTkZPUk1BVElPTiIgbGluayBmb3IgdGhlIGFwcHJvcHJpYXRlIHJlbGVhc2UuCiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC90ZWNobmljYWwtZGV0YWlscy54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3RlY2huaWNhbC1kZXRhaWxzLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTllNzZlNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3RlY2huaWNhbC1kZXRhaWxzLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDIwNDIgKzAsMCBAQAotPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgotImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKLVs8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KLQotPGNoYXB0ZXIgaWQ9J3RlY2huaWNhbC1kZXRhaWxzJz4KLTx0aXRsZT5UZWNobmljYWwgRGV0YWlsczwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhpcyBjaGFwdGVyIHByb3ZpZGVzIHRlY2huaWNhbCBkZXRhaWxzIGZvciB2YXJpb3VzIHBhcnRzIG9mIHRoZQotICAgICAgICBZb2N0byBQcm9qZWN0LgotICAgICAgICBDdXJyZW50bHksIHRvcGljcyBpbmNsdWRlIFlvY3RvIFByb2plY3QgY29tcG9uZW50cywKLSAgICAgICAgY3Jvc3MtdG9vbGNoYWluIGdlbmVyYXRpb24sIHNoYXJlZCBzdGF0ZSAoc3N0YXRlKSBjYWNoZSwKLSAgICAgICAgeDMyLCBXYXlsYW5kIHN1cHBvcnQsIGFuZCBMaWNlbnNlcy4KLSAgICA8L3BhcmE+Ci0KLTxzZWN0aW9uIGlkPSd1c2luZ3Bva3ktY29tcG9uZW50cyc+Ci0gICAgPHRpdGxlPllvY3RvIFByb2plY3QgQ29tcG9uZW50czwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhlCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JpdGJha2UtdGVybSc+Qml0QmFrZTwvbGluaz4KLSAgICAgICAgdGFzayBleGVjdXRvciB0b2dldGhlciB3aXRoIHZhcmlvdXMgdHlwZXMgb2YgY29uZmlndXJhdGlvbiBmaWxlcyBmb3JtCi0gICAgICAgIHRoZSBPcGVuRW1iZWRkZWQgQ29yZS4KLSAgICAgICAgVGhpcyBzZWN0aW9uIG92ZXJ2aWV3cyB0aGVzZSBjb21wb25lbnRzIGJ5IGRlc2NyaWJpbmcgdGhlaXIgdXNlIGFuZAotICAgICAgICBob3cgdGhleSBpbnRlcmFjdC4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgQml0QmFrZSBoYW5kbGVzIHRoZSBwYXJzaW5nIGFuZCBleGVjdXRpb24gb2YgdGhlIGRhdGEgZmlsZXMuCi0gICAgICAgIFRoZSBkYXRhIGl0c2VsZiBpcyBvZiB2YXJpb3VzIHR5cGVzOgotICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SZWNpcGVzOjwvZW1waGFzaXM+IFByb3ZpZGVzIGRldGFpbHMKLSAgICAgICAgICAgICAgICBhYm91dCBwYXJ0aWN1bGFyIHBpZWNlcyBvZiBzb2Z0d2FyZS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q2xhc3MgRGF0YTo8L2VtcGhhc2lzPiBBYnN0cmFjdHMKLSAgICAgICAgICAgICAgICBjb21tb24gYnVpbGQgaW5mb3JtYXRpb24gKGUuZy4gaG93IHRvIGJ1aWxkIGEgTGludXgga2VybmVsKS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q29uZmlndXJhdGlvbiBEYXRhOjwvZW1waGFzaXM+IERlZmluZXMKLSAgICAgICAgICAgICAgICBtYWNoaW5lLXNwZWNpZmljIHNldHRpbmdzLCBwb2xpY3kgZGVjaXNpb25zLCBhbmQgc28gZm9ydGguCi0gICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBkYXRhIGFjdHMgYXMgdGhlIGdsdWUgdG8gYmluZCBldmVyeXRoaW5nCi0gICAgICAgICAgICAgICAgdG9nZXRoZXIuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBCaXRCYWtlIGtub3dzIGhvdyB0byBjb21iaW5lIG11bHRpcGxlIGRhdGEgc291cmNlcyB0b2dldGhlciBhbmQgcmVmZXJzCi0gICAgICAgIHRvIGVhY2ggZGF0YSBzb3VyY2UgYXMgYSBsYXllci4KLSAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGxheWVycywgc2VlIHRoZQotICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZAotICAgICAgICBDcmVhdGluZyBMYXllcnM8L3VsaW5rPiIgc2VjdGlvbiBvZiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudAotICAgICAgICBUYXNrcyBNYW51YWwuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEZvbGxvd2luZyBhcmUgc29tZSBicmllZiBkZXRhaWxzIG9uIHRoZXNlIGNvcmUgY29tcG9uZW50cy4KLSAgICAgICAgRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gaG93IHRoZXNlIGNvbXBvbmVudHMgaW50ZXJhY3QgZHVyaW5nCi0gICAgICAgIGEgYnVpbGQsIHNlZSB0aGUKLSAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2RldmVsb3BtZW50LWNvbmNlcHRzJz5EZXZlbG9wbWVudCBDb25jZXB0czwvbGluaz4iCi0gICAgICAgIHNlY3Rpb24uCi0gICAgPC9wYXJhPgotCi0gICAgPHNlY3Rpb24gaWQ9J3VzaW5ncG9reS1jb21wb25lbnRzLWJpdGJha2UnPgotICAgICAgICA8dGl0bGU+Qml0QmFrZTwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBCaXRCYWtlIGlzIHRoZSB0b29sIGF0IHRoZSBoZWFydCBvZiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQotICAgICAgICAgICAgYW5kIGlzIHJlc3BvbnNpYmxlIGZvciBwYXJzaW5nIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPiwKLSAgICAgICAgICAgIGdlbmVyYXRpbmcgYSBsaXN0IG9mIHRhc2tzIGZyb20gaXQsIGFuZCB0aGVuIGV4ZWN1dGluZyB0aG9zZSB0YXNrcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGJyaWVmbHkgaW50cm9kdWNlcyBCaXRCYWtlLgotICAgICAgICAgICAgSWYgeW91IHdhbnQgbW9yZSBpbmZvcm1hdGlvbiBvbiBCaXRCYWtlLCBzZWUgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2JpdGJha2UtdXNlci1tYW51YWwnPkJpdEJha2UgVXNlciBNYW51YWw8L3VsaW5rPi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVG8gc2VlIGEgbGlzdCBvZiB0aGUgb3B0aW9ucyBCaXRCYWtlIHN1cHBvcnRzLCB1c2UgZWl0aGVyIG9mCi0gICAgICAgICAgICB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgLWgKLSAgICAgJCBiaXRiYWtlIC0taGVscAotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgbW9zdCBjb21tb24gdXNhZ2UgZm9yIEJpdEJha2UgaXMgPGZpbGVuYW1lPmJpdGJha2UgPHJlcGxhY2VhYmxlPnBhY2thZ2VuYW1lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPiwgd2hlcmUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlbmFtZTwvZmlsZW5hbWU+IGlzIHRoZSBuYW1lIG9mIHRoZSBwYWNrYWdlIHlvdSB3YW50IHRvIGJ1aWxkCi0gICAgICAgICAgICAocmVmZXJyZWQgdG8gYXMgdGhlICJ0YXJnZXQiIGluIHRoaXMgbWFudWFsKS4KLSAgICAgICAgICAgIFRoZSB0YXJnZXQgb2Z0ZW4gZXF1YXRlcyB0byB0aGUgZmlyc3QgcGFydCBvZiBhIHJlY2lwZSdzIGZpbGVuYW1lCi0gICAgICAgICAgICAoZS5nLiAiZm9vIiBmb3IgYSByZWNpcGUgbmFtZWQKLSAgICAgICAgICAgIDxmaWxlbmFtZT5mb29fMS4zLjAtcjAuYmI8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICBTbywgdG8gcHJvY2VzcyB0aGUgPGZpbGVuYW1lPm1hdGNoYm94LWRlc2t0b3BfMS4yLjMuYmI8L2ZpbGVuYW1lPiByZWNpcGUgZmlsZSwgeW91Ci0gICAgICAgICAgICBtaWdodCB0eXBlIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSBtYXRjaGJveC1kZXNrdG9wCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBTZXZlcmFsIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiA8ZmlsZW5hbWU+bWF0Y2hib3gtZGVza3RvcDwvZmlsZW5hbWU+IG1pZ2h0IGV4aXN0LgotICAgICAgICAgICAgQml0QmFrZSBjaG9vc2VzIHRoZSBvbmUgc2VsZWN0ZWQgYnkgdGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uLgotICAgICAgICAgICAgWW91IGNhbiBnZXQgbW9yZSBkZXRhaWxzIGFib3V0IGhvdyBCaXRCYWtlIGNob29zZXMgYmV0d2VlbiBkaWZmZXJlbnQKLSAgICAgICAgICAgIHRhcmdldCB2ZXJzaW9ucyBhbmQgcHJvdmlkZXJzIGluIHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjYmItYml0YmFrZS1wcmVmZXJlbmNlcyc+UHJlZmVyZW5jZXM8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIEJpdEJha2UgVXNlciBNYW51YWwuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEJpdEJha2UgYWxzbyB0cmllcyB0byBleGVjdXRlIGFueSBkZXBlbmRlbnQgdGFza3MgZmlyc3QuCi0gICAgICAgICAgICBTbyBmb3IgZXhhbXBsZSwgYmVmb3JlIGJ1aWxkaW5nIDxmaWxlbmFtZT5tYXRjaGJveC1kZXNrdG9wPC9maWxlbmFtZT4sIEJpdEJha2UKLSAgICAgICAgICAgIHdvdWxkIGJ1aWxkIGEgY3Jvc3MgY29tcGlsZXIgYW5kIDxmaWxlbmFtZT5nbGliYzwvZmlsZW5hbWU+IGlmIHRoZXkgaGFkIG5vdCBhbHJlYWR5Ci0gICAgICAgICAgICBiZWVuIGJ1aWx0LgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBBIHVzZWZ1bCBCaXRCYWtlIG9wdGlvbiB0byBjb25zaWRlciBpcyB0aGUgPGZpbGVuYW1lPi1rPC9maWxlbmFtZT4gb3IKLSAgICAgICAgICAgIDxmaWxlbmFtZT4tLWNvbnRpbnVlPC9maWxlbmFtZT4gb3B0aW9uLgotICAgICAgICAgICAgVGhpcyBvcHRpb24gaW5zdHJ1Y3RzIEJpdEJha2UgdG8gdHJ5IGFuZCBjb250aW51ZSBwcm9jZXNzaW5nIHRoZSBqb2IKLSAgICAgICAgICAgIGFzIGxvbmcgYXMgcG9zc2libGUgZXZlbiBhZnRlciBlbmNvdW50ZXJpbmcgYW4gZXJyb3IuCi0gICAgICAgICAgICBXaGVuIGFuIGVycm9yIG9jY3VycywgdGhlIHRhcmdldCB0aGF0Ci0gICAgICAgICAgICBmYWlsZWQgYW5kIHRob3NlIHRoYXQgZGVwZW5kIG9uIGl0IGNhbm5vdCBiZSByZW1hZGUuCi0gICAgICAgICAgICBIb3dldmVyLCB3aGVuIHlvdSB1c2UgdGhpcyBvcHRpb24gb3RoZXIgZGVwZW5kZW5jaWVzIGNhbiBzdGlsbCBiZQotICAgICAgICAgICAgcHJvY2Vzc2VkLgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3VzaW5ncG9reS1jb21wb25lbnRzLW1ldGFkYXRhJz4KLSAgICAgICAgPHRpdGxlPk1ldGFkYXRhIChSZWNpcGVzKTwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBGaWxlcyB0aGF0IGhhdmUgdGhlIDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPiBzdWZmaXggYXJlICJyZWNpcGVzIgotICAgICAgICAgICAgZmlsZXMuCi0gICAgICAgICAgICBJbiBnZW5lcmFsLCBhIHJlY2lwZSBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBhIHNpbmdsZSBwaWVjZSBvZgotICAgICAgICAgICAgc29mdHdhcmUuCi0gICAgICAgICAgICBUaGlzIGluZm9ybWF0aW9uIGluY2x1ZGVzIHRoZSBsb2NhdGlvbiBmcm9tIHdoaWNoIHRvIGRvd25sb2FkIHRoZQotICAgICAgICAgICAgdW5hbHRlcmVkIHNvdXJjZSwgYW55IHNvdXJjZSBwYXRjaGVzIHRvIGJlIGFwcGxpZWQgdG8gdGhhdCBzb3VyY2UKLSAgICAgICAgICAgIChpZiBuZWVkZWQpLCB3aGljaCBzcGVjaWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBhcHBseSwKLSAgICAgICAgICAgIGhvdyB0byBjb21waWxlIHRoZSBzb3VyY2UgZmlsZXMsIGFuZCBob3cgdG8gcGFja2FnZSB0aGUgY29tcGlsZWQKLSAgICAgICAgICAgIG91dHB1dC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIHRlcm0gInBhY2thZ2UiIGlzIHNvbWV0aW1lcyB1c2VkIHRvIHJlZmVyIHRvIHJlY2lwZXMuIEhvd2V2ZXIsCi0gICAgICAgICAgICBzaW5jZSB0aGUgd29yZCAicGFja2FnZSIgaXMgdXNlZCBmb3IgdGhlIHBhY2thZ2VkIG91dHB1dCBmcm9tIHRoZSBPcGVuRW1iZWRkZWQKLSAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSAoaS5lLiA8ZmlsZW5hbWU+LmlwazwvZmlsZW5hbWU+IG9yIDxmaWxlbmFtZT4uZGViPC9maWxlbmFtZT4gZmlsZXMpLAotICAgICAgICAgICAgdGhpcyBkb2N1bWVudCBhdm9pZHMgdXNpbmcgdGhlIHRlcm0gInBhY2thZ2UiIHdoZW4gcmVmZXJyaW5nIHRvIHJlY2lwZXMuCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0nbWV0YWRhdGEtdmlydHVhbC1wcm92aWRlcnMnPgotICAgICAgICA8dGl0bGU+TWV0YWRhdGEgKFZpcnR1YWwgUHJvdmlkZXJzKTwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBQcmlvciB0byB0aGUgYnVpbGQsIGlmIHlvdSBrbm93IHRoYXQgc2V2ZXJhbCBkaWZmZXJlbnQgcmVjaXBlcwotICAgICAgICAgICAgcHJvdmlkZSB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5LCB5b3UgY2FuIHVzZSBhIHZpcnR1YWwgcHJvdmlkZXIKLSAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT52aXJ0dWFsLyo8L2ZpbGVuYW1lPikgYXMgYSBwbGFjZWhvbGRlciBmb3IgdGhlCi0gICAgICAgICAgICBhY3R1YWwgcHJvdmlkZXIuCi0gICAgICAgICAgICBUaGUgYWN0dWFsIHByb3ZpZGVyIHdvdWxkIGJlIGRldGVybWluZWQgYXQgYnVpbGQKLSAgICAgICAgICAgIHRpbWUuCi0gICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHlvdSBzaG91bGQgYWRkIDxmaWxlbmFtZT52aXJ0dWFsLyo8L2ZpbGVuYW1lPgotICAgICAgICAgICAgdG8gPGxpbmsgbGlua2VuZD0ndmFyLURFUEVORFMnPjxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgcmF0aGVyIHRoYW4gbGlzdGluZyB0aGUgc3BlY2lmaWVkIHByb3ZpZGVyLgotICAgICAgICAgICAgWW91IHdvdWxkIHNlbGVjdCB0aGUgYWN0dWFsIHByb3ZpZGVyIGJ5IHNldHRpbmcgdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFJFRkVSUkVEX1BST1ZJREVSJz48ZmlsZW5hbWU+UFJFRkVSUkVEX1BST1ZJREVSPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICB2YXJpYWJsZSAoaS5lLiA8ZmlsZW5hbWU+UFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvKjwvZmlsZW5hbWU+KQotICAgICAgICAgICAgaW4gdGhlIGJ1aWxkJ3MgY29uZmlndXJhdGlvbiBmaWxlIChlLmcuCi0gICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS9idWlsZC9jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBBbnkgcmVjaXBlIHRoYXQgUFJPVklERVMgYSA8ZmlsZW5hbWU+dmlydHVhbC8qPC9maWxlbmFtZT4gaXRlbQotICAgICAgICAgICAgICAgIHRoYXQgaXMgdWx0aW1hdGVseSBub3Qgc2VsZWN0ZWQgdGhyb3VnaAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QUkVGRVJSRURfUFJPVklERVI8L2ZpbGVuYW1lPiBkb2VzIG5vdCBnZXQgYnVpbHQuCi0gICAgICAgICAgICAgICAgUHJldmVudGluZyB0aGVzZSByZWNpcGVzIGZyb20gYnVpbGRpbmcgaXMgdXN1YWxseSB0aGUgZGVzaXJlZAotICAgICAgICAgICAgICAgIGJlaGF2aW9yIHNpbmNlIHRoaXMgbWVjaGFuaXNtJ3MgcHVycG9zZSBpcyB0byBzZWxlY3QgYmV0d2VlbgotICAgICAgICAgICAgICAgIG11dHVhbGx5IGV4Y2x1c2l2ZSBhbHRlcm5hdGl2ZSBwcm92aWRlcnMuCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdHMgc3BlY2lmaWMgZXhhbXBsZXMgb2YgdmlydHVhbCBwcm92aWRlcnM6Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnZpcnR1YWwvbWVzYTwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBQcm92aWRlcyA8ZmlsZW5hbWU+Z2JtLnBjPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnZpcnR1YWwvZWdsPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIFByb3ZpZGVzIDxmaWxlbmFtZT5lZ2wucGM8L2ZpbGVuYW1lPiBhbmQgcG9zc2libHkKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPndheWxhbmQtZWdsLnBjPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnZpcnR1YWwvbGliZ2w8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgUHJvdmlkZXMgPGZpbGVuYW1lPmdsLnBjPC9maWxlbmFtZT4gKGkuZS4gbGliR0wpLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52aXJ0dWFsL2xpYmdsZXMxPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIFByb3ZpZGVzIDxmaWxlbmFtZT5nbGVzdjFfY20ucGM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAoaS5lLiBsaWJHTEVTdjFfQ00pLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52aXJ0dWFsL2xpYmdsZXMyPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIFByb3ZpZGVzIDxmaWxlbmFtZT5nbGVzdjIucGM8L2ZpbGVuYW1lPiAoaS5lLiBsaWJHTEVTdjIpLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3VzaW5ncG9reS1jb21wb25lbnRzLWNsYXNzZXMnPgotICAgICAgICA8dGl0bGU+Q2xhc3NlczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBDbGFzcyBmaWxlcyAoPGZpbGVuYW1lPi5iYmNsYXNzPC9maWxlbmFtZT4pIGNvbnRhaW4gaW5mb3JtYXRpb24gdGhhdAotICAgICAgICAgICAgaXMgdXNlZnVsIHRvIHNoYXJlIGJldHdlZW4KLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4gZmlsZXMuCi0gICAgICAgICAgICBBbiBleGFtcGxlIGlzIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYXV0b3Rvb2xzJz48ZmlsZW5hbWU+YXV0b3Rvb2xzPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICBjbGFzcywgd2hpY2ggY29udGFpbnMgY29tbW9uIHNldHRpbmdzIGZvciBhbnkgYXBwbGljYXRpb24gdGhhdAotICAgICAgICAgICAgQXV0b3Rvb2xzIHVzZXMuCi0gICAgICAgICAgICBUaGUgIjxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzJz5DbGFzc2VzPC9saW5rPiIgY2hhcHRlciBwcm92aWRlcwotICAgICAgICAgICAgZGV0YWlscyBhYm91dCBjbGFzc2VzIGFuZCBob3cgdG8gdXNlIHRoZW0uCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0ndXNpbmdwb2t5LWNvbXBvbmVudHMtY29uZmlndXJhdGlvbic+Ci0gICAgICAgIDx0aXRsZT5Db25maWd1cmF0aW9uPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBjb25maWd1cmF0aW9uIGZpbGVzICg8ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPikgZGVmaW5lIHZhcmlvdXMgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKLSAgICAgICAgICAgIHRoYXQgZ292ZXJuIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgcHJvY2Vzcy4KLSAgICAgICAgICAgIFRoZXNlIGZpbGVzIGZhbGwgaW50byBzZXZlcmFsIGFyZWFzIHRoYXQgZGVmaW5lIG1hY2hpbmUgY29uZmlndXJhdGlvbiBvcHRpb25zLAotICAgICAgICAgICAgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgY29tcGlsZXIgdHVuaW5nIG9wdGlvbnMsIGdlbmVyYWwgY29tbW9uIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgIG9wdGlvbnMsIGFuZCB1c2VyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbiA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+LCB3aGljaCBpcyBmb3VuZAotICAgICAgICAgICAgaW4gdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci08L3NlY3Rpb24+Ci0KLTxzZWN0aW9uIGlkPSJjcm9zcy1kZXZlbG9wbWVudC10b29sY2hhaW4tZ2VuZXJhdGlvbiI+Ci0gICAgPHRpdGxlPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbiBHZW5lcmF0aW9uPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBkb2VzIG1vc3Qgb2YgdGhlIHdvcmsgZm9yIHlvdSB3aGVuIGl0IGNvbWVzIHRvCi0gICAgICAgIGNyZWF0aW5nCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbic+Y3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluczwvbGluaz4uCi0gICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBzb21lIHRlY2huaWNhbCBiYWNrZ3JvdW5kIG9uIGhvdwotICAgICAgICBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW5zIGFyZSBjcmVhdGVkIGFuZCB1c2VkLgotICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0b29sY2hhaW5zLCB5b3UgY2FuIGFsc28gc2VlIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvdWxpbms+Ci0gICAgICAgIG1hbnVhbC4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgSW4gdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIGNyb3NzLWRldmVsb3BtZW50Ci0gICAgICAgIHRvb2xjaGFpbnMgYXJlIHVzZWQgdG8gYnVpbGQgdGhlIGltYWdlIGFuZCBhcHBsaWNhdGlvbnMgdGhhdCBydW4gb24gdGhlCi0gICAgICAgIHRhcmdldCBoYXJkd2FyZS4KLSAgICAgICAgV2l0aCBqdXN0IGEgZmV3IGNvbW1hbmRzLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjcmVhdGVzCi0gICAgICAgIHRoZXNlIG5lY2Vzc2FyeSB0b29sY2hhaW5zIGZvciB5b3UuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoZSBmb2xsb3dpbmcgZmlndXJlIHNob3dzIGEgaGlnaC1sZXZlbCBidWlsZCBlbnZpcm9ubWVudCByZWdhcmRpbmcKLSAgICAgICAgdG9vbGNoYWluIGNvbnN0cnVjdGlvbiBhbmQgdXNlLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvY3Jvc3MtZGV2ZWxvcG1lbnQtdG9vbGNoYWlucy5wbmciIHdpZHRoPSI4aW4iIGRlcHRoPSI2aW4iIGFsaWduPSJjZW50ZXIiIC8+Ci0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIE1vc3Qgb2YgdGhlIHdvcmsgb2NjdXJzIG9uIHRoZSBCdWlsZCBIb3N0LgotICAgICAgICBUaGlzIGlzIHRoZSBtYWNoaW5lIHVzZWQgdG8gYnVpbGQgaW1hZ2VzIGFuZCBnZW5lcmFsbHkgd29yayB3aXRoaW4gdGhlCi0gICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGVudmlyb25tZW50LgotICAgICAgICBXaGVuIHlvdSBydW4gQml0QmFrZSB0byBjcmVhdGUgYW4gaW1hZ2UsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCi0gICAgICAgIHVzZXMgdGhlIGhvc3QgPGZpbGVuYW1lPmdjYzwvZmlsZW5hbWU+IGNvbXBpbGVyIHRvIGJvb3RzdHJhcCBhCi0gICAgICAgIGNyb3NzLWNvbXBpbGVyIG5hbWVkIDxmaWxlbmFtZT5nY2MtY3Jvc3M8L2ZpbGVuYW1lPi4KLSAgICAgICAgVGhlIDxmaWxlbmFtZT5nY2MtY3Jvc3M8L2ZpbGVuYW1lPiBjb21waWxlciBpcyB3aGF0IEJpdEJha2UgdXNlcyB0bwotICAgICAgICBjb21waWxlIHNvdXJjZSBmaWxlcyB3aGVuIGNyZWF0aW5nIHRoZSB0YXJnZXQgaW1hZ2UuCi0gICAgICAgIFlvdSBjYW4gdGhpbmsgb2YgPGZpbGVuYW1lPmdjYy1jcm9zczwvZmlsZW5hbWU+IHNpbXBseSBhcyBhbgotICAgICAgICBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBjcm9zcy1jb21waWxlciB0aGF0IGlzIHVzZWQgaW50ZXJuYWxseSB3aXRoaW4KLSAgICAgICAgQml0QmFrZSBvbmx5LgotICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgIFRoZSBleHRlbnNpYmxlIFNESyBkb2VzIG5vdCB1c2UKLSAgICAgICAgICAgIDxmaWxlbmFtZT5nY2MtY3Jvc3MtY2FuYWRpYW48L2ZpbGVuYW1lPiBzaW5jZSB0aGlzIFNESwotICAgICAgICAgICAgc2hpcHMgYSBjb3B5IG9mIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGFuZCB0aGUgc3lzcm9vdAotICAgICAgICAgICAgd2l0aGluIGl0IGNvbnRhaW5zIDxmaWxlbmFtZT5nY2MtY3Jvc3M8L2ZpbGVuYW1lPi4KLSAgICAgICAgPC9ub3RlPgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgY2hhaW4gb2YgZXZlbnRzIHRoYXQgb2NjdXJzIHdoZW4gPGZpbGVuYW1lPmdjYy1jcm9zczwvZmlsZW5hbWU+IGlzCi0gICAgICAgIGJvb3RzdHJhcHBlZCBpcyBhcyBmb2xsb3dzOgotICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIGdjYyAtPiBiaW51dGlscy1jcm9zcyAtPiBnY2MtY3Jvc3MtaW5pdGlhbCAtPiBsaW51eC1saWJjLWhlYWRlcnMgLT4gZ2xpYmMtaW5pdGlhbCAtPiBnbGliYyAtPiBnY2MtY3Jvc3MgLT4gZ2NjLXJ1bnRpbWUKLSAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5nY2M8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICBUaGUgYnVpbGQgaG9zdCdzIEdOVSBDb21waWxlciBDb2xsZWN0aW9uIChHQ0MpLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5iaW51dGlscy1jcm9zczwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgIFRoZSBiYXJlIG1pbmltdW0gYmluYXJ5IHV0aWxpdGllcyBuZWVkZWQgaW4gb3JkZXIgdG8gcnVuCi0gICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5nY2MtY3Jvc3MtaW5pdGlhbDwvZmlsZW5hbWU+IHBoYXNlIG9mIHRoZQotICAgICAgICAgICAgICAgIGJvb3RzdHJhcCBvcGVyYXRpb24uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmdjYy1jcm9zcy1pbml0aWFsPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgQW4gZWFybHkgc3RhZ2Ugb2YgdGhlIGJvb3RzdHJhcCBwcm9jZXNzIGZvciBjcmVhdGluZwotICAgICAgICAgICAgICAgIHRoZSBjcm9zcy1jb21waWxlci4KLSAgICAgICAgICAgICAgICBUaGlzIHN0YWdlIGJ1aWxkcyBlbm91Z2ggb2YgdGhlIDxmaWxlbmFtZT5nY2MtY3Jvc3M8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICB0aGUgQyBsaWJyYXJ5LCBhbmQgb3RoZXIgcGllY2VzIG5lZWRlZCB0byBmaW5pc2ggYnVpbGRpbmcgdGhlCi0gICAgICAgICAgICAgICAgZmluYWwgY3Jvc3MtY29tcGlsZXIgaW4gbGF0ZXIgc3RhZ2VzLgotICAgICAgICAgICAgICAgIFRoaXMgdG9vbCBpcyBhICJuYXRpdmUiIHBhY2thZ2UgKGkuZS4gaXQgaXMgZGVzaWduZWQgdG8gcnVuIG9uCi0gICAgICAgICAgICAgICAgdGhlIGJ1aWxkIGhvc3QpLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5saW51eC1saWJjLWhlYWRlcnM8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICBIZWFkZXJzIG5lZWRlZCBmb3IgdGhlIGNyb3NzLWNvbXBpbGVyLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5nbGliYy1pbml0aWFsPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgQW4gaW5pdGlhbCB2ZXJzaW9uIG9mIHRoZSBFbWJlZGRlZCBHTElCQyBuZWVkZWQgdG8gYm9vdHN0cmFwCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdsaWJjPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmdjYy1jcm9zczwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgIFRoZSBmaW5hbCBzdGFnZSBvZiB0aGUgYm9vdHN0cmFwIHByb2Nlc3MgZm9yIHRoZQotICAgICAgICAgICAgICAgIGNyb3NzLWNvbXBpbGVyLgotICAgICAgICAgICAgICAgIFRoaXMgc3RhZ2UgcmVzdWx0cyBpbiB0aGUgYWN0dWFsIGNyb3NzLWNvbXBpbGVyIHRoYXQKLSAgICAgICAgICAgICAgICBCaXRCYWtlIHVzZXMgd2hlbiBpdCBidWlsZHMgYW4gaW1hZ2UgZm9yIGEgdGFyZ2V0ZWQKLSAgICAgICAgICAgICAgICBkZXZpY2UuCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgcmVwbGFjaW5nIHRoaXMgY3Jvc3MgY29tcGlsZXIgdG9vbGNoYWluCi0gICAgICAgICAgICAgICAgICAgIHdpdGggYSBjdXN0b20gdmVyc2lvbiwgeW91IG11c3QgcmVwbGFjZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2NjLWNyb3NzPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIFRoaXMgdG9vbCBpcyBhbHNvIGEgIm5hdGl2ZSIgcGFja2FnZSAoaS5lLiBpdCBpcwotICAgICAgICAgICAgICAgIGRlc2lnbmVkIHRvIHJ1biBvbiB0aGUgYnVpbGQgaG9zdCkuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmdjYy1ydW50aW1lPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgUnVudGltZSBsaWJyYXJpZXMgcmVzdWx0aW5nIGZyb20gdGhlIHRvb2xjaGFpbiBib290c3RyYXBwaW5nCi0gICAgICAgICAgICAgICAgcHJvY2Vzcy4KLSAgICAgICAgICAgICAgICBUaGlzIHRvb2wgcHJvZHVjZXMgYSBiaW5hcnkgdGhhdCBjb25zaXN0cyBvZiB0aGUKLSAgICAgICAgICAgICAgICBydW50aW1lIGxpYnJhcmllcyBuZWVkIGZvciB0aGUgdGFyZ2V0ZWQgZGV2aWNlLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgWW91IGNhbiB1c2UgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gYnVpbGQgYW4gaW5zdGFsbGVyIGZvcgotICAgICAgICB0aGUgcmVsb2NhdGFibGUgU0RLIHVzZWQgdG8gZGV2ZWxvcCBhcHBsaWNhdGlvbnMuCi0gICAgICAgIFdoZW4geW91IHJ1biB0aGUgaW5zdGFsbGVyLCBpdCBpbnN0YWxscyB0aGUgdG9vbGNoYWluLCB3aGljaCBjb250YWlucwotICAgICAgICB0aGUgZGV2ZWxvcG1lbnQgdG9vbHMgKGUuZy4sIHRoZQotICAgICAgICA8ZmlsZW5hbWU+Z2NjLWNyb3NzLWNhbmFkaWFuPC9maWxlbmFtZT4pLAotICAgICAgICA8ZmlsZW5hbWU+YmludXRpbHMtY3Jvc3MtY2FuYWRpYW48L2ZpbGVuYW1lPiwgYW5kIG90aGVyCi0gICAgICAgIDxmaWxlbmFtZT5uYXRpdmVzZGstKjwvZmlsZW5hbWU+IHRvb2xzLAotICAgICAgICB3aGljaCBhcmUgdG9vbHMgbmF0aXZlIHRvIHRoZSBTREsgKGkuZS4gbmF0aXZlIHRvCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TREtfQVJDSCc+PGZpbGVuYW1lPlNES19BUkNIPC9maWxlbmFtZT48L2xpbms+KSwKLSAgICAgICAgeW91IG5lZWQgdG8gY3Jvc3MtY29tcGlsZSBhbmQgdGVzdCB5b3VyIHNvZnR3YXJlLgotICAgICAgICBUaGUgZmlndXJlIHNob3dzIHRoZSBjb21tYW5kcyB5b3UgdXNlIHRvIGVhc2lseSBidWlsZCBvdXQgdGhpcwotICAgICAgICB0b29sY2hhaW4uCi0gICAgICAgIFRoaXMgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluIGlzIGJ1aWx0IHRvIGV4ZWN1dGUgb24gdGhlCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TREtNQUNISU5FJz48ZmlsZW5hbWU+U0RLTUFDSElORTwvZmlsZW5hbWU+PC9saW5rPiwKLSAgICAgICAgd2hpY2ggbWlnaHQgb3IgbWlnaHQgbm90IGJlIHRoZSBzYW1lCi0gICAgICAgIG1hY2hpbmUgYXMgdGhlIEJ1aWxkIEhvc3QuCi0gICAgICAgIDxub3RlPgotICAgICAgICAgICAgSWYgeW91ciB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgWW9jdG8gUHJvamVjdCwKLSAgICAgICAgICAgIHlvdSBjYW4gdGFrZSBhZHZhbnRhZ2Ugb2YgcHJlLWJ1aWx0IGltYWdlcyB0aGF0IHNoaXAgd2l0aCB0aGUKLSAgICAgICAgICAgIFlvY3RvIFByb2plY3QgYW5kIGFscmVhZHkgY29udGFpbiBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4KLSAgICAgICAgICAgIGluc3RhbGxlcnMuCi0gICAgICAgIDwvbm90ZT4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgSGVyZSBpcyB0aGUgYm9vdHN0cmFwIHByb2Nlc3MgZm9yIHRoZSByZWxvY2F0YWJsZSB0b29sY2hhaW46Ci0gICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgZ2NjIC0+IGJpbnV0aWxzLWNyb3Nzc2RrIC0+IGdjYy1jcm9zc3Nkay1pbml0aWFsIC0+IGxpbnV4LWxpYmMtaGVhZGVycyAtPgotICAgICAgICBnbGliYy1pbml0aWFsIC0+IG5hdGl2ZXNkay1nbGliYyAtPiBnY2MtY3Jvc3NzZGsgLT4gZ2NjLWNyb3NzLWNhbmFkaWFuCi0gICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Z2NjPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgVGhlIGJ1aWxkIGhvc3QncyBHTlUgQ29tcGlsZXIgQ29sbGVjdGlvbiAoR0NDKS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+YmludXRpbHMtY3Jvc3NzZGs8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICBUaGUgYmFyZSBtaW5pbXVtIGJpbmFyeSB1dGlsaXRpZXMgbmVlZGVkIGluIG9yZGVyIHRvIHJ1bgotICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Z2NjLWNyb3Nzc2RrLWluaXRpYWw8L2ZpbGVuYW1lPiBwaGFzZSBvZiB0aGUKLSAgICAgICAgICAgICAgICBib290c3RyYXAgb3BlcmF0aW9uLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5nY2MtY3Jvc3NzZGstaW5pdGlhbDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgIEFuIGVhcmx5IHN0YWdlIG9mIHRoZSBib290c3RyYXAgcHJvY2VzcyBmb3IgY3JlYXRpbmcKLSAgICAgICAgICAgICAgICB0aGUgY3Jvc3MtY29tcGlsZXIuCi0gICAgICAgICAgICAgICAgVGhpcyBzdGFnZSBidWlsZHMgZW5vdWdoIG9mIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nY2MtY3Jvc3NzZGs8L2ZpbGVuYW1lPiBhbmQgc3VwcG9ydGluZyBwaWVjZXMgc28gdGhhdAotICAgICAgICAgICAgICAgIHRoZSBmaW5hbCBzdGFnZSBvZiB0aGUgYm9vdHN0cmFwIHByb2Nlc3MgY2FuIHByb2R1Y2UgdGhlCi0gICAgICAgICAgICAgICAgZmluaXNoZWQgY3Jvc3MtY29tcGlsZXIuCi0gICAgICAgICAgICAgICAgVGhpcyB0b29sIGlzIGEgIm5hdGl2ZSIgYmluYXJ5IHRoYXQgcnVucyBvbiB0aGUgYnVpbGQgaG9zdC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bGludXgtbGliYy1oZWFkZXJzPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgSGVhZGVycyBuZWVkZWQgZm9yIHRoZSBjcm9zcy1jb21waWxlci4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Z2xpYmMtaW5pdGlhbDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgIEFuIGluaXRpYWwgdmVyc2lvbiBvZiB0aGUgRW1iZWRkZWQgR0xJQkMgbmVlZGVkIHRvIGJvb3RzdHJhcAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5uYXRpdmVzZGstZ2xpYmM8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bmF0aXZlc2RrLWdsaWJjPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgVGhlIEVtYmVkZGVkIEdMSUJDIG5lZWRlZCB0byBib290c3RyYXAgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdjYy1jcm9zc3NkazwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5nY2MtY3Jvc3NzZGs8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICBUaGUgZmluYWwgc3RhZ2Ugb2YgdGhlIGJvb3RzdHJhcCBwcm9jZXNzIGZvciB0aGUKLSAgICAgICAgICAgICAgICByZWxvY2F0YWJsZSBjcm9zcy1jb21waWxlci4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmdjYy1jcm9zc3NkazwvZmlsZW5hbWU+IGlzIGEgdHJhbnNpdG9yeSBjb21waWxlcgotICAgICAgICAgICAgICAgIGFuZCBuZXZlciBsZWF2ZXMgdGhlIGJ1aWxkIGhvc3QuCi0gICAgICAgICAgICAgICAgSXRzIHB1cnBvc2UgaXMgdG8gaGVscCBpbiB0aGUgYm9vdHN0cmFwIHByb2Nlc3MgdG8gY3JlYXRlIHRoZQotICAgICAgICAgICAgICAgIGV2ZW50dWFsIHJlbG9jYXRhYmxlIDxmaWxlbmFtZT5nY2MtY3Jvc3MtY2FuYWRpYW48L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGNvbXBpbGVyLCB3aGljaCBpcyByZWxvY2F0YWJsZS4KLSAgICAgICAgICAgICAgICBUaGlzIHRvb2wgaXMgYWxzbyBhICJuYXRpdmUiIHBhY2thZ2UgKGkuZS4gaXQgaXMKLSAgICAgICAgICAgICAgICBkZXNpZ25lZCB0byBydW4gb24gdGhlIGJ1aWxkIGhvc3QpLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5nY2MtY3Jvc3MtY2FuYWRpYW48L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICBUaGUgZmluYWwgcmVsb2NhdGFibGUgY3Jvc3MtY29tcGlsZXIuCi0gICAgICAgICAgICAgICAgV2hlbiBydW4gb24gdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNES01BQ0hJTkUnPjxmaWxlbmFtZT5TREtNQUNISU5FPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgICAgIHRoaXMgdG9vbAotICAgICAgICAgICAgICAgIHByb2R1Y2VzIGV4ZWN1dGFibGUgY29kZSB0aGF0IHJ1bnMgb24gdGhlIHRhcmdldCBkZXZpY2UuCi0gICAgICAgICAgICAgICAgT25seSBvbmUgY3Jvc3MtY2FuYWRpYW4gY29tcGlsZXIgaXMgcHJvZHVjZWQgcGVyIGFyY2hpdGVjdHVyZQotICAgICAgICAgICAgICAgIHNpbmNlIHRoZXkgY2FuIGJlIHRhcmdldGVkIGF0IGRpZmZlcmVudCBwcm9jZXNzb3Igb3B0aW1pemF0aW9ucwotICAgICAgICAgICAgICAgIHVzaW5nIGNvbmZpZ3VyYXRpb25zIHBhc3NlZCB0byB0aGUgY29tcGlsZXIgdGhyb3VnaCB0aGUKLSAgICAgICAgICAgICAgICBjb21waWxlIGNvbW1hbmRzLgotICAgICAgICAgICAgICAgIFRoaXMgY2lyY3VtdmVudHMgdGhlIG5lZWQgZm9yIG11bHRpcGxlIGNvbXBpbGVycyBhbmQgdGh1cwotICAgICAgICAgICAgICAgIHJlZHVjZXMgdGhlIHNpemUgb2YgdGhlIHRvb2xjaGFpbnMuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgIDwvcGFyYT4KLQotICAgIDxub3RlPgotICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gYWR2YW50YWdlcyBnYWluZWQgd2hlbiBidWlsZGluZyBhCi0gICAgICAgIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbiBpbnN0YWxsZXIsIHNlZSB0aGUKLSAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1idWlsZGluZy1hbi1zZGstaW5zdGFsbGVyJz5CdWlsZGluZyBhbiBTREsgSW5zdGFsbGVyPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQotICAgICAgICBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsLgotICAgIDwvbm90ZT4KLTwvc2VjdGlvbj4KLQotPHNlY3Rpb24gaWQ9InNoYXJlZC1zdGF0ZS1jYWNoZSI+Ci0gICAgPHRpdGxlPlNoYXJlZCBTdGF0ZSBDYWNoZTwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgQnkgZGVzaWduLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBidWlsZHMgZXZlcnl0aGluZyBmcm9tIHNjcmF0Y2ggdW5sZXNzCi0gICAgICAgIEJpdEJha2UgY2FuIGRldGVybWluZSB0aGF0IHBhcnRzIGRvIG5vdCBuZWVkIHRvIGJlIHJlYnVpbHQuCi0gICAgICAgIEZ1bmRhbWVudGFsbHksIGJ1aWxkaW5nIGZyb20gc2NyYXRjaCBpcyBhdHRyYWN0aXZlIGFzIGl0IG1lYW5zIGFsbCBwYXJ0cyBhcmUKLSAgICAgICAgYnVpbHQgZnJlc2ggYW5kIHRoZXJlIGlzIG5vIHBvc3NpYmlsaXR5IG9mIHN0YWxlIGRhdGEgY2F1c2luZyBwcm9ibGVtcy4KLSAgICAgICAgV2hlbiBkZXZlbG9wZXJzIGhpdCBwcm9ibGVtcywgdGhleSB0eXBpY2FsbHkgZGVmYXVsdCBiYWNrIHRvIGJ1aWxkaW5nIGZyb20gc2NyYXRjaAotICAgICAgICBzbyB0aGV5IGtub3cgdGhlIHN0YXRlIG9mIHRoaW5ncyBmcm9tIHRoZSBzdGFydC4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgQnVpbGRpbmcgYW4gaW1hZ2UgZnJvbSBzY3JhdGNoIGlzIGJvdGggYW4gYWR2YW50YWdlIGFuZCBhIGRpc2FkdmFudGFnZSB0byB0aGUgcHJvY2Vzcy4KLSAgICAgICAgQXMgbWVudGlvbmVkIGluIHRoZSBwcmV2aW91cyBwYXJhZ3JhcGgsIGJ1aWxkaW5nIGZyb20gc2NyYXRjaCBlbnN1cmVzIHRoYXQKLSAgICAgICAgZXZlcnl0aGluZyBpcyBjdXJyZW50IGFuZCBzdGFydHMgZnJvbSBhIGtub3duIHN0YXRlLgotICAgICAgICBIb3dldmVyLCBidWlsZGluZyBmcm9tIHNjcmF0Y2ggYWxzbyB0YWtlcyBtdWNoIGxvbmdlciBhcyBpdCBnZW5lcmFsbHkgbWVhbnMKLSAgICAgICAgcmVidWlsZGluZyB0aGluZ3MgdGhhdCBkbyBub3QgbmVjZXNzYXJpbHkgbmVlZCB0byBiZSByZWJ1aWx0LgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBpbXBsZW1lbnRzIHNoYXJlZCBzdGF0ZSBjb2RlIHRoYXQgc3VwcG9ydHMgaW5jcmVtZW50YWwgYnVpbGRzLgotICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHNoYXJlZCBzdGF0ZSBjb2RlIGFuc3dlcnMgdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMgdGhhdAotICAgICAgICB3ZXJlIGZ1bmRhbWVudGFsIHJvYWRibG9ja3Mgd2l0aGluIHRoZSBPcGVuRW1iZWRkZWQgaW5jcmVtZW50YWwgYnVpbGQgc3VwcG9ydCBzeXN0ZW06Ci0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+V2hhdCBwaWVjZXMgb2YgdGhlIHN5c3RlbSBoYXZlIGNoYW5nZWQgYW5kIHdoYXQgcGllY2VzIGhhdmUKLSAgICAgICAgICAgICAgICBub3QgY2hhbmdlZD88L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Ib3cgYXJlIGNoYW5nZWQgcGllY2VzIG9mIHNvZnR3YXJlIHJlbW92ZWQgYW5kIHJlcGxhY2VkPzwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkhvdyBhcmUgcHJlLWJ1aWx0IGNvbXBvbmVudHMgdGhhdCBkbyBub3QgbmVlZCB0byBiZSByZWJ1aWx0IGZyb20gc2NyYXRjaAotICAgICAgICAgICAgICAgIHVzZWQgd2hlbiB0aGV5IGFyZSBhdmFpbGFibGU/PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBGb3IgdGhlIGZpcnN0IHF1ZXN0aW9uLCB0aGUgYnVpbGQgc3lzdGVtIGRldGVjdHMgY2hhbmdlcyBpbiB0aGUgImlucHV0cyIgdG8gYSBnaXZlbiB0YXNrIGJ5Ci0gICAgICAgIGNyZWF0aW5nIGEgY2hlY2tzdW0gKG9yIHNpZ25hdHVyZSkgb2YgdGhlIHRhc2sncyBpbnB1dHMuCi0gICAgICAgIElmIHRoZSBjaGVja3N1bSBjaGFuZ2VzLCB0aGUgc3lzdGVtIGFzc3VtZXMgdGhlIGlucHV0cyBoYXZlIGNoYW5nZWQgYW5kIHRoZSB0YXNrIG5lZWRzIHRvIGJlCi0gICAgICAgIHJlcnVuLgotICAgICAgICBGb3IgdGhlIHNlY29uZCBxdWVzdGlvbiwgdGhlIHNoYXJlZCBzdGF0ZSAoc3N0YXRlKSBjb2RlIHRyYWNrcyB3aGljaCB0YXNrcyBhZGQgd2hpY2ggb3V0cHV0Ci0gICAgICAgIHRvIHRoZSBidWlsZCBwcm9jZXNzLgotICAgICAgICBUaGlzIG1lYW5zIHRoZSBvdXRwdXQgZnJvbSBhIGdpdmVuIHRhc2sgY2FuIGJlIHJlbW92ZWQsIHVwZ3JhZGVkIG9yIG90aGVyd2lzZSBtYW5pcHVsYXRlZC4KLSAgICAgICAgVGhlIHRoaXJkIHF1ZXN0aW9uIGlzIHBhcnRseSBhZGRyZXNzZWQgYnkgdGhlIHNvbHV0aW9uIGZvciB0aGUgc2Vjb25kIHF1ZXN0aW9uCi0gICAgICAgIGFzc3VtaW5nIHRoZSBidWlsZCBzeXN0ZW0gY2FuIGZldGNoIHRoZSBzc3RhdGUgb2JqZWN0cyBmcm9tIHJlbW90ZSBsb2NhdGlvbnMgYW5kCi0gICAgICAgIGluc3RhbGwgdGhlbSBpZiB0aGV5IGFyZSBkZWVtZWQgdG8gYmUgdmFsaWQuCi0gICAgPC9wYXJhPgotCi0gICAgPG5vdGU+Ci0gICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGRvZXMgbm90IG1haW50YWluCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L2xpbms+IGluZm9ybWF0aW9uCi0gICAgICAgIGFzIHBhcnQgb2YgdGhlIHNoYXJlZCBzdGF0ZSBwYWNrYWdlcy4KLSAgICAgICAgQ29uc2VxdWVudGx5LCBjb25zaWRlcmF0aW9ucyBleGlzdCB0aGF0IGFmZmVjdCBtYWludGFpbmluZyBzaGFyZWQKLSAgICAgICAgc3RhdGUgZmVlZHMuCi0gICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KLSAgICAgICAgd29ya3Mgd2l0aCBwYWNrYWdlcyBhbmQgY2FuCi0gICAgICAgIHRyYWNrIGluY3JlbWVudGluZyA8ZmlsZW5hbWU+UFI8L2ZpbGVuYW1lPiBpbmZvcm1hdGlvbiwgc2VlIHRoZQotICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjYXV0b21hdGljYWxseS1pbmNyZW1lbnRpbmctYS1iaW5hcnktcGFja2FnZS1yZXZpc2lvbi1udW1iZXInPkF1dG9tYXRpY2FsbHkgSW5jcmVtZW50aW5nIGEgQmluYXJ5IFBhY2thZ2UgUmV2aXNpb24gTnVtYmVyPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgotICAgIDwvbm90ZT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgcmVzdCBvZiB0aGlzIHNlY3Rpb24gZ29lcyBpbnRvIGRldGFpbCBhYm91dCB0aGUgb3ZlcmFsbCBpbmNyZW1lbnRhbCBidWlsZAotICAgICAgICBhcmNoaXRlY3R1cmUsIHRoZSBjaGVja3N1bXMgKHNpZ25hdHVyZXMpLCBzaGFyZWQgc3RhdGUsIGFuZCBzb21lIHRpcHMgYW5kIHRyaWNrcy4KLSAgICA8L3BhcmE+Ci0KLSAgICA8c2VjdGlvbiBpZD0nb3ZlcmFsbC1hcmNoaXRlY3R1cmUnPgotICAgICAgICA8dGl0bGU+T3ZlcmFsbCBBcmNoaXRlY3R1cmU8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgV2hlbiBkZXRlcm1pbmluZyB3aGF0IHBhcnRzIG9mIHRoZSBzeXN0ZW0gbmVlZCB0byBiZSBidWlsdCwgQml0QmFrZQotICAgICAgICAgICAgd29ya3Mgb24gYSBwZXItdGFzayBiYXNpcyByYXRoZXIgdGhhbiBhIHBlci1yZWNpcGUgYmFzaXMuCi0gICAgICAgICAgICBZb3UgbWlnaHQgd29uZGVyIHdoeSB1c2luZyBhIHBlci10YXNrIGJhc2lzIGlzIHByZWZlcnJlZCBvdmVyIGEgcGVyLXJlY2lwZSBiYXNpcy4KLSAgICAgICAgICAgIFRvIGhlbHAgZXhwbGFpbiwgY29uc2lkZXIgaGF2aW5nIHRoZSBJUEsgcGFja2FnaW5nIGJhY2tlbmQgZW5hYmxlZCBhbmQgdGhlbiBzd2l0Y2hpbmcgdG8gREVCLgotICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIHRhc2sgb3V0cHV0cyBhcmUgc3RpbGwgdmFsaWQuCi0gICAgICAgICAgICBIb3dldmVyLCB3aXRoIGEgcGVyLXJlY2lwZSBhcHByb2FjaCwgdGhlIGJ1aWxkIHdvdWxkIG5vdCBpbmNsdWRlIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPi5kZWI8L2ZpbGVuYW1lPiBmaWxlcy4KLSAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IHdvdWxkIGhhdmUgdG8gaW52YWxpZGF0ZSB0aGUgd2hvbGUgYnVpbGQgYW5kIHJlcnVuIGl0LgotICAgICAgICAgICAgUmVydW5uaW5nIGV2ZXJ5dGhpbmcgaXMgbm90IHRoZSBiZXN0IHNvbHV0aW9uLgotICAgICAgICAgICAgQWxzbywgaW4gdGhpcyBjYXNlLCB0aGUgY29yZSBtdXN0IGJlICJ0YXVnaHQiIG11Y2ggYWJvdXQgc3BlY2lmaWMgdGFza3MuCi0gICAgICAgICAgICBUaGlzIG1ldGhvZG9sb2d5IGRvZXMgbm90IHNjYWxlIHdlbGwgYW5kIGRvZXMgbm90IGFsbG93IHVzZXJzIHRvIGVhc2lseSBhZGQgbmV3IHRhc2tzCi0gICAgICAgICAgICBpbiBsYXllcnMgb3IgYXMgZXh0ZXJuYWwgcmVjaXBlcyB3aXRob3V0IHRvdWNoaW5nIHRoZSBwYWNrYWdlZC1zdGFnaW5nIGNvcmUuCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0nY2hlY2tzdW1zJz4KLSAgICAgICAgPHRpdGxlPkNoZWNrc3VtcyAoU2lnbmF0dXJlcyk8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIHNoYXJlZCBzdGF0ZSBjb2RlIHVzZXMgYSBjaGVja3N1bSwgd2hpY2ggaXMgYSB1bmlxdWUgc2lnbmF0dXJlIG9mIGEgdGFzaydzCi0gICAgICAgICAgICBpbnB1dHMsIHRvIGRldGVybWluZSBpZiBhIHRhc2sgbmVlZHMgdG8gYmUgcnVuIGFnYWluLgotICAgICAgICAgICAgQmVjYXVzZSBpdCBpcyBhIGNoYW5nZSBpbiBhIHRhc2sncyBpbnB1dHMgdGhhdCB0cmlnZ2VycyBhIHJlcnVuLCB0aGUgcHJvY2VzcwotICAgICAgICAgICAgbmVlZHMgdG8gZGV0ZWN0IGFsbCB0aGUgaW5wdXRzIHRvIGEgZ2l2ZW4gdGFzay4KLSAgICAgICAgICAgIEZvciBzaGVsbCB0YXNrcywgdGhpcyB0dXJucyBvdXQgdG8gYmUgZmFpcmx5IGVhc3kgYmVjYXVzZQotICAgICAgICAgICAgdGhlIGJ1aWxkIHByb2Nlc3MgZ2VuZXJhdGVzIGEgInJ1biIgc2hlbGwgc2NyaXB0IGZvciBlYWNoIHRhc2sgYW5kCi0gICAgICAgICAgICBpdCBpcyBwb3NzaWJsZSB0byBjcmVhdGUgYSBjaGVja3N1bSB0aGF0IGdpdmVzIHlvdSBhIGdvb2QgaWRlYSBvZiB3aGVuCi0gICAgICAgICAgICB0aGUgdGFzaydzIGRhdGEgY2hhbmdlcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVG8gY29tcGxpY2F0ZSB0aGUgcHJvYmxlbSwgdGhlcmUgYXJlIHRoaW5ncyB0aGF0IHNob3VsZCBub3QgYmUKLSAgICAgICAgICAgIGluY2x1ZGVkIGluIHRoZSBjaGVja3N1bS4KLSAgICAgICAgICAgIEZpcnN0LCB0aGVyZSBpcyB0aGUgYWN0dWFsIHNwZWNpZmljIGJ1aWxkIHBhdGggb2YgYSBnaXZlbiB0YXNrIC0KLSAgICAgICAgICAgIHRoZSA8bGluayBsaW5rZW5kPSd2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvbGluaz4uCi0gICAgICAgICAgICBJdCBkb2VzIG5vdCBtYXR0ZXIgaWYgdGhlIHdvcmsgZGlyZWN0b3J5IGNoYW5nZXMgYmVjYXVzZSBpdCBzaG91bGQKLSAgICAgICAgICAgIG5vdCBhZmZlY3QgdGhlIG91dHB1dCBmb3IgdGFyZ2V0IHBhY2thZ2VzLgotICAgICAgICAgICAgQWxzbywgdGhlIGJ1aWxkIHByb2Nlc3MgaGFzIHRoZSBvYmplY3RpdmUgb2YgbWFraW5nIG5hdGl2ZQotICAgICAgICAgICAgb3IgY3Jvc3MgcGFja2FnZXMgcmVsb2NhdGFibGUuCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBCb3RoIG5hdGl2ZSBhbmQgY3Jvc3MgcGFja2FnZXMgcnVuIG9uIHRoZSBidWlsZCBob3N0LgotICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGNyb3NzIHBhY2thZ2VzIGdlbmVyYXRlIG91dHB1dCBmb3IgdGhlIHRhcmdldAotICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZS4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIFRoZSBjaGVja3N1bSB0aGVyZWZvcmUgbmVlZHMgdG8gZXhjbHVkZQotICAgICAgICAgICAgPGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgIFRoZSBzaW1wbGlzdGljIGFwcHJvYWNoIGZvciBleGNsdWRpbmcgdGhlIHdvcmsgZGlyZWN0b3J5IGlzIHRvIHNldAotICAgICAgICAgICAgPGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPiB0byBzb21lIGZpeGVkIHZhbHVlIGFuZCBjcmVhdGUgdGhlCi0gICAgICAgICAgICBjaGVja3N1bSBmb3IgdGhlICJydW4iIHNjcmlwdC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQW5vdGhlciBwcm9ibGVtIHJlc3VsdHMgZnJvbSB0aGUgInJ1biIgc2NyaXB0cyBjb250YWluaW5nIGZ1bmN0aW9ucyB0aGF0Ci0gICAgICAgICAgICBtaWdodCBvciBtaWdodCBub3QgZ2V0IGNhbGxlZC4KLSAgICAgICAgICAgIFRoZSBpbmNyZW1lbnRhbCBidWlsZCBzb2x1dGlvbiBjb250YWlucyBjb2RlIHRoYXQgZmlndXJlcyBvdXQgZGVwZW5kZW5jaWVzCi0gICAgICAgICAgICBiZXR3ZWVuIHNoZWxsIGZ1bmN0aW9ucy4KLSAgICAgICAgICAgIFRoaXMgY29kZSBpcyB1c2VkIHRvIHBydW5lIHRoZSAicnVuIiBzY3JpcHRzIGRvd24gdG8gdGhlIG1pbmltdW0gc2V0LAotICAgICAgICAgICAgdGhlcmVieSBhbGxldmlhdGluZyB0aGlzIHByb2JsZW0gYW5kIG1ha2luZyB0aGUgInJ1biIgc2NyaXB0cyBtdWNoIG1vcmUKLSAgICAgICAgICAgIHJlYWRhYmxlIGFzIGEgYm9udXMuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFNvIGZhciB3ZSBoYXZlIHNvbHV0aW9ucyBmb3Igc2hlbGwgc2NyaXB0cy4KLSAgICAgICAgICAgIFdoYXQgYWJvdXQgUHl0aG9uIHRhc2tzPwotICAgICAgICAgICAgVGhlIHNhbWUgYXBwcm9hY2ggYXBwbGllcyBldmVuIHRob3VnaCB0aGVzZSB0YXNrcyBhcmUgbW9yZSBkaWZmaWN1bHQuCi0gICAgICAgICAgICBUaGUgcHJvY2VzcyBuZWVkcyB0byBmaWd1cmUgb3V0IHdoYXQgdmFyaWFibGVzIGEgUHl0aG9uIGZ1bmN0aW9uIGFjY2Vzc2VzCi0gICAgICAgICAgICBhbmQgd2hhdCBmdW5jdGlvbnMgaXQgY2FsbHMuCi0gICAgICAgICAgICBBZ2FpbiwgdGhlIGluY3JlbWVudGFsIGJ1aWxkIHNvbHV0aW9uIGNvbnRhaW5zIGNvZGUgdGhhdCBmaXJzdCBmaWd1cmVzIG91dAotICAgICAgICAgICAgdGhlIHZhcmlhYmxlIGFuZCBmdW5jdGlvbiBkZXBlbmRlbmNpZXMsIGFuZCB0aGVuIGNyZWF0ZXMgYSBjaGVja3N1bSBmb3IgdGhlIGRhdGEKLSAgICAgICAgICAgIHVzZWQgYXMgdGhlIGlucHV0IHRvIHRoZSB0YXNrLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBMaWtlIHRoZSA8ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+IGNhc2UsIHNpdHVhdGlvbnMgZXhpc3Qgd2hlcmUgZGVwZW5kZW5jaWVzCi0gICAgICAgICAgICBzaG91bGQgYmUgaWdub3JlZC4KLSAgICAgICAgICAgIEZvciB0aGVzZSBjYXNlcywgeW91IGNhbiBpbnN0cnVjdCB0aGUgYnVpbGQgcHJvY2VzcyB0byBpZ25vcmUgYSBkZXBlbmRlbmN5Ci0gICAgICAgICAgICBieSB1c2luZyBhIGxpbmUgbGlrZSB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBQQUNLQUdFX0FSQ0hTW3ZhcmRlcHNleGNsdWRlXSA9ICJNQUNISU5FIgotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgVGhpcyBleGFtcGxlIGVuc3VyZXMgdGhhdCB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0FSQ0hTJz48ZmlsZW5hbWU+UEFDS0FHRV9BUkNIUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgdmFyaWFibGUgZG9lcyBub3QKLSAgICAgICAgICAgIGRlcGVuZCBvbiB0aGUgdmFsdWUgb2YKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC9saW5rPiwKLSAgICAgICAgICAgIGV2ZW4gaWYgaXQgZG9lcyByZWZlcmVuY2UgaXQuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEVxdWFsbHksIHRoZXJlIGFyZSBjYXNlcyB3aGVyZSB3ZSBuZWVkIHRvIGFkZCBkZXBlbmRlbmNpZXMgQml0QmFrZSBpcyBub3QgYWJsZSB0byBmaW5kLgotICAgICAgICAgICAgWW91IGNhbiBhY2NvbXBsaXNoIHRoaXMgYnkgdXNpbmcgYSBsaW5lIGxpa2UgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgIFBBQ0tBR0VfQVJDSFNbdmFyZGVwc10gPSAiTUFDSElORSIKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIFRoaXMgZXhhbXBsZSBleHBsaWNpdGx5IGFkZHMgdGhlIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4gdmFyaWFibGUgYXMgYQotICAgICAgICAgICAgZGVwZW5kZW5jeSBmb3IgPGZpbGVuYW1lPlBBQ0tBR0VfQVJDSFM8L2ZpbGVuYW1lPi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQ29uc2lkZXIgYSBjYXNlIHdpdGggaW4tbGluZSBQeXRob24sIGZvciBleGFtcGxlLCB3aGVyZSBCaXRCYWtlIGlzIG5vdAotICAgICAgICAgICAgYWJsZSB0byBmaWd1cmUgb3V0IGRlcGVuZGVuY2llcy4KLSAgICAgICAgICAgIFdoZW4gcnVubmluZyBpbiBkZWJ1ZyBtb2RlIChpLmUuIHVzaW5nIDxmaWxlbmFtZT4tREREPC9maWxlbmFtZT4pLCBCaXRCYWtlCi0gICAgICAgICAgICBwcm9kdWNlcyBvdXRwdXQgd2hlbiBpdCBkaXNjb3ZlcnMgc29tZXRoaW5nIGZvciB3aGljaCBpdCBjYW5ub3QgZmlndXJlIG91dAotICAgICAgICAgICAgZGVwZW5kZW5jaWVzLgotICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdGVhbSBoYXMgY3VycmVudGx5IG5vdCBtYW5hZ2VkIHRvIGNvdmVyIHRob3NlIGRlcGVuZGVuY2llcwotICAgICAgICAgICAgaW4gZGV0YWlsIGFuZCBpcyBhd2FyZSBvZiB0aGUgbmVlZCB0byBmaXggdGhpcyBzaXR1YXRpb24uCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRodXMgZmFyLCB0aGlzIHNlY3Rpb24gaGFzIGxpbWl0ZWQgZGlzY3Vzc2lvbiB0byB0aGUgZGlyZWN0IGlucHV0cyBpbnRvIGEgdGFzay4KLSAgICAgICAgICAgIEluZm9ybWF0aW9uIGJhc2VkIG9uIGRpcmVjdCBpbnB1dHMgaXMgcmVmZXJyZWQgdG8gYXMgdGhlICJiYXNlaGFzaCIgaW4gdGhlCi0gICAgICAgICAgICBjb2RlLgotICAgICAgICAgICAgSG93ZXZlciwgdGhlcmUgaXMgc3RpbGwgdGhlIHF1ZXN0aW9uIG9mIGEgdGFzaydzIGluZGlyZWN0IGlucHV0cyAtIHRoZQotICAgICAgICAgICAgdGhpbmdzIHRoYXQgd2VyZSBhbHJlYWR5IGJ1aWx0IGFuZCBwcmVzZW50IGluIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgotICAgICAgICAgICAgVGhlIGNoZWNrc3VtIChvciBzaWduYXR1cmUpIGZvciBhIHBhcnRpY3VsYXIgdGFzayBuZWVkcyB0byBhZGQgdGhlIGhhc2hlcwotICAgICAgICAgICAgb2YgYWxsIHRoZSB0YXNrcyBvbiB3aGljaCB0aGUgcGFydGljdWxhciB0YXNrIGRlcGVuZHMuCi0gICAgICAgICAgICBDaG9vc2luZyB3aGljaCBkZXBlbmRlbmNpZXMgdG8gYWRkIGlzIGEgcG9saWN5IGRlY2lzaW9uLgotICAgICAgICAgICAgSG93ZXZlciwgdGhlIGVmZmVjdCBpcyB0byBnZW5lcmF0ZSBhIG1hc3RlciBjaGVja3N1bSB0aGF0IGNvbWJpbmVzIHRoZSBiYXNlaGFzaAotICAgICAgICAgICAgYW5kIHRoZSBoYXNoZXMgb2YgdGhlIHRhc2sncyBkZXBlbmRlbmNpZXMuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEF0IHRoZSBjb2RlIGxldmVsLCB0aGVyZSBhcmUgYSB2YXJpZXR5IG9mIHdheXMgYm90aCB0aGUgYmFzZWhhc2ggYW5kIHRoZQotICAgICAgICAgICAgZGVwZW5kZW50IHRhc2sgaGFzaGVzIGNhbiBiZSBpbmZsdWVuY2VkLgotICAgICAgICAgICAgV2l0aGluIHRoZSBCaXRCYWtlIGNvbmZpZ3VyYXRpb24gZmlsZSwgd2UgY2FuIGdpdmUgQml0QmFrZSBzb21lIGV4dHJhIGluZm9ybWF0aW9uCi0gICAgICAgICAgICB0byBoZWxwIGl0IGNvbnN0cnVjdCB0aGUgYmFzZWhhc2guCi0gICAgICAgICAgICBUaGUgZm9sbG93aW5nIHN0YXRlbWVudCBlZmZlY3RpdmVseSByZXN1bHRzIGluIGEgbGlzdCBvZiBnbG9iYWwgdmFyaWFibGUKLSAgICAgICAgICAgIGRlcGVuZGVuY3kgZXhjbHVkZXMgLSB2YXJpYWJsZXMgbmV2ZXIgaW5jbHVkZWQgaW4gYW55IGNoZWNrc3VtOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBCQl9IQVNIQkFTRV9XSElURUxJU1QgPz0gIlRNUERJUiBGSUxFIFBBVEggUFdEIEJCX1RBU0tIQVNIIEJCUEFUSCBETF9ESVIgXAotICAgICAgICAgU1NUQVRFX0RJUiBUSElTRElSIEZJTEVTRVhUUkFQQVRIUyBGSUxFX0RJUk5BTUUgSE9NRSBMT0dOQU1FIFNIRUxMIFRFUk0gXAotICAgICAgICAgVVNFUiBGSUxFU1BBVEggU1RBR0lOR19ESVJfSE9TVCBTVEFHSU5HX0RJUl9UQVJHRVQgQ09SRUJBU0UgUFJTRVJWX0hPU1QgXAotICAgICAgICAgUFJTRVJWX0RVTVBESVIgUFJTRVJWX0RVTVBGSUxFIFBSU0VSVl9MT0NLRE9XTiBQQVJBTExFTF9NQUtFIFwKLSAgICAgICAgIENDQUNIRV9ESVIgRVhURVJOQUxfVE9PTENIQUlOIENDQUNIRSBDQ0FDSEVfRElTQUJMRSBMSUNFTlNFX1BBVEggU0RLUEtHU1VGRklYIgotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgVGhlIHByZXZpb3VzIGV4YW1wbGUgZXhjbHVkZXMKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgc2luY2UgdGhhdCB2YXJpYWJsZSBpcyBhY3R1YWxseSBjb25zdHJ1Y3RlZCBhcyBhIHBhdGggd2l0aGluCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L2xpbms+LCB3aGljaCBpcyBvbgotICAgICAgICAgICAgdGhlIHdoaXRlbGlzdC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIHJ1bGVzIGZvciBkZWNpZGluZyB3aGljaCBoYXNoZXMgb2YgZGVwZW5kZW50IHRhc2tzIHRvIGluY2x1ZGUgdGhyb3VnaAotICAgICAgICAgICAgZGVwZW5kZW5jeSBjaGFpbnMgYXJlIG1vcmUgY29tcGxleCBhbmQgYXJlIGdlbmVyYWxseSBhY2NvbXBsaXNoZWQgd2l0aCBhCi0gICAgICAgICAgICBQeXRob24gZnVuY3Rpb24uCi0gICAgICAgICAgICBUaGUgY29kZSBpbiA8ZmlsZW5hbWU+bWV0YS9saWIvb2Uvc3N0YXRlc2lnLnB5PC9maWxlbmFtZT4gc2hvd3MgdHdvIGV4YW1wbGVzCi0gICAgICAgICAgICBvZiB0aGlzIGFuZCBhbHNvIGlsbHVzdHJhdGVzIGhvdyB5b3UgY2FuIGluc2VydCB5b3VyIG93biBwb2xpY3kgaW50byB0aGUgc3lzdGVtCi0gICAgICAgICAgICBpZiBzbyBkZXNpcmVkLgotICAgICAgICAgICAgVGhpcyBmaWxlIGRlZmluZXMgdGhlIHR3byBiYXNpYyBzaWduYXR1cmUgZ2VuZXJhdG9ycwotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nb2UtY29yZSc+T0UtQ29yZTwvbGluaz4gdXNlczogICJPRUJhc2ljIiBhbmQKLSAgICAgICAgICAgICJPRUJhc2ljSGFzaCIuCi0gICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGVyZSBpcyBhIGR1bW15ICJub29wIiBzaWduYXR1cmUgaGFuZGxlciBlbmFibGVkIGluIEJpdEJha2UuCi0gICAgICAgICAgICBUaGlzIG1lYW5zIHRoYXQgYmVoYXZpb3IgaXMgdW5jaGFuZ2VkIGZyb20gcHJldmlvdXMgdmVyc2lvbnMuCi0gICAgICAgICAgICBPRS1Db3JlIHVzZXMgdGhlICJPRUJhc2ljSGFzaCIgc2lnbmF0dXJlIGhhbmRsZXIgYnkgZGVmYXVsdAotICAgICAgICAgICAgdGhyb3VnaCB0aGlzIHNldHRpbmcgaW4gdGhlIDxmaWxlbmFtZT5iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBCQl9TSUdOQVRVUkVfSEFORExFUiA/PSAiT0VCYXNpY0hhc2giCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBUaGUgIk9FQmFzaWNIYXNoIiA8ZmlsZW5hbWU+QkJfU0lHTkFUVVJFX0hBTkRMRVI8L2ZpbGVuYW1lPiBpcyB0aGUgc2FtZSBhcyB0aGUKLSAgICAgICAgICAgICJPRUJhc2ljIiB2ZXJzaW9uIGJ1dCBhZGRzIHRoZSB0YXNrIGhhc2ggdG8gdGhlIHN0YW1wIGZpbGVzLgotICAgICAgICAgICAgVGhpcyByZXN1bHRzIGluIGFueQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPgotICAgICAgICAgICAgY2hhbmdlIHRoYXQgY2hhbmdlcyB0aGUgdGFzayBoYXNoLCBhdXRvbWF0aWNhbGx5Ci0gICAgICAgICAgICBjYXVzaW5nIHRoZSB0YXNrIHRvIGJlIHJ1biBhZ2Fpbi4KLSAgICAgICAgICAgIFRoaXMgcmVtb3ZlcyB0aGUgbmVlZCB0byBidW1wIDxsaW5rIGxpbmtlbmQ9J3Zhci1QUic+PGZpbGVuYW1lPlBSPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICB2YWx1ZXMsIGFuZCBjaGFuZ2VzIHRvIE1ldGFkYXRhIGF1dG9tYXRpY2FsbHkgcmlwcGxlIGFjcm9zcyB0aGUgYnVpbGQuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEl0IGlzIGFsc28gd29ydGggbm90aW5nIHRoYXQgdGhlIGVuZCByZXN1bHQgb2YgdGhlc2Ugc2lnbmF0dXJlIGdlbmVyYXRvcnMgaXMgdG8KLSAgICAgICAgICAgIG1ha2Ugc29tZSBkZXBlbmRlbmN5IGFuZCBoYXNoIGluZm9ybWF0aW9uIGF2YWlsYWJsZSB0byB0aGUgYnVpbGQuCi0gICAgICAgICAgICBUaGlzIGluZm9ybWF0aW9uIGluY2x1ZGVzOgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPkJCX0JBU0VIQVNIX3Rhc2stPC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPjoKLSAgICAgICAgICAgICAgICAgICAgVGhlIGJhc2UgaGFzaGVzIGZvciBlYWNoIHRhc2sgaW4gdGhlIHJlY2lwZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5CQl9CQVNFSEFTSF88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5maWxlbmFtZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPjo8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT50YXNrbmFtZTwvcmVwbGFjZWFibGU+OgotICAgICAgICAgICAgICAgICAgICBUaGUgYmFzZSBoYXNoZXMgZm9yIGVhY2ggZGVwZW5kZW50IHRhc2suCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+QkJIQVNIREVQU188L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5maWxlbmFtZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPjo8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT50YXNrbmFtZTwvcmVwbGFjZWFibGU+OgotICAgICAgICAgICAgICAgICAgICBUaGUgdGFzayBkZXBlbmRlbmNpZXMgZm9yIGVhY2ggdGFzay4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5CQl9UQVNLSEFTSDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBUaGUgaGFzaCBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGFzay4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdzaGFyZWQtc3RhdGUnPgotICAgICAgICA8dGl0bGU+U2hhcmVkIFN0YXRlPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIENoZWNrc3VtcyBhbmQgZGVwZW5kZW5jaWVzLCBhcyBkaXNjdXNzZWQgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24sIHNvbHZlIGhhbGYgdGhlCi0gICAgICAgICAgICBwcm9ibGVtIG9mIHN1cHBvcnRpbmcgYSBzaGFyZWQgc3RhdGUuCi0gICAgICAgICAgICBUaGUgb3RoZXIgcGFydCBvZiB0aGUgcHJvYmxlbSBpcyBiZWluZyBhYmxlIHRvIHVzZSBjaGVja3N1bSBpbmZvcm1hdGlvbiBkdXJpbmcgdGhlIGJ1aWxkCi0gICAgICAgICAgICBhbmQgYmVpbmcgYWJsZSB0byByZXVzZSBvciByZWJ1aWxkIHNwZWNpZmljIGNvbXBvbmVudHMuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtc3N0YXRlJz48ZmlsZW5hbWU+c3N0YXRlPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICBjbGFzcyBpcyBhIHJlbGF0aXZlbHkgZ2VuZXJpYyBpbXBsZW1lbnRhdGlvbiBvZiBob3cgdG8gImNhcHR1cmUiCi0gICAgICAgICAgICBhIHNuYXBzaG90IG9mIGEgZ2l2ZW4gdGFzay4KLSAgICAgICAgICAgIFRoZSBpZGVhIGlzIHRoYXQgdGhlIGJ1aWxkIHByb2Nlc3MgZG9lcyBub3QgY2FyZSBhYm91dCB0aGUgc291cmNlIG9mIGEgdGFzaydzIG91dHB1dC4KLSAgICAgICAgICAgIE91dHB1dCBjb3VsZCBiZSBmcmVzaGx5IGJ1aWx0IG9yIGl0IGNvdWxkIGJlIGRvd25sb2FkZWQgYW5kIHVucGFja2VkIGZyb20KLSAgICAgICAgICAgIHNvbWV3aGVyZSAtIHRoZSBidWlsZCBwcm9jZXNzIGRvZXMgbm90IG5lZWQgdG8gd29ycnkgYWJvdXQgaXRzIG9yaWdpbi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBvdXRwdXQsIG9uZSBpcyBqdXN0IGFib3V0IGNyZWF0aW5nIGEgZGlyZWN0b3J5Ci0gICAgICAgICAgICBpbiA8bGluayBsaW5rZW5kPSd2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvbGluaz4uCi0gICAgICAgICAgICBBIGdvb2QgZXhhbXBsZSBpcyB0aGUgb3V0cHV0IG9mIGVpdGhlcgotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWluc3RhbGwnPjxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICBvcgotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2UnPjxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT48L2xpbms+LgotICAgICAgICAgICAgVGhlIG90aGVyIHR5cGUgb2Ygb3V0cHV0IG9jY3VycyB3aGVuIGEgc2V0IG9mIGRhdGEgaXMgbWVyZ2VkIGludG8gYSBzaGFyZWQgZGlyZWN0b3J5Ci0gICAgICAgICAgICB0cmVlIHN1Y2ggYXMgdGhlIHN5c3Jvb3QuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHRlYW0gaGFzIHRyaWVkIHRvIGtlZXAgdGhlIGRldGFpbHMgb2YgdGhlCi0gICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiBoaWRkZW4gaW4gPGZpbGVuYW1lPnNzdGF0ZTwvZmlsZW5hbWU+IGNsYXNzLgotICAgICAgICAgICAgRnJvbSBhIHVzZXIncyBwZXJzcGVjdGl2ZSwgYWRkaW5nIHNoYXJlZCBzdGF0ZSB3cmFwcGluZyB0byBhIHRhc2sKLSAgICAgICAgICAgIGlzIGFzIHNpbXBsZSBhcyB0aGlzCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtZGVwbG95Jz48ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICBleGFtcGxlIHRha2VuIGZyb20gdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1kZXBsb3knPjxmaWxlbmFtZT5kZXBsb3k8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIGNsYXNzOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBERVBMT1lESVIgPSAiJHtXT1JLRElSfS9kZXBsb3ktJHtQTn0iCi0gICAgIFNTVEFURVRBU0tTICs9ICJkb19kZXBsb3kiCi0gICAgIGRvX2RlcGxveVtzc3RhdGUtaW5wdXRkaXJzXSA9ICIke0RFUExPWURJUn0iCi0gICAgIGRvX2RlcGxveVtzc3RhdGUtb3V0cHV0ZGlyc10gPSAiJHtERVBMT1lfRElSX0lNQUdFfSIKLQotICAgICBweXRob24gZG9fZGVwbG95X3NldHNjZW5lICgpIHsKLSAgICAgICAgIHNzdGF0ZV9zZXRzY2VuZShkKQotICAgICB9Ci0gICAgIGFkZHRhc2sgZG9fZGVwbG95X3NldHNjZW5lCi0gICAgIGRvX2RlcGxveVtkaXJzXSA9ICIke0RFUExPWURJUn0gJHtCfSIKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBleHBsYWlucyB0aGUgcHJldmlvdXMgZXhhbXBsZToKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBBZGRpbmcgImRvX2RlcGxveSIgdG8gPGZpbGVuYW1lPlNTVEFURVRBU0tTPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgYWRkcyBzb21lIHJlcXVpcmVkIHNzdGF0ZS1yZWxhdGVkIHByb2Nlc3NpbmcsIHdoaWNoIGlzCi0gICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1zc3RhdGUnPjxmaWxlbmFtZT5zc3RhdGU8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHRvIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1kZXBsb3knPjxmaWxlbmFtZT5kb19kZXBsb3k8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgdGFzay4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2RlcGxveVtzc3RhdGUtaW5wdXRkaXJzXSA9ICIke0RFUExPWURJUn0iPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgZGVjbGFyZXMgdGhhdCA8ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT4gcGxhY2VzIGl0cwotICAgICAgICAgICAgICAgICAgICBvdXRwdXQgaW4gPGZpbGVuYW1lPiR7REVQTE9ZRElSfTwvZmlsZW5hbWU+IHdoZW4gcnVuCi0gICAgICAgICAgICAgICAgICAgIG5vcm1hbGx5IChpLmUuIHdoZW4gbm90IHVzaW5nIHRoZSBzc3RhdGUgY2FjaGUpLgotICAgICAgICAgICAgICAgICAgICBUaGlzIG91dHB1dCBiZWNvbWVzIHRoZSBpbnB1dCB0byB0aGUgc2hhcmVkIHN0YXRlIGNhY2hlLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fZGVwbG95W3NzdGF0ZS1vdXRwdXRkaXJzXSA9ICIke0RFUExPWV9ESVJfSU1BR0V9IjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUgY2F1c2VzIHRoZSBjb250ZW50cyBvZiB0aGUgc2hhcmVkIHN0YXRlIGNhY2hlIHRvIGJlCi0gICAgICAgICAgICAgICAgICAgIGNvcGllZCB0byA8ZmlsZW5hbWU+JHtERVBMT1lfRElSX0lNQUdFfTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIDxmaWxlbmFtZT5kb19kZXBsb3k8L2ZpbGVuYW1lPiBpcyBub3QgYWxyZWFkeSBpbgotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNoYXJlZCBzdGF0ZSBjYWNoZSBvciBpZiBpdHMgaW5wdXQgY2hlY2tzdW0KLSAgICAgICAgICAgICAgICAgICAgICAgIChzaWduYXR1cmUpIGhhcyBjaGFuZ2VkIGZyb20gd2hlbiB0aGUgb3V0cHV0IHdhcwotICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkLCB0aGUgdGFzayB3aWxsIGJlIHJ1biB0byBwb3B1bGF0ZSB0aGUgc2hhcmVkCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSBjYWNoZSwgYWZ0ZXIgd2hpY2ggdGhlIGNvbnRlbnRzIG9mIHRoZSBzaGFyZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlIGNhY2hlIGlzIGNvcGllZCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7REVQTE9ZX0RJUl9JTUFHRX08L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIDxmaWxlbmFtZT5kb19kZXBsb3k8L2ZpbGVuYW1lPiBpcyBpbiB0aGUgc2hhcmVkCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSBjYWNoZSBhbmQgaXRzIHNpZ25hdHVyZSBpbmRpY2F0ZXMgdGhhdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlZCBvdXRwdXQgaXMgc3RpbGwgdmFsaWQgKGkuZS4gaWYgbm8KLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbGV2YW50IHRhc2sgaW5wdXRzIGhhdmUgY2hhbmdlZCksIHRoZW4gdGhlIGNvbnRlbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgc2hhcmVkIHN0YXRlIGNhY2hlIHdpbGwgYmUgY29waWVkIGRpcmVjdGx5IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtERVBMT1lfRElSX0lNQUdFfTwvZmlsZW5hbWU+IGJ5IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2RlcGxveV9zZXRzY2VuZTwvZmlsZW5hbWU+IHRhc2sgaW5zdGVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNraXBwaW5nIHRoZSA8ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT4gdGFzay4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgdGFzayBkZWZpbml0aW9uIGlzIGdsdWUgbG9naWMgbmVlZGVkIHRvIG1ha2UKLSAgICAgICAgICAgICAgICAgICAgdGhlIHByZXZpb3VzIHNldHRpbmdzIGVmZmVjdGl2ZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBweXRob24gZG9fZGVwbG95X3NldHNjZW5lICgpIHsKLSAgICAgICAgIHNzdGF0ZV9zZXRzY2VuZShkKQotICAgICB9Ci0gICAgIGFkZHRhc2sgZG9fZGVwbG95X3NldHNjZW5lCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNzdGF0ZV9zZXRzY2VuZSgpPC9maWxlbmFtZT4gdGFrZXMgdGhlIGZsYWdzCi0gICAgICAgICAgICAgICAgICAgIGFib3ZlIGFzIGlucHV0IGFuZCBhY2NlbGVyYXRlcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2RlcGxveTwvZmlsZW5hbWU+IHRhc2sgdGhyb3VnaCB0aGUKLSAgICAgICAgICAgICAgICAgICAgc2hhcmVkIHN0YXRlIGNhY2hlIGlmIHBvc3NpYmxlLgotICAgICAgICAgICAgICAgICAgICBJZiB0aGUgdGFzayB3YXMgYWNjZWxlcmF0ZWQsCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc3RhdGVfc2V0c2NlbmUoKTwvZmlsZW5hbWU+IHJldHVybnMgVHJ1ZS4KLSAgICAgICAgICAgICAgICAgICAgT3RoZXJ3aXNlLCBpdCByZXR1cm5zIEZhbHNlLCBhbmQgdGhlIG5vcm1hbAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT4gdGFzayBydW5zLgotICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNzZXRzY2VuZSc+c2V0c2NlbmU8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRvX2RlcGxveVtkaXJzXSA9ICIke0RFUExPWURJUn0gJHtCfSI8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBsaW5lIGNyZWF0ZXMgPGZpbGVuYW1lPiR7REVQTE9ZRElSfTwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtCfTwvZmlsZW5hbWU+IGJlZm9yZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2RlcGxveTwvZmlsZW5hbWU+IHRhc2sgcnVucywgYW5kIGFsc28gc2V0cwotICAgICAgICAgICAgICAgICAgICB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBvZgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fZGVwbG95PC9maWxlbmFtZT4gdG8KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7Qn08L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyaWFibGUtZmxhZ3MnPlZhcmlhYmxlIEZsYWdzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIEJpdEJha2UgVXNlciBNYW51YWwuCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgSW4gY2FzZXMgd2hlcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc3RhdGUtaW5wdXRkaXJzPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3N0YXRlLW91dHB1dGRpcnM8L2ZpbGVuYW1lPiB3b3VsZCBiZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHNhbWUsIHlvdSBjYW4gdXNlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3N0YXRlLXBsYWluZGlyczwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRvIHByZXNlcnZlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7UEtHRH08L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ke1BLR0RFU1R9PC9maWxlbmFtZT4gb3V0cHV0IGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRhc2ssIHVzZSB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBkb19wYWNrYWdlW3NzdGF0ZS1wbGFpbmRpcnNdID0gIiR7UEtHRH0gJHtQS0dERVNUfSIKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3N0YXRlLWlucHV0ZGlyczwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNzdGF0ZS1vdXRwdXRkaXJzPC9maWxlbmFtZT4gY2FuIGFsc28gYmUgdXNlZAotICAgICAgICAgICAgICAgICAgICAgd2l0aCBtdWx0aXBsZSBkaXJlY3Rvcmllcy4KLSAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGRlY2xhcmVzCi0gICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEtHREVTVFdPUks8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TSExJQldPUks8L2ZpbGVuYW1lPiBhcyBzaGFyZWQgc3RhdGUKLSAgICAgICAgICAgICAgICAgICAgIGlucHV0IGRpcmVjdG9yaWVzLCB3aGljaCBwb3B1bGF0ZXMgdGhlIHNoYXJlZCBzdGF0ZQotICAgICAgICAgICAgICAgICAgICAgY2FjaGUsIGFuZCA8ZmlsZW5hbWU+UEtHREFUQV9ESVI8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TSExJQlNESVI8L2ZpbGVuYW1lPiBhcyB0aGUgY29ycmVzcG9uZGluZwotICAgICAgICAgICAgICAgICAgICAgc2hhcmVkIHN0YXRlIG91dHB1dCBkaXJlY3RvcmllczoKLSAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgZG9fcGFja2FnZVtzc3RhdGUtaW5wdXRkaXJzXSA9ICIke1BLR0RFU1RXT1JLfSAke1NITElCU1dPUktESVJ9IgotICAgICBkb19wYWNrYWdlW3NzdGF0ZS1vdXRwdXRkaXJzXSA9ICIke1BLR0RBVEFfRElSfSAke1NITElCU0RJUn0iCi0gICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgVGhlc2UgbWV0aG9kcyBhbHNvIGluY2x1ZGUgdGhlIGFiaWxpdHkgdG8gdGFrZSBhIGxvY2tmaWxlCi0gICAgICAgICAgICAgICAgICAgICB3aGVuIG1hbmlwdWxhdGluZyBzaGFyZWQgc3RhdGUgZGlyZWN0b3J5IHN0cnVjdHVyZXMsCi0gICAgICAgICAgICAgICAgICAgICBmb3IgY2FzZXMgd2hlcmUgZmlsZSBhZGRpdGlvbnMgb3IgcmVtb3ZhbHMgYXJlIHNlbnNpdGl2ZToKLSAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgZG9fcGFja2FnZVtzc3RhdGUtbG9ja2ZpbGVdID0gIiR7UEFDS0FHRUxPQ0t9IgotICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotCi08IS0tCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB3ZSBhZGQgc29tZSBleHRyYSBmbGFncyB0byB0aGUgdGFzaywgYSBuYW1lIGZpZWxkICgiZGVwbG95IiksIGFuCi0gICAgICAgICAgICBpbnB1dCBkaXJlY3Rvcnkgd2hlcmUgdGhlIHRhc2sgc2VuZHMgZGF0YSwgYW5kIHRoZSBvdXRwdXQKLSAgICAgICAgICAgIGRpcmVjdG9yeSB3aGVyZSB0aGUgZGF0YSBmcm9tIHRoZSB0YXNrIHNob3VsZCBldmVudHVhbGx5IGJlIGNvcGllZC4KLSAgICAgICAgICAgIFdlIGFsc28gYWRkIGEgPGZpbGVuYW1lPl9zZXRzY2VuZTwvZmlsZW5hbWU+IHZhcmlhbnQgb2YgdGhlIHRhc2sgYW5kIGFkZCB0aGUgdGFzawotICAgICAgICAgICAgbmFtZSB0byB0aGUgPGZpbGVuYW1lPlNTVEFURVRBU0tTPC9maWxlbmFtZT4gbGlzdC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSWYgeW91IGhhdmUgYSBkaXJlY3Rvcnkgd2hvc2UgY29udGVudHMgeW91IG5lZWQgdG8gcHJlc2VydmUsIHlvdSBjYW4gZG8gdGhpcyB3aXRoCi0gICAgICAgICAgICBhIGxpbmUgbGlrZSB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBkb19wYWNrYWdlW3NzdGF0ZS1wbGFpbmRpcnNdID0gIiR7UEtHRH0gJHtQS0dERVNUfSIKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIFRoaXMgbWV0aG9kLCBhcyB3ZWxsIGFzIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgYWxzbyB3b3JrcyBmb3IgbXVsdGlwbGUgZGlyZWN0b3JpZXMuCi0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIGRvX3BhY2thZ2Vbc3N0YXRlLWlucHV0ZGlyc10gPSAiJHtQS0dERVNUV09SS30gJHtTSExJQlNXT1JLRElSfSIKLSAgICAgZG9fcGFja2FnZVtzc3RhdGUtb3V0cHV0ZGlyc10gPSAiJHtQS0dEQVRBX0RJUn0gJHtTSExJQlNESVJ9IgotICAgICBkb19wYWNrYWdlW3NzdGF0ZS1sb2NrZmlsZV0gPSAiJHtQQUNLQUdFTE9DS30iCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBUaGVzZSBtZXRob2RzIGFsc28gaW5jbHVkZSB0aGUgYWJpbGl0eSB0byB0YWtlIGEgbG9ja2ZpbGUgd2hlbiBtYW5pcHVsYXRpbmcKLSAgICAgICAgICAgIHNoYXJlZCBzdGF0ZSBkaXJlY3Rvcnkgc3RydWN0dXJlcyBzaW5jZSBzb21lIGNhc2VzIGFyZSBzZW5zaXRpdmUgdG8gZmlsZQotICAgICAgICAgICAgYWRkaXRpb25zIG9yIHJlbW92YWxzLgotICAgICAgICA8L3BhcmE+Ci0tLT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEJlaGluZCB0aGUgc2NlbmVzLCB0aGUgc2hhcmVkIHN0YXRlIGNvZGUgd29ya3MgYnkgbG9va2luZyBpbgotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNTVEFURV9ESVInPjxmaWxlbmFtZT5TU1RBVEVfRElSPC9maWxlbmFtZT48L2xpbms+IGFuZAotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNTVEFURV9NSVJST1JTJz48ZmlsZW5hbWU+U1NUQVRFX01JUlJPUlM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIGZvciBzaGFyZWQgc3RhdGUgZmlsZXMuCi0gICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFNTVEFURV9NSVJST1JTID89ICJcCi0gICAgIGZpbGU6Ly8uKiBodHRwOi8vc29tZXNlcnZlci50bGQvc2hhcmUvc3N0YXRlL1BBVEg7ZG93bmxvYWRmaWxlbmFtZT1QQVRIIFxuIFwKLSAgICAgZmlsZTovLy4qIGZpbGU6Ly8vc29tZS9sb2NhbC9kaXIvc3N0YXRlL1BBVEgiCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBUaGUgc2hhcmVkIHN0YXRlIGRpcmVjdG9yeSAoPGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPikgaXMKLSAgICAgICAgICAgICAgICBvcmdhbml6ZWQgaW50byB0d28tY2hhcmFjdGVyIHN1YmRpcmVjdG9yaWVzLCB3aGVyZSB0aGUgc3ViZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgbmFtZXMgYXJlIGJhc2VkIG9uIHRoZSBmaXJzdCB0d28gY2hhcmFjdGVycyBvZiB0aGUgaGFzaC4KLSAgICAgICAgICAgICAgICBJZiB0aGUgc2hhcmVkIHN0YXRlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGEgbWlycm9yIGhhcyB0aGUKLSAgICAgICAgICAgICAgICBzYW1lIHN0cnVjdHVyZSBhcyA8ZmlsZW5hbWU+U1NUQVRFX0RJUjwvZmlsZW5hbWU+LCB5b3UgbXVzdAotICAgICAgICAgICAgICAgIHNwZWNpZnkgIlBBVEgiIGFzIHBhcnQgb2YgdGhlIFVSSSB0byBlbmFibGUgdGhlIGJ1aWxkIHN5c3RlbQotICAgICAgICAgICAgICAgIHRvIG1hcCB0byB0aGUgYXBwcm9wcmlhdGUgc3ViZGlyZWN0b3J5LgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgc2hhcmVkIHN0YXRlIHBhY2thZ2UgdmFsaWRpdHkgY2FuIGJlIGRldGVjdGVkIGp1c3QgYnkgbG9va2luZyBhdCB0aGUKLSAgICAgICAgICAgIGZpbGVuYW1lIHNpbmNlIHRoZSBmaWxlbmFtZSBjb250YWlucyB0aGUgdGFzayBjaGVja3N1bSAob3Igc2lnbmF0dXJlKSBhcwotICAgICAgICAgICAgZGVzY3JpYmVkIGVhcmxpZXIgaW4gdGhpcyBzZWN0aW9uLgotICAgICAgICAgICAgSWYgYSB2YWxpZCBzaGFyZWQgc3RhdGUgcGFja2FnZSBpcyBmb3VuZCwgdGhlIGJ1aWxkIHByb2Nlc3MgZG93bmxvYWRzIGl0Ci0gICAgICAgICAgICBhbmQgdXNlcyBpdCB0byBhY2NlbGVyYXRlIHRoZSB0YXNrLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgYnVpbGQgcHJvY2Vzc2VzIHVzZSB0aGUgPGZpbGVuYW1lPipfc2V0c2NlbmU8L2ZpbGVuYW1lPiB0YXNrcwotICAgICAgICAgICAgZm9yIHRoZSB0YXNrIGFjY2VsZXJhdGlvbiBwaGFzZS4KLSAgICAgICAgICAgIEJpdEJha2UgZ29lcyB0aHJvdWdoIHRoaXMgcGhhc2UgYmVmb3JlIHRoZSBtYWluIGV4ZWN1dGlvbiBjb2RlIGFuZCB0cmllcwotICAgICAgICAgICAgdG8gYWNjZWxlcmF0ZSBhbnkgdGFza3MgZm9yIHdoaWNoIGl0IGNhbiBmaW5kIHNoYXJlZCBzdGF0ZSBwYWNrYWdlcy4KLSAgICAgICAgICAgIElmIGEgc2hhcmVkIHN0YXRlIHBhY2thZ2UgZm9yIGEgdGFzayBpcyBhdmFpbGFibGUsIHRoZSBzaGFyZWQgc3RhdGUKLSAgICAgICAgICAgIHBhY2thZ2UgaXMgdXNlZC4KLSAgICAgICAgICAgIFRoaXMgbWVhbnMgdGhlIHRhc2sgYW5kIGFueSB0YXNrcyBvbiB3aGljaCBpdCBpcyBkZXBlbmRlbnQgYXJlIG5vdAotICAgICAgICAgICAgZXhlY3V0ZWQuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEFzIGEgcmVhbCB3b3JsZCBleGFtcGxlLCB0aGUgYWltIGlzIHdoZW4gYnVpbGRpbmcgYW4gSVBLLWJhc2VkIGltYWdlLAotICAgICAgICAgICAgb25seSB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlX3dyaXRlX2lwayc+PGZpbGVuYW1lPmRvX3BhY2thZ2Vfd3JpdGVfaXBrPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICB0YXNrcyB3b3VsZCBoYXZlIHRoZWlyCi0gICAgICAgICAgICBzaGFyZWQgc3RhdGUgcGFja2FnZXMgZmV0Y2hlZCBhbmQgZXh0cmFjdGVkLgotICAgICAgICAgICAgU2luY2UgdGhlIHN5c3Jvb3QgaXMgbm90IHVzZWQsIGl0IHdvdWxkIG5ldmVyIGdldCBleHRyYWN0ZWQuCi0gICAgICAgICAgICBUaGlzIGlzIGFub3RoZXIgcmVhc29uIHdoeSBhIHRhc2stYmFzZWQgYXBwcm9hY2ggaXMgcHJlZmVycmVkIG92ZXIgYQotICAgICAgICAgICAgcmVjaXBlLWJhc2VkIGFwcHJvYWNoLCB3aGljaCB3b3VsZCBoYXZlIHRvIGluc3RhbGwgdGhlIG91dHB1dCBmcm9tIGV2ZXJ5IHRhc2suCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0ndGlwcy1hbmQtdHJpY2tzJz4KLSAgICAgICAgPHRpdGxlPlRpcHMgYW5kIFRyaWNrczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgY29kZSBpbiB0aGUgYnVpbGQgc3lzdGVtIHRoYXQgc3VwcG9ydHMgaW5jcmVtZW50YWwgYnVpbGRzIGlzIG5vdAotICAgICAgICAgICAgc2ltcGxlIGNvZGUuCi0gICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJlc2VudHMgc29tZSB0aXBzIGFuZCB0cmlja3MgdGhhdCBoZWxwIHlvdSB3b3JrIGFyb3VuZAotICAgICAgICAgICAgaXNzdWVzIHJlbGF0ZWQgdG8gc2hhcmVkIHN0YXRlIGNvZGUuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nZGVidWdnaW5nJz4KLSAgICAgICAgICAgIDx0aXRsZT5EZWJ1Z2dpbmc8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBTZWVpbmcgd2hhdCBtZXRhZGF0YSB3ZW50IGludG8gY3JlYXRpbmcgdGhlIGlucHV0IHNpZ25hdHVyZQotICAgICAgICAgICAgICAgIG9mIGEgc2hhcmVkIHN0YXRlIChzc3RhdGUpIHRhc2sgY2FuIGJlIGEgdXNlZnVsIGRlYnVnZ2luZyBhaWQuCi0gICAgICAgICAgICAgICAgVGhpcyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgaW4gc2lnbmF0dXJlIGluZm9ybWF0aW9uCi0gICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5zaWdpbmZvPC9maWxlbmFtZT4pIGZpbGVzIGluCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNTVEFURV9ESVInPjxmaWxlbmFtZT5TU1RBVEVfRElSPC9maWxlbmFtZT48L2xpbms+LgotICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdmlldyBhbmQgaW50ZXJwcmV0IGluZm9ybWF0aW9uIGluCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNpZ2luZm88L2ZpbGVuYW1lPiBmaWxlcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1c2luZ3Bva3ktdmlld2luZy10YXNrLXZhcmlhYmxlLWRlcGVuZGVuY2llcyc+Vmlld2luZyBUYXNrIFZhcmlhYmxlIERlcGVuZGVuY2llczwvbGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdpbnZhbGlkYXRpbmctc2hhcmVkLXN0YXRlJz4KLSAgICAgICAgICAgIDx0aXRsZT5JbnZhbGlkYXRpbmcgU2hhcmVkIFN0YXRlPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyBjaGVja3N1bXMgYW5kIHNoYXJlZCBzdGF0ZQotICAgICAgICAgICAgICAgIGNhY2hlIHRvIGF2b2lkIHVubmVjZXNzYXJpbHkgcmVidWlsZGluZyB0YXNrcy4KLSAgICAgICAgICAgICAgICBDb2xsZWN0aXZlbHksIHRoaXMgc2NoZW1lIGlzIGtub3duIGFzICJzaGFyZWQgc3RhdGUgY29kZS4iCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEFzIHdpdGggYWxsIHNjaGVtZXMsIHRoaXMgb25lIGhhcyBzb21lIGRyYXdiYWNrcy4KLSAgICAgICAgICAgICAgICBJdCBpcyBwb3NzaWJsZSB0aGF0IHlvdSBjb3VsZCBtYWtlIGltcGxpY2l0IGNoYW5nZXMgdG8geW91cgotICAgICAgICAgICAgICAgIGNvZGUgdGhhdCB0aGUgY2hlY2tzdW0gY2FsY3VsYXRpb25zIGRvIG5vdCB0YWtlIGludG8KLSAgICAgICAgICAgICAgICBhY2NvdW50LgotICAgICAgICAgICAgICAgIFRoZXNlIGltcGxpY2l0IGNoYW5nZXMgYWZmZWN0IGEgdGFzaydzIG91dHB1dCBidXQgZG8gbm90IHRyaWdnZXIKLSAgICAgICAgICAgICAgICB0aGUgc2hhcmVkIHN0YXRlIGNvZGUgaW50byByZWJ1aWxkaW5nIGEgcmVjaXBlLgotICAgICAgICAgICAgICAgIENvbnNpZGVyIGFuIGV4YW1wbGUgZHVyaW5nIHdoaWNoIGEgdG9vbCBjaGFuZ2VzIGl0cyBvdXRwdXQuCi0gICAgICAgICAgICAgICAgQXNzdW1lIHRoYXQgdGhlIG91dHB1dCBvZiA8ZmlsZW5hbWU+cnBtZGVwczwvZmlsZW5hbWU+IGNoYW5nZXMuCi0gICAgICAgICAgICAgICAgVGhlIHJlc3VsdCBvZiB0aGUgY2hhbmdlIHNob3VsZCBiZSB0aGF0IGFsbCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZTwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlX3dyaXRlX3JwbTwvZmlsZW5hbWU+IHNoYXJlZCBzdGF0ZSBjYWNoZQotICAgICAgICAgICAgICAgIGl0ZW1zIGJlY29tZSBpbnZhbGlkLgotICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGJlY2F1c2UgdGhlIGNoYW5nZSB0byB0aGUgb3V0cHV0IGlzCi0gICAgICAgICAgICAgICAgZXh0ZXJuYWwgdG8gdGhlIGNvZGUgYW5kIHRoZXJlZm9yZSBpbXBsaWNpdCwKLSAgICAgICAgICAgICAgICB0aGUgYXNzb2NpYXRlZCBzaGFyZWQgc3RhdGUgY2FjaGUgaXRlbXMgZG8gbm90IGJlY29tZQotICAgICAgICAgICAgICAgIGludmFsaWRhdGVkLgotICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIGJ1aWxkIHByb2Nlc3MgdXNlcyB0aGUgY2FjaGVkIGl0ZW1zIHJhdGhlcgotICAgICAgICAgICAgICAgIHRoYW4gcnVubmluZyB0aGUgdGFzayBhZ2Fpbi4KLSAgICAgICAgICAgICAgICBPYnZpb3VzbHksIHRoZXNlIHR5cGVzIG9mIGltcGxpY2l0IGNoYW5nZXMgY2FuIGNhdXNlIHByb2JsZW1zLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUbyBhdm9pZCB0aGVzZSBwcm9ibGVtcyBkdXJpbmcgdGhlIGJ1aWxkLCB5b3UgbmVlZCB0bwotICAgICAgICAgICAgICAgIHVuZGVyc3RhbmQgdGhlIGVmZmVjdHMgb2YgYW55IGNoYW5nZXMgeW91IG1ha2UuCi0gICAgICAgICAgICAgICAgUmVhbGl6ZSB0aGF0IGNoYW5nZXMgeW91IG1ha2UgZGlyZWN0bHkgdG8gYSBmdW5jdGlvbgotICAgICAgICAgICAgICAgIGFyZSBhdXRvbWF0aWNhbGx5IGZhY3RvcmVkIGludG8gdGhlIGNoZWNrc3VtIGNhbGN1bGF0aW9uLgotICAgICAgICAgICAgICAgIFRodXMsIHRoZXNlIGV4cGxpY2l0IGNoYW5nZXMgaW52YWxpZGF0ZSB0aGUgYXNzb2NpYXRlZCBhcmVhIG9mCi0gICAgICAgICAgICAgICAgc2hhcmVkIHN0YXRlIGNhY2hlLgotICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHlvdSBuZWVkIHRvIGJlIGF3YXJlIG9mIGFueSBpbXBsaWNpdCBjaGFuZ2VzIHRoYXQKLSAgICAgICAgICAgICAgICBhcmUgbm90IG9idmlvdXMgY2hhbmdlcyB0byB0aGUgY29kZSBhbmQgY291bGQgYWZmZWN0IHRoZSBvdXRwdXQKLSAgICAgICAgICAgICAgICBvZiBhIGdpdmVuIHRhc2suCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFdoZW4geW91IGlkZW50aWZ5IGFuIGltcGxpY2l0IGNoYW5nZSwgeW91IGNhbiBlYXNpbHkgdGFrZSBzdGVwcwotICAgICAgICAgICAgICAgIHRvIGludmFsaWRhdGUgdGhlIGNhY2hlIGFuZCBmb3JjZSB0aGUgdGFza3MgdG8gcnVuLgotICAgICAgICAgICAgICAgIFRoZSBzdGVwcyB5b3UgY2FuIHRha2UgYXJlIGFzIHNpbXBsZSBhcyBjaGFuZ2luZyBhIGZ1bmN0aW9uJ3MKLSAgICAgICAgICAgICAgICBjb21tZW50cyBpbiB0aGUgc291cmNlIGNvZGUuCi0gICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRvIGludmFsaWRhdGUgcGFja2FnZSBzaGFyZWQgc3RhdGUgZmlsZXMsIGNoYW5nZQotICAgICAgICAgICAgICAgIHRoZSBjb21tZW50IHN0YXRlbWVudHMgb2YKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICBvciB0aGUgY29tbWVudHMgb2Ygb25lIG9mIHRoZSBmdW5jdGlvbnMgaXQgY2FsbHMuCi0gICAgICAgICAgICAgICAgRXZlbiB0aG91Z2ggdGhlIGNoYW5nZSBpcyBwdXJlbHkgY29zbWV0aWMsIGl0IGNhdXNlcyB0aGUKLSAgICAgICAgICAgICAgICBjaGVja3N1bSB0byBiZSByZWNhbGN1bGF0ZWQgYW5kIGZvcmNlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCi0gICAgICAgICAgICAgICAgc3lzdGVtIHRvIHJ1biB0aGUgdGFzayBhZ2Fpbi4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgRm9yIGFuIGV4YW1wbGUgb2YgYSBjb21taXQgdGhhdCBtYWtlcyBhIGNvc21ldGljIGNoYW5nZSB0bwotICAgICAgICAgICAgICAgIGludmFsaWRhdGUgc2hhcmVkIHN0YXRlLCBzZWUgdGhpcwotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0LmNnaS9wb2t5L2NvbW1pdC9tZXRhL2NsYXNzZXMvcGFja2FnZS5iYmNsYXNzP2lkPTczN2Y4YmJiNGYyN2I0ODM3MDQ3Y2I5YjRmYmZlMDFkZmRlMzZkNTQnPmNvbW1pdDwvdWxpbms+LgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICA8L3NlY3Rpb24+Ci0gICAgPC9zZWN0aW9uPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0nYXV0b21hdGljYWxseS1hZGRlZC1ydW50aW1lLWRlcGVuZGVuY2llcyc+Ci0gICAgPHRpdGxlPkF1dG9tYXRpY2FsbHkgQWRkZWQgUnVudGltZSBEZXBlbmRlbmNpZXM8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGF1dG9tYXRpY2FsbHkgYWRkcyBjb21tb24gdHlwZXMgb2YKLSAgICAgICAgcnVudGltZSBkZXBlbmRlbmNpZXMgYmV0d2VlbiBwYWNrYWdlcywgd2hpY2ggbWVhbnMgdGhhdCB5b3UgZG8gbm90Ci0gICAgICAgIG5lZWQgdG8gZXhwbGljaXRseSBkZWNsYXJlIHRoZSBwYWNrYWdlcyB1c2luZwotICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUkRFUEVORFMnPjxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPi4KLSAgICAgICAgVGhyZWUgYXV0b21hdGljIG1lY2hhbmlzbXMgZXhpc3QgKDxmaWxlbmFtZT5zaGxpYmRlcHM8L2ZpbGVuYW1lPiwKLSAgICAgICAgPGZpbGVuYW1lPnBjZGVwczwvZmlsZW5hbWU+LCBhbmQgPGZpbGVuYW1lPmRlcGNoYWluczwvZmlsZW5hbWU+KSB0aGF0Ci0gICAgICAgIGhhbmRsZSBzaGFyZWQgbGlicmFyaWVzLCBwYWNrYWdlIGNvbmZpZ3VyYXRpb24gKHBrZy1jb25maWcpIG1vZHVsZXMsCi0gICAgICAgIGFuZCA8ZmlsZW5hbWU+LWRldjwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+LWRiZzwvZmlsZW5hbWU+IHBhY2thZ2VzLAotICAgICAgICByZXNwZWN0aXZlbHkuCi0gICAgICAgIEZvciBvdGhlciB0eXBlcyBvZiBydW50aW1lIGRlcGVuZGVuY2llcywgeW91IG11c3QgbWFudWFsbHkgZGVjbGFyZQotICAgICAgICB0aGUgZGVwZW5kZW5jaWVzLgotICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zaGxpYmRlcHM8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICBEdXJpbmcgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2UnPjxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGFzayBvZiBlYWNoIHJlY2lwZSwgYWxsIHNoYXJlZCBsaWJyYXJpZXMgaW5zdGFsbGVkIGJ5IHRoZQotICAgICAgICAgICAgICAgIHJlY2lwZSBhcmUgbG9jYXRlZC4KLSAgICAgICAgICAgICAgICBGb3IgZWFjaCBzaGFyZWQgbGlicmFyeSwgdGhlIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUgc2hhcmVkCi0gICAgICAgICAgICAgICAgbGlicmFyeSBpcyByZWdpc3RlcmVkIGFzIHByb3ZpZGluZyB0aGUgc2hhcmVkIGxpYnJhcnkuCi0gICAgICAgICAgICAgICAgTW9yZSBzcGVjaWZpY2FsbHksIHRoZSBwYWNrYWdlIGlzIHJlZ2lzdGVyZWQgYXMgcHJvdmlkaW5nIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvbmFtZSc+c29uYW1lPC91bGluaz4KLSAgICAgICAgICAgICAgICBvZiB0aGUgbGlicmFyeS4KLSAgICAgICAgICAgICAgICBUaGUgcmVzdWx0aW5nIHNoYXJlZC1saWJyYXJ5LXRvLXBhY2thZ2UgbWFwcGluZwotICAgICAgICAgICAgICAgIGlzIHNhdmVkIGdsb2JhbGx5IGluCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBLR0RBVEFfRElSJz48ZmlsZW5hbWU+UEtHREFUQV9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICBieSB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZWRhdGEnPjxmaWxlbmFtZT5kb19wYWNrYWdlZGF0YTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHRhc2suPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+U2ltdWx0YW5lb3VzbHksIGFsbCBleGVjdXRhYmxlcyBhbmQgc2hhcmVkIGxpYnJhcmllcwotICAgICAgICAgICAgICAgIGluc3RhbGxlZCBieSB0aGUgcmVjaXBlIGFyZSBpbnNwZWN0ZWQgdG8gc2VlIHdoYXQgc2hhcmVkCi0gICAgICAgICAgICAgICAgbGlicmFyaWVzIHRoZXkgbGluayBhZ2FpbnN0LgotICAgICAgICAgICAgICAgIEZvciBlYWNoIHNoYXJlZCBsaWJyYXJ5IGRlcGVuZGVuY3kgdGhhdCBpcyBmb3VuZCwKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEtHREFUQV9ESVI8L2ZpbGVuYW1lPiBpcyBxdWVyaWVkIHRvCi0gICAgICAgICAgICAgICAgc2VlIGlmIHNvbWUgcGFja2FnZSAobGlrZWx5IGZyb20gYSBkaWZmZXJlbnQgcmVjaXBlKSBjb250YWlucwotICAgICAgICAgICAgICAgIHRoZSBzaGFyZWQgbGlicmFyeS4KLSAgICAgICAgICAgICAgICBJZiBzdWNoIGEgcGFja2FnZSBpcyBmb3VuZCwgYSBydW50aW1lIGRlcGVuZGVuY3kgaXMgYWRkZWQgZnJvbQotICAgICAgICAgICAgICAgIHRoZSBwYWNrYWdlIHRoYXQgZGVwZW5kcyBvbiB0aGUgc2hhcmVkIGxpYnJhcnkgdG8gdGhlIHBhY2thZ2UKLSAgICAgICAgICAgICAgICB0aGF0IGNvbnRhaW5zIHRoZSBsaWJyYXJ5LjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBhdXRvbWF0aWNhbGx5IGFkZGVkIHJ1bnRpbWUgZGVwZW5kZW5jeSBhbHNvIGluY2x1ZGVzCi0gICAgICAgICAgICAgICAgYSB2ZXJzaW9uIHJlc3RyaWN0aW9uLgotICAgICAgICAgICAgICAgIFRoaXMgdmVyc2lvbiByZXN0cmljdGlvbiBzcGVjaWZpZXMgdGhhdCBhdCBsZWFzdCB0aGUgY3VycmVudAotICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIHBhY2thZ2UgdGhhdCBwcm92aWRlcyB0aGUgc2hhcmVkIGxpYnJhcnkgbXVzdCBiZQotICAgICAgICAgICAgICAgIHVzZWQsIGFzIGlmCi0gICAgICAgICAgICAgICAgIjxyZXBsYWNlYWJsZT5wYWNrYWdlPC9yZXBsYWNlYWJsZT4gKD49IDxyZXBsYWNlYWJsZT52ZXJzaW9uPC9yZXBsYWNlYWJsZT4pIgotICAgICAgICAgICAgICAgIGhhZCBiZWVuIGFkZGVkIHRvCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVJERVBFTkRTJz48ZmlsZW5hbWU+UkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4uCi0gICAgICAgICAgICAgICAgVGhpcyBmb3JjZXMgYW4gdXBncmFkZSBvZiB0aGUgcGFja2FnZSBjb250YWluaW5nIHRoZSBzaGFyZWQKLSAgICAgICAgICAgICAgICBsaWJyYXJ5IHdoZW4gaW5zdGFsbGluZyB0aGUgcGFja2FnZSB0aGF0IGRlcGVuZHMgb24gdGhlCi0gICAgICAgICAgICAgICAgbGlicmFyeSwgaWYgbmVlZGVkLjwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSB3YW50IHRvIGF2b2lkIGEgcGFja2FnZSBiZWluZyByZWdpc3RlcmVkIGFzCi0gICAgICAgICAgICAgICAgcHJvdmlkaW5nIGEgcGFydGljdWxhciBzaGFyZWQgbGlicmFyeSAoZS5nLiBiZWNhdXNlIHRoZSBsaWJyYXJ5Ci0gICAgICAgICAgICAgICAgaXMgZm9yIGludGVybmFsIHVzZSBvbmx5KSwgdGhlbiBhZGQgdGhlIGxpYnJhcnkgdG8KLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFJJVkFURV9MSUJTJz48ZmlsZW5hbWU+UFJJVkFURV9MSUJTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgaW5zaWRlIHRoZSBwYWNrYWdlJ3MgcmVjaXBlLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wY2RlcHM8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICBEdXJpbmcgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBhY2thZ2UnPjxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGFzayBvZiBlYWNoIHJlY2lwZSwgYWxsIHBrZy1jb25maWcgbW9kdWxlcwotICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Ki5wYzwvZmlsZW5hbWU+IGZpbGVzKSBpbnN0YWxsZWQgYnkgdGhlIHJlY2lwZSBhcmUKLSAgICAgICAgICAgICAgICBsb2NhdGVkLgotICAgICAgICAgICAgICAgIEZvciBlYWNoIG1vZHVsZSwgdGhlIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUgbW9kdWxlIGlzCi0gICAgICAgICAgICAgICAgcmVnaXN0ZXJlZCBhcyBwcm92aWRpbmcgdGhlIG1vZHVsZS4KLSAgICAgICAgICAgICAgICBUaGUgcmVzdWx0aW5nIG1vZHVsZS10by1wYWNrYWdlIG1hcHBpbmcgaXMgc2F2ZWQgZ2xvYmFsbHkgaW4KLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEtHREFUQV9ESVInPjxmaWxlbmFtZT5QS0dEQVRBX0RJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIGJ5IHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1wYWNrYWdlZGF0YSc+PGZpbGVuYW1lPmRvX3BhY2thZ2VkYXRhPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGFzay48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5TaW11bHRhbmVvdXNseSwgYWxsIHBrZy1jb25maWcgbW9kdWxlcyBpbnN0YWxsZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgcmVjaXBlIGFyZSBpbnNwZWN0ZWQgdG8gc2VlIHdoYXQgb3RoZXIgcGtnLWNvbmZpZyBtb2R1bGVzIHRoZXkKLSAgICAgICAgICAgICAgICBkZXBlbmQgb24uCi0gICAgICAgICAgICAgICAgQSBtb2R1bGUgaXMgc2VlbiBhcyBkZXBlbmRpbmcgb24gYW5vdGhlciBtb2R1bGUgaWYgaXQgY29udGFpbnMKLSAgICAgICAgICAgICAgICBhICJSZXF1aXJlczoiIGxpbmUgdGhhdCBzcGVjaWZpZXMgdGhlIG90aGVyIG1vZHVsZS4KLSAgICAgICAgICAgICAgICBGb3IgZWFjaCBtb2R1bGUgZGVwZW5kZW5jeSwKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEtHREFUQV9ESVI8L2ZpbGVuYW1lPiBpcyBxdWVyaWVkIHRvIHNlZSBpZiBzb21lCi0gICAgICAgICAgICAgICAgcGFja2FnZSBjb250YWlucyB0aGUgbW9kdWxlLgotICAgICAgICAgICAgICAgIElmIHN1Y2ggYSBwYWNrYWdlIGlzIGZvdW5kLCBhIHJ1bnRpbWUgZGVwZW5kZW5jeSBpcyBhZGRlZCBmcm9tCi0gICAgICAgICAgICAgICAgdGhlIHBhY2thZ2UgdGhhdCBkZXBlbmRzIG9uIHRoZSBtb2R1bGUgdG8gdGhlIHBhY2thZ2UgdGhhdAotICAgICAgICAgICAgICAgIGNvbnRhaW5zIHRoZSBtb2R1bGUuCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+cGNkZXBzPC9maWxlbmFtZT4gbWVjaGFuaXNtIG1vc3Qgb2Z0ZW4gaW5mZXJzCi0gICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBiZXR3ZWVuIDxmaWxlbmFtZT4tZGV2PC9maWxlbmFtZT4gcGFja2FnZXMuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXBjaGFpbnM8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICBJZiBhIHBhY2thZ2UgPGZpbGVuYW1lPmZvbzwvZmlsZW5hbWU+IGRlcGVuZHMgb24gYSBwYWNrYWdlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJhcjwvZmlsZW5hbWU+LCB0aGVuIDxmaWxlbmFtZT5mb28tZGV2PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPmZvby1kYmc8L2ZpbGVuYW1lPiBhcmUgYWxzbyBtYWRlIHRvIGRlcGVuZCBvbgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYXItZGV2PC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5iYXItZGJnPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgcmVzcGVjdGl2ZWx5LgotICAgICAgICAgICAgICAgIFRha2luZyB0aGUgPGZpbGVuYW1lPi1kZXY8L2ZpbGVuYW1lPiBwYWNrYWdlcyBhcyBhbiBleGFtcGxlLAotICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+YmFyLWRldjwvZmlsZW5hbWU+IHBhY2thZ2UgbWlnaHQgcHJvdmlkZQotICAgICAgICAgICAgICAgIGhlYWRlcnMgYW5kIHNoYXJlZCBsaWJyYXJ5IHN5bWxpbmtzIG5lZWRlZCBieQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mb28tZGV2PC9maWxlbmFtZT4sIHdoaWNoIHNob3dzIHRoZSBuZWVkCi0gICAgICAgICAgICAgICAgZm9yIGEgZGVwZW5kZW5jeSBiZXR3ZWVuIHRoZSBwYWNrYWdlcy48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZGVwZW5kZW5jaWVzIGFkZGVkIGJ5IDxmaWxlbmFtZT5kZXBjaGFpbnM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGFyZSBpbiB0aGUgZm9ybSBvZgotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1SUkVDT01NRU5EUyc+PGZpbGVuYW1lPlJSRUNPTU1FTkRTPC9maWxlbmFtZT48L2xpbms+LgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCA8ZmlsZW5hbWU+Zm9vLWRldjwvZmlsZW5hbWU+IGFsc28gaGFzIGFuCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+LXN0eWxlIGRlcGVuZGVuY3kgb24KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvbzwvZmlsZW5hbWU+LCBiZWNhdXNlIHRoZSBkZWZhdWx0IHZhbHVlIG9mCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5SREVQRU5EU18ke1BOfS1kZXY8L2ZpbGVuYW1lPiAoc2V0IGluCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPikgaW5jbHVkZXMKLSAgICAgICAgICAgICAgICAgICAgIiR7UE59Ii4KLSAgICAgICAgICAgICAgICA8L25vdGU+PC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+VG8gZW5zdXJlIHRoYXQgdGhlIGRlcGVuZGVuY3kgY2hhaW4gaXMgbmV2ZXIgYnJva2VuLAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tZGV2PC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT4tZGJnPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBwYWNrYWdlcyBhcmUgYWx3YXlzIGdlbmVyYXRlZCBieSBkZWZhdWx0LCBldmVuIGlmIHRoZSBwYWNrYWdlcwotICAgICAgICAgICAgICAgIHR1cm4gb3V0IHRvIGJlIGVtcHR5LgotICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQUxMT1dfRU1QVFknPjxmaWxlbmFtZT5BTExPV19FTVBUWTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlIGZvciBtb3JlIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhlIDxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT4gdGFzayBkZXBlbmRzIG9uIHRoZQotICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZWRhdGEnPjxmaWxlbmFtZT5kb19wYWNrYWdlZGF0YTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICB0YXNrIG9mIGVhY2ggcmVjaXBlIGluCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICB0aHJvdWdoIHVzZSBvZiBhCi0gICAgICAgIDxmaWxlbmFtZT5bPC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3ZhcmlhYmxlLWZsYWdzJz48ZmlsZW5hbWU+ZGVwdGFzazwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+XTwvZmlsZW5hbWU+Ci0gICAgICAgIGRlY2xhcmF0aW9uLCB3aGljaCBndWFyYW50ZWVzIHRoYXQgdGhlIHJlcXVpcmVkCi0gICAgICAgIHNoYXJlZC1saWJyYXJ5L21vZHVsZS10by1wYWNrYWdlIG1hcHBpbmcgaW5mb3JtYXRpb24gd2lsbCBiZSBhdmFpbGFibGUKLSAgICAgICAgd2hlbiBuZWVkZWQgYXMgbG9uZyBhcyA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+IGhhcyBiZWVuCi0gICAgICAgIGNvcnJlY3RseSBzZXQuCi0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0nZmFrZXJvb3QtYW5kLXBzZXVkbyc+Ci0gICAgPHRpdGxlPkZha2Vyb290IGFuZCBQc2V1ZG88L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFNvbWUgdGFza3MgYXJlIGVhc2llciB0byBpbXBsZW1lbnQgd2hlbiBhbGxvd2VkIHRvIHBlcmZvcm0gY2VydGFpbgotICAgICAgICBvcGVyYXRpb25zIHRoYXQgYXJlIG5vcm1hbGx5IHJlc2VydmVkIGZvciB0aGUgcm9vdCB1c2VyLgotICAgICAgICBGb3IgZXhhbXBsZSwgdGhlCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICB0YXNrIGJlbmVmaXRzIGZyb20gYmVpbmcgYWJsZSB0byBzZXQgdGhlIFVJRCBhbmQgR0lEIG9mIGluc3RhbGxlZCBmaWxlcwotICAgICAgICB0byBhcmJpdHJhcnkgdmFsdWVzLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBPbmUgYXBwcm9hY2ggdG8gYWxsb3dpbmcgdGFza3MgdG8gcGVyZm9ybSByb290LW9ubHkgb3BlcmF0aW9ucwotICAgICAgICB3b3VsZCBiZSB0byByZXF1aXJlIEJpdEJha2UgdG8gcnVuIGFzIHJvb3QuCi0gICAgICAgIEhvd2V2ZXIsIHRoaXMgbWV0aG9kIGlzIGN1bWJlcnNvbWUgYW5kIGhhcyBzZWN1cml0eSBpc3N1ZXMuCi0gICAgICAgIFRoZSBhcHByb2FjaCB0aGF0IGlzIGFjdHVhbGx5IHVzZWQgaXMgdG8gcnVuIHRhc2tzIHRoYXQgYmVuZWZpdCBmcm9tCi0gICAgICAgIHJvb3QgcHJpdmlsZWdlcyBpbiBhICJmYWtlIiByb290IGVudmlyb25tZW50LgotICAgICAgICBXaXRoaW4gdGhpcyBlbnZpcm9ubWVudCwgdGhlIHRhc2sgYW5kIGl0cyBjaGlsZCBwcm9jZXNzZXMgYmVsaWV2ZSB0aGF0Ci0gICAgICAgIHRoZXkgYXJlIHJ1bm5pbmcgYXMgdGhlIHJvb3QgdXNlciwgYW5kIHNlZSBhbiBpbnRlcm5hbGx5IGNvbnNpc3RlbnQKLSAgICAgICAgdmlldyBvZiB0aGUgZmlsZXN5c3RlbS4KLSAgICAgICAgQXMgbG9uZyBhcyBnZW5lcmF0aW5nIHRoZSBmaW5hbCBvdXRwdXQgKGUuZy4gYSBwYWNrYWdlIG9yIGFuIGltYWdlKQotICAgICAgICBkb2VzIG5vdCByZXF1aXJlIHJvb3QgcHJpdmlsZWdlcywgdGhlIGZhY3QgdGhhdCBzb21lIGVhcmxpZXIgc3RlcHMgcmFuCi0gICAgICAgIGluIGEgZmFrZSByb290IGVudmlyb25tZW50IGRvZXMgbm90IGNhdXNlIHByb2JsZW1zLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgY2FwYWJpbGl0eSB0byBydW4gdGFza3MgaW4gYSBmYWtlIHJvb3QgZW52aXJvbm1lbnQgaXMga25vd24gYXMKLSAgICAgICAgImZha2Vyb290Iiwgd2hpY2ggaXMgZGVyaXZlZCBmcm9tIHRoZSBCaXRCYWtlIGtleXdvcmQvdmFyaWFibGUKLSAgICAgICAgZmxhZyB0aGF0IHJlcXVlc3RzIGEgZmFrZSByb290IGVudmlyb25tZW50IGZvciBhIHRhc2suCi0gICAgICAgIEluIGN1cnJlbnQgdmVyc2lvbnMgb2YgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0sCi0gICAgICAgIHRoZSBwcm9ncmFtIHRoYXQgaW1wbGVtZW50cyBmYWtlcm9vdCBpcyBrbm93biBhcyBQc2V1ZG8uCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFBzZXVkbyBvdmVycmlkZXMgc3lzdGVtIGNhbGxzIHRocm91Z2ggdGhlCi0gICAgICAgIDxmaWxlbmFtZT5MRF9QUkVMT0FEPC9maWxlbmFtZT4gbWVjaGFuaXNtIHRvIGdpdmUgdGhlCi0gICAgICAgIGlsbHVzaW9uIG9mIHJ1bm5pbmcgYXMgcm9vdC4KLSAgICAgICAgVG8ga2VlcCB0cmFjayBvZiAiZmFrZSIgZmlsZSBvd25lcnNoaXAgYW5kIHBlcm1pc3Npb25zIHJlc3VsdGluZyBmcm9tCi0gICAgICAgIG9wZXJhdGlvbnMgdGhhdCByZXF1aXJlIHJvb3QgcGVybWlzc2lvbnMsIGFuIHNxbGl0ZTMKLSAgICAgICAgZGF0YWJhc2UgaXMgdXNlZC4KLSAgICAgICAgVGhpcyBkYXRhYmFzZSBpcyBzdG9yZWQgaW4KLSAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fS9wc2V1ZG8vZmlsZXMuZGI8L2ZpbGVuYW1lPgotICAgICAgICBmb3IgaW5kaXZpZHVhbCByZWNpcGVzLgotICAgICAgICBTdG9yaW5nIHRoZSBkYXRhYmFzZSBpbiBhIGZpbGUgYXMgb3Bwb3NlZCB0byBpbiBtZW1vcnkKLSAgICAgICAgZ2l2ZXMgcGVyc2lzdGVuY2UgYmV0d2VlbiB0YXNrcywgYW5kIGV2ZW4gYmV0d2VlbiBidWlsZHMuCi0gICAgICAgIDxub3RlPjx0aXRsZT5DYXV0aW9uPC90aXRsZT4KLSAgICAgICAgICAgIElmIHlvdSBhZGQgeW91ciBvd24gdGFzayB0aGF0IG1hbmlwdWxhdGVzIHRoZSBzYW1lIGZpbGVzIG9yCi0gICAgICAgICAgICBkaXJlY3RvcmllcyBhcyBhIGZha2Vyb290IHRhc2ssIHRoZW4gdGhhdCB0YXNrIHNob3VsZCBhbHNvIHJ1bgotICAgICAgICAgICAgdW5kZXIgZmFrZXJvb3QuCi0gICAgICAgICAgICBPdGhlcndpc2UsIHRoZSB0YXNrIHdpbGwgbm90IGJlIGFibGUgdG8gcnVuIHJvb3Qtb25seSBvcGVyYXRpb25zLAotICAgICAgICAgICAgYW5kIHdpbGwgbm90IHNlZSB0aGUgZmFrZSBmaWxlIG93bmVyc2hpcCBhbmQgcGVybWlzc2lvbnMgc2V0IGJ5IHRoZQotICAgICAgICAgICAgb3RoZXIgdGFzay4KLSAgICAgICAgICAgIFlvdSBzaG91bGQgYWxzbyBhZGQgYSBkZXBlbmRlbmN5IG9uCi0gICAgICAgICAgICA8ZmlsZW5hbWU+dmlydHVhbC9mYWtlcm9vdC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdDwvZmlsZW5hbWU+LAotICAgICAgICAgICAgZ2l2aW5nIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICAgZmFrZXJvb3QgZG9fbXl0YXNrICgpIHsKLSAgICAgICAgICAgLi4uCi0gICAgICAgfQotICAgICAgIGRvX215dGFza1tkZXBlbmRzXSArPSAidmlydHVhbC9mYWtlcm9vdC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgPC9ub3RlPgotICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3Zhci1GQUtFUk9PVCc+PGZpbGVuYW1lPkZBS0VST09UKjwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgdmFyaWFibGVzIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsLgotICAgICAgICBZb3UgY2FuIGFsc28gcmVmZXJlbmNlIHRoaXMKLSAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvbGlicmFyeS9vcy1hYXBzZXVkbzEvaW5kZXguaHRtbCc+UHNldWRvPC91bGluaz4KLSAgICAgICAgYXJ0aWNsZS4KLSAgICA8L3BhcmE+Ci08L3NlY3Rpb24+Ci0KLTxzZWN0aW9uIGlkPSd3aWMtcGx1Zy1pbnMtaW50ZXJmYWNlJz4KLSAgICA8dGl0bGU+V2ljIFBsdWctSW5zIEludGVyZmFjZTwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgWW91IGNhbiBleHRlbmQgYW5kIHNwZWNpYWxpemUgV2ljIGZ1bmN0aW9uYWxpdHkgYnkgdXNpbmcKLSAgICAgICAgV2ljIHBsdWctaW5zLgotICAgICAgICBUaGlzIHNlY3Rpb24gZXhwbGFpbnMgdGhlIFdpYyBwbHVnLWluIGludGVyZmFjZS4KLSAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHVzaW5nIFdpYyBpbiBnZW5lcmFsLCBzZWUgdGhlCi0gICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1wYXJ0aXRpb25lZC1pbWFnZXMtdXNpbmctd2ljJz5DcmVhdGluZyBQYXJ0aXRpb25lZCBJbWFnZXMgVXNpbmcgV2ljPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgotICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgIFdpYyBwbHVnLWlucyBjb25zaXN0IG9mICJzb3VyY2UiIGFuZCAiaW1hZ2VyIiBwbHVnLWlucy4KLSAgICAgICAgICAgIEltYWdlciBwbHVnLWlucyBhcmUgYmV5b25kIHRoZSBzY29wZSBvZiB0aGlzIHNlY3Rpb24uCi0gICAgICAgIDwvbm90ZT4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgU291cmNlIHBsdWctaW5zIHByb3ZpZGUgYSBtZWNoYW5pc20gdG8gY3VzdG9taXplIHBhcnRpdGlvbgotICAgICAgICBjb250ZW50IGR1cmluZyB0aGUgV2ljIGltYWdlIGdlbmVyYXRpb24gcHJvY2Vzcy4KLSAgICAgICAgWW91IGNhbiB1c2Ugc291cmNlIHBsdWctaW5zIHRvIG1hcCB2YWx1ZXMgdGhhdCB5b3Ugc3BlY2lmeQotICAgICAgICB1c2luZyA8ZmlsZW5hbWU+LS1zb3VyY2U8L2ZpbGVuYW1lPiBjb21tYW5kcyBpbiBraWNrc3RhcnQKLSAgICAgICAgZmlsZXMgKGkuZS4gPGZpbGVuYW1lPioud2tzPC9maWxlbmFtZT4pIHRvIGEgcGx1Zy1pbgotICAgICAgICBpbXBsZW1lbnRhdGlvbiB1c2VkIHRvIHBvcHVsYXRlIGEgZ2l2ZW4gcGFydGl0aW9uLgotICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgIElmIHlvdSB1c2UgcGx1Zy1pbnMgdGhhdCBoYXZlIGJ1aWxkLXRpbWUgZGVwZW5kZW5jaWVzCi0gICAgICAgICAgICAoZS5nLiBuYXRpdmUgdG9vbHMsIGJvb3Rsb2FkZXJzLCBhbmQgc28gZm9ydGgpCi0gICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIGEgV2ljIGltYWdlLCB5b3UgbmVlZCB0byBzcGVjaWZ5IHRob3NlCi0gICAgICAgICAgICBkZXBlbmRlbmNpZXMgdXNpbmcgdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItV0tTX0ZJTEVfREVQRU5EUyc+PGZpbGVuYW1lPldLU19GSUxFX0RFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIHZhcmlhYmxlLgotICAgICAgICA8L25vdGU+Ci0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFNvdXJjZSBwbHVnLWlucyBhcmUgc3ViY2xhc3NlcyBkZWZpbmVkIGluIHBsdWctaW4gZmlsZXMuCi0gICAgICAgIEFzIHNoaXBwZWQsIHRoZSBZb2N0byBQcm9qZWN0IHByb3ZpZGVzIHNldmVyYWwgcGx1Zy1pbgotICAgICAgICBmaWxlcy4KLSAgICAgICAgWW91IGNhbiBzZWUgdGhlIHNvdXJjZSBwbHVnLWluIGZpbGVzIHRoYXQgc2hpcCB3aXRoIHRoZQotICAgICAgICBZb2N0byBQcm9qZWN0Ci0gICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19HSVRfVVJMOy9jZ2l0L2NnaXQuY2dpL3Bva3kvdHJlZS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UnPmhlcmU8L3VsaW5rPi4KLSAgICAgICAgRWFjaCBvZiB0aGVzZSBwbHVnLWluIGZpbGVzIGNvbnRhaW4gc291cmNlIHBsdWctaW5zIHRoYXQKLSAgICAgICAgYXJlIGRlc2lnbmVkIHRvIHBvcHVsYXRlIGEgc3BlY2lmaWMgV2ljIGltYWdlIHBhcnRpdGlvbi4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgU291cmNlIHBsdWctaW5zIGFyZSBzdWJjbGFzc2VzIG9mIHRoZQotICAgICAgICA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3MsIHdoaWNoIGlzCi0gICAgICAgIGRlZmluZWQgaW4gdGhlCi0gICAgICAgIDxmaWxlbmFtZT5wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5iYXNlLnB5PC9maWxlbmFtZT4KLSAgICAgICAgZmlsZS4KLSAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSA8ZmlsZW5hbWU+Qm9vdGltZ0VGSVBsdWdpbjwvZmlsZW5hbWU+Ci0gICAgICAgIHNvdXJjZSBwbHVnLWluIGZvdW5kIGluIHRoZQotICAgICAgICA8ZmlsZW5hbWU+Ym9vdGltZy1lZmkucHk8L2ZpbGVuYW1lPiBmaWxlIGlzIGEgc3ViY2xhc3Mgb2YKLSAgICAgICAgdGhlIDxmaWxlbmFtZT5Tb3VyY2VQbHVnaW48L2ZpbGVuYW1lPiBjbGFzcywgd2hpY2ggaXMgZm91bmQKLSAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT5wbHVnaW5iYXNlLnB5PC9maWxlbmFtZT4gZmlsZS4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgWW91IGNhbiBhbHNvIGltcGxlbWVudCBzb3VyY2UgcGx1Zy1pbnMgaW4gYSBsYXllciBvdXRzaWRlCi0gICAgICAgIG9mIHRoZSBTb3VyY2UgUmVwb3NpdG9yaWVzIChleHRlcm5hbCBsYXllcikuCi0gICAgICAgIFRvIGRvIHNvLCBiZSBzdXJlIHRoYXQgeW91ciBwbHVnLWluIGZpbGVzIGFyZSBsb2NhdGVkIGluCi0gICAgICAgIGEgZGlyZWN0b3J5IHdob3NlIHBhdGggaXMKLSAgICAgICAgPGZpbGVuYW1lPnNjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS88L2ZpbGVuYW1lPgotICAgICAgICB3aXRoaW4geW91ciBleHRlcm5hbCBsYXllci4KLSAgICAgICAgV2hlbiB0aGUgcGx1Zy1pbiBmaWxlcyBhcmUgbG9jYXRlZCB0aGVyZSwgdGhlIHNvdXJjZQotICAgICAgICBwbHVnLWlucyB0aGV5IGNvbnRhaW4gYXJlIG1hZGUgYXZhaWxhYmxlIHRvIFdpYy4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgV2hlbiB0aGUgV2ljIGltcGxlbWVudGF0aW9uIG5lZWRzIHRvIGludm9rZSBhCi0gICAgICAgIHBhcnRpdGlvbi1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiwgaXQgbG9va3MgZm9yIHRoZSBwbHVnLWluCi0gICAgICAgIHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgPGZpbGVuYW1lPi0tc291cmNlPC9maWxlbmFtZT4KLSAgICAgICAgcGFyYW1ldGVyIHVzZWQgaW4gdGhlIGtpY2tzdGFydCBmaWxlIGdpdmVuIHRvIHRoYXQKLSAgICAgICAgcGFydGl0aW9uLgotICAgICAgICBGb3IgZXhhbXBsZSwgaWYgdGhlIHBhcnRpdGlvbiBpcyBzZXQgdXAgdXNpbmcgdGhlIGZvbGxvd2luZwotICAgICAgICBjb21tYW5kIGluIGEga2lja3N0YXJ0IGZpbGU6Ci0gICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgcGFydCAvYm9vdCAtLXNvdXJjZSBib290aW1nLXBjYmlvcyAtLW9uZGlzayBzZGEgLS1sYWJlbCBib290IC0tYWN0aXZlIC0tYWxpZ24gMTAyNAotICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgIFRoZSBtZXRob2RzIGRlZmluZWQgYXMgY2xhc3MgbWVtYmVycyBvZiB0aGUgbWF0Y2hpbmcKLSAgICAgICAgc291cmNlIHBsdWctaW4gKGkuZS4gPGZpbGVuYW1lPmJvb3RpbWctcGNiaW9zPC9maWxlbmFtZT4pCi0gICAgICAgIGluIHRoZSA8ZmlsZW5hbWU+Ym9vdGltZy1wY2Jpb3MucHk8L2ZpbGVuYW1lPiBwbHVnLWluIGZpbGUKLSAgICAgICAgYXJlIHVzZWQuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRvIGJlIG1vcmUgY29uY3JldGUsIGhlcmUgaXMgdGhlIGNvcnJlc3BvbmRpbmcgcGx1Zy1pbgotICAgICAgICBkZWZpbml0aW9uIGZyb20gdGhlIDxmaWxlbmFtZT5ib290aW1nLXBjYmlvcy5weTwvZmlsZW5hbWU+Ci0gICAgICAgIGZpbGUgZm9yIHRoZSBwcmV2aW91cyBjb21tYW5kIGFsb25nIHdpdGggYW4gZXhhbXBsZQotICAgICAgICBtZXRob2QgY2FsbGVkIGJ5IHRoZSBXaWMgaW1wbGVtZW50YXRpb24gd2hlbiBpdCBuZWVkcyB0bwotICAgICAgICBwcmVwYXJlIGEgcGFydGl0aW9uIHVzaW5nIGFuIGltcGxlbWVudGF0aW9uLXNwZWNpZmljCi0gICAgICAgIGZ1bmN0aW9uOgotICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIGJvb3RpbWctcGNiaW9zLnB5Ci0gICAgICAgICAgICAgICAgICAuCi0gICAgICAgICAgICAgICAgICAuCi0gICAgICAgICAgICAgICAgICAuCi0gICAgICAgIGNsYXNzIEJvb3RpbWdQY2Jpb3NQbHVnaW4oU291cmNlUGx1Z2luKToKLSAgICAgICAgIiIiCi0gICAgICAgIENyZWF0ZSBNQlIgYm9vdCBwYXJ0aXRpb24gYW5kIGluc3RhbGwgc3lzbGludXggb24gaXQuCi0gICAgICAgICIiIgotCi0gICAgICAgIG5hbWUgPSAnYm9vdGltZy1wY2Jpb3MnCi0gICAgICAgICAgICAgICAgICAuCi0gICAgICAgICAgICAgICAgICAuCi0gICAgICAgICAgICAgICAgICAuCi0gICAgICAgIEBjbGFzc21ldGhvZAotICAgICAgICBkZWYgZG9fcHJlcGFyZV9wYXJ0aXRpb24oY2xzLCBwYXJ0LCBzb3VyY2VfcGFyYW1zLCBjcmVhdG9yLCBjcl93b3JrZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2VfYnVpbGRkaXIsIGJvb3RpbWdfZGlyLCBrZXJuZWxfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdGZzX2RpciwgbmF0aXZlX3N5c3Jvb3QpOgotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBDYWxsZWQgdG8gZG8gdGhlIGFjdHVhbCBjb250ZW50IHBvcHVsYXRpb24gZm9yIGEgcGFydGl0aW9uIGkuZS4gaXQKLSAgICAgICAgICAgICdwcmVwYXJlcycgdGhlIHBhcnRpdGlvbiB0byBiZSBpbmNvcnBvcmF0ZWQgaW50byB0aGUgaW1hZ2UuCi0gICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHByZXBhcmUgY29udGVudCBmb3IgbGVnYWN5IGJpb3MgYm9vdCBwYXJ0aXRpb24uCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgICAgICAgIC4KLSAgICAgICAgICAgICAgICAgIC4KLSAgICAgICAgICAgICAgICAgIC4KLSAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICBJZiBhIHN1YmNsYXNzIChwbHVnLWluKSBpdHNlbGYgZG9lcyBub3QgaW1wbGVtZW50IGEKLSAgICAgICAgcGFydGljdWxhciBmdW5jdGlvbiwgV2ljIGxvY2F0ZXMgYW5kIHVzZXMgdGhlIGRlZmF1bHQKLSAgICAgICAgdmVyc2lvbiBpbiB0aGUgc3VwZXJjbGFzcy4KLSAgICAgICAgSXQgaXMgZm9yIHRoaXMgcmVhc29uIHRoYXQgYWxsIHNvdXJjZSBwbHVnLWlucyBhcmUgZGVyaXZlZAotICAgICAgICBmcm9tIHRoZSA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3MuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoZSA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3MgZGVmaW5lZCBpbgotICAgICAgICB0aGUgPGZpbGVuYW1lPnBsdWdpbmJhc2UucHk8L2ZpbGVuYW1lPiBmaWxlIGRlZmluZXMKLSAgICAgICAgYSBzZXQgb2YgbWV0aG9kcyB0aGF0IHNvdXJjZSBwbHVnLWlucyBjYW4gaW1wbGVtZW50IG9yCi0gICAgICAgIG92ZXJyaWRlLgotICAgICAgICBBbnkgcGx1Zy1pbnMgKHN1YmNsYXNzIG9mCi0gICAgICAgIDxmaWxlbmFtZT5Tb3VyY2VQbHVnaW48L2ZpbGVuYW1lPikgdGhhdCBkbyBub3QgaW1wbGVtZW50Ci0gICAgICAgIGEgcGFydGljdWxhciBtZXRob2QgaW5oZXJpdCB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlCi0gICAgICAgIG1ldGhvZCBmcm9tIHRoZSA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3MuCi0gICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgIDxmaWxlbmFtZT5Tb3VyY2VQbHVnaW48L2ZpbGVuYW1lPiBjbGFzcyBpbiB0aGUKLSAgICAgICAgPGZpbGVuYW1lPnBsdWdpbmJhc2UucHk8L2ZpbGVuYW1lPiBmaWxlIGZvciBkZXRhaWxzOgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3QgZGVzY3JpYmVzIHRoZSBtZXRob2RzIGltcGxlbWVudGVkIGluIHRoZQotICAgICAgICA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gY2xhc3M6Ci0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kb19wcmVwYXJlX3BhcnRpdGlvbigpPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBDYWxsZWQgdG8gcG9wdWxhdGUgYSBwYXJ0aXRpb24gd2l0aCBhY3R1YWwgY29udGVudC4KLSAgICAgICAgICAgICAgICBJbiBvdGhlciB3b3JkcywgdGhlIG1ldGhvZCBwcmVwYXJlcyB0aGUgZmluYWwKLSAgICAgICAgICAgICAgICBwYXJ0aXRpb24gaW1hZ2UgdGhhdCBpcyBpbmNvcnBvcmF0ZWQgaW50byB0aGUKLSAgICAgICAgICAgICAgICBkaXNrIGltYWdlLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+ZG9fY29uZmlndXJlX3BhcnRpdGlvbigpPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBDYWxsZWQgYmVmb3JlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3ByZXBhcmVfcGFydGl0aW9uKCk8L2ZpbGVuYW1lPiB0bwotICAgICAgICAgICAgICAgIGNyZWF0ZSBjdXN0b20gY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgYSBwYXJ0aXRpb24KLSAgICAgICAgICAgICAgICAoZS5nLiBzeXNsaW51eCBvciBncnViIGNvbmZpZ3VyYXRpb24gZmlsZXMpLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+ZG9faW5zdGFsbF9kaXNrKCk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIENhbGxlZCBhZnRlciBhbGwgcGFydGl0aW9ucyBoYXZlIGJlZW4gcHJlcGFyZWQgYW5kCi0gICAgICAgICAgICAgICAgYXNzZW1ibGVkIGludG8gYSBkaXNrIGltYWdlLgotICAgICAgICAgICAgICAgIFRoaXMgbWV0aG9kIHByb3ZpZGVzIGEgaG9vayB0byBhbGxvdyBmaW5hbGl6YXRpb24KLSAgICAgICAgICAgICAgICBvZiBhIGRpc2sgaW1hZ2UgKGUuZy4gd3JpdGluZyBhbiBNQlIpLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+ZG9fc3RhZ2VfcGFydGl0aW9uKCk8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgIFNwZWNpYWwgY29udGVudC1zdGFnaW5nIGhvb2sgY2FsbGVkIGJlZm9yZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wcmVwYXJlX3BhcnRpdGlvbigpPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgVGhpcyBtZXRob2QgaXMgbm9ybWFsbHkgZW1wdHkuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+VHlwaWNhbGx5LCBhIHBhcnRpdGlvbiBqdXN0IHVzZXMgdGhlIHBhc3NlZC1pbgotICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMgKGUuZy4gdGhlIHVubW9kaWZpZWQgdmFsdWUgb2YKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ym9vdGltZ19kaXI8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgSG93ZXZlciwgaW4gc29tZSBjYXNlcywgdGhpbmdzIG1pZ2h0IG5lZWQgdG8gYmUKLSAgICAgICAgICAgICAgICBtb3JlIHRhaWxvcmVkLgotICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGNlcnRhaW4gZmlsZXMgbWlnaHQgYWRkaXRpb25hbGx5Ci0gICAgICAgICAgICAgICAgbmVlZCB0byBiZSB0YWtlbiBmcm9tCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJvb3RpbWdfZGlyICsgL2Jvb3Q8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICBUaGlzIGhvb2sgYWxsb3dzIHRob3NlIGZpbGVzIHRvIGJlIHN0YWdlZCBpbiBhCi0gICAgICAgICAgICAgICAgY3VzdG9taXplZCBmYXNoaW9uLgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2V0X2JpdGJha2VfdmFyKCk8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBhbGxvd3MgeW91IHRvIGFjY2VzcyBub24tc3RhbmRhcmQgdmFyaWFibGVzCi0gICAgICAgICAgICAgICAgICAgIHRoYXQgeW91IG1pZ2h0IHdhbnQgdG8gdXNlIGZvciB0aGlzCi0gICAgICAgICAgICAgICAgICAgIGJlaGF2aW9yLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFlvdSBjYW4gZXh0ZW5kIHRoZSBzb3VyY2UgcGx1Zy1pbiBtZWNoYW5pc20uCi0gICAgICAgIFRvIGFkZCBtb3JlIGhvb2tzLCBjcmVhdGUgbW9yZSBzb3VyY2UgcGx1Zy1pbiBtZXRob2RzCi0gICAgICAgIHdpdGhpbiA8ZmlsZW5hbWU+U291cmNlUGx1Z2luPC9maWxlbmFtZT4gYW5kIHRoZQotICAgICAgICBjb3JyZXNwb25kaW5nIGRlcml2ZWQgc3ViY2xhc3Nlcy4KLSAgICAgICAgVGhlIGNvZGUgdGhhdCBjYWxscyB0aGUgcGx1Zy1pbiBtZXRob2RzIHVzZXMgdGhlCi0gICAgICAgIDxmaWxlbmFtZT5wbHVnaW4uZ2V0X3NvdXJjZV9wbHVnaW5fbWV0aG9kcygpPC9maWxlbmFtZT4KLSAgICAgICAgZnVuY3Rpb24gdG8gZmluZCB0aGUgbWV0aG9kIG9yIG1ldGhvZHMgbmVlZGVkIGJ5IHRoZSBjYWxsLgotICAgICAgICBSZXRyaWV2YWwgb2YgdGhvc2UgbWV0aG9kcyBpcyBhY2NvbXBsaXNoZWQgYnkgZmlsbGluZyB1cAotICAgICAgICBhIGRpY3Qgd2l0aCBrZXlzIHRoYXQgY29udGFpbiB0aGUgbWV0aG9kIG5hbWVzIG9mIGludGVyZXN0LgotICAgICAgICBPbiBzdWNjZXNzLCB0aGVzZSB3aWxsIGJlIGZpbGxlZCBpbiB3aXRoIHRoZSBhY3R1YWwKLSAgICAgICAgbWV0aG9kcy4KLSAgICAgICAgU2VlIHRoZSBXaWMgaW1wbGVtZW50YXRpb24gZm9yIGV4YW1wbGVzIGFuZCBkZXRhaWxzLgotICAgIDwvcGFyYT4KLTwvc2VjdGlvbj4KLQotPHNlY3Rpb24gaWQ9J3gzMic+Ci0gICAgPHRpdGxlPngzMjwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgeDMyIGlzIGEgcHJvY2Vzc29yLXNwZWNpZmljIEFwcGxpY2F0aW9uIEJpbmFyeSBJbnRlcmZhY2UgKHBzQUJJKSBmb3IgeDg2XzY0LgotICAgICAgICBBbiBBQkkgZGVmaW5lcyB0aGUgY2FsbGluZyBjb252ZW50aW9ucyBiZXR3ZWVuIGZ1bmN0aW9ucyBpbiBhIHByb2Nlc3NpbmcgZW52aXJvbm1lbnQuCi0gICAgICAgIFRoZSBpbnRlcmZhY2UgZGV0ZXJtaW5lcyB3aGF0IHJlZ2lzdGVycyBhcmUgdXNlZCBhbmQgd2hhdCB0aGUgc2l6ZXMgYXJlIGZvciB2YXJpb3VzIEMgZGF0YSB0eXBlcy4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgU29tZSBwcm9jZXNzaW5nIGVudmlyb25tZW50cyBwcmVmZXIgdXNpbmcgMzItYml0IGFwcGxpY2F0aW9ucyBldmVuIHdoZW4gcnVubmluZwotICAgICAgICBvbiBJbnRlbCA2NC1iaXQgcGxhdGZvcm1zLgotICAgICAgICBDb25zaWRlciB0aGUgaTM4NiBwc0FCSSwgd2hpY2ggaXMgYSB2ZXJ5IG9sZCAzMi1iaXQgQUJJIGZvciBJbnRlbCA2NC1iaXQgcGxhdGZvcm1zLgotICAgICAgICBUaGUgaTM4NiBwc0FCSSBkb2VzIG5vdCBwcm92aWRlIGVmZmljaWVudCB1c2UgYW5kIGFjY2VzcyBvZiB0aGUgSW50ZWwgNjQtYml0IHByb2Nlc3NvciByZXNvdXJjZXMsCi0gICAgICAgIGxlYXZpbmcgdGhlIHN5c3RlbSB1bmRlcnV0aWxpemVkLgotICAgICAgICBOb3cgY29uc2lkZXIgdGhlIHg4Nl82NCBwc0FCSS4KLSAgICAgICAgVGhpcyBBQkkgaXMgbmV3ZXIgYW5kIHVzZXMgNjQtYml0cyBmb3IgZGF0YSBzaXplcyBhbmQgcHJvZ3JhbSBwb2ludGVycy4KLSAgICAgICAgVGhlIGV4dHJhIGJpdHMgaW5jcmVhc2UgdGhlIGZvb3RwcmludCBzaXplIG9mIHRoZSBwcm9ncmFtcywgbGlicmFyaWVzLAotICAgICAgICBhbmQgYWxzbyBpbmNyZWFzZXMgdGhlIG1lbW9yeSBhbmQgZmlsZSBzeXN0ZW0gc2l6ZSByZXF1aXJlbWVudHMuCi0gICAgICAgIEV4ZWN1dGluZyB1bmRlciB0aGUgeDMyIHBzQUJJIGVuYWJsZXMgdXNlciBwcm9ncmFtcyB0byB1dGlsaXplIENQVSBhbmQgc3lzdGVtIHJlc291cmNlcwotICAgICAgICBtb3JlIGVmZmljaWVudGx5IHdoaWxlIGtlZXBpbmcgdGhlIG1lbW9yeSBmb290cHJpbnQgb2YgdGhlIGFwcGxpY2F0aW9ucyBsb3cuCi0gICAgICAgIEV4dHJhIGJpdHMgYXJlIHVzZWQgZm9yIHJlZ2lzdGVycyBidXQgbm90IGZvciBhZGRyZXNzaW5nIG1lY2hhbmlzbXMuCi0gICAgPC9wYXJhPgotCi0gICAgPHNlY3Rpb24gaWQ9J3N1cHBvcnQnPgotICAgICAgICA8dGl0bGU+U3VwcG9ydDwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGlzIFlvY3RvIFByb2plY3QgcmVsZWFzZSBzdXBwb3J0cyB0aGUgZmluYWwgc3BlY2lmaWNhdGlvbnMgb2YgeDMyCi0gICAgICAgICAgICBwc0FCSS4KLSAgICAgICAgICAgIFN1cHBvcnQgZm9yIHgzMiBwc0FCSSBleGlzdHMgYXMgZm9sbG93czoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPllvdSBjYW4gY3JlYXRlIHBhY2thZ2VzIGFuZCBpbWFnZXMgaW4geDMyIHBzQUJJIGZvcm1hdCBvbiB4ODZfNjQgYXJjaGl0ZWN0dXJlIHRhcmdldHMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Zb3UgY2FuIHN1Y2Nlc3NmdWxseSBidWlsZCBtYW55IHJlY2lwZXMgd2l0aCB0aGUgeDMyIHRvb2xjaGFpbi48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+WW91IGNhbiBjcmVhdGUgYW5kIGJvb3QgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4gaW1hZ2VzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0nY29tcGxldGluZy14MzInPgotICAgICAgICA8dGl0bGU+Q29tcGxldGluZyB4MzI8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRnV0dXJlIFBsYW5zIGZvciB0aGUgeDMyIHBzQUJJIGluIHRoZSBZb2N0byBQcm9qZWN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkVuaGFuY2UgYW5kIGZpeCB0aGUgZmV3IHJlbWFpbmluZyByZWNpcGVzIHNvIHRoZXkKLSAgICAgICAgICAgICAgICAgICAgd29yayB3aXRoIGFuZCBzdXBwb3J0IHgzMiB0b29sY2hhaW5zLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FbmhhbmNlIFJQTSBQYWNrYWdlIE1hbmFnZXIgKFJQTSkgc3VwcG9ydCBmb3IgeDMyIGJpbmFyaWVzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TdXBwb3J0IGxhcmdlciBpbWFnZXMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSd1c2luZy14MzItcmlnaHQtbm93Jz4KLSAgICAgICAgPHRpdGxlPlVzaW5nIHgzMiBSaWdodCBOb3c8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIHVzZSB0aGUgeDMyIHNwQUJJOgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RW5hYmxlIHRoZSB4MzIgcHNBQkkgdHVuaW5nIGZpbGUgZm9yIDxmaWxlbmFtZT54ODZfNjQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcyBieSBlZGl0aW5nIHRoZSA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gbGlrZSB0aGlzOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICBNQUNISU5FID0gInFlbXV4ODYtNjQiCi0gICAgICBERUZBVUxUVFVORSA9ICJ4ODYtNjQteDMyIgotICAgICAgYmFzZWxpYiA9ICIke0BkLmdldFZhcignQkFTRV9MSUJfdHVuZS0nICsgKGQuZ2V0VmFyKCdERUZBVUxUVFVORScsIFRydWUpIFwKLSAgICAgICAgIG9yICdJTlZBTElEJyksIFRydWUpIG9yICdsaWInfSIKLSAgICAgICNNQUNISU5FID0gImdlbmVyaWN4ODYiCi0gICAgICAjREVGQVVMVFRVTkUgPSAiY29yZTItNjQteDMyIgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkFzIHVzdWFsLCB1c2UgQml0QmFrZSB0byBidWlsZCBhbiBpbWFnZSB0aGF0IHN1cHBvcnRzIHRoZSB4MzIgcHNBQkkuCi0gICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgY29yZS1pbWFnZS1zYXRvCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QXMgdXN1YWwsIHJ1biB5b3VyIGltYWdlIHVzaW5nIFFFTVU6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBydW5xZW11IHFlbXV4ODYtNjQgY29yZS1pbWFnZS1zYXRvCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0id2F5bGFuZCI+Ci0gICAgPHRpdGxlPldheWxhbmQ8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2F5bGFuZF8oZGlzcGxheV9zZXJ2ZXJfcHJvdG9jb2wpJz5XYXlsYW5kPC91bGluaz4KLSAgICAgICAgaXMgYSBjb21wdXRlciBkaXNwbGF5IHNlcnZlciBwcm90b2NvbCB0aGF0Ci0gICAgICAgIHByb3ZpZGVzIGEgbWV0aG9kIGZvciBjb21wb3NpdGluZyB3aW5kb3cgbWFuYWdlcnMgdG8gY29tbXVuaWNhdGUKLSAgICAgICAgZGlyZWN0bHkgd2l0aCBhcHBsaWNhdGlvbnMgYW5kIHZpZGVvIGhhcmR3YXJlIGFuZCBleHBlY3RzIHRoZW0gdG8KLSAgICAgICAgY29tbXVuaWNhdGUgd2l0aCBpbnB1dCBoYXJkd2FyZSB1c2luZyBvdGhlciBsaWJyYXJpZXMuCi0gICAgICAgIFVzaW5nIFdheWxhbmQgd2l0aCBzdXBwb3J0aW5nIHRhcmdldHMgY2FuIHJlc3VsdCBpbiBiZXR0ZXIgY29udHJvbAotICAgICAgICBvdmVyIGdyYXBoaWNzIGZyYW1lIHJlbmRlcmluZyB0aGFuIGFuIGFwcGxpY2F0aW9uIG1pZ2h0IG90aGVyd2lzZQotICAgICAgICBhY2hpZXZlLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcyB0aGUgV2F5bGFuZCBwcm90b2NvbCBsaWJyYXJpZXMgYW5kIHRoZQotICAgICAgICByZWZlcmVuY2UKLSAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XYXlsYW5kXyhkaXNwbGF5X3NlcnZlcl9wcm90b2NvbCkjV2VzdG9uJz5XZXN0b248L3VsaW5rPgotICAgICAgICBjb21wb3NpdG9yIGFzIHBhcnQgb2YgaXRzIHJlbGVhc2UuCi0gICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgd2hhdCB5b3UgbmVlZCB0byBkbyB0byBpbXBsZW1lbnQgV2F5bGFuZCBhbmQKLSAgICAgICAgdXNlIHRoZSBjb21wb3NpdG9yIHdoZW4gYnVpbGRpbmcgYW4gaW1hZ2UgZm9yIGEgc3VwcG9ydGluZyB0YXJnZXQuCi0gICAgPC9wYXJhPgotCi0gICAgPHNlY3Rpb24gaWQ9IndheWxhbmQtc3VwcG9ydCI+Ci0gICAgICAgIDx0aXRsZT5TdXBwb3J0PC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBXYXlsYW5kIHByb3RvY29sIGxpYnJhcmllcyBhbmQgdGhlIHJlZmVyZW5jZSBXZXN0b24gY29tcG9zaXRvcgotICAgICAgICAgICAgc2hpcCBhcyBpbnRlZ3JhdGVkIHBhY2thZ2VzIGluIHRoZSA8ZmlsZW5hbWU+bWV0YTwvZmlsZW5hbWU+IGxheWVyCi0gICAgICAgICAgICBvZiB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgotICAgICAgICAgICAgU3BlY2lmaWNhbGx5LCB5b3UgY2FuIGZpbmQgdGhlIHJlY2lwZXMgdGhhdCBidWlsZCBib3RoIFdheWxhbmQKLSAgICAgICAgICAgIGFuZCBXZXN0b24gYXQgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kPC9maWxlbmFtZT4uCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFlvdSBjYW4gYnVpbGQgYm90aCB0aGUgV2F5bGFuZCBhbmQgV2VzdG9uIHBhY2thZ2VzIGZvciB1c2Ugb25seQotICAgICAgICAgICAgd2l0aCB0YXJnZXRzIHRoYXQgYWNjZXB0IHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmcvd2lraS8nPk1lc2EgM0QgYW5kIERpcmVjdCBSZW5kZXJpbmcgSW5mcmFzdHJ1Y3R1cmU8L3VsaW5rPiwKLSAgICAgICAgICAgIHdoaWNoIGlzIGFsc28ga25vd24gYXMgTWVzYSBEUkkuCi0gICAgICAgICAgICBUaGlzIGltcGxpZXMgdGhhdCB5b3UgY2Fubm90IGJ1aWxkIGFuZCB1c2UgdGhlIHBhY2thZ2VzIGlmIHlvdXIKLSAgICAgICAgICAgIHRhcmdldCB1c2VzLCBmb3IgZXhhbXBsZSwgdGhlCi0gICAgICAgICAgICA8dHJhZGVtYXJrIGNsYXNzPSdyZWdpc3RlcmVkJz5JbnRlbDwvdHJhZGVtYXJrPiBFbWJlZGRlZCBNZWRpYSBhbmQKLSAgICAgICAgICAgIEdyYXBoaWNzIERyaXZlciAoPHRyYWRlbWFyayBjbGFzcz0ncmVnaXN0ZXJlZCc+SW50ZWw8L3RyYWRlbWFyaz4KLSAgICAgICAgICAgIEVNR0QpIHRoYXQgb3ZlcnJpZGVzIE1lc2EgRFJJLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICBEdWUgdG8gbGFjayBvZiBFR0wgc3VwcG9ydCwgV2VzdG9uIDEuMC4zIHdpbGwgbm90IHJ1biBkaXJlY3RseSBvbgotICAgICAgICAgICAgdGhlIGVtdWxhdGVkIFFFTVUgaGFyZHdhcmUuCi0gICAgICAgICAgICBIb3dldmVyLCB0aGlzIHZlcnNpb24gb2YgV2VzdG9uIHdpbGwgcnVuIHVuZGVyIFggZW11bGF0aW9uIHdpdGhvdXQKLSAgICAgICAgICAgIGlzc3Vlcy4KLSAgICAgICAgPC9ub3RlPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSJlbmFibGluZy13YXlsYW5kLWluLWFuLWltYWdlIj4KLSAgICAgICAgPHRpdGxlPkVuYWJsaW5nIFdheWxhbmQgaW4gYW4gSW1hZ2U8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVG8gZW5hYmxlIFdheWxhbmQsIHlvdSBuZWVkIHRvIGVuYWJsZSBpdCB0byBiZSBidWlsdCBhbmQgZW5hYmxlCi0gICAgICAgICAgICBpdCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgaW1hZ2UuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0iZW5hYmxlLWJ1aWxkaW5nIj4KLSAgICAgICAgICAgIDx0aXRsZT5CdWlsZGluZzwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRvIGNhdXNlIE1lc2EgdG8gYnVpbGQgdGhlIDxmaWxlbmFtZT53YXlsYW5kLWVnbDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgcGxhdGZvcm0gYW5kIFdlc3RvbiB0byBidWlsZCBXYXlsYW5kIHdpdGggS2VybmVsIE1vZGUKLSAgICAgICAgICAgICAgICBTZXR0aW5nCi0gICAgICAgICAgICAgICAgKDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS5hcmNobGludXgub3JnL2luZGV4LnBocC9LZXJuZWxfTW9kZV9TZXR0aW5nJz5LTVM8L3VsaW5rPikKLSAgICAgICAgICAgICAgICBzdXBwb3J0LCBpbmNsdWRlIHRoZSAid2F5bGFuZCIgZmxhZyBpbiB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSJ2YXItRElTVFJPX0ZFQVRVUkVTIj48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgc3RhdGVtZW50IGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgRElTVFJPX0ZFQVRVUkVTX2FwcGVuZCA9ICIgd2F5bGFuZCIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIElmIFgxMSBoYXMgYmVlbiBlbmFibGVkIGVsc2V3aGVyZSwgV2VzdG9uIHdpbGwgYnVpbGQgV2F5bGFuZAotICAgICAgICAgICAgICAgIHdpdGggWDExIHN1cHBvcnQKLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSJlbmFibGUtaW5zdGFsbGF0aW9uLWluLWFuLWltYWdlIj4KLSAgICAgICAgICAgIDx0aXRsZT5JbnN0YWxsaW5nPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVG8gaW5zdGFsbCB0aGUgV2F5bGFuZCBmZWF0dXJlIGludG8gYW4gaW1hZ2UsIHlvdSBtdXN0Ci0gICAgICAgICAgICAgICAgaW5jbHVkZSB0aGUgZm9sbG93aW5nCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUNPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTCc+PGZpbGVuYW1lPkNPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHN0YXRlbWVudCBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZToKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIENPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTCArPSAid2F5bGFuZCB3ZXN0b24iCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9InJ1bm5pbmctd2VzdG9uIj4KLSAgICAgICAgPHRpdGxlPlJ1bm5pbmcgV2VzdG9uPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRvIHJ1biBXZXN0b24gaW5zaWRlIFgxMSwgZW5hYmxpbmcgaXQgYXMgZGVzY3JpYmVkIGVhcmxpZXIgYW5kCi0gICAgICAgICAgICBidWlsZGluZyBhIFNhdG8gaW1hZ2UgaXMgc3VmZmljaWVudC4KLSAgICAgICAgICAgIElmIHlvdSBhcmUgcnVubmluZyB5b3VyIGltYWdlIHVuZGVyIFNhdG8sIGEgV2VzdG9uIExhdW5jaGVyIGFwcGVhcnMKLSAgICAgICAgICAgIGluIHRoZSAiVXRpbGl0eSIgY2F0ZWdvcnkuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gcnVuIFdlc3RvbiB0aHJvdWdoIHRoZSBjb21tYW5kLWxpbmUKLSAgICAgICAgICAgIGludGVycHJldG9yIChDTEkpLCB3aGljaCBpcyBiZXR0ZXIgc3VpdGVkIGZvciBkZXZlbG9wbWVudCB3b3JrLgotICAgICAgICAgICAgVG8gcnVuIFdlc3RvbiB1bmRlciB0aGUgQ0xJLCB5b3UgbmVlZCB0byBkbyB0aGUgZm9sbG93aW5nIGFmdGVyCi0gICAgICAgICAgICB5b3VyIGltYWdlIGlzIGJ1aWx0OgotICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5SdW4gdGhlc2UgY29tbWFuZHMgdG8gZXhwb3J0Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5YREdfUlVOVElNRV9ESVI8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBta2RpciAtcCAvdG1wLyRVU0VSLXdlc3RvbgotICAgICBjaG1vZCAwNzAwIC90bXAvJFVTRVItd2VzdG9uCi0gICAgIGV4cG9ydCBYREdfUlVOVElNRV9ESVI9L3RtcC8kVVNFUi13ZXN0b24KLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5MYXVuY2ggV2VzdG9uIGluIHRoZSBzaGVsbDoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICB3ZXN0b24KLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLTwvc2VjdGlvbj4KLQotPHNlY3Rpb24gaWQ9ImxpY2Vuc2VzIj4KLSAgICA8dGl0bGU+TGljZW5zZXM8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdGhlIG1lY2hhbmlzbSBieSB3aGljaCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQotICAgICAgICB0cmFja3MgY2hhbmdlcyB0byBsaWNlbnNpbmcgdGV4dC4KLSAgICAgICAgVGhlIHNlY3Rpb24gYWxzbyBkZXNjcmliZXMgaG93IHRvIGVuYWJsZSBjb21tZXJjaWFsbHkgbGljZW5zZWQgcmVjaXBlcywKLSAgICAgICAgd2hpY2ggYnkgZGVmYXVsdCBhcmUgZGlzYWJsZWQuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEZvciBpbmZvcm1hdGlvbiB0aGF0IGNhbiBoZWxwIHlvdSBtYWludGFpbiBjb21wbGlhbmNlIHdpdGggdmFyaW91cyBvcGVuCi0gICAgICAgIHNvdXJjZSBsaWNlbnNpbmcgZHVyaW5nIHRoZSBsaWZlY3ljbGUgb2YgdGhlIHByb2R1Y3QsIHNlZSB0aGUKLSAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLW9wZW4tc291cmNlLWxpY2Vuc2UtY29tcGxpYW5jZS1kdXJpbmcteW91ci1wcm9kdWN0cy1saWZlY3ljbGUnPk1haW50YWluaW5nIE9wZW4gU291cmNlIExpY2Vuc2UgQ29tcGxpYW5jZSBEdXJpbmcgWW91ciBQcm9qZWN0J3MgTGlmZWN5Y2xlPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgotICAgIDwvcGFyYT4KLQotICAgIDxzZWN0aW9uIGlkPSJ1c2luZ3Bva3ktY29uZmlndXJpbmctTElDX0ZJTEVTX0NIS1NVTSI+Ci0gICAgICAgIDx0aXRsZT5UcmFja2luZyBMaWNlbnNlIENoYW5nZXM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGxpY2Vuc2Ugb2YgYW4gdXBzdHJlYW0gcHJvamVjdCBtaWdodCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KLSAgICAgICAgICAgIEluIG9yZGVyIHRvIHByZXZlbnQgdGhlc2UgY2hhbmdlcyBnb2luZyB1bm5vdGljZWQsIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1MSUNfRklMRVNfQ0hLU1VNJz5MSUNfRklMRVNfQ0hLU1VNPC9saW5rPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICB2YXJpYWJsZSB0cmFja3MgY2hhbmdlcyB0byB0aGUgbGljZW5zZSB0ZXh0LiBUaGUgY2hlY2tzdW1zIGFyZSB2YWxpZGF0ZWQgYXQgdGhlIGVuZCBvZiB0aGUKLSAgICAgICAgICAgIGNvbmZpZ3VyZSBzdGVwLCBhbmQgaWYgdGhlIGNoZWNrc3VtcyBkbyBub3QgbWF0Y2gsIHRoZSBidWlsZCB3aWxsIGZhaWwuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0idXNpbmdwb2t5LXNwZWNpZnlpbmctTElDX0ZJTEVTX0NIS1NVTSI+Ci0gICAgICAgICAgICA8dGl0bGU+U3BlY2lmeWluZyB0aGUgPGZpbGVuYW1lPkxJQ19GSUxFU19DSEtTVU08L2ZpbGVuYW1lPiBWYXJpYWJsZTwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUgY29udGFpbnMgY2hlY2tzdW1zIG9mIHRoZSBsaWNlbnNlIHRleHQgaW4gdGhlIHNvdXJjZQotICAgICAgICAgICAgICAgIGNvZGUgZm9yIHRoZSByZWNpcGUuCi0gICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHNwZWNpZnkKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9eHh4eCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpY2ZpbGUxLnR4dDtiZWdpbmxpbmU9NTtlbmRsaW5lPTI5O21kNT15eXl5IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGljZmlsZTIudHh0O2VuZGxpbmU9NTA7bWQ1PXp6enogXAotICAgICAgICAgICAgICAgICAgICAgICAgIC4uLiIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHVzaW5nICJiZWdpbmxpbmUiIGFuZCAiZW5kbGluZSIsIHJlYWxpemUgdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgbnVtYmVyaW5nIGJlZ2lucyB3aXRoIG9uZSBhbmQgbm90IHplcm8uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxzbywgdGhlIGluY2x1ZGVkIGxpbmVzIGFyZSBpbmNsdXNpdmUgKGkuZS4gbGluZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXZlIHRocm91Z2ggYW5kIGluY2x1ZGluZyAyOSBpbiB0aGUgcHJldmlvdXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFtcGxlIGZvciA8ZmlsZW5hbWU+bGljZmlsZTEudHh0PC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gYSBsaWNlbnNlIGNoZWNrIGZhaWxzLCB0aGUgc2VsZWN0ZWQgbGljZW5zZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgaXMgaW5jbHVkZWQgYXMgcGFydCBvZiB0aGUgUUEgbWVzc2FnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2luZyB0aGlzIG91dHB1dCwgeW91IGNhbiBkZXRlcm1pbmUgdGhlIGV4YWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgYW5kIGZpbmlzaCBmb3IgdGhlIG5lZWRlZCBsaWNlbnNlIHRleHQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSB1c2VzIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItUyc+UzwvbGluaz48L2ZpbGVuYW1lPiB2YXJpYWJsZSBhcwotICAgICAgICAgICAgICAgIHRoZSBkZWZhdWx0IGRpcmVjdG9yeSB3aGVuIHNlYXJjaGluZyBmaWxlcyBsaXN0ZWQgaW4KLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBleGFtcGxlIGVtcGxveXMgdGhlIGRlZmF1bHQgZGlyZWN0b3J5LgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBDb25zaWRlciB0aGlzIG5leHQgZXhhbXBsZToKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy9scy5jO2JlZ2lubGluZT01O2VuZGxpbmU9MTY7XAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZDU9YmIxNGVkM2M0Y2RhNTgzYWJjODU0MDEzMDRiNWNkNGUiCi0gICAgIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7V09SS0RJUn0vbGljZW5zZS5odG1sO21kNT01Yzk0NzY3Y2VkYjVkNjk4N2M5MDJhYzg1MGRlZDJjNiIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBmaXJzdCBsaW5lIGxvY2F0ZXMgYSBmaWxlIGluCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7U30vc3JjL2xzLmM8L2ZpbGVuYW1lPiBhbmQgaXNvbGF0ZXMgbGluZXMgZml2ZQotICAgICAgICAgICAgICAgIHRocm91Z2ggMTYgYXMgbGljZW5zZSB0ZXh0LgotICAgICAgICAgICAgICAgIFRoZSBzZWNvbmQgbGluZSByZWZlcnMgdG8gYSBmaWxlIGluCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1XT1JLRElSJz5XT1JLRElSPC9saW5rPjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgTm90ZSB0aGF0IDxmaWxlbmFtZT5MSUNfRklMRVNfQ0hLU1VNPC9maWxlbmFtZT4gdmFyaWFibGUgaXMKLSAgICAgICAgICAgICAgICBtYW5kYXRvcnkgZm9yIGFsbCByZWNpcGVzLCB1bmxlc3MgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ0VOU0U8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcyBzZXQgdG8gIkNMT1NFRCIuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0idXNpbmdwb2t5LUxJQ19GSUxFU19DSEtTVU0tZXhwbGFuYXRpb24tb2Ytc3ludGF4Ij4KLSAgICAgICAgICAgIDx0aXRsZT5FeHBsYW5hdGlvbiBvZiBTeW50YXg8L3RpdGxlPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgQXMgbWVudGlvbmVkIGluIHRoZSBwcmV2aW91cyBzZWN0aW9uLCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDX0ZJTEVTX0NIS1NVTTwvZmlsZW5hbWU+IHZhcmlhYmxlIGxpc3RzIGFsbCB0aGUKLSAgICAgICAgICAgICAgICBpbXBvcnRhbnQgZmlsZXMgdGhhdCBjb250YWluIHRoZSBsaWNlbnNlIHRleHQgZm9yIHRoZSBzb3VyY2UgY29kZS4KLSAgICAgICAgICAgICAgICBJdCBpcyBwb3NzaWJsZSB0byBzcGVjaWZ5IGEgY2hlY2tzdW0gZm9yIGFuIGVudGlyZSBmaWxlLCBvciBhIHNwZWNpZmljIHNlY3Rpb24gb2YgYQotICAgICAgICAgICAgICAgIGZpbGUgKHNwZWNpZmllZCBieSBiZWdpbm5pbmcgYW5kIGVuZGluZyBsaW5lIG51bWJlcnMgd2l0aCB0aGUgImJlZ2lubGluZSIgYW5kICJlbmRsaW5lIgotICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMsIHJlc3BlY3RpdmVseSkuCi0gICAgICAgICAgICAgICAgVGhlIGxhdHRlciBpcyB1c2VmdWwgZm9yIHNvdXJjZSBmaWxlcyB3aXRoIGEgbGljZW5zZSBub3RpY2UgaGVhZGVyLAotICAgICAgICAgICAgICAgIFJFQURNRSBkb2N1bWVudHMsIGFuZCBzbyBmb3J0aC4KLSAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHVzZSB0aGUgImJlZ2lubGluZSIgcGFyYW1ldGVyLCB0aGVuIGl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgdGV4dCBiZWdpbnMgb24gdGhlCi0gICAgICAgICAgICAgICAgZmlyc3QgbGluZSBvZiB0aGUgZmlsZS4KLSAgICAgICAgICAgICAgICBTaW1pbGFybHksIGlmIHlvdSBkbyBub3QgdXNlIHRoZSAiZW5kbGluZSIgcGFyYW1ldGVyLCBpdCBpcyBhc3N1bWVkIHRoYXQgdGhlIGxpY2Vuc2UgdGV4dAotICAgICAgICAgICAgICAgIGVuZHMgd2l0aCB0aGUgbGFzdCBsaW5lIG9mIHRoZSBmaWxlLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgIm1kNSIgcGFyYW1ldGVyIHN0b3JlcyB0aGUgbWQ1IGNoZWNrc3VtIG9mIHRoZSBsaWNlbnNlIHRleHQuCi0gICAgICAgICAgICAgICAgSWYgdGhlIGxpY2Vuc2UgdGV4dCBjaGFuZ2VzIGluIGFueSB3YXkgYXMgY29tcGFyZWQgdG8gdGhpcyBwYXJhbWV0ZXIKLSAgICAgICAgICAgICAgICB0aGVuIGEgbWlzbWF0Y2ggb2NjdXJzLgotICAgICAgICAgICAgICAgIFRoaXMgbWlzbWF0Y2ggdHJpZ2dlcnMgYSBidWlsZCBmYWlsdXJlIGFuZCBub3RpZmllcyB0aGUgZGV2ZWxvcGVyLgotICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiBhbGxvd3MgdGhlIGRldmVsb3BlciB0byByZXZpZXcgYW5kIGFkZHJlc3MgdGhlIGxpY2Vuc2UgdGV4dCBjaGFuZ2VzLgotICAgICAgICAgICAgICAgIEFsc28gbm90ZSB0aGF0IGlmIGEgbWlzbWF0Y2ggb2NjdXJzIGR1cmluZyB0aGUgYnVpbGQsIHRoZSBjb3JyZWN0IG1kNQotICAgICAgICAgICAgICAgIGNoZWNrc3VtIGlzIHBsYWNlZCBpbiB0aGUgYnVpbGQgbG9nIGFuZCBjYW4gYmUgZWFzaWx5IGNvcGllZCB0byB0aGUgcmVjaXBlLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGVyZSBpcyBubyBsaW1pdCB0byBob3cgbWFueSBmaWxlcyB5b3UgY2FuIHNwZWNpZnkgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ19GSUxFU19DSEtTVU08L2ZpbGVuYW1lPiB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICBHZW5lcmFsbHksIGhvd2V2ZXIsIGV2ZXJ5IHByb2plY3QgcmVxdWlyZXMgYSBmZXcgc3BlY2lmaWNhdGlvbnMgZm9yIGxpY2Vuc2UgdHJhY2tpbmcuCi0gICAgICAgICAgICAgICAgTWFueSBwcm9qZWN0cyBoYXZlIGEgIkNPUFlJTkciIGZpbGUgdGhhdCBzdG9yZXMgdGhlIGxpY2Vuc2UgaW5mb3JtYXRpb24gZm9yIGFsbCB0aGUgc291cmNlCi0gICAgICAgICAgICAgICAgY29kZSBmaWxlcy4KLSAgICAgICAgICAgICAgICBUaGlzIHByYWN0aWNlIGFsbG93cyB5b3UgdG8ganVzdCB0cmFjayB0aGUgIkNPUFlJTkciIGZpbGUgYXMgbG9uZyBhcyBpdCBpcyBrZXB0IHVwIHRvIGRhdGUuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDx0aXA+Ci0gICAgICAgICAgICAgICAgSWYgeW91IHNwZWNpZnkgYW4gZW1wdHkgb3IgaW52YWxpZCAibWQ1IiBwYXJhbWV0ZXIsIEJpdEJha2UgcmV0dXJucyBhbiBtZDUgbWlzLW1hdGNoCi0gICAgICAgICAgICAgICAgZXJyb3IgYW5kIGRpc3BsYXlzIHRoZSBjb3JyZWN0ICJtZDUiIHBhcmFtZXRlciB2YWx1ZSBkdXJpbmcgdGhlIGJ1aWxkLgotICAgICAgICAgICAgICAgIFRoZSBjb3JyZWN0IHBhcmFtZXRlciBpcyBhbHNvIGNhcHR1cmVkIGluIHRoZSBidWlsZCBsb2cuCi0gICAgICAgICAgICA8L3RpcD4KLQotICAgICAgICAgICAgPHRpcD4KLSAgICAgICAgICAgICAgICBJZiB0aGUgd2hvbGUgZmlsZSBjb250YWlucyBvbmx5IGxpY2Vuc2UgdGV4dCwgeW91IGRvIG5vdCBuZWVkIHRvIHVzZSB0aGUgImJlZ2lubGluZSIgYW5kCi0gICAgICAgICAgICAgICAgImVuZGxpbmUiIHBhcmFtZXRlcnMuCi0gICAgICAgICAgICA8L3RpcD4KLSAgICAgICAgPC9zZWN0aW9uPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSJlbmFibGluZy1jb21tZXJjaWFsbHktbGljZW5zZWQtcmVjaXBlcyI+Ci0gICAgICAgIDx0aXRsZT5FbmFibGluZyBDb21tZXJjaWFsbHkgTGljZW5zZWQgUmVjaXBlczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBkaXNhYmxlcwotICAgICAgICAgICAgY29tcG9uZW50cyB0aGF0IGhhdmUgY29tbWVyY2lhbCBvciBvdGhlciBzcGVjaWFsIGxpY2Vuc2luZwotICAgICAgICAgICAgcmVxdWlyZW1lbnRzLgotICAgICAgICAgICAgU3VjaCByZXF1aXJlbWVudHMgYXJlIGRlZmluZWQgb24gYQotICAgICAgICAgICAgcmVjaXBlLWJ5LXJlY2lwZSBiYXNpcyB0aHJvdWdoIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUxJQ0VOU0VfRkxBR1MnPjxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICB2YXJpYWJsZSBkZWZpbml0aW9uIGluIHRoZSBhZmZlY3RlZCByZWNpcGUuCi0gICAgICAgICAgICBGb3IgaW5zdGFuY2UsIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPnBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbHVnaW5zLXVnbHk8L2ZpbGVuYW1lPgotICAgICAgICAgICAgcmVjaXBlIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50OgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBMSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBIZXJlIGlzIGEgc2xpZ2h0bHkgbW9yZSBjb21wbGljYXRlZCBleGFtcGxlIHRoYXQgY29udGFpbnMgYm90aCBhbgotICAgICAgICAgICAgZXhwbGljaXQgcmVjaXBlIG5hbWUgYW5kIHZlcnNpb24gKGFmdGVyIHZhcmlhYmxlIGV4cGFuc2lvbik6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIExJQ0VOU0VfRkxBR1MgPSAibGljZW5zZV8ke1BOfV8ke1BWfSIKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLQkgICAgICAgIEluIG9yZGVyIGZvciBhIGNvbXBvbmVudCByZXN0cmljdGVkIGJ5IGEgPGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1M8L2ZpbGVuYW1lPgotCSAgICAgICAgZGVmaW5pdGlvbiB0byBiZSBlbmFibGVkIGFuZCBpbmNsdWRlZCBpbiBhbiBpbWFnZSwgaXQKLQkgICAgICAgIG5lZWRzIHRvIGhhdmUgYSBtYXRjaGluZyBlbnRyeSBpbiB0aGUgZ2xvYmFsCi0JICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTElDRU5TRV9GTEFHU19XSElURUxJU1QnPjxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTX1dISVRFTElTVDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgdmFyaWFibGUsIHdoaWNoIGlzIGEgdmFyaWFibGUKLQkgICAgICAgIHR5cGljYWxseSBkZWZpbmVkIGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRvIGVuYWJsZQotCSAgICAgICAgdGhlIDxmaWxlbmFtZT5wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGx1Z2lucy11Z2x5PC9maWxlbmFtZT4KLQkgICAgICAgIHBhY2thZ2UsIHlvdSBjb3VsZCBhZGQgZWl0aGVyIHRoZSBzdHJpbmcKLQkgICAgICAgICJjb21tZXJjaWFsX2dzdC1wbHVnaW5zLXVnbHkiIG9yIHRoZSBtb3JlIGdlbmVyYWwgc3RyaW5nCi0JICAgICAgICAiY29tbWVyY2lhbCIgdG8gPGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUPC9maWxlbmFtZT4uCi0gICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbGljZW5zZS1mbGFnLW1hdGNoaW5nJz5MaWNlbnNlIEZsYWcgTWF0Y2hpbmc8L2xpbms+IiBzZWN0aW9uCi0gICAgICAgICAgICBmb3IgYSBmdWxsIGV4cGxhbmF0aW9uIG9mIGhvdyA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHUzwvZmlsZW5hbWU+IG1hdGNoaW5nIHdvcmtzLgotICAgICAgICAgICAgSGVyZSBpcyB0aGUgZXhhbXBsZToKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgTElDRU5TRV9GTEFHU19XSElURUxJU1QgPSAiY29tbWVyY2lhbF9nc3QtcGx1Z2lucy11Z2x5IgotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotCSAgICAgICAgTGlrZXdpc2UsIHRvIGFkZGl0aW9uYWxseSBlbmFibGUgdGhlIHBhY2thZ2UgYnVpbHQgZnJvbSB0aGUgcmVjaXBlIGNvbnRhaW5pbmcKLQkgICAgICAgIDxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTID0gImxpY2Vuc2VfJHtQTn1fJHtQVn0iPC9maWxlbmFtZT4sIGFuZCBhc3N1bWluZwotCSAgICAgICAgdGhhdCB0aGUgYWN0dWFsIHJlY2lwZSBuYW1lIHdhcyA8ZmlsZW5hbWU+ZW1nZF8xLjEwLmJiPC9maWxlbmFtZT4sCi0JICAgICAgICB0aGUgZm9sbG93aW5nIHN0cmluZyB3b3VsZCBlbmFibGUgdGhhdCBwYWNrYWdlIGFzIHdlbGwgYXMKLQkgICAgICAgIHRoZSBvcmlnaW5hbCA8ZmlsZW5hbWU+Z3N0LXBsdWdpbnMtdWdseTwvZmlsZW5hbWU+IHBhY2thZ2U6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIExJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUID0gImNvbW1lcmNpYWxfZ3N0LXBsdWdpbnMtdWdseSBsaWNlbnNlX2VtZ2RfMS4xMCIKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLQkgICAgICAgIEFzIGEgY29udmVuaWVuY2UsIHlvdSBkbyBub3QgbmVlZCB0byBzcGVjaWZ5IHRoZSBjb21wbGV0ZSBsaWNlbnNlIHN0cmluZwotCSAgICAgICAgaW4gdGhlIHdoaXRlbGlzdCBmb3IgZXZlcnkgcGFja2FnZS4KLSAgICAgICAgICAgIFlvdSBjYW4gdXNlIGFuIGFiYnJldmlhdGVkIGZvcm0sIHdoaWNoIGNvbnNpc3RzCi0JICAgICAgICBvZiBqdXN0IHRoZSBmaXJzdCBwb3J0aW9uIG9yIHBvcnRpb25zIG9mIHRoZSBsaWNlbnNlIHN0cmluZyBiZWZvcmUKLQkgICAgICAgIHRoZSBpbml0aWFsIHVuZGVyc2NvcmUgY2hhcmFjdGVyIG9yIGNoYXJhY3RlcnMuCi0gICAgICAgICAgICBBIHBhcnRpYWwgc3RyaW5nIHdpbGwgbWF0Y2gKLQkgICAgICAgIGFueSBsaWNlbnNlIHRoYXQgY29udGFpbnMgdGhlIGdpdmVuIHN0cmluZyBhcyB0aGUgZmlyc3QKLQkgICAgICAgIHBvcnRpb24gb2YgaXRzIGxpY2Vuc2UuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZwotCSAgICAgICAgd2hpdGVsaXN0IHN0cmluZyB3aWxsIGFsc28gbWF0Y2ggYm90aCBvZiB0aGUgcGFja2FnZXMKLQkgICAgICAgIHByZXZpb3VzbHkgbWVudGlvbmVkIGFzIHdlbGwgYXMgYW55IG90aGVyIHBhY2thZ2VzIHRoYXQgaGF2ZQotCSAgICAgICAgbGljZW5zZXMgc3RhcnRpbmcgd2l0aCAiY29tbWVyY2lhbCIgb3IgImxpY2Vuc2UiLgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCA9ICJjb21tZXJjaWFsIGxpY2Vuc2UiCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0ibGljZW5zZS1mbGFnLW1hdGNoaW5nIj4KLSAgICAgICAgICAgIDx0aXRsZT5MaWNlbnNlIEZsYWcgTWF0Y2hpbmc8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLQkJICAgICAgICBMaWNlbnNlIGZsYWcgbWF0Y2hpbmcgYWxsb3dzIHlvdSB0byBjb250cm9sIHdoYXQgcmVjaXBlcyB0aGUKLSAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGluY2x1ZGVzIGluIHRoZSBidWlsZC4KLSAgICAgICAgICAgICAgICBGdW5kYW1lbnRhbGx5LCB0aGUgYnVpbGQgc3lzdGVtIGF0dGVtcHRzIHRvIG1hdGNoCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUxJQ0VOU0VfRkxBR1MnPjxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgc3RyaW5ncyBmb3VuZCBpbiByZWNpcGVzIGFnYWluc3QKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTElDRU5TRV9GTEFHU19XSElURUxJU1QnPjxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTX1dISVRFTElTVDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHN0cmluZ3MgZm91bmQgaW4gdGhlIHdoaXRlbGlzdC4KLSAgICAgICAgICAgICAgICBBIG1hdGNoIGNhdXNlcyB0aGUgYnVpbGQgc3lzdGVtIHRvIGluY2x1ZGUgYSByZWNpcGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgYnVpbGQsIHdoaWxlIGZhaWx1cmUgdG8gZmluZCBhIG1hdGNoIGNhdXNlcyB0aGUgYnVpbGQgc3lzdGVtIHRvCi0gICAgICAgICAgICAgICAgZXhjbHVkZSBhIHJlY2lwZS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgbGljZW5zZSBmbGFnIG1hdGNoaW5nIGlzIHNpbXBsZS4KLSAgICAgICAgICAgICAgICBIb3dldmVyLCB1bmRlcnN0YW5kaW5nIHNvbWUgY29uY2VwdHMgd2lsbCBoZWxwIHlvdQotICAgICAgICAgICAgICAgIGNvcnJlY3RseSBhbmQgZWZmZWN0aXZlbHkgdXNlIG1hdGNoaW5nLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBCZWZvcmUgYSBmbGFnCi0gICAgICAgICAgICAgICAgZGVmaW5lZCBieSBhIHBhcnRpY3VsYXIgcmVjaXBlIGlzIHRlc3RlZCBhZ2FpbnN0IHRoZQotICAgICAgICAgICAgICAgIGNvbnRlbnRzIG9mIHRoZSB3aGl0ZWxpc3QsIHRoZSBleHBhbmRlZCBzdHJpbmcKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+XyR7UE59PC9maWxlbmFtZT4gaXMgYXBwZW5kZWQgdG8gdGhlIGZsYWcuCi0gICAgICAgICAgICAgICAgVGhpcyBleHBhbnNpb24gbWFrZXMgZWFjaCA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHUzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgdmFsdWUgcmVjaXBlLXNwZWNpZmljLgotICAgICAgICAgICAgICAgIEFmdGVyIGV4cGFuc2lvbiwgdGhlIHN0cmluZyBpcyB0aGVuIG1hdGNoZWQgYWdhaW5zdCB0aGUKLSAgICAgICAgICAgICAgICB3aGl0ZWxpc3QuCi0gICAgICAgICAgICAgICAgVGh1cywgc3BlY2lmeWluZwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBpbiByZWNpcGUgImZvbyIsIGZvciBleGFtcGxlLCByZXN1bHRzIGluIHRoZSBzdHJpbmcKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ImNvbW1lcmNpYWxfZm9vIjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIEFuZCwgdG8gY3JlYXRlIGEgbWF0Y2gsIHRoYXQgc3RyaW5nIG11c3QgYXBwZWFyIGluIHRoZQotICAgICAgICAgICAgICAgIHdoaXRlbGlzdC4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSnVkaWNpb3VzIHVzZSBvZiB0aGUgPGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1M8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIHN0cmluZ3MgYW5kIHRoZSBjb250ZW50cyBvZiB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHU19XSElURUxJU1Q8L2ZpbGVuYW1lPiB2YXJpYWJsZQotICAgICAgICAgICAgICAgIGFsbG93cyB5b3UgYSBsb3Qgb2YgZmxleGliaWxpdHkgZm9yIGluY2x1ZGluZyBvciBleGNsdWRpbmcKLSAgICAgICAgICAgICAgICByZWNpcGVzIGJhc2VkIG9uIGxpY2Vuc2luZy4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IGNhbiBicm9hZGVuIHRoZSBtYXRjaGluZyBjYXBhYmlsaXRpZXMgYnkKLSAgICAgICAgICAgICAgICB1c2luZyBsaWNlbnNlIGZsYWdzIHN0cmluZyBzdWJzZXRzIGluIHRoZSB3aGl0ZWxpc3QuCi0gICAgICAgICAgICAgICAgPG5vdGU+V2hlbiB1c2luZyBhIHN0cmluZyBzdWJzZXQsIGJlIHN1cmUgdG8gdXNlIHRoZSBwYXJ0IG9mCi0gICAgICAgICAgICAgICAgICAgIHRoZSBleHBhbmRlZCBzdHJpbmcgdGhhdCBwcmVjZWRlcyB0aGUgYXBwZW5kZWQgdW5kZXJzY29yZQotICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgKGUuZy4gPGZpbGVuYW1lPnVzZXRoaXNwYXJ0XzEuMzwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dXNldGhpc3BhcnRfMS40PC9maWxlbmFtZT4sIGFuZCBzbyBmb3J0aCkuCi0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzaW1wbHkgc3BlY2lmeWluZyB0aGUgc3RyaW5nICJjb21tZXJjaWFsIiBpbgotICAgICAgICAgICAgICAgIHRoZSB3aGl0ZWxpc3QgbWF0Y2hlcyBhbnkgZXhwYW5kZWQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHUzwvZmlsZW5hbWU+IGRlZmluaXRpb24gdGhhdCBzdGFydHMgd2l0aAotICAgICAgICAgICAgICAgIHRoZSBzdHJpbmcgImNvbW1lcmNpYWwiIHN1Y2ggYXMgImNvbW1lcmNpYWxfZm9vIiBhbmQKLSAgICAgICAgICAgICAgICAiY29tbWVyY2lhbF9iYXIiLCB3aGljaCBhcmUgdGhlIHN0cmluZ3MgdGhlIGJ1aWxkIHN5c3RlbQotICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVzIGZvciBoeXBvdGhldGljYWwgcmVjaXBlcyBuYW1lZAotICAgICAgICAgICAgICAgICJmb28iIGFuZCAiYmFyIiBhc3N1bWluZyB0aG9zZSByZWNpcGVzIHNpbXBseSBzcGVjaWZ5IHRoZQotICAgICAgICAgICAgICAgIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIExJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgVGh1cywgeW91IGNhbiBjaG9vc2UgdG8gZXhoYXVzdGl2ZWx5Ci0gICAgICAgICAgICAgICAgZW51bWVyYXRlIGVhY2ggbGljZW5zZSBmbGFnIGluIHRoZSB3aGl0ZWxpc3QgYW5kCi0gICAgICAgICAgICAgICAgYWxsb3cgb25seSBzcGVjaWZpYyByZWNpcGVzIGludG8gdGhlIGltYWdlLCBvcgotICAgICAgICAgICAgICAgIHlvdSBjYW4gdXNlIGEgc3RyaW5nIHN1YnNldCB0aGF0IGNhdXNlcyBhIGJyb2FkZXIgcmFuZ2Ugb2YKLSAgICAgICAgICAgICAgICBtYXRjaGVzIHRvIGFsbG93IGEgcmFuZ2Ugb2YgcmVjaXBlcyBpbnRvIHRoZSBpbWFnZS4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhpcyBzY2hlbWUgd29ya3MgZXZlbiBpZiB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHUzwvZmlsZW5hbWU+IHN0cmluZyBhbHJlYWR5Ci0gICAgICAgICAgICAgICAgaGFzIDxmaWxlbmFtZT5fJHtQTn08L2ZpbGVuYW1lPiBhcHBlbmRlZC4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGJ1aWxkIHN5c3RlbSB0dXJucyB0aGUgbGljZW5zZSBmbGFnCi0gICAgICAgICAgICAgICAgImNvbW1lcmNpYWxfMS4yX2ZvbyIgaW50byAiY29tbWVyY2lhbF8xLjJfZm9vX2ZvbyIgYW5kIHdvdWxkCi0gICAgICAgICAgICAgICAgbWF0Y2ggYm90aCB0aGUgZ2VuZXJhbCAiY29tbWVyY2lhbCIgYW5kIHRoZSBzcGVjaWZpYwotICAgICAgICAgICAgICAgICJjb21tZXJjaWFsXzEuMl9mb28iIHN0cmluZ3MgZm91bmQgaW4gdGhlIHdoaXRlbGlzdCwgYXMKLSAgICAgICAgICAgICAgICBleHBlY3RlZC4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSGVyZSBhcmUgc29tZSBvdGhlciBzY2VuYXJpb3M6Ci0gICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPllvdSBjYW4gc3BlY2lmeSBhIHZlcnNpb25lZCBzdHJpbmcgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgc3VjaCBhcyAiY29tbWVyY2lhbF9mb29fMS4yIiBpbiBhICJmb28iIHJlY2lwZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gZXhwYW5kcyB0aGlzIHN0cmluZyB0bwotICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1lcmNpYWxfZm9vXzEuMl9mb28iLgotICAgICAgICAgICAgICAgICAgICAgICAgQ29tYmluZSB0aGlzIGxpY2Vuc2UgZmxhZyB3aXRoIGEgd2hpdGVsaXN0IHRoYXQgaGFzCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgc3RyaW5nICJjb21tZXJjaWFsIiBhbmQgeW91IG1hdGNoIHRoZSBmbGFnIGFsb25nCi0gICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGFueSBvdGhlciBmbGFnIHRoYXQgc3RhcnRzIHdpdGggdGhlIHN0cmluZwotICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1lcmNpYWwiLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VW5kZXIgdGhlIHNhbWUgY2lyY3Vtc3RhbmNlcywgeW91IGNhbgotICAgICAgICAgICAgICAgICAgICAgICAgdXNlICJjb21tZXJjaWFsX2ZvbyIgaW4gdGhlIHdoaXRlbGlzdCBhbmQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gbm90IG9ubHkgbWF0Y2hlcyAiY29tbWVyY2lhbF9mb29fMS4yIiBidXQKLSAgICAgICAgICAgICAgICAgICAgICAgIGFsc28gbWF0Y2hlcyBhbnkgbGljZW5zZSBmbGFnIHdpdGggdGhlIHN0cmluZwotICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1lcmNpYWxfZm9vIiwgcmVnYXJkbGVzcyBvZiB0aGUgdmVyc2lvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+WW91IGNhbiBiZSB2ZXJ5IHNwZWNpZmljIGFuZCB1c2UgYm90aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgYW5kIHZlcnNpb24gcGFydHMgaW4gdGhlIHdoaXRlbGlzdCAoZS5nLgotICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1lcmNpYWxfZm9vXzEuMiIpIHRvIHNwZWNpZmljYWxseSBtYXRjaCBhCi0gICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uZWQgcmVjaXBlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9Im90aGVyLXZhcmlhYmxlcy1yZWxhdGVkLXRvLWNvbW1lcmNpYWwtbGljZW5zZXMiPgotICAgICAgICAgICAgPHRpdGxlPk90aGVyIFZhcmlhYmxlcyBSZWxhdGVkIHRvIENvbW1lcmNpYWwgTGljZW5zZXM8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBPdGhlciBoZWxwZnVsIHZhcmlhYmxlcyByZWxhdGVkIHRvIGNvbW1lcmNpYWwKLSAgICAgICAgICAgICAgICBsaWNlbnNlIGhhbmRsaW5nIGV4aXN0IGFuZCBhcmUgZGVmaW5lZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1kaXN0cm92YXJzLmluYzwvZmlsZW5hbWU+IGZpbGU6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBDT01NRVJDSUFMX0FVRElPX1BMVUdJTlMgPz0gIiIKLSAgICAgQ09NTUVSQ0lBTF9WSURFT19QTFVHSU5TID89ICIiCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIGVuYWJsZSB0aGVzZSBjb21wb25lbnRzLCB5b3UgY2FuIGRvIHNvIGJ5IG1ha2luZyBzdXJlIHlvdSBoYXZlCi0gICAgICAgICAgICAgICAgc3RhdGVtZW50cyBzaW1pbGFyIHRvIHRoZSBmb2xsb3dpbmcKLSAgICAgICAgICAgICAgICBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgQ09NTUVSQ0lBTF9BVURJT19QTFVHSU5TID0gImdzdC1wbHVnaW5zLXVnbHktbWFkIFwKLSAgICAgICAgZ3N0LXBsdWdpbnMtdWdseS1tcGVnYXVkaW9wYXJzZSIKLSAgICAgQ09NTUVSQ0lBTF9WSURFT19QTFVHSU5TID0gImdzdC1wbHVnaW5zLXVnbHktbXBlZzJkZWMgXAotICAgICAgICBnc3QtcGx1Z2lucy11Z2x5LW1wZWdzdHJlYW0gZ3N0LXBsdWdpbnMtYmFkLW1wZWd2aWRlb3BhcnNlIgotICAgICBMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCA9ICJjb21tZXJjaWFsX2dzdC1wbHVnaW5zLXVnbHkgY29tbWVyY2lhbF9nc3QtcGx1Z2lucy1iYWQgY29tbWVyY2lhbF9xbW1wIgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBPZiBjb3Vyc2UsIHlvdSBjb3VsZCBhbHNvIGNyZWF0ZSBhIG1hdGNoaW5nIHdoaXRlbGlzdAotICAgICAgICAgICAgICAgIGZvciB0aG9zZSBjb21wb25lbnRzIHVzaW5nIHRoZSBtb3JlIGdlbmVyYWwgImNvbW1lcmNpYWwiCi0gICAgICAgICAgICAgICAgaW4gdGhlIHdoaXRlbGlzdCwgYnV0IHRoYXQgd291bGQgYWxzbyBlbmFibGUgYWxsIHRoZQotICAgICAgICAgICAgICAgIG90aGVyIHBhY2thZ2VzIHdpdGgKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTElDRU5TRV9GTEFHUyc+PGZpbGVuYW1lPkxJQ0VOU0VfRkxBR1M8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICBjb250YWluaW5nICJjb21tZXJjaWFsIiwgd2hpY2ggeW91IG1heSBvciBtYXkgbm90IHdhbnQ6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCA9ICJjb21tZXJjaWFsIgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgU3BlY2lmeWluZyBhdWRpbyBhbmQgdmlkZW8gcGx1Zy1pbnMgYXMgcGFydCBvZiB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Q09NTUVSQ0lBTF9BVURJT19QTFVHSU5TPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPkNPTU1FUkNJQUxfVklERU9fUExVR0lOUzwvZmlsZW5hbWU+IHN0YXRlbWVudHMKLSAgICAgICAgICAgICAgICAoYWxvbmcgd2l0aCB0aGUgZW5hYmxpbmcKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRV9GTEFHU19XSElURUxJU1Q8L2ZpbGVuYW1lPikgaW5jbHVkZXMgdGhlCi0gICAgICAgICAgICAgICAgcGx1Zy1pbnMgb3IgY29tcG9uZW50cyBpbnRvIGJ1aWx0IGltYWdlcywgdGh1cyBhZGRpbmcKLSAgICAgICAgICAgICAgICBzdXBwb3J0IGZvciBtZWRpYSBmb3JtYXRzIG9yIGNvbXBvbmVudHMuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLSAgICA8L3NlY3Rpb24+Ci08L3NlY3Rpb24+Ci08L2NoYXB0ZXI+Ci08IS0tCi12aW06IGV4cGFuZHRhYiB0dz04MCB0cz00Ci0tLT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvdXNpbmdwb2t5LnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvdXNpbmdwb2t5LnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTNkOWFkNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3VzaW5ncG9reS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMDkxICswLDAgQEAKLTwhRE9DVFlQRSBjaGFwdGVyIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKLSJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiCi1bPCFFTlRJVFkgJSBwb2t5IFNZU1RFTSAiLi4vcG9reS5lbnQiPiAlcG9reTsgXSA+Ci0KLTxjaGFwdGVyIGlkPSd1c2luZ3Bva3knPgotPHRpdGxlPlVzaW5nIHRoZSBZb2N0byBQcm9qZWN0PC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGlzIGNoYXB0ZXIgZGVzY3JpYmVzIGNvbW1vbiB1c2FnZSBmb3IgdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgIFRoZSBpbmZvcm1hdGlvbiBpcyBpbnRyb2R1Y3RvcnkgaW4gbmF0dXJlIGFzIG90aGVyIG1hbnVhbHMgaW4gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgZG9jdW1lbnRhdGlvbiBzZXQgcHJvdmlkZSBtb3JlIGRldGFpbHMgb24gaG93IHRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICA8L3BhcmE+Ci0KLTxzZWN0aW9uIGlkPSd1c2luZ3Bva3ktYnVpbGQnPgotICAgIDx0aXRsZT5SdW5uaW5nIGEgQnVpbGQ8L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBhIHN1bW1hcnkgb2YgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIHByb3ZpZGVzIGluZm9ybWF0aW9uCi0gICAgICAgIGZvciBsZXNzIG9idmlvdXMgYXNwZWN0cyBvZiB0aGUgYnVpbGQgcHJvY2Vzcy4KLSAgICAgICAgRm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gb24gaG93IHRvIGJ1aWxkIGFuIGltYWdlIHVzaW5nIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQKLSAgICAgICAgc3lzdGVtLCBzZWUgdGhlCi0gICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7I3FzLWJ1aWxkaW5nLWltYWdlcyc+QnVpbGRpbmcgSW1hZ2VzPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQuCi0gICAgPC9wYXJhPgotCi0gICAgPHNlY3Rpb24gaWQ9J2J1aWxkLW92ZXJ2aWV3Jz4KLSAgICAgICAgPHRpdGxlPkJ1aWxkIE92ZXJ2aWV3PC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEluIHRoZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCB5b3Ugd2lsbCBuZWVkIHRvIGJ1aWxkIGFuIGltYWdlIHdoZW5ldmVyIHlvdSBjaGFuZ2UgaGFyZHdhcmUKLSAgICAgICAgICAgIHN1cHBvcnQsIGFkZCBvciBjaGFuZ2Ugc3lzdGVtIGxpYnJhcmllcywgb3IgYWRkIG9yIGNoYW5nZSBzZXJ2aWNlcyB0aGF0IGhhdmUgZGVwZW5kZW5jaWVzLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPG1lZGlhb2JqZWN0PgotICAgICAgICAgICAgPGltYWdlb2JqZWN0PgotICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9idWlsZGluZy1hbi1pbWFnZS5wbmciIGZvcm1hdD0iUE5HIiBhbGlnbj0nY2VudGVyJyBzY2FsZWZpdD0nMScvPgotICAgICAgICAgICAgPC9pbWFnZW9iamVjdD4KLSAgICAgICAgICAgIDxjYXB0aW9uPgotICAgICAgICAgICAgICAgIDxwYXJhPkJ1aWxkaW5nIGFuIEltYWdlPC9wYXJhPgotICAgICAgICAgICAgPC9jYXB0aW9uPgotICAgICAgICA8L21lZGlhb2JqZWN0PgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGZpcnN0IHRoaW5nIHlvdSBuZWVkIHRvIGRvIGlzIHNldCB1cCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkCi0gICAgICAgICAgICBlbnZpcm9ubWVudCBieSBzb3VyY2luZyB0aGUgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0Ci0gICAgICAgICAgICAoaS5lLgotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4pLgotICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHNvdXJjZSAmT0VfSU5JVF9GSUxFOyBbPHJlcGxhY2VhYmxlPmJ1aWxkX2RpcjwvcmVwbGFjZWFibGU+XQotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgPHJlcGxhY2VhYmxlPmJ1aWxkX2RpcjwvcmVwbGFjZWFibGU+IGFyZ3VtZW50IGlzIG9wdGlvbmFsIGFuZCBzcGVjaWZpZXMgdGhlIGRpcmVjdG9yeSB0aGUKLSAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyBmb3IgdGhlIGJ1aWxkIC0KLSAgICAgICAgICAgIHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgotICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBzcGVjaWZ5IGEgQnVpbGQgRGlyZWN0b3J5LCBpdCBkZWZhdWx0cyB0byBhIGRpcmVjdG9yeQotICAgICAgICAgICAgbmFtZWQgPGZpbGVuYW1lPmJ1aWxkPC9maWxlbmFtZT4gaW4geW91ciBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgotICAgICAgICAgICAgQSBjb21tb24gcHJhY3RpY2UgaXMgdG8gdXNlIGEgZGlmZmVyZW50IEJ1aWxkIERpcmVjdG9yeSBmb3IgZGlmZmVyZW50IHRhcmdldHMuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgPGZpbGVuYW1lPn4vYnVpbGQveDg2PC9maWxlbmFtZT4gZm9yIGEgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPgotICAgICAgICAgICAgdGFyZ2V0LCBhbmQgPGZpbGVuYW1lPn4vYnVpbGQvYXJtPC9maWxlbmFtZT4gZm9yIGEgPGZpbGVuYW1lPnFlbXVhcm08L2ZpbGVuYW1lPiB0YXJnZXQuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIE9uY2UgdGhlIGJ1aWxkIGVudmlyb25tZW50IGlzIHNldCB1cCwgeW91IGNhbiBidWlsZCBhIHRhcmdldCB1c2luZzoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIElmIHlvdSBleHBlcmllbmNlIGEgYnVpbGQgZXJyb3IgZHVlIHRvIHJlc291cmNlcwotICAgICAgICAgICAgICAgICAgICB0ZW1wb3JhcmlseSBiZWluZyB1bmF2YWlsYWJsZSBhbmQgaXQgYXBwZWFycyB5b3UKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkIG5vdCBiZSBoYXZpbmcgdGhpcyBpc3N1ZSwgaXQgbWlnaHQgYmUgZHVlCi0gICAgICAgICAgICAgICAgICAgIHRvIHRoZSBjb21iaW5hdGlvbiBvZiBhIDQuMysgTGludXgga2VybmVsIGFuZAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3lzdGVtZDwvZmlsZW5hbWU+IHZlcnNpb24gMjI4KwotICAgICAgICAgICAgICAgICAgICAoaS5lLiBzZWUgdGhpcwotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vdW5peC5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvMjUzOTAzL2NyZWF0aW5nLXRocmVhZHMtZmFpbHMtd2l0aC1yZXNvdXJjZS10ZW1wb3JhcmlseS11bmF2YWlsYWJsZS13aXRoLTQtMy1rZXJuZWwnPmxpbms8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICBmb3IgaW5mb3JtYXRpb24pLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUbyB3b3JrIGFyb3VuZCB0aGlzIGlzc3VlLCB5b3UgY2FuIHRyeSBlaXRoZXIKLSAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnkgdGhlIGJ1aWxkIGFnYWluLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGlmeSB0aGUgIkRlZmF1bHRUYXNrc01heCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3lzdGVtZDwvZmlsZW5hbWU+IHBhcmFtZXRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHVuY29tbWVudGluZyBpdCBhbmQgc2V0dGluZyBpdCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmZpbml0eSIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoaXMgcGFyYW1ldGVyIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zeXN0ZW0uY29uZjwvZmlsZW5hbWU+IGZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGVkIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ldGMvc3lzdGVtZDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gbW9zdCBzeXN0ZW1zLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSA8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4gaXMgdGhlIG5hbWUgb2YgdGhlIHJlY2lwZSB5b3Ugd2FudCB0byBidWlsZC4KLSAgICAgICAgICAgIENvbW1vbiB0YXJnZXRzIGFyZSB0aGUgaW1hZ2VzIGluIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXM8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXM8L2ZpbGVuYW1lPiwgZXRjLiBhbGwgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KLSAgICAgICAgICAgIE9yLCB0aGUgdGFyZ2V0IGNhbiBiZSB0aGUgbmFtZSBvZiBhIHJlY2lwZSBmb3IgYSBzcGVjaWZpYyBwaWVjZSBvZiBzb2Z0d2FyZSBzdWNoIGFzCi0gICAgICAgICAgICBCdXN5Qm94LgotICAgICAgICAgICAgRm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGUgaW1hZ2VzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHN1cHBvcnRzLCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0icmVmLWltYWdlcyI+SW1hZ2VzPC9saW5rPiIgY2hhcHRlci4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxub3RlPgotICAgICAgICAgICAgQnVpbGRpbmcgYW4gaW1hZ2Ugd2l0aG91dCBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uCi0gICAgICAgICAgICAzIChHUEx2MyksIG9yIHNpbWlsYXJseSBsaWNlbnNlZCwgY29tcG9uZW50cyBpcyBzdXBwb3J0ZWQgZm9yCi0gICAgICAgICAgICBvbmx5IG1pbmltYWwgYW5kIGJhc2UgaW1hZ2VzLgotICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0ncmVmLWltYWdlcyc+SW1hZ2VzPC9saW5rPiIgY2hhcHRlciBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgPC9ub3RlPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdidWlsZGluZy1hbi1pbWFnZS11c2luZy1ncGwtY29tcG9uZW50cyc+Ci0gICAgICAgIDx0aXRsZT5CdWlsZGluZyBhbiBJbWFnZSBVc2luZyBHUEwgQ29tcG9uZW50czwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBXaGVuIGJ1aWxkaW5nIGFuIGltYWdlIHVzaW5nIEdQTCBjb21wb25lbnRzLCB5b3UgbmVlZCB0byBtYWludGFpbiB5b3VyIG9yaWdpbmFsCi0gICAgICAgICAgICBzZXR0aW5ncyBhbmQgbm90IHN3aXRjaCBiYWNrIGFuZCBmb3J0aCBhcHBseWluZyBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIEdOVQotICAgICAgICAgICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSAgICAgICAgICAgIElmIHlvdSByZWJ1aWxkIHVzaW5nIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBHUEwsIGRlcGVuZGVuY3kgZXJyb3JzIG1pZ2h0IG9jY3VyCi0gICAgICAgICAgICBkdWUgdG8gc29tZSBjb21wb25lbnRzIG5vdCBiZWluZyByZWJ1aWx0LgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0ndXNpbmdwb2t5LWluc3RhbGwnPgotICAgIDx0aXRsZT5JbnN0YWxsaW5nIGFuZCBVc2luZyB0aGUgUmVzdWx0PC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBPbmNlIGFuIGltYWdlIGhhcyBiZWVuIGJ1aWx0LCBpdCBvZnRlbiBuZWVkcyB0byBiZSBpbnN0YWxsZWQuCi0gICAgICAgIFRoZSBpbWFnZXMgYW5kIGtlcm5lbHMgYnVpbHQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYXJlIHBsYWNlZCBpbiB0aGUKLSAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+IGluCi0gICAgICAgIDxmaWxlbmFtZSBjbGFzcz0iZGlyZWN0b3J5Ij50bXAvZGVwbG95L2ltYWdlczwvZmlsZW5hbWU+LgotICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHJ1biBwcmUtYnVpbHQgaW1hZ2VzIHN1Y2ggYXMgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPgotICAgICAgICBhbmQgPGZpbGVuYW1lPnFlbXVhcm08L2ZpbGVuYW1lPiwgc2VlIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvdWxpbms+Ci0gICAgICAgIG1hbnVhbC4KLSAgICAgICAgRm9yIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byBpbnN0YWxsIHRoZXNlIGltYWdlcywgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB5b3VyCi0gICAgICAgIHBhcnRpY3VsYXIgYm9hcmQgb3IgbWFjaGluZS4KLSAgICA8L3BhcmE+Ci08L3NlY3Rpb24+Ci0KLTxzZWN0aW9uIGlkPSd1c2luZ3Bva3ktZGVidWdnaW5nLXRvb2xzLWFuZC10ZWNobmlxdWVzJz4KLSAgICA8dGl0bGU+RGVidWdnaW5nIFRvb2xzIGFuZCBUZWNobmlxdWVzPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUgZXhhY3QgbWV0aG9kIGZvciBkZWJ1Z2dpbmcgYnVpbGQgZmFpbHVyZXMgZGVwZW5kcyBvbiB0aGUgbmF0dXJlIG9mCi0gICAgICAgIHRoZSBwcm9ibGVtIGFuZCBvbiB0aGUgc3lzdGVtJ3MgYXJlYSBmcm9tIHdoaWNoIHRoZSBidWcgb3JpZ2luYXRlcy4KLSAgICAgICAgU3RhbmRhcmQgZGVidWdnaW5nIHByYWN0aWNlcyBzdWNoIGFzIGNvbXBhcmlzb24gYWdhaW5zdCB0aGUgbGFzdAotICAgICAgICBrbm93biB3b3JraW5nIHZlcnNpb24gd2l0aCBleGFtaW5hdGlvbiBvZiB0aGUgY2hhbmdlcyBhbmQgdGhlCi0gICAgICAgIHJlLWFwcGxpY2F0aW9uIG9mIHN0ZXBzIHRvIGlkZW50aWZ5IHRoZSBvbmUgY2F1c2luZyB0aGUgcHJvYmxlbSBhcmUKLSAgICAgICAgdmFsaWQgZm9yIHRoZSBZb2N0byBQcm9qZWN0IGp1c3QgYXMgdGhleSBhcmUgZm9yIGFueSBvdGhlciBzeXN0ZW0uCi0gICAgICAgIEV2ZW4gdGhvdWdoIGl0IGlzIGltcG9zc2libGUgdG8gZGV0YWlsIGV2ZXJ5IHBvc3NpYmxlIHBvdGVudGlhbCBmYWlsdXJlLAotICAgICAgICB0aGlzIHNlY3Rpb24gcHJvdmlkZXMgc29tZSBnZW5lcmFsIHRpcHMgdG8gYWlkIGluIGRlYnVnZ2luZy4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgQSB1c2VmdWwgZmVhdHVyZSBmb3IgZGVidWdnaW5nIGlzIHRoZSBlcnJvciByZXBvcnRpbmcgdG9vbC4KLSAgICAgICAgQ29uZmlndXJpbmcgdGhlIFlvY3RvIFByb2plY3QgdG8gdXNlIHRoaXMgdG9vbCBjYXVzZXMgdGhlCi0gICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gcHJvZHVjZSBlcnJvciByZXBvcnRpbmcgY29tbWFuZHMgYXMKLSAgICAgICAgcGFydCBvZiB0aGUgY29uc29sZSBvdXRwdXQuCi0gICAgICAgIFlvdSBjYW4gZW50ZXIgdGhlIGNvbW1hbmRzIGFmdGVyIHRoZSBidWlsZCBjb21wbGV0ZXMKLSAgICAgICAgdG8gbG9nIGVycm9yIGluZm9ybWF0aW9uCi0gICAgICAgIGludG8gYSBjb21tb24gZGF0YWJhc2UsIHRoYXQgY2FuIGhlbHAgeW91IGZpZ3VyZSBvdXQgd2hhdCBtaWdodCBiZQotICAgICAgICBnb2luZyB3cm9uZy4KLSAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBlbmFibGUgYW5kIHVzZSB0aGlzIGZlYXR1cmUsIHNlZSB0aGUKLSAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5nLXRoZS1lcnJvci1yZXBvcnRpbmctdG9vbCc+VXNpbmcgdGhlIEVycm9yIFJlcG9ydGluZyBUb29sPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBGb3IgZGlzY3Vzc2lvbnMgb24gZGVidWdnaW5nLCBzZWUgdGhlCi0gICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNwbGF0ZGV2LWdkYi1yZW1vdGVkZWJ1Zyc+RGVidWdnaW5nIFdpdGggdGhlIEdOVSBQcm9qZWN0IERlYnVnZ2VyIChHREIpIFJlbW90ZWx5PC91bGluaz4iIHNlY3Rpb24KLSAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsCi0gICAgICAgIGFuZCB0aGUKLSAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I2FkdC1lY2xpcHNlJz5Xb3JraW5nIHdpdGhpbiBFY2xpcHNlPC91bGluaz4iCi0gICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQotICAgICAgICBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsLgotICAgIDwvcGFyYT4KLQotICAgIDxub3RlPgotICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiBwcmVzZW50cyBtYW55IGV4YW1wbGVzIG9mIHRoZQotICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQuCi0gICAgICAgIFlvdSBjYW4gbGVhcm4gYWJvdXQgQml0QmFrZSBieSByZWFkaW5nIHRoZQotICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2JpdGJha2UtdXNlci1tYW51YWwnPkJpdEJha2UgVXNlciBNYW51YWw8L3VsaW5rPi4KLSAgICA8L25vdGU+Ci0KLSAgICA8c2VjdGlvbiBpZD0ndXNpbmdwb2t5LWRlYnVnZ2luZy12aWV3aW5nLWxvZ3MtZnJvbS1mYWlsZWQtdGFza3MnPgotICAgICAgICA8dGl0bGU+Vmlld2luZyBMb2dzIGZyb20gRmFpbGVkIFRhc2tzPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGUgbG9nIGZvciBhIHRhc2sgaW4gdGhlIGZpbGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVdPUktESVInPjxmaWxlbmFtZT5XT1JLRElSPC9maWxlbmFtZT48L2xpbms+PGZpbGVuYW1lPn0vdGVtcC9sb2cuZG9fPC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPi4KLSAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgbG9nIGZvciB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1jb21waWxlJz48ZmlsZW5hbWU+ZG9fY29tcGlsZTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgdGFzayBvZiB0aGUgUUVNVSBtaW5pbWFsIGltYWdlIGZvciB0aGUgeDg2IG1hY2hpbmUKLSAgICAgICAgICAgICg8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+KSBtaWdodCBiZSBpbgotICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC93b3JrL3FlbXV4ODYtcG9reS1saW51eC9jb3JlLWltYWdlLW1pbmltYWwvMS4wLXIwL3RlbXAvbG9nLmRvX2NvbXBpbGU8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgIFRvIHNlZSB0aGUgY29tbWFuZHMKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2JpdGJha2UtdGVybSc+Qml0QmFrZTwvbGluaz4gcmFuCi0gICAgICAgICAgICB0byBnZW5lcmF0ZSBhIGxvZywgbG9vayBhdCB0aGUgY29ycmVzcG9uZGluZwotICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bi5kb188L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT50YXNrbmFtZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgPGZpbGVuYW1lPmxvZy5kb188L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT50YXNrbmFtZTwvcmVwbGFjZWFibGU+IGFuZAotICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bi5kb188L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT50YXNrbmFtZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICBhcmUgYWN0dWFsbHkgc3ltYm9saWMgbGlua3MgdG8KLSAgICAgICAgICAgIDxmaWxlbmFtZT5sb2cuZG9fPC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uPC9maWxlbmFtZT48cmVwbGFjZWFibGU+cGlkPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgPGZpbGVuYW1lPmxvZy5ydW5fPC9maWxlbmFtZT48cmVwbGFjZWFibGU+dGFza25hbWU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uPC9maWxlbmFtZT48cmVwbGFjZWFibGU+cGlkPC9yZXBsYWNlYWJsZT4sCi0gICAgICAgICAgICB3aGVyZSA8cmVwbGFjZWFibGU+cGlkPC9yZXBsYWNlYWJsZT4gaXMgdGhlIFBJRCB0aGUgdGFzayBoYWQgd2hlbgotICAgICAgICAgICAgaXQgcmFuLgotICAgICAgICAgICAgVGhlIHN5bWxpbmtzIGFsd2F5cyBwb2ludCB0byB0aGUgZmlsZXMgY29ycmVzcG9uZGluZyB0byB0aGUgbW9zdAotICAgICAgICAgICAgcmVjZW50IHJ1bi4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSd1c2luZ3Bva3ktZGVidWdnaW5nLXZpZXdpbmctdmFyaWFibGUtdmFsdWVzJz4KLSAgICAgICAgPHRpdGxlPlZpZXdpbmcgVmFyaWFibGUgVmFsdWVzPC90aXRsZT4KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBCaXRCYWtlJ3MgPGZpbGVuYW1lPi1lPC9maWxlbmFtZT4gb3B0aW9uIGlzIHVzZWQgdG8gZGlzcGxheQotICAgICAgICAgICAgdmFyaWFibGUgdmFsdWVzIGFmdGVyIHBhcnNpbmcuCi0gICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgZGlzcGxheXMgdGhlIHZhcmlhYmxlIHZhbHVlcyBhZnRlciB0aGUKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMgKGkuZS4gPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4sCi0gICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS5jb25mPC9maWxlbmFtZT4gYW5kIHNvIGZvcnRoKSBoYXZlIGJlZW4KLSAgICAgICAgICAgIHBhcnNlZDoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlIC1lCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgZGlzcGxheXMgdmFyaWFibGUgdmFsdWVzIGFmdGVyIGEgc3BlY2lmaWMKLSAgICAgICAgICAgIHJlY2lwZSBoYXMgYmVlbiBwYXJzZWQuCi0gICAgICAgICAgICBUaGUgdmFyaWFibGVzIGluY2x1ZGUgdGhvc2UgZnJvbSB0aGUgY29uZmlndXJhdGlvbiBhcyB3ZWxsOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgLWUgcmVjaXBlbmFtZQotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgPG5vdGU+PHBhcmE+Ci0gICAgICAgICAgICAgICAgRWFjaCByZWNpcGUgaGFzIGl0cyBvd24gcHJpdmF0ZSBzZXQgb2YgdmFyaWFibGVzIChkYXRhc3RvcmUpLgotICAgICAgICAgICAgICAgIEludGVybmFsbHksIGFmdGVyIHBhcnNpbmcgdGhlIGNvbmZpZ3VyYXRpb24sIGEgY29weSBvZiB0aGUKLSAgICAgICAgICAgICAgICByZXN1bHRpbmcgZGF0YXN0b3JlIGlzIG1hZGUgcHJpb3IgdG8gcGFyc2luZyBlYWNoIHJlY2lwZS4KLSAgICAgICAgICAgICAgICBUaGlzIGNvcHlpbmcgaW1wbGllcyB0aGF0IHZhcmlhYmxlcyBzZXQgaW4gb25lIHJlY2lwZSB3aWxsCi0gICAgICAgICAgICAgICAgbm90IGJlIHZpc2libGUgdG8gb3RoZXIgcmVjaXBlcy48L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT5MaWtld2lzZSwgZWFjaCB0YXNrIHdpdGhpbiBhIHJlY2lwZSBnZXRzIGEgcHJpdmF0ZQotICAgICAgICAgICAgICAgIGRhdGFzdG9yZSBiYXNlZCBvbiB0aGUgcmVjaXBlIGRhdGFzdG9yZSwgd2hpY2ggbWVhbnMgdGhhdAotICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBzZXQgd2l0aGluIG9uZSB0YXNrIHdpbGwgbm90IGJlIHZpc2libGUgdG8KLSAgICAgICAgICAgICAgICBvdGhlciB0YXNrcy48L3BhcmE+Ci0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEluIHRoZSBvdXRwdXQgb2YgPGZpbGVuYW1lPmJpdGJha2UgLWU8L2ZpbGVuYW1lPiwgZWFjaCB2YXJpYWJsZSBpcwotICAgICAgICAgICAgcHJlY2VkZWQgYnkgYSBkZXNjcmlwdGlvbiBvZiBob3cgdGhlIHZhcmlhYmxlIGdvdCBpdHMgdmFsdWUsCi0gICAgICAgICAgICBpbmNsdWRpbmcgdGVtcG9yYXJ5IHZhbHVlcyB0aGF0IHdlcmUgbGF0ZXIgb3ZlcnJpZGVuLgotICAgICAgICAgICAgVGhpcyBkZXNjcmlwdGlvbiBhbHNvIGluY2x1ZGVzIHZhcmlhYmxlIGZsYWdzICh2YXJmbGFncykgc2V0IG9uCi0gICAgICAgICAgICB0aGUgdmFyaWFibGUuCi0gICAgICAgICAgICBUaGUgb3V0cHV0IGNhbiBiZSB2ZXJ5IGhlbHBmdWwgZHVyaW5nIGRlYnVnZ2luZy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVmFyaWFibGVzIHRoYXQgYXJlIGV4cG9ydGVkIHRvIHRoZSBlbnZpcm9ubWVudCBhcmUgcHJlY2VkZWQgYnkKLSAgICAgICAgICAgIDxmaWxlbmFtZT5leHBvcnQ8L2ZpbGVuYW1lPiBpbiB0aGUgb3V0cHV0IG9mCi0gICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtZTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgU2VlIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgZXhwb3J0IENDPSJpNTg2LXBva3ktbGludXgtZ2NjIC1tMzIgLW1hcmNoPWk1ODYgLS1zeXNyb290PS9ob21lL3VsZi9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy9xZW11eDg2IgotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJbiBhZGRpdGlvbiB0byB2YXJpYWJsZSB2YWx1ZXMsIHRoZSBvdXRwdXQgb2YgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtZTwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgLWU8L2ZpbGVuYW1lPiZuYnNwOzxyZXBsYWNlYWJsZT5yZWNpcGU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgY29tbWFuZHMgaW5jbHVkZXMgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUaGUgb3V0cHV0IHN0YXJ0cyB3aXRoIGEgdHJlZSBsaXN0aW5nIGFsbCBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgIGZpbGVzIGFuZCBjbGFzc2VzIGluY2x1ZGVkIGdsb2JhbGx5LCByZWN1cnNpdmVseSBsaXN0aW5nCi0gICAgICAgICAgICAgICAgICAgIHRoZSBmaWxlcyB0aGV5IGluY2x1ZGUgb3IgaW5oZXJpdCBpbiB0dXJuLgotICAgICAgICAgICAgICAgICAgICBNdWNoIG9mIHRoZSBiZWhhdmlvciBvZiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICAoaW5jbHVkaW5nIHRoZSBiZWhhdmlvciBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbm9ybWFsLXJlY2lwZS1idWlsZC10YXNrcyc+bm9ybWFsIHJlY2lwZSBidWlsZCB0YXNrczwvbGluaz4pCi0gICAgICAgICAgICAgICAgICAgIGlzIGltcGxlbWVudGVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1iYXNlJz48ZmlsZW5hbWU+YmFzZTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICBjbGFzcyBhbmQgdGhlIGNsYXNzZXMgaXQgaW5oZXJpdHMsIHJhdGhlciB0aGFuIGJlaW5nIGJ1aWx0Ci0gICAgICAgICAgICAgICAgICAgIGludG8gQml0QmFrZSBpdHNlbGYuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgdGhlIHZhcmlhYmxlIHZhbHVlcywgYWxsIGZ1bmN0aW9ucyBhcHBlYXIgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIG91dHB1dC4KLSAgICAgICAgICAgICAgICAgICAgRm9yIHNoZWxsIGZ1bmN0aW9ucywgdmFyaWFibGVzIHJlZmVyZW5jZWQgd2l0aGluIHRoZQotICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBib2R5IGFyZSBleHBhbmRlZC4KLSAgICAgICAgICAgICAgICAgICAgSWYgYSBmdW5jdGlvbiBoYXMgYmVlbiBtb2RpZmllZCB1c2luZyBvdmVycmlkZXMgb3IKLSAgICAgICAgICAgICAgICAgICAgdXNpbmcgb3ZlcnJpZGUtc3R5bGUgb3BlcmF0b3JzIGxpa2UKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPl9hcHBlbmQ8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPl9wcmVwZW5kPC9maWxlbmFtZT4sIHRoZW4gdGhlIGZpbmFsIGFzc2VtYmxlZAotICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBib2R5IGFwcGVhcnMgaW4gdGhlIG91dHB1dC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSd2aWV3aW5nLXBhY2thZ2UtaW5mb3JtYXRpb24td2l0aC1vZS1wa2dkYXRhLXV0aWwnPgotICAgICAgICA8dGl0bGU+Vmlld2luZyBQYWNrYWdlIEluZm9ybWF0aW9uIHdpdGggPGZpbGVuYW1lPm9lLXBrZ2RhdGEtdXRpbDwvZmlsZW5hbWU+PC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSA8ZmlsZW5hbWU+b2UtcGtnZGF0YS11dGlsPC9maWxlbmFtZT4gY29tbWFuZC1saW5lCi0gICAgICAgICAgICB1dGlsaXR5IHRvIHF1ZXJ5Ci0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEtHREFUQV9ESVInPjxmaWxlbmFtZT5QS0dEQVRBX0RJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgYW5kIGRpc3BsYXkgdmFyaW91cyBwYWNrYWdlLXJlbGF0ZWQgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICBXaGVuIHlvdSB1c2UgdGhlIHV0aWxpdHksIHlvdSBtdXN0IHVzZSBpdCB0byB2aWV3IGluZm9ybWF0aW9uCi0gICAgICAgICAgICBvbiBwYWNrYWdlcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGJ1aWx0LgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBGb2xsb3dpbmcgYXJlIGEgZmV3IG9mIHRoZSBhdmFpbGFibGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1wa2dkYXRhLXV0aWw8L2ZpbGVuYW1lPiBzdWJjb21tYW5kcy4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSBzdGFuZGFyZCAqIGFuZCA/IGdsb2JiaW5nIHdpbGRjYXJkcyBhcyBwYXJ0IG9mCi0gICAgICAgICAgICAgICAgcGFja2FnZSBuYW1lcyBhbmQgcGF0aHMuCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZ3MgWzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnBhdHRlcm48L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT5dPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIExpc3RzIGFsbCBwYWNrYWdlcyB0aGF0IGhhdmUgYmVlbiBidWlsdCwgb3B0aW9uYWxseQotICAgICAgICAgICAgICAgICAgICBsaW1pdGluZyB0aGUgbWF0Y2ggdG8gcGFja2FnZXMgdGhhdCBtYXRjaAotICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+cGF0dGVybjwvcmVwbGFjZWFibGU+LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2ctZmlsZXMmbmJzcDs8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5wYWNrYWdlPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+Jm5ic3A7Li4uPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIExpc3RzIHRoZSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgY29udGFpbmVkIGluIHRoZSBnaXZlbgotICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcy4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEEgZGlmZmVyZW50IHdheSB0byB2aWV3IHRoZSBjb250ZW50cyBvZiBhIHBhY2thZ2UgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvIGxvb2sgYXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1XT1JLRElSJz48ZmlsZW5hbWU+V09SS0RJUjwvZmlsZW5hbWU+PC9saW5rPjxmaWxlbmFtZT59L3BhY2thZ2VzLXNwbGl0PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBvZiB0aGUgcmVjaXBlIHRoYXQgZ2VuZXJhdGVzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGlzIGNyZWF0ZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sgYW5kIGhhcyBvbmUgc3ViZGlyZWN0b3J5IGZvciBlYWNoIHBhY2thZ2UgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgZ2VuZXJhdGVzLCB3aGljaCBjb250YWlucyB0aGUgZmlsZXMgc3RvcmVkIGluCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHBhY2thZ2UuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBpbnNwZWN0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7V09SS0RJUn0vcGFja2FnZXMtc3BsaXQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LCBtYWtlIHN1cmUgdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtcm0td29yayc+PGZpbGVuYW1lPnJtX3dvcms8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlzIG5vdCBlbmFibGVkIHdoZW4geW91IGJ1aWxkIHRoZSByZWNpcGUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXBrZ2RhdGEtdXRpbCBmaW5kLXBhdGgmbmJzcDs8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5wYXRoPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+Jm5ic3A7Li4uPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIExpc3RzIHRoZSBuYW1lcyBvZiB0aGUgcGFja2FnZXMgdGhhdCBjb250YWluIHRoZSBnaXZlbgotICAgICAgICAgICAgICAgICAgICBwYXRocy4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdGVsbHMgdXMgdGhhdAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3Vzci9zaGFyZS9tYW4vbWFuMS9tYWtlLjE8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBpcyBjb250YWluZWQgaW4gdGhlIDxmaWxlbmFtZT5tYWtlLWRvYzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIHBhY2thZ2U6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBvZS1wa2dkYXRhLXV0aWwgZmluZC1wYXRoIC91c3Ivc2hhcmUvbWFuL21hbjEvbWFrZS4xCi0gICAgIG1ha2UtZG9jOiAvdXNyL3NoYXJlL21hbi9tYW4xL21ha2UuMQotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXBrZ2RhdGEtdXRpbCBsb29rdXAtcmVjaXBlJm5ic3A7PC9maWxlbmFtZT48cmVwbGFjZWFibGU+cGFja2FnZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPiZuYnNwOy4uLjwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBMaXN0cyB0aGUgbmFtZSBvZiB0aGUgcmVjaXBlcyB0aGF0Ci0gICAgICAgICAgICAgICAgICAgIHByb2R1Y2UgdGhlIGdpdmVuIHBhY2thZ2VzLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgPGZpbGVuYW1lPm9lLXBrZ2RhdGEtdXRpbDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBjb21tYW5kLCB1c2UgdGhlIGhlbHAgZmFjaWxpdHk6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgb2UtcGtnZGF0YS11dGlsICZkYXNoOyZkYXNoO2hlbHAKLSAgICAgJCBvZS1wa2dkYXRhLXV0aWwgPHJlcGxhY2VhYmxlPnN1YmNvbW1hbmQ8L3JlcGxhY2VhYmxlPiAtLWhlbHAKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSd1c2luZ3Bva3ktdmlld2luZy1kZXBlbmRlbmNpZXMtYmV0d2Vlbi1yZWNpcGVzLWFuZC10YXNrcyc+Ci0gICAgICAgIDx0aXRsZT5WaWV3aW5nIERlcGVuZGVuY2llcyBCZXR3ZWVuIFJlY2lwZXMgYW5kIFRhc2tzPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFNvbWV0aW1lcyBpdCBjYW4gYmUgaGFyZCB0byBzZWUgd2h5IEJpdEJha2Ugd2FudHMgdG8gYnVpbGQgb3RoZXIKLSAgICAgICAgICAgIHJlY2lwZXMgYmVmb3JlIHRoZSBvbmUgeW91IGhhdmUgc3BlY2lmaWVkLgotICAgICAgICAgICAgRGVwZW5kZW5jeSBpbmZvcm1hdGlvbiBjYW4gaGVscCB5b3UgdW5kZXJzdGFuZCB3aHkgYSByZWNpcGUgaXMKLSAgICAgICAgICAgIGJ1aWx0LgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUbyBnZW5lcmF0ZSBkZXBlbmRlbmN5IGluZm9ybWF0aW9uIGZvciBhIHJlY2lwZSwgcnVuIHRoZSBmb2xsb3dpbmcKLSAgICAgICAgICAgIGNvbW1hbmQ6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSAtZyA8cmVwbGFjZWFibGU+cmVjaXBlbmFtZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBUaGlzIGNvbW1hbmQgd3JpdGVzIHRoZSBmb2xsb3dpbmcgZmlsZXMgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5OgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wbi1idWlsZGxpc3Q8L2ZpbGVuYW1lPjogQSBsaXN0IG9mCi0gICAgICAgICAgICAgICAgICAgIHJlY2lwZXMvdGFyZ2V0cyBpbnZvbHZlZCBpbiBidWlsZGluZwotICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+cmVjaXBlbmFtZTwvcmVwbGFjZWFibGU+LgotICAgICAgICAgICAgICAgICAgICAiSW52b2x2ZWQiIGhlcmUgbWVhbnMgdGhhdCBhdCBsZWFzdCBvbmUgdGFzayBmcm9tIHRoZQotICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIG5lZWRzIHRvIHJ1biB3aGVuIGJ1aWxkaW5nCi0gICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5yZWNpcGVuYW1lPC9yZXBsYWNlYWJsZT4gZnJvbSBzY3JhdGNoLgotICAgICAgICAgICAgICAgICAgICBUYXJnZXRzIHRoYXQgYXJlIGluCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1BU1NVTUVfUFJPVklERUQnPjxmaWxlbmFtZT5BU1NVTUVfUFJPVklERUQ8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgYXJlIG5vdCBsaXN0ZWQuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRhc2stZGVwZW5kcy5kb3Q8L2ZpbGVuYW1lPjogQSBncmFwaCBzaG93aW5nCi0gICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRhc2tzLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgZ3JhcGhzIGFyZSBpbgotICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRE9UXyUyOGdyYXBoX2Rlc2NyaXB0aW9uX2xhbmd1YWdlJTI5Jz5ET1Q8L3VsaW5rPgotICAgICAgICAgICAgZm9ybWF0IGFuZCBjYW4gYmUgY29udmVydGVkIHRvIGltYWdlcyAoZS5nLiB1c2luZyB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5kb3Q8L2ZpbGVuYW1lPiB0b29sIGZyb20KLSAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cuZ3JhcGh2aXoub3JnLyc+R3JhcGh2aXo8L3VsaW5rPikuCi0gICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIERPVCBmaWxlcyB1c2UgYSBwbGFpbiB0ZXh0IGZvcm1hdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBncmFwaHMgZ2VuZXJhdGVkIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgLWc8L2ZpbGVuYW1lPiBjb21tYW5kIGFyZSBvZnRlbiBzbwotICAgICAgICAgICAgICAgICAgICAgICAgbGFyZ2UgYXMgdG8gYmUgZGlmZmljdWx0IHRvIHJlYWQgd2l0aG91dCBzcGVjaWFsCi0gICAgICAgICAgICAgICAgICAgICAgICBwcnVuaW5nIChlLmcuIHdpdGggQml0YmFrZSdzCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LUk8L2ZpbGVuYW1lPiBvcHRpb24pIGFuZCBwcm9jZXNzaW5nLgotICAgICAgICAgICAgICAgICAgICAgICAgRGVzcGl0ZSB0aGUgZm9ybSBhbmQgc2l6ZSBvZiB0aGUgZ3JhcGhzLCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgPGZpbGVuYW1lPi5kb3Q8L2ZpbGVuYW1lPiBmaWxlcyBjYW4gc3RpbGwKLSAgICAgICAgICAgICAgICAgICAgICAgIGJlIHBvc3NpYmxlIHRvIHJlYWQgYW5kIHByb3ZpZGUgdXNlZnVsIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5BcyBhbiBleGFtcGxlLCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50YXNrLWRlcGVuZHMuZG90PC9maWxlbmFtZT4gZmlsZSBjb250YWlucwotICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMgc3VjaCBhcyB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAibGlieHNsdC5kb19jb25maWd1cmUiIC0+ICJsaWJ4bWwyLmRvX3BvcHVsYXRlX3N5c3Jvb3QiCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgYWJvdmUgZXhhbXBsZSBsaW5lIHJldmVhbHMgdGhhdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1jb25maWd1cmUnPjxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sgaW4gPGZpbGVuYW1lPmxpYnhzbHQ8L2ZpbGVuYW1lPiBkZXBlbmRzIG9uIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLXBvcHVsYXRlX3N5c3Jvb3QnPjxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB0YXNrIGluIDxmaWxlbmFtZT5saWJ4bWwyPC9maWxlbmFtZT4sIHdoaWNoIGlzIGEgbm9ybWFsCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY3kgYmV0d2VlbiB0aGUgdHdvIHJlY2lwZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGFuIGV4YW1wbGUgb2YgaG93IDxmaWxlbmFtZT4uZG90PC9maWxlbmFtZT4gZmlsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhbiBiZSBwcm9jZXNzZWQsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zY3JpcHRzL2NvbnRyaWIvZ3JhcGgtdG9vbDwvZmlsZW5hbWU+IFB5dGhvbgotICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0LCB3aGljaCBmaW5kcyBhbmQgZGlzcGxheXMgcGF0aHMgYmV0d2VlbiBncmFwaAotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IGNhbiB1c2UgYSBkaWZmZXJlbnQgbWV0aG9kIHRvIHZpZXcgZGVwZW5kZW5jeSBpbmZvcm1hdGlvbgotICAgICAgICAgICAgYnkgdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgLWcgLXUgdGFza2V4cCA8cmVwbGFjZWFibGU+cmVjaXBlbmFtZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBUaGlzIGNvbW1hbmQgZGlzcGxheXMgYSBHVUkgd2luZG93IGZyb20gd2hpY2ggeW91IGNhbiB2aWV3Ci0gICAgICAgICAgICBidWlsZC10aW1lIGFuZCBydW50aW1lIGRlcGVuZGVuY2llcyBmb3IgdGhlIHJlY2lwZXMgaW52b2x2ZWQgaW4KLSAgICAgICAgICAgIGJ1aWxkaW5nIDxyZXBsYWNlYWJsZT5yZWNpcGVuYW1lPC9yZXBsYWNlYWJsZT4uCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0ndXNpbmdwb2t5LXZpZXdpbmctdGFzay12YXJpYWJsZS1kZXBlbmRlbmNpZXMnPgotICAgICAgICA8dGl0bGU+Vmlld2luZyBUYXNrIFZhcmlhYmxlIERlcGVuZGVuY2llczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBBcyBtZW50aW9uZWQgaW4gdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyNjaGVja3N1bXMnPkNoZWNrc3VtcyAoU2lnbmF0dXJlcyk8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIEJpdEJha2UgVXNlciBNYW51YWwsIEJpdEJha2UgdHJpZXMgdG8gYXV0b21hdGljYWxseQotICAgICAgICAgICAgZGV0ZXJtaW5lIHdoYXQgdmFyaWFibGVzIGEgdGFzayBkZXBlbmRzIG9uIHNvIHRoYXQgaXQgY2FuIHJlcnVuCi0gICAgICAgICAgICB0aGUgdGFzayBpZiBhbnkgdmFsdWVzIG9mIHRoZSB2YXJpYWJsZXMgY2hhbmdlLgotICAgICAgICAgICAgVGhpcyBkZXRlcm1pbmF0aW9uIGlzIHVzdWFsbHkgcmVsaWFibGUuCi0gICAgICAgICAgICBIb3dldmVyLCBpZiB5b3UgZG8gdGhpbmdzIGxpa2UgY29uc3RydWN0IHZhcmlhYmxlIG5hbWVzIGF0IHJ1bnRpbWUsCi0gICAgICAgICAgICB0aGVuIHlvdSBtaWdodCBoYXZlIHRvIG1hbnVhbGx5IGRlY2xhcmUgZGVwZW5kZW5jaWVzIG9uIHRob3NlCi0gICAgICAgICAgICB2YXJpYWJsZXMgdXNpbmcgPGZpbGVuYW1lPnZhcmRlcHM8L2ZpbGVuYW1lPiBhcyBkZXNjcmliZWQgaW4gdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQkJfVVJMOyN2YXJpYWJsZS1mbGFncyc+VmFyaWFibGUgRmxhZ3M8L3VsaW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIEJpdEJha2UgVXNlciBNYW51YWwuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIElmIHlvdSBhcmUgdW5zdXJlIHdoZXRoZXIgYSB2YXJpYWJsZSBkZXBlbmRlbmN5IGlzIGJlaW5nIHBpY2tlZCB1cAotICAgICAgICAgICAgYXV0b21hdGljYWxseSBmb3IgYSBnaXZlbiB0YXNrLCB5b3UgY2FuIGxpc3QgdGhlIHZhcmlhYmxlCi0gICAgICAgICAgICBkZXBlbmRlbmNpZXMgQml0QmFrZSBoYXMgZGV0ZXJtaW5lZCBieSBkb2luZyB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQnVpbGQgdGhlIHJlY2lwZSBjb250YWluaW5nIHRoZSB0YXNrOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+cmVjaXBlbmFtZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBJbnNpZGUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TVEFNUFNfRElSJz48ZmlsZW5hbWU+U1RBTVBTX0RJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnksIGZpbmQgdGhlIHNpZ25hdHVyZSBkYXRhCi0gICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+c2lnZGF0YTwvZmlsZW5hbWU+KSBmaWxlIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgIHRhc2suCi0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+c2lnZGF0YTwvZmlsZW5hbWU+IGZpbGVzIGNvbnRhaW4gYSBwaWNrbGVkCi0gICAgICAgICAgICAgICAgICAgIFB5dGhvbiBkYXRhYmFzZSBvZiBhbGwgdGhlIG1ldGFkYXRhIHRoYXQgd2VudCBpbnRvIGNyZWF0aW5nCi0gICAgICAgICAgICAgICAgICAgIHRoZSBpbnB1dCBjaGVja3N1bSBmb3IgdGhlIHRhc2suCi0gICAgICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWZldGNoJz48ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgdGFzayBvZiB0aGUgPGZpbGVuYW1lPmRiPC9maWxlbmFtZT4gcmVjaXBlLCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNpZ2RhdGE8L2ZpbGVuYW1lPiBmaWxlIG1pZ2h0IGJlIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgbG9jYXRpb246Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJHtCVUlMRERJUn0vdG1wL3N0YW1wcy9pNTg2LXBva3ktbGludXgvZGIvNi4wLjMwLXIxLmRvX2ZldGNoLnNpZ2RhdGEuN2MwNDhjMTgyMjJiMTZmZjBiY2VlMjAwMGVmNjQ4YjEKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBGb3IgdGFza3MgdGhhdCBhcmUgYWNjZWxlcmF0ZWQgdGhyb3VnaCB0aGUgc2hhcmVkIHN0YXRlCi0gICAgICAgICAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSdzaGFyZWQtc3RhdGUtY2FjaGUnPnNzdGF0ZTwvbGluaz4pCi0gICAgICAgICAgICAgICAgICAgIGNhY2hlLCBhbiBhZGRpdGlvbmFsIDxmaWxlbmFtZT5zaWdpbmZvPC9maWxlbmFtZT4gZmlsZSBpcwotICAgICAgICAgICAgICAgICAgICB3cml0dGVuIGludG8KLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNTVEFURV9ESVInPjxmaWxlbmFtZT5TU1RBVEVfRElSPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIGFsb25nIHdpdGggdGhlIGNhY2hlZCB0YXNrIG91dHB1dC4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5zaWdpbmZvPC9maWxlbmFtZT4gZmlsZXMgY29udGFpbiBleGFjdGx5IHRoZQotICAgICAgICAgICAgICAgICAgICBzYW1lIGluZm9ybWF0aW9uIGFzIDxmaWxlbmFtZT5zaWdkYXRhPC9maWxlbmFtZT4gZmlsZXMuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgUnVuIDxmaWxlbmFtZT5iaXRiYWtlLWR1bXBzaWc8L2ZpbGVuYW1lPiBvbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNpZ2RhdGE8L2ZpbGVuYW1lPiBvcgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2lnaW5mbzwvZmlsZW5hbWU+IGZpbGUuCi0gICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UtZHVtcHNpZyAke0JVSUxERElSfS90bXAvc3RhbXBzL2k1ODYtcG9reS1saW51eC9kYi82LjAuMzAtcjEuZG9fZmV0Y2guc2lnZGF0YS43YzA0OGMxODIyMmIxNmZmMGJjZWUyMDAwZWY2NDhiMQotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIEluIHRoZSBvdXRwdXQgb2YgdGhlIGFib3ZlIGNvbW1hbmQsIHlvdSB3aWxsIGZpbmQgYSBsaW5lCi0gICAgICAgICAgICAgICAgICAgIGxpa2UgdGhlIGZvbGxvd2luZywgd2hpY2ggbGlzdHMgYWxsIHRoZSAoaW5mZXJyZWQpIHZhcmlhYmxlCi0gICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBmb3IgdGhlIHRhc2suCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgbGlzdCBhbHNvIGluY2x1ZGVzIGluZGlyZWN0IGRlcGVuZGVuY2llcyBmcm9tCi0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBkZXBlbmRpbmcgb24gb3RoZXIgdmFyaWFibGVzLCByZWN1cnNpdmVseS4KLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBUYXNrIGRlcGVuZGVuY2llczogWydQVicsICdTUkNSRVYnLCAnU1JDX1VSSScsICdTUkNfVVJJW21kNXN1bV0nLCAnU1JDX1VSSVtzaGEyNTZzdW1dJywgJ2Jhc2VfZG9fZmV0Y2gnXQotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25zIChlLmcuIDxmaWxlbmFtZT5iYXNlX2RvX2ZldGNoPC9maWxlbmFtZT4pCi0gICAgICAgICAgICAgICAgICAgICAgICBhbHNvIGNvdW50IGFzIHZhcmlhYmxlIGRlcGVuZGVuY2llcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBpbiB0dXJuIGRlcGVuZCBvbiB0aGUgdmFyaWFibGVzIHRoZXkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZS4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICBUaGUgb3V0cHV0IG9mIDxmaWxlbmFtZT5iaXRiYWtlLWR1bXBzaWc8L2ZpbGVuYW1lPiBhbHNvIGluY2x1ZGVzCi0gICAgICAgICAgICAgICAgICAgIHRoZSB2YWx1ZSBlYWNoIHZhcmlhYmxlIGhhZCwgYSBsaXN0IG9mIGRlcGVuZGVuY2llcyBmb3IgZWFjaAotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgYW5kCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyLUJCX0hBU0hCQVNFX1dISVRFTElTVCc+PGZpbGVuYW1lPkJCX0hBU0hCQVNFX1dISVRFTElTVDwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlcmUgaXMgYWxzbyBhIDxmaWxlbmFtZT5iaXRiYWtlLWRpZmZzaWdzPC9maWxlbmFtZT4gY29tbWFuZCBmb3IKLSAgICAgICAgICAgIGNvbXBhcmluZyB0d28gPGZpbGVuYW1lPnNpZ2luZm88L2ZpbGVuYW1lPiBvcgotICAgICAgICAgICAgPGZpbGVuYW1lPnNpZ2RhdGE8L2ZpbGVuYW1lPiBmaWxlcy4KLSAgICAgICAgICAgIFRoaXMgY29tbWFuZCBjYW4gYmUgaGVscGZ1bCB3aGVuIHRyeWluZyB0byBmaWd1cmUgb3V0IHdoYXQgY2hhbmdlZAotICAgICAgICAgICAgYmV0d2VlbiB0d28gdmVyc2lvbnMgb2YgYSB0YXNrLgotICAgICAgICAgICAgSWYgeW91IGNhbGwgPGZpbGVuYW1lPmJpdGJha2UtZGlmZnNpZ3M8L2ZpbGVuYW1lPiB3aXRoIGp1c3Qgb25lCi0gICAgICAgICAgICBmaWxlLCB0aGUgY29tbWFuZCBiZWhhdmVzIGxpa2UKLSAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWR1bXBzaWc8L2ZpbGVuYW1lPi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IGNhbiBhbHNvIHVzZSBCaXRCYWtlIHRvIGR1bXAgb3V0IHRoZSBzaWduYXR1cmUgY29uc3RydWN0aW9uCi0gICAgICAgICAgICBpbmZvcm1hdGlvbiB3aXRob3V0IGV4ZWN1dGluZyB0YXNrcyBieSB1c2luZyBlaXRoZXIgb2YgdGhlCi0gICAgICAgICAgICBmb2xsb3dpbmcgQml0QmFrZSBjb21tYW5kLWxpbmUgb3B0aW9uczoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJmRhc2g7JmRhc2g7ZHVtcC1zaWduYXR1cmVzPTxyZXBsYWNlYWJsZT5TSUdOQVRVUkVfSEFORExFUjwvcmVwbGFjZWFibGU+Ci0gICAgIC1TIDxyZXBsYWNlYWJsZT5TSUdOQVRVUkVfSEFORExFUjwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBUd28gY29tbW9uIHZhbHVlcyBmb3IKLSAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+U0lHTkFUVVJFX0hBTkRMRVI8L3JlcGxhY2VhYmxlPiBhcmUgIm5vbmUiIGFuZAotICAgICAgICAgICAgICAgICJwcmludGRpZmYiLCB3aGljaCBkdW1wIG9ubHkgdGhlIHNpZ25hdHVyZSBvciBjb21wYXJlIHRoZQotICAgICAgICAgICAgICAgIGR1bXBlZCBzaWduYXR1cmUgd2l0aCB0aGUgY2FjaGVkIG9uZSwgcmVzcGVjdGl2ZWx5LgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgVXNpbmcgQml0QmFrZSB3aXRoIGVpdGhlciBvZiB0aGVzZSBvcHRpb25zIGNhdXNlcyBCaXRCYWtlIHRvIGR1bXAKLSAgICAgICAgICAgIG91dCA8ZmlsZW5hbWU+c2lnZGF0YTwvZmlsZW5hbWU+IGZpbGVzIGluIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPnN0YW1wczwvZmlsZW5hbWU+IGRpcmVjdG9yeSBmb3IgZXZlcnkgdGFzayBpdCB3b3VsZCBoYXZlCi0gICAgICAgICAgICBleGVjdXRlZCBpbnN0ZWFkIG9mIGJ1aWxkaW5nIHRoZSBzcGVjaWZpZWQgdGFyZ2V0IHBhY2thZ2UuCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0ndXNpbmdwb2t5LWRlYnVnZ2luZy10YXNrcnVubmluZyc+Ci0gICAgICAgIDx0aXRsZT5SdW5uaW5nIFNwZWNpZmljIFRhc2tzPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEFueSBnaXZlbiByZWNpcGUgY29uc2lzdHMgb2YgYSBzZXQgb2YgdGFza3MuCi0gICAgICAgICAgICBUaGUgc3RhbmRhcmQgQml0QmFrZSBiZWhhdmlvciBpbiBtb3N0IGNhc2VzIGlzOgotICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT4sCi0gICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fdW5wYWNrPC9maWxlbmFtZT4sCi0gICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGF0Y2g8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmRvX2NvbmZpZ3VyZTwvZmlsZW5hbWU+LAotICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgIDxmaWxlbmFtZT5kb19wYWNrYWdlPC9maWxlbmFtZT4sCi0gICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fcGFja2FnZV93cml0ZV8qPC9maWxlbmFtZT4sIGFuZAotICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2J1aWxkPC9maWxlbmFtZT4uCi0gICAgICAgICAgICBUaGUgZGVmYXVsdCB0YXNrIGlzIDxmaWxlbmFtZT5kb19idWlsZDwvZmlsZW5hbWU+IGFuZCBhbnkgdGFza3MKLSAgICAgICAgICAgIG9uIHdoaWNoIGl0IGRlcGVuZHMgYnVpbGQgZmlyc3QuCi0gICAgICAgICAgICBTb21lIHRhc2tzLCBzdWNoIGFzIDxmaWxlbmFtZT5kb19kZXZzaGVsbDwvZmlsZW5hbWU+LCBhcmUgbm90IHBhcnQKLSAgICAgICAgICAgIG9mIHRoZSBkZWZhdWx0IGJ1aWxkIGNoYWluLgotICAgICAgICAgICAgSWYgeW91IHdpc2ggdG8gcnVuIGEgdGFzayB0aGF0IGlzIG5vdCBwYXJ0IG9mIHRoZSBkZWZhdWx0IGJ1aWxkCi0gICAgICAgICAgICBjaGFpbiwgeW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT4tYzwvZmlsZW5hbWU+IG9wdGlvbiBpbiBCaXRCYWtlLgotICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgbWF0Y2hib3gtZGVza3RvcCAtYyBkZXZzaGVsbAotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgPGZpbGVuYW1lPi1jPC9maWxlbmFtZT4gb3B0aW9uIHJlc3BlY3RzIHRhc2sgZGVwZW5kZW5jaWVzLAotICAgICAgICAgICAgd2hpY2ggbWVhbnMgdGhhdCBhbGwgb3RoZXIgdGFza3MgKGluY2x1ZGluZyB0YXNrcyBmcm9tIG90aGVyCi0gICAgICAgICAgICByZWNpcGVzKSB0aGF0IHRoZSBzcGVjaWZpZWQgdGFzayBkZXBlbmRzIG9uIHdpbGwgYmUgcnVuIGJlZm9yZSB0aGUKLSAgICAgICAgICAgIHRhc2suCi0gICAgICAgICAgICBFdmVuIHdoZW4geW91IG1hbnVhbGx5IHNwZWNpZnkgYSB0YXNrIHRvIHJ1biB3aXRoCi0gICAgICAgICAgICA8ZmlsZW5hbWU+LWM8L2ZpbGVuYW1lPiwgQml0QmFrZSB3aWxsIG9ubHkgcnVuIHRoZSB0YXNrIGlmIGl0Ci0gICAgICAgICAgICBjb25zaWRlcnMgaXQgIm91dCBvZiBkYXRlIi4KLSAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzdGFtcC1maWxlcy1hbmQtdGhlLXJlcnVubmluZy1vZi10YXNrcyc+U3RhbXAgRmlsZXMgYW5kIHRoZSBSZXJ1bm5pbmcgb2YgVGFza3M8L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBmb3IgaG93IEJpdEJha2UgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgdGFzayBpcyAib3V0IG9mIGRhdGUiLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBmb3JjZSBhbiB1cC10by1kYXRlIHRhc2sgdG8gYmUgcmVydW4gKGUuZy4KLSAgICAgICAgICAgIGJlY2F1c2UgeW91IG1hZGUgbWFudWFsIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHJlY2lwZSdzCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItV09SS0RJUic+PGZpbGVuYW1lPldPUktESVI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIHRoYXQgeW91IHdhbnQgdG8gdHJ5IG91dCksIHRoZW4geW91IGNhbiB1c2UgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+LWY8L2ZpbGVuYW1lPiBvcHRpb24uCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBUaGUgcmVhc29uIDxmaWxlbmFtZT4tZjwvZmlsZW5hbWU+IGlzIG5ldmVyIHJlcXVpcmVkIHdoZW4KLSAgICAgICAgICAgICAgICBydW5uaW5nIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1kZXZzaGVsbCc+PGZpbGVuYW1lPmRvX2RldnNoZWxsPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGFzayBpcyBiZWNhdXNlIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5bPC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3ZhcmlhYmxlLWZsYWdzJz48ZmlsZW5hbWU+bm9zdGFtcDwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+XTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgdmFyaWFibGUgZmxhZyBpcyBhbHJlYWR5IHNldCBmb3IgdGhlIHRhc2suCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3Mgb25lIHdheSB5b3UgY2FuIHVzZSB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT4tZjwvZmlsZW5hbWU+IG9wdGlvbjoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlIG1hdGNoYm94LWRlc2t0b3AKLSAgICAgICAgICAgICAgIC4KLSAgICAgICAgICAgICAgIC4KLSAgICAgbWFrZSBzb21lIGNoYW5nZXMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoZSB3b3JrIGRpcmVjdG9yeQotICAgICAgICAgICAgICAgLgotICAgICAgICAgICAgICAgLgotICAgICAkIGJpdGJha2UgbWF0Y2hib3gtZGVza3RvcCAtYyBjb21waWxlIC1mCi0gICAgICQgYml0YmFrZSBtYXRjaGJveC1kZXNrdG9wCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoaXMgc2VxdWVuY2UgZmlyc3QgYnVpbGRzIGFuZCB0aGVuIHJlY29tcGlsZXMKLSAgICAgICAgICAgIDxmaWxlbmFtZT5tYXRjaGJveC1kZXNrdG9wPC9maWxlbmFtZT4uCi0gICAgICAgICAgICBUaGUgbGFzdCBjb21tYW5kIHJlcnVucyBhbGwgdGFza3MgKGJhc2ljYWxseSB0aGUgcGFja2FnaW5nIHRhc2tzKQotICAgICAgICAgICAgYWZ0ZXIgdGhlIGNvbXBpbGUuCi0gICAgICAgICAgICBCaXRCYWtlIHJlY29nbml6ZXMgdGhhdCB0aGUgPGZpbGVuYW1lPmRvX2NvbXBpbGU8L2ZpbGVuYW1lPgotICAgICAgICAgICAgdGFzayB3YXMgcmVydW4gYW5kIHRoZXJlZm9yZSB1bmRlcnN0YW5kcyB0aGF0IHRoZSBvdGhlciB0YXNrcwotICAgICAgICAgICAgYWxzbyBuZWVkIHRvIGJlIHJ1biBhZ2Fpbi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQW5vdGhlciwgc2hvcnRlciB3YXkgdG8gcmVydW4gYSB0YXNrIGFuZCBhbGwKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J25vcm1hbC1yZWNpcGUtYnVpbGQtdGFza3MnPm5vcm1hbCByZWNpcGUgYnVpbGQgdGFza3M8L2xpbms+Ci0gICAgICAgICAgICB0aGF0IGRlcGVuZCBvbiBpdCBpcyB0byB1c2UgdGhlIDxmaWxlbmFtZT4tQzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBvcHRpb24uCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyB1cHBlci1jYXNlZCBhbmQgaXMgc2VwYXJhdGUgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LWM8L2ZpbGVuYW1lPiBvcHRpb24sIHdoaWNoIGlzIGxvd2VyLWNhc2VkLgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgVXNpbmcgdGhpcyBvcHRpb24gaW52YWxpZGF0ZXMgdGhlIGdpdmVuIHRhc2sgYW5kIHRoZW4gcnVucyB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1idWlsZCc+PGZpbGVuYW1lPmRvX2J1aWxkPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICB0YXNrLCB3aGljaCBpcyB0aGUgZGVmYXVsdCB0YXNrIGlmIG5vIHRhc2sgaXMgZ2l2ZW4sIGFuZCB0aGUKLSAgICAgICAgICAgIHRhc2tzIG9uIHdoaWNoIGl0IGRlcGVuZHMuCi0gICAgICAgICAgICBZb3UgY291bGQgcmVwbGFjZSB0aGUgZmluYWwgdHdvIGNvbW1hbmRzIGluIHRoZSBwcmV2aW91cyBleGFtcGxlCi0gICAgICAgICAgICB3aXRoIHRoZSBmb2xsb3dpbmcgc2luZ2xlIGNvbW1hbmQ6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSBtYXRjaGJveC1kZXNrdG9wIC1DIGNvbXBpbGUKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIEludGVybmFsbHksIHRoZSA8ZmlsZW5hbWU+LWY8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgIDxmaWxlbmFtZT4tQzwvZmlsZW5hbWU+IG9wdGlvbnMgd29yayBieSB0YWludGluZyAobW9kaWZ5aW5nKSB0aGUKLSAgICAgICAgICAgIGlucHV0IGNoZWNrc3VtIG9mIHRoZSBzcGVjaWZpZWQgdGFzay4KLSAgICAgICAgICAgIFRoaXMgdGFpbnRpbmcgaW5kaXJlY3RseSBjYXVzZXMgdGhlIHRhc2sgYW5kIGl0cwotICAgICAgICAgICAgZGVwZW5kZW50IHRhc2tzIHRvIGJlIHJlcnVuIHRocm91Z2ggdGhlIG5vcm1hbCB0YXNrIGRlcGVuZGVuY3kKLSAgICAgICAgICAgIG1lY2hhbmlzbXMuCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBCaXRCYWtlIGV4cGxpY2l0bHkga2VlcHMgdHJhY2sgb2Ygd2hpY2ggdGFza3MgaGF2ZSBiZWVuCi0gICAgICAgICAgICAgICAgdGFpbnRlZCBpbiB0aGlzIGZhc2hpb24sIGFuZCB3aWxsIHByaW50IHdhcm5pbmdzIHN1Y2ggYXMgdGhlCi0gICAgICAgICAgICAgICAgZm9sbG93aW5nIGZvciBidWlsZHMgaW52b2x2aW5nIHN1Y2ggdGFza3M6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBXQVJOSU5HOiAvaG9tZS91bGYvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1kZXNrdG9wL21hdGNoYm94LWRlc2t0b3BfMi4xLmJiLmRvX2NvbXBpbGUgaXMgdGFpbnRlZCBmcm9tIGEgZm9yY2VkIHJ1bgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBUaGUgcHVycG9zZSBvZiB0aGUgd2FybmluZyBpcyB0byBsZXQgeW91IGtub3cgdGhhdCB0aGUgd29yawotICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBhbmQgYnVpbGQgb3V0cHV0IG1pZ2h0IG5vdCBiZSBpbiB0aGUgY2xlYW4gc3RhdGUgdGhleQotICAgICAgICAgICAgICAgIHdvdWxkIGJlIGluIGZvciBhICJub3JtYWwiIGJ1aWxkLCBkZXBlbmRpbmcgb24gd2hhdCBhY3Rpb25zCi0gICAgICAgICAgICAgICAgeW91IHRvb2suCi0gICAgICAgICAgICAgICAgVG8gZ2V0IHJpZCBvZiBzdWNoIHdhcm5pbmdzLCB5b3UgY2FuIHJlbW92ZSB0aGUgd29yayBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICBhbmQgcmVidWlsZCB0aGUgcmVjaXBlLCBhcyBmb2xsb3dzOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlIG1hdGNoYm94LWRlc2t0b3AgLWMgY2xlYW4KLSAgICAgJCBiaXRiYWtlIG1hdGNoYm94LWRlc2t0b3AKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFlvdSBjYW4gdmlldyBhIGxpc3Qgb2YgdGFza3MgaW4gYSBnaXZlbiBwYWNrYWdlIGJ5IHJ1bm5pbmcgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fbGlzdHRhc2tzPC9maWxlbmFtZT4gdGFzayBhcyBmb2xsb3dzOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgbWF0Y2hib3gtZGVza3RvcCAtYyBsaXN0dGFza3MKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIFRoZSByZXN1bHRzIGFwcGVhciBhcyBvdXRwdXQgdG8gdGhlIGNvbnNvbGUgYW5kIGFyZSBhbHNvIGluIHRoZQotICAgICAgICAgICAgZmlsZSA8ZmlsZW5hbWU+JHtXT1JLRElSfS90ZW1wL2xvZy5kb19saXN0dGFza3M8L2ZpbGVuYW1lPi4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSd1c2luZ3Bva3ktZGVidWdnaW5nLWJpdGJha2UnPgotICAgICAgICA8dGl0bGU+R2VuZXJhbCBCaXRCYWtlIFByb2JsZW1zPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFlvdSBjYW4gc2VlIGRlYnVnIG91dHB1dCBmcm9tIEJpdEJha2UgYnkgdXNpbmcgdGhlIDxmaWxlbmFtZT4tRDwvZmlsZW5hbWU+IG9wdGlvbi4KLSAgICAgICAgICAgIFRoZSBkZWJ1ZyBvdXRwdXQgZ2l2ZXMgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IEJpdEJha2UKLSAgICAgICAgICAgIGlzIGRvaW5nIGFuZCB0aGUgcmVhc29uIGJlaGluZCBpdC4KLSAgICAgICAgICAgIEVhY2ggPGZpbGVuYW1lPi1EPC9maWxlbmFtZT4gb3B0aW9uIHlvdSB1c2UgaW5jcmVhc2VzIHRoZSBsb2dnaW5nIGxldmVsLgotICAgICAgICAgICAgVGhlIG1vc3QgY29tbW9uIHVzYWdlIGlzIDxmaWxlbmFtZT4tREREPC9maWxlbmFtZT4uCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBvdXRwdXQgZnJvbSA8ZmlsZW5hbWU+Yml0YmFrZSAtREREIC12PC9maWxlbmFtZT4gPHJlcGxhY2VhYmxlPnRhcmdldG5hbWU8L3JlcGxhY2VhYmxlPiBjYW4gcmV2ZWFsIHdoeQotICAgICAgICAgICAgQml0QmFrZSBjaG9zZSBhIGNlcnRhaW4gdmVyc2lvbiBvZiBhIHBhY2thZ2Ugb3Igd2h5IEJpdEJha2UKLSAgICAgICAgICAgIHBpY2tlZCBhIGNlcnRhaW4gcHJvdmlkZXIuCi0gICAgICAgICAgICBUaGlzIGNvbW1hbmQgY291bGQgYWxzbyBoZWxwIHlvdSBpbiBhIHNpdHVhdGlvbiB3aGVyZSB5b3UgdGhpbmsgQml0QmFrZSBkaWQgc29tZXRoaW5nCi0gICAgICAgICAgICB1bmV4cGVjdGVkLgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J2RldmVsb3BtZW50LWhvc3Qtc3lzdGVtLWlzc3Vlcyc+Ci0gICAgICAgIDx0aXRsZT5EZXZlbG9wbWVudCBIb3N0IFN5c3RlbSBJc3N1ZXM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgU29tZXRpbWVzIGlzc3VlcyBvbiB0aGUgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0gY2FuIGNhdXNlIHlvdXIKLSAgICAgICAgICAgIGJ1aWxkIHRvIGZhaWwuCi0gICAgICAgICAgICBGb2xsb3dpbmcgYXJlIGtub3duLCBob3N0LXNwZWNpZmljIHByb2JsZW1zLgotICAgICAgICAgICAgQmUgc3VyZSB0byBhbHdheXMgY29uc3VsdCB0aGUKLSAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19SRUxFQVNFX05PVEVTOyc+UmVsZWFzZSBOb3RlczwvdWxpbms+Ci0gICAgICAgICAgICBmb3IgYSBsb29rIGF0IGFsbCByZWxlYXNlLXJlbGF0ZWQgaXNzdWVzLgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT5nbGliYy1pbml0aWFsPC9maWxlbmFtZT4gZmFpbHMgdG8gYnVpbGQ8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBkZXZlbG9wbWVudCBob3N0IHN5c3RlbSBoYXMgdGhlIHVucGF0Y2hlZAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+R05VIE1ha2UgMy44MjwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWluc3RhbGwnPjxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIHRhc2sgZmFpbHMgZm9yIDxmaWxlbmFtZT5nbGliYy1pbml0aWFsPC9maWxlbmFtZT4gZHVyaW5nCi0gICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZC48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxwYXJhPlR5cGljYWxseSwgZXZlcnkgZGlzdHJpYnV0aW9uIHRoYXQgc2hpcHMKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkdOVSBNYWtlIDMuODI8L2ZpbGVuYW1lPiBhcwotICAgICAgICAgICAgICAgICAgICB0aGUgZGVmYXVsdCBhbHJlYWR5IGhhcyB0aGUgcGF0Y2hlZCB2ZXJzaW9uLgotICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBzb21lIGRpc3RyaWJ1dGlvbnMsIHN1Y2ggYXMgRGViaWFuLCBoYXZlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5HTlUgTWFrZSAzLjgyPC9maWxlbmFtZT4gYXMgYW4gb3B0aW9uLCB3aGljaAotICAgICAgICAgICAgICAgICAgICBpcyB1bnBhdGNoZWQuCi0gICAgICAgICAgICAgICAgICAgIFlvdSB3aWxsIHNlZSB0aGlzIGVycm9yIG9uIHRoZXNlIHR5cGVzIG9mIGRpc3RyaWJ1dGlvbnMuCi0gICAgICAgICAgICAgICAgICAgIFN3aXRjaCB0byA8ZmlsZW5hbWU+R05VIE1ha2UgMy44MTwvZmlsZW5hbWU+IG9yIHBhdGNoCi0gICAgICAgICAgICAgICAgICAgIHlvdXIgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPiB0byBzb2x2ZSB0aGUgcHJvYmxlbS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSd1c2luZ3Bva3ktZGVidWdnaW5nLWJ1aWxkZmlsZSc+Ci0gICAgICAgIDx0aXRsZT5CdWlsZGluZyB3aXRoIE5vIERlcGVuZGVuY2llczwvdGl0bGU+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVG8gYnVpbGQgYSBzcGVjaWZpYyByZWNpcGUgKDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPiBmaWxlKSwKLSAgICAgICAgICAgIHlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBmb3JtOgotICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgLWIgPHJlcGxhY2VhYmxlPnNvbWVwYXRoPC9yZXBsYWNlYWJsZT4vPHJlcGxhY2VhYmxlPnNvbWVyZWNpcGU8L3JlcGxhY2VhYmxlPi5iYgotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgVGhpcyBjb21tYW5kIGZvcm0gZG9lcyBub3QgY2hlY2sgZm9yIGRlcGVuZGVuY2llcy4KLSAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IHNob3VsZCB1c2UgaXQKLSAgICAgICAgICAgIG9ubHkgd2hlbiB5b3Uga25vdyBleGlzdGluZyBkZXBlbmRlbmNpZXMgaGF2ZSBiZWVuIG1ldC4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIFlvdSBjYW4gYWxzbyBzcGVjaWZ5IGZyYWdtZW50cyBvZiB0aGUgZmlsZW5hbWUuCi0gICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCBCaXRCYWtlIGNoZWNrcyBmb3IgYSB1bmlxdWUgbWF0Y2guCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0ncmVjaXBlLWxvZ2dpbmctbWVjaGFuaXNtcyc+Ci0gICAgICAgIDx0aXRsZT5SZWNpcGUgTG9nZ2luZyBNZWNoYW5pc21zPC90aXRsZT4KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcyBzZXZlcmFsIGxvZ2dpbmcgZnVuY3Rpb25zIGZvciBwcm9kdWNpbmcKLSAgICAgICAgICAgIGRlYnVnZ2luZyBvdXRwdXQgYW5kIHJlcG9ydGluZyBlcnJvcnMgYW5kIHdhcm5pbmdzLgotICAgICAgICAgICAgRm9yIFB5dGhvbiBmdW5jdGlvbnMsIHRoZSBmb2xsb3dpbmcgbG9nZ2luZyBmdW5jdGlvbnMgZXhpc3QuCi0gICAgICAgICAgICBBbGwgb2YgdGhlc2UgZnVuY3Rpb25zIGxvZyB0bwotICAgICAgICAgICAgPGZpbGVuYW1lPiR7VH0vbG9nLmRvXzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnRhc2s8L3JlcGxhY2VhYmxlPiwKLSAgICAgICAgICAgIGFuZCBjYW4gYWxzbyBsb2cgdG8gc3RhbmRhcmQgb3V0cHV0IChzdGRvdXQpIHdpdGggdGhlIHJpZ2h0Ci0gICAgICAgICAgICBzZXR0aW5nczoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIucGxhaW4oPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bXNnPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+KTwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBXcml0ZXMgPHJlcGxhY2VhYmxlPm1zZzwvcmVwbGFjZWFibGU+IGFzIGlzIHRvIHRoZSBsb2cgd2hpbGUKLSAgICAgICAgICAgICAgICAgICAgYWxzbyBsb2dnaW5nIHRvIHN0ZG91dC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIubm90ZSg8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tc2c8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4pPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIFdyaXRlcyAiTk9URTogPHJlcGxhY2VhYmxlPm1zZzwvcmVwbGFjZWFibGU+IiB0byB0aGUgbG9nLgotICAgICAgICAgICAgICAgICAgICBBbHNvIGxvZ3MgdG8gc3Rkb3V0IGlmIEJpdEJha2UgaXMgY2FsbGVkIHdpdGggIi12Ii4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIuZGVidWcoPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bGV2ZWw8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4sJm5ic3A7PC9maWxlbmFtZT48cmVwbGFjZWFibGU+bXNnPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+KTwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBXcml0ZXMgIkRFQlVHOiA8cmVwbGFjZWFibGU+bXNnPC9yZXBsYWNlYWJsZT4iIHRvIHRoZSBsb2cuCi0gICAgICAgICAgICAgICAgICAgIEFsc28gbG9ncyB0byBzdGRvdXQgaWYgdGhlIGxvZyBsZXZlbCBpcyBncmVhdGVyIHRoYW4gb3IKLSAgICAgICAgICAgICAgICAgICAgZXF1YWwgdG8gPHJlcGxhY2VhYmxlPmxldmVsPC9yZXBsYWNlYWJsZT4uCi0gICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdXNhZ2UtYW5kLXN5bnRheCc+LUQ8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgb3B0aW9uIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi53YXJuKDwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1zZzwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPik8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgV3JpdGVzICJXQVJOSU5HOiA8cmVwbGFjZWFibGU+bXNnPC9yZXBsYWNlYWJsZT4iIHRvIHRoZSBsb2cKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgYWxzbyBsb2dnaW5nIHRvIHN0ZG91dC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIuZXJyb3IoPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bXNnPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+KTwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBXcml0ZXMgIkVSUk9SOiA8cmVwbGFjZWFibGU+bXNnPC9yZXBsYWNlYWJsZT4iIHRvIHRoZSBsb2cKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgYWxzbyBsb2dnaW5nIHRvIHN0ZG91dC4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2F1c2UgdGhlIHRhc2sgdG8gZmFpbC4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5mYXRhbCg8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tc2c8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4pPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgbG9nZ2luZyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYi5lcnJvcig8L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tc2c8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4pPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgYnV0IGFsc28gY2F1c2VzIHRoZSBjYWxsaW5nIHRhc2sgdG8gZmFpbC4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmIuZmF0YWwoKTwvZmlsZW5hbWU+IHJhaXNlcyBhbiBleGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBtZWFucyB5b3UgZG8gbm90IG5lZWQgdG8gcHV0IGEgInJldHVybiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudCBhZnRlciB0aGUgZnVuY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIHNhbWUgbG9nZ2luZyBmdW5jdGlvbnMgYXJlIGFsc28gYXZhaWxhYmxlIGluIHNoZWxsIGZ1bmN0aW9ucywKLSAgICAgICAgICAgIHVuZGVyIHRoZSBuYW1lcwotICAgICAgICAgICAgPGZpbGVuYW1lPmJicGxhaW48L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmJibm90ZTwvZmlsZW5hbWU+LAotICAgICAgICAgICAgPGZpbGVuYW1lPmJiZGVidWc8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmJid2FybjwvZmlsZW5hbWU+LAotICAgICAgICAgICAgPGZpbGVuYW1lPmJiZXJyb3I8L2ZpbGVuYW1lPiwgYW5kIDxmaWxlbmFtZT5iYmZhdGFsPC9maWxlbmFtZT4uCi0gICAgICAgICAgICBUaGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWxvZ2dpbmcnPjxmaWxlbmFtZT5sb2dnaW5nPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICBjbGFzcyBpbXBsZW1lbnRzIHRoZXNlIGZ1bmN0aW9ucy4KLSAgICAgICAgICAgIFNlZSB0aGF0IGNsYXNzIGluIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY2xhc3NlczwvZmlsZW5hbWU+IGZvbGRlciBvZiB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+Ci0gICAgICAgICAgICBmb3IgaW5mb3JtYXRpb24uCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nbG9nZ2luZy13aXRoLXB5dGhvbic+Ci0gICAgICAgICAgICA8dGl0bGU+TG9nZ2luZyBXaXRoIFB5dGhvbjwvdGl0bGU+Ci0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBXaGVuIGNyZWF0aW5nIHJlY2lwZXMgdXNpbmcgUHl0aG9uIGFuZCBpbnNlcnRpbmcgY29kZSB0aGF0IGhhbmRsZXMgYnVpbGQgbG9ncywKLSAgICAgICAgICAgICAgICBrZWVwIGluIG1pbmQgdGhlIGdvYWwgaXMgdG8gaGF2ZSBpbmZvcm1hdGl2ZSBsb2dzIHdoaWxlIGtlZXBpbmcgdGhlIGNvbnNvbGUgYXMKLSAgICAgICAgICAgICAgICAic2lsZW50IiBhcyBwb3NzaWJsZS4KLSAgICAgICAgICAgICAgICBBbHNvLCBpZiB5b3Ugd2FudCBzdGF0dXMgbWVzc2FnZXMgaW4gdGhlIGxvZywgdXNlIHRoZSAiZGVidWciIGxvZ2xldmVsLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSB3cml0dGVuIGluIFB5dGhvbi4KLSAgICAgICAgICAgICAgICBUaGUgY29kZSBoYW5kbGVzIGxvZ2dpbmcgZm9yIGEgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHRoZQotICAgICAgICAgICAgICAgIG51bWJlciBvZiB0YXNrcyBuZWVkZWQgdG8gYmUgcnVuLgotICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWxpc3R0YXNrcyc+PGZpbGVuYW1lPmRvX2xpc3R0YXNrczwvZmlsZW5hbWU+PC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgcHl0aG9uIGRvX2xpc3R0YXNrcygpIHsKLSAgICAgICAgIGJiLmRlYnVnKDIsICJTdGFydGluZyB0byBmaWd1cmUgb3V0IHRoZSB0YXNrIGxpc3QiKQotICAgICAgICAgaWYgbm90ZXdvcnRoeV9jb25kaXRpb246Ci0gICAgICAgICAgICAgYmIubm90ZSgiVGhlcmUgYXJlIDQ3IHRhc2tzIHRvIHJ1biIpCi0gICAgICAgICBiYi5kZWJ1ZygyLCAiR290IHRvIHBvaW50IHh5eiIpCi0gICAgICAgICBpZiB3YXJuaW5nX3RyaWdnZXI6Ci0gICAgICAgICAgICAgYmIud2FybigiRGV0ZWN0ZWQgd2FybmluZ190cmlnZ2VyLCB0aGlzIG1pZ2h0IGJlIGEgcHJvYmxlbSBsYXRlci4iKQotICAgICAgICAgaWYgcmVjb3ZlcmFibGVfZXJyb3I6Ci0gICAgICAgICAgICAgYmIuZXJyb3IoIkhpdCByZWNvdmVyYWJsZV9lcnJvciwgeW91IHJlYWxseSBuZWVkIHRvIGZpeCB0aGlzISIpCi0gICAgICAgICBpZiBmYXRhbF9lcnJvcjoKLSAgICAgICAgICAgICBiYi5mYXRhbCgiZmF0YWxfZXJyb3IgZGV0ZWN0ZWQsIHVuYWJsZSB0byBwcmludCB0aGUgdGFzayBsaXN0IikKLSAgICAgICAgIGJiLnBsYWluKCJUaGUgdGFza3MgcHJlc2VudCBhcmUgYWJjIikKLSAgICAgICAgIGJiLmRlYnVnKDIsICJGaW5pc2hlZCBmaWd1cmluZyBvdXQgdGhlIHRhc2tsaXN0IikKLSAgICAgfQotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdsb2dnaW5nLXdpdGgtYmFzaCc+Ci0gICAgICAgICAgICA8dGl0bGU+TG9nZ2luZyBXaXRoIEJhc2g8L3RpdGxlPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgV2hlbiBjcmVhdGluZyByZWNpcGVzIHVzaW5nIEJhc2ggYW5kIGluc2VydGluZyBjb2RlIHRoYXQgaGFuZGxlcyBidWlsZAotICAgICAgICAgICAgICAgIGxvZ3MsIHlvdSBoYXZlIHRoZSBzYW1lIGdvYWxzIC0gaW5mb3JtYXRpdmUgd2l0aCBtaW5pbWFsIGNvbnNvbGUgb3V0cHV0LgotICAgICAgICAgICAgICAgIFRoZSBzeW50YXggeW91IHVzZSBmb3IgcmVjaXBlcyB3cml0dGVuIGluIEJhc2ggaXMgc2ltaWxhciB0byB0aGF0IG9mCi0gICAgICAgICAgICAgICAgcmVjaXBlcyB3cml0dGVuIGluIFB5dGhvbiBkZXNjcmliZWQgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24uCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHdyaXR0ZW4gaW4gQmFzaC4KLSAgICAgICAgICAgICAgICBUaGUgY29kZSBsb2dzIHRoZSBwcm9ncmVzcyBvZiB0aGUgPGZpbGVuYW1lPmRvX215X2Z1bmN0aW9uPC9maWxlbmFtZT4gZnVuY3Rpb24uCi0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBkb19teV9mdW5jdGlvbigpIHsKLSAgICAgICAgIGJiZGVidWcgMiAiUnVubmluZyBkb19teV9mdW5jdGlvbiIKLSAgICAgICAgIGlmIFsgZXhjZXB0aW9uYWxfY29uZGl0aW9uIF07IHRoZW4KLSAgICAgICAgICAgICBiYm5vdGUgIkhpdCBleGNlcHRpb25hbF9jb25kaXRpb24iCi0gICAgICAgICBmaQotICAgICAgICAgYmJkZWJ1ZyAyICAiR290IHRvIHBvaW50IHh5eiIKLSAgICAgICAgIGlmIFsgd2FybmluZ190cmlnZ2VyIF07IHRoZW4KLSAgICAgICAgICAgICBiYndhcm4gIkRldGVjdGVkIHdhcm5pbmdfdHJpZ2dlciwgdGhpcyBtaWdodCBjYXVzZSBhIHByb2JsZW0gbGF0ZXIuIgotICAgICAgICAgZmkKLSAgICAgICAgIGlmIFsgcmVjb3ZlcmFibGVfZXJyb3IgXTsgdGhlbgotICAgICAgICAgICAgIGJiZXJyb3IgIkhpdCByZWNvdmVyYWJsZV9lcnJvciwgY29ycmVjdGluZyIKLSAgICAgICAgIGZpCi0gICAgICAgICBpZiBbIGZhdGFsX2Vycm9yIF07IHRoZW4KLSAgICAgICAgICAgICBiYmZhdGFsICJmYXRhbF9lcnJvciBkZXRlY3RlZCIKLSAgICAgICAgIGZpCi0gICAgICAgICBiYmRlYnVnIDIgIkNvbXBsZXRlZCBkb19teV9mdW5jdGlvbiIKLSAgICAgfQotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSd1c2luZ3Bva3ktZGVidWdnaW5nLW90aGVycyc+Ci0gICAgICAgIDx0aXRsZT5PdGhlciBUaXBzPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEhlcmUgYXJlIHNvbWUgb3RoZXIgdGlwcyB0aGF0IHlvdSBtaWdodCBmaW5kIHVzZWZ1bDoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBXaGVuIGFkZGluZyBuZXcgcGFja2FnZXMsIGl0IGlzIHdvcnRoIHdhdGNoaW5nIGZvcgotICAgICAgICAgICAgICAgICAgICB1bmRlc2lyYWJsZSBpdGVtcyBtYWtpbmcgdGhlaXIgd2F5IGludG8gY29tcGlsZXIgY29tbWFuZAotICAgICAgICAgICAgICAgICAgICBsaW5lcy4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBkbyBub3Qgd2FudCByZWZlcmVuY2VzIHRvIGxvY2FsIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICBmaWxlcyBsaWtlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL2xpYi88L2ZpbGVuYW1lPiBvcgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3Vzci9pbmNsdWRlLzwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIHJlbW92ZSB0aGUgPGZpbGVuYW1lPnBzcGxhc2g8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBib290IHNwbGFzaHNjcmVlbiwKLSAgICAgICAgICAgICAgICAgICAgYWRkIDxmaWxlbmFtZT5wc3BsYXNoPWZhbHNlPC9maWxlbmFtZT4gdG8gIHRoZSBrZXJuZWwKLSAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBsaW5lLgotICAgICAgICAgICAgICAgICAgICBEb2luZyBzbyBwcmV2ZW50cyA8ZmlsZW5hbWU+cHNwbGFzaDwvZmlsZW5hbWU+IGZyb20gbG9hZGluZwotICAgICAgICAgICAgICAgICAgICBhbmQgdGh1cyBhbGxvd3MgeW91IHRvIHNlZSB0aGUgY29uc29sZS4KLSAgICAgICAgICAgICAgICAgICAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBzd2l0Y2ggb3V0IG9mIHRoZSBzcGxhc2hzY3JlZW4gYnkKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoaW5nIHRoZSB2aXJ0dWFsIGNvbnNvbGUgKGUuZy4gRm4rTGVmdCBvciBGbitSaWdodAotICAgICAgICAgICAgICAgICAgICBvbiBhIFphdXJ1cykuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgUmVtb3ZpbmcKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAodXN1YWxseSA8ZmlsZW5hbWU+dG1wLzwvZmlsZW5hbWU+LCB3aXRoaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPikKLSAgICAgICAgICAgICAgICAgICAgY2FuIG9mdGVuIGZpeCB0ZW1wb3JhcnkgYnVpbGQgaXNzdWVzLgotICAgICAgICAgICAgICAgICAgICBSZW1vdmluZyA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4gaXMgdXN1YWxseSBhCi0gICAgICAgICAgICAgICAgICAgIHJlbGF0aXZlbHkgY2hlYXAgb3BlcmF0aW9uLCBiZWNhdXNlIHRhc2sgb3V0cHV0IHdpbGwgYmUKLSAgICAgICAgICAgICAgICAgICAgY2FjaGVkIGluCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TU1RBVEVfRElSJz48ZmlsZW5hbWU+U1NUQVRFX0RJUjwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAodXN1YWxseSA8ZmlsZW5hbWU+c3N0YXRlLWNhY2hlLzwvZmlsZW5hbWU+LCB3aGljaCBpcwotICAgICAgICAgICAgICAgICAgICBhbHNvIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkpLgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFJlbW92aW5nIDxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPiBtaWdodCBiZSBhCi0gICAgICAgICAgICAgICAgICAgICAgICB3b3JrYXJvdW5kIHJhdGhlciB0aGFuIGEgZml4LgotICAgICAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB0cnlpbmcgdG8gZGV0ZXJtaW5lIHRoZSB1bmRlcmx5aW5nIGNhdXNlCi0gICAgICAgICAgICAgICAgICAgICAgICBvZiBhbiBpc3N1ZSBiZWZvcmUgcmVtb3ZpbmcgdGhlIGRpcmVjdG9yeSBpcyBhIGdvb2QKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkZWEuCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBVbmRlcnN0YW5kaW5nIGhvdyBhIGZlYXR1cmUgaXMgdXNlZCBpbiBwcmFjdGljZSB3aXRoaW4KLSAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgcmVjaXBlcyBjYW4gYmUgdmVyeSBoZWxwZnVsLgotICAgICAgICAgICAgICAgICAgICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBjb25maWd1cmUgc29tZSBtZXRob2QgdGhhdAotICAgICAgICAgICAgICAgICAgICBhbGxvd3MgeW91IHRvIHF1aWNrbHkgc2VhcmNoIHRocm91Z2ggZmlsZXMuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgIDxwYXJhPlVzaW5nIEdOVSBHcmVwLCB5b3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIHNoZWxsCi0gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRvIHJlY3Vyc2l2ZWx5IHNlYXJjaCB0aHJvdWdoIGNvbW1vbgotICAgICAgICAgICAgICAgICAgICByZWNpcGUtcmVsYXRlZCBmaWxlcywgc2tpcHBpbmcgYmluYXJ5IGZpbGVzLAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmdpdDwvZmlsZW5hbWU+IGRpcmVjdG9yaWVzLCBhbmQgdGhlCi0gICAgICAgICAgICAgICAgICAgIEJ1aWxkIERpcmVjdG9yeSAoYXNzdW1pbmcgaXRzIG5hbWUgc3RhcnRzIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgImJ1aWxkIik6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgZygpIHsKLSAgICAgICAgIGdyZXAgLUlyIFwKLSAgICAgICAgICAgICAgLS1leGNsdWRlLWRpcj0uZ2l0IFwKLSAgICAgICAgICAgICAgLS1leGNsdWRlLWRpcj0nYnVpbGQqJyBcCi0gICAgICAgICAgICAgIC0taW5jbHVkZT0nKi5iYionIFwKLSAgICAgICAgICAgICAgLS1pbmNsdWRlPScqLmluYyonIFwKLSAgICAgICAgICAgICAgLS1pbmNsdWRlPScqLmNvbmYqJyBcCi0gICAgICAgICAgICAgIC0taW5jbHVkZT0nKi5weSonIFwKLSAgICAgICAgICAgICAgIiRAIgotICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBzb21lIHVzYWdlIGV4YW1wbGVzOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZyBGT08gICAgIyBTZWFyY2ggcmVjdXJzaXZlbHkgZm9yICJGT08iCi0gICAgICQgZyAtaSBmb28gIyBTZWFyY2ggcmVjdXJzaXZlbHkgZm9yICJmb28iLCBpZ25vcmluZyBjYXNlCi0gICAgICQgZyAtdyBGT08gIyBTZWFyY2ggcmVjdXJzaXZlbHkgZm9yICJGT08iIGFzIGEgd29yZCwgaWdub3JpbmcgZS5nLiAiRk9PQkFSIgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIElmIGZpZ3VyaW5nIG91dCBob3cgc29tZSBmZWF0dXJlIHdvcmtzIHJlcXVpcmVzIGEgbG90IG9mCi0gICAgICAgICAgICAgICAgICAgIHNlYXJjaGluZywgaXQgbWlnaHQgaW5kaWNhdGUgdGhhdCB0aGUgZG9jdW1lbnRhdGlvbiBzaG91bGQKLSAgICAgICAgICAgICAgICAgICAgYmUgZXh0ZW5kZWQgb3IgaW1wcm92ZWQuCi0gICAgICAgICAgICAgICAgICAgIEluIHN1Y2ggY2FzZXMsIGNvbnNpZGVyIGZpbGluZyBhIGRvY3VtZW50YXRpb24gYnVnIHVzaW5nCi0gICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGltcGxlbWVudGF0aW9uIG9mCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy8nPkJ1Z3ppbGxhPC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgIEZvciBnZW5lcmFsIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzdWJtaXQgYSBidWcgYWdhaW5zdAotICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCwgc2VlIHRoZSBZb2N0byBQcm9qZWN0IEJ1Z3ppbGxhCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9CdWd6aWxsYV9Db25maWd1cmF0aW9uX2FuZF9CdWdfVHJhY2tpbmcnPndpa2kgcGFnZTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc3VibWl0dGluZy1hLWRlZmVjdC1hZ2FpbnN0LXRoZS15b2N0by1wcm9qZWN0Jz5TdWJtaXR0aW5nIGEgRGVmZWN0IEFnYWluc3QgdGhlIFlvY3RvIFByb2plY3Q8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiwgd2hpY2ggaXMgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MKLSAgICAgICAgICAgICAgICAgICAgTWFudWFsLgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBtYW51YWxzIG1pZ2h0IG5vdCBiZSB0aGUgcmlnaHQgcGxhY2UgdG8gZG9jdW1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyB0aGF0IGFyZSBwdXJlbHkgaW50ZXJuYWwgYW5kIGhhdmUgYSBsaW1pdGVkCi0gICAgICAgICAgICAgICAgICAgICAgICBzY29wZSAoZS5nLiBpbnRlcm5hbCB2YXJpYWJsZXMgdXNlZCB0byBpbXBsZW1lbnQgYQotICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlIDxmaWxlbmFtZT4uYmJjbGFzczwvZmlsZW5hbWU+IGZpbGUpLgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci08L3NlY3Rpb24+Ci0KLTxzZWN0aW9uIGlkPSdyZWYtcXVpY2stZW11bGF0b3ItcWVtdSc+Ci0gICAgPHRpdGxlPlF1aWNrIEVNVWxhdG9yIChRRU1VKTwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdXNlcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpCi0gICAgICAgIE9wZW4gU291cmNlIHByb2plY3QgYXMgcGFydCBvZiB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCAidG9vbAotICAgICAgICBzZXQiLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBXaXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIFlvY3RvIFByb2plY3QsIFFFTVUgaXMgYW4KLSAgICAgICAgZW11bGF0b3IgYW5kIHZpcnR1YWxpemF0aW9uIG1hY2hpbmUgdGhhdCBhbGxvd3MgeW91IHRvIHJ1biBhIGNvbXBsZXRlCi0gICAgICAgIGltYWdlIHlvdSBoYXZlIGJ1aWx0IHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0IGFzIGp1c3QgYW5vdGhlciB0YXNrCi0gICAgICAgIG9uIHlvdXIgYnVpbGQgc3lzdGVtLgotICAgICAgICBRRU1VIGlzIHVzZWZ1bCBmb3IgcnVubmluZyBhbmQgdGVzdGluZyBpbWFnZXMgYW5kIGFwcGxpY2F0aW9ucyBvbgotICAgICAgICBzdXBwb3J0ZWQgWW9jdG8gUHJvamVjdCBhcmNoaXRlY3R1cmVzIHdpdGhvdXQgaGF2aW5nIGFjdHVhbCBoYXJkd2FyZS4KLSAgICAgICAgQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGUgWW9jdG8gUHJvamVjdCB1c2VzIFFFTVUgdG8gcnVuIGF1dG9tYXRlZAotICAgICAgICBRdWFsaXR5IEFzc3VyYW5jZSAoUUEpIHRlc3RzIG9uIGZpbmFsIGltYWdlcyBzaGlwcGVkIHdpdGggZWFjaAotICAgICAgICByZWxlYXNlLgotICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgbm90IHRoZSBzYW1lIGFzIFFFTVUgaW4gZ2VuZXJhbC4KLSAgICAgICAgPC9ub3RlPgotICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgYSBicmllZiByZWZlcmVuY2UgZm9yIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgIGltcGxlbWVudGF0aW9uIG9mIFFFTVUuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEZvciBvZmZpY2lhbCBpbmZvcm1hdGlvbiBhbmQgZG9jdW1lbnRhdGlvbiBvbiBRRU1VIGluIGdlbmVyYWwsIHNlZSB0aGUKLSAgICAgICAgZm9sbG93aW5nIHJlZmVyZW5jZXM6Ci0gICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGVtcGhhc2lzPjx1bGluayB1cmw9J2h0dHA6Ly93aWtpLnFlbXUub3JnL01haW5fUGFnZSc+UUVNVSBXZWJzaXRlPC91bGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBUaGUgb2ZmaWNpYWwgd2Vic2l0ZSBmb3IgdGhlIFFFTVUgT3BlbiBTb3VyY2UgcHJvamVjdC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PHVsaW5rIHVybD0naHR0cDovL3dpa2kucWVtdS5vcmcvTWFudWFsJz5Eb2N1bWVudGF0aW9uPC91bGluaz46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBUaGUgUUVNVSB1c2VyIG1hbnVhbC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0IGltcGxlbWVudGF0aW9uIG9mCi0gICAgICAgIFFFTVUsIHNlZSB0aGUKLSAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1tYW51YWwtcWVtdSc+VXNpbmcgdGhlIFF1aWNrIEVNVWxhdG9yIChRRU1VKTwvdWxpbms+IgotICAgICAgICBjaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KLSAgICA8L3BhcmE+Ci0KLSAgICA8c2VjdGlvbiBpZD0ncWVtdS1hdmFpbGFiaWxpdHknPgotICAgICAgICA8dGl0bGU+UUVNVSBBdmFpbGFiaWxpdHk8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgUUVNVSBpcyBtYWRlIGF2YWlsYWJsZSB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IGEgbnVtYmVyIG9mIHdheXMuCi0gICAgICAgICAgICBPbmUgbWV0aG9kIGlzIHRvIGluc3RhbGwgYSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKFNESykuCi0gICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gbWFrZSBzdXJlIHlvdSBoYXZlCi0gICAgICAgICAgICBRRU1VIGF2YWlsYWJsZSwgc2VlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjdGhlLXFlbXUtZW11bGF0b3InPlRoZSBRRU1VIEVtdWxhdG9yPC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKLSAgICAgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0ncWVtdS1wZXJmb3JtYW5jZSc+Ci0gICAgICAgIDx0aXRsZT5RRU1VIFBlcmZvcm1hbmNlPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFVzaW5nIFFFTVUgdG8gZW11bGF0ZSB5b3VyIGhhcmR3YXJlIGNhbiByZXN1bHQgaW4gc3BlZWQgaXNzdWVzCi0gICAgICAgICAgICBkZXBlbmRpbmcgb24gdGhlIHRhcmdldCBhbmQgaG9zdCBhcmNoaXRlY3R1cmUgbWl4LgotICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHVzaW5nIHRoZSA8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+IGltYWdlIGluIHRoZQotICAgICAgICAgICAgZW11bGF0b3Igb24gYW4gSW50ZWwtYmFzZWQgMzItYml0ICh4ODYpIGhvc3QgbWFjaGluZSBpcyBmYXN0Ci0gICAgICAgICAgICBiZWNhdXNlIHRoZSB0YXJnZXQgYW5kIGhvc3QgYXJjaGl0ZWN0dXJlcyBtYXRjaC4KLSAgICAgICAgICAgIE9uIHRoZSBvdGhlciBoYW5kLCB1c2luZyB0aGUgPGZpbGVuYW1lPnFlbXVhcm08L2ZpbGVuYW1lPiBpbWFnZQotICAgICAgICAgICAgb24gdGhlIHNhbWUgSW50ZWwtYmFzZWQgaG9zdCBjYW4gYmUgc2xvd2VyLgotICAgICAgICAgICAgQnV0LCB5b3Ugc3RpbGwgYWNoaWV2ZSBmYWl0aGZ1bCBlbXVsYXRpb24gb2YgQVJNLXNwZWNpZmljIGlzc3Vlcy4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVG8gc3BlZWQgdGhpbmdzIHVwLCB0aGUgUUVNVSBpbWFnZXMgc3VwcG9ydCB1c2luZwotICAgICAgICAgICAgPGZpbGVuYW1lPmRpc3RjYzwvZmlsZW5hbWU+IHRvIGNhbGwgYSBjcm9zcy1jb21waWxlciBvdXRzaWRlIHRoZQotICAgICAgICAgICAgZW11bGF0ZWQgc3lzdGVtLgotICAgICAgICAgICAgSWYgeW91IHVzZWQgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiB0byBzdGFydCBRRU1VLCBhbmQgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+ZGlzdGNjZDwvZmlsZW5hbWU+IGFwcGxpY2F0aW9uIGlzIHByZXNlbnQgb24gdGhlIGhvc3QKLSAgICAgICAgICAgIHN5c3RlbSwgYW55IEJpdEJha2UgY3Jvc3MtY29tcGlsaW5nIHRvb2xjaGFpbiBhdmFpbGFibGUgZnJvbSB0aGUKLSAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSBpcyBhdXRvbWF0aWNhbGx5IHVzZWQgZnJvbSB3aXRoaW4gUUVNVSBzaW1wbHkgYnkKLSAgICAgICAgICAgIGNhbGxpbmcgPGZpbGVuYW1lPmRpc3RjYzwvZmlsZW5hbWU+LgotICAgICAgICAgICAgWW91IGNhbiBhY2NvbXBsaXNoIHRoaXMgYnkgZGVmaW5pbmcgdGhlIGNyb3NzLWNvbXBpbGVyIHZhcmlhYmxlCi0gICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+ZXhwb3J0IENDPSJkaXN0Y2MiPC9maWxlbmFtZT4pLgotICAgICAgICAgICAgQWx0ZXJuYXRpdmVseSwgaWYgeW91IGFyZSB1c2luZyBhIHN1aXRhYmxlIFNESyBpbWFnZSBvciB0aGUKLSAgICAgICAgICAgIGFwcHJvcHJpYXRlIHN0YW5kLWFsb25lIHRvb2xjaGFpbiBpcyBwcmVzZW50LCB0aGUgdG9vbGNoYWluIGlzCi0gICAgICAgICAgICBhbHNvIGF1dG9tYXRpY2FsbHkgdXNlZC4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxub3RlPgotICAgICAgICAgICAgU2V2ZXJhbCBtZWNoYW5pc21zIGV4aXN0IHRoYXQgbGV0IHlvdSBjb25uZWN0IHRvIHRoZSBzeXN0ZW0KLSAgICAgICAgICAgIHJ1bm5pbmcgb24gdGhlIFFFTVUgZW11bGF0b3I6Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgUUVNVSBwcm92aWRlcyBhIGZyYW1lYnVmZmVyIGludGVyZmFjZSB0aGF0IG1ha2VzIHN0YW5kYXJkCi0gICAgICAgICAgICAgICAgICAgIGNvbnNvbGVzIGF2YWlsYWJsZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBHZW5lcmFsbHksIGhlYWRsZXNzIGVtYmVkZGVkIGRldmljZXMgaGF2ZSBhIHNlcmlhbCBwb3J0LgotICAgICAgICAgICAgICAgICAgICBJZiBzbywgeW91IGNhbiBjb25maWd1cmUgdGhlIG9wZXJhdGluZyBzeXN0ZW0gb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgIHJ1bm5pbmcgaW1hZ2UgdG8gdXNlIHRoYXQgcG9ydCB0byBydW4gYSBjb25zb2xlLgotICAgICAgICAgICAgICAgICAgICBUaGUgY29ubmVjdGlvbiB1c2VzIHN0YW5kYXJkIElQIG5ldHdvcmtpbmcuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgU1NIIHNlcnZlcnMgZXhpc3QgaW4gc29tZSBRRU1VIGltYWdlcy4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5jb3JlLWltYWdlLXNhdG88L2ZpbGVuYW1lPiBRRU1VIGltYWdlIGhhcyBhCi0gICAgICAgICAgICAgICAgICAgIERyb3BiZWFyIHNlY3VyZSBzaGVsbCAoU1NIKSBzZXJ2ZXIgdGhhdCBydW5zIHdpdGggdGhlIHJvb3QKLSAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQgZGlzYWJsZWQuCi0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1mdWxsLWNtZGxpbmU8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbHNiPC9maWxlbmFtZT4gUUVNVSBpbWFnZXMKLSAgICAgICAgICAgICAgICAgICAgaGF2ZSBPcGVuU1NIIGluc3RlYWQgb2YgRHJvcGJlYXIuCi0gICAgICAgICAgICAgICAgICAgIEluY2x1ZGluZyB0aGVzZSBTU0ggc2VydmVycyBhbGxvdyB5b3UgdG8gdXNlIHN0YW5kYXJkCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc2g8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPnNjcDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGNvbW1hbmRzLgotICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+IFFFTVUgaW1hZ2UsCi0gICAgICAgICAgICAgICAgICAgIGhvd2V2ZXIsIGNvbnRhaW5zIG5vIFNTSCBzZXJ2ZXIuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgYSBwcm92aWRlZCwgdXNlci1zcGFjZSBORlMgc2VydmVyIHRvIGJvb3QKLSAgICAgICAgICAgICAgICAgICAgdGhlIFFFTVUgc2Vzc2lvbiB1c2luZyBhIGxvY2FsIGNvcHkgb2YgdGhlIHJvb3QKLSAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbSBvbiB0aGUgaG9zdC4KLSAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gbWFrZSB0aGlzIGNvbm5lY3Rpb24sIHlvdSBtdXN0IGV4dHJhY3QgYQotICAgICAgICAgICAgICAgICAgICByb290IGZpbGVzeXN0ZW0gdGFyYmFsbCBieSB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXUtZXh0cmFjdC1zZGs8L2ZpbGVuYW1lPiBjb21tYW5kLgotICAgICAgICAgICAgICAgICAgICBBZnRlciBydW5uaW5nIHRoZSBjb21tYW5kLCB5b3UgbXVzdCB0aGVuIHBvaW50IHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIHNjcmlwdCB0byB0aGUgZXh0cmFjdGVkIGRpcmVjdG9yeSBpbnN0ZWFkIG9mIGEgcm9vdAotICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIGltYWdlIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3FlbXUtcnVubmluZy11bmRlci1hLW5ldHdvcmstZmlsZS1zeXN0ZW0tbmZzLXNlcnZlcic+UnVubmluZyBVbmRlciBhIE5ldHdvcmsgRmlsZSBTeXN0ZW0gKE5GUykgU2VydmVyPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvcgotICAgICAgICAgICAgICAgICAgICBtb3JlIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L25vdGU+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3FlbXUtY29tbWFuZC1saW5lLXN5bnRheCc+Ci0gICAgICAgIDx0aXRsZT5RRU1VIENvbW1hbmQtTGluZSBTeW50YXg8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGJhc2ljIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gY29tbWFuZCBzeW50YXggaXMgYXMKLSAgICAgICAgICAgIGZvbGxvd3M6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgcnVucWVtdSBbPHJlcGxhY2VhYmxlPm9wdGlvbjwvcmVwbGFjZWFibGU+IF0gIFsuLi5dCi0gICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBCYXNlZCBvbiB3aGF0IHlvdSBwcm92aWRlIG9uIHRoZSBjb21tYW5kIGxpbmUsCi0gICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IGRvZXMgYSBnb29kIGpvYiBvZiBmaWd1cmluZyBvdXQgd2hhdAotICAgICAgICAgICAgeW91IGFyZSB0cnlpbmcgdG8gZG8uCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgYnkgZGVmYXVsdCwgUUVNVSBsb29rcyBmb3IgdGhlIG1vc3QgcmVjZW50bHkgYnVpbHQKLSAgICAgICAgICAgIGltYWdlIGFjY29yZGluZyB0byB0aGUgdGltZXN0YW1wIHdoZW4gaXQgbmVlZHMgdG8gbG9vayBmb3IgYW4KLSAgICAgICAgICAgIGltYWdlLgotICAgICAgICAgICAgTWluaW1hbGx5LCB0aHJvdWdoIHRoZSB1c2Ugb2Ygb3B0aW9ucywgeW91IG11c3QgcHJvdmlkZSBlaXRoZXIKLSAgICAgICAgICAgIGEgbWFjaGluZSBuYW1lLCBhIHZpcnR1YWwgbWFjaGluZSBpbWFnZQotICAgICAgICAgICAgKDxmaWxlbmFtZT4qd2ljLnZtZGs8L2ZpbGVuYW1lPiksIG9yIGEga2VybmVsIGltYWdlCi0gICAgICAgICAgICAoPGZpbGVuYW1lPiouYmluPC9maWxlbmFtZT4pLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBGb2xsb3dpbmcgaXMgdGhlIGNvbW1hbmQtbGluZSBoZWxwIG91dHB1dCBmb3IgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IGNvbW1hbmQ6Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgcnVucWVtdSAtLWhlbHAKLQotICAgICBVc2FnZTogeW91IGNhbiBydW4gdGhpcyBzY3JpcHQgd2l0aCBhbnkgdmFsaWQgY29tYmluYXRpb24KLSAgICAgb2YgdGhlIGZvbGxvd2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKGluIGFueSBvcmRlcik6Ci0gICAgICAgS0VSTkVMIC0gdGhlIGtlcm5lbCBpbWFnZSBmaWxlIHRvIHVzZQotICAgICAgIFJPT1RGUyAtIHRoZSByb290ZnMgaW1hZ2UgZmlsZSBvciBuZnNyb290IGRpcmVjdG9yeSB0byB1c2UKLSAgICAgICBNQUNISU5FIC0gdGhlIG1hY2hpbmUgbmFtZSAob3B0aW9uYWwsIGF1dG9kZXRlY3RlZCBmcm9tIEtFUk5FTCBmaWxlbmFtZSBpZiB1bnNwZWNpZmllZCkKLSAgICAgICBTaW1wbGlmaWVkIFFFTVUgY29tbWFuZC1saW5lIG9wdGlvbnMgY2FuIGJlIHBhc3NlZCB3aXRoOgotICAgICAgICAgbm9ncmFwaGljIC0gZGlzYWJsZSB2aWRlbyBjb25zb2xlCi0gICAgICAgICBzZXJpYWwgLSBlbmFibGUgYSBzZXJpYWwgY29uc29sZSBvbiAvZGV2L3R0eVMwCi0gICAgICAgICBzbGlycCAtIGVuYWJsZSB1c2VyIG5ldHdvcmtpbmcsIG5vIHJvb3QgcHJpdmlsZWdlcyBpcyByZXF1aXJlZAotICAgICAgICAga3ZtIC0gZW5hYmxlIEtWTSB3aGVuIHJ1bm5pbmcgeDg2L3g4Nl82NCAoVlQtY2FwYWJsZSBDUFUgcmVxdWlyZWQpCi0gICAgICAgICBrdm0tdmhvc3QgLSBlbmFibGUgS1ZNIHdpdGggdmhvc3Qgd2hlbiBydW5uaW5nIHg4Ni94ODZfNjQgKFZULWNhcGFibGUgQ1BVIHJlcXVpcmVkKQotICAgICAgICAgcHVibGljdm5jIC0gZW5hYmxlIGEgVk5DIHNlcnZlciBvcGVuIHRvIGFsbCBob3N0cwotICAgICAgICAgYXVkaW8gLSBlbmFibGUgYXVkaW8KLSAgICAgICAgIFsqL11vdm1mKiAtIE9WTUYgZmlybXdhcmUgZmlsZSBvciBiYXNlIG5hbWUgZm9yIGJvb3Rpbmcgd2l0aCBVRUZJCi0gICAgICAgdGNwc2VyaWFsPSZsdDtwb3J0Jmd0OyAtIHNwZWNpZnkgdGNwIHNlcmlhbCBwb3J0IG51bWJlcgotICAgICAgIGJpb3NkaXI9Jmx0O2RpciZndDsgLSBzcGVjaWZ5IGN1c3RvbSBiaW9zIGRpcgotICAgICAgIGJpb3NmaWxlbmFtZT0mbHQ7ZmlsZW5hbWUmZ3Q7IC0gc3BlY2lmeSBiaW9zIGZpbGVuYW1lCi0gICAgICAgcWVtdXBhcmFtcz0mbHQ7eHl6Jmd0OyAtIHNwZWNpZnkgY3VzdG9tIHBhcmFtZXRlcnMgdG8gUUVNVQotICAgICAgIGJvb3RwYXJhbXM9Jmx0O3h5eiZndDsgLSBzcGVjaWZ5IGN1c3RvbSBrZXJuZWwgcGFyYW1ldGVycyBkdXJpbmcgYm9vdAotICAgICAgIGhlbHAsIC1oLCAtLWhlbHA6IHByaW50IHRoaXMgdGV4dAotCi0gICAgIEV4YW1wbGVzOgotICAgICAgIHJ1bnFlbXUKLSAgICAgICBydW5xZW11IHFlbXVhcm0KLSAgICAgICBydW5xZW11IHRtcC9kZXBsb3kvaW1hZ2VzL3FlbXVhcm0KLSAgICAgICBydW5xZW11IHRtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYvJmx0O3FlbXVib290LmNvbmYmZ3Q7Ci0gICAgICAgcnVucWVtdSBxZW11eDg2LTY0IGNvcmUtaW1hZ2Utc2F0byBleHQ0Ci0gICAgICAgcnVucWVtdSBxZW11eDg2LTY0IHdpYy1pbWFnZS1taW5pbWFsIHdpYwotICAgICAgIHJ1bnFlbXUgcGF0aC90by9iekltYWdlLXFlbXV4ODYuYmluIHBhdGgvdG8vbmZzcm9vdGRpci8gc2VyaWFsCi0gICAgICAgcnVucWVtdSBxZW11eDg2IGlzby9oZGRpbWcvd2ljLnZtZGsvd2ljLnFjb3cyL3dpYy52ZGkvcmFtZnMvY3Bpby5nei4uLgotICAgICAgIHJ1bnFlbXUgcWVtdXg4NiBxZW11cGFyYW1zPSItbSAyNTYiCi0gICAgICAgcnVucWVtdSBxZW11eDg2IGJvb3RwYXJhbXM9InBzcGxhc2g9ZmFsc2UiCi0gICAgICAgcnVucWVtdSBwYXRoL3RvLyZsdDtpbWFnZSZndDstJmx0O21hY2hpbmUmZ3Q7LndpYwotICAgICAgIHJ1bnFlbXUgcGF0aC90by8mbHQ7aW1hZ2UmZ3Q7LSZsdDttYWNoaW5lJmd0Oy53aWMudm1kawotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3J1bnFlbXUtY29tbWFuZC1saW5lLW9wdGlvbnMnPgotICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBDb21tYW5kLUxpbmUgT3B0aW9uczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBGb2xsb3dpbmcgaXMgYSBkZXNjcmlwdGlvbiBvZiA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBvcHRpb25zIHlvdSBjYW4gcHJvdmlkZSBvbiB0aGUgY29tbWFuZCBsaW5lOgotICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+Ci0gICAgICAgICAgICAgICAgSWYgeW91IGRvIHByb3ZpZGUgc29tZSAiaWxsZWdhbCIgb3B0aW9uIGNvbWJpbmF0aW9uIG9yIHBlcmhhcHMKLSAgICAgICAgICAgICAgICB5b3UgZG8gbm90IHByb3ZpZGUgZW5vdWdoIGluIHRoZSB3YXkgb2Ygb3B0aW9ucywKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IHByb3ZpZGVzIGFwcHJvcHJpYXRlIGVycm9yCi0gICAgICAgICAgICAgICAgbWVzc2FnaW5nIHRvIGhlbHAgeW91IGNvcnJlY3QgdGhlIHByb2JsZW0uCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPlFFTVVBUkNIPC9yZXBsYWNlYWJsZT46Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBRRU1VIG1hY2hpbmUgYXJjaGl0ZWN0dXJlLCB3aGljaCBtdXN0IGJlICJxZW11YXJtIiwKLSAgICAgICAgICAgICAgICAgICAgInFlbXVhcm02NCIsICJxZW11bWlwcyIsICJxZW11bWlwczY0IiwgInFlbXVwcGMiLAotICAgICAgICAgICAgICAgICAgICAicWVtdXg4NiIsIG9yICJxZW11eDg2LTY0Ii4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PHJlcGxhY2VhYmxlPlZNPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgVGhlIHZpcnR1YWwgbWFjaGluZSBpbWFnZSwgd2hpY2ggbXVzdCBiZSBhCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4ud2ljLnZtZGs8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgICAgICAgICBVc2UgdGhpcyBvcHRpb24gd2hlbiB5b3Ugd2FudCB0byBib290IGEKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi53aWMudm1kazwvZmlsZW5hbWU+IGltYWdlLgotICAgICAgICAgICAgICAgICAgICBUaGUgaW1hZ2UgZmlsZW5hbWUgeW91IHByb3ZpZGUgbXVzdCBjb250YWluIG9uZSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIHN0cmluZ3M6ICJxZW11eDg2LTY0IiwgInFlbXV4ODYiLCAicWVtdWFybSIsCi0gICAgICAgICAgICAgICAgICAgICJxZW11bWlwczY0IiwgInFlbXVtaXBzIiwgInFlbXVwcGMiLCBvciAicWVtdXNoNCIuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPlJPT1RGUzwvcmVwbGFjZWFibGU+OgotICAgICAgICAgICAgICAgICAgICBBIHJvb3QgZmlsZXN5c3RlbSB0aGF0IGhhcyBvbmUgb2YgdGhlIGZvbGxvd2luZwotICAgICAgICAgICAgICAgICAgICBmaWxldHlwZSBleHRlbnNpb25zOiAiZXh0MiIsICJleHQzIiwgImV4dDQiLCAiamZmczIiLAotICAgICAgICAgICAgICAgICAgICAibmZzIiwgb3IgImJ0cmZzIi4KLSAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGZpbGVuYW1lIHlvdSBwcm92aWRlIGZvciB0aGlzIG9wdGlvbiB1c2VzIOKAnG5mc+KAnSwgaXQKLSAgICAgICAgICAgICAgICAgICAgbXVzdCBwcm92aWRlIGFuIGV4cGxpY2l0IHJvb3QgZmlsZXN5c3RlbSBwYXRoLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5LRVJORUw8L3JlcGxhY2VhYmxlPjoKLSAgICAgICAgICAgICAgICAgICAgQSBrZXJuZWwgaW1hZ2UsIHdoaWNoIGlzIGEgPGZpbGVuYW1lPi5iaW48L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBwcm92aWRlIGEgPGZpbGVuYW1lPi5iaW48L2ZpbGVuYW1lPiBmaWxlLAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IGRldGVjdHMgaXQgYW5kIGFzc3VtZXMgdGhlCi0gICAgICAgICAgICAgICAgICAgIGZpbGUgaXMgYSBrZXJuZWwgaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPk1BQ0hJTkU8L3JlcGxhY2VhYmxlPjoKLSAgICAgICAgICAgICAgICAgICAgVGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgUUVNVSBtYWNoaW5lLCB3aGljaCBtdXN0IGJlIG9uZQotICAgICAgICAgICAgICAgICAgICBvZiB0aGUgZm9sbG93aW5nOiAicWVtdXg4NiIsICJxZW11eDg2LTY0IiwgInFlbXVhcm0iLAotICAgICAgICAgICAgICAgICAgICAicWVtdWFybTY0IiwgInFlbXVtaXBzIiwg4oCccWVtdW1pcHM2NCIsIG9yICJxZW11cHBjIi4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxyZXBsYWNlYWJsZT5NQUNISU5FPC9yZXBsYWNlYWJsZT4gYW5kCi0gICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5RRU1VQVJDSDwvcmVwbGFjZWFibGU+IG9wdGlvbnMgYXJlIGJhc2ljYWxseQotICAgICAgICAgICAgICAgICAgICBpZGVudGljYWwuCi0gICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgcHJvdmlkZSBhIDxyZXBsYWNlYWJsZT5NQUNISU5FPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgb3B0aW9uLCA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IHRyaWVzIHRvIGRldGVybWluZQotICAgICAgICAgICAgICAgICAgICBpdCBiYXNlZCBvbiBvdGhlciBvcHRpb25zLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yYW1mczwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBJbmRpY2F0ZXMgeW91IGFyZSBib290aW5nIGFuIGluaXRpYWwgUkFNIGRpc2sgKGluaXRyYW1mcykKLSAgICAgICAgICAgICAgICAgICAgaW1hZ2UsIHdoaWNoIG1lYW5zIHRoZSA8ZmlsZW5hbWU+RlNUWVBFPC9maWxlbmFtZT4gaXMKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNwaW8uZ3o8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aXNvPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIEluZGljYXRlcyB5b3UgYXJlIGJvb3RpbmcgYW4gSVNPIGltYWdlLCB3aGljaCBtZWFucyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkZTVFlQRTwvZmlsZW5hbWU+IGlzCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uaXNvPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5vZ3JhcGhpYzwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICBEaXNhYmxlcyB0aGUgdmlkZW8gY29uc29sZSwgd2hpY2ggc2V0cyB0aGUgY29uc29sZSB0bwotICAgICAgICAgICAgICAgICAgICAidHR5czAiLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZXJpYWw8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgRW5hYmxlcyBhIHNlcmlhbCBjb25zb2xlIG9uCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZGV2L3R0eVMwPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpb3NkaXI8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgRXN0YWJsaXNoZXMgYSBjdXN0b20gZGlyZWN0b3J5IGZvciBCSU9TLCBWR0EgQklPUyBhbmQKLSAgICAgICAgICAgICAgICAgICAga2V5bWFwcy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ymlvc2ZpbGVuYW1lPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIEVzdGFibGlzaGVzIGEgY3VzdG9tIEJJT1MgbmFtZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdXBhcmFtcz1cIjxyZXBsYWNlYWJsZT54eXo8L3JlcGxhY2VhYmxlPlwiPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyBjdXN0b20gUUVNVSBwYXJhbWV0ZXJzLgotICAgICAgICAgICAgICAgICAgICBVc2UgdGhpcyBvcHRpb24gdG8gcGFzcyBvcHRpb25zIG90aGVyIHRoYW4gdGhlIHNpbXBsZQotICAgICAgICAgICAgICAgICAgICAia3ZtIiBhbmQgInNlcmlhbCIgb3B0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5ib290cGFyYW1zPVwiPHJlcGxhY2VhYmxlPnh5ejwvcmVwbGFjZWFibGU+XCI8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIGN1c3RvbSBib290IHBhcmFtZXRlcnMgZm9yIHRoZSBrZXJuZWwuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmF1ZGlvPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgYXVkaW8gaW4gUUVNVS4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxyZXBsYWNlYWJsZT5NQUNISU5FPC9yZXBsYWNlYWJsZT4gb3B0aW9uIG11c3QgYmUKLSAgICAgICAgICAgICAgICAgICAgZWl0aGVyICJxZW11eDg2IiBvciAicWVtdXg4Ni02NCIgaW4gb3JkZXIgZm9yIGF1ZGlvIHRvIGJlCi0gICAgICAgICAgICAgICAgICAgIGVuYWJsZWQuCi0gICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgdGhlIDxmaWxlbmFtZT5zbmRfaW50ZWw4eDA8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBvciA8ZmlsZW5hbWU+c25kX2VuczEzNzA8L2ZpbGVuYW1lPiBkcml2ZXIgbXVzdCBiZQotICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQgaW4gbGludXggZ3Vlc3QuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNsaXJwPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgInNsaXJwIiBuZXR3b3JraW5nLCB3aGljaCBpcyBhIGRpZmZlcmVudCB3YXkKLSAgICAgICAgICAgICAgICAgICAgb2YgbmV0d29ya2luZyB0aGF0IGRvZXMgbm90IG5lZWQgcm9vdCBhY2Nlc3MKLSAgICAgICAgICAgICAgICAgICAgYnV0IGFsc28gaXMgbm90IGFzIGVhc3kgdG8gdXNlIG9yIGNvbXByZWhlbnNpdmUKLSAgICAgICAgICAgICAgICAgICAgYXMgdGhlIGRlZmF1bHQuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0na3ZtLWNvbmQnPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+a3ZtPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgS1ZNIHdoZW4gcnVubmluZyAicWVtdXg4NiIgb3IgInFlbXV4ODYtNjQiCi0gICAgICAgICAgICAgICAgICAgIFFFTVUgYXJjaGl0ZWN0dXJlcy4KLSAgICAgICAgICAgICAgICAgICAgRm9yIEtWTSB0byB3b3JrLCBhbGwgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIG11c3QgYmUgbWV0OgotICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgPHJlcGxhY2VhYmxlPk1BQ0hJTkU8L3JlcGxhY2VhYmxlPiBtdXN0IGJlIGVpdGhlcgotcWVtdXg4NiIgb3IgInFlbXV4ODYtNjQiLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgYnVpbGQgaG9zdCBoYXMgdG8gaGF2ZSB0aGUgS1ZNIG1vZHVsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQsIHdoaWNoIGFyZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZGV2L2t2bTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSAgYnVpbGQgaG9zdCA8ZmlsZW5hbWU+L2Rldi9rdm08L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBoYXMgdG8gYmUgYm90aCB3cml0YWJsZSBhbmQgcmVhZGFibGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5rdm0tdmhvc3Q8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgRW5hYmxlcyBLVk0gd2l0aCBWSE9TVCBzdXBwb3J0IHdoZW4gcnVubmluZyAicWVtdXg4NiIKLSAgICAgICAgICAgICAgICAgICAgb3IgInFlbXV4ODYtNjQiIFFFTVUgYXJjaGl0ZWN0dXJlcy4KLSAgICAgICAgICAgICAgICAgICAgRm9yIEtWTSB3aXRoIFZIT1NUIHRvIHdvcmssIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBtdXN0Ci0gICAgICAgICAgICAgICAgICAgIGJlIG1ldDoKLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdrdm0tY29uZCc+a3ZtPC9saW5rPiBvcHRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25zIG11c3QgYmUgbWV0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgYnVpbGQgaG9zdCBoYXMgdG8gaGF2ZSB2aXJ0aW8gbmV0IGRldmljZSwgd2hpY2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgPGZpbGVuYW1lPi9kZXYvdmhvc3QtbmV0PC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIGhvc3QgPGZpbGVuYW1lPi9kZXYvdmhvc3QtbmV0PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgaGFzIHRvIGJlIGVpdGhlciByZWFkYWJsZSBvciB3cml0YWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCDigJxzbGlycC1lbmFibGVk4oCdLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cHVibGljdm5jPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgIEVuYWJsZXMgYSBWTkMgc2VydmVyIG9wZW4gdG8gYWxsIGhvc3RzLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0nbWFpbnRhaW5pbmctYnVpbGQtb3V0cHV0LXF1YWxpdHknPgotICAgIDx0aXRsZT5NYWludGFpbmluZyBCdWlsZCBPdXRwdXQgUXVhbGl0eTwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgTWFueSBmYWN0b3JzIGNhbiBpbmZsdWVuY2UgdGhlIHF1YWxpdHkgb2YgYSBidWlsZC4KLSAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSB1cGdyYWRlIGEgcmVjaXBlIHRvIHVzZSBhIG5ldyB2ZXJzaW9uIG9mIGFuIHVwc3RyZWFtIHNvZnR3YXJlCi0gICAgICAgIHBhY2thZ2Ugb3IgeW91IGV4cGVyaW1lbnQgd2l0aCBzb21lIG5ldyBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHN1YnRsZSBjaGFuZ2VzCi0gICAgICAgIGNhbiBvY2N1ciB0aGF0IHlvdSBtaWdodCBub3QgZGV0ZWN0IHVudGlsIGxhdGVyLgotICAgICAgICBDb25zaWRlciB0aGUgY2FzZSB3aGVyZSB5b3VyIHJlY2lwZSBpcyB1c2luZyBhIG5ld2VyIHZlcnNpb24gb2YgYW4gdXBzdHJlYW0gcGFja2FnZS4KLSAgICAgICAgSW4gdGhpcyBjYXNlLCBhIG5ldyB2ZXJzaW9uIG9mIGEgcGllY2Ugb2Ygc29mdHdhcmUgbWlnaHQgaW50cm9kdWNlIGFuIG9wdGlvbmFsCi0gICAgICAgIGRlcGVuZGVuY3kgb24gYW5vdGhlciBsaWJyYXJ5LCB3aGljaCBpcyBhdXRvLWRldGVjdGVkLgotICAgICAgICBJZiB0aGF0IGxpYnJhcnkgaGFzIGFscmVhZHkgYmVlbiBidWlsdCB3aGVuIHRoZSBzb2Z0d2FyZSBpcyBidWlsZGluZywKLSAgICAgICAgdGhlIHNvZnR3YXJlIHdpbGwgbGluayB0byB0aGUgYnVpbHQgbGlicmFyeSBhbmQgdGhhdCBsaWJyYXJ5IHdpbGwgYmUgcHVsbGVkCi0gICAgICAgIGludG8geW91ciBpbWFnZSBhbG9uZyB3aXRoIHRoZSBuZXcgc29mdHdhcmUgZXZlbiBpZiB5b3UgZGlkIG5vdCB3YW50IHRoZQotICAgICAgICBsaWJyYXJ5LgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGUKLSAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYnVpbGRoaXN0b3J5Jz48ZmlsZW5hbWU+YnVpbGRoaXN0b3J5PC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgIGNsYXNzIGV4aXN0cyB0byBoZWxwIHlvdSBtYWludGFpbgotICAgICAgICB0aGUgcXVhbGl0eSBvZiB5b3VyIGJ1aWxkIG91dHB1dC4KLSAgICAgICAgWW91IGNhbiB1c2UgdGhlIGNsYXNzIHRvIGhpZ2hsaWdodCB1bmV4cGVjdGVkIGFuZCBwb3NzaWJseSB1bndhbnRlZAotICAgICAgICBjaGFuZ2VzIGluIHRoZSBidWlsZCBvdXRwdXQuCi0gICAgICAgIFdoZW4geW91IGVuYWJsZSBidWlsZCBoaXN0b3J5LCBpdCByZWNvcmRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb250ZW50cyBvZgotICAgICAgICBlYWNoIHBhY2thZ2UgYW5kIGltYWdlIGFuZCB0aGVuIGNvbW1pdHMgdGhhdCBpbmZvcm1hdGlvbiB0byBhIGxvY2FsIEdpdAotICAgICAgICByZXBvc2l0b3J5IHdoZXJlIHlvdSBjYW4gZXhhbWluZSB0aGUgaW5mb3JtYXRpb24uCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoZSByZW1haW5kZXIgb2YgdGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgZm9sbG93aW5nOgotICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SG93IHlvdSBjYW4gZW5hYmxlIGFuZCBkaXNhYmxlCi0gICAgICAgICAgICAgICBidWlsZCBoaXN0b3J5PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Ib3cgdG8gdW5kZXJzdGFuZCB3aGF0IHRoZSBidWlsZCBoaXN0b3J5IGNvbnRhaW5zCi0gICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkhvdyB0byBsaW1pdCB0aGUgaW5mb3JtYXRpb24gdXNlZCBmb3IgYnVpbGQgaGlzdG9yeQotICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Ib3cgdG8gZXhhbWluZSB0aGUgYnVpbGQgaGlzdG9yeSBmcm9tIGJvdGggYQotICAgICAgICAgICAgICAgY29tbWFuZC1saW5lIGFuZCB3ZWIgaW50ZXJmYWNlPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgPC9wYXJhPgotCi0gICAgPHNlY3Rpb24gaWQ9J2VuYWJsaW5nLWFuZC1kaXNhYmxpbmctYnVpbGQtaGlzdG9yeSc+Ci0gICAgICAgIDx0aXRsZT5FbmFibGluZyBhbmQgRGlzYWJsaW5nIEJ1aWxkIEhpc3Rvcnk8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQnVpbGQgaGlzdG9yeSBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgotICAgICAgICAgICAgVG8gZW5hYmxlIGl0LCBhZGQgdGhlIGZvbGxvd2luZyA8ZmlsZW5hbWU+SU5IRVJJVDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBzdGF0ZW1lbnQgYW5kIHNldCB0aGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CVUlMREhJU1RPUllfQ09NTUlUJz48ZmlsZW5hbWU+QlVJTERISVNUT1JZX0NPTU1JVDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgdmFyaWFibGUgdG8gIjEiIGF0IHRoZSBlbmQgb2YgeW91cgotICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz46Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIElOSEVSSVQgKz0gImJ1aWxkaGlzdG9yeSIKLSAgICAgQlVJTERISVNUT1JZX0NPTU1JVCA9ICIxIgotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgRW5hYmxpbmcgYnVpbGQgaGlzdG9yeSBhcyBwcmV2aW91c2x5IGRlc2NyaWJlZCBjYXVzZXMgdGhlCi0gICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGNvbGxlY3QgYnVpbGQgb3V0cHV0IGluZm9ybWF0aW9uIGFuZAotICAgICAgICAgICAgY29tbWl0IGl0IGFzIGEgc2luZ2xlIGNvbW1pdCB0byBhIGxvY2FsCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdnaXQnPkdpdDwvbGluaz4gcmVwb3NpdG9yeS4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIEVuYWJsaW5nIGJ1aWxkIGhpc3RvcnkgaW5jcmVhc2VzIHlvdXIgYnVpbGQgdGltZXMgc2xpZ2h0bHksCi0gICAgICAgICAgICAgICAgcGFydGljdWxhcmx5IGZvciBpbWFnZXMsIGFuZCBpbmNyZWFzZXMgdGhlIGFtb3VudCBvZiBkaXNrCi0gICAgICAgICAgICAgICAgc3BhY2UgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkLgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBZb3UgY2FuIGRpc2FibGUgYnVpbGQgaGlzdG9yeSBieSByZW1vdmluZyB0aGUgcHJldmlvdXMgc3RhdGVtZW50cwotICAgICAgICAgICAgZnJvbSB5b3VyIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3VuZGVyc3RhbmRpbmctd2hhdC10aGUtYnVpbGQtaGlzdG9yeS1jb250YWlucyc+Ci0gICAgICAgIDx0aXRsZT5VbmRlcnN0YW5kaW5nIFdoYXQgdGhlIEJ1aWxkIEhpc3RvcnkgQ29udGFpbnM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQnVpbGQgaGlzdG9yeSBpbmZvcm1hdGlvbiBpcyBrZXB0IGluCi0gICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1UT1BESVInPjxmaWxlbmFtZT5UT1BESVI8L2ZpbGVuYW1lPjwvbGluaz48ZmlsZW5hbWU+fS9idWlsZGhpc3Rvcnk8L2ZpbGVuYW1lPgotICAgICAgICAgICAgaW4gdGhlIEJ1aWxkIERpcmVjdG9yeSBhcyBkZWZpbmVkIGJ5IHRoZQotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJVSUxESElTVE9SWV9ESVInPjxmaWxlbmFtZT5CVUlMREhJU1RPUllfRElSPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBhYmJyZXZpYXRlZCBsaXN0aW5nOgotICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2J1aWxkaGlzdG9yeS5wbmciIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI2aW4iIGRlcHRoPSI0aW4iIC8+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEF0IHRoZSB0b3AgbGV2ZWwsIHRoZXJlIGlzIGEgPGZpbGVuYW1lPm1ldGFkYXRhLXJldnM8L2ZpbGVuYW1lPiBmaWxlCi0gICAgICAgICAgICB0aGF0IGxpc3RzIHRoZSByZXZpc2lvbnMgb2YgdGhlIHJlcG9zaXRvcmllcyBmb3IgdGhlIGxheWVycyBlbmFibGVkCi0gICAgICAgICAgICB3aGVuIHRoZSBidWlsZCB3YXMgcHJvZHVjZWQuCi0gICAgICAgICAgICBUaGUgcmVzdCBvZiB0aGUgZGF0YSBzcGxpdHMgaW50byBzZXBhcmF0ZQotICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2VzPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5pbWFnZXM8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgIDxmaWxlbmFtZT5zZGs8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcywgdGhlIGNvbnRlbnRzIG9mIHdoaWNoIGFyZQotICAgICAgICAgICAgZGVzY3JpYmVkIGJlbG93LgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J2J1aWxkLWhpc3RvcnktcGFja2FnZS1pbmZvcm1hdGlvbic+Ci0gICAgICAgICAgICA8dGl0bGU+QnVpbGQgSGlzdG9yeSBQYWNrYWdlIEluZm9ybWF0aW9uPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIGhpc3RvcnkgZm9yIGVhY2ggcGFja2FnZSBjb250YWlucyBhIHRleHQgZmlsZSB0aGF0IGhhcwotICAgICAgICAgICAgICAgIG5hbWUtdmFsdWUgcGFpcnMgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFja2FnZS4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeS9wYWNrYWdlcy9pNTg2LXBva3ktbGludXgvYnVzeWJveC9idXN5Ym94L2xhdGVzdDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgY29udGFpbnMgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFBWID0gMS4yMi4xCi0gICAgIFBSID0gcjMyCi0gICAgIFJQUk9WSURFUyA9Ci0gICAgIFJERVBFTkRTID0gZ2xpYmMgKD49IDIuMjApIHVwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZwotICAgICBSUkVDT01NRU5EUyA9IGJ1c3lib3gtc3lzbG9nIGJ1c3lib3gtdWRoY3BjIHVwZGF0ZS1yYy5kCi0gICAgIFBLR1NJWkUgPSA1NDAxNjgKLSAgICAgRklMRVMgPSAvdXNyL2Jpbi8qIC91c3Ivc2Jpbi8qIC91c3IvbGliL2J1c3lib3gvKiAvdXNyL2xpYi9saWIqLnNvLiogXAotICAgICAgICAvZXRjIC9jb20gL3ZhciAvYmluLyogL3NiaW4vKiAvbGliLyouc28uKiAvbGliL3VkZXYvcnVsZXMuZCBcCi0gICAgICAgIC91c3IvbGliL3VkZXYvcnVsZXMuZCAvdXNyL3NoYXJlL2J1c3lib3ggL3Vzci9saWIvYnVzeWJveC8qIFwKLSAgICAgICAgL3Vzci9zaGFyZS9waXhtYXBzIC91c3Ivc2hhcmUvYXBwbGljYXRpb25zIC91c3Ivc2hhcmUvaWRsIFwKLSAgICAgICAgL3Vzci9zaGFyZS9vbWYgL3Vzci9zaGFyZS9zb3VuZHMgL3Vzci9saWIvYm9ub2JvL3NlcnZlcnMKLSAgICAgRklMRUxJU1QgPSAvYmluL2J1c3lib3ggL2Jpbi9idXN5Ym94Lm5vc3VpZCAvYmluL2J1c3lib3guc3VpZCAvYmluL3NoIFwKLSAgICAgICAgL2V0Yy9idXN5Ym94LmxpbmtzLm5vc3VpZCAvZXRjL2J1c3lib3gubGlua3Muc3VpZAotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBNb3N0IG9mIHRoZXNlIG5hbWUtdmFsdWUgcGFpcnMgY29ycmVzcG9uZCB0byB2YXJpYWJsZXMgdXNlZAotICAgICAgICAgICAgICAgIHRvIHByb2R1Y2UgdGhlIHBhY2thZ2UuCi0gICAgICAgICAgICAgICAgVGhlIGV4Y2VwdGlvbnMgYXJlIDxmaWxlbmFtZT5GSUxFTElTVDwvZmlsZW5hbWU+LCB3aGljaCBpcyB0aGUKLSAgICAgICAgICAgICAgICBhY3R1YWwgbGlzdCBvZiBmaWxlcyBpbiB0aGUgcGFja2FnZSwgYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBLR1NJWkU8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgdGhlIHRvdGFsIHNpemUgb2YgZmlsZXMKLSAgICAgICAgICAgICAgICBpbiB0aGUgcGFja2FnZSBpbiBieXRlcy4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlcmUgaXMgYWxzbyBhIGZpbGUgY29ycmVzcG9uZGluZyB0byB0aGUgcmVjaXBlIGZyb20gd2hpY2ggdGhlCi0gICAgICAgICAgICAgICAgcGFja2FnZSBjYW1lIChlLmcuCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeS9wYWNrYWdlcy9pNTg2LXBva3ktbGludXgvYnVzeWJveC9sYXRlc3Q8L2ZpbGVuYW1lPik6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBQViA9IDEuMjIuMQotICAgICBQUiA9IHIzMgotICAgICBERVBFTkRTID0gaW5pdHNjcmlwdHMga2Vybi10b29scy1uYXRpdmUgdXBkYXRlLXJjLmQtbmF0aXZlIFwKLSAgICAgICAgdmlydHVhbC9pNTg2LXBva3ktbGludXgtY29tcGlsZXJsaWJzIHZpcnR1YWwvaTU4Ni1wb2t5LWxpbnV4LWdjYyBcCi0gICAgICAgIHZpcnR1YWwvbGliYyB2aXJ0dWFsL3VwZGF0ZS1hbHRlcm5hdGl2ZXMKLSAgICAgUEFDS0FHRVMgPSBidXN5Ym94LXB0ZXN0IGJ1c3lib3gtaHR0cGQgYnVzeWJveC11ZGhjcGQgYnVzeWJveC11ZGhjcGMgXAotICAgICAgICBidXN5Ym94LXN5c2xvZyBidXN5Ym94LW1kZXYgYnVzeWJveC1od2Nsb2NrIGJ1c3lib3gtZGJnIFwKLSAgICAgICAgYnVzeWJveC1zdGF0aWNkZXYgYnVzeWJveC1kZXYgYnVzeWJveC1kb2MgYnVzeWJveC1sb2NhbGUgYnVzeWJveAotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRmluYWxseSwgZm9yIHRob3NlIHJlY2lwZXMgZmV0Y2hlZCBmcm9tIGEgdmVyc2lvbiBjb250cm9sCi0gICAgICAgICAgICAgICAgc3lzdGVtIChlLmcuLCBHaXQpLCBhIGZpbGUgZXhpc3RzIHRoYXQgbGlzdHMgc291cmNlIHJldmlzaW9ucwotICAgICAgICAgICAgICAgIHRoYXQgYXJlIHNwZWNpZmllZCBpbiB0aGUgcmVjaXBlIGFuZCBsaXN0cyB0aGUgYWN0dWFsIHJldmlzaW9ucwotICAgICAgICAgICAgICAgIHVzZWQgZHVyaW5nIHRoZSBidWlsZC4KLSAgICAgICAgICAgICAgICBMaXN0ZWQgYW5kIGFjdHVhbCByZXZpc2lvbnMgbWlnaHQgZGlmZmVyIHdoZW4KLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1JDUkVWJz48ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgaXMgc2V0IHRvCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PGxpbmsgbGlua2VuZD0ndmFyLUFVVE9SRVYnPkFVVE9SRVY8L2xpbms+fTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBhc3N1bWluZwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZGhpc3RvcnkvcGFja2FnZXMvcWVtdXg4Ni1wb2t5LWxpbnV4L2xpbnV4LXlvY3RvL2xhdGVzdF9zcmNyZXY8L2ZpbGVuYW1lPik6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAjIFNSQ1JFVl9tYWNoaW5lID0gIjM4Y2Q1NjBkNTAyMmVkMmRiZDFhYjBkY2E5NjQyZTQ3Yzk4YTBhYTEiCi0gICAgIFNSQ1JFVl9tYWNoaW5lID0gIjM4Y2Q1NjBkNTAyMmVkMmRiZDFhYjBkY2E5NjQyZTQ3Yzk4YTBhYTEiCi0gICAgICMgU1JDUkVWX21ldGEgPSAiYTIyN2YyMGVmZjA1NmU1MTFkNTA0YjJlNDkwZjM3NzRhYjI2MGQ2ZiIKLSAgICAgU1JDUkVWX21ldGEgPSAiYTIyN2YyMGVmZjA1NmU1MTFkNTA0YjJlNDkwZjM3NzRhYjI2MGQ2ZiIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT5idWlsZGhpc3RvcnktY29sbGVjdC1zcmNyZXZzPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBjb21tYW5kIHdpdGggdGhlIDxmaWxlbmFtZT4tYTwvZmlsZW5hbWU+IG9wdGlvbiB0bwotICAgICAgICAgICAgICAgIGNvbGxlY3QgdGhlIHN0b3JlZCA8ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT4gdmFsdWVzCi0gICAgICAgICAgICAgICAgZnJvbSBidWlsZCBoaXN0b3J5IGFuZCByZXBvcnQgdGhlbSBpbiBhIGZvcm1hdCBzdWl0YWJsZSBmb3IKLSAgICAgICAgICAgICAgICB1c2UgaW4gZ2xvYmFsIGNvbmZpZ3VyYXRpb24gKGUuZy4sCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBvciBhIGRpc3RybyBpbmNsdWRlIGZpbGUpIHRvCi0gICAgICAgICAgICAgICAgb3ZlcnJpZGUgZmxvYXRpbmcgPGZpbGVuYW1lPkFVVE9SRVY8L2ZpbGVuYW1lPiB2YWx1ZXMgdG8gYQotICAgICAgICAgICAgICAgIGZpeGVkIHNldCBvZiByZXZpc2lvbnMuCi0gICAgICAgICAgICAgICAgSGVyZSBpcyBzb21lIGV4YW1wbGUgb3V0cHV0IGZyb20gdGhpcyBjb21tYW5kOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBidWlsZGhpc3RvcnktY29sbGVjdC1zcmNyZXZzIC1hCi0gICAgICMgaTU4Ni1wb2t5LWxpbnV4Ci0gICAgIFNSQ1JFVl9wbi1nbGliYyA9ICJiODA3OWRkMGQzNjA2NDhlNGU4ZGU0ODY1NmM1YzM4OTcyNjIxMDcyIgotICAgICBTUkNSRVZfcG4tZ2xpYmMtaW5pdGlhbCA9ICJiODA3OWRkMGQzNjA2NDhlNGU4ZGU0ODY1NmM1YzM4OTcyNjIxMDcyIgotICAgICBTUkNSRVZfcG4tb3BrZy11dGlscyA9ICI1MzI3NGYwODc1NjVmZDQ1ZDg0NTJjNTM2Nzk5N2JhNmE2ODJhMzdhIgotICAgICBTUkNSRVZfcG4ta21vZCA9ICJmZDU2NjM4YWVkM2ZlMTQ3MDE1YmZhMTBlZDRhNWY3NDkxMzAzY2I0IgotICAgICAjIHg4Nl82NC1saW51eAotICAgICBTUkNSRVZfcG4tZ3RrLWRvYy1zdHViLW5hdGl2ZSA9ICIxZGVhMjY2NTkzZWRiNzY2ZDZkODk4Yzc5NDUxZWYxOTNlYjE3Y2ZhIgotICAgICBTUkNSRVZfcG4tZHRjLW5hdGl2ZSA9ICI2NWNjNGQyNzQ4YTJjMmU2ZjI3ZjFjZjM5ZTA3YTVkYmFiZDgwZWJmIgotICAgICBTUkNSRVZfcG4tdXBkYXRlLXJjLmQtbmF0aXZlID0gImVjYTY4MGRkZjI4ZDAyNDk1NDg5NWY1OWEyNDFhNjIyZGQ1NzVjMTEiCi0gICAgIFNSQ1JFVl9nbGliY19wbi1jcm9zcy1sb2NhbGVkZWYtbmF0aXZlID0gImI4MDc5ZGQwZDM2MDY0OGU0ZThkZTQ4NjU2YzVjMzg5NzI2MjEwNzIiCi0gICAgIFNSQ1JFVl9sb2NhbGVkZWZfcG4tY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZSA9ICJjODMzMzY3MzQ4ZDM5ZGFkN2JhMDE4OTkwYmZkYWZmYWVjOGU5ZWQzIgotICAgICBTUkNSRVZfcG4tcHJlbGluay1uYXRpdmUgPSAiZmFhMDY5ZGVlYzk5YmY2MTQxOGQwYmFiODMxYzgzZDdjMWI3OTdjYSIKLSAgICAgU1JDUkVWX3BuLW9wa2ctdXRpbHMtbmF0aXZlID0gIjUzMjc0ZjA4NzU2NWZkNDVkODQ1MmM1MzY3OTk3YmE2YTY4MmEzN2EiCi0gICAgIFNSQ1JFVl9wbi1rZXJuLXRvb2xzLW5hdGl2ZSA9ICIyMzM0NWI4ODQ2ZmU0YmQxNjdlZmRmMWJkOGExMjI0YjJiYTlhNWZmIgotICAgICBTUkNSRVZfcG4ta21vZC1uYXRpdmUgPSAiZmQ1NjYzOGFlZDNmZTE0NzAxNWJmYTEwZWQ0YTVmNzQ5MTMwM2NiNCIKLSAgICAgIyBxZW11eDg2LXBva3ktbGludXgKLSAgICAgU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8gPSAiMzhjZDU2MGQ1MDIyZWQyZGJkMWFiMGRjYTk2NDJlNDdjOThhMGFhMSIKLSAgICAgU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8gPSAiYTIyN2YyMGVmZjA1NmU1MTFkNTA0YjJlNDkwZjM3NzRhYjI2MGQ2ZiIKLSAgICAgIyBhbGwtcG9reS1saW51eAotICAgICBTUkNSRVZfcG4tdXBkYXRlLXJjLmQgPSAiZWNhNjgwZGRmMjhkMDI0OTU0ODk1ZjU5YTI0MWE2MjJkZDU3NWMxMSIKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIEhlcmUgYXJlIHNvbWUgbm90ZXMgb24gdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZGhpc3RvcnktY29sbGVjdC1zcmNyZXZzPC9maWxlbmFtZT4gY29tbWFuZDoKLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5CeSBkZWZhdWx0LCBvbmx5IHZhbHVlcyB3aGVyZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT4gd2FzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGhhcmRjb2RlZCAodXN1YWxseSB3aGVuIDxmaWxlbmFtZT5BVVRPUkVWPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXMgdXNlZCkgYXJlIHJlcG9ydGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPi1hPC9maWxlbmFtZT4gb3B0aW9uIHRvIHNlZSBhbGwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDUkVWPC9maWxlbmFtZT4gdmFsdWVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBvdXRwdXQgc3RhdGVtZW50cyBtaWdodCBub3QgaGF2ZSBhbnkgZWZmZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgb3ZlcnJpZGVzIGFyZSBhcHBsaWVkIGVsc2V3aGVyZSBpbiB0aGUgYnVpbGQgc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT4tZjwvZmlsZW5hbWU+IG9wdGlvbiB0byBhZGQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvcmNldmFyaWFibGU8L2ZpbGVuYW1lPiBvdmVycmlkZSB0byBlYWNoIG91dHB1dCBsaW5lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgeW91IG5lZWQgdG8gd29yayBhcm91bmQgdGhpcyByZXN0cmljdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgc2NyaXB0IGRvZXMgYXBwbHkgc3BlY2lhbCBoYW5kbGluZyB3aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRpbmcgZm9yIG11bHRpcGxlIG1hY2hpbmVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBzY3JpcHQgZG9lcyBwbGFjZSBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudCBiZWZvcmUgZWFjaCBzZXQgb2YgdmFsdWVzIHRoYXQgc3BlY2lmaWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggdHJpcGxldCB0byB3aGljaCB0aGV5IGJlbG9uZyBhcyBzaG93biBhYm92ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuLCA8ZmlsZW5hbWU+aTU4Ni1wb2t5LWxpbnV4PC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nYnVpbGQtaGlzdG9yeS1pbWFnZS1pbmZvcm1hdGlvbic+Ci0gICAgICAgICAgICA8dGl0bGU+QnVpbGQgSGlzdG9yeSBJbWFnZSBJbmZvcm1hdGlvbjwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBmaWxlcyBwcm9kdWNlZCBmb3IgZWFjaCBpbWFnZSBhcmUgYXMgZm9sbG93czoKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmltYWdlLWZpbGVzOjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBIGRpcmVjdG9yeSBjb250YWluaW5nIHNlbGVjdGVkIGZpbGVzIGZyb20gdGhlIHJvb3QKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0uCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgZmlsZXMgYXJlIGRlZmluZWQgYnkKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CVUlMREhJU1RPUllfSU1BR0VfRklMRVMnPjxmaWxlbmFtZT5CVUlMREhJU1RPUllfSU1BR0VfRklMRVM8L2ZpbGVuYW1lPjwvbGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5idWlsZC1pZC50eHQ6PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEh1bWFuLXJlYWRhYmxlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBidWlsZCBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgbWV0YWRhdGEgc291cmNlIHJldmlzaW9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZnVsbCBidWlsZCBoZWFkZXIgYXMgcHJpbnRlZAotICAgICAgICAgICAgICAgICAgICAgICAgYnkgQml0QmFrZS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT4qLmRvdDo8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgRGVwZW5kZW5jeSBncmFwaHMgZm9yIHRoZSBpbWFnZSB0aGF0IGFyZQotICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSB3aXRoIDxmaWxlbmFtZT5ncmFwaHZpejwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+ZmlsZXMtaW4taW1hZ2UudHh0OjwvZmlsZW5hbWU+Ci0gCSAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGZpbGVzIGluIHRoZSBpbWFnZSB3aXRoIHBlcm1pc3Npb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgb3duZXIsIGdyb3VwLCBzaXplLCBhbmQgc3ltbGluayBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmltYWdlLWluZm8udHh0OjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBIHRleHQgZmlsZSBjb250YWluaW5nIG5hbWUtdmFsdWUgcGFpcnMgd2l0aCBpbmZvcm1hdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgYWJvdXQgdGhlIGltYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSBmb2xsb3dpbmcgbGlzdGluZyBleGFtcGxlIGZvciBtb3JlIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+aW5zdGFsbGVkLXBhY2thZ2UtbmFtZXMudHh0OjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgaW5zdGFsbGVkIHBhY2thZ2VzIGJ5IG5hbWUgb25seS48L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5pbnN0YWxsZWQtcGFja2FnZS1zaXplcy50eHQ6PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBpbnN0YWxsZWQgcGFja2FnZXMgb3JkZXJlZCBieSBzaXplLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+aW5zdGFsbGVkLXBhY2thZ2VzLnR4dDo8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGluc3RhbGxlZCBwYWNrYWdlcyB3aXRoIGZ1bGwgcGFja2FnZQotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWVzLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBJbnN0YWxsZWQgcGFja2FnZSBpbmZvcm1hdGlvbiBpcyBhYmxlIHRvIGJlIGdhdGhlcmVkIGFuZAotICAgICAgICAgICAgICAgICAgICBwcm9kdWNlZCBldmVuIGlmIHBhY2thZ2UgbWFuYWdlbWVudCBpcyBkaXNhYmxlZCBmb3IgdGhlIGZpbmFsCi0gICAgICAgICAgICAgICAgICAgIGltYWdlLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIG9mIDxmaWxlbmFtZT5pbWFnZS1pbmZvLnR4dDwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgRElTVFJPID0gcG9reQotICAgICBESVNUUk9fVkVSU0lPTiA9IDEuNwotICAgICBVU0VSX0NMQVNTRVMgPSBidWlsZHN0YXRzIGltYWdlLW1rbGlicyBpbWFnZS1wcmVsaW5rCi0gICAgIElNQUdFX0NMQVNTRVMgPSBpbWFnZV90eXBlcwotICAgICBJTUFHRV9GRUFUVVJFUyA9IGRlYnVnLXR3ZWFrcwotICAgICBJTUFHRV9MSU5HVUFTID0KLSAgICAgSU1BR0VfSU5TVEFMTCA9IHBhY2thZ2Vncm91cC1jb3JlLWJvb3QgcnVuLXBvc3RpbnN0cwotICAgICBCQURfUkVDT01NRU5EQVRJT05TID0KLSAgICAgTk9fUkVDT01NRU5EQVRJT05TID0KLSAgICAgUEFDS0FHRV9FWENMVURFID0KLSAgICAgUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQgPSB3cml0ZV9wYWNrYWdlX21hbmlmZXN0OyBsaWNlbnNlX2NyZWF0ZV9tYW5pZmVzdDsgXAotICAgICAgICB3cml0ZV9pbWFnZV9tYW5pZmVzdCA7IGJ1aWxkaGlzdG9yeV9saXN0X2luc3RhbGxlZF9pbWFnZSA7IFwKLSAgICAgICAgYnVpbGRoaXN0b3J5X2dldF9pbWFnZV9pbnN0YWxsZWQgOyBzc2hfYWxsb3dfZW1wdHlfcGFzc3dvcmQ7ICBcCi0gICAgICAgIHBvc3RpbnN0X2VuYWJsZV9sb2dnaW5nOyByb290ZnNfdXBkYXRlX3RpbWVzdGFtcCA7IHNzaF9kaXNhYmxlX2Ruc19sb29rdXAgOwotICAgICBJTUFHRV9QT1NUUFJPQ0VTU19DT01NQU5EID0gICBidWlsZGhpc3RvcnlfZ2V0X2ltYWdlaW5mbyA7Ci0gICAgIElNQUdFU0laRSA9IDY5MDAKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgT3RoZXIgdGhhbiA8ZmlsZW5hbWU+SU1BR0VTSVpFPC9maWxlbmFtZT4sIHdoaWNoIGlzIHRoZQotICAgICAgICAgICAgICAgIHRvdGFsIHNpemUgb2YgdGhlIGZpbGVzIGluIHRoZSBpbWFnZSBpbiBLYnl0ZXMsIHRoZQotICAgICAgICAgICAgICAgIG5hbWUtdmFsdWUgcGFpcnMgYXJlIHZhcmlhYmxlcyB0aGF0IG1heSBoYXZlIGluZmx1ZW5jZWQgdGhlCi0gICAgICAgICAgICAgICAgY29udGVudCBvZiB0aGUgaW1hZ2UuCi0gICAgICAgICAgICAgICAgVGhpcyBpbmZvcm1hdGlvbiBpcyBvZnRlbiB1c2VmdWwgd2hlbiB5b3UgYXJlIHRyeWluZyB0byBkZXRlcm1pbmUKLSAgICAgICAgICAgICAgICB3aHkgYSBjaGFuZ2UgaW4gdGhlIHBhY2thZ2Ugb3IgZmlsZSBsaXN0aW5ncyBoYXMgb2NjdXJyZWQuCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0ndXNpbmctYnVpbGQtaGlzdG9yeS10by1nYXRoZXItaW1hZ2UtaW5mb3JtYXRpb24tb25seSc+Ci0gICAgICAgICAgICA8dGl0bGU+VXNpbmcgQnVpbGQgSGlzdG9yeSB0byBHYXRoZXIgSW1hZ2UgSW5mb3JtYXRpb24gT25seTwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEFzIHlvdSBjYW4gc2VlLCBidWlsZCBoaXN0b3J5IHByb2R1Y2VzIGltYWdlIGluZm9ybWF0aW9uLAotICAgICAgICAgICAgICAgIGluY2x1ZGluZyBkZXBlbmRlbmN5IGdyYXBocywgc28geW91IGNhbiBzZWUgd2h5IHNvbWV0aGluZwotICAgICAgICAgICAgICAgIHdhcyBwdWxsZWQgaW50byB0aGUgaW1hZ2UuCi0gICAgICAgICAgICAgICAgSWYgeW91IGFyZSBqdXN0IGludGVyZXN0ZWQgaW4gdGhpcyBpbmZvcm1hdGlvbiBhbmQgbm90Ci0gICAgICAgICAgICAgICAgaW50ZXJlc3RlZCBpbiBjb2xsZWN0aW5nIHNwZWNpZmljIHBhY2thZ2Ugb3IgU0RLIGluZm9ybWF0aW9uLAotICAgICAgICAgICAgICAgIHlvdSBjYW4gZW5hYmxlIHdyaXRpbmcgb25seSBpbWFnZSBpbmZvcm1hdGlvbiB3aXRob3V0Ci0gICAgICAgICAgICAgICAgYW55IGhpc3RvcnkgYnkgYWRkaW5nIHRoZSBmb2xsb3dpbmcgdG8geW91cgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPjoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIElOSEVSSVQgKz0gImJ1aWxkaGlzdG9yeSIKLSAgICAgQlVJTERISVNUT1JZX0NPTU1JVCA9ICIwIgotICAgICBCVUlMREhJU1RPUllfRkVBVFVSRVMgPSAiaW1hZ2UiCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIEhlcmUsIHlvdSBzZXQgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJVSUxESElTVE9SWV9GRUFUVVJFUyc+PGZpbGVuYW1lPkJVSUxESElTVE9SWV9GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIHVzZSB0aGUgaW1hZ2UgZmVhdHVyZSBvbmx5LgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J2J1aWxkLWhpc3Rvcnktc2RrLWluZm9ybWF0aW9uJz4KLSAgICAgICAgICAgIDx0aXRsZT5CdWlsZCBIaXN0b3J5IFNESyBJbmZvcm1hdGlvbjwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEJ1aWxkIGhpc3RvcnkgY29sbGVjdHMgc2ltaWxhciBpbmZvcm1hdGlvbiBvbiB0aGUgY29udGVudHMKLSAgICAgICAgICAgICAgICBvZiBTREtzCi0gICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPmJpdGJha2UgLWMgcG9wdWxhdGVfc2RrIGltYWdlbmFtZTwvZmlsZW5hbWU+KQotICAgICAgICAgICAgICAgIGFzIGNvbXBhcmVkIHRvIGluZm9ybWF0aW9uIGl0IGNvbGxlY3RzIGZvciBpbWFnZXMuCi0gICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIHRoaXMgaW5mb3JtYXRpb24gZGlmZmVycyBkZXBlbmRpbmcgb24gd2hldGhlciBhbgotICAgICAgICAgICAgICAgIGV4dGVuc2libGUgb3Igc3RhbmRhcmQgU0RLIGlzIGJlaW5nIHByb2R1Y2VkLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3Qgc2hvd3MgdGhlIGZpbGVzIHByb2R1Y2VkIGZvciBTREtzOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+ZmlsZXMtaW4tc2RrLnR4dDo8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGZpbGVzIGluIHRoZSBTREsgd2l0aCBwZXJtaXNzaW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgIG93bmVyLCBncm91cCwgc2l6ZSwgYW5kIHN5bWxpbmsgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGxpc3QgaW5jbHVkZXMgYm90aCB0aGUgaG9zdCBhbmQgdGFyZ2V0IHBhcnRzCi0gICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgU0RLLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+c2RrLWluZm8udHh0OjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBIHRleHQgZmlsZSBjb250YWluaW5nIG5hbWUtdmFsdWUgcGFpcnMgd2l0aCBpbmZvcm1hdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgYWJvdXQgdGhlIFNESy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgZm9sbG93aW5nIGxpc3RpbmcgZXhhbXBsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnNzdGF0ZS10YXNrLXNpemVzLnR4dDo8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgQSB0ZXh0IGZpbGUgY29udGFpbmluZyBuYW1lLXZhbHVlIHBhaXJzIHdpdGggaW5mb3JtYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgIGFib3V0IHRhc2sgZ3JvdXAgc2l6ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT5kb19wb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT4gdGFza3MKLSAgICAgICAgICAgICAgICAgICAgICAgIGhhdmUgYSB0b3RhbCBzaXplKS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+c3N0YXRlLXRhc2stc2l6ZXMudHh0PC9maWxlbmFtZT4gZmlsZQotICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RzIG9ubHkgd2hlbiBhbiBleHRlbnNpYmxlIFNESyBpcyBjcmVhdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+c3N0YXRlLXBhY2thZ2Utc2l6ZXMudHh0OjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBIHRleHQgZmlsZSBjb250YWluaW5nIG5hbWUtdmFsdWUgcGFpcnMgd2l0aCBpbmZvcm1hdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBzaGFyZWQtc3RhdGUgcGFja2FnZXMgYW5kIHNpemVzIGluIHRoZSBTREsuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnNzdGF0ZS1wYWNrYWdlLXNpemVzLnR4dDwvZmlsZW5hbWU+IGZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0cyBvbmx5IHdoZW4gYW4gZXh0ZW5zaWJsZSBTREsgaXMgY3JlYXRlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnNkay1maWxlczo8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgQSBmb2xkZXIgdGhhdCBjb250YWlucyBjb3BpZXMgb2YgdGhlIGZpbGVzIG1lbnRpb25lZCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJVSUxESElTVE9SWV9TREtfRklMRVM8L2ZpbGVuYW1lPiBpZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzIGFyZSBwcmVzZW50IGluIHRoZSBvdXRwdXQuCi0gICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSBkZWZhdWx0IHZhbHVlIG9mCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QlVJTERISVNUT1JZX1NES19GSUxFUzwvZmlsZW5hbWU+IGlzIHNwZWNpZmljCi0gICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgZXh0ZW5zaWJsZSBTREsgYWx0aG91Z2ggeW91IGNhbiBzZXQgaXQKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVudGx5IGlmIHlvdSB3b3VsZCBsaWtlIHRvIHB1bGwgaW4gc3BlY2lmaWMgZmlsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIHN0YW5kYXJkIFNESy48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZGVmYXVsdCBmaWxlcyBhcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2JibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2F1dG8uY29uZjwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbG9ja2VkLXNpZ3MuaW5jPC9maWxlbmFtZT4sIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvZGV2dG9vbC5jb25mPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICBUaHVzLCBmb3IgYW4gZXh0ZW5zaWJsZSBTREssIHRoZXNlIGZpbGVzIGdldCBjb3BpZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIGludG8gdGhlIDxmaWxlbmFtZT5zZGstZmlsZXM8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gYXBwZWFycyB1bmRlcgotICAgICAgICAgICAgICAgICAgICAgICAgZWFjaCBvZiB0aGUgPGZpbGVuYW1lPmhvc3Q8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT50YXJnZXQ8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBwb3J0aW9ucyBvZiB0aGUgU0RLIHRoYXQgcnVuIG9uIHRoZSBob3N0IGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgb24gdGhlIHRhcmdldCwgcmVzcGVjdGl2ZWx5OgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBmaWxlcyBmb3IgdGhlIG1vc3QgcGFydCBhcmUgZW1wdHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHByb2R1Y2luZyBhbiBleHRlbnNpYmxlIFNESyBiZWNhdXNlIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIG9mIFNESyBpcyBub3QgY29uc3RydWN0ZWQgZnJvbSBwYWNrYWdlcyBhcyBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzdGFuZGFyZCBTREsuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+ZGVwZW5kcy5kb3Q6PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwZW5kZW5jeSBncmFwaCBmb3IgdGhlIFNESyB0aGF0IGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgd2l0aCA8ZmlsZW5hbWU+Z3JhcGh2aXo8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5pbnN0YWxsZWQtcGFja2FnZS1uYW1lcy50eHQ6PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGluc3RhbGxlZCBwYWNrYWdlcyBieSBuYW1lIG9ubHkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+aW5zdGFsbGVkLXBhY2thZ2Utc2l6ZXMudHh0OjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBpbnN0YWxsZWQgcGFja2FnZXMgb3JkZXJlZCBieSBzaXplLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmluc3RhbGxlZC1wYWNrYWdlcy50eHQ6PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGluc3RhbGxlZCBwYWNrYWdlcyB3aXRoIGZ1bGwgcGFja2FnZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZXMuPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIG9mIDxmaWxlbmFtZT5zZGstaW5mby50eHQ8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIERJU1RSTyA9IHBva3kKLSAgICAgRElTVFJPX1ZFUlNJT04gPSAxLjMrc25hcHNob3QtMjAxMzAzMjcKLSAgICAgU0RLX05BTUUgPSBwb2t5LWdsaWJjLWk2ODYtYXJtCi0gICAgIFNES19WRVJTSU9OID0gMS4zK3NuYXBzaG90Ci0gICAgIFNES01BQ0hJTkUgPQotICAgICBTREtJTUFHRV9GRUFUVVJFUyA9IGRldi1wa2dzIGRiZy1wa2dzCi0gICAgIEJBRF9SRUNPTU1FTkRBVElPTlMgPQotICAgICBTREtTSVpFID0gMzUyNzEyCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIE90aGVyIHRoYW4gPGZpbGVuYW1lPlNES1NJWkU8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgdGhlCi0gICAgICAgICAgICAgICAgdG90YWwgc2l6ZSBvZiB0aGUgZmlsZXMgaW4gdGhlIFNESyBpbiBLYnl0ZXMsIHRoZQotICAgICAgICAgICAgICAgIG5hbWUtdmFsdWUgcGFpcnMgYXJlIHZhcmlhYmxlcyB0aGF0IG1pZ2h0IGhhdmUgaW5mbHVlbmNlZCB0aGUKLSAgICAgICAgICAgICAgICBjb250ZW50IG9mIHRoZSBTREsuCi0gICAgICAgICAgICAgICAgVGhpcyBpbmZvcm1hdGlvbiBpcyBvZnRlbiB1c2VmdWwgd2hlbiB5b3UgYXJlIHRyeWluZyB0bwotICAgICAgICAgICAgICAgIGRldGVybWluZSB3aHkgYSBjaGFuZ2UgaW4gdGhlIHBhY2thZ2Ugb3IgZmlsZSBsaXN0aW5ncwotICAgICAgICAgICAgICAgIGhhcyBvY2N1cnJlZC4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdleGFtaW5pbmctYnVpbGQtaGlzdG9yeS1pbmZvcm1hdGlvbic+Ci0gICAgICAgICAgICA8dGl0bGU+RXhhbWluaW5nIEJ1aWxkIEhpc3RvcnkgSW5mb3JtYXRpb248L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBZb3UgY2FuIGV4YW1pbmUgYnVpbGQgaGlzdG9yeSBvdXRwdXQgZnJvbSB0aGUgY29tbWFuZCBsaW5lIG9yCi0gICAgICAgICAgICAgICAgZnJvbSBhIHdlYiBpbnRlcmZhY2UuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRvIHNlZSBhbnkgY2hhbmdlcyB0aGF0IGhhdmUgb2NjdXJyZWQgKGFzc3VtaW5nIHlvdSBoYXZlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJVSUxESElTVE9SWV9DT01NSVQnPjxmaWxlbmFtZT5CVUlMREhJU1RPUllfQ09NTUlUID0gIjEiPC9maWxlbmFtZT48L2xpbms+KSwKLSAgICAgICAgICAgICAgICB5b3UgY2FuIHNpbXBseQotICAgICAgICAgICAgICAgIHVzZSBhbnkgR2l0IGNvbW1hbmQgdGhhdCBhbGxvd3MgeW91IHRvIHZpZXcgdGhlIGhpc3Rvcnkgb2YKLSAgICAgICAgICAgICAgICBhIHJlcG9zaXRvcnkuCi0gICAgICAgICAgICAgICAgSGVyZSBpcyBvbmUgbWV0aG9kOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgICQgZ2l0IGxvZyAtcAotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byByZWFsaXplLCBob3dldmVyLCB0aGF0IHRoaXMgbWV0aG9kIGRvZXMgc2hvdwotICAgICAgICAgICAgICAgIGNoYW5nZXMgdGhhdCBhcmUgbm90IHNpZ25pZmljYW50IChlLmcuIGEgcGFja2FnZSdzIHNpemUKLSAgICAgICAgICAgICAgICBjaGFuZ2luZyBieSBhIGZldyBieXRlcykuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEEgY29tbWFuZC1saW5lIHRvb2wgY2FsbGVkIDxmaWxlbmFtZT5idWlsZGhpc3RvcnktZGlmZjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgZG9lcyBleGlzdCwgdGhvdWdoLCB0aGF0IHF1ZXJpZXMgdGhlIEdpdCByZXBvc2l0b3J5IGFuZCBwcmludHMganVzdAotICAgICAgICAgICAgICAgIHRoZSBkaWZmZXJlbmNlcyB0aGF0IG1pZ2h0IGJlIHNpZ25pZmljYW50IGluIGh1bWFuLXJlYWRhYmxlIGZvcm0uCi0gICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCB+L3Bva3kvcG9reS9zY3JpcHRzL2J1aWxkaGlzdG9yeS1kaWZmIC4gSEVBRF4KLSAgICAgQ2hhbmdlcyB0byBpbWFnZXMvcWVtdXg4Nl82NC9nbGliYy9jb3JlLWltYWdlLW1pbmltYWwgKGZpbGVzLWluLWltYWdlLnR4dCk6Ci0gICAgICAgIC9ldGMvYW5vdGhlcnBrZy5jb25mIHdhcyBhZGRlZAotICAgICAgICAvc2Jpbi9hbm90aGVycGtnIHdhcyBhZGRlZAotICAgICAgICAqIChpbnN0YWxsZWQtcGFja2FnZS1uYW1lcy50eHQpOgotICAgICAgICAqICAgYW5vdGhlcnBrZyB3YXMgYWRkZWQKLSAgICAgQ2hhbmdlcyB0byBpbWFnZXMvcWVtdXg4Nl82NC9nbGliYy9jb3JlLWltYWdlLW1pbmltYWwgKGluc3RhbGxlZC1wYWNrYWdlLW5hbWVzLnR4dCk6Ci0gICAgICAgIGFub3RoZXJwa2cgd2FzIGFkZGVkCi0gICAgIHBhY2thZ2VzL3FlbXV4ODZfNjQtcG9reS1saW51eC92ODZkOiBQQUNLQUdFUzogYWRkZWQgInY4NmQtZXh0cmFzIgotICAgICAgICAqIFBSIGNoYW5nZWQgZnJvbSAicjAiIHRvICJyMSIKLSAgICAgICAgKiBQViBjaGFuZ2VkIGZyb20gIjAuMS4xMCIgdG8gIjAuMS4xMiIKLSAgICAgcGFja2FnZXMvcWVtdXg4Nl82NC1wb2t5LWxpbnV4L3Y4NmQvdjg2ZDogUEtHU0laRSBjaGFuZ2VkIGZyb20gMTEwNTc5IHRvIDE0NDM4MSAoKzMwJSkKLSAgICAgICAgKiBQUiBjaGFuZ2VkIGZyb20gInIwIiB0byAicjEiCi0gICAgICAgICogUFYgY2hhbmdlZCBmcm9tICIwLjEuMTAiIHRvICIwLjEuMTIiCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeS1kaWZmPC9maWxlbmFtZT4gdG9vbCByZXF1aXJlcwotICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPkdpdFB5dGhvbjwvZmlsZW5hbWU+IHBhY2thZ2UuCi0gICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gaW5zdGFsbCBpdCB1c2luZyBQaXAzIGFzIGZvbGxvd3M6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICQgcGlwMyBpbnN0YWxsIEdpdFB5dGhvbiAtLXVzZXIKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGluc3RhbGwKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnB5dGhvbjMtZ2l0PC9maWxlbmFtZT4gdXNpbmcgdGhlIGFwcHJvcHJpYXRlCi0gICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbiBwYWNrYWdlIG1hbmFnZXIgKGUuZy4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmFwdC1nZXQ8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmRuZjwvZmlsZW5hbWU+LCBvcgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+emlwcGVyPC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVG8gc2VlIGNoYW5nZXMgdG8gdGhlIGJ1aWxkIGhpc3RvcnkgdXNpbmcgYSB3ZWIgaW50ZXJmYWNlLCBmb2xsb3cKLSAgICAgICAgICAgICAgICB0aGUgaW5zdHJ1Y3Rpb24gaW4gdGhlIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlIGhlcmUuCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvYnVpbGRoaXN0b3J5LXdlYi8nPjwvdWxpbms+LgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBIZXJlIGlzIGEgc2FtcGxlIHNjcmVlbnNob3Qgb2YgdGhlIGludGVyZmFjZToKLSAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvYnVpbGRoaXN0b3J5LXdlYi5wbmciIGFsaWduPSJjZW50ZXIiIHNjYWxlZml0PSIxIiB3aWR0aD0iMTMwJSIgY29udGVudGRlcHRoPSIxMzAlIiAvPgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0gICAgPC9zZWN0aW9uPgotPC9zZWN0aW9uPgotCi08c2VjdGlvbiBpZD0nc3BlZWRpbmctdXAtdGhlLWJ1aWxkJz4KLSAgICA8dGl0bGU+U3BlZWRpbmcgVXAgdGhlIEJ1aWxkPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBCdWlsZCB0aW1lIGNhbiBiZSBhbiBpc3N1ZS4KLSAgICAgICAgQnkgZGVmYXVsdCwgdGhlIGJ1aWxkIHN5c3RlbSB1c2VzIHNpbXBsZSBjb250cm9scyB0byB0cnkgYW5kIG1heGltaXplCi0gICAgICAgIGJ1aWxkIGVmZmljaWVuY3kuCi0gICAgICAgIEluIGdlbmVyYWwsIHRoZSBkZWZhdWx0IHNldHRpbmdzIGZvciBhbGwgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXMKLSAgICAgICAgcmVzdWx0IGluIHRoZSBtb3N0IGVmZmljaWVudCBidWlsZCB0aW1lcyB3aGVuIGRlYWxpbmcgd2l0aCBzaW5nbGUKLSAgICAgICAgc29ja2V0IHN5c3RlbXMgKGkuZS4gYSBzaW5nbGUgQ1BVKS4KLSAgICAgICAgSWYgeW91IGhhdmUgbXVsdGlwbGUgQ1BVcywgeW91IG1pZ2h0IHRyeSBpbmNyZWFzaW5nIHRoZSBkZWZhdWx0Ci0gICAgICAgIHZhbHVlcyB0byBnYWluIG1vcmUgc3BlZWQuCi0gICAgICAgIFNlZSB0aGUgZGVzY3JpcHRpb25zIGluIHRoZSBnbG9zc2FyeSBmb3IgZWFjaCB2YXJpYWJsZSBmb3IgbW9yZQotICAgICAgICBpbmZvcm1hdGlvbjoKLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQkJfTlVNQkVSX1RIUkVBRFMnPjxmaWxlbmFtZT5CQl9OVU1CRVJfVEhSRUFEUzwvZmlsZW5hbWU+OjwvbGluaz4KLSAgICAgICAgICAgICAgICBUaGUgbWF4aW11bSBudW1iZXIgb2YgdGhyZWFkcyBCaXRCYWtlIHNpbXVsdGFuZW91c2x5IGV4ZWN1dGVzLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JCX1VSTDsjdmFyLUJCX05VTUJFUl9QQVJTRV9USFJFQURTJz48ZmlsZW5hbWU+QkJfTlVNQkVSX1BBUlNFX1RIUkVBRFM8L2ZpbGVuYW1lPjo8L3VsaW5rPgotICAgICAgICAgICAgICAgIFRoZSBudW1iZXIgb2YgdGhyZWFkcyBCaXRCYWtlIHVzZXMgZHVyaW5nIHBhcnNpbmcuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBUkFMTEVMX01BS0UnPjxmaWxlbmFtZT5QQVJBTExFTF9NQUtFPC9maWxlbmFtZT46PC9saW5rPgotICAgICAgICAgICAgICAgIEV4dHJhIG9wdGlvbnMgcGFzc2VkIHRvIHRoZSA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGNvbW1hbmQKLSAgICAgICAgICAgICAgICBkdXJpbmcgdGhlCi0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLXRhc2tzLWNvbXBpbGUnPjxmaWxlbmFtZT5kb19jb21waWxlPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgdGFzayBpbiBvcmRlciB0byBzcGVjaWZ5IHBhcmFsbGVsIGNvbXBpbGF0aW9uIG9uIHRoZQotICAgICAgICAgICAgICAgIGxvY2FsIGJ1aWxkIGhvc3QuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBUkFMTEVMX01BS0VJTlNUJz48ZmlsZW5hbWU+UEFSQUxMRUxfTUFLRUlOU1Q8L2ZpbGVuYW1lPjo8L2xpbms+Ci0gICAgICAgICAgICAgICAgRXh0cmEgb3B0aW9ucyBwYXNzZWQgdG8gdGhlIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gY29tbWFuZAotICAgICAgICAgICAgICAgIGR1cmluZyB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3MtaW5zdGFsbCc+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB0YXNrIGluIG9yZGVyIHRvIHNwZWNpZnkgcGFyYWxsZWwgaW5zdGFsbGF0aW9uIG9uIHRoZQotICAgICAgICAgICAgICAgIGxvY2FsIGJ1aWxkIGhvc3QuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICBBcyBtZW50aW9uZWQsIHRoZXNlIHZhcmlhYmxlcyBhbGwgc2NhbGUgdG8gdGhlIG51bWJlciBvZiBwcm9jZXNzb3IKLSAgICAgICAgY29yZXMgYXZhaWxhYmxlIG9uIHRoZSBidWlsZCBzeXN0ZW0uCi0gICAgICAgIEZvciBzaW5nbGUgc29ja2V0IHN5c3RlbXMsIHRoaXMgYXV0by1zY2FsaW5nIGVuc3VyZXMgdGhhdCB0aGUgYnVpbGQKLSAgICAgICAgc3lzdGVtIGZ1bmRhbWVudGFsbHkgdGFrZXMgYWR2YW50YWdlIG9mIHBvdGVudGlhbCBwYXJhbGxlbCBvcGVyYXRpb25zCi0gICAgICAgIGR1cmluZyB0aGUgYnVpbGQgYmFzZWQgb24gdGhlIGJ1aWxkIG1hY2hpbmUncyBjYXBhYmlsaXRpZXMuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEZvbGxvd2luZyBhcmUgYWRkaXRpb25hbCBmYWN0b3JzIHRoYXQgY2FuIGFmZmVjdCBidWlsZCBzcGVlZDoKLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICBGaWxlIHN5c3RlbSB0eXBlOgotICAgICAgICAgICAgICAgIFRoZSBmaWxlIHN5c3RlbSB0eXBlIHRoYXQgdGhlIGJ1aWxkIGlzIGJlaW5nIHBlcmZvcm1lZCBvbiBjYW4KLSAgICAgICAgICAgICAgICBhbHNvIGluZmx1ZW5jZSBwZXJmb3JtYW5jZS4KLSAgICAgICAgICAgICAgICBVc2luZyA8ZmlsZW5hbWU+ZXh0NDwvZmlsZW5hbWU+IGlzIHJlY29tbWVuZGVkIGFzIGNvbXBhcmVkCi0gICAgICAgICAgICAgICAgdG8gPGZpbGVuYW1lPmV4dDI8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPmV4dDM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGR1ZSB0byA8ZmlsZW5hbWU+ZXh0NDwvZmlsZW5hbWU+IGltcHJvdmVkIGZlYXR1cmVzCi0gICAgICAgICAgICAgICAgc3VjaCBhcyBleHRlbnRzLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIERpc2FibGluZyB0aGUgdXBkYXRpbmcgb2YgYWNjZXNzIHRpbWUgdXNpbmcKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bm9hdGltZTwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bm9hdGltZTwvZmlsZW5hbWU+IG1vdW50IG9wdGlvbiBwcmV2ZW50cyB0aGUKLSAgICAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gZnJvbSB1cGRhdGluZyBmaWxlIGFuZCBkaXJlY3RvcnkgYWNjZXNzIHRpbWVzLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIFNldHRpbmcgYSBsb25nZXIgY29tbWl0OgotICAgICAgICAgICAgICAgIFVzaW5nIHRoZSAiY29tbWl0PSIgbW91bnQgb3B0aW9uIGluY3JlYXNlcyB0aGUgaW50ZXJ2YWwKLSAgICAgICAgICAgICAgICBpbiBzZWNvbmRzIGJldHdlZW4gZGlzayBjYWNoZSB3cml0ZXMuCi0gICAgICAgICAgICAgICAgQ2hhbmdpbmcgdGhpcyBpbnRlcnZhbCBmcm9tIHRoZSBmaXZlIHNlY29uZCBkZWZhdWx0IHRvCi0gICAgICAgICAgICAgICAgc29tZXRoaW5nIGxvbmdlciBpbmNyZWFzZXMgdGhlIHJpc2sgb2YgZGF0YSBsb3NzIGJ1dCBkZWNyZWFzZXMKLSAgICAgICAgICAgICAgICB0aGUgbmVlZCB0byB3cml0ZSB0byB0aGUgZGlzaywgdGh1cyBpbmNyZWFzaW5nIHRoZSBidWlsZAotICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIENob29zaW5nIHRoZSBwYWNrYWdpbmcgYmFja2VuZDoKLSAgICAgICAgICAgICAgICBPZiB0aGUgYXZhaWxhYmxlIHBhY2thZ2luZyBiYWNrZW5kcywgSVBLIGlzIHRoZSBmYXN0ZXN0LgotICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgc2VsZWN0aW5nIGEgc2luZ3VsYXIgcGFja2FnaW5nIGJhY2tlbmQgYWxzbwotICAgICAgICAgICAgICAgIGhlbHBzLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgIFVzaW5nIDxmaWxlbmFtZT50bXBmczwvZmlsZW5hbWU+IGZvcgotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UTVBESVInPjxmaWxlbmFtZT5UTVBESVI8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICBhcyBhIHRlbXBvcmFyeSBmaWxlIHN5c3RlbToKLSAgICAgICAgICAgICAgICBXaGlsZSB0aGlzIGNhbiBoZWxwIHNwZWVkIHVwIHRoZSBidWlsZCwgdGhlIGJlbmVmaXRzIGFyZQotICAgICAgICAgICAgICAgIGxpbWl0ZWQgZHVlIHRvIHRoZSBjb21waWxlciB1c2luZwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tcGlwZTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gZ29lcyB0byBzb21lIGxlbmd0aHMgdG8gYXZvaWQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3luYygpPC9maWxlbmFtZT4gY2FsbHMgaW50byB0aGUKLSAgICAgICAgICAgICAgICBmaWxlIHN5c3RlbSBvbiB0aGUgcHJpbmNpcGxlIHRoYXQgaWYgdGhlcmUgd2FzIGEgc2lnbmlmaWNhbnQKLSAgICAgICAgICAgICAgICBmYWlsdXJlLCB0aGUKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KLSAgICAgICAgICAgICAgICBjb250ZW50cyBjb3VsZCBlYXNpbHkgYmUgcmVidWlsdC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICBJbmhlcml0aW5nIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXJtLXdvcmsnPjxmaWxlbmFtZT5ybV93b3JrPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgY2xhc3M6Ci0gICAgICAgICAgICAgICAgSW5oZXJpdGluZyB0aGlzIGNsYXNzIGhhcyBzaG93biB0byBzcGVlZCB1cCBidWlsZHMgZHVlIHRvCi0gICAgICAgICAgICAgICAgc2lnbmlmaWNhbnRseSBsb3dlciBhbW91bnRzIG9mIGRhdGEgc3RvcmVkIGluIHRoZSBkYXRhCi0gICAgICAgICAgICAgICAgY2FjaGUgYXMgd2VsbCBhcyBvbiBkaXNrLgotICAgICAgICAgICAgICAgIEluaGVyaXRpbmcgdGhpcyBjbGFzcyBhbHNvIG1ha2VzIGNsZWFudXAgb2YKLSAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgZmFzdGVyLCBhdCB0aGUgZXhwZW5zZSBvZiBiZWluZyBlYXNpbHkgYWJsZSB0byBkaXZlIGludG8gdGhlCi0gICAgICAgICAgICAgICAgc291cmNlIGNvZGUuCi0gICAgICAgICAgICAgICAgRmlsZSBzeXN0ZW0gbWFpbnRhaW5lcnMgaGF2ZSByZWNvbW1lbmRlZCB0aGF0IHRoZSBmYXN0ZXN0IHdheQotICAgICAgICAgICAgICAgIHRvIGNsZWFuIHVwIGxhcmdlIG51bWJlcnMgb2YgZmlsZXMgaXMgdG8gcmVmb3JtYXQgcGFydGl0aW9ucwotICAgICAgICAgICAgICAgIHJhdGhlciB0aGFuIGRlbGV0ZSBmaWxlcyBkdWUgdG8gdGhlIGxpbmVhciBuYXR1cmUgb2YgcGFydGl0aW9ucy4KLSAgICAgICAgICAgICAgICBUaGlzLCBvZiBjb3Vyc2UsIGFzc3VtZXMgeW91IHN0cnVjdHVyZSB0aGUgZGlzayBwYXJ0aXRpb25zIGFuZAotICAgICAgICAgICAgICAgIGZpbGUgc3lzdGVtcyBpbiBhIHdheSB0aGF0IHRoaXMgaXMgcHJhY3RpY2FsLgotICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgQXNpZGUgZnJvbSB0aGUgcHJldmlvdXMgbGlzdCwgeW91IHNob3VsZCBrZWVwIHNvbWUgdHJhZGUgb2ZmcyBpbgotICAgICAgICBtaW5kIHRoYXQgY2FuIGhlbHAgeW91IHNwZWVkIHVwIHRoZSBidWlsZDoKLSAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICBSZW1vdmUgaXRlbXMgZnJvbQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVMnPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB0aGF0IHlvdSBtaWdodCBub3QgbmVlZC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICBFeGNsdWRlIGRlYnVnIHN5bWJvbHMgYW5kIG90aGVyIGRlYnVnIGluZm9ybWF0aW9uOgotICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgbmVlZCB0aGVzZSBzeW1ib2xzIGFuZCBvdGhlciBkZWJ1ZyBpbmZvcm1hdGlvbiwKLSAgICAgICAgICAgICAgICBkaXNhYmxpbmcgdGhlIDxmaWxlbmFtZT4qLWRiZzwvZmlsZW5hbWU+IHBhY2thZ2UgZ2VuZXJhdGlvbgotICAgICAgICAgICAgICAgIGNhbiBzcGVlZCB1cCB0aGUgYnVpbGQuCi0gICAgICAgICAgICAgICAgWW91IGNhbiBkaXNhYmxlIHRoaXMgZ2VuZXJhdGlvbiBieSBzZXR0aW5nIHRoZQotICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQnPjxmaWxlbmFtZT5JTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQ8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZSB0byAiMSIuCi0gICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgRGlzYWJsZSBzdGF0aWMgbGlicmFyeSBnZW5lcmF0aW9uIGZvciByZWNpcGVzIGRlcml2ZWQgZnJvbQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvY29uZjwvZmlsZW5hbWU+IG9yIDxmaWxlbmFtZT5saWJ0b29sPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gZGlzYWJsZSBzdGF0aWMKLSAgICAgICAgICAgICAgICBsaWJyYXJpZXMgYW5kIHN0aWxsIHByb3ZpZGUgYW4gb3ZlcnJpZGUgdG8gaGFuZGxlIGV4Y2VwdGlvbnM6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTVEFUSUNMSUJDT05GID0gIi0tZGlzYWJsZS1zdGF0aWMiCi0gICAgIFNUQVRJQ0xJQkNPTkZfc3FsaXRlMy1uYXRpdmUgPSAiIgotICAgICBFWFRSQV9PRUNPTkYgKz0gIiR7U1RBVElDTElCQ09ORn0iCi0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+Ci0gICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZSByZWNpcGVzIG5lZWQgc3RhdGljIGxpYnJhcmllcyBpbiBvcmRlciB0byB3b3JrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ycmVjdGx5IChlLmcuIDxmaWxlbmFtZT5wc2V1ZG8tbmF0aXZlPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkcyA8ZmlsZW5hbWU+c3FsaXRlMy1uYXRpdmU8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgT3ZlcnJpZGVzLCBhcyBpbiB0aGUgcHJldmlvdXMgZXhhbXBsZSwgYWNjb3VudCBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVzZSBraW5kcyBvZiBleGNlcHRpb25zLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgcGFja2FnZXMgaGF2ZSBwYWNrYWdpbmcgY29kZSB0aGF0IGFzc3VtZXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VuY2Ugb2YgdGhlIHN0YXRpYyBsaWJyYXJpZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgc28sIHlvdSBtaWdodCBuZWVkIHRvIGV4Y2x1ZGUgdGhlbSBhcyB3ZWxsLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotPC9jaGFwdGVyPgotPCEtLQotdmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAotLS0+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL2ZpZ3VyZXMvc2RrLWF1dG90b29scy1mbG93LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvZmlndXJlcy9zZGstYXV0b3Rvb2xzLWZsb3cucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjNjY4NWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL2ZpZ3VyZXMvc2RrLWF1dG90b29scy1mbG93LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL2ZpZ3VyZXMvc2RrLWRldnRvb2wtYWRkLWZsb3cucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9maWd1cmVzL3Nkay1kZXZ0b29sLWFkZC1mbG93LnBuZwppbmRleCA5ODVhYzMzLi5lN2Q2MTczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL2ZpZ3VyZXMvc2RrLWRldnRvb2wtYWRkLWZsb3cucG5nCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvZmlndXJlcy9zZGstZGV2dG9vbC1hZGQtZmxvdy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9maWd1cmVzL3Nkay1kZXZ0b29sLW1vZGlmeS1mbG93LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvZmlndXJlcy9zZGstZGV2dG9vbC1tb2RpZnktZmxvdy5wbmcKaW5kZXggZmQ2ODRmZi4uMThiYThiNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9maWd1cmVzL3Nkay1kZXZ0b29sLW1vZGlmeS1mbG93LnBuZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL2ZpZ3VyZXMvc2RrLWRldnRvb2wtbW9kaWZ5LWZsb3cucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvZmlndXJlcy9zZGstZGV2dG9vbC11cGdyYWRlLWZsb3cucG5nIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9maWd1cmVzL3Nkay1kZXZ0b29sLXVwZ3JhZGUtZmxvdy5wbmcKaW5kZXggNjU0NzRkYS4uN2Q0ZjM5NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9maWd1cmVzL3Nkay1kZXZ0b29sLXVwZ3JhZGUtZmxvdy5wbmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9maWd1cmVzL3Nkay1kZXZ0b29sLXVwZ3JhZGUtZmxvdy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9maWd1cmVzL3Nkay1tYWtlZmlsZS1mbG93LnBuZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvZmlndXJlcy9zZGstbWFrZWZpbGUtZmxvdy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNjYjQxOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvZmlndXJlcy9zZGstbWFrZWZpbGUtZmxvdy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtY3VzdG9taXppbmcueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtY3VzdG9taXppbmcueG1sCmluZGV4IDU4NzUyNmYuLjViNTZlNzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LWN1c3RvbWl6aW5nLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1jdXN0b21pemluZy54bWwKQEAgLTM4Nyw4ICszODcsOSBAQAogICAgICAgICBoYXZlIHNldCA8ZmlsZW5hbWU+U0RLX0VYVF9UWVBFPC9maWxlbmFtZT4gdG8KICAgICAgICAgIm1pbmltYWwiLCB3aGljaCBieSBkZWZhdWx0LCBleGNsdWRlcyB0aGUgdG9vbGNoYWluLgogICAgICAgICBBbHNvLCBpdCBpcyBoZWxwZnVsIGlmIHlvdSBhcmUgYnVpbGRpbmcgYSBzbWFsbCBTREsgZm9yIHVzZSB3aXRoCi0gICAgICAgIGFuIElERSwgc3VjaCBhcyBFY2xpcHNlLCBvciBzb21lIG90aGVyIHRvb2wgd2hlcmUgeW91IGRvIG5vdCB3YW50Ci0gICAgICAgIHRvIHRha2UgZXh0cmEgc3RlcHMgdG8gaW5zdGFsbCBhIHRvb2xjaGFpbi4KKyAgICAgICAgYW4gSURFLCBzdWNoIGFzIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+LCBvciBzb21lCisgICAgICAgIG90aGVyIHRvb2wgd2hlcmUgeW91IGRvIG5vdCB3YW50IHRvIHRha2UgZXh0cmEgc3RlcHMgdG8gaW5zdGFsbCBhCisgICAgICAgIHRvb2xjaGFpbi4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiA8L2FwcGVuZGl4PgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtbWFycy54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1tYXJzLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQ4MGY2NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1tYXJzLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDkxNiArMCwwIEBACi08IURPQ1RZUEUgY2hhcHRlciBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCi0iaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgotWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgotCi08YXBwZW5kaXggaWQ9J3Nkay1hcHBlbmRpeC1sYXRlc3QteXAtZWNsaXBzZS1wbHVnLWluJz4KLSAgICA8dGl0bGU+VXNpbmcgRWNsaXBzZSBNYXJzPC90aXRsZT4KLQotICAgIDxwYXJhPgotICAgICAgICBUaGlzIHJlbGVhc2Ugb2YgdGhlIFlvY3RvIFByb2plY3Qgc3VwcG9ydHMgYm90aCB0aGUgTmVvbiBhbmQgTWFycwotICAgICAgICB2ZXJzaW9ucyBvZiB0aGUgRWNsaXBzZSBJREUuCi0gICAgICAgIFRoaXMgYXBwZW5kaXggcHJlc2VudHMgaW5mb3JtYXRpb24gdGhhdCBkZXNjcmliZXMgaG93IHRvIG9idGFpbiBhbmQKLSAgICAgICAgY29uZmlndXJlIHRoZSBNYXJzIHZlcnNpb24gb2YgRWNsaXBzZS4KLSAgICAgICAgSXQgYWxzbyBwcm92aWRlcyBhIGJhc2ljIHByb2plY3QgZXhhbXBsZSB0aGF0IHlvdSBjYW4gd29yayB0aHJvdWdoCi0gICAgICAgIGZyb20gc3RhcnQgdG8gZmluaXNoLgotICAgICAgICBGb3IgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgRWNsaXBzZSBJREUgYW5kIHRoZSBZb2N0bwotICAgICAgICBQcm9qZWN0IEVjbGlwc2UgUGx1Zy1Jbiwgc2VlIHRoZQotICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWVjbGlwc2UtcHJvamVjdCc+RGV2ZWxvcGluZyBBcHBsaWNhdGlvbnMgVXNpbmcgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz48L2xpbms+IgotICAgICAgICBDaGFwdGVyLgotICAgIDwvcGFyYT4KLQotICAgIDxzZWN0aW9uIGlkPSdtYXJzLXNldHRpbmctdXAtdGhlLWVjbGlwc2UtaWRlJz4KLSAgICAgICAgPHRpdGxlPlNldHRpbmcgVXAgdGhlIE1hcnMgVmVyc2lvbiBvZiB0aGUgRWNsaXBzZSBJREU8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVG8gZGV2ZWxvcCB3aXRoaW4gdGhlIEVjbGlwc2UgSURFLCB5b3UgbmVlZCB0byBkbyB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JbnN0YWxsIHRoZSBNYXJzIHZlcnNpb24gb2YgdGhlIEVjbGlwc2UKLSAgICAgICAgICAgICAgICAgICAgSURFLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Db25maWd1cmUgdGhlIEVjbGlwc2UgSURFLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SW5zdGFsbCB0aGUgRWNsaXBzZSBZb2N0byBQbHVnLWluLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q29uZmlndXJlIHRoZSBFY2xpcHNlIFlvY3RvIFBsdWctaW4uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIERvIG5vdCBpbnN0YWxsIEVjbGlwc2UgZnJvbSB5b3VyIGRpc3RyaWJ1dGlvbidzIHBhY2thZ2UKLSAgICAgICAgICAgICAgICByZXBvc2l0b3J5LgotICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gaW5zdGFsbCBFY2xpcHNlIGZyb20gdGhlIG9mZmljaWFsIEVjbGlwc2UKLSAgICAgICAgICAgICAgICBkb3dubG9hZCBzaXRlIGFzIGRpcmVjdGVkIGluIHRoZSBuZXh0IHNlY3Rpb24uCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nbWFycy1pbnN0YWxsaW5nLWVjbGlwc2UtaWRlJz4KLSAgICAgICAgICAgIDx0aXRsZT5JbnN0YWxsaW5nIHRoZSBNYXJzIEVjbGlwc2UgSURFPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGxvY2F0ZSwgaW5zdGFsbCwgYW5kIGNvbmZpZ3VyZQotICAgICAgICAgICAgICAgIE1hcnMgRWNsaXBzZToKLSAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TG9jYXRlIHRoZSBNYXJzIERvd25sb2FkOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBPcGVuIGEgYnJvd3NlciBhbmQgZ28gdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbWFycy8nPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbWFycy88L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkRvd25sb2FkIHRoZSBUYXJiYWxsOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBDbGljayB0aGUgIkRvd25sb2FkIiBidXR0b24gYW5kIHRoZW4gdXNlIHRoZSAiTGludXgKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBFY2xpcHNlIElERSBmb3IgQysrIERldmVsb3BlcnMiCi0gICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZSBmb3IgeW91ciBkZXZlbG9wbWVudCBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2Rvd25sb2Fkcy9kb3dubG9hZC5waHA/ZmlsZT0vdGVjaG5vbG9neS9lcHAvZG93bmxvYWRzL3JlbGVhc2UvbWFycy8yL2VjbGlwc2UtY3BwLW1hcnMtMi1saW51eC1ndGsteDg2XzY0LnRhci5neic+NjQtYml0IHVuZGVyIExpbnV4IGZvciBFY2xpcHNlIElERSBmb3IgQysrIERldmVsb3BlcnM8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgeW91ciBkZXZlbG9wbWVudCBzeXN0ZW0gaXMgYSBMaW51eCA2NC1iaXQgbWFjaGluZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlVucGFjayB0aGUgVGFyYmFsbDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgTW92ZSB0byBhIGNsZWFuIGRpcmVjdG9yeSBhbmQgdW5wYWNrIHRoZSB0YXJiYWxsLgotICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNkIH4KLSAgICAgJCB0YXIgLXh6dmYgfi9Eb3dubG9hZHMvZWNsaXBzZS1jcHAtbWFycy0yLWxpbnV4LWd0ay14ODZfNjQudGFyLmd6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBFdmVyeXRoaW5nIHVucGFja3MgaW50byBhIGZvbGRlciBuYW1lZCAiRWNsaXBzZSIuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5MYXVuY2ggRWNsaXBzZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgRG91YmxlIGNsaWNrIHRoZSAiRWNsaXBzZSIgZmlsZSBpbiB0aGUgZm9sZGVyIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICBsYXVuY2ggRWNsaXBzZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBleHBlcmllbmNlIGEgTnVsbFBvaW50ZXIgRXhjZXB0aW9uIGFmdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF1bmNoIEVjbGlwc2Ugb3IgdGhlIGRlYnVnZ2VyIGZyb20gd2l0aGluIEVjbGlwc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IGFkZGluZyB0aGUgZm9sbG93aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8geW91ciA8ZmlsZW5hbWU+ZWNsaXBzZS5pbmk8L2ZpbGVuYW1lPiBmaWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGxvY2F0ZWQgaW4gdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2tlZCB0aGUgRWNsaXBzZSB0YXIgZmlsZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIC0tbGF1bmNoZXIuR1RLX3ZlcnNpb24KLSAgICAgMgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGV4cG9ydCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1dUX0dUSzwvZmlsZW5hbWU+IHZhcmlhYmxlIGluIHlvdXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGVsbCBhcyBmb2xsb3dzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBleHBvcnQgU1dUX0dUSzM9MAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgPHNlY3Rpb24gaWQ9J21hcnMtY29uZmlndXJpbmctdGhlLW1hcnMtZWNsaXBzZS1pZGUnPgotICAgICAgICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSBNYXJzIEVjbGlwc2UgSURFPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGNvbmZpZ3VyZSB0aGUgTWFycyBFY2xpcHNlIElERS4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIGhvdyB5b3UgaW5zdGFsbGVkIEVjbGlwc2UgYW5kIHdoYXQgeW91IGhhdmUKLSAgICAgICAgICAgICAgICAgICAgYWxyZWFkeSBkb25lLCBzb21lIG9mIHRoZSBvcHRpb25zIHdpbGwgbm90IGFwcGVhci4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IGNhbm5vdCBmaW5kIGFuIG9wdGlvbiBhcyBkaXJlY3RlZCBieSB0aGUgbWFudWFsLAotICAgICAgICAgICAgICAgICAgICBpdCBoYXMgYWxyZWFkeSBiZWVuIGluc3RhbGxlZC4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QmUgc3VyZSBFY2xpcHNlIGlzIHJ1bm5pbmcgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3UgYXJlIGluIHlvdXIgd29ya2JlbmNoLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TZWxlY3QgIkluc3RhbGwgTmV3IFNvZnR3YXJlIiBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgIkhlbHAiIHB1bGwtZG93biBtZW51LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TZWxlY3QKLSAgICAgICAgICAgICAgICAgICAgICAgICJNYXJzIC0gaHR0cDovL2Rvd25sb2FkLmVjbGlwc2Uub3JnL3JlbGVhc2VzL21hcnMiCi0gICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSAiV29yayB3aXRoOiIgcHVsbC1kb3duIG1lbnUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkV4cGFuZCB0aGUgYm94IG5leHQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICJMaW51eCBUb29scyIgYW5kIHNlbGVjdCAiQy9DKysgUmVtb3RlCi0gICAgICAgICAgICAgICAgICAgICAgICAoT3ZlciBUQ0YvVEUpIFJ1bi9EZWJ1ZyBMYXVuY2hlciIgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAiVE0gVGVybWluYWwiLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FeHBhbmQgdGhlIGJveCBuZXh0IHRvICJNb2JpbGUgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2UgRGV2ZWxvcG1lbnQiIGFuZCBzZWxlY3QgdGhlIGZvbGxvd2luZwotICAgICAgICAgICAgICAgICAgICAgICAgYm94ZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIEMvQysrIFJlbW90ZSAoT3ZlciBUQ0YvVEUpIFJ1bi9EZWJ1ZyBMYXVuY2hlcgotICAgICBSZW1vdGUgU3lzdGVtIEV4cGxvcmVyIFVzZXIgQWN0aW9ucwotICAgICBUTSBUZXJtaW5hbAotICAgICBUQ0YgUmVtb3RlIFN5c3RlbSBFeHBsb3JlciBhZGQtaW4KLSAgICAgVENGIFRhcmdldCBFeHBsb3JlcgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FeHBhbmQgdGhlIGJveCBuZXh0IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2VzIiBhbmQgc2VsZWN0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGJveGVzOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBDL0MrKyBBdXRvdG9vbHMgU3VwcG9ydAotICAgICBDL0MrKyBEZXZlbG9wbWVudCBUb29scyBTREsKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb21wbGV0ZSB0aGUgaW5zdGFsbGF0aW9uIGJ5IGNsaWNraW5nIHRocm91Z2gKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvcHJpYXRlICJOZXh0IiBhbmQgIkZpbmlzaCIgYnV0dG9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nbWFycy1pbnN0YWxsaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPgotICAgICAgICAgICAgPHRpdGxlPkluc3RhbGxpbmcgb3IgQWNjZXNzaW5nIHRoZSBNYXJzIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbjwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFlvdSBjYW4gaW5zdGFsbCB0aGUgRWNsaXBzZSBZb2N0byBQbHVnLWluIGludG8gdGhlIEVjbGlwc2UKLSAgICAgICAgICAgICAgICBJREUgb25lIG9mIHR3byB3YXlzOiAgdXNlIHRoZSBZb2N0byBQcm9qZWN0J3MgRWNsaXBzZQotICAgICAgICAgICAgICAgIFVwZGF0ZSBzaXRlIHRvIGluc3RhbGwgdGhlIHByZS1idWlsdCBwbHVnLWluIG9yIGJ1aWxkIGFuZAotICAgICAgICAgICAgICAgIGluc3RhbGwgdGhlIHBsdWctaW4gZnJvbSB0aGUgbGF0ZXN0IHNvdXJjZSBjb2RlLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nbWFycy1uZXctc29mdHdhcmUnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5JbnN0YWxsaW5nIHRoZSBQcmUtYnVpbHQgUGx1Zy1pbiBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IEVjbGlwc2UgVXBkYXRlIFNpdGU8L3RpdGxlPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRvIGluc3RhbGwgdGhlIE1hcnMgRWNsaXBzZSBZb2N0byBQbHVnLWluIGZyb20gdGhlIHVwZGF0ZQotICAgICAgICAgICAgICAgICAgICBzaXRlLCBmb2xsb3cgdGhlc2Ugc3RlcHM6Ci0gICAgICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TdGFydCB1cCB0aGUgRWNsaXBzZSBJREUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SW4gRWNsaXBzZSwgc2VsZWN0ICJJbnN0YWxsIE5ldwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvZnR3YXJlIiBmcm9tIHRoZSAiSGVscCIgbWVudS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DbGljayAiQWRkLi4uIiBpbiB0aGUgIldvcmsgd2l0aDoiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlYS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkVudGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiZFQ0xJUFNFX0RMX1BMVUdJTl9VUkw7L21hcnM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBVUkwgZmllbGQgYW5kIHByb3ZpZGUgYSBtZWFuaW5nZnVsIG5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgIk5hbWUiIGZpZWxkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsaWNrICJPSyIgdG8gaGF2ZSB0aGUgZW50cnkgYWRkZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgIldvcmsgd2l0aDoiIGRyb3AtZG93biBsaXN0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNlbGVjdCB0aGUgZW50cnkgZm9yIHRoZSBwbHVnLWluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgIldvcmsgd2l0aDoiIGRyb3AtZG93biBsaXN0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNoZWNrIHRoZSBib3hlcyBuZXh0IHRvIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBZb2N0byBQcm9qZWN0IFNESyBQbHVnLWluCi0gICAgIFlvY3RvIFByb2plY3QgRG9jdW1lbnRhdGlvbiBwbHVnLWluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNvbXBsZXRlIHRoZSByZW1haW5pbmcgc29mdHdhcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsYXRpb24gc3RlcHMgYW5kIHRoZW4gcmVzdGFydCB0aGUgRWNsaXBzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElERSB0byBmaW5pc2ggdGhlIGluc3RhbGxhdGlvbiBvZiB0aGUgcGx1Zy1pbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBjbGljayAiT0siIHdoZW4gcHJvbXB0ZWQgYWJvdXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGluZyBzb2Z0d2FyZSB0aGF0IGNvbnRhaW5zIHVuc2lnbmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J21hcnMtemlwLWZpbGUtbWV0aG9kJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+SW5zdGFsbGluZyB0aGUgUGx1Zy1pbiBVc2luZyB0aGUgTGF0ZXN0IFNvdXJjZSBDb2RlPC90aXRsZT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBUbyBpbnN0YWxsIHRoZSBNYXJzIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiBmcm9tIHRoZSBsYXRlc3QKLSAgICAgICAgICAgICAgICAgICAgc291cmNlIGNvZGUsIGZvbGxvdyB0aGVzZSBzdGVwczoKLSAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkJlIHN1cmUgeW91ciBkZXZlbG9wbWVudCBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXMgSkRLIDEuNysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5pbnN0YWxsIFgxMS1yZWxhdGVkIHBhY2thZ2VzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIGFwdC1nZXQgaW5zdGFsbCB4YXV0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JbiBhIG5ldyB0ZXJtaW5hbCBzaGVsbCwgY3JlYXRlIGEgR2l0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeSB3aXRoOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjZCB+Ci0gICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2VjbGlwc2UtcG9reQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Vc2UgR2l0IHRvIGNoZWNrb3V0IHRoZSBjb3JyZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjZCB+L2VjbGlwc2UtcG9reQotICAgICAkIGdpdCBjaGVja291dCBtYXJzL3lvY3RvLSZESVNUUk87Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcHV0cyB5b3UgaW4gYSBkZXRhY2hlZCBIRUFEIHN0YXRlLCB3aGljaAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGZpbmUgc2luY2UgeW91IGFyZSBvbmx5IGdvaW5nIHRvIGJlIGJ1aWxkaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG5vdCBkZXZlbG9waW5nLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNoYW5nZSB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2NyaXB0czwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IHdpdGhpbiB0aGUgR2l0IHJlcG9zaXRvcnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNkIHNjcmlwdHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+U2V0IHVwIHRoZSBsb2NhbCBidWlsZCBlbnZpcm9ubWVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHJ1bm5pbmcgdGhlIHNldHVwIHNjcmlwdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgLi9zZXR1cC5zaAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHRoZSBzY3JpcHQgZmluaXNoZXMgZXhlY3V0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0IHByb21wdHMgeW91IHdpdGggaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byBydW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmJ1aWxkLnNoPC9maWxlbmFtZT4gc2NyaXB0LCB3aGljaAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGFsc28gaW4gdGhlIDxmaWxlbmFtZT5zY3JpcHRzPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgb2YgdGhlIEdpdCByZXBvc2l0b3J5IGNyZWF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXJsaWVyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlJ1biB0aGUgPGZpbGVuYW1lPmJ1aWxkLnNoPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHQgYXMgZGlyZWN0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBwcm92aWRlIHRoZSB0YWcgbmFtZSwgZG9jdW1lbnRhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaCwgYW5kIGEgcmVsZWFzZSBuYW1lLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgRUNMSVBTRV9IT01FPS9ob21lL3Njb3R0cmlmL2VjbGlwc2UtcG9reS9zY3JpcHRzL2VjbGlwc2UgLi9idWlsZC5zaCAtbCBtYXJzL3lvY3RvLSZESVNUUk87IG1hc3RlciB5b2N0by0mRElTVFJPOyAyPiZhbXA7MSB8IHRlZSBidWlsZC5sb2cKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGV4YW1wbGUgY29tbWFuZCBhZGRzIHRoZSB0YWcgeW91Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZCBmb3IgPGZpbGVuYW1lPm1hcnMveW9jdG8tJkRJU1RSTzs8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIDxmaWxlbmFtZT5IRUFEPC9maWxlbmFtZT4sIHRoZW4gdGVsbHMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgc2NyaXB0IHRvIHVzZSB0aGUgbG9jYWwgKC1sKSBHaXQgY2hlY2tvdXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIGJ1aWxkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIHJ1bm5pbmcgdGhlIHNjcmlwdCwgdGhlIGZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b3JnLnlvY3RvLnNkay08L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5yZWxlYXNlPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmRhdGU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4tYXJjaGl2ZS56aXA8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JZiBuZWNlc3NhcnksIHN0YXJ0IHRoZSBFY2xpcHNlIElERQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBiZSBzdXJlIHlvdSBhcmUgaW4gdGhlIFdvcmtiZW5jaC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TZWxlY3QgIkluc3RhbGwgTmV3IFNvZnR3YXJlIiBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlICJIZWxwIiBwdWxsLWRvd24gbWVudS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DbGljayAiQWRkIi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Qcm92aWRlIGFueXRoaW5nIHlvdSB3YW50IGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOYW1lIiBmaWVsZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DbGljayAiQXJjaGl2ZSIgYW5kIGJyb3dzZSB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBaSVAgZmlsZSB5b3UgYnVpbHQgZWFybGllci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIFpJUCBmaWxlIHNob3VsZCBub3QgYmUgInVuemlwcGVkIiwgYW5kIG11c3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSB0aGUgPGZpbGVuYW1lPiphcmNoaXZlLnppcDwvZmlsZW5hbWU+IGZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIGJ5IHJ1bm5pbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkLnNoPC9maWxlbmFtZT4gc2NyaXB0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsaWNrIHRoZSAiT0siIGJ1dHRvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DaGVjayB0aGUgYm94ZXMgdGhhdCBhcHBlYXIgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgaW5zdGFsbGF0aW9uIHdpbmRvdyB0byBpbnN0YWxsIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFlvY3RvIFByb2plY3QgU0RLIFBsdWctaW4KLSAgICAgWW9jdG8gUHJvamVjdCBEb2N1bWVudGF0aW9uIHBsdWctaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RmluaXNoIHRoZSBpbnN0YWxsYXRpb24gYnkgY2xpY2tpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdWdoIHRoZSBhcHByb3ByaWF0ZSBidXR0b25zLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY2xpY2sgIk9LIiB3aGVuIHByb21wdGVkIGFib3V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGluZyBzb2Z0d2FyZSB0aGF0IGNvbnRhaW5zIHVuc2lnbmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5SZXN0YXJ0IHRoZSBFY2xpcHNlIElERSBpZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lY2Vzc2FyeS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQXQgdGhpcyBwb2ludCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gY29uZmlndXJlIHRoZQotICAgICAgICAgICAgICAgICAgICBFY2xpcHNlIFlvY3RvIFBsdWctaW4gYXMgZGVzY3JpYmVkIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWFycy1jb25maWd1cmluZy10aGUtZWNsaXBzZS15b2N0by1wbHVnLWluJz5Db25maWd1cmluZyB0aGUgTWFycyBFY2xpcHNlIFlvY3RvIFBsdWctaW48L2xpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLjwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdtYXJzLWNvbmZpZ3VyaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPgotICAgICAgICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSBNYXJzIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbjwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIENvbmZpZ3VyaW5nIHRoZSBNYXJzIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiBpbnZvbHZlcyBzZXR0aW5nIHRoZQotICAgICAgICAgICAgICAgIENyb3NzIENvbXBpbGVyIG9wdGlvbnMgYW5kIHRoZSBUYXJnZXQgb3B0aW9ucy4KLSAgICAgICAgICAgICAgICBUaGUgY29uZmlndXJhdGlvbnMgeW91IGNob29zZSBiZWNvbWUgdGhlIGRlZmF1bHQgc2V0dGluZ3MKLSAgICAgICAgICAgICAgICBmb3IgYWxsIHByb2plY3RzLgotICAgICAgICAgICAgICAgIFlvdSBkbyBoYXZlIG9wcG9ydHVuaXRpZXMgdG8gY2hhbmdlIHRoZW0gbGF0ZXIgd2hlbgotICAgICAgICAgICAgICAgIHlvdSBjb25maWd1cmUgdGhlIHByb2plY3QgKHNlZSB0aGUgZm9sbG93aW5nIHNlY3Rpb24pLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUbyBzdGFydCwgeW91IG5lZWQgdG8gZG8gdGhlIGZvbGxvd2luZyBmcm9tIHdpdGhpbiB0aGUKLSAgICAgICAgICAgICAgICBFY2xpcHNlIElERToKLSAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2hvb3NlICJQcmVmZXJlbmNlcyIgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICJXaW5kb3ciIG1lbnUgdG8gZGlzcGxheSB0aGUgUHJlZmVyZW5jZXMgRGlhbG9nLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DbGljayAiWW9jdG8gUHJvamVjdCBTREsiIHRvIGRpc3BsYXkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIHNjcmVlbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgc3ViLXNlY3Rpb25zIGRlc2NyaWJlIGhvdyB0byBjb25maWd1cmUgdGhlCi0gICAgICAgICAgICAgICAgdGhlIHBsdWctaW4uCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFRocm91Z2hvdXQgdGhlIGRlc2NyaXB0aW9ucywgYSBzdGFydC10by1maW5pc2ggZXhhbXBsZSBmb3IKLSAgICAgICAgICAgICAgICAgICAgcHJlcGFyaW5nIGEgUUVNVSBpbWFnZSBmb3IgdXNlIHdpdGggRWNsaXBzZSBpcyByZWZlcmVuY2VkCi0gICAgICAgICAgICAgICAgICAgIGFzIHRoZSAid2lraSIgYW5kIGlzIGxpbmtlZCB0byB0aGUgZXhhbXBsZSBvbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaXBzQW5kVHJpY2tzL1J1bm5pbmdFY2xpcHNlQWdhaW5zdEJ1aWx0SW1hZ2UnPiBDb29rYm9vayBndWlkZSB0byBNYWtpbmcgYW4gRWNsaXBzZSBEZWJ1ZyBDYXBhYmxlIEltYWdlPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgd2lraSBwYWdlLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J21hcnMtY29uZmlndXJpbmctdGhlLWNyb3NzLWNvbXBpbGVyLW9wdGlvbnMnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmluZyB0aGUgQ3Jvc3MtQ29tcGlsZXIgT3B0aW9uczwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQ3Jvc3MgQ29tcGlsZXIgb3B0aW9ucyBlbmFibGUgRWNsaXBzZSB0byB1c2UgeW91ciBzcGVjaWZpYwotICAgICAgICAgICAgICAgICAgICBjcm9zcyBjb21waWxlciB0b29sY2hhaW4uCi0gICAgICAgICAgICAgICAgICAgIFRvIGNvbmZpZ3VyZSB0aGVzZSBvcHRpb25zLCB5b3UgbXVzdCBzZWxlY3QKLSAgICAgICAgICAgICAgICAgICAgdGhlIHR5cGUgb2YgdG9vbGNoYWluLCBwb2ludCB0byB0aGUgdG9vbGNoYWluLCBzcGVjaWZ5Ci0gICAgICAgICAgICAgICAgICAgIHRoZSBzeXNyb290IGxvY2F0aW9uLCBhbmQgc2VsZWN0IHRoZSB0YXJnZXQKLSAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlLgotICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5TZWxlY3RpbmcgdGhlIFRvb2xjaGFpbiBUeXBlOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hvb3NlIGJldHdlZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U3RhbmRhbG9uZSBwcmUtYnVpbHQgdG9vbGNoYWluPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QnVpbGQgc3lzdGVtIGRlcml2ZWQgdG9vbGNoYWluPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgQ3Jvc3MgQ29tcGlsZXIgT3B0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlN0YW5kYWxvbmUgUHJlLWJ1aWx0IFRvb2xjaGFpbjo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IHRoaXMgdHlwZSB3aGVuIHlvdSBhcmUgdXNpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHN0YW5kLWFsb25lIGNyb3NzLXRvb2xjaGFpbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgYXJlIGFuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24gZGV2ZWxvcGVyIGFuZCBkbyBub3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkIHRvIGJ1aWxkIGEgdGFyZ2V0IGltYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RlYWQsIHlvdSBqdXN0IHdhbnQgdG8gdXNlIGFuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHRvb2xjaGFpbiBvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuIGV4aXN0aW5nIGtlcm5lbCBhbmQgdGFyZ2V0IHJvb3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCB5b3UgaGF2ZSBkb3dubG9hZGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGluc3RhbGxlZCBhIHByZS1idWlsdCB0b29sY2hhaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYW4gZXhpc3RpbmcgaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJ1aWxkIFN5c3RlbSBEZXJpdmVkIFRvb2xjaGFpbjo8L2ZpbGVuYW1lPjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IHRoaXMgdHlwZSBpZiB5b3UgYnVpbHQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGNoYWluIGFzIHBhcnQgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHlvdSBzZWxlY3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QnVpbGQgc3lzdGVtIGRlcml2ZWQgdG9vbGNoYWluPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGFyZSB1c2luZyB0aGUgdG9vbGNoYWluIGJ1aWx0IGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1bmRsZWQgaW5zaWRlIHRoZSBCdWlsZCBEaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGNyZWF0ZWQgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1aXRhYmxlIGltYWdlIHVzaW5nIHRoZSBzdGVwcyBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvUnVubmluZ0VjbGlwc2VBZ2FpbnN0QnVpbHRJbWFnZSc+d2lraTwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgc2l0dWF0aW9uLCB5b3Ugd291bGQgc2VsZWN0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CdWlsZCBzeXN0ZW0gZGVyaXZlZCB0b29sY2hhaW48L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNwZWNpZnkgdGhlIFRvb2xjaGFpbiBSb290IExvY2F0aW9uOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1c2luZyBhIHN0YW5kLWFsb25lIHByZS1idWlsdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xjaGFpbiwgeW91IHNob3VsZCBiZSBwb2ludGluZyB0byB3aGVyZSBpdCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxlZCAoZS5nLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vb3B0L3Bva3kvJkRJU1RSTzs8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstaW5zdGFsbGluZy10aGUtc2RrJz5JbnN0YWxsaW5nIHRoZSBTREs8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0aGUgU0RLIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgYXJlIHVzaW5nIGEgYnVpbGQgc3lzdGVtIGRlcml2ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4sIHRoZSBwYXRoIHlvdSBwcm92aWRlIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VG9vbGNoYWluIFJvb3QgTG9jYXRpb248L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkIGlzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHdoaWNoIHlvdSBydW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPiBjb21tYW5kIChlLmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZDwvZmlsZW5hbWU+KS48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWJ1aWxkaW5nLWFuLXNkay1pbnN0YWxsZXInPkJ1aWxkaW5nIGFuIFNESyBJbnN0YWxsZXI8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNwZWNpZnkgU3lzcm9vdCBMb2NhdGlvbjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbG9jYXRpb24gaXMgd2hlcmUgdGhlIHJvb3QgZmlsZXN5c3RlbSBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0IGhhcmR3YXJlIHJlc2lkZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoaXMgbG9jYXRpb24gZGVwZW5kcyBvbiB3aGVyZSB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXBhcmF0ZWx5IGV4dHJhY3RlZCBhbmQgaW5zdGFsbGVkIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCBmaWxlc3lzdGVtIHdoZW4geW91IGVpdGhlciBidWlsdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0IG9yIGRvd25sb2FkZWQgaXQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkb3dubG9hZGVkIHRoZSByb290IGZpbGVzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSB0YXJnZXQgaGFyZHdhcmUgcmF0aGVyIHRoYW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHQgaXQsIHlvdSBtdXN0IGRvd25sb2FkIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c2F0by1zZGs8L2ZpbGVuYW1lPiBpbWFnZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBvcmRlciB0byBidWlsZCBhbnkgYy9jKysgcHJvamVjdHMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIHN1cHBvc2UgeW91IHByZXBhcmVkIGFuIGltYWdlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIHN0ZXBzIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvVGlwc0FuZFRyaWNrcy9SdW5uaW5nRWNsaXBzZUFnYWluc3RCdWlsdEltYWdlJz53aWtpPC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgc28sIHRoZSA8ZmlsZW5hbWU+TVlfUUVNVV9ST09URlM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBpcyBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHlvdSB3b3VsZCBicm93c2UgdG8gYW5kIHNlbGVjdCB0aGF0IGRpcmVjdG9yeQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT4vaG9tZS9zY290dHJpZi9idWlsZC9NWV9RRU1VX1JPT1RGUzwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIGluc3RhbGwgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGNoYWluIGFuZCBvbiBob3cgdG8gZXh0cmFjdCBhbmQgaW5zdGFsbCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNyb290IGZpbGVzeXN0ZW0sIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWJ1aWxkaW5nLWFuLXNkay1pbnN0YWxsZXInPkJ1aWxkaW5nIGFuIFNESyBJbnN0YWxsZXI8L2xpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNlbGVjdCB0aGUgVGFyZ2V0IEFyY2hpdGVjdHVyZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIHRoZSB0eXBlIG9mIGhhcmR3YXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGFyZSBnb2luZyB0byB1c2Ugb3IgZW11bGF0ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIHB1bGwtZG93bgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UYXJnZXQgQXJjaGl0ZWN0dXJlPC9maWxlbmFtZT4gbWVudQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIG1ha2UgeW91ciBzZWxlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHB1bGwtZG93biBtZW51IHNob3VsZCBoYXZlIHRoZSBzdXBwb3J0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmVzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSBhcmNoaXRlY3R1cmUgeW91IG5lZWQgaXMgbm90IGxpc3RlZCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBtZW51LCB5b3Ugd2lsbCBuZWVkIHRvIGJ1aWxkIHRoZSBpbWFnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1FTX1VSTDsjcXMtYnVpbGRpbmctaW1hZ2VzJz5CdWlsZGluZyBJbWFnZXM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0IGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmUgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvUnVubmluZ0VjbGlwc2VBZ2FpbnN0QnVpbHRJbWFnZSc+d2lraTwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L3NlY3Rpb24+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdtYXJzLWNvbmZpZ3VyaW5nLXRoZS10YXJnZXQtb3B0aW9ucyc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSBUYXJnZXQgT3B0aW9uczwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBjaG9vc2UgdG8gZW11bGF0ZSBoYXJkd2FyZSB1c2luZyB0aGUgUUVNVQotICAgICAgICAgICAgICAgICAgICBlbXVsYXRvciwgb3IgeW91IGNhbiBjaG9vc2UgdG8gcnVuIHlvdXIgaW1hZ2Ugb24gYWN0dWFsCi0gICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlLgotICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5RRU1VOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IHRoaXMgb3B0aW9uIGlmIHlvdSB3aWxsIGJlIHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFFTVUgZW11bGF0b3IuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1c2luZyB0aGUgZW11bGF0b3IsIHlvdSBhbHNvIG5lZWQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGUgdGhlIGtlcm5lbCBhbmQgc3BlY2lmeSBhbnkgY3VzdG9tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy48L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IHNlbGVjdGVkIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CdWlsZCBzeXN0ZW0gZGVyaXZlZCB0b29sY2hhaW48L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0IGtlcm5lbCB5b3UgYnVpbHQgd2lsbCBiZSBsb2NhdGVkIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC9kZXBsb3kvaW1hZ2VzLzxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBzdXBwb3NlIHlvdSBwZXJmb3JtZWQgdGhlIHN0ZXBzIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaXBzQW5kVHJpY2tzL1J1bm5pbmdFY2xpcHNlQWdhaW5zdEJ1aWx0SW1hZ2UnPndpa2k8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHlvdSBzcGVjaWZ5IHlvdXIgQnVpbGQgRGlyZWN0b3J5IHBhdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dlZCBieSB0aGUgaW1hZ2UgKGUuZy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2L2J6SW1hZ2UtcWVtdXg4Ni5iaW48L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBzZWxlY3RlZCB0aGUgc3RhbmRhbG9uZSBwcmUtYnVpbHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4sIHRoZSBwcmUtYnVpbHQgaW1hZ2UgeW91IGRvd25sb2FkZWQgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGVkIGluIHRoZSBkaXJlY3RvcnkgeW91IHNwZWNpZmllZCB3aGVuIHlvdQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkZWQgdGhlIGltYWdlLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Nb3N0IGN1c3RvbSBvcHRpb25zIGFyZSBmb3IgYWR2YW5jZWQgUUVNVQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJzIHRvIGZ1cnRoZXIgY3VzdG9taXplIHRoZWlyIFFFTVUgaW5zdGFuY2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2Ugb3B0aW9ucyBhcmUgc3BlY2lmaWVkIGJldHdlZW4gcGFpcmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGVkIGJyYWNrZXRzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgb3B0aW9ucyBtdXN0IGJlIHNwZWNpZmllZCBvdXRzaWRlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYWNrZXRzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHBhcnRpY3VsYXIsIHRoZSBvcHRpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNlcmlhbDwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ub2dyYXBoaWM8L2ZpbGVuYW1lPiwgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmt2bTwvZmlsZW5hbWU+IG11c3QgYWxsIGJlIG91dHNpZGUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhY2tldHMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+bWFuIHFlbXU8L2ZpbGVuYW1lPiBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZ2V0IGhlbHAgb24gYWxsIHRoZSBvcHRpb25zIGFuZCB0aGVpciB1c2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgIHNlcmlhbCDigJgmbHQ7LW0gMjU2IC1mdWxsLXNjcmVlbiZndDvigJkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2FyZGxlc3Mgb2YgdGhlIG1vZGUsIFN5c3Jvb3QgaXMgYWxyZWFkeQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgYXMgcGFydCBvZiB0aGUgQ3Jvc3MtQ29tcGlsZXIgT3B0aW9ucwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlN5c3Jvb3QgTG9jYXRpb246PC9maWxlbmFtZT4gZmllbGQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkV4dGVybmFsIEhXOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IHRoaXMgb3B0aW9uIGlmIHlvdSB3aWxsIGJlIHVzaW5nIGFjdHVhbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQ2xpY2sgdGhlICJBcHBseSIgYW5kICJPSyIgdG8gc2F2ZSB5b3VyIHBsdWctaW4KLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgotICAgICAgICA8L3NlY3Rpb24+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J21hcnMtY3JlYXRpbmctdGhlLXByb2plY3QnPgotICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgdGhlIFByb2plY3Q8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IGNhbiBjcmVhdGUgdHdvIHR5cGVzIG9mIHByb2plY3RzOiAgQXV0b3Rvb2xzLWJhc2VkLCBvcgotICAgICAgICAgICAgTWFrZWZpbGUtYmFzZWQuCi0gICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGhvdyB0byBjcmVhdGUgQXV0b3Rvb2xzLWJhc2VkIHByb2plY3RzCi0gICAgICAgICAgICBmcm9tIHdpdGhpbiB0aGUgRWNsaXBzZSBJREUuCi0gICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gY3JlYXRpbmcgTWFrZWZpbGUtYmFzZWQgcHJvamVjdHMgaW4gYQotICAgICAgICAgICAgdGVybWluYWwgd2luZG93LCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWFrZWZpbGUtYmFzZWQtcHJvamVjdHMnPk1ha2VmaWxlLUJhc2VkIFByb2plY3RzPC9saW5rPiIKLSAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBEbyBub3QgdXNlIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBwcm9qZWN0IG5hbWVzCi0gICAgICAgICAgICAgICAgKGUuZy4gc3BhY2VzLCB1bmRlcnNjb3JlcywgZXRjLikuICBEb2luZyBzbyBjYW4KLSAgICAgICAgICAgICAgICBjYXVzZSBjb25maWd1cmF0aW9uIHRvIGZhaWwuCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRvIGNyZWF0ZSBhIHByb2plY3QgYmFzZWQgb24gYSBZb2N0byB0ZW1wbGF0ZSBhbmQgdGhlbiBkaXNwbGF5Ci0gICAgICAgICAgICB0aGUgc291cmNlIGNvZGUsIGZvbGxvdyB0aGVzZSBzdGVwczoKLSAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+U2VsZWN0ICJDIFByb2plY3QiIGZyb20gdGhlICJGaWxlIC0+IE5ldyIgbWVudS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkV4cGFuZCA8ZmlsZW5hbWU+WW9jdG8gUHJvamVjdCBTREsgQXV0b3Rvb2xzIFByb2plY3Q8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNlbGVjdCA8ZmlsZW5hbWU+SGVsbG8gV29ybGQgQU5TSSBDIEF1dG90b29scyBQcm9qZWN0czwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIGFuIEF1dG90b29scy1iYXNlZCBwcm9qZWN0IGJhc2VkIG9uIGEgWW9jdG8KLSAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5QdXQgYSBuYW1lIGluIHRoZSA8ZmlsZW5hbWU+UHJvamVjdCBuYW1lOjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGZpZWxkLgotICAgICAgICAgICAgICAgICAgICBEbyBub3QgdXNlIGh5cGhlbnMgYXMgcGFydCBvZiB0aGUgbmFtZQotICAgICAgICAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+aGVsbG88L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DbGljayAiTmV4dCIuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BZGQgYXBwcm9wcmlhdGUgaW5mb3JtYXRpb24gaW4gdGhlIHZhcmlvdXMKLSAgICAgICAgICAgICAgICAgICAgZmllbGRzLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2xpY2sgIkZpbmlzaCIuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JZiB0aGUgIm9wZW4gcGVyc3BlY3RpdmUiIHByb21wdCBhcHBlYXJzLAotICAgICAgICAgICAgICAgICAgICBjbGljayAiWWVzIiBzbyB0aGF0IHlvdSBpbiB0aGUgQy9DKysgcGVyc3BlY3RpdmUuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgbGVmdC1oYW5kIG5hdmlnYXRpb24gcGFuZSBzaG93cyB5b3VyCi0gICAgICAgICAgICAgICAgICAgIHByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZGlzcGxheSB5b3VyIHNvdXJjZSBieSBkb3VibGUgY2xpY2tpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgIHByb2plY3QncyBzb3VyY2UgZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J21hcnMtY29uZmlndXJpbmctdGhlLWNyb3NzLXRvb2xjaGFpbnMnPgotICAgICAgICA8dGl0bGU+Q29uZmlndXJpbmcgdGhlIENyb3NzLVRvb2xjaGFpbnM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGVhcmxpZXIgc2VjdGlvbiwKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdtYXJzLWNvbmZpZ3VyaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPkNvbmZpZ3VyaW5nIHRoZSBNYXJzIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbjwvbGluaz4iLAotICAgICAgICAgICAgc2V0cyB1cCB0aGUgZGVmYXVsdCBwcm9qZWN0IGNvbmZpZ3VyYXRpb25zLgotICAgICAgICAgICAgWW91IGNhbiBvdmVycmlkZSB0aGVzZSBzZXR0aW5ncyBmb3IgYSBnaXZlbiBwcm9qZWN0IGJ5IGZvbGxvd2luZwotICAgICAgICAgICAgdGhlc2Ugc3RlcHM6Ci0gICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNlbGVjdCAiWW9jdG8gUHJvamVjdCBTZXR0aW5ncyIgZnJvbQotICAgICAgICAgICAgICAgICAgICB0aGUgIlByb2plY3QgLT4gUHJvcGVydGllcyIgbWVudS4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBzZWxlY3Rpb24gYnJpbmdzIHVwIHRoZSBZb2N0byBQcm9qZWN0IFNldHRpbmdzCi0gICAgICAgICAgICAgICAgICAgIERpYWxvZyBhbmQgYWxsb3dzIHlvdSB0byBtYWtlIGNoYW5nZXMgc3BlY2lmaWMgdG8gYW4KLSAgICAgICAgICAgICAgICAgICAgaW5kaXZpZHVhbCBwcm9qZWN0LjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHBhcmE+QnkgZGVmYXVsdCwgdGhlIENyb3NzIENvbXBpbGVyIE9wdGlvbnMgYW5kIFRhcmdldAotICAgICAgICAgICAgICAgICAgICBPcHRpb25zIGZvciBhIHByb2plY3QgYXJlIGluaGVyaXRlZCBmcm9tIHNldHRpbmdzIHlvdQotICAgICAgICAgICAgICAgICAgICBwcm92aWRlZCB1c2luZyB0aGUgUHJlZmVyZW5jZXMgRGlhbG9nIGFzIGRlc2NyaWJlZAotICAgICAgICAgICAgICAgICAgICBlYXJsaWVyIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWFycy1jb25maWd1cmluZy10aGUtZWNsaXBzZS15b2N0by1wbHVnLWluJz5Db25maWd1cmluZyB0aGUgTWFycyBFY2xpcHNlIFlvY3RvIFBsdWctaW48L2xpbms+IiBzZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBTZXR0aW5ncyBEaWFsb2cgYWxsb3dzIHlvdSB0byBvdmVycmlkZQotICAgICAgICAgICAgICAgICAgICB0aG9zZSBkZWZhdWx0IHNldHRpbmdzIGZvciBhIGdpdmVuIHByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5NYWtlIG9yIHZlcmlmeSB5b3VyIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgcHJvamVjdCBhbmQgY2xpY2sgIk9LIi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlJpZ2h0LWNsaWNrIGluIHRoZSBuYXZpZ2F0aW9uIHBhbmUgYW5kCi0gICAgICAgICAgICAgICAgICAgIHNlbGVjdCAiUmVjb25maWd1cmUgUHJvamVjdCIgZnJvbSB0aGUgcG9wLXVwIG1lbnUuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgc2VsZWN0aW9uIHJlY29uZmlndXJlcyB0aGUgcHJvamVjdCBieSBydW5uaW5nCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvZ2VuLnNoPC9maWxlbmFtZT4gaW4gdGhlIHdvcmtzcGFjZSBmb3IKLSAgICAgICAgICAgICAgICAgICAgeW91ciBwcm9qZWN0LgotICAgICAgICAgICAgICAgICAgICBUaGUgc2NyaXB0IGFsc28gcnVucyA8ZmlsZW5hbWU+bGlidG9vbGl6ZTwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YWNsb2NhbDwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b2NvbmY8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmF1dG9oZWFkZXI8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmF1dG9tYWtlIC0tYTwvZmlsZW5hbWU+LCBhbmQKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi4vY29uZmlndXJlPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIENsaWNrIG9uIHRoZSAiQ29uc29sZSIgdGFiIGJlbmVhdGggeW91ciBzb3VyY2UgY29kZSB0bwotICAgICAgICAgICAgICAgICAgICBzZWUgdGhlIHJlc3VsdHMgb2YgcmVjb25maWd1cmluZyB5b3VyIHByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdtYXJzLWJ1aWxkaW5nLXRoZS1wcm9qZWN0Jz4KLSAgICAgICAgPHRpdGxlPkJ1aWxkaW5nIHRoZSBQcm9qZWN0PC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRvIGJ1aWxkIHRoZSBwcm9qZWN0IHNlbGVjdCAiQnVpbGQgQWxsIiBmcm9tIHRoZQotICAgICAgICAgICAgIlByb2plY3QiIG1lbnUuCi0gICAgICAgICAgICBUaGUgY29uc29sZSBzaG91bGQgdXBkYXRlIGFuZCB5b3UgY2FuIG5vdGUgdGhlIGNyb3NzLWNvbXBpbGVyCi0gICAgICAgICAgICB5b3UgYXJlIHVzaW5nLgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgV2hlbiBidWlsZGluZyAiWW9jdG8gUHJvamVjdCBTREsgQXV0b3Rvb2xzIiBwcm9qZWN0cywgdGhlCi0gICAgICAgICAgICAgICAgRWNsaXBzZSBJREUgbWlnaHQgZGlzcGxheSBlcnJvciBtZXNzYWdlcyBmb3IKLSAgICAgICAgICAgICAgICBGdW5jdGlvbnMvU3ltYm9scy9UeXBlcyB0aGF0IGNhbm5vdCBiZSAicmVzb2x2ZWQiLCBldmVuIHdoZW4KLSAgICAgICAgICAgICAgICB0aGUgcmVsYXRlZCBpbmNsdWRlIGZpbGUgaXMgbGlzdGVkIGF0IHRoZSBwcm9qZWN0IG5hdmlnYXRvciBhbmQKLSAgICAgICAgICAgICAgICB3aGVuIHRoZSBwcm9qZWN0IGlzIGFibGUgdG8gYnVpbGQuCi0gICAgICAgICAgICAgICAgRm9yIHRoZXNlIGNhc2VzIG9ubHksIGl0IGlzIHJlY29tbWVuZGVkIHRvIGFkZCBhIG5ldyBsaW5rZWQKLSAgICAgICAgICAgICAgICBmb2xkZXIgdG8gdGhlIGFwcHJvcHJpYXRlIHN5c3Jvb3QuCi0gICAgICAgICAgICAgICAgVXNlIHRoZXNlIHN0ZXBzIHRvIGFkZCB0aGUgbGlua2VkIGZvbGRlcjoKLSAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCB0aGUgcHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgIkZvbGRlciIgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GaWxlID4gTmV3PC9maWxlbmFtZT4gbWVudS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGUgIk5ldyBGb2xkZXIiIERpYWxvZywgc2VsZWN0ICJMaW5rIHRvIGFsdGVybmF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gKGxpbmtlZCBmb2xkZXIpIi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiQnJvd3NlIiB0byBuYXZpZ2F0ZSB0byB0aGUgaW5jbHVkZSBmb2xkZXIgaW5zaWRlCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2FtZSBzeXNyb290IGxvY2F0aW9uIHNlbGVjdGVkIGluIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrICJPSyIuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIkZpbmlzaCIgdG8gc2F2ZSB0aGUgbGlua2VkIGZvbGRlci4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci0KLSAgICA8c2VjdGlvbiBpZD0nbWFycy1zdGFydGluZy1xZW11LWluLXVzZXItc3BhY2UtbmZzLW1vZGUnPgotICAgICAgICA8dGl0bGU+U3RhcnRpbmcgUUVNVSBpbiBVc2VyLVNwYWNlIE5GUyBNb2RlPC90aXRsZT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRvIHN0YXJ0IHRoZSBRRU1VIGVtdWxhdG9yIGZyb20gd2l0aGluIEVjbGlwc2UsIGZvbGxvdyB0aGVzZQotICAgICAgICAgICAgc3RlcHM6Ci0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1tYW51YWwtcWVtdSc+VXNpbmcgdGhlIFF1aWNrIEVNVWxhdG9yIChRRU1VKTwvdWxpbms+IgotICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsCi0gICAgICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdXNpbmcgUUVNVS4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RXhwb3NlIGFuZCBzZWxlY3QgIkV4dGVybmFsIFRvb2xzCi0gICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb25zIC4uLiIgZnJvbSB0aGUgIlJ1biAtPiBFeHRlcm5hbCBUb29scyIgbWVudS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBMb2NhdGUgYW5kIHNlbGVjdCB5b3VyIGltYWdlIGluIHRoZSBuYXZpZ2F0aW9uIHBhbmVsIHRvCi0gICAgICAgICAgICAgICAgICAgIHRoZSBsZWZ0IChlLmcuIDxmaWxlbmFtZT5xZW11X2k1ODYtcG9reS1saW51eDwvZmlsZW5hbWU+KS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBDbGljayAiUnVuIiB0byBsYXVuY2ggUUVNVS4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgaG9zdCBvbiB3aGljaCB5b3UgYXJlIHJ1bm5pbmcgUUVNVSBtdXN0IGhhdmUKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+cnBjYmluZDwvZmlsZW5hbWU+IHV0aWxpdHkgcnVubmluZyB0byBiZQotICAgICAgICAgICAgICAgICAgICAgICAgYWJsZSB0byBtYWtlIFJQQyBjYWxscyBvbiBhIHNlcnZlciBvbiB0aGF0IG1hY2hpbmUuCi0gICAgICAgICAgICAgICAgICAgICAgICBJZiBRRU1VIGRvZXMgbm90IGludm9rZSBhbmQgeW91IHJlY2VpdmUgZXJyb3IgbWVzc2FnZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIGludm9sdmluZyA8ZmlsZW5hbWU+cnBjYmluZDwvZmlsZW5hbWU+LCBmb2xsb3cgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBzdWdnZXN0aW9ucyB0byBnZXQgdGhlIHNlcnZpY2UgcnVubmluZy4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIG9uIGEgbmV3IFVidW50dSAxNi4wNCBMVFMgaW5zdGFsbGF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgeW91IG11c3QgZG8gdGhlIGZvbGxvd2luZyBpbiBvcmRlciB0byBnZXQgUUVNVSB0bwotICAgICAgICAgICAgICAgICAgICAgICAgbGF1bmNoOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHN1ZG8gYXB0LWdldCBpbnN0YWxsIHJwY2JpbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIGluc3RhbGxpbmcgPGZpbGVuYW1lPnJwY2JpbmQ8L2ZpbGVuYW1lPiwgeW91Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZWVkIHRvIGVkaXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2V0Yy9pbml0LmQvcnBjYmluZDwvZmlsZW5hbWU+IGZpbGUgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBsaW5lOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBPUFRJT05TPSItaSAtdyIKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIG1vZGlmeWluZyB0aGUgZmlsZSwgeW91IG5lZWQgdG8gc3RhcnQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHN1ZG8gc2VydmljZSBwb3J0bWFwIHJlc3RhcnQKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SWYgbmVlZGVkLCBlbnRlciB5b3VyIGhvc3Qgcm9vdCBwYXNzd29yZCBpbgotICAgICAgICAgICAgICAgICAgICB0aGUgc2hlbGwgd2luZG93IGF0IHRoZSBwcm9tcHQuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgc2V0cyB1cCBhIDxmaWxlbmFtZT5UYXAgMDwvZmlsZW5hbWU+IGNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgbmVlZGVkIGZvciBydW5uaW5nIGluIHVzZXItc3BhY2UgTkZTIG1vZGUuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5XYWl0IGZvciBRRU1VIHRvIGxhdW5jaC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPk9uY2UgUUVNVSBsYXVuY2hlcywgeW91IGNhbiBiZWdpbiBvcGVyYXRpbmcKLSAgICAgICAgICAgICAgICAgICAgd2l0aGluIHRoYXQgZW52aXJvbm1lbnQuCi0gICAgICAgICAgICAgICAgICAgIE9uZSB1c2VmdWwgdGFzayBhdCB0aGlzIHBvaW50IHdvdWxkIGJlIHRvIGRldGVybWluZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgSVAgQWRkcmVzcyBmb3IgdGhlIHVzZXItc3BhY2UgTkZTIGJ5IHVzaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aWZjb25maWc8L2ZpbGVuYW1lPiBjb21tYW5kLgotICAgICAgICAgICAgICAgICAgICBUaGUgSVAgYWRkcmVzcyBvZiB0aGUgUUVNVSBtYWNoaW5lIGFwcGVhcnMgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIHh0ZXJtIHdpbmRvdy4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhpcyBhZGRyZXNzIHRvIGhlbHAgeW91IHNlZSB3aGljaCBwYXJ0aWN1bGFyCi0gICAgICAgICAgICAgICAgICAgIElQIGFkZHJlc3MgdGhlIGluc3RhbmNlIG9mIFFFTVUgaXMgdXNpbmcuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdtYXJzLWRlcGxveWluZy1hbmQtZGVidWdnaW5nLXRoZS1hcHBsaWNhdGlvbic+Ci0gICAgICAgIDx0aXRsZT5EZXBsb3lpbmcgYW5kIERlYnVnZ2luZyB0aGUgQXBwbGljYXRpb248L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgT25jZSB0aGUgUUVNVSBlbXVsYXRvciBpcyBydW5uaW5nIHRoZSBpbWFnZSwgeW91IGNhbiBkZXBsb3kKLSAgICAgICAgICAgIHlvdXIgYXBwbGljYXRpb24gdXNpbmcgdGhlIEVjbGlwc2UgSURFIGFuZCB0aGVuIHVzZQotICAgICAgICAgICAgdGhlIGVtdWxhdG9yIHRvIHBlcmZvcm0gZGVidWdnaW5nLgotICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGRlcGxveSB0aGUgYXBwbGljYXRpb24uCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBDdXJyZW50bHksIEVjbGlwc2UgZG9lcyBub3Qgc3VwcG9ydCBTU0ggcG9ydCBmb3J3YXJkaW5nLgotICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgaWYgeW91IG5lZWQgdG8gcnVuIG9yIGRlYnVnIGEgcmVtb3RlCi0gICAgICAgICAgICAgICAgYXBwbGljYXRpb24gdXNpbmcgdGhlIGhvc3QgZGlzcGxheSwgeW91IG11c3QgY3JlYXRlIGEKLSAgICAgICAgICAgICAgICB0dW5uZWxpbmcgY29ubmVjdGlvbiBmcm9tIG91dHNpZGUgRWNsaXBzZSBhbmQga2VlcAotICAgICAgICAgICAgICAgIHRoYXQgY29ubmVjdGlvbiBhbGl2ZSBkdXJpbmcgeW91ciB3b3JrLgotICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpbiBhIG5ldyB0ZXJtaW5hbCwgcnVuIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHNzaCAtWFkgPHJlcGxhY2VhYmxlPnVzZXJfbmFtZTwvcmVwbGFjZWFibGU+QDxyZXBsYWNlYWJsZT5yZW1vdGVfaG9zdF9pcDwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIFVzaW5nIHRoZSBhYm92ZSBmb3JtLCBoZXJlIGlzIGFuIGV4YW1wbGU6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHNzaCAtWFkgcm9vdEAxOTIuMTY4LjcuMgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBBZnRlciBydW5uaW5nIHRoZSBjb21tYW5kLCBhZGQgdGhlIGNvbW1hbmQgdG8gYmUgZXhlY3V0ZWQKLSAgICAgICAgICAgICAgICBpbiBFY2xpcHNlJ3MgcnVuIGNvbmZpZ3VyYXRpb24gYmVmb3JlIHRoZSBhcHBsaWNhdGlvbgotICAgICAgICAgICAgICAgIGFzIGZvbGxvd3M6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBleHBvcnQgRElTUExBWT06MTAuMAotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIG5vdCBkZXN0cm95IHRoZSBjb25uZWN0aW9uIGR1cmluZyB5b3VyIFFFTVUKLSAgICAgICAgICAgICAgICBzZXNzaW9uIChpLmUuIGRvIG5vdAotICAgICAgICAgICAgICAgIGV4aXQgb3V0IG9mIG9yIGNsb3NlIHRoYXQgc2hlbGwpLgotICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TZWxlY3QgIkRlYnVnIENvbmZpZ3VyYXRpb25zLi4uIiBmcm9tIHRoZQotICAgICAgICAgICAgICAgICAgICAiUnVuIiBtZW51LjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JbiB0aGUgbGVmdCBhcmVhLCBleHBhbmQKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkMvQysrUmVtb3RlIEFwcGxpY2F0aW9uPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Mb2NhdGUgeW91ciBwcm9qZWN0IGFuZCBzZWxlY3QgaXQgdG8gYnJpbmcKLSAgICAgICAgICAgICAgICAgICAgdXAgYSBuZXcgdGFiYmVkIHZpZXcgaW4gdGhlIERlYnVnIENvbmZpZ3VyYXRpb25zIERpYWxvZy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsaWNrIG9uIHRoZSAiRGVidWdnZXIiIHRhYiB0byBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgIGNyb3NzLXRvb2wgZGVidWdnZXIgeW91IGFyZSB1c2luZy4KLSAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBjaGFuZ2UgdG8gdGhlIGRlYnVnZ2VyIHBlcnNwZWN0aXZlIGluIEVjbGlwc2UuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DbGljayBvbiB0aGUgIk1haW4iIHRhYi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNyZWF0ZSBhIG5ldyBjb25uZWN0aW9uIHRvIHRoZSBRRU1VIGluc3RhbmNlCi0gICAgICAgICAgICAgICAgICAgIGJ5IGNsaWNraW5nIG9uICJuZXciLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TZWxlY3QgPGZpbGVuYW1lPlNTSDwvZmlsZW5hbWU+LCB3aGljaCBtZWFucwotICAgICAgICAgICAgICAgICAgICBTZWN1cmUgU29ja2V0IFNoZWxsLgotICAgICAgICAgICAgICAgICAgICBPcHRpb25hbGx5LCB5b3UgY2FuIHNlbGVjdCBhIFRDRiBjb25uZWN0aW9uIGluc3RlYWQuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DbGljayAiTmV4dCIuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DbGVhciBvdXQgdGhlICJDb25uZWN0aW9uIG5hbWUiIGZpZWxkIGFuZAotICAgICAgICAgICAgICAgICAgICBlbnRlciBhbnkgbmFtZSB5b3Ugd2FudCBmb3IgdGhlIGNvbm5lY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5QdXQgdGhlIElQIGFkZHJlc3MgZm9yIHRoZSBjb25uZWN0aW9uIGluCi0gICAgICAgICAgICAgICAgICAgIHRoZSAiSG9zdCIgZmllbGQuCi0gICAgICAgICAgICAgICAgICAgIEZvciBRRU1VLCB0aGUgZGVmYXVsdCBpcyA8ZmlsZW5hbWU+MTkyLjE2OC43LjI8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgYSBwcmV2aW91cyBRRU1VIHNlc3Npb24gZGlkIG5vdCBleGl0Ci0gICAgICAgICAgICAgICAgICAgIGNsZWFubHksIHRoZSBJUCBhZGRyZXNzIGluY3JlbWVudHMgKGUuZy4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjE5Mi4xNjguNy4zPC9maWxlbmFtZT4pLgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGUgSVAgYWRkcmVzcyBmb3IgdGhlIGN1cnJlbnQgUUVNVQotICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbiBieSBsb29raW5nIGluIHRoZSB4dGVybSB0aGF0IG9wZW5zIHdoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBsYXVuY2ggUUVNVS4KLSAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RW50ZXIgPGZpbGVuYW1lPnJvb3Q8L2ZpbGVuYW1lPiwgd2hpY2gKLSAgICAgICAgICAgICAgICAgICAgaXMgdGhlIGRlZmF1bHQgZm9yIFFFTVUsIGZvciB0aGUgIlVzZXIiIGZpZWxkLgotICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIGxlYXZlIHRoZSBwYXNzd29yZCBmaWVsZCBlbXB0eS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsaWNrICJGaW5pc2giIHRvIGNsb3NlIHRoZQotICAgICAgICAgICAgICAgICAgICBOZXcgQ29ubmVjdGlvbnMgRGlhbG9nLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SWYgbmVjZXNzYXJ5LCB1c2UgdGhlIGRyb3AtZG93biBtZW51IG5vdyBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgIkNvbm5lY3Rpb24iIGZpZWxkIGFuZCBwaWNrIHRoZSBJUCBBZGRyZXNzIHlvdSBlbnRlcmVkLgotICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkFzc3VtaW5nIHlvdSBhcmUgY29ubmVjdGluZyBhcyB0aGUgcm9vdCB1c2VyLAotICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyB0aGUgZGVmYXVsdCBmb3IgUUVNVSB4ODYtNjQgU0RLIGltYWdlcyBwcm92aWRlZCBieQotICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCwgaW4gdGhlICJSZW1vdGUgQWJzb2x1dGUgRmlsZSBQYXRoIGZvcgotICAgICAgICAgICAgICAgICAgICBDL0MrKyBBcHBsaWNhdGlvbiIgZmllbGQsIGJyb3dzZSB0bwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2hvbWUvcm9vdDwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICBZb3UgY291bGQgYWxzbyBicm93c2UgdG8gYW55IG90aGVyIHBhdGggeW91IGhhdmUgd3JpdGUKLSAgICAgICAgICAgICAgICAgICAgYWNjZXNzIHRvIG9uIHRoZSB0YXJnZXQgc3VjaCBhcwotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3Vzci9iaW48L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBsb2NhdGlvbiBpcyB3aGVyZSB5b3VyIGFwcGxpY2F0aW9uIHdpbGwgYmUgbG9jYXRlZCBvbgotICAgICAgICAgICAgICAgICAgICB0aGUgUUVNVSBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgICAgIElmIHlvdSBmYWlsIHRvIGJyb3dzZSB0byBhbmQgc3BlY2lmeSBhbiBhcHByb3ByaWF0ZQotICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiwgUUVNVSB3aWxsIG5vdCB1bmRlcnN0YW5kIHdoYXQgdG8gcmVtb3RlbHkKLSAgICAgICAgICAgICAgICAgICAgbGF1bmNoLgotICAgICAgICAgICAgICAgICAgICBFY2xpcHNlIGlzIGhlbHBmdWwgaW4gdGhhdCBpdCBhdXRvIGZpbGxzIHlvdXIgYXBwbGljYXRpb24KLSAgICAgICAgICAgICAgICAgICAgbmFtZSBmb3IgeW91IGFzc3VtaW5nIHlvdSBicm93c2VkIHRvIGEgZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwczwvdGl0bGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSBwcm9tcHRlZCB0byBwcm92aWRlIGEgdXNlcm5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRvIG9wdGlvbmFsbHkgc2V0IGEgcGFzc3dvcmQsIGJlIHN1cmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IHByb3ZpZGUgInJvb3QiIGFzIHRoZSB1c2VybmFtZSBhbmQgeW91Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlYXZlIHRoZSBwYXNzd29yZCBmaWVsZCBibGFuay4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBicm93c2luZyB0byBhIGRpcmVjdG9yeSBmYWlscyBvciB0aW1lcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQsIGJ1dCB5b3UgY2FuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc2g8L2ZpbGVuYW1lPiBpbnRvIHlvdXIgUUVNVQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciB0YXJnZXQgZnJvbSB0aGUgY29tbWFuZCBsaW5lIGFuZCB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZSBwcm94aWVzIHNldCB1cCwgaXQgaXMgbGlrZWx5IHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWNsaXBzZSBpcyBzZW5kaW5nIHRoZSBTU0ggdHJhZmZpYyB0byBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3h5LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIGVpdGhlciB1c2UgVENGICwgb3IgY2xpY2sgb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ3VyZSBwcm94eSBzZXR0aW5ncyIgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24gZGlhbG9nIGFuZCBhZGQgdGhlIHRhcmdldCBJUAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzIHRvIHRoZSAiYnlwYXNzIHByb3h5IiBzZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbWlnaHQgYWxzbyBuZWVkIHRvIGNoYW5nZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWN0aXZlIFByb3ZpZGVyIiBmcm9tIE5hdGl2ZSB0byBNYW51YWwuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHlvdSBjaGFuZ2UgdG8gdGhlICJEZWJ1ZyIgcGVyc3BlY3RpdmUgaW4gRWNsaXBzZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsaWNrICJEZWJ1ZyIKLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkFjY2VwdCB0aGUgZGVidWcgcGVyc3BlY3RpdmUuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQotICAgIDxzZWN0aW9uIGlkPSdtYXJzLXVzaW5nLUxpbnV4dG9vbHMnPgotICAgICAgICA8dGl0bGU+VXNpbmcgTGludXh0b29sczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBBcyBtZW50aW9uZWQgZWFybGllciBpbiB0aGUgbWFudWFsLCBwZXJmb3JtYW5jZSB0b29scyBleGlzdAotICAgICAgICAgICAgKExpbnV4dG9vbHMpIHRoYXQgZW5oYW5jZSB5b3VyIGRldmVsb3BtZW50IGV4cGVyaWVuY2UuCi0gICAgICAgICAgICBUaGVzZSB0b29scyBhcmUgYWlkcyBpbiBkZXZlbG9waW5nIGFuZCBkZWJ1Z2dpbmcgYXBwbGljYXRpb25zIGFuZAotICAgICAgICAgICAgaW1hZ2VzLgotICAgICAgICAgICAgWW91IGNhbiBydW4gdGhlc2UgdG9vbHMgZnJvbSB3aXRoaW4gdGhlIEVjbGlwc2UgSURFIHRocm91Z2ggdGhlCi0gICAgICAgICAgICAiTGludXh0b29scyIgbWVudS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjb25maWd1cmUgYW5kIHVzZSB0aGVzZSB0b29scywgc2VlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xpbnV4dG9vbHMvJz5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xpbnV4dG9vbHMvPC91bGluaz4uCi0gICAgICAgIDwvcGFyYT4KLSAgICA8L3NlY3Rpb24+Ci08L2FwcGVuZGl4PgotPCEtLQotdmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAotLS0+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1uZW9uLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LW5lb24ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NDgwNDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1uZW9uLnhtbApAQCAtMCwwICsxLDkwNSBAQAorPCFET0NUWVBFIGNoYXB0ZXIgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgorImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCIKK1s8IUVOVElUWSAlIHBva3kgU1lTVEVNICIuLi9wb2t5LmVudCI+ICVwb2t5OyBdID4KKworPGFwcGVuZGl4IGlkPSdzZGstYXBwZW5kaXgtbmVvbi15cC1lY2xpcHNlLXBsdWctaW4nPgorICAgIDx0aXRsZT5Vc2luZyA8dHJhZGVtYXJrIGNsYXNzPSd0cmFkZSc+RWNsaXBzZTwvdHJhZGVtYXJrPiBOZW9uPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGlzIHJlbGVhc2Ugb2YgdGhlIFlvY3RvIFByb2plY3Qgc3VwcG9ydHMgYm90aCB0aGUgT3h5Z2VuIGFuZCBOZW9uCisgICAgICAgIHZlcnNpb25zIG9mIHRoZSBFY2xpcHNlIElERS4KKyAgICAgICAgVGhpcyBhcHBlbmRpeCBwcmVzZW50cyBpbmZvcm1hdGlvbiB0aGF0IGRlc2NyaWJlcyBob3cgdG8gb2J0YWluIGFuZAorICAgICAgICBjb25maWd1cmUgdGhlIE5lb24gdmVyc2lvbiBvZiBFY2xpcHNlLgorICAgICAgICBJdCBhbHNvIHByb3ZpZGVzIGEgYmFzaWMgcHJvamVjdCBleGFtcGxlIHRoYXQgeW91IGNhbiB3b3JrIHRocm91Z2gKKyAgICAgICAgZnJvbSBzdGFydCB0byBmaW5pc2guCisgICAgICAgIEZvciBnZW5lcmFsIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSBFY2xpcHNlIElERSBhbmQgdGhlIFlvY3RvCisgICAgICAgIFByb2plY3QgRWNsaXBzZSBQbHVnLUluLCBzZWUgdGhlCisgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstZWNsaXBzZS1wcm9qZWN0Jz5EZXZlbG9waW5nIEFwcGxpY2F0aW9ucyBVc2luZyA8dHJhZGVtYXJrIGNsYXNzPSd0cmFkZSc+RWNsaXBzZTwvdHJhZGVtYXJrPjwvbGluaz4iCisgICAgICAgIENoYXB0ZXIuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J25lb24tc2V0dGluZy11cC10aGUtZWNsaXBzZS1pZGUnPgorICAgICAgICA8dGl0bGU+U2V0dGluZyBVcCB0aGUgTmVvbiBWZXJzaW9uIG9mIHRoZSBFY2xpcHNlIElERTwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyBkZXZlbG9wIHdpdGhpbiB0aGUgRWNsaXBzZSBJREUsIHlvdSBuZWVkIHRvIGRvIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkluc3RhbGwgdGhlIE5lb24gdmVyc2lvbiBvZiB0aGUgRWNsaXBzZQorICAgICAgICAgICAgICAgICAgICBJREUuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNvbmZpZ3VyZSB0aGUgRWNsaXBzZSBJREUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JbnN0YWxsIHRoZSBFY2xpcHNlIFlvY3RvIFBsdWctaW4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Db25maWd1cmUgdGhlIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgRG8gbm90IGluc3RhbGwgRWNsaXBzZSBmcm9tIHlvdXIgZGlzdHJpYnV0aW9uJ3MgcGFja2FnZQorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkuCisgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBpbnN0YWxsIEVjbGlwc2UgZnJvbSB0aGUgb2ZmaWNpYWwgRWNsaXBzZQorICAgICAgICAgICAgICAgIGRvd25sb2FkIHNpdGUgYXMgZGlyZWN0ZWQgaW4gdGhlIG5leHQgc2VjdGlvbi4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWluc3RhbGxpbmctZWNsaXBzZS1pZGUnPgorICAgICAgICAgICAgPHRpdGxlPkluc3RhbGxpbmcgdGhlIE5lb24gRWNsaXBzZSBJREU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gbG9jYXRlLCBpbnN0YWxsLCBhbmQgY29uZmlndXJlCisgICAgICAgICAgICAgICAgTmVvbiBFY2xpcHNlOgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Mb2NhdGUgdGhlIE5lb24gRG93bmxvYWQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9wZW4gYSBicm93c2VyIGFuZCBnbyB0bworICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy5lY2xpcHNlLm9yZy9uZW9uLyc+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9uZW9uLzwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RG93bmxvYWQgdGhlIFRhcmJhbGw6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrIHRoZSAiRG93bmxvYWQiIGJ1dHRvbiBhbmQgdGhlbiB1c2UgdGhlICJFY2xpcHNlCisgICAgICAgICAgICAgICAgICAgICAgICBJREUgZm9yIEMvQysrIERldmVsb3BlcnMiCisgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZSBmb3IgeW91ciBkZXZlbG9wbWVudCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5VbnBhY2sgdGhlIFRhcmJhbGw6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIE1vdmUgdG8gYSBjbGVhbiBkaXJlY3RvcnkgYW5kIHVucGFjayB0aGUgdGFyYmFsbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCB+CisgICAgICQgdGFyIC14enZmIH4vRG93bmxvYWRzL2VjbGlwc2UtY3BwLW5lb24tMy1saW51eC1ndGsteDg2XzY0LnRhci5negorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgRXZlcnl0aGluZyB1bnBhY2tzIGludG8gYSBmb2xkZXIgbmFtZWQgIkVjbGlwc2UiLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TGF1bmNoIEVjbGlwc2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZHMgbGF1bmNoIEVjbGlwc2UgYXNzdW1pbmcgeW91CisgICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2tlZCBpdCBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vZWNsaXBzZQorICAgICAkIC4vZWNsaXBzZQorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0IHRoZSBkZWZhdWx0ICJ3b3Jrc3BhY2UiIG9uY2UgRWNsaXBzZSBsYXVuY2hlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1jb25maWd1cmluZy10aGUtbmVvbi1lY2xpcHNlLWlkZSc+CisgICAgICAgICAgICA8dGl0bGU+Q29uZmlndXJpbmcgdGhlIE5lb24gRWNsaXBzZSBJREU8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gY29uZmlndXJlIHRoZSBOZW9uIEVjbGlwc2UgSURFLgorICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24gaG93IHlvdSBpbnN0YWxsZWQgRWNsaXBzZSBhbmQgd2hhdCB5b3UgaGF2ZQorICAgICAgICAgICAgICAgICAgICBhbHJlYWR5IGRvbmUsIHNvbWUgb2YgdGhlIG9wdGlvbnMgd2lsbCBub3QgYXBwZWFyLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgY2Fubm90IGZpbmQgYW4gb3B0aW9uIGFzIGRpcmVjdGVkIGJ5IHRoZSBtYW51YWwsCisgICAgICAgICAgICAgICAgICAgIGl0IGhhcyBhbHJlYWR5IGJlZW4gaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5CZSBzdXJlIEVjbGlwc2UgaXMgcnVubmluZyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBhcmUgaW4geW91ciB3b3JrYmVuY2guCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNlbGVjdCAiSW5zdGFsbCBOZXcgU29mdHdhcmUiIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSAiSGVscCIgcHVsbC1kb3duIG1lbnUuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNlbGVjdAorICAgICAgICAgICAgICAgICAgICAgICAgIk5lb24gLSBodHRwOi8vZG93bmxvYWQuZWNsaXBzZS5vcmcvcmVsZWFzZXMvbmVvbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlICJXb3JrIHdpdGg6IiBwdWxsLWRvd24gbWVudS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RXhwYW5kIHRoZSBib3ggbmV4dCB0bworICAgICAgICAgICAgICAgICAgICAgICAgIkxpbnV4IFRvb2xzIiBhbmQgc2VsZWN0IHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEMvQysrIFJlbW90ZSAoT3ZlciBUQ0YvVEUpIFJ1bi9EZWJ1ZyBMYXVuY2hlcgorICAgICBUTSBUZXJtaW5hbAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FeHBhbmQgdGhlIGJveCBuZXh0IHRvICJNb2JpbGUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2UgRGV2ZWxvcG1lbnQiIGFuZCBzZWxlY3QgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICAgICAgYm94ZXM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEMvQysrIFJlbW90ZSAoT3ZlciBUQ0YvVEUpIFJ1bi9EZWJ1ZyBMYXVuY2hlcgorICAgICBSZW1vdGUgU3lzdGVtIEV4cGxvcmVyIFVzZXIgQWN0aW9ucworICAgICBUTSBUZXJtaW5hbAorICAgICBUQ0YgUmVtb3RlIFN5c3RlbSBFeHBsb3JlciBhZGQtaW4KKyAgICAgVENGIFRhcmdldCBFeHBsb3JlcgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FeHBhbmQgdGhlIGJveCBuZXh0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAiUHJvZ3JhbW1pbmcgTGFuZ3VhZ2VzIiBhbmQgc2VsZWN0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGJveDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQy9DKysgRGV2ZWxvcG1lbnQgVG9vbHMgU0RLCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGxldGUgdGhlIGluc3RhbGxhdGlvbiBieSBjbGlja2luZyB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZSAiTmV4dCIgYW5kICJGaW5pc2giIGJ1dHRvbnMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24taW5zdGFsbGluZy10aGUtZWNsaXBzZS15b2N0by1wbHVnLWluJz4KKyAgICAgICAgICAgIDx0aXRsZT5JbnN0YWxsaW5nIG9yIEFjY2Vzc2luZyB0aGUgTmVvbiBFY2xpcHNlIFlvY3RvIFBsdWctaW48L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGluc3RhbGwgdGhlIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiBpbnRvIHRoZSBFY2xpcHNlCisgICAgICAgICAgICAgICAgSURFIG9uZSBvZiB0d28gd2F5czogIHVzZSB0aGUgWW9jdG8gUHJvamVjdCdzIEVjbGlwc2UKKyAgICAgICAgICAgICAgICBVcGRhdGUgc2l0ZSB0byBpbnN0YWxsIHRoZSBwcmUtYnVpbHQgcGx1Zy1pbiBvciBidWlsZCBhbmQKKyAgICAgICAgICAgICAgICBpbnN0YWxsIHRoZSBwbHVnLWluIGZyb20gdGhlIGxhdGVzdCBzb3VyY2UgY29kZS4KKyAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tbmV3LXNvZnR3YXJlJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+SW5zdGFsbGluZyB0aGUgUHJlLWJ1aWx0IFBsdWctaW4gZnJvbSB0aGUgWW9jdG8gUHJvamVjdCBFY2xpcHNlIFVwZGF0ZSBTaXRlPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBpbnN0YWxsIHRoZSBOZW9uIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiBmcm9tIHRoZSB1cGRhdGUKKyAgICAgICAgICAgICAgICAgICAgc2l0ZSwgZm9sbG93IHRoZXNlIHN0ZXBzOgorICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+U3RhcnQgdXAgdGhlIEVjbGlwc2UgSURFLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkluIEVjbGlwc2UsIHNlbGVjdCAiSW5zdGFsbCBOZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb2Z0d2FyZSIgZnJvbSB0aGUgIkhlbHAiIG1lbnUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2xpY2sgIkFkZC4uLiIgaW4gdGhlICJXb3JrIHdpdGg6IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZWEuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FbnRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4mRUNMSVBTRV9ETF9QTFVHSU5fVVJMOy9uZW9uPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgVVJMIGZpZWxkIGFuZCBwcm92aWRlIGEgbWVhbmluZ2Z1bCBuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlICJOYW1lIiBmaWVsZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DbGljayAiT0siIHRvIGhhdmUgdGhlIGVudHJ5IGFkZGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlICJXb3JrIHdpdGg6IiBkcm9wLWRvd24gbGlzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TZWxlY3QgdGhlIGVudHJ5IGZvciB0aGUgcGx1Zy1pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlICJXb3JrIHdpdGg6IiBkcm9wLWRvd24gbGlzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DaGVjayB0aGUgYm94ZXMgbmV4dCB0byB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgWW9jdG8gUHJvamVjdCBTREsgUGx1Zy1pbgorICAgICBZb2N0byBQcm9qZWN0IERvY3VtZW50YXRpb24gcGx1Zy1pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Db21wbGV0ZSB0aGUgcmVtYWluaW5nIHNvZnR3YXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGF0aW9uIHN0ZXBzIGFuZCB0aGVuIHJlc3RhcnQgdGhlIEVjbGlwc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJREUgdG8gZmluaXNoIHRoZSBpbnN0YWxsYXRpb24gb2YgdGhlIHBsdWctaW4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY2xpY2sgIk9LIiB3aGVuIHByb21wdGVkIGFib3V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxpbmcgc29mdHdhcmUgdGhhdCBjb250YWlucyB1bnNpZ25lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLXppcC1maWxlLW1ldGhvZCc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkluc3RhbGxpbmcgdGhlIFBsdWctaW4gVXNpbmcgdGhlIExhdGVzdCBTb3VyY2UgQ29kZTwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVG8gaW5zdGFsbCB0aGUgTmVvbiBFY2xpcHNlIFlvY3RvIFBsdWctaW4gZnJvbSB0aGUgbGF0ZXN0CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBjb2RlLCBmb2xsb3cgdGhlc2Ugc3RlcHM6CisgICAgICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5CZSBzdXJlIHlvdXIgZGV2ZWxvcG1lbnQgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzIEpESyAxLjgrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+aW5zdGFsbCBYMTEtcmVsYXRlZCBwYWNrYWdlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgeGF1dGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SW4gYSBuZXcgdGVybWluYWwgc2hlbGwsIGNyZWF0ZSBhIEdpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgd2l0aDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgfgorICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9lY2xpcHNlLXlvY3RvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVzZSBHaXQgdG8gY2hlY2tvdXQgdGhlIGNvcnJlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIH4vZWNsaXBzZS15b2N0bworICAgICAkIGdpdCBjaGVja291dCBuZW9uL3lvY3RvLSZESVNUUk87CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY3JlYXRlcyBhIGxvY2FsIHRhZyBuYW1lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5uZW9uL3lvY3RvLSZESVNUUk87PC9maWxlbmFtZT4gYmFzZWQgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnJhbmNoIDxmaWxlbmFtZT5vcmlnaW4vbmVvbi1tYXN0ZXI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHB1dHMgeW91IGluIGEgZGV0YWNoZWQgSEVBRCBzdGF0ZSwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBmaW5lIHNpbmNlIHlvdSBhcmUgb25seSBnb2luZyB0byBiZSBidWlsZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBub3QgZGV2ZWxvcGluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DaGFuZ2UgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNjcmlwdHM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSB3aXRoaW4gdGhlIEdpdCByZXBvc2l0b3J5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCBzY3JpcHRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNldCB1cCB0aGUgbG9jYWwgYnVpbGQgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSBydW5uaW5nIHRoZSBzZXR1cCBzY3JpcHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIC4vc2V0dXAuc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB0aGUgc2NyaXB0IGZpbmlzaGVzIGV4ZWN1dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdCBwcm9tcHRzIHlvdSB3aXRoIGluc3RydWN0aW9ucyBvbiBob3cgdG8gcnVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5idWlsZC5zaDwvZmlsZW5hbWU+IHNjcmlwdCwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBhbHNvIGluIHRoZSA8ZmlsZW5hbWU+c2NyaXB0czwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IG9mIHRoZSBHaXQgcmVwb3NpdG9yeSBjcmVhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFybGllci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5SdW4gdGhlIDxmaWxlbmFtZT5idWlsZC5zaDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0IGFzIGRpcmVjdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gcHJvdmlkZSB0aGUgdGFnIG5hbWUsIGRvY3VtZW50YXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2gsIGFuZCBhIHJlbGVhc2UgbmFtZS48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIEVDTElQU0VfSE9NRT0vaG9tZS9zY290dHJpZi9lY2xpcHNlLXlvY3RvL3NjcmlwdHMvZWNsaXBzZSAuL2J1aWxkLnNoIC1sIG5lb24veW9jdG8tJkRJU1RSTzsgbWFzdGVyIHlvY3RvLSZESVNUUk87IDI+JmFtcDsxIHwgdGVlIGJ1aWxkLmxvZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgZXhhbXBsZSBjb21tYW5kIGFkZHMgdGhlIHRhZyB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkIGZvciA8ZmlsZW5hbWU+bmVvbi95b2N0by0mRElTVFJPOzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gPGZpbGVuYW1lPkhFQUQ8L2ZpbGVuYW1lPiwgdGhlbiB0ZWxscyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBzY3JpcHQgdG8gdXNlIHRoZSBsb2NhbCAoLWwpIEdpdCBjaGVja291dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgcnVubmluZyB0aGUgc2NyaXB0LCB0aGUgZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vcmcueW9jdG8uc2RrLTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnJlbGVhc2U8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4tPC9maWxlbmFtZT48cmVwbGFjZWFibGU+ZGF0ZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi1hcmNoaXZlLnppcDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPklmIG5lY2Vzc2FyeSwgc3RhcnQgdGhlIEVjbGlwc2UgSURFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGJlIHN1cmUgeW91IGFyZSBpbiB0aGUgV29ya2JlbmNoLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNlbGVjdCAiSW5zdGFsbCBOZXcgU29mdHdhcmUiIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgIkhlbHAiIHB1bGwtZG93biBtZW51LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsaWNrICJBZGQiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlByb3ZpZGUgYW55dGhpbmcgeW91IHdhbnQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5hbWUiIGZpZWxkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsaWNrICJBcmNoaXZlIiBhbmQgYnJvd3NlIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFpJUCBmaWxlIHlvdSBidWlsdCBlYXJsaWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgWklQIGZpbGUgc2hvdWxkIG5vdCBiZSAidW56aXBwZWQiLCBhbmQgbXVzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIHRoZSA8ZmlsZW5hbWU+KmFyY2hpdmUuemlwPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgYnkgcnVubmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGQuc2g8L2ZpbGVuYW1lPiBzY3JpcHQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2xpY2sgdGhlICJPSyIgYnV0dG9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNoZWNrIHRoZSBib3hlcyB0aGF0IGFwcGVhciBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBpbnN0YWxsYXRpb24gd2luZG93IHRvIGluc3RhbGwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgWW9jdG8gUHJvamVjdCBTREsgUGx1Zy1pbgorICAgICBZb2N0byBQcm9qZWN0IERvY3VtZW50YXRpb24gcGx1Zy1pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5GaW5pc2ggdGhlIGluc3RhbGxhdGlvbiBieSBjbGlja2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm91Z2ggdGhlIGFwcHJvcHJpYXRlIGJ1dHRvbnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBjbGljayAiT0siIHdoZW4gcHJvbXB0ZWQgYWJvdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsaW5nIHNvZnR3YXJlIHRoYXQgY29udGFpbnMgdW5zaWduZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlJlc3RhcnQgdGhlIEVjbGlwc2UgSURFIGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVjZXNzYXJ5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50IHlvdSBzaG91bGQgYmUgYWJsZSB0byBjb25maWd1cmUgdGhlCisgICAgICAgICAgICAgICAgICAgIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiBhcyBkZXNjcmliZWQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSduZW9uLWNvbmZpZ3VyaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPkNvbmZpZ3VyaW5nIHRoZSBOZW9uIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tY29uZmlndXJpbmctdGhlLWVjbGlwc2UteW9jdG8tcGx1Zy1pbic+CisgICAgICAgICAgICA8dGl0bGU+Q29uZmlndXJpbmcgdGhlIE5lb24gRWNsaXBzZSBZb2N0byBQbHVnLWluPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQ29uZmlndXJpbmcgdGhlIE5lb24gRWNsaXBzZSBZb2N0byBQbHVnLWluIGludm9sdmVzIHNldHRpbmcgdGhlCisgICAgICAgICAgICAgICAgQ3Jvc3MgQ29tcGlsZXIgb3B0aW9ucyBhbmQgdGhlIFRhcmdldCBvcHRpb25zLgorICAgICAgICAgICAgICAgIFRoZSBjb25maWd1cmF0aW9ucyB5b3UgY2hvb3NlIGJlY29tZSB0aGUgZGVmYXVsdCBzZXR0aW5ncworICAgICAgICAgICAgICAgIGZvciBhbGwgcHJvamVjdHMuCisgICAgICAgICAgICAgICAgWW91IGRvIGhhdmUgb3Bwb3J0dW5pdGllcyB0byBjaGFuZ2UgdGhlbSBsYXRlciB3aGVuCisgICAgICAgICAgICAgICAgeW91IGNvbmZpZ3VyZSB0aGUgcHJvamVjdCAoc2VlIHRoZSBmb2xsb3dpbmcgc2VjdGlvbikuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRvIHN0YXJ0LCB5b3UgbmVlZCB0byBkbyB0aGUgZm9sbG93aW5nIGZyb20gd2l0aGluIHRoZQorICAgICAgICAgICAgICAgIEVjbGlwc2UgSURFOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DaG9vc2UgIlByZWZlcmVuY2VzIiBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIldpbmRvdyIgbWVudSB0byBkaXNwbGF5IHRoZSBQcmVmZXJlbmNlcyBEaWFsb2cuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsaWNrICJZb2N0byBQcm9qZWN0IFNESyIgdG8gZGlzcGxheQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gc2NyZWVuLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBzdWItc2VjdGlvbnMgZGVzY3JpYmUgaG93IHRvIGNvbmZpZ3VyZSB0aGUKKyAgICAgICAgICAgICAgICB0aGUgcGx1Zy1pbi4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhyb3VnaG91dCB0aGUgZGVzY3JpcHRpb25zLCBhIHN0YXJ0LXRvLWZpbmlzaCBleGFtcGxlIGZvcgorICAgICAgICAgICAgICAgICAgICBwcmVwYXJpbmcgYSBRRU1VIGltYWdlIGZvciB1c2Ugd2l0aCBFY2xpcHNlIGlzIHJlZmVyZW5jZWQKKyAgICAgICAgICAgICAgICAgICAgYXMgdGhlICJ3aWtpIiBhbmQgaXMgbGlua2VkIHRvIHRoZSBleGFtcGxlIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvUnVubmluZ0VjbGlwc2VBZ2FpbnN0QnVpbHRJbWFnZSc+IENvb2tib29rIGd1aWRlIHRvIE1ha2luZyBhbiBFY2xpcHNlIERlYnVnIENhcGFibGUgSW1hZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICB3aWtpIHBhZ2UuCisgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1jb25maWd1cmluZy10aGUtY3Jvc3MtY29tcGlsZXItb3B0aW9ucyc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSBDcm9zcy1Db21waWxlciBPcHRpb25zPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBDcm9zcyBDb21waWxlciBvcHRpb25zIGVuYWJsZSBFY2xpcHNlIHRvIHVzZSB5b3VyIHNwZWNpZmljCisgICAgICAgICAgICAgICAgICAgIGNyb3NzIGNvbXBpbGVyIHRvb2xjaGFpbi4KKyAgICAgICAgICAgICAgICAgICAgVG8gY29uZmlndXJlIHRoZXNlIG9wdGlvbnMsIHlvdSBtdXN0IHNlbGVjdAorICAgICAgICAgICAgICAgICAgICB0aGUgdHlwZSBvZiB0b29sY2hhaW4sIHBvaW50IHRvIHRoZSB0b29sY2hhaW4sIHNwZWNpZnkKKyAgICAgICAgICAgICAgICAgICAgdGhlIHN5c3Jvb3QgbG9jYXRpb24sIGFuZCBzZWxlY3QgdGhlIHRhcmdldAorICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmUuCisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNlbGVjdGluZyB0aGUgVG9vbGNoYWluIFR5cGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaG9vc2UgYmV0d2VlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TdGFuZGFsb25lIHByZS1idWlsdCB0b29sY2hhaW48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CdWlsZCBzeXN0ZW0gZGVyaXZlZCB0b29sY2hhaW48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBDcm9zcyBDb21waWxlciBPcHRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U3RhbmRhbG9uZSBQcmUtYnVpbHQgVG9vbGNoYWluOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdGhpcyB0eXBlIHdoZW4geW91IGFyZSB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgc3RhbmQtYWxvbmUgY3Jvc3MtdG9vbGNoYWluLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzdXBwb3NlIHlvdSBhcmUgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiBkZXZlbG9wZXIgYW5kIGRvIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gYnVpbGQgYSB0YXJnZXQgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGVhZCwgeW91IGp1c3Qgd2FudCB0byB1c2UgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdG9vbGNoYWluIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW4gZXhpc3Rpbmcga2VybmVsIGFuZCB0YXJnZXQgcm9vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIHlvdSBoYXZlIGRvd25sb2FkZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgaW5zdGFsbGVkIGEgcHJlLWJ1aWx0IHRvb2xjaGFpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhbiBleGlzdGluZyBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QnVpbGQgU3lzdGVtIERlcml2ZWQgVG9vbGNoYWluOjwvZmlsZW5hbWU+PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdGhpcyB0eXBlIGlmIHlvdSBidWlsdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4gYXMgcGFydCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHNlbGVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CdWlsZCBzeXN0ZW0gZGVyaXZlZCB0b29sY2hhaW48L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgYXJlIHVzaW5nIHRoZSB0b29sY2hhaW4gYnVpbHQgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVuZGxlZCBpbnNpZGUgdGhlIEJ1aWxkIERpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgY3JlYXRlZCBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VpdGFibGUgaW1hZ2UgdXNpbmcgdGhlIHN0ZXBzIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvVGlwc0FuZFRyaWNrcy9SdW5uaW5nRWNsaXBzZUFnYWluc3RCdWlsdEltYWdlJz53aWtpPC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBzaXR1YXRpb24sIHlvdSB3b3VsZCBzZWxlY3QgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJ1aWxkIHN5c3RlbSBkZXJpdmVkIHRvb2xjaGFpbjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U3BlY2lmeSB0aGUgVG9vbGNoYWluIFJvb3QgTG9jYXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHVzaW5nIGEgc3RhbmQtYWxvbmUgcHJlLWJ1aWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGNoYWluLCB5b3Ugc2hvdWxkIGJlIHBvaW50aW5nIHRvIHdoZXJlIGl0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIChlLmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9vcHQvcG9reS8mRElTVFJPOzwvZmlsZW5hbWU+KS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1pbnN0YWxsaW5nLXRoZS1zZGsnPkluc3RhbGxpbmcgdGhlIFNESzwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgaG93IHRoZSBTREsgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBhcmUgdXNpbmcgYSBidWlsZCBzeXN0ZW0gZGVyaXZlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xjaGFpbiwgdGhlIHBhdGggeW91IHByb3ZpZGUgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5Ub29sY2hhaW4gUm9vdCBMb2NhdGlvbjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQgaXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gd2hpY2ggeW91IHJ1biB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQgKGUuZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vaG9tZS9zY290dHJpZi9wb2t5L2J1aWxkPC9maWxlbmFtZT4pLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstYnVpbGRpbmctYW4tc2RrLWluc3RhbGxlcic+QnVpbGRpbmcgYW4gU0RLIEluc3RhbGxlcjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U3BlY2lmeSBTeXNyb290IExvY2F0aW9uOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBsb2NhdGlvbiBpcyB3aGVyZSB0aGUgcm9vdCBmaWxlc3lzdGVtIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0YXJnZXQgaGFyZHdhcmUgcmVzaWRlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhpcyBsb2NhdGlvbiBkZXBlbmRzIG9uIHdoZXJlIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRlbHkgZXh0cmFjdGVkIGFuZCBpbnN0YWxsZWQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IGZpbGVzeXN0ZW0gd2hlbiB5b3UgZWl0aGVyIGJ1aWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQgb3IgZG93bmxvYWRlZCBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvd25sb2FkZWQgdGhlIHJvb3QgZmlsZXN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIHRhcmdldCBoYXJkd2FyZSByYXRoZXIgdGhhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsdCBpdCwgeW91IG11c3QgZG93bmxvYWQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zYXRvLXNkazwvZmlsZW5hbWU+IGltYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIG9yZGVyIHRvIGJ1aWxkIGFueSBjL2MrKyBwcm9qZWN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgc3VwcG9zZSB5b3UgcHJlcGFyZWQgYW4gaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgc3RlcHMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaXBzQW5kVHJpY2tzL1J1bm5pbmdFY2xpcHNlQWdhaW5zdEJ1aWx0SW1hZ2UnPndpa2k8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBzbywgdGhlIDxmaWxlbmFtZT5NWV9RRU1VX1JPT1RGUzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGlzIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgeW91IHdvdWxkIGJyb3dzZSB0byBhbmQgc2VsZWN0IHRoYXQgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPi9ob21lL3Njb3R0cmlmL2J1aWxkL01ZX1FFTVVfUk9PVEZTPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gaW5zdGFsbCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4gYW5kIG9uIGhvdyB0byBleHRyYWN0IGFuZCBpbnN0YWxsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3Jvb3QgZmlsZXN5c3RlbSwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstYnVpbGRpbmctYW4tc2RrLWluc3RhbGxlcic+QnVpbGRpbmcgYW4gU0RLIEluc3RhbGxlcjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+U2VsZWN0IHRoZSBUYXJnZXQgQXJjaGl0ZWN0dXJlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgdGhlIHR5cGUgb2YgaGFyZHdhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgYXJlIGdvaW5nIHRvIHVzZSBvciBlbXVsYXRlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgcHVsbC1kb3duCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRhcmdldCBBcmNoaXRlY3R1cmU8L2ZpbGVuYW1lPiBtZW51CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gbWFrZSB5b3VyIHNlbGVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcHVsbC1kb3duIG1lbnUgc2hvdWxkIGhhdmUgdGhlIHN1cHBvcnRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGFyY2hpdGVjdHVyZSB5b3UgbmVlZCBpcyBub3QgbGlzdGVkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG1lbnUsIHlvdSB3aWxsIG5lZWQgdG8gYnVpbGQgdGhlIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LWJ1aWxkaW5nLWEtc2ltcGxlLWltYWdlJz5CdWlsZGluZyBhIFNpbXBsZSBJbWFnZTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW51YWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvUnVubmluZ0VjbGlwc2VBZ2FpbnN0QnVpbHRJbWFnZSc+d2lraTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWNvbmZpZ3VyaW5nLXRoZS10YXJnZXQtb3B0aW9ucyc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSBUYXJnZXQgT3B0aW9uczwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBjaG9vc2UgdG8gZW11bGF0ZSBoYXJkd2FyZSB1c2luZyB0aGUgUUVNVQorICAgICAgICAgICAgICAgICAgICBlbXVsYXRvciwgb3IgeW91IGNhbiBjaG9vc2UgdG8gcnVuIHlvdXIgaW1hZ2Ugb24gYWN0dWFsCisgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5RRU1VOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IHRoaXMgb3B0aW9uIGlmIHlvdSB3aWxsIGJlIHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFFTVUgZW11bGF0b3IuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1c2luZyB0aGUgZW11bGF0b3IsIHlvdSBhbHNvIG5lZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGUgdGhlIGtlcm5lbCBhbmQgc3BlY2lmeSBhbnkgY3VzdG9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IHNlbGVjdGVkIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CdWlsZCBzeXN0ZW0gZGVyaXZlZCB0b29sY2hhaW48L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0IGtlcm5lbCB5b3UgYnVpbHQgd2lsbCBiZSBsb2NhdGVkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRtcC9kZXBsb3kvaW1hZ2VzLzxyZXBsYWNlYWJsZT5tYWNoaW5lPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBzdXBwb3NlIHlvdSBwZXJmb3JtZWQgdGhlIHN0ZXBzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaXBzQW5kVHJpY2tzL1J1bm5pbmdFY2xpcHNlQWdhaW5zdEJ1aWx0SW1hZ2UnPndpa2k8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHlvdSBzcGVjaWZ5IHlvdXIgQnVpbGQgRGlyZWN0b3J5IHBhdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dlZCBieSB0aGUgaW1hZ2UgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2hvbWUvc2NvdHRyaWYvcG9reS9idWlsZC90bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2L2J6SW1hZ2UtcWVtdXg4Ni5iaW48L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBzZWxlY3RlZCB0aGUgc3RhbmRhbG9uZSBwcmUtYnVpbHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4sIHRoZSBwcmUtYnVpbHQgaW1hZ2UgeW91IGRvd25sb2FkZWQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGVkIGluIHRoZSBkaXJlY3RvcnkgeW91IHNwZWNpZmllZCB3aGVuIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkZWQgdGhlIGltYWdlLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Nb3N0IGN1c3RvbSBvcHRpb25zIGFyZSBmb3IgYWR2YW5jZWQgUUVNVQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJzIHRvIGZ1cnRoZXIgY3VzdG9taXplIHRoZWlyIFFFTVUgaW5zdGFuY2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2Ugb3B0aW9ucyBhcmUgc3BlY2lmaWVkIGJldHdlZW4gcGFpcmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGVkIGJyYWNrZXRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgb3B0aW9ucyBtdXN0IGJlIHNwZWNpZmllZCBvdXRzaWRlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYWNrZXRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHBhcnRpY3VsYXIsIHRoZSBvcHRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNlcmlhbDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ub2dyYXBoaWM8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmt2bTwvZmlsZW5hbWU+IG11c3QgYWxsIGJlIG91dHNpZGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhY2tldHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSA8ZmlsZW5hbWU+bWFuIHFlbXU8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZ2V0IGhlbHAgb24gYWxsIHRoZSBvcHRpb25zIGFuZCB0aGVpciB1c2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIHNlcmlhbCDigJgmbHQ7LW0gMjU2IC1mdWxsLXNjcmVlbiZndDvigJkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2FyZGxlc3Mgb2YgdGhlIG1vZGUsIFN5c3Jvb3QgaXMgYWxyZWFkeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgYXMgcGFydCBvZiB0aGUgQ3Jvc3MtQ29tcGlsZXIgT3B0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlN5c3Jvb3QgTG9jYXRpb246PC9maWxlbmFtZT4gZmllbGQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkV4dGVybmFsIEhXOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IHRoaXMgb3B0aW9uIGlmIHlvdSB3aWxsIGJlIHVzaW5nIGFjdHVhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQ2xpY2sgdGhlICJBcHBseSIgYW5kICJPSyIgdG8gc2F2ZSB5b3VyIHBsdWctaW4KKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorICAgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J25lb24tY3JlYXRpbmctdGhlLXByb2plY3QnPgorICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgdGhlIFByb2plY3Q8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBjcmVhdGUgdHdvIHR5cGVzIG9mIHByb2plY3RzOiAgQXV0b3Rvb2xzLWJhc2VkLCBvcgorICAgICAgICAgICAgTWFrZWZpbGUtYmFzZWQuCisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGhvdyB0byBjcmVhdGUgQXV0b3Rvb2xzLWJhc2VkIHByb2plY3RzCisgICAgICAgICAgICBmcm9tIHdpdGhpbiB0aGUgRWNsaXBzZSBJREUuCisgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gY3JlYXRpbmcgTWFrZWZpbGUtYmFzZWQgcHJvamVjdHMgaW4gYQorICAgICAgICAgICAgdGVybWluYWwgd2luZG93LCBzZWUgdGhlCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWFrZWZpbGUtYmFzZWQtcHJvamVjdHMnPk1ha2VmaWxlLUJhc2VkIFByb2plY3RzPC9saW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBEbyBub3QgdXNlIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBwcm9qZWN0IG5hbWVzCisgICAgICAgICAgICAgICAgKGUuZy4gc3BhY2VzLCB1bmRlcnNjb3JlcywgZXRjLikuICBEb2luZyBzbyBjYW4KKyAgICAgICAgICAgICAgICBjYXVzZSB0aGUgY29uZmlndXJhdGlvbiB0byBmYWlsLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyBjcmVhdGUgYSBwcm9qZWN0IGJhc2VkIG9uIGEgWW9jdG8gdGVtcGxhdGUgYW5kIHRoZW4gZGlzcGxheQorICAgICAgICAgICAgdGhlIHNvdXJjZSBjb2RlLCBmb2xsb3cgdGhlc2Ugc3RlcHM6CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNlbGVjdCAiQyBQcm9qZWN0IiBmcm9tIHRoZSAiRmlsZSAtPiBOZXciIG1lbnUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FeHBhbmQgPGZpbGVuYW1lPllvY3RvIFByb2plY3QgU0RLIEF1dG90b29scyBQcm9qZWN0PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TZWxlY3QgPGZpbGVuYW1lPkhlbGxvIFdvcmxkIEFOU0kgQyBBdXRvdG9vbHMgUHJvamVjdHM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBhbiBBdXRvdG9vbHMtYmFzZWQgcHJvamVjdCBiYXNlZCBvbiBhIFlvY3RvCisgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+UHV0IGEgbmFtZSBpbiB0aGUgPGZpbGVuYW1lPlByb2plY3QgbmFtZTo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWVsZC4KKyAgICAgICAgICAgICAgICAgICAgRG8gbm90IHVzZSBoeXBoZW5zIGFzIHBhcnQgb2YgdGhlIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPmhlbGxvPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2xpY2sgIk5leHQiLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QWRkIGFwcHJvcHJpYXRlIGluZm9ybWF0aW9uIGluIHRoZSB2YXJpb3VzCisgICAgICAgICAgICAgICAgICAgIGZpZWxkcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsaWNrICJGaW5pc2giLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SWYgdGhlICJvcGVuIHBlcnNwZWN0aXZlIiBwcm9tcHQgYXBwZWFycywKKyAgICAgICAgICAgICAgICAgICAgY2xpY2sgIlllcyIgc28gdGhhdCB5b3UgYXJlIGluIHRoZSBDL0MrKyBwZXJzcGVjdGl2ZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBsZWZ0LWhhbmQgbmF2aWdhdGlvbiBwYW5lIHNob3dzIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgcHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBkaXNwbGF5IHlvdXIgc291cmNlIGJ5IGRvdWJsZSBjbGlja2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgcHJvamVjdCdzIHNvdXJjZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbmVvbi1jb25maWd1cmluZy10aGUtY3Jvc3MtdG9vbGNoYWlucyc+CisgICAgICAgIDx0aXRsZT5Db25maWd1cmluZyB0aGUgQ3Jvc3MtVG9vbGNoYWluczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZWFybGllciBzZWN0aW9uLAorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J25lb24tY29uZmlndXJpbmctdGhlLWVjbGlwc2UteW9jdG8tcGx1Zy1pbic+Q29uZmlndXJpbmcgdGhlIE5lb24gRWNsaXBzZSBZb2N0byBQbHVnLWluPC9saW5rPiIsCisgICAgICAgICAgICBzZXRzIHVwIHRoZSBkZWZhdWx0IHByb2plY3QgY29uZmlndXJhdGlvbnMuCisgICAgICAgICAgICBZb3UgY2FuIG92ZXJyaWRlIHRoZXNlIHNldHRpbmdzIGZvciBhIGdpdmVuIHByb2plY3QgYnkgZm9sbG93aW5nCisgICAgICAgICAgICB0aGVzZSBzdGVwczoKKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+U2VsZWN0ICJZb2N0byBQcm9qZWN0IFNldHRpbmdzIiBmcm9tCisgICAgICAgICAgICAgICAgICAgIHRoZSAiUHJvamVjdCAtPiBQcm9wZXJ0aWVzIiBtZW51LgorICAgICAgICAgICAgICAgICAgICBUaGlzIHNlbGVjdGlvbiBicmluZ3MgdXAgdGhlIFlvY3RvIFByb2plY3QgU2V0dGluZ3MKKyAgICAgICAgICAgICAgICAgICAgRGlhbG9nIGFuZCBhbGxvd3MgeW91IHRvIG1ha2UgY2hhbmdlcyBzcGVjaWZpYyB0byBhbgorICAgICAgICAgICAgICAgICAgICBpbmRpdmlkdWFsIHByb2plY3QuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT5CeSBkZWZhdWx0LCB0aGUgQ3Jvc3MgQ29tcGlsZXIgT3B0aW9ucyBhbmQgVGFyZ2V0CisgICAgICAgICAgICAgICAgICAgIE9wdGlvbnMgZm9yIGEgcHJvamVjdCBhcmUgaW5oZXJpdGVkIGZyb20gc2V0dGluZ3MgeW91CisgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVkIHVzaW5nIHRoZSBQcmVmZXJlbmNlcyBEaWFsb2cgYXMgZGVzY3JpYmVkCisgICAgICAgICAgICAgICAgICAgIGVhcmxpZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSduZW9uLWNvbmZpZ3VyaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPkNvbmZpZ3VyaW5nIHRoZSBOZW9uIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbjwvbGluaz4iIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IFNldHRpbmdzIERpYWxvZyBhbGxvd3MgeW91IHRvIG92ZXJyaWRlCisgICAgICAgICAgICAgICAgICAgIHRob3NlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIGEgZ2l2ZW4gcHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPk1ha2Ugb3IgdmVyaWZ5IHlvdXIgY29uZmlndXJhdGlvbnMgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICBwcm9qZWN0IGFuZCBjbGljayAiT0siLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+UmlnaHQtY2xpY2sgaW4gdGhlIG5hdmlnYXRpb24gcGFuZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgc2VsZWN0ICJSZWNvbmZpZ3VyZSBQcm9qZWN0IiBmcm9tIHRoZSBwb3AtdXAgbWVudS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBzZWxlY3Rpb24gcmVjb25maWd1cmVzIHRoZSBwcm9qZWN0IGJ5IHJ1bm5pbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmF1dG9nZW4uc2g8L2ZpbGVuYW1lPiBpbiB0aGUgd29ya3NwYWNlIGZvcgorICAgICAgICAgICAgICAgICAgICB5b3VyIHByb2plY3QuCisgICAgICAgICAgICAgICAgICAgIFRoZSBzY3JpcHQgYWxzbyBydW5zIDxmaWxlbmFtZT5saWJ0b29saXplPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hY2xvY2FsPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvY29uZjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b2hlYWRlcjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b21ha2UgLS1hPC9maWxlbmFtZT4sIGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Li9jb25maWd1cmU8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgQ2xpY2sgb24gdGhlICJDb25zb2xlIiB0YWIgYmVuZWF0aCB5b3VyIHNvdXJjZSBjb2RlIHRvCisgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUgcmVzdWx0cyBvZiByZWNvbmZpZ3VyaW5nIHlvdXIgcHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J25lb24tYnVpbGRpbmctdGhlLXByb2plY3QnPgorICAgICAgICA8dGl0bGU+QnVpbGRpbmcgdGhlIFByb2plY3Q8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG8gYnVpbGQgdGhlIHByb2plY3Qgc2VsZWN0ICJCdWlsZCBBbGwiIGZyb20gdGhlCisgICAgICAgICAgICAiUHJvamVjdCIgbWVudS4KKyAgICAgICAgICAgIFRoZSBjb25zb2xlIHNob3VsZCB1cGRhdGUgYW5kIHlvdSBjYW4gbm90ZSB0aGUgY3Jvc3MtY29tcGlsZXIKKyAgICAgICAgICAgIHlvdSBhcmUgdXNpbmcuCisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICBXaGVuIGJ1aWxkaW5nICJZb2N0byBQcm9qZWN0IFNESyBBdXRvdG9vbHMiIHByb2plY3RzLCB0aGUKKyAgICAgICAgICAgICAgICBFY2xpcHNlIElERSBtaWdodCBkaXNwbGF5IGVycm9yIG1lc3NhZ2VzIGZvcgorICAgICAgICAgICAgICAgIEZ1bmN0aW9ucy9TeW1ib2xzL1R5cGVzIHRoYXQgY2Fubm90IGJlICJyZXNvbHZlZCIsIGV2ZW4gd2hlbgorICAgICAgICAgICAgICAgIHRoZSByZWxhdGVkIGluY2x1ZGUgZmlsZSBpcyBsaXN0ZWQgYXQgdGhlIHByb2plY3QgbmF2aWdhdG9yIGFuZAorICAgICAgICAgICAgICAgIHdoZW4gdGhlIHByb2plY3QgaXMgYWJsZSB0byBidWlsZC4KKyAgICAgICAgICAgICAgICBGb3IgdGhlc2UgY2FzZXMgb25seSwgaXQgaXMgcmVjb21tZW5kZWQgdG8gYWRkIGEgbmV3IGxpbmtlZAorICAgICAgICAgICAgICAgIGZvbGRlciB0byB0aGUgYXBwcm9wcmlhdGUgc3lzcm9vdC4KKyAgICAgICAgICAgICAgICBVc2UgdGhlc2Ugc3RlcHMgdG8gYWRkIHRoZSBsaW5rZWQgZm9sZGVyOgorICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IHRoZSBwcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCAiRm9sZGVyIiBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkZpbGUgPiBOZXc8L2ZpbGVuYW1lPiBtZW51LgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoZSAiTmV3IEZvbGRlciIgRGlhbG9nLCBzZWxlY3QgIkxpbmsgdG8gYWx0ZXJuYXRlCisgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiAobGlua2VkIGZvbGRlcikiLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrICJCcm93c2UiIHRvIG5hdmlnYXRlIHRvIHRoZSBpbmNsdWRlIGZvbGRlciBpbnNpZGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzYW1lIHN5c3Jvb3QgbG9jYXRpb24gc2VsZWN0ZWQgaW4gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIk9LIi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiRmluaXNoIiB0byBzYXZlIHRoZSBsaW5rZWQgZm9sZGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSduZW9uLXN0YXJ0aW5nLXFlbXUtaW4tdXNlci1zcGFjZS1uZnMtbW9kZSc+CisgICAgICAgIDx0aXRsZT5TdGFydGluZyBRRU1VIGluIFVzZXItU3BhY2UgTkZTIE1vZGU8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG8gc3RhcnQgdGhlIFFFTVUgZW11bGF0b3IgZnJvbSB3aXRoaW4gRWNsaXBzZSwgZm9sbG93IHRoZXNlCisgICAgICAgICAgICBzdGVwczoKKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LW1hbnVhbC1xZW11Jz5Vc2luZyB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpPC91bGluaz4iCisgICAgICAgICAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwKKyAgICAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB1c2luZyBRRU1VLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FeHBvc2UgYW5kIHNlbGVjdCAiRXh0ZXJuYWwgVG9vbHMKKyAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbnMgLi4uIiBmcm9tIHRoZSAiUnVuIC0+IEV4dGVybmFsIFRvb2xzIiBtZW51LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIExvY2F0ZSBhbmQgc2VsZWN0IHlvdXIgaW1hZ2UgaW4gdGhlIG5hdmlnYXRpb24gcGFuZWwgdG8KKyAgICAgICAgICAgICAgICAgICAgdGhlIGxlZnQgKGUuZy4gPGZpbGVuYW1lPnFlbXVfaTU4Ni1wb2t5LWxpbnV4PC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIENsaWNrICJSdW4iIHRvIGxhdW5jaCBRRU1VLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBob3N0IG9uIHdoaWNoIHlvdSBhcmUgcnVubmluZyBRRU1VIG11c3QgaGF2ZQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5ycGNiaW5kPC9maWxlbmFtZT4gdXRpbGl0eSBydW5uaW5nIHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICBhYmxlIHRvIG1ha2UgUlBDIGNhbGxzIG9uIGEgc2VydmVyIG9uIHRoYXQgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIFFFTVUgZG9lcyBub3QgaW52b2tlIGFuZCB5b3UgcmVjZWl2ZSBlcnJvciBtZXNzYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgaW52b2x2aW5nIDxmaWxlbmFtZT5ycGNiaW5kPC9maWxlbmFtZT4sIGZvbGxvdyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb25zIHRvIGdldCB0aGUgc2VydmljZSBydW5uaW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgb24gYSBuZXcgVWJ1bnR1IDE2LjA0IExUUyBpbnN0YWxsYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICB5b3UgbXVzdCBkbyB0aGUgZm9sbG93aW5nIGluIG9yZGVyIHRvIGdldCBRRU1VIHRvCisgICAgICAgICAgICAgICAgICAgICAgICBsYXVuY2g6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgcnBjYmluZAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgaW5zdGFsbGluZyA8ZmlsZW5hbWU+cnBjYmluZDwvZmlsZW5hbWU+LCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gZWRpdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZXRjL2luaXQuZC9ycGNiaW5kPC9maWxlbmFtZT4gZmlsZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGxpbmU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIE9QVElPTlM9Ii1pIC13IgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgbW9kaWZ5aW5nIHRoZSBmaWxlLCB5b3UgbmVlZCB0byBzdGFydCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBzZXJ2aWNlIHBvcnRtYXAgcmVzdGFydAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JZiBuZWVkZWQsIGVudGVyIHlvdXIgaG9zdCByb290IHBhc3N3b3JkIGluCisgICAgICAgICAgICAgICAgICAgIHRoZSBzaGVsbCB3aW5kb3cgYXQgdGhlIHByb21wdC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBzZXRzIHVwIGEgPGZpbGVuYW1lPlRhcCAwPC9maWxlbmFtZT4gY29ubmVjdGlvbgorICAgICAgICAgICAgICAgICAgICBuZWVkZWQgZm9yIHJ1bm5pbmcgaW4gdXNlci1zcGFjZSBORlMgbW9kZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPldhaXQgZm9yIFFFTVUgdG8gbGF1bmNoLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+T25jZSBRRU1VIGxhdW5jaGVzLCB5b3UgY2FuIGJlZ2luIG9wZXJhdGluZworICAgICAgICAgICAgICAgICAgICB3aXRoaW4gdGhhdCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgT25lIHVzZWZ1bCB0YXNrIGF0IHRoaXMgcG9pbnQgd291bGQgYmUgdG8gZGV0ZXJtaW5lIHRoZQorICAgICAgICAgICAgICAgICAgICBJUCBBZGRyZXNzIGZvciB0aGUgdXNlci1zcGFjZSBORlMgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pZmNvbmZpZzwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBJUCBhZGRyZXNzIG9mIHRoZSBRRU1VIG1hY2hpbmUgYXBwZWFycyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgeHRlcm0gd2luZG93LgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGlzIGFkZHJlc3MgdG8gaGVscCB5b3Ugc2VlIHdoaWNoIHBhcnRpY3VsYXIKKyAgICAgICAgICAgICAgICAgICAgSVAgYWRkcmVzcyB0aGUgaW5zdGFuY2Ugb2YgUUVNVSBpcyB1c2luZy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J25lb24tZGVwbG95aW5nLWFuZC1kZWJ1Z2dpbmctdGhlLWFwcGxpY2F0aW9uJz4KKyAgICAgICAgPHRpdGxlPkRlcGxveWluZyBhbmQgRGVidWdnaW5nIHRoZSBBcHBsaWNhdGlvbjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBPbmNlIHRoZSBRRU1VIGVtdWxhdG9yIGlzIHJ1bm5pbmcgdGhlIGltYWdlLCB5b3UgY2FuIGRlcGxveQorICAgICAgICAgICAgeW91ciBhcHBsaWNhdGlvbiB1c2luZyB0aGUgRWNsaXBzZSBJREUgYW5kIHRoZW4gdXNlCisgICAgICAgICAgICB0aGUgZW11bGF0b3IgdG8gcGVyZm9ybSBkZWJ1Z2dpbmcuCisgICAgICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gZGVwbG95IHRoZSBhcHBsaWNhdGlvbi4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIEN1cnJlbnRseSwgRWNsaXBzZSBkb2VzIG5vdCBzdXBwb3J0IFNTSCBwb3J0IGZvcndhcmRpbmcuCisgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCBpZiB5b3UgbmVlZCB0byBydW4gb3IgZGVidWcgYSByZW1vdGUKKyAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiB1c2luZyB0aGUgaG9zdCBkaXNwbGF5LCB5b3UgbXVzdCBjcmVhdGUgYQorICAgICAgICAgICAgICAgIHR1bm5lbGluZyBjb25uZWN0aW9uIGZyb20gb3V0c2lkZSBFY2xpcHNlIGFuZCBrZWVwCisgICAgICAgICAgICAgICAgdGhhdCBjb25uZWN0aW9uIGFsaXZlIGR1cmluZyB5b3VyIHdvcmsuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGluIGEgbmV3IHRlcm1pbmFsLCBydW4gdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3NoIC1YWSA8cmVwbGFjZWFibGU+dXNlcl9uYW1lPC9yZXBsYWNlYWJsZT5APHJlcGxhY2VhYmxlPnJlbW90ZV9ob3N0X2lwPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVXNpbmcgdGhlIGFib3ZlIGZvcm0sIGhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3NoIC1YWSByb290QDE5Mi4xNjguNy4yCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEFmdGVyIHJ1bm5pbmcgdGhlIGNvbW1hbmQsIGFkZCB0aGUgY29tbWFuZCB0byBiZSBleGVjdXRlZAorICAgICAgICAgICAgICAgIGluIEVjbGlwc2UncyBydW4gY29uZmlndXJhdGlvbiBiZWZvcmUgdGhlIGFwcGxpY2F0aW9uCisgICAgICAgICAgICAgICAgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIGV4cG9ydCBESVNQTEFZPToxMC4wCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gbm90IGRlc3Ryb3kgdGhlIGNvbm5lY3Rpb24gZHVyaW5nIHlvdXIgUUVNVQorICAgICAgICAgICAgICAgIHNlc3Npb24gKGkuZS4gZG8gbm90CisgICAgICAgICAgICAgICAgZXhpdCBvdXQgb2Ygb3IgY2xvc2UgdGhhdCBzaGVsbCkuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNlbGVjdCAiRGVidWcgQ29uZmlndXJhdGlvbnMuLi4iIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICJSdW4iIG1lbnUuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkluIHRoZSBsZWZ0IGFyZWEsIGV4cGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Qy9DKytSZW1vdGUgQXBwbGljYXRpb248L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkxvY2F0ZSB5b3VyIHByb2plY3QgYW5kIHNlbGVjdCBpdCB0byBicmluZworICAgICAgICAgICAgICAgICAgICB1cCBhIG5ldyB0YWJiZWQgdmlldyBpbiB0aGUgRGVidWcgQ29uZmlndXJhdGlvbnMgRGlhbG9nLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2xpY2sgb24gdGhlICJEZWJ1Z2dlciIgdGFiIHRvIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgY3Jvc3MtdG9vbCBkZWJ1Z2dlciB5b3UgYXJlIHVzaW5nLgorICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHRvIGNoYW5nZSB0byB0aGUgZGVidWdnZXIgcGVyc3BlY3RpdmUgaW4gRWNsaXBzZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsaWNrIG9uIHRoZSAiTWFpbiIgdGFiLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q3JlYXRlIGEgbmV3IGNvbm5lY3Rpb24gdG8gdGhlIFFFTVUgaW5zdGFuY2UKKyAgICAgICAgICAgICAgICAgICAgYnkgY2xpY2tpbmcgb24gIm5ldyIuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNlbGVjdCA8ZmlsZW5hbWU+U1NIPC9maWxlbmFtZT4sIHdoaWNoIG1lYW5zCisgICAgICAgICAgICAgICAgICAgIFNlY3VyZSBTb2NrZXQgU2hlbGwuCisgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsbHksIHlvdSBjYW4gc2VsZWN0IGEgVENGIGNvbm5lY3Rpb24gaW5zdGVhZC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsaWNrICJOZXh0Ii4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNsZWFyIG91dCB0aGUgIkNvbm5lY3Rpb24gbmFtZSIgZmllbGQgYW5kCisgICAgICAgICAgICAgICAgICAgIGVudGVyIGFueSBuYW1lIHlvdSB3YW50IGZvciB0aGUgY29ubmVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlB1dCB0aGUgSVAgYWRkcmVzcyBmb3IgdGhlIGNvbm5lY3Rpb24gaW4KKyAgICAgICAgICAgICAgICAgICAgdGhlICJIb3N0IiBmaWVsZC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIFFFTVUsIHRoZSBkZWZhdWx0IGlzIDxmaWxlbmFtZT4xOTIuMTY4LjcuMjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBpZiBhIHByZXZpb3VzIFFFTVUgc2Vzc2lvbiBkaWQgbm90IGV4aXQKKyAgICAgICAgICAgICAgICAgICAgY2xlYW5seSwgdGhlIElQIGFkZHJlc3MgaW5jcmVtZW50cyAoZS5nLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+MTkyLjE2OC43LjM8L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZSBJUCBhZGRyZXNzIGZvciB0aGUgY3VycmVudCBRRU1VCisgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uIGJ5IGxvb2tpbmcgaW4gdGhlIHh0ZXJtIHRoYXQgb3BlbnMgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgeW91IGxhdW5jaCBRRU1VLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5FbnRlciA8ZmlsZW5hbWU+cm9vdDwvZmlsZW5hbWU+LCB3aGljaAorICAgICAgICAgICAgICAgICAgICBpcyB0aGUgZGVmYXVsdCBmb3IgUUVNVSwgZm9yIHRoZSAiVXNlciIgZmllbGQuCisgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gbGVhdmUgdGhlIHBhc3N3b3JkIGZpZWxkIGVtcHR5LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2xpY2sgIkZpbmlzaCIgdG8gY2xvc2UgdGhlCisgICAgICAgICAgICAgICAgICAgIE5ldyBDb25uZWN0aW9ucyBEaWFsb2cuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5JZiBuZWNlc3NhcnksIHVzZSB0aGUgZHJvcC1kb3duIG1lbnUgbm93IGluIHRoZQorICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdGlvbiIgZmllbGQgYW5kIHBpY2sgdGhlIElQIEFkZHJlc3MgeW91IGVudGVyZWQuCisgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QXNzdW1pbmcgeW91IGFyZSBjb25uZWN0aW5nIGFzIHRoZSByb290IHVzZXIsCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIHRoZSBkZWZhdWx0IGZvciBRRU1VIHg4Ni02NCBTREsgaW1hZ2VzIHByb3ZpZGVkIGJ5CisgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LCBpbiB0aGUgIlJlbW90ZSBBYnNvbHV0ZSBGaWxlIFBhdGggZm9yCisgICAgICAgICAgICAgICAgICAgIEMvQysrIEFwcGxpY2F0aW9uIiBmaWVsZCwgYnJvd3NlIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vaG9tZS9yb290LzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPlByb2plY3ROYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPi9ob21lL3Jvb3QvaGVsbG88L2ZpbGVuYW1lPikuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjb3VsZCBhbHNvIGJyb3dzZSB0byBhbnkgb3RoZXIgcGF0aCB5b3UgaGF2ZSB3cml0ZQorICAgICAgICAgICAgICAgICAgICBhY2Nlc3MgdG8gb24gdGhlIHRhcmdldCBzdWNoIGFzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL2JpbjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaGlzIGxvY2F0aW9uIGlzIHdoZXJlIHlvdXIgYXBwbGljYXRpb24gd2lsbCBiZSBsb2NhdGVkIG9uCisgICAgICAgICAgICAgICAgICAgIHRoZSBRRU1VIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGZhaWwgdG8gYnJvd3NlIHRvIGFuZCBzcGVjaWZ5IGFuIGFwcHJvcHJpYXRlCisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLCBRRU1VIHdpbGwgbm90IHVuZGVyc3RhbmQgd2hhdCB0byByZW1vdGVseQorICAgICAgICAgICAgICAgICAgICBsYXVuY2guCisgICAgICAgICAgICAgICAgICAgIEVjbGlwc2UgaXMgaGVscGZ1bCBpbiB0aGF0IGl0IGF1dG8gZmlsbHMgeW91ciBhcHBsaWNhdGlvbgorICAgICAgICAgICAgICAgICAgICBuYW1lIGZvciB5b3UgYXNzdW1pbmcgeW91IGJyb3dzZWQgdG8gYSBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXBzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHByb21wdGVkIHRvIHByb3ZpZGUgYSB1c2VybmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdG8gb3B0aW9uYWxseSBzZXQgYSBwYXNzd29yZCwgYmUgc3VyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgcHJvdmlkZSAicm9vdCIgYXMgdGhlIHVzZXJuYW1lIGFuZCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVhdmUgdGhlIHBhc3N3b3JkIGZpZWxkIGJsYW5rLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIGJyb3dzaW5nIHRvIGEgZGlyZWN0b3J5IGZhaWxzIG9yIHRpbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCwgYnV0IHlvdSBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNzaDwvZmlsZW5hbWU+IGludG8geW91ciBRRU1VCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIHRhcmdldCBmcm9tIHRoZSBjb21tYW5kIGxpbmUgYW5kIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlIHByb3hpZXMgc2V0IHVwLCBpdCBpcyBsaWtlbHkgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFY2xpcHNlIGlzIHNlbmRpbmcgdGhlIFNTSCB0cmFmZmljIHRvIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJveHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgZWl0aGVyIHVzZSBUQ0YgLCBvciBjbGljayBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlndXJlIHByb3h5IHNldHRpbmdzIiBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbiBkaWFsb2cgYW5kIGFkZCB0aGUgdGFyZ2V0IElQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MgdG8gdGhlICJieXBhc3MgcHJveHkiIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtaWdodCBhbHNvIG5lZWQgdG8gY2hhbmdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBY3RpdmUgUHJvdmlkZXIiIGZyb20gTmF0aXZlIHRvIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgeW91IGNoYW5nZSB0byB0aGUgIkRlYnVnIiBwZXJzcGVjdGl2ZSBpbiBFY2xpcHNlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q2xpY2sgIkRlYnVnIgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QWNjZXB0IHRoZSBkZWJ1ZyBwZXJzcGVjdGl2ZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J25lb24tdXNpbmctTGludXh0b29scyc+CisgICAgICAgIDx0aXRsZT5Vc2luZyBMaW51eHRvb2xzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFzIG1lbnRpb25lZCBlYXJsaWVyIGluIHRoZSBtYW51YWwsIHBlcmZvcm1hbmNlIHRvb2xzIGV4aXN0CisgICAgICAgICAgICAoTGludXh0b29scykgdGhhdCBlbmhhbmNlIHlvdXIgZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZS4KKyAgICAgICAgICAgIFRoZXNlIHRvb2xzIGFyZSBhaWRzIGluIGRldmVsb3BpbmcgYW5kIGRlYnVnZ2luZyBhcHBsaWNhdGlvbnMgYW5kCisgICAgICAgICAgICBpbWFnZXMuCisgICAgICAgICAgICBZb3UgY2FuIHJ1biB0aGVzZSB0b29scyBmcm9tIHdpdGhpbiB0aGUgRWNsaXBzZSBJREUgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICJMaW51eHRvb2xzIiBtZW51LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbmZpZ3VyZSBhbmQgdXNlIHRoZXNlIHRvb2xzLCBzZWUKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGludXh0b29scy8nPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGludXh0b29scy88L3VsaW5rPi4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvYXBwZW5kaXg+Cis8IS0tCit2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CistLT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LW9idGFpbi54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1vYnRhaW4ueG1sCmluZGV4IGFiOTA1NWUuLmFhMDYzNTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LW9idGFpbi54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtb2J0YWluLnhtbApAQCAtMTA1LDcgKzEwNSw3IEBACiAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCBVcCB0aGUgQnVpbGQgRW52aXJvbm1lbnQ6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICBCZSBzdXJlIHlvdSBhcmUgc2V0IHVwIHRvIHVzZSBCaXRCYWtlIGluIGEgc2hlbGwuCiAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzZXR0aW5nLXVwLXRoZS1kZXZlbG9wbWVudC1ob3N0LXRvLXVzZS10aGUteW9jdG8tcHJvamVjdCc+U2V0dGluZyBVcCB0aGUgRGV2ZWxvcG1lbnQgSG9zdCB0byBVc2UgdGhlIFlvY3RvIFByb2plY3Q8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc2V0dGluZy11cC10aGUtZGV2ZWxvcG1lbnQtaG9zdC10by11c2UtdGhlLXlvY3RvLXByb2plY3QnPlByZXBhcmluZyB0aGUgQnVpbGQgSG9zdDwvdWxpbms+IgogICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvcgogICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIG9uIGhvdyB0byBnZXQgYSBidWlsZCBob3N0IHJlYWR5IHRoYXQgaXMgZWl0aGVyIGEKICAgICAgICAgICAgICAgICBuYXRpdmUgTGludXggbWFjaGluZSBvciBhIG1hY2hpbmUgdGhhdCB1c2VzIENST1BTLgpAQCAtMjAzLDcgKzIwMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gYnVpbGRpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVyLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaXBzQW5kVHJpY2tzL1J1bm5pbmdFY2xpcHNlQWdhaW5zdEJ1aWx0SW1hZ2UnPkNvb2tib29rIGd1aWRlIHRvIE1ha2luZyBhbiBFY2xpcHNlIERlYnVnIENhcGFibGUgSW1hZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvVGlwc0FuZFRyaWNrcy9SdW5uaW5nRWNsaXBzZUFnYWluc3RCdWlsdEltYWdlJz5Db29rYm9vayBndWlkZSB0byBNYWtpbmcgYW4gPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz4gRGVidWcgQ2FwYWJsZSBJbWFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lraSBwYWdlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KQEAgLTMyNyw3ICszMjcsNyBAQAogICAgICAgICAgICAgICAgIDxwYXJhPkZvbGxvd2luZyBpcyBhbiBleGFtcGxlIGNvbW1hbmQgdGhhdCBleHRyYWN0cyB0aGUgcm9vdAogICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gZnJvbSBhIHByZXZpb3VzbHkgYnVpbHQgcm9vdCBmaWxlc3lzdGVtIGltYWdlIHRoYXQKICAgICAgICAgICAgICAgICB3YXMgZG93bmxvYWRlZCBmcm9tIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2luZGV4LWRvd25sb2Fkcyc+SW5kZXggb2YgUmVsZWFzZXM8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I2luZGV4LWRvd25sb2Fkcyc+SW5kZXggb2YgUmVsZWFzZXM8L3VsaW5rPi4KICAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQgZXh0cmFjdHMgdGhlIHJvb3QgZmlsZXN5c3RlbSBpbnRvIHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlMi02NC1zYXRvPC9maWxlbmFtZT4gZGlyZWN0b3J5OgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWVjbGlwc2UtcHJvamVjdC54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1lY2xpcHNlLXByb2plY3QueG1sCmluZGV4IGJkYjgzNDQuLjNlYjg1ZTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWVjbGlwc2UtcHJvamVjdC54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstZWNsaXBzZS1wcm9qZWN0LnhtbApAQCAtMTksOCArMTksOCBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBmaWd1cmUgYW5kIHN1cHBvcnRpbmcgbGlzdCBzdW1tYXJpemUgdGhlCi0gICAgICAgICAgICBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCBnZW5lcmFsIHdvcmtmbG93IHRoYXQgZW1wbG95cyBib3RoIHRoZQotICAgICAgICAgICAgU0RLIEVjbGlwc2UuCisgICAgICAgICAgICBnZW5lcmFsIHdvcmtmbG93IGZvciBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCB0aGF0IHVzZXMgdGhlCisgICAgICAgICAgICBTREsgd2l0aGluIHRoZSBFY2xpcHNlIElERS4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgpAQCAtMzEsOSArMzEsOCBAQAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QcmVwYXJlIHRoZSBob3N0IHN5c3RlbSBmb3IgdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgICAgIFByb2plY3Q8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgU2VlCisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5QcmVwYXJlIHRoZSBIb3N0IFN5c3RlbSBmb3IgdGhlIFlvY3RvIFByb2plY3Q8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZGV0YWlsZWQtc3VwcG9ydGVkLWRpc3Ryb3MnPlN1cHBvcnRlZCBMaW51eCBEaXN0cmlidXRpb25zPC91bGluaz4iCiAgICAgICAgICAgICAgICAgICAgIGFuZAogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVxdWlyZWQtcGFja2FnZXMtZm9yLXRoZS1ob3N0LWRldmVsb3BtZW50LXN5c3RlbSc+UmVxdWlyZWQgUGFja2FnZXMgZm9yIHRoZSBIb3N0IERldmVsb3BtZW50IFN5c3RlbTwvdWxpbms+IgpAQCAtNDMsOCArNDIsOCBAQAogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eHRlcm08L2ZpbGVuYW1lPiBwYWNrYWdlIGluc3RhbGxlZC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2VjdXJlIHRoZSBZb2N0byBQcm9qZWN0IGtlcm5lbCB0YXJnZXQKLSAgICAgICAgICAgICAgICAgICAgaW1hZ2U8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNlY3VyZSB0aGUgWW9jdG8gUHJvamVjdCBLZXJuZWwgVGFyZ2V0CisgICAgICAgICAgICAgICAgICAgIEltYWdlPC9lbXBoYXNpcz46CiAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGhhdmUgYSB0YXJnZXQga2VybmVsIGltYWdlIHRoYXQgaGFzIGJlZW4gYnVpbHQKICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uPC9wYXJhPgogICAgICAgICAgICAgICAgICAgICA8cGFyYT5EZXBlbmRpbmcgb24gd2hldGhlciB0aGUgWW9jdG8gUHJvamVjdCBoYXMgYQpAQCAtNjYsNyArNjUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tYWNoaW5lcy9xZW11PC9maWxlbmFtZT48L3VsaW5rPiBpZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBzdXBwb3J0ZWQgYW5kIHlvdQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBnb2luZyB0byBkZXZlbG9wIGFuZCB0ZXN0IHlvdXIgYXBwbGljYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgUUVNVSBlbXVsYXRvci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtbWFudWFsLXFlbXUnPlFFTVUgRW11bGF0b3I8L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCB5b3VyIGltYWdlIGlmIHlvdSBjYW5ub3QgZmluZCBhIHByZS1idWlsdApAQCAtOTEsOCArOTEsOCBAQAogICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZWN1cmUgdGhlIHRhcmdldCByb290IGZpbGVzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgYW5kIHRoZSBDcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW48L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNlY3VyZSB0aGUgVGFyZ2V0IFJvb3QgRmlsZXN5c3RlbQorICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIENyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbjwvZW1waGFzaXM+OgogICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBmaW5kIGFuZCBkb3dubG9hZCB0aGUgYXBwcm9wcmlhdGUgcm9vdAogICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIGFuZCB0aGUgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluLjwvcGFyYT4KICAgICAgICAgICAgICAgICAgICAgPHBhcmE+WW91IGNhbiBmaW5kIHRoZSB0YXJiYWxscyBmb3IgdGhlIHJvb3QgZmlsZXN5c3RlbQpAQCAtMTE4LDIyICsxMTgsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICBBbm90aGVyIGhlbHBmdWwgcmVzb3VyY2UgZm9yIGJ1aWxkaW5nIGFuIGluc3RhbGxlcgogICAgICAgICAgICAgICAgICAgICAgICAgaXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvUnVubmluZ0VjbGlwc2VBZ2FpbnN0QnVpbHRJbWFnZSc+Q29va2Jvb2sgZ3VpZGUgdG8gTWFraW5nIGFuIEVjbGlwc2UgRGVidWcgQ2FwYWJsZSBJbWFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9UaXBzQW5kVHJpY2tzL1J1bm5pbmdFY2xpcHNlQWdhaW5zdEJ1aWx0SW1hZ2UnPkNvb2tib29rIGd1aWRlIHRvIE1ha2luZyBhbiBFY2xpcHNlIERlYnVnIENhcGFibGUgSW1hZ2U8L3VsaW5rPiIKICAgICAgICAgICAgICAgICAgICAgICAgIHdpa2kgcGFnZS4KICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgYW5kIGJ1aWxkIHlvdXIgYXBwbGljYXRpb248L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhbmQgQnVpbGQgWW91ciBBcHBsaWNhdGlvbjwvZW1waGFzaXM+OgogICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB5b3UgbmVlZCB0byBoYXZlIHNvdXJjZSBmaWxlcyBmb3IgeW91cgogICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbi4KICAgICAgICAgICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSB0aGUgZmlsZXMsIHlvdSBjYW4gdXNlIHRoZSBFY2xpcHNlIElERQogICAgICAgICAgICAgICAgICAgICB0byBpbXBvcnQgdGhlbSBhbmQgYnVpbGQgdGhlIHByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgIElmIHlvdSBhcmUgbm90IHVzaW5nIEVjbGlwc2UsIHlvdSBuZWVkIHRvIHVzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbHMgeW91IGhhdmUgaW5zdGFsbGVkIHRvIGNyZWF0ZQotICAgICAgICAgICAgICAgICAgICB0aGUgaW1hZ2UuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRlcGxveSB0aGUgaW1hZ2Ugd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb248L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRlcGxveSB0aGUgSW1hZ2UgV2l0aCB0aGUgQXBwbGljYXRpb248L2VtcGhhc2lzPjoKICAgICAgICAgICAgICAgICAgICAgVXNpbmcgdGhlIEVjbGlwc2UgSURFLCB5b3UgY2FuIGRlcGxveSB5b3VyIGltYWdlIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICBoYXJkd2FyZSBvciB0byBRRU1VIHRocm91Z2ggdGhlIHByb2plY3QncyBwcmVmZXJlbmNlcy4KICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBhbHNvIHVzZSBFY2xpcHNlIHRvIGxvYWQgYW5kIHRlc3QgeW91ciBpbWFnZQpAQCAtMTQ0LDcgKzE0MSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGZvciBpbmZvcm1hdGlvbiBvbiB1c2luZyBRRU1VLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5UZXN0IGFuZCBkZWJ1ZyB0aGUgYXBwbGljYXRpb248L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlRlc3QgYW5kIERlYnVnIHRoZSBBcHBsaWNhdGlvbjwvZW1waGFzaXM+OgogICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdXIgYXBwbGljYXRpb24gaXMgZGVwbG95ZWQsIHlvdSBuZWVkIHRvIHRlc3QgaXQuCiAgICAgICAgICAgICAgICAgICAgIFdpdGhpbiB0aGUgRWNsaXBzZSBJREUsIHlvdSBjYW4gdXNlIHRoZSBkZWJ1Z2dpbmcKICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgYWxvbmcgd2l0aCBzdXBwb3J0ZWQgcGVyZm9ybWFuY2UgZW5oYW5jaW5nCkBAIC0xNzksMjUgKzE3NiwyNSBAQAogICAgICAgICAgICAgY29sbGVjdGlvbiBvZiBwb3dlciBkYXRhLCBjb2xsZWN0aW9uIG9mIGxhdGVuY3kgZGF0YSwgYW5kCiAgICAgICAgICAgICBjb2xsZWN0aW9uIG9mIHBlcmZvcm1hbmNlIGRhdGEuCiAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBUaGlzIHJlbGVhc2Ugb2YgdGhlIFlvY3RvIFByb2plY3Qgc3VwcG9ydHMgYm90aCB0aGUgTmVvbgotICAgICAgICAgICAgICAgIGFuZCBNYXJzIHZlcnNpb25zIG9mIHRoZSBFY2xpcHNlIElERS4KLSAgICAgICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUgTmVvbgorICAgICAgICAgICAgICAgIFRoaXMgcmVsZWFzZSBvZiB0aGUgWW9jdG8gUHJvamVjdCBzdXBwb3J0cyBib3RoIHRoZSBPeHlnZW4KKyAgICAgICAgICAgICAgICBhbmQgTmVvbiB2ZXJzaW9ucyBvZiB0aGUgRWNsaXBzZSBJREUuCisgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgdGhlIE94eWdlbgogICAgICAgICAgICAgICAgIHJlbGVhc2Ugd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUgTWFycyB2ZXJzaW9uIG9mIEVjbGlwc2UKKyAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGUgTmVvbiB2ZXJzaW9uIG9mIEVjbGlwc2UKICAgICAgICAgICAgICAgICB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LCBzZWUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWFwcGVuZGl4LWxhdGVzdC15cC1lY2xpcHNlLXBsdWctaW4nPkFwcGVuZGl4IEM8L2xpbms+LgorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstYXBwZW5kaXgtbmVvbi15cC1lY2xpcHNlLXBsdWctaW4nPkFwcGVuZGl4IEQ8L2xpbms+Ii4KICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1zZXR0aW5nLXVwLXRoZS1lY2xpcHNlLWlkZSc+Ci0gICAgICAgICAgICA8dGl0bGU+U2V0dGluZyBVcCB0aGUgTmVvbiBWZXJzaW9uIG9mIHRoZSBFY2xpcHNlIElERTwvdGl0bGU+CisgICAgICAgIDxzZWN0aW9uIGlkPSdveHlnZW4tc2V0dGluZy11cC10aGUtZWNsaXBzZS1pZGUnPgorICAgICAgICAgICAgPHRpdGxlPlNldHRpbmcgVXAgdGhlIE94eWdlbiBWZXJzaW9uIG9mIHRoZSBFY2xpcHNlIElERTwvdGl0bGU+CiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFRvIGRldmVsb3Agd2l0aGluIHRoZSBFY2xpcHNlIElERSwgeW91IG5lZWQgdG8gZG8gdGhlCiAgICAgICAgICAgICAgICAgZm9sbG93aW5nOgogICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbCB0aGUgTmVvbiB2ZXJzaW9uIG9mIHRoZSBFY2xpcHNlIElERS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGwgdGhlIE94eWdlbiB2ZXJzaW9uIG9mIHRoZSBFY2xpcHNlIElERS4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmUgdGhlIEVjbGlwc2UgSURFLgpAQCAtMjE3LDE3ICsyMTQsMTcgQEAKICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICA8L3BhcmE+CiAKLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWluc3RhbGxpbmctZWNsaXBzZS1pZGUnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5JbnN0YWxsaW5nIHRoZSBOZW9uIEVjbGlwc2UgSURFPC90aXRsZT4KKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdveHlnZW4taW5zdGFsbGluZy1lY2xpcHNlLWlkZSc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkluc3RhbGxpbmcgdGhlIE94eWdlbiBFY2xpcHNlIElERTwvdGl0bGU+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGxvY2F0ZSwgaW5zdGFsbCwgYW5kIGNvbmZpZ3VyZQotICAgICAgICAgICAgICAgICAgICBOZW9uIEVjbGlwc2U6CisgICAgICAgICAgICAgICAgICAgIE94eWdlbiBFY2xpcHNlOgogICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxvY2F0ZSB0aGUgTmVvbiBEb3dubG9hZDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Mb2NhdGUgdGhlIE94eWdlbiBEb3dubG9hZDo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW4gYSBicm93c2VyIGFuZCBnbyB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbmVvbi8nPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbmVvbi88L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LmVjbGlwc2Uub3JnL294eWdlbi8nPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3h5Z2VuLzwvdWxpbms+LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Eb3dubG9hZCB0aGUgVGFyYmFsbDo8L2VtcGhhc2lzPgpAQCAtMjYyLDM2ICsyNTksNTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW5zdGFsbCB0aGUgU29mdHdhcmU6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY2NlcHQgdGhlIGRlZmF1bHQgImNwcC1uZW9uIiBkaXJlY3RvcnkgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2sgIkluc3RhbGwiLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjY2VwdCBhbnkgbGljZW5zZSBhZ3JlZW1lbnRzIGFuZCBhcHByb3ZlIGFueQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiSW5zdGFsbCIgdG8gYmVnaW4gdGhlIGluc3RhbGxhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY2NlcHQgYWxsIHRoZSBjZXJ0aWZpY2F0ZXMgYW5kIGFueSBsaWNlbnNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdyZWVtZW50cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiSW5zdGFsbCIgYWdhaW4gdG8gZmluaXNoIHRoZSBpbnN0YWxsYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxhdW5jaCBOZW9uOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgdGhlICJMYXVuY2giIGJ1dHRvbiBhbmQgYWNjZXB0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgIndvcmtzcGFjZSIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxhdW5jaCBPeHlnZW46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY2NlcHQgdGhlIGRlZmF1bHQgIndvcmtzcGFjZSIgYW5kIGNsaWNrIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMYXVuY2giIGJ1dHRvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIHNlZSB0aGUgRWNsaXBzZSB3ZWxjb21lIHBhZ2UgZnJvbSB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbiBjbGljayAid29ya2JlbmNoIiB0byBlbnRlciB5b3VyIHdvcmtzcGFjZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWNvbmZpZ3VyaW5nLXRoZS1tYXJzLWVjbGlwc2UtaWRlJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+Q29uZmlndXJpbmcgdGhlIE5lb24gRWNsaXBzZSBJREU8L3RpdGxlPgorICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J294eWdlbi1jb25maWd1cmluZy10aGUtZWNsaXBzZS1pZGUnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmluZyB0aGUgT3h5Z2VuIEVjbGlwc2UgSURFPC90aXRsZT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gY29uZmlndXJlIHRoZSBOZW9uIEVjbGlwc2UgSURFLgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiBob3cgeW91IGluc3RhbGxlZCBFY2xpcHNlIGFuZCB3aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICB5b3UgaGF2ZSBhbHJlYWR5IGRvbmUsIHNvbWUgb2YgdGhlIG9wdGlvbnMgd2lsbAotICAgICAgICAgICAgICAgICAgICAgICAgbm90IGFwcGVhci4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBjYW5ub3QgZmluZCBhbiBvcHRpb24gYXMgZGlyZWN0ZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIGl0IGhhcyBhbHJlYWR5IGJlZW4gaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gY29uZmlndXJlIHRoZSBPeHlnZW4gRWNsaXBzZSBJREUuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIGhvdyB5b3UgaW5zdGFsbGVkIEVjbGlwc2UgYW5kIHdoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGhhdmUgYWxyZWFkeSBkb25lLCBzb21lIG9mIHRoZSBvcHRpb25zIHdpbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGFwcGVhci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGNhbm5vdCBmaW5kIGFuIG9wdGlvbiBhcyBkaXJlY3RlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBpdCBoYXMgYWxyZWFkeSBiZWVuIGluc3RhbGxlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBzZWUgYWxsIGl0ZW1zIHJlZ2FyZGxlc3Mgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hldGhlciB0aGV5IGFyZSBpbnN0YWxsZWQgb3Igbm90LCBkZXNlbGVjdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhpZGUgaXRlbXMgdGhhdCBhcmUgYWxyZWFkeSBpbnN0YWxsZWQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrIGJveC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSBFY2xpcHNlIGlzIHJ1bm5pbmcgYW5kIHlvdSBhcmUgaW4geW91cgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtiZW5jaC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBKdXN0IGNsaWNrICJ3b3JrYmVuY2giIGlmIHlvdSBhcmUgbm90IGluIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IHdvcmtzcGFjZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgIkluc3RhbGwgTmV3IFNvZnR3YXJlIiBmcm9tIHRoZSAiSGVscCIKQEAgLTI5OSw3ICszMTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOZW9uIC0gaHR0cDovL2Rvd25sb2FkLmVjbGlwc2Uub3JnL3JlbGVhc2VzL25lb24iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk94eWdlbiAtIGh0dHA6Ly9kb3dubG9hZC5lY2xpcHNlLm9yZy9yZWxlYXNlcy9veHlnZW4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgIldvcmsgd2l0aDoiIHB1bGwtZG93biBtZW51LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpAQCAtMzMxLDI4ICszNDIsMjkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wbGV0ZSB0aGUgaW5zdGFsbGF0aW9uIGJ5IGNsaWNraW5nIHRocm91Z2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ByaWF0ZSAiTmV4dCIgYW5kICJGaW5pc2giIGJ1dHRvbnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwcm9wcmlhdGUgIk5leHQiIGFuZCAiRmluaXNoIiBidXR0b25zIGFuZCB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdGFydCB0aGUgRWNsaXBzZSBJREUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1pbnN0YWxsaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPgotICAgICAgICAgICAgICAgIDx0aXRsZT5JbnN0YWxsaW5nIG9yIEFjY2Vzc2luZyB0aGUgTmVvbiBFY2xpcHNlIFlvY3RvIFBsdWctaW48L3RpdGxlPgorICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J294eWdlbi1pbnN0YWxsaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPgorICAgICAgICAgICAgICAgIDx0aXRsZT5JbnN0YWxsaW5nIG9yIEFjY2Vzc2luZyB0aGUgT3h5Z2VuIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbjwvdGl0bGU+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBpbnN0YWxsIHRoZSBFY2xpcHNlIFlvY3RvIFBsdWctaW4gaW50byB0aGUKICAgICAgICAgICAgICAgICAgICAgRWNsaXBzZSBJREUgb25lIG9mIHR3byB3YXlzOiAgdXNlIHRoZSBZb2N0byBQcm9qZWN0J3MKLSAgICAgICAgICAgICAgICAgICAgRWNsaXBzZSBVcGRhdGUgc2l0ZSB0byBpbnN0YWxsIHRoZSBwcmUtYnVpbHQgcGx1Zy1pbgorICAgICAgICAgICAgICAgICAgICBFY2xpcHNlIFVwZGF0ZSBzaXRlIHRvIGluc3RhbGwgdGhlIHByZS1idWlsdCBwbHVnLWluLAogICAgICAgICAgICAgICAgICAgICBvciBidWlsZCBhbmQgaW5zdGFsbCB0aGUgcGx1Zy1pbiBmcm9tIHRoZSBsYXRlc3QKICAgICAgICAgICAgICAgICAgICAgc291cmNlIGNvZGUuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tbmV3LXNvZnR3YXJlJz4KKyAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0nb3h5Z2VuLW5ldy1zb2Z0d2FyZSc+CiAgICAgICAgICAgICAgICAgICAgIDx0aXRsZT5JbnN0YWxsaW5nIHRoZSBQcmUtYnVpbHQgUGx1Zy1pbiBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IEVjbGlwc2UgVXBkYXRlIFNpdGU8L3RpdGxlPgogCiAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgVG8gaW5zdGFsbCB0aGUgTmVvbiBFY2xpcHNlIFlvY3RvIFBsdWctaW4gZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIGluc3RhbGwgdGhlIE94eWdlbiBFY2xpcHNlIFlvY3RvIFBsdWctaW4gZnJvbSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSBzaXRlLCBmb2xsb3cgdGhlc2Ugc3RlcHM6CiAgICAgICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpAQCAtMzY3LDE3ICszNzksMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JkVDTElQU0VfRExfUExVR0lOX1VSTDsvbmVvbjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4mRUNMSVBTRV9ETF9QTFVHSU5fVVJMOy9veHlnZW48L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgVVJMIGZpZWxkIGFuZCBwcm92aWRlIGEgbWVhbmluZ2Z1bAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIGluIHRoZSAiTmFtZSIgZmllbGQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIk9LIiB0byBoYXZlIHRoZSBlbnRyeSBhZGRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgIldvcmsgd2l0aDoiIGRyb3AtZG93biBsaXN0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCB0aGUgZW50cnkgZm9yIHRoZSBwbHVnLWluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlICJXb3JrIHdpdGg6IiBkcm9wLWRvd24gbGlzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIk9LIiB0byBoYXZlIHRoZSBlbnRyeSBhdXRvbWF0aWNhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVsYXRlIHRoZSAiV29yayB3aXRoOiIgZmllbGQgYW5kIHRvIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGl0ZW1zIGZvciBpbnN0YWxsYXRpb24gYXBwZWFyIGluIHRoZSB3aW5kb3cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVsb3cuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2sgdGhlIGJveGVzIG5leHQgdG8gdGhlIGZvbGxvd2luZzoKQEAgLTQwMSwxNiArNDExLDIxIEBACiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi16aXAtZmlsZS1tZXRob2QnPgorICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdveHlnZW4temlwLWZpbGUtbWV0aG9kJz4KICAgICAgICAgICAgICAgICAgICAgPHRpdGxlPkluc3RhbGxpbmcgdGhlIFBsdWctaW4gVXNpbmcgdGhlIExhdGVzdCBTb3VyY2UgQ29kZTwvdGl0bGU+CiAKICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUbyBpbnN0YWxsIHRoZSBOZW9uIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgVG8gaW5zdGFsbCB0aGUgT3h5Z2VuIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiBmcm9tIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgbGF0ZXN0IHNvdXJjZSBjb2RlLCBmb2xsb3cgdGhlc2Ugc3RlcHM6CiAgICAgICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHlvdXIgZGV2ZWxvcG1lbnQgc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhcyBKREsgMS44KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHlvdXIgYnVpbGQgaG9zdCBoYXMgSkRLIHZlcnNpb24gMS44CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGdyZWF0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIGEgTGludXggYnVpbGQgaG9zdCB5b3UgY2FuIGRldGVybWluZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiB1c2luZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBqYXZhIC12ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsIFgxMS1yZWxhdGVkIHBhY2thZ2VzOgpAQCAtNDIzLDE5ICs0MzgsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkgd2l0aDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGNkIH4KLSAgICAgJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvZWNsaXBzZS1wb2t5CisgICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2VjbGlwc2UteW9jdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBHaXQgdG8gY3JlYXRlIHRoZSBjb3JyZWN0IHRhZzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGNkIH4vZWNsaXBzZS1wb2t5Ci0gICAgICQgZ2l0IGNoZWNrb3V0IG5lb24veW9jdG8tJkRJU1RSTzsKKyAgICAgJCBjZCB+L2VjbGlwc2UteW9jdG8KKyAgICAgJCBnaXQgY2hlY2tvdXQgLWIgb3h5Z2VuLyZESVNUUk9fTkFNRV9OT19DQVA7IHJlbW90ZXMvb3JpZ2luL294eWdlbi8mRElTVFJPX05BTUVfTk9fQ0FQOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY3JlYXRlcyBhIGxvY2FsIHRhZyBuYW1lZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bmVvbi95b2N0by0mRElTVFJPOzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5veHlnZW4vJkRJU1RST19OQU1FX05PX0NBUDs8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlZCBvbiB0aGUgYnJhbmNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vcmlnaW4vbmVvbi1tYXN0ZXI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9yaWdpbi9veHlnZW4vJkRJU1RST19OQU1FX05PX0NBUDs8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGFyZSBwdXQgaW50byBhIGRldGFjaGVkIEhFQUQgc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGZpbmUgc2luY2UgeW91IGFyZSBvbmx5IGdvaW5nIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGJ1aWxkaW5nIGFuZCBub3QgZGV2ZWxvcGluZy4KQEAgLTQ2OSwxMSArNDg0LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIEVDTElQU0VfSE9NRT0vaG9tZS9zY290dHJpZi9lY2xpcHNlLXBva3kvc2NyaXB0cy9lY2xpcHNlIC4vYnVpbGQuc2ggLWwgbmVvbi95b2N0by0mRElTVFJPOyBtYXN0ZXIgeW9jdG8tJkRJU1RSTzsgMj4mYW1wOzEgfCB0ZWUgYnVpbGQubG9nCisgICAgICQgRUNMSVBTRV9IT01FPS9ob21lL3Njb3R0cmlmL2VjbGlwc2UteW9jdG8vc2NyaXB0cy9lY2xpcHNlIC4vYnVpbGQuc2ggLWwgb3h5Z2VuLyZESVNUUk9fTkFNRV9OT19DQVA7IG1hc3RlciB5b2N0by0mRElTVFJPOyAyPiZhbXA7MSB8IHRlZSBidWlsZC5sb2cKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcHJldmlvdXMgZXhhbXBsZSBjb21tYW5kIGFkZHMgdGhlIHRhZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1hcnMveW9jdG8tJkRJU1RSTzs8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b3h5Z2VuLyZESVNUUk9fTkFNRV9OT19DQVA7PC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gPGZpbGVuYW1lPkhFQUQ8L2ZpbGVuYW1lPiwgdGhlbiB0ZWxscwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVpbGQgc2NyaXB0IHRvIHVzZSB0aGUgbG9jYWwgKC1sKSBHaXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tvdXQgZm9yIHRoZSBidWlsZC4KQEAgLTUzMywxNyArNTQ4LDE3IEBACiAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgQXQgdGhpcyBwb2ludCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gY29uZmlndXJlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgRWNsaXBzZSBZb2N0byBQbHVnLWluIGFzIGRlc2NyaWJlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdtYXJzLWNvbmZpZ3VyaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPkNvbmZpZ3VyaW5nIHRoZSBOZW9uIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nb3h5Z2VuLWNvbmZpZ3VyaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPkNvbmZpZ3VyaW5nIHRoZSBPeHlnZW4gRWNsaXBzZSBZb2N0byBQbHVnLWluPC9saW5rPiIKICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgICAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWNvbmZpZ3VyaW5nLXRoZS1lY2xpcHNlLXlvY3RvLXBsdWctaW4nPgotICAgICAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmluZyB0aGUgTmVvbiBFY2xpcHNlIFlvY3RvIFBsdWctaW48L3RpdGxlPgorICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J294eWdlbi1jb25maWd1cmluZy10aGUtZWNsaXBzZS15b2N0by1wbHVnLWluJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+Q29uZmlndXJpbmcgdGhlIE94eWdlbiBFY2xpcHNlIFlvY3RvIFBsdWctaW48L3RpdGxlPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyaW5nIHRoZSBOZW9uIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiBpbnZvbHZlcworICAgICAgICAgICAgICAgICAgICBDb25maWd1cmluZyB0aGUgT3h5Z2VuIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbiBpbnZvbHZlcwogICAgICAgICAgICAgICAgICAgICBzZXR0aW5nIHRoZSBDcm9zcyBDb21waWxlciBvcHRpb25zIGFuZCB0aGUgVGFyZ2V0CiAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuCiAgICAgICAgICAgICAgICAgICAgIFRoZSBjb25maWd1cmF0aW9ucyB5b3UgY2hvb3NlIGJlY29tZSB0aGUgZGVmYXVsdApAQCAtNTU1LDcgKzU3MCw3IEBACiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIFRvIHN0YXJ0LCB5b3UgbmVlZCB0byBkbyB0aGUgZm9sbG93aW5nIGZyb20gd2l0aGluIHRoZQogICAgICAgICAgICAgICAgICAgICBFY2xpcHNlIElERToKLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENob29zZSAiUHJlZmVyZW5jZXMiIGZyb20gdGhlICJXaW5kb3ciIG1lbnUgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5IHRoZSBQcmVmZXJlbmNlcyBEaWFsb2cuCkBAIC01NjQsNyArNTc5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiWW9jdG8gUHJvamVjdCBTREsiIHRvIGRpc3BsYXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBzY3JlZW4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHN1Yi1zZWN0aW9ucyBkZXNjcmliZSBob3cgdG8gY29uZmlndXJlCiAgICAgICAgICAgICAgICAgICAgIHRoZSBwbHVnLWluLgogICAgICAgICAgICAgICAgICAgICA8bm90ZT4KQEAgLTU3MiwxMiArNTg3LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBleGFtcGxlIGZvciBwcmVwYXJpbmcgYSBRRU1VIGltYWdlIGZvciB1c2Ugd2l0aAogICAgICAgICAgICAgICAgICAgICAgICAgRWNsaXBzZSBpcyByZWZlcmVuY2VkIGFzIHRoZSAid2lraSIgYW5kIGlzIGxpbmtlZAogICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIGV4YW1wbGUgb24gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvUnVubmluZ0VjbGlwc2VBZ2FpbnN0QnVpbHRJbWFnZSc+IENvb2tib29rIGd1aWRlIHRvIE1ha2luZyBhbiBFY2xpcHNlIERlYnVnIENhcGFibGUgSW1hZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvVGlwc0FuZFRyaWNrcy9SdW5uaW5nRWNsaXBzZUFnYWluc3RCdWlsdEltYWdlJz4gQ29va2Jvb2sgZ3VpZGUgdG8gTWFraW5nIGFuIEVjbGlwc2UgRGVidWcgQ2FwYWJsZSBJbWFnZTwvdWxpbms+IgogICAgICAgICAgICAgICAgICAgICAgICAgd2lraSBwYWdlLgogICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tY29uZmlndXJpbmctdGhlLWNyb3NzLWNvbXBpbGVyLW9wdGlvbnMnPgorICAgICAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdveHlnZW4tY29uZmlndXJpbmctdGhlLWNyb3NzLWNvbXBpbGVyLW9wdGlvbnMnPgogICAgICAgICAgICAgICAgICAgICA8dGl0bGU+Q29uZmlndXJpbmcgdGhlIENyb3NzLUNvbXBpbGVyIE9wdGlvbnM8L3RpdGxlPgogCiAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtNjgyLDggKzY5Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvVGlwc0FuZFRyaWNrcy9SdW5uaW5nRWNsaXBzZUFnYWluc3RCdWlsdEltYWdlJz53aWtpPC91bGluaz4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHNvLCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1ZX1FFTVVfUk9PVEZTPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IGlzIGZvdW5kIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBpcyBmb3VuZCBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB5b3Ugd291bGQgYnJvd3NlIHRvIGFuZCBzZWxlY3QgdGhhdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgKGUuZy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ob21lL3Njb3R0cmlmL3Bva3kvYnVpbGQvTVlfUUVNVV9ST09URlM8L2ZpbGVuYW1lPikuCkBAIC03MDgsOSArNzIyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIG1lbnUsIHlvdSB3aWxsIG5lZWQgdG8gYnVpbGQgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7I3FzLWJ1aWxkaW5nLWltYWdlcyc+QnVpbGRpbmcgSW1hZ2VzPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtYnVpbGRpbmctYS1zaW1wbGUtaW1hZ2UnPkJ1aWxkaW5nIGEgU2ltcGxlIEltYWdlPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gb2YgdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1RpcHNBbmRUcmlja3MvUnVubmluZ0VjbGlwc2VBZ2FpbnN0QnVpbHRJbWFnZSc+d2lraTwvdWxpbms+LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KQEAgLTcxOCw3ICs3MzIsNyBAQAogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tY29uZmlndXJpbmctdGhlLXRhcmdldC1vcHRpb25zJz4KKyAgICAgICAgICAgICAgICA8c2VjdGlvbiBpZD0nb3h5Z2VuLWNvbmZpZ3VyaW5nLXRoZS10YXJnZXQtb3B0aW9ucyc+CiAgICAgICAgICAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmluZyB0aGUgVGFyZ2V0IE9wdGlvbnM8L3RpdGxlPgogCiAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtNzg3LDE0ICs4MDEsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgdGhlICJBcHBseSIgYW5kICJPSyIgdG8gc2F2ZSB5b3VyIHBsdWctaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrICJBcHBseSBhbmQgQ2xvc2UiIHRvIHNhdmUgeW91ciBwbHVnLWluCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucy4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWNyZWF0aW5nLXRoZS1wcm9qZWN0Jz4KKyAgICAgICAgPHNlY3Rpb24gaWQ9J294eWdlbi1jcmVhdGluZy10aGUtcHJvamVjdCc+CiAgICAgICAgICAgICA8dGl0bGU+Q3JlYXRpbmcgdGhlIFByb2plY3Q8L3RpdGxlPgogCiAgICAgICAgICAgICA8cGFyYT4KQEAgLTgxOCwyMCArODMyLDIyIEBACiAgICAgICAgICAgICAgICAgZGlzcGxheSB0aGUgc291cmNlIGNvZGUsIGZvbGxvdyB0aGVzZSBzdGVwczoKICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCAiQyBQcm9qZWN0IiBmcm9tIHRoZSAiRmlsZSAtPiBOZXciIG1lbnUuCisgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgIkMvQysrIFByb2plY3QiIGZyb20gdGhlICJGaWxlIC0+IE5ldyIgbWVudS4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBFeHBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5Zb2N0byBQcm9qZWN0IFNESyBBdXRvdG9vbHMgUHJvamVjdDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ICJDIE1hbmFnZWQgQnVpbGQiIGZyb20gdGhlIGF2YWlsYWJsZSBvcHRpb25zIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2sgIk5leHQiLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCA8ZmlsZW5hbWU+SGVsbG8gV29ybGQgQU5TSSBDIEF1dG90b29scyBQcm9qZWN0czwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgRXhwYW5kICJZb2N0byBQcm9qZWN0IFNESyBBdXRvdG9vbHMgUHJvamVjdCIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ICJIZWxsbyBXb3JsZCBBTlNJIEMgQXV0b3Rvb2xzIFByb2plY3RzIi4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgYW4gQXV0b3Rvb2xzLWJhc2VkIHByb2plY3QgYmFzZWQgb24gYSBZb2N0bwogICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgUHV0IGEgbmFtZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5Qcm9qZWN0IG5hbWU6PC9maWxlbmFtZT4gZmllbGQuCisgICAgICAgICAgICAgICAgICAgICAgICBQdXQgYSBuYW1lIGluIHRoZSAiUHJvamVjdCBuYW1lOiIgZmllbGQuCiAgICAgICAgICAgICAgICAgICAgICAgICBEbyBub3QgdXNlIGh5cGhlbnMgYXMgcGFydCBvZiB0aGUgbmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPmhlbGxvPC9maWxlbmFtZT4pLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC04NTcsMTIgKzg3MywxMiBAQAogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tY29uZmlndXJpbmctdGhlLWNyb3NzLXRvb2xjaGFpbnMnPgorICAgICAgICA8c2VjdGlvbiBpZD0nb3h5Z2VuLWNvbmZpZ3VyaW5nLXRoZS1jcm9zcy10b29sY2hhaW5zJz4KICAgICAgICAgICAgIDx0aXRsZT5Db25maWd1cmluZyB0aGUgQ3Jvc3MtVG9vbGNoYWluczwvdGl0bGU+CiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFRoZSBlYXJsaWVyIHNlY3Rpb24sCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J25lb24tY29uZmlndXJpbmctdGhlLWVjbGlwc2UteW9jdG8tcGx1Zy1pbic+Q29uZmlndXJpbmcgdGhlIE5lb24gRWNsaXBzZSBZb2N0byBQbHVnLWluPC9saW5rPiIsCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J294eWdlbi1jb25maWd1cmluZy10aGUtZWNsaXBzZS15b2N0by1wbHVnLWluJz5Db25maWd1cmluZyB0aGUgT3h5Z2VuIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbjwvbGluaz4iLAogICAgICAgICAgICAgICAgIHNldHMgdXAgdGhlIGRlZmF1bHQgcHJvamVjdCBjb25maWd1cmF0aW9ucy4KICAgICAgICAgICAgICAgICBZb3UgY2FuIG92ZXJyaWRlIHRoZXNlIHNldHRpbmdzIGZvciBhIGdpdmVuIHByb2plY3QgYnkKICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgdGhlc2Ugc3RlcHM6CkBAIC04NzcsNyArODkzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldCBPcHRpb25zIGZvciBhIHByb2plY3QgYXJlIGluaGVyaXRlZCBmcm9tCiAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncyB5b3UgcHJvdmlkZWQgdXNpbmcgdGhlIFByZWZlcmVuY2VzIERpYWxvZwogICAgICAgICAgICAgICAgICAgICAgICAgYXMgZGVzY3JpYmVkIGVhcmxpZXIgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbmVvbi1jb25maWd1cmluZy10aGUtZWNsaXBzZS15b2N0by1wbHVnLWluJz5Db25maWd1cmluZyB0aGUgTmVvbiBFY2xpcHNlIFlvY3RvIFBsdWctaW48L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J294eWdlbi1jb25maWd1cmluZy10aGUtZWNsaXBzZS15b2N0by1wbHVnLWluJz5Db25maWd1cmluZyB0aGUgT3h5Z2VuIEVjbGlwc2UgWW9jdG8gUGx1Zy1pbjwvbGluaz4iCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgU2V0dGluZ3MgRGlhbG9nIGFsbG93cyB5b3UgdG8KICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlIHRob3NlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIGEgZ2l2ZW4KQEAgLTg4NSwyMSArOTAxLDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgTWFrZSBvciB2ZXJpZnkgeW91ciBjb25maWd1cmF0aW9ucyBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0IGFuZCBjbGljayAiT0siLgorICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdCBhbmQgY2xpY2sgIkFwcGx5IGFuZCBDbG9zZSIuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgUmlnaHQtY2xpY2sgaW4gdGhlIG5hdmlnYXRpb24gcGFuZSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCAiUmVjb25maWd1cmUgUHJvamVjdCIgZnJvbSB0aGUgcG9wLXVwIG1lbnUuCisgICAgICAgICAgICAgICAgICAgICAgICBSaWdodC1jbGljayBpbiB0aGUgbmF2aWdhdGlvbiBwYW5lIGFuZCBzZWxlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICJSZWNvbmZpZ3VyZSBQcm9qZWN0IiBmcm9tIHRoZSBwb3AtdXAgbWVudS4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgc2VsZWN0aW9uIHJlY29uZmlndXJlcyB0aGUgcHJvamVjdCBieSBydW5uaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b2dlbi5zaDwvZmlsZW5hbWU+IGluIHRoZSB3b3Jrc3BhY2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciB5b3VyIHByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgc2NyaXB0IGFsc28gcnVucwotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYnRvb2xpemU8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hY2xvY2FsPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b2NvbmY8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvaGVhZGVyPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b21ha2UgLS1hPC9maWxlbmFtZT4sIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi4vY29uZmlndXJlPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HTlVfQnVpbGRfU3lzdGVtJz5BdXRvdG9vbHMgR05VIHV0aWxpdHkgcHJvZ3JhbXM8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgc3VjaCBhcyBBdXRvY29uZiwgQXV0b21ha2UsIGFuZCBzbyBmb3J0aCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtzcGFjZSBmb3IgeW91ciBwcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgb24gdGhlICJDb25zb2xlIiB0YWIgYmVuZWF0aCB5b3VyIHNvdXJjZSBjb2RlCiAgICAgICAgICAgICAgICAgICAgICAgICB0byBzZWUgdGhlIHJlc3VsdHMgb2YgcmVjb25maWd1cmluZyB5b3VyIHByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KQEAgLTkwNywxMyArOTE3LDE0IEBACiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLWJ1aWxkaW5nLXRoZS1wcm9qZWN0Jz4KKyAgICAgICAgIDxzZWN0aW9uIGlkPSdveHlnZW4tYnVpbGRpbmctdGhlLXByb2plY3QnPgogICAgICAgICAgICAgPHRpdGxlPkJ1aWxkaW5nIHRoZSBQcm9qZWN0PC90aXRsZT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBUbyBidWlsZCB0aGUgcHJvamVjdCBzZWxlY3QgIkJ1aWxkIEFsbCIgZnJvbSB0aGUKICAgICAgICAgICAgICAgICAiUHJvamVjdCIgbWVudS4KICAgICAgICAgICAgICAgICBUaGUgY29uc29sZSBzaG91bGQgdXBkYXRlIGFuZCB5b3UgY2FuIG5vdGUgdGhlCi0gICAgICAgICAgICAgICAgY3Jvc3MtY29tcGlsZXIgeW91IGFyZSB1c2luZy4KKyAgICAgICAgICAgICAgICBjcm9zcy1jb21waWxlciB5b3UgYXJlIHVzaW5nIChpLmUuCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmk1ODYtcG9reS1saW51eC1nY2M8L2ZpbGVuYW1lPiBpbiB0aGlzIGV4YW1wbGUpLgogICAgICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgICAgICBXaGVuIGJ1aWxkaW5nICJZb2N0byBQcm9qZWN0IFNESyBBdXRvdG9vbHMiIHByb2plY3RzLAogICAgICAgICAgICAgICAgICAgICB0aGUgRWNsaXBzZSBJREUgbWlnaHQgZGlzcGxheSBlcnJvciBtZXNzYWdlcyBmb3IKQEAgLTkyOSwxMiArOTQwLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IHRoZSBwcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCAiRm9sZGVyIiBmcm9tIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GaWxlID4gTmV3PC9maWxlbmFtZT4gbWVudS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgIkZvbGRlciIgZnJvbSB0aGUgIkZpbGUgLT4gTmV3IiBtZW51LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoZSAiTmV3IEZvbGRlciIgRGlhbG9nLCBzZWxlY3QgIkxpbmsgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHRlcm5hdGUgbG9jYXRpb24gKGxpbmtlZCBmb2xkZXIpIi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGUgIk5ldyBGb2xkZXIiIERpYWxvZywgY2xpY2sgdGhlICJBZHZhbmNlZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b24gYW5kIHRoZW4gYWN0aXZhdGUgIkxpbmsgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHRlcm5hdGUgbG9jYXRpb24gKGxpbmtlZCBmb2xkZXIpIiBidXR0b24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIkJyb3dzZSIgdG8gbmF2aWdhdGUgdG8gdGhlIGluY2x1ZGUKQEAgLTk0Myw5ICs5NTQsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgIk9LIi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGljayAiRmluaXNoIiB0byBzYXZlIHRoZSBsaW5rZWQgZm9sZGVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgpAQCAtOTUzLDcgKzk2MSw3IEBACiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KIAotICAgICAgICA8c2VjdGlvbiBpZD0nbmVvbi1zdGFydGluZy1xZW11LWluLXVzZXItc3BhY2UtbmZzLW1vZGUnPgorICAgICAgICA8c2VjdGlvbiBpZD0nb3h5Z2VuLXN0YXJ0aW5nLXFlbXUtaW4tdXNlci1zcGFjZS1uZnMtbW9kZSc+CiAgICAgICAgICAgICA8dGl0bGU+U3RhcnRpbmcgUUVNVSBpbiBVc2VyLVNwYWNlIE5GUyBNb2RlPC90aXRsZT4KIAogICAgICAgICAgICAgPHBhcmE+CkBAIC05ODcsOCArOTk1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cnBjYmluZDwvZmlsZW5hbWU+LCBmb2xsb3cgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbnMgdG8gZ2V0IHRoZSBzZXJ2aWNlIHJ1bm5pbmcuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgb24gYSBuZXcgVWJ1bnR1IDE2LjA0IExUUwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxhdGlvbiwgeW91IG11c3QgZG8gdGhlIGZvbGxvd2luZyBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyIHRvIGdldCBRRU1VIHRvIGxhdW5jaDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsYXRpb24sIHlvdSBtdXN0IGRvIHRoZSBmb2xsb3dpbmcgaW4gYSBuZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGVsbCBpbiBvcmRlciB0byBnZXQgUUVNVSB0byBsYXVuY2g6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHN1ZG8gYXB0LWdldCBpbnN0YWxsIHJwY2JpbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CkBAIC0xMDMyLDcgKzEwNDAsNyBAQAogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgPHNlY3Rpb24gaWQ9J25lb24tZGVwbG95aW5nLWFuZC1kZWJ1Z2dpbmctdGhlLWFwcGxpY2F0aW9uJz4KKyAgICAgICAgPHNlY3Rpb24gaWQ9J294eWdlbi1kZXBsb3lpbmctYW5kLWRlYnVnZ2luZy10aGUtYXBwbGljYXRpb24nPgogICAgICAgICAgICAgPHRpdGxlPkRlcGxveWluZyBhbmQgRGVidWdnaW5nIHRoZSBBcHBsaWNhdGlvbjwvdGl0bGU+CiAKICAgICAgICAgICAgIDxwYXJhPgpAQCAtMTE4Niw3ICsxMTk0LDcgQEAKICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgIDxzZWN0aW9uIGlkPSduZW9uLXVzaW5nLUxpbnV4dG9vbHMnPgorICAgICAgICA8c2VjdGlvbiBpZD0nb3h5Z2VuLXVzaW5nLUxpbnV4dG9vbHMnPgogICAgICAgICAgICAgPHRpdGxlPlVzaW5nIExpbnV4dG9vbHM8L3RpdGxlPgogCiAgICAgICAgICAgICA8cGFyYT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWV4dGVuc2libGUueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstZXh0ZW5zaWJsZS54bWwKaW5kZXggNDQ0ZDgxNi4uNTIxNWE5ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstZXh0ZW5zaWJsZS54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstZXh0ZW5zaWJsZS54bWwKQEAgLTI4LDcgKzI4LDcgQEAKICAgICAgICAgSW4gYWRkaXRpb24gdG8gdGhlIGZ1bmN0aW9uYWxpdHkgYXZhaWxhYmxlIHRocm91Z2gKICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiwgeW91IGNhbiBhbHRlcm5hdGl2ZWx5IG1ha2UgdXNlIG9mIHRoZQogICAgICAgICB0b29sY2hhaW4gZGlyZWN0bHksIGZvciBleGFtcGxlIGZyb20gTWFrZWZpbGUsIEF1dG90b29scywgYW5kCi0gICAgICAgIEVjbGlwc2UtYmFzZWQgcHJvamVjdHMuCisgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+LWJhc2VkIHByb2plY3RzLgogICAgICAgICBTZWUgdGhlCiAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstd29ya2luZy1wcm9qZWN0cyc+VXNpbmcgdGhlIFNESyBUb29sY2hhaW4gRGlyZWN0bHk8L2xpbms+IgogICAgICAgICBjaGFwdGVyIGZvciBtb3JlIGluZm9ybWF0aW9uLgpAQCAtNTQsMjkgKzU0LDI5IEBACiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKLSAgICA8c2VjdGlvbiBpZD0nc2RrLXNldHRpbmctdXAtdG8tdXNlLXRoZS1leHRlbnNpYmxlLXNkayc+Ci0gICAgICAgIDx0aXRsZT5TZXR0aW5nIFVwIHRvIFVzZSB0aGUgRXh0ZW5zaWJsZSBTREs8L3RpdGxlPgorICAgIDxzZWN0aW9uIGlkPSdzZGstaW5zdGFsbGluZy10aGUtZXh0ZW5zaWJsZS1zZGsnPgorICAgICAgICA8dGl0bGU+SW5zdGFsbGluZyB0aGUgRXh0ZW5zaWJsZSBTREs8L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGZpcnN0IHRoaW5nIHlvdSBuZWVkIHRvIGRvIGlzIGluc3RhbGwgdGhlIFNESyBvbiB5b3VyIGhvc3QKLSAgICAgICAgICAgIGRldmVsb3BtZW50IG1hY2hpbmUgYnkgcnVubmluZyB0aGUgPGZpbGVuYW1lPiouc2g8L2ZpbGVuYW1lPgotICAgICAgICAgICAgaW5zdGFsbGF0aW9uIHNjcmlwdC4KKyAgICAgICAgICAgIFRoZSBmaXJzdCB0aGluZyB5b3UgbmVlZCB0byBkbyBpcyBpbnN0YWxsIHRoZSBTREsgb24geW91cgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjaGFyZHdhcmUtYnVpbGQtc3lzdGVtLXRlcm0nPkJ1aWxkIEhvc3Q8L3VsaW5rPgorICAgICAgICAgICAgYnkgcnVubmluZyB0aGUgPGZpbGVuYW1lPiouc2g8L2ZpbGVuYW1lPiBpbnN0YWxsYXRpb24gc2NyaXB0LgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBZb3UgY2FuIGRvd25sb2FkIGEgdGFyYmFsbCBpbnN0YWxsZXIsIHdoaWNoIGluY2x1ZGVzIHRoZQogICAgICAgICAgICAgcHJlLWJ1aWx0IHRvb2xjaGFpbiwgdGhlIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4KICAgICAgICAgICAgIHNjcmlwdCwgdGhlIGludGVybmFsIGJ1aWxkIHN5c3RlbSwgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgIGFuZCBzdXBwb3J0IGZpbGVzIGZyb20gdGhlIGFwcHJvcHJpYXRlIGRpcmVjdG9yeSB1bmRlcgotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1RPT0xDSEFJTl9ETF9VUkw7Jz48L3VsaW5rPi4KLSAgICAgICAgICAgIFRvb2xjaGFpbnMgYXJlIGF2YWlsYWJsZSBmb3IgMzItYml0IGFuZCA2NC1iaXQgeDg2IGRldmVsb3BtZW50Ci0gICAgICAgICAgICBzeXN0ZW1zIGZyb20gdGhlIDxmaWxlbmFtZT5pNjg2PC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICA8ZmlsZW5hbWU+eDg2XzY0PC9maWxlbmFtZT4gZGlyZWN0b3JpZXMsIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICAgIGFuZCBzdXBwb3J0IGZpbGVzIGZyb20gdGhlIGFwcHJvcHJpYXRlCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fVE9PTENIQUlOX0RMX1VSTDsnPnRvb2xjaGFpbjwvdWxpbms+CisgICAgICAgICAgICBkaXJlY3Rvcnkgd2l0aGluIHRoZSBJbmRleCBvZiBSZWxlYXNlcy4KKyAgICAgICAgICAgIFRvb2xjaGFpbnMgYXJlIGF2YWlsYWJsZSBmb3Igc2V2ZXJhbCAzMi1iaXQgYW5kIDY0LWJpdAorICAgICAgICAgICAgYXJjaGl0ZWN0dXJlcyB3aXRoIHRoZSA8ZmlsZW5hbWU+eDg2XzY0PC9maWxlbmFtZT4gZGlyZWN0b3JpZXMsCisgICAgICAgICAgICByZXNwZWN0aXZlbHkuCiAgICAgICAgICAgICBUaGUgdG9vbGNoYWlucyB0aGUgWW9jdG8gUHJvamVjdCBwcm92aWRlcyBhcmUgYmFzZWQgb2ZmIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+IGltYWdlIGFuZCBjb250YWluCisgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4gaW1hZ2VzIGFuZCBjb250YWluCiAgICAgICAgICAgICBsaWJyYXJpZXMgYXBwcm9wcmlhdGUgZm9yIGRldmVsb3BpbmcgYWdhaW5zdCB0aGF0IGltYWdlLgotICAgICAgICAgICAgRWFjaCB0eXBlIG9mIGRldmVsb3BtZW50IHN5c3RlbSBzdXBwb3J0cyBmaXZlIG9yIG1vcmUgdGFyZ2V0Ci0gICAgICAgICAgICBhcmNoaXRlY3R1cmVzLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+CkBAIC04NSw2ICs4NSw3IEBACiAgICAgICAgICAgICBmaWxlbmFtZSBhbmQgdGhlbiBpcyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBhIHN0cmluZwogICAgICAgICAgICAgcmVwcmVzZW50aW5nIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgogICAgICAgICAgICAgQW4gZXh0ZW5zaWJsZSBTREsgaGFzIHRoZSBzdHJpbmcgIi1leHQiIGFzIHBhcnQgb2YgdGhlIG5hbWUuCisgICAgICAgICAgICBGb2xsb3dpbmcgaXMgdGhlIGdlbmVyYWwgZm9ybToKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgcG9reS1nbGliYy08cmVwbGFjZWFibGU+aG9zdF9zeXN0ZW08L3JlcGxhY2VhYmxlPi08cmVwbGFjZWFibGU+aW1hZ2VfdHlwZTwvcmVwbGFjZWFibGU+LTxyZXBsYWNlYWJsZT5hcmNoPC9yZXBsYWNlYWJsZT4tdG9vbGNoYWluLWV4dC08cmVwbGFjZWFibGU+cmVsZWFzZV92ZXJzaW9uPC9yZXBsYWNlYWJsZT4uc2gKIApAQCAtOTMsMTQgKzk0LDE1IEBACiAKICAgICAgICAgICAgICAgICAgICAgaTY4NiBvciB4ODZfNjQuCiAKLSAgICAgICAgIDxyZXBsYWNlYWJsZT5pbWFnZV90eXBlPC9yZXBsYWNlYWJsZT4gaXMgdGhlIGltYWdlIGZvciB3aGljaCB0aGUgU0RLIHdhcyBidWlsdC4KKyAgICAgICAgIDxyZXBsYWNlYWJsZT5pbWFnZV90eXBlPC9yZXBsYWNlYWJsZT4gaXMgdGhlIGltYWdlIGZvciB3aGljaCB0aGUgU0RLIHdhcyBidWlsdDoKKworICAgICAgICAgICAgICAgICAgICBjb3JlLWltYWdlLXNhdG8gb3IgY29yZS1pbWFnZS1taW5pbWFsCiAKICAgICAgICAgIDxyZXBsYWNlYWJsZT5hcmNoPC9yZXBsYWNlYWJsZT4gaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0dW5lZCB0YXJnZXQgYXJjaGl0ZWN0dXJlOgogCi0gICAgICAgICAgICAgICAgICAgIGk1ODYsIHg4Nl82NCwgcG93ZXJwYywgbWlwcywgYXJtdjdhIG9yIGFybXY1dGUKKyAgICAgICAgICAgICAgICAgICAgYWFyY2g2NCwgYXJtdjVlLCBjb3JlMi02NCwgaTU4NiwgbWlwczMycjIsIG1pcHM2NCwgcHBjNzQwMCwgb3IgY29ydGV4YThoZi1uZW9uCiAKLSAgICAgICAgIDxyZXBsYWNlYWJsZT5yZWxlYXNlX3ZlcnNpb248L3JlcGxhY2VhYmxlPiBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHJlbGVhc2UgbnVtYmVyIG9mIHRoZQotICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3Q6CisgICAgICAgICA8cmVwbGFjZWFibGU+cmVsZWFzZV92ZXJzaW9uPC9yZXBsYWNlYWJsZT4gaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSByZWxlYXNlIG51bWJlciBvZiB0aGUgWW9jdG8gUHJvamVjdDoKIAogICAgICAgICAgICAgICAgICAgICAmRElTVFJPOywgJkRJU1RSTzsrc25hcHNob3QKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KQEAgLTEzMSw5ICsxMzMsMTAgQEAKICAgICAgICAgICAgIGhvbWUgZGlyZWN0b3J5LgogICAgICAgICAgICAgWW91IGNhbiBjaG9vc2UgdG8gaW5zdGFsbCB0aGUgZXh0ZW5zaWJsZSBTREsgaW4gYW55IGxvY2F0aW9uIHdoZW4KICAgICAgICAgICAgIHlvdSBydW4gdGhlIGluc3RhbGxlci4KLSAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSBsb2NhdGlvbiB5b3UgY2hvb3NlIG5lZWRzIHRvIGJlIHdyaXRhYmxlIGZvciB3aGljaGV2ZXIKLSAgICAgICAgICAgIHVzZXJzIG5lZWQgdG8gdXNlIHRoZSBTREssIHNpbmNlIGZpbGVzIHdpbGwgbmVlZCB0byBiZSB3cml0dGVuCi0gICAgICAgICAgICB1bmRlciB0aGF0IGRpcmVjdG9yeSBkdXJpbmcgdGhlIG5vcm1hbCBjb3Vyc2Ugb2Ygb3BlcmF0aW9uLgorICAgICAgICAgICAgSG93ZXZlciwgYmVjYXVzZSBmaWxlcyBuZWVkIHRvIGJlIHdyaXR0ZW4gdW5kZXIgdGhhdCBkaXJlY3RvcnkKKyAgICAgICAgICAgIGR1cmluZyB0aGUgbm9ybWFsIGNvdXJzZSBvZiBvcGVyYXRpb24sIHRoZSBsb2NhdGlvbiB5b3UgY2hvb3NlCisgICAgICAgICAgICBmb3IgaW5zdGFsbGF0aW9uIG11c3QgYmUgd3JpdGFibGUgZm9yIHdoaWNoZXZlcgorICAgICAgICAgICAgdXNlcnMgbmVlZCB0byB1c2UgdGhlIFNESy4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgpAQCAtMTQxLDI4ICsxNDQsMzQgQEAKICAgICAgICAgICAgIHRvb2xjaGFpbiB0YXJiYWxsIGZvciBhIDY0LWJpdCB4ODYgZGV2ZWxvcG1lbnQgaG9zdCBzeXN0ZW0gYW5kCiAgICAgICAgICAgICBhIDY0LWJpdCB4ODYgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KICAgICAgICAgICAgIFRoZSBleGFtcGxlIGFzc3VtZXMgdGhlIFNESyBpbnN0YWxsZXIgaXMgbG9jYXRlZCBpbgotICAgICAgICAgICAgPGZpbGVuYW1lPn4vRG93bmxvYWRzLzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPGZpbGVuYW1lPn4vRG93bmxvYWRzLzwvZmlsZW5hbWU+IGFuZCBoYXMgZXhlY3V0aW9uIHJpZ2h0cy4KICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgaGF2ZSB3cml0ZSBwZXJtaXNzaW9ucyBmb3IgdGhlIGRpcmVjdG9yeQogICAgICAgICAgICAgICAgIGludG8gd2hpY2ggeW91IGFyZSBpbnN0YWxsaW5nIHRoZSBTREssIHRoZSBpbnN0YWxsZXIKICAgICAgICAgICAgICAgICBub3RpZmllcyB5b3UgYW5kIGV4aXRzLgotICAgICAgICAgICAgICAgIEJlIHN1cmUgeW91IGhhdmUgd3JpdGUgcGVybWlzc2lvbnMgaW4gdGhlIGRpcmVjdG9yeSBhbmQKLSAgICAgICAgICAgICAgICBydW4gdGhlIGluc3RhbGxlciBhZ2Fpbi4KKyAgICAgICAgICAgICAgICBGb3IgdGhhdCBjYXNlLCBzZXQgdXAgdGhlIHByb3BlciBwZXJtaXNzaW9ucyBpbiB0aGUgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgYW5kIHJ1biB0aGUgaW5zdGFsbGVyIGFnYWluLgogICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIC4vcG9reS1nbGliYy14ODZfNjQtY29yZS1pbWFnZS1taW5pbWFsLWNvcmUyLTY0LXRvb2xjaGFpbi1leHQtJkRJU1RSTzsuc2gKLSAgICAgUG9reSAoWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgRGlzdHJvKSBFeHRlbnNpYmxlIFNESyBpbnN0YWxsZXIgdmVyc2lvbiAmRElTVFJPOwotICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgICAkIC4vRG93bmxvYWRzL3Bva3ktZ2xpYmMteDg2XzY0LWNvcmUtaW1hZ2UtbWluaW1hbC1jb3JlMi02NC10b29sY2hhaW4tZXh0LTIuNS5zaAorICAgICBQb2t5IChZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBEaXN0cm8pIEV4dGVuc2libGUgU0RLIGluc3RhbGxlciB2ZXJzaW9uIDIuNQorICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICBFbnRlciB0YXJnZXQgZGlyZWN0b3J5IGZvciBTREsgKGRlZmF1bHQ6IH4vcG9reV9zZGspOgogICAgICBZb3UgYXJlIGFib3V0IHRvIGluc3RhbGwgdGhlIFNESyB0byAiL2hvbWUvc2NvdHRyaWYvcG9reV9zZGsiLiBQcm9jZWVkW1kvbl0/IFkKLSAgICAgRXh0cmFjdGluZyBTREsuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uZG9uZQorICAgICBFeHRyYWN0aW5nIFNESy4uLi4uLi4uLi4uLi4uZG9uZQogICAgICBTZXR0aW5nIGl0IHVwLi4uCiAgICAgIEV4dHJhY3RpbmcgYnVpbGR0b29scy4uLgogICAgICBQcmVwYXJpbmcgYnVpbGQgc3lzdGVtLi4uCisgICAgIFBhcnNpbmcgcmVjaXBlczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjUyCisgICAgIEluaXRpYWxpc2luZyB0YXNrczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCisgICAgIENoZWNraW5nIHNzdGF0ZSBtaXJyb3Igb2JqZWN0IGF2YWlsYWJpbGl0eTogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCisgICAgIExvYWRpbmcgY2FjaGU6IDEwMCUgfCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCisgICAgIEluaXRpYWxpc2luZyB0YXNrczogMTAwJSB8IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfCBUaW1lOiAwOjAwOjAwCiAgICAgIGRvbmUKICAgICAgU0RLIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBzZXQgdXAgYW5kIGlzIHJlYWR5IHRvIGJlIHVzZWQuCiAgICAgIEVhY2ggdGltZSB5b3Ugd2lzaCB0byB1c2UgdGhlIFNESyBpbiBhIG5ldyBzaGVsbCBzZXNzaW9uLCB5b3UgbmVlZCB0byBzb3VyY2UgdGhlIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBlLmcuCiAgICAgICAkIC4gL2hvbWUvc2NvdHRyaWYvcG9reV9zZGsvZW52aXJvbm1lbnQtc2V0dXAtY29yZTItNjQtcG9reS1saW51eAorCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CkBAIC0xNzIsNyArMTgxLDcgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgdGhlIFNESyBpbnN0YWxsZWQsIHlvdSBtdXN0IHJ1biB0aGUgU0RLIGVudmlyb25tZW50Ci0gICAgICAgICAgICBzZXR1cCBzY3JpcHQgYmVmb3JlIHlvdSBjYW4gYWN0dWFsbHkgdXNlIGl0LgorICAgICAgICAgICAgc2V0dXAgc2NyaXB0IGJlZm9yZSB5b3UgY2FuIGFjdHVhbGx5IHVzZSB0aGUgU0RLLgogICAgICAgICAgICAgVGhpcyBzZXR1cCBzY3JpcHQgcmVzaWRlcyBpbiB0aGUgZGlyZWN0b3J5IHlvdSBjaG9zZSB3aGVuIHlvdQogICAgICAgICAgICAgaW5zdGFsbGVkIHRoZSBTREssIHdoaWNoIGlzIGVpdGhlciB0aGUgZGVmYXVsdAogICAgICAgICAgICAgPGZpbGVuYW1lPnBva3lfc2RrPC9maWxlbmFtZT4gZGlyZWN0b3J5IG9yIHRoZSBkaXJlY3RvcnkgeW91CkBAIC0xOTYsMzIgKzIwNSwxMyBAQAogICAgICBTREsgZW52aXJvbm1lbnQgbm93IHNldCB1cDsgYWRkaXRpb25hbGx5IHlvdSBtYXkgbm93IHJ1biBkZXZ0b29sIHRvIHBlcmZvcm0gZGV2ZWxvcG1lbnQgdGFza3MuCiAgICAgIFJ1biBkZXZ0b29sIC0taGVscCBmb3IgZnVydGhlciBkZXRhaWxzLgogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgV2hlbiB5b3UgcnVuIHRoZSBzZXR1cCBzY3JpcHQsIG1hbnkgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZQotICAgICAgICAgICAgZGVmaW5lZDoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNES1RBUkdFVFNZU1JPT1QnPjxmaWxlbmFtZT5TREtUQVJHRVRTWVNST09UPC9maWxlbmFtZT48L3VsaW5rPiAtIFRoZSBwYXRoIHRvIHRoZSBzeXNyb290IHVzZWQgZm9yIGNyb3NzLWNvbXBpbGF0aW9uCi0gICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QS0dfQ09ORklHX1BBVEgnPjxmaWxlbmFtZT5QS0dfQ09ORklHX1BBVEg8L2ZpbGVuYW1lPjwvdWxpbms+IC0gVGhlIHBhdGggdG8gdGhlIHRhcmdldCBwa2ctY29uZmlnIGZpbGVzCi0gICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DT05GSUdfU0lURSc+PGZpbGVuYW1lPkNPTkZJR19TSVRFPC9maWxlbmFtZT48L3VsaW5rPiAtIEEgR05VIGF1dG9jb25mIHNpdGUgZmlsZSBwcmVjb25maWd1cmVkIGZvciB0aGUgdGFyZ2V0Ci0gICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DQyc+PGZpbGVuYW1lPkNDPC9maWxlbmFtZT48L3VsaW5rPiAtIFRoZSBtaW5pbWFsIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyB0byBydW4gdGhlIEMgY29tcGlsZXIKLSAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNYWCc+PGZpbGVuYW1lPkNYWDwvZmlsZW5hbWU+PC91bGluaz4gLSBUaGUgbWluaW1hbCBjb21tYW5kIGFuZCBhcmd1bWVudHMgdG8gcnVuIHRoZSBDKysgY29tcGlsZXIKLSAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNQUCc+PGZpbGVuYW1lPkNQUDwvZmlsZW5hbWU+PC91bGluaz4gLSBUaGUgbWluaW1hbCBjb21tYW5kIGFuZCBhcmd1bWVudHMgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3NvcgotICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQVMnPjxmaWxlbmFtZT5BUzwvZmlsZW5hbWU+PC91bGluaz4gLSBUaGUgbWluaW1hbCBjb21tYW5kIGFuZCBhcmd1bWVudHMgdG8gcnVuIHRoZSBhc3NlbWJsZXIKLSAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxEJz48ZmlsZW5hbWU+TEQ8L2ZpbGVuYW1lPjwvdWxpbms+IC0gVGhlIG1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHRvIHJ1biB0aGUgbGlua2VyCi0gICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1HREInPjxmaWxlbmFtZT5HREI8L2ZpbGVuYW1lPjwvdWxpbms+IC0gVGhlIG1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHRvIHJ1biB0aGUgR05VIERlYnVnZ2VyCi0gICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TVFJJUCc+PGZpbGVuYW1lPlNUUklQPC9maWxlbmFtZT48L3VsaW5rPiAtIFRoZSBtaW5pbWFsIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyB0byBydW4gJ3N0cmlwJywgd2hpY2ggc3RyaXBzIHN5bWJvbHMKLSAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVJBTkxJQic+PGZpbGVuYW1lPlJBTkxJQjwvZmlsZW5hbWU+PC91bGluaz4gLSBUaGUgbWluaW1hbCBjb21tYW5kIGFuZCBhcmd1bWVudHMgdG8gcnVuICdyYW5saWInCi0gICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1PQkpDT1BZJz48ZmlsZW5hbWU+T0JKQ09QWTwvZmlsZW5hbWU+PC91bGluaz4gLSBUaGUgbWluaW1hbCBjb21tYW5kIGFuZCBhcmd1bWVudHMgdG8gcnVuICdvYmpjb3B5JwotICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItT0JKRFVNUCc+PGZpbGVuYW1lPk9CSkRVTVA8L2ZpbGVuYW1lPjwvdWxpbms+IC0gVGhlIG1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHRvIHJ1biAnb2JqZHVtcCcKLSAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUFSJz48ZmlsZW5hbWU+QVI8L2ZpbGVuYW1lPjwvdWxpbms+IC0gVGhlIG1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHRvIHJ1biAnYXInCi0gICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1OTSc+PGZpbGVuYW1lPk5NPC9maWxlbmFtZT48L3VsaW5rPiAtIFRoZSBtaW5pbWFsIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyB0byBydW4gJ25tJwotICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVEFSR0VUX1BSRUZJWCc+PGZpbGVuYW1lPlRBUkdFVF9QUkVGSVg8L2ZpbGVuYW1lPjwvdWxpbms+IC0gVGhlIHRvb2xjaGFpbiBiaW5hcnkgcHJlZml4IGZvciB0aGUgdGFyZ2V0IHRvb2xzCi0gICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DUk9TU19DT01QSUxFJz48ZmlsZW5hbWU+Q1JPU1NfQ09NUElMRTwvZmlsZW5hbWU+PC91bGluaz4gLSBUaGUgdG9vbGNoYWluIGJpbmFyeSBwcmVmaXggZm9yIHRoZSB0YXJnZXQgdG9vbHMKLSAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNPTkZJR1VSRV9GTEFHUyc+PGZpbGVuYW1lPkNPTkZJR1VSRV9GTEFHUzwvZmlsZW5hbWU+PC91bGluaz4gLSBUaGUgbWluaW1hbCBhcmd1bWVudHMgZm9yIEdOVSBjb25maWd1cmUKLSAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNGTEFHUyc+PGZpbGVuYW1lPkNGTEFHUzwvZmlsZW5hbWU+PC91bGluaz4gLSBTdWdnZXN0ZWQgQyBmbGFncwotICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ1hYRkxBR1MnPjxmaWxlbmFtZT5DWFhGTEFHUzwvZmlsZW5hbWU+PC91bGluaz4gLSBTdWdnZXN0ZWQgQysrIGZsYWdzCi0gICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MREZMQUdTJz48ZmlsZW5hbWU+TERGTEFHUzwvZmlsZW5hbWU+PC91bGluaz4gLSBTdWdnZXN0ZWQgbGlua2VyIGZsYWdzIHdoZW4geW91IHVzZSBDQyB0byBsaW5rCi0gICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DUFBGTEFHUyc+PGZpbGVuYW1lPkNQUEZMQUdTPC9maWxlbmFtZT48L3VsaW5rPiAtIFN1Z2dlc3RlZCBwcmVwcm9jZXNzb3IgZmxhZ3MKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIFJ1bm5pbmcgdGhlIHNldHVwIHNjcmlwdCBkZWZpbmVzIG1hbnkgZW52aXJvbm1lbnQgdmFyaWFibGVzIG5lZWRlZAorICAgICAgICAgICAgaW4gb3JkZXIgdG8gdXNlIHRoZSBTREsgKGUuZy4gPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DQyc+PGZpbGVuYW1lPkNDPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MRCc+PGZpbGVuYW1lPkxEPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgIGFuZCBzbyBmb3J0aCkuCisgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBzZWUgYWxsIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhlIHNjcmlwdAorICAgICAgICAgICAgZXhwb3J0cywgZXhhbWluZSB0aGUgaW5zdGFsbGF0aW9uIGZpbGUgaXRzZWxmLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC0yNDAsMTUgKzIzMCwxNSBAQAogICAgICAgICAgICAgICAgIHRoZSBleHRlbnNpYmxlIFNESy4KICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHRvIGhlbHAgeW91IGVhc2lseQogICAgICAgICAgICAgICAgIGRldmVsb3AgYW55IHByb2plY3Qgd2hvc2UgYnVpbGQgb3V0cHV0IG11c3QgYmUgcGFydCBvZiBhbgotICAgICAgICAgICAgICAgIGltYWdlIGJ1aWx0IHVzaW5nIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgorICAgICAgICAgICAgICAgIGltYWdlIGJ1aWx0IHVzaW5nIHRoZSBidWlsZCBzeXN0ZW0uCiAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGNvbW1hbmQgbGluZSBpcyBvcmdhbml6ZWQKICAgICAgICAgICAgIHNpbWlsYXJseSB0bwotICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiBpbiB0aGF0IGl0IGhhcyBhCi0gICAgICAgICAgICBudW1iZXIgb2Ygc3ViLWNvbW1hbmRzIGZvciBlYWNoIGZ1bmN0aW9uLgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNnaXQnPkdpdDwvdWxpbms+IGluIHRoYXQgaXQKKyAgICAgICAgICAgIGhhcyBhIG51bWJlciBvZiBzdWItY29tbWFuZHMgZm9yIGVhY2ggZnVuY3Rpb24uCiAgICAgICAgICAgICBZb3UgY2FuIHJ1biA8ZmlsZW5hbWU+ZGV2dG9vbCAtLWhlbHA8L2ZpbGVuYW1lPiB0byBzZWUgYWxsIHRoZQogICAgICAgICAgICAgY29tbWFuZHMuCiAgICAgICAgICAgICA8bm90ZT4KQEAgLTI2MCw4ICsyNTAsOCBAQAogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaHJlZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHN1YmNvbW1hbmRzIHRoYXQgcHJvdmlkZQotICAgICAgICAgICAgZW50cnktcG9pbnRzIGludG8gZGV2ZWxvcG1lbnQgYXJlOgorICAgICAgICAgICAgVGhyZWUgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBzdWJjb21tYW5kcyBleGlzdCB0aGF0IHByb3ZpZGUKKyAgICAgICAgICAgIGVudHJ5LXBvaW50cyBpbnRvIGRldmVsb3BtZW50OgogICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPjwvZW1waGFzaXM+OgpAQCAtMjc4LDE3ICsyNjgsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgYW4gdXBkYXRlZCBzZXQgb2Ygc291cmNlIGZpbGVzLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgQXMgd2l0aCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSwgInJlY2lwZXMiIHJlcHJlc2VudCBzb2Z0d2FyZQotICAgICAgICAgICAgcGFja2FnZXMgd2l0aGluIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4uCisgICAgICAgICAgICBBcyB3aXRoIHRoZSBidWlsZCBzeXN0ZW0sICJyZWNpcGVzIiByZXByZXNlbnQgc29mdHdhcmUgcGFja2FnZXMKKyAgICAgICAgICAgIHdpdGhpbiA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+LgogICAgICAgICAgICAgV2hlbiB5b3UgdXNlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+LCBhIHJlY2lwZSBpcwogICAgICAgICAgICAgYXV0b21hdGljYWxseSBjcmVhdGVkLgogICAgICAgICAgICAgV2hlbiB5b3UgdXNlIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+LCB0aGUgc3BlY2lmaWVkCi0gICAgICAgICAgICBleGlzdGluZyByZWNpcGUgaXMgdXNlZCBpbiBvcmRlciB0byBkZXRlcm1pbmUgd2hlcmUgdG8gZ2V0IHRoZSBzb3VyY2UKLSAgICAgICAgICAgIGNvZGUgYW5kIGhvdyB0byBwYXRjaCBpdC4KKyAgICAgICAgICAgIGV4aXN0aW5nIHJlY2lwZSBpcyB1c2VkIGluIG9yZGVyIHRvIGRldGVybWluZSB3aGVyZSB0byBnZXQgdGhlCisgICAgICAgICAgICBzb3VyY2UgY29kZSBhbmQgaG93IHRvIHBhdGNoIGl0LgogICAgICAgICAgICAgSW4gYm90aCBjYXNlcywgYW4gZW52aXJvbm1lbnQgaXMgc2V0IHVwIHNvIHRoYXQgd2hlbiB5b3UgYnVpbGQgdGhlCiAgICAgICAgICAgICByZWNpcGUgYSBzb3VyY2UgdHJlZSB0aGF0IGlzIHVuZGVyIHlvdXIgY29udHJvbCBpcyB1c2VkIGluIG9yZGVyIHRvCiAgICAgICAgICAgICBhbGxvdyB5b3UgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoZSBzb3VyY2UgYXMgZGVzaXJlZC4KLSAgICAgICAgICAgIEJ5IGRlZmF1bHQsIGJvdGggbmV3IHJlY2lwZXMgYW5kIHRoZSBzb3VyY2UgZ28gaW50byBhICJ3b3Jrc3BhY2UiCisgICAgICAgICAgICBCeSBkZWZhdWx0LCBuZXcgcmVjaXBlcyBhbmQgdGhlIHNvdXJjZSBnbyBpbnRvIGEgIndvcmtzcGFjZSIKICAgICAgICAgICAgIGRpcmVjdG9yeSB1bmRlciB0aGUgU0RLLgogICAgICAgICA8L3BhcmE+CiAKQEAgLTMzNSwxMCArMzI1LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZSBhIHJlY2lwZSBiYXNlZCBvbiBleGlzdGluZyBzb3VyY2UgY29kZS48L3BhcmE+CiAKICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkluIGEgc2hhcmVkIGRldmVsb3BtZW50IGVudmlyb25tZW50LCBpdCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgdHlwaWNhbCB3aGVyZSBvdGhlciBkZXZlbG9wZXJzIGFyZSByZXNwb25zaWJsZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGljYWwgZm9yIG90aGVyIGRldmVsb3BlcnMgdG8gYmUgcmVzcG9uc2libGUgZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpb3VzIGFyZWFzIG9mIHNvdXJjZSBjb2RlLgogICAgICAgICAgICAgICAgICAgICAgICAgQXMgYSBkZXZlbG9wZXIsIHlvdSBhcmUgcHJvYmFibHkgaW50ZXJlc3RlZCBpbiB1c2luZwotICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBzb3VyY2UgY29kZSBhcyBwYXJ0IG9mIHlvdXIgZGV2ZWxvcG1lbnQgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgc291cmNlIGNvZGUgYXMgcGFydCBvZiB5b3VyIGRldmVsb3BtZW50IHdpdGhpbgogICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgICBBbGwgeW91IG5lZWQgaXMgYWNjZXNzIHRvIHRoZSBjb2RlLCBhIHJlY2lwZSwgYW5kIGEKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZWQgYXJlYSBpbiB3aGljaCB0byBkbyB5b3VyIHdvcmsuPC9wYXJhPgpAQCAtMzQ2LDEzOCArMzM2LDE2NCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+V2l0aGluIHRoZSBkaWFncmFtLCB0aHJlZSBwb3NzaWJsZSBzY2VuYXJpb3MKICAgICAgICAgICAgICAgICAgICAgICAgIGZlZWQgaW50byB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gd29ya2Zsb3c6CiAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TGVmdDwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbGVmdCBzY2VuYXJpbyByZXByZXNlbnRzIGEgY29tbW9uIHNpdHVhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgZXhpc3QgbG9jYWxseQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbmVlZHMgdG8gYmUgZXh0cmFjdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIHNpdHVhdGlvbiwgeW91IGp1c3QgbGV0IGl0IGdldAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWN0ZWQgdG8gdGhlIGRlZmF1bHQgd29ya3NwYWNlIC0geW91IGRvIG5vdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YW50IGl0IGluIHNvbWUgc3BlY2lmaWMgbG9jYXRpb24gb3V0c2lkZSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya3NwYWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHVzLCBldmVyeXRoaW5nIHlvdSBuZWVkIHdpbGwgYmUgbG9jYXRlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya3NwYWNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxlZnQ8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGxlZnQgc2NlbmFyaW8gaW4gdGhlIGZpZ3VyZSByZXByZXNlbnRzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uIHNpdHVhdGlvbiB3aGVyZSB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3QgbG9jYWxseSBhbmQgbmVlZHMgdG8gYmUgZXh0cmFjdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIHNpdHVhdGlvbiwgdGhlIHNvdXJjZSBjb2RlIGlzIGV4dHJhY3RlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgZGVmYXVsdCB3b3Jrc3BhY2UgLSB5b3UgZG8gbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhbnQgdGhlIGZpbGVzIGluIHNvbWUgc3BlY2lmaWMgbG9jYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0c2lkZSBvZiB0aGUgd29ya3NwYWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHVzLCBldmVyeXRoaW5nIHlvdSBuZWVkIHdpbGwgYmUgbG9jYXRlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgd29ya3NwYWNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCBhZGQgPHJlcGxhY2VhYmxlPnJlY2lwZSBmZXRjaHVyaTwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2l0aCB0aGlzIGNvbW1hbmQsIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlcyBhIHJlY2lwZSBhbmQgYW4gYXBwZW5kIGZpbGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtzcGFjZSBhcyB3ZWxsIGFzIGV4dHJhY3RzIHRoZSB1cHN0cmVhbQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgZmlsZXMgaW50byBhIGxvY2FsIEdpdCByZXBvc2l0b3J5IGFsc28KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aGluIHRoZSA8ZmlsZW5hbWU+c291cmNlczwvZmlsZW5hbWU+IGZvbGRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFjdHMgdGhlIHVwc3RyZWFtIHNvdXJjZSBmaWxlcyBpbnRvIGEgbG9jYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkgd2l0aGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c291cmNlczwvZmlsZW5hbWU+IGZvbGRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNvbW1hbmQgdGhlbiBjcmVhdGVzIGEgcmVjaXBlIG5hbWVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5yZWNpcGU8L3JlcGxhY2VhYmxlPiBhbmQgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JyZXNwb25kaW5nIGFwcGVuZCBmaWxlIGluIHRoZSB3b3Jrc3BhY2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3QgcHJvdmlkZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+cmVjaXBlPC9yZXBsYWNlYWJsZT4sIHRoZSBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VzIGFuIGF0dGVtcHQgdG8gZGV0ZXJtaW5lIHRoZSByZWNpcGUgbmFtZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5NaWRkbGU8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1pZGRsZSBzY2VuYXJpbyBhbHNvIHJlcHJlc2VudHMgYSBzaXR1YXRpb24gd2hlcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNvdXJjZSBjb2RlIGRvZXMgbm90IGV4aXN0IGxvY2FsbHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWlkZGxlPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBtaWRkbGUgc2NlbmFyaW8gaW4gdGhlIGZpZ3VyZSBhbHNvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHJlc2VudHMgYSBzaXR1YXRpb24gd2hlcmUgdGhlIHNvdXJjZSBjb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXMgbm90IGV4aXN0IGxvY2FsbHkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIGNvZGUgaXMgYWdhaW4gdXBzdHJlYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG5lZWRzIHRvIGJlIGV4dHJhY3RlZCB0byBzb21lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsIGFyZWEgLSB0aGlzIHRpbWUgb3V0c2lkZSBvZiB0aGUgZGVmYXVsdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHJlcXVpcmVkLCA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsd2F5cyBjcmVhdGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgR2l0IHJlcG9zaXRvcnkgbG9jYWxseSBkdXJpbmcgdGhlIGV4dHJhY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgcmVxdWlyZWQsIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsd2F5cyBjcmVhdGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIEdpdCByZXBvc2l0b3J5IGxvY2FsbHkgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdXJ0aGVybW9yZSwgdGhlIGZpcnN0IHBvc2l0aW9uYWwgYXJndW1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPiBpbiB0aGlzIGNhc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcyB3aGVyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPiBpbiB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgaWRlbnRpZmllcyB3aGVyZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gY29tbWFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGxvY2F0ZSB0aGUgZXh0cmFjdGVkIGNvZGUgb3V0c2lkZSBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya3NwYWNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIHNwZWNpZnkgYW4gZW1wdHkgZGlyZWN0b3J5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCBhZGQgPHJlcGxhY2VhYmxlPnJlY2lwZSBzcmN0cmVlIGZldGNodXJpPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiBzdW1tYXJ5LCB0aGUgc291cmNlIGNvZGUgaXMgcHVsbGVkIGZyb20KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmZldGNodXJpPC9yZXBsYWNlYWJsZT4gYW5kIGV4dHJhY3RlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSBsb2NhdGlvbiBkZWZpbmVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5mZXRjaHVyaTwvcmVwbGFjZWFibGU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWN0ZWQgaW50byB0aGUgbG9jYXRpb24gZGVmaW5lZCBieQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+c3JjdHJlZTwvcmVwbGFjZWFibGU+IGFzIGEgbG9jYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnkuPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPldpdGhpbiB3b3Jrc3BhY2UsIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlcyBib3RoIHRoZSByZWNpcGUgYW5kIGFuIGFwcGVuZCBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5XaXRoaW4gd29ya3NwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGNyZWF0ZXMgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgbmFtZWQgPHJlcGxhY2VhYmxlPnJlY2lwZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsb25nIHdpdGggYW4gYXNzb2NpYXRlZCBhcHBlbmQgZmlsZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SaWdodDwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmlnaHQgc2NlbmFyaW8gcmVwcmVzZW50cyBhIHNpdHVhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSB0aGUgc291cmNlIHRyZWUgKHNyY3RyZWUpIGhhcyBiZWVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UmlnaHQ8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJpZ2h0IHNjZW5hcmlvIGluIHRoZSBmaWd1cmUgcmVwcmVzZW50cyBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdHVhdGlvbiB3aGVyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPiBoYXMgYmVlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c2x5IHByZXBhcmVkIG91dHNpZGUgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd29ya3NwYWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd29ya3NwYWNlLjwvcGFyYT4KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGNvbW1hbmQgbmFtZXMgdGhlIHJlY2lwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgaWRlbnRpZmllcyB3aGVyZSB0aGUgZXhpc3Rpbmcgc291cmNlIHRyZWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgbG9jYXRlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBjb21tYW5kIHByb3ZpZGVzIGEgbmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBuYW1lIGFuZCBpZGVudGlmaWVzIHRoZSBleGlzdGluZyBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJlZSBsb2NhdGlvbjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGRldnRvb2wgYWRkIDxyZXBsYWNlYWJsZT5yZWNpcGUgc3JjdHJlZTwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNvbW1hbmQgZXhhbWluZXMgdGhlIHNvdXJjZSBjb2RlIGFuZCBjcmVhdGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgcmVjaXBlIGZvciBpdCBwbGFjaW5nIHRoZSByZWNpcGUgaW50byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya3NwYWNlLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGNvbW1hbmQgZXhhbWluZXMgdGhlIHNvdXJjZSBjb2RlIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVzIGEgcmVjaXBlIG5hbWVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5yZWNpcGU8L3JlcGxhY2VhYmxlPiBmb3IgdGhlIGNvZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHBsYWNlcyB0aGUgcmVjaXBlIGludG8gdGhlIHdvcmtzcGFjZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkJlY2F1c2UgdGhlIGV4dHJhY3RlZCBzb3VyY2UgY29kZSBhbHJlYWR5IGV4aXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBkb2VzIG5vdCB0cnkgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsb2NhdGUgaXQgaW50byB0aGUgd29ya3NwYWNlIC0ganVzdCB0aGUgbmV3Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByZWNpcGUgaXMgcGxhY2VkIGluIHRoZSB3b3Jrc3BhY2UuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5CZWNhdXNlIHRoZSBleHRyYWN0ZWQgc291cmNlIGNvZGUgYWxyZWFkeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdHMsIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gZG9lcyBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHRvIHJlbG9jYXRlIHRoZSBzb3VyY2UgY29kZSBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2UgLSBvbmx5IHRoZSBuZXcgcmVjaXBlIGlzIHBsYWNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgd29ya3NwYWNlLjwvcGFyYT4KIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Bc2lkZSBmcm9tIGEgcmVjaXBlIGZvbGRlciwgdGhlIGNvbW1hbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxzbyBjcmVhdGVzIGFuIGFwcGVuZCBmb2xkZXIgYW5kIHBsYWNlcyBhbiBpbml0aWFsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4qLmJiYXBwZW5kPC9maWxlbmFtZT4gd2l0aGluLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHNvIGNyZWF0ZXMgYW4gYXNzb2NpYXRlZCBhcHBlbmQgZm9sZGVyIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZXMgYW4gaW5pdGlhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUgd2l0aGluLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RWRpdCB0aGUgUmVjaXBlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB5b3UgY2FuIHVzZSA8ZmlsZW5hbWU+ZGV2dG9vbCBlZGl0LXJlY2lwZTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5FZGl0IHRoZSBSZWNpcGU8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIDxmaWxlbmFtZT5kZXZ0b29sIGVkaXQtcmVjaXBlPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgIHRvIG9wZW4gdXAgdGhlIGVkaXRvciBhcyBkZWZpbmVkIGJ5IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiRFRElUT1I8L2ZpbGVuYW1lPiBlbnZpcm9ubWVudCB2YXJpYWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG1vZGlmeSB0aGUgZmlsZToKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBkZXZ0b29sIGVkaXQtcmVjaXBlIDxyZXBsYWNlYWJsZT5yZWNpcGU8L3JlcGxhY2VhYmxlPgogICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgRnJvbSB3aXRoaW4gdGhlIGVkaXRvciwgeW91IGNhbiBtYWtlIG1vZGlmaWNhdGlvbnMgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUgdGhhdCB0YWtlIGFmZmVjdCB3aGVuIHlvdSBidWlsZCBpdCBsYXRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZyb20gd2l0aGluIHRoZSBlZGl0b3IsIHlvdSBjYW4gbWFrZSBtb2RpZmljYXRpb25zIHRvCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVjaXBlIHRoYXQgdGFrZSBhZmZlY3Qgd2hlbiB5b3UgYnVpbGQgaXQgbGF0ZXIuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CdWlsZCB0aGUgUmVjaXBlIG9yIFJlYnVpbGQgdGhlIEltYWdlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50IGluIHRoZSBmbG93LCB0aGUgbmV4dCBzdGVwIHlvdQotICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSBkZXBlbmRzIG9uIHdoYXQgeW91IGFyZSBnb2luZyB0byBkbyB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgbmV3IGNvZGUuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IG5lZWQgdG8gdGFrZSB0aGUgYnVpbGQgb3V0cHV0IGFuZCBldmVudHVhbGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlIGl0IHRvIHRoZSB0YXJnZXQgaGFyZHdhcmUsIHlvdSB3b3VsZCB1c2UKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCB0aGUgUmVjaXBlIG9yIFJlYnVpbGQgdGhlIEltYWdlPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbmV4dCBzdGVwIHlvdSB0YWtlIGRlcGVuZHMgb24gd2hhdCB5b3UgYXJlIGdvaW5nCisgICAgICAgICAgICAgICAgICAgICAgICB0byBkbyB3aXRoIHRoZSBuZXcgY29kZS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBuZWVkIHRvIGV2ZW50dWFsbHkgbW92ZSB0aGUgYnVpbGQgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgdGFyZ2V0IGhhcmR3YXJlLCB1c2UgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBjb21tYW5kOgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGRldnRvb2wgYnVpbGQgPHJlcGxhY2VhYmxlPnJlY2lwZTwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgorCiAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5PbiB0aGUgb3RoZXIgaGFuZCwgaWYgeW91IHdhbnQgYW4gaW1hZ2UgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW4gdGhlIHJlY2lwZSdzIHBhY2thZ2VzIGZvciBpbW1lZGlhdGUgZGVwbG95bWVudAotICAgICAgICAgICAgICAgICAgICAgICAgb250byBhIGRldmljZSAoZS5nLiBmb3IgdGVzdGluZyBwdXJwb3NlcyksIHlvdSBjYW4gdXNlCisgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluIHRoZSByZWNpcGUncyBwYWNrYWdlcyBmcm9tIHRoZSB3b3Jrc3BhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpbW1lZGlhdGUgZGVwbG95bWVudCBvbnRvIGEgZGV2aWNlIChlLmcuIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZyBwdXJwb3NlcyksIHlvdSBjYW4gdXNlCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQtaW1hZ2U8L2ZpbGVuYW1lPiBjb21tYW5kOgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGRldnRvb2wgYnVpbGQtaW1hZ2UgPHJlcGxhY2VhYmxlPmltYWdlPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkRlcGxveSB0aGUgQnVpbGQgT3V0cHV0PC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXBsb3kgdGhlIEJ1aWxkIE91dHB1dDwvZW1waGFzaXM+OgogICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3UgdXNlIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZDwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIHRvIGJ1aWxkIG91dCB5b3VyIHJlY2lwZSwgeW91IHByb2JhYmx5IHdhbnQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIHNlZSBpZiB0aGUgcmVzdWx0aW5nIGJ1aWxkIG91dHB1dCB3b3JrcyBhcyBleHBlY3RlZCBvbiB0YXJnZXQKLSAgICAgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgc2VlIGlmIHRoZSByZXN1bHRpbmcgYnVpbGQgb3V0cHV0IHdvcmtzIGFzIGV4cGVjdGVkCisgICAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgdGFyZ2V0IGhhcmR3YXJlLgogICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBzdGVwIGFzc3VtZXMgeW91IGhhdmUgYSBwcmV2aW91c2x5IGJ1aWx0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgdGhhdCBpcyBhbHJlYWR5IGVpdGhlciBydW5uaW5nIGluIFFFTVUgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nIG9uIGFjdHVhbCBoYXJkd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHNvLCBpdCBpcyBhc3N1bWVkIHRoYXQgZm9yIGRlcGxveW1lbnQgb2YgdGhlIGltYWdlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIHRhcmdldCwgU1NIIGlzIGluc3RhbGxlZCBpbiB0aGUgaW1hZ2UgYW5kIGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGltYWdlIGlzIHJ1bm5pbmcgb24gcmVhbCBoYXJkd2FyZSB0aGF0IHlvdSBoYXZlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0d29yayBhY2Nlc3MgdG8gYW5kIGZyb20geW91ciBkZXZlbG9wbWVudCBtYWNoaW5lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHJ1bm5pbmcgb24gYWN0dWFsIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsc28sIGl0IGlzIGFzc3VtZWQgdGhhdCBmb3IgZGVwbG95bWVudCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSB0byB0aGUgdGFyZ2V0LCBTU0ggaXMgaW5zdGFsbGVkIGluIHRoZSBpbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCwgaWYgdGhlIGltYWdlIGlzIHJ1bm5pbmcgb24gcmVhbCBoYXJkd2FyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgaGF2ZSBuZXR3b3JrIGFjY2VzcyB0byBhbmQgZnJvbSB5b3VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgbWFjaGluZS4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZGVwbG95IHlvdXIgYnVpbGQgb3V0cHV0IHRvIHRoYXQgdGFyZ2V0IGhhcmR3YXJlIGJ5Ci0gICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgPGZpbGVuYW1lPmRldnRvb2wgZGVwbG95LXRhcmdldDwvZmlsZW5hbWU+IGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGRlcGxveSB5b3VyIGJ1aWxkIG91dHB1dCB0byB0aGF0IHRhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgaGFyZHdhcmUgYnkgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBkZXBsb3ktdGFyZ2V0PC9maWxlbmFtZT4gY29tbWFuZDoKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBkZXZ0b29sIGRlcGxveS10YXJnZXQgPHJlcGxhY2VhYmxlPnJlY2lwZSB0YXJnZXQ8L3JlcGxhY2VhYmxlPgogICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPiBpcyBhIGxpdmUgdGFyZ2V0IG1hY2hpbmUKLSAgICAgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmcgYXMgYW4gU1NIIHNlcnZlci48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+IGlzIGEgbGl2ZSB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgcnVubmluZyBhcyBhbiBTU0ggc2VydmVyLjwvcGFyYT4KIAotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+WW91IGNhbiwgb2YgY291cnNlLCBhbHNvIGRlcGxveSB0aGUgaW1hZ2UgeW91IGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQtaW1hZ2U8L2ZpbGVuYW1lPiBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICB0byBhY3R1YWwgaGFyZHdhcmUuCi0gICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGRvZXMgbm90IHByb3ZpZGUgYQotICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgY29tbWFuZCB0aGF0IGFsbG93cyB5b3UgdG8gZG8gdGhpcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4sIG9mIGNvdXJzZSwgYWxzbyBkZXBsb3kgdGhlIGltYWdlIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgdG8gYWN0dWFsIGhhcmR3YXJlIGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQtaW1hZ2U8L2ZpbGVuYW1lPiBjb21tYW5kLgorICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBkb2VzIG5vdCBwcm92aWRlCisgICAgICAgICAgICAgICAgICAgICAgICBhIHNwZWNpZmljIGNvbW1hbmQgdGhhdCBhbGxvd3MgeW91IHRvIGRlcGxveSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlIHRvIGFjdHVhbCBoYXJkd2FyZS4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RmluaXNoIFlvdXIgV29yayBXaXRoIHRoZSBSZWNpcGU8L2VtcGhhc2lzPjoKQEAgLTQ5NCw4ICs1MTAsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgR2l0IHJlcG9zaXRvcnkgaW4gdGhlIHNvdXJjZSB0cmVlLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KIAotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QXMgbWVudGlvbmVkLCB0aGUgPGZpbGVuYW1lPmRldnRvb2wgZmluaXNoPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgbW92ZXMgdGhlIGZpbmFsIHJlY2lwZSB0byBpdHMgcGVybWFuZW50IGxheWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QXMgbWVudGlvbmVkLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGZpbmlzaDwvZmlsZW5hbWU+IGNvbW1hbmQgbW92ZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCByZWNpcGUgdG8gaXRzIHBlcm1hbmVudCBsYXllci4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QXMgYSBmaW5hbCBwcm9jZXNzIG9mIHRoZQpAQCAtNTIwLDIxICs1MzcsMjAgQEAKIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+IGNvbW1hbmQgcHJlcGFyZXMgdGhlCi0gICAgICAgICAgICAgICAgd2F5IHRvIHdvcmsgb24gZXhpc3RpbmcgY29kZSB0aGF0IGFscmVhZHkgaGFzIGEgcmVjaXBlIGluCi0gICAgICAgICAgICAgICAgcGxhY2UuCi0gICAgICAgICAgICAgICAgVGhlIGNvbW1hbmQgaXMgZmxleGlibGUgZW5vdWdoIHRvIGFsbG93IHlvdSB0byBleHRyYWN0IGNvZGUsCi0gICAgICAgICAgICAgICAgc3BlY2lmeSB0aGUgZXhpc3RpbmcgcmVjaXBlLCBhbmQga2VlcCB0cmFjayBvZiBhbmQgZ2F0aGVyIGFueQotICAgICAgICAgICAgICAgIHBhdGNoIGZpbGVzIGZyb20gb3RoZXIgZGV2ZWxvcGVycyB0aGF0IGFyZQotICAgICAgICAgICAgICAgIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29kZS4KKyAgICAgICAgICAgICAgICB3YXkgdG8gd29yayBvbiBleGlzdGluZyBjb2RlIHRoYXQgYWxyZWFkeSBoYXMgYSBsb2NhbCByZWNpcGUgaW4KKyAgICAgICAgICAgICAgICBwbGFjZSB0aGF0IGlzIHVzZWQgdG8gYnVpbGQgdGhlIHNvZnR3YXJlLgorICAgICAgICAgICAgICAgIFRoZSBjb21tYW5kIGlzIGZsZXhpYmxlIGVub3VnaCB0byBhbGxvdyB5b3UgdG8gZXh0cmFjdCBjb2RlCisgICAgICAgICAgICAgICAgZnJvbSBhbiB1cHN0cmVhbSBzb3VyY2UsIHNwZWNpZnkgdGhlIGV4aXN0aW5nIHJlY2lwZSwgYW5kCisgICAgICAgICAgICAgICAga2VlcCB0cmFjayBvZiBhbmQgZ2F0aGVyIGFueSBwYXRjaCBmaWxlcyBmcm9tIG90aGVyIGRldmVsb3BlcnMKKyAgICAgICAgICAgICAgICB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggdGhlIGNvZGUuCiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB5b3VyIHBhcnRpY3VsYXIgc2NlbmFyaW8sIHRoZSBhcmd1bWVudHMgYW5kIG9wdGlvbnMKICAgICAgICAgICAgICAgICB5b3UgdXNlIHdpdGggPGZpbGVuYW1lPmRldnRvb2wgbW9kaWZ5PC9maWxlbmFtZT4gZm9ybSBkaWZmZXJlbnQKICAgICAgICAgICAgICAgICBjb21iaW5hdGlvbnMuCi0gICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBkaWFncmFtIHNob3dzIGNvbW1vbiBkZXZlbG9wbWVudCBmbG93cwotICAgICAgICAgICAgICAgIHlvdSB3b3VsZCB1c2Ugd2l0aCB0aGUgPGZpbGVuYW1lPmRldnRvb2wgbW9kaWZ5PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBjb21tYW5kOgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZGlhZ3JhbSBzaG93cyBjb21tb24gZGV2ZWxvcG1lbnQgZmxvd3MgZm9yIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+IGNvbW1hbmQ6CiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgpAQCAtNTQzLDE0MCArNTU5LDE4MSBAQAogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UHJlcGFyaW5nIHRvIE1vZGlmeSB0aGUgQ29kZTwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UHJlcGFyaW5nIHRvIE1vZGlmeSB0aGUgQ29kZTwvZW1waGFzaXM+OgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRvcCBwYXJ0IG9mIHRoZSBmbG93IHNob3dzIHRocmVlIHNjZW5hcmlvcyBieSB3aGljaAogICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNvdWxkIHVzZSA8ZmlsZW5hbWU+ZGV2dG9vbCBtb2RpZnk8L2ZpbGVuYW1lPiB0bwogICAgICAgICAgICAgICAgICAgICAgICAgcHJlcGFyZSB0byB3b3JrIG9uIHNvdXJjZSBmaWxlcy4KICAgICAgICAgICAgICAgICAgICAgICAgIEVhY2ggc2NlbmFyaW8gYXNzdW1lcyB0aGUgZm9sbG93aW5nOgogICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIHJlY2lwZSBleGlzdHMgaW4gc29tZSBsYXllciBleHRlcm5hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZSBleGlzdHMgbG9jYWxseSBpbiBhIGxheWVyIGV4dGVybmFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHdvcmtzcGFjZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBzb3VyY2UgZmlsZXMgZXhpc3QgdXBzdHJlYW0gaW4gYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBzb3VyY2UgZmlsZXMgZXhpc3QgZWl0aGVyIHVwc3RyZWFtIGluIGFuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuLWV4dHJhY3RlZCBzdGF0ZSBvciBsb2NhbGx5IGluIGEgcHJldmlvdXNseQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWN0ZWQgc3RhdGUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdHlwaWNhbCBzaXR1YXRpb24gaXMgd2hlcmUgYW5vdGhlciBkZXZlbG9wZXIgaGFzCi0gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIHNvbWUgbGF5ZXIgZm9yIHVzZSB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCBhIGxheWVyIGZvciB1c2Ugd2l0aCB0aGUgWW9jdG8gUHJvamVjdCBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWlyIHJlY2lwZSBhbHJlYWR5IHJlc2lkZXMgaW4gdGhhdCBsYXllci4KICAgICAgICAgICAgICAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGVpciBzb3VyY2UgY29kZSBpcyByZWFkaWx5IGF2YWlsYWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgZWl0aGVyIHVwc3RyZWFtIG9yIGxvY2FsbHkuCiAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+TGVmdDwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbGVmdCBzY2VuYXJpbyByZXByZXNlbnRzIGEgY29tbW9uIHNpdHVhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSB0aGUgc291cmNlIGNvZGUgZG9lcyBub3QgZXhpc3QgbG9jYWxseQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbmVlZHMgdG8gYmUgZXh0cmFjdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxlZnQ8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGxlZnQgc2NlbmFyaW8gaW4gdGhlIGZpZ3VyZSByZXByZXNlbnRzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uIHNpdHVhdGlvbiB3aGVyZSB0aGUgc291cmNlIGNvZGUgZG9lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgZXhpc3QgbG9jYWxseSBhbmQgaXQgbmVlZHMgdG8gYmUgZXh0cmFjdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gYW4gdXBzdHJlYW0gc291cmNlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIHNpdHVhdGlvbiwgdGhlIHNvdXJjZSBpcyBleHRyYWN0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50byB0aGUgZGVmYXVsdCB3b3Jrc3BhY2UgbG9jYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludG8gdGhlIGRlZmF1bHQgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2UgbG9jYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGUsIGluIHRoaXMgc2NlbmFyaW8sIGlzIGluIGl0cyBvd24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIgb3V0c2lkZSB0aGUgd29ya3NwYWNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLTwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPmxheWVybmFtZTwvcmVwbGFjZWFibGU+KS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgY29tbWFuZCBpZGVudGlmaWVzIHRoZSByZWNpcGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGJ5IGRlZmF1bHQgZXh0cmFjdHMgdGhlIHNvdXJjZSBmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBjb21tYW5kIGlkZW50aWZpZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSBhbmQsIGJ5IGRlZmF1bHQsIGV4dHJhY3RzIHRoZSBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBkZXZ0b29sIG1vZGlmeSA8cmVwbGFjZWFibGU+cmVjaXBlPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmNlIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT5sb2NhdGVzIHRoZSByZWNpcGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0IHVzZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPmxvY2F0ZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSwgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB1c2VzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUncwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIGxvY2F0ZSB0aGUgc291cmNlIGNvZGUgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFueSBsb2NhbCBwYXRjaCBmaWxlcyBmcm9tIG90aGVyIGRldmVsb3BlcnMgYXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbm5vdCBwcm92aWRlIGFuIFVSTCBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5zcmN0cmVlPC9yZXBsYWNlYWJsZT4gd2hlbiB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+IGNvbW1hbmQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2l0aCB0aGlzIHNjZW5hcmlvLCBob3dldmVyLCBzaW5jZSBubwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+c3JjdHJlZTwvcmVwbGFjZWFibGU+IGFyZ3VtZW50IGV4aXN0cywgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+IGNvbW1hbmQgYnkgZGVmYXVsdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWN0cyB0aGUgc291cmNlIGZpbGVzIHRvIGEgR2l0IHN0cnVjdHVyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIHRoZSBsb2NhdGlvbiBmb3IgdGhlIGV4dHJhY3RlZCBzb3VyY2UgaXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgYXJlYSB3aXRoaW4gdGhlIHdvcmtzcGFjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGF0IHRoZSBjb21tYW5kIHNldHMgdXAgYm90aCB0aGUgc291cmNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgYW5kIGFuIGFwcGVuZCBmaWxlIHdpdGhpbiB0aGUgd29ya3NwYWNlIHdpdGggdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSByZW1haW5pbmcgaW4gaXRzIG9yaWdpbmFsIGxvY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnRzIHRvIGxvY2F0ZSB0aGUgc291cmNlIGNvZGUgYW5kIGFueQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbCBwYXRjaCBmaWxlcyBmcm9tIG90aGVyIGRldmVsb3BlcnMuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPldpdGggdGhpcyBzY2VuYXJpbywgbm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPiBhcmd1bWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+IGNvbW1hbmQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZXh0cmFjdCB0aGUgc291cmNlIGZpbGVzIHBvaW50ZWQgdG8gYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gc3RhdGVtZW50cyBpbnRvIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWwgR2l0IHN0cnVjdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIHRoZSBsb2NhdGlvbiBmb3IgdGhlIGV4dHJhY3RlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgaXMgdGhlIGRlZmF1bHQgYXJlYSB3aXRoaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd29ya3NwYWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVzdWx0IGlzIHRoYXQgdGhlIGNvbW1hbmQgc2V0cyB1cCBib3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UgY29kZSBhbmQgYW4gYXBwZW5kIGZpbGUgd2l0aGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2Ugd2hpbGUgdGhlIHJlY2lwZSByZW1haW5zIGluIGl0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbCBsb2NhdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5NaWRkbGU8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1pZGRsZSBzY2VuYXJpbyByZXByZXNlbnRzIGEgc2l0dWF0aW9uIHdoZXJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UgY29kZSBhbHNvIGRvZXMgbm90IGV4aXN0IGxvY2FsbHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWlkZGxlPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBtaWRkbGUgc2NlbmFyaW8gaW4gdGhlIGZpZ3VyZSByZXByZXNlbnRzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0dWF0aW9uIHdoZXJlIHRoZSBzb3VyY2UgY29kZSBhbHNvIGRvZXMgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0IGxvY2FsbHkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIGNvZGUgaXMgYWdhaW4gdXBzdHJlYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG5lZWRzIHRvIGJlIGV4dHJhY3RlZCB0byBzb21lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsIGFyZWEgYXMgYSBHaXQgcmVwb3NpdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZSwgaW4gdGhpcyBzY2VuYXJpbywgaXMgYWdhaW4gaW4gaXRzIG93bgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllciBvdXRzaWRlIHRoZSB3b3Jrc3BhY2UuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVjaXBlLCBpbiB0aGlzIHNjZW5hcmlvLCBpcyBhZ2FpbiBsb2NhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgaW4gaXRzIG93biBsYXllciBvdXRzaWRlIHRoZSB3b3Jrc3BhY2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGNvbW1hbmQgdGVsbHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB3aGF0IHJlY2lwZSB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIHRvIHdvcmsgYW5kLCBpbiB0aGlzIGNhc2UsIGlkZW50aWZpZXMgYSBsb2NhbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmVhIGZvciB0aGUgZXh0cmFjdGVkIHNvdXJjZSBmaWxlcyB0aGF0IGlzIG91dHNpZGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGRlZmF1bHQgd29ya3NwYWNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCB0byB3b3JrIGFuZCwgaW4gdGhpcyBjYXNlLCBpZGVudGlmaWVzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWwgYXJlYSBmb3IgdGhlIGV4dHJhY3RlZCBzb3VyY2UgZmlsZXMgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBvdXRzaWRlIG9mIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd29ya3NwYWNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCBtb2RpZnkgPHJlcGxhY2VhYmxlPnJlY2lwZSBzcmN0cmVlPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgcHJvdmlkZSBhIFVSTCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5zcmN0cmVlPC9yZXBsYWNlYWJsZT4gdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXMgd2l0aCBhbGwgZXh0cmFjdGlvbnMsIHRoZSBjb21tYW5kIHVzZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlY2lwZSdzIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gdG8gbG9jYXRlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgZmlsZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uY2UgdGhlIGZpbGVzIGFyZSBsb2NhdGVkLCB0aGUgY29tbWFuZCBieSBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhY3RzIHRoZW0uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZpZGluZyB0aGUgPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudCBpbnN0cnVjdHMgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiB3aGVyZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBwbGFjZSB0aGUgZXh0cmFjdGVkIHNvdXJjZS48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByZWNpcGUncyA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudHMgdG8gbG9jYXRlIHRoZSBzb3VyY2UgZmlsZXMgYW5kIGFueQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NvY2lhdGVkIHBhdGNoIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHRoZSBmaWxlcyBhcmUgbG9jYXRlZCwgdGhlIGNvbW1hbmQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBleHRyYWN0cyB0aGVtIGludG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPi48L3BhcmE+CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+V2l0aGluIHdvcmtzcGFjZSwgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVzIGFuIGFwcGVuZCBmaWxlIGZvciB0aGUgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5XaXRoaW4gd29ya3NwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGNyZWF0ZXMgYW4gYXBwZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgZm9yIHRoZSByZWNpcGUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGUgcmVtYWlucyBpbiBpdHMgb3JpZ2luYWwgbG9jYXRpb24gYnV0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzb3VyY2UgZmlsZXMgYXJlIGV4dHJhY3RlZCB0byB0aGUgbG9jYXRpb24geW91Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVkIHdpdGggPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNvdXJjZSBmaWxlcyBhcmUgZXh0cmFjdGVkIHRvIHRoZSBsb2NhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3UgcHJvdmlkZSB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5zcmN0cmVlPC9yZXBsYWNlYWJsZT4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UmlnaHQ8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJpZ2h0IHNjZW5hcmlvIHJlcHJlc2VudHMgYSBzaXR1YXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgdGhlIHNvdXJjZSB0cmVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8cmVwbGFjZWFibGU+c3JjdHJlZTwvcmVwbGFjZWFibGU+KSBleGlzdHMgYXMgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c2x5IGV4dHJhY3RlZCBHaXQgc3RydWN0dXJlIG91dHNpZGUgb2YKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gd29ya3NwYWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJpZ2h0PC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByaWdodCBzY2VuYXJpbyBpbiB0aGUgZmlndXJlIHJlcHJlc2VudHMgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb24gd2hlcmUgdGhlIHNvdXJjZSB0cmVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8cmVwbGFjZWFibGU+c3JjdHJlZTwvcmVwbGFjZWFibGU+KSBhbHJlYWR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0cyBsb2NhbGx5IGFzIGEgcHJldmlvdXNseSBleHRyYWN0ZWQgR2l0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZSBvdXRzaWRlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHdvcmtzcGFjZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUgcmVjaXBlIGFsc28gZXhpc3RzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V3aGVyZSBpbiBpdHMgb3duIGxheWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNld2hlcmUgbG9jYWxseSBpbiBpdHMgb3duIGxheWVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBjb21tYW5kIHRlbGxzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gdGhlIHJlY2lwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHdoaWNoIHRvIHdvcmssIHVzZXMgdGhlICItbiIgb3B0aW9uIHRvIGluZGljYXRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBkb2VzIG5vdCBuZWVkIHRvIGJlIGV4dHJhY3RlZCwgYW5kIHVzZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPiB0byBwb2ludCB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNseSBleHRyYWN0ZWQgc291cmNlIGZpbGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHdoaWNoIHRvIHdvcmssIHVzZXMgdGhlICItbiIgb3B0aW9uIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljYXRlIHNvdXJjZSBkb2VzIG5vdCBuZWVkIHRvIGJlIGV4dHJhY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHVzZXMgPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPiB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludCB0byB0aGUgcHJldmlvdXNseSBleHRyYWN0ZWQgc291cmNlIGZpbGVzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCBtb2RpZnkgLW4gPHJlcGxhY2VhYmxlPnJlY2lwZSBzcmN0cmVlPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+T25jZSB0aGUgY29tbWFuZCBmaW5pc2hlcywgaXQgY3JlYXRlcyBvbmx5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuIGFwcGVuZCBmaWxlIGZvciB0aGUgcmVjaXBlIGluIHRoZSB3b3Jrc3BhY2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuIGFwcGVuZCBmaWxlIGZvciB0aGUgcmVjaXBlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHdvcmtzcGFjZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlY2lwZSBhbmQgdGhlIHNvdXJjZSBjb2RlIHJlbWFpbiBpbiB0aGVpcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbCBsb2NhdGlvbnMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RWRpdCB0aGUgU291cmNlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHVzZWQgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIG1vZGlmeTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kLCB5b3UgYXJlIGZyZWUgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoZSBzb3VyY2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RWRpdCB0aGUgU291cmNlPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHVzZWQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBtb2RpZnk8L2ZpbGVuYW1lPiBjb21tYW5kLCB5b3UgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICBmcmVlIHRvIG1ha2UgY2hhbmdlcyB0byB0aGUgc291cmNlIGZpbGVzLgogICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgYW55IGVkaXRvciB5b3UgbGlrZSB0byBtYWtlIGFuZCBzYXZlCiAgICAgICAgICAgICAgICAgICAgICAgICB5b3VyIHNvdXJjZSBjb2RlIG1vZGlmaWNhdGlvbnMuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5CdWlsZCB0aGUgUmVjaXBlPC9lbXBoYXNpcz46Ci0gICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHVwZGF0ZWQgdGhlIHNvdXJjZSBmaWxlcywgeW91IGNhbiBidWlsZAotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBSZWNpcGUgb3IgUmVidWlsZCB0aGUgSW1hZ2U8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBuZXh0IHN0ZXAgeW91IHRha2UgZGVwZW5kcyBvbiB3aGF0IHlvdSBhcmUgZ29pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGRvIHdpdGggdGhlIG5ldyBjb2RlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IG5lZWQgdG8gZXZlbnR1YWxseSBtb3ZlIHRoZSBidWlsZCBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSB0YXJnZXQgaGFyZHdhcmUsIHVzZSB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBidWlsZCA8cmVwbGFjZWFibGU+cmVjaXBlPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPk9uIHRoZSBvdGhlciBoYW5kLCBpZiB5b3Ugd2FudCBhbiBpbWFnZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbiB0aGUgcmVjaXBlJ3MgcGFja2FnZXMgZnJvbSB0aGUgd29ya3NwYWNlCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW1tZWRpYXRlIGRlcGxveW1lbnQgb250byBhIGRldmljZSAoZS5nLiBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RpbmcgcHVycG9zZXMpLCB5b3UgY2FuIHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkLWltYWdlPC9maWxlbmFtZT4gY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIGJ1aWxkLWltYWdlIDxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5EZXBsb3kgdGhlIEJ1aWxkIE91dHB1dDwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RGVwbG95IHRoZSBCdWlsZCBPdXRwdXQ8L2VtcGhhc2lzPjoKICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHVzZSB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCB0byBidWlsZCBvdXQgeW91ciByZWNpcGUsIHlvdSBwcm9iYWJseSB3YW50IHRvIHNlZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhlIHJlc3VsdGluZyBidWlsZCBvdXRwdXQgd29ya3MgYXMgZXhwZWN0ZWQgb24gdGFyZ2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICBoYXJkd2FyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgdG8gYnVpbGQgb3V0IHlvdXIgcmVjaXBlLCB5b3UgcHJvYmFibHkgd2FudCB0bworICAgICAgICAgICAgICAgICAgICAgICAgc2VlIGlmIHRoZSByZXN1bHRpbmcgYnVpbGQgb3V0cHV0IHdvcmtzIGFzIGV4cGVjdGVkCisgICAgICAgICAgICAgICAgICAgICAgICBvbiB0YXJnZXQgaGFyZHdhcmUuCiAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHN0ZXAgYXNzdW1lcyB5b3UgaGF2ZSBhIHByZXZpb3VzbHkgYnVpbHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSB0aGF0IGlzIGFscmVhZHkgZWl0aGVyIHJ1bm5pbmcgaW4gUUVNVSBvcgpAQCAtNjg2LDE5ICs3NDMsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgaW1hZ2UgaXMgcnVubmluZyBvbiByZWFsIGhhcmR3YXJlIHRoYXQgeW91IGhhdmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXR3b3JrIGFjY2VzcyB0byBhbmQgZnJvbSB5b3VyIGRldmVsb3BtZW50IG1hY2hpbmUuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGRlcGxveSB5b3VyIGJ1aWxkIG91dHB1dCB0byB0aGF0IHRhcmdldCBoYXJkd2FyZSBieQotICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGRlcGxveS10YXJnZXQ8L2ZpbGVuYW1lPiBjb21tYW5kOgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBkZXBsb3kgeW91ciBidWlsZCBvdXRwdXQgdG8gdGhhdCB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlIGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgZGVwbG95LXRhcmdldDwvZmlsZW5hbWU+IGNvbW1hbmQ6CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCBkZXBsb3ktdGFyZ2V0IDxyZXBsYWNlYWJsZT5yZWNpcGUgdGFyZ2V0PC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4gaXMgYSBsaXZlIHRhcmdldCBtYWNoaW5lCi0gICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nIGFzIGFuIFNTSCBzZXJ2ZXIuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPiBpcyBhIGxpdmUgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lIHJ1bm5pbmcgYXMgYW4gU1NIIHNlcnZlci48L3BhcmE+CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4sIG9mIGNvdXJzZSwgYWxzbyBkZXBsb3kgdGhlIGltYWdlIHlvdSBidWlsZAotICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkLWltYWdlPC9maWxlbmFtZT4gY29tbWFuZAotICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWN0dWFsIGhhcmR3YXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBkb2VzIG5vdCBwcm92aWRlIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIGNvbW1hbmQgdGhhdCBhbGxvd3MgeW91IHRvIGRvIHRoaXMuCisgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgY2FuLCBvZiBjb3Vyc2UsIHVzZSBvdGhlciBtZXRob2RzIHRvIGRlcGxveQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGltYWdlIHlvdSBidWlsdCB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkLWltYWdlPC9maWxlbmFtZT4gY29tbWFuZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsIGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBkb2VzIG5vdCBwcm92aWRlCisgICAgICAgICAgICAgICAgICAgICAgICBhIHNwZWNpZmljIGNvbW1hbmQgdG8gZGVwbG95IHRoZSBpbWFnZSB0byBhY3R1YWwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GaW5pc2ggWW91ciBXb3JrIFdpdGggdGhlIFJlY2lwZTwvZW1waGFzaXM+OgpAQCAtNzA3LDI4ICs3NjcsMzAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIEdpdCByZXBvc2l0b3J5LCB1cGRhdGVzIHRoZSByZWNpcGUgdG8gcG9pbnQgdG8gdGhlbQogICAgICAgICAgICAgICAgICAgICAgICAgKG9yIGNyZWF0ZXMgYSA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZSB0byBkbwogICAgICAgICAgICAgICAgICAgICAgICAgc28sIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWVkIGRlc3RpbmF0aW9uIGxheWVyKSwgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGVuIHJlc2V0cyB0aGUgcmVjaXBlIHNvIHRoYXQgdGhlIHJlY2lwZSBpcyBidWlsdCBub3JtYWxseQotICAgICAgICAgICAgICAgICAgICAgICAgcmF0aGVyIHRoYW4gZnJvbSB0aGUgd29ya3NwYWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiByZXNldHMgdGhlIHJlY2lwZSBzbyB0aGF0IHRoZSByZWNpcGUgaXMgYnVpbHQKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGx5IHJhdGhlciB0aGFuIGZyb20gdGhlIHdvcmtzcGFjZS4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBkZXZ0b29sIGZpbmlzaCA8cmVwbGFjZWFibGU+cmVjaXBlIGxheWVyPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFueSBjaGFuZ2VzIHlvdSB3YW50IHRvIHR1cm4gaW50byBwYXRjaGVzIG11c3QgYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXR0ZWQgdG8gdGhlIEdpdCByZXBvc2l0b3J5IGluIHRoZSBzb3VyY2UgdHJlZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFnZWQgYW5kIGNvbW1pdHRlZCB3aXRoaW4gdGhlIGxvY2FsIEdpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgYmVmb3JlIHlvdSB1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgZmluaXNoPC9maWxlbmFtZT4gY29tbWFuZC4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CiAKICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkJlY2F1c2UgdGhlcmUgaXMgbm8gbmVlZCB0byBtb3ZlIHRoZSByZWNpcGUsCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBmaW5pc2g8L2ZpbGVuYW1lPiBlaXRoZXIgdXBkYXRlcyB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsIHJlY2lwZSBpbiB0aGUgb3JpZ2luYWwgbGF5ZXIgb3IgdGhlIGNvbW1hbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZXMgYSA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gaW4gYSBkaWZmZXJlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyIGFzIHByb3ZpZGVkIGJ5IDxyZXBsYWNlYWJsZT5sYXllcjwvcmVwbGFjZWFibGU+LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlcyBhIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlIGluIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVudCBsYXllciBhcyBwcm92aWRlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmxheWVyPC9yZXBsYWNlYWJsZT4uPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5BcyBhIGZpbmFsIHByb2Nlc3Mgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBmaW5pc2g8L2ZpbGVuYW1lPiBjb21tYW5kLCB0aGUgc3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBzdGFuZGFyZCBsYXllcnMgYW5kIHRoZSB1cHN0cmVhbSBzb3VyY2UgaXMKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RvcmVkIHNvIHRoYXQgeW91IGNhbiBidWlsZCB0aGUgcmVjaXBlIGZyb20gdGhvc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGFyZWFzIHJhdGhlciB0aGFuIHRoZSB3b3Jrc3BhY2UuCisgICAgICAgICAgICAgICAgICAgICAgICBhcmVhcyByYXRoZXIgdGhhbiBmcm9tIHRoZSB3b3Jrc3BhY2UuCiAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgPGZpbGVuYW1lPmRldnRvb2wgcmVzZXQ8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgdG8gcHV0IHRoaW5ncyBiYWNrIHNob3VsZCB5b3UgZGVjaWRlIHlvdQpAQCAtNzQ1LDIyICs4MDcsMzYgQEAKICAgICAgICAgICAgIDx0aXRsZT5Vc2UgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IHRvIENyZWF0ZSBhIFZlcnNpb24gb2YgdGhlIFJlY2lwZSB0aGF0IFN1cHBvcnRzIGEgTmV3ZXIgVmVyc2lvbiBvZiB0aGUgU29mdHdhcmU8L3RpdGxlPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IGNvbW1hbmQgdXBkYXRlcwotICAgICAgICAgICAgICAgIGFuIGV4aXN0aW5nIHJlY2lwZSBzbyB0aGF0IHlvdSBjYW4gYnVpbGQgaXQgZm9yIGFuIHVwZGF0ZWQKLSAgICAgICAgICAgICAgICBzZXQgb2Ygc291cmNlIGZpbGVzLgotICAgICAgICAgICAgICAgIFRoZSBjb21tYW5kIGlzIGZsZXhpYmxlIGVub3VnaCB0byBhbGxvdyB5b3UgdG8gc3BlY2lmeQotICAgICAgICAgICAgICAgIHNvdXJjZSBjb2RlIHJldmlzaW9uIGFuZCB2ZXJzaW9uaW5nIHNjaGVtZXMsIGV4dHJhY3QgY29kZSBpbnRvCi0gICAgICAgICAgICAgICAgb3Igb3V0IG9mIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHdvcmtzcGFjZSwgYW5kCi0gICAgICAgICAgICAgICAgd29yayB3aXRoIGFueSBzb3VyY2UgZmlsZSBmb3JtcyB0aGF0IHRoZSBmZXRjaGVycyBzdXBwb3J0LgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4gY29tbWFuZCB1cGdyYWRlcworICAgICAgICAgICAgICAgIGFuIGV4aXN0aW5nIHJlY2lwZSB0byB0aGF0IG9mIGEgbW9yZSB1cC10by1kYXRlIHZlcnNpb24KKyAgICAgICAgICAgICAgICBmb3VuZCB1cHN0cmVhbS4KKyAgICAgICAgICAgICAgICBUaHJvdWdob3V0IHRoZSBsaWZlIG9mIHNvZnR3YXJlLCByZWNpcGVzIGNvbnRpbnVhbGx5IHVuZGVyZ28KKyAgICAgICAgICAgICAgICB2ZXJzaW9uIHVwZ3JhZGVzIGJ5IHRoZWlyIHVwc3RyZWFtIHB1Ymxpc2hlcnMuCisgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHdvcmtmbG93IHRvIG1ha2Ugc3VyZSB5b3VyIHJlY2lwZXMgeW91IGFyZSB1c2luZyBmb3IgYnVpbGRzCisgICAgICAgICAgICAgICAgYXJlIHVwLXRvLWRhdGUgd2l0aCB0aGVpciB1cHN0cmVhbSBjb3VudGVycGFydHMuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFNldmVyYWwgbWV0aG9kcyBleGlzdCBieSB3aGljaCB5b3UgY2FuIHVwZ3JhZGUgcmVjaXBlcyAtCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPiBoYXBwZW5zIHRvIGJlIG9uZS4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiByZWFkIGFib3V0IGFsbCB0aGUgbWV0aG9kcyBieSB3aGljaCB5b3UgY2FuCisgICAgICAgICAgICAgICAgICAgIHVwZ3JhZGUgcmVjaXBlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2dzLXVwZ3JhZGluZy1yZWNpcGVzJz5VcGdyYWRpbmcgUmVjaXBlczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB5b3VyIHBhcnRpY3VsYXIgc2NlbmFyaW8sIHRoZSBhcmd1bWVudHMgYW5kIG9wdGlvbnMKLSAgICAgICAgICAgICAgICB5b3UgdXNlIHdpdGggPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IGZvcm0gZGlmZmVyZW50Ci0gICAgICAgICAgICAgICAgY29tYmluYXRpb25zLgotICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZGlhZ3JhbSBzaG93cyBhIGNvbW1vbiBkZXZlbG9wbWVudCBmbG93Ci0gICAgICAgICAgICAgICAgeW91IHdvdWxkIHVzZSB3aXRoIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBtb2RpZnk8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPiBjb21tYW5kIGlzIGZsZXhpYmxlCisgICAgICAgICAgICAgICAgZW5vdWdoIHRvIGFsbG93IHlvdSB0byBzcGVjaWZ5IHNvdXJjZSBjb2RlIHJldmlzaW9uIGFuZAorICAgICAgICAgICAgICAgIHZlcnNpb25pbmcgc2NoZW1lcywgZXh0cmFjdCBjb2RlIGludG8gb3Igb3V0IG9mIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNkZXZ0b29sLXRoZS13b3Jrc3BhY2UtbGF5ZXItc3RydWN0dXJlJz53b3Jrc3BhY2U8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICBhbmQgd29yayB3aXRoIGFueSBzb3VyY2UgZmlsZSBmb3JtcyB0aGF0IHRoZSBmZXRjaGVycyBzdXBwb3J0LgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGRpYWdyYW0gc2hvd3MgdGhlIGNvbW1vbiBkZXZlbG9wbWVudCBmbG93CisgICAgICAgICAgICAgICAgdXNlZCB3aXRoIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4gY29tbWFuZDoKICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+CkBAIC03NjksMTEwICs4NDUsMTQyIEBACiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Jbml0aWF0ZSB0aGUgVXBncmFkZTwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRvcCBwYXJ0IG9mIHRoZSBmbG93IHNob3dzIGEgdHlwaWNhbCBzY2VuYXJpbyBieSB3aGljaAotICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNvdWxkIHVzZSA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Jbml0aWF0ZSB0aGUgVXBncmFkZTwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRvcCBwYXJ0IG9mIHRoZSBmbG93IHNob3dzIHRoZSB0eXBpY2FsIHNjZW5hcmlvIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCB5b3UgdXNlIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCB1cGdyYWRlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQuCiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgZXhpc3Q6CiAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgcmVjaXBlIGV4aXN0cyBpbiBzb21lIGxheWVyIGV4dGVybmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVjaXBlIGV4aXN0cyBpbiBhIGxvY2FsIGxheWVyIGV4dGVybmFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IHdvcmtzcGFjZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBzb3VyY2UgZmlsZXMgZm9yIHRoZSBuZXcgcmVsZWFzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdCBhZGphY2VudCB0byB0aGUgc2FtZSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc291cmNlIGZpbGVzIGZvciB0aGUgbmV3IHJlbGVhc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3QgaW4gdGhlIHNhbWUgbG9jYXRpb24gcG9pbnRlZCB0byBieQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSByZWNpcGUgKGUuZy4gYSB0YXJiYWxsIHdpdGggdGhlIG5ldyB2ZXJzaW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlciBpbiB0aGUgbmFtZSwgb3IgYXMgYSBkaWZmZXJlbnQgcmV2aXNpb24gaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHVwc3RyZWFtIEdpdCByZXBvc2l0b3J5KS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHJlY2lwZSAoZS5nLiBhIHRhcmJhbGwgd2l0aCB0aGUgbmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gbnVtYmVyIGluIHRoZSBuYW1lLCBvciBhcyBhIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZpc2lvbiBpbiB0aGUgdXBzdHJlYW0gR2l0IHJlcG9zaXRvcnkpLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICAgICAgQSBjb21tb24gc2l0dWF0aW9uIGlzIHdoZXJlIHRoaXJkLXBhcnR5IHNvZnR3YXJlIGhhcwogICAgICAgICAgICAgICAgICAgICAgICAgdW5kZXJnb25lIGEgcmV2aXNpb24gc28gdGhhdCBpdCBoYXMgYmVlbiB1cGdyYWRlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGUgeW91IGhhdmUgYWNjZXNzIHRvIGlzIGxpa2VseSBpbiB5b3VyIG93biBsYXllci4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZWNpcGUgeW91IGhhdmUgYWNjZXNzIHRvIGlzIGxpa2VseSBpbiB5b3VyIG93bgorICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIuCiAgICAgICAgICAgICAgICAgICAgICAgICBUaHVzLCB5b3UgbmVlZCB0byB1cGdyYWRlIHRoZSByZWNpcGUgdG8gdXNlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgbmV3ZXIgdmVyc2lvbiBvZiB0aGUgc29mdHdhcmU6CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCB1cGdyYWRlIC1WIDxyZXBsYWNlYWJsZT52ZXJzaW9uIHJlY2lwZTwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgPGZpbGVuYW1lPmRldnRvb2wgdXBncmFkZTwvZmlsZW5hbWU+IGNvbW1hbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhY3RzIHNvdXJjZSBjb2RlIGludG8gdGhlIDxmaWxlbmFtZT5zb3VyY2VzPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBpbiB0aGUgd29ya3NwYWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdGhlIGNvZGUgZXh0cmFjdGVkIHRvIGFueSBvdGhlciBsb2NhdGlvbiwgeW91Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZWVkIHRvIHByb3ZpZGUgdGhlIDxyZXBsYWNlYWJsZT5zcmN0cmVlPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uYWwgYXJndW1lbnQgd2l0aCB0aGUgY29tbWFuZCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIHVwZ3JhZGU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBleHRyYWN0cyBzb3VyY2UgY29kZSBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnNvdXJjZXM8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNkZXZ0b29sLXRoZS13b3Jrc3BhY2UtbGF5ZXItc3RydWN0dXJlJz53b3Jrc3BhY2U8L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRoZSBjb2RlIGV4dHJhY3RlZCB0byBhbnkgb3RoZXIgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICB5b3UgbmVlZCB0byBwcm92aWRlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPnNyY3RyZWU8L3JlcGxhY2VhYmxlPiBwb3NpdGlvbmFsIGFyZ3VtZW50CisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBjb21tYW5kIGFzIGZvbGxvd3M6CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCB1cGdyYWRlIC1WIDxyZXBsYWNlYWJsZT52ZXJzaW9uIHJlY2lwZSBzcmN0cmVlPC9yZXBsYWNlYWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFsc28sIGluIHRoaXMgZXhhbXBsZSwgdGhlICItViIgb3B0aW9uIGlzIHVzZWQgdG8gc3BlY2lmeQotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG5ldyB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUgIi1WIiBvcHRpb24gc3BlY2lmaWVzIHRoZSBuZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkb24ndCB1c2UgIi1WIiwgdGhlIGNvbW1hbmQgdXBncmFkZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIHRvIHRoZSBsYXRlc3QgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSBzb3VyY2UgZmlsZXMgcG9pbnRlZCB0byBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gc3RhdGVtZW50IGluIHRoZSByZWNpcGUgYXJlCi0gICAgICAgICAgICAgICAgICAgICAgICBpbiBhIEdpdCByZXBvc2l0b3J5LCB5b3UgbXVzdCBwcm92aWRlIHRoZSAiLVMiIG9wdGlvbiBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgYSByZXZpc2lvbiBmb3IgdGhlIHNvZnR3YXJlLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gc3RhdGVtZW50IGluIHRoZSByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBpbiBhIEdpdCByZXBvc2l0b3J5LCB5b3UgbXVzdCBwcm92aWRlIHRoZSAiLVMiCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24gYW5kIHNwZWNpZnkgYSByZXZpc2lvbiBmb3IgdGhlIHNvZnR3YXJlLjwvcGFyYT4KIAotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+T25jZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGxvY2F0ZXMgdGhlIHJlY2lwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGl0IHVzZXMgdGhlIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gdmFyaWFibGUgdG8gbG9jYXRlCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgc291cmNlIGNvZGUgYW5kIGFueSBsb2NhbCBwYXRjaCBmaWxlcyBmcm9tIG90aGVyCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXZlbG9wZXJzIGFyZSBsb2NhdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+T25jZSA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGxvY2F0ZXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUsIGl0IHVzZXMgdGhlIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIGxvY2F0ZSB0aGUgc291cmNlIGNvZGUgYW5kIGFueSBsb2NhbCBwYXRjaAorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMgZnJvbSBvdGhlciBkZXZlbG9wZXJzLgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGF0IHRoZSBjb21tYW5kIHNldHMgdXAgdGhlIHNvdXJjZQogICAgICAgICAgICAgICAgICAgICAgICAgY29kZSwgdGhlIG5ldyB2ZXJzaW9uIG9mIHRoZSByZWNpcGUsIGFuZCBhbiBhcHBlbmQgZmlsZQogICAgICAgICAgICAgICAgICAgICAgICAgYWxsIHdpdGhpbiB0aGUgd29ya3NwYWNlLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UmVzb2x2ZSBhbnkgQ29uZmxpY3RzIGNyZWF0ZWQgYnkgdGhlIFVwZ3JhZGU8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIEF0IHRoaXMgcG9pbnQsIHRoZXJlIGNvdWxkIGJlIHNvbWUgY29uZmxpY3RzIGR1ZSB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHNvZnR3YXJlIGJlaW5nIHVwZ3JhZGVkIHRvIGEgbmV3IHZlcnNpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHdvdWxkIG9jY3VyIGlmIHlvdXIgcmVjaXBlIHNwZWNpZmllcyBzb21lIHBhdGNoIGZpbGVzIGluCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHRoYXQgY29uZmxpY3Qgd2l0aCBjaGFuZ2VzCi0gICAgICAgICAgICAgICAgICAgICAgICBtYWRlIGluIHRoZSBuZXcgdmVyc2lvbiBvZiB0aGUgc29mdHdhcmUuCi0gICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGlzIGlzIHRoZSBjYXNlLCB5b3UgbmVlZCB0byByZXNvbHZlIHRoZSBjb25mbGljdHMKKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlJlc29sdmUgYW55IENvbmZsaWN0cyBjcmVhdGVkIGJ5IHRoZSBVcGdyYWRlPC9lbXBoYXNpcz46CisgICAgICAgICAgICAgICAgICAgICAgICBDb25mbGljdHMgY291bGQgZXhpc3QgZHVlIHRvIHRoZSBzb2Z0d2FyZSBiZWluZworICAgICAgICAgICAgICAgICAgICAgICAgdXBncmFkZWQgdG8gYSBuZXcgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbmZsaWN0cyBvY2N1ciBpZiB5b3VyIHJlY2lwZSBzcGVjaWZpZXMgc29tZSBwYXRjaAorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMgaW4gPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiB0aGF0IGNvbmZsaWN0CisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGNoYW5nZXMgbWFkZSBpbiB0aGUgbmV3IHZlcnNpb24gb2YgdGhlIHNvZnR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHN1Y2ggY2FzZXMsIHlvdSBuZWVkIHRvIHJlc29sdmUgdGhlIGNvbmZsaWN0cwogICAgICAgICAgICAgICAgICAgICAgICAgYnkgZWRpdGluZyB0aGUgc291cmNlIGFuZCBmb2xsb3dpbmcgdGhlIG5vcm1hbAogICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdCByZWJhc2U8L2ZpbGVuYW1lPiBjb25mbGljdCByZXNvbHV0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkJlZm9yZSBtb3Zpbmcgb250byB0aGUgbmV4dCBzdGVwLCBiZSBzdXJlIHRvIHJlc29sdmUgYW55Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdWNoIGNvbmZsaWN0cyBjcmVhdGVkIHRocm91Z2ggdXNlIG9mIGEgbmV3ZXIgb3IgZGlmZmVyZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIG9mIHRoZSBzb2Z0d2FyZS4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QmVmb3JlIG1vdmluZyBvbnRvIHRoZSBuZXh0IHN0ZXAsIGJlIHN1cmUgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUgYW55IHN1Y2ggY29uZmxpY3RzIGNyZWF0ZWQgdGhyb3VnaCB1c2Ugb2YgYQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3ZXIgb3IgZGlmZmVyZW50IHZlcnNpb24gb2YgdGhlIHNvZnR3YXJlLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QnVpbGQgdGhlIFJlY2lwZTwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgT25jZSB5b3UgaGF2ZSB5b3VyIHJlY2lwZSBpbiBvcmRlciwgeW91IGNhbiBidWlsZCBpdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZWl0aGVyIHVzZSA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZDwvZmlsZW5hbWU+IG9yCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgRWl0aGVyIG1ldGhvZCBwcm9kdWNlcyBidWlsZCBvdXRwdXQgdGhhdCBpcyBzdG9yZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIGluCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIHRoZSBSZWNpcGUgb3IgUmVidWlsZCB0aGUgSW1hZ2U8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBuZXh0IHN0ZXAgeW91IHRha2UgZGVwZW5kcyBvbiB3aGF0IHlvdSBhcmUgZ29pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGRvIHdpdGggdGhlIG5ldyBjb2RlLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SWYgeW91IG5lZWQgdG8gZXZlbnR1YWxseSBtb3ZlIHRoZSBidWlsZCBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSB0YXJnZXQgaGFyZHdhcmUsIHVzZSB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGNvbW1hbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZGV2dG9vbCBidWlsZCA8cmVwbGFjZWFibGU+cmVjaXBlPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPk9uIHRoZSBvdGhlciBoYW5kLCBpZiB5b3Ugd2FudCBhbiBpbWFnZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbiB0aGUgcmVjaXBlJ3MgcGFja2FnZXMgZnJvbSB0aGUgd29ya3NwYWNlCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW1tZWRpYXRlIGRlcGxveW1lbnQgb250byBhIGRldmljZSAoZS5nLiBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RpbmcgcHVycG9zZXMpLCB5b3UgY2FuIHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkLWltYWdlPC9maWxlbmFtZT4gY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBkZXZ0b29sIGJ1aWxkLWltYWdlIDxyZXBsYWNlYWJsZT5pbWFnZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5EZXBsb3kgdGhlIEJ1aWxkIE91dHB1dDwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RGVwbG95IHRoZSBCdWlsZCBPdXRwdXQ8L2VtcGhhc2lzPjoKICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4geW91IHVzZSB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBvciA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IHRvIGJ1aWxkIG91dCB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUsIHlvdSBwcm9iYWJseSB3YW50IHRvIHNlZSBpZiB0aGUgcmVzdWx0aW5nIGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgd29ya3MgYXMgZXhwZWN0ZWQgb24gdGFyZ2V0IGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBvciA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IHRvIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICB5b3VyIHJlY2lwZSwgeW91IHByb2JhYmx5IHdhbnQgdG8gc2VlIGlmIHRoZSByZXN1bHRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIG91dHB1dCB3b3JrcyBhcyBleHBlY3RlZCBvbiB0YXJnZXQgaGFyZHdhcmUuCiAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHN0ZXAgYXNzdW1lcyB5b3UgaGF2ZSBhIHByZXZpb3VzbHkgYnVpbHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZSB0aGF0IGlzIGFscmVhZHkgZWl0aGVyIHJ1bm5pbmcgaW4gUUVNVSBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmcgb24gYWN0dWFsIGhhcmR3YXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsc28sIGl0IGlzIGFzc3VtZWQgdGhhdCBmb3IgZGVwbG95bWVudCBvZiB0aGUgaW1hZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgdGFyZ2V0LCBTU0ggaXMgaW5zdGFsbGVkIGluIHRoZSBpbWFnZSBhbmQgaWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgaW1hZ2UgaXMgcnVubmluZyBvbiByZWFsIGhhcmR3YXJlIHRoYXQgeW91IGhhdmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXR3b3JrIGFjY2VzcyB0byBhbmQgZnJvbSB5b3VyIGRldmVsb3BtZW50IG1hY2hpbmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxzbywgaXQgaXMgYXNzdW1lZCB0aGF0IGZvciBkZXBsb3ltZW50IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlIHRvIHRoZSB0YXJnZXQsIFNTSCBpcyBpbnN0YWxsZWQgaW4gdGhlIGltYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGlmIHRoZSBpbWFnZSBpcyBydW5uaW5nIG9uIHJlYWwgaGFyZHdhcmUgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBoYXZlIG5ldHdvcmsgYWNjZXNzIHRvIGFuZCBmcm9tIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBtYWNoaW5lLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBkZXBsb3kgeW91ciBidWlsZCBvdXRwdXQgdG8gdGhhdCB0YXJnZXQgaGFyZHdhcmUgYnkKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBkZXBsb3ktdGFyZ2V0PC9maWxlbmFtZT4gY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZGVwbG95IHlvdXIgYnVpbGQgb3V0cHV0IHRvIHRoYXQgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICBoYXJkd2FyZSBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGRlcGxveS10YXJnZXQ8L2ZpbGVuYW1lPiBjb21tYW5kOgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGRldnRvb2wgZGVwbG95LXRhcmdldCA8cmVwbGFjZWFibGU+cmVjaXBlIHRhcmdldDwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+IGlzIGEgbGl2ZSB0YXJnZXQgbWFjaGluZQotICAgICAgICAgICAgICAgICAgICAgICAgcnVubmluZyBhcyBhbiBTU0ggc2VydmVyLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4sIG9mIGNvdXJzZSwgYWxzbyBkZXBsb3kgdGhlIGltYWdlIHlvdSBidWlsZAotICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkLWltYWdlPC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPiBpcyBhIGxpdmUgdGFyZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lIHJ1bm5pbmcgYXMgYW4gU1NIIHNlcnZlci48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPllvdSBjYW4sIG9mIGNvdXJzZSwgYWxzbyBkZXBsb3kgdGhlIGltYWdlIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZC1pbWFnZTwvZmlsZW5hbWU+IGNvbW1hbmQKICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFjdHVhbCBoYXJkd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gZG9lcyBub3QgcHJvdmlkZSBhCi0gICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyBjb21tYW5kIHRoYXQgYWxsb3dzIHlvdSB0byBkbyB0aGlzLgorICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBkb2VzIG5vdCBwcm92aWRlCisgICAgICAgICAgICAgICAgICAgICAgICBhIHNwZWNpZmljIGNvbW1hbmQgdGhhdCBhbGxvd3MgeW91IHRvIGRvIHRoaXMuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkZpbmlzaCBZb3VyIFdvcmsgV2l0aCB0aGUgUmVjaXBlPC9lbXBoYXNpcz46CiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnRvb2wgZmluaXNoPC9maWxlbmFtZT4gY29tbWFuZCBjcmVhdGVzCiAgICAgICAgICAgICAgICAgICAgICAgICBhbnkgcGF0Y2hlcyBjb3JyZXNwb25kaW5nIHRvIGNvbW1pdHMgaW4gdGhlIGxvY2FsCi0gICAgICAgICAgICAgICAgICAgICAgICBHaXQgcmVwb3NpdG9yeSwgbW92ZXMgdGhlIG5ldyByZWNpcGUgdG8gYSBtb3JlIHBlcm1hbmVudAotICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIsIGFuZCB0aGVuIHJlc2V0cyB0aGUgcmVjaXBlIHNvIHRoYXQgdGhlIHJlY2lwZSBpcwotICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHQgbm9ybWFsbHkgcmF0aGVyIHRoYW4gZnJvbSB0aGUgd29ya3NwYWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnksIG1vdmVzIHRoZSBuZXcgcmVjaXBlIHRvIGEgbW9yZQorICAgICAgICAgICAgICAgICAgICAgICAgcGVybWFuZW50IGxheWVyLCBhbmQgdGhlbiByZXNldHMgdGhlIHJlY2lwZSBzbyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVjaXBlIGlzIGJ1aWx0IG5vcm1hbGx5IHJhdGhlciB0aGFuIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2UuCiAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugc3BlY2lmeSBhIGRlc3RpbmF0aW9uIGxheWVyIHRoYXQgaXMgdGhlIHNhbWUgYXMKICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBvcmlnaW5hbCBzb3VyY2UsIHRoZW4gdGhlIG9sZCB2ZXJzaW9uIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGFuZCBhc3NvY2lhdGVkIGZpbGVzIHdpbGwgYmUgcmVtb3ZlZCBwcmlvciB0bwpAQCAtODg0LDYgKzk5Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW55IGNoYW5nZXMgeW91IHdhbnQgdG8gdHVybiBpbnRvIHBhdGNoZXMgbXVzdCBiZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdHRlZCB0byB0aGUgR2l0IHJlcG9zaXRvcnkgaW4gdGhlIHNvdXJjZSB0cmVlLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPjwvcGFyYT4KKwogICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+QXMgYSBmaW5hbCBwcm9jZXNzIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgZmluaXNoPC9maWxlbmFtZT4gY29tbWFuZCwgdGhlIHN0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgc3RhbmRhcmQgbGF5ZXJzIGFuZCB0aGUgdXBzdHJlYW0gc291cmNlIGlzCkBAIC05MDYsOCArMTAxNSw4IEBACiAgICAgICAgIDx0aXRsZT5BIENsb3NlciBMb29rIGF0IDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+PC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiBjb21tYW5kIGF1dG9tYXRpY2FsbHkgY3JlYXRlcyBhCi0gICAgICAgICAgICByZWNpcGUgYmFzZWQgb24gdGhlIHNvdXJjZSB0cmVlIHdpdGggd2hpY2ggeW91IHByb3ZpZGUgaXQuCisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gY29tbWFuZCBhdXRvbWF0aWNhbGx5IGNyZWF0ZXMKKyAgICAgICAgICAgIGEgcmVjaXBlIGJhc2VkIG9uIHRoZSBzb3VyY2UgdHJlZSB5b3UgcHJvdmlkZSB3aXRoIHRoZSBjb21tYW5kLgogICAgICAgICAgICAgQ3VycmVudGx5LCB0aGUgY29tbWFuZCBoYXMgc3VwcG9ydCBmb3IgdGhlIGZvbGxvd2luZzoKICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpAQCAtOTUzLDggKzEwNjIsOCBAQAogICAgICAgICAgICAgICAgIEluIG1vc3QgY2FzZXMsIHlvdSBuZWVkIHRvIGVkaXQgdGhlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkCiAgICAgICAgICAgICAgICAgcmVjaXBlIGluIG9yZGVyIHRvIG1ha2UgaXQgYnVpbGQgcHJvcGVybHkuCiAgICAgICAgICAgICAgICAgVHlwaWNhbGx5LCB5b3Ugd291bGQgZ28gdGhyb3VnaCBzZXZlcmFsIGVkaXQgYW5kIGJ1aWxkIGN5Y2xlcwotICAgICAgICAgICAgICAgIHVudGlsIHlvdSBjYW4gYnVpbGQgdGhlIHJlY2lwZS4KLSAgICAgICAgICAgICAgICBPbmNlIHRoZSByZWNpcGUgY2FuIGJlIGJ1aWx0LCB5b3UgY291bGQgdXNlIHBvc3NpYmxlIGZ1cnRoZXIKKyAgICAgICAgICAgICAgICB1bnRpbCB0aGUgcmVjaXBlIHN1Y2Nlc3NmdWxseSBidWlsZHMuCisgICAgICAgICAgICAgICAgT25jZSB0aGUgcmVjaXBlIGJ1aWxkcywgeW91IGNvdWxkIHVzZSBwb3NzaWJsZSBmdXJ0aGVyCiAgICAgICAgICAgICAgICAgaXRlcmF0aW9ucyB0byB0ZXN0IHRoZSByZWNpcGUgb24gdGhlIHRhcmdldCBkZXZpY2UuCiAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgIDwvcGFyYT4KQEAgLTk2OSwxNSArMTA3OCwxOSBAQAogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IHNwZWNpZnkgYSBuYW1lIGFuZCB2ZXJzaW9uIG9uIHRoZSBjb21tYW5kCi0gICAgICAgICAgICAgICAgbGluZSwgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gYXR0ZW1wdHMgdG8gZGV0ZXJtaW5lCi0gICAgICAgICAgICAgICAgdGhlIG5hbWUgYW5kIHZlcnNpb24gb2YgdGhlIHNvZnR3YXJlIGJlaW5nIGJ1aWx0IGZyb20KLSAgICAgICAgICAgICAgICB2YXJpb3VzIG1ldGFkYXRhIHdpdGhpbiB0aGUgc291cmNlIHRyZWUuCi0gICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIHRoZSBjb21tYW5kIHNldHMgdGhlIG5hbWUgb2YgdGhlIGNyZWF0ZWQgcmVjaXBlCi0gICAgICAgICAgICAgICAgZmlsZSBhY2NvcmRpbmdseS4KLSAgICAgICAgICAgICAgICBJZiB0aGUgbmFtZSBvciB2ZXJzaW9uIGNhbm5vdCBiZSBkZXRlcm1pbmVkLCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiBjb21tYW5kIHByaW50cyBhbiBlcnJvciBhbmQKLSAgICAgICAgICAgICAgICB5b3UgbXVzdCByZS1ydW4gdGhlIGNvbW1hbmQgd2l0aCBib3RoIHRoZSBuYW1lIGFuZCB2ZXJzaW9uCi0gICAgICAgICAgICAgICAgb3IganVzdCB0aGUgbmFtZSBvciB2ZXJzaW9uIHNwZWNpZmllZC4KKyAgICAgICAgICAgICAgICBsaW5lLCA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiB1c2VzIHZhcmlvdXMgbWV0YWRhdGEKKyAgICAgICAgICAgICAgICB3aXRoaW4gdGhlIHNvdXJjZSB0cmVlIGluIGFuIGF0dGVtcHQgdG8gZGV0ZXJtaW5lCisgICAgICAgICAgICAgICAgdGhlIG5hbWUgYW5kIHZlcnNpb24gb2YgdGhlIHNvZnR3YXJlIGJlaW5nIGJ1aWx0LgorICAgICAgICAgICAgICAgIEJhc2VkIG9uIHdoYXQgdGhlIHRvb2wgZGV0ZXJtaW5lcywgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHNldHMgdGhlIG5hbWUgb2YgdGhlIGNyZWF0ZWQgcmVjaXBlIGZpbGUgYWNjb3JkaW5nbHkuCisgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIElmIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gY2Fubm90IGRldGVybWluZSB0aGUgbmFtZSBhbmQKKyAgICAgICAgICAgICAgICB2ZXJzaW9uLCB0aGUgY29tbWFuZCBwcmludHMgYW4gZXJyb3IuCisgICAgICAgICAgICAgICAgRm9yIHN1Y2ggY2FzZXMsIHlvdSBtdXN0IHJlLXJ1biB0aGUgY29tbWFuZCBhbmQgcHJvdmlkZQorICAgICAgICAgICAgICAgIHRoZSBuYW1lIGFuZCB2ZXJzaW9uLCBqdXN0IHRoZSBuYW1lLCBvciBqdXN0IHRoZSB2ZXJzaW9uIGFzCisgICAgICAgICAgICAgICAgcGFydCBvZiB0aGUgY29tbWFuZCBsaW5lLgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KQEAgLTEwMDEsMjYgKzExMTQsMjcgQEAKICAgICAgICAgICAgICAgICBkZXRlY3QgYnVpbGQtdGltZSBkZXBlbmRlbmNpZXMgYW5kIG1hcCB0aGVtIHRvIG90aGVyIHJlY2lwZXMKICAgICAgICAgICAgICAgICBpbiB0aGUgc3lzdGVtLgogICAgICAgICAgICAgICAgIER1cmluZyB0aGlzIG1hcHBpbmcsIHRoZSBjb21tYW5kIGZpbGxzIGluIHRoZSBuYW1lcyBvZiB0aG9zZQotICAgICAgICAgICAgICAgIHJlY2lwZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgcmVjaXBlcyBhcyBwYXJ0IG9mIHRoZQogICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ERVBFTkRTJz48ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICB2YWx1ZSB3aXRoaW4gdGhlIHJlY2lwZS4KLSAgICAgICAgICAgICAgICBJZiBhIGRlcGVuZGVuY3kgY2Fubm90IGJlIG1hcHBlZCwgdGhlbiBhIGNvbW1lbnQgaXMgcGxhY2VkIGluCi0gICAgICAgICAgICAgICAgdGhlIHJlY2lwZSBpbmRpY2F0aW5nIHN1Y2guCi0gICAgICAgICAgICAgICAgVGhlIGluYWJpbGl0eSB0byBtYXAgYSBkZXBlbmRlbmN5IG1pZ2h0IGJlIGNhdXNlZCBiZWNhdXNlIHRoZQotICAgICAgICAgICAgICAgIG5hbWluZyBpcyBub3QgcmVjb2duaXplZCBvciBiZWNhdXNlIHRoZSBkZXBlbmRlbmN5IHNpbXBseSBpcwotICAgICAgICAgICAgICAgIG5vdCBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAgdmFyaWFibGUgd2l0aGluIHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgSWYgYSBkZXBlbmRlbmN5IGNhbm5vdCBiZSBtYXBwZWQsIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBwbGFjZXMgYSBjb21tZW50IGluIHRoZSByZWNpcGUgaW5kaWNhdGluZyBzdWNoLgorICAgICAgICAgICAgICAgIFRoZSBpbmFiaWxpdHkgdG8gbWFwIGEgZGVwZW5kZW5jeSBjYW4gcmVzdWx0IGZyb20gbmFtaW5nIG5vdAorICAgICAgICAgICAgICAgIGJlaW5nIHJlY29nbml6ZWQgb3IgYmVjYXVzZSB0aGUgZGVwZW5kZW5jeSBzaW1wbHkgaXMgbm90CisgICAgICAgICAgICAgICAgYXZhaWxhYmxlLgogICAgICAgICAgICAgICAgIEZvciBjYXNlcyB3aGVyZSB0aGUgZGVwZW5kZW5jeSBpcyBub3QgYXZhaWxhYmxlLCB5b3UgbXVzdCB1c2UKICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gY29tbWFuZCB0byBhZGQgYW4KLSAgICAgICAgICAgICAgICBhZGRpdGlvbmFsIHJlY2lwZSB0byBzYXRpc2Z5IHRoZSBkZXBlbmRlbmN5IGFuZCB0aGVuIGNvbWUKLSAgICAgICAgICAgICAgICBiYWNrIHRvIHRoZSBmaXJzdCByZWNpcGUgYW5kIGFkZCBpdHMgbmFtZSB0bwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgYWRkaXRpb25hbCByZWNpcGUgdGhhdCBzYXRpc2ZpZXMgdGhlIGRlcGVuZGVuY3kuCisgICAgICAgICAgICAgICAgT25jZSB5b3UgYWRkIHRoYXQgcmVjaXBlLCB5b3UgbmVlZCB0byB1cGRhdGUgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbiB0aGUgb3JpZ2luYWwgcmVjaXBlCisgICAgICAgICAgICAgICAgdG8gaW5jbHVkZSB0aGUgbmV3IHJlY2lwZS4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgdG8gYWRkIHJ1bnRpbWUgZGVwZW5kZW5jaWVzLCB5b3UgY2FuIGRvIHNvIGJ5CiAgICAgICAgICAgICAgICAgYWRkaW5nIHRoZSBmb2xsb3dpbmcgdG8geW91ciByZWNpcGU6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBSREVQRU5EU18ke1BOfSArPSAiZGVwZW5kZW5jeTEgZGVwZW5kZW5jeTIgLi4uIgorICAgICBSREVQRU5EU18ke1BOfSArPSAiPHJlcGxhY2VhYmxlPmRlcGVuZGVuY3kxIGRlcGVuZGVuY3kyIC4uLjwvcmVwbGFjZWFibGU+IgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IGNvbW1hbmQgb2Z0ZW4gY2Fubm90CkBAIC0xMDMxLDcgKzExNDUsNyBAQAogICAgICAgICAgICAgICAgICAgICBzY3JpcHQgZm9yIHRoZSBzb2Z0d2FyZSB0aGUgcmVjaXBlIGlzIGJ1aWxkaW5nIGZvciBmdXJ0aGVyCiAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMuCiAgICAgICAgICAgICAgICAgICAgIEluIHNvbWUgY2FzZXMsIHlvdSBtaWdodCBmaW5kIHlvdSBjYW4gc3Vic3RpdHV0ZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jeSBmb3IgYW4gb3B0aW9uIHRvIGRpc2FibGUgdGhlIGFzc29jaWF0ZWQKKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jeSB3aXRoIGFuIG9wdGlvbiB0aGF0IGRpc2FibGVzIHRoZSBhc3NvY2lhdGVkCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uYWxpdHkgcGFzc2VkIHRvIHRoZSBjb25maWd1cmUgc2NyaXB0LgogICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTEwNDMsMjAgKzExNTcsMjQgQEAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiBjb21tYW5kIGF0dGVtcHRzIHRvCiAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lIGlmIHRoZSBzb2Z0d2FyZSB5b3UgYXJlIGFkZGluZyBpcyBhYmxlIHRvIGJlCi0gICAgICAgICAgICAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgYSBjb21tb24gb3Blbi1zb3VyY2UgbGljZW5zZSBhbmQgc2V0cyB0aGUKKyAgICAgICAgICAgICAgICBkaXN0cmlidXRlZCB1bmRlciBhIGNvbW1vbiwgb3Blbi1zb3VyY2UgbGljZW5zZS4KKyAgICAgICAgICAgICAgICBJZiBzbywgdGhlIGNvbW1hbmQgc2V0cyB0aGUKICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTElDRU5TRSc+PGZpbGVuYW1lPkxJQ0VOU0U8L2ZpbGVuYW1lPjwvdWxpbms+CiAgICAgICAgICAgICAgICAgdmFsdWUgYWNjb3JkaW5nbHkuCi0gICAgICAgICAgICAgICAgWW91IHNob3VsZCBkb3VibGUtY2hlY2sgdGhpcyB2YWx1ZSBhZ2FpbnN0IHRoZSBkb2N1bWVudGF0aW9uCi0gICAgICAgICAgICAgICAgb3Igc291cmNlIGZpbGVzIGZvciB0aGUgc29mdHdhcmUgeW91IGFyZSBidWlsZGluZyBhbmQgdXBkYXRlCi0gICAgICAgICAgICAgICAgdGhhdCA8ZmlsZW5hbWU+TElDRU5TRTwvZmlsZW5hbWU+IHZhbHVlIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgdmFsdWUgYWRkZWQgYnkgdGhlIGNvbW1hbmQgYWdhaW5zdAorICAgICAgICAgICAgICAgIHRoZSBkb2N1bWVudGF0aW9uIG9yIHNvdXJjZSBmaWxlcyBmb3IgdGhlIHNvZnR3YXJlIHlvdSBhcmUKKyAgICAgICAgICAgICAgICBidWlsZGluZyBhbmQsIGlmIG5lY2Vzc2FyeSwgdXBkYXRlIHRoYXQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRTwvZmlsZW5hbWU+IHZhbHVlLgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gY29tbWFuZCBhbHNvIHNldHMgdGhlCiAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxJQ19GSUxFU19DSEtTVU0nPjxmaWxlbmFtZT5MSUNfRklMRVNfQ0hLU1VNPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgIHZhbHVlIHRvIHBvaW50IHRvIGFsbCBmaWxlcyB0aGF0IGFwcGVhciB0byBiZSBsaWNlbnNlLXJlbGF0ZWQuCi0gICAgICAgICAgICAgICAgSG93ZXZlciwgbGljZW5zZSBzdGF0ZW1lbnRzIG9mdGVuIGFwcGVhciBpbiBjb21tZW50cyBhdCB0aGUgdG9wCi0gICAgICAgICAgICAgICAgb2Ygc291cmNlIGZpbGVzIG9yIHdpdGhpbiBkb2N1bWVudGF0aW9uLgorICAgICAgICAgICAgICAgIFJlYWxpemUgdGhhdCBsaWNlbnNlIHN0YXRlbWVudHMgb2Z0ZW4gYXBwZWFyIGluIGNvbW1lbnRzIGF0CisgICAgICAgICAgICAgICAgdGhlIHRvcCBvZiBzb3VyY2UgZmlsZXMgb3Igd2l0aGluIHRoZSBkb2N1bWVudGF0aW9uLgorICAgICAgICAgICAgICAgIEluIHN1Y2ggY2FzZXMsIHRoZSBjb21tYW5kIGRvZXMgbm90IHJlY29nbml6ZSB0aG9zZSBsaWNlbnNlCisgICAgICAgICAgICAgICAgc3RhdGVtZW50cy4KICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHlvdSBtaWdodCBuZWVkIHRvIGFtZW5kIHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MSUNfRklMRVNfQ0hLU1VNPC9maWxlbmFtZT4gdmFyaWFibGUgdG8gcG9pbnQgdG8gb25lCiAgICAgICAgICAgICAgICAgb3IgbW9yZSBvZiB0aG9zZSBjb21tZW50cyBpZiBwcmVzZW50LgpAQCAtMTA3MCwxNCArMTE4OCwxMyBAQAogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBJZiB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gY29tbWFuZCBjYW5ub3QKLSAgICAgICAgICAgICAgICBkZXRlcm1pbmUgbGljZW5zaW5nIGluZm9ybWF0aW9uLCB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TElDRU5TRTwvZmlsZW5hbWU+IHZhbHVlIGlzIHNldCB0byAiQ0xPU0VEIiBhbmQgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ19GSUxFU19DSEtTVU08L2ZpbGVuYW1lPiB2YWx1ZSByZW1haW5zIHVuc2V0LgotICAgICAgICAgICAgICAgIFRoaXMgYmVoYXZpb3IgYWxsb3dzIHlvdSB0byBjb250aW51ZSB3aXRoIGRldmVsb3BtZW50IGJ1dCBpcwotICAgICAgICAgICAgICAgIHVubGlrZWx5IHRvIGJlIGNvcnJlY3QgaW4gYWxsIGNhc2VzLgotICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IHNob3VsZCBjaGVjayB0aGUgZG9jdW1lbnRhdGlvbiBvciBzb3VyY2UKLSAgICAgICAgICAgICAgICBmaWxlcyBmb3IgdGhlIHNvZnR3YXJlIHlvdSBhcmUgYnVpbGRpbmcgdG8gZGV0ZXJtaW5lIHRoZSBhY3R1YWwKLSAgICAgICAgICAgICAgICBsaWNlbnNlLgorICAgICAgICAgICAgICAgIGRldGVybWluZSBsaWNlbnNpbmcgaW5mb3JtYXRpb24sIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBzZXRzIHRoZSA8ZmlsZW5hbWU+TElDRU5TRTwvZmlsZW5hbWU+IHZhbHVlIHRvICJDTE9TRUQiIGFuZAorICAgICAgICAgICAgICAgIGxlYXZlcyB0aGUgPGZpbGVuYW1lPkxJQ19GSUxFU19DSEtTVU08L2ZpbGVuYW1lPiB2YWx1ZSB1bnNldC4KKyAgICAgICAgICAgICAgICBUaGlzIGJlaGF2aW9yIGFsbG93cyB5b3UgdG8gY29udGludWUgd2l0aCBkZXZlbG9wbWVudCBldmVuCisgICAgICAgICAgICAgICAgdGhvdWdoIHRoZSBzZXR0aW5ncyBhcmUgdW5saWtlbHkgdG8gYmUgY29ycmVjdCBpbiBhbGwgY2FzZXMuCisgICAgICAgICAgICAgICAgWW91IHNob3VsZCBjaGVjayB0aGUgZG9jdW1lbnRhdGlvbiBvciBzb3VyY2UgZmlsZXMgZm9yIHRoZQorICAgICAgICAgICAgICAgIHNvZnR3YXJlIHlvdSBhcmUgYnVpbGRpbmcgdG8gZGV0ZXJtaW5lIHRoZSBhY3R1YWwgbGljZW5zZS4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogCkBAIC0xMDg1LDggKzEyMDIsOCBAQAogICAgICAgICAgICAgPHRpdGxlPkFkZGluZyBNYWtlZmlsZS1Pbmx5IFNvZnR3YXJlPC90aXRsZT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIHVzZSBvZiA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGJ5IGl0c2VsZiBpcyB2ZXJ5IGNvbW1vbgotICAgICAgICAgICAgICAgIGluIGJvdGggcHJvcHJpZXRhcnkgYW5kIG9wZW4gc291cmNlIHNvZnR3YXJlLgorICAgICAgICAgICAgICAgIFRoZSB1c2Ugb2YgTWFrZSBieSBpdHNlbGYgaXMgdmVyeSBjb21tb24gaW4gYm90aCBwcm9wcmlldGFyeQorICAgICAgICAgICAgICAgIGFuZCBvcGVuLXNvdXJjZSBzb2Z0d2FyZS4KICAgICAgICAgICAgICAgICBVbmZvcnR1bmF0ZWx5LCBNYWtlZmlsZXMgYXJlIG9mdGVuIG5vdCB3cml0dGVuIHdpdGgKICAgICAgICAgICAgICAgICBjcm9zcy1jb21waWxhdGlvbiBpbiBtaW5kLgogICAgICAgICAgICAgICAgIFRodXMsIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IG9mdGVuIGNhbm5vdCBkbyB2ZXJ5CkBAIC0xMDk5LDcgKzEyMTYsNyBAQAogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5nY2M8L2ZpbGVuYW1lPiBpcyB0aGUgY29tcGlsZXIgZm9yIHRoZSBidWlsZCBob3N0CiAgICAgICAgICAgICAgICAgYW5kIHRoZSBjcm9zcy1jb21waWxlciBpcyBuYW1lZCBzb21ldGhpbmcgc2ltaWxhciB0bwogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hcm0tcG9reS1saW51eC1nbnVlYWJpLWdjYzwvZmlsZW5hbWU+IGFuZCBtaWdodAotICAgICAgICAgICAgICAgIHJlcXVpcmUgc29tZSBhcmd1bWVudHMgKGUuZy4gdG8gcG9pbnQgdG8gdGhlIGFzc29jaWF0ZWQgc3lzcm9vdAorICAgICAgICAgICAgICAgIHJlcXVpcmUgYXJndW1lbnRzIChlLmcuIHRvIHBvaW50IHRvIHRoZSBhc3NvY2lhdGVkIHN5c3Jvb3QKICAgICAgICAgICAgICAgICBmb3IgdGhlIHRhcmdldCBtYWNoaW5lKS4KICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtMTExNCwxOCArMTIzMSwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmcrKzwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBlbnZpcm9ubWVudCBpbiB3aGljaCA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IHJ1bnMKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzIHNldCB1cCB3aXRoIHZhcmlvdXMgc3RhbmRhcmQgdmFyaWFibGVzIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsYXRpb24gKGUuZy4gPGZpbGVuYW1lPkNDPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Q1hYPC9maWxlbmFtZT4sIGFuZCBzbyBmb3J0aCkgaW4gYSBzaW1pbGFyCi0gICAgICAgICAgICAgICAgICAgICAgICBtYW5uZXIgdG8gdGhlIGVudmlyb25tZW50IHNldCB1cCBieSB0aGUgU0RLJ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNldHVwIHNjcmlwdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBlbnZpcm9ubWVudCBpbiB3aGljaCBNYWtlIHJ1bnMgaXMgc2V0IHVwIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlvdXMgc3RhbmRhcmQgdmFyaWFibGVzIGZvciBjb21waWxhdGlvbiAoZS5nLgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkNDPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5DWFg8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBzbyBmb3J0aCkgaW4gYSBzaW1pbGFyIG1hbm5lciB0byB0aGUgZW52aXJvbm1lbnQgc2V0CisgICAgICAgICAgICAgICAgICAgICAgICB1cCBieSB0aGUgU0RLJ3MgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0LgogICAgICAgICAgICAgICAgICAgICAgICAgT25lIGVhc3kgd2F5IHRvIHNlZSB0aGVzZSB2YXJpYWJsZXMgaXMgdG8gcnVuIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQ8L2ZpbGVuYW1lPiBjb21tYW5kIG9uIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGFuZCB0aGVuIGxvb2sgaW4KICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1sb2dzL3J1bi5kb19jb21waWxlPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICBUb3dhcmRzIHRoZSB0b3Agb2YgdGhpcyBmaWxlIHlvdSB3aWxsIHNlZSBhIGxpc3Qgb2YKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IGFyZSBiZWluZyBzZXQuCisgICAgICAgICAgICAgICAgICAgICAgICBUb3dhcmRzIHRoZSB0b3Agb2YgdGhpcyBmaWxlLCBhIGxpc3Qgb2YgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBleGlzdHMgdGhhdCBhcmUgYmVpbmcgc2V0LgogICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB0YWtlIGFkdmFudGFnZSBvZiB0aGVzZSB2YXJpYWJsZXMgd2l0aGluIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgTWFrZWZpbGUuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KQEAgLTExMzMsNyArMTI0OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgTWFrZWZpbGUgc2V0cyBhIGRlZmF1bHQgZm9yIGEgdmFyaWFibGUgdXNpbmcgIj0iLAogICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBkZWZhdWx0IG92ZXJyaWRlcyB0aGUgdmFsdWUgc2V0IGluIHRoZSBlbnZpcm9ubWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIHVzdWFsbHkgbm90IGRlc2lyYWJsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgc2l0dWF0aW9uLCB5b3UgY2FuIGVpdGhlciBwYXRjaCB0aGUgTWFrZWZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciB0aGlzIGNhc2UsIHlvdSBjYW4gZWl0aGVyIHBhdGNoIHRoZSBNYWtlZmlsZQogICAgICAgICAgICAgICAgICAgICAgICAgc28gaXQgc2V0cyB0aGUgZGVmYXVsdCB1c2luZyB0aGUgIj89IiBvcGVyYXRvciwgb3IKICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gYWx0ZXJuYXRpdmVseSBmb3JjZSB0aGUgdmFsdWUgb24gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGNvbW1hbmQgbGluZS4KQEAgLTExNTgsMTYgKzEyNzQsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgcGFydGljdWxhcmx5IHRydWUgYmVjYXVzZSB0aG9zZSBoYXJkY29kZWQgcGF0aHMKICAgICAgICAgICAgICAgICAgICAgICAgIG9mdGVuIHBvaW50IHRvIGxvY2F0aW9ucyBvbiB0aGUgYnVpbGQgaG9zdCBhbmQgdGh1cwogICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBlaXRoZXIgYmUgcmVhZC1vbmx5IG9yIHdpbGwgaW50cm9kdWNlCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250YW1pbmF0aW9uIGludG8gdGhlIGNyb3NzLWNvbXBpbGF0aW9uIGJ5IHZpcnR1ZSBvZgotICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgc3BlY2lmaWMgdG8gdGhlIGJ1aWxkIGhvc3QgcmF0aGVyIHRoYW4gdGhlIHRhcmdldC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhbWluYXRpb24gaW50byB0aGUgY3Jvc3MtY29tcGlsYXRpb24gYmVjYXVzZSB0aGV5CisgICAgICAgICAgICAgICAgICAgICAgICBhcmUgc3BlY2lmaWMgdG8gdGhlIGJ1aWxkIGhvc3QgcmF0aGVyIHRoYW4gdGhlIHRhcmdldC4KICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGNoaW5nIHRoZSBNYWtlZmlsZSB0byB1c2UgcHJlZml4IHZhcmlhYmxlcyBvciBvdGhlcgotICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCB2YXJpYWJsZXMgaXMgdXN1YWxseSB0aGUgd2F5IHRvIGhhbmRsZSB0aGlzLgorICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCB2YXJpYWJsZXMgaXMgdXN1YWxseSB0aGUgd2F5IHRvIGhhbmRsZSB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgU29tZXRpbWVzIGEgTWFrZWZpbGUgcnVucyB0YXJnZXQtc3BlY2lmaWMgY29tbWFuZHMgc3VjaAogICAgICAgICAgICAgICAgICAgICAgICAgYXMgPGZpbGVuYW1lPmxkY29uZmlnPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3Igc3VjaCBjYXNlcywgeW91IG1pZ2h0IGJlIGFibGUgdG8gc2ltcGx5IGFwcGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXRjaGVzIHRoYXQgcmVtb3ZlIHRoZXNlIGNvbW1hbmRzIGZyb20gdGhlIE1ha2VmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHN1Y2ggY2FzZXMsIHlvdSBtaWdodCBiZSBhYmxlIHRvIGFwcGx5IHBhdGNoZXMgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlIHRoZXNlIGNvbW1hbmRzIGZyb20gdGhlIE1ha2VmaWxlLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICA8L3BhcmE+CkBAIC0xMTc4LDkgKzEyOTUsMTEgQEAKIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgT2Z0ZW4sIHlvdSBuZWVkIHRvIGJ1aWxkIGFkZGl0aW9uYWwgdG9vbHMgdGhhdCBydW4gb24gdGhlCi0gICAgICAgICAgICAgICAgYnVpbGQgaG9zdCBzeXN0ZW0gYXMgb3Bwb3NlZCB0byB0aGUgdGFyZ2V0LgotICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgaW5kaWNhdGUgdGhpcyB1c2luZyBvbmUgb2YgdGhlIGZvbGxvd2luZyBtZXRob2RzCi0gICAgICAgICAgICAgICAgd2hlbiB5b3UgcnVuIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2hhcmR3YXJlLWJ1aWxkLXN5c3RlbS10ZXJtJz5idWlsZCBob3N0PC91bGluaz4KKyAgICAgICAgICAgICAgICBhcyBvcHBvc2VkIHRvIHRoZSB0YXJnZXQuCisgICAgICAgICAgICAgICAgWW91IHNob3VsZCBpbmRpY2F0ZSB0aGlzIHJlcXVpcmVtZW50IGJ5IHVzaW5nIG9uZSBvZiB0aGUKKyAgICAgICAgICAgICAgICBmb2xsb3dpbmcgbWV0aG9kcyB3aGVuIHlvdSBydW4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSByZWNpcGUgc3VjaCB0aGF0IGl0IGVuZHMKQEAgLTEyMDIsOCArMTMyMSw4IEBACiAgICAgICAgICAgICAgICAgICAgIHR5cGljYWxseSBhY2NvbXBsaXNoIHRoaXMgYnkgYnVpbGRpbmcgdGhlIG5hdGl2ZSBhbmQgdGFyZ2V0CiAgICAgICAgICAgICAgICAgICAgIHBhcnRzIHNlcGFyYXRlbHkgcmF0aGVyIHRoYW4gd2l0aGluIHRoZSBzYW1lIGNvbXBpbGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MuCi0gICAgICAgICAgICAgICAgICAgIFJlYWxpemUgdGhvdWdoIHRoYXQgd2l0aCB0aGUgIiZkYXNoOyZkYXNoO2Fsc28tbmF0aXZlIiBvcHRpb24sIHlvdQotICAgICAgICAgICAgICAgICAgICBjYW4gYWRkIHRoZSB0b29sIHVzaW5nIGp1c3Qgb25lIHJlY2lwZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICBSZWFsaXplIHRob3VnaCB0aGF0IHdpdGggdGhlICImZGFzaDsmZGFzaDthbHNvLW5hdGl2ZSIKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uLCB5b3UgY2FuIGFkZCB0aGUgdG9vbCB1c2luZyBqdXN0IG9uZSByZWNpcGUgZmlsZS4KICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KQEAgLTEyNDQsMTEgKzEzNjMsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kIiBlcnJvcnMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gc3VwcG9ydCBhZGRpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlLmpzIG1vZHVsZXMsIGEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bm9kZWpzPC9maWxlbmFtZT4gcmVjaXBlIG11c3QgYmUgcGFydCBvZiB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU0RLIGluIG9yZGVyIHRvIHByb3ZpZGUgTm9kZS5qcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0c2VsZi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiBvcmRlciB0byBzdXBwb3J0IGFkZGluZyBOb2RlLmpzIG1vZHVsZXMsIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bm9kZWpzPC9maWxlbmFtZT4gcmVjaXBlIG11c3QgYmUgcGFydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHlvdXIgU0RLLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8L25vdGU+CkBAIC0xMjU3LDE0ICsxMzc0LDE1IEBACiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBBcyBtZW50aW9uZWQgZWFybGllciwgeW91IGNhbiBhbHNvIGFkZCBOb2RlLmpzIG1vZHVsZXMKICAgICAgICAgICAgICAgICBkaXJlY3RseSBmcm9tIGEgcmVwb3NpdG9yeSBvciBsb2NhbCBzb3VyY2UgdHJlZS4KLSAgICAgICAgICAgICAgICBUbyBhZGQgbW9kdWxlcyB0aGlzIHdheSwgdXNlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IGluCi0gICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBmb3JtOgorICAgICAgICAgICAgICAgIFRvIGFkZCBtb2R1bGVzIHRoaXMgd2F5LCB1c2UgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBpbiB0aGUgZm9sbG93aW5nIGZvcm06CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGRldnRvb2wgYWRkIGh0dHBzOi8vZ2l0aHViLmNvbS9kaXZlcnNhcmlvL25vZGUtc3NkcAogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gZmV0Y2hlcyB0aGUgc3BlY2lmaWVkCi0gICAgICAgICAgICAgICAgR2l0IHJlcG9zaXRvcnksIGRldGVjdHMgdGhhdCB0aGUgY29kZSBpcyBOb2RlLmpzIGNvZGUsIGZldGNoZXMKLSAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgdXNpbmcgPGZpbGVuYW1lPm5wbTwvZmlsZW5hbWU+LCBhbmQgc2V0cworICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBmZXRjaGVzIHRoZQorICAgICAgICAgICAgICAgIHNwZWNpZmllZCBHaXQgcmVwb3NpdG9yeSwgZGV0ZWN0cyB0aGUgY29kZSBhcyBOb2RlLmpzCisgICAgICAgICAgICAgICAgY29kZSwgZmV0Y2hlcyBkZXBlbmRlbmNpZXMgdXNpbmcgPGZpbGVuYW1lPm5wbTwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICBzZXRzCiAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgIGFjY29yZGluZ2x5LgogICAgICAgICAgICAgPC9wYXJhPgpAQCAtMTI3NSw4ICsxMzkzLDkgQEAKICAgICAgICAgPHRpdGxlPldvcmtpbmcgV2l0aCBSZWNpcGVzPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFdoZW4gYnVpbGRpbmcgYSByZWNpcGUgd2l0aCA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZDwvZmlsZW5hbWU+LCB0aGUKLSAgICAgICAgICAgIHR5cGljYWwgYnVpbGQgcHJvZ3Jlc3Npb24gaXMgYXMgZm9sbG93czoKKyAgICAgICAgICAgIFdoZW4gYnVpbGRpbmcgYSByZWNpcGUgdXNpbmcgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZDwvZmlsZW5hbWU+IGNvbW1hbmQsIHRoZSB0eXBpY2FsIGJ1aWxkCisgICAgICAgICAgICBwcm9ncmVzc2VzIGFzIGZvbGxvd3M6CiAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICBGZXRjaCB0aGUgc291cmNlCkBAIC0xMjg4LDcgKzE0MDcsNyBAQAogICAgICAgICAgICAgICAgICAgICBDb25maWd1cmUgdGhlIHNvdXJjZQogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIENvbXBpbGluZyB0aGUgc291cmNlCisgICAgICAgICAgICAgICAgICAgIENvbXBpbGUgdGhlIHNvdXJjZQogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIEluc3RhbGwgdGhlIGJ1aWxkIG91dHB1dApAQCAtMTI5OSwxMCArMTQxOCwxMyBAQAogICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KICAgICAgICAgICAgIEZvciByZWNpcGVzIGluIHRoZSB3b3Jrc3BhY2UsIGZldGNoaW5nIGFuZCB1bnBhY2tpbmcgaXMgZGlzYWJsZWQKICAgICAgICAgICAgIGFzIHRoZSBzb3VyY2UgdHJlZSBoYXMgYWxyZWFkeSBiZWVuIHByZXBhcmVkIGFuZCBpcyBwZXJzaXN0ZW50LgotICAgICAgICAgICAgRWFjaCBvZiB0aGVzZSBidWlsZCBzdGVwcyBpcyBkZWZpbmVkIGFzIGEgZnVuY3Rpb24sIHVzdWFsbHkgd2l0aCBhCi0gICAgICAgICAgICAiZG9fIiBwcmVmaXguCi0gICAgICAgICAgICBUaGVzZSBmdW5jdGlvbnMgYXJlIHR5cGljYWxseSBzaGVsbCBzY3JpcHRzIGJ1dCBjYW4gaW5zdGVhZCBiZSB3cml0dGVuCi0gICAgICAgICAgICBpbiBQeXRob24uCisgICAgICAgICAgICBFYWNoIG9mIHRoZXNlIGJ1aWxkIHN0ZXBzIGlzIGRlZmluZWQgYXMgYSBmdW5jdGlvbiAodGFzayksIHVzdWFsbHkKKyAgICAgICAgICAgIHdpdGggYSAiZG9fIiBwcmVmaXggKGUuZy4KKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1mZXRjaCc+PGZpbGVuYW1lPmRvX2ZldGNoPC9maWxlbmFtZT48L3VsaW5rPiwKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy11bnBhY2snPjxmaWxlbmFtZT5kb191bnBhY2s8L2ZpbGVuYW1lPjwvdWxpbms+LAorICAgICAgICAgICAgYW5kIHNvIGZvcnRoKS4KKyAgICAgICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdHlwaWNhbGx5IHNoZWxsIHNjcmlwdHMgYnV0IGNhbiBpbnN0ZWFkIGJlCisgICAgICAgICAgICB3cml0dGVuIGluIFB5dGhvbi4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgpAQCAtMTMxMCwxMiArMTQzMiwxMyBAQAogICAgICAgICAgICAgcmVjaXBlIGRvZXMgbm90IGluY2x1ZGUgY29tcGxldGUgaW5zdHJ1Y3Rpb25zIGZvciBidWlsZGluZyB0aGUKICAgICAgICAgICAgIHNvZnR3YXJlLgogICAgICAgICAgICAgSW5zdGVhZCwgY29tbW9uIGZ1bmN0aW9uYWxpdHkgaXMgZW5jYXBzdWxhdGVkIGluIGNsYXNzZXMgaW5oZXJpdGVkCi0gICAgICAgICAgICB3aXRoIHRoZSA8ZmlsZW5hbWU+aW5oZXJpdDwvZmlsZW5hbWU+IGRpcmVjdGl2ZSwgbGVhdmluZyB0aGUgcmVjaXBlCi0gICAgICAgICAgICB0byBkZXNjcmliZSBqdXN0IHRoZSB0aGluZ3MgdGhhdCBhcmUgc3BlY2lmaWMgdG8gdGhlIHNvZnR3YXJlIHRvIGJlCi0gICAgICAgICAgICBidWlsdC4KLSAgICAgICAgICAgIEEgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtYmFzZSc+PGZpbGVuYW1lPmJhc2U8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICBjbGFzcyBleGlzdHMgdGhhdCBpcyBpbXBsaWNpdGx5IGluaGVyaXRlZCBieSBhbGwgcmVjaXBlcyBhbmQgcHJvdmlkZXMKLSAgICAgICAgICAgIHRoZSBmdW5jdGlvbmFsaXR5IHRoYXQgbW9zdCB0eXBpY2FsIHJlY2lwZXMgbmVlZC4KKyAgICAgICAgICAgIHdpdGggdGhlIDxmaWxlbmFtZT5pbmhlcml0PC9maWxlbmFtZT4gZGlyZWN0aXZlLgorICAgICAgICAgICAgVGhpcyB0ZWNobmlxdWUgbGVhdmVzIHRoZSByZWNpcGUgdG8gZGVzY3JpYmUganVzdCB0aGUgdGhpbmdzIHRoYXQKKyAgICAgICAgICAgIGFyZSBzcGVjaWZpYyB0byB0aGUgc29mdHdhcmUgYmVpbmcgYnVpbHQuCisgICAgICAgICAgICBBCisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1iYXNlJz48ZmlsZW5hbWU+YmFzZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgIGNsYXNzIGV4aXN0cyB0aGF0IGlzIGltcGxpY2l0bHkgaW5oZXJpdGVkIGJ5IGFsbCByZWNpcGVzIGFuZAorICAgICAgICAgICAgcHJvdmlkZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdGhhdCBtb3N0IHJlY2lwZXMgdHlwaWNhbGx5IG5lZWQuCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KQEAgLTEzMjcsNDYgKzE0NTAsNTcgQEAKICAgICAgICAgICAgIDx0aXRsZT5GaW5kaW5nIExvZ3MgYW5kIFdvcmsgRmlsZXM8L3RpdGxlPgogCiAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBXaGVuIHlvdSBhcmUgZGVidWdnaW5nIGEgcmVjaXBlIHRoYXQgeW91IHByZXZpb3VzbHkgY3JlYXRlZCB1c2luZwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IG9yIHdob3NlIHNvdXJjZSB5b3UgYXJlIG1vZGlmeWluZwotICAgICAgICAgICAgICAgIGJ5IHVzaW5nIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBtb2RpZnk8L2ZpbGVuYW1lPiBjb21tYW5kLCBhZnRlcgotICAgICAgICAgICAgICAgIHRoZSBmaXJzdCBydW4gb2YgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQ8L2ZpbGVuYW1lPiwgeW91IHdpbGwKLSAgICAgICAgICAgICAgICBmaW5kIHNvbWUgc3ltYm9saWMgbGlua3MgY3JlYXRlZCB3aXRoaW4gdGhlIHNvdXJjZSB0cmVlOgotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1sb2dzPC9maWxlbmFtZT4sIHdoaWNoIHBvaW50cyB0byB0aGUgZGlyZWN0b3J5IGluCi0gICAgICAgICAgICAgICAgd2hpY2ggbG9nIGZpbGVzIGFuZCBydW4gc2NyaXB0cyBmb3IgZWFjaCBidWlsZCBzdGVwIGFyZSBjcmVhdGVkCi0gICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5vZS13b3JrZGlyPC9maWxlbmFtZT4sIHdoaWNoIHBvaW50cyB0byB0aGUgdGVtcG9yYXJ5Ci0gICAgICAgICAgICAgICAgd29yayBhcmVhIGZvciB0aGUgcmVjaXBlLgotICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZXNlIGxpbmtzIHRvIGdldCBtb3JlIGluZm9ybWF0aW9uIG9uIHdoYXQgaXMKLSAgICAgICAgICAgICAgICBoYXBwZW5pbmcgYXQgZWFjaCBidWlsZCBzdGVwLgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBUaGVzZSBsb2NhdGlvbnMgdW5kZXIgPGZpbGVuYW1lPm9lLXdvcmtkaXI8L2ZpbGVuYW1lPiBhcmUKLSAgICAgICAgICAgICAgICBwYXJ0aWN1bGFybHkgdXNlZnVsOgorICAgICAgICAgICAgICAgIEFmdGVyIHRoZSBmaXJzdCBydW4gb2YgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBjb21tYW5kLCByZWNpcGVzIHRoYXQgd2VyZSBwcmV2aW91c2x5IGNyZWF0ZWQgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gY29tbWFuZCBvciB3aG9zZSBzb3VyY2VzIHdlcmUKKyAgICAgICAgICAgICAgICBtb2RpZmllZCB1c2luZyB0aGUgPGZpbGVuYW1lPmRldnRvb2wgbW9kaWZ5PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBjb21tYW5kIGNvbnRhaW4gc3ltYm9saWMgbGlua3MgY3JlYXRlZCB3aXRoaW4gdGhlIHNvdXJjZSB0cmVlOgogICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+aW1hZ2UvPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb250YWlucyBhbGwgb2YgdGhlIGZpbGVzIGluc3RhbGxlZCBhdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgV2l0aGluIGEgcmVjaXBlLCB0aGlzIGRpcmVjdG9yeSBpcyByZWZlcnJlZCB0byBieSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24KLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUQnPjxmaWxlbmFtZT5EPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vZS1sb2dzPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGxpbmsgcG9pbnRzIHRvIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggbG9nIGZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgcnVuIHNjcmlwdHMgZm9yIGVhY2ggYnVpbGQgc3RlcCBhcmUgY3JlYXRlZC4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnN5c3Jvb3QtZGVzdGRpci88L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhaW5zIGEgc3Vic2V0IG9mIGZpbGVzIGluc3RhbGxlZCB3aXRoaW4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT4gdGhhdCBoYXZlIGJlZW4gcHV0IGludG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWQgc3lzcm9vdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLXNoYXJpbmctZmlsZXMtYmV0d2Vlbi1yZWNpcGVzJz5TaGFyaW5nIEZpbGVzIEJldHdlZW4gUmVjaXBlczwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+cGFja2FnZXMtc3BsaXQvPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb250YWlucyBzdWJkaXJlY3RvcmllcyBmb3IgZWFjaCBwYWNrYWdlIHByb2R1Y2VkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b2Utd29ya2RpcjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBsaW5rIHBvaW50cyB0byB0aGUgdGVtcG9yYXJ5IHdvcmsgYXJlYSBmb3IgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1wYWNrYWdpbmcnPlBhY2thZ2luZzwvbGluaz4iIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxvY2F0aW9ucyB1bmRlcgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9lLXdvcmtkaXI8L2ZpbGVuYW1lPiBhcmUgcGFydGljdWxhcmx5CisgICAgICAgICAgICAgICAgICAgICAgICB1c2VmdWw6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmltYWdlLzwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGFpbnMgYWxsIG9mIHRoZSBmaWxlcyBpbnN0YWxsZWQgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1pbnN0YWxsJz48ZmlsZW5hbWU+ZG9faW5zdGFsbDwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2l0aGluIGEgcmVjaXBlLCB0aGlzIGRpcmVjdG9yeSBpcyByZWZlcnJlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYnkgdGhlIGV4cHJlc3Npb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4kezwvZmlsZW5hbWU+PHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUQnPjxmaWxlbmFtZT5EPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnN5c3Jvb3QtZGVzdGRpci88L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhaW5zIGEgc3Vic2V0IG9mIGZpbGVzIGluc3RhbGxlZCB3aXRoaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19pbnN0YWxsPC9maWxlbmFtZT4gdGhhdCBoYXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWVuIHB1dCBpbnRvIHRoZSBzaGFyZWQgc3lzcm9vdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLXNoYXJpbmctZmlsZXMtYmV0d2Vlbi1yZWNpcGVzJz5TaGFyaW5nIEZpbGVzIEJldHdlZW4gUmVjaXBlczwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlcy1zcGxpdC88L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhaW5zIHN1YmRpcmVjdG9yaWVzIGZvciBlYWNoIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y2VkIGJ5IHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1wYWNrYWdpbmcnPlBhY2thZ2luZzwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGVzZSBsaW5rcyB0byBnZXQgbW9yZSBpbmZvcm1hdGlvbiBvbiB3aGF0IGlzCisgICAgICAgICAgICAgICAgaGFwcGVuaW5nIGF0IGVhY2ggYnVpbGQgc3RlcC4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogCkBAIC0xNDEzLDEyICsxNTQ3LDE0IEBACiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFJlY2lwZXMgb2Z0ZW4gbmVlZCB0byB1c2UgZmlsZXMgcHJvdmlkZWQgYnkgb3RoZXIgcmVjaXBlcyBvbgotICAgICAgICAgICAgICAgIHRoZSBidWlsZCBob3N0LgorICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2hhcmR3YXJlLWJ1aWxkLXN5c3RlbS10ZXJtJz5idWlsZCBob3N0PC91bGluaz4uCiAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGFuIGFwcGxpY2F0aW9uIGxpbmtpbmcgdG8gYSBjb21tb24gbGlicmFyeSBuZWVkcwogICAgICAgICAgICAgICAgIGFjY2VzcyB0byB0aGUgbGlicmFyeSBpdHNlbGYgYW5kIGl0cyBhc3NvY2lhdGVkIGhlYWRlcnMuCiAgICAgICAgICAgICAgICAgVGhlIHdheSB0aGlzIGFjY2VzcyBpcyBhY2NvbXBsaXNoZWQgd2l0aGluIHRoZSBleHRlbnNpYmxlIFNESyBpcwogICAgICAgICAgICAgICAgIHRocm91Z2ggdGhlIHN5c3Jvb3QuCi0gICAgICAgICAgICAgICAgT25lIHN5c3Jvb3QgZXhpc3RzIHBlciAibWFjaGluZSIgZm9yIHdoaWNoIHRoZSBTREsgaXMgYmVpbmcgYnVpbHQuCisgICAgICAgICAgICAgICAgT25lIHN5c3Jvb3QgZXhpc3RzIHBlciAibWFjaGluZSIgZm9yIHdoaWNoIHRoZSBTREsgaXMgYmVpbmcKKyAgICAgICAgICAgICAgICBidWlsdC4KICAgICAgICAgICAgICAgICBJbiBwcmFjdGljYWwgdGVybXMsIHRoaXMgbWVhbnMgYSBzeXNyb290IGV4aXN0cyBmb3IgdGhlIHRhcmdldAogICAgICAgICAgICAgICAgIG1hY2hpbmUsIGFuZCBhIHN5c3Jvb3QgZXhpc3RzIGZvciB0aGUgYnVpbGQgaG9zdC4KICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTE0MzEsNyArMTU2Nyw3IEBACiAgICAgICAgICAgICAgICAgdGFzayB3aXRoaW4gdGhlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItRCc+PGZpbGVuYW1lPkQ8L2ZpbGVuYW1lPjwvdWxpbms+PGZpbGVuYW1lPn08L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICBBIHN1YnNldCBvZiB0aGVzZSBmaWxlcyBhdXRvbWF0aWNhbGx5IGdvIGludG8gdGhlIHN5c3Jvb3QuCisgICAgICAgICAgICAgICAgQSBzdWJzZXQgb2YgdGhlc2UgZmlsZXMgYXV0b21hdGljYWxseSBnb2VzIGludG8gdGhlIHN5c3Jvb3QuCiAgICAgICAgICAgICAgICAgVGhlIHJlYXNvbiBmb3IgdGhpcyBsaW1pdGF0aW9uIGlzIHRoYXQgYWxtb3N0IGFsbCBmaWxlcyB0aGF0IGdvCiAgICAgICAgICAgICAgICAgaW50byB0aGUgc3lzcm9vdCBhcmUgY2F0YWxvZ2VkIGluIG1hbmlmZXN0cyBpbiBvcmRlciB0byBlbnN1cmUKICAgICAgICAgICAgICAgICB0aGV5IGNhbiBiZSByZW1vdmVkIGxhdGVyIHdoZW4gYSByZWNpcGUgaXMgbW9kaWZpZWQgb3IgcmVtb3ZlZC4KQEAgLTE0NTYsMjAgKzE1OTIsMjAgQEAKICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtcGFja2FnZSc+PGZpbGVuYW1lPmRvX3BhY2thZ2U8L2ZpbGVuYW1lPjwvdWxpbms+CiAgICAgICAgICAgICAgICAgdGFzaywgZmlsZXMgaW5zdGFsbGVkIGR1cmluZyB0aGUKICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MtaW5zdGFsbCc+PGZpbGVuYW1lPmRvX2luc3RhbGw8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgdGFzayBhcmUgc3BsaXQgaW50byBvbmUgbWFpbiBwYWNrYWdlLCB3aGljaCBpcyBhbG1vc3QgYWx3YXlzIG5hbWVkCi0gICAgICAgICAgICAgICAgdGhlIHNhbWUgYXMgdGhlIHJlY2lwZSwgYW5kIHNldmVyYWwgb3RoZXIgcGFja2FnZXMuCi0gICAgICAgICAgICAgICAgVGhpcyBzZXBhcmF0aW9uIGlzIGRvbmUgYmVjYXVzZSBub3QgYWxsIG9mIHRob3NlIGluc3RhbGxlZCBmaWxlcwotICAgICAgICAgICAgICAgIGFyZSBhbHdheXMgdXNlZnVsIGluIGV2ZXJ5IGltYWdlLgorICAgICAgICAgICAgICAgIHRhc2sgYXJlIHNwbGl0IGludG8gb25lIG1haW4gcGFja2FnZSwgd2hpY2ggaXMgYWxtb3N0IGFsd2F5cworICAgICAgICAgICAgICAgIG5hbWVkIHRoZSBzYW1lIGFzIHRoZSByZWNpcGUsIGFuZCBpbnRvIHNldmVyYWwgb3RoZXIgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgVGhpcyBzZXBhcmF0aW9uIGV4aXN0cyBiZWNhdXNlIG5vdCBhbGwgb2YgdGhvc2UgaW5zdGFsbGVkIGZpbGVzCisgICAgICAgICAgICAgICAgYXJlIHVzZWZ1bCBpbiBldmVyeSBpbWFnZS4KICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IHByb2JhYmx5IGRvIG5vdCBuZWVkIGFueSBvZiB0aGUgZG9jdW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIGluc3RhbGxlZCBpbiBhIHByb2R1Y3Rpb24gaW1hZ2UuCi0gICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCBmb3IgZWFjaCByZWNpcGUgdGhlIGRvY3VtZW50YXRpb24gZmlsZXMgYXJlIHNlcGFyYXRlZAotICAgICAgICAgICAgICAgIGludG8gYSA8ZmlsZW5hbWU+LWRvYzwvZmlsZW5hbWU+IHBhY2thZ2UuCi0gICAgICAgICAgICAgICAgUmVjaXBlcyB0aGF0IHBhY2thZ2Ugc29mdHdhcmUgdGhhdCBoYXMgb3B0aW9uYWwgbW9kdWxlcyBvcgotICAgICAgICAgICAgICAgIHBsdWdpbnMgbWlnaHQgZG8gYWRkaXRpb25hbCBwYWNrYWdlIHNwbGl0dGluZyBhcyB3ZWxsLgorICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgZm9yIGVhY2ggcmVjaXBlIHRoZSBkb2N1bWVudGF0aW9uIGZpbGVzIGFyZQorICAgICAgICAgICAgICAgIHNlcGFyYXRlZCBpbnRvIGEgPGZpbGVuYW1lPi1kb2M8L2ZpbGVuYW1lPiBwYWNrYWdlLgorICAgICAgICAgICAgICAgIFJlY2lwZXMgdGhhdCBwYWNrYWdlIHNvZnR3YXJlIGNvbnRhaW5pbmcgb3B0aW9uYWwgbW9kdWxlcyBvcgorICAgICAgICAgICAgICAgIHBsdWdpbnMgbWlnaHQgdW5kZXJnbyBhZGRpdGlvbmFsIHBhY2thZ2Ugc3BsaXR0aW5nIGFzIHdlbGwuCiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEFmdGVyIGJ1aWxkaW5nIGEgcmVjaXBlIHlvdSBjYW4gc2VlIHdoZXJlIGZpbGVzIGhhdmUgZ29uZSBieQorICAgICAgICAgICAgICAgIEFmdGVyIGJ1aWxkaW5nIGEgcmVjaXBlLCB5b3UgY2FuIHNlZSB3aGVyZSBmaWxlcyBoYXZlIGdvbmUgYnkKICAgICAgICAgICAgICAgICBsb29raW5nIGluIHRoZSA8ZmlsZW5hbWU+b2Utd29ya2Rpci9wYWNrYWdlcy1zcGxpdDwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LCB3aGljaCBjb250YWlucyBhIHN1YmRpcmVjdG9yeSBmb3IgZWFjaCBwYWNrYWdlLgogICAgICAgICAgICAgICAgIEFwYXJ0IGZyb20gc29tZSBhZHZhbmNlZCBjYXNlcywgdGhlCkBAIC0xNDc5LDE3ICsxNjE1LDE4IEBACiAgICAgICAgICAgICAgICAgdmFyaWFibGVzIGNvbnRyb2xzIHNwbGl0dGluZy4KICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlBBQ0tBR0VTPC9maWxlbmFtZT4gdmFyaWFibGUgbGlzdHMgYWxsIG9mIHRoZQogICAgICAgICAgICAgICAgIHBhY2thZ2VzIHRvIGJlIHByb2R1Y2VkLCB3aGlsZSB0aGUgPGZpbGVuYW1lPkZJTEVTPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICB2YXJpYWJsZSBzcGVjaWZpZXMgd2hpY2ggZmlsZXMgdG8gaW5jbHVkZSBpbiBlYWNoIHBhY2thZ2UsCisgICAgICAgICAgICAgICAgdmFyaWFibGUgc3BlY2lmaWVzIHdoaWNoIGZpbGVzIHRvIGluY2x1ZGUgaW4gZWFjaCBwYWNrYWdlIGJ5CiAgICAgICAgICAgICAgICAgdXNpbmcgYW4gb3ZlcnJpZGUgdG8gc3BlY2lmeSB0aGUgcGFja2FnZS4KLSAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgPGZpbGVuYW1lPkZJTEVTXyR7UE59PC9maWxlbmFtZT4gc3BlY2lmaWVzIHRoZSBmaWxlcwotICAgICAgICAgICAgICAgIHRvIGdvIGludG8gdGhlIG1haW4gcGFja2FnZSAoaS5lLiB0aGUgbWFpbiBwYWNrYWdlIGlzIG5hbWVkIHRoZQotICAgICAgICAgICAgICAgIHNhbWUgYXMgdGhlIHJlY2lwZSBhbmQKKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgPGZpbGVuYW1lPkZJTEVTXyR7UE59PC9maWxlbmFtZT4gc3BlY2lmaWVzIHRoZQorICAgICAgICAgICAgICAgIGZpbGVzIHRvIGdvIGludG8gdGhlIG1haW4gcGFja2FnZSAoaS5lLiB0aGUgbWFpbiBwYWNrYWdlIGhhcworICAgICAgICAgICAgICAgIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHJlY2lwZSBhbmQKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICBldmFsdWF0ZXMgdG8gdGhlIHJlY2lwZSBuYW1lKS4KLSAgICAgICAgICAgICAgICBUaGUgb3JkZXIgb2YgdGhlIDxmaWxlbmFtZT5QQUNLQUdFUzwvZmlsZW5hbWU+IHZhbHVlIGlzIHNpZ25pZmljYW50LgorICAgICAgICAgICAgICAgIFRoZSBvcmRlciBvZiB0aGUgPGZpbGVuYW1lPlBBQ0tBR0VTPC9maWxlbmFtZT4gdmFsdWUgaXMKKyAgICAgICAgICAgICAgICBzaWduaWZpY2FudC4KICAgICAgICAgICAgICAgICBGb3IgZWFjaCBpbnN0YWxsZWQgZmlsZSwgdGhlIGZpcnN0IHBhY2thZ2Ugd2hvc2UKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RklMRVM8L2ZpbGVuYW1lPiB2YWx1ZSBtYXRjaGVzIHRoZSBmaWxlIGlzIHRoZSBwYWNrYWdlCi0gICAgICAgICAgICAgICAgaW50byB3aGljaCB0aGUgZmlsZSBnb2VzLgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+IHZhbHVlIG1hdGNoZXMgdGhlIGZpbGUgaXMgdGhlCisgICAgICAgICAgICAgICAgcGFja2FnZSBpbnRvIHdoaWNoIHRoZSBmaWxlIGdvZXMuCiAgICAgICAgICAgICAgICAgRGVmYXVsdHMgZXhpc3QgZm9yIGJvdGggdGhlIDxmaWxlbmFtZT5QQUNLQUdFUzwvZmlsZW5hbWU+IGFuZAogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GSUxFUzwvZmlsZW5hbWU+IHZhcmlhYmxlcy4KICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHlvdSBtaWdodCBmaW5kIHlvdSBkbyBub3QgZXZlbiBuZWVkIHRvIHNldCB0aGVzZQpAQCAtMTUxMSwyOSArMTY0OCwyOSBAQAogICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgZGVwbG95LXRhcmdldDwvZmlsZW5hbWU+IGNvbW1hbmQuCiAgICAgICAgICAgICBCZWNhdXNlIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBkZXBsb3ktdGFyZ2V0PC9maWxlbmFtZT4gY29tbWFuZAogICAgICAgICAgICAgYmFja3MgdXAgYW55IGZpbGVzIGl0IG92ZXJ3cml0ZXMsIHlvdSBjYW4gdXNlIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgdW5kZXBsb3ktdGFyZ2V0PC9maWxlbmFtZT4gdG8gcmVzdG9yZSB0aG9zZSBmaWxlcwotICAgICAgICAgICAgYW5kIHJlbW92ZSBhbnkgb3RoZXIgZmlsZXMgdGhlIHJlY2lwZSBkZXBsb3llZC4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIHVuZGVwbG95LXRhcmdldDwvZmlsZW5hbWU+IGNvbW1hbmQgdG8gcmVzdG9yZQorICAgICAgICAgICAgdGhvc2UgZmlsZXMgYW5kIHJlbW92ZSBhbnkgb3RoZXIgZmlsZXMgdGhlIHJlY2lwZSBkZXBsb3llZC4KICAgICAgICAgICAgIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBkZXZ0b29sIHVuZGVwbG95LXRhcmdldCBsaWdodHRwZCByb290QDE5Mi4xNjguNy4yCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBkZXBsb3llZCBtdWx0aXBsZSBhcHBsaWNhdGlvbnMsIHlvdSBjYW4gcmVtb3ZlIHRoZW0KLSAgICAgICAgICAgIGFsbCBhdCBvbmNlIHRodXMgcmVzdG9yaW5nIHRoZSB0YXJnZXQgZGV2aWNlIGJhY2sgdG8gaXRzCisgICAgICAgICAgICBhbGwgdXNpbmcgdGhlICItYSIgb3B0aW9uIHRodXMgcmVzdG9yaW5nIHRoZSB0YXJnZXQgZGV2aWNlIHRvIGl0cwogICAgICAgICAgICAgb3JpZ2luYWwgc3RhdGU6CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCB1bmRlcGxveS10YXJnZXQgLWEgcm9vdEAxOTIuMTY4LjcuMgogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgSW5mb3JtYXRpb24gYWJvdXQgZmlsZXMgZGVwbG95ZWQgdG8gdGhlIHRhcmdldCBhcyB3ZWxsIGFzIGFueQogICAgICAgICAgICAgYmFja2VkIHVwIGZpbGVzIGFyZSBzdG9yZWQgb24gdGhlIHRhcmdldCBpdHNlbGYuCi0gICAgICAgICAgICBUaGlzIHN0b3JhZ2Ugb2YgY291cnNlIHJlcXVpcmVzIHNvbWUgYWRkaXRpb25hbCBzcGFjZQorICAgICAgICAgICAgVGhpcyBzdG9yYWdlLCBvZiBjb3Vyc2UsIHJlcXVpcmVzIHNvbWUgYWRkaXRpb25hbCBzcGFjZQogICAgICAgICAgICAgb24gdGhlIHRhcmdldCBtYWNoaW5lLgogICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sIGRlcGxveS10YXJnZXQ8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbCB1bmRlcGxveS10YXJnZXQ8L2ZpbGVuYW1lPiBjb21tYW5kIGRvIG5vdAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIHVuZGVwbG95LXRhcmdldDwvZmlsZW5hbWU+IGNvbW1hbmRzIGRvIG5vdAogICAgICAgICAgICAgICAgIGN1cnJlbnRseSBpbnRlcmFjdCB3aXRoIGFueSBwYWNrYWdlIG1hbmFnZW1lbnQgc3lzdGVtIG9uIHRoZQogICAgICAgICAgICAgICAgIHRhcmdldCBkZXZpY2UgKGUuZy4gUlBNIG9yIE9QS0cpLgotICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgeW91IHNob3VsZCBub3QgaW50ZXJtaW5nbGUgb3BlcmF0aW9ucwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGRlcGxveS10YXJnZXQ8L2ZpbGVuYW1lPiBhbmQgdGhlIHBhY2thZ2UKKyAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHlvdSBzaG91bGQgbm90IGludGVybWluZ2xlCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2wgZGVwbG95LXRhcmdldDwvZmlsZW5hbWU+IGFuZCBwYWNrYWdlCiAgICAgICAgICAgICAgICAgbWFuYWdlciBvcGVyYXRpb25zIG9uIHRoZSB0YXJnZXQgZGV2aWNlLgogICAgICAgICAgICAgICAgIERvaW5nIHNvIGNvdWxkIHJlc3VsdCBpbiBhIGNvbmZsaWN0aW5nIHNldCBvZiBmaWxlcy4KICAgICAgICAgICAgIDwvbm90ZT4KQEAgLTE1NDQsMTYgKzE2ODEsMTQgQEAKICAgICAgICAgPHRpdGxlPkluc3RhbGxpbmcgQWRkaXRpb25hbCBJdGVtcyBJbnRvIHRoZSBFeHRlbnNpYmxlIFNESzwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgZXh0ZW5zaWJsZSBTREsgdHlwaWNhbGx5IG9ubHkgY29tZXMgd2l0aCBhIHNtYWxsIG51bWJlciBvZiB0b29scwotICAgICAgICAgICAgYW5kIGxpYnJhcmllcyBvdXQgb2YgdGhlIGJveC4KLSAgICAgICAgICAgIElmIHlvdSBoYXZlIGEgbWluaW1hbCBTREssIHRoZW4gaXQgc3RhcnRzIG1vc3RseSBlbXB0eSBhbmQgaXMKLSAgICAgICAgICAgIHBvcHVsYXRlZCBvbi1kZW1hbmQuCi0gICAgICAgICAgICBIb3dldmVyLCBzb21ldGltZXMgeW91IHdpbGwgbmVlZCB0byBleHBsaWNpdGx5IGluc3RhbGwgZXh0cmEgaXRlbXMKLSAgICAgICAgICAgIGludG8gdGhlIFNESy4KKyAgICAgICAgICAgIE91dCBvZiB0aGUgYm94IHRoZSBleHRlbnNpYmxlIFNESyB0eXBpY2FsbHkgb25seSBjb21lcyB3aXRoIGEgc21hbGwKKyAgICAgICAgICAgIG51bWJlciBvZiB0b29scyBhbmQgbGlicmFyaWVzLgorICAgICAgICAgICAgQSBtaW5pbWFsIFNESyBzdGFydHMgbW9zdGx5IGVtcHR5IGFuZCBpcyBwb3B1bGF0ZWQgb24tZGVtYW5kLgorICAgICAgICAgICAgU29tZXRpbWVzIHlvdSBtdXN0IGV4cGxpY2l0bHkgaW5zdGFsbCBleHRyYSBpdGVtcyBpbnRvIHRoZSBTREsuCiAgICAgICAgICAgICBJZiB5b3UgbmVlZCB0aGVzZSBleHRyYSBpdGVtcywgeW91IGNhbiBmaXJzdCBzZWFyY2ggZm9yIHRoZSBpdGVtcwogICAgICAgICAgICAgdXNpbmcgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIHNlYXJjaDwvZmlsZW5hbWU+IGNvbW1hbmQuCiAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgbmVlZCB0byBsaW5rIHRvIGxpYkdMIGJ1dCB5b3UgYXJlIG5vdCBzdXJlCi0gICAgICAgICAgICB3aGljaCByZWNpcGUgcHJvdmlkZXMgaXQuCisgICAgICAgICAgICB3aGljaCByZWNpcGUgcHJvdmlkZXMgbGliR0wuCiAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gZmluZCBvdXQ6CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCBzZWFyY2ggbGliR0wKQEAgLTE1NjQsMTcgKzE2OTksMTkgQEAKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBkZXZ0b29sIHNkay1pbnN0YWxsIG1lc2EKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBzZGstaW5zdGFsbDwvZmlsZW5hbWU+IGFzc3VtZXMgdGhlCi0gICAgICAgICAgICBpdGVtIGlzIGF2YWlsYWJsZSBpbiBwcmUtYnVpbHQgZm9ybSBmcm9tIHlvdXIgU0RLIHByb3ZpZGVyLgorICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIHNkay1pbnN0YWxsPC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgYXNzdW1lcyB0aGUgaXRlbSBpcyBhdmFpbGFibGUgaW4gcHJlLWJ1aWx0IGZvcm0gZnJvbSB5b3VyIFNESworICAgICAgICAgICAgcHJvdmlkZXIuCiAgICAgICAgICAgICBJZiB0aGUgaXRlbSBpcyBub3QgYXZhaWxhYmxlIGFuZCBpdCBpcyBhY2NlcHRhYmxlIHRvIGJ1aWxkIHRoZSBpdGVtCiAgICAgICAgICAgICBmcm9tIHNvdXJjZSwgeW91IGNhbiBhZGQgdGhlICItcyIgb3B0aW9uIGFzIGZvbGxvd3M6CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCBzZGstaW5zdGFsbCAtcyBtZXNhCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBJdCBpcyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgdGhhdCBidWlsZGluZyB0aGUgaXRlbSBmcm9tIHNvdXJjZSB0YWtlcwotICAgICAgICAgICAgc2lnbmlmaWNhbnRseSBsb25nZXIgdGhhbiBpbnN0YWxsaW5nIHRoZSBwcmUtYnVpbHQgYXJ0aWZhY3QuCi0gICAgICAgICAgICBBbHNvLCBpZiBubyByZWNpcGUgZXhpc3RzIGZvciB0aGUgaXRlbSB5b3Ugd2FudCB0byBhZGQgdG8gdGhlIFNESywgeW91Ci0gICAgICAgICAgICBtdXN0IGluc3RlYWQgYWRkIGl0IHVzaW5nIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBhZGQ8L2ZpbGVuYW1lPiBjb21tYW5kLgorICAgICAgICAgICAgSXQgaXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyIHRoYXQgYnVpbGRpbmcgdGhlIGl0ZW0gZnJvbSBzb3VyY2UKKyAgICAgICAgICAgIHRha2VzIHNpZ25pZmljYW50bHkgbG9uZ2VyIHRoYW4gaW5zdGFsbGluZyB0aGUgcHJlLWJ1aWx0IGFydGlmYWN0LgorICAgICAgICAgICAgQWxzbywgaWYgbm8gcmVjaXBlIGV4aXN0cyBmb3IgdGhlIGl0ZW0geW91IHdhbnQgdG8gYWRkIHRvIHRoZSBTREssCisgICAgICAgICAgICB5b3UgbXVzdCBpbnN0ZWFkIGFkZCB0aGUgaXRlbSB1c2luZyB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IGNvbW1hbmQuCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKQEAgLTE2MTIsMzEgKzE3NDksMzQgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFlvdSBtaWdodCBuZWVkIHRvIHByb2R1Y2UgYW4gU0RLIHRoYXQgY29udGFpbnMgeW91ciBvd24gY3VzdG9tCi0gICAgICAgICAgICBsaWJyYXJpZXMgZm9yIHNlbmRpbmcgdG8gYSB0aGlyZCBwYXJ0eSAoZS5nLiwgaWYgeW91IGFyZSBhIHZlbmRvciB3aXRoCi0gICAgICAgICAgICBjdXN0b21lcnMgbmVlZGluZyB0byBidWlsZCB0aGVpciBvd24gc29mdHdhcmUgZm9yIHRoZSB0YXJnZXQgcGxhdGZvcm0pLgotICAgICAgICAgICAgSWYgdGhhdCBpcyB0aGUgY2FzZSwgdGhlbiB5b3UgY2FuIHByb2R1Y2UgYSBkZXJpdmF0aXZlIFNESyBiYXNlZCBvbgotICAgICAgICAgICAgdGhlIGN1cnJlbnRseSBpbnN0YWxsZWQgU0RLIGZhaXJseSBlYXNpbHkuCi0gICAgICAgICAgICBVc2UgdGhlc2Ugc3RlcHM6CisgICAgICAgICAgICBsaWJyYXJpZXMuCisgICAgICAgICAgICBBIGdvb2QgZXhhbXBsZSB3b3VsZCBiZSBpZiB5b3Ugd2VyZSBhIHZlbmRvciB3aXRoIGN1c3RvbWVycyB0aGF0CisgICAgICAgICAgICB1c2UgeW91ciBTREsgdG8gYnVpbGQgdGhlaXIgb3duIHBsYXRmb3JtLXNwZWNpZmljIHNvZnR3YXJlIGFuZAorICAgICAgICAgICAgdGhvc2UgY3VzdG9tZXJzIG5lZWQgYW4gU0RLIHRoYXQgaGFzIGN1c3RvbSBsaWJyYXJpZXMuCisgICAgICAgICAgICBJbiBzdWNoIGEgY2FzZSwgeW91IGNhbiBwcm9kdWNlIGEgZGVyaXZhdGl2ZSBTREsgYmFzZWQgb24gdGhlCisgICAgICAgICAgICBjdXJyZW50bHkgaW5zdGFsbGVkIFNESyBmYWlybHkgZWFzaWx5IGJ5IGZvbGxvd2luZyB0aGVzZSBzdGVwczoKICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SWYgbmVjZXNzYXJ5LCBpbnN0YWxsIGFuIGV4dGVuc2libGUgU0RLIHRoYXQKKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIG5lY2Vzc2FyeSwgaW5zdGFsbCBhbiBleHRlbnNpYmxlIFNESyB0aGF0CiAgICAgICAgICAgICAgICAgICAgIHlvdSB3YW50IHRvIHVzZSBhcyBhIGJhc2UgZm9yIHlvdXIgZGVyaXZhdGl2ZSBTREsuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Tb3VyY2UgdGhlIGVudmlyb25tZW50IHNjcmlwdCBmb3IgdGhlIFNESy4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNvdXJjZSB0aGUgZW52aXJvbm1lbnQgc2NyaXB0IGZvciB0aGUgU0RLLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QWRkIHRoZSBleHRyYSBsaWJyYXJpZXMgb3Igb3RoZXIgY29tcG9uZW50cwotICAgICAgICAgICAgICAgICAgICB5b3Ugd2FudCBieSB1c2luZyB0aGUgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgY29tbWFuZC4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFkZCB0aGUgZXh0cmEgbGlicmFyaWVzIG9yIG90aGVyIGNvbXBvbmVudHMgeW91IHdhbnQgYnkKKyAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IGNvbW1hbmQuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5SdW4gdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkLXNkazwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGNvbW1hbmQuCisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBSdW4gdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkLXNkazwvZmlsZW5hbWU+IGNvbW1hbmQuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIFRoZSBhYm92ZSBwcm9jZWR1cmUgdGFrZXMgdGhlIHJlY2lwZXMgYWRkZWQgdG8gdGhlIHdvcmtzcGFjZSBhbmQKLSAgICAgICAgICAgIGNvbnN0cnVjdHMgYSBuZXcgU0RLIGluc3RhbGxlciBjb250YWluaW5nIHRob3NlIHJlY2lwZXMgYW5kIHRoZQorICAgICAgICAgICAgVGhlIHByZXZpb3VzIHN0ZXBzIHRha2UgdGhlIHJlY2lwZXMgYWRkZWQgdG8gdGhlIHdvcmtzcGFjZSBhbmQKKyAgICAgICAgICAgIGNvbnN0cnVjdCBhIG5ldyBTREsgaW5zdGFsbGVyIHRoYXQgY29udGFpbnMgdGhvc2UgcmVjaXBlcyBhbmQgdGhlCiAgICAgICAgICAgICByZXN1bHRpbmcgYmluYXJ5IGFydGlmYWN0cy4KICAgICAgICAgICAgIFRoZSByZWNpcGVzIGdvIGludG8gdGhlaXIgb3duIHNlcGFyYXRlIGxheWVyIGluIHRoZSBjb25zdHJ1Y3RlZAotICAgICAgICAgICAgZGVyaXZhdGl2ZSBTREssIGxlYXZpbmcgdGhlIHdvcmtzcGFjZSBjbGVhbiBhbmQgcmVhZHkgZm9yIHVzZXJzCi0gICAgICAgICAgICB0byBhZGQgdGhlaXIgb3duIHJlY2lwZXMuCisgICAgICAgICAgICBkZXJpdmF0aXZlIFNESywgd2hpY2ggbGVhdmVzIHRoZSB3b3Jrc3BhY2UgY2xlYW4gYW5kIHJlYWR5IGZvcgorICAgICAgICAgICAgdXNlcnMgdG8gYWRkIHRoZWlyIG93biByZWNpcGVzLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogPC9jaGFwdGVyPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstaW50cm8ueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstaW50cm8ueG1sCmluZGV4IGI2OTI1ZmEuLjg2NDJiZTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWludHJvLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1pbnRyby54bWwKQEAgLTMxLDE1ICszMSwxOCBAQAogICAgIDxwYXJhPgogICAgICAgICBBbGwgU0RLcyBjb25zaXN0IG9mIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkNyb3NzLURldmVsb3BtZW50IFRvb2xjaGFpbjwvZW1waGFzaXM+OgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Dcm9zcy1EZXZlbG9wbWVudCBUb29sY2hhaW48L2VtcGhhc2lzPjoKICAgICAgICAgICAgICAgICBUaGlzIHRvb2xjaGFpbiBjb250YWlucyBhIGNvbXBpbGVyLCBkZWJ1Z2dlciwgYW5kIHZhcmlvdXMKICAgICAgICAgICAgICAgICBtaXNjZWxsYW5lb3VzIHRvb2xzLgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5MaWJyYXJpZXMsIEhlYWRlcnMsIGFuZCBTeW1ib2xzPC9lbXBoYXNpcz46CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxpYnJhcmllcywgSGVhZGVycywgYW5kIFN5bWJvbHM8L2VtcGhhc2lzPjoKICAgICAgICAgICAgICAgICBUaGUgbGlicmFyaWVzLCBoZWFkZXJzLCBhbmQgc3ltYm9scyBhcmUgc3BlY2lmaWMgdG8gdGhlIGltYWdlCiAgICAgICAgICAgICAgICAgKGkuZS4gdGhleSBtYXRjaCB0aGUgaW1hZ2UpLgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5FbnZpcm9ubWVudCBTZXR1cCBTY3JpcHQ8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RW52aXJvbm1lbnQgU2V0dXAgU2NyaXB0PC9lbXBoYXNpcz46CiAgICAgICAgICAgICAgICAgVGhpcyA8ZmlsZW5hbWU+Ki5zaDwvZmlsZW5hbWU+IGZpbGUsIG9uY2UgcnVuLCBzZXRzIHVwIHRoZQogICAgICAgICAgICAgICAgIGNyb3NzLWRldmVsb3BtZW50IGVudmlyb25tZW50IGJ5IGRlZmluaW5nIHZhcmlhYmxlcyBhbmQKICAgICAgICAgICAgICAgICBwcmVwYXJpbmcgZm9yIFNESyB1c2UuCkBAIC00OCw3ICs1MSw3IEBACiAgICAgPC9wYXJhPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIEFkZGl0aW9uYWxseSBhbiBleHRlbnNpYmxlIFNESyBoYXMgdG9vbHMgdGhhdCBhbGxvdyB5b3UgdG8gZWFzaWx5IGFkZAorICAgICAgICBBZGRpdGlvbmFsbHksIGFuIGV4dGVuc2libGUgU0RLIGhhcyB0b29scyB0aGF0IGFsbG93IHlvdSB0byBlYXNpbHkgYWRkCiAgICAgICAgIG5ldyBhcHBsaWNhdGlvbnMgYW5kIGxpYnJhcmllcyB0byBhbiBpbWFnZSwgbW9kaWZ5IHRoZSBzb3VyY2Ugb2YgYW4KICAgICAgICAgZXhpc3RpbmcgY29tcG9uZW50LCB0ZXN0IGNoYW5nZXMgb24gdGhlIHRhcmdldCBoYXJkd2FyZSwgYW5kIGVhc2lseQogICAgICAgICBpbnRlZ3JhdGUgYW4gYXBwbGljYXRpb24gaW50byB0aGUKQEAgLTgxLDE0ICs4NCwxNSBAQAogICAgICAgICBhbmQKICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxEJz48ZmlsZW5hbWU+TEQ8L2ZpbGVuYW1lPjwvdWxpbms+LgogICAgICAgICBUaGlzIHJlZHVjZXMgdGhlIHNwYWNlIG5lZWRlZCBmb3IgdGhlIHRvb2xzLgotICAgICAgICBVbmRlcnN0YW5kLCBob3dldmVyLCB0aGF0IGEgc3lzcm9vdCBpcyBzdGlsbCBuZWVkZWQgZm9yIGV2ZXJ5IHRhcmdldAotICAgICAgICBzaW5jZSB0aG9zZSBiaW5hcmllcyBhcmUgdGFyZ2V0LXNwZWNpZmljLgorICAgICAgICBVbmRlcnN0YW5kLCBob3dldmVyLCB0aGF0IGV2ZXJ5IHRhcmdldCBzdGlsbCBuZWVkcyBhIHN5c3Jvb3QgYmVjYXVzZQorICAgICAgICB0aG9zZSBiaW5hcmllcyBhcmUgdGFyZ2V0LXNwZWNpZmljLgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgogICAgICAgICBUaGUgU0RLIGRldmVsb3BtZW50IGVudmlyb25tZW50IGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIHNlbGYtY29udGFpbmVkIFNESywgd2hpY2ggaXMgYW4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgc2VsZi1jb250YWluZWQgU0RLLCB3aGljaCBpcyBhbgogICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjcm9zcy10b29sY2hhaW4gYW5kCiAgICAgICAgICAgICAgICAgbWF0Y2hpbmcgc3lzcm9vdHMgKHRhcmdldCBhbmQgbmF0aXZlKSBhbGwgYnVpbHQgYnkgdGhlCiAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSAoZS5nLiB0aGUgU0RLKS4KQEAgLTEwMCwyMSArMTA0LDI0IEBACiAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUgZXh0ZW5zaWJsZSBTREsgY29udGFpbnMgdGhlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRldnRvb2w8L2ZpbGVuYW1lPiBmdW5jdGlvbmFsaXR5LgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBRdWljayBFTVVsYXRvciAoUUVNVSksIHdoaWNoIGxldHMgeW91IHNpbXVsYXRlCisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIFF1aWNrIEVNVWxhdG9yIChRRU1VKSwgd2hpY2ggbGV0cyB5b3Ugc2ltdWxhdGUKICAgICAgICAgICAgICAgICB0YXJnZXQgaGFyZHdhcmUuCiAgICAgICAgICAgICAgICAgUUVNVSBpcyBub3QgbGl0ZXJhbGx5IHBhcnQgb2YgdGhlIFNESy4KICAgICAgICAgICAgICAgICBZb3UgbXVzdCBidWlsZCBhbmQgaW5jbHVkZSB0aGlzIGVtdWxhdG9yIHNlcGFyYXRlbHkuCiAgICAgICAgICAgICAgICAgSG93ZXZlciwgUUVNVSBwbGF5cyBhbiBpbXBvcnRhbnQgcm9sZSBpbiB0aGUgZGV2ZWxvcG1lbnQKICAgICAgICAgICAgICAgICBwcm9jZXNzIHRoYXQgcmV2b2x2ZXMgYXJvdW5kIHVzZSBvZiB0aGUgU0RLLgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBFY2xpcHNlIElERSBZb2N0byBQbHVnLWluLgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBFY2xpcHNlIElERSBZb2N0byBQbHVnLWluLgogICAgICAgICAgICAgICAgIFRoaXMgcGx1Zy1pbiBpcyBhdmFpbGFibGUgZm9yIHlvdSBpZiB5b3UgYXJlIGFuIEVjbGlwc2UKICAgICAgICAgICAgICAgICB1c2VyLgogICAgICAgICAgICAgICAgIEluIHRoZSBzYW1lIG1hbm5lciBhcyBRRU1VLCB0aGUgcGx1Zy1pbiBpcyBub3QgbGl0ZXJhbGx5IHBhcnQKICAgICAgICAgICAgICAgICBvZiB0aGUgU0RLIGJ1dCBpcyByYXRoZXIgYXZhaWxhYmxlIGZvciB1c2UgYXMgcGFydCBvZiB0aGUKICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBwcm9jZXNzLgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlZhcmlvdXMgcGVyZm9ybWFuY2UtcmVsYXRlZAorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIFZhcmlvdXMgcGVyZm9ybWFuY2UtcmVsYXRlZAogICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGludXh0b29scy9pbmRleC5waHAnPnRvb2xzPC91bGluaz4KICAgICAgICAgICAgICAgICB0aGF0IGNhbiBlbmhhbmNlIHlvdXIgZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZS4KICAgICAgICAgICAgICAgICBUaGVzZSB0b29scyBhcmUgYWxzbyBzZXBhcmF0ZSBmcm9tIHRoZSBhY3R1YWwgU0RLIGJ1dCBjYW4gYmUKQEAgLTE5MiwxMSArMTk5LDExIEBACiAgICAgICAgICAgICA8L3Rncm91cD4KICAgICAgICAgPC9pbmZvcm1hbHRhYmxlPgogICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICogRXh0ZW5zaWJsZSBTREsgd2lsbCBjb250YWluIHRoZSB0b29sY2hhaW4gYW5kIGRlYnVnZ2VyIGlmIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtfRVhUX1RZUEUnPjxmaWxlbmFtZT5TREtfRVhUX1RZUEU8L2ZpbGVuYW1lPjwvdWxpbms+IGlzICJmdWxsIiBvciA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLX0lOQ0xVREVfVE9PTENIQUlOJz48ZmlsZW5hbWU+U0RLX0lOQ0xVREVfVE9PTENIQUlOPC9maWxlbmFtZT48L3VsaW5rPiBpcyAiMSIsIHdoaWNoIGlzIHRoZSBkZWZhdWx0LgorICAgICAqIEV4dGVuc2libGUgU0RLIGNvbnRhaW5zIHRoZSB0b29sY2hhaW4gYW5kIGRlYnVnZ2VyIGlmIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1TREtfRVhUX1RZUEUnPjxmaWxlbmFtZT5TREtfRVhUX1RZUEU8L2ZpbGVuYW1lPjwvdWxpbms+IGlzICJmdWxsIiBvciA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLX0lOQ0xVREVfVE9PTENIQUlOJz48ZmlsZW5hbWU+U0RLX0lOQ0xVREVfVE9PTENIQUlOPC9maWxlbmFtZT48L3VsaW5rPiBpcyAiMSIsIHdoaWNoIGlzIHRoZSBkZWZhdWx0LgogCi0gICAgICoqIFN5c3Jvb3QgaXMgbWFuYWdlZCB0aHJvdWdoIHVzZSBvZiA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+LiAgVGh1cywgaXQgaXMgbGVzcyBsaWtlbHkgdGhhdCB5b3Ugd2lsbCBjb3JydXB0IHlvdXIgU0RLIHN5c3Jvb3Qgd2hlbiB5b3UgdHJ5IHRvIGFkZCBhZGRpdGlvbmFsIGxpYnJhcmllcy4KKyAgICAgKiogU3lzcm9vdCBpcyBtYW5hZ2VkIHRocm91Z2ggdGhlIHVzZSBvZiA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+LiAgVGh1cywgaXQgaXMgbGVzcyBsaWtlbHkgdGhhdCB5b3Ugd2lsbCBjb3JydXB0IHlvdXIgU0RLIHN5c3Jvb3Qgd2hlbiB5b3UgdHJ5IHRvIGFkZCBhZGRpdGlvbmFsIGxpYnJhcmllcy4KIAotICAgICAqKiogUnVudGltZSBwYWNrYWdlIG1hbmFnZW1lbnQgY2FuIGJlIGFkZGVkIHRvIHRoZSBzdGFuZGFyZCBTREsgYnV0IGl0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgZGVmYXVsdC4KKyAgICAgKioqIFlvdSBjYW4gYWRkIHJ1bnRpbWUgcGFja2FnZSBtYW5hZ2VtZW50IHRvIHRoZSBzdGFuZGFyZCBTREsgYnV0IGl0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgZGVmYXVsdC4KIAogICAgICAqKioqIFlvdSBtdXN0IGJ1aWxkIGFuZCBtYWtlIHRoZSBzaGFyZWQgc3RhdGUgYXZhaWxhYmxlIHRvIGV4dGVuc2libGUgU0RLIHVzZXJzIGZvciAicGFja2FnZXMiIHlvdSB3YW50IHRvIGVuYWJsZSB1c2VycyB0byBpbnN0YWxsLgogICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CkBAIC0yMTYsNyArMjIzLDcgQEAKICAgICAgICAgICAgIFRoaXMgdG9vbGNoYWluIGlzIGNyZWF0ZWQgYnkgcnVubmluZyBhIFNESyBpbnN0YWxsZXIgc2NyaXB0CiAgICAgICAgICAgICBvciB0aHJvdWdoIGEKICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4KLSAgICAgICAgICAgIHRoYXQgaXMgYmFzZWQgb24geW91ciBNZXRhZGF0YSBjb25maWd1cmF0aW9uIG9yIGV4dGVuc2lvbiBmb3IKKyAgICAgICAgICAgIHRoYXQgaXMgYmFzZWQgb24geW91ciBtZXRhZGF0YSBjb25maWd1cmF0aW9uIG9yIGV4dGVuc2lvbiBmb3IKICAgICAgICAgICAgIHlvdXIgdGFyZ2V0ZWQgZGV2aWNlLgogICAgICAgICAgICAgVGhlIGNyb3NzLXRvb2xjaGFpbiB3b3JrcyB3aXRoIGEgbWF0Y2hpbmcgdGFyZ2V0IHN5c3Jvb3QuCiAgICAgICAgIDwvcGFyYT4KQEAgLTIzMCw3ICsyMzcsNyBAQAogICAgICAgICAgICAgZm9yIGdlbmVyYXRpbmcgYmluYXJpZXMgdGhhdCBydW4gb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCiAgICAgICAgICAgICBUaGUgdGFyZ2V0IHN5c3Jvb3QgaXMgYmFzZWQgb24gdGhlIHRhcmdldCByb290IGZpbGVzeXN0ZW0gaW1hZ2UKICAgICAgICAgICAgIHRoYXQgaXMgYnVpbHQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYW5kIHVzZXMgdGhlIHNhbWUKLSAgICAgICAgICAgIE1ldGFkYXRhIGNvbmZpZ3VyYXRpb24gdXNlZCB0byBidWlsZCB0aGUgY3Jvc3MtdG9vbGNoYWluLgorICAgICAgICAgICAgbWV0YWRhdGEgY29uZmlndXJhdGlvbiB1c2VkIHRvIGJ1aWxkIHRoZSBjcm9zcy10b29sY2hhaW4uCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKQEAgLTI0MCw3ICsyNDcsOCBAQAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFRoZSBRRU1VIGVtdWxhdG9yIGFsbG93cyB5b3UgdG8gc2ltdWxhdGUgeW91ciBoYXJkd2FyZSB3aGlsZQogICAgICAgICAgICAgcnVubmluZyB5b3VyIGFwcGxpY2F0aW9uIG9yIGltYWdlLgotICAgICAgICAgICAgUUVNVSBpcyBub3QgcGFydCBvZiB0aGUgU0RLIGJ1dCBpcyBtYWRlIGF2YWlsYWJsZSBhIG51bWJlciBvZiB3YXlzOgorICAgICAgICAgICAgUUVNVSBpcyBub3QgcGFydCBvZiB0aGUgU0RLIGJ1dCBpcyBtYWRlIGF2YWlsYWJsZSBhIG51bWJlciBvZgorICAgICAgICAgICAgZGlmZmVyZW50IHdheXM6CiAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgY2xvbmVkIHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IEdpdApAQCAtMjY1LDcgKzI3Myw3IEBACiAgICAgPC9zZWN0aW9uPgogCiAgICAgPHNlY3Rpb24gaWQ9J2VjbGlwc2Utb3ZlcnZpZXcnPgotICAgICAgICA8dGl0bGU+RWNsaXBzZSBZb2N0byBQbHVnLWluPC90aXRsZT4KKyAgICAgICAgPHRpdGxlPjx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+IFlvY3RvIFBsdWctaW48L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgVGhlIEVjbGlwc2UgSURFIGlzIGEgcG9wdWxhciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCBhbmQgaXQgZnVsbHkKQEAgLTI4NSw4ICsyOTMsOCBAQAogICAgICAgICAgICAgICAgIFByZXZpb3VzIHJlbGVhc2VzIG9mIHRoZSBFY2xpcHNlIFlvY3RvIFBsdWctaW4gc3VwcG9ydGVkCiAgICAgICAgICAgICAgICAgInVzZXItc3BhY2UgdG9vbHMiIChpLmUuIExhdGVuY3lUT1AsIFBvd2VyVE9QLCBQZXJmLCBTeXN0ZW1UYXAsCiAgICAgICAgICAgICAgICAgYW5kIEx0dG5nLXVzdCkgdGhhdCBhbHNvIGFkZGVkIHRvIHRoZSBkZXZlbG9wbWVudCBleHBlcmllbmNlLgotICAgICAgICAgICAgICAgIFRoZXNlIHRvb2xzIGhhdmUgYmVlbiBkZXByZWNhdGVkIGJlZ2lubmluZyB3aXRoIHRoaXMgcmVsZWFzZQotICAgICAgICAgICAgICAgIG9mIHRoZSBwbHVnLWluLgorICAgICAgICAgICAgICAgIFRoZXNlIHRvb2xzIGhhdmUgYmVlbiBkZXByZWNhdGVkIHdpdGggdGhlIHJlbGVhc2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgRWNsaXBzZSBZb2N0byBQbHVnLWluLgogICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L3BhcmE+CiAKQEAgLTMzNSwxNCArMzQzLDE4IEBACiAgICAgPHBhcmE+CiAgICAgICAgIFlvdSBqdXN0IG5lZWQgdG8gZm9sbG93IHRoZXNlIGdlbmVyYWwgc3RlcHM6CiAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+SW5zdGFsbCB0aGUgU0RLIGZvciB5b3VyIHRhcmdldCBoYXJkd2FyZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5JbnN0YWxsIHRoZSBTREsgZm9yIHlvdXIgdGFyZ2V0IGhhcmR3YXJlOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBpbnN0YWxsIHRoZSBTREssIHNlZSB0aGUKICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWluc3RhbGxpbmctdGhlLXNkayc+SW5zdGFsbGluZyB0aGUgU0RLPC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Eb3dubG9hZCBvciBCdWlsZCB0aGUgVGFyZ2V0IEltYWdlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RG93bmxvYWQgb3IgQnVpbGQgdGhlIFRhcmdldCBJbWFnZTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHN1cHBvcnRzIHNldmVyYWwgdGFyZ2V0IGFyY2hpdGVjdHVyZXMKICAgICAgICAgICAgICAgICBhbmQgaGFzIG1hbnkgcHJlLWJ1aWx0IGtlcm5lbCBpbWFnZXMgYW5kIHJvb3QgZmlsZXN5c3RlbQogICAgICAgICAgICAgICAgIGltYWdlcy48L3BhcmE+CisKICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgYXJlIGdvaW5nIHRvIGRldmVsb3AgeW91ciBhcHBsaWNhdGlvbiBvbgogICAgICAgICAgICAgICAgIGhhcmR3YXJlLCBnbyB0byB0aGUKICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fTUFDSElORVNfRExfVVJMOyc+PGZpbGVuYW1lPm1hY2hpbmVzPC9maWxlbmFtZT48L3VsaW5rPgpAQCAtMzU2LDYgKzM2OCw3IEBACiAgICAgICAgICAgICAgICAgc28gZm9ydGguCiAgICAgICAgICAgICAgICAgQmUgc3VyZSB0byBnZXQgdGhlIGZpbGVzIHlvdSBuZWVkIGZvciB5b3VyIHBhcnRpY3VsYXIKICAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBwcm9jZXNzLjwvcGFyYT4KKwogICAgICAgICAgICAgICAgIDxwYXJhPklmIHlvdSBhcmUgZ29pbmcgdG8gZGV2ZWxvcCB5b3VyIGFwcGxpY2F0aW9uIGFuZAogICAgICAgICAgICAgICAgIHRoZW4gcnVuIGFuZCB0ZXN0IGl0IHVzaW5nIHRoZSBRRU1VIGVtdWxhdG9yLCBnbyB0byB0aGUKICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fUUVNVV9ETF9VUkw7Jz48ZmlsZW5hbWU+bWFjaGluZXMvcWVtdTwvZmlsZW5hbWU+PC91bGluaz4KQEAgLTM2NCwzNSArMzc3LDM1IEBACiAgICAgICAgICAgICAgICAgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoZS5nLiA8ZmlsZW5hbWU+cWVtdXg4Nl82NDwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgZm9yIGFuIDx0cmFkZW1hcmsgY2xhc3M9J3JlZ2lzdGVyZWQnPkludGVsPC90cmFkZW1hcms+LWJhc2VkCiAgICAgICAgICAgICAgICAgNjQtYml0IGFyY2hpdGVjdHVyZSkuCi0gICAgICAgICAgICAgICAgRG93bmxvYWQga2VybmVsLCByb290IGZpbGVzeXN0ZW0sIGFuZCBhbnkgb3RoZXIgZmlsZXMgeW91CisgICAgICAgICAgICAgICAgRG93bmxvYWQgdGhlIGtlcm5lbCwgcm9vdCBmaWxlc3lzdGVtLCBhbmQgYW55IG90aGVyIGZpbGVzIHlvdQogICAgICAgICAgICAgICAgIG5lZWQgZm9yIHlvdXIgcHJvY2Vzcy4KICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgVG8gdXNlIHRoZSByb290IGZpbGVzeXN0ZW0gaW4gUUVNVSwgeW91Ci0gICAgICAgICAgICAgICAgICAgIG5lZWQgdG8gZXh0cmFjdCBpdC4KKyAgICAgICAgICAgICAgICAgICAgVG8gdXNlIHRoZSByb290IGZpbGVzeXN0ZW0gaW4gUUVNVSwgeW91IG5lZWQgdG8gZXh0cmFjdCBpdC4KICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWV4dHJhY3RpbmctdGhlLXJvb3QtZmlsZXN5c3RlbSc+RXh0cmFjdGluZyB0aGUgUm9vdCBGaWxlc3lzdGVtPC9saW5rPiIKICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGV4dHJhY3QgdGhlIHJvb3QKICAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbS4KICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkRldmVsb3AgYW5kIFRlc3QgeW91cgotICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uOjwvZW1waGFzaXM+ICBBdCB0aGlzIHBvaW50LCB5b3UgaGF2ZSB0aGUgdG9vbHMKLSAgICAgICAgICAgICAgICB0byBkZXZlbG9wIHlvdXIgYXBwbGljYXRpb24uCi0gICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgdG8gc2VwYXJhdGVseSBpbnN0YWxsIGFuZCB1c2UgdGhlIFFFTVUKLSAgICAgICAgICAgICAgICBlbXVsYXRvciwgeW91IGNhbiBnbyB0bworICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXZlbG9wIGFuZCBUZXN0IHlvdXIgQXBwbGljYXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB5b3UgaGF2ZSB0aGUgdG9vbHMgdG8gZGV2ZWxvcCB5b3VyIGFwcGxpY2F0aW9uLgorICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIHRvIHNlcGFyYXRlbHkgaW5zdGFsbCBhbmQgdXNlIHRoZSBRRU1VIGVtdWxhdG9yLAorICAgICAgICAgICAgICAgIHlvdSBjYW4gZ28gdG8KICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd2lraS5xZW11Lm9yZy9NYWluX1BhZ2UnPlFFTVUgSG9tZSBQYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICB0byBkb3dubG9hZCBhbmQgbGVhcm4gYWJvdXQgdGhlIGVtdWxhdG9yLgogICAgICAgICAgICAgICAgIFNlZSB0aGUKICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LW1hbnVhbC1xZW11Jz5Vc2luZyB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpPC91bGluaz4iCiAgICAgICAgICAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwKICAgICAgICAgICAgICAgICBmb3IgaW5mb3JtYXRpb24gb24gdXNpbmcgUUVNVSB3aXRoaW4gdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgUHJvamVjdC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICBQcm9qZWN0LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICA8L29yZGVyZWRsaXN0PgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgotICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgbWFudWFsIGRlc2NyaWJlcyBob3cgdG8gdXNlIGJvdGggdGhlIHN0YW5kYXJkCi0gICAgICAgIFNESyBhbmQgdGhlIGV4dGVuc2libGUgU0RLLgorICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgbWFudWFsIGRlc2NyaWJlcyBob3cgdG8gdXNlIHRoZSBleHRlbnNpYmxlCisgICAgICAgIGFuZCBzdGFuZGFyZCBTREtzLgogICAgICAgICBJbmZvcm1hdGlvbiBhbHNvIGV4aXN0cyBpbiBhcHBlbmRpeCBmb3JtIHRoYXQgZGVzY3JpYmVzIGhvdyB5b3UgY2FuCiAgICAgICAgIGJ1aWxkLCBpbnN0YWxsLCBhbmQgbW9kaWZ5IGFuIFNESy4KICAgICA8L3BhcmE+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1tYW51YWwueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstbWFudWFsLnhtbAppbmRleCA3ZmMwNDcyLi5lODU4YjliIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1tYW51YWwueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLW1hbnVhbC54bWwKQEAgLTUyLDE0ICs1Miw5IEBACiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+SmFudWFyeSAyMDE4PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgotICAgICAgICAgICAgPC9yZXZpc2lvbj4KLSAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4yPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+TWFyY2ggMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40LjIgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNTwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk1heSAyMDE4PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjUgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgPC9yZXZoaXN0b3J5PgogCkBAIC04MSwyNyArNzYsMzggQEAKICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsIGlzIGZvciB0aGUgJllPQ1RPX0RPQ19WRVJTSU9OOyByZWxlYXNlIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCi0gICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIHVzZSB0aGUgbWFudWFsIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICBGb3IgbWFudWFscyBhc3NvY2lhdGVkIHdpdGggb3RoZXIgcmVsZWFzZXMgb2YgdGhlIFlvY3RvCi0gICAgICAgICAgICAgICAgICAgICAgIFByb2plY3QsIGdvIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCBnbyB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgIGFuZCB1c2UgdGhlIGRyb3AtZG93biAiQWN0aXZlIFJlbGVhc2VzIiBidXR0b24KLSAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNob29zZSB0aGUgbWFudWFsIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVzaXJlZAotICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgZnJvbSB0aGF0IHNpdGUuCisgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbHMgZnJvbSB0aGUgc2l0ZSBhcmUgbW9yZSB1cC10by1kYXRlIHRoYW4gbWFudWFscworICAgICAgICAgICAgICAgICAgICAgICBkZXJpdmVkIGZyb20gdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZWQgVEFSIGZpbGVzLgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bwotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBsb2NhdGVkIHRoaXMgbWFudWFsIHRocm91Z2ggYSB3ZWIgc2VhcmNoLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiBvZiB0aGUgbWFudWFsIG1pZ2h0IG5vdCBiZSB0aGUgb25lIHlvdSB3YW50CisgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIHRoZSBzZWFyY2ggbWlnaHQgaGF2ZSByZXR1cm5lZCBhIG1hbnVhbCBtdWNoCisgICAgICAgICAgICAgICAgICAgICAgIG9sZGVyIHRoYW4gdGhlIFlvY3RvIFByb2plY3QgdmVyc2lvbiB3aXRoIHdoaWNoIHlvdQorICAgICAgICAgICAgICAgICAgICAgICBhcmUgd29ya2luZykuCisgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VlIGFsbCBZb2N0byBQcm9qZWN0IG1ham9yIHJlbGVhc2VzIGJ5CisgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvUmVsZWFzZXMnPlJlbGVhc2VzPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgcGFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgYSB2ZXJzaW9uIG9mIHRoaXMgbWFudWFsIGZvciBhIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UsIHZpc2l0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIHNldCBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIkFDVElWRSBSRUxFQVNFUyBET0NVTUVOVEFUSU9OIiBvciAiRE9DVU1FTlRTIEFSQ0hJVkUiCisgICAgICAgICAgICAgICAgICAgICAgIHB1bGwtZG93biBtZW51cy4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0CisgICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bworICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgIDwvbm90ZT4KLQogICAgIDwvbGVnYWxub3RpY2U+CiAKICAgICA8L2Jvb2tpbmZvPgpAQCAtMTIyLDcgKzEyOCw3IEBACiAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJzZGstYXBwZW5kaXgtY3VzdG9taXppbmctc3RhbmRhcmQueG1sIi8+CiAKLSAgICA8eGk6aW5jbHVkZSBocmVmPSJzZGstYXBwZW5kaXgtbWFycy54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJzZGstYXBwZW5kaXgtbmVvbi54bWwiLz4KIAogPCEtLSAgICA8aW5kZXggaWQ9J2luZGV4Jz4KICAgICAgIDx0aXRsZT5JbmRleDwvdGl0bGU+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay11c2luZy54bWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay11c2luZy54bWwKaW5kZXggNzI4MWU4My4uZGQyMjBjMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstdXNpbmcueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLXVzaW5nLnhtbApAQCAtMTksOSArMTksOSBAQAogCiAgICAgPHBhcmE+CiAgICAgICAgIFlvdSBjYW4gdXNlIGEgc3RhbmRhcmQgU0RLIHRvIHdvcmsgb24gTWFrZWZpbGUsIEF1dG90b29scywgYW5kCi0gICAgICAgIEVjbGlwc2UtYmFzZWQgcHJvamVjdHMuCisgICAgICAgIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+LWJhc2VkIHByb2plY3RzLgogICAgICAgICBTZWUgdGhlCi0gICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstd29ya2luZy1wcm9qZWN0cyc+V29ya2luZyB3aXRoIERpZmZlcmVudCBUeXBlcyBvZiBQcm9qZWN0czwvbGluaz4iCisgICAgICAgICI8bGluayBsaW5rZW5kPSdzZGstd29ya2luZy1wcm9qZWN0cyc+VXNpbmcgdGhlIFNESyBUb29sY2hhaW4gRGlyZWN0bHk8L2xpbms+IgogICAgICAgICBjaGFwdGVyIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgIDwvcGFyYT4KIApAQCAtNTMsMjQgKzUzLDI0IEBACiAgICAgICAgIDx0aXRsZT5JbnN0YWxsaW5nIHRoZSBTREs8L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIGZpcnN0IHRoaW5nIHlvdSBuZWVkIHRvIGRvIGlzIGluc3RhbGwgdGhlIFNESyBvbiB5b3VyIGhvc3QKLSAgICAgICAgICAgIGRldmVsb3BtZW50IG1hY2hpbmUgYnkgcnVubmluZyB0aGUgPGZpbGVuYW1lPiouc2g8L2ZpbGVuYW1lPgotICAgICAgICAgICAgaW5zdGFsbGF0aW9uIHNjcmlwdC4KKyAgICAgICAgICAgIFRoZSBmaXJzdCB0aGluZyB5b3UgbmVlZCB0byBkbyBpcyBpbnN0YWxsIHRoZSBTREsgb24geW91cgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjaGFyZHdhcmUtYnVpbGQtc3lzdGVtLXRlcm0nPkJ1aWxkIEhvc3Q8L3VsaW5rPgorICAgICAgICAgICAgYnkgcnVubmluZyB0aGUgPGZpbGVuYW1lPiouc2g8L2ZpbGVuYW1lPiBpbnN0YWxsYXRpb24gc2NyaXB0LgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBZb3UgY2FuIGRvd25sb2FkIGEgdGFyYmFsbCBpbnN0YWxsZXIsIHdoaWNoIGluY2x1ZGVzIHRoZQogICAgICAgICAgICAgcHJlLWJ1aWx0IHRvb2xjaGFpbiwgdGhlIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4KLSAgICAgICAgICAgIHNjcmlwdCwgYW5kIHN1cHBvcnQgZmlsZXMgZnJvbSB0aGUgYXBwcm9wcmlhdGUgZGlyZWN0b3J5IHVuZGVyCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fVE9PTENIQUlOX0RMX1VSTDsnPjwvdWxpbms+LgotICAgICAgICAgICAgVG9vbGNoYWlucyBhcmUgYXZhaWxhYmxlIGZvciAzMi1iaXQgYW5kIDY0LWJpdCB4ODYgZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgIHN5c3RlbXMgZnJvbSB0aGUgPGZpbGVuYW1lPmk2ODY8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgIDxmaWxlbmFtZT54ODZfNjQ8L2ZpbGVuYW1lPiBkaXJlY3RvcmllcywgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgICAgc2NyaXB0LCBhbmQgc3VwcG9ydCBmaWxlcyBmcm9tIHRoZSBhcHByb3ByaWF0ZQorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1RPT0xDSEFJTl9ETF9VUkw7Jz50b29sY2hhaW48L3VsaW5rPgorICAgICAgICAgICAgZGlyZWN0b3J5IHdpdGhpbiB0aGUgSW5kZXggb2YgUmVsZWFzZXMuCisgICAgICAgICAgICBUb29sY2hhaW5zIGFyZSBhdmFpbGFibGUgZm9yIHNldmVyYWwgMzItYml0IGFuZCA2NC1iaXQKKyAgICAgICAgICAgIGFyY2hpdGVjdHVyZXMgd2l0aCB0aGUgPGZpbGVuYW1lPng4Nl82NDwvZmlsZW5hbWU+IGRpcmVjdG9yaWVzLAorICAgICAgICAgICAgcmVzcGVjdGl2ZWx5LgogICAgICAgICAgICAgVGhlIHRvb2xjaGFpbnMgdGhlIFlvY3RvIFByb2plY3QgcHJvdmlkZXMgYXJlIGJhc2VkIG9mZiB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLXNhdG88L2ZpbGVuYW1lPiBpbWFnZSBhbmQgY29udGFpbgorICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+IGltYWdlcyBhbmQgY29udGFpbgogICAgICAgICAgICAgbGlicmFyaWVzIGFwcHJvcHJpYXRlIGZvciBkZXZlbG9waW5nIGFnYWluc3QgdGhhdCBpbWFnZS4KLSAgICAgICAgICAgIEVhY2ggdHlwZSBvZiBkZXZlbG9wbWVudCBzeXN0ZW0gc3VwcG9ydHMgZml2ZSBvciBtb3JlIHRhcmdldAotICAgICAgICAgICAgYXJjaGl0ZWN0dXJlcy4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgpAQCAtODYsMTQgKzg2LDE1IEBACiAKICAgICAgICAgICAgICAgICAgICAgaTY4NiBvciB4ODZfNjQuCiAKLSAgICAgICAgIDxyZXBsYWNlYWJsZT5pbWFnZV90eXBlPC9yZXBsYWNlYWJsZT4gaXMgdGhlIGltYWdlIGZvciB3aGljaCB0aGUgU0RLIHdhcyBidWlsdC4KKyAgICAgICAgIDxyZXBsYWNlYWJsZT5pbWFnZV90eXBlPC9yZXBsYWNlYWJsZT4gaXMgdGhlIGltYWdlIGZvciB3aGljaCB0aGUgU0RLIHdhcyBidWlsdDoKKworICAgICAgICAgICAgICAgICAgICBjb3JlLWltYWdlLW1pbmltYWwgb3IgY29yZS1pbWFnZS1zYXRvLgogCiAgICAgICAgICA8cmVwbGFjZWFibGU+YXJjaDwvcmVwbGFjZWFibGU+IGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdHVuZWQgdGFyZ2V0IGFyY2hpdGVjdHVyZToKIAotICAgICAgICAgICAgICAgICAgICBpNTg2LCB4ODZfNjQsIHBvd2VycGMsIG1pcHMsIGFybXY3YSBvciBhcm12NXRlCisgICAgICAgICAgICAgICAgICAgIGFhcmNoNjQsIGFybXY1ZSwgY29yZTItNjQsIGk1ODYsIG1pcHMzMnIyLCBtaXBzNjQsIHBwYzc0MDAsIG9yIGNvcnRleGE4aGYtbmVvbi4KIAotICAgICAgICAgPHJlcGxhY2VhYmxlPnJlbGVhc2VfdmVyc2lvbjwvcmVwbGFjZWFibGU+IGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcmVsZWFzZSBudW1iZXIgb2YgdGhlCi0gICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdDoKKyAgICAgICAgIDxyZXBsYWNlYWJsZT5yZWxlYXNlX3ZlcnNpb248L3JlcGxhY2VhYmxlPiBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHJlbGVhc2UgbnVtYmVyIG9mIHRoZSBZb2N0byBQcm9qZWN0OgogCiAgICAgICAgICAgICAgICAgICAgICZESVNUUk87LCAmRElTVFJPOytzbmFwc2hvdAogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgpAQCAtMTIwLDM4ICsxMjEsMzYgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFRoZSBTREsgYW5kIHRvb2xjaGFpbnMgYXJlIHNlbGYtY29udGFpbmVkIGFuZCBieSBkZWZhdWx0IGFyZQotICAgICAgICAgICAgaW5zdGFsbGVkIGludG8gPGZpbGVuYW1lPi9vcHQvcG9reTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgSG93ZXZlciwgd2hlbiB5b3UgcnVuIHRoZSBTREsgaW5zdGFsbGVyLCB5b3UgY2FuIGNob29zZSBhbgotICAgICAgICAgICAgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeS4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIFlvdSBtdXN0IGNoYW5nZSB0aGUgcGVybWlzc2lvbnMgb24gdGhlIFNESwotICAgICAgICAgICAgICAgIGluc3RhbGxlciBzY3JpcHQgc28gdGhhdCBpdCBpcyBleGVjdXRhYmxlOgotICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjaG1vZCAreCBwb2t5LWdsaWJjLXg4Nl82NC1jb3JlLWltYWdlLXNhdG8taTU4Ni10b29sY2hhaW4tJkRJU1RSTzsuc2gKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICBpbnN0YWxsZWQgaW50byB0aGUgPGZpbGVuYW1lPnBva3lfc2RrPC9maWxlbmFtZT4gZm9sZGVyIGluIHlvdXIKKyAgICAgICAgICAgIGhvbWUgZGlyZWN0b3J5LgorICAgICAgICAgICAgWW91IGNhbiBjaG9vc2UgdG8gaW5zdGFsbCB0aGUgZXh0ZW5zaWJsZSBTREsgaW4gYW55IGxvY2F0aW9uIHdoZW4KKyAgICAgICAgICAgIHlvdSBydW4gdGhlIGluc3RhbGxlci4KKyAgICAgICAgICAgIEhvd2V2ZXIsIGJlY2F1c2UgZmlsZXMgbmVlZCB0byBiZSB3cml0dGVuIHVuZGVyIHRoYXQgZGlyZWN0b3J5CisgICAgICAgICAgICBkdXJpbmcgdGhlIG5vcm1hbCBjb3Vyc2Ugb2Ygb3BlcmF0aW9uLCB0aGUgbG9jYXRpb24geW91IGNob29zZQorICAgICAgICAgICAgZm9yIGluc3RhbGxhdGlvbiBtdXN0IGJlIHdyaXRhYmxlIGZvciB3aGljaGV2ZXIKKyAgICAgICAgICAgIHVzZXJzIG5lZWQgdG8gdXNlIHRoZSBTREsuCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZCBzaG93cyBob3cgdG8gcnVuIHRoZSBpbnN0YWxsZXIgZ2l2ZW4gYQogICAgICAgICAgICAgdG9vbGNoYWluIHRhcmJhbGwgZm9yIGEgNjQtYml0IHg4NiBkZXZlbG9wbWVudCBob3N0IHN5c3RlbSBhbmQKLSAgICAgICAgICAgIGEgMzItYml0IHg4NiB0YXJnZXQgYXJjaGl0ZWN0dXJlLgorICAgICAgICAgICAgYSA2NC1iaXQgeDg2IHRhcmdldCBhcmNoaXRlY3R1cmUuCiAgICAgICAgICAgICBUaGUgZXhhbXBsZSBhc3N1bWVzIHRoZSBTREsgaW5zdGFsbGVyIGlzIGxvY2F0ZWQgaW4KLSAgICAgICAgICAgIDxmaWxlbmFtZT5+L0Rvd25sb2Fkcy88L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5+L0Rvd25sb2Fkcy88L2ZpbGVuYW1lPiBhbmQgaGFzIGV4ZWN1dGlvbiByaWdodHMuCiAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gbm90IGhhdmUgd3JpdGUgcGVybWlzc2lvbnMgZm9yIHRoZSBkaXJlY3RvcnkKICAgICAgICAgICAgICAgICBpbnRvIHdoaWNoIHlvdSBhcmUgaW5zdGFsbGluZyB0aGUgU0RLLCB0aGUgaW5zdGFsbGVyCiAgICAgICAgICAgICAgICAgbm90aWZpZXMgeW91IGFuZCBleGl0cy4KLSAgICAgICAgICAgICAgICBCZSBzdXJlIHlvdSBoYXZlIHdyaXRlIHBlcm1pc3Npb25zIGluIHRoZSBkaXJlY3RvcnkgYW5kCi0gICAgICAgICAgICAgICAgcnVuIHRoZSBpbnN0YWxsZXIgYWdhaW4uCisgICAgICAgICAgICAgICAgRm9yIHRoYXQgY2FzZSwgc2V0IHVwIHRoZSBwcm9wZXIgcGVybWlzc2lvbnMgaW4gdGhlIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgIGFuZCBydW4gdGhlIGluc3RhbGxlciBhZ2Fpbi4KICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCAuL3Bva3ktZ2xpYmMteDg2XzY0LWNvcmUtaW1hZ2Utc2F0by1pNTg2LXRvb2xjaGFpbi0mRElTVFJPOy5zaAorICAgICAkIC4vRG93bmxvYWRzL3Bva3ktZ2xpYmMteDg2XzY0LWNvcmUtaW1hZ2Utc2F0by1pNTg2LXRvb2xjaGFpbi0mRElTVFJPOy5zaAogICAgICBQb2t5IChZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBEaXN0cm8pIFNESyBpbnN0YWxsZXIgdmVyc2lvbiAmRElTVFJPOwogICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgRW50ZXIgdGFyZ2V0IGRpcmVjdG9yeSBmb3IgU0RLIChkZWZhdWx0OiAvb3B0L3Bva3kvJkRJU1RSTzspOgogICAgICBZb3UgYXJlIGFib3V0IHRvIGluc3RhbGwgdGhlIFNESyB0byAiL29wdC9wb2t5LyZESVNUUk87Ii4gUHJvY2VlZFtZL25dPyBZCi0gICAgIEV4dHJhY3RpbmcgU0RLLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5kb25lCisgICAgIEV4dHJhY3RpbmcgU0RLLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5kb25lCiAgICAgIFNldHRpbmcgaXQgdXAuLi5kb25lCiAgICAgIFNESyBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgc2V0IHVwIGFuZCBpcyByZWFkeSB0byBiZSB1c2VkLgogICAgICBFYWNoIHRpbWUgeW91IHdpc2ggdG8gdXNlIHRoZSBTREsgaW4gYSBuZXcgc2hlbGwgc2Vzc2lvbiwgeW91IG5lZWQgdG8gc291cmNlIHRoZSBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgZS5nLgpAQCAtMTcyLDEyICsxNzEsMTEgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgdGhlIFNESyBpbnN0YWxsZWQsIHlvdSBtdXN0IHJ1biB0aGUgU0RLIGVudmlyb25tZW50Ci0gICAgICAgICAgICBzZXR1cCBzY3JpcHQgYmVmb3JlIHlvdSBjYW4gYWN0dWFsbHkgdXNlIGl0LgorICAgICAgICAgICAgc2V0dXAgc2NyaXB0IGJlZm9yZSB5b3UgY2FuIGFjdHVhbGx5IHVzZSB0aGUgU0RLLgogICAgICAgICAgICAgVGhpcyBzZXR1cCBzY3JpcHQgcmVzaWRlcyBpbiB0aGUgZGlyZWN0b3J5IHlvdSBjaG9zZSB3aGVuIHlvdQotICAgICAgICAgICAgaW5zdGFsbGVkIHRoZSBTREsuCi0gICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gd2hlcmUgdGhpcyBzZXR1cCBzY3JpcHQgY2FuIHJlc2lkZSwgc2VlIHRoZQotICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1hcHBlbmRpeC1vYnRhaW4nPk9idGFpbmluZyB0aGUgU0RLPC9saW5rPiIKLSAgICAgICAgICAgIEFwcGVuZGl4LgorICAgICAgICAgICAgaW5zdGFsbGVkIHRoZSBTREssIHdoaWNoIGlzIGVpdGhlciB0aGUgZGVmYXVsdAorICAgICAgICAgICAgPGZpbGVuYW1lPi9vcHQvcG9reS8mRElTVFJPOzwvZmlsZW5hbWU+IGRpcmVjdG9yeSBvciB0aGUgZGlyZWN0b3J5CisgICAgICAgICAgICB5b3UgY2hvc2UgZHVyaW5nIGluc3RhbGxhdGlvbi4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgpAQCAtMTg2LDkgKzE4NCwxMSBAQAogICAgICAgICAgICAgRW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0cyBiZWdpbiB3aXRoIHRoZSBzdHJpbmcKICAgICAgICAgICAgICI8ZmlsZW5hbWU+ZW52aXJvbm1lbnQtc2V0dXA8L2ZpbGVuYW1lPiIgYW5kIGluY2x1ZGUgYXMgcGFydCBvZgogICAgICAgICAgICAgdGhlaXIgbmFtZSB0aGUgdHVuZWQgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KLSAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgY29tbWFuZCB0byBzb3VyY2UgYSBzZXR1cCBzY3JpcHQgZm9yIGFuIElBLWJhc2VkCi0gICAgICAgICAgICB0YXJnZXQgbWFjaGluZSB1c2luZyBpNTg2IHR1bmluZyBhbmQgbG9jYXRlZCBpbiB0aGUgZGVmYXVsdCBTREsKLSAgICAgICAgICAgIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgaXMgYXMgZm9sbG93czoKKyAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgc2V0IHRoZSB3b3JraW5nIGRpcmVjdG9yeQorICAgICAgICAgICAgdG8gd2hlcmUgdGhlIFNESyB3YXMgaW5zdGFsbGVkIGFuZCB0aGVuIHNvdXJjZSB0aGUgZW52aXJvbm1lbnQKKyAgICAgICAgICAgIHNldHVwIHNjcmlwdC4KKyAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgdGhlIHNldHVwIHNjcmlwdCBpcyBmb3IgYW4gSUEtYmFzZWQKKyAgICAgICAgICAgIHRhcmdldCBtYWNoaW5lIHVzaW5nIGk1ODYgdHVuaW5nOgogICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHNvdXJjZSAvb3B0L3Bva3kvJkRJU1RSTzsvZW52aXJvbm1lbnQtc2V0dXAtaTU4Ni1wb2t5LWxpbnV4CiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay13b3JraW5nLXByb2plY3RzLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLXdvcmtpbmctcHJvamVjdHMueG1sCmluZGV4IDY5NjVlM2YuLmQ4Y2M0MjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLXdvcmtpbmctcHJvamVjdHMueG1sCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLXdvcmtpbmctcHJvamVjdHMueG1sCkBAIC04LDcgKzgsNyBAQAogCiAgICAgPHBhcmE+CiAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSBTREsgdG9vbGNoYWluIGRpcmVjdGx5IHdpdGggTWFrZWZpbGUsCi0gICAgICAgIEF1dG90b29scywgYW5kIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+IGJhc2VkCisgICAgICAgIEF1dG90b29scywgYW5kIDx0cmFkZW1hcmsgY2xhc3M9J3RyYWRlJz5FY2xpcHNlPC90cmFkZW1hcms+LWJhc2VkCiAgICAgICAgIHByb2plY3RzLgogICAgICAgICBUaGlzIGNoYXB0ZXIgY292ZXJzIHRoZSBmaXJzdCB0d28sIHdoaWxlIHRoZQogICAgICAgICAiPGxpbmsgbGlua2VuZD0nc2RrLWVjbGlwc2UtcHJvamVjdCc+RGV2ZWxvcGluZyBBcHBsaWNhdGlvbnMgVXNpbmcgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz48L2xpbms+IgpAQCAtMTksMjYzICsxOSw0OTQgQEAKICAgICAgICAgPHRpdGxlPkF1dG90b29scy1CYXNlZCBQcm9qZWN0czwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBPbmNlIHlvdSBoYXZlIGEgc3VpdGFibGUgY3Jvc3MtdG9vbGNoYWluIGluc3RhbGxlZCwgaXQgaXMgdmVyeSBlYXN5Ci0gICAgICAgICAgICB0byBkZXZlbG9wIGEgcHJvamVjdCBvdXRzaWRlIG9mIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByZXNlbnRzIGEgc2ltcGxlICJIZWxsb3dvcmxkIiBleGFtcGxlIHRoYXQgc2hvd3MgaG93Ci0gICAgICAgICAgICB0byBzZXQgdXAsIGNvbXBpbGUsIGFuZCBydW4gdGhlIHByb2plY3QuCisgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIGEgc3VpdGFibGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2Nyb3NzLWRldmVsb3BtZW50LXRvb2xjaGFpbic+Y3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluPC91bGluaz4KKyAgICAgICAgICAgIGluc3RhbGxlZCwgaXQgaXMgdmVyeSBlYXN5IHRvIGRldmVsb3AgYSBwcm9qZWN0IHVzaW5nIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR05VX0J1aWxkX1N5c3RlbSc+R05VIEF1dG90b29scy1iYXNlZDwvdWxpbms+CisgICAgICAgICAgICB3b3JrZmxvdywgd2hpY2ggaXMgb3V0c2lkZSBvZiB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4uCiAgICAgICAgIDwvcGFyYT4KIAotICAgICAgICA8c2VjdGlvbiBpZD0nY3JlYXRpbmctYW5kLXJ1bm5pbmctYS1wcm9qZWN0LWJhc2VkLW9uLWdudS1hdXRvdG9vbHMnPgotICAgICAgICAgICAgPHRpdGxlPkNyZWF0aW5nIGFuZCBSdW5uaW5nIGEgUHJvamVjdCBCYXNlZCBvbiBHTlUgQXV0b3Rvb2xzPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGZpZ3VyZSBwcmVzZW50cyBhIHNpbXBsZSBBdXRvdG9vbHMgd29ya2Zsb3cuCisgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvc2RrLWF1dG90b29scy1mbG93LnBuZyIgd2lkdGg9IjdpbiIgaGVpZ2h0PSI4aW4iIGFsaWduPSJjZW50ZXIiIC8+CisgICAgICAgIDwvcGFyYT4KIAotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGNyZWF0ZSBhIHNpbXBsZSBBdXRvdG9vbHMtYmFzZWQgcHJvamVjdDoKLSAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgeW91ciBkaXJlY3Rvcnk6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZSBhIGNsZWFuIGRpcmVjdG9yeSBmb3IgeW91ciBwcm9qZWN0IGFuZCB0aGVuIG1ha2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgZGlyZWN0b3J5IHlvdXIgd29ya2luZyBsb2NhdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb2xsb3cgdGhlc2Ugc3RlcHMgdG8gY3JlYXRlIGEgc2ltcGxlIEF1dG90b29scy1iYXNlZAorICAgICAgICAgICAgIkhlbGxvIFdvcmxkIiBwcm9qZWN0OgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIEdOVSBBdXRvdG9vbHMgd29ya2Zsb3csCisgICAgICAgICAgICAgICAgc2VlIHRoZSBzYW1lIGV4YW1wbGUgb24gdGhlCisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2FuanV0YS1idWlsZC10dXRvcmlhbC9zdGFibGUvY3JlYXRlLWF1dG90b29scy5odG1sLmVuJz5HTk9NRSBEZXZlbG9wZXI8L3VsaW5rPgorICAgICAgICAgICAgICAgIHNpdGUuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIGEgV29ya2luZyBEaXJlY3RvcnkgYW5kIFBvcHVsYXRlIEl0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENyZWF0ZSBhIGNsZWFuIGRpcmVjdG9yeSBmb3IgeW91ciBwcm9qZWN0IGFuZCB0aGVuIG1ha2UKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBkaXJlY3RvcnkgeW91ciB3b3JraW5nIGxvY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgbWtkaXIgJEhPTUUvaGVsbG93b3JsZAogICAgICAkIGNkICRIT01FL2hlbGxvd29ybGQKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UG9wdWxhdGUgdGhlIGRpcmVjdG9yeTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIDxmaWxlbmFtZT5oZWxsby5jPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TWFrZWZpbGUuYW08L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+Y29uZmlndXJlLmFjPC9maWxlbmFtZT4gZmlsZXMgYXMgZm9sbG93czoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgPGZpbGVuYW1lPmhlbGxvLmM8L2ZpbGVuYW1lPiwgaW5jbHVkZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVzZSBsaW5lczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEFmdGVyIHNldHRpbmcgdXAgdGhlIGRpcmVjdG9yeSwgcG9wdWxhdGUgaXQgd2l0aCBmaWxlcworICAgICAgICAgICAgICAgICAgICBuZWVkZWQgZm9yIHRoZSBmbG93LgorICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCBhIHByb2plY3Qgc291cmNlIGZpbGUsIGEgZmlsZSB0byBoZWxwIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiwgYW5kIGEgZmlsZSB0byBoZWxwIGNyZWF0ZSB0aGUgTWFrZWZpbGUsCisgICAgICAgICAgICAgICAgICAgIGFuZCBhIFJFQURNRSBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aGVsbG8uYzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZmlndXJlLmFjPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZS5hbTwvZmlsZW5hbWU+LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+LCByZXNwZWN0aXZlbHkuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgIDxwYXJhPiBVc2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIGNyZWF0ZSBhbiBlbXB0eSBSRUFETUUKKyAgICAgICAgICAgICAgICAgICAgZmlsZSwgd2hpY2ggaXMgcmVxdWlyZWQgYnkgR05VIENvZGluZyBTdGFuZGFyZHM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCB0b3VjaCBSRUFETUUKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBDcmVhdGUgdGhlIHJlbWFpbmluZyB0aHJlZSBmaWxlcyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+aGVsbG8uYzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAjaW5jbHVkZSAmbHQ7c3RkaW8uaCZndDsKIAogICAgICBtYWluKCkKICAgICAgICAgewogICAgICAgICAgICBwcmludGYoIkhlbGxvIFdvcmxkIVxuIik7CiAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciA8ZmlsZW5hbWU+TWFrZWZpbGUuYW08L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSB0aGVzZSBsaW5lczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBiaW5fUFJPR1JBTVMgPSBoZWxsbwotICAgICBoZWxsb19TT1VSQ0VTID0gaGVsbG8uYwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIDxmaWxlbmFtZT5jb25maWd1cmUuaW48L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSB0aGVzZSBsaW5lczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmNvbmZpZ3VyZS5hYzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBBQ19JTklUKGhlbGxvLDAuMSkKICAgICAgQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbl0pCiAgICAgIEFDX1BST0dfQ0MKLSAgICAgQUNfUFJPR19JTlNUQUxMCi0gICAgIEFDX09VVFBVVChNYWtlZmlsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Tb3VyY2UgdGhlIGNyb3NzLXRvb2xjaGFpbgotICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgc2V0dXAgZmlsZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgQXMgZGVzY3JpYmVkIGVhcmxpZXIgaW4gdGhlIG1hbnVhbCwgaW5zdGFsbGluZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNyb3NzLXRvb2xjaGFpbiBjcmVhdGVzIGEgY3Jvc3MtdG9vbGNoYWluCi0gICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgaW4gdGhlIGRpcmVjdG9yeSB0aGF0IHRoZSBTREsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBpbnN0YWxsZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICBCZWZvcmUgeW91IGNhbiB1c2UgdGhlIHRvb2xzIHRvIGRldmVsb3AgeW91ciBwcm9qZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgeW91IG11c3Qgc291cmNlIHRoaXMgc2V0dXAgc2NyaXB0LgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHNjcmlwdCBiZWdpbnMgd2l0aCB0aGUgc3RyaW5nICJlbnZpcm9ubWVudC1zZXR1cCIKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBjb250YWlucyB0aGUgbWFjaGluZSBhcmNoaXRlY3R1cmUsIHdoaWNoIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dlZCBieSB0aGUgc3RyaW5nICJwb2t5LWxpbnV4Ii4KLSAgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IHNvdXJjZXMgYSBzY3JpcHQgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgU0RLIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgdGhhdCB1c2VzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgMzItYml0IEludGVsIHg4NiBBcmNoaXRlY3R1cmUgYW5kIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgJkRJU1RST19OQU1FOyBZb2N0byBQcm9qZWN0IHJlbGVhc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEFDX0NPTkZJR19GSUxFUyhNYWtlZmlsZSkKKyAgICAgQUNfT1VUUFVUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+TWFrZWZpbGUuYW08L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgYmluX1BST0dSQU1TID0gaGVsbG8KKyAgICAgaGVsbG9fU09VUkNFUyA9IGhlbGxvLmMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Tb3VyY2UgdGhlIENyb3NzLVRvb2xjaGFpbgorICAgICAgICAgICAgICAgICAgICBFbnZpcm9ubWVudCBTZXR1cCBGaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEFzIGRlc2NyaWJlZCBlYXJsaWVyIGluIHRoZSBtYW51YWwsIGluc3RhbGxpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIGNyb3NzLXRvb2xjaGFpbiBjcmVhdGVzIGEgY3Jvc3MtdG9vbGNoYWluCisgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBpbiB0aGUgZGlyZWN0b3J5IHRoYXQgdGhlIFNESworICAgICAgICAgICAgICAgICAgICB3YXMgaW5zdGFsbGVkLgorICAgICAgICAgICAgICAgICAgICBCZWZvcmUgeW91IGNhbiB1c2UgdGhlIHRvb2xzIHRvIGRldmVsb3AgeW91ciBwcm9qZWN0LAorICAgICAgICAgICAgICAgICAgICB5b3UgbXVzdCBzb3VyY2UgdGhpcyBzZXR1cCBzY3JpcHQuCisgICAgICAgICAgICAgICAgICAgIFRoZSBzY3JpcHQgYmVnaW5zIHdpdGggdGhlIHN0cmluZyAiZW52aXJvbm1lbnQtc2V0dXAiCisgICAgICAgICAgICAgICAgICAgIGFuZCBjb250YWlucyB0aGUgbWFjaGluZSBhcmNoaXRlY3R1cmUsIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgICAgIGZvbGxvd2VkIGJ5IHRoZSBzdHJpbmcgInBva3ktbGludXgiLgorICAgICAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLCB0aGUgY29tbWFuZCBzb3VyY2VzIGEgc2NyaXB0IGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgU0RLIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgdGhhdCB1c2VzIHRoZQorICAgICAgICAgICAgICAgICAgICAzMi1iaXQgSW50ZWwgeDg2IEFyY2hpdGVjdHVyZSBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICZESVNUUk9fTkFNRTsgWW9jdG8gUHJvamVjdCByZWxlYXNlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgc291cmNlIC9vcHQvcG9reS8mRElTVFJPOy9lbnZpcm9ubWVudC1zZXR1cC1pNTg2LXBva3ktbGludXgKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+R2VuZXJhdGUgdGhlIGxvY2FsIGFjbG9jYWwubTQKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzIGFuZCBjcmVhdGUgdGhlIGNvbmZpZ3VyZSBzY3JpcHQ6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgR05VIEF1dG90b29scyBnZW5lcmF0ZSB0aGUgbG9jYWwKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hY2xvY2FsLm00PC9maWxlbmFtZT4gZmlsZXMgYW5kIGNyZWF0ZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZSBzY3JpcHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYWNsb2NhbAotICAgICAkIGF1dG9jb25mCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdlbmVyYXRlIGZpbGVzIG5lZWRlZCBieSBHTlUgY29kaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGFuZGFyZHM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIEdOVSBjb2Rpbmcgc3RhbmRhcmRzIHJlcXVpcmUgY2VydGFpbiBmaWxlcyBpbiBvcmRlcgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBwcm9qZWN0IHRvIGJlIGNvbXBsaWFudC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCBjcmVhdGVzIHRob3NlIGZpbGVzOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHRvdWNoIE5FV1MgUkVBRE1FIEFVVEhPUlMgQ2hhbmdlTG9nCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdlbmVyYXRlIHRoZSBjb25maWd1cmUgZmlsZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGdlbmVyYXRlcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25maWd1cmU8L2ZpbGVuYW1lPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBhdXRvbWFrZSAtYQotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Dcm9zcy1jb21waWxlIHRoZSBwcm9qZWN0OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQgY29tcGlsZXMgdGhlIHByb2plY3QgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBjcm9zcy1jb21waWxlci4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNPTkZJR1VSRV9GTEFHUyc+PGZpbGVuYW1lPkNPTkZJR1VSRV9GTEFHUzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlIHByb3ZpZGVzIHRoZSBtaW5pbWFsIGFyZ3VtZW50cyBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIEdOVSBjb25maWd1cmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIHRoZSA8ZmlsZW5hbWU+Y29uZmlndXJlPC9maWxlbmFtZT4gU2NyaXB0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPmF1dG9yZWNvbmY8L2ZpbGVuYW1lPiBjb21tYW5kIHRvCisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlIHRoZSA8ZmlsZW5hbWU+Y29uZmlndXJlPC9maWxlbmFtZT4gc2NyaXB0LgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYXV0b3JlY29uZgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+YXV0b3JlY29uZjwvZmlsZW5hbWU+IHRvb2wgdGFrZXMgY2FyZQorICAgICAgICAgICAgICAgICAgICBvZiBydW5uaW5nIHRoZSBvdGhlciBBdXRvdG9vbHMgc3VjaCBhcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YWNsb2NhbDwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXV0b2NvbmY8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvbWFrZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBnZXQgZXJyb3JzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25maWd1cmUuYWM8L2ZpbGVuYW1lPiwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdXRvcmVjb25mPC9maWxlbmFtZT4gcnVucywgdGhhdCBpbmRpY2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgbWlzc2luZyBmaWxlcywgeW91IGNhbiB1c2UgdGhlICItaSIgb3B0aW9uLCB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgZW5zdXJlcyBtaXNzaW5nIGF1eGlsaWFyeSBmaWxlcyBhcmUgY29waWVkIHRvIHRoZSBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Dcm9zcy1Db21waWxlIHRoZSBQcm9qZWN0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCBjb21waWxlcyB0aGUgcHJvamVjdCB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgY3Jvc3MtY29tcGlsZXIuCisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQ09ORklHVVJFX0ZMQUdTJz48ZmlsZW5hbWU+Q09ORklHVVJFX0ZMQUdTPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZSBwcm92aWRlcyB0aGUgbWluaW1hbCBhcmd1bWVudHMgZm9yCisgICAgICAgICAgICAgICAgICAgIEdOVSBjb25maWd1cmU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCAuL2NvbmZpZ3VyZSAke0NPTkZJR1VSRV9GTEFHU30KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBhbmQgaW5zdGFsbCB0aGUgcHJvamVjdDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgdHdvIGNvbW1hbmRzIGdlbmVyYXRlIGFuZCBpbnN0YWxsIHRoZSBwcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSBkZXN0aW5hdGlvbiBkaXJlY3Rvcnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGFuIEF1dG90b29scy1iYXNlZCBwcm9qZWN0LCB5b3UgY2FuIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgY3Jvc3MtdG9vbGNoYWluIGJ5IGp1c3QgcGFzc2luZyB0aGUgYXBwcm9wcmlhdGUgaG9zdAorICAgICAgICAgICAgICAgICAgICBvcHRpb24gdG8gPGZpbGVuYW1lPmNvbmZpZ3VyZS5zaDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaGUgaG9zdCBvcHRpb24geW91IHVzZSBpcyBkZXJpdmVkIGZyb20gdGhlIG5hbWUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBmb3VuZCBpbiB0aGUgZGlyZWN0b3J5IGluIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIHlvdSBpbnN0YWxsZWQgdGhlIGNyb3NzLXRvb2xjaGFpbi4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBob3N0IG9wdGlvbiBmb3IgYW4gQVJNLWJhc2VkIHRhcmdldCB0aGF0CisgICAgICAgICAgICAgICAgICAgIHVzZXMgdGhlIEdOVSBFQUJJIGlzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hcm12NXRlLXBva3ktbGludXgtZ251ZWFiaTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBZb3Ugd2lsbCBub3RpY2UgdGhhdCB0aGUgbmFtZSBvZiB0aGUgc2NyaXB0IGlzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5lbnZpcm9ubWVudC1zZXR1cC1hcm12NXRlLXBva3ktbGludXgtZ251ZWFiaTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICBUaHVzLCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgd29ya3MgdG8gdXBkYXRlIHlvdXIgcHJvamVjdAorICAgICAgICAgICAgICAgICAgICBhbmQgcmVidWlsZCBpdCB1c2luZyB0aGUgYXBwcm9wcmlhdGUgY3Jvc3MtdG9vbGNoYWluIHRvb2xzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgLi9jb25maWd1cmUgLS1ob3N0PWFybXY1dGUtcG9reS1saW51eC1nbnVlYWJpIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9PHJlcGxhY2VhYmxlPnN5c3Jvb3RfZGlyPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIGFuZCBJbnN0YWxsIHRoZSBQcm9qZWN0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZXNlIHR3byBjb21tYW5kcyBnZW5lcmF0ZSBhbmQgaW5zdGFsbCB0aGUgcHJvamVjdAorICAgICAgICAgICAgICAgICAgICBpbnRvIHRoZSBkZXN0aW5hdGlvbiBkaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBtYWtlCiAgICAgICQgbWFrZSBpbnN0YWxsIERFU1RESVI9Li90bXAKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VmVyaWZ5IHRoZSBpbnN0YWxsYXRpb246PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCBpcyBhIHNpbXBsZSB3YXkgdG8gdmVyaWZ5IHRoZSBpbnN0YWxsYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgIG9mIHlvdXIgcHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIFJ1bm5pbmcgdGhlIGNvbW1hbmQgcHJpbnRzIHRoZSBhcmNoaXRlY3R1cmUgb24gd2hpY2gKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBiaW5hcnkgZmlsZSBjYW4gcnVuLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBhcmNoaXRlY3R1cmUgc2hvdWxkIGJlIHRoZSBzYW1lIGFyY2hpdGVjdHVyZSB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgaW5zdGFsbGVkIGNyb3NzLXRvb2xjaGFpbiBzdXBwb3J0cy4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBmaWxlIC4vdG1wL3Vzci9sb2NhbC9iaW4vaGVsbG8KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXhlY3V0ZSB5b3VyIHByb2plY3Q6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRvIGV4ZWN1dGUgdGhlIHByb2plY3QgaW4gdGhlIHNoZWxsLCBzaW1wbHkgZW50ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBuYW1lLgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNvdWxkIGFsc28gY29weSB0aGUgYmluYXJ5IHRvIHRoZSBhY3R1YWwgdGFyZ2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICBoYXJkd2FyZSBhbmQgcnVuIHRoZSBwcm9qZWN0IHRoZXJlIGFzIHdlbGw6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgLi9oZWxsbwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgQXMgZXhwZWN0ZWQsIHRoZSBwcm9qZWN0IGRpc3BsYXlzIHRoZSAiSGVsbG8gV29ybGQhIgotICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0ncGFzc2luZy1ob3N0LW9wdGlvbnMnPgotICAgICAgICAgICAgPHRpdGxlPlBhc3NpbmcgSG9zdCBPcHRpb25zPC90aXRsZT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRm9yIGFuIEF1dG90b29scy1iYXNlZCBwcm9qZWN0LCB5b3UgY2FuIHVzZSB0aGUgY3Jvc3MtdG9vbGNoYWluCi0gICAgICAgICAgICAgICAgYnkganVzdCBwYXNzaW5nIHRoZSBhcHByb3ByaWF0ZSBob3N0IG9wdGlvbiB0bwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25maWd1cmUuc2g8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICBUaGUgaG9zdCBvcHRpb24geW91IHVzZSBpcyBkZXJpdmVkIGZyb20gdGhlIG5hbWUgb2YgdGhlCi0gICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IGZvdW5kIGluIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggeW91Ci0gICAgICAgICAgICAgICAgaW5zdGFsbGVkIHRoZSBjcm9zcy10b29sY2hhaW4uCi0gICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBob3N0IG9wdGlvbiBmb3IgYW4gQVJNLWJhc2VkIHRhcmdldCB0aGF0IHVzZXMKLSAgICAgICAgICAgICAgICB0aGUgR05VIEVBQkkgaXMgPGZpbGVuYW1lPmFybXY1dGUtcG9reS1saW51eC1nbnVlYWJpPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgWW91IHdpbGwgbm90aWNlIHRoYXQgdGhlIG5hbWUgb2YgdGhlIHNjcmlwdCBpcwotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5lbnZpcm9ubWVudC1zZXR1cC1hcm12NXRlLXBva3ktbGludXgtZ251ZWFiaTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIFRodXMsIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB3b3JrcyB0byB1cGRhdGUgeW91ciBwcm9qZWN0IGFuZAotICAgICAgICAgICAgICAgIHJlYnVpbGQgaXQgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIGNyb3NzLXRvb2xjaGFpbiB0b29sczoKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgLi9jb25maWd1cmUgLS1ob3N0PWFybXY1dGUtcG9reS1saW51eC1nbnVlYWJpIFwKLSAgICAgICAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD08cmVwbGFjZWFibGU+c3lzcm9vdF9kaXI8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgSWYgdGhlIDxmaWxlbmFtZT5jb25maWd1cmU8L2ZpbGVuYW1lPiBzY3JpcHQgcmVzdWx0cyBpbgotICAgICAgICAgICAgICAgICAgICBwcm9ibGVtcyByZWNvZ25pemluZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9PC9maWxlbmFtZT48cmVwbGFjZWFibGU+c3lzcm9vdC1kaXI8L3JlcGxhY2VhYmxlPgotICAgICAgICAgICAgICAgICAgICBvcHRpb24sIHJlZ2VuZXJhdGUgdGhlIHNjcmlwdCB0byBlbmFibGUgdGhlIHN1cHBvcnQgYnkKLSAgICAgICAgICAgICAgICAgICAgZG9pbmcgdGhlIGZvbGxvd2luZyBhbmQgdGhlbiBydW4gdGhlIHNjcmlwdCBhZ2FpbjoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGxpYnRvb2xpemUgLS1hdXRvbWFrZQotICAgICAkIGFjbG9jYWwgLUkgJHtPRUNPUkVfVEFSR0VUX1NZU1JPT1R9L3Vzci9zaGFyZS9hY2xvY2FsIFstSSA8cmVwbGFjZWFibGU+ZGlyX2NvbnRhaW5pbmdfeW91cl9wcm9qZWN0LXNwZWNpZmljX200X21hY3JvczwvcmVwbGFjZWFibGU+XQotICAgICAkIGF1dG9jb25mCi0gICAgICQgYXV0b2hlYWRlcgotICAgICAkIGF1dG9tYWtlIC1hCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUbyBsZWFybiBhYm91dCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZXN0YWJsaXNoZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4geW91IHJ1biB0aGUgY3Jvc3MtdG9vbGNoYWluIGVudmlyb25tZW50IHNldHVwCisgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHQgYW5kIGhvdyB0aGV5IGFyZSB1c2VkIG9yIG92ZXJyaWRkZW4gd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIE1ha2VmaWxlLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nbWFrZWZpbGUtYmFzZWQtcHJvamVjdHMnPk1ha2VmaWxlLUJhc2VkIFByb2plY3RzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBuZXh0IGNvbW1hbmQgaXMgYSBzaW1wbGUgd2F5IHRvIHZlcmlmeSB0aGUKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGF0aW9uIG9mIHlvdXIgcHJvamVjdC4KKyAgICAgICAgICAgICAgICAgICAgUnVubmluZyB0aGUgY29tbWFuZCBwcmludHMgdGhlIGFyY2hpdGVjdHVyZSBvbiB3aGljaAorICAgICAgICAgICAgICAgICAgICB0aGUgYmluYXJ5IGZpbGUgY2FuIHJ1bi4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBhcmNoaXRlY3R1cmUgc2hvdWxkIGJlIHRoZSBzYW1lIGFyY2hpdGVjdHVyZSB0aGF0CisgICAgICAgICAgICAgICAgICAgIHRoZSBpbnN0YWxsZWQgY3Jvc3MtdG9vbGNoYWluIHN1cHBvcnRzLgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgZmlsZSAuL3RtcC91c3IvbG9jYWwvYmluL2hlbGxvCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXhlY3V0ZSBZb3VyIFByb2plY3Q6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVG8gZXhlY3V0ZSB0aGUgcHJvamVjdCwgeW91IHdvdWxkIG5lZWQgdG8gcnVuIGl0IG9uIHlvdXIKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IGhhcmR3YXJlLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIHRhcmdldCBoYXJkd2FyZSBoYXBwZW5zIHRvIGJlIHlvdXIgYnVpbGQgaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgeW91IGNvdWxkIHJ1biB0aGUgcHJvamVjdCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgLi90bXAvdXNyL2xvY2FsL2Jpbi9oZWxsbworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEFzIGV4cGVjdGVkLCB0aGUgcHJvamVjdCBkaXNwbGF5cyB0aGUgIkhlbGxvIFdvcmxkISIKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCiAgICAgPHNlY3Rpb24gaWQ9J21ha2VmaWxlLWJhc2VkLXByb2plY3RzJz4KICAgICAgICAgPHRpdGxlPk1ha2VmaWxlLUJhc2VkIFByb2plY3RzPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEZvciBNYWtlZmlsZS1iYXNlZCBwcm9qZWN0cywgdGhlIGNyb3NzLXRvb2xjaGFpbiBlbnZpcm9ubWVudAotICAgICAgICAgICAgdmFyaWFibGVzIGVzdGFibGlzaGVkIGJ5IHJ1bm5pbmcgdGhlIGNyb3NzLXRvb2xjaGFpbiBlbnZpcm9ubWVudAotICAgICAgICAgICAgc2V0dXAgc2NyaXB0IGFyZSBzdWJqZWN0IHRvIGdlbmVyYWwgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPgotICAgICAgICAgICAgcnVsZXMuCisgICAgICAgICAgICBTaW1wbGUgTWFrZWZpbGUtYmFzZWQgcHJvamVjdHMgdXNlIGFuZCBpbnRlcmFjdCB3aXRoIHRoZQorICAgICAgICAgICAgY3Jvc3MtdG9vbGNoYWluIGVudmlyb25tZW50IHZhcmlhYmxlcyBlc3RhYmxpc2hlZCB3aGVuIHlvdSBydW4KKyAgICAgICAgICAgIHRoZSBjcm9zcy10b29sY2hhaW4gZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0LgorICAgICAgICAgICAgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgc3ViamVjdCB0byBnZW5lcmFsCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IHJ1bGVzLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUbyBpbGx1c3RyYXRlIHRoaXMsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZm91ciBjcm9zcy10b29sY2hhaW4KLSAgICAgICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlczoKLSAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNDJz5DQzwvdWxpbms+PWk1ODYtcG9reS1saW51eC1nY2MgLW0zMiAtbWFyY2g9aTU4NiAtLXN5c3Jvb3Q9L29wdC9wb2t5LyZESVNUUk87L3N5c3Jvb3RzL2k1ODYtcG9reS1saW51eAotICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTEQnPkxEPC91bGluaz49aTU4Ni1wb2t5LWxpbnV4LWxkIC0tc3lzcm9vdD0vb3B0L3Bva3kvJkRJU1RSTzsvc3lzcm9vdHMvaTU4Ni1wb2t5LWxpbnV4Ci0gICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1DRkxBR1MnPkNGTEFHUzwvdWxpbms+PS1PMiAtcGlwZSAtZyAtZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMKLSAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNYWEZMQUdTJz5DWFhGTEFHUzwvdWxpbms+PS1PMiAtcGlwZSAtZyAtZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMKLSAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIE5vdywgY29uc2lkZXIgdGhlIGZvbGxvd2luZyB0aHJlZSBjYXNlczoKKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcmVzZW50cyBhIHNpbXBsZSBNYWtlZmlsZSBkZXZlbG9wbWVudCBmbG93IGFuZAorICAgICAgICAgICAgcHJvdmlkZXMgYW4gZXhhbXBsZSB0aGF0IGxldHMgeW91IHNlZSBob3cgeW91IGNhbiB1c2UKKyAgICAgICAgICAgIGNyb3NzLXRvb2xjaGFpbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYW5kIE1ha2VmaWxlIHZhcmlhYmxlcworICAgICAgICAgICAgZHVyaW5nIGRldmVsb3BtZW50LgorICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL3Nkay1tYWtlZmlsZS1mbG93LnBuZyIgd2lkdGg9IjZpbiIgaGVpZ2h0PSI3aW4iIGFsaWduPSJjZW50ZXIiIC8+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBtYWluIHBvaW50IG9mIHRoaXMgc2VjdGlvbiBpcyB0byBleHBsYWluIHRoZSBmb2xsb3dpbmcgdGhyZWUKKyAgICAgICAgICAgIGNhc2VzIHJlZ2FyZGluZyB2YXJpYWJsZSBiZWhhdmlvcjoKICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2FzZSAxIC0gTm8gVmFyaWFibGVzIFNldCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1ha2VmaWxlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSB0aGVzZSB2YXJpYWJsZXMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgc2V0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TWFrZWZpbGU8L2ZpbGVuYW1lPiBNYXAgdG8gRXF1aXZhbGVudAorICAgICAgICAgICAgICAgICAgICBFbnZpcm9ubWVudCBWYXJpYWJsZXMgU2V0IGluIHRoZSBTREsgU2V0dXAgU2NyaXB0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEJlY2F1c2UgbWF0Y2hpbmcgdmFyaWFibGVzIGFyZSBub3Qgc3BlY2lmaWNhbGx5IHNldCBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1ha2VmaWxlPC9maWxlbmFtZT4sIHRoZSB2YXJpYWJsZXMgcmV0YWluIHRoZWlyCi0gICAgICAgICAgICAgICAgICAgIHZhbHVlcyBiYXNlZCBvbiB0aGUgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgICAgIHZhbHVlcyBiYXNlZCBvbiB0aGUgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0LgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DYXNlIDIgLSBWYXJpYWJsZXMgU2V0IGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TWFrZWZpbGU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBTcGVjaWZpY2FsbHkgc2V0dGluZyB2YXJpYWJsZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DYXNlIDIgLSBWYXJpYWJsZXMgQXJlIFNldCBpbiB0aGUgTWFrZWZpbGUgdGhhdAorICAgICAgICAgICAgICAgICAgICBNYXAgdG8gRXF1aXZhbGVudCBFbnZpcm9ubWVudCBWYXJpYWJsZXMgZnJvbSB0aGUgU0RLCisgICAgICAgICAgICAgICAgICAgIFNldHVwIFNjcmlwdDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpY2FsbHkgc2V0dGluZyBtYXRjaGluZyB2YXJpYWJsZXMgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZTwvZmlsZW5hbWU+IGR1cmluZyB0aGUgYnVpbGQgcmVzdWx0cyBpbgogICAgICAgICAgICAgICAgICAgICB0aGUgZW52aXJvbm1lbnQgc2V0dGluZ3Mgb2YgdGhlIHZhcmlhYmxlcyBiZWluZwogICAgICAgICAgICAgICAgICAgICBvdmVyd3JpdHRlbi4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgdmFyaWFibGVzIHlvdSBzZXQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZTwvZmlsZW5hbWU+IGFyZSB1c2VkLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DYXNlIDMgLSBWYXJpYWJsZXMgU2V0IHdoZW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NYWtlZmlsZTwvZmlsZW5hbWU+IGlzIEV4ZWN1dGVkIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgIENvbW1hbmQgTGluZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2FzZSAzIC0gVmFyaWFibGVzIEFyZSBTZXQgVXNpbmcgdGhlIENvbW1hbmQgTGluZQorICAgICAgICAgICAgICAgICAgICB0aGF0IE1hcCB0byBFcXVpdmFsZW50IEVudmlyb25tZW50IFZhcmlhYmxlcyBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICBTREsgU2V0dXAgU2NyaXB0OjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGluZyB0aGUgPGZpbGVuYW1lPk1ha2VmaWxlPC9maWxlbmFtZT4gZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgY29tbWFuZC1saW5lIHJlc3VsdHMgaW4gdGhlIHZhcmlhYmxlcyBiZWluZyBvdmVyd3JpdHRlbgotICAgICAgICAgICAgICAgICAgICB3aXRoIGNvbW1hbmQtbGluZSBjb250ZW50IHJlZ2FyZGxlc3Mgb2Ygd2hhdCBpcyBiZWluZyBzZXQKLSAgICAgICAgICAgICAgICAgICAgaW4gdGhlIDxmaWxlbmFtZT5NYWtlZmlsZTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgbm90IGNvbnNpZGVyZWQKLSAgICAgICAgICAgICAgICAgICAgdW5sZXNzIHlvdSB1c2UgdGhlICItZSIgZmxhZyBkdXJpbmcgdGhlIGJ1aWxkOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgbWFrZSAtZSA8cmVwbGFjZWFibGU+ZmlsZTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IHVzZSB0aGlzIGZsYWcsIHRoZW4gdGhlIGVudmlyb25tZW50IHZhbHVlcyBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzIG92ZXJyaWRlIGFueSB2YXJpYWJsZXMgc3BlY2lmaWNhbGx5IHNldCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1ha2VmaWxlPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgbGluZSByZXN1bHRzIGluIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYmVpbmcKKyAgICAgICAgICAgICAgICAgICAgb3ZlcndyaXR0ZW4uCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgdGhlIGNvbW1hbmQtbGluZSBjb250ZW50IGlzIHVzZWQuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICBGb3IgdGhlIGxpc3Qgb2YgdmFyaWFibGVzIHNldCB1cCBieSB0aGUgY3Jvc3MtdG9vbGNoYWluCi0gICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1ydW5uaW5nLXRoZS1zZGstZW52aXJvbm1lbnQtc2V0dXAtc2NyaXB0Jz5SdW5uaW5nIHRoZSBTREsgRW52aXJvbm1lbnQgU2V0dXAgU2NyaXB0PC9saW5rPiIKLSAgICAgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICAgICAgICAgIFJlZ2FyZGxlc3Mgb2YgaG93IHlvdSBzZXQgeW91ciB2YXJpYWJsZXMsIGlmIHlvdSB1c2UKKyAgICAgICAgICAgICAgICB0aGUgIi1lIiBvcHRpb24gd2l0aCA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+LCB0aGUKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgZnJvbSB0aGUgU0RLIHNldHVwIHNjcmlwdCB0YWtlIHByZWNlZGVuY2U6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIG1ha2UgLWUgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiBwcmVzZW50cyBhIHNpbXBsZSBNYWtlZmlsZSBleGFtcGxlCisgICAgICAgICAgICB0aGF0IGRlbW9uc3RyYXRlcyB0aGVzZSB2YXJpYWJsZSBiZWhhdmlvcnMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEluIGEgbmV3IHNoZWxsIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgbm90IGVzdGFibGlzaGVkIGZvciB0aGUKKyAgICAgICAgICAgIFNESyB1bnRpbCB5b3UgcnVuIHRoZSBzZXR1cCBzY3JpcHQuCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kcyBzaG93IGEgbnVsbCB2YWx1ZSBmb3IgdGhlCisgICAgICAgICAgICBjb21waWxlciB2YXJpYWJsZSAoaS5lLgorICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUNDJz48ZmlsZW5hbWU+Q0M8L2ZpbGVuYW1lPjwvdWxpbms+KS4KKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBlY2hvICR7Q0N9CisKKyAgICAgJAorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgUnVubmluZyB0aGUgU0RLIHNldHVwIHNjcmlwdCBmb3IgYSA2NC1iaXQgYnVpbGQgaG9zdCBhbmQgYW4KKyAgICAgICAgICAgIGk1ODYtdHVuZWQgdGFyZ2V0IGFyY2hpdGVjdHVyZSBmb3IgYQorICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+IGltYWdlIHVzaW5nIHRoZSBjdXJyZW50CisgICAgICAgICAgICAmRElTVFJPOyBZb2N0byBQcm9qZWN0IHJlbGVhc2UgYW5kIHRoZW4gZWNob2luZyB0aGF0IHZhcmlhYmxlCisgICAgICAgICAgICBzaG93cyB0aGUgdmFsdWUgZXN0YWJsaXNoZWQgdGhyb3VnaCB0aGUgc2NyaXB0OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNvdXJjZSAvb3B0L3Bva3kvJkRJU1RSTzsvZW52aXJvbm1lbnQtc2V0dXAtaTU4Ni1wb2t5LWxpbnV4CisgICAgICQgZWNobyAke0NDfQorICAgICBpNTg2LXBva3ktbGludXgtZ2NjIC1tMzIgLW1hcmNoPWk1ODYgLS1zeXNyb290PS9vcHQvcG9reS8yLjUvc3lzcm9vdHMvaTU4Ni1wb2t5LWxpbnV4CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRvIGlsbHVzdHJhdGUgdmFyaWFibGUgdXNlLCB3b3JrIHRocm91Z2ggdGhpcyBzaW1wbGUgIkhlbGxvIFdvcmxkISIKKyAgICAgICAgICAgIGV4YW1wbGU6CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIGEgV29ya2luZyBEaXJlY3RvcnkgYW5kIFBvcHVsYXRlIEl0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIENyZWF0ZSBhIGNsZWFuIGRpcmVjdG9yeSBmb3IgeW91ciBwcm9qZWN0IGFuZCB0aGVuIG1ha2UKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBkaXJlY3RvcnkgeW91ciB3b3JraW5nIGxvY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgbWtkaXIgJEhPTUUvaGVsbG93b3JsZAorICAgICAkIGNkICRIT01FL2hlbGxvd29ybGQKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBBZnRlciBzZXR0aW5nIHVwIHRoZSBkaXJlY3RvcnksIHBvcHVsYXRlIGl0IHdpdGggZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgbmVlZGVkIGZvciB0aGUgZmxvdy4KKyAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgYSA8ZmlsZW5hbWU+bWFpbi5jPC9maWxlbmFtZT4gZmlsZSBmcm9tIHdoaWNoIHlvdQorICAgICAgICAgICAgICAgICAgICBjYWxsIHlvdXIgZnVuY3Rpb24sIGEgPGZpbGVuYW1lPm1vZHVsZS5oPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgICAgICB0byBjb250YWluIGhlYWRlcnMsIGFuZCBhIDxmaWxlbmFtZT5tb2R1bGUuYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHRoYXQgZGVmaW5lcyB5b3VyIGZ1bmN0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+Q3JlYXRlIHRoZSB0aHJlZSBmaWxlcyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bWFpbi5jPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAjaW5jbHVkZSAibW9kdWxlLmgiCisgICAgIHZvaWQgc2FtcGxlX2Z1bmMoKTsKKyAgICAgaW50IG1haW4oKQorICAgICB7CisgICAgIAlzYW1wbGVfZnVuYygpOworICAgICAJcmV0dXJuIDA7CisgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bW9kdWxlLmg8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICNpbmNsdWRlICZsdDtzdGRpby5oJmd0OworICAgICB2b2lkIHNhbXBsZV9mdW5jKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPm1vZHVsZS5jPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAjaW5jbHVkZSAibW9kdWxlLmgiCisgICAgIHZvaWQgc2FtcGxlX2Z1bmMoKQorICAgICB7CisJICAgICBwcmludGYoIkhlbGxvIFdvcmxkISIpOworCSAgICAgcHJpbnRmKCJcbiIpOworICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U291cmNlIHRoZSBDcm9zcy1Ub29sY2hhaW4gRW52aXJvbm1lbnQgU2V0dXAgRmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBBcyBkZXNjcmliZWQgZWFybGllciBpbiB0aGUgbWFudWFsLCBpbnN0YWxsaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICBjcm9zcy10b29sY2hhaW4gY3JlYXRlcyBhIGNyb3NzLXRvb2xjaGFpbiBlbnZpcm9ubWVudCBzZXR1cAorICAgICAgICAgICAgICAgICAgICBzY3JpcHQgaW4gdGhlIGRpcmVjdG9yeSB0aGF0IHRoZSBTREsgd2FzIGluc3RhbGxlZC4KKyAgICAgICAgICAgICAgICAgICAgQmVmb3JlIHlvdSBjYW4gdXNlIHRoZSB0b29scyB0byBkZXZlbG9wIHlvdXIgcHJvamVjdCwKKyAgICAgICAgICAgICAgICAgICAgeW91IG11c3Qgc291cmNlIHRoaXMgc2V0dXAgc2NyaXB0LgorICAgICAgICAgICAgICAgICAgICBUaGUgc2NyaXB0IGJlZ2lucyB3aXRoIHRoZSBzdHJpbmcgImVudmlyb25tZW50LXNldHVwIgorICAgICAgICAgICAgICAgICAgICBhbmQgY29udGFpbnMgdGhlIG1hY2hpbmUgYXJjaGl0ZWN0dXJlLCB3aGljaCBpcworICAgICAgICAgICAgICAgICAgICBmb2xsb3dlZCBieSB0aGUgc3RyaW5nICJwb2t5LWxpbnV4Ii4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHRoaXMgZXhhbXBsZSwgdGhlIGNvbW1hbmQgc291cmNlcyBhIHNjcmlwdCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IFNESyBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IHRoYXQgdXNlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgMzItYml0IEludGVsIHg4NiBBcmNoaXRlY3R1cmUgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAmRElTVFJPX05BTUU7IFlvY3RvIFByb2plY3QgcmVsZWFzZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNvdXJjZSAvb3B0L3Bva3kvJkRJU1RSTzsvZW52aXJvbm1lbnQtc2V0dXAtaTU4Ni1wb2t5LWxpbnV4CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIHRoZSA8ZmlsZW5hbWU+TWFrZWZpbGU8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBGb3IgdGhpcyBleGFtcGxlLCB0aGUgTWFrZWZpbGUgY29udGFpbnMgdHdvIGxpbmVzIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSA8ZmlsZW5hbWU+Q0M8L2ZpbGVuYW1lPiB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgT25lIGxpbmUgaXMgaWRlbnRpY2FsIHRvIHRoZSB2YWx1ZSB0aGF0IGlzIHNldCB3aGVuIHlvdQorICAgICAgICAgICAgICAgICAgICBydW4gdGhlIFNESyBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQsIGFuZCB0aGUgb3RoZXIgbGluZQorICAgICAgICAgICAgICAgICAgICBzZXRzIDxmaWxlbmFtZT5DQzwvZmlsZW5hbWU+IHRvICJnY2MiLCB0aGUgZGVmYXVsdCBHTlUKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIgb24gdGhlIGJ1aWxkIGhvc3Q6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgIyBDQz1pNTg2LXBva3ktbGludXgtZ2NjICAtbTMyIC1tYXJjaD1pNTg2IC0tc3lzcm9vdD0vb3B0L3Bva3kvMi41L3N5c3Jvb3RzL2k1ODYtcG9reS1saW51eAorICAgICAjIENDPSJnY2MiCisgICAgIGFsbDogbWFpbi5vIG1vZHVsZS5vCisgICAgIAkgJHtDQ30gbWFpbi5vIG1vZHVsZS5vIC1vIHRhcmdldF9iaW4KKyAgICAgbWFpbi5vOiBtYWluLmMgbW9kdWxlLmgKKwkgICAgICR7Q0N9IC1JIC4gLWMgbWFpbi5jCisgICAgIG1vZHVsZS5vOiBtb2R1bGUuYyBtb2R1bGUuaAorCSAgICAgJHtDQ30gLUkgLiAtYyBtb2R1bGUuYworICAgICBjbGVhbjoKKwkgICAgIHJtIC1yZiAqLm8KKwkgICAgIHJtIHRhcmdldF9iaW4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIHRoZSBQcm9qZWN0OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPiBjb21tYW5kIHRvIGNyZWF0ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgYmluYXJ5IG91dHB1dCBmaWxlLgorICAgICAgICAgICAgICAgICAgICBCZWNhdXNlIHZhcmlhYmxlcyBhcmUgY29tbWVudGVkIG91dCBpbiB0aGUgTWFrZWZpbGUsCisgICAgICAgICAgICAgICAgICAgIHRoZSB2YWx1ZSB1c2VkIGZvciA8ZmlsZW5hbWU+Q0M8L2ZpbGVuYW1lPiBpcyB0aGUgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgc2V0IHdoZW4gdGhlIFNESyBlbnZpcm9ubWVudCBzZXR1cCBmaWxlIHdhcyBydW46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBtYWtlCisgICAgIGk1ODYtcG9reS1saW51eC1nY2MgIC1tMzIgLW1hcmNoPWk1ODYgLS1zeXNyb290PS9vcHQvcG9reS8yLjUvc3lzcm9vdHMvaTU4Ni1wb2t5LWxpbnV4IC1JIC4gLWMgbWFpbi5jCisgICAgIGk1ODYtcG9reS1saW51eC1nY2MgIC1tMzIgLW1hcmNoPWk1ODYgLS1zeXNyb290PS9vcHQvcG9reS8yLjUvc3lzcm9vdHMvaTU4Ni1wb2t5LWxpbnV4IC1JIC4gLWMgbW9kdWxlLmMKKyAgICAgaTU4Ni1wb2t5LWxpbnV4LWdjYyAgLW0zMiAtbWFyY2g9aTU4NiAtLXN5c3Jvb3Q9L29wdC9wb2t5LzIuNS9zeXNyb290cy9pNTg2LXBva3ktbGludXggbWFpbi5vIG1vZHVsZS5vIC1vIHRhcmdldF9iaW4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBGcm9tIHRoZSByZXN1bHRzIG9mIHRoZSBwcmV2aW91cyBjb21tYW5kLCB5b3UgY2FuIHNlZSB0aGF0CisgICAgICAgICAgICAgICAgICAgIHRoZSBjb21waWxlciB1c2VkIHdhcyB0aGUgY29tcGlsZXIgZXN0YWJsaXNoZWQgdGhyb3VnaAorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPkNDPC9maWxlbmFtZT4gdmFyaWFibGUgZGVmaW5lZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgc2V0dXAgc2NyaXB0LjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5Zb3UgY2FuIG92ZXJyaWRlIHRoZSA8ZmlsZW5hbWU+Q0M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aXRoIHRoZSBzYW1lIHZhcmlhYmxlIGFzIHNldCBmcm9tCisgICAgICAgICAgICAgICAgICAgIHRoZSBNYWtlZmlsZSBieSB1bmNvbW1lbnRpbmcgdGhlIGxpbmUgaW4gdGhlIE1ha2VmaWxlCisgICAgICAgICAgICAgICAgICAgIGFuZCBydW5uaW5nIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gYWdhaW4uCisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBtYWtlIGNsZWFuCisgICAgIHJtIC1yZiAqLm8KKyAgICAgcm0gdGFyZ2V0X2JpbgorICAgICAjCisgICAgICMgRWRpdCB0aGUgTWFrZWZpbGUgYnkgdW5jb21tZW50aW5nIHRoZSBsaW5lIHRoYXQgc2V0cyBDQyB0byAiZ2NjIgorICAgICAjCisgICAgICQgbWFrZQorICAgICBnY2MgLUkgLiAtYyBtYWluLmMKKyAgICAgZ2NjIC1JIC4gLWMgbW9kdWxlLmMKKyAgICAgZ2NjIG1haW4ubyBtb2R1bGUubyAtbyB0YXJnZXRfYmluCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgQXMgc2hvd24gaW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIHRoZSBjcm9zcy10b29sY2hhaW4KKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIgaXMgbm90IHVzZWQuCisgICAgICAgICAgICAgICAgICAgIFJhdGhlciwgdGhlIGRlZmF1bHQgY29tcGlsZXIgaXMgdXNlZC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhpcyBuZXh0IGNhc2Ugc2hvd3MgaG93IHRvIG92ZXJyaWRlIGEgdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgYnkgcHJvdmlkaW5nIHRoZSB2YXJpYWJsZSBhcyBwYXJ0IG9mIHRoZSBjb21tYW5kIGxpbmUuCisgICAgICAgICAgICAgICAgICAgIEdvIGludG8gdGhlIE1ha2VmaWxlIGFuZCByZS1pbnNlcnQgdGhlIGNvbW1lbnQgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAgIHNvIHRoYXQgcnVubmluZyA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IHVzZXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIGVzdGFibGlzaGVkIFNESyBjb21waWxlci4KKyAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgd2hlbiB5b3UgcnVuIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4sIHVzZSBhCisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQtbGluZSBhcmd1bWVudCB0byBzZXQgPGZpbGVuYW1lPkNDPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdG8gImdjYyI6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBtYWtlIGNsZWFuCisgICAgIHJtIC1yZiAqLm8KKyAgICAgcm0gdGFyZ2V0X2JpbgorICAgICAjCisgICAgICMgRWRpdCB0aGUgTWFrZWZpbGUgdG8gY29tbWVudCBvdXQgdGhlIGxpbmUgc2V0dGluZyBDQyB0byAiZ2NjIgorICAgICAjCisgICAgICQgbWFrZQorICAgICBpNTg2LXBva3ktbGludXgtZ2NjICAtbTMyIC1tYXJjaD1pNTg2IC0tc3lzcm9vdD0vb3B0L3Bva3kvMi41L3N5c3Jvb3RzL2k1ODYtcG9reS1saW51eCAtSSAuIC1jIG1haW4uYworICAgICBpNTg2LXBva3ktbGludXgtZ2NjICAtbTMyIC1tYXJjaD1pNTg2IC0tc3lzcm9vdD0vb3B0L3Bva3kvMi41L3N5c3Jvb3RzL2k1ODYtcG9reS1saW51eCAtSSAuIC1jIG1vZHVsZS5jCisgICAgIGk1ODYtcG9reS1saW51eC1nY2MgIC1tMzIgLW1hcmNoPWk1ODYgLS1zeXNyb290PS9vcHQvcG9reS8yLjUvc3lzcm9vdHMvaTU4Ni1wb2t5LWxpbnV4IG1haW4ubyBtb2R1bGUubyAtbyB0YXJnZXRfYmluCisgICAgICQgbWFrZSBjbGVhbgorICAgICBybSAtcmYgKi5vCisgICAgIHJtIHRhcmdldF9iaW4KKyAgICAgJCBtYWtlIENDPSJnY2MiCisgICAgIGdjYyAtSSAuIC1jIG1haW4uYworICAgICBnY2MgLUkgLiAtYyBtb2R1bGUuYworICAgICBnY2MgbWFpbi5vIG1vZHVsZS5vIC1vIHRhcmdldF9iaW4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBJbiB0aGUgcHJldmlvdXMgY2FzZSwgdGhlIGNvbW1hbmQtbGluZSBhcmd1bWVudCBvdmVycmlkZXMKKyAgICAgICAgICAgICAgICAgICAgdGhlIFNESyBlbnZpcm9ubWVudCB2YXJpYWJsZS48L3BhcmE+CisKKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+SW4gdGhpcyBsYXN0IGNhc2UsIGVkaXQgTWFrZWZpbGUgYWdhaW4gdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICAiZ2NjIiBjb21waWxlciBidXQgdGhlbiB1c2UgdGhlICItZSIgb3B0aW9uIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGNvbW1hbmQgbGluZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIG1ha2UgY2xlYW4KKyAgICAgcm0gLXJmICoubworICAgICBybSB0YXJnZXRfYmluCisgICAgICMKKyAgICAgIyBFZGl0IHRoZSBNYWtlZmlsZSB0byB1c2UgImdjYyIKKyAgICAgIworICAgICAkIG1ha2UKKyAgICAgZ2NjIC1JIC4gLWMgbWFpbi5jCisgICAgIGdjYyAtSSAuIC1jIG1vZHVsZS5jCisgICAgIGdjYyBtYWluLm8gbW9kdWxlLm8gLW8gdGFyZ2V0X2JpbgorICAgICAkIG1ha2UgY2xlYW4KKyAgICAgcm0gLXJmICoubworICAgICBybSB0YXJnZXRfYmluCisgICAgICQgbWFrZSAtZQorICAgICBpNTg2LXBva3ktbGludXgtZ2NjICAtbTMyIC1tYXJjaD1pNTg2IC0tc3lzcm9vdD0vb3B0L3Bva3kvMi41L3N5c3Jvb3RzL2k1ODYtcG9reS1saW51eCAtSSAuIC1jIG1haW4uYworICAgICBpNTg2LXBva3ktbGludXgtZ2NjICAtbTMyIC1tYXJjaD1pNTg2IC0tc3lzcm9vdD0vb3B0L3Bva3kvMi41L3N5c3Jvb3RzL2k1ODYtcG9reS1saW51eCAtSSAuIC1jIG1vZHVsZS5jCisgICAgIGk1ODYtcG9reS1saW51eC1nY2MgIC1tMzIgLW1hcmNoPWk1ODYgLS1zeXNyb290PS9vcHQvcG9reS8yLjUvc3lzcm9vdHMvaTU4Ni1wb2t5LWxpbnV4IG1haW4ubyBtb2R1bGUubyAtbyB0YXJnZXRfYmluCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGNhc2UsIHRoZSAiLWUiIG9wdGlvbiBmb3JjZXMKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPiB0byB1c2UgdGhlIFNESyBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWVzIGluIHRoZSBNYWtlZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXhlY3V0ZSBZb3VyIFByb2plY3Q6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVG8gZXhlY3V0ZSB0aGUgcHJvamVjdCAoaS5lLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dGFyZ2V0X2JpbjwvZmlsZW5hbWU+KSwgdXNlIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZDoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIC4vdGFyZ2V0X2JpbgorICAgICBIZWxsbyBXb3JsZCEKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB1c2VkIHRoZSBjcm9zcy10b29sY2hhaW4gY29tcGlsZXIgdG8gYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50YXJnZXRfYmluPC9maWxlbmFtZT4gYW5kIHlvdXIgYnVpbGQgaG9zdAorICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVycyBpbiBhcmNoaXRlY3R1cmUgZnJvbSB0aGF0IG9mIHRoZSB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUsIHlvdSBuZWVkIHRvIHJ1biB5b3VyIHByb2plY3Qgb24gdGhlIHRhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIEFzIGV4cGVjdGVkLCB0aGUgcHJvamVjdCBkaXNwbGF5cyB0aGUgIkhlbGxvIFdvcmxkISIKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogPC9jaGFwdGVyPgogPCEtLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtaW50cm8ueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtaW50cm8ueG1sCmluZGV4IDRlNTllMDAuLmU4NDk2NGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLWludHJvLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1pbnRyby54bWwKQEAgLTM4LDcgKzM4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCcm93c2UgbGF5ZXJzIGxpc3RlZCBpbiB0aGUgdmFyaW91cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2xheWVyLXNvdXJjZSc+bGF5ZXIgc291cmNlczwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGFyZSBhdmFpbGFibGUgaW4geW91ciBwcm9qZWN0IChlLmcuIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBNZXRhZGF0YSBJbmRleCBhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBMYXllciBJbmRleCBhdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9sYXllcnMub3BlbmVtYmVkZGVkLm9yZy9sYXllcmluZGV4Lyc+PC91bGluaz4pLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtcmVmZXJlbmNlLnhtbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLXJlZmVyZW5jZS54bWwKaW5kZXggZTk4NDM5MS4uNzQ0MDU4MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtcmVmZXJlbmNlLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1yZWZlcmVuY2UueG1sCkBAIC0zNCw3ICszNCw3IEBACiAgICAgICAgICAgICBBIGxheWVyIGluZGV4IGlzIGEgd2ViIGFwcGxpY2F0aW9uIHRoYXQgY29udGFpbnMgaW5mb3JtYXRpb24KICAgICAgICAgICAgIGFib3V0IGEgc2V0IG9mIGN1c3RvbSBsYXllcnMuCiAgICAgICAgICAgICBBIGdvb2QgZXhhbXBsZSBvZiBhbiBleGlzdGluZyBsYXllciBpbmRleCBpcyB0aGUKLSAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBNZXRhZGF0YSBJbmRleC4KKyAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBMYXllciBJbmRleC4KICAgICAgICAgICAgIEEgcHVibGljIGluc3RhbmNlIG9mIHRoaXMgbGF5ZXIgaW5kZXggZXhpc3RzIGF0CiAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGF5ZXJzLm9wZW5lbWJlZGRlZC5vcmcnPjwvdWxpbms+LgogICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZSBjb2RlIGZvciB0aGlzIGxheWVyIGluZGV4J3Mgd2ViIGFwcGxpY2F0aW9uIGF0CkBAIC05MiwxMSArOTIsMTEgQEAKIAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBGb3IgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvbiBsYXllcnMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcC1sYXllcnMnPkJTUCBMYXllcnM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CU1BfVVJMOyN1c2luZy10aGUteW9jdG8tcHJvamVjdHMtYnNwLXRvb2xzJz5Vc2luZyB0aGUgWW9jdG8gUHJvamVjdCdzIEJTUCBUb29sczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucyBpbiB0aGUgWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkKLSAgICAgICAgICAgICAgICAgICAgRGV2ZWxvcGVyJ3MgR3VpZGUuCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19PTV9VUkw7I3RoZS15b2N0by1wcm9qZWN0LWxheWVyLW1vZGVsJz5UaGUgWW9jdG8gUHJvamVjdCBMYXllciBNb2RlbDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWwuCisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY3JlYXRlIGxheWVycywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjdW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nIGFuZCBDcmVhdGluZyBMYXllcnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9zZWN0aW9uPgogCkBAIC02ODEsMjYgKzY4MSwyNyBAQAogICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikgYXQKICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlL2xpYi9tYW5hZ2UucHk8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkb2N1bWVudHMgdGhvc2UgY29tbWFuZHMuCi0gICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgV2hlbiB1c2luZyA8ZmlsZW5hbWU+bWFuYWdlLnB5PC9maWxlbmFtZT4gY29tbWFuZHMgZ2l2ZW4KLSAgICAgICAgICAgICAgICAgICAgYSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24sIHlvdSBtdXN0IGJlIHN1cmUgdGhhdCB5b3VyCi0gICAgICAgICAgICAgICAgICAgIHdvcmtpbmcgZGlyZWN0b3J5IGlzIHNldCB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgVXNpbmcgPGZpbGVuYW1lPm1hbmFnZS5weTwvZmlsZW5hbWU+IGNvbW1hbmRzIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgIEJ1aWxkIERpcmVjdG9yeSBhbGxvd3MgVG9hc3RlciB0byBmaW5kIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dG9hc3Rlci5zcWxpdGU8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBpcyBsb2NhdGVkCi0gICAgICAgICAgICAgICAgICAgIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEZvciBub24tZGVmYXVsdCBkYXRhYmFzZSBjb25maWd1cmF0aW9ucywgaXQgaXMgcG9zc2libGUKLSAgICAgICAgICAgICAgICAgICAgdGhhdCB5b3UgY2FuIHVzZSA8ZmlsZW5hbWU+bWFuYWdlLnB5PC9maWxlbmFtZT4gY29tbWFuZHMKLSAgICAgICAgICAgICAgICAgICAgZnJvbSBhIGRpcmVjdG9yeSBvdGhlciB0aGFuIHRoZSBCdWlsZCBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgIFRvIGRvIHNvLCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRvYXN0ZXJtYWluL3NldHRpbmdzLnB5PC9maWxlbmFtZT4gZmlsZSBtdXN0IGJlCi0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZWQgdG8gcG9pbnQgdG8gdGhlIGNvcnJlY3QgZGF0YWJhc2UgYmFja2VuZC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gdXNpbmcgPGZpbGVuYW1lPm1hbmFnZS5weTwvZmlsZW5hbWU+IGNvbW1hbmRzIGdpdmVuCisgICAgICAgICAgICAgICAgICAgICAgICBhIGRlZmF1bHQgY29uZmlndXJhdGlvbiwgeW91IG11c3QgYmUgc3VyZSB0aGF0IHlvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtpbmcgZGlyZWN0b3J5IGlzIHNldCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICBVc2luZyA8ZmlsZW5hbWU+bWFuYWdlLnB5PC9maWxlbmFtZT4gY29tbWFuZHMgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIERpcmVjdG9yeSBhbGxvd3MgVG9hc3RlciB0byBmaW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRvYXN0ZXIuc3FsaXRlPC9maWxlbmFtZT4gZmlsZSwgd2hpY2ggaXMgbG9jYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIEJ1aWxkIERpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBGb3Igbm9uLWRlZmF1bHQgZGF0YWJhc2UgY29uZmlndXJhdGlvbnMsIGl0IGlzIHBvc3NpYmxlCisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHlvdSBjYW4gdXNlIDxmaWxlbmFtZT5tYW5hZ2UucHk8L2ZpbGVuYW1lPiBjb21tYW5kcworICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBhIGRpcmVjdG9yeSBvdGhlciB0aGFuIHRoZSBCdWlsZCBEaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgICAgICBUbyBkbyBzbywgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dG9hc3Rlcm1haW4vc2V0dGluZ3MucHk8L2ZpbGVuYW1lPiBmaWxlIG11c3QgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZWQgdG8gcG9pbnQgdG8gdGhlIGNvcnJlY3QgZGF0YWJhc2UgYmFja2VuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L3BhcmE+CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLXNldHVwLWFuZC11c2UueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtc2V0dXAtYW5kLXVzZS54bWwKaW5kZXggYzI2YTMyYS4uYjRjYWViYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtc2V0dXAtYW5kLXVzZS54bWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtc2V0dXAtYW5kLXVzZS54bWwKQEAgLTExLDkgKzExLDkgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgc2V0IHVwIHRoZSBZb2N0byBQcm9qZWN0IGFuZCBpbnN0YWxsZWQgdGhlCi0gICAgICAgICAgICBUb2FzdGVyIHN5c3RlbSBkZXBlbmRlbmNpZXMgYXMgZGVzY3JpYmVkIGluCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndG9hc3Rlci1tYW51YWwtc3RhcnQnPlByZXBhcmluZyB0byBVc2UgVG9hc3RlcjwvbGluaz4iLAotICAgICAgICAgICAgeW91IGFyZSByZWFkeSB0byBzdGFydCBUb2FzdGVyLgorICAgICAgICAgICAgVG9hc3RlciBzeXN0ZW0gZGVwZW5kZW5jaWVzIGFzIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd0b2FzdGVyLW1hbnVhbC1zdGFydCc+UHJlcGFyaW5nIHRvIFVzZSBUb2FzdGVyPC9saW5rPiIKKyAgICAgICAgICAgIGNoYXB0ZXIsIHlvdSBhcmUgcmVhZHkgdG8gc3RhcnQgVG9hc3Rlci4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgpAQCAtNjEsNiArNjEsNzEgQEAKICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIAorICAgIDxzZWN0aW9uIGlkPSdzZXR0aW5nLXVwLXRvYXN0ZXItd2l0aG91dC1hLXdlYi1zZXJ2ZXInPgorICAgICAgICA8dGl0bGU+U2V0dGluZyBVcCBUb2FzdGVyIFdpdGhvdXQgYSBXZWIgU2VydmVyPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFlvdSBjYW4gc3RhcnQgYSBUb2FzdGVyIGVudmlyb25tZW50IHdpdGhvdXQgc3RhcnRpbmcgaXRzCisgICAgICAgICAgICB3ZWIgc2VydmVyLiBUaGlzIGlzIHVzZWZ1bCBmb3IgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBDYXB0dXJpbmcgYSBjb21tYW5kLWxpbmUgYnVpbGTigJlzIHN0YXRpc3RpY3MgaW50bworICAgICAgICAgICAgICAgICAgICB0aGUgVG9hc3RlciBkYXRhYmFzZSBmb3IgZXhhbWluYXRpb24gbGF0ZXIuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQ2FwdHVyaW5nIGEgY29tbWFuZC1saW5lIGJ1aWxk4oCZcyBzdGF0aXN0aWNzIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgdGhlIFRvYXN0ZXIgc2VydmVyIGlzIGFscmVhZHkgcnVubmluZy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBIYXZpbmcgb25lIGluc3RhbmNlIG9mIHRoZSBUb2FzdGVyIHdlYiBzZXJ2ZXIKKyAgICAgICAgICAgICAgICAgICAgdHJhY2sgYW5kIGNhcHR1cmUgbXVsdGlwbGUgY29tbWFuZC1saW5lIGJ1aWxkcywKKyAgICAgICAgICAgICAgICAgICAgd2hlcmUgZWFjaCBidWlsZCBpcyBzdGFydGVkIGluIGl0cyBvd24g4oCcbm93ZWLigJ0KKyAgICAgICAgICAgICAgICAgICAgVG9hc3RlciBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZHMgc2hvdyBob3cgdG8gc3RhcnQgYSBUb2FzdGVyIGVudmlyb25tZW50CisgICAgICAgICAgICB3aXRob3V0IHN0YXJ0aW5nIGl0cyB3ZWIgc2VydmVyLCBwZXJmb3JtIEJpdEJha2Ugb3BlcmF0aW9ucywKKyAgICAgICAgICAgIGFuZCB0aGVuIHNodXQgZG93biB0aGUgVG9hc3RlciBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIE9uY2UgdGhlIGJ1aWxkIGlzIGNvbXBsZXRlLCB5b3UgY2FuIGNsb3NlIHRoZSBUb2FzdGVyIGVudmlyb25tZW50LgorICAgICAgICAgICAgQmVmb3JlIGNsb3NpbmcgdGhlIGVudmlyb25tZW50LCBob3dldmVyLCB5b3Ugc2hvdWxkIGFsbG93IGEgZmV3CisgICAgICAgICAgICBtaW51dGVzIHRvIGVuc3VyZSB0aGUgY29tcGxldGUgdHJhbnNmZXIgb2YgaXRzIEJpdEJha2UgYnVpbGQKKyAgICAgICAgICAgIHN0YXRpc3RpY3MgdG8gdGhlIFRvYXN0ZXIgZGF0YWJhc2UuCisgICAgICAgICAgICBJZiB5b3UgaGF2ZSBhIHNlcGFyYXRlIFRvYXN0ZXIgd2ViIHNlcnZlciBpbnN0YW5jZSBydW5uaW5nLCB5b3UKKyAgICAgICAgICAgIGNhbiB3YXRjaCB0aGlzIGNvbW1hbmQtbGluZSBidWlsZOKAmXMgcHJvZ3Jlc3MgYW5kIGV4YW1pbmUgdGhlCisgICAgICAgICAgICByZXN1bHRzIGFzIHNvb24gYXMgdGhleSBhcmUgcG9zdGVkOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNvdXJjZSB0b2FzdGVyIHN0YXJ0IG5vd2ViCisgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4KKyAgICAgJCBzb3VyY2UgdG9hc3RlciBzdG9wCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc2V0dGluZy11cC10b2FzdGVyLXdpdGhvdXQtYS1idWlsZC1zZXJ2ZXInPgorICAgICAgICA8dGl0bGU+U2V0dGluZyBVcCBUb2FzdGVyIFdpdGhvdXQgYSBCdWlsZCBTZXJ2ZXI8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgWW91IGNhbiBzdGFydCBhIFRvYXN0ZXIgZW52aXJvbm1lbnQgd2l0aCB0aGUKKyAgICAgICAgICAgIOKAnE5ldyBQcm9qZWN0c+KAnSBmZWF0dXJlIGRpc2FibGVkLgorICAgICAgICAgICAgRG9pbmcgc28gaXMgdXNlZnVsIGZvciB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNoYXJpbmcgeW91ciBidWlsZCByZXN1bHRzIG92ZXIgdGhlIHdlYiBzZXJ2ZXIgd2hpbGUKKyAgICAgICAgICAgICAgICAgICAgYmxvY2tpbmcgb3RoZXJzIGZyb20gc3RhcnRpbmcgYnVpbGRzIG9uIHlvdXIgaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBbGxvd2luZyBvbmx5IGxvY2FsIGNvbW1hbmQtbGluZSBidWlsZHMgdG8gYmUgY2FwdHVyZWQKKyAgICAgICAgICAgICAgICAgICAgaW50byB0aGUgVG9hc3RlciBkYXRhYmFzZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gc2V0IHVwIFRvYXN0ZXIgd2l0aG91dCBhCisgICAgICAgICAgICBidWlsZCBzZXJ2ZXI6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc291cmNlIHRvYXN0ZXIgc3RhcnQgbm9idWlsZCB3ZWJwb3J0PTxyZXBsYWNlYWJsZT5wb3J0PC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKwogICAgIDxzZWN0aW9uIGlkPSdzZXR0aW5nLXVwLWV4dGVybmFsLWFjY2Vzcyc+CiAgICAgICAgIDx0aXRsZT5TZXR0aW5nIHVwIEV4dGVybmFsIEFjY2VzczwvdGl0bGU+CiAKQEAgLTIyNyw4ICsyOTIsOCBAQAogICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgSGF2ZSBhbGwgdGhlIGJ1aWxkIHJlcXVpcmVtZW50cyBhcyBkZXNjcmliZWQgaW4KLSAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndG9hc3Rlci1zZXR0aW5nLXVwLXRoZS1iYXNpYy1zeXN0ZW0tcmVxdWlyZW1lbnRzJz5TZXR0aW5nIFVwIHRoZSBCYXNpYyBTeXN0ZW0gUmVxdWlyZW1lbnRzPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICBIYXZlIGFsbCB0aGUgYnVpbGQgcmVxdWlyZW1lbnRzIGFzIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ndG9hc3Rlci1tYW51YWwtc3RhcnQnPlByZXBhcmluZyB0byBVc2UgVG9hc3RlcjwvbGluaz4iCiAgICAgICAgICAgICAgICAgICAgICAgY2hhcHRlci4KICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KQEAgLTMxMiw3ICszNzcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVkaXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZG9jcy5kamFuZ29wcm9qZWN0LmNvbS9lbi8xLjgvcmVmL3NldHRpbmdzLyNzdGQ6c2V0dGluZy1TRUNSRVRfS0VZJz5EQVRBQkFTRTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2RvY3MuZGphbmdvcHJvamVjdC5jb20vZW4vMS4xMS9yZWYvc2V0dGluZ3MvI2RhdGFiYXNlcyc+REFUQUJBU0VTPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgREFUQUJBU0VTID0gewpAQCAtMzI5LDE0ICszOTQsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGl0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2RvY3MuZGphbmdvcHJvamVjdC5jb20vZW4vMS44L3JlZi9zZXR0aW5ncy8jc3RkOnNldHRpbmctU0VDUkVUX0tFWSc+U0VDUkVUX0tFWTwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLmRqYW5nb3Byb2plY3QuY29tL2VuLzEuMTEvcmVmL3NldHRpbmdzLyNzdGQ6c2V0dGluZy1TRUNSRVRfS0VZJz5TRUNSRVRfS0VZPC91bGluaz46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICBTRUNSRVRfS0VZID0gJzxyZXBsYWNlYWJsZT55b3VyX3NlY3JldF9rZXk8L3JlcGxhY2VhYmxlPicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGl0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2RvY3MuZGphbmdvcHJvamVjdC5jb20vZW4vMS44L3JlZi9zZXR0aW5ncy8jc3RkOnNldHRpbmctU0VDUkVUX0tFWSc+U1RBVElDX1JPT1Q8L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5kamFuZ29wcm9qZWN0LmNvbS9lbi8xLjExL3JlZi9zZXR0aW5ncy8jc3RkOnNldHRpbmctU1RBVElDX1JPT1QnPlNUQVRJQ19ST09UPC91bGluaz46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICBTVEFUSUNfUk9PVCA9ICcvdmFyL3d3dy90b2FzdGVyL3N0YXRpY19maWxlcy8nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CkBAIC0zNjAsNTggKzQyNSw2OCBAQAogICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICQgY2QgIC92YXIvd3d3L3RvYXN0ZXIvcG9reS8KICAgICQgLi9iaXRiYWtlL2xpYi90b2FzdGVyL21hbmFnZS5weSBtaWdyYXRlCi0gICAkIFRPQVNURVJfRElSPWBwd2RgIFRPQVNURVJfQ09ORj0uL21ldGEtcG9reS9jb25mL3RvYXN0ZXJjb25mLmpzb24gXAorICAgJCBUT0FTVEVSX0RJUj1gcHdkYCBURU1QTEFURUNPTkY9J3Bva3knIFwKICAgICAgLi9iaXRiYWtlL2xpYi90b2FzdGVyL21hbmFnZS5weSBjaGVja3NldHRpbmdzCiAgICAkIC4vYml0YmFrZS9saWIvdG9hc3Rlci9tYW5hZ2UucHkgY29sbGVjdHN0YXRpYwogICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIGZyb20gdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnksIHRoZSA8ZmlsZW5hbWU+bWlncmF0ZTwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgICBlbnN1cmVzIHRoZSBkYXRhYmFzZSBzY2hlbWEgY2hhbmdlcyBoYXZlIHByb3BhZ2F0ZWQKKyAgICAgICAgICAgICAgICAgICAgICBjb3JyZWN0bHkgKGkuZS4gbWlncmF0aW9ucykuCisgICAgICAgICAgICAgICAgICAgICAgVGhlIG5leHQgbGluZSBzZXRzIHRoZSBUb2FzdGVyIHJvb3QgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRPQVNURVJfRElSPC9maWxlbmFtZT4gYW5kIHRoZSBsb2NhdGlvbgorICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBUb2FzdGVyIGNvbmZpZ3VyYXRpb24gZmlsZQorICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UT0FTVEVSX0NPTkY8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgcmVsYXRpdmUgdG8KKyAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VE9BU1RFUl9ESVI8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlRFTVBMQVRFQ09ORjwvZmlsZW5hbWU+IHZhbHVlIHJlZmxlY3RzIHRoZQorICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzIG9mIDxmaWxlbmFtZT5wb2t5Ly50ZW1wbGF0ZWNvbmY8L2ZpbGVuYW1lPiwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgYnkgZGVmYXVsdCwgc2hvdWxkIGluY2x1ZGUgdGhlIHN0cmluZyAicG9reSIuCisgICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIFRvYXN0ZXIgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgIGZpbGUsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nY29uZmlndXJpbmctdG9hc3Rlcic+Q29uZmlndXJpbmcgVG9hc3RlcjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi48L3BhcmE+CiAKLSAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBhYm92ZSBzZXQgb2YgY29tbWFuZHMsIGFmdGVyIG1vdmluZyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiBkaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bWlncmF0ZTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgZW5zdXJlcyB0aGUgZGF0YWJhc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1hIGhhcyBoYWQgY2hhbmdlcyBwcm9wYWdhdGVkIGNvcnJlY3RseSAoaS5lLgotICAgICAgICAgICAgICAgICAgICAgICAgICBtaWdyYXRpb25zKS4KLSAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG5leHQgbGluZSBzZXRzIHRoZSBUb2FzdGVyIHJvb3QgZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UT0FTVEVSX0RJUjwvZmlsZW5hbWU+IGFuZCB0aGUgbG9jYXRpb24gb2YKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFRvYXN0ZXIgY29uZmlndXJhdGlvbiBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5UT0FTVEVSX0NPTkY8L2ZpbGVuYW1lPiwgd2hpY2ggaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmUgdG8gdGhlIFRvYXN0ZXIgcm9vdCBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRPQVNURVJfRElSPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBUb2FzdGVyIGNvbmZpZ3VyYXRpb24gZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdjb25maWd1cmluZy10b2FzdGVyJz5Db25maWd1cmluZyBUb2FzdGVyPC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFwdGVyLgotICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGxpbmUgYWxzbyBydW5zIHRoZSA8ZmlsZW5hbWU+Y2hlY2tzZXR0aW5nczwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQsIHdoaWNoIGNvbmZpZ3VyZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBUb2FzdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgZGlyZWN0b3J5PC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBUb2FzdGVyIHJvb3QgZGlyZWN0b3J5IDxmaWxlbmFtZT5UT0FTVEVSX0RJUjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGRldGVybWluZXMgd2hlcmUgdGhlIFRvYXN0ZXIgYnVpbGQgZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGNyZWF0ZWQgb24gdGhlIGZpbGUgc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGUgZXhhbXBsZSBhYm92ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRPQVNURVJfRElSPC9maWxlbmFtZT4gaXMgc2V0IGFzIGZvbGxvd3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSJtb25vc3BhY2VkIj4KKyAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGlzIGxpbmUgYWxzbyBydW5zIHRoZSA8ZmlsZW5hbWU+Y2hlY2tzZXR0aW5nczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCwgd2hpY2ggY29uZmlndXJlcyB0aGUgbG9jYXRpb24gb2YgdGhlIFRvYXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgIFRoZSBUb2FzdGVyIHJvb3QgZGlyZWN0b3J5IDxmaWxlbmFtZT5UT0FTVEVSX0RJUjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lcyB3aGVyZSB0aGUgVG9hc3RlciBidWlsZCBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICBpcyBjcmVhdGVkIG9uIHRoZSBmaWxlIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICBJbiB0aGUgZXhhbXBsZSBhYm92ZSwKKyAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VE9BU1RFUl9ESVI8L2ZpbGVuYW1lPiBpcyBzZXQgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0ibW9ub3NwYWNlZCI+CiAgICAvdmFyL3d3dy90b2FzdGVyL3Bva3kKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHNldHRpbmcgY2F1c2VzIHRoZSBUb2FzdGVyIGJ1aWxkIGRpcmVjdG9yeSB0byBiZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9Im1vbm9zcGFjZWQiPgorICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICBUaGlzIHNldHRpbmcgY2F1c2VzIHRoZSBUb2FzdGVyIGJ1aWxkIGRpcmVjdG9yeSB0byBiZToKKyAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0ibW9ub3NwYWNlZCI+CiAgICAvdmFyL3d3dy90b2FzdGVyL3Bva3kvYnVpbGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgogCi0gICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIEZpbmFsbHksIHRoZSA8ZmlsZW5hbWU+Y29sbGVjdHN0YXRpYzwvZmlsZW5hbWU+IGNvbW1hbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgYSBEamFuZ28gZnJhbWV3b3JrIGNvbW1hbmQgdGhhdCBjb2xsZWN0cyBhbGwgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY2FsbHkgc2VydmVkIGZpbGVzIGludG8gYSBkZXNpZ25hdGVkIGRpcmVjdG9yeSB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBzZXJ2ZWQgdXAgYnkgdGhlIEFwYWNoZSB3ZWIgc2VydmVyIGFzIGRlZmluZWQgYnkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNUQVRJQ19ST09UPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+RmluYWxseSwgdGhlIDxmaWxlbmFtZT5jb2xsZWN0c3RhdGljPC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgIGlzIGEgRGphbmdvIGZyYW1ld29yayBjb21tYW5kIHRoYXQgY29sbGVjdHMgYWxsIHRoZQorICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY2FsbHkgc2VydmVkIGZpbGVzIGludG8gYSBkZXNpZ25hdGVkIGRpcmVjdG9yeSB0bworICAgICAgICAgICAgICAgICAgICAgIGJlIHNlcnZlZCB1cCBieSB0aGUgQXBhY2hlIHdlYiBzZXJ2ZXIgYXMgZGVmaW5lZCBieQorICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5TVEFUSUNfUk9PVDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgIFRlc3QgYW5kL29yIHVzZSB0aGUgTXlzcWwgaW50ZWdyYXRpb24gd2l0aCBUb2FzdGVy4oCZcworICAgICAgICAgICAgICAgICAgICAgIERqYW5nbyB3ZWIgc2VydmVyLgorICAgICAgICAgICAgICAgICAgICAgIEF0IHRoaXMgcG9pbnQsIHlvdSBjYW4gc3RhcnQgdXAgdGhlIG5vcm1hbCBUb2FzdGVyCisgICAgICAgICAgICAgICAgICAgICAgRGphbmdvIHdlYiBzZXJ2ZXIgd2l0aCB0aGUgVG9hc3RlciBkYXRhYmFzZSBpbiBNeXNxbC4KKyAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGlzIHdlYiBzZXJ2ZXIgdG8gY29uZmlybSB0aGF0IHRoZSBkYXRhYmFzZQorICAgICAgICAgICAgICAgICAgICAgIG1pZ3JhdGlvbiBhbmQgZGF0YSBwb3B1bGF0aW9uIGZyb20gdGhlIExheWVyIEluZGV4IGlzCisgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VG8gc3RhcnQgdGhlIGRlZmF1bHQgVG9hc3RlciBEamFuZ28gd2ViIHNlcnZlciB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgdGhlIFRvYXN0ZXIgZGF0YWJhc2Ugbm93IGluIE15c3FsLCB1c2UgdGhlIHN0YW5kYXJkCisgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgY29tbWFuZHM6CisgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgJCBzb3VyY2Ugb2UtaW5pdC1idWlsZC1lbnYKKyAgICQgc291cmNlIHRvYXN0ZXIgc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCBpZiBEamFuZ28gaXMgc3VmZmljaWVudCBmb3IgeW91ciByZXF1aXJlbWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiB1c2UgaXQgZm9yIHlvdXIgcmVsZWFzZSBzeXN0ZW0gYW5kIG1pZ3JhdGUgbGF0ZXIKKyAgICAgICAgICAgICAgICAgICAgICB0byBBcGFjaGUgYXMgeW91ciByZXF1aXJlbWVudHMgY2hhbmdlLgogICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgIEFkZCBhbiBBcGFjaGUgY29uZmlndXJhdGlvbiBmaWxlIGZvciBUb2FzdGVyIHRvIHlvdXIgQXBhY2hlIHdlYgpAQCAtNTM1LDcgKzYxMCw3IEBACiAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgQnJvd3NlIHB1Ymxpc2hlZCBsYXllcnMgaW4gdGhlCi0gICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGF5ZXJzLm9wZW5lbWJlZGRlZC5vcmcnPk9wZW5FbWJlZGRlZCBNZXRhZGF0YSBJbmRleDwvdWxpbms+CisgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vbGF5ZXJzLm9wZW5lbWJlZGRlZC5vcmcnPk9wZW5FbWJlZGRlZCBMYXllciBJbmRleDwvdWxpbms+CiAgICAgICAgICAgICAgICAgICB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIHlvdXIgc2VsZWN0ZWQgdmVyc2lvbiBvZiB0aGUgYnVpbGQKICAgICAgICAgICAgICAgICAgIHN5c3RlbS4KICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtc3RhcnQueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtc3RhcnQueG1sCmluZGV4IDY1ZTA1N2EuLjQ1ZjYwNDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLXN0YXJ0LnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1zdGFydC54bWwKQEAgLTE4LDEwICsxOCw5IEBACiAgICAgICAgICAgICBCZWZvcmUgeW91IGNhbiB1c2UgVG9hc3RlciwgeW91IG5lZWQgdG8gZmlyc3Qgc2V0IHVwIHlvdXIKICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSB0byBydW4gdGhlIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICBUbyBkbyB0aGlzLCBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBpbiB0aGUKLSAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19RU19VUkw7I3BhY2thZ2VzJz5UaGUgQnVpbGQgSG9zdCBQYWNrYWdlczwvdWxpbms+IgotICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUVNfVVJMOyNyZWxlYXNlcyc+WW9jdG8gUHJvamVjdCBSZWxlYXNlPC91bGluaz4iCi0gICAgICAgICAgICBzZWN0aW9ucyBpbiB0aGUgWW9jdG8gUHJvamVjdCBRdWljayBTdGFydC4KKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzZXR0aW5nLXVwLXRoZS1kZXZlbG9wbWVudC1ob3N0LXRvLXVzZS10aGUteW9jdG8tcHJvamVjdCc+UHJlcGFyaW5nIHRoZSBCdWlsZCBIb3N0PC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCisgICAgICAgICAgICBNYW51YWwuCiAgCSAgICBGb3IgVWJ1bnR1L0RlYmlhbiwgeW91IG1pZ2h0IGFsc28gbmVlZCB0byBkbyBhbiBhZGRpdGlvbmFsIGluc3RhbGwKICAgICAgICAgICAgIG9mIHBpcDMuCiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwueG1sCmluZGV4IDVhMWI2MGUuLjE4ODg3NDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLnhtbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC54bWwKQEAgLTYyLDE0ICs2Miw5IEBACiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+SmFudWFyeSAyMDE4PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjQuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgotICAgICAgICAgICAgPC9yZXZpc2lvbj4KLSAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNC4yPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+TWFyY2ggMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi40LjIgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNTwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk1heSAyMDE4PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjUgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgPC9yZXZoaXN0b3J5PgogCkBAIC05MSwyNCArODYsMzYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgaXMgZm9yIHRoZSAmWU9DVE9fRE9DX1ZFUlNJT047IHJlbGVhc2Ugb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKLSAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgdXNlIHRoZSBtYW51YWwgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgIEZvciBtYW51YWxzIGFzc29jaWF0ZWQgd2l0aCBvdGhlciByZWxlYXNlcyBvZiB0aGUgWW9jdG8KLSAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCwgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIGdvIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgYW5kIHVzZSB0aGUgZHJvcC1kb3duICJBY3RpdmUgUmVsZWFzZXMiIGJ1dHRvbgotICAgICAgICAgICAgICAgICAgICAgICBhbmQgY2hvb3NlIHRoZSBtYW51YWwgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXNpcmVkCi0gICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCisgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBmcm9tIHRoYXQgc2l0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgTWFudWFscyBmcm9tIHRoZSBzaXRlIGFyZSBtb3JlIHVwLXRvLWRhdGUgdGhhbiBtYW51YWxzCisgICAgICAgICAgICAgICAgICAgICAgIGRlcml2ZWQgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlZCBUQVIgZmlsZXMuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcwotICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGxvY2F0ZWQgdGhpcyBtYW51YWwgdGhyb3VnaCBhIHdlYiBzZWFyY2gsIHRoZQorICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIG9mIHRoZSBtYW51YWwgbWlnaHQgbm90IGJlIHRoZSBvbmUgeW91IHdhbnQKKyAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gdGhlIHNlYXJjaCBtaWdodCBoYXZlIHJldHVybmVkIGEgbWFudWFsIG11Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgb2xkZXIgdGhhbiB0aGUgWW9jdG8gUHJvamVjdCB2ZXJzaW9uIHdpdGggd2hpY2ggeW91CisgICAgICAgICAgICAgICAgICAgICAgIGFyZSB3b3JraW5nKS4KKyAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzZWUgYWxsIFlvY3RvIFByb2plY3QgbWFqb3IgcmVsZWFzZXMgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9SZWxlYXNlcyc+UmVsZWFzZXM8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICBwYWdlLgorICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCBhIHZlcnNpb24gb2YgdGhpcyBtYW51YWwgZm9yIGEgZGlmZmVyZW50CisgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSwgdmlzaXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgc2V0IGJ5IHVzaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAiQUNUSVZFIFJFTEVBU0VTIERPQ1VNRU5UQVRJT04iIG9yICJET0NVTUVOVFMgQVJDSElWRSIKKyAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnVzLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcworICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKKyAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAorICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgPC9ub3RlPgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b29scy9lY2xpcHNlLWhlbHAuc2VkIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9vbHMvZWNsaXBzZS1oZWxwLnNlZAppbmRleCAzODY5MGJjLi5hYjVjOWFmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b29scy9lY2xpcHNlLWhlbHAuc2VkCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Rvb2xzL2VjbGlwc2UtaGVscC5zZWQKQEAgLTEsMTggKzEsMTggQEAKLSMgUHJvY2Vzc2VzIHBva3ktcmVmLW1hbnVhbCBhbmQgeW9jdG8tcHJvamVjdC1xcyBtYW51YWwgKDx3b3JkPi08d29yZD4tPHdvcmQ+IHN0eWxlKQorIyBQcm9jZXNzIHBva3ktcmVmLW1hbnVhbCBhbmQgeW9jdG8tcHJvamVjdC1xcyBtYW51YWwgKDx3b3JkPi08d29yZD4tPHdvcmQ+IHN0eWxlKQogIyBGb3IgZXhhbXBsZToKICMgICAidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzEuMy9wb2t5LXJlZi1tYW51YWwvcG9reS1yZWYtbWFudWFsLmh0bWwjZmFxIgogIyAgIC0+ICJsaW5rIiBocmVmPSIuLi9wb2t5LXJlZi1tYW51YWwvZmFxLmh0bWwiCi1zL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcL1teXC9dKlwvXChbYS16XSotW2Etel0qLVthLXpdKlwpXC9bYS16XSotW2Etel0qLVthLXpdKi5odG1sI1woW15cIl0qXClcIi9cImxpbmtcIiBocmVmPVwiXC5cLlwvXDFcL1wyLmh0bWxcIi9nCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvW14vXSovKFthLXpdKi1bYS16XSotW2Etel0qKS9bYS16XSotW2Etel0qLVthLXpdKi5odG1sIyhbXiJdKikiL0AibGluayIgaHJlZj0iLi4vMS8yLmh0bWwiQGcKIAogIyBQcm9jZXNzZXMgYWxsIG90aGVyIG1hbnVhbHMgKDx3b3JkPi08d29yZD4gc3R5bGUpCiAjIEZvciBleGFtcGxlOgogIyAgICJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMS4zL2tlcm5lbC1tYW51YWwva2VybmVsLW1hbnVhbC5odG1sI2ZhcSIKICMgICAtPiAibGluayIgaHJlZj0iLi4va2VybmVsLW1hbnVhbC9mYXEuaHRtbCIKLXMvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvW15cL10qXC9cKFthLXpdKi1bYS16XSpcKVwvW2Etel0qLVthLXpdKi5odG1sI1woW15cIl0qXClcIi9cImxpbmtcIiBocmVmPVwiXC5cLlwvXDFcL1wyLmh0bWxcIi9nCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvW14vXSovKFthLXpdKi1bYS16XSopL1thLXpdKi1bYS16XSouaHRtbCMoW14iXSopIkAibGluayIgaHJlZj0iLi4vMS8yLmh0bWwiQGcKIAogIyBQcm9jZXNzIGNhc2VzIHdoZXJlIGp1c3QgYW4gZXh0ZXJuYWwgbWFudWFsIGlzIHJlZmVyZW5jZWQgd2l0aG91dCBhbiBpZCBhbmNob3IKICMgRm9yIGV4YW1wbGU6CiAjICAgInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8xLjMva2VybmVsLW1hbnVhbC9rZXJuZWwtbWFudWFsLmh0bWwKICMgICAtPiAibGluayIgaHJlZj0iLi4va2VybmVsLW1hbnVhbC9pbmRleC5odG1sIgotcy9cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC9bXlwvXSpcL1woW2Etel0qLVthLXpdKi1bYS16XSpcKVwvW2Etel0qLVthLXpdKi1bYS16XSouaHRtbFwiL1wibGlua1wiIGhyZWY9XCJcLlwuXC9cMVwvaW5kZXguaHRtbFwiL2cKLXMvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvW15cL10qXC9cKFthLXpdKi1bYS16XSpcKVwvW2Etel0qLVthLXpdKi5odG1sXCIvXCJsaW5rXCIgaHJlZj1cIlwuXC5cL1wxXC9pbmRleC5odG1sXCIvZworc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzL1teL10qLyhbYS16XSotW2Etel0qLVthLXpdKikvW2Etel0qLVthLXpdKi1bYS16XSouaHRtbCJAImxpbmsiIGhyZWY9Ii4uLzEvaW5kZXguaHRtbCJAZworc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzL1teL10qLyhbYS16XSotW2Etel0qKS9bYS16XSotW2Etel0qLmh0bWwiQCJsaW5rIiBocmVmPSIuLi8xL2luZGV4Lmh0bWwiQGcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Rvb2xzL21lZ2EtbWFudWFsLnNlZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3Rvb2xzL21lZ2EtbWFudWFsLnNlZAppbmRleCBhZTI4MDBjLi42NGZhNGQyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi90b29scy9tZWdhLW1hbnVhbC5zZWQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24vdG9vbHMvbWVnYS1tYW51YWwuc2VkCkBAIC0yLDMyICsyLDM5IEBACiAjIFRoaXMgc3R5bGUgaXMgZm9yIG1hbnVhbCBmb2xkZXJzIGxpa2UgInlvY3RvLXByb2plY3QtcXMiIGFuZCAicG9reS1yZWYtbWFudWFsIi4KICMgVGhpcyBpcyB0aGUgb2xkIHdheSB0aGF0IGRpZCBpdC4gIENhbid0IGRvIHRoYXQgbm93IHRoYXQgd2UgaGF2ZSAiYml0YmFrZS11c2VyLW1hbnVhbCIgc3RyaW5ncwogIyBpbiB0aGUgbWVnYS1tYW51YWwuCi0jIHMvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL1thLXpdKi1bYS16XSotW2Etel0qXC9bYS16XSotW2Etel0qLVthLXpdKi5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCi1zL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC95b2N0by1wcm9qZWN0LXFzXC95b2N0by1wcm9qZWN0LXFzLmh0bWwjL1wibGlua1wiIGhyZWY9XCIjL2cKLXMvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL3Bva3ktcmVmLW1hbnVhbFwvcG9reS1yZWYtbWFudWFsLmh0bWwjL1wibGlua1wiIGhyZWY9XCIjL2cKKyMgc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNS9bYS16XSotW2Etel0qLVthLXpdKi9bYS16XSotW2Etel0qLVthLXpdKi5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41L3lvY3RvLXByb2plY3QtcXMveW9jdG8tcHJvamVjdC1xcy5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41L3Bva3ktcmVmLW1hbnVhbC9wb2t5LXJlZi1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZwogCiAjIFByb2Nlc3NlcyBhbGwgb3RoZXIgbWFudWFscyAoPHdvcmQ+LTx3b3JkPiBzdHlsZSkgZXhjZXB0IGZvciB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbCBiZWNhdXNlCiAjIGl0IGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgbWVnYS1tYW51YWwuCiAjIFRoaXMgc3R5bGUgaXMgZm9yIG1hbnVhbCBmb2xkZXJzIHRoYXQgdXNlIHR3byB3b3JkLCB3aGljaCBpcyB0aGUgc3RhbmRhcmQgbm93IChlLmcuICJyZWYtbWFudWFsIikuCiAjIFRoaXMgd2FzIHRoZSBvbmUtbGluZXIgdGhhdCB3b3JrZWQgYmVmb3JlIHdlIGludHJvZHVjZWQgdGhlIEJpdEJha2UgVXNlciBNYW51YWwsIHdoaWNoIGlzCiAjIG5vdCBpbiB0aGUgbWVnYS1tYW51YWwuCi0jIHMvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL1thLXpdKi1bYS16XSpcL1thLXpdKi1bYS16XSouaHRtbCMvXCJsaW5rXCIgaHJlZj1cIiMvZworIyBzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41L1thLXpdKi1bYS16XSovW2Etel0qLVthLXpdKi5odG1sI0AibGluayIgaHJlZj0iI0BnCiAKLXMvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL3Nkay1tYW51YWxcL3Nkay1tYW51YWwuaHRtbCMvXCJsaW5rXCIgaHJlZj1cIiMvZwotcy9cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjQuMlwvYnNwLWd1aWRlXC9ic3AtZ3VpZGUuaHRtbCMvXCJsaW5rXCIgaHJlZj1cIiMvZwotcy9cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjQuMlwvZGV2LW1hbnVhbFwvZGV2LW1hbnVhbC5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCi1zL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC9rZXJuZWwtZGV2XC9rZXJuZWwtZGV2Lmh0bWwjL1wibGlua1wiIGhyZWY9XCIjL2cKLXMvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL3Byb2ZpbGUtbWFudWFsXC9wcm9maWxlLW1hbnVhbC5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCi1zL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC9yZWYtbWFudWFsXC9yZWYtbWFudWFsLmh0bWwjL1wibGlua1wiIGhyZWY9XCIjL2cKLXMvXCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL3RvYXN0ZXItbWFudWFsXC90b2FzdGVyLW1hbnVhbC5odG1sIy9cImxpbmtcIiBocmVmPVwiIy9nCi1zL1widWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC95b2N0by1wcm9qZWN0LXFzXC95b2N0by1wcm9qZWN0LXFzLmh0bWwjL1wibGlua1wiIGhyZWY9XCIjL2cKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjUvc2RrLW1hbnVhbC9zZGstbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjUvYnNwLWd1aWRlL2JzcC1ndWlkZS5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41L2Rldi1tYW51YWwvZGV2LW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41L292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZworc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNS9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41L2tlcm5lbC1kZXYva2VybmVsLWRldi5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41L3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjUvcmVmLW1hbnVhbC9yZWYtbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjUvdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZwogCiAjIFByb2Nlc3MgY2FzZXMgd2hlcmUganVzdCBhbiBleHRlcm5hbCBtYW51YWwgaXMgcmVmZXJlbmNlZCB3aXRob3V0IGFuIGlkIGFuY2hvcgotcy88YSBjbGFzcz1cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjQuMlwveW9jdG8tcHJvamVjdC1xc1wveW9jdG8tcHJvamVjdC1xcy5odG1sXCIgdGFyZ2V0PVwiX3RvcFwiPllvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQ8XC9hPi9Zb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0L2cKLXMvPGEgY2xhc3M9XCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL2Rldi1tYW51YWxcL2Rldi1tYW51YWwuaHRtbFwiIHRhcmdldD1cIl90b3BcIj5Zb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbDxcL2E+L1lvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsL2cKLXMvPGEgY2xhc3M9XCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL3Nkay1tYW51YWxcL3Nkay1tYW51YWwuaHRtbFwiIHRhcmdldD1cIl90b3BcIj5Zb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspPFwvYT4vWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKS9nCi1zLzxhIGNsYXNzPVwidWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC9ic3AtZ3VpZGVcL2JzcC1ndWlkZS5odG1sXCIgdGFyZ2V0PVwiX3RvcFwiPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPFwvYT4vWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGUvZwotcy88YSBjbGFzcz1cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjQuMlwvcHJvZmlsZS1tYW51YWxcL3Byb2ZpbGUtbWFudWFsLmh0bWxcIiB0YXJnZXQ9XCJfdG9wXCI+WW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsPFwvYT4vWW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsL2cKLXMvPGEgY2xhc3M9XCJ1bGlua1wiIGhyZWY9XCJodHRwOlwvXC93d3cueW9jdG9wcm9qZWN0Lm9yZ1wvZG9jc1wvMi40LjJcL2tlcm5lbC1kZXZcL2tlcm5lbC1kZXYuaHRtbFwiIHRhcmdldD1cIl90b3BcIj5Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWw8XC9hPi9Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWwvZwotcy88YSBjbGFzcz1cInVsaW5rXCIgaHJlZj1cImh0dHA6XC9cL3d3dy55b2N0b3Byb2plY3Qub3JnXC9kb2NzXC8yLjQuMlwvcmVmLW1hbnVhbFwvcmVmLW1hbnVhbC5odG1sXCIgdGFyZ2V0PVwiX3RvcFwiPllvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbDxcL2E+L1lvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC9nCi1zLzxhIGNsYXNzPVwidWxpbmtcIiBocmVmPVwiaHR0cDpcL1wvd3d3LnlvY3RvcHJvamVjdC5vcmdcL2RvY3NcLzIuNC4yXC90b2FzdGVyLW1hbnVhbFwvdG9hc3Rlci1tYW51YWwuaHRtbFwiIHRhcmdldD1cIl90b3BcIj5Ub2FzdGVyIFVzZXIgTWFudWFsPFwvYT4vVG9hc3RlciBVc2VyIE1hbnVhbC9nCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41L2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBRdWljayBCdWlsZDwvYT5AWW9jdG8gUHJvamVjdCBRdWljayBCdWlsZEBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41L3lvY3RvLXByb2plY3QtcXMveW9jdG8tcHJvamVjdC1xcy5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgUXVpY2sgU3RhcnQ8L2E+QFlvY3RvIFByb2plY3QgUXVpY2sgU3RhcnRAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNS9kZXYtbWFudWFsL2Rldi1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbDwvYT5AWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWxAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNS9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsPC9hPkBZb2N0byBwcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWxAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNS9zZGstbWFudWFsL3Nkay1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspPC9hPkBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspQGcKK3NAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjUvYnNwLWd1aWRlL2JzcC1ndWlkZS5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC9hPkBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZUBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41L3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsPC9hPkBZb2N0byBQcm9qZWN0IFByb2ZpbGluZyBhbmQgVHJhY2luZyBNYW51YWxAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNS9rZXJuZWwtZGV2L2tlcm5lbC1kZXYuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWw8L2E+QFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbEBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41L3JlZi1tYW51YWwvcmVmLW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbDwvYT5AWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsQGcKK3NAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjUvdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Ub2FzdGVyIFVzZXIgTWFudWFsPC9hPkBUb2FzdGVyIFVzZXIgTWFudWFsQGcKKworIyBQcm9jZXNzIGEgc2luZ2xlLCByb3VnZSBvY2N1cnJlbmNlIG9mIGEgbGlua2VkIHJlZmVyZW5jZSB0byB0aGUgTWVnYS1NYW51YWwuCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41L21lZ2EtbWFudWFsL21lZ2EtbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBNZWdhLU1hbnVhbDwvYT5AWW9jdG8gUHJvamVjdCBNZWdhLU1hbnVhbEBnCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3lvY3RvLXByb2plY3QtcXMvcXMtc3R5bGUuY3NzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24veW9jdG8tcHJvamVjdC1xcy9xcy1zdHlsZS5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0OGYxYmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24veW9jdG8tcHJvamVjdC1xcy9xcy1zdHlsZS5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSw5ODggKzAsMCBAQAotLyoKLSAgIEdlbmVyaWMgWEhUTUwgLyBEb2NCb29rIFhIVE1MIENTUyBTdHlsZXNoZWV0LgotCi0gICBCcm93c2VyIHdyYW5nbGluZyBhbmQgdHlwb2dyYXBoaWMgZGVzaWduIGJ5Ci0gICAgICBPeXZpbmQgS29sYXMgLyBwaXBwaW5AZ2ltcC5vcmcKLQotICAgQ3VzdG9taXNlZCBmb3IgUG9reSBieQotICAgICAgTWF0dGhldyBBbGx1bSAvIG1hbGx1bUBvLWhhbmQuY29tCi0KLSAgIFRoYW5rcyB0bzoKLSAgICAgTGlhbSBSLiBFLiBRdWluCi0gICAgIFdpbGxpYW0gU2thZ2dzCi0gICAgIEpha3ViIFN0ZWluZXIKLQotICAgU3RydWN0dXJlCi0gICAtLS0tLS0tLS0KLQotICAgVGhlIHN0eWxlc2hlZXQgaXMgZGl2aWRlZCBpbnRvIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnM6Ci0KLSAgICAgICBQb3NpdGlvbmluZwotICAgICAgICAgIE1hcmdpbnMsIHBhZGRpbmdzLCB3aWR0aCwgZm9udC1zaXplLCBjbGVhcmluZy4KLSAgICAgICBEZWNvcmF0aW9ucwotICAgICAgICAgIEJvcmRlcnMsIHN0eWxlCi0gICAgICAgQ29sb3JzCi0gICAgICAgICAgQ29sb3JzCi0gICAgICAgR3JhcGhpY3MKLSAgICAgICAgICBHcmFwaGljYWwgYmFja2dyb3VuZHMKLSAgICAgICBOYXN0eSBJRSB0d2Vha3MKLSAgICAgICAgICBXb3JrYXJvdW5kcyBuZWVkZWQgdG8gbWFrZSBpdCB3b3JrIGluIGludGVybmV0IGV4cGxvcmVyLAotICAgICAgICAgIGN1cnJlbnRseSBtYWtlcyB0aGUgc3R5bGVzaGVldCBub24gdmFsaWRhdGluZywgYnV0IHVwIHVudGlsCi0gICAgICAgICAgdGhpcyBwb2ludCBpdCBpcyB2YWxpZGF0aW5nLgotICAgICAgIE1vemlsbGEgZXh0ZW5zaW9ucwotICAgICAgICAgIFRyYW5zcGFyZW5jeSBmb3IgZm9vdGVyCi0JICBSb3VuZGVkIGNvcm5lcnMgb24gYm94ZXMKLQotKi8KLQotCi0gIC8qKioqKioqKioqKioqKiogLwotIC8gIFBvc2l0aW9uaW5nICAgLwotLyAqKioqKioqKioqKioqKiovCi0KLWJvZHkgewotICBmb250LWZhbWlseTogVmVyZGFuYSwgU2Fucywgc2Fucy1zZXJpZjsKLQotICBtaW4td2lkdGg6IDY0MHB4OwotICB3aWR0aDogODAlOwotICBtYXJnaW46ICAwZW0gYXV0bzsKLSAgcGFkZGluZzogMmVtIDVlbSA1ZW0gNWVtOwotICBjb2xvcjogIzMzMzsKLX0KLQotaDEsaDIsaDMsaDQsaDUsaDYsaDcgewotICBmb250LWZhbWlseTogQXJpYWwsIFNhbnM7Ci0gIGNvbG9yOiAjMDA1NTdEOwotICBjbGVhcjogYm90aDsKLX0KLQotaDEgewotICBmb250LXNpemU6IDJlbTsKLSAgdGV4dC1hbGlnbjogbGVmdDsKLSAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOwotICBtYXJnaW46IDJlbSAwZW0gMGVtIDBlbTsKLX0KLQotaDIuc3VidGl0bGUgewotICBtYXJnaW46IDAuMTBlbSAwZW0gMy4wZW0gMGVtOwotICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Ci0gIGZvbnQtc2l6ZTogMS44ZW07Ci0gIHBhZGRpbmctbGVmdDogMjAlOwotICBmb250LXdlaWdodDogbm9ybWFsOwotICBmb250LXN0eWxlOiBpdGFsaWM7Ci19Ci0KLWgyIHsKLSAgbWFyZ2luOiAyZW0gMGVtIDAuNjZlbSAwZW07Ci0gIHBhZGRpbmc6IDAuNWVtIDBlbSAwZW0gMGVtOwotICBmb250LXNpemU6IDEuNWVtOwotICBmb250LXdlaWdodDogYm9sZDsKLX0KLQotaDMuc3VidGl0bGUgewotICBtYXJnaW46IDBlbSAwZW0gMWVtIDBlbTsKLSAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOwotICBmb250LXNpemU6IDE0Mi4xNCU7Ci0gIHRleHQtYWxpZ246IHJpZ2h0OwotfQotCi1oMyB7Ci0gIG1hcmdpbjogMWVtIDBlbSAwLjVlbSAwZW07Ci0gIHBhZGRpbmc6IDFlbSAwZW0gMGVtIDBlbTsKLSAgZm9udC1zaXplOiAxNDAlOwotICBmb250LXdlaWdodDogYm9sZDsKLX0KLQotaDQgewotICBtYXJnaW46IDFlbSAwZW0gMC41ZW0gMGVtOwotICBwYWRkaW5nOiAxZW0gMGVtIDBlbSAwZW07Ci0gIGZvbnQtc2l6ZTogMTIwJTsKLSAgZm9udC13ZWlnaHQ6IGJvbGQ7Ci19Ci0KLWg1IHsKLSAgbWFyZ2luOiAxZW0gMGVtIDAuNWVtIDBlbTsKLSAgcGFkZGluZzogMWVtIDBlbSAwZW0gMGVtOwotICBmb250LXNpemU6IDExMCU7Ci0gIGZvbnQtd2VpZ2h0OiBib2xkOwotfQotCi1oNiB7Ci0gIG1hcmdpbjogMWVtIDBlbSAwZW0gMGVtOwotICBwYWRkaW5nOiAxZW0gMGVtIDBlbSAwZW07Ci0gIGZvbnQtc2l6ZTogMTEwJTsKLSAgZm9udC13ZWlnaHQ6IGJvbGQ7Ci19Ci0KLS5hdXRob3Jncm91cCB7Ci0gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwotICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwotICBwYWRkaW5nLXRvcDogMjU2cHg7Ci0gIGJhY2tncm91bmQtcG9zaXRpb246IHRvcDsKLSAgbWFyZ2luLXRvcDogLTI1NnB4OwotICBwYWRkaW5nLXJpZ2h0OiA1MHB4OwotICBtYXJnaW4tbGVmdDogNTBweDsKLSAgdGV4dC1hbGlnbjogY2VudGVyOwotICB3aWR0aDogNjAwcHg7Ci19Ci0KLWgzLmF1dGhvciB7Ci0gIG1hcmdpbjogMGVtIDBtZSAwZW0gMGVtOwotICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Ci0gIGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci0gIGZvbnQtc2l6ZTogMTAwJTsKLSAgY29sb3I6ICMzMzM7Ci0gIGNsZWFyOiBib3RoOwotfQotCi0uYXV0aG9yIHR0LmVtYWlsIHsKLSAgZm9udC1zaXplOiA2NiU7Ci19Ci0KLS50aXRsZXBhZ2UgaHIgewotICB3aWR0aDogMGVtOwotICBjbGVhcjogYm90aDsKLX0KLQotLnJldmhpc3RvcnkgewotICBwYWRkaW5nLXRvcDogMmVtOwotICBjbGVhcjogYm90aDsKLX0KLQotLnRvYywKLS5saXN0LW9mLXRhYmxlcywKLS5saXN0LW9mLWV4YW1wbGVzLAotLmxpc3Qtb2YtZmlndXJlcyB7Ci0gIHBhZGRpbmc6IDEuMzNlbSAwZW0gMi41ZW0gMGVtOwotICBjb2xvcjogIzAwNTU3RDsKLX0KLQotLnRvYyBwLAotLmxpc3Qtb2YtdGFibGVzIHAsCi0ubGlzdC1vZi1maWd1cmVzIHAsCi0ubGlzdC1vZi1leGFtcGxlcyBwIHsKLSAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOwotICBwYWRkaW5nOiAwZW0gMGVtIDAuM2VtOwotICBtYXJnaW46IDEuNWVtIDBlbSAwZW0gMGVtOwotfQotCi0udG9jIHAgYiwKLS5saXN0LW9mLXRhYmxlcyBwIGIsCi0ubGlzdC1vZi1maWd1cmVzIHAgYiwKLS5saXN0LW9mLWV4YW1wbGVzIHAgYnsKLSAgZm9udC1zaXplOiAxMDAuMCU7Ci0gIGZvbnQtd2VpZ2h0OiBib2xkOwotfQotCi0udG9jIGRsLAotLmxpc3Qtb2YtdGFibGVzIGRsLAotLmxpc3Qtb2YtZmlndXJlcyBkbCwKLS5saXN0LW9mLWV4YW1wbGVzIGRsIHsKLSAgbWFyZ2luOiAwZW0gMGVtIDAuNWVtIDBlbTsKLSAgcGFkZGluZzogMGVtIDBlbSAwZW0gMGVtOwotfQotCi0udG9jIGR0IHsKLSAgbWFyZ2luOiAwZW0gMGVtIDBlbSAwZW07Ci0gIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKLX0KLQotLnRvYyBkZCB7Ci0gIG1hcmdpbjogMGVtIDBlbSAwZW0gMi42ZW07Ci0gIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKLX0KLQotZGl2Lmdsb3NzYXJ5IGRsLAotZGl2LnZhcmlhYmxlbGlzdCBkbCB7Ci19Ci0KLS5nbG9zc2FyeSBkbCBkdCwKLS52YXJpYWJsZWxpc3QgZGwgZHQsCi0udmFyaWFibGVsaXN0IGRsIGR0IHNwYW4udGVybSB7Ci0gIGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci0gIHdpZHRoOiAyMGVtOwotICB0ZXh0LWFsaWduOiByaWdodDsKLX0KLQotLnZhcmlhYmxlbGlzdCBkbCBkdCB7Ci0gIG1hcmdpbi10b3A6IDAuNWVtOwotfQotCi0uZ2xvc3NhcnkgZGwgZGQsCi0udmFyaWFibGVsaXN0IGRsIGRkIHsKLSAgbWFyZ2luLXRvcDogLTFlbTsKLSAgbWFyZ2luLWxlZnQ6IDI1LjVlbTsKLX0KLQotLmdsb3NzYXJ5IGRkIHAsCi0udmFyaWFibGVsaXN0IGRkIHAgewotICBtYXJnaW4tdG9wOiAwZW07Ci0gIG1hcmdpbi1ib3R0b206IDFlbTsKLX0KLQotCi1kaXYuY2FsbG91dGxpc3QgdGFibGUgdGQgewotICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Ci0gIG1hcmdpbjogMGVtIDBlbSAwZW0gMGVtOwotfQotCi1kaXYuY2FsbG91dGxpc3QgdGFibGUgdGQgcCB7Ci0gIG1hcmdpbi10b3A6IDBlbTsKLSAgbWFyZ2luLWJvdHRvbTogMWVtOwotfQotCi1kaXYgcC5jb3B5cmlnaHQgewotICB0ZXh0LWFsaWduOiBsZWZ0OwotfQotCi1kaXYubGVnYWxub3RpY2UgcC5sZWdhbG5vdGljZS10aXRsZSB7Ci0gIG1hcmdpbi1ib3R0b206IDBlbTsKLX0KLQotcCB7Ci0gIGxpbmUtaGVpZ2h0OiAxLjVlbTsKLSAgbWFyZ2luLXRvcDogMGVtOwotCi19Ci0KLWRsIHsKLSAgcGFkZGluZy10b3A6IDBlbTsKLX0KLQotaHIgewotICBib3JkZXI6IHNvbGlkIDFweDsKLX0KLQotCi0ubWVkaWFvYmplY3QsCi0ubWVkaWFvYmplY3RjbyB7Ci0gIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotaW1nIHsKLSAgYm9yZGVyOiBub25lOwotfQotCi11bCB7Ci0gIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDEuNWVtOwotfQotCi11bCBsaSB7Ci0gIHBhZGRpbmc6IDBlbSAwZW0gMGVtIDBlbTsKLX0KLQotdWwgbGkgcCB7Ci0gIHRleHQtYWxpZ246IGxlZnQ7Ci19Ci0KLXRhYmxlIHsKLSAgd2lkdGggOjEwMCU7Ci19Ci0KLXRoIHsKLSAgcGFkZGluZzogMC4yNWVtOwotICB0ZXh0LWFsaWduOiBsZWZ0OwotICBmb250LXdlaWdodDogbm9ybWFsOwotICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwotfQotCi10ZCB7Ci0gIHBhZGRpbmc6IDAuMjVlbTsKLSAgdmVydGljYWwtYWxpZ246IHRvcDsKLX0KLQotcCBhW2lkXSB7Ci0gIG1hcmdpbjogMHB4OwotICBwYWRkaW5nOiAwcHg7Ci0gIGRpc3BsYXk6IGlubGluZTsKLSAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKLX0KLQotYSB7Ci0gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwotICBjb2xvcjogIzQ0NDsKLX0KLQotcHJlIHsKLSAgICBvdmVyZmxvdzogYXV0bzsKLX0KLQotYTpob3ZlciB7Ci0gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwotICAvKmZvbnQtd2VpZ2h0OiBib2xkOyovCi19Ci0KLS8qIFRoaXMgc3R5bGUgZGVmaW5lcyBob3cgdGhlIHBlcm1hbGluayBjaGFyYWN0ZXIKLSAgIGFwcGVhcnMgYnkgaXRzZWxmIGFuZCB3aGVuIGhvdmVyZWQgb3ZlciB3aXRoCi0gICB0aGUgbW91c2UuICovCi0KLVthbHQ9J1Blcm1hbGluayddIHsgY29sb3I6ICNlZWU7IH0KLVthbHQ9J1Blcm1hbGluayddOmhvdmVyIHsgY29sb3I6IGJsYWNrOyB9Ci0KLQotZGl2LmluZm9ybWFsZmlndXJlLAotZGl2LmluZm9ybWFsZXhhbXBsZSwKLWRpdi5pbmZvcm1hbHRhYmxlLAotZGl2LmZpZ3VyZSwKLWRpdi50YWJsZSwKLWRpdi5leGFtcGxlIHsKLSAgbWFyZ2luOiAxZW0gMGVtOwotICBwYWRkaW5nOiAxZW07Ci0gIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKLX0KLQotCi1kaXYuaW5mb3JtYWxmaWd1cmUgcC50aXRsZSBiLAotZGl2LmluZm9ybWFsZXhhbXBsZSBwLnRpdGxlIGIsCi1kaXYuaW5mb3JtYWx0YWJsZSBwLnRpdGxlIGIsCi1kaXYuZmlndXJlIHAudGl0bGUgYiwKLWRpdi5leGFtcGxlIHAudGl0bGUgYiwKLWRpdi50YWJsZSBwLnRpdGxlIGJ7Ci0gICAgcGFkZGluZy10b3A6IDBlbTsKLSAgICBtYXJnaW4tdG9wOiAwZW07Ci0gICAgZm9udC1zaXplOiAxMDAlOwotICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci19Ci0KLS5tZWRpYW9iamVjdCAuY2FwdGlvbiwKLS5tZWRpYW9iamVjdCAuY2FwdGlvbiBwICB7Ci0gIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgZm9udC1zaXplOiA4MCU7Ci0gIHBhZGRpbmctdG9wOiAwLjVlbTsKLSAgcGFkZGluZy1ib3R0b206IDAuNWVtOwotfQotCi0uZXBpZ3JhcGggewotICBwYWRkaW5nLWxlZnQ6IDU1JTsKLSAgbWFyZ2luLWJvdHRvbTogMWVtOwotfQotCi0uZXBpZ3JhcGggcCB7Ci0gIHRleHQtYWxpZ246IGxlZnQ7Ci19Ci0KLS5lcGlncmFwaCAucXVvdGUgewotICBmb250LXN0eWxlOiBpdGFsaWM7Ci19Ci0uZXBpZ3JhcGggLmF0dHJpYnV0aW9uIHsKLSAgZm9udC1zdHlsZTogbm9ybWFsOwotICB0ZXh0LWFsaWduOiByaWdodDsKLX0KLQotc3Bhbi5hcHBsaWNhdGlvbiB7Ci0gIGZvbnQtc3R5bGU6IGl0YWxpYzsKLX0KLQotLnByb2dyYW1saXN0aW5nIHsKLSAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKLSAgZm9udC1zaXplOiA4MCU7Ci0gIHdoaXRlLXNwYWNlOiBwcmU7Ci0gIG1hcmdpbjogMS4zM2VtIDBlbTsKLSAgcGFkZGluZzogMS4zM2VtOwotfQotCi0udGlwLAotLndhcm5pbmcsCi0uY2F1dGlvbiwKLS5ub3RlIHsKLSAgbWFyZ2luLXRvcDogMWVtOwotICBtYXJnaW4tYm90dG9tOiAxZW07Ci0KLX0KLQotLyogZm9yY2UgZnVsbCB3aWR0aCBvZiB0YWJsZSB3aXRoaW4gZGl2ICovCi0udGlwIHRhYmxlLAotLndhcm5pbmcgdGFibGUsCi0uY2F1dGlvbiB0YWJsZSwKLS5ub3RlIHRhYmxlIHsKLSAgYm9yZGVyOiBub25lOwotICB3aWR0aDogMTAwJTsKLX0KLQotCi0udGlwIHRhYmxlIHRoLAotLndhcm5pbmcgdGFibGUgdGgsCi0uY2F1dGlvbiB0YWJsZSB0aCwKLS5ub3RlIHRhYmxlIHRoIHsKLSAgcGFkZGluZzogMC44ZW0gMC4wZW0gMC4wZW0gMC4wZW07Ci0gIG1hcmdpbiA6IDBlbSAwZW0gMGVtIDBlbTsKLX0KLQotLnRpcCBwLAotLndhcm5pbmcgcCwKLS5jYXV0aW9uIHAsCi0ubm90ZSBwIHsKLSAgbWFyZ2luLXRvcDogMC41ZW07Ci0gIG1hcmdpbi1ib3R0b206IDAuNWVtOwotICBwYWRkaW5nLXJpZ2h0OiAxZW07Ci0gIHRleHQtYWxpZ246IGxlZnQ7Ci19Ci0KLS5hY3JvbnltIHsKLSAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKLX0KLQotYi5rZXljYXAsCi0ua2V5Y2FwIHsKLSAgcGFkZGluZzogMC4wOWVtIDAuM2VtOwotICBtYXJnaW46IDBlbTsKLX0KLQotLml0ZW1pemVkbGlzdCBsaSB7Ci0gIGNsZWFyOiBub25lOwotfQotCi0uZmlsZW5hbWUgewotICBmb250LXNpemU6IG1lZGl1bTsKLSAgZm9udC1mYW1pbHk6IENvdXJpZXIsIG1vbm9zcGFjZTsKLX0KLQotCi1kaXYubmF2aGVhZGVyLCBkaXYuaGVhZGluZ3sKLSAgcG9zaXRpb246IGFic29sdXRlOwotICBsZWZ0OiAwZW07Ci0gIHRvcDogMGVtOwotICB3aWR0aDogMTAwJTsKLSAgYmFja2dyb3VuZC1jb2xvcjogI2NkZjsKLSAgd2lkdGg6IDEwMCU7Ci19Ci0KLWRpdi5uYXZmb290ZXIsIGRpdi5mb290aW5newotICBwb3NpdGlvbjogZml4ZWQ7Ci0gIGxlZnQ6IDBlbTsKLSAgYm90dG9tOiAwZW07Ci0gIGJhY2tncm91bmQtY29sb3I6ICNlZWU7Ci0gIHdpZHRoOiAxMDAlOwotfQotCi0KLWRpdi5uYXZoZWFkZXIgdGQsCi1kaXYubmF2Zm9vdGVyIHRkIHsKLSAgZm9udC1zaXplOiA2NiU7Ci19Ci0KLWRpdi5uYXZoZWFkZXIgdGFibGUgdGggewotICAvKmZvbnQtZmFtaWx5OiBHZW9yZ2lhLCBUaW1lcywgc2VyaWY7Ki8KLSAgLypmb250LXNpemU6IHgtbGFyZ2U7Ki8KLSAgZm9udC1zaXplOiA4MCU7Ci19Ci0KLWRpdi5uYXZoZWFkZXIgdGFibGUgewotICBib3JkZXItbGVmdDogMGVtOwotICBib3JkZXItcmlnaHQ6IDBlbTsKLSAgYm9yZGVyLXRvcDogMGVtOwotICB3aWR0aDogMTAwJTsKLX0KLQotZGl2Lm5hdmZvb3RlciB0YWJsZSB7Ci0gIGJvcmRlci1sZWZ0OiAwZW07Ci0gIGJvcmRlci1yaWdodDogMGVtOwotICBib3JkZXItYm90dG9tOiAwZW07Ci0gIHdpZHRoOiAxMDAlOwotfQotCi1kaXYubmF2aGVhZGVyIHRhYmxlIHRkIGEsCi1kaXYubmF2Zm9vdGVyIHRhYmxlIHRkIGEgewotICBjb2xvcjogIzc3NzsKLSAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotfQotCi0vKiBub3JtYWwgdGV4dCBpbiB0aGUgZm9vdGVyICovCi1kaXYubmF2Zm9vdGVyIHRhYmxlIHRkIHsKLSAgY29sb3I6IGJsYWNrOwotfQotCi1kaXYubmF2aGVhZGVyIHRhYmxlIHRkIGE6dmlzaXRlZCwKLWRpdi5uYXZmb290ZXIgdGFibGUgdGQgYTp2aXNpdGVkIHsKLSAgY29sb3I6ICM0NDQ7Ci19Ci0KLQotLyogbGlua3MgaW4gaGVhZGVyIGFuZCBmb290ZXIgKi8KLWRpdi5uYXZoZWFkZXIgdGFibGUgdGQgYTpob3ZlciwKLWRpdi5uYXZmb290ZXIgdGFibGUgdGQgYTpob3ZlciB7Ci0gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwotICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKLSAgY29sb3I6ICMzM2E7Ci19Ci0KLWRpdi5uYXZoZWFkZXIgaHIsCi1kaXYubmF2Zm9vdGVyIGhyIHsKLSAgZGlzcGxheTogbm9uZTsKLX0KLQotCi0ucWFuZGFzZXQgdHIucXVlc3Rpb24gdGQgcCB7Ci0gIG1hcmdpbjogMGVtIDBlbSAxZW0gMGVtOwotICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Ci19Ci0KLS5xYW5kYXNldCB0ci5hbnN3ZXIgdGQgcCB7Ci0gIG1hcmdpbjogMGVtIDBlbSAxZW0gMGVtOwotICBwYWRkaW5nOiAwZW0gMGVtIDBlbSAwZW07Ci19Ci0uYW5zd2VyIHRkIHsKLSAgcGFkZGluZy1ib3R0b206IDEuNWVtOwotfQotCi0uZW1waGFzaXMgewotICBmb250LXdlaWdodDogYm9sZDsKLX0KLQotCi0gIC8qKioqKioqKioqKioqIC8KLSAvIGRlY29yYXRpb25zICAvCi0vICoqKioqKioqKioqKiovCi0KLS50aXRsZXBhZ2UgewotfQotCi0ucGFydCAudGl0bGUgewotfQotCi0uc3VidGl0bGUgewotICAgIGJvcmRlcjogbm9uZTsKLX0KLQotLyoKLWgxIHsKLSAgYm9yZGVyOiBub25lOwotfQotCi1oMiB7Ci0gIGJvcmRlci10b3A6IHNvbGlkIDAuMmVtOwotICBib3JkZXItYm90dG9tOiBzb2xpZCAwLjA2ZW07Ci19Ci0KLWgzIHsKLSAgYm9yZGVyLXRvcDogMGVtOwotICBib3JkZXItYm90dG9tOiBzb2xpZCAwLjA2ZW07Ci19Ci0KLWg0IHsKLSAgYm9yZGVyOiAwZW07Ci0gIGJvcmRlci1ib3R0b206IHNvbGlkIDAuMDZlbTsKLX0KLQotaDUgewotICBib3JkZXI6IDBlbTsKLX0KLSovCi0KLS5wcm9ncmFtbGlzdGluZyB7Ci0gIGJvcmRlcjogc29saWQgMXB4OwotfQotCi1kaXYuZmlndXJlLAotZGl2LnRhYmxlLAotZGl2LmluZm9ybWFsZmlndXJlLAotZGl2LmluZm9ybWFsdGFibGUsCi1kaXYuaW5mb3JtYWxleGFtcGxlLAotZGl2LmV4YW1wbGUgewotICBib3JkZXI6IDFweCBzb2xpZDsKLX0KLQotCi0KLS50aXAsCi0ud2FybmluZywKLS5jYXV0aW9uLAotLm5vdGUgewotICBib3JkZXI6IDFweCBzb2xpZDsKLX0KLQotLnRpcCB0YWJsZSB0aCwKLS53YXJuaW5nIHRhYmxlIHRoLAotLmNhdXRpb24gdGFibGUgdGgsCi0ubm90ZSB0YWJsZSB0aCB7Ci0gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZDsKLX0KLQotLnF1ZXN0aW9uIHRkIHsKLSAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGJsYWNrOwotfQotCi0uYW5zd2VyIHsKLX0KLQotCi1iLmtleWNhcCwKLS5rZXljYXAgewotICBib3JkZXI6IDFweCBzb2xpZDsKLX0KLQotCi1kaXYubmF2aGVhZGVyLCBkaXYuaGVhZGluZ3sKLSAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkOwotfQotCi0KLWRpdi5uYXZmb290ZXIsIGRpdi5mb290aW5newotICBib3JkZXItdG9wOiAxcHggc29saWQ7Ci19Ci0KLSAgLyoqKioqKioqKiAvCi0gLyAgY29sb3JzICAvCi0vICoqKioqKioqKi8KLQotYm9keSB7Ci0gIGNvbG9yOiAjMzMzOwotICBiYWNrZ3JvdW5kOiB3aGl0ZTsKLX0KLQotYSB7Ci0gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwotfQotCi1hOmhvdmVyIHsKLSAgYmFja2dyb3VuZC1jb2xvcjogI2RlZGVkZTsKLX0KLQotCi1oMSwKLWgyLAotaDMsCi1oNCwKLWg1LAotaDYsCi1oNywKLWg4IHsKLSAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Ci19Ci0KLWhyIHsKLSAgYm9yZGVyLWNvbG9yOiAjYWFhOwotfQotCi0KLS50aXAsIC53YXJuaW5nLCAuY2F1dGlvbiwgLm5vdGUgewotICBib3JkZXItY29sb3I6ICNmZmY7Ci19Ci0KLQotLnRpcCB0YWJsZSB0aCwKLS53YXJuaW5nIHRhYmxlIHRoLAotLmNhdXRpb24gdGFibGUgdGgsCi0ubm90ZSB0YWJsZSB0aCB7Ci0gIGJvcmRlci1ib3R0b20tY29sb3I6ICNmZmY7Ci19Ci0KLQotLndhcm5pbmcgewotICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOwotfQotCi0uY2F1dGlvbiB7Ci0gIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Ci19Ci0KLS50aXAgewotICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYyOwotfQotCi0ubm90ZSB7Ci0gIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjI7Ci19Ci0KLS5nbG9zc2FyeSBkbCBkdCwKLS52YXJpYWJsZWxpc3QgZGwgZHQsCi0udmFyaWFibGVsaXN0IGRsIGR0IHNwYW4udGVybSB7Ci0gIGNvbG9yOiAjMDQ0OwotfQotCi1kaXYuZmlndXJlLAotZGl2LnRhYmxlLAotZGl2LmV4YW1wbGUsCi1kaXYuaW5mb3JtYWxmaWd1cmUsCi1kaXYuaW5mb3JtYWx0YWJsZSwKLWRpdi5pbmZvcm1hbGV4YW1wbGUgewotICBib3JkZXItY29sb3I6ICNhYWE7Ci19Ci0KLXByZS5wcm9ncmFtbGlzdGluZyB7Ci0gIGNvbG9yOiBibGFjazsKLSAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKLSAgYm9yZGVyLWNvbG9yOiAjYWFhOwotICBib3JkZXItd2lkdGg6IDJweDsKLX0KLQotLmd1aW1lbnUsCi0uZ3VpbGFiZWwsCi0uZ3VpbWVudWl0ZW0gewotICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwotfQotCi0KLWIua2V5Y2FwLAotLmtleWNhcCB7Ci0gIGJhY2tncm91bmQtY29sb3I6ICNlZWU7Ci0gIGJvcmRlci1jb2xvcjogIzk5OTsKLX0KLQotCi1kaXYubmF2aGVhZGVyIHsKLSAgYm9yZGVyLWNvbG9yOiBibGFjazsKLX0KLQotCi1kaXYubmF2Zm9vdGVyIHsKLSAgYm9yZGVyLWNvbG9yOiBibGFjazsKLX0KLQotCi0ud3JpdGVybm90ZXMgewotICBjb2xvcjogcmVkOwotfQotCi0KLSAgLyoqKioqKioqKioqIC8KLSAvICBncmFwaGljcyAgLwotLyAqKioqKioqKioqKi8KLQotLyoKLWJvZHkgewotICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImltYWdlcy9ib2R5X2JnLmpwZyIpOwotICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkOwotfQotCi0ubmF2aGVhZGVyLAotLm5vdGUsCi0udGlwIHsKLSAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJpbWFnZXMvbm90ZV9iZy5qcGciKTsKLSAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKLX0KLQotLndhcm5pbmcsCi0uY2F1dGlvbiB7Ci0gIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL3dhcm5pbmdfYmcuanBnIik7Ci0gIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7Ci19Ci0KLS5maWd1cmUsCi0uaW5mb3JtYWxmaWd1cmUsCi0uZXhhbXBsZSwKLS5pbmZvcm1hbGV4YW1wbGUsCi0udGFibGUsCi0uaW5mb3JtYWx0YWJsZSB7Ci0gIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiaW1hZ2VzL2ZpZ3VyZV9iZy5qcGciKTsKLSAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKLX0KLQotKi8KLWgxLAotaDIsCi1oMywKLWg0LAotaDUsCi1oNiwKLWg3ewotfQotCi0vKgotRXhhbXBsZSBvZiBob3cgdG8gc3RpY2sgYW4gaW1hZ2UgYXMgcGFydCBvZiB0aGUgdGl0bGUuCi0KLWRpdi5hcnRpY2xlIC50aXRsZXBhZ2UgLnRpdGxlCi17Ci0gIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZmlndXJlcy93aGl0ZS1vbi1ibGFjay5wbmciKTsKLSAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOwotICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7Ci19Ci0qLwotCi1kaXYucHJlZmFjZSAudGl0bGVwYWdlIC50aXRsZSwKLWRpdi5jb2xvcGhvbiAudGl0bGUsCi1kaXYuY2hhcHRlciAudGl0bGVwYWdlIC50aXRsZSwKLWRpdi5hcnRpY2xlIC50aXRsZXBhZ2UgLnRpdGxlCi17Ci19Ci0KLWRpdi5zZWN0aW9uIGRpdi5zZWN0aW9uIC50aXRsZXBhZ2UgLnRpdGxlLAotZGl2LnNlY3QyIC50aXRsZXBhZ2UgLnRpdGxlIHsKLSAgICBiYWNrZ3JvdW5kOiBub25lOwotfQotCi0KLWgxLnRpdGxlIHsKLSAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Ci0gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7Ci0gIGhlaWdodDogMjU2cHg7Ci0gIHRleHQtaW5kZW50OiAtOTAwMHB4OwotICBvdmVyZmxvdzpoaWRkZW47Ci19Ci0KLWgyLnN1YnRpdGxlIHsKLSAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Ci0gIHRleHQtaW5kZW50OiAtOTAwMHB4OwotICBvdmVyZmxvdzpoaWRkZW47Ci0gIHdpZHRoOiAwcHg7Ci0gIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLSAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvCi0gLyAgcGlwcGluLmdpbXAub3JnIHNwZWNpZmljIGFsdGVyYXRpb25zICAvCi0vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyoKLWRpdi5oZWFkaW5nLCBkaXYubmF2aGVhZGVyIHsKLSAgY29sb3I6ICM3Nzc7Ci0gIGZvbnQtc2l6ZTogODAlOwotICBwYWRkaW5nOiAwOwotICBtYXJnaW46IDA7Ci0gIHRleHQtYWxpZ246IGxlZnQ7Ci0gIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgdG9wOiAwcHg7Ci0gIGxlZnQ6IDBweDsKLSAgd2lkdGg6IDEwMCU7Ci0gIGhlaWdodDogNTBweDsKLSAgYmFja2dyb3VuZDogdXJsKCcvZ2Z4L2hlYWRpbmdfYmcucG5nJykgdHJhbnNwYXJlbnQ7Ci0gIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKLSAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDsKLSAgYm9yZGVyOiBub25lOwotfQotCi1kaXYuaGVhZGluZyBhIHsKLSAgY29sb3I6ICM0NDQ7Ci19Ci0KLWRpdi5mb290aW5nLCBkaXYubmF2Zm9vdGVyIHsKLSAgYm9yZGVyOiBub25lOwotICBjb2xvcjogI2RkZDsKLSAgZm9udC1zaXplOiA4MCU7Ci0gIHRleHQtYWxpZ246cmlnaHQ7Ci0KLSAgd2lkdGg6IDEwMCU7Ci0gIHBhZGRpbmctdG9wOiAxMHB4OwotICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gIGJvdHRvbTogMHB4OwotICBsZWZ0OiAwcHg7Ci0KLSAgYmFja2dyb3VuZDogdXJsKCcvZ2Z4L2Zvb3RpbmdfYmcucG5nJykgdHJhbnNwYXJlbnQ7Ci19Ci0qLwotCi0KLQotICAvKioqKioqKioqKioqKioqKioqIC8KLSAvICBuYXN0eSBpZSB0d2Vha3MgIC8KLS8gKioqKioqKioqKioqKioqKioqLwotCi0vKgotZGl2LmhlYWRpbmcsIGRpdi5uYXZoZWFkZXIgewotICB3aWR0aDpleHByZXNzaW9uKGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggKyAicHgiKTsKLX0KLQotZGl2LmZvb3RpbmcsIGRpdi5uYXZmb290ZXIgewotICB3aWR0aDpleHByZXNzaW9uKGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggKyAicHgiKTsKLSAgbWFyZ2luLWxlZnQ6ZXhwcmVzc2lvbigiLTVlbSIpOwotfQotYm9keSB7Ci0gIHBhZGRpbmc6ZXhwcmVzc2lvbigiNGVtIDVlbSAwZW0gNWVtIik7Ci19Ci0qLwotCi0gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8KLSAvIG1vemlsbGEgdmVuZG9yIHNwZWNpZmljIGNzcyBleHRlbnNpb25zICAvCi0vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKgotZGl2Lm5hdmZvb3RlciwgZGl2LmZvb3Rpbmd7Ci0gIC1tb3otb3BhY2l0eTogMC44ZW07Ci19Ci0KLWRpdi5maWd1cmUsCi1kaXYudGFibGUsCi1kaXYuaW5mb3JtYWxmaWd1cmUsCi1kaXYuaW5mb3JtYWx0YWJsZSwKLWRpdi5pbmZvcm1hbGV4YW1wbGUsCi1kaXYuZXhhbXBsZSwKLS50aXAsCi0ud2FybmluZywKLS5jYXV0aW9uLAotLm5vdGUgewotICAtbW96LWJvcmRlci1yYWRpdXM6IDAuNWVtOwotfQotCi1iLmtleWNhcCwKLS5rZXljYXAgewotICAtbW96LWJvcmRlci1yYWRpdXM6IDAuM2VtOwotfQotKi8KLQotdGFibGUgdHIgdGQgdGFibGUgdHIgdGQgewotICBkaXNwbGF5OiBub25lOwotfQotCi0KLWhyIHsKLSAgZGlzcGxheTogbm9uZTsKLX0KLQotdGFibGUgewotICBib3JkZXI6IDBlbTsKLX0KLQotIC5waG90byB7Ci0gIGZsb2F0OiByaWdodDsKLSAgbWFyZ2luLWxlZnQ6ICAgMS41ZW07Ci0gIG1hcmdpbi1ib3R0b206IDEuNWVtOwotICBtYXJnaW4tdG9wOiAwZW07Ci0gIG1heC13aWR0aDogICAgICAxN2VtOwotICBib3JkZXI6ICAgICAxcHggc29saWQgZ3JheTsKLSAgcGFkZGluZzogICAgM3B4OwotICBiYWNrZ3JvdW5kOiB3aGl0ZTsKLX0KLSAuc2VwZXJhdG9yIHsKLSAgIHBhZGRpbmctdG9wOiAyZW07Ci0gICBjbGVhcjogYm90aDsKLSAgfQotCi0gICN2YWxpZGF0b3JzIHsKLSAgICAgIG1hcmdpbi10b3A6IDVlbTsKLSAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwotICAgICAgY29sb3I6ICM3Nzc7Ci0gIH0KLSAgQG1lZGlhIHByaW50IHsKLSAgICAgIGJvZHkgewotICAgICAgICAgIGZvbnQtc2l6ZTogOHB0OwotICAgICAgfQotICAgICAgLm5vcHJpbnQgewotICAgICAgICAgIGRpc3BsYXk6IG5vbmU7Ci0gICAgICB9Ci0gIH0KLQotCi0udGlwLAotLm5vdGUgewotICAgYmFja2dyb3VuZDogI2YwZjBmMjsKLSAgIGNvbG9yOiAjMzMzOwotICAgcGFkZGluZzogMjBweDsKLSAgIG1hcmdpbjogMjBweDsKLX0KLQotLnRpcCBoMywKLS5ub3RlIGgzIHsKLSAgIHBhZGRpbmc6IDBlbTsKLSAgIG1hcmdpbjogMGVtOwotICAgZm9udC1zaXplOiAyZW07Ci0gICBmb250LXdlaWdodDogYm9sZDsKLSAgIGNvbG9yOiAjMzMzOwotfQotCi0udGlwIGEsCi0ubm90ZSBhIHsKLSAgIGNvbG9yOiAjMzMzOwotICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ci19Ci0KLS5mb290bm90ZSB7Ci0gICBmb250LXNpemU6IHNtYWxsOwotICAgY29sb3I6ICMzMzM7Ci19Ci0KLS8qIENoYW5nZXMgdGhlIGFubm91bmNlbWVudCB0ZXh0ICovCi0udGlwIGgzLAotLndhcm5pbmcgaDMsCi0uY2F1dGlvbiBoMywKLS5ub3RlIGgzIHsKLSAgIGZvbnQtc2l6ZTpsYXJnZTsKLSAgIGNvbG9yOiAjMDA1NTdEOwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24veW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLWN1c3RvbWl6YXRpb24ueHNsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24veW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLWN1c3RvbWl6YXRpb24ueHNsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkY2MwMmRkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3lvY3RvLXByb2plY3QtcXMveW9jdG8tcHJvamVjdC1xcy1jdXN0b21pemF0aW9uLnhzbAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249JzEuMCc/PgotPHhzbDpzdHlsZXNoZWV0IHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sbnM6Zm89Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML0Zvcm1hdCIgdmVyc2lvbj0iMS4wIj4KLQotICA8eHNsOmltcG9ydCBocmVmPSJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL2RvY2Jvb2stbWlycm9yL2RvY2Jvb2steHNsLTEuNzYuMS94aHRtbC9kb2Nib29rLnhzbCIgLz4KLQotPCEtLQotCi0gIDx4c2w6aW1wb3J0IGhyZWY9Ii4uL3RlbXBsYXRlLzEuNzYuMS9kb2Nib29rLXhzbC0xLjc2LjEveGh0bWwvZG9jYm9vay54c2wiIC8+Ci0KLSAgPHhzbDppbXBvcnQgaHJlZj0iaHR0cDovL2RvY2Jvb2suc291cmNlZm9yZ2UubmV0L3JlbGVhc2UveHNsLzEuNzYuMS94aHRtbC9kb2Nib29rLnhzbCIgLz4KLQotLS0+Ci0KLSAgPHhzbDppbXBvcnQgaHJlZj0ieW9jdG8tcHJvamVjdC1xcy10aXRsZXBhZ2UueHNsIi8+Ci0KLSAgPHhzbDppbmNsdWRlIGhyZWY9Ii4uL3RlbXBsYXRlL3Blcm1hbGlua3MueHNsIi8+Ci0gIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9zZWN0aW9uLnRpdGxlLnhzbCIvPgotICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvY29tcG9uZW50LnRpdGxlLnhzbCIvPgotICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vdGVtcGxhdGUvZGl2aXNpb24udGl0bGUueHNsIi8+Ci0gIDx4c2w6aW5jbHVkZSBocmVmPSIuLi90ZW1wbGF0ZS9mb3JtYWwub2JqZWN0LmhlYWRpbmcueHNsIi8+Ci0KLSAgPHhzbDpwYXJhbSBuYW1lPSJnZW5lcmF0ZS50b2MiIHNlbGVjdD0iJ2FydGljbGUgbm9wJyI+PC94c2w6cGFyYW0+Ci0gIDx4c2w6cGFyYW0gbmFtZT0iaHRtbC5zdHlsZXNoZWV0IiBzZWxlY3Q9Iidxcy1zdHlsZS5jc3MnIiAvPgotPC94c2w6c3R5bGVzaGVldD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9kb2N1bWVudGF0aW9uL3lvY3RvLXByb2plY3QtcXMveW9jdG8tcHJvamVjdC1xcy1lY2xpcHNlLWN1c3RvbWl6YXRpb24ueHNsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24veW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLWVjbGlwc2UtY3VzdG9taXphdGlvbi54c2wKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwZTY4MzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24veW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLWVjbGlwc2UtY3VzdG9taXphdGlvbi54c2wKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPScxLjAnPz4KLTx4c2w6c3R5bGVzaGVldAotCXhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIgotCXhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIgotCXhtbG5zOmZvPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9Gb3JtYXQiCi0JdmVyc2lvbj0iMS4wIj4KLQotICA8eHNsOmltcG9ydCBocmVmPSJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL2RvY2Jvb2stbWlycm9yL2RvY2Jvb2steHNsLTEuNzYuMS9lY2xpcHNlL2VjbGlwc2UzLnhzbCIgLz4KLQotPCEtLQotCi0gIDx4c2w6aW1wb3J0IGhyZWY9Ii4uL3RlbXBsYXRlLzEuNzYuMS9kb2Nib29rLXhzbC0xLjc2LjEvZWNsaXBzZS9lY2xpcHNlMy54c2wiIC8+Ci0KLSAgPHhzbDppbXBvcnQKLQkgIGhyZWY9Imh0dHA6Ly9kb2Nib29rLnNvdXJjZWZvcmdlLm5ldC9yZWxlYXNlL3hzbC8xLjc2LjEvZWNsaXBzZS9lY2xpcHNlMy54c2wiIC8+Ci0KLS0tPgotCi0gIDx4c2w6aW1wb3J0IGhyZWY9InlvY3RvLXByb2plY3QtcXMtdGl0bGVwYWdlLnhzbCIvPgotCi0gIDx4c2w6cGFyYW0gbmFtZT0iY2h1bmtlci5vdXRwdXQuaW5kZW50IiBzZWxlY3Q9Iid5ZXMnIi8+Ci0gIDx4c2w6cGFyYW0gbmFtZT0iY2h1bmsucXVpZXRseSIgc2VsZWN0PSIxIi8+Ci0gIDx4c2w6cGFyYW0gbmFtZT0idXNlLmlkLmFzLmZpbGVuYW1lIiBzZWxlY3Q9IjEiLz4KLSAgPHhzbDpwYXJhbSBuYW1lPSJ1bGluay50YXJnZXQiIHNlbGVjdD0iJ19zZWxmJyIgLz4KLSAgPHhzbDpwYXJhbSBuYW1lPSJiYXNlLmRpciIgc2VsZWN0PSInaHRtbC95b2N0by1wcm9qZWN0LXFzLyciLz4KLSAgPHhzbDpwYXJhbSBuYW1lPSJjaHVuay5zZWN0aW9uLmRlcHRoIiBzZWxlY3Q9IjAiLz4KLSAgPHhzbDpwYXJhbSBuYW1lPSJodG1sLnN0eWxlc2hlZXQiIHNlbGVjdD0iJy4uL2Jvb2suY3NzJyIvPgotICA8eHNsOnBhcmFtIG5hbWU9ImVjbGlwc2UubWFuaWZlc3QiIHNlbGVjdD0iMCIvPgotICA8eHNsOnBhcmFtIG5hbWU9ImNyZWF0ZS5wbHVnaW4ueG1sIiBzZWxlY3Q9IjAiLz4KLSAgPHhzbDpwYXJhbSBuYW1lPSJzdXBwcmVzcy5uYXZpZ2F0aW9uIiBzZWxlY3Q9IjEiLz4KLSAgPHhzbDpwYXJhbSBuYW1lPSJnZW5lcmF0ZS5pbmRleCIgc2VsZWN0PSIwIi8+Ci0gIDx4c2w6cGFyYW0gbmFtZT0iZ2VuZXJhdGUudG9jIiBzZWxlY3Q9IidhcnRpY2xlIG5vcCciPjwveHNsOnBhcmFtPgotICA8eHNsOnBhcmFtIG5hbWU9Imh0bWwuc3R5bGVzaGVldCIgc2VsZWN0PSInc3R5bGUuY3NzJyIgLz4KLTwveHNsOnN0eWxlc2hlZXQ+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi95b2N0by1wcm9qZWN0LXFzL3lvY3RvLXByb2plY3QtcXMueG1sIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L2RvY3VtZW50YXRpb24veW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZkYWU3Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvZG9jdW1lbnRhdGlvbi95b2N0by1wcm9qZWN0LXFzL3lvY3RvLXByb2plY3QtcXMueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA1NiArMCwwIEBACi08IURPQ1RZUEUgYXJ0aWNsZSBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMi8vRU4iCi0iaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgotWzwhRU5USVRZICUgcG9reSBTWVNURU0gIi4uL3Bva3kuZW50Ij4gJXBva3k7IF0gPgotCi08YXJ0aWNsZSBpZD0neW9jdG8tcHJvamVjdC1xcy1pbnRybyc+Ci0gICAgPGFydGljbGVpbmZvPgotICAgICAgICA8dGl0bGU+WW9jdG8gUHJvamVjdCBRdWljayBTdGFydDwvdGl0bGU+Ci0KLSAgICAgICAgPGNvcHlyaWdodD4KLSAgICAgICAgICAgIDx5ZWFyPiZDT1BZUklHSFRfWUVBUjs8L3llYXI+Ci0gICAgICAgICAgICA8aG9sZGVyPkxpbnV4IEZvdW5kYXRpb248L2hvbGRlcj4KLSAgICAgICAgPC9jb3B5cmlnaHQ+Ci0KLSAgICAgICAgPGxlZ2Fsbm90aWNlPgotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50IHVuZGVyCi0gICAgICAgICAgICAgICAgdGhlIHRlcm1zIG9mIHRoZSA8dWxpbmsgdHlwZT0iaHR0cCIgdXJsPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8yLjAvdWsvIj5DcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uLVNoYXJlIEFsaWtlIDIuMCBVSzogRW5nbGFuZCAmYW1wOyBXYWxlczwvdWxpbms+IGFzIHB1Ymxpc2hlZCBieSBDcmVhdGl2ZSBDb21tb25zLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICA8bm90ZT48dGl0bGU+TWFudWFsIE5vdGVzPC90aXRsZT4KLSAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHZlcnNpb24gb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Zb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgaXMgZm9yIHRoZSAmWU9DVE9fRE9DX1ZFUlNJT047IHJlbGVhc2Ugb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKLSAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgdXNlIHRoZSBtYW51YWwgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+LgotICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgIEZvciBtYW51YWxzIGFzc29jaWF0ZWQgd2l0aCBvdGhlciByZWxlYXNlcyBvZiB0aGUgWW9jdG8KLSAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCwgZ28gdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICBhbmQgdXNlIHRoZSBkcm9wLWRvd24gIkFjdGl2ZSBSZWxlYXNlcyIgYnV0dG9uCi0gICAgICAgICAgICAgICAgICAgICAgIGFuZCBjaG9vc2UgdGhlIG1hbnVhbCBhc3NvY2lhdGVkIHdpdGggdGhlIGRlc2lyZWQKLSAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgVG8gcmVwb3J0IGFueSBpbmFjY3VyYWNpZXMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0b0B5b2N0b3Byb2plY3QuY29tPC9maWxlbmFtZT4gb3IgbG9nIGludG8KLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9sZWdhbG5vdGljZT4KLQotICAgICAgICA8YWJzdHJhY3Q+Ci0gICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMveW9jdG8tcHJvamVjdC10cmFuc3AucG5nIgotICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjZpbiIgZGVwdGg9IjFpbiIKLSAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduPSJyaWdodCIgc2NhbGU9IjI1IiAvPgotICAgICAgICA8L2Fic3RyYWN0PgotICAgIDwvYXJ0aWNsZWluZm8+Ci0KLSAgICA8c2VjdGlvbiBpZD0nd2VsY29tZSc+Ci0gICAgICAgIDx0aXRsZT5XZWxjb21lITwvdGl0bGU+Ci0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgV2VsY29tZSB0byB0aGUgWW9jdG8gUHJvamVjdCEKLSAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGlzIGFuIG9wZW4tc291cmNlIGNvbGxhYm9yYXRpb24gcHJvamVjdCB3aG9zZQotICAgICAgICAgICAgZm9jdXMgaXMgZGV2ZWxvcGVycyBvZiBlbWJlZGRlZCBMaW51eCBzeXN0ZW1zLgotICAgICAgICAgICAgQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGUgWW9jdG8gUHJvamVjdCB1c2VzIGEgYnVpbGQgaG9zdCBiYXNlZAotICAgICAgICAgICAgb24gdGhlIE9wZW5FbWJlZGRlZCAoT0UpIHByb2plY3QsIHdoaWNoIHVzZXMgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNiaXRiYWtlLXRlcm0nPkJpdEJha2U8L3VsaW5rPgotICAgICAgICAgICAgdG9vbCwgdG8gY29uc3RydWN0IGNvbXBsZXRlIExpbnV4IGltYWdlcy4KLSAgICAgICAgICAgIFRoZSBCaXRCYWtlIGFuZCBPRSBjb21wb25lbnRzIGNvbWJpbmUgdG9nZXRoZXIgdG8gZm9ybQotICAgICAgICAgICAgYSByZWZlcmVuY2UgYnVpbGQgaG9zdCwgaGlzdG9yaWNhbGx5IGtub3duIGFzCi0gICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNwb2t5Jz5Qb2t5PC91bGluaz4KLSAgICAgICAgICAgICg8ZW1waGFzaXM+UGFoPC9lbXBoYXNpcz4ta2VlKS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBxdWljayBzdGFydCBpcyB3cml0dGVuIHNvIHRoYXQgeW91IGNhbiBxdWlja2x5IGdldCBhCi0gICAgICAgICAgICBidWlsZCBob3N0IHNldCB1cCB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QgYW5kIHRoZW4gYnVpbGQgc29tZQotICAgICAgICAgICAgTGludXggaW1hZ2VzLgotICAgICAgICAgICAgUmF0aGVyIHRoYW4gZ28gaW50byBncmVhdCBkZXRhaWwgYWJvdXQgdGhlIFlvY3RvIFByb2plY3QgYW5kIGl0cwotICAgICAgICAgICAgbWFueSBjYXBhYmlsaXRpZXMsIHRoaXMgcXVpY2sgc3RhcnQgcHJvdmlkZXMgdGhlIG1pbmltYWwKLSAgICAgICAgICAgIGluZm9ybWF0aW9uIHlvdSBuZWVkIHRvIHRyeSBvdXQgdGhlIFlvY3RvIFByb2plY3QgdXNpbmcgZWl0aGVyIGEKLSAgICAgICAgICAgIHN1cHBvcnRlZCBMaW51eCBidWlsZCBob3N0IG9yIGEgYnVpbGQgaG9zdCBzZXQgdXAgdG8gdXNlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvY3JvcHMvYWJvdXQvJz5DUk9QUzwvdWxpbms+LAotICAgICAgICAgICAgd2hpY2ggbGV2ZXJhZ2VzCi0gICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy5kb2NrZXIuY29tLyc+RG9ja2VyIENvbnRhaW5lcnM8L3VsaW5rPi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgUmVhZGluZyBhbmQgdXNpbmcgdGhlIHF1aWNrIHN0YXJ0IHNob3VsZCByZXN1bHQgaW4geW91IGhhdmluZyBhCi0gICAgICAgICAgICBiYXNpYyB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgdGhlIFlvY3RvIFByb2plY3QgaXMgYW5kIGhvdyB0byB1c2UKLSAgICAgICAgICAgIHNvbWUgb2YgaXRzIGNvcmUgY29tcG9uZW50cy4KLSAgICAgICAgICAgIFlvdSB3aWxsIGFsc28gaGF2ZSB3b3JrZWQgdGhyb3VnaCBzdGVwcyB0byBwcm9kdWNlIHR3byBpbWFnZXM6Ci0gICAgICAgICAgICBvbmUgdGhhdCBydW5zIG9uIHRoZSBlbXVsYXRvciAoUUVNVSkgYW5kIG9uZSB0aGF0IGJvb3RzIG9uIGFjdHVhbAotICAgICAgICAgICAgaGFyZHdhcmUgKGkuZS4gTWlubm93Qm9hcmQgVHVyYm90KS4KLSAgICAgICAgICAgIFRoZSBleGFtcGxlcyBoaWdobGlnaHQgdGhlIGVhc2Ugd2l0aCB3aGljaCB5b3UgY2FuIHVzZSB0aGUKLSAgICAgICAgICAgIFlvY3RvIFByb2plY3QgdG8gY3JlYXRlIGltYWdlcyBmb3IgbXVsdGlwbGUgdHlwZXMgb2YgaGFyZHdhcmUuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBkaXJlY3RzIHlvdSB0byBrZXkgc2VjdGlvbnMgb2YgdGhpcwotICAgICAgICAgICAgcXVpY2sgc3RhcnQ6Ci0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi40L3lvY3RvLXByb2plY3QtcXMveW9jdG8tcHJvamVjdC1xcy5odG1sI3lwLXJlc291cmNlcyc+U2V0dGluZyBVcCB0byBVc2UgdGhlIFlvY3RvIFByb2plY3Q8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNC95b2N0by1wcm9qZWN0LXFzL3lvY3RvLXByb2plY3QtcXMuaHRtbCNidWlsZGluZy1hbi1pbWFnZS1mb3ItZW11bGF0aW9uJz5CdWlsZGluZyBhbiBJbWFnZSBmb3IgRW11bGF0aW9uPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjQveW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLmh0bWwjYnVpbGRpbmctYW4taW1hZ2UtZm9yLWhhcmR3YXJlJz5CdWlsZGluZyBhbiBJbWFnZSBmb3IgSGFyZHdhcmU8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotPCEtLQotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCBoYXZlIGEgc3lzdGVtIHRoYXQgcnVucyBMaW51eCBhbmQgeW91IHdhbnQgdG8gZ2l2ZQotICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGEgdGVzdCBydW4sIHlvdSBtaWdodCBjb25zaWRlciB1c2luZyB0aGUgWW9jdG8KLSAgICAgICAgICAgICAgICBQcm9qZWN0IEJ1aWxkIEFwcGxpYW5jZS4KLSAgICAgICAgICAgICAgICBUaGUgQnVpbGQgQXBwbGlhbmNlIGFsbG93cyB5b3UgdG8gYnVpbGQgYW5kIGJvb3QgYSBjdXN0b20KLSAgICAgICAgICAgICAgICBlbWJlZGRlZCBMaW51eCBpbWFnZSB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IHVzaW5nIGEgbm9uLUxpbnV4Ci0gICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgc3lzdGVtLgotICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy55b2N0b3Byb2plY3Qub3JnL3Rvb2xzLXJlc291cmNlcy9wcm9qZWN0cy9idWlsZC1hcHBsaWFuY2UnPllvY3RvIFByb2plY3QgQnVpbGQgQXBwbGlhbmNlPC91bGluaz4KLSAgICAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAgIDwvbm90ZT4KLS0tPgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBGb3IgbW9yZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiB0aGUgWW9jdG8gUHJvamVjdCwgeW91IGNhbgotICAgICAgICAgICAgcmVmZXJlbmNlIHRoZXNlIHJlc291cmNlczoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+V2Vic2l0ZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBUaGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOyc+WW9jdG8gUHJvamVjdCBXZWJzaXRlPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXMgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiwgdGhlIGxhdGVzdCBidWlsZHMsIGJyZWFraW5nCi0gICAgICAgICAgICAgICAgICAgIG5ld3MsIGZ1bGwgZGV2ZWxvcG1lbnQgZG9jdW1lbnRhdGlvbiwgYW5kIGFjY2VzcyB0byBhIHJpY2gKLSAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBDb21tdW5pdHkgaW50byB3aGljaCB5b3UgY2FuIHRhcC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+WW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCBPdmVydmlldzo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBUaGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3lwLWludHJvJz5JbnRyb2R1Y2luZyB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIHByZXNlbnRzIGFuIG92ZXJ2aWV3IG9mIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGVudmlyb25tZW50LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GQVFzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIExpc3RzIGNvbW1vbmx5IGFza2VkIFlvY3RvIFByb2plY3QgcXVlc3Rpb25zIGFuZCBhbnN3ZXJzLgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdHdvIEZBUXM6Ci0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9GQVEnPllvY3RvIFByb2plY3QgRkFRPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgb24gYSB3aWtpLCBhbmQgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNmYXEnPkZBUTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBjaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRldmVsb3BlciBTY3JlZW5jYXN0OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vdmltZW8uY29tLzM2NDUwMzIxJz5HZXR0aW5nIFN0YXJ0ZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAtIE5ldyBEZXZlbG9wZXIgU2NyZWVuY2FzdCBUdXRvcmlhbDwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIHByb3ZpZGVzIGEgMzAtbWludXRlIHZpZGVvIGNyZWF0ZWQgZm9yIHVzZXJzIHVuZmFtaWxpYXIKLSAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCBidXQgZmFtaWxpYXIgd2l0aCBMaW51eCBidWlsZAotICAgICAgICAgICAgICAgICAgICBob3N0cy4KLSAgICAgICAgICAgICAgICAgICAgV2hpbGUgdGhpcyBzY3JlZW5jYXN0IGlzIHNvbWV3aGF0IGRhdGVkLCB0aGUgaW50cm9kdWN0b3J5Ci0gICAgICAgICAgICAgICAgICAgIGFuZCBmdW5kYW1lbnRhbCBjb25jZXB0cyBhcmUgdXNlZnVsIGZvciB0aGUgYmVnaW5uZXIuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNvbXByZWhlbnNpdmUgTGlzdCBvZiBMaW5rcyBhbmQgT3RoZXIgRG9jdW1lbnRhdGlvbjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBUaGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Jlc291cmNlcy1saW5rcy1hbmQtcmVsYXRlZC1kb2N1bWVudGF0aW9uJz5MaW5rcyBhbmQgUmVsYXRlZCBEb2N1bWVudGF0aW9uPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBwcm92aWRlcyBhCi0gICAgICAgICAgICAgICAgICAgIGNvbXByZWhlbnNpdmUgbGlzdCBvZiByZWxhdGVkIGxpbmtzIGFuZCBkb2N1bWVudGF0aW9uLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3lwLXJlc291cmNlcyc+Ci0gICAgICAgIDx0aXRsZT5TZXR0aW5nIFVwIHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBTZXR0aW5nIHVwIHRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdCBpbnZvbHZlcyBnZXR0aW5nIHlvdXIgYnVpbGQKLSAgICAgICAgICAgIGhvc3QgcmVhZHkuCi0gICAgICAgICAgICBJZiB5b3UgaGF2ZSBhIG5hdGl2ZSBMaW51eCBtYWNoaW5lIHRoYXQgcnVucyBhIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgIHN1cHBvcnRlZCBkaXN0cmlidXRpb24gYXMgZGVzY3JpYmVkIGJ5IHRoZQotICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2RldGFpbGVkLXN1cHBvcnRlZC1kaXN0cm9zJz5TdXBwb3J0ZWQgTGludXggRGlzdHJpYnV0aW9uczwvdWxpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLCB5b3UgY2FuIHByZXBhcmUKLSAgICAgICAgICAgIHRoYXQgbWFjaGluZSBhcyB5b3VyIGJ1aWxkIGhvc3QuCi0gICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncXMtbmF0aXZlLWxpbnV4LWJ1aWxkLWhvc3QnPlVzaW5nIGEgTmF0aXZlIExpbnV4IE1hY2hpbmU8L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgSWYgeW91IGRvIG5vdCB3YW50IHRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdCBvbiBhIG5hdGl2ZSBMaW51eAotICAgICAgICAgICAgbWFjaGluZSwgeW91IGNhbiBwcmVwYXJlIHlvdXIgYnVpbGQgaG9zdCB0byB1c2UKLSAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9jcm9wcy9hYm91dC8nPkNST1BTPC91bGluaz4sCi0gICAgICAgICAgICB3aGljaCBsZXZlcmFnZXMKLSAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LmRvY2tlci5jb20vJz5Eb2NrZXIgQ29udGFpbmVyczwvdWxpbms+LgotICAgICAgICAgICAgWW91IGNhbiBzZXQgdXAgYSBidWlsZCBob3N0IGZvciBXaW5kb3dzLCBNYWMsIGFuZCBMaW51eAotICAgICAgICAgICAgbWFjaGluZXMuCi0gICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncXMtY3JvcHMtYnVpbGQtaG9zdCc+VXNpbmcgQ1JPUFMgYW5kIENvbnRhaW5lcnM8L2xpbms+IgotICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdxcy1jcm9wcy1idWlsZC1ob3N0Jz4KLSAgICAgICAgICAgIDx0aXRsZT5Vc2luZyBDUk9QUyBhbmQgQ29udGFpbmVyczwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBnZXQgeW91ciBidWlsZCBob3N0IHNldCB1cCB3aXRoIGEKLSAgICAgICAgICAgICAgICBQb2t5IGNvbnRhaW5lciB0aGF0IHlvdSBjYW4gdXNlIHRvIGNvbXBsZXRlIHRoZSBidWlsZAotICAgICAgICAgICAgICAgIGV4YW1wbGVzIGZ1cnRoZXIgZG93biBpbiB0aGUgUXVpY2sgU3RhcnQ6Ci0gICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IFVwIHRvIHVzZSBDUk9zcyBQbGF0Zm9ybVMgKENST1BTKTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgV29yayB0aHJvdWdoIHRoZSBmaXJzdCBzaXggc3RlcHMgb2YgdGhlIHByb2NlZHVyZQotICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc2V0dGluZy11cC10by11c2UtY3JvcHMnPlNldHRpbmcgVXAgdG8gVXNlIENST3NzIFBsYXRmb3JtUyAoQ1JPUFMpPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IFVwIHRoZSBQb2t5IENvbnRhaW5lciB0byBVc2UgdGhlIFlvY3RvIFByb2plY3Q6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIEdvIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdGh1Yi5jb20vY3JvcHMvcG9reS1jb250YWluZXIvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kJz48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGZvbGxvdyB0aGUgZGlyZWN0aW9ucyB0byBzZXQgdXAgdGhlIFBva3kgY29udGFpbmVyCi0gICAgICAgICAgICAgICAgICAgICAgICBvbiB5b3VyIGJ1aWxkIGhvc3QuPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5PbmNlIHlvdSBjb21wbGV0ZSB0aGUgc2V0dXAgaW5zdHJ1Y3Rpb25zIGZvciB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLCB5b3UgbmVlZCB0byBnZXQgYSBjb3B5IG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5IG9uIHlvdXIgYnVpbGQKLSAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QuCi0gICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVsZWFzZXMnPllvY3RvIFByb2plY3QgUmVsZWFzZTwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIHRvIGNvbnRpbnVlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgIDxzZWN0aW9uIGlkPSdxcy1uYXRpdmUtbGludXgtYnVpbGQtaG9zdCc+Ci0gICAgICAgICAgICA8dGl0bGU+VXNpbmcgYSBOYXRpdmUgTGludXggTWFjaGluZTwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBzaG93cyB3aGF0IHlvdSBuZWVkIGluIG9yZGVyIHRvIHVzZSBhCi0gICAgICAgICAgICAgICAgTGludXgtYmFzZWQgYnVpbGQgaG9zdCB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QgdG8gYnVpbGQgaW1hZ2VzOgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+QnVpbGQgSG9zdDwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIEEgYnVpbGQgaG9zdCB3aXRoIGEgbWluaW11bSBvZiA1MCBHYnl0ZXMgb2YgZnJlZSBkaXNrCi0gICAgICAgICAgICAgICAgICAgIHNwYWNlIHRoYXQgaXMgcnVubmluZyBhIHN1cHBvcnRlZCBMaW51eCBkaXN0cmlidXRpb24gKGkuZS4KLSAgICAgICAgICAgICAgICAgICAgcmVjZW50IHJlbGVhc2VzIG9mIEZlZG9yYSwgb3BlblNVU0UsIENlbnRPUywgRGViaWFuLCBvcgotICAgICAgICAgICAgICAgICAgICBVYnVudHUpLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkJ1aWxkIEhvc3QgUGFja2FnZXM8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBBcHByb3ByaWF0ZSBwYWNrYWdlcyBpbnN0YWxsZWQgb24gdGhlIGJ1aWxkIGhvc3QuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0KLSAgICAgICAgICAgIDxzZWN0aW9uIGlkPSd0aGUtbGludXgtZGlzdHJvJz4KLSAgICAgICAgICAgICAgICA8dGl0bGU+VGhlIExpbnV4IERpc3RyaWJ1dGlvbjwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgdGVhbSB2ZXJpZmllcyBlYWNoIHJlbGVhc2UgYWdhaW5zdCByZWNlbnQKLSAgICAgICAgICAgICAgICAgICAgdmVyc2lvbnMgb2YgdGhlIG1vc3QgcG9wdWxhciBMaW51eCBkaXN0cmlidXRpb25zIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgcHJvdmlkZSBzdGFibGUgcmVsZWFzZXMuCi0gICAgICAgICAgICAgICAgICAgIEluIGdlbmVyYWwsIGlmIHlvdSBoYXZlIHRoZSBjdXJyZW50IHJlbGVhc2UgbWludXMgb25lIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgZGlzdHJpYnV0aW9ucywgeW91IHNob3VsZCBoYXZlIG5vIHByb2JsZW1zLgotICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVidW50dQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZlZG9yYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5TVVNFCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2VudE9TCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGViaWFuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICBGb3IgYSBtb3JlIGRldGFpbGVkIGxpc3Qgb2YgZGlzdHJpYnV0aW9ucyB0aGF0IHN1cHBvcnQgdGhlCi0gICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2RldGFpbGVkLXN1cHBvcnRlZC1kaXN0cm9zJz5TdXBwb3J0ZWQgTGludXggRGlzdHJpYnV0aW9uczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHNob3VsZCBiZSBhYmxlIHRvIHJ1biBvbiBhbnkKLSAgICAgICAgICAgICAgICAgICAgbW9kZXJuIGRpc3RyaWJ1dGlvbiB0aGF0IGhhcyB0aGUgZm9sbG93aW5nIHZlcnNpb25zIGZvcgotICAgICAgICAgICAgICAgICAgICBHaXQsIHRhciwgYW5kIFB5dGhvbi4KLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHaXQgMS44LjMuMSBvciBncmVhdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyIDEuMjcgb3IgZ3JlYXRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiAzLjQuMCBvciBncmVhdGVyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBidWlsZCBob3N0IGRvZXMgbm90IG1lZXQgYW55IG9mIHRoZXNlIHRocmVlIGxpc3RlZAotICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIHJlcXVpcmVtZW50cywgeW91IGNhbiB0YWtlIHN0ZXBzIHRvIHByZXBhcmUgdGhlCi0gICAgICAgICAgICAgICAgICAgIHN5c3RlbSBzbyB0aGF0IHlvdSBjYW4gc3RpbGwgdXNlIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXF1aXJlZC1naXQtdGFyLWFuZC1weXRob24tdmVyc2lvbnMnPlJlcXVpcmVkIEdpdCwgdGFyLCBhbmQgUHl0aG9uIFZlcnNpb25zPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9zZWN0aW9uPgotCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0ncGFja2FnZXMnPgotICAgICAgICAgICAgICAgIDx0aXRsZT5UaGUgQnVpbGQgSG9zdCBQYWNrYWdlczwvdGl0bGU+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgUmVxdWlyZWQgYnVpbGQgaG9zdCBwYWNrYWdlcyB2YXJ5IGRlcGVuZGluZyBvbiB5b3VyCi0gICAgICAgICAgICAgICAgICAgIGJ1aWxkIG1hY2hpbmUgYW5kIHdoYXQgeW91IHdhbnQgdG8gZG8gd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGJ1aWxkIGFuIGltYWdlIHRoYXQgY2FuIHJ1bgotICAgICAgICAgICAgICAgICAgICBvbiBRRU1VIGluIGdyYXBoaWNhbCBtb2RlIChhIG1pbmltYWwsIGJhc2ljIGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVtZW50KSwgdGhlbiB0aGUgYnVpbGQgaG9zdCBwYWNrYWdlIHJlcXVpcmVtZW50cwotICAgICAgICAgICAgICAgICAgICBhcmUgZGlmZmVyZW50IHRoYW4gaWYgeW91IHdhbnQgdG8gYnVpbGQgYW4gaW1hZ2Ugb24gYSBoZWFkbGVzcwotICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gb3IgYnVpbGQgb3V0IHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gc2V0LgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZlbHksIHRoZSBudW1iZXIgb2YgcmVxdWlyZWQgcGFja2FnZXMgaXMgbGFyZ2UKLSAgICAgICAgICAgICAgICAgICAgaWYgeW91IHdhbnQgdG8gYmUgYWJsZSB0byBjb3ZlciBhbGwgY2FzZXMuCi0gICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgSW4gZ2VuZXJhbCwgeW91IG5lZWQgdG8gaGF2ZSByb290IGFjY2VzcyBhbmQgdGhlbiBpbnN0YWxsCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVxdWlyZWQgcGFja2FnZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaHVzLCB0aGUgY29tbWFuZHMgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9uIG1heSBvciBtYXkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vdCB3b3JrIGRlcGVuZGluZyBvbiB3aGV0aGVyIG9yIG5vdCB5b3VyIExpbnV4Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaXN0cmlidXRpb24gaGFzIDxmaWxlbmFtZT5zdWRvPC9maWxlbmFtZT4gaW5zdGFsbGVkLgotICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBzaG93cyB0aGUgcmVxdWlyZWQgcGFja2FnZXMgbmVlZGVkIHRvIGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgIGFuIGltYWdlIHRoYXQgcnVucyBvbiBRRU1VIGluIGdyYXBoaWNhbCBtb2RlIChlLmcuIGVzc2VudGlhbAotICAgICAgICAgICAgICAgICAgICBwbHVzIGdyYXBoaWNzIHN1cHBvcnQpLgotICAgICAgICAgICAgICAgICAgICBGb3IgbGlzdHMgb2YgcmVxdWlyZWQgcGFja2FnZXMgZm9yIG90aGVyIHNjZW5hcmlvcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVxdWlyZWQtcGFja2FnZXMtZm9yLXRoZS1ob3N0LWRldmVsb3BtZW50LXN5c3RlbSc+UmVxdWlyZWQgUGFja2FnZXMgZm9yIHRoZSBIb3N0IERldmVsb3BtZW50IFN5c3RlbTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwuCi0gICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlVidW50dSBhbmQgRGViaWFuPC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgJlVCVU5UVV9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTDsgbGlic2RsMS4yLWRldiB4dGVybQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RmVkb3JhPC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyBkbmYgaW5zdGFsbCAmRkVET1JBX0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMOyBTREwtZGV2ZWwgeHRlcm0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPk9wZW5TVVNFPC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyB6eXBwZXIgaW5zdGFsbCAmT1BFTlNVU0VfSE9TVF9QQUNLQUdFU19FU1NFTlRJQUw7IGxpYlNETC1kZXZlbCB4dGVybQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Q2VudE9TPC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyB5dW0gaW5zdGFsbCAmQ0VOVE9TX0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMOyBTREwtZGV2ZWwgeHRlcm0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHRyYSBQYWNrYWdlcyBmb3IgRW50ZXJwcmlzZSBMaW51eAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5lcGVsLXJlbGVhc2U8L2ZpbGVuYW1lPikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBhIGNvbGxlY3Rpb24gb2YgcGFja2FnZXMgZnJvbSBGZWRvcmEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsdCBvbiBSSEVML0NlbnRPUyBmb3IgZWFzeSBpbnN0YWxsYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBwYWNrYWdlcyBub3QgaW5jbHVkZWQgaW4gZW50ZXJwcmlzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbnV4IGJ5IGRlZmF1bHQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gaW5zdGFsbCB0aGVzZSBwYWNrYWdlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRlbHkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5tYWtlY2FjaGU8L2ZpbGVuYW1lPiBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VtZXMgYWRkaXRpb25hbCBNZXRhZGF0YSBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmVwZWwtcmVsZWFzZTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgT25jZSB5b3UgY29tcGxldGUgdGhlIHNldHVwIGluc3RydWN0aW9ucyBmb3IgeW91cgotICAgICAgICAgICAgICAgIG1hY2hpbmUsIHlvdSBuZWVkIHRvIGdldCBhIGNvcHkgb2YgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5IG9uIHlvdXIgYnVpbGQKLSAgICAgICAgICAgICAgICBob3N0LgotICAgICAgICAgICAgICAgIENvbnRpbnVlIHdpdGggdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlbGVhc2VzJz5Zb2N0byBQcm9qZWN0IFJlbGVhc2U8L2xpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0ncmVsZWFzZXMnPgotICAgICAgICAgICAgPHRpdGxlPllvY3RvIFByb2plY3QgUmVsZWFzZTwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIE5vdyB0aGF0IHlvdXIgYnVpbGQgaG9zdCBoYXMgdGhlIHJpZ2h0IHBhY2thZ2VzIChuYXRpdmUKLSAgICAgICAgICAgICAgICBMaW51eCBtYWNoaW5lKSBvciB5b3UgaGF2ZSB0aGUgUG9reSBjb250YWluZXIgc2V0IHVwCi0gICAgICAgICAgICAgICAgKENST1BTKSwgeW91IG5lZWQgdG8gZ2V0IGEgY29weSBvZiB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgICAgICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBnZXQgdGhlIGxhdGVzdCBZb2N0byBQcm9qZWN0IHJlbGVhc2UKLSAgICAgICAgICAgICAgICBieSBzZXR0aW5nIHVwIChjbG9uaW5nIGluCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiB0ZXJtcykgYQotICAgICAgICAgICAgICAgIGxvY2FsIGNvcHkgb2YgdGhlIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gR2l0IHJlcG9zaXRvcnkgb24KLSAgICAgICAgICAgICAgICB5b3VyIGJ1aWxkIGhvc3QgYW5kIHRoZW4gY2hlY2tpbmcgb3V0IHRoZSBsYXRlc3QgcmVsZWFzZS4KLSAgICAgICAgICAgICAgICBEb2luZyBzbyBhbGxvd3MgeW91IHRvIGVhc2lseSB1cGRhdGUgdG8gbmV3ZXIgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgIHJlbGVhc2VzIGFzIHdlbGwgYXMgY29udHJpYnV0ZSBiYWNrIHRvIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgZnJvbSBhIG5hdGl2ZSBMaW51eCBtYWNoaW5lIHRoYXQgaXMKLSAgICAgICAgICAgICAgICBydW5uaW5nIFVidW50dS4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBidWlsZCBob3N0IGlzIHVzaW5nIGEgUG9reSBjb250YWluZXIsIHlvdSBjYW4KLSAgICAgICAgICAgICAgICAgICAgdXNlIHRoZSBzYW1lIEdpdCBjb21tYW5kcy4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIGNsb25lcyB0aGUgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgYW5kIHRoZW4gY2hlY2tzIG91dCB0aGUgbGF0ZXN0IFlvY3RvIFByb2plY3QgUmVsZWFzZQotICAgICAgICAgICAgICAgIGJ5IHRhZyAoaS5lLiA8ZmlsZW5hbWU+JkRJU1RST19SRUxfVEFHOzwvZmlsZW5hbWU+KToKLSAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3kKLSAgICAgQ2xvbmluZyBpbnRvICdwb2t5Jy4uLgotICAgICByZW1vdGU6IENvdW50aW5nIG9iamVjdHM6IDM2MTc4MiwgZG9uZS4KLSAgICAgcmVtb3RlOiBDb21wcmVzc2luZyBvYmplY3RzOiAxMDAlICg4NzEwMC84NzEwMCksIGRvbmUuCi0gICAgIHJlbW90ZTogVG90YWwgMzYxNzgyIChkZWx0YSAyNjg2MTkpLCByZXVzZWQgMzYxNDM5IChkZWx0YSAyNjgyNzcpCi0gICAgIFJlY2VpdmluZyBvYmplY3RzOiAxMDAlICgzNjE3ODIvMzYxNzgyKSwgMTMxLjk0IE1pQiB8IDYuODggTWlCL3MsIGRvbmUuCi0gICAgIFJlc29sdmluZyBkZWx0YXM6IDEwMCUgKDI2ODYxOS8yNjg2MTkpLCBkb25lLgotICAgICBDaGVja2luZyBjb25uZWN0aXZpdHkuLi4gZG9uZS4KLSAgICAgJCBnaXQgY2hlY2tvdXQgdGFncy8mRElTVFJPX1JFTF9UQUc7IC1iIHBva3lfJkRJU1RSTzsKLSAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBHaXQgPGZpbGVuYW1lPmNoZWNrb3V0PC9maWxlbmFtZT4gY29tbWFuZAotICAgICAgICAgICAgICAgIGNyZWF0ZXMgYSBsb2NhbCBicmFuY2ggbmFtZWQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reV8mRElTVFJPOzwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIFRoZSBmaWxlcyBhdmFpbGFibGUgdG8geW91IGluIHRoYXQgYnJhbmNoIGV4YWN0bHkgbWF0Y2ggdGhlCi0gICAgICAgICAgICAgICAgcmVwb3NpdG9yeSdzIGZpbGVzIGluIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4mRElTVFJPX05BTUVfTk9fQ0FQOzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgYnJhbmNoIGF0IHRoZSB0aW1lIG9mIHRoZSBZb2N0byBQcm9qZWN0ICZESVNUUk87Ci0gICAgICAgICAgICAgICAgcmVsZWFzZS4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgUmF0aGVyIHRoYW4gY2hlY2tpbmcgb3V0IHRoZSBlbnRpcmUgZGV2ZWxvcG1lbnQgYnJhbmNoCi0gICAgICAgICAgICAgICAgICAgIG9mIGEgcmVsZWFzZSAoaS5lLiB0aGUgdGlwKSwgd2hpY2ggY291bGQgYmUgY29udGludW91c2x5Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5naW5nIHdoaWxlIHlvdSBhcmUgZG9pbmcgeW91ciBkZXZlbG9wbWVudCwgeW91IHdvdWxkCi0gICAgICAgICAgICAgICAgICAgIGNoZWNrIG91dCBhIGJyYW5jaCBiYXNlZCBvbiBhIHJlbGVhc2UgdGFnIGFzIHNob3duIGluCi0gICAgICAgICAgICAgICAgICAgIHRoZSBwcmV2aW91cyBleGFtcGxlLgotICAgICAgICAgICAgICAgICAgICBEb2luZyBzbyBwcm92aWRlcyB5b3Ugd2l0aCBhbiB1bmNoYW5naW5nLCBzdGFibGUgc2V0IG9mCi0gICAgICAgICAgICAgICAgICAgIGZpbGVzLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgRm9yIG1vcmUgb3B0aW9ucyBhbmQgaW5mb3JtYXRpb24gYWJvdXQgYWNjZXNzaW5nIFlvY3RvCi0gICAgICAgICAgICAgICAgUHJvamVjdCByZWxhdGVkIHJlcG9zaXRvcmllcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyN3b3JraW5nLXdpdGgteW9jdG8tcHJvamVjdC1zb3VyY2UtZmlsZXMnPldvcmtpbmcgV2l0aCBZb2N0byBQcm9qZWN0IFNvdXJjZSBGaWxlczwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3FzLWJ1aWxkaW5nLWltYWdlcyc+Ci0gICAgICAgIDx0aXRsZT5CdWlsZGluZyBJbWFnZXM8L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgWW91IGFyZSBub3cgcmVhZHkgdG8gZ2l2ZSB0aGUgWW9jdG8gUHJvamVjdCBhIHRyeS4KLSAgICAgICAgICAgIEZvciB0aGlzIGV4YW1wbGUsIHlvdSB3aWxsIGJlIHVzaW5nIHRoZSBjb21tYW5kIGxpbmUgdG8gYnVpbGQKLSAgICAgICAgICAgIHlvdXIgaW1hZ2VzLgotICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgQSBncmFwaGljYWwgdXNlciBpbnRlcmZhY2UgdG8gdGhlIFlvY3RvIFByb2plY3QgaXMgYXZhaWxhYmxlCi0gICAgICAgICAgICAgICAgdGhyb3VnaAotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3RvYXN0ZXItdGVybSc+VG9hc3RlcjwvdWxpbms+LgotICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19UT0FTVF9VUkw7Jz5Ub2FzdGVyIFVzZXIgTWFudWFsPC91bGluaz4KLSAgICAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIHJlbWFpbmRlciBvZiB0aGlzIHF1aWNrIHN0YXJ0IHN0ZXBzIHlvdSB0aHJvdWdoIHRoZQotICAgICAgICAgICAgZm9sbG93aW5nOgotICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEJ1aWxkIGEgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPiByZWZlcmVuY2UgaW1hZ2UKLSAgICAgICAgICAgICAgICAgICAgYW5kIHJ1biBpdCBpbiB0aGUgUUVNVSBlbXVsYXRvci4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICBFYXNpbHkgY2hhbmdlIGNvbmZpZ3VyYXRpb25zIHNvIHRoYXQgeW91IGNhbiBxdWlja2x5Ci0gICAgICAgICAgICAgICAgICAgIGNyZWF0ZSBhIHNlY29uZCBpbWFnZSB0aGF0IHlvdSBjYW4gbG9hZCBvbnRvIGJvb3RhYmxlCi0gICAgICAgICAgICAgICAgICAgIG1lZGlhIGFuZCBhY3R1YWxseSBib290IHRhcmdldCBoYXJkd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIHVzZXMgdGhlIE1pbm5vd0JvYXJkCi0gICAgICAgICAgICAgICAgICAgIFR1cmJvdC1jb21wYXRpYmxlIGJvYXJkcy4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIFRoZSBzdGVwcyBpbiB0aGUgZm9sbG93aW5nIHR3byBzZWN0aW9ucyBkbyBub3QgcHJvdmlkZSBkZXRhaWwsCi0gICAgICAgICAgICAgICAgYnV0IHJhdGhlciBwcm92aWRlIG1pbmltYWwsIHdvcmtpbmcgY29tbWFuZHMgYW5kIGV4YW1wbGVzCi0gICAgICAgICAgICAgICAgZGVzaWduZWQgdG8ganVzdCBnZXQgeW91IHN0YXJ0ZWQuCi0gICAgICAgICAgICAgICAgRm9yIG1vcmUgZGV0YWlscywgc2VlIHRoZSBhcHByb3ByaWF0ZSBtYW51YWxzIGluIHRoZQotICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBtYW51YWwgc2V0PC91bGluaz4uCi0gICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nYnVpbGRpbmctYW4taW1hZ2UtZm9yLWVtdWxhdGlvbic+Ci0gICAgICAgICAgICA8dGl0bGU+QnVpbGRpbmcgYW4gSW1hZ2UgZm9yIEVtdWxhdGlvbjwvdGl0bGU+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIHRvIGJ1aWxkIHlvdXIgaW1hZ2UuCi0gICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY3JlYXRlcyBhbiBlbnRpcmUgTGludXgKLSAgICAgICAgICAgICAgICBkaXN0cmlidXRpb24sIGluY2x1ZGluZyB0aGUgdG9vbGNoYWluLCBmcm9tIHNvdXJjZS4KLSAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXMgYWJvdXQgTmV0d29yayBQcm94aWVzPC90aXRsZT4KLSAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgYnVpbGQgcHJvY2VzcyBzZWFyY2hlcyBmb3Igc291cmNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSB1c2luZyBhIHByZS1kZXRlcm1pbmVkIG9yZGVyIHRocm91Z2ggYSBzZXQgb2YKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB3b3JraW5nIGJlaGluZCBhIGZpcmV3YWxsIGFuZCB5b3VyIGJ1aWxkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCBpcyBub3Qgc2V0IHVwIGZvciBwcm94aWVzLCB5b3UgY291bGQgZW5jb3VudGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvYmxlbXMgd2l0aCB0aGUgYnVpbGQgcHJvY2VzcyB3aGVuIGZldGNoaW5nIHNvdXJjZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgKGUuZy4gZmV0Y2hlciBmYWlsdXJlcyBvciBHaXQgZmFpbHVyZXMpLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkbyBub3Qga25vdyB5b3VyIHByb3h5IHNldHRpbmdzLCBjb25zdWx0IHlvdXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbCBuZXR3b3JrIGluZnJhc3RydWN0dXJlIHJlc291cmNlcyBhbmQgZ2V0IHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGdvb2Qgc3RhcnRpbmcgcG9pbnQgY291bGQgYWxzbyBiZSB0byBjaGVjayB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2ViIGJyb3dzZXIgc2V0dGluZ3MuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRmluYWxseSwgeW91IGNhbiBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBiZWhpbmQgYSBmaXJld2FsbCBpbiB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZmVyZW5jZSBNYW51YWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNob3ctZG9lcy10aGUteW9jdG8tcHJvamVjdC1vYnRhaW4tc291cmNlLWNvZGUtYW5kLXdpbGwtaXQtd29yay1iZWhpbmQtbXktZmlyZXdhbGwtb3ItcHJveHktc2VydmVyJz5GQVE8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBvbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9Xb3JraW5nX0JlaGluZF9hX05ldHdvcmtfUHJveHknPldvcmtpbmcgQmVoaW5kIGEgTmV0d29yayBQcm94eTwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpa2kgcGFnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CZSBTdXJlIFlvdXIgQnVpbGQgSG9zdCBpcyBTZXQgVXA6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBzdGVwcyB0byBidWlsZCBhbiBpbWFnZSBpbiB0aGlzIHNlY3Rpb24gZGVwZW5kIG9uCi0gICAgICAgICAgICAgICAgICAgICAgICB5b3VyIGJ1aWxkIGhvc3QgYmVpbmcgcHJvcGVybHkgc2V0IHVwLgotICAgICAgICAgICAgICAgICAgICAgICAgQmUgc3VyZSB5b3UgaGF2ZSB3b3JrZWQgdGhyb3VnaCB0aGUgcmVxdWlyZW1lbnRzCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmliZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0neXAtcmVzb3VyY2VzJz5TZXR0aW5nIFVwIHRvIFVzZSB0aGUgWW9jdG8gUHJvamVjdDwvbGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DaGVjayBPdXQgWW91ciBCcmFuY2g6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgeW91IGFyZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikgYW5kIHRoZW4gY2hlY2sgb3V0Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnJhbmNoIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGF0ZXN0IFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgY2Qgfi9wb2t5Ci0gICAgICQgZ2l0IGNoZWNrb3V0IC1iICZESVNUUk9fTkFNRV9OT19DQVA7IG9yaWdpbi8mRElTVFJPX05BTUVfTk9fQ0FQOwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgR2l0J3MgPGZpbGVuYW1lPmNoZWNrb3V0PC9maWxlbmFtZT4gY29tbWFuZCBjaGVja3Mgb3V0Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgY3VycmVudCBZb2N0byBQcm9qZWN0IHJlbGVhc2UgaW50byBhIGxvY2FsIGJyYW5jaAotICAgICAgICAgICAgICAgICAgICAgICAgd2hvc2UgbmFtZSBtYXRjaGVzIHRoZSByZWxlYXNlIChpLmUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JkRJU1RST19OQU1FX05PX0NBUDs8L2ZpbGVuYW1lPikuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgbG9jYWwgYnJhbmNoIHRyYWNrcyB0aGUgdXBzdHJlYW0gYnJhbmNoIG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgc2FtZSBuYW1lLgotICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRpbmcgeW91ciBvd24gYnJhbmNoIGJhc2VkIG9uIHRoZSByZWxlYXNlZAotICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoIGVuc3VyZXMgeW91IGFyZSB1c2luZyB0aGUgbGF0ZXN0IGZpbGVzIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCByZWxlYXNlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Jbml0aWFsaXplIHRoZSBCdWlsZCBFbnZpcm9ubWVudDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgUnVuIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgdG8gZGVmaW5lIHRoZSBPcGVuRW1iZWRkZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGVudmlyb25tZW50IG9uIHlvdXIgYnVpbGQgaG9zdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzb3VyY2UgJk9FX0lOSVRfRklMRTsKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFtb25nIG90aGVyIHRoaW5ncywgdGhlIHNjcmlwdCBjcmVhdGVzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIDxmaWxlbmFtZT5idWlsZDwvZmlsZW5hbWU+IGluIHRoaXMgY2FzZQotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGlzIGxvY2F0ZWQgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgICAgICBBZnRlciB0aGUgc2NyaXB0IHJ1bnMsIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQotICAgICAgICAgICAgICAgICAgICAgICAgaXMgc2V0IHRvIHRoZSBCdWlsZCBEaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICBMYXRlciwgd2hlbiB0aGUgYnVpbGQgY29tcGxldGVzLCB0aGUgQnVpbGQgRGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250YWlucyBhbGwgdGhlIGZpbGVzIGNyZWF0ZWQgZHVyaW5nIHRoZSBidWlsZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXhhbWluZSBZb3VyIExvY2FsIENvbmZpZ3VyYXRpb24gRmlsZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB5b3Ugc2V0IHVwIHRoZSBidWlsZCBlbnZpcm9ubWVudCwgYSBsb2NhbAotICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlIG5hbWVkCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGJlY29tZXMgYXZhaWxhYmxlIGluCi0gICAgICAgICAgICAgICAgICAgICAgICBhIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gc3ViZGlyZWN0b3J5IG9mIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgRGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICAgICAgQmVmb3JlIHVzaW5nIEJpdEJha2UgdG8gc3RhcnQgdGhlIGJ1aWxkLCB5b3UgY2FuCi0gICAgICAgICAgICAgICAgICAgICAgICBsb29rIGF0IHRoaXMgZmlsZSBhbmQgYmUgc3VyZSB5b3VyIGdlbmVyYWwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25zIGFyZSBob3cgeW91IHdhbnQgdGhlbToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUbyBoZWxwIGNvbnNlcnZlIGRpc2sgc3BhY2UgZHVyaW5nIGJ1aWxkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBhZGQgdGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgdG8geW91cgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0J3MgY29uZmlndXJhdGlvbiBmaWxlLCB3aGljaCBmb3IgdGhpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFtcGxlIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5L2J1aWxkL2NvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpbmcgdGhpcyBzdGF0ZW1lbnQgZGVsZXRlcyB0aGUgd29yawotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgdXNlZCBmb3IgYnVpbGRpbmcgYSByZWNpcGUgb25jZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlIGlzIGJ1aWx0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIElOSEVSSVQgKz0gInJtX3dvcmsiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUgdGFyZ2V0IG1hY2hpbmUgZm9yIHRoZSBidWlsZCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBwcm9kdWNlcyBhbiBpbWFnZSB0aGF0IGNhbiBiZSB1c2VkIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBRRU1VIGVtdWxhdG9yIGFuZCBpcyB0YXJnZXRlZCBhdCBhbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHJhZGVtYXJrIGNsYXNzPSdyZWdpc3RlcmVkJz5JbnRlbDwvdHJhZGVtYXJrPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMi1iaXQgYmFzZWQgYXJjaGl0ZWN0dXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdXJ0aGVyIG9uIGluIHRoaXMgZXhhbXBsZSwgdGhpcyBkZWZhdWx0IGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc2lseSBjaGFuZ2VkIHRocm91Z2ggdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgc28gdGhhdCB5b3UgY2FuIHF1aWNrbHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgYW4gaW1hZ2UgZm9yIGEgZGlmZmVyZW50IG1hY2hpbmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5vdGhlciBjb25zaWRlcmF0aW9uIGJlZm9yZSB5b3UgYnVpbGQgaXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UgbWFuYWdlciB1c2VkIHdoZW4gY3JlYXRpbmcgdGhlIGltYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgc2VsZWN0cyB0aGUgUlBNIHBhY2thZ2UgbWFuYWdlci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBjb250cm9sIHRoaXMgY29uZmlndXJhdGlvbiBieSB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5QQUNLQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvdWxpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5TZWxlY3Rpb24gb2YgdGhlIHBhY2thZ2UgbWFuYWdlciBpcyBzZXBhcmF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHdoZXRoZXIgcGFja2FnZSBtYW5hZ2VtZW50IGlzIHVzZWQgYXQgcnVudGltZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgdGFyZ2V0IGltYWdlLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIGFkZGl0aW9uYWwgcGFja2FnZSBtYW5hZ2VyIHNlbGVjdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtcGFja2FnZSc+PGZpbGVuYW1lPnBhY2thZ2UuYmJjbGFzczwvZmlsZW5hbWU+PC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U3RhcnQgdGhlIEJ1aWxkOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb250aW51ZSB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBidWlsZCBhbiBPUyBpbWFnZQotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSB0YXJnZXQsIHdoaWNoIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4gaW4gdGhpcyBleGFtcGxlOgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSBudW1iZXIgb2YgcHJvY2Vzc29ycyBhbmQgY29yZXMsIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudCBvZiBSQU0sIHRoZSBzcGVlZCBvZiB5b3VyIEludGVybmV0IGNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgb3RoZXIgZmFjdG9ycywgdGhlIGJ1aWxkIHByb2Nlc3MgY291bGQgdGFrZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldmVyYWwgaG91cnMgdGhlIGZpcnN0IHRpbWUgeW91IHJ1biBpdC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdWJzZXF1ZW50IGJ1aWxkcyBydW4gbXVjaCBmYXN0ZXIgc2luY2UgcGFydHMgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgYXJlIGNhY2hlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlIGNvcmUtaW1hZ2Utc2F0bwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBleHBlcmllbmNlIGEgYnVpbGQgZXJyb3IgZHVlIHRvIHJlc291cmNlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wb3JhcmlseSBiZWluZyB1bmF2YWlsYWJsZSBhbmQgaXQgYXBwZWFycyB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIG5vdCBiZSBoYXZpbmcgdGhpcyBpc3N1ZSwgaXQgbWlnaHQgYmUgZHVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBjb21iaW5hdGlvbiBvZiBhIDQuMysgTGludXgga2VybmVsIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3lzdGVtZDwvZmlsZW5hbWU+IHZlcnNpb24gMjI4KwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiBzZWUgdGhpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vdW5peC5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvMjUzOTAzL2NyZWF0aW5nLXRocmVhZHMtZmFpbHMtd2l0aC1yZXNvdXJjZS10ZW1wb3JhcmlseS11bmF2YWlsYWJsZS13aXRoLTQtMy1rZXJuZWwnPmxpbms8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW5mb3JtYXRpb24pLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUbyB3b3JrIGFyb3VuZCB0aGlzIGlzc3VlLCB5b3UgY2FuIHRyeSBlaXRoZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnkgdGhlIGJ1aWxkIGFnYWluLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGlmeSB0aGUgIkRlZmF1bHRUYXNrc01heCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3lzdGVtZDwvZmlsZW5hbWU+IHBhcmFtZXRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHVuY29tbWVudGluZyBpdCBhbmQgc2V0dGluZyBpdCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmZpbml0eSIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoaXMgcGFyYW1ldGVyIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zeXN0ZW0uY29uZjwvZmlsZW5hbWU+IGZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGVkIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9ldGMvc3lzdGVtZDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gbW9zdCBzeXN0ZW1zLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN1c2luZ3Bva3ktY29tcG9uZW50cy1iaXRiYWtlJz5CaXRCYWtlPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwsIG9yIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I2JpdGJha2UtdXNlci1tYW51YWwtY29tbWFuZCc+Qml0QmFrZSBDb21tYW5kPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIG90aGVyIHRhcmdldHMsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtaW1hZ2VzJz5JbWFnZXM8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2ltdWxhdGUgWW91ciBJbWFnZSBVc2luZyBRRU1VOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBPbmNlIHRoaXMgcGFydGljdWxhciBpbWFnZSBpcyBidWlsdCwgeW91IGNhbiBzdGFydCBRRU1VCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgcnVuIHRoZSBpbWFnZToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBydW5xZW11IHFlbXV4ODYKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIGxlYXJuIG1vcmUgYWJvdXQgcnVubmluZyBRRU1VLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0iJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LW1hbnVhbC1xZW11Ij5Vc2luZyB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RXhpdCBRRU1VOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBFeGl0IFFFTVUgYnkgZWl0aGVyIGNsaWNraW5nIG9uIHRoZSBzaHV0ZG93biBpY29uIG9yIGJ5Ci0gICAgICAgICAgICAgICAgICAgICAgICB0eXBpbmcgPGZpbGVuYW1lPkN0cmwtQzwvZmlsZW5hbWU+IGluIHRoZSBRRU1VCi0gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2NyaXB0IHdpbmRvdyBmcm9tIHdoaWNoIHlvdSBldm9rZWQgUUVNVS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgIDwvc2VjdGlvbj4KLQotICAgICAgICA8c2VjdGlvbiBpZD0nYnVpbGRpbmctYW4taW1hZ2UtZm9yLWhhcmR3YXJlJz4KLSAgICAgICAgICAgIDx0aXRsZT5CdWlsZGluZyBhbiBJbWFnZSBmb3IgSGFyZHdhcmU8L3RpdGxlPgotCi0gICAgICAgICAgICA8cGFyYSBpZD0ncXMtbWlubm93Ym9hcmQtZXhhbXBsZSc+Ci0gICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBzdGVwcyBzaG93IGhvdyBlYXN5IGl0IGlzIHRvIHNldCB1cCB0byBidWlsZCBhbgotICAgICAgICAgICAgICAgIGltYWdlIGZvciBhIG5ldyBtYWNoaW5lLgotICAgICAgICAgICAgICAgIFRoZXNlIHN0ZXBzIGJ1aWxkIGFuIGltYWdlIGZvciB0aGUgTWlubm93Qm9hcmQgVHVyYm90LCB3aGljaCBpcwotICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBieSB0aGUgWW9jdG8gUHJvamVjdCBhbmQgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiA8ZmlsZW5hbWU+aW50ZWwtY29yZWk3LTY0PC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPmludGVsLWNvcmUyLTMyPC9maWxlbmFtZT4gQm9hcmQgU3VwcG9ydCBQYWNrYWdlcwotICAgICAgICAgICAgICAgIChCU1BzKS4KLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIE1pbm5vd0JvYXJkIFR1cmJvdCBzaGlwcyB3aXRoIDY0LWJpdCBmaXJtd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gdXNlIHRoZSBib2FyZCBpbiAzMi1iaXQgbW9kZSwgeW91IG11c3QKLSAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9maXJtd2FyZS5pbnRlbC5jb20vcHJvamVjdHMvbWlubm93Ym9hcmQtbWF4Jz4zMi1iaXQgZmlybXdhcmU8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNyZWF0ZSBhIExvY2FsIENvcHkgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IFJlcG9zaXRvcnk6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkaW5nIGFuIGltYWdlIGZvciB0aGUgTWlubm93Qm9hcmQgVHVyYm90IHJlcXVpcmVzCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gbGF5ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5naXQgY2xvbmU8L2ZpbGVuYW1lPiBjb21tYW5kIHRvIGNyZWF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgYSBsb2NhbCBjb3B5IG9mIHRoZSByZXBvc2l0b3J5IGluc2lkZSB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4sCi0gICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IGluIHRoaXMgZXhhbXBsZToKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBjZCAkSE9NRS9wb2t5Ci0gICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL21ldGEtaW50ZWwKLSAgICAgQ2xvbmluZyBpbnRvICdtZXRhLWludGVsJy4uLgotICAgICByZW1vdGU6IENvdW50aW5nIG9iamVjdHM6IDE0MDM5LCBkb25lLgotICAgICByZW1vdGU6IENvbXByZXNzaW5nIG9iamVjdHM6IDEwMCUgKDQ0NzEvNDQ3MSksIGRvbmUuCi0gICAgIHJlbW90ZTogVG90YWwgMTQwMzkgKGRlbHRhIDgxMzApLCByZXVzZWQgMTM4MzcgKGRlbHRhIDc5NDcpCi0gICAgIFJlY2VpdmluZyBvYmplY3RzOiAxMDAlICgxNDAzOS8xNDAzOSksIDQuMjcgTWlCIHwgMy45OCBNaUIvcywgZG9uZS4KLSAgICAgUmVzb2x2aW5nIGRlbHRhczogMTAwJSAoODEzMC84MTMwKSwgZG9uZS4KLSAgICAgQ2hlY2tpbmcgY29ubmVjdGl2aXR5Li4uIGRvbmUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0IHdoZW4geW91IGNsb25lIGEgR2l0IHJlcG9zaXRvcnksIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIm1hc3RlciIgYnJhbmNoIGlzIGNoZWNrZWQgb3V0LgotICAgICAgICAgICAgICAgICAgICAgICAgQmVmb3JlIHlvdSBidWlsZCB5b3VyIGltYWdlIHRoYXQgdXNlcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gbGF5ZXIsIHlvdSBtdXN0IGJlCi0gICAgICAgICAgICAgICAgICAgICAgICBzdXJlIHRoYXQgYm90aCByZXBvc2l0b3JpZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikgYXJlIHVzaW5nIHRoZSBzYW1lIHJlbGVhc2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgQmVjYXVzZSB5b3UgdXNlZCB0aGUgPGZpbGVuYW1lPiZESVNUUk9fUkVMX1RBRzs8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgdGFnIHdoZW4geW91IGNoZWNrZWQgb3V0IHRoZSA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5IGJ5IHRhZywgeW91IHNob3VsZCB1c2UgYQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgdGFnIHRoYXQgY29ycmVzcG9uZHMgd2l0aCB0aGUgcmVsZWFzZSB5b3UgdXNlZCBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHlvdSBuZWVkIHRvIGNoZWNrb3V0IG91dCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8ZmlsZW5hbWU+Jk1FVEFJTlRFTFZFUlNJT047LSZESVNUUk9fTkFNRV9OT19DQVA7LSZZT0NUT19ET0NfVkVSU0lPTjs8L2ZpbGVuYW1lPiIKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaCBhZnRlciBjbG9uaW5nIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT46Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgY2QgJEhPTUUvcG9reS9tZXRhLWludGVsCi0gICAgICQgZ2l0IGNoZWNrb3V0IHRhZ3MvJk1FVEFJTlRFTFZFUlNJT047LSZESVNUUk9fTkFNRV9OT19DQVA7LSZZT0NUT19ET0NfVkVSU0lPTjsgLWIgbWV0YS1pbnRlbC0mRElTVFJPX05BTUVfTk9fQ0FQOy0mWU9DVE9fRE9DX1ZFUlNJT047Ci0gICAgIFN3aXRjaGVkIHRvIGEgbmV3IGJyYW5jaCAnbWV0YS1pbnRlbC0mRElTVFJPX05BTUVfTk9fQ0FQOy0mWU9DVE9fRE9DX1ZFUlNJT047JwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIEdpdCA8ZmlsZW5hbWU+Y2hlY2tvdXQ8L2ZpbGVuYW1lPiBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVzIGEgbG9jYWwgYnJhbmNoIG5hbWVkCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbC0mRElTVFJPX05BTUVfTk9fQ0FQOy0mWU9DVE9fRE9DX1ZFUlNJT047PC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgaGF2ZSB0aGUgb3B0aW9uIHRvIG5hbWUgeW91ciBsb2NhbCBicmFuY2ggd2hhdGV2ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIHlvdSB3YW50IGJ5IHByb3ZpZGluZyBhbnkgbmFtZSB5b3UgbGlrZSBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICJtZXRhLWludGVsLSZESVNUUk9fTkFNRV9OT19DQVA7LSZZT0NUT19ET0NfVkVSU0lPTjsiCi0gICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgYWJvdmUgZXhhbXBsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29uZmlndXJlIHRoZSBCdWlsZDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgVG8gY29uZmlndXJlIHRoZSBidWlsZCwgeW91IGVkaXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlcywgYm90aCBvZiB3aGljaCBhcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0ZWQgaW4gdGhlIDxmaWxlbmFtZT5idWlsZC9jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5IZXJlIGlzIGEgcXVpY2sgd2F5IHRvIG1ha2UgdGhlIGVkaXRzLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZpcnN0IGNvbW1hbmQgdXNlcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVycyBhZGQtbGF5ZXI8L2ZpbGVuYW1lPiBjb21tYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICB0byBhZGQgdGhlIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLCB3aGljaCBjb250YWlucyB0aGUgPGZpbGVuYW1lPmludGVsLWNvcmUqPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEJTUHMgdG8gdGhlIGJ1aWxkLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHNlY29uZCBjb21tYW5kIHNlbGVjdHMgdGhlIEJTUCBieSBzZXR0aW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgY2QgJEhPTUUvcG9reS9idWlsZAotICAgICAkIGJpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAiJEhPTUUvcG9reS9tZXRhLWludGVsIgotICAgICAkIGVjaG8gJ01BQ0hJTkUgPSAiaW50ZWwtY29yZWk3LTY0IicgPj4gY29uZi9sb2NhbC5jb25mCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgYSA2NC1iaXQgYnVpbGQsIHVzZSB0aGUgZm9sbG93aW5nOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBlY2hvICdNQUNISU5FID0gImludGVsLWNvcmVpNy02NCInID4+IGNvbmYvbG9jYWwuY29uZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgMzItYml0IGltYWdlcywgdXNlIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGVjaG8gJ01BQ0hJTkUgPSAiaW50ZWwtY29yZTItMzIiJyA+PiBjb25mL2xvY2FsLmNvbmYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkJ1aWxkIGFuIEltYWdlIGZvciBNaW5ub3dCb2FyZAotICAgICAgICAgICAgICAgICAgICAgICAgVHVyYm90OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgdHlwZSBvZiBpbWFnZSB5b3UgYnVpbGQgZGVwZW5kcyBvbiB5b3VyIGdvYWxzLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBwcmV2aW91cyBidWlsZCBjcmVhdGVkIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLXNhdG88L2ZpbGVuYW1lPiBpbWFnZSwgd2hpY2ggaXMgYW4KLSAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlIHdpdGggU2F0byBzdXBwb3J0LgotICAgICAgICAgICAgICAgICAgICAgICAgSXQgaXMgcG9zc2libGUgdG8gYnVpbGQgbWFueSBpbWFnZSB0eXBlcyBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBNaW5ub3dCb2FyZCBUdXJib3QuCi0gICAgICAgICAgICAgICAgICAgICAgICBTb21lIHBvc3NpYmlsaXRpZXMgYXJlIDxmaWxlbmFtZT5jb3JlLWltYWdlLWJhc2U8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGEgY29uc29sZS1vbmx5IGltYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgQW5vdGhlciBjaG9pY2UgY291bGQgYmUgYQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtZnVsbC1jbWRsaW5lPC9maWxlbmFtZT4sIHdoaWNoIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICBhbm90aGVyIGNvbnNvbGUtb25seSBpbWFnZSBidXQgaGFzIG1vcmUgZnVsbC1mZWF0dXJlcwotICAgICAgICAgICAgICAgICAgICAgICAgTGludXggc3lzdGVtIGZ1bmN0aW9uYWxpdHkgaW5zdGFsbGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHR5cGVzIG9mIGltYWdlcyB5b3UgY2FuIGJ1aWxkIHVzaW5nIHRoZSBZb2N0bwotICAgICAgICAgICAgICAgICAgICAgICAgUHJvamVjdCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1pbWFnZXMnPkltYWdlczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgY2hhcHRlciBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkJlY2F1c2UgY29uZmlndXJhdGlvbiBjaGFuZ2VzIGFyZSBtaW5pbWFsIHRvIHNldCB1cAotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgc2Vjb25kIGJ1aWxkLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjYW4KLSAgICAgICAgICAgICAgICAgICAgICAgIHJlLXVzZSBmaWxlcyBmcm9tIHByZXZpb3VzIGJ1aWxkcyBhcyBtdWNoIGFzIHBvc3NpYmxlLgotICAgICAgICAgICAgICAgICAgICAgICAgUmUtdXNpbmcgZmlsZXMgbWVhbnMgdGhpcyBzZWNvbmQgYnVpbGQgd2lsbCBiZSBtdWNoIGZhc3RlcgotICAgICAgICAgICAgICAgICAgICAgICAgdGhhbiBhbiBpbml0aWFsIGJ1aWxkLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoaXMgZXhhbXBsZSwgdGhlIDxmaWxlbmFtZT5jb3JlLWltYWdlLWJhc2U8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgaXMgYnVpbHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgYml0YmFrZSBjb3JlLWltYWdlLWJhc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZXhwZXJpZW5jZSBhIGJ1aWxkIGVycm9yIGR1ZSB0byByZXNvdXJjZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcG9yYXJpbHkgYmVpbmcgdW5hdmFpbGFibGUgYW5kIGl0IGFwcGVhcnMgeW91Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZCBub3QgYmUgaGF2aW5nIHRoaXMgaXNzdWUsIGl0IG1pZ2h0IGJlIGR1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgY29tYmluYXRpb24gb2YgYSA0LjMrIExpbnV4IGtlcm5lbCBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnN5c3RlbWQ8L2ZpbGVuYW1lPiB2ZXJzaW9uIDIyOCsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4gc2VlIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL3VuaXguc3RhY2tleGNoYW5nZS5jb20vcXVlc3Rpb25zLzI1MzkwMy9jcmVhdGluZy10aHJlYWRzLWZhaWxzLXdpdGgtcmVzb3VyY2UtdGVtcG9yYXJpbHktdW5hdmFpbGFibGUtd2l0aC00LTMta2VybmVsJz5saW5rPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGluZm9ybWF0aW9uKS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG8gd29yayBhcm91bmQgdGhpcyBpc3N1ZSwgeW91IGNhbiB0cnkgZWl0aGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ5IHRoZSBidWlsZCBhZ2Fpbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb2RpZnkgdGhlICJEZWZhdWx0VGFza3NNYXgiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnN5c3RlbWQ8L2ZpbGVuYW1lPiBwYXJhbWV0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSB1bmNvbW1lbnRpbmcgaXQgYW5kIHNldHRpbmcgaXQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5maW5pdHkiLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGlzIHBhcmFtZXRlciBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+c3lzdGVtLmNvbmY8L2ZpbGVuYW1lPiBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRlZCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZXRjL3N5c3RlbWQ8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIG1vc3Qgc3lzdGVtcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgT25jZSB0aGUgYnVpbGQgY29tcGxldGVzLCB0aGUgcmVzdWx0aW5nIGNvbnNvbGUtb25seSBpbWFnZQotICAgICAgICAgICAgICAgICAgICAgICAgaXMgbG9jYXRlZCBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5IGhlcmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIHRtcC9kZXBsb3kvaW1hZ2VzL2ludGVsLWNvcmVpNy02NC9jb3JlLWltYWdlLWJhc2UtaW50ZWwtY29yZWk3LTY0LndpYwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Xcml0ZSB0aGUgSW1hZ2U6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gd3JpdGUgdGhlIGltYWdlIGp1c3QgYnVpbHQgdG8gYSBib290YWJsZSBtZWRpYQotICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gYSBVU0Iga2V5LCBTQVRBIGRyaXZlLCBTRCBjYXJkLCBldGMuKSB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZDwvZmlsZW5hbWU+IHV0aWxpdHk6Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyBkZCBpZj10bXAvZGVwbG95L2ltYWdlcy9pbnRlbC1jb3JlaTctNjQvY29yZS1pbWFnZS1iYXNlLWludGVsLWNvcmVpNy02NC53aWMgb2Y9VEFSR0VUX0RFVklDRQotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhlIHByZXZpb3VzIGNvbW1hbmQsIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRBUkdFVF9ERVZJQ0U8L2ZpbGVuYW1lPiBpcyB0aGUgZGV2aWNlIG5vZGUgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBob3N0IG1hY2hpbmUgKGUuZy4gPGZpbGVuYW1lPi9kZXYvc2RjPC9maWxlbmFtZT4sIHdoaWNoCi0gICAgICAgICAgICAgICAgICAgICAgICBpcyBtb3N0IGxpa2VseSBhIFVTQiBzdGljaywgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZGV2L21tY2JsazA8L2ZpbGVuYW1lPiwgd2hpY2ggaXMgbW9zdCBsaWtlbHkgYW4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNEIGNhcmQpLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Cb290IHRoZSBIYXJkd2FyZTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgV2l0aCB0aGUgYm9vdCBkZXZpY2UgcHJvdmlzaW9uZWQsIHlvdSBjYW4gaW5zZXJ0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWEgaW50byB0aGUgTWlubm93Qm9hcmQgVHVyYm90IGFuZCBib290IHRoZSBoYXJkd2FyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBib2FyZCBzaG91bGQgYXV0b21hdGljYWxseSBkZXRlY3QgdGhlIG1lZGlhIGFuZCBib290IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgYm9vdGxvYWRlciBhbmQgc3Vic2VxdWVudGx5IHRoZSBvcGVyYXRpbmcgc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB0aGUgYm9hcmQgZG9lcyBub3QgYm9vdCBhdXRvbWF0aWNhbGx5LCB5b3UgY2FuCi0gICAgICAgICAgICAgICAgICAgICAgICBib290IGl0IG1hbnVhbGx5IGZyb20gdGhlIEVGSSBzaGVsbCBhcyBmb2xsb3dzOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTaGVsbD4gY29ubmVjdCAtcgotICAgICBTaGVsbD4gbWFwIC1yCi0gICAgIFNoZWxsPiBmczA6Ci0gICAgIFNoZWxsPiBib290eDY0Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYSAzMi1iaXQgaW1hZ2UgdXNlIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTaGVsbD4gYm9vdGlhMzIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgotICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L3NlY3Rpb24+Ci0gICAgPC9zZWN0aW9uPgotCi0gICAgPHNlY3Rpb24gaWQ9J3FzLW5leHQtc3RlcHMnPgotICAgICAgICA8dGl0bGU+TmV4dCBTdGVwczwvdGl0bGU+Ci0KLSAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBJZiB5b3UgY29tcGxldGVkIGFsbCB0aGUgc3RlcHMgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24gdGhlbgotICAgICAgICAgICAgY29uZ3JhdHVsYXRpb25zIQotICAgICAgICAgICAgV2hhdCBub3c/Ci0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIERlcGVuZGluZyBvbiB3aGF0IHlvdSBwcmltYXJ5IGludGVyZXN0cyBhcmUgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCwKLSAgICAgICAgICAgIHlvdSBjb3VsZCBjb25zaWRlciBhbnkgb2YgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VmlzaXQgdGhlIFlvY3RvIFByb2plY3QgV2ViIFNpdGU6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgVGhlIG9mZmljaWFsCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsnPllvY3RvIFByb2plY3Q8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICB3ZWIgc2l0ZSBjb250YWlucyBpbmZvcm1hdGlvbiBvbiB0aGUgZW50aXJlIHByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgIFZpc2l0aW5nIHRoaXMgc2l0ZSBpcyBhIGdvb2Qgd2F5IHRvIGZhbWlsaWFyaXplIHlvdXJzZWxmCi0gICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIG92ZXJhbGwgcHJvamVjdC4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TG9vayBUaHJvdWdoIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNkZXYtbWFudWFsLWludHJvJz5Zb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbDwvdWxpbms+OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFRoaXMgbWFudWFsIGNvbnRhaW5zIHByb2NlZHVyYWwgaW5mb3JtYXRpb24gZ3JvdXBlZCB0bwotICAgICAgICAgICAgICAgICAgICBoZWxwIHlvdSBnZXQgc2V0IHVwLCB3b3JrIHdpdGggbGF5ZXJzLCBjdXN0b21pemUgaW1hZ2VzLAotICAgICAgICAgICAgICAgICAgICB3cml0ZSBuZXcgcmVjaXBlcywgd29yayB3aXRoIGxpYnJhcmllcywgYW5kIHVzZSBRRU1VLgotICAgICAgICAgICAgICAgICAgICBUaGUgaW5mb3JtYXRpb24gaXMgdGFzay1iYXNlZCBhbmQgc3BhbnMgdGhlIGJyZWFkdGggb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxvb2sgVGhyb3VnaCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICBtYW51YWw6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgZGVzY3JpYmVzIGhvdyB0byB1c2UgYm90aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLXVzaW5nLXRoZS1zdGFuZGFyZC1zZGsnPnN0YW5kYXJkIFNESzwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIGFuZCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWV4dGVuc2libGUnPmV4dGVuc2libGUgU0RLPC91bGluaz4sCi0gICAgICAgICAgICAgICAgICAgIHdoaWNoIGFyZSB1c2VkIHByaW1hcmlseSBmb3IgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgbWFudWFsIGFsc28gcHJvdmlkZXMgZXhhbXBsZSB3b3JrZmxvd3MKLSAgICAgICAgICAgICAgICAgICAgdGhhdCB1c2UgdGhlIHBvcHVsYXIgPHRyYWRlbWFyayBjbGFzcz0ndHJhZGUnPkVjbGlwc2U8L3RyYWRlbWFyaz4KLSAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgYW5kIHRoYXQgdXNlIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3dvcmtmbG93LXVzaW5nLWVjbGlwc2UnPldvcmtmbG93IHVzaW5nIEVjbGlwc2XihKI8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyN1c2luZy1kZXZ0b29sLWluLXlvdXItc2RrLXdvcmtmbG93Jz5Vc2luZyA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGluIHlvdXIgU0RLIFdvcmtmbG93PC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zIGZvciBtb3JlIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MZWFybiBBYm91dCBLZXJuZWwgRGV2ZWxvcG1lbnQ6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gc2VlIGhvdyB0byB3b3JrIHdpdGggdGhlIGtlcm5lbCBhbmQKLSAgICAgICAgICAgICAgICAgICAgdW5kZXJzdGFuZCBZb2N0byBMaW51eCBrZXJuZWxzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0tFUk5FTF9ERVZfVVJMOyNrZXJuZWwtZGV2LWludHJvJz5Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWw8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgVGhpcyBtYW51YWwgcHJvdmlkZXMgaW5mb3JtYXRpb24gb24gaG93IHRvIHBhdGNoIHRoZQotICAgICAgICAgICAgICAgICAgICBrZXJuZWwsIG1vZGlmeSBrZXJuZWwgcmVjaXBlcywgYW5kIGNvbmZpZ3VyZSB0aGUga2VybmVsLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MZWFybiBBYm91dCBCb2FyZCBTdXBwb3J0IFBhY2thZ2VzIChCU1BzKTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBsZWFybiBhYm91dCBCU1BzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX0JTUF9VUkw7I2JzcCc+WW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2VzIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgbWFudWFsIGFsc28gcHJvdmlkZXMgYW4gZXhhbXBsZSBCU1AgY3JlYXRpb24gd29ya2Zsb3cuCi0gICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfQlNQX1VSTDsjZGV2ZWxvcGluZy1hLWJvYXJkLXN1cHBvcnQtcGFja2FnZS1ic3AnPiJEZXZlbG9waW5nIGEgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApPC91bGluaz4iCi0gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxlYXJuIEFib3V0IFRvYXN0ZXI6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgVG9hc3RlciBpcyBhIHdlYiBpbnRlcmZhY2UgdG8gdGhlIFlvY3RvIFByb2plY3QncwotICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gdXNpbmcgdGhpcyB0eXBlIG9mIGludGVyZmFjZSB0bwotICAgICAgICAgICAgICAgICAgICBjcmVhdGUgaW1hZ2VzLCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1RPQVNUX1VSTDsjdG9hc3Rlci1tYW51YWwtaW50cm8nPlRvYXN0ZXIgVXNlciBNYW51YWw8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SGF2ZSBBdmFpbGFibGUgdGhlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1tYW51YWwtaW50cm8nPllvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbDo8L3VsaW5rPjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFVubGlrZSB0aGUgcmVzdCBvZiB0aGUgWW9jdG8gUHJvamVjdCBtYW51YWwgc2V0LCB0aGlzIG1hbnVhbAotICAgICAgICAgICAgICAgICAgICBpcyBjb21wcmlzZWQgb2YgbWF0ZXJpYWwgc3VpdGVkIGZvciByZWZlcmVuY2UgcmF0aGVyIHRoYW4KLSAgICAgICAgICAgICAgICAgICAgcHJvY2VkdXJlcy4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBnZXQKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdXNpbmdwb2t5Jz5idWlsZCBkZXRhaWxzPC91bGluaz4sCi0gICAgICAgICAgICAgICAgICAgIGEKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZGV2ZWxvcG1lbnQtY29uY2VwdHMnPmNsb3NlciBsb29rPC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgYXQgaG93IHRoZSBwaWVjZXMgb2YgdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgd29yayB0b2dldGhlciwgaW5mb3JtYXRpb24gb24gdmFyaW91cwotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN0ZWNobmljYWwtZGV0YWlscyc+dGVjaG5pY2FsIGRldGFpbHM8L3VsaW5rPiwKLSAgICAgICAgICAgICAgICAgICAgZ3VpZGFuY2Ugb24KLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjbWlncmF0aW9uJz5taWdyYXRpbmcgdG8gYSBuZXdlciBZb2N0byBQcm9qZWN0IHJlbGVhc2U8L3VsaW5rPiwKLSAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlIG1hdGVyaWFsIG9uIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtc3RydWN0dXJlJz5kaXJlY3Rvcnkgc3RydWN0dXJlPC91bGluaz4sCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi1jbGFzc2VzJz5jbGFzc2VzPC91bGluaz4sCi0gICAgICAgICAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtdGFza3MnPnRhc2tzPC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgYWxzbyBjb250YWlucyBhIGZhaXJseQotICAgICAgICAgICAgICAgICAgICBjb21wcmVoZW5zaXZlCi0gICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi12YXJpYWJsZXMtZ2xvc3NhcnknPmdsb3NzYXJ5IG9mIHZhcmlhYmxlczwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIHVzZWQgd2l0aGluIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICA8L3BhcmE+Ci0gICAgPC9zZWN0aW9uPgotPC9hcnRpY2xlPgotPCEtLQotdmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NAotLS0+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktbHNiLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktbHNiLmNvbmYKaW5kZXggMjRjZmIwOC4uZWNmZTVkMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LWxzYi5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS1sc2IuY29uZgpAQCAtMTIsNCArMTIsNCBAQAogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9wbi1saW51eC15b2N0byA9ICIgZmVhdHVyZXMvbmZzZC9uZnNkLWVuYWJsZS5zY2MiCiAKICMgVXNlIHRoZSBMVFNJIEtlcm5lbCBmb3IgTFNCIFRlc3RpbmcKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvX2xpbnV4c3RkYmFzZSA/PSAiNC45JSIKK1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvX2xpbnV4c3RkYmFzZSA/PSAiNC4xNCUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktdGlueS5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LXRpbnkuY29uZgppbmRleCAyMDMyYmZkLi43YjIyYTEzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktdGlueS5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS10aW55LmNvbmYKQEAgLTM4LDcgKzM4LDcgQEAKICMgRGlzdHJvIGNvbmZpZyBpcyBldmFsdWF0ZWQgYWZ0ZXIgdGhlIG1hY2hpbmUgY29uZmlnLCBzbyB3ZSBoYXZlIHRvIGV4cGxpY2l0bHkKICMgc2V0IHRoZSBrZXJuZWwgcHJvdmlkZXIgdG8gb3ZlcnJpZGUgYSBtYWNoaW5lIGNvbmZpZy4KIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA9ICJsaW51eC15b2N0by10aW55IgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8tdGlueSA/PSAiNC4xMiUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0by10aW55ID89ICI0LjE0JSIKIAogIyBXZSBjYW4gdXNlIHBhY2thZ2Vncm91cC1jb3JlLWJvb3QsIGJ1dCBpbiB0aGUgZnV0dXJlIHdlIG1heSBuZWVkIGEgbmV3IHBhY2thZ2Vncm91cC1jb3JlLXRpbnkKICNQT0tZX0RFRkFVTFRfRVhUUkFfUkRFUEVORFMgKz0gInBhY2thZ2Vncm91cC1jb3JlLWJvb3QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3kuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS5jb25mCmluZGV4IDU3ZDAwYmMuLjdiMWYyNGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS5jb25mCkBAIC0xLDcgKzEsNyBAQAogRElTVFJPID0gInBva3kiCiBESVNUUk9fTkFNRSA9ICJQb2t5IChZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBEaXN0cm8pIgotRElTVFJPX1ZFUlNJT04gPSAiMi40LjIiCi1ESVNUUk9fQ09ERU5BTUUgPSAicm9ja28iCitESVNUUk9fVkVSU0lPTiA9ICIyLjUiCitESVNUUk9fQ09ERU5BTUUgPSAic3VtbyIKIFNES19WRU5ET1IgPSAiLXBva3lzZGsiCiBTREtfVkVSU0lPTiA6PSAiJHtAJyR7RElTVFJPX1ZFUlNJT059Jy5yZXBsYWNlKCdzbmFwc2hvdC0ke0RBVEV9Jywnc25hcHNob3QnKX0iCiAKQEAgLTIxLDcgKzIxLDcgQEAKIAogRElTVFJPX0ZFQVRVUkVTID89ICIke0RJU1RST19GRUFUVVJFU19ERUZBVUxUfSAke0RJU1RST19GRUFUVVJFU19MSUJDfSAke1BPS1lfREVGQVVMVF9ESVNUUk9fRkVBVFVSRVN9IgogCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xMiUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xNCUiCiAKIFNES19OQU1FID0gIiR7RElTVFJPfS0ke1RDTElCQ30tJHtTREtfQVJDSH0tJHtJTUFHRV9CQVNFTkFNRX0tJHtUVU5FX1BLR0FSQ0h9IgogU0RLUEFUSCA9ICIvb3B0LyR7RElTVFJPfS8ke1NES19WRVJTSU9OfSIKQEAgLTY0LDE1ICs2NCwxMiBAQAogQ09OTkVDVElWSVRZX0NIRUNLX1VSSVMgPz0gImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tLyIKIAogU0FOSVRZX1RFU1RFRF9ESVNUUk9TID89ICIgXAotICAgICAgICAgICAgcG9reS0yLjIgXG4gXAotICAgICAgICAgICAgcG9reS0yLjMgXG4gXAogICAgICAgICAgICAgcG9reS0yLjQgXG4gXAorICAgICAgICAgICAgcG9reS0yLjUgXG4gXAogICAgICAgICAgICAgdWJ1bnR1LTE1LjA0IFxuIFwKICAgICAgICAgICAgIHVidW50dS0xNi4wNCBcbiBcCiAgICAgICAgICAgICB1YnVudHUtMTYuMTAgXG4gXAogICAgICAgICAgICAgdWJ1bnR1LTE3LjA0IFxuIFwKLSAgICAgICAgICAgIGZlZG9yYS0yNCBcbiBcCi0gICAgICAgICAgICBmZWRvcmEtMjUgXG4gXAogICAgICAgICAgICAgZmVkb3JhLTI2IFxuIFwKICAgICAgICAgICAgIGNlbnRvcy03IFxuIFwKICAgICAgICAgICAgIGRlYmlhbi04IFxuIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9sYXllci5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2xheWVyLmNvbmYKaW5kZXggMjZkN2MzYi4uMzc2MWY4NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2xheWVyLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2xheWVyLmNvbmYKQEAgLTksNyArOSw3IEBACiBCQkZJTEVfUEFUVEVSTl95b2N0byA9ICJeJHtMQVlFUkRJUn0vIgogQkJGSUxFX1BSSU9SSVRZX3lvY3RvID0gIjUiCiAKLUxBWUVSU0VSSUVTX0NPTVBBVF95b2N0byA9ICJyb2NrbyIKK0xBWUVSU0VSSUVTX0NPTVBBVF95b2N0byA9ICJzdW1vIgogCiAjIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW5jcmVtZW50ZWQgb24gc2lnbmlmaWNhbnQgY2hhbmdlcyB0aGF0IHdpbGwKICMgY2F1c2UgY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2l0aCBvdGhlciBsYXllcnMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZQppbmRleCA5YTU2MGRmLi5hYThkZjQwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1wb2t5L2NvbmYvbG9jYWwuY29uZi5zYW1wbGUKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlCkBAIC0yOCw3ICsyOCw3IEBACiAjIFRoZXJlIGFyZSBhbHNvIHRoZSBmb2xsb3dpbmcgaGFyZHdhcmUgYm9hcmQgdGFyZ2V0IG1hY2hpbmVzIGluY2x1ZGVkIGZvciAKICMgZGVtb25zdHJhdGlvbiBwdXJwb3NlczoKICMKLSNNQUNISU5FID89ICJiZWFnbGVib25lIgorI01BQ0hJTkUgPz0gImJlYWdsZWJvbmUteW9jdG8iCiAjTUFDSElORSA/PSAiZ2VuZXJpY3g4NiIKICNNQUNISU5FID89ICJnZW5lcmljeDg2LTY0IgogI01BQ0hJTkUgPz0gIm1wYzgzMTVlLXJkYiIKQEAgLTIxOCw2ICsyMTgsMTcgQEAKICNmaWxlOi8vLiogaHR0cDovL3NvbWVzZXJ2ZXIudGxkL3NoYXJlL3NzdGF0ZS9QQVRIO2Rvd25sb2FkZmlsZW5hbWU9UEFUSCBcbiBcCiAjZmlsZTovLy4qIGZpbGU6Ly8vc29tZS9sb2NhbC9kaXIvc3N0YXRlL1BBVEgiCiAKKyMKKyMgWW9jdG8gUHJvamVjdCBTU3RhdGUgTWlycm9yCisjCisjIFRoZSBZb2N0byBQcm9qZWN0IGhhcyBwcmVidWlsdCBhcnRlZmFjdHMgYXZhaWxhYmxlIGZvciBpdHMgcmVsZWFzZXMsIHlvdSBjYW4gZW5hYmxlCisjIHVzZSBvZiB0aGVzZSBieSB1bmNvbW1lbnRpbmcgdGhlIGZvbGxvd2luZyBsaW5lLiBUaGlzIHdpbGwgbWVhbiB0aGUgYnVpbGQgdXNlcworIyB0aGUgbmV0d29yayB0byBjaGVjayBmb3IgYXJ0ZWZhY3RzIGF0IHRoZSBzdGFydCBvZiBidWlsZHMsIHdoaWNoIGRvZXMgc2xvdyBpdCBkb3duCisjIGVxdWFsbHksIGl0IHdpbGwgYWxzbyBzcGVlZCB1cCB0aGUgYnVpbGRzIGJ5IG5vdCBoYXZpbmcgdG8gYnVpbGQgdGhpbmdzIGlmIHRoZXkgYXJlCisjIHByZXNlbnQgaW4gdGhlIGNhY2hlLiBJdCBhc3N1bWVzIHlvdSBjYW4gZG93bmxvYWQgc29tZXRoaW5nIGZhc3RlciB0aGFuIHlvdSBjYW4gYnVpbGQgaXQKKyMgd2hpY2ggd2lsbCBkZXBlbmQgb24geW91ciBuZXR3b3JrLgorIworI1NTVEFURV9NSVJST1JTID89ICJmaWxlOi8vLiogaHR0cDovL3NzdGF0ZS55b2N0b3Byb2plY3Qub3JnLzIuNS9QQVRIO2Rvd25sb2FkZmlsZW5hbWU9UEFUSCIKIAogIwogIyBRZW11IGNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L2NvbmYvbGF5ZXIuY29uZgppbmRleCAyYTcxODk1Li5mNTc0YTUwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9jb25mL2xheWVyLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvY29uZi9sYXllci5jb25mCkBAIC05LDQgKzksNCBAQAogQkJGSUxFX1BBVFRFUk5fc2VsZnRlc3QgPSAiXiR7TEFZRVJESVJ9LyIKIEJCRklMRV9QUklPUklUWV9zZWxmdGVzdCA9ICI1IgogCi1MQVlFUlNFUklFU19DT01QQVRfc2VsZnRlc3QgPSAicm9ja28iCitMQVlFUlNFUklFU19DT01QQVRfc2VsZnRlc3QgPSAic3VtbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtdGVzdC1sb2NhbC9maWxlMSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtdGVzdC1sb2NhbC9maWxlMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGJkY2ZjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2RldnRvb2wvZGV2dG9vbC10ZXN0LWxvY2FsL2ZpbGUxCkBAIC0wLDAgKzEgQEAKK1RoZSBmaXJzdCBmaWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvZGV2dG9vbC9kZXZ0b29sLXRlc3QtbG9jYWwvZmlsZTIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvZGV2dG9vbC9kZXZ0b29sLXRlc3QtbG9jYWwvZmlsZTIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdlMjQxNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtdGVzdC1sb2NhbC9maWxlMgpAQCAtMCwwICsxIEBACitUaGUgc2Vjb25kIGZpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtdGVzdC1sb2NhbF82LjAzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2RldnRvb2wvZGV2dG9vbC10ZXN0LWxvY2FsXzYuMDMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM3N2NiNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9kZXZ0b29sL2RldnRvb2wtdGVzdC1sb2NhbF82LjAzLmJiCkBAIC0wLDAgKzEsMTYgQEAKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMiCisKK0lOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzL3N5c2xpbnV4LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9maWxlMSBcCisgICAgICAgICAgIGZpbGU6Ly9maWxlMiIKKworU1JDX1VSSVttZDVzdW1dID0gIjkyYTI1M2RmOTIxMWU5YzIwMTcyNzk2ZWNmMzg4ZjEzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI2ZDM5ODZkMmJlYTEwOWQ1ZGMwZTRmOGM0ODIyYTQ1OTI3NmNmMDIxMTI1ZThjOWYyM2MzY2NhNWQ4Yzg1MGUiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKKworUyA9ICIke1dPUktESVJ9L3N5c2xpbnV4LSR7UFZ9IgorCitFWENMVURFX0ZST01fV09STEQgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9pbWFnZXMvd2ljLWltYWdlLW1pbmltYWwud2tzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2ltYWdlcy93aWMtaW1hZ2UtbWluaW1hbC53a3MKaW5kZXggOTQxMGI2OC4uYWU2OWNiNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2ltYWdlcy93aWMtaW1hZ2UtbWluaW1hbC53a3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2ltYWdlcy93aWMtaW1hZ2UtbWluaW1hbC53a3MKQEAgLTQsNiArNCw3IEBACiAKIHBhcnQgL2Jvb3QgLS1zb3VyY2UgYm9vdGltZy1wY2Jpb3MgLS1vbmRpc2sgc2RhIC0tbGFiZWwgYm9vdCAtLWFjdGl2ZSAtLWFsaWduIDEwMjQKIHBhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgc2RhIC0tZnN0eXBlPWV4dDQgLS1sYWJlbCBwbGF0Zm9ybSAtLWFsaWduIDEwMjQgLS11c2UtdXVpZAorcGFydCAvbWVkaWEgLS1zb3VyY2Ugcm9vdGZzIC0tcm9vdGZzLWRpcj13aWMtaW1hZ2UtbWluaW1hbCAtLW9uZGlzayBzZGEgLS1mc3R5cGU9ZXh0NCAtLWxhYmVsIHV1aWQtdGVzdCAtLWFsaWduIDEwMjQgLS11c2UtdXVpZCAtLWZzdXVpZCAyYzcxZWYwNi1hODFkLTQ3MzUtOWQzYS0zNzliNjljNmJkYmEKIHBhcnQgL21udCAtLXNvdXJjZSByb290ZnMgLS1yb290ZnMtZGlyPXdpYy1pbWFnZS1taW5pbWFsIC0tb25kaXNrIHNkYSAtLWZzdHlwZT1leHQ0IC0tbGFiZWwgY29yZSAtLWFsaWduIDEwMjQKIAogYm9vdGxvYWRlciAtLXB0YWJsZSBncHQgLS10aW1lb3V0PTAgIC0tYXBwZW5kPSJyb290d2FpdCBjb25zb2xlPXR0eTAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvbWFuLWRiL2ZpbGVzLzAwMDEtVGVzdC1wYXRjaC1oZXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L21hbi1kYi9maWxlcy8wMDAxLVRlc3QtcGF0Y2gtaGVyZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWQ1ZWFiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L21hbi1kYi9maWxlcy8wMDAxLVRlc3QtcGF0Y2gtaGVyZS5wYXRjaApAQCAtMCwwICsxLDIyIEBACitGcm9tIGVmYzg4MzFmMzMxMDZlNmI0OGRlOGU2MTJjMmQ4MTZmZTdkMWFlNjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgOSBGZWIgMjAxOCAxNzozNzo0OCArMDIwMAorU3ViamVjdDogW1BBVENIXSBUZXN0IHBhdGNoIGhlcmUhCisKK1RoaXMgaXMgYW4gaW52YWxpZCBwYXRjaCB1c2VkIGJ5IG9lLXNlbGZ0ZXN0CistLS0KKyBSRUFETUUgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL1JFQURNRSBiL1JFQURNRQoraW5kZXggNDhmZmY1Ny4uMjZkMTIzNCAxMDA2NDQKKy0tLSBhL1JFQURNRQorKysrIGIvUkVBRE1FCitAQCAtMSwzICsxLDQgQEAKKytUaGlzIGlzIGEgdGVzdCBwYXRjaCBmb3IgcHVycG9zZXMgb2Ygb2Utc2VsZnRlc3QKKyBUSElTIExJTkUgTUFLRVMgVEhJUyBQQVRDSCBJTlZBTElEIFJFQURNRSBmb3IgdGhlIG1hbi1kYiBtYW51YWwgcGFnZXIgc3VpdGUKKyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgCistLSAKKzIuMTUuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvbWFuL21hbl8xLjZnLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L21hbi1kYi9tYW4tZGJfJS5iYmFwcGVuZApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L21hbi9tYW5fMS42Zy5iYmFwcGVuZApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L21hbi1kYi9tYW4tZGJfJS5iYmFwcGVuZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L21hbi9tYW4vbWFuLTEuNWgxLW1ha2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvbWFuL21hbi9tYW4tMS41aDEtbWFrZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBkNTliNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvbWFuL21hbi9tYW4tMS41aDEtbWFrZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVRlc3QgcGF0Y2ggaGVyZSEKLVRoaXMgaXMgaW52YWxpZCBwYXRjaCB1c2VkIGJ5IHRlc3RzIGluIHNjcmlwdHMvbGliL3NlbGZ0ZXN0cy4KLQotLS0tIG1hbi0xLjVnL21hbi9NYWtlZmlsZS5pbi5taWtlCUZyaSBBcHIgIDkgMTM6MzU6NTQgMTk5OQotKysrIG1hbi0xLjVnL21hbi9NYWtlZmlsZS5pbglGcmkgQXByICA5IDEzOjM2OjQ1IDE5OTkKLUBAIC0xLDggKzEsOCBAQAotICNNQUtFIFRISVMgUEFUQ0ggSU5WQUxJRAotIE1BTjEgPSBtYW4gd2hhdGlzIGFwcm9wb3MKLS1NQU41ID0gbWFuLmNvbmYKLStNQU41ID0gbWFuLmNvbmZpZwotIE1BTjggPSBtYWtld2hhdGlzCi0tQUxMID0gbWFuLjEgd2hhdGlzLjEgYXByb3Bvcy4xIG1hbi5jb25mLjUKLStBTEwgPSBtYW4uMSB3aGF0aXMuMSBhcHJvcG9zLjEgbWFuLmNvbmZpZy41Ci0gTUFZQkU4ID0gbWFrZXdoYXRpcwotIAotIC5TVUZGSVhFUzogLm1hbiAuMSAuNSAuOApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3Bvc3RpbnN0L3Bvc3RpbnN0XzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9wb3N0aW5zdC9wb3N0aW5zdF8xLjAuYmIKaW5kZXggNmQ0OTczNC4uOTEzYmZhYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3Bvc3RpbnN0L3Bvc3RpbnN0XzEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvcG9zdGluc3QvcG9zdGluc3RfMS4wLmJiCkBAIC0xLDEyNiArMSw3MiBAQAorU1VNTUFSWSA9ICJQYWNrYWdlcyB0byBleGVyY2lzZSBwb3N0aW5zdGFsbCBmdW5jdGlvbnMiCiBMSUNFTlNFID0gIk1JVCIKLUFMTE9XX0VNUFRZXyR7UE59LWF0LXJvb3RmcyA9ICIxIgorCitpbmhlcml0IGFsbGFyY2gKKworUEFDS0FHRVMgPSAiJHtQTn0tcm9vdGZzICR7UE59LWRlbGF5ZWQtYSAke1BOfS1kZWxheWVkLWIgJHtQTn0tcm9vdGZzLWZhaWxpbmciCisKK0FMTE9XX0VNUFRZXyR7UE59LXJvb3RmcyA9ICIxIgogQUxMT1dfRU1QVFlfJHtQTn0tZGVsYXllZC1hID0gIjEiCiBBTExPV19FTVBUWV8ke1BOfS1kZWxheWVkLWIgPSAiMSIKLUFMTE9XX0VNUFRZXyR7UE59LWRlbGF5ZWQtZCA9ICIxIgotQUxMT1dfRU1QVFlfJHtQTn0tZGVsYXllZC1wID0gIjEiCi1BTExPV19FTVBUWV8ke1BOfS1kZWxheWVkLXQgPSAiMSIKK0FMTE9XX0VNUFRZXyR7UE59LXJvb3Rmcy1mYWlsaW5nID0gIjEiCiAKLVBBQ0tBR0VTICs9ICIke1BOfS1hdC1yb290ZnMgJHtQTn0tZGVsYXllZC1hICR7UE59LWRlbGF5ZWQtYiAke1BOfS1kZWxheWVkLWQgJHtQTn0tZGVsYXllZC1wICR7UE59LWRlbGF5ZWQtdCIKLVBST1ZJREVTICs9ICIke1BOfS1hdC1yb290ZnMgJHtQTn0tZGVsYXllZC1hICR7UE59LWRlbGF5ZWQtYiAke1BOfS1kZWxheWVkLWQgJHtQTn0tZGVsYXllZC1wICR7UE59LWRlbGF5ZWQtdCIKLUZJTEVTXyR7UE59LWRlbGF5ZWQtYSA9ICIiCi1GSUxFU18ke1BOfS1kZWxheWVkLWIgPSAiIgotRklMRVNfJHtQTn0tZGVsYXllZC1kID0gIiIKLUZJTEVTXyR7UE59LWRlbGF5ZWQtcCA9ICIiCi1GSUxFU18ke1BOfS1kZWxheWVkLXQgPSAiIgotCi0jIFJ1bnRpbWUgZGVwZW5kZW5jaWVzCi1SREVQRU5EU18ke1BOfS1kZWxheWVkLWEgPSAiJHtQTn0tYXQtcm9vdGZzIgorUkRFUEVORFNfJHtQTn0tZGVsYXllZC1hID0gIiR7UE59LXJvb3RmcyIKIFJERVBFTkRTXyR7UE59LWRlbGF5ZWQtYiA9ICIke1BOfS1kZWxheWVkLWEiCi1SREVQRU5EU18ke1BOfS1kZWxheWVkLWQgPSAiJHtQTn0tZGVsYXllZC1iIgotUkRFUEVORFNfJHtQTn0tZGVsYXllZC1wID0gIiR7UE59LWRlbGF5ZWQtZCIKLVJERVBFTkRTXyR7UE59LWRlbGF5ZWQtdCA9ICIke1BOfS1kZWxheWVkLXAiCiAKLSMgTWFpbiByZWNpcGUgcG9zdC1pbnN0YWxsCi1wa2dfcG9zdGluc3RfJHtQTn0tYXQtcm9vdGZzICgpIHsKLSAgICB0ZmlsZT0iL2V0Yy9wb3N0aW5zdGEtdGVzdCIKLSAgICB0b3VjaCAiJEQiL3RoaXMtd2FzLWNyZWF0ZWQtYXQtcm9vdGZzdGltZQotICAgIGlmIHRlc3QgIngkRCIgIT0gIngiIHRoZW4KLSAgICAgICAgIyBOZWVkIHRvIHJ1biBvbiBmaXJzdCBib290CitURVNURElSID0gIiR7c3lzY29uZmRpcn0vcG9zdGluc3QtdGVzdCIKKworIyBBdCByb290ZnMgdGltZSB0b3VjaCAkVEVTVERJUi9yb290ZnMuICBFcnJvcnMgaWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMsIG9yCisjIGlmIHRoZSBmdW5jdGlvbiBydW5zIG9uIGZpcnN0IGJvb3QuCitwa2dfcG9zdGluc3RfJHtQTn0tcm9vdGZzICgpIHsKKyAgICBzZXQgLWUKKworICAgIGlmIFsgLXogIiREIiBdOyB0aGVuCisgICAgICAgIGVjaG8gIiR7UE59LXJvb3RmcyBzaG91bGQgaGF2ZSBmaW5pc2hlZCBhdCByb290ZnMgdGltZSIKICAgICAgICAgZXhpdCAxCi0gICAgZWxzZQotICAgICAgICBlY2hvICJsZXRzIHdyaXRlIHBvc3RpbnN0IiA+ICR0ZmlsZQogICAgIGZpCi19CiAKLSMgRGVwZW5kZW5jeSByZWNpcGVzIHBvc3QtaW5zdGFsbHMKLXBrZ19wb3N0aW5zdF8ke1BOfS1kZWxheWVkLWEgKCkgewotICAgIGVmaWxlPSIvZXRjL3Bvc3RpbnN0LXRlc3QiCi0gICAgdGZpbGU9Ii9ldGMvcG9zdGluc3RhLXRlc3QiCi0gICAgcmRlcHM9InBvc3RpbnN0IgotCi0gICAgaWYgdGVzdCAieCREIiAhPSAieCI7IHRoZW4KLSAgICAgICMgTmVlZCB0byBydW4gb24gZmlyc3QgYm9vdAotICAgICAgZXhpdCAxCi0gICAgZWxzZQotICAgICAgdG91Y2ggL2V0Yy90aGlzLXdhcy1jcmVhdGVkLWF0LWZpcnN0LWJvb3QKLSAgICAgIGlmIHRlc3QgLWUgJGVmaWxlIDsgdGhlbgotICAgICAgICBlY2hvICdzdWNjZXNzJyA+ICR0ZmlsZQotICAgICAgZWxzZQotICAgICAgICBlY2hvICdmYWlsIHRvIGluc3RhbGwgJHJkZXBzIGZpcnN0IScgPiYyCisgICAgaWYgWyAtZSAkRCR7VEVTVERJUn0vcm9vdGZzIF07IHRoZW4KKyAgICAgICAgZWNobyAiJEQke1RFU1RESVJ9L3Jvb3RmcyBleGlzdHMsIGJ1dCBzaG91bGQgbm90IgogICAgICAgICBleGl0IDEKLSAgICAgIGZpCi0gICBmaQorICAgIGZpCisKKyAgICBta2RpciAtcCAkRCR7VEVTVERJUn0KKyAgICB0b3VjaCAkRCR7VEVTVERJUn0vcm9vdGZzCiB9CiAKLXBrZ19wb3N0aW5zdF8ke1BOfS1kZWxheWVkLWIgKCkgewotICAgIGVmaWxlPSIvZXRjL3Bvc3RpbnN0YS10ZXN0IgotICAgIHRmaWxlPSIvZXRjL3Bvc3RpbnN0Yi10ZXN0IgotICAgIHJkZXBzPSJwb3N0aW5zdGEiCisjIERlcGVuZHMgb24gcm9vdGZzLCBkZWxheXMgdW50aWwgZmlyc3QgYm9vdCwgdmVyaWZpZXMgdGhhdCB0aGUgcm9vdGZzIGZpbGUgd2FzCisjIHdyaXR0ZW4uCitwa2dfcG9zdGluc3Rfb250YXJnZXRfJHtQTn0tZGVsYXllZC1hICgpIHsKKyAgICBzZXQgLWUKIAotICAgIGlmIHRlc3QgIngkRCIgIT0gIngiOyB0aGVuCi0gICAgICAjIE5lZWQgdG8gcnVuIG9uIGZpcnN0IGJvb3QKLSAgICAgIGV4aXQgMQotICAgIGVsc2UKLSAgICAgIGlmIHRlc3QgLWUgJGVmaWxlIDsgdGhlbgotICAgICAgICBlY2hvICdzdWNjZXNzJyA+ICR0ZmlsZQotICAgICAgZWxzZQotICAgICAgICBlY2hvICdmYWlsIHRvIGluc3RhbGwgJHJkZXBzIGZpcnN0IScgPiYyCisgICAgaWYgWyAhIC1lICR7VEVTVERJUn0vcm9vdGZzIF07IHRoZW4KKyAgICAgICAgZWNobyAiJHtQTn0tZGVsYXllZC1hOiAke1RFU1RESVJ9L3Jvb3RmcyBub3QgZm91bmQiCiAgICAgICAgIGV4aXQgMQotICAgICAgZmkKLSAgIGZpCisgICAgZmkKKworICAgIHRvdWNoICR7VEVTVERJUn0vZGVsYXllZC1hCiB9CiAKLXBrZ19wb3N0aW5zdF8ke1BOfS1kZWxheWVkLWQgKCkgewotICAgIGVmaWxlPSIvZXRjL3Bvc3RpbnN0Yi10ZXN0IgotICAgIHRmaWxlPSIvZXRjL3Bvc3RpbnN0ZC10ZXN0IgotICAgIHJkZXBzPSJwb3N0aW5zdGIiCisjIERlcGVuZHMgb24gZGVsYXllZC1hLCBkZWxheXMgdW50aWwgZmlyc3QgYm9vdCwgdmVyaWZpZXMgdGhhdCB0aGUgZGVsYXllZC1hIGZpbGUgd2FzCisjIHdyaXR0ZW4uIFRoaXMgdmVyaWZpZXMgdGhlIG9yZGVyaW5nIGJldHdlZW4gZGVsYXllZCBwb3N0aW5zdHMuCitwa2dfcG9zdGluc3Rfb250YXJnZXRfJHtQTn0tZGVsYXllZC1iICgpIHsKKyAgICBzZXQgLWUKIAotICAgIGlmIHRlc3QgIngkRCIgIT0gIngiOyB0aGVuCi0gICAgICAjIE5lZWQgdG8gcnVuIG9uIGZpcnN0IGJvb3QKLSAgICAgIGV4aXQgMQotICAgIGVsc2UKLSAgICAgIGlmIHRlc3QgLWUgJGVmaWxlIDsgdGhlbgotICAgICAgICBlY2hvICdzdWNjZXNzJyA+ICR0ZmlsZQotICAgICAgZWxzZQotICAgICAgICBlY2hvICdmYWlsIHRvIGluc3RhbGwgJHJkZXBzIGZpcnN0IScgPiYyCisgICAgaWYgWyAhIC1lICR7VEVTVERJUn0vZGVsYXllZC1hIF07IHRoZW4KKyAgICAgICAgZWNobyAiJHtQTn0tZGVsYXllZC1iOiAke1RFU1RESVJ9L2RlbGF5ZWQtYSBub3QgZm91bmQiCiAgICAgICAgIGV4aXQgMQotICAgICAgZmkKLSAgIGZpCisgICAgZmkKKworICAgIHRvdWNoICR7VEVTVERJUn0vZGVsYXllZC1iCiB9CiAKLXBrZ19wb3N0aW5zdF8ke1BOfS1kZWxheWVkLXAgKCkgewotICAgIGVmaWxlPSIvZXRjL3Bvc3RpbnN0ZC10ZXN0IgotICAgIHRmaWxlPSIvZXRjL3Bvc3RpbnN0cC10ZXN0IgotICAgIHJkZXBzPSJwb3N0aW5zdGQiCi0KLSAgICBpZiB0ZXN0ICJ4JEQiICE9ICJ4IjsgdGhlbgotICAgICAgIyBOZWVkIHRvIHJ1biBvbiBmaXJzdCBib290Ci0gICAgICBleGl0IDEKLSAgICBlbHNlCi0gICAgICBpZiB0ZXN0IC1lICRlZmlsZSA7IHRoZW4KLSAgICAgICAgZWNobyAnc3VjY2VzcycgPiAkdGZpbGUKLSAgICAgIGVsc2UKLSAgICAgICAgZWNobyAnZmFpbCB0byBpbnN0YWxsICRyZGVwcyBmaXJzdCEnID4mMgotICAgICAgICBleGl0IDEKLSAgICAgIGZpCi0gICBmaQotfQotCi1wa2dfcG9zdGluc3RfJHtQTn0tZGVsYXllZC10ICgpIHsKLSAgICBlZmlsZT0iL2V0Yy9wb3N0aW5zdHAtdGVzdCIKLSAgICB0ZmlsZT0iL2V0Yy9wb3N0aW5zdHQtdGVzdCIKLSAgICByZGVwcz0icG9zdGluc3RwIgotCi0gICAgaWYgdGVzdCAieCREIiAhPSAieCI7IHRoZW4KLSAgICAgICMgTmVlZCB0byBydW4gb24gZmlyc3QgYm9vdAotICAgICAgZXhpdCAxCi0gICAgZWxzZQotICAgICAgaWYgdGVzdCAtZSAkZWZpbGUgOyB0aGVuCi0gICAgICAgICAgZWNobyAnc3VjY2VzcycgPiAkdGZpbGUKLSAgICAgIGVsc2UKLSAgICAgICAgICBlY2hvICdmYWlsIHRvIGluc3RhbGwgJHJkZXBzIGZpcnN0IScgPiYyCi0gICAgICAgICAgZXhpdCAxCi0gICAgICBmaQotICAgZmkKKyMgVGhpcyBzY3JpcHRsZXQgaW50ZW50aW9uYWxseSBpbmNsdWRlcyBhIGJvZ3VzIGNvbW1hbmQgaW4gdGhlIG1pZGRsZSB0byB0ZXN0IAorIyB0aGF0IHdlIGNhdGNoIGFuZCByZXBvcnQgc3VjaCBlcnJvcnMgcHJvcGVybHkuCitwa2dfcG9zdGluc3RfJHtQTn0tcm9vdGZzLWZhaWxpbmcgKCkgeworICAgIG1rZGlyIC1wICREJHtURVNURElSfQorICAgIHRvdWNoICREJHtURVNURElSfS9yb290ZnMtYmVmb3JlLWZhaWx1cmUKKyAgICBydW5fYV9yZWFsbHlfYnJva2VuX2NvbW1hbmQKKyAgICAjIFNjcmlwdGxldCBleGVjdXRpb24gc2hvdWxkIHN0b3AgaGVyZTsgdGhlIGZvbGxvd2luZyBjb21tYW5kcyBhcmUgTk9UIHN1cHBvc2VkIHRvIHJ1bi4KKyAgICAjIChvZS1zZWxmdGVzdCBjaGVja3MgZm9yIGl0KS4KKyAgICB0b3VjaCAkRCR7VEVTVERJUn0vcm9vdGZzLWFmdGVyLWZhaWx1cmUKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zZWxmdGVzdC1lZC9zZWxmdGVzdC1lZF8xLjE0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3Qvc2VsZnRlc3QtZWQvc2VsZnRlc3QtZWRfMS4xNC4xLmJiCmluZGV4IDYyOTMxYzQuLjhhMmI1NjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zZWxmdGVzdC1lZC9zZWxmdGVzdC1lZF8xLjE0LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3NlbGZ0ZXN0LWVkL3NlbGZ0ZXN0LWVkXzEuMTQuMS5iYgpAQCAtMTIsNiArMTIsNyBAQAogYmluZGlyID0gIiR7YmFzZV9iaW5kaXJ9IgogCiBTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZWQvZWQtJHtQVn0udGFyLmx6IgorUkVDSVBFX05PX1VQREFURV9SRUFTT04gPSAiVGhpcyByZWNpcGUgaXMgdXNlZCBpbiBzZWxmdGVzdCBhbmQgc2hvdWxkbid0IGJlIHVwZGF0ZWQgb3RoZXJ3aXNlIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiN2Y0YTU0ZmE3ZjM2NjQ3OWYwMzY1NGI4YWY2NDVmZDAiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmZiOTdlYjhmMmEyYjVhNzFhOWI5N2UzODcyYWRjZTk1M2FhMWI4OTU4ZTA0YzViN2JmMTFkNTU2ZjMyNTUyYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNrZWxldG9uL2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNrZWxldG9uL2NvbmYvbGF5ZXIuY29uZgppbmRleCBhMTU1MTZhLi40ZTg2OTJlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS1za2VsZXRvbi9jb25mL2xheWVyLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2tlbGV0b24vY29uZi9sYXllci5jb25mCkBAIC0xNCw0ICsxNCw0IEBACiAKIExBWUVSREVQRU5EU19za2VsZXRvbiA9ICJjb3JlIgogCi1MQVlFUlNFUklFU19DT01QQVRfc2tlbGV0b24gPSAicm9ja28iCitMQVlFUlNFUklFU19DT01QQVRfc2tlbGV0b24gPSAic3VtbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXNrZWxldG9uL3JlY2lwZXMta2VybmVsL2hlbGxvLW1vZC9oZWxsby1tb2RfMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2tlbGV0b24vcmVjaXBlcy1rZXJuZWwvaGVsbG8tbW9kL2hlbGxvLW1vZF8wLjEuYmIKaW5kZXggYjE0MGIwYS4uM2QzMzQ0NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2tlbGV0b24vcmVjaXBlcy1rZXJuZWwvaGVsbG8tbW9kL2hlbGxvLW1vZF8wLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEtc2tlbGV0b24vcmVjaXBlcy1rZXJuZWwvaGVsbG8tbW9kL2hlbGxvLW1vZF8wLjEuYmIKQEAgLTEzLDMgKzEzLDUgQEAKIAogIyBUaGUgaW5oZXJpdCBvZiBtb2R1bGUuYmJjbGFzcyB3aWxsIGF1dG9tYXRpY2FsbHkgbmFtZSBtb2R1bGUgcGFja2FnZXMgd2l0aAogIyAia2VybmVsLW1vZHVsZS0iIHByZWZpeCBhcyByZXF1aXJlZCBieSB0aGUgb2UtY29yZSBidWlsZCBlbnZpcm9ubWVudC4KKworUlBST1ZJREVTXyR7UE59ICs9ICJrZXJuZWwtbW9kdWxlLWhlbGxvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL1JFQURNRS5oYXJkd2FyZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9SRUFETUUuaGFyZHdhcmUKaW5kZXggODRjNWFmYS4uZDhkMmEwYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL1JFQURNRS5oYXJkd2FyZQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvUkVBRE1FLmhhcmR3YXJlCkBAIC0yNyw3ICsyNyw3IEBACiAKIFRoZSBmb2xsb3dpbmcgYm9hcmRzIGFyZSBzdXBwb3J0ZWQgYnkgdGhlIG1ldGEteW9jdG8tYnNwIGxheWVyOgogCi0gICogVGV4YXMgSW5zdHJ1bWVudHMgQmVhZ2xlYm9uZSAoYmVhZ2xlYm9uZSkKKyAgKiBUZXhhcyBJbnN0cnVtZW50cyBCZWFnbGVib25lIChiZWFnbGVib25lLXlvY3RvKQogICAqIEZyZWVzY2FsZSBNUEM4MzE1RS1SREIgKG1wYzgzMTVlLXJkYikKICAgKiBVYmlxdWl0aSBOZXR3b3JrcyBFZGdlUm91dGVyIExpdGUgKGVkZ2Vyb3V0ZXIpCiAgICogR2VuZXJhbCBJQSBwbGF0Zm9ybXMgKGdlbmVyaWN4ODYgYW5kIGdlbmVyaWN4ODYtNjQpCkBAIC0xMjAsNyArMTIwLDcgQEAKICAgICAgICBkZCBjb21tYW5kIHRvIHdyaXRlIHRoZSBpbWFnZSB0byBhIFVTQiBzdGljay4KIAogCi1UZXhhcyBJbnN0cnVtZW50cyBCZWFnbGVib25lIChiZWFnbGVib25lKQorVGV4YXMgSW5zdHJ1bWVudHMgQmVhZ2xlYm9uZSAoYmVhZ2xlYm9uZS15b2N0bykKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIFRoZSBCZWFnbGVib25lIGlzIGFuIEFSTSBDb3J0ZXgtQTggZGV2ZWxvcG1lbnQgYm9hcmQgd2l0aCBVU0IsIEV0aGVybmV0LCAyRC8zRApAQCAtMTUxLDcgKzE1MSw3IEBACiAKICAgMi4gVXNlIHRoZSAiZGQiIHV0aWxpdHkgdG8gd3JpdGUgdGhlIGltYWdlIHRvIHRoZSBTRCBjYXJkLiBGb3IgZXhhbXBsZToKIAotICAgICAjIGRkIGNvcmUtaW1hZ2UtbWluaW1hbC1iZWFnbGVib25lLndpYyBvZj0vZGV2L3NkYgorICAgICAjIGRkIGNvcmUtaW1hZ2UtbWluaW1hbC1iZWFnbGVib25lLXlvY3RvLndpYyBvZj0vZGV2L3NkYgogCiAgIDMuIEluc2VydCB0aGUgU0QgY2FyZCBpbnRvIHRoZSBCZWFnbGVib25lIGFuZCBib290IHRoZSBib2FyZC4KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL2xheWVyLmNvbmYKaW5kZXggN2I1NjVmMi4uNjQ3MjIzOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbGF5ZXIuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvY29uZi9sYXllci5jb25mCkBAIC04LDUgKzgsNSBAQAogQkJGSUxFX0NPTExFQ1RJT05TICs9ICJ5b2N0b2JzcCIKIEJCRklMRV9QQVRURVJOX3lvY3RvYnNwID0gIl4ke0xBWUVSRElSfS8iCiBCQkZJTEVfUFJJT1JJVFlfeW9jdG9ic3AgPSAiNSIKLUxBWUVSVkVSU0lPTl95b2N0b2JzcCA9ICIzIgotTEFZRVJTRVJJRVNfQ09NUEFUX3lvY3RvYnNwID0gInJvY2tvIgorTEFZRVJWRVJTSU9OX3lvY3RvYnNwID0gIjQiCitMQVlFUlNFUklFU19DT01QQVRfeW9jdG9ic3AgPSAic3VtbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvYmVhZ2xlYm9uZS15b2N0by5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9iZWFnbGVib25lLXlvY3RvLmNvbmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU2ODJhNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvYmVhZ2xlYm9uZS15b2N0by5jb25mCkBAIC0wLDAgKzEsNDAgQEAKKyNAVFlQRTogTWFjaGluZQorI0BOQU1FOiBCZWFnbGVib25lLXlvY3RvIG1hY2hpbmUKKyNAREVTQ1JJUFRJT046IFJlZmVyZW5jZSBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gZm9yIGh0dHA6Ly9iZWFnbGVib2FyZC5vcmcvYm9uZSBhbmQgaHR0cDovL2JlYWdsZWJvYXJkLm9yZy9ibGFjayBib2FyZHMKKworUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwveHNlcnZlciA/PSAieHNlcnZlci14b3JnIgorWFNFUlZFUiA/PSAieHNlcnZlci14b3JnIFwKKyAgICAgICAgICAgeGY4Ni12aWRlby1tb2Rlc2V0dGluZyBcCisgICAgICAgICAgICIKKworTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyA9ICJrZXJuZWwtbW9kdWxlcyBrZXJuZWwtZGV2aWNldHJlZSIKKworRVhUUkFfSU1BR0VERVBFTkRTICs9ICJ1LWJvb3QiCisKK0RFRkFVTFRUVU5FID89ICJjb3J0ZXhhOGhmLW5lb24iCitpbmNsdWRlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29ydGV4YTguaW5jCisKK0lNQUdFX0ZTVFlQRVMgKz0gInRhci5iejIgamZmczIgd2ljIHdpYy5ibWFwIgorRVhUUkFfSU1BR0VDTURfamZmczIgPSAiLWxucCAiCitXS1NfRklMRSA/PSAiYmVhZ2xlYm9uZS15b2N0by53a3MiCitJTUFHRV9JTlNUQUxMX2FwcGVuZCA9ICIga2VybmVsLWRldmljZXRyZWUga2VybmVsLWltYWdlLXppbWFnZSIKK2RvX2ltYWdlX3dpY1tkZXBlbmRzXSArPSAibXRvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IGRvc2ZzdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCisKK1NFUklBTF9DT05TT0xFID0gIjExNTIwMCB0dHlPMCIKKworUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID89ICJsaW51eC15b2N0byIKK1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI0LjE1JSIKKworS0VSTkVMX0lNQUdFVFlQRSA9ICJ6SW1hZ2UiCitLRVJORUxfREVWSUNFVFJFRSA9ICJhbTMzNXgtYm9uZS5kdGIgYW0zMzV4LWJvbmVibGFjay5kdGIgYW0zMzV4LWJvbmVncmVlbi5kdGIiCitLRVJORUxfRVhUUkFfQVJHUyArPSAiTE9BREFERFI9JHtVQk9PVF9FTlRSWVBPSU5UfSIKKworU1BMX0JJTkFSWSA9ICJNTE8iCitVQk9PVF9TVUZGSVggPSAiaW1nIgorVUJPT1RfTUFDSElORSA9ICJhbTMzNXhfYm9uZWJsYWNrX2NvbmZpZyIKK1VCT09UX0VOVFJZUE9JTlQgPSAiMHg4MDAwODAwMCIKK1VCT09UX0xPQURBRERSRVNTID0gIjB4ODAwMDgwMDAiCisKK01BQ0hJTkVfRkVBVFVSRVMgPSAidXNiZ2FkZ2V0IHVzYmhvc3QgdmZhdCBhbHNhIgorCitJTUFHRV9CT09UX0ZJTEVTID89ICJ1LWJvb3QuJHtVQk9PVF9TVUZGSVh9IE1MTyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvYmVhZ2xlYm9uZS5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9iZWFnbGVib25lLmNvbmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiZGQ0ZGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9iZWFnbGVib25lLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0jQFRZUEU6IE1hY2hpbmUKLSNATkFNRTogQmVhZ2xlYm9uZSBtYWNoaW5lCi0jQERFU0NSSVBUSU9OOiBNYWNoaW5lIGNvbmZpZ3VyYXRpb24gZm9yIGh0dHA6Ly9iZWFnbGVib2FyZC5vcmcvYm9uZSBhbmQgaHR0cDovL2JlYWdsZWJvYXJkLm9yZy9ibGFjayBib2FyZHMKLQotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwveHNlcnZlciA/PSAieHNlcnZlci14b3JnIgotWFNFUlZFUiA/PSAieHNlcnZlci14b3JnIFwKLSAgICAgICAgICAgeGY4Ni12aWRlby1tb2Rlc2V0dGluZyBcCi0gICAgICAgICAgICIKLQotTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyA9ICIga2VybmVsLW1vZHVsZXMga2VybmVsLWRldmljZXRyZWUiCi0KLUVYVFJBX0lNQUdFREVQRU5EUyArPSAidS1ib290IgotCi1ERUZBVUxUVFVORSA/PSAiY29ydGV4YThoZi1uZW9uIgotaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGE4LmluYwotCi1JTUFHRV9GU1RZUEVTICs9ICJ0YXIuYnoyIGpmZnMyIHdpYyB3aWMuYm1hcCIKLUVYVFJBX0lNQUdFQ01EX2pmZnMyID0gIi1sbnAgIgotV0tTX0ZJTEUgPz0gImJlYWdsZWJvbmUud2tzIgotSU1BR0VfSU5TVEFMTF9hcHBlbmQgPSAiIGtlcm5lbC1kZXZpY2V0cmVlIGtlcm5lbC1pbWFnZS16aW1hZ2UiCi1kb19pbWFnZV93aWNbZGVwZW5kc10gKz0gIm10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBkb3Nmc3Rvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgotCi1TRVJJQUxfQ09OU09MRSA9ICIxMTUyMDAgdHR5TzAiCi0KLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAibGludXgteW9jdG8iCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xMiUiCi0KLUtFUk5FTF9JTUFHRVRZUEUgPSAiekltYWdlIgotS0VSTkVMX0RFVklDRVRSRUUgPSAiYW0zMzV4LWJvbmUuZHRiIGFtMzM1eC1ib25lYmxhY2suZHRiIGFtMzM1eC1ib25lZ3JlZW4uZHRiIgotS0VSTkVMX0VYVFJBX0FSR1MgKz0gIkxPQURBRERSPSR7VUJPT1RfRU5UUllQT0lOVH0iCi0KLVNQTF9CSU5BUlkgPSAiTUxPIgotVUJPT1RfU1VGRklYID0gImltZyIKLVVCT09UX01BQ0hJTkUgPSAiYW0zMzV4X2JvbmVibGFja19jb25maWciCi1VQk9PVF9FTlRSWVBPSU5UID0gIjB4ODAwMDgwMDAiCi1VQk9PVF9MT0FEQUREUkVTUyA9ICIweDgwMDA4MDAwIgotCi1NQUNISU5FX0ZFQVRVUkVTID0gInVzYmdhZGdldCB1c2Job3N0IHZmYXQgYWxzYSIKLQotSU1BR0VfQk9PVF9GSUxFUyA/PSAidS1ib290LiR7VUJPT1RfU1VGRklYfSBNTE8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2VkZ2Vyb3V0ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvZWRnZXJvdXRlci5jb25mCmluZGV4IGFiNWE2ZmMuLjYxZjIxNDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvZWRnZXJvdXRlci5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvZWRnZXJvdXRlci5jb25mCkBAIC0xMSwxMiArMTEsMTIgQEAKIEtFUk5FTF9JTUFHRV9TVFJJUF9FWFRSQV9TRUNUSU9OUyAgPSAiLmNvbW1lbnQiCiAKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAibGludXgteW9jdG8iCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xMiUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xNSUiCiAKIFNFUklBTF9DT05TT0xFID0gIjExNTIwMCB0dHlTMCIKIFVTRV9WVCA/PSAiMCIKIAotTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyA9ICIga2VybmVsLW1vZHVsZXMiCitNQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTID0gImtlcm5lbC1tb2R1bGVzIgogCiBJTUFHRV9GU1RZUEVTID89ICJqZmZzMiB0YXIuYnoyIHdpYyB3aWMuYm1hcCIKIEpGRlMyX0VSQVNFQkxPQ0sgPSAiMHgxMDAwMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvbXBjODMxNWUtcmRiLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL21wYzgzMTVlLXJkYi5jb25mCmluZGV4IDM3MWEzZGIuLjM0ZjEyMzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvbXBjODMxNWUtcmRiLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9tcGM4MzE1ZS1yZGIuY29uZgpAQCAtMTQsNyArMTQsNyBAQAogCiBNQUNISU5FX0ZFQVRVUkVTID0gImtleWJvYXJkIHBjaSBleHQyIGV4dDMgc2VyaWFsIgogCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xMiUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xNSUiCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPSAibGludXgteW9jdG8iCiAKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3hzZXJ2ZXIgPz0gInhzZXJ2ZXIteG9yZyIKQEAgLTI1LDcgKzI1LDcgQEAKIAogS0VSTkVMX0RFVklDRVRSRUUgPSAibXBjODMxNWVyZGIuZHRiIgogCi1NQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTID0gIiBrZXJuZWwtbW9kdWxlcyIKK01BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgPSAia2VybmVsLW1vZHVsZXMiCiAKIElNQUdFX0ZTVFlQRVMgPz0gImpmZnMyIHRhci5iejIiCiBKRkZTMl9FUkFTRUJMT0NLID0gIjB4NDAwMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9saWIvb2VxYS95b2N0b2JzcC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9saWIvb2VxYS95b2N0b2JzcC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM1MzlhMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvbGliL29lcWEveW9jdG9ic3AucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBvcwotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHNodXRpbAotCi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCBza2lwVW5sZXNzUGFzc2VkCi0KLWNsYXNzIFlvY3RvQlNQKG9lU2VsZlRlc3QpOgotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3Moc2VsZik6Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgieW9jdG8tYnNwIGxpc3Qga2FyY2giKQotICAgICAgICBzZWxmLmthcmNocyA9IFtrYXJjaC5sc3RyaXAoKSBmb3Iga2FyY2ggaW4gcmVzdWx0Lm91dHB1dC5zcGxpdGxpbmVzKCldWzE6XQotCi0gICAgZGVmIHRlc3RfeW9jdG9ic3BfbGlzdHByb3BlcnRpZXMoc2VsZik6Ci0gICAgICAgIGZvciBrYXJjaCBpbiBzZWxmLmthcmNoczoKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgieW9jdG8tYnNwIGxpc3QgJXMgcHJvcGVydGllcyIgJSBrYXJjaCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cywgbXNnPSJQcm9wZXJ0aWVzIGZyb20gJXMgYXJjaGl0ZWN0dXJlIGNvdWxkIG5vdCBiZSBsaXN0ZWQiICUga2FyY2gpCi0KLSAgICBkZWYgdGVzdF95b2N0b2JzcF9jcmVhdGUoc2VsZik6Ci0gICAgICAgICMgR2VuZXJhdGUgYSB0ZW1wb3JhbCBmaWxlIGFuZCBmb2xkZXJzIGZvciBlYWNoIGthcmNoCi0gICAgICAgIGpzb24gPSAie1widXNlX2RlZmF1bHRfa2VybmVsXCI6XCJ5ZXNcIn1cbiIKLSAgICAgICAgZmQgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoZGVsZXRlPUZhbHNlKQotICAgICAgICBmZC53cml0ZShqc29uKQotICAgICAgICBmZC5jbG9zZSgpCi0gICAgICAgIHRtcGZvbGRlcnMgPSBkaWN0KFsoa2FyY2gsIHRlbXBmaWxlLm1rZHRlbXAoKSkgZm9yIGthcmNoIGluIHNlbGYua2FyY2hzXSkKLSAgICAgICAgIyBDcmVhdGUgQlNQCi0gICAgICAgIGZvciBrYXJjaCBpbiBzZWxmLmthcmNoczoKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgieW9jdG8tYnNwIGNyZWF0ZSB0ZXN0ICVzIC1vICVzIC1pICVzIiAlIChrYXJjaCwgIiVzL3VuaXRlc3QiICUgdG1wZm9sZGVyc1trYXJjaF0sIGZkLm5hbWUpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzLCBtc2c9IkNvdWxkIG5vdCBjcmVhdGUgYSBCU1Agd2l0aCBhcmNoaXRlY3R1cmUgJXMgdXNpbmcgJXMgIiAlIChrYXJjaCwgZmQubmFtZSkpCi0gICAgICAgICMgUmVtb3ZlIHRtcCBmaWxlL2ZvbGRlcnMKLSAgICAgICAgb3MudW5saW5rKGZkLm5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoZmQubmFtZSksIG1zZyA9ICJUZW1wb3JhbCBmaWxlICVzIGNvdWxkIG5vdCBiZSByZW1vdmVkIiAlIGZkLm5hbWUpCi0gICAgICAgIGZvciB0cmVlIGluIHRtcGZvbGRlcnMudmFsdWVzKCk6Ci0gICAgICAgICAgICBzaHV0aWwucm10cmVlKHRyZWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHRyZWUpLCBtc2cgPSAiVGVtcG9yYWwgZm9sZGVyICVzIGNvdWxkIG5vdCBiZSByZW1vdmVkIiAlIHRyZWUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1ic3AvZm9ybWZhY3Rvci9mb3JtZmFjdG9yL2JlYWdsZWJvbmUvbWFjaGNvbmZpZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWJzcC9mb3JtZmFjdG9yL2Zvcm1mYWN0b3IvYmVhZ2xlYm9uZS15b2N0by9tYWNoY29uZmlnCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1ic3AvZm9ybWZhY3Rvci9mb3JtZmFjdG9yL2JlYWdsZWJvbmUvbWFjaGNvbmZpZwpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMtYnNwL2Zvcm1mYWN0b3IvZm9ybWZhY3Rvci9iZWFnbGVib25lLXlvY3RvL21hY2hjb25maWcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL2JlYWdsZWJvbmUveG9yZy5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvYmVhZ2xlYm9uZS15b2N0by94b3JnLmNvbmYKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL2JlYWdsZWJvbmUveG9yZy5jb25mCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9iZWFnbGVib25lLXlvY3RvL3hvcmcuY29uZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFmMzU5Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUtCUkFOQ0hfZ2VuZXJpY3g4NiAgPSAic3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfZ2VuZXJpY3g4Ni02NCAgPSAic3RhbmRhcmQvYmFzZSIKLQotS01BQ0hJTkVfZ2VuZXJpY3g4NiA/PSAiY29tbW9uLXBjIgotS01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA/PSAiY29tbW9uLXBjLTY0IgotS0JSQU5DSF9lZGdlcm91dGVyID0gInN0YW5kYXJkL2VkZ2Vyb3V0ZXIiCi1LQlJBTkNIX2JlYWdsZWJvbmUgPSAic3RhbmRhcmQvYmVhZ2xlYm9uZSIKLUtCUkFOQ0hfbXBjODMxNWUtcmRiID0gInN0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIiCi0KLVNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gImMxZDhjNDQwOGI4YWVkZDg4ZWViNmNjYzg5Y2U4MzRkZDQxYjNmMDkiCi1TUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICJjMWQ4YzQ0MDhiOGFlZGQ4OGVlYjZjY2M4OWNlODM0ZGQ0MWIzZjA5IgotU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiYzFkOGM0NDA4YjhhZWRkODhlZWI2Y2NjODljZTgzNGRkNDFiM2YwOSIKLVNSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUgPz0gImMxZDhjNDQwOGI4YWVkZDg4ZWViNmNjYzg5Y2U4MzRkZDQxYjNmMDkiCi1TUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gImMzODhmZGZjOWExZTA2YjIyY2EzNTMzYTAyM2Y0ZDY3YTZmYzFlOWIiCi0KLUNPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCi1DT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgotQ09NUEFUSUJMRV9NQUNISU5FX2VkZ2Vyb3V0ZXIgPSAiZWRnZXJvdXRlciIKLUNPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lID0gImJlYWdsZWJvbmUiCi1DT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKLQotTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjQuMTAuMTciCi1MSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC4xMC4xNyIKLUxJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjEwLjE3IgotTElOVVhfVkVSU0lPTl9iZWFnbGVib25lID0gIjQuMTAuMTciCi1MSU5VWF9WRVJTSU9OX21wYzgzMTVlLXJkYiA9ICI0LjEwLjE3IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZAppbmRleCBmYWQ4ZWJjLi5lMjgzNjBiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApAQCAtNCwyNCArNCwyNSBAQAogS01BQ0hJTkVfZ2VuZXJpY3g4NiA/PSAiY29tbW9uLXBjIgogS01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA/PSAiY29tbW9uLXBjLTY0IgogS0JSQU5DSF9lZGdlcm91dGVyID0gInN0YW5kYXJkL2VkZ2Vyb3V0ZXIiCi1LQlJBTkNIX2JlYWdsZWJvbmUgPSAic3RhbmRhcmQvYmVhZ2xlYm9uZSIKK0tCUkFOQ0hfYmVhZ2xlYm9uZS15b2N0byA9ICJzdGFuZGFyZC9iZWFnbGVib25lIgorS01BQ0hJTkVfYmVhZ2xlYm9uZS15b2N0byA9ICJiZWFnbGVib25lIgogS0JSQU5DSF9tcGM4MzE1ZS1yZGIgPSAic3RhbmRhcmQvZnNsLW1wYzgzMTVlLXJkYiIKIAotU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4NiAgICA/PSAiMWM0YWQ1NjlhZjNlMjNhNzc5OTQyMzU0MzUwNDBlMzIyOTA4Njg3ZiIKLVNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYtNjQgPz0gIjFjNGFkNTY5YWYzZTIzYTc3OTk0MjM1NDM1MDQwZTMyMjkwODY4N2YiCi1TUkNSRVZfbWFjaGluZV9lZGdlcm91dGVyID89ICIyNTdmODQzZWEzNjc3NDQ2MjBmMWQ5MjkxMGFmZDJmNDU0ZTMxNDgzIgotU1JDUkVWX21hY2hpbmVfYmVhZ2xlYm9uZS15b2N0byA/PSAiMjU3Zjg0M2VhMzY3NzQ0NjIwZjFkOTI5MTBhZmQyZjQ1NGUzMTQ4MyIKLVNSQ1JFVl9tYWNoaW5lX21wYzgzMTVlLXJkYiA/PSAiMDE0NTYwODc0ZjllYjJhODYxMzhjOWNjMzUwNDZmZjE3MjA0ODVlMSIKK1NSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gIjk3ZTcxMGVmMDU0NWMxOWQzYzEwYmQ4MWE2MWJkY2E5ZmU1NDNiODEiCitTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICI5N2U3MTBlZjA1NDVjMTlkM2MxMGJkODFhNjFiZGNhOWZlNTQzYjgxIgorU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiOTdlNzEwZWYwNTQ1YzE5ZDNjMTBiZDgxYTYxYmRjYTlmZTU0M2I4MSIKK1NSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUteW9jdG8gPz0gIjk3ZTcxMGVmMDU0NWMxOWQzYzEwYmQ4MWE2MWJkY2E5ZmU1NDNiODEiCitTUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gIjU1ZmNmYmVlMjU2MGY1N2E0OTBjNTcyNGFjNWI1Y2I0OWJhY2IwMWMiCiAKIAogQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYgPSAiZ2VuZXJpY3g4NiIKIENPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2LTY0ID0gImdlbmVyaWN4ODYtNjQiCiBDT01QQVRJQkxFX01BQ0hJTkVfZWRnZXJvdXRlciA9ICJlZGdlcm91dGVyIgotQ09NUEFUSUJMRV9NQUNISU5FX2JlYWdsZWJvbmUgPSAiYmVhZ2xlYm9uZSIKK0NPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lLXlvY3RvID0gImJlYWdsZWJvbmUteW9jdG8iCiBDT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKIAotTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjQuMTIuMjAiCi1MSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC4xMi4yMCIKLUxJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjEyLjE5IgotTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjQuMTIuMTkiCi1MSU5VWF9WRVJTSU9OX21wYzgzMTVlLXJkYiA9ICI0LjEyLjE5IgorTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjQuMTIuMjEiCitMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC4xMi4yMSIKK0xJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjEyLjIxIgorTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjQuMTIuMjEiCitMSU5VWF9WRVJTSU9OX21wYzgzMTVlLXJkYiA9ICI0LjEyLjIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTQuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xNC5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTMwNzA3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTQuYmJhcHBlbmQKQEAgLTAsMCArMSwyNyBAQAorS0JSQU5DSF9nZW5lcmljeDg2ICA9ICJ2NC4xNC9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9nZW5lcmljeDg2LTY0ICA9ICJ2NC4xNC9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9lZGdlcm91dGVyID0gInY0LjE0L3N0YW5kYXJkL2VkZ2Vyb3V0ZXIiCitLQlJBTkNIX2JlYWdsZWJvbmUteW9jdG8gPSAidjQuMTQvc3RhbmRhcmQvYmVhZ2xlYm9uZSIKK0tCUkFOQ0hfbXBjODMxNWUtcmRiID0gInY0LjE0L3N0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIiCisKK0tNQUNISU5FX2dlbmVyaWN4ODYgPz0gImNvbW1vbi1wYyIKK0tNQUNISU5FX2dlbmVyaWN4ODYtNjQgPz0gImNvbW1vbi1wYy02NCIKK0tNQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPz0gImJlYWdsZWJvbmUiCisKK1NSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gIjFkNTBjZTIxMGIwNTM2ZWI5YTY2ZDFlNTZhZTIxNWY5MjE3NjQ0NGEiCitTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICIxZDUwY2UyMTBiMDUzNmViOWE2NmQxZTU2YWUyMTVmOTIxNzY0NDRhIgorU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiZjJkYzk0Zjc3ZDE5YWI2NWE4MzJiYWQ2ZjQyNjYyYzUwOWQyZWY5ZSIKK1NSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUteW9jdG8gPz0gIjZjMWEwMmQ0YTljMjI3ZWNhMzU2OTExNzE1YTUyY2Y5MjQ1N2VjMTYiCitTUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gIjdlOWEwYjAxN2JlN2I2ODVlMDk0NjM4ZjRiZGFhMzNhN2RmOGY3YzAiCisKK0NPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCitDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgorQ09NUEFUSUJMRV9NQUNISU5FX2VkZ2Vyb3V0ZXIgPSAiZWRnZXJvdXRlciIKK0NPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lLXlvY3RvID0gImJlYWdsZWJvbmUteW9jdG8iCitDT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKKworTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjQuMTQuMzAiCitMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC4xNC4zMCIKK0xJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjE0LjMwIgorTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjQuMTQuMzAiCitMSU5VWF9WRVJTSU9OX21wYzgzMTVlLXJkYiA9ICI0LjE0LjMwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTUuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xNS5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGM2YWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTUuYmJhcHBlbmQKQEAgLTAsMCArMSwyNyBAQAorS0JSQU5DSF9nZW5lcmljeDg2ICA9ICJ2NC4xNS9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9nZW5lcmljeDg2LTY0ICA9ICJ2NC4xNS9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9lZGdlcm91dGVyID0gInY0LjE1L3N0YW5kYXJkL2VkZ2Vyb3V0ZXIiCitLQlJBTkNIX2JlYWdsZWJvbmUteW9jdG8gPSAidjQuMTUvc3RhbmRhcmQvYmVhZ2xlYm9uZSIKK0tCUkFOQ0hfbXBjODMxNWUtcmRiID0gInY0LjE1L3N0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIiCisKK0tNQUNISU5FX2dlbmVyaWN4ODYgPz0gImNvbW1vbi1wYyIKK0tNQUNISU5FX2dlbmVyaWN4ODYtNjQgPz0gImNvbW1vbi1wYy02NCIKK0tNQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPz0gImJlYWdsZWJvbmUiCisKK1NSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gImY3M2ZkODc4M2EzZTc1Mjk5MDIzNjZiYTc1YWFmYjgxYzE5ZWMzYzkiCitTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICJmNzNmZDg3ODNhM2U3NTI5OTAyMzY2YmE3NWFhZmI4MWMxOWVjM2M5IgorU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiZjczZmQ4NzgzYTNlNzUyOTkwMjM2NmJhNzVhYWZiODFjMTllYzNjOSIKK1NSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUteW9jdG8gPz0gImY3M2ZkODc4M2EzZTc1Mjk5MDIzNjZiYTc1YWFmYjgxYzE5ZWMzYzkiCitTUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gImNjMjcxMWM0ZjNiODNiNWNkNzgzNThlN2M5NDlmZGJiNjA3NmUyNWIiCisKK0NPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCitDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgorQ09NUEFUSUJMRV9NQUNISU5FX2VkZ2Vyb3V0ZXIgPSAiZWRnZXJvdXRlciIKK0NPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lLXlvY3RvID0gImJlYWdsZWJvbmUteW9jdG8iCitDT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKKworTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjQuMTUuMTMiCitMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC4xNS4xMyIKK0xJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjE1LjEzIgorTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjQuMTUuMTMiCitMSU5VWF9WRVJTSU9OX21wYzgzMTVlLXJkYiA9ICI0LjE1LjEzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1Y2NlMWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUtCUkFOQ0hfZ2VuZXJpY3g4NiAgPSAic3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfZ2VuZXJpY3g4Ni02NCAgPSAic3RhbmRhcmQvYmFzZSIKLQotS01BQ0hJTkVfZ2VuZXJpY3g4NiA/PSAiY29tbW9uLXBjIgotS01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA/PSAiY29tbW9uLXBjLTY0IgotS0JSQU5DSF9lZGdlcm91dGVyID0gInN0YW5kYXJkL2VkZ2Vyb3V0ZXIiCi1LQlJBTkNIX2JlYWdsZWJvbmUgPSAic3RhbmRhcmQvYmVhZ2xlYm9uZSIKLUtCUkFOQ0hfbXBjODMxNWUtcmRiID0gInN0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIiCi0KLVNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gIjRkMzFhOGI3NjYxNTA5ZmYxMDQ0YWJjZjkwNTA3NTBjYzI0NzhlMjAiCi1TUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICI0ZDMxYThiNzY2MTUwOWZmMTA0NGFiY2Y5MDUwNzUwY2MyNDc4ZTIwIgotU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiNGQzMWE4Yjc2NjE1MDlmZjEwNDRhYmNmOTA1MDc1MGNjMjQ3OGUyMCIKLVNSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUteW9jdG8gPz0gIjRkMzFhOGI3NjYxNTA5ZmYxMDQ0YWJjZjkwNTA3NTBjYzI0NzhlMjAiCi1TUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gIjcwMTIwYzBhNmIwZjg4MTIyNzk5NzA1MTE0YTk5YTE1YmYwMTEzY2UiCi0KLUNPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCi1DT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgotQ09NUEFUSUJMRV9NQUNISU5FX2VkZ2Vyb3V0ZXIgPSAiZWRnZXJvdXRlciIKLUNPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lID0gImJlYWdsZWJvbmUiCi1DT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKLQotTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjQuNC4xMTMiCi1MSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC40LjExMyIKLUxJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjQuMTEzIgotTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjQuNC4xMTMiCi1MSU5VWF9WRVJTSU9OX21wYzgzMTVlLXJkYiA9ICI0LjQuMTEzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjkuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwYjJlZWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUtCUkFOQ0hfZ2VuZXJpY3g4NiAgPSAic3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfZ2VuZXJpY3g4Ni02NCAgPSAic3RhbmRhcmQvYmFzZSIKLQotS01BQ0hJTkVfZ2VuZXJpY3g4NiA/PSAiY29tbW9uLXBjIgotS01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA/PSAiY29tbW9uLXBjLTY0IgotS0JSQU5DSF9lZGdlcm91dGVyID0gInN0YW5kYXJkL2VkZ2Vyb3V0ZXIiCi1LQlJBTkNIX2JlYWdsZWJvbmUgPSAic3RhbmRhcmQvYmVhZ2xlYm9uZSIKLUtCUkFOQ0hfbXBjODMxNWUtcmRiID0gInN0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIiCi0KLVNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gImY3YTZkNDVmZmY4NTMxNzNiZmJmNjE3MDZhZWZmY2QxZDFlOTk0NjciCi1TUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICJmN2E2ZDQ1ZmZmODUzMTczYmZiZjYxNzA2YWVmZmNkMWQxZTk5NDY3IgotU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiZjdhNmQ0NWZmZjg1MzE3M2JmYmY2MTcwNmFlZmZjZDFkMWU5OTQ2NyIKLVNSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUteW9jdG8gPz0gImY3YTZkNDVmZmY4NTMxNzNiZmJmNjE3MDZhZWZmY2QxZDFlOTk0NjciCi1TUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gIjE5NWE4NTdhMGU0MjE1MGI5NDBkZmNiZGY4NTdiZTY2ZTA1ZGQwMDMiCi0KLUNPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCi1DT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgotQ09NUEFUSUJMRV9NQUNISU5FX2VkZ2Vyb3V0ZXIgPSAiZWRnZXJvdXRlciIKLUNPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lID0gImJlYWdsZWJvbmUiCi1DT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKLQotTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjQuOS43OCIKLUxJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4Ni02NCA9ICI0LjkuNzgiCi1MSU5VWF9WRVJTSU9OX2VkZ2Vyb3V0ZXIgPSAiNC45Ljc4IgotTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjQuOS43OCIKLUxJTlVYX1ZFUlNJT05fbXBjODMxNWUtcmRiID0gIjQuOS43OCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhLXlvY3RvLWJzcC93aWMvYmVhZ2xlYm9uZS53a3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3Avd2ljL2JlYWdsZWJvbmUteW9jdG8ud2tzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3Avd2ljL2JlYWdsZWJvbmUud2tzCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS15b2N0by1ic3Avd2ljL2JlYWdsZWJvbmUteW9jdG8ud2tzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2FyY2hpdmVyLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2FyY2hpdmVyLmJiY2xhc3MKaW5kZXggZWM4MGFkNC4uMzFjOWI3ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9hcmNoaXZlci5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYXJjaGl2ZXIuYmJjbGFzcwpAQCAtNDYsNyArNDYsNiBAQAogZG9fYXJfcmVjaXBlW2RpcnNdID0gIiR7QVJDSElWRVJfT1VURElSfSIKIGRvX2FyX29yaWdpbmFsW2RpcnNdID0gIiR7QVJDSElWRVJfT1VURElSfSAke0FSQ0hJVkVSX1dPUktESVJ9IgogZG9fZGVwbG95X2FyY2hpdmVzW2RpcnNdID0gIiR7V09SS0RJUn0iCi1kb19kZXBsb3lfYWxsX2FyY2hpdmVzW2RpcnNdID0gIiR7V09SS0RJUn0iCiAKICMgVGhpcyBpcyBhIGNvbnZlbmllbmNlIGZvciB0aGUgc2hlbGwgc2NyaXB0IHRvIHVzZSBpdAogCkBAIC0xMTQsMTAgKzExMyw5IEBACiAgICAgaWYgYXJfcmVjaXBlID09ICIxIjoKICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19kZXBsb3lfYXJjaGl2ZXMnLCAnZGVwZW5kcycsICcgJXM6ZG9fYXJfcmVjaXBlJyAlIHBuKQogCi0gICAgIyBPdXRwdXQgdGhlIHNycG0gcGFja2FnZQotICAgIGFyX3NycG0gPSBkLmdldFZhckZsYWcoJ0FSQ0hJVkVSX01PREUnLCAnc3JwbScpCi0gICAgaWYgYXJfc3JwbSA9PSAiMSI6Ci0gICAgICAgIGlmIGQuZ2V0VmFyKCdQQUNLQUdFUycpICE9ICcnIGFuZCBkLmdldFZhcignSU1BR0VfUEtHVFlQRScpID09ICdycG0nOgorICAgICMgT3V0cHV0IHRoZSBTUlBNIHBhY2thZ2UKKyAgICBpZiBkLmdldFZhckZsYWcoJ0FSQ0hJVkVSX01PREUnLCAnc3JwbScpID09ICIxIiBhbmQgZC5nZXRWYXIoJ1BBQ0tBR0VTJyk6CisgICAgICAgIGlmICJwYWNrYWdlX3JwbSIgaW4gZC5nZXRWYXIoJ1BBQ0tBR0VfQ0xBU1NFUycpOgogICAgICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19kZXBsb3lfYXJjaGl2ZXMnLCAnZGVwZW5kcycsICcgJXM6ZG9fcGFja2FnZV93cml0ZV9ycG0nICUgcG4pCiAgICAgICAgICAgICBpZiBhcl9kdW1wZGF0YSA9PSAiMSI6CiAgICAgICAgICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19wYWNrYWdlX3dyaXRlX3JwbScsICdkZXBlbmRzJywgJyAlczpkb19kdW1wZGF0YScgJSBwbikKQEAgLTEyOSw2ICsxMjcsOCBAQAogICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fcGFja2FnZV93cml0ZV9ycG0nLCAnZGVwZW5kcycsICcgJXM6ZG9fYXJfcGF0Y2hlZCcgJSBwbikKICAgICAgICAgICAgIGVsaWYgYXJfc3JjID09ICJjb25maWd1cmVkIjoKICAgICAgICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX3BhY2thZ2Vfd3JpdGVfcnBtJywgJ2RlcGVuZHMnLCAnICVzOmRvX2FyX2NvbmZpZ3VyZWQnICUgcG4pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBiYi5mYXRhbCgiQVJDSElWRVJfTU9ERVtzcnBtXSBuZWVkcyBwYWNrYWdlX3JwbSBpbiBQQUNLQUdFX0NMQVNTRVMiKQogfQogCiAjIFRha2UgYWxsIHRoZSBzb3VyY2VzIGZvciBhIHJlY2lwZSBhbmQgcHV0cyB0aGVtIGluIFdPUktESVIvYXJjaGl2ZXItd29yay8uCkBAIC0yNzcsNiArMjc3LDExIEBACiAgICAgaWYgKGQuZ2V0VmFyKCdTUkNfVVJJJykgPT0gIiIpOgogICAgICAgICByZXR1cm4KIAorICAgICMgRm9yIHRoZSBrZXJuZWwgYXJjaGl2ZSwgc3JjZGlyIG1heSBqdXN0IGJlIGEgbGluayB0byB0aGUKKyAgICAjIHdvcmstc2hhcmVkIGxvY2F0aW9uLiBVc2Ugb3MucGF0aC5yZWFscGF0aCB0byBtYWtlIHN1cmUKKyAgICAjIHRoYXQgd2UgYXJjaGl2ZSB0aGUgYWN0dWFsIGRpcmVjdG9yeSBhbmQgbm90IGp1c3QgdGhlIGxpbmsuCisgICAgc3JjZGlyID0gb3MucGF0aC5yZWFscGF0aChzcmNkaXIpCisKICAgICBiYi51dGlscy5ta2RpcmhpZXIoYXJfb3V0ZGlyKQogICAgIGlmIHN1ZmZpeDoKICAgICAgICAgZmlsZW5hbWUgPSAnJXMtJXMudGFyLmd6JyAlIChkLmdldFZhcignUEYnKSwgc3VmZml4KQpAQCAtMzE5LDYgKzMyNCwxMCBAQAogICAgIGZpbmFsbHk6CiAgICAgICAgIG9zLmNoZGlyKGN3ZCkKIAorZGVmIGlzX3dvcmtfc2hhcmVkKGQpOgorICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKKyAgICByZXR1cm4gYmIuZGF0YS5pbmhlcml0c19jbGFzcygna2VybmVsJywgZCkgb3IgcG4uc3RhcnRzd2l0aCgnZ2NjLXNvdXJjZScpCisKICMgUnVuIGRvX3VucGFjayBhbmQgZG9fcGF0Y2gKIHB5dGhvbiBkb191bnBhY2tfYW5kX3BhdGNoKCkgewogICAgIGlmIGQuZ2V0VmFyRmxhZygnQVJDSElWRVJfTU9ERScsICdzcmMnKSBub3QgaW4gXApAQCAtMzMxLDcgKzM0MCw3IEBACiAgICAgcG4gPSBkLmdldFZhcignUE4nKQogCiAgICAgIyBUaGUga2VybmVsIGNsYXNzIGZ1bmN0aW9ucyByZXF1aXJlIGl0IHRvIGJlIG9uIHdvcmstc2hhcmVkLCBzbyB3ZSBkb250IGNoYW5nZSBXT1JLRElSCi0gICAgaWYgbm90IChiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdrZXJuZWwteW9jdG8nLCBkKSBvciBwbi5zdGFydHN3aXRoKCdnY2Mtc291cmNlJykpOgorICAgIGlmIG5vdCBpc193b3JrX3NoYXJlZChkKToKICAgICAgICAgIyBDaGFuZ2UgdGhlIFdPUktESVIgdG8gbWFrZSBkb191bnBhY2sgZG9fcGF0Y2ggcnVuIGluIGFub3RoZXIgZGlyLgogICAgICAgICBkLnNldFZhcignV09SS0RJUicsIGFyX3dvcmtkaXIpCiAgICAgICAgICMgUmVzdG9yZSB0aGUgb3JpZ2luYWwgcGF0aCB0byByZWNpcGUncyBuYXRpdmUgc3lzcm9vdCAoaXQncyByZWxhdGl2ZSB0byBXT1JLRElSKS4KQEAgLTM1MSw3ICszNjAsNyBAQAogICAgICAgICBvZS5wYXRoLmNvcHl0cmVlKHNyYywgc3JjX29yaWcpCiAKICAgICAjIE1ha2Ugc3VyZSBnY2MgYW5kIGtlcm5lbCBzb3VyY2VzIGFyZSBwYXRjaGVkIG9ubHkgb25jZQotICAgIGlmIG5vdCAoZC5nZXRWYXIoJ1NSQ19VUkknKSA9PSAiIiBvciAoYmIuZGF0YS5pbmhlcml0c19jbGFzcygna2VybmVsLXlvY3RvJywgZCkgb3IgcG4uc3RhcnRzd2l0aCgnZ2NjLXNvdXJjZScpKSk6CisgICAgaWYgbm90IChkLmdldFZhcignU1JDX1VSSScpID09ICIiIG9yIGlzX3dvcmtfc2hhcmVkKGQpKToKICAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdkb19wYXRjaCcsIGQpCiAKICAgICAjIENyZWF0ZSB0aGUgcGF0Y2hlcwpAQCAtNDU1LDEzICs0NjQsNiBAQAogYWRkdGFzayBkb19hcl9yZWNpcGUKIGFkZHRhc2sgZG9fZGVwbG95X2FyY2hpdmVzIGJlZm9yZSBkb19idWlsZAogCi1hZGR0YXNrIGRvX2RlcGxveV9hbGxfYXJjaGl2ZXMgYWZ0ZXIgZG9fZGVwbG95X2FyY2hpdmVzCi1kb19kZXBsb3lfYWxsX2FyY2hpdmVzW3JlY3JkZXB0YXNrXSA9ICJkb19kZXBsb3lfYXJjaGl2ZXMiCi1kb19kZXBsb3lfYWxsX2FyY2hpdmVzW3JlY2lkZXB0YXNrXSA9ICJkb18ke0JCX0RFRkFVTFRfVEFTS30iCi1kb19kZXBsb3lfYWxsX2FyY2hpdmVzKCkgewotICAgICAgICA6Ci19Ci0KIHB5dGhvbiAoKSB7CiAgICAgIyBBZGQgdGFza3MgaW4gdGhlIGNvcnJlY3Qgb3JkZXIsIHNwZWNpZmljYWxseSBmb3IgbGludXgteW9jdG8gdG8gYXZvaWQgcmFjZSBjb25kaXRpb24uCiAgICAgIyBzc3RhdGVzaWcucHk6c3N0YXRlX3J1bmRlcGZpbHRlciBoYXMgc3BlY2lhbCBzdXBwb3J0IHRoYXQgZXhjbHVkZXMgdGhpcyBkZXBlbmRlbmN5CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2F1dG90b29scy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9hdXRvdG9vbHMuYmJjbGFzcwppbmRleCBlZmE0MDk4Li5jYzg1N2FjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2F1dG90b29scy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYXV0b3Rvb2xzLmJiY2xhc3MKQEAgLTIwMCw3ICsyMDAsNyBAQAogCQkJCWJibm90ZSBFeGVjdXRpbmcgZ2xpYi1nZXR0ZXh0aXplIC0tZm9yY2UgLS1jb3B5CiAJCQkJZWNobyAibm8iIHwgZ2xpYi1nZXR0ZXh0aXplIC0tZm9yY2UgLS1jb3B5CiAJCQlmaQotCQllbGlmIGdyZXAgLXEgIl5bWzpzcGFjZTpdXSpBTV9HTlVfR0VUVEVYVCIgJENPTkZJR1VSRV9BQzsgdGhlbgorCQllbGlmIFsgIiR7QlBOfSIgIT0gImdldHRleHQiIF0gJiYgZ3JlcCAtcSAiXltbOnNwYWNlOl1dKkFNX0dOVV9HRVRURVhUIiAkQ09ORklHVVJFX0FDOyB0aGVuCiAJCQkjIFdlJ2QgY2FsbCBnZXR0ZXh0aXplIGhlcmUgaWYgaXQgd2Fzbid0IHNvIGJyb2tlbi4uLgogCQkJY3AgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nZXR0ZXh0L2NvbmZpZy5ycGF0aCAke0FVVE9UT09MU19BVVhESVJ9LwogCQkJaWYgWyAtZCAke1N9L3BvLyBdOyB0aGVuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Jhc2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYmFzZS5iYmNsYXNzCmluZGV4IGJkMGQ2ZTMuLmJiMWY0YjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYmFzZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYmFzZS5iYmNsYXNzCkBAIC0xNTIsMTIgKzE1Miw4IEBACiBhZGR0YXNrIHVucGFjayBhZnRlciBkb19mZXRjaAogZG9fdW5wYWNrW2RpcnNdID0gIiR7V09SS0RJUn0iCiAKLXB5dGhvbiAoKSB7Ci0gICAgaWYgZC5nZXRWYXIoJ1MnKSAhPSBkLmdldFZhcignV09SS0RJUicpOgotICAgICAgICBkLnNldFZhckZsYWcoJ2RvX3VucGFjaycsICdjbGVhbmRpcnMnLCAnJHtTfScpCi0gICAgZWxzZToKLSAgICAgICAgZC5zZXRWYXJGbGFnKCdkb191bnBhY2snLCAnY2xlYW5kaXJzJywgb3MucGF0aC5qb2luKCcke1N9JywgJ3BhdGNoZXMnKSkKLX0KK2RvX3VucGFja1tjbGVhbmRpcnNdID0gIiR7QGQuZ2V0VmFyKCdTJykgaWYgZC5nZXRWYXIoJ1MnKSAhPSBkLmdldFZhcignV09SS0RJUicpIGVsc2Ugb3MucGF0aC5qb2luKCcke1N9JywgJ3BhdGNoZXMnKX0iCisKIHB5dGhvbiBiYXNlX2RvX3VucGFjaygpIHsKICAgICBzcmNfdXJpID0gKGQuZ2V0VmFyKCdTUkNfVVJJJykgb3IgIiIpLnNwbGl0KCkKICAgICBpZiBsZW4oc3JjX3VyaSkgPT0gMDoKQEAgLTE3MCwxMiArMTY2LDYgQEAKICAgICAgICAgYmIuZmF0YWwoc3RyKGUpKQogfQogCi1kZWYgcGtnYXJjaF9tYXBwaW5nKGQpOgotICAgICMgQ29tcGF0aWJpbGl0eSBtYXBwaW5ncyBvZiBUVU5FX1BLR0FSQ0ggKG9wdCBpbikKLSAgICBpZiBkLmdldFZhcigiUEtHQVJDSENPTVBBVF9BUk1WN0EiKToKLSAgICAgICAgaWYgZC5nZXRWYXIoIlRVTkVfUEtHQVJDSCIpID09ICJhcm12N2EtdmZwLW5lb24iOgotICAgICAgICAgICAgZC5zZXRWYXIoIlRVTkVfUEtHQVJDSCIsICJhcm12N2EiKQotCiBkZWYgZ2V0X2xheWVyc19icmFuY2hfcmV2KGQpOgogICAgIGxheWVycyA9IChkLmdldFZhcigiQkJMQVlFUlMiKSBvciAiIikuc3BsaXQoKQogICAgIGxheWVyc19icmFuY2hfcmV2ID0gWyIlLTIwcyA9IFwiJXM6JXNcIiIgJSAob3MucGF0aC5iYXNlbmFtZShpKSwgXApAQCAtMjI1LDEyICsyMTUsOSBAQAogICAgIGltcG9ydCBiYi5ydW5xdWV1ZQogCiAgICAgaWYgaXNpbnN0YW5jZShlLCBiYi5ldmVudC5Db25maWdQYXJzZWQpOgotICAgICAgICBpZiBub3QgZS5kYXRhLmdldFZhcigiTkFUSVZFTFNCU1RSSU5HIiwgRmFsc2UpOgotICAgICAgICAgICAgZS5kYXRhLnNldFZhcigiTkFUSVZFTFNCU1RSSU5HIiwgbHNiX2Rpc3Ryb19pZGVudGlmaWVyKGUuZGF0YSkpCi0gICAgICAgIGUuZGF0YS5zZXRWYXIoJ0JCX1ZFUlNJT04nLCBiYi5fX3ZlcnNpb25fXykKLSAgICAgICAgcGtnYXJjaF9tYXBwaW5nKGUuZGF0YSkKLSAgICAgICAgb2UudXRpbHMuZmVhdHVyZXNfYmFja2ZpbGwoIkRJU1RST19GRUFUVVJFUyIsIGUuZGF0YSkKLSAgICAgICAgb2UudXRpbHMuZmVhdHVyZXNfYmFja2ZpbGwoIk1BQ0hJTkVfRkVBVFVSRVMiLCBlLmRhdGEpCisgICAgICAgIGlmIG5vdCBkLmdldFZhcigiTkFUSVZFTFNCU1RSSU5HIiwgRmFsc2UpOgorICAgICAgICAgICAgZC5zZXRWYXIoIk5BVElWRUxTQlNUUklORyIsIGxzYl9kaXN0cm9faWRlbnRpZmllcihkKSkKKyAgICAgICAgZC5zZXRWYXIoJ0JCX1ZFUlNJT04nLCBiYi5fX3ZlcnNpb25fXykKICAgICAgICAgIyBXb3JrcyB3aXRoIHRoZSBsaW5lIGluIGxheWVyLmNvbmYgd2hpY2ggY2hhbmdlcyBQQVRIIHRvIHBvaW50IGhlcmUKICAgICAgICAgc2V0dXBfaG9zdHRvb2xzX2RpcihkLmdldFZhcignSE9TVFRPT0xTX0RJUicpLCAnSE9TVFRPT0xTJywgZCkKICAgICAgICAgc2V0dXBfaG9zdHRvb2xzX2RpcihkLmdldFZhcignSE9TVFRPT0xTX0RJUicpLCAnSE9TVFRPT0xTX05PTkZBVEFMJywgZCwgZmF0YWw9RmFsc2UpCkBAIC0yNDYsNyArMjMzLDcgQEAKICAgICAgICAgZS5tY2RhdGFbJyddLnNldFZhcigiU0lHR0VOX0VYQ0xVREVfU0FGRV9SRUNJUEVfREVQUyIsIGRlcHMpCiAKICAgICBpZiBpc2luc3RhbmNlKGUsIGJiLmV2ZW50LkJ1aWxkU3RhcnRlZCk6Ci0gICAgICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShlLmRhdGEpCisgICAgICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQogICAgICAgICBzdGF0dXNsaW5lcyA9IFtdCiAgICAgICAgIGZvciBmdW5jIGluIG9lLmRhdGEudHlwZWRfdmFsdWUoJ0JVSUxEQ0ZHX0ZVTkNTJywgbG9jYWxkYXRhKToKICAgICAgICAgICAgIGcgPSBnbG9iYWxzKCkKQEAgLTI1Nyw3ICsyNDQsNyBAQAogICAgICAgICAgICAgICAgIGlmIGZsaW5lczoKICAgICAgICAgICAgICAgICAgICAgc3RhdHVzbGluZXMuZXh0ZW5kKGZsaW5lcykKIAotICAgICAgICBzdGF0dXNoZWFkZXIgPSBlLmRhdGEuZ2V0VmFyKCdCVUlMRENGR19IRUFERVInKQorICAgICAgICBzdGF0dXNoZWFkZXIgPSBkLmdldFZhcignQlVJTERDRkdfSEVBREVSJykKICAgICAgICAgaWYgc3RhdHVzaGVhZGVyOgogICAgICAgICAgICAgYmIucGxhaW4oJ1xuJXNcbiVzXG4nICUgKHN0YXR1c2hlYWRlciwgJ1xuJy5qb2luKHN0YXR1c2xpbmVzKSkpCiAKQEAgLTI2NSwyMyArMjUyLDIzIEBACiAgICAgIyB0YXJnZXQgb25lcyBhbmQgd2UnZCBzZWUgZHVscGljYXRlIGtleSBuYW1lcyBvdmVyd3JpdGluZyBlYWNoIG90aGVyCiAgICAgIyBmb3IgdmFyaW91cyBQUkVGRVJSRURfUFJPVklERVJTCiAgICAgaWYgaXNpbnN0YW5jZShlLCBiYi5ldmVudC5SZWNpcGVQcmVGaW5hbGlzZSk6Ci0gICAgICAgIGlmIGUuZGF0YS5nZXRWYXIoIlRBUkdFVF9QUkVGSVgiKSA9PSBlLmRhdGEuZ2V0VmFyKCJTREtfUFJFRklYIik6Ci0gICAgICAgICAgICBlLmRhdGEuZGVsVmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9YmludXRpbHMiKQotICAgICAgICAgICAgZS5kYXRhLmRlbFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYy1pbml0aWFsIikKLSAgICAgICAgICAgIGUuZGF0YS5kZWxWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2MiKQotICAgICAgICAgICAgZS5kYXRhLmRlbFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWcrKyIpCi0gICAgICAgICAgICBlLmRhdGEuZGVsVmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Y29tcGlsZXJsaWJzIikKKyAgICAgICAgaWYgZC5nZXRWYXIoIlRBUkdFVF9QUkVGSVgiKSA9PSBkLmdldFZhcigiU0RLX1BSRUZJWCIpOgorICAgICAgICAgICAgZC5kZWxWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1iaW51dGlscyIpCisgICAgICAgICAgICBkLmRlbFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYy1pbml0aWFsIikKKyAgICAgICAgICAgIGQuZGVsVmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z2NjIikKKyAgICAgICAgICAgIGQuZGVsVmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9ZysrIikKKyAgICAgICAgICAgIGQuZGVsVmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Y29tcGlsZXJsaWJzIikKIAogICAgIGlmIGlzaW5zdGFuY2UoZSwgYmIucnVucXVldWUuc2NlbmVRdWV1ZUNvbXBsZXRlKToKLSAgICAgICAgY29tcGxldGlvbnMgPSBlLmRhdGEuZXhwYW5kKCIke1NUQUdJTkdfRElSfS9zc3RhdGVjb21wbGV0aW9ucyIpCisgICAgICAgIGNvbXBsZXRpb25zID0gZC5leHBhbmQoIiR7U1RBR0lOR19ESVJ9L3NzdGF0ZWNvbXBsZXRpb25zIikKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoY29tcGxldGlvbnMpOgogICAgICAgICAgICAgY21kcyA9IHNldCgpCiAgICAgICAgICAgICB3aXRoIG9wZW4oY29tcGxldGlvbnMsICJyIikgYXMgZjoKICAgICAgICAgICAgICAgICBjbWRzID0gc2V0KGYpCi0gICAgICAgICAgICBlLmRhdGEuc2V0VmFyKCJjb21wbGV0aW9uX2Z1bmN0aW9uIiwgIlxuIi5qb2luKGNtZHMpKQotICAgICAgICAgICAgZS5kYXRhLnNldFZhckZsYWcoImNvbXBsZXRpb25fZnVuY3Rpb24iLCAiZnVuYyIsICIxIikKKyAgICAgICAgICAgIGQuc2V0VmFyKCJjb21wbGV0aW9uX2Z1bmN0aW9uIiwgIlxuIi5qb2luKGNtZHMpKQorICAgICAgICAgICAgZC5zZXRWYXJGbGFnKCJjb21wbGV0aW9uX2Z1bmN0aW9uIiwgImZ1bmMiLCAiMSIpCiAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiRXhlY3V0aW5nIFNjZW5lUXVldWUgQ29tcGxldGlvbiBjb21tYW5kczogJXMiICUgIlxuIi5qb2luKGNtZHMpKQotICAgICAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCJjb21wbGV0aW9uX2Z1bmN0aW9uIiwgZS5kYXRhKQorICAgICAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCJjb21wbGV0aW9uX2Z1bmN0aW9uIiwgZCkKICAgICAgICAgICAgIG9zLnJlbW92ZShjb21wbGV0aW9ucykKIAogICAgIGlmIGlzaW5zdGFuY2UoZSwgYmIuZXZlbnQuUmVjaXBlUGFyc2VkKToKQEAgLTMwMCw3ICsyODcsNyBAQAogICAgICAgICAgICAgICAgIGlmIHAuc3RhcnRzd2l0aCgidmlydHVhbC8iKSBhbmQgcCBub3QgaW4gbXVsdGl3aGl0ZWxpc3Q6CiAgICAgICAgICAgICAgICAgICAgIHByb2Zwcm92ID0gZC5nZXRWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl8iICsgcCkKICAgICAgICAgICAgICAgICAgICAgaWYgcHJvZnByb3YgYW5kIHBuICE9IHByb2Zwcm92OgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIlBSRUZFUlJFRF9QUk9WSURFUl8lcyBzZXQgdG8gJXMsIG5vdCAlcyIgJSAocCwgcHJvZnByb3YsIHBuKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIlBSRUZFUlJFRF9QUk9WSURFUl8lcyBzZXQgdG8gJXMsIG5vdCAlcyIgJSAocCwgcHJvZnByb3YsIHBuKSkKIH0KIAogQ09ORklHVVJFU1RBTVBGSUxFID0gIiR7V09SS0RJUn0vY29uZmlndXJlLnNzdGF0ZSIKQEAgLTM4OSw2ICszNzYsMTAgQEAKIHB5dGhvbiAoKSB7CiAgICAgaW1wb3J0IHN0cmluZywgcmUKIAorICAgICMgSGFuZGxlIGJhY2tmaWxsaW5nCisgICAgb2UudXRpbHMuZmVhdHVyZXNfYmFja2ZpbGwoIkRJU1RST19GRUFUVVJFUyIsIGQpCisgICAgb2UudXRpbHMuZmVhdHVyZXNfYmFja2ZpbGwoIk1BQ0hJTkVfRkVBVFVSRVMiLCBkKQorCiAgICAgIyBIYW5kbGUgUEFDS0FHRUNPTkZJRwogICAgICMKICAgICAjIFRoZXNlIHRha2UgdGhlIGZvcm06CkBAIC00NjMsNyArNDU0LDcgQEAKIAogICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKICAgICBsaWNlbnNlID0gZC5nZXRWYXIoJ0xJQ0VOU0UnKQotICAgIGlmIGxpY2Vuc2UgPT0gIklOVkFMSUQiOgorICAgIGlmIGxpY2Vuc2UgPT0gIklOVkFMSUQiIGFuZCBwbiAhPSAiZGVmYXVsdHBrZ25hbWUiOgogICAgICAgICBiYi5mYXRhbCgnVGhpcyByZWNpcGUgZG9lcyBub3QgaGF2ZSB0aGUgTElDRU5TRSBmaWVsZCBzZXQgKCVzKScgJSBwbikKIAogICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2xpY2Vuc2UnLCBkKToKQEAgLTQ3Miw3ICs0NjMsNyBAQAogICAgICAgICBpZiB1bm1hdGNoZWRfbGljZW5zZV9mbGFnOgogICAgICAgICAgICAgYmIuZGVidWcoMSwgIlNraXBwaW5nICVzIGJlY2F1c2UgaXQgaGFzIGEgcmVzdHJpY3RlZCBsaWNlbnNlIG5vdCIKICAgICAgICAgICAgICAgICAgIiB3aGl0ZWxpc3RlZCBpbiBMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCIgJSBwbikKLSAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJiZWNhdXNlIGl0IGhhcyBhIHJlc3RyaWN0ZWQgbGljZW5zZSBub3QiCisgICAgICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJiZWNhdXNlIGl0IGhhcyBhIHJlc3RyaWN0ZWQgbGljZW5zZSBub3QiCiAgICAgICAgICAgICAgICAgICIgd2hpdGVsaXN0ZWQgaW4gTElDRU5TRV9GTEFHU19XSElURUxJU1QiKQogCiAgICAgIyBJZiB3ZSdyZSBidWlsZGluZyBhIHRhcmdldCBwYWNrYWdlIHdlIG5lZWQgdG8gdXNlIGZha2Vyb290IChwc2V1ZG8pCkBAIC01MDAsNyArNDkxLDcgQEAKICAgICAgICAgICAgIGlmIHJlLm1hdGNoKG5lZWRfbWFjaGluZSwgbSk6CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJpbmNvbXBhdGlibGUgd2l0aCBtYWNoaW5lICVzIChub3QgaW4gQ09NUEFUSUJMRV9NQUNISU5FKSIgJSBkLmdldFZhcignTUFDSElORScpKQorICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiaW5jb21wYXRpYmxlIHdpdGggbWFjaGluZSAlcyAobm90IGluIENPTVBBVElCTEVfTUFDSElORSkiICUgZC5nZXRWYXIoJ01BQ0hJTkUnKSkKIAogICAgIHNvdXJjZV9taXJyb3JfZmV0Y2ggPSBkLmdldFZhcignU09VUkNFX01JUlJPUl9GRVRDSCcsIEZhbHNlKQogICAgIGlmIG5vdCBzb3VyY2VfbWlycm9yX2ZldGNoOgpAQCAtNTA5LDcgKzUwMCw3IEBACiAgICAgICAgICAgICBpbXBvcnQgcmUKICAgICAgICAgICAgIHRoaXNfaG9zdCA9IGQuZ2V0VmFyKCdIT1NUX1NZUycpCiAgICAgICAgICAgICBpZiBub3QgcmUubWF0Y2gobmVlZF9ob3N0LCB0aGlzX2hvc3QpOgotICAgICAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJpbmNvbXBhdGlibGUgd2l0aCBob3N0ICVzIChub3QgaW4gQ09NUEFUSUJMRV9IT1NUKSIgJSB0aGlzX2hvc3QpCisgICAgICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiaW5jb21wYXRpYmxlIHdpdGggaG9zdCAlcyAobm90IGluIENPTVBBVElCTEVfSE9TVCkiICUgdGhpc19ob3N0KQogCiAgICAgICAgIGJhZF9saWNlbnNlcyA9IChkLmdldFZhcignSU5DT01QQVRJQkxFX0xJQ0VOU0UnKSBvciAiIikuc3BsaXQoKQogCkBAIC01NjIsNyArNTUzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICJJTkNMVURJTkcgdGhlIHBhY2thZ2UgIiArIHBrZykKICAgICAgICAgICAgICAgICBlbGlmIGFsbF9za2lwcGVkIG9yIGluY29tcGF0aWJsZV9saWNlbnNlKGQsIGJhZF9saWNlbnNlcyk6CiAgICAgICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICJTS0lQUElORyByZWNpcGUgJXMgYmVjYXVzZSBpdCdzICVzIiAlIChwbiwgbGljZW5zZSkpCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJpdCBoYXMgYW4gaW5jb21wYXRpYmxlIGxpY2Vuc2U6ICVzIiAlIGxpY2Vuc2UpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIml0IGhhcyBhbiBpbmNvbXBhdGlibGUgbGljZW5zZTogJXMiICUgbGljZW5zZSkKICAgICAgICAgICAgIGVsaWYgcG4gaW4gd2hpdGVsaXN0OgogICAgICAgICAgICAgICAgIGlmIHBuIGluIGluY29tcGF0d2w6CiAgICAgICAgICAgICAgICAgICAgIGJiLm5vdGUoIklOQ0xVRElORyAiICsgcG4gKyAiIGFzIGJ1aWxkYWJsZSBkZXNwaXRlIElOQ09NUEFUSUJMRV9MSUNFTlNFIGJlY2F1c2UgaXQgaGFzIGJlZW4gd2hpdGVsaXN0ZWQiKQpAQCAtNjM1LDYgKzYyNiwxMCBAQAogICAgICAgICBlbGlmIHBhdGguZW5kc3dpdGgoJy5ycG0nKToKICAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fdW5wYWNrJywgJ2RlcGVuZHMnLCAnIHh6LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JykKIAorICAgICAgICAjICouZGViIHNob3VsZCBERVBFTkQgb24geHotbmF0aXZlIGZvciB1bnBhY2tpbmcKKyAgICAgICAgZWxpZiBwYXRoLmVuZHN3aXRoKCcuZGViJyk6CisgICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX3VucGFjaycsICdkZXBlbmRzJywgJyB4ei1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcpCisKICAgICBpZiBuZWVkc3JjcmV2OgogICAgICAgICBkLnNldFZhcigiU1JDUFYiLCAiJHtAYmIuZmV0Y2gyLmdldF9zcmNyZXYoZCl9IikKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9iaW5fcGFja2FnZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9iaW5fcGFja2FnZS5iYmNsYXNzCmluZGV4IGE1MmI3NWIuLmNiYzliMWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYmluX3BhY2thZ2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Jpbl9wYWNrYWdlLmJiY2xhc3MKQEAgLTI2LDcgKzI2LDEwIEBACiBiaW5fcGFja2FnZV9kb19pbnN0YWxsICgpIHsKICAgICAjIERvIGl0IGNhcmVmdWxseQogICAgIFsgLWQgIiR7U30iIF0gfHwgZXhpdCAxCi0gICAgY2QgJHtTfSB8fCBleGl0IDEKKyAgICBpZiBbIC16ICIkKGxzIC1BICR7U30pIiBdOyB0aGVuCisgICAgICAgIGJiZmF0YWwgYmluX3BhY2thZ2UgaGFzIG5vdGhpbmcgdG8gaW5zdGFsbC4gQmUgc3VyZSB0aGUgU1JDX1VSSSB1bnBhY2tzIGludG8gUy4KKyAgICBmaQorICAgIGNkICR7U30KICAgICB0YXIgLS1uby1zYW1lLW93bmVyIC0tZXhjbHVkZT0nLi9wYXRjaGVzJyAtLWV4Y2x1ZGU9Jy4vLnBjJyAtY3BmIC0gLiBcCiAgICAgICAgIHwgdGFyIC0tbm8tc2FtZS1vd25lciAteHBmIC0gLUMgJHtEfQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ibGFja2xpc3QuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYmxhY2tsaXN0LmJiY2xhc3MKaW5kZXggZTU4NTY0Yy4uZGM3OTQyMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ibGFja2xpc3QuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2JsYWNrbGlzdC5iYmNsYXNzCkBAIC0xNiw1ICsxNiw1IEBACiAgICAgYmxhY2tsaXN0ID0gZC5nZXRWYXJGbGFnKCdQTkJMQUNLTElTVCcsIGQuZ2V0VmFyKCdQTicpKQogCiAgICAgaWYgYmxhY2tsaXN0OgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiUmVjaXBlIGlzIGJsYWNrbGlzdGVkOiAlcyIgJSAoYmxhY2tsaXN0KSkKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiUmVjaXBlIGlzIGJsYWNrbGlzdGVkOiAlcyIgJSAoYmxhY2tsaXN0KSkKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRoaXN0b3J5LmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2J1aWxkaGlzdG9yeS5iYmNsYXNzCmluZGV4IDdhNTUzNGUuLjYzOTgwZjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRoaXN0b3J5LmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9idWlsZGhpc3RvcnkuYmJjbGFzcwpAQCAtMzcsNyArMzcsNyBAQAogQlVJTERISVNUT1JZX0RJUl9TREsgPSAiJHtCVUlMREhJU1RPUllfRElSfS9zZGsvJHtTREtfTkFNRX0ke1NES19FWFR9LyR7SU1BR0VfQkFTRU5BTUV9IgogQlVJTERISVNUT1JZX0lNQUdFX0ZJTEVTID89ICIvZXRjL3Bhc3N3ZCAvZXRjL2dyb3VwIgogQlVJTERISVNUT1JZX1NES19GSUxFUyA/PSAiY29uZi9sb2NhbC5jb25mIGNvbmYvYmJsYXllcnMuY29uZiBjb25mL2F1dG8uY29uZiBjb25mL2xvY2tlZC1zaWdzLmluYyBjb25mL2RldnRvb2wuY29uZiIKLUJVSUxESElTVE9SWV9DT01NSVQgPz0gIjAiCitCVUlMREhJU1RPUllfQ09NTUlUID89ICIxIgogQlVJTERISVNUT1JZX0NPTU1JVF9BVVRIT1IgPz0gImJ1aWxkaGlzdG9yeSA8YnVpbGRoaXN0b3J5QCR7RElTVFJPfT4iCiBCVUlMREhJU1RPUllfUFVTSF9SRVBPID89ICIiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY21ha2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY21ha2UuYmJjbGFzcwppbmRleCBhYzJjMTUxLi5mY2ZkNWRkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2NtYWtlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jbWFrZS5iYmNsYXNzCkBAIC03LDYgKzcsMjMgQEAKICMgV2UgbmVlZCB0byB1bnNldCBDQ0FDSEUgb3RoZXJ3aXNlIGNtYWtlIGdldHMgdG9vIGNvbmZ1c2VkCiBDQ0FDSEUgPSAiIgogCisjIFdoYXQgQ01ha2UgZ2VuZXJhdG9yIHRvIHVzZS4KKyMgVGhlIHN1cHBvcnRlZCBvcHRpb25zIGFyZSAiVW5peCBNYWtlZmlsZXMiIG9yICJOaW5qYSIuCitPRUNNQUtFX0dFTkVSQVRPUiA/PSAiTmluamEiCisKK3B5dGhvbigpIHsKKyAgICBnZW5lcmF0b3IgPSBkLmdldFZhcigiT0VDTUFLRV9HRU5FUkFUT1IiKQorICAgIGlmIGdlbmVyYXRvciA9PSAiVW5peCBNYWtlZmlsZXMiOgorICAgICAgICBhcmdzID0gIi1HICdVbml4IE1ha2VmaWxlcycgLURDTUFLRV9NQUtFX1BST0dSQU09IiArIGQuZ2V0VmFyKCJNQUtFIikKKyAgICAgICAgZC5zZXRWYXIoIk9FQ01BS0VfR0VORVJBVE9SX0FSR1MiLCBhcmdzKQorICAgICAgICBkLnNldFZhckZsYWcoImRvX2NvbXBpbGUiLCAicHJvZ3Jlc3MiLCAicGVyY2VudCIpCisgICAgZWxpZiBnZW5lcmF0b3IgPT0gIk5pbmphIjoKKyAgICAgICAgZC5hcHBlbmRWYXIoIkRFUEVORFMiLCAiIG5pbmphLW5hdGl2ZSIpCisgICAgICAgIGQuc2V0VmFyKCJPRUNNQUtFX0dFTkVSQVRPUl9BUkdTIiwgIi1HIE5pbmphIC1EQ01BS0VfTUFLRV9QUk9HUkFNPW5pbmphIikKKyAgICAgICAgZC5zZXRWYXJGbGFnKCJkb19jb21waWxlIiwgInByb2dyZXNzIiwgIm91dG9mOl5cWyhcZCspLyhcZCspXF1ccysiKQorICAgIGVsc2U6CisgICAgICAgIGJiLmZhdGFsKCJVbmtub3duIENNYWtlIEdlbmVyYXRvciAlcyIgJSBnZW5lcmF0b3IpCit9CiAjIEMvQysrIENvbXBpbGVyICh3aXRob3V0IGNwdSBhcmNoL3R1bmUgYXJndW1lbnRzKQogT0VDTUFLRV9DX0NPTVBJTEVSID89ICJgZWNobyAke0NDfSB8IHNlZCAncy9eXChbXiBdKlwpLiovXDEvJ2AiCiBPRUNNQUtFX0NYWF9DT01QSUxFUiA/PSAiYGVjaG8gJHtDWFh9IHwgc2VkICdzL15cKFteIF0qXCkuKi9cMS8nYCIKQEAgLTM0LDYgKzUxLDExIEBACiBFWFRSQV9PRUNNQUtFX0JVSUxEX3ByZXBlbmRfdGFzay1jb21waWxlID0gIiR7UEFSQUxMRUxfTUFLRX0gIgogRVhUUkFfT0VDTUFLRV9CVUlMRF9wcmVwZW5kX3Rhc2staW5zdGFsbCA9ICIke1BBUkFMTEVMX01BS0VJTlNUfSAiCiAKK09FQ01BS0VfVEFSR0VUX0NPTVBJTEUgPz0gImFsbCIKK09FQ01BS0VfVEFSR0VUX0lOU1RBTEwgPz0gImluc3RhbGwiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlICR7ZGF0YWRpcn0vY21ha2UiCisKICMgQ01ha2UgZXhwZWN0cyB0YXJnZXQgYXJjaGl0ZWN0dXJlcyBpbiB0aGUgZm9ybWF0IG9mIHVuYW1lKDIpLAogIyB3aGljaCBkbyBub3QgYWx3YXlzIG1hdGNoIFRBUkdFVF9BUkNILCBzbyBhbGwgdGhlIG5lY2Vzc2FyeQogIyBjb252ZXJzaW9ucyBzaG91bGQgaGFwcGVuIGhlcmUuCkBAIC0xMTYsNiArMTM4LDcgQEAKIAlmaQogCiAJY21ha2UgXAorCSAgJHtPRUNNQUtFX0dFTkVSQVRPUl9BUkdTfSBcCiAJICAkb2VjbWFrZV9zaXRlZmlsZSBcCiAJICAke09FQ01BS0VfU09VUkNFUEFUSH0gXAogCSAgLURDTUFLRV9JTlNUQUxMX1BSRUZJWDpQQVRIPSR7cHJlZml4fSBcCkBAIC0xMzYsMTUgKzE1OSwxNyBAQAogCSAgLVduby1kZXYKIH0KIAotZG9fY29tcGlsZVtwcm9ncmVzc10gPSAicGVyY2VudCIKK2NtYWtlX3J1bmNtYWtlX2J1aWxkKCkgeworCWJibm90ZSAke0RFU1RESVI6K0RFU1RESVI9JHtERVNURElSfSB9VkVSQk9TRT0xIGNtYWtlIC0tYnVpbGQgJyR7Qn0nICIkQCIgLS0gJHtFWFRSQV9PRUNNQUtFX0JVSUxEfQorCWV2YWwgJHtERVNURElSOitERVNURElSPSR7REVTVERJUn0gfVZFUkJPU0U9MSBjbWFrZSAtLWJ1aWxkICcke0J9JyAiJEAiIC0tICR7RVhUUkFfT0VDTUFLRV9CVUlMRH0KK30KKwogY21ha2VfZG9fY29tcGlsZSgpICB7Ci0JYmJub3RlIFZFUkJPU0U9MSBjbWFrZSAtLWJ1aWxkICcke0J9JyAtLSAke0VYVFJBX09FQ01BS0VfQlVJTER9Ci0JVkVSQk9TRT0xIGNtYWtlIC0tYnVpbGQgJyR7Qn0nIC0tICR7RVhUUkFfT0VDTUFLRV9CVUlMRH0KKwljbWFrZV9ydW5jbWFrZV9idWlsZCAtLXRhcmdldCAke09FQ01BS0VfVEFSR0VUX0NPTVBJTEV9CiB9CiAKIGNtYWtlX2RvX2luc3RhbGwoKSB7Ci0JYmJub3RlIERFU1RESVI9JyR7RH0nIGNtYWtlIC0tYnVpbGQgJyR7Qn0nIC0tdGFyZ2V0IGluc3RhbGwgLS0gJHtFWFRSQV9PRUNNQUtFX0JVSUxEfQotCURFU1RESVI9JyR7RH0nIGNtYWtlIC0tYnVpbGQgJyR7Qn0nIC0tdGFyZ2V0IGluc3RhbGwgLS0gJHtFWFRSQV9PRUNNQUtFX0JVSUxEfQorCURFU1RESVI9JyR7RH0nIGNtYWtlX3J1bmNtYWtlX2J1aWxkIC0tdGFyZ2V0ICR7T0VDTUFLRV9UQVJHRVRfSU5TVEFMTH0KIH0KIAogRVhQT1JUX0ZVTkNUSU9OUyBkb19jb25maWd1cmUgZG9fY29tcGlsZSBkb19pbnN0YWxsIGRvX2dlbmVyYXRlX3Rvb2xjaGFpbl9maWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLWNhbmFkaWFuLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLWNhbmFkaWFuLmJiY2xhc3MKaW5kZXggMTkyODQ1NS4uZWU4YWE2MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy1jYW5hZGlhbi5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MtY2FuYWRpYW4uYmJjbGFzcwpAQCAtMzgsNyArMzgsNyBAQAogICAgIGV4dHJhbGliY3MgPSBbIiJdCiAgICAgaWYgIm11c2wiIGluIGQuZ2V0VmFyKCJCQVNFQ0FOQURJQU5FWFRSQU9TIik6CiAgICAgICAgIGV4dHJhbGliY3MuYXBwZW5kKCJtdXNsIikKLSAgICBmb3IgdmFyaWFudCBpbiBbIiIsICJzcGUiLCAieDMyIiwgImVhYmkiLCAibjMyIiwgImlscDMyIl06CisgICAgZm9yIHZhcmlhbnQgaW4gWyIiLCAic3BlIiwgIngzMiIsICJlYWJpIiwgIm4zMiIsICJfaWxwMzIiXToKICAgICAgICAgZm9yIGxpYmMgaW4gZXh0cmFsaWJjczoKICAgICAgICAgICAgIGVudHJ5ID0gImxpbnV4IgogICAgICAgICAgICAgaWYgdmFyaWFudCBhbmQgbGliYzoKQEAgLTEyMyw4ICsxMjMsNiBAQAogICAgICAgICAgICAtV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0xJQkRJUn0vLi4gXAogICAgICAgICAgICAtV2wsLXJwYXRoLCR7bGliZGlyfS8uLiAiCiAKLURFUEVORFNfR0VUVEVYVCA9ICJnZXR0ZXh0LW5hdGl2ZSBuYXRpdmVzZGstZ2V0dGV4dCIKLQogIwogIyBXZSBuZWVkIGNocnBhdGggPj0gMC4xNCB0byBlbnN1cmUgd2UgY2FuIGRlYWwgd2l0aCAzMiBhbmQgNjQgYml0CiAjIGJpbmFyaWVzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLmJiY2xhc3MKaW5kZXggZDIxNzcxNy4uNGU4NWNhYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MuYmJjbGFzcwpAQCAtNDEsOCArNDEsNiBAQAogCiBUT09MQ0hBSU5fT1BUSU9OUyA9ICIiCiAKLURFUEVORFNfR0VUVEVYVCA9ICJnZXR0ZXh0LW5hdGl2ZSIKLQogIyBUaGlzIGNsYXNzIGVuY29kZXMgc3RhZ2luZyBwYXRocyBpbnRvIGl0cyBzY3JpcHRzIGRhdGEgc28gY2FuIG9ubHkgYmUKICMgcmV1c2VkIGlmIHdlIG1hbmlwdWxhdGUgdGhlIHBhdGhzLgogU1NUQVRFX1NDQU5fQ01EID89ICIke1NTVEFURV9TQ0FOX0NNRF9OQVRJVkV9IgpAQCAtOTIsMyArOTAsOCBAQAogZXhwb3J0IE5NID0gIiR7QlVJTERfTk19IgogCiBpbmhlcml0IG5vcGFja2FnZXMKKworcHl0aG9uIGRvX2FkZHRvX3JlY2lwZV9zeXNyb290ICgpIHsKKyAgICBiYi5idWlsZC5leGVjX2Z1bmMoImV4dGVuZF9yZWNpcGVfc3lzcm9vdCIsIGQpCit9CithZGR0YXNrIGFkZHRvX3JlY2lwZV9zeXNyb290IGFmdGVyIGRvX3BvcHVsYXRlX3N5c3Jvb3QKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3ZlLWNoZWNrLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2N2ZS1jaGVjay5iYmNsYXNzCmluZGV4IGJjMmYwM2YuLjUzNzY1OWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3ZlLWNoZWNrLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jdmUtY2hlY2suYmJjbGFzcwpAQCAtMjMsMTIgKzIzLDEyIEBACiAjIFRoZSBwcm9kdWN0IG5hbWUgdGhhdCB0aGUgQ1ZFIGRhdGFiYXNlIHVzZXMuICBEZWZhdWx0cyB0byBCUE4sIGJ1dCBtYXkgbmVlZCB0bwogIyBiZSBvdmVycmlkZW4gcGVyIHJlY2lwZSAoZm9yIGV4YW1wbGUgdGlmZi5iYiBzZXRzIENWRV9QUk9EVUNUPWxpYnRpZmYpLgogQ1ZFX1BST0RVQ1QgPz89ICIke0JQTn0iCitDVkVfVkVSU0lPTiA/Pz0gIiR7UFZ9IgogCiBDVkVfQ0hFQ0tfREJfRElSID89ICIke0RMX0RJUn0vQ1ZFX0NIRUNLIgogQ1ZFX0NIRUNLX0RCX0ZJTEUgPz0gIiR7Q1ZFX0NIRUNLX0RCX0RJUn0vbnZkLmRiIgogCi1DVkVfQ0hFQ0tfTE9DQUxfRElSID89ICIke1dPUktESVJ9L2N2ZSIKLUNWRV9DSEVDS19MT0NBTF9GSUxFID89ICIke0NWRV9DSEVDS19MT0NBTF9ESVJ9L2N2ZS5sb2ciCitDVkVfQ0hFQ0tfTE9HID89ICIke1R9L2N2ZS5sb2ciCiBDVkVfQ0hFQ0tfVE1QX0ZJTEUgPz0gIiR7VE1QRElSfS9jdmVfY2hlY2siCiAKIENWRV9DSEVDS19ESVIgPz89ICIke0RFUExPWV9ESVJ9L2N2ZSIKQEAgLTE2OSw3ICsxNjksMTAgQEAKICAgICBjdmVzX3BhdGNoZWQgPSBbXQogICAgIGN2ZXNfdW5wYXRjaGVkID0gW10KICAgICBicG4gPSBkLmdldFZhcigiQ1ZFX1BST0RVQ1QiKQotICAgIHB2ID0gZC5nZXRWYXIoIlBWIikuc3BsaXQoIitnaXQiKVswXQorICAgICMgSWYgdGhpcyBoYXMgYmVlbiB1bnNldCB0aGVuIHdlJ3JlIG5vdCBzY2FubmluZyBmb3IgQ1ZFcyBoZXJlIChmb3IgZXhhbXBsZSwgaW1hZ2UgcmVjaXBlcykKKyAgICBpZiBub3QgYnBuOgorICAgICAgICByZXR1cm4gKFtdLCBbXSkKKyAgICBwdiA9IGQuZ2V0VmFyKCJDVkVfVkVSU0lPTiIpLnNwbGl0KCIrZ2l0IilbMF0KICAgICBjdmVzID0gIiAiLmpvaW4ocGF0Y2hlZF9jdmVzKQogICAgIGN2ZV9kYl9kaXIgPSBkLmdldFZhcigiQ1ZFX0NIRUNLX0RCX0RJUiIpCiAgICAgY3ZlX3doaXRlbGlzdCA9IGFzdC5saXRlcmFsX2V2YWwoZC5nZXRWYXIoIkNWRV9DSEVDS19DVkVfV0hJVEVMSVNUIikpCkBAIC0xODEsOSArMTg0LDYgQEAKICAgICAgICAgYmIubm90ZSgiUmVjaXBlIGhhcyBiZWVuIHdoaXRlbGlzdGVkLCBza2lwcGluZyBjaGVjayIpCiAgICAgICAgIHJldHVybiAoW10sIFtdKQogCi0gICAgIyBJdCBpcyBuZWVkZWQgdG8gZXhwb3J0IHRoZSBwcm94aWVzIHRvIGRvd25sb2FkIHRoZSBkYXRhYmFzZSB1c2luZyBIVFRQCi0gICAgYmIudXRpbHMuZXhwb3J0X3Byb3hpZXMoZCkKLQogICAgIHRyeToKICAgICAgICAgIyBXcml0ZSB0aGUgZmF1eCBDU1YgZmlsZSB0byBiZSB1c2VkIHdpdGggY3ZlLWNoZWNrLXRvb2wKICAgICAgICAgZmQsIGZhdXggPSB0ZW1wZmlsZS5ta3N0ZW1wKHByZWZpeD0iY3ZlLWZhdXgtIikKQEAgLTI1MSwxMSArMjUxLDExIEBACiAgICAgQ1ZFIG1hbmlmZXN0IGlmIGVuYWJsZWQuCiAgICAgIiIiCiAKLSAgICBjdmVfZmlsZSA9IGQuZ2V0VmFyKCJDVkVfQ0hFQ0tfTE9DQUxfRklMRSIpCisgICAgY3ZlX2ZpbGUgPSBkLmdldFZhcigiQ1ZFX0NIRUNLX0xPRyIpCiAgICAgbnZkX2xpbmsgPSAiaHR0cHM6Ly93ZWIubnZkLm5pc3QuZ292L3ZpZXcvdnVsbi9kZXRhaWw/dnVsbklkPSIKICAgICB3cml0ZV9zdHJpbmcgPSAiIgogICAgIHVucGF0Y2hlZF9jdmVzID0gW10KLSAgICBiYi51dGlscy5ta2RpcmhpZXIoZC5nZXRWYXIoIkNWRV9DSEVDS19MT0NBTF9ESVIiKSkKKyAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKGN2ZV9maWxlKSkKIAogICAgIGZvciBjdmUgaW4gc29ydGVkKGN2ZV9kYXRhKToKICAgICAgICAgd3JpdGVfc3RyaW5nICs9ICJQQUNLQUdFIE5BTUU6ICVzXG4iICUgZC5nZXRWYXIoIlBOIikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGViaWFuLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2RlYmlhbi5iYmNsYXNzCmluZGV4IDgxMjQ1NTguLjk4OWVhOGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGViaWFuLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kZWJpYW4uYmJjbGFzcwpAQCAtMjUsMTIgKzI1LDEwIEBACiB9CiAKIHB5dGhvbiBkZWJpYW5fcGFja2FnZV9uYW1lX2hvb2sgKCkgewotICAgIGltcG9ydCBnbG9iLCBjb3B5LCBzdGF0LCBlcnJubywgcmUKKyAgICBpbXBvcnQgZ2xvYiwgY29weSwgc3RhdCwgZXJybm8sIHJlLCBwYXRobGliLCBzdWJwcm9jZXNzCiAKLSAgICBwa2dkZXN0ID0gZC5nZXRWYXIoJ1BLR0RFU1QnKQorICAgIHBrZ2Rlc3QgPSBkLmdldFZhcigiUEtHREVTVCIpCiAgICAgcGFja2FnZXMgPSBkLmdldFZhcignUEFDS0FHRVMnKQotICAgIGJpbl9yZSA9IHJlLmNvbXBpbGUoIi4qL3M/IiArIG9zLnBhdGguYmFzZW5hbWUoZC5nZXRWYXIoImJpbmRpciIpKSArICIkIikKLSAgICBsaWJfcmUgPSByZS5jb21waWxlKCIuKi8iICsgb3MucGF0aC5iYXNlbmFtZShkLmdldFZhcigibGliZGlyIikpICsgIiQiKQogICAgIHNvX3JlID0gcmUuY29tcGlsZSgibGliLipcLnNvIikKIAogICAgIGRlZiBzb2NydW5jaChzKToKQEAgLTYwLDI1ICs1OCwzMiBAQAogICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdSUFJPVklERVNfJyArIHBrZywgIiAiICsgcGtnICsgIiAoPSIgKyBkLmdldFZhcigiUEtHViIpICsgIikiKQogCiAgICAgZGVmIGF1dG9fbGlibmFtZShwYWNrYWdlcywgb3JpZ19wa2cpOgorICAgICAgICBwID0gbGFtYmRhIHZhcjogcGF0aGxpYi5QdXJlUGF0aChkLmdldFZhcih2YXIpKQorICAgICAgICBsaWJkaXJzID0gKHAoImJhc2VfbGliZGlyIiksIHAoImxpYmRpciIpKQorICAgICAgICBiaW5kaXJzID0gKHAoImJhc2VfYmluZGlyIiksIHAoImJhc2Vfc2JpbmRpciIpLCBwKCJiaW5kaXIiKSwgcCgic2JpbmRpciIpKQorCiAgICAgICAgIHNvbmFtZXMgPSBbXQogICAgICAgICBoYXNfYmlucyA9IDAKICAgICAgICAgaGFzX2xpYnMgPSAwCi0gICAgICAgIGZvciBmaWxlIGluIHBrZ2ZpbGVzW29yaWdfcGtnXToKLSAgICAgICAgICAgIHJvb3QgPSBvcy5wYXRoLmRpcm5hbWUoZmlsZSkKLSAgICAgICAgICAgIGlmIGJpbl9yZS5tYXRjaChyb290KToKKyAgICAgICAgZm9yIGYgaW4gcGtnZmlsZXNbb3JpZ19wa2ddOgorICAgICAgICAgICAgIyBUaGlzIGlzIC4uLi9wYWNrYWdlcy1zcGxpdC9vcmlnX3BrZy8KKyAgICAgICAgICAgIHBrZ3BhdGggPSBwYXRobGliLlB1cmVQYXRoKHBrZ2Rlc3QsIG9yaWdfcGtnKQorICAgICAgICAgICAgIyBTdHJpcCBwa2dwYXRoIG9mZiB0aGUgZnVsbCBwYXRoIHRvIGEgZmlsZSBpbiB0aGUgcGFja2FnZSwgcmUtcm9vdAorICAgICAgICAgICAgIyBzbyBpdCBpcyBhYnNvbHV0ZSwgYW5kIHRoZW4gZ2V0IHRoZSBwYXJlbnQgZGlyZWN0b3J5IG9mIHRoZSBmaWxlLgorICAgICAgICAgICAgcGF0aCA9IHBhdGhsaWIuUHVyZVBhdGgoIi8iKSAvIChwYXRobGliLlB1cmVQYXRoKGYpLnJlbGF0aXZlX3RvKHBrZ3BhdGgpLnBhcmVudCkKKyAgICAgICAgICAgIGlmIHBhdGggaW4gYmluZGlyczoKICAgICAgICAgICAgICAgICBoYXNfYmlucyA9IDEKLSAgICAgICAgICAgIGlmIGxpYl9yZS5tYXRjaChyb290KToKKyAgICAgICAgICAgIGlmIHBhdGggaW4gbGliZGlyczoKICAgICAgICAgICAgICAgICBoYXNfbGlicyA9IDEKLSAgICAgICAgICAgICAgICBpZiBzb19yZS5tYXRjaChvcy5wYXRoLmJhc2VuYW1lKGZpbGUpKToKLSAgICAgICAgICAgICAgICAgICAgY21kID0gKGQuZ2V0VmFyKCdUQVJHRVRfUFJFRklYJykgb3IgIiIpICsgIm9iamR1bXAgLXAgIiArIGZpbGUgKyAiIDI+L2Rldi9udWxsIgotICAgICAgICAgICAgICAgICAgICBmZCA9IG9zLnBvcGVuKGNtZCkKLSAgICAgICAgICAgICAgICAgICAgbGluZXMgPSBmZC5yZWFkbGluZXMoKQotICAgICAgICAgICAgICAgICAgICBmZC5jbG9zZSgpCi0gICAgICAgICAgICAgICAgICAgIGZvciBsIGluIGxpbmVzOgotICAgICAgICAgICAgICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCJccytTT05BTUVccysoW15cc10qKSIsIGwpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBtIGFuZCBub3QgbS5ncm91cCgxKSBpbiBzb25hbWVzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvbmFtZXMuYXBwZW5kKG0uZ3JvdXAoMSkpCi0KKyAgICAgICAgICAgICAgICBpZiBzb19yZS5tYXRjaChvcy5wYXRoLmJhc2VuYW1lKGYpKToKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgY21kID0gW2QuZXhwYW5kKCIke1RBUkdFVF9QUkVGSVh9b2JqZHVtcCIpLCAiLXAiLCBmXQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kKS5kZWNvZGUoInV0Zi04IikKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBtIGluIHJlLmZpbmRpdGVyKCJccytTT05BTUVccysoW15cc10rKSIsIG91dHB1dCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbS5ncm91cCgxKSBub3QgaW4gc29uYW1lczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29uYW1lcy5hcHBlbmQobS5ncm91cCgxKSkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBiYi5kZWJ1ZygxLCAnTElCTkFNRVM6IHBrZyAlcyBsaWJzICVkIGJpbnMgJWQgc29uYW1lcyAlcycgJSAob3JpZ19wa2csIGhhc19saWJzLCBoYXNfYmlucywgc29uYW1lcykpCiAgICAgICAgIHNvbmFtZSA9IE5vbmUKICAgICAgICAgaWYgbGVuKHNvbmFtZXMpID09IDE6CkBAIC0xMjAsNiArMTI1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBuZXdwa2cuZmluZChtbHByZSkgPT0gMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdwa2cgPSBtbHByZSArIG5ld3BrZwogICAgICAgICAgICAgICAgICAgICBpZiBuZXdwa2cgIT0gcGtnOgorICAgICAgICAgICAgICAgICAgICAgICAgYmIubm90ZSgiZGViaWFuOiByZW5hbWluZyAlcyB0byAlcyIgJSAocGtnLCBuZXdwa2cpKQogICAgICAgICAgICAgICAgICAgICAgICAgZC5zZXRWYXIoJ1BLR18nICsgcGtnLCBuZXdwa2cpCiAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfcnByb3ZpZGVzKHBrZywgZCkKICAgICAgICAgZWxzZToKQEAgLTEzOCw0ICsxNDQsMyBAQAogRVhQT1JUX0ZVTkNUSU9OUyBwYWNrYWdlX25hbWVfaG9vawogCiBERUJJQU5fTkFNRVMgPSAiMSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kZXBsb3kuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGVwbG95LmJiY2xhc3MKaW5kZXggOGFkMDdkYS4uNmQ1MjkwOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kZXBsb3kuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2RlcGxveS5iYmNsYXNzCkBAIC04LDQgKzgsNCBAQAogfQogYWRkdGFzayBkb19kZXBsb3lfc2V0c2NlbmUKIGRvX2RlcGxveVtkaXJzXSA9ICIke0RFUExPWURJUn0gJHtCfSIKLWRvX2RlcGxveVtzdGFtcC1leHRyYS1pbmZvXSA9ICIke01BQ0hJTkV9IgorZG9fZGVwbG95W3N0YW1wLWV4dHJhLWluZm9dID0gIiR7TUFDSElORV9BUkNIfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGV2dG9vbC1zb3VyY2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGV2dG9vbC1zb3VyY2UuYmJjbGFzcwppbmRleCA4ZjViYzg2Li41Njg4MmE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2RldnRvb2wtc291cmNlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kZXZ0b29sLXNvdXJjZS5iYmNsYXNzCkBAIC0xNTIsOSArMTUyLDY1IEBACiB9CiAKIHB5dGhvbiBkZXZ0b29sX3Bvc3RfcGF0Y2goKSB7CisgICAgaW1wb3J0IHNodXRpbAogICAgIHRlbXBkaXIgPSBkLmdldFZhcignREVWVE9PTF9URU1QRElSJykKICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHRlbXBkaXIsICdzcmNzdWJkaXInKSwgJ3InKSBhcyBmOgogICAgICAgICBzcmNzdWJkaXIgPSBmLnJlYWQoKQorICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4odGVtcGRpciwgJ2luaXRpYWxfcmV2JyksICdyJykgYXMgZjoKKyAgICAgICAgaW5pdGlhbF9yZXYgPSBmLnJlYWQoKQorCisgICAgZGVmIHJtX3BhdGNoZXMoKToKKyAgICAgICAgcGF0Y2hlc19kaXIgPSBvcy5wYXRoLmpvaW4oc3Jjc3ViZGlyLCAncGF0Y2hlcycpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGNoZXNfZGlyKToKKyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUocGF0Y2hlc19kaXIpCisgICAgICAgICMgUmVzdG9yZSBhbnkgInBhdGNoZXMiIGRpcmVjdG9yeSB0aGF0IHdhcyBhY3R1YWxseSBwYXJ0IG9mIHRoZSBzb3VyY2UgdHJlZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBiYi5wcm9jZXNzLnJ1bignZ2l0IGNoZWNrb3V0IC0tIHBhdGNoZXMnLCBjd2Q9c3Jjc3ViZGlyKQorICAgICAgICBleGNlcHQgYmIucHJvY2Vzcy5FeGVjdXRpb25FcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGV4dHJhX292ZXJyaWRlcyA9IGQuZ2V0VmFyKCdERVZUT09MX0VYVFJBX09WRVJSSURFUycpCisgICAgaWYgZXh0cmFfb3ZlcnJpZGVzOgorICAgICAgICBleHRyYV9vdmVycmlkZV9saXN0ID0gZXh0cmFfb3ZlcnJpZGVzLnNwbGl0KCc6JykKKyAgICAgICAgZGV2YnJhbmNoID0gZC5nZXRWYXIoJ0RFVlRPT0xfREVWQlJBTkNIJykKKyAgICAgICAgZGVmYXVsdF9vdmVycmlkZXMgPSBkLmdldFZhcignT1ZFUlJJREVTJykuc3BsaXQoJzonKQorICAgICAgICBub19vdmVycmlkZXMgPSBbXQorICAgICAgICAjIEZpcnN0LCB3ZSBtYXkgaGF2ZSBzb21lIG92ZXJyaWRlcyB0aGF0IGFyZSByZWZlcnJlZCB0byBpbiB0aGUgcmVjaXBlIHNldCBpbgorICAgICAgICAjIG91ciBjb25maWd1cmF0aW9uLCBzbyB3ZSBuZWVkIHRvIG1ha2UgYSBicmFuY2ggdGhhdCBleGNsdWRlcyB0aG9zZQorICAgICAgICBmb3Igb3ZlcnJpZGUgaW4gZGVmYXVsdF9vdmVycmlkZXM6CisgICAgICAgICAgICBpZiBvdmVycmlkZSBub3QgaW4gZXh0cmFfb3ZlcnJpZGVfbGlzdDoKKyAgICAgICAgICAgICAgICBub19vdmVycmlkZXMuYXBwZW5kKG92ZXJyaWRlKQorICAgICAgICBpZiBkZWZhdWx0X292ZXJyaWRlcyAhPSBub19vdmVycmlkZXM6CisgICAgICAgICAgICAjIFNvbWUgb3ZlcnJpZGVzIGFyZSBhY3RpdmUgaW4gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiwgc28KKyAgICAgICAgICAgICMgd2UgbmVlZCB0byBjcmVhdGUgYSBicmFuY2ggd2hlcmUgbm9uZSBvZiB0aGUgb3ZlcnJpZGVzIGFyZSBhY3RpdmUKKyAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCdnaXQgY2hlY2tvdXQgJXMgLWIgZGV2dG9vbC1uby1vdmVycmlkZXMnICUgaW5pdGlhbF9yZXYsIGN3ZD1zcmNzdWJkaXIpCisgICAgICAgICAgICAjIFJ1biBkb19wYXRjaCBmdW5jdGlvbiB3aXRoIHRoZSBvdmVycmlkZSBhcHBsaWVkCisgICAgICAgICAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKKyAgICAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ09WRVJSSURFUycsICc6Jy5qb2luKG5vX292ZXJyaWRlcykpCisgICAgICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2RvX3BhdGNoJywgbG9jYWxkYXRhKQorICAgICAgICAgICAgcm1fcGF0Y2hlcygpCisgICAgICAgICAgICAjIE5vdyB3ZSBuZWVkIHRvIHJlY29uY2lsZSB0aGUgZGV2IGJyYW5jaCB3aXRoIHRoZSBuby1vdmVycmlkZXMgb25lCisgICAgICAgICAgICAjIChvdGhlcndpc2Ugd2UnZCBsaWtlbHkgYmUgbGVmdCB3aXRoIGlkZW50aWNhbCBjb21taXRzIHRoYXQgaGF2ZSBkaWZmZXJlbnQgaGFzaGVzKQorICAgICAgICAgICAgYmIucHJvY2Vzcy5ydW4oJ2dpdCBjaGVja291dCAlcycgJSBkZXZicmFuY2gsIGN3ZD1zcmNzdWJkaXIpCisgICAgICAgICAgICBiYi5wcm9jZXNzLnJ1bignZ2l0IHJlYmFzZSBkZXZ0b29sLW5vLW92ZXJyaWRlcycsIGN3ZD1zcmNzdWJkaXIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBiYi5wcm9jZXNzLnJ1bignZ2l0IGNoZWNrb3V0ICVzIC1iIGRldnRvb2wtbm8tb3ZlcnJpZGVzJyAlIGRldmJyYW5jaCwgY3dkPXNyY3N1YmRpcikKKworICAgICAgICBmb3Igb3ZlcnJpZGUgaW4gZXh0cmFfb3ZlcnJpZGVfbGlzdDoKKyAgICAgICAgICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQorICAgICAgICAgICAgaWYgb3ZlcnJpZGUgaW4gZGVmYXVsdF9vdmVycmlkZXM6CisgICAgICAgICAgICAgICAgYmIucHJvY2Vzcy5ydW4oJ2dpdCBicmFuY2ggZGV2dG9vbC1vdmVycmlkZS0lcyAlcycgJSAob3ZlcnJpZGUsIGRldmJyYW5jaCksIGN3ZD1zcmNzdWJkaXIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgUmVzZXQgYmFjayB0byB0aGUgaW5pdGlhbCBjb21taXQgb24gYSBuZXcgYnJhbmNoCisgICAgICAgICAgICAgICAgYmIucHJvY2Vzcy5ydW4oJ2dpdCBjaGVja291dCAlcyAtYiBkZXZ0b29sLW92ZXJyaWRlLSVzJyAlIChpbml0aWFsX3Jldiwgb3ZlcnJpZGUpLCBjd2Q9c3Jjc3ViZGlyKQorICAgICAgICAgICAgICAgICMgUnVuIGRvX3BhdGNoIGZ1bmN0aW9uIHdpdGggdGhlIG92ZXJyaWRlIGFwcGxpZWQKKyAgICAgICAgICAgICAgICBsb2NhbGRhdGEuYXBwZW5kVmFyKCdPVkVSUklERVMnLCAnOiVzJyAlIG92ZXJyaWRlKQorICAgICAgICAgICAgICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnZG9fcGF0Y2gnLCBsb2NhbGRhdGEpCisgICAgICAgICAgICAgICAgcm1fcGF0Y2hlcygpCisgICAgICAgICAgICAgICAgIyBOb3cgd2UgbmVlZCB0byByZWNvbmNpbGUgdGhlIG5ldyBicmFuY2ggd2l0aCB0aGUgbm8tb3ZlcnJpZGVzIG9uZQorICAgICAgICAgICAgICAgICMgKG90aGVyd2lzZSB3ZSdkIGxpa2VseSBiZSBsZWZ0IHdpdGggaWRlbnRpY2FsIGNvbW1pdHMgdGhhdCBoYXZlIGRpZmZlcmVudCBoYXNoZXMpCisgICAgICAgICAgICAgICAgYmIucHJvY2Vzcy5ydW4oJ2dpdCByZWJhc2UgZGV2dG9vbC1uby1vdmVycmlkZXMnLCBjd2Q9c3Jjc3ViZGlyKQorICAgICAgICBiYi5wcm9jZXNzLnJ1bignZ2l0IGNoZWNrb3V0ICVzJyAlIGRldmJyYW5jaCwgY3dkPXNyY3N1YmRpcikKICAgICBiYi5wcm9jZXNzLnJ1bignZ2l0IHRhZyAtZiBkZXZ0b29sLXBhdGNoZWQnLCBjd2Q9c3Jjc3ViZGlyKQogfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3Ryb19mZWF0dXJlc19jaGVjay5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kaXN0cm9fZmVhdHVyZXNfY2hlY2suYmJjbGFzcwppbmRleCBlNzRkM2MwLi45Yjc4YjAzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3Ryb19mZWF0dXJlc19jaGVjay5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHJvX2ZlYXR1cmVzX2NoZWNrLmJiY2xhc3MKQEAgLTE3LDcgKzE3LDcgQEAKICAgICBpZiBhbnlfb2ZfZGlzdHJvX2ZlYXR1cmVzOgogICAgICAgICBhbnlfb2ZfZGlzdHJvX2ZlYXR1cmVzID0gYW55X29mX2Rpc3Ryb19mZWF0dXJlcy5zcGxpdCgpCiAgICAgICAgIGlmIHNldC5pc2Rpc2pvaW50KHNldChhbnlfb2ZfZGlzdHJvX2ZlYXR1cmVzKSxzZXQoZGlzdHJvX2ZlYXR1cmVzKSk6Ci0gICAgICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgib25lIG9mICclcycgbmVlZHMgdG8gYmUgaW4gRElTVFJPX0ZFQVRVUkVTIiAlIGFueV9vZl9kaXN0cm9fZmVhdHVyZXMpCisgICAgICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJvbmUgb2YgJyVzJyBuZWVkcyB0byBiZSBpbiBESVNUUk9fRkVBVFVSRVMiICUgYW55X29mX2Rpc3Ryb19mZWF0dXJlcykKIAogICAgIHJlcXVpcmVkX2Rpc3Ryb19mZWF0dXJlcyA9IGQuZ2V0VmFyKCdSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMnKQogICAgIGlmIHJlcXVpcmVkX2Rpc3Ryb19mZWF0dXJlczoKQEAgLTI2LDEyICsyNiwxMiBAQAogICAgICAgICAgICAgaWYgZiBpbiBkaXN0cm9fZmVhdHVyZXM6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIm1pc3NpbmcgcmVxdWlyZWQgZGlzdHJvIGZlYXR1cmUgJyVzJyAobm90IGluIERJU1RST19GRUFUVVJFUykiICUgZikKKyAgICAgICAgICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJtaXNzaW5nIHJlcXVpcmVkIGRpc3RybyBmZWF0dXJlICclcycgKG5vdCBpbiBESVNUUk9fRkVBVFVSRVMpIiAlIGYpCiAKICAgICBjb25mbGljdF9kaXN0cm9fZmVhdHVyZXMgPSBkLmdldFZhcignQ09ORkxJQ1RfRElTVFJPX0ZFQVRVUkVTJykKICAgICBpZiBjb25mbGljdF9kaXN0cm9fZmVhdHVyZXM6CiAgICAgICAgIGNvbmZsaWN0X2Rpc3Ryb19mZWF0dXJlcyA9IGNvbmZsaWN0X2Rpc3Ryb19mZWF0dXJlcy5zcGxpdCgpCiAgICAgICAgIGZvciBmIGluIGNvbmZsaWN0X2Rpc3Ryb19mZWF0dXJlczoKICAgICAgICAgICAgIGlmIGYgaW4gZGlzdHJvX2ZlYXR1cmVzOgotICAgICAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJjb25mbGljdGluZyBkaXN0cm8gZmVhdHVyZSAnJXMnIChpbiBESVNUUk9fRkVBVFVSRVMpIiAlIGYpCisgICAgICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiY29uZmxpY3RpbmcgZGlzdHJvIGZlYXR1cmUgJyVzJyAoaW4gRElTVFJPX0ZFQVRVUkVTKSIgJSBmKQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kaXN0cm9kYXRhLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3Ryb2RhdGEuYmJjbGFzcwppbmRleCBjODVmN2IzLi41OWVlOGNlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3Ryb2RhdGEuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3Ryb2RhdGEuYmJjbGFzcwpAQCAtMTg4LDE0ICsxODgsNiBAQAogfQogZG9fZGlzdHJvZGF0YVt2YXJkZXBzZXhjbHVkZV0gPSAiREFURVRJTUUiCiAKLWFkZHRhc2sgZGlzdHJvZGF0YWFsbCBhZnRlciBkb19kaXN0cm9kYXRhCi1kb19kaXN0cm9kYXRhYWxsW3JlY3JkZXB0YXNrXSA9ICJkb19kaXN0cm9kYXRhYWxsIGRvX2Rpc3Ryb2RhdGEiCi1kb19kaXN0cm9kYXRhYWxsW3JlY2lkZXB0YXNrXSA9ICJkb18ke0JCX0RFRkFVTFRfVEFTS30iCi1kb19kaXN0cm9kYXRhYWxsW25vc3RhbXBdID0gIjEiCi1kb19kaXN0cm9kYXRhYWxsKCkgewotICAgICAgICA6Ci19Ci0KIGFkZGhhbmRsZXIgY2hlY2twa2dfZXZlbnRoYW5kbGVyCiBjaGVja3BrZ19ldmVudGhhbmRsZXJbZXZlbnRtYXNrXSA9ICJiYi5ldmVudC5CdWlsZFN0YXJ0ZWQgYmIuZXZlbnQuQnVpbGRDb21wbGV0ZWQiCiBweXRob24gY2hlY2twa2dfZXZlbnRoYW5kbGVyKCkgewpAQCAtMjcyLDI0ICsyNjQsMTUgQEAKICAgICAgICAgICAgIGlmIHVwc3RyZWFtX2NoZWNrX3VucmVsaWFibGUgPT0gIjEiOgogICAgICAgICAgICAgICAgIHJldHVybiAiTi9BIiwgIkNIRUNLX0lTX1VOUkVMSUFCTEUiCiAKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB1diA9IG9lLnJlY2lwZXV0aWxzLmdldF9yZWNpcGVfdXBzdHJlYW1fdmVyc2lvbihsb2NhbGRhdGEpCi0gICAgICAgICAgICAgICAgcHVwdmVyID0gdXZbJ3ZlcnNpb24nXSBpZiB1dlsndmVyc2lvbiddIGVsc2UgIk4vQSIKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICBwdXB2ZXIgPSAiTi9BIgorICAgICAgICAgICAgdXYgPSBvZS5yZWNpcGV1dGlscy5nZXRfcmVjaXBlX3Vwc3RyZWFtX3ZlcnNpb24obG9jYWxkYXRhKQorICAgICAgICAgICAgcHVwdmVyID0gdXZbJ3ZlcnNpb24nXSBpZiB1dlsndmVyc2lvbiddIGVsc2UgIk4vQSIKKyAgICAgICAgICAgIHB2ZXJzaW9uID0gdXZbJ2N1cnJlbnRfdmVyc2lvbiddCisgICAgICAgICAgICByZXZpc2lvbiA9IHV2WydyZXZpc2lvbiddIGlmIHV2WydyZXZpc2lvbiddIGVsc2UgIk4vQSIKIAogICAgICAgICAgICAgaWYgcHVwdmVyID09ICJOL0EiOgogICAgICAgICAgICAgICAgIHBzdGF0dXMgPSAiVU5LTk9XTiIgaWYgdXBzdHJlYW1fdmVyc2lvbl91bmtub3duIGVsc2UgIlVOS05PV05fQlJPS0VOIgogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzcmNfdXJpID0gKGxvY2FsZGF0YS5nZXRWYXIoJ1NSQ19VUkknKSBvciAnJykuc3BsaXQoKQotICAgICAgICAgICAgICAgIGlmIHNyY191cmk6Ci0gICAgICAgICAgICAgICAgICAgIHVyaV90eXBlLCBfLCBfLCBfLCBfLCBfID0gZGVjb2RldXJsKHNyY191cmlbMF0pCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdXJpX3R5cGUgPSAibm9uZSIKLSAgICAgICAgICAgICAgICBwdiwgXywgXyA9IG9lLnJlY2lwZXV0aWxzLmdldF9yZWNpcGVfcHZfd2l0aG91dF9zcmNwdihwdmVyc2lvbiwgdXJpX3R5cGUpCi0gICAgICAgICAgICAgICAgdXB2LCBfLCBfID0gb2UucmVjaXBldXRpbHMuZ2V0X3JlY2lwZV9wdl93aXRob3V0X3NyY3B2KHB1cHZlciwgdXJpX3R5cGUpCi0KLSAgICAgICAgICAgICAgICBjbXAgPSB2ZXJjbXBfc3RyaW5nKHB2LCB1cHYpCisgICAgICAgICAgICAgICAgY21wID0gdmVyY21wX3N0cmluZyhwdmVyc2lvbiwgcHVwdmVyKQogICAgICAgICAgICAgICAgIGlmIGNtcCA9PSAtMToKICAgICAgICAgICAgICAgICAgICAgcHN0YXR1cyA9ICJVUERBVEUiIGlmIG5vdCB1cHN0cmVhbV92ZXJzaW9uX3Vua25vd24gZWxzZSAiS05PV05fQlJPS0VOIgogICAgICAgICAgICAgICAgIGVsaWYgY21wID09IDA6CkBAIC0yOTcsNyArMjgwLDcgQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBwc3RhdHVzID0gIlVOS05PV04iIGlmIHVwc3RyZWFtX3ZlcnNpb25fdW5rbm93biBlbHNlICJVTktOT1dOX0JST0tFTiIKIAotICAgICAgICAgICAgcmV0dXJuIHB1cHZlciwgcHN0YXR1cworICAgICAgICAgICAgcmV0dXJuIHB2ZXJzaW9uLCBwdXB2ZXIsIHBzdGF0dXMsIHJldmlzaW9uCiAKIAogICAgICAgICAiIiJpbml0aWFsaXplIGxvZyBmaWxlcy4iIiIKQEAgLTMzNCw3ICszMTcsNiBAQAogCiAgICAgICAgIHBkZXNjID0gbG9jYWxkYXRhLmdldFZhcignREVTQ1JJUFRJT04nKQogICAgICAgICBwZ3JwID0gbG9jYWxkYXRhLmdldFZhcignU0VDVElPTicpCi0gICAgICAgIHB2ZXJzaW9uID0gbG9jYWxkYXRhLmdldFZhcignUFYnKQogICAgICAgICBwbGljZW5zZSA9IGxvY2FsZGF0YS5nZXRWYXIoJ0xJQ0VOU0UnKQogICAgICAgICBwc2VjdGlvbiA9IGxvY2FsZGF0YS5nZXRWYXIoJ1NFQ1RJT04nKQogICAgICAgICBwaG9tZSA9IGxvY2FsZGF0YS5nZXRWYXIoJ0hPTUVQQUdFJykKQEAgLTM0NSw3ICszMjcsNyBAQAogICAgICAgICBwc3JjdXJpID0gbG9jYWxkYXRhLmdldFZhcignU1JDX1VSSScpCiAgICAgICAgIG1haW50YWluZXIgPSBsb2NhbGRhdGEuZ2V0VmFyKCdSRUNJUEVfTUFJTlRBSU5FUicpCiAKLSAgICAgICAgcHVwdmVyLCBwc3RhdHVzID0gZ2V0X3Vwc3RyZWFtX3ZlcnNpb25fYW5kX3N0YXR1cygpCisgICAgICAgIHB2ZXJzaW9uLCBwdXB2ZXIsIHBzdGF0dXMsIHByZXZpc2lvbiA9IGdldF91cHN0cmVhbV92ZXJzaW9uX2FuZF9zdGF0dXMoKQogCiAgICAgICAgIGlmIHBzcmN1cmk6CiAgICAgICAgICAgICBwc3JjdXJpID0gcHNyY3VyaS5zcGxpdCgpWzBdCkBAIC0zNTgsMjAgKzM0MCwxMiBAQAogICAgICAgICB3aXRoIG9wZW4obG9nZmlsZSwgImEiKSBhcyBmOgogICAgICAgICAgICAgd3JpdGVyID0gY3N2LndyaXRlcihmLCBkZWxpbWl0ZXI9J1x0JykKICAgICAgICAgICAgIHdyaXRlci53cml0ZXJvdyhbcG5hbWUsIHB2ZXJzaW9uLCBwdXB2ZXIsIHBsaWNlbnNlLCBwc2VjdGlvbiwgcGhvbWUsIAotICAgICAgICAgICAgICAgIHByZWxlYXNlLCBwZGVwZW5kcywgcGJ1Z3RyYWNrZXIsIHBwZSwgcGRlc2MsIHBzdGF0dXMsIHB1cHZlciwKKyAgICAgICAgICAgICAgICBwcmVsZWFzZSwgcGRlcGVuZHMsIHBidWd0cmFja2VyLCBwcGUsIHBkZXNjLCBwc3RhdHVzLCBwcmV2aXNpb24sCiAgICAgICAgICAgICAgICAgcHNyY3VyaSwgbWFpbnRhaW5lciwgbm9fdXBncl9yZWFzb25dKQogICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobGYpCiB9CiAKLWFkZHRhc2sgY2hlY2twa2dhbGwgYWZ0ZXIgZG9fY2hlY2twa2cKLWRvX2NoZWNrcGtnYWxsW3JlY3JkZXB0YXNrXSA9ICJkb19jaGVja3BrZ2FsbCBkb19jaGVja3BrZyIKLWRvX2NoZWNrcGtnYWxsW3JlY2lkZXB0YXNrXSA9ICJkb18ke0JCX0RFRkFVTFRfVEFTS30iCi1kb19jaGVja3BrZ2FsbFtub3N0YW1wXSA9ICIxIgotZG9fY2hlY2twa2dhbGwoKSB7Ci0gICAgICAgIDoKLX0KLQogYWRkaGFuZGxlciBkaXN0cm9fY2hlY2tfZXZlbnRoYW5kbGVyCiBkaXN0cm9fY2hlY2tfZXZlbnRoYW5kbGVyW2V2ZW50bWFza10gPSAiYmIuZXZlbnQuQnVpbGRTdGFydGVkIgogcHl0aG9uIGRpc3Ryb19jaGVja19ldmVudGhhbmRsZXIoKSB7CkBAIC00MDcsMTMgKzM4MSw2IEBACiAgICAgZGMuc2F2ZV9kaXN0cm9fY2hlY2tfcmVzdWx0KHJlc3VsdCwgZGF0ZXRpbWUsIHJlc3VsdF9maWxlLCBkKQogfQogCi1hZGR0YXNrIGRpc3Ryb19jaGVja2FsbCBhZnRlciBkb19kaXN0cm9fY2hlY2sKLWRvX2Rpc3Ryb19jaGVja2FsbFtyZWNyZGVwdGFza10gPSAiZG9fZGlzdHJvX2NoZWNrYWxsIGRvX2Rpc3Ryb19jaGVjayIKLWRvX2Rpc3Ryb19jaGVja2FsbFtyZWNpZGVwdGFza10gPSAiZG9fJHtCQl9ERUZBVUxUX1RBU0t9IgotZG9fZGlzdHJvX2NoZWNrYWxsW25vc3RhbXBdID0gIjEiCi1kb19kaXN0cm9fY2hlY2thbGwoKSB7Ci0gICAgICAgIDoKLX0KICMKICNDaGVjayBNaXNzaW5nIExpY2Vuc2UgVGV4dC4KICNVc2UgdGhpcyB0YXNrIHRvIGdlbmVyYXRlIHRoZSBtaXNzaW5nIGxpY2Vuc2UgdGV4dCBkYXRhIGZvciBwa2ctcmVwb3J0IHN5c3RlbSwKQEAgLTQ1OCwxMSArNDI1LDMgQEAKICAgICAgICAgICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobGYpCiAgICAgcmV0dXJuCiB9Ci0KLWFkZHRhc2sgY2hlY2tsaWNlbnNlYWxsIGFmdGVyIGRvX2NoZWNrbGljZW5zZQotZG9fY2hlY2tsaWNlbnNlYWxsW3JlY3JkZXB0YXNrXSA9ICJkb19jaGVja2xpY2Vuc2VhbGwgZG9fY2hlY2tsaWNlbnNlIgotZG9fY2hlY2tsaWNlbnNlYWxsW3JlY2lkZXB0YXNrXSA9ICJkb18ke0JCX0RFRkFVTFRfVEFTS30iCi1kb19jaGVja2xpY2Vuc2VhbGxbbm9zdGFtcF0gPSAiMSIKLWRvX2NoZWNrbGljZW5zZWFsbCgpIHsKLSAgICAgICAgOgotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9leHRlcm5hbHNyYy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9leHRlcm5hbHNyYy5iYmNsYXNzCmluZGV4IDY1ZGQxM2QuLmM5ZjVjZjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZXh0ZXJuYWxzcmMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2V4dGVybmFsc3JjLmJiY2xhc3MKQEAgLTUzLDYgKzUzLDkgQEAKICAgICAgICAgICAgIGQuc2V0VmFyKCdCQl9ET05UX0NBQ0hFJywgJzEnKQogCiAgICAgaWYgZXh0ZXJuYWxzcmM6CisgICAgICAgIGltcG9ydCBvZS5yZWNpcGV1dGlscworICAgICAgICBpbXBvcnQgb2UucGF0aAorCiAgICAgICAgIGQuc2V0VmFyKCdTJywgZXh0ZXJuYWxzcmMpCiAgICAgICAgIGlmIGV4dGVybmFsc3JjYnVpbGQ6CiAgICAgICAgICAgICBkLnNldFZhcignQicsIGV4dGVybmFsc3JjYnVpbGQpCkBAIC04NSwxMCArODgsMTAgQEAKICAgICAgICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcodGFzaywgImxvY2tmaWxlcyIsICIgJHtTfS9zaW5nbGV0YXNrLmxvY2siKQogCiAgICAgICAgICAgICAjIFdlIGRvIG5vdCB3YW50IG91ciBzb3VyY2UgdG8gYmUgd2lwZWQgb3V0LCBldmVyIChrZXJuZWwuYmJjbGFzcyBkb2VzIHRoaXMgZm9yIGRvX2NsZWFuKQotICAgICAgICAgICAgY2xlYW5kaXJzID0gKGQuZ2V0VmFyRmxhZyh0YXNrLCAnY2xlYW5kaXJzJywgRmFsc2UpIG9yICcnKS5zcGxpdCgpCisgICAgICAgICAgICBjbGVhbmRpcnMgPSBvZS5yZWNpcGV1dGlscy5zcGxpdF92YXJfdmFsdWUoZC5nZXRWYXJGbGFnKHRhc2ssICdjbGVhbmRpcnMnLCBGYWxzZSkgb3IgJycpCiAgICAgICAgICAgICBzZXR2YWx1ZSA9IEZhbHNlCiAgICAgICAgICAgICBmb3IgY2xlYW5kaXIgaW4gY2xlYW5kaXJzWzpdOgotICAgICAgICAgICAgICAgIGlmIGQuZXhwYW5kKGNsZWFuZGlyKSA9PSBleHRlcm5hbHNyYzoKKyAgICAgICAgICAgICAgICBpZiBvZS5wYXRoLmlzX3BhdGhfcGFyZW50KGV4dGVybmFsc3JjLCBkLmV4cGFuZChjbGVhbmRpcikpOgogICAgICAgICAgICAgICAgICAgICBjbGVhbmRpcnMucmVtb3ZlKGNsZWFuZGlyKQogICAgICAgICAgICAgICAgICAgICBzZXR2YWx1ZSA9IFRydWUKICAgICAgICAgICAgIGlmIHNldHZhbHVlOgpAQCAtMTczLDcgKzE3Niw5IEBACiBleHRlcm5hbHNyY19kb19idWlsZGNsZWFuKCkgewogCWlmIFsgLWUgTWFrZWZpbGUgLW8gLWUgbWFrZWZpbGUgLW8gLWUgR05VbWFrZWZpbGUgXTsgdGhlbgogCQlybSAtZiAke0AnICcuam9pbihbeC5zcGxpdCgnOicpWzBdIGZvciB4IGluIChkLmdldFZhcignRVhURVJOQUxTUkNfU1lNTElOS1MnKSBvciAnJykuc3BsaXQoKV0pfQotCQlvZV9ydW5tYWtlIGNsZWFuIHx8IGRpZSAibWFrZSBmYWlsZWQiCisJCWlmIFsgIiR7Q0xFQU5CUk9LRU59IiAhPSAiMSIgXTsgdGhlbgorCQkJb2VfcnVubWFrZSBjbGVhbiB8fCBkaWUgIm1ha2UgZmFpbGVkIgorCQlmaQogCWVsc2UKIAkJYmJub3RlICJub3RoaW5nIHRvIGRvIC0gbm8gbWFrZWZpbGUgZm91bmQiCiAJZmkKQEAgLTE4OSw3ICsxOTQsNyBAQAogCiAgICAgdHJ5OgogICAgICAgICBnaXRfZGlyID0gb3MucGF0aC5qb2luKHNfZGlyLAotICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWydnaXQnLCAnLUMnLCBzX2RpciwgJ3Jldi1wYXJzZScsICctLWdpdC1kaXInXSkuZGVjb2RlKCJ1dGYtOCIpLnJzdHJpcCgpKQorICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWydnaXQnLCAnLUMnLCBzX2RpciwgJ3Jldi1wYXJzZScsICctLWdpdC1kaXInXSwgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCkuZGVjb2RlKCJ1dGYtOCIpLnJzdHJpcCgpKQogICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjoKICAgICAgICAgcGFzcwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dldHRleHQuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ2V0dGV4dC5iYmNsYXNzCmluZGV4IGRhNjhlNjMuLmJlMmVmM2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ2V0dGV4dC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ2V0dGV4dC5iYmNsYXNzCkBAIC0zLDcgKzMsNyBAQAogICAgICAgICByZXR1cm4gIiIKICAgICBpZiBkLmdldFZhcignVVNFX05MUycpID09ICdubyc6CiAgICAgICAgIHJldHVybiAiZ2V0dGV4dC1taW5pbWFsLW5hdGl2ZSIKLSAgICByZXR1cm4gZC5nZXRWYXIoJ0RFUEVORFNfR0VUVEVYVCcsIEZhbHNlKQorICAgIHJldHVybiAiZ2V0dGV4dC1uYXRpdmUiCiAKIGRlZiBnZXR0ZXh0X29lY29uZihkKToKICAgICBpZiBkLmdldFZhcignVVNFX05MUycpID09ICdubyc6CkBAIC0xMyw4ICsxMyw2IEBACiAgICAgICAgIHJldHVybiAnLS1kaXNhYmxlLW5scycKICAgICByZXR1cm4gIi0tZW5hYmxlLW5scyIKIAotREVQRU5EU19HRVRURVhUID8/PSAiZ2V0dGV4dC1uYXRpdmUiCi0KIEJBU0VERVBFTkRTX2FwcGVuZCA9ICIgJHtAZ2V0dGV4dF9kZXBlbmRlbmNpZXMoZCl9IgogRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgJHtAZ2V0dGV4dF9vZWNvbmYoZCl9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dpby1tb2R1bGUtY2FjaGUuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ2lvLW1vZHVsZS1jYWNoZS5iYmNsYXNzCmluZGV4IGE4MTkwYjcuLmU0MjliZDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ2lvLW1vZHVsZS1jYWNoZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ2lvLW1vZHVsZS1jYWNoZS5iYmNsYXNzCkBAIC05LDYgKzksNyBAQAogICAgICAgICAgICAgbWxwcmVmaXg9JHtNTFBSRUZJWH0gXAogICAgICAgICAgICAgYmlucHJlZml4PSR7TUxQUkVGSVh9IFwKICAgICAgICAgICAgIGxpYmRpcj0ke2xpYmRpcn0gXAorICAgICAgICAgICAgbGliZXhlY2Rpcj0ke2xpYmV4ZWNkaXJ9IFwKICAgICAgICAgICAgIGJhc2VfbGliZGlyPSR7YmFzZV9saWJkaXJ9IFwKICAgICAgICAgICAgIGJpbmRpcj0ke2JpbmRpcn0KIGVsc2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ2xpZGUuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ2xpZGUuYmJjbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjQyMTc0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nbGlkZS5iYmNsYXNzCkBAIC0wLDAgKzEsOSBAQAorIyBIYW5kbGUgR2xpZGUgVmVuZG9yIFBhY2thZ2UgTWFuYWdlbWVudCB1c2UKKyMKKyMgQ29weXJpZ2h0IDIwMTggKEMpIE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgorCitERVBFTkRTX2FwcGVuZCA9ICIgZ2xpZGUtbmF0aXZlIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgKCBjZCAke0J9L3NyYy8ke0dPX0lNUE9SVH0gJiYgZ2xpZGUgaW5zdGFsbCApCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dub21lYmFzZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nbm9tZWJhc2UuYmJjbGFzcwppbmRleCA0Y2NjOGUwLi5lZmNiNmNhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dub21lYmFzZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ25vbWViYXNlLmJiY2xhc3MKQEAgLTIwLDcgKzIwLDggQEAKIAogRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9L2RldmhlbHAiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworR05PTUVCQVNFQlVJTERDTEFTUyA/Pz0gImF1dG90b29scyIKK2luaGVyaXQgJHtHTk9NRUJBU0VCVUlMRENMQVNTfSBwa2djb25maWcKIAogZG9faW5zdGFsbF9hcHBlbmQoKSB7CiAJcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9zY3JvbGxrZWVwZXIvKgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nby5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nby5iYmNsYXNzCmluZGV4IDA5YjAxYTguLmQzM2Q4M2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ28uYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dvLmJiY2xhc3MKQEAgLTEsMjMgKzEsNiBAQAogaW5oZXJpdCBnb2FyY2ggcHRlc3QKIAotZGVmIGdldF9nb19wYXJhbGxlbF9tYWtlKGQpOgotICAgIHBtID0gKGQuZ2V0VmFyKCdQQVJBTExFTF9NQUtFJykgb3IgJycpLnNwbGl0KCkKLSAgICAjIGxvb2sgZm9yICctaicgYW5kIHRocm93IG90aGVyIG9wdGlvbnMgKGUuZy4gJy1sJykgYXdheQotICAgICMgYmVjYXVzZSB0aGV5IG1pZ2h0IGhhdmUgYSBkaWZmZXJlbnQgbWVhbmluZyBpbiBnb2xhbmcKLSAgICB3aGlsZSBwbToKLSAgICAgICAgb3B0ID0gcG0ucG9wKDApCi0gICAgICAgIGlmIG9wdCA9PSAnLWonOgotICAgICAgICAgICAgdiA9IHBtLnBvcCgwKQotICAgICAgICBlbGlmIG9wdC5zdGFydHN3aXRoKCctaicpOgotICAgICAgICAgICAgdiA9IG9wdFsyOl0uc3RyaXAoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICByZXR1cm4gJy1wICVkJyAlIGludCh2KQotCi0gICAgcmV0dXJuICIiCi0KLUdPX1BBUkFMTEVMX0JVSUxEID89ICIke0BnZXRfZ29fcGFyYWxsZWxfbWFrZShkKX0iCitHT19QQVJBTExFTF9CVUlMRCA/PSAiJHtAb2UudXRpbHMucGFyYWxsZWxfbWFrZV9hcmd1bWVudChkLCAnLXAgJWQnKX0iCiAKIEdPUk9PVF9jbGFzcy1uYXRpdmUgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvIgogR09ST09UX2NsYXNzLW5hdGl2ZXNkayA9ICIke1NUQUdJTkdfRElSX1RBUkdFVH0ke2xpYmRpcn0vZ28iCkBAIC00MSw4ICsyNCw5IEBACiBHT19MSU5LTU9ERV9jbGFzcy1uYXRpdmVzZGsgPSAiLS1saW5rbW9kZT1leHRlcm5hbCIKIEdPX0xERkxBR1MgPz0gJy1sZGZsYWdzPSIke0dPX1JQQVRIfSAke0dPX0xJTktNT0RFfSAtZXh0bGRmbGFncyAnJHtHT19FWFRMREZMQUdTfSciJwogZXhwb3J0IEdPQlVJTERGTEFHUyA/PSAiLXYgJHtHT19MREZMQUdTfSIKK2V4cG9ydCBHT1BBVEhfT01JVF9JTl9BQ1RJT05JRCA/PSAiMSIKIGV4cG9ydCBHT1BURVNUQlVJTERGTEFHUyA/PSAiJHtHT0JVSUxERkxBR1N9IC1jIgotZXhwb3J0IEdPUFRFU1RGTEFHUyA/PSAiLXRlc3QudiIKK2V4cG9ydCBHT1BURVNURkxBR1MgPz0gIiIKIEdPQlVJTERGTEFHU19wcmVwZW5kX3Rhc2stY29tcGlsZSA9ICIke0dPX1BBUkFMTEVMX0JVSUxEfSAiCiAKIGV4cG9ydCBHTyA9ICIke0hPU1RfUFJFRklYfWdvIgpAQCAtNTAsOSArMzQsNiBAQAogR09UT09MRElSX2NsYXNzLW5hdGl2ZSA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28vcGtnL3Rvb2wvJHtCVUlMRF9HT1RVUExFfSIKIGV4cG9ydCBHT1RPT0xESVIKIAotU0VDVVJJVFlfQ0ZMQUdTID0gIiR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0xERkxBR1MgPSAiIgotCiBleHBvcnQgQ0dPX0VOQUJMRUQgPz0gIjEiCiBleHBvcnQgQ0dPX0NGTEFHUyA/PSAiJHtDRkxBR1N9IgogZXhwb3J0IENHT19DUFBGTEFHUyA/PSAiJHtDUFBGTEFHU30iCkBAIC02NCw4ICs0NSw5IEBACiAKIEIgPSAiJHtXT1JLRElSfS9idWlsZCIKIGV4cG9ydCBHT1BBVEggPSAiJHtCfSIKLUdPX1RNUERJUiA/PSAiJHtXT1JLRElSfS9nby10bXAiCi1HT19UTVBESVJbdmFyZGVwdmFsdWVdID0gIiIKK2V4cG9ydCBHT0NBQ0hFID0gIm9mZiIKK2V4cG9ydCBHT1RNUERJUiA/PSAiJHtXT1JLRElSfS9nby10bXAiCitHT1RNUERJUlt2YXJkZXB2YWx1ZV0gPSAiIgogCiBweXRob24gZ29fZG9fdW5wYWNrKCkgewogICAgIHNyY191cmkgPSAoZC5nZXRWYXIoJ1NSQ19VUkknKSBvciAiIikuc3BsaXQoKQpAQCAtOTEsNyArNzMsNyBAQAogfQogCiBnb19saXN0X3BhY2thZ2VfdGVzdHMoKSB7Ci0gICAgJHtHT30gbGlzdCAtZiAne3suSW1wb3J0UGF0aH19IHt7LlRlc3RHb0ZpbGVzfX0nICR7R09CVUlMREZMQUdTfSAke0dPX0lOU1RBTEx9IHwgXAorCSR7R099IGxpc3QgLWYgJ3t7LkltcG9ydFBhdGh9fSB7ey5UZXN0R29GaWxlc319JyAke0dPQlVJTERGTEFHU30gJHtHT19JTlNUQUxMfSB8IFwKIAkJZ3JlcCAtdiAnXFtcXSQnIHwgXAogCQllZ3JlcCAtdiAnJHtHT19JTlNUQUxMX0ZJTFRFUk9VVH0nIHwgXAogCQlhd2sgJ3sgcHJpbnQgJDEgfScKQEAgLTEwMCwzMiArODIsMzcgQEAKIGdvX2RvX2NvbmZpZ3VyZSgpIHsKIAlsbiAtc25mICR7U30vc3JjICR7Qn0vCiB9Citkb19jb25maWd1cmVbZGlyc10gPSsgIiR7R09UTVBESVJ9IgogCiBnb19kb19jb21waWxlKCkgewotCWV4cG9ydCBUTVBESVI9IiR7R09fVE1QRElSfSIKLQkke0dPfSBlbnYKKwlleHBvcnQgVE1QRElSPSIke0dPVE1QRElSfSIKIAlpZiBbIC1uICIke0dPX0lOU1RBTEx9IiBdOyB0aGVuCisJCWlmIFsgLW4gIiR7R09fTElOS1NIQVJFRH0iIF07IHRoZW4KKwkJCSR7R099IGluc3RhbGwgJHtHT0JVSUxERkxBR1N9IGBnb19saXN0X3BhY2thZ2VzYAorCQkJcm0gLXJmICR7Qn0vYmluCisJCWZpCiAJCSR7R099IGluc3RhbGwgJHtHT19MSU5LU0hBUkVEfSAke0dPQlVJTERGTEFHU30gYGdvX2xpc3RfcGFja2FnZXNgCiAJZmkKIH0KLWRvX2NvbXBpbGVbZGlyc10gPSsgIiR7R09fVE1QRElSfSIKK2RvX2NvbXBpbGVbZGlyc10gPSsgIiR7R09UTVBESVJ9IgogZG9fY29tcGlsZVtjbGVhbmRpcnNdID0gIiR7Qn0vYmluICR7Qn0vcGtnIgogCi1kb19jb21waWxlX3B0ZXN0KCkgewotICAgIGV4cG9ydCBUTVBESVI9IiR7R09fVE1QRElSfSIKLSAgICBybSAtZiAke0J9Ly5nb19jb21waWxlZF90ZXN0cy5saXN0Citkb19jb21waWxlX3B0ZXN0X2Jhc2UoKSB7CisJZXhwb3J0IFRNUERJUj0iJHtHT1RNUERJUn0iCisJcm0gLWYgJHtCfS8uZ29fY29tcGlsZWRfdGVzdHMubGlzdAogCWdvX2xpc3RfcGFja2FnZV90ZXN0cyB8IHdoaWxlIHJlYWQgcGtnOyBkbwogCQljZCAke0J9L3NyYy8kcGtnCiAJCSR7R099IHRlc3QgJHtHT1BURVNUQlVJTERGTEFHU30gJHBrZwogCQlmaW5kIC4gLW1pbmRlcHRoIDEgLW1heGRlcHRoIDEgLXR5cGUgZiAtbmFtZSAnKi50ZXN0JyAtZXhlYyBlY2hvICRwa2cve30gXDsgfCBcCiAJCQlzZWQgLWUncywvXC4vLC8sJz4+ICR7Qn0vLmdvX2NvbXBpbGVkX3Rlc3RzLmxpc3QKIAlkb25lCisJZG9fY29tcGlsZV9wdGVzdAogfQotZG9fY29tcGlsZV9wdGVzdF9iYXNlW2RpcnNdID0rICIke0dPX1RNUERJUn0iCitkb19jb21waWxlX3B0ZXN0X2Jhc2VbZGlyc10gPSsgIiR7R09UTVBESVJ9IgogCiBnb19kb19pbnN0YWxsKCkgewogCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nby9zcmMvJHtHT19JTVBPUlR9Ci0JdGFyIC1DICR7U30vc3JjLyR7R09fSU1QT1JUfSAtY2YgLSAtLWV4Y2x1ZGUtdmNzIC0tZXhjbHVkZSAnKi50ZXN0JyAuIHwgXAorCXRhciAtQyAke1N9L3NyYy8ke0dPX0lNUE9SVH0gLWNmIC0gLS1leGNsdWRlLXZjcyAtLWV4Y2x1ZGUgJyoudGVzdCcgLS1leGNsdWRlICd0ZXN0ZGF0YScgLiB8IFwKIAkJdGFyIC1DICR7RH0ke2xpYmRpcn0vZ28vc3JjLyR7R09fSU1QT1JUfSAtLW5vLXNhbWUtb3duZXIgLXhmIC0KIAl0YXIgLUMgJHtCfSAtY2YgLSBwa2cgfCB0YXIgLUMgJHtEfSR7bGliZGlyfS9nbyAtLW5vLXNhbWUtb3duZXIgLXhmIC0KIApAQCAtMTM1LDQyICsxMjIsNTQgQEAKIAlmaQogfQogCi1kb19pbnN0YWxsX3B0ZXN0X2Jhc2UoKSB7Ci1zZXQgLXgKLSAgICB0ZXN0IC1mICIke0J9Ly5nb19jb21waWxlZF90ZXN0cy5saXN0IiB8fCBleGl0IDAKLSAgICB0ZXN0cz0iIgotICAgIHdoaWxlIHJlYWQgdGVzdDsgZG8KLSAgICAgICAgdGVzdHM9IiR0ZXN0cyR7dGVzdHM6KyB9JHt0ZXN0JS50ZXN0fSIKLSAgICAgICAgdGVzdGRpcj1gZGlybmFtZSAkdGVzdGAKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS8kdGVzdGRpcgotICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS9zcmMvJHRlc3QgJHtEfSR7UFRFU1RfUEFUSH0vJHRlc3QKLSAgICAgICAgaWYgWyAtZCAiJHtCfS9zcmMvJHRlc3RkaXIvdGVzdGRhdGEiIF07IHRoZW4KLSAgICAgICAgICAgIGNwIC0tcHJlc2VydmU9bW9kZSx0aW1lc3RhbXBzIC1SICIke0J9L3NyYy8kdGVzdGRpci90ZXN0ZGF0YSIgJHtEfSR7UFRFU1RfUEFUSH0vJHRlc3RkaXIKLSAgICAgICAgZmkKLSAgICBkb25lIDwgJHtCfS8uZ29fY29tcGlsZWRfdGVzdHMubGlzdAotICAgIGlmIFsgLW4gIiR0ZXN0cyIgXTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9Ci0gICAgICAgIGNhdCA+JHtEfSR7UFRFU1RfUEFUSH0vcnVuLXB0ZXN0IDw8RU9GCitnb19tYWtlX3B0ZXN0X3dyYXBwZXIoKSB7CisJY2F0ID4ke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QgPDxFT0YKICMhL2Jpbi9zaAotQU5ZRkFJTEVEPTAKLWZvciB0IGluICR0ZXN0czsgZG8KLSAgICB0ZXN0ZGlyPVxgZGlybmFtZSBcJHQudGVzdFxgCi0gICAgaWYgKCBjZCAiJHtQVEVTVF9QQVRIfS9cJHRlc3RkaXIiOyAiJHtQVEVTVF9QQVRIfS9cJHQudGVzdCIgJHtHT1BURVNURkxBR1N9IHwgdGVlIC9kZXYvZmQvOSB8IGdyZXAgLXEgIl5GQUlMIiApIDk+JjE7IHRoZW4KLSAgICAgICAgQU5ZRkFJTEVEPTEKLSAgICBmaQotZG9uZQotaWYgWyBcJEFOWUZBSUxFRCAtbmUgMCBdOyB0aGVuCi0gICAgZWNobyAiRkFJTDogJHtQTn0iCi0gICAgZXhpdCAxCi1maQotZWNobyAiUEFTUzogJHtQTn0iCi1leGl0IDAKK1JDPTAKK3J1bl90ZXN0KCkgKAorICAgIGNkICJcJDEiCisgICAgKCgoKC4vXCQyICR7R09QVEVTVEZMQUdTfTsgZWNobyBcJD8gPiYzKSB8IHNlZCAtciAtZSJzLF4oUEFTU3xTS0lQfEZBSUwpXCQsXFwxOiBcJDEvXCQyLCIgPiY0KSAzPiYxKSB8IChyZWFkIHJjOyBleGl0IFwkcmMpKSA0PiYxCisgICAgZXhpdCBcJD8pCiBFT0YKLSAgICAgICAgY2htb2QgK3ggJHtEfSR7UFRFU1RfUEFUSH0vcnVuLXB0ZXN0Ci0gICAgZWxzZQotICAgICAgICBybSAtcmYgJHtEfSR7UFRFU1RfUEFUSH0KLSAgICBmaQotc2V0ICt4CisKK30KKworZ29fc3RhZ2VfdGVzdGRhdGEoKSB7CisJb2xkd2Q9IiRQV0QiCisJY2QgJHtTfS9zcmMKKwlmaW5kICR7R09fSU1QT1JUfSAtZGVwdGggLXR5cGUgZCAtbmFtZSB0ZXN0ZGF0YSB8IHdoaWxlIHJlYWQgZDsgZG8KKwkJaWYgZWNobyAiJGQiIHwgZ3JlcCAtcSAnL3ZlbmRvci8nOyB0aGVuCisJCQljb250aW51ZQorCQlmaQorCQlwYXJlbnQ9YGRpcm5hbWUgJGRgCisJCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vJHBhcmVudAorCQljcCAtLXByZXNlcnZlPW1vZGUsdGltZXN0YW1wcyAtUiAkZCAke0R9JHtQVEVTVF9QQVRIfS8kcGFyZW50LworCWRvbmUKKwljZCAiJG9sZHdkIgorfQorCitkb19pbnN0YWxsX3B0ZXN0X2Jhc2UoKSB7CisJdGVzdCAtZiAiJHtCfS8uZ29fY29tcGlsZWRfdGVzdHMubGlzdCIgfHwgZXhpdCAwCisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfQorCWdvX3N0YWdlX3Rlc3RkYXRhCisJZ29fbWFrZV9wdGVzdF93cmFwcGVyCisJaGF2ZXRlc3RzPSIiCisJd2hpbGUgcmVhZCB0ZXN0OyBkbworCQl0ZXN0ZGlyPWBkaXJuYW1lICR0ZXN0YAorCQl0ZXN0cHJvZz1gYmFzZW5hbWUgJHRlc3RgCisJCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vJHRlc3RkaXIKKwkJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vc3JjLyR0ZXN0ICR7RH0ke1BURVNUX1BBVEh9LyR0ZXN0CisJZWNobyAicnVuX3Rlc3QgJHRlc3RkaXIgJHRlc3Rwcm9nIHx8IFJDPTEiID4+ICR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdAorCQloYXZldGVzdHM9InllcyIKKwlkb25lIDwgJHtCfS8uZ29fY29tcGlsZWRfdGVzdHMubGlzdAorCWlmIFsgLW4gIiRoYXZldGVzdHMiIF07IHRoZW4KKwkJZWNobyAiZXhpdCBcJFJDIiA+PiAke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QKKwkJY2htb2QgK3ggJHtEfSR7UFRFU1RfUEFUSH0vcnVuLXB0ZXN0CisJZWxzZQorCQlybSAtcmYgJHtEfSR7UFRFU1RfUEFUSH0KKwlmaQorCWRvX2luc3RhbGxfcHRlc3QKKwljaG93biAtUiByb290OnJvb3QgJHtEfSR7UFRFU1RfUEFUSH0KIH0KIAogRVhQT1JUX0ZVTkNUSU9OUyBkb191bnBhY2sgZG9fY29uZmlndXJlIGRvX2NvbXBpbGUgZG9faW5zdGFsbApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nb2FyY2guYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ29hcmNoLmJiY2xhc3MKaW5kZXggNjYzYzlmZi4uZjU0YzUxNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nb2FyY2guYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dvYXJjaC5iYmNsYXNzCkBAIC01LDExICs1LDEzIEBACiBIT1NUX0dPQVJDSCA9ICIke0Bnb19tYXBfYXJjaChkLmdldFZhcignSE9TVF9BUkNIJyksIGQpfSIKIEhPU1RfR09BUk0gPSAiJHtAZ29fbWFwX2FybShkLmdldFZhcignSE9TVF9BUkNIJyksIGQuZ2V0VmFyKCdUVU5FX0ZFQVRVUkVTJyksIGQpfSIKIEhPU1RfR08zODYgPSAiJHtAZ29fbWFwXzM4NihkLmdldFZhcignSE9TVF9BUkNIJyksIGQuZ2V0VmFyKCdUVU5FX0ZFQVRVUkVTJyksIGQpfSIKK0hPU1RfR09NSVBTID0gIiR7QGdvX21hcF9taXBzKGQuZ2V0VmFyKCdIT1NUX0FSQ0gnKSwgZC5nZXRWYXIoJ1RVTkVfRkVBVFVSRVMnKSwgZCl9IgogSE9TVF9HT1RVUExFID0gIiR7SE9TVF9HT09TfV8ke0hPU1RfR09BUkNIfSIKIFRBUkdFVF9HT09TID0gIiR7QGdvX21hcF9vcyhkLmdldFZhcignVEFSR0VUX09TJyksIGQpfSIKIFRBUkdFVF9HT0FSQ0ggPSAiJHtAZ29fbWFwX2FyY2goZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJyksIGQpfSIKIFRBUkdFVF9HT0FSTSA9ICIke0Bnb19tYXBfYXJtKGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpLCBkLmdldFZhcignVFVORV9GRUFUVVJFUycpLCBkKX0iCiBUQVJHRVRfR08zODYgPSAiJHtAZ29fbWFwXzM4NihkLmdldFZhcignVEFSR0VUX0FSQ0gnKSwgZC5nZXRWYXIoJ1RVTkVfRkVBVFVSRVMnKSwgZCl9IgorVEFSR0VUX0dPTUlQUyA9ICIke0Bnb19tYXBfbWlwcyhkLmdldFZhcignVEFSR0VUX0FSQ0gnKSwgZC5nZXRWYXIoJ1RVTkVfRkVBVFVSRVMnKSwgZCl9IgogVEFSR0VUX0dPVFVQTEUgPSAiJHtUQVJHRVRfR09PU31fJHtUQVJHRVRfR09BUkNIfSIKIEdPX0JVSUxEX0JJTkRJUiA9ICIke0BbJ2Jpbi8ke0hPU1RfR09UVVBMRX0nLCdiaW4nXVtkLmdldFZhcignQlVJTERfR09UVVBMRScpID09IGQuZ2V0VmFyKCdIT1NUX0dPVFVQTEUnKV19IgogCkBAIC0yMiw2ICsyNCw3IEBACiBHT19EWU5MSU5LX3g4Ni02NCA9ICIxIgogR09fRFlOTElOS19wb3dlcnBjNjQgPSAiMSIKIEdPX0RZTkxJTktfY2xhc3MtbmF0aXZlID0gIiIKK0dPX0RZTkxJTktfY2xhc3MtbmF0aXZlc2RrID0gIiIKIAogIyBkZWZpbmUgaGVyZSBiZWNhdXNlIGV2ZXJ5Ym9keSBpbmhlcml0cyB0aGlzIGNsYXNzCiAjCkBAIC0zMiw2ICszNSw4IEBACiBDT01QQVRJQkxFX0hPU1RfbWlwc2FyY2huMzIgPSAibnVsbCIKIEFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgogVFVORV9DQ0FSR1NfcmVtb3ZlID0gIi1tYXJjaD1taXBzMzJyMiIKK1NFQ1VSSVRZX0NGTEFHU19taXBzID0gIiR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKK1NFQ1VSSVRZX05PUElFX0NGTEFHUyA/Pz0gIiIKIAogZGVmIGdvX21hcF9hcmNoKGEsIGQpOgogICAgIGltcG9ydCByZQpAQCAtNTYsNyArNjEsNyBAQAogICAgIGVsaWYgcmUubWF0Y2goJ3AocGN8b3dlcnBjKSg2NGVsKScsIGEpOgogICAgICAgICByZXR1cm4gJ3BwYzY0bGUnCiAgICAgZWxzZToKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIlVuc3VwcG9ydGVkIENQVSBhcmNoaXRlY3R1cmU6ICVzIiAlIGEpCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIlVuc3VwcG9ydGVkIENQVSBhcmNoaXRlY3R1cmU6ICVzIiAlIGEpCiAKIGRlZiBnb19tYXBfYXJtKGEsIGYsIGQpOgogICAgIGltcG9ydCByZQpAQCAtNzgsNiArODMsMTUgQEAKICAgICAgICAgICAgIHJldHVybiAnMzg3JwogICAgIHJldHVybiAnJwogCitkZWYgZ29fbWFwX21pcHMoYSwgZiwgZCk6CisgICAgaW1wb3J0IHJlCisgICAgaWYgYSA9PSAnbWlwcycgb3IgYSA9PSAnbWlwc2VsJzoKKyAgICAgICAgaWYgJ2ZwdS1oYXJkJyBpbiBmOgorICAgICAgICAgICAgcmV0dXJuICdoYXJkZmxvYXQnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gJ3NvZnRmbG9hdCcKKyAgICByZXR1cm4gJycKKwogZGVmIGdvX21hcF9vcyhvLCBkKToKICAgICBpZiBvLnN0YXJ0c3dpdGgoJ2xpbnV4Jyk6CiAgICAgICAgIHJldHVybiAnbGludXgnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dvZGVwLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dvZGVwLmJiY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzgyNDAxYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ29kZXAuYmJjbGFzcwpAQCAtMCwwICsxLDggQEAKK0RFUEVORFNfYXBwZW5kID0gIiBnby1kZXAtbmF0aXZlIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgcm0gLWYgJHtXT1JLRElSfS9idWlsZC9zcmMvJHtHT19JTVBPUlR9L0dvcGtnLnRvbWwKKyAgICBybSAtZiAke1dPUktESVJ9L2J1aWxkL3NyYy8ke0dPX0lNUE9SVH0vR29wa2cubG9jaworICAgICggY2QgJHtXT1JLRElSfS9idWlsZC9zcmMvJHtHT19JTVBPUlR9ICYmIGRlcCBpbml0ICYmIGRlcCBlbnN1cmUgKQorfQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dydWItZWZpLWNmZy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ncnViLWVmaS1jZmcuYmJjbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWVlZTZjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ncnViLWVmaS1jZmcuYmJjbGFzcwpAQCAtMCwwICsxLDExNCBAQAorIyBncnViLWVmaS5iYmNsYXNzCisjIENvcHlyaWdodCAoYykgMjAxMSwgSW50ZWwgQ29ycG9yYXRpb24uCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIHBhY2thZ2VzL0NPUFlJTkcpCisKKyMgUHJvdmlkZSBncnViLWVmaSBzcGVjaWZpYyBmdW5jdGlvbnMgZm9yIGJ1aWxkaW5nIGJvb3RhYmxlIGltYWdlcy4KKworIyBFeHRlcm5hbCB2YXJpYWJsZXMKKyMgJHtJTklUUkR9IC0gaW5kaWNhdGVzIGEgbGlzdCBvZiBmaWxlc3lzdGVtIGltYWdlcyB0byBjb25jYXRlbmF0ZSBhbmQgdXNlIGFzIGFuIGluaXRyZCAob3B0aW9uYWwpCisjICR7Uk9PVEZTfSAtIGluZGljYXRlcyBhIGZpbGVzeXN0ZW0gaW1hZ2UgdG8gaW5jbHVkZSBhcyB0aGUgcm9vdCBmaWxlc3lzdGVtIChvcHRpb25hbCkKKyMgJHtHUlVCX0dGWFNFUklBTH0gLSBzZXQgdGhpcyB0byAxIHRvIGhhdmUgZ3JhcGhpY3MgYW5kIHNlcmlhbCBpbiB0aGUgYm9vdCBtZW51CisjICR7TEFCRUxTfSAtIGEgbGlzdCBvZiB0YXJnZXRzIGZvciB0aGUgYXV0b21hdGljIGNvbmZpZworIyAke0FQUEVORH0gLSBhbiBvdmVycmlkZSBsaXN0IG9mIGFwcGVuZCBzdHJpbmdzIGZvciBlYWNoIGxhYmVsCisjICR7R1JVQl9PUFRTfSAtIGFkZGl0aW9uYWwgb3B0aW9ucyB0byBhZGQgdG8gdGhlIGNvbmZpZywgJzsnIGRlbGltaXRlZCAjIChvcHRpb25hbCkKKyMgJHtHUlVCX1RJTUVPVVR9IC0gdGltZW91dCBiZWZvcmUgZXhlY3V0aW5nIHRoZSBkZWF1bHQgbGFiZWwgKG9wdGlvbmFsKQorIyAke0dSVUJfUk9PVH0gLSBncnViJ3Mgcm9vdCBkZXZpY2UuCisKK0dSVUJfU0VSSUFMID89ICJjb25zb2xlPXR0eVMwLDExNTIwMCIKK0dSVUJfQ0ZHX1ZNID0gIiR7U30vZ3J1Yl92bS5jZmciCitHUlVCX0NGR19MSVZFID0gIiR7U30vZ3J1Yl9saXZlLmNmZyIKK0dSVUJfVElNRU9VVCA/PSAiMTAiCisjRklYTUU6IGJ1aWxkIHRoaXMgZnJvbSB0aGUgbWFjaGluZSBjb25maWcKK0dSVUJfT1BUUyA/PSAic2VyaWFsIC0tdW5pdD0wIC0tc3BlZWQ9MTE1MjAwIC0td29yZD04IC0tcGFyaXR5PW5vIC0tc3RvcD0xIgorCitFRklESVIgPSAiL0VGSS9CT09UIgorR1JVQl9ST09UID89ICIke1JPT1R9IgorQVBQRU5EID89ICIiCisKKyMgTmVlZCBVVUlEIHV0aWxpdHkgY29kZS4KK2luaGVyaXQgZnMtdXVpZAorCitweXRob24gYnVpbGRfZWZpX2NmZygpIHsKKyAgICBpbXBvcnQgc3lzCisKKyAgICB3b3JrZGlyID0gZC5nZXRWYXIoJ1dPUktESVInKQorICAgIGlmIG5vdCB3b3JrZGlyOgorICAgICAgICBiYi5lcnJvcigiV09SS0RJUiBub3QgZGVmaW5lZCwgdW5hYmxlIHRvIHBhY2thZ2UiKQorICAgICAgICByZXR1cm4KKworICAgIGdmeHNlcmlhbCA9IGQuZ2V0VmFyKCdHUlVCX0dGWFNFUklBTCcpIG9yICIiCisKKyAgICBsYWJlbHMgPSBkLmdldFZhcignTEFCRUxTJykKKyAgICBpZiBub3QgbGFiZWxzOgorICAgICAgICBiYi5kZWJ1ZygxLCAiTEFCRUxTIG5vdCBkZWZpbmVkLCBub3RoaW5nIHRvIGRvIikKKyAgICAgICAgcmV0dXJuCisKKyAgICBpZiBsYWJlbHMgPT0gW106CisgICAgICAgIGJiLmRlYnVnKDEsICJObyBsYWJlbHMsIG5vdGhpbmcgdG8gZG8iKQorICAgICAgICByZXR1cm4KKworICAgIGNmaWxlID0gZC5nZXRWYXIoJ0dSVUJfQ0ZHJykKKyAgICBpZiBub3QgY2ZpbGU6CisgICAgICAgIGJiLmZhdGFsKCdVbmFibGUgdG8gcmVhZCBHUlVCX0NGRycpCisKKyAgICB0cnk6CisgICAgICAgICBjZmdmaWxlID0gb3BlbihjZmlsZSwgJ3cnKQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICBiYi5mYXRhbCgnVW5hYmxlIHRvIG9wZW4gJXMnICUgY2ZpbGUpCisKKyAgICBjZmdmaWxlLndyaXRlKCcjIEF1dG9tYXRpY2FsbHkgY3JlYXRlZCBieSBPRVxuJykKKworICAgIG9wdHMgPSBkLmdldFZhcignR1JVQl9PUFRTJykKKyAgICBpZiBvcHRzOgorICAgICAgICBmb3Igb3B0IGluIG9wdHMuc3BsaXQoJzsnKToKKyAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJyVzXG4nICUgb3B0KQorCisgICAgY2ZnZmlsZS53cml0ZSgnZGVmYXVsdD0lc1xuJyAlIChsYWJlbHMuc3BsaXQoKVswXSkpCisKKyAgICB0aW1lb3V0ID0gZC5nZXRWYXIoJ0dSVUJfVElNRU9VVCcpCisgICAgaWYgdGltZW91dDoKKyAgICAgICAgY2ZnZmlsZS53cml0ZSgndGltZW91dD0lc1xuJyAlIHRpbWVvdXQpCisgICAgZWxzZToKKyAgICAgICAgY2ZnZmlsZS53cml0ZSgndGltZW91dD01MFxuJykKKworICAgIHJvb3QgPSBkLmdldFZhcignR1JVQl9ST09UJykKKyAgICBpZiBub3Qgcm9vdDoKKyAgICAgICAgYmIuZmF0YWwoJ0dSVUJfUk9PVCBub3QgZGVmaW5lZCcpCisKKyAgICBpZiBnZnhzZXJpYWwgPT0gIjEiOgorICAgICAgICBidHlwZXMgPSBbIFsgIiBncmFwaGljcyBjb25zb2xlIiwgIiIgXSwKKyAgICAgICAgICAgIFsgIiBzZXJpYWwgY29uc29sZSIsIGQuZ2V0VmFyKCdHUlVCX1NFUklBTCcpIG9yICIiIF0gXQorICAgIGVsc2U6CisgICAgICAgIGJ0eXBlcyA9IFsgWyAiIiwgIiIgXSBdCisKKyAgICBmb3IgbGFiZWwgaW4gbGFiZWxzLnNwbGl0KCk6CisgICAgICAgIGxvY2FsZGF0YSA9IGQuY3JlYXRlQ29weSgpCisKKyAgICAgICAgZm9yIGJ0eXBlIGluIGJ0eXBlczoKKyAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJ1xubWVudWVudHJ5IFwnJXMlc1wne1xuJyAlIChsYWJlbCwgYnR5cGVbMF0pKQorICAgICAgICAgICAgbGIgPSBsYWJlbAorICAgICAgICAgICAgaWYgbGFiZWwgPT0gImluc3RhbGwiOgorICAgICAgICAgICAgICAgIGxiID0gImluc3RhbGwtZWZpIgorICAgICAgICAgICAga2VybmVsID0gbG9jYWxkYXRhLmdldFZhcignS0VSTkVMX0lNQUdFVFlQRScpCisgICAgICAgICAgICBjZmdmaWxlLndyaXRlKCdsaW51eCAvJXMgTEFCRUw9JXMnICUgKGtlcm5lbCwgbGIpKQorCisgICAgICAgICAgICBjZmdmaWxlLndyaXRlKCcgJXMnICUgcmVwbGFjZV9yb290ZnNfdXVpZChkLCByb290KSkKKworICAgICAgICAgICAgYXBwZW5kID0gbG9jYWxkYXRhLmdldFZhcignQVBQRU5EJykKKyAgICAgICAgICAgIGluaXRyZCA9IGxvY2FsZGF0YS5nZXRWYXIoJ0lOSVRSRCcpCisKKyAgICAgICAgICAgIGlmIGFwcGVuZDoKKyAgICAgICAgICAgICAgICBhcHBlbmQgPSByZXBsYWNlX3Jvb3Rmc191dWlkKGQsIGFwcGVuZCkKKyAgICAgICAgICAgICAgICBjZmdmaWxlLndyaXRlKCcgJXMnICUgKGFwcGVuZCkpCisKKyAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJyAlcycgJSBidHlwZVsxXSkKKyAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJ1xuJykKKworICAgICAgICAgICAgaWYgaW5pdHJkOgorICAgICAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJ2luaXRyZCAvaW5pdHJkJykKKyAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJ1xufVxuJykKKworICAgIGNmZ2ZpbGUuY2xvc2UoKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ncnViLWVmaS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ncnViLWVmaS5iYmNsYXNzCmluZGV4IDYxMDQ3OWIuLjkwYmFkYzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ3J1Yi1lZmkuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dydWItZWZpLmJiY2xhc3MKQEAgLTEsMzYgKzEsNCBAQAotIyBncnViLWVmaS5iYmNsYXNzCi0jIENvcHlyaWdodCAoYykgMjAxMSwgSW50ZWwgQ29ycG9yYXRpb24uCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIHBhY2thZ2VzL0NPUFlJTkcpCi0KLSMgUHJvdmlkZSBncnViLWVmaSBzcGVjaWZpYyBmdW5jdGlvbnMgZm9yIGJ1aWxkaW5nIGJvb3RhYmxlIGltYWdlcy4KLQotIyBFeHRlcm5hbCB2YXJpYWJsZXMKLSMgJHtJTklUUkR9IC0gaW5kaWNhdGVzIGEgbGlzdCBvZiBmaWxlc3lzdGVtIGltYWdlcyB0byBjb25jYXRlbmF0ZSBhbmQgdXNlIGFzIGFuIGluaXRyZCAob3B0aW9uYWwpCi0jICR7Uk9PVEZTfSAtIGluZGljYXRlcyBhIGZpbGVzeXN0ZW0gaW1hZ2UgdG8gaW5jbHVkZSBhcyB0aGUgcm9vdCBmaWxlc3lzdGVtIChvcHRpb25hbCkKLSMgJHtHUlVCX0dGWFNFUklBTH0gLSBzZXQgdGhpcyB0byAxIHRvIGhhdmUgZ3JhcGhpY3MgYW5kIHNlcmlhbCBpbiB0aGUgYm9vdCBtZW51Ci0jICR7TEFCRUxTfSAtIGEgbGlzdCBvZiB0YXJnZXRzIGZvciB0aGUgYXV0b21hdGljIGNvbmZpZwotIyAke0FQUEVORH0gLSBhbiBvdmVycmlkZSBsaXN0IG9mIGFwcGVuZCBzdHJpbmdzIGZvciBlYWNoIGxhYmVsCi0jICR7R1JVQl9PUFRTfSAtIGFkZGl0aW9uYWwgb3B0aW9ucyB0byBhZGQgdG8gdGhlIGNvbmZpZywgJzsnIGRlbGltaXRlZCAjIChvcHRpb25hbCkKLSMgJHtHUlVCX1RJTUVPVVR9IC0gdGltZW91dCBiZWZvcmUgZXhlY3V0aW5nIHRoZSBkZWF1bHQgbGFiZWwgKG9wdGlvbmFsKQotIyAke0dSVUJfUk9PVH0gLSBncnViJ3Mgcm9vdCBkZXZpY2UuCi0KLWRvX2Jvb3RpbWdbZGVwZW5kc10gKz0gIiR7TUxQUkVGSVh9Z3J1Yi1lZmk6ZG9fZGVwbG95IgotCi1HUlVCX1NFUklBTCA/PSAiY29uc29sZT10dHlTMCwxMTUyMDAiCi1HUlVCX0NGR19WTSA9ICIke1N9L2dydWJfdm0uY2ZnIgotR1JVQl9DRkdfTElWRSA9ICIke1N9L2dydWJfbGl2ZS5jZmciCi1HUlVCX1RJTUVPVVQgPz0gIjEwIgotI0ZJWE1FOiBidWlsZCB0aGlzIGZyb20gdGhlIG1hY2hpbmUgY29uZmlnCi1HUlVCX09QVFMgPz0gInNlcmlhbCAtLXVuaXQ9MCAtLXNwZWVkPTExNTIwMCAtLXdvcmQ9OCAtLXBhcml0eT1ubyAtLXN0b3A9MSIKLQotRUZJRElSID0gIi9FRkkvQk9PVCIKLUdSVUJfUk9PVCA/PSAiJHtST09UfSIKLUFQUEVORCA/PSAiIgotCi0jIE5lZWQgVVVJRCB1dGlsaXR5IGNvZGUuCi1pbmhlcml0IGZzLXV1aWQKK2luaGVyaXQgZ3J1Yi1lZmktY2ZnCiAKIGVmaV9wb3B1bGF0ZSgpIHsKIAkjIERFU1QgbXVzdCBiZSB0aGUgcm9vdCBvZiB0aGUgaW1hZ2Ugc28gdGhhdCBFRklESVIgaXMgbm90CkBAIC01OCw3ICsyNiw3IEBACiAJIyBCdWlsZCBhIEVGSSBkaXJlY3RvcnkgdG8gY3JlYXRlIGVmaS5pbWcKIAlta2RpciAtcCAke0VGSUlNR0RJUn0vJHtFRklESVJ9CiAJY3AgJGlzb19kaXIvJHtFRklESVJ9LyogJHtFRklJTUdESVJ9JHtFRklESVJ9Ci0JY3AgJGlzb19kaXIvdm1saW51eiAke0VGSUlNR0RJUn0KKwljcCAkaXNvX2Rpci8ke0tFUk5FTF9JTUFHRVRZUEV9ICR7RUZJSU1HRElSfQogCUVGSVBBVEg9JChlY2hvICIke0VGSURJUn0iIHwgc2VkICdzL1wvL1xcL2cnKQogCXByaW50ZiAnZnMwOiVzXCVzXG4nICIkRUZJUEFUSCIgIiRHUlVCX0lNQUdFIiA+ICR7RUZJSU1HRElSfS9zdGFydHVwLm5zaAogCWlmIFsgLWYgIiRpc29fZGlyL2luaXRyZCIgXSA7IHRoZW4KQEAgLTY5LDkxICszNywzIEBACiBlZmlfaGRkaW1nX3BvcHVsYXRlKCkgewogCWVmaV9wb3B1bGF0ZSAkMQogfQotCi1weXRob24gYnVpbGRfZWZpX2NmZygpIHsKLSAgICBpbXBvcnQgc3lzCi0KLSAgICB3b3JrZGlyID0gZC5nZXRWYXIoJ1dPUktESVInKQotICAgIGlmIG5vdCB3b3JrZGlyOgotICAgICAgICBiYi5lcnJvcigiV09SS0RJUiBub3QgZGVmaW5lZCwgdW5hYmxlIHRvIHBhY2thZ2UiKQotICAgICAgICByZXR1cm4KLQotICAgIGdmeHNlcmlhbCA9IGQuZ2V0VmFyKCdHUlVCX0dGWFNFUklBTCcpIG9yICIiCi0KLSAgICBsYWJlbHMgPSBkLmdldFZhcignTEFCRUxTJykKLSAgICBpZiBub3QgbGFiZWxzOgotICAgICAgICBiYi5kZWJ1ZygxLCAiTEFCRUxTIG5vdCBkZWZpbmVkLCBub3RoaW5nIHRvIGRvIikKLSAgICAgICAgcmV0dXJuCi0KLSAgICBpZiBsYWJlbHMgPT0gW106Ci0gICAgICAgIGJiLmRlYnVnKDEsICJObyBsYWJlbHMsIG5vdGhpbmcgdG8gZG8iKQotICAgICAgICByZXR1cm4KLQotICAgIGNmaWxlID0gZC5nZXRWYXIoJ0dSVUJfQ0ZHJykKLSAgICBpZiBub3QgY2ZpbGU6Ci0gICAgICAgIGJiLmZhdGFsKCdVbmFibGUgdG8gcmVhZCBHUlVCX0NGRycpCi0KLSAgICB0cnk6Ci0gICAgICAgICBjZmdmaWxlID0gb3BlbihjZmlsZSwgJ3cnKQotICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICBiYi5mYXRhbCgnVW5hYmxlIHRvIG9wZW4gJXMnICUgY2ZpbGUpCi0KLSAgICBjZmdmaWxlLndyaXRlKCcjIEF1dG9tYXRpY2FsbHkgY3JlYXRlZCBieSBPRVxuJykKLQotICAgIG9wdHMgPSBkLmdldFZhcignR1JVQl9PUFRTJykKLSAgICBpZiBvcHRzOgotICAgICAgICBmb3Igb3B0IGluIG9wdHMuc3BsaXQoJzsnKToKLSAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJyVzXG4nICUgb3B0KQotCi0gICAgY2ZnZmlsZS53cml0ZSgnZGVmYXVsdD0lc1xuJyAlIChsYWJlbHMuc3BsaXQoKVswXSkpCi0KLSAgICB0aW1lb3V0ID0gZC5nZXRWYXIoJ0dSVUJfVElNRU9VVCcpCi0gICAgaWYgdGltZW91dDoKLSAgICAgICAgY2ZnZmlsZS53cml0ZSgndGltZW91dD0lc1xuJyAlIHRpbWVvdXQpCi0gICAgZWxzZToKLSAgICAgICAgY2ZnZmlsZS53cml0ZSgndGltZW91dD01MFxuJykKLQotICAgIHJvb3QgPSBkLmdldFZhcignR1JVQl9ST09UJykKLSAgICBpZiBub3Qgcm9vdDoKLSAgICAgICAgYmIuZmF0YWwoJ0dSVUJfUk9PVCBub3QgZGVmaW5lZCcpCi0KLSAgICBpZiBnZnhzZXJpYWwgPT0gIjEiOgotICAgICAgICBidHlwZXMgPSBbIFsgIiBncmFwaGljcyBjb25zb2xlIiwgIiIgXSwKLSAgICAgICAgICAgIFsgIiBzZXJpYWwgY29uc29sZSIsIGQuZ2V0VmFyKCdHUlVCX1NFUklBTCcpIG9yICIiIF0gXQotICAgIGVsc2U6Ci0gICAgICAgIGJ0eXBlcyA9IFsgWyAiIiwgIiIgXSBdCi0KLSAgICBmb3IgbGFiZWwgaW4gbGFiZWxzLnNwbGl0KCk6Ci0gICAgICAgIGxvY2FsZGF0YSA9IGQuY3JlYXRlQ29weSgpCi0KLSAgICAgICAgb3ZlcnJpZGVzID0gbG9jYWxkYXRhLmdldFZhcignT1ZFUlJJREVTJykKLSAgICAgICAgaWYgbm90IG92ZXJyaWRlczoKLSAgICAgICAgICAgIGJiLmZhdGFsKCdPVkVSUklERVMgbm90IGRlZmluZWQnKQotCi0gICAgICAgIGZvciBidHlwZSBpbiBidHlwZXM6Ci0gICAgICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdPVkVSUklERVMnLCBsYWJlbCArICc6JyArIG92ZXJyaWRlcykKLQotICAgICAgICAgICAgY2ZnZmlsZS53cml0ZSgnXG5tZW51ZW50cnkgXCclcyVzXCd7XG4nICUgKGxhYmVsLCBidHlwZVswXSkpCi0gICAgICAgICAgICBsYiA9IGxhYmVsCi0gICAgICAgICAgICBpZiBsYWJlbCA9PSAiaW5zdGFsbCI6Ci0gICAgICAgICAgICAgICAgbGIgPSAiaW5zdGFsbC1lZmkiCi0gICAgICAgICAgICBjZmdmaWxlLndyaXRlKCdsaW51eCAvdm1saW51eiBMQUJFTD0lcycgJSAobGIpKQotCi0gICAgICAgICAgICBjZmdmaWxlLndyaXRlKCcgJXMnICUgcmVwbGFjZV9yb290ZnNfdXVpZChkLCByb290KSkKLQotICAgICAgICAgICAgYXBwZW5kID0gbG9jYWxkYXRhLmdldFZhcignQVBQRU5EJykKLSAgICAgICAgICAgIGluaXRyZCA9IGxvY2FsZGF0YS5nZXRWYXIoJ0lOSVRSRCcpCi0KLSAgICAgICAgICAgIGlmIGFwcGVuZDoKLSAgICAgICAgICAgICAgICBhcHBlbmQgPSByZXBsYWNlX3Jvb3Rmc191dWlkKGQsIGFwcGVuZCkKLSAgICAgICAgICAgICAgICBjZmdmaWxlLndyaXRlKCcgJXMnICUgKGFwcGVuZCkpCi0KLSAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJyAlcycgJSBidHlwZVsxXSkKLSAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJ1xuJykKLQotICAgICAgICAgICAgaWYgaW5pdHJkOgotICAgICAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJ2luaXRyZCAvaW5pdHJkJykKLSAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJ1xufVxuJykKLQotICAgIGNmZ2ZpbGUuY2xvc2UoKQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ndGstZG9jLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2d0ay1kb2MuYmJjbGFzcwppbmRleCA1MjAxYzcxLi5iNGY2NzU0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2d0ay1kb2MuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2d0ay1kb2MuYmJjbGFzcwpAQCAtMTgsMjcgKzE4LDI3IEBACiBFWFRSQV9PRUNPTkZfcHJlcGVuZF9jbGFzcy1uYXRpdmUgPSAiLS1kaXNhYmxlLWd0ay1kb2MgIgogRVhUUkFfT0VDT05GX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIi0tZGlzYWJsZS1ndGstZG9jICIKIAotREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBndGstZG9jLW5hdGl2ZSBxZW11LW5hdGl2ZSIKLQogIyBFdmVuIHRob3VnaCBndGtkb2MgaXMgZGlzYWJsZWQgb24gLW5hdGl2ZSwgZ3RrLWRvYyBwYWNrYWdlIGlzIHN0aWxsCiAjIG5lZWRlZCBmb3IgbTQgbWFjcm9zLgotREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBndGstZG9jLW5hdGl2ZSIKLURFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgZ3RrLWRvYy1uYXRpdmUiCitERVBFTkRTX2FwcGVuZCA9ICIgZ3RrLWRvYy1uYXRpdmUiCiAKICMgVGhlIGRvY3VtZW50YXRpb24gZGlyZWN0b3J5LCB3aGVyZSB0aGUgaW5mcmFzdHJ1Y3R1cmUgd2lsbCBiZSBjb3BpZWQuCiAjIGd0a2RvY2l6ZSBoYXMgYSBkZWZhdWx0IG9mICIuIiBzbyB0byBoYW5kbGUgb3V0LW9mLXRyZWUgYnVpbGRzIHNldCB0aGlzIHRvICRTLgogR1RLRE9DX0RPQ0RJUiA/PSAiJHtTfSIKIAotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSggY2QgJHtTfTsgZ3RrZG9jaXplIC0tZG9jZGlyICR7R1RLRE9DX0RPQ0RJUn0gfHwgdHJ1ZSApCi19Ci0KLWluaGVyaXQgcWVtdQotCiBleHBvcnQgU1RBR0lOR19ESVJfSE9TVAogCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKK2luaGVyaXQgcHl0aG9uM25hdGl2ZSBwa2djb25maWcgcWVtdQorREVQRU5EU19hcHBlbmQgPSAiJHtAJyBxZW11LW5hdGl2ZScgaWYgZC5nZXRWYXIoJ0dUS0RPQ19FTkFCTEVEJykgPT0gJ1RydWUnIGVsc2UgJyd9IgogCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJIyBOZWVkIHRvIHVzZSB8fHRydWUgYXMgdGhpcyBpcyBvbmx5IG5lZWRlZCBpZiBjb25maWd1cmUuYWMgYm90aCBleGlzdHMKKwkjIGFuZCB1c2VzIEdUS19ET0NfQ0hFQ0suCisJZ3RrZG9jaXplIC0tc3JjZGlyICR7U30gLS1kb2NkaXIgJHtHVEtET0NfRE9DRElSfSB8fCB0cnVlCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQgKCkgeworICAgIGlmIFsgJHtHVEtET0NfRU5BQkxFRH0gPSBUcnVlIF07IHRoZW4KICAgICAgICAgIyBXcml0ZSBvdXQgYSBxZW11IHdyYXBwZXIgdGhhdCB3aWxsIGJlIGdpdmVuIHRvIGd0a2RvYy1zY2FuZ29iaiBzbyB0aGF0IGl0CiAgICAgICAgICMgY2FuIHJ1biB0YXJnZXQgaGVscGVyIGJpbmFyaWVzIHRocm91Z2ggdGhhdC4KICAgICAgICAgcWVtdV9iaW5hcnk9IiR7QHFlbXVfd3JhcHBlcl9jbWRsaW5lKGQsICckU1RBR0lOR19ESVJfSE9TVCcsIFsnXCRHSVJfRVhUUkFfTElCU19QQVRIJywnJFNUQUdJTkdfRElSX0hPU1QvJHtsaWJkaXJ9JywnJFNUQUdJTkdfRElSX0hPU1QvJHtiYXNlX2xpYmRpcn0nXSl9IgpAQCAtNjQsNyArNjQsNSBAQAogZmkKIEVPRgogICAgICAgICBjaG1vZCAreCAke0J9L2d0a2RvYy1xZW11d3JhcHBlcgorICAgIGZpCiB9Ci0KLQotaW5oZXJpdCBwa2djb25maWcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaWNlY2MuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaWNlY2MuYmJjbGFzcwppbmRleCAxY2MxYzRkLi4wY2E4ZGU4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ljZWNjLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pY2VjYy5iYmNsYXNzCkBAIC0yOCwxNSArMjgsNDQgQEAKICNFcnJvciBjaGVja2luZyBpcyBrZXB0IHRvIG1pbmltdW0gc28gZG91YmxlIGNoZWNrIGFueSBwYXJhbWV0ZXJzIHlvdSBwYXNzIHRvIHRoZSBjbGFzcwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi1CQl9IQVNIQkFTRV9XSElURUxJU1QgKz0gIklDRUNDX1BBUkFMTEVMX01BS0UgSUNFQ0NfRElTQUJMRUQgSUNFQ0NfVVNFUl9QQUNLQUdFX0JMIElDRUNDX1VTRVJfQ0xBU1NfQkwgSUNFQ0NfVVNFUl9QQUNLQUdFX1dMIElDRUNDX1BBVEggSUNFQ0NfRU5WX0VYRUMiCitCQl9IQVNIQkFTRV9XSElURUxJU1QgKz0gIklDRUNDX1BBUkFMTEVMX01BS0UgSUNFQ0NfRElTQUJMRUQgSUNFQ0NfVVNFUl9QQUNLQUdFX0JMIFwKKyAgICBJQ0VDQ19VU0VSX0NMQVNTX0JMIElDRUNDX1VTRVJfUEFDS0FHRV9XTCBJQ0VDQ19QQVRIIElDRUNDX0VOVl9FWEVDIFwKKyAgICBJQ0VDQ19DQVJFVF9XT1JLQVJPVU5EIElDRUNDX0NGTEFHUyBJQ0VDQ19FTlZfVkVSU0lPTiBcCisgICAgSUNFQ0NfREVCVUcgSUNFQ0NfTE9HRklMRSBJQ0VDQ19SRVBFQVRfUkFURSBJQ0VDQ19QUkVGRVJSRURfSE9TVCBcCisgICAgSUNFQ0NfQ0xBTkdfUkVNT1RFX0NQUCBJQ0VDQ19JR05PUkVfVU5WRVJJRklFRCBJQ0VDQ19URVNUX1NPQ0tFVCBcCisgICAgSUNFQ0NfRU5WX0RFQlVHIFwKKyAgICAiCiAKIElDRUNDX0VOVl9FWEVDID89ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vaWNlY2MtY3JlYXRlLWVudiIKIAorIyBUaGlzIHZlcnNpb24gY2FuIGJlIGluY3JlbWVudGVkIHdoZW4gY2hhbmdlcyBhcmUgbWFkZSB0byB0aGUgZW52aXJvbm1lbnQgdGhhdAorIyBpbnZhbGlkYXRlIHRoZSB2ZXJzaW9uIG9uIHRoZSBjb21waWxlIG5vZGVzLiBDaGFuZ2luZyBpdCB3aWxsIGNhdXNlIGEgbmV3CisjIGVudmlyb25tZW50IHRvIGJlIGNyZWF0ZWQuCisjCisjIEEgdXNlZnVsIHRoaW5nIHRvIGRvIGZvciB0ZXN0aW5nIEljZWNyZWFtIGNoYW5nZXMgbG9jYWxseSBpcyB0byBhZGQgYQorIyBzdWJ2ZXJzaW9uIGluIGxvY2FsLmNvbmY6CisjICBJQ0VDQ19FTlZfVkVSU0lPTl9hcHBlbmQgPSAiLW15LXZlci0xIgorSUNFQ0NfRU5WX1ZFUlNJT04gPSAiMiIKKworIyBEZWZhdWx0IHRvIGRpc2FibGluZyB0aGUgY2FyZXQgd29ya2Fyb3VuZCwgSWYgc2V0IHRvICIxIiBpbiBsb2NhbC5jb25mLCBpY2VjYworIyB3aWxsIGxvY2FsbHkgcmVjb21waWxlIGFueSBmaWxlcyB0aGF0IGhhdmUgd2FybmluZ3MsIHdoaWNoIGNhbiBhZHZlcnNlbHkKKyMgYWZmZWN0IHBlcmZvcm1hbmNlLgorIworIyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pY2VjYy9pY2VjcmVhbS9pc3N1ZXMvMTkwCitleHBvcnQgSUNFQ0NfQ0FSRVRfV09SS0FST1VORCA/Pz0gIjAiCisKK0lDRUNDX0NGTEFHUyA9ICIiCitDRkxBR1MgKz0gIiR7SUNFQ0NfQ0ZMQUdTfSIKK0NYWEZMQUdTICs9ICIke0lDRUNDX0NGTEFHU30iCisKKyMgRGVidWcgZmxhZ3Mgd2hlbiBnZW5lcmF0aW5nIGVudmlyb25tZW50cworSUNFQ0NfRU5WX0RFQlVHID8/PSAiIgorCiBkZWYgaWNlY2NfZGVwX3ByZXBlbmQoZCk6CiAgICAgIyBJTkhJQklUX0RFRkFVTFRfREVQUyBkb2Vzbid0IGFwcGx5IHRvIHRoZSBwYXRjaCBjb21tYW5kLiAgV2hldGhlciBvciAgbm90CiAgICAgIyB3ZSBuZWVkIHRoYXQgYnVpbHQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBwYXRjaCBmdW5jdGlvbiAvIGNsYXNzLCBub3QKICAgICAjIHRoZSBhcHBsaWNhdGlvbi4KLSAgICBpZiBub3QgZC5nZXRWYXIoJ0lOSElCSVRfREVGQVVMVF9ERVBTJywgRmFsc2UpOgorICAgIGlmIG5vdCBkLmdldFZhcignSU5ISUJJVF9ERUZBVUxUX0RFUFMnKToKICAgICAgICAgcmV0dXJuICJpY2VjYy1jcmVhdGUtZW52LW5hdGl2ZSIKICAgICByZXR1cm4gIiIKIApAQCAtNDQsMjEgKzczLDIwIEBACiAKIGdldF9jcm9zc19rZXJuZWxfY2NbdmFyZGVwc2V4Y2x1ZGVdICs9ICJLRVJORUxfQ0MiCiBkZWYgZ2V0X2Nyb3NzX2tlcm5lbF9jYyhiYixkKToKLSAgICBrZXJuZWxfY2MgPSBkLmdldFZhcignS0VSTkVMX0NDJywgRmFsc2UpCisgICAga2VybmVsX2NjID0gZC5nZXRWYXIoJ0tFUk5FTF9DQycpCiAKICAgICAjIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGJ5IHRoZSBzaGVsbCBpZiBuZWNlc3NhcnkKICAgICBpZiAnYCcgaW4ga2VybmVsX2NjIG9yICckKCcgaW4ga2VybmVsX2NjOgogICAgICAgICBpbXBvcnQgc3VicHJvY2VzcwogICAgICAgICBrZXJuZWxfY2MgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgiZWNobyAlcyIgJSBrZXJuZWxfY2MsIHNoZWxsPVRydWUpLmRlY29kZSgidXRmLTgiKVs6LTFdCiAKLSAgICBrZXJuZWxfY2MgPSBkLmV4cGFuZChrZXJuZWxfY2MpCiAgICAga2VybmVsX2NjID0ga2VybmVsX2NjLnJlcGxhY2UoJ2NjYWNoZScsICcnKS5zdHJpcCgpCiAgICAga2VybmVsX2NjID0ga2VybmVsX2NjLnNwbGl0KCcgJylbMF0KICAgICBrZXJuZWxfY2MgPSBrZXJuZWxfY2Muc3RyaXAoKQogICAgIHJldHVybiBrZXJuZWxfY2MKIAogZGVmIGdldF9pY2VjYyhkKToKLSAgICByZXR1cm4gZC5nZXRWYXIoJ0lDRUNDX1BBVEgnLCBGYWxzZSkgb3IgYmIudXRpbHMud2hpY2gob3MuZ2V0ZW52KCJQQVRIIiksICJpY2VjYyIpCisgICAgcmV0dXJuIGQuZ2V0VmFyKCdJQ0VDQ19QQVRIJykgb3IgYmIudXRpbHMud2hpY2gob3MuZ2V0ZW52KCJQQVRIIiksICJpY2VjYyIpCiAKIGRlZiBjcmVhdGVfcGF0aChjb21waWxlcnMsIGJiLCBkKToKICAgICAiIiIKQEAgLTkzLDcgKzEyMSw3IEBACiAgICAgcmV0dXJuIHN0YWdpbmcKIAogZGVmIHVzZV9pY2VjYyhiYixkKToKLSAgICBpZiBkLmdldFZhcignSUNFQ0NfRElTQUJMRUQnLCBGYWxzZSkgPT0gIjEiOgorICAgIGlmIGQuZ2V0VmFyKCdJQ0VDQ19ESVNBQkxFRCcpID09ICIxIjoKICAgICAgICAgIyBkb24ndCBldmVuIHRyeSBpdCwgd2hlbiBleHBsaWNpdGx5IGRpc2FibGVkCiAgICAgICAgIHJldHVybiAibm8iCiAKQEAgLTEwMSwxMCArMTI5LDEzIEBACiAgICAgaWYgaWNlY2NfaXNfYWxsYXJjaChiYiwgZCk6CiAgICAgICAgIHJldHVybiAibm8iCiAKKyAgICBpZiBpY2VjY19pc19jcm9zc19jYW5hZGlhbihiYiwgZCk6CisgICAgICAgIHJldHVybiAibm8iCisKICAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCiAKICAgICBzeXN0ZW1fY2xhc3NfYmxhY2tsaXN0ID0gW10KLSAgICB1c2VyX2NsYXNzX2JsYWNrbGlzdCA9IChkLmdldFZhcignSUNFQ0NfVVNFUl9DTEFTU19CTCcsIEZhbHNlKSBvciAibm9uZSIpLnNwbGl0KCkKKyAgICB1c2VyX2NsYXNzX2JsYWNrbGlzdCA9IChkLmdldFZhcignSUNFQ0NfVVNFUl9DTEFTU19CTCcpIG9yICJub25lIikuc3BsaXQoKQogICAgIHBhY2thZ2VfY2xhc3NfYmxhY2tsaXN0ID0gc3lzdGVtX2NsYXNzX2JsYWNrbGlzdCArIHVzZXJfY2xhc3NfYmxhY2tsaXN0CiAKICAgICBmb3IgYmxhY2sgaW4gcGFja2FnZV9jbGFzc19ibGFja2xpc3Q6CkBAIC0xMjEsOCArMTUyLDggQEAKICAgICAjIGUuZy4gd2hlbiB0aGVyZSBpcyBuZXcgdmVyc2lvbgogICAgICMgYnVpbGRpbmcgbGliZ2NjLWluaXRpYWwgd2l0aCBpY2VjYyBmYWlscyB3aXRoIENQUCBzYW5pdHkgY2hlY2sgZXJyb3IgaWYgaG9zdCBzeXNyb290IGNvbnRhaW5zIGNyb3NzIGdjYyBidWlsdCBmb3IgYW5vdGhlciB0YXJnZXQgdHVuZS92YXJpYW50CiAgICAgc3lzdGVtX3BhY2thZ2VfYmxhY2tsaXN0ID0gWyJsaWJnY2MtaW5pdGlhbCJdCi0gICAgdXNlcl9wYWNrYWdlX2JsYWNrbGlzdCA9IChkLmdldFZhcignSUNFQ0NfVVNFUl9QQUNLQUdFX0JMJywgRmFsc2UpIG9yICIiKS5zcGxpdCgpCi0gICAgdXNlcl9wYWNrYWdlX3doaXRlbGlzdCA9IChkLmdldFZhcignSUNFQ0NfVVNFUl9QQUNLQUdFX1dMJywgRmFsc2UpIG9yICIiKS5zcGxpdCgpCisgICAgdXNlcl9wYWNrYWdlX2JsYWNrbGlzdCA9IChkLmdldFZhcignSUNFQ0NfVVNFUl9QQUNLQUdFX0JMJykgb3IgIiIpLnNwbGl0KCkKKyAgICB1c2VyX3BhY2thZ2Vfd2hpdGVsaXN0ID0gKGQuZ2V0VmFyKCdJQ0VDQ19VU0VSX1BBQ0tBR0VfV0wnKSBvciAiIikuc3BsaXQoKQogICAgIHBhY2thZ2VfYmxhY2tsaXN0ID0gc3lzdGVtX3BhY2thZ2VfYmxhY2tsaXN0ICsgdXNlcl9wYWNrYWdlX2JsYWNrbGlzdAogCiAgICAgaWYgcG4gaW4gcGFja2FnZV9ibGFja2xpc3Q6CkBAIC0xMzMsNyArMTY0LDcgQEAKICAgICAgICAgYmIuZGVidWcoMSwgIiVzOiBmb3VuZCBpbiB3aGl0ZWxpc3QsIGVuYWJsZSBpY2VjYyIgJSBwbikKICAgICAgICAgcmV0dXJuICJ5ZXMiCiAKLSAgICBpZiBkLmdldFZhcignUEFSQUxMRUxfTUFLRScsIEZhbHNlKSA9PSAiIjoKKyAgICBpZiBkLmdldFZhcignUEFSQUxMRUxfTUFLRScpID09ICIiOgogICAgICAgICBiYi5kZWJ1ZygxLCAiJXM6IGhhcyBlbXB0eSBQQVJBTExFTF9NQUtFLCBkaXNhYmxlIGljZWNjIiAlIHBuKQogICAgICAgICByZXR1cm4gIm5vIgogCkBAIC0xNTEsMTYgKzE4MiwyNyBAQAogICAgICAgICBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCJjcm9zcyIsIGQpIG9yIFwKICAgICAgICAgYmIuZGF0YS5pbmhlcml0c19jbGFzcygibmF0aXZlIiwgZCk7CiAKK2RlZiBpY2VjY19pc19jcm9zc19jYW5hZGlhbihiYiwgZCk6CisgICAgcmV0dXJuIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoImNyb3NzLWNhbmFkaWFuIiwgZCkKKworZGVmIGljZWNjX2RpcihiYiwgZCk6CisgICAgcmV0dXJuIGQuZXhwYW5kKCcke1RNUERJUn0vd29yay1zaGFyZWQvaWNlJykKKwogIyBEb24ndCBwb2xsdXRlIGFsbGFyY2ggc2lnbmF0dXJlcyB3aXRoIFRBUkdFVF9GUFUKIGljZWNjX3ZlcnNpb25bdmFyZGVwc2V4Y2x1ZGVdICs9ICJUQVJHRVRfRlBVIgogZGVmIGljZWNjX3ZlcnNpb24oYmIsIGQpOgogICAgIGlmIHVzZV9pY2VjYyhiYiwgZCkgPT0gIm5vIjoKICAgICAgICAgcmV0dXJuICIiCiAKLSAgICBwYXJhbGxlbCA9IGQuZ2V0VmFyKCdJQ0VDQ19QQVJBTExFTF9NQUtFJywgRmFsc2UpIG9yICIiCi0gICAgaWYgbm90IGQuZ2V0VmFyKCdQQVJBTExFTF9NQUtFJywgRmFsc2UpID09ICIiIGFuZCBwYXJhbGxlbDoKKyAgICBwYXJhbGxlbCA9IGQuZ2V0VmFyKCdJQ0VDQ19QQVJBTExFTF9NQUtFJykgb3IgIiIKKyAgICBpZiBub3QgZC5nZXRWYXIoJ1BBUkFMTEVMX01BS0UnKSA9PSAiIiBhbmQgcGFyYWxsZWw6CiAgICAgICAgIGQuc2V0VmFyKCJQQVJBTExFTF9NQUtFIiwgcGFyYWxsZWwpCiAKKyAgICAjIERpc2FibGUgc2hvd2luZyB0aGUgY2FyZXQgaW4gdGhlIEdDQyBjb21waWxlciBvdXRwdXQgaWYgdGhlIHdvcmthcm91bmQgaXMKKyAgICAjIGRpc2FibGVkCisgICAgaWYgZC5nZXRWYXIoJ0lDRUNDX0NBUkVUX1dPUktBUk9VTkQnKSA9PSAnMCc6CisgICAgICAgIGQuc2V0VmFyKCdJQ0VDQ19DRkxBR1MnLCAnLWZuby1kaWFnbm9zdGljcy1zaG93LWNhcmV0JykKKwogICAgIGlmIGljZWNjX2lzX25hdGl2ZShiYiwgZCk6CiAgICAgICAgIGFyY2hpdmVfbmFtZSA9ICJsb2NhbC1ob3N0LWVudiIKICAgICBlbGlmIGQuZXhwYW5kKCcke0hPU1RfUFJFRklYfScpID09ICIiOgpAQCAtMTY5LDE0ICsyMTEsMTggQEAKICAgICAgICAgcHJlZml4ID0gZC5leHBhbmQoJyR7SE9TVF9QUkVGSVh9JyApCiAgICAgICAgIGRpc3RybyA9IGQuZXhwYW5kKCcke0RJU1RST30nKQogICAgICAgICB0YXJnZXRfc3lzID0gZC5leHBhbmQoJyR7VEFSR0VUX1NZU30nKQotICAgICAgICBmbG9hdCA9IGQuZ2V0VmFyKCdUQVJHRVRfRlBVJywgRmFsc2UpIG9yICJoYXJkIgorICAgICAgICBmbG9hdCA9IGQuZ2V0VmFyKCdUQVJHRVRfRlBVJykgb3IgImhhcmQiCiAgICAgICAgIGFyY2hpdmVfbmFtZSA9IHByZWZpeCArIGRpc3RybyArICItIiAgICAgICAgKyB0YXJnZXRfc3lzICsgIi0iICsgZmxvYXQKICAgICAgICAgaWYgaWNlY2NfaXNfa2VybmVsKGJiLCBkKToKICAgICAgICAgICAgIGFyY2hpdmVfbmFtZSArPSAiLWtlcm5lbCIKIAogICAgIGltcG9ydCBzb2NrZXQKLSAgICBpY2VfZGlyID0gZC5leHBhbmQoJyR7U1RBR0lOR19ESVJfTkFUSVZFfSR7cHJlZml4X25hdGl2ZX0nKQotICAgIHRhcl9maWxlID0gb3MucGF0aC5qb2luKGljZV9kaXIsICdpY2UnLCBhcmNoaXZlX25hbWUgKyAiLUBWRVJTSU9OQC0iICsgc29ja2V0LmdldGhvc3RuYW1lKCkgKyAnLnRhci5neicpCisgICAgaWNlX2RpciA9IGljZWNjX2RpcihiYiwgZCkKKyAgICB0YXJfZmlsZSA9IG9zLnBhdGguam9pbihpY2VfZGlyLCAie2FyY2hpdmV9LXt2ZXJzaW9ufS1AVkVSU0lPTkAte2hvc3RuYW1lfS50YXIuZ3oiLmZvcm1hdCgKKyAgICAgICAgYXJjaGl2ZT1hcmNoaXZlX25hbWUsCisgICAgICAgIHZlcnNpb249ZC5nZXRWYXIoJ0lDRUNDX0VOVl9WRVJTSU9OJyksCisgICAgICAgIGhvc3RuYW1lPXNvY2tldC5nZXRob3N0bmFtZSgpCisgICAgICAgICkpCiAKICAgICByZXR1cm4gdGFyX2ZpbGUKIApAQCAtMTk3LDI1ICsyNDMsNDIgQEAKICAgICB0YXJnZXRfcHJlZml4ID0gZC5leHBhbmQoJyR7VEFSR0VUX1BSRUZJWH0nKQogICAgIHJldHVybiBvcy5wYXRoLmpvaW4oZXh0ZXJuYWxfdG9vbGNoYWluX2JpbmRpciwgJyVzJXMnICUgKHRhcmdldF9wcmVmaXgsIHRvb2wpKQogCitkZWYgaWNlY2NfZ2V0X3Rvb2xfbGluayh0b29sLCBkKToKKyAgICBpbXBvcnQgc3VicHJvY2VzcworICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgicmVhZGxpbmsgLWYgJXMiICUgdG9vbCwgc2hlbGw9VHJ1ZSkuZGVjb2RlKCJ1dGYtOCIpWzotMV0KKworZGVmIGljZWNjX2dldF9wYXRoX3Rvb2wodG9vbCwgZCk6CisgICAgIyBUaGlzIGlzIGEgbGl0dGxlIHVnbHksIGJ1dCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSBhZGQgYW4gYWN0dWFsCisgICAgIyBjb21waWxlciB0byB0aGUgdG9vbGNoYWluLCBub3QgY2NhY2hlLiBTb21lIGRpc3Ryb3MgKGUuZy4gRmVkb3JhKQorICAgICMgaGF2ZSBjY2FjaGUgZW5hYmxlZCBieSBkZWZhdWx0IHVzaW5nIHN5bWxpbmtzIFBBVEgsIG1lYW5pbmcgY2NhY2hlCisgICAgIyB3b3VsZCBiZSBmb3VuZCBmaXJzdCB3aGVuIGxvb2tpbmcgZm9yIHRoZSBjb21waWxlci4KKyAgICBwYXRocyA9IG9zLmdldGVudigiUEFUSCIpLnNwbGl0KCc6JykKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBwLCBoaXN0ID0gYmIudXRpbHMud2hpY2goJzonLmpvaW4ocGF0aHMpLCB0b29sLCBoaXN0b3J5PVRydWUpCisgICAgICAgIGlmIG5vdCBwIG9yIG9zLnBhdGguYmFzZW5hbWUoaWNlY2NfZ2V0X3Rvb2xfbGluayhwLCBkKSkgIT0gJ2NjYWNoZSc6CisgICAgICAgICAgICByZXR1cm4gcAorICAgICAgICBwYXRocyA9IHBhdGhzW2xlbihoaXN0KTpdCisKKyAgICByZXR1cm4gIiIKKwogIyBEb24ndCBwb2xsdXRlIG5hdGl2ZSBzaWduYXR1cmVzIHdpdGggdGFyZ2V0IFRVTkVfUEtHQVJDSCB0aHJvdWdoIFNUQUdJTkdfQklORElSX1RPT0xDSEFJTgogaWNlY2NfZ2V0X3Rvb2xbdmFyZGVwc2V4Y2x1ZGVdICs9ICJTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU4iCiBkZWYgaWNlY2NfZ2V0X3Rvb2woYmIsIGQsIHRvb2wpOgogICAgIGlmIGljZWNjX2lzX25hdGl2ZShiYiwgZCk6Ci0gICAgICAgIHJldHVybiBiYi51dGlscy53aGljaChvcy5nZXRlbnYoIlBBVEgiKSwgdG9vbCkKKyAgICAgICAgcmV0dXJuIGljZWNjX2dldF9wYXRoX3Rvb2wodG9vbCwgZCkKICAgICBlbGlmIGljZWNjX2lzX2tlcm5lbChiYiwgZCk6Ci0gICAgICAgIHJldHVybiBiYi51dGlscy53aGljaChvcy5nZXRlbnYoIlBBVEgiKSwgZ2V0X2Nyb3NzX2tlcm5lbF9jYyhiYiwgZCkpCisgICAgICAgIHJldHVybiBpY2VjY19nZXRfcGF0aF90b29sKGdldF9jcm9zc19rZXJuZWxfY2MoYmIsIGQpLCBkKQogICAgIGVsc2U6CiAgICAgICAgIGljZV9kaXIgPSBkLmV4cGFuZCgnJHtTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU59JykKICAgICAgICAgdGFyZ2V0X3N5cyA9IGQuZXhwYW5kKCcke1RBUkdFVF9TWVN9JykKLSAgICAgICAgdG9vbF9iaW4gPSBvcy5wYXRoLmpvaW4oaWNlX2RpciwgIiVzLSVzIiAlICh0YXJnZXRfc3lzLCB0b29sKSkKLSAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUodG9vbF9iaW4pOgotICAgICAgICAgICAgcmV0dXJuIHRvb2xfYmluCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBleHRlcm5hbF90b29sX2JpbiA9IGljZWNjX2dldF9leHRlcm5hbF90b29sKGJiLCBkLCB0b29sKQotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZXh0ZXJuYWxfdG9vbF9iaW4pOgotICAgICAgICAgICAgICAgIHJldHVybiBleHRlcm5hbF90b29sX2JpbgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gIiIKKyAgICAgICAgZm9yIHAgaW4gaWNlX2Rpci5zcGxpdCgnOicpOgorICAgICAgICAgICAgdG9vbF9iaW4gPSBvcy5wYXRoLmpvaW4ocCwgIiVzLSVzIiAlICh0YXJnZXRfc3lzLCB0b29sKSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHRvb2xfYmluKToKKyAgICAgICAgICAgICAgICByZXR1cm4gdG9vbF9iaW4KKyAgICAgICAgZXh0ZXJuYWxfdG9vbF9iaW4gPSBpY2VjY19nZXRfZXh0ZXJuYWxfdG9vbChiYiwgZCwgdG9vbCkKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZXh0ZXJuYWxfdG9vbF9iaW4pOgorICAgICAgICAgICAgcmV0dXJuIGV4dGVybmFsX3Rvb2xfYmluCisgICAgICAgIHJldHVybiAiIgogCiBkZWYgaWNlY2NfZ2V0X2FuZF9jaGVja190b29sKGJiLCBkLCB0b29sKToKICAgICAjIENoZWNrIHRoYXQgZysrIG9yIGdjYyBpcyBub3QgYSBzeW1ib2xpYyBsaW5rIHRvIGljZWNjIGJpbmFyeSBpbgpAQCAtMjIzLDggKzI4Niw3IEBACiAgICAgIyBjb21waWxlciBlbnZpcm9ubWVudCBwYWNrYWdlLgogICAgIHQgPSBpY2VjY19nZXRfdG9vbChiYiwgZCwgdG9vbCkKICAgICBpZiB0OgotICAgICAgICBpbXBvcnQgc3VicHJvY2VzcwotICAgICAgICBsaW5rX3BhdGggPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgicmVhZGxpbmsgLWYgJXMiICUgdCwgc2hlbGw9VHJ1ZSkuZGVjb2RlKCJ1dGYtOCIpWzotMV0KKyAgICAgICAgbGlua19wYXRoID0gaWNlY2NfZ2V0X3Rvb2xfbGluayh0b29sLCBkKQogICAgICAgICBpZiBsaW5rX3BhdGggPT0gZ2V0X2ljZWNjKGQpOgogICAgICAgICAgICAgYmIuZXJyb3IoIiVzIGlzIGEgc3ltbGluayB0byAlcyBpbiBQQVRIIGFuZCB0aGlzIHByZXZlbnRzIGljZWNjIGZyb20gd29ya2luZyIgJSAodCwgZ2V0X2ljZWNjKGQpKSkKICAgICAgICAgICAgIHJldHVybiAiIgpAQCAtMzA1LDcgKzM2Nyw3IEBACiAgICAgICAgICMgdGhlIElDRUNDX1ZFUlNJT04gZ2VuZXJhdGlvbiBzdGVwIG11c3QgYmUgbG9ja2VkIGJ5IGEgbXV0ZXgKICAgICAgICAgIyBpbiBvcmRlciB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucwogICAgICAgICBpZiBmbG9jayAtbiAiJHtJQ0VDQ19WRVJTSU9OfS5sb2NrIiBcCi0gICAgICAgICAgICAke0lDRUNDX0VOVl9FWEVDfSAiJHtJQ0VDQ19DQ30iICIke0lDRUNDX0NYWH0iICIke0lDRUNDX0FTfSIgIiR7SUNFQ0NfVkVSU0lPTn0iCisgICAgICAgICAgICAke0lDRUNDX0VOVl9FWEVDfSAke0lDRUNDX0VOVl9ERUJVR30gIiR7SUNFQ0NfQ0N9IiAiJHtJQ0VDQ19DWFh9IiAiJHtJQ0VDQ19BU30iICIke0lDRUNDX1ZFUlNJT059IgogICAgICAgICB0aGVuCiAgICAgICAgICAgICB0b3VjaCAiJHtJQ0VDQ19WRVJTSU9OfS5kb25lIgogICAgICAgICBlbGlmIFsgISB3YWl0X2Zvcl9maWxlICIke0lDRUNDX1ZFUlNJT059LmRvbmUiIDMwIF0KQEAgLTMxNiw5ICszNzgsMTMgQEAKICAgICAgICAgZmkKICAgICBmaQogCisgICAgIyBEb24ndCBsZXQgY2NhY2hlIGZpbmQgdGhlIGljZWNyZWFtIGNvbXBpbGVyIGxpbmtzIHRoYXQgaGF2ZSBiZWVuIGNyZWF0ZWQsIG90aGVyd2lzZQorICAgICMgaXQgY2FuIGVuZCB1cCBpbnZva2luZyBpY2VjcmVhbSByZWN1cnNpdmVseS4KKyAgICBleHBvcnQgQ0NBQ0hFX1BBVEg9IiRQQVRIIgorICAgIGV4cG9ydCBDQ0FDSEVfRElTQkFMRT0iMSIKKwogICAgIGV4cG9ydCBJQ0VDQ19WRVJTSU9OIElDRUNDX0NDIElDRUNDX0NYWAogICAgIGV4cG9ydCBQQVRIPSIkSUNFX1BBVEg6JFBBVEgiCi0gICAgZXhwb3J0IENDQUNIRV9QQVRIPSIkUEFUSCIKIAogICAgIGJibm90ZSAiVXNpbmcgaWNlY2MiCiB9CkBAIC0zMzgsMyArNDA0LDEzIEBACiBkb19pbnN0YWxsX3ByZXBlbmQoKSB7CiAgICAgc2V0X2ljZWNjX2VudgogfQorCisjIEljZUNyZWFtIGlzIG5vdCAoY3VycmVudGx5KSBzdXBwb3J0ZWQgaW4gdGhlIGV4dGVuc2libGUgU0RLCitJQ0VDQ19TREtfSE9TVF9UQVNLID0gIm5hdGl2ZXNkay1pY2VjYy10b29sY2hhaW4iCitJQ0VDQ19TREtfSE9TVF9UQVNLX3Rhc2stcG9wdWxhdGUtc2RrLWV4dCA9ICIiCisKKyMgRG9uJ3QgaW5jbHVkZSBJY2VDcmVhbSBpbiB1bmluYXRpdmUgdGFyYmFsbAorSUNFQ0NfU0RLX0hPU1RfVEFTS19wbi11bmluYXRpdmUtdGFyYmFsbCA9ICIiCisKKyMgQWRkIHRoZSB0b29sY2hhaW4gc2NyaXB0cyB0byB0aGUgU0RLCitUT09MQ0hBSU5fSE9TVF9UQVNLX2FwcGVuZCA9ICIgJHtJQ0VDQ19TREtfSE9TVF9UQVNLfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtY29tYmluZWQtZGJnLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLWNvbWJpbmVkLWRiZy5iYmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0NzcyZjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLWNvbWJpbmVkLWRiZy5iYmNsYXNzCkBAIC0wLDAgKzEsOSBAQAorSU1BR0VfUFJFUFJPQ0VTU19DT01NQU5EX2FwcGVuZCA9ICIgY29tYmluZV9kYmdfaW1hZ2U7ICIKKworY29tYmluZV9kYmdfaW1hZ2UgKCkgeworICAgICAgICBpZiBbICIke0lNQUdFX0dFTl9ERUJVR0ZTfSIgPSAiMSIgLWEgLWUgJHtJTUFHRV9ST09URlN9LWRiZyBdOyB0aGVuCisgICAgICAgICAgICAgICAgIyBjb3B5IHRhcmdldCBmaWxlcyBpbnRvIC1kYmcgcm9vdGZzLCBzbyBpdCBjYW4gYmUgdXNlZCBmb3IKKyAgICAgICAgICAgICAgICAjIGRlYnVnIHB1cnBvc2VzIGRpcmVjdGx5CisgICAgICAgICAgICAgICAgdGFyIC1DICR7SU1BR0VfUk9PVEZTfSAtY2YgLSAuIHwgdGFyIC1DICR7SU1BR0VfUk9PVEZTfS1kYmcgLXhmIC0KKyAgICAgICAgZmkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtbGl2ZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1saXZlLmJiY2xhc3MKaW5kZXggMTYyM2MxNS4uOTY2Mjc3YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1saXZlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1saXZlLmJiY2xhc3MKQEAgLTE5LDcgKzE5LDYgQEAKIAogIyBFeHRlcm5hbCB2YXJpYWJsZXMgKGFsc28gdXNlZCBieSBzeXNsaW51eC5iYmNsYXNzKQogIyAke0lOSVRSRH0gLSBpbmRpY2F0ZXMgYSBsaXN0IG9mIGZpbGVzeXN0ZW0gaW1hZ2VzIHRvIGNvbmNhdGVuYXRlIGFuZCB1c2UgYXMgYW4gaW5pdHJkIChvcHRpb25hbCkKLSMgJHtDT01QUkVTU0lTT30gLSBUcmFuc3BhcmVudCBjb21wcmVzcyBJU08sIHJlZHVjZSBzaXplIH40MCUgaWYgc2V0IHRvIDEKICMgJHtOT0lTT30gIC0gc2tpcCBidWlsZGluZyB0aGUgSVNPIGltYWdlIGlmIHNldCB0byAxCiAjICR7Tk9IRER9ICAtIHNraXAgYnVpbGRpbmcgdGhlIEhERCBpbWFnZSBpZiBzZXQgdG8gMQogIyAke0hERElNR19JRH0gLSBGQVQgaW1hZ2Ugdm9sdW1lLWlkCkBAIC0zMyw3ICszMiw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsL2tlcm5lbDpkb19kZXBsb3kgXAogICAgICAgICAgICAgICAgICAgICAgICAgJHtNTFBSRUZJWH1zeXNsaW51eDpkb19wb3B1bGF0ZV9zeXNyb290IFwKICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2xpbnV4LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7QG9lLnV0aWxzLmlmZWxzZShkLmdldFZhcignQ09NUFJFU1NJU08nLCBGYWxzZSksJ3ppc29mcy10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcsJycpfSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfTpkb19pbWFnZV8ke0BkLmdldFZhcignTElWRV9ST09URlNfVFlQRScpLnJlcGxhY2UoJy0nLCAnXycpfSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAiCiAKQEAgLTY1LDcgKzYzLDYgQEAKIElTT0RJUiA9ICIke1N9L2lzbyIKIEVGSUlNR0RJUiA9ICIke1N9L2VmaV9pbWciCiBDT01QQUNUX0lTT0RJUiA9ICIke1N9L2lzby56IgotQ09NUFJFU1NJU08gPz0gIjAiCiAKIElTT0xJTlVYRElSID89ICIvaXNvbGludXgiCiBJU09fQk9PVElNRyA9ICJpc29saW51eC9pc29saW51eC5iaW4iCkBAIC0xMTUsMTggKzExMiw4IEBACiAJCWluc3RhbGwgLW0gMDY0NCAke1NUQUdJTkdfREFUQURJUn0vc3lzbGludXgvaXNvbGludXguYmluICR7SVNPRElSfSR7SVNPTElOVVhESVJ9CiAJZmkKIAotCWlmIFsgIiR7Q09NUFJFU1NJU099IiA9ICIxIiBdIDsgdGhlbgotCQkjIGNyZWF0ZSBjb21wYWN0IGRpcmVjdG9yeSwgY29tcHJlc3MgaXNvCi0JCW1rZGlyIC1wICR7Q09NUEFDVF9JU09ESVJ9Ci0JCW1remZ0cmVlIC16IDkgLXAgNCAtRiAke0lTT0RJUn0vcm9vdGZzLmltZyAke0NPTVBBQ1RfSVNPRElSfS9yb290ZnMuaW1nCi0KLQkJIyBtb3ZlIGNvbXBhY3QgaXNvIHRvIGlzbywgdGhlbiByZW1vdmUgY29tcGFjdCBkaXJlY3RvcnkKLQkJbXYgJHtDT01QQUNUX0lTT0RJUn0vcm9vdGZzLmltZyAke0lTT0RJUn0vcm9vdGZzLmltZwotCQlybSAtUmYgJHtDT01QQUNUX0lTT0RJUn0KLQkJbWtpc29mc19jb21wcmVzc19vcHRzPSItUiAteiAtRCAtbCIKLQllbHNlCi0JCW1raXNvZnNfY29tcHJlc3Nfb3B0cz0iLXIiCi0JZmkKKwkjIFdlIHVzZWQgdG8gaGF2ZSBzdXBwb3J0IGZvciB6aXNvZnM7IHRoaXMgaXMgYSByZWxpYyBvZiB0aGF0CisJbWtpc29mc19jb21wcmVzc19vcHRzPSItciIKIAogCSMgQ2hlY2sgdGhlIHNpemUgb2YgJHtJU09ESVJ9L3Jvb3Rmcy5pbWcsIHVzZSBta2lzb2ZzIC1pc28tbGV2ZWwgMwogCSMgd2hlbiBpdCBleGNlZWRzIDMuOEdCLCB0aGUgc3BlY2lmaWNhdGlvbiBpcyA0RyAtIDEgYnl0ZXMsIHdlIG5lZWQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtcHJlbGluay5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1wcmVsaW5rLmJiY2xhc3MKaW5kZXggZjNiYjY4Yi4uNmE4YWZhOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1wcmVsaW5rLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1wcmVsaW5rLmJiY2xhc3MKQEAgLTM2LDcgKzM2LDcgQEAKIAlkeW5hbWljX2xvYWRlcj0kKGxpbnV4bG9hZGVyKQogCiAJIyBwcmVsaW5rIQotCWlmIFsgIiRCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVMiID0gIjEiIF07IHRoZW4KKwlpZiBbICIke0JVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFU30iID0gIjEiIF07IHRoZW4KIAkJYmJub3RlICIgcHJlbGluazogQlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTLi4uIgogCQlpZiBbICIkUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlMiID0gIiIgXTsgdGhlbgogCQkJZXhwb3J0IFBSRUxJTktfVElNRVNUQU1QPWBnaXQgbG9nIC0xIC0tcHJldHR5PSVjdCBgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLmJiY2xhc3MKaW5kZXggZDg4Y2U1Yy4uMjI0N2IzMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UuYmJjbGFzcwpAQCAtMTcsNyArMTcsNyBAQAogCiBJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgogCi1URVNUSU1BR0VDTEFTUyA9ICIke0BiYXNlX2NvbmRpdGlvbmFsKCdURVNUX0lNQUdFJywgJzEnLCAndGVzdGltYWdlLWF1dG8nLCAnJywgZCl9IgorVEVTVElNQUdFQ0xBU1MgPSAiJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ1RFU1RfSU1BR0UnLCAnMScsICd0ZXN0aW1hZ2UtYXV0bycsICcnLCBkKX0iCiBpbmhlcml0ICR7VEVTVElNQUdFQ0xBU1N9CiAKICMgSU1BR0VfRkVBVFVSRVMgbWF5IGNvbnRhaW4gYW55IGF2YWlsYWJsZSBwYWNrYWdlIGdyb3VwCkBAIC0yODksNyArMjg5LDcgQEAKIFNTVEFURV9TS0lQX0NSRUFUSU9OX3Rhc2staW1hZ2UtY29tcGxldGUgPSAnMScKIGRvX2ltYWdlX2NvbXBsZXRlW3NzdGF0ZS1pbnB1dGRpcnNdID0gIiR7SU1HREVQTE9ZRElSfSIKIGRvX2ltYWdlX2NvbXBsZXRlW3NzdGF0ZS1vdXRwdXRkaXJzXSA9ICIke0RFUExPWV9ESVJfSU1BR0V9IgotZG9faW1hZ2VfY29tcGxldGVbc3RhbXAtZXh0cmEtaW5mb10gPSAiJHtNQUNISU5FfSIKK2RvX2ltYWdlX2NvbXBsZXRlW3N0YW1wLWV4dHJhLWluZm9dID0gIiR7TUFDSElORV9BUkNIfSIKIGFkZHRhc2sgZG9faW1hZ2VfY29tcGxldGUgYWZ0ZXIgZG9faW1hZ2UgYmVmb3JlIGRvX2J1aWxkCiBweXRob24gZG9faW1hZ2VfY29tcGxldGVfc2V0c2NlbmUgKCkgewogICAgIHNzdGF0ZV9zZXRzY2VuZShkKQpAQCAtNTM2LDIxICs1MzYsMjkgQEAKICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ2R1JywgJy1rcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdJTUFHRV9ST09URlMnKV0pCiAgICAgc2l6ZV9rYiA9IGludChvdXRwdXQuc3BsaXQoKVswXSkKLSAgICBiYXNlX3NpemUgPSBzaXplX2tiICogb3ZlcmhlYWRfZmFjdG9yCi0gICAgYmFzZV9zaXplID0gbWF4KGJhc2Vfc2l6ZSwgcm9vdGZzX3JlcV9zaXplKSArIHJvb3Rmc19leHRyYV9zcGFjZQogCisgICAgYmFzZV9zaXplID0gc2l6ZV9rYiAqIG92ZXJoZWFkX2ZhY3RvcgorICAgIGJiLmRlYnVnKDEsICclZiA9ICVkICogJWYnICUgKGJhc2Vfc2l6ZSwgc2l6ZV9rYiwgb3ZlcmhlYWRfZmFjdG9yKSkKKyAgICBiYXNlX3NpemUyID0gbWF4KGJhc2Vfc2l6ZSwgcm9vdGZzX3JlcV9zaXplKSArIHJvb3Rmc19leHRyYV9zcGFjZQorICAgIGJiLmRlYnVnKDEsICclZiA9IG1heCglZiwgJWQpWyVmXSArICVkJyAlIChiYXNlX3NpemUyLCBiYXNlX3NpemUsIHJvb3Rmc19yZXFfc2l6ZSwgbWF4KGJhc2Vfc2l6ZSwgcm9vdGZzX3JlcV9zaXplKSwgb3ZlcmhlYWRfZmFjdG9yKSkKKworICAgIGJhc2Vfc2l6ZSA9IGJhc2Vfc2l6ZTIKICAgICBpZiBiYXNlX3NpemUgIT0gaW50KGJhc2Vfc2l6ZSk6CiAgICAgICAgIGJhc2Vfc2l6ZSA9IGludChiYXNlX3NpemUgKyAxKQogICAgIGVsc2U6CiAgICAgICAgIGJhc2Vfc2l6ZSA9IGludChiYXNlX3NpemUpCisgICAgYmIuZGVidWcoMSwgJyVmID0gaW50KCVmKScgJSAoYmFzZV9zaXplLCBiYXNlX3NpemUyKSkKIAorICAgIGJhc2Vfc2l6ZV9zYXZlZCA9IGJhc2Vfc2l6ZQogICAgIGJhc2Vfc2l6ZSArPSByb290ZnNfYWxpZ25tZW50IC0gMQogICAgIGJhc2Vfc2l6ZSAtPSBiYXNlX3NpemUgJSByb290ZnNfYWxpZ25tZW50CisgICAgYmIuZGVidWcoMSwgJyVkID0gYWxpZ25lZCglZCknICUgKGJhc2Vfc2l6ZSwgYmFzZV9zaXplX3NhdmVkKSkKIAogICAgICMgRG8gbm90IGNoZWNrIGltYWdlIHNpemUgb2YgdGhlIGRlYnVnZnMgaW1hZ2UuIFRoaXMgaXMgbm90IHN1cHBvc2VkCiAgICAgIyB0byBiZSBkZXBsb3llZCwgZXRjLiBzbyBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gbGltaXQgdGhlIHNpemUKICAgICAjIG9mIHRoZSBkZWJ1Zy4KICAgICBpZiAoZC5nZXRWYXIoJ0lNQUdFX0JVSUxESU5HX0RFQlVHRlMnKSBvciAiIikgPT0gInRydWUiOgorICAgICAgICBiYi5kZWJ1ZygxLCAncmV0dXJuaW5nIGRlYnVnZnMgc2l6ZSAlZCcgJSAoYmFzZV9zaXplKSkKICAgICAgICAgcmV0dXJuIGJhc2Vfc2l6ZQogCiAgICAgIyBDaGVjayB0aGUgcm9vdGZzIHNpemUgYWdhaW5zdCBJTUFHRV9ST09URlNfTUFYU0laRSAoaWYgc2V0KQpAQCAtNTY4LDYgKzU3Niw4IEBACiAgICAgICAgICAgICAgICAgKGJhc2Vfc2l6ZSwgaW5pdHJhbWZzX21heHNpemVfaW50KSkKICAgICAgICAgICAgIGJiLmVycm9yKCJZb3UgY2FuIHNldCBJTklUUkFNRlNfTUFYU0laRSBhIGxhcmdlciB2YWx1ZS4gVXN1YWxseSwgaXQgc2hvdWxkIikKICAgICAgICAgICAgIGJiLmZhdGFsKCJiZSBsZXNzIHRoYW4gMS8yIG9mIHJhbSBzaXplLCBvciB5b3UgbWF5IGZhaWwgdG8gYm9vdCBpdC5cbiIpCisKKyAgICBiYi5kZWJ1ZygxLCAncmV0dXJuaW5nICVkJyAlIChiYXNlX3NpemUpKQogICAgIHJldHVybiBiYXNlX3NpemUKIAogcHl0aG9uIHNldF9pbWFnZV9zaXplICgpIHsKQEAgLTYxNyw5ICs2MjcsOSBAQAogZG9fcGFja2FnZVtub2V4ZWNdID0gIjEiCiBkZWx0YXNrIGRvX3BhY2thZ2VfcWEKIGRvX3BhY2thZ2VkYXRhW25vZXhlY10gPSAiMSIKLWRvX3BhY2thZ2Vfd3JpdGVfaXBrW25vZXhlY10gPSAiMSIKLWRvX3BhY2thZ2Vfd3JpdGVfZGViW25vZXhlY10gPSAiMSIKLWRvX3BhY2thZ2Vfd3JpdGVfcnBtW25vZXhlY10gPSAiMSIKK2RlbHRhc2sgZG9fcGFja2FnZV93cml0ZV9pcGsKK2RlbHRhc2sgZG9fcGFja2FnZV93cml0ZV9kZWIKK2RlbHRhc2sgZG9fcGFja2FnZV93cml0ZV9ycG0KIAogIyBQcmVwYXJlIHRoZSByb290IGxpbmtzIHRvIHBvaW50IHRvIHRoZSAvdXNyIGNvdW50ZXJwYXJ0cy4KIGNyZWF0ZV9tZXJnZWRfdXNyX3N5bWxpbmtzKCkgewpAQCAtNjU0LDcgKzY2NCw3IEBACiBQT1BVTEFURV9TREtfUFJFX1RBUkdFVF9DT01NQU5EICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3Vzcm1lcmdlJywgJ2NyZWF0ZV9tZXJnZWRfdXNyX3N5bWxpbmtzX3NkazsgJywgJycsZCl9IgogCiByZXByb2R1Y2libGVfZmluYWxfaW1hZ2VfdGFzayAoKSB7Ci0gICAgaWYgWyAiJEJVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFUyIgPSAiMSIgXTsgdGhlbgorICAgIGlmIFsgIiR7QlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTfSIgPSAiMSIgXTsgdGhlbgogICAgICAgICBpZiBbICIkUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlMiID0gIiIgXTsgdGhlbgogICAgICAgICAgICAgUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlM9YGdpdCBsb2cgLTEgLS1wcmV0dHk9JWN0YAogICAgICAgICBmaQpAQCAtNjY0LDMgKzY3NCw1IEBACiAgICAgZmkKIH0KIElNQUdFX1BSRVBST0NFU1NfQ09NTUFORF9hcHBlbmQgPSAiIHJlcHJvZHVjaWJsZV9maW5hbF9pbWFnZV90YXNrOyAiCisKK0NWRV9QUk9EVUNUID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXMuYmJjbGFzcwppbmRleCBlODgxZDBjLi4wMGEwMGQzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlcy5iYmNsYXNzCkBAIC04Niw3ICs4Niw3IEBACiAJYmJkZWJ1ZyAxIEV4ZWN1dGluZyAiZGQgaWY9L2Rldi96ZXJvIG9mPSR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJGZzdHlwZSBzZWVrPSRST09URlNfU0laRSBjb3VudD0kQ09VTlQgYnM9MTAyNCIKIAlkZCBpZj0vZGV2L3plcm8gb2Y9JHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4kZnN0eXBlIHNlZWs9JFJPT1RGU19TSVpFIGNvdW50PSRDT1VOVCBicz0xMDI0CiAJYmJkZWJ1ZyAxICJBY3R1YWwgUm9vdGZzIHNpemU6ICBgZHUgLXMgJHtJTUFHRV9ST09URlN9YCIKLQliYmRlYnVnIDEgIkFjdHVhbCBQYXJ0aW9uIHNpemU6IGBscyAtcyAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiRmc3R5cGVgIgorCWJiZGVidWcgMSAiQWN0dWFsIFBhcnRpb24gc2l6ZTogYHN0YXQgLWMgJyVzJyAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiRmc3R5cGVgIgogCWJiZGVidWcgMSBFeGVjdXRpbmcgIm1rZnMuJGZzdHlwZSAtRiAkZXh0cmFfaW1hZ2VjbWQgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4kZnN0eXBlIC1kICR7SU1BR0VfUk9PVEZTfSIKIAlta2ZzLiRmc3R5cGUgLUYgJGV4dHJhX2ltYWdlY21kICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJGZzdHlwZSAtZCAke0lNQUdFX1JPT1RGU30KIAkjIEVycm9yIGNvZGVzIDAtMyBpbmRpY2F0ZSBzdWNjZXNzZnVsbCBvcGVyYXRpb24gb2YgZnNjayAobm8gZXJyb3JzIG9yIGVycm9ycyBjb3JyZWN0ZWQpCkBAIC0xMjUsNyArMTI1LDcgQEAKICMgcmVxdWlyZWQgd2hlbiBleHRyYWN0aW5nLCBidXQgaXQgc2VlbXMgcHJ1ZGVudCB0byB1c2UgaXQgaW4gYm90aCBjYXNlcy4KIElNQUdFX0NNRF9UQVIgPz0gInRhciIKICMgaWdub3JlIHJldHVybiBjb2RlIDEgImZpbGUgY2hhbmdlZCBhcyB3ZSByZWFkIGl0IiBhcyBvdGhlciB0YXNrcyhlLmcuIGRvX2ltYWdlX3dpYykgbWF5IGJlIGhhcmRsaW5raW5nIHJvb3RmcwotSU1BR0VfQ01EX3RhciA9ICIke0lNQUdFX0NNRF9UQVJ9IC1jZiAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LnRhciAtQyAke0lNQUdFX1JPT1RGU30gLiB8fCBbICQ/IC1lcSAxIF0iCitJTUFHRV9DTURfdGFyID0gIiR7SU1BR0VfQ01EX1RBUn0gLS1udW1lcmljLW93bmVyIC1jZiAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LnRhciAtQyAke0lNQUdFX1JPT1RGU30gLiB8fCBbICQ/IC1lcSAxIF0iCiAKIGRvX2ltYWdlX2NwaW9bY2xlYW5kaXJzXSArPSAiJHtXT1JLRElSfS9jcGlvX2FwcGVuZCIKIElNQUdFX0NNRF9jcGlvICgpIHsKQEAgLTE0NywxNiArMTQ3LDYgQEAKIAlmaQogfQogCi1FTEZfS0VSTkVMID89ICIke0RFUExPWV9ESVJfSU1BR0V9LyR7S0VSTkVMX0lNQUdFVFlQRX0iCi1FTEZfQVBQRU5EID89ICJyYW1kaXNrX3NpemU9MzI3Njggcm9vdD0vZGV2L3JhbTAgcncgY29uc29sZT0iCi0KLUlNQUdFX0NNRF9lbGYgKCkgewotCXRlc3QgLWYgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5lbGYgJiYgcm0gLWYgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5lbGYKLQlta2VsZkltYWdlIC0ta2VybmVsPSR7RUxGX0tFUk5FTH0gLS1pbml0cmQ9JHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTElOS19OQU1FfS5jcGlvLmd6IC0tb3V0cHV0PSR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uZWxmIC0tYXBwZW5kPScke0VMRl9BUFBFTkR9JyAke0VYVFJBX0lNQUdFQ01EfQotfQotCi1JTUFHRV9UWVBFREVQX2VsZiA9ICJjcGlvLmd6IgotCiBVQklfVk9MTkFNRSA/PSAiJHtNQUNISU5FfS1yb290ZnMiCiAKIG11bHRpdWJpX21rZnMoKSB7CkBAIC0yMTgsMTAgKzIwOCwyNyBAQAogCiBJTUFHRV9DTURfdWJpZnMgPSAibWtmcy51YmlmcyAtciAke0lNQUdFX1JPT1RGU30gLW8gJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS51YmlmcyAke01LVUJJRlNfQVJHU30iCiAKK01JTl9GMkZTX1NJWkUgPz0gIjUyNDI4OCIKK0lNQUdFX0NNRF9mMmZzICgpIHsKKyAgICAgICAgIyBXZSBuZWVkIHRvIGFkZCBhZGRpdGlvbmFsIHNtYXJ0cyBoZXJlIGZvcm0gZGV2aWNlcyBzbWFsbGVyIHRoYW4gMS41RworICAgICAgICAjIE5lZWQgdG8gc2NhbGUgYXBwcm9wcmlhdGVseSBiZXR3ZWVuIDQwTSAtPiAxLjVHIGFzIHRoZSAib3ZlcnByb3Zpc2lvbgorICAgICAgICAjIHJhdGlvIiBnb2VzIGRvd24gYXMgdGhlIGRldmljZSBnZXRzIGJpZ2dlciAoNzAlIC0+IDQuNSUpLCBiZWxvdyBhYm91dAorICAgICAgICAjIDUwME0gdGhlIHN0YW5kYXJkIElNQUdFX09WRVJIRUFEX0ZBQ1RPUiBkb2VzIG5vdCB3b3JrLCBzbyBhZGQgYWRkaXRpb25hbAorICAgICAgICAjIHNwYWNlIGhlcmUgd2hlbiB1bmRlciA1MDBNCisJc2l6ZT0ke1JPT1RGU19TSVpFfQorCWlmIFsgJHtzaXplfSAtbHQgJHtNSU5fRjJGU19TSVpFfSBdIDsgdGhlbgorCQlzaXplPSR7TUlOX0YyRlNfU0laRX0KKwkJYmJ3YXJuICJSb290ZnMgc2l6ZSBpcyB0b28gc21hbGwgZm9yIEYyRlMuIEZpbGVzeXN0ZW0gd2lsbCBiZSBleHRlbmRlZCB0byAke3NpemV9SyIKKwlmaQorCWRkIGlmPS9kZXYvemVybyBvZj0ke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmYyZnMgc2Vlaz0ke3NpemV9IGNvdW50PTAgYnM9MTAyNAorCW1rZnMuZjJmcyAke0VYVFJBX0lNQUdFQ01EfSAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmYyZnMKKwlzbG9hZC5mMmZzIC1mICR7SU1BR0VfUk9PVEZTfSAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmYyZnMKK30KKwogRVhUUkFfSU1BR0VDTUQgPSAiIgogCiBpbmhlcml0IHNpdGVpbmZvIGtlcm5lbC1hcmNoCi1KRkZTMl9FTkRJQU5ORVNTID89ICIke0BiYXNlX2NvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJy1sJywgJy1iJywgZCl9IgorSkZGUzJfRU5ESUFOTkVTUyA/PSAiJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ1NJVEVJTkZPX0VORElBTk5FU1MnLCAnbGUnLCAnLWwnLCAnLWInLCBkKX0iCiBKRkZTMl9FUkFTRUJMT0NLID89ICIweDQwMDAwIgogRVhUUkFfSU1BR0VDTURfamZmczIgPz0gIi0tcGFkICR7SkZGUzJfRU5ESUFOTkVTU30gLS1lcmFzZWJsb2NrPSR7SkZGUzJfRVJBU0VCTE9DS30gLS1uby1jbGVhbm1hcmtlcnMiCiAKQEAgLTIzMCw3ICsyMzcsNyBAQAogRVhUUkFfSU1BR0VDTURfZXh0MyA/PSAiLWkgNDA5NiIKIEVYVFJBX0lNQUdFQ01EX2V4dDQgPz0gIi1pIDQwOTYiCiBFWFRSQV9JTUFHRUNNRF9idHJmcyA/PSAiLW4gNDA5NiIKLUVYVFJBX0lNQUdFQ01EX2VsZiA/PSAiIgorRVhUUkFfSU1BR0VDTURfZjJmcyA/PSAiIgogCiBkb19pbWFnZV9qZmZzMltkZXBlbmRzXSArPSAibXRkLXV0aWxzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgogZG9faW1hZ2VfY3JhbWZzW2RlcGVuZHNdICs9ICJ1dGlsLWxpbnV4LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgpAQCAtMjQyLDEwICsyNDksMTAgQEAKIGRvX2ltYWdlX3NxdWFzaGZzX3h6W2RlcGVuZHNdICs9ICJzcXVhc2hmcy10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIGRvX2ltYWdlX3NxdWFzaGZzX2x6b1tkZXBlbmRzXSArPSAic3F1YXNoZnMtdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiBkb19pbWFnZV9zcXVhc2hmc19sejRbZGVwZW5kc10gKz0gInNxdWFzaGZzLXRvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgotZG9faW1hZ2VfZWxmW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19wb3B1bGF0ZV9zeXNyb290IG1rZWxmaW1hZ2UtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiBkb19pbWFnZV91YmlbZGVwZW5kc10gKz0gIm10ZC11dGlscy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIGRvX2ltYWdlX3ViaWZzW2RlcGVuZHNdICs9ICJtdGQtdXRpbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiBkb19pbWFnZV9tdWx0aXViaVtkZXBlbmRzXSArPSAibXRkLXV0aWxzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgorZG9faW1hZ2VfZjJmc1tkZXBlbmRzXSArPSAiZjJmcy10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIAogIyBUaGlzIHZhcmlhYmxlIGlzIGF2YWlsYWJsZSB0byByZXF1ZXN0IHdoaWNoIHZhbHVlcyBhcmUgc3VpdGFibGUgZm9yIElNQUdFX0ZTVFlQRVMKIElNQUdFX1RZUEVTID0gIiBcCkBAIC0yNjEsOSArMjY4LDkgQEAKICAgICB1YmkgdWJpZnMgbXVsdGl1YmkgXAogICAgIHRhciB0YXIuZ3ogdGFyLmJ6MiB0YXIueHogdGFyLmx6NCBcCiAgICAgY3BpbyBjcGlvLmd6IGNwaW8ueHogY3Bpby5sem1hIGNwaW8ubHo0IFwKLSAgICBlbGYgXAogICAgIHdpYyB3aWMuZ3ogd2ljLmJ6MiB3aWMubHptYSBcCiAgICAgY29udGFpbmVyIFwKKyAgICBmMmZzIFwKICIKIAogIyBDb21wcmVzc2lvbiBpcyBhIHNwZWNpYWwgY2FzZSBvZiBjb252ZXJzaW9uLiBUaGUgb2xkIHZhcmlhYmxlCkBAIC0yNzQsMTEgKzI4MSwxMCBAQAogCiBDT05WRVJTSU9OVFlQRVMgPSAiZ3ogYnoyIGx6bWEgeHogbHo0IGx6byB6aXAgc3VtIG1kNXN1bSBzaGExc3VtIHNoYTIyNHN1bSBzaGEyNTZzdW0gc2hhMzg0c3VtIHNoYTUxMnN1bSBibWFwIHUtYm9vdCB2bWRrIHZkaSBxY293MiAke0NPTVBSRVNTSU9OVFlQRVN9IgogQ09OVkVSU0lPTl9DTURfbHptYSA9ICJsem1hIC1rIC1mIC03ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9IgotQ09OVkVSU0lPTl9DTURfZ3ogPSAiZ3ppcCAtZiAtOSAtbiAtYyAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSA+ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9Lmd6IgorQ09OVkVSU0lPTl9DTURfZ3ogPSAicGlneiAtZiAtOSAtbiAtYyAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSA+ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9Lmd6IgogQ09OVkVSU0lPTl9DTURfYnoyID0gInBiemlwMiAtZiAtayAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSIKIENPTlZFUlNJT05fQ01EX3h6ID0gInh6IC1mIC1rIC1jICR7WFpfQ09NUFJFU1NJT05fTEVWRUx9ICR7WFpfVEhSRUFEU30gLS1jaGVjaz0ke1haX0lOVEVHUklUWV9DSEVDS30gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gPiAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS54eiIKLUNPTlZFUlNJT05fQ01EX2x6NCA9ICJsejQgLTkgLXogJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0ubHo0IgotQ09OVkVSU0lPTl9DTURfbHo0X2xlZ2FjeSA9ICJsejQgLTkgLXogLWwgJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0ubHo0IgorQ09OVkVSU0lPTl9DTURfbHo0ID0gImx6NCAtOSAteiAtbCAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS5sejQiCiBDT05WRVJTSU9OX0NNRF9sem8gPSAibHpvcCAtOSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSIKIENPTlZFUlNJT05fQ01EX3ppcCA9ICJ6aXAgJHtaSVBfQ09NUFJFU1NJT05fTEVWRUx9ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9LnppcCAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSIKIENPTlZFUlNJT05fQ01EX3N1bSA9ICJzdW10b29sIC1pICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9IC1vICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9LnN1bSAke0pGRlMyX1NVTV9FWFRSQV9BUkdTfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXNfd2ljLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzX3dpYy5iYmNsYXNzCmluZGV4IGRjZjYyMGMuLjViNDBhOWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXNfd2ljLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlc193aWMuYmJjbGFzcwpAQCAtMTAyLDYgKzEwMiw3IEBACiAgICAgICAgICAgICAgICAgIyBhIHZhcmlhYmxlIGFuZCBsZXQgdGhlIG1ldGFkYXRhIGRlYWwgd2l0aCB0aGUgZGVwcy4KICAgICAgICAgICAgICAgICBkLnNldFZhcignX1dLU19URU1QTEFURScsIGJvZHkpCiAgICAgICAgICAgICAgICAgYmIuYnVpbGQuYWRkdGFzaygnZG9fd3JpdGVfd2tzX3RlbXBsYXRlJywgJ2RvX2ltYWdlX3dpYycsIE5vbmUsIGQpCisgICAgICAgIGJiLmJ1aWxkLmFkZHRhc2soJ2RvX2ltYWdlX3dpYycsICdkb19pbWFnZV9jb21wbGV0ZScsIE5vbmUsIGQpCiB9CiAKICMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW5zYW5lLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2luc2FuZS5iYmNsYXNzCmluZGV4IDBhM2I1MjguLmZhMTU0NjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW5zYW5lLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbnNhbmUuYmJjbGFzcwpAQCAtNjgsNiArNjgsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJlcGlwaGFueSI6ICAgKDQ2NDMsICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHMiOiAgICAgICAoIDgsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAibWlwc2VsIjogICAgICggOCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplIjogICgxODksICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemVlYiI6KDE4OSwgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZWVsIjooMTg5LCAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJyaXNjdjMyIjogICAgKDI0MywgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgInJpc2N2NjQiOiAgICAoMjQzLCAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCiAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJsaW51eCIgOiB7IAogICAgICAgICAgICAgICAgICAgICAgICAgImFhcmNoNjQiIDogICAoMTgzLCAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCkBAIC05NCw2ICs5OSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAibWlwc2lzYTY0cjYiOiAgICggOCwgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDY0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzaXNhNjRyNmVsIjogKCA4LCAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm5pb3MyIjogICAgICAoMTEzLCAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAicmlzY3YzMiI6ICAgICgyNDMsICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJyaXNjdjY0IjogICAgKDI0MywgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAogICAgICAgICAgICAgICAgICAgICAgICAgInMzOTAiOiAgICAgICAoMjIsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAic2g0IjogICAgICAgICg0MiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJzcGFyYyI6ICAgICAgKCAyLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLApAQCAtMTE5LDYgKzEyNiw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZSI6ICAoMTg5LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemVlYiI6KDE4OSwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplZWwiOigxODksICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAicmlzY3YzMiI6ICAgICgyNDMsICAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgInJpc2N2NjQiOiAgICAoMjQzLCAgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICJzaDQiOiAgICAgICAgKCAgNDIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJ1Y2xpbnV4LXVjbGliYyIgOiB7CkBAIC0xNDIsNiArMTUxLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjIjogICAgKDIwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgInNoNCI6ICAgICAgICAoNDIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJsaW51eC1nbnVfaWxwMzIiIDogICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJhYXJjaDY0IiA6ICAgKDE4MywgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAibGludXgtZ251eDMyIiA6ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICJ4ODZfNjQiOiAgICAgKDYyLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgIH0sCkBAIC00MjIsNyArNDM0LDcgQEAKIAogICAgICMgQ2hlY2sgdGhlIGFyY2hpdGVjdHVyZSBhbmQgZW5kaWFubmVzIG9mIHRoZSBiaW5hcnkKICAgICBpc18zMiA9ICgoInZpcnR1YWwva2VybmVsIiBpbiBwcm92aWRlcykgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygibW9kdWxlIiwgZCkpIGFuZCBcCi0gICAgICAgICAgICAodGFyZ2V0X29zID09ICJsaW51eC1nbnV4MzIiIG9yIHRhcmdldF9vcyA9PSAibGludXgtbXVzbHgzMiIgIG9yIHJlLm1hdGNoKCdtaXBzNjQuKjMyJywgZC5nZXRWYXIoJ0RFRkFVTFRUVU5FJykpKQorICAgICAgICAgICAgKHRhcmdldF9vcyA9PSAibGludXgtZ251eDMyIiBvciB0YXJnZXRfb3MgPT0gImxpbnV4LW11c2x4MzIiIG9yIHRhcmdldF9vcyA9PSAibGludXgtZ251X2lscDMyIiBvciByZS5tYXRjaCgnbWlwczY0LiozMicsIGQuZ2V0VmFyKCdERUZBVUxUVFVORScpKSkKICAgICBpZiBub3QgKChtYWNoaW5lID09IGVsZi5tYWNoaW5lKCkpIG9yIGlzXzMyKToKICAgICAgICAgcGFja2FnZV9xYV9hZGRfbWVzc2FnZShtZXNzYWdlcywgImFyY2giLCAiQXJjaGl0ZWN0dXJlIGRpZCBub3QgbWF0Y2ggKCVzLCBleHBlY3RlZCAlcykgb24gJXMiICUgXAogICAgICAgICAgICAgICAgICAob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKGVsZi5tYWNoaW5lKCkpLCBvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcobWFjaGluZSksIHBhY2thZ2VfcWFfY2xlYW5fcGF0aChwYXRoLGQpKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWFyY2guYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWFyY2guYmJjbGFzcwppbmRleCBjN2IzM2Q5Li4wOTc5M2ZjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1hcmNoLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtYXJjaC5iYmNsYXNzCkBAIC0xNCw3ICsxNCw3IEBACiAgICAgICAgICAgICAgICBwYXJpc2MgczM5MCAgdjg1MCBcCiAgICAgICAgICAgICAgICBhdnIzMiBibGFja2ZpbiBcCiAgICAgICAgICAgICAgICBtaWNyb2JsYXplIFwKLSAgICAgICAgICAgICAgIG5pb3MyIGFyYyB4dGVuc2EiCisgICAgICAgICAgICAgICBuaW9zMiBhcmMgcmlzY3YgeHRlbnNhIgogCiBkZWYgbWFwX2tlcm5lbF9hcmNoKGEsIGQpOgogICAgIGltcG9ydCByZQpAQCAtMjgsNiArMjgsNyBAQAogICAgIGVsaWYgcmUubWF0Y2goJ2FhcmNoNjRfaWxwMzIkJywgYSk6ICAgICAgICAgcmV0dXJuICdhcm02NCcKICAgICBlbGlmIHJlLm1hdGNoKCdhYXJjaDY0X2JlX2lscDMyJCcsIGEpOiAgICAgIHJldHVybiAnYXJtNjQnCiAgICAgZWxpZiByZS5tYXRjaCgnbWlwcyhpc2F8KSgzMnw2NHwpKHI2fCkoZWx8KSQnLCBhKTogICAgICByZXR1cm4gJ21pcHMnCisgICAgZWxpZiByZS5tYXRjaCgncmlzY3YoMzJ8NjR8KShlYnwpJCcsIGEpOiAgICByZXR1cm4gJ3Jpc2N2JwogICAgIGVsaWYgcmUubWF0Y2goJ3AocGN8b3dlcnBjKSh8NjQpJywgYSk6ICAgICAgcmV0dXJuICdwb3dlcnBjJwogICAgIGVsaWYgcmUubWF0Y2goJ3NoKDN8NCkkJywgYSk6ICAgICAgICAgICAgICAgcmV0dXJuICdzaCcKICAgICBlbGlmIHJlLm1hdGNoKCdiZmluJywgYSk6ICAgICAgICAgICAgICAgICAgIHJldHVybiAnYmxhY2tmaW4nCkBAIC01OCw3ICs1OSw3IEBACiBUQVJHRVRfQVJfS0VSTkVMX0FSQ0ggPz0gIiIKIEhPU1RfQVJfS0VSTkVMX0FSQ0ggPz0gIiR7VEFSR0VUX0FSX0tFUk5FTF9BUkNIfSIKIAotS0VSTkVMX0NDID0gIiR7Q0NBQ0hFfSR7SE9TVF9QUkVGSVh9Z2NjICR7SE9TVF9DQ19LRVJORUxfQVJDSH0gLWZ1c2UtbGQ9YmZkIgorS0VSTkVMX0NDID0gIiR7Q0NBQ0hFfSR7SE9TVF9QUkVGSVh9Z2NjICR7SE9TVF9DQ19LRVJORUxfQVJDSH0gLWZ1c2UtbGQ9YmZkICR7REVCVUdfUFJFRklYX01BUH0gLWZkZWJ1Zy1wcmVmaXgtbWFwPSR7U1RBR0lOR19LRVJORUxfRElSfT0ke0tFUk5FTF9TUkNfUEFUSH0iCiBLRVJORUxfTEQgPSAiJHtDQ0FDSEV9JHtIT1NUX1BSRUZJWH1sZC5iZmQgJHtIT1NUX0xEX0tFUk5FTF9BUkNIfSIKIEtFUk5FTF9BUiA9ICIke0NDQUNIRX0ke0hPU1RfUFJFRklYfWFyICR7SE9TVF9BUl9LRVJORUxfQVJDSH0iCiBUT09MQ0hBSU4gPSAiZ2NjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZGV2aWNldHJlZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZGV2aWNldHJlZS5iYmNsYXNzCmluZGV4IDZlMDhiZTQuLjRmODBjYzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWRldmljZXRyZWUuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1kZXZpY2V0cmVlLmJiY2xhc3MKQEAgLTEsMTAgKzEsMTAgQEAKICMgU3VwcG9ydCBmb3IgZGV2aWNlIHRyZWUgZ2VuZXJhdGlvbgogUEFDS0FHRVNfYXBwZW5kID0gIiBcCi0gICAga2VybmVsLWRldmljZXRyZWUgXAotICAgICR7QFsna2VybmVsLWltYWdlLXppbWFnZS1idW5kbGUnLCAnJ11bZC5nZXRWYXIoJ0tFUk5FTF9ERVZJQ0VUUkVFX0JVTkRMRScpICE9ICcxJ119IFwKKyAgICAke0tFUk5FTF9QQUNLQUdFX05BTUV9LWRldmljZXRyZWUgXAorICAgICR7QFtkLmdldFZhcignS0VSTkVMX1BBQ0tBR0VfTkFNRScpICsgJy1pbWFnZS16aW1hZ2UtYnVuZGxlJywgJyddW2QuZ2V0VmFyKCdLRVJORUxfREVWSUNFVFJFRV9CVU5ETEUnKSAhPSAnMSddfSBcCiAiCi1GSUxFU19rZXJuZWwtZGV2aWNldHJlZSA9ICIvJHtLRVJORUxfSU1BR0VERVNUfS8qLmR0YiAvJHtLRVJORUxfSU1BR0VERVNUfS8qLmR0Ym8iCi1GSUxFU19rZXJuZWwtaW1hZ2UtemltYWdlLWJ1bmRsZSA9ICIvJHtLRVJORUxfSU1BR0VERVNUfS96SW1hZ2UtKi5kdGIuYmluIgorRklMRVNfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1kZXZpY2V0cmVlID0gIi8ke0tFUk5FTF9JTUFHRURFU1R9LyouZHRiIC8ke0tFUk5FTF9JTUFHRURFU1R9LyouZHRibyIKK0ZJTEVTXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0taW1hZ2UtemltYWdlLWJ1bmRsZSA9ICIvJHtLRVJORUxfSU1BR0VERVNUfS96SW1hZ2UtKi5kdGIuYmluIgogCiAjIEdlbmVyYXRlIGtlcm5lbCtkZXZpY2V0cmVlIGJ1bmRsZQogS0VSTkVMX0RFVklDRVRSRUVfQlVORExFID89ICIwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZml0aW1hZ2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWZpdGltYWdlLmJiY2xhc3MKaW5kZXggOWJhZjM5OS4uNTBhOTFlMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZml0aW1hZ2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1maXRpbWFnZS5iYmNsYXNzCkBAIC0xNCw2ICsxNCw4IEBACiAgICAgICAgICAgICByZXBsYWNlbWVudHR5cGUgPSAidm1saW51ei5iaW4iCiAgICAgICAgIGVsaWYgdWFyY2ggPT0gIng4NiI6CiAgICAgICAgICAgICByZXBsYWNlbWVudHR5cGUgPSAiYnpJbWFnZSIKKyAgICAgICAgZWxpZiB1YXJjaCA9PSAibWljcm9ibGF6ZSI6CisgICAgICAgICAgICByZXBsYWNlbWVudHR5cGUgPSAibGludXguYmluIgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmVwbGFjZW1lbnR0eXBlID0gInpJbWFnZSIKIApAQCAtMTAwLDcgKzEwMiw3IEBACiAKIAlrZXJuZWxfY3N1bT0ic2hhMSIKIAotCUVOVFJZUE9JTlQ9JHtVQk9PVF9FTlRSWVBPSU5UfQorCUVOVFJZUE9JTlQ9IiR7VUJPT1RfRU5UUllQT0lOVH0iCiAJaWYgWyAtbiAiJHtVQk9PVF9FTlRSWVNZTUJPTH0iIF07IHRoZW4KIAkJRU5UUllQT0lOVD1gJHtIT1NUX1BSRUZJWH1ubSB2bWxpbnV4IHwgXAogCQkJYXdrICckMz09IiR7VUJPT1RfRU5UUllTWU1CT0x9IiB7cHJpbnQgIjB4IiQxO2V4aXR9J2AKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLW1vZHVsZS1zcGxpdC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtbW9kdWxlLXNwbGl0LmJiY2xhc3MKaW5kZXggMTAzNTUyNS4uNjdhYjQxNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtbW9kdWxlLXNwbGl0LmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtbW9kdWxlLXNwbGl0LmJiY2xhc3MKQEAgLTMwLDcgKzMwLDcgQEAKIAogUEFDS0FHRVNQTElURlVOQ1NfcHJlcGVuZCA9ICJzcGxpdF9rZXJuZWxfbW9kdWxlX3BhY2thZ2VzICIKIAotS0VSTkVMX01PRFVMRVNfTUVUQV9QQUNLQUdFID89ICJrZXJuZWwtbW9kdWxlcyIKK0tFUk5FTF9NT0RVTEVTX01FVEFfUEFDS0FHRSA/PSAiJHtAIGQuZ2V0VmFyKCJLRVJORUxfUEFDS0FHRV9OQU1FIikgb3IgImtlcm5lbCIgfS1tb2R1bGVzIgogCiBLRVJORUxfTU9EVUxFX1BBQ0tBR0VfUFJFRklYID89ICIiCiBLRVJORUxfTU9EVUxFX1BBQ0tBR0VfU1VGRklYID89ICItJHtLRVJORUxfVkVSU0lPTn0iCkBAIC0xMjksMTYgKzEyOSwxOSBAQAogICAgICAgICAgICBwb3N0Zml4ID0gZm9ybWF0LnNwbGl0KCclcycpWzFdCiAgICAgICAgICAgIGQuc2V0VmFyKCdSUFJPVklERVNfJyArIHBrZywgcGtnLnJlcGxhY2UocG9zdGZpeCwgJycpKQogCisgICAga2VybmVsX3BhY2thZ2VfbmFtZSA9IGQuZ2V0VmFyKCJLRVJORUxfUEFDS0FHRV9OQU1FIikgb3IgImtlcm5lbCIKKyAgICBrZXJuZWxfdmVyc2lvbiA9IGQuZ2V0VmFyKCJLRVJORUxfVkVSU0lPTiIpCisKICAgICBtb2R1bGVfcmVnZXggPSAnXiguKilcLms/byQnCiAKICAgICBtb2R1bGVfcGF0dGVybl9wcmVmaXggPSBkLmdldFZhcignS0VSTkVMX01PRFVMRV9QQUNLQUdFX1BSRUZJWCcpCiAgICAgbW9kdWxlX3BhdHRlcm5fc3VmZml4ID0gZC5nZXRWYXIoJ0tFUk5FTF9NT0RVTEVfUEFDS0FHRV9TVUZGSVgnKQotICAgIG1vZHVsZV9wYXR0ZXJuID0gbW9kdWxlX3BhdHRlcm5fcHJlZml4ICsgJ2tlcm5lbC1tb2R1bGUtJXMnICsgbW9kdWxlX3BhdHRlcm5fc3VmZml4CisgICAgbW9kdWxlX3BhdHRlcm4gPSBtb2R1bGVfcGF0dGVybl9wcmVmaXggKyBrZXJuZWxfcGFja2FnZV9uYW1lICsgJy1tb2R1bGUtJXMnICsgbW9kdWxlX3BhdHRlcm5fc3VmZml4CiAKICAgICBwb3N0aW5zdCA9IGQuZ2V0VmFyKCdwa2dfcG9zdGluc3RfbW9kdWxlcycpCiAgICAgcG9zdHJtID0gZC5nZXRWYXIoJ3BrZ19wb3N0cm1fbW9kdWxlcycpCiAKLSAgICBtb2R1bGVzID0gZG9fc3BsaXRfcGFja2FnZXMoZCwgcm9vdD0nJHtub25hcmNoX2Jhc2VfbGliZGlyfS9tb2R1bGVzJywgZmlsZV9yZWdleD1tb2R1bGVfcmVnZXgsIG91dHB1dF9wYXR0ZXJuPW1vZHVsZV9wYXR0ZXJuLCBkZXNjcmlwdGlvbj0nJXMga2VybmVsIG1vZHVsZScsIHBvc3RpbnN0PXBvc3RpbnN0LCBwb3N0cm09cG9zdHJtLCByZWN1cnNpdmU9VHJ1ZSwgaG9vaz1mcm9iX21ldGFkYXRhLCBleHRyYV9kZXBlbmRzPSdrZXJuZWwtJXMnICUgKGQuZ2V0VmFyKCJLRVJORUxfVkVSU0lPTiIpKSkKKyAgICBtb2R1bGVzID0gZG9fc3BsaXRfcGFja2FnZXMoZCwgcm9vdD0nJHtub25hcmNoX2Jhc2VfbGliZGlyfS9tb2R1bGVzJywgZmlsZV9yZWdleD1tb2R1bGVfcmVnZXgsIG91dHB1dF9wYXR0ZXJuPW1vZHVsZV9wYXR0ZXJuLCBkZXNjcmlwdGlvbj0nJXMga2VybmVsIG1vZHVsZScsIHBvc3RpbnN0PXBvc3RpbnN0LCBwb3N0cm09cG9zdHJtLCByZWN1cnNpdmU9VHJ1ZSwgaG9vaz1mcm9iX21ldGFkYXRhLCBleHRyYV9kZXBlbmRzPSclcy0lcycgJSAoa2VybmVsX3BhY2thZ2VfbmFtZSwga2VybmVsX3ZlcnNpb24pKQogICAgIGlmIG1vZHVsZXM6CiAgICAgICAgIG1ldGFwa2cgPSBkLmdldFZhcignS0VSTkVMX01PRFVMRVNfTUVUQV9QQUNLQUdFJykKICAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXycgKyBtZXRhcGtnLCAnICcrJyAnLmpvaW4obW9kdWxlcykpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC15b2N0by5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwteW9jdG8uYmJjbGFzcwppbmRleCA2NjNjNjU1Li40YWMzYTM5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC15b2N0by5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXlvY3RvLmJiY2xhc3MKQEAgLTI0Nyw2ICsyNDcsNyBAQAogCQlmaQogCQlybSAtZiAuZ2l0aWdub3JlCiAJCWdpdCBpbml0CisJCWNoZWNrX2dpdF9jb25maWcKIAkJZ2l0IGFkZCAuCiAJCWdpdCBjb21taXQgLXEgLW0gImJhc2VsaW5lIGNvbW1pdDogY3JlYXRpbmcgcmVwbyBmb3IgJHtQTn0tJHtQVn0iCiAJCWdpdCBjbGVhbiAtZCAtZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLmJiY2xhc3MKaW5kZXggMTRmNDFlOS4uNzhkNmMzMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC5iYmNsYXNzCkBAIC0xLDcgKzEsMTAgQEAKIGluaGVyaXQgbGludXgta2VybmVsLWJhc2Uga2VybmVsLW1vZHVsZS1zcGxpdAogCi1QUk9WSURFUyArPSAidmlydHVhbC9rZXJuZWwiCi1ERVBFTkRTICs9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1iaW51dGlscyB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2Mga21vZC1uYXRpdmUgYmMtbmF0aXZlIGx6b3AtbmF0aXZlIgorS0VSTkVMX1BBQ0tBR0VfTkFNRSA/Pz0gImtlcm5lbCIKK0tFUk5FTF9ERVBMT1lTVUJESVIgPz89ICIke0AgIiIgaWYgKGQuZ2V0VmFyKCJLRVJORUxfUEFDS0FHRV9OQU1FIikgPT0gImtlcm5lbCIpIGVsc2UgZC5nZXRWYXIoIktFUk5FTF9QQUNLQUdFX05BTUUiKSB9IgorCitQUk9WSURFUyArPSAiJHtAICJ2aXJ0dWFsL2tlcm5lbCIgaWYgKGQuZ2V0VmFyKCJLRVJORUxfUEFDS0FHRV9OQU1FIikgPT0gImtlcm5lbCIpIGVsc2UgIiIgfSIKK0RFUEVORFMgKz0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWJpbnV0aWxzIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYyBrbW9kLW5hdGl2ZSBiYy1uYXRpdmUgbHpvcC1uYXRpdmUgYmlzb24tbmF0aXZlIgogUEFDS0FHRV9XUklURV9ERVBTICs9ICJkZXBtb2R3cmFwcGVyLWNyb3NzIgogCiBkb19kZXBsb3lbZGVwZW5kc10gKz0gImRlcG1vZHdyYXBwZXItY3Jvc3M6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKQEAgLTM0LDExICszNywzMiBAQAogS0VSTkVMX1ZFUlNJT05fUEtHX05BTUVbdmFyZGVwdmFsdWVdID0gIiR7TElOVVhfVkVSU0lPTn0iCiAKIHB5dGhvbiBfX2Fub255bW91cyAoKSB7CisgICAgcG4gPSBkLmdldFZhcigiUE4iKQorICAgIGtwbiA9IGQuZ2V0VmFyKCJLRVJORUxfUEFDS0FHRV9OQU1FIikKKworICAgICMgWFhYIFJlbW92ZSB0aGlzIGFmdGVyIGJ1ZyAxMTkwNSBpcyByZXNvbHZlZAorICAgICMgIEZJTEVTXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tZGV2IGRvZXNuJ3QgZXhwYW5kIGNvcnJlY3RseQorICAgIGlmIGtwbiA9PSBwbjoKKyAgICAgICAgYmIud2FybigiU29tZSBwYWNrYWdlcyAoRS5nLiAqLWRldikgbWlnaHQgYmUgbWlzc2luZyBkdWUgdG8gIgorICAgICAgICAgICAgICAgICJidWcgMTE5MDUgKHZhcmlhYmxlIEtFUk5FTF9QQUNLQUdFX05BTUUgPT0gUE4pIikKKworICAgICMgVGhlIGRlZmF1bHQga2VybmVsIHJlY2lwZSBidWlsZHMgaW4gYSBzaGFyZWQgbG9jYXRpb24gZGVmaW5lZCBieQorICAgICMgYml0YmFrZS9kaXN0cm8gY29uZnM6IFNUQUdJTkdfS0VSTkVMX0RJUiBhbmQgU1RBR0lOR19LRVJORUxfQlVJTERESVIuCisgICAgIyBTZXQgdGhlc2UgdmFyaWFibGVzIHRvIGRpcmVjdG9yaWVzIHVuZGVyICR7V09SS0RJUn0gaW4gYWx0ZXJuYXRlCisgICAgIyBrZXJuZWwgcmVjaXBlcyAoSS5lLiB3aGVyZSBLRVJORUxfUEFDS0FHRV9OQU1FICE9IGtlcm5lbCkgc28gdGhhdCB0aGV5CisgICAgIyBtYXkgYnVpbGQgaW4gcGFyYWxsZWwgd2l0aCB0aGUgZGVmYXVsdCBrZXJuZWwgd2l0aG91dCBjbG9iYmVyaW5nLgorICAgIGlmIGtwbiAhPSAia2VybmVsIjoKKyAgICAgICAgd29ya2RpciA9IGQuZ2V0VmFyKCJXT1JLRElSIikKKyAgICAgICAgc291cmNlRGlyID0gb3MucGF0aC5qb2luKHdvcmtkaXIsICdrZXJuZWwtc291cmNlJykKKyAgICAgICAgYXJ0aWZhY3RzRGlyID0gb3MucGF0aC5qb2luKHdvcmtkaXIsICdrZXJuZWwtYnVpbGQtYXJ0aWZhY3RzJykKKyAgICAgICAgZC5zZXRWYXIoIlNUQUdJTkdfS0VSTkVMX0RJUiIsIHNvdXJjZURpcikKKyAgICAgICAgZC5zZXRWYXIoIlNUQUdJTkdfS0VSTkVMX0JVSUxERElSIiwgYXJ0aWZhY3RzRGlyKQogCiAgICAgIyBNZXJnZSBLRVJORUxfSU1BR0VUWVBFIGFuZCBLRVJORUxfQUxUX0lNQUdFVFlQRSBpbnRvIEtFUk5FTF9JTUFHRVRZUEVTCiAgICAgdHlwZSA9IGQuZ2V0VmFyKCdLRVJORUxfSU1BR0VUWVBFJykgb3IgIiIKICAgICBhbHR0eXBlID0gZC5nZXRWYXIoJ0tFUk5FTF9BTFRfSU1BR0VUWVBFJykgb3IgIiIKICAgICB0eXBlcyA9IGQuZ2V0VmFyKCdLRVJORUxfSU1BR0VUWVBFUycpIG9yICIiCisgICAga25hbWUgPSBkLmdldFZhcignS0VSTkVMX1BBQ0tBR0VfTkFNRScpIG9yICJrZXJuZWwiCiAgICAgaWYgdHlwZSBub3QgaW4gdHlwZXMuc3BsaXQoKToKICAgICAgICAgdHlwZXMgPSAodHlwZSArICcgJyArIHR5cGVzKS5zdHJpcCgpCiAgICAgaWYgYWx0dHlwZSBub3QgaW4gdHlwZXMuc3BsaXQoKToKQEAgLTU1LDE1ICs3OSwxNSBAQAogICAgICAgICB0eXBlbG93ZXIgPSB0eXBlLmxvd2VyKCkKICAgICAgICAgaW1hZ2VkZXN0ID0gZC5nZXRWYXIoJ0tFUk5FTF9JTUFHRURFU1QnKQogCi0gICAgICAgIGQuYXBwZW5kVmFyKCdQQUNLQUdFUycsICcgJyArICdrZXJuZWwtaW1hZ2UtJyArIHR5cGVsb3dlcikKKyAgICAgICAgZC5hcHBlbmRWYXIoJ1BBQ0tBR0VTJywgJyAlcy1pbWFnZS0lcycgJSAoa25hbWUsIHR5cGVsb3dlcikpCiAKLSAgICAgICAgZC5zZXRWYXIoJ0ZJTEVTX2tlcm5lbC1pbWFnZS0nICsgdHlwZWxvd2VyLCAnLycgKyBpbWFnZWRlc3QgKyAnLycgKyB0eXBlICsgJy0ke0tFUk5FTF9WRVJTSU9OX05BTUV9JyArICcgLycgKyBpbWFnZWRlc3QgKyAnLycgKyB0eXBlKQorICAgICAgICBkLnNldFZhcignRklMRVNfJyArIGtuYW1lICsgJy1pbWFnZS0nICsgdHlwZWxvd2VyLCAnLycgKyBpbWFnZWRlc3QgKyAnLycgKyB0eXBlICsgJy0ke0tFUk5FTF9WRVJTSU9OX05BTUV9JyArICcgLycgKyBpbWFnZWRlc3QgKyAnLycgKyB0eXBlKQogCi0gICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU19rZXJuZWwtaW1hZ2UnLCAnICcgKyAna2VybmVsLWltYWdlLScgKyB0eXBlbG93ZXIpCisgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18lcy1pbWFnZScgJSBrbmFtZSwgJyAlcy1pbWFnZS0lcycgJSAoa25hbWUsIHR5cGVsb3dlcikpCiAKLSAgICAgICAgZC5zZXRWYXIoJ1BLR19rZXJuZWwtaW1hZ2UtJyArIHR5cGVsb3dlciwgJ2tlcm5lbC1pbWFnZS0nICsgdHlwZWxvd2VyICsgJy0ke0tFUk5FTF9WRVJTSU9OX1BLR19OQU1FfScpCisgICAgICAgIGQuc2V0VmFyKCdQS0dfJXMtaW1hZ2UtJXMnICUgKGtuYW1lLHR5cGVsb3dlciksICclcy1pbWFnZS0lcy0ke0tFUk5FTF9WRVJTSU9OX1BLR19OQU1FfScgJSAoa25hbWUsIHR5cGVsb3dlcikpCiAKLSAgICAgICAgZC5zZXRWYXIoJ0FMTE9XX0VNUFRZX2tlcm5lbC1pbWFnZS0nICsgdHlwZWxvd2VyLCAnMScpCisgICAgICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8lcy1pbWFnZS0lcycgJSAoa25hbWUsIHR5cGVsb3dlciksICcxJykKIAogICAgIGltYWdlID0gZC5nZXRWYXIoJ0lOSVRSQU1GU19JTUFHRScpCiAgICAgaWYgaW1hZ2U6CkBAIC0xMjEsMTIgKzE0NSwxMyBAQAogCiBpbmhlcml0IGtlcm5lbC1hcmNoIGRlcGxveQogCi1QQUNLQUdFU19EWU5BTUlDICs9ICJea2VybmVsLW1vZHVsZS0uKiIKLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5rZXJuZWwtaW1hZ2UtLioiCi1QQUNLQUdFU19EWU5BTUlDICs9ICJea2VybmVsLWZpcm13YXJlLS4qIgorUEFDS0FHRVNfRFlOQU1JQyArPSAiXiR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tbW9kdWxlLS4qIgorUEFDS0FHRVNfRFlOQU1JQyArPSAiXiR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0taW1hZ2UtLioiCitQQUNLQUdFU19EWU5BTUlDICs9ICJeJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1maXJtd2FyZS0uKiIKIAogZXhwb3J0IE9TID0gIiR7VEFSR0VUX09TfSIKIGV4cG9ydCBDUk9TU19DT01QSUxFID0gIiR7VEFSR0VUX1BSRUZJWH0iCitleHBvcnQgS0JVSUxEX0JVSUxEX1ZFUlNJT04gPSAiMSIKIGV4cG9ydCBLQlVJTERfQlVJTERfVVNFUiA9ICJvZS11c2VyIgogZXhwb3J0IEtCVUlMRF9CVUlMRF9IT1NUID0gIm9lLWhvc3QiCiAKQEAgLTIwNyw3ICsyMzIsNyBAQAogCQljb3B5X2luaXRyYW1mcwogCQkjIEJhY2tpbmcgdXAga2VybmVsIGltYWdlIHJlbGllcyBvbiBpdHMgdHlwZShyZWd1bGFyIGZpbGUgb3Igc3ltYm9saWMgbGluaykKIAkJdG1wX3BhdGg9IiIKLQkJZm9yIHR5cGUgaW4gJHtLRVJORUxfSU1BR0VUWVBFU30gOyBkbworCQlmb3IgdHlwZSBpbiAke0tFUk5FTF9JTUFHRVRZUEVfRk9SX01BS0V9IDsgZG8KIAkJCWlmIFsgLWggJHtLRVJORUxfT1VUUFVUX0RJUn0vJHR5cGUgXSA7IHRoZW4KIAkJCQlsaW5rcGF0aD1gcmVhZGxpbmsgLW4gJHtLRVJORUxfT1VUUFVUX0RJUn0vJHR5cGVgCiAJCQkJcmVhbHBhdGg9YHJlYWRsaW5rIC1mbiAke0tFUk5FTF9PVVRQVVRfRElSfS8kdHlwZWAKQEAgLTI1NSw3ICsyODAsNyBAQAogCiBrZXJuZWxfZG9fY29tcGlsZSgpIHsKIAl1bnNldCBDRkxBR1MgQ1BQRkxBR1MgQ1hYRkxBR1MgTERGTEFHUyBNQUNISU5FCi0JaWYgWyAiJEJVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFUyIgPSAiMSIgXTsgdGhlbgorCWlmIFsgIiR7QlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTfSIgPSAiMSIgXTsgdGhlbgogCQkjIGtlcm5lbCBzb3VyY2VzIGRvIG5vdCB1c2UgZG9fdW5wYWNrLCBzbyBTT1VSQ0VfREFURV9FUE9DSCBtYXkgbm90CiAJCSMgYmUgc2V0Li4uLgogCQlpZiBbICIkU09VUkNFX0RBVEVfRVBPQ0giID0gIjAiIF07IHRoZW4KQEAgLTMzOSw3ICszNjQsOSBAQAogCWluc3RhbGwgLWQgJHtEfS9ib290CiAJZm9yIHR5cGUgaW4gJHtLRVJORUxfSU1BR0VUWVBFU30gOyBkbwogCQlpbnN0YWxsIC1tIDA2NDQgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHt0eXBlfSAke0R9LyR7S0VSTkVMX0lNQUdFREVTVH0vJHt0eXBlfS0ke0tFUk5FTF9WRVJTSU9OfQotCQlsbiAtc2YgJHt0eXBlfS0ke0tFUk5FTF9WRVJTSU9OfSAke0R9LyR7S0VSTkVMX0lNQUdFREVTVH0vJHt0eXBlfQorCQlpZiBbICIke0tFUk5FTF9QQUNLQUdFX05BTUV9IiA9ICJrZXJuZWwiIF07IHRoZW4KKwkJCWxuIC1zZiAke3R5cGV9LSR7S0VSTkVMX1ZFUlNJT059ICR7RH0vJHtLRVJORUxfSU1BR0VERVNUfS8ke3R5cGV9CisJCWZpCiAJZG9uZQogCWluc3RhbGwgLW0gMDY0NCBTeXN0ZW0ubWFwICR7RH0vYm9vdC9TeXN0ZW0ubWFwLSR7S0VSTkVMX1ZFUlNJT059CiAJaW5zdGFsbCAtbSAwNjQ0IC5jb25maWcgJHtEfS9ib290L2NvbmZpZy0ke0tFUk5FTF9WRVJTSU9OfQpAQCAtMzkzLDEzICs0MjAsMTQgQEAKIAogZW1pdF9kZXBtb2RfcGtnZGF0YSgpIHsKIAkjIFN0YXNoIGRhdGEgZm9yIGRlcG1vZAotCWluc3RhbGwgLWQgJHtQS0dERVNUV09SS30va2VybmVsLWRlcG1vZC8KLQllY2hvICIke0tFUk5FTF9WRVJTSU9OfSIgPiAke1BLR0RFU1RXT1JLfS9rZXJuZWwtZGVwbW9kL2tlcm5lbC1hYml2ZXJzaW9uCi0JY3AgJHtCfS9TeXN0ZW0ubWFwICR7UEtHREVTVFdPUkt9L2tlcm5lbC1kZXBtb2QvU3lzdGVtLm1hcC0ke0tFUk5FTF9WRVJTSU9OfQorCWluc3RhbGwgLWQgJHtQS0dERVNUV09SS30vJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1kZXBtb2QvCisJZWNobyAiJHtLRVJORUxfVkVSU0lPTn0iID4gJHtQS0dERVNUV09SS30vJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1kZXBtb2QvJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1hYml2ZXJzaW9uCisJY3AgJHtCfS9TeXN0ZW0ubWFwICR7UEtHREVTVFdPUkt9LyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tZGVwbW9kL1N5c3RlbS5tYXAtJHtLRVJORUxfVkVSU0lPTn0KIH0KIAogUEFDS0FHRUZVTkNTICs9ICJlbWl0X2RlcG1vZF9wa2dkYXRhIgogCitkb19zaGFyZWRfd29ya2RpcltjbGVhbmRpcnNdICs9ICIgJHtTVEFHSU5HX0tFUk5FTF9CVUlMRERJUn0iCiBkb19zaGFyZWRfd29ya2RpciAoKSB7CiAJY2QgJHtCfQogCkBAIC00MTAsNyArNDM4LDcgQEAKIAkjIFN0b3JlIHRoZSBrZXJuZWwgdmVyc2lvbiBpbiBzeXNyb290cyBmb3IgbW9kdWxlLWJhc2UuYmJjbGFzcwogCSMKIAotCWVjaG8gIiR7S0VSTkVMX1ZFUlNJT059IiA+ICRrZXJuZWxkaXIva2VybmVsLWFiaXZlcnNpb24KKwllY2hvICIke0tFUk5FTF9WRVJTSU9OfSIgPiAka2VybmVsZGlyLyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tYWJpdmVyc2lvbgogCiAJIyBDb3B5IGZpbGVzIHJlcXVpcmVkIGZvciBtb2R1bGUgYnVpbGRzCiAJY3AgU3lzdGVtLm1hcCAka2VybmVsZGlyL1N5c3RlbS5tYXAtJHtLRVJORUxfVkVSU0lPTn0KQEAgLTQzOSw4ICs0NjcsMTAgQEAKIAkjIGFyY2gvcG93ZXJwYy9saWIvY3J0c2F2cmVzLm8gd2hpY2ggaXMgcHJlc2VudCBpbgogCSMgS0JVSUxEX0xERkxBR1NfTU9EVUxFLCBtYWtpbmcgaXQgcmVxdWlyZWQgdG8gYnVpbGQgZXh0ZXJuYWwgbW9kdWxlcy4KIAlpZiBbICR7QVJDSH0gPSAicG93ZXJwYyIgXTsgdGhlbgotCQlta2RpciAtcCAka2VybmVsZGlyL2FyY2gvcG93ZXJwYy9saWIvCi0JCWNwIGFyY2gvcG93ZXJwYy9saWIvY3J0c2F2cmVzLm8gJGtlcm5lbGRpci9hcmNoL3Bvd2VycGMvbGliL2NydHNhdnJlcy5vCisJCWlmIFsgLWUgYXJjaC9wb3dlcnBjL2xpYi9jcnRzYXZyZXMubyBdOyB0aGVuCisJCQlta2RpciAtcCAka2VybmVsZGlyL2FyY2gvcG93ZXJwYy9saWIvCisJCQljcCBhcmNoL3Bvd2VycGMvbGliL2NydHNhdnJlcy5vICRrZXJuZWxkaXIvYXJjaC9wb3dlcnBjL2xpYi9jcnRzYXZyZXMubworCQlmaQogCWZpCiAKIAlpZiBbIC1kIGluY2x1ZGUvZ2VuZXJhdGVkIF07IHRoZW4KQEAgLTQ1OSw3ICs0ODksNyBAQAogCToKIH0KIAotS0VSTkVMX0NPTkZJR19DT01NQU5EID89ICJvZV9ydW5tYWtlX2NhbGwgLUMgJHtTfSBPPSR7Qn0gb2xkbm9jb25maWcgfHwgeWVzICcnIHwgb2VfcnVubWFrZSAtQyAke1N9IE89JHtCfSBvbGRjb25maWciCitLRVJORUxfQ09ORklHX0NPTU1BTkQgPz0gIm9lX3J1bm1ha2VfY2FsbCAtQyAke1N9IE89JHtCfSBvbGRub2NvbmZpZyIKIAogcHl0aG9uIGNoZWNrX29sZGVzdF9rZXJuZWwoKSB7CiAgICAgb2xkZXN0X2tlcm5lbCA9IGQuZ2V0VmFyKCdPTERFU1RfS0VSTkVMJykKQEAgLTUwNCwzMiArNTM0LDM0IEBACiAKIGluaGVyaXQgY21sMQogCitLQ09ORklHX0NPTkZJR19DT01NQU5EX2FwcGVuZCA9ICIgSE9TVExERkxBR1M9JyR7QlVJTERfTERGTEFHU30nIgorCiBFWFBPUlRfRlVOQ1RJT05TIGRvX2NvbXBpbGUgZG9faW5zdGFsbCBkb19jb25maWd1cmUKIAogIyBrZXJuZWwtYmFzZSBiZWNvbWVzIGtlcm5lbC0ke0tFUk5FTF9WRVJTSU9OfQogIyBrZXJuZWwtaW1hZ2UgYmVjb21lcyBrZXJuZWwtaW1hZ2UtJHtLRVJORUxfVkVSU0lPTn0KLVBBQ0tBR0VTID0gImtlcm5lbCBrZXJuZWwtYmFzZSBrZXJuZWwtdm1saW51eCBrZXJuZWwtaW1hZ2Uga2VybmVsLWRldiBrZXJuZWwtbW9kdWxlcyIKK1BBQ0tBR0VTID0gIiR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0gJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1iYXNlICR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tdm1saW51eCAke0tFUk5FTF9QQUNLQUdFX05BTUV9LWltYWdlICR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tZGV2ICR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tbW9kdWxlcyIKIEZJTEVTXyR7UE59ID0gIiIKLUZJTEVTX2tlcm5lbC1iYXNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbW9kdWxlcy8ke0tFUk5FTF9WRVJTSU9OfS9tb2R1bGVzLm9yZGVyICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbW9kdWxlcy8ke0tFUk5FTF9WRVJTSU9OfS9tb2R1bGVzLmJ1aWx0aW4iCi1GSUxFU19rZXJuZWwtaW1hZ2UgPSAiIgotRklMRVNfa2VybmVsLWRldiA9ICIvYm9vdC9TeXN0ZW0ubWFwKiAvYm9vdC9Nb2R1bGUuc3ltdmVycyogL2Jvb3QvY29uZmlnKiAke0tFUk5FTF9TUkNfUEFUSH0gJHtub25hcmNoX2Jhc2VfbGliZGlyfS9tb2R1bGVzLyR7S0VSTkVMX1ZFUlNJT059L2J1aWxkIgotRklMRVNfa2VybmVsLXZtbGludXggPSAiL2Jvb3Qvdm1saW51eC0ke0tFUk5FTF9WRVJTSU9OX05BTUV9IgotRklMRVNfa2VybmVsLW1vZHVsZXMgPSAiIgotUkRFUEVORFNfa2VybmVsID0gImtlcm5lbC1iYXNlIgorRklMRVNfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1iYXNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbW9kdWxlcy8ke0tFUk5FTF9WRVJTSU9OfS9tb2R1bGVzLm9yZGVyICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbW9kdWxlcy8ke0tFUk5FTF9WRVJTSU9OfS9tb2R1bGVzLmJ1aWx0aW4iCitGSUxFU18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWltYWdlID0gIiIKK0ZJTEVTXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tZGV2ID0gIi9ib290L1N5c3RlbS5tYXAqIC9ib290L01vZHVsZS5zeW12ZXJzKiAvYm9vdC9jb25maWcqICR7S0VSTkVMX1NSQ19QQVRIfSAke25vbmFyY2hfYmFzZV9saWJkaXJ9L21vZHVsZXMvJHtLRVJORUxfVkVSU0lPTn0vYnVpbGQiCitGSUxFU18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LXZtbGludXggPSAiL2Jvb3Qvdm1saW51eC0ke0tFUk5FTF9WRVJTSU9OX05BTUV9IgorRklMRVNfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1tb2R1bGVzID0gIiIKK1JERVBFTkRTXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0gPSAiJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1iYXNlIgogIyBBbGxvdyBtYWNoaW5lcyB0byBvdmVycmlkZSB0aGlzIGRlcGVuZGVuY3kgaWYga2VybmVsIGltYWdlIGZpbGVzIGFyZQogIyBub3Qgd2FudGVkIGluIGltYWdlcyBhcyBzdGFuZGFyZAotUkRFUEVORFNfa2VybmVsLWJhc2UgPz0gImtlcm5lbC1pbWFnZSIKLVBLR19rZXJuZWwtaW1hZ2UgPSAia2VybmVsLWltYWdlLSR7QGxlZ2l0aW1pemVfcGFja2FnZV9uYW1lKCcke0tFUk5FTF9WRVJTSU9OfScpfSIKLVJERVBFTkRTX2tlcm5lbC1pbWFnZSArPSAiJHtAYmFzZV9jb25kaXRpb25hbCgnS0VSTkVMX0lNQUdFVFlQRScsICd2bWxpbnV4JywgJ2tlcm5lbC12bWxpbnV4JywgJycsIGQpfSIKLVBLR19rZXJuZWwtYmFzZSA9ICJrZXJuZWwtJHtAbGVnaXRpbWl6ZV9wYWNrYWdlX25hbWUoJyR7S0VSTkVMX1ZFUlNJT059Jyl9IgotUlBST1ZJREVTX2tlcm5lbC1iYXNlICs9ICJrZXJuZWwtJHtLRVJORUxfVkVSU0lPTn0iCi1BTExPV19FTVBUWV9rZXJuZWwgPSAiMSIKLUFMTE9XX0VNUFRZX2tlcm5lbC1iYXNlID0gIjEiCi1BTExPV19FTVBUWV9rZXJuZWwtaW1hZ2UgPSAiMSIKLUFMTE9XX0VNUFRZX2tlcm5lbC1tb2R1bGVzID0gIjEiCi1ERVNDUklQVElPTl9rZXJuZWwtbW9kdWxlcyA9ICJLZXJuZWwgbW9kdWxlcyBtZXRhIHBhY2thZ2UiCitSREVQRU5EU18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWJhc2UgPz0gIiR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0taW1hZ2UiCitQS0dfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1pbWFnZSA9ICIke0tFUk5FTF9QQUNLQUdFX05BTUV9LWltYWdlLSR7QGxlZ2l0aW1pemVfcGFja2FnZV9uYW1lKCcke0tFUk5FTF9WRVJTSU9OfScpfSIKK1JERVBFTkRTXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0taW1hZ2UgKz0gIiR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdLRVJORUxfSU1BR0VUWVBFJywgJ3ZtbGludXgnLCAnJHtLRVJORUxfUEFDS0FHRV9OQU1FfS12bWxpbnV4JywgJycsIGQpfSIKK1BLR18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWJhc2UgPSAiJHtLRVJORUxfUEFDS0FHRV9OQU1FfS0ke0BsZWdpdGltaXplX3BhY2thZ2VfbmFtZSgnJHtLRVJORUxfVkVSU0lPTn0nKX0iCitSUFJPVklERVNfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1iYXNlICs9ICIke0tFUk5FTF9QQUNLQUdFX05BTUV9LSR7S0VSTkVMX1ZFUlNJT059IgorQUxMT1dfRU1QVFlfJHtLRVJORUxfUEFDS0FHRV9OQU1FfSA9ICIxIgorQUxMT1dfRU1QVFlfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1iYXNlID0gIjEiCitBTExPV19FTVBUWV8ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWltYWdlID0gIjEiCitBTExPV19FTVBUWV8ke0tFUk5FTF9QQUNLQUdFX05BTUV9LW1vZHVsZXMgPSAiMSIKK0RFU0NSSVBUSU9OXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tbW9kdWxlcyA9ICJLZXJuZWwgbW9kdWxlcyBtZXRhIHBhY2thZ2UiCiAKLXBrZ19wb3N0aW5zdF9rZXJuZWwtYmFzZSAoKSB7Citwa2dfcG9zdGluc3RfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1iYXNlICgpIHsKIAlpZiBbICEgLWUgIiREL2xpYi9tb2R1bGVzLyR7S0VSTkVMX1ZFUlNJT059IiBdOyB0aGVuCiAJCW1rZGlyIC1wICREL2xpYi9tb2R1bGVzLyR7S0VSTkVMX1ZFUlNJT059CiAJZmkKQEAgLTU0Myw3ICs1NzUsNyBAQAogUEFDS0FHRVNQTElURlVOQ1NfcHJlcGVuZCA9ICJzcGxpdF9rZXJuZWxfcGFja2FnZXMgIgogCiBweXRob24gc3BsaXRfa2VybmVsX3BhY2thZ2VzICgpIHsKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCByb290PScke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlJywgZmlsZV9yZWdleD0nXiguKilcLihiaW58Znd8Y2lzfGNzcHxkc3ApJCcsIG91dHB1dF9wYXR0ZXJuPSdrZXJuZWwtZmlybXdhcmUtJXMnLCBkZXNjcmlwdGlvbj0nRmlybXdhcmUgZm9yICVzJywgcmVjdXJzaXZlPVRydWUsIGV4dHJhX2RlcGVuZHM9JycpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcm9vdD0nJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZScsIGZpbGVfcmVnZXg9J14oLiopXC4oYmlufGZ3fGNpc3xjc3B8ZHNwKSQnLCBvdXRwdXRfcGF0dGVybj0nJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1maXJtd2FyZS0lcycsIGRlc2NyaXB0aW9uPSdGaXJtd2FyZSBmb3IgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJykKIH0KIAogIyBNYW55IHNjcmlwdHMgd2FudCB0byBsb29rIGluIGFyY2gvJGFyY2gvYm9vdCBmb3IgdGhlIGJvb3RhYmxlCkBAIC02MzQsMjEgKzY2NiwyNyBAQAogTU9EVUxFX1RBUkJBTExfREVQTE9ZID89ICIxIgogCiBrZXJuZWxfZG9fZGVwbG95KCkgeworCWRlcGxveURpcj0iJHtERVBMT1lESVJ9IgorCWlmIFsgLW4gIiR7S0VSTkVMX0RFUExPWVNVQkRJUn0iIF07IHRoZW4KKwkJZGVwbG95RGlyPSIke0RFUExPWURJUn0vJHtLRVJORUxfREVQTE9ZU1VCRElSfSIKKwkJbWtkaXIgIiRkZXBsb3lEaXIiCisJZmkKKwogCWZvciB0eXBlIGluICR7S0VSTkVMX0lNQUdFVFlQRVN9IDsgZG8KIAkJYmFzZV9uYW1lPSR7dHlwZX0tJHtLRVJORUxfSU1BR0VfQkFTRV9OQU1FfQotCQlpbnN0YWxsIC1tIDA2NDQgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHt0eXBlfSAke0RFUExPWURJUn0vJHtiYXNlX25hbWV9LmJpbgorCQlpbnN0YWxsIC1tIDA2NDQgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHt0eXBlfSAkZGVwbG95RGlyLyR7YmFzZV9uYW1lfS5iaW4KIAlkb25lCiAJaWYgWyAke01PRFVMRV9UQVJCQUxMX0RFUExPWX0gPSAiMSIgXSAmJiAoZ3JlcCAtcSAtaSAtZSAnXkNPTkZJR19NT0RVTEVTPXkkJyAuY29uZmlnKTsgdGhlbgogCQlta2RpciAtcCAke0R9L2xpYgotCQl0YXIgLWN2emYgJHtERVBMT1lESVJ9LyR7TU9EVUxFX1RBUkJBTExfQkFTRV9OQU1FfSAtQyAke0R9IGxpYgotCQlsbiAtc2YgJHtNT0RVTEVfVEFSQkFMTF9CQVNFX05BTUV9ICR7REVQTE9ZRElSfS8ke01PRFVMRV9UQVJCQUxMX1NZTUxJTktfTkFNRX0KKwkJdGFyIC1jdnpmICRkZXBsb3lEaXIvJHtNT0RVTEVfVEFSQkFMTF9CQVNFX05BTUV9IC1DICR7RH0gbGliCisJCWxuIC1zZiAke01PRFVMRV9UQVJCQUxMX0JBU0VfTkFNRX0gJGRlcGxveURpci8ke01PRFVMRV9UQVJCQUxMX1NZTUxJTktfTkFNRX0KIAlmaQogCiAJZm9yIHR5cGUgaW4gJHtLRVJORUxfSU1BR0VUWVBFU30gOyBkbwogCQliYXNlX25hbWU9JHt0eXBlfS0ke0tFUk5FTF9JTUFHRV9CQVNFX05BTUV9CiAJCXN5bWxpbmtfbmFtZT0ke3R5cGV9LSR7S0VSTkVMX0lNQUdFX1NZTUxJTktfTkFNRX0KLQkJbG4gLXNmICR7YmFzZV9uYW1lfS5iaW4gJHtERVBMT1lESVJ9LyR7c3ltbGlua19uYW1lfS5iaW4KLQkJbG4gLXNmICR7YmFzZV9uYW1lfS5iaW4gJHtERVBMT1lESVJ9LyR7dHlwZX0KKwkJbG4gLXNmICR7YmFzZV9uYW1lfS5iaW4gJGRlcGxveURpci8ke3N5bWxpbmtfbmFtZX0uYmluCisJCWxuIC1zZiAke2Jhc2VfbmFtZX0uYmluICRkZXBsb3lEaXIvJHt0eXBlfQogCWRvbmUKIAogCWNkICR7Qn0KQEAgLTY1OCw4ICs2OTYsOCBAQAogCQkJZWNobyAiQ29weWluZyBkZXBsb3kgJHt0eXBlfSBrZXJuZWwtaW5pdHJhbWZzIGltYWdlIGFuZCBzZXR0aW5nIHVwIGxpbmtzLi4uIgogCQkJaW5pdHJhbWZzX2Jhc2VfbmFtZT0ke3R5cGV9LSR7SU5JVFJBTUZTX0JBU0VfTkFNRX0KIAkJCWluaXRyYW1mc19zeW1saW5rX25hbWU9JHt0eXBlfS1pbml0cmFtZnMtJHtNQUNISU5FfQotCQkJaW5zdGFsbCAtbSAwNjQ0ICR7S0VSTkVMX09VVFBVVF9ESVJ9LyR7dHlwZX0uaW5pdHJhbWZzICR7REVQTE9ZRElSfS8ke2luaXRyYW1mc19iYXNlX25hbWV9LmJpbgotCQkJbG4gLXNmICR7aW5pdHJhbWZzX2Jhc2VfbmFtZX0uYmluICR7REVQTE9ZRElSfS8ke2luaXRyYW1mc19zeW1saW5rX25hbWV9LmJpbgorCQkJaW5zdGFsbCAtbSAwNjQ0ICR7S0VSTkVMX09VVFBVVF9ESVJ9LyR7dHlwZX0uaW5pdHJhbWZzICRkZXBsb3lEaXIvJHtpbml0cmFtZnNfYmFzZV9uYW1lfS5iaW4KKwkJCWxuIC1zZiAke2luaXRyYW1mc19iYXNlX25hbWV9LmJpbiAkZGVwbG95RGlyLyR7aW5pdHJhbWZzX3N5bWxpbmtfbmFtZX0uYmluCiAJCWZpCiAJZG9uZQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saWJjLXBhY2thZ2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGliYy1wYWNrYWdlLmJiY2xhc3MKaW5kZXggNzM5YWRjZS4uMmU3Y2QyNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saWJjLXBhY2thZ2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpYmMtcGFja2FnZS5iYmNsYXNzCkBAIC0xMTMsOSArMTEzLDkgQEAKICAgICAgICAgYmIuZXJyb3IoImRhdGFkaXIgbm90IGRlZmluZWQiKQogICAgICAgICByZXR1cm4KIAotICAgIGdjb252X2xpYmRpciA9IGJhc2VfcGF0aF9qb2luKGxpYmRpciwgImdjb252IikKLSAgICBjaGFybWFwX2RpciA9IGJhc2VfcGF0aF9qb2luKGRhdGFkaXIsICJpMThuIiwgImNoYXJtYXBzIikKLSAgICBsb2NhbGVzX2RpciA9IGJhc2VfcGF0aF9qb2luKGRhdGFkaXIsICJpMThuIiwgImxvY2FsZXMiKQorICAgIGdjb252X2xpYmRpciA9IG9lLnBhdGguam9pbihsaWJkaXIsICJnY29udiIpCisgICAgY2hhcm1hcF9kaXIgPSBvZS5wYXRoLmpvaW4oZGF0YWRpciwgImkxOG4iLCAiY2hhcm1hcHMiKQorICAgIGxvY2FsZXNfZGlyID0gb2UucGF0aC5qb2luKGRhdGFkaXIsICJpMThuIiwgImxvY2FsZXMiKQogICAgIGJpbmFyeV9sb2NhbGVzX2RpciA9IGQuZ2V0VmFyKCdsb2NhbGVkaXInKQogCiAgICAgZGVmIGNhbGNfZ2NvbnZfZGVwcyhmbiwgcGtnLCBmaWxlX3JlZ2V4LCBvdXRwdXRfcGF0dGVybiwgZ3JvdXApOgpAQCAtMTg5LDcgKzE4OSw3IEBACiAKICAgICAjIFJlYWQgaW4gc3VwcG9ydGVkIGxvY2FsZXMgYW5kIGFzc29jaWF0ZWQgZW5jb2RpbmdzCiAgICAgc3VwcG9ydGVkID0ge30KLSAgICB3aXRoIG9wZW4oYmFzZV9wYXRoX2pvaW4oZC5nZXRWYXIoJ1dPUktESVInKSwgIlNVUFBPUlRFRCIpKSBhcyBmOgorICAgIHdpdGggb3BlbihvZS5wYXRoLmpvaW4oZC5nZXRWYXIoJ1dPUktESVInKSwgIlNVUFBPUlRFRCIpKSBhcyBmOgogICAgICAgICBmb3IgbGluZSBpbiBmLnJlYWRsaW5lcygpOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGxvY2FsZSwgY2hhcnNldCA9IGxpbmUucnN0cmlwKCkuc3BsaXQoKQpAQCAtMjMxLDEyICsyMzEsMTIgQEAKICAgICBjb21tYW5kcyA9IHt9CiAKICAgICBkZWYgb3V0cHV0X2xvY2FsZV9iaW5hcnkobmFtZSwgcGtnbmFtZSwgbG9jYWxlLCBlbmNvZGluZyk6Ci0gICAgICAgIHRyZWVkaXIgPSBiYXNlX3BhdGhfam9pbihkLmdldFZhcigiV09SS0RJUiIpLCAibG9jYWxlLXRyZWUiKQotICAgICAgICBsZGxpYmRpciA9IGJhc2VfcGF0aF9qb2luKHRyZWVkaXIsIGQuZ2V0VmFyKCJiYXNlX2xpYmRpciIpKQorICAgICAgICB0cmVlZGlyID0gb2UucGF0aC5qb2luKGQuZ2V0VmFyKCJXT1JLRElSIiksICJsb2NhbGUtdHJlZSIpCisgICAgICAgIGxkbGliZGlyID0gb2UucGF0aC5qb2luKHRyZWVkaXIsIGQuZ2V0VmFyKCJiYXNlX2xpYmRpciIpKQogICAgICAgICBwYXRoID0gZC5nZXRWYXIoIlBBVEgiKQotICAgICAgICBpMThucGF0aCA9IGJhc2VfcGF0aF9qb2luKHRyZWVkaXIsIGRhdGFkaXIsICJpMThuIikKLSAgICAgICAgZ2NvbnZwYXRoID0gYmFzZV9wYXRoX2pvaW4odHJlZWRpciwgImljb252ZGF0YSIpCi0gICAgICAgIG91dHB1dHBhdGggPSBiYXNlX3BhdGhfam9pbih0cmVlZGlyLCBiaW5hcnlfbG9jYWxlc19kaXIpCisgICAgICAgIGkxOG5wYXRoID0gb2UucGF0aC5qb2luKHRyZWVkaXIsIGRhdGFkaXIsICJpMThuIikKKyAgICAgICAgZ2NvbnZwYXRoID0gb2UucGF0aC5qb2luKHRyZWVkaXIsICJpY29udmRhdGEiKQorICAgICAgICBvdXRwdXRwYXRoID0gb2UucGF0aC5qb2luKHRyZWVkaXIsIGJpbmFyeV9sb2NhbGVzX2RpcikKIAogICAgICAgICB1c2VfY3Jvc3NfbG9jYWxlZGVmID0gZC5nZXRWYXIoIkxPQ0FMRV9HRU5FUkFUSU9OX1dJVEhfQ1JPU1MtTE9DQUxFREVGIikgb3IgIjAiCiAgICAgICAgIGlmIHVzZV9jcm9zc19sb2NhbGVkZWYgPT0gIjEiOgpAQCAtMzQ0LDcgKzM0NCw3IEBACiAgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18lcycgJSBtZXRhcGtnLCAnICcgKyBwa2cpCiAKICAgICBpZiB1c2VfYmluID09ICJjb21waWxlIjoKLSAgICAgICAgbWFrZWZpbGUgPSBiYXNlX3BhdGhfam9pbihkLmdldFZhcigiV09SS0RJUiIpLCAibG9jYWxlLXRyZWUiLCAiTWFrZWZpbGUiKQorICAgICAgICBtYWtlZmlsZSA9IG9lLnBhdGguam9pbihkLmdldFZhcigiV09SS0RJUiIpLCAibG9jYWxlLXRyZWUiLCAiTWFrZWZpbGUiKQogICAgICAgICBtID0gb3BlbihtYWtlZmlsZSwgInciKQogICAgICAgICBtLndyaXRlKCJhbGw6ICVzXG5cbiIgJSAiICIuam9pbihjb21tYW5kcy5rZXlzKCkpKQogICAgICAgICBmb3IgY21kIGluIGNvbW1hbmRzOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saWNlbnNlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2UuYmJjbGFzcwppbmRleCBkMzUzMTEwLi4wNmRkNGE4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2UuYmJjbGFzcwpAQCAtMjI2LDkgKzIyNiw3IEBACiAgICAgIyBUaGUgbWFuaWZlc3QgZmlsZSBuYW1lIGNvbnRhaW5zIHRoZSBhcmNoLiBCZWNhdXNlIHdlIGFyZSBub3QgcnVubmluZwogICAgICMgaW4gdGhlIHJlY2lwZSBjb250ZXh0IGl0IGlzIG5lY2Vzc2FyeSB0byBjaGVjayBldmVyeSBhcmNoIHVzZWQuCiAgICAgc3N0YXRlX21hbmlmZXN0X2RpciA9IGQuZ2V0VmFyKCJTU1RBVEVfTUFOSUZFU1RTIikKLSAgICBzc3RhdGVfYXJjaHMgPSBkLmdldFZhcigiU1NUQVRFX0FSQ0hTIikKLSAgICBleHRyYV9hcmNocyA9IGQuZ2V0VmFyKCJQQUNLQUdFX0VYVFJBX0FSQ0hTIikKLSAgICBhcmNocyA9IGxpc3Qoc2V0KCgiJXMgJXMiICUgKHNzdGF0ZV9hcmNocywgZXh0cmFfYXJjaHMpKS5zcGxpdCgpKSkKKyAgICBhcmNocyA9IGxpc3Qoc2V0KGQuZ2V0VmFyKCJTU1RBVEVfQVJDSFMiKS5zcGxpdCgpKSkKICAgICBmb3IgZGVwIGluIGRlcGVuZHM6CiAgICAgICAgICMgU29tZSByZWNpcGVzIGhhdmUgYW4gYXJjaCBvbiB0aGVpciBvd24sIHNvIHdlIHRyeSB0aGF0IGZpcnN0LgogICAgICAgICBzcGVjaWFsX2FyY2ggPSBkLmdldFZhcigiUEFDS0FHRV9BUkNIX3BuLSVzIiAlIGRlcCkKQEAgLTMzNiw3ICszMzQsNyBAQAogICAgIGZpbGVzID0gZC5nZXRWYXIoJ0xJQ0VOU0VfRklMRVNfRElSRUNUT1JZJykKICAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCiAgICAgcG5fbGljID0gIiVzJXMiICUgKHBuLCBkLmdldFZhcignTElDRU5TRV9QQUNLQUdFX1NVRkZJWCcsIEZhbHNlKSkKLSAgICBpZiBwbl9saWMgaW4gcGFja2FnZXM6CisgICAgaWYgcG5fbGljIGluIHBhY2thZ2VzLnNwbGl0KCk6CiAgICAgICAgIGJiLndhcm4oIiVzIHBhY2thZ2UgYWxyZWFkeSBleGlzdGVkIGluICVzLiIgJSAocG5fbGljLCBwbikpCiAgICAgZWxzZToKICAgICAgICAgIyBmaXJzdCBpbiBQQUNLQUdFUyB0byBiZSBzdXJlIHRoYXQgbm90aGluZyBlbHNlIGdldHMgTElDRU5TRV9GSUxFU19ESVJFQ1RPUlkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGl2ZS12bS1jb21tb24uYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGl2ZS12bS1jb21tb24uYmJjbGFzcwppbmRleCBlMWQ4YjE4Li42ODEwNWQ5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpdmUtdm0tY29tbW9uLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saXZlLXZtLWNvbW1vbi5iYmNsYXNzCkBAIC0zMiwxOSArMzIsMTYgQEAKIGluaGVyaXQgJHtFRklfQ0xBU1N9CiBpbmhlcml0ICR7UENCSU9TX0NMQVNTfQogCi1LRVJORUxfSU1BR0VUWVBFID8/PSAiYnpJbWFnZSIKLVZNX0RFRkFVTFRfS0VSTkVMID8/PSAiJHtLRVJORUxfSU1BR0VUWVBFfSIKLQogcG9wdWxhdGVfa2VybmVsKCkgewogCWRlc3Q9JDEKIAlpbnN0YWxsIC1kICRkZXN0CiAKIAkjIEluc3RhbGwgYnpJbWFnZSwgaW5pdHJkLCBhbmQgcm9vdGZzLmltZyBpbiBERVNUIGZvciBhbGwgbG9hZGVycyB0byB1c2UuCi0JYmJub3RlICJUcnlpbmcgdG8gaW5zdGFsbCAke0RFUExPWV9ESVJfSU1BR0V9LyR7Vk1fREVGQVVMVF9LRVJORUx9IGFzICRkZXN0L3ZtbGludXoiCi0JaWYgWyAtZSAke0RFUExPWV9ESVJfSU1BR0V9LyR7Vk1fREVGQVVMVF9LRVJORUx9IF07IHRoZW4KLQkJaW5zdGFsbCAtbSAwNjQ0ICR7REVQTE9ZX0RJUl9JTUFHRX0vJHtWTV9ERUZBVUxUX0tFUk5FTH0gJGRlc3Qvdm1saW51egorCWJibm90ZSAiVHJ5aW5nIHRvIGluc3RhbGwgJHtERVBMT1lfRElSX0lNQUdFfS8ke0tFUk5FTF9JTUFHRVRZUEV9IGFzICRkZXN0LyR7S0VSTkVMX0lNQUdFVFlQRX0iCisJaWYgWyAtZSAke0RFUExPWV9ESVJfSU1BR0V9LyR7S0VSTkVMX0lNQUdFVFlQRX0gXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA2NDQgJHtERVBMT1lfRElSX0lNQUdFfS8ke0tFUk5FTF9JTUFHRVRZUEV9ICRkZXN0LyR7S0VSTkVMX0lNQUdFVFlQRX0KIAllbHNlCi0JCWJid2FybiAiJHtERVBMT1lfRElSX0lNQUdFfS8ke1ZNX0RFRkFVTFRfS0VSTkVMfSBkb2Vzbid0IGV4aXN0IgorCQliYndhcm4gIiR7REVQTE9ZX0RJUl9JTUFHRX0vJHtLRVJORUxfSU1BR0VUWVBFfSBkb2Vzbid0IGV4aXN0IgogCWZpCiAKIAkjIGluaXRyZCBpcyBtYWRlIG9mIGNvbmNhdGVuYXRpb24gb2YgbXVsdGlwbGUgZmlsZXN5c3RlbSBpbWFnZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbG9nZ2luZy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9sb2dnaW5nLmJiY2xhc3MKaW5kZXggMDZjN2MzMS4uYTBjOTRlOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9sb2dnaW5nLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9sb2dnaW5nLmJiY2xhc3MKQEAgLTg2LDcgKzg2LDcgQEAKIAkKIAkjIFN0cmlwIG9mZiB0aGUgZGVidWcgbGV2ZWwgYW5kIGVuc3VyZSBpdCBpcyBhbiBpbnRlZ2VyCiAJREJHTFZMPSQxOyBzaGlmdAotCU5PTkRJR0lUUz0kKGVjaG8gIiREQkdMVkwiIHwgdHIgLWQgWzpkaWdpdDpdKQorCU5PTkRJR0lUUz0kKGVjaG8gIiREQkdMVkwiIHwgdHIgLWQgIls6ZGlnaXQ6XSIpCiAJaWYgWyAiJE5PTkRJR0lUUyIgXTsgdGhlbgogCQliYmZhdGFsICIkVVNBR0UiCiAJZmkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbWVzb24uYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbWVzb24uYmJjbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDdlZTRmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tZXNvbi5iYmNsYXNzCkBAIC0wLDAgKzEsMTMwIEBACitpbmhlcml0IHB5dGhvbjNuYXRpdmUKKworREVQRU5EU19hcHBlbmQgPSAiIG1lc29uLW5hdGl2ZSBuaW5qYS1uYXRpdmUiCisKKyMgQXMgTWVzb24gZW5mb3JjZXMgb3V0LW9mLXRyZWUgYnVpbGRzIHdlIGNhbiBqdXN0IHVzZSBjbGVhbmRpcnMKK0IgPSAiJHtXT1JLRElSfS9idWlsZCIKK2RvX2NvbmZpZ3VyZVtjbGVhbmRpcnNdID0gIiR7Qn0iCisKKyMgV2hlcmUgdGhlIG1lc29uLmJ1aWxkIGJ1aWxkIGNvbmZpZ3VyYXRpb24gaXMKK01FU09OX1NPVVJDRVBBVEggPSAiJHtTfSIKKworZGVmIG5vcHJlZml4KHZhciwgZCk6CisgICAgcmV0dXJuIGQuZ2V0VmFyKHZhcikucmVwbGFjZShkLmdldFZhcigncHJlZml4JykgKyAnLycsICcnLCAxKQorCitNRVNPTk9QVFMgPSAiIC0tcHJlZml4ICR7cHJlZml4fSBcCisgICAgICAgICAgICAgIC0tYnVpbGR0eXBlIHBsYWluIFwKKyAgICAgICAgICAgICAgLS1iaW5kaXIgJHtAbm9wcmVmaXgoJ2JpbmRpcicsIGQpfSBcCisgICAgICAgICAgICAgIC0tc2JpbmRpciAke0Bub3ByZWZpeCgnc2JpbmRpcicsIGQpfSBcCisgICAgICAgICAgICAgIC0tZGF0YWRpciAke0Bub3ByZWZpeCgnZGF0YWRpcicsIGQpfSBcCisgICAgICAgICAgICAgIC0tbGliZGlyICR7QG5vcHJlZml4KCdsaWJkaXInLCBkKX0gXAorICAgICAgICAgICAgICAtLWxpYmV4ZWNkaXIgJHtAbm9wcmVmaXgoJ2xpYmV4ZWNkaXInLCBkKX0gXAorICAgICAgICAgICAgICAtLWluY2x1ZGVkaXIgJHtAbm9wcmVmaXgoJ2luY2x1ZGVkaXInLCBkKX0gXAorICAgICAgICAgICAgICAtLW1hbmRpciAke0Bub3ByZWZpeCgnbWFuZGlyJywgZCl9IFwKKyAgICAgICAgICAgICAgLS1pbmZvZGlyICR7QG5vcHJlZml4KCdpbmZvZGlyJywgZCl9IFwKKyAgICAgICAgICAgICAgLS1zeXNjb25mZGlyICR7c3lzY29uZmRpcn0gXAorICAgICAgICAgICAgICAtLWxvY2Fsc3RhdGVkaXIgJHtsb2NhbHN0YXRlZGlyfSBcCisgICAgICAgICAgICAgIC0tc2hhcmVkc3RhdGVkaXIgJHtzaGFyZWRzdGF0ZWRpcn0iCisKK01FU09OX1RPT0xDSEFJTl9BUkdTID0gIiR7SE9TVF9DQ19BUkNIfSR7VE9PTENIQUlOX09QVElPTlN9IgorTUVTT05fQ19BUkdTID0gIiR7TUVTT05fVE9PTENIQUlOX0FSR1N9ICR7Q0ZMQUdTfSIKK01FU09OX0NQUF9BUkdTID0gIiR7TUVTT05fVE9PTENIQUlOX0FSR1N9ICR7Q1hYRkxBR1N9IgorTUVTT05fTElOS19BUkdTID0gIiR7TUVTT05fVE9PTENIQUlOX0FSR1N9ICR7TERGTEFHU30iCisKKyMgYm90aCBhcmUgcmVxdWlyZWQgYnV0IG5vdCB1c2VkIGJ5IG1lc29uCitNRVNPTl9IT1NUX0VORElBTiA9ICJib2d1cy1lbmRpYW4iCitNRVNPTl9UQVJHRVRfRU5ESUFOID0gImJvZ3VzLWVuZGlhbiIKKworRVhUUkFfT0VNRVNPTiArPSAiJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSIKKworTUVTT05fQ1JPU1NfRklMRSA9ICIiCitNRVNPTl9DUk9TU19GSUxFX2NsYXNzLXRhcmdldCA9ICItLWNyb3NzLWZpbGUgJHtXT1JLRElSfS9tZXNvbi5jcm9zcyIKK01FU09OX0NST1NTX0ZJTEVfY2xhc3MtbmF0aXZlc2RrID0gIi0tY3Jvc3MtZmlsZSAke1dPUktESVJ9L21lc29uLmNyb3NzIgorCitkZWYgbWVzb25fYXJyYXkodmFyLCBkKToKKyAgICByZXR1cm4gIicsICciLmpvaW4oZC5nZXRWYXIodmFyKS5zcGxpdCgpKS5qb2luKCgiJyIsICInIikpCisKK2FkZHRhc2sgd3JpdGVfY29uZmlnIGJlZm9yZSBkb19jb25maWd1cmUKK2RvX3dyaXRlX2NvbmZpZ1t2YXJkZXBzXSArPSAiTUVTT05fQ19BUkdTIE1FU09OX0NQUF9BUkdTIE1FU09OX0xJTktfQVJHUyBDQyBDWFggTEQgQVIgTk0gU1RSSVAgUkVBREVMRiIKK2RvX3dyaXRlX2NvbmZpZygpIHsKKyAgICAjIFRoaXMgbmVlZHMgdG8gYmUgUHkgdG8gc3BsaXQgdGhlIGFyZ3MgaW50byBzaW5nbGUtZWxlbWVudCBsaXN0cworICAgIGNhdCA+JHtXT1JLRElSfS9tZXNvbi5jcm9zcyA8PEVPRgorW2JpbmFyaWVzXQorYyA9IFske0BtZXNvbl9hcnJheSgnQ0MnLCBkKX1dCitjcHAgPSBbJHtAbWVzb25fYXJyYXkoJ0NYWCcsIGQpfV0KK2FyID0gWyR7QG1lc29uX2FycmF5KCdBUicsIGQpfV0KK25tID0gWyR7QG1lc29uX2FycmF5KCdOTScsIGQpfV0KK2xkID0gWyR7QG1lc29uX2FycmF5KCdMRCcsIGQpfV0KK3N0cmlwID0gWyR7QG1lc29uX2FycmF5KCdTVFJJUCcsIGQpfV0KK3JlYWRlbGYgPSBbJHtAbWVzb25fYXJyYXkoJ1JFQURFTEYnLCBkKX1dCitwa2djb25maWcgPSAncGtnLWNvbmZpZycKKworW3Byb3BlcnRpZXNdCituZWVkc19leGVfd3JhcHBlciA9IHRydWUKK2NfYXJncyA9IFske0BtZXNvbl9hcnJheSgnTUVTT05fQ19BUkdTJywgZCl9XQorY19saW5rX2FyZ3MgPSBbJHtAbWVzb25fYXJyYXkoJ01FU09OX0xJTktfQVJHUycsIGQpfV0KK2NwcF9hcmdzID0gWyR7QG1lc29uX2FycmF5KCdNRVNPTl9DUFBfQVJHUycsIGQpfV0KK2NwcF9saW5rX2FyZ3MgPSBbJHtAbWVzb25fYXJyYXkoJ01FU09OX0xJTktfQVJHUycsIGQpfV0KK2d0a2RvY19leGVfd3JhcHBlciA9ICcke0J9L2d0a2RvYy1xZW11d3JhcHBlcicKKworW2hvc3RfbWFjaGluZV0KK3N5c3RlbSA9ICcke0hPU1RfT1N9JworY3B1X2ZhbWlseSA9ICcke0hPU1RfQVJDSH0nCitjcHUgPSAnJHtIT1NUX0FSQ0h9JworZW5kaWFuID0gJyR7TUVTT05fSE9TVF9FTkRJQU59JworCitbdGFyZ2V0X21hY2hpbmVdCitzeXN0ZW0gPSAnJHtUQVJHRVRfT1N9JworY3B1X2ZhbWlseSA9ICcke1RBUkdFVF9BUkNIfScKK2NwdSA9ICcke1RBUkdFVF9BUkNIfScKK2VuZGlhbiA9ICcke01FU09OX1RBUkdFVF9FTkRJQU59JworRU9GCit9CisKK0NPTkZJR1VSRV9GSUxFUyA9ICJtZXNvbi5idWlsZCIKKworbWVzb25fZG9fY29uZmlndXJlKCkgeworICAgIGlmICEgbWVzb24gJHtNRVNPTk9QVFN9ICIke01FU09OX1NPVVJDRVBBVEh9IiAiJHtCfSIgJHtNRVNPTl9DUk9TU19GSUxFfSAke0VYVFJBX09FTUVTT059OyB0aGVuCisgICAgICAgIGNhdCAke0J9L21lc29uLWxvZ3MvbWVzb24tbG9nLnR4dAorICAgICAgICBiYmZhdGFsX2xvZyBtZXNvbiBmYWlsZWQKKyAgICBmaQorfQorCittZXNvbl9kb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgIyBTZXQgdGhlc2Ugc28gdGhhdCBtZXNvbiB1c2VzIHRoZSBuYXRpdmUgdG9vbHMgZm9yIGl0cyBidWlsZCBzYW5pdHkgdGVzdHMsCisgICAgIyB3aGljaCByZXF1aXJlIGV4ZWN1dGFibGVzIHRvIGJlIHJ1bm5hYmxlLiBUaGUgY3Jvc3MgZmlsZSB3aWxsIHN0aWxsCisgICAgIyBvdmVycmlkZSB0aGVzZSBmb3IgdGhlIHRhcmdldCBidWlsZC4gTm90ZSB0aGF0IHdlIGRvICpub3QqIHNldCBDRkxBR1MsCisgICAgIyBMREZMQUdTLCBldGMuIGFzIHRoZXkgd2lsbCBiZSBzbHVycGVkIGluIGJ5IG1lc29uIGFuZCBhcHBsaWVkIHRvIHRoZQorICAgICMgdGFyZ2V0IGJ1aWxkLCBjYXVzaW5nIGVycm9ycy4KKyAgICBleHBvcnQgQ0M9IiR7QlVJTERfQ0N9IgorICAgIGV4cG9ydCBDWFg9IiR7QlVJTERfQ1hYfSIKKyAgICBleHBvcnQgTEQ9IiR7QlVJTERfTER9IgorICAgIGV4cG9ydCBBUj0iJHtCVUlMRF9BUn0iCit9CisKK21lc29uX2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKyAgICAjIFNldCB0aGVzZSBzbyB0aGF0IG1lc29uIHVzZXMgdGhlIG5hdGl2ZSB0b29scyBmb3IgaXRzIGJ1aWxkIHNhbml0eSB0ZXN0cywKKyAgICAjIHdoaWNoIHJlcXVpcmUgZXhlY3V0YWJsZXMgdG8gYmUgcnVubmFibGUuIFRoZSBjcm9zcyBmaWxlIHdpbGwgc3RpbGwKKyAgICAjIG92ZXJyaWRlIHRoZXNlIGZvciB0aGUgbmF0aXZlc2RrIGJ1aWxkLiBOb3RlIHRoYXQgd2UgZG8gKm5vdCogc2V0IENGTEFHUywKKyAgICAjIExERkxBR1MsIGV0Yy4gYXMgdGhleSB3aWxsIGJlIHNsdXJwZWQgaW4gYnkgbWVzb24gYW5kIGFwcGxpZWQgdG8gdGhlCisgICAgIyBuYXRpdmVzZGsgYnVpbGQsIGNhdXNpbmcgZXJyb3JzLgorICAgIGV4cG9ydCBDQz0iJHtCVUlMRF9DQ30iCisgICAgZXhwb3J0IENYWD0iJHtCVUlMRF9DWFh9IgorICAgIGV4cG9ydCBMRD0iJHtCVUlMRF9MRH0iCisgICAgZXhwb3J0IEFSPSIke0JVSUxEX0FSfSIKK30KKworbWVzb25fZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgIGV4cG9ydCBQS0dfQ09ORklHPSJwa2ctY29uZmlnLW5hdGl2ZSIKK30KKworZG9fY29tcGlsZVtwcm9ncmVzc10gPSAib3V0b2Y6XlxbKFxkKykvKFxkKylcXVxzKyIKK21lc29uX2RvX2NvbXBpbGUoKSB7CisgICAgbmluamEgJHtQQVJBTExFTF9NQUtFfQorfQorCittZXNvbl9kb19pbnN0YWxsKCkgeworICAgIERFU1RESVI9JyR7RH0nIG5pbmphICR7UEFSQUxMRUxfTUFLRUlOU1R9IGluc3RhbGwKK30KKworRVhQT1JUX0ZVTkNUSU9OUyBkb19jb25maWd1cmUgZG9fY29tcGlsZSBkb19pbnN0YWxsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL21pcnJvcnMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbWlycm9ycy5iYmNsYXNzCmluZGV4IDc2NmYxY2IuLmIzMzFhZmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbWlycm9ycy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbWlycm9ycy5iYmNsYXNzCkBAIC02Nyw3ICs2Nyw3IEBACiAjIHdoZXJlIGdpdCBuYXRpdmUgcHJvdG9jb2wgZmV0Y2hlcyBtYXkgZmFpbCBkdWUgdG8gbG9jYWwgZmlyZXdhbGwgcnVsZXMsIGV0Yy4KIAogTUlSUk9SUyArPSAiXAotZ2l0Oi8vYW5vbnNjbS5kZWJpYW4ub3JnLy4qICAgZ2l0Oi8vYW5vbnNjbS5kZWJpYW4ub3JnL2dpdC9QQVRIO3Byb3RvY29sPWh0dHBzIFxuIFwKK2dpdDovL3NhbHNhLmRlYmlhbi5vcmcvLiogICAgIGdpdDovL3NhbHNhLmRlYmlhbi5vcmcvUEFUSDtwcm90b2NvbD1odHRwcyBcbiBcCiBnaXQ6Ly9naXQuZ25vbWUub3JnLy4qICAgICAgICBnaXQ6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9QQVRIO3Byb3RvY29sPWh0dHBzIFxuIFwKIGdpdDovL2dpdC5zYXZhbm5haC5nbnUub3JnLy4qIGdpdDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dpdC9QQVRIO3Byb3RvY29sPWh0dHBzIFxuIFwKIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnLy4qIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2dpdC9QQVRIO3Byb3RvY29sPWh0dHBzIFxuIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbW9kdWxlLWJhc2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbW9kdWxlLWJhc2UuYmJjbGFzcwppbmRleCA2ZmU3N2MwLi4yN2JkNjlmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL21vZHVsZS1iYXNlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tb2R1bGUtYmFzZS5iYmNsYXNzCkBAIC0xLDcgKzEsOCBAQAogaW5oZXJpdCBrZXJuZWwtYXJjaAogCi0jIFRoaXMgaXMgaW5zdGVhZCBvZiBERVBFTkRTID0gInZpcnR1YWwva2VybmVsIgotZG9fY29uZmlndXJlW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19jb21waWxlX2tlcm5lbG1vZHVsZXMiCisjIFdlIGRvIHRoZSBkZXBlbmRlbmN5IHRoaXMgd2F5IGJlY2F1c2UgdGhlIG91dHB1dCBpcyBub3QgcHJlc2VydmVkCisjIGluIHNzdGF0ZSwgc28gd2UgbXVzdCBmb3JjZSBkb19jb21waWxlIHRvIHJ1biAob25jZSkuCitkb19jb25maWd1cmVbZGVwZW5kc10gKz0gIm1ha2UtbW9kLXNjcmlwdHM6ZG9fY29tcGlsZSIKIAogZXhwb3J0IE9TID0gIiR7VEFSR0VUX09TfSIKIGV4cG9ydCBDUk9TU19DT01QSUxFID0gIiR7VEFSR0VUX1BSRUZJWH0iCkBAIC0xMiwxNiArMTMsOSBAQAogIyB3ZSBkaWRuJ3QgcGljayB0aGUgbmFtZS4KIGV4cG9ydCBLQlVJTERfT1VUUFVUID0gIiR7U1RBR0lOR19LRVJORUxfQlVJTERESVJ9IgogCi1leHBvcnQgS0VSTkVMX1ZFUlNJT04gPSAiJHtAYmFzZV9yZWFkX2ZpbGUoJyR7U1RBR0lOR19LRVJORUxfQlVJTERESVJ9L2tlcm5lbC1hYml2ZXJzaW9uJyl9IgorZXhwb3J0IEtFUk5FTF9WRVJTSU9OID0gIiR7QG9lLnV0aWxzLnJlYWRfZmlsZSgnJHtTVEFHSU5HX0tFUk5FTF9CVUlMRERJUn0va2VybmVsLWFiaXZlcnNpb24nKX0iCiBLRVJORUxfT0JKRUNUX1NVRkZJWCA9ICIua28iCiAKICMga2VybmVsIG1vZHVsZXMgYXJlIGdlbmVyYWxseSBtYWNoaW5lIHNwZWNpZmljCiBQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgogCi0jIEZ1bmN0aW9uIHRvIGVuc3VyZSB0aGUga2VybmVsIHNjcmlwdHMgYXJlIGNyZWF0ZWQuIEV4cGVjdGVkIHRvCi0jIGJlIGNhbGxlZCBiZWZvcmUgZG9fY29tcGlsZS4gU2VlIG1vZHVsZS5iYmNsYXNzIGZvciBhbiBleGFtcGxlLgotZG9fbWFrZV9zY3JpcHRzKCkgewotCXVuc2V0IENGTEFHUyBDUFBGTEFHUyBDWFhGTEFHUyBMREZMQUdTIAotCW1ha2UgQ0M9IiR7S0VSTkVMX0NDfSIgTEQ9IiR7S0VSTkVMX0xEfSIgQVI9IiR7S0VSTkVMX0FSfSIgXAotCSAgICAgICAgICAgLUMgJHtTVEFHSU5HX0tFUk5FTF9ESVJ9IE89JHtTVEFHSU5HX0tFUk5FTF9CVUlMRERJUn0gc2NyaXB0cwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tb2R1bGUuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbW9kdWxlLmJiY2xhc3MKaW5kZXggNzhkMWIyMS4uZTM0NDk2MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tb2R1bGUuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL21vZHVsZS5iYmNsYXNzCkBAIC0xLDkgKzEsNSBAQAogaW5oZXJpdCBtb2R1bGUtYmFzZSBrZXJuZWwtbW9kdWxlLXNwbGl0IHBrZ2NvbmZpZwogCi1hZGR0YXNrIG1ha2Vfc2NyaXB0cyBhZnRlciBkb19wcmVwYXJlX3JlY2lwZV9zeXNyb290IGJlZm9yZSBkb19jb25maWd1cmUKLWRvX21ha2Vfc2NyaXB0c1tsb2NrZmlsZXNdID0gIiR7VE1QRElSfS9rZXJuZWwtc2NyaXB0cy5sb2NrIgotZG9fbWFrZV9zY3JpcHRzW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19zaGFyZWRfd29ya2RpciIKLQogRVhUUkFfT0VNQUtFICs9ICJLRVJORUxfU1JDPSR7U1RBR0lOR19LRVJORUxfRElSfSIKIAogTU9EVUxFU19JTlNUQUxMX1RBUkdFVCA/PSAibW9kdWxlc19pbnN0YWxsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYi5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYi5iYmNsYXNzCmluZGV4IDgxNmY1NGUuLjUxOWMxYTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbXVsdGlsaWIuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL211bHRpbGliLmJiY2xhc3MKQEAgLTExLDggKzExLDggQEAKICAgICAjIFRoZXJlIHNob3VsZCBvbmx5IGJlIG9uZSBrZXJuZWwgaW4gbXVsdGlsaWIgY29uZmlncwogICAgICMgV2UgYWxzbyBza2lwIG11bHRpbGliIHNldHVwIGZvciBtb2R1bGUgcGFja2FnZXMuCiAgICAgcHJvdmlkZXMgPSAoZS5kYXRhLmdldFZhcigiUFJPVklERVMiKSBvciAiIikuc3BsaXQoKQotICAgIGlmICJ2aXJ0dWFsL2tlcm5lbCIgaW4gcHJvdmlkZXMgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbW9kdWxlLWJhc2UnLCBlLmRhdGEpOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiV2Ugc2hvdWxkbid0IGhhdmUgbXVsdGlsaWIgdmFyaWFudHMgZm9yIHRoZSBrZXJuZWwiKQorICAgIGlmICJ2aXJ0dWFsL2tlcm5lbCIgaW4gcHJvdmlkZXMgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbW9kdWxlLWJhc2UnLCBlLmRhdGEpIG9yICJtYWtlLW1vZC1zY3JpcHRzIiBpbiBlLmRhdGEuZ2V0VmFyKCJQTiIpOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJXZSBzaG91bGRuJ3QgaGF2ZSBtdWx0aWxpYiB2YXJpYW50cyBmb3IgdGhlIGtlcm5lbCIpCiAKICAgICBzYXZlX3Zhcl9uYW1lPWUuZGF0YS5nZXRWYXIoIk1VTFRJTElCX1NBVkVfVkFSTkFNRSIpIG9yICIiCiAgICAgZm9yIG5hbWUgaW4gc2F2ZV92YXJfbmFtZS5zcGxpdCgpOgpAQCAtNDEsMTMgKzQxLDEzIEBACiAgICAgICAgIHJldHVybgogCiAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlJywgZS5kYXRhKToKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIldlIGNhbid0IGV4dGVuZCBuYXRpdmUgcmVjaXBlcyIpCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIldlIGNhbid0IGV4dGVuZCBuYXRpdmUgcmVjaXBlcyIpCiAKICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCduYXRpdmVzZGsnLCBlLmRhdGEpIG9yIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2Nyb3Nzc2RrJywgZS5kYXRhKToKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIldlIGNhbid0IGV4dGVuZCBuYXRpdmVzZGsgcmVjaXBlcyIpCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIldlIGNhbid0IGV4dGVuZCBuYXRpdmVzZGsgcmVjaXBlcyIpCiAKICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdhbGxhcmNoJywgZS5kYXRhKSBhbmQgbm90IGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ3BhY2thZ2Vncm91cCcsIGUuZGF0YSk6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJEb24ndCBleHRlbmQgYWxsYXJjaCByZWNpcGVzIHdoaWNoIGFyZSBub3QgcGFja2FnZWdyb3VwcyIpCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIkRvbid0IGV4dGVuZCBhbGxhcmNoIHJlY2lwZXMgd2hpY2ggYXJlIG5vdCBwYWNrYWdlZ3JvdXBzIikKIAogCiAgICAgIyBFeHBhbmQgdGhpcyBzaW5jZSB0aGlzIHdvbid0IHdvcmsgY29ycmVjdGx5IG9uY2Ugd2Ugc2V0IGEgbXVsdGlsaWIgaW50byBwbGFjZQpAQCAtNzYsNyArNzYsNiBAQAogICAgIG5ld3R1bmUgPSBlLmRhdGEuZ2V0VmFyKCJERUZBVUxUVFVORV8iICsgInZpcnRjbGFzcy1tdWx0aWxpYi0iICsgdmFyaWFudCwgRmFsc2UpCiAgICAgaWYgbmV3dHVuZToKICAgICAgICAgZS5kYXRhLnNldFZhcigiREVGQVVMVFRVTkUiLCBuZXd0dW5lKQotICAgICAgICBlLmRhdGEuc2V0VmFyKCdERUZBVUxUVFVORV9NTF8lcycgJSB2YXJpYW50LCBuZXd0dW5lKQogfQogCiBhZGRoYW5kbGVyIG11bHRpbGliX3ZpcnRjbGFzc19oYW5kbGVyCkBAIC0xMDAsOCArOTksOCBAQAogICAgICAgICBkLnNldFZhcigiTElOR1VBU19JTlNUQUxMIiwgIiIpCiAgICAgICAgICMgRklYTUUsIHdlIG5lZWQgdG8gbWFwIHRoaXMgdG8gc29tZXRoaW5nLCBub3QgZGVsZXRlIGl0IQogICAgICAgICBkLnNldFZhcigiUEFDS0FHRV9JTlNUQUxMX0FUVEVNUFRPTkxZIiwgIiIpCi0KLSAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdpbWFnZScsIGQpOgorICAgICAgICBiYi5idWlsZC5kZWx0YXNrKCdkb19wb3B1bGF0ZV9zZGsnLCBkKQorICAgICAgICBiYi5idWlsZC5kZWx0YXNrKCdkb19wb3B1bGF0ZV9zZGtfZXh0JywgZCkKICAgICAgICAgcmV0dXJuCiAKICAgICBjbHNleHRlbmQubWFwX2RlcGVuZHNfdmFyaWFibGUoIkRFUEVORFMiKQpAQCAtMTE1LDcgKzExNCw2IEBACiAKICAgICBjbHNleHRlbmQubWFwX3BhY2thZ2V2YXJzKCkKICAgICBjbHNleHRlbmQubWFwX3JlZ2V4cF92YXJpYWJsZSgiUEFDS0FHRVNfRFlOQU1JQyIpCi0gICAgY2xzZXh0ZW5kLm1hcF92YXJpYWJsZSgiUEFDS0FHRV9JTlNUQUxMIikKICAgICBjbHNleHRlbmQubWFwX3ZhcmlhYmxlKCJJTklUU0NSSVBUX1BBQ0tBR0VTIikKICAgICBjbHNleHRlbmQubWFwX3ZhcmlhYmxlKCJVU0VSQUREX1BBQ0tBR0VTIikKICAgICBjbHNleHRlbmQubWFwX3ZhcmlhYmxlKCJTWVNURU1EX1BBQ0tBR0VTIikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbXVsdGlsaWJfZ2xvYmFsLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL211bHRpbGliX2dsb2JhbC5iYmNsYXNzCmluZGV4IGZkMGJmZTEuLmQyZWMxYWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbXVsdGlsaWJfZ2xvYmFsLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYl9nbG9iYWwuYmJjbGFzcwpAQCAtMTMsMTEgKzEzLDE0IEBACiAKICAgICB2ZXJzaW9ucyA9IFtdCiAgICAgcHJvdmlkZXJzID0gW10KKyAgICBycHJvdmlkZXJzID0gW10KICAgICBmb3IgdiBpbiBkLmtleXMoKToKICAgICAgICAgaWYgdi5zdGFydHN3aXRoKCJQUkVGRVJSRURfVkVSU0lPTl8iKToKICAgICAgICAgICAgIHZlcnNpb25zLmFwcGVuZCh2KQogICAgICAgICBpZiB2LnN0YXJ0c3dpdGgoIlBSRUZFUlJFRF9QUk9WSURFUl8iKToKICAgICAgICAgICAgIHByb3ZpZGVycy5hcHBlbmQodikKKyAgICAgICAgaWYgdi5zdGFydHN3aXRoKCJQUkVGRVJSRURfUlBST1ZJREVSXyIpOgorICAgICAgICAgICAgcnByb3ZpZGVycy5hcHBlbmQodikKIAogICAgIGZvciB2IGluIHZlcnNpb25zOgogICAgICAgICB2YWwgPSBkLmdldFZhcih2LCBGYWxzZSkKQEAgLTkxLDYgKzk0LDI5IEBACiAgICAgICAgIGlmIHByb3YgIT0gcHJvdmV4cCBhbmQgZC5nZXRWYXIocHJvdiwgRmFsc2UpOgogICAgICAgICAgICAgZC5yZW5hbWVWYXIocHJvdiwgcHJvdmV4cCkKIAorICAgIGZvciBwcm92IGluIHJwcm92aWRlcnM6CisgICAgICAgIHZhbCA9IGQuZ2V0VmFyKHByb3YsIEZhbHNlKQorICAgICAgICBwa2cgPSBwcm92LnJlcGxhY2UoIlBSRUZFUlJFRF9SUFJPVklERVJfIiwgIiIpCisgICAgICAgIGZvciBwIGluIHByZWZpeGVzOgorICAgICAgICAgICAgbmV3dmFsID0gcCArICItIiArIHZhbAorCisgICAgICAgICAgICAjIGltcGxlbWVudCB2YXJpYWJsZSBrZXlzCisgICAgICAgICAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKKyAgICAgICAgICAgIG92ZXJyaWRlID0gIjp2aXJ0Y2xhc3MtbXVsdGlsaWItIiArIHAKKyAgICAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoIk9WRVJSSURFUyIsIGxvY2FsZGF0YS5nZXRWYXIoIk9WRVJSSURFUyIsIEZhbHNlKSArIG92ZXJyaWRlKQorICAgICAgICAgICAgbmV3bmFtZSA9IGxvY2FsZGF0YS5leHBhbmQocHJvdikKKyAgICAgICAgICAgIGlmIG5ld25hbWUgIT0gcHJvdiBhbmQgbm90IGQuZ2V0VmFyKG5ld25hbWUsIEZhbHNlKToKKyAgICAgICAgICAgICAgICBkLnNldFZhcihuZXduYW1lLCBsb2NhbGRhdGEuZXhwYW5kKG5ld3ZhbCkpCisKKyAgICAgICAgICAgICMgaW1wbGVtZW50IGFsdGVybmF0aXZlIG11bHRpbGliIG5hbWUKKyAgICAgICAgICAgIG5ld25hbWUgPSBsb2NhbGRhdGEuZXhwYW5kKCJQUkVGRVJSRURfUlBST1ZJREVSXyIgKyBwICsgIi0iICsgcGtnKQorICAgICAgICAgICAgaWYgbm90IGQuZ2V0VmFyKG5ld25hbWUsIEZhbHNlKSBhbmQgbmV3dmFsICE9IE5vbmU6CisgICAgICAgICAgICAgICAgZC5zZXRWYXIobmV3bmFtZSwgbG9jYWxkYXRhLmV4cGFuZChuZXd2YWwpKQorICAgICAgICAjIEF2b2lkIGZ1dHVyZSB2YXJpYWJsZSBrZXkgZXhwYW5zaW9uCisgICAgICAgIHByb3ZleHAgPSBkLmV4cGFuZChwcm92KQorICAgICAgICBpZiBwcm92ICE9IHByb3ZleHAgYW5kIGQuZ2V0VmFyKHByb3YsIEZhbHNlKToKKyAgICAgICAgICAgIGQucmVuYW1lVmFyKHByb3YsIHByb3ZleHApCisKICAgICBkZWYgdHJhbnNsYXRlX3Byb3ZpZGUocHJlZml4LCBwcm92KToKICAgICAgICAgaWYgbm90IHByb3Yuc3RhcnRzd2l0aCgidmlydHVhbC8iKToKICAgICAgICAgICAgIHJldHVybiBwcmVmaXggKyAiLSIgKyBwcm92CkBAIC0xNjIsNyArMTg4LDcgQEAKICAgICAgICAgICAgIGlmIHJwcm92cy5zdHJpcCgpOgogICAgICAgICAgICAgICAgIGUuZGF0YS5zZXRWYXIoIlJQUk9WSURFUyIsIHJwcm92cykKIAotCSAgICAjIFByb2Nlc3MgUlBST1ZJREVTXyR7UE59Li4uCisgICAgICAgICAgICAjIFByb2Nlc3MgUlBST1ZJREVTXyR7UE59Li4uCiAgICAgICAgICAgICBmb3IgcGtnIGluIChlLmRhdGEuZ2V0VmFyKCJQQUNLQUdFUyIpIG9yICIiKS5zcGxpdCgpOgogICAgICAgICAgICAgICAgIG9yaWdycHJvdnMgPSBycHJvdnMgPSBlLmRhdGEuZ2V0VmFyKCJSUFJPVklERVNfJXMiICUgcGtnKSBvciAiIgogICAgICAgICAgICAgICAgIGZvciBjbHNleHRlbmQgaW4gY2xzZXh0ZW5kczoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL25hdGl2ZS5iYmNsYXNzCmluZGV4IDljNDM0ZGMuLmE5MTFmMmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9uYXRpdmUuYmJjbGFzcwpAQCAtNTIsOCArNTIsNiBAQAogIyBuYXRpdmUgcGtnIGRvZXNuJ3QgbmVlZCB0aGUgVE9PTENIQUlOX09QVElPTlMuCiBUT09MQ0hBSU5fT1BUSU9OUyA9ICIiCiAKLURFUEVORFNfR0VUVEVYVCA9ICJnZXR0ZXh0LW5hdGl2ZSIKLQogIyBEb24ndCBidWlsZCBwdGVzdCBuYXRpdmVseQogUFRFU1RfRU5BQkxFRCA9ICIwIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL25wbS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ucG0uYmJjbGFzcwppbmRleCBhNjliZWRiLi5jMzUxZmYwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL25wbS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbnBtLmJiY2xhc3MKQEAgLTIsNyArMiwxNSBAQAogUkRFUEVORFNfJHtQTn1fcHJlcGVuZCA9ICJub2RlanMgIgogUyA9ICIke1dPUktESVJ9L25wbXBrZyIKIAotTlBNX0lOU1RBTExESVIgPSAiJHtEfSR7bGliZGlyfS9ub2RlX21vZHVsZXMvJHtQTn0iCitkZWYgbm9kZV9wa2duYW1lKGQpOgorICAgIGJwbiA9IGQuZ2V0VmFyKCdCUE4nKQorICAgIGlmIGJwbi5zdGFydHN3aXRoKCJub2RlLSIpOgorICAgICAgICByZXR1cm4gYnBuWzU6XQorICAgIHJldHVybiBicG4KKworTlBNUE4gPz0gIiR7QG5vZGVfcGtnbmFtZShkKX0iCisKK05QTV9JTlNUQUxMRElSID0gIiR7RH0ke2xpYmRpcn0vbm9kZV9tb2R1bGVzLyR7TlBNUE59IgogCiAjIGZ1bmN0aW9uIG1hcHMgYXJjaCBuYW1lcyB0byBucG0gYXJjaCBuYW1lcwogZGVmIG5wbV9vZV9hcmNoX21hcCh0YXJnZXRfYXJjaCwgZCk6CkBAIC0zMSw3ICszOSw3IEBACiAJZmkKIAlucG0gc2V0IGNhY2hlICR7V09SS0RJUn0vbnBtX2NhY2hlCiAJIyBjbGVhciBjYWNoZSBiZWZvcmUgZXZlcnkgYnVpbGQKLQlucG0gY2FjaGUgY2xlYXIKKwlucG0gY2FjaGUgY2xlYXIgLS1mb3JjZQogCSMgSW5zdGFsbCBwa2cgaW50byAke1N9IHdpdGhvdXQgZ29pbmcgdG8gdGhlIHJlZ2lzdHJ5CiAJaWYgWyAgIiR7TlBNX0lOU1RBTExfREVWfSIgPSAiMSIgXTsgdGhlbgogCQlucG0gLS1hcmNoPSR7TlBNX0FSQ0h9IC0tdGFyZ2V0X2FyY2g9JHtOUE1fQVJDSH0gLS1uby1yZWdpc3RyeSBpbnN0YWxsCkBAIC00NSw3ICs1Myw4IEBACiAJIyBiZSBjcmVhdGVkIGluIHRoaXMgZGlyZWN0b3J5CiAJZXhwb3J0IEhPTUU9JHtXT1JLRElSfQogCW1rZGlyIC1wICR7TlBNX0lOU1RBTExESVJ9LwotCW5wbSBpbnN0YWxsIC0tcHJlZml4ICR7RH0ke3ByZWZpeH0gLWcgLS1hcmNoPSR7TlBNX0FSQ0h9IC0tdGFyZ2V0X2FyY2g9JHtOUE1fQVJDSH0gLS1wcm9kdWN0aW9uIC0tbm8tcmVnaXN0cnkKKwlucG0gcGFjayAuCisJbnBtIGluc3RhbGwgLS1wcmVmaXggJHtEfSR7cHJlZml4fSAtZyAtLWFyY2g9JHtOUE1fQVJDSH0gLS10YXJnZXRfYXJjaD0ke05QTV9BUkNIfSAtLXByb2R1Y3Rpb24gLS1uby1yZWdpc3RyeSAke05QTVBOfS0ke1BWfS50Z3oKIAlpZiBbIC1kICR7RH0ke3ByZWZpeH0vZXRjIF0gOyB0aGVuCiAJCSMgVGhpcyB3aWxsIGJlIGVtcHR5CiAJCXJtZGlyICR7RH0ke3ByZWZpeH0vZXRjCkBAIC01MywxMyArNjIsMTMgQEAKIH0KIAogcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGluc3RkaXIgPSBkLmV4cGFuZCgnJHtEfSR7bGliZGlyfS9ub2RlX21vZHVsZXMvJHtQTn0nKQorICAgIGluc3RkaXIgPSBkLmV4cGFuZCgnJHtEfSR7bGliZGlyfS9ub2RlX21vZHVsZXMvJHtOUE1QTn0nKQogICAgIGV4dHJhcGFja2FnZXMgPSBvZS5wYWNrYWdlLm5wbV9zcGxpdF9wYWNrYWdlX2RpcnMoaW5zdGRpcikKICAgICBwa2duYW1lcyA9IGV4dHJhcGFja2FnZXMua2V5cygpCiAgICAgZC5wcmVwZW5kVmFyKCdQQUNLQUdFUycsICclcyAnICUgJyAnLmpvaW4ocGtnbmFtZXMpKQogICAgIGZvciBwa2duYW1lIGluIHBrZ25hbWVzOgogICAgICAgICBwa2dyZWxwYXRoLCBwZGF0YSA9IGV4dHJhcGFja2FnZXNbcGtnbmFtZV0KLSAgICAgICAgcGtncGF0aCA9ICcke2xpYmRpcn0vbm9kZV9tb2R1bGVzLyR7UE59LycgKyBwa2dyZWxwYXRoCisgICAgICAgIHBrZ3BhdGggPSAnJHtsaWJkaXJ9L25vZGVfbW9kdWxlcy8ke05QTVBOfS8nICsgcGtncmVscGF0aAogICAgICAgICAjIHBhY2thZ2UgbmFtZXMgY2FuJ3QgaGF2ZSB1bmRlcnNjb3JlcyBidXQgbnBtIHBhY2thZ2VzIHNvbWV0aW1lcyB1c2UgdGhlbQogICAgICAgICBvZV9wa2dfbmFtZSA9IHBrZ25hbWUucmVwbGFjZSgnXycsICctJykKICAgICAgICAgZXhwYW5kZWRfcGtnbmFtZSA9IGQuZXhwYW5kKG9lX3BrZ19uYW1lKQpAQCAtNzUsNyArODQsNyBAQAogfQogCiBGSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2xpYmRpcn0vbm9kZV9tb2R1bGVzLyR7UE59IFwKKyAgICAke2xpYmRpcn0vbm9kZV9tb2R1bGVzLyR7TlBNUE59IFwKICIKIAogRVhQT1JUX0ZVTkNUSU9OUyBkb19jb21waWxlIGRvX2luc3RhbGwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MKaW5kZXggMjA1M2Q0Ni4uZWRlZmZhOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MKQEAgLTI2LDcgKzI2LDcgQEAKICMgICAgYSBsaXN0IG9mIGFmZmVjdGVkIGZpbGVzIGluIEZJTEVSe1BST1ZJREVTLERFUEVORFN9RkxJU1RfcGtnCiAjCiAjIGgpIHBhY2thZ2VfZG9fc2hsaWJzIC0gTG9vayBhdCB0aGUgc2hhcmVkIGxpYnJhcmllcyBnZW5lcmF0ZWQgYW5kIGF1dG90bWF0aWNhbGx5IGFkZCBhbnkKLSMgICAgZGVwZW5lZGVuY2llcyBmb3VuZC4gQWxzbyBzdG9yZXMgdGhlIHBhY2thZ2UgbmFtZSBzbyBhbnlvbmUgZWxzZSB1c2luZyB0aGlzIGxpYnJhcnkKKyMgICAgZGVwZW5kZW5jaWVzIGZvdW5kLiBBbHNvIHN0b3JlcyB0aGUgcGFja2FnZSBuYW1lIHNvIGFueW9uZSBlbHNlIHVzaW5nIHRoaXMgbGlicmFyeQogIyAgICBrbm93cyB3aGljaCBwYWNrYWdlIHRvIGRlcGVuZCBvbi4KICMKICMgaSkgcGFja2FnZV9kb19wa2djb25maWcgLSBLZWVwIHRyYWNrIG9mIHdoaWNoIHBhY2thZ2VzIG5lZWQgYW5kIHByb3ZpZGUgd2hpY2ggLnBjIGZpbGVzCkBAIC01Miw3ICs1Miw4IEBACiBBTExfTVVMVElMSUJfUEFDS0FHRV9BUkNIUyA9ICIke0BhbGxfbXVsdGlsaWJfdHVuZV92YWx1ZXMoZCwgJ1BBQ0tBR0VfQVJDSFMnKX0iCiAKICMgcnBtIGlzIHVzZWQgZm9yIHRoZSBwZXItZmlsZSBkZXBlbmRlbmN5IGlkZW50aWZpY2F0aW9uCi1QQUNLQUdFX0RFUEVORFMgKz0gInJwbS1uYXRpdmUiCisjIGR3YXJmc3JjZmlsZXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGxpc3Qgb2YgZGVidWcgc291cmNlIGZpbGVzCitQQUNLQUdFX0RFUEVORFMgKz0gInJwbS1uYXRpdmUgZHdhcmZzcmNmaWxlcy1uYXRpdmUiCiAKIAogIyBJZiB5b3VyIHBvc3RpbnN0YWxsIGNhbiBleGVjdXRlIGF0IHJvb3RmcyBjcmVhdGlvbiB0aW1lIHJhdGhlciB0aGFuIG9uCkBAIC0zMzQsNiArMzM1LDMzIEBACiAKICAgICByZXR1cm4gRmFsc2UKIAorZGVmIHBhcnNlX2RlYnVnc291cmNlc19mcm9tX2R3YXJmc3JjZmlsZXNfb3V0cHV0KGR3YXJmc3JjZmlsZXNfb3V0cHV0KToKKyAgICBkZWJ1Z2ZpbGVzID0ge30KKworICAgIGZvciBsaW5lIGluIGR3YXJmc3JjZmlsZXNfb3V0cHV0LnNwbGl0bGluZXMoKToKKyAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJcdCIpOgorICAgICAgICAgICAgZGVidWdmaWxlc1tvcy5wYXRoLm5vcm1wYXRoKGxpbmUuc3BsaXQoKVswXSldID0gIiIKKworICAgIHJldHVybiBkZWJ1Z2ZpbGVzLmtleXMoKQorCitkZWYgYXBwZW5kX3NvdXJjZV9pbmZvKGZpbGUsIHNvdXJjZWZpbGUsIGQsIGZhdGFsPVRydWUpOgorICAgIGNtZCA9ICInZHdhcmZzcmNmaWxlcycgJyVzJyIgJSAoZmlsZSkKKyAgICAocmV0dmFsLCBvdXRwdXQpID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KGNtZCkKKyAgICAjIDI1NSBtZWFucyBhIHNwZWNpZmljIGZpbGUgd2Fzbid0IGZ1bGx5IHBhcnNlZCB0byBnZXQgdGhlIGRlYnVnIGZpbGUgbGlzdCwgd2hpY2ggaXMgbm90IGEgZmF0YWwgZmFpbHVyZQorICAgIGlmIHJldHZhbCAhPSAwIGFuZCByZXR2YWwgIT0gMjU1OgorICAgICAgICBtc2cgPSAiZHdhcmZzcmNmaWxlcyBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJXMgKGNtZCB3YXMgJXMpJXMiICUgKHJldHZhbCwgY21kLCAiOlxuJXMiICUgb3V0cHV0IGlmIG91dHB1dCBlbHNlICIiKQorICAgICAgICBpZiBmYXRhbDoKKyAgICAgICAgICAgIGJiLmZhdGFsKG1zZykKKyAgICAgICAgYmIubm90ZShtc2cpCisKKyAgICBkZWJ1Z3NvdXJjZXMgPSBwYXJzZV9kZWJ1Z3NvdXJjZXNfZnJvbV9kd2FyZnNyY2ZpbGVzX291dHB1dChvdXRwdXQpCisgICAgIyBmaWxlbmFtZXMgYXJlIG51bGwtc2VwYXJhdGVkIC0gdGhpcyBpcyBhbiBhcnRlZmFjdCBvZiB0aGUgcHJldmlvdXMgdXNlCisgICAgIyBvZiBycG0ncyBkZWJ1Z2VkaXQsIHdoaWNoIHdhcyB3cml0aW5nIHRoZW0gb3V0IHRoYXQgd2F5LCBhbmQgdGhlIGNvZGUgZWxzZXdoZXJlCisgICAgIyBpcyBzdGlsbCBhc3N1bWluZyB0aGF0LgorICAgIGRlYnVnbGlzdG91dHB1dCA9ICdcMCcuam9pbihkZWJ1Z3NvdXJjZXMpICsgJ1wwJworICAgIG9wZW4oc291cmNlZmlsZSwgJ2EnKS53cml0ZShkZWJ1Z2xpc3RvdXRwdXQpCisKKwogZGVmIHNwbGl0ZGVidWdpbmZvKGZpbGUsIGRlYnVnZmlsZSwgZGVidWdzcmNkaXIsIHNvdXJjZWZpbGUsIGQpOgogICAgICMgRnVuY3Rpb24gdG8gc3BsaXQgYSBzaW5nbGUgZmlsZSBpbnRvIHR3byBjb21wb25lbnRzLCBvbmUgaXMgdGhlIHN0cmlwcGVkCiAgICAgIyB0YXJnZXQgc3lzdGVtIGJpbmFyeSwgdGhlIG90aGVyIGNvbnRhaW5zIGFueSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24uIFRoZQpAQCAtMzQ1LDcgKzM3Myw2IEBACiAKICAgICBkdmFyID0gZC5nZXRWYXIoJ1BLR0QnKQogICAgIG9iamNvcHkgPSBkLmdldFZhcigiT0JKQ09QWSIpCi0gICAgZGVidWdlZGl0ID0gZC5leHBhbmQoIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9ycG0vZGVidWdlZGl0IikKIAogICAgICMgV2UgaWdub3JlIGtlcm5lbCBtb2R1bGVzLCB3ZSBkb24ndCBnZW5lcmF0ZSBkZWJ1ZyBpbmZvIGZpbGVzLgogICAgIGlmIGZpbGUuZmluZCgiL2xpYi9tb2R1bGVzLyIpICE9IC0xIGFuZCBmaWxlLmVuZHN3aXRoKCIua28iKToKQEAgLTM1OSwxMCArMzg2LDcgQEAKIAogICAgICMgV2UgbmVlZCB0byBleHRyYWN0IHRoZSBkZWJ1ZyBzcmMgaW5mb3JtYXRpb24gaGVyZS4uLgogICAgIGlmIGRlYnVnc3JjZGlyOgotICAgICAgICBjbWQgPSAiJyVzJyAtaSAtbCAnJXMnICclcyciICUgKGRlYnVnZWRpdCwgc291cmNlZmlsZSwgZmlsZSkKLSAgICAgICAgKHJldHZhbCwgb3V0cHV0KSA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dChjbWQpCi0gICAgICAgIGlmIHJldHZhbDoKLSAgICAgICAgICAgIGJiLmZhdGFsKCJkZWJ1Z2VkaXQgZmFpbGVkIHdpdGggZXhpdCBjb2RlICVzIChjbWQgd2FzICVzKSVzIiAlIChyZXR2YWwsIGNtZCwgIjpcbiVzIiAlIG91dHB1dCBpZiBvdXRwdXQgZWxzZSAiIikpCisgICAgICAgIGFwcGVuZF9zb3VyY2VfaW5mbyhmaWxlLCBzb3VyY2VmaWxlLCBkKQogCiAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShkZWJ1Z2ZpbGUpKQogCkBAIC0zODMsNyArNDA3LDcgQEAKICAgICByZXR1cm4gMAogCiBkZWYgY29weWRlYnVnc291cmNlcyhkZWJ1Z3NyY2RpciwgZCk6Ci0gICAgIyBUaGUgZGVidWcgc3JjIGluZm9ybWF0aW9uIHdyaXR0ZW4gb3V0IHRvIHNvdXJjZWZpbGUgaXMgZnVydGhlciBwcm9jZWNlc3NlZAorICAgICMgVGhlIGRlYnVnIHNyYyBpbmZvcm1hdGlvbiB3cml0dGVuIG91dCB0byBzb3VyY2VmaWxlIGlzIGZ1cnRoZXIgcHJvY2Vzc2VkCiAgICAgIyBhbmQgY29waWVkIHRvIHRoZSBkZXN0aW5hdGlvbiBoZXJlLgogCiAgICAgaW1wb3J0IHN0YXQKQEAgLTM5Myw3ICs0MTcsNiBAQAogICAgICAgICBkdmFyID0gZC5nZXRWYXIoJ1BLR0QnKQogICAgICAgICBzdHJpcCA9IGQuZ2V0VmFyKCJTVFJJUCIpCiAgICAgICAgIG9iamNvcHkgPSBkLmdldFZhcigiT0JKQ09QWSIpCi0gICAgICAgIGRlYnVnZWRpdCA9IGQuZXhwYW5kKCIke1NUQUdJTkdfTElCRElSX05BVElWRX0vcnBtL2Jpbi9kZWJ1Z2VkaXQiKQogICAgICAgICB3b3JrZGlyID0gZC5nZXRWYXIoIldPUktESVIiKQogICAgICAgICB3b3JrcGFyZW50ZGlyID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZSh3b3JrZGlyKSkKICAgICAgICAgd29ya2Jhc2VkaXIgPSBvcy5wYXRoLmJhc2VuYW1lKG9zLnBhdGguZGlybmFtZSh3b3JrZGlyKSkgKyAiLyIgKyBvcy5wYXRoLmJhc2VuYW1lKHdvcmtkaXIpCkBAIC02MzMsNyArNjU2LDcgQEAKICAgICAjIF9fc3RyX18gY2FuIGJlIHVzZWQgdG8gcHJpbnQgb3V0IGFuIGVudHJ5IGluIHRoZSBpbnB1dCBmb3JtYXQKICAgICAjCiAgICAgIyBpZiBmc19wZXJtc19lbnRyeS5wYXRoIGlzIE5vbmU6Ci0gICAgIyAgICBhbiBlcnJvciBvY2N1cmVkCisgICAgIyAgICBhbiBlcnJvciBvY2N1cnJlZAogICAgICMgaWYgZnNfcGVybXNfZW50cnkubGluaywgeW91IGNhbiByZXRyaWV2ZToKICAgICAjICAgIGZzX3Blcm1zX2VudHJ5LnBhdGggPSBwYXRoCiAgICAgIyAgICBmc19wZXJtc19lbnRyeS5saW5rID0gdGFyZ2V0IG9mIGxpbmsKQEAgLTg2MCw2ICs4ODMsNyBAQAogCiAgICAgZHZhciA9IGQuZ2V0VmFyKCdQS0dEJykKICAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCisgICAgdGFyZ2V0b3MgPSBkLmdldFZhcignVEFSR0VUX09TJykKIAogICAgIG9sZGN3ZCA9IG9zLmdldGN3ZCgpCiAgICAgb3MuY2hkaXIoZHZhcikKQEAgLTkwMSw3ICs5MjUsNyBAQAogICAgICMgMTYgLSBrZXJuZWwgbW9kdWxlCiAgICAgZGVmIGlzRUxGKHBhdGgpOgogICAgICAgICB0eXBlID0gMAotICAgICAgICByZXQsIHJlc3VsdCA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dCgiZmlsZSBcIiVzXCIiICUgcGF0aC5yZXBsYWNlKCJcIiIsICJcXFwiIikpCisgICAgICAgIHJldCwgcmVzdWx0ID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KCJmaWxlIC1iICclcyciICUgcGF0aCkKIAogICAgICAgICBpZiByZXQ6CiAgICAgICAgICAgICBtc2cgPSAic3BsaXRfYW5kX3N0cmlwX2ZpbGVzOiAnZmlsZSAlcycgZmFpbGVkIiAlIHBhdGgKQEAgLTkxOSw2ICs5NDMsMTUgQEAKICAgICAgICAgICAgICAgICB0eXBlIHw9IDgKICAgICAgICAgcmV0dXJuIHR5cGUKIAorICAgIGRlZiBpc1N0YXRpY0xpYihwYXRoKToKKyAgICAgICAgaWYgcGF0aC5lbmRzd2l0aCgnLmEnKSBhbmQgbm90IG9zLnBhdGguaXNsaW5rKHBhdGgpOgorICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICdyYicpIGFzIGZoOgorICAgICAgICAgICAgICAgICMgVGhlIG1hZ2ljIG11c3QgaW5jbHVkZSB0aGUgZmlyc3Qgc2xhc2ggdG8gYXZvaWQKKyAgICAgICAgICAgICAgICAjIG1hdGNoaW5nIGdvbGFuZyBzdGF0aWMgbGlicmFyaWVzCisgICAgICAgICAgICAgICAgbWFnaWMgPSBiJyE8YXJjaD5ceDBhLycKKyAgICAgICAgICAgICAgICBzdGFydCA9IGZoLnJlYWQobGVuKG1hZ2ljKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhcnQgPT0gbWFnaWMKKyAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICAjCiAgICAgIyBGaXJzdCBsZXRzIGZpZ3VyZSBvdXQgYWxsIG9mIHRoZSBmaWxlcyB3ZSBtYXkgaGF2ZSB0byBwcm9jZXNzIC4uLiBkbyB0aGlzIG9ubHkgb25jZSEKQEAgLTkyNiw5ICs5NTksMTEgQEAKICAgICBlbGZmaWxlcyA9IHt9CiAgICAgc3ltbGlua3MgPSB7fQogICAgIGtlcm5tb2RzID0gW10KKyAgICBzdGF0aWNsaWJzID0gW10KICAgICBpbm9kZXMgPSB7fQogICAgIGxpYmRpciA9IG9zLnBhdGguYWJzcGF0aChkdmFyICsgb3Muc2VwICsgZC5nZXRWYXIoImxpYmRpciIpKQogICAgIGJhc2VsaWJkaXIgPSBvcy5wYXRoLmFic3BhdGgoZHZhciArIG9zLnNlcCArIGQuZ2V0VmFyKCJiYXNlX2xpYmRpciIpKQorICAgIHNraXBmaWxlcyA9IChkLmdldFZhcigiSU5ISUJJVF9QQUNLQUdFX1NUUklQX0ZJTEVTIikgb3IgIiIpLnNwbGl0KCkKICAgICBpZiAoZC5nZXRWYXIoJ0lOSElCSVRfUEFDS0FHRV9TVFJJUCcpICE9ICcxJyBvciBcCiAgICAgICAgICAgICBkLmdldFZhcignSU5ISUJJVF9QQUNLQUdFX0RFQlVHX1NQTElUJykgIT0gJzEnKToKICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIGNwYXRoLndhbGsoZHZhcik6CkBAIC05MzcsNiArOTcyLDkgQEAKICAgICAgICAgICAgICAgICBpZiBmaWxlLmVuZHN3aXRoKCIua28iKSBhbmQgZmlsZS5maW5kKCIvbGliL21vZHVsZXMvIikgIT0gLTE6CiAgICAgICAgICAgICAgICAgICAgIGtlcm5tb2RzLmFwcGVuZChmaWxlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIGlzU3RhdGljTGliKGZpbGUpOgorICAgICAgICAgICAgICAgICAgICBzdGF0aWNsaWJzLmFwcGVuZChmaWxlKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICAgICAgIyBTa2lwIGRlYnVnIGZpbGVzCiAgICAgICAgICAgICAgICAgaWYgZGVidWdhcHBlbmQgYW5kIGZpbGUuZW5kc3dpdGgoZGVidWdhcHBlbmQpOgpAQCAtOTQ0LDYgKzk4Miw5IEBACiAgICAgICAgICAgICAgICAgaWYgZGVidWdkaXIgYW5kIGRlYnVnZGlyIGluIG9zLnBhdGguZGlybmFtZShmaWxlW2xlbihkdmFyKTpdKToKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKIAorICAgICAgICAgICAgICAgIGlmIGZpbGUgaW4gc2tpcGZpbGVzOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBsdGFyZ2V0ID0gY3BhdGgucmVhbHBhdGgoZmlsZSwgZHZhciwgRmFsc2UpCiAgICAgICAgICAgICAgICAgICAgIHMgPSBjcGF0aC5sc3RhdChsdGFyZ2V0KQpAQCAtOTU1LDcgKzk5Niw3IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgaWYgbm90IHM6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgIyBDaGVjayBpdHMgYW4gZXhjdXRhYmxlCisgICAgICAgICAgICAgICAgIyBDaGVjayBpdHMgYW4gZXhlY3V0YWJsZQogICAgICAgICAgICAgICAgIGlmIChzW3N0YXQuU1RfTU9ERV0gJiBzdGF0LlNfSVhVU1IpIG9yIChzW3N0YXQuU1RfTU9ERV0gJiBzdGF0LlNfSVhHUlApIG9yIChzW3N0YXQuU1RfTU9ERV0gJiBzdGF0LlNfSVhPVEgpIFwKICAgICAgICAgICAgICAgICAgICAgICAgIG9yICgoZmlsZS5zdGFydHN3aXRoKGxpYmRpcikgb3IgZmlsZS5zdGFydHN3aXRoKGJhc2VsaWJkaXIpKSBhbmQgKCIuc28iIGluIGYgb3IgIi5ub2RlIiBpbiBmKSk6CiAgICAgICAgICAgICAgICAgICAgICMgSWYgaXQncyBhIHN5bWxpbmssIGFuZCBwb2ludHMgdG8gYW4gRUxGIGZpbGUsIHdlIGNhcHR1cmUgdGhlIHJlYWRsaW5rIHRhcmdldApAQCAtOTgzLDcgKzEwMjQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIyAgYikgT25seSBzdHJpcCBhbnkgaGFyZGxpbmtlZCBmaWxlIG9uY2UgKG5vIHJhY2VzKQogICAgICAgICAgICAgICAgICAgICAgICAgIyAgYykgVHJhY2sgYW55IGhhcmRsaW5rcyBiZXR3ZWVuIGZpbGVzIHNvIHRoYXQgd2UgY2FuIHJlY29uc3RydWN0IG1hdGNoaW5nIGRlYnVnIGZpbGUgaGFyZGxpbmtzCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICMgVXNlIGEgcmVmZXJlbmNlIG9mIGRldmljZSBJRCBhbmQgaW5vZGUgbnVtYmVyIHRvIGluZGVudGlmeSBmaWxlcworICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2UgYSByZWZlcmVuY2Ugb2YgZGV2aWNlIElEIGFuZCBpbm9kZSBudW1iZXIgdG8gaWRlbnRpZnkgZmlsZXMKICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfcmVmZXJlbmNlID0gIiVkXyVkIiAlIChzLnN0X2Rldiwgcy5zdF9pbm8pCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBmaWxlX3JlZmVyZW5jZSBpbiBpbm9kZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZpbGUpCkBAIC0xMDEyLDYgKzEwNTMsMTAgQEAKICAgICAgICAgICAgICMgT25seSBzdG9yZSBvZmYgdGhlIGhhcmQgbGluayByZWZlcmVuY2UgaWYgd2Ugc3VjY2Vzc2Z1bGx5IHNwbGl0IQogICAgICAgICAgICAgc3BsaXRkZWJ1Z2luZm8oZmlsZSwgZnBhdGgsIGRlYnVnc3JjZGlyLCBzb3VyY2VmaWxlLCBkKQogCisgICAgICAgIGlmIGRlYnVnc3JjZGlyIGFuZCBub3QgdGFyZ2V0b3Muc3RhcnRzd2l0aCgibWluZ3ciKToKKyAgICAgICAgICAgIGZvciBmaWxlIGluIHN0YXRpY2xpYnM6CisgICAgICAgICAgICAgICAgYXBwZW5kX3NvdXJjZV9pbmZvKGZpbGUsIHNvdXJjZWZpbGUsIGQsIGZhdGFsPUZhbHNlKQorCiAgICAgICAgICMgSGFyZGxpbmsgb3VyIGRlYnVnIHN5bWJvbHMgdG8gdGhlIG90aGVyIGhhcmRsaW5rIGNvcGllcwogICAgICAgICBmb3IgcmVmIGluIGlub2RlczoKICAgICAgICAgICAgIGlmIGxlbihpbm9kZXNbcmVmXSkgPT0gMToKQEAgLTExMDUsNyArMTE1MCw3IEBACiAgICAgICAgIGQuc2V0VmFyKCdGSUxFU18lcycgJSBzcmNfcGFja2FnZV9uYW1lLCAnL3Vzci9zcmMvZGVidWcnKQogCiAgICAgIyBTYW5pdHkgY2hlY2sgUEFDS0FHRVMgZm9yIGR1cGxpY2F0ZXMKLSAgICAjIFNhbml0eSBzaG91bGQgYmUgbW92ZWQgdG8gc2FuaXR5LmJiY2xhc3Mgb25jZSB3ZSBoYXZlIHRoZSBpbmZyYXN0dWN0dXJlCisgICAgIyBTYW5pdHkgc2hvdWxkIGJlIG1vdmVkIHRvIHNhbml0eS5iYmNsYXNzIG9uY2Ugd2UgaGF2ZSB0aGUgaW5mcmFzdHJ1Y3R1cmUKICAgICBwYWNrYWdlX2xpc3QgPSBbXQogCiAgICAgZm9yIHBrZyBpbiBwYWNrYWdlcy5zcGxpdCgpOgpAQCAtMTMwMyw2ICsxMzQ4LDM2IEBACiAgICAgZnJvbSBnbG9iIGltcG9ydCBnbG9iCiAgICAgaW1wb3J0IGpzb24KIAorICAgIGRlZiBwcm9jZXNzX3Bvc3RpbnN0X29uX3RhcmdldChwa2csIG1scHJlZml4KToKKyAgICAgICAgZGVmZXJfZnJhZ21lbnQgPSAiIiIKK2lmIFsgLW4gIiREIiBdOyB0aGVuCisgICAgJElOVEVSQ0VQVF9ESVIvcG9zdGluc3RfaW50ZXJjZXB0IGRlbGF5X3RvX2ZpcnN0X2Jvb3QgJXMgbWxwcmVmaXg9JXMKKyAgICBleGl0IDAKK2ZpCisiIiIgJSAocGtnLCBtbHByZWZpeCkKKworICAgICAgICBwb3N0aW5zdCA9IGQuZ2V0VmFyKCdwa2dfcG9zdGluc3RfJXMnICUgcGtnKQorICAgICAgICBwb3N0aW5zdF9vbnRhcmdldCA9IGQuZ2V0VmFyKCdwa2dfcG9zdGluc3Rfb250YXJnZXRfJXMnICUgcGtnKQorCisgICAgICAgIGlmIHBvc3RpbnN0X29udGFyZ2V0OgorICAgICAgICAgICAgYmIuZGVidWcoMSwgJ2FkZGluZyBkZWZlcnJlZCBwa2dfcG9zdGluc3Rfb250YXJnZXQoKSB0byBwa2dfcG9zdGluc3QoKSBmb3IgJXMnICUgcGtnKQorICAgICAgICAgICAgaWYgbm90IHBvc3RpbnN0OgorICAgICAgICAgICAgICAgIHBvc3RpbnN0ID0gJyMhL2Jpbi9zaFxuJworICAgICAgICAgICAgcG9zdGluc3QgKz0gZGVmZXJfZnJhZ21lbnQKKyAgICAgICAgICAgIHBvc3RpbnN0ICs9IHBvc3RpbnN0X29udGFyZ2V0CisgICAgICAgICAgICBkLnNldFZhcigncGtnX3Bvc3RpbnN0XyVzJyAlIHBrZywgcG9zdGluc3QpCisKKyAgICBkZWYgYWRkX3NldF9lX3RvX3NjcmlwdGxldHMocGtnKToKKyAgICAgICAgZm9yIHNjcmlwdGxldF9uYW1lIGluICgncGtnX3ByZWluc3QnLCAncGtnX3Bvc3RpbnN0JywgJ3BrZ19wcmVybScsICdwa2dfcG9zdHJtJyk6CisgICAgICAgICAgICBzY3JpcHRsZXQgPSBkLmdldFZhcignJXNfJXMnICUgKHNjcmlwdGxldF9uYW1lLCBwa2cpKQorICAgICAgICAgICAgaWYgc2NyaXB0bGV0OgorICAgICAgICAgICAgICAgIHNjcmlwdGxldF9zcGxpdCA9IHNjcmlwdGxldC5zcGxpdCgnXG4nKQorICAgICAgICAgICAgICAgIGlmIHNjcmlwdGxldF9zcGxpdFswXS5zdGFydHN3aXRoKCIjISIpOgorICAgICAgICAgICAgICAgICAgICBzY3JpcHRsZXQgPSBzY3JpcHRsZXRfc3BsaXRbMF0gKyAiXG5zZXQgLWVcbiIgKyAiXG4iLmpvaW4oc2NyaXB0bGV0X3NwbGl0WzE6XSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzY3JpcHRsZXQgPSAic2V0IC1lXG4iICsgIlxuIi5qb2luKHNjcmlwdGxldF9zcGxpdFswOl0pCisgICAgICAgICAgICBkLnNldFZhcignJXNfJXMnICUgKHNjcmlwdGxldF9uYW1lLCBwa2cpLCBzY3JpcHRsZXQpCisKICAgICBkZWYgd3JpdGVfaWZfZXhpc3RzKGYsIHBrZywgdmFyKToKICAgICAgICAgZGVmIGVuY29kZShzdHIpOgogICAgICAgICAgICAgaW1wb3J0IGNvZGVjcwpAQCAtMTM5OCw2ICsxNDczLDggQEAKICAgICAgICAgd3JpdGVfaWZfZXhpc3RzKHNmLCBwa2csICdBTExPV19FTVBUWScpCiAgICAgICAgIHdyaXRlX2lmX2V4aXN0cyhzZiwgcGtnLCAnRklMRVMnKQogICAgICAgICB3cml0ZV9pZl9leGlzdHMoc2YsIHBrZywgJ0NPTkZGSUxFUycpCisgICAgICAgIHByb2Nlc3NfcG9zdGluc3Rfb25fdGFyZ2V0KHBrZywgZC5nZXRWYXIoIk1MUFJFRklYIikpCisgICAgICAgIGFkZF9zZXRfZV90b19zY3JpcHRsZXRzKHBrZykKICAgICAgICAgd3JpdGVfaWZfZXhpc3RzKHNmLCBwa2csICdwa2dfcG9zdGluc3QnKQogICAgICAgICB3cml0ZV9pZl9leGlzdHMoc2YsIHBrZywgJ3BrZ19wb3N0cm0nKQogICAgICAgICB3cml0ZV9pZl9leGlzdHMoc2YsIHBrZywgJ3BrZ19wcmVpbnN0JykKQEAgLTE1NDEsNyArMTYxOCw3IEBACiAgICAgc2hsaWJzd29ya19kaXIgPSBkLmdldFZhcignU0hMSUJTV09SS0RJUicpCiAKICAgICAjIFRha2Ugc2hhcmVkIGxvY2sgc2luY2Ugd2UncmUgb25seSByZWFkaW5nLCBub3Qgd3JpdGluZwotICAgIGxmID0gYmIudXRpbHMubG9ja2ZpbGUoZC5leHBhbmQoIiR7UEFDS0FHRUxPQ0t9IikpCisgICAgbGYgPSBiYi51dGlscy5sb2NrZmlsZShkLmV4cGFuZCgiJHtQQUNLQUdFTE9DS30iKSwgVHJ1ZSkKIAogICAgIGRlZiBsaW51eF9zbyhmaWxlLCBuZWVkZWQsIHNvbmFtZXMsIHJlbmFtZXMsIHBrZ3Zlcik6CiAgICAgICAgIG5lZWRzX2xkY29uZmlnID0gRmFsc2UKQEAgLTE3MzIsNiArMTgwOSw5IEBACiAgICAgZm9yIHBrZyBpbiBwYWNrYWdlcy5zcGxpdCgpOgogICAgICAgICBiYi5kZWJ1ZygyLCAiY2FsY3VsYXRpbmcgc2hsaWIgcmVxdWlyZW1lbnRzIGZvciAlcyIgJSBwa2cpCiAKKyAgICAgICAgcHJpdmF0ZV9saWJzID0gZC5nZXRWYXIoJ1BSSVZBVEVfTElCU18nICsgcGtnKSBvciBkLmdldFZhcignUFJJVkFURV9MSUJTJykgb3IgIiIKKyAgICAgICAgcHJpdmF0ZV9saWJzID0gcHJpdmF0ZV9saWJzLnNwbGl0KCkKKwogICAgICAgICBkZXBzID0gbGlzdCgpCiAgICAgICAgIGZvciBuIGluIG5lZWRlZFtwa2ddOgogICAgICAgICAgICAgIyBpZiBuIGlzIGluIHByaXZhdGUgbGlicmFyaWVzLCBkb24ndCB0cnkgdG8gc2VhcmNoIHByb3ZpZGVyIGZvciBpdApAQCAtMTgyMyw3ICsxOTAzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtnY29uZmlnX25lZWRlZFtwa2ddICs9IGV4cC5yZXBsYWNlKCcsJywgJyAnKS5zcGxpdCgpCiAKICAgICAjIFRha2Ugc2hhcmVkIGxvY2sgc2luY2Ugd2UncmUgb25seSByZWFkaW5nLCBub3Qgd3JpdGluZwotICAgIGxmID0gYmIudXRpbHMubG9ja2ZpbGUoZC5leHBhbmQoIiR7UEFDS0FHRUxPQ0t9IikpCisgICAgbGYgPSBiYi51dGlscy5sb2NrZmlsZShkLmV4cGFuZCgiJHtQQUNLQUdFTE9DS30iKSwgVHJ1ZSkKIAogICAgIGZvciBwa2cgaW4gcGFja2FnZXMuc3BsaXQoKToKICAgICAgICAgcGtnc19maWxlID0gb3MucGF0aC5qb2luKHNobGlic3dvcmtfZGlyLCBwa2cgKyAiLnBjbGlzdCIpCkBAIC0yMTU2LDExICsyMjM2LDkgQEAKIGRvX3BhY2thZ2VbdmFyZGVwc10gKz0gIiR7UEFDS0FHRUJVSUxEUEtHRH0gJHtQQUNLQUdFU1BMSVRGVU5DU30gJHtQQUNLQUdFRlVOQ1N9ICR7QGdlbl9wYWNrYWdldmFyKGQpfSIKIGFkZHRhc2sgcGFja2FnZSBhZnRlciBkb19pbnN0YWxsCiAKLVBBQ0tBR0VMT0NLID0gIiR7U1RBR0lOR19ESVJ9L3BhY2thZ2Utb3V0cHV0LmxvY2siCiBTU1RBVEVUQVNLUyArPSAiZG9fcGFja2FnZSIKIGRvX3BhY2thZ2VbY2xlYW5kaXJzXSA9ICIke1BLR0RFU1R9ICR7UEtHREVTVFdPUkt9IgogZG9fcGFja2FnZVtzc3RhdGUtcGxhaW5kaXJzXSA9ICIke1BLR0R9ICR7UEtHREVTVH0gJHtQS0dERVNUV09SS30iCi1kb19wYWNrYWdlW3NzdGF0ZS1sb2NrZmlsZS1zaGFyZWRdID0gIiR7UEFDS0FHRUxPQ0t9IgogZG9fcGFja2FnZV9zZXRzY2VuZVtkaXJzXSA9ICIke1NUQUdJTkdfRElSfSIKIAogcHl0aG9uIGRvX3BhY2thZ2Vfc2V0c2NlbmUgKCkgewpAQCAtMjE3NSwxMCArMjI1MywxMyBAQAogYWRkdGFzayBwYWNrYWdlZGF0YSBiZWZvcmUgZG9fYnVpbGQgYWZ0ZXIgZG9fcGFja2FnZQogCiBTU1RBVEVUQVNLUyArPSAiZG9fcGFja2FnZWRhdGEiCisjIFBBQ0tBR0VMT0NLIHByb3RlY3RzIHJlYWRlcnMgb2YgUEtHREFUQV9ESVIgYWdhaW5zdCB3cml0ZXMKKyMgd2hpbHN0IGNvZGUgaXMgcmVhZGluZyBpbiBkb19wYWNrYWdlCitQQUNLQUdFTE9DSyA9ICIke1NUQUdJTkdfRElSfS9wYWNrYWdlLW91dHB1dC5sb2NrIgogZG9fcGFja2FnZWRhdGFbc3N0YXRlLWlucHV0ZGlyc10gPSAiJHtQS0dERVNUV09SS30iCiBkb19wYWNrYWdlZGF0YVtzc3RhdGUtb3V0cHV0ZGlyc10gPSAiJHtQS0dEQVRBX0RJUn0iCi1kb19wYWNrYWdlZGF0YVtzc3RhdGUtbG9ja2ZpbGUtc2hhcmVkXSA9ICIke1BBQ0tBR0VMT0NLfSIKLWRvX3BhY2thZ2VkYXRhW3N0YW1wLWV4dHJhLWluZm9dID0gIiR7TUFDSElORX0iCitkb19wYWNrYWdlZGF0YVtzc3RhdGUtbG9ja2ZpbGVdID0gIiR7UEFDS0FHRUxPQ0t9IgorZG9fcGFja2FnZWRhdGFbc3RhbXAtZXh0cmEtaW5mb10gPSAiJHtNQUNISU5FX0FSQ0h9IgogCiBweXRob24gZG9fcGFja2FnZWRhdGFfc2V0c2NlbmUgKCkgewogICAgIHNzdGF0ZV9zZXRzY2VuZShkKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2RlYi5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2RlYi5iYmNsYXNzCmluZGV4IDVkMjk3OTMuLjJlOGQxN2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9kZWIuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfZGViLmJiY2xhc3MKQEAgLTIzMCw5ICsyMzAsMTEgQEAKICAgICAgICAgICAgICMgICAnPicgPSBncmVhdGVyIG9yIGVxdWFsCiAgICAgICAgICAgICAjIGFkanVzdCB0aGVzZSB0byB0aGUgJzw8JyBhbmQgJz4+JyBlcXVpdmFsZW50cwogICAgICAgICAgICAgIwotICAgICAgICAgICAgZm9yIGRlcCBpbiB2YXI6Ci0gICAgICAgICAgICAgICAgaWYgJygnIGluIGRlcDoKLSAgICAgICAgICAgICAgICAgICAgbmV3ZGVwID0gcmUuc3ViKHInWyg6KV0nLCAnX18nLCBkZXApCisgICAgICAgICAgICBmb3IgZGVwIGluIGxpc3QodmFyLmtleXMoKSk6CisgICAgICAgICAgICAgICAgaWYgJygnIGluIGRlcCBvciAnLycgaW4gZGVwOgorICAgICAgICAgICAgICAgICAgICBuZXdkZXAgPSByZS5zdWIocidbKDopL10nLCAnX18nLCBkZXApCisgICAgICAgICAgICAgICAgICAgIGlmIG5ld2RlcC5zdGFydHN3aXRoKCJfXyIpOgorICAgICAgICAgICAgICAgICAgICAgICAgbmV3ZGVwID0gIkEiICsgbmV3ZGVwCiAgICAgICAgICAgICAgICAgICAgIGlmIG5ld2RlcCAhPSBkZXA6CiAgICAgICAgICAgICAgICAgICAgICAgICB2YXJbbmV3ZGVwXSA9IHZhcltkZXBdCiAgICAgICAgICAgICAgICAgICAgICAgICBkZWwgdmFyW2RlcF0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9pcGsuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9pcGsuYmJjbGFzcwppbmRleCA2YzFmZGFhLi5hMGIzNGZhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfaXBrLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2lway5iYmNsYXNzCkBAIC04LDcgKzgsNyBAQAogUEtHV1JJVEVESVJJUEsgPSAiJHtXT1JLRElSfS9kZXBsb3ktaXBrcyIKIAogIyBQcm9ncmFtIHRvIGJlIHVzZWQgdG8gYnVpbGQgb3BrZyBwYWNrYWdlcwotT1BLR0JVSUxEQ01EID8/PSAib3BrZy1idWlsZCIKK09QS0dCVUlMRENNRCA/Pz0gIm9wa2ctYnVpbGQgLVogeHoiCiAKIE9QS0dfQVJHUyArPSAiLS1mb3JjZV9wb3N0aW5zdGFsbCAtLXByZWZlci1hcmNoLXRvLXZlcnNpb24iCiBPUEtHX0FSR1MgKz0gIiR7QFsnJywgJy0tbm8taW5zdGFsbC1yZWNvbW1lbmRzJ11bZC5nZXRWYXIoIk5PX1JFQ09NTUVOREFUSU9OUyIpID09ICIxIl19IgpAQCAtMzA3LDcgKzMwNyw3IEBACiAKIHB5dGhvbiAoKSB7CiAgICAgaWYgZC5nZXRWYXIoJ1BBQ0tBR0VTJykgIT0gJyc6Ci0gICAgICAgIGRlcHMgPSAnIG9wa2ctdXRpbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgdmlydHVhbC9mYWtlcm9vdC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcKKyAgICAgICAgZGVwcyA9ICcgb3BrZy11dGlscy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCB2aXJ0dWFsL2Zha2Vyb290LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IHh6LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JwogICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX3BhY2thZ2Vfd3JpdGVfaXBrJywgJ2RlcGVuZHMnLCBkZXBzKQogICAgICAgICBkLnNldFZhckZsYWcoJ2RvX3BhY2thZ2Vfd3JpdGVfaXBrJywgJ2Zha2Vyb290JywgIjEiKQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX3JwbS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX3JwbS5iYmNsYXNzCmluZGV4IGE0MjhkMzAuLjIxYWRhMzQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9ycG0uYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfcnBtLmJiY2xhc3MKQEAgLTM4Miw2ICszODIsMTIgQEAKIAogICAgICAgICAjIEdhdGhlciBzcGVjaWFsIHNyYy9maXJzdCBwYWNrYWdlIGRhdGEKICAgICAgICAgaWYgc3JjbmFtZSA9PSBzcGxpdG5hbWU6CisgICAgICAgICAgICBhcmNoaXZpbmcgPSBkLmdldFZhckZsYWcoJ0FSQ0hJVkVSX01PREUnLCAnc3JwbScpID09ICcxJyBhbmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnYXJjaGl2ZXInLCBkKQorICAgICAgICAgICAgaWYgYXJjaGl2aW5nIGFuZCBzcmNsaWNlbnNlICE9IHNwbGl0bGljZW5zZToKKyAgICAgICAgICAgICAgICBiYi53YXJuKCJUaGUgU1JQTSBwcm9kdWNlZCBtYXkgbm90IGhhdmUgdGhlIGNvcnJlY3Qgb3ZlcmFsbCBzb3VyY2UgbGljZW5zZSBpbiB0aGUgTGljZW5zZSB0YWcuIFRoaXMgaXMgZHVlIHRvIHRoZSBMSUNFTlNFIGZvciB0aGUgcHJpbWFyeSBwYWNrYWdlIGFuZCBTUlBNIGNvbmZsaWN0aW5nLiIpCisKKyAgICAgICAgICAgIHNyY2xpY2Vuc2UgICAgID0gc3BsaXRsaWNlbnNlCiAgICAgICAgICAgICBzcmNyZGVwZW5kcyAgICA9IHNwbGl0cmRlcGVuZHMKICAgICAgICAgICAgIHNyY3JyZWNvbW1lbmRzID0gc3BsaXRycmVjb21tZW5kcwogICAgICAgICAgICAgc3JjcnN1Z2dlc3RzICAgPSBzcGxpdHJzdWdnZXN0cwpAQCAtNDIxLDggKzQyNyw3IEBACiAgICAgICAgICAgICBzcGVjX3ByZWFtYmxlX2JvdHRvbS5hcHBlbmQoJ1JlbGVhc2U6ICVzJyAlIHNwbGl0cmVsZWFzZSkKICAgICAgICAgaWYgc3JjZXBvY2ggIT0gc3BsaXRlcG9jaDoKICAgICAgICAgICAgIHNwZWNfcHJlYW1ibGVfYm90dG9tLmFwcGVuZCgnRXBvY2g6ICVzJyAlIHNwbGl0ZXBvY2gpCi0gICAgICAgIGlmIHNyY2xpY2Vuc2UgIT0gc3BsaXRsaWNlbnNlOgotICAgICAgICAgICAgc3BlY19wcmVhbWJsZV9ib3R0b20uYXBwZW5kKCdMaWNlbnNlOiAlcycgJSBzcGxpdGxpY2Vuc2UpCisgICAgICAgIHNwZWNfcHJlYW1ibGVfYm90dG9tLmFwcGVuZCgnTGljZW5zZTogJXMnICUgc3BsaXRsaWNlbnNlKQogICAgICAgICBzcGVjX3ByZWFtYmxlX2JvdHRvbS5hcHBlbmQoJ0dyb3VwOiAlcycgJSBzcGxpdHNlY3Rpb24pCiAKICAgICAgICAgaWYgc3JjY3VzdG9tdGFnc2NodW5rICE9IHNwbGl0Y3VzdG9tdGFnc2NodW5rOgpAQCAtNjY1LDEzICs2NzAsMTUgQEAKICAgICBjbWQgPSBycG1idWlsZAogICAgIGNtZCA9IGNtZCArICIgLS1ub2NsZWFuIC0tbm9kZXBzIC0tc2hvcnQtY2lyY3VpdCAtLXRhcmdldCAiICsgcGtnYXJjaCArICIgLS1idWlsZHJvb3QgIiArIHBrZ2QKICAgICBjbWQgPSBjbWQgKyAiIC0tZGVmaW5lICdfdG9wZGlyICIgKyB3b3JrZGlyICsgIicgLS1kZWZpbmUgJ19ycG1kaXIgIiArIHBrZ3dyaXRlZGlyICsgIiciCi0gICAgY21kID0gY21kICsgIiAtLWRlZmluZSAnX2J1aWxkZGlyICIgKyBkLmdldFZhcignUycpICsgIiciCisgICAgY21kID0gY21kICsgIiAtLWRlZmluZSAnX2J1aWxkZGlyICIgKyBkLmdldFZhcignQicpICsgIiciCiAgICAgY21kID0gY21kICsgIiAtLWRlZmluZSAnX2J1aWxkX25hbWVfZm10ICUle05BTUV9LSUle1ZFUlNJT059LSUle1JFTEVBU0V9LiUle0FSQ0h9LnJwbSciCiAgICAgY21kID0gY21kICsgIiAtLWRlZmluZSAnX3VzZV9pbnRlcm5hbF9kZXBlbmRlbmN5X2dlbmVyYXRvciAwJyIKICAgICBjbWQgPSBjbWQgKyAiIC0tZGVmaW5lICdfYmluYXJpZXNfaW5fbm9hcmNoX3BhY2thZ2VzX3Rlcm1pbmF0ZV9idWlsZCAwJyIKICAgICBjbWQgPSBjbWQgKyAiIC0tZGVmaW5lICdfYnVpbGRfaWRfbGlua3Mgbm9uZSciCiAgICAgY21kID0gY21kICsgIiAtLWRlZmluZSAnX2JpbmFyeV9wYXlsb2FkIHc2VC54emRpbyciCiAgICAgY21kID0gY21kICsgIiAtLWRlZmluZSAnX3NvdXJjZV9wYXlsb2FkIHc2VC54emRpbyciCisgICAgY21kID0gY21kICsgIiAtLWRlZmluZSAnY2xhbXBfbXRpbWVfdG9fc291cmNlX2RhdGVfZXBvY2ggMSciCisgICAgY21kID0gY21kICsgIiAtLWRlZmluZSAnX2J1aWxkaG9zdCByZXByb2R1Y2libGUnIgogICAgIGlmIHBlcmZpbGVkZXBzOgogICAgICAgICBjbWQgPSBjbWQgKyAiIC0tZGVmaW5lICdfX2ZpbmRfcmVxdWlyZXMgIiArIG91dGRlcGVuZHMgKyAiJyIKICAgICAgICAgY21kID0gY21kICsgIiAtLWRlZmluZSAnX19maW5kX3Byb3ZpZGVzICIgKyBvdXRwcm92aWRlcyArICInIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlZ3JvdXAuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZWdyb3VwLmJiY2xhc3MKaW5kZXggZWVhMmU1Yi4uZDU0MGQ0MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlZ3JvdXAuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2Vncm91cC5iYmNsYXNzCkBAIC01NiwzICs1Niw0IEBACiAgICAgICAgIGJiLmZhdGFsKCJQbGVhc2UgZW5zdXJlIHRoYXQgeW91ciBzZXR0aW5nIG9mIFZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXIgKCVzKSBtYXRjaGVzIHRoZSBlbnRyaWVzIGVuYWJsZWQgaW4gRElTVFJPX0ZFQVRVUkVTIiAlIGluaXRtYW4pCiB9CiAKK0NWRV9QUk9EVUNUID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGF0Y2guYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGF0Y2guYmJjbGFzcwppbmRleCA4ZjM1Y2I0Li4yZmM2OTI1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhdGNoLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYXRjaC5iYmNsYXNzCkBAIC0yNiw5ICsyNiwyMyBAQAogCiBweXRob24gcGF0Y2hfdGFza19wYXRjaF9wcmVmdW5jKCkgewogICAgICMgUHJlZnVuYyBmb3IgZG9fcGF0Y2gKLSAgICBmdW5jID0gZC5nZXRWYXIoJ0JCX1JVTlRBU0snKQogICAgIHNyY3N1YmRpciA9IGQuZ2V0VmFyKCdTJykKIAorICAgIHdvcmtkaXIgPSBvcy5wYXRoLmFic3BhdGgoZC5nZXRWYXIoJ1dPUktESVInKSkKKyAgICB0ZXN0c3JjZGlyID0gb3MucGF0aC5hYnNwYXRoKHNyY3N1YmRpcikKKyAgICBpZiAodGVzdHNyY2RpciArIG9zLnNlcCkuc3RhcnRzd2l0aCh3b3JrZGlyICsgb3Muc2VwKToKKyAgICAgICAgIyBEb3VibGUtY2hlY2sgdGhhdCBlaXRoZXIgd29ya2RpciBvciBTIG9yIHNvbWUgZGlyZWN0b3J5IGluLWJldHdlZW4gaXMgYSBnaXQgcmVwb3NpdG9yeQorICAgICAgICBmb3VuZCA9IEZhbHNlCisgICAgICAgIHdoaWxlIHRlc3RzcmNkaXIgIT0gJy8nOgorICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHRlc3RzcmNkaXIsICcuZ2l0JykpOgorICAgICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZiB0ZXN0c3JjZGlyID09IHdvcmtkaXI6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHRlc3RzcmNkaXIgPSBvcy5wYXRoLmRpcm5hbWUodGVzdHNyY2RpcikKKyAgICAgICAgaWYgbm90IGZvdW5kOgorICAgICAgICAgICAgYmIuZmF0YWwoJ1BBVENIVE9PTCA9ICJnaXQiIHNldCBmb3Igc291cmNlIHRyZWUgdGhhdCBpcyBub3QgYSBnaXQgcmVwb3NpdG9yeS4gUmVmdXNpbmcgdG8gY29udGludWUgYXMgdGhhdCBtYXkgcmVzdWx0IGluIGNvbW1pdHMgYmVpbmcgbWFkZSBpbiB5b3VyIG1ldGFkYXRhIHJlcG9zaXRvcnkuJykKKwogICAgIHBhdGNoZGlyID0gb3MucGF0aC5qb2luKHNyY3N1YmRpciwgJ3BhdGNoZXMnKQogICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGNoZGlyKToKICAgICAgICAgaWYgb3MubGlzdGRpcihwYXRjaGRpcik6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19iYXNlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19iYXNlLmJiY2xhc3MKaW5kZXggMzBmY2VmYy4uM2RhMzUwNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfYmFzZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2Jhc2UuYmJjbGFzcwpAQCAtMjAsNiArMjAsOSBAQAogU0RLSU1BR0VfRkVBVFVSRVMgPz89ICJkZXYtcGtncyBkYmctcGtncyAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2FwaS1kb2N1bWVudGF0aW9uJywgJ2RvYy1wa2dzJywgJycsIGQpfSIKIFNES0lNQUdFX0lOU1RBTExfQ09NUExFTUVOVEFSWSA9ICcke0Bjb21wbGVtZW50YXJ5X2dsb2JzKCJTREtJTUFHRV9GRUFUVVJFUyIsIGQpfScKIAorUEFDS0FHRV9BUkNIU19hcHBlbmRfdGFzay1wb3B1bGF0ZS1zZGsgPSAiIHNkay1wcm92aWRlcy1kdW1teS10YXJnZXQiCitTREtfUEFDS0FHRV9BUkNIUyArPSAic2RrLXByb3ZpZGVzLWR1bW15LSR7U0RLUEtHU1VGRklYfSIKKwogIyBMaXN0IG9mIGxvY2FsZXMgdG8gaW5zdGFsbCwgb3IgImFsbCIgZm9yIGFsbCBvZiB0aGVtLCBvciB1bnNldCBmb3Igbm9uZS4KIFNES0lNQUdFX0xJTkdVQVMgPz0gImFsbCIKIApAQCAtMzcsMTIgKzQwLDEzIEBACiAKIFRPT0xDSEFJTl9IT1NUX1RBU0sgPz0gIm5hdGl2ZXNkay1wYWNrYWdlZ3JvdXAtc2RrLWhvc3QgcGFja2FnZWdyb3VwLWNyb3NzLWNhbmFkaWFuLSR7TUFDSElORX0iCiBUT09MQ0hBSU5fSE9TVF9UQVNLX0FUVEVNUFRPTkxZID89ICIiCi1UT09MQ0hBSU5fVEFSR0VUX1RBU0sgPz0gIiR7QG11bHRpbGliX3BrZ19leHRlbmQoZCwgJ3BhY2thZ2Vncm91cC1jb3JlLXN0YW5kYWxvbmUtc2RrLXRhcmdldCcpfSIKK1RPT0xDSEFJTl9UQVJHRVRfVEFTSyA/PSAiJHtAbXVsdGlsaWJfcGtnX2V4dGVuZChkLCAncGFja2FnZWdyb3VwLWNvcmUtc3RhbmRhbG9uZS1zZGstdGFyZ2V0Jyl9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJHtAbXVsdGlsaWJfcGtnX2V4dGVuZChkLCAndGFyZ2V0LXNkay1wcm92aWRlcy1kdW1teScpfSIKIFRPT0xDSEFJTl9UQVJHRVRfVEFTS19BVFRFTVBUT05MWSA/PSAiIgogVE9PTENIQUlOX09VVFBVVE5BTUUgPz0gIiR7U0RLX05BTUV9LXRvb2xjaGFpbi0ke1NES19WRVJTSU9OfSIKIAogU0RLX1JERVBFTkRTID0gIiR7VE9PTENIQUlOX1RBUkdFVF9UQVNLfSAke1RPT0xDSEFJTl9IT1NUX1RBU0t9IgotU0RLX0RFUEVORFMgPSAidmlydHVhbC9mYWtlcm9vdC1uYXRpdmUgcGl4ei1uYXRpdmUgY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZSIKK1NES19ERVBFTkRTID0gInZpcnR1YWwvZmFrZXJvb3QtbmF0aXZlIHh6LW5hdGl2ZSBjcm9zcy1sb2NhbGVkZWYtbmF0aXZlICR7TUxQUkVGSVh9cWVtdXdyYXBwZXItY3Jvc3MiCiBTREtfREVQRU5EU19hcHBlbmRfbGliYy1nbGliYyA9ICIgbmF0aXZlc2RrLWdsaWJjLWxvY2FsZSIKIAogIyBXZSB3YW50IHRoZSBNVUxUSUFSQ0hfVEFSR0VUX1NZUyB0byBwb2ludCB0byB0aGUgVFVORV9QS0dBUkNILCBub3QgUEFDS0FHRV9BUkNIIGFzIGl0CkBAIC0xNTIsNyArMTU2LDcgQEAKIGRvX3BvcHVsYXRlX3Nka1tjbGVhbmRpcnNdID0gIiR7U0RLREVQTE9ZRElSfSIKIGRvX3BvcHVsYXRlX3Nka1tzc3RhdGUtaW5wdXRkaXJzXSA9ICIke1NES0RFUExPWURJUn0iCiBkb19wb3B1bGF0ZV9zZGtbc3N0YXRlLW91dHB1dGRpcnNdID0gIiR7U0RLX0RFUExPWX0iCi1kb19wb3B1bGF0ZV9zZGtbc3RhbXAtZXh0cmEtaW5mb10gPSAiJHtNQUNISU5FfSR7U0RLTUFDSElORX0iCitkb19wb3B1bGF0ZV9zZGtbc3RhbXAtZXh0cmEtaW5mb10gPSAiJHtNQUNISU5FX0FSQ0h9JHtTREtNQUNISU5FfSIKIAogZmFrZXJvb3QgY3JlYXRlX3Nka19maWxlcygpIHsKIAljcCAke0NPUkVCQVNFfS9zY3JpcHRzL3JlbG9jYXRlX3Nkay5weSAke1NES19PVVRQVVR9LyR7U0RLUEFUSH0vCkBAIC0yMjEsNyArMjI1LDcgQEAKIAkjIFBhY2thZ2UgaXQgdXAKIAlta2RpciAtcCAke1NES0RFUExPWURJUn0KIAljZCAke1NES19PVVRQVVR9LyR7U0RLUEFUSH0KLQl0YXIgJHtTREtUQVJPUFRTfSAtY2YgLSAuIHwgcGl4eiA+ICR7U0RLREVQTE9ZRElSfS8ke1RPT0xDSEFJTl9PVVRQVVROQU1FfS50YXIueHoKKwl0YXIgJHtTREtUQVJPUFRTfSAtY2YgLSAuIHwgeHogLVQgMCA+ICR7U0RLREVQTE9ZRElSfS8ke1RPT0xDSEFJTl9PVVRQVVROQU1FfS50YXIueHoKIH0KIAogZmFrZXJvb3QgY3JlYXRlX3NoYXIoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19leHQuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2V4dC5iYmNsYXNzCmluZGV4IDJkZDIxMjMuLmUxYmJhNDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2V4dC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2V4dC5iYmNsYXNzCkBAIC0xNjIsMTggKzE2MiwxNiBAQAogICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIG9zLnJlbmFtZShzZGtiYXNlcGF0aCwgdGVtcF9zZGtiYXNlcGF0aCkKKyAgICAgICAgY21kcHJlZml4ID0gJy4gJXMgLjsgJyAlIGNvbmZfaW5pdHBhdGgKKyAgICAgICAgbG9nZmlsZSA9IGQuZ2V0VmFyKCdXT1JLRElSJykgKyAnL3Rhc2tsaXN0X2JiX2xvZy50eHQnCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGNtZHByZWZpeCA9ICcuICVzIC47ICcgJSBjb25mX2luaXRwYXRoCi0gICAgICAgICAgICBsb2dmaWxlID0gZC5nZXRWYXIoJ1dPUktESVInKSArICcvdGFza2xpc3RfYmJfbG9nLnR4dCcKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBvZS5jb3B5X2J1aWxkc3lzdGVtLmNoZWNrX3NzdGF0ZV90YXNrX2xpc3QoZCwgZ2V0X3Nka19pbnN0YWxsX3RhcmdldHMoZCksIHRhc2tsaXN0ZmlsZSwgY21kcHJlZml4PWNtZHByZWZpeCwgY3dkPXRlbXBfc2RrYmFzZXBhdGgsIGxvZ2ZpbGU9bG9nZmlsZSkKLSAgICAgICAgICAgIGV4Y2VwdCBiYi5wcm9jZXNzLkV4ZWN1dGlvbkVycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgbXNnID0gJ0ZhaWxlZCB0byBnZW5lcmF0ZSBmaWx0ZXJlZCB0YXNrIGxpc3QgZm9yIGV4dGVuc2libGUgU0RLOlxuJXMnICUgIGUuc3Rkb3V0LnJzdHJpcCgpCi0gICAgICAgICAgICAgICAgaWYgJ2F0dGVtcHRlZCB0byBleGVjdXRlIHVuZXhwZWN0ZWRseSBhbmQgc2hvdWxkIGhhdmUgYmVlbiBzZXRzY2VuZWQnIGluIGUuc3Rkb3V0OgotICAgICAgICAgICAgICAgICAgICBtc2cgKz0gJ1xuLS0tLS0tLS0tLVxuXG5OT1RFOiAiYXR0ZW1wdGVkIHRvIGV4ZWN1dGUgdW5leHBlY3RlZGx5IGFuZCBzaG91bGQgaGF2ZSBiZWVuIHNldHNjZW5lZCIgZXJyb3JzIGluZGljYXRlIHRoaXMgbWF5IGJlIGNhdXNlZCBieSBtaXNzaW5nIHNzdGF0ZSBhcnRpZmFjdHMgdGhhdCB3ZXJlIGxpa2VseSBwcm9kdWNlZCBpbiBlYXJsaWVyIGJ1aWxkcywgYnV0IGhhdmUgYmVlbiBzdWJzZXF1ZW50bHkgZGVsZXRlZCBmb3Igc29tZSByZWFzb24uXG4nCi0gICAgICAgICAgICAgICAgYmIuZmF0YWwobXNnKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3MucmVuYW1lKHRlbXBfc2RrYmFzZXBhdGgsIHNka2Jhc2VwYXRoKQorICAgICAgICAgICAgb2UuY29weV9idWlsZHN5c3RlbS5jaGVja19zc3RhdGVfdGFza19saXN0KGQsIGdldF9zZGtfaW5zdGFsbF90YXJnZXRzKGQpLCB0YXNrbGlzdGZpbGUsIGNtZHByZWZpeD1jbWRwcmVmaXgsIGN3ZD10ZW1wX3Nka2Jhc2VwYXRoLCBsb2dmaWxlPWxvZ2ZpbGUpCisgICAgICAgIGV4Y2VwdCBiYi5wcm9jZXNzLkV4ZWN1dGlvbkVycm9yIGFzIGU6CisgICAgICAgICAgICBtc2cgPSAnRmFpbGVkIHRvIGdlbmVyYXRlIGZpbHRlcmVkIHRhc2sgbGlzdCBmb3IgZXh0ZW5zaWJsZSBTREs6XG4lcycgJSAgZS5zdGRvdXQucnN0cmlwKCkKKyAgICAgICAgICAgIGlmICdhdHRlbXB0ZWQgdG8gZXhlY3V0ZSB1bmV4cGVjdGVkbHkgYW5kIHNob3VsZCBoYXZlIGJlZW4gc2V0c2NlbmVkJyBpbiBlLnN0ZG91dDoKKyAgICAgICAgICAgICAgICBtc2cgKz0gJ1xuLS0tLS0tLS0tLVxuXG5OT1RFOiAiYXR0ZW1wdGVkIHRvIGV4ZWN1dGUgdW5leHBlY3RlZGx5IGFuZCBzaG91bGQgaGF2ZSBiZWVuIHNldHNjZW5lZCIgZXJyb3JzIGluZGljYXRlIHRoaXMgbWF5IGJlIGNhdXNlZCBieSBtaXNzaW5nIHNzdGF0ZSBhcnRpZmFjdHMgdGhhdCB3ZXJlIGxpa2VseSBwcm9kdWNlZCBpbiBlYXJsaWVyIGJ1aWxkcywgYnV0IGhhdmUgYmVlbiBzdWJzZXF1ZW50bHkgZGVsZXRlZCBmb3Igc29tZSByZWFzb24uXG4nCisgICAgICAgICAgICBiYi5mYXRhbChtc2cpCisgICAgICAgIG9zLnJlbmFtZSh0ZW1wX3Nka2Jhc2VwYXRoLCBzZGtiYXNlcGF0aCkKICAgICAgICAgIyBDbGVhbiBvdXQgcmVzaWR1ZSBvZiBydW5uaW5nIGJpdGJha2UsIHdoaWNoIGNoZWNrX3NzdGF0ZV90YXNrX2xpc3QoKQogICAgICAgICAjIHdpbGwgZWZmZWN0aXZlbHkgZG8KICAgICAgICAgY2xlYW5fZXNka19idWlsZGRpcihkLCBzZGtiYXNlcGF0aCkKQEAgLTUzNSw3ICs1MzMsNyBAQAogCiBpbnN0YWxsX3Rvb2xzKCkgewogCWluc3RhbGwgLWQgJHtTREtfT1VUUFVUfS8ke1NES1BBVEhOQVRJVkV9JHtiaW5kaXJfbmF0aXZlc2RrfQotCXNjcmlwdHM9ImRldnRvb2wgcmVjaXBldG9vbCBvZS1maW5kLW5hdGl2ZS1zeXNyb290IHJ1bnFlbXUqIgorCXNjcmlwdHM9ImRldnRvb2wgcmVjaXBldG9vbCBvZS1maW5kLW5hdGl2ZS1zeXNyb290IHJ1bnFlbXUqIHdpYyIKIAlmb3Igc2NyaXB0IGluICRzY3JpcHRzOyBkbwogCQlmb3Igc2NyaXB0Zm4gaW4gYGZpbmQgJHtTREtfT1VUUFVUfS8ke1NES1BBVEh9LyR7c2NyaXB0cmVscGF0aH0gLW1heGRlcHRoIDEgLWV4ZWN1dGFibGUgLW5hbWUgIiRzY3JpcHQiYDsgZG8KIAkJCWxuciAke3NjcmlwdGZufSAke1NES19PVVRQVVR9LyR7U0RLUEFUSE5BVElWRX0ke2JpbmRpcl9uYXRpdmVzZGt9L2BiYXNlbmFtZSAkc2NyaXB0Zm5gCkBAIC03MjQsNiArNzIyLDYgQEAKIGRvX3BvcHVsYXRlX3Nka19leHRbY2xlYW5kaXJzXSA9ICIke1NES0VYVERFUExPWURJUn0iCiBkb19wb3B1bGF0ZV9zZGtfZXh0W3NzdGF0ZS1pbnB1dGRpcnNdID0gIiR7U0RLRVhUREVQTE9ZRElSfSIKIGRvX3BvcHVsYXRlX3Nka19leHRbc3N0YXRlLW91dHB1dGRpcnNdID0gIiR7U0RLX0RFUExPWX0iCi1kb19wb3B1bGF0ZV9zZGtfZXh0W3N0YW1wLWV4dHJhLWluZm9dID0gIiR7TUFDSElORX0iCitkb19wb3B1bGF0ZV9zZGtfZXh0W3N0YW1wLWV4dHJhLWluZm9dID0gIiR7TUFDSElORV9BUkNIfSIKIAogYWRkdGFzayBwb3B1bGF0ZV9zZGtfZXh0IGFmdGVyIGRvX3Nka19kZXBlbmRzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3B0ZXN0LXBlcmwuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcHRlc3QtcGVybC5iYmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0YmM0MGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3B0ZXN0LXBlcmwuYmJjbGFzcwpAQCAtMCwwICsxLDMwIEBACitpbmhlcml0IHB0ZXN0CisKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke0NPUkVCQVNFfS9tZXRhL2ZpbGVzOiIKKworU1JDX1VSSSArPSAiZmlsZTovL3B0ZXN0LXBlcmwvcnVuLXB0ZXN0IgorCitkb19pbnN0YWxsX3B0ZXN0X3BlcmwoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfQorCWlmIFsgISAtZiAke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QgXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9wdGVzdC1wZXJsL3J1bi1wdGVzdCAke0R9JHtQVEVTVF9QQVRIfQorCWZpCisJY3AgLXIgJHtCfS90ICR7RH0ke1BURVNUX1BBVEh9CisJY2hvd24gLVIgcm9vdDpyb290ICR7RH0ke1BURVNUX1BBVEh9Cit9CisKK0ZJTEVTXyR7UE59LXB0ZXN0X3ByZXBlbmQgPSAiJHtQVEVTVF9QQVRIfS90LyogJHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QgIgorCitSREVQRU5EU18ke1BOfS1wdGVzdF9wcmVwZW5kID0gInBlcmwgIgorCithZGR0YXNrIGluc3RhbGxfcHRlc3RfcGVybCBhZnRlciBkb19pbnN0YWxsX3B0ZXN0X2Jhc2UgYmVmb3JlIGRvX3BhY2thZ2UKKworcHl0aG9uICgpIHsKKyAgICBpZiBub3QgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlJywgZCkgYW5kIG5vdCBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjcm9zcycsIGQpOgorICAgICAgICBkLnNldFZhckZsYWcoJ2RvX2luc3RhbGxfcHRlc3RfcGVybCcsICdmYWtlcm9vdCcsICcxJykKKworICAgICMgUmVtb3ZlIGFsbCAnKnB0ZXN0X3BlcmwnIHRhc2tzIHdoZW4gcHRlc3QgaXMgbm90IGVuYWJsZWQKKyAgICBpZiBub3QoZC5nZXRWYXIoJ1BURVNUX0VOQUJMRUQnKSA9PSAiMSIpOgorICAgICAgICBmb3IgaSBpbiBbJ2RvX2luc3RhbGxfcHRlc3RfcGVybCddOgorICAgICAgICAgICAgYmIuYnVpbGQuZGVsdGFzayhpLCBkKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yZXByb2R1Y2libGVfYnVpbGQuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcmVwcm9kdWNpYmxlX2J1aWxkLmJiY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRmODA1MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcmVwcm9kdWNpYmxlX2J1aWxkLmJiY2xhc3MKQEAgLTAsMCArMSwxNTAgQEAKKyMKKyMgcmVwcm9kdWNpYmxlX2J1aWxkLmJiY2xhc3MKKyMKKyMgVGhpcyBiYmNsYXNzIGlzIG1haW5seSByZXNwb25zaWJsZSB0byBkZXRlcm1pbmUgU09VUkNFX0RBVEVfRVBPQ0ggb24gYSBwZXIgcmVjaXBlIGJhc2UuCisjIFdlIG5lZWQgdG8gc2V0IGEgcmVjaXBlIHNwZWNpZmljIFNPVVJDRV9EQVRFX0VQT0NIIGluIGVhY2ggcmVjaXBlIGVudmlyb25tZW50IGZvciB2YXJpb3VzIHRhc2tzLgorIyBPbmUgd2F5IHdvdWxkIGJlIHRvIG1vZGlmeSBhbGwgcmVjaXBlcyBvbmUtYnktb25lIHRvIHNwZWNpZnkgU09VUkNFX0RBVEVfRVBPQ0ggZXhwbGljaXRseSwgCisjIGJ1dCB0aGF0IGlzIG5vdCByZWFsaXN0aWMgYXMgdGhlcmUgYXJlIGh1bmRyZWRzIChwcm9iYWJseSB0aG91c2FuZHMpIG9mIHJlY2lwZXMgaW4gdmFyaW91cyBtZXRhLWxheWVycy4KKyMgVGhlcmVmb3JlIHdlIGRvIGl0IHRoaXMgY2xhc3MuIAorIyBBZnRlciBzb3VyY2VzIGFyZSB1bnBhY2tlZCBidXQgYmVmb3JlIHRoZXkgYXJlIHBhdGNoZWQsIHdlIHRyeSB0byBkZXRlcm1pbmUgdGhlIHZhbHVlIGZvciBTT1VSQ0VfREFURV9FUE9DSC4KKyMKKyMgVGhlcmUgYXJlIDQgd2F5cyB0byBkZXRlcm1pbmUgU09VUkNFX0RBVEVfRVBPQ0g6CisjCisjIDEuIFVzZSB2YWx1ZSBmcm9tIF9fc291cmNlX2RhdGVfZXBvY2gudHh0IGZpbGUgaWYgdGhpcyBmaWxlIGV4aXN0cy4gCisjICAgIFRoaXMgZmlsZSB3YXMgbW9zdCBsaWtlbHkgY3JlYXRlZCBpbiB0aGUgcHJldmlvdXMgYnVpbGQgYnkgb25lIG9mIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyAyLDMsNC4gCisjICAgIEluIHByaW5jaXBsZSwgaXQgY291bGQgYWN0dWFsbHkgcHJvdmlkZWQgYnkgYSByZWNpcGUgdmlhIFNSQ19VUkkKKyMKKyMgSWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3QsIGZpcnN0IHRyeSB0byBkZXRlcm1pbmUgdGhlIHZhbHVlIGZvciBTT1VSQ0VfREFURV9FUE9DSDoKKyMKKyMgMi4gSWYgd2UgZGV0ZWN0ZWQgYSBmb2xkZXIgLmdpdCwgdXNlIC5naXQgbGFzdCBjb21taXQgZGF0ZSB0aW1lc3RhbXAsIGFzIGdpdCBkb2VzIG5vdCBhbGxvdyBjaGVja2luZyBvdXQKKyMgICAgZmlsZXMgYW5kIHByZXNlcnZpbmcgdGhlaXIgdGltZXN0YW1wcy4KKyMKKyMgMy4gVXNlIHRoZSBtdGltZSBvZiAia25vd24iIGZpbGVzIHN1Y2ggYXMgTkVXUywgQ0hBTkdMRUxPRywgLi4uCisjICAgIFRoaXMgd2lsbCB3b3JrIGZpbmUgZm9yIGFueSB3ZWxsIGtlcHQgcmVwb3NpdG9yeSBkaXN0cmlidXRlZCB2aWEgdGFyYmFsbHMuCisjCisjIDQuIElmIHRoZSBhYm92ZSBzdGVwcyBmYWlsLCB3ZSBuZWVkIHRvIGNoZWNrIGFsbCBwYWNrYWdlIHNvdXJjZSBmaWxlcyBhbmQgdXNlIHRoZSB5b3VuZ2VzdCBmaWxlIG9mIHRoZSBzb3VyY2UgdHJlZS4KKyMKKyMgT25jZSB0aGUgdmFsdWUgb2YgU09VUkNFX0RBVEVfRVBPQ0ggaXMgZGV0ZXJtaW5lZCwgaXQgaXMgc3RvcmVkIGluIHRoZSByZWNpcGUgJHtXT1JLRElSfS9zb3VyY2VfZGF0ZV9lcG9jaCBmb2xkZXIKKyMgaW4gYSB0ZXh0IGZpbGUgIl9fc291cmNlX2RhdGVfZXBvY2gudHh0Jy4gSWYgdGhpcyBmaWxlIGlzIGZvdW5kIGJ5IG90aGVyIHJlY2lwZSB0YXNrLCB0aGUgdmFsdWUgaXMgZXhwb3J0ZWQgaW4KKyMgdGhlIFNPVVJDRV9EQVRFX0VQT0NIIHZhcmlhYmxlIGluIHRoZSB0YXNrIGVudmlyb25tZW50LiBUaGlzIGlzIGRvbmUgaW4gYW4gYW5vbnltb3VzIHB5dGhvbiBmdW5jdGlvbiwgCisjIHNvIFNPVVJDRV9EQVRFX0VQT0NIIGlzIGd1YXJhbnRlZWQgdG8gZXhpc3QgZm9yIGFsbCB0YXNrcyB0aGUgbWF5IHVzZSBpdCAoZG9fY29uZmlndXJlLCBkb19jb21waWxlLCBkb19wYWNrYWdlLCAuLi4pCisKK0JVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFUyA/Pz0gJzEnCitpbmhlcml0ICR7QG9lLnV0aWxzLmlmZWxzZShkLmdldFZhcignQlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTJykgPT0gJzEnLCAncmVwcm9kdWNpYmxlX2J1aWxkX3NpbXBsZScsICcnKX0KKworU0RFX0RJUiA9IiR7V09SS0RJUn0vc291cmNlLWRhdGUtZXBvY2giCitTREVfRklMRSA9ICIke1NERV9ESVJ9L19fc291cmNlX2RhdGVfZXBvY2gudHh0IgorCitTU1RBVEVUQVNLUyArPSAiZG9fZGVwbG95X3NvdXJjZV9kYXRlX2Vwb2NoIgorCitkb19kZXBsb3lfc291cmNlX2RhdGVfZXBvY2ggKCkgeworICAgIGVjaG8gIkRlcGxveWluZyBTREUgdG8gJHtTREVfRElSfS4iCit9CisKK3B5dGhvbiBkb19kZXBsb3lfc291cmNlX2RhdGVfZXBvY2hfc2V0c2NlbmUgKCkgeworICAgIHNzdGF0ZV9zZXRzY2VuZShkKQorfQorCitkb19kZXBsb3lfc291cmNlX2RhdGVfZXBvY2hbZGlyc10gPSAiJHtTREVfRElSfSIKK2RvX2RlcGxveV9zb3VyY2VfZGF0ZV9lcG9jaFtzc3RhdGUtcGxhaW5kaXJzXSA9ICIke1NERV9ESVJ9IgorYWRkdGFzayBkb19kZXBsb3lfc291cmNlX2RhdGVfZXBvY2hfc2V0c2NlbmUKK2FkZHRhc2sgZG9fZGVwbG95X3NvdXJjZV9kYXRlX2Vwb2NoIGJlZm9yZSBkb19jb25maWd1cmUgYWZ0ZXIgZG9fcGF0Y2gKKworZGVmIGdldF9zb3VyY2VfZGF0ZV9lcG9jaF9rbm93bl9maWxlcyhkLCBwYXRoKToKKyAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IDAKKyAgICBrbm93bl9maWxlcyA9IHNldChbIk5FV1MiLCAiQ2hhbmdlTG9nIiwgIkNoYW5nZWxvZyIsICJDSEFOR0VTIl0pCisgICAgZm9yIGZpbGUgaW4ga25vd25fZmlsZXM6CisgICAgICAgIGZpbGVwYXRoID0gb3MucGF0aC5qb2luKHBhdGgsZmlsZSkKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZmlsZXBhdGgpOgorICAgICAgICAgICAgbXRpbWUgPSBpbnQob3MucGF0aC5nZXRtdGltZShmaWxlcGF0aCkpCisgICAgICAgICAgICAjIFRoZXJlIG1heSBiZSBtb3JlIHRoYW4gb25lICJrbm93bl9maWxlIiBwcmVzZW50LCBpZiBzbywgdXNlIHRoZSB5b3VuZ2VzdCBvbmUKKyAgICAgICAgICAgIGlmIG10aW1lID4gc291cmNlX2RhdGVfZXBvY2g6CisgICAgICAgICAgICAgICAgc291cmNlX2RhdGVfZXBvY2ggPSBtdGltZQorICAgIHJldHVybiBzb3VyY2VfZGF0ZV9lcG9jaAorCitkZWYgZmluZF9naXRfZm9sZGVyKHBhdGgpOgorICAgIGV4Y2x1ZGUgPSBzZXQoWyJ0ZW1wIiwgImxpY2Vuc2UtZGVzdGRpciIsICJwYXRjaGVzIiwgInJlY2lwZS1zeXNyb290LW5hdGl2ZSIsICJyZWNpcGUtc3lzcm9vdCIsICJwc2V1ZG8iLCAiYnVpbGQiLCAiaW1hZ2UiLCAic3lzcm9vdC1kZXN0ZGlyIl0pCisgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsocGF0aCwgdG9wZG93bj1UcnVlKToKKyAgICAgICAgZGlyc1s6XSA9IFtkIGZvciBkIGluIGRpcnMgaWYgZCBub3QgaW4gZXhjbHVkZV0KKyAgICAgICAgaWYgJy5naXQnIGluIGRpcnM6CisgICAgICAgICAgICAjYmIud2FybigiZm91bmQgcm9vdDolcyIgJSAoc3RyKHJvb3QpKSkKKyAgICAgICAgICAgIHJldHVybiByb290CisgICAgIAorZGVmIGdldF9zb3VyY2VfZGF0ZV9lcG9jaF9naXQoZCwgcGF0aCk6CisgICAgc291cmNlX2RhdGVfZXBvY2ggPSAwCisgICAgaWYgImdpdDovLyIgaW4gZC5nZXRWYXIoJ1NSQ19VUkknKToKKyAgICAgICAgZ2l0cGF0aCA9IGZpbmRfZ2l0X2ZvbGRlcihkLmdldFZhcignV09SS0RJUicpKQorICAgICAgICBpZiBnaXRwYXRoICE9IE5vbmU6CisgICAgICAgICAgICBpbXBvcnQgc3VicHJvY2VzcworICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oZ2l0cGF0aCwiLmdpdCIpKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9kYXRlX2Vwb2NoID0gaW50KHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsnZ2l0JywnbG9nJywnLTEnLCctLXByZXR0eT0lY3QnXSwgY3dkPXBhdGgpKQorICAgICAgICAgICAgICAgICAgICAjYmIud2FybigiSkIgKioqIGdpdHBhdGg6JXMgc2RlOiAlZCIgJSAoZ2l0cGF0aCxzb3VyY2VfZGF0ZV9lcG9jaCkpCisgICAgICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICJnaXQgcmVwbyBwYXRoOiVzIHNkZTogJWQiICUgKGdpdHBhdGgsc291cmNlX2RhdGVfZXBvY2gpKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBncmVwZXhjOgorICAgICAgICAgICAgICAgICAgICAjYmIud2FybiggIkV4cGVjdGVkIGdpdCByZXBvc2l0b3J5IG5vdCBmb3VuZCwgKHBhdGg6ICVzKSBlcnJvcjolZCIgJSAoZ2l0cGF0aCwgZ3JlcGV4Yy5yZXR1cm5jb2RlKSkKKyAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgIkV4cGVjdGVkIGdpdCByZXBvc2l0b3J5IG5vdCBmb3VuZCwgKHBhdGg6ICVzKSBlcnJvcjolZCIgJSAoZ2l0cGF0aCwgZ3JlcGV4Yy5yZXR1cm5jb2RlKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJiLndhcm4oIkZhaWxlZCB0byBmaW5kIGEgZ2l0IHJlcG9zaXRvcnkgZm9yIHBhdGg6JXMiICUgKHBhdGgpKQorICAgIHJldHVybiBzb3VyY2VfZGF0ZV9lcG9jaAorICAgICAgICAgICAgCitweXRob24gZG9fY3JlYXRlX3NvdXJjZV9kYXRlX2Vwb2NoX3N0YW1wKCkgeworICAgIHBhdGggPSBkLmdldFZhcignUycpCisgICAgaWYgbm90IG9zLnBhdGguaXNkaXIocGF0aCk6CisgICAgICAgIGJiLndhcm4oIlVuYWJsZSB0byBkZXRlcm1pbmUgc291cmNlX2RhdGVfZXBvY2ghIHBhdGg6JXMiICUgcGF0aCkKKyAgICAgICAgcmV0dXJuCisKKyAgICBlcG9jaGZpbGUgPSBkLmdldFZhcignU0RFX0ZJTEUnKQorICAgIGlmIG9zLnBhdGguaXNmaWxlKGVwb2NoZmlsZSk6CisgICAgICAgIGJiLmRlYnVnKDEsICIgcGF0aDogJXMgcmV1c2luZyBfX3NvdXJjZV9kYXRlX2Vwb2NoLnR4dCIgJSBlcG9jaGZpbGUpCisgICAgICAgIHJldHVybgorIAorICAgICMgVHJ5IHRvIGRldGVjdC9maW5kIGEgZ2l0IHJlcG9zaXRvcnkKKyAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IGdldF9zb3VyY2VfZGF0ZV9lcG9jaF9naXQoZCwgcGF0aCkKKyAgICBpZiBzb3VyY2VfZGF0ZV9lcG9jaCA9PSAwOgorICAgICAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IGdldF9zb3VyY2VfZGF0ZV9lcG9jaF9rbm93bl9maWxlcyhkLCBwYXRoKQorICAgIGlmIHNvdXJjZV9kYXRlX2Vwb2NoID09IDA6CisgICAgICAgICMgRG8gaXQgdGhlIGhhcmQgd2F5OiBjaGVjayBhbGwgZmlsZXMgYW5kIGZpbmQgdGhlIHlvdW5nZXN0IG9uZS4uLgorICAgICAgICBmaWxlbmFtZV9kYmcgPSBOb25lCisgICAgICAgIGV4Y2x1ZGUgPSBzZXQoWyJ0ZW1wIiwgImxpY2Vuc2UtZGVzdGRpciIsICJwYXRjaGVzIiwgInJlY2lwZS1zeXNyb290LW5hdGl2ZSIsICJyZWNpcGUtc3lzcm9vdCIsICJwc2V1ZG8iLCAiYnVpbGQiLCAiaW1hZ2UiLCAic3lzcm9vdC1kZXN0ZGlyIl0pCisgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHBhdGgsIHRvcGRvd249VHJ1ZSk6CisgICAgICAgICAgICBmaWxlcyA9IFtmIGZvciBmIGluIGZpbGVzIGlmIG5vdCBmWzBdID09ICcuJ10KKyAgICAgICAgICAgIGRpcnNbOl0gPSBbZCBmb3IgZCBpbiBkaXJzIGlmIGQgbm90IGluIGV4Y2x1ZGVdCisKKyAgICAgICAgICAgIGZvciBmbmFtZSBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihyb290LCBmbmFtZSkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG10aW1lID0gaW50KG9zLnBhdGguZ2V0bXRpbWUoZmlsZW5hbWUpKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBtdGltZSA9IDAKKyAgICAgICAgICAgICAgICBpZiBtdGltZSA+IHNvdXJjZV9kYXRlX2Vwb2NoOgorICAgICAgICAgICAgICAgICAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IG10aW1lCisgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lX2RiZyA9IGZpbGVuYW1lCisKKyAgICAgICAgaWYgZmlsZW5hbWVfZGJnICE9IE5vbmU6CisgICAgICAgICAgICBiYi5kZWJ1ZygxLCIgU09VUkNFX0RBVEVfRVBPQ0ggJWQgZGVyaXZlZCBmcm9tOiAlcyIgJSAoc291cmNlX2RhdGVfZXBvY2gsIGZpbGVuYW1lX2RiZykpCisKKyAgICAgICAgaWYgc291cmNlX2RhdGVfZXBvY2ggPT0gMDoKKyAgICAgICAgICAgICMgZW1wdHkgZm9sZGVyLCBub3QgYSBzaW5nbGUgZmlsZSAuLi4KKyAgICAgICAgICAgICMga2VybmVsIHNvdXJjZSBkb191bnBhY2sgaXMgc3BlY2lhbCBjYXNlZAorICAgICAgICAgICAgaWYgbm90IGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2tlcm5lbCcsIGQpOgorICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICJVbmFibGUgdG8gZGV0ZXJtaW5lIHNvdXJjZV9kYXRlX2Vwb2NoISBwYXRoOiVzIiAlIHBhdGgpCisKKyAgICBiYi51dGlscy5ta2RpcmhpZXIoZC5nZXRWYXIoJ1NERV9ESVInKSkKKyAgICB3aXRoIG9wZW4oZXBvY2hmaWxlLCAndycpIGFzIGY6CisgICAgICAgIGYud3JpdGUoc3RyKHNvdXJjZV9kYXRlX2Vwb2NoKSkKK30KKworQkJfSEFTSEJBU0VfV0hJVEVMSVNUICs9ICJTT1VSQ0VfREFURV9FUE9DSCIKKworcHl0aG9uICgpIHsKKyAgICBpZiBkLmdldFZhcignQlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTJykgPT0gJzEnOgorICAgICAgICBkLmFwcGVuZFZhckZsYWcoImRvX3VucGFjayIsICJwb3N0ZnVuY3MiLCAiIGRvX2NyZWF0ZV9zb3VyY2VfZGF0ZV9lcG9jaF9zdGFtcCIpCisgICAgICAgIGVwb2NoZmlsZSA9IGQuZ2V0VmFyKCdTREVfRklMRScpCisgICAgICAgIHNvdXJjZV9kYXRlX2Vwb2NoID0gIjAiCisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGVwb2NoZmlsZSk6CisgICAgICAgICAgICB3aXRoIG9wZW4oZXBvY2hmaWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICAgICAgc291cmNlX2RhdGVfZXBvY2ggPSBmLnJlYWQoKQorICAgICAgICAgICAgYmIuZGVidWcoMSwgInNvdXJjZV9kYXRlX2Vwb2NoIHN0YW1wIGZvdW5kIC0tLT4gc3RhbXAgJXMiICUgc291cmNlX2RhdGVfZXBvY2gpCisgICAgICAgIGQuc2V0VmFyKCdTT1VSQ0VfREFURV9FUE9DSCcsIHNvdXJjZV9kYXRlX2Vwb2NoKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yZXByb2R1Y2libGVfYnVpbGRfc2ltcGxlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3JlcHJvZHVjaWJsZV9idWlsZF9zaW1wbGUuYmJjbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTYwZGVlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yZXByb2R1Y2libGVfYnVpbGRfc2ltcGxlLmJiY2xhc3MKQEAgLTAsMCArMSwxMCBAQAorIyBTZXR1cCBkZWZhdWx0IGVudmlyb25tZW50IGZvciByZXByb2R1Y2libGUgYnVpbGRzLgorCitCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVMgPSAiMSIKKworZXhwb3J0IFBZVEhPTkhBU0hTRUVEID0gIjAiCitleHBvcnQgUEVSTF9IQVNIX1NFRUQgPSAiMCIKK2V4cG9ydCBTT1VSQ0VfREFURV9FUE9DSCA/Pz0gIjE1MjA1OTg4OTYiCisKK1JFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTID8/PSAiMTUyMDU5ODg5NiIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnMtcG9zdGNvbW1hbmRzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmcy1wb3N0Y29tbWFuZHMuYmJjbGFzcwppbmRleCBhNGU2MjdmLi41NTIyMjA5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmcy1wb3N0Y29tbWFuZHMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmcy1wb3N0Y29tbWFuZHMuYmJjbGFzcwpAQCAtNTYsNiArNTYsNyBAQAogU09SVF9QQVNTV0RfUE9TVFBST0NFU1NfQ09NTUFORCA/Pz0gIiBzb3J0X3Bhc3N3ZDsgIgogcHl0aG9uICgpIHsKICAgICBkLmFwcGVuZFZhcignUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQnLCAnJHtTT1JUX1BBU1NXRF9QT1NUUFJPQ0VTU19DT01NQU5EfScpCisgICAgZC5hcHBlbmRWYXIoJ1JPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EJywgJ3Jvb3Rmc19yZXByb2R1Y2libGU7JykKIH0KIAogc3lzdGVtZF9jcmVhdGVfdXNlcnMgKCkgewpAQCAtMjU2LDEwICsyNTcsMTcgQEAKICAgICAgICAgb3Muc3ltbGluayhvcy5wYXRoLmJhc2VuYW1lKG1hbmlmZXN0X25hbWUpLCBtYW5pZmVzdF9saW5rKQogfQogCi0jIENhbiBiZSB1c2UgdG8gY3JlYXRlIC9ldGMvdGltZXN0YW1wIGR1cmluZyBpbWFnZSBjb25zdHJ1Y3Rpb24gdG8gZ2l2ZSBhIHJlYXNvbmFibHkKKyMgQ2FuIGJlIHVzZWQgdG8gY3JlYXRlIC9ldGMvdGltZXN0YW1wIGR1cmluZyBpbWFnZSBjb25zdHJ1Y3Rpb24gdG8gZ2l2ZSBhIHJlYXNvbmFibHkKICMgc2FuZSBkZWZhdWx0IHRpbWUgc2V0dGluZwogcm9vdGZzX3VwZGF0ZV90aW1lc3RhbXAgKCkgewotCWRhdGUgLXUgKyU0WSUybSUyZCUySCUyTSUyUyA+JHtJTUFHRV9ST09URlN9L2V0Yy90aW1lc3RhbXAKKwlpZiBbICIke1JFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTfSIgIT0gIiIgXTsgdGhlbgorCQkjIENvbnZlcnQgVVRDIGludG8gJTRZJTJtJTJkJTJIJTJNJTJTCisJCXNmb3JtYXR0ZWQ9YGRhdGUgLXUgLWQgQCR7UkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlN9ICslNFklMm0lMmQlMkglMk0lMlNgCisJZWxzZQorCQlzZm9ybWF0dGVkPWBkYXRlIC11ICslNFklMm0lMmQlMkglMk0lMlNgCisJZmkKKwllY2hvICRzZm9ybWF0dGVkID4gJHtJTUFHRV9ST09URlN9L2V0Yy90aW1lc3RhbXAKKwliYm5vdGUgInJvb3Rmc191cGRhdGVfdGltZXN0YW1wOiBzZXQgL2V0Yy90aW1lc3RhbXAgdG8gJHNmb3JtYXR0ZWQiCiB9CiAKICMgUHJldmVudCBYIGZyb20gYmVpbmcgc3RhcnRlZApAQCAtMzI4LDMgKzMzNiwxNiBAQAogICAgICAgICAgICAgaWYgJ3Vuc2F0aXNmaWVkIHJlY29tbWVuZGF0aW9uIGZvcicgaW4gbGluZToKICAgICAgICAgICAgICAgICBiYi53YXJuKCdbbG9nX2NoZWNrXSAlczogJXMnICUgKGQuZ2V0VmFyKCdQTicpLCBsaW5lKSkKIH0KKworIyBQZXJmb3JtIGFueSBhZGRpdGlvbmFsIGFkanVzdG1lbnRzIG5lZWRlZCB0byBtYWtlIHJvb3RmIGJpbmFyeSByZXByb2R1Y2libGUKK3Jvb3Rmc19yZXByb2R1Y2libGUgKCkgeworCWlmIFsgIiR7UkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlN9IiAhPSAiIiBdOyB0aGVuCisJCSMgQ29udmVydCBVVEMgaW50byAlNFklMm0lMmQlMkglMk0lMlMKKwkJc2Zvcm1hdHRlZD1gZGF0ZSAtdSAtZCBAJHtSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGU30gKyU0WSUybSUyZCUySCUyTSUyU2AKKwkJZWNobyAkc2Zvcm1hdHRlZCA+ICR7SU1BR0VfUk9PVEZTfS9ldGMvdmVyc2lvbgorCQliYm5vdGUgInJvb3Rmc19yZXByb2R1Y2libGU6IHNldCAvZXRjL3ZlcnNpb24gdG8gJHNmb3JtYXR0ZWQiCisKKwkJZmluZCAke0lNQUdFX1JPT1RGU30vZXRjL2djb25mIC1uYW1lICclZ2NvbmYueG1sJyAtcHJpbnQwIHwgeGFyZ3MgLTByIFwKKwkJc2VkIC1pIC1lICdzQFxibXRpbWU9IlswLTldWzAtOV0qIkBtdGltZT0iJyR7UkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlN9JyJAZycKKwlmaQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zYW5pdHkuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2FuaXR5LmJiY2xhc3MKaW5kZXggMWZlYjc5NC4uZTBlNTdjZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zYW5pdHkuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Nhbml0eS5iYmNsYXNzCkBAIC0zMzYsNyArMzM2LDcgQEAKICAgICByZXR1cm4gIiIKIAogZGVmIGdldF9maWxlc3lzdGVtX2lkKHBhdGgpOgotICAgIHN0YXR1cywgcmVzdWx0ID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KCJzdGF0IC1mIC1jICclcycgJXMiICUgKCIldCIsIHBhdGgpKQorICAgIHN0YXR1cywgcmVzdWx0ID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KCJzdGF0IC1mIC1jICclcycgJyVzJyIgJSAoIiV0IiwgcGF0aCkpCiAgICAgaWYgc3RhdHVzID09IDA6CiAgICAgICAgIHJldHVybiByZXN1bHQKICAgICBlbHNlOgpAQCAtNDU2LDEzICs0NTYsMjkgQEAKIAogICAgIHJldHVybiBtZXNzYWdlcwogCisjIFBhdGNoIGJlZm9yZSAyLjcgY2FuJ3QgaGFuZGxlIGFsbCB0aGUgZmVhdHVyZXMgaW4gZ2l0LXN0eWxlIGRpZmZzLiAgU29tZQorIyBwYXRjaGVzIG1heSBpbmNvcnJlY3RseSBhcHBseSwgYW5kIG90aGVycyB3b24ndCBhcHBseSBhdCBhbGwuCitkZWYgY2hlY2tfcGF0Y2hfdmVyc2lvbihzYW5pdHlfZGF0YSk6CisgICAgZnJvbSBkaXN0dXRpbHMudmVyc2lvbiBpbXBvcnQgTG9vc2VWZXJzaW9uCisgICAgaW1wb3J0IHJlLCBzdWJwcm9jZXNzCisKKyAgICB0cnk6CisgICAgICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsicGF0Y2giLCAiLS12ZXJzaW9uIl0sIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCisgICAgICAgIHZlcnNpb24gPSByZS5zZWFyY2gociJbMC05Ll0rIiwgcmVzdWx0LnNwbGl0bGluZXMoKVswXSkuZ3JvdXAoKQorICAgICAgICBpZiBMb29zZVZlcnNpb24odmVyc2lvbikgPCBMb29zZVZlcnNpb24oIjIuNyIpOgorICAgICAgICAgICAgcmV0dXJuICJZb3VyIHZlcnNpb24gb2YgcGF0Y2ggaXMgb2xkZXIgdGhhbiAyLjcgYW5kIGhhcyBidWdzIHdoaWNoIHdpbGwgYnJlYWsgYnVpbGRzLiBQbGVhc2UgaW5zdGFsbCBhIG5ld2VyIHZlcnNpb24gb2YgcGF0Y2guXG4iCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgorICAgICAgICByZXR1cm4gIlVuYWJsZSB0byBleGVjdXRlIHBhdGNoIC0tdmVyc2lvbiwgZXhpdCBjb2RlICVkOlxuJXNcbiIgJSAoZS5yZXR1cm5jb2RlLCBlLm91dHB1dCkKKwogIyBVbnBhdGNoZWQgdmVyc2lvbnMgb2YgbWFrZSAzLjgyIGFyZSBrbm93biB0byBiZSBicm9rZW4uICBTZWUgR05VIFNhdmFubmFoIEJ1ZyAzMDYxMi4KICMgVXNlIGEgbW9kaWZpZWQgcmVwcm9kdWNlciBmcm9tIGh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvPzMwNjEyIHRvIHZhbGlkYXRlLgogZGVmIGNoZWNrX21ha2VfdmVyc2lvbihzYW5pdHlfZGF0YSk6CiAgICAgZnJvbSBkaXN0dXRpbHMudmVyc2lvbiBpbXBvcnQgTG9vc2VWZXJzaW9uCiAgICAgc3RhdHVzLCByZXN1bHQgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoIm1ha2UgLS12ZXJzaW9uIikKICAgICBpZiBzdGF0dXMgIT0gMDoKLSAgICAgICAgcmV0dXJuICJVbmFibGUgdG8gZXhlY3V0ZSBtYWtlIC0tdmVyc2lvbiwgZXhpdCBjb2RlICVzXG4iICUgc3RhdHVzCisgICAgICAgIHJldHVybiAiVW5hYmxlIHRvIGV4ZWN1dGUgbWFrZSAtLXZlcnNpb24sIGV4aXQgY29kZSAlZFxuIiAlIHN0YXR1cwogICAgIHZlcnNpb24gPSByZXN1bHQuc3BsaXQoKVsyXQogICAgIGlmIExvb3NlVmVyc2lvbih2ZXJzaW9uKSA9PSBMb29zZVZlcnNpb24oIjMuODIiKToKICAgICAgICAgIyBDb25zdHJ1Y3QgYSB0ZXN0IGZpbGUKQEAgLTQ5OCw3ICs1MTQsNyBAQAogICAgIGZyb20gZGlzdHV0aWxzLnZlcnNpb24gaW1wb3J0IExvb3NlVmVyc2lvbgogICAgIHN0YXR1cywgcmVzdWx0ID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KCJ0YXIgLS12ZXJzaW9uIikKICAgICBpZiBzdGF0dXMgIT0gMDoKLSAgICAgICAgcmV0dXJuICJVbmFibGUgdG8gZXhlY3V0ZSB0YXIgLS12ZXJzaW9uLCBleGl0IGNvZGUgJXNcbiIgJSBzdGF0dXMKKyAgICAgICAgcmV0dXJuICJVbmFibGUgdG8gZXhlY3V0ZSB0YXIgLS12ZXJzaW9uLCBleGl0IGNvZGUgJWRcbiIgJSBzdGF0dXMKICAgICB2ZXJzaW9uID0gcmVzdWx0LnNwbGl0KClbM10KICAgICBpZiBMb29zZVZlcnNpb24odmVyc2lvbikgPCBMb29zZVZlcnNpb24oIjEuMjQiKToKICAgICAgICAgcmV0dXJuICJZb3VyIHZlcnNpb24gb2YgdGFyIGlzIG9sZGVyIHRoYW4gMS4yNCBhbmQgaGFzIGJ1Z3Mgd2hpY2ggd2lsbCBicmVhayBidWlsZHMuIFBsZWFzZSBpbnN0YWxsIGEgbmV3ZXIgdmVyc2lvbiBvZiB0YXIuXG4iCkBAIC01MTEsNyArNTI3LDcgQEAKICAgICBmcm9tIGRpc3R1dGlscy52ZXJzaW9uIGltcG9ydCBMb29zZVZlcnNpb24KICAgICBzdGF0dXMsIHJlc3VsdCA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dCgiZ2l0IC0tdmVyc2lvbiAyPiAvZGV2L251bGwiKQogICAgIGlmIHN0YXR1cyAhPSAwOgotICAgICAgICByZXR1cm4gIlVuYWJsZSB0byBleGVjdXRlIGdpdCAtLXZlcnNpb24sIGV4aXQgY29kZSAlc1xuIiAlIHN0YXR1cworICAgICAgICByZXR1cm4gIlVuYWJsZSB0byBleGVjdXRlIGdpdCAtLXZlcnNpb24sIGV4aXQgY29kZSAlZFxuIiAlIHN0YXR1cwogICAgIHZlcnNpb24gPSByZXN1bHQuc3BsaXQoKVsyXQogICAgIGlmIExvb3NlVmVyc2lvbih2ZXJzaW9uKSA8IExvb3NlVmVyc2lvbigiMS44LjMuMSIpOgogICAgICAgICByZXR1cm4gIllvdXIgdmVyc2lvbiBvZiBnaXQgaXMgb2xkZXIgdGhhbiAxLjguMy4xIGFuZCBoYXMgYnVncyB3aGljaCB3aWxsIGJyZWFrIGJ1aWxkcy4gUGxlYXNlIGluc3RhbGwgYSBuZXdlciB2ZXJzaW9uIG9mIGdpdC5cbiIKQEAgLTU5Niw2ICs2MTIsNyBAQAogICAgIGltcG9ydCBzdGF0CiAKICAgICBzdGF0dXMuYWRkcmVzdWx0KGNoZWNrX21ha2VfdmVyc2lvbihkKSkKKyAgICBzdGF0dXMuYWRkcmVzdWx0KGNoZWNrX3BhdGNoX3ZlcnNpb24oZCkpCiAgICAgc3RhdHVzLmFkZHJlc3VsdChjaGVja190YXJfdmVyc2lvbihkKSkKICAgICBzdGF0dXMuYWRkcmVzdWx0KGNoZWNrX2dpdF92ZXJzaW9uKGQpKQogICAgIHN0YXR1cy5hZGRyZXN1bHQoY2hlY2tfcGVybF9tb2R1bGVzKGQpKQpAQCAtNjkyLDcgKzcwOSw3IEBACiAgICAgdHJ5OgogICAgICAgICBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19BTEwsICJlbl9VUy5VVEYtOCIpCiAgICAgZXhjZXB0IGxvY2FsZS5FcnJvcjoKLSAgICAgICAgcmFpc2Vfc2FuaXR5X2Vycm9yKCJZb3Ugc3lzdGVtIG5lZWRzIHRvIHN1cHBvcnQgdGhlIGVuX1VTLlVURi04IGxvY2FsZS4iLCBkKQorICAgICAgICByYWlzZV9zYW5pdHlfZXJyb3IoIllvdXIgc3lzdGVtIG5lZWRzIHRvIHN1cHBvcnQgdGhlIGVuX1VTLlVURi04IGxvY2FsZS4iLCBkKQogCiBkZWYgY2hlY2tfc2FuaXR5X2V2ZXJ5YnVpbGQoc3RhdHVzLCBkKToKICAgICBpbXBvcnQgb3MsIHN0YXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2lnbl9wYWNrYWdlX2ZlZWQuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2lnbl9wYWNrYWdlX2ZlZWQuYmJjbGFzcwppbmRleCBmMDNjNDgwLi43ZmYzYTM1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NpZ25fcGFja2FnZV9mZWVkLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zaWduX3BhY2thZ2VfZmVlZC5iYmNsYXNzCkBAIC00Myw0ICs0Myw0IEBACiB9CiAKIGRvX3BhY2thZ2VfaW5kZXhbZGVwZW5kc10gKz0gInNpZ25pbmcta2V5czpkb19kZXBsb3kiCi1kb19yb290ZnNbZGVwZW5kc10gKz0gInNpZ25pbmcta2V5czpkb19wb3B1bGF0ZV9zeXNyb290IgorZG9fcm9vdGZzW2RlcGVuZHNdICs9ICJzaWduaW5nLWtleXM6ZG9fcG9wdWxhdGVfc3lzcm9vdCBnbnVwZy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2lnbl9ycG0uYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2lnbl9ycG0uYmJjbGFzcwppbmRleCA0OTYxYjAzLi42NGFlN2NlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NpZ25fcnBtLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zaWduX3JwbS5iYmNsYXNzCkBAIC02OCw4ICs2OCw0IEBACiBkb19wYWNrYWdlX2luZGV4W2RlcGVuZHNdICs9ICJzaWduaW5nLWtleXM6ZG9fZGVwbG95IgogZG9fcm9vdGZzW2RlcGVuZHNdICs9ICJzaWduaW5nLWtleXM6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIAotIyBOZXdlciB2ZXJzaW9ucyBvZiBncGcgKGF0IGxlYXN0IDIuMS41IGFuZCAyLjIuMSkgaGF2ZSBpc3N1ZXMgd2hlbiBzaWduaW5nIG9jY3VycyBpbiBwYXJhbGxlbAotIyBzbyB1bmZvcnR1bmF0ZWx5IHRoZSBzaWduaW5nIG11c3QgYmUgZG9uZSBzZXJpYWxseS4gT25jZSB0aGUgdXBzdHJlYW0gcHJvYmxlbSBpcyBmaXhlZCwKLSMgdGhlIGZvbGxvd2luZyBsaW5lIG11c3QgYmUgcmVtb3ZlZCBvdGhlcndpc2Ugd2UgbG9vc2UgYWxsIHRoZSBpbnRyaW5zaWMgcGFyYWxsZWxpc20gZnJvbQotIyBiaXRiYWtlLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIGNoZWNrIGh0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMjIuCi1kb19wYWNrYWdlX3dyaXRlX3JwbVtsb2NrZmlsZXNdICs9ICIke1RNUERJUn0vZ3BnLmxvY2siCitQQUNLQUdFX1dSSVRFX0RFUFMgKz0gImdudXBnLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2l0ZWluZm8uYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2l0ZWluZm8uYmJjbGFzcwppbmRleCAxYWFkYTQwLi44NmJiODUzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NpdGVpbmZvLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zaXRlaW5mby5iYmNsYXNzCkBAIC00Nyw2ICs0Nyw4IEBACiAgICAgICAgICJwcGMiOiAiZW5kaWFuLWJpZyBiaXQtMzIgcG93ZXJwYy1jb21tb24iLAogICAgICAgICAicHBjNjQiOiAiZW5kaWFuLWJpZyBiaXQtNjQgcG93ZXJwYy1jb21tb24iLAogICAgICAgICAicHBjNjRsZSIgOiAiZW5kaWFuLWxpdHRsZSBiaXQtNjQgcG93ZXJwYy1jb21tb24iLAorICAgICAgICAicmlzY3YzMiI6ICJlbmRpYW4tbGl0dGxlIGJpdC0zMiByaXNjdi1jb21tb24iLAorICAgICAgICAicmlzY3Y2NCI6ICJlbmRpYW4tbGl0dGxlIGJpdC02NCByaXNjdi1jb21tb24iLAogICAgICAgICAic2gzIjogImVuZGlhbi1saXR0bGUgYml0LTMyIHNoLWNvbW1vbiIsCiAgICAgICAgICJzaDQiOiAiZW5kaWFuLWxpdHRsZSBiaXQtMzIgc2gtY29tbW9uIiwKICAgICAgICAgInNwYXJjIjogImVuZGlhbi1iaWcgYml0LTMyIiwKQEAgLTU4LDYgKzYwLDcgQEAKICAgICAgICAgImRhcndpbjkiOiAiY29tbW9uLWRhcndpbiIsCiAgICAgICAgICJsaW51eCI6ICJjb21tb24tbGludXggY29tbW9uLWdsaWJjIiwKICAgICAgICAgImxpbnV4LWdudSI6ICJjb21tb24tbGludXggY29tbW9uLWdsaWJjIiwKKyAgICAgICAgImxpbnV4LWdudV9pbHAzMiI6ICJjb21tb24tbGludXggY29tbW9uLWdsaWJjIiwKICAgICAgICAgImxpbnV4LWdudXgzMiI6ICJjb21tb24tbGludXggY29tbW9uLWdsaWJjIiwKICAgICAgICAgImxpbnV4LWdudW4zMiI6ICJjb21tb24tbGludXggY29tbW9uLWdsaWJjIiwKICAgICAgICAgImxpbnV4LWdudWVhYmkiOiAiY29tbW9uLWxpbnV4IGNvbW1vbi1nbGliYyIsCkBAIC03MywxMiArNzYsMTggQEAKICAgICB0YXJnZXRpbmZvID0gewogICAgICAgICAiYWFyY2g2NC1saW51eC1nbnUiOiAiYWFyY2g2NC1saW51eCIsCiAgICAgICAgICJhYXJjaDY0X2JlLWxpbnV4LWdudSI6ICJhYXJjaDY0X2JlLWxpbnV4IiwKKyAgICAgICAgImFhcmNoNjQtbGludXgtZ251X2lscDMyIjogImJpdC0zMiBhYXJjaDY0X2JlLWxpbnV4IGFybS0zMiIsCisgICAgICAgICJhYXJjaDY0X2JlLWxpbnV4LWdudV9pbHAzMiI6ICJiaXQtMzIgYWFyY2g2NF9iZS1saW51eCBhcm0tMzIiLAogICAgICAgICAiYWFyY2g2NC1saW51eC1tdXNsIjogImFhcmNoNjQtbGludXgiLAogICAgICAgICAiYWFyY2g2NF9iZS1saW51eC1tdXNsIjogImFhcmNoNjRfYmUtbGludXgiLAogICAgICAgICAiYXJtLWxpbnV4LWdudWVhYmkiOiAiYXJtLWxpbnV4IiwKICAgICAgICAgImFybS1saW51eC1tdXNsZWFiaSI6ICJhcm0tbGludXgiLAogICAgICAgICAiYXJtZWItbGludXgtZ251ZWFiaSI6ICJhcm1lYi1saW51eCIsCiAgICAgICAgICJhcm1lYi1saW51eC1tdXNsZWFiaSI6ICJhcm1lYi1saW51eCIsCisgICAgICAgICJtaWNyb2JsYXplZWItbGludXgiIDogIm1pY3JvYmxhemUtbGludXgiLAorICAgICAgICAibWljcm9ibGF6ZWViLWxpbnV4LW11c2wiIDogIm1pY3JvYmxhemUtbGludXgiLAorICAgICAgICAibWljcm9ibGF6ZWVsLWxpbnV4IiA6ICJtaWNyb2JsYXplLWxpbnV4IiwKKyAgICAgICAgIm1pY3JvYmxhemVlbC1saW51eC1tdXNsIiA6ICJtaWNyb2JsYXplLWxpbnV4IiwKICAgICAgICAgIm1pcHMtbGludXgtbXVzbCI6ICJtaXBzLWxpbnV4IiwKICAgICAgICAgIm1pcHNlbC1saW51eC1tdXNsIjogIm1pcHNlbC1saW51eCIsCiAgICAgICAgICJtaXBzNjQtbGludXgtbXVzbCI6ICJtaXBzNjQtbGludXgiLApAQCAtOTUsNiArMTA0LDEwIEBACiAgICAgICAgICJwb3dlcnBjNjQtbGludXgtbXVzbHNwZSI6ICJwb3dlcnBjLWxpbnV4IHBvd2VycGM2NC1saW51eCIsCiAgICAgICAgICJwb3dlcnBjNjQtbGludXgiOiAicG93ZXJwYy1saW51eCIsCiAgICAgICAgICJwb3dlcnBjNjQtbGludXgtbXVzbCI6ICJwb3dlcnBjLWxpbnV4IiwKKyAgICAgICAgInJpc2N2MzItbGludXgiOiAicmlzY3YzMi1saW51eCIsCisgICAgICAgICJyaXNjdjMyLWxpbnV4LW11c2wiOiAicmlzY3YzMi1saW51eCIsCisgICAgICAgICJyaXNjdjY0LWxpbnV4IjogInJpc2N2NjQtbGludXgiLAorICAgICAgICAicmlzY3Y2NC1saW51eC1tdXNsIjogInJpc2N2NjQtbGludXgiLAogICAgICAgICAieDg2XzY0LWN5Z3dpbiI6ICJiaXQtNjQiLAogICAgICAgICAieDg2XzY0LWRhcndpbiI6ICJiaXQtNjQiLAogICAgICAgICAieDg2XzY0LWRhcndpbjkiOiAiYml0LTY0IiwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3N0YXRlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NzdGF0ZS5iYmNsYXNzCmluZGV4IGUzMGZiZTEuLjBiMjg4NTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3N0YXRlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zc3RhdGUuYmJjbGFzcwpAQCAtMjgsNiArMjgsOSBAQAogU1NUQVRFX0RVUFdISVRFTElTVCA9ICIke0RFUExPWV9ESVJfSU1BR0V9LyAke0RFUExPWV9ESVJ9L2xpY2Vuc2VzLyAke0RFUExPWV9ESVJfUlBNfS9ub2FyY2gvIgogIyBBdm9pZCBkb2Nib29rL3NnbWwgY2F0YWxvZyB3YXJuaW5ncyBmb3Igbm93CiBTU1RBVEVfRFVQV0hJVEVMSVNUICs9ICIke1NUQUdJTkdfRVRDRElSX05BVElWRX0vc2dtbCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L3NnbWwiCisjIHNkay1wcm92aWRlcy1kdW1teS1uYXRpdmVzZGsgYW5kIG5hdGl2ZXNkay1idWlsZHRvb2xzLXBlcmwtZHVtbXkgb3ZlcmxhcCBmb3IgZGlmZmVyZW50IFNES01BQ0hJTkUKK1NTVEFURV9EVVBXSElURUxJU1QgKz0gIiR7REVQTE9ZX0RJUl9SUE19L3Nka19wcm92aWRlc19kdW1teV9uYXRpdmVzZGsvICR7REVQTE9ZX0RJUl9JUEt9L3Nkay1wcm92aWRlcy1kdW1teS1uYXRpdmVzZGsvIgorU1NUQVRFX0RVUFdISVRFTElTVCArPSAiJHtERVBMT1lfRElSX1JQTX0vYnVpbGR0b29sc19kdW1teV9uYXRpdmVzZGsvICR7REVQTE9ZX0RJUl9JUEt9L2J1aWxkdG9vbHMtZHVtbXktbmF0aXZlc2RrLyIKICMgQXJjaGl2ZSB0aGUgc291cmNlcyBmb3IgbWFueSBhcmNoaXRlY3R1cmVzIGluIG9uZSBkZXBsb3kgZm9sZGVyCiBTU1RBVEVfRFVQV0hJVEVMSVNUICs9ICIke0RFUExPWV9ESVJfU1JDfSIKIApAQCAtNDUsNyArNDgsOCBAQAogICAgICR7U0RLX0FSQ0h9XyR7UEFDS0FHRV9BUkNIfSBcCiAgICAgYWxsYXJjaCBcCiAgICAgJHtQQUNLQUdFX0FSQ0h9IFwKLSAgICAke01BQ0hJTkV9IgorICAgICR7UEFDS0FHRV9FWFRSQV9BUkNIU30gXAorICAgICR7TUFDSElORV9BUkNIfSIKIAogU1NUQVRFX01BTk1BQ0ggPz0gIiR7U1NUQVRFX1BLR0FSQ0h9IgogCkBAIC01MzgsMTUgKzU0MiwxNSBAQAogICAgIHN0YWdpbmdfaG9zdCA9IGQuZ2V0VmFyKCdSRUNJUEVfU1lTUk9PVF9OQVRJVkUnKQogICAgIHNzdGF0ZV9idWlsZGRpciA9IGQuZ2V0VmFyKCdTU1RBVEVfQlVJTERESVInKQogCisgICAgc3N0YXRlX3NlZF9jbWQgPSAic2VkIC1pIC1lICdzOiVzOkZJWE1FU1RBR0lOR0RJUkhPU1Q6ZyciICUgc3RhZ2luZ19ob3N0CiAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlJywgZCkgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnY3Jvc3MtY2FuYWRpYW4nLCBkKToKICAgICAgICAgc3N0YXRlX2dyZXBfY21kID0gImdyZXAgLWwgLWUgJyVzJyIgJSAoc3RhZ2luZ19ob3N0KQotICAgICAgICBzc3RhdGVfc2VkX2NtZCA9ICJzZWQgLWkgLWUgJ3M6JXM6RklYTUVTVEFHSU5HRElSSE9TVDpnJyIgJSAoc3RhZ2luZ19ob3N0KQogICAgIGVsaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnY3Jvc3MnLCBkKSBvciBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjcm9zc3NkaycsIGQpOgogICAgICAgICBzc3RhdGVfZ3JlcF9jbWQgPSAiZ3JlcCAtbCAtZSAnJXMnIC1lICclcyciICUgKHN0YWdpbmdfdGFyZ2V0LCBzdGFnaW5nX2hvc3QpCi0gICAgICAgIHNzdGF0ZV9zZWRfY21kID0gInNlZCAtaSAtZSAnczolczpGSVhNRVNUQUdJTkdESVJUQVJHRVQ6ZzsgczolczpGSVhNRVNUQUdJTkdESVJIT1NUOmcnIiAlIChzdGFnaW5nX3RhcmdldCwgc3RhZ2luZ19ob3N0KQorICAgICAgICBzc3RhdGVfc2VkX2NtZCArPSAiIC1lICdzOiVzOkZJWE1FU1RBR0lOR0RJUlRBUkdFVDpnJyIgJSBzdGFnaW5nX3RhcmdldAogICAgIGVsc2U6Ci0gICAgICAgIHNzdGF0ZV9ncmVwX2NtZCA9ICJncmVwIC1sIC1lICclcyciICUgKHN0YWdpbmdfdGFyZ2V0KQotICAgICAgICBzc3RhdGVfc2VkX2NtZCA9ICJzZWQgLWkgLWUgJ3M6JXM6RklYTUVTVEFHSU5HRElSVEFSR0VUOmcnIiAlIChzdGFnaW5nX3RhcmdldCkKKyAgICAgICAgc3N0YXRlX2dyZXBfY21kID0gImdyZXAgLWwgLWUgJyVzJyAtZSAnJXMnIiAlIChzdGFnaW5nX3RhcmdldCwgc3RhZ2luZ19ob3N0KQorICAgICAgICBzc3RhdGVfc2VkX2NtZCArPSAiIC1lICdzOiVzOkZJWE1FU1RBR0lOR0RJUlRBUkdFVDpnJyIgJSBzdGFnaW5nX3RhcmdldAogCiAgICAgZXh0cmFfc3RhZ2luZ19maXhtZXMgPSBkLmdldFZhcignRVhUUkFfU1RBR0lOR19GSVhNRVMnKSBvciAnJwogICAgIGZvciBmaXhtZXZhciBpbiBleHRyYV9zdGFnaW5nX2ZpeG1lcy5zcGxpdCgpOgpAQCAtODQ1LDcgKzg0OSw3IEBACiAgICAgICAgICAgICAgICAgbWlzc2VkLmFwcGVuZCh0YXNrKQogICAgICAgICAgICAgICAgIGJiLmRlYnVnKDIsICJTU3RhdGU6IFVuc3VjY2Vzc2Z1bCBmZXRjaCB0ZXN0IGZvciAlcyIgJSBzcmN1cmkpCiAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5Qcm9jZXNzUHJvZ3Jlc3MoIkNoZWNraW5nIHNzdGF0ZSBtaXJyb3Igb2JqZWN0IGF2YWlsYWJpbGl0eSIsIGxlbih0YXNrbGlzdCkgLSB0aHJlYWRfd29ya2VyLnRhc2tzLnFzaXplKCkpLCBkKQorICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5Qcm9jZXNzUHJvZ3Jlc3MobXNnLCBsZW4odGFza2xpc3QpIC0gdGhyZWFkX3dvcmtlci50YXNrcy5xc2l6ZSgpKSwgZCkKIAogICAgICAgICB0YXNrbGlzdCA9IFtdCiAgICAgICAgIGZvciB0YXNrIGluIHJhbmdlKGxlbihzcV9mbikpOgpAQCAtODU2LDcgKzg2MCw4IEBACiAgICAgICAgICAgICB0YXNrbGlzdC5hcHBlbmQoKHRhc2ssIHNzdGF0ZWZpbGUpKQogCiAgICAgICAgIGlmIHRhc2tsaXN0OgotICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5Qcm9jZXNzU3RhcnRlZCgiQ2hlY2tpbmcgc3N0YXRlIG1pcnJvciBvYmplY3QgYXZhaWxhYmlsaXR5IiwgbGVuKHRhc2tsaXN0KSksIGQpCisgICAgICAgICAgICBtc2cgPSAiQ2hlY2tpbmcgc3N0YXRlIG1pcnJvciBvYmplY3QgYXZhaWxhYmlsaXR5IgorICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5Qcm9jZXNzU3RhcnRlZChtc2csIGxlbih0YXNrbGlzdCkpLCBkKQogCiAgICAgICAgICAgICBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCiAgICAgICAgICAgICBucHJvYyA9IG1pbihtdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50KCksIGxlbih0YXNrbGlzdCkpCkBAIC04NzAsNyArODc1LDcgQEAKICAgICAgICAgICAgIHBvb2wud2FpdF9jb21wbGV0aW9uKCkKICAgICAgICAgICAgIGJiLmV2ZW50LmRpc2FibGVfdGhyZWFkbG9jaygpCiAKLSAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuUHJvY2Vzc0ZpbmlzaGVkKCJDaGVja2luZyBzc3RhdGUgbWlycm9yIG9iamVjdCBhdmFpbGFiaWxpdHkiKSwgZCkKKyAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuUHJvY2Vzc0ZpbmlzaGVkKG1zZyksIGQpCiAKICAgICBpbmhlcml0bGlzdCA9IGQuZ2V0VmFyKCJJTkhFUklUIikKICAgICBpZiAidG9hc3RlciIgaW4gaW5oZXJpdGxpc3Q6CkBAIC0xMDIyLDcgKzEwMjcsNyBAQAogICAgICAgICB3aXRoIG9wZW4ocHJlc2VydmVzdGFtcGZpbGUsICdyJykgYXMgZjoKICAgICAgICAgICAgIHByZXNlcnZlc3RhbXBzID0gZi5yZWFkbGluZXMoKQogICAgIHNlZW4gPSBbXQotICAgIGZvciBhIGluIGQuZ2V0VmFyKCJTU1RBVEVfQVJDSFMiKS5zcGxpdCgpOgorICAgIGZvciBhIGluIHNvcnRlZChsaXN0KHNldChkLmdldFZhcigiU1NUQVRFX0FSQ0hTIikuc3BsaXQoKSkpKToKICAgICAgICAgdG9yZW1vdmUgPSBbXQogICAgICAgICBpID0gZC5leHBhbmQoIiR7U1NUQVRFX01BTklGRVNUU30vaW5kZXgtIiArIGEpCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhpKToKQEAgLTEwMzgsMTggKzEwNDMsMjUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHNlZW4uYXBwZW5kKHN0YW1wKQogCiAgICAgICAgIGlmIHRvcmVtb3ZlOgotICAgICAgICAgICAgYmIubm90ZSgiVGhlcmUgYXJlICVkIHJlY2lwZXMgdG8gYmUgcmVtb3ZlZCBmcm9tIHN5c3Jvb3QgJXMsIHJlbW92aW5nLi4uIiAlIChsZW4odG9yZW1vdmUpLCBhKSkKKyAgICAgICAgICAgIG1zZyA9ICJSZW1vdmluZyAlZCByZWNpcGVzIGZyb20gdGhlICVzIHN5c3Jvb3QiICUgKGxlbih0b3JlbW92ZSksIGEpCisgICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LlByb2Nlc3NTdGFydGVkKG1zZywgbGVuKHRvcmVtb3ZlKSksIGQpCiAKLSAgICAgICAgZm9yIHIgaW4gdG9yZW1vdmU6Ci0gICAgICAgICAgICAoc3RhbXAsIG1hbmlmZXN0LCB3b3JrZGlyKSA9IHIuc3BsaXQoKQotICAgICAgICAgICAgZm9yIG0gaW4gZ2xvYi5nbG9iKG1hbmlmZXN0ICsgIi4qIik6Ci0gICAgICAgICAgICAgICAgaWYgbS5lbmRzd2l0aCgiLnBvc3RybSIpOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIHNzdGF0ZV9jbGVhbl9tYW5pZmVzdChtLCBkKQotICAgICAgICAgICAgYmIudXRpbHMucmVtb3ZlKHN0YW1wICsgIioiKQotICAgICAgICAgICAgaWYgcmVtb3Zld29ya2RpcjoKLSAgICAgICAgICAgICAgICBiYi51dGlscy5yZW1vdmUod29ya2RpciwgcmVjdXJzZSA9IFRydWUpCi0gICAgICAgICAgICBsaW5lcy5yZW1vdmUocikKKyAgICAgICAgICAgIHJlbW92ZWQgPSAwCisgICAgICAgICAgICBmb3IgciBpbiB0b3JlbW92ZToKKyAgICAgICAgICAgICAgICAoc3RhbXAsIG1hbmlmZXN0LCB3b3JrZGlyKSA9IHIuc3BsaXQoKQorICAgICAgICAgICAgICAgIGZvciBtIGluIGdsb2IuZ2xvYihtYW5pZmVzdCArICIuKiIpOgorICAgICAgICAgICAgICAgICAgICBpZiBtLmVuZHN3aXRoKCIucG9zdHJtIik6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBzc3RhdGVfY2xlYW5fbWFuaWZlc3QobSwgZCkKKyAgICAgICAgICAgICAgICBiYi51dGlscy5yZW1vdmUoc3RhbXAgKyAiKiIpCisgICAgICAgICAgICAgICAgaWYgcmVtb3Zld29ya2RpcjoKKyAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMucmVtb3ZlKHdvcmtkaXIsIHJlY3Vyc2UgPSBUcnVlKQorICAgICAgICAgICAgICAgIGxpbmVzLnJlbW92ZShyKQorICAgICAgICAgICAgICAgIHJlbW92ZWQgPSByZW1vdmVkICsgMQorICAgICAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuUHJvY2Vzc1Byb2dyZXNzKG1zZywgcmVtb3ZlZCksIGQpCisKKyAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuUHJvY2Vzc0ZpbmlzaGVkKG1zZyksIGQpCisKICAgICAgICAgd2l0aCBvcGVuKGksICJ3IikgYXMgZjoKICAgICAgICAgICAgIGZvciBsIGluIGxpbmVzOgogICAgICAgICAgICAgICAgIGYud3JpdGUobCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3RhZ2luZy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zdGFnaW5nLmJiY2xhc3MKaW5kZXggYzQ3OWJkOS4uM2ZjYmM5ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zdGFnaW5nLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zdGFnaW5nLmJiY2xhc3MKQEAgLTE3MSw3ICsxNzEsNyBAQAogICAgICAgICBmaXhtZV9wYXRoID0gZC5nZXRWYXIoZml4bWV2YXIpCiAgICAgICAgIGNtZCArPSAiIC1lICdzOkZJWE1FXyVzOiVzOmcnIiAlIChmaXhtZXZhciwgZml4bWVfcGF0aCkKICAgICBiYi5kZWJ1ZygyLCBjbWQpCi0gICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzaGVsbD1UcnVlKQorICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc2hlbGw9VHJ1ZSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQogCiAKIGRlZiBzdGFnaW5nX3BvcHVsYXRlX3N5c3Jvb3RfZGlyKHRhcmdldHN5c3Jvb3QsIG5hdGl2ZXN5c3Jvb3QsIG5hdGl2ZSwgZCk6CkBAIC0yMjgsNyArMjI4LDcgQEAKIAogICAgIHN0YWdpbmdfcHJvY2Vzc2ZpeG1lKGZpeG1lLCB0YXJnZXRkaXIsIHRhcmdldHN5c3Jvb3QsIG5hdGl2ZXN5c3Jvb3QsIGQpCiAgICAgZm9yIHAgaW4gcG9zdGluc3RzOgotICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChwLCBzaGVsbD1UcnVlKQorICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChwLCBzaGVsbD1UcnVlLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAKICMKICMgTWFuaWZlc3RzIGhlcmUgYXJlIGNvbXBsaWNhdGVkLiBUaGUgbWFpbiBzeXNyb290IGFyZWEgaGFzIHRoZSB1bnBhY2tlZCBzc3RhdGUKQEAgLTQ3MCw0MCArNDcwLDE0IEBACiAKICAgICAgICAgb3Muc3ltbGluayhjICsgIi4iICsgdGFza2hhc2gsIGRlcGRpciArICIvIiArIGMpCiAKLSAgICAgICAgZDIgPSBkCi0gICAgICAgIGRlc3RzeXNyb290ID0gcmVjaXBlc3lzcm9vdAotICAgICAgICB2YXJpYW50ID0gJycKLSAgICAgICAgaWYgc2V0c2NlbmVkZXBzW2RlcF1bMl0uc3RhcnRzd2l0aCgidmlydHVhbDptdWx0aWxpYiIpOgotICAgICAgICAgICAgdmFyaWFudCA9IHNldHNjZW5lZGVwc1tkZXBdWzJdLnNwbGl0KCI6IilbMl0KLSAgICAgICAgICAgIGlmIHZhcmlhbnQgIT0gY3VycmVudF92YXJpYW50OgotICAgICAgICAgICAgICAgIGlmIHZhcmlhbnQgbm90IGluIG11bHRpbGliczoKLSAgICAgICAgICAgICAgICAgICAgbXVsdGlsaWJzW3ZhcmlhbnRdID0gZ2V0X211bHRpbGliX2RhdGFzdG9yZSh2YXJpYW50LCBkKQotICAgICAgICAgICAgICAgIGQyID0gbXVsdGlsaWJzW3ZhcmlhbnRdCi0gICAgICAgICAgICAgICAgZGVzdHN5c3Jvb3QgPSBkMi5nZXRWYXIoIlJFQ0lQRV9TWVNST09UIikKKyAgICAgICAgbWFuaWZlc3QsIGQyID0gb2Uuc3N0YXRlc2lnLmZpbmRfc3N0YXRlX21hbmlmZXN0KGMsIHNldHNjZW5lZGVwc1tkZXBdWzJdLCAicG9wdWxhdGVfc3lzcm9vdCIsIGQsIG11bHRpbGlicykKKyAgICAgICAgZGVzdHN5c3Jvb3QgPSBkMi5nZXRWYXIoIlJFQ0lQRV9TWVNST09UIikKIAogICAgICAgICBuYXRpdmUgPSBGYWxzZQotICAgICAgICBpZiBjLmVuZHN3aXRoKCItbmF0aXZlIik6Ci0gICAgICAgICAgICBtYW5pZmVzdCA9IGQyLmV4cGFuZCgiJHtTU1RBVEVfTUFOSUZFU1RTfS9tYW5pZmVzdC0ke0JVSUxEX0FSQ0h9LSVzLnBvcHVsYXRlX3N5c3Jvb3QiICUgYykKKyAgICAgICAgaWYgYy5lbmRzd2l0aCgiLW5hdGl2ZSIpIG9yICItY3Jvc3MtIiBpbiBjIG9yICItY3Jvc3NzZGsiIGluIGM6CiAgICAgICAgICAgICBuYXRpdmUgPSBUcnVlCi0gICAgICAgIGVsaWYgYy5zdGFydHN3aXRoKCJuYXRpdmVzZGstIik6Ci0gICAgICAgICAgICBtYW5pZmVzdCA9IGQyLmV4cGFuZCgiJHtTU1RBVEVfTUFOSUZFU1RTfS9tYW5pZmVzdC0ke1NES19BUkNIfV8ke1NES19PU30tJXMucG9wdWxhdGVfc3lzcm9vdCIgJSBjKQotICAgICAgICBlbGlmICItY3Jvc3MtIiBpbiBjOgotICAgICAgICAgICAgbWFuaWZlc3QgPSBkMi5leHBhbmQoIiR7U1NUQVRFX01BTklGRVNUU30vbWFuaWZlc3QtJHtCVUlMRF9BUkNIfV8ke1RBUkdFVF9BUkNIfS0lcy5wb3B1bGF0ZV9zeXNyb290IiAlIGMpCi0gICAgICAgICAgICBuYXRpdmUgPSBUcnVlCi0gICAgICAgIGVsaWYgIi1jcm9zc3NkayIgaW4gYzoKLSAgICAgICAgICAgIG1hbmlmZXN0ID0gZDIuZXhwYW5kKCIke1NTVEFURV9NQU5JRkVTVFN9L21hbmlmZXN0LSR7QlVJTERfQVJDSH1fJHtTREtfQVJDSH1fJHtTREtfT1N9LSVzLnBvcHVsYXRlX3N5c3Jvb3QiICUgYykKLSAgICAgICAgICAgIG5hdGl2ZSA9IFRydWUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBrZ2FyY2hzID0gWycke01BQ0hJTkVfQVJDSH0nXQotICAgICAgICAgICAgcGtnYXJjaHMgPSBwa2dhcmNocyArIGxpc3QocmV2ZXJzZWQoZDIuZ2V0VmFyKCJQQUNLQUdFX0VYVFJBX0FSQ0hTIikuc3BsaXQoKSkpCi0gICAgICAgICAgICBwa2dhcmNocy5hcHBlbmQoJ2FsbGFyY2gnKQotICAgICAgICAgICAgZm9yIHBrZ2FyY2ggaW4gcGtnYXJjaHM6Ci0gICAgICAgICAgICAgICAgbWFuaWZlc3QgPSBkMi5leHBhbmQoIiR7U1NUQVRFX01BTklGRVNUU30vbWFuaWZlc3QtJXMtJXMucG9wdWxhdGVfc3lzcm9vdCIgJSAocGtnYXJjaCwgYykpCi0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobWFuaWZlc3QpOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobWFuaWZlc3QpOgotICAgICAgICAgICAgYmIud2FybigiTWFuaWZlc3QgJXMgbm90IGZvdW5kPyIgJSBtYW5pZmVzdCkKLSAgICAgICAgZWxzZToKKworICAgICAgICBpZiBtYW5pZmVzdDoKICAgICAgICAgICAgIG5ld21hbmlmZXN0ID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKQogICAgICAgICAgICAgaWYgbmF0aXZlOgogICAgICAgICAgICAgICAgIGZtID0gZml4bWVbJ25hdGl2ZSddCkBAIC01NzYsNyArNTUwLDcgQEAKICAgICAgICAgICAgIHN0YWdpbmdfcHJvY2Vzc2ZpeG1lKGZpeG1lW2ZdLCBtdWx0aWxpYnNbZl0uZ2V0VmFyKCJSRUNJUEVfU1lTUk9PVCIpLCByZWNpcGVzeXNyb290LCByZWNpcGVzeXNyb290bmF0aXZlLCBkKQogCiAgICAgZm9yIHAgaW4gcG9zdGluc3RzOgotICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChwLCBzaGVsbD1UcnVlKQorICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChwLCBzaGVsbD1UcnVlLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAKICAgICBmb3IgZGVwIGluIG1hbmlmZXN0czoKICAgICAgICAgYyA9IHNldHNjZW5lZGVwc1tkZXBdWzBdCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N5c2xpbnV4LmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N5c2xpbnV4LmJiY2xhc3MKaW5kZXggZDZmODgyNC4uMDMxZGFjYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zeXNsaW51eC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3lzbGludXguYmJjbGFzcwpAQCAtMTczLDggKzE3Myw5IEBACiAgICAgICAgIGlmIG5vdCByb290OgogICAgICAgICAgICAgYmIuZmF0YWwoJ1NZU0xJTlVYX1JPT1Qgbm90IGRlZmluZWQnKQogCisgICAgICAgIGtlcm5lbCA9IGxvY2FsZGF0YS5nZXRWYXIoJ0tFUk5FTF9JTUFHRVRZUEUnKQogICAgICAgICBmb3IgYnR5cGUgaW4gYnR5cGVzOgotICAgICAgICAgICAgY2ZnZmlsZS53cml0ZSgnTEFCRUwgJXMlc1xuS0VSTkVMIC92bWxpbnV6XG4nICUgKGJ0eXBlWzBdLCBsYWJlbCkpCisgICAgICAgICAgICBjZmdmaWxlLndyaXRlKCdMQUJFTCAlcyVzXG5LRVJORUwgLyVzXG4nICUgKGJ0eXBlWzBdLCBsYWJlbCwga2VybmVsKSkKIAogICAgICAgICAgICAgZXhhcmdzID0gZC5nZXRWYXIoJ1NZU0xJTlVYX0tFUk5FTF9BUkdTJykKICAgICAgICAgICAgIGlmIGV4YXJnczoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3lzdGVtZC1ib290LWNmZy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zeXN0ZW1kLWJvb3QtY2ZnLmJiY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDIxYzlmOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3lzdGVtZC1ib290LWNmZy5iYmNsYXNzCkBAIC0wLDAgKzEsNjggQEAKK1NZU1RFTURfQk9PVF9DRkcgPz0gIiR7U30vbG9hZGVyLmNvbmYiCitTWVNURU1EX0JPT1RfRU5UUklFUyA/PSAiIgorU1lTVEVNRF9CT09UX1RJTUVPVVQgPz0gIjEwIgorCisjIE5lZWQgVVVJRCB1dGlsaXR5IGNvZGUuCitpbmhlcml0IGZzLXV1aWQKKworcHl0aG9uIGJ1aWxkX2VmaV9jZmcoKSB7CisgICAgcyA9IGQuZ2V0VmFyKCJTIikKKyAgICBsYWJlbHMgPSBkLmdldFZhcignTEFCRUxTJykKKyAgICBpZiBub3QgbGFiZWxzOgorICAgICAgICBiYi5kZWJ1ZygxLCAiTEFCRUxTIG5vdCBkZWZpbmVkLCBub3RoaW5nIHRvIGRvIikKKyAgICAgICAgcmV0dXJuCisKKyAgICBpZiBsYWJlbHMgPT0gW106CisgICAgICAgIGJiLmRlYnVnKDEsICJObyBsYWJlbHMsIG5vdGhpbmcgdG8gZG8iKQorICAgICAgICByZXR1cm4KKworICAgIGNmaWxlID0gZC5nZXRWYXIoJ1NZU1RFTURfQk9PVF9DRkcnKQorICAgIGNkaXIgPSBvcy5wYXRoLmRpcm5hbWUoY2ZpbGUpCisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGNkaXIpOgorICAgICAgICBvcy5tYWtlZGlycyhjZGlyKQorICAgIHRyeToKKyAgICAgICAgIGNmZ2ZpbGUgPSBvcGVuKGNmaWxlLCAndycpCisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgIGJiLmZhdGFsKCdVbmFibGUgdG8gb3BlbiAlcycgJSBjZmlsZSkKKworICAgIGNmZ2ZpbGUud3JpdGUoJyMgQXV0b21hdGljYWxseSBjcmVhdGVkIGJ5IE9FXG4nKQorICAgIGNmZ2ZpbGUud3JpdGUoJ2RlZmF1bHQgJXNcbicgJSAobGFiZWxzLnNwbGl0KClbMF0pKQorICAgIHRpbWVvdXQgPSBkLmdldFZhcignU1lTVEVNRF9CT09UX1RJTUVPVVQnKQorICAgIGlmIHRpbWVvdXQ6CisgICAgICAgIGNmZ2ZpbGUud3JpdGUoJ3RpbWVvdXQgJXNcbicgJSB0aW1lb3V0KQorICAgIGVsc2U6CisgICAgICAgIGNmZ2ZpbGUud3JpdGUoJ3RpbWVvdXQgMTBcbicpCisgICAgY2ZnZmlsZS5jbG9zZSgpCisKKyAgICBmb3IgbGFiZWwgaW4gbGFiZWxzLnNwbGl0KCk6CisgICAgICAgIGxvY2FsZGF0YSA9IGQuY3JlYXRlQ29weSgpCisKKyAgICAgICAgZW50cnlmaWxlID0gIiVzLyVzLmNvbmYiICUgKHMsIGxhYmVsKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocyk6CisgICAgICAgICAgICBvcy5tYWtlZGlycyhzKQorICAgICAgICBkLmFwcGVuZFZhcigiU1lTVEVNRF9CT09UX0VOVFJJRVMiLCAiICIgKyBlbnRyeWZpbGUpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGVudHJ5Y2ZnID0gb3BlbihlbnRyeWZpbGUsICJ3IikKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBiYi5mYXRhbCgnVW5hYmxlIHRvIG9wZW4gJXMnICUgZW50cnlmaWxlKQorCisgICAgICAgIGVudHJ5Y2ZnLndyaXRlKCd0aXRsZSAlc1xuJyAlIGxhYmVsKQorCisgICAgICAgIGtlcm5lbCA9IGxvY2FsZGF0YS5nZXRWYXIoIktFUk5FTF9JTUFHRVRZUEUiKQorICAgICAgICBlbnRyeWNmZy53cml0ZSgnbGludXggLyVzXG4nICUga2VybmVsKQorCisgICAgICAgIGFwcGVuZCA9IGxvY2FsZGF0YS5nZXRWYXIoJ0FQUEVORCcpCisgICAgICAgIGluaXRyZCA9IGxvY2FsZGF0YS5nZXRWYXIoJ0lOSVRSRCcpCisKKyAgICAgICAgaWYgaW5pdHJkOgorICAgICAgICAgICAgZW50cnljZmcud3JpdGUoJ2luaXRyZCAvaW5pdHJkXG4nKQorICAgICAgICBsYiA9IGxhYmVsCisgICAgICAgIGlmIGxhYmVsID09ICJpbnN0YWxsIjoKKyAgICAgICAgICAgIGxiID0gImluc3RhbGwtZWZpIgorICAgICAgICBlbnRyeWNmZy53cml0ZSgnb3B0aW9ucyBMQUJFTD0lcyAnICUgbGIpCisgICAgICAgIGlmIGFwcGVuZDoKKyAgICAgICAgICAgIGFwcGVuZCA9IHJlcGxhY2Vfcm9vdGZzX3V1aWQoZCwgYXBwZW5kKQorICAgICAgICAgICAgZW50cnljZmcud3JpdGUoJyVzJyAlIGFwcGVuZCkKKyAgICAgICAgZW50cnljZmcud3JpdGUoJ1xuJykKKyAgICAgICAgZW50cnljZmcuY2xvc2UoKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zeXN0ZW1kLWJvb3QuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3lzdGVtZC1ib290LmJiY2xhc3MKaW5kZXggOTM3MzA3MC4uM2NkNjgxMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zeXN0ZW1kLWJvb3QuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N5c3RlbWQtYm9vdC5iYmNsYXNzCkBAIC0xMiwxMSArMTIsNiBAQAogZG9fYm9vdGltZ1tkZXBlbmRzXSArPSAiJHtNTFBSRUZJWH1zeXN0ZW1kLWJvb3Q6ZG9fZGVwbG95IgogCiBFRklESVIgPSAiL0VGSS9CT09UIgotCi1TWVNURU1EX0JPT1RfQ0ZHID89ICIke1N9L2xvYWRlci5jb25mIgotU1lTVEVNRF9CT09UX0VOVFJJRVMgPz0gIiIKLVNZU1RFTURfQk9PVF9USU1FT1VUID89ICIxMCIKLQogIyBOZWVkIFVVSUQgdXRpbGl0eSBjb2RlLgogaW5oZXJpdCBmcy11dWlkCiAKQEAgLTUwLDcgKzQ1LDcgQEAKICAgICAgICAgbWtkaXIgLXAgJHtFRklJTUdESVJ9LyR7RUZJRElSfQogICAgICAgICBjcCAkaXNvX2Rpci8ke0VGSURJUn0vKiAke0VGSUlNR0RJUn0ke0VGSURJUn0KICAgICAgICAgY3AgLXIgJGlzb19kaXIvbG9hZGVyICR7RUZJSU1HRElSfQotICAgICAgICBjcCAkaXNvX2Rpci92bWxpbnV6ICR7RUZJSU1HRElSfQorICAgICAgICBjcCAkaXNvX2Rpci8ke0tFUk5FTF9JTUFHRVRZUEV9ICR7RUZJSU1HRElSfQogICAgICAgICBFRklQQVRIPSQoZWNobyAiJHtFRklESVJ9IiB8IHNlZCAncy9cLy9cXC9nJykKICAgICAgICAgZWNobyAiZnMwOiR7RUZJUEFUSH1cXCR7REVTVF9FRklfSU1BR0V9IiA+ICR7RUZJSU1HRElSfS9zdGFydHVwLm5zaAogICAgICAgICBpZiBbIC1mICIkaXNvX2Rpci9pbml0cmQiIF0gOyB0aGVuCkBAIC02Miw2NyArNTcsNCBAQAogICAgICAgICBlZmlfcG9wdWxhdGUgJDEKIH0KIAotcHl0aG9uIGJ1aWxkX2VmaV9jZmcoKSB7Ci0gICAgcyA9IGQuZ2V0VmFyKCJTIikKLSAgICBsYWJlbHMgPSBkLmdldFZhcignTEFCRUxTJykKLSAgICBpZiBub3QgbGFiZWxzOgotICAgICAgICBiYi5kZWJ1ZygxLCAiTEFCRUxTIG5vdCBkZWZpbmVkLCBub3RoaW5nIHRvIGRvIikKLSAgICAgICAgcmV0dXJuCi0KLSAgICBpZiBsYWJlbHMgPT0gW106Ci0gICAgICAgIGJiLmRlYnVnKDEsICJObyBsYWJlbHMsIG5vdGhpbmcgdG8gZG8iKQotICAgICAgICByZXR1cm4KLQotICAgIGNmaWxlID0gZC5nZXRWYXIoJ1NZU1RFTURfQk9PVF9DRkcnKQotICAgIGNkaXIgPSBvcy5wYXRoLmRpcm5hbWUoY2ZpbGUpCi0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGNkaXIpOgotICAgICAgICBvcy5tYWtlZGlycyhjZGlyKQotICAgIHRyeToKLSAgICAgICAgIGNmZ2ZpbGUgPSBvcGVuKGNmaWxlLCAndycpCi0gICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgIGJiLmZhdGFsKCdVbmFibGUgdG8gb3BlbiAlcycgJSBjZmlsZSkKLQotICAgIGNmZ2ZpbGUud3JpdGUoJyMgQXV0b21hdGljYWxseSBjcmVhdGVkIGJ5IE9FXG4nKQotICAgIGNmZ2ZpbGUud3JpdGUoJ2RlZmF1bHQgJXNcbicgJSAobGFiZWxzLnNwbGl0KClbMF0pKQotICAgIHRpbWVvdXQgPSBkLmdldFZhcignU1lTVEVNRF9CT09UX1RJTUVPVVQnKQotICAgIGlmIHRpbWVvdXQ6Ci0gICAgICAgIGNmZ2ZpbGUud3JpdGUoJ3RpbWVvdXQgJXNcbicgJSB0aW1lb3V0KQotICAgIGVsc2U6Ci0gICAgICAgIGNmZ2ZpbGUud3JpdGUoJ3RpbWVvdXQgMTBcbicpCi0gICAgY2ZnZmlsZS5jbG9zZSgpCi0KLSAgICBmb3IgbGFiZWwgaW4gbGFiZWxzLnNwbGl0KCk6Ci0gICAgICAgIGxvY2FsZGF0YSA9IGQuY3JlYXRlQ29weSgpCi0KLSAgICAgICAgb3ZlcnJpZGVzID0gbG9jYWxkYXRhLmdldFZhcignT1ZFUlJJREVTJykKLSAgICAgICAgaWYgbm90IG92ZXJyaWRlczoKLSAgICAgICAgICAgIGJiLmZhdGFsKCdPVkVSUklERVMgbm90IGRlZmluZWQnKQotCi0gICAgICAgIGVudHJ5ZmlsZSA9ICIlcy8lcy5jb25mIiAlIChzLCBsYWJlbCkKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHMpOgotICAgICAgICAgICAgb3MubWFrZWRpcnMocykKLSAgICAgICAgZC5hcHBlbmRWYXIoIlNZU1RFTURfQk9PVF9FTlRSSUVTIiwgIiAiICsgZW50cnlmaWxlKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBlbnRyeWNmZyA9IG9wZW4oZW50cnlmaWxlLCAidyIpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgYmIuZmF0YWwoJ1VuYWJsZSB0byBvcGVuICVzJyAlIGVudHJ5ZmlsZSkKLSAgICAgICAgbG9jYWxkYXRhLnNldFZhcignT1ZFUlJJREVTJywgbGFiZWwgKyAnOicgKyBvdmVycmlkZXMpCi0KLSAgICAgICAgZW50cnljZmcud3JpdGUoJ3RpdGxlICVzXG4nICUgbGFiZWwpCi0gICAgICAgIGVudHJ5Y2ZnLndyaXRlKCdsaW51eCAvdm1saW51elxuJykKLQotICAgICAgICBhcHBlbmQgPSBsb2NhbGRhdGEuZ2V0VmFyKCdBUFBFTkQnKQotICAgICAgICBpbml0cmQgPSBsb2NhbGRhdGEuZ2V0VmFyKCdJTklUUkQnKQotCi0gICAgICAgIGlmIGluaXRyZDoKLSAgICAgICAgICAgIGVudHJ5Y2ZnLndyaXRlKCdpbml0cmQgL2luaXRyZFxuJykKLSAgICAgICAgbGIgPSBsYWJlbAotICAgICAgICBpZiBsYWJlbCA9PSAiaW5zdGFsbCI6Ci0gICAgICAgICAgICBsYiA9ICJpbnN0YWxsLWVmaSIKLSAgICAgICAgZW50cnljZmcud3JpdGUoJ29wdGlvbnMgTEFCRUw9JXMgJyAlIGxiKQotICAgICAgICBpZiBhcHBlbmQ6Ci0gICAgICAgICAgICBhcHBlbmQgPSByZXBsYWNlX3Jvb3Rmc191dWlkKGQsIGFwcGVuZCkKLSAgICAgICAgICAgIGVudHJ5Y2ZnLndyaXRlKCclcycgJSBhcHBlbmQpCi0gICAgICAgIGVudHJ5Y2ZnLndyaXRlKCdcbicpCi0gICAgICAgIGVudHJ5Y2ZnLmNsb3NlKCkKLX0KK2luaGVyaXQgc3lzdGVtZC1ib290LWNmZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0aW1hZ2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdGVzdGltYWdlLmJiY2xhc3MKaW5kZXggNDViYjJiZC4uNzcyOTFjMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0aW1hZ2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlc3RpbWFnZS5iYmNsYXNzCkBAIC00NCwyMCArNDQsMjIgQEAKIERFRkFVTFRfVEVTVF9TVUlURVMgPSAiJHtNSU5URVNUU1VJVEV9IGF1dG8iCiBERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2UtbWluaW1hbCA9ICIke01JTlRFU1RTVUlURX0iCiBERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2UtbWluaW1hbC1kZXYgPSAiJHtNSU5URVNUU1VJVEV9IgotREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLWZ1bGwtY21kbGluZSA9ICIke05FVFRFU1RTVUlURX0gcGVybCBweXRob24gbG9ncm90YXRlIgorREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLWZ1bGwtY21kbGluZSA9ICIke05FVFRFU1RTVUlURX0gcGVybCBweXRob24gbG9ncm90YXRlIHB0ZXN0IgogREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLXgxMSA9ICIke01JTlRFU1RTVUlURX0iCi1ERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2UtbHNiID0gIiR7TkVUVEVTVFNVSVRFfSBwYW0gcGFyc2Vsb2dzICR7UlBNVEVTVFNVSVRFfSIKK0RFRkFVTFRfVEVTVF9TVUlURVNfcG4tY29yZS1pbWFnZS1sc2IgPSAiJHtORVRURVNUU1VJVEV9IHBhbSBwYXJzZWxvZ3MgJHtSUE1URVNUU1VJVEV9IHB0ZXN0IgogREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLXNhdG8gPSAiJHtORVRURVNUU1VJVEV9IGNvbm5tYW4geG9yZyBwYXJzZWxvZ3MgJHtSUE1URVNUU1VJVEV9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnSU1BR0VfUEtHVFlQRScsICdycG0nLCAncHl0aG9uJywgJycsIGQpfSIKKyAgICAke0BiYi51dGlscy5jb250YWlucygnSU1BR0VfUEtHVFlQRScsICdycG0nLCAncHl0aG9uJywgJycsIGQpfSBwdGVzdCBnaSIKIERFRkFVTFRfVEVTVF9TVUlURVNfcG4tY29yZS1pbWFnZS1zYXRvLXNkayA9ICIke05FVFRFU1RTVUlURX0gYnVpbGRjcGlvIGJ1aWxkbHppcCBidWlsZGdhbGN1bGF0b3IgXAotICAgIGNvbm5tYW4gJHtERVZURVNUU1VJVEV9IGxvZ3JvdGF0ZSBwZXJsIHBhcnNlbG9ncyBweXRob24gJHtSUE1URVNUU1VJVEV9IHhvcmciCi1ERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2UtbHNiLWRldiA9ICIke05FVFRFU1RTVUlURX0gcGFtIHBlcmwgcHl0aG9uIHBhcnNlbG9ncyAke1JQTVRFU1RTVUlURX0iCisgICAgY29ubm1hbiAke0RFVlRFU1RTVUlURX0gbG9ncm90YXRlIHBlcmwgcGFyc2Vsb2dzIHB5dGhvbiAke1JQTVRFU1RTVUlURX0geG9yZyBwdGVzdCBnaSBzdGFwIgorREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLWxzYi1kZXYgPSAiJHtORVRURVNUU1VJVEV9IHBhbSBwZXJsIHB5dGhvbiBwYXJzZWxvZ3MgJHtSUE1URVNUU1VJVEV9IHB0ZXN0IGdpIgogREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLWxzYi1zZGsgPSAiJHtORVRURVNUU1VJVEV9IGJ1aWxkY3BpbyBidWlsZGx6aXAgYnVpbGRnYWxjdWxhdG9yIFwKLSAgICBjb25ubWFuICR7REVWVEVTVFNVSVRFfSBsb2dyb3RhdGUgcGFtIHBhcnNlbG9ncyBwZXJsIHB5dGhvbiAke1JQTVRFU1RTVUlURX0iCisgICAgY29ubm1hbiAke0RFVlRFU1RTVUlURX0gbG9ncm90YXRlIHBhbSBwYXJzZWxvZ3MgcGVybCBweXRob24gJHtSUE1URVNUU1VJVEV9IHB0ZXN0IGdpIHN0YXAiCiBERUZBVUxUX1RFU1RfU1VJVEVTX3BuLW1ldGEtdG9vbGNoYWluID0gImF1dG8iCiAKICMgYWFyY2g2NCBoYXMgbm8gZ3JhcGhpY3MKIERFRkFVTFRfVEVTVF9TVUlURVNfcmVtb3ZlX2FhcmNoNjQgPSAieG9yZyIKKyMgbXVzbCBkb2Vzbid0IHN1cHBvcnQgc3lzdGVtdGFwCitERUZBVUxUX1RFU1RfU1VJVEVTX3JlbW92ZV9saWJjLW11c2wgPSAic3RhcCIKIAogIyBxZW11bWlwcyBpcyBxdWl0ZSBzbG93IGFuZCBoYXMgcmVhY2hlZCB0aGUgdGltZW91dCBsaW1pdCBzZXZlcmFsIHRpbWVzIG9uIHRoZSBZUCBidWlsZCBjbHVzdGVyLAogIyBtaXRpZ2F0ZSB0aGlzIGJ5IHJlbW92aW5nIGJ1aWxkIHRlc3RzIGZvciBxZW11bWlwcyBtYWNoaW5lcy4KQEAgLTIxNSw3ICsyMTcsNyBAQAogICAgICMgR2V0IHVzZV9rdm0KICAgICBxZW11X3VzZV9rdm0gPSBkLmdldFZhcigiUUVNVV9VU0VfS1ZNIikKICAgICBpZiBxZW11X3VzZV9rdm0gYW5kIFwKLSAgICAgICAocWVtdV91c2Vfa3ZtID09ICdUcnVlJyBhbmQgJ3g4NicgaW4gbWFjaGluZSBvciBcCisgICAgICAgKG9lLnR5cGVzLmJvb2xlYW4ocWVtdV91c2Vfa3ZtKSBhbmQgJ3g4NicgaW4gbWFjaGluZSBvciBcCiAgICAgICAgIGQuZ2V0VmFyKCdNQUNISU5FJykgaW4gcWVtdV91c2Vfa3ZtLnNwbGl0KCkpOgogICAgICAgICBrdm0gPSBUcnVlCiAgICAgZWxzZToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdGVzdHNkay5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0c2RrLmJiY2xhc3MKaW5kZXggNmI1MWEzMy4uMmU0MzM0MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0c2RrLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0c2RrLmJiY2xhc3MKQEAgLTE1NiwxMCArMTU2LDExIEBACiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2RrX2RpciwgJ2NvbmYnLCAnYXV0by5jb25mJyksICdhKycpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKCdTU1RBVEVfTUlSUk9SUyArPSAiIFxcbiBmaWxlOi8vLiogZmlsZTovLyVzL1BBVEgiXG4nICUgdGVzdF9kYXRhLmdldCgnU1NUQVRFX0RJUicpKQogICAgICAgICAgICAgZi53cml0ZSgnU09VUkNFX01JUlJPUl9VUkwgPSAiZmlsZTovLyVzIlxuJyAlIHRlc3RfZGF0YS5nZXQoJ0RMX0RJUicpKQotICAgICAgICAgICAgZi53cml0ZSgnSU5IRVJJVCArPSAib3duLW1pcnJvcnMiJykKKyAgICAgICAgICAgIGYud3JpdGUoJ0lOSEVSSVQgKz0gIm93bi1taXJyb3JzIlxuJykKIAogICAgICAgICAjIFdlIG5lZWQgdG8gZG8gdGhpcyBpbiBjYXNlIHdlIGhhdmUgYSBtaW5pbWFsIFNESwotICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgiLiAlcyA+IC9kZXYvbnVsbDsgZGV2dG9vbCBzZGstaW5zdGFsbCBtZXRhLWV4dHNkay10b29sY2hhaW4iICUgc2RrX2VudiwgY3dkPXNka19kaXIsIHNoZWxsPVRydWUpCisgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCIuICVzID4gL2Rldi9udWxsOyBkZXZ0b29sIHNkay1pbnN0YWxsIG1ldGEtZXh0c2RrLXRvb2xjaGFpbiIgJSBcCisgICAgICAgICAgICAgICAgc2RrX2VudiwgY3dkPXNka19kaXIsIHNoZWxsPVRydWUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKIAogICAgICAgICB0YyA9IE9FU0RLRXh0VGVzdENvbnRleHQodGQ9dGVzdF9kYXRhLCBsb2dnZXI9bG9nZ2VyLCBzZGtfZGlyPXNka19kaXIsCiAgICAgICAgICAgICBzZGtfZW52PXNka19lbnYsIHRhcmdldF9wa2dfbWFuaWZlc3Q9dGFyZ2V0X3BrZ19tYW5pZmVzdCwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdG9vbGNoYWluLXNjcmlwdHMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdG9vbGNoYWluLXNjcmlwdHMuYmJjbGFzcwppbmRleCA5YmNmZTcwLi43MWRhNWU1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rvb2xjaGFpbi1zY3JpcHRzLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90b29sY2hhaW4tc2NyaXB0cy5iYmNsYXNzCkBAIC02Miw3ICs2Miw4IEBACiAJc2NyaXB0PSR7VE1QRElSfS9lbnZpcm9ubWVudC1zZXR1cC0ke1JFQUxfTVVMVElNQUNIX1RBUkdFVF9TWVN9CiAJcm0gLWYgJHNjcmlwdAogCXRvdWNoICRzY3JpcHQKLQllY2hvICdleHBvcnQgUEFUSD0ke1NUQUdJTkdfRElSX05BVElWRX0vdXNyL2Jpbjoke1BBVEh9JyA+PiAkc2NyaXB0CisJZWNobyAnb3JpZz1gcHdkYDsgY2QgJHtDT1JFQkFTRX07IC4gLi9vZS1pbml0LWJ1aWxkLWVudiAke1RPUERJUn07IGNkICRvcmlnJyA+PiAkc2NyaXB0CisJZWNobyAnZXhwb3J0IFBBVEg9JHtTVEFHSU5HX0RJUl9OQVRJVkV9L3Vzci9iaW46JHtTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU59OiRQQVRIJyA+PiAkc2NyaXB0CiAJZWNobyAnZXhwb3J0IFBLR19DT05GSUdfU1lTUk9PVF9ESVI9JHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfScgPj4gJHNjcmlwdAogCWVjaG8gJ2V4cG9ydCBQS0dfQ09ORklHX1BBVEg9JHtQS0dfQ09ORklHX1BBVEh9JyA+PiAkc2NyaXB0CiAJZWNobyAnZXhwb3J0IENPTkZJR19TSVRFPSIke0BzaXRlaW5mb19nZXRfZmlsZXMoZCl9IicgPj4gJHNjcmlwdApAQCAtMTE2LDYgKzExNywyMSBAQAogRU9GCiB9CiAKK3Rvb2xjaGFpbl9jcmVhdGVfcG9zdF9yZWxvY2F0ZV9zY3JpcHQoKSB7CisJc2NyaXB0PSQxCisJcm0gLWYgJHNjcmlwdAorCXRvdWNoICRzY3JpcHQKKworICAgIGNhdCA+PiAkc2NyaXB0IDw8RU9GCitpZiBbIC1kICIke1NES1BBVEhOQVRJVkV9L3Bvc3QtcmVsb2NhdGUtc2V0dXAuZC8iIF07IHRoZW4KKyAgICBmb3IgcyBpbiAke1NES1BBVEhOQVRJVkV9L3Bvc3QtcmVsb2NhdGUtc2V0dXAuZC8qLnNoOyBkbworICAgICAgICBcJHMgIlwkMSIKKyAgICBkb25lCisgICAgcm0gLXJmICIke1NES1BBVEhOQVRJVkV9L3Bvc3QtcmVsb2NhdGUtc2V0dXAuZCIKK2ZpCitFT0YKK30KKwogI3dlIGdldCB0aGUgY2FjaGVkIHNpdGUgY29uZmlnIGluIHRoZSBydW50aW1lCiBUT09MQ0hBSU5fQ09ORklHU0lURV9OT0NBQ0hFID0gIiR7QHNpdGVpbmZvX2dldF9maWxlcyhkKX0iCiBUT09MQ0hBSU5fQ09ORklHU0lURV9TWVNST09UQ0FDSEUgPSAiJHtTVEFHSU5HX0RJUn0vJHtNTFBSRUZJWH0ke01BQ0hJTkV9LyR7dGFyZ2V0X2RhdGFkaXJ9LyR7VEFSR0VUX1NZU31fY29uZmlnX3NpdGUuZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdWJvb3QtY29uZmlnLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Vib290LWNvbmZpZy5iYmNsYXNzCmluZGV4IDUzM2UxNzUuLjg5ZmY5NzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdWJvb3QtY29uZmlnLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91Ym9vdC1jb25maWcuYmJjbGFzcwpAQCAtMjcsMTMgKzI3LDEzIEBACiAgICAgICAgIEZJTEUgPSBvcy5wYXRoLmJhc2VuYW1lKGQuZ2V0VmFyKCJGSUxFIikpCiAgICAgICAgIGJiLmRlYnVnKDEsICJUbyBidWlsZCAlcywgc2VlICVzIGZvciBpbnN0cnVjdGlvbnMgb24gXAogICAgICAgICAgICAgICAgICBzZXR0aW5nIHVwIHlvdXIgbWFjaGluZSBjb25maWciICUgKFBOLCBGSUxFKSkKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIkVpdGhlciBVQk9PVF9NQUNISU5FIG9yIFVCT09UX0NPTkZJRyBtdXN0IGJlIHNldCBpbiB0aGUgJXMgbWFjaGluZSBjb25maWd1cmF0aW9uLiIgJSBkLmdldFZhcigiTUFDSElORSIpKQorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJFaXRoZXIgVUJPT1RfTUFDSElORSBvciBVQk9PVF9DT05GSUcgbXVzdCBiZSBzZXQgaW4gdGhlICVzIG1hY2hpbmUgY29uZmlndXJhdGlvbi4iICUgZC5nZXRWYXIoIk1BQ0hJTkUiKSkKIAogICAgIGlmIHVib290bWFjaGluZSBhbmQgdWJvb3Rjb25maWc6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJZb3UgY2Fubm90IHVzZSBVQk9PVF9NQUNISU5FIGFuZCBVQk9PVF9DT05GSUcgYXQgdGhlIHNhbWUgdGltZS4iKQorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJZb3UgY2Fubm90IHVzZSBVQk9PVF9NQUNISU5FIGFuZCBVQk9PVF9DT05GSUcgYXQgdGhlIHNhbWUgdGltZS4iKQogCiAgICAgaWYgdWJvb3Rjb25maWdmbGFncyBhbmQgdWJvb3RiaW5hcmllczoKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIllvdSBjYW5ub3QgdXNlIFVCT09UX0JJTkFSSUVTIGFzIGl0IGlzIGludGVybmFsIHRvIHVib290X2NvbmZpZy5iYmNsYXNzLiIpCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIllvdSBjYW5ub3QgdXNlIFVCT09UX0JJTkFSSUVTIGFzIGl0IGlzIGludGVybmFsIHRvIHVib290X2NvbmZpZy5iYmNsYXNzLiIpCiAKICAgICBpZiBsZW4odWJvb3Rjb25maWcpID4gMDoKICAgICAgICAgZm9yIGNvbmZpZyBpbiB1Ym9vdGNvbmZpZzoKQEAgLTQxLDcgKzQxLDcgQEAKICAgICAgICAgICAgICAgICBpZiBjb25maWcgPT0gZjogCiAgICAgICAgICAgICAgICAgICAgIGl0ZW1zID0gdi5zcGxpdCgnLCcpCiAgICAgICAgICAgICAgICAgICAgIGlmIGl0ZW1zWzBdIGFuZCBsZW4oaXRlbXMpID4gMzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCdPbmx5IGNvbmZpZyxpbWFnZXMsYmluYXJ5IGNhbiBiZSBzcGVjaWZpZWQhJykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoJ09ubHkgY29uZmlnLGltYWdlcyxiaW5hcnkgY2FuIGJlIHNwZWNpZmllZCEnKQogICAgICAgICAgICAgICAgICAgICBkLmFwcGVuZFZhcignVUJPT1RfTUFDSElORScsICcgJyArIGl0ZW1zWzBdKQogICAgICAgICAgICAgICAgICAgICAjIElNQUdFX0ZTVFlQRVMgYXBwZW5kaW5nCiAgICAgICAgICAgICAgICAgICAgIGlmIGxlbihpdGVtcykgPiAxIGFuZCBpdGVtc1sxXToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdW5pbmF0aXZlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VuaW5hdGl2ZS5iYmNsYXNzCmluZGV4IDE3MjMzNjQuLmRlMjIyMWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdW5pbmF0aXZlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91bmluYXRpdmUuYmJjbGFzcwpAQCAtOCw2ICs4LDkgQEAKICNVTklOQVRJVkVfQ0hFQ0tTVU1beDg2XzY0XSA9ICJkZWFkIgogVU5JTkFUSVZFX0RMRElSID89ICIke0RMX0RJUn0vdW5pbmF0aXZlLyIKIAorIyBFbmFibGluZyB1bmluYXRpdmUgd2lsbCBjaGFuZ2UgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXMgc28gdGhleSBuZWVkIHRvIGdvIHRoZSBwYXJzaW5nIHdoaXRlIGxpc3QgdG8gcHJldmVudCBtdWx0aXBsZSByZWNpcGUgcGFyc2luZworQkJfSEFTSENPTkZJR19XSElURUxJU1QgKz0gIk5BVElWRUxTQlNUUklORyBTU1RBVEVQT1NUVU5QQUNLRlVOQ1MgQlVJTERfTERGTEFHUyIKKwogYWRkaGFuZGxlciB1bmluYXRpdmVfZXZlbnRfZmV0Y2hsb2FkZXIKIHVuaW5hdGl2ZV9ldmVudF9mZXRjaGxvYWRlcltldmVudG1hc2tdID0gImJiLmV2ZW50LkJ1aWxkU3RhcnRlZCIKIApAQCAtMTI2LDYgKzEyOSw5IEBACiAgICAgICAgIGQuc2V0VmFyKCJOQVRJVkVMU0JTVFJJTkciLCAidW5pdmVyc2FsJXMiICUgb2UudXRpbHMuaG9zdF9nY2NfdmVyc2lvbihkKSkKICAgICAgICAgZC5hcHBlbmRWYXIoIlNTVEFURVBPU1RVTlBBQ0tGVU5DUyIsICIgdW5pbmF0aXZlX2NoYW5nZWludGVycCIpCiAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygiU1NUQVRFUE9TVFVOUEFDS0ZVTkNTIiwgInZhcmRlcHZhbHVlZXhjbHVkZSIsICJ8IHVuaW5hdGl2ZV9jaGFuZ2VpbnRlcnAiKQorICAgICAgICBkLmFwcGVuZFZhcigiQlVJTERfTERGTEFHUyIsICIgLVdsLC0tYWxsb3ctc2hsaWItdW5kZWZpbmVkIC1XbCwtLWR5bmFtaWMtbGlua2VyPSR7VU5JTkFUSVZFX0xPQURFUn0iKQorICAgICAgICBkLmFwcGVuZFZhckZsYWcoIkJVSUxEX0xERkxBR1MiLCAidmFyZGVwdmFsdWVleGNsdWRlIiwgInwgLVdsLC0tYWxsb3ctc2hsaWItdW5kZWZpbmVkIC1XbCwtLWR5bmFtaWMtbGlua2VyPSR7VU5JTkFUSVZFX0xPQURFUn0iKQorICAgICAgICBkLmFwcGVuZFZhckZsYWcoIkJVSUxEX0xERkxBR1MiLCAidmFyZGVwc2V4Y2x1ZGUiLCAiVU5JTkFUSVZFX0xPQURFUiIpCiAgICAgICAgIGQucHJlcGVuZFZhcigiUEFUSCIsICIke1NUQUdJTkdfRElSfS11bmluYXRpdmUvJHtCVUlMRF9BUkNIfS1saW51eCR7YmluZGlyX25hdGl2ZX06IikKIAogcHl0aG9uIHVuaW5hdGl2ZV9jaGFuZ2VpbnRlcnAgKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91c2VyYWRkLXN0YXRpY2lkcy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91c2VyYWRkLXN0YXRpY2lkcy5iYmNsYXNzCmluZGV4IDU4OWE5OWYuLjY0YmY2ZGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXNlcmFkZC1zdGF0aWNpZHMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VzZXJhZGQtc3RhdGljaWRzLmJiY2xhc3MKQEAgLTMwNyw1ICszMDcsNSBAQAogICAgICAgICAgICAgdXBkYXRlX3VzZXJhZGRfc3RhdGljX2NvbmZpZyhkKQogICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvciBhcyBmOgogICAgICAgICAgICAgYmIuZGVidWcoMSwgIlNraXBwaW5nIHJlY2lwZSAlczogJXMiICUgKGQuZ2V0VmFyKCdQTicpLCBmKSkKLSAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKGYpCisgICAgICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKGYpCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3V0aWxpdHktdGFza3MuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXRpbGl0eS10YXNrcy5iYmNsYXNzCmluZGV4IDU4N2JmZDQuLmIxZjI3ZDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXRpbGl0eS10YXNrcy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXRpbGl0eS10YXNrcy5iYmNsYXNzCkBAIC01MCwxNyArNTAsNCBAQAogICAgICAgICBiYi5mYXRhbChzdHIoZSkpCiB9CiAKLWFkZHRhc2sgY2hlY2t1cmlhbGwgYWZ0ZXIgZG9fY2hlY2t1cmkKLWRvX2NoZWNrdXJpYWxsW3JlY3JkZXB0YXNrXSA9ICJkb19jaGVja3VyaWFsbCBkb19jaGVja3VyaSIKLWRvX2NoZWNrdXJpYWxsW3JlY2lkZXB0YXNrXSA9ICJkb18ke0JCX0RFRkFVTFRfVEFTS30iCi1kb19jaGVja3VyaWFsbFtub3N0YW1wXSA9ICIxIgotZG9fY2hlY2t1cmlhbGwoKSB7Ci0JOgotfQogCi1hZGR0YXNrIGZldGNoYWxsIGFmdGVyIGRvX2ZldGNoCi1kb19mZXRjaGFsbFtyZWNyZGVwdGFza10gPSAiZG9fZmV0Y2hhbGwgZG9fZmV0Y2giCi1kb19mZXRjaGFsbFtyZWNpZGVwdGFza10gPSAiZG9fJHtCQl9ERUZBVUxUX1RBU0t9IgotZG9fZmV0Y2hhbGwoKSB7Ci0JOgotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91dGlscy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91dGlscy5iYmNsYXNzCmluZGV4IDhlMDdlYWMuLjRmMDE2ZTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXRpbHMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3V0aWxzLmJiY2xhc3MKQEAgLTEsNDQgKzEsMyBAQAotIyBGb3IgY29tcGF0aWJpbGl0eQotZGVmIGJhc2VfcGF0aF9qb2luKGEsICpwKToKLSAgICByZXR1cm4gb2UucGF0aC5qb2luKGEsICpwKQotCi1kZWYgYmFzZV9wYXRoX3JlbGF0aXZlKHNyYywgZGVzdCk6Ci0gICAgcmV0dXJuIG9lLnBhdGgucmVsYXRpdmUoc3JjLCBkZXN0KQotCi1kZWYgYmFzZV9wYXRoX291dChwYXRoLCBkKToKLSAgICByZXR1cm4gb2UucGF0aC5mb3JtYXRfZGlzcGxheShwYXRoLCBkKQotCi1kZWYgYmFzZV9yZWFkX2ZpbGUoZmlsZW5hbWUpOgotICAgIHJldHVybiBvZS51dGlscy5yZWFkX2ZpbGUoZmlsZW5hbWUpCi0KLWRlZiBiYXNlX2lmZWxzZShjb25kaXRpb24sIGlmdHJ1ZSA9IFRydWUsIGlmZmFsc2UgPSBGYWxzZSk6Ci0gICAgcmV0dXJuIG9lLnV0aWxzLmlmZWxzZShjb25kaXRpb24sIGlmdHJ1ZSwgaWZmYWxzZSkKLQotZGVmIGJhc2VfY29uZGl0aW9uYWwodmFyaWFibGUsIGNoZWNrdmFsdWUsIHRydWV2YWx1ZSwgZmFsc2V2YWx1ZSwgZCk6Ci0gICAgcmV0dXJuIG9lLnV0aWxzLmNvbmRpdGlvbmFsKHZhcmlhYmxlLCBjaGVja3ZhbHVlLCB0cnVldmFsdWUsIGZhbHNldmFsdWUsIGQpCi0KLWRlZiBiYXNlX2xlc3Nfb3JfZXF1YWwodmFyaWFibGUsIGNoZWNrdmFsdWUsIHRydWV2YWx1ZSwgZmFsc2V2YWx1ZSwgZCk6Ci0gICAgcmV0dXJuIG9lLnV0aWxzLmxlc3Nfb3JfZXF1YWwodmFyaWFibGUsIGNoZWNrdmFsdWUsIHRydWV2YWx1ZSwgZmFsc2V2YWx1ZSwgZCkKLQotZGVmIGJhc2VfdmVyc2lvbl9sZXNzX29yX2VxdWFsKHZhcmlhYmxlLCBjaGVja3ZhbHVlLCB0cnVldmFsdWUsIGZhbHNldmFsdWUsIGQpOgotICAgIHJldHVybiBvZS51dGlscy52ZXJzaW9uX2xlc3Nfb3JfZXF1YWwodmFyaWFibGUsIGNoZWNrdmFsdWUsIHRydWV2YWx1ZSwgZmFsc2V2YWx1ZSwgZCkKLQotZGVmIGJhc2VfY29udGFpbnModmFyaWFibGUsIGNoZWNrdmFsdWVzLCB0cnVldmFsdWUsIGZhbHNldmFsdWUsIGQpOgotICAgIGJiLm5vdGUoJ2Jhc2VfY29udGFpbnMgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBiYi51dGlscy5jb250YWlucyBpbnN0ZWFkLicpCi0gICAgcmV0dXJuIGJiLnV0aWxzLmNvbnRhaW5zKHZhcmlhYmxlLCBjaGVja3ZhbHVlcywgdHJ1ZXZhbHVlLCBmYWxzZXZhbHVlLCBkKQotCi1kZWYgYmFzZV9ib3RoX2NvbnRhaW4odmFyaWFibGUxLCB2YXJpYWJsZTIsIGNoZWNrdmFsdWUsIGQpOgotICAgIHJldHVybiBvZS51dGlscy5ib3RoX2NvbnRhaW4odmFyaWFibGUxLCB2YXJpYWJsZTIsIGNoZWNrdmFsdWUsIGQpCi0KLWRlZiBiYXNlX3BydW5lX3N1ZmZpeCh2YXIsIHN1ZmZpeGVzLCBkKToKLSAgICByZXR1cm4gb2UudXRpbHMucHJ1bmVfc3VmZml4KHZhciwgc3VmZml4ZXMsIGQpCi0KLWRlZiBvZV9maWx0ZXIoZiwgc3RyLCBkKToKLSAgICByZXR1cm4gb2UudXRpbHMuc3RyX2ZpbHRlcihmLCBzdHIsIGQpCi0KLWRlZiBvZV9maWx0ZXJfb3V0KGYsIHN0ciwgZCk6Ci0gICAgcmV0dXJuIG9lLnV0aWxzLnN0cl9maWx0ZXJfb3V0KGYsIHN0ciwgZCkKLQogZGVmIG1hY2hpbmVfcGF0aHMoZCk6CiAgICAgIiIiTGlzdCBhbnkgZXhpc3RpbmcgbWFjaGluZSBzcGVjaWZpYyBmaWxlc3BhdGggZGlyZWN0b3JpZXMiIiIKICAgICBtYWNoaW5lID0gZC5nZXRWYXIoIk1BQ0hJTkUiKQpAQCAtMzY0LDEyICszMjMsNyBAQAogICAgIHJldHVybiBwa2dzCiAKIGRlZiBnZXRfbXVsdGlsaWJfZGF0YXN0b3JlKHZhcmlhbnQsIGQpOgotICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQotICAgIG92ZXJyaWRlcyA9IGxvY2FsZGF0YS5nZXRWYXIoIk9WRVJSSURFUyIsIEZhbHNlKSArICI6dmlydGNsYXNzLW11bHRpbGliLSIgKyB2YXJpYW50Ci0gICAgbG9jYWxkYXRhLnNldFZhcigiT1ZFUlJJREVTIiwgb3ZlcnJpZGVzKQotICAgIGxvY2FsZGF0YS5zZXRWYXIoIk1MUFJFRklYIiwgdmFyaWFudCArICItIikKLSAgICByZXR1cm4gbG9jYWxkYXRhCi1nZXRfbXVsdGlsaWJfZGF0YXN0b3JlW3ZhcmRlcHNleGNsdWRlXSA9ICJPVkVSUklERVMiCisgICAgcmV0dXJuIG9lLnV0aWxzLmdldF9tdWx0aWxpYl9kYXRhc3RvcmUodmFyaWFudCwgZCkKIAogZGVmIGFsbF9tdWx0aWxpYl90dW5lX3ZhbHVlcyhkLCB2YXIsIHVuaXF1ZSA9IFRydWUsIG5lZWRfc3BsaXQgPSBUcnVlLCBkZWxpbSA9ICcgJyk6CiAgICAgIiIiUmV0dXJuIGEgc3RyaW5nIG9mIGFsbCAke3Zhcn0gaW4gYWxsIG11bHRpbGliIHR1bmUgY29uZmlndXJhdGlvbiIiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy93YWYuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvd2FmLmJiY2xhc3MKaW5kZXggYWNiZGEyNy4uMTllOTM3NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy93YWYuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3dhZi5iYmNsYXNzCkBAIC0zLDM5ICszLDIwIEBACiAKIEVYVFJBX09FQ09ORl9hcHBlbmQgPSAiICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30iCiAKLWRlZiBnZXRfd2FmX3BhcmFsbGVsX21ha2UoZCk6Ci0gICAgcG0gPSBkLmdldFZhcignUEFSQUxMRUxfTUFLRScpCi0gICAgaWYgcG06Ci0gICAgICAgICMgbG9vayBmb3IgJy1qJyBhbmQgdGhyb3cgb3RoZXIgb3B0aW9ucyAoZS5nLiAnLWwnKSBhd2F5Ci0gICAgICAgICMgYmVjYXVzZSB0aGV5IG1pZ2h0IGhhdmUgZGlmZmVyZW50IG1lYW5pbmcgaW4gYmphbQotICAgICAgICBwbSA9IHBtLnNwbGl0KCkKLSAgICAgICAgd2hpbGUgcG06Ci0gICAgICAgICAgICB2ID0gTm9uZQotICAgICAgICAgICAgb3B0ID0gcG0ucG9wKDApCi0gICAgICAgICAgICBpZiBvcHQgPT0gJy1qJzoKLSAgICAgICAgICAgICAgICB2ID0gcG0ucG9wKDApCi0gICAgICAgICAgICBlbGlmIG9wdC5zdGFydHN3aXRoKCctaicpOgotICAgICAgICAgICAgICAgIHYgPSBvcHRbMjpdLnN0cmlwKCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdiA9IE5vbmUKLQotICAgICAgICAgICAgaWYgdjoKLSAgICAgICAgICAgICAgICB2ID0gbWluKDY0LCBpbnQodikpCi0gICAgICAgICAgICAgICAgcmV0dXJuICctaicgKyBzdHIodikKLQotICAgIHJldHVybiAiIgotCiBweXRob24gd2FmX3ByZWNvbmZpZ3VyZSgpIHsKKyAgICBpbXBvcnQgc3VicHJvY2VzcwogICAgIGZyb20gZGlzdHV0aWxzLnZlcnNpb24gaW1wb3J0IFN0cmljdFZlcnNpb24KLSAgICBzcmNzdWJkaXIgPSBkLmdldFZhcignUycpCi0gICAgd2FmYmluID0gb3MucGF0aC5qb2luKHNyY3N1YmRpciwgJ3dhZicpCi0gICAgc3RhdHVzLCByZXN1bHQgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQod2FmYmluICsgIiAtLXZlcnNpb24iKQotICAgIGlmIHN0YXR1cyAhPSAwOgotICAgICAgICBiYi53YXJuKCJVbmFibGUgdG8gZXhlY3V0ZSB3YWYgLS12ZXJzaW9uLCBleGl0IGNvZGUgJWQuIEFzc3VtaW5nIHdhZiB2ZXJzaW9uIHdpdGhvdXQgYmluZGlyL2xpYmRpciBzdXBwb3J0LiIgJSBzdGF0dXMpCi0gICAgICAgIHJldHVybgotICAgIHZlcnNpb24gPSByZXN1bHQuc3BsaXQoKVsxXQotICAgIGlmIFN0cmljdFZlcnNpb24odmVyc2lvbikgPj0gU3RyaWN0VmVyc2lvbigiMS44LjciKToKLSAgICAgICAgZC5zZXRWYXIoIldBRl9FWFRSQV9DT05GIiwgIi0tYmluZGlyPSR7YmluZGlyfSAtLWxpYmRpcj0ke2xpYmRpcn0iKQorICAgIHN1YnNyY2RpciA9IGQuZ2V0VmFyKCdTJykKKyAgICB3YWZiaW4gPSBvcy5wYXRoLmpvaW4oc3Vic3JjZGlyLCAnd2FmJykKKyAgICB0cnk6CisgICAgICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFt3YWZiaW4sICctLXZlcnNpb24nXSwgY3dkPXN1YnNyY2Rpciwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQorICAgICAgICB2ZXJzaW9uID0gcmVzdWx0LmRlY29kZSgndXRmLTgnKS5zcGxpdCgpWzFdCisgICAgICAgIGlmIFN0cmljdFZlcnNpb24odmVyc2lvbikgPj0gU3RyaWN0VmVyc2lvbigiMS44LjciKToKKyAgICAgICAgICAgIGQuc2V0VmFyKCJXQUZfRVhUUkFfQ09ORiIsICItLWJpbmRpcj0ke2JpbmRpcn0gLS1saWJkaXI9JHtsaWJkaXJ9IikKKyAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKKyAgICAgICAgYmIud2FybigiVW5hYmxlIHRvIGV4ZWN1dGUgd2FmIC0tdmVyc2lvbiwgZXhpdCBjb2RlICVkLiBBc3N1bWluZyB3YWYgdmVyc2lvbiB3aXRob3V0IGJpbmRpci9saWJkaXIgc3VwcG9ydC4iICUgZS5yZXR1cm5jb2RlKQorICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgYmIuZmF0YWwoIndhZiBkb2VzIG5vdCBleGlzdCBpbiAlcyIgJSBzdWJzcmNkaXIpCiB9CiAKIGRvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gIndhZl9wcmVjb25maWd1cmUiCkBAIC00NCw4ICsyNSw5IEBACiAJJHtTfS93YWYgY29uZmlndXJlIC0tcHJlZml4PSR7cHJlZml4fSAke1dBRl9FWFRSQV9DT05GfSAke0VYVFJBX09FQ09ORn0KIH0KIAorZG9fY29tcGlsZVtwcm9ncmVzc10gPSAib3V0b2Y6XlxbXHMqKFxkKykvXHMqKFxkKylcXVxzKyIKIHdhZl9kb19jb21waWxlKCkgIHsKLQkke1N9L3dhZiBidWlsZCAke0BnZXRfd2FmX3BhcmFsbGVsX21ha2UoZCl9CisJJHtTfS93YWYgYnVpbGQgJHtAb2UudXRpbHMucGFyYWxsZWxfbWFrZV9hcmd1bWVudChkLCAnLWolZCcsIGxpbWl0PTY0KX0KIH0KIAogd2FmX2RvX2luc3RhbGwoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2JpdGJha2UuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mCmluZGV4IDFjZGJmNDMuLmEyMWI3MjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mCkBAIC0xODcsNiArMTg3LDcgQEAKICAgICB0YXItbmF0aXZlIFwKICAgICB2aXJ0dWFsL2xpYmludGwtbmF0aXZlIFwKICAgICB2aXJ0dWFsL2xpYmljb252LW5hdGl2ZSBcCisgICAgdmlydHVhbC9jcnlwdC1uYXRpdmUgXAogICAgIHRleGluZm8tbmF0aXZlIFwKICAgICBiYXNoLW5hdGl2ZSBcCiAgICAgc2VkLW5hdGl2ZSBcCkBAIC0yMjAsNyArMjIxLDcgQEAKICMgQXV0b21hdGljYWxseSBkZXJpdmVzICJmb28iIGZyb20gImZvby1uYXRpdmUiLCAiZm9vLWNyb3NzIiBvciAiZm9vLWluaXRpYWwiCiAjIG90aGVyd2lzZSBpdCBpcyB0aGUgc2FtZSBhcyBQTiBhbmQgUAogU1BFQ0lBTF9QS0dTVUZGSVggPSAiLW5hdGl2ZSAtY3Jvc3MgLWluaXRpYWwgLWludGVybWVkaWF0ZSAtY3Jvc3NzZGsgLWNyb3NzLWNhbmFkaWFuIgotQlBOID0gIiR7QGJhc2VfcHJ1bmVfc3VmZml4KGQuZ2V0VmFyKCdQTicpLCBkLmdldFZhcignU1BFQ0lBTF9QS0dTVUZGSVgnKS5zcGxpdCgpLCBkKX0iCitCUE4gPSAiJHtAb2UudXRpbHMucHJ1bmVfc3VmZml4KGQuZ2V0VmFyKCdQTicpLCBkLmdldFZhcignU1BFQ0lBTF9QS0dTVUZGSVgnKS5zcGxpdCgpLCBkKX0iCiBCUCA9ICIke0JQTn0tJHtQVn0iCiAKICMgUGFja2FnZSBpbmZvLgpAQCAtNDIzLDYgKzQyNCw4IEBACiBPTERFU1RfS0VSTkVMID0gIjMuMi4wIgogT0xERVNUX0tFUk5FTF9hYXJjaDY0ID0gIjMuMTQiCiBPTERFU1RfS0VSTkVMX25pb3MyID0gIjMuMTkiCitPTERFU1RfS0VSTkVMX3Jpc2N2MzIgPSAiNC4xNSIKK09MREVTVF9LRVJORUxfcmlzY3Y2NCA9ICI0LjE1IgogCiAjIFNES19PTERFU1RfS0VSTkVMIGNhbid0IGJlIHNldCB1c2luZyBvdmVycmlkZXMgc2luY2UgdGhlcmUgYXJlCiAjIG5vbmUgZm9yIHRoZSBTREsgYXJjaGl0ZWN0dXJlLiBCZXN0IHRvIHNldCBpdCBmcm9tIGEgbWFjaGluZS1zZGsKQEAgLTQ5NSw2ICs0OTgsOSBAQAogIyBVc2VkIGJ5IGJ6ciBmZXRjaGVyCiBIT1NUVE9PTFNfTk9ORkFUQUwgKz0gImJ6ciIKIAorIyBVc2VkIGJ5IHNzaCBmZXRjaGVyCitIT1NUVE9PTFNfTk9ORkFUQUwgKz0gInNjcCIKKwogQ0NBQ0hFID8/PSAiIgogIyBjY2FjaGUgPCAzLjEuMTAgd2lsbCBjcmVhdGUgQ0NBQ0hFX0RJUiBvbiBzdGFydHVwIGV2ZW4gaWYgZGlzYWJsZWQsIGFuZAogIyBhdXRvZ2VuIHNldHMgSE9NRT0vZGV2L251bGwgc28gaW4gY2VydGFpbiBzaXR1YXRpb25zIGJ1aWxkcyBjYW4gZmFpbC4KQEAgLTUzNiw2ICs1NDIsNyBAQAogRVhUUkFfT0VNQUtFID0gIiIKIEVYVFJBX09FQ09ORiA9ICIiCiBleHBvcnQgTENfQUxMID0gImVuX1VTLlVURi04IgorZXhwb3J0IFRaID0gJ1VUQycKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFBhdGNoIGhhbmRsaW5nLgpAQCAtNTkzLDkgKzYwMCwxMCBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIE9wdGltaXphdGlvbiBmbGFncy4KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBCZXdhcmU6IGFwcGxpZWQgbGFzdCB0byBmaXJzdAogREVCVUdfUFJFRklYX01BUCA/PSAiLWZkZWJ1Zy1wcmVmaXgtbWFwPSR7V09SS0RJUn09L3Vzci9zcmMvZGVidWcvJHtQTn0vJHtFWFRFTkRQRX0ke1BWfS0ke1BSfSBcCi0gICAgICAgICAgICAgICAgICAgICAtZmRlYnVnLXByZWZpeC1tYXA9JHtTVEFHSU5HX0RJUl9OQVRJVkV9PSBcCiAgICAgICAgICAgICAgICAgICAgICAtZmRlYnVnLXByZWZpeC1tYXA9JHtTVEFHSU5HX0RJUl9IT1NUfT0gXAorICAgICAgICAgICAgICAgICAgICAgLWZkZWJ1Zy1wcmVmaXgtbWFwPSR7U1RBR0lOR19ESVJfTkFUSVZFfT0gXAogIgogREVCVUdfRkxBR1MgPz0gIi1nIC1mZWxpbWluYXRlLXVudXNlZC1kZWJ1Zy10eXBlcyAke0RFQlVHX1BSRUZJWF9NQVB9IgogCkBAIC02NjMsNiArNjcxLDcgQEAKIFNSQ0RBVEUgPSAiJHtEQVRFfSIKIFNSQ1JFViA/Pz0gIklOVkFMSUQiCiBBVVRPUkVWID0gIiR7QGJiLmZldGNoMi5nZXRfYXV0b3JldihkKX0iCitBVVRPUkVWW3ZhcmRlcHZhbHVlXSA9ICIke1NSQ1BWfSIKICMgU2V0IER5bmFtaWNhbGx5IGluIGJhc2UuYmJjbGFzcwogIyBTUkNQViA9ICIke0BiYi5mZXRjaDIuZ2V0X3NyY3JldihkKX0iCiBTUkNQVlt2YXJkZXB2YWx1ZV0gPSAiJHtTUkNQVn0iCkBAIC03NTcsNyArNzY2LDcgQEAKIERMX0RJUiA/PSAiJHtUT1BESVJ9L2Rvd25sb2FkcyIKIFNTVEFURV9ESVIgPz0gIiR7VE9QRElSfS9zc3RhdGUtY2FjaGUiCiBJTUFHRV9GU1RZUEVTID89ICJ0YXIuZ3oiCi1JTUFHRV9GU1RZUEVTX0RFQlVHRlMgPz0gIiR7SU1BR0VfRlNUWVBFU30iCitJTUFHRV9GU1RZUEVTX0RFQlVHRlMgPz0gInRhci5neiIKIAogSU5JVFJBTUZTX0ZTVFlQRVMgPz0gImNwaW8uZ3oiCiAjIFRoZSBtYXhpbXVtIHNpemUgaW4gS2J5dGVzIGZvciB0aGUgZ2VuZXJhdGVkIGluaXRyYW1mcyBpbWFnZSBzaXplLgpAQCAtODA3LDcgKzgxNiw3IEBACiAKICMgTmF0aXZlIGRpc3RybyBmZWF0dXJlcyAod2lsbCBhbHdheXMgYmUgdXNlZCBmb3IgLW5hdGl2ZSwgZXZlbiBpZiB0aGV5CiAjIGFyZSBub3QgZW5hYmxlZCBmb3IgdGFyZ2V0KQotRElTVFJPX0ZFQVRVUkVTX05BVElWRSA/PSAieDExIGlwdjYiCitESVNUUk9fRkVBVFVSRVNfTkFUSVZFID89ICJ4MTEgaXB2NiB4YXR0ciIKIERJU1RST19GRUFUVVJFU19OQVRJVkVTREsgPz0gIngxMSBsaWJjLWNoYXJzZXRzIGxpYmMtbG9jYWxlcyBsaWJjLWxvY2FsZS1jb2RlIgogCiAjIE5vcm1hbGx5IHRhcmdldCBkaXN0cm8gZmVhdHVyZXMgd2lsbCBub3QgYmUgYXBwbGllZCB0byBuYXRpdmUgYnVpbGRzOgpAQCAtODU2LDcgKzg2NSw3IEBACiBCQl9IQVNIQkFTRV9XSElURUxJU1QgPz0gIlRNUERJUiBGSUxFIFBBVEggUFdEIEJCX1RBU0tIQVNIIEJCUEFUSCBCQlNFUlZFUiBETF9ESVIgXAogICAgIFNTVEFURV9ESVIgVEhJU0RJUiBGSUxFU0VYVFJBUEFUSFMgRklMRV9ESVJOQU1FIEhPTUUgTE9HTkFNRSBTSEVMTCBURVJNIFwKICAgICBVU0VSIEZJTEVTUEFUSCBTVEFHSU5HX0RJUl9IT1NUIFNUQUdJTkdfRElSX1RBUkdFVCBDT1JFQkFTRSBQUlNFUlZfSE9TVCBcCi0gICAgUFJTRVJWX0RVTVBESVIgUFJTRVJWX0RVTVBGSUxFIFBSU0VSVl9MT0NLRE9XTiBQQVJBTExFTF9NQUtFIFwKKyAgICBTVEFNUFNfRElSIFBSU0VSVl9EVU1QRElSIFBSU0VSVl9EVU1QRklMRSBQUlNFUlZfTE9DS0RPV04gUEFSQUxMRUxfTUFLRSBcCiAgICAgQ0NBQ0hFX0RJUiBFWFRFUk5BTF9UT09MQ0hBSU4gQ0NBQ0hFIENDQUNIRV9OT0hBU0hESVIgTElDRU5TRV9QQVRIIFNES1BLR1NVRkZJWCBcCiAgICAgV0FSTl9RQSBFUlJPUl9RQSBXT1JLRElSIFNUQU1QQ0xFQU4gUEtHREFUQV9ESVIgQlVJTERfQVJDSCBTU1RBVEVfUEtHQVJDSCBcCiAgICAgQkJfV09SS0VSQ09OVEVYVCBCQl9MSU1JVEVEREVQUyBleHRlbmRfcmVjaXBlX3N5c3Jvb3QgREVQTE9ZX0RJUiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1kaXN0cm92YXJzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1kaXN0cm92YXJzLmluYwppbmRleCA3NmQwOWFmLi45NjIwYWQ0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtZGlzdHJvdmFycy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LWRpc3Ryb3ZhcnMuaW5jCkBAIC00NywzICs0Nyw5IEBACiAKIEdUSzJESVNUUk9GRUFUVVJFUyA9ICJkaXJlY3RmYiB4MTEiCiBHVEszRElTVFJPRkVBVFVSRVMgPSAieDExIHdheWxhbmQiCisKK0FSQ0hfREVGQVVMVF9LRVJORUxJTUFHRVRZUEUgPSAiekltYWdlIgorQVJDSF9ERUZBVUxUX0tFUk5FTElNQUdFVFlQRV94ODYgPSAiYnpJbWFnZSIKK0FSQ0hfREVGQVVMVF9LRVJORUxJTUFHRVRZUEVfeDg2LTY0ID0gImJ6SW1hZ2UiCitLRVJORUxfSU1BR0VUWVBFID8/PSAiJHtBUkNIX0RFRkFVTFRfS0VSTkVMSU1BR0VUWVBFfSIKK0tFUk5FTF9JTUFHRVRZUEVTID8/PSAiJHtLRVJORUxfSU1BR0VUWVBFfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1wcm92aWRlcnMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXByb3ZpZGVycy5pbmMKaW5kZXggMmI3NmMzYy4uZTY1YzFlZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXByb3ZpZGVycy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXByb3ZpZGVycy5pbmMKQEAgLTEsOCArMSw2IEBACiAjCiAjIERlZmF1bHQgdmlydHVhbCBwcm92aWRlcnMKICMKLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2RiID89ICJkYiIKLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2RiLW5hdGl2ZSA/PSAiZGItbmF0aXZlIgogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwveHNlcnZlciA/PSAieHNlcnZlci14b3JnIgogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwveHNlcnZlci14Zjg2ID89ICJ4c2VydmVyLXhvcmciCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9lZ2wgPz0gIm1lc2EiCkBAIC00NCw3ICs0Miw2IEBACiBQUkVGRVJSRURfUFJPVklERVJfb3BrZy1uYXRpdmUgPz0gIm9wa2ctbmF0aXZlIgogUFJFRkVSUkVEX1BST1ZJREVSX25hdGl2ZXNkay1vcGtnID89ICJuYXRpdmVzZGstb3BrZyIKIFBSRUZFUlJFRF9QUk9WSURFUl9jb25zb2xlLXRvb2xzID89ICJrYmQiCi1QUkVGRVJSRURfUFJPVklERVJfZ3ppcC1uYXRpdmUgPz0gInBpZ3otbmF0aXZlIgogUFJFRkVSUkVEX1BST1ZJREVSX3VkZXYgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnc3lzdGVtZCcsJ2V1ZGV2JyxkKX0iCiBQUkVGRVJSRURfUlBST1ZJREVSX2JsdWV6LWhjaWR1bXAgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdibHVldG9vdGggYmx1ZXo1JywnYmx1ZXo1JywnYmx1ZXotaGNpZHVtcCcsZCl9IgogIyBBbHRlcm5hdGl2ZSBpcyBsdHAtZGR0IGluIG1ldGEtb2U6IG1ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdHAtZGR0L2x0cC1kZHRfMC4wLjQuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGlzdHJvX2FsaWFzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGlzdHJvX2FsaWFzLmluYwppbmRleCBmN2M4YjRhLi4xM2M3ZTY1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2Rpc3Ryb19hbGlhcy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kaXN0cm9fYWxpYXMuaW5jCkBAIC0xMzgsNyArMTM4LDYgQEAKIERJU1RST19QTl9BTElBU19wbi1ndGstaWNvbi11dGlscy1uYXRpdmUgPSAiT1NQRFQiCiBESVNUUk9fUE5fQUxJQVNfcG4tc3lzdGVtZC1ib290ID0gIlVidW50dT1zeXN0ZW1kLWJvb3QgRmVkb3JhPXN5c3RlbWQtYm9vdCIKIERJU1RST19QTl9BTElBU19wbi1oZWxsby1tb2QgPSAiT0UtQ29yZSIKLURJU1RST19QTl9BTElBU19wbi1ob3N0YXAtY29uZiA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLWh3bGF0ZGV0ZWN0ID0gIk9TUERUIgogRElTVFJPX1BOX0FMSUFTX3BuLWljZWNjLWNyZWF0ZS1lbnYgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1pbml0LWlmdXBkb3duID0gIkRlYmlhbj1pZnVwZG93biBVYnVudHU9aWZ1cGRvd24iCkBAIC0xNjAsNyArMTU5LDYgQEAKIERJU1RST19QTl9BTElBU19wbi1rZXltYXBzID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4ta2YgPSAiT1NQRFQiCiBESVNUUk9fUE5fQUxJQVNfcG4tbGFtZSA9ICJEZWJpYW49bGFtZSBVYnVudHU9bGFtZSIKLURJU1RST19QTl9BTElBU19wbi1sYXRlbmN5dG9wID0gIk1lZWdvPWxhdGVuY3l0b3AgRmVkb3JhPWxhdGVuY3l0b3AgRGViaWFuPWxhdGVuY3l0b3AgT3BlblN1U0U9bGF0ZW5jeXRvcCIKIERJU1RST19QTl9BTElBU19wbi1sZGNvbmZpZy1uYXRpdmUgPSAiVWJ1bnR1PWxpYmMtYmluIEZlZG9yYT1nbGliYyIKIERJU1RST19QTl9BTElBU19wbi1saWJhNTIgPSAiTWFuZHJpdmE9YTUyZGVjIERlYmlhbj1hNTJkZWMiCiBESVNUUk9fUE5fQUxJQVNfcG4tbGliYWNwaSA9ICJVYnVudHU9bGliYWNwaSBNYW5kcml2YT1saWJhY3BpIgpAQCAtMjc4LDcgKzI3Niw2IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tb3BrZy1rZXlyaW5ncyA9ICJPU1BEVCB1cHN0cmVhbT1naXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9vcGtnLXV0aWxzIgogRElTVFJPX1BOX0FMSUFTX3BuLW9wa2ctbm9ncGcgPSAiT1NQRFQgdXBzdHJlYW09Z2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvb3BrZy11dGlscyIKIERJU1RST19QTl9BTElBU19wbi1vcGtnLXV0aWxzID0gIk9TUERUIHVwc3RyZWFtPWdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL29wa2ctdXRpbHMiCi1ESVNUUk9fUE5fQUxJQVNfcG4tb3Byb2ZpbGUgPSAiRGViaWFuPW9wcm9maWxlIEZlZG9yYT1vcHJvZmlsZSIKIERJU1RST19QTl9BTElBU19wbi1vcy1yZWxlYXNlID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tcGFja2FnZWdyb3VwLWJhc2UgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1wYWNrYWdlZ3JvdXAtY29yZSA9ICJPRS1Db3JlIgpAQCAtMzE2LDcgKzMxMyw2IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tcG9pbnRlcmNhbC14aW5wdXQgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1wb25nLWNsb2NrID0gIk9wZW5lZEhhbmQiCiBESVNUUk9fUE5fQUxJQVNfcG4tcG9ydG1hcCA9ICJEZWJpYW49cnBjYmluZCBGZWRvcmE9cnBjYmluZCIKLURJU1RST19QTl9BTElBU19wbi1wb3N0aW5zdC1pbnRlcmNlcHQgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1wb3dlcnRvcCA9ICJNZWVnbz1wb3dlcnRvcCBGZWRvcmE9cG93ZXJ0b3AgRGViaWFuPXBvd2VydG9wIE9wZW5TdVNFPXBvd2VydG9wIE1hbmRyaXZhPXBvd2VydG9wIgogRElTVFJPX1BOX0FMSUFTX3BuLXBwcC1kaWFsaW4gPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1wcmVzZW50cHJvdG8gPSAiRGViaWFuPXgxMXByb3RvLXByZXNlbnQtZGV2IEZlZG9yYT14b3JnLXgxMS1wcm90by1kZXZlbCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMKaW5kZXggZDBlNjQ1MC4uNDhhZmY5NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMKQEAgLTMxLDcgKzMxLDcgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFjcGljYSA9ICJGYXRoaSBCb3VkcmEgPGZhdGhpLmJvdWRyYUBsaW5hcm8ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFjcGlkID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFjcGl0ZXN0cyA9ICJGYXRoaSBCb3VkcmEgPGZhdGhpLmJvdWRyYUBsaW5hcm8ub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFkd2FpdGEtaWNvbi10aGVtZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFkd2FpdGEtaWNvbi10aGVtZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLWxpYiA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYWxzYS1wbHVnaW5zID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLXN0YXRlID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCkBAIC00NiwxMSArNDYsMTEgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFyZ3Atc3RhbmRhbG9uZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFzY2lpZG9jID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hc3BlbGwgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFzc2ltcCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFzc2ltcCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXQtc3BpMi1hdGsgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hdC1zcGkyLWNvcmUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hdGsgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdC1zcGkyLWF0ayA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdC1zcGkyLWNvcmUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXRrID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0dHIgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF1dG9jb25mID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF1dG9jb25mLWFyY2hpdmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgpAQCAtNTksOCArNTksOCBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tYXZhaGkgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF2YWhpLXVpID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYWJlbHRyYWNlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmFzZS1maWxlcyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhc2UtcGFzc3dkID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmFzZS1maWxlcyA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYXNlLXBhc3N3ZCA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYXNoID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYXNoLWNvbXBsZXRpb24gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgpAQCAtNzcsNyArNzcsNyBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tYmxrdG9vbCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYmxrdHJhY2UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ibHVlejUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYm1hcC10b29scyA9ICJFZCBCYXJ0b3NoIDxlZC5iYXJ0b3NoQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ibWFwLXRvb2xzID0gIkNoYW5nIFJlYmVjY2EgU3dlZSBGdW4gPHJlYmVjY2Euc3dlZS5mdW4uY2hhbmdAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJvb3N0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYm9vdGNoYXJ0MiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJzZC1oZWFkZXJzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgpAQCAtODksMTAgKzg5LDkgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1aWxkdG9vbHMtdGFyYmFsbCA9ICJDcmlzdGlhbiBJb3JnYSA8Y3Jpc3RpYW4uaW9yZ2FAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1c3lib3ggPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1idXN5Ym94LWluaXR0YWIgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ieWFjYyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYnppcDIgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jYS1jZXJ0aWZpY2F0ZXMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jYWlybyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNhaXJvID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNhbGlicmF0ZXByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNhbnRhcmVsbC1mb250cyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNjYWNoZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCkBAIC0xMDAsMTIgKzk5LDEyIEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jaGtjb25maWcgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNoa2NvbmZpZy1hbHRlcm5hdGl2ZXMtbmF0aXZlID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jaHJwYXRoID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jbHV0dGVyLTEuMCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNsdXR0ZXItZ3N0LTMuMCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNsdXR0ZXItZ3RrLTEuMCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNsdXR0ZXItMS4wID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNsdXR0ZXItZ3N0LTMuMCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jbHV0dGVyLWd0ay0xLjAgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY21ha2UgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jbWFrZS1uYXRpdmUgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb2dsLTEuMCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvZ2wtMS4wID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvbXBvc2l0ZXByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvbm5tYW4gPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGxnZS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY29ubm1hbi1jb25mID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKQEAgLTExNiwyMiArMTE1LDIyIEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcGlvID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3JhY2tsaWIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3JlYXRlcmVwby1jID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY3JvbmllID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY3JvbmllID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNyb3NzLWxvY2FsZWRlZi1uYXRpdmUgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcnlwdG9kZXYtbGludXggPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3J5cHRvZGV2LW1vZHVsZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcnlwdG9kZXYtdGVzdHMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3VwcyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3VybCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jdmUtY2hlY2stdG9vbCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWN2ZS1jaGVjay10b29sID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3dhdXRvbWFjcm9zID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRhbWFnZXByb3RvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZGFtYWdlcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZGIgPSAiTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRidXMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRidXMtZ2xpYiA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZGJ1cy10ZXN0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kYnVzLXdhaXQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRlYmlhbnV0aWxzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRlYmlhbnV0aWxzID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kZXBtb2R3cmFwcGVyLWNyb3NzID0gIk1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kZXNrdG9wLWZpbGUtdXRpbHMtbmF0aXZlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZGhjcCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgpAQCAtMTUyLDYgKzE1MSw3IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kcmkzcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZHJvcGJlYXIgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWR0YyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWR3YXJmc3JjZmlsZXMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1lMmZzcHJvZ3MgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZWQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1lZWUtYWNwaS1zY3JpcHRzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgpAQCAtMTY0LDIyICsxNjQsMjIgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVuY29kaW5ncyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1lcGlwaGFueSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWV0aHRvb2wgPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGxnZS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZXVkZXYgPSAiQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZXVkZXYgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZXhwYXQgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWV4cGVjdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZmbXBlZyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZpbGUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZmlsZSA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZmluZHV0aWxzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1maXhlc3Byb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZsYWMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZsZXggPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvbnQtYWxpYXMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZm9udC11dGlsID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvbnRjb25maWcgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1mb250Y29uZmlnID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvbnRzcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZm9vbWF0aWMtZmlsdGVycyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZm9ybWZhY3RvciA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1mcmVldHlwZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWZyZWV0eXBlID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZzdGVzdHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1mdHMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nYXdrID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCkBAIC0xOTMsMzQgKzE5MywzNSBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLXNhbml0aXplcnMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2Mtc291cmNlID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjbWFrZWRlcCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjb25mID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NvbmYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NyID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2RiID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2RiLWNyb3NzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2RiLWNyb3NzLWNhbmFkaWFuID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2RibSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdkay1waXhidWYgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nZGstcGl4YnVmID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdldHRleHQgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2V0dGV4dC1taW5pbWFsLW5hdGl2ZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1naG9zdHNjcmlwdCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2l0ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsZXcgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliLTIuMCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWItbmV0d29ya2luZyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsZXcgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYi0yLjAgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYi1uZXR3b3JraW5nID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWJjID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYmMtaW5pdGlhbCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWJjLWxvY2FsZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWJjLW10cmFjZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWJjLXNjcmlwdHMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGlkZSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdscHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ21wID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ25vbWUtY29tbW9uID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ25vbWUtZGVza3RvcC10ZXN0aW5nID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ25vbWUtY29tbW9uID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLWRlc2t0b3AtdGVzdGluZyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbm9tZS1kZXNrdG9wMyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLWRvYy11dGlscyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLXRoZW1lcy1zdGFuZGFyZCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLWRvYy11dGlscyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbm9tZS10aGVtZXMtc3RhbmRhcmQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ251LWNvbmZpZyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbnUtZWZpID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdudS1lZmkgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdudXBnID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbnV0bHMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ28gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCkBAIC0yMzUsNTEgKzIzNiw1MSBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tZ3JlcCA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdyb2ZmID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ncnViID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3J1Yi1ib290Y29uZiA9ICJDYWxpZm9ybmlhIFN1bGxpdmFuIDxjYWxpZm9ybmlhLmwuc3VsbGl2YW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdydWItZWZpID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdC1wbGF5ZXIgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLWxpYmF2ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1vbXggPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLW1ldGEtYmFzZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHkgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXB5dGhvbiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXZhYXBpID0gIldlaSBUZWUgTmcgPHdlaS50ZWUubmdAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0aysgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGsrMyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0LWV4YW1wbGVzID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0LXZhbGlkYXRlID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLWxpYmF2ID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLW9teCA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1tZXRhLWJhc2UgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZCA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHkgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcHl0aG9uID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXZhYXBpID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrKyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGsrMyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstZG9jID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrLWVuZ2luZXMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstaWNvbi11dGlscy1uYXRpdmUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstc2F0by1lbmdpbmUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ndWlsZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstZW5naW5lcyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstaWNvbi11dGlscy1uYXRpdmUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrLXNhdG8tZW5naW5lID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd1aWx0LW5hdGl2ZSA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndW1taWJvb3QgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nemlwID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taGFyZmJ1enogPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taGRwYXJtID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taGVscDJtYW4tbmF0aXZlID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1oaWNvbG9yLWljb24tdGhlbWUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ob3N0YXAtY29uZiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ob3N0YXAtdXRpbHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taGljb2xvci1pY29uLXRoZW1lID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWh3bGF0ZGV0ZWN0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taTJjLXRvb2xzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taWNlY2MtY3JlYXRlLWVudiA9ICJKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taWNvbi1uYW1pbmctdXRpbHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1pY3UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1pZnVwZG93biA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0LWlmdXBkb3duID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1ib290ID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWZyYW1ld29yayA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1saXZlLWJvb3QgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbC1lZmkgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaS10ZXN0ZnMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLXRlc3RmcyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRzY3JpcHRzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtYm9vdCA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1ib290LXRpbnkgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbCA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaSA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaS10ZXN0ZnMgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbC10ZXN0ZnMgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHNjcmlwdHMgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taW5wdXRwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbnRsdG9vbCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWlwcm91dGUyID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBsZ2UuY29tPiIKQEAgLTMwMiw0MyArMzAzLDM3IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1rbW9kID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1rbW9kLW5hdGl2ZSA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4ta21zY3ViZSA9ICJDYXJsb3MgUmFmYWVsIEdpYW5pIDxkdkBwc2V1ZG90ZXJtaW5hbC5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbDNhZnBhZCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWwzYWZwYWQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGFtZSA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGF0ZW5jeXRvcCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxkY29uZmlnLW5hdGl2ZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxlc3MgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGVzcyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYTUyID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhY3BpID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFpbyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFyY2hpdmUgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhcnQtbGdwbCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFydC1sZ3BsID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFzc3VhbiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhdG9taWMtb3BzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmF2ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYnNkID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNhcCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjYXAtbmcgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYnNkID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjYXAgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNhcC1uZyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY2dyb3VwID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY2hlY2sgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY2xhc3MtaXNhLXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjaGVjayA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY29tcHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjb252ZXJ0LWFzbjEtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNyb2NvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY29udmVydC1hc24xLXBlcmwgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY3JvY28gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZGFlbW9uID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZG14ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmRuZiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmRybSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmR1bXB2YWx1ZS1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZW52LXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJlcG94eSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmVwb3h5ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmVyYXRpb24tZm9udHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJlcnJvci1wZXJsID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmV2ZGV2ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZXZlbnQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJlcnJvci1wZXJsID0gIlRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmV2ZGV2ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmV2ZW50ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmV4aWYgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJmYWtla2V5ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZmZpID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZmlsZS1jaGVja3RyZWUtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmZtID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZm0tZXh0cmEgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJmb250ZW5jID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKQEAgLTM0Niw1NiArMzQxLDU1IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJnY2MtaW5pdGlhbCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmdjcnlwdCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ2ZvcnRyYW4gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJnbGFkZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmdsdSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmdsdSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJncGctZXJyb3IgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmd1ZGV2ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaTE4bi1jb2xsYXRlLXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJndWRldiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpY2FsID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmljZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpY29udiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmlkM3RhZyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaWRuID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaW5wdXQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpbnB1dCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJqc29uID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlia3NiYSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm1hdGNoYm94ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibWF0Y2hib3ggPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibW5sID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibXBjID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibmV3dCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibmV3dC1weXRob24gPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5mc2lkbWFwID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5sID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibm90aWZ5ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibm90aWZ5ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5zbDIgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJuc3MtbWRucyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm9nZyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJvbXhpbCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJvd2wgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJvd2wgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGFtID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBjYXAgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGNpYWNjZXNzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGNyZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwY3JlID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwY3JlMiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwZm00ID0gIk1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGlwZWxpbmUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwbmcgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicG5nMTIgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicG9kLXBsYWluZXItcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnByb3h5ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnB0aHJlYWQtc3R1YnMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJyZXBvID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicnN2ZyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnJzdmcgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic2FtcGxlcmF0ZTAgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNkbCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzZGwyID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNkbCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic2RsMiA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic2VjcmV0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic20gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic25kZmlsZTEgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNvbHYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic291cC0yLjQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzb3VwLTIuNCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0YXNuMSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0ZXN0LW5lZWRzLXBlcmwgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidGhlb3JhID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidGltZWRhdGUtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRpbWVkYXRlLXBlcmwgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidGlycGMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidG9vbCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0b29sLWNyb3NzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKQEAgLTQwMywxMiArMzk3LDEyIEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1bmlzdHJpbmcgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidW53aW5kID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVyY3UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1cmktcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVzYi1jb21wYXQgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1c2IxID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidXJpLXBlcmwgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidXNiLWNvbXBhdCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1c2IxID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVzZXIgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidmEgPSAiV2VpIFRlZSBOZyA8d2VpLnRlZS5uZ0BpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidmEtdXRpbHMgPSAiV2VpIFRlZSBOZyA8d2VpLnRlZS5uZ0BpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidmEgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ2YS11dGlscyA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnZvcmJpcyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlid2VicCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYngxMSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCkBAIC00MjksMTIgKzQyMywxMiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGluZXJhbWEgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGtiY29tbW9uID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhrYmZpbGUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG1sLW5hbWVzcGFjZXN1cHBvcnQtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1wYXJzZXItcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG1sLXNheC1iYXNlLXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtc2F4LXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtc2ltcGxlLXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtbmFtZXNwYWNlc3VwcG9ydC1wZXJsID0gIlRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1wYXJzZXItcGVybCA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtcGVybCA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtc2F4LWJhc2UtcGVybCA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtc2F4LXBlcmwgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG1sLXNpbXBsZS1wZXJsID0gIlRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbDIgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtdSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4cG0gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgpAQCAtNDQyLDcgKzQzNiw3IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4cmVuZGVyID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhyZXMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHNjcm5zYXZlciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4c2V0dGluZ3MtY2xpZW50ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHNldHRpbmdzLWNsaWVudCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4c2htZmVuY2UgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHNsdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnh0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKQEAgLTQ2MiwxMCArNDU2LDEwIEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saW51eC15b2N0by1ydCA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saW51eC15b2N0by10aW55ID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxsdm0gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1sb2dyb3RhdGUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbG9ncm90YXRlID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1scnpzeiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1sc2IgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxzYmluaXRzY3JpcHRzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbHNiaW5pdHNjcmlwdHMgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbHNidGVzdCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbHNvZiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1sdHAgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKQEAgLTQ3OCwzNSArNDcyLDM2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1sem9wID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbTQgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbTQtbmF0aXZlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1haWx4ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ha2UgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWFrZWRlcGVuZCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYWtlZGV2cyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWFuID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYWtlLW1vZC1zY3JpcHRzID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hbi1kYiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWFuLXBhZ2VzID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1jb25maWctZ3RrID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtZGVza3RvcCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LWRlc2t0b3Atc2F0byA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LWtleWJvYXJkID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtcGFuZWwtMiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXNlc3Npb24gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1zZXNzaW9uLXNhdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC10ZXJtaW5hbCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXRoZW1lLXNhdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC13bSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LWNvbmZpZy1ndGsgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtZGVza3RvcCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1kZXNrdG9wLXNhdG8gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gta2V5Ym9hcmQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtcGFuZWwtMiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1zZXNzaW9uID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXNlc3Npb24tc2F0byA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC10ZXJtaW5hbCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC10aGVtZS1zYXRvID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXdtID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1jID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1kYWRtID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1lbnUtY2FjaGUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZW51LWNhY2hlID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1lc2EgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXNhLWRlbW9zID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWVzYS1nbCA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1lc29uID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWV0YS1lbnZpcm9ubWVudCA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXRhLWVudmlyb25tZW50LWV4dHNkayA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXRhLWV4dHNkay10b29sY2hhaW4gPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWV0YS1pZGUtc3VwcG9ydCA9ICJDcmlzdGlhbiBJb3JnYSA8Y3Jpc3RpYW4uaW9yZ2FAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ldGEtdG9vbGNoYWluID0gIkNyaXN0aWFuIElvcmdhIDxjcmlzdGlhbi5pb3JnYUBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWV0YS13b3JsZC1wa2dkYXRhID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1pbmdldHR5ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1pbmdldHR5ID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1taW5pLXgtc2Vzc2lvbiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1taW5pY29tID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1rZWxmaW1hZ2UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCkBAIC01MTYsMjIgKzUxMSwyMiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tbWt0ZW1wID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1tYy11dGlscyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tb2R1dGlscy1pbml0c2NyaXB0cyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tb2R1dGlscy1pbml0c2NyaXB0cyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbXBlZzJkZWMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tcGZyID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbXBnMTIzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbXNtdHAgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tdGQtdXRpbHMgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tdGRldiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW10ZGV2ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW10b29scyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tdXNsID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbXgtMS4wID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbXVzbC11dGlscyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW14LTEuMCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1uYXNtID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5hdGl2ZXNkay1idWlsZHRvb2xzLXBlcmwtZHVtbXkgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uYXRpdmVzZGstYnVpbGR0b29scy1wZXJsLWR1bW15ID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5hdGl2ZXNkay1saWJ0b29sID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5hdGl2ZXNkay1wYWNrYWdlZ3JvdXAtc2RrLWhvc3QgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uYXRpdmVzZGstcWVtdS1oZWxwZXIgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uYXRpdmVzZGstcG9zdGluc3QtaW50ZXJjZXB0ID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbmF0aXZlc2RrLXFlbXUtaGVscGVyID0gIkp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbmN1cnNlcyA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbmVhcmQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbmVvbiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCkBAIC01MzksMTQgKzUzNCwxNCBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tbmV0YmFzZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1uZXR0bGUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1uZnMtZXhwb3J0LXJvb3QgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbmZzLXV0aWxzID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbmZzLXV0aWxzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5pbmphID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbnB0aCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5zcHIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbnNzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5zcy1teWhvc3RuYW1lID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9mb25vID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9oLXB1enpsZXMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1vaC1wdXp6bGVzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9wZW5zc2ggPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tb3BlbnNzbCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9wa2cgPSAiQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4iCkBAIC01NjEsMzEgKzU1NiwyOSBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tb3ZtZi1zaGVsbC1pbWFnZSA9ICJSaWNhcmRvIE5lcmkgPHJpY2FyZG8ubmVyaS1jYWxkZXJvbkBsaW51eC5pbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcDExLWtpdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhY2thZ2UtaW5kZXggPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wYW5nbyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhbmdvID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhcnRlZCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGF0Y2ggPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhdGNoZWxmID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBheCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGF4LXV0aWxzID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wYnppcDIgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wY2l1dGlscyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGNtYW5mbSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBjbWNpYXV0aWxzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBlcmYgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBlcmwtbmF0aXZlID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGlnbGl0ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGVybCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wZXJsLW5hdGl2ZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1waWdsaXQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGlneiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGluZW50cnkgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1waXhtYW4gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1waXhtYW4gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGl4eiA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBrZ2NvbmYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGtnY29uZmlnID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBtLXV0aWxzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBvaW50ZXJjYWwgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wb2ludGVyY2FsLXhpbnB1dCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBvbmctY2xvY2sgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wb25nLWNsb2NrID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBvcHQgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBvcnRtYXAgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcG93ZXJ0b3AgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wcHAgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBwcC1kaWFsaW4gPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKQEAgLTU5NSw1NCArNTg4LDM3IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wc2V1ZG8gPSAiTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBzbWlzYyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBzcGxhc2ggPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB0ZXN0LXJ1bm5lciA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB0ZXN0LXJ1bm5lciA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wdWxzZWF1ZGlvID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wdWxzZWF1ZGlvLWNsaWVudC1jb25mLXNhdG8gPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB1enpsZXMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24gPSAiQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLW5hdGl2ZSA9ICJBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tYXN5bmMgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1kaXN0cmlidXRlID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tZ2l0ID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tZ2l0ZGIgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1pbWFnaW5nID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tbWFrbyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLW5hdGl2ZSA9ICJBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tbm9zZSA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLW51bXB5ID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tcGV4cGVjdCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXB0eXByb2Nlc3MgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1weWNhaXJvID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tcHljdXJsID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tcHlndGsgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1weXJleCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXNjb25zID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tc2NvbnMtbmF0aXZlID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tc2V0dXB0b29scyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXNpeCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXNtYXJ0cG0gPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1zbW1hcCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMyA9ICJBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWFzeW5jID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWRidXMgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZGlzdHJpYnV0ZSA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1kb2N1dGlscyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1naXQgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZ2l0ZGIgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtaW5pcGFyc2UgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtbWFrbyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1uYXRpdmUgPSAiQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1ub3NlID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLW51bXB5ID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXBpcCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1weWNhaXJvID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXB5Z29iamVjdCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1zZXR1cHRvb2xzID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXNpeCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1zbW1hcCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcWVtdSA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXFlbXUtaGVscGVyLW5hdGl2ZSA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXFlbXV3cmFwcGVyLWNyb3NzID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHV6emxlcyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24gPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tbmF0aXZlID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLW5vc2UgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tbnVtcHkgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tc2NvbnMgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tc2NvbnMtbmF0aXZlID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXNldHVwdG9vbHMgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1hc3luYyA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZGJ1cyA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZG9jdXRpbHMgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWdpdCA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZ2l0ZGIgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWluaXBhcnNlID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1tYWtvID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1uYXRpdmUgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLW5vc2UgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLW51bXB5ID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1waXAgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXB5Y2Fpcm8gPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXB5Z29iamVjdCA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtc2V0dXB0b29scyA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtc2l4ID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1zbW1hcCA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXFlbXUgPSAiSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1xZW11LWhlbHBlci1uYXRpdmUgPSAiSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1xZW11d3JhcHBlci1jcm9zcyA9ICJKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXF1aWx0ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXF1aWx0LW5hdGl2ZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1xdW90YSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCkBAIC02NTksMjcgKzYzNSwyNiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tcm5nLXRvb2xzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJwbSA9ICJNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcnBtcmVzb2x2ZSA9ICJNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcnN5bmMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcnN5bmMgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJ0LXRlc3RzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcnVieSA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXJ1YnkgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcnVuLXBvc3RpbnN0cyA9ICJDcmlzdGlhbiBJb3JnYSA8Y3Jpc3RpYW4uaW9yZ2FAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJ4dnQtdW5pY29kZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zYXRvLWljb24tdGhlbWUgPSAiQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc2F0by1zY3JlZW5zaG90ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc2F0by1zY3JlZW5zaG90ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNiYyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc2NyZWVuID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNjcm5zYXZlcnByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNlZCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc2VyZiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zZXRzZXJpYWwgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc2V0dGluZ3MtZGFlbW9uID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc2V0c2VyaWFsID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zZXR0aW5ncy1kYWVtb24gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc2hhZG93ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zaGFkb3ctc2VjdXJldHR5ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zaGFkb3ctc3lzcm9vdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc2hhcmVkLW1pbWUtaW5mbyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNoYXJlZC1taW1lLWluZm8gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc2h1dGRvd24tZGVza3RvcCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNpZ25pbmcta2V5cyA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zbGFuZyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zbGFuZyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc29jYXQgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNvdXJjZS1oaWdobGlnaHQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zcGVleCA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgpAQCAtNjg3LDEzICs2NjIsMTIgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNxbGl0ZTMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3F1YXNoZnMtdG9vbHMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3RhcnR1cC1ub3RpZmljYXRpb24gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zdGF0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zdHJhY2UgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3RyZXNzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN1YnZlcnNpb24gPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3VkbyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3dhYmJlci1uYXRpdmUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zd2lnID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3dpZyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXNmc3V0aWxzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXNrbG9nZCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzbGludXggPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCkBAIC03MDIsMjkgKzY3NiwyOCBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZC1ib290ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW1kLWJvb3RjaGFydCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZC1ib290Y29uZiA9ICJDYWxpZm9ybmlhIFN1bGxpdmFuIDxjYWxpZm9ybmlhLmwuc3VsbGl2YW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbWQtY29tcGF0LXVuaXRzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW1kLXNlcmlhbGdldHR5ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW1kLXN5c3RlbWN0bC1uYXRpdmUgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbXRhcCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbXRhcC11cHJvYmVzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdmluaXQgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN2aW5pdC1pbml0dGFiID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdmluaXQgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdmluaXQtaW5pdHRhYiA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10YWdsaWIgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdGFyID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10Y2YtYWdlbnQgPSAiUmFuZHkgV2l0dCA8cmFuZHkuZS53aXR0QGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10Y2wgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdGNsID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10Y3Atd3JhcHBlcnMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdGVzdGV4cG9ydC10YXJiYWxsID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRleGkyaHRtbCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10ZXhpbmZvID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdGV4aW5mby1kdW1teS1uYXRpdmUgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10ZXhpbmZvID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXRleGluZm8tZHVtbXktbmF0aXZlID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRpZmYgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10aW1lID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRpbnktaW5pdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRyYWNlLWNtZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRyZW1vciA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdHNsaWIgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10dGYtYml0c3RyZWFtLXZlcmEgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10dGYtYml0c3RyZWFtLXZlcmEgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdHpjb2RlLW5hdGl2ZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10emRhdGEgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdS1ib290ID0gIk1hcmVrIFZhc3V0IDxtYXJlay52YXN1dEBnbWFpbC5jb20+IgpAQCAtNzM2LDcgKzcwOSw3IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi11bmlmZGVmID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdW5pbmF0aXZlLXRhcmJhbGwgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdW56aXAgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi11cGRhdGUtcmMuZCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXVwZGF0ZS1yYy5kID0gIkNoYW5nIFJlYmVjY2EgU3dlZSBGdW4gPHJlYmVjY2Euc3dlZS5mdW4uY2hhbmdAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXVzYmluaXQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi11c2J1dGlscyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXV0aWwtbGludXggPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKQEAgLTc0NiwxMCArNzE5LDEwIEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi12YWxncmluZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXZpZGVvcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdm9sYXRpbGUtYmluZHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXZ0ZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXZ1bGthbiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXZ1bGthbi1kZW1vcyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdhZmZsZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXZ0ZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi12dWxrYW4gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdnVsa2FuLWRlbW9zID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXdhZmZsZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi13YXRjaGRvZyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdhdGNoZG9nLWNvbmZpZyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdheWxhbmQgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCkBAIC03NTcsMTQgKzczMCwxNCBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4td2Via2l0Z3RrID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4td2VzdG9uID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4td2VzdG9uLWluaXQgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi13Z2V0ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdoaWNoID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4td2ljLXRvb2xzID0gIkVkIEJhcnRvc2ggPGVkLmJhcnRvc2hAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXdnZXQgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXdoaWNoID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXdpYy10b29scyA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi13aXJlbGVzcy10b29scyA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAbGdlLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi13cGEtc3VwcGxpY2FudCA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAbGdlLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14MTEtY29tbW9uID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXgxMXBlcmYgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teDI2NCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXgyNjQgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14YXV0aCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14Y2ItcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4teGNiLXV0aWwgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgpAQCAtNzc0LDcgKzc0Nyw3IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14Y2ItdXRpbC13bSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14Y21pc2Nwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhkZy11dGlscyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhkZy11dGlscyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14ZHB5aW5mbyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14ZXYgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4teGV4dHByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKQEAgLTgxNiw3ICs3ODksNiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4teHNlcnZlci14b3JnID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhzZXQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4teHRyYW5zID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXh0c2NhbCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14dXNlci1hY2NvdW50ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXh2aWRlby10ZXN0cyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14dmluZm8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgpAQCAtODI0LDUgKzc5Niw0IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14eiA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXlhc20gPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXppcCA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXppc29mcy10b29scy1uYXRpdmUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi16bGliID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9zZWN1cml0eV9mbGFncy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYwppbmRleCBhYjIwNjJiLi5kNjZkZDU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYwpAQCAtNiwxMCArNiwxMSBAQAogIyBpbiB0aGUgRElTVFJPPSJwb2t5LWxzYiIgY29uZmlndXJhdGlvbi4KIAogR0NDUElFID89ICItLWVuYWJsZS1kZWZhdWx0LXBpZSIKK0dMSUJDUElFID89ICItLWVuYWJsZS1zdGF0aWMtcGllIgogCiAjIF9GT1JUSUZZX1NPVVJDRSByZXF1aXJlcyAtTzEgb3IgaGlnaGVyLCBzbyBkaXNhYmxlIGluIGRlYnVnIGJ1aWxkcyBhcyB0aGV5IHVzZQogIyAtTzAgd2hpY2ggdGhlbiByZXN1bHRzIGluIGEgY29tcGlsZXIgd2FybmluZy4KLWxjbF9tYXliZV9mb3J0aWZ5ID0gIiR7QGJhc2VfY29uZGl0aW9uYWwoJ0RFQlVHX0JVSUxEJywnMScsJycsJy1EX0ZPUlRJRllfU09VUkNFPTInLGQpfSIKK2xjbF9tYXliZV9mb3J0aWZ5ID0gIiR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdERUJVR19CVUlMRCcsJzEnLCcnLCctRF9GT1JUSUZZX1NPVVJDRT0yJyxkKX0iCiAKICMgRXJyb3Igb24gdXNlIG9mIGZvcm1hdCBzdHJpbmdzIHRoYXQgcmVwcmVzZW50IHBvc3NpYmxlIHNlY3VyaXR5IHByb2JsZW1zCiBTRUNVUklUWV9TVFJJTkdGT1JNQVQgPz0gIi1XZm9ybWF0IC1XZm9ybWF0LXNlY3VyaXR5IC1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5IgpAQCAtMzAsNiArMzEsNyBAQAogU0VDVVJJVFlfQ0ZMQUdTX3Bvd2VycGMgPSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nICR7bGNsX21heWJlX2ZvcnRpZnl9ICR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKIFNFQ1VSSVRZX0NGTEFHU19wbi1saWJnY2NfcG93ZXJwYyA9ICIiCiBHQ0NQSUVfcG93ZXJwYyA9ICIiCitHTElCQ1BJRV9wb3dlcnBjID0gIiIKIAogIyBhcm0gc3BlY2lmaWMgc2VjdXJpdHkgZmxhZyBpc3N1ZXMKIFNFQ1VSSVRZX0NGTEFHU19wbi1nbGliYyA9ICIiCkBAIC01OSwxMiArNjEsOCBAQAogU0VDVVJJVFlfTERGTEFHU19yZW1vdmVfcG4tZ2NjLXJ1bnRpbWUgPSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIgogU0VDVVJJVFlfTERGTEFHU19yZW1vdmVfcG4tZ2xpYmMgPSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIgogU0VDVVJJVFlfTERGTEFHU19yZW1vdmVfcG4tZ2xpYmMtaW5pdGlhbCA9ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmciCi1TRUNVUklUWV9MREZMQUdTX3BuLXhmODYtdmlkZW8tZmJkZXYgPSAiJHtTRUNVUklUWV9YX0xERkxBR1N9IgotU0VDVVJJVFlfTERGTEFHU19wbi14Zjg2LXZpZGVvLWludGVsID0gIiR7U0VDVVJJVFlfWF9MREZMQUdTfSIKLVNFQ1VSSVRZX0xERkxBR1NfcG4teGY4Ni12aWRlby1vbWFwZmIgPSAiJHtTRUNVUklUWV9YX0xERkxBR1N9IgotU0VDVVJJVFlfTERGTEFHU19wbi14Zjg2LXZpZGVvLW9tYXAgPSAiJHtTRUNVUklUWV9YX0xERkxBR1N9IgotU0VDVVJJVFlfTERGTEFHU19wbi14Zjg2LXZpZGVvLXZlc2EgPSAiJHtTRUNVUklUWV9YX0xERkxBR1N9IgotU0VDVVJJVFlfTERGTEFHU19wbi14Zjg2LXZpZGVvLXZtd2FyZSA9ICIke1NFQ1VSSVRZX1hfTERGTEFHU30iCisjIEFsbCB4b3JnIG1vZHVsZSBkcml2ZXJzIG5lZWQgdG8gYmUgbGlua2VkIHRoaXMgd2F5IGFzIHdlbGwgYW5kIGFyZQorIyBoYW5kbGVkIGluIHJlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveG9yZy1kcml2ZXItY29tbW9uLmluYwogU0VDVVJJVFlfTERGTEFHU19wbi14c2VydmVyLXhvcmcgPSAiJHtTRUNVUklUWV9YX0xERkxBR1N9IgogCiBUQVJHRVRfQ0NfQVJDSF9hcHBlbmRfcG4tYmludXRpbHMgPSAiICR7U0VMRUNURURfT1BUSU1JWkFUSU9OfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLW11c2wuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtbXVzbC5pbmMKaW5kZXggOWFlMmE5My4uNTRlMWFjZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtbXVzbC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtbXVzbC5pbmMKQEAgLTI2LDQgKzI2LDcgQEAKICAgICBtdXNsIFwKICAgICBtdXNsLWRiZyBcCiAgICAgbXVzbC1kZXYgXAorICAgIG11c2wtdXRpbHMgXAorICAgIG11c2wtdXRpbHMtaWNvbnYgXAorICAgIGJzZC1oZWFkZXJzLWRldiBcCiAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y21vZGUtZGVmYXVsdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbW9kZS1kZWZhdWx0LmluYwppbmRleCAxNzg3YTgyLi4wMDM5OWFlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbW9kZS1kZWZhdWx0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbW9kZS1kZWZhdWx0LmluYwpAQCAtMjQsMTAgKzI0LDExIEBACiAKIEdDQ1ZFUlNJT04gPz0gIjcuJSIKIFNES0dDQ1ZFUlNJT04gPz0gIiR7R0NDVkVSU0lPTn0iCi1CSU5VVkVSU0lPTiA/PSAiMi4yOSUiCitCSU5VVkVSU0lPTiA/PSAiMi4zMCUiCiBHREJWRVJTSU9OID89ICI4LjAlIgotR0xJQkNWRVJTSU9OID89ICIyLjI2JSIKLUxJTlVYTElCQ1ZFUlNJT04gPz0gIjQuMTIlIgorR0xJQkNWRVJTSU9OID89ICIyLjI3JSIKK0xJTlVYTElCQ1ZFUlNJT04gPz0gIjQuMTUlIgorUUVNVVZFUlNJT04gPz0gIjIuMTElIgogCiBQUkVGRVJSRURfVkVSU0lPTl9nY2MgPz0gIiR7R0NDVkVSU0lPTn0iCiBQUkVGRVJSRURfVkVSU0lPTl9nY2MtY3Jvc3MtJHtUQVJHRVRfQVJDSH0gPz0gIiR7R0NDVkVSU0lPTn0iCkBAIC02MywxMCArNjQsMjEgQEAKIFBSRUZFUlJFRF9WRVJTSU9OX2dsaWJjLWluaXRpYWwgICAgICAgICAgICA/PSAiJHtHTElCQ1ZFUlNJT059IgogUFJFRkVSUkVEX1ZFUlNJT05fbmF0aXZlc2RrLWdsaWJjLWluaXRpYWwgID89ICIke0dMSUJDVkVSU0lPTn0iCiBQUkVGRVJSRURfVkVSU0lPTl9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlICAgPz0gIiR7R0xJQkNWRVJTSU9OfSIKLSMgZG9uJ3QgdXNlIHZlcnNpb24gZWFybGllciB0aGFuIDEuNCBmb3IgZ3ppcC1uYXRpdmUsIGFzIGl0J3MgbmVjZXNzYXJ5IGZvcgotIyBzb21lIHBhY2thZ2VzIHVzaW5nIGFuIGFyY2hpdmUgZm9ybWF0IGluY29tcGF0aWJsZSB3aXRoIGVhcmxpZXIgZ3ppcAotUFJFRkVSUkVEX1ZFUlNJT05fZ3ppcC1uYXRpdmUgPz0gIjEuOCIKIAorCitQUkVGRVJSRURfVkVSU0lPTl9xZW11ID89ICIke1FFTVVWRVJTSU9OfSIKK1BSRUZFUlJFRF9WRVJTSU9OX3FlbXUtbmF0aXZlID89ICIke1FFTVVWRVJTSU9OfSIKK1BSRUZFUlJFRF9WRVJTSU9OX25hdGl2ZXNkay1xZW11ID89ICIke1FFTVVWRVJTSU9OfSIKICMgU2V0dXAgc3VpdGFibGUgdG9vbGNoYWluIGZsYWdzCiByZXF1aXJlIGNvbmYvZGlzdHJvL2luY2x1ZGUvYXMtbmVlZGVkLmluYwogCitHT1ZFUlNJT04gPz0gIjEuOSUiCitQUkVGRVJSRURfVkVSU0lPTl92aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nbyA/PSAiJHtHT1ZFUlNJT059IgorUFJFRkVSUkVEX1ZFUlNJT05fZ28tY3Jvc3MtJHtUQVJHRVRfQVJDSH0gPz0gIiR7R09WRVJTSU9OfSIKK1BSRUZFUlJFRF9WRVJTSU9OX2dvLWNyb3Nzc2RrLSR7U0RLX0FSQ0h9ID89ICIke0dPVkVSU0lPTn0iCitQUkVGRVJSRURfVkVSU0lPTl9nby1jcm9zcy1jYW5hZGlhbi0ke1RSQU5TTEFURURfVEFSR0VUX0FSQ0h9ID89ICIke0dPVkVSU0lPTn0iCitQUkVGRVJSRURfVkVSU0lPTl9nbyA/PSAiJHtHT1ZFUlNJT059IgorUFJFRkVSUkVEX1ZFUlNJT05fZ28tbmF0aXZlID89ICIke0dPVkVSU0lPTn0iCitQUkVGRVJSRURfVkVSU0lPTl9nby1ydW50aW1lID89ICIke0dPVkVSU0lPTn0iCitQUkVGRVJSRURfVkVSU0lPTl9uYXRpdmVzZGstZ28gPz0gIiR7R09WRVJTSU9OfSIKK1BSRUZFUlJFRF9WRVJTSU9OX25hdGl2ZXNkay1nby1ydW50aW1lID89ICIke0dPVkVSU0lPTn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3lvY3RvLXVuaW5hdGl2ZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3lvY3RvLXVuaW5hdGl2ZS5pbmMKaW5kZXggY2Q1ZmMwYi4uYThlODJjYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS95b2N0by11bmluYXRpdmUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUveW9jdG8tdW5pbmF0aXZlLmluYwpAQCAtOCw2ICs4LDYgQEAKIAogVU5JTkFUSVZFX01BWEdMSUJDVkVSU0lPTiA9ICIyLjI3IgogCi1VTklOQVRJVkVfVVJMID89ICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvdW5pbmF0aXZlLzEuOC8iCi1VTklOQVRJVkVfQ0hFQ0tTVU1baTY4Nl0gPz0gIjQyN2NlNTIyZWM5N2Y2NWM3NWZkODk1ODdkOTBlZjc4OWU4Y2JjYTRhNjE3YWJjNGI1ODIyYWJiMDFjMmQwYWUiCi1VTklOQVRJVkVfQ0hFQ0tTVU1beDg2XzY0XSA/PSAiZGU0OTQ3ZTk4ZTA5ZTE0MzJkMDY5MzExY2MyMDkzOTc0ZWNiOTEzOGE3MTRmZDU0NjZmNzM1MjRkZTY2YTY5MyIKK1VOSU5BVElWRV9VUkwgPz0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy91bmluYXRpdmUvMS45LyIKK1VOSU5BVElWRV9DSEVDS1NVTVtpNjg2XSA/PSAiODNhNGY5MjdkYTgxZDk4ODllZjBjYmU1YzEyY2I3ODJlMjFjNmNjMTFlNjE1NTYwMGI5NGZmMGM5OTU3NmRjZSIKK1VOSU5BVElWRV9DSEVDS1NVTVt4ODZfNjRdID89ICJjMjY2MjJhMWYyN2RiZjViMjVkZTk4NmIxMTU4NGI1YzViMmYzMjJkOWViMzY3ZjcwNWE3NDRmNThhNTU2MWVjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kb2N1bWVudGF0aW9uLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2RvY3VtZW50YXRpb24uY29uZgppbmRleCAwODFlNzI2Li4yNTRmOGYxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2RvY3VtZW50YXRpb24uY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2RvY3VtZW50YXRpb24uY29uZgpAQCAtOCw3ICs4LDYgQEAKIGRvX2J1aWxkW2RvY10gPSAiRGVmYXVsdCB0YXNrIGZvciBhIHJlY2lwZSAtIGRlcGVuZHMgb24gYWxsIG90aGVyIG5vcm1hbCB0YXNrcyByZXF1aXJlZCB0byAnYnVpbGQnIGEgcmVjaXBlIgogZG9fYnVuZGxlX2luaXRyYW1mc1tkb2NdID0gIkNvbWJpbmVzIGFuIGluaXRpYWwgcmFtZGlzayBpbWFnZSBhbmQga2VybmVsIHRvZ2V0aGVyIHRvIGZvcm0gYSBzaW5nbGUgaW1hZ2UiCiBkb19jaGVja3VyaVtkb2NdID0gIlZhbGlkYXRlcyB0aGUgU1JDX1VSSSB2YWx1ZSIKLWRvX2NoZWNrdXJpYWxsW2RvY10gPSAiVmFsaWRhdGVzIHRoZSBTUkNfVVJJIHZhbHVlIGZvciBhbGwgcmVjaXBlcyByZXF1aXJlZCB0byBidWlsZCBhIHRhcmdldCIKIGRvX2NsZWFuW2RvY10gPSAiUmVtb3ZlcyBhbGwgb3V0cHV0IGZpbGVzIGZvciBhIHRhcmdldCIKIGRvX2NsZWFuYWxsW2RvY10gPSAiUmVtb3ZlcyBhbGwgb3V0cHV0IGZpbGVzLCBzaGFyZWQgc3RhdGUgY2FjaGUsIGFuZCBkb3dubG9hZGVkIHNvdXJjZSBmaWxlcyBmb3IgYSB0YXJnZXQiCiBkb19jbGVhbnNzdGF0ZVtkb2NdID0gIlJlbW92ZXMgYWxsIG91dHB1dCBmaWxlcyBhbmQgc2hhcmVkIHN0YXRlIGNhY2hlIGZvciBhIHRhcmdldCIKQEAgLTIyLDcgKzIxLDYgQEAKIGRvX2RldnNoZWxsW2RvY10gPSAiU3RhcnRzIGEgc2hlbGwgd2l0aCB0aGUgZW52aXJvbm1lbnQgc2V0IHVwIGZvciBkZXZlbG9wbWVudC9kZWJ1Z2dpbmciCiBkb19kaWZmY29uZmlnW2RvY10gPSAiQ29tcGFyZXMgdGhlIG9sZCBhbmQgbmV3IGNvbmZpZyBmaWxlcyBhZnRlciBydW5uaW5nIGRvX21lbnVjb25maWcgZm9yIHRoZSBrZXJuZWwiCiBkb19mZXRjaFtkb2NdID0gIkZldGNoZXMgdGhlIHNvdXJjZSBjb2RlIgotZG9fZmV0Y2hhbGxbZG9jXSA9ICJGZXRjaGVzIGFsbCByZW1vdGUgc291cmNlcyByZXF1aXJlZCB0byBidWlsZCBhIHRhcmdldCIKIGRvX2luc3RhbGxbZG9jXSA9ICJDb3BpZXMgZmlsZXMgZnJvbSB0aGUgY29tcGlsYXRpb24gZGlyZWN0b3J5IHRvIGEgaG9sZGluZyBhcmVhIgogZG9faW5zdGFsbF9wdGVzdF9iYXNlW2RvY10gPSAiQ29waWVzIHRoZSBydW50aW1lIHRlc3Qgc3VpdGUgZmlsZXMgZnJvbSB0aGUgY29tcGlsYXRpb24gZGlyZWN0b3J5IHRvIGEgaG9sZGluZyBhcmVhIgogZG9fa2VybmVsX2NoZWNrb3V0W2RvY10gPSAiQ2hlY2tzIG91dCBzb3VyY2UvbWV0YSBicmFuY2hlcyBmb3IgYSBsaW51eC15b2N0byBzdHlsZSBrZXJuZWwiCkBAIC0yNDcsNiArMjQ1LDcgQEAKIEtFUk5FTF9JTUFHRVRZUEVTW2RvY10gPSAiVGhlIGxpc3Qgb2YgdHlwZXMgb2Yga2VybmVsIHRvIGJ1aWxkIGZvciBhIGRldmljZSwgdXN1YWxseSBzZXQgYnkgdGhlIG1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlcyBhbmQgZGVmYXVsdHMgdG8gS0VSTkVMX0lNQUdFVFlQRS4iCiBLRVJORUxfTU9EVUxFX0FVVE9MT0FEW2RvY10gPSAiTGlzdHMga2VybmVsIG1vZHVsZXMgdGhhdCBuZWVkIHRvIGJlIGF1dG8tbG9hZGVkIGR1cmluZyBib290IgogS0VSTkVMX01PRFVMRV9QUk9CRUNPTkZbZG9jXSA9ICJMaXN0cyBrZXJuZWwgbW9kdWxlcyBmb3Igd2hpY2ggdGhlIGJ1aWxkIHN5c3RlbSBleHBlY3RzIHRvIGZpbmQgbW9kdWxlX2NvbmZfKiB2YWx1ZXMgdGhhdCBzcGVjaWZ5IGNvbmZpZ3VyYXRpb24gZm9yIGVhY2ggb2YgdGhlIG1vZHVsZXMiCitLRVJORUxfUEFDS0FHRV9OQU1FW2RvY10gPSAiTmFtZSBwcmVmaXggZm9yIGtlcm5lbCBwYWNrYWdlcy4gRGVmYXVsdHMgdG8gJ2tlcm5lbCcuIgogS0VSTkVMX1BBVEhbZG9jXSA9ICJUaGUgbG9jYXRpb24gb2YgdGhlIGtlcm5lbCBzb3VyY2VzLiBUaGlzIHZhcmlhYmxlIGlzIHNldCB0byB0aGUgdmFsdWUgb2YgdGhlIFNUQUdJTkdfS0VSTkVMX0RJUiB3aXRoaW4gdGhlIG1vZHVsZSBjbGFzcyAobW9kdWxlLmJiY2xhc3MpLiIKIEtFUk5FTF9TUkNbZG9jXSA9ICJUaGUgbG9jYXRpb24gb2YgdGhlIGtlcm5lbCBzb3VyY2VzLiBUaGlzIHZhcmlhYmxlIGlzIHNldCB0byB0aGUgdmFsdWUgb2YgdGhlIFNUQUdJTkdfS0VSTkVMX0RJUiB3aXRoaW4gdGhlIG1vZHVsZSBjbGFzcyAobW9kdWxlLmJiY2xhc3MpLiIKIEtGRUFUVVJFX0RFU0NSSVBUSU9OW2RvY10gPSAiUHJvdmlkZXMgYSBzaG9ydCBkZXNjcmlwdGlvbiBvZiBhIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQuIFlvdSB1c2UgdGhpcyB2YXJpYWJsZSBpbiB0aGUgLnNjYyBmaWxlIHRoYXQgZGVzY3JpYmVzIGEgY29uZmlndXJhdGlvbiBmcmFnbWVudCBmaWxlLiIKQEAgLTMzMyw3ICszMzIsNiBAQAogUFJFRkVSUkVEX1BST1ZJREVSW2RvY10gPSAiSWYgbXVsdGlwbGUgcmVjaXBlcyBwcm92aWRlIGFuIGl0ZW0sIHRoaXMgdmFyaWFibGUgZGV0ZXJtaW5lcyB3aGljaCByZWNpcGUgc2hvdWxkIGJlIGdpdmVuIHByZWZlcmVuY2UuIgogUFJFRkVSUkVEX1ZFUlNJT05bZG9jXSA9ICJJZiB0aGVyZSBhcmUgbXVsdGlwbGUgdmVyc2lvbnMgb2YgcmVjaXBlcyBhdmFpbGFibGUsIHRoaXMgdmFyaWFibGUgZGV0ZXJtaW5lcyB3aGljaCByZWNpcGUgc2hvdWxkIGJlIGdpdmVuIHByZWZlcmVuY2UuIgogUFJFTUlSUk9SU1tkb2NdID0gIlNwZWNpZmllcyBhZGRpdGlvbmFsIHBhdGhzIGZyb20gd2hpY2ggdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZ2V0cyBzb3VyY2UgY29kZS4iCi1QUklOQ1tkb2NdID0gIkNhdXNlcyB0aGUgUFIgdmFyaWFibGUgb2YgLmJiYXBwZW5kIGZpbGVzIHRvIGR5bmFtaWNhbGx5IGluY3JlbWVudC4gVGhpcyBpbmNyZW1lbnQgbWluaW1pemVzIHRoZSBpbXBhY3Qgb2YgbGF5ZXIgb3JkZXJpbmcuIFRoaXMgdmFyaWFibGUgZGVmYXVsdHMgdG8gJzAnLiIKIFBSSU9SSVRZW2RvY10gPSAiSW5kaWNhdGVzIHRoZSBpbXBvcnRhbmNlIG9mIGEgcGFja2FnZS4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzICdvcHRpb25hbCcuICBPdGhlciBzdGFuZGFyZCB2YWx1ZXMgYXJlICdyZXF1aXJlZCcsICdzdGFuZGFyZCcgYW5kICdleHRyYScuIgogUFJPVklERVNbZG9jXSA9ICJBIGxpc3Qgb2YgYWxpYXNlcyB0aGF0IGEgcmVjaXBlIGFsc28gcHJvdmlkZXMuIFRoZXNlIGFsaWFzZXMgYXJlIHVzZWZ1bCBmb3Igc2F0aXNmeWluZyBkZXBlbmRlbmNpZXMgb2Ygb3RoZXIgcmVjaXBlcyBkdXJpbmcgdGhlIGJ1aWxkIGFzIHNwZWNpZmllZCBieSBERVBFTkRTLiIKIFBSU0VSVl9IT1NUW2RvY10gPSAiVGhlIG5ldHdvcmsgYmFzZWQgUFIgc2VydmljZSBob3N0IGFuZCBwb3J0LiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbGF5ZXIuY29uZgppbmRleCAwYzNkYWU1Li4zMTVmYjkzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2xheWVyLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9sYXllci5jb25mCkBAIC03LDExICs3LDEyIEBACiBCQkZJTEVfUEFUVEVSTl9jb3JlID0gIl4ke0xBWUVSRElSfS8iCiBCQkZJTEVfUFJJT1JJVFlfY29yZSA9ICI1IgogCitMQVlFUlNFUklFU19DT1JFTkFNRVMgPSAic3VtbyIKKwogIyBUaGlzIHNob3VsZCBvbmx5IGJlIGluY3JlbWVudGVkIG9uIHNpZ25pZmljYW50IGNoYW5nZXMgdGhhdCB3aWxsCiAjIGNhdXNlIGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGggb3RoZXIgbGF5ZXJzCiBMQVlFUlZFUlNJT05fY29yZSA9ICIxMSIKLQotTEFZRVJTRVJJRVNfQ09SRU5BTUVTID0gInJvY2tvIgorTEFZRVJTRVJJRVNfQ09NUEFUX2NvcmUgPSAic3VtbyIKIAogQkJMQVlFUlNfTEFZRVJJTkRFWF9OQU1FX2NvcmUgPSAib3BlbmVtYmVkZGVkLWNvcmUiCiAKQEAgLTQ1LDYgKzQ2LDExIEBACiAiCiAKIFNJR0dFTl9FWENMVURFX1NBRkVfUkVDSVBFX0RFUFMgKz0gIiBcCisgICotPnF1aWx0LW5hdGl2ZSBcCisgICotPnN1YnZlcnNpb24tbmF0aXZlIFwKKyAgKi0+Z2l0LW5hdGl2ZSBcCisgICotPmNjYWNoZS1uYXRpdmUgXAorICAqLT5pY2VjYy1jcmVhdGUtZW52LW5hdGl2ZSBcCiAgIGdjYy1jcm9zcy0ke1RBUkdFVF9BUkNIfS0+dmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9bGliYy1mb3ItZ2NjIFwKICAgZ2NjLWNyb3NzLSR7VEFSR0VUX0FSQ0h9LT5saW51eC1saWJjLWhlYWRlcnMgXAogICBwcHAtZGlhbGluLT5wcHAgXApAQCAtNjIsMTMgKzY4LDE0IEBACiAgIGluaXRyYW1mcy1tb2R1bGUtaW5zdGFsbC0+Z3J1YiBcCiAgIGluaXRyYW1mcy1tb2R1bGUtaW5zdGFsbC0+cGFydGVkIFwKICAgaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsLT51dGlsLWxpbnV4IFwKKyAgZ3J1Yi1lZmktPmdydWItYm9vdGNvbmYgXAogICBsaWJlcmF0aW9uLWZvbnRzLT5mb250Y29uZmlnIFwKICAgY2FudGFyZWxsLWZvbnRzLT5mb250Y29uZmlnIFwKICAgZ25vbWUtaWNvbi10aGVtZS0+bGlicnN2ZyBcCiAgIGZvbnQtYWxpYXMtPmZvbnQtdXRpbCBcCisgIHN5c3RlbWQtYm9vdC0+c3lzdGVtZC1ib290Y29uZiBcCiAgIHdlc3Rvbi1pbml0LT53ZXN0b24gXAogICB3ZXN0b24taW5pdC0+a2JkIFwKLSAgb3Byb2ZpbGUtPnZpcnR1YWwva2VybmVsIFwKICIKIAogIyBXZSBuZWVkIHRvIGtlZXAgYml0YmFrZSB0b29scyBpbiBQQVRICmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2FyY2gtbWljcm9ibGF6ZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2FyY2gtbWljcm9ibGF6ZS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFiNzE3MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvYXJjaC1taWNyb2JsYXplLmluYwpAQCAtMCwwICsxLDUzIEBACisjIE1pY3JvQmxhemUgYXJjaGl0ZWN0dXJlIHR1bmUgZmVhdHVyZSBjb25maWd1cmF0aW9uCisKKyMgQXJjaGl0ZWN0dXJlIGZlYXR1cmUgYW5kIG92ZXJyaWRlCitUVU5FVkFMSURbbWljcm9ibGF6ZV0gPSAiTWljcm9CbGF6ZSIKK01BQ0hJTkVPVkVSUklERVMgPS4gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm1pY3JvYmxhemUiLCAibWljcm9ibGF6ZToiLCAiIiwgZCl9IgorCisjIEVuZGlhbgorVFVORVZBTElEW2JpZ2VuZGlhbl0gPSAiVXNlIE1pY3JvYmxhemUgQmlnIEVuZGlhbiIKK1RVTkVDT05GTElDVFNbYmlnZW5kaWFuXSArPSAidjEwLjAiCisKK01CUEtHQVJDSF9FTkRJQU4gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYmlnZW5kaWFuIiwgImViIiwgImVsIiwgZCl9IgorCitUVU5FX0NDQVJHUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYmlnZW5kaWFuIiwgIi1tYmlnLWVuZGlhbiIsICItbWxpdHRsZS1lbmRpYW4iLCBkKX0iCisKKyMgR2VuZXJhbCBmZWF0dXJlcworVFVORVZBTElEW2JhcnJlbC1zaGlmdF0gPSAiRW5hYmxlIEhhcmR3YXJlIEJhcnJlbCBTaGlmdGVyIgorVFVORVZBTElEW3BhdHRlcm4tY29tcGFyZV0gPSAiRW5hYmxlIFBhdHRlcm4gQ29tcGFyZSBJbnN0cnVjdGlvbnMiCitUVU5FVkFMSURbcmVvcmRlcl0gPSAiRW5hYmxlIFJlb3JkZXIgSW5zdHJ1Y3Rpb25zIgorVFVORUNPTkZMSUNUU1tyZW9yZGVyXSArPSAidjguMDAgdjguMTAgdjguMjAiCisKKyMgQ29yZSBjb25maWd1cmF0aW9uIHR1bmUgb3B0aW1pemF0aW9ucworVFVORVZBTElEW2ZyZXF1ZW5jeS1vcHRpbWl6ZWRdID0gIkVuYWJsaW5nIHR1bmluZyBmb3IgZnJlcXVlbmN5IG9wdGltaXplZCBjb3JlIChBUkVBX09QVElNSVpFRF8yKSIKK1RVTkVDT05GTElDVFNbZnJlcXVlbmN5LW9wdGltaXplZF0gKz0gInY4LjAwIHY4LjEwIHY4LjIwIHY4LjMwIHY4LjQwIHY4LjUwIHY5LjAgdjkuMSB2OS4yIHY5LjMgdjkuNCB2OS41IHY5LjYiCisKKyMgRmVhdHVyZSBjb21waWxlciBhcmdzCitUVU5FX0NDQVJHUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYmFycmVsLXNoaWZ0IiwgIi1teGwtYmFycmVsLXNoaWZ0IiwgIi1tbm8teGwtYmFycmVsLXNoaWZ0IiwgZCl9IgorVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgInBhdHRlcm4tY29tcGFyZSIsICItbXhsLXBhdHRlcm4tY29tcGFyZSIsICItbW5vLXhsLXBhdHRlcm4tY29tcGFyZSIsIGQpfSIKK1RVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJmcmVxdWVuY3ktb3B0aW1pemVkIiwgIi1teGwtZnJlcXVlbmN5IiwgIiIsIGQpfSIKKworIyBEaXNhYmxlIHJlb3JkZXIgZm9yIHY4LjMwIGlmIHBhdHRlcm4tY29tcGFyZSBpcyBub3QgZW5hYmxlZAorVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgInJlb3JkZXIiLCBcCisgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgInY4LjMwIiwgXAorICAgICAgICAgICAgYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAicGF0dGVybi1jb21wYXJlIiwgXAorICAgICAgICAgICAgICAgICItbXhsLXJlb3JkZXIiLCAiLW1uby14bC1yZW9yZGVyIiwgZCksIFwKKyAgICAgICAgICAgICItbXhsLXJlb3JkZXIiLCBkKSwgIi1tbm8teGwtcmVvcmRlciIsIGQpfSIKKworIyBGZWF0dXJlIHBhY2thZ2UgYXJjaGl0ZWN0dXJlIGZvcm1hdHRpbmcKK01CUEtHQVJDSF9UVU5FID0gIiIKK01CUEtHQVJDSF9UVU5FIC49ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJiYXJyZWwtc2hpZnQiLCAiLWJzIiwgIiIsIGQpfSIKK01CUEtHQVJDSF9UVU5FIC49ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJwYXR0ZXJuLWNvbXBhcmUiLCAiLWNtcCIsICIiLCBkKX0iCitNQlBLR0FSQ0hfVFVORSAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAicmVvcmRlciIsICItcmUiLCAiIiwgZCl9IgorTUJQS0dBUkNIX1RVTkUgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImZyZXF1ZW5jeS1vcHRpbWl6ZWQiLCAiLWZvIiwgIiIsIGQpfSIKKworIyBBZGRpdGlvbmFsIGZlYXR1cmVzCityZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvZmVhdHVyZS1taWNyb2JsYXplLXZlcnNpb25zLmluYworcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2ZlYXR1cmUtbWljcm9ibGF6ZS1tYXRoLmluYworCisjIEFyY2hpdGVjdHVyZSBuYW1lLCBlaXRoZXIgJ21pY3JvYmxhemVlYicgb3IgJ21pY3JvYmxhemVlbCcgZGVwZW5kaW5nIG9uIGVuZGlhbmVzcworVFVORV9BUkNIID0gIm1pY3JvYmxhemUke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJiaWdlbmRpYW4iLCAiZWIiLCAiZWwiLCBkKX0iCisKKyMgUGFja2FnZSBBcmNoaXRlY3R1cmUgZm9ybWF0dGluZworVFVORV9QS0dBUkNIID0gIm1pY3JvYmxhemUke01CUEtHQVJDSF9FTkRJQU59JHtNQlBLR0FSQ0hfVkVSU0lPTn0ke01CUEtHQVJDSF9UVU5FfSR7TUJQS0dBUkNIX01BVEh9IgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2ZlYXR1cmUtbWljcm9ibGF6ZS1tYXRoLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvZmVhdHVyZS1taWNyb2JsYXplLW1hdGguaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzMTUxNjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2ZlYXR1cmUtbWljcm9ibGF6ZS1tYXRoLmluYwpAQCAtMCwwICsxLDMzIEBACisjIFRoaXMgaW5jbHVkZSBkZXNjcmliZXMgdGhlIG1hdGggZmVhdHVyZXMgKGludGVnZXIgYW5kIGZsb2F0aW5nIHBvaW50KSB0aGF0CisjIGFyZSBhdmFpbGFibGUgZm9yIHRoZSBNaWNyb0JsYXplIElTQQorCitUVU5FVkFMSURbbXVsdGlwbHktbG93XSA9ICJIYXJkd2FyZSBtdWx0aXBsZXIgd2l0aCAzMiBiaXQgcmVzdWx0IgorVFVORVZBTElEW211bHRpcGx5LWhpZ2hdID0gIkhhcmR3YXJlIG11bHRpcGxlciB3aXRoIDY0IGJpdCByZXN1bHQiCitUVU5FVkFMSURbZGl2aWRlLWhhcmRdID0gIkhhcmR3YXJlIGRpdmlkZXIiCitUVU5FVkFMSURbZnB1LXNvZnRdID0gIlNvZnR3YXJlIEZQVSIKK1RVTkVWQUxJRFtmcHUtaGFyZF0gPSAiSGFyZHdhcmUgRlBVIGluIGJhc2ljIG1vZGUiCitUVU5FVkFMSURbZnB1LWhhcmQtZXh0ZW5kZWRdID0gIkhhcmR3YXJlIEZQVSBpbiBleHRlbmRlZCBtb2RlIChjb252ZXJzaW9uIGFuZCBzcXVhcmUgcm9vdCBpbnN0cnVjdGlvbnMpIgorCitUVU5FQ09ORkxJQ1RTW2ZwdS1zb2Z0XSA9ICJmcHUtaGFyZCBmcHUtaGFyZC1leHRlbmRlZCIKK1RVTkVDT05GTElDVFNbZnB1LWhhcmRdID0gImZwdS1zb2Z0IgorVFVORUNPTkZMSUNUU1tmcHUtaGFyZC1leHRlbmRlZF0gPSAiZnB1LXNvZnQiCisKKyMgQ29tcGlsZXIgYXJncworVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnVFVORV9GRUFUVVJFUycsIFsnbXVsdGlwbHktbG93JywgJ211bHRpcGx5LWhpZ2gnXSwgJy1tbm8teGwtc29mdC1tdWwnLCAnLW14bC1zb2Z0LW11bCcsIGQpfSIKK1RVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdtdWx0aXBseS1oaWdoJywgJy1teGwtbXVsdGlwbHktaGlnaCcsICcnLCBkKX0iCisKK1RVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdkaXZpZGUtaGFyZCcsICctbW5vLXhsLXNvZnQtZGl2JywgJy1teGwtc29mdC1kaXYnLCBkKX0iCisKK1RVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdmcHUtc29mdCcsICcnLCAnJywgZCl9IgorVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnVFVORV9GRUFUVVJFUycsIFsnZnB1LWhhcmQnLCAnZnB1LWhhcmQtZXh0ZW5kZWQnXSwgJy1taGFyZC1mbG9hdCcsICcnLCBkKX0iCitUVU5FX0NDQVJHUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnZnB1LWhhcmQtZXh0ZW5kZWQnLCAnLW14bC1mbG9hdC1jb252ZXJ0IC1teGwtZmxvYXQtc3FydCcsICcnLCBkKX0iCisKKyMgU2V0IHRhcmdldCBmcHUgKGJpdGJha2Uga25vd24gdGFyZ2V0KSB0byBzb2Z0IG9yIGhhcmQgKGJhc2ljIG9yIGV4dGVuZGVkKQorVEFSR0VUX0ZQVSA9ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ1RVTkVfRkVBVFVSRVMnLCAnZnB1LWhhcmQgZnB1LWhhcmQtZXh0ZW5kZWQnLCAnZnB1LWhhcmQnLCAnZnB1LXNvZnQnLCBkKX0iCisKKyMgUGFja2FnZSBBcmNoaXRlY3R1cmUgZm9ybWF0dGluZworTUJQS0dBUkNIX01BVEggPSAiIgorTUJQS0dBUkNIX01BVEggLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ211bHRpcGx5LWhpZ2gnLCAnLW1oJywgYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbXVsdGlwbHktbG93JywgJy1tbCcsICcnLCBkKSwgZCl9IgorTUJQS0dBUkNIX01BVEggLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2RpdmlkZS1oYXJkJywgJy1kaXYnLCAnJywgZCl9IgorTUJQS0dBUkNIX01BVEggLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2ZwdS1oYXJkLWV4dGVuZGVkJywgJy1mZScsIGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2ZwdS1oYXJkJywgJy1mYicsICcnLCBkKSwgZCl9IgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2ZlYXR1cmUtbWljcm9ibGF6ZS12ZXJzaW9ucy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2ZlYXR1cmUtbWljcm9ibGF6ZS12ZXJzaW9ucy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU1Njc0ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvZmVhdHVyZS1taWNyb2JsYXplLXZlcnNpb25zLmluYwpAQCAtMCwwICsxLDY3IEBACisjIE1pY3JvQmxhemUgdmVyc2lvbnMgYXJlIGRlZmluZWQgYXMgZmVhdHVyZXMsIHRoZSBmZWF0dXJlcyBhcmUgc2V0dXAgdG8KKyMgY29uZmxpY3Qgd2l0aCBvdGhlciB2ZXJzaW9ucyBhcyB3ZWxsIGFzIHVuYXZhaWxhYmxlIGZlYXR1cmVzIGZvciBwYXJ0aWN1bGFyCisjIHZlcnNpb25zLgorIworIyBWZXJzaW9ucyBiZWZvcmUgdjkuMCBvZiBNaWNyb0JsYXplIHVzZSBhIHZlcnNpb25pbmcgc2NoZW1lIG9mICJ2WC5ZWS5aIgorIyAod2hlcmUgWiA9IFthYmNdKS4gRm9yIHY4LiogdmVyc2lvbnMgb2YgTWljcm9CbGF6ZSB0aGUgcmV2aXNpb24gKFopIGNoYW5nZXMKKyMgZGlkIG5vdCBhZmZlY3QgQUJJIGFuZCBhcmUgaWdub3JlZCBieSB0aGlzIHR1bmUgY29uZmlndXJhdGlvbi4gVGhvdWdoIHRoaXMKKyMgZm9ybWF0IGlzIGV4cGVjdGVkIGJ5IEdDQyBpbmNsdWRpbmcgdGhlIHJldmlzaW9uLCBidXQgdGhpcyBpcyBkZWZhdWx0ZWQgdG8KKyMgIi5hIi4KKyMKKyMgU2luY2UgdjkuMCBvZiBNaWNyb0JsYXplIHRoZSByZXZpc2lvbiAoWikgcGFydCBvZiB2ZXJzaW9ucyB3YXMgZW50aXJlbHkKKyMgZHJvcHBlZCBhbmQgdGhlIHZlcnNpb24gc2NoZW1lIHdhcyBjaGFuZ2VkIHRvICJ2WC5ZIi4KKworZGVmIG1pY3JvYmxhemVfY3VycmVudF92ZXJzaW9uKGQsIGdjYyA9IEZhbHNlKToKKyAgICBpbXBvcnQgcmUKKyAgICAjIGZpbmQgdGhlIGN1cnJlbnQgdmVyc2lvbiwgYW5kIGNvbnZlcnQgaXQgdG8gbWFqb3IvbWlub3IgaW50ZWdlcnMKKyAgICB2ZXJzaW9uID0gTm9uZQorICAgIGZvciB0IGluIChkLmdldFZhcigiVFVORV9GRUFUVVJFUyIpIG9yICIiKS5zcGxpdCgpOgorICAgICAgICBtID0gcmUuc2VhcmNoKCJedihcZCspXC4oXGQrKSIsIHQpCisgICAgICAgIGlmIG06CisgICAgICAgICAgICB2ZXJzaW9uID0gaW50KG0uZ3JvdXAoMSkpLCBpbnQobS5ncm91cCgyKSkKKyAgICAgICAgICAgIGJyZWFrCisKKyAgICAjIGZvcm1hdCB0aGUgdmVyc2lvbiBzdHJpbmcgaW4gZ2VuZXJpYyBvciBHQ0Mgc3BlY2lmaWMgZm9ybWF0cworICAgIGlmIHZlcnNpb246CisgICAgICAgIGlmIHZlcnNpb25bMF0gPD0gODoKKyAgICAgICAgICAgIHJldHVybiAoInYlZC4lMDJkIiAlIHZlcnNpb25bMDoyXSkgKyAoIi5hIiBpZiBnY2MgZWxzZSAiIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAidiVkLiVkIiAlIHZlcnNpb25bMDoyXQorICAgIHJldHVybiAiIgorCisjIE1pY3JvQmxhemUgdmVyc2lvbnMKK1RVTkVWQUxJRFt2OC4wMF0gPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDguMDAiCitUVU5FVkFMSURbdjguMTBdID0gIk1pY3JvQmxhemUgdmVyc2lvbiA4LjEwIgorVFVORVZBTElEW3Y4LjIwXSA9ICJNaWNyb0JsYXplIHZlcnNpb24gOC4yMCIKK1RVTkVWQUxJRFt2OC4zMF0gPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDguMzAiCitUVU5FVkFMSURbdjguNDBdID0gIk1pY3JvQmxhemUgdmVyc2lvbiA4LjQwIgorVFVORVZBTElEW3Y4LjUwXSA9ICJNaWNyb0JsYXplIHZlcnNpb24gOC41MCIKK1RVTkVWQUxJRFt2OS4wXSAgPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDkuMCIKK1RVTkVWQUxJRFt2OS4xXSAgPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDkuMSIKK1RVTkVWQUxJRFt2OS4yXSAgPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDkuMiIKK1RVTkVWQUxJRFt2OS4zXSAgPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDkuMyIKK1RVTkVWQUxJRFt2OS40XSAgPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDkuNCIKK1RVTkVWQUxJRFt2OS41XSAgPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDkuNSIKK1RVTkVWQUxJRFt2OS42XSAgPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDkuNiIKK1RVTkVWQUxJRFt2MTAuMF0gPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDEwLjAiCisKKyMgVmVyc2lvbiBjb25mbGljdCBtYXRyaXgKK1RVTkVDT05GTElDVFNbdjguMDBdID0gIiIKK1RVTkVDT05GTElDVFNbdjguMTBdID0gInY4LjAwIgorVFVORUNPTkZMSUNUU1t2OC4yMF0gPSAidjguMDAgdjguMTAiCitUVU5FQ09ORkxJQ1RTW3Y4LjMwXSA9ICJ2OC4wMCB2OC4xMCB2OC4yMCIKK1RVTkVDT05GTElDVFNbdjguNDBdID0gInY4LjAwIHY4LjEwIHY4LjIwIHY4LjMwIgorVFVORUNPTkZMSUNUU1t2OC41MF0gPSAidjguMDAgdjguMTAgdjguMjAgdjguMzAgdjguNDAiCitUVU5FQ09ORkxJQ1RTW3Y5LjBdICA9ICJ2OC4wMCB2OC4xMCB2OC4yMCB2OC4zMCB2OC40MCB2OC41MCIKK1RVTkVDT05GTElDVFNbdjkuMV0gID0gInY4LjAwIHY4LjEwIHY4LjIwIHY4LjMwIHY4LjQwIHY4LjUwIHY5LjAiCitUVU5FQ09ORkxJQ1RTW3Y5LjJdICA9ICJ2OC4wMCB2OC4xMCB2OC4yMCB2OC4zMCB2OC40MCB2OC41MCB2OS4wIHY5LjEiCitUVU5FQ09ORkxJQ1RTW3Y5LjNdICA9ICJ2OC4wMCB2OC4xMCB2OC4yMCB2OC4zMCB2OC40MCB2OC41MCB2OS4wIHY5LjEgdjkuMiIKK1RVTkVDT05GTElDVFNbdjkuNF0gID0gInY4LjAwIHY4LjEwIHY4LjIwIHY4LjMwIHY4LjQwIHY4LjUwIHY5LjAgdjkuMSB2OS4yIHY5LjMiCitUVU5FQ09ORkxJQ1RTW3Y5LjVdICA9ICJ2OC4wMCB2OC4xMCB2OC4yMCB2OC4zMCB2OC40MCB2OC41MCB2OS4wIHY5LjEgdjkuMiB2OS4zIHY5LjQiCitUVU5FQ09ORkxJQ1RTW3Y5LjZdICA9ICJ2OC4wMCB2OC4xMCB2OC4yMCB2OC4zMCB2OC40MCB2OC41MCB2OS4wIHY5LjEgdjkuMiB2OS4zIHY5LjQgdjkuNSIKK1RVTkVDT05GTElDVFNbdjEwLjBdID0gInY4LjAwIHY4LjEwIHY4LjIwIHY4LjMwIHY4LjQwIHY4LjUwIHY5LjAgdjkuMSB2OS4yIHY5LjMgdjkuNCB2OS41IHY5LjYiCisKKyMgVmVyc2lvbiBmbGFncworVFVORV9DQ0FSR1MgKz0gIi1tY3B1PSR7QG1pY3JvYmxhemVfY3VycmVudF92ZXJzaW9uKGQsIFRydWUpfSIKK01CUEtHQVJDSF9WRVJTSU9OID0gIi0ke0BtaWNyb2JsYXplX2N1cnJlbnRfdmVyc2lvbihkKX0iCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMKaW5kZXggZTY0YjBjOC4uYWEzMzJmZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMKQEAgLTE2LDcgKzE2LDcgQEAKIElNQUdFX0ZTVFlQRVMgKz0gInRhci5iejIgZXh0NCIKIAogIyBEb24ndCBpbmNsdWRlIGtlcm5lbHMgaW4gc3RhbmRhcmQgaW1hZ2VzCi1SREVQRU5EU19rZXJuZWwtYmFzZSA9ICIiCitSREVQRU5EU18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWJhc2UgPSAiIgogCiAjIFVzZSBhIGNvbW1vbiBrZXJuZWwgcmVjaXBlIGZvciBhbGwgUUVNVSBtYWNoaW5lcwogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID89ICJsaW51eC15b2N0byIKQEAgLTI3LDYgKzI3LDQgQEAKIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcG4tbGludXgteW9jdG8gPSAiIGZlYXR1cmVzL25mc2QvbmZzZC1lbmFibGUuc2NjIgogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9wbi1saW51eC15b2N0by1ydCA9ICIgZmVhdHVyZXMvbmZzZC9uZnNkLWVuYWJsZS5zY2MiCiAKLU1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgKz0gInJuZy10b29scyIKLQogSU1BR0VfQ0xBU1NFUyArPSAicWVtdWJvb3QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcmUyLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29yZTIuaW5jCmluZGV4IGY0YmE0M2YuLmM2ODZiYjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29yZTIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29yZTIuaW5jCkBAIC04LDExICs4LDggQEAKICMKIERFRkFVTFRUVU5FID89ICJjb3JlMi0zMiIKIAotIyBTZXQgeDg2IHRhcmdldCBhcmNoIHRvIGk2ODYsIHNvIHRoYXQgZ2xpYmMgZW5hYmxlcyBTU0Ugb3B0aW1pc2VkIG1lbWNweSwgZXRjLgotWDg2QVJDSDMyID89ICJpNjg2IgotCiAjIEluY2x1ZGUgdGhlIHByZXZpb3VzIHR1bmUgdG8gcHVsbCBpbiBQQUNLQUdFX0VYVFJBX0FSQ0hTCi1yZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtaTU4Ni5pbmMKK3JlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1pNjg2LmluYwogCiAjIEV4dHJhIHR1bmUgZmVhdHVyZXMKIFRVTkVWQUxJRFtjb3JlMl0gPSAiRW5hYmxlIGNvcmUyIHNwZWNpZmljIHByb2Nlc3NvciBvcHRpbWl6YXRpb25zIgpAQCAtMjMsMTYgKzIwLDE5IEBACiBUVU5FX0ZFQVRVUkVTX3R1bmUtY29yZTItMzIgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUteDg2fSBjb3JlMiIKIEJBU0VfTElCX3R1bmUtY29yZTItMzIgPSAibGliIgogVFVORV9QS0dBUkNIX3R1bmUtY29yZTItMzIgPSAiY29yZTItMzIiCi1QQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtY29yZTItMzIgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtaTU4Nn0gY29yZTItMzIiCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtY29yZTItMzIgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtaTY4Nn0gY29yZTItMzIiCitRRU1VX0VYVFJBT1BUSU9OU19jb3JlMi0zMiA9ICIgLWNwdSBjb3JlMmR1byIKIAogQVZBSUxUVU5FUyArPSAiY29yZTItNjQiCiBUVU5FX0ZFQVRVUkVTX3R1bmUtY29yZTItNjQgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUteDg2LTY0fSBjb3JlMiIKIEJBU0VfTElCX3R1bmUtY29yZTItNjQgPSAibGliNjQiCiBUVU5FX1BLR0FSQ0hfdHVuZS1jb3JlMi02NCA9ICJjb3JlMi02NCIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1jb3JlMi02NCA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS14ODYtNjR9IGNvcmUyLTY0IgorUUVNVV9FWFRSQU9QVElPTlNfY29yZTItNjQgPSAiIC1jcHUgY29yZTJkdW8iCiAKIEFWQUlMVFVORVMgKz0gImNvcmUyLTY0LXgzMiIKIFRVTkVfRkVBVFVSRVNfdHVuZS1jb3JlMi02NC14MzIgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUteDg2LTY0LXgzMn0gY29yZTIiCiBCQVNFX0xJQl90dW5lLWNvcmUyLTY0LXgzMiA9ICJsaWJ4MzIiCiBUVU5FX1BLR0FSQ0hfdHVuZS1jb3JlMi02NC14MzIgPSAiY29yZTItNjQteDMyIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWNvcmUyLTY0LXgzMiA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS14ODYtNjQteDMyfSBjb3JlMi02NC14MzIiCitRRU1VX0VYVFJBT1BUSU9OU19jb3JlMi02NC14MzIgPSAiIC1jcHUgY29yZTJkdW8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWk2ODYuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1pNjg2LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGI0Nzk5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1pNjg2LmluYwpAQCAtMCwwICsxLDI3IEBACisjCisjIFRoZSBpNjg2IENQVSBmYW1pbHkgd2FzIGludHJvZHVjZWQgd2l0aCB0aGUgSW50ZWwgUGVudGl1bSBQcm8gaW4gMTk5NS4KKyMgSXQgaGFzIGFzIHJlcXVpcmVkIGZlYXR1cmUgZmxhZ3M6IGZwdSB0c2MgY3g4IGNtb3YuCisjCisjIEl0IGlzIHRoZSBtaW5pbXVtIENQVSByZXF1aXJlZCBieSB0aGUgRGViaWFuIGkzODYgcG9ydC4KKyMgaHR0cHM6Ly9saXN0cy5kZWJpYW4ub3JnL2RlYmlhbi1kZXZlbC1hbm5vdW5jZS8yMDE2LzA1L21zZzAwMDAxLmh0bWwKKyMKKyMKKworREVGQVVMVFRVTkUgPz0gImk2ODYiCisKKyMgU2V0IHg4NiB0YXJnZXQgYXJjaCB0byBpNjg2LCBzbyB0aGF0IGdsaWJjIGVuYWJsZXMgU1NFIG9wdGltaXNlZCBtZW1jcHksIGV0Yy4KK1g4NkFSQ0gzMiA/PSAiaTY4NiIKKworIyBJbmNsdWRlIHRoZSBwcmV2aW91cyB0dW5lIHRvIHB1bGwgaW4gUEFDS0FHRV9FWFRSQV9BUkNIUworcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWk1ODYuaW5jCisKKyMgRXh0cmEgdHVuZSBmZWF0dXJlcworVFVORVZBTElEW2k2ODZdID0gIkVuYWJsZSBpNjg2IHNwZWNpZmljIHByb2Nlc3NvciBvcHRpbWl6YXRpb25zIgorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2k2ODYnLCAnIC1tYXJjaD1pNjg2JywgJycsIGQpfSIKKworIyBFeHRyYSB0dW5lIHNlbGVjdGlvbnMKK0FWQUlMVFVORVMgKz0gImk2ODYiCitUVU5FX0ZFQVRVUkVTX3R1bmUtaTY4NiA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS14ODZ9IGk2ODYiCitCQVNFX0xJQl90dW5lLWk2ODYgPSAibGliIgorVFVORV9QS0dBUkNIX3R1bmUtaTY4NiA9ICJpNjg2IgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWk2ODYgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtaTU4Nn0gaTY4NiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWljcm9ibGF6ZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLW1pY3JvYmxhemUuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxZjBhZmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLW1pY3JvYmxhemUuaW5jCkBAIC0wLDAgKzEsOCBAQAorREVGQVVMVFRVTkUgPz0gIm1pY3JvYmxhemUiCisKK3JlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvbWljcm9ibGF6ZS9hcmNoLW1pY3JvYmxhemUuaW5jCisKK0FWQUlMVFVORVMgKz0gIm1pY3JvYmxhemUiCitUVU5FX0ZFQVRVUkVTX3R1bmUtbWljcm9ibGF6ZSA9ICJtaWNyb2JsYXplIgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pY3JvYmxhemUgPSAiJHtUVU5FX1BLR0FSQ0h9IgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS94ODYtYmFzZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS94ODYtYmFzZS5pbmMKaW5kZXggMDIzZWI1ZS4uZjhhYWNlYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2LWJhc2UuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni1iYXNlLmluYwpAQCAtMjEsNyArMjEsNyBAQAogIyBrZXJuZWwtcmVsYXRlZCB2YXJpYWJsZXMKICMKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/Pz0gImxpbnV4LXlvY3RvIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz89ICI0LjEyJSIKK1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID8/PSAiNC4xNSUiCiAKICMKICMgWFNFUlZFUiBzdWJjb21wb25lbnRzLCB1c2VkIHRvIGJ1aWxkIHRoZSBYU0VSVkVSIHZhcmlhYmxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybS5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm0uY29uZgppbmRleCBjODkzMmRkLi45NDAzYjFlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybS5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtLmNvbmYKQEAgLTE2LDUgKzE2LDUgQEAKIFFCX0tFUk5FTF9DTURMSU5FX0FQUEVORCA9ICJjb25zb2xlPXR0eUFNQTAsMTE1MjAwIGNvbnNvbGU9dHR5IgogIyBBZGQgdGhlICd2aXJ0aW8tcm5nLXBjaScgZGV2aWNlIG90aGVyd2lzZSB0aGUgZ3Vlc3QgbWF5IHJ1biBvdXQgb2YgZW50cm9weQogUUJfT1BUX0FQUEVORCA9ICItc2hvdy1jdXJzb3IgLXVzYiAtZGV2aWNlIHVzYi10YWJsZXQgLWRldmljZSB2aXJ0aW8tcm5nLXBjaSIKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID8/PSAiNC4xMiUiCi1RQl9EVEIgPSAiJHtAYmFzZV92ZXJzaW9uX2xlc3Nfb3JfZXF1YWwoJ1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvJywgJzQuNycsICcnLCAnekltYWdlLXZlcnNhdGlsZS1wYi5kdGInLCBkKX0iCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/Pz0gIjQuMTUlIgorUUJfRFRCID0gIiR7QG9lLnV0aWxzLnZlcnNpb25fbGVzc19vcl9lcXVhbCgnUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8nLCAnNC43JywgJycsICd6SW1hZ2UtdmVyc2F0aWxlLXBiLmR0YicsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9CU0QtMS1DbGF1c2UgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvQlNELTEtQ2xhdXNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlZDg4OTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvQlNELTEtQ2xhdXNlCkBAIC0wLDAgKzEsOSBAQAorCitDb3B5cmlnaHQgKGMpIDxZRUFSPiwgPE9XTkVSPgorQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorCitSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEJlcmtlbGV5IFNvZnR3YXJlIERlc2lnbiwgSW5jLiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEJlcmtlbGV5IFNvZnR3YXJlIERlc2lnbiwgSW5jLiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvZmlsZXMvcHRlc3QtcGVybC9ydW4tcHRlc3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9maWxlcy9wdGVzdC1wZXJsL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWY5Y2E5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvZmlsZXMvcHRlc3QtcGVybC9ydW4tcHRlc3QKQEAgLTAsMCArMSwxNiBAQAorIyEvYmluL3NoCisKK2ZvciBjYXNlIGluIGBmaW5kIHQgLXR5cGUgZiAtbmFtZSAnKi50J2A7IGRvCisgICAgcGVybCAkY2FzZSA+JGNhc2Uub3V0cHV0IDI+JjEKKyAgICByZXQ9JD8KKyAgICBjYXQgJGNhc2Uub3V0cHV0CisgICAgaWYgWyAkcmV0IC1uZSAwIF07IHRoZW4KKyAgICAgICAgZWNobyAiRkFJTDogJHtjYXNlJS50fSIKKyAgICBlbGlmIGdyZXAgLWkgJ1NLSVAnICRjYXNlLm91dHB1dDsgdGhlbgorICAgICAgICBlY2hvICJTS0lQOiAke2Nhc2UlLnR9IgorICAgIGVsc2UKKyAgICAgICAgZWNobyAiUEFTUzogJHtjYXNlJS50fSIKKyAgICBmaQorCisgICAgcm0gLWYgJGNhc2Uub3V0cHV0Citkb25lCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9maWxlcy90b29sY2hhaW4tc2hhci1leHRyYWN0LnNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvZmlsZXMvdG9vbGNoYWluLXNoYXItZXh0cmFjdC5zaAppbmRleCA5MTgwNGVjLi5mN2FiNDMwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9maWxlcy90b29sY2hhaW4tc2hhci1leHRyYWN0LnNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2ZpbGVzL3Rvb2xjaGFpbi1zaGFyLWV4dHJhY3Quc2gKQEAgLTI1OSw2ICsyNTksMTQgQEAKIAkkU1VET19FWEVDIHJtIC1mICR7ZW52X3NldHVwX3NjcmlwdCUvKn0vcmVsb2NhdGVfc2RrLnB5ICR7ZW52X3NldHVwX3NjcmlwdCUvKn0vcmVsb2NhdGVfc2RrLnNoCiBmaQogCisjIEV4ZWN1dGUgcG9zdC1yZWxvY2F0aW9uIHNjcmlwdAorcG9zdF9yZWxvY2F0ZT0iJHRhcmdldF9zZGtfZGlyL3Bvc3QtcmVsb2NhdGUtc2V0dXAuc2giCitpZiBbIC1lICIkcG9zdF9yZWxvY2F0ZSIgXTsgdGhlbgorCSRTVURPX0VYRUMgc2VkIC1lICJzOkBTREtQQVRIQDokdGFyZ2V0X3Nka19kaXI6ZyIgLWkgJHBvc3RfcmVsb2NhdGUKKwkkU1VET19FWEVDIC9iaW4vc2ggJHBvc3RfcmVsb2NhdGUgIiR0YXJnZXRfc2RrX2RpciIgIkBTREtQQVRIQCIKKwkkU1VET19FWEVDIHJtIC1mICRwb3N0X3JlbG9jYXRlCitmaQorCiBlY2hvICJTREsgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHNldCB1cCBhbmQgaXMgcmVhZHkgdG8gYmUgdXNlZC4iCiBlY2hvICJFYWNoIHRpbWUgeW91IHdpc2ggdG8gdXNlIHRoZSBTREsgaW4gYSBuZXcgc2hlbGwgc2Vzc2lvbiwgeW91IG5lZWQgdG8gc291cmNlIHRoZSBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgZS5nLiIKIGZvciBlbnZfc2V0dXBfc2NyaXB0IGluIGBscyAkdGFyZ2V0X3Nka19kaXIvZW52aXJvbm1lbnQtc2V0dXAtKmA7IGRvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvYnVpbGRoaXN0b3J5X2FuYWx5c2lzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2J1aWxkaGlzdG9yeV9hbmFseXNpcy5weQppbmRleCAzZTg2YTQ2Li5iMDM2NWFiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvYnVpbGRoaXN0b3J5X2FuYWx5c2lzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9idWlsZGhpc3RvcnlfYW5hbHlzaXMucHkKQEAgLTM2LDEwICszNiwyOSBAQAogcmVsYXRlZF9maWVsZHNbJ1JERVBFTkRTJ10gPSBbJ0RFUEVORFMnXQogcmVsYXRlZF9maWVsZHNbJ1JSRUNPTU1FTkRTJ10gPSBbJ0RFUEVORFMnXQogcmVsYXRlZF9maWVsZHNbJ0ZJTEVMSVNUJ10gPSBbJ0ZJTEVTJ10KLXJlbGF0ZWRfZmllbGRzWydQS0dTSVpFJ10gPSBbJ0ZJTEVMSVNUJ10KIHJlbGF0ZWRfZmllbGRzWydmaWxlcy1pbi1pbWFnZS50eHQnXSA9IFsnaW5zdGFsbGVkLXBhY2thZ2UtbmFtZXMudHh0JywgJ1VTRVJfQ0xBU1NFUycsICdJTUFHRV9DTEFTU0VTJywgJ1JPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EJywgJ0lNQUdFX1BPU1RQUk9DRVNTX0NPTU1BTkQnXQogcmVsYXRlZF9maWVsZHNbJ2luc3RhbGxlZC1wYWNrYWdlLW5hbWVzLnR4dCddID0gWydJTUFHRV9GRUFUVVJFUycsICdJTUFHRV9MSU5HVUFTJywgJ0lNQUdFX0lOU1RBTEwnLCAnQkFEX1JFQ09NTUVOREFUSU9OUycsICdOT19SRUNPTU1FTkRBVElPTlMnLCAnUEFDS0FHRV9FWENMVURFJ10KIAorY29sb3VycyA9IHsKKyAgICAnY29sb3VyX2RlZmF1bHQnOiAnJywKKyAgICAnY29sb3VyX2FkZCc6ICAgICAnJywKKyAgICAnY29sb3VyX3JlbW92ZSc6ICAnJywKK30KKworZGVmIGluaXRfY29sb3Vycyh1c2VfY29sb3Vycyk6CisgICAgZ2xvYmFsIGNvbG91cnMKKyAgICBpZiB1c2VfY29sb3VyczoKKyAgICAgICAgY29sb3VycyA9IHsKKyAgICAgICAgICAgICdjb2xvdXJfZGVmYXVsdCc6ICdcMDMzWzBtJywKKyAgICAgICAgICAgICdjb2xvdXJfYWRkJzogICAgICdcMDMzWzE7MzJtJywKKyAgICAgICAgICAgICdjb2xvdXJfcmVtb3ZlJzogICdcMDMzWzE7MzFtJywKKyAgICAgICAgfQorICAgIGVsc2U6CisgICAgICAgIGNvbG91cnMgPSB7CisgICAgICAgICAgICAnY29sb3VyX2RlZmF1bHQnOiAnJywKKyAgICAgICAgICAgICdjb2xvdXJfYWRkJzogICAgICcnLAorICAgICAgICAgICAgJ2NvbG91cl9yZW1vdmUnOiAgJycsCisgICAgICAgIH0KIAogY2xhc3MgQ2hhbmdlUmVjb3JkOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCBmaWVsZG5hbWUsIG9sZHZhbHVlLCBuZXd2YWx1ZSwgbW9uaXRvcmVkKToKQEAgLTc5LDcgKzk4LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIGFkaXJzIC0gYmRpcnNdCiAgICAgICAgICAgICBmaWxlc19iYSA9IFsobmFtZSwgc29ydGVkKG9zLnBhdGguYmFzZW5hbWUoaXRlbSkgZm9yIGl0ZW0gaW4gYml0ZW1zIGlmIG9zLnBhdGguZGlybmFtZShpdGVtKSA9PSBuYW1lKSkgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBiZGlycyAtIGFkaXJzXQotICAgICAgICAgICAgcmVuYW1lZF9kaXJzID0gWyhkaXIxLCBkaXIyKSBmb3IgZGlyMSwgZmlsZXMxIGluIGZpbGVzX2FiIGZvciBkaXIyLCBmaWxlczIgaW4gZmlsZXNfYmEgaWYgZmlsZXMxID09IGZpbGVzMl0KKyAgICAgICAgICAgIHJlbmFtZWRfZGlycyA9IFtdCisgICAgICAgICAgICBmb3IgZGlyMSwgZmlsZXMxIGluIGZpbGVzX2FiOgorICAgICAgICAgICAgICAgIHJlbmFtZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgZm9yIGRpcjIsIGZpbGVzMiBpbiBmaWxlc19iYToKKyAgICAgICAgICAgICAgICAgICAgaWYgZmlsZXMxID09IGZpbGVzMiBhbmQgbm90IHJlbmFtZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbmFtZWRfZGlycy5hcHBlbmQoKGRpcjEsZGlyMikpCisgICAgICAgICAgICAgICAgICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHdlIGRvbid0IHVzZSB0aGlzIChkaXIsIGZpbGVzKSBwYWlyIGFnYWluLgorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXNfYmEucmVtb3ZlKChkaXIyLGZpbGVzMikpCisgICAgICAgICAgICAgICAgICAgICAgICAjIElmIGEgZGlyIGhhcyBhbHJlYWR5IGJlZW4gZm91bmQgdG8gaGF2ZSBhIHJlbmFtZSwgc3RvcCBhbmQgZ28gbm8gZnVydGhlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbmFtZSA9IFRydWUKKwogICAgICAgICAgICAgIyByZW1vdmUgZmlsZXMgdGhhdCBiZWxvbmcgdG8gcmVuYW1lZCBkaXJzIGZyb20gYWl0ZW1zIGFuZCBiaXRlbXMKICAgICAgICAgICAgIGZvciBkaXIxLCBkaXIyIGluIHJlbmFtZWRfZGlyczoKICAgICAgICAgICAgICAgICBhaXRlbXMgPSBbaXRlbSBmb3IgaXRlbSBpbiBhaXRlbXMgaWYgb3MucGF0aC5kaXJuYW1lKGl0ZW0pIG5vdCBpbiAoZGlyMSwgZGlyMildCkBAIC04OCw2ICsxMTcsNyBAQAogCiAgICAgICAgIGlmIHNlbGYuZmllbGRuYW1lIGluIGxpc3RfZmllbGRzIG9yIHNlbGYuZmllbGRuYW1lIGluIGxpc3Rfb3JkZXJfZmllbGRzOgogICAgICAgICAgICAgcmVuYW1lZF9kaXJzID0gW10KKyAgICAgICAgICAgIGNoYW5nZWRfb3JkZXIgPSBGYWxzZQogICAgICAgICAgICAgaWYgc2VsZi5maWVsZG5hbWUgaW4gWydSUFJPVklERVMnLCAnUkRFUEVORFMnLCAnUlJFQ09NTUVORFMnLCAnUlNVR0dFU1RTJywgJ1JSRVBMQUNFUycsICdSQ09ORkxJQ1RTJ106CiAgICAgICAgICAgICAgICAgKGRlcHZlcmEsIGRlcHZlcmIpID0gY29tcGFyZV9wa2dfbGlzdHMoc2VsZi5vbGR2YWx1ZSwgc2VsZi5uZXd2YWx1ZSkKICAgICAgICAgICAgICAgICBhaXRlbXMgPSBwa2dsaXN0X2NvbWJpbmUoZGVwdmVyYSkKQEAgLTEwMSwyMiArMTMxLDMzIEBACiAgICAgICAgICAgICByZW1vdmVkID0gbGlzdChzZXQoYWl0ZW1zKSAtIHNldChiaXRlbXMpKQogICAgICAgICAgICAgYWRkZWQgPSBsaXN0KHNldChiaXRlbXMpIC0gc2V0KGFpdGVtcykpCiAKKyAgICAgICAgICAgIGlmIG5vdCByZW1vdmVkIGFuZCBub3QgYWRkZWQ6CisgICAgICAgICAgICAgICAgZGVwdmVyYSA9IGJiLnV0aWxzLmV4cGxvZGVfZGVwX3ZlcnNpb25zMihzZWxmLm9sZHZhbHVlLCBzb3J0PUZhbHNlKQorICAgICAgICAgICAgICAgIGRlcHZlcmIgPSBiYi51dGlscy5leHBsb2RlX2RlcF92ZXJzaW9uczIoc2VsZi5uZXd2YWx1ZSwgc29ydD1GYWxzZSkKKyAgICAgICAgICAgICAgICBmb3IgaSwgaiBpbiB6aXAoZGVwdmVyYS5pdGVtcygpLCBkZXB2ZXJiLml0ZW1zKCkpOgorICAgICAgICAgICAgICAgICAgICBpZiBpWzBdICE9IGpbMF06CisgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkX29yZGVyID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKwogICAgICAgICAgICAgbGluZXMgPSBbXQogICAgICAgICAgICAgaWYgcmVuYW1lZF9kaXJzOgogICAgICAgICAgICAgICAgIGZvciBkZnJvbSwgZHRvIGluIHJlbmFtZWRfZGlyczoKLSAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCdkaXJlY3RvcnkgcmVuYW1lZCAlcyAtPiAlcycgJSAoZGZyb20sIGR0bykpCisgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnZGlyZWN0b3J5IHJlbmFtZWQge2NvbG91cl9yZW1vdmV9e317Y29sb3VyX2RlZmF1bHR9IC0+IHtjb2xvdXJfYWRkfXt9e2NvbG91cl9kZWZhdWx0fScuZm9ybWF0KGRmcm9tLCBkdG8sICoqY29sb3VycykpCiAgICAgICAgICAgICBpZiByZW1vdmVkIG9yIGFkZGVkOgogICAgICAgICAgICAgICAgIGlmIHJlbW92ZWQgYW5kIG5vdCBiaXRlbXM6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgncmVtb3ZlZCBhbGwgaXRlbXMgIiVzIicgJSAnICcuam9pbihyZW1vdmVkKSkKKyAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCdyZW1vdmVkIGFsbCBpdGVtcyAie2NvbG91cl9yZW1vdmV9e317Y29sb3VyX2RlZmF1bHR9IicuZm9ybWF0KCcgJy5qb2luKHJlbW92ZWQpLCAqKmNvbG91cnMpKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGlmIHJlbW92ZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJ3JlbW92ZWQgIiVzIicgJSAnICcuam9pbihyZW1vdmVkKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgncmVtb3ZlZCAie2NvbG91cl9yZW1vdmV9e3ZhbHVlfXtjb2xvdXJfZGVmYXVsdH0iJy5mb3JtYXQodmFsdWU9JyAnLmpvaW4ocmVtb3ZlZCksICoqY29sb3VycykpCiAgICAgICAgICAgICAgICAgICAgIGlmIGFkZGVkOgotICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCdhZGRlZCAiJXMiJyAlICcgJy5qb2luKGFkZGVkKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnYWRkZWQgIntjb2xvdXJfYWRkfXt2YWx1ZX17Y29sb3VyX2RlZmF1bHR9IicuZm9ybWF0KHZhbHVlPScgJy5qb2luKGFkZGVkKSwgKipjb2xvdXJzKSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCdjaGFuZ2VkIG9yZGVyJykKIAotICAgICAgICAgICAgb3V0ID0gJyVzOiAlcycgJSAoc2VsZi5maWVsZG5hbWUsICcsICcuam9pbihsaW5lcykpCisgICAgICAgICAgICBpZiBub3QgKHJlbW92ZWQgb3IgYWRkZWQgb3IgY2hhbmdlZF9vcmRlcik6CisgICAgICAgICAgICAgICAgb3V0ID0gJycKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgb3V0ID0gJyVzOiAlcycgJSAoc2VsZi5maWVsZG5hbWUsICcsICcuam9pbihsaW5lcykpCiAKICAgICAgICAgZWxpZiBzZWxmLmZpZWxkbmFtZSBpbiBudW1lcmljX2ZpZWxkczoKICAgICAgICAgICAgIGF2YWwgPSBpbnQoc2VsZi5vbGR2YWx1ZSBvciAwKQpAQCAtMTI1LDkgKzE2Niw5IEBACiAgICAgICAgICAgICAgICAgcGVyY2VudGNoZyA9ICgoYnZhbCAtIGF2YWwpIC8gZmxvYXQoYXZhbCkpICogMTAwCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHBlcmNlbnRjaGcgPSAxMDAKLSAgICAgICAgICAgIG91dCA9ICclcyBjaGFuZ2VkIGZyb20gJXMgdG8gJXMgKCVzJWQlJSknICUgKHNlbGYuZmllbGRuYW1lLCBzZWxmLm9sZHZhbHVlIG9yICInJyIsIHNlbGYubmV3dmFsdWUgb3IgIicnIiwgJysnIGlmIHBlcmNlbnRjaGcgPiAwIGVsc2UgJycsIHBlcmNlbnRjaGcpCisgICAgICAgICAgICBvdXQgPSAne30gY2hhbmdlZCBmcm9tIHtjb2xvdXJfcmVtb3ZlfXt9e2NvbG91cl9kZWZhdWx0fSB0byB7Y29sb3VyX2FkZH17fXtjb2xvdXJfZGVmYXVsdH0gKHt9ezouMGZ9JSknLmZvcm1hdChzZWxmLmZpZWxkbmFtZSwgc2VsZi5vbGR2YWx1ZSBvciAiJyciLCBzZWxmLm5ld3ZhbHVlIG9yICInJyIsICcrJyBpZiBwZXJjZW50Y2hnID4gMCBlbHNlICcnLCBwZXJjZW50Y2hnLCAqKmNvbG91cnMpCiAgICAgICAgIGVsaWYgc2VsZi5maWVsZG5hbWUgaW4gZGVmYXVsdHZhbF9tYXA6Ci0gICAgICAgICAgICBvdXQgPSAnJXMgY2hhbmdlZCBmcm9tICVzIHRvICVzJyAlIChzZWxmLmZpZWxkbmFtZSwgc2VsZi5vbGR2YWx1ZSwgc2VsZi5uZXd2YWx1ZSkKKyAgICAgICAgICAgIG91dCA9ICd7fSBjaGFuZ2VkIGZyb20ge2NvbG91cl9yZW1vdmV9e317Y29sb3VyX2RlZmF1bHR9IHRvIHtjb2xvdXJfYWRkfXt9e2NvbG91cl9kZWZhdWx0fScuZm9ybWF0KHNlbGYuZmllbGRuYW1lLCBzZWxmLm9sZHZhbHVlLCBzZWxmLm5ld3ZhbHVlLCAqKmNvbG91cnMpCiAgICAgICAgICAgICBpZiBzZWxmLmZpZWxkbmFtZSA9PSAnUEtHJyBhbmQgJ1tkZWZhdWx0XScgaW4gc2VsZi5uZXd2YWx1ZToKICAgICAgICAgICAgICAgICBvdXQgKz0gJyAtIG1heSBpbmRpY2F0ZSBkZWJpYW4gcmVuYW1pbmcgZmFpbHVyZScKICAgICAgICAgZWxpZiBzZWxmLmZpZWxkbmFtZSBpbiBbJ3BrZ19wcmVpbnN0JywgJ3BrZ19wb3N0aW5zdCcsICdwa2dfcHJlcm0nLCAncGtnX3Bvc3RybSddOgpAQCAtMTYzLDcgKzIwNCw3IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG91dCA9ICcnCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvdXQgPSAnJXMgY2hhbmdlZCBmcm9tICIlcyIgdG8gIiVzIicgJSAoc2VsZi5maWVsZG5hbWUsIHNlbGYub2xkdmFsdWUsIHNlbGYubmV3dmFsdWUpCisgICAgICAgICAgICBvdXQgPSAne30gY2hhbmdlZCBmcm9tICJ7Y29sb3VyX3JlbW92ZX17fXtjb2xvdXJfZGVmYXVsdH0iIHRvICJ7Y29sb3VyX2FkZH17fXtjb2xvdXJfZGVmYXVsdH0iJy5mb3JtYXQoc2VsZi5maWVsZG5hbWUsIHNlbGYub2xkdmFsdWUsIHNlbGYubmV3dmFsdWUsICoqY29sb3VycykKIAogICAgICAgICBpZiBzZWxmLnJlbGF0ZWQ6CiAgICAgICAgICAgICBmb3IgY2hnIGluIHNlbGYucmVsYXRlZDoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9jb3B5X2J1aWxkc3lzdGVtLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2NvcHlfYnVpbGRzeXN0ZW0ucHkKaW5kZXggYWMyZmFlMS4uNGI5NDgwNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2NvcHlfYnVpbGRzeXN0ZW0ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2NvcHlfYnVpbGRzeXN0ZW0ucHkKQEAgLTk1LDcgKzk1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZGVzdG5hbWUgPSBvcy5wYXRoLmpvaW4obGF5ZXJkZXN0cGF0aCwgZl9iYXNlbmFtZSkKICAgICAgICAgICAgICAgICAgICAgX3NtYXJ0X2NvcHkoZiwgZGVzdG5hbWUpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGxheWVyZGVzdHBhdGgpOgorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihsYXllcmRlc3RwYXRoLCAnY29uZi9sYXllci5jb25mJykpOgogICAgICAgICAgICAgICAgICAgICBiYi5ub3RlKCJTa2lwcGluZyBsYXllciAlcywgYWxyZWFkeSBoYW5kbGVkIiAlIGxheWVyKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIF9zbWFydF9jb3B5KGxheWVyLCBsYXllcmRlc3RwYXRoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2dwZ19zaWduLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2dwZ19zaWduLnB5CmluZGV4IDljYzg4ZjAuLmIxNzI3MjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9ncGdfc2lnbi5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvZ3BnX3NpZ24ucHkKQEAgLTEyLDYgKzEyLDcgQEAKICAgICAgICAgc2VsZi5ncGdfcGF0aCA9IGQuZ2V0VmFyKCdHUEdfUEFUSCcpCiAgICAgICAgIHNlbGYuZ3BnX3ZlcnNpb24gPSBzZWxmLmdldF9ncGdfdmVyc2lvbigpCiAgICAgICAgIHNlbGYucnBtX2JpbiA9IGJiLnV0aWxzLndoaWNoKG9zLmdldGVudignUEFUSCcpLCAicnBtc2lnbiIpCisgICAgICAgIHNlbGYuZ3BnX2FnZW50X2JpbiA9IGJiLnV0aWxzLndoaWNoKG9zLmdldGVudignUEFUSCcpLCAiZ3BnLWFnZW50IikKIAogICAgIGRlZiBleHBvcnRfcHVia2V5KHNlbGYsIG91dHB1dF9maWxlLCBrZXlpZCwgYXJtb3I9VHJ1ZSk6CiAgICAgICAgICIiIkV4cG9ydCBHUEcgcHVibGljIGtleSB0byBhIGZpbGUiIiIKQEAgLTMxLDcgKzMyLDcgQEAKICAgICAgICAgIiIiU2lnbiBSUE0gZmlsZXMiIiIKIAogICAgICAgICBjbWQgPSBzZWxmLnJwbV9iaW4gKyAiIC0tYWRkc2lnbiAtLWRlZmluZSAnX2dwZ19uYW1lICVzJyAgIiAlIGtleWlkCi0gICAgICAgIGdwZ19hcmdzID0gJy0tbm8tcGVybWlzc2lvbi13YXJuaW5nIC0tYmF0Y2ggLS1wYXNzcGhyYXNlPSVzJyAlIHBhc3NwaHJhc2UKKyAgICAgICAgZ3BnX2FyZ3MgPSAnLS1uby1wZXJtaXNzaW9uLXdhcm5pbmcgLS1iYXRjaCAtLXBhc3NwaHJhc2U9JXMgLS1hZ2VudC1wcm9ncmFtPSVzfC0tYXV0by1leHBhbmQtc2VjbWVtJyAlIChwYXNzcGhyYXNlLCBzZWxmLmdwZ19hZ2VudF9iaW4pCiAgICAgICAgIGlmIHNlbGYuZ3BnX3ZlcnNpb24gPiAoMiwxLCk6CiAgICAgICAgICAgICBncGdfYXJncyArPSAnIC0tcGluZW50cnktbW9kZT1sb29wYmFjaycKICAgICAgICAgY21kICs9ICItLWRlZmluZSAnX2dwZ19zaWduX2NtZF9leHRyYV9hcmdzICVzJyAiICUgZ3BnX2FyZ3MKQEAgLTcxLDYgKzcyLDkgQEAKICAgICAgICAgaWYgc2VsZi5ncGdfdmVyc2lvbiA+ICgyLDEsKToKICAgICAgICAgICAgIGNtZCArPSBbJy0tcGluZW50cnktbW9kZScsICdsb29wYmFjayddCiAKKyAgICAgICAgaWYgc2VsZi5ncGdfYWdlbnRfYmluOgorICAgICAgICAgICAgY21kICs9IFsiLS1hZ2VudC1wcm9ncmFtPSVzfC0tYXV0by1leHBhbmQtc2VjbWVtIiAlIChzZWxmLmdwZ19hZ2VudF9iaW4pXQorCiAgICAgICAgIGNtZCArPSBbaW5wdXRfZmlsZV0KIAogICAgICAgICB0cnk6CkBAIC05OSw3ICsxMDMsNyBAQAogICAgICAgICBpbXBvcnQgc3VicHJvY2VzcwogICAgICAgICB0cnk6CiAgICAgICAgICAgICB2ZXJfc3RyID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoKHNlbGYuZ3BnX2JpbiwgIi0tdmVyc2lvbiIsICItLW5vLXBlcm1pc3Npb24td2FybmluZyIpKS5zcGxpdCgpWzJdLmRlY29kZSgidXRmLTgiKQotICAgICAgICAgICAgcmV0dXJuIHR1cGxlKFtpbnQoaSkgZm9yIGkgaW4gdmVyX3N0ci5zcGxpdCgnLicpXSkKKyAgICAgICAgICAgIHJldHVybiB0dXBsZShbaW50KGkpIGZvciBpIGluIHZlcl9zdHIuc3BsaXQoIi0iKVswXS5zcGxpdCgnLicpXSkKICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CiAgICAgICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCJDb3VsZCBub3QgZ2V0IGdwZyB2ZXJzaW9uOiAlcyIgJSBlKQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvbWFuaWZlc3QucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvbWFuaWZlc3QucHkKaW5kZXggNjBjNDliZS4uNjc0MzAzYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL21hbmlmZXN0LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9tYW5pZmVzdC5weQpAQCAtMjc0LDggKzI3NCw4IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIHBrZ19saXN0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgcGtnc1tzZWxmLnZhcl9tYXBzW3NlbGYubWFuaWZlc3RfdHlwZV1bdmFyXV0gPSBzZWxmLmQuZ2V0VmFyKHZhcikKIAotICAgICAgICAgICAgZm9yIHBrZ190eXBlIGluIHBrZ3M6Ci0gICAgICAgICAgICAgICAgZm9yIHBrZyBpbiBwa2dzW3BrZ190eXBlXS5zcGxpdCgpOgorICAgICAgICAgICAgZm9yIHBrZ190eXBlIGluIHNvcnRlZChwa2dzKToKKyAgICAgICAgICAgICAgICBmb3IgcGtnIGluIHNvcnRlZChwa2dzW3BrZ190eXBlXS5zcGxpdCgpKToKICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3Qud3JpdGUoIiVzLCVzXG4iICUgKHBrZ190eXBlLCBwa2cpKQogCiAgICAgZGVmIGNyZWF0ZV9maW5hbChzZWxmKToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhY2thZ2UucHkKaW5kZXggMWU1YzNhYS4uNGYzZTIxYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhY2thZ2UucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhY2thZ2UucHkKQEAgLTcyLDggKzcyLDcgQEAKICAgICAjIDE2IC0ga2VybmVsIG1vZHVsZQogICAgIGRlZiBpc19lbGYocGF0aCk6CiAgICAgICAgIGV4ZWNfdHlwZSA9IDAKLSAgICAgICAgcmV0LCByZXN1bHQgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoCi0gICAgICAgICAgICAiZmlsZSBcIiVzXCIiICUgcGF0aC5yZXBsYWNlKCJcIiIsICJcXFwiIikpCisgICAgICAgIHJldCwgcmVzdWx0ID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KCJmaWxlIC1iICclcyciICUgcGF0aCkKIAogICAgICAgICBpZiByZXQ6CiAgICAgICAgICAgICBiYi5lcnJvcigic3BsaXRfYW5kX3N0cmlwX2ZpbGVzOiAnZmlsZSAlcycgZmFpbGVkIiAlIHBhdGgpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGFja2FnZV9tYW5hZ2VyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhY2thZ2VfbWFuYWdlci5weQppbmRleCBlZDhmZWM4Li4yZDhhZWJhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGFja2FnZV9tYW5hZ2VyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlX21hbmFnZXIucHkKQEAgLTEyLDYgKzEyLDcgQEAKIGltcG9ydCBvZS5wYXRoCiBpbXBvcnQgc3RyaW5nCiBmcm9tIG9lLmdwZ19zaWduIGltcG9ydCBnZXRfc2lnbmVyCitpbXBvcnQgaGFzaGxpYgogCiAjIHRoaXMgY2FuIGJlIHVzZWQgYnkgYWxsIFBNIGJhY2tlbmRzIHRvIGNyZWF0ZSB0aGUgaW5kZXggZmlsZXMgaW4gcGFyYWxsZWwKIGRlZiBjcmVhdGVfaW5kZXgoYXJnKToKQEAgLTIyLDEyICsyMywxMiBAQAogICAgIGlmIHJlc3VsdDoKICAgICAgICAgYmIubm90ZShyZXN1bHQpCiAKLSIiIgotVGhpcyBtZXRob2QgcGFyc2UgdGhlIG91dHB1dCBmcm9tIHRoZSBwYWNrYWdlIG1hbmFnZXJhbmQgcmV0dXJuCi1hIGRpY3Rpb25hcnkgd2l0aCB0aGUgaW5mb3JtYXRpb24gb2YgdGhlIHBhY2thZ2VzLiBUaGlzIGlzIHVzZWQKLXdoZW4gdGhlIHBhY2thZ2VzIGFyZSBpbiBkZWIgb3IgaXBrIGZvcm1hdC4KLSIiIgogZGVmIG9wa2dfcXVlcnkoY21kX291dHB1dCk6CisgICAgIiIiCisgICAgVGhpcyBtZXRob2QgcGFyc2UgdGhlIG91dHB1dCBmcm9tIHRoZSBwYWNrYWdlIG1hbmFnZXJhbmQgcmV0dXJuCisgICAgYSBkaWN0aW9uYXJ5IHdpdGggdGhlIGluZm9ybWF0aW9uIG9mIHRoZSBwYWNrYWdlcy4gVGhpcyBpcyB1c2VkCisgICAgd2hlbiB0aGUgcGFja2FnZXMgYXJlIGluIGRlYiBvciBpcGsgZm9ybWF0LgorICAgICIiIgogICAgIHZlcnJlZ2V4ID0gcmUuY29tcGlsZSgnIFwoWz08Pl0qIFteICldKlwpJykKICAgICBvdXRwdXQgPSBkaWN0KCkKICAgICBwa2cgPSAiIgpAQCAtODMsNiArODQsMTEgQEAKIAogICAgIHJldHVybiBvdXRwdXQKIAorIyBOb3RlOiB0aGlzIHNob3VsZCBiZSBiYi5mYXRhbCBpbiB0aGUgZnV0dXJlLgorZGVmIGZhaWxlZF9wb3N0aW5zdHNfd2Fybihwa2dzLCBsb2dfcGF0aCk6CisgICAgYmIud2FybigiIiJJbnRlbnRpb25hbGx5IGZhaWxpbmcgcG9zdGluc3RhbGwgc2NyaXB0bGV0cyBvZiAlcyB0byBkZWZlciB0aGVtIHRvIGZpcnN0IGJvb3QgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHBsYWNlIHRoZW0gaW50byBwa2dfcG9zdGluc3Rfb250YXJnZXRfJHtQTn0gKCkuCitJZiBkZWZlcnJpbmcgdG8gZmlyc3QgYm9vdCB3YXNuJ3QgdGhlIGludGVudCwgdGhlbiBzY3JpcHRsZXQgZmFpbHVyZSBtYXkgbWVhbiBhbiBpc3N1ZSBpbiB0aGUgcmVjaXBlLCBvciBhIHJlZ3Jlc3Npb24gZWxzZXdoZXJlLgorRGV0YWlscyBvZiB0aGUgZmFpbHVyZSBhcmUgaW4gJXMuIiIiICUocGtncywgbG9nX3BhdGgpKQogCiBjbGFzcyBJbmRleGVyKG9iamVjdCwgbWV0YWNsYXNzPUFCQ01ldGEpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkLCBkZXBsb3lfZGlyKToKQEAgLTk2LDEzICsxMDIsMTYgQEAKIAogY2xhc3MgUnBtSW5kZXhlcihJbmRleGVyKToKICAgICBkZWYgd3JpdGVfaW5kZXgoc2VsZik6CisgICAgICAgIHNlbGYuZG9fd3JpdGVfaW5kZXgoc2VsZi5kZXBsb3lfZGlyKQorCisgICAgZGVmIGRvX3dyaXRlX2luZGV4KHNlbGYsIGRlcGxveV9kaXIpOgogICAgICAgICBpZiBzZWxmLmQuZ2V0VmFyKCdQQUNLQUdFX0ZFRURfU0lHTicpID09ICcxJzoKICAgICAgICAgICAgIHNpZ25lciA9IGdldF9zaWduZXIoc2VsZi5kLCBzZWxmLmQuZ2V0VmFyKCdQQUNLQUdFX0ZFRURfR1BHX0JBQ0tFTkQnKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNpZ25lciA9IE5vbmUKIAogICAgICAgICBjcmVhdGVyZXBvX2MgPSBiYi51dGlscy53aGljaChvcy5lbnZpcm9uWydQQVRIJ10sICJjcmVhdGVyZXBvX2MiKQotICAgICAgICByZXN1bHQgPSBjcmVhdGVfaW5kZXgoIiVzIC0tdXBkYXRlIC1xICVzIiAlIChjcmVhdGVyZXBvX2MsIHNlbGYuZGVwbG95X2RpcikpCisgICAgICAgIHJlc3VsdCA9IGNyZWF0ZV9pbmRleCgiJXMgLS11cGRhdGUgLXEgJXMiICUgKGNyZWF0ZXJlcG9fYywgZGVwbG95X2RpcikpCiAgICAgICAgIGlmIHJlc3VsdDoKICAgICAgICAgICAgIGJiLmZhdGFsKHJlc3VsdCkKIApAQCAtMTEwLDE3ICsxMTksMjggQEAKICAgICAgICAgaWYgc2lnbmVyOgogICAgICAgICAgICAgc2lnX3R5cGUgPSBzZWxmLmQuZ2V0VmFyKCdQQUNLQUdFX0ZFRURfR1BHX1NJR05BVFVSRV9UWVBFJykKICAgICAgICAgICAgIGlzX2FzY2lpX3NpZyA9IChzaWdfdHlwZS51cHBlcigpICE9ICJCSU4iKQotICAgICAgICAgICAgc2lnbmVyLmRldGFjaF9zaWduKG9zLnBhdGguam9pbihzZWxmLmRlcGxveV9kaXIsICdyZXBvZGF0YScsICdyZXBvbWQueG1sJyksCisgICAgICAgICAgICBzaWduZXIuZGV0YWNoX3NpZ24ob3MucGF0aC5qb2luKGRlcGxveV9kaXIsICdyZXBvZGF0YScsICdyZXBvbWQueG1sJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kLmdldFZhcignUEFDS0FHRV9GRUVEX0dQR19OQU1FJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kLmdldFZhcignUEFDS0FHRV9GRUVEX0dQR19QQVNTUEhSQVNFX0ZJTEUnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcm1vcj1pc19hc2NpaV9zaWcpCiAKK2NsYXNzIFJwbVN1YmRpckluZGV4ZXIoUnBtSW5kZXhlcik6CisgICAgZGVmIHdyaXRlX2luZGV4KHNlbGYpOgorICAgICAgICBiYi5ub3RlKCJHZW5lcmF0aW5nIHBhY2thZ2UgaW5kZXggZm9yICVzIiAlKHNlbGYuZGVwbG95X2RpcikpCisgICAgICAgIHNlbGYuZG9fd3JpdGVfaW5kZXgoc2VsZi5kZXBsb3lfZGlyKQorICAgICAgICBmb3IgZW50cnkgaW4gb3Mud2FsayhzZWxmLmRlcGxveV9kaXIpOgorICAgICAgICAgICAgaWYgb3MucGF0aC5zYW1lZmlsZShzZWxmLmRlcGxveV9kaXIsIGVudHJ5WzBdKToKKyAgICAgICAgICAgICAgICBmb3IgZGlyIGluIGVudHJ5WzFdOgorICAgICAgICAgICAgICAgICAgICBpZiBkaXIgIT0gJ3JlcG9kYXRhJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9wYXRoID0gb2UucGF0aC5qb2luKHNlbGYuZGVwbG95X2RpciwgZGlyKQorICAgICAgICAgICAgICAgICAgICAgICAgYmIubm90ZSgiR2VuZXJhdGluZyBwYWNrYWdlIGluZGV4IGZvciAlcyIgJShkaXJfcGF0aCkpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRvX3dyaXRlX2luZGV4KGRpcl9wYXRoKQogCiBjbGFzcyBPcGtnSW5kZXhlcihJbmRleGVyKToKICAgICBkZWYgd3JpdGVfaW5kZXgoc2VsZik6CiAgICAgICAgIGFyY2hfdmFycyA9IFsiQUxMX01VTFRJTElCX1BBQ0tBR0VfQVJDSFMiLAogICAgICAgICAgICAgICAgICAgICAgIlNES19QQUNLQUdFX0FSQ0hTIiwKLSAgICAgICAgICAgICAgICAgICAgICJNVUxUSUxJQl9BUkNIUyJdCisgICAgICAgICAgICAgICAgICAgICBdCiAKICAgICAgICAgb3BrZ19pbmRleF9jbWQgPSBiYi51dGlscy53aGljaChvcy5nZXRlbnYoJ1BBVEgnKSwgIm9wa2ctbWFrZS1pbmRleCIpCiAgICAgICAgIGlmIHNlbGYuZC5nZXRWYXIoJ1BBQ0tBR0VfRkVFRF9TSUdOJykgPT0gJzEnOgpAQCAtMzA3LDM5ICszMjcsMTAzIEBACiAgICAgVGhpcyBpcyBhbiBhYnN0cmFjdCBjbGFzcy4gRG8gbm90IGluc3RhbnRpYXRlIHRoaXMgZGlyZWN0bHkuCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGQsIHRhcmdldF9yb290ZnMpOgogICAgICAgICBzZWxmLmQgPSBkCisgICAgICAgIHNlbGYudGFyZ2V0X3Jvb3RmcyA9IHRhcmdldF9yb290ZnMKICAgICAgICAgc2VsZi5kZXBsb3lfZGlyID0gTm9uZQogICAgICAgICBzZWxmLmRlcGxveV9sb2NrID0gTm9uZQorICAgICAgICBzZWxmLl9pbml0aWFsaXplX2ludGVyY2VwdHMoKQogCi0gICAgIiIiCi0gICAgVXBkYXRlIHRoZSBwYWNrYWdlIG1hbmFnZXIgcGFja2FnZSBkYXRhYmFzZS4KLSAgICAiIiIKKyAgICBkZWYgX2luaXRpYWxpemVfaW50ZXJjZXB0cyhzZWxmKToKKyAgICAgICAgYmIubm90ZSgiSW5pdGlhbGl6aW5nIGludGVyY2VwdCBkaXIgZm9yICVzIiAlIHNlbGYudGFyZ2V0X3Jvb3RmcykKKyAgICAgICAgcG9zdGluc3RfaW50ZXJjZXB0c19kaXIgPSBzZWxmLmQuZ2V0VmFyKCJQT1NUSU5TVF9JTlRFUkNFUFRTX0RJUiIpCisgICAgICAgIGlmIG5vdCBwb3N0aW5zdF9pbnRlcmNlcHRzX2RpcjoKKyAgICAgICAgICAgIHBvc3RpbnN0X2ludGVyY2VwdHNfZGlyID0gc2VsZi5kLmV4cGFuZCgiJHtDT1JFQkFTRX0vc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzIikKKyAgICAgICAgIyBBcyB0aGVyZSBtaWdodCBiZSBtb3JlIHRoYW4gb25lIGluc3RhbmNlIG9mIFBhY2thZ2VNYW5hZ2VyIG9wZXJhdGluZyBhdCB0aGUgc2FtZSB0aW1lCisgICAgICAgICMgd2UgbmVlZCB0byBpc29sYXRlIHRoZSBpbnRlcmNlcHRfc2NyaXB0cyBkaXJlY3RvcmllcyBmcm9tIGVhY2ggb3RoZXIsCisgICAgICAgICMgaGVuY2UgdGhlIHVnbHkgaGFzaCBkaWdlc3QgaW4gZGlyIG5hbWUuCisgICAgICAgIHNlbGYuaW50ZXJjZXB0c19kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5kLmdldFZhcignV09SS0RJUicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJjZXB0X3NjcmlwdHMtJXMiICUoaGFzaGxpYi5zaGEyNTYoc2VsZi50YXJnZXRfcm9vdGZzLmVuY29kZSgpKS5oZXhkaWdlc3QoKSkgKQorCisgICAgICAgIGJiLnV0aWxzLnJlbW92ZShzZWxmLmludGVyY2VwdHNfZGlyLCBUcnVlKQorICAgICAgICBzaHV0aWwuY29weXRyZWUocG9zdGluc3RfaW50ZXJjZXB0c19kaXIsIHNlbGYuaW50ZXJjZXB0c19kaXIpCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX2hhbmRsZV9pbnRlcmNlcHRfZmFpbHVyZShzZWxmLCBmYWlsZWRfc2NyaXB0KToKKyAgICAgICAgcGFzcworCisgICAgZGVmIF9wb3N0cG9uZV90b19maXJzdF9ib290KHNlbGYsIHBvc3RpbnN0X2ludGVyY2VwdF9ob29rKToKKyAgICAgICAgd2l0aCBvcGVuKHBvc3RpbnN0X2ludGVyY2VwdF9ob29rKSBhcyBpbnRlcmNlcHQ6CisgICAgICAgICAgICByZWdpc3RlcmVkX3BrZ3MgPSBOb25lCisgICAgICAgICAgICBmb3IgbGluZSBpbiBpbnRlcmNlcHQucmVhZCgpLnNwbGl0KCJcbiIpOgorICAgICAgICAgICAgICAgIG0gPSByZS5tYXRjaCgiXiMjUEtHUzooLiopIiwgbGluZSkKKyAgICAgICAgICAgICAgICBpZiBtIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICByZWdpc3RlcmVkX3BrZ3MgPSBtLmdyb3VwKDEpLnN0cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgaWYgcmVnaXN0ZXJlZF9wa2dzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGJiLm5vdGUoIklmIGFuIGltYWdlIGlzIGJlaW5nIGJ1aWx0LCB0aGUgcG9zdGluc3RhbGxzIGZvciB0aGUgZm9sbG93aW5nIHBhY2thZ2VzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWxsIGJlIHBvc3Rwb25lZCBmb3IgZmlyc3QgYm9vdDogJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfcGtncykKKworICAgICAgICAgICAgICAgICMgY2FsbCB0aGUgYmFja2VuZCBkZXBlbmRlbnQgaGFuZGxlcgorICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9pbnRlcmNlcHRfZmFpbHVyZShyZWdpc3RlcmVkX3BrZ3MpCisKKworICAgIGRlZiBydW5faW50ZXJjZXB0cyhzZWxmKToKKyAgICAgICAgaW50ZXJjZXB0c19kaXIgPSBzZWxmLmludGVyY2VwdHNfZGlyCisKKyAgICAgICAgYmIubm90ZSgiUnVubmluZyBpbnRlcmNlcHQgc2NyaXB0czoiKQorICAgICAgICBvcy5lbnZpcm9uWydEJ10gPSBzZWxmLnRhcmdldF9yb290ZnMKKyAgICAgICAgb3MuZW52aXJvblsnU1RBR0lOR19ESVJfTkFUSVZFJ10gPSBzZWxmLmQuZ2V0VmFyKCdTVEFHSU5HX0RJUl9OQVRJVkUnKQorICAgICAgICBmb3Igc2NyaXB0IGluIG9zLmxpc3RkaXIoaW50ZXJjZXB0c19kaXIpOgorICAgICAgICAgICAgc2NyaXB0X2Z1bGwgPSBvcy5wYXRoLmpvaW4oaW50ZXJjZXB0c19kaXIsIHNjcmlwdCkKKworICAgICAgICAgICAgaWYgc2NyaXB0ID09ICJwb3N0aW5zdF9pbnRlcmNlcHQiIG9yIG5vdCBvcy5hY2Nlc3Moc2NyaXB0X2Z1bGwsIG9zLlhfT0spOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGlmIHNjcmlwdCA9PSAiZGVsYXlfdG9fZmlyc3RfYm9vdCI6CisgICAgICAgICAgICAgICAgc2VsZi5fcG9zdHBvbmVfdG9fZmlyc3RfYm9vdChzY3JpcHRfZnVsbCkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBiYi5ub3RlKCI+IEV4ZWN1dGluZyAlcyBpbnRlcmNlcHQgLi4uIiAlIHNjcmlwdCkKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KHNjcmlwdF9mdWxsLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisgICAgICAgICAgICAgICAgaWYgb3V0cHV0OiBiYi5ub3RlKG91dHB1dC5kZWNvZGUoInV0Zi04IikpCisgICAgICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBiYi53YXJuKCJUaGUgcG9zdGluc3RhbGwgaW50ZXJjZXB0IGhvb2sgJyVzJyBmYWlsZWQsIGRldGFpbHMgaW4gJXMvbG9nLmRvXyVzIiAlIChzY3JpcHQsIHNlbGYuZC5nZXRWYXIoJ1QnKSwgc2VsZi5kLmdldFZhcignQkJfQ1VSUkVOVFRBU0snKSkpCisgICAgICAgICAgICAgICAgYmIubm90ZSgiRXhpdCBjb2RlICVkLiBPdXRwdXQ6XG4lcyIgJSAoZS5yZXR1cm5jb2RlLCBlLm91dHB1dC5kZWNvZGUoInV0Zi04IikpKQorICAgICAgICAgICAgICAgIHNlbGYuX3Bvc3Rwb25lX3RvX2ZpcnN0X2Jvb3Qoc2NyaXB0X2Z1bGwpCisKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgdXBkYXRlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVXBkYXRlIHRoZSBwYWNrYWdlIG1hbmFnZXIgcGFja2FnZSBkYXRhYmFzZS4KKyAgICAgICAgIiIiCiAgICAgICAgIHBhc3MKIAotICAgICIiIgotICAgIEluc3RhbGwgYSBsaXN0IG9mIHBhY2thZ2VzLiAncGtncycgaXMgYSBsaXN0IG9iamVjdC4gSWYgJ2F0dGVtcHRfb25seScgaXMKLSAgICBUcnVlLCBpbnN0YWxsYXRpb24gZmFpbHVyZXMgYXJlIGlnbm9yZWQuCi0gICAgIiIiCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIGluc3RhbGwoc2VsZiwgcGtncywgYXR0ZW1wdF9vbmx5PUZhbHNlKToKKyAgICAgICAgIiIiCisgICAgICAgIEluc3RhbGwgYSBsaXN0IG9mIHBhY2thZ2VzLiAncGtncycgaXMgYSBsaXN0IG9iamVjdC4gSWYgJ2F0dGVtcHRfb25seScgaXMKKyAgICAgICAgVHJ1ZSwgaW5zdGFsbGF0aW9uIGZhaWx1cmVzIGFyZSBpZ25vcmVkLgorICAgICAgICAiIiIKICAgICAgICAgcGFzcwogCi0gICAgIiIiCi0gICAgUmVtb3ZlIGEgbGlzdCBvZiBwYWNrYWdlcy4gJ3BrZ3MnIGlzIGEgbGlzdCBvYmplY3QuIElmICd3aXRoX2RlcGVuZGVuY2llcycKLSAgICBpcyBGYWxzZSwgdGhlIGFueSBkZXBlbmRlbmNpZXMgYXJlIGxlZnQgaW4gcGxhY2UuCi0gICAgIiIiCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIHJlbW92ZShzZWxmLCBwa2dzLCB3aXRoX2RlcGVuZGVuY2llcz1UcnVlKToKKyAgICAgICAgIiIiCisgICAgICAgIFJlbW92ZSBhIGxpc3Qgb2YgcGFja2FnZXMuICdwa2dzJyBpcyBhIGxpc3Qgb2JqZWN0LiBJZiAnd2l0aF9kZXBlbmRlbmNpZXMnCisgICAgICAgIGlzIEZhbHNlLCB0aGVuIGFueSBkZXBlbmRlbmNpZXMgYXJlIGxlZnQgaW4gcGxhY2UuCisgICAgICAgICIiIgogICAgICAgICBwYXNzCiAKLSAgICAiIiIKLSAgICBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgdGhlIGluZGV4IGZpbGVzCi0gICAgIiIiCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIHdyaXRlX2luZGV4KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBjcmVhdGVzIHRoZSBpbmRleCBmaWxlcworICAgICAgICAiIiIKICAgICAgICAgcGFzcwogCiAgICAgQGFic3RyYWN0bWV0aG9kCkBAIC0zNTAsMzAgKzQzNCwyOCBAQAogICAgIGRlZiBsaXN0X2luc3RhbGxlZChzZWxmKToKICAgICAgICAgcGFzcwogCi0gICAgIiIiCi0gICAgUmV0dXJucyB0aGUgcGF0aCB0byBhIHRtcGRpciB3aGVyZSByZXNpZGVzIHRoZSBjb250ZW50cyBvZiBhIHBhY2thZ2UuCi0KLSAgICBEZWxldGluZyB0aGUgdG1wZGlyIGlzIHJlc3BvbnNhYmlsaXR5IG9mIHRoZSBjYWxsZXIuCi0KLSAgICAiIiIKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgZXh0cmFjdChzZWxmLCBwa2cpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgcGF0aCB0byBhIHRtcGRpciB3aGVyZSByZXNpZGVzIHRoZSBjb250ZW50cyBvZiBhIHBhY2thZ2UuCisgICAgICAgIERlbGV0aW5nIHRoZSB0bXBkaXIgaXMgcmVzcG9uc2FiaWxpdHkgb2YgdGhlIGNhbGxlci4KKyAgICAgICAgIiIiCiAgICAgICAgIHBhc3MKIAotICAgICIiIgotICAgIEFkZCByZW1vdGUgcGFja2FnZSBmZWVkcyBpbnRvIHJlcG9zaXRvcnkgbWFuYWdlciBjb25maWd1cmF0aW9uLiBUaGUgcGFyYW1ldGVycwotICAgIGZvciB0aGUgZmVlZHMgYXJlIHNldCBieSBmZWVkX3VyaXMsIGZlZWRfYmFzZV9wYXRocyBhbmQgZmVlZF9hcmNocy4KLSAgICBTZWUgaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvY3VycmVudC9yZWYtbWFudWFsL3JlZi1tYW51YWwuaHRtbCN2YXItUEFDS0FHRV9GRUVEX1VSSVMKLSAgICBmb3IgdGhlaXIgZGVzY3JpcHRpb24uCi0gICAgIiIiCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIGluc2VydF9mZWVkc191cmlzKHNlbGYsIGZlZWRfdXJpcywgZmVlZF9iYXNlX3BhdGhzLCBmZWVkX2FyY2hzKToKKyAgICAgICAgIiIiCisgICAgICAgIEFkZCByZW1vdGUgcGFja2FnZSBmZWVkcyBpbnRvIHJlcG9zaXRvcnkgbWFuYWdlciBjb25maWd1cmF0aW9uLiBUaGUgcGFyYW1ldGVycworICAgICAgICBmb3IgdGhlIGZlZWRzIGFyZSBzZXQgYnkgZmVlZF91cmlzLCBmZWVkX2Jhc2VfcGF0aHMgYW5kIGZlZWRfYXJjaHMuCisgICAgICAgIFNlZSBodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy9jdXJyZW50L3JlZi1tYW51YWwvcmVmLW1hbnVhbC5odG1sI3Zhci1QQUNLQUdFX0ZFRURfVVJJUworICAgICAgICBmb3IgdGhlaXIgZGVzY3JpcHRpb24uCisgICAgICAgICIiIgogICAgICAgICBwYXNzCiAKLSAgICAiIiIKLSAgICBJbnN0YWxsIGFsbCBwYWNrYWdlcyB0aGF0IG1hdGNoIGEgZ2xvYi4KLSAgICAiIiIKICAgICBkZWYgaW5zdGFsbF9nbG9iKHNlbGYsIGdsb2JzLCBzZGs9RmFsc2UpOgorICAgICAgICAiIiIKKyAgICAgICAgSW5zdGFsbCBhbGwgcGFja2FnZXMgdGhhdCBtYXRjaCBhIGdsb2IuCisgICAgICAgICIiIgogICAgICAgICAjIFRPRE8gZG9uJ3QgaGF2ZSBzZGsgaGVyZSBidXQgaGF2ZSBhIHByb3BlcnR5IG9uIHRoZSBzdXBlcmNsYXNzCiAgICAgICAgICMgKGFuZCByZXNwZWN0IGluIGluc3RhbGxfY29tcGxlbWVudGFyeSkKICAgICAgICAgaWYgc2RrOgpAQCAtMzkzLDE0ICs0NzUsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAiJyVzJyByZXR1cm5lZCAlZDpcbiVzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgKCcgJy5qb2luKGNtZCksIGUucmV0dXJuY29kZSwgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKIAotICAgICIiIgotICAgIEluc3RhbGwgY29tcGxlbWVudGFyeSBwYWNrYWdlcyBiYXNlZCB1cG9uIHRoZSBsaXN0IG9mIGN1cnJlbnRseSBpbnN0YWxsZWQKLSAgICBwYWNrYWdlcyBlLmcuIGxvY2FsZXMsICotZGV2LCAqLWRiZywgZXRjLiBUaGlzIHdpbGwgb25seSBhdHRlbXB0IHRvIGluc3RhbGwKLSAgICB0aGVzZSBwYWNrYWdlcywgaWYgdGhleSBkb24ndCBleGlzdCB0aGVuIG5vIGVycm9yIHdpbGwgb2NjdXIuICBOb3RlOiBldmVyeQotICAgIGJhY2tlbmQgbmVlZHMgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGV4cGxpY2l0bHkgYWZ0ZXIgdGhlIG5vcm1hbCBwYWNrYWdlCi0gICAgaW5zdGFsbGF0aW9uCi0gICAgIiIiCiAgICAgZGVmIGluc3RhbGxfY29tcGxlbWVudGFyeShzZWxmLCBnbG9icz1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIEluc3RhbGwgY29tcGxlbWVudGFyeSBwYWNrYWdlcyBiYXNlZCB1cG9uIHRoZSBsaXN0IG9mIGN1cnJlbnRseSBpbnN0YWxsZWQKKyAgICAgICAgcGFja2FnZXMgZS5nLiBsb2NhbGVzLCAqLWRldiwgKi1kYmcsIGV0Yy4gVGhpcyB3aWxsIG9ubHkgYXR0ZW1wdCB0byBpbnN0YWxsCisgICAgICAgIHRoZXNlIHBhY2thZ2VzLCBpZiB0aGV5IGRvbid0IGV4aXN0IHRoZW4gbm8gZXJyb3Igd2lsbCBvY2N1ci4gIE5vdGU6IGV2ZXJ5CisgICAgICAgIGJhY2tlbmQgbmVlZHMgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGV4cGxpY2l0bHkgYWZ0ZXIgdGhlIG5vcm1hbCBwYWNrYWdlCisgICAgICAgIGluc3RhbGxhdGlvbgorICAgICAgICAiIiIKICAgICAgICAgaWYgZ2xvYnMgaXMgTm9uZToKICAgICAgICAgICAgIGdsb2JzID0gc2VsZi5kLmdldFZhcignSU1BR0VfSU5TVEFMTF9DT01QTEVNRU5UQVJZJykKICAgICAgICAgICAgIHNwbGl0X2xpbmd1YXMgPSBzZXQoKQpAQCAtNDU3LDEzICs1MzksMTMgQEAKIAogICAgICAgICBzZWxmLmRlcGxveV9sb2NrID0gTm9uZQogCi0gICAgIiIiCi0gICAgQ29uc3RydWN0IFVSSXMgYmFzZWQgb24gdGhlIGZvbGxvd2luZyBwYXR0ZXJuOiB1cmkvYmFzZV9wYXRoIHdoZXJlICd1cmknCi0gICAgYW5kICdiYXNlX3BhdGgnIGNvcnJlc3BvbmQgdG8gZWFjaCBlbGVtZW50IG9mIHRoZSBjb3JyZXNwb25kaW5nIGFycmF5Ci0gICAgYXJndW1lbnQgbGVhZGluZyB0byBsZW4odXJpcykgeCBsZW4oYmFzZV9wYXRocykgZWxlbWVudHMgb24gdGhlIHJldHVybmVkCi0gICAgYXJyYXkKLSAgICAiIiIKICAgICBkZWYgY29uc3RydWN0X3VyaXMoc2VsZiwgdXJpcywgYmFzZV9wYXRocyk6CisgICAgICAgICIiIgorICAgICAgICBDb25zdHJ1Y3QgVVJJcyBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIHBhdHRlcm46IHVyaS9iYXNlX3BhdGggd2hlcmUgJ3VyaScKKyAgICAgICAgYW5kICdiYXNlX3BhdGgnIGNvcnJlc3BvbmQgdG8gZWFjaCBlbGVtZW50IG9mIHRoZSBjb3JyZXNwb25kaW5nIGFycmF5CisgICAgICAgIGFyZ3VtZW50IGxlYWRpbmcgdG8gbGVuKHVyaXMpIHggbGVuKGJhc2VfcGF0aHMpIGVsZW1lbnRzIG9uIHRoZSByZXR1cm5lZAorICAgICAgICBhcnJheQorICAgICAgICAiIiIKICAgICAgICAgZGVmIF9hcHBlbmQoYXJyMSwgYXJyMiwgc2VwPScvJyk6CiAgICAgICAgICAgICByZXMgPSBbXQogICAgICAgICAgICAgbmFycjEgPSBbYS5yc3RyaXAoc2VwKSBmb3IgYSBpbiBhcnIxXQpAQCAtNDc3LDE4ICs1NTksOTggQEAKICAgICAgICAgICAgIHJldHVybiByZXMKICAgICAgICAgcmV0dXJuIF9hcHBlbmQodXJpcywgYmFzZV9wYXRocykKIAorZGVmIGNyZWF0ZV9wYWNrYWdlc19kaXIoZCwgcnBtX3JlcG9fZGlyLCBkZXBsb3lkaXIsIHRhc2tuYW1lLCBmaWx0ZXJieWRlcGVuZGVuY2llcyk6CisgICAgIiIiCisgICAgR28gdGhyb3VnaCBvdXIgZG9fcGFja2FnZV93cml0ZV9YIGRlcGVuZGVuY2llcyBhbmQgaGFyZGxpbmsgdGhlIHBhY2thZ2VzIHdlIGRlcGVuZAorICAgIHVwb24gaW50byB0aGUgcmVwbyBkaXJlY3RvcnkuIFRoaXMgcHJldmVudHMgdXMgc2VlaW5nIG90aGVyIHBhY2thZ2VzIHRoYXQgbWF5CisgICAgaGF2ZSBiZWVuIGJ1aWx0IHRoYXQgd2UgZG9uJ3QgZGVwZW5kIHVwb24gYW5kIGFsc28gcGFja2FnZXMgZm9yIGFyY2hpdGVjdHVyZXMgd2UgZG9uJ3QKKyAgICBzdXBwb3J0LgorICAgICIiIgorICAgIGltcG9ydCBlcnJubworCisgICAgdGFza2RlcGRhdGEgPSBkLmdldFZhcigiQkJfVEFTS0RFUERBVEEiLCBGYWxzZSkKKyAgICBteXRhc2tuYW1lID0gZC5nZXRWYXIoIkJCX1JVTlRBU0siKQorICAgIHBuID0gZC5nZXRWYXIoIlBOIikKKyAgICBzZWVuZGlycyA9IHNldCgpCisgICAgbXVsdGlsaWJzID0ge30KKyAgIAorICAgIHJwbV9zdWJyZXBvX2RpciA9IG9lLnBhdGguam9pbihycG1fcmVwb19kaXIsICJycG0iKQorCisgICAgYmIudXRpbHMucmVtb3ZlKHJwbV9zdWJyZXBvX2RpciwgcmVjdXJzZT1UcnVlKQorICAgIGJiLnV0aWxzLm1rZGlyaGllcihycG1fc3VicmVwb19kaXIpCisKKyAgICAjIERldGVjdCBiaXRiYWtlIC1iIHVzYWdlCisgICAgbm9kZXBzID0gZC5nZXRWYXIoIkJCX0xJTUlURURERVBTIikgb3IgRmFsc2UKKyAgICBpZiBub2RlcHMgb3Igbm90IGZpbHRlcmJ5ZGVwZW5kZW5jaWVzOgorICAgICAgICBvZS5wYXRoLnN5bWxpbmsoZGVwbG95ZGlyLCBycG1fc3VicmVwb19kaXIsIFRydWUpCisgICAgICAgIHJldHVybgorCisgICAgc3RhcnQgPSBOb25lCisgICAgZm9yIGRlcCBpbiB0YXNrZGVwZGF0YToKKyAgICAgICAgZGF0YSA9IHRhc2tkZXBkYXRhW2RlcF0KKyAgICAgICAgaWYgZGF0YVsxXSA9PSBteXRhc2tuYW1lIGFuZCBkYXRhWzBdID09IHBuOgorICAgICAgICAgICAgc3RhcnQgPSBkZXAKKyAgICAgICAgICAgIGJyZWFrCisgICAgaWYgc3RhcnQgaXMgTm9uZToKKyAgICAgICAgYmIuZmF0YWwoIkNvdWxkbid0IGZpbmQgb3Vyc2VsZiBpbiBCQl9UQVNLREVQREFUQT8iKQorICAgIHJwbWRlcHMgPSBzZXQoKQorICAgIHN0YXJ0ID0gW3N0YXJ0XQorICAgIHNlZW4gPSBzZXQoc3RhcnQpCisgICAgIyBTdXBwb3J0IGRpcmVjdCBkZXBlbmRlbmNpZXMgKGRvX3Jvb3RmcyAtPiBycG1zKQorICAgICMgb3IgaW5kaXJlY3QgZGVwZW5kZW5jaWVzIHdpdGhpbiBQTiAoZG9fcG9wdWxhdGVfc2RrX2V4dCAtPiBkb19yb290ZnMgLT4gcnBtcykKKyAgICB3aGlsZSBzdGFydDoKKyAgICAgICAgbmV4dCA9IFtdCisgICAgICAgIGZvciBkZXAyIGluIHN0YXJ0OgorICAgICAgICAgICAgZm9yIGRlcCBpbiB0YXNrZGVwZGF0YVtkZXAyXVszXToKKyAgICAgICAgICAgICAgICBpZiB0YXNrZGVwZGF0YVtkZXBdWzBdICE9IHBuOgorICAgICAgICAgICAgICAgICAgICBpZiAiZG9fIiArIHRhc2tuYW1lIGluIGRlcDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJwbWRlcHMuYWRkKGRlcCkKKyAgICAgICAgICAgICAgICBlbGlmIGRlcCBub3QgaW4gc2VlbjoKKyAgICAgICAgICAgICAgICAgICAgbmV4dC5hcHBlbmQoZGVwKQorICAgICAgICAgICAgICAgICAgICBzZWVuLmFkZChkZXApCisgICAgICAgIHN0YXJ0ID0gbmV4dAorCisgICAgZm9yIGRlcCBpbiBycG1kZXBzOgorICAgICAgICBjID0gdGFza2RlcGRhdGFbZGVwXVswXQorICAgICAgICBtYW5pZmVzdCwgZDIgPSBvZS5zc3RhdGVzaWcuZmluZF9zc3RhdGVfbWFuaWZlc3QoYywgdGFza2RlcGRhdGFbZGVwXVsyXSwgdGFza25hbWUsIGQsIG11bHRpbGlicykKKyAgICAgICAgaWYgbm90IG1hbmlmZXN0OgorICAgICAgICAgICAgYmIuZmF0YWwoIk5vIG1hbmlmZXN0IGdlbmVyYXRlZCBmcm9tOiAlcyBpbiAlcyIgJSAoYywgdGFza2RlcGRhdGFbZGVwXVsyXSkpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhtYW5pZmVzdCk6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICB3aXRoIG9wZW4obWFuaWZlc3QsICJyIikgYXMgZjoKKyAgICAgICAgICAgIGZvciBsIGluIGY6CisgICAgICAgICAgICAgICAgbCA9IGwuc3RyaXAoKQorICAgICAgICAgICAgICAgIGRlc3QgPSBsLnJlcGxhY2UoZGVwbG95ZGlyLCAiIikKKyAgICAgICAgICAgICAgICBkZXN0ID0gcnBtX3N1YnJlcG9fZGlyICsgZGVzdAorICAgICAgICAgICAgICAgIGlmIGwuZW5kc3dpdGgoIi8iKToKKyAgICAgICAgICAgICAgICAgICAgaWYgZGVzdCBub3QgaW4gc2VlbmRpcnM6CisgICAgICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoZGVzdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlZW5kaXJzLmFkZChkZXN0KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICMgVHJ5IHRvIGhhcmRsaW5rIHRoZSBmaWxlLCBjb3B5IGlmIHRoYXQgZmFpbHMKKyAgICAgICAgICAgICAgICBkZXN0ZGlyID0gb3MucGF0aC5kaXJuYW1lKGRlc3QpCisgICAgICAgICAgICAgICAgaWYgZGVzdGRpciBub3QgaW4gc2VlbmRpcnM6CisgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihkZXN0ZGlyKQorICAgICAgICAgICAgICAgICAgICBzZWVuZGlycy5hZGQoZGVzdGRpcikKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG9zLmxpbmsobCwgZGVzdCkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgICAgIGlmIGVyci5lcnJubyA9PSBlcnJuby5FWERFVjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvcHlmaWxlKGwsIGRlc3QpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorCiBjbGFzcyBScG1QTShQYWNrYWdlTWFuYWdlcik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsCiAgICAgICAgICAgICAgICAgIGQsCiAgICAgICAgICAgICAgICAgIHRhcmdldF9yb290ZnMsCiAgICAgICAgICAgICAgICAgIHRhcmdldF92ZW5kb3IsCiAgICAgICAgICAgICAgICAgIHRhc2tfbmFtZT0ndGFyZ2V0JywKLSAgICAgICAgICAgICAgICAgcHJvdmlkZW5hbWU9Tm9uZSwKICAgICAgICAgICAgICAgICAgYXJjaF92YXI9Tm9uZSwKICAgICAgICAgICAgICAgICAgb3NfdmFyPU5vbmUsCi0gICAgICAgICAgICAgICAgIHJwbV9yZXBvX3dvcmtkaXI9Im9lLXJvb3Rmcy1yZXBvIik6Ci0gICAgICAgIHN1cGVyKFJwbVBNLCBzZWxmKS5fX2luaXRfXyhkKQotICAgICAgICBzZWxmLnRhcmdldF9yb290ZnMgPSB0YXJnZXRfcm9vdGZzCisgICAgICAgICAgICAgICAgIHJwbV9yZXBvX3dvcmtkaXI9Im9lLXJvb3Rmcy1yZXBvIiwKKyAgICAgICAgICAgICAgICAgZmlsdGVyYnlkZXBlbmRlbmNpZXM9VHJ1ZSk6CisgICAgICAgIHN1cGVyKFJwbVBNLCBzZWxmKS5fX2luaXRfXyhkLCB0YXJnZXRfcm9vdGZzKQogICAgICAgICBzZWxmLnRhcmdldF92ZW5kb3IgPSB0YXJnZXRfdmVuZG9yCiAgICAgICAgIHNlbGYudGFza19uYW1lID0gdGFza19uYW1lCiAgICAgICAgIGlmIGFyY2hfdmFyID09IE5vbmU6CkBAIC01MDEsOCArNjYzLDcgQEAKICAgICAgICAgICAgIHNlbGYucHJpbWFyeV9hcmNoID0gc2VsZi5kLmdldFZhcignTUFDSElORV9BUkNIJykKIAogICAgICAgICBzZWxmLnJwbV9yZXBvX2RpciA9IG9lLnBhdGguam9pbihzZWxmLmQuZ2V0VmFyKCdXT1JLRElSJyksIHJwbV9yZXBvX3dvcmtkaXIpCi0gICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzZWxmLnJwbV9yZXBvX2RpcikKLSAgICAgICAgb2UucGF0aC5zeW1saW5rKHNlbGYuZC5nZXRWYXIoJ0RFUExPWV9ESVJfUlBNJyksIG9lLnBhdGguam9pbihzZWxmLnJwbV9yZXBvX2RpciwgInJwbSIpLCBUcnVlKQorICAgICAgICBjcmVhdGVfcGFja2FnZXNfZGlyKHNlbGYuZCwgc2VsZi5ycG1fcmVwb19kaXIsIGQuZ2V0VmFyKCJERVBMT1lfRElSX1JQTSIpLCAicGFja2FnZV93cml0ZV9ycG0iLCBmaWx0ZXJieWRlcGVuZGVuY2llcykKIAogICAgICAgICBzZWxmLnNhdmVkX3BhY2thZ2luZ19kYXRhID0gc2VsZi5kLmV4cGFuZCgnJHtUfS9zYXZlZF9wYWNrYWdpbmdfZGF0YS8lcycgJSBzZWxmLnRhc2tfbmFtZSkKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYuZC5leHBhbmQoJyR7VH0vc2F2ZWRfcGFja2FnaW5nX2RhdGEnKSk6CkBAIC01NzcsNyArNzM4LDcgQEAKICAgICAgICAgICAgIGdwZ19vcHRzICs9ICdyZXBvX2dwZ2NoZWNrPTFcbicKICAgICAgICAgICAgIGdwZ19vcHRzICs9ICdncGdrZXk9ZmlsZTovLyVzL3BraS9wYWNrYWdlZmVlZC1ncGcvUEFDS0FHRUZFRUQtR1BHLUtFWS0lcy0lc1xuJyAlIChzZWxmLmQuZ2V0VmFyKCdzeXNjb25mZGlyJyksIHNlbGYuZC5nZXRWYXIoJ0RJU1RSTycpLCBzZWxmLmQuZ2V0VmFyKCdESVNUUk9fQ09ERU5BTUUnKSkKIAotICAgICAgICBpZiBzZWxmLmQuZ2V0VmFyKCdSUE1fU0lHTl9QQUNLQUdFUycpID09ICcwJzoKKyAgICAgICAgaWYgc2VsZi5kLmdldFZhcignUlBNX1NJR05fUEFDS0FHRVMnKSAhPSAnMSc6CiAgICAgICAgICAgICBncGdfb3B0cyArPSAnZ3BnY2hlY2s9MFxuJwogCiAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihvZS5wYXRoLmpvaW4oc2VsZi50YXJnZXRfcm9vdGZzLCAiZXRjIiwgInl1bS5yZXBvcy5kIikpCkBAIC02MDIsOCArNzYzLDcgQEAKICAgICAgICAgb3MuZW52aXJvblsnT0ZGTElORV9ST09UJ10gPSBzZWxmLnRhcmdldF9yb290ZnMKICAgICAgICAgb3MuZW52aXJvblsnSVBLR19PRkZMSU5FX1JPT1QnXSA9IHNlbGYudGFyZ2V0X3Jvb3RmcwogICAgICAgICBvcy5lbnZpcm9uWydPUEtHX09GRkxJTkVfUk9PVCddID0gc2VsZi50YXJnZXRfcm9vdGZzCi0gICAgICAgIG9zLmVudmlyb25bJ0lOVEVSQ0VQVF9ESVInXSA9IG9lLnBhdGguam9pbihzZWxmLmQuZ2V0VmFyKCdXT1JLRElSJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJjZXB0X3NjcmlwdHMiKQorICAgICAgICBvcy5lbnZpcm9uWydJTlRFUkNFUFRfRElSJ10gPSBzZWxmLmludGVyY2VwdHNfZGlyCiAgICAgICAgIG9zLmVudmlyb25bJ05BVElWRV9ST09UJ10gPSBzZWxmLmQuZ2V0VmFyKCdTVEFHSU5HX0RJUl9OQVRJVkUnKQogCiAKQEAgLTYyOCw2ICs3ODgsOCBAQAogICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJOb24tZmF0YWwgUE9TVElOIHNjcmlwdGxldCBmYWlsdXJlIGluIHJwbSBwYWNrYWdlIik6CiAgICAgICAgICAgICAgICAgZmFpbGVkX3NjcmlwdGxldHNfcGtnbmFtZXNbbGluZS5zcGxpdCgpWy0xXV0gPSBUcnVlCiAKKyAgICAgICAgaWYgbGVuKGZhaWxlZF9zY3JpcHRsZXRzX3BrZ25hbWVzKSA+IDA6CisgICAgICAgICAgICBmYWlsZWRfcG9zdGluc3RzX3dhcm4obGlzdChmYWlsZWRfc2NyaXB0bGV0c19wa2duYW1lcy5rZXlzKCkpLCBzZWxmLmQuZXhwYW5kKCIke1R9L2xvZy5kb18ke0JCX0NVUlJFTlRUQVNLfSIpKQogICAgICAgICBmb3IgcGtnIGluIGZhaWxlZF9zY3JpcHRsZXRzX3BrZ25hbWVzLmtleXMoKToKICAgICAgICAgICAgIHNlbGYuc2F2ZV9ycG1wb3N0aW5zdChwa2cpCiAKQEAgLTczMCw2ICs4OTIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1zZXRvcHQ9bG9nZGlyPSVzIiAlIChzZWxmLmQuZ2V0VmFyKCdUJykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICBjbWQgPSBbZG5mX2NtZF0gKyBzdGFuZGFyZF9kbmZfYXJncyArIGRuZl9hcmdzCisgICAgICAgIGJiLm5vdGUoJ1J1bm5pbmcgJXMnICUgJyAnLmpvaW4oY21kKSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgICAgICBpZiBwcmludF9vdXRwdXQ6CkBAIC03ODIsNiArOTQ1LDE0IEBACiAgICAgICAgIG9wZW4oc2F2ZWRfc2NyaXB0X25hbWUsICd3Jykud3JpdGUob3V0cHV0KQogICAgICAgICBvcy5jaG1vZChzYXZlZF9zY3JpcHRfbmFtZSwgMG83NTUpCiAKKyAgICBkZWYgX2hhbmRsZV9pbnRlcmNlcHRfZmFpbHVyZShzZWxmLCByZWdpc3RlcmVkX3BrZ3MpOgorICAgICAgICBycG1fcG9zdGluc3RzX2RpciA9IHNlbGYudGFyZ2V0X3Jvb3RmcyArIHNlbGYuZC5leHBhbmQoJyR7c3lzY29uZmRpcn0vcnBtLXBvc3RpbnN0cy8nKQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIocnBtX3Bvc3RpbnN0c19kaXIpCisKKyAgICAgICAgIyBTYXZlIHRoZSBwYWNrYWdlIHBvc3RpbnN0YWxscyBpbiAvZXRjL3JwbS1wb3N0aW5zdHMKKyAgICAgICAgZm9yIHBrZyBpbiByZWdpc3RlcmVkX3BrZ3Muc3BsaXQoKToKKyAgICAgICAgICAgIHNlbGYuc2F2ZV9ycG1wb3N0aW5zdChwa2cpCisKICAgICBkZWYgZXh0cmFjdChzZWxmLCBwa2cpOgogICAgICAgICBvdXRwdXQgPSBzZWxmLl9pbnZva2VfZG5mKFsicmVwb3F1ZXJ5IiwgIi0tcXVlcnlmb3JtYXQiLCAiJXtsb2NhdGlvbn0iLCBwa2ddKQogICAgICAgICBwa2dfbmFtZSA9IG91dHB1dC5zcGxpdGxpbmVzKClbLTFdCkBAIC04MTksMTggKzk5MCwxOCBAQAogCiAKIGNsYXNzIE9wa2dEcGtnUE0oUGFja2FnZU1hbmFnZXIpOgotICAgICIiIgotICAgIFRoaXMgaXMgYW4gYWJzdHJhY3QgY2xhc3MuIERvIG5vdCBpbnN0YW50aWF0ZSB0aGlzIGRpcmVjdGx5LgotICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkKToKLSAgICAgICAgc3VwZXIoT3BrZ0Rwa2dQTSwgc2VsZikuX19pbml0X18oZCkKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZCwgdGFyZ2V0X3Jvb3Rmcyk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGlzIGFuIGFic3RyYWN0IGNsYXNzLiBEbyBub3QgaW5zdGFudGlhdGUgdGhpcyBkaXJlY3RseS4KKyAgICAgICAgIiIiCisgICAgICAgIHN1cGVyKE9wa2dEcGtnUE0sIHNlbGYpLl9faW5pdF9fKGQsIHRhcmdldF9yb290ZnMpCiAKLSAgICAiIiIKLSAgICBSZXR1cm5zIGEgZGljdGlvbmFyeSB3aXRoIHRoZSBwYWNrYWdlIGluZm8uCi0KLSAgICBUaGlzIG1ldGhvZCBleHRyYWN0cyB0aGUgY29tbW9uIHBhcnRzIGZvciBPcGtnIGFuZCBEcGtnCi0gICAgIiIiCiAgICAgZGVmIHBhY2thZ2VfaW5mbyhzZWxmLCBwa2csIGNtZCk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIGEgZGljdGlvbmFyeSB3aXRoIHRoZSBwYWNrYWdlIGluZm8uCisKKyAgICAgICAgVGhpcyBtZXRob2QgZXh0cmFjdHMgdGhlIGNvbW1vbiBwYXJ0cyBmb3IgT3BrZyBhbmQgRHBrZworICAgICAgICAiIiIKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgc2hlbGw9VHJ1ZSkuZGVjb2RlKCJ1dGYtOCIpCkBAIC04MzksMTQgKzEwMTAsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5lZCAlZDpcbiVzIiAlIChjbWQsIGUucmV0dXJuY29kZSwgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKICAgICAgICAgcmV0dXJuIG9wa2dfcXVlcnkob3V0cHV0KQogCi0gICAgIiIiCi0gICAgUmV0dXJucyB0aGUgcGF0aCB0byBhIHRtcGRpciB3aGVyZSByZXNpZGVzIHRoZSBjb250ZW50cyBvZiBhIHBhY2thZ2UuCi0KLSAgICBEZWxldGluZyB0aGUgdG1wZGlyIGlzIHJlc3BvbnNhYmlsaXR5IG9mIHRoZSBjYWxsZXIuCi0KLSAgICBUaGlzIG1ldGhvZCBleHRyYWN0cyB0aGUgY29tbW9uIHBhcnRzIGZvciBPcGtnIGFuZCBEcGtnCi0gICAgIiIiCiAgICAgZGVmIGV4dHJhY3Qoc2VsZiwgcGtnLCBwa2dfaW5mbyk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIHRoZSBwYXRoIHRvIGEgdG1wZGlyIHdoZXJlIHJlc2lkZXMgdGhlIGNvbnRlbnRzIG9mIGEgcGFja2FnZS4KKworICAgICAgICBEZWxldGluZyB0aGUgdG1wZGlyIGlzIHJlc3BvbnNhYmlsaXR5IG9mIHRoZSBjYWxsZXIuCisKKyAgICAgICAgVGhpcyBtZXRob2QgZXh0cmFjdHMgdGhlIGNvbW1vbiBwYXJ0cyBmb3IgT3BrZyBhbmQgRHBrZworICAgICAgICAiIiIKIAogICAgICAgICBhcl9jbWQgPSBiYi51dGlscy53aGljaChvcy5nZXRlbnYoIlBBVEgiKSwgImFyIikKICAgICAgICAgdGFyX2NtZCA9IGJiLnV0aWxzLndoaWNoKG9zLmdldGVudigiUEFUSCIpLCAidGFyIikKQEAgLTg4NSwxMiArMTA1NiwxMyBAQAogCiAgICAgICAgIHJldHVybiB0bXBfZGlyCiAKKyAgICBkZWYgX2hhbmRsZV9pbnRlcmNlcHRfZmFpbHVyZShzZWxmLCByZWdpc3RlcmVkX3BrZ3MpOgorICAgICAgICBzZWxmLm1hcmtfcGFja2FnZXMoInVucGFja2VkIiwgcmVnaXN0ZXJlZF9wa2dzLnNwbGl0KCkpCiAKIGNsYXNzIE9wa2dQTShPcGtnRHBrZ1BNKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZCwgdGFyZ2V0X3Jvb3RmcywgY29uZmlnX2ZpbGUsIGFyY2hzLCB0YXNrX25hbWU9J3RhcmdldCcpOgotICAgICAgICBzdXBlcihPcGtnUE0sIHNlbGYpLl9faW5pdF9fKGQpCisgICAgICAgIHN1cGVyKE9wa2dQTSwgc2VsZikuX19pbml0X18oZCwgdGFyZ2V0X3Jvb3RmcykKIAotICAgICAgICBzZWxmLnRhcmdldF9yb290ZnMgPSB0YXJnZXRfcm9vdGZzCiAgICAgICAgIHNlbGYuY29uZmlnX2ZpbGUgPSBjb25maWdfZmlsZQogICAgICAgICBzZWxmLnBrZ19hcmNocyA9IGFyY2hzCiAgICAgICAgIHNlbGYudGFza19uYW1lID0gdGFza19uYW1lCkBAIC05MjEsMTIgKzEwOTMsMTIgQEAKIAogICAgICAgICBzZWxmLmluZGV4ZXIgPSBPcGtnSW5kZXhlcihzZWxmLmQsIHNlbGYuZGVwbG95X2RpcikKIAotICAgICIiIgotICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBjaGFuZ2UgYSBwYWNrYWdlJ3Mgc3RhdHVzIGluIC92YXIvbGliL29wa2cvc3RhdHVzIGZpbGUuCi0gICAgSWYgJ3BhY2thZ2VzJyBpcyBOb25lIHRoZW4gdGhlIG5ld19zdGF0dXMgd2lsbCBiZSBhcHBsaWVkIHRvIGFsbAotICAgIHBhY2thZ2VzCi0gICAgIiIiCiAgICAgZGVmIG1hcmtfcGFja2FnZXMoc2VsZiwgc3RhdHVzX3RhZywgcGFja2FnZXM9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgY2hhbmdlIGEgcGFja2FnZSdzIHN0YXR1cyBpbiAvdmFyL2xpYi9vcGtnL3N0YXR1cyBmaWxlLgorICAgICAgICBJZiAncGFja2FnZXMnIGlzIE5vbmUgdGhlbiB0aGUgbmV3X3N0YXR1cyB3aWxsIGJlIGFwcGxpZWQgdG8gYWxsCisgICAgICAgIHBhY2thZ2VzCisgICAgICAgICIiIgogICAgICAgICBzdGF0dXNfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLm9wa2dfZGlyLCAic3RhdHVzIikKIAogICAgICAgICB3aXRoIG9wZW4oc3RhdHVzX2ZpbGUsICJyIikgYXMgc2Y6CkBAIC0xMDc5LDggKzEyNTEsNyBAQAogICAgICAgICBvcy5lbnZpcm9uWydPRkZMSU5FX1JPT1QnXSA9IHNlbGYudGFyZ2V0X3Jvb3RmcwogICAgICAgICBvcy5lbnZpcm9uWydJUEtHX09GRkxJTkVfUk9PVCddID0gc2VsZi50YXJnZXRfcm9vdGZzCiAgICAgICAgIG9zLmVudmlyb25bJ09QS0dfT0ZGTElORV9ST09UJ10gPSBzZWxmLnRhcmdldF9yb290ZnMKLSAgICAgICAgb3MuZW52aXJvblsnSU5URVJDRVBUX0RJUiddID0gb3MucGF0aC5qb2luKHNlbGYuZC5nZXRWYXIoJ1dPUktESVInKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcmNlcHRfc2NyaXB0cyIpCisgICAgICAgIG9zLmVudmlyb25bJ0lOVEVSQ0VQVF9ESVInXSA9IHNlbGYuaW50ZXJjZXB0c19kaXIKICAgICAgICAgb3MuZW52aXJvblsnTkFUSVZFX1JPT1QnXSA9IHNlbGYuZC5nZXRWYXIoJ1NUQUdJTkdfRElSX05BVElWRScpCiAKICAgICAgICAgdHJ5OgpAQCAtMTA4OCw2ICsxMjU5LDEzIEBACiAgICAgICAgICAgICBiYi5ub3RlKGNtZCkKICAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZC5zcGxpdCgpLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpLmRlY29kZSgidXRmLTgiKQogICAgICAgICAgICAgYmIubm90ZShvdXRwdXQpCisgICAgICAgICAgICBmYWlsZWRfcGtncyA9IFtdCisgICAgICAgICAgICBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXQoJ1xuJyk6CisgICAgICAgICAgICAgICAgaWYgbGluZS5lbmRzd2l0aCgiY29uZmlndXJhdGlvbiByZXF1aXJlZCBvbiB0YXJnZXQuIik6CisgICAgICAgICAgICAgICAgICAgIGJiLndhcm4obGluZSkKKyAgICAgICAgICAgICAgICAgICAgZmFpbGVkX3BrZ3MuYXBwZW5kKGxpbmUuc3BsaXQoIi4iKVswXSkKKyAgICAgICAgICAgIGlmIGZhaWxlZF9wa2dzOgorICAgICAgICAgICAgICAgIGZhaWxlZF9wb3N0aW5zdHNfd2FybihmYWlsZWRfcGtncywgc2VsZi5kLmV4cGFuZCgiJHtUfS9sb2cuZG9fJHtCQl9DVVJSRU5UVEFTS30iKSkKICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAoYmIuZmF0YWwsIGJiLndhcm4pW2F0dGVtcHRfb25seV0oIlVuYWJsZSB0byBpbnN0YWxsIHBhY2thZ2VzLiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbW1hbmQgJyVzJyByZXR1cm5lZCAlZDpcbiVzIiAlCkBAIC0xMTcwLDEwICsxMzQ4LDEwIEBACiAgICAgICAgICAgICAgICAgIyBpcyBzZXBhcmF0ZWQgZnJvbSB0aGUgZm9sbG93aW5nIGVudHJ5CiAgICAgICAgICAgICAgICAgc3RhdHVzLndyaXRlKCJcbiIpCiAKLSAgICAnJycKLSAgICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIGR1bW15IGluc3RhbGxzIHBrZ3MgYW5kIHJldHVybnMgdGhlIGxvZyBvZiBvdXRwdXQuCi0gICAgJycnCiAgICAgZGVmIGR1bW15X2luc3RhbGwoc2VsZiwgcGtncyk6CisgICAgICAgICIiIgorICAgICAgICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIGR1bW15IGluc3RhbGxzIHBrZ3MgYW5kIHJldHVybnMgdGhlIGxvZyBvZiBvdXRwdXQuCisgICAgICAgICIiIgogICAgICAgICBpZiBsZW4ocGtncykgPT0gMDoKICAgICAgICAgICAgIHJldHVybgogCkBAIC0xMjI4LDEwICsxNDA2LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vcGtnX2RpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1saW5rcz1UcnVlKQogCi0gICAgIiIiCi0gICAgUmV0dXJucyBhIGRpY3Rpb25hcnkgd2l0aCB0aGUgcGFja2FnZSBpbmZvLgotICAgICIiIgogICAgIGRlZiBwYWNrYWdlX2luZm8oc2VsZiwgcGtnKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgYSBkaWN0aW9uYXJ5IHdpdGggdGhlIHBhY2thZ2UgaW5mby4KKyAgICAgICAgIiIiCiAgICAgICAgIGNtZCA9ICIlcyAlcyBpbmZvICVzIiAlIChzZWxmLm9wa2dfY21kLCBzZWxmLm9wa2dfYXJncywgcGtnKQogICAgICAgICBwa2dfaW5mbyA9IHN1cGVyKE9wa2dQTSwgc2VsZikucGFja2FnZV9pbmZvKHBrZywgY21kKQogCkBAIC0xMjQyLDEyICsxNDIwLDEyIEBACiAKICAgICAgICAgcmV0dXJuIHBrZ19pbmZvCiAKLSAgICAiIiIKLSAgICBSZXR1cm5zIHRoZSBwYXRoIHRvIGEgdG1wZGlyIHdoZXJlIHJlc2lkZXMgdGhlIGNvbnRlbnRzIG9mIGEgcGFja2FnZS4KLQotICAgIERlbGV0aW5nIHRoZSB0bXBkaXIgaXMgcmVzcG9uc2FiaWxpdHkgb2YgdGhlIGNhbGxlci4KLSAgICAiIiIKICAgICBkZWYgZXh0cmFjdChzZWxmLCBwa2cpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgcGF0aCB0byBhIHRtcGRpciB3aGVyZSByZXNpZGVzIHRoZSBjb250ZW50cyBvZiBhIHBhY2thZ2UuCisKKyAgICAgICAgRGVsZXRpbmcgdGhlIHRtcGRpciBpcyByZXNwb25zYWJpbGl0eSBvZiB0aGUgY2FsbGVyLgorICAgICAgICAiIiIKICAgICAgICAgcGtnX2luZm8gPSBzZWxmLnBhY2thZ2VfaW5mbyhwa2cpCiAgICAgICAgIGlmIG5vdCBwa2dfaW5mbzoKICAgICAgICAgICAgIGJiLmZhdGFsKCJVbmFibGUgdG8gZ2V0IGluZm9ybWF0aW9uIGZvciBwYWNrYWdlICclcycgd2hpbGUgIgpAQCAtMTI2MCw4ICsxNDM4LDcgQEAKIAogY2xhc3MgRHBrZ1BNKE9wa2dEcGtnUE0pOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkLCB0YXJnZXRfcm9vdGZzLCBhcmNocywgYmFzZV9hcmNocywgYXB0X2NvbmZfZGlyPU5vbmUpOgotICAgICAgICBzdXBlcihEcGtnUE0sIHNlbGYpLl9faW5pdF9fKGQpCi0gICAgICAgIHNlbGYudGFyZ2V0X3Jvb3RmcyA9IHRhcmdldF9yb290ZnMKKyAgICAgICAgc3VwZXIoRHBrZ1BNLCBzZWxmKS5fX2luaXRfXyhkLCB0YXJnZXRfcm9vdGZzKQogICAgICAgICBzZWxmLmRlcGxveV9kaXIgPSBzZWxmLmQuZ2V0VmFyKCdERVBMT1lfRElSX0RFQicpCiAgICAgICAgIGlmIGFwdF9jb25mX2RpciBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5hcHRfY29uZl9kaXIgPSBzZWxmLmQuZXhwYW5kKCIke0FQVENPTkZfVEFSR0VUfS9hcHQiKQpAQCAtMTI4MSwxMiArMTQ1OCwxMiBAQAogCiAgICAgICAgIHNlbGYuaW5kZXhlciA9IERwa2dJbmRleGVyKHNlbGYuZCwgc2VsZi5kZXBsb3lfZGlyKQogCi0gICAgIiIiCi0gICAgVGhpcyBmdW5jdGlvbiB3aWxsIGNoYW5nZSBhIHBhY2thZ2UncyBzdGF0dXMgaW4gL3Zhci9saWIvZHBrZy9zdGF0dXMgZmlsZS4KLSAgICBJZiAncGFja2FnZXMnIGlzIE5vbmUgdGhlbiB0aGUgbmV3X3N0YXR1cyB3aWxsIGJlIGFwcGxpZWQgdG8gYWxsCi0gICAgcGFja2FnZXMKLSAgICAiIiIKICAgICBkZWYgbWFya19wYWNrYWdlcyhzZWxmLCBzdGF0dXNfdGFnLCBwYWNrYWdlcz1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBjaGFuZ2UgYSBwYWNrYWdlJ3Mgc3RhdHVzIGluIC92YXIvbGliL2Rwa2cvc3RhdHVzIGZpbGUuCisgICAgICAgIElmICdwYWNrYWdlcycgaXMgTm9uZSB0aGVuIHRoZSBuZXdfc3RhdHVzIHdpbGwgYmUgYXBwbGllZCB0byBhbGwKKyAgICAgICAgcGFja2FnZXMKKyAgICAgICAgIiIiCiAgICAgICAgIHN0YXR1c19maWxlID0gc2VsZi50YXJnZXRfcm9vdGZzICsgIi92YXIvbGliL2Rwa2cvc3RhdHVzIgogCiAgICAgICAgIHdpdGggb3BlbihzdGF0dXNfZmlsZSwgInIiKSBhcyBzZjoKQEAgLTEzMDksMTEgKzE0ODYsMTEgQEAKIAogICAgICAgICBvcy5yZW5hbWUoc3RhdHVzX2ZpbGUgKyAiLnRtcCIsIHN0YXR1c19maWxlKQogCi0gICAgIiIiCi0gICAgUnVuIHRoZSBwcmUvcG9zdCBpbnN0YWxscyBmb3IgcGFja2FnZSAicGFja2FnZV9uYW1lIi4gSWYgcGFja2FnZV9uYW1lIGlzCi0gICAgTm9uZSwgdGhlbiBydW4gYWxsIHByZS9wb3N0IGluc3RhbGwgc2NyaXB0bGV0cy4KLSAgICAiIiIKICAgICBkZWYgcnVuX3ByZV9wb3N0X2luc3RhbGxzKHNlbGYsIHBhY2thZ2VfbmFtZT1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJ1biB0aGUgcHJlL3Bvc3QgaW5zdGFsbHMgZm9yIHBhY2thZ2UgInBhY2thZ2VfbmFtZSIuIElmIHBhY2thZ2VfbmFtZSBpcworICAgICAgICBOb25lLCB0aGVuIHJ1biBhbGwgcHJlL3Bvc3QgaW5zdGFsbCBzY3JpcHRsZXRzLgorICAgICAgICAiIiIKICAgICAgICAgaW5mb19kaXIgPSBzZWxmLnRhcmdldF9yb290ZnMgKyAiL3Zhci9saWIvZHBrZy9pbmZvIgogICAgICAgICBDb250cm9sU2NyaXB0ID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgiQ29udHJvbFNjcmlwdCIsIFsic3VmZml4IiwgIm5hbWUiLCAiYXJndW1lbnQiXSkKICAgICAgICAgY29udHJvbF9zY3JpcHRzID0gWwpAQCAtMTMzNSw4ICsxNTEyLDcgQEAKICAgICAgICAgb3MuZW52aXJvblsnT0ZGTElORV9ST09UJ10gPSBzZWxmLnRhcmdldF9yb290ZnMKICAgICAgICAgb3MuZW52aXJvblsnSVBLR19PRkZMSU5FX1JPT1QnXSA9IHNlbGYudGFyZ2V0X3Jvb3RmcwogICAgICAgICBvcy5lbnZpcm9uWydPUEtHX09GRkxJTkVfUk9PVCddID0gc2VsZi50YXJnZXRfcm9vdGZzCi0gICAgICAgIG9zLmVudmlyb25bJ0lOVEVSQ0VQVF9ESVInXSA9IG9zLnBhdGguam9pbihzZWxmLmQuZ2V0VmFyKCdXT1JLRElSJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJjZXB0X3NjcmlwdHMiKQorICAgICAgICBvcy5lbnZpcm9uWydJTlRFUkNFUFRfRElSJ10gPSBzZWxmLmludGVyY2VwdHNfZGlyCiAgICAgICAgIG9zLmVudmlyb25bJ05BVElWRV9ST09UJ10gPSBzZWxmLmQuZ2V0VmFyKCdTVEFHSU5HX0RJUl9OQVRJVkUnKQogCiAgICAgICAgIGZhaWxlZF9wa2dzID0gW10KQEAgLTEzNTEsOSArMTUyNywxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpLmRlY29kZSgidXRmLTgiKQogICAgICAgICAgICAgICAgICAgICAgICAgYmIubm90ZShvdXRwdXQpCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgICAgICAgICAgYmIubm90ZSgiJXMgZm9yIHBhY2thZ2UgJXMgZmFpbGVkIHdpdGggJWQ6XG4lcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgYmIud2FybigiJXMgZm9yIHBhY2thZ2UgJXMgZmFpbGVkIHdpdGggJWQ6XG4lcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29udHJvbF9zY3JpcHQubmFtZSwgcGtnX25hbWUsIGUucmV0dXJuY29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUub3V0cHV0LmRlY29kZSgidXRmLTgiKSkpCisgICAgICAgICAgICAgICAgICAgICAgICBmYWlsZWRfcG9zdGluc3RzX3dhcm4oW3BrZ19uYW1lXSwgc2VsZi5kLmV4cGFuZCgiJHtUfS9sb2cuZG9fJHtCQl9DVVJSRU5UVEFTS30iKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxlZF9wa2dzLmFwcGVuZChwa2dfbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAKQEAgLTE1NTgsMTAgKzE3MzUsMTAgQEAKICAgICBkZWYgbGlzdF9pbnN0YWxsZWQoc2VsZik6CiAgICAgICAgIHJldHVybiBEcGtnUGtnc0xpc3Qoc2VsZi5kLCBzZWxmLnRhcmdldF9yb290ZnMpLmxpc3RfcGtncygpCiAKLSAgICAiIiIKLSAgICBSZXR1cm5zIGEgZGljdGlvbmFyeSB3aXRoIHRoZSBwYWNrYWdlIGluZm8uCi0gICAgIiIiCiAgICAgZGVmIHBhY2thZ2VfaW5mbyhzZWxmLCBwa2cpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyBhIGRpY3Rpb25hcnkgd2l0aCB0aGUgcGFja2FnZSBpbmZvLgorICAgICAgICAiIiIKICAgICAgICAgY21kID0gIiVzIHNob3cgJXMiICUgKHNlbGYuYXB0X2NhY2hlX2NtZCwgcGtnKQogICAgICAgICBwa2dfaW5mbyA9IHN1cGVyKERwa2dQTSwgc2VsZikucGFja2FnZV9pbmZvKHBrZywgY21kKQogCkBAIC0xNTcyLDEyICsxNzQ5LDEyIEBACiAKICAgICAgICAgcmV0dXJuIHBrZ19pbmZvCiAKLSAgICAiIiIKLSAgICBSZXR1cm5zIHRoZSBwYXRoIHRvIGEgdG1wZGlyIHdoZXJlIHJlc2lkZXMgdGhlIGNvbnRlbnRzIG9mIGEgcGFja2FnZS4KLQotICAgIERlbGV0aW5nIHRoZSB0bXBkaXIgaXMgcmVzcG9uc2FiaWxpdHkgb2YgdGhlIGNhbGxlci4KLSAgICAiIiIKICAgICBkZWYgZXh0cmFjdChzZWxmLCBwa2cpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgcGF0aCB0byBhIHRtcGRpciB3aGVyZSByZXNpZGVzIHRoZSBjb250ZW50cyBvZiBhIHBhY2thZ2UuCisKKyAgICAgICAgRGVsZXRpbmcgdGhlIHRtcGRpciBpcyByZXNwb25zYWJpbGl0eSBvZiB0aGUgY2FsbGVyLgorICAgICAgICAiIiIKICAgICAgICAgcGtnX2luZm8gPSBzZWxmLnBhY2thZ2VfaW5mbyhwa2cpCiAgICAgICAgIGlmIG5vdCBwa2dfaW5mbzoKICAgICAgICAgICAgIGJiLmZhdGFsKCJVbmFibGUgdG8gZ2V0IGluZm9ybWF0aW9uIGZvciBwYWNrYWdlICclcycgd2hpbGUgIgpAQCAtMTU5Miw3ICsxNzY5LDcgQEAKICAgICBjbGFzc2VzID0gZC5nZXRWYXIoJ1BBQ0tBR0VfQ0xBU1NFUycpLnJlcGxhY2UoInBhY2thZ2VfIiwgIiIpLnNwbGl0KCkKIAogICAgIGluZGV4ZXJfbWFwID0gewotICAgICAgICAicnBtIjogKFJwbUluZGV4ZXIsIGQuZ2V0VmFyKCdERVBMT1lfRElSX1JQTScpKSwKKyAgICAgICAgInJwbSI6IChScG1TdWJkaXJJbmRleGVyLCBkLmdldFZhcignREVQTE9ZX0RJUl9SUE0nKSksCiAgICAgICAgICJpcGsiOiAoT3BrZ0luZGV4ZXIsIGQuZ2V0VmFyKCdERVBMT1lfRElSX0lQSycpKSwKICAgICAgICAgImRlYiI6IChEcGtnSW5kZXhlciwgZC5nZXRWYXIoJ0RFUExPWV9ESVJfREVCJykpCiAgICAgfQpAQCAtMTYwOCwxMiArMTc4NSwzIEBACiAKICAgICAgICAgICAgIGlmIHJlc3VsdCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBiYi5mYXRhbChyZXN1bHQpCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgIiIiCi0gICAgV2Ugc2hvdWxkIGJlIGFibGUgdG8gcnVuIHRoaXMgYXMgYSBzdGFuZGFsb25lIHNjcmlwdCwgZnJvbSBvdXRzaWRlIGJpdGJha2UKLSAgICBlbnZpcm9ubWVudC4KLSAgICAiIiIKLSAgICAiIiIKLSAgICBUQkQKLSAgICAiIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYXRjaC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYXRjaC5weQppbmRleCA1ODRiZjZjLi5hZjdhYTUyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGF0Y2gucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhdGNoLnB5CkBAIC0zNiw2ICszNiwyMiBAQAogICAgICAgICAoZXhpdHN0YXR1cywgb3V0cHV0KSA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dChjbWQpCiAgICAgICAgIGlmIGV4aXRzdGF0dXMgIT0gMDoKICAgICAgICAgICAgIHJhaXNlIENtZEVycm9yKGNtZCwgZXhpdHN0YXR1cyA+PiA4LCBvdXRwdXQpCisgICAgICAgIGlmICIgZnV6eiAiIGluIG91dHB1dDoKKyAgICAgICAgICAgIGJiLndhcm4oIiIiCitTb21lIG9mIHRoZSBjb250ZXh0IGxpbmVzIGluIHBhdGNoZXMgd2VyZSBpZ25vcmVkLiBUaGlzIGNhbiBsZWFkIHRvIGluY29ycmVjdGx5IGFwcGxpZWQgcGF0Y2hlcy4KK1RoZSBjb250ZXh0IGxpbmVzIGluIHRoZSBwYXRjaGVzIGNhbiBiZSB1cGRhdGVkIHdpdGggZGV2dG9vbDoKKworICAgIGRldnRvb2wgbW9kaWZ5IDxyZWNpcGU+CisgICAgZGV2dG9vbCBmaW5pc2ggLS1mb3JjZS1wYXRjaC1yZWZyZXNoIDxyZWNpcGU+IDxsYXllcl9wYXRoPgorCitUaGVuIHRoZSB1cGRhdGVkIHBhdGNoZXMgYW5kIHRoZSBzb3VyY2UgdHJlZSAoaW4gZGV2dG9vbCdzIHdvcmtzcGFjZSkKK3Nob3VsZCBiZSByZXZpZXdlZCB0byBtYWtlIHN1cmUgdGhlIHBhdGNoZXMgYXBwbHkgaW4gdGhlIGNvcnJlY3QgcGxhY2UKK2FuZCBkb24ndCBpbnRyb2R1Y2UgZHVwbGljYXRlIGxpbmVzICh3aGljaCBjYW4sIGFuZCBkb2VzIGhhcHBlbgord2hlbiBzb21lIG9mIHRoZSBjb250ZXh0IGlzIGlnbm9yZWQpLiBGdXJ0aGVyIGluZm9ybWF0aW9uOgoraHR0cDovL2xpc3RzLm9wZW5lbWJlZGRlZC5vcmcvcGlwZXJtYWlsL29wZW5lbWJlZGRlZC1jb3JlLzIwMTgtTWFyY2gvMTQ4Njc1Lmh0bWwKK2h0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NTAKK0RldGFpbHM6Cit7fSIiIi5mb3JtYXQob3V0cHV0KSkKICAgICAgICAgcmV0dXJuIG91dHB1dAogCiAgICAgZmluYWxseToKQEAgLTIxMiw3ICsyMjgsNyBAQAogICAgICAgICBzZWxmLnBhdGNoZXMuaW5zZXJ0KGksIHBhdGNoKQogCiAgICAgZGVmIF9hcHBseXBhdGNoKHNlbGYsIHBhdGNoLCBmb3JjZSA9IEZhbHNlLCByZXZlcnNlID0gRmFsc2UsIHJ1biA9IFRydWUpOgotICAgICAgICBzaGVsbGNtZCA9IFsiY2F0IiwgcGF0Y2hbJ2ZpbGUnXSwgInwiLCAicGF0Y2giLCAiLXAiLCBwYXRjaFsnc3RyaXBwYXRoJ11dCisgICAgICAgIHNoZWxsY21kID0gWyJjYXQiLCBwYXRjaFsnZmlsZSddLCAifCIsICJwYXRjaCIsICItLW5vLWJhY2t1cC1pZi1taXNtYXRjaCIsICItcCIsIHBhdGNoWydzdHJpcHBhdGgnXV0KICAgICAgICAgaWYgcmV2ZXJzZToKICAgICAgICAgICAgIHNoZWxsY21kLmFwcGVuZCgnLVInKQogCkBAIC00MzIsNyArNDQ4LDcgQEAKICAgICAgICAgaW1wb3J0IHJlCiAgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nb2VwYXRjaCcpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNoZWxsY21kID0gWyJnaXQiLCAiZm9ybWF0LXBhdGNoIiwgc3RhcnRjb21taXQsICItbyIsIHRlbXBkaXJdCisgICAgICAgICAgICBzaGVsbGNtZCA9IFsiZ2l0IiwgImZvcm1hdC1wYXRjaCIsICItLW5vLXNpZ25hdHVyZSIsICItLW5vLW51bWJlcmVkIiwgc3RhcnRjb21taXQsICItbyIsIHRlbXBkaXJdCiAgICAgICAgICAgICBpZiBwYXRoczoKICAgICAgICAgICAgICAgICBzaGVsbGNtZC5hcHBlbmQoJy0tJykKICAgICAgICAgICAgICAgICBzaGVsbGNtZC5leHRlbmQocGF0aHMpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGF0aC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYXRoLnB5CmluZGV4IDFlYTAzZDUuLjc2YzU4ZmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYXRoLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYXRoLnB5CkBAIC0yMzcsMyArMjM3LDI1IEBACiAgICAgICAgIHJhaXNlCiAKICAgICByZXR1cm4gZmlsZQorCitkZWYgaXNfcGF0aF9wYXJlbnQocG9zc2libGVfcGFyZW50LCAqcGF0aHMpOgorICAgICIiIgorICAgIFJldHVybiBUcnVlIGlmIGEgcGF0aCBpcyB0aGUgcGFyZW50IG9mIGFub3RoZXIsIEZhbHNlIG90aGVyd2lzZS4KKyAgICBNdWx0aXBsZSBwYXRocyB0byB0ZXN0IGNhbiBiZSBzcGVjaWZpZWQgaW4gd2hpY2ggY2FzZSBhbGwKKyAgICBzcGVjaWZpZWQgdGVzdCBwYXRocyBtdXN0IGJlIHVuZGVyIHRoZSBwYXJlbnQgaW4gb3JkZXIgdG8KKyAgICByZXR1cm4gVHJ1ZS4KKyAgICAiIiIKKyAgICBkZWYgYWJzX3BhdGhfdHJhaWxpbmcocHRoKToKKyAgICAgICAgcHRoX2FicyA9IG9zLnBhdGguYWJzcGF0aChwdGgpCisgICAgICAgIGlmIG5vdCBwdGhfYWJzLmVuZHN3aXRoKG9zLnNlcCk6CisgICAgICAgICAgICBwdGhfYWJzICs9IG9zLnNlcAorICAgICAgICByZXR1cm4gcHRoX2FicworCisgICAgcG9zc2libGVfcGFyZW50X2FicyA9IGFic19wYXRoX3RyYWlsaW5nKHBvc3NpYmxlX3BhcmVudCkKKyAgICBpZiBub3QgcGF0aHM6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGZvciBwYXRoIGluIHBhdGhzOgorICAgICAgICBwYXRoX2FicyA9IGFic19wYXRoX3RyYWlsaW5nKHBhdGgpCisgICAgICAgIGlmIG5vdCBwYXRoX2Ficy5zdGFydHN3aXRoKHBvc3NpYmxlX3BhcmVudF9hYnMpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIFRydWUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9yZWNpcGV1dGlscy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9yZWNpcGV1dGlscy5weQppbmRleCBjYWI4ZTQwLi5hYTY0NTUzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcmVjaXBldXRpbHMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3JlY2lwZXV0aWxzLnB5CkBAIC0yMiw3ICsyMiw3IEBACiAjIEhlbHAgdXMgdG8gZmluZCBwbGFjZXMgdG8gaW5zZXJ0IHZhbHVlcwogcmVjaXBlX3Byb2dyZXNzaW9uID0gWydTVU1NQVJZJywgJ0RFU0NSSVBUSU9OJywgJ0hPTUVQQUdFJywgJ0JVR1RSQUNLRVInLCAnU0VDVElPTicsICdMSUNFTlNFJywgJ0xJQ0VOU0VfRkxBR1MnLCAnTElDX0ZJTEVTX0NIS1NVTScsICdQUk9WSURFUycsICdERVBFTkRTJywgJ1BSJywgJ1BWJywgJ1NSQ1JFVicsICdTUkNQVicsICdTUkNfVVJJJywgJ1MnLCAnZG9fZmV0Y2goKScsICdkb191bnBhY2soKScsICdkb19wYXRjaCgpJywgJ0VYVFJBX09FQ09ORicsICdFWFRSQV9PRUNNQUtFJywgJ0VYVFJBX09FU0NPTlMnLCAnZG9fY29uZmlndXJlKCknLCAnRVhUUkFfT0VNQUtFJywgJ2RvX2NvbXBpbGUoKScsICdkb19pbnN0YWxsKCknLCAnZG9fcG9wdWxhdGVfc3lzcm9vdCgpJywgJ0lOSVRTQ1JJUFQnLCAnVVNFUkFERCcsICdHUk9VUEFERCcsICdQQUNLQUdFUycsICdGSUxFUycsICdSREVQRU5EUycsICdSUkVDT01NRU5EUycsICdSU1VHR0VTVFMnLCAnUlBST1ZJREVTJywgJ1JSRVBMQUNFUycsICdSQ09ORkxJQ1RTJywgJ0FMTE9XX0VNUFRZJywgJ3BvcHVsYXRlX3BhY2thZ2VzKCknLCAnZG9fcGFja2FnZSgpJywgJ2RvX2RlcGxveSgpJ10KICMgVmFyaWFibGVzIHRoYXQgc29tZXRpbWVzIGFyZSBhIGJpdCBsb25nIGJ1dCBzaG91bGRuJ3QgYmUgd3JhcHBlZAotbm93cmFwX3ZhcnMgPSBbJ1NVTU1BUlknLCAnSE9NRVBBR0UnLCAnQlVHVFJBQ0tFUicsICdTUkNfVVJJW21kNXN1bV0nLCAnU1JDX1VSSVtzaGEyNTZzdW1dJ10KK25vd3JhcF92YXJzID0gWydTVU1NQVJZJywgJ0hPTUVQQUdFJywgJ0JVR1RSQUNLRVInLCAnU1JDX1VSSVxbKC4rXC4pP21kNXN1bVxdJywgJ1NSQ19VUklcWyguK1wuKT9zaGEyNTZzdW1cXSddCiBsaXN0X3ZhcnMgPSBbJ1NSQ19VUkknLCAnTElDX0ZJTEVTX0NIS1NVTSddCiBtZXRhX3ZhcnMgPSBbJ1NVTU1BUlknLCAnREVTQ1JJUFRJT04nLCAnSE9NRVBBR0UnLCAnQlVHVFJBQ0tFUicsICdTRUNUSU9OJ10KIApAQCAtMTQyLDYgKzE0MiwxMCBAQAogICAgIGVsc2U6CiAgICAgICAgIG5ld2xpbmUgPSAnJwogCisgICAgbm93cmFwX3ZhcnNfcmVzID0gW10KKyAgICBmb3IgaXRlbSBpbiBub3dyYXBfdmFyczoKKyAgICAgICAgbm93cmFwX3ZhcnNfcmVzLmFwcGVuZChyZS5jb21waWxlKCdeJXMkJyAlIGl0ZW0pKQorCiAgICAgcmVjaXBlX3Byb2dyZXNzaW9uX3JlcyA9IFtdCiAgICAgcmVjaXBlX3Byb2dyZXNzaW9uX3Jlc3RycyA9IFtdCiAgICAgZm9yIGl0ZW0gaW4gcmVjaXBlX3Byb2dyZXNzaW9uOgpAQCAtMTc0LDcgKzE3OCwxMiBAQAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHJhd3RleHQgPSAnJXMgPSAiJXMiJXMnICUgKG5hbWUsIHZhbHVlc1tuYW1lXSwgbmV3bGluZSkKICAgICAgICAgYWRkbGluZXMgPSBbXQotICAgICAgICBpZiBuYW1lIGluIG5vd3JhcF92YXJzOgorICAgICAgICBub3dyYXAgPSBGYWxzZQorICAgICAgICBmb3Igbm93cmFwX3JlIGluIG5vd3JhcF92YXJzX3JlczoKKyAgICAgICAgICAgIGlmIG5vd3JhcF9yZS5tYXRjaChuYW1lKToKKyAgICAgICAgICAgICAgICBub3dyYXAgPSBUcnVlCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgbm93cmFwOgogICAgICAgICAgICAgYWRkbGluZXMuYXBwZW5kKHJhd3RleHQpCiAgICAgICAgIGVsaWYgbmFtZSBpbiBsaXN0X3ZhcnM6CiAgICAgICAgICAgICBzcGxpdHZhbHVlID0gc3BsaXRfdmFyX3ZhbHVlKHZhbHVlc1tuYW1lXSwgYXNzaWdubWVudD1GYWxzZSkKQEAgLTI0Miw3ICsyNTEsNyBAQAogICAgIHJldHVybiBjaGFuZ2VkLCB0b2xpbmVzCiAKIAotZGVmIHBhdGNoX3JlY2lwZV9maWxlKGZuLCB2YWx1ZXMsIHBhdGNoPUZhbHNlLCByZWxwYXRoPScnKToKK2RlZiBwYXRjaF9yZWNpcGVfZmlsZShmbiwgdmFsdWVzLCBwYXRjaD1GYWxzZSwgcmVscGF0aD0nJywgcmVkaXJlY3Rfb3V0cHV0PU5vbmUpOgogICAgICIiIlVwZGF0ZSBvciBpbnNlcnQgdmFyaWFibGUgdmFsdWVzIGludG8gYSByZWNpcGUgZmlsZSAoYXNzdW1pbmcgeW91CiAgICAgICAgaGF2ZSBhbHJlYWR5IGlkZW50aWZpZWQgdGhlIGV4YWN0IGZpbGUgeW91IHdhbnQgdG8gdXBkYXRlLikKICAgICAgICBOb3RlIHRoYXQgc29tZSBtYW51YWwgaW5zcGVjdGlvbi9pbnRlcnZlbnRpb24gbWF5IGJlIHJlcXVpcmVkCkBAIC0yNTQsNyArMjYzLDExIEBACiAKICAgICBfLCB0b2xpbmVzID0gcGF0Y2hfcmVjaXBlX2xpbmVzKGZyb21saW5lcywgdmFsdWVzKQogCi0gICAgaWYgcGF0Y2g6CisgICAgaWYgcmVkaXJlY3Rfb3V0cHV0OgorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHJlZGlyZWN0X291dHB1dCwgb3MucGF0aC5iYXNlbmFtZShmbikpLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlbGluZXModG9saW5lcykKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBlbGlmIHBhdGNoOgogICAgICAgICByZWxmbiA9IG9zLnBhdGgucmVscGF0aChmbiwgcmVscGF0aCkKICAgICAgICAgZGlmZiA9IGRpZmZsaWIudW5pZmllZF9kaWZmKGZyb21saW5lcywgdG9saW5lcywgJ2EvJXMnICUgcmVsZm4sICdiLyVzJyAlIHJlbGZuKQogICAgICAgICByZXR1cm4gZGlmZgpAQCAtMzA0LDcgKzMxNyw3IEBACiAKICAgICByZXR1cm4gZmlsZXZhcnMKIAotZGVmIHBhdGNoX3JlY2lwZShkLCBmbiwgdmFydmFsdWVzLCBwYXRjaD1GYWxzZSwgcmVscGF0aD0nJyk6CitkZWYgcGF0Y2hfcmVjaXBlKGQsIGZuLCB2YXJ2YWx1ZXMsIHBhdGNoPUZhbHNlLCByZWxwYXRoPScnLCByZWRpcmVjdF9vdXRwdXQ9Tm9uZSk6CiAgICAgIiIiTW9kaWZ5IGEgbGlzdCBvZiB2YXJpYWJsZSB2YWx1ZXMgaW4gdGhlIHNwZWNpZmllZCByZWNpcGUuIEhhbmRsZXMgaW5jIGZpbGVzIGlmCiAgICAgdXNlZCBieSB0aGUgcmVjaXBlLgogICAgICIiIgpAQCAtMzE0LDcgKzMyNyw3IEBACiAgICAgcGF0Y2hlcyA9IFtdCiAgICAgZm9yIGYsdiBpbiBsb2NzLml0ZW1zKCk6CiAgICAgICAgIHZhbHMgPSB7azogdmFydmFsdWVzW2tdIGZvciBrIGluIHZ9Ci0gICAgICAgIHBhdGNoZGF0YSA9IHBhdGNoX3JlY2lwZV9maWxlKGYsIHZhbHMsIHBhdGNoLCByZWxwYXRoKQorICAgICAgICBwYXRjaGRhdGEgPSBwYXRjaF9yZWNpcGVfZmlsZShmLCB2YWxzLCBwYXRjaCwgcmVscGF0aCwgcmVkaXJlY3Rfb3V0cHV0KQogICAgICAgICBpZiBwYXRjaDoKICAgICAgICAgICAgIHBhdGNoZXMuYXBwZW5kKHBhdGNoZGF0YSkKIApAQCAtMzk1LDcgKzQwOCw3IEBACiAgICAgIyBmZXRjaGVyKSB0aG91Z2ggbm90ZSB0aGF0IHRoaXMgb25seSBlbmNvbXBhc3NlcyBhY3R1YWwgY29udGFpbmVyIGZvcm1hdHMKICAgICAjIGkuZS4gdGhhdCBjYW4gY29udGFpbiBtdWx0aXBsZSBmaWxlcyBhcyBvcHBvc2VkIHRvIHRob3NlIHRoYXQgb25seQogICAgICMgY29udGFpbiBhIGNvbXByZXNzZWQgc3RyZWFtIChpLmUuIC50YXIuZ3ogYXMgb3Bwb3NlZCB0byBqdXN0IC5neikKLSAgICBhcmNoaXZlX2V4dHMgPSBbJy50YXInLCAnLnRneicsICcudGFyLmd6JywgJy50YXIuWicsICcudGJ6JywgJy50YnoyJywgJy50YXIuYnoyJywgJy50YXIueHonLCAnLnRhci5seicsICcuemlwJywgJy5qYXInLCAnLnJwbScsICcuc3JwbScsICcuZGViJywgJy5pcGsnLCAnLnRhci43eicsICcuN3onXQorICAgIGFyY2hpdmVfZXh0cyA9IFsnLnRhcicsICcudGd6JywgJy50YXIuZ3onLCAnLnRhci5aJywgJy50YnonLCAnLnRiejInLCAnLnRhci5iejInLCAnLnR4eicsICcudGFyLnh6JywgJy50YXIubHonLCAnLnppcCcsICcuamFyJywgJy5ycG0nLCAnLnNycG0nLCAnLmRlYicsICcuaXBrJywgJy50YXIuN3onLCAnLjd6J10KICAgICByZXQgPSB7fQogICAgIGZvciB1cmkgaW4gdXJpczoKICAgICAgICAgaWYgZmV0Y2gudWRbdXJpXS50eXBlID09ICdmaWxlJzoKQEAgLTU3NSw3ICs1ODgsNyBAQAogICAgIHJldHVybiAoYXBwZW5kcGF0aCwgcGF0aG9rKQogCiAKLWRlZiBiYmFwcGVuZF9yZWNpcGUocmQsIGRlc3RsYXllcmRpciwgc3JjZmlsZXMsIGluc3RhbGw9Tm9uZSwgd2lsZGNhcmR2ZXI9RmFsc2UsIG1hY2hpbmU9Tm9uZSwgZXh0cmFsaW5lcz1Ob25lLCByZW1vdmV2YWx1ZXM9Tm9uZSk6CitkZWYgYmJhcHBlbmRfcmVjaXBlKHJkLCBkZXN0bGF5ZXJkaXIsIHNyY2ZpbGVzLCBpbnN0YWxsPU5vbmUsIHdpbGRjYXJkdmVyPUZhbHNlLCBtYWNoaW5lPU5vbmUsIGV4dHJhbGluZXM9Tm9uZSwgcmVtb3ZldmFsdWVzPU5vbmUsIHJlZGlyZWN0X291dHB1dD1Ob25lKToKICAgICAiIiIKICAgICBXcml0ZXMgYSBiYmFwcGVuZCBmaWxlIGZvciBhIHJlY2lwZQogICAgIFBhcmFtZXRlcnM6CkBAIC02MDIsNiArNjE1LDkgQEAKICAgICAgICAgICAgIHZhbHVlIHBhaXJzLCBvciBzaW1wbHkgYSBsaXN0IG9mIHRoZSBsaW5lcy4KICAgICAgICAgcmVtb3ZldmFsdWVzOgogICAgICAgICAgICAgVmFyaWFibGUgdmFsdWVzIHRvIHJlbW92ZSAtIGEgZGljdCBvZiBuYW1lcy92YWx1ZXMuCisgICAgICAgIHJlZGlyZWN0X291dHB1dDoKKyAgICAgICAgICAgIElmIHNwZWNpZmllZCwgcmVkaXJlY3RzIHdyaXRpbmcgdGhlIG91dHB1dCBmaWxlIHRvIHRoZQorICAgICAgICAgICAgc3BlY2lmaWVkIGRpcmVjdG9yeSAoZm9yIGRyeS1ydW4gcHVycG9zZXMpCiAgICAgIiIiCiAKICAgICBpZiBub3QgcmVtb3ZldmFsdWVzOgpAQCAtNjE2LDcgKzYzMiw4IEBACiAgICAgICAgIGJiLndhcm4oJ1VuYWJsZSB0byBkZXRlcm1pbmUgY29ycmVjdCBzdWJkaXJlY3RvcnkgcGF0aCBmb3IgYmJhcHBlbmQgZmlsZSAtIGNoZWNrIHRoYXQgd2hhdCAlcyBhZGRzIHRvIEJCRklMRVMgYWxzbyBtYXRjaGVzIC5iYmFwcGVuZCBmaWxlcy4gVXNpbmcgJXMgZm9yIG5vdywgYnV0IHVudGlsIHlvdSBmaXggdGhpcyB0aGUgYmJhcHBlbmQgd2lsbCBub3QgYmUgYXBwbGllZC4nICUgKG9zLnBhdGguam9pbihkZXN0bGF5ZXJkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSwgb3MucGF0aC5kaXJuYW1lKGFwcGVuZHBhdGgpKSkKIAogICAgIGFwcGVuZGRpciA9IG9zLnBhdGguZGlybmFtZShhcHBlbmRwYXRoKQotICAgIGJiLnV0aWxzLm1rZGlyaGllcihhcHBlbmRkaXIpCisgICAgaWYgbm90IHJlZGlyZWN0X291dHB1dDoKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGFwcGVuZGRpcikKIAogICAgICMgRklYTUUgY2hlY2sgaWYgdGhlIGJiYXBwZW5kIGRvZXNuJ3QgZ2V0IG92ZXJyaWRkZW4gYnkgYSBoaWdoZXIgcHJpb3JpdHkgbGF5ZXI/CiAKQEAgLTY5Myw5ICs3MTAsMTggQEAKICAgICAgICAgaWYgaW5zdGZ1bmNsaW5lczoKICAgICAgICAgICAgIGJiYXBwZW5kbGluZXMuYXBwZW5kKCgnZG9faW5zdGFsbF9hcHBlbmQlcygpJyAlIGFwcGVuZG92ZXJyaWRlLCAnJywgaW5zdGZ1bmNsaW5lcykpCiAKLSAgICBiYi5ub3RlKCdXcml0aW5nIGFwcGVuZCBmaWxlICVzJyAlIGFwcGVuZHBhdGgpCisgICAgaWYgcmVkaXJlY3Rfb3V0cHV0OgorICAgICAgICBiYi5ub3RlKCdXcml0aW5nIGFwcGVuZCBmaWxlICVzIChkcnktcnVuKScgJSBhcHBlbmRwYXRoKQorICAgICAgICBvdXRmaWxlID0gb3MucGF0aC5qb2luKHJlZGlyZWN0X291dHB1dCwgb3MucGF0aC5iYXNlbmFtZShhcHBlbmRwYXRoKSkKKyAgICAgICAgIyBPbmx5IHRha2UgYSBjb3B5IGlmIHRoZSBmaWxlIGlzbid0IGFscmVhZHkgdGhlcmUgKHRoaXMgZnVuY3Rpb24gbWF5IGJlIGNhbGxlZAorICAgICAgICAjIG11bHRpcGxlIHRpbWVzIHBlciBvcGVyYXRpb24gd2hlbiB3ZSdyZSBoYW5kbGluZyBvdmVycmlkZXMpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGFwcGVuZHBhdGgpIGFuZCBub3Qgb3MucGF0aC5leGlzdHMob3V0ZmlsZSk6CisgICAgICAgICAgICBzaHV0aWwuY29weTIoYXBwZW5kcGF0aCwgb3V0ZmlsZSkKKyAgICBlbHNlOgorICAgICAgICBiYi5ub3RlKCdXcml0aW5nIGFwcGVuZCBmaWxlICVzJyAlIGFwcGVuZHBhdGgpCisgICAgICAgIG91dGZpbGUgPSBhcHBlbmRwYXRoCiAKLSAgICBpZiBvcy5wYXRoLmV4aXN0cyhhcHBlbmRwYXRoKToKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhvdXRmaWxlKToKICAgICAgICAgIyBXb3JrIGFyb3VuZCBsYWNrIG9mIG5vbmxvY2FsIGluIHB5dGhvbiAyCiAgICAgICAgIGV4dHZhcnMgPSB7J2Rlc3RzdWJkaXInOiBkZXN0c3ViZGlyfQogCkBAIC03NjcsNyArNzkzLDcgQEAKICAgICAgICAgaWYgcmVtb3ZldmFsdWVzOgogICAgICAgICAgICAgdmFybmFtZXMuZXh0ZW5kKGxpc3QocmVtb3ZldmFsdWVzLmtleXMoKSkpCiAKLSAgICAgICAgd2l0aCBvcGVuKGFwcGVuZHBhdGgsICdyJykgYXMgZjoKKyAgICAgICAgd2l0aCBvcGVuKG91dGZpbGUsICdyJykgYXMgZjoKICAgICAgICAgICAgICh1cGRhdGVkLCBuZXdsaW5lcykgPSBiYi51dGlscy5lZGl0X21ldGFkYXRhKGYsIHZhcm5hbWVzLCBhcHBlbmRmaWxlX3ZhcmZ1bmMpCiAKICAgICAgICAgZGVzdHN1YmRpciA9IGV4dHZhcnNbJ2Rlc3RzdWJkaXInXQpAQCAtNzg0LDIwICs4MTAsMjcgQEAKICAgICAgICAgdXBkYXRlZCA9IFRydWUKIAogICAgIGlmIHVwZGF0ZWQ6Ci0gICAgICAgIHdpdGggb3BlbihhcHBlbmRwYXRoLCAndycpIGFzIGY6CisgICAgICAgIHdpdGggb3BlbihvdXRmaWxlLCAndycpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlbGluZXMobmV3bGluZXMpCiAKICAgICBpZiBjb3B5ZmlsZXM6CiAgICAgICAgIGlmIG1hY2hpbmU6CiAgICAgICAgICAgICBkZXN0c3ViZGlyID0gb3MucGF0aC5qb2luKGRlc3RzdWJkaXIsIG1hY2hpbmUpCisgICAgICAgIGlmIHJlZGlyZWN0X291dHB1dDoKKyAgICAgICAgICAgIG91dGRpciA9IHJlZGlyZWN0X291dHB1dAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3V0ZGlyID0gYXBwZW5kZGlyCiAgICAgICAgIGZvciBuZXdmaWxlLCBzcmNmaWxlIGluIGNvcHlmaWxlcy5pdGVtcygpOgotICAgICAgICAgICAgZmlsZWRlc3QgPSBvcy5wYXRoLmpvaW4oYXBwZW5kZGlyLCBkZXN0c3ViZGlyLCBvcy5wYXRoLmJhc2VuYW1lKHNyY2ZpbGUpKQorICAgICAgICAgICAgZmlsZWRlc3QgPSBvcy5wYXRoLmpvaW4ob3V0ZGlyLCBkZXN0c3ViZGlyLCBvcy5wYXRoLmJhc2VuYW1lKHNyY2ZpbGUpKQogICAgICAgICAgICAgaWYgb3MucGF0aC5hYnNwYXRoKG5ld2ZpbGUpICE9IG9zLnBhdGguYWJzcGF0aChmaWxlZGVzdCk6CiAgICAgICAgICAgICAgICAgaWYgbmV3ZmlsZS5zdGFydHN3aXRoKHRlbXBmaWxlLmdldHRlbXBkaXIoKSk6CiAgICAgICAgICAgICAgICAgICAgIG5ld2ZpbGVkaXNwID0gb3MucGF0aC5iYXNlbmFtZShuZXdmaWxlKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIG5ld2ZpbGVkaXNwID0gbmV3ZmlsZQotICAgICAgICAgICAgICAgIGJiLm5vdGUoJ0NvcHlpbmcgJXMgdG8gJXMnICUgKG5ld2ZpbGVkaXNwLCBmaWxlZGVzdCkpCisgICAgICAgICAgICAgICAgaWYgcmVkaXJlY3Rfb3V0cHV0OgorICAgICAgICAgICAgICAgICAgICBiYi5ub3RlKCdDb3B5aW5nICVzIHRvICVzIChkcnktcnVuKScgJSAobmV3ZmlsZWRpc3AsIG9zLnBhdGguam9pbihhcHBlbmRkaXIsIGRlc3RzdWJkaXIsIG9zLnBhdGguYmFzZW5hbWUoc3JjZmlsZSkpKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBiYi5ub3RlKCdDb3B5aW5nICVzIHRvICVzJyAlIChuZXdmaWxlZGlzcCwgZmlsZWRlc3QpKQogICAgICAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUoZmlsZWRlc3QpKQogICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShuZXdmaWxlLCBmaWxlZGVzdCkKIApAQCAtODY3LDI1ICs5MDAsMjUgQEAKICAgICAgICAgICAgIEZldGNoRXJyb3Igd2hlbiBkb24ndCBoYXZlIG5ldHdvcmsgYWNjZXNzIG9yIHVwc3RyZWFtIHNpdGUgZG9uJ3QgcmVzcG9uc2UuCiAgICAgICAgICAgICBOb01ldGhvZEVycm9yIHdoZW4gdXJpIGxhdGVzdF92ZXJzaW9uc3RyaW5nIG1ldGhvZCBpc24ndCBpbXBsZW1lbnRlZC4KIAotICAgICAgICBSZXR1cm5zIGEgZGljdG9uYXJ5IHdpdGggdmVyc2lvbiwgdHlwZSBhbmQgZGF0ZXRpbWUuCisgICAgICAgIFJldHVybnMgYSBkaWN0b25hcnkgd2l0aCB2ZXJzaW9uLCByZXBvc2l0b3J5IHJldmlzaW9uLCBjdXJyZW50X3ZlcnNpb24sIHR5cGUgYW5kIGRhdGV0aW1lLgogICAgICAgICBUeXBlIGNhbiBiZSBBIGZvciBBdXRvbWF0aWMsIE0gZm9yIE1hbnVhbCBhbmQgVSBmb3IgVW5rbm93bi4KICAgICAiIiIKICAgICBmcm9tIGJiLmZldGNoMiBpbXBvcnQgZGVjb2RldXJsCiAgICAgZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKIAogICAgIHJ1ID0ge30KKyAgICBydVsnY3VycmVudF92ZXJzaW9uJ10gPSByZC5nZXRWYXIoJ1BWJykKICAgICBydVsndmVyc2lvbiddID0gJycKICAgICBydVsndHlwZSddID0gJ1UnCiAgICAgcnVbJ2RhdGV0aW1lJ10gPSAnJwotCi0gICAgcHYgPSByZC5nZXRWYXIoJ1BWJykKKyAgICBydVsncmV2aXNpb24nXSA9ICcnCiAKICAgICAjIFhYWDogSWYgZG9uJ3QgaGF2ZSBTUkNfVVJJIG1lYW5zIHRoYXQgZG9uJ3QgaGF2ZSB1cHN0cmVhbSBzb3VyY2VzIHNvCiAgICAgIyByZXR1cm5zIHRoZSBjdXJyZW50IHJlY2lwZSB2ZXJzaW9uLCBzbyB0aGF0IHVwc3RyZWFtIHZlcnNpb24gY2hlY2sKICAgICAjIGRlY2xhcmVzIGEgbWF0Y2guCiAgICAgc3JjX3VyaXMgPSByZC5nZXRWYXIoJ1NSQ19VUkknKQogICAgIGlmIG5vdCBzcmNfdXJpczoKLSAgICAgICAgcnVbJ3ZlcnNpb24nXSA9IHB2CisgICAgICAgIHJ1Wyd2ZXJzaW9uJ10gPSBydVsnY3VycmVudF92ZXJzaW9uJ10KICAgICAgICAgcnVbJ3R5cGUnXSA9ICdNJwogICAgICAgICBydVsnZGF0ZXRpbWUnXSA9IGRhdGV0aW1lLm5vdygpCiAgICAgICAgIHJldHVybiBydQpAQCAtODk0LDYgKzkyNyw5IEBACiAgICAgc3JjX3VyaSA9IHNyY191cmlzLnNwbGl0KClbMF0KICAgICB1cmlfdHlwZSwgXywgXywgXywgXywgXyA9ICBkZWNvZGV1cmwoc3JjX3VyaSkKIAorICAgIChwdiwgcGZ4LCBzZngpID0gZ2V0X3JlY2lwZV9wdl93aXRob3V0X3NyY3B2KHJkLmdldFZhcignUFYnKSwgdXJpX3R5cGUpCisgICAgcnVbJ2N1cnJlbnRfdmVyc2lvbiddID0gcHYKKwogICAgIG1hbnVhbF91cHN0cmVhbV92ZXJzaW9uID0gcmQuZ2V0VmFyKCJSRUNJUEVfVVBTVFJFQU1fVkVSU0lPTiIpCiAgICAgaWYgbWFudWFsX3Vwc3RyZWFtX3ZlcnNpb246CiAgICAgICAgICMgbWFudWFsIHRyYWNraW5nIG9mIHVwc3RyZWFtIHZlcnNpb24uCkBAIC05MTQsMzMgKzk1MCwyMiBAQAogICAgICAgICBydVsnZGF0ZXRpbWUnXSA9IGRhdGV0aW1lLm5vdygpCiAgICAgZWxzZToKICAgICAgICAgdWQgPSBiYi5mZXRjaDIuRmV0Y2hEYXRhKHNyY191cmksIHJkKQotICAgICAgICBwdXB2ZXIgPSB1ZC5tZXRob2QubGF0ZXN0X3ZlcnNpb25zdHJpbmcodWQsIHJkKQotICAgICAgICAodXB2ZXJzaW9uLCByZXZpc2lvbikgPSBwdXB2ZXIKLQotICAgICAgICAjIGZvcm1hdCBnaXQgdmVyc2lvbiB2ZXJzaW9uK2dpdEFVVE9JTkMrSEFTSAotICAgICAgICBpZiB1cmlfdHlwZSA9PSAnZ2l0JzoKLSAgICAgICAgICAgIChwdiwgcGZ4LCBzZngpID0gZ2V0X3JlY2lwZV9wdl93aXRob3V0X3NyY3B2KHB2LCB1cmlfdHlwZSkKLQotICAgICAgICAgICAgIyBpZiBjb250YWlucyByZXZpc2lvbiBidXQgbm90IHVwdmVyc2lvbiB1c2UgY3VycmVudCBwdgotICAgICAgICAgICAgaWYgdXB2ZXJzaW9uID09ICcnIGFuZCByZXZpc2lvbjoKLSAgICAgICAgICAgICAgICB1cHZlcnNpb24gPSBwdgotCi0gICAgICAgICAgICBpZiB1cHZlcnNpb246Ci0gICAgICAgICAgICAgICAgdG1wID0gdXB2ZXJzaW9uCi0gICAgICAgICAgICAgICAgdXB2ZXJzaW9uID0gJycKLQotICAgICAgICAgICAgICAgIGlmIHBmeDoKLSAgICAgICAgICAgICAgICAgICAgdXB2ZXJzaW9uID0gcGZ4ICsgdG1wCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdXB2ZXJzaW9uID0gdG1wCi0KLSAgICAgICAgICAgICAgICBpZiBzZng6Ci0gICAgICAgICAgICAgICAgICAgIHVwdmVyc2lvbiA9IHVwdmVyc2lvbiArIHNmeCArIHJldmlzaW9uWzoxMF0KKyAgICAgICAgaWYgcmQuZ2V0VmFyKCJVUFNUUkVBTV9DSEVDS19DT01NSVRTIikgPT0gIjEiOgorICAgICAgICAgICAgcmV2aXNpb24gPSB1ZC5tZXRob2QubGF0ZXN0X3JldmlzaW9uKHVkLCByZCwgJ2RlZmF1bHQnKQorICAgICAgICAgICAgdXB2ZXJzaW9uID0gcHYKKyAgICAgICAgICAgIGlmIHJldmlzaW9uICE9IHJkLmdldFZhcigiU1JDUkVWIik6CisgICAgICAgICAgICAgICAgdXB2ZXJzaW9uID0gdXB2ZXJzaW9uICsgIi1uZXctY29tbWl0cy1hdmFpbGFibGUiIAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHVwdmVyID0gdWQubWV0aG9kLmxhdGVzdF92ZXJzaW9uc3RyaW5nKHVkLCByZCkKKyAgICAgICAgICAgICh1cHZlcnNpb24sIHJldmlzaW9uKSA9IHB1cHZlcgogCiAgICAgICAgIGlmIHVwdmVyc2lvbjoKICAgICAgICAgICAgIHJ1Wyd2ZXJzaW9uJ10gPSB1cHZlcnNpb24KICAgICAgICAgICAgIHJ1Wyd0eXBlJ10gPSAnQScKIAorICAgICAgICBpZiByZXZpc2lvbjoKKyAgICAgICAgICAgIHJ1WydyZXZpc2lvbiddID0gcmV2aXNpb24KKwogICAgICAgICBydVsnZGF0ZXRpbWUnXSA9IGRhdGV0aW1lLm5vdygpCiAKICAgICByZXR1cm4gcnUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9yb290ZnMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvcm9vdGZzLnB5CmluZGV4IDc1NGVmNTYuLmY4ZjcxN2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9yb290ZnMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Jvb3Rmcy5weQpAQCAtOTIsMTAgKzkyLDYgQEAKICAgICAgICAgICAgICAgICBzZWxmLmQuZ2V0VmFyKCdQQUNLQUdFX0ZFRURfQVJDSFMnKSkKIAogCi0gICAgQGFic3RyYWN0bWV0aG9kCi0gICAgZGVmIF9oYW5kbGVfaW50ZXJjZXB0X2ZhaWx1cmUoc2VsZiwgZmFpbGVkX3NjcmlwdCk6Ci0gICAgICAgIHBhc3MKLQogICAgICIiIgogICAgIFRoZSBfY2xlYW51cCgpIG1ldGhvZCBzaG91bGQgYmUgdXNlZCB0byBjbGVhbi11cCBzdHVmZiB0aGF0IHdlIGRvbid0IHJlYWxseQogICAgIHdhbnQgdG8gZW5kIHVwIG9uIHRhcmdldC4gRm9yIGV4YW1wbGUsIGluIHRoZSBjYXNlIG9mIFJQTSwgdGhlIERCIGxvY2tzLgpAQCAtMTc4LDIwICsxNzQsMTAgQEAKICAgICAgICAgcG9zdF9wcm9jZXNzX2NtZHMgPSBzZWxmLmQuZ2V0VmFyKCJST09URlNfUE9TVFBST0NFU1NfQ09NTUFORCIpCiAgICAgICAgIHJvb3Rmc19wb3N0X2luc3RhbGxfY21kcyA9IHNlbGYuZC5nZXRWYXIoJ1JPT1RGU19QT1NUSU5TVEFMTF9DT01NQU5EJykKIAotICAgICAgICBwb3N0aW5zdF9pbnRlcmNlcHRzX2RpciA9IHNlbGYuZC5nZXRWYXIoIlBPU1RJTlNUX0lOVEVSQ0VQVFNfRElSIikKLSAgICAgICAgaWYgbm90IHBvc3RpbnN0X2ludGVyY2VwdHNfZGlyOgotICAgICAgICAgICAgcG9zdGluc3RfaW50ZXJjZXB0c19kaXIgPSBzZWxmLmQuZXhwYW5kKCIke0NPUkVCQVNFfS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMiKQotICAgICAgICBpbnRlcmNlcHRzX2RpciA9IG9zLnBhdGguam9pbihzZWxmLmQuZ2V0VmFyKCdXT1JLRElSJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcmNlcHRfc2NyaXB0cyIpCi0KLSAgICAgICAgYmIudXRpbHMucmVtb3ZlKGludGVyY2VwdHNfZGlyLCBUcnVlKQotCiAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzZWxmLmltYWdlX3Jvb3RmcykKIAogICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoc2VsZi5kZXBsb3lkaXIpCiAKLSAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHBvc3RpbnN0X2ludGVyY2VwdHNfZGlyLCBpbnRlcmNlcHRzX2RpcikKLQogICAgICAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3Moc2VsZi5kLCBwcmVfcHJvY2Vzc19jbWRzKQogCiAgICAgICAgIGlmIHNlbGYucHJvZ3Jlc3NfcmVwb3J0ZXI6CkBAIC0yMDcsNyArMTkzLDcgQEAKIAogICAgICAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3Moc2VsZi5kLCByb290ZnNfcG9zdF9pbnN0YWxsX2NtZHMpCiAKLSAgICAgICAgc2VsZi5fcnVuX2ludGVyY2VwdHMoKQorICAgICAgICBzZWxmLnBtLnJ1bl9pbnRlcmNlcHRzKCkKIAogICAgICAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3Moc2VsZi5kLCBwb3N0X3Byb2Nlc3NfY21kcykKIApAQCAtMjkzLDQ0ICsyNzksNiBAQAogICAgICAgICAgICAgIyBSZW1vdmUgdGhlIHBhY2thZ2UgbWFuYWdlciBkYXRhIGZpbGVzCiAgICAgICAgICAgICBzZWxmLnBtLnJlbW92ZV9wYWNrYWdpbmdfZGF0YSgpCiAKLSAgICBkZWYgX3J1bl9pbnRlcmNlcHRzKHNlbGYpOgotICAgICAgICBpbnRlcmNlcHRzX2RpciA9IG9zLnBhdGguam9pbihzZWxmLmQuZ2V0VmFyKCdXT1JLRElSJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcmNlcHRfc2NyaXB0cyIpCi0KLSAgICAgICAgYmIubm90ZSgiUnVubmluZyBpbnRlcmNlcHQgc2NyaXB0czoiKQotICAgICAgICBvcy5lbnZpcm9uWydEJ10gPSBzZWxmLmltYWdlX3Jvb3RmcwotICAgICAgICBvcy5lbnZpcm9uWydTVEFHSU5HX0RJUl9OQVRJVkUnXSA9IHNlbGYuZC5nZXRWYXIoJ1NUQUdJTkdfRElSX05BVElWRScpCi0gICAgICAgIGZvciBzY3JpcHQgaW4gb3MubGlzdGRpcihpbnRlcmNlcHRzX2Rpcik6Ci0gICAgICAgICAgICBzY3JpcHRfZnVsbCA9IG9zLnBhdGguam9pbihpbnRlcmNlcHRzX2Rpciwgc2NyaXB0KQotCi0gICAgICAgICAgICBpZiBzY3JpcHQgPT0gInBvc3RpbnN0X2ludGVyY2VwdCIgb3Igbm90IG9zLmFjY2VzcyhzY3JpcHRfZnVsbCwgb3MuWF9PSyk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgYmIubm90ZSgiPiBFeGVjdXRpbmcgJXMgaW50ZXJjZXB0IC4uLiIgJSBzY3JpcHQpCi0KLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChzY3JpcHRfZnVsbCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQotICAgICAgICAgICAgICAgIGlmIG91dHB1dDogYmIubm90ZShvdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKQotICAgICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgYmIud2FybigiVGhlIHBvc3RpbnN0YWxsIGludGVyY2VwdCBob29rICclcycgZmFpbGVkLCBkZXRhaWxzIGluIGxvZy5kb19yb290ZnMiICUgc2NyaXB0KQotICAgICAgICAgICAgICAgIGJiLm5vdGUoIkV4aXQgY29kZSAlZC4gT3V0cHV0OlxuJXMiICUgKGUucmV0dXJuY29kZSwgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKLQotICAgICAgICAgICAgICAgIHdpdGggb3BlbihzY3JpcHRfZnVsbCkgYXMgaW50ZXJjZXB0OgotICAgICAgICAgICAgICAgICAgICByZWdpc3RlcmVkX3BrZ3MgPSBOb25lCi0gICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGludGVyY2VwdC5yZWFkKCkuc3BsaXQoIlxuIik6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtID0gcmUubWF0Y2goIl4jI1BLR1M6KC4qKSIsIGxpbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBtIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfcGtncyA9IG0uZ3JvdXAoMSkuc3RyaXAoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgICAgICAgICAgICAgaWYgcmVnaXN0ZXJlZF9wa2dzIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgYmIud2FybigiVGhlIHBvc3RpbnN0YWxscyBmb3IgdGhlIGZvbGxvd2luZyBwYWNrYWdlcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWxsIGJlIHBvc3Rwb25lZCBmb3IgZmlyc3QgYm9vdDogJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZF9wa2dzKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGNhbGwgdGhlIGJhY2tlbmQgZGVwZW5kZW50IGhhbmRsZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9pbnRlcmNlcHRfZmFpbHVyZShyZWdpc3RlcmVkX3BrZ3MpCi0KICAgICBkZWYgX3J1bl9sZGNvbmZpZyhzZWxmKToKICAgICAgICAgaWYgc2VsZi5kLmdldFZhcignTERDT05GSUdERVBFTkQnKToKICAgICAgICAgICAgIGJiLm5vdGUoIkV4ZWN1dGluZzogbGRjb25maWcgLXIiICsgc2VsZi5pbWFnZV9yb290ZnMgKyAiLWMgbmV3IC12IikKQEAgLTUyMywxNCArNDcxLDYgQEAKICAgICAgICAgc2VsZi5fbG9nX2NoZWNrX3dhcm4oKQogICAgICAgICBzZWxmLl9sb2dfY2hlY2tfZXJyb3IoKQogCi0gICAgZGVmIF9oYW5kbGVfaW50ZXJjZXB0X2ZhaWx1cmUoc2VsZiwgcmVnaXN0ZXJlZF9wa2dzKToKLSAgICAgICAgcnBtX3Bvc3RpbnN0c19kaXIgPSBzZWxmLmltYWdlX3Jvb3RmcyArIHNlbGYuZC5leHBhbmQoJyR7c3lzY29uZmRpcn0vcnBtLXBvc3RpbnN0cy8nKQotICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIocnBtX3Bvc3RpbnN0c19kaXIpCi0KLSAgICAgICAgIyBTYXZlIHRoZSBwYWNrYWdlIHBvc3RpbnN0YWxscyBpbiAvZXRjL3JwbS1wb3N0aW5zdHMKLSAgICAgICAgZm9yIHBrZyBpbiByZWdpc3RlcmVkX3BrZ3Muc3BsaXQoKToKLSAgICAgICAgICAgIHNlbGYucG0uc2F2ZV9ycG1wb3N0aW5zdChwa2cpCi0KICAgICBkZWYgX2NsZWFudXAoc2VsZik6CiAgICAgICAgIHNlbGYucG0uX2ludm9rZV9kbmYoWyJjbGVhbiIsICJhbGwiXSkKIApAQCAtNzExLDkgKzY1MSw2IEBACiAgICAgICAgIHNyY19wb3N0aW5zdF9kaXIgPSBzZWxmLmQuZXhwYW5kKCIke0lNQUdFX1JPT1RGU30vdmFyL2xpYi9kcGtnL2luZm8iKQogICAgICAgICByZXR1cm4gc2VsZi5fc2F2ZV9wb3N0aW5zdHNfY29tbW9uKGRzdF9wb3N0aW5zdF9kaXIsIHNyY19wb3N0aW5zdF9kaXIpCiAKLSAgICBkZWYgX2hhbmRsZV9pbnRlcmNlcHRfZmFpbHVyZShzZWxmLCByZWdpc3RlcmVkX3BrZ3MpOgotICAgICAgICBzZWxmLnBtLm1hcmtfcGFja2FnZXMoInVucGFja2VkIiwgcmVnaXN0ZXJlZF9wa2dzLnNwbGl0KCkpCi0KICAgICBkZWYgX2xvZ19jaGVjayhzZWxmKToKICAgICAgICAgc2VsZi5fbG9nX2NoZWNrX3dhcm4oKQogICAgICAgICBzZWxmLl9sb2dfY2hlY2tfZXJyb3IoKQpAQCAtOTgyLDkgKzkxOSw2IEBACiAgICAgICAgIHNyY19wb3N0aW5zdF9kaXIgPSBzZWxmLmQuZXhwYW5kKCIke0lNQUdFX1JPT1RGU30ke09QS0dMSUJESVJ9L29wa2cvaW5mbyIpCiAgICAgICAgIHJldHVybiBzZWxmLl9zYXZlX3Bvc3RpbnN0c19jb21tb24oZHN0X3Bvc3RpbnN0X2Rpciwgc3JjX3Bvc3RpbnN0X2RpcikKIAotICAgIGRlZiBfaGFuZGxlX2ludGVyY2VwdF9mYWlsdXJlKHNlbGYsIHJlZ2lzdGVyZWRfcGtncyk6Ci0gICAgICAgIHNlbGYucG0ubWFya19wYWNrYWdlcygidW5wYWNrZWQiLCByZWdpc3RlcmVkX3BrZ3Muc3BsaXQoKSkKLQogICAgIGRlZiBfbG9nX2NoZWNrKHNlbGYpOgogICAgICAgICBzZWxmLl9sb2dfY2hlY2tfd2FybigpCiAgICAgICAgIHNlbGYuX2xvZ19jaGVja19lcnJvcigpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvc2RrLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Nkay5weQppbmRleCA3ZjcxY2ZiLi5kNmE1MDMzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvc2RrLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9zZGsucHkKQEAgLTE2Miw0MCArMTYyLDIxIEBACiAgICAgICAgIHNlbGYuaG9zdF9tYW5pZmVzdCA9IFJwbU1hbmlmZXN0KGQsIHNlbGYubWFuaWZlc3RfZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW5pZmVzdC5NQU5JRkVTVF9UWVBFX1NES19IT1NUKQogCi0gICAgICAgIHRhcmdldF9wcm92aWRlbmFtZSA9IFsnL2Jpbi9zaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL2Jpbi9iYXNoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvdXNyL2Jpbi9lbnYnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy91c3IvYmluL3BlcmwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BrZ2NvbmZpZycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KLQogICAgICAgICBycG1fcmVwb193b3JrZGlyID0gIm9lLXNkay1yZXBvIgogICAgICAgICBpZiAic2RrX2V4dCIgaW4gZC5nZXRWYXIoIkJCX1JVTlRBU0siKToKICAgICAgICAgICAgIHJwbV9yZXBvX3dvcmtkaXIgPSAib2Utc2RrLWV4dC1yZXBvIgogCi0KICAgICAgICAgc2VsZi50YXJnZXRfcG0gPSBScG1QTShkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2RrX3RhcmdldF9zeXNyb290LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZC5nZXRWYXIoJ1RBUkdFVF9WRU5ET1InKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGFyZ2V0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfcHJvdmlkZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnBtX3JlcG9fd29ya2Rpcj1ycG1fcmVwb193b3JrZGlyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogCi0gICAgICAgIHNka19wcm92aWRlbmFtZSA9IFsnL2Jpbi9zaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnL2Jpbi9iYXNoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICcvdXNyL2Jpbi9lbnYnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJy91c3IvYmluL3BlcmwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BrZ2NvbmZpZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnbGliR0wuc28oKSg2NGJpdCknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xpYkdMLnNvJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgXQotCiAgICAgICAgIHNlbGYuaG9zdF9wbSA9IFJwbVBNKGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2RrX2hvc3Rfc3lzcm9vdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kLmdldFZhcignU0RLX1ZFTkRPUicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaG9zdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNka19wcm92aWRlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNES19QQUNLQUdFX0FSQ0hTIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNES19PUyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJwbV9yZXBvX3dvcmtkaXI9cnBtX3JlcG9fd29ya2RpcgpAQCAtMjI4LDYgKzIwOSw4IEBACiAKICAgICAgICAgc2VsZi50YXJnZXRfcG0uaW5zdGFsbF9jb21wbGVtZW50YXJ5KHNlbGYuZC5nZXRWYXIoJ1NES0lNQUdFX0lOU1RBTExfQ09NUExFTUVOVEFSWScpKQogCisgICAgICAgIHNlbGYudGFyZ2V0X3BtLnJ1bl9pbnRlcmNlcHRzKCkKKwogICAgICAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3Moc2VsZi5kLCBzZWxmLmQuZ2V0VmFyKCJQT1BVTEFURV9TREtfUE9TVF9UQVJHRVRfQ09NTUFORCIpKQogCiAgICAgICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucygiU0RLSU1BR0VfRkVBVFVSRVMiLCAicGFja2FnZS1tYW5hZ2VtZW50IiwgVHJ1ZSwgRmFsc2UsIHNlbGYuZCk6CkBAIC0yMzcsNiArMjIwLDggQEAKICAgICAgICAgc2VsZi5fcG9wdWxhdGVfc3lzcm9vdChzZWxmLmhvc3RfcG0sIHNlbGYuaG9zdF9tYW5pZmVzdCkKICAgICAgICAgc2VsZi5pbnN0YWxsX2xvY2FsZXMoc2VsZi5ob3N0X3BtKQogCisgICAgICAgIHNlbGYuaG9zdF9wbS5ydW5faW50ZXJjZXB0cygpCisKICAgICAgICAgZXhlY3V0ZV9wcmVfcG9zdF9wcm9jZXNzKHNlbGYuZCwgc2VsZi5kLmdldFZhcigiUE9QVUxBVEVfU0RLX1BPU1RfSE9TVF9DT01NQU5EIikpCiAKICAgICAgICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zKCJTREtJTUFHRV9GRUFUVVJFUyIsICJwYWNrYWdlLW1hbmFnZW1lbnQiLCBUcnVlLCBGYWxzZSwgc2VsZi5kKToKQEAgLTMxMiw2ICsyOTcsOCBAQAogCiAgICAgICAgIHNlbGYudGFyZ2V0X3BtLmluc3RhbGxfY29tcGxlbWVudGFyeShzZWxmLmQuZ2V0VmFyKCdTREtJTUFHRV9JTlNUQUxMX0NPTVBMRU1FTlRBUlknKSkKIAorICAgICAgICBzZWxmLnRhcmdldF9wbS5ydW5faW50ZXJjZXB0cygpCisKICAgICAgICAgZXhlY3V0ZV9wcmVfcG9zdF9wcm9jZXNzKHNlbGYuZCwgc2VsZi5kLmdldFZhcigiUE9QVUxBVEVfU0RLX1BPU1RfVEFSR0VUX0NPTU1BTkQiKSkKIAogICAgICAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoIlNES0lNQUdFX0ZFQVRVUkVTIiwgInBhY2thZ2UtbWFuYWdlbWVudCIsIFRydWUsIEZhbHNlLCBzZWxmLmQpOgpAQCAtMzIxLDYgKzMwOCw4IEBACiAgICAgICAgIHNlbGYuX3BvcHVsYXRlX3N5c3Jvb3Qoc2VsZi5ob3N0X3BtLCBzZWxmLmhvc3RfbWFuaWZlc3QpCiAgICAgICAgIHNlbGYuaW5zdGFsbF9sb2NhbGVzKHNlbGYuaG9zdF9wbSkKIAorICAgICAgICBzZWxmLmhvc3RfcG0ucnVuX2ludGVyY2VwdHMoKQorCiAgICAgICAgIGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcyhzZWxmLmQsIHNlbGYuZC5nZXRWYXIoIlBPUFVMQVRFX1NES19QT1NUX0hPU1RfQ09NTUFORCIpKQogCiAgICAgICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucygiU0RLSU1BR0VfRkVBVFVSRVMiLCAicGFja2FnZS1tYW5hZ2VtZW50IiwgVHJ1ZSwgRmFsc2UsIHNlbGYuZCk6CkBAIC0zOTcsNiArMzg2LDggQEAKIAogICAgICAgICBzZWxmLnRhcmdldF9wbS5pbnN0YWxsX2NvbXBsZW1lbnRhcnkoc2VsZi5kLmdldFZhcignU0RLSU1BR0VfSU5TVEFMTF9DT01QTEVNRU5UQVJZJykpCiAKKyAgICAgICAgc2VsZi50YXJnZXRfcG0ucnVuX2ludGVyY2VwdHMoKQorCiAgICAgICAgIGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcyhzZWxmLmQsIHNlbGYuZC5nZXRWYXIoIlBPUFVMQVRFX1NES19QT1NUX1RBUkdFVF9DT01NQU5EIikpCiAKICAgICAgICAgc2VsZi5fY29weV9hcHRfZGlyX3RvKG9zLnBhdGguam9pbihzZWxmLnNka190YXJnZXRfc3lzcm9vdCwgImV0YyIsICJhcHQiKSkKQEAgLTQwOCw2ICszOTksOCBAQAogICAgICAgICBzZWxmLl9wb3B1bGF0ZV9zeXNyb290KHNlbGYuaG9zdF9wbSwgc2VsZi5ob3N0X21hbmlmZXN0KQogICAgICAgICBzZWxmLmluc3RhbGxfbG9jYWxlcyhzZWxmLmhvc3RfcG0pCiAKKyAgICAgICAgc2VsZi5ob3N0X3BtLnJ1bl9pbnRlcmNlcHRzKCkKKwogICAgICAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3Moc2VsZi5kLCBzZWxmLmQuZ2V0VmFyKCJQT1BVTEFURV9TREtfUE9TVF9IT1NUX0NPTU1BTkQiKSkKIAogICAgICAgICBzZWxmLl9jb3B5X2FwdF9kaXJfdG8ob3MucGF0aC5qb2luKHNlbGYuc2RrX291dHB1dCwgc2VsZi5zZGtfbmF0aXZlX3BhdGgsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvc3N0YXRlc2lnLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3NzdGF0ZXNpZy5weQppbmRleCAzYTg3NzhlLi5iODJlMGY0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvc3N0YXRlc2lnLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9zc3RhdGVzaWcucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgYmIuc2lnZ2VuCitpbXBvcnQgb2UKIAogZGVmIHNzdGF0ZV9ydW5kZXBmaWx0ZXIoc2lnZ2VuLCBmbiwgcmVjaXBlbmFtZSwgdGFzaywgZGVwLCBkZXBuYW1lLCBkYXRhQ2FjaGUpOgogICAgICMgUmV0dXJuIFRydWUgaWYgd2Ugc2hvdWxkIGtlZXAgdGhlIGRlcGVuZGVuY3ksIEZhbHNlIHRvIGRyb3AgaXQKQEAgLTI4LDE1ICsyOSwxNCBAQAogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICAjIFF1aWx0IChwYXRjaCBhcHBsaWNhdGlvbikgY2hhbmdpbmcgaXNuJ3QgbGlrZWx5IHRvIGFmZmVjdCBhbnl0aGluZwotICAgIGV4Y2x1ZGVsaXN0ID0gWydxdWlsdC1uYXRpdmUnLCAnc3VidmVyc2lvbi1uYXRpdmUnLCAnZ2l0LW5hdGl2ZScsICdjY2FjaGUtbmF0aXZlJ10KLSAgICBpZiBkZXBuYW1lIGluIGV4Y2x1ZGVsaXN0IGFuZCByZWNpcGVuYW1lICE9IGRlcG5hbWU6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCiAgICAgIyBFeGNsdWRlIHdlbGwgZGVmaW5lZCByZWNpcGUtPmRlcGVuZGVuY3kKICAgICBpZiAiJXMtPiVzIiAlIChyZWNpcGVuYW1lLCBkZXBuYW1lKSBpbiBzaWdnZW4uc2FmZXJlY2lwZWRlcHM6CiAgICAgICAgIHJldHVybiBGYWxzZQogCisgICAgIyBDaGVjayBmb3Igc3BlY2lhbCB3aWxkY2FyZAorICAgIGlmICIqLT4lcyIgJSBkZXBuYW1lIGluIHNpZ2dlbi5zYWZlcmVjaXBlZGVwcyBhbmQgcmVjaXBlbmFtZSAhPSBkZXBuYW1lOgorICAgICAgICByZXR1cm4gRmFsc2UKKwogICAgICMgRG9uJ3QgY2hhbmdlIG5hdGl2ZS9jcm9zcy9uYXRpdmVzZGsgcmVjaXBlIGRlcGVuZGVuY2llcyBhbnkgZnVydGhlcgogICAgIGlmIGlzTmF0aXZlKHJlY2lwZW5hbWUpIG9yIGlzQ3Jvc3MocmVjaXBlbmFtZSkgb3IgaXNOYXRpdmVTREsocmVjaXBlbmFtZSk6CiAgICAgICAgIHJldHVybiBUcnVlCkBAIC0zNjgsMyArMzY4LDM3IEBACiAgICAgaWYgZXh0cmFpbmY6CiAgICAgICAgIGQyLnNldFZhcigiU1NUQVRFX01BTk1BQ0giLCBleHRyYWluZikKICAgICByZXR1cm4gKGQyLmV4cGFuZCgiJHtTU1RBVEVfTUFORklMRVBSRUZJWH0uJXMiICUgdGFzayksIGQyKQorCitkZWYgZmluZF9zc3RhdGVfbWFuaWZlc3QodGFza2RhdGEsIHRhc2tkYXRhMiwgdGFza25hbWUsIGQsIG11bHRpbGliY2FjaGUpOgorICAgIGQyID0gZAorICAgIHZhcmlhbnQgPSAnJworICAgIGlmIHRhc2tkYXRhMi5zdGFydHN3aXRoKCJ2aXJ0dWFsOm11bHRpbGliIik6CisgICAgICAgIHZhcmlhbnQgPSB0YXNrZGF0YTIuc3BsaXQoIjoiKVsyXQorICAgICAgICBpZiB2YXJpYW50IG5vdCBpbiBtdWx0aWxpYmNhY2hlOgorICAgICAgICAgICAgbXVsdGlsaWJjYWNoZVt2YXJpYW50XSA9IG9lLnV0aWxzLmdldF9tdWx0aWxpYl9kYXRhc3RvcmUodmFyaWFudCwgZCkKKyAgICAgICAgZDIgPSBtdWx0aWxpYmNhY2hlW3ZhcmlhbnRdCisKKyAgICBpZiB0YXNrZGF0YS5lbmRzd2l0aCgiLW5hdGl2ZSIpOgorICAgICAgICBwa2dhcmNocyA9IFsiJHtCVUlMRF9BUkNIfSJdCisgICAgZWxpZiB0YXNrZGF0YS5zdGFydHN3aXRoKCJuYXRpdmVzZGstIik6CisgICAgICAgIHBrZ2FyY2hzID0gWyIke1NES19BUkNIfV8ke1NES19PU30iLCAiYWxsYXJjaCJdCisgICAgZWxpZiAiLWNyb3NzLWNhbmFkaWFuIiBpbiB0YXNrZGF0YToKKyAgICAgICAgcGtnYXJjaHMgPSBbIiR7U0RLX0FSQ0h9XyR7U0RLX0FSQ0h9LSR7U0RLUEtHU1VGRklYfSJdCisgICAgZWxpZiAiLWNyb3NzLSIgaW4gdGFza2RhdGE6CisgICAgICAgIHBrZ2FyY2hzID0gWyIke0JVSUxEX0FSQ0h9XyR7VEFSR0VUX0FSQ0h9Il0KKyAgICBlbGlmICItY3Jvc3NzZGsiIGluIHRhc2tkYXRhOgorICAgICAgICBwa2dhcmNocyA9IFsiJHtCVUlMRF9BUkNIfV8ke1NES19BUkNIfV8ke1NES19PU30iXQorICAgIGVsc2U6CisgICAgICAgIHBrZ2FyY2hzID0gWycke01BQ0hJTkVfQVJDSH0nXQorICAgICAgICBwa2dhcmNocyA9IHBrZ2FyY2hzICsgbGlzdChyZXZlcnNlZChkMi5nZXRWYXIoIlBBQ0tBR0VfRVhUUkFfQVJDSFMiKS5zcGxpdCgpKSkKKyAgICAgICAgcGtnYXJjaHMuYXBwZW5kKCdhbGxhcmNoJykKKyAgICAgICAgcGtnYXJjaHMuYXBwZW5kKCcke1NES19BUkNIfV8ke1NES19BUkNIfS0ke1NES1BLR1NVRkZJWH0nKQorCisgICAgZm9yIHBrZ2FyY2ggaW4gcGtnYXJjaHM6CisgICAgICAgIG1hbmlmZXN0ID0gZDIuZXhwYW5kKCIke1NTVEFURV9NQU5JRkVTVFN9L21hbmlmZXN0LSVzLSVzLiVzIiAlIChwa2dhcmNoLCB0YXNrZGF0YSwgdGFza25hbWUpKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhtYW5pZmVzdCk6CisgICAgICAgICAgICByZXR1cm4gbWFuaWZlc3QsIGQyCisgICAgYmIud2FybigiTWFuaWZlc3QgJXMgbm90IGZvdW5kIGluICVzICh2YXJpYW50ICclcycpPyIgJSAobWFuaWZlc3QsIGQyLmV4cGFuZCgiICIuam9pbihwa2dhcmNocykpLCB2YXJpYW50KSkKKyAgICByZXR1cm4gTm9uZSwgZDIKKworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvdXRpbHMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvdXRpbHMucHkKaW5kZXggNjQzYWI3OC4uODBmMDQ0MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3V0aWxzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS91dGlscy5weQpAQCAtODYsMTcgKzg2LDYgQEAKICAgICBmcm9tIHJlIGltcG9ydCBtYXRjaAogICAgIHJldHVybiAiICIuam9pbihbeCBmb3IgeCBpbiBzdHIuc3BsaXQoKSBpZiBub3QgbWF0Y2goZiwgeCwgMCldKQogCi1kZWYgcGFyYW1fYm9vbChjZmcsIGZpZWxkLCBkZmx0ID0gTm9uZSk6Ci0gICAgIiIiTG9va3VwIDxmaWVsZD4gaW4gPGNmZz4gbWFwIGFuZCBjb252ZXJ0IGl0IHRvIGEgYm9vbGVhbjsgdGFrZQotICAgIDxkZmx0PiB3aGVuIHRoaXMgPGZpZWxkPiBkb2VzIG5vdCBleGlzdCIiIgotICAgIHZhbHVlID0gY2ZnLmdldChmaWVsZCwgZGZsdCkKLSAgICBzdHJ2YWx1ZSA9IHN0cih2YWx1ZSkubG93ZXIoKQotICAgIGlmIHN0cnZhbHVlIGluICgneWVzJywgJ3knLCAndHJ1ZScsICd0JywgJzEnKToKLSAgICAgICAgcmV0dXJuIFRydWUKLSAgICBlbGlmIHN0cnZhbHVlIGluICgnbm8nLCAnbicsICdmYWxzZScsICdmJywgJzAnKToKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCB2YWx1ZSBmb3IgYm9vbGVhbiBwYXJhbWV0ZXIgJyVzJzogJyVzJyIgJSAoZmllbGQsIHZhbHVlKSkKLQogZGVmIGJ1aWxkX2RlcGVuZHNfc3RyaW5nKGRlcGVuZHMsIHRhc2spOgogICAgICIiIkFwcGVuZCBhIHRhc2tuYW1lIHRvIGEgc3RyaW5nIG9mIGRlcGVuZGVuY2llcyBhcyB1c2VkIGJ5IHRoZSBbZGVwZW5kc10gZmxhZyIiIgogICAgIHJldHVybiAiICIuam9pbihkZXAgKyAiOiIgKyB0YXNrIGZvciBkZXAgaW4gZGVwZW5kcy5zcGxpdCgpKQpAQCAtMTY3LDYgKzE1Niw0OSBAQAogICAgICIiIgogICAgIHJldHVybiBiYi51dGlscy5jb250YWluc19hbnkoIkRJU1RST19GRUFUVVJFUyIsIGZlYXR1cmVzLCB0cnVldmFsdWUsIGZhbHNldmFsdWUsIGQpCiAKK2RlZiBwYXJhbGxlbF9tYWtlKGQpOgorICAgICIiIgorICAgIFJldHVybiB0aGUgaW50ZWdlciB2YWx1ZSBmb3IgdGhlIG51bWJlciBvZiBwYXJhbGxlbCB0aHJlYWRzIHRvIHVzZSB3aGVuCisgICAgYnVpbGRpbmcsIHNjcmFwZWQgb3V0IG9mIFBBUkFMTEVMX01BS0UuIElmIG5vIHBhcmFsbGVsaXphdGlvbiBvcHRpb24gaXMKKyAgICBmb3VuZCwgcmV0dXJucyBOb25lCisKKyAgICBlLmcuIGlmIFBBUkFMTEVMX01BS0UgPSAiLWogMTAiLCB0aGlzIHdpbGwgcmV0dXJuIDEwIGFzIGFuIGludGVnZXIuCisgICAgIiIiCisgICAgcG0gPSAoZC5nZXRWYXIoJ1BBUkFMTEVMX01BS0UnKSBvciAnJykuc3BsaXQoKQorICAgICMgbG9vayBmb3IgJy1qJyBhbmQgdGhyb3cgb3RoZXIgb3B0aW9ucyAoZS5nLiAnLWwnKSBhd2F5CisgICAgd2hpbGUgcG06CisgICAgICAgIG9wdCA9IHBtLnBvcCgwKQorICAgICAgICBpZiBvcHQgPT0gJy1qJzoKKyAgICAgICAgICAgIHYgPSBwbS5wb3AoMCkKKyAgICAgICAgZWxpZiBvcHQuc3RhcnRzd2l0aCgnLWonKToKKyAgICAgICAgICAgIHYgPSBvcHRbMjpdLnN0cmlwKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgcmV0dXJuIGludCh2KQorCisgICAgcmV0dXJuIE5vbmUKKworZGVmIHBhcmFsbGVsX21ha2VfYXJndW1lbnQoZCwgZm10LCBsaW1pdD1Ob25lKToKKyAgICAiIiIKKyAgICBIZWxwZXIgdXRpbGl0eSB0byBjb25zdHJ1Y3QgYSBwYXJhbGxlbCBtYWtlIGFyZ3VtZW50IGZyb20gdGhlIG51bWJlciBvZgorICAgIHBhcmFsbGVsIHRocmVhZHMgc3BlY2lmaWVkIGluIFBBUkFMTEVMX01BS0UuCisKKyAgICBSZXR1cm5zIHRoZSBpbnB1dCBmb3JtYXQgc3RyaW5nIGBmbXRgIHdoZXJlIGEgc2luZ2xlICclZCcgd2lsbCBiZSBleHBhbmRlZAorICAgIHdpdGggdGhlIG51bWJlciBvZiBwYXJhbGxlbCB0aHJlYWRzIHRvIHVzZS4gSWYgYGxpbWl0YCBpcyBzcGVjaWZpZWQsIHRoZQorICAgIG51bWJlciBvZiBwYXJhbGxlbCB0aHJlYWRzIHdpbGwgYmUgbm8gbGFyZ2VyIHRoYW4gaXQuIElmIG5vIHBhcmFsbGVsaXphdGlvbgorICAgIG9wdGlvbiBpcyBmb3VuZCBpbiBQQVJBTExFTF9NQUtFLCByZXR1cm5zIGFuIGVtcHR5IHN0cmluZworCisgICAgZS5nLiBpZiBQQVJBTExFTF9NQUtFID0gIi1qIDEwIiwgcGFyYWxsZWxfbWFrZV9hcmd1bWVudChkLCAiLW4gJWQiKSB3aWxsIHJldHVybgorICAgICItbiAxMCIKKyAgICAiIiIKKyAgICB2ID0gcGFyYWxsZWxfbWFrZShkKQorICAgIGlmIHY6CisgICAgICAgIGlmIGxpbWl0OgorICAgICAgICAgICAgdiA9IG1pbihsaW1pdCwgdikKKyAgICAgICAgcmV0dXJuIGZtdCAlIHYKKyAgICByZXR1cm4gJycKKwogZGVmIHBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtKGQpOgogICAgICIiIgogICAgIFJldHVybiBhIGxpc3Qgb2YgcGFja2FnZXMgZnJvbSBQQUNLQUdFUyB3aXRoIHRoZSAic3lzdGVtIiBwYWNrYWdlcyBzdWNoIGFzCkBAIC0yOTIsNiArMzI0LDE0IEBACiAgICAgdmVyc2lvbiA9IG1hdGNoLmdyb3VwKDEpCiAgICAgcmV0dXJuICItJXMiICUgdmVyc2lvbiBpZiB2ZXJzaW9uIGluICgiNC44IiwgIjQuOSIpIGVsc2UgIiIKIAorCitkZWYgZ2V0X211bHRpbGliX2RhdGFzdG9yZSh2YXJpYW50LCBkKToKKyAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKKyAgICBvdmVycmlkZXMgPSBsb2NhbGRhdGEuZ2V0VmFyKCJPVkVSUklERVMiLCBGYWxzZSkgKyAiOnZpcnRjbGFzcy1tdWx0aWxpYi0iICsgdmFyaWFudAorICAgIGxvY2FsZGF0YS5zZXRWYXIoIk9WRVJSSURFUyIsIG92ZXJyaWRlcykKKyAgICBsb2NhbGRhdGEuc2V0VmFyKCJNTFBSRUZJWCIsIHZhcmlhbnQgKyAiLSIpCisgICAgcmV0dXJuIGxvY2FsZGF0YQorCiAjCiAjIFB5dGhvbiAyLjcgZG9lc24ndCBoYXZlIHRocmVhZGVkIHBvb2xzIChqdXN0IG11bHRpcHJvY2Vzc2luZykKICMgc28gaW1wbGVtZW50IGEgdmVyc2lvbiBoZXJlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9idWlsZHBlcmYvYmFzZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi9iYXNlLnB5CmluZGV4IDdiMmI0YWEuLmFjNmVlMTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi9iYXNlLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi9iYXNlLnB5CkBAIC0yODIsNyArMjgyLDcgQEAKICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoc2VsZi50bXBfZGlyKToKICAgICAgICAgICAgIG9zLm1rZGlyKHNlbGYudG1wX2RpcikKICAgICAgICAgaWYgc2VsZi5idWlsZF90YXJnZXQ6Ci0gICAgICAgICAgICBzZWxmLnJ1bl9jbWQoWydiaXRiYWtlJywgc2VsZi5idWlsZF90YXJnZXQsICctYycsICdmZXRjaGFsbCddKQorICAgICAgICAgICAgc2VsZi5ydW5fY21kKFsnYml0YmFrZScsIHNlbGYuYnVpbGRfdGFyZ2V0LCAnLS1ydW5hbGw9ZmV0Y2gnXSkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgIiIiVGVhci1kb3duIGZpeHR1cmUgZm9yIGVhY2ggdGVzdCIiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvYnVpbGRwZXJmL3Rlc3RfYmFzaWMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9idWlsZHBlcmYvdGVzdF9iYXNpYy5weQppbmRleCBhMTkwODlhLi42ZDZiMDFiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9idWlsZHBlcmYvdGVzdF9iYXNpYy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9idWlsZHBlcmYvdGVzdF9iYXNpYy5weQpAQCAtMTUsOCArMTUsNyBAQAogCiBpbXBvcnQgb2UucGF0aAogZnJvbSBvZXFhLmJ1aWxkcGVyZiBpbXBvcnQgQnVpbGRQZXJmVGVzdENhc2UKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgZ2V0X2JiX3ZhcnMKLQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBnZXRfYmJfdmFyLCBnZXRfYmJfdmFycwogCiBjbGFzcyBUZXN0MVAxKEJ1aWxkUGVyZlRlc3RDYXNlKToKICAgICBidWlsZF90YXJnZXQgPSAnY29yZS1pbWFnZS1zYXRvJwpAQCAtMzAsNiArMjksNyBAQAogICAgICAgICBzZWxmLm1lYXN1cmVfY21kX3Jlc291cmNlcyhbJ2JpdGJha2UnLCBzZWxmLmJ1aWxkX3RhcmdldF0sICdidWlsZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiaXRiYWtlICcgKyBzZWxmLmJ1aWxkX3RhcmdldCwgc2F2ZV9icz1UcnVlKQogICAgICAgICBzZWxmLm1lYXN1cmVfZGlza191c2FnZShzZWxmLmJiX3ZhcnNbJ1RNUERJUiddLCAndG1wZGlyJywgJ3RtcGRpcicpCisgICAgICAgIHNlbGYubWVhc3VyZV9kaXNrX3VzYWdlKGdldF9iYl92YXIoIklNQUdFX1JPT1RGUyIsIHNlbGYuYnVpbGRfdGFyZ2V0KSwgJ3Jvb3RmcycsICdyb290ZnMnLCBUcnVlKQogCiAKIGNsYXNzIFRlc3QxUDIoQnVpbGRQZXJmVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9sb2FkZXIucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2xvYWRlci5weQppbmRleCA5NzVhMDgxLi5hNDc0NGRlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2xvYWRlci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2xvYWRlci5weQpAQCAtNDMsNyArNDMsNyBAQAogICAgIGZvciBtb2R1bGUgaW4gbW9kdWxlczoKICAgICAgICAgIyBBc3N1bXB0aW9uOiBwYWNrYWdlIGFuZCBtb2R1bGUgbmFtZXMgZG8gbm90IGNvbnRhaW4gdXBwZXIgY2FzZQogICAgICAgICAjIGNoYXJhY3RlcnMsIHdoZXJlYXMgY2xhc3MgbmFtZXMgZG8KLSAgICAgICAgbSA9IHJlLm1hdGNoKHInXihbXkEtWl0rKSg/OlwuKFtBLVpdW14uXSopKD86XC4oW14uXSspKT8pPyQnLCBtb2R1bGUpCisgICAgICAgIG0gPSByZS5tYXRjaChyJ14oXHcrKSg/OlwuKFx3W14uXSopKD86XC4oW14uXSspKT8pPyQnLCBtb2R1bGUsIGZsYWdzPXJlLkFTQ0lJKQogCiAgICAgICAgIG1vZHVsZV9uYW1lLCBjbGFzc19uYW1lLCB0ZXN0X25hbWUgPSBtLmdyb3VwcygpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGFyZ2V0L3FlbXUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3RhcmdldC9xZW11LnB5CmluZGV4IGQzNTliZjkuLmJmM2I2MzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGFyZ2V0L3FlbXUucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90YXJnZXQvcWVtdS5weQpAQCAtOSw3ICs5LDcgQEAKIGZyb20gLnNzaCBpbXBvcnQgT0VTU0hUYXJnZXQKIGZyb20gb2VxYS51dGlscy5xZW11cnVubmVyIGltcG9ydCBRZW11UnVubmVyCiAKLXN1cHBvcnRlZF9mc3R5cGVzID0gWydleHQzJywgJ2V4dDQnLCAnY3Bpby5neicsICd3aWMnLCAnZWxmJ10KK3N1cHBvcnRlZF9mc3R5cGVzID0gWydleHQzJywgJ2V4dDQnLCAnY3Bpby5neicsICd3aWMnXQogCiBjbGFzcyBPRVFlbXVUYXJnZXQoT0VTU0hUYXJnZXQpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGlwLCBzZXJ2ZXJfaXAsIHRpbWVvdXQ9MzAwLCB1c2VyPSdyb290JywKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvYXB0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9hcHQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ0ZGQzNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvYXB0LnB5CkBAIC0wLDAgKzEsNDcgQEAKK2ltcG9ydCBvcworZnJvbSBvZXFhLnV0aWxzLmh0dHBzZXJ2ZXIgaW1wb3J0IEhUVFBTZXJ2aWNlCitmcm9tIG9lcWEucnVudGltZS5jYXNlIGltcG9ydCBPRVJ1bnRpbWVUZXN0Q2FzZQorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRhdGEgaW1wb3J0IHNraXBJZk5vdERhdGFWYXIsIHNraXBJZk5vdEZlYXR1cmUKK2Zyb20gb2VxYS5ydW50aW1lLmRlY29yYXRvci5wYWNrYWdlIGltcG9ydCBPRUhhc1BhY2thZ2UKKworY2xhc3MgQXB0VGVzdChPRVJ1bnRpbWVUZXN0Q2FzZSk6CisKKyAgICBkZWYgcGtnKHNlbGYsIGNvbW1hbmQsIGV4cGVjdGVkID0gMCk6CisgICAgICAgIGNvbW1hbmQgPSAnYXB0LWdldCAlcycgJSBjb21tYW5kCisgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKGNvbW1hbmQsIDE1MDApCisgICAgICAgIG1lc3NhZ2UgPSBvcy5saW5lc2VwLmpvaW4oW2NvbW1hbmQsIG91dHB1dF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCBleHBlY3RlZCwgbWVzc2FnZSkKKyAgICAgICAgcmV0dXJuIG91dHB1dAorCitjbGFzcyBBcHRSZXBvVGVzdChBcHRUZXN0KToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHNlcnZpY2VfcmVwbyA9IG9zLnBhdGguam9pbihjbHMudGMudGRbJ0RFUExPWV9ESVJfREVCJ10sICdhbGwnKQorICAgICAgICBjbHMucmVwb19zZXJ2ZXIgPSBIVFRQU2VydmljZShzZXJ2aWNlX3JlcG8sIGNscy50Yy50YXJnZXQuc2VydmVyX2lwKQorICAgICAgICBjbHMucmVwb19zZXJ2ZXIuc3RhcnQoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJlcG9fc2VydmVyLnN0b3AoKQorCisgICAgZGVmIHNldHVwX3NvdXJjZV9jb25maWdfZm9yX3BhY2thZ2VfaW5zdGFsbChzZWxmKToKKyAgICAgICAgYXB0X2dldF9zb3VyY2Vfc2VydmVyID0gJ2h0dHA6Ly8lczolcy8nICUgKHNlbGYudGMudGFyZ2V0LnNlcnZlcl9pcCwgc2VsZi5yZXBvX3NlcnZlci5wb3J0KQorICAgICAgICBhcHRfZ2V0X3NvdXJjZXNsaXN0X2RpciA9ICcvZXRjL2FwdC8nCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignY2QgJXM7IGVjaG8gZGViICVzIC4vID4gc291cmNlcy5saXN0JyAlIChhcHRfZ2V0X3NvdXJjZXNsaXN0X2RpciwgYXB0X2dldF9zb3VyY2Vfc2VydmVyKSkKKworICAgIGRlZiBjbGVhbnVwX3NvdXJjZV9jb25maWdfZm9yX3BhY2thZ2VfaW5zdGFsbChzZWxmKToKKyAgICAgICAgYXB0X2dldF9zb3VyY2VzbGlzdF9kaXIgPSAnL2V0Yy9hcHQvJworICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ2NkICVzOyBybSBzb3VyY2VzLmxpc3QnICUgKGFwdF9nZXRfc291cmNlc2xpc3RfZGlyKSkKKworICAgIEBza2lwSWZOb3RGZWF0dXJlKCdwYWNrYWdlLW1hbmFnZW1lbnQnLAorICAgICAgICAgICAgICAgICAgICAgICdUZXN0IHJlcXVpcmVzIHBhY2thZ2UtbWFuYWdlbWVudCB0byBiZSBpbiBJTUFHRV9GRUFUVVJFUycpCisgICAgQHNraXBJZk5vdERhdGFWYXIoJ0lNQUdFX1BLR1RZUEUnLCAnZGViJywKKyAgICAgICAgICAgICAgICAgICAgICAnREVCIGlzIG5vdCB0aGUgcHJpbWFyeSBwYWNrYWdlIG1hbmFnZXInKQorICAgIEBPRUhhc1BhY2thZ2UoWydhcHQnXSkKKyAgICBkZWYgdGVzdF9hcHRfaW5zdGFsbF9mcm9tX3JlcG8oc2VsZik6CisgICAgICAgIHNlbGYuc2V0dXBfc291cmNlX2NvbmZpZ19mb3JfcGFja2FnZV9pbnN0YWxsKCkKKyAgICAgICAgc2VsZi5wa2coJ3VwZGF0ZScpCisgICAgICAgIHNlbGYucGtnKCdyZW1vdmUgLS15ZXMgcnVuLXBvc3RpbnN0cy1kZXYnKQorICAgICAgICBzZWxmLnBrZygnaW5zdGFsbCAtLXllcyAtLWFsbG93LXVuYXV0aGVudGljYXRlZCBydW4tcG9zdGluc3RzLWRldicpCisgICAgICAgIHNlbGYuY2xlYW51cF9zb3VyY2VfY29uZmlnX2Zvcl9wYWNrYWdlX2luc3RhbGwoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9naS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZ2kucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTkwNzNlNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZ2kucHkKQEAgLTAsMCArMSwxNSBAQAoraW1wb3J0IG9zCisKK2Zyb20gb2VxYS5ydW50aW1lLmNhc2UgaW1wb3J0IE9FUnVudGltZVRlc3RDYXNlCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IuZGVwZW5kcyBpbXBvcnQgT0VUZXN0RGVwZW5kcworZnJvbSBvZXFhLnJ1bnRpbWUuZGVjb3JhdG9yLnBhY2thZ2UgaW1wb3J0IE9FSGFzUGFja2FnZQorCitjbGFzcyBHT2JqZWN0SW50cm9zcGVjdGlvblRlc3QoT0VSdW50aW1lVGVzdENhc2UpOgorCisgICAgQE9FVGVzdERlcGVuZHMoWyJzc2guU1NIVGVzdC50ZXN0X3NzaCJdKQorICAgIEBPRUhhc1BhY2thZ2UoWyJweXRob24zLXB5Z29iamVjdCJdKQorICAgIGRlZiB0ZXN0X3B5dGhvbihzZWxmKToKKyAgICAgICAgc2NyaXB0ID0gIiIiZnJvbSBnaS5yZXBvc2l0b3J5IGltcG9ydCBHT2JqZWN0OyBwcmludChHT2JqZWN0Lm1hcmt1cF9lc2NhcGVfdGV4dCgiPHRlc3RpbmcmdGVzdGluZz4iKSkiIiIKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oInB5dGhvbjMgLWMgJyVzJyIgJSBzY3JpcHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2c9IlB5dGhvbiBmYWlsZWQgKCVzKSIgJSAob3V0cHV0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsICImbHQ7dGVzdGluZyZhbXA7dGVzdGluZyZndDsiLCBtc2c9IlVuZXhwZWN0ZWQgb3V0cHV0ICglcykiICUgb3V0cHV0KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9rZXJuZWxtb2R1bGUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2tlcm5lbG1vZHVsZS5weQppbmRleCAxMWFkN2I3Li5kZTFhNWFhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2tlcm5lbG1vZHVsZS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2tlcm5lbG1vZHVsZS5weQpAQCAtMjgsNyArMjgsNyBAQAogICAgIEBPRVRlc3REZXBlbmRzKFsnZ2NjLkdjY0NvbXBpbGVUZXN0LnRlc3RfZ2NjX2NvbXBpbGUnXSkKICAgICBkZWYgdGVzdF9rZXJuZWxfbW9kdWxlKHNlbGYpOgogICAgICAgICBjbWRzID0gWwotICAgICAgICAgICAgJ2NkIC91c3Ivc3JjL2tlcm5lbCAmJiBtYWtlIHNjcmlwdHMnLAorICAgICAgICAgICAgJ2NkIC91c3Ivc3JjL2tlcm5lbCAmJiBtYWtlIHNjcmlwdHMgcHJlcGFyZScsCiAgICAgICAgICAgICAnY2QgL3RtcCAmJiBtYWtlJywKICAgICAgICAgICAgICdjZCAvdG1wICYmIGluc21vZCBoZWxsb21vZC5rbycsCiAgICAgICAgICAgICAnbHNtb2QgfCBncmVwIGhlbGxvbW9kJywKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvb3BrZy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvb3BrZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzFlZTA2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9vcGtnLnB5CkBAIC0wLDAgKzEsNDcgQEAKK2ltcG9ydCBvcworZnJvbSBvZXFhLnV0aWxzLmh0dHBzZXJ2ZXIgaW1wb3J0IEhUVFBTZXJ2aWNlCitmcm9tIG9lcWEucnVudGltZS5jYXNlIGltcG9ydCBPRVJ1bnRpbWVUZXN0Q2FzZQorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRhdGEgaW1wb3J0IHNraXBJZk5vdERhdGFWYXIsIHNraXBJZk5vdEZlYXR1cmUKK2Zyb20gb2VxYS5ydW50aW1lLmRlY29yYXRvci5wYWNrYWdlIGltcG9ydCBPRUhhc1BhY2thZ2UKKworY2xhc3MgT3BrZ1Rlc3QoT0VSdW50aW1lVGVzdENhc2UpOgorCisgICAgZGVmIHBrZyhzZWxmLCBjb21tYW5kLCBleHBlY3RlZCA9IDApOgorICAgICAgICBjb21tYW5kID0gJ29wa2cgJXMnICUgY29tbWFuZAorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bihjb21tYW5kLCAxNTAwKQorICAgICAgICBtZXNzYWdlID0gb3MubGluZXNlcC5qb2luKFtjb21tYW5kLCBvdXRwdXRdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgZXhwZWN0ZWQsIG1lc3NhZ2UpCisgICAgICAgIHJldHVybiBvdXRwdXQKKworY2xhc3MgT3BrZ1JlcG9UZXN0KE9wa2dUZXN0KToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHNlcnZpY2VfcmVwbyA9IG9zLnBhdGguam9pbihjbHMudGMudGRbJ0RFUExPWV9ESVJfSVBLJ10sICdhbGwnKQorICAgICAgICBjbHMucmVwb19zZXJ2ZXIgPSBIVFRQU2VydmljZShzZXJ2aWNlX3JlcG8sIGNscy50Yy50YXJnZXQuc2VydmVyX2lwKQorICAgICAgICBjbHMucmVwb19zZXJ2ZXIuc3RhcnQoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJlcG9fc2VydmVyLnN0b3AoKQorCisgICAgZGVmIHNldHVwX3NvdXJjZV9jb25maWdfZm9yX3BhY2thZ2VfaW5zdGFsbChzZWxmKToKKyAgICAgICAgYXB0X2dldF9zb3VyY2Vfc2VydmVyID0gJ2h0dHA6Ly8lczolcy8nICUgKHNlbGYudGMudGFyZ2V0LnNlcnZlcl9pcCwgc2VsZi5yZXBvX3NlcnZlci5wb3J0KQorICAgICAgICBhcHRfZ2V0X3NvdXJjZXNsaXN0X2RpciA9ICcvZXRjL29wa2cvJworICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ2NkICVzOyBlY2hvIHNyYy9neiBhbGwgJXMgPj4gb3BrZy5jb25mJyAlIChhcHRfZ2V0X3NvdXJjZXNsaXN0X2RpciwgYXB0X2dldF9zb3VyY2Vfc2VydmVyKSkKKyAgICAgICAgCisgICAgZGVmIGNsZWFudXBfc291cmNlX2NvbmZpZ19mb3JfcGFja2FnZV9pbnN0YWxsKHNlbGYpOgorICAgICAgICBhcHRfZ2V0X3NvdXJjZXNsaXN0X2RpciA9ICcvZXRjL29wa2cvJworICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ2NkICVzOyBzZWQgLWkgIi9ec3JjL2QiIG9wa2cuY29uZicgJSAoYXB0X2dldF9zb3VyY2VzbGlzdF9kaXIpKQorICAgICAgICAKKyAgICBAc2tpcElmTm90RmVhdHVyZSgncGFja2FnZS1tYW5hZ2VtZW50JywKKyAgICAgICAgICAgICAgICAgICAgICAnVGVzdCByZXF1aXJlcyBwYWNrYWdlLW1hbmFnZW1lbnQgdG8gYmUgaW4gSU1BR0VfRkVBVFVSRVMnKQorICAgIEBza2lwSWZOb3REYXRhVmFyKCdJTUFHRV9QS0dUWVBFJywgJ2lwaycsCisgICAgICAgICAgICAgICAgICAgICAgJ0lQSyBpcyBub3QgdGhlIHByaW1hcnkgcGFja2FnZSBtYW5hZ2VyJykKKyAgICBAT0VIYXNQYWNrYWdlKFsnb3BrZyddKQorICAgIGRlZiB0ZXN0X29wa2dfaW5zdGFsbF9mcm9tX3JlcG8oc2VsZik6CisgICAgICAgIHNlbGYuc2V0dXBfc291cmNlX2NvbmZpZ19mb3JfcGFja2FnZV9pbnN0YWxsKCkKKyAgICAgICAgc2VsZi5wa2coJ3VwZGF0ZScpCisgICAgICAgIHNlbGYucGtnKCdyZW1vdmUgcnVuLXBvc3RpbnN0cy1kZXYnKQorICAgICAgICBzZWxmLnBrZygnaW5zdGFsbCBydW4tcG9zdGluc3RzLWRldicpCisgICAgICAgIHNlbGYuY2xlYW51cF9zb3VyY2VfY29uZmlnX2Zvcl9wYWNrYWdlX2luc3RhbGwoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wdGVzdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcHRlc3QucHkKaW5kZXggZWM4YzAzOC4uZjYwYTQzMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wdGVzdC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3B0ZXN0LnB5CkBAIC00OCw5ICs0OCwxMiBAQAogCiAgICAgQE9FVGVzdElEKDE2MDApCiAgICAgQHNraXBJZk5vdEZlYXR1cmUoJ3B0ZXN0JywgJ1Rlc3QgcmVxdWlyZXMgcHRlc3QgdG8gYmUgaW4gRElTVFJPX0ZFQVRVUkVTJykKLSAgICBAc2tpcElmTm90RmVhdHVyZSgncHRlc3QtcGtncycsICdUZXN0IHJlcXVpcmVzIHB0ZXN0LXBrZ3MgdG8gYmUgaW4gSU1BR0VfRkVBVFVSRVMnKQogICAgIEBPRVRlc3REZXBlbmRzKFsnc3NoLlNTSFRlc3QudGVzdF9zc2gnXSkKICAgICBkZWYgdGVzdF9wdGVzdHJ1bm5lcihzZWxmKToKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ3doaWNoIHB0ZXN0LXJ1bm5lcicsIDApCisgICAgICAgIGlmIHN0YXR1cyAhPSAwOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiTm8gLXB0ZXN0IHBhY2thZ2VzIGFyZSBpbnN0YWxsZWQgaW4gdGhlIGltYWdlIikKKwogICAgICAgICBpbXBvcnQgZGF0ZXRpbWUKIAogICAgICAgICB0ZXN0X2xvZ19kaXIgPSBzZWxmLnRkLmdldCgnVEVTVF9MT0dfRElSJywgJycpCkBAIC04MCwzICs4MywxMSBAQAogICAgICAgICAgICAgIyBSZW1vdmUgdGhlIG9sZCBsaW5rIHRvIGNyZWF0ZSBhIG5ldyBvbmUKICAgICAgICAgICAgIG9zLnJlbW92ZShwdGVzdF9sb2dfZGlyX2xpbmspCiAgICAgICAgIG9zLnN5bWxpbmsob3MucGF0aC5iYXNlbmFtZShwdGVzdF9sb2dfZGlyKSwgcHRlc3RfbG9nX2Rpcl9saW5rKQorCisgICAgICAgIGZhaWxlZF90ZXN0cyA9IHt9CisgICAgICAgIGZvciBzZWN0aW9uIGluIHBhcnNlX3Jlc3VsdC5yZXN1bHRfZGljdDoKKyAgICAgICAgICAgIGZhaWxlZF90ZXN0Y2FzZXMgPSBbIHRlc3QgZm9yIHRlc3QsIHJlc3VsdCBpbiBwYXJzZV9yZXN1bHQucmVzdWx0X2RpY3Rbc2VjdGlvbl0gaWYgcmVzdWx0ID09ICdmYWlsJyBdCisgICAgICAgICAgICBpZiBmYWlsZWRfdGVzdGNhc2VzOgorICAgICAgICAgICAgICAgIGZhaWxlZF90ZXN0c1tzZWN0aW9uXSA9IGZhaWxlZF90ZXN0Y2FzZXMKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZhaWxlZF90ZXN0cywgbXNnID0gIkZhaWxlZCBwdGVzdHM6ICVzIiAlKHN0cihmYWlsZWRfdGVzdHMpKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvc3RhcC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvc3RhcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzcyOGJmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9zdGFwLnB5CkBAIC0wLDAgKzEsMzMgQEAKK2ltcG9ydCBvcworCitmcm9tIG9lcWEucnVudGltZS5jYXNlIGltcG9ydCBPRVJ1bnRpbWVUZXN0Q2FzZQorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRlcGVuZHMgaW1wb3J0IE9FVGVzdERlcGVuZHMKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRhdGEgaW1wb3J0IHNraXBJZk5vdEZlYXR1cmUKKworY2xhc3MgU3RhcFRlc3QoT0VSdW50aW1lVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKGNscy50Yy5ydW50aW1lX2ZpbGVzX2RpciwgJ2hlbGxvLnN0cCcpCisgICAgICAgIGRzdCA9ICcvdG1wL2hlbGxvLnN0cCcKKyAgICAgICAgY2xzLnRjLnRhcmdldC5jb3B5VG8oc3JjLCBkc3QpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBmaWxlcyA9ICcvdG1wL2hlbGxvLnN0cCcKKyAgICAgICAgY2xzLnRjLnRhcmdldC5ydW4oJ3JtICVzJyAlIGZpbGVzKQorCisgICAgQE9FVGVzdElEKDE2NTIpCisgICAgQHNraXBJZk5vdEZlYXR1cmUoJ3Rvb2xzLXByb2ZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgICdUZXN0IHJlcXVpcmVzIHRvb2xzLXByb2ZpbGUgdG8gYmUgaW4gSU1BR0VfRkVBVFVSRVMnKQorICAgIEBPRVRlc3REZXBlbmRzKFsna2VybmVsbW9kdWxlLktlcm5lbE1vZHVsZVRlc3QudGVzdF9rZXJuZWxfbW9kdWxlJ10pCisgICAgZGVmIHRlc3Rfc3RhcChzZWxmKToKKyAgICAgICAgY21kcyA9IFsKKyAgICAgICAgICAgICdjZCAvdXNyL3NyYy9rZXJuZWwgJiYgbWFrZSBzY3JpcHRzIHByZXBhcmUnLAorICAgICAgICAgICAgJ2NkIC9saWIvbW9kdWxlcy9gdW5hbWUgLXJgICYmIChpZiBbICEgLUwgYnVpbGQgXTsgdGhlbiBsbiAtcyAvdXNyL3NyYy9rZXJuZWwgYnVpbGQ7IGZpKScsCisgICAgICAgICAgICAnc3RhcCAtLWRpc2FibGUtY2FjaGUgLURTVFBfTk9fVkVSUkVMX0NIRUNLIC90bXAvaGVsbG8uc3RwJworICAgICAgICAgICAgXQorICAgICAgICBmb3IgY21kIGluIGNtZHM6CisgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bihjbWQsIDkwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2c9J1xuJy5qb2luKFtjbWQsIG91dHB1dF0pKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9maWxlcy9oZWxsby5zdHAgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2ZpbGVzL2hlbGxvLnN0cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjc3MTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9maWxlcy9oZWxsby5zdHAKQEAgLTAsMCArMSBAQAorcHJvYmUgb25lc2hvdCB7IHByaW50bG4oImhlbGxvIHdvcmxkIikgfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYXJjaGl2ZXIucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9hcmNoaXZlci5weQppbmRleCBmNjFhNTIyLi4wYTZkNGUzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9hcmNoaXZlci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9hcmNoaXZlci5weQpAQCAtMTE2LDMgKzExNiwxNiBAQAogCiAgICAgICAgIGV4Y2x1ZGVkX3ByZXNlbnQgPSBsZW4oZ2xvYi5nbG9iKHNyY19wYXRoX3RhcmdldCArICcvJXMtKicgJSB0YXJnZXRfcmVjaXBlc1sxXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhjbHVkZWRfcHJlc2VudCwgJ1JlY2lwZSAlcyB3YXMgbm90IGV4Y2x1ZGVkLicgJSB0YXJnZXRfcmVjaXBlc1sxXSkKKworCisKKyAgICBkZWYgdGVzdF9hcmNoaXZlcl9zcnBtX21vZGUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgaW4gc3JwbSBtb2RlLCB0aGUgYWRkZWQgcmVjaXBlIGRlcGVuZGVuY2llcyBhdCBsZWFzdCBleGlzdC93b3JrIFtZT0NUTyAjMTExMjFdCisgICAgICAgICIiIgorCisgICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gImFyY2hpdmVyIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnQVJDSElWRVJfTU9ERVtzcnBtXSA9ICIxIlxuJworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKworICAgICAgICBiaXRiYWtlKCctbiBjb3JlLWltYWdlLXNhdG8nKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYmJ0ZXN0cy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2JidGVzdHMucHkKaW5kZXggNGM4MjA0OS4uMzUwNjE0OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYmJ0ZXN0cy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9iYnRlc3RzLnB5CkBAIC02NCwxNSArNjQsMTQgQEAKIAogICAgIEBPRVRlc3RJRCgxMDgpCiAgICAgZGVmIHRlc3RfaW52YWxpZF9wYXRjaChzZWxmKToKLSAgICAgICAgIyBUaGlzIHBhdGNoIGFscmVhZHkgZXhpc3RzIGluIFNSQ19VUkkgc28gYWRkaW5nIGl0IGFnYWluIHdpbGwgY2F1c2UgdGhlCi0gICAgICAgICMgcGF0Y2ggdG8gZmFpbC4KLSAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMoJ21hbicsICdTUkNfVVJJICs9ICJmaWxlOi8vbWFuLTEuNWgxLW1ha2UucGF0Y2giJykKKyAgICAgICAgIyBUaGlzIHBhdGNoIHNob3VsZCBmYWlsIHRvIGFwcGx5LgorICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnbWFuLWRiJywgJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiJcblNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLVRlc3QtcGF0Y2gtaGVyZS5wYXRjaCInKQogICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiSU5IRVJJVF9yZW1vdmUgPSBcInJlcG9ydC1lcnJvclwiIikKLSAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnbWFuIC1jIHBhdGNoJywgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBzZWxmLmRlbGV0ZV9yZWNpcGVpbmMoJ21hbicpCi0gICAgICAgIGJpdGJha2UoJy1jY2xlYW4gbWFuJykKKyAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnbWFuLWRiIC1jIHBhdGNoJywgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLmRlbGV0ZV9yZWNpcGVpbmMoJ21hbi1kYicpCisgICAgICAgIGJpdGJha2UoJy1jY2xlYW4gbWFuLWRiJykKICAgICAgICAgbGluZSA9IHNlbGYuZ2V0bGluZShyZXN1bHQsICJGdW5jdGlvbiBmYWlsZWQ6IHBhdGNoX2RvX3BhdGNoIikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmUgYW5kIGxpbmUuc3RhcnRzd2l0aCgiRVJST1I6IiksIG1zZyA9ICJSZXBlYXRlZCBwYXRjaCBhcHBsaWNhdGlvbiBkaWRuJ3QgZmFpbC4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lIGFuZCBsaW5lLnN0YXJ0c3dpdGgoIkVSUk9SOiIpLCBtc2cgPSAiSW5jb3JyZWN0bHkgZm9ybWVkIHBhdGNoIGFwcGxpY2F0aW9uIGRpZG4ndCBmYWlsLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKIAogICAgIEBPRVRlc3RJRCgxMzU0KQogICAgIGRlZiB0ZXN0X2ZvcmNlX3Rhc2tfMShzZWxmKToKQEAgLTEzMiwxNyArMTMxLDE3IEBACiAgICAgQE9FVGVzdElEKDE2OCkKICAgICBkZWYgdGVzdF9pbnZhbGlkX3JlY2lwZV9zcmNfdXJpKHNlbGYpOgogICAgICAgICBkYXRhID0gJ1NSQ19VUkkgPSAiZmlsZTovL2ludmFsaWQiJwotICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnbWFuJywgZGF0YSkKKyAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMoJ21hbi1kYicsIGRhdGEpCiAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIkRMX0RJUiA9IFwiJHtUT1BESVJ9L2Rvd25sb2FkLXNlbGZ0ZXN0XCIKIFNTVEFURV9ESVIgPSBcIiR7VE9QRElSfS9kb3dubG9hZC1zZWxmdGVzdFwiCiBJTkhFUklUX3JlbW92ZSA9IFwicmVwb3J0LWVycm9yXCIKICIiIikKICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgImRvd25sb2FkLXNlbGZ0ZXN0IikpCiAKLSAgICAgICAgYml0YmFrZSgnLWNjbGVhbmFsbCBtYW4nKQotICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCctYyBmZXRjaCBtYW4nLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIGJpdGJha2UoJy1jY2xlYW5hbGwgbWFuJykKLSAgICAgICAgc2VsZi5kZWxldGVfcmVjaXBlaW5jKCdtYW4nKQorICAgICAgICBiaXRiYWtlKCctY2NsZWFuYWxsIG1hbi1kYicpCisgICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJy1jIGZldGNoIG1hbi1kYicsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgYml0YmFrZSgnLWNjbGVhbmFsbCBtYW4tZGInKQorICAgICAgICBzZWxmLmRlbGV0ZV9yZWNpcGVpbmMoJ21hbi1kYicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMSwgbXNnPSJDb21tYW5kIHN1Y2NlZGVkIHdoZW4gaXQgc2hvdWxkIGhhdmUgZmFpbGVkLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdGZXRjaGVyIGZhaWx1cmU6IFVuYWJsZSB0byBmaW5kIGZpbGUgZmlsZTovL2ludmFsaWQgYW55d2hlcmUuIFRoZSBwYXRocyB0aGF0IHdlcmUgc2VhcmNoZWQgd2VyZTonIGluIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJcImludmFsaWRcIiBmaWxlIFwKIGRvZXNuJ3QgZXhpc3QsIHlldCBubyBlcnJvciBtZXNzYWdlIGVuY291bnRlcmVkLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKQEAgLTIyMiw5ICsyMjEsOSBAQAogSU5IRVJJVF9yZW1vdmUgPSBcInJlcG9ydC1lcnJvclwiCiAiIiIpCiAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAob3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICJkb3dubG9hZC1zZWxmdGVzdCIpKQotICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnbWFuJywiXG5kb19mYWlsX3Rhc2sgKCkge1xuZXhpdCAxIFxufVxuXG5hZGR0YXNrIGRvX2ZhaWxfdGFzayBiZWZvcmUgZG9fZmV0Y2hcbiIgKQotICAgICAgICBydW5DbWQoJ2JpdGJha2UgLWMgY2xlYW5hbGwgbWFuIHhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UgLWMgdW5wYWNrIC1rIG1hbiB4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJywgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnbWFuLWRiJywiXG5kb19mYWlsX3Rhc2sgKCkge1xuZXhpdCAxIFxufVxuXG5hZGR0YXNrIGRvX2ZhaWxfdGFzayBiZWZvcmUgZG9fZmV0Y2hcbiIgKQorICAgICAgICBydW5DbWQoJ2JpdGJha2UgLWMgY2xlYW5hbGwgbWFuLWRiIHhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UgLWMgdW5wYWNrIC1rIG1hbi1kYiB4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJywgaWdub3JlX3N0YXR1cz1UcnVlKQogICAgICAgICBlcnJvcnBvcyA9IHJlc3VsdC5vdXRwdXQuZmluZCgnRVJST1I6IEZ1bmN0aW9uIGZhaWxlZDogZG9fZmFpbF90YXNrJykKICAgICAgICAgbWFudmVyID0gcmUuc2VhcmNoKCJOT1RFOiByZWNpcGUgeGN1cnNvci10cmFuc3BhcmVudC10aGVtZS0oLio/KTogdGFzayBkb191bnBhY2s6IFN0YXJ0ZWQiLCByZXN1bHQub3V0cHV0KQogICAgICAgICBjb250aW51ZXBvcyA9IHJlc3VsdC5vdXRwdXQuZmluZCgnTk9URTogcmVjaXBlIHhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUtJXM6IHRhc2sgZG9fdW5wYWNrOiBTdGFydGVkJyAlIG1hbnZlci5ncm91cCgxKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2J1aWxkb3B0aW9ucy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2J1aWxkb3B0aW9ucy5weQppbmRleCBjZjIyMWMzLi5lNjBlMzJkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9idWlsZG9wdGlvbnMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYnVpbGRvcHRpb25zLnB5CkBAIC0xNjQsMyArMTY0LDE3IEBACiAgICAgICAgIHNyY19maWxlX2dsb2IgPSBzdHIocGtnc19wYXRoWzBdKSArICIveGN1cnNvciouc3JjLnJwbSIKICAgICAgICAgdGFyX2ZpbGVfZ2xvYiA9IHN0cihwa2dzX3BhdGhbMF0pICsgIi94Y3Vyc29yKi50YXIuZ3oiCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgoZy5nbG9iKHNyY19maWxlX2dsb2IpIGFuZCBnLmdsb2IodGFyX2ZpbGVfZ2xvYikpLCAiQ291bGRuJ3QgZmluZCAuc3JjLnJwbSBhbmQgLnRhci5neiBmaWxlcyB1bmRlciAlcy9hbGxhcmNoKi94Y3Vyc29yKiIgJSBkZXBsb3lfZGlyX3NyYykKKworY2xhc3MgVG9vbGNoYWluT3B0aW9ucyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfdG9vbGNoYWluX2ZvcnRyYW4oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHdoZXRoZXIgd2UgY2FuIGVuYWJsZSBhbmQgYnVpbGQgZm9ydHJhbiBhbmQgaXRzIHN1cHBvcnRpbmcgbGlicmFyaWVzCisgICAgICAgICIiIgorCisgICAgICAgIGZlYXR1cmVzID0gJ0ZPUlRSQU5fZm9yY2V2YXJpYWJsZSA9ICIsZm9ydHJhbiJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ1JVTlRJTUVUQVJHRVRfYXBwZW5kX3BuLWdjYy1ydW50aW1lID0gIiBsaWJxdWFkbWF0aCJcbicKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisKKyAgICAgICAgYml0YmFrZSgnZ2NjLXJ1bnRpbWUgbGliZ2ZvcnRyYW4nKQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kZXZ0b29sLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGV2dG9vbC5weQppbmRleCA0MzI4MGNkLi5kNWI2YTQ2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kZXZ0b29sLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2RldnRvb2wucHkKQEAgLTE3NCw3ICsxNzQsNyBAQAogICAgIGRlZiB0ZXN0X2NyZWF0ZV93b3Jrc3BhY2Uoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucwogICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCcvd29ya3NwYWNlJyBub3QgaW4gcmVzdWx0Lm91dHB1dCwgJ1RoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIHdpdGggYSB3b3Jrc3BhY2UgbGF5ZXIgaW4gYmJsYXllcnMuY29uZicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnXG53b3Jrc3BhY2UnIG5vdCBpbiByZXN1bHQub3V0cHV0LCAnVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gd2l0aCBhIHdvcmtzcGFjZSBsYXllciBpbiBiYmxheWVycy5jb25mJykKICAgICAgICAgIyBUcnkgY3JlYXRpbmcgYSB3b3Jrc3BhY2UgbGF5ZXIgd2l0aCBhIHNwZWNpZmljIHBhdGgKICAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQogICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCkBAIC02MTEsNyArNjExLDcgQEAKICAgICBAT0VUZXN0SUQoMTE2NSkKICAgICBkZWYgdGVzdF9kZXZ0b29sX21vZGlmeV9naXQoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucwotICAgICAgICB0ZXN0cmVjaXBlID0gJ21rZWxmaW1hZ2UnCisgICAgICAgIHRlc3RyZWNpcGUgPSAncHNwbGFzaCcKICAgICAgICAgc3JjX3VyaSA9IGdldF9iYl92YXIoJ1NSQ19VUkknLCB0ZXN0cmVjaXBlKQogICAgICAgICBzZWxmLmFzc2VydEluKCdnaXQ6Ly8nLCBzcmNfdXJpLCAnVGhpcyB0ZXN0IGV4cGVjdHMgdGhlICVzIHJlY2lwZSB0byBiZSBhIGdpdCByZWNpcGUnICUgdGVzdHJlY2lwZSkKICAgICAgICAgIyBDbGVhbiB1cCBhbnl0aGluZyBpbiB0aGUgd29ya2Rpci9zeXNyb290L3NzdGF0ZSBjYWNoZQpAQCAtNjIzLDkgKzYyMyw5IEBACiAgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCiAgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gJXMnICUgdGVzdHJlY2lwZSkKICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGRpcikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnTWFrZWZpbGUnKSwgJ0V4dHJhY3RlZCBzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kJykKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHRlbXBkaXIsICdNYWtlZmlsZS5hbScpLCAnRXh0cmFjdGVkIHNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQnKQogICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSwgJ1dvcmtzcGFjZSBkaXJlY3Rvcnkgbm90IGNyZWF0ZWQuIGRldnRvb2wgb3V0cHV0OiAlcycgJSByZXN1bHQub3V0cHV0KQotICAgICAgICBtYXRjaGVzID0gZ2xvYi5nbG9iKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2FwcGVuZHMnLCAnbWtlbGZpbWFnZV8qLmJiYXBwZW5kJykpCisgICAgICAgIG1hdGNoZXMgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnYXBwZW5kcycsICdwc3BsYXNoXyouYmJhcHBlbmQnKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoZXMsICdiYmFwcGVuZCBub3QgY3JlYXRlZCcpCiAgICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cwogICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKQEAgLTg5OSw2ICs4OTksNyBAQAogICAgICAgICAgICAgZi53cml0ZSgnQkJGSUxFX1BBVFRFUk5fb2VzZWxmdGVzdHRlbXBsYXllciA9ICJeJHtMQVlFUkRJUn0vIlxuJykKICAgICAgICAgICAgIGYud3JpdGUoJ0JCRklMRV9QUklPUklUWV9vZXNlbGZ0ZXN0dGVtcGxheWVyID0gIjk5OSJcbicpCiAgICAgICAgICAgICBmLndyaXRlKCdCQkZJTEVfUEFUVEVSTl9JR05PUkVfRU1QVFlfb2VzZWxmdGVzdHRlbXBsYXllciA9ICIxIlxuJykKKyAgICAgICAgICAgIGYud3JpdGUoJ0xBWUVSU0VSSUVTX0NPTVBBVF9vZXNlbGZ0ZXN0dGVtcGxheWVyID0gIiR7TEFZRVJTRVJJRVNfQ09NUEFUX2NvcmV9IlxuJykKICAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICVzIHx8IHRydWUnICUgdGVtcGxheWVyZGlyKQogICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAlcycgJSB0ZW1wbGF5ZXJkaXIsIGN3ZD1zZWxmLmJ1aWxkZGlyKQogICAgICAgICAjIENyZWF0ZSB0aGUgYmJhcHBlbmQKQEAgLTk4Nyw4ICs5ODgsMTIgQEAKICAgICBAT0VUZXN0SUQoMTM3MSkKICAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZGF0ZV9yZWNpcGVfbG9jYWxfZmlsZXNfMihzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgbG9jYWwgc291cmNlIGZpbGVzIHN1cHBvcnQgd2hlbiBvZS1sb2NhbC1maWxlcyBpcyBpbiBHaXQiIiIKLSAgICAgICAgdGVzdHJlY2lwZSA9ICdsem8nCisgICAgICAgIHRlc3RyZWNpcGUgPSAnZGV2dG9vbC10ZXN0LWxvY2FsJwogICAgICAgICByZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHRlc3RyZWNpcGUpCisgICAgICAgIHJlY2lwZWRpciA9IG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBzdGF0dXMgLS1wb3JjZWxhaW4gLicsIGN3ZD1yZWNpcGVkaXIpCisgICAgICAgIGlmIHJlc3VsdC5vdXRwdXQuc3RyaXAoKToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnUmVjaXBlIGRpcmVjdG9yeSBmb3IgJXMgY29udGFpbnMgdW5jb21taXR0ZWQgY2hhbmdlcycgJSB0ZXN0cmVjaXBlKQogICAgICAgICAjIFNldHVwIHNyY3RyZWUgZm9yIG1vZGlmeWluZyB0aGUgcmVjaXBlCiAgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKICAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQpAQCAtMTAwMiw5ICsxMDA3LDkgQEAKICAgICAgICAgcnVuQ21kKCdnaXQgYWRkIG9lLWxvY2FsLWZpbGVzJywgY3dkPXRlbXBkaXIpCiAgICAgICAgIHJ1bkNtZCgnZ2l0IGNvbW1pdCAtbSAiQWRkIGxvY2FsIHNvdXJjZXMiJywgY3dkPXRlbXBkaXIpCiAgICAgICAgICMgRWRpdCAvIGNvbW1pdCBsb2NhbCBzb3VyY2VzCi0gICAgICAgIHJ1bkNtZCgnZWNobyAiIyBGb29iYXIiID4+IG9lLWxvY2FsLWZpbGVzL2FjaW5jbHVkZS5tNCcsIGN3ZD10ZW1wZGlyKQorICAgICAgICBydW5DbWQoJ2VjaG8gIiMgRm9vYmFyIiA+PiBvZS1sb2NhbC1maWxlcy9maWxlMScsIGN3ZD10ZW1wZGlyKQogICAgICAgICBydW5DbWQoJ2dpdCBjb21taXQgLWFtICJFZGl0IGV4aXN0aW5nIGZpbGUiJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJ1bkNtZCgnZ2l0IHJtIG9lLWxvY2FsLWZpbGVzL3J1bi1wdGVzdCcsIGN3ZD10ZW1wZGlyKQorICAgICAgICBydW5DbWQoJ2dpdCBybSBvZS1sb2NhbC1maWxlcy9maWxlMicsIGN3ZD10ZW1wZGlyKQogICAgICAgICBydW5DbWQoJ2dpdCBjb21taXQgLW0iUmVtb3ZlIGZpbGUiJywgY3dkPXRlbXBkaXIpCiAgICAgICAgIHJ1bkNtZCgnZWNobyAiRm9vIiA+IG9lLWxvY2FsLWZpbGVzL25ldy1sb2NhbCcsIGN3ZD10ZW1wZGlyKQogICAgICAgICBydW5DbWQoJ2dpdCBhZGQgb2UtbG9jYWwtZmlsZXMvbmV3LWxvY2FsJywgY3dkPXRlbXBkaXIpCkBAIC0xMDE2LDExICsxMDIxLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpKQogICAgICAgICAjIENoZWNrb3V0IHVubW9kaWZpZWQgZmlsZSB0byB3b3JraW5nIGNvcHkgLT4gZGV2dG9vbCBzaG91bGQgc3RpbGwgcGljawogICAgICAgICAjIHRoZSBtb2RpZmllZCB2ZXJzaW9uIGZyb20gSEVBRAotICAgICAgICBydW5DbWQoJ2dpdCBjaGVja291dCBIRUFEXiAtLSBvZS1sb2NhbC1maWxlcy9hY2luY2x1ZGUubTQnLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcnVuQ21kKCdnaXQgY2hlY2tvdXQgSEVBRF4gLS0gb2UtbG9jYWwtZmlsZXMvZmlsZTEnLCBjd2Q9dGVtcGRpcikKICAgICAgICAgcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgJXMnICUgdGVzdHJlY2lwZSkKICAgICAgICAgZXhwZWN0ZWRfc3RhdHVzID0gWygnIE0nLCAnLiovJXMkJyAlIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKCcgTScsICcuKi9hY2luY2x1ZGUubTQkJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoJyBEJywgJy4qL3J1bi1wdGVzdCQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnIE0nLCAnLiovZmlsZTEkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJyBEJywgJy4qL2ZpbGUyJCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc/PycsICcuKi9uZXctbG9jYWwkJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJz8/JywgJy4qLzAwMDEtQWRkLW5ldy1maWxlLnBhdGNoJCcpXQogICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIGV4cGVjdGVkX3N0YXR1cykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2Rpc3Ryb2RhdGEucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kaXN0cm9kYXRhLnB5CmluZGV4IDEyNTQwYWQuLjdiMjgwMDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2Rpc3Ryb2RhdGEucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGlzdHJvZGF0YS5weQpAQCAtOSw2ICs5LDExIEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKICAgICAgICAgc3VwZXIoRGlzdHJvZGF0YSwgY2xzKS5zZXRVcENsYXNzKCkKKyAgICAgICAgZmVhdHVyZSA9ICdJTkhFUklUICs9ICJkaXN0cm9kYXRhIlxuJworICAgICAgICBmZWF0dXJlICs9ICdMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCArPSAiIGNvbW1lcmNpYWwiXG4nCisKKyAgICAgICAgY2xzLndyaXRlX2NvbmZpZyhjbHMsIGZlYXR1cmUpCisgICAgICAgIGJpdGJha2UoJy1jIGNoZWNrcGtnIHdvcmxkJykKIAogICAgIEBPRVRlc3RJRCgxOTAyKQogICAgIGRlZiB0ZXN0X2NoZWNrcGtnKHNlbGYpOgpAQCAtMTgsMTEgKzIzLDYgQEAKICAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKICAgICAgICAgQXV0aG9yOiAgICAgIEFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+CiAgICAgICAgICIiIgotICAgICAgICBmZWF0dXJlID0gJ0lOSEVSSVQgKz0gImRpc3Ryb2RhdGEiXG4nCi0gICAgICAgIGZlYXR1cmUgKz0gJ0xJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUICs9ICIgY29tbWVyY2lhbCJcbicKLQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlKQotICAgICAgICBiaXRiYWtlKCctYyBjaGVja3BrZyB3b3JsZCcpCiAgICAgICAgIGNoZWNrcGtnX3Jlc3VsdCA9IG9wZW4ob3MucGF0aC5qb2luKGdldF9iYl92YXIoIkxPR19ESVIiKSwgImNoZWNrcGtnLmNzdiIpKS5yZWFkbGluZXMoKVsxOl0KICAgICAgICAgcmVncmVzc2VkX2ZhaWx1cmVzID0gW3BrZ19kYXRhWzBdIGZvciBwa2dfZGF0YSBpbiBbcGtnX2xpbmUuc3BsaXQoJ1x0JykgZm9yIHBrZ19saW5lIGluIGNoZWNrcGtnX3Jlc3VsdF0gaWYgcGtnX2RhdGFbMTFdID09ICdVTktOT1dOX0JST0tFTiddCiAgICAgICAgIHJlZ3Jlc3NlZF9zdWNjZXNzZXMgPSBbcGtnX2RhdGFbMF0gZm9yIHBrZ19kYXRhIGluIFtwa2dfbGluZS5zcGxpdCgnXHQnKSBmb3IgcGtnX2xpbmUgaW4gY2hlY2twa2dfcmVzdWx0XSBpZiBwa2dfZGF0YVsxMV0gPT0gJ0tOT1dOX0JST0tFTiddCkBAIC00MCwzICs0MCw2MCBAQAogYnV0IHRoZWlyIHJlY2lwZXMgY2xhaW0gb3RoZXJ3aXNlIGJ5IHNldHRpbmcgVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOLiBQbGVhc2UgcmVtb3ZlIHRoYXQgbGluZSBmcm9tIHRoZSByZWNpcGVzLgogIiIiICsgIlxuIi5qb2luKHJlZ3Jlc3NlZF9zdWNjZXNzZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4ocmVncmVzc2VkX2ZhaWx1cmVzKSA9PSAwIGFuZCBsZW4ocmVncmVzc2VkX3N1Y2Nlc3NlcykgPT0gMCwgbXNnKQorCisgICAgZGVmIHRlc3RfbWFpbnRhaW5lcnMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICAgVGVzdCB0aGF0IG9lLWNvcmUgcmVjaXBlcyBoYXZlIGEgbWFpbnRhaW5lcgorICAgICAgICBFeHBlY3RlZDogICAgQWxsIG9lLWNvcmUgcmVjaXBlcyAoZXhjZXB0IGEgZmV3IHNwZWNpYWwgc3RhdGljL3Rlc3Rpbmcgb25lcykgc2hvdWxkIGhhdmUgYSBtYWludGFpbmVyIGxpc3RlZCBpbiBtYWludGFpbmVycy5pbmMgZmlsZS4KKyAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiAgICAgIEFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+CisgICAgICAgICIiIgorICAgICAgICBkZWYgaXNfZXhjZXB0aW9uKHBrZyk6CisgICAgICAgICAgICBleGNlcHRpb25zID0gWyJwYWNrYWdlZ3JvdXAtIiwgImluaXRyYW1mcy0iLCAic3lzdGVtZC1tYWNoaW5lLXVuaXRzIiwgInRhcmdldC1zZGstcHJvdmlkZXMtZHVtbXkiXQorICAgICAgICAgICAgZm9yIGkgaW4gZXhjZXB0aW9uczoKKyAgICAgICAgICAgICAgICAgaWYgaSBpbiBwa2c6CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgZGVmIGlzX2luX29lX2NvcmUocmVjaXBlLCByZWNpcGVzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZWNpcGUgaW4gcmVjaXBlcy5rZXlzKCksICJSZWNpcGUgJXMgd2FzIG5vdCBpbiAnYml0YmFrZS1sYXllcnMgc2hvdy1yZWNpcGVzJyBvdXRwdXQiICUocmVjaXBlKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4ocmVjaXBlc1tyZWNpcGVdKSA+IDAsICInYml0YmFrZS1sYXllcnMgc2hvdy1yZWNpcGVzJyBjb3VsZCBub3QgZGV0ZXJtaW5lIHdoYXQgbGF5ZXIocykgYSByZWNpcGUgJXMgaXMgaW4iICUocmVjaXBlKSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZWNpcGVzW3JlY2lwZV0uaW5kZXgoJ21ldGEnKQorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBkZWYgZ2V0X3JlY2lwZV9sYXllcnMoKToKKyAgICAgICAgICAgIGltcG9ydCByZQorCisgICAgICAgICAgICByZWNpcGVzID0ge30KKyAgICAgICAgICAgIHJlY2lwZV9yZWdleCA9IHJlLmNvbXBpbGUoJ14oP1A8bmFtZT4uKik6JCcpCisgICAgICAgICAgICBsYXllcl9yZWdleCA9IHJlLmNvbXBpbGUoJ14gICg/UDxuYW1lPlxTKikgKycpCisgICAgICAgICAgICBvdXRwdXQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctcmVjaXBlcycpLm91dHB1dAorICAgICAgICAgICAgZm9yIGxpbmUgaW4gb3V0cHV0LnNwbGl0KCdcbicpOgorICAgICAgICAgICAgICAgIHJlY2lwZV9uYW1lX29iaiA9IHJlY2lwZV9yZWdleC5zZWFyY2gobGluZSkKKyAgICAgICAgICAgICAgICBpZiByZWNpcGVfbmFtZV9vYmo6CisgICAgICAgICAgICAgICAgICAgIHJlY2lwZV9uYW1lID0gcmVjaXBlX25hbWVfb2JqLmdyb3VwKCduYW1lJykKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlc1tyZWNpcGVfbmFtZV0gPSBbXQorICAgICAgICAgICAgICAgIHJlY2lwZV9sYXllcl9vYmogPSBsYXllcl9yZWdleC5zZWFyY2gobGluZSkKKyAgICAgICAgICAgICAgICBpZiByZWNpcGVfbGF5ZXJfb2JqOgorICAgICAgICAgICAgICAgICAgICBsYXllcl9uYW1lID0gcmVjaXBlX2xheWVyX29iai5ncm91cCgnbmFtZScpCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZXNbcmVjaXBlX25hbWVdLmFwcGVuZChsYXllcl9uYW1lKQorICAgICAgICAgICAgcmV0dXJuIHJlY2lwZXMKKworICAgICAgICBjaGVja3BrZ19yZXN1bHQgPSBvcGVuKG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCJMT0dfRElSIiksICJjaGVja3BrZy5jc3YiKSkucmVhZGxpbmVzKClbMTpdCisgICAgICAgIHJlY2lwZXNfbGF5ZXJzID0gZ2V0X3JlY2lwZV9sYXllcnMoKQorICAgICAgICBub19tYWludGFpbmVyX2xpc3QgPSBbcGtnX2RhdGFbMF0gZm9yIHBrZ19kYXRhIGluIFtwa2dfbGluZS5zcGxpdCgnXHQnKSBmb3IgcGtnX2xpbmUgaW4gY2hlY2twa2dfcmVzdWx0XSBcCisgICAgICAgICAgICBpZiBwa2dfZGF0YVsxNF0gPT0gJycgYW5kIGlzX2luX29lX2NvcmUocGtnX2RhdGFbMF0sIHJlY2lwZXNfbGF5ZXJzKSBhbmQgbm90IGlzX2V4Y2VwdGlvbihwa2dfZGF0YVswXSldCisgICAgICAgIG1zZyA9ICIiIgorVGhlIGZvbGxvd2luZyBwYWNrYWdlcyBkbyBub3QgaGF2ZSBhIG1haW50YWluZXIgYXNzaWduZWQgdG8gdGhlbS4gUGxlYXNlIGFkZCBhbiBlbnRyeSB0byBtZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jIGZpbGUuCisiIiIgKyAiXG4iLmpvaW4obm9fbWFpbnRhaW5lcl9saXN0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKG5vX21haW50YWluZXJfbGlzdCkgPT0gMCwgbXNnKQorCisgICAgICAgIHdpdGhfbWFpbnRhaW5lcl9saXN0ID0gW3BrZ19kYXRhWzBdIGZvciBwa2dfZGF0YSBpbiBbcGtnX2xpbmUuc3BsaXQoJ1x0JykgZm9yIHBrZ19saW5lIGluIGNoZWNrcGtnX3Jlc3VsdF0gXAorICAgICAgICAgICAgaWYgcGtnX2RhdGFbMTRdICE9ICcnIGFuZCBpc19pbl9vZV9jb3JlKHBrZ19kYXRhWzBdLCByZWNpcGVzX2xheWVycykgYW5kIG5vdCBpc19leGNlcHRpb24ocGtnX2RhdGFbMF0pXQorICAgICAgICBtc2cgPSAiIiIKK1RoZSBsaXN0IG9mIG9lLWNvcmUgcGFja2FnZXMgd2l0aCBtYWludGFpbmVycyBpcyBlbXB0eS4gVGhpcyBtYXkgaW5kaWNhdGUgdGhhdCB0aGUgdGVzdCBoYXMgcmVncmVzc2VkIGFuZCBuZWVkcyBmaXhpbmcuCisiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbih3aXRoX21haW50YWluZXJfbGlzdCkgPiAwLCBtc2cpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9lZmlib290cGFydGl0aW9uLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZWZpYm9vdHBhcnRpdGlvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzgzMjU2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZWZpYm9vdHBhcnRpdGlvbi5weQpAQCAtMCwwICsxLDQ1IEBACisjIEJhc2VkIG9uIHJ1bnFlbXUucHkgdGVzdCBmaWxlCisjCisjIENvcHlyaWdodCAoYykgMjAxNyBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KKyMKKworaW1wb3J0IHJlCisKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgYml0YmFrZSwgcnVucWVtdSwgZ2V0X2JiX3ZhcgorCitjbGFzcyBHZW5lcmljRUZJVGVzdChPRVNlbGZ0ZXN0VGVzdENhc2UpOgorICAgICIiIkVGSSBib290aW5nIHRlc3QgY2xhc3MiIiIKKworICAgIGJ1ZmZlciA9IFRydWUKKyAgICBjbWRfY29tbW9uID0gInJ1bnFlbXUgbm9ncmFwaGljIHNlcmlhbCB3aWMgb3ZtZiIKKyAgICBlZmlfcHJvdmlkZXIgPSAic3lzdGVtZC1ib290IgorICAgIGltYWdlID0gImNvcmUtaW1hZ2UtbWluaW1hbCIKKyAgICBtYWNoaW5lID0gInFlbXV4ODYtNjQiCisgICAgcmVjaXBlc19idWlsdCA9IEZhbHNlCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBMb2NhbChzZWxmKToKKyAgICAgICAgc3VwZXIoR2VuZXJpY0VGSVRlc3QsIHNlbGYpLnNldFVwTG9jYWwoc2VsZikKKworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhzZWxmLAorIiIiCitFRklfUFJPVklERVIgPSAiJXMiCitJTUFHRV9GU1RZUEVTX3BuLSVzX2FwcGVuZCA9ICIgd2ljIgorTUFDSElORSA9ICIlcyIKK01BQ0hJTkVfRkVBVFVSRVNfYXBwZW5kID0gIiBlZmkiCitXS1NfRklMRSA9ICJlZmktYm9vdGRpc2sud2tzLmluIgorSU1BR0VfSU5TVEFMTF9hcHBlbmQgPSAiIGdydWItZWZpIHN5c3RlbWQtYm9vdCBrZXJuZWwtaW1hZ2UtYnppbWFnZSIKKyIiIgorJSAoc2VsZi5lZmlfcHJvdmlkZXIsIHNlbGYuaW1hZ2UsIHNlbGYubWFjaGluZSkpCisgICAgICAgIGlmIG5vdCBzZWxmLnJlY2lwZXNfYnVpbHQ6CisgICAgICAgICAgICBiaXRiYWtlKCJvdm1mIikKKyAgICAgICAgICAgIGJpdGJha2Uoc2VsZi5pbWFnZSkKKyAgICAgICAgICAgIHNlbGYucmVjaXBlc19idWlsdCA9IFRydWUKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZXN0X2Jvb3RfZWZpKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGdlbmVyaWMgYm9vdCBwYXJ0aXRpb24gd2l0aCBxZW11IiIiCisgICAgICAgIGNtZCA9ICIlcyAlcyIgJSAoc2VsZi5jbWRfY29tbW9uLCBzZWxmLm1hY2hpbmUpCisgICAgICAgIHdpdGggcnVucWVtdShzZWxmLmltYWdlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHFlbXUucnVubmVyLmxvZ2dlZCwgIkZhaWxlZDogJXMiICUgY21kKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZ290b29sY2hhaW4ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9nb3Rvb2xjaGFpbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTIzMjU3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZ290b29sY2hhaW4ucHkKQEAgLTAsMCArMSw2NyBAQAoraW1wb3J0IGdsb2IKK2ltcG9ydCBvcworaW1wb3J0IHNodXRpbAoraW1wb3J0IHRlbXBmaWxlCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhcnMKKworCitjbGFzcyBvZUdvVG9vbGNoYWluU2VsZlRlc3QoT0VTZWxmdGVzdFRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBUZXN0IGNhc2VzIGZvciBPRSdzIEdvIHRvb2xjaGFpbgorICAgICIiIgorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBnZXRfc2RrX2Vudmlyb25tZW50KHRtcGRpcl9TREtRQSk6CisgICAgICAgIHBhdHRlcm4gPSBvcy5wYXRoLmpvaW4odG1wZGlyX1NES1FBLCAiZW52aXJvbm1lbnQtc2V0dXAtKiIpCisgICAgICAgICMgRklYTUU6IHRoaXMgaXMgYSB2ZXJ5IG5haXZlIGltcGxlbWVudGF0aW9uCisgICAgICAgIHJldHVybiBnbG9iLmdsb2IocGF0dGVybilbMF0KKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZ2V0X3Nka190b29sY2hhaW4oKToKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnU0RLX0RFUExPWScsICdUT09MQ0hBSU5fT1VUUFVUTkFNRSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGEtZ28tdG9vbGNoYWluIikKKyAgICAgICAgc2RrX2RlcGxveSA9IGJiX3ZhcnNbJ1NES19ERVBMT1knXQorICAgICAgICB0b29sY2hhaW5fbmFtZSA9IGJiX3ZhcnNbJ1RPT0xDSEFJTl9PVVRQVVROQU1FJ10KKyAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZGtfZGVwbG95LCB0b29sY2hhaW5fbmFtZSArICIuc2giKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwZXIob2VHb1Rvb2xjaGFpblNlbGZUZXN0LCBjbHMpLnNldFVwQ2xhc3MoKQorICAgICAgICBjbHMudG1wZGlyX1NES1FBID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J1NES1FBJykKKyAgICAgICAgY2xzLmdvX3BhdGggPSBvcy5wYXRoLmpvaW4oY2xzLnRtcGRpcl9TREtRQSwgImdvIikKKyAgICAgICAgIyBCdWlsZCB0aGUgU0RLIGFuZCBsb2NhdGUgaXQgaW4gREVQTE9ZRElSCisgICAgICAgIGJpdGJha2UoIm1ldGEtZ28tdG9vbGNoYWluIikKKyAgICAgICAgY2xzLnNka19wYXRoID0gb2VHb1Rvb2xjaGFpblNlbGZUZXN0LmdldF9zZGtfdG9vbGNoYWluKCkKKyAgICAgICAgIyBJbnN0YWxsIHRoZSBTREsgaW50byB0aGUgdG1wZGlyCisgICAgICAgIHJ1bkNtZCgic2ggJXMgLXkgLWQgXCIlc1wiIiAlIChjbHMuc2RrX3BhdGgsIGNscy50bXBkaXJfU0RLUUEpKQorICAgICAgICBjbHMuZW52X1NESyA9IG9lR29Ub29sY2hhaW5TZWxmVGVzdC5nZXRfc2RrX2Vudmlyb25tZW50KGNscy50bXBkaXJfU0RLUUEpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBzaHV0aWwucm10cmVlKGNscy50bXBkaXJfU0RLUUEsIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKKyAgICAgICAgc3VwZXIob2VHb1Rvb2xjaGFpblNlbGZUZXN0LCBjbHMpLnRlYXJEb3duQ2xhc3MoKQorCisgICAgZGVmIHJ1bl9zZGtfZ29fY29tbWFuZChzZWxmLCBnb2NtZCk6CisgICAgICAgIGNtZCA9ICJjZCAlczsgIiAlIHNlbGYudG1wZGlyX1NES1FBCisgICAgICAgIGNtZCA9IGNtZCArICIuICVzOyAiICUgc2VsZi5lbnZfU0RLCisgICAgICAgIGNtZCA9IGNtZCArICJleHBvcnQgR09QQVRIPSVzOyAiICUgc2VsZi5nb19wYXRoCisgICAgICAgIGNtZCA9IGNtZCArICIke0NST1NTX0NPTVBJTEV9Z28gJXMiICUgZ29jbWQKKyAgICAgICAgcmV0dXJuIHJ1bkNtZChjbWQpLnN0YXR1cworCisgICAgZGVmIHRlc3RfZ29fZGVwX2J1aWxkKHNlbGYpOgorICAgICAgICBwcm9qID0gImdpdGh1Yi5jb20vZ29sYW5nIgorICAgICAgICBuYW1lID0gImRlcCIKKyAgICAgICAgdmVyID0gInYwLjMuMSIKKyAgICAgICAgYXJjaGl2ZSA9ICIudGFyLmd6IgorICAgICAgICB1cmwgPSAiaHR0cHM6Ly8lcy8lcy9hcmNoaXZlLyVzJXMiICUgKHByb2osIG5hbWUsIHZlciwgYXJjaGl2ZSkKKworICAgICAgICBydW5DbWQoImNkICVzOyB3Z2V0ICVzIiAlIChzZWxmLnRtcGRpcl9TREtRQSwgdXJsKSkKKyAgICAgICAgcnVuQ21kKCJjZCAlczsgdGFyIC14ZiAlcyIgJSAoc2VsZi50bXBkaXJfU0RLUUEsIHZlcithcmNoaXZlKSkKKyAgICAgICAgcnVuQ21kKCJta2RpciAtcCAlcy9zcmMvJXMiICUgKHNlbGYuZ29fcGF0aCwgcHJvaikpCisgICAgICAgIHJ1bkNtZCgibXYgJXMvZGVwLTAuMy4xICVzL3NyYy8lcy8lcyIKKyAgICAgICAgICAgICAgICUgKHNlbGYudG1wZGlyX1NES1FBLCBzZWxmLmdvX3BhdGgsIHByb2osIG5hbWUpKQorICAgICAgICByZXR2ID0gc2VsZi5ydW5fc2RrX2dvX2NvbW1hbmQoJ2J1aWxkICAlcy8lcy9jbWQvZGVwJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAocHJvaiwgbmFtZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0diwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9IlJ1bm5pbmcgZ28gYnVpbGQgZmFpbGVkIGZvciAlcyIgJSBuYW1lKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW1hZ2VmZWF0dXJlcy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2ltYWdlZmVhdHVyZXMucHkKaW5kZXggMGZmYjY4Ni4uMDllMGIyMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW1hZ2VmZWF0dXJlcy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbWFnZWZlYXR1cmVzLnB5CkBAIC0yMTEsNyArMjExLDcgQEAKICAgICAgICAgaW1hZ2VfbmFtZSA9ICdjb3JlLWltYWdlLW1pbmltYWwnCiAKICAgICAgICAgaW1nX3R5cGVzID0gW2l0eXBlIGZvciBpdHlwZSBpbiBnZXRfYmJfdmFyKCJJTUFHRV9UWVBFUyIsIGltYWdlX25hbWUpLnNwbGl0KCkgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGl0eXBlIG5vdCBpbiAoJ2NvbnRhaW5lcicsICdlbGYnLCAnbXVsdGl1YmknKV0KKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpdHlwZSBub3QgaW4gKCdjb250YWluZXInLCAnZWxmJywgJ2YyZnMnLCAnbXVsdGl1YmknKV0KIAogICAgICAgICBjb25maWcgPSAnSU1BR0VfRlNUWVBFUyArPSAiJXMiXG4nXAogICAgICAgICAgICAgICAgICAnTUtVQklGU19BUkdTID89ICItbSAyMDQ4IC1lIDEyOTAyNCAtYyAyMDQ3IlxuJ1wKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL21ldGFfaWRlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbWV0YV9pZGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRmOWQzZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL21ldGFfaWRlLnB5CkBAIC0wLDAgKzEsNDkgQEAKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS5zZGsudXRpbHMuc2RrYnVpbGRwcm9qZWN0IGltcG9ydCBTREtCdWlsZFByb2plY3QKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgYml0YmFrZSwgZ2V0X2JiX3ZhcnMsIHJ1bkNtZAorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCBzaHV0aWwKKworY2xhc3MgTWV0YUlERShPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwZXIoTWV0YUlERSwgY2xzKS5zZXRVcENsYXNzKCkKKyAgICAgICAgYml0YmFrZSgnbWV0YS1pZGUtc3VwcG9ydCcpCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ01VTFRJTUFDSF9UQVJHRVRfU1lTJywgJ1RNUERJUicsICdDT1JFQkFTRSddKQorICAgICAgICBjbHMuZW52aXJvbm1lbnRfc2NyaXB0ID0gJ2Vudmlyb25tZW50LXNldHVwLSVzJyAlIGJiX3ZhcnNbJ01VTFRJTUFDSF9UQVJHRVRfU1lTJ10KKyAgICAgICAgY2xzLnRtcGRpciA9IGJiX3ZhcnNbJ1RNUERJUiddCisgICAgICAgIGNscy5lbnZpcm9ubWVudF9zY3JpcHRfcGF0aCA9ICclcy8lcycgJSAoY2xzLnRtcGRpciwgY2xzLmVudmlyb25tZW50X3NjcmlwdCkKKyAgICAgICAgY2xzLmNvcmViYXNlZGlyID0gYmJfdmFyc1snQ09SRUJBU0UnXQorICAgICAgICBjbHMudG1wZGlyX21ldGFpZGVRQSA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdtZXRhaWRlJykKKyAgICAgICAgCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgc2h1dGlsLnJtdHJlZShjbHMudG1wZGlyX21ldGFpZGVRQSwgaWdub3JlX2Vycm9ycz1UcnVlKQorICAgICAgICBzdXBlcihNZXRhSURFLCBjbHMpLnRlYXJEb3duQ2xhc3MoKQorCisgICAgQE9FVGVzdElEKDE5ODIpCisgICAgZGVmIHRlc3RfbWV0YV9pZGVfaGFkX2luc3RhbGxlZF9tZXRhX2lkZV9zdXBwb3J0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhzZWxmLmVudmlyb25tZW50X3NjcmlwdF9wYXRoKQorCisgICAgQE9FVGVzdElEKDE5ODMpCisgICAgZGVmIHRlc3RfbWV0YV9pZGVfY2FuX2NvbXBpbGVfY19wcm9ncmFtKHNlbGYpOgorICAgICAgICBydW5DbWQoJ2NwICVzL3Rlc3QuYyAlcycgJSAoc2VsZi50Yy5maWxlc19kaXIsIHNlbGYudG1wZGlyX21ldGFpZGVRQSkpCisgICAgICAgIHJ1bkNtZCgiY2QgJXM7IC4gJXM7ICRDQyB0ZXN0LmMgLWxtIiAlIChzZWxmLnRtcGRpcl9tZXRhaWRlUUEsIHNlbGYuZW52aXJvbm1lbnRfc2NyaXB0X3BhdGgpKQorICAgICAgICBjb21waWxlZF9maWxlID0gJyVzL2Eub3V0JyAlIHNlbGYudG1wZGlyX21ldGFpZGVRQQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhjb21waWxlZF9maWxlKQorCisgICAgQE9FVGVzdElEKDE5ODQpCisgICAgZGVmIHRlc3RfbWV0YV9pZGVfY2FuX2J1aWxkX2NwaW9fcHJvamVjdChzZWxmKToKKyAgICAgICAgZGxfZGlyID0gc2VsZi50ZC5nZXQoJ0RMX0RJUicsIE5vbmUpCisgICAgICAgIHNlbGYucHJvamVjdCA9IFNES0J1aWxkUHJvamVjdChzZWxmLnRtcGRpcl9tZXRhaWRlUUEgKyAiL2NwaW8vIiwgc2VsZi5lbnZpcm9ubWVudF9zY3JpcHRfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJodHRwczovL2Z0cC5nbnUub3JnL2dudS9jcGlvL2NwaW8tMi4xMi50YXIuZ3oiLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50bXBkaXJfbWV0YWlkZVFBLCBzZWxmLnRkWydEQVRFVElNRSddLCBkbF9kaXI9ZGxfZGlyKQorICAgICAgICBzZWxmLnByb2plY3QuZG93bmxvYWRfYXJjaGl2ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wcm9qZWN0LnJ1bl9jb25maWd1cmUoKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iUnVubmluZyBjb25maWd1cmUgZmFpbGVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnByb2plY3QucnVuX21ha2UoKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iUnVubmluZyBtYWtlIGZhaWxlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wcm9qZWN0LnJ1bl9pbnN0YWxsKCksIDAsCisgICAgICAgICAgICAgICAgICAgICAgICBtc2c9IlJ1bm5pbmcgbWFrZSBpbnN0YWxsIGZhaWxlZCIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW5xZW11LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVucWVtdS5weQppbmRleCA0N2Q0MWY1Li41ZWJkZDU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW5xZW11LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnFlbXUucHkKQEAgLTMsOSArMywxMCBAQAogIwogCiBpbXBvcnQgcmUKLQoraW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdGltZQogZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBiaXRiYWtlLCBydW5xZW11LCBnZXRfYmJfdmFyCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGJpdGJha2UsIHJ1bnFlbXUsIGdldF9iYl92YXIsIHJ1bkNtZAogZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECiAKIGNsYXNzIFJ1bnFlbXVUZXN0cyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgpAQCAtMTM2LDMgKzEzNyw3MCBAQAogICAgICAgICBjbWQgPSAiJXMgJXMiICUgKHNlbGYuY21kX2NvbW1vbiwgcm9vdGZzKQogICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocWVtdS5ydW5uZXIubG9nZ2VkLCAiRmFpbGVkOiAlcyIgJSBjbWQpCisKKyMgVGhpcyB0ZXN0IHdhcyBkZXNpZ25lZCBhcyBhIHNlcGFyYXRlIGNsYXNzIHRvIHRlc3QgdGhhdCBzaHV0ZG93bgorIyBjb21tYW5kIHdpbGwgc2h1dGRvd24gcWVtdSBhcyBleHBlY3RlZCBvbiBlYWNoIHFlbXUgYXJjaGl0ZWN0dXJlCisjIGJhc2VkIG9uIHRoZSBNQUNISU5FIGNvbmZpZ3VyYXRpb24gaW5zaWRlIHRoZSBjb25maWcgZmlsZQorIyAoZWcuIGxvY2FsLmNvbmYpLgorIworIyBUaGlzIHdhcyBkaWZmZXJlbnQgY29tcGFyZWQgdG8gUnVucWVtdVRlc3RzLCB3aGVyZSBSdW5xZW11VGVzdHMgd2FzCisjIGRlZGljYXRlZCBmb3IgTUFDSElORT1xZW11eDg2LTY0IHdoZXJlIGl0IHRlc3QgdGhhdCBxZW11eDg2LTY0IHdpbGwKKyMgYm9vdHVwIHZhcmlvdXMgZmlsZXN5c3RlbSB0eXBlcywgaW5jbHVkaW5nIGxpdmUgaW1hZ2UoaXNvIGFuZCBoZGRpbWcpCisjIHdoZXJlIGxpdmUgaW1hZ2Ugd2FzIG5vdCBzdXBwb3J0ZWQgb24gYWxsIHFlbXUgYXJjaGl0ZWN0dXJlLgorY2xhc3MgUWVtdVRlc3QoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHN1cGVyKFFlbXVUZXN0LCBjbHMpLnNldFVwQ2xhc3MoKQorICAgICAgICBjbHMucmVjaXBlID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKKyAgICAgICAgY2xzLm1hY2hpbmUgPSAgZ2V0X2JiX3ZhcignTUFDSElORScpCisgICAgICAgIGNscy5kZXBsb3lfZGlyX2ltYWdlID0gIGdldF9iYl92YXIoJ0RFUExPWV9ESVJfSU1BR0UnKQorICAgICAgICBjbHMuY21kX2NvbW1vbiA9ICJydW5xZW11IG5vZ3JhcGhpYyIKKyAgICAgICAgY2xzLnFlbXVib290X2NvbmYgPSAiJXMtJXMucWVtdWJvb3QuY29uZiIgJSAoY2xzLnJlY2lwZSwgY2xzLm1hY2hpbmUpCisgICAgICAgIGNscy5xZW11Ym9vdF9jb25mID0gb3MucGF0aC5qb2luKGNscy5kZXBsb3lfZGlyX2ltYWdlLCBjbHMucWVtdWJvb3RfY29uZikKKyAgICAgICAgYml0YmFrZShjbHMucmVjaXBlKQorCisgICAgZGVmIF9zdGFydF9xZW11X3NodXRkb3duX2NoZWNrX2lmX3NodXRkb3duX3N1Y2NlZWRlZChzZWxmLCBxZW11LCB0aW1lb3V0KToKKyAgICAgICAgcWVtdS5ydW5fc2VyaWFsKCJzaHV0ZG93biAtaCBub3ciKQorICAgICAgICAjIFN0b3AgdGhyZWFkIHdpbGwgc3RvcCB0aGUgTG9nZ2luZ1RocmVhZCBpbnN0YW5jZSB1c2VkIGZvciBsb2dnaW5nCisgICAgICAgICMgcWVtdSB0aHJvdWdoIHNlcmlhbCBjb25zb2xlLCBzdG9wIHRocmVhZCB3aWxsIHByZXZlbnQgdGhpcyBjb2RlCisgICAgICAgICMgZnJvbSBmYWNpbmcgZXhjZXB0aW9uIChDb25zb2xlIGNvbm5lY3Rpb24gY2xvc2VkIHVuZXhwZWN0ZWRseSkKKyAgICAgICAgIyB3aGVuIHFlbXUgd2FzIHNodXRkb3duIGJ5IHRoZSBhYm92ZSBzaHV0ZG93biBjb21tYW5kCisgICAgICAgIHFlbXUucnVubmVyLnN0b3BfdGhyZWFkKCkKKyAgICAgICAgdGltZV90cmFjayA9IDAKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGlzX2FsaXZlID0gcWVtdS5jaGVjaygpCisgICAgICAgICAgICBpZiBub3QgaXNfYWxpdmU6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIGlmIHRpbWVfdHJhY2sgPiB0aW1lb3V0OgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgdGltZS5zbGVlcCgxKQorICAgICAgICAgICAgdGltZV90cmFjayArPSAxCisKKyAgICBkZWYgdGVzdF9xZW11X2Nhbl9zaHV0ZG93bihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMoc2VsZi5xZW11Ym9vdF9jb25mKQorICAgICAgICBjbWQgPSAiJXMgJXMiICUgKHNlbGYuY21kX2NvbW1vbiwgc2VsZi5xZW11Ym9vdF9jb25mKQorICAgICAgICBzaHV0ZG93bl90aW1lb3V0ID0gMTIwCisgICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKKyAgICAgICAgICAgIHFlbXVfc2h1dGRvd25fc3VjY2VlZGVkID0gc2VsZi5fc3RhcnRfcWVtdV9zaHV0ZG93bl9jaGVja19pZl9zaHV0ZG93bl9zdWNjZWVkZWQocWVtdSwgc2h1dGRvd25fdGltZW91dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxZW11X3NodXRkb3duX3N1Y2NlZWRlZCwgJ0ZhaWxlZDogJXMgZG9lcyBub3Qgc2h1dGRvd24gd2l0aGluIHRpbWVvdXQoJXMpJyAlIChzZWxmLm1hY2hpbmUsIHNodXRkb3duX3RpbWVvdXQpKQorCisgICAgIyBOZWVkIHRvIGhhdmUgcG9ydG1hcC9ycGNiaW5kIHJ1bm5pbmcgdG8gYWxsb3cgdGhpcyB0ZXN0IHRvIHdvcmsgYW5kCisgICAgIyBjdXJyZW50IGF1dG9idWlsZGVyIHNldHVwIGRvZXMgbm90IGhhdmUgdGhpcy4KKyAgICBkZWYgZGlzYWJsZWRfdGVzdF9xZW11X2Nhbl9ib290X25mc19hbmRfc2h1dGRvd24oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKHNlbGYucWVtdWJvb3RfY29uZikKKyAgICAgICAgYml0YmFrZSgnbWV0YS1pZGUtc3VwcG9ydCcpCisgICAgICAgIHJvb3Rmc190YXIgPSAiJXMtJXMudGFyLmJ6MiIgJSAoc2VsZi5yZWNpcGUsIHNlbGYubWFjaGluZSkKKyAgICAgICAgcm9vdGZzX3RhciA9IG9zLnBhdGguam9pbihzZWxmLmRlcGxveV9kaXJfaW1hZ2UsIHJvb3Rmc190YXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKHJvb3Rmc190YXIpCisgICAgICAgIHRtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdxZW11X25mcycpCisgICAgICAgIHRtcGRpcl9uZnMgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnbmZzJykKKyAgICAgICAgY21kX2V4dHJhY3RfbmZzID0gJ3J1bnFlbXUtZXh0cmFjdC1zZGsgJXMgJXMnICUgKHJvb3Rmc190YXIsIHRtcGRpcl9uZnMpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZChjbWRfZXh0cmFjdF9uZnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cywgInJ1bnFlbXUtZXh0cmFjdC1zZGsgZGlkbid0IHJ1biBhcyBleHBlY3RlZC4gJXMiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgY21kID0gIiVzIG5mcyAlcyAlcyIgJSAoc2VsZi5jbWRfY29tbW9uLCBzZWxmLnFlbXVib290X2NvbmYsIHRtcGRpcl9uZnMpCisgICAgICAgIHNodXRkb3duX3RpbWVvdXQgPSAxMjAKKyAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgorICAgICAgICAgICAgcWVtdV9zaHV0ZG93bl9zdWNjZWVkZWQgPSBzZWxmLl9zdGFydF9xZW11X3NodXRkb3duX2NoZWNrX2lmX3NodXRkb3duX3N1Y2NlZWRlZChxZW11LCBzaHV0ZG93bl90aW1lb3V0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHFlbXVfc2h1dGRvd25fc3VjY2VlZGVkLCAnRmFpbGVkOiAlcyBkb2VzIG5vdCBzaHV0ZG93biB3aXRoaW4gdGltZW91dCglcyknICUgKHNlbGYubWFjaGluZSwgc2h1dGRvd25fdGltZW91dCkpCisgICAgICAgIHJ1bkNtZCgncm0gLXJmICVzJyAlIHRtcGRpcikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnRpbWVfdGVzdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnRpbWVfdGVzdC5weQppbmRleCAyNTI3MGI3Li45YzliNGIzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW50aW1lX3Rlc3QucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVudGltZV90ZXN0LnB5CkBAIC0xNjcsNTUgKzE2Nyw2IEBACiAKIGNsYXNzIFBvc3RpbnN0KE9FU2VsZnRlc3RUZXN0Q2FzZSk6CiAgICAgQE9FVGVzdElEKDE1NDApCi0gICAgZGVmIHRlc3RfdmVyaWZ5X3Bvc3RpbnN0KHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogVGhlIHB1cnBvc2Ugb2YgdGhpcyB0ZXN0IGlzIHRvIHZlcmlmeSB0aGUgZXhlY3V0aW9uIG9yZGVyIG9mIHBvc3RpbnN0IEJ1Z3ppbGxhIElEOiBbNTMxOV0KLSAgICAgICAgRXhwZWN0ZWQgOgotICAgICAgICAxLiBDb21waWxlIGEgbWluaW1hbCBpbWFnZS4KLSAgICAgICAgMi4gVGhlIGNvbXBpbGVkIGltYWdlIHdpbGwgYWRkIHRoZSBjcmVhdGVkIGxheWVyIHdpdGggdGhlIHJlY2lwZXMgcG9zdGluc3RbIGFiZHB0XQotICAgICAgICAzLiBSdW4gcWVtdXg4NgotICAgICAgICA0LiBWYWxpZGF0ZSB0aGUgdGFzayBleGVjdXRpb24gb3JkZXIKLSAgICAgICAgQXV0aG9yOiBGcmFuY2lzY28gUGVkcmF6YSA8ZnJhbmNpc2NvLmoucGVkcmF6YS5nb256YWxlekBpbnRlbC5jb20+Ci0gICAgICAgICIiIgotICAgICAgICBmZWF0dXJlcyA9ICdJTkhFUklUICs9ICJ0ZXN0aW1hZ2UiXG4nCi0gICAgICAgIGZlYXR1cmVzICs9ICdDT1JFX0lNQUdFX0VYVFJBX0lOU1RBTEwgKz0gInBvc3RpbnN0LWF0LXJvb3RmcyBcCi1wb3N0aW5zdC1kZWxheWVkLWEgXAotcG9zdGluc3QtZGVsYXllZC1iIFwKLXBvc3RpbnN0LWRlbGF5ZWQtZCBcCi1wb3N0aW5zdC1kZWxheWVkLXAgXAotcG9zdGluc3QtZGVsYXllZC10IFwKLSJcbicKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCi0KLSAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsIC1mICcpCi0KLSAgICAgICAgcG9zdGluc3RfbGlzdCA9IFsnMTAwLXBvc3RpbnN0LWF0LXJvb3RmcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJzEwMS1wb3N0aW5zdC1kZWxheWVkLWEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICcxMDItcG9zdGluc3QtZGVsYXllZC1iJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnMTAzLXBvc3RpbnN0LWRlbGF5ZWQtZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJzEwNC1wb3N0aW5zdC1kZWxheWVkLXAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICcxMDUtcG9zdGluc3QtZGVsYXllZC10J10KLSAgICAgICAgcGF0aF93b3JrZGlyID0gZ2V0X2JiX3ZhcignV09SS0RJUicsJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCi0gICAgICAgIHdvcmtzcGFjZWRpciA9ICd0ZXN0aW1hZ2UvcWVtdV9ib290X2xvZycKLSAgICAgICAgd29ya3NwYWNlZGlyID0gb3MucGF0aC5qb2luKHBhdGhfd29ya2Rpciwgd29ya3NwYWNlZGlyKQotICAgICAgICByZXhwID0gcmUuY29tcGlsZSgiXlJ1bm5pbmcgcG9zdGluc3QgLiovKD9QPHBvc3RpbnN0Pi4qKVwuXC5cLiQiKQotICAgICAgICB3aXRoIHJ1bnFlbXUoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpIGFzIHFlbXU6Ci0gICAgICAgICAgICB3aXRoIG9wZW4od29ya3NwYWNlZGlyKSBhcyBmOgotICAgICAgICAgICAgICAgIGZvdW5kID0gRmFsc2UKLSAgICAgICAgICAgICAgICBpZHggPSAwCi0gICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZi5yZWFkbGluZXMoKToKLSAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKS5yZXBsYWNlKCJeTSIsIiIpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lOiAjIFRvIGF2b2lkIGVtcHR5IGxpbmVzCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICBtID0gcmV4cC5zZWFyY2gobGluZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9zdGluc3RfbGlzdFtpZHhdLCBtLmdyb3VwKCdwb3N0aW5zdCcpLCAiRmFpbCIpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZHggPSBpZHgrMQotICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgZm91bmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlkeCwgbGVuKHBvc3RpbnN0X2xpc3QpLCAiTm90IGZvdW5kIGFsbCBwb3N0aW5zdHMiKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQogICAgIEBPRVRlc3RJRCgxNTQ1KQogICAgIGRlZiB0ZXN0X3Bvc3RpbnN0X3Jvb3Rmc19hbmRfYm9vdChzZWxmKToKICAgICAgICAgIiIiCkBAIC0yMzQsMTYgKzE4NSwyMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGluaXRpYWxpemF0aW9uIG1hbmFnZXJzOiBzeXN2aW5pdCBhbmQgc3lzdGVtZC4KIAogICAgICAgICAiIiIKLSAgICAgICAgZmlsZV9yb290ZnNfbmFtZSA9ICJ0aGlzLXdhcy1jcmVhdGVkLWF0LXJvb3Rmc3RpbWUiCi0gICAgICAgIGZpbGVib290X25hbWUgPSAidGhpcy13YXMtY3JlYXRlZC1hdC1maXJzdC1ib290IgotICAgICAgICByb290ZnNfcGtnID0gJ3Bvc3RpbnN0LWF0LXJvb3RmcycKLSAgICAgICAgYm9vdF9wa2cgPSAncG9zdGluc3QtZGVsYXllZC1hJworCisgICAgICAgIGltcG9ydCBvZS5wYXRoCisKKyAgICAgICAgdmFycyA9IGdldF9iYl92YXJzKCgiSU1BR0VfUk9PVEZTIiwgInN5c2NvbmZkaXIiKSwgImNvcmUtaW1hZ2UtbWluaW1hbCIpCisgICAgICAgIHJvb3RmcyA9IHZhcnNbIklNQUdFX1JPT1RGUyJdCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJvb3RmcykKKyAgICAgICAgc3lzY29uZmRpciA9IHZhcnNbInN5c2NvbmZkaXIiXQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShzeXNjb25mZGlyKQorICAgICAgICAjIE5lZWQgdG8gdXNlIG9lLnBhdGggaGVyZSBhcyBzeXNjb25mZGlyIHN0YXJ0cyB3aXRoIC8KKyAgICAgICAgaG9zdHRlc3RkaXIgPSBvZS5wYXRoLmpvaW4ocm9vdGZzLCBzeXNjb25mZGlyLCAicG9zdGluc3QtdGVzdCIpCisgICAgICAgIHRhcmdldHRlc3RkaXIgPSBvcy5wYXRoLmpvaW4oc3lzY29uZmRpciwgInBvc3RpbnN0LXRlc3QiKQogCiAgICAgICAgIGZvciBpbml0X21hbmFnZXIgaW4gKCJzeXN2aW5pdCIsICJzeXN0ZW1kIik6CiAgICAgICAgICAgICBmb3IgY2xhc3NlcyBpbiAoInBhY2thZ2VfcnBtIiwgInBhY2thZ2VfZGViIiwgInBhY2thZ2VfaXBrIik6CiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoaW5pdF9tYW5hZ2VyPWluaXRfbWFuYWdlciwgcGFja2FnZV9jbGFzcz1jbGFzc2VzKToKLSAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgPSAnTUFDSElORSA9ICJxZW11eDg2IlxuJwotICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnQ09SRV9JTUFHRV9FWFRSQV9JTlNUQUxMICs9ICIlcyAlcyAiXG4nJSAocm9vdGZzX3BrZywgYm9vdF9wa2cpCisgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzID0gJ0NPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTCA9ICJwb3N0aW5zdC1kZWxheWVkLWIiXG4nCiAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdJTUFHRV9GRUFUVVJFUyArPSAicGFja2FnZS1tYW5hZ2VtZW50IGVtcHR5LXJvb3QtcGFzc3dvcmQiXG4nCiAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdQQUNLQUdFX0NMQVNTRVMgPSAiJXMiXG4nICUgY2xhc3NlcwogICAgICAgICAgICAgICAgICAgICBpZiBpbml0X21hbmFnZXIgPT0gInN5c3RlbWQiOgpAQCAtMjU1LDEzICsyMTIsNDkgQEAKIAogICAgICAgICAgICAgICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQogCi0gICAgICAgICAgICAgICAgICAgIGZpbGVfcm9vdGZzX2NyZWF0ZWQgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignSU1BR0VfUk9PVEZTJywgImNvcmUtaW1hZ2UtbWluaW1hbCIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfcm9vdGZzX25hbWUpCi0gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gb3MucGF0aC5pc2ZpbGUoZmlsZV9yb290ZnNfY3JlYXRlZCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCAiRmlsZSAlcyB3YXMgbm90IGNyZWF0ZWQgYXQgcm9vdGZzIHRpbWUgYnkgJXMiICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGVfcm9vdGZzX25hbWUsIHJvb3Rmc19wa2cpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGhvc3R0ZXN0ZGlyLCAicm9vdGZzIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJvb3RmcyBzdGF0ZSBmaWxlIHdhcyBub3QgY3JlYXRlZCIpCiAKLSAgICAgICAgICAgICAgICAgICAgdGVzdGNvbW1hbmQgPSAnbHMgL2V0Yy8nICsgZmlsZWJvb3RfbmFtZQogICAgICAgICAgICAgICAgICAgICB3aXRoIHJ1bnFlbXUoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpIGFzIHFlbXU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHFlbXUucnVuX3NlcmlhbCgiLWYgL2V0Yy8iICsgZmlsZWJvb3RfbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCAnRmlsZSAlcyB3YXMgbm90IGNyZWF0ZWQgYXQgZmlyc3QgYm9vdCAoJXMpJyAlIChmaWxlYm9vdF9uYW1lLCBvdXRwdXQpKQorICAgICAgICAgICAgICAgICAgICAgICAgIyBNYWtlIHRoZSB0ZXN0IGVjaG8gYSBzdHJpbmcgYW5kIHNlYXJjaCBmb3IgdGhhdCBhcworICAgICAgICAgICAgICAgICAgICAgICAgIyBydW5fc2VyaWFsKCkncyBzdGF0dXMgY29kZSBpcyB1c2VsZXNzLicKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiAoInJvb3RmcyIsICJkZWxheWVkLWEiLCAiZGVsYXllZC1iIik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBxZW11LnJ1bl9zZXJpYWwoInRlc3QgLWYgJXMgJiYgZWNobyBmb3VuZCIgJSBvcy5wYXRoLmpvaW4odGFyZ2V0dGVzdGRpciwgZmlsZW5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LCAiZm91bmQiLCAiJXMgd2FzIG5vdCBwcmVzZW50IG9uIGJvb3QiICUgZmlsZW5hbWUpCisKKworCisgICAgZGVmIHRlc3RfZmFpbGluZ19wb3N0aW5zdChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgICAgICBUaGUgcHVycG9zZSBvZiB0aGlzIHRlc3QgY2FzZSBpcyB0byB2ZXJpZnkgdGhhdCBwb3N0LWluc3RhbGxhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0cyB0aGF0IGNvbnRhaW4gZXJyb3JzIGFyZSBwcm9wZXJseSByZXBvcnRlZC4KKyAgICAgICAgRXhwZWN0ZWQ6ICAgICAgIFRoZSBzY3JpcHRsZXQgZmFpbHVyZSBpcyBwcm9wZXJseSByZXBvcnRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmaWxlIHRoYXQgaXMgY3JlYXRlZCBhZnRlciB0aGUgZXJyb3IgaW4gdGhlIHNjcmlwdGxldCBpcyBub3QgcHJlc2VudC4KKyAgICAgICAgUHJvZHVjdDogb2UtY29yZQorICAgICAgICBBdXRob3I6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+CisgICAgICAgICIiIgorCisgICAgICAgIGltcG9ydCBvZS5wYXRoCisKKyAgICAgICAgdmFycyA9IGdldF9iYl92YXJzKCgiSU1BR0VfUk9PVEZTIiwgInN5c2NvbmZkaXIiKSwgImNvcmUtaW1hZ2UtbWluaW1hbCIpCisgICAgICAgIHJvb3RmcyA9IHZhcnNbIklNQUdFX1JPT1RGUyJdCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJvb3RmcykKKyAgICAgICAgc3lzY29uZmRpciA9IHZhcnNbInN5c2NvbmZkaXIiXQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShzeXNjb25mZGlyKQorICAgICAgICAjIE5lZWQgdG8gdXNlIG9lLnBhdGggaGVyZSBhcyBzeXNjb25mZGlyIHN0YXJ0cyB3aXRoIC8KKyAgICAgICAgaG9zdHRlc3RkaXIgPSBvZS5wYXRoLmpvaW4ocm9vdGZzLCBzeXNjb25mZGlyLCAicG9zdGluc3QtdGVzdCIpCisKKyAgICAgICAgZm9yIGNsYXNzZXMgaW4gKCJwYWNrYWdlX3JwbSIsICJwYWNrYWdlX2RlYiIsICJwYWNrYWdlX2lwayIpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocGFja2FnZV9jbGFzcz1jbGFzc2VzKToKKyAgICAgICAgICAgICAgICBmZWF0dXJlcyA9ICdDT1JFX0lNQUdFX0VYVFJBX0lOU1RBTEwgPSAicG9zdGluc3Qtcm9vdGZzLWZhaWxpbmciXG4nCisgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ1BBQ0tBR0VfQ0xBU1NFUyA9ICIlcyJcbicgJSBjbGFzc2VzCisgICAgICAgICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisgICAgICAgICAgICAgICAgYmJfcmVzdWx0ID0gYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChiYl9yZXN1bHQub3V0cHV0LmZpbmQoIkludGVudGlvbmFsbHkgZmFpbGluZyBwb3N0aW5zdGFsbCBzY3JpcHRsZXRzIG9mIFsncG9zdGluc3Qtcm9vdGZzLWZhaWxpbmcnXSB0byBkZWZlciB0aGVtIHRvIGZpcnN0IGJvb3QgaXMgZGVwcmVjYXRlZC4iKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgIldhcm5pbmcgYWJvdXQgYSBmYWlsZWQgc2NyaXB0bGV0IG5vdCBmb3VuZCBpbiBiaXRiYWtlIG91dHB1dDogJXMiICUoYmJfcmVzdWx0Lm91dHB1dCkpCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGhvc3R0ZXN0ZGlyLCAicm9vdGZzLWJlZm9yZS1mYWlsdXJlIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJvb3Rmcy1iZWZvcmUtZmFpbHVyZSBmaWxlIHdhcyBub3QgY3JlYXRlZCIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oaG9zdHRlc3RkaXIsICJyb290ZnMtYWZ0ZXItZmFpbHVyZSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyb290ZnMtYWZ0ZXItZmFpbHVyZSBmaWxlIHdhcyBjcmVhdGVkIikKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc2lnbmluZy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NpZ25pbmcucHkKaW5kZXggYjNkMWE4Mi4uYTc1MGNmYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc2lnbmluZy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zaWduaW5nLnB5CkBAIC04Nyw3ICs4Nyw3IEBACiAgICAgICAgIHJldCA9IHJ1bkNtZCgnJXMvcnBta2V5cyAtLWRlZmluZSAiX2RicGF0aCAlcyIgLS1jaGVja3NpZyAlcycgJQogICAgICAgICAgICAgICAgICAgICAgKHN0YWdpbmdfYmluZGlyX25hdGl2ZSwgcnBtZGIsIHBrZ19kZXBsb3kpKQogICAgICAgICAjIHRtcC9kZXBsb3kvcnBtL2k1ODYvZWQtMS45LXIwLmk1ODYucnBtOiByc2Egc2hhMSBtZDUgT0sKLSAgICAgICAgc2VsZi5hc3NlcnRJbigncnNhIHNoYTEgKG1kNSkgcGdwIG1kNSBPSycsIHJldC5vdXRwdXQsICdQYWNrYWdlIHNpZ25lZCBpbmNvcnJlY3RseS4nKQorICAgICAgICBzZWxmLmFzc2VydEluKCdkaWdlc3RzIHNpZ25hdHVyZXMgT0snLCByZXQub3V0cHV0LCAnUGFja2FnZSBzaWduZWQgaW5jb3JyZWN0bHkuJykKICAgICAgICAgc2h1dGlsLnJtdHJlZShycG1kYikKIAogICAgICAgICAjQ2hlY2sgdGhhdCBhbiBpbWFnZSBjYW4gYmUgYnVpbHQgZnJvbSBzaWduZWQgcGFja2FnZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NzdGF0ZXRlc3RzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRldGVzdHMucHkKaW5kZXggNDc5MDA4OC4uN2IwMDhlNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRldGVzdHMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRldGVzdHMucHkKQEAgLTIsMTUgKzIsNTEgQEAKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBnbG9iCiBpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHRlbXBmaWxlCiAKIGZyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfdGVzdF9sYXllcgorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF90ZXN0X2xheWVyLCBjcmVhdGVfdGVtcF9sYXllcgogZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2VzLnNzdGF0ZSBpbXBvcnQgU1N0YXRlQmFzZQogZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECiAKIGltcG9ydCBiYi5zaWdnZW4KIAogY2xhc3MgU1N0YXRlVGVzdHMoU1N0YXRlQmFzZSk6CisgICAgZGVmIHRlc3RfYXV0b3Jldl9zc3RhdGVfd29ya3Moc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGEgZ2l0IHJlcG9zaXRvcnkgd2hpY2ggY2hhbmdlcyBpcyBjb3JyZWN0bHkgaGFuZGxlZCBieSBTUkNSRVYgPSAke0FVVE9SRVZ9CisgICAgICAgICMgd2hlbiBQViBkb2VzIG5vdCBjb250YWluIFNSQ1BWCisKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdvZXFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBjcmVhdGVfdGVtcF9sYXllcih0ZW1wZGlyLCAnc2VsZnRlc3RyZWNpcGV0b29sJykKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICVzJyAlIHRlbXBkaXIpCisgICAgICAgIHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgYWRkLWxheWVyICVzJyAlIHRlbXBkaXIpCisKKyAgICAgICAgIyBVc2UgZGJ1cy13YWl0IGFzIGEgbG9jYWwgZ2l0IHJlcG8gd2UgY2FuIGFkZCBhIGNvbW1pdCBiZXR3ZWVuIHR3byBidWlsZHMgaW4KKyAgICAgICAgcG4gPSAnZGJ1cy13YWl0JworICAgICAgICBzcmNyZXYgPSAnNmNjNjA3N2EzNmZlMjY0OGE1Zjk5M2ZlN2MxNmM5NjMyZjk0NjUxNycKKyAgICAgICAgdXJsID0gJ2dpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2RidXMtd2FpdCcKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY2xvbmUgJXMgbm9uYW1lJyAlIHVybCwgY3dkPXRlbXBkaXIpCisgICAgICAgIHNyY2RpciA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAnbm9uYW1lJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgcmVzZXQgLS1oYXJkICVzJyAlIHNyY3JldiwgY3dkPXNyY2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzcmNkaXIsICdjb25maWd1cmUuYWMnKSksICdVbmFibGUgdG8gZmluZCBjb25maWd1cmUgc2NyaXB0IGluIHNvdXJjZSBkaXJlY3RvcnknKQorCisgICAgICAgIHJlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgInJlY2lwZXMtdGVzdCIsICJkYnVzLXdhaXQtdGVzdCIsICdkYnVzLXdhaXQtdGVzdF9naXQuYmInKQorICAgICAgICBvcy5tYWtlZGlycyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSkpCisgICAgICAgIHNyY3VyaSA9ICdnaXQ6Ly8nICsgc3JjZGlyICsgJztwcm90b2NvbD1maWxlJworICAgICAgICByZXN1bHQgPSBydW5DbWQoWydyZWNpcGV0b29sJywgJ2NyZWF0ZScsICctbycsIHJlY2lwZWZpbGUsIHNyY3VyaV0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShyZWNpcGVmaWxlKSwgJ3JlY2lwZXRvb2wgZGlkIG5vdCBjcmVhdGUgcmVjaXBlIGZpbGU7IG91dHB1dDpcbiVzJyAlIHJlc3VsdC5vdXRwdXQpCisKKyAgICAgICAgd2l0aCBvcGVuKHJlY2lwZWZpbGUsICdhJykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoJ1NSQ1JFViA9ICIke0FVVE9SRVZ9IlxuJykKKyAgICAgICAgICAgIGYud3JpdGUoJ1BWID0gIjEuMCJcbicpCisKKyAgICAgICAgYml0YmFrZSgiZGJ1cy13YWl0LXRlc3QgLWMgZmV0Y2giKQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNyY2RpciwgImJhci50eHQiKSwgInciKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgiZm9vIikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgYWRkIGJhci50eHQ7IGdpdCBjb21taXQgLWFzbSAiYWRkIGJhciInLCBjd2Q9c3JjZGlyKQorICAgICAgICBiaXRiYWtlKCJkYnVzLXdhaXQtdGVzdCAtYyB1bnBhY2siKQorCiAKICAgICAjIFRlc3Qgc3N0YXRlIGZpbGVzIGNyZWF0aW9uIGFuZCB0aGVpciBsb2NhdGlvbgogICAgIGRlZiBydW5fdGVzdF9zc3RhdGVfY3JlYXRpb24oc2VsZiwgdGFyZ2V0cywgZGlzdHJvX3NwZWNpZmljPVRydWUsIGRpc3Ryb19ub25zcGVjaWZpYz1UcnVlLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlLCBzaG91bGRfcGFzcz1UcnVlKToKQEAgLTQ5MCw3ICs1MjYsNyBAQAogICAgICAgICAjIHRoaXMgaXMgYW4gZXhwZW5zaXZlIGNvbXB1dGF0aW9uLCB0aHVzIGp1c3QgY29tcGFyZSB0aGUgZmlyc3QgJ21heF9zaWdmaWxlc190b19jb21wYXJlJyBrIGZpbGVzCiAgICAgICAgIG1heF9zaWdmaWxlc190b19jb21wYXJlID0gMjAKICAgICAgICAgZmlyc3QsIHJlc3QgPSBmaWxlc1s6bWF4X3NpZ2ZpbGVzX3RvX2NvbXBhcmVdLCBmaWxlc1ttYXhfc2lnZmlsZXNfdG9fY29tcGFyZTpdCi0gICAgICAgIGNvbXBhcmVfc2lnZmlsZXMoZmlyc3QsIGZpbGVzMS5rZXlzKCksIGZpbGVzMi5rZXlzKCksIGNvbXBhcmU9VHJ1ZSkKLSAgICAgICAgY29tcGFyZV9zaWdmaWxlcyhyZXN0LCBmaWxlczEua2V5cygpLCBmaWxlczIua2V5cygpLCBjb21wYXJlPUZhbHNlKQorICAgICAgICBjb21wYXJlX3NpZ2ZpbGVzKGZpcnN0LCBmaWxlczEsIGZpbGVzMiwgY29tcGFyZT1UcnVlKQorICAgICAgICBjb21wYXJlX3NpZ2ZpbGVzKHJlc3QsIGZpbGVzMSwgZmlsZXMyLCBjb21wYXJlPUZhbHNlKQogCiAgICAgICAgIHNlbGYuZmFpbCgic3N0YXRlIGhhc2hlcyBub3QgaWRlbnRpY2FsLiIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy93aWMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy93aWMucHkKaW5kZXggNjUxZDU3NS4uYjg0NDY2ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvd2ljLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3dpYy5weQpAQCAtNjIzLDcgKzYyMyw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsocGF0aCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5yZWFscGF0aChwYXRoKSkpCiAKLSAgICBAT0VUZXN0SUQoMTQyMikKKyAgICBAT0VUZXN0SUQoMTQyNCkKICAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKICAgICBkZWYgdGVzdF9xZW11KHNlbGYpOgogICAgICAgICAiIiJUZXN0IHdpYy1pbWFnZS1taW5pbWFsIHVuZGVyIHFlbXUiIiIKQEAgLTYzNCwxMCArNjM0LDEzIEBACiAgICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhjb25maWcpCiAKICAgICAgICAgd2l0aCBydW5xZW11KCd3aWMtaW1hZ2UtbWluaW1hbCcsIHNzaD1GYWxzZSkgYXMgcWVtdToKLSAgICAgICAgICAgIGNtZCA9ICJtb3VudCB8Z3JlcCAnXi9kZXYvJyB8IGN1dCAtZjEsMyAtZCAnICciCisgICAgICAgICAgICBjbWQgPSAibW91bnQgfGdyZXAgJ14vZGV2LycgfCBjdXQgLWYxLDMgLWQgJyAnIHwgc29ydCIKKyAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gcWVtdS5ydW5fc2VyaWFsKGNtZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LCAnL2Rldi9yb290IC9cclxuL2Rldi9zZGExIC9ib290XHJcbi9kZXYvc2RhMyAvbWVkaWFcclxuL2Rldi9zZGE0IC9tbnQnKQorICAgICAgICAgICAgY21kID0gImdyZXAgVVVJRD0gL2V0Yy9mc3RhYiIKICAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gcWVtdS5ydW5fc2VyaWFsKGNtZCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgc3RhdHVzLCAnRmFpbGVkIHRvIHJ1biBjb21tYW5kICIlcyI6ICVzJyAlIChjbWQsIG91dHB1dCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgJy9kZXYvcm9vdCAvXHJcbi9kZXYvc2RhMSAvYm9vdFxyXG4vZGV2L3NkYTMgL21udCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgJ1VVSUQ9MmM3MWVmMDYtYTgxZC00NzM1LTlkM2EtMzc5YjY5YzZiZGJhXHQvbWVkaWFcdGV4dDRcdGRlZmF1bHRzXHQwXHQwJykKIAogICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQogICAgIEBPRVRlc3RJRCgxODUyKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdGFyZ2V0Y29udHJvbC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3RhcmdldGNvbnRyb2wucHkKaW5kZXggZjYzOTM2Yy4uNTlhOWMzNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdGFyZ2V0Y29udHJvbC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS90YXJnZXRjb250cm9sLnB5CkBAIC05MSw2ICs5MSw4IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZCwgbG9nZ2VyLCBpbWFnZV9mc3R5cGU9Tm9uZSk6CiAKKyAgICAgICAgaW1wb3J0IG9lLnR5cGVzCisKICAgICAgICAgc3VwZXIoUWVtdVRhcmdldCwgc2VsZikuX19pbml0X18oZCwgbG9nZ2VyKQogCiAgICAgICAgIHNlbGYucm9vdGZzID0gJycKQEAgLTEwNyw3ICsxMDksNyBAQAogICAgICAgICBkdW1wX2RpciA9IGQuZ2V0VmFyKCJURVNUSU1BR0VfRFVNUF9ESVIiKQogICAgICAgICBxZW11X3VzZV9rdm0gPSBkLmdldFZhcigiUUVNVV9VU0VfS1ZNIikKICAgICAgICAgaWYgcWVtdV91c2Vfa3ZtIGFuZCBcCi0gICAgICAgICAgIChxZW11X3VzZV9rdm0gPT0gIlRydWUiIGFuZCAieDg2IiBpbiBkLmdldFZhcigiTUFDSElORSIpIG9yIFwKKyAgICAgICAgICAgKG9lLnR5cGVzLmJvb2xlYW4ocWVtdV91c2Vfa3ZtKSBhbmQgIng4NiIgaW4gZC5nZXRWYXIoIk1BQ0hJTkUiKSBvciBcCiAgICAgICAgICAgICBkLmdldFZhcigiTUFDSElORSIpIGluIHFlbXVfdXNlX2t2bS5zcGxpdCgpKToKICAgICAgICAgICAgIHVzZV9rdm0gPSBUcnVlCiAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9jb21tYW5kcy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2NvbW1hbmRzLnB5CmluZGV4IDBiYjkwMDIuLjBkOWNmMjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2NvbW1hbmRzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2NvbW1hbmRzLnB5CkBAIC0yMjcsNyArMjI3LDcgQEAKICAgICBiYmVudiA9IGdldF9iYl9lbnYodGFyZ2V0LCBwb3N0Y29uZmlnPXBvc3Rjb25maWcpCiAKICAgICBpZiB2YXJpYWJsZXMgaXMgbm90IE5vbmU6Ci0gICAgICAgIHZhcmlhYmxlcyA9IHZhcmlhYmxlcy5jb3B5KCkKKyAgICAgICAgdmFyaWFibGVzID0gbGlzdCh2YXJpYWJsZXMpCiAgICAgdmFyX3JlID0gcmUuY29tcGlsZShyJ14oZXhwb3J0ICk/KD9QPHZhcj5cdysoXy4qKT8pPSIoP1A8dmFsdWU+LiopIiQnKQogICAgIHVuc2V0X3JlID0gcmUuY29tcGlsZShyJ151bnNldCAoP1A8dmFyPlx3KykkJykKICAgICBsYXN0bGluZSA9IE5vbmUKQEAgLTI4NSw3ICsyODUsNyBAQAogICAgICAgICBmLndyaXRlKCdCQkZJTEVfUEFUVEVSTl8lcyA9ICJeJHtMQVlFUkRJUn0vIlxuJyAlIHRlbXBsYXllcm5hbWUpCiAgICAgICAgIGYud3JpdGUoJ0JCRklMRV9QUklPUklUWV8lcyA9ICIlZCJcbicgJSAodGVtcGxheWVybmFtZSwgcHJpb3JpdHkpKQogICAgICAgICBmLndyaXRlKCdCQkZJTEVfUEFUVEVSTl9JR05PUkVfRU1QVFlfJXMgPSAiMSJcbicgJSB0ZW1wbGF5ZXJuYW1lKQotCisgICAgICAgIGYud3JpdGUoJ0xBWUVSU0VSSUVTX0NPTVBBVF8lcyA9ICIke0xBWUVSU0VSSUVTX0NPTVBBVF9jb3JlfSJcbicgJSB0ZW1wbGF5ZXJuYW1lKQogCiBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgogZGVmIHJ1bnFlbXUocG4sIHNzaD1UcnVlLCBydW5xZW11cGFyYW1zPScnLCBpbWFnZV9mc3R5cGU9Tm9uZSwgbGF1bmNoX2NtZD1Ob25lLCBxZW11cGFyYW1zPU5vbmUsIG92ZXJyaWRlcz17fSwgZGlzY2FyZF93cml0ZXM9VHJ1ZSk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9wYWNrYWdlX21hbmFnZXIucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9wYWNrYWdlX21hbmFnZXIucHkKaW5kZXggNzI0YWZiMi4uYWZkNWI4ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcGFja2FnZV9tYW5hZ2VyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3BhY2thZ2VfbWFuYWdlci5weQpAQCAtMTQsNyArMTQsOCBAQAogICAgIGlmIHBrZ19jbGFzcyA9PSAicnBtIjoKICAgICAgICAgcG0gPSBScG1QTShkLAogICAgICAgICAgICAgICAgICAgIHJvb3RfcGF0aCwKLSAgICAgICAgICAgICAgICAgICBkLmdldFZhcignVEFSR0VUX1ZFTkRPUicpKQorICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdUQVJHRVRfVkVORE9SJyksCisgICAgICAgICAgICAgICAgICAgZmlsdGVyYnlkZXBlbmRlbmNpZXM9RmFsc2UpCiAgICAgICAgIHBtLmNyZWF0ZV9jb25maWdzKCkKIAogICAgIGVsaWYgcGtnX2NsYXNzID09ICJpcGsiOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcWVtdXJ1bm5lci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3FlbXVydW5uZXIucHkKaW5kZXggMDYzMWQ0My4uYzk2MjYwMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcWVtdXJ1bm5lci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9xZW11cnVubmVyLnB5CkBAIC0xOTQsNyArMTk0LDggQEAKICAgICAgICAgICAgIHN5cy5leGl0KDApCiAKICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInJ1bnFlbXUgc3RhcnRlZCwgcGlkIGlzICVzIiAlIHNlbGYucnVucWVtdS5waWQpCi0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJ3YWl0aW5nIGF0IG1vc3QgJXMgc2Vjb25kcyBmb3IgcWVtdSBwaWQiICUgc2VsZi5ydW5xZW11dGltZSkKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIndhaXRpbmcgYXQgbW9zdCAlcyBzZWNvbmRzIGZvciBxZW11IHBpZCAoJXMpIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLnJ1bnFlbXV0aW1lLCB0aW1lLnN0cmZ0aW1lKCIlRCAlSDolTTolUyIpKSkKICAgICAgICAgZW5kdGltZSA9IHRpbWUudGltZSgpICsgc2VsZi5ydW5xZW11dGltZQogICAgICAgICB3aGlsZSBub3Qgc2VsZi5pc19hbGl2ZSgpIGFuZCB0aW1lLnRpbWUoKSA8IGVuZHRpbWU6CiAgICAgICAgICAgICBpZiBzZWxmLnJ1bnFlbXUucG9sbCgpOgpAQCAtMjA4LDcgKzIwOSw4IEBACiAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuNSkKIAogICAgICAgICBpZiBub3Qgc2VsZi5pc19hbGl2ZSgpOgotICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIlFlbXUgcGlkIGRpZG4ndCBhcHBlYXIgaW4gJXMgc2Vjb25kcyIgJSBzZWxmLnJ1bnFlbXV0aW1lKQorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIlFlbXUgcGlkIGRpZG4ndCBhcHBlYXIgaW4gJXMgc2Vjb25kcyAoJXMpIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5ydW5xZW11dGltZSwgdGltZS5zdHJmdGltZSgiJUQgJUg6JU06JVMiKSkpCiAgICAgICAgICAgICAjIER1bXAgYWxsIHByb2Nlc3NlcyB0byBoZWxwIHVzIHRvIGZpZ3VyZSBvdXQgd2hhdCBpcyBnb2luZyBvbi4uLgogICAgICAgICAgICAgcHMgPSBzdWJwcm9jZXNzLlBvcGVuKFsncHMnLCAnYXh3dycsICctbycsICdwaWQscHBpZCxjb21tYW5kICddLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKS5jb21tdW5pY2F0ZSgpWzBdCiAgICAgICAgICAgICBwcm9jZXNzZXMgPSBwcy5kZWNvZGUoInV0Zi04IikKQEAgLTIyNSw3ICsyMjcsOSBAQAogICAgICAgICAjIFdlIGFyZSBhbGl2ZTogcWVtdSBpcyBydW5uaW5nCiAgICAgICAgIG91dCA9IHNlbGYuZ2V0T3V0cHV0KG91dHB1dCkKICAgICAgICAgbmV0Y29uZiA9IEZhbHNlICMgbmV0d29yayBjb25maWd1cmF0aW9uIGlzIG5vdCByZXF1aXJlZCBieSBkZWZhdWx0Ci0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJxZW11IHN0YXJ0ZWQgaW4gJXMgc2Vjb25kcyAtIHFlbXUgcHJvY2NlcyBwaWQgaXMgJXMiICUgKHRpbWUudGltZSgpIC0gKGVuZHRpbWUgLSBzZWxmLnJ1bnFlbXV0aW1lKSwgc2VsZi5xZW11cGlkKSkKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInFlbXUgc3RhcnRlZCBpbiAlcyBzZWNvbmRzIC0gcWVtdSBwcm9jY2VzIHBpZCBpcyAlcyAoJXMpIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICh0aW1lLnRpbWUoKSAtIChlbmR0aW1lIC0gc2VsZi5ydW5xZW11dGltZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnFlbXVwaWQsIHRpbWUuc3RyZnRpbWUoIiVEICVIOiVNOiVTIikpKQogICAgICAgICBpZiBnZXRfaXA6CiAgICAgICAgICAgICBjbWRsaW5lID0gJycKICAgICAgICAgICAgIHdpdGggb3BlbignL3Byb2MvJXMvY21kbGluZScgJSBzZWxmLnFlbXVwaWQpIGFzIHA6CkBAIC0yNjksNyArMjczLDggQEAKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJPdXRwdXQgZnJvbSBydW5xZW11OlxuJXMiLCBvdXQpCi0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJXYWl0aW5nIGF0IG1vc3QgJWQgc2Vjb25kcyBmb3IgbG9naW4gYmFubmVyIiAlIHNlbGYuYm9vdHRpbWUpCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJXYWl0aW5nIGF0IG1vc3QgJWQgc2Vjb25kcyBmb3IgbG9naW4gYmFubmVyICglcykiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuYm9vdHRpbWUsIHRpbWUuc3RyZnRpbWUoIiVEICVIOiVNOiVTIikpKQogICAgICAgICBlbmR0aW1lID0gdGltZS50aW1lKCkgKyBzZWxmLmJvb3R0aW1lCiAgICAgICAgIHNvY2tsaXN0ID0gW3NlbGYuc2VydmVyX3NvY2tldF0KICAgICAgICAgcmVhY2hlZGxvZ2luID0gRmFsc2UKQEAgLTI5OCwxNSArMzAzLDIyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfc29ja2V0ID0gcWVtdXNvY2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wcmVhZCA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFjaGVkbG9naW4gPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJlYWNoZWQgbG9naW4gYmFubmVyIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiUmVhY2hlZCBsb2dpbiBiYW5uZXIgaW4gJXMgc2Vjb25kcyAoJXMpIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRpbWUudGltZSgpIC0gKGVuZHRpbWUgLSBzZWxmLmJvb3R0aW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lLnN0cmZ0aW1lKCIlRCAlSDolTTolUyIpKSkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gbmVlZCB0byBjaGVjayBpZiByZWFjaGVkbG9naW4gdW5sZXNzIHdlIHN1cHBvcnQgbXVsdGlwbGUgY29ubmVjdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJRRU1VIHNvY2tldCBkaXNjb25uZWN0ZWQgYmVmb3JlIGxvZ2luIGJhbm5lciByZWFjaGVkLiAoJXMpIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lLnN0cmZ0aW1lKCIlRCAlSDolTTolUyIpKQogICAgICAgICAgICAgICAgICAgICAgICAgc29ja2xpc3QucmVtb3ZlKHNvY2spCiAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrLmNsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3ByZWFkID0gVHJ1ZQogCiAKICAgICAgICAgaWYgbm90IHJlYWNoZWRsb2dpbjoKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJUYXJnZXQgZGlkbid0IHJlYWNoZWQgbG9naW4gYm9vdCBpbiAlZCBzZWNvbmRzIiAlIHNlbGYuYm9vdHRpbWUpCisgICAgICAgICAgICBpZiB0aW1lLnRpbWUoKSA+PSBlbmR0aW1lOgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJUYXJnZXQgZGlkbid0IHJlYWNoIGxvZ2luIGJhbm5lciBpbiAlZCBzZWNvbmRzICglcykiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5ib290dGltZSwgdGltZS5zdHJmdGltZSgiJUQgJUg6JU06JVMiKSkpCiAgICAgICAgICAgICB0YWlsID0gbGFtYmRhIGw6ICJcbiIuam9pbihsLnNwbGl0bGluZXMoKVstMjU6XSkKICAgICAgICAgICAgICMgaW4gY2FzZSBib290bG9nIGlzIGVtcHR5LCB1c2UgdGFpbCBxZW11IGxvZyBzdG9yZSBhdCBzZWxmLm1zZwogICAgICAgICAgICAgbGluZXMgPSB0YWlsKGJvb3Rsb2cgaWYgYm9vdGxvZyBlbHNlIHNlbGYubXNnKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9nY2M4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9nY2M4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhNzMzMWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2djYzgucGF0Y2gKQEAgLTAsMCArMSw3NCBAQAorRnJvbSA1NjNiMWRhNmU2YWU3YWY0NmNjODM1NGNhZGI1ZGFiNDE2OTg5ZjBhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWljaGFlbCBDaGFuZyA8bWNoYW5nQHN1c2UuY29tPgorRGF0ZTogTW9uLCAyNiBNYXIgMjAxOCAxNjo1MjozNCArMDgwMAorU3ViamVjdDogRml4IHBhY2tlZC1ub3QtYWxpZ25lZCBlcnJvciBvbiBHQ0MgOAorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitXaGVuIGJ1aWxkaW5nIHdpdGggR0NDIDgsIHRoZXJlIGFyZSBzZXZlcmFsIGVycm9ycyByZWdhcmRpbmcgcGFja2VkLW5vdC1hbGlnbmVkLgorCisuL2luY2x1ZGUvZ3J1Yi9ncHRfcGFydGl0aW9uLmg6Nzk6MTogZXJyb3I6IGFsaWdubWVudCAxIG9mIOKAmHN0cnVjdCBncnViX2dwdF9wYXJ0ZW50cnnigJkgaXMgbGVzcyB0aGFuIDggWy1XZXJyb3I9cGFja2VkLW5vdC1hbGlnbmVkXQorCitUaGlzIHBhdGNoIGZpeGVzIHRoZSBidWlsZCBlcnJvciBieSBjbGVhbmluZyB1cCB0aGUgYW1iaWd1aXR5IG9mIHBsYWNpbmcKK2FsaWduZWQgc3RydWN0dXJlIGluIGEgcGFja2VkIG9uZS4gSW4gInN0cnVjdCBncnViX2J0cmZzX3RpbWUiIGFuZCAic3RydWN0CitncnViX2dwdF9wYXJ0X3R5cGUiLCB0aGUgYWxpZ25lZCBhdHRyaWJ1dGUgc2VlbXMgdG8gYmUgc3VwZXJmbHVvdXMsIGFuZCBhbHNvCitoYXMgdG8gYmUgcGFja2VkLCB0byBlbnN1cmUgdGhlIHN0cnVjdHVyZSBpcyBiaXQtdG8tYml0IG1hcHBlZCB0byB0aGUgZm9ybWF0CitsYWlkIG9uIGRpc2suIEkgdGhpbmsgd2UgY291bGQgYmxhbWUgdG8gY29weSBhbmQgcGFzdGUgZXJyb3IgaGVyZSBmb3IgdGhlCittaXN0YWtlLiBJbiAic3RydWN0IGVmaV92YXJpYWJsZSIsIHdlIGhhdmUgdG8gdXNlIGdydWJfZWZpX3BhY2tlZF9ndWlkX3QsIGFzCit0aGUgbmFtZSBzdWdnZXN0cy4gOikKKworU2lnbmVkLW9mZi1ieTogTWljaGFlbCBDaGFuZyA8bWNoYW5nQHN1c2UuY29tPgorVGVzdGVkLWJ5OiBNaWNoYWVsIENoYW5nIDxtY2hhbmdAc3VzZS5jb20+CitUZXN0ZWQtYnk6IFBhdWwgTWVuemVsIDxwYXVsZXBhbnRlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitSZXZpZXdlZC1ieTogRGFuaWVsIEtpcGVyIDxkYW5pZWwua2lwZXJAb3JhY2xlLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9ncnViLmdpdC9jb21taXQvP2lkPTU2M2IxZGE2ZTZhZTdhZjQ2Y2M4MzU0Y2FkYjVkYWI0MTY5ODlmMGEKKy0tLQorIGdydWItY29yZS9mcy9idHJmcy5jICAgICAgICAgIHwgMiArLQorIGluY2x1ZGUvZ3J1Yi9lZmllbXUvcnVudGltZS5oIHwgMiArLQorIGluY2x1ZGUvZ3J1Yi9ncHRfcGFydGl0aW9uLmggIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2ZzL2J0cmZzLmMgYi9ncnViLWNvcmUvZnMvYnRyZnMuYworaW5kZXggNDg0OWMxYy4uYmUxOTU0NCAxMDA2NDQKKy0tLSBhL2dydWItY29yZS9mcy9idHJmcy5jCisrKysgYi9ncnViLWNvcmUvZnMvYnRyZnMuYworQEAgLTE3NSw3ICsxNzUsNyBAQCBzdHJ1Y3QgZ3J1Yl9idHJmc190aW1lCisgeworICAgZ3J1Yl9pbnQ2NF90IHNlYzsKKyAgIGdydWJfdWludDMyX3QgbmFub3NlYzsKKy19IF9fYXR0cmlidXRlX18gKChhbGlnbmVkICg0KSkpOworK30gR1JVQl9QQUNLRUQ7CisgCisgc3RydWN0IGdydWJfYnRyZnNfaW5vZGUKKyB7CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnViL2VmaWVtdS9ydW50aW1lLmggYi9pbmNsdWRlL2dydWIvZWZpZW11L3J1bnRpbWUuaAoraW5kZXggOWI2YjcyOS4uMzZkMmRlZCAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvZ3J1Yi9lZmllbXUvcnVudGltZS5oCisrKysgYi9pbmNsdWRlL2dydWIvZWZpZW11L3J1bnRpbWUuaAorQEAgLTI5LDcgKzI5LDcgQEAgc3RydWN0IGdydWJfZWZpZW11X3B0dl9yZWwKKyAKKyBzdHJ1Y3QgZWZpX3ZhcmlhYmxlCisgeworLSAgZ3J1Yl9lZmlfZ3VpZF90IGd1aWQ7CisrICBncnViX2VmaV9wYWNrZWRfZ3VpZF90IGd1aWQ7CisgICBncnViX3VpbnQzMl90IG5hbWVsZW47CisgICBncnViX3VpbnQzMl90IHNpemU7CisgICBncnViX2VmaV91aW50MzJfdCBhdHRyaWJ1dGVzOworZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi9ncHRfcGFydGl0aW9uLmggYi9pbmNsdWRlL2dydWIvZ3B0X3BhcnRpdGlvbi5oCitpbmRleCAxYjMyZjY3Li45NjY4YTY4IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9ncnViL2dwdF9wYXJ0aXRpb24uaAorKysrIGIvaW5jbHVkZS9ncnViL2dwdF9wYXJ0aXRpb24uaAorQEAgLTI4LDcgKzI4LDcgQEAgc3RydWN0IGdydWJfZ3B0X3BhcnRfdHlwZQorICAgZ3J1Yl91aW50MTZfdCBkYXRhMjsKKyAgIGdydWJfdWludDE2X3QgZGF0YTM7CisgICBncnViX3VpbnQ4X3QgZGF0YTRbOF07CistfSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCg4KSkpOworK30gR1JVQl9QQUNLRUQ7CisgdHlwZWRlZiBzdHJ1Y3QgZ3J1Yl9ncHRfcGFydF90eXBlIGdydWJfZ3B0X3BhcnRfdHlwZV90OworIAorICNkZWZpbmUgR1JVQl9HUFRfUEFSVElUSU9OX1RZUEVfRU1QVFkgXAorLS0gCitjZ2l0IHYxLjAtNDEtZ2MzMzAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLW1vZHVsZS1leHBsaWNpdGx5LWtlZXBzLXN5bWJvbGUtLm1vZHVsZV9saWNlbnNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLW1vZHVsZS1leHBsaWNpdGx5LWtlZXBzLXN5bWJvbGUtLm1vZHVsZV9saWNlbnNlLnBhdGNoCmluZGV4IDkzNWM0NzIuLmZmYzJkNDAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi1tb2R1bGUtZXhwbGljaXRseS1rZWVwcy1zeW1ib2xlLS5tb2R1bGVfbGljZW5zZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItbW9kdWxlLWV4cGxpY2l0bHkta2VlcHMtc3ltYm9sZS0ubW9kdWxlX2xpY2Vuc2UucGF0Y2gKQEAgLTQzLDE5ICs0MywxNiBAQAogIGdydWItY29yZS9nZW5tb2Quc2guaW4gfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvZ2VubW9kLnNoLmluIGIvZ3J1Yi1jb3JlL2dlbm1vZC5zaC5pbgotaW5kZXggNzZkZjBiYi4uMzlhOWNmYyAxMDA2NDQKLS0tLSBhL2dydWItY29yZS9nZW5tb2Quc2guaW4KLSsrKyBiL2dydWItY29yZS9nZW5tb2Quc2guaW4KLUBAIC01OSw3ICs1OSw3IEBAIGlmIHRlc3QgeEBUQVJHRVRfQVBQTEVfQ0NAICE9IHgxOyB0aGVuCitJbmRleDogZ3J1Yi0yLjAyL2dydWItY29yZS9nZW5tb2Quc2guaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBncnViLTIuMDIub3JpZy9ncnViLWNvcmUvZ2VubW9kLnNoLmluCisrKysgZ3J1Yi0yLjAyL2dydWItY29yZS9nZW5tb2Quc2guaW4KK0BAIC01Niw3ICs1Niw3IEBAIGlmIHRlc3QgeEBUQVJHRVRfQVBQTEVfTElOS0VSQCAhPSB4MTsgdGgKICAJaWYgdGVzdCB4QHBsYXRmb3JtQCAhPSB4ZW11OyB0aGVuCi0gCSAgICBAU1RSSVBAIC0tc3RyaXAtdW5uZWVkZWQgXAorIAkgICAgQFRBUkdFVF9TVFJJUEAgLS1zdHJpcC11bm5lZWRlZCBcCiAgCQktSyBncnViX21vZF9pbml0IC1LIGdydWJfbW9kX2ZpbmkgXAogLQkJLUsgX2dydWJfbW9kX2luaXQgLUsgX2dydWJfbW9kX2ZpbmkgXAogKwkJLUsgX2dydWJfbW9kX2luaXQgLUsgX2dydWJfbW9kX2ZpbmkgLUsgLm1vZHVsZV9saWNlbnNlIFwKICAJCS1SIC5ub3RlLmdudS5nb2xkLXZlcnNpb24gLVIgLm5vdGUuR05VLXN0YWNrIFwKLSAJCS1SIC5ub3RlIC1SIC5jb21tZW50ICR0bXBmaWxlIHx8IGV4aXQgMQorIAkJLVIgLm5vdGUgLVIgLmNvbW1lbnQgLVIgLkFSTS5leGlkeCAkdG1wZmlsZSB8fCBleGl0IDEKICAJZmkKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViLWJvb3Rjb25mXzEuMDAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWItYm9vdGNvbmZfMS4wMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTBmOGM4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViLWJvb3Rjb25mXzEuMDAuYmIKQEAgLTAsMCArMSwyOSBAQAorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKK1NVTU1BUlkgPSAiQmFzaWMgZ3J1Yi5jZmcgZm9yIHVzZSBpbiBFRkkgc3lzdGVtcyIKKworUlBST1ZJREVTXyR7UE59ICs9ICJ2aXJ0dWFsL2dydWItYm9vdGNvbmYiCisKK2luaGVyaXQgZ3J1Yi1lZmktY2ZnCisKK1MgPSAiJHtXT1JLRElSfSIKKworR1JVQl9DRkcgPSAiJHtTfS9ncnViLWJvb3Rjb25mIgorTEFCRUxTID0gImJvb3QiCisKK1JPT1QgPz0gInJvb3Q9L2Rldi9zZGEyIgorCitweXRob24gZG9fY29uZmlndXJlKCkgeworICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnYnVpbGRfZWZpX2NmZycsIGQpCit9CisKK2RvX2NvbmZpZ3VyZVt2YXJkZXBzXSArPSAiQVBQRU5EIFJPT1QiCisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAke0R9L2Jvb3QKKwlpbnN0YWxsIC1kICR7RH0vYm9vdC9FRkkKKwlpbnN0YWxsIC1kICR7RH0vYm9vdC9FRkkvQk9PVAorCWluc3RhbGwgZ3J1Yi1ib290Y29uZiAke0R9L2Jvb3QvRUZJL0JPT1QvZ3J1Yi5jZmcKK30KKworRklMRVNfJHtQTn0gPSAiL2Jvb3QvRUZJL0JPT1QvZ3J1Yi5jZmciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWItZWZpXzIuMDIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWItZWZpXzIuMDIuYmIKaW5kZXggMTI4ZGExNi4uN2JmYzhlZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViLWVmaV8yLjAyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yi1lZmlfMi4wMi5iYgpAQCAtMyw3ICszLDcgQEAKIEdSVUJQTEFURk9STSA9ICJlZmkiCiAKIERFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZ3J1Yi1lZmktbmF0aXZlIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gImRpZmZ1dGlscyBmcmVldHlwZSIKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICJkaWZmdXRpbHMgZnJlZXR5cGUgZ3J1Yi1jb21tb24gdmlydHVhbC9ncnViLWJvb3Rjb25mIgogCiBTUkNfVVJJICs9ICIgXAogICAgICAgICAgICBmaWxlOi8vY2ZnIFwKQEAgLTE1LDE2ICsxNSwyMiBAQAogcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKICAgICBpbXBvcnQgcmUKICAgICB0YXJnZXQgPSBkLmdldFZhcignVEFSR0VUX0FSQ0gnKQorICAgIHByZWZpeCA9ICIiIGlmIGQuZ2V0VmFyKCdFRklfUFJPVklERVInKSA9PSAiZ3J1Yi1lZmkiIGVsc2UgImdydWItZWZpLSIKICAgICBpZiB0YXJnZXQgPT0gIng4Nl82NCI6CiAgICAgICAgIGdydWJ0YXJnZXQgPSAneDg2XzY0JwotICAgICAgICBncnViaW1hZ2UgPSAiZ3J1Yi1lZmktYm9vdHg2NC5lZmkiCisgICAgICAgIGdydWJpbWFnZSA9IHByZWZpeCArICJib290eDY0LmVmaSIKICAgICBlbGlmIHJlLm1hdGNoKCdpLjg2JywgdGFyZ2V0KToKICAgICAgICAgZ3J1YnRhcmdldCA9ICdpMzg2JwotICAgICAgICBncnViaW1hZ2UgPSAiZ3J1Yi1lZmktYm9vdGlhMzIuZWZpIgorICAgICAgICBncnViaW1hZ2UgPSBwcmVmaXggKyAiYm9vdGlhMzIuZWZpIgorICAgIGVsaWYgcmUubWF0Y2goJ2FhcmNoNjQnLCB0YXJnZXQpOgorICAgICAgICBncnVidGFyZ2V0ID0gJ2FybTY0JworICAgICAgICBncnViaW1hZ2UgPSBwcmVmaXggKyAiYm9vdGFhNjQuZWZpIgogICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJncnViLWVmaSBpcyBpbmNvbXBhdGlibGUgd2l0aCB0YXJnZXQgJXMiICUgdGFyZ2V0KQorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJncnViLWVmaSBpcyBpbmNvbXBhdGlibGUgd2l0aCB0YXJnZXQgJXMiICUgdGFyZ2V0KQogICAgIGQuc2V0VmFyKCJHUlVCX1RBUkdFVCIsIGdydWJ0YXJnZXQpCiAgICAgZC5zZXRWYXIoIkdSVUJfSU1BR0UiLCBncnViaW1hZ2UpCisgICAgcHJlZml4ID0gImdydWItZWZpLSIgaWYgcHJlZml4ID09ICIiIGVsc2UgIiIKKyAgICBkLnNldFZhcigiR1JVQl9JTUFHRV9QUkVGSVgiLCBwcmVmaXgpCiB9CiAKIGluaGVyaXQgZGVwbG95CkBAIC0zNiwxMiArNDIsMzYgQEAKICMgYW5kIG1hbnkgb3RoZXIgcGxhY2VzIGluIHRoZSBncnViIGNvZGUgd2hlbiBjb21waWxlZCB3aXRoIHNvbWUgbmF0aXZlIGdjYyBjb21waWxlcnMgKHNwZWNpZmljYWxseSwgZ2VudG9vKQogQ0ZMQUdTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1Xbm8tZXJyb3I9dHJhbXBvbGluZXMiCiAKK2RvX21raW1hZ2UoKSB7CisJY2QgJHtCfQorCSMgU2VhcmNoIGZvciB0aGUgZ3J1Yi5jZmcgb24gdGhlIGxvY2FsIGJvb3QgbWVkaWEgYnkgdXNpbmcgdGhlCisJIyBidWlsdCBpbiBjZmcgZmlsZSBwcm92aWRlZCB2aWEgdGhpcyByZWNpcGUKKwlncnViLW1raW1hZ2UgLWMgLi4vY2ZnIC1wIC9FRkkvQk9PVCAtZCAuL2dydWItY29yZS8gXAorCSAgICAgICAgICAgICAgIC1PICR7R1JVQl9UQVJHRVR9LWVmaSAtbyAuLyR7R1JVQl9JTUFHRV9QUkVGSVh9JHtHUlVCX0lNQUdFfSBcCisJICAgICAgICAgICAgICAgJHtHUlVCX0JVSUxESU59Cit9CisKK2FkZHRhc2sgbWtpbWFnZSBiZWZvcmUgZG9faW5zdGFsbCBhZnRlciBkb19jb21waWxlCisKK2RvX21raW1hZ2VfY2xhc3MtbmF0aXZlKCkgeworCToKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworCWluc3RhbGwgLWQgJHtEfS9ib290CisJaW5zdGFsbCAtZCAke0R9L2Jvb3QvRUZJCisJaW5zdGFsbCAtZCAke0R9L2Jvb3QvRUZJL0JPT1QKKwlpbnN0YWxsIC1tIDY0NCAke0J9LyR7R1JVQl9JTUFHRV9QUkVGSVh9JHtHUlVCX0lNQUdFfSAke0R9L2Jvb3QvRUZJL0JPT1QvJHtHUlVCX0lNQUdFfQorfQorCiBkb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSgpIHsKIAlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KIAlpbnN0YWxsIC1tIDc1NSBncnViLW1raW1hZ2UgJHtEfSR7YmluZGlyfQogfQogCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Citkb19pbnN0YWxsX2NsYXNzLXRhcmdldCgpIHsKKyAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIC1DIGdydWItY29yZSBpbnN0YWxsCisKICAgICAjIFJlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMuLi4KICAgICBmaW5kICIke0R9IiAtbmFtZSBtb2RpbmZvLnNoIC10eXBlIGYgLWV4ZWMgXAogICAgICAgICBzZWQgLWkgXApAQCAtNTIsMTUgKzgyLDEwIEBACiB9CiAKIEdSVUJfQlVJTERJTiA/PSAiYm9vdCBsaW51eCBleHQyIGZhdCBzZXJpYWwgcGFydF9tc2RvcyBwYXJ0X2dwdCBub3JtYWwgXAotICAgICAgICAgICAgICAgICBlZmlfZ29wIGlzbzk2NjAgc2VhcmNoIGxvYWRlbnYgdGVzdCIKKyAgICAgICAgICAgICAgICAgZWZpX2dvcCBpc285NjYwIGNvbmZpZ2ZpbGUgc2VhcmNoIGxvYWRlbnYgdGVzdCIKIAogZG9fZGVwbG95KCkgewotCSMgU2VhcmNoIGZvciB0aGUgZ3J1Yi5jZmcgb24gdGhlIGxvY2FsIGJvb3QgbWVkaWEgYnkgdXNpbmcgdGhlCi0JIyBidWlsdCBpbiBjZmcgZmlsZSBwcm92aWRlZCB2aWEgdGhpcyByZWNpcGUKLQlncnViLW1raW1hZ2UgLWMgLi4vY2ZnIC1wIC9FRkkvQk9PVCAtZCAuL2dydWItY29yZS8gXAotCSAgICAgICAgICAgICAgIC1PICR7R1JVQl9UQVJHRVR9LWVmaSAtbyAuLyR7R1JVQl9JTUFHRX0gXAotCSAgICAgICAgICAgICAgICR7R1JVQl9CVUlMRElOfQotCWluc3RhbGwgLW0gNjQ0ICR7Qn0vJHtHUlVCX0lNQUdFfSAke0RFUExPWURJUn0KKwlpbnN0YWxsIC1tIDY0NCAke0J9LyR7R1JVQl9JTUFHRV9QUkVGSVh9JHtHUlVCX0lNQUdFfSAke0RFUExPWURJUn0KIH0KIAogZG9fZGVwbG95X2NsYXNzLW5hdGl2ZSgpIHsKQEAgLTY5LDkgKzk0LDExIEBACiAKIGFkZHRhc2sgZGVwbG95IGFmdGVyIGRvX2luc3RhbGwgYmVmb3JlIGRvX2J1aWxkCiAKLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ3J1Yi8ke0dSVUJfVEFSR0VUfS1lZmkgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ3J1YiBcCi0gICAgICAgICAgICAgICAgIgorRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2dydWIvJHtHUlVCX1RBUkdFVH0tZWZpIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ3J1YiBcCisgICAgICAgICAgICAgICAvYm9vdC9FRkkvQk9PVC8ke0dSVUJfSU1BR0V9IFwKKyAgICAgICAgICAgICAgICIKKwogCiAjIDY0LWJpdCBiaW5hcmllcyBhcmUgZXhwZWN0ZWQgZm9yIHRoZSBib290bG9hZGVyIHdpdGggYW4geDMyIHVzZXJsYW5kCiBJTlNBTkVfU0tJUF8ke1BOfV9hcHBlbmRfbGludXgtZ251eDMyID0gIiBhcmNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViMi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWIyLmluYwppbmRleCAyOGY5NmJiLi5hOGYzMzVlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWIyLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWIyLmluYwpAQCAtMTgsNiArMTgsNyBAQAogICAgICAgICAgICBmaWxlOi8vZ3J1Yi1tb2R1bGUtZXhwbGljaXRseS1rZWVwcy1zeW1ib2xlLS5tb2R1bGVfbGljZW5zZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdydWIuZC0xMF9saW51eC5pbi1hZGQtb2Utcy1rZXJuZWwtbmFtZS5wYXRjaCBcCiAJICAgZmlsZTovL2ZpeC5idWlsZC53aXRoLmdjYy03LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2djYzgucGF0Y2ggXAogIgogU1JDX1VSSVttZDVzdW1dID0gIjExMTZkMWY2MGM4NDBlNmRiZDY3YWJiYzk5YWNiNDVkIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2MGVlMTM2ZmJjZWUwODg1ODUxNmVkNGRlMmFkODcwNjhiZmUxYjZiOGIzNzg5NmNlMzUyOWZmMDU0YTcyNmQiCkBAIC00Nyw3ICs0OCw3IEBACiAKIFBBQ0tBR0VDT05GSUcgPz89ICIiCiBQQUNLQUdFQ09ORklHW2dydWItbW91bnRdID0gIi0tZW5hYmxlLWdydWItbW91bnQsLS1kaXNhYmxlLWdydWItbW91bnQsZnVzZSIKLVBBQ0tBR0VDT05GSUdbZGV2aWNlLW1hcHBlcl0gPSAiLS1lbmFibGUtZGV2aWNlLW1hcHBlciwtLWRpc2FibGUtZGV2aWNlLW1hcHBlcixsdm0yIgorUEFDS0FHRUNPTkZJR1tkZXZpY2UtbWFwcGVyXSA9ICItLWVuYWJsZS1kZXZpY2UtbWFwcGVyLC0tZGlzYWJsZS1kZXZpY2UtbWFwcGVyLGxpYmRldm1hcHBlciIKIAogIyBncnViMiBjcmVhdGVzIGl0cyBvd24gc2V0IG9mIC1ub3N0ZGluYyAvIC1pc3lzdGVtIC8gLWZmcmVlc3RhbmRpbmcgQ0ZMQUdTIGFuZAogIyBPRSdzIGRlZmF1bHQgQlVJTERfQ0ZMQUdTIChhc3NpZ25lZCB0byBDRkxBR1MgZm9yIG5hdGl2ZSBidWlsZHMpIGV0YywgY29uZmxpY3QKQEAgLTY3LDEyICs2OCw0IEBACiAJJHtTfS9hdXRvZ2VuLnNoICkKIH0KIAotIyBncnViIGFuZCBncnViLWVmaSdzIHN5c3Jvb3QvJHtkYXRhZGlyfS9ncnViL2dydWItbWtjb25maWdfbGliIGFyZQotIyBjb25mbGljdGVkLCByZW1vdmUgaXQgc2luY2Ugbm8gb25lIHVzZXMgaXQuCi1TWVNST09UX0RJUlNfQkxBQ0tMSVNUICs9ICIke2RhdGFkaXJ9L2dydWIvZ3J1Yi1ta2NvbmZpZ19saWIiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1lZGl0ZW52IgotCi1GSUxFU18ke1BOfS1lZGl0ZW52ID0gIiR7YmluZGlyfS9ncnViLWVkaXRlbnYiCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0tZWRpdGVudiIKIFJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWJfMi4wMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yl8yLjAyLmJiCmluZGV4IDNlNjFmNmEuLmUwOTczNzUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yl8yLjAyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yl8yLjAyLmJiCkBAIC0xLDYgKzEsMTggQEAKIHJlcXVpcmUgZ3J1YjIuaW5jCiAKLVJERVBFTkRTXyR7UE59ICs9ICJkaWZmdXRpbHMgZnJlZXR5cGUiCitSREVQRU5EU18ke1BOfS1jb21tb24gKz0gIiR7UE59LWVkaXRlbnYiCitSREVQRU5EU18ke1BOfSArPSAiZGlmZnV0aWxzIGZyZWV0eXBlICR7UE59LWNvbW1vbiIKKworUlBST1ZJREVTXyR7UE59LWVkaXRlbnYgKz0gIiR7UE59LWVmaS1lZGl0ZW52IgorCitQQUNLQUdFUyA9KyAiJHtQTn0tZWRpdGVudiAke1BOfS1jb21tb24iCitGSUxFU18ke1BOfS1lZGl0ZW52ID0gIiR7YmluZGlyfS9ncnViLWVkaXRlbnYiCitGSUxFU18ke1BOfS1jb21tb24gPSAiIFwKKyAgICAke2JpbmRpcn0gXAorICAgICR7c3lzY29uZmRpcn0gXAorICAgICR7c2JpbmRpcn0gXAorICAgICR7ZGF0YWRpcn0vZ3J1YiBcCisiCiAKIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2dydWIuZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2ZpbGVzL0NPUFlJTkcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvZmlsZXMvQ09QWUlORy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVjNzBjOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvZmlsZXMvQ09QWUlORy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0NiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW290aGVyXQotCi1kaWZmIC1ydU4gaG9zdGFwLWNvbmYtMS4wLW9yaWcvQ09QWUlORyBob3N0YXAtY29uZi0xLjAvQ09QWUlORwotLS0tIGhvc3RhcC1jb25mLTEuMC1vcmlnL0NPUFlJTkcJMTk3MC0wMS0wMSAwODowMDowMC4wMDAwMDAwMDAgKzA4MDAKLSsrKyBob3N0YXAtY29uZi0xLjAvQ09QWUlORwkyMDEwLTEyLTA5IDE2OjM2OjQ4LjAwMDAwMDAwMCArMDgwMAotQEAgLTAsMCArMSwzNDAgQEAKLSsJCSAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQotKwkJICAgICAgIFZlcnNpb24gMiwgSnVuZSAxOTkxCi0rCi0rIENvcHlyaWdodCAoQykgMTk4OSwgMTk5MSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICAgICAgICAgICAgICAgICAgICAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKLSsgRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCi0rIG9mIHRoaXMgbGljZW5zZSBkb2N1bWVudCwgYnV0IGNoYW5naW5nIGl0IGlzIG5vdCBhbGxvd2VkLgotKwotKwkJCSAgICBQcmVhbWJsZQotKwotKyAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgotK2ZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBpdC4gIEJ5IGNvbnRyYXN0LCB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0rTGljZW5zZSBpcyBpbnRlbmRlZCB0byBndWFyYW50ZWUgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgZnJlZQotK3NvZnR3YXJlLS10byBtYWtlIHN1cmUgdGhlIHNvZnR3YXJlIGlzIGZyZWUgZm9yIGFsbCBpdHMgdXNlcnMuICBUaGlzCi0rR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcHBsaWVzIHRvIG1vc3Qgb2YgdGhlIEZyZWUgU29mdHdhcmUKLStGb3VuZGF0aW9uJ3Mgc29mdHdhcmUgYW5kIHRvIGFueSBvdGhlciBwcm9ncmFtIHdob3NlIGF1dGhvcnMgY29tbWl0IHRvCi0rdXNpbmcgaXQuICAoU29tZSBvdGhlciBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gc29mdHdhcmUgaXMgY292ZXJlZCBieQotK3RoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluc3RlYWQuKSAgWW91IGNhbiBhcHBseSBpdCB0bwotK3lvdXIgcHJvZ3JhbXMsIHRvby4KLSsKLSsgIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKLStwcmljZS4gIE91ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlcyBhcmUgZGVzaWduZWQgdG8gbWFrZSBzdXJlIHRoYXQgeW91Ci0raGF2ZSB0aGUgZnJlZWRvbSB0byBkaXN0cmlidXRlIGNvcGllcyBvZiBmcmVlIHNvZnR3YXJlIChhbmQgY2hhcmdlIGZvcgotK3RoaXMgc2VydmljZSBpZiB5b3Ugd2lzaCksIHRoYXQgeW91IHJlY2VpdmUgc291cmNlIGNvZGUgb3IgY2FuIGdldCBpdAotK2lmIHlvdSB3YW50IGl0LCB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBvciB1c2UgcGllY2VzIG9mIGl0Ci0raW4gbmV3IGZyZWUgcHJvZ3JhbXM7IGFuZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhpbmdzLgotKwotKyAgVG8gcHJvdGVjdCB5b3VyIHJpZ2h0cywgd2UgbmVlZCB0byBtYWtlIHJlc3RyaWN0aW9ucyB0aGF0IGZvcmJpZAotK2FueW9uZSB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4KLStUaGVzZSByZXN0cmljdGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBmb3IgeW91IGlmIHlvdQotK2Rpc3RyaWJ1dGUgY29waWVzIG9mIHRoZSBzb2Z0d2FyZSwgb3IgaWYgeW91IG1vZGlmeSBpdC4KLSsKLSsgIEZvciBleGFtcGxlLCBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2Ygc3VjaCBhIHByb2dyYW0sIHdoZXRoZXIKLStncmF0aXMgb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBnaXZlIHRoZSByZWNpcGllbnRzIGFsbCB0aGUgcmlnaHRzIHRoYXQKLSt5b3UgaGF2ZS4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZSBvciBjYW4gZ2V0IHRoZQotK3NvdXJjZSBjb2RlLiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIKLStyaWdodHMuCi0rCi0rICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggdHdvIHN0ZXBzOiAoMSkgY29weXJpZ2h0IHRoZSBzb2Z0d2FyZSwgYW5kCi0rKDIpIG9mZmVyIHlvdSB0aGlzIGxpY2Vuc2Ugd2hpY2ggZ2l2ZXMgeW91IGxlZ2FsIHBlcm1pc3Npb24gdG8gY29weSwKLStkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhlIHNvZnR3YXJlLgotKwotKyAgQWxzbywgZm9yIGVhY2ggYXV0aG9yJ3MgcHJvdGVjdGlvbiBhbmQgb3Vycywgd2Ugd2FudCB0byBtYWtlIGNlcnRhaW4KLSt0aGF0IGV2ZXJ5b25lIHVuZGVyc3RhbmRzIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZQotK3NvZnR3YXJlLiAgSWYgdGhlIHNvZnR3YXJlIGlzIG1vZGlmaWVkIGJ5IHNvbWVvbmUgZWxzZSBhbmQgcGFzc2VkIG9uLCB3ZQotK3dhbnQgaXRzIHJlY2lwaWVudHMgdG8ga25vdyB0aGF0IHdoYXQgdGhleSBoYXZlIGlzIG5vdCB0aGUgb3JpZ2luYWwsIHNvCi0rdGhhdCBhbnkgcHJvYmxlbXMgaW50cm9kdWNlZCBieSBvdGhlcnMgd2lsbCBub3QgcmVmbGVjdCBvbiB0aGUgb3JpZ2luYWwKLSthdXRob3JzJyByZXB1dGF0aW9ucy4KLSsKLSsgIEZpbmFsbHksIGFueSBmcmVlIHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlCi0rcGF0ZW50cy4gIFdlIHdpc2ggdG8gYXZvaWQgdGhlIGRhbmdlciB0aGF0IHJlZGlzdHJpYnV0b3JzIG9mIGEgZnJlZQotK3Byb2dyYW0gd2lsbCBpbmRpdmlkdWFsbHkgb2J0YWluIHBhdGVudCBsaWNlbnNlcywgaW4gZWZmZWN0IG1ha2luZyB0aGUKLStwcm9ncmFtIHByb3ByaWV0YXJ5LiAgVG8gcHJldmVudCB0aGlzLCB3ZSBoYXZlIG1hZGUgaXQgY2xlYXIgdGhhdCBhbnkKLStwYXRlbnQgbXVzdCBiZSBsaWNlbnNlZCBmb3IgZXZlcnlvbmUncyBmcmVlIHVzZSBvciBub3QgbGljZW5zZWQgYXQgYWxsLgotKwotKyAgVGhlIHByZWNpc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQKLSttb2RpZmljYXRpb24gZm9sbG93LgotKwwKLSsJCSAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQotKyAgIFRFUk1TIEFORCBDT05ESVRJT05TIEZPUiBDT1BZSU5HLCBESVNUUklCVVRJT04gQU5EIE1PRElGSUNBVElPTgotKwotKyAgMC4gVGhpcyBMaWNlbnNlIGFwcGxpZXMgdG8gYW55IHByb2dyYW0gb3Igb3RoZXIgd29yayB3aGljaCBjb250YWlucwotK2Egbm90aWNlIHBsYWNlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlciBzYXlpbmcgaXQgbWF5IGJlIGRpc3RyaWJ1dGVkCi0rdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoZSAiUHJvZ3JhbSIsIGJlbG93LAotK3JlZmVycyB0byBhbnkgc3VjaCBwcm9ncmFtIG9yIHdvcmssIGFuZCBhICJ3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtIgotK21lYW5zIGVpdGhlciB0aGUgUHJvZ3JhbSBvciBhbnkgZGVyaXZhdGl2ZSB3b3JrIHVuZGVyIGNvcHlyaWdodCBsYXc6Ci0rdGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBQcm9ncmFtIG9yIGEgcG9ydGlvbiBvZiBpdCwKLStlaXRoZXIgdmVyYmF0aW0gb3Igd2l0aCBtb2RpZmljYXRpb25zIGFuZC9vciB0cmFuc2xhdGVkIGludG8gYW5vdGhlcgotK2xhbmd1YWdlLiAgKEhlcmVpbmFmdGVyLCB0cmFuc2xhdGlvbiBpcyBpbmNsdWRlZCB3aXRob3V0IGxpbWl0YXRpb24gaW4KLSt0aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pICBFYWNoIGxpY2Vuc2VlIGlzIGFkZHJlc3NlZCBhcyAieW91Ii4KLSsKLStBY3Rpdml0aWVzIG90aGVyIHRoYW4gY29weWluZywgZGlzdHJpYnV0aW9uIGFuZCBtb2RpZmljYXRpb24gYXJlIG5vdAotK2NvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKLStydW5uaW5nIHRoZSBQcm9ncmFtIGlzIG5vdCByZXN0cmljdGVkLCBhbmQgdGhlIG91dHB1dCBmcm9tIHRoZSBQcm9ncmFtCi0raXMgY292ZXJlZCBvbmx5IGlmIGl0cyBjb250ZW50cyBjb25zdGl0dXRlIGEgd29yayBiYXNlZCBvbiB0aGUKLStQcm9ncmFtIChpbmRlcGVuZGVudCBvZiBoYXZpbmcgYmVlbiBtYWRlIGJ5IHJ1bm5pbmcgdGhlIFByb2dyYW0pLgotK1doZXRoZXIgdGhhdCBpcyB0cnVlIGRlcGVuZHMgb24gd2hhdCB0aGUgUHJvZ3JhbSBkb2VzLgotKwotKyAgMS4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdzCi0rc291cmNlIGNvZGUgYXMgeW91IHJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91Ci0rY29uc3BpY3VvdXNseSBhbmQgYXBwcm9wcmlhdGVseSBwdWJsaXNoIG9uIGVhY2ggY29weSBhbiBhcHByb3ByaWF0ZQotK2NvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7IGtlZXAgaW50YWN0IGFsbCB0aGUKLStub3RpY2VzIHRoYXQgcmVmZXIgdG8gdGhpcyBMaWNlbnNlIGFuZCB0byB0aGUgYWJzZW5jZSBvZiBhbnkgd2FycmFudHk7Ci0rYW5kIGdpdmUgYW55IG90aGVyIHJlY2lwaWVudHMgb2YgdGhlIFByb2dyYW0gYSBjb3B5IG9mIHRoaXMgTGljZW5zZQotK2Fsb25nIHdpdGggdGhlIFByb2dyYW0uCi0rCi0rWW91IG1heSBjaGFyZ2UgYSBmZWUgZm9yIHRoZSBwaHlzaWNhbCBhY3Qgb2YgdHJhbnNmZXJyaW5nIGEgY29weSwgYW5kCi0reW91IG1heSBhdCB5b3VyIG9wdGlvbiBvZmZlciB3YXJyYW50eSBwcm90ZWN0aW9uIGluIGV4Y2hhbmdlIGZvciBhIGZlZS4KLSsKLSsgIDIuIFlvdSBtYXkgbW9kaWZ5IHlvdXIgY29weSBvciBjb3BpZXMgb2YgdGhlIFByb2dyYW0gb3IgYW55IHBvcnRpb24KLStvZiBpdCwgdGh1cyBmb3JtaW5nIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSwgYW5kIGNvcHkgYW5kCi0rZGlzdHJpYnV0ZSBzdWNoIG1vZGlmaWNhdGlvbnMgb3Igd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiAxCi0rYWJvdmUsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gbWVldCBhbGwgb2YgdGhlc2UgY29uZGl0aW9uczoKLSsKLSsgICAgYSkgWW91IG11c3QgY2F1c2UgdGhlIG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCi0rICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuCi0rCi0rICAgIGIpIFlvdSBtdXN0IGNhdXNlIGFueSB3b3JrIHRoYXQgeW91IGRpc3RyaWJ1dGUgb3IgcHVibGlzaCwgdGhhdCBpbgotKyAgICB3aG9sZSBvciBpbiBwYXJ0IGNvbnRhaW5zIG9yIGlzIGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSBvciBhbnkKLSsgICAgcGFydCB0aGVyZW9mLCB0byBiZSBsaWNlbnNlZCBhcyBhIHdob2xlIGF0IG5vIGNoYXJnZSB0byBhbGwgdGhpcmQKLSsgICAgcGFydGllcyB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgotKwotKyAgICBjKSBJZiB0aGUgbW9kaWZpZWQgcHJvZ3JhbSBub3JtYWxseSByZWFkcyBjb21tYW5kcyBpbnRlcmFjdGl2ZWx5Ci0rICAgIHdoZW4gcnVuLCB5b3UgbXVzdCBjYXVzZSBpdCwgd2hlbiBzdGFydGVkIHJ1bm5pbmcgZm9yIHN1Y2gKLSsgICAgaW50ZXJhY3RpdmUgdXNlIGluIHRoZSBtb3N0IG9yZGluYXJ5IHdheSwgdG8gcHJpbnQgb3IgZGlzcGxheSBhbgotKyAgICBhbm5vdW5jZW1lbnQgaW5jbHVkaW5nIGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGEKLSsgICAgbm90aWNlIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgKG9yIGVsc2UsIHNheWluZyB0aGF0IHlvdSBwcm92aWRlCi0rICAgIGEgd2FycmFudHkpIGFuZCB0aGF0IHVzZXJzIG1heSByZWRpc3RyaWJ1dGUgdGhlIHByb2dyYW0gdW5kZXIKLSsgICAgdGhlc2UgY29uZGl0aW9ucywgYW5kIHRlbGxpbmcgdGhlIHVzZXIgaG93IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMKLSsgICAgTGljZW5zZS4gIChFeGNlcHRpb246IGlmIHRoZSBQcm9ncmFtIGl0c2VsZiBpcyBpbnRlcmFjdGl2ZSBidXQKLSsgICAgZG9lcyBub3Qgbm9ybWFsbHkgcHJpbnQgc3VjaCBhbiBhbm5vdW5jZW1lbnQsIHlvdXIgd29yayBiYXNlZCBvbgotKyAgICB0aGUgUHJvZ3JhbSBpcyBub3QgcmVxdWlyZWQgdG8gcHJpbnQgYW4gYW5ub3VuY2VtZW50LikKLSsMCi0rVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgotK2lkZW50aWZpYWJsZSBzZWN0aW9ucyBvZiB0aGF0IHdvcmsgYXJlIG5vdCBkZXJpdmVkIGZyb20gdGhlIFByb2dyYW0sCi0rYW5kIGNhbiBiZSByZWFzb25hYmx5IGNvbnNpZGVyZWQgaW5kZXBlbmRlbnQgYW5kIHNlcGFyYXRlIHdvcmtzIGluCi0rdGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQotK3NlY3Rpb25zIHdoZW4geW91IGRpc3RyaWJ1dGUgdGhlbSBhcyBzZXBhcmF0ZSB3b3Jrcy4gIEJ1dCB3aGVuIHlvdQotK2Rpc3RyaWJ1dGUgdGhlIHNhbWUgc2VjdGlvbnMgYXMgcGFydCBvZiBhIHdob2xlIHdoaWNoIGlzIGEgd29yayBiYXNlZAotK29uIHRoZSBQcm9ncmFtLCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgotK3RoaXMgTGljZW5zZSwgd2hvc2UgcGVybWlzc2lvbnMgZm9yIG90aGVyIGxpY2Vuc2VlcyBleHRlbmQgdG8gdGhlCi0rZW50aXJlIHdob2xlLCBhbmQgdGh1cyB0byBlYWNoIGFuZCBldmVyeSBwYXJ0IHJlZ2FyZGxlc3Mgb2Ygd2hvIHdyb3RlIGl0LgotKwotK1RodXMsIGl0IGlzIG5vdCB0aGUgaW50ZW50IG9mIHRoaXMgc2VjdGlvbiB0byBjbGFpbSByaWdodHMgb3IgY29udGVzdAotK3lvdXIgcmlnaHRzIHRvIHdvcmsgd3JpdHRlbiBlbnRpcmVseSBieSB5b3U7IHJhdGhlciwgdGhlIGludGVudCBpcyB0bwotK2V4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgotK2NvbGxlY3RpdmUgd29ya3MgYmFzZWQgb24gdGhlIFByb2dyYW0uCi0rCi0rSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgUHJvZ3JhbQotK3dpdGggdGhlIFByb2dyYW0gKG9yIHdpdGggYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtKSBvbiBhIHZvbHVtZSBvZgotK2Egc3RvcmFnZSBvciBkaXN0cmlidXRpb24gbWVkaXVtIGRvZXMgbm90IGJyaW5nIHRoZSBvdGhlciB3b3JrIHVuZGVyCi0rdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KLSsKLSsgIDMuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAob3IgYSB3b3JrIGJhc2VkIG9uIGl0LAotK3VuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHVuZGVyIHRoZSB0ZXJtcyBvZgotK1NlY3Rpb25zIDEgYW5kIDIgYWJvdmUgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBkbyBvbmUgb2YgdGhlIGZvbGxvd2luZzoKLSsKLSsgICAgYSkgQWNjb21wYW55IGl0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZQotKyAgICBzb3VyY2UgY29kZSwgd2hpY2ggbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMKLSsgICAgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCi0rCi0rICAgIGIpIEFjY29tcGFueSBpdCB3aXRoIGEgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxlYXN0IHRocmVlCi0rICAgIHllYXJzLCB0byBnaXZlIGFueSB0aGlyZCBwYXJ0eSwgZm9yIGEgY2hhcmdlIG5vIG1vcmUgdGhhbiB5b3VyCi0rICAgIGNvc3Qgb2YgcGh5c2ljYWxseSBwZXJmb3JtaW5nIHNvdXJjZSBkaXN0cmlidXRpb24sIGEgY29tcGxldGUKLSsgICAgbWFjaGluZS1yZWFkYWJsZSBjb3B5IG9mIHRoZSBjb3JyZXNwb25kaW5nIHNvdXJjZSBjb2RlLCB0byBiZQotKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bQotKyAgICBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCi0rCi0rICAgIGMpIEFjY29tcGFueSBpdCB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3UgcmVjZWl2ZWQgYXMgdG8gdGhlIG9mZmVyCi0rICAgIHRvIGRpc3RyaWJ1dGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZS4gIChUaGlzIGFsdGVybmF0aXZlIGlzCi0rICAgIGFsbG93ZWQgb25seSBmb3Igbm9uY29tbWVyY2lhbCBkaXN0cmlidXRpb24gYW5kIG9ubHkgaWYgeW91Ci0rICAgIHJlY2VpdmVkIHRoZSBwcm9ncmFtIGluIG9iamVjdCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9ybSB3aXRoIHN1Y2gKLSsgICAgYW4gb2ZmZXIsIGluIGFjY29yZCB3aXRoIFN1YnNlY3Rpb24gYiBhYm92ZS4pCi0rCi0rVGhlIHNvdXJjZSBjb2RlIGZvciBhIHdvcmsgbWVhbnMgdGhlIHByZWZlcnJlZCBmb3JtIG9mIHRoZSB3b3JrIGZvcgotK21ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGFuIGV4ZWN1dGFibGUgd29yaywgY29tcGxldGUgc291cmNlCi0rY29kZSBtZWFucyBhbGwgdGhlIHNvdXJjZSBjb2RlIGZvciBhbGwgbW9kdWxlcyBpdCBjb250YWlucywgcGx1cyBhbnkKLSthc3NvY2lhdGVkIGludGVyZmFjZSBkZWZpbml0aW9uIGZpbGVzLCBwbHVzIHRoZSBzY3JpcHRzIHVzZWQgdG8KLStjb250cm9sIGNvbXBpbGF0aW9uIGFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGV4ZWN1dGFibGUuICBIb3dldmVyLCBhcyBhCi0rc3BlY2lhbCBleGNlcHRpb24sIHRoZSBzb3VyY2UgY29kZSBkaXN0cmlidXRlZCBuZWVkIG5vdCBpbmNsdWRlCi0rYW55dGhpbmcgdGhhdCBpcyBub3JtYWxseSBkaXN0cmlidXRlZCAoaW4gZWl0aGVyIHNvdXJjZSBvciBiaW5hcnkKLStmb3JtKSB3aXRoIHRoZSBtYWpvciBjb21wb25lbnRzIChjb21waWxlciwga2VybmVsLCBhbmQgc28gb24pIG9mIHRoZQotK29wZXJhdGluZyBzeXN0ZW0gb24gd2hpY2ggdGhlIGV4ZWN1dGFibGUgcnVucywgdW5sZXNzIHRoYXQgY29tcG9uZW50Ci0raXRzZWxmIGFjY29tcGFuaWVzIHRoZSBleGVjdXRhYmxlLgotKwotK0lmIGRpc3RyaWJ1dGlvbiBvZiBleGVjdXRhYmxlIG9yIG9iamVjdCBjb2RlIGlzIG1hZGUgYnkgb2ZmZXJpbmcKLSthY2Nlc3MgdG8gY29weSBmcm9tIGEgZGVzaWduYXRlZCBwbGFjZSwgdGhlbiBvZmZlcmluZyBlcXVpdmFsZW50Ci0rYWNjZXNzIHRvIGNvcHkgdGhlIHNvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2UgY291bnRzIGFzCi0rZGlzdHJpYnV0aW9uIG9mIHRoZSBzb3VyY2UgY29kZSwgZXZlbiB0aG91Z2ggdGhpcmQgcGFydGllcyBhcmUgbm90Ci0rY29tcGVsbGVkIHRvIGNvcHkgdGhlIHNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4KLSsMCi0rICA0LiBZb3UgbWF5IG5vdCBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0KLStleGNlcHQgYXMgZXhwcmVzc2x5IHByb3ZpZGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIEFueSBhdHRlbXB0Ci0rb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGlzCi0rdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIgdGhpcyBMaWNlbnNlLgotK0hvd2V2ZXIsIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLCBvciByaWdodHMsIGZyb20geW91IHVuZGVyCi0rdGhpcyBMaWNlbnNlIHdpbGwgbm90IGhhdmUgdGhlaXIgbGljZW5zZXMgdGVybWluYXRlZCBzbyBsb25nIGFzIHN1Y2gKLStwYXJ0aWVzIHJlbWFpbiBpbiBmdWxsIGNvbXBsaWFuY2UuCi0rCi0rICA1LiBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlLCBzaW5jZSB5b3UgaGF2ZSBub3QKLStzaWduZWQgaXQuICBIb3dldmVyLCBub3RoaW5nIGVsc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIG1vZGlmeSBvcgotK2Rpc3RyaWJ1dGUgdGhlIFByb2dyYW0gb3IgaXRzIGRlcml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25zIGFyZQotK3Byb2hpYml0ZWQgYnkgbGF3IGlmIHlvdSBkbyBub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkKLSttb2RpZnlpbmcgb3IgZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKLStQcm9ncmFtKSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28sIGFuZAotK2FsbCBpdHMgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGluZyBvciBtb2RpZnlpbmcKLSt0aGUgUHJvZ3JhbSBvciB3b3JrcyBiYXNlZCBvbiBpdC4KLSsKLSsgIDYuIEVhY2ggdGltZSB5b3UgcmVkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKLStQcm9ncmFtKSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZQotK29yaWdpbmFsIGxpY2Vuc29yIHRvIGNvcHksIGRpc3RyaWJ1dGUgb3IgbW9kaWZ5IHRoZSBQcm9ncmFtIHN1YmplY3QgdG8KLSt0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4gIFlvdSBtYXkgbm90IGltcG9zZSBhbnkgZnVydGhlcgotK3Jlc3RyaWN0aW9ucyBvbiB0aGUgcmVjaXBpZW50cycgZXhlcmNpc2Ugb2YgdGhlIHJpZ2h0cyBncmFudGVkIGhlcmVpbi4KLStZb3UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB0bwotK3RoaXMgTGljZW5zZS4KLSsKLSsgIDcuIElmLCBhcyBhIGNvbnNlcXVlbmNlIG9mIGEgY291cnQganVkZ21lbnQgb3IgYWxsZWdhdGlvbiBvZiBwYXRlbnQKLStpbmZyaW5nZW1lbnQgb3IgZm9yIGFueSBvdGhlciByZWFzb24gKG5vdCBsaW1pdGVkIHRvIHBhdGVudCBpc3N1ZXMpLAotK2NvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKLStvdGhlcndpc2UpIHRoYXQgY29udHJhZGljdCB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UsIHRoZXkgZG8gbm90Ci0rZXhjdXNlIHlvdSBmcm9tIHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZS4gIElmIHlvdSBjYW5ub3QKLStkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCi0rTGljZW5zZSBhbmQgYW55IG90aGVyIHBlcnRpbmVudCBvYmxpZ2F0aW9ucywgdGhlbiBhcyBhIGNvbnNlcXVlbmNlIHlvdQotK21heSBub3QgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBhdCBhbGwuICBGb3IgZXhhbXBsZSwgaWYgYSBwYXRlbnQKLStsaWNlbnNlIHdvdWxkIG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGJ5Ci0rYWxsIHRob3NlIHdobyByZWNlaXZlIGNvcGllcyBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggeW91LCB0aGVuCi0rdGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBzYXRpc2Z5IGJvdGggaXQgYW5kIHRoaXMgTGljZW5zZSB3b3VsZCBiZSB0bwotK3JlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0uCi0rCi0rSWYgYW55IHBvcnRpb24gb2YgdGhpcyBzZWN0aW9uIGlzIGhlbGQgaW52YWxpZCBvciB1bmVuZm9yY2VhYmxlIHVuZGVyCi0rYW55IHBhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0bwotK2FwcGx5IGFuZCB0aGUgc2VjdGlvbiBhcyBhIHdob2xlIGlzIGludGVuZGVkIHRvIGFwcGx5IGluIG90aGVyCi0rY2lyY3Vtc3RhbmNlcy4KLSsKLStJdCBpcyBub3QgdGhlIHB1cnBvc2Ugb2YgdGhpcyBzZWN0aW9uIHRvIGluZHVjZSB5b3UgdG8gaW5mcmluZ2UgYW55Ci0rcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKLStzdWNoIGNsYWltczsgdGhpcyBzZWN0aW9uIGhhcyB0aGUgc29sZSBwdXJwb3NlIG9mIHByb3RlY3RpbmcgdGhlCi0raW50ZWdyaXR5IG9mIHRoZSBmcmVlIHNvZnR3YXJlIGRpc3RyaWJ1dGlvbiBzeXN0ZW0sIHdoaWNoIGlzCi0raW1wbGVtZW50ZWQgYnkgcHVibGljIGxpY2Vuc2UgcHJhY3RpY2VzLiAgTWFueSBwZW9wbGUgaGF2ZSBtYWRlCi0rZ2VuZXJvdXMgY29udHJpYnV0aW9ucyB0byB0aGUgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAotK3Rocm91Z2ggdGhhdCBzeXN0ZW0gaW4gcmVsaWFuY2Ugb24gY29uc2lzdGVudCBhcHBsaWNhdGlvbiBvZiB0aGF0Ci0rc3lzdGVtOyBpdCBpcyB1cCB0byB0aGUgYXV0aG9yL2Rvbm9yIHRvIGRlY2lkZSBpZiBoZSBvciBzaGUgaXMgd2lsbGluZwotK3RvIGRpc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFuZCBhIGxpY2Vuc2VlIGNhbm5vdAotK2ltcG9zZSB0aGF0IGNob2ljZS4KLSsKLStUaGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8KLStiZSBhIGNvbnNlcXVlbmNlIG9mIHRoZSByZXN0IG9mIHRoaXMgTGljZW5zZS4KLSsMCi0rICA4LiBJZiB0aGUgZGlzdHJpYnV0aW9uIGFuZC9vciB1c2Ugb2YgdGhlIFByb2dyYW0gaXMgcmVzdHJpY3RlZCBpbgotK2NlcnRhaW4gY291bnRyaWVzIGVpdGhlciBieSBwYXRlbnRzIG9yIGJ5IGNvcHlyaWdodGVkIGludGVyZmFjZXMsIHRoZQotK29yaWdpbmFsIGNvcHlyaWdodCBob2xkZXIgd2hvIHBsYWNlcyB0aGUgUHJvZ3JhbSB1bmRlciB0aGlzIExpY2Vuc2UKLSttYXkgYWRkIGFuIGV4cGxpY2l0IGdlb2dyYXBoaWNhbCBkaXN0cmlidXRpb24gbGltaXRhdGlvbiBleGNsdWRpbmcKLSt0aG9zZSBjb3VudHJpZXMsIHNvIHRoYXQgZGlzdHJpYnV0aW9uIGlzIHBlcm1pdHRlZCBvbmx5IGluIG9yIGFtb25nCi0rY291bnRyaWVzIG5vdCB0aHVzIGV4Y2x1ZGVkLiAgSW4gc3VjaCBjYXNlLCB0aGlzIExpY2Vuc2UgaW5jb3Jwb3JhdGVzCi0rdGhlIGxpbWl0YXRpb24gYXMgaWYgd3JpdHRlbiBpbiB0aGUgYm9keSBvZiB0aGlzIExpY2Vuc2UuCi0rCi0rICA5LiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucwotK29mIHRoZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAgU3VjaCBuZXcgdmVyc2lvbnMgd2lsbAotK2JlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bwotK2FkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgotKwotK0VhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlIFByb2dyYW0KLStzcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGllcyB0byBpdCBhbmQgImFueQotK2xhdGVyIHZlcnNpb24iLCB5b3UgaGF2ZSB0aGUgb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMKLStlaXRoZXIgb2YgdGhhdCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQotK1NvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBzcGVjaWZ5IGEgdmVyc2lvbiBudW1iZXIgb2YKLSt0aGlzIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi0rRm91bmRhdGlvbi4KLSsKLSsgIDEwLiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgUHJvZ3JhbSBpbnRvIG90aGVyIGZyZWUKLStwcm9ncmFtcyB3aG9zZSBkaXN0cmlidXRpb24gY29uZGl0aW9ucyBhcmUgZGlmZmVyZW50LCB3cml0ZSB0byB0aGUgYXV0aG9yCi0rdG8gYXNrIGZvciBwZXJtaXNzaW9uLiAgRm9yIHNvZnR3YXJlIHdoaWNoIGlzIGNvcHlyaWdodGVkIGJ5IHRoZSBGcmVlCi0rU29mdHdhcmUgRm91bmRhdGlvbiwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgd2Ugc29tZXRpbWVzCi0rbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyIGRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMKLStvZiBwcmVzZXJ2aW5nIHRoZSBmcmVlIHN0YXR1cyBvZiBhbGwgZGVyaXZhdGl2ZXMgb2Ygb3VyIGZyZWUgc29mdHdhcmUgYW5kCi0rb2YgcHJvbW90aW5nIHRoZSBzaGFyaW5nIGFuZCByZXVzZSBvZiBzb2Z0d2FyZSBnZW5lcmFsbHkuCi0rCi0rCQkJICAgIE5PIFdBUlJBTlRZCi0rCi0rICAxMS4gQkVDQVVTRSBUSEUgUFJPR1JBTSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8gV0FSUkFOVFkKLStGT1IgVEhFIFBST0dSQU0sIFRPIFRIRSBFWFRFTlQgUEVSTUlUVEVEIEJZIEFQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4KLStPVEhFUldJU0UgU1RBVEVEIElOIFdSSVRJTkcgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORC9PUiBPVEhFUiBQQVJUSUVTCi0rUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTRUQKLStPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgotK01FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBUSEUgRU5USVJFIFJJU0sgQVMKLStUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0gSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhFCi0rUFJPR1JBTSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUgVEhFIENPU1QgT0YgQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsCi0rUkVQQUlSIE9SIENPUlJFQ1RJT04uCi0rCi0rICAxMi4gSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTiBXUklUSU5HCi0rV0lMTCBBTlkgQ09QWVJJR0hUIEhPTERFUiwgT1IgQU5ZIE9USEVSIFBBUlRZIFdITyBNQVkgTU9ESUZZIEFORC9PUgotK1JFRElTVFJJQlVURSBUSEUgUFJPR1JBTSBBUyBQRVJNSVRURUQgQUJPVkUsIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsCi0rSU5DTFVESU5HIEFOWSBHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HCi0rT1VUIE9GIFRIRSBVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUgUFJPR1JBTSAoSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRAotK1RPIExPU1MgT0YgREFUQSBPUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElOQUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWQotK1lPVSBPUiBUSElSRCBQQVJUSUVTIE9SIEEgRkFJTFVSRSBPRiBUSEUgUFJPR1JBTSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSCi0rUFJPR1JBTVMpLCBFVkVOIElGIFNVQ0ggSE9MREVSIE9SIE9USEVSIFBBUlRZIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFCi0rUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgotKwotKwkJICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKLSsMCi0rCSAgICBIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMKLSsKLSsgIElmIHlvdSBkZXZlbG9wIGEgbmV3IHByb2dyYW0sIGFuZCB5b3Ugd2FudCBpdCB0byBiZSBvZiB0aGUgZ3JlYXRlc3QKLStwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgdGhlIGJlc3Qgd2F5IHRvIGFjaGlldmUgdGhpcyBpcyB0byBtYWtlIGl0Ci0rZnJlZSBzb2Z0d2FyZSB3aGljaCBldmVyeW9uZSBjYW4gcmVkaXN0cmlidXRlIGFuZCBjaGFuZ2UgdW5kZXIgdGhlc2UgdGVybXMuCi0rCi0rICBUbyBkbyBzbywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgcHJvZ3JhbS4gIEl0IGlzIHNhZmVzdAotK3RvIGF0dGFjaCB0aGVtIHRvIHRoZSBzdGFydCBvZiBlYWNoIHNvdXJjZSBmaWxlIHRvIG1vc3QgZWZmZWN0aXZlbHkKLStjb252ZXkgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdAotK3RoZSAiY29weXJpZ2h0IiBsaW5lIGFuZCBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGZ1bGwgbm90aWNlIGlzIGZvdW5kLgotKwotKyAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgcHJvZ3JhbSdzIG5hbWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgotKyAgICBDb3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgotKwotKyAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCi0rCi0rCi0rQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCi0rCi0rSWYgdGhlIHByb2dyYW0gaXMgaW50ZXJhY3RpdmUsIG1ha2UgaXQgb3V0cHV0IGEgc2hvcnQgbm90aWNlIGxpa2UgdGhpcwotK3doZW4gaXQgc3RhcnRzIGluIGFuIGludGVyYWN0aXZlIG1vZGU6Ci0rCi0rICAgIEdub21vdmlzaW9uIHZlcnNpb24gNjksIENvcHlyaWdodCAoQykgeWVhciBuYW1lIG9mIGF1dGhvcgotKyAgICBHbm9tb3Zpc2lvbiBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFk7IGZvciBkZXRhaWxzIHR5cGUgYHNob3cgdycuCi0rICAgIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBhcmUgd2VsY29tZSB0byByZWRpc3RyaWJ1dGUgaXQKLSsgICAgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zOyB0eXBlIGBzaG93IGMnIGZvciBkZXRhaWxzLgotKwotK1RoZSBoeXBvdGhldGljYWwgY29tbWFuZHMgYHNob3cgdycgYW5kIGBzaG93IGMnIHNob3VsZCBzaG93IHRoZSBhcHByb3ByaWF0ZQotK3BhcnRzIG9mIHRoZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgT2YgY291cnNlLCB0aGUgY29tbWFuZHMgeW91IHVzZSBtYXkKLStiZSBjYWxsZWQgc29tZXRoaW5nIG90aGVyIHRoYW4gYHNob3cgdycgYW5kIGBzaG93IGMnOyB0aGV5IGNvdWxkIGV2ZW4gYmUKLSttb3VzZS1jbGlja3Mgb3IgbWVudSBpdGVtcy0td2hhdGV2ZXIgc3VpdHMgeW91ciBwcm9ncmFtLgotKwotK1lvdSBzaG91bGQgYWxzbyBnZXQgeW91ciBlbXBsb3llciAoaWYgeW91IHdvcmsgYXMgYSBwcm9ncmFtbWVyKSBvciB5b3VyCi0rc2Nob29sLCBpZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0aGUgcHJvZ3JhbSwgaWYKLStuZWNlc3NhcnkuICBIZXJlIGlzIGEgc2FtcGxlOyBhbHRlciB0aGUgbmFtZXM6Ci0rCi0rICBZb3lvZHluZSwgSW5jLiwgaGVyZWJ5IGRpc2NsYWltcyBhbGwgY29weXJpZ2h0IGludGVyZXN0IGluIHRoZSBwcm9ncmFtCi0rICBgR25vbW92aXNpb24nICh3aGljaCBtYWtlcyBwYXNzZXMgYXQgY29tcGlsZXJzKSB3cml0dGVuIGJ5IEphbWVzIEhhY2tlci4KLSsKLSsgIDxzaWduYXR1cmUgb2YgVHkgQ29vbj4sIDEgQXByaWwgMTk4OQotKyAgVHkgQ29vbiwgUHJlc2lkZW50IG9mIFZpY2UKLSsKLStUaGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtIGludG8KLStwcm9wcmlldGFyeSBwcm9ncmFtcy4gIElmIHlvdXIgcHJvZ3JhbSBpcyBhIHN1YnJvdXRpbmUgbGlicmFyeSwgeW91IG1heQotK2NvbnNpZGVyIGl0IG1vcmUgdXNlZnVsIHRvIHBlcm1pdCBsaW5raW5nIHByb3ByaWV0YXJ5IGFwcGxpY2F0aW9ucyB3aXRoIHRoZQotK2xpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExpYnJhcnkgR2VuZXJhbAotK1B1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2ZpbGVzL2hvc3RhcC1mdy1sb2FkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2ZpbGVzL2hvc3RhcC1mdy1sb2FkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNTBiZGMxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9maWxlcy9ob3N0YXAtZnctbG9hZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLQotIwotIyBQYXRjaCBtYW5hZ2VkIGJ5IGh0dHA6Ly93d3cuaG9sZ2Vyc2NodXJpZy5kZS9wYXRjaGVyLmh0bWwKLSMKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi0tLS0gaG9zdGFwLXV0aWxzLTAuMi40L2hvc3RhcF9md19sb2Fkfmhvc3RhcC1mdy1sb2FkCi0rKysgaG9zdGFwLXV0aWxzLTAuMi40L2hvc3RhcF9md19sb2FkCi1AQCAtNiw5ICs2LDkgQEAKLSAjIEZpcm13YXJlIGltYWdlcyBmb3IgdGhlIGNhcmQKLSAjIFRPRE86IGNvdWxkIHRyeSB0byBzZWxlY3QgY29ycmVjdCBmaXJtd2FyZSB0eXBlIGF1dG9tYXRpY2FsbHkKLSAKLS1QUkk9L2V0Yy9wY21jaWEvUE0wMTAxMDIuSEVYCi0tU1RBPS9ldGMvcGNtY2lhL1JGMDEwODAyLkhFWAotLVBSSVNNMl9TUkVDPS91c3IvbG9jYWwvYmluL3ByaXNtMl9zcmVjCi0rUFJJPS9ldGMvcGNtY2lhL3BtMDEwMTAyLmhleAotK1NUQT0vZXRjL3BjbWNpYS9yZjAxMDgwNC5oZXgKLStQUklTTTJfU1JFQz0vdXNyL3NiaW4vcHJpc20yX3NyZWMKLSAKLSBzZXQgLWUKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9maWxlcy9ob3N0YXBfY3MuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9maWxlcy9ob3N0YXBfY3MuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRkYTgyYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvZmlsZXMvaG9zdGFwX2NzLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSwxOTMgKzAsMCBAQAotbW9kdWxlICJob3N0YXBfY3MiIG9wdHMgImNoYW5uZWw9MyBpd19tb2RlPTIgZXNzaWQ9YW55IGlnbm9yZV9jaXNfdmNjPTEiCi0KLWNhcmQgIkFjdGlvbnRlYyA4MDJDSTIiCi0gIG1hbmZpZCAweDE2NjgsIDB4MDEwMQotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkFpcldheSA4MDIuMTEgQWRhcHRlciAoUENNQ0lBKSIKLSAgI3ZlcnNpb24gIkFpcldheSIsICI4MDIuMTEgQWRhcHRlciAoUENNQ0lBKSIKLSAgbWFuZmlkIDB4MDI2MSwgMHgwMDAyCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiQXN1cyBTcGFjZUxpbmsgV0wxMTAiCi0gICBtYW5maWQgMHgwMmFhLDB4MDAwMgotICAgYmluZCAiaG9zdGFwX2NzIgotCi0jIyBoYW5kaGVsZHMub3JnIGJ1ZyA5NjQKLWNhcmQgIkJlbGtpbiBGNUQ2MDYwIEV0aGVybmV0IgotICAgI3ZlcnNpb24gIlBDTUNJQSIsICIxMU0gV0xBTiBDYXJkIHYyLjUiLCAiSVNMMzczMDBQIiwgIlJldkEiCi0gICBtYW5maWQgMHgwMjc0LCAweDE2MTIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiQ29tcGFxIDExTWJwcyBXaXJlbGVzcyBQQyBDYXJkIgotICBtYW5maWQgMHgwMjhhLCAweDAwMDIKLSAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJDb21wYXEgV0wxMDAgMTEgTWJwcyBXaXJlbGVzcyBBZGFwdGVyIgotICBtYW5maWQgMHgwMTM4LCAweDAwMDIKLSAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJDb21wYXEgSE5XLTEwMCAxMSBNYnBzIFdpcmVsZXNzIEFkYXB0ZXIiCi0gIG1hbmZpZCAweDAyOGEsIDB4MDAwMgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkQtTGluayBEV0wtNjUwIgotICB2ZXJzaW9uICJEIiwgIkxpbmsgRFdMLTY1MCAxMU1icHMgV0xBTiBDYXJkIgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkQtTGluayBEUkMtNjUwIgotICB2ZXJzaW9uICJEIiwgIkxpbmsgRFJDLTY1MCAxMU1icHMgV0xBTiBDYXJkIgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkQtTGluayBEQ0Y2NjAiCi0gIG1hbmZpZCAweGQ2MDEsIDB4MDAwNQotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkZhcmFsbG9uIFNreUxJTkUiCi0gIHZlcnNpb24gIklOVEVSU0lMIiwgIkhGQTM4NHgvSUVFRSIKLSAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJIeXBlckxpbmsgV2lyZWxlc3MgUEMgQ2FyZCAxMU1icHMiCi0gIHZlcnNpb24gIkh5cGVyTGluayIsICJXaXJlbGVzcyBQQyBDYXJkIDExTWJwcyIKLSAgYmluZCAiaG9zdGFwX2NzIgotCi0jIGNhcmQgIkludGVyc2lsIFBSSVNNMiAxMSBNYnBzIFdpcmVsZXNzIEFkYXB0ZXIiCi0jICAgbWFuZmlkIDB4MDE1NiwgMHgwMDAyCi0jICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkxBNDExMSBTcGVjdHJ1bTI0IFdpcmVsZXNzIExBTiBQQyBDYXJkIgotICB2ZXJzaW9uICJTeW1ib2wgVGVjaG5vbG9naWVzIgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkxpbmtzeXMgV1BDMTEgMTFNYnBzIDgwMi4xMWIgV0xBTiBDYXJkIgotICB2ZXJzaW9uICJJbnN0YW50IFdpcmVsZXNzICIsICIgTmV0d29yayBQQyBDQVJEIiwgIlZlcnNpb24gMDEuMDIiCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiTGlua3N5cyBXQ0YxMSAxMU1icHMgODAyLjExYiBXTEFOIENhcmQiCi0gICBtYW5maWQgMHgwMjc0LCAweDMzMDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgYmluZCAiaG9zdGFwX2NzIiAKLQotIyMgaGFuZGhlbGRzLm9yZyBidWcgIzc5MAotY2FyZCAiTGlua3N5cyBXaXJlbGVzcyBDb21wYWN0Rmxhc2ggQ2FyZCBXQ0YxMiIKLSAgbWFuZmlkIDB4MDI4YSwgMHgwNjczCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiTGlua3N5cyBXTEFOIENGIENhcmQiCi0gIG1hbmZpZCAweDAyNzQsIDB4MzMwMQotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIk5FVEdFQVIgTUE3MDEgV2lyZWxlc3MgQ0YgQ2FyZCIKLSAgbWFuZmlkIDB4ZDYwMSwgMHgwMDAyCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiTm9ydGVsIE5ldHdvcmtzIGVNb2JpbGl0eSA4MDIuMTEgV2lyZWxlc3MgQWRhcHRlciIKLSAgbWFuZmlkIDB4MDFlYiwgMHgwODBhCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiUExBTkVYIEdlb1dhdmUgR1ctQ0YxMTAiCi0gIHZlcnNpb24gIlBMQU5FWCIsICJHZW9XYXZlL0dXLUNGMTEwIgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlBST1hJTSBMQU4gUEMgQ0FSRCBIQVJNT05ZIDgwMjExQiIKLSAgdmVyc2lvbiAiUFJPWElNIiwgIkxBTiBQQyBDQVJEIEhBUk1PTlkgODAyMTFCIgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlByb3hpbSBSYW5nZUxBTi9EUyIKLSAgdmVyc2lvbiAiUFJPWElNIiwiUmFuZ2VMQU4tRFMvTEFOIFBDIENBUkQiCi0gIG1hbmZpZCAweDAxMjYsIDB4ODAwMAotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlNhZmV3YXkgODAyLjExYiBXaXJlbGVzcyBBZGFwdGVyIgotICBtYW5maWQgMHhkNjAxLCAweDAwMDIKLSAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJTQU1TVU5HIDExTWJwcyBXTEFOIENhcmQiCi0gIHZlcnNpb24gIlNBTVNVTkciLCAiMTFNYnBzIFdMQU4gQ2FyZCIKLSAgYmluZCAiaG9zdGFwX2NzIgotCi0jIG5lZWRzIGZpcm13YXJlIHVwbG9hZCB2aWEgaG9zdGFwX2Z3X2xvYWQKLWNhcmQgIlNhbkRpc2sgQ29ubmVjdFBsdXMgT0VNICgwTUIpIgotICAgbWFuZmlkIDB4ZDYwMSwgMHgwMDEwCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLSMgbmVlZHMgc3BlY2lhbCBhY3RpdmF0aW9uICg+PWhvc3RhcCAwLjMuMiBvbmx5KSBwbHVzIGZpcm13YXJlIHVwbG9hZAotY2FyZCAiU2FuRGlzayBDb25uZWN0UGx1cyB3LyBNZW1vcnkiCi0gICB2ZXJzaW9uICJTYW5EaXNrIiwgIkNvbm5lY3RQbHVzIgotICAgbWFuZmlkIDB4ZDYwMSwgMHgwMTAxCi0gICBiaW5kICJob3N0YXBfY3MiIHRvIDAKLSMgICBiaW5kICJpZGUtY3MiIHRvIDEKLQotY2FyZCAiU2VuYW8vT3JpZ28gODAyMTFiIFdMQU4gQ2FyZCIKLSAgIG1hbmZpZCAweDAwMGIsMHg3MTAwCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlNpdGVjb20gV0wtMDA3IFdMQU4gQ0YgQ2FyZCIKLSAgbWFuZmlkIDB4ZDYwMSwgMHgwMDA0Ci0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiU01DMjYzMiA4MDIuMTEgKHByaXNtMikgQ2FyZCIKLSAgdmVyc2lvbiAiU01DIiwgIlNNQzI2MzJXIiwgIlZlcnNpb24gMDEuMDIiLCAiIgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlNwZWVkU3RyZWFtIFNTMTAyMSBXaXJlbGVzcyBBZGFwdGVyIgotICAjdmVyc2lvbiAiU2llbWVucyIsICJTcGVlZFN0cmVhbSBXaXJlbGVzcyBQQ01DSUEiCi0gIG1hbmZpZCAweDAyYWMsIDB4MDAwMgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlpDT01BWCBBaXJSdW5uZXIvWEktMzAwIgotICAjdmVyc2lvbiAiWkNPTUFYIiwgIkFpclJ1bm5lci9YSS0zMDAiCi0gIG1hbmZpZCAweGQ2MDEsIDB4MDAwMgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlpvbmV0IFpDRjExMDAiCi0gIG1hbmZpZCAweDAwMGIsIDB4NzEwMAotICBiaW5kICJob3N0YXBfY3MiCi0gIAotY2FyZCAiV2lyZWxlc3MgTEFOIEFkYXB0ZXIgVmVyc2lvbiAwMS4wMiIKLSAgIHZlcnNpb24gIldpcmVsZXNzIiwgIkxBTiBBZGFwdGVyIiwgIlZlcnNpb24gMDEuMDIiCi0jICAgbWFuZmlkIDB4MDE1NiwgMHgwMDAyCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkFtYmljb20gV0wxMTAwQyAxMU1icyBDYXJkIDgwMi4xMWIiCi0gIHZlcnNpb24gIkFtYmlDb20iLCAiV0wxMTAwQyA4MDIuMTFiIENGLUNhcmQiLCAiMi4yIgotICBtYW5maWQgMHhkNjAxLDB4MDAwMgotICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkFtYmljb20gV0wxMTAwQyAxMU1icyBDYXJkIDgwMi4xMWIiCi0gIG1hbmZpZCAweGQ2MDEsMHgwMDAyCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiU2FuZGlzayBDb25uZWN0IFNEV0NGQi0wMDAiCi0gIG1hbmZpZCAweGQ2MDEsMHgwMDA1Ci0gIGJpbmQgImhvc3RhcF9jcyIKLQotIyBDYXJkcyB3aXRoIEludGVyc2lsIGZpcm13YXJlIChQcmlzbSBjaGlwc2V0KQotCi1jYXJkICJMaW5rc3lzIFdQQzExIDExTWJwcyA4MDIuMTFiIFdMQU4gQ2FyZCIKLSAgdmVyc2lvbiAiVGhlIExpbmtzeXMgR3JvdXAsIEluYy4iLCAiSW5zdGFudCBXaXJlbGVzcyBOZXR3b3JrIFBDIENhcmQiLCAiSVNMMzczMDBQIiwgIlJldkEiCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiTGlua3N5cyBDb21wYWN0Rmxhc2ggV2lyZWxlc3MgQ2FyZCIKLSAgdmVyc2lvbiAiTGlua3N5cyIsICJXaXJlbGVzcyBDb21wYWN0Rmxhc2ggQ2FyZCIKLSAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJBQ1RJT05URUMgUFJJU00gV2lyZWxlc3MgTEFOIFBDIENhcmQiCi0gIHZlcnNpb24gIkFDVElPTlRFQyIsICJQUklTTSBXaXJlbGVzcyBMQU4gUEMgQ2FyZCIKLSAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJMaW5rc3lzIFdQQzExIFZlcnNpb24gMyIKLSAgbWFuZmlkIDB4MDI3NCwweDE2MTMKLSAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJCRU5RIEFXTDEwMCIKLSAgdmVyc2lvbiAiQkVOUSIsICJBV0wxMDAgUENNQ0lBIEFEQVBURVIiCi0gIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiUHJldGVjIFdMQU4iCi0gIHZlcnNpb24gIlByZXRlYyIsICJDb21wYWN0V0xBTiBDYXJkIDgwMi4xMWIiLCAiMi41IgotICBtYW5maWQgMHgwMTU2LCAweDAwMDIKLSAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJUcmVuZE5ldCBURVcgUEMxNiIKLSAgbWFuZmlkIDB4MDI3NCwgMHgxNjAxCi0gIGJpbmQgImhvc3RhcF9jcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9maWxlcy9ob3N0YXBfY3MuY29uZi11cHN0cmVhbSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9maWxlcy9ob3N0YXBfY3MuY29uZi11cHN0cmVhbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI3Mzg1YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvZmlsZXMvaG9zdGFwX2NzLmNvbmYtdXBzdHJlYW0KKysrIC9kZXYvbnVsbApAQCAtMSwxOTEgKzAsMCBAQAotZGV2aWNlICJob3N0YXBfY3MiCi0gICBjbGFzcyAibmV0d29yayIgbW9kdWxlICJob3N0YXAiLCAiaG9zdGFwX2NzIgotCi1jYXJkICJJbnRlcnNpbCBQUklTTTIgUmVmZXJlbmNlIERlc2lnbiAxMU1iL3MgV0xBTiBDYXJkIgotICAgdmVyc2lvbiAiSU5URVJTSUwiLCAiSEZBMzg0eC9JRUVFIgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJDb21wYXEgV0wxMDAgMTFNYi9zIFdMQU4gQ2FyZCIKLSAgIG1hbmZpZCAweDAxMzgsIDB4MDAwMgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJDb21wYXEgV0wyMDAiCi0gICB2ZXJzaW9uICJDb21wYXEiLCAiV0wyMDBfMTFNYnBzX1dpcmVsZXNzX1BDSV9DYXJkIgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJFTVRBQyBBMjQyNGkgMTFNYnBzIFdMQU4gQ2FyZCIKLSAgIG1hbmZpZCAweGMyNTAsIDB4MDAwMgotIyAgIGNpcyAiY2lzL0VtdGFjLmRhdCIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiTGlua3N5cyBXUEMxMSAxMU1icHMgV0xBTiBDYXJkIgotICAgdmVyc2lvbiAiSW5zdGFudCBXaXJlbGVzcyAiLCAiIE5ldHdvcmsgUEMgQ0FSRCIsICJWZXJzaW9uIDAxLjAyIgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJMaW5rc3lzIFdQQzExIFZlciAyLjUgMTFNYnBzIFdMQU4gQ2FyZCIKLSAgIG1hbmZpZCAweDAyNzQsIDB4MTYxMgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJMaW5rc3lzIFdQQzExIFZlciAzIDExTWJwcyBXTEFOIENhcmQiCi0gICBtYW5maWQgMHgwMjc0LCAweDE2MTMKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiTGlua3N5cyBXQ0YxMiBXaXJlbGVzcyBDb21wYWN0Rmxhc2ggQ2FyZCIKLSAgIHZlcnNpb24gIkxpbmtzeXMiLCAiV2lyZWxlc3MgQ29tcGFjdEZsYXNoIENhcmQiCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkQtTGluayBEV0wtNjUwIDExTWJwcyBXTEFOIENhcmQiCi0gICB2ZXJzaW9uICJEIiwgIkxpbmsgRFdMLTY1MCAxMU1icHMgV0xBTiBDYXJkIiwgIlZlcnNpb24gMDEuMDIiCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIkQtTGluayBEUkMtNjUwIDExTWJwcyBXTEFOIENhcmQiCi0jICB2ZXJzaW9uICJEIiwgIkxpbmsgRFJDLTY1MCAxMU1icHMgV0xBTiBDYXJkIiwgIlZlcnNpb24gMDEuMDIiCi0gICBtYW5maWQgMHgwMjhhLCAweDAwMDIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiWm9vbUFpciA0MTAwIDExTWIvcyBXTEFOIENhcmQiCi0gICB2ZXJzaW9uICJab29tQWlyIDExTWJwcyBIaWdoIiwgIlJhdGUgd2lyZWxlc3MgTmV0d29ya2luZyIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiQWRkdHJvbiBBV1AtMTAwIDExTWJwcyBXTEFOIENhcmQiCi0gICB2ZXJzaW9uICJBZGR0cm9uIiwgIkFXUC0xMDAgV2lyZWxlc3MgUENNQ0lBIiwgIlZlcnNpb24gMDEuMDIiCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlNhbXN1bmcgU1dMMjAwMC1OIDExTWIvcyBXTEFOIENhcmQiCi0gICBtYW5maWQgMHgwMjUwLCAweDAwMDIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiU01DIDI2MzJXIDExTWJwcyBXTEFOIENhcmQiCi0gICB2ZXJzaW9uICJTTUMiLCAiU01DMjYzMlciLCAiVmVyc2lvbiAwMS4wMiIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiQnJvTWF4IEZyZWVwb3J0IDExTWJwcyBXTEFOIENhcmQiCi0gICB2ZXJzaW9uICJJbnRlcnNpbCIsICJQUklTTSAyXzUgUENNQ0lBIEFEQVBURVIiLCAiSVNMMzczMDBQIiwgIkV2YWwtUmV2QSIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiWi1Db20gWEkzMDAgMTFNYi9zIFdMQU4gQ2FyZCIKLSAgIG1hbmZpZCAweGQ2MDEsIDB4MDAwMgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJaY29tYXggWEktMzI1SCAyMDBtVyIKLSMgICB2ZXJzaW9uICIgIiwgIklFRUUgODAyLjExIFdpcmVsZXNzIExBTi9QQyBDYXJkIgotICAgbWFuZmlkIDB4ZDYwMSwgMHgwMDA1Ci0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIjNDb20gQWlyQ29ubmVjdCBQQ0kgNzc3QSIKLSAgIG1hbmZpZCAweDAxMDEsIDB4MDc3NwotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJVLlMuIFJvYm90aWNzIElFRUUgODAyLjExYiBQQy1DQVJEIgotICAgdmVyc2lvbiAiVS5TLiBSb2JvdGljcyIsICJJRUVFIDgwMi4xMWIgUEMtQ0FSRCIsICJWZXJzaW9uIDAxLjAyIgotIyAgIG1hbmZpZCAweDAxNTYsIDB4MDAwMgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJMb25nc2hpbmUgTENSLTg1MzEgMTFNYnBzIFdMQU4gUENNQ0lBIENBUkQiCi0gICB2ZXJzaW9uICJPRU0iLCAiUFJJU00yIElFRUUgODAyLjExIFBDLUNhcmQiLCAiVmVyc2lvbiAwMS4wMiIKLSMgICBtYW5maWQgMHgwMTU2LCAweDAwMDIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiUGhpbGlwcyA4MDIuMTFiIFdMQU4gUENNQ0lBIgotICAgbWFuZmlkIDB4MDAwYiwgMHg3MzAwCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlByb3hpbSBSYW5nZUxBTiIKLSMgICB2ZXJzaW9uICJQUk9YSU0iLCAiUmFuZ2VMQU4tRFMvTEFOIFBDIENBUkQiCi0gICBtYW5maWQgMHgwMTI2LCAweDgwMDAKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiQnVmZmFsbyBXTEktQ0YtUzExRyIKLSAgIHZlcnNpb24gIkJVRkZBTE8iLCAiV0xJLUNGLVMxMUciCi0jICBtYW5maWQgMHgwMjZmLCAweDAzMGIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiTGV2ZWwtT25lIFdQQy0wMTAwIgotICAgdmVyc2lvbiAiRGlnaXRhbCBEYXRhIENvbW11bmljYXRpb25zIiwgIldQQy0wMTAwIiwgIlZlcnNpb24gMDAuMDAiCi0gICBtYW5maWQgMHgwMTU2LCAweDAwMDIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiQmVsa2luIDgwMi4xMWIgV0xBTiBQQ01DSUEiCi0gICB2ZXJzaW9uICJCZWxraW4iLCAiMTFNYnBzIFdpcmVsZXNzIE5vdGVib29rIE5ldHdvcmsgQWRhcHRlciIsICJWZXJzaW9uIDAxLjAyIgotICAgbWFuZmlkIDB4MDE1NiwgMHgwMDAyCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlNlbmFvIFNMLTIwMTFDRC9TTC0yMDExQ0RQTFVTIgotICAgdmVyc2lvbiAiSU5URVJTSUwiLCAiSEZBMzg0eC9JRUVFIiwgIlZlcnNpb24gMDEuMDIiCi0gICBtYW5maWQgMHgwMTU2LCAweDAwMDIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiRnVsYm9uZCBBaXJib25kIFhJLTMwMEIiCi0gICB2ZXJzaW9uICIgIiwgIklFRUUgODAyLjExIFdpcmVsZXNzIExBTi9QQyBDYXJkIgotICAgbWFuZmlkIDB4ZDYwMSwgMHgwMDAyCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIk5ldGdlYXIgTUE0MDEiCi0gICB2ZXJzaW9uICJORVRHRUFSIE1BNDAxIFdpcmVsZXNzIFBDIiwgIkNhcmQiLCAiVmVyc2lvbiAwMS4wMCIKLSMgICBtYW5maWQgMHgwMTU2LCAweDAwMDIKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiRC1MaW5rIERXTC02NTAgUmV2LiBQMSIKLSAgIHZlcnNpb24gIkQtTGluayIsICJEV0wtNjUwIFdpcmVsZXNzIFBDIENhcmQgUmV2UCIsICJJU0wzNzEwMVAtMTAiLCAiQTMiCi0jICAgbWFuZmlkIDB4MDAwYiwgMHg3MTEwCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIlNvbmljV0FMTCBMb25nIFJhbmdlIFdpcmVsZXNzIENhcmQiCi0gICB2ZXJzaW9uICJTb25pY1dBTEwiLCAiTG9uZyBSYW5nZSBXaXJlbGVzcyBDYXJkIiwgIklTTDM3MTAwUCIsICIxLjAiCi0gICBtYW5maWQgMHgwMDBiLCAweDcxMDAKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiU2VuYW8gTkwtMjAxMUNEIFBMVVMgRXh0MiBNZXJjdXJ5IgotICAgdmVyc2lvbiAiV0xBTiIsICIxMU1icHNfUEMtQ2FyZF8zLjAiLCAiSVNMMzcxMDBQIiwgIkV2YWwtUmV2QSIKLSAgIG1hbmZpZCAweDAwMGIsIDB4NzEwMAotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJBaXJ2YXN0IFdMMTAwIgotICAgdmVyc2lvbiAiQUlSVkFTVCIsICJJRUVFIDgwMi4xMWIgV2lyZWxlc3MgUENNQ0lBIENhcmQiLCAiSEZBMzg2MyIKLSAgIG1hbmZpZCAweDUwYzIsIDB4MDAwMQotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJNaWNyb3NvZnQgV2lyZWxlc3MgTm90ZWJvb2sgQWRhcHRlciBNTi01MjAgMS4wLjMiCi0gICB2ZXJzaW9uICJNaWNyb3NvZnQiLCAiV2lyZWxlc3MgTm90ZWJvb2sgQWRhcHRlciBNTi01MjAiLCAiIiwgIjEuMC4zIgotICAgbWFuZmlkIDB4MDJkMiwgMHgwMDAxCi0gICBiaW5kICJob3N0YXBfY3MiCi0KLWNhcmQgIk5FVEdFQVIgTUE0MDFSQSIKLSAgIHZlcnNpb24gIk5FVEdFQVIgTUE0MDFSQSBXaXJlbGVzcyBQQyIsICJDYXJkIiwgIklTTDM3MzAwUCIsICJFdmFsLVJldkEiCi0gICBtYW5maWQgMHgwMDBiLCAweDczMDAKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiQWxsaWVkIFRlbGVzeW4gQVQtV0NMNDUyIgotICAgdmVyc2lvbiAiQWxsaWVkIFRlbGVzeW4iLCAiQVQtV0NMNDUyIFdpcmVsZXNzIFBDTUNJQSBSYWRpbyIsICJWZXIuIDEuMDAiCi0gICBtYW5maWQgMHhjMDBmLCAweDAwMDAKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiY29yZWdhIFdMIFBDQ0wtMTEiCi0gICB2ZXJzaW9uICJjb3JlZ2EiLCAiV0wgUENDTC0xMSIsICJJU0wzNzMwMFAiLCAiUmV2QSIKLSAgIG1hbmZpZCAweGMwMGYsIDB4MDAwMAotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJTYW5EaXNrIENvbm5lY3RQbHVzIgotICAgdmVyc2lvbiAiU2FuRGlzayIsICJDb25uZWN0UGx1cyIKLSAgIG1hbmZpZCAweGQ2MDEsIDB4MDEwMQotICAgYmluZCAiaG9zdGFwX2NzIiB0byAwCi0gICBiaW5kICJpZGUtY3MiIHRvIDEKLQotY2FyZCAiQVNVUyBXTC0xMDAgODAxMWIgV0xBTiBQQyBDYXJkIgotICAgdmVyc2lvbiAiQVNVUyIsICI4MDJfMTFiX1BDX0NBUkRfMjUiLCAiVmVyc2lvbiAwMS4wMCIKLSAgIG1hbmZpZCAweDAyYWEsIDB4MDAwMgotICAgYmluZCAiaG9zdGFwX2NzIgotCi1jYXJkICJaeVhlbCBaeWFpciBCLTEwMSA4MDIuMTFiIFdMQU4gY2FyZCIKLSAgIHZlcnNpb24gIiAiLCAiSUVFRSA4MDIuMTEgV2lyZWxlc3MgTEFOL1BDIENhcmQiCi0gICBtYW5maWQgMHhkNjAxLCAweDAwMTAKLSAgIGJpbmQgImhvc3RhcF9jcyIKLQotY2FyZCAiV0xBTiBQUklTTSBQQ01DSUEgQ0FSRCAzNzMwMFAgUmV2QjYiCi0gICB2ZXJzaW9uICJXTEFOIiwgIlBSSVNNIFBDTUNJQSBDQVJEIiwgIjM3MzAwUCIsICJSZXZpc2lvbiBCNiIKLSAgIG1hbmZpZCAweDUwYzIsIDB4NzMwMAotICAgYmluZCAiaG9zdGFwX2NzIgotCi0KLSMgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGZvciBob3N0YXBfY3MubwotIyBtb2R1bGUgImhvc3RhcF9jcyIgb3B0cyAiY2hhbm5lbD0zIGl3X21vZGU9MyBlc3NpZD10ZXN0IGlnbm9yZV9jaXNfdmNjPTAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvZmlsZXMvaG9zdGFwX2NzLm1vZGFsaWFzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2ZpbGVzL2hvc3RhcF9jcy5tb2RhbGlhcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjg0ODM1MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvZmlsZXMvaG9zdGFwX2NzLm1vZGFsaWFzCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotIyBwcm9kdWN0IGluZm86ICJQcmV0ZWMiLCAiQ29tcGFjdFdMQU4gQ2FyZCA4MDIuMTFiIiwgIjIuNSIKLWFsaWFzIHBjbWNpYTptMDE1NmMwMDAyZjA2Zm4wMHBmbjAwcGExQ0FERDNFNXBiRTY5NzYzNkNwYzdBNUJGQ0YxcGQwMDAwMDAwMCBob3N0YXBfY3MKLQotIyBtYW51ZmFjdHVyZXIgSUQgd2hpY2ggZXhpc3QgaW4gb3Jpbm9jb19jcyBBTkQgaW4gaG9zdGFwX2NzCi1hbGlhcyBwY21jaWE6bTAwMEJjNzEwMGYwNmZuMDBwZm4wMHBhKnBiKnBjKnBkKiBob3N0YXBfY3MKLWFsaWFzIHBjbWNpYTptMDAwQmM3MzAwZjA2Zm4wMHBmbjAwcGEqcGIqcGMqcGQqIGhvc3RhcF9jcwotYWxpYXMgcGNtY2lhOm0wMTI2YzgwMDBmMDZmbjAwcGZuMDBwYSpwYipwYypwZCogaG9zdGFwX2NzCi1hbGlhcyBwY21jaWE6bTAxMzhjMDAwMmYwNmZuMDBwZm4wMHBhKnBiKnBjKnBkKiBob3N0YXBfY3MKLWFsaWFzIHBjbWNpYTptMDI1MGMwMDAyZjA2Zm4wMHBmbjAwcGEqcGIqcGMqcGQqIGhvc3RhcF9jcwotYWxpYXMgcGNtY2lhOm0wMjc0YzE2MTJmMDZmbjAwcGZuMDBwYSpwYipwYypwZCogaG9zdGFwX2NzCi1hbGlhcyBwY21jaWE6bTAyNzRjMTYxM2YwNmZuMDBwZm4wMHBhKnBiKnBjKnBkKiBob3N0YXBfY3MKLWFsaWFzIHBjbWNpYTptMDI4QWMwMDAyZjA2Zm4wMHBmbjAwcGEqcGIqcGMqcGQqIGhvc3RhcF9jcwotYWxpYXMgcGNtY2lhOm0wMkFBYzAwMDJmMDZmbjAwcGZuMDBwYSpwYipwYypwZCogaG9zdGFwX2NzCi1hbGlhcyBwY21jaWE6bTUwQzJjNzMwMGYwNmZuMDBwZm4wMHBhKnBiKnBjKnBkKiBob3N0YXBfY3MKLWFsaWFzIHBjbWNpYTptRDYwMWMwMDAyZjA2Zm4wMHBmbjAwcGEqcGIqcGMqcGQqIGhvc3RhcF9jcwotYWxpYXMgcGNtY2lhOm1ENjAxYzAwMDVmMDZmbjAwcGZuMDBwYSpwYipwYypwZCogaG9zdGFwX2NzCi0KLSMgcHJvZHVjdCBpbmZvOiAiTGlua3N5cyIsICJXaXJlbGVzcyBDb21wYWN0Rmxhc2ggQ2FyZCIsICIiLCAiIgotYWxpYXMgcGNtY2lhOm0wMjhBYzA2NzNmMDZmbjAwcGZuMDBwYTA3MzNDQzgxcGIwQzUyRjM5NXBjMDAwMDAwMDBwZDAwMDAwMDAwIGhvc3RhcF9jcwotCi0jIHByb2R1Y3QgaW5mbzoiUExBTkVYIENPTU1VTklDQVRJT04gSU5DIiwiUExBTkVYIEdXLUNGMTFYIFdpcmVsZXNzIENGIENhcmQiLCAiIiwgIiIKLWFsaWFzIHBjbWNpYTptRDYwMWMwMDEwZjA2Zm4wMHBmbjAwcGE0NzAzQ0Y2OHBiRkFENzMxOERwYzAwMDAwMDAwcGQwMDAwMDAwMCBob3N0YXBfY3MKLQotIyAweDAxNTYsIDB4MDAwMiBhbmQgIlZlcnNpb24gMDEuMDIiIG9ubHkgYXBwZWFyIGZvciBQcmlzbSBiYXNlZCBjYXJkcy4KLWFsaWFzIHBjbWNpYTptMDE1NmMwMDAyZjA2Zm4wMHBmbjAwcGEqcGIqcGM0Qjc0QkFBMHBkMDAwMDAwMDAgaG9zdGFwX2NzCi0KLSMgIkJVRkZBTE8iLCAiV0xJLUNGLVMxMUciLCAiIiwgIiIKLWFsaWFzIHBjbWNpYTptMDI2RmMwMzBCZjA2Zm4wMHBmbjAwcGEyREVDRUNFM3BiODIwNjdDMThwYzAwMDAwMDAwcGQwMDAwMDAwMCBob3N0YXBfY3MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9ob3N0YXAtY29uZl8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvaG9zdGFwLWNvbmZfMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWQ0YzU0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9ob3N0YXAtY29uZl8xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1TVU1NQVJZID0gIkNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIEhvc3RBUCAod2lmaSkgZHJpdmVyIgotREVTQ1JJUFRJT04gPSAiUENNQ0lBLWNzIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIHdpcmVsZXNzIExBTiBjYXJkcyBiYXNlZCBvbiBJbnRlcnNpbCdzIFByaXNtMi8yLjUvMyBjaGlwc2V0LiIKLVNFQ1RJT04gPSAia2VybmVsL21vZHVsZXMiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzkzYTVjYTQ0NWY2OTY1ODczZWNhMDI1OWExN2Y4MzMiCi1QUiA9ICJyMTUiCi0KLVNSQ19VUkkgPSAiZmlsZTovL2hvc3RhcF9jcy5tb2RhbGlhcyBcCi0gICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLnBhdGNoIgotCi1pbmhlcml0IGFsbGFyY2gKLQotUyA9ICIke1dPUktESVJ9IgotCi1kb19jb21waWxlKCkgewotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vbW9kcHJvYmUuZAotCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaG9zdGFwX2NzLm1vZGFsaWFzICR7RH0ke3N5c2NvbmZkaXJ9L21vZHByb2JlLmQvaG9zdGFwX2NzLmNvbmYKLX0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2hvc3RhcC11dGlscy0wLjQuNy8wMDAxLURlZmluZS1fdTMyLV9fczMyLV9fdTE2LV9fczE2LV9fdTgtaW4tdGVybXMtb2YtYzk5LXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvaG9zdGFwLXV0aWxzLTAuNC43LzAwMDEtRGVmaW5lLV91MzItX19zMzItX191MTYtX19zMTYtX191OC1pbi10ZXJtcy1vZi1jOTktdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQ0ZGNhMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvaG9zdGFwLXV0aWxzLTAuNC43LzAwMDEtRGVmaW5lLV91MzItX19zMzItX191MTYtX19zMTYtX191OC1pbi10ZXJtcy1vZi1jOTktdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gNzQyZmIxMTBkOTg0MWEwNGIzY2VkMjU2YjBiZjgwZmYzMDRkY2FmZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDMxIEF1ZyAyMDE1IDA1OjQ1OjA4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIERlZmluZSBfdTMyL19fczMyL19fdTE2L19fczE2L19fdTggaW4gdGVybXMgb2YgYzk5IHR5cGVzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gd2lyZWxlc3NfY29weS5oIHwgMTAgKysrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS93aXJlbGVzc19jb3B5LmggYi93aXJlbGVzc19jb3B5LmgKLWluZGV4IDgyMDgyNTguLjExNzFhMzUgMTAwNjQ0Ci0tLS0gYS93aXJlbGVzc19jb3B5LmgKLSsrKyBiL3dpcmVsZXNzX2NvcHkuaAotQEAgLTg2LDExICs4NiwxMSBAQAotICNlbHNlCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxuZXQvaWYuaD4KLS10eXBlZGVmIF9fdWludDMyX3QgX191MzI7Ci0tdHlwZWRlZiBfX2ludDMyX3QgX19zMzI7Ci0tdHlwZWRlZiBfX3VpbnQxNl90IF9fdTE2OwotLXR5cGVkZWYgX19pbnQxNl90IF9fczE2OwotLXR5cGVkZWYgX191aW50OF90IF9fdTg7Ci0rdHlwZWRlZiB1X2ludDMyX3QgX191MzI7Ci0rdHlwZWRlZiBpbnQzMl90IF9fczMyOwotK3R5cGVkZWYgdV9pbnQxNl90IF9fdTE2OwotK3R5cGVkZWYgaW50MTZfdCBfX3MxNjsKLSt0eXBlZGVmIHVfaW50OF90IF9fdTg7Ci0gI2lmbmRlZiBfX3VzZXIKLSAjZGVmaW5lIF9fdXNlcgotICNlbmRpZiAvKiBfX3VzZXIgKi8KLS0tIAotMi41LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2hvc3RhcC11dGlscy0wLjQuNy9sZGZsYWdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2hvc3RhcC11dGlscy0wLjQuNy9sZGZsYWdzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTk5ZDBkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9ob3N0YXAtdXRpbHMtMC40LjcvbGRmbGFncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLU9iZXkgTERGTEFHUwotCi1TaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLS0tLSBob3N0YXAtdXRpbHMtMC40Ljcub3JpZy9NYWtlZmlsZQotKysrIGhvc3RhcC11dGlscy0wLjQuNy9NYWtlZmlsZQotQEAgLTE0LDE3ICsxNCwxNyBAQCBwcmlzbTJfc3JlYy5vOiBwcmlzbTJfc3JlYy5jIHV0aWwuaAotIGhvc3RhcF9jcnlwdF9jb25mOiBob3N0YXBfY3J5cHRfY29uZi5jCi0KLSBob3N0YXBfZGlhZzogaG9zdGFwX2RpYWcubyB1dGlsLm8KLS0JJChDQykgLW8gaG9zdGFwX2RpYWcgJChDRkxBR1MpIGhvc3RhcF9kaWFnLm8gdXRpbC5vCi0rCSQoQ0MpIC1vIGhvc3RhcF9kaWFnICQoQ0ZMQUdTKSAkKExERkxBR1MpIGhvc3RhcF9kaWFnLm8gdXRpbC5vCi0KLSBob3N0YXBfZGlhZy5vOiBob3N0YXBfZGlhZy5jIHV0aWwuaAotCi0gdXRpbC5vOiB1dGlsLmMgdXRpbC5oCi0KLSBob3N0YXBfaW9fZGVidWc6IGhvc3RhcF9pb19kZWJ1Zy5jCi0tCSQoQ0MpIC1vIGhvc3RhcF9pb19kZWJ1ZyAkKENGTEFHUykgaG9zdGFwX2lvX2RlYnVnLmMKLSsJJChDQykgLW8gaG9zdGFwX2lvX2RlYnVnICQoQ0ZMQUdTKSAkKExERkxBR1MpIGhvc3RhcF9pb19kZWJ1Zy5jCi0KLSBob3N0YXBfcmlkOiBob3N0YXBfcmlkLm8gdXRpbC5vCi0tCSQoQ0MpIC1vIGhvc3RhcF9yaWQgJChDRkxBR1MpIGhvc3RhcF9yaWQubyB1dGlsLm8KLSsJJChDQykgLW8gaG9zdGFwX3JpZCAkKENGTEFHUykgJChMREZMQUdTKSBob3N0YXBfcmlkLm8gdXRpbC5vCi0KLSBob3N0YXBfcmlkLm86IGhvc3RhcF9yaWQuYyB1dGlsLmgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9ob3N0YXAtdXRpbHMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2hvc3RhcC11dGlscy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkOThlM2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvaG9zdGFwL2hvc3RhcC11dGlscy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gIlVzZXIgbW9kZSBoZWxwZXJzIGZvciB0aGUgaG9zdGFwIGRyaXZlciIKLURFU0NSSVBUSU9OID0gIlRoZSBob3N0YXAgZHJpdmVyIHN1cHBvcnRzIEhvc3QgQVAgbW9kZSwgaXQgYWxsb3dzIGZvciBJRUVFIDgwMi4xMSBcCi1tYW5hZ2VtZW50IGZ1bmN0aW9ucyBvbiB0aGUgaG9zdCBjb21wdXRlciBhbmQgYWxsb3dzIHRoZSBzeXN0ZW0gdG8gYWN0IGFzIGFuIGFjY2VzcyBwb2ludC4iCi1IT01FUEFHRSA9ICJodHRwczovL3cxLmZpIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIFwKLQkJCWZpbGU6Ly91dGlsLmM7YmVnaW5saW5lPTE7ZW5kbGluZT05O21kNT1kM2I5MjgwODUxMzAyZTViYTM0ZTVmYjcxNzQ4OWI2ZCIKLVNFQ1RJT04gPSAia2VybmVsL3VzZXJsYW5kIgotUFIgPSAicjQiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93MS5maS9yZWxlYXNlcy9ob3N0YXAtdXRpbHMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2hvc3RhcC1mdy1sb2FkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRGVmaW5lLV91MzItX19zMzItX191MTYtX19zMTYtX191OC1pbi10ZXJtcy1vZi1jOTktdC5wYXRjaCBcCi0iCi1TID0gIiR7V09SS0RJUn0vaG9zdGFwLXV0aWxzLSR7UFZ9IgotCi1CSU5BUklFUyA9ICJob3N0YXBfY3J5cHRfY29uZiBob3N0YXBfZGlhZyBob3N0YXBfZndfbG9hZCBob3N0YXBfaW9fZGVidWcgXAotCSAgICBob3N0YXBfcmlkIHByaXNtMl9wYXJhbSBwcmlzbTJfc3JlYyBzcGxpdF9jb21iaW5lZF9oZXgiCi0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfS8KLQlmb3IgZiBpbiAke0JJTkFSSUVTfQotCWRvCi0JCWluc3RhbGwgLW0gMDc1NSAkZiAke0R9JHtzYmluZGlyfS8KLQlkb25lCi19Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9ob3N0YXAtdXRpbHNfMC40LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvaG9zdGFwLXV0aWxzXzAuNC43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTU0ODFmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9ob3N0YXAtdXRpbHNfMC40LjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLXJlcXVpcmUgaG9zdGFwLXV0aWxzLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vbGRmbGFncy5wYXRjaCIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhZmUwNDE1ODFiOGYwMTY2NmUzNTNiZWMyMDkxN2M4NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNmY1OThkOGUzNTZjMTYyMGZhMDA5ZWNhMGE3MDBiZjExMDVlMTY4MTdlZWZkNzdkODkxOTk0MjYxMDA5MzU1IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvbGliYWNwaS9maWxlcy9saWJhY3BpX2ZpeF9mb3JfeDMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvbGliYWNwaS9maWxlcy9saWJhY3BpX2ZpeF9mb3JfeDMyLnBhdGNoCmluZGV4IDg2YTE2YzIuLjA2ZjIwZTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xpYmFjcGkvZmlsZXMvbGliYWNwaV9maXhfZm9yX3gzMi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9saWJhY3BpL2ZpbGVzL2xpYmFjcGlfZml4X2Zvcl94MzIucGF0Y2gKQEAgLTMsOSArMywxMCBAQAogRml4IGxpYmFjcGkgZm9yIHgzMgogICAgIAogICAgIGxpYmFjcGkgZG9lc24ndCB1c2UgYmFzZV9saWJkaXIgZm9yIGluc3RhbGwuICBUaGlzIHBhdGNoIGFkZHMKLSAgICBiYXNlX2xpYmRpciBzdXBwb3J0IHNvIHRoYXQgeDMyIGxpYnJhcmllcyBhcmUgaW5zdGFsbGVkIHByb3Blcmx5LgorICAgIGxpYmRpciBzdXBwb3J0IHNvIHRoYXQgeDMyIGxpYnJhcmllcyBhcmUgaW5zdGFsbGVkIHByb3Blcmx5LgogCiBQYXRjaCBSZWNlaXZlZCBmcm9tOiAgSC5KLiBMdSA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KK1VwZGF0ZWQgYnk6IFJpY2FyZG8gU2FsdmV0aSA8cmljYXJkb0BvcGVuc291cmNlZm91bmRyaWVzLmNvbT4gMjAxOC8wMi8wMwogCiBTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPiAyMDExLzEyLzA1CiAKQEAgLTEzLDE4ICsxNCw3IEBACiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gbGliYWNwaS0wLjIub3JpZy9NYWtlZmlsZQogKysrIGxpYmFjcGktMC4yL01ha2VmaWxlCi1AQCAtOCw2ICs4LDEwIEBAIFNSQ190ZXN0ID0gdGVzdC1saWJhY3BpLmMgbGliYWNwaS5jIGxpc3QKLSBPQkogPSAke1NSQzouYz0ub30KLSBPQkpfdGVzdCA9ICR7U1JDX3Rlc3Q6LmM9Lm99Ci0gCi0raWZuZGVmIGJhc2VfbGliZGlyCi0rYmFzZV9saWJkaXI9L2xpYgotK2VuZGlmCi0rCi0gYWxsOiBvcHRpb25zIGxpYmFjcGkuYSBsaWJhY3BpLnNvIHRlc3QtbGliYWNwaQotIAotIG9wdGlvbnM6Ci1AQCAtNDIsMTMgKzQ2LDEzIEBAIGluc3RhbGw6IGFsbAorQEAgLTQyLDEzICs0MiwxMyBAQCBpbnN0YWxsOiBhbGwKICAJQG1rZGlyIC1wICR7REVTVERJUn0ke1BSRUZJWH0vaW5jbHVkZQogIAlAY3AgLWYgbGliYWNwaS5oICR7REVTVERJUn0ke1BSRUZJWH0vaW5jbHVkZQogIAlAY2htb2QgNjQ0ICR7REVTVERJUn0ke1BSRUZJWH0vaW5jbHVkZS9saWJhY3BpLmgKQEAgLTM1LDEzICsyNSwxMyBAQAogLQlAY3AgLWYgJHtTT05BTUV9ICR7REVTVERJUn0ke1BSRUZJWH0vbGliLwogLQlAY2htb2QgNjQ0ICR7REVTVERJUn0ke1BSRUZJWH0vbGliLyR7U09OQU1FfQogLQlAbG4gLXMgJHtTT05BTUV9ICR7REVTVERJUn0ke1BSRUZJWH0vbGliL2xpYmFjcGkuc28KLSsJQGVjaG8gaW5zdGFsbGluZyBsaWJyYXJ5IHRvICR7REVTVERJUn0ke1BSRUZJWH0ke2Jhc2VfbGliZGlyfQotKwlAbWtkaXIgLXAgJHtERVNURElSfSR7UFJFRklYfSR7YmFzZV9saWJkaXJ9Ci0rCUBjcCAtZiBsaWJhY3BpLmEgJHtERVNURElSfSR7UFJFRklYfSR7YmFzZV9saWJkaXJ9Ci0rCUBjaG1vZCA2NDQgJHtERVNURElSfSR7UFJFRklYfSR7YmFzZV9saWJkaXJ9L2xpYmFjcGkuYQotKwlAY3AgLWYgJHtTT05BTUV9ICR7REVTVERJUn0ke1BSRUZJWH0ke2Jhc2VfbGliZGlyfS8KLSsJQGNobW9kIDY0NCAke0RFU1RESVJ9JHtQUkVGSVh9JHtiYXNlX2xpYmRpcn0vJHtTT05BTUV9Ci0rCUBsbiAtcyAke1NPTkFNRX0gJHtERVNURElSfSR7UFJFRklYfSR7YmFzZV9saWJkaXJ9L2xpYmFjcGkuc28KKysJQGVjaG8gaW5zdGFsbGluZyBsaWJyYXJ5IHRvICR7REVTVERJUn0ke0xJQkRJUn0KKysJQG1rZGlyIC1wICR7REVTVERJUn0ke0xJQkRJUn0KKysJQGNwIC1mIGxpYmFjcGkuYSAke0RFU1RESVJ9JHtMSUJESVJ9CisrCUBjaG1vZCA2NDQgJHtERVNURElSfSR7TElCRElSfS9saWJhY3BpLmEKKysJQGNwIC1mICR7U09OQU1FfSAke0RFU1RESVJ9JHtMSUJESVJ9LworKwlAY2htb2QgNjQ0ICR7REVTVERJUn0ke0xJQkRJUn0vJHtTT05BTUV9CisrCUBsbiAtcyAke1NPTkFNRX0gJHtERVNURElSfSR7TElCRElSfS9saWJhY3BpLnNvCiAgCUBlY2hvIGluc3RhbGxpbmcgdGVzdC1saWJhY3BpIHRvICR7REVTVERJUn0ke1BSRUZJWH0vYmluCiAgCUBta2RpciAtcCAke0RFU1RESVJ9JHtQUkVGSVh9L2JpbgogIAlAY3AgLWYgdGVzdC1saWJhY3BpICR7REVTVERJUn0ke1BSRUZJWH0vYmluCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9saWJhY3BpL2xpYmFjcGlfMC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvbGliYWNwaS9saWJhY3BpXzAuMi5iYgppbmRleCA2ZGM2NmVhLi41ZTdmN2ZhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9saWJhY3BpL2xpYmFjcGlfMC4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xpYmFjcGkvbGliYWNwaV8wLjIuYmIKQEAgLTI4LDUgKzI4LDUgQEAKIFRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgogCiBkb19pbnN0YWxsKCkgewotCW9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gUFJFRklYPSR7ZXhlY19wcmVmaXh9CisJb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBQUkVGSVg9JHtleGVjX3ByZWZpeH0gTElCRElSPSR7bGliZGlyfQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHMvY29uZmlndXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHMvY29uZmlndXJlLnBhdGNoCmluZGV4IDU1ZWRmZWEuLmE3ZTQ0NTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzL2NvbmZpZ3VyZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlscy9jb25maWd1cmUucGF0Y2gKQEAgLTEzLDExICsxMywxMSBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQogCi1JbmRleDogcGNpdXRpbHMtMy41LjQvTWFrZWZpbGUKK0luZGV4OiBwY2l1dGlscy0zLjUuNi9NYWtlZmlsZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBjaXV0aWxzLTMuNS40Lm9yaWcvTWFrZWZpbGUKLSsrKyBwY2l1dGlscy0zLjUuNC9NYWtlZmlsZQotQEAgLTk2LDcgKzk1LDcgQEAgZXhhbXBsZTogZXhhbXBsZS5vIGxpYi8kKFBDSUxJQikKKy0tLSBwY2l1dGlscy0zLjUuNi5vcmlnL01ha2VmaWxlCisrKysgcGNpdXRpbHMtMy41LjYvTWFrZWZpbGUKK0BAIC05Niw3ICs5Niw3IEBAIGV4YW1wbGU6IGV4YW1wbGUubyBsaWIvJChQQ0lMSUIpCiAgZXhhbXBsZS5vOiBleGFtcGxlLmMgJChQQ0lJTkMpCiAgCiAgJTogJS5vCkBAIC0yNiwxMiArMjYsMTIgQEAKICAKICAlLjggJS43OiAlLm1hbgogIAlNPWBlY2hvICQoREFURSkgfCBzZWQgJ3MvLTAxLS8tSmFudWFyeS0vO3MvLTAyLS8tRmVicnVhcnktLztzLy0wMy0vLU1hcmNoLS87cy8tMDQtLy1BcHJpbC0vO3MvLTA1LS8tTWF5LS87cy8tMDYtLy1KdW5lLS87cy8tMDctLy1KdWx5LS87cy8tMDgtLy1BdWd1c3QtLztzLy0wOS0vLVNlcHRlbWJlci0vO3MvLTEwLS8tT2N0b2Jlci0vO3MvLTExLS8tTm92ZW1iZXItLztzLy0xMi0vLURlY2VtYmVyLS87cy9cKC4qXCktXCguKlwpLVwoLipcKS9cMyBcMiBcMS8nYCA7IHNlZCA8JDwgPiRAICJzL0BUT0RBWUAvJCRNLztzL0BWRVJTSU9OQC9wY2l1dGlscy0kKFZFUlNJT04pLztzI0BJRFNESVJAIyQoSURTRElSKSMiCi1JbmRleDogcGNpdXRpbHMtMy41LjQvbGliL2NvbmZpZ3VyZQorSW5kZXg6IHBjaXV0aWxzLTMuNS42L2xpYi9jb25maWd1cmUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwY2l1dGlscy0zLjUuNC5vcmlnL2xpYi9jb25maWd1cmUKLSsrKyBwY2l1dGlscy0zLjUuNC9saWIvY29uZmlndXJlCi1AQCAtMTQsNiArMTQsMTAgQEAgZWNob19uKCkgewotIAlmaQorLS0tIHBjaXV0aWxzLTMuNS42Lm9yaWcvbGliL2NvbmZpZ3VyZQorKysrIHBjaXV0aWxzLTMuNS42L2xpYi9jb25maWd1cmUKK0BAIC05LDYgKzksMTAgQEAgZWNob19uKCkgeworIAlwcmludGYgJyVzJyAiJCoiCiAgfQogIAogK1ZFUlNJT049JDEKQEAgLTQxLDcgKzQxLDcgQEAKICBpZiBbIC16ICIkVkVSU0lPTiIgLW8gLXogIiRJRFNESVIiIF0gOyB0aGVuCiAgCWVjaG8gPiYyICJQbGVhc2UgcnVuIHRoZSBjb25maWd1cmUgc2NyaXB0IGZyb20gdGhlIHRvcC1sZXZlbCBNYWtlZmlsZSIKICAJZXhpdCAxCi1AQCAtMjEsOCArMjUsOCBAQCBmaQorQEAgLTE2LDggKzIwLDggQEAgZmkKICAKICBlY2hvX24gIkNvbmZpZ3VyaW5nIGxpYnBjaSBmb3IgeW91ciBzeXN0ZW0uLi4iCiAgaWYgWyAteiAiJEhPU1QiIF0gOyB0aGVuCkBAIC01Miw3ICs1Miw3IEBACiAgCXJlYWxzeXM9IiRzeXMiCiAgCWlmIFsgIiRzeXMiID0gIkFJWCIgLWEgLXggL3Vzci9iaW4vb3NsZXZlbCAtYSAteCAvdXNyL3NiaW4vbHNhdHRyIF0KICAJdGhlbgotQEAgLTMwLDcgKzM0LDcgQEAgaWYgWyAteiAiJEhPU1QiIF0gOyB0aGVuCitAQCAtMjUsNyArMjksNyBAQCBpZiBbIC16ICIkSE9TVCIgXSA7IHRoZW4KICAJCXByb2M9YC91c3Ivc2Jpbi9sc2RldiAtQyAtYyBwcm9jZXNzb3IgLVMgYXZhaWxhYmxlIC1GIG5hbWUgfCBoZWFkIC0xYAogIAkJY3B1PWAvdXNyL3NiaW4vbHNhdHRyIC1GIHZhbHVlIC1sICRwcm9jIC1hIHR5cGUgfCBzZWQgJ3MvXy4qLy8nYAogIAllbHNlCkBAIC02MSw3ICs2MSw3IEBACiAgCWZpCiAgCWlmIFsgIiRzeXMiID0gIkdOVS9rRnJlZUJTRCIgLW8gIiRzeXMiID0gIkRyYWdvbkZseSIgXQogIAl0aGVuCi1AQCAtNDAsNyArNDQsNyBAQCBpZiBbIC16ICIkSE9TVCIgXSA7IHRoZW4KK0BAIC0zNSw3ICszOSw3IEBAIGlmIFsgLXogIiRIT1NUIiBdIDsgdGhlbgogIAl0aGVuCiAgCQlzeXM9Y3lnd2luCiAgCWZpCkBAIC03MCw3ICs3MCw3IEBACiAgZmkKICBbIC1uICIkUkVMRUFTRSIgXSAmJiByZWw9IiR7UkVMRUFTRX0iCiAgIyBDQVZFQVQ6IHRyIG9uIFNvbGFyaXMgaXMgYSBiaXQgd2VpcmQgYW5kIHRoZSBleHRyYSBbXSBpcyBvdGhlcndpc2UgaGFybWxlc3MuCi1AQCAtNDksNiArNTMsOCBAQCBjcHU9YGVjaG8gJGhvc3QgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteCitAQCAtNDQsNiArNDgsOCBAQCBjcHU9YGVjaG8gJGhvc3QgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteCiAgc3lzPWBlY2hvICRob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKICBlY2hvICIgJGhvc3QgJHJlbCAkY3B1ICRzeXMiCiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlsc18zLjUuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNS41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDUxZmQ4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNS41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotU1VNTUFSWSA9ICJQQ0kgdXRpbGl0aWVzIgotREVTQ1JJUFRJT04gPSAnVGhlIFBDSSBVdGlsaXRpZXMgcGFja2FnZSBjb250YWlucyBhIGxpYnJhcnkgZm9yIHBvcnRhYmxlIGFjY2VzcyBcCi10byBQQ0kgYnVzIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIHNldmVyYWwgdXRpbGl0aWVzIGJhc2VkIG9uIHRoaXMgbGlicmFyeS4nCi1IT01FUEFHRSA9ICJodHRwOi8vYXRyZXkua2FybGluLm1mZi5jdW5pLmN6L35tai9wY2l1dGlscy5zaHRtbCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLURFUEVORFMgPSAiemxpYiBrbW9kIgotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvdXRpbHMvcGNpdXRpbHMvcGNpdXRpbHMtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjIzOGQ5OTY5Y2MwZGU4YjkxMDVkOTcyMDA3ZDlkNTQ2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFkNjJmOGZhMTkyZjkwZTYxYzM1YTZmYzE1ZmYzY2I5YTdhNzkyZjc4MjQwN2FjYzQyZWY2NzgxN2M1OTM5ZjUiCi0KLWluaGVyaXQgbXVsdGlsaWJfaGVhZGVyIHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ2h3ZGInLCAnJywgZCl9IgotUEFDS0FHRUNPTkZJR1tod2RiXSA9ICJIV0RCPXllcyxIV0RCPW5vLHVkZXYiCi0KLVBDSV9DT05GX0ZMQUcgPSAiWkxJQj15ZXMgRE5TPXllcyBTSEFSRUQ9eWVzIFNUUklQPSBMSUJESVI9JHtsaWJkaXJ9IgotCi0jIHNlZSBjb25maWd1cmUucGF0Y2gKLWRvX2NvbmZpZ3VyZSAoKSB7Ci0JKAotCSAgY2QgbGliICYmIFwKLQkgICMgUEFDS0FHRUNPTkZJR19DT05GQVJHUyBmb3IgdGhpcyByZWNpcGUgY291bGQgb25seSBwb3NzaWJseSBjb250YWluICdIV0RCPXllcy9ubycsCi0JICAjIHNvIHdlIHB1dCBpdCBiZWZvcmUgLi9jb25maWd1cmUKLQkgICR7UENJX0NPTkZfRkxBR30gJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSAuL2NvbmZpZ3VyZSAke1BWfSAke2RhdGFkaXJ9ICR7VEFSR0VUX09TfSAke1RBUkdFVF9BUkNIfQotCSkKLX0KLQotZXhwb3J0IFBSRUZJWCA9ICIke3ByZWZpeH0iCi1leHBvcnQgU0JJTkRJUiA9ICIke3NiaW5kaXJ9IgotZXhwb3J0IFNIQVJFRElSID0gIiR7ZGF0YWRpcn0iCi1leHBvcnQgTUFORElSID0gIiR7bWFuZGlyfSIKLQotRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0gJHtQQ0lfQ09ORl9GTEFHfSIKLQotIyBUaGUgY29uZmlndXJlIHNjcmlwdCBicmVha3MgaWYgdGhlIEhPU1QgdmFyaWFibGUgaXMgc2V0Ci1IT1NUW3VuZXhwb3J0XSA9ICIxIgotCi1kb19pbnN0YWxsICgpIHsKLQlvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsIGluc3RhbGwtbGliCi0KLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLQlsbiAtcyAuLi9zYmluL2xzcGNpICR7RH0ke2JpbmRpcn0vbHNwY2kKLQotCW9lX211bHRpbGliX2hlYWRlciBwY2kvY29uZmlnLmgKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LWlkcyBsaWJwY2kiCi1GSUxFU18ke1BOfS1pZHMgPSAiJHtkYXRhZGlyfS9wY2kuaWRzKiIKLUZJTEVTX2xpYnBjaSA9ICIke2xpYmRpcn0vbGlicGNpLnNvLioiCi1TVU1NQVJZXyR7UE59LWlkcyA9ICJQQ0kgdXRpbGl0aWVzIC0gZGV2aWNlIElEIGRhdGFiYXNlIgotREVTQ1JJUFRJT05fJHtQTn0taWRzID0gIlBhY2thZ2UgcHJvdmlkaW5nIHRoZSBQQ0kgZGV2aWNlIElEIGRhdGFiYXNlIGZvciBwY2l1dGlscy4iCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0taWRzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy41LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlsc18zLjUuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMThiN2RhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy41LjYuYmIKQEAgLTAsMCArMSw1OCBAQAorU1VNTUFSWSA9ICJQQ0kgdXRpbGl0aWVzIgorREVTQ1JJUFRJT04gPSAnVGhlIFBDSSBVdGlsaXRpZXMgcGFja2FnZSBjb250YWlucyBhIGxpYnJhcnkgZm9yIHBvcnRhYmxlIGFjY2VzcyBcCit0byBQQ0kgYnVzIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIHNldmVyYWwgdXRpbGl0aWVzIGJhc2VkIG9uIHRoaXMgbGlicmFyeS4nCitIT01FUEFHRSA9ICJodHRwOi8vYXRyZXkua2FybGluLm1mZi5jdW5pLmN6L35tai9wY2l1dGlscy5zaHRtbCIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKK0RFUEVORFMgPSAiemxpYiBrbW9kIgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvdXRpbHMvcGNpdXRpbHMvcGNpdXRpbHMtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjhlNTIyNzgzOTliN2IzNWZjZmMwMzFiYzA1ZGE4MGE4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImYzNDZlZWI5MGNjZTA5MTBjMDViODc3ZmU0OWVhZGM3NjBmYTA4NGMwNDU1ZmQzMTNlMzlkNGIyYzJkNGJiMjEiCisKK2luaGVyaXQgbXVsdGlsaWJfaGVhZGVyIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ2h3ZGInLCAnJywgZCl9IgorUEFDS0FHRUNPTkZJR1tod2RiXSA9ICJIV0RCPXllcyxIV0RCPW5vLHVkZXYiCisKK1BDSV9DT05GX0ZMQUcgPSAiWkxJQj15ZXMgRE5TPXllcyBTSEFSRUQ9eWVzIFNUUklQPSBMSUJESVI9JHtsaWJkaXJ9IgorCisjIHNlZSBjb25maWd1cmUucGF0Y2gKK2RvX2NvbmZpZ3VyZSAoKSB7CisJKAorCSAgY2QgbGliICYmIFwKKwkgICMgUEFDS0FHRUNPTkZJR19DT05GQVJHUyBmb3IgdGhpcyByZWNpcGUgY291bGQgb25seSBwb3NzaWJseSBjb250YWluICdIV0RCPXllcy9ubycsCisJICAjIHNvIHdlIHB1dCBpdCBiZWZvcmUgLi9jb25maWd1cmUKKwkgICR7UENJX0NPTkZfRkxBR30gJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSAuL2NvbmZpZ3VyZSAke1BWfSAke2RhdGFkaXJ9ICR7VEFSR0VUX09TfSAke1RBUkdFVF9BUkNIfQorCSkKK30KKworZXhwb3J0IFBSRUZJWCA9ICIke3ByZWZpeH0iCitleHBvcnQgU0JJTkRJUiA9ICIke3NiaW5kaXJ9IgorZXhwb3J0IFNIQVJFRElSID0gIiR7ZGF0YWRpcn0iCitleHBvcnQgTUFORElSID0gIiR7bWFuZGlyfSIKKworRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0gJHtQQ0lfQ09ORl9GTEFHfSIKKworIyBUaGUgY29uZmlndXJlIHNjcmlwdCBicmVha3MgaWYgdGhlIEhPU1QgdmFyaWFibGUgaXMgc2V0CitIT1NUW3VuZXhwb3J0XSA9ICIxIgorCitkb19pbnN0YWxsICgpIHsKKwlvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsIGluc3RhbGwtbGliCisKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwlsbiAtcyAuLi9zYmluL2xzcGNpICR7RH0ke2JpbmRpcn0vbHNwY2kKKworCW9lX211bHRpbGliX2hlYWRlciBwY2kvY29uZmlnLmgKK30KKworUEFDS0FHRVMgPSsgIiR7UE59LWlkcyBsaWJwY2kiCitGSUxFU18ke1BOfS1pZHMgPSAiJHtkYXRhZGlyfS9wY2kuaWRzKiIKK0ZJTEVTX2xpYnBjaSA9ICIke2xpYmRpcn0vbGlicGNpLnNvLioiCitTVU1NQVJZXyR7UE59LWlkcyA9ICJQQ0kgdXRpbGl0aWVzIC0gZGV2aWNlIElEIGRhdGFiYXNlIgorREVTQ1JJUFRJT05fJHtQTn0taWRzID0gIlBhY2thZ2UgcHJvdmlkaW5nIHRoZSBQQ0kgZGV2aWNlIElEIGRhdGFiYXNlIGZvciBwY2l1dGlscy4iCitSREVQRU5EU18ke1BOfSArPSAiJHtQTn0taWRzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNtY2lhdXRpbHMvcGNtY2lhdXRpbHMtMDE4L21ha2VmaWxlX3JhY2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY21jaWF1dGlscy9wY21jaWF1dGlscy0wMTgvbWFrZWZpbGVfcmFjZS5wYXRjaAppbmRleCBmNWE1MThmLi40YzVlYmE3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY21jaWF1dGlscy9wY21jaWF1dGlscy0wMTgvbWFrZWZpbGVfcmFjZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY21jaWF1dGlscy9wY21jaWF1dGlscy0wMTgvbWFrZWZpbGVfcmFjZS5wYXRjaApAQCAtMTYsMjAgKzE2LDYgQEAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBwY21jaWF1dGlscy0wMTgub3JpZy9NYWtlZmlsZQogKysrIHBjbWNpYXV0aWxzLTAxOC9NYWtlZmlsZQotQEAgLTI0OSw2ICsyNDksOSBAQCAkKFBDTUNJQV9TT0NLRVRfU1RBUlRVUCk6ICQoTElCQykgc3JjL3N0Ci0geWFjY19jb25maWcubyBsZXhfY29uZmlnLm86ICUubzogJS5jIHNyYy95YWNjX2NvbmZpZy5oCi0gCSQoQ0MpIC1jIC1NRCAtTyAtcGlwZSAkKENQUEZMQUdTKSAkPAotIAotK3NyYy9sZXhfY29uZmlnLm8gOiBzcmMvbGV4X2NvbmZpZy5jIHNyYy95YWNjX2NvbmZpZy5oCi0rCSQoUVVJRVQpICQoQ0MpICQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAtYyAtbyAkQCAkPAotKwotIGRlYnVndG9vbHM6IGNjZHYgJChDQkRVTVApICQoQ0lTRFVNUCkKLSAKLSAkKENCRFVNUCk6ICQoTElCQykgZGVidWcvY2JkdW1wLm8KLUluZGV4OiBwY21jaWF1dGlscy0wMTgvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwY21jaWF1dGlscy0wMTgub3JpZy9NYWtlZmlsZQotKysrIHBjbWNpYXV0aWxzLTAxOC9NYWtlZmlsZQogQEAgLTI0Niw4ICsyNDYsOCBAQCAkKFBDTUNJQV9TT0NLRVRfU1RBUlRVUCk6ICQoTElCQykgc3JjL3N0CiAgCSQoUVVJRVQpICQoTEQpICQoTERGTEFHUykgLW8gJEAgJChDUlQwKSBzcmMvc3RhcnR1cC5vIHNyYy95YWNjX2NvbmZpZy5vIHNyYy9sZXhfY29uZmlnLm8gJChMSUJfT0JKUykgJChBUkNIX0xJQl9PQkpTKQogIAkkKFFVSUVUKSAkKFNUUklQQ01EKSAkQApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzLzEwbTUwLXVwZGF0ZS1kZXZpY2UtdHJlZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy8xMG01MC11cGRhdGUtZGV2aWNlLXRyZWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0MTk1M2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzLzEwbTUwLXVwZGF0ZS1kZXZpY2UtdHJlZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLU5pb3MgSUkgZm9yIE1BWDEwIDEwbTUwIGJvYXJkIHJlcXVpcmVzIHVwZGF0ZSB0byAKLWl0cyBkZXZpY2UgdHJlZSB0byBlbmFibGUgQ1BVIGRyaXZlciBkdXJpbmcKLXUtYm9vdCBwcmUtcmVsb2NhdGlvbi4gVGhpcyBwYXRjaCB0YWcgdGhlIENQVSAKLXdpdGggZG0tcHJlLXJlbG9jIGZsYWcuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLVNpZ25lZC1vZmYtYnk6IEdhbiwgWWF1IFdhaSA8eWF1LndhaS5nYW5AaW50ZWwuY29tPgotCi0tLS0KLSBhcmNoL25pb3MyL2R0cy8xMG01MF9kZXZib2FyZC5kdHMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2FyY2gvbmlvczIvZHRzLzEwbTUwX2RldmJvYXJkLmR0cyBiL2FyY2gvbmlvczIvZHRzLzEwbTUwX2RldmJvYXJkLmR0cwotaW5kZXggMDVlYWMzMC4uNDYxYWU2OCAxMDA2NDQKLS0tLSBhL2FyY2gvbmlvczIvZHRzLzEwbTUwX2RldmJvYXJkLmR0cwotKysrIGIvYXJjaC9uaW9zMi9kdHMvMTBtNTBfZGV2Ym9hcmQuZHRzCi1AQCAtMTksNiArMTksNyBAQAotIAkJI3NpemUtY2VsbHMgPSA8MD47Ci0gCi0gCQljcHU6IGNwdUAwIHsKLSsJCQl1LWJvb3QsZG0tcHJlLXJlbG9jOwotIAkJCWRldmljZV90eXBlID0gImNwdSI7Ci0gCQkJY29tcGF0aWJsZSA9ICJhbHRyLG5pb3MyLTEuMSI7Ci0gCQkJcmVnID0gPDB4MDAwMDAwMDA+OwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvTVBDODMxNUVSREItZW5hYmxlLURIQ1AucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvTVBDODMxNUVSREItZW5hYmxlLURIQ1AucGF0Y2gKaW5kZXggY2VhNTJiNy4uZWNhYTE3OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzL01QQzgzMTVFUkRCLWVuYWJsZS1ESENQLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy9NUEM4MzE1RVJEQi1lbmFibGUtREhDUC5wYXRjaApAQCAtNSwxNSArNSwxNSBAQAogCiBTaWduZWQtb2ZmLWJ5OiBFZCBCYXJ0b3NoIDxlZC5iYXJ0b3NoQGxpbnV4LmludGVsLmNvbT4KIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3MvTVBDODMxNUVSREJfZGVmY29uZmlnIGIvY29uZmlncy9NUEM4MzE1RVJEQl9kZWZjb25maWcKLWluZGV4IDRlMmI3MDUuLmIwMmFiMWYgMTAwNjQ0Ci0tLS0gYS9jb25maWdzL01QQzgzMTVFUkRCX2RlZmNvbmZpZwotKysrIGIvY29uZmlncy9NUEM4MzE1RVJEQl9kZWZjb25maWcKLUBAIC05LDYgKzksNyBAQCBDT05GSUdfSFVTSF9QQVJTRVI9eQotIENPTkZJR19DTURfSTJDPXkKK0luZGV4OiBnaXQvY29uZmlncy9NUEM4MzE1RVJEQl9kZWZjb25maWcKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9jb25maWdzL01QQzgzMTVFUkRCX2RlZmNvbmZpZworKysrIGdpdC9jb25maWdzL01QQzgzMTVFUkRCX2RlZmNvbmZpZworQEAgLTEyLDYgKzEyLDcgQEAgQ09ORklHX0NNRF9QQ0k9eQorIENPTkZJR19DTURfU0FUQT15CiAgQ09ORklHX0NNRF9VU0I9eQogICMgQ09ORklHX0NNRF9TRVRFWFBSIGlzIG5vdCBzZXQKICtDT05GSUdfQ01EX0RIQ1A9eQogIENPTkZJR19DTURfTUlJPXkKICBDT05GSUdfQ01EX1BJTkc9eQotIENPTkZJR19DTURfRVhUMj15CisgQ09ORklHX0NNRF9EQVRFPXkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtY29tbW9uXzIwMTcuMDkuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1jb21tb25fMjAxNy4wOS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyZTUxMjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1jb21tb25fMjAxNy4wOS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmRlbnguZGUvd2lraS9VLUJvb3QvV2ViSG9tZSIKLVNFQ1RJT04gPSAiYm9vdGxvYWRlcnMiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTGljZW5zZXMvUkVBRE1FO21kNT1hMmM2NzhjZmQ0YTRkOTcxMzU1ODVjYWQ5MDg1NDFjNiIKLVBFID0gIjEiCi0KLSMgV2UgdXNlIHRoZSByZXZpc2lvbiBpbiBvcmRlciB0byBhdm9pZCBoYXZpbmcgdG8gZmV0Y2ggaXQgZnJvbSB0aGUKLSMgcmVwbyBkdXJpbmcgcGFyc2UKLVNSQ1JFViA9ICJjOThhYzM0ODdlNDEzYzcxZTVkMzYzMjJlZjMzMjRiMjFjNmY2MGY5IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5kZW54LmRlL3UtYm9vdC5naXQgXAotICAgIGZpbGU6Ly9NUEM4MzE1RVJEQi1lbmFibGUtREhDUC5wYXRjaCBcCi0gICAgZmlsZTovLzEwbTUwLXVwZGF0ZS1kZXZpY2UtdHJlZS5wYXRjaCBcCi0iCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWNvbW1vbl8yMDE4LjAxLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtY29tbW9uXzIwMTguMDEuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMDczZWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWNvbW1vbl8yMDE4LjAxLmluYwpAQCAtMCwwICsxLDE2IEBACitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmRlbnguZGUvd2lraS9VLUJvb3QvV2ViSG9tZSIKK1NFQ1RJT04gPSAiYm9vdGxvYWRlcnMiCisKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTGljZW5zZXMvUkVBRE1FO21kNT1hMmM2NzhjZmQ0YTRkOTcxMzU1ODVjYWQ5MDg1NDFjNiIKK1BFID0gIjEiCisKKyMgV2UgdXNlIHRoZSByZXZpc2lvbiBpbiBvcmRlciB0byBhdm9pZCBoYXZpbmcgdG8gZmV0Y2ggaXQgZnJvbSB0aGUKKyMgcmVwbyBkdXJpbmcgcGFyc2UKK1NSQ1JFViA9ICJmM2RkODdlMGI5ODk5OWE3OGU1MDBlOGM2ZDJiMDYzZWJhZGY1MzVhIgorCitTUkNfVVJJID0gImdpdDovL2dpdC5kZW54LmRlL3UtYm9vdC5naXQgXAorICAgIGZpbGU6Ly9NUEM4MzE1RVJEQi1lbmFibGUtREhDUC5wYXRjaCBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWZ3LXV0aWxzXzIwMTcuMDkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWZ3LXV0aWxzXzIwMTguMDEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtZnctdXRpbHNfMjAxNy4wOS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1mdy11dGlsc18yMDE4LjAxLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LW1raW1hZ2VfMjAxNy4wOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtbWtpbWFnZV8yMDE3LjA5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWZjNTY0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtbWtpbWFnZV8yMDE3LjA5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotcmVxdWlyZSB1LWJvb3QtY29tbW9uXyR7UFZ9LmluYwotCi1TVU1NQVJZID0gIlUtQm9vdCBib290bG9hZGVyIGltYWdlIGNyZWF0aW9uIHRvb2wiCi1ERVBFTkRTID0gIm9wZW5zc2wiCi0KLUVYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAnQ1JPU1NfQ09NUElMRT0iJHtUQVJHRVRfUFJFRklYfSIgQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKLUVYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmUgPSAnQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKLUVYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmVzZGsgPSAnQ1JPU1NfQ09NUElMRT0iJHtIT1NUX1BSRUZJWH0iIENDPSIke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgU1RSSVA9dHJ1ZSBWPTEnCi0KLWRvX2NvbXBpbGUgKCkgewotCW9lX3J1bm1ha2Ugc2FuZGJveF9kZWZjb25maWcKLQotCSMgRGlzYWJsZSBDT05GSUdfQ01EX0xJQ0VOU0UsIGxpY2Vuc2UuaCBpcyBub3QgdXNlZCBieSB0b29scyBhbmQKLQkjIGdlbmVyYXRpbmcgaXQgcmVxdWlyZXMgYmluMmhlYWRlciB0b29sLCB3aGljaCBmb3IgdGFyZ2V0IGJ1aWxkCi0JIyBpcyBidWlsdCB3aXRoIHRhcmdldCB0b29scyBhbmQgdGh1cyBjYW5ub3QgYmUgZXhlY3V0ZWQgb24gaG9zdC4KLQlzZWQgLWkgInMvQ09ORklHX0NNRF9MSUNFTlNFPS4qLyMgQ09ORklHX0NNRF9MSUNFTlNFIGlzIG5vdCBzZXQvIiAuY29uZmlnCi0KLQlvZV9ydW5tYWtlIGNyb3NzX3Rvb2xzIE5PX1NETD0xCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWluc3RhbGwgLW0gMDc1NSB0b29scy9ta2ltYWdlICR7RH0ke2JpbmRpcn0vdWJvb3QtbWtpbWFnZQotCWxuIC1zZiB1Ym9vdC1ta2ltYWdlICR7RH0ke2JpbmRpcn0vbWtpbWFnZQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LW1raW1hZ2VfMjAxOC4wMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtbWtpbWFnZV8yMDE4LjAxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjMDA4YmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LW1raW1hZ2VfMjAxOC4wMS5iYgpAQCAtMCwwICsxLDI5IEBACityZXF1aXJlIHUtYm9vdC1jb21tb25fJHtQVn0uaW5jCisKK1NVTU1BUlkgPSAiVS1Cb290IGJvb3Rsb2FkZXIgaW1hZ2UgY3JlYXRpb24gdG9vbCIKK0RFUEVORFMgPSAib3BlbnNzbCIKKworRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICdDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IiBDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJworRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICdDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJworRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZXNkayA9ICdDUk9TU19DT01QSUxFPSIke0hPU1RfUFJFRklYfSIgQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKKworZG9fY29tcGlsZSAoKSB7CisJb2VfcnVubWFrZSBzYW5kYm94X2RlZmNvbmZpZworCisJIyBEaXNhYmxlIENPTkZJR19DTURfTElDRU5TRSwgbGljZW5zZS5oIGlzIG5vdCB1c2VkIGJ5IHRvb2xzIGFuZAorCSMgZ2VuZXJhdGluZyBpdCByZXF1aXJlcyBiaW4yaGVhZGVyIHRvb2wsIHdoaWNoIGZvciB0YXJnZXQgYnVpbGQKKwkjIGlzIGJ1aWx0IHdpdGggdGFyZ2V0IHRvb2xzIGFuZCB0aHVzIGNhbm5vdCBiZSBleGVjdXRlZCBvbiBob3N0LgorCXNlZCAtaSAicy9DT05GSUdfQ01EX0xJQ0VOU0U9LiovIyBDT05GSUdfQ01EX0xJQ0VOU0UgaXMgbm90IHNldC8iIC5jb25maWcKKworCW9lX3J1bm1ha2UgY3Jvc3NfdG9vbHMgTk9fU0RMPTEKK30KKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtbSAwNzU1IHRvb2xzL21raW1hZ2UgJHtEfSR7YmluZGlyfS91Ym9vdC1ta2ltYWdlCisJbG4gLXNmIHVib290LW1raW1hZ2UgJHtEfSR7YmluZGlyfS9ta2ltYWdlCit9CisKK1JERVBFTkRTXyR7UE59ICs9ICJkdGMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3RfMjAxNy4wOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3RfMjAxOC4wMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdF8yMDE3LjA5LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290XzIwMTguMDEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3VzYnV0aWxzL3VzYnV0aWxzL0ZpeC1OVUxMLXBvaW50ZXItY3Jhc2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91c2J1dGlscy91c2J1dGlscy9GaXgtTlVMTC1wb2ludGVyLWNyYXNoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWZkYzU5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3VzYnV0aWxzL3VzYnV0aWxzL0ZpeC1OVUxMLXBvaW50ZXItY3Jhc2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1GaXggTlVMTCBwb2ludGVyIGNyYXNoLgotCi1CZWZvcmUgdXNlIHVzYmJ1c2xpc3QsIHdlIHNob3VsZCBjaGVjayBpZiBpdCBpcyB2YWxpZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBSb3kuTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsc3VzYi10LmMgfCAgICA0ICsrKysKLSAxIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xzdXNiLXQuYyBiL2xzdXNiLXQuYwotaW5kZXggZjYwNDE1NS4uNTgzYTQ2YSAxMDA2NDQKLS0tLSBhL2xzdXNiLXQuYwotKysrIGIvbHN1c2ItdC5jCi1AQCAtNjQzLDYgKzY0MywxMCBAQCBzdGF0aWMgdm9pZCBzb3J0X2J1c3Nlcyh2b2lkKQotIAkvKiBuZWVkIHRvIHJldmVyc2Ugc29ydCBidXMgbnVtYmVycyAqLwotIAlzdHJ1Y3QgdXNiYnVzbm9kZSAqdCwgKnAsICoqcHA7Ci0gCWludCBzd2FwcGVkOwotKwotKwlpZiAoIXVzYmJ1c2xpc3QpCi0rCQlyZXR1cm47Ci0rCi0gCWRvIHsKLSAJCXAgPSB1c2JidXNsaXN0OwotIAkJcHAgPSAmdXNiYnVzbGlzdDsKLS0tIAotMS43LjQuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91c2J1dGlscy91c2J1dGlscy9pY29udi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3VzYnV0aWxzL3VzYnV0aWxzL2ljb252LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDU1NTY3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3VzYnV0aWxzL3VzYnV0aWxzL2ljb252LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGRldGVjdGluZyBpY29udiBzdXBwb3J0IHVzaW5nIGF1dG90b29scwotdWNsaWJjIGRvZXMgbm90IGhhdmUgaWNvbnYgaW1wbGVtZW50YXRpb24gaW5zaWRlIGxpYmMgbGlrZSBnbGliYywgdGhlcmVmb3JlCi10aGUgZXhpc3RpbmcgY2hlY2tzIHdlcmUgbm90IHN1ZmZpY2llbnQsIGl0IHdvcmtlZCBmb3IgZ2xpYmMgYnV0IG5vdCBmb3IKLXVjbGliYy4gVGhlIG5ldyBwYXRjaCBwb3J0YWJseSBkZXRlY3RzIHRoZSBpY29udiBzdXBwb3J0IGFuZCBhZGRzIHRoZQotbGliaWNvbnYgdG8gbGlua2VyIGNtZGxpbmUKLQotVGhpcyBwYXRjaCBzaG91bGQgYmUgc3VibWl0dGVkIHVwc3RyZWFtIHRvbwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotSW5kZXg6IHVzYnV0aWxzLTAwOC9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB1c2J1dGlscy0wMDgub3JpZy9jb25maWd1cmUuYWMKLSsrKyB1c2J1dGlscy0wMDgvY29uZmlndXJlLmFjCi1AQCAtMTAsNyArMTAsOSBAQCBBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMKLSBBQ19TWVNfTEFSR0VGSUxFCi0gCi0gQUNfQ0hFQ0tfSEVBREVSUyhbYnl0ZXN3YXAuaF0pCi0tQUNfQ0hFQ0tfRlVOQ1MoW25sX2xhbmdpbmZvIGljb252XSkKLSsKLStBTV9HTlVfR0VUVEVYVAotK0FNX0lDT05WCi0gCi0gUEtHX0NIRUNLX01PRFVMRVMoTElCVVNCLCBsaWJ1c2ItMS4wID49IDEuMC4wKQotIAotSW5kZXg6IHVzYnV0aWxzLTAwOC9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHVzYnV0aWxzLTAwOC5vcmlnL01ha2VmaWxlLmFtCi0rKysgdXNidXRpbHMtMDA4L01ha2VmaWxlLmFtCi1AQCAtMjksNyArMjksOCBAQCBsc3VzYl9DUFBGTEFHUyA9IFwKLSAKLSBsc3VzYl9MREFERCA9IFwKLSAJJChMSUJVU0JfTElCUykgXAotLQkkKFVERVZfTElCUykKLSsJJChVREVWX0xJQlMpIFwKLSsJJChMSUJJQ09OVikKLSAKLSBtYW5fTUFOUyA9IFwKLSAJbHN1c2IuOAlcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91c2J1dGlscy91c2J1dGlsc18wMDguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91c2J1dGlscy91c2J1dGlsc18wMDguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzYzViZDUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdXNidXRpbHMvdXNidXRpbHNfMDA4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotU1VNTUFSWSA9ICJIb3N0IHNpZGUgVVNCIGNvbnNvbGUgdXRpbGl0aWVzIgotREVTQ1JJUFRJT04gPSAiQ29udGFpbnMgdGhlIGxzdXNiIHV0aWxpdHkgZm9yIGluc3BlY3RpbmcgdGhlIGRldmljZXMgY29ubmVjdGVkIHRvIHRoZSBVU0IgYnVzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGludXgtdXNiLm9yZyIKLVNFQ1RJT04gPSAiYmFzZSIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotREVQRU5EUyA9ICJsaWJ1c2IgemxpYiB2aXJ0dWFsL2xpYmljb252IHVkZXYiCi0KLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy91c2IvdXNidXRpbHMvdXNidXRpbHMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3VzYi1kZXZpY2VzLWF2b2lkLWRlcGVuZGVuY3ktb24tYmFzaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9GaXgtTlVMTC1wb2ludGVyLWNyYXNoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ljb252LnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjYjIwMTQ4YzJlNzg0NTc3ZTkyNGE3YjRjNTYwYzhmYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2ZDVmMTZjMjk2MWRmMzdlMjJlNDkyYzczNmEzZTE2MmE4ZmRlMjQ0ODBmMjNhNDBkODVmNzlhZjgwZDNmZTk1IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L3BrZ2NvbmZpZyIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAidWRldi1od2RiIgotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAibGliYm9vc3Qtc3lzdGVtIGxpYmJvb3N0LXRocmVhZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3VzYnV0aWxzL3VzYnV0aWxzXzAwOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3VzYnV0aWxzL3VzYnV0aWxzXzAwOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmZjMGRkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdXNidXRpbHMvdXNidXRpbHNfMDA5LmJiCkBAIC0wLDAgKzEsMzQgQEAKK1NVTU1BUlkgPSAiSG9zdCBzaWRlIFVTQiBjb25zb2xlIHV0aWxpdGllcyIKK0RFU0NSSVBUSU9OID0gIkNvbnRhaW5zIHRoZSBsc3VzYiB1dGlsaXR5IGZvciBpbnNwZWN0aW5nIHRoZSBkZXZpY2VzIGNvbm5lY3RlZCB0byB0aGUgVVNCIGJ1cy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpbnV4LXVzYi5vcmciCitTRUNUSU9OID0gImJhc2UiCisKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK0RFUEVORFMgPSAibGlidXNiIHpsaWIgdmlydHVhbC9saWJpY29udiB1ZGV2IgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMvdXNiL3VzYnV0aWxzL3VzYnV0aWxzLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly91c2ItZGV2aWNlcy1hdm9pZC1kZXBlbmRlbmN5LW9uLWJhc2gucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImI1ZGJjNDk4YjJlYjUwNThmN2E1N2ZjNjUzMmQwYWFkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU3MzU0MzI5M2ExN2M3ODAzOTk0ZWFjOTdhNDllNThiMzc3ZTA4ZTYyOTliYTExYWFkMDk3OTRiOTEzNDBlOGIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV8ke1BOfSA9ICJsc3VzYiIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L3BrZ2NvbmZpZyIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAidWRldi1od2RiIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAibGliYm9vc3Qtc3lzdGVtIGxpYmJvb3N0LXRocmVhZCIKKworUEFDS0FHRV9CRUZPUkVfUE4gPSsgIiR7UE59LXB5dGhvbiIKK0ZJTEVTXyR7UE59LXB5dGhvbiArPSAiJHtiaW5kaXJ9L2xzdXNiLnB5IgorUkRFUEVORFNfJHtQTn0tcHl0aG9uID0gInB5dGhvbjMtY29yZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgc2VkIC1pIC1FICcxcywjIS4rcHl0aG9uLCMhJHtiaW5kaXJ9L3B5dGhvbjMsJyAke0R9JHtiaW5kaXJ9L2xzdXNiLnB5Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC92ODZkL3Y4NmRfMC4xLjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3Avdjg2ZC92ODZkXzAuMS4xMC5iYgppbmRleCBlNWY2ZmZmLi5mOTdiODBkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC92ODZkL3Y4NmRfMC4xLjEwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3Y4NmQvdjg2ZF8wLjEuMTAuYmIKQEAgLTksNyArOSw3IEBACiBSUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLXV2ZXNhZmIiCiBQUiA9ICJyMiIKIAotU1JDX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vdi8ke0JQTn0vJHtCUE59XyR7UFZ9Lm9yaWcudGFyLmd6IFwKK1NSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxMTA0MjdUMDM1NTA2Wi9wb29sL21haW4vdi8ke0JQTn0vJHtCUE59XyR7UFZ9Lm9yaWcudGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL1VwZGF0ZS14ODZlbXUtZnJvbS1YLm9yZy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9hci1mcm9tLWVudi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9hYXJjaDY0LWhvc3QucGF0Y2ggXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGktdWlfMC42LjMyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGktdWlfMC42LjMyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzM2NDYxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpLXVpXzAuNi4zMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F2YWhpLWNvbW1vbi9hZGRyZXNzLmg7ZW5kbGluZT0yNTttZDU9YjFkMWQyY2RhMWMwN2ViODQ4ZWE3ZDYyMTU3MTJkOWQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXZhaGktY29yZS9kbnMuaDtlbmRsaW5lPTIzO21kNT02ZmU4MjU5MGI4MWFhMGRkZWE1MDk1YjU0OGUyZmRjYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1kYWVtb24vbWFpbi5jO2VuZGxpbmU9MjE7bWQ1PTllZTc3MzY4YzU0MDdhZjc3Y2FhZWYxYjA3Mjg1OTY5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F2YWhpLWNsaWVudC9jbGllbnQuaDtlbmRsaW5lPTIzO21kNT1mNGFjNzQxYTI1YzRmNDM0MDM5YmEzZTE4Yzg2NzRjZiIKLQotcmVxdWlyZSBhdmFoaS5pbmMKLQotaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLUFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEszRElTVFJPRkVBVFVSRVN9IgotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtaW5zdGFsbC1HdGtCdWlsZGVyLWludGVyZmFjZS1maWxlcy1mb3ItLnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gIjIyYjVlNzA1ZDNlYWJiMzFkMjZmMmUxZTdiMDc0MDEzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ1NDk5MTE4NWQ1MTRhMGFiYTU0ZWJlYjQwOGQ3NTc1YjYwZjU4MThhNzcyZTI4ZmEwZTE4Yjk4YmMxZGI0NTQiCi0KLURFUEVORFMgKz0gImF2YWhpIgotCi1BVkFISV9HVEsgPSAiZ3RrMyIKLQotUyA9ICIke1dPUktESVJ9L2F2YWhpLSR7UFZ9IgotCi1QQUNLQUdFUyA9ICIke1BOfSAke1BOfS11dGlscyAke1BOfS1kYmcgJHtQTn0tZGV2ICR7UE59LXN0YXRpY2RldiAke1BOfS1kb2MgYXZhaGktZGlzY292ZXIiCi0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWJhdmFoaS11aSouc28uKiIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2xpYmF2YWhpLXVpJHtTT0xJQlNERVZ9IgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vbGliYXZhaGktdWkuYSIKLQotRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9L2IqICR7ZGF0YWRpcn0vYXBwbGljYXRpb25zL2IqIgotCi1GSUxFU19hdmFoaS1kaXNjb3ZlciA9ICIke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9hdmFoaS1kaXNjb3Zlci5kZXNrdG9wIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vYXZhaGkvaW50ZXJmYWNlcy9hdmFoaS1kaXNjb3Zlci51aSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vYXZhaGktZGlzY292ZXItc3RhbmRhbG9uZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlybSAke0R9JHtzeXNjb25mZGlyfSAtcmYKLQlybSAke0R9JHtiYXNlX2xpYmRpcn0gLXJmCi0Jcm0gJHtEfSR7c3lzdGVtZF91bml0ZGlyfSAtcmYKLQkjIFRoZSAke3N5c3RlbWRfdW5pdGRpcn0gaXMgL2xpYi9zeXN0ZW1kLCBzbyB3ZSBuZWVkIHJtZGlyIC9saWIsCi0JIyBidXQgbm90ICR7YmFzZV9saWJkaXJ9IGhlcmUuIEFuZCB0aGUgL2xpYiBtYXkgbm90IGV4aXN0Ci0JIyB3aGl0aG91dCBzeXN0ZW1kLgotCVsgISAtZCAke0R9L2xpYiBdIHx8IHJtZGlyICR7RH0vbGliIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5Ci0Jcm0gJHtEfSR7YmluZGlyfS9hdmFoaS1iKgotCXJtICR7RH0ke2JpbmRpcn0vYXZhaGktcCoKLQlybSAke0R9JHtiaW5kaXJ9L2F2YWhpLXIqCi0Jcm0gJHtEfSR7YmluZGlyfS9hdmFoaS1zKgotCXJtICR7RH0ke2luY2x1ZGVkaXJ9L2F2YWhpLWMqIC1yZgotCXJtICR7RH0ke2luY2x1ZGVkaXJ9L2F2YWhpLWcqIC1yZgotCXJtICR7RH0ke2xpYmRpcn0vbGliYXZhaGktYyoKLQlybSAke0R9JHtsaWJkaXJ9L2xpYmF2YWhpLWcqCi0Jcm0gJHtEfSR7bGliZGlyfS9wa2djb25maWcvYXZhaGktYyoKLQlybSAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9hdmFoaS1nKgotCXJtICR7RH0ke3NiaW5kaXJ9IC1yZgotCXJtICR7RH0ke2RhdGFkaXJ9L2F2YWhpL2EqCi0Jcm0gJHtEfSR7ZGF0YWRpcn0vYXZhaGkvcyoKLQlybSAke0R9JHtkYXRhZGlyfS9sb2NhbGUvIC1yZgotCXJtICR7RH0ke2RhdGFkaXJ9L2RidXMqIC1yZgotCXJtICR7RH0ke21hbmRpcn0vbWFuMS9hKgotCXJtICR7RH0ke21hbmRpcn0vbWFuNSAtcmYKLQlybSAke0R9JHttYW5kaXJ9L21hbjggLXJmCi0gICAgICAgIHJtICR7RH0ke2xpYmRpcn0vZ2lyZXBvc2l0b3J5LTEuMC8gLXJmCi0gICAgICAgIHJtICR7RH0ke2RhdGFkaXJ9L2dpci0xLjAvIC1yZgotfQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaS11aV8wLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaS11aV8wLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY0OGUzOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpLXVpXzAuNy5iYgpAQCAtMCwwICsxLDYyIEBACitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1jb21tb24vYWRkcmVzcy5oO2VuZGxpbmU9MjU7bWQ1PWIxZDFkMmNkYTFjMDdlYjg0OGVhN2Q2MjE1NzEyZDlkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F2YWhpLWNvcmUvZG5zLmg7ZW5kbGluZT0yMzttZDU9NmZlODI1OTBiODFhYTBkZGVhNTA5NWI1NDhlMmZkY2IgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXZhaGktZGFlbW9uL21haW4uYztlbmRsaW5lPTIxO21kNT05ZWU3NzM2OGM1NDA3YWY3N2NhYWVmMWIwNzI4NTk2OSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1jbGllbnQvY2xpZW50Lmg7ZW5kbGluZT0yMzttZDU9ZjRhYzc0MWEyNWM0ZjQzNDAzOWJhM2UxOGM4Njc0Y2YiCisKK3JlcXVpcmUgYXZhaGkuaW5jCisKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKKworU1JDX1VSSVttZDVzdW1dID0gImQ3NmM1OWQwODgyYWM2YzI1NmQ3MGEyYTU4NTM2MmE2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU3YTk5YjVkZmU3ZmRhZTc5NGUzZDFlZTdhNjI5NzNhMzY4ZTkxZTQxNGJkMGRmYTVkODQ0MzRkZTViMTQ4MDQiCisKK0RFUEVORFMgKz0gImF2YWhpIgorCitBVkFISV9HVEsgPSAiZ3RrMyIKKworUyA9ICIke1dPUktESVJ9L2F2YWhpLSR7UFZ9IgorCitQQUNLQUdFUyA9ICIke1BOfSAke1BOfS11dGlscyAke1BOfS1kYmcgJHtQTn0tZGV2ICR7UE59LXN0YXRpY2RldiAke1BOfS1kb2MgYXZhaGktZGlzY292ZXIiCisKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWJhdmFoaS11aSouc28uKiIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2xpYmF2YWhpLXVpJHtTT0xJQlNERVZ9IgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vbGliYXZhaGktdWkuYSIKKworRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9L2IqICR7ZGF0YWRpcn0vYXBwbGljYXRpb25zL2IqIgorCitGSUxFU19hdmFoaS1kaXNjb3ZlciA9ICIke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9hdmFoaS1kaXNjb3Zlci5kZXNrdG9wIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vYXZhaGkvaW50ZXJmYWNlcy9hdmFoaS1kaXNjb3Zlci51aSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vYXZhaGktZGlzY292ZXItc3RhbmRhbG9uZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlybSAke0R9JHtzeXNjb25mZGlyfSAtcmYKKwlybSAke0R9JHtiYXNlX2xpYmRpcn0gLXJmCisJcm0gJHtEfSR7c3lzdGVtZF91bml0ZGlyfSAtcmYKKwkjIFRoZSAke3N5c3RlbWRfdW5pdGRpcn0gaXMgL2xpYi9zeXN0ZW1kLCBzbyB3ZSBuZWVkIHJtZGlyIC9saWIsCisJIyBidXQgbm90ICR7YmFzZV9saWJkaXJ9IGhlcmUuIEFuZCB0aGUgL2xpYiBtYXkgbm90IGV4aXN0CisJIyB3aGl0aG91dCBzeXN0ZW1kLgorCVsgISAtZCAke0R9L2xpYiBdIHx8IHJtZGlyICR7RH0vbGliIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5CisJcm0gJHtEfSR7YmluZGlyfS9hdmFoaS1iKgorCXJtICR7RH0ke2JpbmRpcn0vYXZhaGktcCoKKwlybSAke0R9JHtiaW5kaXJ9L2F2YWhpLXIqCisJcm0gJHtEfSR7YmluZGlyfS9hdmFoaS1zKgorCXJtICR7RH0ke2luY2x1ZGVkaXJ9L2F2YWhpLWMqIC1yZgorCXJtICR7RH0ke2luY2x1ZGVkaXJ9L2F2YWhpLWcqIC1yZgorCXJtICR7RH0ke2xpYmRpcn0vbGliYXZhaGktYyoKKwlybSAke0R9JHtsaWJkaXJ9L2xpYmF2YWhpLWcqCisJcm0gJHtEfSR7bGliZGlyfS9wa2djb25maWcvYXZhaGktYyoKKwlybSAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9hdmFoaS1nKgorCXJtICR7RH0ke3NiaW5kaXJ9IC1yZgorCXJtICR7RH0ke2RhdGFkaXJ9L2F2YWhpL2EqCisJcm0gJHtEfSR7ZGF0YWRpcn0vbG9jYWxlLyAtcmYKKwlybSAke0R9JHtkYXRhZGlyfS9kYnVzKiAtcmYKKwlybSAke0R9JHttYW5kaXJ9L21hbjEvYSoKKwlybSAke0R9JHttYW5kaXJ9L21hbjUgLXJmCisJcm0gJHtEfSR7bWFuZGlyfS9tYW44IC1yZgorICAgICAgICBybSAke0R9JHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0xLjAvIC1yZgorICAgICAgICBybSAke0R9JHtkYXRhZGlyfS9naXItMS4wLyAtcmYKK30KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGkuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGkuaW5jCmluZGV4IDc4MTQ0NjQuLmVjMzY4ZGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaS5pbmMKQEAgLTIzLDIxICsyMywyMCBAQAogICAgICAgICAgICIKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGF0aGlhdC9hdmFoaS9yZWxlYXNlcy8iCiAKLSMgRm9yIGd0ayByZWxhdGVkIFBBQ0tBR0VDT05GSUdzOiBndGssIGd0azMgYW5kIHB5Z3RrCisjIEZvciBndGsgcmVsYXRlZCBQQUNLQUdFQ09ORklHczogZ3RrLCBndGszCiBBVkFISV9HVEsgPz0gIiIKIAogUEFDS0FHRUNPTkZJRyA/Pz0gImRidXMgJHtBVkFISV9HVEt9IgogUEFDS0FHRUNPTkZJR1tkYnVzXSA9ICItLWVuYWJsZS1kYnVzLC0tZGlzYWJsZS1kYnVzLGRidXMiCiBQQUNLQUdFQ09ORklHW2d0a10gPSAiLS1lbmFibGUtZ3RrLC0tZGlzYWJsZS1ndGssZ3RrKyIKIFBBQ0tBR0VDT05GSUdbZ3RrM10gPSAiLS1lbmFibGUtZ3RrMywtLWRpc2FibGUtZ3RrMyxndGsrMyIKLVBBQ0tBR0VDT05GSUdbcHlndGtdID0gIi0tZW5hYmxlLXB5Z3RrLC0tZGlzYWJsZS1weWd0aywiCiAKIFVTRVJBRERfUEFDS0FHRVMgPSAiYXZhaGktZGFlbW9uIGF2YWhpLWF1dG9pcGQiCi1VU0VSQUREX1BBUkFNX2F2YWhpLWRhZW1vbiA9ICItLXN5c3RlbSAtLWhvbWUgL3Zhci9ydW4vYXZhaGktZGFlbW9uIFwKK1VTRVJBRERfUEFSQU1fYXZhaGktZGFlbW9uID0gIi0tc3lzdGVtIC0taG9tZSAvcnVuL2F2YWhpLWRhZW1vbiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLW5vLWNyZWF0ZS1ob21lIC0tc2hlbGwgL2Jpbi9mYWxzZSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXVzZXItZ3JvdXAgYXZhaGkiCiAKLVVTRVJBRERfUEFSQU1fYXZhaGktYXV0b2lwZCA9ICItLXN5c3RlbSAtLWhvbWUgL3Zhci9ydW4vYXZhaGktYXV0b2lwZCBcCitVU0VSQUREX1BBUkFNX2F2YWhpLWF1dG9pcGQgPSAiLS1zeXN0ZW0gLS1ob21lIC9ydW4vYXZhaGktYXV0b2lwZCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLW5vLWNyZWF0ZS1ob21lIC0tc2hlbGwgL2Jpbi9mYWxzZSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXVzZXItZ3JvdXAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWMgXCJBdmFoaSBhdXRvaXAgZGFlbW9uXCIgXApAQCAtMTEwLDExICsxMDksNiBAQAogUlJFQ09NTUVORFNfYXZhaGktZGFlbW9uX2FwcGVuZF9saWJjLWdsaWJjID0gIiBsaWJuc3MtbWRucyIKIFJSRUNPTU1FTkRTXyR7UE59X2FwcGVuZF9saWJjLWdsaWJjID0gIiBsaWJuc3MtbWRucyIKIAotUlJFQ09NTUVORFNfYXZhaGktZGV2ID0gImV4cGF0LWRldiBsaWJjYXAtZGV2IGxpYmRhZW1vbi1kZXYgZGJ1cy1kZXYgZ2xpYi0yLjAtZGV2IHVwZGF0ZS1yYy5kLWRldiIKLVJSRUNPTU1FTkRTX2F2YWhpLWRldl9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2V0dGV4dC1kZXYiCi0KLVJSRUNPTU1FTkRTX2F2YWhpLWRldltub2RlcHJyZWNzXSA9ICIxIgotCiBDT05GRklMRVNfYXZhaGktZGFlbW9uID0gIiR7c3lzY29uZmRpcn0vYXZhaGkvYXZhaGktZGFlbW9uLmNvbmYiCiAKIElOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiYXZhaGktZGFlbW9uIGF2YWhpLWRuc2NvbmZkIgpAQCAtMTI1LDEyICsxMTksNyBAQAogCiBkb19pbnN0YWxsKCkgewogCWF1dG90b29sc19kb19pbnN0YWxsCi0KLQkjIGRvbid0IGluc3RhbGwgL3Zhci9ydW4gd2hlbiBwb3B1bGF0aW5nIHJvb3Rmcy4gRG8gaXQgdGhyb3VnaCB2b2xhdGlsZQotCSMgL3Zhci9ydW4gb2YgY3VycmVudCB2ZXJzaW9uIGlzIGVtcHR5LCBzbyBqdXN0IHJlbW92ZSBpdC4KLQkjIGlmIC92YXIvcnVuIGJlY29tZSBub24tZW1wdHkgaW4gdGhlIGZ1dHVyZSwgbmVlZCB0byBpbnN0YWxsIGl0IHZpYSB2b2xhdGlsZQotCXJtIC1yZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KLQlybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsb2NhbHN0YXRlZGlyfQorCXJtIC1yZiAke0R9L3J1bgogCXJtIC1yZiAke0R9JHtkYXRhZGlyfS9kYnVzLTEvaW50ZXJmYWNlcwogCXRlc3QgLWQgJHtEfSR7ZGF0YWRpcn0vZGJ1cy0xICYmIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke2RhdGFkaXJ9L2RidXMtMQogCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2F2YWhpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaV8wLjYuMzIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaV8wLjYuMzIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmYTYzMDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGlfMC42LjMyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotcmVxdWlyZSBhdmFoaS5pbmMKLQotaW5oZXJpdCBzeXN0ZW1kCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0tZGFlbW9uICR7UE59LWRuc2NvbmZkIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LWRhZW1vbiA9ICJhdmFoaS1kYWVtb24uc2VydmljZSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1kbnNjb25mZCA9ICJhdmFoaS1kbnNjb25mZC5zZXJ2aWNlIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1jb21tb24vYWRkcmVzcy5oO2VuZGxpbmU9MjU7bWQ1PWIxZDFkMmNkYTFjMDdlYjg0OGVhN2Q2MjE1NzEyZDlkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F2YWhpLWNvcmUvZG5zLmg7ZW5kbGluZT0yMzttZDU9NmZlODI1OTBiODFhYTBkZGVhNTA5NWI1NDhlMmZkY2IgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXZhaGktZGFlbW9uL21haW4uYztlbmRsaW5lPTIxO21kNT05ZWU3NzM2OGM1NDA3YWY3N2NhYWVmMWIwNzI4NTk2OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1jbGllbnQvY2xpZW50Lmg7ZW5kbGluZT0yMzttZDU9ZjRhYzc0MWEyNWM0ZjQzNDAzOWJhM2UxOGM4Njc0Y2YiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9hdmFoaS1maXgtcmVzb3VyY2UtdW5hdmFpYWJsZS5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjIyYjVlNzA1ZDNlYWJiMzFkMjZmMmUxZTdiMDc0MDEzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ1NDk5MTE4NWQ1MTRhMGFiYTU0ZWJlYjQwOGQ3NTc1YjYwZjU4MThhNzcyZTI4ZmEwZTE4Yjk4YmMxZGI0NTQiCi0KLURFUEVORFMgKz0gImludGx0b29sLW5hdGl2ZSIKLQotUEFDS0FHRVMgPSsgImxpYmF2YWhpLWdvYmplY3QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaV8wLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaV8wLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M5MWYxMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpXzAuNy5iYgpAQCAtMCwwICsxLDIwIEBACityZXF1aXJlIGF2YWhpLmluYworCitpbmhlcml0IHN5c3RlbWQKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1kYWVtb24gJHtQTn0tZG5zY29uZmQiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tZGFlbW9uID0gImF2YWhpLWRhZW1vbi5zZXJ2aWNlIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LWRuc2NvbmZkID0gImF2YWhpLWRuc2NvbmZkLnNlcnZpY2UiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F2YWhpLWNvbW1vbi9hZGRyZXNzLmg7ZW5kbGluZT0yNTttZDU9YjFkMWQyY2RhMWMwN2ViODQ4ZWE3ZDYyMTU3MTJkOWQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXZhaGktY29yZS9kbnMuaDtlbmRsaW5lPTIzO21kNT02ZmU4MjU5MGI4MWFhMGRkZWE1MDk1YjU0OGUyZmRjYiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1kYWVtb24vbWFpbi5jO2VuZGxpbmU9MjE7bWQ1PTllZTc3MzY4YzU0MDdhZjc3Y2FhZWYxYjA3Mjg1OTY5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F2YWhpLWNsaWVudC9jbGllbnQuaDtlbmRsaW5lPTIzO21kNT1mNGFjNzQxYTI1YzRmNDM0MDM5YmEzZTE4Yzg2NzRjZiIKKworU1JDX1VSSVttZDVzdW1dID0gImQ3NmM1OWQwODgyYWM2YzI1NmQ3MGEyYTU4NTM2MmE2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU3YTk5YjVkZmU3ZmRhZTc5NGUzZDFlZTdhNjI5NzNhMzY4ZTkxZTQxNGJkMGRmYTVkODQ0MzRkZTViMTQ4MDQiCisKK0RFUEVORFMgKz0gImludGx0b29sLW5hdGl2ZSIKKworUEFDS0FHRVMgPSsgImxpYmF2YWhpLWdvYmplY3QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1pbnN0YWxsLUd0a0J1aWxkZXItaW50ZXJmYWNlLWZpbGVzLWZvci0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1pbnN0YWxsLUd0a0J1aWxkZXItaW50ZXJmYWNlLWZpbGVzLWZvci0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0MjYwN2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvZmlsZXMvMDAwMS1jb25maWd1cmUuYWMtaW5zdGFsbC1HdGtCdWlsZGVyLWludGVyZmFjZS1maWxlcy1mb3ItLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSA2ZmYyNTVlZmY0ZmVhNjM1MGI1ZTA0NjJmZWUxNzZmYWRjMjZmYzFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IFN1biwgMTIgSnVuIDIwMTYgMTg6MzI6NDkgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBpbnN0YWxsIEd0a0J1aWxkZXIgaW50ZXJmYWNlIGZpbGVzIGZvciBHVEsrMwotIHRvbwotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2xhdGhpYXQvYXZhaGkvcHVsbC8xMzBdCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggODdhOWExNy4uOTg2MGRjYyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtOTY1LDcgKzk2NSw3IEBAIEFDX1NVQlNUKGF2YWhpX3NvY2tldCkKLSAjCi0gIyBBdmFoaSBpbnRlcmZhY2VzIGRpcgotICMKLS1pZiB0ZXN0ICJ4JEhBVkVfUFlUSE9OX0RCVVMiID0gInh5ZXMiIC1vICJ4JEhBVkVfR1RLIiA9ICJ4eWVzIjsgdGhlbgotK2lmIHRlc3QgIngkSEFWRV9QWVRIT05fREJVUyIgPSAieHllcyIgLW8gIngkSEFWRV9HVEsiID0gInh5ZXMiIC1vICJ4JEhBVkVfR1RLMyIgPSAieHllcyI7IHRoZW4KLSAJaW50ZXJmYWNlc2Rpcj0iJHtkYXRhZGlyfS8ke1BBQ0tBR0V9L2ludGVyZmFjZXMvIgotIAlBQ19TVUJTVChpbnRlcmZhY2VzZGlyKQotIGZpCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2ZpbGVzL2F2YWhpLWZpeC1yZXNvdXJjZS11bmF2YWlhYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvZmlsZXMvYXZhaGktZml4LXJlc291cmNlLXVuYXZhaWFibGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhMmZkNzUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvZmlsZXMvYXZhaGktZml4LXJlc291cmNlLXVuYXZhaWFibGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUJhY2twb3J0IGZyb206Ci1odHRwczovL2dpdGh1Yi5jb20vZXhwZXJpbWVudGFsLXBsYXRmb3JtL3BsYXRmb3JtLWhvc3RuYW1lLWF2YWhpL3B1bGwvOQotCi1JdCBzb21ldGltZXMgZmFpbHMgdG8gcnVuIGF2YWhpIHdpdGggZXJyb3I6ICJDb3VsZCBub3QgcmVjZWl2ZSByZXR1cm4gdmFsdWUKLWZyb20gZGFlbW9uIHByb2Nlc3MiLiBJdCBoYXMgc2FtZSByb290IGNhdXNlIHdpdGgKLWh0dHBzOi8vZ2l0aHViLmNvbS9seGMvbHhjL2lzc3Vlcy8yNS4KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLUZyb20gNTE1MDk4MzEwMmFkNWFkNDNmMGRhZTIwM2NiMzMyYzE2OGViNWE3MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhpbm5lcmsgSGFhcmR0IDxoYWFyZHRAaW5mb3JtYXRpb24tY29udHJvbC5kZT4KLURhdGU6IFRodSwgMTcgRGVjIDIwMTUgMTE6NTI6MTkgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGBjaHJvb3QuYzogZm9yaygpIGZhaWxlZDogUmVzb3VyY2UgdGVtcG9yYXJpbHkKLSB1bmF2YWlsYWJsZWAgYXMgcGVyIGh0dHBzOi8vZ2l0aHViLmNvbS9seGMvbHhjL2lzc3Vlcy8yNS4KLQotLS0tCi0gYXZhaGktZGFlbW9uL2F2YWhpLWRhZW1vbi5jb25mIHwgMSAtCi0gMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2F2YWhpLWRhZW1vbi9hdmFoaS1kYWVtb24uY29uZiBiL2F2YWhpLWRhZW1vbi9hdmFoaS1kYWVtb24uY29uZgotaW5kZXggOTUxNjZmOC4uM2Q1YjdhNiAxMDA2NDQKLS0tLSBhL2F2YWhpLWRhZW1vbi9hdmFoaS1kYWVtb24uY29uZgotKysrIGIvYXZhaGktZGFlbW9uL2F2YWhpLWRhZW1vbi5jb25mCi1AQCAtNjUsNCArNjUsMyBAQCBybGltaXQtZGF0YT00MTk0MzA0Ci0gcmxpbWl0LWZzaXplPTAKLSBybGltaXQtbm9maWxlPTc2OAotIHJsaW1pdC1zdGFjaz00MTk0MzA0Ci0tcmxpbWl0LW5wcm9jPTMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2ZpbGVzL2luaXRzY3JpcHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9maWxlcy9pbml0c2NyaXB0LnBhdGNoCmluZGV4IDE5Mzg4OWUuLmM4NTZjM2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2ZpbGVzL2luaXRzY3JpcHQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvZmlsZXMvaW5pdHNjcmlwdC5wYXRjaApAQCAtMSwxMCArMSwxMCBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLWRpZmYgLS1naXQgYS9pbml0c2NyaXB0L2RlYmlhbi9hdmFoaS1kYWVtb24uaW4gYi9pbml0c2NyaXB0L2RlYmlhbi9hdmFoaS1kYWVtb24uaW4KLWluZGV4IDMwYTJjMmYuLmI1ODQ4YTggMTAwNzU1Ci0tLS0gYS9pbml0c2NyaXB0L2RlYmlhbi9hdmFoaS1kYWVtb24uaW4KLSsrKyBiL2luaXRzY3JpcHQvZGViaWFuL2F2YWhpLWRhZW1vbi5pbgotQEAgLTEsMiArMSwxNCBAQAorSW5kZXg6IGF2YWhpLTAuNy9pbml0c2NyaXB0L2RlYmlhbi9hdmFoaS1kYWVtb24uaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhdmFoaS0wLjcub3JpZy9pbml0c2NyaXB0L2RlYmlhbi9hdmFoaS1kYWVtb24uaW4KKysrKyBhdmFoaS0wLjcvaW5pdHNjcmlwdC9kZWJpYW4vYXZhaGktZGFlbW9uLmluCitAQCAtMSw1ICsxLDE3IEBACiAgIyEvYmluL3NoCiAtCiArIyMjIEJFR0lOIElOSVQgSU5GTwpAQCAtMjAsMTEgKzIwLDE0IEBACiArIyAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseQogKyMjIyBFTkQgSU5JVCBJTkZPCiArIwotZGlmZiAtLWdpdCBhL2luaXRzY3JpcHQvZGViaWFuL2F2YWhpLWRuc2NvbmZkLmluIGIvaW5pdHNjcmlwdC9kZWJpYW4vYXZhaGktZG5zY29uZmQuaW4KLWluZGV4IGFjMzQ4MDQuLmY5NWMzNDAgMTAwNzU1Ci0tLS0gYS9pbml0c2NyaXB0L2RlYmlhbi9hdmFoaS1kbnNjb25mZC5pbgotKysrIGIvaW5pdHNjcmlwdC9kZWJpYW4vYXZhaGktZG5zY29uZmQuaW4KLUBAIC0xLDEgKzEsMTQgQEAKKyAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGF2YWhpLgorICMKKyAjIGF2YWhpIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKK0luZGV4OiBhdmFoaS0wLjcvaW5pdHNjcmlwdC9kZWJpYW4vYXZhaGktZG5zY29uZmQuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhdmFoaS0wLjcub3JpZy9pbml0c2NyaXB0L2RlYmlhbi9hdmFoaS1kbnNjb25mZC5pbgorKysrIGF2YWhpLTAuNy9pbml0c2NyaXB0L2RlYmlhbi9hdmFoaS1kbnNjb25mZC5pbgorQEAgLTEsNCArMSwxNyBAQAogICMhL2Jpbi9zaAogKyMjIyBCRUdJTiBJTklUIElORk8KICsjIFByb3ZpZGVzOiAgICAgICAgICBhdmFoaS1kbnNjb25mZApAQCAtMzksMyArNDIsNiBAQAogKyMgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkKICsjIyMgRU5EIElOSVQgSU5GTwogKyMKKyAKKyAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGF2YWhpLgorICMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjEwLjUtUDMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmRfOS4xMC41LVAzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzcyNGE4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjEwLjUtUDMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotU1VNTUFSWSA9ICJJU0MgSW50ZXJuZXQgRG9tYWluIE5hbWUgU2VydmVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5pc2Mub3JnL3N3L2JpbmQvIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi0KLUxJQ0VOU0UgPSAiSVNDICYgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT1kYmE0NjUwNzQ0NjE5ODExOWJjZGUzMmE0ZmVhYWI0MyIKLQotREVQRU5EUyA9ICJvcGVuc3NsIGxpYmNhcCIKLQotU1JDX1VSSSA9ICJodHRwczovL2Z0cC5pc2Mub3JnL2lzYy9iaW5kOS8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2NvbmYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFrZS1ldGMtaW5pdGQtYmluZC1zdG9wLXdvcmsucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZG9udC10ZXN0LW9uLWhvc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2VuZXJhdGUtcm5kYy1rZXkuc2ggXAotICAgICAgICAgICBmaWxlOi8vbmFtZWQuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9iaW5kOSBcCi0gICAgICAgICAgIGZpbGU6Ly9pbml0LmQtYWRkLXN1cHBvcnQtZm9yLXJlYWQtb25seS1yb290ZnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYmluZC1jb25mZ2VuLWJ1aWxkLXVuaXguby1vbmNlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtdXNlLXBrZy1jb25maWctdG8tZmluZC1saWJ4bWwyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2JpbmQtZW5zdXJlLXNlYXJjaGluZy1mb3ItanNvbi1oZWFkZXJzLXNlYXJjaGVzLXN5c3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1nZW4uYy1leHRlbmQtRElSTkFNRVNJWkUtZnJvbS0yNTYtdG8tNTEyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbGliLWRucy1nZW4uYy1maXgtdG9vLWxvbmctZXJyb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdXNlLXB5dGhvbjMtYW5kLWZpeC1pbnN0YWxsLWxpYi1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9mdHAuaXNjLm9yZy9pc2MvYmluZDkvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+OShcLlxkKykrKC1QXGQrKSopLyIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ3OWNhZmJkOWFjNzYyMzllZTUzMmRkODlkMDVjYzgzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhkN2U5NmI1YjBiYmFjN2I5MDBkNGM0YmJiODJlMDk1NmI0ZTUwOTQzM2M1ZmEzOTJiYjcyYTkyOWI5NjYwNmEiCi0KLUVOQUJMRV9JUFY2ID0gIi0tZW5hYmxlLWlwdjY9JHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJ3llcycsICdubycsIGQpfSIKLUVYVFJBX09FQ09ORiA9ICIgJHtFTkFCTEVfSVBWNn0gLS13aXRoLWxpYnRvb2wgLS1lbmFibGUtdGhyZWFkcyBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kZXZwb2xsIC0tZW5hYmxlLWVwb2xsIC0td2l0aC1nb3N0PW5vIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWdzc2FwaT1ubyAtLXdpdGgtZWNkc2E9eWVzIFwKLSAgICAgICAgICAgICAgICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vYmluZCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1vcGVuc3NsPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKLSAgICAgICAgICAgICAgICIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZCB1c2VyYWRkIHBrZ2NvbmZpZyBweXRob24zLWRpcgotCi1leHBvcnQgUFlUSE9OX1NJVEVQQUNLQUdFU19ESVIKLQotIyBQQUNLQUdFQ09ORklHcyByZWFkbGluZSBhbmQgbGliZWRpdCBzaG91bGQgTk9UIGJlIHNldCBhdCBzYW1lIHRpbWUKLVBBQ0tBR0VDT05GSUcgPz0gInJlYWRsaW5lIgotUEFDS0FHRUNPTkZJR1todHRwc3RhdHNdID0gIi0td2l0aC1saWJ4bWwyLC0td2l0aG91dC1saWJ4bWwyLGxpYnhtbDIiCi1QQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtcmVhZGxpbmU9LWxyZWFkbGluZSwscmVhZGxpbmUiCi1QQUNLQUdFQ09ORklHW2xpYmVkaXRdID0gIi0td2l0aC1yZWFkbGluZT0tbGVkaXQsLGxpYmVkaXQiCi1QQUNLQUdFQ09ORklHW3VyYW5kb21dID0gIi0td2l0aC1yYW5kb21kZXY9L2Rldi91cmFuZG9tLC0td2l0aC1yYW5kb21kZXY9L2Rldi9yYW5kb20sLCIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1ob21lICR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvYmluZCAtLW5vLWNyZWF0ZS1ob21lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLS11c2VyLWdyb3VwIGJpbmQiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJiaW5kIgotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJuYW1lZC5zZXJ2aWNlIgotCi1QQVJBTExFTF9NQUtFID0gIiIKLQotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1jb3JlIgotUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKLQotUEFDS0FHRV9CRUZPUkVfUE4gKz0gIiR7UE59LXV0aWxzIgotRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9L2hvc3QgJHtiaW5kaXJ9L2RpZyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2lzYy1jb25maWcuaCIKLUZJTEVTXyR7UE59ICs9ICIke3NiaW5kaXJ9L2dlbmVyYXRlLXJuZGMta2V5LnNoICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotCi1kb19pbnN0YWxsX3ByZXBlbmQoKSB7Ci0JIyBjbGVhbiBob3N0IHBhdGggaW4gaXNjLWNvbmZpZy5zaCBiZWZvcmUgdGhlIGhhcmRsaW5rIGNyZWF0ZWQKLQkjIGJ5ICJtYWtlIGluc3RhbGwiOgotCSMgICBiaW5kOS1jb25maWcgLT4gaXNjLWNvbmZpZy5zaAotCXNlZCAtaSAtZSAicywke1NUQUdJTkdfTElCRElSfSwke2xpYmRpcn0sIiAke0J9L2lzYy1jb25maWcuc2gKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jcm0gIiR7RH0ke2JpbmRpcn0vbnNsb29rdXAiCi0Jcm0gIiR7RH0ke21hbmRpcn0vbWFuMS9uc2xvb2t1cC4xIgotCXJtZGlyICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCi0Jcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9IgotCWluc3RhbGwgLWQgLW8gYmluZCAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvYmluZCIKLQlpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9iaW5kIgotCWluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCIKLQlpbnN0YWxsIC1tIDY0NCAke1N9L2NvbmYvKiAiJHtEfSR7c3lzY29uZmRpcn0vYmluZC8iCi0JaW5zdGFsbCAtbSA3NTUgIiR7U30vaW5pdC5kIiAiJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2JpbmQiCi0Jc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uMywjISAvdXNyL2Jpbi9weXRob24zLCcgJHtEfSR7c2JpbmRpcn0vZG5zc2VjLWNvdmVyYWdlICR7RH0ke3NiaW5kaXJ9L2Ruc3NlYy1jaGVja2RzCi0KLQkjIEluc3RhbGwgc3lzdGVtZCByZWxhdGVkIGZpbGVzCi0JaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQotCWluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vZ2VuZXJhdGUtcm5kYy1rZXkuc2ggJHtEfSR7c2JpbmRpcn0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmFtZWQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKLQkgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAotCSAgICAgICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9uYW1lZC5zZXJ2aWNlCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9iaW5kOSAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0Ci0KLQlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKLQkJZWNobyAiZCAvcnVuL25hbWVkIDA3NTUgYmluZCBiaW5kIC0gLSIgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL2JpbmQuY29uZgotCWZpCi0KLSAgICBybSAtZiAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vaXNjLyoucHljCi19Ci0KLUNPTkZGSUxFU18ke1BOfSA9ICIgXAotCSR7c3lzY29uZmRpcn0vYmluZC9uYW1lZC5jb25mIFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvbmFtZWQuY29uZi5sb2NhbCBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL25hbWVkLmNvbmYub3B0aW9ucyBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL2RiLjAgXAotCSR7c3lzY29uZmRpcn0vYmluZC9kYi4xMjcgXAotCSR7c3lzY29uZmRpcn0vYmluZC9kYi5lbXB0eSBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL2RiLmxvY2FsIFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvZGIucm9vdCBcCi0JIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmRfOS4xMC42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTAuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Yjg4MzViCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTAuNi5iYgpAQCAtMCwwICsxLDEyMyBAQAorU1VNTUFSWSA9ICJJU0MgSW50ZXJuZXQgRG9tYWluIE5hbWUgU2VydmVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5pc2Mub3JnL3N3L2JpbmQvIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCisKK0xJQ0VOU0UgPSAiSVNDICYgQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT1kYmE0NjUwNzQ0NjE5ODExOWJjZGUzMmE0ZmVhYWI0MyIKKworREVQRU5EUyA9ICJvcGVuc3NsIGxpYmNhcCIKKworU1JDX1VSSSA9ICJodHRwczovL2Z0cC5pc2Mub3JnL2lzYy9iaW5kOS8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2NvbmYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWFrZS1ldGMtaW5pdGQtYmluZC1zdG9wLXdvcmsucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZG9udC10ZXN0LW9uLWhvc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ2VuZXJhdGUtcm5kYy1rZXkuc2ggXAorICAgICAgICAgICBmaWxlOi8vbmFtZWQuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9iaW5kOSBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0LmQtYWRkLXN1cHBvcnQtZm9yLXJlYWQtb25seS1yb290ZnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYmluZC1jb25mZ2VuLWJ1aWxkLXVuaXguby1vbmNlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtdXNlLXBrZy1jb25maWctdG8tZmluZC1saWJ4bWwyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2JpbmQtZW5zdXJlLXNlYXJjaGluZy1mb3ItanNvbi1oZWFkZXJzLXNlYXJjaGVzLXN5c3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1nZW4uYy1leHRlbmQtRElSTkFNRVNJWkUtZnJvbS0yNTYtdG8tNTEyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGliLWRucy1nZW4uYy1maXgtdG9vLWxvbmctZXJyb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdXNlLXB5dGhvbjMtYW5kLWZpeC1pbnN0YWxsLWxpYi1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiODRlNjYzMjg0YjE3YWVlMGRmMWNlNmYyNDhiMTM3ZDciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTdiYmNkMmJkN2IxZDMyZjViYTRiMzBkNWRiZThhMzliY2UyMDAwNzkwNDgwNzNkMWUwZDA1MGZkZjQ3ZTY5ZCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZnRwLmlzYy5vcmcvaXNjL2JpbmQ5LyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPjkoXC5cZCspKygtUFxkKykqKS8iCisKKworRU5BQkxFX0lQVjYgPSAiLS1lbmFibGUtaXB2Nj0ke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCAneWVzJywgJ25vJywgZCl9IgorRVhUUkFfT0VDT05GID0gIiAke0VOQUJMRV9JUFY2fSAtLXdpdGgtbGlidG9vbCAtLWVuYWJsZS10aHJlYWRzIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRldnBvbGwgLS1lbmFibGUtZXBvbGwgLS13aXRoLWdvc3Q9bm8gXAorICAgICAgICAgICAgICAgICAtLXdpdGgtZ3NzYXBpPW5vIC0td2l0aC1lY2RzYT15ZXMgXAorICAgICAgICAgICAgICAgICAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfS9iaW5kIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLW9wZW5zc2w9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAorICAgICAgICAgICAgICAgIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kIHVzZXJhZGQgcGtnY29uZmlnIHB5dGhvbjMtZGlyCisKK2V4cG9ydCBQWVRIT05fU0lURVBBQ0tBR0VTX0RJUgorCisjIFBBQ0tBR0VDT05GSUdzIHJlYWRsaW5lIGFuZCBsaWJlZGl0IHNob3VsZCBOT1QgYmUgc2V0IGF0IHNhbWUgdGltZQorUEFDS0FHRUNPTkZJRyA/PSAicmVhZGxpbmUiCitQQUNLQUdFQ09ORklHW2h0dHBzdGF0c10gPSAiLS13aXRoLWxpYnhtbDIsLS13aXRob3V0LWxpYnhtbDIsbGlieG1sMiIKK1BBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aC1yZWFkbGluZT0tbHJlYWRsaW5lLCxyZWFkbGluZSIKK1BBQ0tBR0VDT05GSUdbbGliZWRpdF0gPSAiLS13aXRoLXJlYWRsaW5lPS1sZWRpdCwsbGliZWRpdCIKK1BBQ0tBR0VDT05GSUdbdXJhbmRvbV0gPSAiLS13aXRoLXJhbmRvbWRldj0vZGV2L3VyYW5kb20sLS13aXRoLXJhbmRvbWRldj0vZGV2L3JhbmRvbSwsIgorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtLWhvbWUgJHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9iaW5kIC0tbm8tY3JlYXRlLWhvbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAtLXVzZXItZ3JvdXAgYmluZCIKKworSU5JVFNDUklQVF9OQU1FID0gImJpbmQiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm5hbWVkLnNlcnZpY2UiCisKK1BBUkFMTEVMX01BS0UgPSAiIgorCitSREVQRU5EU18ke1BOfSA9ICJweXRob24zLWNvcmUiCitSREVQRU5EU18ke1BOfS1kZXYgPSAiIgorCitQQUNLQUdFX0JFRk9SRV9QTiArPSAiJHtQTn0tdXRpbHMiCitGSUxFU18ke1BOfS11dGlscyA9ICIke2JpbmRpcn0vaG9zdCAke2JpbmRpcn0vZGlnIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vaXNjLWNvbmZpZy5oIgorRklMRVNfJHtQTn0gKz0gIiR7c2JpbmRpcn0vZ2VuZXJhdGUtcm5kYy1rZXkuc2ggJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCisKK1BBQ0tBR0VfQkVGT1JFX1BOICs9ICIke1BOfS1saWJzIgorRklMRVNfJHtQTn0tbGlicyA9ICIke2xpYmRpcn0vKi5zbyoiCisKK2RvX2luc3RhbGxfcHJlcGVuZCgpIHsKKwkjIGNsZWFuIGhvc3QgcGF0aCBpbiBpc2MtY29uZmlnLnNoIGJlZm9yZSB0aGUgaGFyZGxpbmsgY3JlYXRlZAorCSMgYnkgIm1ha2UgaW5zdGFsbCI6CisJIyAgIGJpbmQ5LWNvbmZpZyAtPiBpc2MtY29uZmlnLnNoCisJc2VkIC1pIC1lICJzLCR7U1RBR0lOR19MSUJESVJ9LCR7bGliZGlyfSwiICR7Qn0vaXNjLWNvbmZpZy5zaAorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlybSAiJHtEfSR7YmluZGlyfS9uc2xvb2t1cCIKKwlybSAiJHtEfSR7bWFuZGlyfS9tYW4xL25zbG9va3VwLjEiCisJcm1kaXIgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKKwlybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0iCisJaW5zdGFsbCAtZCAtbyBiaW5kICIke0R9JHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9iaW5kIgorCWluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2JpbmQiCisJaW5zdGFsbCAtZCAiJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kIgorCWluc3RhbGwgLW0gNjQ0ICR7U30vY29uZi8qICIke0R9JHtzeXNjb25mZGlyfS9iaW5kLyIKKwlpbnN0YWxsIC1tIDc1NSAiJHtTfS9pbml0LmQiICIke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvYmluZCIKKwlzZWQgLWkgLWUgJzFzLCMhLipweXRob24zLCMhIC91c3IvYmluL3B5dGhvbjMsJyAke0R9JHtzYmluZGlyfS9kbnNzZWMtY292ZXJhZ2UgJHtEfSR7c2JpbmRpcn0vZG5zc2VjLWNoZWNrZHMKKworCSMgSW5zdGFsbCBzeXN0ZW1kIHJlbGF0ZWQgZmlsZXMKKwlpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9CisJaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9nZW5lcmF0ZS1ybmRjLWtleS5zaCAke0R9JHtzYmluZGlyfQorCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uYW1lZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAorCSAgICAgICAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisJICAgICAgICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL25hbWVkLnNlcnZpY2UKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2JpbmQ5ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorCQllY2hvICJkIC9ydW4vbmFtZWQgMDc1NSBiaW5kIGJpbmQgLSAtIiA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvYmluZC5jb25mCisJZmkKKworICAgIHJtIC1mICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9pc2MvKi5weWMKK30KKworQ09ORkZJTEVTXyR7UE59ID0gIiBcCisJJHtzeXNjb25mZGlyfS9iaW5kL25hbWVkLmNvbmYgXAorCSR7c3lzY29uZmRpcn0vYmluZC9uYW1lZC5jb25mLmxvY2FsIFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvbmFtZWQuY29uZi5vcHRpb25zIFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvZGIuMCBcCisJJHtzeXNjb25mZGlyfS9iaW5kL2RiLjEyNyBcCisJJHtzeXNjb25mZGlyfS9iaW5kL2RiLmVtcHR5IFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvZGIubG9jYWwgXAorCSR7c3lzY29uZmRpcn0vYmluZC9kYi5yb290IFwKKwkiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS5pbmMKaW5kZXggMTgwN2FhNy4uYWUyYTgzMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS5pbmMKQEAgLTYsNyArNiw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMmY4ODRkMmFlMWZmODdjMDllNWI3Y2NjMmM0Y2E3ZSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9ZmI1MDRiNjdjNTAzMzFmYzc4NzM0ZmVkOTBmYjBlMDkgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL21haW4uYztiZWdpbmxpbmU9MTtlbmRsaW5lPTI0O21kNT05YmM1NGI5M2NkN2UxN2JmMDNmNTI1MTNmMzlmOTI2ZSIKLURFUEVORFMgPSAidWRldiBkYnVzLWdsaWIgZ2xpYi0yLjAgbGliY2hlY2siCitERVBFTkRTID0gInVkZXYgZGJ1cy1nbGliIGdsaWItMi4wIgogUFJPVklERVMgKz0gImJsdWV6LWhjaWR1bXAiCiBSUFJPVklERVNfJHtQTn0gKz0gImJsdWV6LWhjaWR1bXAiCiAKQEAgLTQxLDYgKzQxLDcgQEAKIFBBQ0tBR0VDT05GSUdbdG9vbHNdID0gIi0tZW5hYmxlLXRvb2xzLC0tZGlzYWJsZS10b29scyIKIFBBQ0tBR0VDT05GSUdbdGhyZWFkc10gPSAiLS1lbmFibGUtdGhyZWFkcywtLWRpc2FibGUtdGhyZWFkcyIKIFBBQ0tBR0VDT05GSUdbZGVwcmVjYXRlZF0gPSAiLS1lbmFibGUtZGVwcmVjYXRlZCwtLWRpc2FibGUtZGVwcmVjYXRlZCIKK1BBQ0tBR0VDT05GSUdbbWVzaF0gPSAiLS1lbmFibGUtbWVzaCwtLWRpc2FibGUtbWVzaCwganNvbi1jIgogCiBTUkNfVVJJID0gIlwKICAgICAke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2JsdWV0b290aC9ibHVlei0ke1BWfS50YXIueHogXApAQCAtNDksMTQgKzUwLDEyIEBACiAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJycsICdmaWxlOi8vMDAwMS1BbGxvdy11c2luZy1vYmV4ZC13aXRob3V0LXN5c3RlbWQtaW4tdGhlLXVzZXItc2Vzc2lvLnBhdGNoJywgZCl9IFwKICAgICBmaWxlOi8vMDAwMS10ZXN0cy1hZGQtYS10YXJnZXQtZm9yLWJ1aWxkaW5nLXRlc3RzLXdpdGhvdXQtcnVubmluLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1oY2lhdHRhY2gtYmNtNDN4eC1maXgtdGhlLWRlbGF5LXRpbWVyLWZvci1maXJtd2FyZS1kLnBhdGNoIFwKLSAgICBmaWxlOi8vY3ZlLTIwMTctMTAwMDI1MC5wYXRjaCBcCiAiCiBTID0gIiR7V09SS0RJUn0vYmx1ZXotJHtQVn0iCiAKIENWRV9QUk9EVUNUID0gImJsdWV6IgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZCB1cGRhdGUtcmMuZCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgcHRlc3QKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kIHVwZGF0ZS1yYy5kIGRpc3Ryb19mZWF0dXJlc19jaGVjayBwdGVzdCBnb2JqZWN0LWludHJvc3BlY3Rpb24tZGF0YQogCiBFWFRSQV9PRUNPTkYgPSAiXAogICAtLWVuYWJsZS10ZXN0IFwKQEAgLTEzMCwxNCArMTI5LDEzIEBACiAKIEZJTEVTXyR7UE59LW5vaW5zdC10b29scyA9ICIke0BnZXRfbm9pbnN0X3Rvb2xzX3BhdGhzKGQsIGJiLCBkLmdldFZhcignTk9JTlNUX1RPT0xTJykpfSIKIAotUkRFUEVORFNfJHtQTn0tdGVzdHRvb2xzICs9ICJweXRob24zIHB5dGhvbjMtZGJ1cyBweXRob24zLXB5Z29iamVjdCIKK1JERVBFTkRTXyR7UE59LXRlc3R0b29scyArPSAicHl0aG9uMyBweXRob24zLWRidXMiCitSREVQRU5EU18ke1BOfS10ZXN0dG9vbHMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICdweXRob24zLXB5Z29iamVjdCcsICcnLCBkKX0iCiAKIFNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzeXN0ZW1kJywgJ2JsdWV0b290aC5zZXJ2aWNlJywgJycsIGQpfSIKIElOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0iCiBJTklUU0NSSVBUX05BTUVfJHtQTn0gPSAiYmx1ZXRvb3RoIgogCi1FWENMVURFX0ZST01fV09STEQgPSAiMSIKLQogZG9fY29tcGlsZV9wdGVzdCgpIHsKIAlvZV9ydW5tYWtlIGJ1aWxkdGVzdHMKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS1oY2lhdHRhY2gtYmNtNDN4eC1maXgtdGhlLWRlbGF5LXRpbWVyLWZvci1maXJtd2FyZS1kLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLWhjaWF0dGFjaC1iY200M3h4LWZpeC10aGUtZGVsYXktdGltZXItZm9yLWZpcm13YXJlLWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2Nzk0MzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLWhjaWF0dGFjaC1iY200M3h4LWZpeC10aGUtZGVsYXktdGltZXItZm9yLWZpcm13YXJlLWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIDNiMzQxZmI0MjFlZjYxZGI3NzgyYmYxMzE0ZWM2OTM4Mjg0NjdkZTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmR5IER1YW4gPGZ1Z2FuZy5kdWFuQG54cC5jb20+Ci1EYXRlOiBXZWQsIDIzIE5vdiAyMDE2IDE3OjEyOjEyICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGhjaWF0dGFjaDogYmNtNDN4eDogZml4IHRoZSBkZWxheSB0aW1lciBmb3IgZmlybXdhcmUgZG93bmxvYWQKLQotRnJvbSB0aGUgbG9nIGluIC5iY200M3h4X2xvYWRfZmlybXdhcmUoKToKLSAgICAgICAgLyogV2FpdCA1MG1zIHRvIGxldCB0aGUgZmlybXdhcmUgcGxhY2VkIGluIGRvd25sb2FkIG1vZGUgKi8KLSAgICAgICAgbmFub3NsZWVwKCZ0bV9tb2RlLCBOVUxMKTsKLQotQnV0IHRpbWVzcGVjIHRtX21vZGUgaXMgcmVhbCBpcyA1MHVzLiBDb3JyZWN0IHRoZSBkZWxheWVkIHRpbWVyIGNvdW50LgotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vYmx1ZXRvb3RoL2JsdWV6LmdpdC9jb21taXQvP2lkPTc2MjU1ZjczMmQ2OGFlZjJiOTBkMzZkOWM3YmU1MWE5ZTE3MzljZTddCi0KLVNpZ25lZC1vZmYtYnk6IEZ1Z2FuZyBEdWFuIDxmdWdhbmcuZHVhbkBueHAuY29tPgotLS0tCi0gdG9vbHMvaGNpYXR0YWNoX2JjbTQzeHguYyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90b29scy9oY2lhdHRhY2hfYmNtNDN4eC5jIGIvdG9vbHMvaGNpYXR0YWNoX2JjbTQzeHguYwotaW5kZXggODFmMzhjYi4uYWMxYjNjMSAxMDA2NDQKLS0tLSBhL3Rvb2xzL2hjaWF0dGFjaF9iY200M3h4LmMKLSsrKyBiL3Rvb2xzL2hjaWF0dGFjaF9iY200M3h4LmMKLUBAIC0yMjgsOCArMjI4LDggQEAgc3RhdGljIGludCBiY200M3h4X3NldF9zcGVlZChpbnQgZmQsIHN0cnVjdCB0ZXJtaW9zICp0aSwgdWludDMyX3Qgc3BlZWQpCi0gc3RhdGljIGludCBiY200M3h4X2xvYWRfZmlybXdhcmUoaW50IGZkLCBjb25zdCBjaGFyICpmdykKLSB7Ci0gCXVuc2lnbmVkIGNoYXIgY21kW10gPSB7IEhDSV9DT01NQU5EX1BLVCwgMHgyZSwgMHhmYywgMHgwMCB9OwotLQlzdHJ1Y3QgdGltZXNwZWMgdG1fbW9kZSA9IHsgMCwgNTAwMDAgfTsKLS0Jc3RydWN0IHRpbWVzcGVjIHRtX3JlYWR5ID0geyAwLCAyMDAwMDAwIH07Ci0rCXN0cnVjdCB0aW1lc3BlYyB0bV9tb2RlID0geyAwLCA1MDAwMDAwMCB9OwotKwlzdHJ1Y3QgdGltZXNwZWMgdG1fcmVhZHkgPSB7IDAsIDIwMDAwMDAwMCB9OwotIAl1bnNpZ25lZCBjaGFyIHJlc3BbQ0NfTUlOX1NJWkVdOwotIAl1bnNpZ25lZCBjaGFyIHR4X2J1ZlsxMDI0XTsKLSAJaW50IGxlbiwgZmRfZncsIG47Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvY3ZlLTIwMTctMTAwMDI1MC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvY3ZlLTIwMTctMTAwMDI1MC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWZhYzk2MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L2N2ZS0yMDE3LTEwMDAyNTAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1BbGwgdmVyc2lvbnMgb2YgdGhlIFNEUCBzZXJ2ZXIgaW4gQmx1ZVogNS40NiBhbmQgZWFybGllciBhcmUgdnVsbmVyYWJsZSB0byBhbgotaW5mb3JtYXRpb24gZGlzY2xvc3VyZSB2dWxuZXJhYmlsaXR5IHdoaWNoIGFsbG93cyByZW1vdGUgYXR0YWNrZXJzIHRvIG9idGFpbgotc2Vuc2l0aXZlIGluZm9ybWF0aW9uIGZyb20gdGhlIGJsdWV0b290aGQgcHJvY2VzcyBtZW1vcnkuIFRoaXMgdnVsbmVyYWJpbGl0eQotbGllcyBpbiB0aGUgcHJvY2Vzc2luZyBvZiBTRFAgc2VhcmNoIGF0dHJpYnV0ZSByZXF1ZXN0cy4KLQotQ1ZFOiBDVkUtMjAxNy0xMDAwMjUwCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDllMDA5NjQ3YjE0ZTgxMGUwNjYyNmRkZTdmMWJiOWVhM2MzNzVkMDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBMdWl6IEF1Z3VzdG8gdm9uIERlbnR6IDxsdWl6LnZvbi5kZW50ekBpbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDEzIFNlcCAyMDE3IDEwOjAxOjQwICswMzAwCi1TdWJqZWN0OiBzZHA6IEZpeCBPdXQtb2YtYm91bmRzIGhlYXAgcmVhZCBpbiBzZXJ2aWNlX3NlYXJjaF9hdHRyX3JlcSBmdW5jdGlvbgotCi1DaGVjayBpZiB0aGVyZSBpcyBlbm91Z2ggZGF0YSB0byBjb250aW51ZSBvdGhlcndpc2UgcmV0dXJuIGFuIGVycm9yLgotLS0tCi0gc3JjL3NkcGQtcmVxdWVzdC5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3NkcGQtcmVxdWVzdC5jIGIvc3JjL3NkcGQtcmVxdWVzdC5jCi1pbmRleCAxZWVmZGNlLi4zMThkMDQ0IDEwMDY0NAotLS0tIGEvc3JjL3NkcGQtcmVxdWVzdC5jCi0rKysgYi9zcmMvc2RwZC1yZXF1ZXN0LmMKLUBAIC05MTcsNyArOTE3LDcgQEAgc3RhdGljIGludCBzZXJ2aWNlX3NlYXJjaF9hdHRyX3JlcShzZHBfcmVxX3QgKnJlcSwgc2RwX2J1Zl90ICpidWYpCi0gCX0gZWxzZSB7Ci0gCQkvKiBjb250aW51YXRpb24gU3RhdGUgZXhpc3RzIC0+IGdldCBmcm9tIGNhY2hlICovCi0gCQlzZHBfYnVmX3QgKnBDYWNoZSA9IHNkcF9nZXRfY2FjaGVkX3JzcChjc3RhdGUpOwotLQkJaWYgKHBDYWNoZSkgewotKwkJaWYgKHBDYWNoZSAmJiBjc3RhdGUtPmNTdGF0ZVZhbHVlLm1heEJ5dGVzU2VudCA8IHBDYWNoZS0+ZGF0YV9zaXplKSB7Ci0gCQkJdWludDE2X3Qgc2VudCA9IE1JTihtYXgsIHBDYWNoZS0+ZGF0YV9zaXplIC0gY3N0YXRlLT5jU3RhdGVWYWx1ZS5tYXhCeXRlc1NlbnQpOwotIAkJCXBSZXNwb25zZSA9IHBDYWNoZS0+ZGF0YTsKLSAJCQltZW1jcHkoYnVmLT5kYXRhLCBwUmVzcG9uc2UgKyBjc3RhdGUtPmNTdGF0ZVZhbHVlLm1heEJ5dGVzU2VudCwgc2VudCk7Ci0tLSAKLWNnaXQgdjEuMQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV81LjQ2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV81LjQ2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWY4NTg3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS40Ni5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLXJlcXVpcmUgYmx1ZXo1LmluYwotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAiYmx1ZXo1IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTEzZjM1ZDZmYTRjYTU3NzJjNTNhZGI5MzZiZjE5NDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGRhYjNkMzgzN2MxYWZiOGFlMjI4YTk0YmExNzcwOWE0NjUwYmQ0ZGIyNDIxMWI2NzcxYWI3MzVjODkwOGUyOCIKLQotIyBub2luc3QgcHJvZ3JhbXMgaW4gTWFrZWZpbGUudG9vbHMgdGhhdCBhcmUgY29uZGl0aW9uYWwgb24gUkVBRExJTkUKLSMgc3VwcG9ydAotTk9JTlNUX1RPT0xTX1JFQURMSU5FID89ICIgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2RlcHJlY2F0ZWQnLCAnYXR0cmliL2dhdHR0b29sJywgJycsIGQpfSBcCi0gICAgdG9vbHMvb2JleC1jbGllbnQtdG9vbCBcCi0gICAgdG9vbHMvb2JleC1zZXJ2ZXItdG9vbCBcCi0gICAgdG9vbHMvYmx1ZXRvb3RoLXBsYXllciBcCi0gICAgdG9vbHMvb2JleGN0bCBcCi0gICAgdG9vbHMvYnRtZ210IFwKLSIKLQotIyBub2luc3QgcHJvZ3JhbXMgaW4gTWFrZWZpbGUudG9vbHMgdGhhdCBhcmUgY29uZGl0aW9uYWwgb24gVEVTVElORwotIyBzdXBwb3J0Ci1OT0lOU1RfVE9PTFNfVEVTVElORyA/PSAiIFwKLSAgICBlbXVsYXRvci9idHZpcnQgXAotICAgIGVtdWxhdG9yL2IxZWUgXAotICAgIGVtdWxhdG9yL2hmcCBcCi0gICAgcGVyaXBoZXJhbC9idHNlbnNvciBcCi0gICAgdG9vbHMvM2RzcCBcCi0gICAgdG9vbHMvbWdtdC10ZXN0ZXIgXAotICAgIHRvb2xzL2dhcC10ZXN0ZXIgXAotICAgIHRvb2xzL2wyY2FwLXRlc3RlciBcCi0gICAgdG9vbHMvc2NvLXRlc3RlciBcCi0gICAgdG9vbHMvc21wLXRlc3RlciBcCi0gICAgdG9vbHMvaGNpLXRlc3RlciBcCi0gICAgdG9vbHMvcmZjb21tLXRlc3RlciBcCi0gICAgdG9vbHMvYm5lcC10ZXN0ZXIgXAotICAgIHRvb2xzL3VzZXJjaGFuLXRlc3RlciBcCi0iCi0KLSMgbm9pbnN0IHByb2dyYW1zIGluIE1ha2VmaWxlLnRvb2xzIHRoYXQgYXJlIGNvbmRpdGlvbmFsIG9uIFRPT0xTCi0jIHN1cHBvcnQKLU5PSU5TVF9UT09MU19CVCA/PSAiIFwKLSAgICB0b29scy9iZGFkZHIgXAotICAgIHRvb2xzL2F2aW5mbyBcCi0gICAgdG9vbHMvYXZ0ZXN0IFwKLSAgICB0b29scy9zY290ZXN0IFwKLSAgICB0b29scy9hbXB0ZXN0IFwKLSAgICB0b29scy9od2RiIFwKLSAgICB0b29scy9oY2lldmVudG1hc2sgXAotICAgIHRvb2xzL2hjaXNlY2ZpbHRlciBcCi0gICAgdG9vbHMvYnRpbmZvIFwKLSAgICB0b29scy9idHNub29wIFwKLSAgICB0b29scy9idHByb3h5IFwKLSAgICB0b29scy9idGlvdGVzdCBcCi0gICAgdG9vbHMvYm5lcHRlc3QgXAotICAgIHRvb2xzL21jYXB0ZXN0IFwKLSAgICB0b29scy9jbHRlc3QgXAotICAgIHRvb2xzL29vYnRlc3QgXAotICAgIHRvb2xzL2FkdnRlc3QgXAotICAgIHRvb2xzL3NlcTJic2VxIFwKLSAgICB0b29scy9ub2tmdyBcCi0gICAgdG9vbHMvY3JlYXRlLWltYWdlIFwKLSAgICB0b29scy9lZGR5c3RvbmUgXAotICAgIHRvb2xzL2liZWFjb24gXAotICAgIHRvb2xzL2J0Z2F0dC1jbGllbnQgXAotICAgIHRvb2xzL2J0Z2F0dC1zZXJ2ZXIgXAotICAgIHRvb2xzL3Rlc3QtcnVubmVyIFwKLSAgICB0b29scy9jaGVjay1zZWxmdGVzdCBcCi0gICAgdG9vbHMvZ2F0dC1zZXJ2aWNlIFwKLSAgICBwcm9maWxlcy9pYXAvaWFwZCBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNDguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNDguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRhNmNkMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS40OC5iYgpAQCAtMCwwICsxLDY5IEBACityZXF1aXJlIGJsdWV6NS5pbmMKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gImJsdWV6NSIKKworU1JDX1VSSVttZDVzdW1dID0gImM5Yzg1M2YzYzkwNTY0Y2FiZWM3NWFiMzUxMDZjMzU1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI5YTg3MjMwNzJlZjY2YmFlN2VjMzAxYzc3NDkwMmViY2I0NDRjOWM1YjE0OWI1YTE5OWU2MGExYmE5NzBlOTAiCisKKyMgbm9pbnN0IHByb2dyYW1zIGluIE1ha2VmaWxlLnRvb2xzIHRoYXQgYXJlIGNvbmRpdGlvbmFsIG9uIFJFQURMSU5FCisjIHN1cHBvcnQKK05PSU5TVF9UT09MU19SRUFETElORSA/PSAiIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdkZXByZWNhdGVkJywgJ2F0dHJpYi9nYXR0dG9vbCcsICcnLCBkKX0gXAorICAgIHRvb2xzL29iZXgtY2xpZW50LXRvb2wgXAorICAgIHRvb2xzL29iZXgtc2VydmVyLXRvb2wgXAorICAgIHRvb2xzL2JsdWV0b290aC1wbGF5ZXIgXAorICAgIHRvb2xzL29iZXhjdGwgXAorICAgIHRvb2xzL2J0bWdtdCBcCisiCisKKyMgbm9pbnN0IHByb2dyYW1zIGluIE1ha2VmaWxlLnRvb2xzIHRoYXQgYXJlIGNvbmRpdGlvbmFsIG9uIFRFU1RJTkcKKyMgc3VwcG9ydAorTk9JTlNUX1RPT0xTX1RFU1RJTkcgPz0gIiBcCisgICAgZW11bGF0b3IvYnR2aXJ0IFwKKyAgICBlbXVsYXRvci9iMWVlIFwKKyAgICBlbXVsYXRvci9oZnAgXAorICAgIHBlcmlwaGVyYWwvYnRzZW5zb3IgXAorICAgIHRvb2xzLzNkc3AgXAorICAgIHRvb2xzL21nbXQtdGVzdGVyIFwKKyAgICB0b29scy9nYXAtdGVzdGVyIFwKKyAgICB0b29scy9sMmNhcC10ZXN0ZXIgXAorICAgIHRvb2xzL3Njby10ZXN0ZXIgXAorICAgIHRvb2xzL3NtcC10ZXN0ZXIgXAorICAgIHRvb2xzL2hjaS10ZXN0ZXIgXAorICAgIHRvb2xzL3JmY29tbS10ZXN0ZXIgXAorICAgIHRvb2xzL2JuZXAtdGVzdGVyIFwKKyAgICB0b29scy91c2VyY2hhbi10ZXN0ZXIgXAorIgorCisjIG5vaW5zdCBwcm9ncmFtcyBpbiBNYWtlZmlsZS50b29scyB0aGF0IGFyZSBjb25kaXRpb25hbCBvbiBUT09MUworIyBzdXBwb3J0CitOT0lOU1RfVE9PTFNfQlQgPz0gIiBcCisgICAgdG9vbHMvYmRhZGRyIFwKKyAgICB0b29scy9hdmluZm8gXAorICAgIHRvb2xzL2F2dGVzdCBcCisgICAgdG9vbHMvc2NvdGVzdCBcCisgICAgdG9vbHMvYW1wdGVzdCBcCisgICAgdG9vbHMvaHdkYiBcCisgICAgdG9vbHMvaGNpZXZlbnRtYXNrIFwKKyAgICB0b29scy9oY2lzZWNmaWx0ZXIgXAorICAgIHRvb2xzL2J0aW5mbyBcCisgICAgdG9vbHMvYnRzbm9vcCBcCisgICAgdG9vbHMvYnRwcm94eSBcCisgICAgdG9vbHMvYnRpb3Rlc3QgXAorICAgIHRvb2xzL2JuZXB0ZXN0IFwKKyAgICB0b29scy9tY2FwdGVzdCBcCisgICAgdG9vbHMvY2x0ZXN0IFwKKyAgICB0b29scy9vb2J0ZXN0IFwKKyAgICB0b29scy9hZHZ0ZXN0IFwKKyAgICB0b29scy9zZXEyYnNlcSBcCisgICAgdG9vbHMvbm9rZncgXAorICAgIHRvb2xzL2NyZWF0ZS1pbWFnZSBcCisgICAgdG9vbHMvZWRkeXN0b25lIFwKKyAgICB0b29scy9pYmVhY29uIFwKKyAgICB0b29scy9idGdhdHQtY2xpZW50IFwKKyAgICB0b29scy9idGdhdHQtc2VydmVyIFwKKyAgICB0b29scy90ZXN0LXJ1bm5lciBcCisgICAgdG9vbHMvY2hlY2stc2VsZnRlc3QgXAorICAgIHRvb2xzL2dhdHQtc2VydmljZSBcCisgICAgcHJvZmlsZXMvaWFwL2lhcGQgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDEtZmlyZXdhbGwtbmZ0YWJsZXMtZml4LWJ1aWxkLXdpdGgtbGlibmZ0bmwtMS4wLjcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1maXJld2FsbC1uZnRhYmxlcy1maXgtYnVpbGQtd2l0aC1saWJuZnRubC0xLjAuNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ZhZmJkMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1maXJld2FsbC1uZnRhYmxlcy1maXgtYnVpbGQtd2l0aC1saWJuZnRubC0xLjAuNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLUZyb20gNDA1OGNlMzE4NmE5OWZkNWYwMzM1MGZjMTFhN2ZjOGQzOGI2YTM4MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJNYXhpbiBCLiBKb2huIiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci1EYXRlOiBNb24sIDggTWF5IDIwMTcgMTA6NTM6MTggKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gZmlyZXdhbGwtbmZ0YWJsZXM6IGZpeCBidWlsZCB3aXRoIGxpYm5mdG5sLTEuMC43Ci0KLVdlIG5lZWQgdGhlc2UgdXBkYXRlcyB0byBhY2NvbW1vZGF0ZSB0aGUgY2hhbmdlcyBjYXVzZWQgYnkgdGhlIGZvbGxvd2luZwotY29tbWl0IGluIGxpYm5mdG5sLTEuMC43Ci0KLWNvbW1pdCA5MDdhOWY4ZTVhOTNmNWJjZDQ0OTY0M2ViMzkxNmE2NTZkNjM0NzU4Ci1BdXRob3I6IFBhYmxvIE5laXJhIEF5dXNvIDxwYWJsb0BuZXRmaWx0ZXIub3JnPgotRGF0ZTogICBUdWUgRGVjIDIwIDEzOjQ3OjExIDIwMTYgKzAxMDAKLQotc3JjOiBnZXQgcmlkIG9mIGFsaWFzZXMgYW5kIGNvbXBhdAotCi1UaGlzIG1hY2hpbmVyeSB3YXMgaW50cm9kdWNlZCB0byBhdm9pZCBzdWRkZW4gY29tcGlsYXRpb24gYnJlYWthZ2Ugb2YKLW9sZCBuZnRhYmxlcyByZWxlYXNlcy4gV2l0aCB0aGUgdXBjb21pbmcgcmVsZWFzZSBvZiAwLjcgKGFuZCAwLjYgd2hpY2gKLWlzIG5vdyA2IG1vbnRocyBvbGQpIHRoaXMgaXMgbm90IHJlcXVpcmVkIGFueW1vcmUuCi0KLU1vcmVvdmVyLCB1c2VycyBnYWluIG5vdGhpbmcgZnJvbSBvbGRlciByZWxlYXNlcyBzaW5jZSB0aGV5IGFyZQotaGFsZi1ib2lsZWQgYW5kIGJ1Z2d5LgotCi1TbyBsZXQncyBnZXQgcmlkIG9mIGFsaWFzZXMgbm93LiBCdW1wIExJQlZFUlNJT04gYW5kIHVwZGF0ZSBtYXAgZmlsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLSBzcmMvZmlyZXdhbGwtbmZ0YWJsZXMuYyB8IDE0ICsrKysrKystLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9maXJld2FsbC1uZnRhYmxlcy5jIGIvc3JjL2ZpcmV3YWxsLW5mdGFibGVzLmMKLWluZGV4IDU4M2QxYzQuLjgzYjEzN2IgMTAwNjQ0Ci0tLS0gYS9zcmMvZmlyZXdhbGwtbmZ0YWJsZXMuYwotKysrIGIvc3JjL2ZpcmV3YWxsLW5mdGFibGVzLmMKLUBAIC0zODcsOSArMzg3LDkgQEAgc3RhdGljIGludCBhZGRfY21wKHN0cnVjdCBuZnRubF9ydWxlICpydWxlLCB1aW50MzJfdCBzcmVnLCB1aW50MzJfdCBvcCwKLSAgICAgICAgIGlmICghZXhwcikKLSAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Ci0gCi0tICAgICAgICBuZnRubF9leHByX3NldF91MzIoZXhwciwgTkZUX0VYUFJfQ01QX1NSRUcsIHNyZWcpOwotLSAgICAgICAgbmZ0bmxfZXhwcl9zZXRfdTMyKGV4cHIsIE5GVF9FWFBSX0NNUF9PUCwgb3ApOwotLSAgICAgICAgbmZ0bmxfZXhwcl9zZXQoZXhwciwgTkZUX0VYUFJfQ01QX0RBVEEsIGRhdGEsIGRhdGFfbGVuKTsKLSsgICAgICAgIG5mdG5sX2V4cHJfc2V0X3UzMihleHByLCBORlROTF9FWFBSX0NNUF9TUkVHLCBzcmVnKTsKLSsgICAgICAgIG5mdG5sX2V4cHJfc2V0X3UzMihleHByLCBORlROTF9FWFBSX0NNUF9PUCwgb3ApOwotKyAgICAgICAgbmZ0bmxfZXhwcl9zZXQoZXhwciwgTkZUTkxfRVhQUl9DTVBfREFUQSwgZGF0YSwgZGF0YV9sZW4pOwotIAotICAgICAgICAgbmZ0bmxfcnVsZV9hZGRfZXhwcihydWxlLCBleHByKTsKLSAKLUBAIC01NzUsOCArNTc1LDggQEAgc3RhdGljIGludCBidWlsZF9ydWxlX25hdChjb25zdCBjaGFyICphZGRyZXNzLCB1bnNpZ25lZCBjaGFyIHByZWZpeGxlbiwKLSAJZXhwciA9IG5mdG5sX2V4cHJfYWxsb2MoIm1ldGEiKTsKLSAJaWYgKCFleHByKQotIAkJZ290byBlcnI7Ci0tCW5mdG5sX2V4cHJfc2V0X3UzMihleHByLCBORlRfRVhQUl9NRVRBX0tFWSwgTkZUX01FVEFfT0lGTkFNRSk7Ci0tCW5mdG5sX2V4cHJfc2V0X3UzMihleHByLCBORlRfRVhQUl9NRVRBX0RSRUcsIE5GVF9SRUdfMSk7Ci0rCW5mdG5sX2V4cHJfc2V0X3UzMihleHByLCBORlROTF9FWFBSX01FVEFfS0VZLCBORlRfTUVUQV9PSUZOQU1FKTsKLSsJbmZ0bmxfZXhwcl9zZXRfdTMyKGV4cHIsIE5GVE5MX0VYUFJfTUVUQV9EUkVHLCBORlRfUkVHXzEpOwotIAluZnRubF9ydWxlX2FkZF9leHByKHJ1bGUsIGV4cHIpOwotIAllcnIgPSBhZGRfY21wKHJ1bGUsIE5GVF9SRUdfMSwgTkZUX0NNUF9FUSwgaW50ZXJmYWNlLAotIAkJCXN0cmxlbihpbnRlcmZhY2UpICsgMSk7Ci1AQCAtNjc3LDggKzY3Nyw4IEBAIHN0YXRpYyBpbnQgYnVpbGRfcnVsZV9zbmF0KGludCBpbmRleCwgY29uc3QgY2hhciAqYWRkcmVzcywKLSAJZXhwciA9IG5mdG5sX2V4cHJfYWxsb2MoIm1ldGEiKTsKLSAJaWYgKCFleHByKQotIAkJZ290byBlcnI7Ci0tCW5mdG5sX2V4cHJfc2V0X3UzMihleHByLCBORlRfRVhQUl9NRVRBX0tFWSwgTkZUX01FVEFfT0lGKTsKLS0JbmZ0bmxfZXhwcl9zZXRfdTMyKGV4cHIsIE5GVF9FWFBSX01FVEFfRFJFRywgTkZUX1JFR18xKTsKLSsJbmZ0bmxfZXhwcl9zZXRfdTMyKGV4cHIsIE5GVE5MX0VYUFJfTUVUQV9LRVksIE5GVF9NRVRBX09JRik7Ci0rCW5mdG5sX2V4cHJfc2V0X3UzMihleHByLCBORlROTF9FWFBSX01FVEFfRFJFRywgTkZUX1JFR18xKTsKLSAJbmZ0bmxfcnVsZV9hZGRfZXhwcihydWxlLCBleHByKTsKLSAJZXJyID0gYWRkX2NtcChydWxlLCBORlRfUkVHXzEsIE5GVF9DTVBfRVEsICZpbmRleCwgc2l6ZW9mKGluZGV4KSk7Ci0gCWlmIChlcnIgPCAwKQotLS0gCi0yLjQuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1naW9nbnV0bHMtRml4LWEtY3Jhc2gtdXNpbmctd2lzcHItb3Zlci1UTFMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1naW9nbnV0bHMtRml4LWEtY3Jhc2gtdXNpbmctd2lzcHItb3Zlci1UTFMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkwODBkNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAxLWdpb2dudXRscy1GaXgtYS1jcmFzaC11c2luZy13aXNwci1vdmVyLVRMUy5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIDkyOWZjOWI3MDY4MTAwNDQ0ZTBmZmNjY2QyNTg0MWY3ODc5MWU2MTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKaWFuIExpYW5nIDxqaWFubGlhbmdAdHljb2ludC5jb20+CitEYXRlOiBGcmksIDE1IFNlcCAyMDE3IDA2OjQwOjA4IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIGd3ZWI6IEZpeCBhIGNyYXNoIHVzaW5nIHdpc3ByIG92ZXIgVExTCitUbzogY29ubm1hbkBsaXN0cy4wMS5vcmcKK0NjOiB3YWdpQG1vbm9tLm9yZworCitXaGVuIGdudXRsc19jaGFubmVsIGlzIGluc3RhbnRpYXRlZCwgdGhlIGdudXRsc19jaGFubmVsLT5lc3RhYmxpc2hlZAoraGFzIHRvIGJlIGluaXRpYXRlZCBhcyBGQUxTRS4gT3RoZXJ3aXNlLCBjaGVja19oYW5kc2hha2UgZnVuY3Rpb24KK3dvbid0IHdvcmsuIEEgcmFuZG9tIGluaXRpYWwgdmFsdWUgMSBvZiBnbnV0bHNfY2hhbm5lbC0+ZXN0YWJsaXNoZWQKK3dpbGwgbWFrZSBjaGVja19oYW5kc2hha2UgcmV0dXJuIEdfSU9fU1RBVFVTX05PUk1BTCwgd2hlbiB0aGUgY2hhbm5lbAoraXMgYWN0dWFsbHkgbm90IHJlYWR5IHRvIGJlIHVzZWQuIFRoZSBvYnNlcnZlZCBiZWhhdmlvdXJzIGFyZSwKKworLSB3aXNwciBpcyBnZXR0aW5nIHJhbmRvbSBlcnJvcnMgaW4gd2lzcHJfcG9ydGFsX3dlYl9yZXN1bHQKKy0gQ29ubk1hbiBjcmFzaGVzIG9uIGV4aXQgYWZ0ZXIgdGhvc2UgcmFuZG9tIGVycm9ycworLSB3aGVuIHdpc3ByIGlzIGx1Y2tseSB3b3JraW5nLCBDb25uTWFuIGRvZXNuJ3QgY3Jhc2ggb24gZXhpdAorCitTaWduZWQtb2ZmLWJ5OiBKaWFuIExpYW5nIDxqaWFubGlhbmdAdHljb2ludC5jb20+CisKKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL25ldHdvcmsvY29ubm1hbi9jb25ubWFuLmdpdC9jb21taXQvP2lkPTczZTUzZjNiZDllN2RlYmFlODYzNDFmMWVlZTdiOTc4NjJhNTZhNWVdCitTaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8YW5kcmUuZHJhc3ppa0BqY2kuY29tPgorIGd3ZWIvZ2lvZ251dGxzLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nd2ViL2dpb2dudXRscy5jIGIvZ3dlYi9naW9nbnV0bHMuYworaW5kZXggMDlkYzllNy4uYzAyOWE4YiAxMDA2NDQKKy0tLSBhL2d3ZWIvZ2lvZ251dGxzLmMKKysrKyBiL2d3ZWIvZ2lvZ251dGxzLmMKK0BAIC00MjEsNyArNDIxLDcgQEAgR0lPQ2hhbm5lbCAqZ19pb19jaGFubmVsX2dudXRsc19uZXcoaW50IGZkKQorIAorIAlEQkcoIiIpOworIAorLQlnbnV0bHNfY2hhbm5lbCA9IGdfbmV3KEdJT0dudVRMU0NoYW5uZWwsIDEpOworKwlnbnV0bHNfY2hhbm5lbCA9IGdfbmV3MChHSU9HbnVUTFNDaGFubmVsLCAxKTsKKyAKKyAJY2hhbm5lbCA9IChHSU9DaGFubmVsICopIGdudXRsc19jaGFubmVsOworIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1pbmV0LUFkZC1wcmVmaXhsZW4tdG8taXByb3V0ZV9kZWZhdWx0X2Z1bmN0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDEtaW5ldC1BZGQtcHJlZml4bGVuLXRvLWlwcm91dGVfZGVmYXVsdF9mdW5jdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDdiMzU2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDEtaW5ldC1BZGQtcHJlZml4bGVuLXRvLWlwcm91dGVfZGVmYXVsdF9mdW5jdGlvbi5wYXRjaApAQCAtMCwwICsxLDYzIEBACitGcm9tIDUwOGRjNjBhMWYwNzU4ZWJjNTg2YjZiMDg2NDc4YTE3NmQ0OTMwODYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKaWFuIExpYW5nIDxqaWFubGlhbmdAdHljb2ludC5jb20+CitEYXRlOiBUaHUsIDUgT2N0IDIwMTcgMDk6MzQ6NDEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzRdIGluZXQ6IEFkZCBwcmVmaXhsZW4gdG8gaXByb3V0ZV9kZWZhdWx0X2Z1bmN0aW9uCitUbzogY29ubm1hbkBsaXN0cy4wMS5vcmcKK0NjOiB3YWdpQG1vbm9tLm9yZworCitBZGQgcHJlZml4bGVuIHBhcmFtZXRlciB0byB0aGlzIGZ1bmN0aW9uIGluIHByZXBhcmF0aW9uIGZvciB1c2luZworaXQgYWxzbyBpbiBjcmVhdGluZyBzdWJuZXQgcm91dGUgbGF0ZXIsIGUuZy4KKworZGVmYXVsdCB2aWEgMTkyLjE2OC4xMDAuMSBkZXYgZXRoMAorMTkyLjE2OC4xMDAuMC8yNCBkZXYgZXRoMAorCitTaWduZWQtb2ZmLWJ5OiBKaWFuIExpYW5nIDxqaWFubGlhbmdAdHljb2ludC5jb20+CisKKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL25ldHdvcmsvY29ubm1hbi9jb25ubWFuLmdpdC9jb21taXQvP2lkPWVkZGE1YjY5NWRlMmVlNzlmMDIzMTRhYmM5YjQ2ZmRkNDZiMzg4ZTFdCitTaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8YW5kcmUuZHJhc3ppa0BqY2kuY29tPgorIHNyYy9pbmV0LmMgfCA3ICsrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2luZXQuYyBiL3NyYy9pbmV0LmMKK2luZGV4IGI4ODdhYTAuLmFiOGFlYzggMTAwNjQ0CistLS0gYS9zcmMvaW5ldC5jCisrKysgYi9zcmMvaW5ldC5jCitAQCAtMjc5Niw3ICsyNzk2LDcgQEAgaW50IF9fY29ubm1hbl9pbmV0X2RlbF9md21hcmtfcnVsZSh1aW50MzJfdCB0YWJsZV9pZCwgaW50IGZhbWlseSwgdWludDMyX3QgZndtYXIKKyB9CisgCisgc3RhdGljIGludCBpcHJvdXRlX2RlZmF1bHRfbW9kaWZ5KGludCBjbWQsIHVpbnQzMl90IHRhYmxlX2lkLCBpbnQgaWZpbmRleCwKKy0JCQljb25zdCBjaGFyICpnYXRld2F5KQorKwkJCWNvbnN0IGNoYXIgKmdhdGV3YXksIHVuc2lnbmVkIGNoYXIgcHJlZml4bGVuKQorIHsKKyAJc3RydWN0IF9fY29ubm1hbl9pbmV0X3J0bmxfaGFuZGxlIHJ0aDsKKyAJdW5zaWduZWQgY2hhciBidWZbc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcildOworQEAgLTI4MjksNiArMjgyOSw3IEBAIHN0YXRpYyBpbnQgaXByb3V0ZV9kZWZhdWx0X21vZGlmeShpbnQgY21kLCB1aW50MzJfdCB0YWJsZV9pZCwgaW50IGlmaW5kZXgsCisgCXJ0aC5yZXEudS5yLnJ0LnJ0bV9wcm90b2NvbCA9IFJUUFJPVF9CT09UOworIAlydGgucmVxLnUuci5ydC5ydG1fc2NvcGUgPSBSVF9TQ09QRV9VTklWRVJTRTsKKyAJcnRoLnJlcS51LnIucnQucnRtX3R5cGUgPSBSVE5fVU5JQ0FTVDsKKysJcnRoLnJlcS51LnIucnQucnRtX2RzdF9sZW4gPSBwcmVmaXhsZW47CisgCisgCV9fY29ubm1hbl9pbmV0X3J0bmxfYWRkYXR0cl9sKCZydGgucmVxLm4sIHNpemVvZihydGgucmVxKSwgUlRBX0dBVEVXQVksCisgCQkJCQkJCQlidWYsIGxlbik7CitAQCAtMjg2MCw3ICsyODYxLDcgQEAgaW50IF9fY29ubm1hbl9pbmV0X2FkZF9kZWZhdWx0X3RvX3RhYmxlKHVpbnQzMl90IHRhYmxlX2lkLCBpbnQgaWZpbmRleCwKKyB7CisgCS8qIGlwIHJvdXRlIGFkZCBkZWZhdWx0IHZpYSAxLjIuMy40IGRldiB3bGFuMCB0YWJsZSAxMjM0ICovCisgCistCXJldHVybiBpcHJvdXRlX2RlZmF1bHRfbW9kaWZ5KFJUTV9ORVdST1VURSwgdGFibGVfaWQsIGlmaW5kZXgsIGdhdGV3YXkpOworKwlyZXR1cm4gaXByb3V0ZV9kZWZhdWx0X21vZGlmeShSVE1fTkVXUk9VVEUsIHRhYmxlX2lkLCBpZmluZGV4LCBnYXRld2F5LCAwKTsKKyB9CisgCisgaW50IF9fY29ubm1hbl9pbmV0X2RlbF9kZWZhdWx0X2Zyb21fdGFibGUodWludDMyX3QgdGFibGVfaWQsIGludCBpZmluZGV4LAorQEAgLTI4NjgsNyArMjg2OSw3IEBAIGludCBfX2Nvbm5tYW5faW5ldF9kZWxfZGVmYXVsdF9mcm9tX3RhYmxlKHVpbnQzMl90IHRhYmxlX2lkLCBpbnQgaWZpbmRleCwKKyB7CisgCS8qIGlwIHJvdXRlIGRlbCBkZWZhdWx0IHZpYSAxLjIuMy40IGRldiB3bGFuMCB0YWJsZSAxMjM0ICovCisgCistCXJldHVybiBpcHJvdXRlX2RlZmF1bHRfbW9kaWZ5KFJUTV9ERUxST1VURSwgdGFibGVfaWQsIGlmaW5kZXgsIGdhdGV3YXkpOworKwlyZXR1cm4gaXByb3V0ZV9kZWZhdWx0X21vZGlmeShSVE1fREVMUk9VVEUsIHRhYmxlX2lkLCBpZmluZGV4LCBnYXRld2F5LCAwKTsKKyB9CisgCisgaW50IF9fY29ubm1hbl9pbmV0X2dldF9pbnRlcmZhY2VfbGxfYWRkcmVzcyhpbnQgaW5kZXgsIGludCBmYW1pbHksCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAxLXNlc3Npb24tS2VlcC10cmFjay1vZi1hZGRyLWluLWZ3X3NuYXQtc2Vzc2lvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAxLXNlc3Npb24tS2VlcC10cmFjay1vZi1hZGRyLWluLWZ3X3NuYXQtc2Vzc2lvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWI0ZDBhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDEtc2Vzc2lvbi1LZWVwLXRyYWNrLW9mLWFkZHItaW4tZndfc25hdC1zZXNzaW9uLnBhdGNoCkBAIC0wLDAgKzEsMTEyIEBACitGcm9tIGI1ZmQ1OTQ1ODg2ZmExODQ1ZGI1Yzk2OTQyNGI2M2Q4OTRmZTAzNzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKaWFuIExpYW5nIDxqaWFubGlhbmdAdHljb2ludC5jb20+CitEYXRlOiBGcmksIDI1IEF1ZyAyMDE3IDEwOjAyOjE2IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBzZXNzaW9uOiBLZWVwIHRyYWNrIG9mIGFkZHIgaW4gZndfc25hdCAmIHNlc3Npb24KK1RvOiBjb25ubWFuQGxpc3RzLjAxLm9yZworQ2M6IHdhZ2lAbW9ub20ub3JnCisKK1doZW4gdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBzZXNzaW9uIGluIGZ3X3NuYXQncyBsaXN0IG9mIHNlc3Npb25zLAorZndfc25hdCBmYWlsZWQgdG8gYmUgcmUtY3JlYXRlZCB3aGVuIHVwZGF0ZS1zZXNzaW9uLXN0YXRlIGlzIHRyaWdnZXJlZAord2l0aCBuZXcgSVAgYWRkcmVzcy4gVGhpcyBpcyBiZWNhdXNlIGluZGV4IGFsb25lIGlzIG5vdCBzdWZmaWNpZW50IHRvCitkZWNpZGUgaWYgZndfc25hdCBuZWVkcyB0byBiZSByZS1jcmVhdGVkLiBUaGUgc29sdXRpb24gaGVyZSBpcyB0byBrZWVwCithIHRyYWNrIG9mIElQIGFkZHIgYW5kIHVzZSBpdCB0byBhdm9pZCBmYWxzZSBsb29rdXAgb2YgZndfc25hdC4KKworU2lnbmVkLW9mZi1ieTogSmlhbiBMaWFuZyA8amlhbmxpYW5nQHR5Y29pbnQuY29tPgorCistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9uZXR3b3JrL2Nvbm5tYW4vY29ubm1hbi5naXQvY29tbWl0Lz9pZD1mOWUyN2Q0YWJmY2FiNWM4MGEzOGUwODUwYjVkZGIyNjI3N2Y5N2MxXQorU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFuZHJlLmRyYXN6aWtAamNpLmNvbT4KKyBzcmMvc2Vzc2lvbi5jIHwgMTkgKysrKysrKysrKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3Nlc3Npb24uYyBiL3NyYy9zZXNzaW9uLmMKK2luZGV4IDllM2M1NTkuLjk2NWFjMDYgMTAwNjQ0CistLS0gYS9zcmMvc2Vzc2lvbi5jCisrKysgYi9zcmMvc2Vzc2lvbi5jCitAQCAtNjUsNiArNjUsNyBAQCBzdHJ1Y3QgY29ubm1hbl9zZXNzaW9uIHsKKyAJc3RydWN0IGZpcmV3YWxsX2NvbnRleHQgKmZ3OworIAl1aW50MzJfdCBtYXJrOworIAlpbnQgaW5kZXg7CisrCWNoYXIgKmFkZHI7CisgCWNoYXIgKmdhdGV3YXk7CisgCWJvb2wgcG9saWN5X3JvdXRpbmc7CisgCWJvb2wgc25hdF9lbmFibGVkOworQEAgLTc5LDYgKzgwLDcgQEAgc3RydWN0IGZ3X3NuYXQgeworIAlHU0xpc3QgKnNlc3Npb25zOworIAlpbnQgaWQ7CisgCWludCBpbmRleDsKKysJY2hhciAqYWRkcjsKKyAJc3RydWN0IGZpcmV3YWxsX2NvbnRleHQgKmZ3OworIH07CisgCitAQCAtMjAwLDcgKzIwMiw3IEBAIHN0YXRpYyBjaGFyICpzZXJ2aWNlMmJlYXJlcihlbnVtIGNvbm5tYW5fc2VydmljZV90eXBlIHR5cGUpCisgCXJldHVybiAiIjsKKyB9CisgCistc3RhdGljIHN0cnVjdCBmd19zbmF0ICpmd19zbmF0X2xvb2t1cChpbnQgaW5kZXgpCisrc3RhdGljIHN0cnVjdCBmd19zbmF0ICpmd19zbmF0X2xvb2t1cChpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKmFkZHIpCisgeworIAlzdHJ1Y3QgZndfc25hdCAqZndfc25hdDsKKyAJR1NMaXN0ICpsaXN0OworQEAgLTIwOCw4ICsyMTAsMTEgQEAgc3RhdGljIHN0cnVjdCBmd19zbmF0ICpmd19zbmF0X2xvb2t1cChpbnQgaW5kZXgpCisgCWZvciAobGlzdCA9IGZ3X3NuYXRfbGlzdDsgbGlzdDsgbGlzdCA9IGxpc3QtPm5leHQpIHsKKyAJCWZ3X3NuYXQgPSBsaXN0LT5kYXRhOworIAorLQkJaWYgKGZ3X3NuYXQtPmluZGV4ID09IGluZGV4KQorKwkJaWYgKGZ3X3NuYXQtPmluZGV4ID09IGluZGV4KSB7CisrCQkJaWYgKGdfc3RyY21wMChhZGRyLCBmd19zbmF0LT5hZGRyKSAhPSAwKQorKwkJCQljb250aW51ZTsKKyAJCQlyZXR1cm4gZndfc25hdDsKKysJCX0KKyAJfQorIAlyZXR1cm4gTlVMTDsKKyB9CitAQCAtMjI0LDYgKzIyOSw3IEBAIHN0YXRpYyBpbnQgZndfc25hdF9jcmVhdGUoc3RydWN0IGNvbm5tYW5fc2Vzc2lvbiAqc2Vzc2lvbiwKKyAKKyAJZndfc25hdC0+ZncgPSBfX2Nvbm5tYW5fZmlyZXdhbGxfY3JlYXRlKCk7CisgCWZ3X3NuYXQtPmluZGV4ID0gaW5kZXg7CisrCWZ3X3NuYXQtPmFkZHIgPSBnX3N0cmR1cChhZGRyKTsKKyAKKyAJZndfc25hdC0+aWQgPSBfX2Nvbm5tYW5fZmlyZXdhbGxfZW5hYmxlX3NuYXQoZndfc25hdC0+ZncsCisgCQkJCQkJaW5kZXgsIGlmbmFtZSwgYWRkcik7CitAQCAtMjM4LDYgKzI0NCw3IEBAIHN0YXRpYyBpbnQgZndfc25hdF9jcmVhdGUoc3RydWN0IGNvbm5tYW5fc2Vzc2lvbiAqc2Vzc2lvbiwKKyAJcmV0dXJuIDA7CisgZXJyOgorIAlfX2Nvbm5tYW5fZmlyZXdhbGxfZGVzdHJveShmd19zbmF0LT5mdyk7CisrCWdfZnJlZShmd19zbmF0LT5hZGRyKTsKKyAJZ19mcmVlKGZ3X3NuYXQpOworIAlyZXR1cm4gZXJyOworIH0KK0BAIC0zOTMsNyArNDAwLDcgQEAgc3RhdGljIHZvaWQgZGVsX25hdF9ydWxlcyhzdHJ1Y3QgY29ubm1hbl9zZXNzaW9uICpzZXNzaW9uKQorIAkJcmV0dXJuOworIAorIAlzZXNzaW9uLT5zbmF0X2VuYWJsZWQgPSBmYWxzZTsKKy0JZndfc25hdCA9IGZ3X3NuYXRfbG9va3VwKHNlc3Npb24tPmluZGV4KTsKKysJZndfc25hdCA9IGZ3X3NuYXRfbG9va3VwKHNlc3Npb24tPmluZGV4LCBzZXNzaW9uLT5hZGRyKTsKKyAKKyAJaWYgKCFmd19zbmF0KQorIAkJcmV0dXJuOworQEAgLTQyMCw4ICs0MjcsMTEgQEAgc3RhdGljIHZvaWQgYWRkX25hdF9ydWxlcyhzdHJ1Y3QgY29ubm1hbl9zZXNzaW9uICpzZXNzaW9uKQorIAlpZiAoIWFkZHIpCisgCQlyZXR1cm47CisgCisrCWdfZnJlZShzZXNzaW9uLT5hZGRyKTsKKysJc2Vzc2lvbi0+YWRkciA9IGdfc3RyZHVwKGFkZHIpOworKworIAlzZXNzaW9uLT5zbmF0X2VuYWJsZWQgPSB0cnVlOworLQlmd19zbmF0ID0gZndfc25hdF9sb29rdXAoaW5kZXgpOworKwlmd19zbmF0ID0gZndfc25hdF9sb29rdXAoaW5kZXgsIHNlc3Npb24tPmFkZHIpOworIAlpZiAoZndfc25hdCkgeworIAkJZndfc25hdF9yZWYoc2Vzc2lvbiwgZndfc25hdCk7CisgCQlyZXR1cm47CitAQCAtNTAyLDYgKzUxMiw3IEBAIHN0YXRpYyB2b2lkIGZyZWVfc2Vzc2lvbihzdHJ1Y3QgY29ubm1hbl9zZXNzaW9uICpzZXNzaW9uKQorIAlnX2ZyZWUoc2Vzc2lvbi0+aW5mbyk7CisgCWdfZnJlZShzZXNzaW9uLT5pbmZvX2xhc3QpOworIAlnX2ZyZWUoc2Vzc2lvbi0+Z2F0ZXdheSk7CisrCWdfZnJlZShzZXNzaW9uLT5hZGRyKTsKKyAKKyAJZ19mcmVlKHNlc3Npb24pOworIH0KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDItaW5ldC1JbXBsZW1lbnQtc3VibmV0LXJvdXRlLWNyZWF0aW9uLWRlbGV0aW9uLWluLWlwci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAyLWluZXQtSW1wbGVtZW50LXN1Ym5ldC1yb3V0ZS1jcmVhdGlvbi1kZWxldGlvbi1pbi1pcHIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM5NTNlNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAyLWluZXQtSW1wbGVtZW50LXN1Ym5ldC1yb3V0ZS1jcmVhdGlvbi1kZWxldGlvbi1pbi1pcHIucGF0Y2gKQEAgLTAsMCArMSw2OSBAQAorRnJvbSAwOGNkYTQwMDQ0OTFkMzk3MWE4YjlkZjkzNzQyNmM0MzgwMGQxNWIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmlhbiBMaWFuZyA8amlhbmxpYW5nQHR5Y29pbnQuY29tPgorRGF0ZTogVGh1LCA1IE9jdCAyMDE3IDA5OjM3OjA2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMi80XSBpbmV0OiBJbXBsZW1lbnQgc3VibmV0IHJvdXRlIGNyZWF0aW9uL2RlbGV0aW9uIGluCisgaXByb3V0ZV9kZWZhdWx0X21vZGlmeQorVG86IGNvbm5tYW5AbGlzdHMuMDEub3JnCitDYzogd2FnaUBtb25vbS5vcmcKKworLSBDYWxjdWxhdGUgc3VibmV0IGFkZHJlc3MgYmFzZSBvbiBnYXRld2F5IGFkZHJlc3MgYW5kIHByZWZpeGxlbgorLSBEaWZmZXJlbnRpYXRlIGNyZWF0aW9uIG9mIHJvdXRlcyB0byBnYXRld2F5IGFuZCBzdWJuZXQKKworU2lnbmVkLW9mZi1ieTogSmlhbiBMaWFuZyA8amlhbmxpYW5nQHR5Y29pbnQuY29tPgorCistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9uZXR3b3JrL2Nvbm5tYW4vY29ubm1hbi5naXQvY29tbWl0Lz9pZD1mZjdkY2Y5MWYxMmEyYTIzN2ZlZWJjNmU2MDZkMGE4ZTkyOTc1NTI4XQorU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFuZHJlLmRyYXN6aWtAamNpLmNvbT4KKyBzcmMvaW5ldC5jIHwgMjIgKysrKysrKysrKysrKysrKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2luZXQuYyBiL3NyYy9pbmV0LmMKK2luZGV4IGFiOGFlYzguLjBkZGIwMzAgMTAwNjQ0CistLS0gYS9zcmMvaW5ldC5jCisrKysgYi9zcmMvaW5ldC5jCitAQCAtMjgwMiw2ICsyODAyLDkgQEAgc3RhdGljIGludCBpcHJvdXRlX2RlZmF1bHRfbW9kaWZ5KGludCBjbWQsIHVpbnQzMl90IHRhYmxlX2lkLCBpbnQgaWZpbmRleCwKKyAJdW5zaWduZWQgY2hhciBidWZbc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcildOworIAlpbnQgcmV0LCBsZW47CisgCWludCBmYW1pbHkgPSBjb25ubWFuX2luZXRfY2hlY2tfaXBhZGRyZXNzKGdhdGV3YXkpOworKwljaGFyICpkc3QgPSBOVUxMOworKworKwlEQkcoImdhdGV3YXkgJXMvJXUgdGFibGUgJXUiLCBnYXRld2F5LCBwcmVmaXhsZW4sIHRhYmxlX2lkKTsKKyAKKyAJc3dpdGNoIChmYW1pbHkpIHsKKyAJY2FzZSBBRl9JTkVUOgorQEAgLTI4MTQsNyArMjgxNywxOSBAQCBzdGF0aWMgaW50IGlwcm91dGVfZGVmYXVsdF9tb2RpZnkoaW50IGNtZCwgdWludDMyX3QgdGFibGVfaWQsIGludCBpZmluZGV4LAorIAkJcmV0dXJuIC1FSU5WQUw7CisgCX0KKyAKKy0JcmV0ID0gaW5ldF9wdG9uKGZhbWlseSwgZ2F0ZXdheSwgYnVmKTsKKysJaWYgKHByZWZpeGxlbikgeworKwkJc3RydWN0IGluX2FkZHIgaXB2NF9zdWJuZXRfYWRkciwgaXB2NF9tYXNrOworKworKwkJbWVtc2V0KCZpcHY0X3N1Ym5ldF9hZGRyLCAwLCBzaXplb2YoaXB2NF9zdWJuZXRfYWRkcikpOworKwkJaXB2NF9tYXNrLnNfYWRkciA9IGh0b25sKCgweGZmZmZmZmZmIDw8ICgzMiAtIHByZWZpeGxlbikpICYgMHhmZmZmZmZmZik7CisrCQlpcHY0X3N1Ym5ldF9hZGRyLnNfYWRkciA9IGluZXRfYWRkcihnYXRld2F5KTsKKysJCWlwdjRfc3VibmV0X2FkZHIuc19hZGRyICY9IGlwdjRfbWFzay5zX2FkZHI7CisrCisrCQlkc3QgPSBnX3N0cmR1cChpbmV0X250b2EoaXB2NF9zdWJuZXRfYWRkcikpOworKwl9CisrCisrCXJldCA9IGluZXRfcHRvbihmYW1pbHksIGRzdCA/IGRzdCA6IGdhdGV3YXksIGJ1Zik7CisrCWdfZnJlZShkc3QpOworIAlpZiAocmV0IDw9IDApCisgCQlyZXR1cm4gLUVJTlZBTDsKKyAKK0BAIC0yODMxLDggKzI4NDYsOSBAQCBzdGF0aWMgaW50IGlwcm91dGVfZGVmYXVsdF9tb2RpZnkoaW50IGNtZCwgdWludDMyX3QgdGFibGVfaWQsIGludCBpZmluZGV4LAorIAlydGgucmVxLnUuci5ydC5ydG1fdHlwZSA9IFJUTl9VTklDQVNUOworIAlydGgucmVxLnUuci5ydC5ydG1fZHN0X2xlbiA9IHByZWZpeGxlbjsKKyAKKy0JX19jb25ubWFuX2luZXRfcnRubF9hZGRhdHRyX2woJnJ0aC5yZXEubiwgc2l6ZW9mKHJ0aC5yZXEpLCBSVEFfR0FURVdBWSwKKy0JCQkJCQkJCWJ1ZiwgbGVuKTsKKysJX19jb25ubWFuX2luZXRfcnRubF9hZGRhdHRyX2woJnJ0aC5yZXEubiwgc2l6ZW9mKHJ0aC5yZXEpLAorKwkJcHJlZml4bGVuID4gMCA/IFJUQV9EU1QgOiBSVEFfR0FURVdBWSwgYnVmLCBsZW4pOworKworIAlpZiAodGFibGVfaWQgPCAyNTYpIHsKKyAJCXJ0aC5yZXEudS5yLnJ0LnJ0bV90YWJsZSA9IHRhYmxlX2lkOworIAl9IGVsc2UgeworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMy1pbmV0LUltcGxlbWVudC1BUElzLWZvci1jcmVhdGluZy1hbmQtZGVsZXRpbmctc3VibmV0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDMtaW5ldC1JbXBsZW1lbnQtQVBJcy1mb3ItY3JlYXRpbmctYW5kLWRlbGV0aW5nLXN1Ym5ldC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmJhNWMzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDMtaW5ldC1JbXBsZW1lbnQtQVBJcy1mb3ItY3JlYXRpbmctYW5kLWRlbGV0aW5nLXN1Ym5ldC5wYXRjaApAQCAtMCwwICsxLDY4IEBACitGcm9tIGE5MjQzZjEzZDZlMWFhZGQ2OWJmY2MyN2Y3NWY2OWMzOGJlNTE2NzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKaWFuIExpYW5nIDxqaWFubGlhbmdAdHljb2ludC5jb20+CitEYXRlOiBXZWQsIDQgT2N0IDIwMTcgMTc6MzA6MTcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzRdIGluZXQ6IEltcGxlbWVudCBBUElzIGZvciBjcmVhdGluZyBhbmQgZGVsZXRpbmcgc3VibmV0Cisgcm91dGUKK1RvOiBjb25ubWFuQGxpc3RzLjAxLm9yZworQ2M6IHdhZ2lAbW9ub20ub3JnCisKK1NpZ25lZC1vZmYtYnk6IEppYW4gTGlhbmcgPGppYW5saWFuZ0B0eWNvaW50LmNvbT4KKworLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbmV0d29yay9jb25ubWFuL2Nvbm5tYW4uZ2l0L2NvbW1pdC8/aWQ9M2ExNWIwYjdmY2NkMDUzYWZmOTFkYTJjYzY4NTg1NTA5ZDBjNTA5Yl0KK1NpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxhbmRyZS5kcmFzemlrQGpjaS5jb20+Cisgc3JjL2Nvbm5tYW4uaCB8ICA0ICsrKysKKyBzcmMvaW5ldC5jICAgIHwgMTQgKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9jb25ubWFuLmggYi9zcmMvY29ubm1hbi5oCitpbmRleCAyMWI3MDgwLi5kYTQ0NDZhIDEwMDY0NAorLS0tIGEvc3JjL2Nvbm5tYW4uaAorKysrIGIvc3JjL2Nvbm5tYW4uaAorQEAgLTI0MCw3ICsyNDAsMTEgQEAgaW50IF9fY29ubm1hbl9pbmV0X3J0bmxfYWRkYXR0cjMyKHN0cnVjdCBubG1zZ2hkciAqbiwgc2l6ZV90IG1heGxlbiwKKyBpbnQgX19jb25ubWFuX2luZXRfYWRkX2Z3bWFya19ydWxlKHVpbnQzMl90IHRhYmxlX2lkLCBpbnQgZmFtaWx5LCB1aW50MzJfdCBmd21hcmspOworIGludCBfX2Nvbm5tYW5faW5ldF9kZWxfZndtYXJrX3J1bGUodWludDMyX3QgdGFibGVfaWQsIGludCBmYW1pbHksIHVpbnQzMl90IGZ3bWFyayk7CisgaW50IF9fY29ubm1hbl9pbmV0X2FkZF9kZWZhdWx0X3RvX3RhYmxlKHVpbnQzMl90IHRhYmxlX2lkLCBpbnQgaWZpbmRleCwgY29uc3QgY2hhciAqZ2F0ZXdheSk7CisraW50IF9fY29ubm1hbl9pbmV0X2FkZF9zdWJuZXRfdG9fdGFibGUodWludDMyX3QgdGFibGVfaWQsIGludCBpZmluZGV4LAorKwkJCWNvbnN0IGNoYXIgKmdhdGV3YXksIHVuc2lnbmVkIGNoYXIgcHJlZml4bGVuKTsKKyBpbnQgX19jb25ubWFuX2luZXRfZGVsX2RlZmF1bHRfZnJvbV90YWJsZSh1aW50MzJfdCB0YWJsZV9pZCwgaW50IGlmaW5kZXgsIGNvbnN0IGNoYXIgKmdhdGV3YXkpOworK2ludCBfX2Nvbm5tYW5faW5ldF9kZWxfc3VibmV0X2Zyb21fdGFibGUodWludDMyX3QgdGFibGVfaWQsIGludCBpZmluZGV4LAorKwkJCWNvbnN0IGNoYXIgKmdhdGV3YXksIHVuc2lnbmVkIGNoYXIgcHJlZml4bGVuKTsKKyBpbnQgX19jb25ubWFuX2luZXRfZ2V0X2FkZHJlc3NfbmV0bWFzayhpbnQgaWZpbmRleCwKKyAJCXN0cnVjdCBzb2NrYWRkcl9pbiAqYWRkcmVzcywgc3RydWN0IHNvY2thZGRyX2luICpuZXRtYXNrKTsKKyAKK2RpZmYgLS1naXQgYS9zcmMvaW5ldC5jIGIvc3JjL2luZXQuYworaW5kZXggMGRkYjAzMC4uZGNkMWFiMiAxMDA2NDQKKy0tLSBhL3NyYy9pbmV0LmMKKysrKyBiL3NyYy9pbmV0LmMKK0BAIC0yODgwLDYgKzI4ODAsMTMgQEAgaW50IF9fY29ubm1hbl9pbmV0X2FkZF9kZWZhdWx0X3RvX3RhYmxlKHVpbnQzMl90IHRhYmxlX2lkLCBpbnQgaWZpbmRleCwKKyAJcmV0dXJuIGlwcm91dGVfZGVmYXVsdF9tb2RpZnkoUlRNX05FV1JPVVRFLCB0YWJsZV9pZCwgaWZpbmRleCwgZ2F0ZXdheSwgMCk7CisgfQorIAorK2ludCBfX2Nvbm5tYW5faW5ldF9hZGRfc3VibmV0X3RvX3RhYmxlKHVpbnQzMl90IHRhYmxlX2lkLCBpbnQgaWZpbmRleCwKKysJCQkJCQljb25zdCBjaGFyICpnYXRld2F5LCB1bnNpZ25lZCBjaGFyIHByZWZpeGxlbikKKyt7CisrCS8qIGlwIHJvdXRlIGFkZCAxLjIuMy40LzI0IGRldiBldGgwIHRhYmxlIDEyMzQgKi8KKysJcmV0dXJuIGlwcm91dGVfZGVmYXVsdF9tb2RpZnkoUlRNX05FV1JPVVRFLCB0YWJsZV9pZCwgaWZpbmRleCwgZ2F0ZXdheSwgcHJlZml4bGVuKTsKKyt9CisrCisgaW50IF9fY29ubm1hbl9pbmV0X2RlbF9kZWZhdWx0X2Zyb21fdGFibGUodWludDMyX3QgdGFibGVfaWQsIGludCBpZmluZGV4LAorIAkJCQkJCWNvbnN0IGNoYXIgKmdhdGV3YXkpCisgeworQEAgLTI4ODgsNiArMjg5NSwxMyBAQCBpbnQgX19jb25ubWFuX2luZXRfZGVsX2RlZmF1bHRfZnJvbV90YWJsZSh1aW50MzJfdCB0YWJsZV9pZCwgaW50IGlmaW5kZXgsCisgCXJldHVybiBpcHJvdXRlX2RlZmF1bHRfbW9kaWZ5KFJUTV9ERUxST1VURSwgdGFibGVfaWQsIGlmaW5kZXgsIGdhdGV3YXksIDApOworIH0KKyAKKytpbnQgX19jb25ubWFuX2luZXRfZGVsX3N1Ym5ldF9mcm9tX3RhYmxlKHVpbnQzMl90IHRhYmxlX2lkLCBpbnQgaWZpbmRleCwKKysJCQkJCQljb25zdCBjaGFyICpnYXRld2F5LCB1bnNpZ25lZCBjaGFyIHByZWZpeGxlbikKKyt7CisrCS8qIGlwIHJvdXRlIGRlbCAxLjIuMy40LzI0IGRldiBldGgwIHRhYmxlIDEyMzQgKi8KKysJcmV0dXJuIGlwcm91dGVfZGVmYXVsdF9tb2RpZnkoUlRNX0RFTFJPVVRFLCB0YWJsZV9pZCwgaWZpbmRleCwgZ2F0ZXdheSwgcHJlZml4bGVuKTsKKyt9CisrCisgaW50IF9fY29ubm1hbl9pbmV0X2dldF9pbnRlcmZhY2VfbGxfYWRkcmVzcyhpbnQgaW5kZXgsIGludCBmYW1pbHksCisgCQkJCQkJCQl2b2lkICphZGRyZXNzKQorIHsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDQtc2Vzc2lvbi1Vc2Utc3VibmV0LXJvdXRlLWNyZWF0aW9uLWFuZC1kZWxldGlvbi1BUElzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDQtc2Vzc2lvbi1Vc2Utc3VibmV0LXJvdXRlLWNyZWF0aW9uLWFuZC1kZWxldGlvbi1BUElzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhMjEzZWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwNC1zZXNzaW9uLVVzZS1zdWJuZXQtcm91dGUtY3JlYXRpb24tYW5kLWRlbGV0aW9uLUFQSXMucGF0Y2gKQEAgLTAsMCArMSw3NyBAQAorRnJvbSBkZWI5MzcyZGI4Mzk2ZGE0ZjdjZDIwNTU1Y2U3YzlhOGIzYWQ5NmJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmlhbiBMaWFuZyA8amlhbmxpYW5nQHR5Y29pbnQuY29tPgorRGF0ZTogRnJpLCA2IE9jdCAyMDE3IDExOjQwOjE2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggNC80XSBzZXNzaW9uOiBVc2Ugc3VibmV0IHJvdXRlIGNyZWF0aW9uIGFuZCBkZWxldGlvbiBBUElzCitUbzogY29ubm1hbkBsaXN0cy4wMS5vcmcKK0NjOiB3YWdpQG1vbm9tLm9yZworCitBcyBzdWJuZXQgcm91dGUgaXMgYWRkcmVzcyBhbmQgc2Vzc2lvbiBzcGVjaWZpYyBpbiB0aGlzIGNhc2UsIHNvIGFkZAorcHJlZml4bGVuIGludG8gc3RydWN0IGNvbm5tYW5fc2Vzc2lvbiwgYW5kIHVwZGF0ZSBpdCBhbG9uZyB3aXRoIGlwY29uZmlnLgorVGhlbiB1c2UgaXQgaW4gc3VibmV0IHJvdXRlIHJlbGF0ZWQgQVBJcy4KKworU2lnbmVkLW9mZi1ieTogSmlhbiBMaWFuZyA8amlhbmxpYW5nQHR5Y29pbnQuY29tPgorCistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9uZXR3b3JrL2Nvbm5tYW4vY29ubm1hbi5naXQvY29tbWl0Lz9pZD0yODVmMjVlZjZjYzllNGE0M2RhYjgzNTIzZjNlMmVhYjQzNjVhYzI2XQorU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFuZHJlLmRyYXN6aWtAamNpLmNvbT4KKyBzcmMvc2Vzc2lvbi5jIHwgMjAgKysrKysrKysrKysrKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9zZXNzaW9uLmMgYi9zcmMvc2Vzc2lvbi5jCitpbmRleCA5NjVhYzA2Li43YjdhMTRiIDEwMDY0NAorLS0tIGEvc3JjL3Nlc3Npb24uYworKysrIGIvc3JjL3Nlc3Npb24uYworQEAgLTY3LDYgKzY3LDcgQEAgc3RydWN0IGNvbm5tYW5fc2Vzc2lvbiB7CisgCWludCBpbmRleDsKKyAJY2hhciAqYWRkcjsKKyAJY2hhciAqZ2F0ZXdheTsKKysJdW5zaWduZWQgY2hhciBwcmVmaXhsZW47CisgCWJvb2wgcG9saWN5X3JvdXRpbmc7CisgCWJvb2wgc25hdF9lbmFibGVkOworIH07CitAQCAtMzU3LDEzICszNTgsMTcgQEAgc3RhdGljIHZvaWQgZGVsX2RlZmF1bHRfcm91dGUoc3RydWN0IGNvbm5tYW5fc2Vzc2lvbiAqc2Vzc2lvbikKKyAJaWYgKCFzZXNzaW9uLT5nYXRld2F5KQorIAkJcmV0dXJuOworIAorLQlEQkcoImluZGV4ICVkIHJvdXRpbmcgdGFibGUgJWQgZGVmYXVsdCBnYXRld2F5ICVzIiwKKy0JCXNlc3Npb24tPmluZGV4LCBzZXNzaW9uLT5tYXJrLCBzZXNzaW9uLT5nYXRld2F5KTsKKysJREJHKCJpbmRleCAlZCByb3V0aW5nIHRhYmxlICVkIGRlZmF1bHQgZ2F0ZXdheSAlcy8ldSIsCisrCQlzZXNzaW9uLT5pbmRleCwgc2Vzc2lvbi0+bWFyaywgc2Vzc2lvbi0+Z2F0ZXdheSwgc2Vzc2lvbi0+cHJlZml4bGVuKTsKKysKKysJCV9fY29ubm1hbl9pbmV0X2RlbF9zdWJuZXRfZnJvbV90YWJsZShzZXNzaW9uLT5tYXJrLAorKwkJCXNlc3Npb24tPmluZGV4LCBzZXNzaW9uLT5nYXRld2F5LCBzZXNzaW9uLT5wcmVmaXhsZW4pOworIAorIAlfX2Nvbm5tYW5faW5ldF9kZWxfZGVmYXVsdF9mcm9tX3RhYmxlKHNlc3Npb24tPm1hcmssCisgCQkJCQlzZXNzaW9uLT5pbmRleCwgc2Vzc2lvbi0+Z2F0ZXdheSk7CisgCWdfZnJlZShzZXNzaW9uLT5nYXRld2F5KTsKKyAJc2Vzc2lvbi0+Z2F0ZXdheSA9IE5VTEw7CisrCXNlc3Npb24tPnByZWZpeGxlbiA9IDA7CisgCXNlc3Npb24tPmluZGV4ID0gLTE7CisgfQorIAorQEAgLTM4MywxMyArMzg4LDIwIEBAIHN0YXRpYyB2b2lkIGFkZF9kZWZhdWx0X3JvdXRlKHN0cnVjdCBjb25ubWFuX3Nlc3Npb24gKnNlc3Npb24pCisgCWlmICghc2Vzc2lvbi0+Z2F0ZXdheSkKKyAJCXNlc3Npb24tPmdhdGV3YXkgPSBnX3N0cmR1cChpbmV0X250b2EoYWRkcikpOworIAorLQlEQkcoImluZGV4ICVkIHJvdXRpbmcgdGFibGUgJWQgZGVmYXVsdCBnYXRld2F5ICVzIiwKKy0JCXNlc3Npb24tPmluZGV4LCBzZXNzaW9uLT5tYXJrLCBzZXNzaW9uLT5nYXRld2F5KTsKKysJc2Vzc2lvbi0+cHJlZml4bGVuID0gX19jb25ubWFuX2lwY29uZmlnX2dldF9wcmVmaXhsZW4oaXBjb25maWcpOworKworKwlEQkcoImluZGV4ICVkIHJvdXRpbmcgdGFibGUgJWQgZGVmYXVsdCBnYXRld2F5ICVzLyV1IiwKKysJCXNlc3Npb24tPmluZGV4LCBzZXNzaW9uLT5tYXJrLCBzZXNzaW9uLT5nYXRld2F5LCBzZXNzaW9uLT5wcmVmaXhsZW4pOworIAorIAllcnIgPSBfX2Nvbm5tYW5faW5ldF9hZGRfZGVmYXVsdF90b190YWJsZShzZXNzaW9uLT5tYXJrLAorIAkJCQkJc2Vzc2lvbi0+aW5kZXgsIHNlc3Npb24tPmdhdGV3YXkpOworIAlpZiAoZXJyIDwgMCkKKyAJCURCRygic2Vzc2lvbiAlcCAlcyIsIHNlc3Npb24sIHN0cmVycm9yKC1lcnIpKTsKKysKKysJZXJyID0gX19jb25ubWFuX2luZXRfYWRkX3N1Ym5ldF90b190YWJsZShzZXNzaW9uLT5tYXJrLAorKwkJCQkJc2Vzc2lvbi0+aW5kZXgsIHNlc3Npb24tPmdhdGV3YXksIHNlc3Npb24tPnByZWZpeGxlbik7CisrCWlmIChlcnIgPCAwKQorKwkJREJHKCJzZXNzaW9uIGFkZCBzdWJuZXQgcm91dGUgJXAgJXMiLCBzZXNzaW9uLCBzdHJlcnJvcigtZXJyKSk7CisgfQorIAorIHN0YXRpYyB2b2lkIGRlbF9uYXRfcnVsZXMoc3RydWN0IGNvbm5tYW5fc2Vzc2lvbiAqc2Vzc2lvbikKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuL0NWRS0yMDE3LTEyODY1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuL0NWRS0yMDE3LTEyODY1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWY3OGYxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi9DVkUtMjAxNy0xMjg2NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLUZyb20gNWMyODFkMTgyZWNkZDBhNDI0YjY0Zjc2OThmMzI0NjdmOGY2N2I3MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1a2thIFJpc3NhbmVuIDxqdWtrYS5yaXNzYW5lbkBsaW51eC5pbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDkgQXVnIDIwMTcgMTA6MTY6NDYgKzAzMDAKLVN1YmplY3Q6IGRuc3Byb3h5OiBGaXggY3Jhc2ggb24gbWFsZm9ybWVkIEROUyByZXNwb25zZQotCi1JZiB0aGUgcmVzcG9uc2UgcXVlcnkgc3RyaW5nIGlzIG1hbGZvcm1lZCwgd2UgbWlnaHQgYWNjZXNzIG1lbW9yeQotcGFzcyB0aGUgZW5kIG9mICJuYW1lIiB2YXJpYWJsZSBpbiBwYXJzZV9yZXNwb25zZSgpLgotCi1DVkU6IENWRS0yMDE3LTEyODY1Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbmV0d29yay9jb25ubWFuL2Nvbm5tYW4uZ2l0L3BhdGNoLz9pZD01YzI4MWQxODJlY2RkMGE0MjRiNjRmNzY5OGYzMjQ2N2Y4ZjY3YjcxXQotCi1TaWduZWQtb2ZmLWJ5OiBTb25hIFNhcm1hZGkgPHNvbmEuc2FybWFkaUBlbmVhLmNvbT4KLS0tLQotIHNyYy9kbnNwcm94eS5jIHwgMTYgKysrKysrKysrKy0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Ruc3Byb3h5LmMgYi9zcmMvZG5zcHJveHkuYwotaW5kZXggMzhhYzViZi4uNDBiNGYxNSAxMDA2NDQKLS0tLSBhL3NyYy9kbnNwcm94eS5jCi0rKysgYi9zcmMvZG5zcHJveHkuYwotQEAgLTgzOCw3ICs4MzgsNyBAQCBzdGF0aWMgc3RydWN0IGNhY2hlX2VudHJ5ICpjYWNoZV9jaGVjayhncG9pbnRlciByZXF1ZXN0LCBpbnQgKnF0eXBlLCBpbnQgcHJvdG8pCi0gc3RhdGljIGludCBnZXRfbmFtZShpbnQgY291bnRlciwKLSAJCXVuc2lnbmVkIGNoYXIgKnBrdCwgdW5zaWduZWQgY2hhciAqc3RhcnQsIHVuc2lnbmVkIGNoYXIgKm1heCwKLSAJCXVuc2lnbmVkIGNoYXIgKm91dHB1dCwgaW50IG91dHB1dF9tYXgsIGludCAqb3V0cHV0X2xlbiwKLS0JCXVuc2lnbmVkIGNoYXIgKiplbmQsIGNoYXIgKm5hbWUsIGludCAqbmFtZV9sZW4pCi0rCQl1bnNpZ25lZCBjaGFyICoqZW5kLCBjaGFyICpuYW1lLCBzaXplX3QgbWF4X25hbWUsIGludCAqbmFtZV9sZW4pCi0gewotIAl1bnNpZ25lZCBjaGFyICpwOwotIAotQEAgLTg1OSw3ICs4NTksNyBAQCBzdGF0aWMgaW50IGdldF9uYW1lKGludCBjb3VudGVyLAotIAotIAkJCXJldHVybiBnZXRfbmFtZShjb3VudGVyICsgMSwgcGt0LCBwa3QgKyBvZmZzZXQsIG1heCwKLSAJCQkJCW91dHB1dCwgb3V0cHV0X21heCwgb3V0cHV0X2xlbiwgZW5kLAotLQkJCQkJbmFtZSwgbmFtZV9sZW4pOwotKwkJCQkJbmFtZSwgbWF4X25hbWUsIG5hbWVfbGVuKTsKLSAJCX0gZWxzZSB7Ci0gCQkJdW5zaWduZWQgbGFiZWxfbGVuID0gKnA7Ci0gCi1AQCAtODY5LDYgKzg2OSw5IEBAIHN0YXRpYyBpbnQgZ2V0X25hbWUoaW50IGNvdW50ZXIsCi0gCQkJaWYgKCpvdXRwdXRfbGVuID4gb3V0cHV0X21heCkKLSAJCQkJcmV0dXJuIC1FTk9CVUZTOwotIAotKwkJCWlmICgoKm5hbWVfbGVuICsgMSArIGxhYmVsX2xlbiArIDEpID4gbWF4X25hbWUpCi0rCQkJCXJldHVybiAtRU5PQlVGUzsKLSsKLSAJCQkvKgotIAkJCSAqIFdlIG5lZWQgdGhlIG9yaWdpbmFsIG5hbWUgaW4gb3JkZXIgdG8gY2hlY2sKLSAJCQkgKiBpZiB0aGlzIGFuc3dlciBpcyB0aGUgY29ycmVjdCBvbmUuCi1AQCAtOTAwLDE0ICs5MDMsMTQgQEAgc3RhdGljIGludCBwYXJzZV9ycih1bnNpZ25lZCBjaGFyICpidWYsIHVuc2lnbmVkIGNoYXIgKnN0YXJ0LAotIAkJCXVuc2lnbmVkIGNoYXIgKnJlc3BvbnNlLCB1bnNpZ25lZCBpbnQgKnJlc3BvbnNlX3NpemUsCi0gCQkJdWludDE2X3QgKnR5cGUsIHVpbnQxNl90ICpjbGFzcywgaW50ICp0dGwsIGludCAqcmRsZW4sCi0gCQkJdW5zaWduZWQgY2hhciAqKmVuZCwKLS0JCQljaGFyICpuYW1lKQotKwkJCWNoYXIgKm5hbWUsIHNpemVfdCBtYXhfbmFtZSkKLSB7Ci0gCXN0cnVjdCBkb21haW5fcnIgKnJyOwotIAlpbnQgZXJyLCBvZmZzZXQ7Ci0gCWludCBuYW1lX2xlbiA9IDAsIG91dHB1dF9sZW4gPSAwLCBtYXhfcnNwID0gKnJlc3BvbnNlX3NpemU7Ci0gCi0gCWVyciA9IGdldF9uYW1lKDAsIGJ1Ziwgc3RhcnQsIG1heCwgcmVzcG9uc2UsIG1heF9yc3AsCi0tCQkmb3V0cHV0X2xlbiwgZW5kLCBuYW1lLCAmbmFtZV9sZW4pOwotKwkJCSZvdXRwdXRfbGVuLCBlbmQsIG5hbWUsIG1heF9uYW1lLCAmbmFtZV9sZW4pOwotIAlpZiAoZXJyIDwgMCkKLSAJCXJldHVybiBlcnI7Ci0gCi1AQCAtMTAzMyw3ICsxMDM2LDggQEAgc3RhdGljIGludCBwYXJzZV9yZXNwb25zZSh1bnNpZ25lZCBjaGFyICpidWYsIGludCBidWZsZW4sCi0gCQltZW1zZXQocnNwLCAwLCBzaXplb2YocnNwKSk7Ci0gCi0gCQlyZXQgPSBwYXJzZV9ycihidWYsIHB0ciwgYnVmICsgYnVmbGVuLCByc3AsICZyc3BfbGVuLAotLQkJCXR5cGUsIGNsYXNzLCB0dGwsICZyZGxlbiwgJm5leHQsIG5hbWUpOwotKwkJCXR5cGUsIGNsYXNzLCB0dGwsICZyZGxlbiwgJm5leHQsIG5hbWUsCi0rCQkJc2l6ZW9mKG5hbWUpIC0gMSk7Ci0gCQlpZiAocmV0ICE9IDApIHsKLSAJCQllcnIgPSByZXQ7Ci0gCQkJZ290byBvdXQ7Ci1AQCAtMTA5OSw3ICsxMTAzLDcgQEAgc3RhdGljIGludCBwYXJzZV9yZXNwb25zZSh1bnNpZ25lZCBjaGFyICpidWYsIGludCBidWZsZW4sCi0gCQkJICovCi0gCQkJcmV0ID0gZ2V0X25hbWUoMCwgYnVmLCBuZXh0IC0gcmRsZW4sIGJ1ZiArIGJ1ZmxlbiwKLSAJCQkJCXJzcCwgcnNwX2xlbiwgJm91dHB1dF9sZW4sICZlbmQsCi0tCQkJCQluYW1lLCAmbmFtZV9sZW4pOwotKwkJCQkJbmFtZSwgc2l6ZW9mKG5hbWUpIC0gMSwgJm5hbWVfbGVuKTsKLSAJCQlpZiAocmV0ICE9IDApIHsKLSAJCQkJLyoganVzdCBpZ25vcmUgdGhlIGVycm9yIGF0IHRoaXMgcG9pbnQgKi8KLSAJCQkJcHRyID0gbmV4dDsKLS0tIAotY2dpdCB2MS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbl8xLjM0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuXzEuMzQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjMmM2ODguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuXzEuMzQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1yZXF1aXJlIGNvbm5tYW4uaW5jCi0KLVNSQ19VUkkgID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvbmV0d29yay8ke0JQTn0vJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBsdWdpbi5oLUNoYW5nZS12aXNpYmlsaXR5LXRvLWRlZmF1bHQtZm9yLWRlYnVnLXN5bWIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtZmlyZXdhbGwtbmZ0YWJsZXMtZml4LWJ1aWxkLXdpdGgtbGlibmZ0bmwtMS4wLjcucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtY29ubm1hbi5zZXJ2aWNlLXN0b3Atc3lzdGVtZC1yZXNvbHZlZC13aGVuLXdlLXVzZS1jby5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vY29ubm1hbiBcCi0gICAgICAgICAgICBmaWxlOi8vbm8tdmVyc2lvbi1zY3JpcHRzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTI4NjUucGF0Y2ggXAotICAgICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwMi1yZXNvbHZlLW11c2wtZG9lcy1ub3QtaW1wbGVtZW50LXJlc19uaW5pdC5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImUyMDAwMjg3MDJjODMxZDVmNTM1ZDIwZDYxZTYwOGVmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImE5YTA4MDhjNzI5YzFmMzQ4ZmMzNmQ4Y2VjYjUyZDE5YjcyYmMzNGNiNDExYzUwMjYwOGNiMGUwMTkwZmM3MWUiCi0KLVJSRUNPTU1FTkRTXyR7UE59ID0gImNvbm5tYW4tY29uZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbl8xLjM1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuXzEuMzUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYyMTE4MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbl8xLjM1LmJiCkBAIC0wLDAgKzEsMjIgQEAKK3JlcXVpcmUgY29ubm1hbi5pbmMKKworU1JDX1VSSSAgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9uZXR3b3JrLyR7QlBOfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtcGx1Z2luLmgtQ2hhbmdlLXZpc2liaWxpdHktdG8tZGVmYXVsdC1mb3ItZGVidWctc3ltYi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25ubWFuLnNlcnZpY2Utc3RvcC1zeXN0ZW1kLXJlc29sdmVkLXdoZW4td2UtdXNlLWNvLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9jb25ubWFuIFwKKyAgICAgICAgICAgIGZpbGU6Ly9uby12ZXJzaW9uLXNjcmlwdHMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2luY2x1ZGVzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNlc3Npb24tS2VlcC10cmFjay1vZi1hZGRyLWluLWZ3X3NuYXQtc2Vzc2lvbi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1naW9nbnV0bHMtRml4LWEtY3Jhc2gtdXNpbmctd2lzcHItb3Zlci1UTFMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtaW5ldC1BZGQtcHJlZml4bGVuLXRvLWlwcm91dGVfZGVmYXVsdF9mdW5jdGlvbi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMi1pbmV0LUltcGxlbWVudC1zdWJuZXQtcm91dGUtY3JlYXRpb24tZGVsZXRpb24taW4taXByLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAzLWluZXQtSW1wbGVtZW50LUFQSXMtZm9yLWNyZWF0aW5nLWFuZC1kZWxldGluZy1zdWJuZXQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDQtc2Vzc2lvbi1Vc2Utc3VibmV0LXJvdXRlLWNyZWF0aW9uLWFuZC1kZWxldGlvbi1BUElzLnBhdGNoIFwKKyAgICAgICAgICAgICIKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovLzAwMDItcmVzb2x2ZS1tdXNsLWRvZXMtbm90LWltcGxlbWVudC1yZXNfbmluaXQucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiYWUzN2I0NWVlOWIzZGI1ZWM4MTE1MTg4ZjhhNzY1MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2NmQ3ZGViOTgzNzE1NDVjNmU0MTcyMzlhOWIzYjNlMzIwMWMxNTI5ZDA4ZWVkZjQwYWZiYzg1OTg0MmNmMmFhIgorCitSUkVDT01NRU5EU18ke1BOfSA9ICJjb25ubWFuLWNvbmYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMi1kaGNsaWVudC1kYnVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDItZGhjbGllbnQtZGJ1cy5wYXRjaAppbmRleCA2NDU5ZGMwLi4xMDFjMzNmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMi1kaGNsaWVudC1kYnVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDAyLWRoY2xpZW50LWRidXMucGF0Y2gKQEAgLTMsNyArMyw3IEBACiBEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE0OjU2OjU2ICswODAwCiBTdWJqZWN0OiBbUEFUQ0ggMDIvMTFdIGRoY2xpZW50IGRidXMKIAotdXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkaXN0cmlidXRpb25dCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Rpc3RyaWJ1dGlvbl0KIAogUmViYXNlIHRvIDQuMy42CiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvQ1ZFLTIwMTctMzE0NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9DVkUtMjAxNy0zMTQ0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiMjY4OGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvQ1ZFLTIwMTctMzE0NC5wYXRjaApAQCAtMCwwICsxLDc0IEBACitGcm9tIDhjZmRlZGVlMzY5YzI2ZDI4NjliNmVjNGE2NDQ2MGI1ZjVhMzA5MzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUaG9tYXMgTWFya3dhbGRlciA8dG1hcmtAaXNjLm9yZz4KK0RhdGU6IFRodSwgNyBEZWMgMjAxNyAxMTozOTozMCAtMDUwMAorU3ViamVjdDogW1BBVENIXSBbdjRfM10gUGx1Z3MgYSBzb2NrZXQgZGVzY3JpcHRvciBsZWFrIGluIE9NQVBJCisKKyAgICAgICAgTWVyZ2VzIGluIHJ0NDY3NjcuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL3NvdXJjZS5pc2Mub3JnL2NnaS1iaW4vZ2l0d2ViLmNnaT9wPWRoY3AuZ2l0O2E9Y29tbWl0ZGlmZjtoPTUwOTdiYzA1NTlmNTkyNjgzZmFhYzFmNjdiZjM1MGUxYmRkZjZlZDRdCisKK0NWRTogQ1ZFLTIwMTctMzE0NAorCitTaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgUkVMTk9URVMgICAgICAgICB8IDcgKysrKysrKworIG9tYXBpcC9idWZmZXIuYyAgfCA5ICsrKysrKysrKworIG9tYXBpcC9tZXNzYWdlLmMgfCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9SRUxOT1RFUyBiL1JFTE5PVEVTCitpbmRleCBkZDQwYWFmLi4zNzQxYjgwIDEwMDY0NAorLS0tIGEvUkVMTk9URVMKKysrKyBiL1JFTE5PVEVTCitAQCAtNjYsNiArNjYsMTMgQEAgV2Ugd2VsY29tZSBjb21tZW50cyBmcm9tIERIQ1AgdXNlcnMsIGFib3V0IHRoaXMgb3IgYW55dGhpbmcgZWxzZSB3ZSBkby4KKyBFbWFpbCBWaWNreSBSaXNrLCBQcm9kdWN0IE1hbmFnZXIgYXQgdmlja3lAaXNjLm9yZyBvciBkaXNjdXNzIG9uIAorIGRoY3AtdXNlcnNAbGlzdHMuaXNjLm9yZy4KKyAKKystIFBsdWdnZWQgYSBzb2NrZXQgZGVzY3JpcHRvciBsZWFrIGluIE9NQVBJLCB0aGF0IGNhbiBvY2N1ciB3aGVuIHRoZXJlIGlzCisrICBkYXRhIHBlbmRpbmcgdG8gYmUgd3JpdHRlbiB0byBhbiBPTUFQSSBjb25uZWN0aW9uLCB3aGVuIHRoZSBjb25uZWN0aW9uCisrICBpcyBjbG9zZWQgYnkgdGhlIHJlYWRlci4gIFRoYW5rcyB0byBQYXZlbCBaaHVrb3YgYXQgUmVkSGF0IGZvciBicmluZ2luZworKyAgdGhpcyBpc3N1ZSB0byBvdXIgYXR0ZW50aW9uIGFuZCB3aG9zZSBwYXRjaCBoZWxwZWQgZ3VpZGUgdXMgaW4gdGhlIHJpZ2h0CisrICBkaXJlY3Rpb24uCisrICBbSVNjLUJ1Z3MgIzQ2NzY3XQorKworIAkJCUNoYW5nZXMgc2luY2UgNC4zLjZiMQorIAorIC0gTm9uZQorZGlmZiAtLWdpdCBhL29tYXBpcC9idWZmZXIuYyBiL29tYXBpcC9idWZmZXIuYworaW5kZXggZjdmZGMzMi4uODA5MDM0ZCAxMDA2NDQKKy0tLSBhL29tYXBpcC9idWZmZXIuYworKysrIGIvb21hcGlwL2J1ZmZlci5jCitAQCAtNTY2LDYgKzU2NiwxNSBAQCBpc2NfcmVzdWx0X3Qgb21hcGlfY29ubmVjdGlvbl93cml0ZXIgKG9tYXBpX29iamVjdF90ICpoKQorIAkJCW9tYXBpX2J1ZmZlcl9kZXJlZmVyZW5jZSAoJmJ1ZmZlciwgTURMKTsKKyAJCX0KKyAJfQorKworKwkvKiBJZiB3ZSBoYWQgZGF0YSBsZWZ0IHRvIHdyaXRlIHdoZW4gd2UncmUgdG9sZCB0byBkaXNjb25uZWN0LAorKwkqIHdlIG5lZWQgcmVjYWxsIGRpc2Nvbm5lY3QsIG5vdyB0aGF0IHdlJ3JlIGRvbmUgd3JpdGluZy4KKysJKiBTZWUgcnQ0Njc2Ny4gKi8KKysJaWYgKGMtPm91dF9ieXRlcyA9PSAwICYmIGMtPnN0YXRlID09IG9tYXBpX2Nvbm5lY3Rpb25fZGlzY29ubmVjdGluZykgeworKwkJb21hcGlfZGlzY29ubmVjdCAoaCwgMSk7CisrCQlyZXR1cm4gSVNDX1JfU0hVVFRJTkdET1dOOworKwl9CisrCisgCXJldHVybiBJU0NfUl9TVUNDRVNTOworIH0KKyAKK2RpZmYgLS1naXQgYS9vbWFwaXAvbWVzc2FnZS5jIGIvb21hcGlwL21lc3NhZ2UuYworaW5kZXggNTljY2RjMi4uMjFiY2ZjMyAxMDA2NDQKKy0tLSBhL29tYXBpcC9tZXNzYWdlLmMKKysrKyBiL29tYXBpcC9tZXNzYWdlLmMKK0BAIC0zMzksNyArMzM5LDcgQEAgaXNjX3Jlc3VsdF90IG9tYXBpX21lc3NhZ2VfdW5yZWdpc3RlciAob21hcGlfb2JqZWN0X3QgKm1vKQorIH0KKyAKKyAjaWZkZWYgREVCVUdfUFJPVE9DT0wKKy1zdGF0aWMgY29uc3QgY2hhciAqb21hcGlfbWVzc2FnZV9vcF9uYW1lKGludCBvcCkgeworK2NvbnN0IGNoYXIgKm9tYXBpX21lc3NhZ2Vfb3BfbmFtZShpbnQgb3ApIHsKKyAJc3dpdGNoIChvcCkgeworIAljYXNlIE9NQVBJX09QX09QRU46ICAgIHJldHVybiAiT01BUElfT1BfT1BFTiI7CisgCWNhc2UgT01BUElfT1BfUkVGUkVTSDogcmV0dXJuICJPTUFQSV9PUF9SRUZSRVNIIjsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwXzQuMy42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwXzQuMy42LmJiCmluZGV4IDY2MTVhZTIuLmNjMTM1NDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcF80LjMuNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC4zLjYuYmIKQEAgLTEyLDYgKzEyLDcgQEAKICAgICAgICAgICAgIGZpbGU6Ly8wMDEwLWJ1aWxkLXNoYXJlZC1saWJzLnBhdGNoIFwKICAgICAgICAgICAgIGZpbGU6Ly8wMDExLU1vdmVkLXRoZS1jYWxsLXRvLWlzY19hcHBfY3R4c3RhcnQtdG8tbm90LWdldC1zaWduYWwucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovLzAwMTItZGhjcC1jb3JyZWN0LXRoZS1pbnRlbnRpb24tZm9yLXhtbDItbGliLXNlYXJjaC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMzE0NC5wYXRjaCBcCiAgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gImFmYTZlOWIzZWI3NTM5ZWEwNDg0MjFhODJjNjY4YWRjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIuaW5jCmluZGV4IGE1NzhlYjMuLjRmYmZlYzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi5pbmMKQEAgLTEzLDYgKzEzLDggQEAKIAogaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzIGJhc2gtY29tcGxldGlvbiBwa2djb25maWcKIAorQ0xFQU5CUk9LRU4gPSAiMSIKKwogUEFDS0FHRUNPTkZJRyA/Pz0gInRpcGMiCiBQQUNLQUdFQ09ORklHW3RpcGNdID0gIiwsbGlibW5sLCIKIApAQCAtMjEsNyArMjMsNyBAQAogZG9fY29uZmlndXJlX2FwcGVuZCAoKSB7CiAgICAgc2ggY29uZmlndXJlICR7U1RBR0lOR19JTkNESVJ9CiAgICAgIyBFeHBsaWNpdGx5IGRpc2FibGUgQVRNIHN1cHBvcnQKLSAgICBzZWQgLWkgLWUgJy9UQ19DT05GSUdfQVRNL2QnIENvbmZpZworICAgIHNlZCAtaSAtZSAnL1RDX0NPTkZJR19BVE0vZCcgY29uZmlnLm1rCiB9CiAKIGRvX2luc3RhbGwgKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvMDAwMS1pbmNsdWRlLXN0ZGludC5oLWV4cGxpY2l0bHktZm9yLVVJTlQxNl9NQVgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi8wMDAxLWluY2x1ZGUtc3RkaW50LmgtZXhwbGljaXRseS1mb3ItVUlOVDE2X01BWC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWIwYzBhYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi8wMDAxLWluY2x1ZGUtc3RkaW50LmgtZXhwbGljaXRseS1mb3ItVUlOVDE2X01BWC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gM2M4ODVkODdiZWZjNzA2YmI5MjM5MzNiOTgxOWRlNmZlMmRlODk3ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDIwIE1heSAyMDE3IDE0OjAzOjE5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgc3RkaW50LmggZXhwbGljaXRseSBmb3IgVUlOVDE2X01BWCkKLQotRml4ZXMKLXwgdGNfY29yZS5jOjE5MDoyOTogZXJyb3I6ICdVSU5UMTZfTUFYJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbik7IGRpZCB5b3UgbWVhbiAnX19JTlQxNl9NQVhfXyc/Ci18ICAgIGlmICgoc3ogPj4gcy0+c2l6ZV9sb2cpID4gVUlOVDE2X01BWCkgewotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSB0Yy90Y19jb3JlLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3RjL3RjX2NvcmUuYyBiL3RjL3RjX2NvcmUuYwotaW5kZXggN2JiZTBkNy4uODIxYjc0MSAxMDA2NDQKLS0tLSBhL3RjL3RjX2NvcmUuYwotKysrIGIvdGMvdGNfY29yZS5jCi1AQCAtMTIsNiArMTIsNyBAQAotIAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxzeXNsb2cuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLzAwMDEtaXAtUmVtb3ZlLXVubmVlZC1oZWFkZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi8wMDAxLWlwLVJlbW92ZS11bm5lZWQtaGVhZGVyLnBhdGNoCmluZGV4IGE5ZjhkYjYuLmE5MDI3YzUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLzAwMDEtaXAtUmVtb3ZlLXVubmVlZC1oZWFkZXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvMDAwMS1pcC1SZW1vdmUtdW5uZWVkLWhlYWRlci5wYXRjaApAQCAtMSw2ICsxLDYgQEAKLUZyb20gZjU4ZmM5OWM4OGE1NDEzNWU1NWE2ZTA5NTZjZThhZTcxMDc4ZDFjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMDJlZDEwZmM1MjE1YzRhMzJlNjc0MGIwYTBjMjQzOTY1OWJlNjgwMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDEyIEp1biAyMDE3IDA0OjI5OjA3ICswMDAwCitEYXRlOiBNb24sIDEzIE5vdiAyMDE3IDE1OjU5OjM1ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0hdIGlwOiBSZW1vdmUgdW5uZWVkIGhlYWRlcgogCiBGaXggcmVkZWZpbml0aW9uIG9mIHN0cnVjdCBldGhoZHIgd2l0aCBhIHN1aXRhYmx5IHBhdGNoZWQgbXVzbCBsaWJjCkBAIC04LDIzICs4LDIzIEBACiAKIFNpZ25lZC1vZmYtYnk6IENoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBnbWFpbC5jb20+CiAKLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtuZXRkZXZAdmdlci5rZXJuZWwub3JnXQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtuZXRkZXZAdmdlci5rZXJuZWwub3JnXQogLS0tCiAgaXAvaXBsaW5rX2JyaWRnZS5jIHwgMSAtCiAgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2lwL2lwbGlua19icmlkZ2UuYyBiL2lwL2lwbGlua19icmlkZ2UuYwotaW5kZXggODE4YjQzYy4uZjA2NWIyMiAxMDA2NDQKK2luZGV4IGNjY2RlYzEuLmYwNjViMjIgMTAwNjQ0CiAtLS0gYS9pcC9pcGxpbmtfYnJpZGdlLmMKICsrKyBiL2lwL2lwbGlua19icmlkZ2UuYwotQEAgLTE1LDcgKzE1LDYgQEAKK0BAIC0xMyw3ICsxMyw2IEBACisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KICAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorLSNpbmNsdWRlIDxuZXRpbmV0L2V0aGVyLmg+CiAgI2luY2x1ZGUgPGxpbnV4L2lmX2xpbmsuaD4KICAjaW5jbHVkZSA8bGludXgvaWZfYnJpZGdlLmg+Ci0tI2luY2x1ZGUgPG5ldGluZXQvZXRoZXIuaD4KICAjaW5jbHVkZSA8bmV0L2lmLmg+Ci0gCi0gI2luY2x1ZGUgInJ0X25hbWVzLmgiCiAtLSAKIDIuNy40CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLzAwMDEtaXByb3V0ZTItZGUtYmFzaC1zY3JpcHRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvMDAwMS1pcHJvdXRlMi1kZS1iYXNoLXNjcmlwdHMucGF0Y2gKaW5kZXggMzljN2Q0MC4uYzNkM2ZlYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvMDAwMS1pcHJvdXRlMi1kZS1iYXNoLXNjcmlwdHMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvMDAwMS1pcHJvdXRlMi1kZS1iYXNoLXNjcmlwdHMucGF0Y2gKQEAgLTUsMTQgKzUsMTMgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0KIC0tLQotIGlwL2lmY2ZnIHwgICAxNSArKysrKysrKy0tLS0tLS0KLSBpcC9ydHByICB8ICAgIDIgKy0KKyBpcC9pZmNmZyB8IDE1ICsrKysrKysrLS0tLS0tLQorIGlwL3J0cHIgIHwgIDIgKy0KICAyIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2lwL2lmY2ZnIGIvaXAvaWZjZmcKLWluZGV4IDA4M2Q5ZGYuLjYwYmNmMWYgMTAwNjQ0CitpbmRleCAzMGEyZGM0Li44Njc3YjJlIDEwMDY0NAogLS0tIGEvaXAvaWZjZmcKICsrKyBiL2lwL2lmY2ZnCiBAQCAtMSwxMiArMSwxMyBAQApAQCAtNDMsNyArNDIsNyBAQAogLWlwIHJvdXRlIGFkZCB1bnJlYWNoYWJsZSAyNTUuMjU1LjI1NS4yNTUgPiYgL2Rldi9udWxsCiAraXAgcm91dGUgYWRkIHVucmVhY2hhYmxlIDIyNC4wLjAuMC8yNCA+IC9kZXYvbnVsbCAyPiYxCiAraXAgcm91dGUgYWRkIHVucmVhY2hhYmxlIDI1NS4yNTUuMjU1LjI1NSA+IC9kZXYvbnVsbCAyPiYxCi0gaWYgWyBgaXAgbGluayBscyAkZGV2IHwgZ3JlcCAtYyBNVUxUSUNBU1RgIC1nZSAxIF07IHRoZW4KKyBpZiBbICJgaXAgbGluayBscyAkZGV2IHwgZ3JlcCAtYyBNVUxUSUNBU1RgIiAtZ2UgMSBdOyB0aGVuCiAtICBpcCByb3V0ZSBhZGQgMjI0LjAuMC4wLzQgZGV2ICRkZXYgc2NvcGUgZ2xvYmFsID4mIC9kZXYvbnVsbAogKyAgaXAgcm91dGUgYWRkIDIyNC4wLjAuMC80IGRldiAkZGV2IHNjb3BlIGdsb2JhbCA+IC9kZXYvbnVsbCAyPiYxCiAgZmkKQEAgLTYwLDUgKzU5LDUgQEAKICBleGVjIHRyICJbXFxcXF0iICJbCiAgXSIKIC0tIAotMS43LjkuNQorMi43LjQKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvMDAwMS1saWJjLWNvbXBhdC5oLWFkZC1tdXNsLXdvcmthcm91bmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi8wMDAxLWxpYmMtY29tcGF0LmgtYWRkLW11c2wtd29ya2Fyb3VuZC5wYXRjaAppbmRleCAzZDMyNGM5Li41MGM0YmZiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi8wMDAxLWxpYmMtY29tcGF0LmgtYWRkLW11c2wtd29ya2Fyb3VuZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi8wMDAxLWxpYmMtY29tcGF0LmgtYWRkLW11c2wtd29ya2Fyb3VuZC5wYXRjaApAQCAtMTUsMTMgKzE1LDEzIEBACiBTaWduZWQtb2ZmLWJ5OiBCYXJ1Y2ggU2lhY2ggPGJhcnVjaEB0a29zLmNvLmlsPgogU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+CiAtLS0KLSBpbmNsdWRlL2xpbnV4L2xpYmMtY29tcGF0LmggfCA0ICsrKy0KKyBpbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaCB8IDQgKysrLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbGliYy1jb21wYXQuaCBiL2luY2x1ZGUvbGludXgvbGliYy1jb21wYXQuaAorZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgKIGluZGV4IGYzODU3MWQuLjMwZjBiNjcgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2xpbnV4L2xpYmMtY29tcGF0LmgKLSsrKyBiL2luY2x1ZGUvbGludXgvbGliYy1jb21wYXQuaAorLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgKKysrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oCiBAQCAtNDksMTAgKzQ5LDEyIEBACiAgI2RlZmluZSBfTElCQ19DT01QQVRfSAogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvY29uZmlndXJlLWNyb3NzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvY29uZmlndXJlLWNyb3NzLnBhdGNoCmluZGV4IDg2NjYwOWMuLjhiNzVhMmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyL2NvbmZpZ3VyZS1jcm9zcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi9jb25maWd1cmUtY3Jvc3MucGF0Y2gKQEAgLTksMTkgKzksMTkgQEAKIFNpZ25lZC1vZmYtYnk6IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+CiBTaWduZWQtb2ZmLWJ5OiBTaGFuZSBXYW5nIDxzaGFuZS53YW5nQGludGVsLmNvbT4KIAotSW5kZXg6IGlwcm91dGUyLTMuNy4wL2NvbmZpZ3VyZQorSW5kZXg6IGlwcm91dGUyLTQuMTQuMS9jb25maWd1cmUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBpcHJvdXRlMi0zLjcuMC5vcmlnL2NvbmZpZ3VyZQotKysrIGlwcm91dGUyLTMuNy4wL2NvbmZpZ3VyZQorLS0tIGlwcm91dGUyLTQuMTQuMS5vcmlnL2NvbmZpZ3VyZQorKysrIGlwcm91dGUyLTQuMTQuMS9jb25maWd1cmUKIEBAIC0yLDYgKzIsNyBAQAotICMgVGhpcyBpcyBub3QgYW4gYXV0Y29uZiBnZW5lcmF0ZWQgY29uZmlndXJlCisgIyBUaGlzIGlzIG5vdCBhbiBhdXRvY29uZiBnZW5lcmF0ZWQgY29uZmlndXJlCiAgIwogIElOQ0xVREU9JHsxOi0iJFBXRC9pbmNsdWRlIn0KICtTWVNST09UPSQxCiAgCi0gIyBNYWtlIGEgdGVtcCBkaXJlY3RvcnkgaW4gYnVpbGQgdHJlZS4KLSBUTVBESVI9JChta3RlbXAgLWQgY29uZmlnLlhYWFhYWCkKLUBAIC0xNTgsNyArMTU5LDcgQEAgY2hlY2tfaXB0X2xpYl9kaXIoKQorICMgT3V0cHV0IGZpbGUgd2hpY2ggaXMgaW5wdXQgdG8gTWFrZWZpbGUKKyBDT05GSUc9Y29uZmlnLm1rCitAQCAtMTk1LDcgKzE5Niw3IEBAIGNoZWNrX2lwdF9saWJfZGlyKCkKICAJCXJldHVybgogIAlmaQogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTJfNC4xMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTJfNC4xMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYmQwNTQ1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzQuMTEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLXJlcXVpcmUgaXByb3V0ZTIuaW5jCi0KLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy9uZXQvJHtCUE59LyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtY3Jvc3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pcHJvdXRlMi1kZS1iYXNoLXNjcmlwdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLWFkZC1tdXNsLXdvcmthcm91bmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN0ZGludC5oLWV4cGxpY2l0bHktZm9yLVVJTlQxNl9NQVgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pcC1SZW1vdmUtdW5uZWVkLWhlYWRlci5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2E5NDk4ZGU4OGJjY2E5NWMzMDVkZjYxMDhhZTE5N2UiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzI2NzEwMjhiZGE2OTZkMGNiOGY0OGVjOGU3MDI1ODFjM2E1MDFjYWVlZDMzZWVjM2E4MWQ3MDQxY2JjODAyNiIKLQotIyBDRkxBR1MgYXJlIGNvbXB1dGVkIGluIE1ha2VmaWxlIGFuZCByZWZlcmVuY2UgQ0NPUFRTCi0jCi1FWFRSQV9PRU1BS0VfYXBwZW5kID0gIiBDQ09QVFM9JyR7Q0ZMQUdTfSciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl80LjE0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl80LjE0LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFlMmU0YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzQuMTQuMS5iYgpAQCAtMCwwICsxLDE1IEBACityZXF1aXJlIGlwcm91dGUyLmluYworCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMvbmV0LyR7QlBOfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLWNyb3NzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaXByb3V0ZTItZGUtYmFzaC1zY3JpcHRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGliYy1jb21wYXQuaC1hZGQtbXVzbC13b3JrYXJvdW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaXAtUmVtb3ZlLXVubmVlZC1oZWFkZXIucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjEwNzU0MjNkNzAyOWUwMmE4ZjIzZWQ0ZjQyYjdlMzcyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ0M2FjMDY4YWZjYzM1MGE0NDhmNDU4MWI2ZTI5MjMzMWVmN2U0ZTdhYTc0NmUzNDk4MTU4MmQ1ZmRiMTAwNjciCisKKyMgQ0ZMQUdTIGFyZSBjb21wdXRlZCBpbiBNYWtlZmlsZSBhbmQgcmVmZXJlbmNlIENDT1BUUworIworRVhUUkFfT0VNQUtFX2FwcGVuZCA9ICIgQ0NPUFRTPScke0NGTEFHU30nIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXJkYS11dGlscy9pcmRhLXV0aWxzLTAuOS4xOC9sZGZsYWdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXJkYS11dGlscy9pcmRhLXV0aWxzLTAuOS4xOC9sZGZsYWdzLnBhdGNoCmluZGV4IGU5NWZlMzUuLmIyNDZkZTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lyZGEtdXRpbHMvaXJkYS11dGlscy0wLjkuMTgvbGRmbGFncy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcmRhLXV0aWxzL2lyZGEtdXRpbHMtMC45LjE4L2xkZmxhZ3MucGF0Y2gKQEAgLTMsNzIgKzMsODQgQEAKIFNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAorSW5kZXg6IGlyZGEtdXRpbHMtMC45LjE4L2ZpbmRjaGlwL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gaXJkYS11dGlscy0wLjkuMTgub3JpZy9maW5kY2hpcC9NYWtlZmlsZQogKysrIGlyZGEtdXRpbHMtMC45LjE4L2ZpbmRjaGlwL01ha2VmaWxlCiBAQCAtNjUsNSArNjUsNSBAQCBpbnN0YWxsOiBmaW5kY2hpcAotCi0gZ2ZpbmRjaGlwOiBnZmluZGNoaXAuYwotCSQocHJuX2NjKQorIAorIGdmaW5kY2hpcDogZ2ZpbmRjaGlwLmMgCisgCSQocHJuX2NjKQogLQkkKEVDTUQpKSQoQ0MpICQoQ0ZMQUdTKSBgZ3RrLWNvbmZpZyAtLWNmbGFnc2AgICQ8IC1vICRAIGBndGstY29uZmlnIC0tbGlic2AKICsJJChFQ01EKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpIGBndGstY29uZmlnIC0tY2ZsYWdzYCAgJDwgLW8gJEAgYGd0ay1jb25maWcgLS1saWJzYAotCisgCitJbmRleDogaXJkYS11dGlscy0wLjkuMTgvaXJhdHRhY2gvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBpcmRhLXV0aWxzLTAuOS4xOC5vcmlnL2lyYXR0YWNoL01ha2VmaWxlCiArKysgaXJkYS11dGlscy0wLjkuMTgvaXJhdHRhY2gvTWFrZWZpbGUKIEBAIC00OSwxMyArNDksMTMgQEAgYWxsOiAkKFRBUkdFVFMpCi0KKyAKICBpcmF0dGFjaDogaXJhdHRhY2gubyB1dGlsLm8KLQkkKHBybl9jY19vKQorIAkkKHBybl9jY19vKQogLQkkKEVDTUQpJChDQykgJChDRkxBR1MpIGlyYXR0YWNoLm8gdXRpbC5vIC1vICRACiArCSQoRUNNRCkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSBpcmF0dGFjaC5vIHV0aWwubyAtbyAkQAotCi0KLQorIAorIAorIAogIGRvbmdsZV9hdHRhY2g6IGRvbmdsZV9hdHRhY2gubwotCSQocHJuX2NjX28pCisgCSQocHJuX2NjX28pCiAtCSQoRUNNRCkkKENDKSAkKENGTEFHUykgZG9uZ2xlX2F0dGFjaC5vIC1vICRACiArCSQoRUNNRCkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSBkb25nbGVfYXR0YWNoLm8gLW8gJEAKLQotCisgCisgCiAgaW5zdGFsbDogJChUQVJHRVRTKQorSW5kZXg6IGlyZGEtdXRpbHMtMC45LjE4L2lyZGFkdW1wL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gaXJkYS11dGlscy0wLjkuMTgub3JpZy9pcmRhZHVtcC9NYWtlZmlsZQogKysrIGlyZGEtdXRpbHMtMC45LjE4L2lyZGFkdW1wL01ha2VmaWxlCiBAQCAtNDAsNyArNDAsNyBAQCBsaWJfaXJkYWR1bXAuYTogJChMSUJJUkRBRFVNUF9PQkpTKQotCisgCiAgaXJkYWR1bXA6ICQoSVJEQURVTVBfT0JKUykgJChMSUJJUkRBRFVNUF9UQVJHRVQpCi0JJChwcm5fY2NfbykKKyAJJChwcm5fY2NfbykKIC0JJChFQ01EKSQoQ0MpICQoQ0ZMQUdTKSBgcGtnLWNvbmZpZyAtLWxpYnMgZ2xpYi0yLjBgIC1vICAkKElSREFEVU1QX1RBUkdFVCkgJDwgJChMSUJJUkRBRFVNUF9UQVJHRVQpCiArCSQoRUNNRCkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSBgcGtnLWNvbmZpZyAtLWxpYnMgZ2xpYi0yLjBgIC1vICAkKElSREFEVU1QX1RBUkdFVCkgJDwgJChMSUJJUkRBRFVNUF9UQVJHRVQpCi0KLQorIAorIAogIC5jLm86CitJbmRleDogaXJkYS11dGlscy0wLjkuMTgvaXJkYXBpbmcvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBpcmRhLXV0aWxzLTAuOS4xOC5vcmlnL2lyZGFwaW5nL01ha2VmaWxlCiArKysgaXJkYS11dGlscy0wLjkuMTgvaXJkYXBpbmcvTWFrZWZpbGUKIEBAIC01Niw3ICs1Niw3IEBAIGFsbDogJChUQVJHRVRTKQotCisgCiAgaXJkYXBpbmc6ICQoT0JKUykKLQkkKHBybl9jY19vKQorIAkkKHBybl9jY19vKQogLQkkKEVDTUQpJChDQykgJChDRkxBR1MpICQoT0JKUykgLW8gJEAKICsJJChFQ01EKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoT0JKUykgLW8gJEAKLQotCisgCisgCiAgLmMubzoKK0luZGV4OiBpcmRhLXV0aWxzLTAuOS4xOC9pcm5ldGQvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBpcmRhLXV0aWxzLTAuOS4xOC5vcmlnL2lybmV0ZC9NYWtlZmlsZQogKysrIGlyZGEtdXRpbHMtMC45LjE4L2lybmV0ZC9NYWtlZmlsZQogQEAgLTUwLDcgKzUwLDcgQEAgYWxsOiAkKFRBUkdFVFMpCi0KKyAKICBpcm5ldGQ6ICQoT0JKUykKLQkkKHBybl9jY19vKQorIAkkKHBybl9jY19vKQogLQkkKEVDTUQpJChDQykgJChDRkxBR1MpICQoT0JKUykgLW8gJEAKICsJJChFQ01EKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoT0JKUykgLW8gJEAKLQotCisgCisgCiAgaW5zdGFsbDogaXJuZXRkCitJbmRleDogaXJkYS11dGlscy0wLjkuMTgvcHNpb24vTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBpcmRhLXV0aWxzLTAuOS4xOC5vcmlnL3BzaW9uL01ha2VmaWxlCiArKysgaXJkYS11dGlscy0wLjkuMTgvcHNpb24vTWFrZWZpbGUKIEBAIC0yNSw0ICsyNSw0IEBAIGluc3RhbGw6ICQoUFNJT05fVEFSR0VUUykKICBDRkxBR1MgKz0gLWcgLUkuLi9pbmNsdWRlIC1XYWxsIC1Xc3RyaWN0LXByb3RvdHlwZXMgJChSUE1fT1BUX0ZMQUdTKQotIGlycHNpb241OgotCSQocHJuX2NjX28pCisgaXJwc2lvbjU6IAorIAkkKHBybl9jY19vKQogLQkkKEVDTUQpJChDQykgJChDRkxBR1MpICQoUFNJT05fU1JDKSAtbyAkQAogXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCiArCSQoRUNNRCkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAkKFBTSU9OX1NSQykgLW8gJEAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3L2l3XzQuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pdy9pd180LjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxYjE3ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pdy9pd180LjE0LmJiCkBAIC0wLDAgKzEsMzMgQEAKK1NVTU1BUlkgPSAibmw4MDIxMSBiYXNlZCBDTEkgY29uZmlndXJhdGlvbiB1dGlsaXR5IGZvciB3aXJlbGVzcyBkZXZpY2VzIgorREVTQ1JJUFRJT04gPSAiaXcgaXMgYSBuZXcgbmw4MDIxMSBiYXNlZCBDTEkgY29uZmlndXJhdGlvbiB1dGlsaXR5IGZvciBcCit3aXJlbGVzcyBkZXZpY2VzLiBJdCBzdXBwb3J0cyBhbG1vc3QgYWxsIG5ldyBkcml2ZXJzIHRoYXQgaGF2ZSBiZWVuIGFkZGVkIFwKK3RvIHRoZSBrZXJuZWwgcmVjZW50bHkuICIKK0hPTUVQQUdFID0gImh0dHA6Ly93aXJlbGVzcy5rZXJuZWwub3JnL2VuL3VzZXJzL0RvY3VtZW50YXRpb24vaXciCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTg3ODYxOGE1YzRhZjI1ZTliOTNlZjBiZTFhOTNmNzc0IgorCitERVBFTkRTID0gImxpYm5sIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvbmV0d29yay9pdy8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pdy12ZXJzaW9uLnNoLWRvbi10LXVzZS1naXQtZGVzY3JpYmUtZm9yLXZlcnNpb25pbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2VwYXJhdGUtb2JqZGlyLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjIwNjc1MTZjYTk5NDBmZGI4YzA5MWVlMzI1MGRhMzc0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImEwYzNhYWQ2ZmY1MjIzNGQwM2EyNTIyYmEyZWJhNTcwZTM2YWJiM2U2MGRjMjliZjBiMWNlODhkZDcyNWQ2ZDQiCisKK2luaGVyaXQgcGtnY29uZmlnCisKK0VYVFJBX09FTUFLRSA9ICJcCisgICAgLWYgJyR7U30vTWFrZWZpbGUnIFwKKyAgICBcCisgICAgJ1BSRUZJWD0ke3ByZWZpeH0nIFwKKyAgICAnU0JJTkRJUj0ke3NiaW5kaXJ9JyBcCisgICAgJ01BTkRJUj0ke21hbmRpcn0nIFwKKyIKK0IgPSAiJHtXT1JLRElSfS9idWlsZCIKKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3L2l3XzQuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3L2l3XzQuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRhZWIwNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pdy9pd180LjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIm5sODAyMTEgYmFzZWQgQ0xJIGNvbmZpZ3VyYXRpb24gdXRpbGl0eSBmb3Igd2lyZWxlc3MgZGV2aWNlcyIKLURFU0NSSVBUSU9OID0gIml3IGlzIGEgbmV3IG5sODAyMTEgYmFzZWQgQ0xJIGNvbmZpZ3VyYXRpb24gdXRpbGl0eSBmb3IgXAotd2lyZWxlc3MgZGV2aWNlcy4gSXQgc3VwcG9ydHMgYWxtb3N0IGFsbCBuZXcgZHJpdmVycyB0aGF0IGhhdmUgYmVlbiBhZGRlZCBcCi10byB0aGUga2VybmVsIHJlY2VudGx5LiAiCi1IT01FUEFHRSA9ICJodHRwOi8vd2lyZWxlc3Mua2VybmVsLm9yZy9lbi91c2Vycy9Eb2N1bWVudGF0aW9uL2l3IgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Nzg2MThhNWM0YWYyNWU5YjkzZWYwYmUxYTkzZjc3NCIKLQotREVQRU5EUyA9ICJsaWJubCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvaXcvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaXctdmVyc2lvbi5zaC1kb24tdC11c2UtZ2l0LWRlc2NyaWJlLWZvci12ZXJzaW9uaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NlcGFyYXRlLW9iamRpci5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwNmU5NmFiN2E1YzY1MmY4ZWFlZDZmNzE1MzNhOWUwZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxMmY5MjFmM2RiZTBmMzNjMzA5ZjVmMjg5MWNjY2Y1MzI1Yzk0YmQ0OGRjZWViMTAyZGUxODNmNWYwNDhhOWUyIgotCi1pbmhlcml0IHBrZ2NvbmZpZwotCi1FWFRSQV9PRU1BS0UgPSAiXAotICAgIC1mICcke1N9L01ha2VmaWxlJyBcCi0gICAgXAotICAgICdQUkVGSVg9JHtwcmVmaXh9JyBcCi0gICAgJ1NCSU5ESVI9JHtzYmluZGlyfScgXAotICAgICdNQU5ESVI9JHttYW5kaXJ9JyBcCi0iCi1CID0gIiR7V09SS0RJUn0vYnVpbGQiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZWFyZC9uZWFyZC9NYWtlZmlsZS5hbS1maXgtcGFyYWxsZWwtaXNzdWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZWFyZC9uZWFyZC9NYWtlZmlsZS5hbS1maXgtcGFyYWxsZWwtaXNzdWUucGF0Y2gKaW5kZXggNDY2MDY3Ni4uNmU4NjQwNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmVhcmQvbmVhcmQvTWFrZWZpbGUuYW0tZml4LXBhcmFsbGVsLWlzc3VlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25lYXJkL25lYXJkL01ha2VmaWxlLmFtLWZpeC1wYXJhbGxlbC1pc3N1ZS5wYXRjaApAQCAtMTYsMTggKzE2LDE1IEBACiAgTWFrZWZpbGUuYW0gfCAgICAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDMyNDEzMTEuLmE0M2VhYTIgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0xNjQsNiArMTY0LDcgQEAgTUFJTlRBSU5FUkNMRUFORklMRVMgPSBNYWtlZmlsZS5pbiBcCitJbmRleDogbmVhcmQtMC4xNi9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5lYXJkLTAuMTYub3JpZy9NYWtlZmlsZS5hbQorKysrIG5lYXJkLTAuMTYvTWFrZWZpbGUuYW0KK0BAIC0yNDQsNiArMjQ0LDcgQEAgU0VEX1BST0NFU1MgPSAkKEFNX1ZfR0VOKSQoTUtESVJfUCkgJChkaQogIHNyYy9wbHVnaW4uJChPQkpFWFQpOiBzcmMvYnVpbHRpbi5oCiAgCiAgc3JjL2J1aWx0aW4uaDogc3JjL2dlbmJ1aWx0aW4gJChidWlsdGluX3NvdXJjZXMpCiArCSQoQU1fVl9hdCkkKE1LRElSX1ApIHNyYwogIAkkKEFNX1ZfR0VOKSQoc3JjZGlyKS9zcmMvZ2VuYnVpbHRpbiAkKGJ1aWx0aW5fbW9kdWxlcykgPiAkQAogIAotICQoc3JjX25lYXJkX09CSkVDVFMpIFwKLS0tIAotMS43LjkuNQotCisgc2UvcGx1Z2luLiQoT0JKRVhUKTogc2UvYnVpbHRpbi5oCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvZmlsZXMvYnVnZml4LWFkanVzdC1zdGF0ZC1zZXJ2aWNlLW5hbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvZmlsZXMvYnVnZml4LWFkanVzdC1zdGF0ZC1zZXJ2aWNlLW5hbWUucGF0Y2gKaW5kZXggMTRiZDQwMy4uODIyOTM5ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL2ZpbGVzL2J1Z2ZpeC1hZGp1c3Qtc3RhdGQtc2VydmljZS1uYW1lLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9maWxlcy9idWdmaXgtYWRqdXN0LXN0YXRkLXNlcnZpY2UtbmFtZS5wYXRjaApAQCAtMTYsMTEgKzE2LDExIEBACiAgdXRpbHMvc3RhdGQvc3RhcnQtc3RhdGQgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS91dGlscy9zdGF0ZC9zdGFydC1zdGF0ZCBiL3V0aWxzL3N0YXRkL3N0YXJ0LXN0YXRkCi1pbmRleCA4MjExYTkwLi4zYzJhYTZmIDEwMDc1NQotLS0tIGEvdXRpbHMvc3RhdGQvc3RhcnQtc3RhdGQKLSsrKyBiL3V0aWxzL3N0YXRkL3N0YXJ0LXN0YXRkCi1AQCAtMTYsNyArMTYsNyBAQCBmaQorSW5kZXg6IG5mcy11dGlscy0yLjEuMS91dGlscy9zdGF0ZC9zdGFydC1zdGF0ZAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5mcy11dGlscy0yLjEuMS5vcmlnL3V0aWxzL3N0YXRkL3N0YXJ0LXN0YXRkCisrKysgbmZzLXV0aWxzLTIuMS4xL3V0aWxzL3N0YXRkL3N0YXJ0LXN0YXRkCitAQCAtMjgsNyArMjgsNyBAQCBmaQogICMgRmlyc3QgdHJ5IHN5c3RlbWQgaWYgaXQncyBpbnN0YWxsZWQuCiAgaWYgWyAtZCAvcnVuL3N5c3RlbWQvc3lzdGVtIF07IHRoZW4KICAgICAgIyBRdWl0IG9ubHkgaWYgdGhlIGNhbGwgd29ya2VkLgpAQCAtMjgsNyArMjgsNCBAQAogKyAgICBzeXN0ZW1jdGwgc3RhcnQgbmZzLXN0YXRkLnNlcnZpY2UgJiYgZXhpdAogIGZpCiAgCi0gIyBGYWxsIGJhY2sgdG8gbGF1bmNoaW5nIGl0IG91cnNlbHZlcy4KLS0tIAotMi4xLjQKLQorIGNkIC8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1jb25maWd1cmUtQWxsb3ctdG8tZXhwbGljaXRseS1kaXNhYmxlLW5mc2lkbWFwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLWNvbmZpZ3VyZS1BbGxvdy10by1leHBsaWNpdGx5LWRpc2FibGUtbmZzaWRtYXAucGF0Y2gKaW5kZXggNzAyNWZiNS4uMjZiNTU4YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLWNvbmZpZ3VyZS1BbGxvdy10by1leHBsaWNpdGx5LWRpc2FibGUtbmZzaWRtYXAucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLWNvbmZpZ3VyZS1BbGxvdy10by1leHBsaWNpdGx5LWRpc2FibGUtbmZzaWRtYXAucGF0Y2gKQEAgLTEyLDExICsxMiwxMSBAQAogIGNvbmZpZ3VyZS5hYyB8IDEwICsrKysrKysrKy0KICAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGJmNDMzZDYuLjI4YThmNjIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTY5LDYgKzY5LDEyIEBAIEFDX0FSR19FTkFCTEUobmZzdjQsCitJbmRleDogbmZzLXV0aWxzLTIuMS4xL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5mcy11dGlscy0yLjEuMS5vcmlnL2NvbmZpZ3VyZS5hYworKysrIG5mcy11dGlscy0yLjEuMS9jb25maWd1cmUuYWMKK0BAIC05Miw2ICs5MiwxMiBAQCBBQ19BUkdfRU5BQkxFKG5mc3Y0LAogIAlBQ19TVUJTVChlbmFibGVfbmZzdjQpCiAgCUFNX0NPTkRJVElPTkFMKENPTkZJR19ORlNWNCwgW3Rlc3QgIiRlbmFibGVfbmZzdjQiID0gInllcyJdKQogIApAQCAtMjcsOSArMjcsOSBAQAogKyAgICAgICAgZW5hYmxlX25mc2lkbWFwPXllcykKICsKICBBQ19BUkdfRU5BQkxFKG5mc3Y0MSwKLSAJW0FDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1uZnN2NDFdLAotICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGUgc3VwcG9ydCBmb3IgTkZTdjQxIEA8OkBkZWZhdWx0PXllc0A6PkBdKV0sCi1AQCAtMjk2LDcgKzMwMiw3IEBAIGZpCisgCVtBQ19IRUxQX1NUUklORyhbLS1kaXNhYmxlLW5mc3Y0MV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGUgc3VwcG9ydCBmb3IgTkZTdjQxIEA8OkBkZWZhdWx0PW5vQDo+QF0pXSwKK0BAIC0zMzksNyArMzQ1LDcgQEAgZmkKICAKICBkbmwgZW5hYmxlIG5mc2lkbWFwIHdoZW4gaXRzIHN1cHBvcnQgYnkgbGlibmZzaWRtYXAKICBBTV9DT05ESVRJT05BTChDT05GSUdfTkZTRENMVFJBQ0ssIFt0ZXN0ICIkZW5hYmxlX25mc2RjbHRyYWNrIiA9ICJ5ZXMiIF0pCkBAIC0zOCw2ICszOCwzIEBACiAgCiAgCiAgaWYgdGVzdCAiJGtuZnNkX2N2X2dsaWJjMiIgPSBubzsgdGhlbgotLS0gCi0xLjguNC4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvbmZzLXV0aWxzLTEuMi4zLXNtLW5vdGlmeS1yZXNfaW5pdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvbmZzLXV0aWxzLTEuMi4zLXNtLW5vdGlmeS1yZXNfaW5pdC5wYXRjaAppbmRleCBkOGY4MTgxLi44OWE4YTU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL25mcy11dGlscy0xLjIuMy1zbS1ub3RpZnktcmVzX2luaXQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9uZnMtdXRpbHMtMS4yLjMtc20tbm90aWZ5LXJlc19pbml0LnBhdGNoCkBAIC0xMyw5ICsxMywxMCBAQAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIAogCi1kaWZmIC11cCBuZnMtdXRpbHMtMS4yLjMvdXRpbHMvc3RhdGQvc20tbm90aWZ5LmMub3JpZyBuZnMtdXRpbHMtMS4yLjMvdXRpbHMvc3RhdGQvc20tbm90aWZ5LmMKLS0tLSBuZnMtdXRpbHMtMS4yLjMvdXRpbHMvc3RhdGQvc20tbm90aWZ5LmMub3JpZwkyMDEwLTA5LTI4IDA4OjI0OjE2LjAwMDAwMDAwMCAtMDQwMAotKysrIG5mcy11dGlscy0xLjIuMy91dGlscy9zdGF0ZC9zbS1ub3RpZnkuYwkyMDEwLTEwLTE1IDE2OjQ0OjQzLjQ4NzExOTYwMSAtMDQwMAorSW5kZXg6IG5mcy11dGlscy0yLjEuMS91dGlscy9zdGF0ZC9zbS1ub3RpZnkuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5mcy11dGlscy0yLjEuMS5vcmlnL3V0aWxzL3N0YXRkL3NtLW5vdGlmeS5jCisrKysgbmZzLXV0aWxzLTIuMS4xL3V0aWxzL3N0YXRkL3NtLW5vdGlmeS5jCiBAQCAtMjgsNiArMjgsOSBAQAogICNpbmNsdWRlIDxuZXRkYi5oPgogICNpbmNsdWRlIDxlcnJuby5oPgpAQCAtMjQsOSArMjUsOSBAQAogKyNpbmNsdWRlIDxhcnBhL25hbWVzZXIuaD4KICsjaW5jbHVkZSA8cmVzb2x2Lmg+CiAgCisgI2luY2x1ZGUgImNvbmZmaWxlLmgiCiAgI2luY2x1ZGUgInNvY2thZGRyLmgiCi0gI2luY2x1ZGUgInhsb2cuaCIKLUBAIC04NCw2ICs4Nyw3IEBAIHNtbl9sb29rdXAoY29uc3QgY2hhciAqbmFtZSkKK0BAIC04OSw2ICs5Miw3IEBAIHNtbl9sb29rdXAoY29uc3QgY2hhciAqbmFtZSkKICAJfTsKICAJaW50IGVycm9yOwogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHNfMi4xLjEuYmIKaW5kZXggZDkxN2M0ZC4uNzk0NTNhZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjEuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzXzIuMS4xLmJiCkBAIC01Niw3ICs1Niw2IEBACiBFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXN0YXRkdXNlcj1ycGN1c2VyIFwKICAgICAgICAgICAgICAgICAtLWVuYWJsZS1tb3VudGNvbmZpZyBcCiAgICAgICAgICAgICAgICAgLS1lbmFibGUtbGlibW91bnQtbW91bnQgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1uZnN2NDEgXAogICAgICAgICAgICAgICAgIC0tZW5hYmxlLXV1aWQgXAogICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1nc3MgXAogICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1uZnNkY2x0cmFjayBcCkBAIC03MCw2ICs2OSw4IEBACiBQQUNLQUdFQ09ORklHW3RjcC13cmFwcGVyc10gPSAiLS13aXRoLXRjcC13cmFwcGVycywtLXdpdGhvdXQtdGNwLXdyYXBwZXJzLHRjcC13cmFwcGVycyIKIFBBQ0tBR0VDT05GSUdbbmZzaWRtYXBdID0gIi0tZW5hYmxlLW5mc2lkbWFwLC0tZGlzYWJsZS1uZnNpZG1hcCxrZXl1dGlscyIKIFBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCisjIGxpYmRldm1hcHBlciBpcyBhdmFpbGFibGUgaW4gbWV0YS1vZQorUEFDS0FHRUNPTkZJR1tuZnN2NDFdID0gIi0tZW5hYmxlLW5mc3Y0MSwtLWRpc2FibGUtbmZzdjQxLGxpYmRldm1hcHBlciIKIAogUEFDS0FHRVMgPSsgIiR7UE59LWNsaWVudCAke1BOfS1tb3VudCAke1BOfS1zdGF0cyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm8uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm8uaW5jCmluZGV4IDY3NmEwYzAuLjA0NzI0MTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9uby5pbmMKQEAgLTUsNyArNSw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYjcyM2I2MTUzOWZlZWYwMTNkZTQ3NmU2OGI1YzUwYSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvb2Zvbm8uaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT0zY2UxN2Q1OTc4ZWYzNDQ1ZGVmMjY1Yjk4ODk5YzJlZSIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwZGF0ZS1yYy5kIHN5c3RlbWQgYmx1ZXRvb3RoCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLXJjLmQgc3lzdGVtZCBibHVldG9vdGggZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRhdGEKIAogREVQRU5EUyAgPSAiZGJ1cyBnbGliLTIuMCB1ZGV2IG1vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mbyIKIApAQCAtMjYsMTAgKzI2LDYgQEAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewogICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vb2Zvbm8gJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL29mb25vCi0KLSAgIyBPZm9ubyBzdGlsbCBoYXMgb25lIHRlc3QgdG9vbCB0aGF0IHJlZmVycyB0byBQeXRob24gMiBpbiB0aGUgc2hlYmFuZwotICBzZWQgLWkgLWUgJzFzLCMhLipweXRob24uKiwjISR7YmluZGlyfS9weXRob24zLCcgJHtEfSR7bGliZGlyfS9vZm9uby90ZXN0L3NldC1kZHIKLQogfQogCiBQQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMiCkBAIC0zOSw0ICszNSw1IEBACiAKIEZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0iCiBGSUxFU18ke1BOfS10ZXN0cyA9ICIke2xpYmRpcn0vJHtCUE59L3Rlc3QiCi1SREVQRU5EU18ke1BOfS10ZXN0cyA9ICJweXRob24zIHB5dGhvbjMtcHlnb2JqZWN0IHB5dGhvbjMtZGJ1cyIKK1JERVBFTkRTXyR7UE59LXRlc3RzID0gInB5dGhvbjMgcHl0aG9uMy1kYnVzIgorUkRFUEVORFNfJHtQTn0tdGVzdHMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICdweXRob24zLXB5Z29iamVjdCcsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9uby91c2UtcHl0aG9uMy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vL3VzZS1weXRob24zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiODQwNzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9uby91c2UtcHl0aG9uMy5wYXRjaApAQCAtMCwwICsxLDI3IEBACitzZXQtZGRyIHNob3VsZCB1c2UgUHl0aG9uMyBsaWtlIGFsbCB0aGUgb3RoZXIgdGVzdHMuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitGcm9tIDE3YjY5Y2QxZGE0YzVjNWY3MzJhY2IzOGNhMTYwMjQ0NmM1NjdlZTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogTW9uLCAyOSBKYW4gMjAxOCAxMTozMToyNSArMDAwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0L3NldGRkcjogdXNlIFB5dGhvbiAzCisKK0FsbCB0aGUgb3RoZXIgdGVzdHMgdXNlIFB5dGhvbiAzLCBzbyB0aGlzIHNob3VsZCB0by4KKy0tLQorIHRlc3Qvc2V0LWRkciB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Rlc3Qvc2V0LWRkciBiL3Rlc3Qvc2V0LWRkcgoraW5kZXggNWQwNjFiOTUuLjMzNjMxZjMxIDEwMDc1NQorLS0tIGEvdGVzdC9zZXQtZGRyCisrKysgYi90ZXN0L3NldC1kZHIKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vcHl0aG9uCisrIyEvdXNyL2Jpbi9weXRob24zCisgCisgaW1wb3J0IHN5cworIGltcG9ydCBkYnVzCistLSAKKzIuMTEuMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm9fMS4yMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vXzEuMjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4Zjk4M2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm9fMS4yMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotcmVxdWlyZSBvZm9uby5pbmMKLQotU1JDX1VSSSAgPSAiXAotICAke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L25ldHdvcmsvJHtCUE59LyR7QlB9LnRhci54eiBcCi0gIGZpbGU6Ly9vZm9ubyBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiZmFkMDYzMGZjZTZhOWFlY2RiN2RiMzdiYzFmMWRiN2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWQ3YmE4ZjQ4MWE3NzE1ZDAxM2E3OWY4ZDY0NzdlYjg5ZDhhYWFlMzk5Mzk1ZDVkMDA4YTEzMTdjMzRhMzFkNSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vXzEuMjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9ub18xLjIyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1N2VhYTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9ub18xLjIyLmJiCkBAIC0wLDAgKzEsOSBAQAorcmVxdWlyZSBvZm9uby5pbmMKKworU1JDX1VSSSAgPSAiXAorICAke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L25ldHdvcmsvJHtCUE59LyR7QlB9LnRhci54eiBcCisgIGZpbGU6Ly9vZm9ubyBcCisgIGZpbGU6Ly91c2UtcHl0aG9uMy5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiMmE2ODNhYjhlOTg0NDhhZDhiYzVkYzk4NjhkMjg5M2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGUzNGE2Njk2YzMwMGM5ODQxYjU1ZThkZmY2NDBiZDMwOTZlNDlmNWRiZTU1YmJlYmFhNjlhNzE2NzZmNjg3ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC8wMDAxLW9wZW5zc2gtRml4LXN5bnRheC1lcnJvci1vbi14MzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvMDAwMS1vcGVuc3NoLUZpeC1zeW50YXgtZXJyb3Itb24teDMyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZTllMjAwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC8wMDAxLW9wZW5zc2gtRml4LXN5bnRheC1lcnJvci1vbi14MzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIGE3ZTM1OWQ0YmEzNDVhYTJhMTNjMDdmMTA1NzE4NGU5YjRlNTk4YTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBzd2VlYXVuIDxzd2VlLmF1bi5raG9yQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgMjIgQXVnIDIwMTcgMTE6MTk6NDggLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gb3BlbnNzaDogRml4IHN5bnRheCBlcnJvciBvbiB4MzIKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotVGhpcyBidWcgaGFzIGJlZW4gZml4ZWQgaW4gdl83LjUgYnJhbmNoIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuc3NoLwotb3BlbnNzaC1wb3J0YWJsZS90cmVlL1ZfN181IGFuZCBtYXN0ZXIgYnJhbmNoIGh0dHBzOi8vZ2l0aHViLmNvbS8KLW9wZW5zc2gvb3BlbnNzaC1wb3J0YWJsZS90cmVlL21hc3Rlci4KLQotRml4IGNvbXBpbGF0aW9uIGVycm9yIGR1cmluZyBvcGVuc3NoIHgzMiBidWlsZCBkdWUgdG8gc3ludGF4IGVycm9yLgotCi1TaWduZWQtb2ZmLWJ5OiBzd2VlYXVuIDxzd2VlLmF1bi5raG9yQGludGVsLmNvbT4KLS0tLQotIHNhbmRib3gtc2VjY29tcC1maWx0ZXIuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NhbmRib3gtc2VjY29tcC1maWx0ZXIuYyBiL3NhbmRib3gtc2VjY29tcC1maWx0ZXIuYwotaW5kZXggM2ExYWVkYy4uYThkNDcyYSAxMDA2NDQKLS0tLSBhL3NhbmRib3gtc2VjY29tcC1maWx0ZXIuYwotKysrIGIvc2FuZGJveC1zZWNjb21wLWZpbHRlci5jCi1AQCAtMjM1LDcgKzIzNSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc29ja19maWx0ZXIgcHJlYXV0aF9pbnNuc1tdID0gewotIAkgKiB4ODYtNjQgc3lzY2FsbCB1bmRlciBzb21lIGNpcmN1bXN0YW5jZXMsIGUuZy4KLSAJICogaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvODQ5OTIzCi0gCSAqLwotLQlTQ19BTExPVyhfX05SX2Nsb2NrX2dldHRpbWUgJiB+X19YMzJfU1lTQ0FMTF9CSVQpOwotKwlTQ19BTExPVyhfX05SX2Nsb2NrX2dldHRpbWUgJiB+X19YMzJfU1lTQ0FMTF9CSVQpLAotICNlbmRpZgotIAotIAkvKiBEZWZhdWx0IGRlbnkgKi8KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL2FkZC10ZXN0LXN1cHBvcnQtZm9yLWJ1c3lib3gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvYWRkLXRlc3Qtc3VwcG9ydC1mb3ItYnVzeWJveC5wYXRjaAppbmRleCBhZGMyNWM2Li5iODQwMmE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvYWRkLXRlc3Qtc3VwcG9ydC1mb3ItYnVzeWJveC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvYWRkLXRlc3Qtc3VwcG9ydC1mb3ItYnVzeWJveC5wYXRjaApAQCAtNiw2NCArNiw0MiBAQAogU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBlbmVhLmNvbT4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCi1JbmRleDogb3BlbnNzaC02LjhwMS9yZWdyZXNzL2NpcGhlci1zcGVlZC5zaAorSW5kZXg6IG9wZW5zc2gtNy42cDEvcmVncmVzcy9jaXBoZXItc3BlZWQuc2gKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuc3NoLTYuOHAxLm9yaWcvcmVncmVzcy9jaXBoZXItc3BlZWQuc2gKLSsrKyBvcGVuc3NoLTYuOHAxL3JlZ3Jlc3MvY2lwaGVyLXNwZWVkLnNoCistLS0gb3BlbnNzaC03LjZwMS5vcmlnL3JlZ3Jlc3MvY2lwaGVyLXNwZWVkLnNoCisrKysgb3BlbnNzaC03LjZwMS9yZWdyZXNzL2NpcGhlci1zcGVlZC5zaAogQEAgLTE3LDcgKzE3LDcgQEAgZm9yIGMgaW4gYCR7U1NIfSAtUSBjaXBoZXJgOyBkbyBuPTA7IGZvcgogIAkJcHJpbnRmICIlLTYwcyIgIiRjLyRtOiIKICAJCSggJHtTU0h9IC1vICdjb21wcmVzc2lvbiBubycgXAotIAkJCS1GICRPQkovc3NoX3Byb3h5IC0yIC1tICRtIC1jICRjIHNvbWVob3N0IFwKKyAJCQktRiAkT0JKL3NzaF9wcm94eSAtbSAkbSAtYyAkYyBzb21laG9zdCBcCiAtCQkJZXhlYyBzaCAtYyBcJyJkZCBvZj0vZGV2L251bGwgb2JzPTMyayJcJyBcCiArCQkJZXhlYyBzaCAtYyBcJyJkZCBvZj0vZGV2L251bGwgYnM9MzJrIlwnIFwKICAJCTwgJHtEQVRBfSApIDI+JjEgfCBnZXRieXRlcwogIAogIAkJaWYgWyAkPyAtbmUgMCBdOyB0aGVuCi1AQCAtNDIsNyArNDIsNyBAQCBmb3IgYyBpbiAkY2lwaGVyczsgZG8KLSAJCXByaW50ZiAiJS02MHMiICIkYzoiCi0gCQkoICR7U1NIfSAtbyAnY29tcHJlc3Npb24gbm8nIFwKLSAJCQktRiAkT0JKL3NzaF9wcm94eSAtMSAtYyAkYyBzb21laG9zdCBcCi0tCQkJZXhlYyBzaCAtYyBcJyJkZCBvZj0vZGV2L251bGwgb2JzPTMyayJcJyBcCi0rCQkJZXhlYyBzaCAtYyBcJyJkZCBvZj0vZGV2L251bGwgYnM9MzJrIlwnIFwKLSAJCTwgJHtEQVRBfSApIDI+JjEgfCBnZXRieXRlcwotIAkJaWYgWyAkPyAtbmUgMCBdOyB0aGVuCi0gCQkJZmFpbCAic3NoIC0xIGZhaWxlZCB3aXRoIGNpcGhlciAkYyIKLUluZGV4OiBvcGVuc3NoLTYuOHAxL3JlZ3Jlc3MvdHJhbnNmZXIuc2gKK0luZGV4OiBvcGVuc3NoLTcuNnAxL3JlZ3Jlc3MvdHJhbnNmZXIuc2gKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuc3NoLTYuOHAxLm9yaWcvcmVncmVzcy90cmFuc2Zlci5zaAotKysrIG9wZW5zc2gtNi44cDEvcmVncmVzcy90cmFuc2Zlci5zaAotQEAgLTE1LDcgKzE1LDcgQEAgZm9yIHAgaW4gJHtTU0hfUFJPVE9DT0xTfTsgZG8KLSAJZm9yIHMgaW4gMTAgMTAwIDFrIDMyayA2NGsgMTI4ayAyNTZrOyBkbwotIAkJdHJhY2UgInByb3RvICRwIGRkLXNpemUgJHtzfSIKLSAJCXJtIC1mICR7Q09QWX0KLS0JCWRkIGlmPSREQVRBIG9icz0ke3N9IDI+IC9kZXYvbnVsbCB8IFwKLSsJCWRkIGlmPSREQVRBIGJzPSR7c30gMj4gL2Rldi9udWxsIHwgXAotIAkJCSR7U1NIfSAtcSAtJHAgLUYgJE9CSi9zc2hfcHJveHkgc29tZWhvc3QgImNhdCA+ICR7Q09QWX0iCi0gCQlpZiBbICQ/IC1uZSAwIF07IHRoZW4KLSAJCQlmYWlsICJzc2ggY2F0ICREQVRBIGZhaWxlZCIKLUluZGV4OiBvcGVuc3NoLTYuOHAxL3JlZ3Jlc3MveWVzLWhlYWQuc2gKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuc3NoLTYuOHAxLm9yaWcvcmVncmVzcy95ZXMtaGVhZC5zaAotKysrIG9wZW5zc2gtNi44cDEvcmVncmVzcy95ZXMtaGVhZC5zaAotQEAgLTQsNyArNCw3IEBACi0gdGlkPSJ5ZXMgcGlwZSBoZWFkIgotIAotIGZvciBwIGluICR7U1NIX1BST1RPQ09MU307IGRvCi0tCWxpbmVzPWAke1NTSH0gLSRwIC1GICRPQkovc3NoX3Byb3h5IHRoaXNob3N0ICdzaCAtYyAid2hpbGUgdHJ1ZTtkbyBlY2hvIHllcztkb25lIHwgX1BPU0lYMl9WRVJTSU9OPTE5OTIwOSBoZWFkIC0yMDAwIicgfCAoc2xlZXAgMyA7IHdjIC1sKWAKLSsJbGluZXM9YCR7U1NIfSAtJHAgLUYgJE9CSi9zc2hfcHJveHkgdGhpc2hvc3QgJ3NoIC1jICJ3aGlsZSB0cnVlO2RvIGVjaG8geWVzO2RvbmUgfCBfUE9TSVgyX1ZFUlNJT049MTk5MjA5IGhlYWQgLW4gMjAwMCInIHwgKHNsZWVwIDMgOyB3YyAtbClgCistLS0gb3BlbnNzaC03LjZwMS5vcmlnL3JlZ3Jlc3MvdHJhbnNmZXIuc2gKKysrKyBvcGVuc3NoLTcuNnAxL3JlZ3Jlc3MvdHJhbnNmZXIuc2gKK0BAIC0xMyw3ICsxMyw3IEBAIGNtcCAke0RBVEF9ICR7Q09QWX0JCXx8IGZhaWwgImNvcnJ1cHRlZAorIGZvciBzIGluIDEwIDEwMCAxayAzMmsgNjRrIDEyOGsgMjU2azsgZG8KKyAJdHJhY2UgImRkLXNpemUgJHtzfSIKKyAJcm0gLWYgJHtDT1BZfQorLQlkZCBpZj0kREFUQSBvYnM9JHtzfSAyPiAvZGV2L251bGwgfCBcCisrCWRkIGlmPSREQVRBIGJzPSR7c30gMj4gL2Rldi9udWxsIHwgXAorIAkJJHtTU0h9IC1xIC1GICRPQkovc3NoX3Byb3h5IHNvbWVob3N0ICJjYXQgPiAke0NPUFl9IgogIAlpZiBbICQ/IC1uZSAwIF07IHRoZW4KLSAJCWZhaWwgInllc3xoZWFkIHRlc3QgZmFpbGVkIgotIAkJbGluZXMgPSAwOwotSW5kZXg6IG9wZW5zc2gtNi44cDEvcmVncmVzcy9rZXktb3B0aW9ucy5zaAorIAkJZmFpbCAic3NoIGNhdCAkREFUQSBmYWlsZWQiCitJbmRleDogb3BlbnNzaC03LjZwMS9yZWdyZXNzL2tleS1vcHRpb25zLnNoCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3BlbnNzaC02LjhwMS5vcmlnL3JlZ3Jlc3Mva2V5LW9wdGlvbnMuc2gKLSsrKyBvcGVuc3NoLTYuOHAxL3JlZ3Jlc3Mva2V5LW9wdGlvbnMuc2gKLUBAIC01NCw3ICs1NCw3IEBAIGZvciBwIGluICR7U1NIX1BST1RPQ09MU307IGRvCistLS0gb3BlbnNzaC03LjZwMS5vcmlnL3JlZ3Jlc3Mva2V5LW9wdGlvbnMuc2gKKysrKyBvcGVuc3NoLTcuNnAxL3JlZ3Jlc3Mva2V5LW9wdGlvbnMuc2gKK0BAIC00Nyw3ICs0Nyw3IEBAIGZvciBmIGluIDEyNy4wLjAuMSAnMTI3LjAuMC4wXC84JzsgZG8KICAJZmkKICAKICAJc2VkICdzLy4qL2Zyb209IiciJGYiJyIgJi8nICRvcmlna2V5cyA+JGF1dGhrZXlzCiAtCWZyb209YGhlYWQgLTEgJGF1dGhrZXlzIHwgY3V0IC1mMSAtZCAnICdgCiArCWZyb209YGhlYWQgLW4gMSAkYXV0aGtleXMgfCBjdXQgLWYxIC1kICcgJ2AKLSAJdmVyYm9zZSAia2V5IG9wdGlvbiBwcm90byAkcCAkZnJvbSIKLSAJcj1gJHtTU0h9IC0kcCAtcSAtRiAkT0JKL3NzaF9wcm94eSBzb21laG9zdCAnZWNobyB0cnVlJ2AKKyAJdmVyYm9zZSAia2V5IG9wdGlvbiAkZnJvbSIKKyAJcj1gJHtTU0h9IC1xIC1GICRPQkovc3NoX3Byb3h5IHNvbWVob3N0ICdlY2hvIHRydWUnYAogIAlpZiBbICIkciIgPSAidHJ1ZSIgXTsgdGhlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL2Rpc2FibGUtY2lwaGVycy1ub3Qtc3VwcG9ydGVkLWJ5LU9wZW5TU0wtREVTLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL2Rpc2FibGUtY2lwaGVycy1ub3Qtc3VwcG9ydGVkLWJ5LU9wZW5TU0wtREVTLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhMmQxYTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvZGlzYWJsZS1jaXBoZXJzLW5vdC1zdXBwb3J0ZWQtYnktT3BlblNTTC1ERVMucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSAyNjVlYWFiOGIzOWQ4ZDg3MjEyMjRhNDhlZWZlZDViZjE2OTZkMzUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxOCBBcHIgMjAxOCAyMTo1ODozMiArMDgwMAorU3ViamVjdDogW1BBVENIXSBkaXNhYmxlIGNpcGhlcnMgbm90IHN1cHBvcnRlZCBieSBPcGVuU1NMIERFUworCitXaGlsZSBjb21waWxpbmcgb3BlbnNzbCB3aXRoIG9wdGlvbiBgbm8tZGVzJywgaXQgY2F1c2VkIHRoZSBvcGVuc3NoCitidWlsZCBmYWlsdXJlCisuLi4KK2NpcGhlci5jOjg1OjQxOiBlcnJvcjogJ0VWUF9kZXNfZWRlM19jYmMnIHVuZGVjbGFyZWQgaGVyZSAobm90IGluIGEgZnVuY3Rpb24pOworLi4uCisKK09wZW5TU0wgY29uZmlndXJlZCB0aGF0IHdheSBkZWZpbmVzIE9QRU5TU0xfTk9fREVTIHRvIGRpc2FibGUgZGVzCisKK1N1Z2dlc3RlZCBieSBkdHVja2VyQAorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbb3BlbnNzaC11bml4LWRldkBtaW5kcm90Lm9yZ10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgY2lwaGVyLmMgfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY2lwaGVyLmMgYi9jaXBoZXIuYworaW5kZXggYzNjZDVkYy4uODY1NThlMSAxMDA2NDQKKy0tLSBhL2NpcGhlci5jCisrKysgYi9jaXBoZXIuYworQEAgLTgyLDcgKzgyLDkgQEAgc3RydWN0IHNzaGNpcGhlciB7CisgCisgc3RhdGljIGNvbnN0IHN0cnVjdCBzc2hjaXBoZXIgY2lwaGVyc1tdID0geworICNpZmRlZiBXSVRIX09QRU5TU0wKKysjaWZuZGVmIE9QRU5TU0xfTk9fREVTCisgCXsgIjNkZXMtY2JjIiwJCTgsIDI0LCAwLCAwLCBDRkxBR19DQkMsIEVWUF9kZXNfZWRlM19jYmMgfSwKKysjZW5kaWYKKyAJeyAiYWVzMTI4LWNiYyIsCQkxNiwgMTYsIDAsIDAsIENGTEFHX0NCQywgRVZQX2Flc18xMjhfY2JjIH0sCisgCXsgImFlczE5Mi1jYmMiLAkJMTYsIDI0LCAwLCAwLCBDRkxBR19DQkMsIEVWUF9hZXNfMTkyX2NiYyB9LAorIAl7ICJhZXMyNTYtY2JjIiwJCTE2LCAzMiwgMCwgMCwgQ0ZMQUdfQ0JDLCBFVlBfYWVzXzI1Nl9jYmMgfSwKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL29wZW5zc2gtNy4xcDEtY29uZGl0aW9uYWwtY29tcGlsZS1kZXMtaW4tY2lwaGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL29wZW5zc2gtNy4xcDEtY29uZGl0aW9uYWwtY29tcGlsZS1kZXMtaW4tY2lwaGVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDk4Yjk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9vcGVuc3NoLTcuMXAxLWNvbmRpdGlvbmFsLWNvbXBpbGUtZGVzLWluLWNpcGhlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi1Gcm9tIDI3NzQwYzkxOGZlNWQ3ODQ0MWJjZjY5ZTdkMmVlZmIyM2RkZWNhNGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAxOSBKYW4gMjAxNyAwMzowMDowOCAtMDUwMAotU3ViamVjdDogW1BBVENIIDEvM10gUmVtb3ZlIGRlcyBpbiBjaXBoZXIuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBIYWlxaW5nIEJhaSA8SGFpcWluZy5CYWlAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY2lwaGVyLmMgfCAxOCArKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY2lwaGVyLmMgYi9jaXBoZXIuYwotaW5kZXggMmRlZjMzMy4uNTlmNjc5MiAxMDA2NDQKLS0tLSBhL2NpcGhlci5jCi0rKysgYi9jaXBoZXIuYwotQEAgLTUzLDggKzUzLDEwIEBACi0gCi0gI2lmZGVmIFdJVEhfU1NIMQotIGV4dGVybiBjb25zdCBFVlBfQ0lQSEVSICpldnBfc3NoMV9iZih2b2lkKTsKLSsjaWZuZGVmIE9QRU5TU0xfTk9fREVTCi0gZXh0ZXJuIGNvbnN0IEVWUF9DSVBIRVIgKmV2cF9zc2gxXzNkZXModm9pZCk7Ci0gZXh0ZXJuIGludCBzc2gxXzNkZXNfaXYoRVZQX0NJUEhFUl9DVFggKiwgaW50LCB1X2NoYXIgKiwgaW50KTsKLSsjZW5kaWYgLyogT1BFTlNTTF9OT19ERVMgKi8KLSAjZW5kaWYKLSAKLSBzdHJ1Y3Qgc3NoY2lwaGVyX2N0eCB7Ci1AQCAtODgsMTUgKzkwLDE5IEBAIHN0cnVjdCBzc2hjaXBoZXIgewotIAotIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3NoY2lwaGVyIGNpcGhlcnNbXSA9IHsKLSAjaWZkZWYgV0lUSF9TU0gxCi0rI2lmbmRlZiBPUEVOU1NMX05PX0RFUwotIAl7ICJkZXMiLAlTU0hfQ0lQSEVSX0RFUywgOCwgOCwgMCwgMCwgMCwgMSwgRVZQX2Rlc19jYmMgfSwKLSAJeyAiM2RlcyIsCVNTSF9DSVBIRVJfM0RFUywgOCwgMTYsIDAsIDAsIDAsIDEsIGV2cF9zc2gxXzNkZXMgfSwKLSsjZW5kaWYgLyogT1BFTlNTTF9OT19ERVMgKi8KLSAjIGlmbmRlZiBPUEVOU1NMX05PX0JGCi0gCXsgImJsb3dmaXNoIiwJU1NIX0NJUEhFUl9CTE9XRklTSCwgOCwgMzIsIDAsIDAsIDAsIDEsIGV2cF9zc2gxX2JmIH0sCi0gIyBlbmRpZiAvKiBPUEVOU1NMX05PX0JGICovCi0gI2VuZGlmIC8qIFdJVEhfU1NIMSAqLwotICNpZmRlZiBXSVRIX09QRU5TU0wKLSsjaWZuZGVmIE9QRU5TU0xfTk9fREVTCi0gCXsgIm5vbmUiLAlTU0hfQ0lQSEVSX05PTkUsIDgsIDAsIDAsIDAsIDAsIDAsIEVWUF9lbmNfbnVsbCB9LAotIAl7ICIzZGVzLWNiYyIsCVNTSF9DSVBIRVJfU1NIMiwgOCwgMjQsIDAsIDAsIDAsIDEsIEVWUF9kZXNfZWRlM19jYmMgfSwKLSsjZW5kaWYgLyogT1BFTlNTTF9OT19ERVMgKi8KLSAjIGlmbmRlZiBPUEVOU1NMX05PX0JGCi0gCXsgImJsb3dmaXNoLWNiYyIsCi0gCQkJU1NIX0NJUEhFUl9TU0gyLCA4LCAxNiwgMCwgMCwgMCwgMSwgRVZQX2JmX2NiYyB9LAotQEAgLTE4MCw4ICsxODYsMTAgQEAgY2lwaGVyX2tleWxlbihjb25zdCBzdHJ1Y3Qgc3NoY2lwaGVyICpjKQotIHVfaW50Ci0gY2lwaGVyX3NlY2xlbihjb25zdCBzdHJ1Y3Qgc3NoY2lwaGVyICpjKQotIHsKLSsjaWZuZGVmIE9QRU5TU0xfTk9fREVTCi0gCWlmIChzdHJjbXAoIjNkZXMtY2JjIiwgYy0+bmFtZSkgPT0gMCkKLSAJCXJldHVybiAxNDsKLSsjZW5kaWYgLyogT1BFTlNTTF9OT19ERVMgKi8KLSAJcmV0dXJuIGNpcGhlcl9rZXlsZW4oYyk7Ci0gfQotIAotQEAgLTIzMCwxMSArMjM4LDEzIEBAIHVfaW50Ci0gY2lwaGVyX21hc2tfc3NoMShpbnQgY2xpZW50KQotIHsKLSAJdV9pbnQgbWFzayA9IDA7Ci0rI2lmbmRlZiBPUEVOU1NMX05PX0RFUwotIAltYXNrIHw9IDEgPDwgU1NIX0NJUEhFUl8zREVTOwkJLyogTWFuZGF0b3J5ICovCi0gCW1hc2sgfD0gMSA8PCBTU0hfQ0lQSEVSX0JMT1dGSVNIOwotIAlpZiAoY2xpZW50KSB7Ci0gCQltYXNrIHw9IDEgPDwgU1NIX0NJUEhFUl9ERVM7Ci0gCX0KLSsjZW5kaWYgLypPUEVOU1NMX05PX0RFUyovCi0gCXJldHVybiBtYXNrOwotIH0KLSAKLUBAIC02MDYsNyArNjE2LDkgQEAgY2lwaGVyX2dldF9rZXlpdihzdHJ1Y3Qgc3NoY2lwaGVyX2N0eCAqY2MsIHVfY2hhciAqaXYsIHVfaW50IGxlbikKLSAJc3dpdGNoIChjLT5udW1iZXIpIHsKLSAjaWZkZWYgV0lUSF9PUEVOU1NMCi0gCWNhc2UgU1NIX0NJUEhFUl9TU0gyOgotKyNpZm5kZWYgT1BFTlNTTF9OT19ERVMKLSAJY2FzZSBTU0hfQ0lQSEVSX0RFUzoKLSsjZW5kaWYgLyogT1BFTlNTTF9OT19ERVMgKi8KLSAJY2FzZSBTU0hfQ0lQSEVSX0JMT1dGSVNIOgotIAkJZXZwbGVuID0gRVZQX0NJUEhFUl9DVFhfaXZfbGVuZ3RoKGNjLT5ldnApOwotIAkJaWYgKGV2cGxlbiA9PSAwKQotQEAgLTYyOSw4ICs2NDEsMTAgQEAgY2lwaGVyX2dldF9rZXlpdihzdHJ1Y3Qgc3NoY2lwaGVyX2N0eCAqY2MsIHVfY2hhciAqaXYsIHVfaW50IGxlbikKLSAJCWJyZWFrOwotICNlbmRpZgotICNpZmRlZiBXSVRIX1NTSDEKLSsjaWZuZGVmIE9QRU5TU0xfTk9fREVTCi0gCWNhc2UgU1NIX0NJUEhFUl8zREVTOgotIAkJcmV0dXJuIHNzaDFfM2Rlc19pdihjYy0+ZXZwLCAwLCBpdiwgMjQpOwotKyNlbmRpZiAvKiBPUEVOU1NMX05PX0RFUyAqLwotICNlbmRpZgotIAlkZWZhdWx0OgotIAkJcmV0dXJuIFNTSF9FUlJfSU5WQUxJRF9BUkdVTUVOVDsKLUBAIC02NTQsNyArNjY4LDkgQEAgY2lwaGVyX3NldF9rZXlpdihzdHJ1Y3Qgc3NoY2lwaGVyX2N0eCAqY2MsIGNvbnN0IHVfY2hhciAqaXYpCi0gCXN3aXRjaCAoYy0+bnVtYmVyKSB7Ci0gI2lmZGVmIFdJVEhfT1BFTlNTTAotIAljYXNlIFNTSF9DSVBIRVJfU1NIMjoKLSsjaWZuZGVmIE9QRU5TU0xfTk9fREVTCi0gCWNhc2UgU1NIX0NJUEhFUl9ERVM6Ci0rI2VuZGlmIC8qIE9QRU5TU0xfTk9fREVTICovCi0gCWNhc2UgU1NIX0NJUEhFUl9CTE9XRklTSDoKLSAJCWV2cGxlbiA9IEVWUF9DSVBIRVJfQ1RYX2l2X2xlbmd0aChjYy0+ZXZwKTsKLSAJCWlmIChldnBsZW4gPD0gMCkKLUBAIC02NzUsOCArNjkxLDEwIEBAIGNpcGhlcl9zZXRfa2V5aXYoc3RydWN0IHNzaGNpcGhlcl9jdHggKmNjLCBjb25zdCB1X2NoYXIgKml2KQotIAkJYnJlYWs7Ci0gI2VuZGlmCi0gI2lmZGVmIFdJVEhfU1NIMQotKyNpZm5kZWYgT1BFTlNTTF9OT19ERVMKLSAJY2FzZSBTU0hfQ0lQSEVSXzNERVM6Ci0gCQlyZXR1cm4gc3NoMV8zZGVzX2l2KGNjLT5ldnAsIDEsICh1X2NoYXIgKilpdiwgMjQpOwotKyNlbmRpZiAvKiBPUEVOU1NMX05PX0RFUyAqLwotICNlbmRpZgotIAlkZWZhdWx0OgotIAkJcmV0dXJuIFNTSF9FUlJfSU5WQUxJRF9BUkdVTUVOVDsKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL29wZW5zc2gtNy4xcDEtY29uZGl0aW9uYWwtY29tcGlsZS1kZXMtaW4tcGtjczExLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL29wZW5zc2gtNy4xcDEtY29uZGl0aW9uYWwtY29tcGlsZS1kZXMtaW4tcGtjczExLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2RjNzNiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9vcGVuc3NoLTcuMXAxLWNvbmRpdGlvbmFsLWNvbXBpbGUtZGVzLWluLXBrY3MxMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLUZyb20gZTgxNmZjMDZlNGY4MDcwYjA5ZTY3N2VhZDRkMjE3Njg3ODRlNGM5OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDE5IEphbiAyMDE3IDAzOjIxOjQwIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8zXSByZW1vdmUgZGVzIGluIHBrY3MxMS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEhhaXFpbmcgQmFpIDxIYWlxaW5nLkJhaUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHBrY3MxMS5oIHwgOCArKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3BrY3MxMS5oIGIvcGtjczExLmgKLWluZGV4IGIwMWQ1OGYuLjk4YjM2ZTYgMTAwNjQ0Ci0tLS0gYS9wa2NzMTEuaAotKysrIGIvcGtjczExLmgKLUBAIC0zNDIsOSArMzQyLDExIEBAIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBja19rZXlfdHlwZV90OwotICNkZWZpbmUgQ0tLX0dFTkVSSUNfU0VDUkVUCSgweDEwKQotICNkZWZpbmUgQ0tLX1JDMgkJCSgweDExKQotICNkZWZpbmUgQ0tLX1JDNAkJCSgweDEyKQotKyNpZm5kZWYgT1BFTlNTTF9OT19ERVMKLSAjZGVmaW5lIENLS19ERVMJCQkoMHgxMykKLSAjZGVmaW5lIENLS19ERVMyCQkoMHgxNCkKLSAjZGVmaW5lIENLS19ERVMzCQkoMHgxNSkKLSsjZW5kaWYgLyogT1BFTlNTTF9OT19ERVMgKi8KLSAjZGVmaW5lIENLS19DQVNUCQkoMHgxNikKLSAjZGVmaW5lIENLS19DQVNUMwkJKDB4MTcpCi0gI2RlZmluZSBDS0tfQ0FTVDEyOAkJKDB4MTgpCi1AQCAtNTEyLDYgKzUxNCw3IEBAIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBja19tZWNoYW5pc21fdHlwZV90OwotICNkZWZpbmUgQ0tNX1JDMl9DQkNfUEFECQkJKDB4MTA1KQotICNkZWZpbmUgQ0tNX1JDNF9LRVlfR0VOCQkJKDB4MTEwKQotICNkZWZpbmUgQ0tNX1JDNAkJCQkoMHgxMTEpCi0rI2lmbmRlZiBPUEVOU1NMX05PX0RFUwotICNkZWZpbmUgQ0tNX0RFU19LRVlfR0VOCQkJKDB4MTIwKQotICNkZWZpbmUgQ0tNX0RFU19FQ0IJCQkoMHgxMjEpCi0gI2RlZmluZSBDS01fREVTX0NCQwkJCSgweDEyMikKLUBAIC01MjUsNiArNTI4LDcgQEAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGNrX21lY2hhbmlzbV90eXBlX3Q7Ci0gI2RlZmluZSBDS01fREVTM19NQUMJCQkoMHgxMzQpCi0gI2RlZmluZSBDS01fREVTM19NQUNfR0VORVJBTAkJKDB4MTM1KQotICNkZWZpbmUgQ0tNX0RFUzNfQ0JDX1BBRAkJKDB4MTM2KQotKyNlbmRpZiAvKiBPUEVOU1NMX05PX0RFUyAqLwotICNkZWZpbmUgQ0tNX0NETUZfS0VZX0dFTgkJKDB4MTQwKQotICNkZWZpbmUgQ0tNX0NETUZfRUNCCQkJKDB4MTQxKQotICNkZWZpbmUgQ0tNX0NETUZfQ0JDCQkJKDB4MTQyKQotQEAgLTYxMCw4ICs2MTQsMTAgQEAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGNrX21lY2hhbmlzbV90eXBlX3Q7Ci0gI2RlZmluZSBDS01fTUQ1X0tFWV9ERVJJVkFUSU9OCQkoMHgzOTApCi0gI2RlZmluZSBDS01fTUQyX0tFWV9ERVJJVkFUSU9OCQkoMHgzOTEpCi0gI2RlZmluZSBDS01fU0hBMV9LRVlfREVSSVZBVElPTgkJKDB4MzkyKQotKyNpZm5kZWYgT1BFTlNTTF9OT19ERVMKLSAjZGVmaW5lIENLTV9QQkVfTUQyX0RFU19DQkMJCSgweDNhMCkKLSAjZGVmaW5lIENLTV9QQkVfTUQ1X0RFU19DQkMJCSgweDNhMSkKLSsjZW5kaWYgLyogT1BFTlNTTF9OT19ERVMgKi8KLSAjZGVmaW5lIENLTV9QQkVfTUQ1X0NBU1RfQ0JDCQkoMHgzYTIpCi0gI2RlZmluZSBDS01fUEJFX01ENV9DQVNUM19DQkMJCSgweDNhMykKLSAjZGVmaW5lIENLTV9QQkVfTUQ1X0NBU1Q1X0NCQwkJKDB4M2E0KQotQEAgLTYyMCw4ICs2MjYsMTAgQEAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGNrX21lY2hhbmlzbV90eXBlX3Q7Ci0gI2RlZmluZSBDS01fUEJFX1NIQTFfQ0FTVDEyOF9DQkMJKDB4M2E1KQotICNkZWZpbmUgQ0tNX1BCRV9TSEExX1JDNF8xMjgJCSgweDNhNikKLSAjZGVmaW5lIENLTV9QQkVfU0hBMV9SQzRfNDAJCSgweDNhNykKLSsjaWZuZGVmIE9QRU5TU0xfTk9fREVTCi0gI2RlZmluZSBDS01fUEJFX1NIQTFfREVTM19FREVfQ0JDCSgweDNhOCkKLSAjZGVmaW5lIENLTV9QQkVfU0hBMV9ERVMyX0VERV9DQkMJKDB4M2E5KQotKyNlbmRpZiAvKiBPUEVOU1NMX05PX0RFUyAqLwotICNkZWZpbmUgQ0tNX1BCRV9TSEExX1JDMl8xMjhfQ0JDCSgweDNhYSkKLSAjZGVmaW5lIENLTV9QQkVfU0hBMV9SQzJfNDBfQ0JDCQkoMHgzYWIpCi0gI2RlZmluZSBDS01fUEtDUzVfUEJLRDIJCQkoMHgzYjApCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF83LjVwMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF83LjVwMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZjYTZmZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2hfNy41cDEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNjggKzAsMCBAQAotU1VNTUFSWSA9ICJBIHN1aXRlIG9mIHNlY3VyaXR5LXJlbGF0ZWQgbmV0d29yayB1dGlsaXRpZXMgYmFzZWQgb24gXAotdGhlIFNTSCBwcm90b2NvbCBpbmNsdWRpbmcgdGhlIHNzaCBjbGllbnQgYW5kIHNzaGQgc2VydmVyIgotREVTQ1JJUFRJT04gPSAiU2VjdXJlIHJsb2dpbi9yc2gvcmNwL3RlbG5ldCByZXBsYWNlbWVudCAoT3BlblNTSCkgXAotU3NoIChTZWN1cmUgU2hlbGwpIGlzIGEgcHJvZ3JhbSBmb3IgbG9nZ2luZyBpbnRvIGEgcmVtb3RlIG1hY2hpbmUgXAotYW5kIGZvciBleGVjdXRpbmcgY29tbWFuZHMgb24gYSByZW1vdGUgbWFjaGluZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5zc2guY29tLyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT1lMzI2MDQ1NjU3ZTg0MjU0MWQzZjM1YWFkYTQ0MjUwNyIKLQotIyBvcGVuc3NsIDEuMSBwYXRjaGVzIGFyZSBwcm9wb3NlZCBhdCBodHRwczovL2dpdGh1Yi5jb20vb3BlbnNzaC9vcGVuc3NoLXBvcnRhYmxlL3B1bGwvNDgKLURFUEVORFMgPSAiemxpYiBvcGVuc3NsMTAiCi1ERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAub3BlbmJzZC5vcmcvcHViL09wZW5CU0QvT3BlblNTSC9wb3J0YWJsZS9vcGVuc3NoLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hkX2NvbmZpZyBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hfY29uZmlnIFwKLSAgICAgICAgICAgZmlsZTovL2luaXQgXAotICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcke1BBTV9TUkNfVVJJfScsICcnLCBkKX0gXAotICAgICAgICAgICBmaWxlOi8vc3NoZC5zb2NrZXQgXAotICAgICAgICAgICBmaWxlOi8vc3NoZEAuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hkZ2Vua2V5cy5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy45OV9zc2hkIFwKLSAgICAgICAgICAgZmlsZTovL2FkZC10ZXN0LXN1cHBvcnQtZm9yLWJ1c3lib3gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL29wZW5zc2gtNy4xcDEtY29uZGl0aW9uYWwtY29tcGlsZS1kZXMtaW4tY2lwaGVyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wZW5zc2gtNy4xcDEtY29uZGl0aW9uYWwtY29tcGlsZS1kZXMtaW4tcGtjczExLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1wb3RlbnRpYWwtc2lnbmVkLW92ZXJmbG93LWluLXBvaW50ZXItYXJpdGhtYXRpYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW9wZW5zc2gtRml4LXN5bnRheC1lcnJvci1vbi14MzIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc3NoZF9jaGVja19rZXlzIFwKLSAgICAgICAgICAgIgotCi1QQU1fU1JDX1VSSSA9ICJmaWxlOi8vc3NoZCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjY1MmZkYzdkODM5MmYxMTJiZWYxMWNhY2Y3ZTY5ZTIzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk4NDZlM2M1ZmFiOWYwNTQ3NDAwYjRkMmMwMTc5OTJmOTE0MjIyYjNmZDFmOGVlZTZjN2RjNmJjNWU1OWY5ZjAiCi0KLWluaGVyaXQgdXNlcmFkZCB1cGRhdGUtcmMuZCB1cGRhdGUtYWx0ZXJuYXRpdmVzIHN5c3RlbWQKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgotVVNFUkFERF9QQVJBTV8ke1BOfS1zc2hkID0gIi0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgLS1ob21lLWRpciAvdmFyL3J1bi9zc2hkIC0tc2hlbGwgL2Jpbi9mYWxzZSAtLXVzZXItZ3JvdXAgc3NoZCIKLUlOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0tc3NoZCIKLUlOSVRTQ1JJUFRfTkFNRV8ke1BOfS1zc2hkID0gInNzaGQiCi1JTklUU0NSSVBUX1BBUkFNU18ke1BOfS1zc2hkID0gImRlZmF1bHRzIDkiCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0tc3NoZCIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1zc2hkID0gInNzaGQuc29ja2V0IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcHRlc3QKLQotIyBMRlMgc3VwcG9ydDoKLUNGTEFHUyArPSAiLURfX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCi0KLSMgbG9naW4gcGF0aCBpcyBoYXJkY29kZWQgaW4gc3NoZAotRVhUUkFfT0VDT05GID0gIidMT0dJTl9QUk9HUkFNPSR7YmFzZV9iaW5kaXJ9L2xvZ2luJyBcCi0gICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS13aXRoLXBhbScsICctLXdpdGhvdXQtcGFtJywgZCl9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtemxpYi12ZXJzaW9uLWNoZWNrIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtcHJpdnNlcC1wYXRoPS92YXIvcnVuL3NzaGQgXAotICAgICAgICAgICAgICAgIC0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9L3NzaCBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXhhdXRoPS91c3IvYmluL3hhdXRoIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtc3RyaXAgXAotICAgICAgICAgICAgICAgICIKLQotIyBTaW5jZSB3ZSBkbyBub3QgZGVwZW5kIG9uIGxpYmJzZCwgd2UgZG8gbm90IHdhbnQgY29uZmlndXJlIHRvIHVzZSBpdAotIyBqdXN0IGJlY2F1c2UgaXQgZmluZHMgbGlidXRpbC5oLiAgQnV0LCBzcGVjaWZ5aW5nIC0tZGlzYWJsZS1saWJ1dGlsCi0jIGNhdXNlcyBjb21waWxlIGVycm9ycywgc28uLi4KLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfYnNkX2xpYnV0aWxfaD1ubyBhY19jdl9oZWFkZXJfbGlidXRpbF9oPW5vIgotCi0jIHBhc3N3ZCBwYXRoIGlzIGhhcmRjb2RlZCBpbiBzc2hkCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9QQVRIX1BBU1NXRF9QUk9HPSR7YmluZGlyfS9wYXNzd2QiCi0KLSMgV2UgZG9uJ3Qgd2FudCB0byBkZXBlbmQgb24gbGliYmxvY2tmaWxlCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfaGVhZGVyX21haWxsb2NrX2g9bm8iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlleHBvcnQgTEQ9IiR7Q0N9IgotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NzaGRfY29uZmlnICR7Qn0vCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoX2NvbmZpZyAke0J9LwotCWlmIFsgISAtZSBhY2luY2x1ZGUubTQgLWEgLWUgYWNsb2NhbC5tNCBdOyB0aGVuCi0JCWNwIGFjbG9jYWwubTQgYWNpbmNsdWRlLm00Ci0JZmkKLX0KLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLSAgICAgICAgIyBza2lwIHJlZ3Jlc3MvdW5pdHRlc3RzLyBiaW5hcmllczogdGhpcyB3aWxsIHNpbGVudGx5IHNraXAKLSAgICAgICAgIyB1bml0dGVzdHMgaW4gcnVuLXB0ZXN0cyB3aGljaCBpcyBnb29kIGJlY2F1c2UgdGhleSBhcmUgc28gc2xvdy4KLSAgICAgICAgb2VfcnVubWFrZSByZWdyZXNzL21vZHBpcGUgcmVncmVzcy9zZXR1aWQtYWxsb3dlZCByZWdyZXNzL25ldGNhdAotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IiBdOyB0aGVuCi0JCWluc3RhbGwgLUQgLW0gMDY0NCAke1dPUktESVJ9L3NzaGQgJHtEfSR7c3lzY29uZmRpcn0vcGFtLmQvc3NoZAotCQlzZWQgLWkgLWUgJ3M6I1VzZVBBTSBubzpVc2VQQU0geWVzOicgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnCi0JZmkKLQotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIgXTsgdGhlbgotCQlzZWQgLWkgLWUgJ3M6I1gxMUZvcndhcmRpbmcgbm86WDExRm9yd2FyZGluZyB5ZXM6JyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcKLQlmaQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zc2hkCi0Jcm0gLWYgJHtEfSR7YmluZGlyfS9zbG9naW4gJHtEfSR7ZGF0YWRpcn0vU3NoLmJpbgotCXJtZGlyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bi9zc2hkICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biAke0R9JHtsb2NhbHN0YXRlZGlyfQotCWluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCi0JaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS92b2xhdGlsZXMuOTlfc3NoZCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvOTlfc3NoZAotCWluc3RhbGwgLW0gMDc1NSAke1N9L2NvbnRyaWIvc3NoLWNvcHktaWQgJHtEfSR7YmluZGlyfQotCi0JIyBDcmVhdGUgY29uZmlnIGZpbGVzIGZvciByZWFkLW9ubHkgcm9vdGZzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zc2gKLQlpbnN0YWxsIC1tIDY0NCAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0Jc2VkIC1pICcvSG9zdEtleS9kJyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKLQllY2hvICJIb3N0S2V5IC92YXIvcnVuL3NzaC9zc2hfaG9zdF9yc2Ffa2V5IiA+PiAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKLQllY2hvICJIb3N0S2V5IC92YXIvcnVuL3NzaC9zc2hfaG9zdF9kc2Ffa2V5IiA+PiAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKLQllY2hvICJIb3N0S2V5IC92YXIvcnVuL3NzaC9zc2hfaG9zdF9lY2RzYV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X2VkMjU1MTlfa2V5IiA+PiAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1jIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkLnNvY2tldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLWMgLW0gMDY0NCAke1dPUktESVJ9L3NzaGRALnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1jIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkZ2Vua2V5cy5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0Jc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAotCQktZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCi0JCS1lICdzLEBCSU5ESVJALCR7YmluZGlyfSxnJyBcCi0JCS1lICdzLEBMSUJFWEVDRElSQCwke2xpYmV4ZWNkaXJ9LyR7QlBOfSxnJyBcCi0JCSR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NzaGQuc29ja2V0ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyouc2VydmljZQotCi0Jc2VkIC1pIC1lICdzLEBMSUJFWEVDRElSQCwke2xpYmV4ZWNkaXJ9LyR7QlBOfSxnJyBcCi0JCSR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zc2hkCi0KLQlpbnN0YWxsIC1EIC1tIDA3NTUgJHtXT1JLRElSfS9zc2hkX2NoZWNrX2tleXMgJHtEfSR7bGliZXhlY2Rpcn0vJHtCUE59L3NzaGRfY2hlY2tfa2V5cwotfQotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLQlzZWQgLWkgLWUgInN8XlNGVFBTRVJWRVI9Lip8U0ZUUFNFUlZFUj0ke2xpYmV4ZWNkaXJ9L3NmdHAtc2VydmVyfCIgcmVncmVzcy90ZXN0LWV4ZWMuc2gKLQljcCAtciByZWdyZXNzICR7RH0ke1BURVNUX1BBVEh9Ci19Ci0KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1rZXlnZW4gJHtQTn0tc2NwICR7UE59LXNzaCAke1BOfS1zc2hkICR7UE59LXNmdHAgJHtQTn0tbWlzYyAke1BOfS1zZnRwLXNlcnZlciIKLUZJTEVTXyR7UE59LXNjcCA9ICIke2JpbmRpcn0vc2NwLiR7QlBOfSIKLUZJTEVTXyR7UE59LXNzaCA9ICIke2JpbmRpcn0vc3NoLiR7QlBOfSAke3N5c2NvbmZkaXJ9L3NzaC9zc2hfY29uZmlnIgotRklMRVNfJHtQTn0tc3NoZCA9ICIke3NiaW5kaXJ9L3NzaGQgJHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZCAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtIgotRklMRVNfJHtQTn0tc3NoZCArPSAiJHtzeXNjb25mZGlyfS9zc2gvbW9kdWxpICR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnICR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5ICR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvOTlfc3NoZCAke3N5c2NvbmZkaXJ9L3BhbS5kL3NzaGQiCi1GSUxFU18ke1BOfS1zc2hkICs9ICIke2xpYmV4ZWNkaXJ9LyR7QlBOfS9zc2hkX2NoZWNrX2tleXMiCi1GSUxFU18ke1BOfS1zZnRwID0gIiR7YmluZGlyfS9zZnRwIgotRklMRVNfJHtQTn0tc2Z0cC1zZXJ2ZXIgPSAiJHtsaWJleGVjZGlyfS9zZnRwLXNlcnZlciIKLUZJTEVTXyR7UE59LW1pc2MgPSAiJHtiaW5kaXJ9L3NzaCogJHtsaWJleGVjZGlyfS9zc2gqIgotRklMRVNfJHtQTn0ta2V5Z2VuID0gIiR7YmluZGlyfS9zc2gta2V5Z2VuIgotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0tc2NwICR7UE59LXNzaCAke1BOfS1zc2hkICR7UE59LWtleWdlbiIKLVJERVBFTkRTXyR7UE59LXNzaGQgKz0gIiR7UE59LWtleWdlbiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdwYW0tcGx1Z2luLWtleWluaXQgcGFtLXBsdWdpbi1sb2dpbnVpZCcsICcnLCBkKX0iCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0tc2Z0cCAke1BOfS1taXNjICR7UE59LXNmdHAtc2VydmVyIG1ha2UiCi0KLVJQUk9WSURFU18ke1BOfS1zc2ggPSAic3NoIgotUlBST1ZJREVTXyR7UE59LXNzaGQgPSAic3NoZCIKLQotUkNPTkZMSUNUU18ke1BOfSA9ICJkcm9wYmVhciIKLVJDT05GTElDVFNfJHtQTn0tc3NoZCA9ICJkcm9wYmVhciIKLVJDT05GTElDVFNfJHtQTn0ta2V5Z2VuID0gInNzaC1rZXlnZW4iCi0KLUNPTkZGSUxFU18ke1BOfS1zc2hkID0gIiR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnIgotQ09ORkZJTEVTXyR7UE59LXNzaCA9ICIke3N5c2NvbmZkaXJ9L3NzaC9zc2hfY29uZmlnIgotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICI5MCIKLUFMVEVSTkFUSVZFXyR7UE59LXNjcCA9ICJzY3AiCi1BTFRFUk5BVElWRV8ke1BOfS1zc2ggPSAic3NoIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2hfNy42cDEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2hfNy42cDEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTExZThkNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF83LjZwMS5iYgpAQCAtMCwwICsxLDE2NyBAQAorU1VNTUFSWSA9ICJBIHN1aXRlIG9mIHNlY3VyaXR5LXJlbGF0ZWQgbmV0d29yayB1dGlsaXRpZXMgYmFzZWQgb24gXAordGhlIFNTSCBwcm90b2NvbCBpbmNsdWRpbmcgdGhlIHNzaCBjbGllbnQgYW5kIHNzaGQgc2VydmVyIgorREVTQ1JJUFRJT04gPSAiU2VjdXJlIHJsb2dpbi9yc2gvcmNwL3RlbG5ldCByZXBsYWNlbWVudCAoT3BlblNTSCkgXAorU3NoIChTZWN1cmUgU2hlbGwpIGlzIGEgcHJvZ3JhbSBmb3IgbG9nZ2luZyBpbnRvIGEgcmVtb3RlIG1hY2hpbmUgXAorYW5kIGZvciBleGVjdXRpbmcgY29tbWFuZHMgb24gYSByZW1vdGUgbWFjaGluZS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5zc2guY29tLyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT00Mjk2NThjNjYxMmYzYTliMTI5Mzc4MjM2NmFiMjlkOCIKKworIyBvcGVuc3NsIDEuMSBwYXRjaGVzIGFyZSBwcm9wb3NlZCBhdCBodHRwczovL2dpdGh1Yi5jb20vb3BlbnNzaC9vcGVuc3NoLXBvcnRhYmxlL3B1bGwvNDgKK0RFUEVORFMgPSAiemxpYiBvcGVuc3NsMTAiCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgorCitTUkNfVVJJID0gImh0dHA6Ly9mdHAub3BlbmJzZC5vcmcvcHViL09wZW5CU0QvT3BlblNTSC9wb3J0YWJsZS9vcGVuc3NoLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9zc2hkX2NvbmZpZyBcCisgICAgICAgICAgIGZpbGU6Ly9zc2hfY29uZmlnIFwKKyAgICAgICAgICAgZmlsZTovL2luaXQgXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcke1BBTV9TUkNfVVJJfScsICcnLCBkKX0gXAorICAgICAgICAgICBmaWxlOi8vc3NoZC5zb2NrZXQgXAorICAgICAgICAgICBmaWxlOi8vc3NoZEAuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9zc2hkZ2Vua2V5cy5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy45OV9zc2hkIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcG90ZW50aWFsLXNpZ25lZC1vdmVyZmxvdy1pbi1wb2ludGVyLWFyaXRobWF0aWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc3NoZF9jaGVja19rZXlzIFwKKyAgICAgICAgICAgZmlsZTovL2FkZC10ZXN0LXN1cHBvcnQtZm9yLWJ1c3lib3gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1jaXBoZXJzLW5vdC1zdXBwb3J0ZWQtYnktT3BlblNTTC1ERVMucGF0Y2ggXAorICAgICAgICAgICAiCisKK1BBTV9TUkNfVVJJID0gImZpbGU6Ly9zc2hkIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDZhODg2OTkwMThlNWZlZjEzZDQ2NTVhYmZlZDFmNjMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTMyM2NhZWVkZGZlMTQ1YmFhYTBkYjE2ZTk4ZDc4NGIxZmJjN2RkNDM2YTZiZjFmNDc5ZGZkNWNkMWQyMTcyMyIKKworaW5oZXJpdCB1c2VyYWRkIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgc3lzdGVtZAorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCitVU0VSQUREX1BBUkFNXyR7UE59LXNzaGQgPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLWhvbWUtZGlyIC92YXIvcnVuL3NzaGQgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCBzc2hkIgorSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgorSU5JVFNDUklQVF9OQU1FXyR7UE59LXNzaGQgPSAic3NoZCIKK0lOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LXNzaGQgPSAiZGVmYXVsdHMgOSIKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LXNzaGQgPSAic3NoZC5zb2NrZXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAorCisjIExGUyBzdXBwb3J0OgorQ0ZMQUdTICs9ICItRF9fRklMRV9PRkZTRVRfQklUUz02NCIKKworRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWFjbG9jYWwiCisKKyMgbG9naW4gcGF0aCBpcyBoYXJkY29kZWQgaW4gc3NoZAorRVhUUkFfT0VDT05GID0gIidMT0dJTl9QUk9HUkFNPSR7YmFzZV9iaW5kaXJ9L2xvZ2luJyBcCisgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS13aXRoLXBhbScsICctLXdpdGhvdXQtcGFtJywgZCl9IFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtemxpYi12ZXJzaW9uLWNoZWNrIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtcHJpdnNlcC1wYXRoPS92YXIvcnVuL3NzaGQgXAorICAgICAgICAgICAgICAgIC0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9L3NzaCBcCisgICAgICAgICAgICAgICAgLS13aXRoLXhhdXRoPS91c3IvYmluL3hhdXRoIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtc3RyaXAgXAorICAgICAgICAgICAgICAgICIKKworIyBtdXNsIGRvZXNuJ3QgaW1wbGVtZW50IHd0bXAvdXRtcAorRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS13dG1wIgorCisjIFNpbmNlIHdlIGRvIG5vdCBkZXBlbmQgb24gbGliYnNkLCB3ZSBkbyBub3Qgd2FudCBjb25maWd1cmUgdG8gdXNlIGl0CisjIGp1c3QgYmVjYXVzZSBpdCBmaW5kcyBsaWJ1dGlsLmguICBCdXQsIHNwZWNpZnlpbmcgLS1kaXNhYmxlLWxpYnV0aWwKKyMgY2F1c2VzIGNvbXBpbGUgZXJyb3JzLCBzby4uLgorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9ic2RfbGlidXRpbF9oPW5vIGFjX2N2X2hlYWRlcl9saWJ1dGlsX2g9bm8iCisKKyMgcGFzc3dkIHBhdGggaXMgaGFyZGNvZGVkIGluIHNzaGQKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BBVEhfUEFTU1dEX1BST0c9JHtiaW5kaXJ9L3Bhc3N3ZCIKKworIyBXZSBkb24ndCB3YW50IHRvIGRlcGVuZCBvbiBsaWJibG9ja2ZpbGUKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfbWFpbGxvY2tfaD1ubyIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCWV4cG9ydCBMRD0iJHtDQ30iCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZF9jb25maWcgJHtCfS8KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hfY29uZmlnICR7Qn0vCit9CisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisgICAgICAgICMgc2tpcCByZWdyZXNzL3VuaXR0ZXN0cy8gYmluYXJpZXM6IHRoaXMgd2lsbCBzaWxlbnRseSBza2lwCisgICAgICAgICMgdW5pdHRlc3RzIGluIHJ1bi1wdGVzdHMgd2hpY2ggaXMgZ29vZCBiZWNhdXNlIHRoZXkgYXJlIHNvIHNsb3cuCisgICAgICAgIG9lX3J1bm1ha2UgcmVncmVzcy9tb2RwaXBlIHJlZ3Jlc3Mvc2V0dWlkLWFsbG93ZWQgcmVncmVzcy9uZXRjYXQKK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkICR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kL3NzaGQKKwkJc2VkIC1pIC1lICdzOiNVc2VQQU0gbm86VXNlUEFNIHllczonICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZworCWZpCisKKwlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iIF07IHRoZW4KKwkJc2VkIC1pIC1lICdzOiNYMTFGb3J3YXJkaW5nIG5vOlgxMUZvcndhcmRpbmcgeWVzOicgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnCisJZmkKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZAorCXJtIC1mICR7RH0ke2JpbmRpcn0vc2xvZ2luICR7RH0ke2RhdGFkaXJ9L1NzaC5iaW4KKwlybWRpciAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3NoZCAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4gJHtEfSR7bG9jYWxzdGF0ZWRpcn0KKwlpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjk5X3NzaGQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3NzaGQKKwlpbnN0YWxsIC1tIDA3NTUgJHtTfS9jb250cmliL3NzaC1jb3B5LWlkICR7RH0ke2JpbmRpcn0KKworCSMgQ3JlYXRlIGNvbmZpZyBmaWxlcyBmb3IgcmVhZC1vbmx5IHJvb3RmcworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3NoCisJaW5zdGFsbCAtbSA2NDQgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQorCXNlZCAtaSAnL0hvc3RLZXkvZCcgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisJZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfcnNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisJZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZHNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisJZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZWNkc2Ffa2V5IiA+PiAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKKwllY2hvICJIb3N0S2V5IC92YXIvcnVuL3NzaC9zc2hfaG9zdF9lZDI1NTE5X2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZC5zb2NrZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1jIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkQC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZGdlbmtleXMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKwkJLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorCQktZSAncyxAQklORElSQCwke2JpbmRpcn0sZycgXAorCQktZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfS8ke0JQTn0sZycgXAorCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zc2hkLnNvY2tldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UKKworCXNlZCAtaSAtZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfS8ke0JQTn0sZycgXAorCQkke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZAorCisJaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0vc3NoZF9jaGVja19rZXlzICR7RH0ke2xpYmV4ZWNkaXJ9LyR7QlBOfS9zc2hkX2NoZWNrX2tleXMKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisJc2VkIC1pIC1lICJzfF5TRlRQU0VSVkVSPS4qfFNGVFBTRVJWRVI9JHtsaWJleGVjZGlyfS9zZnRwLXNlcnZlcnwiIHJlZ3Jlc3MvdGVzdC1leGVjLnNoCisJY3AgLXIgcmVncmVzcyAke0R9JHtQVEVTVF9QQVRIfQorfQorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCitQQUNLQUdFUyA9KyAiJHtQTn0ta2V5Z2VuICR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1zZnRwICR7UE59LW1pc2MgJHtQTn0tc2Z0cC1zZXJ2ZXIiCitGSUxFU18ke1BOfS1zY3AgPSAiJHtiaW5kaXJ9L3NjcC4ke0JQTn0iCitGSUxFU18ke1BOfS1zc2ggPSAiJHtiaW5kaXJ9L3NzaC4ke0JQTn0gJHtzeXNjb25mZGlyfS9zc2gvc3NoX2NvbmZpZyIKK0ZJTEVTXyR7UE59LXNzaGQgPSAiJHtzYmluZGlyfS9zc2hkICR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSIKK0ZJTEVTXyR7UE59LXNzaGQgKz0gIiR7c3lzY29uZmRpcn0vc3NoL21vZHVsaSAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seSAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3NzaGQgJHtzeXNjb25mZGlyfS9wYW0uZC9zc2hkIgorRklMRVNfJHtQTn0tc3NoZCArPSAiJHtsaWJleGVjZGlyfS8ke0JQTn0vc3NoZF9jaGVja19rZXlzIgorRklMRVNfJHtQTn0tc2Z0cCA9ICIke2JpbmRpcn0vc2Z0cCIKK0ZJTEVTXyR7UE59LXNmdHAtc2VydmVyID0gIiR7bGliZXhlY2Rpcn0vc2Z0cC1zZXJ2ZXIiCitGSUxFU18ke1BOfS1taXNjID0gIiR7YmluZGlyfS9zc2gqICR7bGliZXhlY2Rpcn0vc3NoKiIKK0ZJTEVTXyR7UE59LWtleWdlbiA9ICIke2JpbmRpcn0vc3NoLWtleWdlbiIKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1rZXlnZW4iCitSREVQRU5EU18ke1BOfS1zc2hkICs9ICIke1BOfS1rZXlnZW4gJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtLXBsdWdpbi1rZXlpbml0IHBhbS1wbHVnaW4tbG9naW51aWQnLCAnJywgZCl9IgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiR7UE59LXNmdHAgJHtQTn0tbWlzYyAke1BOfS1zZnRwLXNlcnZlciBtYWtlIgorCitSUFJPVklERVNfJHtQTn0tc3NoID0gInNzaCIKK1JQUk9WSURFU18ke1BOfS1zc2hkID0gInNzaGQiCisKK1JDT05GTElDVFNfJHtQTn0gPSAiZHJvcGJlYXIiCitSQ09ORkxJQ1RTXyR7UE59LXNzaGQgPSAiZHJvcGJlYXIiCitSQ09ORkxJQ1RTXyR7UE59LWtleWdlbiA9ICJzc2gta2V5Z2VuIgorCitDT05GRklMRVNfJHtQTn0tc3NoZCA9ICIke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyIKK0NPTkZGSUxFU18ke1BOfS1zc2ggPSAiJHtzeXNjb25mZGlyfS9zc2gvc3NoX2NvbmZpZyIKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiOTAiCitBTFRFUk5BVElWRV8ke1BOfS1zY3AgPSAic2NwIgorQUxURVJOQVRJVkVfJHtQTn0tc3NoID0gInNzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL2NfcmVoYXNoLWNvbXBhdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL2NfcmVoYXNoLWNvbXBhdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjhlNTRkNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9jX3JlaGFzaC1jb21wYXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi1Gcm9tIDgzZjMxOGQ2OGJiZGFiMWNhODk4Yzk0NTc2YTgzOGNjOTdkZjQ3MDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBMdWR3aWcgTnVzc2VsIDxsdWR3aWcubnVzc2VsQHN1c2UuZGU+Ci1EYXRlOiBXZWQsIDIxIEFwciAyMDEwIDE1OjUyOjEwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFsc28gY3JlYXRlIG9sZCBoYXNoIGZvciBjb21wYXRpYmlsaXR5Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2RlYmlhbl0KLQotZGlmZiAtLWdpdCBhL3Rvb2xzL2NfcmVoYXNoLmluIGIvdG9vbHMvY19yZWhhc2guaW4KLWluZGV4IGIwODZmZjkuLmI3NzdkNzkgMTAwNjQ0Ci0tLS0gYS90b29scy9jX3JlaGFzaC5pbgotKysrIGIvdG9vbHMvY19yZWhhc2guaW4KLUBAIC04LDggKzgsNiBAQCBteSAkcHJlZml4OwotIAotIG15ICRvcGVuc3NsID0gJEVOVntPUEVOU1NMfSB8fCAib3BlbnNzbCI7Ci0gbXkgJHB3ZDsKLS1teSAkeDUwOWhhc2ggPSAiLXN1YmplY3RfaGFzaCI7Ci0tbXkgJGNybGhhc2ggPSAiLWhhc2giOwotIG15ICR2ZXJib3NlID0gMDsKLSBteSAkc3ltbGlua19leGlzdHM9ZXZhbCB7c3ltbGluaygiIiwiIik7IDF9OwotIG15ICRyZW1vdmVsaW5rcyA9IDE7Ci1AQCAtMTgsMTAgKzE2LDcgQEAgbXkgJHJlbW92ZWxpbmtzID0gMTsKLSB3aGlsZSAoICRBUkdWWzBdID1+IC9eLS8gKSB7Ci0gICAgIG15ICRmbGFnID0gc2hpZnQgQEFSR1Y7Ci0gICAgIGxhc3QgaWYgKCAkZmxhZyBlcSAnLS0nKTsKLS0gICAgaWYgKCAkZmxhZyBlcSAnLW9sZCcpIHsKLS0JICAgICR4NTA5aGFzaCA9ICItc3ViamVjdF9oYXNoX29sZCI7Ci0tCSAgICAkY3JsaGFzaCA9ICItaGFzaF9vbGQiOwotLSAgICB9IGVsc2lmICggJGZsYWcgZXEgJy1oJykgewotKyAgICBpZiAoICRmbGFnIGVxICctaCcpIHsKLSAJICAgIGhlbHAoKTsKLSAgICAgfSBlbHNpZiAoICRmbGFnIGVxICctbicgKSB7Ci0gCSAgICAkcmVtb3ZlbGlua3MgPSAwOwotQEAgLTExMyw3ICsxMDgsOSBAQCBzdWIgaGFzaF9kaXIgewotIAkJCW5leHQ7Ci0gCQl9Ci0gCQlsaW5rX2hhc2hfY2VydCgkZm5hbWUpIGlmKCRjZXJ0KTsKLSsJCWxpbmtfaGFzaF9jZXJ0X29sZCgkZm5hbWUpIGlmKCRjZXJ0KTsKLSAJCWxpbmtfaGFzaF9jcmwoJGZuYW1lKSBpZigkY3JsKTsKLSsJCWxpbmtfaGFzaF9jcmxfb2xkKCRmbmFtZSkgaWYoJGNybCk7Ci0gCX0KLSB9Ci0gCi1AQCAtMTQ2LDYgKzE0Myw3IEBAIHN1YiBjaGVja19maWxlIHsKLSAKLSBzdWIgbGlua19oYXNoX2NlcnQgewotIAkJbXkgJGZuYW1lID0gJF9bMF07Ci0rCQlteSAkeDUwOWhhc2ggPSAkX1sxXSB8fCAnLXN1YmplY3RfaGFzaCc7Ci0gCQkkZm5hbWUgPX4gcy8nLydcXCcnL2c7Ci0gCQlteSAoJGhhc2gsICRmcHJpbnQpID0gYCIkb3BlbnNzbCIgeDUwOSAkeDUwOWhhc2ggLWZpbmdlcnByaW50IC1ub291dCAtaW4gIiRmbmFtZSJgOwotIAkJY2hvbXAgJGhhc2g7Ci1AQCAtMTc2LDExICsxNzQsMjEgQEAgc3ViIGxpbmtfaGFzaF9jZXJ0IHsKLSAJCSRoYXNobGlzdHskaGFzaH0gPSAkZnByaW50OwotIH0KLSAKLStzdWIgbGlua19oYXNoX2NlcnRfb2xkIHsKLSsJCWxpbmtfaGFzaF9jZXJ0KCRfWzBdLCAnLXN1YmplY3RfaGFzaF9vbGQnKTsKLSt9Ci0rCi0rc3ViIGxpbmtfaGFzaF9jcmxfb2xkIHsKLSsJCWxpbmtfaGFzaF9jcmwoJF9bMF0sICctaGFzaF9vbGQnKTsKLSt9Ci0rCi0rCi0gIyBTYW1lIGFzIGFib3ZlIGV4Y2VwdCBmb3IgYSBDUkwuIENSTCBsaW5rcyBhcmUgb2YgdGhlIGZvcm0gPGhhc2g+LnI8bj4KLSAKLSBzdWIgbGlua19oYXNoX2NybCB7Ci0gCQlteSAkZm5hbWUgPSAkX1swXTsKLSsJCW15ICRjcmxoYXNoID0gJF9bMV0gfHwgIi1oYXNoIjsKLSAJCSRmbmFtZSA9fiBzLycvJ1xcJycvZzsKLSAJCW15ICgkaGFzaCwgJGZwcmludCkgPSBgIiRvcGVuc3NsIiBjcmwgJGNybGhhc2ggLWZpbmdlcnByaW50IC1ub291dCAtaW4gJyRmbmFtZSdgOwotIAkJY2hvbXAgJGhhc2g7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9kZWJpYW4tdGFyZ2V0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL2RlYmlhbi10YXJnZXRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOWQ0MzI4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL2RlYmlhbi10YXJnZXRzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZGViaWFuXQotCi1JbmRleDogb3BlbnNzbC0xLjAuMi9Db25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuc3NsLTEuMC4yLm9yaWcvQ29uZmlndXJlCi0rKysgb3BlbnNzbC0xLjAuMi9Db25maWd1cmUKLUBAIC0xMDcsNiArMTA3LDEwIEBAIG15ICRnY2NfZGV2dGVhbV93YXJuID0gIi1XYWxsIC1wZWRhbnRpYwotIAotIG15ICRjbGFuZ19kaXNhYmxlZF93YXJuaW5ncyA9ICItV25vLWxhbmd1YWdlLWV4dGVuc2lvbi10b2tlbiAtV25vLWV4dGVuZGVkLW9mZnNldG9mIC1Xbm8tcGFkZGVkIC1Xbm8tc2hvcnRlbi02NC10by0zMiAtV25vLWZvcm1hdC1ub25saXRlcmFsIC1Xbm8tbWlzc2luZy1ub3JldHVybiAtV25vLXVudXNlZC1wYXJhbWV0ZXIgLVduby1zaWduLWNvbnZlcnNpb24gLVduby11bnJlYWNoYWJsZS1jb2RlIC1Xbm8tY29udmVyc2lvbiAtV25vLWRvY3VtZW50YXRpb24gLVduby1taXNzaW5nLXZhcmlhYmxlLWRlY2xhcmF0aW9ucyAtV25vLWNhc3QtYWxpZ24gLVduby1pbmNvbXBhdGlibGUtcG9pbnRlci10eXBlcy1kaXNjYXJkcy1xdWFsaWZpZXJzIC1Xbm8tbWlzc2luZy12YXJpYWJsZS1kZWNsYXJhdGlvbnMgLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyAtV25vLXVudXNlZC1tYWNyb3MgLVduby1kaXNhYmxlZC1tYWNyby1leHBhbnNpb24gLVduby1jb25kaXRpb25hbC11bmluaXRpYWxpemVkIC1Xbm8tc3dpdGNoLWVudW0iOwotIAotKyMgVGhlcmUgYXJlIG5vIHNlcGFyYXRlIENGTEFHUy9DUFBGTEFHUy9MREZMQUdTLCBzZXQgZXZlcnl0aGluZyBpbiBDRkxBR1MKLStteSAkZGViaWFuX2NmbGFncyA9IGBkcGtnLWJ1aWxkZmxhZ3MgLS1nZXQgQ0ZMQUdTYCAuIGBkcGtnLWJ1aWxkZmxhZ3MgLS1nZXQgQ1BQRkxBR1NgIC4gYGRwa2ctYnVpbGRmbGFncyAtLWdldCBMREZMQUdTYCAuICItV2EsLS1ub2V4ZWNzdGFjayAtV2FsbCI7Ci0rJGRlYmlhbl9jZmxhZ3MgPX4gcy9cbi8gL2c7Ci0rCi0gbXkgJHN0cmljdF93YXJuaW5ncyA9IDA7Ci0gCi0gbXkgJHg4Nl9nY2NfZGVzPSJERVNfUFRSIERFU19SSVNDMSBERVNfVU5ST0xMIjsKLUBAIC0zNDMsNiArMzQ3LDU1IEBAIG15ICV0YWJsZT0oCi0gIm9zZjEtYWxwaGEtY2MiLCAgImNjOi1zdGQxIC10dW5lIGhvc3QgLU80IC1yZWFkb25seV9zdHJpbmdzOjoodW5rbm93bik6OjpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSzoke2FscGhhX2FzbX06ZGxmY246YWxwaGEtb3NmMS1zaGFyZWQ6Ojouc28iLAotICJ0cnU2NC1hbHBoYS1jYyIsICJjYzotc3RkMSAtdHVuZSBob3N0IC1mYXN0IC1yZWFkb25seV9zdHJpbmdzOjotcHRocmVhZDo6OlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LOiR7YWxwaGFfYXNtfTpkbGZjbjphbHBoYS1vc2YxLXNoYXJlZDo6LW1zeW06LnNvIiwKLSAKLSsjIERlYmlhbiBHTlUvKiAodmFyaW91cyBhcmNoaXRlY3R1cmVzKQotKyJkZWJpYW4tYWxwaGEiLCJnY2M6LURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiR7YWxwaGFfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLWFscGhhLWV2NCIsImdjYzotRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1tY3B1PWV2NDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiR7YWxwaGFfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLWFscGhhLWV2NSIsImdjYzotRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1tY3B1PWV2NTo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiR7YWxwaGFfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLWFybTY0IiwiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tYXJtZWwiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHthcm12NF9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tYXJtaGYiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHthcm12NF9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tYW1kNjQiLCAiZ2NjOi1tNjQgLURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1ETUQzMl9SRUdfVD1pbnQ6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHt4ODZfNjRfYXNtfTplbGY6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6OjoiLAotKyJkZWJpYW4tYXZyMzIiLCAiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtZm9taXQtZnJhbWUtcG9pbnRlcjo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HX0JGX1BUUjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1rZnJlZWJzZC1hbWQ2NCIsImdjYzotbTY0IC1ETF9FTkRJQU4gLURURVJNSU9TICR7ZGViaWFuX2NmbGFnc30gLURNRDMyX1JFR19UPWludDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219OmVsZjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1rZnJlZWJzZC1pMzg2IiwiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU9TICR7ZGViaWFuX2NmbGFnc30gLW1hcmNoPWk0ODY6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1ocHBhIiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIE1EMl9DSEFSIFJDNF9JTkRFWDoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1odXJkLWkzODYiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JT1MgLU8zIC1XYSwtLW5vZXhlY3N0YWNrIC1nIC1tdHVuZT1pNDg2IC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4taWE2NCIsImdjYzotRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1VOUk9MTCBERVNfSU5UOiR7aWE2NF9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4taTM4NiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1pMzg2LWk0ODYiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1tYXJjaD1pNDg2OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4taTM4Ni1pNTg2IiwiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtbWFyY2g9aTU4Njo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLWkzODYtaTY4Ni9jbW92IiwiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtbWFyY2g9aTY4Njo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW02OGsiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgTUQyX0NIQVIgUkM0X0lOREVYOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW1pcHMiLCAgICJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tbWlwc2VsIiwgICAiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW1pcHNuMzIiLCAgICJtaXBzNjQtbGludXgtZ251YWJpbjMyLWdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1taXBzbjMyZWwiLCAgICJtaXBzNjRlbC1saW51eC1nbnVhYmluMzItZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW1pcHM2NCIsICAgIm1pcHM2NC1saW51eC1nbnVhYmk2NC1nY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tbWlwczY0ZWwiLCAgICJtaXBzNjRlbC1saW51eC1nbnVhYmk2NC1nY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tbmV0YnNkLWkzODYiLAkiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU9TICR7ZGViaWFuX2NmbGFnc30gLW00ODY6Oih1bmtub3duKTo6OkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke25vX2FzbX06ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW5ldGJzZC1tNjhrIiwJImdjYzotREJfRU5ESUFOIC1EVEVSTUlPUyAke2RlYmlhbl9jZmxhZ3N9OjoodW5rbm93bik6OjpCTl9MTE9ORyBNRDJfQ0hBUiBSQzRfSU5ERVggREVTX1VOUk9MTDoke25vX2FzbX06ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW5ldGJzZC1zcGFyYyIsCSJnY2M6LURCX0VORElBTiAtRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfSAtbXY4OjoodW5rbm93bik6OjpCTl9MTE9ORyBNRDJfQ0hBUiBSQzRfSU5ERVggREVTX1VOUk9MTDoke25vX2FzbX06ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW9wZW5ic2QtYWxwaGEiLCJnY2M6LURURVJNSU9TICR7ZGViaWFuX2NmbGFnc306Oih1bmtub3duKTo6OlNJWFRZX0ZPVVJfQklUX0xPTkcgREVTX0lOVCBERVNfUFRSIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW9wZW5ic2QtaTM4NiIsICAiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU9TICR7ZGViaWFuX2NmbGFnc30gLW00ODY6Oih1bmtub3duKTo6OkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9hc219OmEub3V0OmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1vcGVuYnNkLW1pcHMiLCJnY2M6LURMX0VORElBTiAke2RlYmlhbl9jZmxhZ3N9OjoodW5rbm93bik6OkJOX0xMT05HIE1EMl9DSEFSIFJDNF9JTkRFWCBSQzRfQ0hBUiBERVNfVU5ST0xMIERFU19SSVNDMiBERVNfUFRSIEJGX1BUUjoke25vX2FzbX06ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW9yMWsiLCAiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1wb3dlcnBjIiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke3BwYzMyX2FzbX06bGludXgzMjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLXBvd2VycGNzcGUiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiR7cHBjMzJfYXNtfTpsaW51eDMyOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tcHBjNjQiLCJnY2M6LW02NCAtREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke3BwYzY0X2FzbX06bGludXg2NDpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1wcGM2NGVsIiwiZ2NjOi1tNjQgLURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHtwcGM2NF9hc219OmxpbnV4NjRsZTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1zMzkwIiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOlJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLCAKLSsiZGViaWFuLXMzOTB4IiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1zaDMiLCAgICJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkc6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tc2g0IiwgICAiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLXNoM2ViIiwgICAiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLXNoNGViIiwgICAiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW0zMnIiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkc6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tc3BhcmMiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7c3BhcmN2OV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tc3BhcmMtdjgiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1tY3B1PXY4IC1EQk5fRElWMlc6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y4X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1zcGFyYy12OSIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1jcHU9djkgLVdhLC1BdjhwbHVzIC1EVUxUUkFTUEFSQyAtREJOX0RJVjJXOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7c3BhcmN2OV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tc3BhcmM2NCIsImdjYzotbTY0IC1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtRFVMVFJBU1BBUkMgLURCTl9ESVYyVzo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19QVFIgREVTX1JJU0MxIERFU19VTlJPTEwgQkZfUFRSOiR7c3BhcmN2OV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLXgzMiIsImdjYzotbXgzMiAtRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLURNRDMyX1JFR19UPWludDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHt4ODZfNjRfYXNtfTplbGY6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1teDMyOi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6eDMyIiwKLSsKLSAjIyMjCi0gIyMjIyBWYXJpZXR5IG9mIExJTlVYOi0pCi0gIyMjIwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsLTEuMC4yYS14MzItYXNtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsLTEuMC4yYS14MzItYXNtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTViZmExLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb3BlbnNzbC0xLjAuMmEteDMyLWFzbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLWh0dHBzOi8vcnQub3BlbnNzbC5vcmcvVGlja2V0L0Rpc3BsYXkuaHRtbD9pZD0zNzU5JnVzZXI9Z3Vlc3QmcGFzcz1ndWVzdAotCi1Gcm9tIDYyNTdkNTliM2E2OGQyZmViOWQ2NDMxN2ExYzU1NmRjMzgxM2VlNjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOiBTYXQsIDIxIE1hciAyMDE1IDA2OjAxOjI1IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNyeXB0bzogdXNlIGJpZ2ludCBpbiB4ODYtNjQgcGVybAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IENyaXN0aWFuIElvcmdhIDxjcmlzdGlhbi5pb3JnYUBpbnRlbC5jb20+Ci0KLVdoZW4gYnVpbGRpbmcgb24geDMyIHN5c3RlbXMgd2hlcmUgdGhlIGRlZmF1bHQgdHlwZSBpcyAzMmJpdCwgbWFrZSBzdXJlCi13ZSBjYW4gdHJhbnNwYXJlbnRseSByZXByZXNlbnQgNjRiaXQgaW50ZWdlcnMuICBPdGhlcndpc2Ugd2UgZW5kIHVwIHdpdGgKLWJ1aWxkIGVycm9ycyBsaWtlOgotL3Vzci9iaW4vcGVybCBhc20vZ2hhc2gteDg2XzY0LnBsIGVsZiA+IGdoYXNoLXg4Nl82NC5zCi1JbnRlZ2VyIG92ZXJmbG93IGluIGhleGFkZWNpbWFsIG51bWJlciBhdCBhc20vLi4vLi4vcGVybGFzbS94ODZfNjQteGxhdGUucGwgbGluZSAyMDEsIDw+IGxpbmUgODkwLgotLi4uCi1naGFzaC14ODZfNjQuczogQXNzZW1ibGVyIG1lc3NhZ2VzOgotZ2hhc2gteDg2XzY0LnM6ODkwOiBFcnJvcjoganVuayAnLjE1NDczMzU1NDc5OTk1ZSsxOScgYWZ0ZXIgZXhwcmVzc2lvbgotCi1XZSBkb24ndCBlbmFibGUgdGhpcyBnbG9iYWxseSBhcyB0aGVyZSBhcmUgc29tZSBjYXNlcyB3aGVyZSB3ZSdkIGdldAotMzJiaXQgdmFsdWVzIGludGVycHJldGVkIGFzIHVuc2lnbmVkIHdoZW4gd2UgbmVlZCB0aGVtIGFzIHNpZ25lZC4KLQotUmVwb3J0ZWQtYnk6IEJlcnRyYW5kIEphY3F1aW4gPGJlcnRyYW5kQGphY3F1aW4uYnpoPgotVVJMOiBodHRwczovL2J1Z3MuZ2VudG9vLm9yZy81NDI2MTgKLS0tLQotIGNyeXB0by9wZXJsYXNtL3g4Nl82NC14bGF0ZS5wbCB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2NyeXB0by9wZXJsYXNtL3g4Nl82NC14bGF0ZS5wbCBiL2NyeXB0by9wZXJsYXNtL3g4Nl82NC14bGF0ZS5wbAotaW5kZXggYWFlODI4OC4uMGJmOTc3NCAxMDA3NTUKLS0tLSBhL2NyeXB0by9wZXJsYXNtL3g4Nl82NC14bGF0ZS5wbAotKysrIGIvY3J5cHRvL3Blcmxhc20veDg2XzY0LXhsYXRlLnBsCi1AQCAtMTk1LDYgKzE5NSwxMCBAQCBteSAlZ2xvYmFsczsKLSAgICAgc3ViIG91dCB7Ci0gICAgIAlteSAkc2VsZiA9IHNoaWZ0OwotIAotKwkjIFdoZW4gYnVpbGRpbmcgb24geDMyIEFCSXMsIHRoZSBleHBhbmRlZCBoZXggdmFsdWUgbWlnaHQgYmUgdG9vCi0rCSMgYmlnIHRvIGZpdCBpbnRvIDMyYml0cy4gIEVuYWJsZSB0cmFuc3BhcmVudCA2NGJpdCBzdXBwb3J0IGhlcmUKLSsJIyBzbyB3ZSBjYW4gc2FmZWx5IHByaW50IGl0IG91dC4KLSsJdXNlIGJpZ2ludDsKLSAJaWYgKCRnYXMpIHsKLSAJICAgICMgU29sYXJpcyAvdXNyL2Njcy9iaW4vYXMgY2FuJ3QgaGFuZGxlIG11bHRpcGxpY2F0aW9ucwotIAkgICAgIyBpbiAkc2VsZi0+e3ZhbHVlfQotLS0gCi0yLjMuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmctdXNpbmctZXh0ZXJuYWwtYXNzZW1ibGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLXVzaW5nLWV4dGVybmFsLWFzc2VtYmxlci5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLXVzaW5nLWV4dGVybmFsLWFzc2VtYmxlci5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLXVzaW5nLWV4dGVybmFsLWFzc2VtYmxlci5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi8wMDAxLW9wZW5zc2wtZm9yY2Utc29mdC1saW5rLXRvLWF2b2lkLXJhcmUtcmFjZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vMDAwMS1vcGVuc3NsLWZvcmNlLXNvZnQtbGluay10by1hdm9pZC1yYXJlLXJhY2UucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vMDAwMS1vcGVuc3NsLWZvcmNlLXNvZnQtbGluay10by1hdm9pZC1yYXJlLXJhY2UucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vMDAwMS1vcGVuc3NsLWZvcmNlLXNvZnQtbGluay10by1hdm9pZC1yYXJlLXJhY2UucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vTWFrZWZpbGVzLXB0ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9NYWtlZmlsZXMtcHRlc3QucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vTWFrZWZpbGVzLXB0ZXN0LnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL01ha2VmaWxlcy1wdGVzdC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9Vc2UtU0hBMjU2LW5vdC1NRDUtYXMtZGVmYXVsdC1kaWdlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL1VzZS1TSEEyNTYtbm90LU1ENS1hcy1kZWZhdWx0LWRpZ2VzdC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9Vc2UtU0hBMjU2LW5vdC1NRDUtYXMtZGVmYXVsdC1kaWdlc3QucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vVXNlLVNIQTI1Ni1ub3QtTUQ1LWFzLWRlZmF1bHQtZGlnZXN0LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2NvbmZpZ3VyZS1tdXNsLXRhcmdldC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vY29uZmlndXJlLW11c2wtdGFyZ2V0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2NvbmZpZ3VyZS1tdXNsLXRhcmdldC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9jb25maWd1cmUtbXVzbC10YXJnZXQucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vY29uZmlndXJlLXRhcmdldHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2NvbmZpZ3VyZS10YXJnZXRzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2NvbmZpZ3VyZS10YXJnZXRzLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2NvbmZpZ3VyZS10YXJnZXRzLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbi9jX3JlaGFzaC1jb21wYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbi9jX3JlaGFzaC1jb21wYXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzgyMGUzZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuL2NfcmVoYXNoLWNvbXBhdC5wYXRjaApAQCAtMCwwICsxLDcxIEBACitGcm9tIDgzZjMxOGQ2OGJiZGFiMWNhODk4Yzk0NTc2YTgzOGNjOTdkZjQ3MDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMdWR3aWcgTnVzc2VsIDxsdWR3aWcubnVzc2VsQHN1c2UuZGU+CitEYXRlOiBXZWQsIDIxIEFwciAyMDEwIDE1OjUyOjEwICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGFsc28gY3JlYXRlIG9sZCBoYXNoIGZvciBjb21wYXRpYmlsaXR5CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2RlYmlhbl0KKworSW5kZXg6IG9wZW5zc2wtMS4wLjJuL3Rvb2xzL2NfcmVoYXNoLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3BlbnNzbC0xLjAuMm4ub3JpZy90b29scy9jX3JlaGFzaC5pbgorKysrIG9wZW5zc2wtMS4wLjJuL3Rvb2xzL2NfcmVoYXNoLmluCitAQCAtOCw4ICs4LDYgQEAgbXkgJHByZWZpeDsKKyAKKyBteSAkb3BlbnNzbCA9ICRFTlZ7T1BFTlNTTH0gfHwgIm9wZW5zc2wiOworIG15ICRwd2Q7CistbXkgJHg1MDloYXNoID0gIi1zdWJqZWN0X2hhc2giOworLW15ICRjcmxoYXNoID0gIi1oYXNoIjsKKyBteSAkdmVyYm9zZSA9IDA7CisgbXkgJHN5bWxpbmtfZXhpc3RzPWV2YWwge3N5bWxpbmsoIiIsIiIpOyAxfTsKKyBteSAkcmVtb3ZlbGlua3MgPSAxOworQEAgLTE4LDEwICsxNiw3IEBAIG15ICRyZW1vdmVsaW5rcyA9IDE7Cisgd2hpbGUgKCAkQVJHVlswXSA9fiAvXi0vICkgeworICAgICBteSAkZmxhZyA9IHNoaWZ0IEBBUkdWOworICAgICBsYXN0IGlmICggJGZsYWcgZXEgJy0tJyk7CistICAgIGlmICggJGZsYWcgZXEgJy1vbGQnKSB7CistCSAgICAkeDUwOWhhc2ggPSAiLXN1YmplY3RfaGFzaF9vbGQiOworLQkgICAgJGNybGhhc2ggPSAiLWhhc2hfb2xkIjsKKy0gICAgfSBlbHNpZiAoICRmbGFnIGVxICctaCcpIHsKKysgICAgaWYgKCAkZmxhZyBlcSAnLWgnKSB7CisgCSAgICBoZWxwKCk7CisgICAgIH0gZWxzaWYgKCAkZmxhZyBlcSAnLW4nICkgeworIAkgICAgJHJlbW92ZWxpbmtzID0gMDsKK0BAIC0xMTMsNyArMTA4LDkgQEAgc3ViIGhhc2hfZGlyIHsKKyAJCQluZXh0OworIAkJfQorIAkJbGlua19oYXNoX2NlcnQoJGZuYW1lKSBpZigkY2VydCk7CisrCQlsaW5rX2hhc2hfY2VydF9vbGQoJGZuYW1lKSBpZigkY2VydCk7CisgCQlsaW5rX2hhc2hfY3JsKCRmbmFtZSkgaWYoJGNybCk7CisrCQlsaW5rX2hhc2hfY3JsX29sZCgkZm5hbWUpIGlmKCRjcmwpOworIAl9CisgfQorIAorQEAgLTE0Niw2ICsxNDMsNyBAQCBzdWIgY2hlY2tfZmlsZSB7CisgCisgc3ViIGxpbmtfaGFzaF9jZXJ0IHsKKyAJCW15ICRmbmFtZSA9ICRfWzBdOworKwkJbXkgJHg1MDloYXNoID0gJF9bMV0gfHwgJy1zdWJqZWN0X2hhc2gnOworIAkJJGZuYW1lID1+IHMvJy8nXFwnJy9nOworIAkJbXkgKCRoYXNoLCAkZnByaW50KSA9IGAiJG9wZW5zc2wiIHg1MDkgJHg1MDloYXNoIC1maW5nZXJwcmludCAtbm9vdXQgLWluICIkZm5hbWUiYDsKKyAJCWNob21wICRoYXNoOworQEAgLTE3NywxMCArMTc1LDIwIEBAIHN1YiBsaW5rX2hhc2hfY2VydCB7CisgCQkkaGFzaGxpc3R7JGhhc2h9ID0gJGZwcmludDsKKyB9CisgCisrc3ViIGxpbmtfaGFzaF9jZXJ0X29sZCB7CisrCQlsaW5rX2hhc2hfY2VydCgkX1swXSwgJy1zdWJqZWN0X2hhc2hfb2xkJyk7CisrfQorKworK3N1YiBsaW5rX2hhc2hfY3JsX29sZCB7CisrCQlsaW5rX2hhc2hfY3JsKCRfWzBdLCAnLWhhc2hfb2xkJyk7CisrfQorKworKworICMgU2FtZSBhcyBhYm92ZSBleGNlcHQgZm9yIGEgQ1JMLiBDUkwgbGlua3MgYXJlIG9mIHRoZSBmb3JtIDxoYXNoPi5yPG4+CisgCisgc3ViIGxpbmtfaGFzaF9jcmwgeworIAkJbXkgJGZuYW1lID0gJF9bMF07CisrCQlteSAkY3JsaGFzaCA9ICRfWzFdIHx8ICItaGFzaCI7CisgCQkkZm5hbWUgPX4gcy8nLydcXCcnL2c7CisgCQlteSAoJGhhc2gsICRmcHJpbnQpID0gYCIkb3BlbnNzbCIgY3JsICRjcmxoYXNoIC1maW5nZXJwcmludCAtbm9vdXQgLWluICckZm5hbWUnYDsKKyAJCWNob21wICRoYXNoOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vY2EucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbi9jYS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vY2EucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuL2NhLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbi9kZWJpYW4tdGFyZ2V0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuL2RlYmlhbi10YXJnZXRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZDkyYmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbi9kZWJpYW4tdGFyZ2V0cy5wYXRjaApAQCAtMCwwICsxLDczIEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtkZWJpYW5dCisKK0luZGV4OiBvcGVuc3NsLTEuMC4ybi9Db25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuc3NsLTEuMC4ybi5vcmlnL0NvbmZpZ3VyZQorKysrIG9wZW5zc2wtMS4wLjJuL0NvbmZpZ3VyZQorQEAgLTEzMyw2ICsxMzMsMTAgQEAgbXkgJGNsYW5nX2RldnRlYW1fd2FybiA9ICItV25vLXVudXNlZC1wYQorICMgV2FybiB0aGF0ICJtYWtlIGRlcGVuZCIgc2hvdWxkIGJlIHJ1bj8KKyBteSAkd2Fybl9tYWtlX2RlcGVuZCA9IDA7CisgCisrIyBUaGVyZSBhcmUgbm8gc2VwYXJhdGUgQ0ZMQUdTL0NQUEZMQUdTL0xERkxBR1MsIHNldCBldmVyeXRoaW5nIGluIENGTEFHUworK215ICRkZWJpYW5fY2ZsYWdzID0gYGRwa2ctYnVpbGRmbGFncyAtLWdldCBDRkxBR1NgIC4gYGRwa2ctYnVpbGRmbGFncyAtLWdldCBDUFBGTEFHU2AgLiBgZHBrZy1idWlsZGZsYWdzIC0tZ2V0IExERkxBR1NgIC4gIi1XYSwtLW5vZXhlY3N0YWNrIC1XYWxsIjsKKyskZGViaWFuX2NmbGFncyA9fiBzL1xuLyAvZzsKKysKKyBteSAkc3RyaWN0X3dhcm5pbmdzID0gMDsKKyAKKyBteSAkeDg2X2djY19kZXM9IkRFU19QVFIgREVTX1JJU0MxIERFU19VTlJPTEwiOworQEAgLTM2OSw2ICszNzMsNTUgQEAgbXkgJXRhYmxlPSgKKyAib3NmMS1hbHBoYS1jYyIsICAiY2M6LXN0ZDEgLXR1bmUgaG9zdCAtTzQgLXJlYWRvbmx5X3N0cmluZ3M6Oih1bmtub3duKTo6OlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LOiR7YWxwaGFfYXNtfTpkbGZjbjphbHBoYS1vc2YxLXNoYXJlZDo6Oi5zbyIsCisgInRydTY0LWFscGhhLWNjIiwgImNjOi1zdGQxIC10dW5lIGhvc3QgLWZhc3QgLXJlYWRvbmx5X3N0cmluZ3M6Oi1wdGhyZWFkOjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTks6JHthbHBoYV9hc219OmRsZmNuOmFscGhhLW9zZjEtc2hhcmVkOjotbXN5bTouc28iLAorIAorKyMgRGViaWFuIEdOVS8qICh2YXJpb3VzIGFyY2hpdGVjdHVyZXMpCisrImRlYmlhbi1hbHBoYSIsImdjYzotRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHthbHBoYV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tYWxwaGEtZXY0IiwiZ2NjOi1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1jcHU9ZXY0OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHthbHBoYV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tYWxwaGEtZXY1IiwiZ2NjOi1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1jcHU9ZXY1OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHthbHBoYV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tYXJtNjQiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1hcm1lbCIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke2FybXY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1hcm1oZiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke2FybXY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1hbWQ2NCIsICJnY2M6LW02NCAtRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLURNRDMyX1JFR19UPWludDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219OmVsZjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OiIsCisrImRlYmlhbi1hdnIzMiIsICJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1mb21pdC1mcmFtZS1wb2ludGVyOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkdfQkZfUFRSOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWtmcmVlYnNkLWFtZDY0IiwiZ2NjOi1tNjQgLURMX0VORElBTiAtRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfSAtRE1EMzJfUkVHX1Q9aW50OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06ZWxmOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWtmcmVlYnNkLWkzODYiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfSAtbWFyY2g9aTQ4Njo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWhwcGEiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgTUQyX0NIQVIgUkM0X0lOREVYOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWh1cmQtaTM4NiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPUyAtTzMgLVdhLC0tbm9leGVjc3RhY2sgLWcgLW10dW5lPWk0ODYgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1pYTY0IiwiZ2NjOi1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfVU5ST0xMIERFU19JTlQ6JHtpYTY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1pMzg2IiwiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWkzODYtaTQ4NiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1hcmNoPWk0ODY6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1pMzg2LWk1ODYiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1tYXJjaD1pNTg2OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4taTM4Ni1pNjg2L2Ntb3YiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1tYXJjaD1pNjg2OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tbTY4ayIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBNRDJfQ0hBUiBSQzRfSU5ERVg6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tbWlwcyIsICAgImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1taXBzZWwiLCAgICJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tbWlwc24zMiIsICAgIm1pcHM2NC1saW51eC1nbnVhYmluMzItZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLW1pcHNuMzJlbCIsICAgIm1pcHM2NGVsLWxpbnV4LWdudWFiaW4zMi1nY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tbWlwczY0IiwgICAibWlwczY0LWxpbnV4LWdudWFiaTY0LWdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1taXBzNjRlbCIsICAgIm1pcHM2NGVsLWxpbnV4LWdudWFiaTY0LWdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1uZXRic2QtaTM4NiIsCSJnY2M6LURMX0VORElBTiAtRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfSAtbTQ4Njo6KHVua25vd24pOjo6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tbmV0YnNkLW02OGsiLAkiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU9TICR7ZGViaWFuX2NmbGFnc306Oih1bmtub3duKTo6OkJOX0xMT05HIE1EMl9DSEFSIFJDNF9JTkRFWCBERVNfVU5ST0xMOiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tbmV0YnNkLXNwYXJjIiwJImdjYzotREJfRU5ESUFOIC1EVEVSTUlPUyAke2RlYmlhbl9jZmxhZ3N9IC1tdjg6Oih1bmtub3duKTo6OkJOX0xMT05HIE1EMl9DSEFSIFJDNF9JTkRFWCBERVNfVU5ST0xMOiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tb3BlbmJzZC1hbHBoYSIsImdjYzotRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfTo6KHVua25vd24pOjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBERVNfSU5UIERFU19QVFIgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tb3BlbmJzZC1pMzg2IiwgICJnY2M6LURMX0VORElBTiAtRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfSAtbTQ4Njo6KHVua25vd24pOjo6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2FzbX06YS5vdXQ6ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLW9wZW5ic2QtbWlwcyIsImdjYzotRExfRU5ESUFOICR7ZGViaWFuX2NmbGFnc306Oih1bmtub3duKTo6Qk5fTExPTkcgTUQyX0NIQVIgUkM0X0lOREVYIFJDNF9DSEFSIERFU19VTlJPTEwgREVTX1JJU0MyIERFU19QVFIgQkZfUFRSOiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tb3IxayIsICJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLXBvd2VycGMiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiR7cHBjMzJfYXNtfTpsaW51eDMyOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tcG93ZXJwY3NwZSIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHtwcGMzMl9hc219OmxpbnV4MzI6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1wcGM2NCIsImdjYzotbTY0IC1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiR7cHBjNjRfYXNtfTpsaW51eDY0OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLXBwYzY0ZWwiLCJnY2M6LW02NCAtRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke3BwYzY0X2FzbX06bGludXg2NGxlOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLXMzOTAiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6UkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsIAorKyJkZWJpYW4tczM5MHgiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLXNoMyIsICAgImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORzoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1zaDQiLCAgICJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkc6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tc2gzZWIiLCAgICJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkc6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tc2g0ZWIiLCAgICJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkc6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tbTMyciIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORzoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1zcGFyYyIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1zcGFyYy12OCIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1jcHU9djggLURCTl9ESVYyVzo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfVU5ST0xMIEJGX1BUUjoke3NwYXJjdjhfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLXNwYXJjLXY5IiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtbWNwdT12OSAtV2EsLUF2OHBsdXMgLURVTFRSQVNQQVJDIC1EQk5fRElWMlc6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1zcGFyYzY0IiwiZ2NjOi1tNjQgLURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1EVUxUUkFTUEFSQyAtREJOX0RJVjJXOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1BUUiBERVNfUklTQzEgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4teDMyIiwiZ2NjOi1teDMyIC1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtRE1EMzJfUkVHX1Q9aW50OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVQgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219OmVsZjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW14MzI6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Ojp4MzIiLAorKworICMjIyMKKyAjIyMjIFZhcmlldHkgb2YgTElOVVg6LSkKKyAjIyMjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9tYW4tZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9kZWJpYW4vbWFuLWRpci5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vbWFuLWRpci5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9kZWJpYW4vbWFuLWRpci5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vbWFuLXNlY3Rpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbi9tYW4tc2VjdGlvbi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vbWFuLXNlY3Rpb24ucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuL21hbi1zZWN0aW9uLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9uby1ycGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuL25vLXJwYXRoLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9uby1ycGF0aC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9kZWJpYW4vbm8tcnBhdGgucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL25vLXN5bWJvbGljLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9kZWJpYW4vbm8tc3ltYm9saWMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL25vLXN5bWJvbGljLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbi9uby1zeW1ib2xpYy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vcGljLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9kZWJpYW4vcGljLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9waWMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuL3BpYy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4xLjAuMi9ibG9ja19kaWdpY2VydF9tYWxheXNpYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuMS4wLjIvYmxvY2tfZGlnaWNlcnRfbWFsYXlzaWEucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuMS4wLjIvYmxvY2tfZGlnaWNlcnRfbWFsYXlzaWEucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuMS4wLjIvYmxvY2tfZGlnaWNlcnRfbWFsYXlzaWEucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuMS4wLjIvYmxvY2tfZGlnaW5vdGFyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9kZWJpYW4xLjAuMi9ibG9ja19kaWdpbm90YXIucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuMS4wLjIvYmxvY2tfZGlnaW5vdGFyLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2lub3Rhci5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4xLjAuMi9zb25hbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2RlYmlhbjEuMC4yL3NvbmFtZS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4xLjAuMi9zb25hbWUucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZGViaWFuMS4wLjIvc29uYW1lLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbjEuMC4yL3ZlcnNpb24tc2NyaXB0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9lbmdpbmVzLWluc3RhbGwtaW4tbGliZGlyLXNzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZW5naW5lcy1pbnN0YWxsLWluLWxpYmRpci1zc2wucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZW5naW5lcy1pbnN0YWxsLWluLWxpYmRpci1zc2wucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZW5naW5lcy1pbnN0YWxsLWluLWxpYmRpci1zc2wucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZmluZC5wbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vZmluZC5wbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9maW5kLnBsCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL2ZpbmQucGwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb2UtbGRmbGFncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vb2UtbGRmbGFncy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vZS1sZGZsYWdzLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL29lLWxkZmxhZ3MucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb3BlbnNzbC1jX3JlaGFzaC5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vb3BlbnNzbC1jX3JlaGFzaC5zaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsLWNfcmVoYXNoLnNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL29wZW5zc2wtY19yZWhhc2guc2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb3BlbnNzbC1maXgtZGVzLnBvZC1lcnJvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vb3BlbnNzbC1maXgtZGVzLnBvZC1lcnJvci5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsLWZpeC1kZXMucG9kLWVycm9yLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL29wZW5zc2wtZml4LWRlcy5wb2QtZXJyb3IucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb3BlbnNzbC11dGlsLXBlcmxwYXRoLnBsLWN3ZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vb3BlbnNzbC11dGlsLXBlcmxwYXRoLnBsLWN3ZC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsLXV0aWwtcGVybHBhdGgucGwtY3dkLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL29wZW5zc2wtdXRpbC1wZXJscGF0aC5wbC1jd2QucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb3BlbnNzbF9maXhfZm9yX3gzMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vb3BlbnNzbF9maXhfZm9yX3gzMi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsX2ZpeF9mb3JfeDMyLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL29wZW5zc2xfZml4X2Zvcl94MzIucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vcGFyYWxsZWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL3BhcmFsbGVsLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3BhcmFsbGVsLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL3BhcmFsbGVsLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3B0ZXN0LWRlcHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL3B0ZXN0LWRlcHMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vcHRlc3QtZGVwcy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9wdGVzdC1kZXBzLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3B0ZXN0X21ha2VmaWxlX2RlcHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL3B0ZXN0X21ha2VmaWxlX2RlcHMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vcHRlc3RfbWFrZWZpbGVfZGVwcy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9wdGVzdF9tYWtlZmlsZV9kZXBzLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3JlcHJvZHVjaWJsZS1jZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL3JlcHJvZHVjaWJsZS1jZmxhZ3MucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vcmVwcm9kdWNpYmxlLWNmbGFncy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9yZXByb2R1Y2libGUtY2ZsYWdzLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3JlcHJvZHVjaWJsZS1ta2J1aWxkaW5mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9yZXByb2R1Y2libGUtbWtidWlsZGluZi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9yZXByb2R1Y2libGUtbWtidWlsZGluZi5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9yZXByb2R1Y2libGUtbWtidWlsZGluZi5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9ydW4tcHRlc3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJvL3J1bi1wdGVzdApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9ydW4tcHRlc3QKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm8vcnVuLXB0ZXN0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3NoYXJlZC1saWJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9zaGFyZWQtbGlicy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9zaGFyZWQtbGlicy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4yby9zaGFyZWQtbGlicy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtUmVtb3ZlLXRlc3QtdGhhdC1yZXF1aXJlcy1ydW5uaW5nLWFzLW5vbi1yb290LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtUmVtb3ZlLXRlc3QtdGhhdC1yZXF1aXJlcy1ydW5uaW5nLWFzLW5vbi1yb290LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzZiYjM5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC8wMDAxLVJlbW92ZS10ZXN0LXRoYXQtcmVxdWlyZXMtcnVubmluZy1hcy1ub24tcm9vdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZyb20gM2ZkYjFlMmExNmVhNDA1YzY3MzE0NDdhODk5NGYyMjI4MDhlZjdlNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogRnJpLCA3IEFwciAyMDE3IDE4OjAxOjUyICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSB0ZXN0IHRoYXQgcmVxdWlyZXMgcnVubmluZyBhcyBub24tcm9vdAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIHRlc3QvcmVjaXBlcy80MC10ZXN0X3JlaGFzaC50IHwgMTcgKy0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDE2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdC9yZWNpcGVzLzQwLXRlc3RfcmVoYXNoLnQgYi90ZXN0L3JlY2lwZXMvNDAtdGVzdF9yZWhhc2gudAotaW5kZXggZjkwMmMyMy4uYzc1NjdjMSAxMDA2NDQKLS0tLSBhL3Rlc3QvcmVjaXBlcy80MC10ZXN0X3JlaGFzaC50Ci0rKysgYi90ZXN0L3JlY2lwZXMvNDAtdGVzdF9yZWhhc2gudAotQEAgLTIzLDcgKzIzLDcgQEAgc2V0dXAoInRlc3RfcmVoYXNoIik7Ci0gcGxhbiBza2lwX2FsbCA9PiAidGVzdF9yZWhhc2ggaXMgbm90IGF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtIgotICAgICB1bmxlc3MgcnVuKGFwcChbIm9wZW5zc2wiLCAicmVoYXNoIiwgIi1oZWxwIl0pKTsKLSAKLS1wbGFuIHRlc3RzID0+IDU7Ci0rcGxhbiB0ZXN0cyA9PiAzOwotIAotIGluZGlyICJyZWhhc2guJCQiID0+IHN1YiB7Ci0gICAgIHByZXBhcmUoKTsKLUBAIC00MiwyMSArNDIsNiBAQCBpbmRpciAicmVoYXNoLiQkIiA9PiBzdWIgewotICAgICAgICAnVGVzdGluZyByZWhhc2ggb3BlcmF0aW9ucyBvbiBlbXB0eSBkaXJlY3RvcnknKTsKLSB9LCBjcmVhdGUgPT4gMSwgY2xlYW51cCA9PiAxOwotIAotLWluZGlyICJyZWhhc2guJCQiID0+IHN1YiB7Ci0tICAgIHByZXBhcmUoKTsKLS0gICAgY2htb2QgMDUwMCwgY3VyZGlyKCk7Ci0tICBTS0lQOiB7Ci0tICAgICAgaWYgKCFvayghb3BlbihGT08sICI+dW53cml0YWJsZS50eHQiKSwKLS0gICAgICAgICAgICAgICJUZXN0aW5nIHRoYXQgd2UgYXJlbid0IHJ1bm5pbmcgYXMgYSBwcml2aWxlZ2VkIHVzZXIsIHN1Y2ggYXMgcm9vdCIpKSB7Ci0tICAgICAgICAgIGNsb3NlIEZPTzsKLS0gICAgICAgICAgc2tpcCAiSXQncyBwb2ludGxlc3MgdG8gcnVuIHRoZSBuZXh0IHRlc3QgYXMgcm9vdCIsIDE7Ci0tICAgICAgfQotLSAgICAgIGlzbnQocnVuKGFwcChbIm9wZW5zc2wiLCAicmVoYXNoIiwgY3VyZGlyKCldKSksIDEsCi0tICAgICAgICAgICAnVGVzdGluZyByZWhhc2ggb3BlcmF0aW9ucyBvbiByZWFkb25seSBkaXJlY3RvcnknKTsKLS0gICAgfQotLSAgICBjaG1vZCAwNzAwLCBjdXJkaXIoKTsgICAgICAgIyBtYWtlIGl0IHdyaXRhYmxlIGFnYWluLCBzbyBjbGVhbnVwIHdvcmtzCi0tfSwgY3JlYXRlID0+IDEsIGNsZWFudXAgPT4gMTsKLS0KLSBzdWIgcHJlcGFyZSB7Ci0gICAgIG15IEBwZW1zb3VyY2VmaWxlcyA9IHNvcnQgZ2xvYihzcmN0b3BfZmlsZSgndGVzdCcsICIqLnBlbSIpKTsKLSAgICAgbXkgQGRlc3RmaWxlcyA9ICgpOwotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtYWVzLWFzbS1hZXMtYXJtdjQtYnNhZXMtYXJtdjctLnBsLW1ha2UtaXQtd29yay13aXRoLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC8wMDAxLWFlcy1hc20tYWVzLWFybXY0LWJzYWVzLWFybXY3LS5wbC1tYWtlLWl0LXdvcmstd2l0aC0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiMGExNjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtYWVzLWFzbS1hZXMtYXJtdjQtYnNhZXMtYXJtdjctLnBsLW1ha2UtaXQtd29yay13aXRoLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLUZyb20gYmNjMDk2YTUwODExYmYwZjBjNGZkMzRiMjk5M2ZlZDdhNzAxNTk3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHkgUG9seWFrb3YgPGFwcHJvQG9wZW5zc2wub3JnPgotRGF0ZTogRnJpLCAzIE5vdiAyMDE3IDIzOjMwOjAxICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFlcy9hc20ve2Flcy1hcm12NHxic2Flcy1hcm12N30ucGw6IG1ha2UgaXQgd29yayB3aXRoCi0gYmludXRpbHMtMi4yOS4KLQotSXQncyBub3QgY2xlYXIgaWYgaXQncyBhIGZlYXR1cmUgb3IgYnVnLCBidXQgYmludXRpbHMtMi4yOVsuMV0KLWludGVycHJldHMgJ2FkcicgaW5zdHJ1Y3Rpb24gd2l0aCBUaHVtYjIgY29kZSByZWZlcmVuY2UgZGlmZmVyZW50bHksCi1pbiBhIHdheSB0aGF0IGFmZmVjdHMgY2FsY3VsYXRpb24gb2YgYWRkcmVzc2VzIG9mIGNvbnN0YW50cycgdGFibGVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVJldmlld2VkLWJ5OiBUaW0gSHVkc29uIDx0amhAb3BlbnNzbC5vcmc+Ci1SZXZpZXdlZC1ieTogQmVybmQgRWRsaW5nZXIgPGJlcm5kLmVkbGluZ2VyQGhvdG1haWwuZGU+Ci1TaWduZWQtb2ZmLWJ5OiBTdGVmYW4gQWduZXIgPHN0ZWZhbi5hZ25lckB0b3JhZGV4LmNvbT4KLShNZXJnZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vb3BlbnNzbC9vcGVuc3NsL3B1bGwvNDY2OSkKLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgYjgyYWNjM2MxYTdmMzA0YzlkZjMxODQxNzUzYTBmYTc2YjViM2NkYSkKLS0tLQotIGNyeXB0by9hZXMvYXNtL2Flcy1hcm12NC5wbCAgIHwgNiArKystLS0KLSBjcnlwdG8vYWVzL2FzbS9ic2Flcy1hcm12Ny5wbCB8IDYgKysrLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jcnlwdG8vYWVzL2FzbS9hZXMtYXJtdjQucGwgYi9jcnlwdG8vYWVzL2FzbS9hZXMtYXJtdjQucGwKLWluZGV4IDE2ZDc5YWFlNTMuLmM2NDc0YjhhYWQgMTAwNjQ0Ci0tLS0gYS9jcnlwdG8vYWVzL2FzbS9hZXMtYXJtdjQucGwKLSsrKyBiL2NyeXB0by9hZXMvYXNtL2Flcy1hcm12NC5wbAotQEAgLTIwMCw3ICsyMDAsNyBAQCBBRVNfZW5jcnlwdDoKLSAjaWZuZGVmCV9fdGh1bWIyX18KLSAJc3ViCXIzLHBjLCM4CQlAIEFFU19lbmNyeXB0Ci0gI2Vsc2UKLS0JYWRyCXIzLEFFU19lbmNyeXB0Ci0rCWFkcglyMywuCi0gI2VuZGlmCi0gCXN0bWRiICAgc3AhLHtyMSxyNC1yMTIsbHJ9Ci0gI2lmZGVmCV9fQVBQTEVfXwotQEAgLTQ1MCw3ICs0NTAsNyBAQCBfYXJtdjRfQUVTX3NldF9lbmNyeXB0X2tleToKLSAjaWZuZGVmCV9fdGh1bWIyX18KLSAJc3ViCXIzLHBjLCM4CQlAIEFFU19zZXRfZW5jcnlwdF9rZXkKLSAjZWxzZQotLQlhZHIJcjMsQUVTX3NldF9lbmNyeXB0X2tleQotKwlhZHIJcjMsLgotICNlbmRpZgotIAl0ZXEJcjAsIzAKLSAjaWZkZWYJX190aHVtYjJfXwotQEAgLTk3Niw3ICs5NzYsNyBAQCBBRVNfZGVjcnlwdDoKLSAjaWZuZGVmCV9fdGh1bWIyX18KLSAJc3ViCXIzLHBjLCM4CQlAIEFFU19kZWNyeXB0Ci0gI2Vsc2UKLS0JYWRyCXIzLEFFU19kZWNyeXB0Ci0rCWFkcglyMywuCi0gI2VuZGlmCi0gCXN0bWRiICAgc3AhLHtyMSxyNC1yMTIsbHJ9Ci0gI2lmZGVmCV9fQVBQTEVfXwotZGlmZiAtLWdpdCBhL2NyeXB0by9hZXMvYXNtL2JzYWVzLWFybXY3LnBsIGIvY3J5cHRvL2Flcy9hc20vYnNhZXMtYXJtdjcucGwKLWluZGV4IDlmMjg4NjYwZWYuLmEyN2JiNGExNzkgMTAwNjQ0Ci0tLS0gYS9jcnlwdG8vYWVzL2FzbS9ic2Flcy1hcm12Ny5wbAotKysrIGIvY3J5cHRvL2Flcy9hc20vYnNhZXMtYXJtdjcucGwKLUBAIC03NDQsNyArNzQ0LDcgQEAgJGNvZGUuPTw8X19fOwotIC50eXBlCV9ic2Flc19kZWNyeXB0OCwlZnVuY3Rpb24KLSAuYWxpZ24JNAotIF9ic2Flc19kZWNyeXB0ODoKLS0JYWRyCSRjb25zdCxfYnNhZXNfZGVjcnlwdDgKLSsJYWRyCSRjb25zdCwuCi0gCXZsZG1pYQkka2V5ISwge0BYTU1bOV19CQlAIHJvdW5kIDAga2V5Ci0gI2lmZGVmCV9fQVBQTEVfXwotIAlhZHIJJGNvbnN0LC5MTTBJU1IKLUBAIC04NDMsNyArODQzLDcgQEAgX2JzYWVzX2NvbnN0OgotIC50eXBlCV9ic2Flc19lbmNyeXB0OCwlZnVuY3Rpb24KLSAuYWxpZ24JNAotIF9ic2Flc19lbmNyeXB0ODoKLS0JYWRyCSRjb25zdCxfYnNhZXNfZW5jcnlwdDgKLSsJYWRyCSRjb25zdCwuCi0gCXZsZG1pYQkka2V5ISwge0BYTU1bOV19CQlAIHJvdW5kIDAga2V5Ci0gI2lmZGVmCV9fQVBQTEVfXwotIAlhZHIJJGNvbnN0LC5MTTBTUgotQEAgLTk1MSw3ICs5NTEsNyBAQCAkY29kZS49PDxfX187Ci0gLnR5cGUJX2JzYWVzX2tleV9jb252ZXJ0LCVmdW5jdGlvbgotIC5hbGlnbgk0Ci0gX2JzYWVzX2tleV9jb252ZXJ0OgotLQlhZHIJJGNvbnN0LF9ic2Flc19rZXlfY29udmVydAotKwlhZHIJJGNvbnN0LC4KLSAJdmxkMS44CXtAWE1NWzddfSwgIFskaW5wXSEJCUAgbG9hZCByb3VuZCAwIGtleQotICNpZmRlZglfX0FQUExFX18KLSAJYWRyCSRjb25zdCwuTE0wCi0tLSAKLTIuMTUuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC5pbmMKaW5kZXggOTMzNWIwYi4uNjQ1ZDY0ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwLmluYwpAQCAtMjUsNyArMjUsNyBAQAogVEVSTUlPID89ICItRFRFUk1JTyIKICMgQXZvaWQgYmluYXJpZXMgYmVpbmcgbWFya2VkIGFzIHJlcXVpcmluZyBhbiBleGVjdXRhYmxlIHN0YWNrIHNpbmNlIGl0IAogIyBkb2Vzbid0KHdoaWNoIGNhdXNlcyBhbmQgdGhpcyBjYXVzZXMgaXNzdWVzIHdpdGggU0VMaW51eAotQ0ZMQUcgPSAiJHtAYmFzZV9jb25kaXRpb25hbCgnU0lURUlORk9fRU5ESUFOTkVTUycsICdsZScsICctRExfRU5ESUFOJywgJy1EQl9FTkRJQU4nLCBkKX0gXAorQ0ZMQUcgPSAiJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ1NJVEVJTkZPX0VORElBTk5FU1MnLCAnbGUnLCAnLURMX0VORElBTicsICctREJfRU5ESUFOJywgZCl9IFwKIAkgJHtURVJNSU99ICR7Q0ZMQUdTfSAtV2FsbCAtV2EsLS1ub2V4ZWNzdGFjayIKIAogZXhwb3J0IERJUlMgPSAiY3J5cHRvIHNzbCBhcHBzIgpAQCAtMTM1LDYgKzEzNSwxMiBAQAogCWxpbnV4LXBvd2VycGM2NCkKIAkJdGFyZ2V0PWxpbnV4LXBwYzY0CiAJCTs7CisJbGludXgtcmlzY3Y2NCkKKwkJdGFyZ2V0PWxpbnV4LWdlbmVyaWM2NAorCQk7OworCWxpbnV4LXJpc2N2MzIpCisJCXRhcmdldD1saW51eC1nZW5lcmljMzIKKwkJOzsKIAlsaW51eC1zdXBlcnNwYXJjKQogCQl0YXJnZXQ9bGludXgtc3BhcmN2OAogCQk7OwpAQCAtMTUxLDcgKzE1Nyw4IEBACiAgICAgICAgIGlmIFsgIngkdXNlcHJlZml4IiA9ICJ4IiBdOyB0aGVuCiAgICAgICAgICAgICAgICAgdXNlcHJlZml4PS8KICAgICAgICAgZmkgICAgICAgIAotCXBlcmwgLi9Db25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9IHNoYXJlZCAtLXByZWZpeD0kdXNlcHJlZml4IC0tb3BlbnNzbGRpcj0ke2xpYmRpcn0vc3NsIC0tbGliZGlyPWBiYXNlbmFtZSAke2xpYmRpcn1gICR0YXJnZXQKKwlsaWJkaXJsZWFmPSIkKGVjaG8gJHtsaWJkaXJ9IHwgc2VkIHM6JHVzZXByZWZpeDo6KSIKKwlwZXJsIC4vQ29uZmlndXJlICR7RVhUUkFfT0VDT05GfSBzaGFyZWQgLS1wcmVmaXg9JHVzZXByZWZpeCAtLW9wZW5zc2xkaXI9JHtsaWJkaXJ9L3NzbCAtLWxpYmRpcj0ke2xpYmRpcmxlYWZ9ICR0YXJnZXQKIH0KIAogZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4wLjJuLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMC4ybi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjA3Mjg5ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4wLjJuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotcmVxdWlyZSBvcGVuc3NsMTAuaW5jCi0KLSMgRm9yIHRhcmdldCBzaWRlIHZlcnNpb25zIG9mIG9wZW5zc2wgZW5hYmxlIHN1cHBvcnQgZm9yIE9DRiBMaW51eCBkcml2ZXIKLSMgaWYgdGhleSBhcmUgYXZhaWxhYmxlLgotCi1DRkxBRyArPSAiLURIQVZFX0NSWVBUT0RFViAtRFVTRV9DUllQVE9ERVZfRElHRVNUUyIKLUNGTEFHX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1mUElDIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wNTdkOTIxOGM2MTgwZTFkOWVlNDA3NTcyYjJkZDIyNSIKLQotZXhwb3J0IERJUlMgPSAiY3J5cHRvIHNzbCBhcHBzIGVuZ2luZXMiCi1leHBvcnQgT0VfTERGTEFHUz0iJHtMREZMQUdTfSIKLQotU1JDX1VSSSArPSAiZmlsZTovL2ZpbmQucGw7c3ViZGlyPW9wZW5zc2wtJHtQVn0vdXRpbC8gXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL29wZW5zc2wtY19yZWhhc2guc2ggXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLXRhcmdldHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2hhcmVkLWxpYnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb2UtbGRmbGFncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9lbmdpbmVzLWluc3RhbGwtaW4tbGliZGlyLXNzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi9ibG9ja19kaWdpbm90YXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuMS4wLjIvYmxvY2tfZGlnaWNlcnRfbWFsYXlzaWEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL2NhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi9jX3JlaGFzaC1jb21wYXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL2RlYmlhbi10YXJnZXRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi9tYW4tZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi9tYW4tc2VjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbm8tcnBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL25vLXN5bWJvbGljLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi9waWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuMS4wLjIvdmVyc2lvbi1zY3JpcHQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuMS4wLjIvc29uYW1lLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wZW5zc2xfZml4X2Zvcl94MzIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC1maXgtZGVzLnBvZC1lcnJvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZXMtcHRlc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcHRlc3QtZGVwcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsLTEuMC4yYS14MzItYXNtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3B0ZXN0X21ha2VmaWxlX2RlcHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLW11c2wtdGFyZ2V0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BhcmFsbGVsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wZW5zc2wtdXRpbC1wZXJscGF0aC5wbC1jd2QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vVXNlLVNIQTI1Ni1ub3QtTUQ1LWFzLWRlZmF1bHQtZGlnZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmctdXNpbmctZXh0ZXJuYWwtYXNzZW1ibGVyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtb3BlbnNzbC1mb3JjZS1zb2Z0LWxpbmstdG8tYXZvaWQtcmFyZS1yYWNlLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAotICAgICAgICAgICBmaWxlOi8vcmVwcm9kdWNpYmxlLWNmbGFncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZXByb2R1Y2libGUtbWtidWlsZGluZi5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIxM2JkYzFiMWQxZmYzOWI2ZmQ0MmEyNTVlNzQ2NzZhNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzNzBiYWJiNzVmMjc4YzM5ZTBjNTBlOGM0ZTc0OTNiYzBmMThkYjY4Njc0NzgzNDFhODMyYTk4MmZkMTVhOGZlIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZW5naW5lcyIKLUZJTEVTXyR7UE59LWVuZ2luZXMgPSAiJHtsaWJkaXJ9L3NzbC9lbmdpbmVzLyouc28gJHtsaWJkaXJ9L2VuZ2luZXMiCi0KLSMgVGhlIGNyeXB0b191c2VfYmlnaW50IHBhdGNoIG1lYW5zIHRoYXQgcGVybCdzIGJpZ251bSBtb2R1bGUgbmVlZHMgdG8gYmUKLSMgaW5zdGFsbGVkLCBidXQgc29tZSBkaXN0cmlidXRpb25zIChmb3IgZXhhbXBsZSBGZWRvcmEgMjMpIGRvbid0IHNoaXAgaXQgYnkKLSMgZGVmYXVsdC4gIEFzIHRoZSByZXN1bHRpbmcgZXJyb3IgaXMgdmVyeSBtaXNsZWFkaW5nIGNoZWNrIGZvciBiaWdudW0gYmVmb3JlCi0jIGJ1aWxkaW5nLgotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0JaWYgISBwZXJsIC1NYmlnaW50IC1lIHRydWU7IHRoZW4KLQkJYmJmYXRhbCAiVGhlIHBlcmwgbW9kdWxlICdiaWdudW0nIHdhcyBub3QgZm91bmQgYnV0IHRoaXMgaXMgcmVxdWlyZWQgdG8gYnVpbGQgb3BlbnNzbC4gIFBsZWFzZSBpbnN0YWxsIHRoaXMgbW9kdWxlIChvZnRlbiBwYWNrYWdlZCBhcyBwZXJsLWJpZ251bSkgYW5kIHJlLXJ1biBiaXRiYWtlLiIKLQlmaQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMC4yby5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjAuMm8uYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEzZWJmMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjAuMm8uYmIKQEAgLTAsMCArMSw2NCBAQAorcmVxdWlyZSBvcGVuc3NsMTAuaW5jCisKKyMgRm9yIHRhcmdldCBzaWRlIHZlcnNpb25zIG9mIG9wZW5zc2wgZW5hYmxlIHN1cHBvcnQgZm9yIE9DRiBMaW51eCBkcml2ZXIKKyMgaWYgdGhleSBhcmUgYXZhaWxhYmxlLgorCitDRkxBRyArPSAiLURIQVZFX0NSWVBUT0RFViAtRFVTRV9DUllQVE9ERVZfRElHRVNUUyIKK0NGTEFHX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1mUElDIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mNDc1MzY4OTI0ODI3ZDA2ZDRiNDE2MTExYzhiZGI3NyIKKworZXhwb3J0IERJUlMgPSAiY3J5cHRvIHNzbCBhcHBzIGVuZ2luZXMiCitleHBvcnQgT0VfTERGTEFHUz0iJHtMREZMQUdTfSIKKworU1JDX1VSSSArPSAiZmlsZTovL2ZpbmQucGw7c3ViZGlyPW9wZW5zc2wtJHtQVn0vdXRpbC8gXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL29wZW5zc2wtY19yZWhhc2guc2ggXAorICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLXRhcmdldHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2hhcmVkLWxpYnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb2UtbGRmbGFncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9lbmdpbmVzLWluc3RhbGwtaW4tbGliZGlyLXNzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi9ibG9ja19kaWdpbm90YXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuMS4wLjIvYmxvY2tfZGlnaWNlcnRfbWFsYXlzaWEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL2NhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9jX3JlaGFzaC1jb21wYXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL2RlYmlhbi10YXJnZXRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9tYW4tZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9tYW4tc2VjdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbm8tcnBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL25vLXN5bWJvbGljLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9waWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuMS4wLjIvdmVyc2lvbi1zY3JpcHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuMS4wLjIvc29uYW1lLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29wZW5zc2xfZml4X2Zvcl94MzIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC1maXgtZGVzLnBvZC1lcnJvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZXMtcHRlc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcHRlc3QtZGVwcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wdGVzdF9tYWtlZmlsZV9kZXBzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS1tdXNsLXRhcmdldC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wYXJhbGxlbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsLXV0aWwtcGVybHBhdGgucGwtY3dkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL1VzZS1TSEEyNTYtbm90LU1ENS1hcy1kZWZhdWx0LWRpZ2VzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLXVzaW5nLWV4dGVybmFsLWFzc2VtYmxlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW9wZW5zc2wtZm9yY2Utc29mdC1saW5rLXRvLWF2b2lkLXJhcmUtcmFjZS5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKKyAgICAgICAgICAgZmlsZTovL3JlcHJvZHVjaWJsZS1jZmxhZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVwcm9kdWNpYmxlLW1rYnVpbGRpbmYucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNDQyNzliODU1N2MzMjQ3Y2JlMzI0ZTIzMjJlY2QxMTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWMzZjVjOTcxNGJhMGZkNDVjYjRlMDg3MzAxZWIxMzM2YzMxN2UwZDIwYjU3NWExMjUwNTA0NzBlODA4OWU0ZCIKKworUEFDS0FHRVMgPSsgIiR7UE59LWVuZ2luZXMiCitGSUxFU18ke1BOfS1lbmdpbmVzID0gIiR7bGliZGlyfS9zc2wvZW5naW5lcy8qLnNvICR7bGliZGlyfS9lbmdpbmVzIgorCisjIFRoZSBjcnlwdG9fdXNlX2JpZ2ludCBwYXRjaCBtZWFucyB0aGF0IHBlcmwncyBiaWdudW0gbW9kdWxlIG5lZWRzIHRvIGJlCisjIGluc3RhbGxlZCwgYnV0IHNvbWUgZGlzdHJpYnV0aW9ucyAoZm9yIGV4YW1wbGUgRmVkb3JhIDIzKSBkb24ndCBzaGlwIGl0IGJ5CisjIGRlZmF1bHQuICBBcyB0aGUgcmVzdWx0aW5nIGVycm9yIGlzIHZlcnkgbWlzbGVhZGluZyBjaGVjayBmb3IgYmlnbnVtIGJlZm9yZQorIyBidWlsZGluZy4KK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCWlmICEgcGVybCAtTWJpZ2ludCAtZSB0cnVlOyB0aGVuCisJCWJiZmF0YWwgIlRoZSBwZXJsIG1vZHVsZSAnYmlnbnVtJyB3YXMgbm90IGZvdW5kIGJ1dCB0aGlzIGlzIHJlcXVpcmVkIHRvIGJ1aWxkIG9wZW5zc2wuICBQbGVhc2UgaW5zdGFsbCB0aGlzIG1vZHVsZSAob2Z0ZW4gcGFja2FnZWQgYXMgcGVybC1iaWdudW0pIGFuZCByZS1ydW4gYml0YmFrZS4iCisJZmkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMGcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4xLjBnLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjQ5YmZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMGcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotU1VNTUFSWSA9ICJTZWN1cmUgU29ja2V0IExheWVyIgotREVTQ1JJUFRJT04gPSAiU2VjdXJlIFNvY2tldCBMYXllciAoU1NMKSBiaW5hcnkgYW5kIHJlbGF0ZWQgY3J5cHRvZ3JhcGhpYyB0b29scy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9uZXdzL3Z1bG5lcmFiaWxpdGllcy5odG1sIgotU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCi0KLSMgIm9wZW5zc2wgfCBTU0xlYXkiIGR1YWwgbGljZW5zZQotTElDRU5TRSA9ICJvcGVuc3NsIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9Y2FlNmRhMTBmNGZmZDk3MDMyMTQ3NzZkMmFhYmNlMzIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotU1JDX1VSSVttZDVzdW1dID0gImJhNWYxYjhiODM1Yjg4Y2FkYmNlOWIzNWVkOTUzMWE2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRlNGQ1MDEyNjdkYTM5MzEwOTA1Y2I2ZGM4YzYxMjFmN2EyY2FkNDVhNzcwN2Y3NmRmODI4ZmUxYjg1MDczYWYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2Uvb3BlbnNzbC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL29wZW5zc2wtY19yZWhhc2guc2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1UYWtlLWxpbmtpbmctZmxhZ3MtZnJvbS1MREZMQUdTLWVudi12YXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtdGVzdC10aGF0LXJlcXVpcmVzLXJ1bm5pbmctYXMtbm9uLXJvb3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hZXMtYXNtLWFlcy1hcm12NC1ic2Flcy1hcm12Ny0ucGwtbWFrZS1pdC13b3JrLXdpdGgtLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVMgPSAiJHtXT1JLRElSfS9vcGVuc3NsLSR7UFZ9IgotCi1pbmhlcml0IGxpYl9wYWNrYWdlIG11bHRpbGliX2hlYWRlciBwdGVzdAotCi1kb19jb25maWd1cmUgKCkgewotCW9zPSR7SE9TVF9PU30KLQljYXNlICRvcyBpbgotCWxpbnV4LXVjbGliYyB8XAotCWxpbnV4LXVjbGliY2VhYmkgfFwKLQlsaW51eC1nbnVlYWJpIHxcCi0JbGludXgtdWNsaWJjc3BlIHxcCi0JbGludXgtZ251c3BlIHxcCi0JbGludXgtbXVzbCopCi0JCW9zPWxpbnV4Ci0JCTs7Ci0JCSopCi0JCTs7Ci0JZXNhYwotCXRhcmdldD0iJG9zLSR7SE9TVF9BUkNIfSIKLQljYXNlICR0YXJnZXQgaW4KLQlsaW51eC1hcm0pCi0JCXRhcmdldD1saW51eC1hcm12NAotCQk7OwotCWxpbnV4LWFybWViKQotCQl0YXJnZXQ9bGludXgtYXJtdjQKLQkJOzsKLQlsaW51eC1hYXJjaDY0KikKLQkJdGFyZ2V0PWxpbnV4LWFhcmNoNjQKLQkJOzsKLQlsaW51eC1zaDMpCi0JCXRhcmdldD1saW51eC1nZW5lcmljMzIKLQkJOzsKLQlsaW51eC1zaDQpCi0JCXRhcmdldD1saW51eC1nZW5lcmljMzIKLQkJOzsKLQlsaW51eC1pNDg2KQotCQl0YXJnZXQ9bGludXgtZWxmCi0JCTs7Ci0JbGludXgtaTU4NiB8IGxpbnV4LXZpYWMzKQotCQl0YXJnZXQ9bGludXgtZWxmCi0JCTs7Ci0JbGludXgtaTY4NikKLQkJdGFyZ2V0PWxpbnV4LWVsZgotCQk7OwotCWxpbnV4LWdudXgzMi14ODZfNjQpCi0JCXRhcmdldD1saW51eC14MzIKLQkJOzsKLQlsaW51eC1nbnU2NC14ODZfNjQpCi0JCXRhcmdldD1saW51eC14ODZfNjQKLQkJOzsKLQlsaW51eC1taXBzKQotICAgICAgICAgICAgICAgICMgc3BlY2lmeWluZyBUQVJHRVRfQ0NfQVJDSCBwcmV2ZW50cyBvcGVuc3NsIGZyb20gKGluY29ycmVjdGx5KSBhZGRpbmcgdGFyZ2V0IGFyY2hpdGVjdHVyZSBmbGFncwotCQl0YXJnZXQ9ImxpbnV4LW1pcHMzMiAke1RBUkdFVF9DQ19BUkNIfSIKLQkJOzsKLQlsaW51eC1taXBzZWwpCi0JCXRhcmdldD0ibGludXgtbWlwczMyICR7VEFSR0VUX0NDX0FSQ0h9IgotCQk7OwotICAgICAgICBsaW51eC1nbnVuMzItbWlwcyopCi0gICAgICAgICAgICAgICB0YXJnZXQ9bGludXgtbWlwczY0Ci0gICAgICAgICAgICAgICAgOzsKLSAgICAgICAgbGludXgtKi1taXBzNjQgfCBsaW51eC1taXBzNjQpCi0gICAgICAgICAgICAgICB0YXJnZXQ9bGludXg2NC1taXBzNjQKLSAgICAgICAgICAgICAgICA7OwotICAgICAgICBsaW51eC0qLW1pcHM2NGVsIHwgbGludXgtbWlwczY0ZWwpCi0gICAgICAgICAgICAgICB0YXJnZXQ9bGludXg2NC1taXBzNjQKLSAgICAgICAgICAgICAgICA7OwotCWxpbnV4LW1pY3JvYmxhemUqfGxpbnV4LW5pb3MyKikKLQkJdGFyZ2V0PWxpbnV4LWdlbmVyaWMzMgotCQk7OwotCWxpbnV4LXBvd2VycGMpCi0JCXRhcmdldD1saW51eC1wcGMKLQkJOzsKLQlsaW51eC1wb3dlcnBjNjQpCi0JCXRhcmdldD1saW51eC1wcGM2NAotCQk7OwotCWxpbnV4LXN1cGVyc3BhcmMpCi0JCXRhcmdldD1saW51eC1zcGFyY3Y5Ci0JCTs7Ci0JbGludXgtc3BhcmMpCi0JCXRhcmdldD1saW51eC1zcGFyY3Y5Ci0JCTs7Ci0JZGFyd2luLWkzODYpCi0JCXRhcmdldD1kYXJ3aW4taTM4Ni1jYwotCQk7OwotCWVzYWMKLSAgICAgICAgdXNlcHJlZml4PSR7cHJlZml4fQotICAgICAgICBpZiBbICJ4JHVzZXByZWZpeCIgPSAieCIgXTsgdGhlbgotICAgICAgICAgICAgICAgIHVzZXByZWZpeD0vCi0gICAgICAgIGZpCi0JcGVybCAuL0NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0gLS1wcmVmaXg9JHVzZXByZWZpeCAtLW9wZW5zc2xkaXI9JHtsaWJkaXJ9L3NzbC0xLjEgLS1saWJkaXI9YGJhc2VuYW1lICR7bGliZGlyfWAgJHRhcmdldAotfQotCi0jfCBlbmdpbmVzL2FmYWxnL2VfYWZhbGcuYzogSW4gZnVuY3Rpb24gJ2V2ZW50ZmQnOgotI3wgZW5naW5lcy9hZmFsZy9lX2FmYWxnLmM6MTEwOjIwOiBlcnJvcjogJ19fTlJfZXZlbnRmZCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCi0jfCAgICAgIHJldHVybiBzeXNjYWxsKF9fTlJfZXZlbnRmZCwgbik7Ci0jfCAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn5+fgotRVhUUkFfT0VDT05GX2FhcmNoNjQgKz0gIm5vLWFmYWxnZW5nIgotCi0jfCAuL2xpYmNyeXB0by5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgZ2V0Y29udGV4dCcKLSN8IC4vbGliY3J5cHRvLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBzZXRjb250ZXh0JwotI3wgLi9saWJjcnlwdG8uc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYG1ha2Vjb250ZXh0JwotRVhUUkFfT0VDT05GX2xpYmMtbXVzbCArPSAiLURPUEVOU1NMX05PX0FTWU5DIgotCi1kb19pbnN0YWxsICgpIHsKLSAgICAgICAgb2VfcnVubWFrZSBERVNURElSPSIke0R9IiBNQU5ESVI9IiR7bWFuZGlyfSIgTUFOU1VGRklYPXNzbCBpbnN0YWxsCi0gICAgICAgIG9lX211bHRpbGliX2hlYWRlciBvcGVuc3NsL29wZW5zc2xjb25mLmgKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLSAgICAgICAgIyBJbnN0YWxsIGEgY3VzdG9tIHZlcnNpb24gb2YgY19yZWhhc2ggdGhhdCBjYW4gaGFuZGxlIHN5c3Jvb3RzIHByb3Blcmx5LgotICAgICAgICAjIFRoaXMgdmVyc2lvbiBpcyB1c2VkIGZvciBleGFtcGxlIHdoZW4gaW5zdGFsbGluZyBjYS1jZXJ0aWZpY2F0ZXMgZHVyaW5nCi0gICAgICAgICMgaW1hZ2UgY3JlYXRpb24uCi0gICAgICAgIGluc3RhbGwgLURtIDA3NTUgJHtXT1JLRElSfS9vcGVuc3NsLWNfcmVoYXNoLnNoICR7RH0ke2JpbmRpcn0vY19yZWhhc2gKLSAgICAgICAgc2VkIC1pIC1lICdzLC9ldGMvb3BlbnNzbCwke3N5c2NvbmZkaXJ9L3NzbCxnJyAke0R9JHtiaW5kaXJ9L2NfcmVoYXNoCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0gICAgICAgIGNwIC1yICogJHtEfSR7UFRFU1RfUEFUSH0KLQotICAgICAgICAjIFB1dHRpbmcgLnNvIGZpbGVzIGluIHB0ZXN0IHBhY2thZ2Ugd2lsbCBtZXNzIHVwIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhlIG1haW4gb3BlbnNzbCBwYWNrYWdlCi0gICAgICAgICMgc28gd2UgcmVuYW1lIHRoZW0gdG8gLnNvLnB0ZXN0IGFuZCBwYXRjaCB0aGUgdGVzdCBhY2NvcmRpbmdseQotICAgICAgICBtdiAke0R9JHtQVEVTVF9QQVRIfS9saWJjcnlwdG8uc28gJHtEfSR7UFRFU1RfUEFUSH0vbGliY3J5cHRvLnNvLnB0ZXN0Ci0gICAgICAgIG12ICR7RH0ke1BURVNUX1BBVEh9L2xpYnNzbC5zbyAke0R9JHtQVEVTVF9QQVRIfS9saWJzc2wuc28ucHRlc3QKLSAgICAgICAgc2VkIC1pICdzLyR0YXJnZXR7c2hhcmVkX2V4dGVuc2lvbl9zaW1wbGV9LyIuc28ucHRlc3QiLycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC9yZWNpcGVzLzkwLXRlc3Rfc2hsaWJsb2FkLnQKLX0KLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gInBlcmwtbW9kdWxlLWZpbGUtc3BlYy1mdW5jdGlvbnMgYmFzaCBweXRob24iCi0KLUZJTEVTXyR7UE59ID0rICIgJHtsaWJkaXJ9L3NzbC0xLjEvKiIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWVuZ2luZXMiCi1GSUxFU18ke1BOfS1lbmdpbmVzID0gIiR7bGliZGlyfS9lbmdpbmVzLTEuMSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMS4waC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMGguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRiNzVlYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMGguYmIKQEAgLTAsMCArMSwxNjEgQEAKK1NVTU1BUlkgPSAiU2VjdXJlIFNvY2tldCBMYXllciIKK0RFU0NSSVBUSU9OID0gIlNlY3VyZSBTb2NrZXQgTGF5ZXIgKFNTTCkgYmluYXJ5IGFuZCByZWxhdGVkIGNyeXB0b2dyYXBoaWMgdG9vbHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvbmV3cy92dWxuZXJhYmlsaXRpZXMuaHRtbCIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorCisjICJvcGVuc3NsIHwgU1NMZWF5IiBkdWFsIGxpY2Vuc2UKK0xJQ0VOU0UgPSAib3BlbnNzbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQ1N2Q1MTEwMzBjOWQ2NmVmNWY1OTY2YmVlNWE3ZWZmIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1MjcxNDc3ZTRkOTNmNGVhMDMyYjY2NWVmMDk1ZmYyNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1ODM1NjI2Y2RlOWU5OTY1NjU4NWZjN2FhYTIzMDJhNzNhN2UxMzQwYmY4YzE0ZmQ2MzVhNjJjNjY4MDJhNTE3IgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL29wZW5zc2wtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsLWNfcmVoYXNoLnNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVGFrZS1saW5raW5nLWZsYWdzLWZyb20tTERGTEFHUy1lbnYtdmFyLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vb3BlbnNzbC0ke1BWfSIKKworaW5oZXJpdCBsaWJfcGFja2FnZSBtdWx0aWxpYl9oZWFkZXIgcHRlc3QKKworZG9fY29uZmlndXJlICgpIHsKKwlvcz0ke0hPU1RfT1N9CisJY2FzZSAkb3MgaW4KKwlsaW51eC11Y2xpYmMgfFwKKwlsaW51eC11Y2xpYmNlYWJpIHxcCisJbGludXgtZ251ZWFiaSB8XAorCWxpbnV4LXVjbGliY3NwZSB8XAorCWxpbnV4LWdudXNwZSB8XAorCWxpbnV4LW11c2wqKQorCQlvcz1saW51eAorCQk7OworCQkqKQorCQk7OworCWVzYWMKKwl0YXJnZXQ9IiRvcy0ke0hPU1RfQVJDSH0iCisJY2FzZSAkdGFyZ2V0IGluCisJbGludXgtYXJtKQorCQl0YXJnZXQ9bGludXgtYXJtdjQKKwkJOzsKKwlsaW51eC1hcm1lYikKKwkJdGFyZ2V0PWxpbnV4LWFybXY0CisJCTs7CisJbGludXgtYWFyY2g2NCopCisJCXRhcmdldD1saW51eC1hYXJjaDY0CisJCTs7CisJbGludXgtc2gzKQorCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCisJCTs7CisJbGludXgtc2g0KQorCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCisJCTs7CisJbGludXgtaTQ4NikKKwkJdGFyZ2V0PWxpbnV4LWVsZgorCQk7OworCWxpbnV4LWk1ODYgfCBsaW51eC12aWFjMykKKwkJdGFyZ2V0PWxpbnV4LWVsZgorCQk7OworCWxpbnV4LWk2ODYpCisJCXRhcmdldD1saW51eC1lbGYKKwkJOzsKKwlsaW51eC1nbnV4MzIteDg2XzY0KQorCQl0YXJnZXQ9bGludXgteDMyCisJCTs7CisJbGludXgtZ251NjQteDg2XzY0KQorCQl0YXJnZXQ9bGludXgteDg2XzY0CisJCTs7CisJbGludXgtbWlwcykKKyAgICAgICAgICAgICAgICAjIHNwZWNpZnlpbmcgVEFSR0VUX0NDX0FSQ0ggcHJldmVudHMgb3BlbnNzbCBmcm9tIChpbmNvcnJlY3RseSkgYWRkaW5nIHRhcmdldCBhcmNoaXRlY3R1cmUgZmxhZ3MKKwkJdGFyZ2V0PSJsaW51eC1taXBzMzIgJHtUQVJHRVRfQ0NfQVJDSH0iCisJCTs7CisJbGludXgtbWlwc2VsKQorCQl0YXJnZXQ9ImxpbnV4LW1pcHMzMiAke1RBUkdFVF9DQ19BUkNIfSIKKwkJOzsKKyAgICAgICAgbGludXgtZ251bjMyLW1pcHMqKQorICAgICAgICAgICAgICAgdGFyZ2V0PWxpbnV4LW1pcHM2NAorICAgICAgICAgICAgICAgIDs7CisgICAgICAgIGxpbnV4LSotbWlwczY0IHwgbGludXgtbWlwczY0KQorICAgICAgICAgICAgICAgdGFyZ2V0PWxpbnV4NjQtbWlwczY0CisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgbGludXgtKi1taXBzNjRlbCB8IGxpbnV4LW1pcHM2NGVsKQorICAgICAgICAgICAgICAgdGFyZ2V0PWxpbnV4NjQtbWlwczY0CisgICAgICAgICAgICAgICAgOzsKKwlsaW51eC1taWNyb2JsYXplKnxsaW51eC1uaW9zMiopCisJCXRhcmdldD1saW51eC1nZW5lcmljMzIKKwkJOzsKKwlsaW51eC1wb3dlcnBjKQorCQl0YXJnZXQ9bGludXgtcHBjCisJCTs7CisJbGludXgtcG93ZXJwYzY0KQorCQl0YXJnZXQ9bGludXgtcHBjNjQKKwkJOzsKKwlsaW51eC1yaXNjdjY0KQorCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzY0CisJCTs7CisJbGludXgtcmlzY3YzMikKKwkJdGFyZ2V0PWxpbnV4LWdlbmVyaWMzMgorCQk7OworCWxpbnV4LXN1cGVyc3BhcmMpCisJCXRhcmdldD1saW51eC1zcGFyY3Y5CisJCTs7CisJbGludXgtc3BhcmMpCisJCXRhcmdldD1saW51eC1zcGFyY3Y5CisJCTs7CisJZGFyd2luLWkzODYpCisJCXRhcmdldD1kYXJ3aW4taTM4Ni1jYworCQk7OworCWVzYWMKKyAgICAgICAgdXNlcHJlZml4PSR7cHJlZml4fQorICAgICAgICBpZiBbICJ4JHVzZXByZWZpeCIgPSAieCIgXTsgdGhlbgorICAgICAgICAgICAgICAgIHVzZXByZWZpeD0vCisgICAgICAgIGZpCisJbGliZGlybGVhZj0iJChlY2hvICR7bGliZGlyfSB8IHNlZCBzOiR1c2VwcmVmaXg6OikiCisJcGVybCAuL0NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0gLS1wcmVmaXg9JHVzZXByZWZpeCAtLW9wZW5zc2xkaXI9JHtsaWJkaXJ9L3NzbC0xLjEgLS1saWJkaXI9JHtsaWJkaXJsZWFmfSAkdGFyZ2V0Cit9CisKKyN8IGVuZ2luZXMvYWZhbGcvZV9hZmFsZy5jOiBJbiBmdW5jdGlvbiAnZXZlbnRmZCc6CisjfCBlbmdpbmVzL2FmYWxnL2VfYWZhbGcuYzoxMTA6MjA6IGVycm9yOiAnX19OUl9ldmVudGZkJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKKyN8ICAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9ldmVudGZkLCBuKTsKKyN8ICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+CitFWFRSQV9PRUNPTkZfYWFyY2g2NCArPSAibm8tYWZhbGdlbmciCisKKyN8IC4vbGliY3J5cHRvLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBnZXRjb250ZXh0JworI3wgLi9saWJjcnlwdG8uc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHNldGNvbnRleHQnCisjfCAuL2xpYmNyeXB0by5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgbWFrZWNvbnRleHQnCitFWFRSQV9PRUNPTkZfbGliYy1tdXNsICs9ICItRE9QRU5TU0xfTk9fQVNZTkMiCisKK2RvX2luc3RhbGwgKCkgeworICAgICAgICBvZV9ydW5tYWtlIERFU1RESVI9IiR7RH0iIE1BTkRJUj0iJHttYW5kaXJ9IiBNQU5TVUZGSVg9c3NsIGluc3RhbGwKKyAgICAgICAgb2VfbXVsdGlsaWJfaGVhZGVyIG9wZW5zc2wvb3BlbnNzbGNvbmYuaAorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgeworICAgICAgICAjIEluc3RhbGwgYSBjdXN0b20gdmVyc2lvbiBvZiBjX3JlaGFzaCB0aGF0IGNhbiBoYW5kbGUgc3lzcm9vdHMgcHJvcGVybHkuCisgICAgICAgICMgVGhpcyB2ZXJzaW9uIGlzIHVzZWQgZm9yIGV4YW1wbGUgd2hlbiBpbnN0YWxsaW5nIGNhLWNlcnRpZmljYXRlcyBkdXJpbmcKKyAgICAgICAgIyBpbWFnZSBjcmVhdGlvbi4KKyAgICAgICAgaW5zdGFsbCAtRG0gMDc1NSAke1dPUktESVJ9L29wZW5zc2wtY19yZWhhc2guc2ggJHtEfSR7YmluZGlyfS9jX3JlaGFzaAorICAgICAgICBzZWQgLWkgLWUgJ3MsL2V0Yy9vcGVuc3NsLCR7c3lzY29uZmRpcn0vc3NsLGcnICR7RH0ke2JpbmRpcn0vY19yZWhhc2gKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICAgICAgY3AgLXIgKiAke0R9JHtQVEVTVF9QQVRIfQorCisgICAgICAgICMgUHV0dGluZyAuc28gZmlsZXMgaW4gcHRlc3QgcGFja2FnZSB3aWxsIG1lc3MgdXAgdGhlIGRlcGVuZGVuY2llcyBvZiB0aGUgbWFpbiBvcGVuc3NsIHBhY2thZ2UKKyAgICAgICAgIyBzbyB3ZSByZW5hbWUgdGhlbSB0byAuc28ucHRlc3QgYW5kIHBhdGNoIHRoZSB0ZXN0IGFjY29yZGluZ2x5CisgICAgICAgIG12ICR7RH0ke1BURVNUX1BBVEh9L2xpYmNyeXB0by5zbyAke0R9JHtQVEVTVF9QQVRIfS9saWJjcnlwdG8uc28ucHRlc3QKKyAgICAgICAgbXYgJHtEfSR7UFRFU1RfUEFUSH0vbGlic3NsLnNvICR7RH0ke1BURVNUX1BBVEh9L2xpYnNzbC5zby5wdGVzdAorICAgICAgICBzZWQgLWkgJ3MvJHRhcmdldHtzaGFyZWRfZXh0ZW5zaW9uX3NpbXBsZX0vIi5zby5wdGVzdCIvJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0L3JlY2lwZXMvOTAtdGVzdF9zaGxpYmxvYWQudAorfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAicGVybC1tb2R1bGUtZmlsZS1zcGVjLWZ1bmN0aW9ucyBiYXNoIHB5dGhvbiIKKworRklMRVNfJHtQTn0gPSsgIiAke2xpYmRpcn0vc3NsLTEuMS8qIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tZW5naW5lcyIKK0ZJTEVTXyR7UE59LWVuZ2luZXMgPSAiJHtsaWJkaXJ9L2VuZ2luZXMtMS4xIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwLzAwMDEtcHBwb2UtaW5jbHVkZS1uZXRpbmV0LWluLmgtYmVmb3JlLWxpbnV4LWluLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwLzAwMDEtcHBwb2UtaW5jbHVkZS1uZXRpbmV0LWluLmgtYmVmb3JlLWxpbnV4LWluLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM2MmQxMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHAvMDAwMS1wcHBvZS1pbmNsdWRlLW5ldGluZXQtaW4uaC1iZWZvcmUtbGludXgtaW4uaC5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIDUwYTI5OTdiMjU2ZTBlMGVmN2E0NmZhZTEzM2Y1NmY2MGZjZTUzOWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMdWJvbWlyIFJpbnRlbCA8bGt1bmRyYWtAdjMuc2s+CitEYXRlOiBNb24sIDkgSmFuIDIwMTcgMTM6MzQ6MjMgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gcHBwb2U6IGluY2x1ZGUgbmV0aW5ldC9pbi5oIGJlZm9yZSBsaW51eC9pbi5oCisKK1RoaXMgZml4ZXMgYnVpbGRzIHdpdGggbmV3ZXIga2VybmVscy4gQmFzaWNhbGx5LCA8bmV0aW5ldC9pbi5oPiBuZWVkcyB0byBiZQoraW5jbHVkZWQgYmVmb3JlIDxsaW51eC9pbi5oPiBvdGhlcndpc2UgdGhlIGVhcmxpZXIsIHVuYXdhcmUgb2YgdGhlIGxhdHRlciwKK3RyaWVzIHRvIHJlZGVmaW5lIHN5bWJvbHMgYW5kIHN0cnVjdHVyZXMuIEFsc28sIDxsaW51eC9pZl9wcHBveC5oPiBkb2Vzbid0IHdvcmsKK2Fsb25lIGFueW1vcmUsIHNpbmNlIGl0IHB1bGxzIHRoZSBoZWFkZXJzIGluIHRoZSB3cm9uZyBvcmRlciwgc28gd2UgYmV0dGVyCitpbmNsdWRlIDxuZXRpbmV0L2luLmg+IGVhcmx5LgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXRodWIuY29tL3BhdWx1c21hY2svcHBwL2NvbW1pdC81MGEyOTk3YjI1NmUwZTBlZjdhNDZmYWUxMzNmNTZmNjBmY2U1MzljXQorCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBwcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2UuaCB8IDcgKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2UuaCBiL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS5oCitpbmRleCA5YWIyZWVlLi5jNGFhYTZlIDEwMDY0NAorLS0tIGEvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BwcG9lLmgKKysrKyBiL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS5oCitAQCAtNDcsNiArNDcsMTAgQEAKKyAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICNlbmRpZgorIAorKy8qIFRoaXMgaGFzIHRvIGJlIGluY2x1ZGVkIGJlZm9yZSBMaW51eCA0LjgncyBsaW51eC9pbi5oCisrICogZ2V0cyBkcmFnZ2VkIGluLiAqLworKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisrCisgLyogVWdseSBoZWFkZXIgZmlsZXMgb24gc29tZSBMaW51eCBib3hlcy4uLiAqLworICNpZiBkZWZpbmVkKEhBVkVfTElOVVhfSUZfSCkKKyAjaW5jbHVkZSA8bGludXgvaWYuaD4KK0BAIC04NCw4ICs4OCw2IEBAIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBVSU5UMzJfdDsKKyAjaW5jbHVkZSA8bGludXgvaWZfZXRoZXIuaD4KKyAjZW5kaWYKKyAKKy0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorLQorICNpZmRlZiBIQVZFX05FVElORVRfSUZfRVRIRVJfSAorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAKK0BAIC05OCw3ICsxMDAsNiBAQCB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgVUlOVDMyX3Q7CisgI2VuZGlmCisgCisgCistCisgLyogRXRoZXJuZXQgZnJhbWUgdHlwZXMgYWNjb3JkaW5nIHRvIFJGQyAyNTE2ICovCisgI2RlZmluZSBFVEhfUFBQT0VfRElTQ09WRVJZIDB4ODg2MworICNkZWZpbmUgRVRIX1BQUE9FX1NFU1NJT04gICAweDg4NjQKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcC9jaWZkZWZyb3V0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHAvY2lmZGVmcm91dGUucGF0Y2gKaW5kZXggZGI0ZGJjMi4uN2RkNjlkOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcC9jaWZkZWZyb3V0ZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwL2NpZmRlZnJvdXRlLnBhdGNoCkBAIC00LDEwICs0LDExIEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGViaWFuL3N1c2UgcGF0Y2hlc10KIAotZGlmZiAtdXJOIHBwcC0yLjQuNS1vcmlnL3BwcGQvaXBjcC5jIHBwcC0yLjQuNS9wcHBkL2lwY3AuYwotLS0tIHBwcC0yLjQuNS1vcmlnL3BwcGQvaXBjcC5jCTIwMTAtMDYtMzAgMTU6NTE6MTIuMDUwMTY2Mzk4ICswODAwCi0rKysgcHBwLTIuNC41L3BwcGQvaXBjcC5jCTIwMTAtMDYtMzAgMTY6NDA6MDAuNDc4NzE2ODU1ICswODAwCi1AQCAtMTk4LDYgKzE5OCwxNiBAQAorSW5kZXg6IHBwcC0yLjQuNy9wcHBkL2lwY3AuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBwcC0yLjQuNy5vcmlnL3BwcGQvaXBjcC5jCisrKysgcHBwLTIuNC43L3BwcGQvaXBjcC5jCitAQCAtMTk4LDYgKzE5OCwxNiBAQCBzdGF0aWMgb3B0aW9uX3QgaXBjcF9vcHRpb25fbGlzdFtdID0gewogICAgICAgICJkaXNhYmxlIGRlZmF1bHRyb3V0ZSBvcHRpb24iLCBPUFRfQUxJQVMgfCBPUFRfQTJDTFIsCiAgICAgICAgJmlwY3Bfd2FudG9wdGlvbnNbMF0uZGVmYXVsdF9yb3V0ZSB9LAogIApAQCAtMjQsNyArMjUsNyBAQAogICAgICB7ICJwcm94eWFycCIsIG9fYm9vbCwgJmlwY3Bfd2FudG9wdGlvbnNbMF0ucHJveHlfYXJwLAogICAgICAgICJBZGQgcHJveHkgQVJQIGVudHJ5IiwgT1BUX0VOQUJMRXwxLCAmaXBjcF9hbGxvd29wdGlvbnNbMF0ucHJveHlfYXJwIH0sCiAgICAgIHsgIm5vcHJveHlhcnAiLCBvX2Jvb2wsICZpcGNwX2FsbG93b3B0aW9uc1swXS5wcm94eV9hcnAsCi1AQCAtMjcxLDcgKzI4MSw3IEBACitAQCAtMjcxLDcgKzI4MSw3IEBAIHN0cnVjdCBwcm90ZW50IGlwY3BfcHJvdGVudCA9IHsKICAgICAgaXBfYWN0aXZlX3BrdAogIH07CiAgCkBAIC0zMyw3ICszNCw3IEBACiAgc3RhdGljIHZvaWQgaXBjcF9zY3JpcHQgX19QKChjaGFyICosIGludCkpOwkvKiBSdW4gYW4gdXAvZG93biBzY3JpcHQgKi8KICBzdGF0aWMgdm9pZCBpcGNwX3NjcmlwdF9kb25lIF9fUCgodm9pZCAqKSk7CiAgCi1AQCAtMTc0Miw3ICsxNzUyLDEyIEBACitAQCAtMTc2MSw3ICsxNzcxLDEyIEBAIGlwX2RlbWFuZF9jb25mKHUpCiAgICAgIGlmICghc2lmbnBtb2RlKHUsIFBQUF9JUCwgTlBNT0RFX1FVRVVFKSkKICAJcmV0dXJuIDA7CiAgICAgIGlmICh3by0+ZGVmYXVsdF9yb3V0ZSkKQEAgLTQ2LDcgKzQ3LDcgQEAKICAJICAgIGRlZmF1bHRfcm91dGVfc2V0W3VdID0gMTsKICAgICAgaWYgKHdvLT5wcm94eV9hcnApCiAgCWlmIChzaWZwcm94eWFycCh1LCB3by0+aGlzYWRkcikpCi1AQCAtMTgzMCw3ICsxODQ1LDggQEAKK0BAIC0xODQ5LDcgKzE4NjQsOCBAQCBpcGNwX3VwKGYpCiAgICAgICAqLwogICAgICBpZiAoZGVtYW5kKSB7CiAgCWlmIChnby0+b3VyYWRkciAhPSB3by0+b3VyYWRkciB8fCBoby0+aGlzYWRkciAhPSB3by0+aGlzYWRkcikgewpAQCAtNTYsNyArNTcsNyBAQAogIAkgICAgaWYgKGdvLT5vdXJhZGRyICE9IHdvLT5vdXJhZGRyKSB7CiAgCQl3YXJuKCJMb2NhbCBJUCBhZGRyZXNzIGNoYW5nZWQgdG8gJUkiLCBnby0+b3VyYWRkcik7CiAgCQlzY3JpcHRfc2V0ZW52KCJPTERJUExPQ0FMIiwgaXBfbnRvYSh3by0+b3VyYWRkciksIDApOwotQEAgLTE4NTUsNyArMTg3MSwxMiBAQAorQEAgLTE4NzQsNyArMTg5MCwxMiBAQCBpcGNwX3VwKGYpCiAgCiAgCSAgICAvKiBhc3NpZ24gYSBkZWZhdWx0IHJvdXRlIHRocm91Z2ggdGhlIGludGVyZmFjZSBpZiByZXF1aXJlZCAqLwogIAkgICAgaWYgKGlwY3Bfd2FudG9wdGlvbnNbZi0+dW5pdF0uZGVmYXVsdF9yb3V0ZSkgCkBAIC02OSw3ICs3MCw3IEBACiAgCQkgICAgZGVmYXVsdF9yb3V0ZV9zZXRbZi0+dW5pdF0gPSAxOwogIAogIAkgICAgLyogTWFrZSBhIHByb3h5IEFSUCBlbnRyeSBpZiByZXF1ZXN0ZWQuICovCi1AQCAtMTkwNSw3ICsxOTI2LDEyIEBACitAQCAtMTkyNCw3ICsxOTQ1LDEyIEBAIGlwY3BfdXAoZikKICAKICAJLyogYXNzaWduIGEgZGVmYXVsdCByb3V0ZSB0aHJvdWdoIHRoZSBpbnRlcmZhY2UgaWYgcmVxdWlyZWQgKi8KICAJaWYgKGlwY3Bfd2FudG9wdGlvbnNbZi0+dW5pdF0uZGVmYXVsdF9yb3V0ZSkgCkBAIC04Miw3ICs4Myw3IEBACiAgCQlkZWZhdWx0X3JvdXRlX3NldFtmLT51bml0XSA9IDE7CiAgCiAgCS8qIE1ha2UgYSBwcm94eSBBUlAgZW50cnkgaWYgcmVxdWVzdGVkLiAqLwotQEAgLTE5ODMsNyArMjAwOSw3IEBACitAQCAtMjAwMiw3ICsyMDI4LDcgQEAgaXBjcF9kb3duKGYpCiAgCXNpZm5wbW9kZShmLT51bml0LCBQUFBfSVAsIE5QTU9ERV9EUk9QKTsKICAJc2lmZG93bihmLT51bml0KTsKICAJaXBjcF9jbGVhcl9hZGRycyhmLT51bml0LCBpcGNwX2dvdG9wdGlvbnNbZi0+dW5pdF0ub3VyYWRkciwKQEAgLTkxLDcgKzkyLDcgQEAKICAgICAgfQogIAogICAgICAvKiBFeGVjdXRlIHRoZSBpcC1kb3duIHNjcmlwdCAqLwotQEAgLTE5OTksMTIgKzIwMjUsMjEgQEAKK0BAIC0yMDE4LDEyICsyMDQ0LDIxIEBAIGlwY3BfZG93bihmKQogICAqIHByb3h5IGFycCBlbnRyaWVzLCBldGMuCiAgICovCiAgc3RhdGljIHZvaWQKQEAgLTExNSwxMCArMTE2LDExIEBACiAgCWNpZnByb3h5YXJwKHVuaXQsIGhpc2FkZHIpOwogIAlwcm94eV9hcnBfc2V0W3VuaXRdID0gMDsKICAgICAgfQotZGlmZiAtdXJOIHBwcC0yLjQuNS1vcmlnL3BwcGQvaXBjcC5oIHBwcC0yLjQuNS9wcHBkL2lwY3AuaAotLS0tIHBwcC0yLjQuNS1vcmlnL3BwcGQvaXBjcC5oCTIwMTAtMDYtMzAgMTU6NTE6MTIuMDQzNjgyMDYzICswODAwCi0rKysgcHBwLTIuNC41L3BwcGQvaXBjcC5oCTIwMTAtMDYtMzAgMTY6NDA6NDkuNTg2MjAzMTI5ICswODAwCi1AQCAtNzAsNiArNzAsNyBAQAorSW5kZXg6IHBwcC0yLjQuNy9wcHBkL2lwY3AuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBwcC0yLjQuNy5vcmlnL3BwcGQvaXBjcC5oCisrKysgcHBwLTIuNC43L3BwcGQvaXBjcC5oCitAQCAtNzAsNiArNzAsNyBAQCB0eXBlZGVmIHN0cnVjdCBpcGNwX29wdGlvbnMgewogICAgICBib29sIG9sZF9hZGRyczsJCS8qIFVzZSBvbGQgKElQLUFkZHJlc3Nlcykgb3B0aW9uPyAqLwogICAgICBib29sIHJlcV9hZGRyOwkJLyogQXNrIHBlZXIgdG8gc2VuZCBJUCBhZGRyZXNzPyAqLwogICAgICBib29sIGRlZmF1bHRfcm91dGU7CQkvKiBBc3NpZ24gZGVmYXVsdCByb3V0ZSB0aHJvdWdoIGludGVyZmFjZT8gKi8KQEAgLTEyNiwxMCArMTI4LDExIEBACiAgICAgIGJvb2wgcHJveHlfYXJwOwkJLyogTWFrZSBwcm94eSBBUlAgZW50cnkgZm9yIHBlZXI/ICovCiAgICAgIGJvb2wgbmVnX3ZqOwkJLyogVmFuIEphY29ic29uIENvbXByZXNzaW9uPyAqLwogICAgICBib29sIG9sZF92ajsJCS8qIHVzZSBvbGQgKHNob3J0KSBmb3JtIG9mIFZKIG9wdGlvbj8gKi8KLWRpZmYgLXVyTiBwcHAtMi40LjUtb3JpZy9wcHBkL3BwcGQuOCBwcHAtMi40LjUvcHBwZC9wcHBkLjgKLS0tLSBwcHAtMi40LjUtb3JpZy9wcHBkL3BwcGQuOAkyMDEwLTA2LTMwIDE1OjUxOjEyLjA0MzY4MjA2MyArMDgwMAotKysrIHBwcC0yLjQuNS9wcHBkL3BwcGQuOAkyMDEwLTA2LTMwIDE2OjQyOjQ3LjEwMjQxMzg1OSArMDgwMAotQEAgLTEyMSw2ICsxMjEsMTMgQEAKK0luZGV4OiBwcHAtMi40LjcvcHBwZC9wcHBkLjgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwcHAtMi40Ljcub3JpZy9wcHBkL3BwcGQuOAorKysrIHBwcC0yLjQuNy9wcHBkL3BwcGQuOAorQEAgLTEyMSw2ICsxMjEsMTMgQEAgdGhlIGdhdGV3YXksIHdoZW4gSVBDUCBuZWdvdGlhdGlvbiBpcyBzdQogIFRoaXMgZW50cnkgaXMgcmVtb3ZlZCB3aGVuIHRoZSBQUFAgY29ubmVjdGlvbiBpcyBicm9rZW4uICBUaGlzIG9wdGlvbgogIGlzIHByaXZpbGVnZWQgaWYgdGhlIFxmSW5vZGVmYXVsdHJvdXRlXGZSIG9wdGlvbiBoYXMgYmVlbiBzcGVjaWZpZWQuCiAgLlRQCkBAIC0xNDMsNyArMTQ2LDcgQEAKICAuQiBkaXNjb25uZWN0IFxmSXNjcmlwdAogIEV4ZWN1dGUgdGhlIGNvbW1hbmQgc3BlY2lmaWVkIGJ5IFxmSXNjcmlwdFxmUiwgYnkgcGFzc2luZyBpdCB0byBhCiAgc2hlbGwsIGFmdGVyCi1AQCAtNzE3LDcgKzcyNCwxMiBAQAorQEAgLTczNCw3ICs3NDEsMTIgQEAgZGlzYWJsZSBib3RoIGZvcm1zIG9mIGhhcmR3YXJlIGZsb3cgY29udAogIC5UUAogIC5CIG5vZGVmYXVsdHJvdXRlCiAgRGlzYWJsZSB0aGUgXGZJZGVmYXVsdHJvdXRlXGZSIG9wdGlvbi4gIFRoZSBzeXN0ZW0gYWRtaW5pc3RyYXRvciB3aG8KQEAgLTE1NywxMCArMTYwLDExIEBACiAgY2FuIGRvIHNvIGJ5IHBsYWNpbmcgdGhpcyBvcHRpb24gaW4gdGhlIC9ldGMvcHBwL29wdGlvbnMgZmlsZS4KICAuVFAKICAuQiBub2RlZmxhdGUKLWRpZmYgLXVyTiBwcHAtMi40LjUtb3JpZy9wcHBkL3BwcGQuaCBwcHAtMi40LjUvcHBwZC9wcHBkLmgKLS0tLSBwcHAtMi40LjUtb3JpZy9wcHBkL3BwcGQuaAkyMDEwLTA2LTMwIDE1OjUxOjEyLjA1MDE2NjM5OCArMDgwMAotKysrIHBwcC0yLjQuNS9wcHBkL3BwcGQuaAkyMDEwLTA2LTMwIDE2OjQzOjM2LjUxNDE0ODMyNyArMDgwMAotQEAgLTY0Myw3ICs2NDMsMTEgQEAKK0luZGV4OiBwcHAtMi40LjcvcHBwZC9wcHBkLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwcHAtMi40Ljcub3JpZy9wcHBkL3BwcGQuaAorKysrIHBwcC0yLjQuNy9wcHBkL3BwcGQuaAorQEAgLTY2NSw3ICs2NjUsMTEgQEAgaW50ICBzaWY2YWRkciBfX1AoKGludCwgZXVpNjRfdCwgZXVpNjRfdAogIGludCAgY2lmNmFkZHIgX19QKChpbnQsIGV1aTY0X3QsIGV1aTY0X3QpKTsKICAJCQkJLyogUmVtb3ZlIGFuIElQdjYgYWRkcmVzcyBmcm9tIGkvZiAqLwogICNlbmRpZgpAQCAtMTcyLDE5ICsxNzYsMjAgQEAKICAJCQkJLyogQ3JlYXRlIGRlZmF1bHQgcm91dGUgdGhyb3VnaCBpL2YgKi8KICBpbnQgIGNpZmRlZmF1bHRyb3V0ZSBfX1AoKGludCwgdV9pbnQzMl90LCB1X2ludDMyX3QpKTsKICAJCQkJLyogRGVsZXRlIGRlZmF1bHQgcm91dGUgdGhyb3VnaCBpL2YgKi8KLWRpZmYgLXVyTiBwcHAtMi40LjUtb3JpZy9wcHBkL3N5cy1saW51eC5jIHBwcC0yLjQuNS9wcHBkL3N5cy1saW51eC5jCi0tLS0gcHBwLTIuNC41LW9yaWcvcHBwZC9zeXMtbGludXguYwkyMDEwLTA2LTMwIDE1OjUxOjEyLjA1MDE2NjM5OCArMDgwMAotKysrIHBwcC0yLjQuNS9wcHBkL3N5cy1saW51eC5jCTIwMTAtMDYtMzAgMTY6NTQ6MDAuMzYyNzE2MjMxICswODAwCi1AQCAtMjA2LDYgKzIwNiw4IEBACi0gCitJbmRleDogcHBwLTIuNC43L3BwcGQvc3lzLWxpbnV4LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwcHAtMi40Ljcub3JpZy9wcHBkL3N5cy1saW51eC5jCisrKysgcHBwLTIuNC43L3BwcGQvc3lzLWxpbnV4LmMKK0BAIC0yMDcsNiArMjA3LDggQEAgc3RhdGljIHVuc2lnbmVkIGNoYXIgaW5idWZbNTEyXTsgLyogYnVmZgogIHN0YXRpYyBpbnQJaWZfaXNfdXA7CS8qIEludGVyZmFjZSBoYXMgYmVlbiBtYXJrZWQgdXAgKi8KKyBzdGF0aWMgaW50CWlmNl9pc191cDsJLyogSW50ZXJmYWNlIGhhcyBiZWVuIG1hcmtlZCB1cCBmb3IgSVB2NiwgdG8gaGVscCBkaWZmZXJlbnRpYXRlICovCiAgc3RhdGljIGludAloYXZlX2RlZmF1bHRfcm91dGU7CS8qIEdhdGV3YXkgZm9yIGRlZmF1bHQgcm91dGUgYWRkZWQgKi8KICtzdGF0aWMgc3RydWN0IHJ0ZW50cnkgb2xkX2RlZl9ydDsgICAgICAgLyogT2xkIGRlZmF1bHQgcm91dGUgKi8KICtzdGF0aWMgaW50ICAgICAgIGRlZmF1bHRfcnRfcmVwbF9yZXN0OyAgLyogcmVwbGFjZSBhbmQgcmVzdG9yZSBvbGQgZGVmYXVsdCBydCAqLwogIHN0YXRpYyB1X2ludDMyX3QgcHJveHlfYXJwX2FkZHI7CS8qIEFkZHIgZm9yIHByb3h5IGFycCBlbnRyeSBhZGRlZCAqLwogIHN0YXRpYyBjaGFyIHByb3h5X2FycF9kZXZbMTZdOwkJLyogRGV2aWNlIGZvciBwcm94eSBhcnAgZW50cnkgKi8KICBzdGF0aWMgdV9pbnQzMl90IG91cl9vbGRfYWRkcjsJCS8qIGZvciBkZXRlY3RpbmcgYWRkcmVzcyBjaGFuZ2VzICovCi1AQCAtMTUzNyw2ICsxNTM5LDkgQEAKK0BAIC0xNTQ1LDYgKzE1NDcsOSBAQCBzdGF0aWMgaW50IHJlYWRfcm91dGVfdGFibGUoc3RydWN0IHJ0ZW50CiAgCXAgPSBOVUxMOwogICAgICB9CiAgCkBAIC0xOTQsNyArMTk5LDcgQEAKICAgICAgU0lOX0FERFIocnQtPnJ0X2RzdCkgPSBzdHJ0b3VsKGNvbHNbcm91dGVfZGVzdF9jb2xdLCBOVUxMLCAxNik7CiAgICAgIFNJTl9BRERSKHJ0LT5ydF9nYXRld2F5KSA9IHN0cnRvdWwoY29sc1tyb3V0ZV9nd19jb2xdLCBOVUxMLCAxNik7CiAgICAgIFNJTl9BRERSKHJ0LT5ydF9nZW5tYXNrKSA9IHN0cnRvdWwoY29sc1tyb3V0ZV9tYXNrX2NvbF0sIE5VTEwsIDE2KTsKLUBAIC0xNjA2LDIwICsxNjExLDUxIEBACitAQCAtMTYxNCwyMCArMTYxOSw1MSBAQCBpbnQgaGF2ZV9yb3V0ZV90byh1X2ludDMyX3QgYWRkcikKICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKgogICAqIHNpZmRlZmF1bHRyb3V0ZSAtIGFzc2lnbiBhIGRlZmF1bHQgcm91dGUgdGhyb3VnaCB0aGUgYWRkcmVzcyBnaXZlbi4KQEAgLTI2MCw3ICsyNjUsNyBAQAogICAgICB9CiAgCiAgICAgIG1lbXNldCAoJnJ0LCAwLCBzaXplb2YgKHJ0KSk7Ci1AQCAtMTYzOCw2ICsxNjc0LDEyIEBACitAQCAtMTY0Niw2ICsxNjgyLDEyIEBAIGludCBzaWZkZWZhdWx0cm91dGUgKGludCB1bml0LCB1X2ludDMyX3QKICAJICAgIGVycm9yKCJkZWZhdWx0IHJvdXRlIGlvY3RsKFNJT0NBRERSVCk6ICVtIik7CiAgCXJldHVybiAwOwogICAgICB9CkBAIC0yNzMsNyArMjc4LDcgQEAKICAKICAgICAgaGF2ZV9kZWZhdWx0X3JvdXRlID0gMTsKICAgICAgcmV0dXJuIDE7Ci1AQCAtMTY3Myw2ICsxNzE1LDE2IEBACitAQCAtMTY4MSw2ICsxNzIzLDE2IEBAIGludCBjaWZkZWZhdWx0cm91dGUgKGludCB1bml0LCB1X2ludDMyX3QKICAJICAgIHJldHVybiAwOwogIAl9CiAgICAgIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHAvbWFrZWZpbGUtcmVtb3ZlLWhhcmQtdXNyLXJlZmVyZW5jZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHAvbWFrZWZpbGUtcmVtb3ZlLWhhcmQtdXNyLXJlZmVyZW5jZS5wYXRjaAppbmRleCBkNTk3MTdlLi44YTY5Mzk2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwL21ha2VmaWxlLXJlbW92ZS1oYXJkLXVzci1yZWZlcmVuY2UucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcC9tYWtlZmlsZS1yZW1vdmUtaGFyZC11c3ItcmVmZXJlbmNlLnBhdGNoCkBAIC02LDEwICs2LDExIEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KIAotZGlmZiAtdXJOIHBwcC0yLjQuNS1vcmlnL3BwcGQvTWFrZWZpbGUubGludXggcHBwLTIuNC41L3BwcGQvTWFrZWZpbGUubGludXgKLS0tLSBwcHAtMi40LjUtb3JpZy9wcHBkL01ha2VmaWxlLmxpbnV4CTIwMTAtMDYtMzAgMTU6NTE6MTIuMDQzNjgyMDYzICswODAwCi0rKysgcHBwLTIuNC41L3BwcGQvTWFrZWZpbGUubGludXgJMjAxMC0wNi0zMCAxNzowODoyMS44MDYzNjMwNDIgKzA4MDAKLUBAIC0xMTcsMTAgKzExNywxMCBAQAorSW5kZXg6IHBwcC0yLjQuNy9wcHBkL01ha2VmaWxlLmxpbnV4Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcHBwLTIuNC43Lm9yaWcvcHBwZC9NYWtlZmlsZS5saW51eAorKysrIHBwcC0yLjQuNy9wcHBkL01ha2VmaWxlLmxpbnV4CitAQCAtMTIwLDEwICsxMjAsMTAgQEAgQ0ZMQUdTICAgKz0gLURIQVNfU0hBRE9XCiAgI0xJQlMgICAgICs9IC1sc2hhZG93ICQoTElCUykKICBlbmRpZgogIApAQCAtMjAsOSArMjEsOSBAQAogLWVuZGlmCiArI2VuZGlmCiAgCi0gaWZkZWYgTkVFRERFUwotIGlmbmRlZiBVU0VfQ1JZUFQKLUBAIC0xNjksMTAgKzE2OSwxMCBAQAorIGlmZGVmIFVTRV9MSUJVVElMCisgQ0ZMQUdTCSs9IC1ESEFWRV9MT0dXVE1QPTEKK0BAIC0xNzcsMTAgKzE3NywxMCBAQCBMSUJTCSs9IC1sZGwKICBlbmRpZgogIAogIGlmZGVmIEZJTFRFUgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcC9wcHAtZml4LWJ1aWxkaW5nLXdpdGgtbGludXgtNC44LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcC9wcHAtZml4LWJ1aWxkaW5nLXdpdGgtbGludXgtNC44LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzdiMGRlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHAvcHBwLWZpeC1idWlsZGluZy13aXRoLWxpbnV4LTQuOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUZyb20gM2RhMTlhZjUzZTJlZWUyZTc3YjQ1NmNmYmI5ZDYzM2IwNjY1NmQzOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDEzIE9jdCAyMDE2IDEzOjQxOjQzICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHBwcDogZml4IGJ1aWxkaW5nIHdpdGggbGludXgtNC44Ci0KLUZpeCBhIGJ1aWxkIGVycm9yIHdoZW4gdXNpbmcgdGhlIGxpbnV4LTQuOCBoZWFkZXJzIHRoYXQgcmVzdWx0cyBpbjoKLQotSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHBwcG9lLmg6ODc6MCwKLSAgICAgICAgICAgICAgICAgZnJvbSBwbHVnaW4uYzoyOToKLS4uL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaDoyMTE6ODogbm90ZTogb3JpZ2luYWxseSBkZWZpbmVkIGhlcmUKLSBzdHJ1Y3QgaW42X2FkZHIKLSAgICAgICAgXn5+fn5+fn4KLUluIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi91c3IvaW5jbHVkZS9saW51eC9pZl9wcHBvbDJ0cC5oOjIwOjAsCi0gICAgICAgICAgICAgICAgIGZyb20gLi4vdXNyL2luY2x1ZGUvbGludXgvaWZfcHBwb3guaDoyNiwKLSAgICAgICAgICAgICAgICAgZnJvbSBwbHVnaW4uYzo1MjoKLS4uL3Vzci9pbmNsdWRlL2xpbnV4L2luNi5oOjQ5Ojg6IGVycm9yOiByZWRlZmluaXRpb24gb2YgJ3N0cnVjdCBzb2NrYWRkcl9pbjYnCi0gc3RydWN0IHNvY2thZGRyX2luNiB7Ci0gICAgICAgIF5+fn5+fn5+fn5+fgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbMV0KLQotWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9wYXVsdXNtYWNrL3BwcC9wdWxsLzY5Ci0KLVNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBwcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2UuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3BwcGQvcGx1Z2lucy9ycC1wcHBvZS9wcHBvZS5oIGIvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BwcG9lLmgKLWluZGV4IDlhYjJlZWUuLjk2ZDI3OTQgMTAwNjQ0Ci0tLS0gYS9wcHBkL3BsdWdpbnMvcnAtcHBwb2UvcHBwb2UuaAotKysrIGIvcHBwZC9wbHVnaW5zL3JwLXBwcG9lL3BwcG9lLmgKLUBAIC04NCw3ICs4NCw3IEBAIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBVSU5UMzJfdDsKLSAjaW5jbHVkZSA8bGludXgvaWZfZXRoZXIuaD4KLSAjZW5kaWYKLSAKLS0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotKyNpbmNsdWRlIDxsaW51eC9pbi5oPgotIAotICNpZmRlZiBIQVZFX05FVElORVRfSUZfRVRIRVJfSAotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0tIAotMi44LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcF8yLjQuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHBfMi40LjcuYmIKaW5kZXggYjJjNGQ0Yy4uYTVmNzY0ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcF8yLjQuNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwXzIuNC43LmJiCkBAIC0zMCw3ICszMCw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBwcC1GaXgtY29tcGlsYXRpb24tZXJyb3JzLWluLU1ha2VmaWxlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3BwcEAuc2VydmljZSBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtQ1ZFLTIwMTUtMzMxMC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wcHAtZml4LWJ1aWxkaW5nLXdpdGgtbGludXgtNC44LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcHBwb2UtaW5jbHVkZS1uZXRpbmV0LWluLmgtYmVmb3JlLWxpbnV4LWluLmgucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1wcHAtUmVtb3ZlLXVubmVlZGVkLWluY2x1ZGUucGF0Y2ggXAogIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LTEuMjQuMS9pZnVwZG93bi1wYXNzLWludGVyZmFjZS1kZXZpY2UtbmFtZS1mb3ItaXB2Ni1yb3V0ZS1jLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC0xLjI0LjEvaWZ1cGRvd24tcGFzcy1pbnRlcmZhY2UtZGV2aWNlLW5hbWUtZm9yLWlwdjYtcm91dGUtYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTcxNTM3OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LTEuMjQuMS9pZnVwZG93bi1wYXNzLWludGVyZmFjZS1kZXZpY2UtbmFtZS1mb3ItaXB2Ni1yb3V0ZS1jLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotRnJvbSAwNmZjZjk4ZjZjYTQwZGM2YjgyM2Q3ZDYyMzFhMjQwYTE3OTRlZjJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSGFpcWluZyBCYWkgPEhhaXFpbmcuQmFpQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDI4IEZlYiAyMDE3IDEwOjQwOjM3ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGlmdXBkb3duOiBwYXNzIGludGVyZmFjZSBkZXZpY2UgbmFtZSBmb3IgaXB2NiByb3V0ZSBjb21tYW5kcwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1jb21taXQgMDI4NTI0MzE3ZDhkMDAxMWVkMzhlODZlNTA3YTA2NzM4YTViNWE5NyBmcm9tIHVwc3RyZWFtCi0KLUlQdjYgcm91dGVzIG5lZWQgdGhlIGRldmljZSBhcmd1bWVudCBmb3IgbGluay1sb2NhbCByb3V0ZXMsIG9yIHRoZXkKLWNhbm5vdCBiZSB1c2VkIGF0IGFsbC4gRS5nLiAiZ2F0ZXdheSBmZTgwOjpkZWYiIHNlZW1zIHRvIGJlIHVzZWQgaW4KLXNvbWUgcGxhY2VzLCBidXQga2VybmVsIHJlZnVzZXMgdG8gaW5zZXJ0IHRoZSByb3V0ZSB1bmxlc3MgZGV2aWNlCi1uYW1lIGlzIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGluIHRoZSByb3V0ZSBhZGRpdGlvbi4KLQotU2lnbmVkLW9mZi1ieTogVGltbyBUZXLDpHMgPHRpbW8udGVyYXNAaWtpLmZpPgotU2lnbmVkLW9mZi1ieTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogSGFpcWluZyBCYWkgPEhhaXFpbmcuQmFpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBuZXR3b3JraW5nL2lmdXBkb3duLmMgfCA3ICsrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbmV0d29ya2luZy9pZnVwZG93bi5jIGIvbmV0d29ya2luZy9pZnVwZG93bi5jCi1pbmRleCAxN2JjNGU5Li5hMDBmNjhkIDEwMDY0NAotLS0tIGEvbmV0d29ya2luZy9pZnVwZG93bi5jCi0rKysgYi9uZXR3b3JraW5nL2lmdXBkb3duLmMKLUBAIC0zOTQsOCArMzk0LDggQEAgc3RhdGljIGludCBGQVNUX0ZVTkMgc3RhdGljX3VwNihzdHJ1Y3QgaW50ZXJmYWNlX2RlZm5fdCAqaWZkLCBleGVjZm4gKmV4ZWMpCi0gIyBpZiBFTkFCTEVfRkVBVFVSRV9JRlVQRE9XTl9JUAotIAlyZXN1bHQgPSBleGVjdXRlKCJpcCBhZGRyIGFkZCAlYWRkcmVzcyUvJW5ldG1hc2slIGRldiAlaWZhY2UlW1sgbGFiZWwgJWxhYmVsJV1dIiwgaWZkLCBleGVjKTsKLSAJcmVzdWx0ICs9IGV4ZWN1dGUoImlwIGxpbmsgc2V0W1sgbXR1ICVtdHUlXV1bWyBhZGRyICVod2FkZHJlc3MlXV0gJWlmYWNlJSB1cCIsIGlmZCwgZXhlYyk7Ci0tCS8qIFdhczogIltbIGlwIC4uLi4lZ2F0ZXdheSUgXV0iLiBSZW1vdmVkIGV4dHJhIHNwYWNlcyB3L28gY2hlY2tpbmcgKi8KLS0JcmVzdWx0ICs9IGV4ZWN1dGUoIltbaXAgcm91dGUgYWRkIDo6LzAgdmlhICVnYXRld2F5JV1dW1sgbWV0cmljICVtZXRyaWMlXV0iLCBpZmQsIGV4ZWMpOwotKwkvKiBSZXBvcnRlZGx5LCBJUHY2IG5lZWRzICJkZXYgJWlmYWNlJSIsIGJ1dCBJUHY0IGRvZXMgbm90OiAqLwotKwlyZXN1bHQgKz0gZXhlY3V0ZSgiW1tpcCByb3V0ZSBhZGQgOjovMCB2aWEgJWdhdGV3YXklIGRldiAlaWZhY2UlXV1bWyBtZXRyaWMgJW1ldHJpYyVdXSIsIGlmZCwgZXhlYyk7Ci0gIyBlbHNlCi0gCXJlc3VsdCA9IGV4ZWN1dGUoImlmY29uZmlnICVpZmFjZSVbWyBtZWRpYSAlbWVkaWElXV1bWyBodyAlaHdhZGRyZXNzJV1dW1sgbXR1ICVtdHUlXV0gdXAiLCBpZmQsIGV4ZWMpOwotIAlyZXN1bHQgKz0gZXhlY3V0ZSgiaWZjb25maWcgJWlmYWNlJSBhZGQgJWFkZHJlc3MlLyVuZXRtYXNrJSIsIGlmZCwgZXhlYyk7Ci1AQCAtNDIxLDcgKzQyMSw4IEBAIHN0YXRpYyBpbnQgRkFTVF9GVU5DIHY0dHVubmVsX3VwKHN0cnVjdCBpbnRlcmZhY2VfZGVmbl90ICppZmQsIGV4ZWNmbiAqZXhlYykKLSAJCQkiJWVuZHBvaW50JVtbIGxvY2FsICVsb2NhbCVdXVtbIHR0bCAldHRsJV1dIiwgaWZkLCBleGVjKTsKLSAJcmVzdWx0ICs9IGV4ZWN1dGUoImlwIGxpbmsgc2V0ICVpZmFjZSUgdXAiLCBpZmQsIGV4ZWMpOwotIAlyZXN1bHQgKz0gZXhlY3V0ZSgiaXAgYWRkciBhZGQgJWFkZHJlc3MlLyVuZXRtYXNrJSBkZXYgJWlmYWNlJSIsIGlmZCwgZXhlYyk7Ci0tCXJlc3VsdCArPSBleGVjdXRlKCJbW2lwIHJvdXRlIGFkZCA6Oi8wIHZpYSAlZ2F0ZXdheSVdXSIsIGlmZCwgZXhlYyk7Ci0rCS8qIFJlcG9ydGVkbHksIElQdjYgbmVlZHMgImRldiAlaWZhY2UlIiwgYnV0IElQdjQgZG9lcyBub3Q6ICovCi0rCXJlc3VsdCArPSBleGVjdXRlKCJbW2lwIHJvdXRlIGFkZCA6Oi8wIHZpYSAlZ2F0ZXdheSUgZGV2ICVpZmFjZSVdXSIsIGlmZCwgZXhlYyk7Ci0gCXJldHVybiAoKHJlc3VsdCA9PSA0KSA/IDQgOiAwKTsKLSB9Ci0gCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gtaW5pdHRhYl8xLjI0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LWluaXR0YWJfMS4yNy4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LWluaXR0YWJfMS4yNC4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LWluaXR0YWJfMS4yNy4yLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3guaW5jCmluZGV4IGE2YmZkNDYuLmQxNjc1YzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3guaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3guaW5jCkBAIC0xMDYsNyArMTA2LDcgQEAKIH0KIAogZG9fcHJlcGFyZV9jb25maWcgKCkgewotCWlmIFsgIiRCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVMiID0gIjEiIF07IHRoZW4KKwlpZiBbICIke0JVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFU30iID0gIjEiIF07IHRoZW4KIAkJZXhwb3J0IEtDT05GSUdfTk9USU1FU1RBTVA9MQogCWZpCiAJc2VkIC1lICcvQ09ORklHX1NUQVRJQy9kJyBcCkBAIC0xNDYsNyArMTQ2LDcgQEAKIAogZG9fY29tcGlsZSgpIHsKIAl1bnNldCBDRkxBR1MgQ1BQRkxBR1MgQ1hYRkxBR1MgTERGTEFHUwotCWlmIFsgIiRCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVMiID0gIjEiIF07IHRoZW4KKwlpZiBbICIke0JVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFU30iID0gIjEiIF07IHRoZW4KIAkJZXhwb3J0IEtDT05GSUdfTk9USU1FU1RBTVA9MQogCWZpCiAJaWYgWyAiJHtCVVNZQk9YX1NQTElUX1NVSUR9IiA9ICIxIiAtYSB4YGdyZXAgIkNPTkZJR19GRUFUVVJFX0lORElWSURVQUw9eSIgLmNvbmZpZ2AgPSB4IF07IHRoZW4KQEAgLTE1OCw2ICsxNTgsMTIgQEAKIAkJY3AgLmNvbmZpZyAuY29uZmlnLm9yaWcKIAkJb2VfcnVubWFrZSBidXN5Ym94LmNmZy5zdWlkCiAJCW9lX3J1bm1ha2UgYnVzeWJveC5jZmcubm9zdWlkCisKKwkJIyB3b3JrYXJvdW5kIGZvciBzdWlkIGJ1ZyAxMDM0NgorCQlpZiAhIGdyZXAgLXEgIkNPTkZJR19TSF9JU19OT05FIiBidXN5Ym94LmNmZy5ub3N1aWQ7IHRoZW4KKwkJCWVjaG8gIkNPTkZJR19TSF9JU19OT05FIiA+PiBidXN5Ym94LmNmZy5zdWlkCisJCWZpCisKIAkJZm9yIGkgaW4gYGNhdCBidXN5Ym94LmNmZy5zdWlkIGJ1c3lib3guY2ZnLm5vc3VpZGA7IGRvCiAJCQllY2hvICIjICRpIGlzIG5vdCBzZXQiID4+IC5jb25maWcuZGlzYWJsZS5hcHBzCiAJCWRvbmUKQEAgLTE2NywxMiArMTczLDI0IEBACiAJCQljYXQgYnVzeWJveC5jZmcuJHMgfCB3aGlsZSByZWFkIGl0ZW07IGRvCiAJCQkJZ3JlcCAtdyAiJGl0ZW0iIC5jb25maWcub3JpZwogCQkJZG9uZSA+IC5jb25maWcuYXBwLiRzCisKKwkJCSMgd29ya2Fyb3VuZCBmb3Igc3VpZCBidWcgMTAzNDYKKwkJCWlmIFsgIiRzIiA9ICJzdWlkIiBdIDsgdGhlbgorCQkJCXNlZCAicy8uKkNPTkZJR19TSF9JU19OT05FLiokL0NPTkZJR19TSF9JU19OT05FPXkvIiAtaSAuY29uZmlnLmFwcC5zdWlkCisJCQlmaQorCiAJCQltZXJnZV9jb25maWcuc2ggLW0gLmNvbmZpZy5ub25hcHBzIC5jb25maWcuYXBwLiRzCiAJCQlvZV9ydW5tYWtlIGJ1c3lib3hfdW5zdHJpcHBlZAogCQkJbXYgYnVzeWJveF91bnN0cmlwcGVkIGJ1c3lib3guJHMKIAkJCW9lX3J1bm1ha2UgYnVzeWJveC5saW5rcwogCQkJbXYgYnVzeWJveC5saW5rcyBidXN5Ym94LmxpbmtzLiRzCiAJCWRvbmUKKworCQkjIGhhcmQgZmFpbCBpZiBzaCBpcyBiZWluZyBsaW5rZWQgdG8gdGhlIHN1aWQgYnVzeWJveCAoZGV0ZWN0cyBidWcgMTAzNDYpCisJCWlmIGdyZXAgLXEgLXggIi9iaW4vc2giIGJ1c3lib3gubGlua3Muc3VpZDsgdGhlbgorCQkJYmJmYXRhbCAiYnVzeWJveCBzdWlkIGJpbmFyeSBpbmNvcnJlY3RseSBwcm92aWRlcyAvYmluL3NoIgorCQlmaQorCiAJCSMgY29weSAuY29uZmlnLm9yaWcgYmFjayB0byAuY29uZmlnLCBiZWNhdXNlIHRoZSBpbnN0YWxsIHByb2Nlc3MgbWF5IGNoZWNrIHRoaXMgZmlsZQogCQljcCAuY29uZmlnLm9yaWcgLmNvbmZpZwogCQkjIGNsZWFudXAKQEAgLTIwNiw3ICsyMjQsNyBAQAogCQkJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vYnVzeWJveC5ub3N1aWQgJHtEfSR7YmFzZV9iaW5kaXJ9CiAJCQlpbnN0YWxsIC1tIDA2NDQgJHtTfS9idXN5Ym94LmxpbmtzLnN1aWQgJHtEfSR7c3lzY29uZmRpcn0KIAkJCWluc3RhbGwgLW0gMDY0NCAke1N9L2J1c3lib3gubGlua3Mubm9zdWlkICR7RH0ke3N5c2NvbmZkaXJ9Ci0JCQlpZiBncmVwIC1xICJDT05GSUdfRkVBVFVSRV9TSF9JU19BU0g9eSIgJHtCfS8uY29uZmlnOyB0aGVuCisJCQlpZiBncmVwIC1xICJDT05GSUdfU0hfSVNfQVNIPXkiICR7Qn0vLmNvbmZpZzsgdGhlbgogCQkJCWxuIC1zZiBidXN5Ym94Lm5vc3VpZCAke0R9JHtiYXNlX2JpbmRpcn0vc2gKIAkJCWZpCiAJCQkjIEtlZXAgYSBkZWZhdWx0IGJ1c3lib3ggZm9yIHBlb3BsZSB3aG8gd2FudCB0byBpbnZva2UgYnVzeWJveCBkaXJlY3RseS4KQEAgLTIyMCw3ICsyMzgsNyBAQAogCQkJCWluc3RhbGwgLW0gMDc1NSAke0J9L2J1c3lib3ggJHtEfSR7YmFzZV9iaW5kaXJ9CiAJCQlmaQogCQkJaW5zdGFsbCAtbSAwNjQ0ICR7U30vYnVzeWJveC5saW5rcyAke0R9JHtzeXNjb25mZGlyfQotCQkJaWYgZ3JlcCAtcSAiQ09ORklHX0ZFQVRVUkVfU0hfSVNfQVNIPXkiICR7Qn0vLmNvbmZpZzsgdGhlbgorCQkJaWYgZ3JlcCAtcSAiQ09ORklHX1NIX0lTX0FTSD15IiAke0J9Ly5jb25maWc7IHRoZW4KIAkJCQlsbiAtc2YgYnVzeWJveCAke0R9JHtiYXNlX2JpbmRpcn0vc2gKIAkJCWZpCiAJCQkjIFdlIG1ha2UgdGhpcyBzeW1saW5rIGhlcmUgdG8gZWxpbWluYXRlIHRoZSBlcnJvciB3aGVuIHVwZ3JhZGluZyB0b2dldGhlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLWZsb2NrLXVwZGF0ZS10aGUtYmVoYXZpb3VyLW9mLWMtcGFyYW1ldGVyLXRvLW1hdGNoLXUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtZmxvY2stdXBkYXRlLXRoZS1iZWhhdmlvdXItb2YtYy1wYXJhbWV0ZXItdG8tbWF0Y2gtdS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzg1MjBmMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtZmxvY2stdXBkYXRlLXRoZS1iZWhhdmlvdXItb2YtYy1wYXJhbWV0ZXItdG8tbWF0Y2gtdS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLUZyb20gZTFkNDI2ZmQ2NWMwMGE2ZDAxYTEwZDg1ZWRmOGEyOTRhZThhMmQyYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDI0IEFwciAyMDE2IDE4OjE5OjQ5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZsb2NrOiBmaXggLWM7IGltcHJvdmUgZXJyb3IgaGFuZGxpbmcgb2YgZm9yaytleGVjCi0KLWZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkICAgICBuZXcgICBkZWx0YQotZmxvY2tfbWFpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNTQgICAgIDMzNCAgICAgKzgwCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgotLS0tCi0gdXRpbC1saW51eC9mbG9jay5jIHwgMTkgKysrKysrKysrKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdXRpbC1saW51eC9mbG9jay5jIGIvdXRpbC1saW51eC9mbG9jay5jCi1pbmRleCAwNWE3NDdmLi41MzlhODM1IDEwMDY0NAotLS0tIGEvdXRpbC1saW51eC9mbG9jay5jCi0rKysgYi91dGlsLWxpbnV4L2Zsb2NrLmMKLUBAIC01Nyw3ICs1Nyw2IEBAIGludCBmbG9ja19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhciAqKmFyZ3YpCi0gCS8qIElmIGl0IGlzICJmbG9jayBGSUxFIC1jIFBST0ciLCB0aGVuIC1jIGlzbid0IGNhdWdodCBieSBnZXRvcHQzMjoKLSAJICogd2UgdXNlICIrIiBpbiBvcmRlciB0byBzdXBwb3J0ICJmbG9jayAtb3B0IEZJTEUgUFJPRyAtd2l0aC1vcHRzIiwKLSAJICogd2UgbmVlZCB0byByZW1vdmUgLWMgYnkgaGFuZC4KLS0JICogVE9ETzogaW4gdXBzdHJlYW0sIC1jICdQUk9HIEFSR1MnIG1lYW5zICJydW4gc2ggLWMgJ1BST0cgQVJHUyciCi0gCSAqLwotIAlpZiAoYXJndlswXQotIAkgJiYgYXJndlswXVswXSA9PSAnLScKLUBAIC02Niw2ICs2NSw5IEBAIGludCBmbG9ja19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhciAqKmFyZ3YpCi0gCSAgICApCi0gCSkgewotIAkJYXJndisrOwotKwkJaWYgKGFyZ3ZbMV0pCi0rCQkJYmJfZXJyb3JfbXNnX2FuZF9kaWUoIi1jIHRha2VzIG9ubHkgb25lIGFyZ3VtZW50Iik7Ci0rCQlvcHQgfD0gT1BUX2M7Ci0gCX0KLSAKLSAJaWYgKE9QVF9zID09IExPQ0tfU0ggJiYgT1BUX3ggPT0gTE9DS19FWCAmJiBPUFRfbiA9PSBMT0NLX05CICYmIE9QVF91ID09IExPQ0tfVU4pIHsKLUBAIC05MCw4ICs5MiwyMSBAQCBpbnQgZmxvY2tfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYXIgKiphcmd2KQotIAkJYmJfcGVycm9yX25vbXNnX2FuZF9kaWUoKTsKLSAJfQotIAotLQlpZiAoYXJndlswXSkKLSsJaWYgKGFyZ3ZbMF0pIHsKLSsJCWlmICghKG9wdCAmIE9QVF9jKSkgewotKwkJCWludCByYyA9IHNwYXduX2FuZF93YWl0KGFyZ3YpOwotKwkJCWlmIChyYyA8IDApCi0rCQkJCWJiX3NpbXBsZV9wZXJyb3JfbXNnKGFyZ3ZbMF0pOwotKwkJCXJldHVybiByYzsKLSsJCX0KLSsJCS8qIC1jICdQUk9HIEFSR1MnIG1lYW5zICJydW4gc2ggLWMgJ1BST0cgQVJHUyciICovCi0rCQlhcmd2IC09IDI7Ci0rCQlhcmd2WzBdID0gKGNoYXIqKWdldF9zaGVsbF9uYW1lKCk7Ci0rCQlhcmd2WzFdID0gKGNoYXIqKSItYyI7Ci0rCQkvKiBhcmd2WzJdID0gIlBST0cgQVJHUyI7ICovCi0rCQkvKiBhcmd2WzNdID0gTlVMTDsgKi8KLSAJCXJldHVybiBzcGF3bl9hbmRfd2FpdChhcmd2KTsKLSsJfQotIAotIAlyZXR1cm4gRVhJVF9TVUNDRVNTOwotIH0KLS0tIAotMi40LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLWlwLWZpeC1hbi1pbXByb3Blci1vcHRpbWl6YXRpb24tcmVxLnIucnRtX3Njb3BlLW1heS0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtaXAtZml4LWFuLWltcHJvcGVyLW9wdGltaXphdGlvbi1yZXEuci5ydG1fc2NvcGUtbWF5LS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODEyYTUwNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtaXAtZml4LWFuLWltcHJvcGVyLW9wdGltaXphdGlvbi1yZXEuci5ydG1fc2NvcGUtbWF5LS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gMzRlY2MzYjdhZWZkZDZjMzFlODY5MWJkNTQ4NTAzN2JiYWJlZGJkNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDE0IEF1ZyAyMDE2IDAxOjMwOjM0ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGlwOiBmaXggYW4gaW1wcm9wZXIgb3B0aW1pemF0aW9uOiByZXEuci5ydG1fc2NvcGUgbWF5IGJlCi0gbm9uemVybyBoZXJlCi0KLVNpZ25lZC1vZmYtYnk6IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxhZHJhc3ppa0B0eWNvaW50LmNvbT4KLQotIG5ldHdvcmtpbmcvbGliaXByb3V0ZS9pcHJvdXRlLmMgfCAzICstLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL25ldHdvcmtpbmcvbGliaXByb3V0ZS9pcHJvdXRlLmMgYi9uZXR3b3JraW5nL2xpYmlwcm91dGUvaXByb3V0ZS5jCi1pbmRleCBlNjc0ZTlhMGQuLjQ4ZGM2ZTNkOSAxMDA2NDQKLS0tLSBhL25ldHdvcmtpbmcvbGliaXByb3V0ZS9pcHJvdXRlLmMKLSsrKyBiL25ldHdvcmtpbmcvbGliaXByb3V0ZS9pcHJvdXRlLmMKLUBAIC0zNjIsMTAgKzM2Miw5IEBAIElGX0ZFQVRVUkVfSVBfUlVMRShBUkdfdGFibGUsKQotIAkJcmVxLnIucnRtX3Njb3BlID0gUlRfU0NPUEVfTk9XSEVSRTsKLSAKLSAJaWYgKGNtZCAhPSBSVE1fREVMUk9VVEUpIHsKLSsJCXJlcS5yLnJ0bV9zY29wZSA9IFJUX1NDT1BFX1VOSVZFUlNFOwotIAkJaWYgKFJUUFJPVF9CT09UICE9IDApCi0gCQkJcmVxLnIucnRtX3Byb3RvY29sID0gUlRQUk9UX0JPT1Q7Ci0tCQlpZiAoUlRfU0NPUEVfVU5JVkVSU0UgIT0gMCkKLS0JCQlyZXEuci5ydG1fc2NvcGUgPSBSVF9TQ09QRV9VTklWRVJTRTsKLSAJCWlmIChSVE5fVU5JQ0FTVCAhPSAwKQotIAkJCXJlcS5yLnJ0bV90eXBlID0gUlROX1VOSUNBU1Q7Ci0gCX0KLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1pcHJvdXRlLXN1cHBvcnQtc2NvcGUtLi1DbG9zZXMtODU2MS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1pcHJvdXRlLXN1cHBvcnQtc2NvcGUtLi1DbG9zZXMtODU2MS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZiYzc2ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtaXByb3V0ZS1zdXBwb3J0LXNjb3BlLS4tQ2xvc2VzLTg1NjEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotRnJvbSBjZTRiYzFlZDA0ODIzM2U4OWVlNGNiOTU4MzBiZjZmMDFkNTIzZDFlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLURhdGU6IFdlZCwgMzAgRGVjIDIwMTUgMTc6MzI6NTEgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gaXByb3V0ZTogc3VwcG9ydCAic2NvcGUiLiBDbG9zZXMgODU2MQotCi1mdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZCAgICAgbmV3ICAgZGVsdGEKLWlwcm91dGVfbW9kaWZ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDUxICAgIDExMjAgICAgICs2OQotCi1TaWduZWQtb2ZmLWJ5OiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1Nb2RpZmllZCBwYXRjaCB0byBidWlsZCBhZ2FpbnN0IGJ1c3lib3ggMS4yNC4xOgotLSBzL2ludmFyZ18xX3RvXzIvaW52YXJnCi1TaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8YWRyYXN6aWtAdHljb2ludC5jb20+Ci0tLS0KLSBuZXR3b3JraW5nL2xpYmlwcm91dGUvaXByb3V0ZS5jIHwgNTIgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9uZXR3b3JraW5nL2xpYmlwcm91dGUvaXByb3V0ZS5jIGIvbmV0d29ya2luZy9saWJpcHJvdXRlL2lwcm91dGUuYwotaW5kZXggZDIzMmVlNmZkLi44MjgyNzQ4OGYgMTAwNjQ0Ci0tLS0gYS9uZXR3b3JraW5nL2xpYmlwcm91dGUvaXByb3V0ZS5jCi0rKysgYi9uZXR3b3JraW5nL2xpYmlwcm91dGUvaXByb3V0ZS5jCi1AQCAtMzEzLDEyICszMTMsMTMgQEAgc3RhdGljIGludCBGQVNUX0ZVTkMgcHJpbnRfcm91dGUoY29uc3Qgc3RydWN0IHNvY2thZGRyX25sICp3aG8gVU5VU0VEX1BBUkFNLAotIHN0YXRpYyBpbnQgaXByb3V0ZV9tb2RpZnkoaW50IGNtZCwgdW5zaWduZWQgZmxhZ3MsIGNoYXIgKiphcmd2KQotIHsKLSAJc3RhdGljIGNvbnN0IGNoYXIga2V5d29yZHNbXSBBTElHTjEgPQotLQkJInNyY1wwIiJ2aWFcMCIibXR1XDAiImxvY2tcMCIicHJvdG9jb2xcMCJJRl9GRUFUVVJFX0lQX1JVTEUoInRhYmxlXDAiKQotKwkJInNyY1wwIiJ2aWFcMCIibXR1XDAiImxvY2tcMCIic2NvcGVcMCIicHJvdG9jb2xcMCJJRl9GRUFUVVJFX0lQX1JVTEUoInRhYmxlXDAiKQotIAkJImRldlwwIiJvaWZcMCIidG9cMCIibWV0cmljXDAiIm9ubGlua1wwIjsKLSAJZW51bSB7Ci0gCQlBUkdfc3JjLAotIAkJQVJHX3ZpYSwKLSAJCUFSR19tdHUsIFBBUk1fbG9jaywKLSsJCUFSR19zY29wZSwKLSAJCUFSR19wcm90b2NvbCwKLSBJRl9GRUFUVVJFX0lQX1JVTEUoQVJHX3RhYmxlLCkKLSAJCUFSR19kZXYsCi1AQCAtMzQ0LDYgKzM0NSw3IEBAIElGX0ZFQVRVUkVfSVBfUlVMRShBUkdfdGFibGUsKQotIAl1bnNpZ25lZCBteGxvY2sgPSAwOwotIAljaGFyICpkID0gTlVMTDsKLSAJc21hbGx1aW50IG9rID0gMDsKLSsJc21hbGx1aW50IHNjb3BlX29rID0gMDsKLSAJaW50IGFyZzsKLSAKLSAJbWVtc2V0KCZyZXEsIDAsIHNpemVvZihyZXEpKTsKLUBAIC0zNTIsMTUgKzM1NCwxOCBAQCBJRl9GRUFUVVJFX0lQX1JVTEUoQVJHX3RhYmxlLCkKLSAJcmVxLm4ubmxtc2dfZmxhZ3MgPSBOTE1fRl9SRVFVRVNUIHwgZmxhZ3M7Ci0gCXJlcS5uLm5sbXNnX3R5cGUgPSBjbWQ7Ci0gCXJlcS5yLnJ0bV9mYW1pbHkgPSBwcmVmZXJyZWRfZmFtaWx5OwotLQlpZiAoUlRfVEFCTEVfTUFJTikgLyogaWYgaXQgaXMgemVybywgbWVtc2V0IGFscmVhZHkgZGlkIGl0ICovCi0rCWlmIChSVF9UQUJMRV9NQUlOICE9IDApIC8qIGlmIGl0IGlzIHplcm8sIG1lbXNldCBhbHJlYWR5IGRpZCBpdCAqLwotIAkJcmVxLnIucnRtX3RhYmxlID0gUlRfVEFCTEVfTUFJTjsKLS0JaWYgKFJUX1NDT1BFX05PV0hFUkUpCi0rCWlmIChSVF9TQ09QRV9OT1dIRVJFICE9IDApCi0gCQlyZXEuci5ydG1fc2NvcGUgPSBSVF9TQ09QRV9OT1dIRVJFOwotIAotIAlpZiAoY21kICE9IFJUTV9ERUxST1VURSkgewotLQkJcmVxLnIucnRtX3Byb3RvY29sID0gUlRQUk9UX0JPT1Q7Ci0tCQlyZXEuci5ydG1fc2NvcGUgPSBSVF9TQ09QRV9VTklWRVJTRTsKLS0JCXJlcS5yLnJ0bV90eXBlID0gUlROX1VOSUNBU1Q7Ci0rCQlpZiAoUlRQUk9UX0JPT1QgIT0gMCkKLSsJCQlyZXEuci5ydG1fcHJvdG9jb2wgPSBSVFBST1RfQk9PVDsKLSsJCWlmIChSVF9TQ09QRV9VTklWRVJTRSAhPSAwKQotKwkJCXJlcS5yLnJ0bV9zY29wZSA9IFJUX1NDT1BFX1VOSVZFUlNFOwotKwkJaWYgKFJUTl9VTklDQVNUICE9IDApCi0rCQkJcmVxLnIucnRtX3R5cGUgPSBSVE5fVU5JQ0FTVDsKLSAJfQotIAotIAlteHJ0YS0+cnRhX3R5cGUgPSBSVEFfTUVUUklDUzsKLUBAIC0zOTMsNiArMzk4LDEzIEBAIElGX0ZFQVRVUkVfSVBfUlVMRShBUkdfdGFibGUsKQotIAkJCX0KLSAJCQltdHUgPSBnZXRfdW5zaWduZWQoKmFyZ3YsICJtdHUiKTsKLSAJCQlydGFfYWRkYXR0cjMyKG14cnRhLCBzaXplb2YobXhidWYpLCBSVEFYX01UVSwgbXR1KTsKLSsJCX0gZWxzZSBpZiAoYXJnID09IEFSR19zY29wZSkgewotKwkJCXVpbnQzMl90IHNjb3BlOwotKwkJCU5FWFRfQVJHKCk7Ci0rCQkJaWYgKHJ0bmxfcnRzY29wZV9hMm4oJnNjb3BlLCAqYXJndikpCi0rCQkJCWludmFyZygqYXJndiwgInNjb3BlIik7Ci0rCQkJcmVxLnIucnRtX3Njb3BlID0gc2NvcGU7Ci0rCQkJc2NvcGVfb2sgPSAxOwotIAkJfSBlbHNlIGlmIChhcmcgPT0gQVJHX3Byb3RvY29sKSB7Ci0gCQkJdWludDMyX3QgcHJvdDsKLSAJCQlORVhUX0FSRygpOwotQEAgLTQ2OSwyMCArNDgxLDIyIEBAIElGX0ZFQVRVUkVfSVBfUlVMRShBUkdfdGFibGUsKQotIAkJYWRkYXR0cl9sKCZyZXEubiwgc2l6ZW9mKHJlcSksIFJUQV9NRVRSSUNTLCBSVEFfREFUQShteHJ0YSksIFJUQV9QQVlMT0FEKG14cnRhKSk7Ci0gCX0KLSAKLS0JaWYgKHJlcS5yLnJ0bV90eXBlID09IFJUTl9MT0NBTCB8fCByZXEuci5ydG1fdHlwZSA9PSBSVE5fTkFUKQotLQkJcmVxLnIucnRtX3Njb3BlID0gUlRfU0NPUEVfSE9TVDsKLS0JZWxzZQotLQlpZiAocmVxLnIucnRtX3R5cGUgPT0gUlROX0JST0FEQ0FTVAotLQkgfHwgcmVxLnIucnRtX3R5cGUgPT0gUlROX01VTFRJQ0FTVAotLQkgfHwgcmVxLnIucnRtX3R5cGUgPT0gUlROX0FOWUNBU1QKLS0JKSB7Ci0tCQlyZXEuci5ydG1fc2NvcGUgPSBSVF9TQ09QRV9MSU5LOwotLQl9Ci0tCWVsc2UgaWYgKHJlcS5yLnJ0bV90eXBlID09IFJUTl9VTklDQVNUIHx8IHJlcS5yLnJ0bV90eXBlID09IFJUTl9VTlNQRUMpIHsKLS0JCWlmIChjbWQgPT0gUlRNX0RFTFJPVVRFKQotLQkJCXJlcS5yLnJ0bV9zY29wZSA9IFJUX1NDT1BFX05PV0hFUkU7Ci0tCQllbHNlIGlmICghKG9rICYgZ3dfb2spKQotKwlpZiAoIXNjb3BlX29rKSB7Ci0rCQlpZiAocmVxLnIucnRtX3R5cGUgPT0gUlROX0xPQ0FMIHx8IHJlcS5yLnJ0bV90eXBlID09IFJUTl9OQVQpCi0rCQkJcmVxLnIucnRtX3Njb3BlID0gUlRfU0NPUEVfSE9TVDsKLSsJCWVsc2UKLSsJCWlmIChyZXEuci5ydG1fdHlwZSA9PSBSVE5fQlJPQURDQVNUCi0rCQkgfHwgcmVxLnIucnRtX3R5cGUgPT0gUlROX01VTFRJQ0FTVAotKwkJIHx8IHJlcS5yLnJ0bV90eXBlID09IFJUTl9BTllDQVNUCi0rCQkpIHsKLSAJCQlyZXEuci5ydG1fc2NvcGUgPSBSVF9TQ09QRV9MSU5LOwotKwkJfQotKwkJZWxzZSBpZiAocmVxLnIucnRtX3R5cGUgPT0gUlROX1VOSUNBU1QgfHwgcmVxLnIucnRtX3R5cGUgPT0gUlROX1VOU1BFQykgewotKwkJCWlmIChjbWQgPT0gUlRNX0RFTFJPVVRFKQotKwkJCQlyZXEuci5ydG1fc2NvcGUgPSBSVF9TQ09QRV9OT1dIRVJFOwotKwkJCWVsc2UgaWYgKCEob2sgJiBnd19vaykpCi0rCQkJCXJlcS5yLnJ0bV9zY29wZSA9IFJUX1NDT1BFX0xJTks7Ci0rCQl9Ci0gCX0KLSAKLSAJaWYgKHJlcS5yLnJ0bV9mYW1pbHkgPT0gQUZfVU5TUEVDKSB7Ci0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtbGliaXByb3V0ZS1oYW5kbGUtdGFibGUtaWRzLWxhcmdlci10aGFuLTI1NS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1saWJpcHJvdXRlLWhhbmRsZS10YWJsZS1pZHMtbGFyZ2VyLXRoYW4tMjU1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYWM1YjQwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1saWJpcHJvdXRlLWhhbmRsZS10YWJsZS1pZHMtbGFyZ2VyLXRoYW4tMjU1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM0ICswLDAgQEAKLUZyb20gYjVhOTIzNDI3MmU2MDg0NTU3MjI0YzczYWI3NzM3ZWQ0N2YwOTg0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEx1a2FzeiBOb3dhayA8bG5vd2FrQHR5Y29pbnQuY29tPgotRGF0ZTogV2VkLCAyMyBOb3YgMjAxNiAxMjo0ODoyMSArMDAwMAotU3ViamVjdDogW1BBVENIIHYyXSBsaWJpcHJvdXRlOiBoYW5kbGUgdGFibGUgaWRzIGxhcmdlciB0aGFuIDI1NQotCi1MaW51eCBrZXJuZWwsIHN0YXJ0aW5nIGZyb20gMi42LjE5IGFsbG93cyBpcCB0YWJsZSBpZHMgdG8gaGF2ZSAzMi1iaXQgdmFsdWVzLgotSW4gb3JkZXIgdG8gcHJlc2VydmUgY29tcGF0aWJpbGl0eSwgdGhlIG9sZCA4LWJpdCBmaWVsZDogcnRtX3RhYmxlIGlzIHN0aWxsCi1pbiB1c2Ugd2hlbiB0YWJsZSBpZCBpcyBsb3dlciB0aGFuIDI1Ni4KLQotQWRkIHN1cHBvcnQgZm9yIHRoZSAzMi1iaXQgdGFibGUgaWQgKFJUQV9UQUJMRSBhdHRyaWJ1dGUpIGluOgotLSBpcCByb3V0ZSBwcmludAotLSBpcCByb3V0ZSBtb2RpZnkKLS0gaXAgcnVsZSBwcmludAotLSBpcCBydWxlIG1vZGlmeQotCi1BZGQgcHJpbnRpbmcgb2YgdGFibGUgaWRzIHRvIGlwIHJvdXRlLgotCi1DaGFuZ2VzIGFyZSBjb21wYXRpYmxlIHdpdGggdGhlIG1haW5saW5lIGlwcm91dGUyIHV0aWxpdGllcy4KLQotVGhlc2UgY2hhbmdlcyBhcmUgcmVxdWlyZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBDb25uTWFuLCB3aGljaCBieSBkZWZhdWx0Ci11c2VzIHRhYmxlIGlkcyBncmVhdGVyIHRoYW4gMjU1LgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cDovL2xpc3RzLmJ1c3lib3gubmV0L3BpcGVybWFpbC9idXN5Ym94LzIwMTYtRGVjZW1iZXIvMDg0OTg5Lmh0bWxdCi0KLVNpZ25lZC1vZmYtYnk6IEx1a2FzeiBOb3dhayA8bG5vd2FrQHR5Y29pbnQuY29tPgotLS0tCi0gbmV0d29ya2luZy9saWJpcHJvdXRlL2lwcm91dGUuYyB8IDI0ICsrKysrKysrKysrKysrKysrKysrLS0tLQotIG5ldHdvcmtpbmcvbGliaXByb3V0ZS9pcHJ1bGUuYyAgfCAxMSArKysrKysrKystLQotIDIgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL25ldHdvcmtpbmcvbGliaXByb3V0ZS9pcHJvdXRlLmMgYi9uZXR3b3JraW5nL2xpYmlwcm91dGUvaXByb3V0ZS5jCi1pbmRleCA2ZWNkNWY3Li5kNWFmNDk4IDEwMDY0NAotLS0tIGEvbmV0d29ya2luZy9saWJpcHJvdXRlL2lwcm91dGUuYwotKysrIGIvbmV0d29ya2luZy9saWJpcHJvdXRlL2lwcm91dGUuYwotQEAgLTg3LDYgKzg3LDcgQEAgc3RhdGljIGludCBGQVNUX0ZVTkMgcHJpbnRfcm91dGUoY29uc3Qgc3RydWN0IHNvY2thZGRyX25sICp3aG8gVU5VU0VEX1BBUkFNLAotIAlpbmV0X3ByZWZpeCBkc3Q7Ci0gCWluZXRfcHJlZml4IHNyYzsKLSAJaW50IGhvc3RfbGVuID0gLTE7Ci0rCXVpbnQzMl90IHRpZDsKLSAKLSAJaWYgKG4tPm5sbXNnX3R5cGUgIT0gUlRNX05FV1JPVVRFICYmIG4tPm5sbXNnX3R5cGUgIT0gUlRNX0RFTFJPVVRFKSB7Ci0gCQlmcHJpbnRmKHN0ZGVyciwgIk5vdCBhIHJvdXRlOiAlMDh4ICUwOHggJTA4eFxuIiwKLUBAIC05OSw2ICsxMDAsMTQgQEAgc3RhdGljIGludCBGQVNUX0ZVTkMgcHJpbnRfcm91dGUoY29uc3Qgc3RydWN0IHNvY2thZGRyX25sICp3aG8gVU5VU0VEX1BBUkFNLAotIAlpZiAobGVuIDwgMCkKLSAJCWJiX2Vycm9yX21zZ19hbmRfZGllKCJ3cm9uZyBubG1zZyBsZW4gJWQiLCBsZW4pOwotIAotKwltZW1zZXQodGIsIDAsIHNpemVvZih0YikpOwotKwlwYXJzZV9ydGF0dHIodGIsIFJUQV9NQVgsIFJUTV9SVEEociksIGxlbik7Ci0rCi0rCWlmICh0YltSVEFfVEFCTEVdKQotKwkJdGlkID0gKih1aW50MzJfdCAqKVJUQV9EQVRBKHRiW1JUQV9UQUJMRV0pOwotKwllbHNlCi0rCQl0aWQgPSByLT5ydG1fdGFibGU7Ci0rCi0gCWlmIChyLT5ydG1fZmFtaWx5ID09IEFGX0lORVQ2KQotIAkJaG9zdF9sZW4gPSAxMjg7Ci0gCWVsc2UgaWYgKHItPnJ0bV9mYW1pbHkgPT0gQUZfSU5FVCkKLUBAIC0xMjgsNyArMTM3LDcgQEAgc3RhdGljIGludCBGQVNUX0ZVTkMgcHJpbnRfcm91dGUoY29uc3Qgc3RydWN0IHNvY2thZGRyX25sICp3aG8gVU5VU0VEX1BBUkFNLAotIAkJCX0KLSAJCX0KLSAJfSBlbHNlIHsKLS0JCWlmIChHX2ZpbHRlci50YiA+IDAgJiYgR19maWx0ZXIudGIgIT0gci0+cnRtX3RhYmxlKSB7Ci0rCQlpZiAoR19maWx0ZXIudGIgPiAwICYmIEdfZmlsdGVyLnRiICE9IHRpZCkgewotIAkJCXJldHVybiAwOwotIAkJfQotIAl9Ci1AQCAtMTU3LDEwICsxNjYsOCBAQCBzdGF0aWMgaW50IEZBU1RfRlVOQyBwcmludF9yb3V0ZShjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfbmwgKndobyBVTlVTRURfUEFSQU0sCi0gCQlyZXR1cm4gMDsKLSAJfQotIAotLQltZW1zZXQodGIsIDAsIHNpemVvZih0YikpOwotIAltZW1zZXQoJnNyYywgMCwgc2l6ZW9mKHNyYykpOwotIAltZW1zZXQoJmRzdCwgMCwgc2l6ZW9mKGRzdCkpOwotLQlwYXJzZV9ydGF0dHIodGIsIFJUQV9NQVgsIFJUTV9SVEEociksIGxlbik7Ci0gCi0gCWlmICh0YltSVEFfU1JDXSkgewotIAkJc3JjLmJpdGxlbiA9IHItPnJ0bV9zcmNfbGVuOwotQEAgLTI4Myw2ICsyOTAsMTAgQEAgc3RhdGljIGludCBGQVNUX0ZVTkMgcHJpbnRfcm91dGUoY29uc3Qgc3RydWN0IHNvY2thZGRyX25sICp3aG8gVU5VU0VEX1BBUkFNLAotIAlpZiAodGJbUlRBX09JRl0pIHsKLSAJCXByaW50ZigiZGV2ICVzICIsIGxsX2luZGV4X3RvX25hbWUoKihpbnQqKVJUQV9EQVRBKHRiW1JUQV9PSUZdKSkpOwotIAl9Ci0rI2lmIEVOQUJMRV9GRUFUVVJFX0lQX1JVTEUKLSsJaWYgKHRpZCAmJiB0aWQgIT0gUlRfVEFCTEVfTUFJTiAmJiAhR19maWx0ZXIudGIpCi0rCQlwcmludGYoInRhYmxlICVzICIsIHJ0bmxfcnR0YWJsZV9uMmEodGlkKSk7Ci0rI2VuZGlmCi0gCi0gCS8qIFRvZG86IHBhcnNlICYgc2hvdyAicHJvdG8ga2VybmVsIiwgInNjb3BlIGxpbmsiIGhlcmUgKi8KLSAKLUBAIC00MzQsNyArNDQ1LDEyIEBAIElGX0ZFQVRVUkVfSVBfUlVMRShBUkdfdGFibGUsKQotIAkJCU5FWFRfQVJHKCk7Ci0gCQkJaWYgKHJ0bmxfcnR0YWJsZV9hMm4oJnRpZCwgKmFyZ3YpKQotIAkJCQlpbnZhcmcoKmFyZ3YsICJ0YWJsZSIpOwotLQkJCXJlcS5yLnJ0bV90YWJsZSA9IHRpZDsKLSsJCQlpZiAodGlkIDwgMjU2KQotKwkJCQlyZXEuci5ydG1fdGFibGUgPSB0aWQ7Ci0rCQkJZWxzZSB7Ci0rCQkJCXJlcS5yLnJ0bV90YWJsZSA9IFJUX1RBQkxFX1VOU1BFQzsKLSsJCQkJYWRkYXR0cjMyKCZyZXEubiwgc2l6ZW9mKHJlcSksIFJUQV9UQUJMRSwgdGlkKTsKLSsJCQl9Ci0gI2VuZGlmCi0gCQl9IGVsc2UgaWYgKGFyZyA9PSBBUkdfZGV2IHx8IGFyZyA9PSBBUkdfb2lmKSB7Ci0gCQkJTkVYVF9BUkcoKTsKLWRpZmYgLS1naXQgYS9uZXR3b3JraW5nL2xpYmlwcm91dGUvaXBydWxlLmMgYi9uZXR3b3JraW5nL2xpYmlwcm91dGUvaXBydWxlLmMKLWluZGV4IDc3NGEzZTIuLjNmYWM3YzUgMTAwNjQ0Ci0tLS0gYS9uZXR3b3JraW5nL2xpYmlwcm91dGUvaXBydWxlLmMKLSsrKyBiL25ldHdvcmtpbmcvbGliaXByb3V0ZS9pcHJ1bGUuYwotQEAgLTExOSw3ICsxMTksOSBAQCBzdGF0aWMgaW50IEZBU1RfRlVOQyBwcmludF9ydWxlKGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9ubCAqd2hvIFVOVVNFRF9QQVJBTSwKLSAJCXByaW50ZigiaWlmICVzICIsIChjaGFyKilSVEFfREFUQSh0YltSVEFfSUlGXSkpOwotIAl9Ci0gCi0tCWlmIChyLT5ydG1fdGFibGUpCi0rCWlmICh0YltSVEFfVEFCTEVdKQotKwkJcHJpbnRmKCJsb29rdXAgJXMgIiwgcnRubF9ydHRhYmxlX24yYSgqKHVpbnQzMl90KilSVEFfREFUQSh0YltSVEFfVEFCTEVdKSkpOwotKwllbHNlIGlmIChyLT5ydG1fdGFibGUpCi0gCQlwcmludGYoImxvb2t1cCAlcyAiLCBydG5sX3J0dGFibGVfbjJhKHItPnJ0bV90YWJsZSkpOwotIAotIAlpZiAodGJbUlRBX0ZMT1ddKSB7Ci1AQCAtMjU5LDcgKzI2MSwxMiBAQCBzdGF0aWMgaW50IGlwcnVsZV9tb2RpZnkoaW50IGNtZCwgY2hhciAqKmFyZ3YpCi0gCQkJTkVYVF9BUkcoKTsKLSAJCQlpZiAocnRubF9ydHRhYmxlX2EybigmdGlkLCAqYXJndikpCi0gCQkJCWludmFyZygqYXJndiwgInRhYmxlIElEIik7Ci0tCQkJcmVxLnIucnRtX3RhYmxlID0gdGlkOwotKwkJCWlmICh0aWQgPCAyNTYpCi0rCQkJCXJlcS5yLnJ0bV90YWJsZSA9IHRpZDsKLSsJCQllbHNlIHsKLSsJCQkJcmVxLnIucnRtX3RhYmxlID0gUlRfVEFCTEVfVU5TUEVDOwotKwkJCQlhZGRhdHRyMzIoJnJlcS5uLCBzaXplb2YocmVxKSwgUlRBX1RBQkxFLCB0aWQpOwotKwkJCX0KLSAJCQl0YWJsZV9vayA9IDE7Ci0gCQl9IGVsc2UgaWYgKGtleSA9PSBBUkdfZGV2IHx8Ci0gCQkJICAga2V5ID09IEFSR19paWYKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLXNlZC1maXgtc2VkLW4tZmx1c2hlcy1wYXR0ZXJuLXNwYWNlLXRlcm1pbmF0ZXMtZWFybHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtc2VkLWZpeC1zZWQtbi1mbHVzaGVzLXBhdHRlcm4tc3BhY2UtdGVybWluYXRlcy1lYXJseS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY1Mzk4NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtc2VkLWZpeC1zZWQtbi1mbHVzaGVzLXBhdHRlcm4tc3BhY2UtdGVybWluYXRlcy1lYXJseS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLUZyb20gOTAzNTQyZjczMzFjNTgwMDdhM2VmOTM4ZDQxZTFjNTVmYzMyOTY0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDMxIEF1ZyAyMDE2IDIzOjQwOjQzIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNlZDogZml4ICJzZWQgbiAoZmx1c2hlcyBwYXR0ZXJuIHNwYWNlLCB0ZXJtaW5hdGVzIGVhcmx5KSIKLSB0ZXN0Y2FzZSBmYWlsdXJlCi0KLVRoaXMgcGF0Y2ggZml4ICJzZWQgbiAoZmx1c2hlcyBwYXR0ZXJuIHNwYWNlLCB0ZXJtaW5hdGVzIGVhcmx5KSIKLXRlc3RjYXNlIGZhaWx1cmUuIFdlIGNhbiBzZWUgaXQgYXQ6Ci0KLQlodHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9NzZkNzIzNzZlMDI0NGE1Y2FmZDQ4ODBjZGM2MjNlMzdkODZhNzVlNAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBlZGl0b3JzL3NlZC5jICAgICAgIHwgMTkgKysrKysrKysrKy0tLS0tLS0tLQotIHRlc3RzdWl0ZS9zZWQudGVzdHMgfCAgNiArLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZWRpdG9ycy9zZWQuYyBiL2VkaXRvcnMvc2VkLmMKLWluZGV4IDdiYmY4MjAuLjI1OWMzOWMgMTAwNjQ0Ci0tLS0gYS9lZGl0b3JzL3NlZC5jCi0rKysgYi9lZGl0b3JzL3NlZC5jCi1AQCAtMTI3NCwxNiArMTI3NCwxNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZpbGVzKHZvaWQpCi0gCQljYXNlICduJzoKLSAJCQlpZiAoIUcuYmVfcXVpZXQpCi0gCQkJCXNlZF9wdXRzKHBhdHRlcm5fc3BhY2UsIGxhc3RfZ2V0c19jaGFyKTsKLS0JCQlpZiAobmV4dF9saW5lKSB7Ci0tCQkJCWZyZWUocGF0dGVybl9zcGFjZSk7Ci0tCQkJCXBhdHRlcm5fc3BhY2UgPSBuZXh0X2xpbmU7Ci0tCQkJCWxhc3RfZ2V0c19jaGFyID0gbmV4dF9nZXRzX2NoYXI7Ci0tCQkJCW5leHRfbGluZSA9IGdldF9uZXh0X2xpbmUoJm5leHRfZ2V0c19jaGFyLCAmbGFzdF9wdXRzX2NoYXIsIGxhc3RfZ2V0c19jaGFyKTsKLS0JCQkJc3Vic3RpdHV0ZWQgPSAwOwotLQkJCQlsaW5lbnVtKys7Ci0tCQkJCWJyZWFrOwotKwkJCWlmIChuZXh0X2xpbmUgPT0gTlVMTCkgewotKwkJCQkvKiBJZiBubyBuZXh0IGxpbmUsIGp1bXAgdG8gZW5kIG9mIHNjcmlwdCBhbmQgZXhpdC4gKi8KLSsJCQkJZ290byBkaXNjYXJkX2xpbmU7Ci0gCQkJfQotLQkJCS8qIGZhbGwgdGhyb3VnaCAqLwotKwkJCWZyZWUocGF0dGVybl9zcGFjZSk7Ci0rCQkJcGF0dGVybl9zcGFjZSA9IG5leHRfbGluZTsKLSsJCQlsYXN0X2dldHNfY2hhciA9IG5leHRfZ2V0c19jaGFyOwotKwkJCW5leHRfbGluZSA9IGdldF9uZXh0X2xpbmUoJm5leHRfZ2V0c19jaGFyLCAmbGFzdF9wdXRzX2NoYXIsIGxhc3RfZ2V0c19jaGFyKTsKLSsJCQlzdWJzdGl0dXRlZCA9IDA7Ci0rCQkJbGluZW51bSsrOwotKwkJCWJyZWFrOwotIAotIAkJLyogUXVpdC4gIEVuZCBvZiBzY3JpcHQsIGVuZCBvZiBpbnB1dC4gKi8KLSAJCWNhc2UgJ3EnOgotZGlmZiAtLWdpdCBhL3Rlc3RzdWl0ZS9zZWQudGVzdHMgYi90ZXN0c3VpdGUvc2VkLnRlc3RzCi1pbmRleCAzNDQ3OWU1Li45NmZmN2E1IDEwMDc1NQotLS0tIGEvdGVzdHN1aXRlL3NlZC50ZXN0cwotKysrIGIvdGVzdHN1aXRlL3NlZC50ZXN0cwotQEAgLTczLDEzICs3Myw5IEBAIHRlc3RpbmcgInNlZCB0ICh0ZXN0L2JyYW5jaCBjbGVhcnMgdGVzdCBiaXQpIiAic2VkIC1lICdzL2EvYi87Omxvb3A7dCBsb29wJyIgXAotIHRlc3RpbmcgInNlZCBUICghdGVzdC9icmFuY2gpIiAic2VkIC1lICdzL2EvMS87VCBub3RvbmU7cDs6IG5vdG9uZTtwJyIgXAotIAkiMVxuMVxuMVxuYlxuYlxuY1xuY1xuIiAiIiAiYVxuYlxuY1xuIgotIAotLXRlc3QgeCIkU0tJUF9LTk9XTl9CVUdTIiA9IHgiIiAmJiB7Ci0tIyBOb3JtYWwgc2VkIGVuZC1vZi1zY3JpcHQgZG9lc24ndCBwcmludCAiYyIgYmVjYXVzZSBuIGZsdXNoZWQgdGhlIHBhdHRlcm4KLS0jIHNwYWNlLiAgSWYgbiBoaXRzIEVPRiwgcGF0dGVybiBzcGFjZSBpcyBlbXB0eSB3aGVuIHNjcmlwdCBlbmRzLgotLSMgUXVlcnk6IGhvdyBkb2VzIHRoaXMgaW50ZXJhY3Qgd2l0aCBubyBuZXdsaW5lIGF0IEVPRj8KLSB0ZXN0aW5nICJzZWQgbiAoZmx1c2hlcyBwYXR0ZXJuIHNwYWNlLCB0ZXJtaW5hdGVzIGVhcmx5KSIgInNlZCAtZSAnbjtwJyIgXAotIAkiYVxuYlxuYlxuY1xuIiAiIiAiYVxuYlxuY1xuIgotLX0KLSsKLSAjIG5vbi1HTlUgc2VkOiBOIGRvZXMgX25vdF8gZmx1c2ggcGF0dGVybiBzcGFjZSwgdGhlcmVmb3JlIGMgaXMgZWF0ZW4gQCBzY3JpcHQgZW5kCi0gIyBHTlUgc2VkOiBOIGZsdXNoZXMgcGF0dGVybiBzcGFjZSwgdGhlcmVmb3JlIGMgaXMgcHJpbnRlZCB0b28gQCBzY3JpcHQgZW5kCi0gdGVzdGluZyAic2VkIE4gKGZsdXNoZXMgcGF0dGVybiBzcGFjZSAoR05VIGJlaGF2aW9yKSkiICJzZWQgLWUgJ047cCciIFwKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9CVUc5MDcxX2J1ZmZlcl9vdmVyZmxvd19hcnAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0JVRzkwNzFfYnVmZmVyX292ZXJmbG93X2FycC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODI4Njk0Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0JVRzkwNzFfYnVmZmVyX292ZXJmbG93X2FycC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLWJ1c3lib3gxLjI0LjE6IEZpeCBidXN5Ym94IC0gKGxvY2FsKSBjbWRsaW5lIHN0YWNrIGJ1ZmZlciBvdmVyd3JpdGUgCi0KLVtObyB1cHN0cmVhbSB0cmFja2luZ10gLS0gaHR0cHM6Ly9idWdzLmJ1c3lib3gubmV0L3Nob3dfYnVnLmNnaT9pZD05MDcxCi0KLWJ1c3lib3ggLSAobG9jYWwpIGNtZGxpbmUgc3RhY2sgYnVmZmVyIG92ZXJ3cml0ZSAKLQotQnVzeWJveCBwcm92aWRlcyBhbiBgYXJwYCBhcHBsZXQgd2hpY2ggaXMgbWlzc2luZyBhbiBhcnJheSBib3VuZHMgY2hlY2sgZm9yIAotY29tbWFuZC1saW5lIHBhcmFtZXRlciBgSUZOQU1FYC4gSXQgaXMgdGhlcmVmb3JlIHZ1bG5lcmFibGUgdG8gYSBjb21tYW5kLWxpbmUgCi1iYXNlZCBsb2NhbCBzdGFjayBidWZmZXIgb3ZlcndyaXRlIGVmZmVjdGl2ZWx5IGFsbG93aW5nIGxvY2FsIHVzZXJzIHRvIHdyaXRlIAotcGFzdCBhIDE2IGJ5dGVzIGZpeGVkIHN0YWNrIGJ1ZmZlci4gVGhpcyBsZWFkcyB0byB0d28gc2NlbmFyaW9zLCBvbmUgKEEpIHdoZXJlIAotYW4gSU9DVEwgZm9yIEdFVF9IV19BRERSRVNTIChgU0lPQ0dJRkhXQUREUmApIGZhaWxzIGFuZCByZXN1bHRzIGluIGEgY29ycnVwdGVkIAotYHZhX2xpc3RgIGJlaW5nIHBhc3NlZCB0byBgKnByaW50ZigpYCBhbmQgb25lIChCKSB3aGVyZSBhbiBhdHRhY2tlciBtaWdodCBwcm92aWRlIAotdmFsaWQgcGFyYW1zIGZvciB0aGUgSU9DVEwgYW5kIHRyaWNrIHRoZSBwcm9ncmFtIHRvIHByb2NlZWQgYW5kIHJlc3VsdCBpbiBhIAotYFJFVCBlaXAgb3ZlcndyaXRlYCBldmVudHVhbGx5IGdhaW5pbmcgY29kZSBleGVjdXRpb24uCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmJ1c3lib3gubmV0L2J1c3lib3gvY29tbWl0L25ldHdvcmtpbmcvYXJwLmM/aWQ9ODhlMmIxY2I2MjY3NjFiMTkyNDMwNWI3NjFhNWRmYzcyMzYxM2M0ZV0KLUJVRzogQlVHOTA3MQotU2lnbmVkLW9mZi1ieTogTWFydGluIEJhbGlrIDxtYXJ0aW4uYmFsaWtAc2llbWVucy5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAc2llbWVucy5jb20+Ci0KLS0tCi0KLWRpZmYgLS1naXQgYS9uZXR3b3JraW5nL2FycC5jIGIvbmV0d29ya2luZy9hcnAuYwotaW5kZXggMDA5OWFhNS4uODdlYjMyNyAxMDA2NDQKLS0tLSBhL25ldHdvcmtpbmcvYXJwLmMKLSsrKyBiL25ldHdvcmtpbmcvYXJwLmMKLUBAIC0xNzYsNyArMTc2LDcgQEAgc3RhdGljIGludCBhcnBfZGVsKGNoYXIgKiphcmdzKQotIAlpZiAoZmxhZ3MgPT0gMCkKLSAJCWZsYWdzID0gMzsKLSAKLS0Jc3RybmNweShyZXEuYXJwX2RldiwgZGV2aWNlLCBzaXplb2YocmVxLmFycF9kZXYpKTsKLSsJc3RybmNweV9JRk5BTVNJWihyZXEuYXJwX2RldiwgZGV2aWNlKTsKLSAKLSAJZXJyID0gLTE7Ci0gCi1AQCAtMjE3LDcgKzIxNyw3IEBAIHN0YXRpYyB2b2lkIGFycF9nZXRkZXZodyhjaGFyICppZm5hbWUsIHN0cnVjdCBzb2NrYWRkciAqc2EpCi0gCXN0cnVjdCBpZnJlcSBpZnI7Ci0gCWNvbnN0IHN0cnVjdCBod3R5cGUgKnhodzsKLSAKLS0Jc3RyY3B5KGlmci5pZnJfbmFtZSwgaWZuYW1lKTsKLSsJc3RybmNweV9JRk5BTVNJWihpZnIuaWZyX25hbWUsIGlmbmFtZSk7Ci0gCWlvY3RsX29yX3BlcnJvcl9hbmRfZGllKHNvY2tmZCwgU0lPQ0dJRkhXQUREUiwgJmlmciwKLSAJCQkJCSJjYW4ndCBnZXQgSFctQWRkcmVzcyBmb3IgJyVzJyIsIGlmbmFtZSk7Ci0gCWlmIChod19zZXQgJiYgKGlmci5pZnJfaHdhZGRyLnNhX2ZhbWlseSAhPSBody0+dHlwZSkpIHsKLUBAIC0zMzAsNyArMzMwLDcgQEAgc3RhdGljIGludCBhcnBfc2V0KGNoYXIgKiphcmdzKQotIAkvKiBGaWxsIGluIHRoZSByZW1haW5kZXIgb2YgdGhlIHJlcXVlc3QuICovCi0gCXJlcS5hcnBfZmxhZ3MgPSBmbGFnczsKLSAKLS0Jc3RybmNweShyZXEuYXJwX2RldiwgZGV2aWNlLCBzaXplb2YocmVxLmFycF9kZXYpKTsKLSsJc3RybmNweV9JRk5BTVNJWihyZXEuYXJwX2RldiwgZGV2aWNlKTsKLSAKLSAJLyogQ2FsbCB0aGUga2VybmVsLiAqLwotIAlpZiAob3B0aW9uX21hc2szMiAmIEFSUF9PUFRfdikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQ1ZFLTIwMTEtNTMyNS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQ1ZFLTIwMTEtNTMyNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wOTI2MTA3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9DVkUtMjAxMS01MzI1LnBhdGNoCkBAIC0wLDAgKzEsNDgxIEBACitidXN5Ym94LTEuMjcuMjogRml4IENWRS0yMDExLTUzMjUKKworW05vIHVwc3RyZWFtIHRyYWNraW5nXSAtLSBodHRwczovL2J1Z3MuYnVzeWJveC5uZXQvc2hvd19idWcuY2dpP2lkPTg0MTEKKworbGliYXJjaGl2ZTogZG8gbm90IGV4dHJhY3QgdW5zYWZlIHN5bWxpbmtzCisKK1ByZXZlbnQgdW5zYWZlIGxpbmtzIGV4dHJhY3RpbmcgdW5sZXNzIGVudiB2YXJpYWJsZSAkRVhUUkFDVF9VTlNBRkVfU1lNTElOS1M9MQoraXMgbm90IHNldC4gVW50YXJyaW5nIGZpbGUgd2l0aCAtQyBERVNURElSIHBhcmFtZXRlciBjb3VsZCBiZSBleHRyYWN0ZWQgd2l0aAordW53YW50ZWQgc3ltbGlua3MuIFRoaXMgZG9lc24ndCBmZWVsIHJpZ2h0LCBhbmQgSUlSQyBHTlUgdGFyIGRvZXNuJ3QgZG8gdGhhdC4KK0luY2x1ZGUgbmVjZXNzYXJ5IGNoYW5nZXMgZnJvbSBwcmV2aW91cyBjb21taXRzLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9YmM5YmJlYjJiODEwMDFlODczMWNkMmFlNTAxYzhmY2NjOGQ4N2NjN10KK0NWRTogQ1ZFLTIwMTEtNTMyNQorYnVnOiA4NDExCitTaWduZWQtb2ZmLWJ5OiBSYWRvdmFuIFNjYXNueSA8cmFkb3Zhbi5zY2FzbnlAc2llbWVucy5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KKworZGlmZiAtLWdpdCBhL2FyY2hpdmFsL2xpYmFyY2hpdmUvS2J1aWxkLnNyYyBiL2FyY2hpdmFsL2xpYmFyY2hpdmUvS2J1aWxkLnNyYworaW5kZXggOTQyZTc1NS4uZTFhOGE3NSAxMDA2NDQKKy0tLSBhL2FyY2hpdmFsL2xpYmFyY2hpdmUvS2J1aWxkLnNyYworKysrIGIvYXJjaGl2YWwvbGliYXJjaGl2ZS9LYnVpbGQuc3JjCitAQCAtMTIsNiArMTIsOCBAQCBDT01NT05fRklMRVM6PSBcCisgCWRhdGFfZXh0cmFjdF9hbGwubyBcCisgCWRhdGFfZXh0cmFjdF90b19zdGRvdXQubyBcCisgXAorKwl1bnNhZmVfc3ltbGlua190YXJnZXQubyBcCisrXAorIAlmaWx0ZXJfYWNjZXB0X2FsbC5vIFwKKyAJZmlsdGVyX2FjY2VwdF9saXN0Lm8gXAorIAlmaWx0ZXJfYWNjZXB0X3JlamVjdF9saXN0Lm8gXAorZGlmZiAtLWdpdCBhL2FyY2hpdmFsL2xpYmFyY2hpdmUvZGF0YV9leHRyYWN0X2FsbC5jIGIvYXJjaGl2YWwvbGliYXJjaGl2ZS9kYXRhX2V4dHJhY3RfYWxsLmMKK2luZGV4IDE4MzBmZmIuLmI4MjhiNjUgMTAwNjQ0CistLS0gYS9hcmNoaXZhbC9saWJhcmNoaXZlL2RhdGFfZXh0cmFjdF9hbGwuYworKysrIGIvYXJjaGl2YWwvbGliYXJjaGl2ZS9kYXRhX2V4dHJhY3RfYWxsLmMKK0BAIC0xMjgsMTAgKzEyOCw5IEBAIHZvaWQgRkFTVF9GVU5DIGRhdGFfZXh0cmFjdF9hbGwoYXJjaGl2ZV9oYW5kbGVfdCAqYXJjaGl2ZV9oYW5kbGUpCisgCQlyZXMgPSBsaW5rKGhhcmRfbGluaywgZHN0X25hbWUpOworIAkJaWYgKHJlcyAhPSAwICYmICEoYXJjaGl2ZV9oYW5kbGUtPmFoX2ZsYWdzICYgQVJDSElWRV9FWFRSQUNUX1FVSUVUKSkgeworIAkJCS8qIHNoYXJlZCBtZXNzYWdlICovCistCQkJYmJfcGVycm9yX21zZygiY2FuJ3QgY3JlYXRlICVzbGluayAiCistCQkJCQkiJXMgdG8gJXMiLCAiaGFyZCIsCistCQkJCQlkc3RfbmFtZSwKKy0JCQkJCWhhcmRfbGluayk7CisrCQkJYmJfcGVycm9yX21zZygiY2FuJ3QgY3JlYXRlICVzbGluayAnJXMnIHRvICclcyciLAorKwkJCQkJICJoYXJkIiwgZHN0X25hbWUsIGhhcmRfbGluaworKwkJCSk7CisgCQl9CisgCQkvKiBIYXJkbGlua3MgaGF2ZSBubyBzZXBhcmF0ZSBtb2RlL293bmVyc2hpcCwgc2tpcCBjaG93bi9jaG1vZCAqLworIAkJZ290byByZXQ7CitAQCAtMTc4LDE1ICsxNzcsMTcgQEAgdm9pZCBGQVNUX0ZVTkMgZGF0YV9leHRyYWN0X2FsbChhcmNoaXZlX2hhbmRsZV90ICphcmNoaXZlX2hhbmRsZSkKKyAJY2FzZSBTX0lGTE5LOgorIAkJLyogU3ltbGluayAqLworIC8vVE9ETzogd2hhdCBpZiBmaWxlX2hlYWRlci0+bGlua190YXJnZXQgPT0gTlVMTCAoc2F5LCBjb3JydXB0ZWQgdGFyYmFsbD8pCistCQlyZXMgPSBzeW1saW5rKGZpbGVfaGVhZGVyLT5saW5rX3RhcmdldCwgZHN0X25hbWUpOworLQkJaWYgKHJlcyAhPSAwCistCQkgJiYgIShhcmNoaXZlX2hhbmRsZS0+YWhfZmxhZ3MgJiBBUkNISVZFX0VYVFJBQ1RfUVVJRVQpCistCQkpIHsKKy0JCQkvKiBzaGFyZWQgbWVzc2FnZSAqLworLQkJCWJiX3BlcnJvcl9tc2coImNhbid0IGNyZWF0ZSAlc2xpbmsgIgorLQkJCQkiJXMgdG8gJXMiLCAic3ltIiwKKy0JCQkJZHN0X25hbWUsCistCQkJCWZpbGVfaGVhZGVyLT5saW5rX3RhcmdldCk7CisrCQlpZiAoIXVuc2FmZV9zeW1saW5rX3RhcmdldChmaWxlX2hlYWRlci0+bGlua190YXJnZXQpKSB7CisrCQkJcmVzID0gc3ltbGluayhmaWxlX2hlYWRlci0+bGlua190YXJnZXQsIGRzdF9uYW1lKTsKKysJCQlpZiAocmVzICE9IDAKKysJCQkJJiYgIShhcmNoaXZlX2hhbmRsZS0+YWhfZmxhZ3MgJiBBUkNISVZFX0VYVFJBQ1RfUVVJRVQpCisrCQkJKSB7CisrCQkJCQkJLyogc2hhcmVkIG1lc3NhZ2UgKi8KKysJCQkJCQliYl9wZXJyb3JfbXNnKCJjYW4ndCBjcmVhdGUgJXNsaW5rICclcycgdG8gJyVzJyIsCisrCQkJCQkJCSJzeW0iLAorKwkJCQkJCQlkc3RfbmFtZSwgZmlsZV9oZWFkZXItPmxpbmtfdGFyZ2V0CisrCQkJCQkJKTsKKysJCQl9CisgCQl9CisgCQlicmVhazsKKyAJY2FzZSBTX0lGU09DSzoKK2RpZmYgLS1naXQgYS9hcmNoaXZhbC9saWJhcmNoaXZlL3Vuc2FmZV9zeW1saW5rX3RhcmdldC5jIGIvYXJjaGl2YWwvbGliYXJjaGl2ZS91bnNhZmVfc3ltbGlua190YXJnZXQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmVlNDZlMjgKKy0tLSAvZGV2L251bGwKKysrKyBiL2FyY2hpdmFsL2xpYmFyY2hpdmUvdW5zYWZlX3N5bWxpbmtfdGFyZ2V0LmMKK0BAIC0wLDAgKzEsNDggQEAKKysvKiB2aTogc2V0IHN3PTQgdHM9NDogKi8KKysvKgorKyAqIExpY2Vuc2VkIHVuZGVyIEdQTHYyIG9yIGxhdGVyLCBzZWUgZmlsZSBMSUNFTlNFIGluIHRoaXMgc291cmNlIHRyZWUuCisrICovCisrI2luY2x1ZGUgImxpYmJiLmgiCisrI2luY2x1ZGUgImJiX2FyY2hpdmUuaCIKKysKKytpbnQgRkFTVF9GVU5DIHVuc2FmZV9zeW1saW5rX3RhcmdldChjb25zdCBjaGFyICp0YXJnZXQpCisreworKwljb25zdCBjaGFyICpkb3Q7CisrCisrCWlmICh0YXJnZXRbMF0gPT0gJy8nKSB7CisrCQljb25zdCBjaGFyICp2YXI7CisrdW5zYWZlOgorKwkJdmFyID0gZ2V0ZW52KCJFWFRSQUNUX1VOU0FGRV9TWU1MSU5LUyIpOworKwkJaWYgKHZhcikgeworKwkJCWlmIChMT05FX0NIQVIodmFyLCAnMScpKQorKwkJCQlyZXR1cm4gMDsgLyogcHJldGVuZCBpdCdzIHNhZmUgKi8KKysJCQlyZXR1cm4gMTsgLyogIlVOU0FGRSEiICovCisrCQl9CisrCQliYl9lcnJvcl9tc2coInNraXBwaW5nIHVuc2FmZSBzeW1saW5rIHRvICclcycgaW4gYXJjaGl2ZSwiCisrCQkJIiBzZXQgJXM9MSB0byBleHRyYWN0IiwKKysJCQl0YXJnZXQsCisrCQkJIkVYVFJBQ1RfVU5TQUZFX1NZTUxJTktTIgorKwkJKTsKKysJCS8qIFByZXZlbnQgZnVydGhlciBtZXNzYWdlcyAqLworKwkJc2V0ZW52KCJFWFRSQUNUX1VOU0FGRV9TWU1MSU5LUyIsICIwIiwgMCk7CisrCQlyZXR1cm4gMTsgLyogIlVOU0FGRSEiICovCisrCX0KKysKKysJZG90ID0gdGFyZ2V0OworKwlmb3IgKDs7KSB7CisrCQlkb3QgPSBzdHJjaHIoZG90LCAnLicpOworKwkJCWlmICghZG90KQorKwkJCQlyZXR1cm4gMDsgLyogc2FmZSB0YXJnZXQgKi8KKysKKysJCQkvKiBJcyBpdCBhIHBhdGggY29tcG9uZW50IHN0YXJ0aW5nIHdpdGggIi4uIj8gKi8KKysJCQlpZiAoKGRvdFsxXSA9PSAnLicpCisrCQkJCSYmIChkb3QgPT0gdGFyZ2V0IHx8IGRvdFstMV0gPT0gJy8nKQorKwkJCQkJLyogSXMgaXQgZXhhY3RseSAiLi4iPyAqLworKwkJCQkmJiAoZG90WzJdID09ICcvJyB8fCBkb3RbMl0gPT0gJ1wwJykKKysJCQkpIHsKKysJCQkJZ290byB1bnNhZmU7CisrCQkJfQorKwkJCS8qIE5COiBpdCBjYW4gZXZlbiBiZSB0cmFpbGluZyAiLiIsIHNob3VsZCBvbmx5IGFkZCAxICovCisrCQkJZG90ICs9IDE7CisrCX0KKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RpZmYgLS1naXQgYS9hcmNoaXZhbC91bnppcC5jIGIvYXJjaGl2YWwvdW56aXAuYworaW5kZXggOTAzNzI2Mi4uMjcwZTI2MSAxMDA2NDQKKy0tLSBhL2FyY2hpdmFsL3VuemlwLmMKKysrKyBiL2FyY2hpdmFsL3VuemlwLmMKK0BAIC0zMzUsNiArMzM1LDQ0IEBAIHN0YXRpYyB2b2lkIHVuemlwX2NyZWF0ZV9sZWFkaW5nX2RpcnMoY29uc3QgY2hhciAqZm4pCisgCWZyZWUobmFtZSk7CisgfQorIAorK3N0YXRpYyB2b2lkIHVuemlwX2V4dHJhY3Rfc3ltbGluayh6aXBfaGVhZGVyX3QgKnppcCwgY29uc3QgY2hhciAqZHN0X2ZuKQorK3sKKysJY2hhciAqdGFyZ2V0OworKworKwlpZiAoemlwLT5mbXQudWNtcHNpemUgPiAweGZmZikgLyogbm8gZnVubnkgYnVzaW5lc3MgcGxlYXNlICovCisrCQliYl9lcnJvcl9tc2dfYW5kX2RpZSgiYmFkIGFyY2hpdmUiKTsKKysKKysJaWYgKHppcC0+Zm10Lm1ldGhvZCA9PSAwKSB7CisrCQkvKiBNZXRob2QgMCAtIHN0b3JlZCAobm90IGNvbXByZXNzZWQpICovCisrCQl0YXJnZXQgPSB4emFsbG9jKHppcC0+Zm10LnVjbXBzaXplICsgMSk7CisrCQl4cmVhZCh6aXBfZmQsIHRhcmdldCwgemlwLT5mbXQudWNtcHNpemUpOworKwl9IGVsc2UgeworKyNpZiAxCisrCQliYl9lcnJvcl9tc2dfYW5kX2RpZSgiY29tcHJlc3NlZCBzeW1saW5rIGlzIG5vdCBzdXBwb3J0ZWQiKTsKKysjZWxzZQorKwkJdHJhbnNmb3JtZXJfc3RhdGVfdCB4c3RhdGU7CisrCQlpbml0X3RyYW5zZm9ybWVyX3N0YXRlKCZ4c3RhdGUpOworKwkJeHN0YXRlLm1lbV9vdXRwdXRfc2l6ZV9tYXggPSB6aXAtPmZtdC51Y21wc2l6ZTsKKysJCS8qIC4uLnVucGFjay4uLiAqLworKwkJaWYgKCF4c3RhdGUubWVtX291dHB1dF9idWYpCisrCQkJV1RGKCk7CisrCQl0YXJnZXQgPSB4c3RhdGUubWVtX291dHB1dF9idWY7CisrCQl0YXJnZXQgPSB4cmVhbGxvYyh0YXJnZXQsIHhzdGF0ZS5tZW1fb3V0cHV0X3NpemUgKyAxKTsKKysJCXRhcmdldFt4c3RhdGUubWVtX291dHB1dF9zaXplXSA9ICdcMCc7CisrI2VuZGlmCisrCX0KKysJaWYgKCF1bnNhZmVfc3ltbGlua190YXJnZXQodGFyZ2V0KSkgeworKy8vVE9ETzogbGliYmIgY2FuZGlkYXRlCisrCQlpZiAoc3ltbGluayh0YXJnZXQsIGRzdF9mbikpIHsKKysJCQkvKiBzaGFyZWQgbWVzc2FnZSAqLworKwkJCWJiX3BlcnJvcl9tc2dfYW5kX2RpZSgiY2FuJ3QgY3JlYXRlICVzbGluayAnJXMnIHRvICclcyciLAorKwkJCQkic3ltIiwgZHN0X2ZuLCB0YXJnZXQKKysJCQkpOworKwkJfQorKwl9CisrCWZyZWUodGFyZ2V0KTsKKyt9CisrCisgc3RhdGljIHZvaWQgdW56aXBfZXh0cmFjdCh6aXBfaGVhZGVyX3QgKnppcCwgaW50IGRzdF9mZCkKKyB7CisgCXRyYW5zZm9ybWVyX3N0YXRlX3QgeHN0YXRlOworQEAgLTgxMyw3ICs4NTEsNyBAQCBpbnQgdW56aXBfbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQl9CisgIGNoZWNrX2ZpbGU6CisgCQkvKiBFeHRyYWN0IGZpbGUgKi8KKy0JCWlmIChzdGF0KGRzdF9mbiwgJnN0YXRfYnVmKSA9PSAtMSkgeworKwkJaWYgKGxzdGF0KGRzdF9mbiwgJnN0YXRfYnVmKSA9PSAtMSkgeworIAkJCS8qIEZpbGUgZG9lcyBub3QgZXhpc3QgKi8KKyAJCQlpZiAoZXJybm8gIT0gRU5PRU5UKSB7CisgCQkJCWJiX3BlcnJvcl9tc2dfYW5kX2RpZSgiY2FuJ3Qgc3RhdCAnJXMnIiwgZHN0X2ZuKTsKK0BAIC04MzQsNiArODcyLDcgQEAgaW50IHVuemlwX21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJCWdvdG8gZG9fb3Blbl9hbmRfZXh0cmFjdDsKKyAJCXByaW50ZigicmVwbGFjZSAlcz8gW3ldZXMsIFtuXW8sIFtBXWxsLCBbTl1vbmUsIFtyXWVuYW1lOiAiLCBkc3RfZm4pOworIAkJbXlfZmdldHM4MChrZXlfYnVmKTsKKysvL1RPRE86IHJlZG8gbHN0YXQgKyBJU1JFRyBjaGVjayEgdXNlciBpbnB1dCBjb3VsZCBoYXZlIHRha2VuIGEgbG9uZyB0aW1lIQorIAorIAkJc3dpdGNoIChrZXlfYnVmWzBdKSB7CisgCQljYXNlICdBJzoKK0BAIC04NDIsNyArODgxLDggQEAgaW50IHVuemlwX21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICBkb19vcGVuX2FuZF9leHRyYWN0OgorIAkJCXVuemlwX2NyZWF0ZV9sZWFkaW5nX2RpcnMoZHN0X2ZuKTsKKyAjaWYgRU5BQkxFX0ZFQVRVUkVfVU5aSVBfQ0RGCistCQkJZHN0X2ZkID0geG9wZW4zKGRzdF9mbiwgT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQywgZmlsZV9tb2RlKTsKKysJCQlpZiAoIVNfSVNMTksoZmlsZV9tb2RlKSkKKysJCQkJZHN0X2ZkID0geG9wZW4zKGRzdF9mbiwgT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQywgZmlsZV9tb2RlKTsKKyAjZWxzZQorIAkJCWRzdF9mZCA9IHhvcGVuKGRzdF9mbiwgT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQyk7CisgI2VuZGlmCitAQCAtODUyLDEwICs4OTIsMTggQEAgaW50IHVuemlwX21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJCQkJPyAiIGV4dHJhY3Rpbmc6ICVzXG4iCisgCQkJCQk6ICovICIgIGluZmxhdGluZzogJXNcbiIsIGRzdF9mbik7CisgCQkJfQorLQkJCXVuemlwX2V4dHJhY3QoJnppcCwgZHN0X2ZkKTsKKy0JCQlpZiAoZHN0X2ZkICE9IFNURE9VVF9GSUxFTk8pIHsKKy0JCQkJLyogY2xvc2luZyBTVERPVVQgaXMgcG90ZW50aWFsbHkgYmFkIGZvciBmdXR1cmUgYnVzaW5lc3MgKi8KKy0JCQkJY2xvc2UoZHN0X2ZkKTsKKysjaWYgRU5BQkxFX0ZFQVRVUkVfVU5aSVBfQ0RGCisrCQkJaWYgKFNfSVNMTksoZmlsZV9tb2RlKSkgeworKwkJCQlpZiAoZHN0X2ZkICE9IFNURE9VVF9GSUxFTk8pIC8qIG5vIC1wICovCisrCQkJCQl1bnppcF9leHRyYWN0X3N5bWxpbmsoJnppcCwgZHN0X2ZuKTsKKysJCQl9IGVsc2UKKysjZW5kaWYKKysJCQl7CisrCQkJCXVuemlwX2V4dHJhY3QoJnppcCwgZHN0X2ZkKTsKKysJCQkJaWYgKGRzdF9mZCAhPSBTVERPVVRfRklMRU5PKSB7CisrCQkJCQkvKiBjbG9zaW5nIFNURE9VVCBpcyBwb3RlbnRpYWxseSBiYWQgZm9yIGZ1dHVyZSBidXNpbmVzcyAqLworKwkJCQkJY2xvc2UoZHN0X2ZkKTsKKysJCQkJfTsKKyAJCQl9CisgCQkJYnJlYWs7CisgCitkaWZmIC0tZ2l0IGEvY29yZXV0aWxzL2xpbmsuYyBiL2NvcmV1dGlscy9saW5rLmMKK2luZGV4IGFjM2VmODUuLmFhYjI0OWQgMTAwNjQ0CistLS0gYS9jb3JldXRpbHMvbGluay5jCisrKysgYi9jb3JldXRpbHMvbGluay5jCitAQCAtMzIsOSArMzIsOCBAQCBpbnQgbGlua19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhciAqKmFyZ3YpCisgCWFyZ3YgKz0gb3B0aW5kOworIAlpZiAobGluayhhcmd2WzBdLCBhcmd2WzFdKSAhPSAwKSB7CisgCQkvKiBzaGFyZWQgbWVzc2FnZSAqLworLQkJYmJfcGVycm9yX21zZ19hbmRfZGllKCJjYW4ndCBjcmVhdGUgJXNsaW5rICIKKy0JCQkJCSIlcyB0byAlcyIsICJoYXJkIiwKKy0JCQkJCWFyZ3ZbMV0sIGFyZ3ZbMF0KKysJCWJiX3BlcnJvcl9tc2dfYW5kX2RpZSgiY2FuJ3QgY3JlYXRlICVzbGluayAnJXMnIHRvICclcyciLAorKwkJCQkJImhhcmQiLAlhcmd2WzFdLCBhcmd2WzBdCisgCQkpOworIAl9CisgCXJldHVybiBFWElUX1NVQ0NFU1M7CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9iYl9hcmNoaXZlLmggYi9pbmNsdWRlL2JiX2FyY2hpdmUuaAoraW5kZXggMmI5YzVmMC4uMWU0ZGEzYyAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvYmJfYXJjaGl2ZS5oCisrKysgYi9pbmNsdWRlL2JiX2FyY2hpdmUuaAorQEAgLTE5Niw2ICsxOTYsNyBAQCB2b2lkIHNlZWtfYnlfanVtcChpbnQgZmQsIG9mZl90IGFtb3VudCkgRkFTVF9GVU5DOworIHZvaWQgc2Vla19ieV9yZWFkKGludCBmZCwgb2ZmX3QgYW1vdW50KSBGQVNUX0ZVTkM7CisgCisgY29uc3QgY2hhciAqc3RyaXBfdW5zYWZlX3ByZWZpeChjb25zdCBjaGFyICpzdHIpIEZBU1RfRlVOQzsKKytpbnQgdW5zYWZlX3N5bWxpbmtfdGFyZ2V0KGNvbnN0IGNoYXIgKnRhcmdldCkgRkFTVF9GVU5DOworIAorIHZvaWQgZGF0YV9hbGlnbihhcmNoaXZlX2hhbmRsZV90ICphcmNoaXZlX2hhbmRsZSwgdW5zaWduZWQgYm91bmRhcnkpIEZBU1RfRlVOQzsKKyBjb25zdCBsbGlzdF90ICpmaW5kX2xpc3RfZW50cnkoY29uc3QgbGxpc3RfdCAqbGlzdCwgY29uc3QgY2hhciAqZmlsZW5hbWUpIEZBU1RfRlVOQzsKK2RpZmYgLS1naXQgYS9saWJiYi9jb3B5X2ZpbGUuYyBiL2xpYmJiL2NvcHlfZmlsZS5jCitpbmRleCAyM2MwZjgzLi5iZTkwMDY2IDEwMDY0NAorLS0tIGEvbGliYmIvY29weV9maWxlLmMKKysrKyBiL2xpYmJiL2NvcHlfZmlsZS5jCitAQCAtMzcxLDcgKzM3MSwxMCBAQCBpbnQgRkFTVF9GVU5DIGNvcHlfZmlsZShjb25zdCBjaGFyICpzb3VyY2UsIGNvbnN0IGNoYXIgKmRlc3QsIGludCBmbGFncykKKyAJCQlpbnQgciA9IHN5bWxpbmsobHBhdGgsIGRlc3QpOworIAkJCWZyZWUobHBhdGgpOworIAkJCWlmIChyIDwgMCkgeworLQkJCQliYl9wZXJyb3JfbXNnKCJjYW4ndCBjcmVhdGUgc3ltbGluayAnJXMnIiwgZGVzdCk7CisrCQkJCS8qIHNoYXJlZCBtZXNzYWdlICovCisrCQkJCWJiX3BlcnJvcl9tc2coImNhbid0IGNyZWF0ZSAlc2xpbmsgJyVzJyB0byAnJXMnIiwKKysJCQkJCSJzeW0iLCBkZXN0LCBscGF0aAorKwkJCQkpOworIAkJCQlyZXR1cm4gLTE7CisgCQkJfQorIAkJCWlmIChmbGFncyAmIEZJTEVVVElMU19QUkVTRVJWRV9TVEFUVVMpCitkaWZmIC0tZ2l0IGEvdGVzdHN1aXRlL3Rhci50ZXN0cyBiL3Rlc3RzdWl0ZS90YXIudGVzdHMKK2luZGV4IDlmN2NlMTUuLmI3Y2Q3NGMgMTAwNzU1CistLS0gYS90ZXN0c3VpdGUvdGFyLnRlc3RzCisrKysgYi90ZXN0c3VpdGUvdGFyLnRlc3RzCitAQCAtMTAsOSArMTAsNiBAQCB1bnNldCBMQ19DT0xMQVRFCisgdW5zZXQgTENfQUxMCisgdW1hc2sgMDIyCisgCistcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCistbWtkaXIgdGFyLnRlbXBkaXIgJiYgY2QgdGFyLnRlbXBkaXIgfHwgZXhpdCAxCistCisgIyB0ZXN0aW5nICJ0ZXN0IG5hbWUiICJzY3JpcHQiICJleHBlY3RlZCByZXN1bHQiICJmaWxlIGlucHV0IiAic3RkaW4iCisgCisgdGVzdGluZyAiRW1wdHkgZmlsZSBpcyBub3QgYSB0YXJiYWxsIiAnXAorQEAgLTUzLDYgKzUwLDcgQEAgZGQgaWY9L2Rldi96ZXJvIGJzPTUxMiBjb3VudD0yMCAyPi9kZXYvbnVsbCB8IHRhciB4dmYgLSAyPiYxOyBlY2hvICQ/CisgIiIgIiIKKyBTS0lQPQorIAorK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQorICMgInRhciBjZiB0ZXN0LnRhciBpbnB1dCBpbnB1dF9kaXIvIGlucHV0X2hhcmQxIGlucHV0X2hhcmQyIGlucHV0X2hhcmQxIGlucHV0X2Rpci8gaW5wdXQiOgorICMgR05VIHRhciAxLjI2IHJlY29yZHMgYXMgaGFyZGxpbmtzOgorICMgIGlucHV0X2hhcmQyIC0+IGlucHV0X2hhcmQxCitAQCAtNjQsNyArNjIsNiBAQCBTS0lQPQorICMgV2UgYWxzbyBkb24ndCB1c2UgImhydy1yLS1yLS0iIG5vdGF0aW9uIGZvciBoYXJkbGlua3MgaW4gInRhciB0diIgbGlzdGluZy4KKyBvcHRpb25hbCBGRUFUVVJFX1RBUl9DUkVBVEUgRkVBVFVSRV9MU19TT1JURklMRVMKKyB0ZXN0aW5nICJ0YXIgaGFyZGxpbmtzIGFuZCByZXBlYXRlZCBmaWxlcyIgJ1wKKy1ybSAtcmYgaW5wdXRfKiB0ZXN0LnRhciAyPi9kZXYvbnVsbAorID5pbnB1dF9oYXJkMQorIGxuIGlucHV0X2hhcmQxIGlucHV0X2hhcmQyCisgbWtkaXIgaW5wdXRfZGlyCitAQCAtOTUsMTAgKzkyLDExIEBAIGRyd3hyLXhyLXggaW5wdXRfZGlyCisgIiBcCisgIiIgIiIKKyBTS0lQPQorK2NkIC4uIHx8IGV4aXQgMTsgcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCisgCisrbWtkaXIgdGFyLnRlbXBkaXIgJiYgY2QgdGFyLnRlbXBkaXIgfHwgZXhpdCAxCisgb3B0aW9uYWwgRkVBVFVSRV9UQVJfQ1JFQVRFIEZFQVRVUkVfTFNfU09SVEZJTEVTCisgdGVzdGluZyAidGFyIGhhcmRsaW5rcyBtb2RlIiAnXAorLXJtIC1yZiBpbnB1dF8qIHRlc3QudGFyIDI+L2Rldi9udWxsCisgPmlucHV0X2hhcmQxCisgY2htb2QgNzQxIGlucHV0X2hhcmQxCisgbG4gaW5wdXRfaGFyZDEgaW5wdXRfaGFyZDIKK0BAIC0xMjgsMTAgKzEyNiwxMSBAQCBPazogMAorICIgXAorICIiICIiCisgU0tJUD0KKytjZCAuLiB8fCBleGl0IDE7IHJtIC1yZiB0YXIudGVtcGRpciAyPi9kZXYvbnVsbAorIAorK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQorIG9wdGlvbmFsIEZFQVRVUkVfVEFSX0NSRUFURSBGRUFUVVJFX0xTX1NPUlRGSUxFUworIHRlc3RpbmcgInRhciBzeW1saW5rcyBtb2RlIiAnXAorLXJtIC1yZiBpbnB1dF8qIHRlc3QudGFyIDI+L2Rldi9udWxsCisgPmlucHV0X2ZpbGUKKyBjaG1vZCA3NDEgaW5wdXRfZmlsZQorIGxuIC1zIGlucHV0X2ZpbGUgaW5wdXRfc29mdAorQEAgLTE1OSwxMCArMTU4LDExIEBAIGxyd3hyd3hyd3ggaW5wdXRfZmlsZQorICIgXAorICIiICIiCisgU0tJUD0KKytjZCAuLiB8fCBleGl0IDE7IHJtIC1yZiB0YXIudGVtcGRpciAyPi9kZXYvbnVsbAorIAorK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQorIG9wdGlvbmFsIEZFQVRVUkVfVEFSX0NSRUFURSBGRUFUVVJFX1RBUl9MT05HX09QVElPTlMKKyB0ZXN0aW5nICJ0YXIgLS1vdmVyd3JpdGUiICJcCistcm0gLXJmIGlucHV0XyogdGVzdC50YXIgMj4vZGV2L251bGwKKyBsbiBpbnB1dCBpbnB1dF9oYXJkCisgdGFyIGNmIHRlc3QudGFyIGlucHV0X2hhcmQKKyBlY2hvIFdST05HID5pbnB1dAorQEAgLTE3NCwxMiArMTc0LDEzIEBAIE9rCisgIiBcCisgIk9rXG4iICIiCisgU0tJUD0KKytjZCAuLiB8fCBleGl0IDE7IHJtIC1yZiB0YXIudGVtcGRpciAyPi9kZXYvbnVsbAorIAorK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQorIHRlc3QgeCIkU0tJUF9LTk9XTl9CVUdTIiA9IHgiIiAmJiB7CisgIyBOZWVkcyB0byBiZSBydW4gdW5kZXIgbm9uLXJvb3QgZm9yIG1lYW5pbmdmdWwgdGVzdAorIG9wdGlvbmFsIEZFQVRVUkVfVEFSX0NSRUFURQorIHRlc3RpbmcgInRhciB3cml0aW5nIGludG8gcmVhZC1vbmx5IGRpciIgJ1wKKy1ybSAtcmYgaW5wdXRfKiB0ZXN0LnRhciAyPi9kZXYvbnVsbAorIG1rZGlyIGlucHV0X2RpcgorID5pbnB1dF9kaXIvaW5wdXRfZmlsZQorIGNobW9kIDU1MCBpbnB1dF9kaXIKK0BAIC0yMDEsNyArMjAyLDkgQEAgZHIteHIteC0tLSBpbnB1dF9kaXIKKyAiIiAiIgorIFNLSVA9CisgfQorK2NkIC4uIHx8IGV4aXQgMTsgcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCisgCisrbWtkaXIgdGFyLnRlbXBkaXIgJiYgY2QgdGFyLnRlbXBkaXIgfHwgZXhpdCAxCisgIyBIYWQgYSBidWcgd2hlcmUgb24gZXh0cmFjdCBhdXRvZGV0ZWN0IGZpcnN0ICJzd2l0Y2hlZCBvZmYiIC16CisgIyBhbmQgdGhlbiBmYWlsZWQgdG8gcmVjb2duaXplIC50Z3ogZXh0ZW5zaW9uCisgb3B0aW9uYWwgRkVBVFVSRV9UQVJfQ1JFQVRFIEZFQVRVUkVfU0VBTUxFU1NfR1ogR1VOWklQCitAQCAtMjE3LDcgKzIyMCw5IEBAIE9rCisgIiBcCisgIiIgIiIKKyBTS0lQPQorK2NkIC4uIHx8IGV4aXQgMTsgcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCisgCisrbWtkaXIgdGFyLnRlbXBkaXIgJiYgY2QgdGFyLnRlbXBkaXIgfHwgZXhpdCAxCisgIyBEbyB3ZSBkZXRlY3QgWFotY29tcHJlc3NlZCBkYXRhIChldmVuIHcvbyAudGFyLnh6IG9yIHR4eiBleHRlbnNpb24pPworICMgKHRoZSB1dWVuY29kZWQgaGVsbG9fd29ybGQudHh6IGNvbnRhaW5zIG9uZSBlbXB0eSBmaWxlIG5hbWVkICJoZWxsb193b3JsZCIpCisgb3B0aW9uYWwgVVVERUNPREUgRkVBVFVSRV9UQVJfQVVUT0RFVEVDVCBGRUFUVVJFX1NFQU1MRVNTX1haCitAQCAtMjM2LDcgKzI0MSw5IEBAIEFBQUVXVm89CisgPT09PQorICIKKyBTS0lQPQorK2NkIC4uIHx8IGV4aXQgMTsgcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCisgCisrbWtkaXIgdGFyLnRlbXBkaXIgJiYgY2QgdGFyLnRlbXBkaXIgfHwgZXhpdCAxCisgIyBPbiBleHRyYWN0LCBldmVyeXRoaW5nIHVwIHRvIGFuZCBpbmNsdWRpbmcgbGFzdCAiLi4iIGNvbXBvbmVudCBpcyBzdHJpcHBlZAorIG9wdGlvbmFsIEZFQVRVUkVfVEFSX0NSRUFURQorIHRlc3RpbmcgInRhciBzdHJpcHMgLy4uLyBvbiBleHRyYWN0IiAiXAorQEAgLTI1NSw3ICsyNjIsOSBAQCBPaworICIgXAorICIiICIiCisgU0tJUD0KKytjZCAuLiB8fCBleGl0IDE7IHJtIC1yZiB0YXIudGVtcGRpciAyPi9kZXYvbnVsbAorIAorK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQorICMgYXR0YWNrLnRhci5iejIgaGFzIHN5bWxpbmsgcG9pbnRpbmcgdG8gYSBzeXN0ZW0gZmlsZQorICMgZm9sbG93ZWQgYnkgYSByZWd1bGFyIGZpbGUgd2l0aCB0aGUgc2FtZSBuYW1lCisgIyBjb250YWluaW5nICJyb290OjowOjA6Oi9yb290Oi9iaW4vc2giOgorQEAgLTI3MCw2ICsyNzksNyBAQCBvcHRpb25hbCBVVURFQ09ERSBGRUFUVVJFX1RBUl9BVVRPREVURUNUIEZFQVRVUkVfU0VBTUxFU1NfQloyCisgdGVzdGluZyAidGFyIGRvZXMgbm90IGV4dHJhY3QgaW50byBzeW1saW5rcyIgIlwKKyA+Pi90bXAvcGFzc3dkICYmIHV1ZGVjb2RlIC1vIGlucHV0ICYmIHRhciB4ZiBpbnB1dCAyPiYxICYmIHJtIHBhc3N3ZDsgY2F0IC90bXAvcGFzc3dkOyBlY2hvIFwkPworICIgIlwKKyt0YXI6IHNraXBwaW5nIHVuc2FmZSBzeW1saW5rIHRvICcvdG1wL3Bhc3N3ZCcgaW4gYXJjaGl2ZSwgc2V0IEVYVFJBQ1RfVU5TQUZFX1NZTUxJTktTPTEgdG8gZXh0cmFjdAorIDAKKyAiIFwKKyAiIiAiXAorQEAgLTI4MSwxMiArMjkxLDE1IEBAIGw0L1Y4TERvZTkweWlXSmhPSnZJeXBnRWZ4ZHlSVGhRa0JWbi9iST0KKyA9PT09CisgIgorIFNLSVA9CisrY2QgLi4gfHwgZXhpdCAxOyBybSAtcmYgdGFyLnRlbXBkaXIgMj4vZGV2L251bGwKKysKKytta2RpciB0YXIudGVtcGRpciAmJiBjZCB0YXIudGVtcGRpciB8fCBleGl0IDEKKyAjIEFuZCBzYW1lIHdpdGggLWsKKyBvcHRpb25hbCBVVURFQ09ERSBGRUFUVVJFX1RBUl9BVVRPREVURUNUIEZFQVRVUkVfU0VBTUxFU1NfQloyCisgdGVzdGluZyAidGFyIC1rIGRvZXMgbm90IGV4dHJhY3QgaW50byBzeW1saW5rcyIgIlwKKyA+Pi90bXAvcGFzc3dkICYmIHV1ZGVjb2RlIC1vIGlucHV0ICYmIHRhciB4ZiBpbnB1dCAtayAyPiYxICYmIHJtIHBhc3N3ZDsgY2F0IC90bXAvcGFzc3dkOyBlY2hvIFwkPworICIgIlwKKy10YXI6IGNhbid0IG9wZW4gJ3Bhc3N3ZCc6IEZpbGUgZXhpc3RzCisrdGFyOiBza2lwcGluZyB1bnNhZmUgc3ltbGluayB0byAnL3RtcC9wYXNzd2QnIGluIGFyY2hpdmUsIHNldCBFWFRSQUNUX1VOU0FGRV9TWU1MSU5LUz0xIHRvIGV4dHJhY3QKKyAwCisgIiBcCisgIiIgIlwKK0BAIC0yOTgsNyArMzExLDkgQEAgbDQvVjhMRG9lOTB5aVdKaE9Kdkl5cGdFZnhkeVJUaFFrQlZuL2JJPQorID09PT0KKyAiCisgU0tJUD0KKytjZCAuLiB8fCBleGl0IDE7IHJtIC1yZiB0YXIudGVtcGRpciAyPi9kZXYvbnVsbAorIAorK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQorIG9wdGlvbmFsIFVOSUNPREVfU1VQUE9SVCBGRUFUVVJFX1RBUl9HTlVfRVhURU5TSU9OUyBGRUFUVVJFX1NFQU1MRVNTX0JaMiBGRUFUVVJFX1RBUl9BVVRPREVURUNUCisgdGVzdGluZyAiUGF4LWVuY29kZWQgVVRGOCBuYW1lcyBhbmQgc3ltbGlua3MiICdcCisgdGFyIHh2ZiAuLi90YXIudXRmOC50YXIuYnoyIDI+JjE7IGVjaG8gJD8KK0BAIC0zMDksMTcgKzMyNCw0NSBAQCBybSAtcmYgZXRjIHVzcgorICcgIlwKKyBldGMvc3NsL2NlcnRzLzNiMjcxNmU1LjAKKyBldGMvc3NsL2NlcnRzL0VCR19FbGVrdHJvbmlrX1NlcnRpZmlrYV9IaXptZXRfU2HEn2xhecSxY8Sxc8SxLnBlbQorK3Rhcjogc2tpcHBpbmcgdW5zYWZlIHN5bWxpbmsgdG8gJy91c3Ivc2hhcmUvY2EtY2VydGlmaWNhdGVzL21vemlsbGEvRUJHX0VsZWt0cm9uaWtfU2VydGlmaWthX0hpem1ldF9TYcSfbGF5xLFjxLFzxLEuY3J0JyBpbiBhcmNoaXZlLCBzZXQgRVhUUkFDVF9VTlNBRkVfU1lNTElOS1M9MSB0byBleHRyYWN0CisgZXRjL3NzbC9jZXJ0cy9mODBjYzdmNi4wCisgdXNyL3NoYXJlL2NhLWNlcnRpZmljYXRlcy9tb3ppbGxhL0VCR19FbGVrdHJvbmlrX1NlcnRpZmlrYV9IaXptZXRfU2HEn2xhecSxY8Sxc8SxLmNydAorIDAKKyBldGMvc3NsL2NlcnRzLzNiMjcxNmU1LjAgLT4gRUJHX0VsZWt0cm9uaWtfU2VydGlmaWthX0hpem1ldF9TYcSfbGF5xLFjxLFzxLEucGVtCistZXRjL3NzbC9jZXJ0cy9FQkdfRWxla3Ryb25pa19TZXJ0aWZpa2FfSGl6bWV0X1NhxJ9sYXnEsWPEsXPEsS5wZW0gLT4gL3Vzci9zaGFyZS9jYS1jZXJ0aWZpY2F0ZXMvbW96aWxsYS9FQkdfRWxla3Ryb25pa19TZXJ0aWZpa2FfSGl6bWV0X1NhxJ9sYXnEsWPEsXPEsS5jcnQKKyBldGMvc3NsL2NlcnRzL2Y4MGNjN2Y2LjAgLT4gRUJHX0VsZWt0cm9uaWtfU2VydGlmaWthX0hpem1ldF9TYcSfbGF5xLFjxLFzxLEucGVtCisgIiBcCisgIiIgIiIKKyBTS0lQPQorK2NkIC4uIHx8IGV4aXQgMTsgcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCisgCistCistY2QgLi4gJiYgcm0gLXJmIHRhci50ZW1wZGlyIHx8IGV4aXQgMQorK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQorK29wdGlvbmFsIFVVREVDT0RFIEZFQVRVUkVfU0VBTUxFU1NfQloyIEZFQVRVUkVfVEFSX0FVVE9ERVRFQ1QKKyt0ZXN0aW5nICJTeW1saW5rIGF0dGFjazogY3JlYXRlIHN5bWxpbmsgYW5kIHRoZW4gd3JpdGUgdGhyb3VnaCBpdCIgJ1wKKytleGVjIDI+JjEKKyt1dWRlY29kZSAtbyBpbnB1dCAmJiB0YXIgeHZmIGlucHV0OyBlY2hvICQ/CisrbHMgL3RtcC9iYl90ZXN0X2V2aWxmaWxlCisrbHMgYmJfdGVzdF9ldmlsZmlsZQorK2xzIHN5bWxpbmsvYmJfdGVzdF9ldmlsZmlsZQorKycgIlwKKythbnl0aGluZy50eHQKKytzeW1saW5rCisrdGFyOiBza2lwcGluZyB1bnNhZmUgc3ltbGluayB0byAnL3RtcCcgaW4gYXJjaGl2ZSwgc2V0IEVYVFJBQ1RfVU5TQUZFX1NZTUxJTktTPTEgdG8gZXh0cmFjdAorK3N5bWxpbmsvYmJfdGVzdF9ldmlsZmlsZQorKzAKKytsczogL3RtcC9iYl90ZXN0X2V2aWxmaWxlOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CisrbHM6IGJiX3Rlc3RfZXZpbGZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKKytzeW1saW5rL2JiX3Rlc3RfZXZpbGZpbGUKKysiIFwKKysiIiAiXAorK2JlZ2luLWJhc2U2NCA2NDQgdGFyX3N5bWxpbmtfYXR0YWNrLnRhci5iejIKKytRbHBvT1RGQldTWlRXWmdzN2JRQUFMVC9oTW1RQUZCQUFmK0FFTUFHSlBQdjMyQUFBSUFJTUFDNXRobFIKKytvbUFqQW1DTUFEUVQxQnFORTBBRXdBQWpBRXdFbFRLZW85TlRSNmg2Z2Flb0EwRFFOTFZkd1paNWlOVGsKKytBUXdDQVY2UzAwUUZKWWhybGZGa1ZDRURFR3RnTlZxWXJJMHVLM2dnbnQzMGdxazRlMVRUUW01UUlBS2EKKytTSnF6UkdTRkxNbU9sb0hTQWN2TGlGeHhSaVF0UVpGK3FQeGJvMTczWkRJU09Bb05vUE40UFFQaEJoS1MKKytuOGZZYUtsaW9DVHpMMm9YWWN6eVVVSVA0dTVJcHdvU0V3V2R0b0E9CisrPT09PQorKyIKKytTS0lQPQorK2NkIC4uIHx8IGV4aXQgMTsgcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCisgCisgZXhpdCAkRkFJTENPVU5UCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE2LTIxNDcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE2LTIxNDcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0Y2FlNmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9DVkUtMjAxNi0yMTQ3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotRnJvbSBkNDc0ZmZjNjgyOTBlMGE4MzY1MWM0NDMyZWVhYmZhNjJjZDUxZTg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLURhdGU6IFRodSwgMTAgTWFyIDIwMTYgMTE6NDc6NTggKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gdWRoY3A6IGZpeCBhIFNFR1Ygb24gbWFsZm9ybWVkIFJGQzEwMzUtZW5jb2RlZCBkb21haW4gbmFtZQotCi1TaWduZWQtb2ZmLWJ5OiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE2LTIxNDcKLQotaHR0cHM6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPWQ0NzRmZmMKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBuZXR3b3JraW5nL3VkaGNwL2RvbWFpbl9jb2RlYy5jIHwgMTMgKysrKysrKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBidXN5Ym94LTEuMjMuMi9uZXR3b3JraW5nL3VkaGNwL2RvbWFpbl9jb2RlYy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYnVzeWJveC0xLjIzLjIub3JpZy9uZXR3b3JraW5nL3VkaGNwL2RvbWFpbl9jb2RlYy5jCi0rKysgYnVzeWJveC0xLjIzLjIvbmV0d29ya2luZy91ZGhjcC9kb21haW5fY29kZWMuYwotQEAgLTYzLDExICs2MywxMCBAQCBjaGFyKiBGQVNUX0ZVTkMgZG5hbWVfZGVjKGNvbnN0IHVpbnQ4X3QKLSAJCQkJaWYgKGNydHBvcyArICpjICsgMSA+IGNsZW4pIC8qIGxhYmVsIHRvbyBsb25nPyBhYm9ydCAqLwotIAkJCQkJcmV0dXJuIE5VTEw7Ci0gCQkJCWlmIChkc3QpCi0tCQkJCQltZW1jcHkoZHN0ICsgbGVuLCBjICsgMSwgKmMpOwotKwkJCQkJLyogXDNjb20gLS0tPiAiY29tLiIgKi8KLSsJCQkJCSgoY2hhciopbWVtcGNweShkc3QgKyBsZW4sIGMgKyAxLCAqYykpWzBdID0gJy4nOwotIAkJCQlsZW4gKz0gKmMgKyAxOwotIAkJCQljcnRwb3MgKz0gKmMgKyAxOwotLQkJCQlpZiAoZHN0KQotLQkJCQkJZHN0W2xlbiAtIDFdID0gJy4nOwotIAkJCX0gZWxzZSB7Ci0gCQkJCS8qIE5VTDogZW5kIG9mIGN1cnJlbnQgZG9tYWluIG5hbWUgKi8KLSAJCQkJaWYgKHJldHBvcyA9PSAwKSB7Ci1AQCAtNzgsNyArNzcsMTAgQEAgY2hhciogRkFTVF9GVU5DIGRuYW1lX2RlYyhjb25zdCB1aW50OF90Ci0gCQkJCQljcnRwb3MgPSByZXRwb3M7Ci0gCQkJCQlyZXRwb3MgPSBkZXB0aCA9IDA7Ci0gCQkJCX0KLS0JCQkJaWYgKGRzdCkKLSsJCQkJaWYgKGRzdCAmJiBsZW4gIT0gMCkKLSsJCQkJCS8qIFw0aG9zdFwzY29tXDBcNGhvc3QgYW5kIHdlIGFyZSBhdCBcMDoKLSsJCQkJCSAqIFwzY29tIHdhcyBjb252ZXJ0ZWQgdG8gImNvbS4iLCBjaGFuZ2UgZG90IHRvIHNwYWNlLgotKwkJCQkJICovCi0gCQkJCQlkc3RbbGVuIC0gMV0gPSAnICc7Ci0gCQkJfQotIAotQEAgLTIyOCw2ICsyMzAsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCWludCBsZW47Ci0gCXVpbnQ4X3QgKmVuY29kZWQ7Ci0gCi0rICAgICAgICB1aW50OF90IHN0cls2XSA9IHsgMHgwMCwgMHgwMCwgMHgwMiwgMHg2NSwgMHg2NSwgMHgwMCB9OwotKyAgICAgICAgcHJpbnRmKCJOVUw6JyVzJ1xuIiwgICBkbmFtZV9kZWMoc3RyLCA2LCAiIikpOwotKwotICNkZWZpbmUgRE5BTUVfREVDKGVuY29kZWQscHJlKSBkbmFtZV9kZWMoKHVpbnQ4X3QqKShlbmNvZGVkKSwgc2l6ZW9mKGVuY29kZWQpLCAocHJlKSkKLSAJcHJpbnRmKCInJXMnXG4iLCAgICAgICBETkFNRV9ERUMoIlw0aG9zdFwzY29tXDAiLCAidGVzdDE6IikpOwotIAlwcmludGYoInRlc3QyOiclcydcbiIsIEROQU1FX0RFQygiXDRob3N0XDNjb21cMFw0aG9zdFwzY29tXDAiLCAiIikpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9DVkUtMjAxNi0yMTQ3XzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE2LTIxNDdfMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjgzNDljMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE2LTIxNDdfMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gMWI3YzE3MzkxZGU2NjUwMmRkN2E5N2M4NjZlMGEzMzY4MWVkYmIxZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBGcmksIDExIE1hciAyMDE2IDAwOjI2OjU4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHVkaGNwYzogZml4IGEgd2FybmluZyBpbiBkZWJ1ZyBjb2RlCi0KLVNpZ25lZC1vZmYtYnk6IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE2LTIxNDcgcmVncmVzc2lvbiBmaXgKLQotaHR0cHM6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPTFiN2MxNwotCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gbmV0d29ya2luZy91ZGhjcC9kb21haW5fY29kZWMuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvbmV0d29ya2luZy91ZGhjcC9kb21haW5fY29kZWMuYyBiL25ldHdvcmtpbmcvdWRoY3AvZG9tYWluX2NvZGVjLmMKLWluZGV4IGNlZTMxZjEuLjVhOTIzY2MgMTAwNjQ0Ci0tLS0gYS9uZXR3b3JraW5nL3VkaGNwL2RvbWFpbl9jb2RlYy5jCi0rKysgYi9uZXR3b3JraW5nL3VkaGNwL2RvbWFpbl9jb2RlYy5jCi1AQCAtNyw2ICs3LDcgQEAKLSAgKiBMaWNlbnNlZCB1bmRlciBHUEx2MiBvciBsYXRlciwgc2VlIGZpbGUgTElDRU5TRSBpbiB0aGlzIHNvdXJjZSB0cmVlLgotICAqLwotICNpZmRlZiBETlNfQ09NUFJfVEVTVElORwotKyMgZGVmaW5lIF9HTlVfU09VUkNFCi0gIyBkZWZpbmUgRkFTVF9GVU5DIC8qIG5vdGhpbmcgKi8KLSAjIGRlZmluZSB4bWFsbG9jIG1hbGxvYwotICMgaW5jbHVkZSA8c3RkbGliLmg+Ci0tLSAKLTIuMy41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQ1ZFLTIwMTYtMjE0OC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQ1ZFLTIwMTYtMjE0OC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWYwNGE3Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE2LTIxNDgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi1Gcm9tIDM1MmY3OWFjYmQ3NTljMTQzOTllMzliYWVmMjFmYzRmZmUxODBhYzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgotRGF0ZTogRnJpLCAyNiBGZWIgMjAxNiAxNTo1NDo1NiArMDEwMAotU3ViamVjdDogW1BBVENIXSB1ZGhjcGM6IGZpeCBPUFRJT05fNlJEIHBhcnNpbmcgKGNvdWxkIG92ZXJmbG93IGl0cyBtYWxsb2NlZAotIGJ1ZmZlcikKLQotU2lnbmVkLW9mZi1ieTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNi0yMTQ4Ci1odHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9MzUyZjc5Ci0KLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBuZXR3b3JraW5nL3VkaGNwL2NvbW1vbi5jIHwgMTUgKysrKysrKysrKysrKy0tCi0gbmV0d29ya2luZy91ZGhjcC9kaGNwYy5jICB8ICA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBidXN5Ym94LTEuMjMuMi9uZXR3b3JraW5nL3VkaGNwL2NvbW1vbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYnVzeWJveC0xLjIzLjIub3JpZy9uZXR3b3JraW5nL3VkaGNwL2NvbW1vbi5jCi0rKysgYnVzeWJveC0xLjIzLjIvbmV0d29ya2luZy91ZGhjcC9jb21tb24uYwotQEAgLTE0Miw3ICsxNDIsNyBAQCBjb25zdCBjaGFyIGRoY3Bfb3B0aW9uX3N0cmluZ3NbXSBBTElHTjEKLSAgKiB1ZGhjcF9zdHIyb3B0c2V0OiB0byBkZXRlcm1pbmUgaG93IG1hbnkgYnl0ZXMgdG8gYWxsb2NhdGUuCi0gICogeG1hbGxvY19vcHRuYW1lX29wdHZhbDogdG8gZXN0aW1hdGUgc3RyaW5nIGxlbmd0aAotICAqIGZyb20gYmluYXJ5IG9wdGlvbiBsZW5ndGg6IChvcHRpb25bTEVOXSAvIGRoY3Bfb3B0aW9uX2xlbmd0aHNbb3B0X3R5cGVdKQotLSAqIGlzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMsIG11bHRpcGx5IGluIGJ5IG9uZSBlbGVtZW50J3Mgc3RyaW5nIHdpZHRoCi0rICogaXMgdGhlIG51bWJlciBvZiBlbGVtZW50cywgbXVsdGlwbHkgaXQgYnkgb25lIGVsZW1lbnQncyBzdHJpbmcgd2lkdGgKLSAgKiAobGVuX29mX29wdGlvbl9hc19zdHJpbmdbb3B0X3R5cGVdKSBhbmQgeW91IGtub3cgaG93IHdpZGUgc3RyaW5nIHlvdSBuZWVkLgotICAqLwotIGNvbnN0IHVpbnQ4X3QgZGhjcF9vcHRpb25fbGVuZ3Roc1tdIEFMSUdOMSA9IHsKLUBAIC0xNjIsNyArMTYyLDE4IEBAIGNvbnN0IHVpbnQ4X3QgZGhjcF9vcHRpb25fbGVuZ3Roc1tdIEFMSUcKLSAJW09QVElPTl9TMzJdID0gICAgIDQsCi0gCS8qIEp1c3QgbGlrZSBPUFRJT05fU1RSSU5HLCB3ZSB1c2UgbWluaW11bSBsZW5ndGggaGVyZSAqLwotIAlbT1BUSU9OX1NUQVRJQ19ST1VURVNdID0gNSwKLS0JW09QVElPTl82UkRdID0gICAgMjIsICAvKiBpZ25vcmVkIGJ5IHVkaGNwX3N0cjJvcHRzZXQgKi8KLSsJW09QVElPTl82UkRdID0gICAgMTIsICAvKiBpZ25vcmVkIGJ5IHVkaGNwX3N0cjJvcHRzZXQgKi8KLSsJLyogVGhlIGFib3ZlIHZhbHVlIHdhcyBjaG9zZW4gYXMgZm9sbG93czoKLSsJICogbGVuX29mX29wdGlvbl9hc19zdHJpbmdbXSBmb3IgdGhpcyBvcHRpb24gaXMgPjYwOiBpdCdzIGEgc3RyaW5nIG9mIHRoZSBmb3JtCi0rCSAqICIzMiAxMjggZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmIDI1NS4yNTUuMjU1LjI1NSAiLgotKwkgKiBFYWNoIGFkZGl0aW9uYWwgaXB2NCBhZGRyZXNzIHRha2VzIDQgYnl0ZXMgaW4gYmluYXJ5IG9wdGlvbiBhbmQgYXBwZW5kcwotKwkgKiBhbm90aGVyICIyNTUuMjU1LjI1NS4yNTUgIiAxNi1ieXRlIHN0cmluZy4gV2UgY2FuIHNldCBbT1BUSU9OXzZSRF0gPSA0Ci0rCSAqIGJ1dCB0aGlzIHNldmVyZWx5IG92ZXJlc3RpbWF0ZXMgc3RyaW5nIGxlbmd0aDogaW5zdGVhZCBvZiAxNiBieXRlcywKLSsJICogaXQgYWRkcyA+NjAgZm9yIGV2ZXJ5IDQgYnl0ZXMgaW4gYmluYXJ5IG9wdGlvbi4KLSsJICogV2UgY2hlYXQgYW5kIGRlY2xhcmUgaGVyZSB0aGF0IG9wdGlvbiBpcyBpbiB1bml0cyBvZiAxMiBieXRlcy4KLSsJICogVGhpcyBhZGRzIG1vcmUgdGhhbiA2MCBieXRlcyBmb3IgZXZlcnkgdGhyZWUgaXB2NCBhZGRyZXNzZXMgLSBtb3JlIHRoYW4gZW5vdWdoLgotKwkgKiAoRXZlbiAxNiBpbnN0ZWFkIG9mIDEyIHNob3VsZCB3b3JrLCBidXQgbGV0J3MgYmUgcGFyYW5vaWQpLgotKwkgKi8KLSB9OwotIAotIAotSW5kZXg6IGJ1c3lib3gtMS4yMy4yL25ldHdvcmtpbmcvdWRoY3AvZGhjcGMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGJ1c3lib3gtMS4yMy4yLm9yaWcvbmV0d29ya2luZy91ZGhjcC9kaGNwYy5jCi0rKysgYnVzeWJveC0xLjIzLjIvbmV0d29ya2luZy91ZGhjcC9kaGNwYy5jCi1AQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBjb25zdCB1aW50OF90IGxlbl9vZl9vcHRpb25fYXNfc3QKLSAJW09QVElPTl9JUCAgICAgICAgICAgICAgXSA9IHNpemVvZigiMjU1LjI1NS4yNTUuMjU1ICIpLAotIAlbT1BUSU9OX0lQX1BBSVIgICAgICAgICBdID0gc2l6ZW9mKCIyNTUuMjU1LjI1NS4yNTUgIikgKiAyLAotIAlbT1BUSU9OX1NUQVRJQ19ST1VURVMgICBdID0gc2l6ZW9mKCIyNTUuMjU1LjI1NS4yNTUvMzIgMjU1LjI1NS4yNTUuMjU1ICIpLAotLQlbT1BUSU9OXzZSRCAgICAgICAgICAgICBdID0gc2l6ZW9mKCIzMiAxMjggZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmIDI1NS4yNTUuMjU1LjI1NSAiKSwKLSsJW09QVElPTl82UkQgICAgICAgICAgICAgXSA9IHNpemVvZigiMTMyIDEyOCBmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmYgMjU1LjI1NS4yNTUuMjU1ICIpLAotIAlbT1BUSU9OX1NUUklORyAgICAgICAgICBdID0gMSwKLSAJW09QVElPTl9TVFJJTkdfSE9TVCAgICAgXSA9IDEsCi0gI2lmIEVOQUJMRV9GRUFUVVJFX1VESENQX1JGQzMzOTcKLUBAIC0yMTQsNyArMjE0LDcgQEAgc3RhdGljIE5PSU5MSU5FIGNoYXIgKnhtYWxsb2Nfb3B0bmFtZV9vcAotIAl0eXBlID0gb3B0ZmxhZy0+ZmxhZ3MgJiBPUFRJT05fVFlQRV9NQVNLOwotIAlvcHRsZW4gPSBkaGNwX29wdGlvbl9sZW5ndGhzW3R5cGVdOwotIAl1cHBlcl9sZW5ndGggPSBsZW5fb2Zfb3B0aW9uX2FzX3N0cmluZ1t0eXBlXQotLQkJKiAoKHVuc2lnbmVkKShsZW4gKyBvcHRsZW4gLSAxKSAvICh1bnNpZ25lZClvcHRsZW4pOwotKwkJKiAoKHVuc2lnbmVkKShsZW4gKyBvcHRsZW4pIC8gKHVuc2lnbmVkKW9wdGxlbik7Ci0gCi0gCWRlc3QgPSByZXQgPSB4bWFsbG9jKHVwcGVyX2xlbmd0aCArIHN0cmxlbihvcHRfbmFtZSkgKyAyKTsKLSAJZGVzdCArPSBzcHJpbnRmKHJldCwgIiVzPSIsIG9wdF9uYW1lKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQ1ZFLTIwMTYtNjMwMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQ1ZFLTIwMTYtNjMwMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODUxYmMyMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE2LTYzMDEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1idXN5Ym94MS4yNC4xOiBGaXggQ1ZFLTIwMTYtNjMwMQotCi1bTm8gdXBzdHJlYW0gdHJhY2tpbmddIC0tIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTM2MzcxMAotCi1udHBkOiBOVFAgc2VydmVyIGRlbmlhbCBvZiBzZXJ2aWNlIGZsYXcKLQotVGhlIGJ1c3lib3ggTlRQIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgY2hlY2sgdGhlIE5UUCBtb2RlIG9mIHBhY2tldHMKLXJlY2VpdmVkIG9uIHRoZSBzZXJ2ZXIgcG9ydCBhbmQgcmVzcG9uZHMgdG8gYW55IHBhY2tldCB3aXRoIHRoZSByaWdodAotc2l6ZS4gVGhpcyBpbmNsdWRlcyByZXNwb25zZXMgZnJvbSBhbm90aGVyIE5UUCBzZXJ2ZXIuIEFuIGF0dGFja2VyIGNhbgotc2VuZCBhIHBhY2tldCB3aXRoIGEgc3Bvb2ZlZCBzb3VyY2UgYWRkcmVzcyBpbiBvcmRlciB0byBjcmVhdGUgYW4KLWluZmluaXRlIGxvb3Agb2YgcmVzcG9uc2VzIGJldHdlZW4gdHdvIGJ1c3lib3ggTlRQIHNlcnZlcnMuIEFkZGluZwotbW9yZSBwYWNrZXRzIHRvIHRoZSBsb29wIGluY3JlYXNlcyB0aGUgdHJhZmZpYyBiZXR3ZWVuIHRoZSBzZXJ2ZXJzCi11bnRpbCBvbmUgb2YgdGhlbSBoYXMgYSBmdWxseSBsb2FkZWQgQ1BVIGFuZC9vciBuZXR3b3JrLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9MTUwZGM3YTJiNDgzYjgzMzhhM2UxODVjNDc4YjRiMjNlZTg4NGU3MV0KLUNWRTogQ1ZFLTIwMTYtNjMwMQotU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAc2llbWVucy5jb20+Ci0KLWRpZmYgLS1naXQgYS9uZXR3b3JraW5nL250cGQuYyBiL25ldHdvcmtpbmcvbnRwZC5jCi1pbmRleCA5NzMyYzliLi4wZjZhNTVmIDEwMDY0NAotLS0tIGEvbmV0d29ya2luZy9udHBkLmMKLSsrKyBiL25ldHdvcmtpbmcvbnRwZC5jCi1AQCAtMTk4NSw2ICsxOTg1LDEzIEBAIHJlY3ZfYW5kX3Byb2Nlc3NfY2xpZW50X3BrdCh2b2lkIC8qaW50IGZkKi8pCi0gCQlnb3RvIGJhaWw7Ci0gCX0KLSAKLSsJLyogUmVzcG9uZCBvbmx5IHRvIGNsaWVudCBhbmQgc3ltbWV0cmljIGFjdGl2ZSBwYWNrZXRzICovCi0rCWlmICgobXNnLm1fc3RhdHVzICYgTU9ERV9NQVNLKSAhPSBNT0RFX0NMSUVOVAotKwkgJiYgKG1zZy5tX3N0YXR1cyAmIE1PREVfTUFTSykgIT0gTU9ERV9TWU1fQUNUCi0rCSkgewotKwkJZ290byBiYWlsOwotKwl9Ci0rCi0gCXF1ZXJ5X3N0YXR1cyA9IG1zZy5tX3N0YXR1czsKLSAJcXVlcnlfeG10dGltZSA9IG1zZy5tX3htdHRpbWU7Ci0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE3LTE1ODczLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9DVkUtMjAxNy0xNTg3My5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTAyN2M5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9DVkUtMjAxNy0xNTg3My5wYXRjaApAQCAtMCwwICsxLDk1IEBACitidXN5Ym94LTEuMjcuMjogRml4IENWRS0yMDE3LTE1ODczCisKK1tObyB1cHN0cmVhbSB0cmFja2luZ10gLS0gaHR0cHM6Ly9idWdzLmJ1c3lib3gubmV0L3Nob3dfYnVnLmNnaT9pZD0xMDQzMQorCitidW56aXAyOiBmaXggcnVuQ250IG92ZXJmbG93CisKK1RoZSBnZXRfbmV4dF9ibG9jayBmdW5jdGlvbiBpbiBhcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfYnVuemlwMi5jCitpbiBCdXN5Qm94IDEuMjcuMiBoYXMgYW4gSW50ZWdlciBPdmVyZmxvdyB0aGF0IG1heSBsZWFkIHRvIGEgd3JpdGUgCithY2Nlc3MgdmlvbGF0aW9uLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9MDQwMmNiMzJkZjAxNWQ5MzcyNTc4ZTNkYjI3ZGI0N2IzM2Q1YzdiMF0KK0NWRTogQ1ZFLTIwMTctMTU4NzMKK2J1ZzogMTA0MzEKK1NpZ25lZC1vZmYtYnk6IFJhZG92YW4gU2Nhc255IDxyYWRvdmFuLnNjYXNueUBzaWVtZW5zLmNvbT4KKworZGlmZiAtLWdpdCBhL2FyY2hpdmFsL2xpYmFyY2hpdmUvZGVjb21wcmVzc19idW56aXAyLmMgYi9hcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfYnVuemlwMi5jCitpbmRleCA3Y2QxOGY1Li5iZWM4OWVkIDEwMDY0NAorLS0tIGEvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX2J1bnppcDIuYworKysrIGIvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX2J1bnppcDIuYworQEAgLTE1NiwxNSArMTU2LDE1IEBAIHN0YXRpYyB1bnNpZ25lZCBnZXRfYml0cyhidW56aXBfZGF0YSAqYmQsIGludCBiaXRzX3dhbnRlZCkKKyBzdGF0aWMgaW50IGdldF9uZXh0X2Jsb2NrKGJ1bnppcF9kYXRhICpiZCkKKyB7CisgCXN0cnVjdCBncm91cF9kYXRhICpodWZHcm91cDsKKy0JaW50IGRidWZDb3VudCwgZGJ1ZlNpemUsIGdyb3VwQ291bnQsICpiYXNlLCAqbGltaXQsIHNlbGVjdG9yLAorLQkJaSwgaiwgcnVuUG9zLCBzeW1Db3VudCwgc3ltVG90YWwsIG5TZWxlY3RvcnMsIGJ5dGVDb3VudFsyNTZdOworLQlpbnQgcnVuQ250ID0gcnVuQ250OyAvKiBmb3IgY29tcGlsZXIgKi8KKysJaW50IGdyb3VwQ291bnQsICpiYXNlLCAqbGltaXQsIHNlbGVjdG9yLAorKwkJaSwgaiwgc3ltQ291bnQsIHN5bVRvdGFsLCBuU2VsZWN0b3JzLCBieXRlQ291bnRbMjU2XTsKKyAJdWludDhfdCB1Yywgc3ltVG9CeXRlWzI1Nl0sIG10ZlN5bWJvbFsyNTZdLCAqc2VsZWN0b3JzOworIAl1aW50MzJfdCAqZGJ1ZjsKKyAJdW5zaWduZWQgb3JpZ1B0ciwgdDsKKysJdW5zaWduZWQgZGJ1ZkNvdW50LCBydW5Qb3M7CisrCXVuc2lnbmVkIHJ1bkNudCA9IHJ1bkNudDsgLyogZm9yIGNvbXBpbGVyICovCisgCisgCWRidWYgPSBiZC0+ZGJ1ZjsKKy0JZGJ1ZlNpemUgPSBiZC0+ZGJ1ZlNpemU7CisgCXNlbGVjdG9ycyA9IGJkLT5zZWxlY3RvcnM7CisgCisgLyogSW4gYmJveCwgd2UgYXJlIG9rIHdpdGggYWJvcnRpbmcgdGhyb3VnaCBzZXRqbXAgd2hpY2ggaXMgc2V0IHVwIGluIHN0YXJ0X2J1bnppcCAqLworQEAgLTE4Nyw3ICsxODcsNyBAQCBzdGF0aWMgaW50IGdldF9uZXh0X2Jsb2NrKGJ1bnppcF9kYXRhICpiZCkKKyAJICAgaXQgZGlkbid0IGFjdHVhbGx5IHdvcmsuICovCisgCWlmIChnZXRfYml0cyhiZCwgMSkpIHJldHVybiBSRVRWQUxfT0JTT0xFVEVfSU5QVVQ7CisgCW9yaWdQdHIgPSBnZXRfYml0cyhiZCwgMjQpOworLQlpZiAoKGludClvcmlnUHRyID4gZGJ1ZlNpemUpIHJldHVybiBSRVRWQUxfREFUQV9FUlJPUjsKKysJaWYgKG9yaWdQdHIgPiBiZC0+ZGJ1ZlNpemUpIHJldHVybiBSRVRWQUxfREFUQV9FUlJPUjsKKyAKKyAJLyogbWFwcGluZyB0YWJsZTogaWYgc29tZSBieXRlIHZhbHVlcyBhcmUgbmV2ZXIgdXNlZCAoZW5jb2RpbmcgdGhpbmdzCisgCSAgIGxpa2UgYXNjaWkgdGV4dCksIHRoZSBjb21wcmVzc2lvbiBjb2RlIHJlbW92ZXMgdGhlIGdhcHMgdG8gaGF2ZSBmZXdlcgorQEAgLTQzNSw3ICs0MzUsMTQgQEAgc3RhdGljIGludCBnZXRfbmV4dF9ibG9jayhidW56aXBfZGF0YSAqYmQpCisgCQkJICAgc3ltYm9scywgYnV0IGEgcnVuIG9mIGxlbmd0aCAwIGRvZXNuJ3QgbWVhbiBhbnl0aGluZyBpbiB0aGlzCisgCQkJICAgY29udGV4dCkuICBUaHVzIHNwYWNlIGlzIHNhdmVkLiAqLworIAkJCXJ1bkNudCArPSAocnVuUG9zIDw8IG5leHRTeW0pOyAvKiArcnVuUG9zIGlmIFJVTkE7ICsyKnJ1blBvcyBpZiBSVU5CICovCistCQkJaWYgKHJ1blBvcyA8IGRidWZTaXplKSBydW5Qb3MgPDw9IDE7CisrLy9UaGUgMzItYml0IG92ZXJmbG93IG9mIHJ1bkNudCB3YXNuJ3QgeWV0IHNlZW4sIGJ1dCBwcm9iYWJseSBjYW4gaGFwcGVuLgorKy8vVGhpcyB3b3VsZCBiZSB0aGUgZml4IChjYXRjaGVzIHRvbyBsYXJnZSBjb3VudCB3YXkgYmVmb3JlIGl0IGNhbiBvdmVyZmxvdyk6CisrLy8JCQlpZiAocnVuQ250ID4gYmQtPmRidWZTaXplKSB7CisrLy8JCQkJZGJnKCJydW5DbnQ6JXUgPiBkYnVmU2l6ZToldSBSRVRWQUxfREFUQV9FUlJPUiIsCisrLy8JCQkJCQlydW5DbnQsIGJkLT5kYnVmU2l6ZSk7CisrLy8JCQkJcmV0dXJuIFJFVFZBTF9EQVRBX0VSUk9SOworKy8vCQkJfQorKwkJCWlmIChydW5Qb3MgPCBiZC0+ZGJ1ZlNpemUpIHJ1blBvcyA8PD0gMTsKKyAJCQlnb3RvIGVuZF9vZl9odWZmbWFuX2xvb3A7CisgCQl9CisgCitAQCAtNDQ1LDE0ICs0NTIsMTUgQEAgc3RhdGljIGludCBnZXRfbmV4dF9ibG9jayhidW56aXBfZGF0YSAqYmQpCisgCQkgICBsaXRlcmFsIHVzZWQgaXMgdGhlIG9uZSBhdCB0aGUgaGVhZCBvZiB0aGUgbXRmU3ltYm9sIGFycmF5LikgKi8KKyAJCWlmIChydW5Qb3MgIT0gMCkgeworIAkJCXVpbnQ4X3QgdG1wX2J5dGU7CistCQkJaWYgKGRidWZDb3VudCArIHJ1bkNudCA+IGRidWZTaXplKSB7CistCQkJCWRiZygiZGJ1ZkNvdW50OiVkK3J1bkNudDolZCAlZCA+IGRidWZTaXplOiVkIFJFVFZBTF9EQVRBX0VSUk9SIiwKKy0JCQkJCQlkYnVmQ291bnQsIHJ1bkNudCwgZGJ1ZkNvdW50ICsgcnVuQ250LCBkYnVmU2l6ZSk7CisrCQkJaWYgKGRidWZDb3VudCArIHJ1bkNudCA+IGJkLT5kYnVmU2l6ZSkgeworKwkJCQlkYmcoImRidWZDb3VudDoldStydW5DbnQ6JXUgJXUgPiBkYnVmU2l6ZToldSBSRVRWQUxfREFUQV9FUlJPUiIsCisrCQkJCQkJZGJ1ZkNvdW50LCBydW5DbnQsIGRidWZDb3VudCArIHJ1bkNudCwgYmQtPmRidWZTaXplKTsKKyAJCQkJcmV0dXJuIFJFVFZBTF9EQVRBX0VSUk9SOworIAkJCX0KKyAJCQl0bXBfYnl0ZSA9IHN5bVRvQnl0ZVttdGZTeW1ib2xbMF1dOworIAkJCWJ5dGVDb3VudFt0bXBfYnl0ZV0gKz0gcnVuQ250OworLQkJCXdoaWxlICgtLXJ1bkNudCA+PSAwKSBkYnVmW2RidWZDb3VudCsrXSA9ICh1aW50MzJfdCl0bXBfYnl0ZTsKKysJCQl3aGlsZSAoKGludCktLXJ1bkNudCA+PSAwKQorKwkJCQlkYnVmW2RidWZDb3VudCsrXSA9ICh1aW50MzJfdCl0bXBfYnl0ZTsKKyAJCQlydW5Qb3MgPSAwOworIAkJfQorIAorQEAgLTQ2Niw3ICs0NzQsNyBAQCBzdGF0aWMgaW50IGdldF9uZXh0X2Jsb2NrKGJ1bnppcF9kYXRhICpiZCkKKyAJCSAgIGZpcnN0IHN5bWJvbCBpbiB0aGUgbXRmIGFycmF5LCBwb3NpdGlvbiAwLCB3b3VsZCBoYXZlIGJlZW4gaGFuZGxlZAorIAkJICAgYXMgcGFydCBvZiBhIHJ1biBhYm92ZS4gIFRoZXJlZm9yZSAxIHVudXNlZCBtdGYgcG9zaXRpb24gbWludXMKKyAJCSAgIDIgbm9uLWxpdGVyYWwgbmV4dFN5bSB2YWx1ZXMgZXF1YWxzIC0xLikgKi8KKy0JCWlmIChkYnVmQ291bnQgPj0gZGJ1ZlNpemUpIHJldHVybiBSRVRWQUxfREFUQV9FUlJPUjsKKysJCWlmIChkYnVmQ291bnQgPj0gYmQtPmRidWZTaXplKSByZXR1cm4gUkVUVkFMX0RBVEFfRVJST1I7CisgCQlpID0gbmV4dFN5bSAtIDE7CisgCQl1YyA9IG10ZlN5bWJvbFtpXTsKKyAKKy0tIAorY2dpdCB2MC4xMgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LTEuMjQuMS10cnVuY2F0ZS1vcGVuLW1vZGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtMS4yNC4xLXRydW5jYXRlLW9wZW4tbW9kZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RjOTEwOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtMS4yNC4xLXRydW5jYXRlLW9wZW4tbW9kZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotICBodHRwOi8vYnVzeWJveC5uZXQvZG93bmxvYWRzL2ZpeGVzLTEuMjQuMS8KLSAgaHR0cHM6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPWUxMTFhMTY0MDQ5NGZlODdmYzkxM2Y5NGZhZTNiYjgwNWRlMGZjOTkKLSAgaHR0cHM6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2g9MV8yNF9zdGFibGUmaWQ9YmU3MjljMWQzYjVjOTIzZjEwODcxZGQ2OGVhOTQxNTZkMGY4YzgwMwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotCi1Gcm9tIGJlNzI5YzFkM2I1YzkyM2YxMDg3MWRkNjhlYTk0MTU2ZDBmOGM4MDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBcmkgU3VuZGhvbG0gPGFyaUB0dXhlcmEuY29tPgotRGF0ZTogTW9uLCA0IEphbiAyMDE2IDE1OjQwOjM3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRydW5jYXRlOiBhbHdheXMgc2V0IG1vZGUgd2hlbiBvcGVuaW5nIGZpbGUgdG8gYXZvaWQgZm9ydGlmeQotIGVycm9ycwotCi1CdXN5Ym94IGNyYXNoZXMgZHVlIHRvIG5vIG1vZGUgYmVpbmcgZ2l2ZW4gd2hlbiBvcGVuaW5nOgotJCAuL2J1c3lib3ggdHJ1bmNhdGUgLXMgMU0gZm9vCi0qKiogaW52YWxpZCBvcGVuNjQgY2FsbDogT19DUkVBVCB3aXRob3V0IG1vZGUgKioqOiAuL2J1c3lib3ggdGVybWluYXRlZAotPT09PT09PSBCYWNrdHJhY2U6ID09PT09PT09PQotL2xpYi94ODZfNjQtbGludXgtZ251L2xpYmMuc28uNigrMHg3MzM4ZilbMHg3ZjY2ZDkyMTMzOGZdCi0vbGliL3g4Nl82NC1saW51eC1nbnUvbGliYy5zby42KF9fZm9ydGlmeV9mYWlsKzB4NWMpWzB4N2Y2NmQ5MmFhYzljXQotL2xpYi94ODZfNjQtbGludXgtZ251L2xpYmMuc28uNigrMHhlYjZhYSlbMHg3ZjY2ZDkyOGI2YWFdCi0uL2J1c3lib3hbMHg0ODk5ZjldCi09PT09PT09IE1lbW9yeSBtYXA6ID09PT09PT09Ci0wMDQwMDAwMC0wMDRkMDAwMCByLXhwIDAwMDAwMDAwIDAwOjFhIDEzNzU1OSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL2hvbWUvYXJpL2J1c3lib3gvYnVzeWJveAotMDA2Y2YwMDAtMDA2ZDAwMDAgci0tcCAwMDBjZjAwMCAwMDoxYSAxMzc1NTkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9ob21lL2FyaS9idXN5Ym94L2J1c3lib3gKLTAwNmQwMDAwLTAwNmQxMDAwIHJ3LXAgMDAwZDAwMDAgMDA6MWEgMTM3NTU5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvaG9tZS9hcmkvYnVzeWJveC9idXN5Ym94Ci0wMDZkMTAwMC0wMDZkNDAwMCBydy1wIDAwMDAwMDAwIDAwOjAwIDAKLTAxNGU3MDAwLTAxNTA4MDAwIHJ3LXAgMDAwMDAwMDAgMDA6MDAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVhcF0KLTdmNjZkOGY4YTAwMC03ZjY2ZDhmYTAwMDAgci14cCAwMDAwMDAwMCAwODowNyAxNTc5MDA4ICAgICAgICAgICAgICAgICAgICAvbGliL3g4Nl82NC1saW51eC1nbnUvbGliZ2NjX3Muc28uMQotN2Y2NmQ4ZmEwMDAwLTdmNjZkOTE5ZjAwMCAtLS1wIDAwMDE2MDAwIDA4OjA3IDE1NzkwMDggICAgICAgICAgICAgICAgICAgIC9saWIveDg2XzY0LWxpbnV4LWdudS9saWJnY2Nfcy5zby4xCi03ZjY2ZDkxOWYwMDAtN2Y2NmQ5MWEwMDAwIHJ3LXAgMDAwMTUwMDAgMDg6MDcgMTU3OTAwOCAgICAgICAgICAgICAgICAgICAgL2xpYi94ODZfNjQtbGludXgtZ251L2xpYmdjY19zLnNvLjEKLTdmNjZkOTFhMDAwMC03ZjY2ZDkzNWIwMDAgci14cCAwMDAwMDAwMCAwODowNyAxNTc4OTk0ICAgICAgICAgICAgICAgICAgICAvbGliL3g4Nl82NC1saW51eC1nbnUvbGliYy0yLjE5LnNvCi03ZjY2ZDkzNWIwMDAtN2Y2NmQ5NTVhMDAwIC0tLXAgMDAxYmIwMDAgMDg6MDcgMTU3ODk5NCAgICAgICAgICAgICAgICAgICAgL2xpYi94ODZfNjQtbGludXgtZ251L2xpYmMtMi4xOS5zbwotN2Y2NmQ5NTVhMDAwLTdmNjZkOTU1ZTAwMCByLS1wIDAwMWJhMDAwIDA4OjA3IDE1Nzg5OTQgICAgICAgICAgICAgICAgICAgIC9saWIveDg2XzY0LWxpbnV4LWdudS9saWJjLTIuMTkuc28KLTdmNjZkOTU1ZTAwMC03ZjY2ZDk1NjAwMDAgcnctcCAwMDFiZTAwMCAwODowNyAxNTc4OTk0ICAgICAgICAgICAgICAgICAgICAvbGliL3g4Nl82NC1saW51eC1nbnUvbGliYy0yLjE5LnNvCi03ZjY2ZDk1NjAwMDAtN2Y2NmQ5NTY1MDAwIHJ3LXAgMDAwMDAwMDAgMDA6MDAgMAotN2Y2NmQ5NTY1MDAwLTdmNjZkOTY2YTAwMCByLXhwIDAwMDAwMDAwIDA4OjA3IDE1NzkwMjAgICAgICAgICAgICAgICAgICAgIC9saWIveDg2XzY0LWxpbnV4LWdudS9saWJtLTIuMTkuc28KLTdmNjZkOTY2YTAwMC03ZjY2ZDk4NjkwMDAgLS0tcCAwMDEwNTAwMCAwODowNyAxNTc5MDIwICAgICAgICAgICAgICAgICAgICAvbGliL3g4Nl82NC1saW51eC1nbnUvbGlibS0yLjE5LnNvCi03ZjY2ZDk4NjkwMDAtN2Y2NmQ5ODZhMDAwIHItLXAgMDAxMDQwMDAgMDg6MDcgMTU3OTAyMCAgICAgICAgICAgICAgICAgICAgL2xpYi94ODZfNjQtbGludXgtZ251L2xpYm0tMi4xOS5zbwotN2Y2NmQ5ODZhMDAwLTdmNjZkOTg2YjAwMCBydy1wIDAwMTA1MDAwIDA4OjA3IDE1NzkwMjAgICAgICAgICAgICAgICAgICAgIC9saWIveDg2XzY0LWxpbnV4LWdudS9saWJtLTIuMTkuc28KLTdmNjZkOTg2YjAwMC03ZjY2ZDk4OGUwMDAgci14cCAwMDAwMDAwMCAwODowNyAxNTc4OTgxICAgICAgICAgICAgICAgICAgICAvbGliL3g4Nl82NC1saW51eC1nbnUvbGQtMi4xOS5zbwotN2Y2NmQ5YTY0MDAwLTdmNjZkOWE2NzAwMCBydy1wIDAwMDAwMDAwIDAwOjAwIDAKLTdmNjZkOWE4YTAwMC03ZjY2ZDlhOGQwMDAgcnctcCAwMDAwMDAwMCAwMDowMCAwCi03ZjY2ZDlhOGQwMDAtN2Y2NmQ5YThlMDAwIHItLXAgMDAwMjIwMDAgMDg6MDcgMTU3ODk4MSAgICAgICAgICAgICAgICAgICAgL2xpYi94ODZfNjQtbGludXgtZ251L2xkLTIuMTkuc28KLTdmNjZkOWE4ZTAwMC03ZjY2ZDlhOGYwMDAgcnctcCAwMDAyMzAwMCAwODowNyAxNTc4OTgxICAgICAgICAgICAgICAgICAgICAvbGliL3g4Nl82NC1saW51eC1nbnUvbGQtMi4xOS5zbwotN2Y2NmQ5YThmMDAwLTdmNjZkOWE5MDAwMCBydy1wIDAwMDAwMDAwIDAwOjAwIDAKLTdmZmM0Nzc2MTAwMC03ZmZjNDc3ODIwMDAgcnctcCAwMDAwMDAwMCAwMDowMCAwICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhY2tdCi03ZmZjNDc3YWIwMDAtN2ZmYzQ3N2FkMDAwIHIteHAgMDAwMDAwMDAgMDA6MDAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgW3Zkc29dCi1mZmZmZmZmZmZmNjAwMDAwLWZmZmZmZmZmZmY2MDEwMDAgci14cCAwMDAwMDAwMCAwMDowMCAwICAgICAgICAgICAgICAgICAgW3ZzeXNjYWxsXQotQWJvcnRlZCAoY29yZSBkdW1wZWQpCi0kCi0KLUZpeCB0aGlzIGJ5IHNpbXBseSBhbHdheXMgc2V0dGluZyB0aGUgbW9kZSwgYXMgaXQgZG9lc24ndCBodXJ0IGV2ZW4KLXdoZW4gT19DUkVBVCBpcyBub3Qgc3BlY2lmaWVkLgotCi1UaGlzIGJ1ZyBpcyBhIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBpbiBmYzNlNDBlLCBhcyB4b3BlbigpLCB3aGljaAotd2FzIG9yaWdpbmFsbHkgdXNlZCwgd291bGQgYXV0b21hdGljYWxseSBzZXQgdGhlIG1vZGUuCi0KLVNpZ25lZC1vZmYtYnk6IEFyaSBTdW5kaG9sbSA8YXJpQHR1eGVyYS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBlMTExYTE2NDA0OTRmZTg3ZmM5MTNmOTRmYWUzYmI4MDVkZTBmYzk5KQotLS0tCi0gY29yZXV0aWxzL3RydW5jYXRlLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb3JldXRpbHMvdHJ1bmNhdGUuYyBiL2NvcmV1dGlscy90cnVuY2F0ZS5jCi1pbmRleCBlNWZhNjU2Li40Yzk5N2JmIDEwMDY0NAotLS0tIGEvY29yZXV0aWxzL3RydW5jYXRlLmMKLSsrKyBiL2NvcmV1dGlscy90cnVuY2F0ZS5jCi1AQCAtNjQsNyArNjQsNyBAQCBpbnQgdHJ1bmNhdGVfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYXIgKiphcmd2KQotIAotIAlhcmd2ICs9IG9wdGluZDsKLSAJd2hpbGUgKCphcmd2KSB7Ci0tCQlpbnQgZmQgPSBvcGVuKCphcmd2LCBmbGFncyk7Ci0rCQlpbnQgZmQgPSBvcGVuKCphcmd2LCBmbGFncywgMDY2Nik7Ci0gCQlpZiAoZmQgPCAwKSB7Ci0gCQkJaWYgKGVycm5vICE9IEVOT0VOVCB8fCAhKG9wdHMgJiBPUFRfTk9DUkVBVEUpKSB7Ci0gCQkJCWJiX3BlcnJvcl9tc2coIiVzOiBvcGVuIiwgKmFyZ3YpOwotLS0gCi0yLjYuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtMS4yNC4xLXVuemlwLXJlZ3Jlc3Npb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtMS4yNC4xLXVuemlwLXJlZ3Jlc3Npb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzYzUwMjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LTEuMjQuMS11bnppcC1yZWdyZXNzaW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotICBodHRwOi8vYnVzeWJveC5uZXQvZG93bmxvYWRzL2ZpeGVzLTEuMjQuMS8KLSAgaHR0cDovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9MDkyZmFiY2YxZGY1ZDQ2Y2QyMmJlNGZmY2QzYjg3MWY2MTgwZWI5YwotICBodHRwOi8vZ2l0LmJ1c3lib3gubmV0L2J1c3lib3gvY29tbWl0Lz9oPTFfMjRfc3RhYmxlJmlkPTA5MmZhYmNmMWRmNWQ0NmNkMjJiZTRmZmNkM2I4NzFmNjE4MGViOWMKLQotU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLQotRnJvbSAwOTJmYWJjZjFkZjVkNDZjZDIyYmU0ZmZjZDNiODcxZjYxODBlYjljIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLURhdGU6IEZyaSwgMzAgT2N0IDIwMTUgMjM6NDE6NTMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gW2dddW56aXA6IGZpeCByZWNlbnQgYnJlYWthZ2UuCi0KLUFsc28sIGRvIGVtaXQgZXJyb3IgbWVzc2FnZSB3ZSBzbyBwYWluc3Rha2luZ2x5IHBhc3MgZnJvbSBnemlwIGludGVybmFscwotCi1TaWduZWQtb2ZmLWJ5OiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgNmJkM2ZmZjUxYWE3NGUyZWUyZDg3ODg3YjEyMTgyYTNiMDk3OTJlZikKLVNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLS0tLQotIGFyY2hpdmFsL2xpYmFyY2hpdmUvZGVjb21wcmVzc19ndW56aXAuYyB8IDMzICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQotIHRlc3RzdWl0ZS91bnppcC50ZXN0cyAgICAgICAgICAgICAgICAgICB8ICAxICsKLSAyIGZpbGVzIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX2d1bnppcC5jIGIvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX2d1bnppcC5jCi1pbmRleCBjNzZmZDMxLi4zNTdjOWJmIDEwMDY0NAotLS0tIGEvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX2d1bnppcC5jCi0rKysgYi9hcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfZ3VuemlwLmMKLUBAIC0zMDksOCArMzA5LDcgQEAgc3RhdGljIGludCBodWZ0X2J1aWxkKGNvbnN0IHVuc2lnbmVkICpiLCBjb25zdCB1bnNpZ25lZCBuLAotIAlodWZ0X3QgKnE7ICAgICAgICAgICAgICAvKiBwb2ludHMgdG8gY3VycmVudCB0YWJsZSAqLwotIAlodWZ0X3QgcjsgICAgICAgICAgICAgICAvKiB0YWJsZSBlbnRyeSBmb3Igc3RydWN0dXJlIGFzc2lnbm1lbnQgKi8KLSAJaHVmdF90ICp1W0JNQVhdOyAgICAgICAgLyogdGFibGUgc3RhY2sgKi8KLS0JdW5zaWduZWQgdltOX01BWF07ICAgICAgLyogdmFsdWVzIGluIG9yZGVyIG9mIGJpdCBsZW5ndGggKi8KLS0JdW5zaWduZWQgdl9lbmQ7Ci0rCXVuc2lnbmVkIHZbTl9NQVggKyAxXTsgIC8qIHZhbHVlcyBpbiBvcmRlciBvZiBiaXQgbGVuZ3RoLiBsYXN0IHZbXSBpcyBuZXZlciB1c2VkICovCi0gCWludCB3c1tCTUFYICsgMV07ICAgICAgIC8qIGJpdHMgZGVjb2RlZCBzdGFjayAqLwotIAlpbnQgdzsgICAgICAgICAgICAgICAgICAvKiBiaXRzIGRlY29kZWQgKi8KLSAJdW5zaWduZWQgeFtCTUFYICsgMV07ICAgLyogYml0IG9mZnNldHMsIHRoZW4gY29kZSBzdGFjayAqLwotQEAgLTM2NSwxNSArMzY0LDE3IEBAIHN0YXRpYyBpbnQgaHVmdF9idWlsZChjb25zdCB1bnNpZ25lZCAqYiwgY29uc3QgdW5zaWduZWQgbiwKLSAJCSp4cCsrID0gajsKLSAJfQotIAotLQkvKiBNYWtlIGEgdGFibGUgb2YgdmFsdWVzIGluIG9yZGVyIG9mIGJpdCBsZW5ndGhzICovCi0rCS8qIE1ha2UgYSB0YWJsZSBvZiB2YWx1ZXMgaW4gb3JkZXIgb2YgYml0IGxlbmd0aHMuCi0rCSAqIFRvIGRldGVjdCBiYWQgaW5wdXQsIHVudXNlZCB2W2ldJ3MgYXJlIHNldCB0byBpbnZhbGlkIHZhbHVlIFVJTlRfTUFYLgotKwkgKiBJbiBwYXJ0aWN1bGFyLCBsYXN0IHZbaV0gaXMgbmV2ZXIgZmlsbGVkIGFuZCBtdXN0IG5vdCBiZSBhY2Nlc3NlZC4KLSsJICovCi0rCW1lbXNldCh2LCAweGZmLCBzaXplb2YodikpOwotIAlwID0gYjsKLSAJaSA9IDA7Ci0tCXZfZW5kID0gMDsKLSAJZG8gewotIAkJaiA9ICpwKys7Ci0gCQlpZiAoaiAhPSAwKSB7Ci0gCQkJdlt4W2pdKytdID0gaTsKLS0JCQl2X2VuZCA9IHhbal07Ci0gCQl9Ci0gCX0gd2hpbGUgKCsraSA8IG4pOwotIAotQEAgLTQzNSw3ICs0MzYsOSBAQCBzdGF0aWMgaW50IGh1ZnRfYnVpbGQoY29uc3QgdW5zaWduZWQgKmIsIGNvbnN0IHVuc2lnbmVkIG4sCi0gCi0gCQkJLyogc2V0IHVwIHRhYmxlIGVudHJ5IGluIHIgKi8KLSAJCQlyLmIgPSAodW5zaWduZWQgY2hhcikgKGsgLSB3KTsKLS0JCQlpZiAocCA+PSB2ICsgdl9lbmQpIHsgLy8gV2FzICJpZiAocCA+PSB2ICsgbikiIGJ1dCB2W10gY2FuIGJlIHNob3J0ZXIhCi0rCQkJaWYgKC8qcCA+PSB2ICsgbiB8fCAtLSByZWR1bmRhbnQsIGNhdWdodCBieSB0aGUgc2Vjb25kIGNoZWNrOiAqLwotKwkJCSAgICAqcCA9PSBVSU5UX01BWCAvKiBkbyB3ZSBhY2Nlc3MgdW5pbml0ZWQgdltpXT8gKHNlZSBtZW1zZXQodikpKi8KLSsJCQkpIHsKLSAJCQkJci5lID0gOTk7IC8qIG91dCBvZiB2YWx1ZXMtLWludmFsaWQgY29kZSAqLwotIAkJCX0gZWxzZSBpZiAoKnAgPCBzKSB7Ci0gCQkJCXIuZSA9ICh1bnNpZ25lZCBjaGFyKSAoKnAgPCAyNTYgPyAxNiA6IDE1KTsJLyogMjU2IGlzIEVPQiBjb2RlICovCi1AQCAtNTIwLDggKzUyMyw5IEBAIHN0YXRpYyBOT0lOTElORSBpbnQgaW5mbGF0ZV9jb2RlcyhTVEFURV9QQVJBTV9PTkxZKQotIAkJZSA9IHQtPmU7Ci0gCQlpZiAoZSA+IDE2KQotIAkJCWRvIHsKLS0JCQkJaWYgKGUgPT0gOTkpCi0tCQkJCQlhYm9ydF91bnppcChQQVNTX1NUQVRFX09OTFkpOzsKLSsJCQkJaWYgKGUgPT0gOTkpIHsKLSsJCQkJCWFib3J0X3VuemlwKFBBU1NfU1RBVEVfT05MWSk7Ci0rCQkJCX0KLSAJCQkJYmIgPj49IHQtPmI7Ci0gCQkJCWsgLT0gdC0+YjsKLSAJCQkJZSAtPSAxNjsKLUBAIC01NTcsOCArNTYxLDkgQEAgc3RhdGljIE5PSU5MSU5FIGludCBpbmZsYXRlX2NvZGVzKFNUQVRFX1BBUkFNX09OTFkpCi0gCQkJZSA9IHQtPmU7Ci0gCQkJaWYgKGUgPiAxNikKLSAJCQkJZG8gewotLQkJCQkJaWYgKGUgPT0gOTkpCi0rCQkJCQlpZiAoZSA9PSA5OSkgewotIAkJCQkJCWFib3J0X3VuemlwKFBBU1NfU1RBVEVfT05MWSk7Ci0rCQkJCQl9Ci0gCQkJCQliYiA+Pj0gdC0+YjsKLSAJCQkJCWsgLT0gdC0+YjsKLSAJCQkJCWUgLT0gMTY7Ci1AQCAtODI0LDggKzgyOSw5IEBAIHN0YXRpYyBpbnQgaW5mbGF0ZV9ibG9jayhTVEFURV9QQVJBTSBzbWFsbGludCAqZSkKLSAKLSAJCWJfZHluYW1pYyA+Pj0gNDsKLSAJCWtfZHluYW1pYyAtPSA0OwotLQkJaWYgKG5sID4gMjg2IHx8IG5kID4gMzApCi0rCQlpZiAobmwgPiAyODYgfHwgbmQgPiAzMCkgewotIAkJCWFib3J0X3VuemlwKFBBU1NfU1RBVEVfT05MWSk7CS8qIGJhZCBsZW5ndGhzICovCi0rCQl9Ci0gCi0gCQkvKiByZWFkIGluIGJpdC1sZW5ndGgtY29kZSBsZW5ndGhzICovCi0gCQlmb3IgKGogPSAwOyBqIDwgbmI7IGorKykgewotQEAgLTkwNiwxMiArOTEyLDE0IEBAIHN0YXRpYyBpbnQgaW5mbGF0ZV9ibG9jayhTVEFURV9QQVJBTSBzbWFsbGludCAqZSkKLSAJCWJsID0gbGJpdHM7Ci0gCi0gCQlpID0gaHVmdF9idWlsZChsbCwgbmwsIDI1NywgY3BsZW5zLCBjcGxleHQsICZpbmZsYXRlX2NvZGVzX3RsLCAmYmwpOwotLQkJaWYgKGkgIT0gMCkKLSsJCWlmIChpICE9IDApIHsKLSAJCQlhYm9ydF91bnppcChQQVNTX1NUQVRFX09OTFkpOwotKwkJfQotIAkJYmQgPSBkYml0czsKLSAJCWkgPSBodWZ0X2J1aWxkKGxsICsgbmwsIG5kLCAwLCBjcGRpc3QsIGNwZGV4dCwgJmluZmxhdGVfY29kZXNfdGQsICZiZCk7Ci0tCQlpZiAoaSAhPSAwKQotKwkJaWYgKGkgIT0gMCkgewotIAkJCWFib3J0X3VuemlwKFBBU1NfU1RBVEVfT05MWSk7Ci0rCQl9Ci0gCi0gCQkvKiBzZXQgdXAgZGF0YSBmb3IgaW5mbGF0ZV9jb2RlcygpICovCi0gCQlpbmZsYXRlX2NvZGVzX3NldHVwKFBBU1NfU1RBVEUgYmwsIGJkKTsKLUBAIC05OTksNiArMTAwNyw3IEBAIGluZmxhdGVfdW56aXBfaW50ZXJuYWwoU1RBVEVfUEFSQU0gdHJhbnNmb3JtZXJfc3RhdGVfdCAqeHN0YXRlKQotIAllcnJvcl9tc2cgPSAiY29ycnVwdGVkIGRhdGEiOwotIAlpZiAoc2V0am1wKGVycm9yX2ptcCkpIHsKLSAJCS8qIEVycm9yIGZyb20gZGVlcCBpbnNpZGUgemlwIG1hY2hpbmVyeSAqLwotKwkJYmJfZXJyb3JfbXNnKGVycm9yX21zZyk7Ci0gCQluID0gLTE7Ci0gCQlnb3RvIHJldDsKLSAJfQotZGlmZiAtLWdpdCBhL3Rlc3RzdWl0ZS91bnppcC50ZXN0cyBiL3Rlc3RzdWl0ZS91bnppcC50ZXN0cwotaW5kZXggY2EwYTQ1OC4uZDg3MzhhMyAxMDA3NTUKLS0tLSBhL3Rlc3RzdWl0ZS91bnppcC50ZXN0cwotKysrIGIvdGVzdHN1aXRlL3VuemlwLnRlc3RzCi1AQCAtMzQsNiArMzQsNyBAQCBybSBmb28uemlwCi0gdGVzdGluZyAidW56aXAgKGJhZCBhcmNoaXZlKSIgInV1ZGVjb2RlOyB1bnppcCBiYWQuemlwIDI+JjE7IGVjaG8gXCQ/IiBcCi0gIkFyY2hpdmU6ICBiYWQuemlwCi0gICBpbmZsYXRpbmc6IF0zasK9csKrSRsSSy0lSXgKLSt1bnppcDogY29ycnVwdGVkIGRhdGEKLSB1bnppcDogaW5mbGF0ZSBlcnJvcgotIDEKLSAiIFwKLS0tIAotMi42LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LTEuMjQuMS11bnppcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC0xLjI0LjEtdW56aXAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxODY3MjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LTEuMjQuMS11bnppcC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSAgaHR0cDovL2J1c3lib3gubmV0L2Rvd25sb2Fkcy9maXhlcy0xLjI0LjEvCi0gIGh0dHA6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPTFkZTI1YTZlODdlMGU2MjdhYTM0Mjk4MTA1YTNkMTdjNjBhMWY0NGUKLSAgaHR0cDovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aD0xXzI0X3N0YWJsZSZpZD02NzY3YWYxN2YxMTE0NGM3Y2QzY2ZlOWVmNzk5ZDdmODlhNzhmZTY1Ci0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci0KLUZyb20gMWRlMjVhNmU4N2UwZTYyN2FhMzQyOTgxMDVhM2QxN2M2MGExZjQ0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBNb24sIDI2IE9jdCAyMDE1IDE5OjMzOjA1ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHVuemlwOiB0ZXN0IGZvciBiYWQgYXJjaGl2ZSBTRUdWaW5nCi0KLWZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkICAgICBuZXcgICBkZWx0YQotaHVmdF9idWlsZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyOTYgICAgMTMwMCAgICAgICs0Ci0KLVNpZ25lZC1vZmYtYnk6IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci0tLS0KLSBhcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfZ3VuemlwLmMgfCAxMSArKysrKysrLS0tLQotIHRlc3RzdWl0ZS91bnppcC50ZXN0cyAgICAgICAgICAgICAgICAgICB8IDIzICsrKysrKysrKysrKysrKysrKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX2d1bnppcC5jIGIvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX2d1bnppcC5jCi1pbmRleCA3YjZmNDU5Li4zMGJmNDUxIDEwMDY0NAotLS0tIGEvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX2d1bnppcC5jCi0rKysgYi9hcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfZ3VuemlwLmMKLUBAIC0zMDUsMTEgKzMwNSwxMiBAQCBzdGF0aWMgaW50IGh1ZnRfYnVpbGQoY29uc3QgdW5zaWduZWQgKmIsIGNvbnN0IHVuc2lnbmVkIG4sCi0gCXVuc2lnbmVkIGk7ICAgICAgICAgICAgIC8qIGNvdW50ZXIsIGN1cnJlbnQgY29kZSAqLwotIAl1bnNpZ25lZCBqOyAgICAgICAgICAgICAvKiBjb3VudGVyICovCi0gCWludCBrOyAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBiaXRzIGluIGN1cnJlbnQgY29kZSAqLwotLQl1bnNpZ25lZCAqcDsgICAgICAgICAgICAvKiBwb2ludGVyIGludG8gY1tdLCBiW10sIG9yIHZbXSAqLwotKwljb25zdCB1bnNpZ25lZCAqcDsgICAgICAvKiBwb2ludGVyIGludG8gY1tdLCBiW10sIG9yIHZbXSAqLwotIAlodWZ0X3QgKnE7ICAgICAgICAgICAgICAvKiBwb2ludHMgdG8gY3VycmVudCB0YWJsZSAqLwotIAlodWZ0X3QgcjsgICAgICAgICAgICAgICAvKiB0YWJsZSBlbnRyeSBmb3Igc3RydWN0dXJlIGFzc2lnbm1lbnQgKi8KLSAJaHVmdF90ICp1W0JNQVhdOyAgICAgICAgLyogdGFibGUgc3RhY2sgKi8KLSAJdW5zaWduZWQgdltOX01BWF07ICAgICAgLyogdmFsdWVzIGluIG9yZGVyIG9mIGJpdCBsZW5ndGggKi8KLSsJdW5zaWduZWQgdl9lbmQ7Ci0gCWludCB3c1tCTUFYICsgMV07ICAgICAgIC8qIGJpdHMgZGVjb2RlZCBzdGFjayAqLwotIAlpbnQgdzsgICAgICAgICAgICAgICAgICAvKiBiaXRzIGRlY29kZWQgKi8KLSAJdW5zaWduZWQgeFtCTUFYICsgMV07ICAgLyogYml0IG9mZnNldHMsIHRoZW4gY29kZSBzdGFjayAqLwotQEAgLTMyNCw3ICszMjUsNyBAQCBzdGF0aWMgaW50IGh1ZnRfYnVpbGQoY29uc3QgdW5zaWduZWQgKmIsIGNvbnN0IHVuc2lnbmVkIG4sCi0gCi0gCS8qIEdlbmVyYXRlIGNvdW50cyBmb3IgZWFjaCBiaXQgbGVuZ3RoICovCi0gCW1lbXNldChjLCAwLCBzaXplb2YoYykpOwotLQlwID0gKHVuc2lnbmVkICopIGI7IC8qIGNhc3QgYWxsb3dzIHVzIHRvIHJldXNlIHAgZm9yIHBvaW50aW5nIHRvIGIgKi8KLSsJcCA9IGI7Ci0gCWkgPSBuOwotIAlkbyB7Ci0gCQljWypwXSsrOyAvKiBhc3N1bWUgYWxsIGVudHJpZXMgPD0gQk1BWCAqLwotQEAgLTM2NSwxMiArMzY2LDE0IEBAIHN0YXRpYyBpbnQgaHVmdF9idWlsZChjb25zdCB1bnNpZ25lZCAqYiwgY29uc3QgdW5zaWduZWQgbiwKLSAJfQotIAotIAkvKiBNYWtlIGEgdGFibGUgb2YgdmFsdWVzIGluIG9yZGVyIG9mIGJpdCBsZW5ndGhzICovCi0tCXAgPSAodW5zaWduZWQgKikgYjsKLSsJcCA9IGI7Ci0gCWkgPSAwOwotKwl2X2VuZCA9IDA7Ci0gCWRvIHsKLSAJCWogPSAqcCsrOwotIAkJaWYgKGogIT0gMCkgewotIAkJCXZbeFtqXSsrXSA9IGk7Ci0rCQkJdl9lbmQgPSB4W2pdOwotIAkJfQotIAl9IHdoaWxlICgrK2kgPCBuKTsKLSAKLUBAIC00MzIsNyArNDM1LDcgQEAgc3RhdGljIGludCBodWZ0X2J1aWxkKGNvbnN0IHVuc2lnbmVkICpiLCBjb25zdCB1bnNpZ25lZCBuLAotIAotIAkJCS8qIHNldCB1cCB0YWJsZSBlbnRyeSBpbiByICovCi0gCQkJci5iID0gKHVuc2lnbmVkIGNoYXIpIChrIC0gdyk7Ci0tCQkJaWYgKHAgPj0gdiArIG4pIHsKLSsJCQlpZiAocCA+PSB2ICsgdl9lbmQpIHsgLy8gV2FzICJpZiAocCA+PSB2ICsgbikiIGJ1dCB2W10gY2FuIGJlIHNob3J0ZXIhCi0gCQkJCXIuZSA9IDk5OyAvKiBvdXQgb2YgdmFsdWVzLS1pbnZhbGlkIGNvZGUgKi8KLSAJCQl9IGVsc2UgaWYgKCpwIDwgcykgewotIAkJCQlyLmUgPSAodW5zaWduZWQgY2hhcikgKCpwIDwgMjU2ID8gMTYgOiAxNSk7CS8qIDI1NiBpcyBFT0IgY29kZSAqLwotZGlmZiAtLWdpdCBhL3Rlc3RzdWl0ZS91bnppcC50ZXN0cyBiL3Rlc3RzdWl0ZS91bnppcC50ZXN0cwotaW5kZXggODY3N2EwMy4uY2EwYTQ1OCAxMDA3NTUKLS0tLSBhL3Rlc3RzdWl0ZS91bnppcC50ZXN0cwotKysrIGIvdGVzdHN1aXRlL3VuemlwLnRlc3RzCi1AQCAtNyw3ICs3LDcgQEAKLSAKLSAuIC4vdGVzdGluZy5zaAotIAotLSMgdGVzdGluZyAidGVzdCBuYW1lIiAib3B0aW9ucyIgImV4cGVjdGVkIHJlc3VsdCIgImZpbGUgaW5wdXQiICJzdGRpbiIKLSsjIHRlc3RpbmcgInRlc3QgbmFtZSIgImNvbW1hbmRzIiAiZXhwZWN0ZWQgcmVzdWx0IiAiZmlsZSBpbnB1dCIgInN0ZGluIgotICMgICBmaWxlIGlucHV0IHdpbGwgYmUgZmlsZSBjYWxsZWQgImlucHV0IgotICMgICB0ZXN0IGNhbiBjcmVhdGUgYSBmaWxlICJhY3R1YWwiIGluc3RlYWQgb2Ygd3JpdGluZyB0byBzdGRvdXQKLSAKLUBAIC0zMCw2ICszMCwyNyBAQCB0ZXN0aW5nICJ1bnppcCAoc3ViZGlyIG9ubHkpIiAidW56aXAgLXEgZm9vLnppcCBmb28vICYmIHRlc3QgLWQgZm9vICYmIHRlc3QgISAtZgotIHJtZGlyIGZvbwotIHJtIGZvby56aXAKLSAKLSsjIEZpbGUgY29udGFpbmluZyBzb21lIGRhbWFnZWQgZW5jcnlwdGVkIHN0cmVhbQotK3Rlc3RpbmcgInVuemlwIChiYWQgYXJjaGl2ZSkiICJ1dWRlY29kZTsgdW56aXAgYmFkLnppcCAyPiYxOyBlY2hvIFwkPyIgXAotKyJBcmNoaXZlOiAgYmFkLnppcAotKyAgaW5mbGF0aW5nOiBdM2rCvXLCq0kbEkstJUl4Ci0rdW56aXA6IGluZmxhdGUgZXJyb3IKLSsxCi0rIiBcCi0rIiIgIlwKLStiZWdpbi1iYXNlNjQgNjQ0IGJhZC56aXAKLStVRXNEQkJRQUFna0lBQUFBSVFBNUFBQUFOd0FBQUR3QUFBQVFBQWNBWFROcXdyMXl3cXRKR3hKTExTVkoKLStlQ2tCRDBBZEtCazhKelFzSWowMUpDMC9PUkpRU3dNRUZBRUNDQUFBQUFBaEFEb0FBQUFQQUFBQU5nQUEKLStBQXdBQVFBU3c3M0N0MURDb2tvaFBYUWlOam9VTlRVaUhSd2dMVDRXSGxCTEFRSVFBQlFBQWdnSUFBQUEKLStvUUE1QUFBQU53QUFBRHdBQUFBUVFBY0FEQUFBQUN3QU1nQ0FBQUFBQUFCZE0yckN2WExDcTBrYkVrc3QKLStKVWw0S1FFUFFCMG9HU1k0Q3o0UU5nRW5KU1lJUFZCTEFRSUFBQlFBQWdnQUFBQUFJUUFxQUFBQUR3QUEKLStCRFlBQUFBTUFBRUFEUUFBQURJQURRQUFBRUVBQUFBU3c3M0N0MURLb2tvaFBYUWlOekErRkFJMUhDY1cKLStOeklUTkZCTEJRVUtBQzRKQUEwNEN3MEVPaFpRU3dVR0FRQUFCQUlBQWdDWkFBQUFlUUFBQUFJQUxoTT0KLSs9PT09Ci0rIgotKwotK3JtICoKLSsKLSAjIENsZWFuIHVwIHNjcmF0Y2ggZGlyZWN0b3J5LgotIAotIGNkIC4uCi0tLSAKLTIuNi4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC1DVkUtMjAxNy0xNjU0NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC1DVkUtMjAxNy0xNjU0NC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzE5ZWUzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LUNWRS0yMDE3LTE2NTQ0LnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gYzM3OTdkNDBhMWM1NzM1MjE5MmM2MTA2Y2MwZjQzNWU3ZDljMTFlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+CitEYXRlOiBUdWUsIDcgTm92IDIwMTcgMTg6MDk6MjkgKzAxMDAKK1N1YmplY3Q6IGxpbmVlZGl0OiBkbyBub3QgdGFiLWNvbXBsZXRlIGFueSBzdHJpbmdzIHdoaWNoIGhhdmUgY29udHJvbAorIGNoYXJhY3RlcnMKKworZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQgICAgIG5ldyAgIGRlbHRhCithZGRfbWF0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MSAgICAgIDY4ICAgICArMjcKKworQ1ZFOiBDVkUtMjAxNy0xNjU0NAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgorU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDx6aGl4aW9uZy5jaGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYmJiL2xpbmVlZGl0LmMgfCAxMiArKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGliYmIvbGluZWVkaXQuYyBiL2xpYmJiL2xpbmVlZGl0LmMKK2luZGV4IGMwZTM1YmIuLjU2ZTgxNDAgMTAwNjQ0CistLS0gYS9saWJiYi9saW5lZWRpdC5jCisrKysgYi9saWJiYi9saW5lZWRpdC5jCitAQCAtNjQ1LDYgKzY0NSwxOCBAQCBzdGF0aWMgdm9pZCBmcmVlX3RhYl9jb21wbGV0aW9uX2RhdGEodm9pZCkKKyAKKyBzdGF0aWMgdm9pZCBhZGRfbWF0Y2goY2hhciAqbWF0Y2hlZCkKKyB7CisrCXVuc2lnbmVkIGNoYXIgKnAgPSAodW5zaWduZWQgY2hhciopbWF0Y2hlZDsKKysJd2hpbGUgKCpwKSB7CisrCQkvKiBFU0MgYXR0YWNrIGZpeDogZHJvcCBhbnkgc3RyaW5nIHdpdGggY29udHJvbCBjaGFycyAqLworKwkJaWYgKCpwIDwgJyAnCisrCQkgfHwgKCFFTkFCTEVfVU5JQ09ERV9TVVBQT1JUICYmICpwID49IDB4N2YpCisrCQkgfHwgKEVOQUJMRV9VTklDT0RFX1NVUFBPUlQgJiYgKnAgPT0gMHg3ZikKKysJCSkgeworKwkJCWZyZWUobWF0Y2hlZCk7CisrCQkJcmV0dXJuOworKwkJfQorKwkJcCsrOworKwl9CisgCW1hdGNoZXMgPSB4cmVhbGxvY192ZWN0b3IobWF0Y2hlcywgNCwgbnVtX21hdGNoZXMpOworIAltYXRjaGVzW251bV9tYXRjaGVzXSA9IG1hdGNoZWQ7CisgCW51bV9tYXRjaGVzKys7CistLSAKK2NnaXQgdjAuMTIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC1jcm9zcy1tZW51Y29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LWNyb3NzLW1lbnVjb25maWcucGF0Y2gKaW5kZXggYmRhODY4NS4uNmZhY2EyMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LWNyb3NzLW1lbnVjb25maWcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LWNyb3NzLW1lbnVjb25maWcucGF0Y2gKQEAgLTMzLDcgKzMzLDcgQEAKICBzY3JpcHRzL2tjb25maWcvbHhkaWFsb2cvTWFrZWZpbGUgICAgICAgICAgfCAgICAyICstCiAgc2NyaXB0cy9rY29uZmlnL2x4ZGlhbG9nL2NoZWNrLWx4ZGlhbG9nLnNoIHwgICAgOCArKysrKysrKwogIDIgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KKyAKIC0tLSBhL3NjcmlwdHMva2NvbmZpZy9seGRpYWxvZy9jaGVjay1seGRpYWxvZy5zaAogKysrIGIvc2NyaXB0cy9rY29uZmlnL2x4ZGlhbG9nL2NoZWNrLWx4ZGlhbG9nLnNoCiBAQCAtNCw2ICs0LDEwIEBACkBAIC00NCwxMCArNDQsMTAgQEAKICsJCWVjaG8gIiRDUk9TU19DVVJTRVNfTElCIgogKwkJZXhpdAogKwlmaQotIAlmb3IgZXh0IGluIHNvIGEgZHlsaWIgOyBkbwotIAkJZm9yIGxpYiBpbiBuY3Vyc2VzdyBuY3Vyc2VzIGN1cnNlcyA7IGRvCi0gCQkJJGNjIC1wcmludC1maWxlLW5hbWU9bGliJHtsaWJ9LiR7ZXh0fSB8IGdyZXAgLXEgLwotQEAgLTE5LDYgKzIzLDEwIEBAIGxkZmxhZ3MoKQorIAlwa2ctY29uZmlnIC0tbGlicyBuY3Vyc2VzdyAyPi9kZXYvbnVsbCAmJiBleGl0CisgCXBrZy1jb25maWcgLS1saWJzIG5jdXJzZXMgMj4vZGV2L251bGwgJiYgZXhpdAorIAlmb3IgZXh0IGluIHNvIGEgZGxsLmEgZHlsaWIgOyBkbworQEAgLTIxLDYgKzI1LDEwIEBACiAgIyBXaGVyZSBpcyBuY3Vyc2VzLmg/CiAgY2NmbGFncygpCiAgewpAQCAtNTUsMTIgKzU1LDEyIEBACiArCQllY2hvICIkQ1JPU1NfQ1VSU0VTX0lOQyIKICsJCWV4aXQKICsJZmkKLSAJaWYgWyAtZiAvdXNyL2luY2x1ZGUvbmN1cnNlc3cvbmN1cnNlcy5oIF07IHRoZW4KLSAJCWVjaG8gJy1JL3Vzci9pbmNsdWRlL25jdXJzZXN3IC1EQ1VSU0VTX0xPQz0iPG5jdXJzZXMuaD4iJwotIAllbGlmIFsgLWYgL3Vzci9pbmNsdWRlL25jdXJzZXN3L2N1cnNlcy5oIF07IHRoZW4KKyAJaWYgcGtnLWNvbmZpZyAtLWNmbGFncyBuY3Vyc2VzdyAyPi9kZXYvbnVsbDsgdGhlbgorIAkJZWNobyAnLURDVVJTRVNfTE9DPSI8bmN1cnNlcy5oPiIgLUROQ1VSU0VTX1dJREVDSEFSPTEnCisgCWVsaWYgcGtnLWNvbmZpZyAtLWNmbGFncyBuY3Vyc2VzIDI+L2Rldi9udWxsOyB0aGVuCiAtLS0gYS9zY3JpcHRzL2tjb25maWcvbHhkaWFsb2cvTWFrZWZpbGUKICsrKyBiL3NjcmlwdHMva2NvbmZpZy9seGRpYWxvZy9NYWtlZmlsZQotQEAgLTUsNyArNSw3IEBAIGNoZWNrLWx4ZGlhbG9nICA6PSAkKHNyY3RyZWUpLyQoc3JjKS9jaGUKK0BAIC01LDcgKzUsNyBAQAogIAogICMgVXNlIHJldXJzaXZlbHkgZXhwYW5kZWQgdmFyaWFibGVzIHNvIHdlIGRvIG5vdCBjYWxsIGdjYyB1bmxlc3MKICAjIHdlIHJlYWxseSBuZWVkIHRvIGRvIHNvLiAoRG8gbm90IGNhbGwgZ2NjIGFzIHBhcnQgb2YgbWFrZSBtcnByb3BlcikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC1rYnVpbGQtcmFjZS1maXgtY29tbWl0LWQ4ZTYxYmIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gta2J1aWxkLXJhY2UtZml4LWNvbW1pdC1kOGU2MWJiLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODMwMmUwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC1rYnVpbGQtcmFjZS1maXgtY29tbWl0LWQ4ZTYxYmIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVBhdGNoIGFkZHJlc3NpbmcgYSBwYXJhbGxlbCBtYWtlIHJhY2UgaW4gQnVzeWJveAotCi0gIGh0dHA6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPWQ4ZTYxYmJmMTNkMGNmMzhkNDc3MjU1Y2ZkNWRjNzFjNWQ1MWQ1NzUKLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotRnJvbSBkOGU2MWJiZjEzZDBjZjM4ZDQ3NzI1NWNmZDVkYzcxYzVkNTFkNTc1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLURhdGU6IFN1biwgMjEgQXVnIDIwMTYgMjI6MDA6MjAgKzAyMDAKLVN1YmplY3Q6IGJ1aWxkIHN5c3RlbTogZGlmZmVyZW50IGZpeCBmb3IKLSBpbmNsdWRlL2FwcGxldF90YWJsZXMuaC9pbmNsdWRlL05VTV9BUFBMRVRTLmgKLQotU2lnbmVkLW9mZi1ieTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLQotZGlmZiAtLWdpdCBhL2FwcGxldHMvS2J1aWxkLnNyYyBiL2FwcGxldHMvS2J1aWxkLnNyYwotaW5kZXggNWNjMTgyNy4uM2FlZGJiZiAxMDA2NDQKLS0tLSBhL2FwcGxldHMvS2J1aWxkLnNyYwotKysrIGIvYXBwbGV0cy9LYnVpbGQuc3JjCi1AQCAtMjksNyArMjksNyBAQCBhcHBsZXRzL2FwcGxldHMubzogaW5jbHVkZS91c2FnZV9jb21wcmVzc2VkLmggaW5jbHVkZS9hcHBsZXRfdGFibGVzLmgKLSAKLSBhcHBsZXRzL2FwcGxldF90YWJsZXM6IC5jb25maWcgaW5jbHVkZS9hcHBsZXRzLmgKLSBhcHBsZXRzL3VzYWdlOiAgICAgICAgIC5jb25maWcgaW5jbHVkZS9hcHBsZXRzLmgKLS1hcHBsZXRzL3VzYWdlX3BvZDogICAgIC5jb25maWcgaW5jbHVkZS9hcHBsZXRzLmggaW5jbHVkZS9hcHBsZXRfdGFibGVzLmggaW5jbHVkZS9OVU1fQVBQTEVUUy5oCi0rYXBwbGV0cy91c2FnZV9wb2Q6ICAgICAuY29uZmlnIGluY2x1ZGUvYXBwbGV0cy5oIGluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oCi0gCi0gcXVpZXRfY21kX2dlbl91c2FnZV9jb21wcmVzc2VkID0gR0VOICAgICBpbmNsdWRlL3VzYWdlX2NvbXByZXNzZWQuaAotICAgICAgIGNtZF9nZW5fdXNhZ2VfY29tcHJlc3NlZCA9ICQoc3JjdHJlZV9zbGFzaClhcHBsZXRzL3VzYWdlX2NvbXByZXNzZWQgaW5jbHVkZS91c2FnZV9jb21wcmVzc2VkLmggYXBwbGV0cwotQEAgLTM3LDggKzM3LDIxIEBAIHF1aWV0X2NtZF9nZW5fdXNhZ2VfY29tcHJlc3NlZCA9IEdFTiAgICAgaW5jbHVkZS91c2FnZV9jb21wcmVzc2VkLmgKLSBpbmNsdWRlL3VzYWdlX2NvbXByZXNzZWQuaDogYXBwbGV0cy91c2FnZSAkKHNyY3RyZWVfc2xhc2gpYXBwbGV0cy91c2FnZV9jb21wcmVzc2VkCi0gCSQoY2FsbCBjbWQsZ2VuX3VzYWdlX2NvbXByZXNzZWQpCi0gCi0tcXVpZXRfY21kX2dlbl9hcHBsZXRfdGFibGVzID0gR0VOICAgICBpbmNsdWRlL2FwcGxldF90YWJsZXMuaAotK3F1aWV0X2NtZF9nZW5fYXBwbGV0X3RhYmxlcyA9IEdFTiAgICAgaW5jbHVkZS9hcHBsZXRfdGFibGVzLmggaW5jbHVkZS9OVU1fQVBQTEVUUy5oCi0gICAgICAgY21kX2dlbl9hcHBsZXRfdGFibGVzID0gYXBwbGV0cy9hcHBsZXRfdGFibGVzIGluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oIGluY2x1ZGUvTlVNX0FQUExFVFMuaAotIAotLWluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oIGluY2x1ZGUvTlVNX0FQUExFVFMuaDogYXBwbGV0cy9hcHBsZXRfdGFibGVzCi0raW5jbHVkZS9OVU1fQVBQTEVUUy5oOiBhcHBsZXRzL2FwcGxldF90YWJsZXMKLSsJJChjYWxsIGNtZCxnZW5fYXBwbGV0X3RhYmxlcykKLSsKLSsjIEluIGZhY3QsIGluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oIGRlcGVuZHMgb25seSBvbiBhcHBsZXRzL2FwcGxldF90YWJsZXMsCi0rIyBhbmQgaXMgZ2VuZXJhdGVkIGJ5IGl0LiBCdXQgc3BlY2lmeWluZyBvbmx5IGl0IGNhbiBydW4KLSsjIGFwcGxldHMvYXBwbGV0X3RhYmxlcyB0d2ljZSwgcG9zc2libHkgaW4gcGFyYWxsZWwuCi0rIyBXZSBzYXkgdGhhdCBpdCBhbHNvIG5lZWRzIE5VTV9BUFBMRVRTLmgKLSsjCi0rIyBVbmZvcnR1bmF0ZWx5LCB3ZSBuZWVkIHRvIGxpc3QgdGhlIHNhbWUgY29tbWFuZCwKLSsjIGFuZCBpdCBjYW4gYmUgZXhlY3V0ZWQgdHdpY2UgKHNlcXVlbnRpYWxseSkuCi0rIyBUaGUgYWx0ZXJuYXRpdmUgaXMgdG8gbm90IGxpc3QgYW55IGNvbW1hbmQsCi0rIyBhbmQgdGhlbiBpZiBpbmNsdWRlL2FwcGxldF90YWJsZXMuaCBpcyBkZWxldGVkLCBpdCB3b24ndCBiZSByZWJ1aWx0LgotKyMKLStpbmNsdWRlL2FwcGxldF90YWJsZXMuaDogaW5jbHVkZS9OVU1fQVBQTEVUUy5oIGFwcGxldHMvYXBwbGV0X3RhYmxlcwotIAkkKGNhbGwgY21kLGdlbl9hcHBsZXRfdGFibGVzKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LXRhci1hZGQtSUZfRkVBVFVSRV8tY2hlY2tzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LXRhci1hZGQtSUZfRkVBVFVSRV8tY2hlY2tzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzNjOWMwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC10YXItYWRkLUlGX0ZFQVRVUkVfLWNoZWNrcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLUZyb20gZjk0NDEyZjZiYjQ5MTM2Njk0YzU0NzhkMGFlY2IxOTExOGQxYjA4ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pbmcgTGl1IDxwZXRlci54LmxpdUBleHRlcm5hbC5hdGxhc2NvcGNvLmNvbT4KLURhdGU6IFdlZCwgMzEgTWF5IDIwMTcgMTE6NDg6MDkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gdGFyOiBhZGQgSUZfRkVBVFVSRV8qIGNoZWNrcwotCi1BIGZvbGxvd2luZyBsaW5raW5nIGVycm9yIHdhcyBvYnNlcnZlZDoKLXwgPT09PT09PT09PQotfCBhcmNoaXZhbC9saWIuYSh0YXIubyk6IEluIGZ1bmN0aW9uIGB0YXJfbWFpbic6Ci18IGFyY2hpdmFsL3Rhci5jOjExNjg6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHVucGFja19aX3N0cmVhbScKLXwgYXJjaGl2YWwvdGFyLmM6MTE2ODogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgdW5wYWNrX1pfc3RyZWFtJwotfCBsZDogYnVzeWJveF91bnN0cmlwcGVkOiBoaWRkZW4gc3ltYm9sIGB1bnBhY2tfWl9zdHJlYW0nIGlzbid0IGRlZmluZWQKLXwgbGQ6IGZpbmFsIGxpbmsgZmFpbGVkOiBCYWQgdmFsdWUKLQotdGhpcyBoYXBwZW5lZCB3aXRoIGNsYW5nIGNvbXBpbGVyLCB3aXRoIHRoZSBmb2xsb3dpbmcgY29uZmlnczoKLXwgQ09ORklHX1RBUj15Ci18ICMgQ09ORklHX0ZFQVRVUkVfU0VBTUxFU1NfWiBpcyBub3Qgc2V0Ci0KLXdoaWNoIGNhbiBiZSBmaXhlZCBieSBhZGRpbmcgSUZfRkVBVFVSRV8qIGNoZWNrcyBpbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFsgU2VudCB0byBidXN5Ym94IHVwc3RyZWFtIG9uIDIwMTctMDYtMDIgXQotCi1TaWduZWQtb2ZmLWJ5OiBNaW5nIExpdSA8cGV0ZXIueC5saXVAZXh0ZXJuYWwuYXRsYXNjb3Bjby5jb20+Ci0tLS0KLSBhcmNoaXZhbC90YXIuYyB8IDI1ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9hcmNoaXZhbC90YXIuYyBiL2FyY2hpdmFsL3Rhci5jCi1pbmRleCBiNzBlMDBhLi43NTk4YjcxIDEwMDY0NAotLS0tIGEvYXJjaGl2YWwvdGFyLmMKLSsrKyBiL2FyY2hpdmFsL3Rhci5jCi1AQCAtMTIxNiwyMSArMTIxNiwyNiBAQCBpbnQgdGFyX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaGFyICoqYXJndikKLSAJCVVTRV9GT1JfTU1VKElGX0RFU0tUT1AobG9uZyBsb25nKSBpbnQgRkFTVF9GVU5DICgqeGZvcm1lcikodHJhbnNmb3JtZXJfc3RhdGVfdCAqeHN0YXRlKTspCi0gCQlVU0VfRk9SX05PTU1VKGNvbnN0IGNoYXIgKnhmb3JtZXJfcHJvZzspCi0gCi0tCQlpZiAob3B0ICYgT1BUX0NPTVBSRVNTKQotLQkJCVVTRV9GT1JfTU1VKHhmb3JtZXIgPSB1bnBhY2tfWl9zdHJlYW07KQotKwkJaWYgKG9wdCAmIE9QVF9DT01QUkVTUykgewotKwkJCVVTRV9GT1JfTU1VKElGX0ZFQVRVUkVfU0VBTUxFU1NfWih4Zm9ybWVyID0gdW5wYWNrX1pfc3RyZWFtOykpCi0gCQkJVVNFX0ZPUl9OT01NVSh4Zm9ybWVyX3Byb2cgPSAidW5jb21wcmVzcyI7KQotLQkJaWYgKG9wdCAmIE9QVF9HWklQKQotLQkJCVVTRV9GT1JfTU1VKHhmb3JtZXIgPSB1bnBhY2tfZ3pfc3RyZWFtOykKLSsJCX0KLSsJCWlmIChvcHQgJiBPUFRfR1pJUCkgewotKwkJCVVTRV9GT1JfTU1VKElGX0ZFQVRVUkVfU0VBTUxFU1NfR1ooeGZvcm1lciA9IHVucGFja19nel9zdHJlYW07KSkKLSAJCQlVU0VfRk9SX05PTU1VKHhmb3JtZXJfcHJvZyA9ICJndW56aXAiOykKLS0JCWlmIChvcHQgJiBPUFRfQlpJUDIpCi0tCQkJVVNFX0ZPUl9NTVUoeGZvcm1lciA9IHVucGFja19iejJfc3RyZWFtOykKLSsJCX0KLSsJCWlmIChvcHQgJiBPUFRfQlpJUDIpIHsKLSsJCQlVU0VfRk9SX01NVShJRl9GRUFUVVJFX1NFQU1MRVNTX0JaMih4Zm9ybWVyID0gdW5wYWNrX2J6Ml9zdHJlYW07KSkKLSAJCQlVU0VfRk9SX05PTU1VKHhmb3JtZXJfcHJvZyA9ICJidW56aXAyIjspCi0tCQlpZiAob3B0ICYgT1BUX0xaTUEpCi0tCQkJVVNFX0ZPUl9NTVUoeGZvcm1lciA9IHVucGFja19sem1hX3N0cmVhbTspCi0rCQl9Ci0rCQlpZiAob3B0ICYgT1BUX0xaTUEpIHsKLSsJCQlVU0VfRk9SX01NVShJRl9GRUFUVVJFX1NFQU1MRVNTX0xaTUEoeGZvcm1lciA9IHVucGFja19sem1hX3N0cmVhbTspKQotIAkJCVVTRV9GT1JfTk9NTVUoeGZvcm1lcl9wcm9nID0gInVubHptYSI7KQotLQkJaWYgKG9wdCAmIE9QVF9YWikKLS0JCQlVU0VfRk9SX01NVSh4Zm9ybWVyID0gdW5wYWNrX3h6X3N0cmVhbTspCi0rCQl9Ci0rCQlpZiAob3B0ICYgT1BUX1haKSB7Ci0rCQkJVVNFX0ZPUl9NTVUoSUZfRkVBVFVSRV9TRUFNTEVTU19YWih4Zm9ybWVyID0gdW5wYWNrX3h6X3N0cmVhbTspKQotIAkJCVVTRV9GT1JfTk9NTVUoeGZvcm1lcl9wcm9nID0gInVueHoiOykKLSsJCX0KLSAKLSAJCWZvcmtfdHJhbnNmb3JtZXJfd2l0aF9zaWcodGFyX2hhbmRsZS0+c3JjX2ZkLCB4Zm9ybWVyLCB4Zm9ybWVyX3Byb2cpOwotIAkJLyogQ2FuJ3QgbHNlZWsgb3ZlciBwaXBlcyAqLwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtdWRoY3BjLW5vX2RlY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LXVkaGNwYy1ub19kZWNvbmZpZy5wYXRjaAppbmRleCA0YzljZTNiLi41ODJhMjU4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtdWRoY3BjLW5vX2RlY29uZmlnLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC11ZGhjcGMtbm9fZGVjb25maWcucGF0Y2gKQEAgLTI4LDI0ICsyOCwyMyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE9iZXJyaXR0ZXIgPG9iaUBvcGVuZHJlYW1ib3gub3JnPgogLS0tCi0gbmV0d29ya2luZy91ZGhjcC9kaGNwYy5jIHwgICAyOSArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQotIDEgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKyBuZXR3b3JraW5nL3VkaGNwL2RoY3BjLmMgICAgICAgICAgICAgICAgICAgICAgIHwgMjkgKysrKysrKysrKysrKysrKy0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQogCi1JbmRleDogYnVzeWJveC0xLjIwLjIvbmV0d29ya2luZy91ZGhjcC9kaGNwYy5jCitJbmRleDogYnVzeWJveC0xLjI3LjIvbmV0d29ya2luZy91ZGhjcC9kaGNwYy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYnVzeWJveC0xLjIwLjIub3JpZy9uZXR3b3JraW5nL3VkaGNwL2RoY3BjLmMKLSsrKyBidXN5Ym94LTEuMjAuMi9uZXR3b3JraW5nL3VkaGNwL2RoY3BjLmMKLUBAIC0yOSw2ICsyOSw5IEBACi0gI2luY2x1ZGUgPG5ldHBhY2tldC9wYWNrZXQuaD4KLSAjaW5jbHVkZSA8bGludXgvZmlsdGVyLmg+CistLS0gYnVzeWJveC0xLjI3LjIub3JpZy9uZXR3b3JraW5nL3VkaGNwL2RoY3BjLmMKKysrKyBidXN5Ym94LTEuMjcuMi9uZXR3b3JraW5nL3VkaGNwL2RoY3BjLmMKK0BAIC00OSw2ICs0OSw4IEBAIHN0cnVjdCB0cGFja2V0X2F1eGRhdGEgeworIH07CisgI2VuZGlmCiAgCiArLyogb3B0aW9uIHdoZXRoZXIgdG8gZG93biB0aGUgaW50ZXJmYWNlIHdoZW4gcmVjb25maWd1cmluZyAqLwogK3N0YXRpYyBpbnQgYWxsb3dfZGVjb25maWcgPSAxOwotKworIAogIC8qICJzdHJ1Y3QgY2xpZW50X2NvbmZpZ190IGNsaWVudF9jb25maWciIGlzIGluIGJiX2NvbW1vbl9idWZzaXoxICovCiAgCi0gCi1AQCAtODEsOCArODQsOSBAQCBlbnVtIHsKK0BAIC0xMDQsOCArMTA2LDkgQEAgZW51bSB7CiAgCU9QVF94ID0gMSA8PCAxOCwKICAJT1BUX2YgPSAxIDw8IDE5LAogIAlPUFRfQiA9IDEgPDwgMjAsCkBAIC01Niw3ICs1NSw3IEBACiAgCVVTRV9GT1JfTU1VKCAgICAgICAgICAgICBPUFRCSVRfYiwpCiAgCUlGX0ZFQVRVUkVfVURIQ1BDX0FSUElORyhPUFRCSVRfYSwpCiAgCUlGX0ZFQVRVUkVfVURIQ1BfUE9SVCggICBPUFRCSVRfUCwpCi1AQCAtMTA0MCw3ICsxMDQ0LDggQEAgc3RhdGljIHZvaWQgcGVyZm9ybV9yZW5ldyh2b2lkKQorQEAgLTExMTAsNyArMTExMyw4IEBAIHN0YXRpYyB2b2lkIHBlcmZvcm1fcmVuZXcodm9pZCkKICAJCXN0YXRlID0gUkVORVdfUkVRVUVTVEVEOwogIAkJYnJlYWs7CiAgCWNhc2UgUkVORVdfUkVRVUVTVEVEOiAvKiBpbXBhdGllbnQgYXJlIHdlPyBmaW5lLCBzcXVhcmUgMSAqLwpAQCAtNjYsMzYgKzY1LDM3IEBACiAgCWNhc2UgUkVRVUVTVElORzoKICAJY2FzZSBSRUxFQVNFRDoKICAJCWNoYW5nZV9saXN0ZW5fbW9kZShMSVNURU5fUkFXKTsKLUBAIC0xMDY0LDcgKzEwNjksOCBAQCBzdGF0aWMgdm9pZCBwZXJmb3JtX3JlbGVhc2UodWludDMyX3Qgc2VyCi0gCQliYl9pbmZvX21zZygiVW5pY2FzdGluZyBhIHJlbGVhc2Ugb2YgJXMgdG8gJXMiLAotIAkJCQlpbmV0X250b2EodGVtcF9hZGRyKSwgYnVmZmVyKTsKLSAJCXNlbmRfcmVsZWFzZShzZXJ2ZXJfYWRkciwgcmVxdWVzdGVkX2lwKTsgLyogdW5pY2FzdCAqLwotLQkJdWRoY3BfcnVuX3NjcmlwdChOVUxMLCAiZGVjb25maWciKTsKLSsJCWlmIChhbGxvd19kZWNvbmZpZykKLSsJCQl1ZGhjcF9ydW5fc2NyaXB0KE5VTEwsICJkZWNvbmZpZyIpOwotIAl9Ci0gCWJiX2luZm9fbXNnKCJFbnRlcmluZyByZWxlYXNlZCBzdGF0ZSIpOworQEAgLTExNDYsNyArMTE1MCw4IEBAIHN0YXRpYyB2b2lkIHBlcmZvcm1fcmVsZWFzZSh1aW50MzJfdCBzZXJ2ZXJfYWRkciwgdWludDMyX3QgcmVxdWVzdGVkX2lwKQorICAqIFVzZXJzIHJlcXVlc3RlZCB0byBiZSBub3RpZmllZCBpbiBhbGwgY2FzZXMsIGV2ZW4gaWYgbm90IGluIG9uZQorICAqIG9mIHRoZSBzdGF0ZXMgYWJvdmUuCisgICovCistCXVkaGNwX3J1bl9zY3JpcHQoTlVMTCwgImRlY29uZmlnIik7CisrCWlmIChhbGxvd19kZWNvbmZpZykKKysJCXVkaGNwX3J1bl9zY3JpcHQoTlVMTCwgImRlY29uZmlnIik7CiAgCi1AQCAtMTIxNSw3ICsxMjIxLDcgQEAgaW50IHVkaGNwY19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgYworIAljaGFuZ2VfbGlzdGVuX21vZGUoTElTVEVOX05PTkUpOworIAlzdGF0ZSA9IFJFTEVBU0VEOworQEAgLTEyOTgsNyArMTMwMyw3IEBAIGludCB1ZGhjcGNfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYXIgKiphcmd2KQogIAkvKiBPLHg6IGxpc3Q7IC1ULC10LC1BIHRha2UgbnVtZXJpYyBwYXJhbSAqLwotIAlvcHRfY29tcGxlbWVudGFyeSA9ICJPOjp4OjpUKzp0KzpBKyIgSUZfVURIQ1BfVkVSQk9TRSgiOnZ2IikgOworIAlJRl9VREhDUF9WRVJCT1NFKG9wdF9jb21wbGVtZW50YXJ5ID0gInZ2IjspCiAgCUlGX0xPTkdfT1BUUyhhcHBsZXRfbG9uZ19vcHRpb25zID0gdWRoY3BjX2xvbmdvcHRzOykKLS0Jb3B0ID0gZ2V0b3B0MzIoYXJndiwgIkNWOkg6aDpGOmk6bnA6cVJyOnM6VDp0OlNBOk86b3g6ZkIiCi0rCW9wdCA9IGdldG9wdDMyKGFyZ3YsICJDVjpIOmg6RjppOm5wOnFScjpzOlQ6dDpTQTpPOm94OmZCRCIKKy0Jb3B0ID0gZ2V0b3B0MzIoYXJndiwgIkNWOkg6aDpGOmk6bnA6cVJyOnM6VDordDorU0E6K086Km94OipmQiIKKysJb3B0ID0gZ2V0b3B0MzIoYXJndiwgIkNWOkg6aDpGOmk6bnA6cVJyOnM6VDordDorU0E6K086Km94OipmQkQiCiAgCQlVU0VfRk9SX01NVSgiYiIpCi0gCQlJRl9GRUFUVVJFX1VESENQQ19BUlBJTkcoImEiKQorIAkJSUZfRkVBVFVSRV9VREhDUENfQVJQSU5HKCJhOjoiKQogIAkJSUZfRkVBVFVSRV9VREhDUF9QT1JUKCJQOiIpCi1AQCAtMTMxNiw2ICsxMzIyLDkgQEAgaW50IHVkaGNwY19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgYworQEAgLTE0MDksNiArMTQxNCwxMCBAQCBpbnQgdWRoY3BjX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaGFyICoqYXJndikKICAJCWxvZ21vZGUgfD0gTE9HTU9ERV9TWVNMT0c7CiAgCX0KICAKLSsJaWYgKG9wdCAmIE9QVF9EKQorKwlpZiAob3B0ICYgT1BUX0QpIHsKICsJCWFsbG93X2RlY29uZmlnID0gMDsKKysJfQogKwogIAkvKiBNYWtlIHN1cmUgZmQgMCwxLDIgYXJlIG9wZW4gKi8KICAJYmJfc2FuaXRpemVfc3RkaW8oKTsKICAJLyogRXF1aXZhbGVudCBvZiBkb2luZyBhIGZmbHVzaCBhZnRlciBldmVyeSBcbiAqLwotQEAgLTEzMzAsNyArMTMzOSw4IEBAIGludCB1ZGhjcGNfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGMKK0BAIC0xNDIzLDcgKzE0MzIsOCBAQCBpbnQgdWRoY3BjX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaGFyICoqYXJndikKICAJc3JhbmQobW9ub3RvbmljX3VzKCkpOwogIAogIAlzdGF0ZSA9IElOSVRfU0VMRUNUSU5HOwpAQCAtMTA1LDE3ICsxMDUsMTcgQEAKICAJY2hhbmdlX2xpc3Rlbl9tb2RlKExJU1RFTl9SQVcpOwogIAlwYWNrZXRfbnVtID0gMDsKICAJdGltZW91dCA9IDA7Ci1AQCAtMTQ4NCw3ICsxNDk0LDggQEAgaW50IHVkaGNwY19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgYworQEAgLTE1NzcsNyArMTU4Nyw4IEBAIGludCB1ZGhjcGNfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYXIgKiphcmd2KQogIAkJCQl9CiAgCQkJCS8qIFRpbWVkIG91dCwgZW50ZXIgaW5pdCBzdGF0ZSAqLwotIAkJCQliYl9pbmZvX21zZygiTGVhc2UgbG9zdCwgZW50ZXJpbmcgaW5pdCBzdGF0ZSIpOworIAkJCQliYl9lcnJvcl9tc2coImxlYXNlIGxvc3QsIGVudGVyaW5nIGluaXQgc3RhdGUiKTsKIC0JCQkJdWRoY3BfcnVuX3NjcmlwdChOVUxMLCAiZGVjb25maWciKTsKICsJCQkJaWYgKGFsbG93X2RlY29uZmlnKQogKwkJCQkJdWRoY3BfcnVuX3NjcmlwdChOVUxMLCAiZGVjb25maWciKTsKICAJCQkJc3RhdGUgPSBJTklUX1NFTEVDVElORzsKICAJCQkJY2xpZW50X2NvbmZpZy5maXJzdF9zZWNzID0gMDsgLyogbWFrZSBzZWNzIGZpZWxkIGNvdW50IGZyb20gMCAqLwogIAkJCQkvKnRpbWVvdXQgPSAwOyAtIGFscmVhZHkgaXMgKi8KLUBAIC0xNjY3LDcgKzE2NzgsOCBAQCBpbnQgdWRoY3BjX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjCitAQCAtMTc3MCw3ICsxNzgxLDggQEAgaW50IHVkaGNwY19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhciAqKmFyZ3YpCiAgCQkJCQkJc2VuZF9kZWNsaW5lKC8qeGlkLCovIHNlcnZlcl9hZGRyLCBwYWNrZXQueWlhZGRyKTsKICAKICAJCQkJCQlpZiAoc3RhdGUgIT0gUkVRVUVTVElORykKQEAgLTEyNSw4ICsxMjUsOCBAQAogIAkJCQkJCWNoYW5nZV9saXN0ZW5fbW9kZShMSVNURU5fUkFXKTsKICAJCQkJCQlzdGF0ZSA9IElOSVRfU0VMRUNUSU5HOwogIAkJCQkJCWNsaWVudF9jb25maWcuZmlyc3Rfc2VjcyA9IDA7IC8qIG1ha2Ugc2VjcyBmaWVsZCBjb3VudCBmcm9tIDAgKi8KLUBAIC0xNzExLDcgKzE3MjMsOCBAQCBpbnQgdWRoY3BjX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjCi0gCQkJCWJiX2luZm9fbXNnKCJSZWNlaXZlZCBESENQIE5BSyIpOworQEAgLTE4NDAsNyArMTg1Miw4IEBAIGludCB1ZGhjcGNfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYXIgKiphcmd2KQorIAkJCQliYl9lcnJvcl9tc2coInJlY2VpdmVkICVzIiwgIkRIQ1AgTkFLIik7CiAgCQkJCXVkaGNwX3J1bl9zY3JpcHQoJnBhY2tldCwgIm5hayIpOwogIAkJCQlpZiAoc3RhdGUgIT0gUkVRVUVTVElORykKIC0JCQkJCXVkaGNwX3J1bl9zY3JpcHQoTlVMTCwgImRlY29uZmlnIik7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2NvbW1pdC1hcHBsZXRfdGFibGVzLWZpeC1jb21taXQtMGRkZGJjMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvY29tbWl0LWFwcGxldF90YWJsZXMtZml4LWNvbW1pdC0wZGRkYmMxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjgwYTFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvY29tbWl0LWFwcGxldF90YWJsZXMtZml4LWNvbW1pdC0wZGRkYmMxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1QYXRjaCBhZGRyZXNzaW5nIGEgcGFyYWxsZWwgbWFrZSByYWNlIGluIEJ1c3lib3gKLQotICBodHRwOi8vZ2l0LmJ1c3lib3gubmV0L2J1c3lib3gvY29tbWl0Lz9pZD0wZGRkYmMxYTU5Nzk1YTc3Njc5ZDhjNWVmNDhhMjc5NWNiNDcwNTYzCi0KLVNpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+Ci0KLUZyb20gMGRkZGJjMWE1OTc5NWE3NzY3OWQ4YzVlZjQ4YTI3OTVjYjQ3MDU2MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDIzIEF1ZyAyMDE2IDIwOjIxOjM2ICswMjAwCi1TdWJqZWN0OiBidWlsZCBzeXN0ZW06IGFsd2F5cyByZXdyaXRlIE5VTV9BUFBMRVRTLmgKLQotQ29uZGl0aW9uYWwgcmV3cml0ZSBjYW4ga2VlcCBOVU1fQVBQTEVUUy5oIG10aW1lIG9sZCwKLXRoaXMgY2F1c2VzIG1ha2UgdG8gdHJ5IHRvIHJlZ2VuZXJhdGUgaXQgYXQgZXZlcnkgaW52b2NhdGlvbi4KLQotU2lnbmVkLW9mZi1ieTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLQotZGlmZiAtLWdpdCBhL2FwcGxldHMvYXBwbGV0X3RhYmxlcy5jIGIvYXBwbGV0cy9hcHBsZXRfdGFibGVzLmMKLWluZGV4IDg0MDFhMTUuLmVmOTExYTQgMTAwNjQ0Ci0tLS0gYS9hcHBsZXRzL2FwcGxldF90YWJsZXMuYwotKysrIGIvYXBwbGV0cy9hcHBsZXRfdGFibGVzLmMKLUBAIC0xOTIsMjcgKzE5MiwyOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCXByaW50ZigifTtcbiIpOwotICNlbmRpZgotIAkvL3ByaW50ZigiI2VuZGlmIC8qIFNLSVBfZGVmaW5pdGlvbnMgKi9cbiIpOwotKwotIC8vCXByaW50ZigiXG4iKTsKLSAvLwlwcmludGYoIiNkZWZpbmUgTUFYX0FQUExFVF9OQU1FX0xFTiAldVxuIiwgTUFYX0FQUExFVF9OQU1FX0xFTik7Ci0gCi0gCWlmIChhcmd2WzJdKSB7Ci0tCQljaGFyIGxpbmVfb2xkWzgwXTsKLS0JCWNoYXIgbGluZV9uZXdbODBdOwotIAkJRklMRSAqZnA7Ci0rCQljaGFyIGxpbmVfbmV3WzgwXTsKLSsvLwkJY2hhciBsaW5lX29sZFs4MF07Ci0gCi0tCQlsaW5lX29sZFswXSA9IDA7Ci0tCQlmcCA9IGZvcGVuKGFyZ3ZbMl0sICJyIik7Ci0tCQlpZiAoZnApIHsKLS0JCQlmZ2V0cyhsaW5lX29sZCwgc2l6ZW9mKGxpbmVfb2xkKSwgZnApOwotLQkJCWZjbG9zZShmcCk7Ci0tCQl9Ci0gCQlzcHJpbnRmKGxpbmVfbmV3LCAiI2RlZmluZSBOVU1fQVBQTEVUUyAldVxuIiwgTlVNX0FQUExFVFMpOwotLQkJaWYgKHN0cmNtcChsaW5lX29sZCwgbGluZV9uZXcpICE9IDApIHsKLSsvLwkJbGluZV9vbGRbMF0gPSAwOwotKy8vCQlmcCA9IGZvcGVuKGFyZ3ZbMl0sICJyIik7Ci0rLy8JCWlmIChmcCkgewotKy8vCQkJZmdldHMobGluZV9vbGQsIHNpemVvZihsaW5lX29sZCksIGZwKTsKLSsvLwkJCWZjbG9zZShmcCk7Ci0rLy8JCX0KLSsvLwkJaWYgKHN0cmNtcChsaW5lX29sZCwgbGluZV9uZXcpICE9IDApIHsKLSAJCQlmcCA9IGZvcGVuKGFyZ3ZbMl0sICJ3Iik7Ci0gCQkJaWYgKCFmcCkKLSAJCQkJcmV0dXJuIDE7Ci0gCQkJZnB1dHMobGluZV9uZXcsIGZwKTsKLS0JCX0KLSsvLwkJfQotIAl9Ci0gCi0gCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9kZWZjb25maWcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2RlZmNvbmZpZwppbmRleCBjYzY4YmVhLi5mYmI1ZmQ4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2RlZmNvbmZpZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2RlZmNvbmZpZwpAQCAtMSw0MyArMSwyNSBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBCdXN5Ym94IHZlcnNpb246IDEuMjQuMQotIyBUdWUgT2N0IDMxIDExOjAwOjAwIDIwMTUKKyMgQnVzeWJveCB2ZXJzaW9uOiAxLjI3LjIKKyMgV2VkIFNlcCAyNyAwODo1NjoxMyAyMDE3CiAjCiBDT05GSUdfSEFWRV9ET1RfQ09ORklHPXkKIAogIwogIyBCdXN5Ym94IFNldHRpbmdzCiAjCi0KLSMKLSMgR2VuZXJhbCBDb25maWd1cmF0aW9uCi0jCiAjIENPTkZJR19ERVNLVE9QIGlzIG5vdCBzZXQKICMgQ09ORklHX0VYVFJBX0NPTVBBVCBpcyBub3Qgc2V0CisjIENPTkZJR19GRURPUkFfQ09NUEFUIGlzIG5vdCBzZXQKICMgQ09ORklHX0lOQ0xVREVfU1VTdjIgaXMgbm90IHNldAogIyBDT05GSUdfVVNFX1BPUlRBQkxFX0NPREUgaXMgbm90IHNldAotQ09ORklHX1BMQVRGT1JNX0xJTlVYPXkKLUNPTkZJR19GRUFUVVJFX0JVRkZFUlNfVVNFX01BTExPQz15Ci0jIENPTkZJR19GRUFUVVJFX0JVRkZFUlNfR09fT05fU1RBQ0sgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9CVUZGRVJTX0dPX0lOX0JTUyBpcyBub3Qgc2V0CiBDT05GSUdfU0hPV19VU0FHRT15CiAjIENPTkZJR19GRUFUVVJFX1ZFUkJPU0VfVVNBR0UgaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfQ09NUFJFU1NfVVNBR0U9eQorQ09ORklHX0JVU1lCT1g9eQogIyBDT05GSUdfRkVBVFVSRV9JTlNUQUxMRVIgaXMgbm90IHNldAogIyBDT05GSUdfSU5TVEFMTF9OT19VU1IgaXMgbm90IHNldAotIyBDT05GSUdfTE9DQUxFX1NVUFBPUlQgaXMgbm90IHNldAotIyBDT05GSUdfVU5JQ09ERV9TVVBQT1JUIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VOSUNPREVfVVNJTkdfTE9DQUxFIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfQ0hFQ0tfVU5JQ09ERV9JTl9FTlYgaXMgbm90IHNldAotQ09ORklHX1NVQlNUX1dDSEFSPTAKLUNPTkZJR19MQVNUX1NVUFBPUlRFRF9XQ0hBUj0wCi0jIENPTkZJR19VTklDT0RFX0NPTUJJTklOR19XQ0hBUlMgaXMgbm90IHNldAotIyBDT05GSUdfVU5JQ09ERV9XSURFX1dDSEFSUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19VTklDT0RFX0JJRElfU1VQUE9SVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19VTklDT0RFX05FVVRSQUxfVEFCTEUgaXMgbm90IHNldAotIyBDT05GSUdfVU5JQ09ERV9QUkVTRVJWRV9CUk9LRU4gaXMgbm90IHNldAogIyBDT05GSUdfUEFNIGlzIG5vdCBzZXQKLUNPTkZJR19GRUFUVVJFX1VTRV9TRU5ERklMRT15CiBDT05GSUdfTE9OR19PUFRTPXkKIENPTkZJR19GRUFUVVJFX0RFVlBUUz15CiAjIENPTkZJR19GRUFUVVJFX0NMRUFOX1VQIGlzIG5vdCBzZXQKQEAgLTUzLDYgKzM1LDcgQEAKIENPTkZJR19CVVNZQk9YX0VYRUNfUEFUSD0iL3Byb2Mvc2VsZi9leGUiCiBDT05GSUdfRkVBVFVSRV9TWVNMT0c9eQogIyBDT05GSUdfRkVBVFVSRV9IQVZFX1JQQyBpcyBub3Qgc2V0CitDT05GSUdfUExBVEZPUk1fTElOVVg9eQogCiAjCiAjIEJ1aWxkIE9wdGlvbnMKQEAgLTcxLDE3ICs1NCw2IEBACiBDT05GSUdfRVhUUkFfTERMSUJTPSIiCiAKICMKLSMgRGVidWdnaW5nIE9wdGlvbnMKLSMKLSMgQ09ORklHX0RFQlVHIGlzIG5vdCBzZXQKLSMgQ09ORklHX0RFQlVHX1BFU1NJTUlaRSBpcyBub3Qgc2V0Ci0jIENPTkZJR19VTklUX1RFU1QgaXMgbm90IHNldAotIyBDT05GSUdfV0VSUk9SIGlzIG5vdCBzZXQKLUNPTkZJR19OT19ERUJVR19MSUI9eQotIyBDT05GSUdfRE1BTExPQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19FRkVOQ0UgaXMgbm90IHNldAotCi0jCiAjIEluc3RhbGxhdGlvbiBPcHRpb25zICgibWFrZSBpbnN0YWxsIiBiZWhhdmlvcikKICMKIENPTkZJR19JTlNUQUxMX0FQUExFVF9TWU1MSU5LUz15CkBAIC05NCwxNiArNjYsMzAgQEAKIENPTkZJR19QUkVGSVg9Ii4vX2luc3RhbGwiCiAKICMKKyMgRGVidWdnaW5nIE9wdGlvbnMKKyMKKyMgQ09ORklHX0RFQlVHIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQlVHX1BFU1NJTUlaRSBpcyBub3Qgc2V0CisjIENPTkZJR19ERUJVR19TQU5JVElaRSBpcyBub3Qgc2V0CisjIENPTkZJR19VTklUX1RFU1QgaXMgbm90IHNldAorIyBDT05GSUdfV0VSUk9SIGlzIG5vdCBzZXQKK0NPTkZJR19OT19ERUJVR19MSUI9eQorIyBDT05GSUdfRE1BTExPQyBpcyBub3Qgc2V0CisjIENPTkZJR19FRkVOQ0UgaXMgbm90IHNldAorCisjCiAjIEJ1c3lib3ggTGlicmFyeSBUdW5pbmcKICMKLUNPTkZJR19GRUFUVVJFX1NZU1RFTUQ9eQorIyBDT05GSUdfRkVBVFVSRV9VU0VfQlNTX1RBSUwgaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfUlRNSU5NQVg9eQorQ09ORklHX0ZFQVRVUkVfQlVGRkVSU19VU0VfTUFMTE9DPXkKKyMgQ09ORklHX0ZFQVRVUkVfQlVGRkVSU19HT19PTl9TVEFDSyBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0JVRkZFUlNfR09fSU5fQlNTIGlzIG5vdCBzZXQKIENPTkZJR19QQVNTV09SRF9NSU5MRU49NgogQ09ORklHX01ENV9TTUFMTD0xCiBDT05GSUdfU0hBM19TTUFMTD0xCiBDT05GSUdfRkVBVFVSRV9GQVNUX1RPUD15CiAjIENPTkZJR19GRUFUVVJFX0VUQ19ORVRXT1JLUyBpcyBub3Qgc2V0Ci1DT05GSUdfRkVBVFVSRV9VU0VfVEVSTUlPUz15CiBDT05GSUdfRkVBVFVSRV9FRElUSU5HPXkKIENPTkZJR19GRUFUVVJFX0VESVRJTkdfTUFYX0xFTj0xMDI0CiAjIENPTkZJR19GRUFUVVJFX0VESVRJTkdfVkkgaXMgbm90IHNldApAQCAtMTE1LDggKzEwMSwyMCBAQAogQ09ORklHX0ZFQVRVUkVfVVNFUk5BTUVfQ09NUExFVElPTj15CiBDT05GSUdfRkVBVFVSRV9FRElUSU5HX0ZBTkNZX1BST01QVD15CiAjIENPTkZJR19GRUFUVVJFX0VESVRJTkdfQVNLX1RFUk1JTkFMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0xPQ0FMRV9TVVBQT1JUIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VOSUNPREVfU1VQUE9SVCBpcyBub3Qgc2V0CisjIENPTkZJR19VTklDT0RFX1VTSU5HX0xPQ0FMRSBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0NIRUNLX1VOSUNPREVfSU5fRU5WIGlzIG5vdCBzZXQKK0NPTkZJR19TVUJTVF9XQ0hBUj0wCitDT05GSUdfTEFTVF9TVVBQT1JURURfV0NIQVI9MAorIyBDT05GSUdfVU5JQ09ERV9DT01CSU5JTkdfV0NIQVJTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VOSUNPREVfV0lERV9XQ0hBUlMgaXMgbm90IHNldAorIyBDT05GSUdfVU5JQ09ERV9CSURJX1NVUFBPUlQgaXMgbm90IHNldAorIyBDT05GSUdfVU5JQ09ERV9ORVVUUkFMX1RBQkxFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VOSUNPREVfUFJFU0VSVkVfQlJPS0VOIGlzIG5vdCBzZXQKIENPTkZJR19GRUFUVVJFX05PTl9QT1NJWF9DUD15CiAjIENPTkZJR19GRUFUVVJFX1ZFUkJPU0VfQ1BfTUVTU0FHRSBpcyBub3Qgc2V0CitDT05GSUdfRkVBVFVSRV9VU0VfU0VOREZJTEU9eQogQ09ORklHX0ZFQVRVUkVfQ09QWUJVRl9LQj00CiBDT05GSUdfRkVBVFVSRV9TS0lQX1JPT1RGUz15CiBDT05GSUdfTU9OT1RPTklDX1NZU0NBTEw9eQpAQCAtMTQwLDc2ICsxMzgsNTkgQEAKICMgQ09ORklHX0ZFQVRVUkVfQVJfQ1JFQVRFIGlzIG5vdCBzZXQKICMgQ09ORklHX1VOQ09NUFJFU1MgaXMgbm90IHNldAogQ09ORklHX0dVTlpJUD15CitDT05GSUdfWkNBVD15CitDT05GSUdfRkVBVFVSRV9HVU5aSVBfTE9OR19PUFRJT05TPXkKIENPTkZJR19CVU5aSVAyPXkKK0NPTkZJR19CWkNBVD15CiAjIENPTkZJR19VTkxaTUEgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9MWk1BX0ZBU1QgaXMgbm90IHNldAorQ09ORklHX0xaQ0FUPXkKICMgQ09ORklHX0xaTUEgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9MWk1BX0ZBU1QgaXMgbm90IHNldAogIyBDT05GSUdfVU5YWiBpcyBub3Qgc2V0CitDT05GSUdfWFpDQVQ9eQogIyBDT05GSUdfWFogaXMgbm90IHNldAogIyBDT05GSUdfQlpJUDIgaXMgbm90IHNldAorQ09ORklHX0ZFQVRVUkVfQlpJUDJfREVDT01QUkVTUz15CiBDT05GSUdfQ1BJTz15CiAjIENPTkZJR19GRUFUVVJFX0NQSU9fTyBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0NQSU9fUCBpcyBub3Qgc2V0CiAjIENPTkZJR19EUEtHIGlzIG5vdCBzZXQKICMgQ09ORklHX0RQS0dfREVCIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfRFBLR19ERUJfRVhUUkFDVF9PTkxZIGlzIG5vdCBzZXQKIENPTkZJR19HWklQPXkKICMgQ09ORklHX0ZFQVRVUkVfR1pJUF9MT05HX09QVElPTlMgaXMgbm90IHNldAogQ09ORklHX0daSVBfRkFTVD0wCiAjIENPTkZJR19GRUFUVVJFX0daSVBfTEVWRUxTIGlzIG5vdCBzZXQKK0NPTkZJR19GRUFUVVJFX0daSVBfREVDT01QUkVTUz15CiAjIENPTkZJR19MWk9QIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VOTFpPUCBpcyBub3Qgc2V0CisjIENPTkZJR19MWk9QQ0FUIGlzIG5vdCBzZXQKICMgQ09ORklHX0xaT1BfQ09NUFJfSElHSCBpcyBub3Qgc2V0CiAjIENPTkZJR19SUE0gaXMgbm90IHNldAogIyBDT05GSUdfUlBNMkNQSU8gaXMgbm90IHNldAogQ09ORklHX1RBUj15CisjIENPTkZJR19GRUFUVVJFX1RBUl9MT05HX09QVElPTlMgaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfVEFSX0NSRUFURT15CiBDT05GSUdfRkVBVFVSRV9UQVJfQVVUT0RFVEVDVD15CiBDT05GSUdfRkVBVFVSRV9UQVJfRlJPTT15CiBDT05GSUdfRkVBVFVSRV9UQVJfT0xER05VX0NPTVBBVElCSUxJVFk9eQogIyBDT05GSUdfRkVBVFVSRV9UQVJfT0xEU1VOX0NPTVBBVElCSUxJVFkgaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfVEFSX0dOVV9FWFRFTlNJT05TPXkKLSMgQ09ORklHX0ZFQVRVUkVfVEFSX0xPTkdfT1BUSU9OUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1RBUl9UT19DT01NQU5EIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVEFSX1VOQU1FX0dOQU1FIGlzIG5vdCBzZXQKIENPTkZJR19GRUFUVVJFX1RBUl9OT1BSRVNFUlZFX1RJTUU9eQogIyBDT05GSUdfRkVBVFVSRV9UQVJfU0VMSU5VWCBpcyBub3Qgc2V0CiBDT05GSUdfVU5aSVA9eQorQ09ORklHX0ZFQVRVUkVfVU5aSVBfQ0RGPXkKKyMgQ09ORklHX0ZFQVRVUkVfVU5aSVBfQlpJUDIgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9VTlpJUF9MWk1BIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfVU5aSVBfWFogaXMgbm90IHNldAogCiAjCiAjIENvcmV1dGlscwogIwogQ09ORklHX0JBU0VOQU1FPXkKIENPTkZJR19DQVQ9eQotQ09ORklHX0RBVEU9eQotIyBDT05GSUdfRkVBVFVSRV9EQVRFX0lTT0ZNVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX0RBVEVfTkFOTyBpcyBub3Qgc2V0Ci1DT05GSUdfRkVBVFVSRV9EQVRFX0NPTVBBVD15Ci1DT05GSUdfREQ9eQotQ09ORklHX0ZFQVRVUkVfRERfU0lHTkFMX0hBTkRMSU5HPXkKLSMgQ09ORklHX0ZFQVRVUkVfRERfVEhJUkRfU1RBVFVTX0xJTkUgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9ERF9JQlNfT0JTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfRERfU1RBVFVTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0hPU1RJRCBpcyBub3Qgc2V0Ci1DT05GSUdfSUQ9eQotQ09ORklHX0dST1VQUz15Ci1DT05GSUdfU0hVRj15Ci1DT05GSUdfU1lOQz15Ci0jIENPTkZJR19GRUFUVVJFX1NZTkNfRkFOQ1kgaXMgbm90IHNldAotQ09ORklHX1RFU1Q9eQotQ09ORklHX0ZFQVRVUkVfVEVTVF82ND15Ci1DT05GSUdfVE9VQ0g9eQotQ09ORklHX0ZFQVRVUkVfVE9VQ0hfTk9ERVJFRj15Ci1DT05GSUdfRkVBVFVSRV9UT1VDSF9TVVNWMz15Ci1DT05GSUdfVFI9eQotQ09ORklHX0ZFQVRVUkVfVFJfQ0xBU1NFUz15Ci0jIENPTkZJR19GRUFUVVJFX1RSX0VRVUlWIGlzIG5vdCBzZXQKLSMgQ09ORklHX1RSVU5DQVRFIGlzIG5vdCBzZXQKLUNPTkZJR19VTkxJTks9eQotIyBDT05GSUdfQkFTRTY0IGlzIG5vdCBzZXQKLUNPTkZJR19XSE89eQotQ09ORklHX1VTRVJTPXkKLSMgQ09ORklHX0NBTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19DQVRWIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfQ0FUViBpcyBub3Qgc2V0CiBDT05GSUdfQ0hHUlA9eQogQ09ORklHX0NITU9EPXkKIENPTkZJR19DSE9XTj15CkBAIC0yMjAsNiArMjAxLDE1IEBACiBDT05GSUdfQ1A9eQogIyBDT05GSUdfRkVBVFVSRV9DUF9MT05HX09QVElPTlMgaXMgbm90IHNldAogQ09ORklHX0NVVD15CitDT05GSUdfREFURT15CisjIENPTkZJR19GRUFUVVJFX0RBVEVfSVNPRk1UIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfREFURV9OQU5PIGlzIG5vdCBzZXQKK0NPTkZJR19GRUFUVVJFX0RBVEVfQ09NUEFUPXkKK0NPTkZJR19ERD15CitDT05GSUdfRkVBVFVSRV9ERF9TSUdOQUxfSEFORExJTkc9eQorIyBDT05GSUdfRkVBVFVSRV9ERF9USElSRF9TVEFUVVNfTElORSBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0REX0lCU19PQlMgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9ERF9TVEFUVVMgaXMgbm90IHNldAogQ09ORklHX0RGPXkKICMgQ09ORklHX0ZFQVRVUkVfREZfRkFOQ1kgaXMgbm90IHNldAogQ09ORklHX0RJUk5BTUU9eQpAQCAtMjMzLDM2ICsyMjMsNTcgQEAKIENPTkZJR19GRUFUVVJFX0VOVl9MT05HX09QVElPTlM9eQogIyBDT05GSUdfRVhQQU5EIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfRVhQQU5EX0xPTkdfT1BUSU9OUyBpcyBub3Qgc2V0CisjIENPTkZJR19VTkVYUEFORCBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX1VORVhQQU5EX0xPTkdfT1BUSU9OUyBpcyBub3Qgc2V0CiBDT05GSUdfRVhQUj15CiBDT05GSUdfRVhQUl9NQVRIX1NVUFBPUlRfNjQ9eQorIyBDT05GSUdfRkFDVE9SIGlzIG5vdCBzZXQKIENPTkZJR19GQUxTRT15CiAjIENPTkZJR19GT0xEIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZTWU5DIGlzIG5vdCBzZXQKIENPTkZJR19IRUFEPXkKICMgQ09ORklHX0ZFQVRVUkVfRkFOQ1lfSEVBRCBpcyBub3Qgc2V0CisjIENPTkZJR19IT1NUSUQgaXMgbm90IHNldAorQ09ORklHX0lEPXkKK0NPTkZJR19HUk9VUFM9eQogIyBDT05GSUdfSU5TVEFMTCBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0lOU1RBTExfTE9OR19PUFRJT05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX0xJTksgaXMgbm90IHNldAogQ09ORklHX0xOPXkKIENPTkZJR19MT0dOQU1FPXkKIENPTkZJR19MUz15CiBDT05GSUdfRkVBVFVSRV9MU19GSUxFVFlQRVM9eQogQ09ORklHX0ZFQVRVUkVfTFNfRk9MTE9XTElOS1M9eQogQ09ORklHX0ZFQVRVUkVfTFNfUkVDVVJTSVZFPXkKK0NPTkZJR19GRUFUVVJFX0xTX1dJRFRIPXkKIENPTkZJR19GRUFUVVJFX0xTX1NPUlRGSUxFUz15CiBDT05GSUdfRkVBVFVSRV9MU19USU1FU1RBTVBTPXkKIENPTkZJR19GRUFUVVJFX0xTX1VTRVJOQU1FPXkKIENPTkZJR19GRUFUVVJFX0xTX0NPTE9SPXkKICMgQ09ORklHX0ZFQVRVUkVfTFNfQ09MT1JfSVNfREVGQVVMVCBpcyBub3Qgc2V0CiBDT05GSUdfTUQ1U1VNPXkKKyMgQ09ORklHX1NIQTFTVU0gaXMgbm90IHNldAorIyBDT05GSUdfU0hBMjU2U1VNIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NIQTUxMlNVTSBpcyBub3Qgc2V0CisjIENPTkZJR19TSEEzU1VNIGlzIG5vdCBzZXQKKworIworIyBDb21tb24gb3B0aW9ucyBmb3IgbWQ1c3VtLCBzaGExc3VtLCBzaGEyNTZzdW0sIHNoYTUxMnN1bSwgc2hhM3N1bQorIworQ09ORklHX0ZFQVRVUkVfTUQ1X1NIQTFfU1VNX0NIRUNLPXkKIENPTkZJR19NS0RJUj15CiBDT05GSUdfRkVBVFVSRV9NS0RJUl9MT05HX09QVElPTlM9eQogQ09ORklHX01LRklGTz15CiBDT05GSUdfTUtOT0Q9eQorQ09ORklHX01LVEVNUD15CiBDT05GSUdfTVY9eQogIyBDT05GSUdfRkVBVFVSRV9NVl9MT05HX09QVElPTlMgaXMgbm90IHNldAogIyBDT05GSUdfTklDRSBpcyBub3Qgc2V0CisjIENPTkZJR19OTCBpcyBub3Qgc2V0CiBDT05GSUdfTk9IVVA9eQorQ09ORklHX05QUk9DPXkKIENPTkZJR19PRD15CisjIENPTkZJR19QQVNURSBpcyBub3Qgc2V0CiAjIENPTkZJR19QUklOVEVOViBpcyBub3Qgc2V0CiBDT05GSUdfUFJJTlRGPXkKIENPTkZJR19QV0Q9eQpAQCAtMjczLDEwICsyODQsOCBAQAogQ09ORklHX1JNRElSPXkKICMgQ09ORklHX0ZFQVRVUkVfUk1ESVJfTE9OR19PUFRJT05TIGlzIG5vdCBzZXQKIENPTkZJR19TRVE9eQotIyBDT05GSUdfU0hBMVNVTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19TSEEyNTZTVU0gaXMgbm90IHNldAotIyBDT05GSUdfU0hBNTEyU1VNIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NIQTNTVU0gaXMgbm90IHNldAorIyBDT05GSUdfU0hSRUQgaXMgbm90IHNldAorQ09ORklHX1NIVUY9eQogQ09ORklHX1NMRUVQPXkKIENPTkZJR19GRUFUVVJFX0ZBTkNZX1NMRUVQPXkKIENPTkZJR19GRUFUVVJFX0ZMT0FUX1NMRUVQPXkKQEAgLTI4NiwyNSArMjk1LDQzIEBACiAjIENPTkZJR19GRUFUVVJFX1NQTElUX0ZBTkNZIGlzIG5vdCBzZXQKIENPTkZJR19TVEFUPXkKIENPTkZJR19GRUFUVVJFX1NUQVRfRk9STUFUPXkKK0NPTkZJR19GRUFUVVJFX1NUQVRfRklMRVNZU1RFTT15CiBDT05GSUdfU1RUWT15CiAjIENPTkZJR19TVU0gaXMgbm90IHNldAorQ09ORklHX1NZTkM9eQorIyBDT05GSUdfRkVBVFVSRV9TWU5DX0ZBTkNZIGlzIG5vdCBzZXQKICMgQ09ORklHX1RBQyBpcyBub3Qgc2V0CiBDT05GSUdfVEFJTD15CiBDT05GSUdfRkVBVFVSRV9GQU5DWV9UQUlMPXkKIENPTkZJR19URUU9eQogIyBDT05GSUdfRkVBVFVSRV9URUVfVVNFX0JMT0NLX0lPIGlzIG5vdCBzZXQKK0NPTkZJR19URVNUPXkKK0NPTkZJR19URVNUMT15CitDT05GSUdfVEVTVDI9eQorQ09ORklHX0ZFQVRVUkVfVEVTVF82ND15CisjIENPTkZJR19USU1FT1VUIGlzIG5vdCBzZXQKK0NPTkZJR19UT1VDSD15CitDT05GSUdfRkVBVFVSRV9UT1VDSF9OT0RFUkVGPXkKK0NPTkZJR19GRUFUVVJFX1RPVUNIX1NVU1YzPXkKK0NPTkZJR19UUj15CitDT05GSUdfRkVBVFVSRV9UUl9DTEFTU0VTPXkKKyMgQ09ORklHX0ZFQVRVUkVfVFJfRVFVSVYgaXMgbm90IHNldAogQ09ORklHX1RSVUU9eQorIyBDT05GSUdfVFJVTkNBVEUgaXMgbm90IHNldAogQ09ORklHX1RUWT15CiBDT05GSUdfVU5BTUU9eQogQ09ORklHX1VOQU1FX09TTkFNRT0iR05VL0xpbnV4IgotIyBDT05GSUdfVU5FWFBBTkQgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9VTkVYUEFORF9MT05HX09QVElPTlMgaXMgbm90IHNldAogQ09ORklHX1VOSVE9eQorQ09ORklHX1VOTElOSz15CiBDT05GSUdfVVNMRUVQPXkKICMgQ09ORklHX1VVREVDT0RFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JBU0U2NCBpcyBub3Qgc2V0CiAjIENPTkZJR19VVUVOQ09ERSBpcyBub3Qgc2V0CiBDT05GSUdfV0M9eQogIyBDT05GSUdfRkVBVFVSRV9XQ19MQVJHRSBpcyBub3Qgc2V0CitDT05GSUdfV0hPPXkKKyMgQ09ORklHX1cgaXMgbm90IHNldAorQ09ORklHX1VTRVJTPXkKIENPTkZJR19XSE9BTUk9eQogQ09ORklHX1lFUz15CiAKQEAgLTMxOSwzMCArMzQ2LDI5IEBACiAjIENPTkZJR19GRUFUVVJFX1BSRVNFUlZFX0hBUkRMSU5LUyBpcyBub3Qgc2V0CiAKICMKLSMgQ29tbW9uIG9wdGlvbnMgZm9yIGxzLCBtb3JlIGFuZCB0ZWxuZXQKLSMKLUNPTkZJR19GRUFUVVJFX0FVVE9XSURUSD15Ci0KLSMKICMgQ29tbW9uIG9wdGlvbnMgZm9yIGRmLCBkdSwgbHMKICMKIENPTkZJR19GRUFUVVJFX0hVTUFOX1JFQURBQkxFPXkKIAogIwotIyBDb21tb24gb3B0aW9ucyBmb3IgbWQ1c3VtLCBzaGExc3VtLCBzaGEyNTZzdW0sIHNoYTUxMnN1bSwgc2hhM3N1bQotIwotQ09ORklHX0ZFQVRVUkVfTUQ1X1NIQTFfU1VNX0NIRUNLPXkKLQotIwogIyBDb25zb2xlIFV0aWxpdGllcwogIwogQ09ORklHX0NIVlQ9eQotIyBDT05GSUdfRkdDT05TT0xFIGlzIG5vdCBzZXQKIENPTkZJR19DTEVBUj15CiBDT05GSUdfREVBTExPQ1ZUPXkKIENPTkZJR19EVU1QS01BUD15CisjIENPTkZJR19GR0NPTlNPTEUgaXMgbm90IHNldAogIyBDT05GSUdfS0JEX01PREUgaXMgbm90IHNldAogQ09ORklHX0xPQURGT05UPXkKKyMgQ09ORklHX1NFVEZPTlQgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9TRVRGT05UX1RFWFRVQUxfTUFQIGlzIG5vdCBzZXQKK0NPTkZJR19ERUZBVUxUX1NFVEZPTlRfRElSPSIiCisKKyMKKyMgQ29tbW9uIG9wdGlvbnMgZm9yIGxvYWRmb250IGFuZCBzZXRmb250CisjCisjIENPTkZJR19GRUFUVVJFX0xPQURGT05UX1BTRjIgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9MT0FERk9OVF9SQVcgaXMgbm90IHNldAogQ09ORklHX0xPQURLTUFQPXkKIENPTkZJR19PUEVOVlQ9eQogQ09ORklHX1JFU0VUPXkKQEAgLTM1MCwzMCArMzc2LDIwIEBACiAjIENPTkZJR19GRUFUVVJFX1JFU0laRV9QUklOVCBpcyBub3Qgc2V0CiBDT05GSUdfU0VUQ09OU09MRT15CiAjIENPTkZJR19GRUFUVVJFX1NFVENPTlNPTEVfTE9OR19PUFRJT05TIGlzIG5vdCBzZXQKLSMgQ09ORklHX1NFVEZPTlQgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9TRVRGT05UX1RFWFRVQUxfTUFQIGlzIG5vdCBzZXQKLUNPTkZJR19ERUZBVUxUX1NFVEZPTlRfRElSPSIiCiAjIENPTkZJR19TRVRLRVlDT0RFUyBpcyBub3Qgc2V0CiAjIENPTkZJR19TRVRMT0dDT05TIGlzIG5vdCBzZXQKICMgQ09ORklHX1NIT1dLRVkgaXMgbm90IHNldAogCiAjCi0jIENvbW1vbiBvcHRpb25zIGZvciBsb2FkZm9udCBhbmQgc2V0Zm9udAotIwotIyBDT05GSUdfRkVBVFVSRV9MT0FERk9OVF9QU0YyIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfTE9BREZPTlRfUkFXIGlzIG5vdCBzZXQKLQotIwogIyBEZWJpYW4gVXRpbGl0aWVzCiAjCi1DT05GSUdfTUtURU1QPXkKICMgQ09ORklHX1BJUEVfUFJPR1JFU1MgaXMgbm90IHNldAogQ09ORklHX1JVTl9QQVJUUz15CiBDT05GSUdfRkVBVFVSRV9SVU5fUEFSVFNfTE9OR19PUFRJT05TPXkKICMgQ09ORklHX0ZFQVRVUkVfUlVOX1BBUlRTX0ZBTkNZIGlzIG5vdCBzZXQKIENPTkZJR19TVEFSVF9TVE9QX0RBRU1PTj15Ci1DT05GSUdfRkVBVFVSRV9TVEFSVF9TVE9QX0RBRU1PTl9GQU5DWT15CiBDT05GSUdfRkVBVFVSRV9TVEFSVF9TVE9QX0RBRU1PTl9MT05HX09QVElPTlM9eQorQ09ORklHX0ZFQVRVUkVfU1RBUlRfU1RPUF9EQUVNT05fRkFOQ1k9eQogQ09ORklHX1dISUNIPXkKIAogIwpAQCAtNDM2LDggKzQ1Miw4IEBACiAjIENPTkZJR19GRUFUVVJFX0ZJTkRfQ09OVEVYVCBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0ZJTkRfTElOS1MgaXMgbm90IHNldAogQ09ORklHX0dSRVA9eQotQ09ORklHX0ZFQVRVUkVfR1JFUF9FR1JFUF9BTElBUz15Ci1DT05GSUdfRkVBVFVSRV9HUkVQX0ZHUkVQX0FMSUFTPXkKK0NPTkZJR19FR1JFUD15CitDT05GSUdfRkdSRVA9eQogQ09ORklHX0ZFQVRVUkVfR1JFUF9DT05URVhUPXkKIENPTkZJR19YQVJHUz15CiAjIENPTkZJR19GRUFUVVJFX1hBUkdTX1NVUFBPUlRfQ09ORklSTUFUSU9OIGlzIG5vdCBzZXQKQEAgLTQ1Myw0MCArNDY5LDQ1IEBACiAjIENPTkZJR19GRUFUVVJFX0JPT1RDSEFSVERfQkxPQVRFRF9IRUFERVIgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9CT09UQ0hBUlREX0NPTkZJR19GSUxFIGlzIG5vdCBzZXQKIENPTkZJR19IQUxUPXkKK0NPTkZJR19QT1dFUk9GRj15CitDT05GSUdfUkVCT09UPXkKICMgQ09ORklHX0ZFQVRVUkVfQ0FMTF9URUxJTklUIGlzIG5vdCBzZXQKIENPTkZJR19URUxJTklUX1BBVEg9IiIKICMgQ09ORklHX0lOSVQgaXMgbm90IHNldAorIyBDT05GSUdfTElOVVhSQyBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1VTRV9JTklUVEFCIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfS0lMTF9SRU1PVkVEIGlzIG5vdCBzZXQKIENPTkZJR19GRUFUVVJFX0tJTExfREVMQVk9MAogIyBDT05GSUdfRkVBVFVSRV9JTklUX1NDVFRZIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfSU5JVF9TWVNMT0cgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9FWFRSQV9RVUlFVCBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0lOSVRfUVVJRVQgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9JTklUX0NPUkVEVU1QUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX0lOSVRSRCBpcyBub3Qgc2V0CiBDT05GSUdfSU5JVF9URVJNSU5BTF9UWVBFPSIiCi1DT05GSUdfTUVTRz15Ci0jIENPTkZJR19GRUFUVVJFX01FU0dfRU5BQkxFX09OTFlfR1JPVVAgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9JTklUX01PRElGWV9DTURMSU5FIGlzIG5vdCBzZXQKIAogIwogIyBMb2dpbi9QYXNzd29yZCBNYW5hZ2VtZW50IFV0aWxpdGllcwogIwotIyBDT05GSUdfQUREX1NIRUxMIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JFTU9WRV9TSEVMTCBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1NIQURPV1BBU1NXRFMgaXMgbm90IHNldAogIyBDT05GSUdfVVNFX0JCX1BXRF9HUlAgaXMgbm90IHNldAogIyBDT05GSUdfVVNFX0JCX1NIQURPVyBpcyBub3Qgc2V0CiBDT05GSUdfVVNFX0JCX0NSWVBUPXkKICMgQ09ORklHX1VTRV9CQl9DUllQVF9TSEEgaXMgbm90IHNldAorIyBDT05GSUdfQUREX1NIRUxMIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JFTU9WRV9TSEVMTCBpcyBub3Qgc2V0CisjIENPTkZJR19BRERHUk9VUCBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0FEREdST1VQX0xPTkdfT1BUSU9OUyBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0FERFVTRVJfVE9fR1JPVVAgaXMgbm90IHNldAogIyBDT05GSUdfQUREVVNFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0FERFVTRVJfTE9OR19PUFRJT05TIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfQ0hFQ0tfTkFNRVMgaXMgbm90IHNldAogQ09ORklHX0xBU1RfSUQ9NjAwMDAKIENPTkZJR19GSVJTVF9TWVNURU1fSUQ9MTAwCiBDT05GSUdfTEFTVF9TWVNURU1fSUQ9OTk5Ci0jIENPTkZJR19BRERHUk9VUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX0FEREdST1VQX0xPTkdfT1BUSU9OUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX0FERFVTRVJfVE9fR1JPVVAgaXMgbm90IHNldAorIyBDT05GSUdfQ0hQQVNTV0QgaXMgbm90IHNldAorQ09ORklHX0ZFQVRVUkVfREVGQVVMVF9QQVNTV0RfQUxHTz0iIgorIyBDT05GSUdfQ1JZUFRQVyBpcyBub3Qgc2V0CisjIENPTkZJR19NS1BBU1NXRCBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUxVU0VSIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFTEdST1VQIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfREVMX1VTRVJfRlJPTV9HUk9VUCBpcyBub3Qgc2V0CkBAIC00OTgsMTIgKzUxOSwxMCBAQAogIyBDT05GSUdfRkVBVFVSRV9TRUNVUkVUVFkgaXMgbm90IHNldAogIyBDT05GSUdfUEFTU1dEIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfUEFTU1dEX1dFQUtfQ0hFQ0sgaXMgbm90IHNldAotIyBDT05GSUdfQ1JZUFRQVyBpcyBub3Qgc2V0Ci0jIENPTkZJR19DSFBBU1NXRCBpcyBub3Qgc2V0Ci1DT05GSUdfRkVBVFVSRV9ERUZBVUxUX1BBU1NXRF9BTEdPPSIiCiAjIENPTkZJR19TVSBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1NVX1NZU0xPRyBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1NVX0NIRUNLU19TSEVMTFMgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9TVV9CTEFOS19QV19ORUVEU19TRUNVUkVfVFRZIGlzIG5vdCBzZXQKICMgQ09ORklHX1NVTE9HSU4gaXMgbm90IHNldAogIyBDT05GSUdfVkxPQ0sgaXMgbm90IHNldAogCkBAIC01MTgsMjkgKzUzNywyOSBAQAogIwogIyBMaW51eCBNb2R1bGUgVXRpbGl0aWVzCiAjCi0jIENPTkZJR19NT0RJTkZPIGlzIG5vdCBzZXQKICMgQ09ORklHX01PRFBST0JFX1NNQUxMIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfTU9EUFJPQkVfU01BTExfT1BUSU9OU19PTl9DTURMSU5FIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfTU9EUFJPQkVfU01BTExfQ0hFQ0tfQUxSRUFEWV9MT0FERUQgaXMgbm90IHNldAorQ09ORklHX0RFUE1PRD15CiBDT05GSUdfSU5TTU9EPXkKLUNPTkZJR19STU1PRD15CiBDT05GSUdfTFNNT0Q9eQogIyBDT05GSUdfRkVBVFVSRV9MU01PRF9QUkVUVFlfMl82X09VVFBVVCBpcyBub3Qgc2V0CisjIENPTkZJR19NT0RJTkZPIGlzIG5vdCBzZXQKIENPTkZJR19NT0RQUk9CRT15CiAjIENPTkZJR19GRUFUVVJFX01PRFBST0JFX0JMQUNLTElTVCBpcyBub3Qgc2V0Ci1DT05GSUdfREVQTU9EPXkKK0NPTkZJR19STU1PRD15CiAKICMKICMgT3B0aW9ucyBjb21tb24gdG8gbXVsdGlwbGUgbW9kdXRpbHMKICMKK0NPTkZJR19GRUFUVVJFX0NNRExJTkVfTU9EVUxFX09QVElPTlM9eQorIyBDT05GSUdfRkVBVFVSRV9NT0RQUk9CRV9TTUFMTF9DSEVDS19BTFJFQURZX0xPQURFRCBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFXzJfNF9NT0RVTEVTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfSU5TTU9EX1RSWV9NTUFQIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfSU5TTU9EX1ZFUlNJT05fQ0hFQ0tJTkcgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9JTlNNT0RfS1NZTU9PUFNfU1lNQk9MUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0lOU01PRF9MT0FESU5LTUVNIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfSU5TTU9EX0xPQURfTUFQIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfSU5TTU9EX0xPQURfTUFQX0ZVTEwgaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfQ0hFQ0tfVEFJTlRFRF9NT0RVTEU9eQorIyBDT05GSUdfRkVBVFVSRV9JTlNNT0RfVFJZX01NQVAgaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfTU9EVVRJTFNfQUxJQVM9eQogQ09ORklHX0ZFQVRVUkVfTU9EVVRJTFNfU1lNQk9MUz15CiBDT05GSUdfREVGQVVMVF9NT0RVTEVTX0RJUj0iL2xpYi9tb2R1bGVzIgpAQCAtNTQ5LDE1ICs1NjgsNzEgQEAKICMKICMgTGludXggU3lzdGVtIFV0aWxpdGllcwogIworIyBDT05GSUdfQUNQSUQgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9BQ1BJRF9DT01QQVQgaXMgbm90IHNldAorIyBDT05GSUdfQkxLRElTQ0FSRCBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtJRCBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0JMS0lEX1RZUEUgaXMgbm90IHNldAogIyBDT05GSUdfQkxPQ0tERVYgaXMgbm90IHNldAorIyBDT05GSUdfQ0FMIGlzIG5vdCBzZXQKK0NPTkZJR19ETUVTRz15CitDT05GSUdfRkVBVFVSRV9ETUVTR19QUkVUVFk9eQorIyBDT05GSUdfRkFMTE9DQVRFIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZBVEFUVFIgaXMgbm90IHNldAorQ09ORklHX0ZCU0VUPXkKK0NPTkZJR19GRUFUVVJFX0ZCU0VUX0ZBTkNZPXkKK0NPTkZJR19GRUFUVVJFX0ZCU0VUX1JFQURNT0RFPXkKKyMgQ09ORklHX0ZERk9STUFUIGlzIG5vdCBzZXQKK0NPTkZJR19GRElTSz15CisjIENPTkZJR19GRElTS19TVVBQT1JUX0xBUkdFX0RJU0tTIGlzIG5vdCBzZXQKK0NPTkZJR19GRUFUVVJFX0ZESVNLX1dSSVRBQkxFPXkKKyMgQ09ORklHX0ZFQVRVUkVfQUlYX0xBQkVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfU0dJX0xBQkVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfU1VOX0xBQkVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfT1NGX0xBQkVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfR1BUX0xBQkVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfRkRJU0tfQURWQU5DRUQgaXMgbm90IHNldAorIyBDT05GSUdfRklOREZTIGlzIG5vdCBzZXQKK0NPTkZJR19GTE9DSz15CisjIENPTkZJR19GREZMVVNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZSRUVSQU1ESVNLIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZTQ0tfTUlOSVggaXMgbm90IHNldAorIyBDT05GSUdfRlNGUkVFWkUgaXMgbm90IHNldAogQ09ORklHX0ZTVFJJTT15CisjIENPTkZJR19HRVRPUFQgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9HRVRPUFRfTE9ORyBpcyBub3Qgc2V0CitDT05GSUdfSEVYRFVNUD15CisjIENPTkZJR19GRUFUVVJFX0hFWERVTVBfUkVWRVJTRSBpcyBub3Qgc2V0CisjIENPTkZJR19IRCBpcyBub3Qgc2V0CisjIENPTkZJR19YWEQgaXMgbm90IHNldAorQ09ORklHX0hXQ0xPQ0s9eQorQ09ORklHX0ZFQVRVUkVfSFdDTE9DS19MT05HX09QVElPTlM9eQorQ09ORklHX0ZFQVRVUkVfSFdDTE9DS19BREpUSU1FX0ZIUz15CisjIENPTkZJR19JUENSTSBpcyBub3Qgc2V0CisjIENPTkZJR19JUENTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0xBU1QgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9MQVNUX0ZBTkNZIGlzIG5vdCBzZXQKK0NPTkZJR19MT1NFVFVQPXkKKyMgQ09ORklHX0xTUENJIGlzIG5vdCBzZXQKKyMgQ09ORklHX0xTVVNCIGlzIG5vdCBzZXQKICMgQ09ORklHX01ERVYgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9NREVWX0NPTkYgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9NREVWX1JFTkFNRSBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX01ERVZfUkVOQU1FX1JFR0VYUCBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX01ERVZfRVhFQyBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX01ERVZfTE9BRF9GSVJNV0FSRSBpcyBub3Qgc2V0CitDT05GSUdfTUVTRz15CisjIENPTkZJR19GRUFUVVJFX01FU0dfRU5BQkxFX09OTFlfR1JPVVAgaXMgbm90IHNldAorIyBDT05GSUdfTUtFMkZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01LRlNfRVhUMiBpcyBub3Qgc2V0CisjIENPTkZJR19NS0ZTX01JTklYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfTUlOSVgyIGlzIG5vdCBzZXQKKyMgQ09ORklHX01LRlNfUkVJU0VSIGlzIG5vdCBzZXQKKyMgQ09ORklHX01LRE9TRlMgaXMgbm90IHNldAorIyBDT05GSUdfTUtGU19WRkFUIGlzIG5vdCBzZXQKK0NPTkZJR19NS1NXQVA9eQorIyBDT05GSUdfRkVBVFVSRV9NS1NXQVBfVVVJRCBpcyBub3Qgc2V0CitDT05GSUdfTU9SRT15CiBDT05GSUdfTU9VTlQ9eQogIyBDT05GSUdfRkVBVFVSRV9NT1VOVF9GQUtFIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfTU9VTlRfVkVSQk9TRSBpcyBub3Qgc2V0CkBAIC01NjgsNjcgKzY0MywzMyBAQAogQ09ORklHX0ZFQVRVUkVfTU9VTlRfRkxBR1M9eQogQ09ORklHX0ZFQVRVUkVfTU9VTlRfRlNUQUI9eQogIyBDT05GSUdfRkVBVFVSRV9NT1VOVF9PVEhFUlRBQiBpcyBub3Qgc2V0Ci0jIENPTkZJR19SRVYgaXMgbm90IHNldAotIyBDT05GSUdfVUVWRU5UIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FDUElEIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfQUNQSURfQ09NUEFUIGlzIG5vdCBzZXQKLSMgQ09ORklHX0JMS0lEIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfQkxLSURfVFlQRSBpcyBub3Qgc2V0Ci1DT05GSUdfRE1FU0c9eQotQ09ORklHX0ZFQVRVUkVfRE1FU0dfUFJFVFRZPXkKLUNPTkZJR19GQlNFVD15Ci1DT05GSUdfRkVBVFVSRV9GQlNFVF9GQU5DWT15Ci1DT05GSUdfRkVBVFVSRV9GQlNFVF9SRUFETU9ERT15Ci0jIENPTkZJR19GREZMVVNIIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZERk9STUFUIGlzIG5vdCBzZXQKLUNPTkZJR19GRElTSz15Ci1DT05GSUdfRkRJU0tfU1VQUE9SVF9MQVJHRV9ESVNLUz15Ci1DT05GSUdfRkVBVFVSRV9GRElTS19XUklUQUJMRT15Ci0jIENPTkZJR19GRUFUVVJFX0FJWF9MQUJFTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX1NHSV9MQUJFTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX1NVTl9MQUJFTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX09TRl9MQUJFTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX0dQVF9MQUJFTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX0ZESVNLX0FEVkFOQ0VEIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZJTkRGUyBpcyBub3Qgc2V0Ci1DT05GSUdfRkxPQ0s9eQotIyBDT05GSUdfRlJFRVJBTURJU0sgaXMgbm90IHNldAotIyBDT05GSUdfRlNDS19NSU5JWCBpcyBub3Qgc2V0Ci0jIENPTkZJR19NS0ZTX0VYVDIgaXMgbm90IHNldAotIyBDT05GSUdfTUtGU19NSU5JWCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX01JTklYMiBpcyBub3Qgc2V0Ci0jIENPTkZJR19NS0ZTX1JFSVNFUiBpcyBub3Qgc2V0Ci0jIENPTkZJR19NS0ZTX1ZGQVQgaXMgbm90IHNldAotIyBDT05GSUdfR0VUT1BUIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfR0VUT1BUX0xPTkcgaXMgbm90IHNldAotQ09ORklHX0hFWERVTVA9eQotIyBDT05GSUdfRkVBVFVSRV9IRVhEVU1QX1JFVkVSU0UgaXMgbm90IHNldAotIyBDT05GSUdfSEQgaXMgbm90IHNldAotQ09ORklHX0hXQ0xPQ0s9eQotQ09ORklHX0ZFQVRVUkVfSFdDTE9DS19MT05HX09QVElPTlM9eQotQ09ORklHX0ZFQVRVUkVfSFdDTE9DS19BREpUSU1FX0ZIUz15Ci0jIENPTkZJR19JUENSTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUENTIGlzIG5vdCBzZXQKLUNPTkZJR19MT1NFVFVQPXkKLSMgQ09ORklHX0xTUENJIGlzIG5vdCBzZXQKLSMgQ09ORklHX0xTVVNCIGlzIG5vdCBzZXQKLUNPTkZJR19NS1NXQVA9eQotIyBDT05GSUdfRkVBVFVSRV9NS1NXQVBfVVVJRCBpcyBub3Qgc2V0Ci1DT05GSUdfTU9SRT15CisjIENPTkZJR19OU0VOVEVSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfTlNFTlRFUl9MT05HX09QVFMgaXMgbm90IHNldAogQ09ORklHX1BJVk9UX1JPT1Q9eQogQ09ORklHX1JEQVRFPXkKICMgQ09ORklHX1JERVYgaXMgbm90IHNldAogIyBDT05GSUdfUkVBRFBST0ZJTEUgaXMgbm90IHNldAorQ09ORklHX1JFTklDRT15CisjIENPTkZJR19SRVYgaXMgbm90IHNldAogIyBDT05GSUdfUlRDV0FLRSBpcyBub3Qgc2V0CiAjIENPTkZJR19TQ1JJUFQgaXMgbm90IHNldAogIyBDT05GSUdfU0NSSVBUUkVQTEFZIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFVEFSQ0ggaXMgbm90IHNldAotQ09ORklHX1NXQVBPTk9GRj15CisjIENPTkZJR19MSU5VWDMyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0xJTlVYNjQgaXMgbm90IHNldAorIyBDT05GSUdfU0VUUFJJViBpcyBub3Qgc2V0CitDT05GSUdfU1dBUE9OPXkKIENPTkZJR19GRUFUVVJFX1NXQVBPTl9ESVNDQVJEPXkKIENPTkZJR19GRUFUVVJFX1NXQVBPTl9QUkk9eQorQ09ORklHX1NXQVBPRkY9eQogQ09ORklHX1NXSVRDSF9ST09UPXkKKyMgQ09ORklHX1RBU0tTRVQgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9UQVNLU0VUX0ZBTkNZIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VFVkVOVCBpcyBub3Qgc2V0CiBDT05GSUdfVU1PVU5UPXkKIENPTkZJR19GRUFUVVJFX1VNT1VOVF9BTEw9eQorIyBDT05GSUdfVU5TSEFSRSBpcyBub3Qgc2V0CisjIENPTkZJR19XQUxMIGlzIG5vdCBzZXQKIAogIwogIyBDb21tb24gb3B0aW9ucyBmb3IgbW91bnQvdW1vdW50CkBAIC02MzcsNiArNjc4LDcgQEAKIENPTkZJR19GRUFUVVJFX01PVU5UX0xPT1BfQ1JFQVRFPXkKICMgQ09ORklHX0ZFQVRVUkVfTVRBQl9TVVBQT1JUIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZPTFVNRUlEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfVk9MVU1FSURfQkNBQ0hFIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVk9MVU1FSURfQlRSRlMgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9WT0xVTUVJRF9DUkFNRlMgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9WT0xVTUVJRF9FWEZBVCBpcyBub3Qgc2V0CkBAIC02NTYsMTcgKzY5OCwzMyBAQAogIyBDT05GSUdfRkVBVFVSRV9WT0xVTUVJRF9ST01GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1ZPTFVNRUlEX1NRVUFTSEZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVk9MVU1FSURfU1lTViBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX1ZPTFVNRUlEX1VCSUZTIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVk9MVU1FSURfVURGIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVk9MVU1FSURfWEZTIGlzIG5vdCBzZXQKIAogIwogIyBNaXNjZWxsYW5lb3VzIFV0aWxpdGllcwogIworIyBDT05GSUdfQkVFUCBpcyBub3Qgc2V0CitDT05GSUdfRkVBVFVSRV9CRUVQX0ZSRVE9MAorQ09ORklHX0ZFQVRVUkVfQkVFUF9MRU5HVEhfTVM9MAogIyBDT05GSUdfQ09OU1BZIGlzIG5vdCBzZXQKICMgQ09ORklHX0NST05EIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfQ1JPTkRfRCBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0NST05EX0NBTExfU0VORE1BSUwgaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfQ1JPTkRfRElSPSIiCisjIENPTkZJR19ERVZGU0QgaXMgbm90IHNldAorIyBDT05GSUdfREVWRlNEX01PRExPQUQgaXMgbm90IHNldAorIyBDT05GSUdfREVWRlNEX0ZHX05QIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFVkZTRF9WRVJCT1NFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfREVWRlMgaXMgbm90IHNldAorIyBDT05GSUdfSERQQVJNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfSERQQVJNX0dFVF9JREVOVElUWSBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0hEUEFSTV9IRElPX1NDQU5fSFdJRiBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0hEUEFSTV9IRElPX1VOUkVHSVNURVJfSFdJRiBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0hEUEFSTV9IRElPX0RSSVZFX1JFU0VUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfSERQQVJNX0hESU9fVFJJU1RBVEVfSFdJRiBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0hEUEFSTV9IRElPX0dFVFNFVF9ETUEgaXMgbm90IHNldAogIyBDT05GSUdfSTJDR0VUIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ1NFVCBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkNEVU1QIGlzIG5vdCBzZXQKQEAgLTY4MiwxOSArNzQwLDE5IEBACiAjIENPTkZJR19GRUFUVVJFX0xFU1NfQVNLX1RFUk1JTkFMIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfTEVTU19EQVNIQ01EIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfTEVTU19MSU5FTlVNUyBpcyBub3Qgc2V0CisjIENPTkZJR19MU1NDU0kgaXMgbm90IHNldAogIyBDT05GSUdfTkFORFdSSVRFIGlzIG5vdCBzZXQKICMgQ09ORklHX05BTkREVU1QIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BBUlRQUk9CRSBpcyBub3Qgc2V0CiBDT05GSUdfUkZLSUxMPXkKICMgQ09ORklHX1NFVFNFUklBTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19UQVNLU0VUIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfVEFTS1NFVF9GQU5DWSBpcyBub3Qgc2V0CiAjIENPTkZJR19VQklBVFRBQ0ggaXMgbm90IHNldAogIyBDT05GSUdfVUJJREVUQUNIIGlzIG5vdCBzZXQKICMgQ09ORklHX1VCSU1LVk9MIGlzIG5vdCBzZXQKICMgQ09ORklHX1VCSVJNVk9MIGlzIG5vdCBzZXQKICMgQ09ORklHX1VCSVJTVk9MIGlzIG5vdCBzZXQKICMgQ09ORklHX1VCSVVQREFURVZPTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19XQUxMIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VCSVJFTkFNRSBpcyBub3Qgc2V0CiAjIENPTkZJR19BREpUSU1FWCBpcyBub3Qgc2V0CiAjIENPTkZJR19CQkNPTkZJRyBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0NPTVBSRVNTX0JCQ09ORklHIGlzIG5vdCBzZXQKQEAgLTcyOSw3ICs3ODcsNiBAQAogIyBDT05GSUdfSU9OSUNFIGlzIG5vdCBzZXQKICMgQ09ORklHX0lOT1RJRllEIGlzIG5vdCBzZXQKICMgQ09ORklHX0xBU1QgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9MQVNUX1NNQUxMIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfTEFTVF9GQU5DWSBpcyBub3Qgc2V0CiAjIENPTkZJR19IRFBBUk0gaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9IRFBBUk1fR0VUX0lERU5USVRZIGlzIG5vdCBzZXQKQEAgLTc2MCwyNCArODE3LDYgQEAKICMKICMgTmV0d29ya2luZyBVdGlsaXRpZXMKICMKLSMgQ09ORklHX05BTUVJRiBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX05BTUVJRl9FWFRFTkRFRCBpcyBub3Qgc2V0Ci0jIENPTkZJR19OQkRDTElFTlQgaXMgbm90IHNldAotQ09ORklHX05DPXkKLSMgQ09ORklHX05DX1NFUlZFUiBpcyBub3Qgc2V0Ci0jIENPTkZJR19OQ19FWFRSQSBpcyBub3Qgc2V0Ci0jIENPTkZJR19OQ18xMTBfQ09NUEFUIGlzIG5vdCBzZXQKLUNPTkZJR19QSU5HPXkKLUNPTkZJR19QSU5HNj15Ci1DT05GSUdfRkVBVFVSRV9GQU5DWV9QSU5HPXkKLUNPTkZJR19XR0VUPXkKLUNPTkZJR19GRUFUVVJFX1dHRVRfU1RBVFVTQkFSPXkKLUNPTkZJR19GRUFUVVJFX1dHRVRfQVVUSEVOVElDQVRJT049eQotQ09ORklHX0ZFQVRVUkVfV0dFVF9MT05HX09QVElPTlM9eQotQ09ORklHX0ZFQVRVUkVfV0dFVF9USU1FT1VUPXkKLSMgQ09ORklHX0ZFQVRVUkVfV0dFVF9PUEVOU1NMIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfV0dFVF9TU0xfSEVMUEVSIGlzIG5vdCBzZXQKLSMgQ09ORklHX1dIT0lTIGlzIG5vdCBzZXQKIENPTkZJR19GRUFUVVJFX0lQVjY9eQogIyBDT05GSUdfRkVBVFVSRV9VTklYX0xPQ0FMIGlzIG5vdCBzZXQKIENPTkZJR19GRUFUVVJFX1BSRUZFUl9JUFY0X0FERFJFU1M9eQpAQCAtNzg5LDE1ICs4MjgsMTUgQEAKICMgQ09ORklHX0ZFQVRVUkVfQlJDVExfU0hPVyBpcyBub3Qgc2V0CiAjIENPTkZJR19ETlNEIGlzIG5vdCBzZXQKICMgQ09ORklHX0VUSEVSX1dBS0UgaXMgbm90IHNldAotIyBDT05GSUdfRkFLRUlERU5URCBpcyBub3Qgc2V0CiAjIENPTkZJR19GVFBEIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfRlRQX1dSSVRFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfRlRQRF9XUklURSBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0ZUUERfQUNDRVBUX0JST0tFTl9MSVNUIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfRlRQX0FVVEhFTlRJQ0FUSU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfRlRQRF9BVVRIRU5USUNBVElPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19GVFBHRVQgaXMgbm90IHNldAogIyBDT05GSUdfRlRQUFVUIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfRlRQR0VUUFVUX0xPTkdfT1BUSU9OUyBpcyBub3Qgc2V0CiBDT05GSUdfSE9TVE5BTUU9eQorQ09ORklHX0ROU0RPTUFJTk5BTUU9eQogIyBDT05GSUdfSFRUUEQgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9IVFRQRF9SQU5HRVMgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9IVFRQRF9TRVRVSUQgaXMgbm90IHNldApAQCAtODE4LDExICs4NTcsMTAgQEAKICMgQ09ORklHX0ZFQVRVUkVfSUZDT05GSUdfQlJPQURDQVNUX1BMVVMgaXMgbm90IHNldAogIyBDT05GSUdfSUZFTlNMQVZFIGlzIG5vdCBzZXQKICMgQ09ORklHX0lGUExVR0QgaXMgbm90IHNldAotQ09ORklHX0lGVVBET1dOPXkKK0NPTkZJR19JRlVQPXkKK0NPTkZJR19JRkRPV049eQogQ09ORklHX0lGVVBET1dOX0lGU1RBVEVfUEFUSD0iL3Zhci9ydW4vaWZzdGF0ZSIKIENPTkZJR19GRUFUVVJFX0lGVVBET1dOX0lQPXkKLUNPTkZJR19GRUFUVVJFX0lGVVBET1dOX0lQX0JVSUxUSU49eQotIyBDT05GSUdfRkVBVFVSRV9JRlVQRE9XTl9JRkNPTkZJR19CVUlMVElOIGlzIG5vdCBzZXQKIENPTkZJR19GRUFUVVJFX0lGVVBET1dOX0lQVjQ9eQogQ09ORklHX0ZFQVRVUkVfSUZVUERPV05fSVBWNj15CiBDT05GSUdfRkVBVFVSRV9JRlVQRE9XTl9NQVBQSU5HPXkKQEAgLTgzNSwyMiArODczLDMxIEBACiAjIENPTkZJR19GRUFUVVJFX0lORVREX1NVUFBPUlRfQlVJTFRJTl9DSEFSR0VOIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfSU5FVERfUlBDIGlzIG5vdCBzZXQKIENPTkZJR19JUD15CisjIENPTkZJR19JUEFERFIgaXMgbm90IHNldAorIyBDT05GSUdfSVBMSU5LIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQUk9VVEUgaXMgbm90IHNldAorIyBDT05GSUdfSVBUVU5ORUwgaXMgbm90IHNldAorIyBDT05GSUdfSVBSVUxFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQTkVJR0ggaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfSVBfQUREUkVTUz15CiBDT05GSUdfRkVBVFVSRV9JUF9MSU5LPXkKIENPTkZJR19GRUFUVVJFX0lQX1JPVVRFPXkKIENPTkZJR19GRUFUVVJFX0lQX1JPVVRFX0RJUj0iL2V0Yy9pcHJvdXRlMiIKIENPTkZJR19GRUFUVVJFX0lQX1RVTk5FTD15CiAjIENPTkZJR19GRUFUVVJFX0lQX1JVTEUgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9JUF9TSE9SVF9GT1JNUyBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX0lQX05FSUdIIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfSVBfUkFSRV9QUk9UT0NPTFMgaXMgbm90IHNldAotIyBDT05GSUdfSVBBRERSIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQTElOSyBpcyBub3Qgc2V0Ci0jIENPTkZJR19JUFJPVVRFIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQVFVOTkVMIGlzIG5vdCBzZXQKLSMgQ09ORklHX0lQUlVMRSBpcyBub3Qgc2V0CiAjIENPTkZJR19JUENBTEMgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9JUENBTENfRkFOQ1kgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9JUENBTENfTE9OR19PUFRJT05TIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfSVBDQUxDX0ZBTkNZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZBS0VJREVOVEQgaXMgbm90IHNldAorIyBDT05GSUdfTkFNRUlGIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfTkFNRUlGX0VYVEVOREVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX05CRENMSUVOVCBpcyBub3Qgc2V0CitDT05GSUdfTkM9eQorIyBDT05GSUdfTkNfU0VSVkVSIGlzIG5vdCBzZXQKKyMgQ09ORklHX05DX0VYVFJBIGlzIG5vdCBzZXQKKyMgQ09ORklHX05DXzExMF9DT01QQVQgaXMgbm90IHNldAogQ09ORklHX05FVFNUQVQ9eQogIyBDT05GSUdfRkVBVFVSRV9ORVRTVEFUX1dJREUgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9ORVRTVEFUX1BSRyBpcyBub3Qgc2V0CkBAIC04NTgsMTMgKzkwNSwxOSBAQAogIyBDT05GSUdfTlRQRCBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX05UUERfU0VSVkVSIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfTlRQRF9DT05GIGlzIG5vdCBzZXQKK0NPTkZJR19QSU5HPXkKK0NPTkZJR19QSU5HNj15CitDT05GSUdfRkVBVFVSRV9GQU5DWV9QSU5HPXkKICMgQ09ORklHX1BTQ0FOIGlzIG5vdCBzZXQKIENPTkZJR19ST1VURT15CiAjIENPTkZJR19TTEFUVEFDSCBpcyBub3Qgc2V0CisjIENPTkZJR19TU0xfQ0xJRU5UIGlzIG5vdCBzZXQKICMgQ09ORklHX1RDUFNWRCBpcyBub3Qgc2V0CisjIENPTkZJR19VRFBTVkQgaXMgbm90IHNldAogQ09ORklHX1RFTE5FVD15CiAjIENPTkZJR19GRUFUVVJFX1RFTE5FVF9UVFlQRSBpcyBub3Qgc2V0CiBDT05GSUdfRkVBVFVSRV9URUxORVRfQVVUT0xPR0lOPXkKK0NPTkZJR19GRUFUVVJFX1RFTE5FVF9XSURUSD15CiAjIENPTkZJR19URUxORVREIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVEVMTkVURF9TVEFOREFMT05FIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVEVMTkVURF9JTkVURF9XQUlUIGlzIG5vdCBzZXQKQEAgLTg3OSwzMyArOTMyLDQzIEBACiAjIENPTkZJR19GRUFUVVJFX1RGVFBfQkxPQ0tTSVpFIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVEZUUF9QUk9HUkVTU19CQVIgaXMgbm90IHNldAogIyBDT05GSUdfVEZUUF9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfVExTPXkKIENPTkZJR19UUkFDRVJPVVRFPXkKICMgQ09ORklHX1RSQUNFUk9VVEU2IGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVFJBQ0VST1VURV9WRVJCT1NFIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfVFJBQ0VST1VURV9TT1VSQ0VfUk9VVEUgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9UUkFDRVJPVVRFX1VTRV9JQ01QIGlzIG5vdCBzZXQKICMgQ09ORklHX1RVTkNUTCBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1RVTkNUTF9VRyBpcyBub3Qgc2V0CisjIENPTkZJR19WQ09ORklHIGlzIG5vdCBzZXQKK0NPTkZJR19XR0VUPXkKK0NPTkZJR19GRUFUVVJFX1dHRVRfTE9OR19PUFRJT05TPXkKK0NPTkZJR19GRUFUVVJFX1dHRVRfU1RBVFVTQkFSPXkKK0NPTkZJR19GRUFUVVJFX1dHRVRfQVVUSEVOVElDQVRJT049eQorQ09ORklHX0ZFQVRVUkVfV0dFVF9USU1FT1VUPXkKK0NPTkZJR19GRUFUVVJFX1dHRVRfSFRUUFM9eQorIyBDT05GSUdfRkVBVFVSRV9XR0VUX09QRU5TU0wgaXMgbm90IHNldAorIyBDT05GSUdfV0hPSVMgaXMgbm90IHNldAorIyBDT05GSUdfWkNJUCBpcyBub3Qgc2V0CiAjIENPTkZJR19VREhDUEM2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfVURIQ1BDNl9SRkMzNjQ2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfVURIQ1BDNl9SRkM0NzA0IGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfVURIQ1BDNl9SRkM0ODMzIGlzIG5vdCBzZXQKIENPTkZJR19VREhDUEQ9eQotIyBDT05GSUdfREhDUFJFTEFZIGlzIG5vdCBzZXQKLUNPTkZJR19EVU1QTEVBU0VTPXkKICMgQ09ORklHX0ZFQVRVUkVfVURIQ1BEX1dSSVRFX0xFQVNFU19FQVJMWSBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1VESENQRF9CQVNFX0lQX09OX01BQyBpcyBub3Qgc2V0CiBDT05GSUdfREhDUERfTEVBU0VTX0ZJTEU9Ii92YXIvbGliL21pc2MvdWRoY3BkLmxlYXNlcyIKK0NPTkZJR19EVU1QTEVBU0VTPXkKKyMgQ09ORklHX0RIQ1BSRUxBWSBpcyBub3Qgc2V0CiBDT05GSUdfVURIQ1BDPXkKIENPTkZJR19GRUFUVVJFX1VESENQQ19BUlBJTkc9eQogQ09ORklHX0ZFQVRVUkVfVURIQ1BDX1NBTklUSVpFT1BUPXkKK0NPTkZJR19VREhDUENfREVGQVVMVF9TQ1JJUFQ9Ii91c3Ivc2hhcmUvdWRoY3BjL2RlZmF1bHQuc2NyaXB0IgogIyBDT05GSUdfRkVBVFVSRV9VREhDUF9QT1JUIGlzIG5vdCBzZXQKIENPTkZJR19VREhDUF9ERUJVRz0wCiAjIENPTkZJR19GRUFUVVJFX1VESENQX1JGQzMzOTcgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9VREhDUF84MDIxUSBpcyBub3Qgc2V0Ci1DT05GSUdfVURIQ1BDX0RFRkFVTFRfU0NSSVBUPSIvdXNyL3NoYXJlL3VkaGNwYy9kZWZhdWx0LnNjcmlwdCIKIENPTkZJR19VREhDUENfU0xBQ0tfRk9SX0JVR0dZX1NFUlZFUlM9ODAKLUNPTkZJR19JRlVQRE9XTl9VREhDUENfQ01EX09QVElPTlM9Ii1SIC1uIgotIyBDT05GSUdfVURQU1ZEIGlzIG5vdCBzZXQKLSMgQ09ORklHX1ZDT05GSUcgaXMgbm90IHNldAotIyBDT05GSUdfWkNJUCBpcyBub3Qgc2V0CitDT05GSUdfSUZVUERPV05fVURIQ1BDX0NNRF9PUFRJT05TPSItUiAtYiIKIAogIwogIyBQcmludCBVdGlsaXRpZXMKQEAgLTkxOCwyNiArOTgxLDQ1IEBACiAjIE1haWwgVXRpbGl0aWVzCiAjCiAjIENPTkZJR19NQUtFTUlNRSBpcyBub3Qgc2V0Ci1DT05GSUdfRkVBVFVSRV9NSU1FX0NIQVJTRVQ9IiIKICMgQ09ORklHX1BPUE1BSUxESVIgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9QT1BNQUlMRElSX0RFTElWRVJZIGlzIG5vdCBzZXQKICMgQ09ORklHX1JFRk9STUlNRSBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1JFRk9STUlNRV9DT01QQVQgaXMgbm90IHNldAogIyBDT05GSUdfU0VORE1BSUwgaXMgbm90IHNldAorQ09ORklHX0ZFQVRVUkVfTUlNRV9DSEFSU0VUPSIiCiAKICMKICMgUHJvY2VzcyBVdGlsaXRpZXMKICMKK0NPTkZJR19GUkVFPXkKK0NPTkZJR19GVVNFUj15CiAjIENPTkZJR19JT1NUQVQgaXMgbm90IHNldAorQ09ORklHX0tJTEw9eQorQ09ORklHX0tJTExBTEw9eQorIyBDT05GSUdfS0lMTEFMTDUgaXMgbm90IHNldAogIyBDT05GSUdfTFNPRiBpcyBub3Qgc2V0CiAjIENPTkZJR19NUFNUQVQgaXMgbm90IHNldAogIyBDT05GSUdfTk1FVEVSIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BHUkVQIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BLSUxMIGlzIG5vdCBzZXQKK0NPTkZJR19QSURPRj15CisjIENPTkZJR19GRUFUVVJFX1BJRE9GX1NJTkdMRSBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX1BJRE9GX09NSVQgaXMgbm90IHNldAogIyBDT05GSUdfUE1BUCBpcyBub3Qgc2V0CiAjIENPTkZJR19QT1dFUlRPUCBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX1BPV0VSVE9QX0lOVEVSQUNUSVZFIGlzIG5vdCBzZXQKK0NPTkZJR19QUz15CitDT05GSUdfRkVBVFVSRV9QU19XSURFPXkKK0NPTkZJR19GRUFUVVJFX1BTX0xPTkc9eQorIyBDT05GSUdfRkVBVFVSRV9QU19USU1FIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfUFNfVU5VU1VBTF9TWVNURU1TIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfUFNfQURESVRJT05BTF9DT0xVTU5TIGlzIG5vdCBzZXQKICMgQ09ORklHX1BTVFJFRSBpcyBub3Qgc2V0CiAjIENPTkZJR19QV0RYIGlzIG5vdCBzZXQKICMgQ09ORklHX1NNRU1DQVAgaXMgbm90IHNldAorQ09ORklHX0JCX1NZU0NUTD15CiBDT05GSUdfVE9QPXkKKyMgQ09ORklHX0ZFQVRVUkVfVE9QX0lOVEVSQUNUSVZFIGlzIG5vdCBzZXQKIENPTkZJR19GRUFUVVJFX1RPUF9DUFVfVVNBR0VfUEVSQ0VOVEFHRT15CiBDT05GSUdfRkVBVFVSRV9UT1BfQ1BVX0dMT0JBTF9QRVJDRU5UUz15CiAjIENPTkZJR19GRUFUVVJFX1RPUF9TTVBfQ1BVIGlzIG5vdCBzZXQKQEAgLTk0Niw4NCArMTAyOCw2OSBAQAogIyBDT05GSUdfRkVBVFVSRV9UT1BNRU0gaXMgbm90IHNldAogQ09ORklHX1VQVElNRT15CiAjIENPTkZJR19GRUFUVVJFX1VQVElNRV9VVE1QX1NVUFBPUlQgaXMgbm90IHNldAotQ09ORklHX0ZSRUU9eQotQ09ORklHX0ZVU0VSPXkKLUNPTkZJR19LSUxMPXkKLUNPTkZJR19LSUxMQUxMPXkKLSMgQ09ORklHX0tJTExBTEw1IGlzIG5vdCBzZXQKLSMgQ09ORklHX1BHUkVQIGlzIG5vdCBzZXQKLUNPTkZJR19QSURPRj15Ci0jIENPTkZJR19GRUFUVVJFX1BJRE9GX1NJTkdMRSBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX1BJRE9GX09NSVQgaXMgbm90IHNldAotIyBDT05GSUdfUEtJTEwgaXMgbm90IHNldAotQ09ORklHX1BTPXkKLUNPTkZJR19GRUFUVVJFX1BTX1dJREU9eQotQ09ORklHX0ZFQVRVUkVfUFNfTE9ORz15Ci0jIENPTkZJR19GRUFUVVJFX1BTX1RJTUUgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9QU19BRERJVElPTkFMX0NPTFVNTlMgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9QU19VTlVTVUFMX1NZU1RFTVMgaXMgbm90IHNldAotQ09ORklHX1JFTklDRT15Ci1DT05GSUdfQkJfU1lTQ1RMPXkKLSMgQ09ORklHX0ZFQVRVUkVfU0hPV19USFJFQURTIGlzIG5vdCBzZXQKIENPTkZJR19XQVRDSD15CisjIENPTkZJR19GRUFUVVJFX1NIT1dfVEhSRUFEUyBpcyBub3Qgc2V0CiAKICMKICMgUnVuaXQgVXRpbGl0aWVzCiAjCi0jIENPTkZJR19SVU5TViBpcyBub3Qgc2V0Ci0jIENPTkZJR19SVU5TVkRJUiBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX1JVTlNWRElSX0xPRyBpcyBub3Qgc2V0Ci0jIENPTkZJR19TViBpcyBub3Qgc2V0Ci1DT05GSUdfU1ZfREVGQVVMVF9TRVJWSUNFX0RJUj0iIgotIyBDT05GSUdfU1ZMT0dEIGlzIG5vdCBzZXQKICMgQ09ORklHX0NIUFNUIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFVFVJREdJRCBpcyBub3Qgc2V0CiAjIENPTkZJR19FTlZVSURHSUQgaXMgbm90IHNldAogIyBDT05GSUdfRU5WRElSIGlzIG5vdCBzZXQKICMgQ09ORklHX1NPRlRMSU1JVCBpcyBub3Qgc2V0Ci0KLSMKLSMgIFNFTGludXggdXRpbGl0aWVzCi0jCisjIENPTkZJR19SVU5TViBpcyBub3Qgc2V0CisjIENPTkZJR19SVU5TVkRJUiBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX1JVTlNWRElSX0xPRyBpcyBub3Qgc2V0CisjIENPTkZJR19TViBpcyBub3Qgc2V0CitDT05GSUdfU1ZfREVGQVVMVF9TRVJWSUNFX0RJUj0iIgorIyBDT05GSUdfU1ZDIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NWTE9HRCBpcyBub3Qgc2V0CiAjIENPTkZJR19DSENPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0NIQ09OX0xPTkdfT1BUSU9OUyBpcyBub3Qgc2V0CiAjIENPTkZJR19HRVRFTkZPUkNFIGlzIG5vdCBzZXQKICMgQ09ORklHX0dFVFNFQk9PTCBpcyBub3Qgc2V0CiAjIENPTkZJR19MT0FEX1BPTElDWSBpcyBub3Qgc2V0CiAjIENPTkZJR19NQVRDSFBBVEhDT04gaXMgbm90IHNldAotIyBDT05GSUdfUkVTVE9SRUNPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19SVU5DT04gaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9SVU5DT05fTE9OR19PUFRJT05TIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFTElOVVhFTkFCTEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFU1RBVFVTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFVEVORk9SQ0UgaXMgbm90IHNldAogIyBDT05GSUdfU0VURklMRVMgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9TRVRGSUxFU19DSEVDS19PUFRJT04gaXMgbm90IHNldAorIyBDT05GSUdfUkVTVE9SRUNPTiBpcyBub3Qgc2V0CiAjIENPTkZJR19TRVRTRUJPT0wgaXMgbm90IHNldAotIyBDT05GSUdfU0VTVEFUVVMgaXMgbm90IHNldAogCiAjCiAjIFNoZWxscwogIworQ09ORklHX1NIX0lTX0FTSD15CisjIENPTkZJR19TSF9JU19IVVNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NIX0lTX05PTkUgaXMgbm90IHNldAorIyBDT05GSUdfQkFTSF9JU19BU0ggaXMgbm90IHNldAorIyBDT05GSUdfQkFTSF9JU19IVVNIIGlzIG5vdCBzZXQKK0NPTkZJR19CQVNIX0lTX05PTkU9eQogQ09ORklHX0FTSD15CitDT05GSUdfQVNIX09QVElNSVpFX0ZPUl9TSVpFPXkKK0NPTkZJR19BU0hfSU5URVJOQUxfR0xPQj15CiBDT05GSUdfQVNIX0JBU0hfQ09NUEFUPXkKLSMgQ09ORklHX0FTSF9JRExFX1RJTUVPVVQgaXMgbm90IHNldAogQ09ORklHX0FTSF9KT0JfQ09OVFJPTD15CiBDT05GSUdfQVNIX0FMSUFTPXkKLUNPTkZJR19BU0hfR0VUT1BUUz15Ci1DT05GSUdfQVNIX0JVSUxUSU5fRUNITz15Ci1DT05GSUdfQVNIX0JVSUxUSU5fUFJJTlRGPXkKLUNPTkZJR19BU0hfQlVJTFRJTl9URVNUPXkKLUNPTkZJR19BU0hfSEVMUD15Ci1DT05GSUdfQVNIX0NNRENNRD15Ci0jIENPTkZJR19BU0hfTUFJTCBpcyBub3Qgc2V0Ci1DT05GSUdfQVNIX09QVElNSVpFX0ZPUl9TSVpFPXkKICMgQ09ORklHX0FTSF9SQU5ET01fU1VQUE9SVCBpcyBub3Qgc2V0CiBDT05GSUdfQVNIX0VYUEFORF9QUk1UPXkKKyMgQ09ORklHX0FTSF9JRExFX1RJTUVPVVQgaXMgbm90IHNldAorIyBDT05GSUdfQVNIX01BSUwgaXMgbm90IHNldAorQ09ORklHX0FTSF9FQ0hPPXkKK0NPTkZJR19BU0hfUFJJTlRGPXkKK0NPTkZJR19BU0hfVEVTVD15CitDT05GSUdfQVNIX0hFTFA9eQorQ09ORklHX0FTSF9HRVRPUFRTPXkKK0NPTkZJR19BU0hfQ01EQ01EPXkKICMgQ09ORklHX0NUVFlIQUNLIGlzIG5vdCBzZXQKICMgQ09ORklHX0hVU0ggaXMgbm90IHNldAogIyBDT05GSUdfSFVTSF9CQVNIX0NPTVBBVCBpcyBub3Qgc2V0CiAjIENPTkZJR19IVVNIX0JSQUNFX0VYUEFOU0lPTiBpcyBub3Qgc2V0Ci0jIENPTkZJR19IVVNIX0hFTFAgaXMgbm90IHNldAogIyBDT05GSUdfSFVTSF9JTlRFUkFDVElWRSBpcyBub3Qgc2V0CiAjIENPTkZJR19IVVNIX1NBVkVISVNUT1JZIGlzIG5vdCBzZXQKICMgQ09ORklHX0hVU0hfSk9CIGlzIG5vdCBzZXQKQEAgLTEwMzQsMTcgKzExMDEsMzAgQEAKICMgQ09ORklHX0hVU0hfRlVOQ1RJT05TIGlzIG5vdCBzZXQKICMgQ09ORklHX0hVU0hfTE9DQUwgaXMgbm90IHNldAogIyBDT05GSUdfSFVTSF9SQU5ET01fU1VQUE9SVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19IVVNIX0VYUE9SVF9OIGlzIG5vdCBzZXQKICMgQ09ORklHX0hVU0hfTU9ERV9YIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hVU0hfRUNITyBpcyBub3Qgc2V0CisjIENPTkZJR19IVVNIX1BSSU5URiBpcyBub3Qgc2V0CisjIENPTkZJR19IVVNIX1RFU1QgaXMgbm90IHNldAorIyBDT05GSUdfSFVTSF9IRUxQIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hVU0hfRVhQT1JUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hVU0hfRVhQT1JUX04gaXMgbm90IHNldAorIyBDT05GSUdfSFVTSF9LSUxMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hVU0hfV0FJVCBpcyBub3Qgc2V0CisjIENPTkZJR19IVVNIX1RSQVAgaXMgbm90IHNldAorIyBDT05GSUdfSFVTSF9UWVBFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hVU0hfUkVBRCBpcyBub3Qgc2V0CisjIENPTkZJR19IVVNIX1NFVCBpcyBub3Qgc2V0CisjIENPTkZJR19IVVNIX1VOU0VUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hVU0hfVUxJTUlUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hVU0hfVU1BU0sgaXMgbm90IHNldAorIyBDT05GSUdfSFVTSF9NRU1MRUFLIGlzIG5vdCBzZXQKICMgQ09ORklHX01TSCBpcyBub3Qgc2V0Ci1DT05GSUdfRkVBVFVSRV9TSF9JU19BU0g9eQotIyBDT05GSUdfRkVBVFVSRV9TSF9JU19IVVNIIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfU0hfSVNfTk9ORSBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX0JBU0hfSVNfQVNIIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZFQVRVUkVfQkFTSF9JU19IVVNIIGlzIG5vdCBzZXQKLUNPTkZJR19GRUFUVVJFX0JBU0hfSVNfTk9ORT15Ci1DT05GSUdfU0hfTUFUSF9TVVBQT1JUPXkKLSMgQ09ORklHX1NIX01BVEhfU1VQUE9SVF82NCBpcyBub3Qgc2V0CisKKyMKKyMgT3B0aW9ucyBjb21tb24gdG8gYWxsIHNoZWxscworIworQ09ORklHX0ZFQVRVUkVfU0hfTUFUSD15CisjIENPTkZJR19GRUFUVVJFX1NIX01BVEhfNjQgaXMgbm90IHNldAogQ09ORklHX0ZFQVRVUkVfU0hfRVhUUkFfUVVJRVQ9eQogIyBDT05GSUdfRkVBVFVSRV9TSF9TVEFOREFMT05FIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfU0hfTk9GT1JLIGlzIG5vdCBzZXQKQEAgLTEwNTMsMTkgKzExMzMsMTcgQEAKICMKICMgU3lzdGVtIExvZ2dpbmcgVXRpbGl0aWVzCiAjCitDT05GSUdfS0xPR0Q9eQorQ09ORklHX0ZFQVRVUkVfS0xPR0RfS0xPR0NUTD15CitDT05GSUdfTE9HR0VSPXkKKyMgQ09ORklHX0xPR1JFQUQgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9MT0dSRUFEX1JFRFVDRURfTE9DS0lORyBpcyBub3Qgc2V0CiAjIENPTkZJR19TWVNMT0dEIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfUk9UQVRFX0xPR0ZJTEUgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9SRU1PVEVfTE9HIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfU1lTTE9HRF9EVVAgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9TWVNMT0dEX0NGRyBpcyBub3Qgc2V0CitDT05GSUdfRkVBVFVSRV9TWVNMT0dEX1JFQURfQlVGRkVSX1NJWkU9MAogIyBDT05GSUdfRkVBVFVSRV9JUENfU1lTTE9HIGlzIG5vdCBzZXQKLSMgQ09ORklHX0xPR1JFQUQgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9MT0dSRUFEX1JFRFVDRURfTE9DS0lORyBpcyBub3Qgc2V0CitDT05GSUdfRkVBVFVSRV9JUENfU1lTTE9HX0JVRkZFUl9TSVpFPTAKICMgQ09ORklHX0ZFQVRVUkVfS01TR19TWVNMT0cgaXMgbm90IHNldAotQ09ORklHX0tMT0dEPXkKLQotIwotIyBrbG9nZCBzaG91bGQgbm90IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBzeXNsb2cgdG8ga2VybmVsIHByaW50ayBidWZmZXIKLSMKLUNPTkZJR19GRUFUVVJFX0tMT0dEX0tMT0dDVEw9eQotQ09ORklHX0xPR0dFUj15CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2lwX2ZpeF9wcm9ibGVtX29uX21pcHM2NF9uNjRfYmlnX2VuZGlhbl9tdXNsX3N5c3RlbXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2lwX2ZpeF9wcm9ibGVtX29uX21pcHM2NF9uNjRfYmlnX2VuZGlhbl9tdXNsX3N5c3RlbXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxYzU2NTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9pcF9maXhfcHJvYmxlbV9vbl9taXBzNjRfbjY0X2JpZ19lbmRpYW5fbXVzbF9zeXN0ZW1zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotRnJvbSA0YWIzNzJkNDlhNmU4MmIwYmYwOTdkZWRiOTZkMjYzMzBjNWYyZDVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3phYm9sY3MgTmFneSA8bnN6QHBvcnQ3MC5uZXQ+Ci1EYXRlOiBTdW4sIDI0IEFwciAyMDE2IDE3OjM5OjAyICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGlwOiBmaXggcHJvYmxlbSBvbiBtaXBzNjQgbjY0IGJpZyBlbmRpYW4gbXVzbCBzeXN0ZW1zCi0KLVVzZSBkZXNpZ25hdGVkIGluaXRpYWxpemVycyBmb3Igc3RydWN0IG1zZ2hkci4KLVRoZSBzdHJ1Y3QgbGF5b3V0IGlzIG5vbi1wb3J0YWJsZSBhbmQgbXVzbCBsaWJjIGRvZXMgbm90IG1hdGNoIHdoYXQgYnVzeWJveCBleHBlY3RzLgotCi1TaWduZWQtb2ZmLWJ5OiBTemFib2xjcyBOYWd5IDxuc3pAcG9ydDcwLm5ldD4KLVRlc3RlZC1ieTogV2FsZGVtYXIgQnJvZGtvcmIgPHdieEBvcGVuYWRrLm9yZz4KLVNpZ25lZC1vZmYtYnk6IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotaHR0cHM6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPTRhYjM3MmQ0OWE2ZTgyYjBiZjA5N2RlZGI5NmQyNjMzMGM1ZjJkNWYKLQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIG5ldHdvcmtpbmcvbGliaXByb3V0ZS9saWJuZXRsaW5rLmMgfCAzNyArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbmV0d29ya2luZy9saWJpcHJvdXRlL2xpYm5ldGxpbmsuYyBiL25ldHdvcmtpbmcvbGliaXByb3V0ZS9saWJuZXRsaW5rLmMKLWluZGV4IGM3NTMzYTQuLmNiYjVkYWYgMTAwNjQ0Ci0tLS0gYS9uZXR3b3JraW5nL2xpYmlwcm91dGUvbGlibmV0bGluay5jCi0rKysgYi9uZXR3b3JraW5nL2xpYmlwcm91dGUvbGlibmV0bGluay5jCi1AQCAtNzEsMTEgKzcxLDE1IEBAIGludCBGQVNUX0ZVTkMgcnRubF9kdW1wX3JlcXVlc3Qoc3RydWN0IHJ0bmxfaGFuZGxlICpydGgsIGludCB0eXBlLCB2b2lkICpyZXEsIGluCi0gCXN0cnVjdCBubG1zZ2hkciBubGg7Ci0gCXN0cnVjdCBzb2NrYWRkcl9ubCBubGFkZHI7Ci0gCXN0cnVjdCBpb3ZlYyBpb3ZbMl0gPSB7IHsgJm5saCwgc2l6ZW9mKG5saCkgfSwgeyByZXEsIGxlbiB9IH07Ci0rCS8qIFVzZSBkZXNpZ25hdGVkIGluaXRpYWxpemVycywgc3RydWN0IGxheW91dCBpcyBub24tcG9ydGFibGUgKi8KLSAJc3RydWN0IG1zZ2hkciBtc2cgPSB7Ci0tCQkodm9pZCopJm5sYWRkciwgc2l6ZW9mKG5sYWRkciksCi0tCQlpb3YsICAyLAotLQkJTlVMTCwgMCwKLS0JCTAKLSsJCS5tc2dfbmFtZSA9ICh2b2lkKikmbmxhZGRyLAotKwkJLm1zZ19uYW1lbGVuID0gc2l6ZW9mKG5sYWRkciksCi0rCQkubXNnX2lvdiA9IGlvdiwKLSsJCS5tc2dfaW92bGVuID0gMiwKLSsJCS5tc2dfY29udHJvbCA9IE5VTEwsCi0rCQkubXNnX2NvbnRyb2xsZW4gPSAwLAotKwkJLm1zZ19mbGFncyA9IDAKLSAJfTsKLSAKLSAJbWVtc2V0KCZubGFkZHIsIDAsIHNpemVvZihubGFkZHIpKTsKLUBAIC0xMDQsMTIgKzEwOCwxNSBAQCBzdGF0aWMgaW50IHJ0bmxfZHVtcF9maWx0ZXIoc3RydWN0IHJ0bmxfaGFuZGxlICpydGgsCi0gCXdoaWxlICgxKSB7Ci0gCQlpbnQgc3RhdHVzOwotIAkJc3RydWN0IG5sbXNnaGRyICpoOwotLQotKwkJLyogVXNlIGRlc2lnbmF0ZWQgaW5pdGlhbGl6ZXJzLCBzdHJ1Y3QgbGF5b3V0IGlzIG5vbi1wb3J0YWJsZSAqLwotIAkJc3RydWN0IG1zZ2hkciBtc2cgPSB7Ci0tCQkJKHZvaWQqKSZubGFkZHIsIHNpemVvZihubGFkZHIpLAotLQkJCSZpb3YsIDEsCi0tCQkJTlVMTCwgMCwKLS0JCQkwCi0rCQkJLm1zZ19uYW1lID0gKHZvaWQqKSZubGFkZHIsCi0rCQkJLm1zZ19uYW1lbGVuID0gc2l6ZW9mKG5sYWRkciksCi0rCQkJLm1zZ19pb3YgPSAmaW92LAotKwkJCS5tc2dfaW92bGVuID0gMSwKLSsJCQkubXNnX2NvbnRyb2wgPSBOVUxMLAotKwkJCS5tc2dfY29udHJvbGxlbiA9IDAsCi0rCQkJLm1zZ19mbGFncyA9IDAKLSAJCX07Ci0gCi0gCQlzdGF0dXMgPSByZWN2bXNnKHJ0aC0+ZmQsICZtc2csIDApOwotQEAgLTIxMSwxMSArMjE4LDE1IEBAIGludCBGQVNUX0ZVTkMgcnRubF90YWxrKHN0cnVjdCBydG5sX2hhbmRsZSAqcnRubCwgc3RydWN0IG5sbXNnaGRyICpuLAotIAlzdHJ1Y3Qgc29ja2FkZHJfbmwgbmxhZGRyOwotIAlzdHJ1Y3QgaW92ZWMgaW92ID0geyAodm9pZCopbiwgbi0+bmxtc2dfbGVuIH07Ci0gCWNoYXIgICAqYnVmID0geG1hbGxvYyg4KjEwMjQpOyAvKiBhdm9pZCBiaWcgc3RhY2sgYnVmZmVyICovCi0rCS8qIFVzZSBkZXNpZ25hdGVkIGluaXRpYWxpemVycywgc3RydWN0IGxheW91dCBpcyBub24tcG9ydGFibGUgKi8KLSAJc3RydWN0IG1zZ2hkciBtc2cgPSB7Ci0tCQkodm9pZCopJm5sYWRkciwgc2l6ZW9mKG5sYWRkciksCi0tCQkmaW92LCAxLAotLQkJTlVMTCwgMCwKLS0JCTAKLSsJCS5tc2dfbmFtZSA9ICh2b2lkKikmbmxhZGRyLAotKwkJLm1zZ19uYW1lbGVuID0gc2l6ZW9mKG5sYWRkciksCi0rCQkubXNnX2lvdiA9ICZpb3YsCi0rCQkubXNnX2lvdmxlbiA9IDEsCi0rCQkubXNnX2NvbnRyb2wgPSBOVUxMLAotKwkJLm1zZ19jb250cm9sbGVuID0gMCwKLSsJCS5tc2dfZmxhZ3MgPSAwCi0gCX07Ci0gCi0gCW1lbXNldCgmbmxhZGRyLCAwLCBzaXplb2YobmxhZGRyKSk7Ci0tLSAKLTIuMy41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvbWFrZWZpbGUtZml4LWJhY2twb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9tYWtlZmlsZS1maXgtYmFja3BvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlOTg0MmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9tYWtlZmlsZS1maXgtYmFja3BvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDllNTgyMGE4NjI3NzgxOGMyZjgzYzExYzJhYTc2ZDdmMGEzODI4M2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgotRGF0ZTogU3VuLCAxNCBBdWcgMjAxNiAwMjo1NDoyNyArMDIwMAotU3ViamVjdDogYnVpbGQgc3lzdGVtOiBmaXggaW5jbHVkZS9OVU1fQVBQTEVUUy5oIGdlbmVyYXRpb24KLQotVEJILCBpdCdzIG1vcmUgbGlrZSAid29yayBhcm91bmQgbXkgYmFkIG1ha2VmaWxlLWZ1IiB0aGFuICJmaXgiLi4uCi0KLVNpZ25lZC1vZmYtYnk6IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci0tLS0KLSBhcHBsZXRzL0tidWlsZC5zcmMgfCA3ICsrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLWRpZmYgLS1naXQgYS9hcHBsZXRzL0tidWlsZC5zcmMgYi9hcHBsZXRzL0tidWlsZC5zcmMKLWluZGV4IGI2MTIzOTkuLjVjYzE4MjcgMTAwNjQ0Ci0tLS0gYS9hcHBsZXRzL0tidWlsZC5zcmMKLSsrKyBiL2FwcGxldHMvS2J1aWxkLnNyYwotQEAgLTI5LDcgKzI5LDcgQEAgYXBwbGV0cy9hcHBsZXRzLm86IGluY2x1ZGUvdXNhZ2VfY29tcHJlc3NlZC5oIGluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oCi0gCi0gYXBwbGV0cy9hcHBsZXRfdGFibGVzOiAuY29uZmlnIGluY2x1ZGUvYXBwbGV0cy5oCi0gYXBwbGV0cy91c2FnZTogICAgICAgICAuY29uZmlnIGluY2x1ZGUvYXBwbGV0cy5oCi0tYXBwbGV0cy91c2FnZV9wb2Q6ICAgICAuY29uZmlnIGluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oIGluY2x1ZGUvYXBwbGV0cy5oCi0rYXBwbGV0cy91c2FnZV9wb2Q6ICAgICAuY29uZmlnIGluY2x1ZGUvYXBwbGV0cy5oIGluY2x1ZGUvYXBwbGV0X3RhYmxlcy5oIGluY2x1ZGUvTlVNX0FQUExFVFMuaAotIAotIHF1aWV0X2NtZF9nZW5fdXNhZ2VfY29tcHJlc3NlZCA9IEdFTiAgICAgaW5jbHVkZS91c2FnZV9jb21wcmVzc2VkLmgKLSAgICAgICBjbWRfZ2VuX3VzYWdlX2NvbXByZXNzZWQgPSAkKHNyY3RyZWVfc2xhc2gpYXBwbGV0cy91c2FnZV9jb21wcmVzc2VkIGluY2x1ZGUvdXNhZ2VfY29tcHJlc3NlZC5oIGFwcGxldHMKLUBAIC00MCw4ICs0MCw1IEBAIGluY2x1ZGUvdXNhZ2VfY29tcHJlc3NlZC5oOiBhcHBsZXRzL3VzYWdlICQoc3JjdHJlZV9zbGFzaClhcHBsZXRzL3VzYWdlX2NvbXByZXNzCi0gcXVpZXRfY21kX2dlbl9hcHBsZXRfdGFibGVzID0gR0VOICAgICBpbmNsdWRlL2FwcGxldF90YWJsZXMuaAotICAgICAgIGNtZF9nZW5fYXBwbGV0X3RhYmxlcyA9IGFwcGxldHMvYXBwbGV0X3RhYmxlcyBpbmNsdWRlL2FwcGxldF90YWJsZXMuaCBpbmNsdWRlL05VTV9BUFBMRVRTLmgKLSAKLS1pbmNsdWRlL2FwcGxldF90YWJsZXMuaDogYXBwbGV0cy9hcHBsZXRfdGFibGVzCi0tCSQoY2FsbCBjbWQsZ2VuX2FwcGxldF90YWJsZXMpCi0tCi0taW5jbHVkZS9OVU1fQVBQTEVUUy5oOiBhcHBsZXRzL2FwcGxldF90YWJsZXMKLStpbmNsdWRlL2FwcGxldF90YWJsZXMuaCBpbmNsdWRlL05VTV9BUFBMRVRTLmg6IGFwcGxldHMvYXBwbGV0X3RhYmxlcwotIAkkKGNhbGwgY21kLGdlbl9hcHBsZXRfdGFibGVzKQotLS0gCi1jZ2l0IHYwLjEyCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvbXVzbC5jZmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L211c2wuY2ZnCmluZGV4IGZhY2ZlODUuLjZmZmZjOTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvbXVzbC5jZmcKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9tdXNsLmNmZwpAQCAtMiw3ICsyLDYgQEAKICMgQ09ORklHX1NFTElOVVggaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9IQVZFX1JQQyBpcyBub3Qgc2V0CiAjIENPTkZJR19XRVJST1IgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9TWVNURU1EIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfVklfUkVHRVhfU0VBUkNIIGlzIG5vdCBzZXQKICMgQ09ORklHX1BBTSBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX0lORVREX1JQQyBpcyBub3Qgc2V0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMjQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfMS4yNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzg1ODA4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfMS4yNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotcmVxdWlyZSBidXN5Ym94LmluYwotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuYnVzeWJveC5uZXQvZG93bmxvYWRzL2J1c3lib3gtJHtQVn0udGFyLmJ6MjtuYW1lPXRhcmJhbGwgXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC11ZGhjcGMtbm9fZGVjb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZmluZC10b3VjaHNjcmVlbi5zaCBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LWNyb24gXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1odHRwZCBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXVkaGNwZCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWZhdWx0LnNjcmlwdCBcCi0gICAgICAgICAgIGZpbGU6Ly9zaW1wbGUuc2NyaXB0IFwKLSAgICAgICAgICAgZmlsZTovL2h3Y2xvY2suc2ggXAotICAgICAgICAgICBmaWxlOi8vbW91bnQuYnVzeWJveCBcCi0gICAgICAgICAgIGZpbGU6Ly9zeXNsb2cgXAotICAgICAgICAgICBmaWxlOi8vc3lzbG9nLXN0YXJ0dXAuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9zeXNsb2cuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXN5c2xvZy5kZWZhdWx0IFwKLSAgICAgICAgICAgZmlsZTovL21kZXYgXAotICAgICAgICAgICBmaWxlOi8vbWRldi5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL21kZXYtbW91bnQuc2ggXAotICAgICAgICAgICBmaWxlOi8vdW1vdW50LmJ1c3lib3ggXAotICAgICAgICAgICBmaWxlOi8vZGVmY29uZmlnIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtc3lzbG9nLnNlcnZpY2UuaW4gXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1rbG9nZC5zZXJ2aWNlLmluIFwKLSAgICAgICAgICAgZmlsZTovL2ZhaWxfb25fbm9fbWVkaWEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL2luZXRkLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vaW5ldGQgXAotICAgICAgICAgICBmaWxlOi8vbG9naW4tdXRpbGl0aWVzLmNmZyBcCi0gICAgICAgICAgIGZpbGU6Ly9yZWNvZ25pemVfY29ubm1hbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1jcm9zcy1tZW51Y29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLUNDLXdoZW4tbGlua2luZy1pbnN0ZWFkLW9mLUxELWFuZC11c2UtQ0ZMQUdTLWFuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LTEuMjQuMS11bnppcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LTEuMjQuMS11bnppcC1yZWdyZXNzaW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtMS4yNC4xLXRydW5jYXRlLW9wZW4tbW9kZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZsb2NrLXVwZGF0ZS10aGUtYmVoYXZpb3VyLW9mLWMtcGFyYW1ldGVyLXRvLW1hdGNoLXUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbW91bnQtdmlhLWxhYmVsLmNmZyBcCi0gICAgICAgICAgIGZpbGU6Ly9zaGExc3VtLmNmZyBcCi0gICAgICAgICAgIGZpbGU6Ly9zaGEyNTZzdW0uY2ZnIFwKLSAgICAgICAgICAgZmlsZTovL2dldG9wdHMuY2ZnIFwKLSAgICAgICAgICAgZmlsZTovL3Jlc2l6ZS5jZmcgXAotICAgICAgICAgICAke0BbIiIsICJmaWxlOi8vaW5pdC5jZmciXVsoZC5nZXRWYXIoJ1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXInKSA9PSAnYnVzeWJveCcpXX0gXAotICAgICAgICAgICAke0BbIiIsICJmaWxlOi8vbWRldi5jZmciXVsoZC5nZXRWYXIoJ1ZJUlRVQUwtUlVOVElNRV9kZXZfbWFuYWdlcicpID09ICdidXN5Ym94LW1kZXYnKV19IFwKLSAgICAgICAgICAgZmlsZTovL3N5c2xvZy5jZmcgXAotICAgICAgICAgICBmaWxlOi8vaW5pdHRhYiBcCi0gICAgICAgICAgIGZpbGU6Ly9yY1MgXAotICAgICAgICAgICBmaWxlOi8vcmNLIFwKLSAgICAgICAgICAgZmlsZTovL3J1bmxldmVsIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTIxNDgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtMjE0Ny5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0yMTQ3XzIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtNjMwMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9pcF9maXhfcHJvYmxlbV9vbl9taXBzNjRfbjY0X2JpZ19lbmRpYW5fbXVzbF9zeXN0ZW1zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21ha2VmaWxlLWZpeC1iYWNrcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXNlZC1maXgtc2VkLW4tZmx1c2hlcy1wYXR0ZXJuLXNwYWNlLXRlcm1pbmF0ZXMtZWFybHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1rYnVpbGQtcmFjZS1maXgtY29tbWl0LWQ4ZTYxYmIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY29tbWl0LWFwcGxldF90YWJsZXMtZml4LWNvbW1pdC0wZGRkYmMxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21ha2VmaWxlLWxpYmJiLXJhY2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJpcHJvdXRlLWhhbmRsZS10YWJsZS1pZHMtbGFyZ2VyLXRoYW4tMjU1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2lmdXBkb3duLXBhc3MtaW50ZXJmYWNlLWRldmljZS1uYW1lLWZvci1pcHY2LXJvdXRlLWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQlVHOTA3MV9idWZmZXJfb3ZlcmZsb3dfYXJwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtdGFyLWFkZC1JRl9GRUFUVVJFXy1jaGVja3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pcHJvdXRlLXN1cHBvcnQtc2NvcGUtLi1DbG9zZXMtODU2MS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWlwLWZpeC1hbi1pbXByb3Blci1vcHRpbWl6YXRpb24tcmVxLnIucnRtX3Njb3BlLW1heS0ucGF0Y2ggXAotIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vbXVzbC5jZmcgIgotCi1TUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICJiZTk4YTQwY2FkZjg0Y2UyZDZiMDVmYTQxYTI3NWM2YSIKLVNSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gIjM3ZDAzMTMyY2MwNzg5MzczNjBiMzkyMTcwYjdhMWQwZTViMzIyZWVlOWY1N2MwYjgyMjkyYThiMWYwYWZlM2QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMjcuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfMS4yNy4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2YTYzNDIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMjcuMi5iYgpAQCAtMCwwICsxLDUyIEBACityZXF1aXJlIGJ1c3lib3guaW5jCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5idXN5Ym94Lm5ldC9kb3dubG9hZHMvYnVzeWJveC0ke1BWfS50YXIuYnoyO25hbWU9dGFyYmFsbCBcCisgICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXVkaGNwYy1ub19kZWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maW5kLXRvdWNoc2NyZWVuLnNoIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gtY3JvbiBcCisgICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LWh0dHBkIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gtdWRoY3BkIFwKKyAgICAgICAgICAgZmlsZTovL2RlZmF1bHQuc2NyaXB0IFwKKyAgICAgICAgICAgZmlsZTovL3NpbXBsZS5zY3JpcHQgXAorICAgICAgICAgICBmaWxlOi8vaHdjbG9jay5zaCBcCisgICAgICAgICAgIGZpbGU6Ly9tb3VudC5idXN5Ym94IFwKKyAgICAgICAgICAgZmlsZTovL3N5c2xvZyBcCisgICAgICAgICAgIGZpbGU6Ly9zeXNsb2ctc3RhcnR1cC5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL3N5c2xvZy5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gtc3lzbG9nLmRlZmF1bHQgXAorICAgICAgICAgICBmaWxlOi8vbWRldiBcCisgICAgICAgICAgIGZpbGU6Ly9tZGV2LmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vbWRldi1tb3VudC5zaCBcCisgICAgICAgICAgIGZpbGU6Ly91bW91bnQuYnVzeWJveCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWZjb25maWcgXAorICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1zeXNsb2cuc2VydmljZS5pbiBcCisgICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LWtsb2dkLnNlcnZpY2UuaW4gXAorICAgICAgICAgICBmaWxlOi8vZmFpbF9vbl9ub19tZWRpYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vaW5ldGQuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9pbmV0ZCBcCisgICAgICAgICAgIGZpbGU6Ly9sb2dpbi11dGlsaXRpZXMuY2ZnIFwKKyAgICAgICAgICAgZmlsZTovL3JlY29nbml6ZV9jb25ubWFuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LWNyb3NzLW1lbnVjb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtQ0Mtd2hlbi1saW5raW5nLWluc3RlYWQtb2YtTEQtYW5kLXVzZS1DRkxBR1MtYW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21vdW50LXZpYS1sYWJlbC5jZmcgXAorICAgICAgICAgICBmaWxlOi8vc2hhMXN1bS5jZmcgXAorICAgICAgICAgICBmaWxlOi8vc2hhMjU2c3VtLmNmZyBcCisgICAgICAgICAgIGZpbGU6Ly9nZXRvcHRzLmNmZyBcCisgICAgICAgICAgIGZpbGU6Ly9yZXNpemUuY2ZnIFwKKyAgICAgICAgICAgJHtAWyIiLCAiZmlsZTovL2luaXQuY2ZnIl1bKGQuZ2V0VmFyKCdWSVJUVUFMLVJVTlRJTUVfaW5pdF9tYW5hZ2VyJykgPT0gJ2J1c3lib3gnKV19IFwKKyAgICAgICAgICAgJHtAWyIiLCAiZmlsZTovL21kZXYuY2ZnIl1bKGQuZ2V0VmFyKCdWSVJUVUFMLVJVTlRJTUVfZGV2X21hbmFnZXInKSA9PSAnYnVzeWJveC1tZGV2JyldfSBcCisgICAgICAgICAgIGZpbGU6Ly9zeXNsb2cuY2ZnIFwKKyAgICAgICAgICAgZmlsZTovL2luaXR0YWIgXAorICAgICAgICAgICBmaWxlOi8vcmNTIFwKKyAgICAgICAgICAgZmlsZTovL3JjSyBcCisgICAgICAgICAgIGZpbGU6Ly9ydW5sZXZlbCBcCisgICAgICAgICAgIGZpbGU6Ly9tYWtlZmlsZS1saWJiYi1yYWNlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDExLTUzMjUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTU4NzMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1DVkUtMjAxNy0xNjU0NC5wYXRjaCBcCisiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly9tdXNsLmNmZyAiCisKK1NSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gIjQ3NjE4NmY0YmFiODE3ODFkYWIyMzY5YmZkNDI3MzRlIgorU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiOWQ0YmU1MTZiNjFlNjQ4MGYxNTZiMTFlYjQyNTc3YTEzNTI5Zjc1ZDMzODM4NTBiYjc1YzUwYzI4NWRlNjNkZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzL21hbi1kZWNvdXBsZS1tYW5wYWdlcy1mcm9tLWJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvbWFuLWRlY291cGxlLW1hbnBhZ2VzLWZyb20tYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjODk2YTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvbWFuLWRlY291cGxlLW1hbnBhZ2VzLWZyb20tYnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1Gcm9tIGI0ZDI1ODYyOWYwOTAwNjY3ODNjM2I0YzkxYjQwZjYzYjlkMGEyOTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLURhdGU6IFN1biwgOCBGZWIgMjAxNSAxNjo1MTo1NyAtMDUwMAotU3ViamVjdDogW1BBVENIXSBtYW46IGRlY291cGxlIG1hbnBhZ2VzIGZyb20gYnVpbGQKLQotVGhlIHVzZSBvZiAiaGVscDJtYW4iIGRvZXNuJ3Qgd29yayBhdCBhbGwgZm9yIGNyb3NzIGNvbXBpbGUsIGluCi1hZGRpdGlvbiB0byB0aGUgZXh0cmEgcmVxdWlyZW1lbnQgb2YgcGVybCBpdCBhZGRzLgotCi1KdXN0IGRlY291cGxlIHRoZSBtYW5wYWdlcyBmcm9tIHRoZSBidWlsZCBpbiBvcmRlciB0byBwYXZlIHRoZSB3YXkgZm9yCi1pbXBvcnRpbmcgcHJlYnVpbHQgbWFucGFnZXMgdGhhdCBjYW4gYmUgdXNlZCBpbiBhIGNyb3NzIGJ1aWxkIHNpdHVhdGlvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt1cHN0cmVhbSBkb2Vzbid0IGNhcmUgYWJvdXQgeC1jb21waWxlIGNhc2UuXQotU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCBmYjRhZjI3Li43NTc2YjJjIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMjE0LDUgKzIxNCw0IEBAIEFNX0NQUEZMQUdTID0gLUlsaWIgLUkkKHRvcF9zcmNkaXIpL2xpYiAtSXNyYyAtSSQodG9wX3NyY2Rpcikvc3JjCi0gaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2xpYi9sb2NhbC5tawotIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9zcmMvbG9jYWwubWsKLSBpbmNsdWRlICQodG9wX3NyY2RpcikvZG9jL2xvY2FsLm1rCi0taW5jbHVkZSAkKHRvcF9zcmNkaXIpL21hbi9sb2NhbC5tawotIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS90ZXN0cy9sb2NhbC5tawotLS0gCi0yLjIuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjI3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfOC4yNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE4NzQwYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjI3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQyICswLDAgQEAKLVNVTU1BUlkgPSAiVGhlIGJhc2ljIGZpbGUsIHNoZWxsIGFuZCB0ZXh0IG1hbmlwdWxhdGlvbiB1dGlsaXRpZXMiCi1ERVNDUklQVElPTiA9ICJUaGUgR05VIENvcmUgVXRpbGl0aWVzIHByb3ZpZGUgdGhlIGJhc2ljIGZpbGUsIHNoZWxsIGFuZCB0ZXh0IFwKLW1hbmlwdWxhdGlvbiB1dGlsaXRpZXMuIFRoZXNlIGFyZSB0aGUgY29yZSB1dGlsaXRpZXMgd2hpY2ggYXJlIGV4cGVjdGVkIHRvIGV4aXN0IG9uIFwKLWV2ZXJ5IHN5c3RlbS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvY29yZXV0aWxzLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2RlYmJ1Z3MuZ251Lm9yZy9jb3JldXRpbHMiCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2xzLmM7YmVnaW5saW5lPTU7ZW5kbGluZT0xNjttZDU9MzhiNzk3ODVjYTg4NTM3Yjc1ODcxNzgyYTJhM2M2YjgiCi1ERVBFTkRTID0gImdtcCBsaWJjYXAiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbwotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vY29yZXV0aWxzLyR7QlB9LnRhci54ejtuYW1lPXRhcmJhbGwgXAotICAgICAgICAgICBodHRwOi8vZGlzdGZpbGVzLmdlbnRvby5vcmcvZGlzdGZpbGVzLyR7QlB9LW1hbi50YXIueHo7bmFtZT1tYW5wYWdlcyBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tZGVjb3VwbGUtbWFucGFnZXMtZnJvbS1idWlsZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtdXNyLWxvY2FsLWxpYi1mcm9tLW00LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1zZWxpbnV4LWZsYXNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS11bmFtZS1yZXBvcnQtcHJvY2Vzc29yLWFuZC1oYXJkd2FyZS1jb3JyZWN0bHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1scy1vdXRwdXQtcXVvdGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWxvY2FsLm1rLWZpeC1jcm9zcy1jb21waWxpbmctcHJvYmxlbS5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICI1MDI3OTU3OTJjMjEyOTMyMzY1ZTA3Nzk0NmQzNTNhZSIKLVNSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gIjg4OTFkMzQ5ZWU4N2I5ZmY3ODcwZjUyYjZkOTMxMmE5ZGI2NzJkMjQzOWQyODliYzU3MDg0NzcxY2EyMTY1NmIiCi1TUkNfVVJJW21hbnBhZ2VzLm1kNXN1bV0gPSAiMWIzMWE2ODhkMDY3NjRlMGU5NGFhMjBiN2VhMDgyMjIiCi1TUkNfVVJJW21hbnBhZ2VzLnNoYTI1NnN1bV0gPSAiMWY2MTU4MTllOTE2NzY0NmM3MzE2MzZiNmM1ZWNiZTc5ODM3ZTgyYTE4NjY2YmFjYzgyYzNmYjFkZmNmYWVhMyIKLQotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQtZ21wIgotRVhUUkFfT0VDT05GX2NsYXNzLXRhcmdldCA9ICItLWVuYWJsZS1pbnN0YWxsLXByb2dyYW09YXJjaCAtLWxpYmV4ZWNkaXI9JHtsaWJkaXJ9IgotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZXNkayA9ICItLWVuYWJsZS1pbnN0YWxsLXByb2dyYW09YXJjaCIKLQotIyBhY2wgYW5kIHhhdHRyIGFyZSBub3QgZGVmYXVsdCBmZWF0dXJlcwotIwotUEFDS0FHRUNPTkZJR19jbGFzcy10YXJnZXQgPz89ICJcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsIHhhdHRyJywgZCl9IFwKLSIKLQotIyBUaGUgbGliL29lL3BhdGgucHkgcmVxdWlyZXMgeGF0dHIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID8/PSAieGF0dHIiCi0KLSMgd2l0aCwgd2l0aG91dCwgZGVwZW5kcywgcmRlcGVuZHMKLSMKLVBBQ0tBR0VDT05GSUdbYWNsXSA9ICItLWVuYWJsZS1hY2wsLS1kaXNhYmxlLWFjbCxhY2wsIgotUEFDS0FHRUNPTkZJR1t4YXR0cl0gPSAiLS1lbmFibGUteGF0dHIsLS1kaXNhYmxlLXhhdHRyLGF0dHIsIgotCi0jIFsgZGYgbWt0ZW1wIGJhc2U2NCBnZXRzIGEgc3BlY2lhbCB0cmVhdG1lbnQgYW5kIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGlzCi1iaW5kaXJfcHJvZ3MgPSAiYXJjaCBiYXNlbmFtZSBjaGNvbiBja3N1bSBjb21tIGNzcGxpdCBjdXQgZGlyIGRpcmNvbG9ycyBkaXJuYW1lIGR1IFwKLSAgICAgICAgICAgICAgICBlbnYgZXhwYW5kIGV4cHIgZmFjdG9yIGZtdCBmb2xkIGdyb3VwcyBoZWFkIGhvc3RpZCBpZCBpbnN0YWxsIFwKLSAgICAgICAgICAgICAgICBqb2luIGxpbmsgbG9nbmFtZSBtZDVzdW0gbWtmaWZvIG5pY2Ugbmwgbm9odXAgbnByb2Mgb2QgcGFzdGUgcGF0aGNoayBcCi0gICAgICAgICAgICAgICAgcGlua3kgcHIgcHJpbnRlbnYgcHJpbnRmIHB0eCByZWFkbGluayByZWFscGF0aCBydW5jb24gc2VxIHNoYTFzdW0gc2hhMjI0c3VtIHNoYTI1NnN1bSBcCi0gICAgICAgICAgICAgICAgc2hhMzg0c3VtIHNoYTUxMnN1bSBzaHJlZCBzaHVmIHNvcnQgc3BsaXQgc3RkYnVmIHN1bSB0YWMgdGFpbCB0ZWUgdGVzdCB0aW1lb3V0XAotICAgICAgICAgICAgICAgIHRyIHRydW5jYXRlIHRzb3J0IHR0eSB1bmV4cGFuZCB1bmlxIHVubGluayB1cHRpbWUgdXNlcnMgdmRpciB3YyB3aG8gd2hvYW1pIHllcyIKLQotIyBob3N0bmFtZSBnZXRzIGEgc3BlY2lhbCB0cmVhdG1lbnQgYW5kIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGlzCi1iYXNlX2JpbmRpcl9wcm9ncyA9ICJjYXQgY2hncnAgY2htb2QgY2hvd24gY3AgZGF0ZSBkZCBlY2hvIGZhbHNlIGtpbGwgbG4gbHMgbWtkaXIgXAotICAgICAgICAgICAgICAgICAgICAgbWtub2QgbXYgcHdkIHJtIHJtZGlyIHNsZWVwIHN0dHkgc3luYyB0b3VjaCB0cnVlIHVuYW1lIHN0YXQiCi0KLXNiaW5kaXJfcHJvZ3M9ICJjaHJvb3QiCi0KLSMgTGV0IGFjbG9jYWwgdXNlIHRoZSByZWxhdGl2ZSBwYXRoIGZvciB0aGUgbTQgZmlsZSByYXRoZXIgdGhhbiB0aGUKLSMgYWJzb2x1dGUgc2luY2UgY29yZXV0aWxzIGhhcyBhIGxvdCBvZiBtNCBmaWxlcywgb3RoZXJ3aXNlIHRoZXJlIG1pZ2h0Ci0jIGJlIGFuICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIGl0IGlzIGJ1aWx0IGluIGEgbG9uZy9kZWVwCi0jIGRpcmVjdG9yeS4KLWFjcGF0aHMgPSAiLUkgLi9tNCIKLQotIyBEZWFsIHdpdGggYSBzZXBhcmF0ZSBidWlsZGRpciBmYWlsdXJlIGlmIHNyYyBkb2Vzbid0IGV4aXN0IHdoZW4gY3JlYXRpbmcgdmVyc2lvbi5jL3ZlcnNpb24uaAotZG9fY29tcGlsZV9wcmVwZW5kICgpIHsKLQlta2RpciAtcCAke0J9L3NyYwotfQotCi1kb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCSMgcmVtb3ZlIGdyb3VwcyB0byBmaXggY29uZmxpY3Qgd2l0aCBzaGFkb3ctbmF0aXZlCi0Jcm0gLWYgJHtEfSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9ncm91cHMKLQkjIFRoZSByZXR1cm4gaXMgYSBtdXN0IHNpbmNlIG5hdGl2ZSBkb2Vzbid0IG5lZWQgdGhlCi0JIyBkb19pbnN0YWxsX2FwcGVuZCgpIGluIHRoZSBiZWxvdy4KLQlyZXR1cm4KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JZm9yIGkgaW4gZGYgbWt0ZW1wIGJhc2U2NDsgZG8gbXYgJHtEfSR7YmluZGlyfS8kaSAke0R9JHtiaW5kaXJ9LyRpLiR7QlBOfTsgZG9uZQotCi0JaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLQlbICIke2Jhc2VfYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXSAmJiBmb3IgaSBpbiAke2Jhc2VfYmluZGlyX3Byb2dzfTsgZG8gbXYgJHtEfSR7YmluZGlyfS8kaSAke0R9JHtiYXNlX2JpbmRpcn0vJGkuJHtCUE59OyBkb25lCi0KLQlpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9Ci0JWyAiJHtzYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXSAmJiBmb3IgaSBpbiAke3NiaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke3NiaW5kaXJ9LyRpLiR7QlBOfTsgZG9uZQotCi0JIyBbIHJlcXVpcmVzIHNwZWNpYWwgaGFuZGxpbmcgYmVjYXVzZSBbLmNvcmV1dGlscyB3aWxsIGNhdXNlIHRoZSBzZWQgc3R1ZmYKLQkjIGluIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgdG8gZmFpbCwgdGhlcmVmb3JlIHVzZSBsYnJhY2tldCAtIHRoZSBuYW1lIHVzZWQKLQkjIGZvciB0aGUgYWN0dWFsIHNvdXJjZSBmaWxlLgotCW12ICR7RH0ke2JpbmRpcn0vWyAke0R9JHtiaW5kaXJ9L2xicmFja2V0LiR7QlBOfQotCi0JIyBwcmVidWlsdCBtYW4gcGFnZXMKLQlpbnN0YWxsIC1kICR7RH0vJHttYW5kaXJ9L21hbjEKLQlpbnN0YWxsIC10ICR7RH0vJHttYW5kaXJ9L21hbjEgJHtTfS9tYW4vKi4xCi0JIyBwcmVidWlsdCBtYW4gcGFnZXMgZG9uJ3QgZG8gYSBzZXBhcmF0ZSBtYW4gcGFnZSBmb3IgWyB2cyB0ZXN0LgotCSMgc2VlIGNvbW1lbnQgYWJvdmUgci5lLiBzZWQgYW5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQljcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAke0R9JHttYW5kaXJ9L21hbjEvdGVzdC4xICR7RH0ke21hbmRpcn0vbWFuMS9sYnJhY2tldC4xLiR7QlBOfQotfQotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotQUxURVJOQVRJVkVfJHtQTn0gPSAibGJyYWNrZXQgJHtiaW5kaXJfcHJvZ3N9ICR7YmFzZV9iaW5kaXJfcHJvZ3N9ICR7c2JpbmRpcl9wcm9nc30gYmFzZTY0IG1rdGVtcCBkZiIKLUFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJiYXNlNjQuMSBta3RlbXAuMSBkZi4xIGxicmFja2V0LjEgZ3JvdXBzLjEga2lsbC4xIHVwdGltZS4xIHN0YXQuMSAgaG9zdG5hbWUuMSIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW2hvc3RuYW1lLjFdID0gIiR7bWFuZGlyfS9tYW4xL2hvc3RuYW1lLjEiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtiYXNlNjRdID0gIiR7YmFzZV9iaW5kaXJ9L2Jhc2U2NCIKLUFMVEVSTkFUSVZFX1RBUkdFVFtiYXNlNjRdID0gIiR7YmluZGlyfS9iYXNlNjQuJHtCUE59IgotQUxURVJOQVRJVkVfTElOS19OQU1FW2Jhc2U2NC4xXSA9ICIke21hbmRpcn0vbWFuMS9iYXNlNjQuMSIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW21rdGVtcF0gPSAiJHtiYXNlX2JpbmRpcn0vbWt0ZW1wIgotQUxURVJOQVRJVkVfVEFSR0VUW21rdGVtcF0gPSAiJHtiaW5kaXJ9L21rdGVtcC4ke0JQTn0iCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbWt0ZW1wLjFdID0gIiR7bWFuZGlyfS9tYW4xL21rdGVtcC4xIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZGZdID0gIiR7YmFzZV9iaW5kaXJ9L2RmIgotQUxURVJOQVRJVkVfVEFSR0VUW2RmXSA9ICIke2JpbmRpcn0vZGYuJHtCUE59IgotQUxURVJOQVRJVkVfTElOS19OQU1FW2RmLjFdID0gIiR7bWFuZGlyfS9tYW4xL2RmLjEiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtsYnJhY2tldF0gPSAiJHtiaW5kaXJ9L1siCi1BTFRFUk5BVElWRV9UQVJHRVRbbGJyYWNrZXRdID0gIiR7YmluZGlyfS9sYnJhY2tldC4ke0JQTn0iCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbGJyYWNrZXQuMV0gPSAiJHttYW5kaXJ9L21hbjEvbGJyYWNrZXQuMSIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW2dyb3Vwcy4xXSA9ICIke21hbmRpcn0vbWFuMS9ncm91cHMuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt1cHRpbWUuMV0gPSAiJHttYW5kaXJ9L21hbjEvdXB0aW1lLjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVba2lsbC4xXSA9ICIke21hbmRpcn0vbWFuMS9raWxsLjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc3RhdC4xXSA9ICIke21hbmRpcn0vbWFuMS9zdGF0LjEiCi0KLXB5dGhvbiBfX2Fub255bW91cygpIHsKLQlmb3IgcHJvZyBpbiBkLmdldFZhcignYmFzZV9iaW5kaXJfcHJvZ3MnKS5zcGxpdCgpOgotCQlkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIHByb2csICclcy8lcycgJSAoZC5nZXRWYXIoJ2Jhc2VfYmluZGlyJyksIHByb2cpKQotCi0JZm9yIHByb2cgaW4gZC5nZXRWYXIoJ3NiaW5kaXJfcHJvZ3MnKS5zcGxpdCgpOgotCQlkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIHByb2csICclcy8lcycgJSAoZC5nZXRWYXIoJ3NiaW5kaXInKSwgcHJvZykpCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzXzguMjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjI5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiOGFjYzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjI5LmJiCkBAIC0wLDAgKzEsMTMzIEBACitTVU1NQVJZID0gIlRoZSBiYXNpYyBmaWxlLCBzaGVsbCBhbmQgdGV4dCBtYW5pcHVsYXRpb24gdXRpbGl0aWVzIgorREVTQ1JJUFRJT04gPSAiVGhlIEdOVSBDb3JlIFV0aWxpdGllcyBwcm92aWRlIHRoZSBiYXNpYyBmaWxlLCBzaGVsbCBhbmQgdGV4dCBcCittYW5pcHVsYXRpb24gdXRpbGl0aWVzLiBUaGVzZSBhcmUgdGhlIGNvcmUgdXRpbGl0aWVzIHdoaWNoIGFyZSBleHBlY3RlZCB0byBleGlzdCBvbiBcCitldmVyeSBzeXN0ZW0uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2NvcmV1dGlscy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9kZWJidWdzLmdudS5vcmcvY29yZXV0aWxzIgorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9scy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MTU7bWQ1PTFjM2Y5NDExZTE4NDJhMDYyY2U1Y2U5MjEwYmVlZTBlIgorREVQRU5EUyA9ICJnbXAgbGliY2FwIgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8KKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2NvcmV1dGlscy8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXVzci1sb2NhbC1saWItZnJvbS1tNC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtc2VsaW51eC1mbGFzay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdW5hbWUtcmVwb3J0LXByb2Nlc3Nvci1hbmQtaGFyZHdhcmUtY29ycmVjdGx5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtbHMtb3V0cHV0LXF1b3RpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1sb2NhbC5tay1maXgtY3Jvc3MtY29tcGlsaW5nLXByb2JsZW0ucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjk2MGNmZTc1YTQyYzk5MDdjNzE0MzlmOGViNDM2MzAzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkyZDBmYTFjMzExY2FjZWZhODk4NTNiZGI1M2M2MmY0MTEwY2RmZGEzODIwMzQ2YjU5Y2JkMDk4ZjQwZjk1NWUiCisKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LWdtcCIKK0VYVFJBX09FQ09ORl9jbGFzcy10YXJnZXQgPSAiLS1lbmFibGUtaW5zdGFsbC1wcm9ncmFtPWFyY2gsaG9zdG5hbWUgLS1saWJleGVjZGlyPSR7bGliZGlyfSIKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiLS1lbmFibGUtaW5zdGFsbC1wcm9ncmFtPWFyY2giCisKKyMgYWNsIGFuZCB4YXR0ciBhcmUgbm90IGRlZmF1bHQgZmVhdHVyZXMKKyMKK1BBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAiXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCB4YXR0cicsIGQpfSBcCisiCisKKyMgVGhlIGxpYi9vZS9wYXRoLnB5IHJlcXVpcmVzIHhhdHRyCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA/Pz0gInhhdHRyIgorCisjIHdpdGgsIHdpdGhvdXQsIGRlcGVuZHMsIHJkZXBlbmRzCisjCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLS1lbmFibGUtYWNsLC0tZGlzYWJsZS1hY2wsYWNsLCIKK1BBQ0tBR0VDT05GSUdbeGF0dHJdID0gIi0tZW5hYmxlLXhhdHRyLC0tZGlzYWJsZS14YXR0cixhdHRyLCIKK1BBQ0tBR0VDT05GSUdbc2luZ2xlLWJpbmFyeV0gPSAiLS1lbmFibGUtc2luZ2xlLWJpbmFyeSwtLWRpc2FibGUtc2luZ2xlLWJpbmFyeSwsIgorCisjIFsgZGYgbWt0ZW1wIGJhc2U2NCBnZXRzIGEgc3BlY2lhbCB0cmVhdG1lbnQgYW5kIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGlzCitiaW5kaXJfcHJvZ3MgPSAiYXJjaCBiYXNlbmFtZSBjaGNvbiBja3N1bSBjb21tIGNzcGxpdCBjdXQgZGlyIGRpcmNvbG9ycyBkaXJuYW1lIGR1IFwKKyAgICAgICAgICAgICAgICBlbnYgZXhwYW5kIGV4cHIgZmFjdG9yIGZtdCBmb2xkIGdyb3VwcyBoZWFkIGhvc3RpZCBpZCBpbnN0YWxsIFwKKyAgICAgICAgICAgICAgICBqb2luIGxpbmsgbG9nbmFtZSBtZDVzdW0gbWtmaWZvIG5pY2Ugbmwgbm9odXAgbnByb2Mgb2QgcGFzdGUgcGF0aGNoayBcCisgICAgICAgICAgICAgICAgcGlua3kgcHIgcHJpbnRlbnYgcHJpbnRmIHB0eCByZWFkbGluayByZWFscGF0aCBydW5jb24gc2VxIHNoYTFzdW0gc2hhMjI0c3VtIHNoYTI1NnN1bSBcCisgICAgICAgICAgICAgICAgc2hhMzg0c3VtIHNoYTUxMnN1bSBzaHJlZCBzaHVmIHNvcnQgc3BsaXQgc3RkYnVmIHN1bSB0YWMgdGFpbCB0ZWUgdGVzdCB0aW1lb3V0XAorICAgICAgICAgICAgICAgIHRyIHRydW5jYXRlIHRzb3J0IHR0eSB1bmV4cGFuZCB1bmlxIHVubGluayB1cHRpbWUgdXNlcnMgdmRpciB3YyB3aG8gd2hvYW1pIHllcyIKKworIyBob3N0bmFtZSBnZXRzIGEgc3BlY2lhbCB0cmVhdG1lbnQgYW5kIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGlzCitiYXNlX2JpbmRpcl9wcm9ncyA9ICJjYXQgY2hncnAgY2htb2QgY2hvd24gY3AgZGF0ZSBkZCBlY2hvIGZhbHNlIGhvc3RuYW1lIGtpbGwgbG4gbHMgbWtkaXIgXAorICAgICAgICAgICAgICAgICAgICAgbWtub2QgbXYgcHdkIHJtIHJtZGlyIHNsZWVwIHN0dHkgc3luYyB0b3VjaCB0cnVlIHVuYW1lIHN0YXQiCisKK3NiaW5kaXJfcHJvZ3M9ICJjaHJvb3QiCisKKyMgTGV0IGFjbG9jYWwgdXNlIHRoZSByZWxhdGl2ZSBwYXRoIGZvciB0aGUgbTQgZmlsZSByYXRoZXIgdGhhbiB0aGUKKyMgYWJzb2x1dGUgc2luY2UgY29yZXV0aWxzIGhhcyBhIGxvdCBvZiBtNCBmaWxlcywgb3RoZXJ3aXNlIHRoZXJlIG1pZ2h0CisjIGJlIGFuICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIGl0IGlzIGJ1aWx0IGluIGEgbG9uZy9kZWVwCisjIGRpcmVjdG9yeS4KK2FjcGF0aHMgPSAiLUkgLi9tNCIKKworIyBEZWFsIHdpdGggYSBzZXBhcmF0ZSBidWlsZGRpciBmYWlsdXJlIGlmIHNyYyBkb2Vzbid0IGV4aXN0IHdoZW4gY3JlYXRpbmcgdmVyc2lvbi5jL3ZlcnNpb24uaAorZG9fY29tcGlsZV9wcmVwZW5kICgpIHsKKwlta2RpciAtcCAke0J9L3NyYworfQorCitkb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCSMgcmVtb3ZlIGdyb3VwcyB0byBmaXggY29uZmxpY3Qgd2l0aCBzaGFkb3ctbmF0aXZlCisJcm0gLWYgJHtEfSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9ncm91cHMKKwkjIFRoZSByZXR1cm4gaXMgYSBtdXN0IHNpbmNlIG5hdGl2ZSBkb2Vzbid0IG5lZWQgdGhlCisJIyBkb19pbnN0YWxsX2FwcGVuZCgpIGluIHRoZSBiZWxvdy4KKwlyZXR1cm4KK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJZm9yIGkgaW4gZGYgbWt0ZW1wIGJhc2U2NDsgZG8gbXYgJHtEfSR7YmluZGlyfS8kaSAke0R9JHtiaW5kaXJ9LyRpLiR7QlBOfTsgZG9uZQorCisJaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKwlbICIke2Jhc2VfYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXSAmJiBmb3IgaSBpbiAke2Jhc2VfYmluZGlyX3Byb2dzfTsgZG8gbXYgJHtEfSR7YmluZGlyfS8kaSAke0R9JHtiYXNlX2JpbmRpcn0vJGkuJHtCUE59OyBkb25lCisKKwlpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9CisJWyAiJHtzYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXSAmJiBmb3IgaSBpbiAke3NiaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke3NiaW5kaXJ9LyRpLiR7QlBOfTsgZG9uZQorCisJIyBbIHJlcXVpcmVzIHNwZWNpYWwgaGFuZGxpbmcgYmVjYXVzZSBbLmNvcmV1dGlscyB3aWxsIGNhdXNlIHRoZSBzZWQgc3R1ZmYKKwkjIGluIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgdG8gZmFpbCwgdGhlcmVmb3JlIHVzZSBsYnJhY2tldCAtIHRoZSBuYW1lIHVzZWQKKwkjIGZvciB0aGUgYWN0dWFsIHNvdXJjZSBmaWxlLgorCW12ICR7RH0ke2JpbmRpcn0vWyAke0R9JHtiaW5kaXJ9L2xicmFja2V0LiR7QlBOfQorfQorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorIyBNYWtlIGhvc3RuYW1lJ3MgcHJpb3JpdHkgaGlnaGVyIHRoYW4gYnVzeWJveCBidXQgbG93ZXIgdGhhbiBuZXQtdG9vbHMKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW2hvc3RuYW1lXSA9ICI5MCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gImxicmFja2V0ICR7YmluZGlyX3Byb2dzfSAke2Jhc2VfYmluZGlyX3Byb2dzfSAke3NiaW5kaXJfcHJvZ3N9IGJhc2U2NCBta3RlbXAgZGYiCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAiYmFzZTY0LjEgbWt0ZW1wLjEgZGYuMSBncm91cHMuMSBraWxsLjEgdXB0aW1lLjEgc3RhdC4xICBob3N0bmFtZS4xIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaG9zdG5hbWUuMV0gPSAiJHttYW5kaXJ9L21hbjEvaG9zdG5hbWUuMSIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2Jhc2U2NF0gPSAiJHtiYXNlX2JpbmRpcn0vYmFzZTY0IgorQUxURVJOQVRJVkVfVEFSR0VUW2Jhc2U2NF0gPSAiJHtiaW5kaXJ9L2Jhc2U2NC4ke0JQTn0iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbYmFzZTY0LjFdID0gIiR7bWFuZGlyfS9tYW4xL2Jhc2U2NC4xIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbbWt0ZW1wXSA9ICIke2Jhc2VfYmluZGlyfS9ta3RlbXAiCitBTFRFUk5BVElWRV9UQVJHRVRbbWt0ZW1wXSA9ICIke2JpbmRpcn0vbWt0ZW1wLiR7QlBOfSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtta3RlbXAuMV0gPSAiJHttYW5kaXJ9L21hbjEvbWt0ZW1wLjEiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtkZl0gPSAiJHtiYXNlX2JpbmRpcn0vZGYiCitBTFRFUk5BVElWRV9UQVJHRVRbZGZdID0gIiR7YmluZGlyfS9kZi4ke0JQTn0iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZGYuMV0gPSAiJHttYW5kaXJ9L21hbjEvZGYuMSIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2xicmFja2V0XSA9ICIke2JpbmRpcn0vWyIKK0FMVEVSTkFUSVZFX1RBUkdFVFtsYnJhY2tldF0gPSAiJHtiaW5kaXJ9L2xicmFja2V0LiR7QlBOfSIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2dyb3Vwcy4xXSA9ICIke21hbmRpcn0vbWFuMS9ncm91cHMuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt1cHRpbWUuMV0gPSAiJHttYW5kaXJ9L21hbjEvdXB0aW1lLjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVba2lsbC4xXSA9ICIke21hbmRpcn0vbWFuMS9raWxsLjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc3RhdC4xXSA9ICIke21hbmRpcn0vbWFuMS9zdGF0LjEiCisKK3B5dGhvbiBfX2Fub255bW91cygpIHsKKwlmb3IgcHJvZyBpbiBkLmdldFZhcignYmFzZV9iaW5kaXJfcHJvZ3MnKS5zcGxpdCgpOgorCQlkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIHByb2csICclcy8lcycgJSAoZC5nZXRWYXIoJ2Jhc2VfYmluZGlyJyksIHByb2cpKQorCisJZm9yIHByb2cgaW4gZC5nZXRWYXIoJ3NiaW5kaXJfcHJvZ3MnKS5zcGxpdCgpOgorCQlkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIHByb2csICclcy8lcycgJSAoZC5nZXRWYXIoJ3NiaW5kaXInKSwgcHJvZykpCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzLXdhaXQvZGJ1cy13YWl0X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzLXdhaXQvZGJ1cy13YWl0X2dpdC5iYgppbmRleCA0YWZiOTBjLi5jMjQyOTViIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy13YWl0L2RidXMtd2FpdF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMtd2FpdC9kYnVzLXdhaXRfZ2l0LmJiCkBAIC0xMSw3ICsxMSw3IEBACiBQUiA9ICJyMiIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy8ke0JQTn0iCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1nbGliL25vLWV4YW1wbGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1nbGliL25vLWV4YW1wbGVzLnBhdGNoCmluZGV4IGZiYjQ5NjcuLjMyZTc2MTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtZ2xpYi9uby1leGFtcGxlcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWdsaWIvbm8tZXhhbXBsZXMucGF0Y2gKQEAgLTUsMTEgKzUsMTMgQEAKIFNpZ25lZC1vZmYtYnk6IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPgogU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+CiAKLS0tLSBkYnVzLWdsaWItMC43MC9kYnVzL01ha2VmaWxlLmFtLm9yaWcJMjAwNi0wNy0yMyAxNjowNDo0My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBkYnVzLWdsaWItMC43MC9kYnVzL01ha2VmaWxlLmFtCTIwMDYtMDctMjMgMTY6MDQ6NTIuMDAwMDAwMDAwICswMjAwCitJbmRleDogZGJ1cy1nbGliLTAuMTA4L2RidXMvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBkYnVzLWdsaWItMC4xMDgub3JpZy9kYnVzL01ha2VmaWxlLmFtCisrKysgZGJ1cy1nbGliLTAuMTA4L2RidXMvTWFrZWZpbGUuYW0KIEBAIC0xLDQgKzEsNCBAQAogLVNVQkRJUlMgPSAuIGV4YW1wbGVzCiArU1VCRElSUyA9IC4KICAKLSBJTkNMVURFUz0tSSQodG9wX3NyY2RpcikgJChEQlVTX0NGTEFHUykgJChEQlVTX0dMSUJfQ0ZMQUdTKSAkKERCVVNfR0xJQl9UT09MX0NGTEFHUykgLUREQlVTX0NPTVBJTEFUSU9OPTEgLUREQlVTX0xPQ0FMRURJUj1cIiQocHJlZml4KS9AREFUQURJUk5BTUVAL2xvY2FsZVwiIAotIAorIEFNX0NQUEZMQUdTID0gXAorIAktSSQodG9wX3NyY2RpcikJCQkJCQlcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLXRlc3RfMS4xMC4yMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtdGVzdF8xLjEwLjIwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZWFkYjdkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtdGVzdF8xLjEwLjIwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotU1VNTUFSWSA9ICJELUJ1cyB0ZXN0IHBhY2thZ2UgKGZvciBELWJ1cyBmdW5jdGlvbmFsaXR5IHRlc3Rpbmcgb25seSkiCi1IT01FUEFHRSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmciCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkFGTC0yIHwgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTBkZGVkM2I1ODE0OGYzZjFmZDgwNGIyNjM1NGFmM2UgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGJ1cy9kYnVzLmg7YmVnaW5saW5lPTY7ZW5kbGluZT0yMDttZDU9Nzc1NWM5ZDdhYmNjZDVkYmQyNWE2YTk3NDUzOGJiM2MiCi0KLURFUEVORFMgPSAiZGJ1cyBnbGliLTIuMCIKLQotUkRFUEVORFNfJHtQTn0gKz0gIm1ha2UiCi1SREVQRU5EU18ke1BOfS1kZXYgPSAiIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzL2RidXMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3RtcGRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vcHl0aG9uLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jbGVhci1ndWlkX2Zyb21fc2VydmVyLWlmLXNlbmRfbmVnb3RpYXRlX3VuaXhfZi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjk0Yzk5MWU3NjNkNGY5ZjEzNjkwNDE2YjJkY2Q5NDExIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU1NzRiOTc4MGI1NDI1ZmRlNGQ5NzNiYjU5NmU3ZWEwZjA5ZTAwZmUyZWRkNjYyZGE5MDE2ZTk3NmM0NjBiNDgiCi0KLVM9IiR7V09SS0RJUn0vZGJ1cy0ke1BWfSIKLUZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L2RidXM6IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBwdGVzdCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotRVhUUkFfT0VDT05GX1ggPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnLS13aXRoLXgnLCAnLS13aXRob3V0LXgnLCBkKX0iCi1FWFRSQV9PRUNPTkZfWF9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LXgiCi0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS10ZXN0cyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtbW9kdWxhci10ZXN0cyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbGVkLXRlc3RzIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1jaGVja3MgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWFzc2VydHMgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXZlcmJvc2UtbW9kZSBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXhtbC1kb2NzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtZG94eWdlbi1kb2NzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliYXVkaXQgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zeXN0ZW1kIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIgXAotICAgICAgICAgICAgICAgIC0td2l0aC1kYnVzLXRlc3QtZGlyPSR7UFRFU1RfUEFUSH0gXAotICAgICAgICAgICAgICAgICR7RVhUUkFfT0VDT05GX1h9IgotCi1kb19pbnN0YWxsKCkgewotICAgIDoKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQlsPSJzaGVsbCBwcmludGYgcmVmcyBzeXNsb2cgbWFyc2hhbCBzeW50YXggY29ycnVwdCBkYnVzLWRhZW1vbiBkYnVzLWRhZW1vbi1lYXZlc2Ryb3AgbG9vcGJhY2sgcmVsYXkiCi0JZm9yIGkgaW4gJGw7IGRvIGluc3RhbGwgJHtCfS90ZXN0Ly5saWJzL3Rlc3QtJGkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdDsgZG9uZQotCWw9ImJ1cyBidXMtc3lzdGVtIGJ1cy1sYXVuY2gtaGVscGVyIgotCWZvciBpIGluICRsOyBkbyBpbnN0YWxsICR7Qn0vYnVzLy5saWJzL3Rlc3QtJGkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdDsgZG9uZQotCWluc3RhbGwgJHtCfS9kYnVzLy5saWJzL3Rlc3QtZGJ1cyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ci0JY3AgLXIgJHtCfS90ZXN0L2RhdGEgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotfQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImJhc2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLXRlc3RfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy10ZXN0XzEuMTIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2UwNDdhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy10ZXN0XzEuMTIuMi5iYgpAQCAtMCwwICsxLDgyIEBACitTVU1NQVJZID0gIkQtQnVzIHRlc3QgcGFja2FnZSAoZm9yIEQtYnVzIGZ1bmN0aW9uYWxpdHkgdGVzdGluZyBvbmx5KSIKK0hPTUVQQUdFID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiQUZMLTIgfCBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMGRkZWQzYjU4MTQ4ZjNmMWZkODA0YjI2MzU0YWYzZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kYnVzL2RidXMuaDtiZWdpbmxpbmU9NjtlbmRsaW5lPTIwO21kNT03NzU1YzlkN2FiY2NkNWRiZDI1YTZhOTc0NTM4YmIzYyIKKworREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIgorCitSREVQRU5EU18ke1BOfSArPSAibWFrZSIKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCisKK1NSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMvZGJ1cy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vdG1wZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9weXRob24tY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NsZWFyLWd1aWRfZnJvbV9zZXJ2ZXItaWYtc2VuZF9uZWdvdGlhdGVfdW5peF9mLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzM2MTQ1NmNhZGI5OWFhNjYwMWJlZDViNDg5NjQyNTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjcyYmI1MDkxNzcwYjA0N2M4MTg4YjkyNmQ1ZTYwMzhmYTRmZTY3NDU0ODhiMmFkZDk2YjIzZTJkOWE4M2Q4OCIKKworUz0iJHtXT1JLRElSfS9kYnVzLSR7UFZ9IgorRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vZGJ1czoiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHB0ZXN0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorCitFWFRSQV9PRUNPTkZfWCA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICctLXdpdGgteCcsICctLXdpdGhvdXQteCcsIGQpfSIKK0VYVFJBX09FQ09ORl9YX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQteCIKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRlc3RzIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1tb2R1bGFyLXRlc3RzIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsZWQtdGVzdHMgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWNoZWNrcyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtYXNzZXJ0cyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtdmVyYm9zZS1tb2RlIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1sYXJnZWZpbGUgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS14bWwtZG9jcyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRveHlnZW4tZG9jcyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmF1ZGl0IFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtZGJ1cy10ZXN0LWRpcj0ke1BURVNUX1BBVEh9IFwKKyAgICAgICAgICAgICAgICAke0VYVFJBX09FQ09ORl9YfSIKKworRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFNZU1RFTUNUTD0ke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kIHgxMScsIGQpfSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gIiIKKworUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kIC0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LC0tZGlzYWJsZS1zeXN0ZW1kIC0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpcixzeXN0ZW1kIgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14IC0tZW5hYmxlLXgxMS1hdXRvbGF1bmNoLC0td2l0aG91dC14IC0tZGlzYWJsZS14MTEtYXV0b2xhdW5jaCwgdmlydHVhbC9saWJ4MTEgbGlic20iCitQQUNLQUdFQ09ORklHW3VzZXItc2Vzc2lvbl0gPSAiLS1lbmFibGUtdXNlci1zZXNzaW9uIC0td2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXI9JHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0sLS1kaXNhYmxlLXVzZXItc2Vzc2lvbiIKKworZG9faW5zdGFsbCgpIHsKKyAgICA6Cit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJbD0ic2hlbGwgcHJpbnRmIHJlZnMgc3lzbG9nIG1hcnNoYWwgc3ludGF4IGNvcnJ1cHQgZGJ1cy1kYWVtb24gZGJ1cy1kYWVtb24tZWF2ZXNkcm9wIGxvb3BiYWNrIHJlbGF5IFwKKwkgICB2YXJpYW50IHVpZC1wZXJtaXNzaW9ucyBzeW50YXggc3Bhd24gc2QtYWN0aXZhdGlvbiBuYW1lcyBtb25pdG9yIG1lc3NhZ2UgZmRwYXNzICIKKwlmb3IgaSBpbiAkbDsgZG8gaW5zdGFsbCAke0J9L3Rlc3QvLmxpYnMvdGVzdC0kaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0OyBkb25lCisKKwlsPSJidXMgYnVzLXN5c3RlbSBidXMtbGF1bmNoLWhlbHBlciIKKwlmb3IgaSBpbiAkbDsgZG8gaW5zdGFsbCAke0J9L2J1cy8ubGlicy90ZXN0LSRpICR7RH0ke1BURVNUX1BBVEh9L3Rlc3Q7IGRvbmUKKworCWNwIC1yICR7Qn0vdGVzdC9kYXRhICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwlpbnN0YWxsICR7Qn0vZGJ1cy8ubGlicy90ZXN0LWRidXMgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ly5saWJzCisJY3AgLWEgJHtCfS9kYnVzLy5saWJzLyouc28qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvLmxpYnMKKworCSMgUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcy4uLgorCWZpbmQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvZGF0YSIgXCggLW5hbWUgKi5zZXJ2aWNlIC1vIC1uYW1lICouY29uZiAtbyAtbmFtZSAiKi5hYXByb2ZpbGUiIFwpIC10eXBlIGYgLWV4ZWMgXAorCQlzZWQgLWkgXAorCQkgLWUgJ3M6JHtCfToke1BURVNUX1BBVEh9OmcnIFwKKwkJIHt9ICsKK30KKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImJhc2giCisKK1BSSVZBVEVfTElCU18ke1BOfS1wdGVzdCA9ICJsaWJkYnVzLTEuc28uMyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMvMDAwMS1jb25maWd1cmUuYWMtZXhwbGljaXRlbHktY2hlY2stc3RkaW50LmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLzAwMDEtY29uZmlndXJlLmFjLWV4cGxpY2l0ZWx5LWNoZWNrLXN0ZGludC5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWFjYjdiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMvMDAwMS1jb25maWd1cmUuYWMtZXhwbGljaXRlbHktY2hlY2stc3RkaW50LmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIDFiZmRlMjIyOTI2YmU2MjRhMzBhNmU0YjJjZGMyYzUwNjRhMzYyOTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBJb2FuLUFkcmlhbiBSYXRpdSA8YWRyaWFuLnJhdGl1QG5pLmNvbT4KLURhdGU6IEZyaSwgMjkgSnVsIDIwMTYgMDE6MTk6MzcgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBleHBsaWNpdGVseSBjaGVjayBzdGRpbnQuaAotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1PdGhlcndpc2UgSEFWRV9TVERJTlRfSCB3aWxsIG5vdCBiZSBkZWZpbmVkIG9yIHRoZSB2YXIgd2lsbCBub3QgYmUKLXBpY2tlZCB1cCBmcm9tIGNhY2hlIHNvIGJ1aWxkcyBjb3VsZCBmYWlsIHdpdGggZXJyb3JzIGxpa2U6Ci18IC4uLy4uL2RidXMtMS4xMC44L2RidXMvZGJ1cy1pbnRlcm5hbHMuaDoyMzk6ODogZXJyb3I6IOKAmHVpbnRwdHJfdOKAmSB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKLQotU2lnbmVkLW9mZi1ieTogSW9hbi1BZHJpYW4gUmF0aXUgPGFkcmlhbi5yYXRpdUBuaS5jb20+Ci1bc21jdjogZml4IEF1dG9jb25mIHVuZGVycXVvdGluZ10KLVJldmlld2VkLWJ5OiBTaW1vbiBNY1ZpdHRpZSA8c2ltb24ubWN2aXR0aWVAY29sbGFib3JhLmNvLnVrPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtmcm9tIGRidXMtMS4xMF0KLQotLS0tCi0gY29uZmlndXJlLmFjIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggY2Y1YzViOS4uYTIyOGQ2MyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNjk5LDYgKzY5OSw4IEBAIEFDX0NIRUNLX0hFQURFUlMoYnl0ZXN3YXAuaCkKLSAKLSBBQ19DSEVDS19IRUFERVJTKHVuaXN0ZC5oKQotIAotK0FDX0NIRUNLX0hFQURFUlMoW3N0ZGludC5oXSkKLSsKLSBBQ19DSEVDS19IRUFERVJTKHdzMnRjcGlwLmgpCi0gCi0gQUNfQ0hFQ0tfSEVBREVSUyhhbGxvY2EuaCkKLS0tIAotMi45LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy9vcy10ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy9vcy10ZXN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NGMyNTdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMvb3MtdGVzdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLWRidXM6IHJlbW92ZSBidWlsZCBob3N0IHRlc3QgaW4gY29uZmlndXJlIHNjcmlwdAotCi1UaGUgZGJ1cyBidWlsZCB0ZXN0cyB0aGUgYnVpbGQgaG9zdCB0byBkZXRlY3Qgd2hhdCBpbml0c2NyaXB0Ci1lbnZpcm9ubWVudCBpdCBleHBlY3RzLiAgUmVtb3ZlIHRoZSB0ZXN0IGFuZCBzZXQgaXQgdG8gInJlZGhhdCIKLXVuY29uZGl0aW9uYWxseSBhcyB0aGUgb2UtY29yZSBpbml0c2NyaXB0IGhhcyBhIHJlZGhhdC1zdHlsZSBwaWQgZmlsZQotcGF0aC4KLQotU2lnbmVkLW9mZi1ieTogQW5keSBSb3NzIDxhbmR5LnJvc3NAd2luZHJpdmVyLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWRdCi0KLWRpZmYgLXUgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLS0tLSBhL2NvbmZpZ3VyZS5hYwkyMDEyLTA4LTI4IDExOjIzOjQzLjA0MDYwOTg3NCAtMDcwMAotKysrIGIvY29uZmlndXJlLmFjCTIwMTItMDgtMjggMTE6NTQ6MjUuNjAyOTEzOTQ1IC0wNzAwCi1AQCAtMTM0OCwxOSArMTM0OCw4IEBACi0gQVNfQUNfRVhQQU5EKEVYUEFOREVEX0xJQkVYRUNESVIsICIkbGliZXhlY2RpciIpCi0gQVNfQUNfRVhQQU5EKEVYUEFOREVEX0RBVEFESVIsICIkZGF0YWRpciIpCi0gCi0tIyMjIyBDaGVjayBvdXIgb3BlcmF0aW5nIHN5c3RlbQotLW9wZXJhdGluZ19zeXN0ZW09dW5rbm93bgotLWlmIHRlc3QgLWYgL2V0Yy9yZWRoYXQtcmVsZWFzZSB8fCB0ZXN0IC1mICRFWFBBTkRFRF9TWVNDT05GRElSL3JlZGhhdC1yZWxlYXNlIDsgdGhlbgotLSAgIG9wZXJhdGluZ19zeXN0ZW09cmVkaGF0Ci0tZmkKLS0KLS1pZiB0ZXN0IC1mIC9ldGMvc2xhY2t3YXJlLXZlcnNpb24gfHwgdGVzdCAtZiAkRVhQQU5ERURfU1lTQ09ORkRJUi9zbGFja3dhcmUtdmVyc2lvbiA7IHRoZW4KLS0gICBvcGVyYXRpbmdfc3lzdGVtPXNsYWNrd2FyZQotLWZpCi0tCi0taWYgdGVzdCAtZiAvdXNyL2Jpbi9jeWd3aW4xLmRsbCB8fCB0ZXN0IC1mICRFWFBBTkRFRF9CSU5ESVIvY3lnd2luMS5kbGwgOyB0aGVuCi0tICAgb3BlcmF0aW5nX3N5c3RlbT1jeWd3aW4KLS1maQotKyMjIyMgQnVpbGQgaG9zdCB0ZXN0IHJlbW92ZWQgZnJvbSB1cHN0cmVhbSBjb2RlLCBvcGVuZW1iZWRkZWQgaW5pdHNjcmlwdCBpcyByZWRoYXQtbGlrZToKLStvcGVyYXRpbmdfc3lzdGVtPXJlZGhhdAotIAotICMjIyMgU29ydCBvdXQgaW5pdCBzY3JpcHRzCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMvcnVuLXB0ZXN0CmluZGV4IGM3MmQwODMuLjhhODk3MGUgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMvcnVuLXB0ZXN0CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMvcnVuLXB0ZXN0CkBAIC0xLDEwICsxLDI0IEBACiAjIS9iaW4vc2gKIAogb3V0cHV0KCkgewotICBpZiBbICQ/IC1lcSAwIF0KKyAgcmV0Y29kZT0kPworICBpZiBbICRyZXRjb2RlIC1lcSAwIF0KICAgICB0aGVuIGVjaG8gIlBBU1M6ICRpIgotICAgIGVsc2UgZWNobyAiRkFJTDogJGkiCisgIGVsaWYgWyAkcmV0Y29kZSAtZXEgNzcgXQorICAgIHRoZW4gZWNobyAiU0tJUDogJGkiCisgIGVsc2UgZWNobyAiRkFJTDogJGkiCiAgIGZpCiB9CiAKLWZvciBpIGluIGBscyB0ZXN0L3Rlc3QtKmA7IGRvIC4vJGkgLi90ZXN0L2RhdGEgREJVU19URVNUX0hPTUVESVI9Li90ZXN0ID4vZGV2L251bGw7IG91dHB1dDsgZG9uZQorZXhwb3J0IERCVVNfVEVTVF9IT01FRElSPS4vdGVzdAorZXhwb3J0IFhER19SVU5USU1FX0RJUj0uL3Rlc3QKK2V4cG9ydCBMRF9MSUJSQVJZX1BBVEg9L3Vzci9saWIvZGJ1cy10ZXN0L3B0ZXN0L3Rlc3QvLmxpYnMKKworZmlsZXM9YGxzIHRlc3QvdGVzdC0qYAorCitmb3IgaSBpbiAkZmlsZXMKKwlkbworCQkuLyRpIC4vdGVzdC9kYXRhID4vZGV2L251bGwKKwkJb3V0cHV0CisJZG9uZQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTAuMjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTAuMjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZGVkYzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1c18xLjEwLjIwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLVNVTU1BUlkgPSAiRC1CdXMgbWVzc2FnZSBidXMiCi1ERVNDUklQVElPTiA9ICJELUJ1cyBpcyBhIG1lc3NhZ2UgYnVzIHN5c3RlbSwgYSBzaW1wbGUgd2F5IGZvciBhcHBsaWNhdGlvbnMgdG8gdGFsayB0byBvbmUgYW5vdGhlci4gSW4gYWRkaXRpb24gdG8gaW50ZXJwcm9jZXNzIGNvbW11bmljYXRpb24sIEQtQnVzIGhlbHBzIGNvb3JkaW5hdGUgcHJvY2VzcyBsaWZlY3ljbGU7IGl0IG1ha2VzIGl0IHNpbXBsZSBhbmQgcmVsaWFibGUgdG8gY29kZSBhIFwic2luZ2xlIGluc3RhbmNlXCIgYXBwbGljYXRpb24gb3IgZGFlbW9uLCBhbmQgdG8gbGF1bmNoIGFwcGxpY2F0aW9ucyBhbmQgZGFlbW9ucyBvbiBkZW1hbmQgd2hlbiB0aGVpciBzZXJ2aWNlcyBhcmUgbmVlZGVkLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiQUZMLTIgfCBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMGRkZWQzYjU4MTQ4ZjNmMWZkODA0YjI2MzU0YWYzZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kYnVzL2RidXMuaDtiZWdpbmxpbmU9NjtlbmRsaW5lPTIwO21kNT03NzU1YzlkN2FiY2NkNWRiZDI1YTZhOTc0NTM4YmIzYyIKLURFUEVORFMgPSAiZXhwYXQgdmlydHVhbC9saWJpbnRsIgotUkRFUEVORFNfZGJ1c19jbGFzcy1uYXRpdmUgPSAiIgotUkRFUEVORFNfZGJ1c19jbGFzcy1uYXRpdmVzZGsgPSAiIgotUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAnJHtQTn0tcHRlc3QnLCAnJywgZCl9IgotQUxMT1dfRU1QVFlfZGJ1cy1wdGVzdCA9ICIxIgotUkRFUEVORFNfZGJ1cy1wdGVzdF9jbGFzcy10YXJnZXQgPSAiZGJ1cy10ZXN0LXB0ZXN0IgotCi1TUkNfVVJJID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzL2RidXMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3RtcGRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kYnVzLTEuaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly9vcy10ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NsZWFyLWd1aWRfZnJvbV9zZXJ2ZXItaWYtc2VuZF9uZWdvdGlhdGVfdW5peF9mLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWV4cGxpY2l0ZWx5LWNoZWNrLXN0ZGludC5oLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjk0Yzk5MWU3NjNkNGY5ZjEzNjkwNDE2YjJkY2Q5NDExIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU1NzRiOTc4MGI1NDI1ZmRlNGQ5NzNiYjU5NmU3ZWEwZjA5ZTAwZmUyZWRkNjYyZGE5MDE2ZTk3NmM0NjBiNDgiCi0KLWluaGVyaXQgdXNlcmFkZCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgdXBkYXRlLXJjLmQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJkYnVzLTEiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAwMiA1IDMgMiAuIHN0b3AgMjAgMCAxIDYgLiIKLQotcHl0aG9uIF9fYW5vbnltb3VzKCkgewotICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgVHJ1ZSwgRmFsc2UsIGQpOgotICAgICAgICBkLnNldFZhcigiSU5ISUJJVF9VUERBVEVSQ0RfQkJDTEFTUyIsICIxIikKLX0KLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLUdST1VQQUREX1BBUkFNXyR7UE59ID0gIi1yIG5ldGRldiIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1ob21lICR7bG9jYWxzdGF0ZWRpcn0vbGliL2RidXMgXAotICAgICAgICAgICAgICAgICAgICAgICAtLW5vLWNyZWF0ZS1ob21lIC0tc2hlbGwgL2Jpbi9mYWxzZSBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0tdXNlci1ncm91cCBtZXNzYWdlYnVzIgotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmNvbmYgJHtzeXNjb25mZGlyfS9kYnVzLTEvc2Vzc2lvbi5jb25mIgotCi1ERUJJQU5OQU1FXyR7UE59ID0gImRidXMtMSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWxpYiIKLQotT0xEUEtHTkFNRSA9ICJkYnVzLXgxMSIKLU9MRFBLR05BTUVfY2xhc3MtbmF0aXZlc2RrID0gIiIKLQotIyBmb3IgY29tcGF0aWJpbGl0eQotUlBST1ZJREVTXyR7UE59ID0gIiR7T0xEUEtHTkFNRX0iCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7T0xEUEtHTkFNRX0iCi0KLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9kYnVzLWRhZW1vbiogXAotICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtdXVpZGdlbiBcCi0gICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1jbGVhbnVwLXNvY2tldHMgXAotICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtc2VuZCBcCi0gICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1tb25pdG9yIFwKLSAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLWxhdW5jaCBcCi0gICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1ydW4tc2Vzc2lvbiBcCi0gICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy11cGRhdGUtYWN0aXZhdGlvbi1lbnZpcm9ubWVudCBcCi0gICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L2RidXMqIFwKLSAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0gXAotICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfSBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcyBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2Vzc2lvbi5kIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3Nlc3Npb24uY29uZiBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZCBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uY29uZiBcCi0gICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IFwKLSAgICAgICAgICAgICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKLSIKLUZJTEVTXyR7UE59LWxpYiA9ICIke2xpYmRpcn0vbGliKi5zby4qIgotUlJFQ09NTUVORFNfJHtQTn0tbGliID0gIiR7UE59IgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZGJ1cy0xLjAvaW5jbHVkZSAke2JpbmRpcn0vZGJ1cy10ZXN0LXRvb2wiCi0KLVBBQ0tBR0VfV1JJVEVfREVQUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQgc3lzdmluaXQnLCdzeXN0ZW1kLXN5c3RlbWN0bC1uYXRpdmUnLCcnLGQpfSIKLXBrZ19wb3N0aW5zdF9kYnVzKCkgewotCSMgSWYgYm90aCBzeXN0ZW1kIGFuZCBzeXN2aW5pdCBhcmUgZW5hYmxlZCwgbWFzayB0aGUgZGJ1cy0xIGluaXQgc2NyaXB0Ci0gICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kIHN5c3Zpbml0JywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLQkJaWYgWyAtbiAiJEQiIF07IHRoZW4KLQkJCU9QVFM9Ii0tcm9vdD0kRCIKLQkJZmkKLQkJc3lzdGVtY3RsICRPUFRTIG1hc2sgZGJ1cy0xLnNlcnZpY2UKLQlmaQotCi0JaWYgWyAteiAiJEQiIF0gJiYgWyAtZSAvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCBdIDsgdGhlbgotCQkvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCB1cGRhdGUKLQlmaQotfQotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXRlc3RzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUteG1sLWRvY3MgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kb3h5Z2VuLWRvY3MgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1saWJhdWRpdCBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtbGFyZ2VmaWxlIFwKLSAgICAgICAgICAgICAgICAiCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBTWVNURU1DVEw9JHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tZGlzYWJsZS1zZWxpbnV4IgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCB4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICIiCi0KLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS1lbmFibGUtc3lzdGVtZCAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwtLWRpc2FibGUtc3lzdGVtZCAtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsc3lzdGVtZCIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCAtLWVuYWJsZS14MTEtYXV0b2xhdW5jaCwtLXdpdGhvdXQteCAtLWRpc2FibGUteDExLWF1dG9sYXVuY2gsIHZpcnR1YWwvbGlieDExIGxpYnNtIgotUEFDS0FHRUNPTkZJR1t1c2VyLXNlc3Npb25dID0gIi0tZW5hYmxlLXVzZXItc2Vzc2lvbiAtLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9LC0tZGlzYWJsZS11c2VyLXNlc3Npb24iCi0KLWRvX2luc3RhbGwoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCQlzZWQgJ3M6QGJpbmRpckA6JHtiaW5kaXJ9OicgPCAke1dPUktESVJ9L2RidXMtMS5pbml0ID4ke1dPUktESVJ9L2RidXMtMS5pbml0LnNoCi0JCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2RidXMtMS5pbml0LnNoICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9kYnVzLTEKLQlmaQotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJZm9yIGkgaW4gZGJ1cy50YXJnZXQud2FudHMgc29ja2V0cy50YXJnZXQud2FudHMgbXVsdGktdXNlci50YXJnZXQud2FudHM7IGRvIFwKLQkJCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vJGk7IGRvbmUKLQkJaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vYnVzL2RidXMuc2VydmljZSAke0J9L2J1cy9kYnVzLnNvY2tldCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8KLQkJbG4gLWZzIC4uL2RidXMuc29ja2V0ICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2RidXMudGFyZ2V0LndhbnRzL2RidXMuc29ja2V0Ci0JCWxuIC1mcyAuLi9kYnVzLnNvY2tldCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zb2NrZXRzLnRhcmdldC53YW50cy9kYnVzLnNvY2tldAotCQlsbiAtZnMgLi4vZGJ1cy5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L211bHRpLXVzZXIudGFyZ2V0LndhbnRzL2RidXMuc2VydmljZQotCWZpCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCi0JZWNobyAiZCBtZXNzYWdlYnVzIG1lc3NhZ2VidXMgMDc1NSAke2xvY2Fsc3RhdGVkaXJ9L3J1bi9kYnVzIG5vbmUiIFwKLQkgICAgID4gJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvOTlfZGJ1cwotCi0KLQlta2RpciAtcCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvZGJ1cwotCi0JY2hvd24gbWVzc2FnZWJ1czptZXNzYWdlYnVzICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9kYnVzCi0KLQljaG93biByb290Om1lc3NhZ2VidXMgJHtEfSR7bGliZXhlY2Rpcn0vZGJ1cy1kYWVtb24tbGF1bmNoLWhlbHBlcgotCWNobW9kIDQ3NTUgJHtEfSR7bGliZXhlY2Rpcn0vZGJ1cy1kYWVtb24tbGF1bmNoLWhlbHBlcgotCi0JIyBSZW1vdmUgUmVkIEhhdCBpbml0c2NyaXB0Ci0Jcm0gLXJmICR7RH0ke3N5c2NvbmZkaXJ9L3JjLmQKLQotCSMgUmVtb3ZlIGVtcHR5IHRlc3RleGVjIGRpcmVjdG9yeSBhcyB3ZSBkb24ndCBidWlsZCB0ZXN0cwotCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2RidXMtMS4wL3Rlc3QKLQotCSMgUmVtb3ZlIC92YXIvcnVuIGFzIGl0IGlzIGNyZWF0ZWQgb24gc3RhcnR1cAotCXJtIC1yZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KLX0KLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCSMgZm9yIGRidXMtZ2xpYi1uYXRpdmUgaW50cm9zcGVjdGlvbiBnZW5lcmF0aW9uCi0JaW5zdGFsbCAtZCAke0R9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9kYnVzLwotCSMgTi5CLiBpcyBiZWxvdyBpbnN0YWxsIGFjdHVhbGx5IHJlcXVpcmVkPwotCWluc3RhbGwgLW0gMDY0NCBidXMvc2Vzc2lvbi5jb25mICR7RH0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2RidXMvc2Vzc2lvbi5jb25mCi0KLQkjIGRidXMtZ2xpYi1uYXRpdmUgYW5kIGRidXMtZ2xpYiBuZWVkIHRoaXMgeG1sIGZpbGUKLQkuL2J1cy9kYnVzLWRhZW1vbiAtLWludHJvc3BlY3QgPiAke0R9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9kYnVzL2RidXMtYnVzLWludHJvc3BlY3QueG1sCi0JCi0JIyBkYnVzLWxhdW5jaCBoYXMgbm8gWCBzdXBwb3J0IHNvIGxldHMgbm90IGluc3RhbGwgaXQgaW4gY2FzZSB0aGUgaG9zdAotCSMgaGFzIGEgbW9yZSBmZWF0dXJlZCBhbmQgdXNlZnVsIHZlcnNpb24KLQlybSAtZiAke0R9JHtiaW5kaXJ9L2RidXMtbGF1bmNoCi19Ci0KLWRvX2luc3RhbGxfY2xhc3MtbmF0aXZlc2RrKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0KLQkjIGRidXMtbGF1bmNoIGhhcyBubyBYIHN1cHBvcnQgc28gbGV0cyBub3QgaW5zdGFsbCBpdCBpbiBjYXNlIHRoZSBob3N0Ci0JIyBoYXMgYSBtb3JlIGZlYXR1cmVkIGFuZCB1c2VmdWwgdmVyc2lvbgotCXJtIC1mICR7RH0ke2JpbmRpcn0vZGJ1cy1sYXVuY2gKLQotCSMgUmVtb3ZlIC92YXIvcnVuIHRvIGF2b2lkIFFBIGVycm9yCi0Jcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bgotfQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1JTlNBTkVfU0tJUF8ke1BOfS1wdGVzdCArPSAiYnVpbGQtZGVwcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXNfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1c18xLjEyLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI1YjY5YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXNfMS4xMi4yLmJiCkBAIC0wLDAgKzEsMTgxIEBACitTVU1NQVJZID0gIkQtQnVzIG1lc3NhZ2UgYnVzIgorREVTQ1JJUFRJT04gPSAiRC1CdXMgaXMgYSBtZXNzYWdlIGJ1cyBzeXN0ZW0sIGEgc2ltcGxlIHdheSBmb3IgYXBwbGljYXRpb25zIHRvIHRhbGsgdG8gb25lIGFub3RoZXIuIEluIGFkZGl0aW9uIHRvIGludGVycHJvY2VzcyBjb21tdW5pY2F0aW9uLCBELUJ1cyBoZWxwcyBjb29yZGluYXRlIHByb2Nlc3MgbGlmZWN5Y2xlOyBpdCBtYWtlcyBpdCBzaW1wbGUgYW5kIHJlbGlhYmxlIHRvIGNvZGUgYSBcInNpbmdsZSBpbnN0YW5jZVwiIGFwcGxpY2F0aW9uIG9yIGRhZW1vbiwgYW5kIHRvIGxhdW5jaCBhcHBsaWNhdGlvbnMgYW5kIGRhZW1vbnMgb24gZGVtYW5kIHdoZW4gdGhlaXIgc2VydmljZXMgYXJlIG5lZWRlZC4iCitIT01FUEFHRSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmciCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkFGTC0yIHwgR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTBkZGVkM2I1ODE0OGYzZjFmZDgwNGIyNjM1NGFmM2UgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGJ1cy9kYnVzLmg7YmVnaW5saW5lPTY7ZW5kbGluZT0yMDttZDU9Nzc1NWM5ZDdhYmNjZDVkYmQyNWE2YTk3NDUzOGJiM2MiCitERVBFTkRTID0gImV4cGF0IHZpcnR1YWwvbGliaW50bCBhdXRvY29uZi1hcmNoaXZlIgorUkRFUEVORFNfZGJ1c19jbGFzcy1uYXRpdmUgPSAiIgorUkRFUEVORFNfZGJ1c19jbGFzcy1uYXRpdmVzZGsgPSAiIgorUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAnJHtQTn0tcHRlc3QnLCAnJywgZCl9IgorQUxMT1dfRU1QVFlfZGJ1cy1wdGVzdCA9ICIxIgorUkRFUEVORFNfZGJ1cy1wdGVzdF9jbGFzcy10YXJnZXQgPSAiZGJ1cy10ZXN0LXB0ZXN0IgorCitTUkNfVVJJID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzL2RidXMtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3RtcGRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kYnVzLTEuaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9jbGVhci1ndWlkX2Zyb21fc2VydmVyLWlmLXNlbmRfbmVnb3RpYXRlX3VuaXhfZi5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzMzYxNDU2Y2FkYjk5YWE2NjAxYmVkNWI0ODk2NDI1NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyNzJiYjUwOTE3NzBiMDQ3YzgxODhiOTI2ZDVlNjAzOGZhNGZlNjc0NTQ4OGIyYWRkOTZiMjNlMmQ5YTgzZDg4IgorCitpbmhlcml0IHVzZXJhZGQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHVwZGF0ZS1yYy5kIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorCitJTklUU0NSSVBUX05BTUUgPSAiZGJ1cy0xIgorSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMDIgNSAzIDIgLiBzdG9wIDIwIDAgMSA2IC4iCisKK3B5dGhvbiBfX2Fub255bW91cygpIHsKKyAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsIFRydWUsIEZhbHNlLCBkKToKKyAgICAgICAgZC5zZXRWYXIoIklOSElCSVRfVVBEQVRFUkNEX0JCQ0xBU1MiLCAiMSIpCit9CisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItciBuZXRkZXYiCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0taG9tZSAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9kYnVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLS1uby1jcmVhdGUtaG9tZSAtLXNoZWxsIC9iaW4vZmFsc2UgXAorICAgICAgICAgICAgICAgICAgICAgICAtLXVzZXItZ3JvdXAgbWVzc2FnZWJ1cyIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vZGJ1cy0xL3N5c3RlbS5jb25mICR7c3lzY29uZmRpcn0vZGJ1cy0xL3Nlc3Npb24uY29uZiIKKworREVCSUFOTkFNRV8ke1BOfSA9ICJkYnVzLTEiCisKK1BBQ0tBR0VTID0rICIke1BOfS1saWIiCisKK09MRFBLR05BTUUgPSAiZGJ1cy14MTEiCitPTERQS0dOQU1FX2NsYXNzLW5hdGl2ZXNkayA9ICIiCisKKyMgZm9yIGNvbXBhdGliaWxpdHkKK1JQUk9WSURFU18ke1BOfSA9ICIke09MRFBLR05BTUV9IgorUlJFUExBQ0VTXyR7UE59ICs9ICIke09MRFBLR05BTUV9IgorCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vZGJ1cy1kYWVtb24qIFwKKyAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLXV1aWRnZW4gXAorICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtY2xlYW51cC1zb2NrZXRzIFwKKyAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLXNlbmQgXAorICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtbW9uaXRvciBcCisgICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1sYXVuY2ggXAorICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtcnVuLXNlc3Npb24gXAorICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtdXBkYXRlLWFjdGl2YXRpb24tZW52aXJvbm1lbnQgXAorICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9kYnVzKiBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9IFwKKyAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0gXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMgXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3Nlc3Npb24uZCBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXNzaW9uLmNvbmYgXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQgXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmNvbmYgXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS94bWwvZGJ1cy0xIFwKKyAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0gXAorICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAorICAgICAgICAgICAgICAgJHtub25hcmNoX2xpYmRpcn0vc3lzdXNlcnMuZC9kYnVzLmNvbmYgXAorICAgICAgICAgICAgICAgJHtub25hcmNoX2xpYmRpcn0vdG1wZmlsZXMuZC9kYnVzLmNvbmYgXAorIgorRklMRVNfJHtQTn0tbGliID0gIiR7bGliZGlyfS9saWIqLnNvLioiCitSUkVDT01NRU5EU18ke1BOfS1saWIgPSAiJHtQTn0iCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9kYnVzLTEuMC9pbmNsdWRlICR7bGliZGlyfS9jbWFrZS9EQnVzMSAke2JpbmRpcn0vZGJ1cy10ZXN0LXRvb2wiCisKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQgc3lzdmluaXQnLCdzeXN0ZW1kLXN5c3RlbWN0bC1uYXRpdmUnLCcnLGQpfSIKK3BrZ19wb3N0aW5zdF9kYnVzKCkgeworCSMgSWYgYm90aCBzeXN0ZW1kIGFuZCBzeXN2aW5pdCBhcmUgZW5hYmxlZCwgbWFzayB0aGUgZGJ1cy0xIGluaXQgc2NyaXB0CisgICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kIHN5c3Zpbml0JywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKwkJaWYgWyAtbiAiJEQiIF07IHRoZW4KKwkJCU9QVFM9Ii0tcm9vdD0kRCIKKwkJZmkKKwkJc3lzdGVtY3RsICRPUFRTIG1hc2sgZGJ1cy0xLnNlcnZpY2UKKwlmaQorCisJaWYgWyAteiAiJEQiIF0gJiYgWyAtZSAvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCBdIDsgdGhlbgorCQkvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCB1cGRhdGUKKwlmaQorfQorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXRlc3RzIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUteG1sLWRvY3MgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kb3h5Z2VuLWRvY3MgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1saWJhdWRpdCBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtbGFyZ2VmaWxlIFwKKyAgICAgICAgICAgICAgICAiCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBTWVNURU1DVEw9JHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgorRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tZGlzYWJsZS1zZWxpbnV4IgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCB4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICIiCisKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS1lbmFibGUtc3lzdGVtZCAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwtLWRpc2FibGUtc3lzdGVtZCAtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsc3lzdGVtZCIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCAtLWVuYWJsZS14MTEtYXV0b2xhdW5jaCwtLXdpdGhvdXQteCAtLWRpc2FibGUteDExLWF1dG9sYXVuY2gsIHZpcnR1YWwvbGlieDExIGxpYnNtIgorUEFDS0FHRUNPTkZJR1t1c2VyLXNlc3Npb25dID0gIi0tZW5hYmxlLXVzZXItc2Vzc2lvbiAtLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9LC0tZGlzYWJsZS11c2VyLXNlc3Npb24iCisKK2RvX2luc3RhbGwoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCQlzZWQgJ3M6QGJpbmRpckA6JHtiaW5kaXJ9OicgPCAke1dPUktESVJ9L2RidXMtMS5pbml0ID4ke1dPUktESVJ9L2RidXMtMS5pbml0LnNoCisJCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2RidXMtMS5pbml0LnNoICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9kYnVzLTEKKwlmaQorCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJZm9yIGkgaW4gZGJ1cy50YXJnZXQud2FudHMgc29ja2V0cy50YXJnZXQud2FudHMgbXVsdGktdXNlci50YXJnZXQud2FudHM7IGRvIFwKKwkJCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vJGk7IGRvbmUKKwkJaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vYnVzL2RidXMuc2VydmljZSAke0J9L2J1cy9kYnVzLnNvY2tldCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8KKwkJbG4gLWZzIC4uL2RidXMuc29ja2V0ICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2RidXMudGFyZ2V0LndhbnRzL2RidXMuc29ja2V0CisJCWxuIC1mcyAuLi9kYnVzLnNvY2tldCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zb2NrZXRzLnRhcmdldC53YW50cy9kYnVzLnNvY2tldAorCQlsbiAtZnMgLi4vZGJ1cy5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L211bHRpLXVzZXIudGFyZ2V0LndhbnRzL2RidXMuc2VydmljZQorCWZpCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisJZWNobyAiZCBtZXNzYWdlYnVzIG1lc3NhZ2VidXMgMDc1NSAke2xvY2Fsc3RhdGVkaXJ9L3J1bi9kYnVzIG5vbmUiIFwKKwkgICAgID4gJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvOTlfZGJ1cworCisKKwlta2RpciAtcCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvZGJ1cworCisJY2hvd24gbWVzc2FnZWJ1czptZXNzYWdlYnVzICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9kYnVzCisKKwljaG93biByb290Om1lc3NhZ2VidXMgJHtEfSR7bGliZXhlY2Rpcn0vZGJ1cy1kYWVtb24tbGF1bmNoLWhlbHBlcgorCWNobW9kIDQ3NTUgJHtEfSR7bGliZXhlY2Rpcn0vZGJ1cy1kYWVtb24tbGF1bmNoLWhlbHBlcgorCisJIyBSZW1vdmUgUmVkIEhhdCBpbml0c2NyaXB0CisJcm0gLXJmICR7RH0ke3N5c2NvbmZkaXJ9L3JjLmQKKworCSMgUmVtb3ZlIGVtcHR5IHRlc3RleGVjIGRpcmVjdG9yeSBhcyB3ZSBkb24ndCBidWlsZCB0ZXN0cworCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2RidXMtMS4wL3Rlc3QKKworCSMgUmVtb3ZlIC92YXIvcnVuIGFzIGl0IGlzIGNyZWF0ZWQgb24gc3RhcnR1cAorCXJtIC1yZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KK30KKworZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCSMgZm9yIGRidXMtZ2xpYi1uYXRpdmUgaW50cm9zcGVjdGlvbiBnZW5lcmF0aW9uCisJaW5zdGFsbCAtZCAke0R9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9kYnVzLworCSMgTi5CLiBpcyBiZWxvdyBpbnN0YWxsIGFjdHVhbGx5IHJlcXVpcmVkPworCWluc3RhbGwgLW0gMDY0NCBidXMvc2Vzc2lvbi5jb25mICR7RH0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2RidXMvc2Vzc2lvbi5jb25mCisKKwkjIGRidXMtZ2xpYi1uYXRpdmUgYW5kIGRidXMtZ2xpYiBuZWVkIHRoaXMgeG1sIGZpbGUKKwkuL2J1cy9kYnVzLWRhZW1vbiAtLWludHJvc3BlY3QgPiAke0R9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9kYnVzL2RidXMtYnVzLWludHJvc3BlY3QueG1sCisJCisJIyBkYnVzLWxhdW5jaCBoYXMgbm8gWCBzdXBwb3J0IHNvIGxldHMgbm90IGluc3RhbGwgaXQgaW4gY2FzZSB0aGUgaG9zdAorCSMgaGFzIGEgbW9yZSBmZWF0dXJlZCBhbmQgdXNlZnVsIHZlcnNpb24KKwlybSAtZiAke0R9JHtiaW5kaXJ9L2RidXMtbGF1bmNoCit9CisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlc2RrKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisKKwkjIGRidXMtbGF1bmNoIGhhcyBubyBYIHN1cHBvcnQgc28gbGV0cyBub3QgaW5zdGFsbCBpdCBpbiBjYXNlIHRoZSBob3N0CisJIyBoYXMgYSBtb3JlIGZlYXR1cmVkIGFuZCB1c2VmdWwgdmVyc2lvbgorCXJtIC1mICR7RH0ke2JpbmRpcn0vZGJ1cy1sYXVuY2gKKworCSMgUmVtb3ZlIC92YXIvcnVuIHRvIGF2b2lkIFFBIGVycm9yCisJcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bgorfQorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitJTlNBTkVfU0tJUF8ke1BOfS1wdGVzdCArPSAiYnVpbGQtZGVwcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDA0LWZpeC0ya2Ita2V5cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDA0LWZpeC0ya2Ita2V5cy5wYXRjaAppbmRleCA3NTM5ZDIwLi42MGM2YTI5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvMDAwNC1maXgtMmtiLWtleXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLzAwMDQtZml4LTJrYi1rZXlzLnBhdGNoCkBAIC01LDE4ICs1LDE1IEBACiAga2V4LmggfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9rZXguaCBiL2tleC5oCi1pbmRleCA3MjQzMGU5Li4zNzVjNjc3IDEwMDY0NAotLS0tIGEva2V4LmgKLSsrKyBiL2tleC5oCi1AQCAtNjcsNiArNjcsNiBAQCBzdHJ1Y3QgS0VYU3RhdGUgewotIH07CitJbmRleDogZHJvcGJlYXItMjAxNy43NS9rZXguaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGRyb3BiZWFyLTIwMTcuNzUub3JpZy9rZXguaAorKysrIGRyb3BiZWFyLTIwMTcuNzUva2V4LmgKK0BAIC0xMDYsNiArMTA2LDYgQEAgaW50IGN1cnZlMjU1MTlfZG9ubmEodW5zaWduZWQgY2hhciAqb3V0LAorICNlbmRpZgogIAogIAogLSNkZWZpbmUgTUFYX0tFWEhBU0hCVUYgMjAwMAogKyNkZWZpbmUgTUFYX0tFWEhBU0hCVUYgMzAwMAogIAotICNlbmRpZiAvKiBfS0VYX0hfICovCi0tLSAKLTEuNy4xMS43Ci0KKyAjZW5kaWYgLyogRFJPUEJFQVJfS0VYX0hfICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVlNmMyNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHN0cmVhbS1vcmllbnRlZCBYTUwgcGFyc2VyIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJFeHBhdCBpcyBhbiBYTUwgcGFyc2VyIGxpYnJhcnkgd3JpdHRlbiBpbiBDLiBJdCBpcyBhIHN0cmVhbS1vcmllbnRlZCBwYXJzZXIgaW4gd2hpY2ggYW4gYXBwbGljYXRpb24gcmVnaXN0ZXJzIGhhbmRsZXJzIGZvciB0aGluZ3MgdGhlIHBhcnNlciBtaWdodCBmaW5kIGluIHRoZSBYTUwgZG9jdW1lbnQgKGxpa2Ugc3RhcnQgdGFncykiCi1IT01FUEFHRSA9ICJodHRwOi8vZXhwYXQuc291cmNlZm9yZ2UubmV0LyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTUlUIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9leHBhdC9leHBhdC0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2F1dG90b29scy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ0b29sLXRhZy5wYXRjaCBcCi0JICAiCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL25vX2dldHJhbmRvbS5wYXRjaCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UKLQotIyBUaGlzIHBhY2thZ2UgdXNlcyBhbiBhcmNoaXZlIGZvcm1hdCBrbm93biB0byBoYXZlIGlzc3VlIHdpdGggc29tZQotIyB2ZXJzaW9ucyBvZiBnemlwCi1ERVBFTkRTICs9ICJwaWd6LW5hdGl2ZSIKLWRvX3VucGFja1tkZXBlbmRzXSArPSAicGlnei1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCXJtIC1mICR7U30vY29uZnRvb2xzL2xpYnRvb2wubTQKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0L2F1dG90b29scy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC9hdXRvdG9vbHMucGF0Y2gKaW5kZXggM2QzYzViYS4uMTA0NzE3ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0L2F1dG90b29scy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQvYXV0b3Rvb2xzLnBhdGNoCkBAIC0xMCwxMSArMTAsMTIgQEAKIAogU2lnbmVkLW9mZi1ieTogTWFya28gTGluZHF2aXN0IDxjYXpmaTc0QGdtYWlsLmNvbT4KIAotZGlmZiAtTnVyZCBleHBhdC0yLjEuMC9jb25maWd1cmUuaW4gZXhwYXQtMi4xLjAvY29uZmlndXJlLmluCi0tLS0gZXhwYXQtMi4xLjAvY29uZmlndXJlLmFjCTIwMTItMDMtMDQgMDE6NDU6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZXhwYXQtMi4xLjAvY29uZmlndXJlLmFjCTIwMTItMDUtMTAgMjE6MDQ6NDQuMDAwMDAwMDAwICswMzAwCi1AQCAtNTEsOCArNTEsNiBAQAotIAorSW5kZXg6IGV4cGF0LTIuMi41L2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGV4cGF0LTIuMi41Lm9yaWcvY29uZmlndXJlLmFjCisrKysgZXhwYXQtMi4yLjUvY29uZmlndXJlLmFjCitAQCAtNTMsOCArNTMsNiBAQCBMSUJBR0U9NiAgICAgICAjIENNYWtlTGlzdHMudHh0IQorIENQUEZMQUdTPSIke0NQUEZMQUdTfSAtREhBVkVfRVhQQVRfQ09ORklHX0giCiAgQUNfQ09ORklHX0hFQURFUihleHBhdF9jb25maWcuaCkKICAKIC1zaW5jbHVkZShjb25mdG9vbHMvYWNfY19iaWdlbmRpYW5fY3Jvc3MubTQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQvbGlidG9vbC10YWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQvbGlidG9vbC10YWcucGF0Y2gKaW5kZXggM2VmNDE5Ny4uMGEwYWVkMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0L2xpYnRvb2wtdGFnLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC9saWJ0b29sLXRhZy5wYXRjaApAQCAtMSwxOCArMSwzMCBAQAorRnJvbSAxMDM0MmU2YjYwMDg1OGIwOTFiYzc3NzFlNDU0ZDllMDZhZjA2NDEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMiBOb3YgMjAxNyAxODoyMDo1NyArMDgwMAorU3ViamVjdDogW1BBVENIXSBBZGQgQ0MgdGFnIHRvIGJ1aWxkCisKIEFkZCBDQyB0YWcgdG8gYnVpbGQKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KKy0tLQorIE1ha2VmaWxlLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1JbmRleDogZXhwYXQtMi4yLjIvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBleHBhdC0yLjIuMi5vcmlnL01ha2VmaWxlLmluCi0rKysgZXhwYXQtMi4yLjIvTWFrZWZpbGUuaW4KLUBAIC0xMDksNyArMTA5LDcgQEAgbWtkaXItaW5pdDoKLSAKLSBDQyA9IEBDQ0AKLSBDWFggPSBAQ1hYQAorZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KK2luZGV4IDk1NjBhOTUuLmQ0NDRiZDYgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC0zMTksNyArMzE5LDcgQEAgTElCQ1VSUkVOVCA9IEBMSUJDVVJSRU5UQAorIExJQk9CSlMgPSBATElCT0JKU0AKKyBMSUJSRVZJU0lPTiA9IEBMSUJSRVZJU0lPTkAKKyBMSUJTID0gQExJQlNACiAtTElCVE9PTCA9IEBMSUJUT09MQAogK0xJQlRPT0wgPSBATElCVE9PTEAgLS10YWcgQ0MKLSAKLSBJTkNMVURFUyA9IC1JJChzcmNkaXIpL2xpYiAtSS4KLSBMREZMQUdTID0gQExERkxBR1NACisgTElQTyA9IEBMSVBPQAorIExOX1MgPSBATE5fU0AKKyBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQvbm9fZ2V0cmFuZG9tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0L25vX2dldHJhbmRvbS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY0ZjFiZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQvbm9fZ2V0cmFuZG9tLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotVGhlIG5hdGl2ZSB2ZXJzaW9uIG9mIGV4cGF0IG1heSBiZSB1c2VkIG9uIG9sZGVyIHN5c3RlbXMgd2hpY2ggZG9udCBoYXZlIGdsaWJjIDIuMjUKLWFuZCBoZW5jZSBkb24ndCBoYXZlIGdldHJhbmRvbSgpIHRoYW5rcyB0byB1bmluYXRpdmUuIERpc2FibGUgdGhlIGxpYmMgY2FsbCBhbmQKLXVzZSB0aGUgc3lzY2FsbCBpbnN0ZWFkIHRvIGF2b2lkIGEgY29tcGF0aWJpbGl0eSBpc3N1ZSB1bnRpbCB3ZSBoYXZlIDIuMjUgZXZlcnl3aGVyZQotd2Ugc3VwcG9ydCB3aXRoIHVuaW5hdGl2ZS4KLQotUlAKLTIwMTcvOC8xNAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLQotSW5kZXg6IGV4cGF0LTIuMi4zL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGV4cGF0LTIuMi4zLm9yaWcvY29uZmlndXJlLmFjCi0rKysgZXhwYXQtMi4yLjMvY29uZmlndXJlLmFjCi1AQCAtMTUxLDcgKzE1MSw3IEBAIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbCi0gICAjaW5jbHVkZSA8c3RkbGliLmg+ICAvKiBmb3IgTlVMTCAqLwotICAgI2luY2x1ZGUgPHN5cy9yYW5kb20uaD4KLSAgIGludCBtYWluKCkgewotLSAgICByZXR1cm4gZ2V0cmFuZG9tKE5VTEwsIDBVLCAwVSk7Ci0rICAgIHJldHVybiBnZXRyYW5kb21CUkVBS01FKE5VTEwsIDBVLCAwVSk7Ci0gICB9Ci0gXSldLCBbCi0gICAgIEFDX0RFRklORShbSEFWRV9HRVRSQU5ET01dLCBbMV0sCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXRfMi4yLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXRfMi4yLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiZjg0NTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0XzIuMi4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1yZXF1aXJlIGV4cGF0LmluYwotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWI4NjIwZDk4ZTQ5NzcyZDk1ZmMxZDI5MWMyNmFhNzkiCi1TUkNfVVJJW21kNXN1bV0gPSAiZjA1M2FmNjNlZjVmMzliZDliNzhkMDFmYmMyMDMzMzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjMxODkwZmIwMmY4NWMwMDJhNjc0OTE5MjNmODliZGE1MDI4YTg4MGZkNmMzNzRmNzA3MTkzYWQ4MWFhY2U1ZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdF8yLjIuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdF8yLjIuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjhhMmVmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0XzIuMi41LmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgPSAiQSBzdHJlYW0tb3JpZW50ZWQgWE1MIHBhcnNlciBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiRXhwYXQgaXMgYW4gWE1MIHBhcnNlciBsaWJyYXJ5IHdyaXR0ZW4gaW4gQy4gSXQgaXMgYSBzdHJlYW0tb3JpZW50ZWQgcGFyc2VyIGluIHdoaWNoIGFuIGFwcGxpY2F0aW9uIHJlZ2lzdGVycyBoYW5kbGVycyBmb3IgdGhpbmdzIHRoZSBwYXJzZXIgbWlnaHQgZmluZCBpbiB0aGUgWE1MIGRvY3VtZW50IChsaWtlIHN0YXJ0IHRhZ3MpIgorSE9NRVBBR0UgPSAiaHR0cDovL2V4cGF0LnNvdXJjZWZvcmdlLm5ldC8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIk1JVCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWI4NjIwZDk4ZTQ5NzcyZDk1ZmMxZDI5MWMyNmFhNzkiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2V4cGF0L2V4cGF0LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vYXV0b3Rvb2xzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpYnRvb2wtdGFnLnBhdGNoIFwKKwkgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjc4OWUyOTdmNTQ3OTgwZmM5ZWNjMDM2ZjlhMDcwZDQ5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ5ZGMzMmVmYmE3ZTc0Zjc4OGZjYzRmMjEyYTQzMjE2ZmMzN2NmNWYyM2Y0YzIzMzk2NjRkNDczMzUzYWVkZjYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlybSAtZiAke1N9L2NvbmZ0b29scy9saWJ0b29sLm00Cit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4xOS44LjEvdXNlLXBrZ2NvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4xOS44LjEvdXNlLXBrZ2NvbmZpZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTU2YTE1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS91c2UtcGtnY29uZmlnLnBhdGNoCkBAIC0wLDAgKzEsMzIxIEBACitGb3IgcmVhc29ucyB3aGljaCBJIGp1c3QgY2FuJ3QgZmF0aG9tIGdudWxpYiBkb2Vzbid0IHVzZSB0aGUgZXhwZWN0ZWQgdG9vbHMgdG8KK2ZpbmQgbGlicmFyaWVzIGJ1dCBiYWRseSByZWludmVudHMgdGhlIHdoZWVsLiAgVGhpcyB3aWxsIHRyaXZpYWxseSBsZWFkIHRvIGhvc3QKK2NvbnRhbWluYXRpb24gKGV4cGxpY2l0IHNlYXJjaGVzIG9mIC91c3IvbGliKSBvciBpbmNvcnJlY3QgUlBBVEhzIChiYWQKK2Nhbm9uaWNhbGlzYXRpb24gcmVzdWx0aW5nIGluIHJlbGF0aXZlIHBhdGhzKS4KKworU2ltcGx5IGRlbGV0ZSBhbGwgdGhlIGNyYXp5LCBhbmQgcmVwbGFjZSB3aXRoIGEgc2luZ2xlIGNhbGwgdG8gcGtnLWNvbmZpZy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlICh1cHN0cmVhbSBzdGlsbCByZWZ1c2UgdG8gY29uc2lkZXIgcGtnLWNvbmZpZykKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKK2RpZmYgLS1naXQgYS9nbnVsaWItbG9jYWwvbTQvbGliY3JvY28ubTQgYi9nbnVsaWItbG9jYWwvbTQvbGliY3JvY28ubTQKK2luZGV4IGY3OWVhODJmMS4uMWY2NzI3NGRiIDEwMDY0NAorLS0tIGEvZ2V0dGV4dC10b29scy9nbnVsaWItbTQvbGliY3JvY28ubTQKKysrKyBiL2dldHRleHQtdG9vbHMvZ251bGliLW00L2xpYmNyb2NvLm00CitAQCAtOCw2ICs4LDcgQEAgZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgorIAorIEFDX0RFRlVOKFtnbF9MSUJDUk9DT10sCisgWworKyAgQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCisgICBkbmwgbGliY3JvY28gZGVwZW5kcyBvbiBsaWJnbGliLgorICAgQUNfUkVRVUlSRShbZ2xfTElCR0xJQl0pCisgCitAQCAtMjMsNjUgKzI0LDEwIEBAIEFDX0RFRlVOKFtnbF9MSUJDUk9DT10sCisgICBMVExJQkNST0NPPQorICAgSU5DQ1JPQ089CisgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliY3JvY29fdXNlX2luY2x1ZGVkIiAhPSB5ZXM7IHRoZW4KKy0gICAgZG5sIEZpZ3VyZSBvdXQgd2hldGhlciB3ZSBjYW4gdXNlIGEgcHJlaW5zdGFsbGVkIGxpYmNyb2NvLTAuNiwgb3IgaGF2ZSB0bworLSAgICBkbmwgdXNlIHRoZSBpbmNsdWRlZCBvbmUuCistICAgIEFDX0NBQ0hFX1ZBTChbZ2xfY3ZfbGliY3JvY29dLCBbCistICAgICAgZ2xfY3ZfbGliY3JvY289bm8KKy0gICAgICBnbF9jdl9MSUJDUk9DTz0KKy0gICAgICBnbF9jdl9MVExJQkNST0NPPQorLSAgICAgIGdsX2N2X0lOQ0NST0NPPQorLSAgICAgIGdsX3NhdmVfTElCUz0iJExJQlMiCistICAgICAgZG5sIFNlYXJjaCBmb3IgbGliY3JvY28gYW5kIGRlZmluZSBMSUJDUk9DT18wXzYsIExUTElCQ1JPQ09fMF82IGFuZAorLSAgICAgIGRubCBJTkNDUk9DT18wXzYgYWNjb3JkaW5nbHkuCistICAgICAgZG5sIERvbid0IHVzZSBjcm9jby0wLjYtY29uZmlnIG5vciBwa2ctY29uZmlnLCBzaW5jZSBpdCBkb2Vzbid0IHdvcmsgd2hlbgorLSAgICAgIGRubCBjcm9zcy1jb21waWxpbmcgb3Igd2hlbiB0aGUgQyBjb21waWxlciBpbiB1c2UgaXMgZGlmZmVyZW50IGZyb20gdGhlCistICAgICAgZG5sIG9uZSB0aGF0IGJ1aWx0IHRoZSBsaWJyYXJ5LgorLSAgICAgIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShbY3JvY28tMC42XSwgW2dsaWItMi4wXSkKKy0gICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTICRMSUJDUk9DT18wXzYiCistICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJjcm9jby1jb25maWcuaD5dLAorLSAgICAgICAgW2NvbnN0IGNoYXIgKnZlcnNpb24gPSBMSUJDUk9DT19WRVJTSU9OOyByZXR1cm4gIXZlcnNpb247XSwKKy0gICAgICAgIFtnbF9jdl9saWJjcm9jbz15ZXMKKy0gICAgICAgICBnbF9jdl9MSUJDUk9DTz0iJExJQkNST0NPXzBfNiIKKy0gICAgICAgICBnbF9jdl9MVExJQkNST0NPPSIkTFRMSUJDUk9DT18wXzYiCistICAgICAgICBdKQorLSAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJjcm9jbyIgIT0geWVzOyB0aGVuCistICAgICAgICBnbF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCistICAgICAgICBDUFBGTEFHUz0iJENQUEZMQUdTICRJTkNDUk9DT18wXzYiCistICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYmNyb2NvLWNvbmZpZy5oPl0sCistICAgICAgICAgIFtjb25zdCBjaGFyICp2ZXJzaW9uID0gTElCQ1JPQ09fVkVSU0lPTjsgcmV0dXJuICF2ZXJzaW9uO10sCistICAgICAgICAgIFtnbF9jdl9saWJjcm9jbz15ZXMKKy0gICAgICAgICAgIGdsX2N2X0xJQkNST0NPPSIkTElCQ1JPQ09fMF82IgorLSAgICAgICAgICAgZ2xfY3ZfTFRMSUJDUk9DTz0iJExUTElCQ1JPQ09fMF82IgorLSAgICAgICAgICAgZ2xfY3ZfSU5DQ1JPQ089IiRJTkNDUk9DT18wXzYiCistICAgICAgICAgIF0pCistICAgICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliY3JvY28iICE9IHllczsgdGhlbgorLSAgICAgICAgICBkbmwgT2Z0ZW4gdGhlIGluY2x1ZGUgZmlsZXMgYXJlIGluc3RhbGxlZCBpbgorLSAgICAgICAgICBkbmwgL3Vzci9pbmNsdWRlL2xpYmNyb2NvLTAuNi9saWJjcm9jby4KKy0gICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJjcm9jby0wLjYvbGliY3JvY28vbGliY3JvY28tY29uZmlnLmg+XSwKKy0gICAgICAgICAgICBbY29uc3QgY2hhciAqdmVyc2lvbiA9IExJQkNST0NPX1ZFUlNJT047IHJldHVybiAhdmVyc2lvbjtdLAorLSAgICAgICAgICAgIFtnbF9BQlNPTFVURV9IRUFERVIoW2xpYmNyb2NvLTAuNi9saWJjcm9jby9saWJjcm9jby1jb25maWcuaF0pCistICAgICAgICAgICAgIGxpYmNyb2NvX2luY2x1ZGVfZGlyPWBlY2hvICIkZ2xfY3ZfYWJzb2x1dGVfbGliY3JvY29fMF82X2xpYmNyb2NvX2xpYmNyb2NvX2NvbmZpZ19oIiB8IHNlZCAtZSAncywubGliY3JvY28tY29uZmlnXC5oJCwsJ2AKKy0gICAgICAgICAgICAgaWYgdGVzdCAtZCAiJGxpYmNyb2NvX2luY2x1ZGVfZGlyIjsgdGhlbgorLSAgICAgICAgICAgICAgIGdsX2N2X2xpYmNyb2NvPXllcworLSAgICAgICAgICAgICAgIGdsX2N2X0xJQkNST0NPPSIkTElCQ1JPQ09fMF82IgorLSAgICAgICAgICAgICAgIGdsX2N2X0xUTElCQ1JPQ089IiRMVExJQkNST0NPXzBfNiIKKy0gICAgICAgICAgICAgICBnbF9jdl9JTkNDUk9DTz0iLUkkbGliY3JvY29faW5jbHVkZV9kaXIiCistICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgXSkKKy0gICAgICAgIGZpCistICAgICAgICBDUFBGTEFHUz0iJGdsX3NhdmVfQ1BQRkxBR1MiCistICAgICAgZmkKKy0gICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTIgorLSAgICBdKQorLSAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBsaWJjcm9jb10pCistICAgIEFDX01TR19SRVNVTFQoWyRnbF9jdl9saWJjcm9jb10pCistICAgIGlmIHRlc3QgJGdsX2N2X2xpYmNyb2NvID0geWVzOyB0aGVuCistICAgICAgTElCQ1JPQ089IiRnbF9jdl9MSUJDUk9DTyIKKy0gICAgICBMVExJQkNST0NPPSIkZ2xfY3ZfTFRMSUJDUk9DTyIKKy0gICAgICBJTkNDUk9DTz0iJGdsX2N2X0lOQ0NST0NPIgorLSAgICBlbHNlCistICAgICAgZ2xfY3ZfbGliY3JvY29fdXNlX2luY2x1ZGVkPXllcworLSAgICBmaQorKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbQ1JPQ09dLCBbbGliY3JvY28tMC42XSkKKysgICAgTElCQ1JPQ089JENST0NPX0xJQlMKKysgICAgTFRMSUJDUk9DTz0kQ1JPQ09fTElCUworKyAgICBJTkNDUk9DTz0kQ1JPQ09fQ0ZMQUdTCisgICBmaQorICAgQUNfU1VCU1QoW0xJQkNST0NPXSkKKyAgIEFDX1NVQlNUKFtMVExJQkNST0NPXSkKK2RpZmYgLS1naXQgYS9nbnVsaWItbG9jYWwvbTQvbGliZ2xpYi5tNCBiL2dudWxpYi1sb2NhbC9tNC9saWJnbGliLm00CitpbmRleCA0MmU1NWU2ZmQuLmFiMjVhNWIyMiAxMDA2NDQKKy0tLSBhL2dldHRleHQtdG9vbHMvZ251bGliLW00L2xpYmdsaWIubTQKKysrKyBiL2dldHRleHQtdG9vbHMvZ251bGliLW00L2xpYmdsaWIubTQKK0BAIC04LDYgKzgsNyBAQCBkbmwgRnJvbSBCcnVubyBIYWlibGUuCisgCisgQUNfREVGVU4oW2dsX0xJQkdMSUJdLAorIFsKKysgIEFDX1JFUVVJUkUoW1BLR19QUk9HX1BLR19DT05GSUddKQorICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGluY2x1ZGVkIGdsaWIgaXMgcmVxdWVzdGVkXSkKKyAgIEFDX0FSR19XSVRIKFtpbmNsdWRlZC1nbGliXSwKKyAgICAgWyAgLS13aXRoLWluY2x1ZGVkLWdsaWIgICAgdXNlIHRoZSBnbGliMiBpbmNsdWRlZCBoZXJlXSwKK0BAIC0yMCw3NiArMjEsMTAgQEAgQUNfREVGVU4oW2dsX0xJQkdMSUJdLAorICAgTFRMSUJHTElCPQorICAgSU5DR0xJQj0KKyAgIGlmIHRlc3QgIiRnbF9jdl9saWJnbGliX3VzZV9pbmNsdWRlZCIgIT0geWVzOyB0aGVuCistICAgIGRubCBGaWd1cmUgb3V0IHdoZXRoZXIgd2UgY2FuIHVzZSBhIHByZWluc3RhbGxlZCBsaWJnbGliLTIuMCwgb3IgaGF2ZSB0byB1c2UKKy0gICAgZG5sIHRoZSBpbmNsdWRlZCBvbmUuCistICAgIEFDX0NBQ0hFX1ZBTChbZ2xfY3ZfbGliZ2xpYl0sIFsKKy0gICAgICBnbF9jdl9saWJnbGliPW5vCistICAgICAgZ2xfY3ZfTElCR0xJQj0KKy0gICAgICBnbF9jdl9MVExJQkdMSUI9CistICAgICAgZ2xfY3ZfSU5DR0xJQj0KKy0gICAgICBnbF9zYXZlX0xJQlM9IiRMSUJTIgorLSAgICAgIGRubCBTZWFyY2ggZm9yIGxpYmdsaWIyIGFuZCBkZWZpbmUgTElCR0xJQl8yXzAsIExUTElCR0xJQl8yXzAgYW5kCistICAgICAgZG5sIElOQ0dMSUJfMl8wIGFjY29yZGluZ2x5LgorLSAgICAgIGRubCBEb24ndCB1c2UgZ2xpYi1jb25maWcgbm9yIHBrZy1jb25maWcsIHNpbmNlIGl0IGRvZXNuJ3Qgd29yayB3aGVuCistICAgICAgZG5sIGNyb3NzLWNvbXBpbGluZyBvciB3aGVuIHRoZSBDIGNvbXBpbGVyIGluIHVzZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUKKy0gICAgICBkbmwgb25lIHRoYXQgYnVpbHQgdGhlIGxpYnJhcnkuCistICAgICAgQUNfTElCX0xJTktGTEFHU19CT0RZKFtnbGliLTIuMF0pCistICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyAkTElCR0xJQl8yXzAiCistICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxnbGliLmg+CistI2lmbmRlZiBHX0JFR0lOX0RFQ0xTCistZXJyb3IgdGhpcyBnbGliLmggaW5jbHVkZXMgYSBnbGliY29uZmlnLmggZnJvbSBhIGdsaWIgdmVyc2lvbiAxLngKKy0jZW5kaWYKKy1dLAorLSAgICAgICAgW2dfc3RyaW5nX25ldyAoImZvbyIpO10sCistICAgICAgICBbZ2xfY3ZfbGliZ2xpYj15ZXMKKy0gICAgICAgICBnbF9jdl9MSUJHTElCPSIkTElCR0xJQl8yXzAiCistICAgICAgICAgZ2xfY3ZfTFRMSUJHTElCPSIkTFRMSUJHTElCXzJfMCIKKy0gICAgICAgIF0pCistICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYmdsaWIiICE9IHllczsgdGhlbgorLSAgICAgICAgZ2xfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorLSAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkSU5DR0xJQl8yXzAiCistICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGdsaWIuaD4KKy0jaWZuZGVmIEdfQkVHSU5fREVDTFMKKy1lcnJvciB0aGlzIGdsaWIuaCBpbmNsdWRlcyBhIGdsaWJjb25maWcuaCBmcm9tIGEgZ2xpYiB2ZXJzaW9uIDEueAorLSNlbmRpZgorLV0sCistICAgICAgICAgIFtnX3N0cmluZ19uZXcgKCJmb28iKTtdLAorLSAgICAgICAgICBbZ2xfY3ZfbGliZ2xpYj15ZXMKKy0gICAgICAgICAgIGdsX2N2X0xJQkdMSUI9IiRMSUJHTElCXzJfMCIKKy0gICAgICAgICAgIGdsX2N2X0xUTElCR0xJQj0iJExUTElCR0xJQl8yXzAiCistICAgICAgICAgICBnbF9jdl9JTkNHTElCPSIkSU5DR0xJQl8yXzAiCistICAgICAgICAgIF0pCistICAgICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliZ2xpYiIgIT0geWVzOyB0aGVuCistICAgICAgICAgIGRubCBPZnRlbiB0aGUgaW5jbHVkZSBmaWxlcyBhcmUgaW5zdGFsbGVkIGluIC91c3IvaW5jbHVkZS9nbGliLTIuMAorLSAgICAgICAgICBkbmwgYW5kIC91c3IvbGliL2dsaWItMi4wL2luY2x1ZGUuCistICAgICAgICAgIGlmIHRlc3QgLW4gIiRMSUJHTElCXzJfMF9QUkVGSVgiOyB0aGVuCistICAgICAgICAgICAgQ1BQRkxBR1M9IiRnbF9zYXZlX0NQUEZMQUdTIC1JJExJQkdMSUJfMl8wX1BSRUZJWC9pbmNsdWRlL2dsaWItMi4wIC1JJExJQkdMSUJfMl8wX1BSRUZJWC8kYWNsX2xpYmRpcnN0ZW0vZ2xpYi0yLjAvaW5jbHVkZSIKKy0gICAgICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGdsaWIuaD4KKy0jaWZuZGVmIEdfQkVHSU5fREVDTFMKKy1lcnJvciB0aGlzIGdsaWIuaCBpbmNsdWRlcyBhIGdsaWJjb25maWcuaCBmcm9tIGEgZ2xpYiB2ZXJzaW9uIDEueAorLSNlbmRpZgorLV0sCistICAgICAgICAgICAgICBbZ19zdHJpbmdfbmV3ICgiZm9vIik7XSwKKy0gICAgICAgICAgICAgIFtnbF9jdl9saWJnbGliPXllcworLSAgICAgICAgICAgICAgIGdsX2N2X0xJQkdMSUI9IiRMSUJHTElCXzJfMCIKKy0gICAgICAgICAgICAgICBnbF9jdl9MVExJQkdMSUI9IiRMVExJQkdMSUJfMl8wIgorLSAgICAgICAgICAgICAgIGdsX2N2X0lOQ0dMSUI9Ii1JJExJQkdMSUJfMl8wX1BSRUZJWC9pbmNsdWRlL2dsaWItMi4wIC1JJExJQkdMSUJfMl8wX1BSRUZJWC8kYWNsX2xpYmRpcnN0ZW0vZ2xpYi0yLjAvaW5jbHVkZSIKKy0gICAgICAgICAgICAgIF0pCistICAgICAgICAgIGZpCistICAgICAgICBmaQorLSAgICAgICAgQ1BQRkxBR1M9IiRnbF9zYXZlX0NQUEZMQUdTIgorLSAgICAgIGZpCistICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyIKKy0gICAgXSkKKy0gICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgZ2xpYl0pCistICAgIEFDX01TR19SRVNVTFQoWyRnbF9jdl9saWJnbGliXSkKKy0gICAgaWYgdGVzdCAkZ2xfY3ZfbGliZ2xpYiA9IHllczsgdGhlbgorLSAgICAgIExJQkdMSUI9IiRnbF9jdl9MSUJHTElCIgorLSAgICAgIExUTElCR0xJQj0iJGdsX2N2X0xUTElCR0xJQiIKKy0gICAgICBJTkNHTElCPSIkZ2xfY3ZfSU5DR0xJQiIKKy0gICAgZWxzZQorLSAgICAgIGdsX2N2X2xpYmdsaWJfdXNlX2luY2x1ZGVkPXllcworLSAgICBmaQorKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbR0xJQl0sIFtnbGliLTIuMF0pCisrICAgIExJQkdMSUI9IiRHTElCX0xJQlMiCisrICAgIExUTElCR0xJQj0iJEdMSUJfTElCUyIKKysgICAgSU5DR0xJQj0iJEdMSUJfQ0ZMQUdTIgorICAgZmkKKyAgIEFDX1NVQlNUKFtMSUJHTElCXSkKKyAgIEFDX1NVQlNUKFtMVExJQkdMSUJdKQorZGlmZiAtLWdpdCBhL2dudWxpYi1sb2NhbC9tNC9saWJ4bWwubTQgYi9nbnVsaWItbG9jYWwvbTQvbGlieG1sLm00CitpbmRleCA0ODBjNzAwZDIuLmNiMzkzMDlkNSAxMDA2NDQKKy0tLSBhL2dldHRleHQtdG9vbHMvZ251bGliLW00L2xpYnhtbC5tNAorKysrIGIvZ2V0dGV4dC10b29scy9nbnVsaWItbTQvbGlieG1sLm00CitAQCAtOCw2ICs4LDcgQEAgZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgorCisgQUNfREVGVU4oW2dsX0xJQlhNTF0sCisgWworKyAgQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCisgICBBQ19SRVFVSVJFKFtBTV9JQ09OVl9MSU5LXSkKKworICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGluY2x1ZGVkIGxpYnhtbCBpcyByZXF1ZXN0ZWRdKQorQEAgLTIyLDEwMCArMjIsMTAgQEAgQUNfREVGVU4oW2dsX0xJQlhNTF0sCisgICBMVExJQlhNTD0KKyAgIElOQ1hNTD0KKyAgIGlmIHRlc3QgIiRnbF9jdl9saWJ4bWxfdXNlX2luY2x1ZGVkIiAhPSB5ZXM7IHRoZW4KKy0gICAgZG5sIEZpZ3VyZSBvdXQgd2hldGhlciB3ZSBjYW4gdXNlIGEgcHJlaW5zdGFsbGVkIGxpYnhtbDIsIG9yIGhhdmUgdG8gdXNlCistICAgIGRubCB0aGUgaW5jbHVkZWQgb25lLgorLSAgICBBQ19DQUNIRV9WQUwoW2dsX2N2X2xpYnhtbF0sIFsKKy0gICAgICBnbF9jdl9saWJ4bWw9bm8KKy0gICAgICBnbF9jdl9MSUJYTUw9CistICAgICAgZ2xfY3ZfTFRMSUJYTUw9CistICAgICAgZ2xfY3ZfSU5DWE1MPQorLSAgICAgIGdsX3NhdmVfTElCUz0iJExJQlMiCistICAgICAgTElCUz0iJExJQlMgJExJQklDT05WIgorLSAgICAgIGRubCBTZWFyY2ggZm9yIGxpYnhtbDIgYW5kIGRlZmluZSBMSUJYTUwyLCBMVExJQlhNTDIgYW5kIElOQ1hNTDIKKy0gICAgICBkbmwgYWNjb3JkaW5nbHkuCistICAgICAgZG5sIERvbid0IHVzZSB4bWwyLWNvbmZpZyBub3IgcGtnLWNvbmZpZywgc2luY2UgaXQgZG9lc24ndCB3b3JrIHdoZW4KKy0gICAgICBkbmwgY3Jvc3MtY29tcGlsaW5nIG9yIHdoZW4gdGhlIEMgY29tcGlsZXIgaW4gdXNlIGlzIGRpZmZlcmVudCBmcm9tIHRoZQorLSAgICAgIGRubCBvbmUgdGhhdCBidWlsdCB0aGUgbGlicmFyeS4KKy0gICAgICBkbmwgVXNlIGEgdGVzdCBwcm9ncmFtIHRoYXQgdHJpZXMgdG8gaW52b2tlIHhtbEZyZWUuIE9uIEN5Z3dpbiAxLjcueCwKKy0gICAgICBkbmwgbGlieG1sMiBpcyBidWlsdCBpbiBzdWNoIGEgd2F5IHRoYXQgdXNlcyBvZiB4bWxGcmVlIHdvcmsgZmluZSB3aXRoCistICAgICAgZG5sIC1XbCwtLWVuYWJsZS1hdXRvLWltcG9ydCBidXQgbGVhZCB0byBhIGxpbmsgZXJyb3Igd2l0aAorLSAgICAgIGRubCAtV2wsLS1kaXNhYmxlLWF1dG8taW1wb3J0LgorLSAgICAgIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShbeG1sMl0pCistICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyAkTElCWE1MMiAkTElCSUNPTlYiCistICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJ4bWwveG1sdmVyc2lvbi5oPgorLSAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8bGlieG1sL3htbG1lbW9yeS5oPgorLSAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8bGlieG1sL3hwYXRoLmg+CistICAgICAgICAgICAgICAgICAgXSwKKy0gICAgICAgIFt4bWxDaGVja1ZlcnNpb24gKDApOworLSAgICAgICAgIHhtbEZyZWUgKCh2b2lkICopIDApOworLSAgICAgICAgIHhtbFhQYXRoU2V0Q29udGV4dE5vZGUgKCh2b2lkICopMCwgKHZvaWQgKikwKTsKKy0gICAgICAgIF0sCistICAgICAgICBbZ2xfY3ZfbGlieG1sPXllcworLSAgICAgICAgIGdsX2N2X0xJQlhNTD0iJExJQlhNTDIgJExJQklDT05WIgorLSAgICAgICAgIGdsX2N2X0xUTElCWE1MPSIkTFRMSUJYTUwyICRMVExJQklDT05WIgorLSAgICAgICAgXSkKKy0gICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGlieG1sIiAhPSB5ZXM7IHRoZW4KKy0gICAgICAgIGdsX3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKy0gICAgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJElOQ1hNTDIiCistICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYnhtbC94bWx2ZXJzaW9uLmg+CistICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGxpYnhtbC94bWxtZW1vcnkuaD4KKy0gICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8bGlieG1sL3hwYXRoLmg+CistICAgICAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICBbeG1sQ2hlY2tWZXJzaW9uICgwKTsKKy0gICAgICAgICAgIHhtbEZyZWUgKCh2b2lkICopIDApOworLSAgICAgICAgICAgeG1sWFBhdGhTZXRDb250ZXh0Tm9kZSAoKHZvaWQgKikwLCAodm9pZCAqKTApOworLSAgICAgICAgICBdLAorLSAgICAgICAgICBbZ2xfY3ZfbGlieG1sPXllcworLSAgICAgICAgICAgZ2xfY3ZfTElCWE1MPSIkTElCWE1MMiAkTElCSUNPTlYiCistICAgICAgICAgICBnbF9jdl9MVExJQlhNTD0iJExUTElCWE1MMiAkTFRMSUJJQ09OViIKKy0gICAgICAgICAgIGdsX2N2X0lOQ1hNTD0iJElOQ1hNTDIiCistICAgICAgICAgIF0pCistICAgICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGlieG1sIiAhPSB5ZXM7IHRoZW4KKy0gICAgICAgICAgZG5sIE9mdGVuIHRoZSBpbmNsdWRlIGZpbGVzIGFyZSBpbnN0YWxsZWQgaW4gL3Vzci9pbmNsdWRlL2xpYnhtbDIuCistICAgICAgICAgIGRubCBJbiBsaWJ4bWwyLTIuNSwgPGxpYnhtbC94bWx2ZXJzaW9uLmg+IGlzIHNlbGYtY29udGFpbmVkLgorLSAgICAgICAgICBkbmwgSW4gbGlieG1sMi0yLjYsIGl0IGluY2x1ZGVzIDxsaWJ4bWwveG1sZXhwb3J0cy5oPiB3aGljaCBpcworLSAgICAgICAgICBkbmwgc2VsZi1jb250YWluZWQuCistICAgICAgICAgIGxpYnhtbDJfaW5jbHVkZV9kaXI9CistICAgICAgICAgIEFDX1RSWV9DUFAoWyNpbmNsdWRlIDxsaWJ4bWwyL2xpYnhtbC94bWxleHBvcnRzLmg+XSwKKy0gICAgICAgICAgICBbZ2xfQUJTT0xVVEVfSEVBREVSKFtsaWJ4bWwyL2xpYnhtbC94bWxleHBvcnRzLmhdKQorLSAgICAgICAgICAgICBsaWJ4bWwyX2luY2x1ZGVfZGlyPWBlY2hvICIkZ2xfY3ZfYWJzb2x1dGVfbGlieG1sMl9saWJ4bWxfeG1sZXhwb3J0c19oIiB8IHNlZCAtZSAncywubGlieG1sLnhtbGV4cG9ydHNcLmgkLCwnYAorLSAgICAgICAgICAgIF0pCistICAgICAgICAgIGlmIHRlc3QgLXogIiRsaWJ4bWwyX2luY2x1ZGVfZGlyIjsgdGhlbgorLSAgICAgICAgICAgIEFDX1RSWV9DUFAoWyNpbmNsdWRlIDxsaWJ4bWwyL2xpYnhtbC94bWx2ZXJzaW9uLmg+XSwKKy0gICAgICAgICAgICAgIFtnbF9BQlNPTFVURV9IRUFERVIoW2xpYnhtbDIvbGlieG1sL3htbHZlcnNpb24uaF0pCistICAgICAgICAgICAgICAgbGlieG1sMl9pbmNsdWRlX2Rpcj1gZWNobyAiJGdsX2N2X2Fic29sdXRlX2xpYnhtbDJfbGlieG1sX3htbHZlcnNpb25faCIgfCBzZWQgLWUgJ3MsLmxpYnhtbC54bWx2ZXJzaW9uXC5oJCwsJ2AKKy0gICAgICAgICAgICAgIF0pCistICAgICAgICAgIGZpCistICAgICAgICAgIGlmIHRlc3QgLW4gIiRsaWJ4bWwyX2luY2x1ZGVfZGlyIiAmJiB0ZXN0IC1kICIkbGlieG1sMl9pbmNsdWRlX2RpciI7IHRoZW4KKy0gICAgICAgICAgICBDUFBGTEFHUz0iJGdsX3NhdmVfQ1BQRkxBR1MgLUkkbGlieG1sMl9pbmNsdWRlX2RpciIKKy0gICAgICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYnhtbC94bWx2ZXJzaW9uLmg+CistICAgICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxsaWJ4bWwveG1sbWVtb3J5Lmg+CistICAgICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxsaWJ4bWwveHBhdGguaD4KKy0gICAgICAgICAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgW3htbENoZWNrVmVyc2lvbiAoMCk7CistICAgICAgICAgICAgICAgeG1sRnJlZSAoKHZvaWQgKikgMCk7CistICAgICAgICAgICAgICAgeG1sWFBhdGhTZXRDb250ZXh0Tm9kZSAoKHZvaWQgKikwLCAodm9pZCAqKTApOworLSAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgIFtnbF9jdl9saWJ4bWw9eWVzCistICAgICAgICAgICAgICAgZ2xfY3ZfTElCWE1MPSIkTElCWE1MMiAkTElCSUNPTlYiCistICAgICAgICAgICAgICAgZ2xfY3ZfTFRMSUJYTUw9IiRMVExJQlhNTDIgJExUTElCSUNPTlYiCistICAgICAgICAgICAgICAgZ2xfY3ZfSU5DWE1MPSItSSRsaWJ4bWwyX2luY2x1ZGVfZGlyIgorLSAgICAgICAgICAgICAgXSkKKy0gICAgICAgICAgZmkKKy0gICAgICAgIGZpCistICAgICAgICBDUFBGTEFHUz0iJGdsX3NhdmVfQ1BQRkxBR1MiCistICAgICAgZmkKKy0gICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTIgorLSAgICBdKQorLSAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBsaWJ4bWxdKQorLSAgICBBQ19NU0dfUkVTVUxUKFskZ2xfY3ZfbGlieG1sXSkKKy0gICAgaWYgdGVzdCAkZ2xfY3ZfbGlieG1sID0geWVzOyB0aGVuCistICAgICAgTElCWE1MPSIkZ2xfY3ZfTElCWE1MIgorLSAgICAgIExUTElCWE1MPSIkZ2xfY3ZfTFRMSUJYTUwiCistICAgICAgSU5DWE1MPSIkZ2xfY3ZfSU5DWE1MIgorLSAgICBlbHNlCistICAgICAgZ2xfY3ZfbGlieG1sX3VzZV9pbmNsdWRlZD15ZXMKKy0gICAgZmkKKysgICAgUEtHX0NIRUNLX01PRFVMRVMoW1hNTF0sIFtsaWJ4bWwtMi4wXSkKKysgICAgTElCWE1MPSRYTUxfTElCUworKyAgICBMVExJQlhNTD0kWE1MX0xJQlMKKysgICAgSU5DWE1MPSRYTUxfQ0ZMQUdTCisgICBmaQorICAgQUNfU1VCU1QoW0xJQlhNTF0pCisgICBBQ19TVUJTVChbTFRMSUJYTUxdKQorZGlmZiAtLWdpdCBhL2dudWxpYi1sb2NhbC9saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5vby5jIGIvZ251bGliLWxvY2FsL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMKK2luZGV4IDgxYTQwNzQ2Ny4uMjE4NTY1MzI5IDEwMDY0NAorLS0tIGEvZ2V0dGV4dC10b29scy9nbnVsaWItbGliL3Rlcm0tc3R5bGVkLW9zdHJlYW0ub28uYworKysrIGIvZ2V0dGV4dC10b29scy9nbnVsaWItbGliL3Rlcm0tc3R5bGVkLW9zdHJlYW0ub28uYworQEAgLTI1LDQgKzI1LDQgQEAKKy0jaW5jbHVkZSA8Y3Itb20tcGFyc2VyLmg+CistI2luY2x1ZGUgPGNyLXNlbC1lbmcuaD4KKy0jaW5jbHVkZSA8Y3Itc3R5bGUuaD4KKy0jaW5jbHVkZSA8Y3ItcmdiLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLW9tLXBhcnNlci5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1zZWwtZW5nLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLXN0eWxlLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLXJnYi5oPgorQEAgLTMxICszMSBAQAorLSMgaW5jbHVkZSA8Y3ItZm9udHMuaD4KKysjIGluY2x1ZGUgPGxpYmNyb2NvL2NyLWZvbnRzLmg+CitAQCAtMzMgKzMzIEBACistI2luY2x1ZGUgPGNyLXN0cmluZy5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1zdHJpbmcuaD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHRfMC4xOS44LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0XzAuMTkuOC4xLmJiCmluZGV4IGMyMDU5ZTYuLjY4ZjVjYzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHRfMC4xOS44LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dF8wLjE5LjguMS5iYgpAQCAtOCw3ICs4LDcgQEAKIExJQ0VOU0UgPSAiR1BMdjMrICYgTEdQTC0yLjErIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCiAKLURFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUgdmlydHVhbC9saWJpY29udiBleHBhdCIKK0RFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUgdmlydHVhbC9saWJpY29udiIKIERFUEVORFNfY2xhc3MtbmF0aXZlID0gImdldHRleHQtbWluaW1hbC1uYXRpdmUiCiBQUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmludGwgdmlydHVhbC9nZXR0ZXh0IgogUFJPVklERVNfY2xhc3MtbmF0aXZlID0gInZpcnR1YWwvZ2V0dGV4dC1uYXRpdmUiCkBAIC0xNywxNCArMTcsMTMgQEAKIAkgICBmaWxlOi8vcGFyYWxsZWwucGF0Y2ggXAogCSAgIGZpbGU6Ly9hZGQtd2l0aC1iaXNvbmxvY2FsZWRpci5wYXRjaCBcCiAJICAgZmlsZTovL2NyLXN0YXRlbWVudC5jLXRpbXNvcnQuaC1maXgtZm9ybWF0dGluZy1pc3N1ZXMucGF0Y2ggXAorCSAgIGZpbGU6Ly91c2UtcGtnY29uZmlnLnBhdGNoIFwKICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjk3ZTAzNGNmOGNlNWJhNzNhMjhmZjZjM2MwNjM4MDkyIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImZmOTQyYWYwZTQzOGNlZDRhOGIwZWE0YjBiNmUwZDZkNjU3MTU3YzVlMjM2NGRlNTdiYWEyNzljMWMxMjVjNDMiCiAKLVBBQ0tBR0VDT05GSUdbbXNnY2F0LWN1cnNlc10gPSAiLS13aXRoLWxpYm5jdXJzZXMtcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9Ly4uLC0tZGlzYWJsZS1jdXJzZXMsbmN1cnNlcywiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gcGtnY29uZmlnCiAKIEVYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LWxpc3BkaXIgXAogICAgICAgICAgICAgICAgICAtLWRpc2FibGUtY3NoYXJwIFwKQEAgLTMzLDE4ICszMiwyNiBAQAogICAgICAgICAgICAgICAgICAtLWRpc2FibGUtbmF0aXZlLWphdmEgXAogICAgICAgICAgICAgICAgICAtLWRpc2FibGUtb3Blbm1wIFwKICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWFjbCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1pbmNsdWRlZC1nbGliIFwKICAgICAgICAgICAgICAgICAgLS13aXRob3V0LWVtYWNzIFwKICAgICAgICAgICAgICAgICAgLS13aXRob3V0LWN2cyBcCiAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1naXQgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtaW5jbHVkZWQtbGlieG1sIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWluY2x1ZGVkLWxpYmNyb2NvIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWluY2x1ZGVkLWxpYnVuaXN0cmluZyBcCiAgICAgICAgICAgICAgICAgIgogRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFwKICAgICAgICAgICAgICAgICAgLS13aXRoLWJpc29ubG9jYWxlZGlyPSR7ZGF0YWRpcn0vbG9jYWxlIFwKICIKIAorUEFDS0FHRUNPTkZJRyA/Pz0gImNyb2NvIGdsaWIgbGlieG1sIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiIgorCitQQUNLQUdFQ09ORklHW2Nyb2NvXSA9ICItLXdpdGhvdXQtaW5jbHVkZWQtbGliY3JvY28sLS13aXRoLWluY2x1ZGVkLWxpYmNyb2NvLGxpYmNyb2NvIgorUEFDS0FHRUNPTkZJR1tnbGliXSA9ICItLXdpdGhvdXQtaW5jbHVkZWQtZ2xpYiwtLXdpdGgtaW5jbHVkZWQtZ2xpYixnbGliLTIuMCIKK1BBQ0tBR0VDT05GSUdbbGlieG1sXSA9ICItLXdpdGhvdXQtaW5jbHVkZWQtbGlieG1sLC0td2l0aC1pbmNsdWRlZC1saWJ4bWwsbGlieG1sMiIKKyMgTmVlZCBwYXRocyBoZXJlIHRvIGF2b2lkIGhvc3QgY29udGFtaW5hdGlvbiBidXQgdGhpcyBjYW4gY2F1c2UgUlBBVEggd2FybmluZ3MKKyMgb3IgcHJvYmxlbXMgaWYgJGxpYmRpciBpc24ndCAkcHJlZml4L2xpYi4KK1BBQ0tBR0VDT05GSUdbbGlidW5pc3RyaW5nXSA9ICItLXdpdGgtbGlidW5pc3RyaW5nLXByZWZpeD0ke1NUQUdJTkdfTElCRElSfS8uLiwtLXdpdGgtaW5jbHVkZWQtbGlidW5pc3RyaW5nLGxpYnVuaXN0cmluZyIKK1BBQ0tBR0VDT05GSUdbbXNnY2F0LWN1cnNlc10gPSAiLS13aXRoLWxpYm5jdXJzZXMtcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9Ly4uLC0tZGlzYWJsZS1jdXJzZXMsbmN1cnNlcywiCisKIGFjcGF0aHMgPSAnLUkgJHtTfS9nZXR0ZXh0LXJ1bnRpbWUvbTQgXAogICAgICAgICAgICAtSSAke1N9L2dldHRleHQtdG9vbHMvbTQnCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDAxLVJlbW92ZS10aGUtd2FybmluZy1hYm91dC1kZXByZWNhdGVkLXBhdGhzLWluLXNjaGVtYXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAwMS1SZW1vdmUtdGhlLXdhcm5pbmctYWJvdXQtZGVwcmVjYXRlZC1wYXRocy1pbi1zY2hlbWFzLnBhdGNoCmluZGV4IDQxYTE5MGUuLjY3Y2E2MjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDAxLVJlbW92ZS10aGUtd2FybmluZy1hYm91dC1kZXByZWNhdGVkLXBhdGhzLWluLXNjaGVtYXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMDEtUmVtb3ZlLXRoZS13YXJuaW5nLWFib3V0LWRlcHJlY2F0ZWQtcGF0aHMtaW4tc2NoZW1hcy5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNDE1MzQyNTNiNmI2MWVkNDc2OWViNmEzOTY2Njk4YTUwZWU3M2I3MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMmFjZjQwMzYxZWVjZDE3YzY5ODE3NDNkYWJkMDZlMjVhOTkzNDI1OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogRnJpLCAxMiBKdW4gMjAxNSAxNzowODo0NiArMDMwMAotU3ViamVjdDogW1BBVENIXSBSZW1vdmUgdGhlIHdhcm5pbmcgYWJvdXQgZGVwcmVjYXRlZCBwYXRocyBpbiBzY2hlbWFzCitTdWJqZWN0OiBbUEFUQ0ggMDUvMTBdIFJlbW92ZSB0aGUgd2FybmluZyBhYm91dCBkZXByZWNhdGVkIHBhdGhzIGluIHNjaGVtYXMKIAogU29tZSBzY2hlbWFzIGluIGdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgKHN1Y2ggYXMgcHJveHkgYW5kIGxvY2FsZSkKIGFyZSBzdGlsbCB1c2luZyBkZXByZWNhdGVkIHBhdGhzLCBhcyBvZiAzLjE2LjEuIFRoaXMgY2F1c2VzIHdhcm5pbmcKQEAgLTExLDI2ICsxMSwzMyBAQAogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAKIC0tLQotIGdpby9nbGliLWNvbXBpbGUtc2NoZW1hcy5jIHwgNiAtLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBkZWxldGlvbnMoLSkKKyBnaW8vZ2xpYi1jb21waWxlLXNjaGVtYXMuYyB8IDEzIC0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9naW8vZ2xpYi1jb21waWxlLXNjaGVtYXMuYyBiL2dpby9nbGliLWNvbXBpbGUtc2NoZW1hcy5jCi1pbmRleCBlNDI5NDliLi5lYzc5ZDdjIDEwMDY0NAoraW5kZXggYjhkZTA5MC4uMTMwZjg5YiAxMDA2NDQKIC0tLSBhL2dpby9nbGliLWNvbXBpbGUtc2NoZW1hcy5jCiArKysgYi9naW8vZ2xpYi1jb21waWxlLXNjaGVtYXMuYwotQEAgLTEyMDIsMTIgKzEyMDIsNiBAQCBwYXJzZV9zdGF0ZV9zdGFydF9zY2hlbWEgKFBhcnNlU3RhdGUgICpzdGF0ZSwKK0BAIC0xMjE5LDE5ICsxMjE5LDYgQEAgcGFyc2Vfc3RhdGVfc3RhcnRfc2NoZW1hIChQYXJzZVN0YXRlICAqc3RhdGUsCiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgCiAtICBpZiAocGF0aCAmJiAoZ19zdHJfaGFzX3ByZWZpeCAocGF0aCwgIi9hcHBzLyIpIHx8CiAtICAgICAgICAgICAgICAgZ19zdHJfaGFzX3ByZWZpeCAocGF0aCwgIi9kZXNrdG9wLyIpIHx8CiAtICAgICAgICAgICAgICAgZ19zdHJfaGFzX3ByZWZpeCAocGF0aCwgIi9zeXN0ZW0vIikpKQotLSAgICBnX3ByaW50ZXJyICgid2FybmluZzogU2NoZW1hICclcycgaGFzIHBhdGggJyVzJy4gIFBhdGhzIHN0YXJ0aW5nIHdpdGggIgotLSAgICAgICAgICAgICAgICAiJy9hcHBzLycsICcvZGVza3RvcC8nIG9yICcvc3lzdGVtLycgYXJlIGRlcHJlY2F0ZWQuXG4iLCBpZCwgcGF0aCk7CistICAgIHsKKy0gICAgICBnY2hhciAqbWVzc2FnZSA9IE5VTEw7CistICAgICAgbWVzc2FnZSA9IGdfc3RyZHVwX3ByaW50ZiAoXygiV2FybmluZzogU2NoZW1hIOKAnCVz4oCdIGhhcyBwYXRoIOKAnCVz4oCdLiAgIgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhdGhzIHN0YXJ0aW5nIHdpdGggIgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIuKAnC9hcHBzL+KAnSwg4oCcL2Rlc2t0b3Av4oCdIG9yIOKAnC9zeXN0ZW0v4oCdIGFyZSBkZXByZWNhdGVkLiIpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkLCBwYXRoKTsKKy0gICAgICBnX3ByaW50ZXJyICgiJXNcbiIsIG1lc3NhZ2UpOworLSAgICAgIGdfZnJlZSAobWVzc2FnZSk7CistICAgIH0KIC0KICAgIHN0YXRlLT5zY2hlbWFfc3RhdGUgPSBzY2hlbWFfc3RhdGVfbmV3IChwYXRoLCBnZXR0ZXh0X2RvbWFpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbmRzLCBleHRlbmRzX25hbWUsIGxpc3Rfb2YpOwogIAogLS0gCi0yLjEuNAorMi4xNC4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDEwLURvLW5vdC1oYXJkY29kZS1weXRob24tcGF0aC1pbnRvLXZhcmlvdXMtdG9vbHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAxMC1Eby1ub3QtaGFyZGNvZGUtcHl0aG9uLXBhdGgtaW50by12YXJpb3VzLXRvb2xzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5N2Q2M2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAxMC1Eby1ub3QtaGFyZGNvZGUtcHl0aG9uLXBhdGgtaW50by12YXJpb3VzLXRvb2xzLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gYjkxNjBkOTUxYjlhZjY0N2I5Nzc2NmM1NzI5NWNhNGY0NWNmOTUyMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVHVlLCAzIE9jdCAyMDE3IDEwOjQ1OjU1ICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMTAvMTBdIERvIG5vdCBoYXJkY29kZSBweXRob24gcGF0aCBpbnRvIHZhcmlvdXMgdG9vbHMKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBnaW8vZ2RidXMtMi4wL2NvZGVnZW4vZ2RidXMtY29kZWdlbi5pbiB8IDIgKy0KKyBnb2JqZWN0L2dsaWItZ2VubWFyc2hhbC5pbiAgICAgICAgICAgICB8IDIgKy0KKyBnb2JqZWN0L2dsaWItbWtlbnVtcy5pbiAgICAgICAgICAgICAgICB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dpby9nZGJ1cy0yLjAvY29kZWdlbi9nZGJ1cy1jb2RlZ2VuLmluIGIvZ2lvL2dkYnVzLTIuMC9jb2RlZ2VuL2dkYnVzLWNvZGVnZW4uaW4KK2luZGV4IDgwNTA5ODEuLmU2OTNlZjMgMTAwNjQ0CistLS0gYS9naW8vZ2RidXMtMi4wL2NvZGVnZW4vZ2RidXMtY29kZWdlbi5pbgorKysrIGIvZ2lvL2dkYnVzLTIuMC9jb2RlZ2VuL2dkYnVzLWNvZGVnZW4uaW4KK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IEBQWVRIT05ACisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIAorICMgR0RCdXMgLSBHTGliIEQtQnVzIExpYnJhcnkKKyAjCitkaWZmIC0tZ2l0IGEvZ29iamVjdC9nbGliLWdlbm1hcnNoYWwuaW4gYi9nb2JqZWN0L2dsaWItZ2VubWFyc2hhbC5pbgoraW5kZXggMDllODQwOC4uYjJmOWQ5OSAxMDA3NTUKKy0tLSBhL2dvYmplY3QvZ2xpYi1nZW5tYXJzaGFsLmluCisrKysgYi9nb2JqZWN0L2dsaWItZ2VubWFyc2hhbC5pbgorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgQFBZVEhPTkAKKysjIS91c3IvYmluL2VudiBweXRob24zCisgCisgIyBweWxpbnQ6IGRpc2FibGU9dG9vLW1hbnktbGluZXMsIG1pc3NpbmctZG9jc3RyaW5nLCBpbnZhbGlkLW5hbWUKKyAKK2RpZmYgLS1naXQgYS9nb2JqZWN0L2dsaWItbWtlbnVtcy5pbiBiL2dvYmplY3QvZ2xpYi1ta2VudW1zLmluCitpbmRleCBkNGJmZDExLi4wNTFmY2U0IDEwMDc1NQorLS0tIGEvZ29iamVjdC9nbGliLW1rZW51bXMuaW4KKysrKyBiL2dvYmplY3QvZ2xpYi1ta2VudW1zLmluCitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBAUFlUSE9OQAorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAKKyAjIElmIHRoZSBjb2RlIGJlbG93IGxvb2tzIGhvcnJpYmxlIGFuZCB1bnB5dGhvbmljLCBkbyBub3QgcGFuaWMuCisgIworLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL0VuYWJsZS1tb3JlLXRlc3RzLXdoaWxlLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9FbmFibGUtbW9yZS10ZXN0cy13aGlsZS1jcm9zcy1jb21waWxpbmcucGF0Y2gKaW5kZXggOWI0ZGVkMS4uYjk4ZjkzMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL0VuYWJsZS1tb3JlLXRlc3RzLXdoaWxlLWNyb3NzLWNvbXBpbGluZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvRW5hYmxlLW1vcmUtdGVzdHMtd2hpbGUtY3Jvc3MtY29tcGlsaW5nLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAzMTBkZmUxYmRkMTZkNGIyNTQ3MzJmY2MyMDJjNjIxMTYyOWJjN2I2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkNzYyOTA3ZDMzYjgxY2Y3NDY5YjU2OTZjODdmMjE4OGQyMDUwYWZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIERhdGU6IE1vbiwgOSBOb3YgMjAxNSAxMTowNzoyNyArMDIwMAotU3ViamVjdDogW1BBVENIXSBFbmFibGUgbW9yZSB0ZXN0cyB3aGlsZSBjcm9zcy1jb21waWxpbmcKK1N1YmplY3Q6IFtQQVRDSCAwNi8xMF0gRW5hYmxlIG1vcmUgdGVzdHMgd2hpbGUgY3Jvc3MtY29tcGlsaW5nCiAKIFVwc3RyZWFtIGRpc2FibGVzIGEgZmV3IHRlc3RzIHdoaWxlIGNyb3NzLWNvbXBpbGluZyBiZWNhdXNlIHRoZWlyIGJ1aWxkIHJlcXVpcmVzCiBydW5uaW5nIG90aGVyIGJ1aWx0IGJpbmFyaWVzLiBUaGlzIHVzdWFsbHkgbWFrZXMgc2Vuc2UgYnV0IGluIHRoZSBjcm9zcy1jb21waWxlCkBAIC05LDE2ICs5LDE3IEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCiBTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorCiAtLS0KLSBnaW8vdGVzdHMvTWFrZWZpbGUuYW0gICAgIHwgOCArKystLS0tLQotIHRlc3RzL2dvYmplY3QvTWFrZWZpbGUuYW0gfCA4ICsrKy0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQorIGdpby90ZXN0cy9NYWtlZmlsZS5hbSAgICAgfCAxMCArKysrKystLS0tCisgdGVzdHMvZ29iamVjdC9NYWtlZmlsZS5hbSB8ICA4ICsrKysrLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZ2lvL3Rlc3RzL01ha2VmaWxlLmFtIGIvZ2lvL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCA4Njg4NzNmLi41MzNlNDU0IDEwMDY0NAoraW5kZXggYWNjMWRhNC4uOTE3NjY0MCAxMDA2NDQKIC0tLSBhL2dpby90ZXN0cy9NYWtlZmlsZS5hbQogKysrIGIvZ2lvL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtNTAzLDEwICs1MDMsOSBAQCB0ZXN0X3Byb2dyYW1zICs9IFwKK0BAIC01MTYsMTAgKzUxNiw5IEBAIHRlc3RfcHJvZ3JhbXMgKz0gXAogIGVuZGlmCiAgCiAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzEsNyArMzIsNyBAQAogIHRlc3RfcHJvZ3JhbXMgKz0gcmVzb3VyY2VzCiAgcmVzb3VyY2VzX1NPVVJDRVMgPSByZXNvdXJjZXMuYwogIG5vZGlzdF9yZXNvdXJjZXNfU09VUkNFUyA9IHRlc3RfcmVzb3VyY2VzLmMgdGVzdF9yZXNvdXJjZXMyLmMgdGVzdF9yZXNvdXJjZXMyLmgKLUBAIC01MjgsNyArNTI3LDExIEBAIGlmICFFTkFCTEVfSU5TVEFMTEVEX1RFU1RTCitAQCAtNTQzLDcgKzU0MiwxMSBAQCBpZiAhRU5BQkxFX0lOU1RBTExFRF9URVNUUwogIGxpYnJlc291cmNlcGx1Z2luX2xhX0xERkxBR1MgKz0gLXJwYXRoIC8KICBlbmRpZgogIApAQCAtNDEsMTggKzQyLDE4IEBACiArZ2xpYl9jb21waWxlX3Jlc291cmNlcz1nbGliLWNvbXBpbGUtcmVzb3VyY2VzCiArZW5kaWYKICAKLSByZXNvdXJjZXMubzogdGVzdF9yZXNvdXJjZXMyLmgKLSB0ZXN0X3Jlc291cmNlcy5jOiB0ZXN0Mi5ncmVzb3VyY2UueG1sIE1ha2VmaWxlICQoc2hlbGwgJChnbGliX2NvbXBpbGVfcmVzb3VyY2VzKSAtLXNvdXJjZWRpcj0kKHNyY2RpcikgLS1nZW5lcmF0ZS1kZXBlbmRlbmNpZXMgJChzcmNkaXIpL3Rlc3QyLmdyZXNvdXJjZS54bWwpCi1AQCAtNTQ1LDcgKzU0OCw2IEBAIHRlc3QuZ3Jlc291cmNlOiB0ZXN0LmdyZXNvdXJjZS54bWwgTWFrZWZpbGUgJChzaGVsbCAkKGdsaWJfY29tcGlsZV9yZXNvdXJjZXMpIC0tCisgdGVzdC1nZW5lcmF0ZWQudHh0OiB0ZXN0MS50eHQKKyAJJChBTV9WX0dFTikgZWNobyAiR2VuZXJhdGVkIiA+ICRAICYmIFwKK0BAIC01NjQsNyArNTY3LDYgQEAgdGVzdC5ncmVzb3VyY2U6IHRlc3QuZ3Jlc291cmNlLnhtbCBNYWtlZmlsZSAkKHNoZWxsICQoZ2xpYl9jb21waWxlX3Jlc291cmNlcykgLS0KICAKICBFWFRSQV9ESVNUICs9IHRlc3QuZ3Jlc291cmNlLnhtbCB0ZXN0MS50eHQgdGVzdDIuZ3Jlc291cmNlLnhtbCB0ZXN0Mi50eHQgdGVzdDMuZ3Jlc291cmNlLnhtbCB0ZXN0My50eHQgdGVzdDQuZ3Jlc291cmNlLnhtbAogIENMRUFORklMRVMgKz0gdGVzdC1nZW5lcmF0ZWQudHh0IHRlc3RfcmVzb3VyY2VzLmMgdGVzdF9yZXNvdXJjZXMyLltjaF0gcGx1Z2luX3Jlc291cmNlcy5jIHRlc3QuZ3Jlc291cmNlCiAtZW5kaWYgIyAhQ1JPU1NfQ09NUElMSU5HCiAgCi0gQlVJTFRfU09VUkNFUyArPSBnaW90eXBlZnVuY3MuYworIEJVSUxUX1NPVVJDRVMgKz0gZ2lvdHlwZWZ1bmNzLmluYwogIAogZGlmZiAtLWdpdCBhL3Rlc3RzL2dvYmplY3QvTWFrZWZpbGUuYW0gYi90ZXN0cy9nb2JqZWN0L01ha2VmaWxlLmFtCi1pbmRleCAxNmYyODI3Li40YzIyMDhlIDEwMDY0NAoraW5kZXggNjU2OTQxZC4uNjg1NTVmZiAxMDA2NDQKIC0tLSBhL3Rlc3RzL2dvYmplY3QvTWFrZWZpbGUuYW0KICsrKyBiL3Rlc3RzL2dvYmplY3QvTWFrZWZpbGUuYW0KIEBAIC00OCwxMCArNDgsMTMgQEAgaWYgRU5BQkxFX1RJTUVMT09QCkBAIC03OSwzICs4MCw2IEBACiAgCiAgZGlzdC1ob29rOiAkKEJVSUxUX0VYVFJBX0RJU1QpCiAgCWZpbGVzPSckKEJVSUxUX0VYVFJBX0RJU1QpJzsJCQkJXAorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL2NvbmZpZ3VyZS1saWJ0b29sLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL2NvbmZpZ3VyZS1saWJ0b29sLnBhdGNoCmluZGV4IGFhNWRlMjcuLjU5Yjg5MTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9jb25maWd1cmUtbGlidG9vbC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvY29uZmlndXJlLWxpYnRvb2wucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGU4NzQwODMzMzM2YzU5ZDZmNjE2YTE3ODFiMjU2ZTY0OGUzMzhjMjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDFkZDFlNmRkY2E1ZGVhZGEwNDliYWMyZTFlZTFmZTRlY2M1MzQyYzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CiBEYXRlOiBTYXQsIDI4IEFwciAyMDEyIDE4OjI0OjUwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogdXNlICRob3N0X2FsaWFzLWxpYnRvb2wgaW5zdGVhZCBvZiBsaWJ0b29sCitTdWJqZWN0OiBbUEFUQ0ggMDEvMTBdIGNvbmZpZ3VyZTogdXNlICRob3N0X2FsaWFzLWxpYnRvb2wgaW5zdGVhZCBvZiBsaWJ0b29sCiAgZGlyZWN0bHkKIAogUG9reSByZW5hbWVzIGxpYnRvb2wgdG8gJGhvc3RfYWxpYXMtbGlidG9vbC4KQEAgLTE4LDI0ICsxOCwxNiBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQogCiBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CisKIC0tLQotIGNvbmZpZ3VyZS5hYyB8IDEwICsrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorIGNvbmZpZ3VyZS5hYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDFhZjkwYzUuLmY2YjdhNzMgMTAwNjQ0CitpbmRleCA2ZmE2ZWIwLi5iNmY3OGE2IDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMzc4LDcgKzEzNzgsNyBAQCBpZiB0ZXN0IHgiJGdsaWJfbmF0aXZlX3dpbjMyIiA9IHh5ZXM7IHRoZW4KLSAgIEdfTU9EVUxFX0xERkxBR1M9Ci0gZWxzZQotICAgZXhwb3J0IFNFRAotLSAgR19NT0RVTEVfTERGTEFHUz1gKC4vbGlidG9vbCAtLWNvbmZpZzsgZWNobyBldmFsIGVjaG8gXFwkZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjKSB8IHNoYAotKyAgR19NT0RVTEVfTERGTEFHUz1gKC4vJGhvc3RfYWxpYXMtbGlidG9vbCAtLWNvbmZpZzsgZWNobyBldmFsIGVjaG8gXFwkZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjKSB8IHNoYAotIGZpCi0gZG5sIEdfTU9EVUxFX0lNUEw9IGRvbid0IHJlc2V0LCBzbyBjbWQtbGluZSBjYW4gb3ZlcnJpZGUKLSBHX01PRFVMRV9ORUVEX1VTQ09SRT0wCi1AQCAtMTQyNywxMyArMTQyNywxMyBAQCBBU19JRihbIHRlc3QgIiRHX01PRFVMRV9JTVBMIiA9ICJHX01PRFVMRV9JTVBMX0RMIiBdLCBbCitAQCAtMTQyOCw5ICsxNDI4LDkgQEAgQVNfSUYoWyB0ZXN0ICIkR19NT0RVTEVfSU1QTCIgPSAiR19NT0RVTEVfSU1QTF9ETCIgXSwgWwogIAlMREZMQUdTPSIkTERGTEFHUyAkR19NT0RVTEVfTERGTEFHUyIKICBkbmwgKioqIGNoZWNrIGZvciBPU0YxLzUuMCBSVExEX0dMT0JBTCBicm9rZW5uZXNzCiAgCWVjaG8gInZvaWQgZ2xpYl9wbHVnaW5fdGVzdCh2b2lkKSB7IH0iID4gcGx1Z2luLmMKQEAgLTQ3LDIwICszOSw2IEBACiAgCQkke0xERkxBR1N9IC1tb2R1bGUgLW8gcGx1Z2luLmxhIC1leHBvcnQtZHluYW1pYyBcCiAgCQktc2hyZXh0ICIubyIgLWF2b2lkLXZlcnNpb24gcGx1Z2luLmxvIFwKICAJCS1ycGF0aCAvZG9udC9jYXJlID4vZGV2L251bGwgMj4mMQotLQlldmFsIGAuL2xpYnRvb2wgLS1jb25maWcgfCBncmVwIF5vYmpkaXJgCi0rCWV2YWwgYC4vJGhvc3RfYWxpYXMtbGlidG9vbCAtLWNvbmZpZyB8IGdyZXAgXm9iamRpcmAKLSAJQUNfQ0FDSEVfQ0hFQ0soW2ZvciBSVExEX0dMT0JBTCBicm9rZW5uZXNzXSwKLSAJCWdsaWJfY3ZfcnRsZGdsb2JhbF9icm9rZW4sWwotIAkJQUNfVFJZX1JVTihbCi1AQCAtMTUwNiw3ICsxNTA2LDcgQEAgZmkKLSAKLSBBQ19NU0dfQ0hFQ0tJTkcoZm9yIHRoZSBzdWZmaXggb2YgbW9kdWxlIHNoYXJlZCBsaWJyYXJpZXMpCi0gZXhwb3J0IFNFRAotLXNocmV4dF9jbWRzPWAuL2xpYnRvb2wgLS1jb25maWcgfCBncmVwICdec2hyZXh0X2NtZHM9J2AKLStzaHJleHRfY21kcz1gLi8kaG9zdF9hbGlhcy1saWJ0b29sIC0tY29uZmlnIHwgZ3JlcCAnXnNocmV4dF9jbWRzPSdgCi0gZXZhbCAkc2hyZXh0X2NtZHMKLSBtb2R1bGU9eWVzIGV2YWwgc3RkX3NocmV4dD0kc2hyZXh0X2NtZHMKLSAjIGNob3AgdGhlIGluaXRpYWwgZG90CiAtLSAKLTEuOS4xCisyLjE0LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wXzIuNTIuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjUyLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxZmU2MDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wXzIuNTIuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLXJlcXVpcmUgZ2xpYi5pbmMKLQotUEUgPSAiMSIKLQotU0hSVF9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vZ2xpYi8ke1NIUlRfVkVSfS9nbGliLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtbGlidG9vbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vcHRlc3QtcGF0aHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdWNsaWJjX211c2xfdHJhbnNsYXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWxsb3ctcnVuLW1lZGlhLXNkWC1kcml2ZS1tb3VudC1pZi11c2VybmFtZS1yb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLXRoZS13YXJuaW5nLWFib3V0LWRlcHJlY2F0ZWQtcGF0aHMtaW4tc2NoZW1hcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9FbmFibGUtbW9yZS10ZXN0cy13aGlsZS1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1JbnN0YWxsLWdpby1xdWVyeW1vZHVsZXMtYXMtbGliZXhlY19QUk9HUkFNLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWlnbm9yZS1yZXR1cm4tdmFsdWUtb2Ytd3JpdGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1UZXN0LWZvci1wdGhyZWFkX2dldG5hbWVfbnAtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9yZWxvY2F0ZS1tb2R1bGVzLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODkyNjVkMDI4OWE0MzZlOTljYWQ1NDQ5MWViMjFlZjQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjVlZTc2MzVhN2MwZmNkNGVjOTFjYmMzYWUwN2M3ZjhmNWNlNjIxZDgxODM1MTFmNDE0ZGVkMDllN2U0ZTEyOCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjU0LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjBfMi41NC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhZjU5NDUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjBfMi41NC4zLmJiCkBAIC0wLDAgKzEsMjQgQEAKK3JlcXVpcmUgZ2xpYi5pbmMKKworUEUgPSAiMSIKKworU0hSVF9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vZ2xpYi8ke1NIUlRfVkVSfS9nbGliLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtbGlidG9vbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vcHRlc3QtcGF0aHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdWNsaWJjX211c2xfdHJhbnNsYXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYWxsb3ctcnVuLW1lZGlhLXNkWC1kcml2ZS1tb3VudC1pZi11c2VybmFtZS1yb290LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLXRoZS13YXJuaW5nLWFib3V0LWRlcHJlY2F0ZWQtcGF0aHMtaW4tc2NoZW1hcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9FbmFibGUtbW9yZS10ZXN0cy13aGlsZS1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1JbnN0YWxsLWdpby1xdWVyeW1vZHVsZXMtYXMtbGliZXhlY19QUk9HUkFNLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWlnbm9yZS1yZXR1cm4tdmFsdWUtb2Ytd3JpdGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1UZXN0LWZvci1wdGhyZWFkX2dldG5hbWVfbnAtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTAtRG8tbm90LWhhcmRjb2RlLXB5dGhvbi1wYXRoLWludG8tdmFyaW91cy10b29scy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vcmVsb2NhdGUtbW9kdWxlcy5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjE2ZTg4NmFkNjc3YmYwN2I3ZDQ4ZWI4MTg4YmNmNzU5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk2M2ZkYzY2ODVkYzNkYThlNTM4MWRmYjlmMTVjYTRiNTcwOWIyOGJlODRkOWQwNWE5YmI4ZTQ0NmFiYWMwYTgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi5pbmMKaW5kZXggNGNkZjE0MS4uZjY0NWVkNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLmluYwpAQCAtMywxMiArMywxMiBAQAogSE9NRVBBR0UgPSAiaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvIgogCiAjIHBjcmUgaXMgdW5kZXIgQlNEOwotIyBkb2NzL3JlZmVyZW5jZS9DT1BZSU5HIGlzIHdpdGggYSAncHVibGljIGRvbWFpJy1saWtlIGxpY2Vuc2UhCi1MSUNFTlNFID0gIkxHUEx2MisgJiBCU0QgJiBQRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dsaWIvZ2xpYi5oO2JlZ2lubGluZT00O2VuZGxpbmU9MTc7bWQ1PWI0ZjBmNGEzOTljMTllNWViYjIwYzMxYjc5ZDZiYzMyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dtb2R1bGUvQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ21vZHVsZS9nbW9kdWxlLmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNzttZDU9YjRmMGY0YTM5OWMxOWU1ZWJiMjBjMzFiNzlkNmJjMzIgXAorIyBkb2NzL3JlZmVyZW5jZS9DT1BZSU5HIGlzIHdpdGggYSAncHVibGljIGRvbWFpbictbGlrZSBsaWNlbnNlIQorTElDRU5TRSA9ICJMR1BMdjIuMSsgJiBCU0QgJiBQRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dsaWIvZ2xpYi5oO2JlZ2lubGluZT00O2VuZGxpbmU9MTc7bWQ1PWI4OGFiYjdmM2FkMDk2MDdlNzFjYjlkNTMwMTU1OTA2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dtb2R1bGUvQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ21vZHVsZS9nbW9kdWxlLmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNzttZDU9Yjg4YWJiN2YzYWQwOTYwN2U3MWNiOWQ1MzAxNTU5MDYgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2xpYi9wY3JlL0NPUFlJTkc7bWQ1PTI2NmViYzNmZjc0ZWU5Y2U2ZmFkNjU1Nzc2NjdjMGY0IFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dsaWIvcGNyZS9wY3JlLmg7YmVnaW5saW5lPTExO2VuZGxpbmU9MzU7bWQ1PWRlMjdmMmJmNjMzZDIwYTJiN2FmMGIxOTgzNDIzMjgzIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvcmVmZXJlbmNlL0NPUFlJTkc7bWQ1PWY1MWE1MTAwYzE3YWY2YmFlMDA3MzVjZDc5MWUxZmNjIgpAQCAtMTksMTYgKzE5LDE4IEBACiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIAotREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYmljb252IGxpYmZmaSB6bGliIGdsaWItMi4wLW5hdGl2ZSIKLURFUEVORFNfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJyBkYnVzJywgJycsIGQpfSIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gInBrZ2NvbmZpZy1uYXRpdmUgZ2V0dGV4dC1uYXRpdmUgbGliZmZpLW5hdGl2ZSB6bGliLW5hdGl2ZSIKLURFUEVORFNfY2xhc3MtbmF0aXZlc2RrID0gIm5hdGl2ZXNkay1saWJ0b29sIG5hdGl2ZXNkay1nZXR0ZXh0IG5hdGl2ZXNkay1saWJmZmkgbmF0aXZlc2RrLXpsaWIgZ2xpYi0yLjAtbmF0aXZlIgorREVQRU5EUyA9ICJnbGliLTIuMC1uYXRpdmUgXAorICAgICAgICAgICB2aXJ0dWFsL2xpYmludGwgXAorICAgICAgICAgICB2aXJ0dWFsL2xpYmljb252IFwKKyAgICAgICAgICAgbGliZmZpIFwKKyAgICAgICAgICAgemxpYiBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAnZGJ1cycsICcnLCBkKX0iCiAKIFBBQ0tBR0VTICs9ICIke1BOfS1jb2RlZ2VuICR7UE59LXV0aWxzIgogCiBMRUFEX1NPTkFNRSA9ICJsaWJnbGliLTIuMC4qIgogCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IGd0ay1kb2MgcGtnY29uZmlnIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBiYXNoLWNvbXBsZXRpb24gZ2lvLW1vZHVsZS1jYWNoZSBweXRob24zbmF0aXZlIG1hbnBhZ2VzCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IGd0ay1kb2MgcGtnY29uZmlnIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBiYXNoLWNvbXBsZXRpb24gZ2lvLW1vZHVsZS1jYWNoZSBtYW5wYWdlcwogCiBTID0gIiR7V09SS0RJUn0vZ2xpYi0ke1BWfSIKIApAQCAtNDcsNyArNDksNyBAQAogRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICIke0NPUkVDT05GfSAtLWRpc2FibGUtc2VsaW51eCIKIAogIyBUZWxsIGNvbmZpZ3VyZSB0aGF0IHdlJ2xsIGhhdmUgZGJ1cy1kYWVtb24gb24gdGhlIHRhcmdldCBmb3IgdGhlIHRlc3RzCi1FWFRSQV9PRUNPTkZfY2xhc3MtdGFyZ2V0X2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICcgYWNfY3ZfcHJvZ19EQlVTX0RBRU1PTj1kYnVzLWRhZW1vbicsICcnLCBkKX0iCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICcgYWNfY3ZfcHJvZ19EQlVTX0RBRU1PTj1kYnVzLWRhZW1vbicsICcnLCBkKX0iCiAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewogCXNlZCAtaSAtZSAnMXMsIyEuKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsJyAke1N9L2dpby9nZGJ1cy0yLjAvY29kZWdlbi9nZGJ1cy1jb2RlZ2VuLmluCkBAIC04Myw3ICs4NSwxNCBAQAogIyBkb2Vzbid0IHN1cHBvcnQgbWlwczE2ZQogQ1BQRkxBR1NfYXBwZW5kX2NsYXNzLXRhcmdldF9taXBzMTZlID0gIiAtRE5WQUxHUklORD0xIgogCi1VU0VfTkxTID0gInllcyIKKyMgR0xpYiBnZW5lcmFsbHkgcmVxdWlyZXMgZ2V0dGV4dCB0byBiZSBwcmVzZW50IHNvIGZvciBVU0VfTkxTIHRvIHllcy4gIEZvcgorIyBuYXRpdmUgYnVpbGRzIGFzIGkxOG4gaXMgZGlzYWJsZWQgZ2xvYmFsbHkgd2UgY2FuIHRlbGwgaXQgdG8gdXNlIGEgZmFrZSBtc2dmbXQuCitVU0VfTkxTX2NsYXNzLXRhcmdldCA9ICJ5ZXMiCitVU0VfTkxTX2NsYXNzLW5hdGl2ZXNkayA9ICJ5ZXMiCitDQUNIRURfQ09ORklHVVJFVkFSU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBhY19jdl9wYXRoX01TR0ZNVD0vYmluL2ZhbHNlIgorCitFWEVFWFQgPSAiIgorRVhFRVhUX21pbmd3MzIgPSAiLmV4ZSIKIAogZG9faW5zdGFsbF9hcHBlbmQgKCkgewogCWlmIFsgLWYgJHtEfSR7YmluZGlyfS9ndGVzdGVyLXJlcG9ydCBdOyB0aGVuCkBAIC05NSwxNSArMTA0LDE0IEBACiAJcm0gLWYgJHtEfSR7ZGF0YWRpcn0vZ2xpYi0yLjAvY29kZWdlbi8qLnB5YwogCXJtIC1mICR7RH0ke2RhdGFkaXJ9L2dsaWItMi4wL2NvZGVnZW4vKi5weW8KIAotCSMgU29tZSBkaXN0cm9zIGhhdmUgYm90aCAvYmluL3BlcmwgYW5kIC91c3IvYmluL3BlcmwsIGJ1dCB3ZSBzZXQgcGVybCBsb2NhdGlvbgotCSMgZm9yIHRhcmdldCBhcyAvdXNyL2Jpbi9wZXJsLCBzbyBmaXggaXQgdG8gL3Vzci9iaW4vcGVybC4KLQlpZiBbIC1mICR7RH0ke2JpbmRpcn0vZ2xpYi1ta2VudW1zIF07IHRoZW4KLQkJc2VkIC1pIC1lICcxcywjIS4qcGVybCwjISAke1VTUkJJTlBBVEh9L2VudiBwZXJsLCcgJHtEfSR7YmluZGlyfS9nbGliLW1rZW51bXMKLQlmaQotCiAJaWYgWyAtZSAke0R9JHtsaWJkaXJ9L2NoYXJzZXQuYWxpYXMgXTsgdGhlbgogCQlybSAtZiAke0R9JHtsaWJkaXJ9L2NoYXJzZXQuYWxpYXMKIAlmaQorCisgICAgICAgICMgTWFrZSBzdXJlIGdpby1xdWVyeW1vZHVsZXMgaXMgdW5pcXVlIGFtb25nIG11bHRpbGlicworICAgICAgICBpZiB0ZXN0ICJ4JHtNTFBSRUZJWH0iICE9ICJ4IjsgdGhlbgorICAgICAgICAgICAgICAgIG12ICR7RH0ke2xpYmV4ZWNkaXJ9L2dpby1xdWVyeW1vZHVsZXMke0VYRUVYVH0gJHtEfSR7bGliZXhlY2Rpcn0vJHtNTFBSRUZJWH1naW8tcXVlcnltb2R1bGVzJHtFWEVFWFR9CisgICAgICAgIGZpCiB9CiAKIGRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7CkBAIC0xMTQsMTggKzEyMiwxMiBAQAogCQkJcm0gJHtEfSR7ZGF0YWRpcn0vaW5zdGFsbGVkLXRlc3RzL2dsaWIvZ2RidXMtc2VyaWFsaXphdGlvbi50ZXN0CiAJCWZpCiAJZmkKLQotCSMgTWFrZSBzdXJlIGdpby1xdWVyeW1vZHVsZXMgaXMgdW5pcXVlIGFtb25nIG11bHRpbGlicwotCWlmIHRlc3QgIngke01MUFJFRklYfSIgIT0gIngiOyB0aGVuCi0JCW12ICR7RH0ke2xpYmV4ZWNkaXJ9L2dpby1xdWVyeW1vZHVsZXMgJHtEfSR7bGliZXhlY2Rpcn0vJHtNTFBSRUZJWH1naW8tcXVlcnltb2R1bGVzCi0JZmkKIH0KIAotUkRFUEVORFNfJHtQTn0tY29kZWdlbiArPSAiXAotICAgICAgICAgICAgcHl0aG9uMyBcCi0gICAgICAgICAgICBweXRob24zLWRpc3R1dGlscyBcCi0gICAgICAgICAgICBweXRob24zLXhtbCBcCi0gICAgICAgICAgICIKK0NPREVHRU5fUFlUSE9OX1JERVBFTkRTID0gInB5dGhvbjMgcHl0aG9uMy1kaXN0dXRpbHMgcHl0aG9uMy14bWwiCitDT0RFR0VOX1BZVEhPTl9SREVQRU5EU19taW5ndzMyID0gIiIKKworUkRFUEVORFNfJHtQTn0tY29kZWdlbiArPSAiJHtDT0RFR0VOX1BZVEhPTl9SREVQRU5EU30iCiAKIFJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJcCiAgICAgICAgICAgICBkYnVzIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLW5ldHdvcmtpbmcvZ2xpYi1uZXR3b3JraW5nXzIuNTAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLW5ldHdvcmtpbmcvZ2xpYi1uZXR3b3JraW5nXzIuNTAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc4MmJkOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi1uZXR3b3JraW5nL2dsaWItbmV0d29ya2luZ18yLjUwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1TVU1NQVJZID0gIkdMaWIgbmV0d29ya2luZyBleHRlbnNpb25zIgotREVTQ1JJUFRJT04gPSAiZ2xpYi1uZXR3b3JraW5nIGNvbnRhaW5zIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgY2VydGFpbiBHTGliIG5ldHdvcmtpbmcgZmVhdHVyZXMgdGhhdCBjYW5ub3QgYmUgaW1wbGVtZW50ZWQgZGlyZWN0bHkgaW4gR0xpYiBpdHNlbGYgYmVjYXVzZSBvZiB0aGVpciBkZXBlbmRlbmNpZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2dpdC5nbm9tZS5vcmcvYnJvd3NlL2dsaWItbmV0d29ya2luZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmciCi0KLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCi0KLVNFQ1RJT04gPSAibGlicyIKLURFUEVORFMgPSAiZ2xpYi0yLjAiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjRkMDZkMDIyNDY0NmYyNzQ5MThiMWNiNmRhOWEwN2Y2IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiM2YxYTQ0MmYzYzJhNzM0OTQ2OTgzNTMyY2U1OWVkNDkxMjAzMTlmZGIxMGM5Mzg0NDdjMzczZDVlNTI4NmJlZSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImNhLWNlcnRpZmljYXRlcyBnbnV0bHMiCi0KLSMgTm8gZXhwbGljaXQgZGVwZW5kZW5jeSBhcyBpdCB3b3JrcyB3aXRob3V0IGNhLWNlcnRpZmljYXRlcyBpbnN0YWxsZWQKLVBBQ0tBR0VDT05GSUdbY2EtY2VydGlmaWNhdGVzXSA9ICItLXdpdGgtY2EtY2VydGlmaWNhdGVzPSR7c3lzY29uZmRpcn0vc3NsL2NlcnRzL2NhLWNlcnRpZmljYXRlcy5jcnQsLS13aXRob3V0LWNhLWNlcnRpZmljYXRlcyIKLVBBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLXdpdGgtZ251dGxzLC0td2l0aG91dC1nbnV0bHMsZ251dGxzIgotUEFDS0FHRUNPTkZJR1tsaWJwcm94eV0gPSAiLS13aXRoLWxpYnByb3h5LC0td2l0aG91dC1saWJwcm94eSxsaWJwcm94eSIKLVBBQ0tBR0VDT05GSUdbcGtjczExXSA9ICItLXdpdGgtcGtjczExLC0td2l0aG91dC1wa2NzMTEscDExLWtpdCIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1nbm9tZS1wcm94eSIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ2V0dGV4dCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ2lvLW1vZHVsZS1jYWNoZQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dpby9tb2R1bGVzL2xpYmdpbyouc28gJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMvIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvbGliZ2lvKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dpby9tb2R1bGVzL2xpYmdpbyouYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLW5ldHdvcmtpbmcvZ2xpYi1uZXR3b3JraW5nXzIuNTQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLW5ldHdvcmtpbmcvZ2xpYi1uZXR3b3JraW5nXzIuNTQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTZmOGFmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItbmV0d29ya2luZy9nbGliLW5ldHdvcmtpbmdfMi41NC4xLmJiCkBAIC0wLDAgKzEsMjkgQEAKK1NVTU1BUlkgPSAiR0xpYiBuZXR3b3JraW5nIGV4dGVuc2lvbnMiCitERVNDUklQVElPTiA9ICJnbGliLW5ldHdvcmtpbmcgY29udGFpbnMgdGhlIGltcGxlbWVudGF0aW9ucyBvZiBjZXJ0YWluIEdMaWIgbmV0d29ya2luZyBmZWF0dXJlcyB0aGF0IGNhbm5vdCBiZSBpbXBsZW1lbnRlZCBkaXJlY3RseSBpbiBHTGliIGl0c2VsZiBiZWNhdXNlIG9mIHRoZWlyIGRlcGVuZGVuY2llcy4iCitIT01FUEFHRSA9ICJodHRwOi8vZ2l0Lmdub21lLm9yZy9icm93c2UvZ2xpYi1uZXR3b3JraW5nLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZyIKKworTElDRU5TRSA9ICJMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKKworU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyA9ICJnbGliLTIuMCIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiOTk4Njc0NjNmMTgyYzI3NjdiY2UwYzc0YmM5Y2M5ODEiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJlYWE3ODdiNjUzMDE1YTBkZTMxYzkyOGU5YTE3ZWI1N2I0Y2UyM2M4Y2Y2ZjI3N2FmYWVjMGQ2ODUzMzUwMTJmIgorCitQQUNLQUdFQ09ORklHID8/PSAiY2EtY2VydGlmaWNhdGVzIGdudXRscyIKKworIyBObyBleHBsaWNpdCBkZXBlbmRlbmN5IGFzIGl0IHdvcmtzIHdpdGhvdXQgY2EtY2VydGlmaWNhdGVzIGluc3RhbGxlZAorUEFDS0FHRUNPTkZJR1tjYS1jZXJ0aWZpY2F0ZXNdID0gIi0td2l0aC1jYS1jZXJ0aWZpY2F0ZXM9JHtzeXNjb25mZGlyfS9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCwtLXdpdGhvdXQtY2EtY2VydGlmaWNhdGVzIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsLS13aXRob3V0LWdudXRscyxnbnV0bHMiCitQQUNLQUdFQ09ORklHW2xpYnByb3h5XSA9ICItLXdpdGgtbGlicHJveHksLS13aXRob3V0LWxpYnByb3h5LGxpYnByb3h5IgorUEFDS0FHRUNPTkZJR1twa2NzMTFdID0gIi0td2l0aC1wa2NzMTEsLS13aXRob3V0LXBrY3MxMSxwMTEta2l0IgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LWdub21lLXByb3h5IgorCitpbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnaW8tbW9kdWxlLWNhY2hlCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvbGliZ2lvKi5zbyAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcy8iCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9naW8vbW9kdWxlcy9saWJnaW8qLmxhIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvbGliZ2lvKi5hIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4yNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlXzIuMjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0NDA4NWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4yNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLVNVTU1BUlkgPSAiQ3Jvc3MgbG9jYWxlIGdlbmVyYXRpb24gdG9vbCBmb3IgZ2xpYmMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliYy9saWJjLmh0bWwiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEwtMi4xIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFUzttZDU9ZTlhNTU4ZTI0M2IzNmQzMjA5ZjM4MGRlYjM5NGIyMTMgXAotICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgIGZpbGU6Ly9wb3NpeC9yeHNwZW5jZXIvQ09QWVJJR0hUO21kNT1kYzU0ODViYjM5NGExM2IyMzMyZWMxYzc4NWY1ZDgzYSBcCi0gICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi0jIFRlbGwgYXV0b3Rvb2xzIHRoYXQgd2UncmUgd29ya2luZyBpbiB0aGUgbG9jYWxlZGVmIGRpcmVjdG9yeQotIwotQVVUT1RPT0xTX1NDUklQVF9QQVRIID0gIiR7U30vbG9jYWxlZGVmIgotCi1pbmhlcml0IG5hdGl2ZQotaW5oZXJpdCBhdXRvdG9vbHMKLQotRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vJHtQTn06JHtGSUxFX0RJUk5BTUV9L2dsaWJjOiIKLQotU1JDQlJBTkNIID89ICJyZWxlYXNlLyR7UFZ9L21hc3RlciIKLUdMSUJDX0dJVF9VUkkgPz0gImdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9nbGliYy5naXQiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCtcLlxkKyhcLlxkKykqKSIKLQotU1JDUkVWX2dsaWJjID89ICJkMzAwMDQxYzUzM2EzZDgzN2M5ZjM3YTA5OWJjYzk1NDY2ODYwZTk4IgotU1JDUkVWX2xvY2FsZWRlZiA/PSAiZGZiNGFmZTU1MWM2YzZlOTRmOWNjODU0MTdiZDFmNTgyMTY4Yzg0MyIKLQotU1JDX1VSSSA9ICIke0dMSUJDX0dJVF9VUkl9O2JyYW5jaD0ke1NSQ0JSQU5DSH07bmFtZT1nbGliYyBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20va3Jhai9sb2NhbGVkZWY7YnJhbmNoPW1hc3RlcjtuYW1lPWxvY2FsZWRlZjtkZXN0c3VmZml4PWdpdC9sb2NhbGVkZWYgXAotICAgICAgICAgICBmaWxlOi8vMDAxNS10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTYtUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE3LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOC1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTktZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIwLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIxLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIyLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hcmNoaXZlLXBhdGgucGF0Y2ggXAotIgotIyBNYWtlcyBmb3IgYSByYXRoZXIgbG9uZyByZXYgKDIyIGNoYXJhY3RlcnMpLCBidXQuLi4KLSMKLVNSQ1JFVl9GT1JNQVQgPSAiZ2xpYmNfbG9jYWxlZGVmIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWdsaWJjPSR7U30iCi1DRkxBR1MgKz0gIi1mZ251ODktaW5saW5lIC1zdGQ9Z251OTkgLURJU19JTlwoeFwpPScwJyIKLQotZG9faW5zdGFsbCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLQlpbnN0YWxsIC1tIDA3NTUgJHtCfS9sb2NhbGVkZWYgJHtEfSR7YmluZGlyfS9jcm9zcy1sb2NhbGVkZWYKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlXzIuMjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjI3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlOTJlYjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjI3LmJiCkBAIC0wLDAgKzEsNTIgQEAKK1NVTU1BUlkgPSAiQ3Jvc3MgbG9jYWxlIGdlbmVyYXRpb24gdG9vbCBmb3IgZ2xpYmMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliYy9saWJjLmh0bWwiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEwtMi4xIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFUzttZDU9ZTlhNTU4ZTI0M2IzNmQzMjA5ZjM4MGRlYjM5NGIyMTMgXAorICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgIGZpbGU6Ly9wb3NpeC9yeHNwZW5jZXIvQ09QWVJJR0hUO21kNT1kYzU0ODViYjM5NGExM2IyMzMyZWMxYzc4NWY1ZDgzYSBcCisgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCisjIFRlbGwgYXV0b3Rvb2xzIHRoYXQgd2UncmUgd29ya2luZyBpbiB0aGUgbG9jYWxlZGVmIGRpcmVjdG9yeQorIworQVVUT1RPT0xTX1NDUklQVF9QQVRIID0gIiR7U30vbG9jYWxlZGVmIgorCitpbmhlcml0IG5hdGl2ZQoraW5oZXJpdCBhdXRvdG9vbHMKKworRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vJHtQTn06JHtGSUxFX0RJUk5BTUV9L2dsaWJjOiIKKworU1JDQlJBTkNIID89ICJyZWxlYXNlLyR7UFZ9L21hc3RlciIKK0dMSUJDX0dJVF9VUkkgPz0gImdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9nbGliYy5naXQiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCtcLlxkKyhcLig/ITkwKVxkKykqKSIKKworU1JDUkVWX2dsaWJjID89ICJkZjNmZjRlNDlkNGVlM2NiYmRhZWIwYjFjYjVkYzIzNDRjMDhiZTk4IgorU1JDUkVWX2xvY2FsZWRlZiA/PSAiZGU1YmRiZDVlNzZiNTQwM2E0MTUxYjliOWY5NThiNmNjYTM2YjNlNyIKKworU1JDX1VSSSA9ICIke0dMSUJDX0dJVF9VUkl9O2JyYW5jaD0ke1NSQ0JSQU5DSH07bmFtZT1nbGliYyBcCisgICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20va3Jhai9sb2NhbGVkZWY7YnJhbmNoPW1hc3RlcjtuYW1lPWxvY2FsZWRlZjtkZXN0c3VmZml4PWdpdC9sb2NhbGVkZWYgXAorICAgICAgICAgICBmaWxlOi8vMDAxNS10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTYtUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE3LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTktZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIwLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIxLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIyLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hcmNoaXZlLXBhdGgucGF0Y2ggXAorIgorIyBNYWtlcyBmb3IgYSByYXRoZXIgbG9uZyByZXYgKDIyIGNoYXJhY3RlcnMpLCBidXQuLi4KKyMKK1NSQ1JFVl9GT1JNQVQgPSAiZ2xpYmNfbG9jYWxlZGVmIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWdsaWJjPSR7U30iCitDRkxBR1MgKz0gIi1mZ251ODktaW5saW5lIC1zdGQ9Z251OTkgLURJU19JTlwoeFwpPScwJyIKKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwlpbnN0YWxsIC1tIDA3NTUgJHtCfS9sb2NhbGVkZWYgJHtEfSR7YmluZGlyfS9jcm9zcy1sb2NhbGVkZWYKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1jb2xsYXRlcmFsLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1jb2xsYXRlcmFsLmluYwppbmRleCBkZTg1OWQ1Li5hYTg3MWFjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtY29sbGF0ZXJhbC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWNvbGxhdGVyYWwuaW5jCkBAIC03LDcgKzcsOCBAQAogIyBUaGlzIG5lZWRzIHRvIG1hdGNoIHdpdGggZ2xpYmMuaW5jLCBvdGhlcndpc2UgZ2xpYmMtc2NyaXB0cyBhbmQgZ2xpYmMtbG9jYWxlCiAjIHdpbGwgZmFpbCB0byBmaW5kIG1haW4gZ2xpYmMsIGZvciBkZXRhaWxzIHNlZQogIyBodHRwOi8vbGlzdHMub3BlbmVtYmVkZGVkLm9yZy9waXBlcm1haWwvb3BlbmVtYmVkZGVkLWNvcmUvMjAxNS1KYW51YXJ5LzEwMDY3OS5odG1sCi1BUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCiAKIGRlbHRhc2sgZG9fZmV0Y2gKIGRlbHRhc2sgZG9fdW5wYWNrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtaW5pdGlhbF8yLjI2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWluaXRpYWxfMi4yNy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWluaXRpYWxfMi4yNi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWluaXRpYWxfMi4yNy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZV8yLjI2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZV8yLjI3LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlXzIuMjYuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1sb2NhbGVfMi4yNy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLW10cmFjZV8yLjI2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLW10cmFjZV8yLjI3LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbXRyYWNlXzIuMjYuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1tdHJhY2VfMi4yNy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXBhY2thZ2UuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXBhY2thZ2UuaW5jCmluZGV4IGI2ZDgwNzQuLjcyOGJjNTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1wYWNrYWdlLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtcGFja2FnZS5pbmMKQEAgLTY2LDcgKzY2LDcgQEAKIAkJcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7bGliZXhlY2Rpcn0KIAlmaQogCi0Jb2VfbXVsdGlsaWJfaGVhZGVyIGJpdHMvc3lzY2FsbC5oIGJpdHMvbG9uZy1kb3VibGUuaAorCW9lX211bHRpbGliX2hlYWRlciBiaXRzL3N5c2NhbGwuaCBiaXRzL2xvbmctZG91YmxlLmggYml0cy9mbG9hdG4uaAogCiAJaWYgWyAtZiAke0R9JHtiaW5kaXJ9L210cmFjZSBdOyB0aGVuCiAJCXNlZCAtaSAtZSAnMXMsIyEuKnBlcmwsIyEgJHtVU1JCSU5QQVRIfS9lbnYgcGVybCwnIC1lICcycyxleGVjLipwZXJsLGV4ZWMgJHtVU1JCSU5QQVRIfS9lbnYgcGVybCwnICR7RH0ke2JpbmRpcn0vbXRyYWNlCkBAIC05Nyw2ICs5Nyw3IEBACiAJaW5zdGFsbCAtbSAwNzU1ICR7U30vbnNjZC9uc2NkLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL25zY2QKIAlpbnN0YWxsIC1tIDA3NTUgJHtTfS9uc2NkL25zY2QuY29uZiAke0R9JHtzeXNjb25mZGlyfS9uc2NkLmNvbmYKIAlzZWQgLWkgInMlZGFlbW9uJXN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLS1leGVjJWciICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9uc2NkCisJc2VkIC1pICJzfFwoZW5hYmxlLWNhY2hlXHRcK25ldGdyb3VwXHRcK1wpeWVzfFwxbm98IiAke0R9JHtzeXNjb25mZGlyfS9uc2NkLmNvbmYKIAogCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KIAlpbnN0YWxsIC1tIDA2NDQgJHtTfS9uc2NkL25zY2Quc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KQEAgLTExNywxMCArMTE4LDEwIEBACiAJCSMgVGhlIGFhcmNoNjQgQUJJIHNheXMgdGhlIGR5bmFtaWMgbGlua2VyIC1tdXN0LSBiZSAvbGliL2xkLWxpbnV4LWFhcmNoNjRbX2JlXS5zby4xCiAJCWluc3RhbGwgLWQgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0KIAkJaWYgWyAtZSAke0R9JHtiYXNlX2xpYmRpcn0vbGQtbGludXgtYWFyY2g2NC5zby4xIF07IHRoZW4KLQkJCWxuIC1zICR7QGJhc2VfcGF0aF9yZWxhdGl2ZSgnJHtub25hcmNoX2Jhc2VfbGliZGlyfScsICcke2Jhc2VfbGliZGlyfScpfS9sZC1saW51eC1hYXJjaDY0LnNvLjEgXAorCQkJbG4gLXMgJHtAb2UucGF0aC5yZWxhdGl2ZSgnJHtub25hcmNoX2Jhc2VfbGliZGlyfScsICcke2Jhc2VfbGliZGlyfScpfS9sZC1saW51eC1hYXJjaDY0LnNvLjEgXAogCQkJCSR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2xkLWxpbnV4LWFhcmNoNjQuc28uMQogCQllbGlmIFsgLWUgJHtEfSR7YmFzZV9saWJkaXJ9L2xkLWxpbnV4LWFhcmNoNjRfYmUuc28uMSBdOyB0aGVuCi0JCQlsbiAtcyAke0BiYXNlX3BhdGhfcmVsYXRpdmUoJyR7bm9uYXJjaF9iYXNlX2xpYmRpcn0nLCAnJHtiYXNlX2xpYmRpcn0nKX0vbGQtbGludXgtYWFyY2g2NF9iZS5zby4xIFwKKwkJCWxuIC1zICR7QG9lLnBhdGgucmVsYXRpdmUoJyR7bm9uYXJjaF9iYXNlX2xpYmRpcn0nLCAnJHtiYXNlX2xpYmRpcn0nKX0vbGQtbGludXgtYWFyY2g2NF9iZS5zby4xIFwKIAkJCQkke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9sZC1saW51eC1hYXJjaDY0X2JlLnNvLjEKIAkJZmkKIAlmaQpAQCAtMjA2LDggKzIwNywxMSBAQAogCXJtIC1yZiAke0R9LyR7bG9jYWxlZGlyfQogCXJtIC1yZiAke0R9JHtkYXRhZGlyfS9sb2NhbGUKIAlpZiBbICIke2xpYmRpcn0iICE9ICIke2V4ZWNfcHJlZml4fS9saWIiIF07IHRoZW4KLQkJIyBUaGlzIGRpciBvbmx5IGV4aXN0cyB0byBob2xkIGxvY2FsZXMKLQkJcm0gLXJmICR7RH0ke2V4ZWNfcHJlZml4fS9saWIKKwkJaWYgWyAtZCAke0R9JHtleGVjX3ByZWZpeH0vbGliL2xvY2FsZSBdIDsgdGhlbgorCQkJcm0gLXJmICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvbG9jYWxlCisJCQkjIGVycm9yIG91dCBpZiBkaXJlY3RvcnkgaXNuJ3QgZW1wdHkKKwkJCXJtIC1mICR7RH0ke2V4ZWNfcHJlZml4fS9saWIKKwkJZmkKIAlmaQogfQogYWRkdGFzayBkb19wb3N0c3Rhc2hfaW5zdGFsbF9jbGVhbnVwIGFmdGVyIGRvX3N0YXNoX2xvY2FsZSBkb19pbnN0YWxsIGJlZm9yZSBkb19wb3B1bGF0ZV9zeXNyb290IGRvX3BhY2thZ2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1zY3JpcHRzXzIuMjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtc2NyaXB0c18yLjI3LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtc2NyaXB0c18yLjI2LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtc2NyaXB0c18yLjI3LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLmluYwppbmRleCAyMWJiZGMyLi5jZTEyMjJiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy5pbmMKQEAgLTM1LDcgKzM1LDEwIEBACiBERVBFTkRTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYy1pbml0aWFsIGxpYmdjYy1pbml0aWFsIGxpbnV4LWxpYmMtaGVhZGVycyB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1saWJjLWluaXRpYWwiCiAjIG5wdGwgbmVlZHMgbGliZ2NjIGJ1dCBkbG9wZW5zIGl0LCBzbyBvdXIgc2hsaWJzIGNvZGUgZG9lc24ndCBkZXRlY3QgdGhpcwogI1JERVBFTkRTXyR7UE59ICs9ICIke0BbJycsJ2xpYmdjYyddWyducHRsJyBpbiAnJHtHTElCQ19BRERPTlN9J119IgotUFJPVklERVMgPSAidmlydHVhbC9saWJjIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWxpYmMtZm9yLWdjYyIKKworQ1JZUFRQUk9WSURFUyA9ICJ2aXJ0dWFsL2NyeXB0IgorQ1JZUFRQUk9WSURFU19jbGFzcy1uYXRpdmVzZGsgPSAiIgorUFJPVklERVMgPSAidmlydHVhbC9saWJjIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWxpYmMtZm9yLWdjYyAke0NSWVBUUFJPVklERVN9IgogUFJPVklERVMgKz0gInZpcnR1YWwvbGliaW50bCB2aXJ0dWFsL2xpYmljb252IgogaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgc3lzdGVtZAogCkBAIC00Nyw2ICs1MCw3IEBACiAgIGxpYmNfY3Zfcm9vdHNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IFwKICAgbGliY19jdl9sb2NhbGVkaXI9JHtsb2NhbGVkaXJ9IFwKICAgbGliY19jdl9zc3Bfc3Ryb25nPW5vIFwKKyAgbGliY19jdl9zc3BfYWxsPW5vIFwKICAgbGliY19jdl9zc3A9bm8gXAogIgogCkBAIC01Nyw3ICs2MSw4IEBACiAjIFRoaXMgbmVlZHMgdG8gbWF0Y2ggd2l0aCBnbGliYy1jb2xsYXRlcmFsLmluYywgb3RoZXJ3aXNlIGdsaWJjLXNjcmlwdHMgYW5kIGdsaWJjLWxvY2FsZQogIyB3aWxsIGZhaWwgdG8gZmluZCBtYWluIGdsaWJjLCBmb3IgZGV0YWlscyBzZWUKICMgaHR0cDovL2xpc3RzLm9wZW5lbWJlZGRlZC5vcmcvcGlwZXJtYWlsL29wZW5lbWJlZGRlZC1jb3JlLzIwMTUtSmFudWFyeS8xMDA2NzkuaHRtbAotQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgogCiAjIGdsaWJjIHVzZXMgUEFSQUxMRUxNRkxBR1MgdmFyaWFibGUgdG8gcGFzcyBwYXJhbGxlbCBidWlsZCBpbmZvIHNvIHRyYW5zZmVyCiAjIFBBUkFMTEVMX01BS0UgaW50byBQQVJBTExFTE1GTEFHUyBhbmQgZW1wdHkgb3V0IFBBUkFMTEVMX01BS0UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1uYXRpdmVzZGstZ2xpYmMtTG9vay1mb3ItaG9zdC1zeXN0ZW0tbGQuc28uY2FjaGUtYXMtLnBhdGNoCmluZGV4IDE5YzFkOWIuLjg2MjM0YzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gODEzNDZiMmY3NzM1Njk4MDc4ZDViZjkxOWE3OGI2YzAyNjlkNmZlZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYmQ5MWI2MGNlNmZmMDFmNDliMTczYjZiNDVlMjNjZTk0OTExYjJhNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjQ4OjI0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDEvMjVdIG5hdGl2ZXNkay1nbGliYzogTG9vayBmb3IgaG9zdCBzeXN0ZW0gbGQuc28uY2FjaGUgYXMKK1N1YmplY3Q6IFtQQVRDSCAwMS8yN10gbmF0aXZlc2RrLWdsaWJjOiBMb29rIGZvciBob3N0IHN5c3RlbSBsZC5zby5jYWNoZSBhcwogIHdlbGwKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KQEAgLTMxLDEwICszMSwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9lbGYvZGwtbG9hZC5jIGIvZWxmL2RsLWxvYWQuYwotaW5kZXggYzFiNmQ0YmEwZi4uZDdhZjllYmNiYyAxMDA2NDQKK2luZGV4IDc1NTRhOTliNWEuLmE3M2QxMWE2MmYgMTAwNjQ0CiAtLS0gYS9lbGYvZGwtbG9hZC5jCiArKysgYi9lbGYvZGwtbG9hZC5jCi1AQCAtMjA1NCw2ICsyMDU0LDE0IEBAIF9kbF9tYXBfb2JqZWN0IChzdHJ1Y3QgbGlua19tYXAgKmxvYWRlciwgY29uc3QgY2hhciAqbmFtZSwKK0BAIC0yMDA3LDYgKzIwMDcsMTQgQEAgX2RsX21hcF9vYmplY3QgKHN0cnVjdCBsaW5rX21hcCAqbG9hZGVyLCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAKQEAgLTQ5LDcgKzQ5LDcgQEAKICAjaWZkZWYgVVNFX0xEQ09ORklHCiAgICAgICAgaWYgKGZkID09IC0xCiAgCSAgJiYgKF9fZ2xpYmNfbGlrZWx5ICgobW9kZSAmIF9fUlRMRF9TRUNVUkUpID09IDApCi1AQCAtMjExMiwxNCArMjEyMCw2IEBAIF9kbF9tYXBfb2JqZWN0IChzdHJ1Y3QgbGlua19tYXAgKmxvYWRlciwgY29uc3QgY2hhciAqbmFtZSwKK0BAIC0yMDY1LDE0ICsyMDczLDYgQEAgX2RsX21hcF9vYmplY3QgKHN0cnVjdCBsaW5rX21hcCAqbG9hZGVyLCBjb25zdCBjaGFyICpuYW1lLAogIAl9CiAgI2VuZGlmCiAgCkBAIC02NSw1ICs2NSw1IEBACiAgICAgICAgaWYgKF9fZ2xpYmNfdW5saWtlbHkgKEdMUk8oZGxfZGVidWdfbWFzaykgJiBETF9ERUJVR19MSUJTKSkKICAJX2RsX2RlYnVnX3ByaW50ZiAoIlxuIik7CiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAyLW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMi1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoCmluZGV4IDJjZTI0MGIuLjg5OTQ4MWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAyLW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDItbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gODJmMmU5MTBlYzBlMmRlNmE5ZTJiMDA3ODI1YmRkZmM1ODUwNTc1ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNTA3MzZmN2ZjMWZkYzllMWY3YzA1ZjFmZWM3NWM5NzdkOWJlOTIyOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjUwOjAwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvMjVdIG5hdGl2ZXNkay1nbGliYzogRml4IGJ1ZmZlciBvdmVycnVuIHdpdGggYSByZWxvY2F0ZWQKK1N1YmplY3Q6IFtQQVRDSCAwMi8yN10gbmF0aXZlc2RrLWdsaWJjOiBGaXggYnVmZmVyIG92ZXJydW4gd2l0aCBhIHJlbG9jYXRlZAogIFNESwogCiBXaGVuIGxkLWxpbnV4LSouc28uMiBpcyByZWxvY2F0ZWQgdG8gYSBwYXRoIHRoYXQgaXMgbG9uZ2VyIHRoYW4gdGhlCkBAIC0yMiwxMCArMjIsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvZWxmL2RsLWxvYWQuYyBiL2VsZi9kbC1sb2FkLmMKLWluZGV4IGQ3YWY5ZWJjYmMuLjE5YzFkYjk5NDggMTAwNjQ0CitpbmRleCBhNzNkMTFhNjJmLi42MmUzZWVlNDc4IDEwMDY0NAogLS0tIGEvZWxmL2RsLWxvYWQuYwogKysrIGIvZWxmL2RsLWxvYWQuYwotQEAgLTE3NTMsNyArMTc1MywxOSBAQCBvcGVuX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBuYW1lbGVuLCBpbnQgbW9kZSwKK0BAIC0xNzA3LDcgKzE3MDcsMTkgQEAgb3Blbl9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBzaXplX3QgbmFtZWxlbiwgaW50IG1vZGUsCiAgICAgICAgIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUgd2hlbiBydGxkIGlzIHJ1biBkaXJlY3RseS4gICovCiAgICAgIHJldHVybiAtMTsKICAKQEAgLTQ2LDUgKzQ2LDUgQEAKICAgICAgewogICAgICAgIHN0cnVjdCByX3NlYXJjaF9wYXRoX2VsZW0gKnRoaXNfZGlyID0gKmRpcnM7CiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAzLW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMy1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoCmluZGV4IDM5N2U4YjMuLjAzZjk5OTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAzLW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDMtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNDkwYTBlYjRkYTFhZjcyNmVhNWQ2OGUzZWZjMGQxOGJhOTRjNDA1NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNjk1ZTFjYmZmNmVlNmRiMzQzNWMzM2U1NTMxMWM2N2FkZjQ0NDc2ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjUxOjM4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvMjVdIG5hdGl2ZXNkay1nbGliYzogUmFpc2UgdGhlIHNpemUgb2YgYXJyYXlzIGNvbnRhaW5pbmcgZGwKK1N1YmplY3Q6IFtQQVRDSCAwMy8yN10gbmF0aXZlc2RrLWdsaWJjOiBSYWlzZSB0aGUgc2l6ZSBvZiBhcnJheXMgY29udGFpbmluZyBkbAogIHBhdGhzCiAKIFRoaXMgcGF0Y2ggcHV0cyB0aGUgZHluYW1pYyBsb2FkZXIgcGF0aCBpbiB0aGUgYmluYXJpZXMsIFNZU1RFTV9ESVJTIHN0cmluZ3MKQEAgLTI2LDcgKzI2LDcgQEAKICA3IGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZWxmL2RsLWNhY2hlLmMgYi9lbGYvZGwtY2FjaGUuYwotaW5kZXggZTk2MzJkYTBiMy4uNGRlNTI5ZDJjZiAxMDA2NDQKK2luZGV4IDZlZTUxNTNmZjkuLjM3YTVmNzAxZmEgMTAwNjQ0CiAtLS0gYS9lbGYvZGwtY2FjaGUuYwogKysrIGIvZWxmL2RsLWNhY2hlLmMKIEBAIC0xMzMsNiArMTMzLDEwIEBAIGRvCQkJCQkJCQkJICAgICAgXApAQCAtMzgsMTQgKzM4LDE0IEBACiArCiArCiAgaW50Ci0gaW50ZXJuYWxfZnVuY3Rpb24KICBfZGxfY2FjaGVfbGliY21wIChjb25zdCBjaGFyICpwMSwgY29uc3QgY2hhciAqcDIpCisgewogZGlmZiAtLWdpdCBhL2VsZi9kbC1sb2FkLmMgYi9lbGYvZGwtbG9hZC5jCi1pbmRleCAxOWMxZGI5OTQ4Li43MGMyNTliNDAwIDEwMDY0NAoraW5kZXggNjJlM2VlZTQ3OC4uNmRkYmE3MzY1MCAxMDA2NDQKIC0tLSBhL2VsZi9kbC1sb2FkLmMKICsrKyBiL2VsZi9kbC1sb2FkLmMKLUBAIC0xMDYsOCArMTA2LDggQEAgc3RhdGljIHNpemVfdCBtYXhfY2Fwc3RybGVuIGF0dHJpYnV0ZV9yZWxybzsKLSAvKiBHZXQgdGhlIGdlbmVyYXRlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdHJ1c3RlZCBkaXJlY3Rvcmllcy4gICovCitAQCAtMTA5LDggKzEwOSw4IEBAIHN0YXRpYyBzaXplX3QgbWF4X2NhcHN0cmxlbiBhdHRyaWJ1dGVfcmVscm87CisgICAgZ2VuLXRydXN0ZWQtZGlycy5hd2suICAqLwogICNpbmNsdWRlICJ0cnVzdGVkLWRpcnMuaCIKICAKIC1zdGF0aWMgY29uc3QgY2hhciBzeXN0ZW1fZGlyc1tdID0gU1lTVEVNX0RJUlM7CkBAIC01Niw3ICs1Niw3IEBACiAgICBTWVNURU1fRElSU19MRU4KICB9OwogZGlmZiAtLWdpdCBhL2VsZi9pbnRlcnAuYyBiL2VsZi9pbnRlcnAuYwotaW5kZXggYjZlOGYwNDQ0NC4uNDdjMjA0MTViYyAxMDA2NDQKK2luZGV4IDljZDUwYzcyOTEuLmZjMmYzOWQ3M2MgMTAwNjQ0CiAtLS0gYS9lbGYvaW50ZXJwLmMKICsrKyBiL2VsZi9pbnRlcnAuYwogQEAgLTE4LDUgKzE4LDUgQEAKQEAgLTY3LDcgKzY3LDcgQEAKICtjb25zdCBjaGFyIF9faW52b2tlX2R5bmFtaWNfbGlua2VyX19bNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuaW50ZXJwIikpKQogICAgPSBSVU5USU1FX0xJTktFUjsKIGRpZmYgLS1naXQgYS9lbGYvbGRjb25maWcuYyBiL2VsZi9sZGNvbmZpZy5jCi1pbmRleCA5OWNhZjllOWJiLi4zNmVhNWRmNWYxIDEwMDY0NAoraW5kZXggZmJkZDgxNGVkZi4uOWY0ZDhkNjliMSAxMDA2NDQKIC0tLSBhL2VsZi9sZGNvbmZpZy5jCiArKysgYi9lbGYvbGRjb25maWcuYwogQEAgLTE2OCw2ICsxNjgsOSBAQCBzdGF0aWMgc3RydWN0IGFyZ3AgYXJncCA9CkBAIC04MSw3ICs4MSw3IEBACiAgICAgYSBwbGF0Zm9ybS4gICovCiAgc3RhdGljIGludAogZGlmZiAtLWdpdCBhL2VsZi9ydGxkLmMgYi9lbGYvcnRsZC5jCi1pbmRleCA2NTY0N2ZiMWM4Li5jZDgzODFjYjMzIDEwMDY0NAoraW5kZXggNDUzZjU2ZWIxNS4uMDhlMGM0Yzk0YiAxMDA2NDQKIC0tLSBhL2VsZi9ydGxkLmMKICsrKyBiL2VsZi9ydGxkLmMKIEBAIC0xMjgsNiArMTI4LDcgQEAgZHNvX25hbWVfdmFsaWRfZm9yX3N1aWQgKGNvbnN0IGNoYXIgKnApCkBAIC05Miw3ICs5Miw3IEBACiAgCiAgLyogTERfQVVESVQgdmFyaWFibGUgY29udGVudHMuICBNdXN0IGJlIHByb2Nlc3NlZCBiZWZvcmUgdGhlCiAgICAgYXVkaXRfbGlzdCBiZWxvdy4gICovCi1AQCAtOTk5LDEyICsxMDAwLDEyIEBAIG9mIHRoaXMgaGVscGVyIHByb2dyYW07IGNoYW5jZXMgYXJlIHlvdSBkaWQgbm90IGludGVuZCB0byBydW4gdGhpcyBwcm9ncmFtLlxuXAorQEAgLTEwMDAsMTIgKzEwMDEsMTIgQEAgb2YgdGhpcyBoZWxwZXIgcHJvZ3JhbTsgY2hhbmNlcyBhcmUgeW91IGRpZCBub3QgaW50ZW5kIHRvIHJ1biB0aGlzIHByb2dyYW0uXG5cCiAgICAtLWxpc3QgICAgICAgICAgICAgICAgbGlzdCBhbGwgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhleSBhcmUgcmVzb2x2ZWRcblwKICAgIC0tdmVyaWZ5ICAgICAgICAgICAgICB2ZXJpZnkgdGhhdCBnaXZlbiBvYmplY3QgcmVhbGx5IGlzIGEgZHluYW1pY2FsbHkgbGlua2VkXG5cCiAgCQkJb2JqZWN0IHdlIGNhbiBoYW5kbGVcblwKQEAgLTEwOCw3ICsxMDgsNyBAQAogICAgICAgICsrX2RsX3NraXBfYXJnczsKICAgICAgICAtLV9kbF9hcmdjOwogZGlmZiAtLWdpdCBhL2ljb252L2djb252X2NvbmYuYyBiL2ljb252L2djb252X2NvbmYuYwotaW5kZXggNWFhMDU1ZGU2ZS4uYjlhMTRiOWJkMyAxMDA2NDQKK2luZGV4IGQ2Y2Y5ZDJhM2UuLjlmY2Y5NzAxNDQgMTAwNjQ0CiAtLS0gYS9pY29udi9nY29udl9jb25mLmMKICsrKyBiL2ljb252L2djb252X2NvbmYuYwogQEAgLTM2LDcgKzM2LDcgQEAKQEAgLTEyMSw3ICsxMjEsNyBAQAogIC8qIFRoZSBwYXRoIGVsZW1lbnRzLCBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBfX2djb252X2dldF9wYXRoIGZ1bmN0aW9uLgogICAgIEFsbCBwYXRoIGVsZW1lbnRzIGVuZCBpbiBhIHNsYXNoLiAgKi8KIGRpZmYgLS1naXQgYS9zeXNkZXBzL2dlbmVyaWMvZGwtY2FjaGUuaCBiL3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oCi1pbmRleCAxZjBiOGY2MjlkLi5hY2JlNjgzOTlkIDEwMDY0NAoraW5kZXggY2Y0M2YxY2YzYi4uN2YwN2FkZGU1MyAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oCiArKysgYi9zeXNkZXBzL2dlbmVyaWMvZGwtY2FjaGUuaAogQEAgLTI3LDEwICsyNyw2IEBACkBAIC0xMzYsNSArMTM2LDUgQEAKICAjIGRlZmluZSBhZGRfc3lzdGVtX2RpcihkaXIpIGFkZF9kaXIgKGRpcikKICAjZW5kaWYKIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDQtbmF0aXZlc2RrLWdsaWJjLUFsbG93LTY0LWJpdC1hdG9taWNzLWZvci14ODYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaAppbmRleCA4ZGI0N2JjLi5mOWQ3MGMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gOGZlMWI1NjE4MGMzMGQyMzdjYzJhYjlhNWE5Yzk3YTAzMTFmNDFkYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMmJhZmRiZDcwNjc3OTRjNmEyNGU1ZTg1NjA4YzBlYzQ2MzhjNTY2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE0OjM1OjM1IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvMjVdIG5hdGl2ZXNkay1nbGliYzogQWxsb3cgNjQgYml0IGF0b21pY3MgZm9yIHg4NgorU3ViamVjdDogW1BBVENIIDA0LzI3XSBuYXRpdmVzZGstZ2xpYmM6IEFsbG93IDY0IGJpdCBhdG9taWNzIGZvciB4ODYKIAogVGhlIGZpeCBjb25zaXN0IG9mIGFsbG93aW5nIDY0Yml0IGF0b21pYyBvcHMgZm9yIHg4Ni4KIFRoaXMgc2hvdWxkIGJlIHNhZmUgZm9yIGk1ODYgYW5kIG5ld2VyIENQVXMuCkBAIC0xNyw3ICsxNyw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9zeXNkZXBzL2kzODYvYXRvbWljLW1hY2hpbmUuaCBiL3N5c2RlcHMvaTM4Ni9hdG9taWMtbWFjaGluZS5oCi1pbmRleCAwZTI0MjAwNjE3Li4xNTMyZjUyZGVjIDEwMDY0NAoraW5kZXggMjcyZGE1ZGQ4Zi4uNDA5Yzc1OWYxNCAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvaTM4Ni9hdG9taWMtbWFjaGluZS5oCiArKysgYi9zeXNkZXBzL2kzODYvYXRvbWljLW1hY2hpbmUuaAogQEAgLTU0LDcgKzU0LDcgQEAgdHlwZWRlZiB1aW50bWF4X3QgdWF0b21pY19tYXhfdDsKQEAgLTMwLDUgKzMwLDUgQEAKICAjZGVmaW5lIEFUT01JQ19FWENIQU5HRV9VU0VTX0NBUyAwCiAgCiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA1LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNS1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoCmluZGV4IDk1NmIyYWEuLmFkOTEwNmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA1LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDUtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gYjllZGNjODQ1NjQxOTU2YjcyODZjNjBjODMzZjA1YTlmNzBjZmFiOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNjYxYWRmZTljMjIwZDEwNjE3YmY2YmIyODM4Mjc0NzFjMzk1NmIwMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjAxOjUwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvMjVdIGZzbCBlNTAwL2U1NTAwL2U2NTAwLzYwM2UgZnNxcnQgaW1wbGVtZW50YXRpb24KK1N1YmplY3Q6IFtQQVRDSCAwNS8yN10gZnNsIGU1MDAvZTU1MDAvZTY1MDAvNjAzZSBmc3FydCBpbXBsZW1lbnRhdGlvbgogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIFNpZ25lZC1vZmYtYnk6IEVkbWFyIFdpZW5za29za2kgPGVkbWFyQGZyZWVzY2FsZS5jb20+CkBAIC0xNTgwLDUgKzE1ODAsNSBAQAogQEAgLTAsMCArMSBAQAogK3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdQogLS0gCi0yLjEzLjIKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNi1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDYtcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaAppbmRleCBjNzRmZWFkLi5hM2Q1MGZkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNi1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA2LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDMyNDIwMjQ4OGExYzI0MzliZTM0NTc0NTcyMmY1Y2IwNGMwZTA4NDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDYxNTU5OGZjY2E2NDQ2MWE3MWQ4NGY3NTZkNzUzNzRmMDJkOTE0YWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoxMToyMiArMDAwMAotU3ViamVjdDogW1BBVENIIDA2LzI1XSByZWFkbGliOiBBZGQgT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTIHRvIGtub3duCitTdWJqZWN0OiBbUEFUQ0ggMDYvMjddIHJlYWRsaWI6IEFkZCBPRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMgdG8ga25vd24KICBuYW1lcwogCiBUaGlzIGJvbHRzIGluIGEgaG9vayBmb3IgT0UgdG8gcGFzcyBpdHMgb3duIHZlcnNpb24gb2YgaW50ZXJwcmV0ZXIKQEAgLTE3LDcgKzE3LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAogZGlmZiAtLWdpdCBhL2VsZi9yZWFkbGliLmMgYi9lbGYvcmVhZGxpYi5jCi1pbmRleCBkMjc4YTE4OWIyLi5hODRjYjg1MTU4IDEwMDY0NAoraW5kZXggNTczYzAxNDc2Yy4uZDhjNzQxMjI4NyAxMDA2NDQKIC0tLSBhL2VsZi9yZWFkbGliLmMKICsrKyBiL2VsZi9yZWFkbGliLmMKIEBAIC01MSw2ICs1MSw3IEBAIHN0YXRpYyBzdHJ1Y3Qga25vd25fbmFtZXMgaW50ZXJwcmV0ZXJzW10gPQpAQCAtMjksNSArMjksNSBAQAogIAogIHN0YXRpYyBzdHJ1Y3Qga25vd25fbmFtZXMga25vd25fbGlic1tdID0KIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDctcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA3LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2gKaW5kZXggYjY0MzI3Ni4uMTIzNGRmMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDctcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNy1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBjZjAwYmY5ZGU4MTI4MTcxZTc5YTAxOWRlODA5ZTM1ZjNhZWVkMjgxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4MDRiNzNhZTI5NWJkZmRhMjkzNDFlODlmMmQwYzFiOTk0OTJkYzlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MTU6MDcgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNy8yNV0gcHBjL3NxcnQ6IEZpeCB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX3NxcnRfZmluaXRlJworU3ViamVjdDogW1BBVENIIDA3LzI3XSBwcGMvc3FydDogRml4IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fc3FydF9maW5pdGUnCiAKIG9uIHBwYyBmaXhlcyB0aGUgZXJyb3JzIGxpa2UgYmVsb3cKIHwgLi8ubGlicy9saWJwdWxzZWNvcmUtMS4xLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX3NxcnRfZmluaXRlJwpAQCAtMjA0LDUgKzIwNCw1IEBACiAgfQogK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDgtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA4LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKaW5kZXggM2FlZWM1Mi4uMWI0MzY0NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDgtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOC1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBiYWJlMzExZGVjYTllZTI3MzAyNzhmMTNiMDYxYjkxNGI1Mjg2ZGMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxYTUzMDg0MjQ5ZDlkYWUxZWY0MjgxMjQ2ZWZjODk5YzhmOWQ2M2VkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MTY6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwOC8yNV0gX19pZWVlNzU0X3NxcnR7LGZ9IGFyZSBub3cgaW5saW5lIGZ1bmN0aW9ucyBhbmQgY2FsbAorU3ViamVjdDogW1BBVENIIDA4LzI3XSBfX2llZWU3NTRfc3FydHssZn0gYXJlIG5vdyBpbmxpbmUgZnVuY3Rpb25zIGFuZCBjYWxsCiAgb3V0IF9fc2xvdyB2ZXJzaW9ucwogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKQEAgLTM4Myw1ICszODMsNSBAQAogKwogIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDktUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA5LVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2gKaW5kZXggN2Q1YzJlMy4uZWE0OTg1NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDktUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOS1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA5M2I1ZDZiZWQxOTkzOTAzOTAzMWM0NWI3NzdkMjk2MTlkYjA2MTg0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0ODI2MmI2ZGRhOTM1Mjc4YTQwMzc0ZGRmMDA4MGFiNmNjOTk5NTgyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MjA6MDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwOS8yNV0gUXVvdGUgZnJvbSBidWcgMTQ0MyB3aGljaCBleHBsYWlucyB3aGF0IHRoZSBwYXRjaCBkb2VzCitTdWJqZWN0OiBbUEFUQ0ggMDkvMjddIFF1b3RlIGZyb20gYnVnIDE0NDMgd2hpY2ggZXhwbGFpbnMgd2hhdCB0aGUgcGF0Y2ggZG9lcwogIDoKIAogICBXZSBidWlsZCBzb21lIHJhbmRvbSBwcm9ncmFtIGFuZCBsaW5rIGl0IHdpdGggLWx1c3QuICBXaGVuIHdlIHJ1biBpdCwKQEAgLTQ1LDEwICs0NSwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vZGwtbWFjaGluZS5oIGIvc3lzZGVwcy9hcm0vZGwtbWFjaGluZS5oCi1pbmRleCA3MDUzZWFkMTZlLi4wYjFlMTcxNmIwIDEwMDY0NAoraW5kZXggOGEwMGVhYjVlMy4uNjIzZWRjYjFiZCAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaAogKysrIGIvc3lzZGVwcy9hcm0vZGwtbWFjaGluZS5oCi1AQCAtNTAwLDcgKzUwMCw3IEBAIGVsZl9tYWNoaW5lX3JlbCAoc3RydWN0IGxpbmtfbWFwICptYXAsIGNvbnN0IEVsZjMyX1JlbCAqcmVsb2MsCitAQCAtNTEwLDcgKzUxMCw3IEBAIGVsZl9tYWNoaW5lX3JlbCAoc3RydWN0IGxpbmtfbWFwICptYXAsIGNvbnN0IEVsZjMyX1JlbCAqcmVsb2MsCiAgCiAgCWNhc2UgUl9BUk1fVExTX0RUUE9GRjMyOgogIAkgIGlmIChzeW0gIT0gTlVMTCkKQEAgLTU4LDUgKzU4LDUgQEAKICAKICAJY2FzZSBSX0FSTV9UTFNfVFBPRkYzMjoKIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTAtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMC1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaAppbmRleCA3Mjc1YzNlLi4xNzUxMzE4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMC1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMC1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gMWE2ZTBmNGVlODU4NGIwNDIyNjE1NmRmMWEzZGUzZTQ2N2YwZWY2ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNzJlYTU0MTA5MDlhZWY2YjZhZWU3MGU3ZjlhODhkNTM0NTgzYWEwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFRpbmcgTGl1IDxiMjg0OTVAZnJlZXNjYWxlLmNvbT4KIERhdGU6IFdlZCwgMTkgRGVjIDIwMTIgMDQ6Mzk6NTcgLTA2MDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8yNV0gZWdsaWJjOiBydW4gbGlibS1lcnItdGFiLnBsIHdpdGggc3BlY2lmaWMgZGlycyBpbiAke1N9CitTdWJqZWN0OiBbUEFUQ0ggMTAvMjddIGVnbGliYzogcnVuIGxpYm0tZXJyLXRhYi5wbCB3aXRoIHNwZWNpZmljIGRpcnMgaW4gJHtTfQogCiBsaWJtLWVyci10YWIucGwgd2lsbCBwYXJzZSBhbGwgdGhlIGZpbGVzIG5hbWVkICJsaWJtLXRlc3QtdWxwcyIKIGluIHRoZSBnaXZlbiBkaXIgcmVjdXJzaXZlbHkuIFRvIGF2b2lkIHBhcnNpbmcgdGhlIG9uZSBpbgpAQCAtMTgsMTAgKzE4LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvbWFudWFsL01ha2VmaWxlIGIvbWFudWFsL01ha2VmaWxlCi1pbmRleCA0ZWQ2M2E4ZWYzLi5lODk5MTllYjE5IDEwMDY0NAoraW5kZXggYzI3NTY2NDBhNy4uMWI1YmIxNmE5NiAxMDA2NDQKIC0tLSBhL21hbnVhbC9NYWtlZmlsZQogKysrIGIvbWFudWFsL01ha2VmaWxlCi1AQCAtMTA1LDcgKzEwNSw4IEBAICQob2JqcGZ4KWxpYm0tZXJyLnRleGk6ICQob2JqcGZ4KXN0YW1wLWxpYm0tZXJyCitAQCAtMTAyLDcgKzEwMiw4IEBAICQob2JqcGZ4KWxpYm0tZXJyLnRleGk6ICQob2JqcGZ4KXN0YW1wLWxpYm0tZXJyCiAgJChvYmpwZngpc3RhbXAtbGlibS1lcnI6IGxpYm0tZXJyLXRhYi5wbCAkKHdpbGRjYXJkICQoZm9yZWFjaCBkaXIsJChzeXNkaXJzKSxcCiAgCQkJCQkJICAgICAkKGRpcikvbGlibS10ZXN0LXVscHMpKQogIAlwd2Q9YHB3ZGA7IFwKQEAgLTMyLDUgKzMyLDUgQEAKICAJdG91Y2ggJEAKICAKIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDExLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKaW5kZXggODRmMmNhNS4uMWU3MGIyYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA5YjJhZjZjYmY2OGQzMzUzZDcyNTE5ZTdmNmM0NmJlY2I3YmQxZDBmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4YWU5OThhMTBiMjQ1NDVlMGMxMmYxZjNkOGJlOTdiMTkxMTc4MjA0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MjQ6NDYgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMS8yNV0gX19pZWVlNzU0X3NxcnR7LGZ9IGFyZSBub3cgaW5saW5lIGZ1bmN0aW9ucyBhbmQgY2FsbAorU3ViamVjdDogW1BBVENIIDExLzI3XSBfX2llZWU3NTRfc3FydHssZn0gYXJlIG5vdyBpbmxpbmUgZnVuY3Rpb25zIGFuZCBjYWxsCiAgb3V0IF9fc2xvdyB2ZXJzaW9ucwogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKQEAgLTU3LDUgKzU3LDUgQEAKICAjZW5kaWYKICB7CiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEyLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMi1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoCmluZGV4IDJiZjZiMjMuLmMzNWI3NTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEyLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTItc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZmZkM2M1YTA0ZDhmMmYyNmZlYTcxZmVkNGNlNDFlODhiNmY1MTA4NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNGY5ZjM5NzYxOTA5ZTY3YmQ2ZDI5Yjk3MGI3MTY1ODYzZTMzZTU2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjI3OjEwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTIvMjVdIHN5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYzogaGFuZGxlIGNvcnJlY3RseQorU3ViamVjdDogW1BBVENIIDEyLzI3XSBzeXNkZXBzL2dudS9jb25maWd1cmUuYWM6IGhhbmRsZSBjb3JyZWN0bHkKICAkbGliY19jdl9yb290c2JpbmRpcgogCiBVcHN0cmVhbS1TdGF0dXM6UGVuZGluZwpAQCAtMTQsNyArMTQsNyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9nbnUvY29uZmlndXJlIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlCi1pbmRleCA3MTI0M2FkMGM2Li5mNTc4MTg3NTc2IDEwMDY0NAoraW5kZXggYzE1ZDEwODdlOC4uMzdjYzk4M2YyYSAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZQogKysrIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlCiBAQCAtMzIsNiArMzIsNiBAQCBjYXNlICIkcHJlZml4IiBpbgpAQCAtMzgsNSArMzgsNSBAQAogICAgOzsKICBlc2FjCiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEzLUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTMtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2gKaW5kZXggMDk5ZmU1MC4uNjJjNjUyNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTMtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTMtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDA0OWNjZTgyZjM1ZTBkODY0ZDk4MDc1YjgzODg4ZGJiYTRkNjhhZmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGJiYTdhNjQ3YjYzNjYxOGQ1ZmQwODNlOTA0Zjk5NWY3NzM2YjkxNjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyODo0MSArMDAwMAotU3ViamVjdDogW1BBVENIIDEzLzI1XSBBZGQgdW51c2VkIGF0dHJpYnV0ZQorU3ViamVjdDogW1BBVENIIDEzLzI3XSBBZGQgdW51c2VkIGF0dHJpYnV0ZQogCiBIZWxwcyBpbiBhdm9pZGluZyBnY2Mgd2FybmluZyB3aGVuIGhlYWRlciBpcyBpcyBpbmNsdWRlZCBpbgogYSBzb3VyY2UgZmlsZSB3aGljaCBkb2VzIG5vdCB1c2UgYm90aCBmdW5jdGlvbnMKQEAgLTE3LDcgKzE3LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2ljb252L2djb252X2NoYXJzZXQuaCBiL2ljb252L2djb252X2NoYXJzZXQuaAotaW5kZXggMThkOGJkNmFlNy4uZWI3MjlkYTVkMyAxMDA2NDQKK2luZGV4IDEyM2UyYTYyY2UuLjYzY2M4M2VjODQgMTAwNjQ0CiAtLS0gYS9pY29udi9nY29udl9jaGFyc2V0LmgKICsrKyBiL2ljb252L2djb252X2NoYXJzZXQuaAogQEAgLTIxLDcgKzIxLDcgQEAKQEAgLTMwLDUgKzMwLDUgQEAKICB7CiAgICBpbnQgc2xhc2hfY291bnQgPSAwOwogLS0gCi0yLjEzLjIKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNC15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE0LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoCmluZGV4IGRkYzcwZTAuLjY2OTExMjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE0LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE0LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAzYjkwNGJlZTgxYTFjZmU4MWUzZjQzN2I1ZjMyOTZlZmQ1NGE1MWFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA2MmY0NGNlM2RkMDFhMjU3Y2Y2NzExNmUzNTU0OTJjYjE2NTlhOTE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MzE6MDYgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxNC8yNV0gJ3llcycgd2l0aGluIHRoZSBwYXRoIHNldHMgd3JvbmcgY29uZmlnIHZhcmlhYmxlcworU3ViamVjdDogW1BBVENIIDE0LzI3XSAneWVzJyB3aXRoaW4gdGhlIHBhdGggc2V0cyB3cm9uZyBjb25maWcgdmFyaWFibGVzCiAKIEl0IHNlZW1zIHRoYXQgdGhlICdBQ19FR1JFUF9DUFAoeWVzLi4uJyBleGFtcGxlIGlzIHF1aXRlIHBvcHVsYXIKIGJ1dCBiZWluZyBzdWNoIGEgc2hvcnQgd29yZCB0byBncmVwIGl0IGlzIGxpa2VseSB0byBwcm9kdWNlCkBAIC0xNjUsNyArMTY1LDcgQEAKICAgIF0sIGxpYmNfY3ZfbmlvczJfYmU9eWVzLCBsaWJjX2N2X25pb3MyX2JlPW5vKV0pCiAgaWYgdGVzdCAkbGliY19jdl9uaW9zMl9iZSA9IHllczsgdGhlbgogZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUKLWluZGV4IGE1NTEzZmFkNDguLjI4M2IyOTNmZjMgMTAwNjQ0CitpbmRleCAxZWU3ZjQxYTM2Li43N2UzOGJlYmRlIDEwMDY0NAogLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUKICsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlCiBAQCAtNDE0LDExICs0MTQsMTEgQEAgZWxzZQpAQCAtMTk5LDcgKzE5OSw3IEBACiAgCiAgbGliY19taXBzX25hbj0KIGRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKLWluZGV4IDRlN2ZjZjFkOTcuLjQ0YTljYjM3OTEgMTAwNjQ0CitpbmRleCBhZTdmMjU0ZGE0Li44NzQ1MTkwMDBiIDEwMDY0NAogLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlCiArKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKIEBAIC0xNTUsMTIgKzE1NSwxMiBAQCBlbHNlCkBAIC0yNTksNSArMjU5LDUgQEAKICAgICAgXSwgbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGY9eWVzLCBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj1ubyldKQogICAgaWYgdGVzdCAkbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGYgPSBubzsgdGhlbgogLS0gCi0yLjEzLjIKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNS10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTUtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaAppbmRleCBiNWZlZmZhLi42NmJmNGZkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNS10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGI4Y2I4Y2IyNDJjYjc1MWQ4ODhmZWIxYWRhNWM0ZDBmMDVjYmMxZDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGFjMjQwZmIwMWY2NDcwYWMyMDc5NjhhZGZiZTIwY2NjOTNiMTZmOGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDozMzowMyArMDAwMAotU3ViamVjdDogW1BBVENIIDE1LzI1XSB0aW1lem9uZTogcmUtd3JpdHRlbiB0enNlbGVjdCBhcyBwb3NpeCBzaAorU3ViamVjdDogW1BBVENIIDE1LzI3XSB0aW1lem9uZTogcmUtd3JpdHRlbiB0enNlbGVjdCBhcyBwb3NpeCBzaAogCiBUbyBhdm9pZCB0aGUgYmFzaCBkZXBlbmRlbmN5LgogCkBAIC0xNSw3ICsxNSw3IEBACiAgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS90aW1lem9uZS9NYWtlZmlsZSBiL3RpbWV6b25lL01ha2VmaWxlCi1pbmRleCBkNmNjN2JhMzU3Li5lNGVhZDZlMWE3IDEwMDY0NAoraW5kZXggMDE5NGFiYTRhMS4uNThlNTQwNWEwNSAxMDA2NDQKIC0tLSBhL3RpbWV6b25lL01ha2VmaWxlCiArKysgYi90aW1lem9uZS9NYWtlZmlsZQogQEAgLTEyMiw3ICsxMjIsNyBAQCAkKHRlc3RkYXRhKS9YVCU6IHRlc3RkYXRhL1hUJQpAQCAtNDEsNSArNDEsNSBAQAogICMgT3V0cHV0IG9uZSBhcmd1bWVudCBhcy1pcyB0byBzdGFuZGFyZCBvdXRwdXQuCiAgIyBTYWZlciB0aGFuICdlY2hvJywgd2hpY2ggY2FuIG1pc2hhbmRsZSAnXCcgb3IgbGVhZGluZyAnLScuCiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE2LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNi1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoCmluZGV4IDFkOTk4M2IuLjBiMWVlOTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE2LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTYtUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNjlkMzc4MDAxYWRmZTlhMzU5ZDJmNGIwNjljMWVkMmQzNmRlNDQ4MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNzkwYjEzM2ZmMmJjNWI3N2VkODUzM2I4OTk5YWJjNjVlZDBkYTAyYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE0OjMzOjAyIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTYvMjVdIFJlbW92ZSBiYXNoIGRlcGVuZGVuY3kgZm9yIG5zY2QgaW5pdCBzY3JpcHQKK1N1YmplY3Q6IFtQQVRDSCAxNi8yN10gUmVtb3ZlIGJhc2ggZGVwZW5kZW5jeSBmb3IgbnNjZCBpbml0IHNjcmlwdAogCiBUaGUgbnNjZCBpbml0IHNjcmlwdCB1c2VzICMhIC9iaW4vYmFzaCBidXQgb25seSByZWFsbHkgdXNlcyBvbmUgYmFzaGlzbQogKHRyYW5zbGF0ZWQgc3RyaW5ncyksIHNvIHJlbW92ZSB0aGVtIGFuZCBzd2l0Y2ggdGhlIHNoZWxsIHRvICMhL2Jpbi9zaC4KQEAgLTcxLDUgKzcxLDUgQEAKICAJOzsKICBlc2FjCiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE3LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNy1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoCmluZGV4IDNlMzlkNzQuLmZkODIxMzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE3LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTctZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gY2RjODhkZmZhMjI2ODE1ZTNhMjE4NjA0NjU1NDU5ZTMzZGM4NjQ4MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gODk3NDMwYmJiNjVhMGYyMjI4NGQ3OTU3MjA2YjVmZDRlZmQ2NjA3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjQyOjU4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTcvMjVdIGVnbGliYzogQ3Jvc3MgYnVpbGRpbmcgYW5kIHRlc3RpbmcgaW5zdHJ1Y3Rpb25zCitTdWJqZWN0OiBbUEFUQ0ggMTcvMjddIGVnbGliYzogQ3Jvc3MgYnVpbGRpbmcgYW5kIHRlc3RpbmcgaW5zdHJ1Y3Rpb25zCiAKIFBvcnRlZCBmcm9tIGVnbGliYwogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCkBAIC02MTUsNSArNjE1LDUgQEAKICsgIHNpbXBseSBwbGFjZSBjb3BpZXMgb2YgdGhlc2UgbGlicmFyaWVzIGluIHRoZSB0b3AgR0xJQkMgYnVpbGQKICsgIGRpcmVjdG9yeS4KIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTgtZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE4LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2gKaW5kZXggMDJmMzVmNC4uODBkNTQ3YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTgtZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOC1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAxMTYxY2QxYzY4MzU0N2QyOWEwMzYyNmQ5ZDdkZTdmOWNjMDNiNzRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBmY2ZhMTliNjllODc0OTQ3NzAyMjE2MWE4MDhhMjAxODA3ZWY3MmVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NDk6MjggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxOC8yNV0gZWdsaWJjOiBIZWxwIGJvb3RzdHJhcCBjcm9zcyB0b29sY2hhaW4KK1N1YmplY3Q6IFtQQVRDSCAxOC8yN10gZWdsaWJjOiBIZWxwIGJvb3RzdHJhcCBjcm9zcyB0b29sY2hhaW4KIAogVGFrZW4gZnJvbSBFR0xJQkMsIHIxNDg0ICsgcjE1MjUKIApAQCAtMjksNyArMjksNyBAQAogIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCAzZTBhZTZmNDNiLi4yNGRjNjZkMTdjIDEwMDY0NAoraW5kZXggYmVhNGUyN2Y4ZC4uOGM4M2NmYWRjNiAxMDA2NDQKIC0tLSBhL01ha2VmaWxlCiArKysgYi9NYWtlZmlsZQogQEAgLTcwLDkgKzcwLDE4IEBAIHN1YmRpci1kaXJzID0gaW5jbHVkZQpAQCAtOTYsNSArOTYsNSBAQAogKyAgIEVHTElCQyBzdWJkaXIgJ3N0dWJzJyBtYWtlIHRhcmdldHMsIG9uIGV2ZXJ5IC5vIGZpbGUgaW4gRUdMSUJDLCBidXQKICsgICBhbiBlbXB0eSBzdHVicy5oIGxpa2UgdGhpcyB3aWxsIGRvIGZpbmUgZm9yIEdDQy4gICovCiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE5LWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOS1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoCmluZGV4IGFkYjI4Y2YuLjE3YmZlNGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE5LWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gMTczMmM3ZjI1NDUzYzg3OWMxNzcwMTgzOWVmMzQ4NzZhNzM1NzAwOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYzZmMmRiMGQ3YzVjNjViZmExOTc2NmEwZTFjZTgyMTAxMTFmOWM3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE1OjE1OjA5IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTkvMjVdIGVnbGliYzogQ2xlYXIgY2FjaGUgbGluZXMgb24gcHBjOHh4CitTdWJqZWN0OiBbUEFUQ0ggMTkvMjddIGVnbGliYzogQ2xlYXIgY2FjaGUgbGluZXMgb24gcHBjOHh4CiAKIDIwMDctMDYtMTMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CiAgICAgICAgICAgICBNYXJrIFNoaW53ZWxsICA8c2hpbndlbGxAY29kZXNvdXJjZXJ5LmNvbT4KQEAgLTIxLDcgKzIxLDcgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYwotaW5kZXggMjNmNWQ1ZDM4OC4uN2U0NTI4OGRiNyAxMDA2NDQKK2luZGV4IDc4MDUxYmM3YmMuLmUyNGY0NDIzMjAgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCiArKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCiBAQCAtMjQsOSArMjQsMjEgQEAgaW50IF9fY2FjaGVfbGluZV9zaXplIGF0dHJpYnV0ZV9oaWRkZW47CkBAIC00OCw3ICs0OCw3IEBACiAgCWJyZWFrOwogIAogZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKLWluZGV4IGFkMDM2YzFlNGIuLmFmZWU1NmEzZGEgMTAwNjQ0CitpbmRleCBmMmFkMGMzNTVkLi4zZTY3NzM3OTVlIDEwMDY0NAogLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKICsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jCiBAQCAtNzMsMTEgKzczLDI1IEBAIF9fbGliY19zdGFydF9tYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YsCkBAIC03OSw1ICs3OSw1IEBACiAgCWJyZWFrOwogICNpZm5kZWYgU0hBUkVECiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaAppbmRleCBmODM1ZDg3Li4wOWY3NjcwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMC1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjAtZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAxMDhiM2ExZGY5NmE4NTUyMmM1MmEwZGVjMDMyZmMyYzEwNmY1ZjJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1NzcwODUwMTZiYjkyNmE2ODdhYmVjMTQ1NTU3ZmU4Y2I4ZjVhZjBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NTU6NTMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyMC8yNV0gZWdsaWJjOiBSZXNvbHZlIF9fZnBzY3JfdmFsdWVzIG9uIFNINAorU3ViamVjdDogW1BBVENIIDIwLzI3XSBlZ2xpYmM6IFJlc29sdmUgX19mcHNjcl92YWx1ZXMgb24gU0g0CiAKIDIwMTAtMDktMjkgIE5vYnVoaXJvIEl3YW1hdHN1ICA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CiAgICAgICAgICAgICBBbmRyZXcgU3R1YmJzICA8YW1zQGNvZGVzb3VyY2VyeS5jb20+CkBAIC0zMyw3ICszMyw3IEBACiAgICAgICMgYSoKICAgICAgYWxwaGFzb3J0NjQ7CiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUwotaW5kZXggNWYxMWJjNzM3Yi4uMmZkMjE3YjAwYiAxMDA2NDQKK2luZGV4IGM0ZTI4ZmZiOTguLjY0OGJhZTAzZDUgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUwogKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMKIEBAIC0zMCwzICszMCwxNCBAQCBFTlRSWSAoX19zeXNjYWxsX2Vycm9yKQpAQCAtNTIsNSArNTIsNSBAQAogK3dlYWtfYWxpYXMgKF9fX2Zwc2NyX3ZhbHVlcywgX19mcHNjcl92YWx1ZXMpCiArCiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIxLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIxLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaAppbmRleCA2ZWUzOTdiLi41MzBmNGUxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMS1lZ2xpYmMtSW5zdGFsbC1QSUMtYXJjaGl2ZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjEtZWdsaWJjLUluc3RhbGwtUElDLWFyY2hpdmVzLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAzMzkyZWU4M2IwMTMyYzA4OWRmZmIxZTk4OTJiNGIyNTJjZTFlYzBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjMWJlYWI4YTExOTg1Zjk2ZjVlYjY0NGU3MTAzZDM0M2I3MDVhZmM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6NTc6MDEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyMS8yNV0gZWdsaWJjOiBJbnN0YWxsIFBJQyBhcmNoaXZlcworU3ViamVjdDogW1BBVENIIDIxLzI3XSBlZ2xpYmM6IEluc3RhbGwgUElDIGFyY2hpdmVzCiAKIEZvcndhcmQgcG9ydCBmcm9tIGVnbGliYwogCkBAIC0yOSwxMCArMjksMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL01ha2VydWxlcyBiL01ha2VydWxlcwotaW5kZXggOWJiNzA3YzE2OC4uNzRjYmVmYjliYSAxMDA2NDQKK2luZGV4IGVmNmFiZWFjNmQuLmVlYWE2NjdmNDkgMTAwNjQ0CiAtLS0gYS9NYWtlcnVsZXMKICsrKyBiL01ha2VydWxlcwotQEAgLTc3NSw2ICs3NzUsOSBAQCBpZmVxICgkKGJ1aWxkLXNoYXJlZCkseWVzKQorQEAgLTc3OCw2ICs3NzgsOSBAQCBpZmVxICgkKGJ1aWxkLXNoYXJlZCkseWVzKQogICQoY29tbW9uLW9ianBmeClsaWJjLnNvOiAkKGNvbW1vbi1vYmpwZngpbGliYy5tYXAKICBlbmRpZgogIGNvbW1vbi1nZW5lcmF0ZWQgKz0gbGliYy5zbyBsaWJjX3BpYy5vcwpAQCAtNDIsNyArNDIsNyBAQAogIGlmZGVmIGxpYmMuc28tdmVyc2lvbgogICQoY29tbW9uLW9ianBmeClsaWJjLnNvJChsaWJjLnNvLXZlcnNpb24pOiAkKGNvbW1vbi1vYmpwZngpbGliYy5zbwogIAkkKG1ha2UtbGluaykKLUBAIC0xMDI2LDYgKzEwMjksNyBAQCBlbmRpZgorQEAgLTEwMjksNiArMTAzMiw3IEBAIGVuZGlmCiAgCiAgaW5zdGFsbDogY2hlY2staW5zdGFsbC1zdXBwb3J0ZWQKICAKQEAgLTUwLDcgKzUwLDcgQEAKICBpbnN0YWxsOiAkKGluc3RhbGxlZC1saWJjcykKICAkKGluc3RhbGxlZC1saWJjcyk6ICQoaW5zdF9saWJkaXIpL2xpYiQobGlicHJlZml4KSU6IGxpYiAkKCtmb3JjZSkKICAJJChtYWtlLXRhcmdldC1kaXJlY3RvcnkpCi1AQCAtMTA1NCw2ICsxMDU4LDIyIEBAIHZlcnNpb25lZCA6PSAkKHN0cmlwICQoZm9yZWFjaCBzbywkKGluc3RhbGwtbGliLnNvKSxcCitAQCAtMTA1Nyw2ICsxMDYxLDIyIEBAIHZlcnNpb25lZCA6PSAkKHN0cmlwICQoZm9yZWFjaCBzbywkKGluc3RhbGwtbGliLnNvKSxcCiAgaW5zdGFsbC1saWIuc28tdmVyc2lvbmVkIDo9ICQoZmlsdGVyICQodmVyc2lvbmVkKSwgJChpbnN0YWxsLWxpYi5zbykpCiAgaW5zdGFsbC1saWIuc28tdW52ZXJzaW9uZWQgOj0gJChmaWx0ZXItb3V0ICQodmVyc2lvbmVkKSwgJChpbnN0YWxsLWxpYi5zbykpCiAgCkBAIC03Myw3ICs3Myw3IEBACiAgIyBGb3IgdmVyc2lvbmVkIGxpYnJhcmllcywgd2UgaW5zdGFsbCB0aHJlZSBmaWxlczoKICAjCSQoaW5zdF9saWJkaXIpL2xpYmZvby5zbwktLSBmb3IgbGlua2luZywgc3ltbGluayBvciBsZCBzY3JpcHQKICAjCSQoaW5zdF9zbGliZGlyKS9saWJmb28uc28uTk4JLS0gZm9yIGxvYWRpbmcgYnkgU09OQU1FLCBzeW1saW5rCi1AQCAtMTI5OCw5ICsxMzE4LDIyIEBAICQoYWRkcHJlZml4ICQoaW5zdF9pbmNsdWRlZGlyKS8sJChoZWFkZXJzLW5vbmgpKTogJChpbnN0X2luY2x1ZGVkaXIpLyU6IFwKK0BAIC0xMzExLDkgKzEzMzEsMjIgQEAgJChhZGRwcmVmaXggJChpbnN0X2luY2x1ZGVkaXIpLywkKGhlYWRlcnMtbm9uaCkpOiAkKGluc3RfaW5jbHVkZWRpcikvJTogXAogIGVuZGlmCSMgaGVhZGVycy1ub25oCiAgZW5kaWYJIyBoZWFkZXJzCiAgCkBAIC05Nyw3ICs5Nyw3IEBACiAgaW5zdGFsbC1iaW4tbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9iaW5kaXIpLywkKGluc3RhbGwtYmluKSkKICBpbnN0YWxsLWJpbi1zY3JpcHQtbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9iaW5kaXIpLywkKGluc3RhbGwtYmluLXNjcmlwdCkpCiAgaW5zdGFsbC1yb290c2Jpbi1ub3N1YmRpcjogXAotQEAgLTEzMTMsNiArMTM0NiwxMCBAQCBpbnN0YWxsLWRhdGEtbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9kYXRhZGlyKS8sJChpbnN0YWxsLWRhdGEpKQorQEAgLTEzMjYsNiArMTM1OSwxMCBAQCBpbnN0YWxsLWRhdGEtbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9kYXRhZGlyKS8sJChpbnN0YWxsLWRhdGEpKQogIGluc3RhbGwtaGVhZGVycy1ub3N1YmRpcjogJChhZGRwcmVmaXggJChpbnN0X2luY2x1ZGVkaXIpLywkKGhlYWRlcnMpKQogIGluc3RhbGwtb3RoZXJzLW5vc3ViZGlyOiAkKGluc3RhbGwtb3RoZXJzKQogIGluc3RhbGwtb3RoZXJzLXByb2dyYW1zLW5vc3ViZGlyOiAkKGluc3RhbGwtb3RoZXJzLXByb2dyYW1zKQpAQCAtMTA4LDcgKzEwOCw3IEBACiAgCiAgIyBXZSBuZWVkIGFsbCB0aGUgYC1ub3N1YmRpcicgdGFyZ2V0cyBzbyB0aGF0IGBpbnN0YWxsJyBpbiB0aGUgcGFyZW50CiAgIyBkb2Vzbid0IGRlcGVuZCBvbiBzZXZlcmFsIHRoaW5ncyB3aGljaCBlYWNoIGl0ZXJhdGUgb3ZlciB0aGUgc3ViZGlycy4KLUBAIC0xMzIyLDcgKzEzNTksOCBAQCBpbnN0YWxsLSU6OiBpbnN0YWxsLSUtbm9zdWJkaXIgOworQEAgLTEzMzUsNyArMTM3Miw4IEBAIGluc3RhbGwtJTo6IGluc3RhbGwtJS1ub3N1YmRpciA7CiAgCiAgLlBIT05ZOiBpbnN0YWxsIGluc3RhbGwtbm8tbGliYy5hLW5vc3ViZGlyCiAgaW5zdGFsbC1uby1saWJjLmEtbm9zdWJkaXI6IGluc3RhbGwtaGVhZGVycy1ub3N1YmRpciBpbnN0YWxsLWRhdGEtbm9zdWJkaXIgXApAQCAtMTE5LDUgKzExOSw1IEBACiAgaW5zdGFsbC1uby1saWJjLmEtbm9zdWJkaXI6IGluc3RhbGwtYmluLW5vc3ViZGlyIGluc3RhbGwtYmluLXNjcmlwdC1ub3N1YmRpciBcCiAgCQkJICAgIGluc3RhbGwtcm9vdHNiaW4tbm9zdWJkaXIgaW5zdGFsbC1zYmluLW5vc3ViZGlyIFwKIC0tIAotMi4xMy4yCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjItZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjItZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoCmluZGV4IDJhOGEyMGEuLmE2MjljZTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIyLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGQ5NzUzM2RjMjAxY2ZkODYzNzY1YjFhNjdhMjdmZGUzZTI2MjJkYTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGUwMTlmZTZhMmI0MTBkYjYwNDNlMjE4MDNmNDk3YjVjYmRkOTBhODMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMTozMzo0OSArMDAwMAotU3ViamVjdDogW1BBVENIIDIyLzI1XSBlZ2xpYmM6IEZvcndhcmQgcG9ydCBjcm9zcyBsb2NhbGUgZ2VuZXJhdGlvbiBzdXBwb3J0CitTdWJqZWN0OiBbUEFUQ0ggMjIvMjddIGVnbGliYzogRm9yd2FyZCBwb3J0IGNyb3NzIGxvY2FsZSBnZW5lcmF0aW9uIHN1cHBvcnQKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKQEAgLTIzLDcgKzIzLDcgQEAKICBjcmVhdGUgbW9kZSAxMDA2NDQgbG9jYWxlL2NhdG5hbWVzLmMKIAogZGlmZiAtLWdpdCBhL2xvY2FsZS9NYWtlZmlsZSBiL2xvY2FsZS9NYWtlZmlsZQotaW5kZXggOThlZTc2MjcyZC4uYmMzYWZiMjI0OCAxMDA2NDQKK2luZGV4IGZkOTk3MjI3OWIuLjE3NmIzOTQ2ZGUgMTAwNjQ0CiAtLS0gYS9sb2NhbGUvTWFrZWZpbGUKICsrKyBiL2xvY2FsZS9NYWtlZmlsZQogQEAgLTI2LDcgKzI2LDggQEAgaGVhZGVycwkJPSBsYW5naW5mby5oIGxvY2FsZS5oIGJpdHMvbG9jYWxlLmggXApAQCAtOTEsNyArOTEsNyBAQAogKyAgICBbTENfQUxMXSA9IHNpemVvZiAoIkxDX0FMTCIpIC0gMQogKyAgfTsKIGRpZmYgLS1naXQgYS9sb2NhbGUvbG9jYWxlaW5mby5oIGIvbG9jYWxlL2xvY2FsZWluZm8uaAotaW5kZXggNGUxYzhjNTY4YS4uZjdlZDk0NmYxYyAxMDA2NDQKK2luZGV4IDY4ODIyYTYzMTkuLmZhMzYxMjM3NzYgMTAwNjQ0CiAtLS0gYS9sb2NhbGUvbG9jYWxlaW5mby5oCiArKysgYi9sb2NhbGUvbG9jYWxlaW5mby5oCiBAQCAtMjI0LDcgKzIyNCw3IEBAIF9fbGliY190c2RfZGVmaW5lIChleHRlcm4sIGxvY2FsZV90LCBMT0NBTEUpCkBAIC0xMDQsMTEgKzEwNCwxMSBAQAogICMgZGVmaW5lIE5MX0NVUlJFTlRfSU5ESVJFQ1QJMQogICNlbmRpZgogZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jIGIvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKLWluZGV4IGU1NWFiODZlMjguLjBmODdlNmRkMjggMTAwNjQ0CitpbmRleCAzNGE4ZDMyYzkyLi5jYmI5NDM2Y2QxIDEwMDY0NAogLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKICsrKyBiL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jCi1AQCAtMTksNyArMTksOSBAQAotICNpbmNsdWRlIDxlcnJvci5oPgorQEAgLTE4LDcgKzE4LDkgQEAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KICAjaW5jbHVkZSA8ZmNudGwuaD4KICAjaW5jbHVkZSA8bGliaW50bC5oPgogKyNpZm5kZWYgTk9fVU5DT01QUkVTUwpAQCAtMTE3LDcgKzExNyw3IEBACiAgI2luY2x1ZGUgPHN0ZGlvLmg+CiAgI2luY2x1ZGUgPHN0ZGxpYi5oPgogICNpbmNsdWRlIDxzdHJpbmcuaD4KLUBAIC0xNTYsNiArMTU4LDcgQEAgY2hhcm1hcF9jbG9zZWRpciAoQ0hBUk1BUF9ESVIgKmNkaXIpCitAQCAtMTU0LDYgKzE1Niw3IEBAIGNoYXJtYXBfY2xvc2VkaXIgKENIQVJNQVBfRElSICpjZGlyKQogICAgcmV0dXJuIGNsb3NlZGlyIChkaXIpOwogIH0KICAKQEAgLTEyNSw3ICsxMjUsNyBAQAogIC8qIENyZWF0ZXMgYSBzdWJwcm9jZXNzIGRlY29tcHJlc3NpbmcgdGhlIGdpdmVuIHBhdGhuYW1lLCBhbmQgcmV0dXJucwogICAgIGEgc3RyZWFtIHJlYWRpbmcgaXRzIG91dHB1dCAodGhlIGRlY29tcHJlc3NlZCBkYXRhKS4gICovCiAgc3RhdGljCi1AQCAtMjA0LDYgKzIwNyw3IEBAIGZvcGVuX3VuY29tcHJlc3NlZCAoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IGNoYXIgKmNvbXByZXNzb3IpCitAQCAtMjAyLDYgKzIwNSw3IEBAIGZvcGVuX3VuY29tcHJlc3NlZCAoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IGNoYXIgKmNvbXByZXNzb3IpCiAgICAgIH0KICAgIHJldHVybiBOVUxMOwogIH0KQEAgLTEzMyw3ICsxMzMsNyBAQAogIAogIC8qIE9wZW5zIGEgY2hhcm1hcCBmb3IgcmVhZGluZywgZ2l2ZW4gaXRzIG5hbWUgKG5vdCBhbiBhbGlhcyBuYW1lKS4gICovCiAgRklMRSAqCi1AQCAtMjI2LDYgKzIzMCw3IEBAIGNoYXJtYXBfb3BlbiAoY29uc3QgY2hhciAqZGlyZWN0b3J5LCBjb25zdCBjaGFyICpuYW1lKQorQEAgLTIyNCw2ICsyMjgsNyBAQCBjaGFybWFwX29wZW4gKGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgY29uc3QgY2hhciAqbmFtZSkKICAgIGlmIChzdHJlYW0gIT0gTlVMTCkKICAgICAgcmV0dXJuIHN0cmVhbTsKICAKQEAgLTE0MSw3ICsxNDEsNyBAQAogICAgbWVtY3B5IChwLCAiLmd6IiwgNCk7CiAgICBzdHJlYW0gPSBmb3Blbl91bmNvbXByZXNzZWQgKHBhdGhuYW1lLCAiZ3ppcCIpOwogICAgaWYgKHN0cmVhbSAhPSBOVUxMKQotQEAgLTIzNSw2ICsyNDAsNyBAQCBjaGFybWFwX29wZW4gKGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgY29uc3QgY2hhciAqbmFtZSkKK0BAIC0yMzMsNiArMjM4LDcgQEAgY2hhcm1hcF9vcGVuIChjb25zdCBjaGFyICpkaXJlY3RvcnksIGNvbnN0IGNoYXIgKm5hbWUpCiAgICBzdHJlYW0gPSBmb3Blbl91bmNvbXByZXNzZWQgKHBhdGhuYW1lLCAiYnppcDIiKTsKICAgIGlmIChzdHJlYW0gIT0gTlVMTCkKICAgICAgcmV0dXJuIHN0cmVhbTsKQEAgLTE1MCwxMCArMTUwLDEwIEBACiAgICByZXR1cm4gTlVMTDsKICB9CiBkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYyBiL2xvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMKLWluZGV4IGNlYzg0OGNiN2MuLmZjZDc2OGViN2QgMTAwNjQ0CitpbmRleCBkMmVlYmNmZGJiLi5jMzcxOGQ2NTg5IDEwMDY0NAogLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYwogKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYwotQEAgLTM1MCw3ICszNTAsNyBAQCBuZXdfZWxlbWVudCAoc3RydWN0IGxvY2FsZV9jb2xsYXRlX3QgKmNvbGxhdGUsIGNvbnN0IGNoYXIgKm1icywgc2l6ZV90IG1ic2xlbiwKK0BAIC0zNDksNyArMzQ5LDcgQEAgbmV3X2VsZW1lbnQgKHN0cnVjdCBsb2NhbGVfY29sbGF0ZV90ICpjb2xsYXRlLCBjb25zdCBjaGFyICptYnMsIHNpemVfdCBtYnNsZW4sCiAgICAgIH0KICAgIGlmICh3Y3MgIT0gTlVMTCkKICAgICAgewpAQCAtMTYyLDcgKzE2Miw3IEBACiAgICAgICAgdWludDMyX3QgemVybyA9IDA7CiAgICAgICAgLyogSGFuZGxlIDxVMDAwMD4gYXMgYSBzaW5nbGUgY2hhcmFjdGVyLiAgKi8KICAgICAgICBpZiAobndjcyA9PSAwKQotQEAgLTE3NzYsOCArMTc3Niw3IEBAIHN5bWJvbCBgJXMnIGhhcyB0aGUgc2FtZSBlbmNvZGluZyBhcyIpLCAoKmVwdHIpLT5uYW1lKTsKK0BAIC0xNzcyLDggKzE3NzIsNyBAQCBzeW1ib2wgYCVzJyBoYXMgdGhlIHNhbWUgZW5jb2RpbmcgYXMiKSwgKCplcHRyKS0+bmFtZSk7CiAgCiAgCSAgICAgIGlmICgoKmVwdHIpLT5ud2NzID09IHJ1bnAtPm53Y3MpCiAgCQl7CkBAIC0xNzIsNyArMTcyLDcgQEAKICAKICAJCSAgaWYgKGMgPT0gMCkKICAJCSAgICB7Ci1AQCAtMjAxMCw5ICsyMDA5LDkgQEAgYWRkX3RvX3RhYmxld2MgKHVpbnQzMl90IGNoLCBzdHJ1Y3QgZWxlbWVudF90ICpydW5wKQorQEAgLTIwMDAsOSArMTk5OSw5IEBAIGFkZF90b190YWJsZXdjICh1aW50MzJfdCBjaCwgc3RydWN0IGVsZW1lbnRfdCAqcnVucCkKICAJICAgICBvbmUgY29uc2VjdXRpdmUgZW50cnkuICAqLwogIAkgIGlmIChydW5wLT53Y25leHQgIT0gTlVMTAogIAkgICAgICAmJiBydW5wLT5ud2NzID09IHJ1bnAtPndjbmV4dC0+bndjcwpAQCAtMTg1LDcgKzE4NSw3IEBACiAgCSAgICAgICYmIChydW5wLT53Y3NbcnVucC0+bndjcyAtIDFdCiAgCQkgID09IHJ1bnAtPndjbmV4dC0+d2NzW3J1bnAtPm53Y3MgLSAxXSArIDEpKQogIAkgICAgewotQEAgLTIwMzYsOSArMjAzNSw5IEBAIGFkZF90b190YWJsZXdjICh1aW50MzJfdCBjaCwgc3RydWN0IGVsZW1lbnRfdCAqcnVucCkKK0BAIC0yMDI2LDkgKzIwMjUsOSBAQCBhZGRfdG9fdGFibGV3YyAodWludDMyX3QgY2gsIHN0cnVjdCBlbGVtZW50X3QgKnJ1bnApCiAgCQlydW5wID0gcnVucC0+d2NuZXh0OwogIAkgICAgICB3aGlsZSAocnVucC0+d2NuZXh0ICE9IE5VTEwKICAJCSAgICAgJiYgcnVucC0+bndjcyA9PSBydW5wLT53Y25leHQtPm53Y3MKQEAgLTE5OSwxMCArMTk5LDEwIEBACiAgCQkJID09IHJ1bnAtPndjbmV4dC0+d2NzW3J1bnAtPm53Y3MgLSAxXSArIDEpKTsKICAKIGRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYyBiL2xvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jCi1pbmRleCBkZjI2NmMyMGQ2Li4wNWMwMTUyZWM5IDEwMDY0NAoraW5kZXggZjc5MWU2YjdlOS4uZDgwOWQ2ZGI3ZiAxMDA2NDQKIC0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jCiArKysgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYwotQEAgLTkyNiw3ICs5MjYsNyBAQCBjdHlwZV9vdXRwdXQgKHN0cnVjdCBsb2NhbGVkZWZfdCAqbG9jYWxlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAorQEAgLTkxNSw3ICs5MTUsNyBAQCBjdHlwZV9vdXRwdXQgKHN0cnVjdCBsb2NhbGVkZWZfdCAqbG9jYWxlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAogICAgYWxsb2NhdGVfYXJyYXlzIChjdHlwZSwgY2hhcm1hcCwgY3R5cGUtPnJlcGVydG9pcmUpOwogIAogICAgZGVmYXVsdF9taXNzaW5nX2xlbiA9IChjdHlwZS0+ZGVmYXVsdF9taXNzaW5nCkBAIC0yMTEsNyArMjExLDcgQEAKICAJCQkgOiAwKTsKICAKICAgIGluaXRfbG9jYWxlX2RhdGEgKCZmaWxlLCBuZWxlbXMpOwotQEAgLTE5MzcsNyArMTkzNyw3IEBAIHJlYWRfdHJhbnNsaXRfZW50cnkgKHN0cnVjdCBsaW5lcmVhZGVyICpsZGZpbGUsIHN0cnVjdCBsb2NhbGVfY3R5cGVfdCAqY3R5cGUsCitAQCAtMTkyNiw3ICsxOTI2LDcgQEAgcmVhZF90cmFuc2xpdF9lbnRyeSAoc3RydWN0IGxpbmVyZWFkZXIgKmxkZmlsZSwgc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwKICAJICAgIGlnbm9yZSA9IDE7CiAgCSAgZWxzZQogIAkgICAgLyogVGhpcyB2YWx1ZSBpcyB1c2FibGUuICAqLwpAQCAtMjIwLDcgKzIyMCw3IEBACiAgCiAgCSAgZmlyc3QgPSAwOwogIAl9Ci1AQCAtMjQ3MSw4ICsyNDcxLDggQEAgd2l0aCBjaGFyYWN0ZXIgY29kZSByYW5nZSB2YWx1ZXMgb25lIG11c3QgdXNlIHRoZSBhYnNvbHV0ZSBlbGxpcHNpcyBgLi4uJyIpKTsKK0BAIC0yNDYwLDggKzI0NjAsOCBAQCB3aXRoIGNoYXJhY3RlciBjb2RlIHJhbmdlIHZhbHVlcyBvbmUgbXVzdCB1c2UgdGhlIGFic29sdXRlIGVsbGlwc2lzIGAuLi4nIikpOwogIAkgICAgfQogIAogIAloYW5kbGVfdG9rX2RpZ2l0OgpAQCAtMjMxLDcgKzIzMSw3IEBACiAgCSAgaGFuZGxlX2RpZ2l0cyA9IDE7CiAgCSAgZ290byByZWFkX2NoYXJjbGFzczsKICAKLUBAIC0zOTI5LDggKzM5MjksNyBAQCBhbGxvY2F0ZV9hcnJheXMgKHN0cnVjdCBsb2NhbGVfY3R5cGVfdCAqY3R5cGUsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCitAQCAtMzkwMSw4ICszOTAxLDcgQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAogIAogIAkgIHdoaWxlIChpZHggPCBudW1iZXIpCiAgCSAgICB7CkBAIC0yNDEsNyArMjQxLDcgQEAKICAJICAgICAgaWYgKHJlcyA9PSAwKQogIAkJewogIAkJICByZXBsYWNlID0gMTsKLUBAIC0zOTY3LDExICszOTY2LDExIEBAIGFsbG9jYXRlX2FycmF5cyAoc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKK0BAIC0zOTM5LDExICszOTM4LDExIEBAIGFsbG9jYXRlX2FycmF5cyAoc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKICAgICAgICBmb3IgKHNpemVfdCBjbnQgPSAwOyBjbnQgPCBudW1iZXI7ICsrY250KQogIAl7CiAgCSAgc3RydWN0IHRyYW5zbGl0X3RvX3QgKnNydW5wOwpAQCAtMjU1LDcgKzI1NSw3IEBACiAgCSAgICAgIHNydW5wID0gc3J1bnAtPm5leHQ7CiAgCSAgICB9CiAgCSAgLyogUGx1cyBvbmUgZm9yIHRoZSBleHRyYSBOVUwgY2hhcmFjdGVyIG1hcmtpbmcgdGhlIGVuZCBvZgotQEAgLTM5OTUsMTggKzM5OTQsMTggQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAorQEAgLTM5NjcsMTggKzM5NjYsMTggQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAogIAkgIGN0eXBlLT50cmFuc2xpdF9mcm9tX2lkeFtjbnRdID0gZnJvbV9sZW47CiAgCSAgY3R5cGUtPnRyYW5zbGl0X3RvX2lkeFtjbnRdID0gdG9fbGVuOwogIApAQCAtMjgxLDEwICsyODEsMTAgQEAKICAJICAgICAgc3J1bnAgPSBzcnVucC0+bmV4dDsKICAJICAgIH0KIGRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYwotaW5kZXggMzJlOWM0MWUzNS4uNmE2MWZjZWRlYiAxMDA2NDQKK2luZGV4IGE3NTU3OTIzNjMuLmU4YjJmODU1MjIgMTAwNjQ0CiAtLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jCiArKysgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jCi1AQCAtMjE1LDggKzIxNSwxMCBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpKTsKK0BAIC0yMjAsOCArMjIwLDEwIEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIik7CiAgCX0KICAgICAgICBlbHNlCiAgCXsKQEAgLTI5Niw3ICsyOTYsNyBAQAogIAl9CiAgICAgIH0KICAKLUBAIC0yMjYsNyArMjI4LDcgQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKSk7CitAQCAtMjMxLDcgKzIzMyw3IEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIik7CiAgICAgICAgY29uc3QgaW50IGRheXNfcGVyX21vbnRoWzEyXSA9IHsgMzEsIDI5LCAzMSwgMzAsIDMxLCAzMCwKICAJCQkJICAgICAgIDMxLCAzMSwgMzAsIDMxICwzMCwgMzEgfTsKICAgICAgICBzaXplX3QgaWR4OwpAQCAtMzA1LDcgKzMwNSw3IEBACiAgCiAgICAgICAgdGltZS0+ZXJhX2VudHJpZXMgPQogIAkoc3RydWN0IGVyYV9kYXRhICopIHhtYWxsb2MgKHRpbWUtPm51bV9lcmEKLUBAIC00NjQsMTggKzQ2NiwxOCBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpKTsKK0BAIC00NTcsMTggKzQ1OSwxOCBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpOwogIAkgICAgfQogIAogIAkgIC8qIE5vdyBnZW5lcmF0ZSB0aGUgd2lkZSBjaGFyYWN0ZXIgbmFtZSBhbmQgZm9ybWF0LiAgKi8KQEAgLTMzMSw3ICszMzEsNyBAQAogIAkJfQogIAkgICAgICBlbHNlCiAgCQl0aW1lLT5lcmFfZW50cmllc1tpZHhdLnduYW1lID0KLUBAIC01MzQsNyArNTM2LDE2IEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIikpOworQEAgLTUyNyw3ICs1MjksMTYgQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKTsKICAgIGlmICh0aW1lLT5kYXRlX2ZtdCA9PSBOVUxMKQogICAgICB0aW1lLT5kYXRlX2ZtdCA9ICIlYSAlYiAlZSAlSDolTTolUyAlWiAlWSI7CiAgICBpZiAodGltZS0+d2RhdGVfZm10ID09IE5VTEwpCkBAIC0zNTAsNyArMzUwLDcgQEAKICAKICAKIGRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jIGIvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYwotaW5kZXggNTJiMzQwOTYzYS4uMWE4YmNlMTdiNCAxMDA2NDQKK2luZGV4IDM1MjVjOGE0M2QuLmY4YTdmZDljMjQgMTAwNjQ0CiAtLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jCiArKysgYi9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jCiBAQCAtNTk1LDcgKzU5NSw3IEBAIGdldF9zdHJpbmcgKHN0cnVjdCBsaW5lcmVhZGVyICpsciwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKQEAgLTM2MywxOCArMzYzLDE4IEBACiAgICBzaXplX3QgYnVmbWF4ID0gNTY7CiAgCiBkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jCi1pbmRleCA2YWNjMTM0MmM3Li5kZjg3NzQwZjhiIDEwMDY0NAoraW5kZXggZDcxOGQyZTlmNC4uZTBhM2FkNWE4MyAxMDA2NDQKIC0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYwogKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jCi1AQCAtMTA4LDYgKzEwOCw3IEBAIHZvaWQgKCphcmdwX3Byb2dyYW1fdmVyc2lvbl9ob29rKSAoRklMRSAqLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqKSA9IHByaW50X3ZlcnNpb247Ci0gI2RlZmluZSBPUFRfTElTVF9BUkNISVZFIDMwOQotICNkZWZpbmUgT1BUX0xJVFRMRV9FTkRJQU4gNDAwCitAQCAtMTA1LDYgKzEwNSw3IEBAIHZvaWQgKCphcmdwX3Byb2dyYW1fdmVyc2lvbl9ob29rKSAoRklMRSAqLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqKSA9IHByaW50X3ZlcnNpb247CiAgI2RlZmluZSBPUFRfQklHX0VORElBTiA0MDEKLSsjZGVmaW5lIE9QVF9VSU5UMzJfQUxJR04gNDAyCisgI2RlZmluZSBPUFRfTk9fV0FSTiA0MDIKKyAjZGVmaW5lIE9QVF9XQVJOIDQwMworKyNkZWZpbmUgT1BUX1VJTlQzMl9BTElHTiA0MDQKICAKICAvKiBEZWZpbml0aW9ucyBvZiBhcmd1bWVudHMgZm9yIGFyZ3AgZnVuY3Rpb25zLiAgKi8KICBzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdGlvbnNbXSA9Ci1AQCAtMTQzLDYgKzE0NCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJncF9vcHRpb24gb3B0aW9uc1tdID0KK0BAIC0xNDcsNiArMTQ4LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcmdwX29wdGlvbiBvcHRpb25zW10gPQogICAgICBOXygiR2VuZXJhdGUgbGl0dGxlLWVuZGlhbiBvdXRwdXQiKSB9LAogICAgeyAiYmlnLWVuZGlhbiIsIE9QVF9CSUdfRU5ESUFOLCBOVUxMLCAwLAogICAgICBOXygiR2VuZXJhdGUgYmlnLWVuZGlhbiBvdXRwdXQiKSB9LApAQCAtMzgzLDcgKzM4Myw3IEBACiAgICB7IE5VTEwsIDAsIE5VTEwsIDAsIE5VTEwgfQogIH07CiAgCi1AQCAtMjMyLDEyICsyMzUsMTQgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK0BAIC0yMzYsMTIgKzIzOSwxNCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgICAgY3R5cGUgbG9jYWxlLiAgKFAxMDAzLjIgNC4zNS41LjIpICAqLwogICAgc2V0bG9jYWxlIChMQ19DVFlQRSwgIlBPU0lYIik7CiAgCkBAIC0zOTIsMTUgKzM5MiwxNSBAQAogICAgICAgZGVmaW5lcyBlcnJvciBjb2RlIDMgZm9yIHRoaXMgc2l0dWF0aW9uIHNvIEkgdGhpbmsgaXQgbXVzdCBiZQogICAgICAgYSBmYXRhbCBlcnJvciAoc2VlIFAxMDAzLjIgNC4zNS44KS4gICovCiAgICBpZiAoc3lzY29uZiAoX1NDXzJfTE9DQUxFREVGKSA8IDApCi0gICAgIFdJVEhfQ1VSX0xPQ0FMRSAoZXJyb3IgKDMsIDAsIF8oIlwKLSBGQVRBTDogc3lzdGVtIGRvZXMgbm90IGRlZmluZSBgX1BPU0lYMl9MT0NBTEVERUYnIikpKTsKKyAgICAgcmVjb3JkX2Vycm9yICgzLCAwLCBfKCJcCisgRkFUQUw6IHN5c3RlbSBkb2VzIG5vdCBkZWZpbmUgYF9QT1NJWDJfTE9DQUxFREVGJyIpKTsKICsjZW5kaWYKICAKICAgIC8qIFByb2Nlc3MgY2hhcm1hcCBmaWxlLiAgKi8KICAgIGNoYXJtYXAgPSBjaGFybWFwX3JlYWQgKGNoYXJtYXBfZmlsZSwgdmVyYm9zZSwgMSwgYmVfcXVpZXQsIDEpOwotQEAgLTMyOCw2ICszMzMsOSBAQCBwYXJzZV9vcHQgKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3RhdGUgKnN0YXRlKQotICAgICBjYXNlIE9QVF9CSUdfRU5ESUFOOgotICAgICAgIHNldF9iaWdfZW5kaWFuICh0cnVlKTsKK0BAIC0zODksNiArMzk0LDkgQEAgcGFyc2Vfb3B0IChpbnQga2V5LCBjaGFyICphcmcsIHN0cnVjdCBhcmdwX3N0YXRlICpzdGF0ZSkKKyAgICAgICAvKiBFbmFibGUgdGhlIHdhcm5pbmdzLiAgKi8KKyAgICAgICBzZXRfd2FybmluZ3MgKGFyZywgdHJ1ZSk7CiAgICAgICAgYnJlYWs7CiArICAgIGNhc2UgT1BUX1VJTlQzMl9BTElHTjoKICsgICAgICB1aW50MzJfYWxpZ25fbWFzayA9IHN0cnRvbCAoYXJnLCBOVUxMLCAwKSAtIDE7CkBAIC00MDksNyArNDA5LDcgQEAKICAgICAgICBmb3JjZV9vdXRwdXQgPSAxOwogICAgICAgIGJyZWFrOwogZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jCi1pbmRleCAwOTkwZWYxMWJlLi42ODM0MjJjOTA4IDEwMDY0NAoraW5kZXggMzJlNWY3NjFmMi4uYjQxZTc3YmQ4ZCAxMDA2NDQKIC0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMKICsrKyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMKIEBAIC01NDQsNiArNTQ0LDkgQEAgY29tcGFyZV9maWxlcyAoY29uc3QgY2hhciAqZmlsZW5hbWUxLCBjb25zdCBjaGFyICpmaWxlbmFtZTIsIHNpemVfdCBzaXplLApAQCAtNDMyLDcgKzQzMiw3IEBACiAgCiAgLyogUmVjb3JkIHRoYXQgRklMRSdzIG5leHQgZWxlbWVudCBpcyB0aGUgMzItYml0IGludGVnZXIgVkFMVUUuICAqLwogZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmggYi9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oCi1pbmRleCAzNDA3ZTEzYzEzLi4wYmI1NTZjYWY4IDEwMDY0NAoraW5kZXggODliMzQ3YzcyZC4uYTYzNmZjMjk2MCAxMDA2NDQKIC0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKICsrKyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKIEBAIC03MSw2ICs3MSw4IEBAIGV4dGVybiB2b2lkIHdyaXRlX2FsbF9jYXRlZ29yaWVzIChzdHJ1Y3QgbG9jYWxlZGVmX3QgKmRlZmluaXRpb25zLApAQCAtNTIxLDcgKzUyMSw3IEBACiArCiAgI2VuZGlmIC8qIGxvY2ZpbGUuaCAqLwogZGlmZiAtLWdpdCBhL2xvY2FsZS9zZXRsb2NhbGUuYyBiL2xvY2FsZS9zZXRsb2NhbGUuYwotaW5kZXggMTlhY2M0YjJjNy4uYzg5ZDNiODdhZCAxMDA2NDQKK2luZGV4IGU0ZGU5MDdlMWYuLmI1ZDhmNWMxN2QgMTAwNjQ0CiAtLS0gYS9sb2NhbGUvc2V0bG9jYWxlLmMKICsrKyBiL2xvY2FsZS9zZXRsb2NhbGUuYwogQEAgLTY0LDM2ICs2NCw2IEBAIHN0YXRpYyBjaGFyICpjb25zdCBfbmxfY3VycmVudF91c2VkW10gPQpAQCAtNTYyLDUgKzU2Miw1IEBACiAgIyBkZWZpbmUgV0VBS19QT1NUTE9BRChwb3N0bG9hZCkgd2Vha19leHRlcm4gKHBvc3Rsb2FkKQogICNlbHNlCiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaAppbmRleCA5ZTU4MGQ0Li5hZTcwOGVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMy1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjMtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBjYjRkMDBlYWM3Zjg0MDkyMzE0ZGU1OTM2MjZlZWE0MGY5NTI5MDM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5ZDcxNTI2YmUyMWFiZTY4ZGQ4Y2EzYTVhMjE5NDQ1ODUxYmJjMmY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMjAgQXByIDIwMTYgMjE6MTE6MDAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyMy8yNV0gRGVmaW5lIERVTU1ZX0xPQ0FMRV9UIGlmIG5vdCBkZWZpbmVkCitTdWJqZWN0OiBbUEFUQ0ggMjMvMjddIERlZmluZSBEVU1NWV9MT0NBTEVfVCBpZiBub3QgZGVmaW5lZAogCiBUaGlzIGlzIGEgaGFjayB0byBmaXggYnVpbGRpbmcgdGhlIGxvY2FsZSBiaXRzIG9uIGFuIG9sZGVyCiBDZW50T3MgNS5YIG1hY2hpbmUKQEAgLTE0LDcgKzE0LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmggYi9sb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmgKLWluZGV4IDViNDE2YmUwZDguLjc5ZTY2ZWVkNWUgMTAwNjQ0CitpbmRleCA5OTU2Y2Q4NDQ2Li4wNDM0MmYzNjQ0IDEwMDY0NAogLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oCiArKysgYi9sb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmgKIEBAIC0xOSw2ICsxOSw5IEBACkBAIC0yOCw1ICsyOCw1IEBACiAgI2RlZmluZSBQQUNLQUdFIF9saWJjX2ludGxfZG9tYWlubmFtZQogICNpZm5kZWYgVkVSU0lPTgogLS0gCi0yLjEzLjIKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNC1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjQtZWxmLWRsLWRlcHMuYy1NYWtlLV9kbF9idWlsZF9sb2NhbF9zY29wZS1icmVhZHRoLWZpci5wYXRjaAppbmRleCAwYjU5MzUyLi40MmZmNjY3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNC1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI0LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGE3ODQ3NDI3MzljOTBlZWEwZDRjY2JiZDA3M2EwNjdkNTVjYTk1ZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDAzODczYWYyODZmMWRhYjEwNjJmNTk4ZDZkZWI3NzRjZTUxMzQyMWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUaHUsIDE4IEF1ZyAyMDE2IDE0OjA3OjU4IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0ggMjQvMjVdIGVsZi9kbC1kZXBzLmM6IE1ha2UgX2RsX2J1aWxkX2xvY2FsX3Njb3BlIGJyZWFkdGggZmlyc3QKK1N1YmplY3Q6IFtQQVRDSCAyNC8yN10gZWxmL2RsLWRlcHMuYzogTWFrZSBfZGxfYnVpbGRfbG9jYWxfc2NvcGUgYnJlYWR0aCBmaXJzdAogCiBBY2NvcmRpbmcgdG8gdGhlIEVMRiBzcGVjaWZpY2F0aW9uOgogCkBAIC0yNCwxMCArMjQsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2VsZi9kbC1kZXBzLmMgYi9lbGYvZGwtZGVwcy5jCi1pbmRleCAxYjhiYWM2NTkzLi5jNjE2ODA4ZjMxIDEwMDY0NAoraW5kZXggYzk3NWZjZmZkNy4uNmVlNThjNzRlMCAxMDA2NDQKIC0tLSBhL2VsZi9kbC1kZXBzLmMKICsrKyBiL2VsZi9kbC1kZXBzLmMKLUBAIC03MywxMyArNzMsMTkgQEAgX2RsX2J1aWxkX2xvY2FsX3Njb3BlIChzdHJ1Y3QgbGlua19tYXAgKipsaXN0LCBzdHJ1Y3QgbGlua19tYXAgKm1hcCkKK0BAIC03MiwxMyArNzIsMTkgQEAgX2RsX2J1aWxkX2xvY2FsX3Njb3BlIChzdHJ1Y3QgbGlua19tYXAgKipsaXN0LCBzdHJ1Y3QgbGlua19tYXAgKm1hcCkKICB7CiAgICBzdHJ1Y3QgbGlua19tYXAgKipwID0gbGlzdDsKICAgIHN0cnVjdCBsaW5rX21hcCAqKnE7CkBAIC01Miw1ICs1Miw1IEBACiAgfQogIAogLS0gCi0yLjEzLjIKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNS1sb2NhbGUtZml4LWhhcmQtY29kZWQtcmVmZXJlbmNlLXRvLWdjYy1FLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjUtbG9jYWxlLWZpeC1oYXJkLWNvZGVkLXJlZmVyZW5jZS10by1nY2MtRS5wYXRjaAppbmRleCAwOWFkMDRhLi43ZjVkMTQyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNS1sb2NhbGUtZml4LWhhcmQtY29kZWQtcmVmZXJlbmNlLXRvLWdjYy1FLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LWxvY2FsZS1maXgtaGFyZC1jb2RlZC1yZWZlcmVuY2UtdG8tZ2NjLUUucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGYzYTY3MDQ5NmM4ZmU2ZDRhY2YwNDVmNWIxNjdhMTljZjQxYjA0NGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDU2ZGFiMDI0NzUxOTQxYzA3ZWI0NzlmNDdlZjY2ODJlMjE2OGM4NmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiA9P1VURi04P3E/Sj1DMz1BOXI9QzM9QTlteT0yMFJvc2VuPz0gPGplcmVteS5yb3NlbkBzbWlsZS5mcj4KIERhdGU6IE1vbiwgMjIgQXVnIDIwMTYgMTY6MDk6MjUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyNS8yNV0gbG9jYWxlOiBmaXggaGFyZC1jb2RlZCByZWZlcmVuY2UgdG8gZ2NjIC1FCitTdWJqZWN0OiBbUEFUQ0ggMjUvMjddIGxvY2FsZTogZml4IGhhcmQtY29kZWQgcmVmZXJlbmNlIHRvIGdjYyAtRQogCiBXaGVuIG5ldyB2ZXJzaW9uIG9mIGNvbXBpbGVycyBhcmUgcHVibGlzaGVkLCB0aGV5IG1heSBub3QgYmUgY29tcGF0aWJsZSB3aXRoCiBvbGRlciB2ZXJzaW9ucyBvZiBzb2Z0d2FyZS4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgY29tbW9uIHdoZW4gc29mdHdhcmUgaXMgYnVpbHQKQEAgLTM0LDUgKzM0LDUgQEAKICAKICBzdWIgY3N0cmxlbiB7CiAtLSAKLTIuMTMuMgorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LWFzc2VydC1TdXBwcmVzcy1wZWRhbnRpYy13YXJuaW5nLWNhdXNlZC1ieS1zdGF0ZW1lbnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1hc3NlcnQtU3VwcHJlc3MtcGVkYW50aWMtd2FybmluZy1jYXVzZWQtYnktc3RhdGVtZW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMmJiOTZiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LWFzc2VydC1TdXBwcmVzcy1wZWRhbnRpYy13YXJuaW5nLWNhdXNlZC1ieS1zdGF0ZW1lbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi1Gcm9tIDAzNzI4M2NiYzc0NzM5YjcyZjM2ZGZlYzgyN2QxMjBmYWEyNDM0MDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGbG9yaWFuIFdlaW1lciA8ZndlaW1lciBhdCByZWRoYXQgZG90IGNvbT4KLURhdGU6IFRodSwgNiBKdWwgMjAxNyAxMTo1MDo1NSArMDIwMAotU3ViamVjdDogW1BBVENIIDI2LzI2XSBhc3NlcnQ6IFN1cHByZXNzIHBlZGFudGljIHdhcm5pbmcgY2F1c2VkIGJ5IHN0YXRlbWVudAotIGV4cHJlc3Npb24gW0JaIyAyMTI0Ml0KLQotT24gMDcvMDUvMjAxNyAxMDoxNSBQTSwgWmFjayBXZWluYmVyZyB3cm90ZToKLT4gT24gV2VkLCBKdWwgNSwgMjAxNyBhdCAxMTo1MSBBTSwgRmxvcmlhbiBXZWltZXIgPGZ3ZWltZXJAcmVkaGF0LmNvbT4gd3JvdGU6Ci0+PiBPbiAwNy8wNS8yMDE3IDA1OjQ2IFBNLCBaYWNrIFdlaW5iZXJnIHdyb3RlOgotPj4+IEEgcHJvYmxlbSBvY2N1cnMgdG8gbWU6IGV4cHJlc3Npb25zIGludm9sdmluZyBWTEFzIF9hcmVfIGV2YWx1YXRlZAotPj4+IGluc2lkZSBzaXplb2YuCi0+PgotPj4gVGhlIHR5cGUgb2YgdGhlIHNpemVvZiBhcmd1bWVudCB3b3VsZCBzdGlsbCBiZSBpbnQgKGR1ZSB0byB0aGUKLT4+IGNvbXBhcmlzb24gYWdhaW5zdCAwKSwgc28gdGhpcyBkb2Vzbid0IGFjdHVhbGx5IG9jY3VyLgotPgotPiBJIHJlY2hlY2tlZCB3aGF0IEM5OSBzYXlzIGFib3V0IHNpemVvZiBhbmQgVkxBcywgYW5kIHlvdSdyZSByaWdodCAtCi0+IHRoZSBvcGVyYW5kIG9mIHNpemVvZiBpcyBvbmx5IGV2YWx1YXRlZCB3aGVuIHNpemVvZiBpcyBfZGlyZWN0bHlfCi0+IGFwcGxpZWQgdG8gYSBWTEEuICBTbyB0aGlzIGlzIGluZGVlZCBzYWZlLCBidXQgSSB0aGluayB0aGlzIHdyaW5rbGUKLT4gc2hvdWxkIGJlIG1lbnRpb25lZCBpbiB0aGUgY29tbWVudC4gIFBlcmhhcHMKLT4KLT4gLyogVGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgRVhQUiBpcyBub3QgZXZhbHVhdGVkIGR1ZSB0byB0aGUgc2l6ZW9mLAotPiAgICBidXQgd2lsbCB0cmlnZ2VyIGFueSBwZWRhbnRpYyB3YXJuaW5ncyBtYXNrZWQgYnkgdGhlIF9fZXh0ZW5zaW9uX18KLT4gICAgZm9yIHRoZSBzZWNvbmQgb2NjdXJyZW5jZS4gIFRoZSBleHBsaWNpdCBjb21wYXJpc29uIGFnYWluc3QgemVybwotPiAgICBlbnN1cmVzIHRoYXQgc2l6ZW9mIGlzIG5vdCBkaXJlY3RseSBhcHBsaWVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciBvcgotPiAgICBiaXQtZmllbGQgKHdoaWNoIHdvdWxkIGJlIGlsbC1mb3JtZWQpIG9yIFZMQSAod2hpY2ggd291bGQgYmUgZXZhbHVhdGVkKS4gICovCi0+Ci0+IHp3Ci0KLVdoYXQgYWJvdXQgdGhlIGF0dGFjaGVkIHBhdGNoPwotCi1TaWRkaGVzaCwgaXMgdGhpcyBva2F5IGR1cmluZyB0aGUgZnJlZXplPyAgSSdkIGxpa2UgdG8gYmFja3BvcnQgaXQgdG8KLTIuMjUgYXMgd2VsbC4KLQotVGhhbmtzLAotRmxvcmlhbgotCi1hc3NlcnQ6IFN1cHByZXNzIHBlZGFudGljIHdhcm5pbmcgY2F1c2VkIGJ5IHN0YXRlbWVudCBleHByZXNzaW9uCi0KLTIwMTctMDctMDYgIEZsb3JpYW4gV2VpbWVyICA8ZndlaW1lckByZWRoYXQuY29tPgotCi0JW0JaICMyMTI0Ml0KLQkqIGFzc2VydC9hc3NlcnQuaCBbX19HTlVDX18gJiYgIV9fU1RSSUNUX0FOU0lfX10gKGFzc2VydCk6Ci0JU3VwcHJlc3MgcGVkYW50aWMgd2FybmluZyByZXN1bHRpbmcgZnJvbSBzdGF0ZW1lbnQgZXhwcmVzc2lvbi4KLQkoX19BU1NFUlRfRlVOQ1RJT04pOiBBZGQgbWlzc2luZyBfX2V4dGVuZHNpb25fXy4KLS0tLQotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotIGFzc2VydC9hc3NlcnQuaCB8IDEyICsrKysrKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9hc3NlcnQvYXNzZXJ0LmggYi9hc3NlcnQvYXNzZXJ0LmgKLWluZGV4IDIyZjAxOTUzN2MuLjY4MDFjZmViMTAgMTAwNjQ0Ci0tLS0gYS9hc3NlcnQvYXNzZXJ0LmgKLSsrKyBiL2Fzc2VydC9hc3NlcnQuaAotQEAgLTkxLDEzICs5MSwxOSBAQCBfX0VORF9ERUNMUwotICAgICAgPyBfX0FTU0VSVF9WT0lEX0NBU1QgKDApCQkJCQkJXAotICAgICAgOiBfX2Fzc2VydF9mYWlsICgjZXhwciwgX19GSUxFX18sIF9fTElORV9fLCBfX0FTU0VSVF9GVU5DVElPTikpCi0gIyBlbHNlCi0rLyogVGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgRVhQUiBpcyBub3QgZXZhbHVhdGVkIGR1ZSB0byB0aGUgc2l6ZW9mLAotKyAgIGJ1dCB3aWxsIHRyaWdnZXIgYW55IHBlZGFudGljIHdhcm5pbmdzIG1hc2tlZCBieSB0aGUgX19leHRlbnNpb25fXwotKyAgIGZvciB0aGUgc2Vjb25kIG9jY3VycmVuY2UuICBUaGUgZXhwbGljaXQgY29tcGFyaXNvbiBhZ2FpbnN0IHplcm8gaXMKLSsgICByZXF1aXJlZCB0byBzdXBwb3J0IGZ1bmN0aW9uIHBvaW50ZXJzIGFuZCBiaXQgZmllbGRzIGluIHRoaXMKLSsgICBjb250ZXh0LCBhbmQgdG8gc3VwcHJlc3MgdGhlIGV2YWx1YXRpb24gb2YgdmFyaWFibGUgbGVuZ3RoCi0rICAgYXJyYXlzLiAgKi8KLSAjICBkZWZpbmUgYXNzZXJ0KGV4cHIpCQkJCQkJCVwKLS0gICAgKHsJCQkJCQkJCQlcCi0rICAoKHZvaWQpIHNpemVvZiAoKGV4cHIpID09IDApLCBfX2V4dGVuc2lvbl9fICh7CQkJXAotICAgICAgIGlmIChleHByKQkJCQkJCQkJXAotICAgICAgICAgOyAvKiBlbXB0eSAqLwkJCQkJCQlcCi0gICAgICAgZWxzZQkJCQkJCQkJXAotICAgICAgICAgX19hc3NlcnRfZmFpbCAoI2V4cHIsIF9fRklMRV9fLCBfX0xJTkVfXywgX19BU1NFUlRfRlVOQ1RJT04pOwlcCi0tICAgIH0pCi0rICAgIH0pKQotICMgZW5kaWYKLSAKLSAjIGlmZGVmCV9fVVNFX0dOVQotQEAgLTExMyw3ICsxMTksNyBAQCBfX0VORF9ERUNMUwotICAgIEM5eCBoYXMgYSBzaW1pbGFyIHZhcmlhYmxlIGNhbGxlZCBfX2Z1bmNfXywgYnV0IHByZWZlciB0aGUgR0NDIG9uZSBzaW5jZQotICAgIGl0IGRlbWFuZ2xlcyBDKysgZnVuY3Rpb24gbmFtZXMuICAqLwotICMgaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyA/IF9fR05VQ19QUkVSRVEgKDIsIDYpIDogX19HTlVDX1BSRVJFUSAoMiwgNCkKLS0jICAgZGVmaW5lIF9fQVNTRVJUX0ZVTkNUSU9OCV9fUFJFVFRZX0ZVTkNUSU9OX18KLSsjICAgZGVmaW5lIF9fQVNTRVJUX0ZVTkNUSU9OCV9fZXh0ZW5zaW9uX18gX19QUkVUVFlfRlVOQ1RJT05fXwotICMgZWxzZQotICMgIGlmIGRlZmluZWQgX19TVERDX1ZFUlNJT05fXyAmJiBfX1NURENfVkVSU0lPTl9fID49IDE5OTkwMUwKLSAjICAgZGVmaW5lIF9fQVNTRVJUX0ZVTkNUSU9OCV9fZnVuY19fCi0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1yZXNldC1kbF9sb2FkX3dyaXRlX2xvY2stYWZ0ZXItZm9ya2luZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LXJlc2V0LWRsX2xvYWRfd3JpdGVfbG9jay1hZnRlci1mb3JraW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjYTExOTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1yZXNldC1kbF9sb2FkX3dyaXRlX2xvY2stYWZ0ZXItZm9ya2luZy5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIDg0N2QzN2Q1YTM0ZTRiZjI5NGRlNGJhOThkZTM2Njg5NTBlMjhiYzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAyNyBKYW4gMjAxOCAxMDowNTowNyAtMDgwMAorU3ViamVjdDogW1BBVENIIDI2LzI3XSByZXNldCBkbF9sb2FkX3dyaXRlX2xvY2sgYWZ0ZXIgZm9ya2luZworCitUaGUgcGF0Y2ggaW4gdGhpcyBCdWd6aWxsYSBlbnRyeSB3YXMgcmVxdWVzdGVkIGJ5IGEgY3VzdG9tZXI6CisKKyAgaHR0cHM6Ly93d3cuc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE5MjgyCisKK1RoZSBfX2xpYmNfZm9yaygpIGNvZGUgcmVzZXQgZGxfbG9hZF9sb2NrLCBidXQgaXQgYWxzbyBuZWVkZWQgdG8gcmVzZXQKK2RsX2xvYWRfd3JpdGVfbG9jay4gIFRoZSBwYXRjaCBoYXMgbm90IHlldCBiZWVuIGludGVncmF0ZWQgdXBzdHJlYW0uCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbIE5vIEF1dGhvciBTZWUgYnVnemlsbGFdCisKK1NpZ25lZC1vZmYtYnk6IERhbW9kYXIgU29ub25lIDxkYW1vZGFyLnNvbm9uZUBrcGl0LmNvbT4KK1NpZ25lZC1vZmYtYnk6IFl1YW5qaWUgSHVhbmcgPHl1YW5qaWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzeXNkZXBzL25wdGwvZm9yay5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvbnB0bC9mb3JrLmMgYi9zeXNkZXBzL25wdGwvZm9yay5jCitpbmRleCA4NDZmYTQ5ZWYyLi5mODc1MDZmMzk4IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9ucHRsL2ZvcmsuYworKysrIGIvc3lzZGVwcy9ucHRsL2ZvcmsuYworQEAgLTE5NCw5ICsxOTQsOSBAQCBfX2xpYmNfZm9yayAodm9pZCkKKyAJICBfSU9fbGlzdF9yZXNldGxvY2sgKCk7CisgCX0KKyAKKy0gICAgICAvKiBSZXNldCB0aGUgbG9jayB0aGUgZHluYW1pYyBsb2FkZXIgdXNlcyB0byBwcm90ZWN0IGl0cyBkYXRhLiAgKi8KKysgICAgICAvKiBSZXNldCB0aGUgbG9ja3MgdGhlIGR5bmFtaWMgbG9hZGVyIHVzZXMgdG8gcHJvdGVjdCBpdHMgZGF0YS4gICovCisgICAgICAgX19ydGxkX2xvY2tfaW5pdGlhbGl6ZSAoR0woZGxfbG9hZF9sb2NrKSk7CistCisrICAgICAgX19ydGxkX2xvY2tfaW5pdGlhbGl6ZSAoR0woZGxfbG9hZF93cml0ZV9sb2NrKSk7CisgICAgICAgLyogUnVuIHRoZSBoYW5kbGVycyByZWdpc3RlcmVkIGZvciB0aGUgY2hpbGQuICAqLworICAgICAgIHdoaWxlIChhbGxwICE9IE5VTEwpCisgCXsKKy0tIAorMi4xNi4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI3LUFjcXVpcmUtbGQuc28tbG9jay1iZWZvcmUtc3dpdGNoaW5nLXRvLW1hbGxvY19hdGZvcmsucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNy1BY3F1aXJlLWxkLnNvLWxvY2stYmVmb3JlLXN3aXRjaGluZy10by1tYWxsb2NfYXRmb3JrLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllYzIzNGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNy1BY3F1aXJlLWxkLnNvLWxvY2stYmVmb3JlLXN3aXRjaGluZy10by1tYWxsb2NfYXRmb3JrLnBhdGNoCkBAIC0wLDAgKzEsNzAgQEAKK0Zyb20gOTQyMjVhYjRiY2MxNjEzNTMxNTU4YTYzMjI3MGI1ZWRjZTc3OWJjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDI3IEphbiAyMDE4IDEwOjA4OjA0IC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMjcvMjddIEFjcXVpcmUgbGQuc28gbG9jayBiZWZvcmUgc3dpdGNoaW5nIHRvIG1hbGxvY19hdGZvcmsKKworVGhlIHBhdGNoIGlzIGZyb20KKyAgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NDU3OAorCitJZiBhIHRocmVhZCBoYXBwZW5zIHRvIGhvbGQgZGxfbG9hZF9sb2NrIGFuZCBoYXZlIHJfc3RhdGUgc2V0IHRvIFJUX0FERCBvcgorUlRfREVMRVRFIGF0IHRoZSB0aW1lIGFub3RoZXIgdGhyZWFkIGNhbGxzIGZvcmsoKSwgdGhlbiB0aGUgY2hpbGQgZXhpdCBjb2RlCitmcm9tIGZvcmsgKGluIG5wdGwvc3lzZGVwcy91bml4L3N5c3YvbGludXgvZm9yay5jIGluIG91ciBjYXNlKSByZS1pbml0aWFsaXplcworZGxfbG9hZF9sb2NrIGJ1dCBkb2VzIG5vdCByZXN0b3JlIHJfc3RhdGUgdG8gUlRfQ09OU0lTVEVOVC4gSWYgdGhlIGNoaWxkCitzdWJzZXF1ZW50bHkgcmVxdWlyZXMgbGQuc28gZnVuY3Rpb25hbGl0eSBiZWZvcmUgY2FsbGluZyBleGVjKCksIHRoZW4gdGhlCithc3NlcnRpb24gd2lsbCBmaXJlLgorCitUaGUgcGF0Y2ggYWNxdWlyZXMgZGxfbG9hZF9sb2NrIG9uIGVudHJ5IHRvIGZvcmsoKSBhbmQgcmVsZWFzZXMgaXQgb24gZXhpdAorZnJvbSB0aGUgcGFyZW50IHBhdGguICBUaGUgY2hpbGQgcGF0aCBpcyBpbml0aWFsaXplZCBhcyBjdXJyZW50bHkgZG9uZS4KK1RoaXMgaXMgZXNzZW50aWFsbHkgcHRocmVhZHNfYXRmb3JrLCBidXQgZm9yY2VkIHRvIGJlIGZpcnN0IGJlY2F1c2UgdGhlCithY3F1aXNpdGlvbiBvZiBkbF9sb2FkX2xvY2sgbXVzdCBoYXBwZW4gYmVmb3JlIG1hbGxvY19hdGZvcmsgaXMgYWN0aXZlCit0byBhdm9pZCBhIGRlYWRsb2NrLgorCitUaGUgcGF0Y2ggaGFzIG5vdCB5ZXQgYmVlbiBpbnRlZ3JhdGVkIHVwc3RyZWFtLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgWyBOb3QgQXV0aG9yIFNlZSBidWd6aWxsYV0KKworU2lnbmVkLW9mZi1ieTogUmFnaHVuYXRoIExvbHVyIDxSYWdodW5hdGguTG9sdXJAa3BpdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBZdWFuamllIEh1YW5nIDx5dWFuamllLmh1YW5nQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBaaGl4aW9uZyBDaGkgPHpoaXhpb25nLmNoaUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHN5c2RlcHMvbnB0bC9mb3JrLmMgfCA5ICsrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvbnB0bC9mb3JrLmMgYi9zeXNkZXBzL25wdGwvZm9yay5jCitpbmRleCBmODc1MDZmMzk4Li4yMjVlN2I1MWY4IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9ucHRsL2ZvcmsuYworKysrIGIvc3lzZGVwcy9ucHRsL2ZvcmsuYworQEAgLTI1LDYgKzI1LDcgQEAKKyAjaW5jbHVkZSA8dGxzLmg+CisgI2luY2x1ZGUgPGhwLXRpbWluZy5oPgorICNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKyNpbmNsdWRlIDxsaWJjLWxvY2suaD4KKyAjaW5jbHVkZSA8c3RkaW8tbG9jay5oPgorICNpbmNsdWRlIDxhdG9taWMuaD4KKyAjaW5jbHVkZSA8bnB0bC9wdGhyZWFkUC5oPgorQEAgLTYwLDYgKzYxLDEwIEBAIF9fbGliY19mb3JrICh2b2lkKQorICAgICAgYnV0IG91ciBjdXJyZW50IGZvcmsgaW1wbGVtZW50YXRpb24gaXMgbm90LiAgKi8KKyAgIGJvb2wgbXVsdGlwbGVfdGhyZWFkcyA9IFRIUkVBRF9HRVRNRU0gKFRIUkVBRF9TRUxGLCBoZWFkZXIubXVsdGlwbGVfdGhyZWFkcyk7CisgCisrICAvKiBncmFiIGxkLnNvIGxvY2sgQkVGT1JFIHN3aXRjaGluZyB0byBtYWxsb2NfYXRmb3JrICovCisrICBfX3J0bGRfbG9ja19sb2NrX3JlY3Vyc2l2ZSAoR0woZGxfbG9hZF9sb2NrKSk7CisrICBfX3J0bGRfbG9ja19sb2NrX3JlY3Vyc2l2ZSAoR0woZGxfbG9hZF93cml0ZV9sb2NrKSk7CisrCisgICAvKiBSdW4gYWxsIHRoZSByZWdpc3RlcmVkIHByZXBhcmF0aW9uIGhhbmRsZXJzLiAgSW4gcmV2ZXJzZSBvcmRlci4KKyAgICAgIFdoaWxlIGRvaW5nIHRoaXMgd2UgYnVpbGQgdXAgYSBsaXN0IG9mIGFsbCB0aGUgZW50cmllcy4gICovCisgICBzdHJ1Y3QgZm9ya19oYW5kbGVyICpydW5wOworQEAgLTI0Niw2ICsyNTEsMTAgQEAgX19saWJjX2ZvcmsgKHZvaWQpCisgCisgCSAgYWxscCA9IGFsbHAtPm5leHQ7CisgCX0KKysKKysgICAgICAvKiB1bmxvY2sgbGQuc28gbGFzdCwgYmVjYXVzZSB3ZSBsb2NrZWQgaXQgZmlyc3QgKi8KKysgICAgICBfX3J0bGRfbG9ja191bmxvY2tfcmVjdXJzaXZlIChHTChkbF9sb2FkX3dyaXRlX2xvY2spKTsKKysgICAgICBfX3J0bGRfbG9ja191bmxvY2tfcmVjdXJzaXZlIChHTChkbF9sb2FkX2xvY2spKTsKKyAgICAgfQorIAorICAgcmV0dXJuIHBpZDsKKy0tIAorMi4xNi4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI3LWdsaWJjLXJlc2V0LWRsLWxvYWQtd3JpdGUtbG9jay1hZnRlci1mb3JraW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjctZ2xpYmMtcmVzZXQtZGwtbG9hZC13cml0ZS1sb2NrLWFmdGVyLWZvcmtpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3N2IyNTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjctZ2xpYmMtcmVzZXQtZGwtbG9hZC13cml0ZS1sb2NrLWFmdGVyLWZvcmtpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIGE2YmI3M2QxY2ZkMjBhNzNmYmJlNjA3NjAwODM3NmZiODc4NzlkMWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBZdWFuamllIEh1YW5nIDx5dWFuamllLmh1YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDE4IEF1ZyAyMDE2IDE3OjU5OjEzICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHJlc2V0IGRsX2xvYWRfd3JpdGVfbG9jayBhZnRlciBmb3JraW5nCi0KLVRoZSBwYXRjaCBpbiB0aGlzIEJ1Z3ppbGxhIGVudHJ5IHdhcyByZXF1ZXN0ZWQgYnkgYSBjdXN0b21lcjoKLQotICBodHRwczovL3d3dy5zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTkyODIKLQotVGhlIF9fbGliY19mb3JrKCkgY29kZSByZXNldCBkbF9sb2FkX2xvY2ssIGJ1dCBpdCBhbHNvIG5lZWRlZCB0byByZXNldAotZGxfbG9hZF93cml0ZV9sb2NrLiAgVGhlIHBhdGNoIGhhcyBub3QgeWV0IGJlZW4gaW50ZWdyYXRlZCB1cHN0cmVhbS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFsgTm90IEF1dGhvciBTZWUgYnVnemlsbGFdCi0KLVNpZ25lZC1vZmYtYnk6IERhbW9kYXIgU29ub25lIDxkYW1vZGFyLnNvbm9uZUBrcGl0LmNvbT4KLVNpZ25lZC1vZmYtYnk6IFl1YW5qaWUgSHVhbmcgPHl1YW5qaWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIHN5c2RlcHMvbnB0bC9mb3JrLmMgfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvbnB0bC9mb3JrLmMgYi9zeXNkZXBzL25wdGwvZm9yay5jCi1pbmRleCAyYjlhZTRiLi4zZDBiOGRhIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9ucHRsL2ZvcmsuYwotKysrIGIvc3lzZGVwcy9ucHRsL2ZvcmsuYwotQEAgLTE3NCw4ICsxNzQsOSBAQCBfX2xpYmNfZm9yayAodm9pZCkKLSAgICAgICAvKiBSZXNldCBsb2NrcyBpbiB0aGUgSS9PIGNvZGUuICAqLwotICAgICAgIF9JT19saXN0X3Jlc2V0bG9jayAoKTsKLSAKLS0gICAgICAvKiBSZXNldCB0aGUgbG9jayB0aGUgZHluYW1pYyBsb2FkZXIgdXNlcyB0byBwcm90ZWN0IGl0cyBkYXRhLiAgKi8KLSsgICAgICAvKiBSZXNldCB0aGUgbG9ja3MgdGhlIGR5bmFtaWMgbG9hZGVyIHVzZXMgdG8gcHJvdGVjdCBpdHMgZGF0YS4gICovCi0gICAgICAgX19ydGxkX2xvY2tfaW5pdGlhbGl6ZSAoR0woZGxfbG9hZF9sb2NrKSk7Ci0rICAgICAgX19ydGxkX2xvY2tfaW5pdGlhbGl6ZSAoR0woZGxfbG9hZF93cml0ZV9sb2NrKSk7Ci0gCi0gICAgICAgLyogUnVuIHRoZSBoYW5kbGVycyByZWdpc3RlcmVkIGZvciB0aGUgY2hpbGQuICAqLwotICAgICAgIHdoaWxlIChhbGxwICE9IE5VTEwpCi0tLSAKLTEuOS4xCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOC1CdWctNDU3OC1hZGQtbGQuc28tbG9jay13aGlsZS1mb3JrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjgtQnVnLTQ1NzgtYWRkLWxkLnNvLWxvY2std2hpbGUtZm9yay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc2MjM3YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOC1CdWctNDU3OC1hZGQtbGQuc28tbG9jay13aGlsZS1mb3JrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotVGhlIHBhdGNoIGluIHRoaXMgQnVnemlsbGEgZW50cnkgd2FzIHJlcXVlc3RlZCBieSBhIGN1c3RvbWVyOgotICBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD00NTc4Ci0KLUlmIGEgdGhyZWFkIGhhcHBlbnMgdG8gaG9sZCBkbF9sb2FkX2xvY2sgYW5kIGhhdmUgcl9zdGF0ZSBzZXQgdG8gUlRfQUREIG9yCi1SVF9ERUxFVEUgYXQgdGhlIHRpbWUgYW5vdGhlciB0aHJlYWQgY2FsbHMgZm9yaygpLCB0aGVuIHRoZSBjaGlsZCBleGl0IGNvZGUKLWZyb20gZm9yayAoaW4gbnB0bC9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9mb3JrLmMgaW4gb3VyIGNhc2UpIHJlLWluaXRpYWxpemVzCi1kbF9sb2FkX2xvY2sgYnV0IGRvZXMgbm90IHJlc3RvcmUgcl9zdGF0ZSB0byBSVF9DT05TSVNURU5ULiBJZiB0aGUgY2hpbGQKLXN1YnNlcXVlbnRseSByZXF1aXJlcyBsZC5zbyBmdW5jdGlvbmFsaXR5IGJlZm9yZSBjYWxsaW5nIGV4ZWMoKSwgdGhlbiB0aGUKLWFzc2VydGlvbiB3aWxsIGZpcmUuCi0KLVRoZSBwYXRjaCBhY3F1aXJlcyBkbF9sb2FkX2xvY2sgb24gZW50cnkgdG8gZm9yaygpIGFuZCByZWxlYXNlcyBpdCBvbiBleGl0Ci1mcm9tIHRoZSBwYXJlbnQgcGF0aC4gIFRoZSBjaGlsZCBwYXRoIGlzIGluaXRpYWxpemVkIGFzIGN1cnJlbnRseSBkb25lLgotVGhpcyBpcyBlc3NlbnRpYWxseSBwdGhyZWFkc19hdGZvcmssIGJ1dCBmb3JjZWQgdG8gYmUgZmlyc3QgYmVjYXVzZSB0aGUKLWFjcXVpc2l0aW9uIG9mIGRsX2xvYWRfbG9jayBtdXN0IGhhcHBlbiBiZWZvcmUgbWFsbG9jX2F0Zm9yayBpcyBhY3RpdmUKLXRvIGF2b2lkIGEgZGVhZGxvY2suCi1UaGUgcGF0Y2ggaGFzIG5vdCB5ZXQgYmVlbiBpbnRlZ3JhdGVkIHVwc3RyZWFtLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgWyBOb3QgQXV0aG9yIFNlZSBidWd6aWxsYV0KLQotU2lnbmVkLW9mZi1ieTogUmFnaHVuYXRoIExvbHVyIDxSYWdodW5hdGguTG9sdXJAa3BpdC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBZdWFuamllIEh1YW5nIDx5dWFuamllLmh1YW5nQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBaaGl4aW9uZyBDaGkgPHpoaXhpb25nLmNoaUB3aW5kcml2ZXIuY29tPgotCi1JbmRleDogZ2l0L3N5c2RlcHMvbnB0bC9mb3JrLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9zeXNkZXBzL25wdGwvZm9yay5jICAgICAgIDIwMTctMDgtMDMgMTY6MDI6MTUuNjc0NzA0MDgwICswODAwCi0rKysgZ2l0L3N5c2RlcHMvbnB0bC9mb3JrLmMgICAgMjAxNy0wOC0wNCAxODoxNTowMi40NjMzNjIwMTUgKzA4MDAKLUBAIC0yNSw2ICsyNSw3IEBACi0gI2luY2x1ZGUgPHRscy5oPgotICNpbmNsdWRlIDxocC10aW1pbmcuaD4KLSAjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsjaW5jbHVkZSA8bGliYy1sb2NrLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLWxvY2suaD4KLSAjaW5jbHVkZSA8YXRvbWljLmg+Ci0gI2luY2x1ZGUgPG5wdGwvcHRocmVhZFAuaD4KLUBAIC02MCw2ICs2MSwxMCBAQAotICAgICAgYnV0IG91ciBjdXJyZW50IGZvcmsgaW1wbGVtZW50YXRpb24gaXMgbm90LiAgKi8KLSAgIGJvb2wgbXVsdGlwbGVfdGhyZWFkcyA9IFRIUkVBRF9HRVRNRU0gKFRIUkVBRF9TRUxGLCBoZWFkZXIubXVsdGlwbGVfdGhyZWFkcyk7Ci0gCi0rICAvKiBncmFiIGxkLnNvIGxvY2sgQkVGT1JFIHN3aXRjaGluZyB0byBtYWxsb2NfYXRmb3JrICovCi0rICBfX3J0bGRfbG9ja19sb2NrX3JlY3Vyc2l2ZSAoR0woZGxfbG9hZF9sb2NrKSk7Ci0rICBfX3J0bGRfbG9ja19sb2NrX3JlY3Vyc2l2ZSAoR0woZGxfbG9hZF93cml0ZV9sb2NrKSk7Ci0rCi0gICAvKiBSdW4gYWxsIHRoZSByZWdpc3RlcmVkIHByZXBhcmF0aW9uIGhhbmRsZXJzLiAgSW4gcmV2ZXJzZSBvcmRlci4KLSAgICAgIFdoaWxlIGRvaW5nIHRoaXMgd2UgYnVpbGQgdXAgYSBsaXN0IG9mIGFsbCB0aGUgZW50cmllcy4gICovCi0gICBzdHJ1Y3QgZm9ya19oYW5kbGVyICpydW5wOwotQEAgLTI0Nyw2ICsyNTIsMTAgQEAKLSAKLSAJICBhbGxwID0gYWxscC0+bmV4dDsKLSAJfQotKwotKyAgICAgIC8qIHVubG9jayBsZC5zbyBsYXN0LCBiZWNhdXNlIHdlIGxvY2tlZCBpdCBmaXJzdCAqLwotKyAgICAgIF9fcnRsZF9sb2NrX3VubG9ja19yZWN1cnNpdmUgKEdMKGRsX2xvYWRfd3JpdGVfbG9jaykpOwotKyAgICAgIF9fcnRsZF9sb2NrX3VubG9ja19yZWN1cnNpdmUgKEdMKGRsX2xvYWRfbG9jaykpOwotICAgICB9Ci0gCi0gICByZXR1cm4gcGlkOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjktYml0cy1zaWdpbmZvLWNvbnN0cy5oLWVudW0tZGVmaW5pdGlvbi1mb3ItVFJBUF9IV0JLUC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI4LWJpdHMtc2lnaW5mby1jb25zdHMuaC1lbnVtLWRlZmluaXRpb24tZm9yLVRSQVBfSFdCS1AucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI5LWJpdHMtc2lnaW5mby1jb25zdHMuaC1lbnVtLWRlZmluaXRpb24tZm9yLVRSQVBfSFdCS1AucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI4LWJpdHMtc2lnaW5mby1jb25zdHMuaC1lbnVtLWRlZmluaXRpb24tZm9yLVRSQVBfSFdCS1AucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI5LVJlcGxhY2Utc3RybmNweS13aXRoLW1lbWNjcHktdG8tZml4LVdzdHJpbmdvcC10cnVuY2EucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOS1SZXBsYWNlLXN0cm5jcHktd2l0aC1tZW1jY3B5LXRvLWZpeC1Xc3RyaW5nb3AtdHJ1bmNhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhMjlmNDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOS1SZXBsYWNlLXN0cm5jcHktd2l0aC1tZW1jY3B5LXRvLWZpeC1Xc3RyaW5nb3AtdHJ1bmNhLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gMTEzZTA1MTZmYmQzY2UxODI1M2YwNDIzNzYyNDE2ZDRjNGIzOGZiMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDIyIE1hciAyMDE4IDE3OjU3OjM3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMjkvMjldIFJlcGxhY2Ugc3RybmNweSB3aXRoIG1lbWNjcHkgdG8gZml4CisgLVdzdHJpbmdvcC10cnVuY2F0aW9uLgorCisJKiBuaXMvbnNzX25pc3BsdXMvbmlzcGx1cy1wYXJzZXIuYzogUmVwbGFjZSBzdHJuY3B5IHdpdGggbWVtY3B5IHRvCisJYXZvaWQgLVdzdHJpbmdvcC10cnVuY2F0aW9uLgorLS0tCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDE4LTAzL21zZzAwNTMxLmh0bWxdCisKKyBuaXMvbnNzX25pc3BsdXMvbmlzcGx1cy1wYXJzZXIuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9uaXMvbnNzX25pc3BsdXMvbmlzcGx1cy1wYXJzZXIuYyBiL25pcy9uc3NfbmlzcGx1cy9uaXNwbHVzLXBhcnNlci5jCitpbmRleCA4ZGMwMjFlNzNkLi5iNTMyODRmODg5IDEwMDY0NAorLS0tIGEvbmlzL25zc19uaXNwbHVzL25pc3BsdXMtcGFyc2VyLmMKKysrKyBiL25pcy9uc3NfbmlzcGx1cy9uaXNwbHVzLXBhcnNlci5jCitAQCAtODcsNyArODcsNyBAQCBfbnNzX25pc3BsdXNfcGFyc2VfcHdlbnQgKG5pc19yZXN1bHQgKnJlc3VsdCwgc3RydWN0IHBhc3N3ZCAqcHcsCisgICAgICAgaWYgKGxlbiA+PSByb29tX2xlZnQpCisgCWdvdG8gbm9fbW9yZV9yb29tOworIAorLSAgICAgIHN0cm5jcHkgKGZpcnN0X3VudXNlZCwgbnVtc3RyLCBsZW4pOworKyAgICAgIG1lbWNweSAoZmlyc3RfdW51c2VkLCBudW1zdHIsIGxlbik7CisgICAgICAgZmlyc3RfdW51c2VkW2xlbl0gPSAnXDAnOworICAgICAgIG51bXN0ciA9IGZpcnN0X3VudXNlZDsKKyAgICAgfQorQEAgLTEwMyw3ICsxMDMsNyBAQCBfbnNzX25pc3BsdXNfcGFyc2VfcHdlbnQgKG5pc19yZXN1bHQgKnJlc3VsdCwgc3RydWN0IHBhc3N3ZCAqcHcsCisgICAgICAgaWYgKGxlbiA+PSByb29tX2xlZnQpCisgCWdvdG8gbm9fbW9yZV9yb29tOworIAorLSAgICAgIHN0cm5jcHkgKGZpcnN0X3VudXNlZCwgbnVtc3RyLCBsZW4pOworKyAgICAgIG1lbWNweSAoZmlyc3RfdW51c2VkLCBudW1zdHIsIGxlbik7CisgICAgICAgZmlyc3RfdW51c2VkW2xlbl0gPSAnXDAnOworICAgICAgIG51bXN0ciA9IGZpcnN0X3VudXNlZDsKKyAgICAgfQorLS0gCisyLjE2LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjktYXNzZXJ0LVN1cHBvcnQtdHlwZXMtd2l0aG91dC1vcGVyYXRvci1pbnQtQlotMjE5NzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOS1hc3NlcnQtU3VwcG9ydC10eXBlcy13aXRob3V0LW9wZXJhdG9yLWludC1CWi0yMTk3Mi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M3MDUwZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOS1hc3NlcnQtU3VwcG9ydC10eXBlcy13aXRob3V0LW9wZXJhdG9yLWludC1CWi0yMTk3Mi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5NCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSogZml4ZXMgImxhbWJkYS1leHByZXNzaW9uIGluIHVuZXZhbHVhdGVkIGNvbnRleHQiIGNvbXBpbGUgZmFpbHVyZXMgc3VjaCBhcwotICBodHRwczovL2dpdGh1Yi5jb20vbmxvaG1hbm4vanNvbi9pc3N1ZXMvNzA1Ci0KLSogZml4ZXMgIm5vIG1hdGNoIGZvciAnb3BlcmF0b3I9PSIgY29tcGlsZSBmYWlsdXJlcyBzdWNoIGFzCi0gIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTQ4Mjk5MAotCi0qIENoYW5nZWxvZyBlZGl0IHdhcyByZW1vdmVkIGZyb20gdXBzdHJlYW0gY29tbWl0IGJlY2F1c2UgaXQgY2F1c2VkIGNvbmZsaWN0Ci0KLVNpZ25lZC1vZmYtYnk6IFMuIExvY2t3b29kLUNoaWxkcyA8c2psQHZjdGxhYnMuY29tPgotCi1Gcm9tIGI1ODg5ZDI1ZTliZjk0NGE4OWZkZDdiY2FiZjNiNmM2ZjZiYjZmN2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGbG9yaWFuIFdlaW1lciA8ZndlaW1lckByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAyMSBBdWcgMjAxNyAxMzowMzoyOSArMDIwMAotU3ViamVjdDogW1BBVENIXSBhc3NlcnQ6IFN1cHBvcnQgdHlwZXMgd2l0aG91dCBvcGVyYXRvcj09IChpbnQpIFtCWiAjMjE5NzJdCi0KLS0tLQotIGFzc2VydC9NYWtlZmlsZSAgICAgICAgICB8IDExICsrKysrKy0KLSBhc3NlcnQvYXNzZXJ0LmggICAgICAgICAgfCAxNiArKysrKystLS0tCi0gYXNzZXJ0L3RzdC1hc3NlcnQtYysrLmNjIHwgNzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gYXNzZXJ0L3RzdC1hc3NlcnQtZysrLmNjIHwgMTkgKysrKysrKysrKysrCi0gNCBmaWxlcyBjaGFuZ2VkLCAxMjggaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgYXNzZXJ0L3RzdC1hc3NlcnQtYysrLmNjCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGFzc2VydC90c3QtYXNzZXJ0LWcrKy5jYwotCi1kaWZmIC0tZ2l0IGEvYXNzZXJ0L01ha2VmaWxlIGIvYXNzZXJ0L01ha2VmaWxlCi1pbmRleCAxYzNiZTliLi45ZWMxYmU4IDEwMDY0NAotLS0tIGEvYXNzZXJ0L01ha2VmaWxlCi0rKysgYi9hc3NlcnQvTWFrZWZpbGUKLUBAIC0yNSw2ICsyNSwxNSBAQCBpbmNsdWRlIC4uL01ha2Vjb25maWcKLSBoZWFkZXJzCTo9IGFzc2VydC5oCi0gCi0gcm91dGluZXMgOj0gYXNzZXJ0IGFzc2VydC1wZXJyIF9fYXNzZXJ0Ci0tdGVzdHMgOj0gdGVzdC1hc3NlcnQgdGVzdC1hc3NlcnQtcGVycgotK3Rlc3RzIDo9IHRlc3QtYXNzZXJ0IHRlc3QtYXNzZXJ0LXBlcnIgdHN0LWFzc2VydC1jKysgdHN0LWFzc2VydC1nKysKLSAKLSBpbmNsdWRlIC4uL1J1bGVzCi0rCi0raWZlcSAoJChoYXZlLWN4eC10aHJlYWRfbG9jYWwpLHllcykKLStDRkxBR1MtdHN0LWFzc2VydC1jKysubyA9IC1zdGQ9YysrMTEKLStMRExJQlMtdHN0LWFzc2VydC1jKysgPSAtbHN0ZGMrKwotK0NGTEFHUy10c3QtYXNzZXJ0LWcrKy5vID0gLXN0ZD1nbnUrKzExCi0rTERMSUJTLXRzdC1hc3NlcnQtZysrID0gLWxzdGRjKysKLStlbHNlCi0rdGVzdHMtdW5zdXBwb3J0ZWQgKz0gdHN0LWFzc2VydC1jKysgdHN0LWFzc2VydC1nKysKLStlbmRpZgotZGlmZiAtLWdpdCBhL2Fzc2VydC9hc3NlcnQuaCBiL2Fzc2VydC9hc3NlcnQuaAotaW5kZXggNjgwMWNmZS4uNjQwYzk1YyAxMDA2NDQKLS0tLSBhL2Fzc2VydC9hc3NlcnQuaAotKysrIGIvYXNzZXJ0L2Fzc2VydC5oCi1AQCAtODUsNyArODUsMTIgQEAgX19FTkRfREVDTFMKLSAvKiBXaGVuIHBvc3NpYmxlLCBkZWZpbmUgYXNzZXJ0IHNvIHRoYXQgaXQgZG9lcyBub3QgYWRkIGV4dHJhCi0gICAgcGFyZW50aGVzZXMgYXJvdW5kIEVYUFIuICBPdGhlcndpc2UsIHRob3NlIGFkZGVkIHBhcmVudGhlc2VzIHdvdWxkCi0gICAgc3VwcHJlc3Mgd2FybmluZ3Mgd2UnZCBleHBlY3QgdG8gYmUgZGV0ZWN0ZWQgYnkgZ2NjJ3MgLVdwYXJlbnRoZXNlcy4gICovCi0tIyBpZiAhZGVmaW5lZCBfX0dOVUNfXyB8fCBkZWZpbmVkIF9fU1RSSUNUX0FOU0lfXwotKyMgaWYgZGVmaW5lZCBfX2NwbHVzcGx1cwotKyMgIGRlZmluZSBhc3NlcnQoZXhwcikJCQkJCQkJXAotKyAgICAgKHN0YXRpY19jYXN0IDxib29sPiAoZXhwcikJCQkJCQlcCi0rICAgICAgPyB2b2lkICgwKQkJCQkJCQlcCi0rICAgICAgOiBfX2Fzc2VydF9mYWlsICgjZXhwciwgX19GSUxFX18sIF9fTElORV9fLCBfX0FTU0VSVF9GVU5DVElPTikpCi0rIyBlbGlmICFkZWZpbmVkIF9fR05VQ19fIHx8IGRlZmluZWQgX19TVFJJQ1RfQU5TSV9fCi0gIyAgZGVmaW5lIGFzc2VydChleHByKQkJCQkJCQlcCi0gICAgICgoZXhwcikJCQkJCQkJCVwKLSAgICAgID8gX19BU1NFUlRfVk9JRF9DQVNUICgwKQkJCQkJCVwKLUBAIC05MywxMiArOTgsMTEgQEAgX19FTkRfREVDTFMKLSAjIGVsc2UKLSAvKiBUaGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBFWFBSIGlzIG5vdCBldmFsdWF0ZWQgZHVlIHRvIHRoZSBzaXplb2YsCi0gICAgYnV0IHdpbGwgdHJpZ2dlciBhbnkgcGVkYW50aWMgd2FybmluZ3MgbWFza2VkIGJ5IHRoZSBfX2V4dGVuc2lvbl9fCi0tICAgZm9yIHRoZSBzZWNvbmQgb2NjdXJyZW5jZS4gIFRoZSBleHBsaWNpdCBjb21wYXJpc29uIGFnYWluc3QgemVybyBpcwotLSAgIHJlcXVpcmVkIHRvIHN1cHBvcnQgZnVuY3Rpb24gcG9pbnRlcnMgYW5kIGJpdCBmaWVsZHMgaW4gdGhpcwotLSAgIGNvbnRleHQsIGFuZCB0byBzdXBwcmVzcyB0aGUgZXZhbHVhdGlvbiBvZiB2YXJpYWJsZSBsZW5ndGgKLS0gICBhcnJheXMuICAqLwotKyAgIGZvciB0aGUgc2Vjb25kIG9jY3VycmVuY2UuICBUaGUgdGVybmFyeSBvcGVyYXRvciBpcyByZXF1aXJlZCB0bwotKyAgIHN1cHBvcnQgZnVuY3Rpb24gcG9pbnRlcnMgYW5kIGJpdCBmaWVsZHMgaW4gdGhpcyBjb250ZXh0LCBhbmQgdG8KLSsgICBzdXBwcmVzcyB0aGUgZXZhbHVhdGlvbiBvZiB2YXJpYWJsZSBsZW5ndGggYXJyYXlzLiAgKi8KLSAjICBkZWZpbmUgYXNzZXJ0KGV4cHIpCQkJCQkJCVwKLS0gICgodm9pZCkgc2l6ZW9mICgoZXhwcikgPT0gMCksIF9fZXh0ZW5zaW9uX18gKHsJCQlcCi0rICAoKHZvaWQpIHNpemVvZiAoKGV4cHIpID8gMSA6IDApLCBfX2V4dGVuc2lvbl9fICh7CQkJXAotICAgICAgIGlmIChleHByKQkJCQkJCQkJXAotICAgICAgICAgOyAvKiBlbXB0eSAqLwkJCQkJCQlcCi0gICAgICAgZWxzZQkJCQkJCQkJXAotZGlmZiAtLWdpdCBhL2Fzc2VydC90c3QtYXNzZXJ0LWMrKy5jYyBiL2Fzc2VydC90c3QtYXNzZXJ0LWMrKy5jYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjEyYTVlNjkKLS0tLSAvZGV2L251bGwKLSsrKyBiL2Fzc2VydC90c3QtYXNzZXJ0LWMrKy5jYwotQEAgLTAsMCArMSw3OCBAQAotKy8qIFRlc3RzIGZvciBpbnRlcmFjdGlvbnMgYmV0d2VlbiBDKysgYW5kIGFzc2VydC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCBzZWUKLSsgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSsKLSsvKiBUaGUgQysrIHN0YW5kYXJkIHJlcXVpcmVzIHRoYXQgaWYgdGhlIGFzc2VydCBhcmd1bWVudCBpcyBhIGNvbnN0YW50Ci0rICAgc3ViZXhwcmVzc2lvbiwgdGhlbiB0aGUgYXNzZXJ0IGl0c2VsZiBpcyBvbmUsIHRvby4gICovCi0rY29uc3RleHByIGludAotK2NoZWNrX2NvbnN0ZXhwciAoKQotK3sKLSsgIHJldHVybiAoYXNzZXJ0ICh0cnVlKSwgMSk7Ci0rfQotKwotKy8qIE9iamVjdHMgb2YgdGhpcyBjbGFzcyBjYW4gYmUgY29udGV4dHVhbGx5IGNvbnZlcnRlZCB0byBib29sLCBidXQKLSsgICBjYW5ub3QgYmUgY29tcGFyZWQgdG8gaW50LiAgKi8KLStzdHJ1Y3Qgbm9faW50Ci0rewotKyAgbm9faW50ICgpID0gZGVmYXVsdDsKLSsgIG5vX2ludCAoY29uc3Qgbm9faW50ICYpID0gZGVsZXRlOwotKwotKyAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCAoKSBjb25zdAotKyAgewotKyAgICByZXR1cm4gdHJ1ZTsKLSsgIH0KLSsKLSsgIGJvb2wgb3BlcmF0b3IhICgpIGNvbnN0OyAvKiBObyBkZWZpbml0aW9uLiAgKi8KLSsgIHRlbXBsYXRlIDxjbGFzcyBUPiBib29sIG9wZXJhdG9yPT0gKFQpIGNvbnN0OyAvKiBObyBkZWZpbml0aW9uLiAgKi8KLSsgIHRlbXBsYXRlIDxjbGFzcyBUPiBib29sIG9wZXJhdG9yIT0gKFQpIGNvbnN0OyAvKiBObyBkZWZpbml0aW9uLiAgKi8KLSt9OwotKwotKy8qIFRoaXMgY2xhc3MgdGVzdHMgdGhhdCBvcGVyYXRvcj09IGlzIG5vdCB1c2VkIGJ5IGFzc2VydC4gICovCi0rc3RydWN0IGJvb2xfYW5kX2ludAotK3sKLSsgIGJvb2xfYW5kX2ludCAoKSA9IGRlZmF1bHQ7Ci0rICBib29sX2FuZF9pbnQgKGNvbnN0IG5vX2ludCAmKSA9IGRlbGV0ZTsKLSsKLSsgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wgKCkgY29uc3QKLSsgIHsKLSsgICAgcmV0dXJuIHRydWU7Ci0rICB9Ci0rCi0rICBib29sIG9wZXJhdG9yISAoKSBjb25zdDsgLyogTm8gZGVmaW5pdGlvbi4gICovCi0rICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gYm9vbCBvcGVyYXRvcj09IChUKSBjb25zdDsgLyogTm8gZGVmaW5pdGlvbi4gICovCi0rICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gYm9vbCBvcGVyYXRvciE9IChUKSBjb25zdDsgLyogTm8gZGVmaW5pdGlvbi4gICovCi0rfTsKLSsKLStzdGF0aWMgaW50Ci0rZG9fdGVzdCAoKQotK3sKLSsgIHsKLSsgICAgbm9faW50IHZhbHVlOwotKyAgICBhc3NlcnQgKHZhbHVlKTsKLSsgIH0KLSsKLSsgIHsKLSsgICAgYm9vbF9hbmRfaW50IHZhbHVlOwotKyAgICBhc3NlcnQgKHZhbHVlKTsKLSsgIH0KLSsKLSsgIHJldHVybiAwOwotK30KLSsKLSsjaW5jbHVkZSA8c3VwcG9ydC90ZXN0LWRyaXZlci5jPgotZGlmZiAtLWdpdCBhL2Fzc2VydC90c3QtYXNzZXJ0LWcrKy5jYyBiL2Fzc2VydC90c3QtYXNzZXJ0LWcrKy5jYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjhjMDY0MDIKLS0tLSAvZGV2L251bGwKLSsrKyBiL2Fzc2VydC90c3QtYXNzZXJ0LWcrKy5jYwotQEAgLTAsMCArMSwxOSBAQAotKy8qIFRlc3RzIGZvciBpbnRlcmFjdGlvbnMgYmV0d2VlbiBDKysgYW5kIGFzc2VydC4gIEdOVSBDKysxMSB2ZXJzaW9uLgotKyAgIENvcHlyaWdodCAoQykgMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHNlZQotKyAgIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1ZGUgPHRzdC1hc3NlcnQtYysrLmNjPgotLS0gCi0xLjkuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzMC1wbHVyYWxfY19ub19wcmVwcm9jZXNzb3JfbGluZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzMC1wbHVyYWxfY19ub19wcmVwcm9jZXNzb3JfbGluZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYwM2UxYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMwLXBsdXJhbF9jX25vX3ByZXByb2Nlc3Nvcl9saW5lcy5wYXRjaApAQCAtMCwwICsxLDIxIEBACitJbXByb3ZlIHJlcHJvZHVjaWJpbGl0eToKK0RvIG5vdCBwdXQgYW55ICNsaW5lIHByZXByb2Nlc3NvciBjb21tYW5kcyBpbiBiaXNvbiBnZW5lcmF0ZWQgZmlsZXMuCitUaGVzZSBsaW5lcyBjb250YWluIGFic29sdXRlIHBhdGhzIGNvbnRhaW5pbmcgZmlsZSBsb2NhdGlvbnMgb24KK3RoZSBob3N0IGJ1aWxkIG1hY2hpbmUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KKworZGlmZiAtLWdpdCBhL2ludGwvTWFrZWZpbGUgYi9pbnRsL01ha2VmaWxlCitpbmRleCAyMjE5NzE3Li5hMjAzNzgwIDEwMDY0NAorLS0tIGEvaW50bC9NYWtlZmlsZQorKysrIGIvaW50bC9NYWtlZmlsZQorQEAgLTE1MSw3ICsxNTEsNyBAQCAkKG9ianBmeCl0c3QtZ2V0dGV4dDYub3V0OiAkKG9ianBmeCl0c3QtZ2V0dGV4dC5vdXQKKyAKKyBDUFBGTEFHUyArPSAtRCdMT0NBTEVESVI9IiQobG9jYWxlZGlyKSInIFwKKyAJICAgIC1EJ0xPQ0FMRV9BTElBU19QQVRIPSIkKGxvY2FsZWRpcikiJworLUJJU09ORkxBR1MgPSAtLXlhY2MgLS1uYW1lLXByZWZpeD1fX2dldHRleHQgLS1vdXRwdXQKKytCSVNPTkZMQUdTID0gLS15YWNjIC0tbm8tbGluZXMgLS1uYW1lLXByZWZpeD1fX2dldHRleHQgLS1vdXRwdXQKKyAKKyAkKGluc3RfbG9jYWxlZGlyKS9sb2NhbGUuYWxpYXM6IGxvY2FsZS5hbGlhcyAkKCtmb3JjZSkKKyAJJChkby1pbnN0YWxsKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzEtbmF0aXZlc2RrLWRlcHJlY2F0ZS1saWJjcnlwdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMxLW5hdGl2ZXNkay1kZXByZWNhdGUtbGliY3J5cHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTkxMzJlZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMxLW5hdGl2ZXNkay1kZXByZWNhdGUtbGliY3J5cHQucGF0Y2gKQEAgLTAsMCArMSw0MTkgQEAKK0JhY2tncm91bmQgaW5mb3JtYXRpb246CisKK2h0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDE3LTA4L21zZzAxMjU3Lmh0bWwKK2h0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9DaGFuZ2VzL1JlcGxhY2VfZ2xpYmNfbGliY3J5cHRfd2l0aF9saWJ4Y3J5cHQKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2xpYmMtYWxwaGFAc291cmNld2FyZS5vcmddCitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KKworRnJvbTogWmFjayBXZWluYmVyZyA8emFja3dAcGFuaXguY29tPgorU3ViamVjdDogW1BBVENIXSBEZXByZWNhdGUgbGliY3J5cHQgYW5kIGRvbid0IGJ1aWxkIGl0IGJ5IGRlZmF1bHQKKworQmFjayBpbiBKdW5lLCBCasO2cm4gRXNzZXIgcHJvcG9zZWQgdG8gYWRkIE9wZW5CU0QtY29tcGF0aWJsZSBiY3J5cHQKK3N1cHBvcnQgdG8gb3VyIGltcGxlbWVudGF0aW9uIG9mIGNyeXB0KDMpLCBhbmQgWmFjayBXZWluYmVyZyByZXBsaWVkCit0aGF0IGl0IG1pZ2h0IGFjdHVhbGx5IG1ha2UgbW9yZSBzZW5zZSB0byBfcmVtb3ZlXyBsaWJjcnlwdCBmcm9tCitnbGliYywgZnJlZWluZyB1cCBsaWJjcnlwdC5zby4xIGFuZCBjcnlwdC5oIHRvIGJlIHByb3ZpZGVkIGJ5IGEKK3NlcGFyYXRlIHByb2plY3QgdGhhdCBjb3VsZCBtb3ZlIGZhc3Rlci4gIChGb3IgaW5zdGFuY2UsIGxpYnhjcnlwdDoKK2h0dHBzOi8vZ2l0aHViLmNvbS9iZXNzZXI4Mi9saWJ4Y3J5cHQpCisKK1RoaXMgcGF0Y2ggZGlzYWJsZXMgYnVpbGQgYW5kIGluc3RhbGxhdGlvbiBvZiBsaWJjcnlwdCBieSBkZWZhdWx0LiAgSXQKK2NhbiBiZSByZS1lbmFibGVkIHdpdGggLS1lbmFibGUtb2Jzb2xldGUtY3J5cHQgdG8gY29uZmlndXJlLiAgVW5saWtlCitsaWJuc2wsIHdlIGRvICpub3QqIGluc3RhbGwgYSBydW50aW1lIHNoYXJlZCBsaWJyYXJ5OyB0aGF0J3MgbGVmdCB0bwordGhlIHJlcGxhY2VtZW50LiAgKFVubGlrZSB0aGUgU3VuUlBDIHNpdHVhdGlvbiwgSSB0aGluayB3ZSBjYW4KK3Byb2JhYmx5IGRyb3AgdGhpcyBjb2RlIGFsdG9nZXRoZXIgaW4gYSByZWxlYXNlIG9yIHR3by4pCisKK1RoZSBmdW5jdGlvbiBwcm90b3R5cGVzIGZvciBjcnlwdCBhbmQgZW5jcnlwdCBhcmUgcmVtb3ZlZCBmcm9tCit1bmlzdGQuaCwgYW5kIHRoZSBmdW5jdGlvbiBwcm90b3R5cGUgZm9yIHNldGtleSBpcyByZW1vdmVkIGZyb20KK3N0ZGxpYi5oOyB0aGV5IGRvICpub3QqIGNvbWUgYmFjayB3aXRoIC0tZW5hYmxlLW9ic29sZXRlLWNyeXB0LiAgVGhpcworbWVhbnMgZ2xpYmMgbm8gbG9uZ2VyIHByb3ZpZGVzIHRoZSBQT1NJWCBDUllQVCBvcHRpb24sIGFuZCB0aGUgbWFjcm8KK19YT1BFTl9DUllQVCBpcyBhbHNvIHJlbW92ZWQgZnJvbSB1bmlzdGQuaCB0byBpbmRpY2F0ZSB0aGF0LgorKF9TQ19YT1BFTl9DUllQVCBpcyBzdGlsbCBkZWZpbmVkLCBidXQgc3lzY29uZihfU0NfWE9QRU5fQ1JZUFQpIHdpbGwKK3JldHVybiAtMSBhdCBydW50aW1lLikgIFRoZXNlIGZ1bmN0aW9ucyBhcmUgYWxzbyB1bmNvbmRpdGlvbmFsbHkKK3JlbW92ZWQgZnJvbSBjb25mb3JtL2RhdGEve3N0ZGxpYix1bmlzdGR9LmgtZGF0YS4KKworCSogcG9zaXgvdW5pc3RkLmggKF9YT1BFTl9DUllQVCwgY3J5cHQsIGVuY3J5cHQpOiBEb24ndCBkZWNsYXJlLgorCSogc3RkbGliL3N0ZGxpYi5oIChzZXRrZXkpOiBEb24ndCBkZWNsYXJlLgorCisJKiBjb25maWd1cmUuYWMgKC0tZW5hYmxlLW9ic29sZXRlLWNyeXB0KTogTmV3IGNvbmZpZ3VyZSBvcHRpb24uCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisJKiBjb25maWcubWFrZS5pbiAoYnVpbGQtb2Jzb2xldGUtY3J5cHQpOiBOZXcgbWFrZWZpbGUgdmFyaWFibGUuCisJKiBjcnlwdC9CYW5uZXI6IERlbGV0ZSBmaWxlLgorCSogY3J5cHQvTWFrZWZpbGU6IERvbid0IGJ1aWxkIGFueXRoaW5nIHVubGVzcworCSQoYnVpbGQtb2Jzb2xldGUtY3J5cHQpIGlzICd5ZXMnLgorCSogc3lzZGVwcy9zcGFyYy9zcGFyYzMyL3NwYXJjdjkvbXVsdGlhcmNoL01ha2VmaWxlOiBPbmx5IGFkZCB0aGluZ3MKKwl0byBsaWJjcnlwdC1zeXNkZXBfcm91dGluZXMgd2hlbiAkKGJ1aWxkLW9ic29sZXRlLWNyeXB0KSBpcyAneWVzJy4KKwkqIHN5c2RlcHMvc3BhcmMvc3BhcmM2NC9tdWx0aWFyY2gvTWFrZWZpbGU6IExpa2V3aXNlLgorCSogc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL01ha2VmaWxlOiBMaWtld2lzZS4KKworCSogY29uZm9ybS9NYWtlZmlsZTogT25seSBpbmNsdWRlIGxpYmNyeXB0LmEgaW4gbGlua25hbWVzcGFjZSB0ZXN0cworCXdoZW4gJChidWlsZC1vYnNvbGV0ZS1jcnlwdCkgaXMgJ3llcycuCisJKiBjb25mb3JtL2RhdGEvc3RkbGliLmgtZGF0YSAoc2V0a2V5KTogRG9uJ3QgZXhwZWN0LgorCSogY29uZm9ybS9kYXRhL3VuaXN0ZC5oLWRhdGEgKGNyeXB0LCBlbmNyeXB0KTogRG9uJ3QgZXhwZWN0LgorCSogZWxmL01ha2VmaWxlOiBPbmx5IHBlcmZvcm0gdmFyaW91cyB0ZXN0cyBvZiBsaWJjcnlwdC5zby9saWJjcnlwdC5hCisJd2hlbiAkKGJ1aWxkLW9ic29sZXRlLWNyeXB0KSBpcyAneWVzJy4KKwkqIGVsZi90c3QtbGlua2FsbC1zdGF0aWMuYzogRG9uJ3QgaW5jbHVkZSBjcnlwdC5oIHdoZW4gVVNFX0NSWVBUCisJaXMgZmFsc2UuCistLS0KKyBORVdTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxOCArKysrKysrKysrKysrKysrKysKKyBjb25maWcubWFrZS5pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCisgY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTMgKysrKysrKysrKysrKworIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4ICsrKysrKysrCisgY29uZm9ybS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTQgKysrKysrKysrKy0tLS0KKyBjb25mb3JtL2RhdGEvc3RkbGliLmgtZGF0YSAgICAgICAgICAgICAgICAgICAgICAgfCAgMyAtLS0KKyBjb25mb3JtL2RhdGEvdW5pc3RkLmgtZGF0YSAgICAgICAgICAgICAgICAgICAgICAgfCAgNiAtLS0tLS0KKyBjcnlwdC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNSArKysrKworIGVsZi9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2ICsrKysrKysrKysrKy0tLS0KKyBlbGYvdHN0LWxpbmthbGwtc3RhdGljLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArKworIHBvc2l4L3VuaXN0ZC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2IC0tLS0tLS0tLS0tLS0tLS0KKyBzdGRsaWIvc3RkbGliLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNiAtLS0tLS0KKyBzeXNkZXBzL3NwYXJjL3NwYXJjMzIvc3BhcmN2OS9tdWx0aWFyY2gvTWFrZWZpbGUgfCAgMiArKworIHN5c2RlcHMvc3BhcmMvc3BhcmM2NC9tdWx0aWFyY2gvTWFrZWZpbGUgICAgICAgICB8ICAyICsrCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL01ha2VmaWxlICAgICAgICAgICAgIHwgIDIgKysKKyAxNSBmaWxlcyBjaGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZy5tYWtlLmluIGIvY29uZmlnLm1ha2UuaW4KK2luZGV4IDllNWUyNGIyYzYuLjhmZTYxMGQwNGQgMTAwNjQ0CistLS0gYS9jb25maWcubWFrZS5pbgorKysrIGIvY29uZmlnLm1ha2UuaW4KK0BAIC04Miw2ICs4Miw3IEBAIG1hY2gtaW50ZXJmYWNlLWxpc3QgPSBAbWFjaF9pbnRlcmZhY2VfbGlzdEAKKyAKKyBleHBlcmltZW50YWwtbWFsbG9jID0gQGV4cGVyaW1lbnRhbF9tYWxsb2NACisgCisrYnVpbGQtb2Jzb2xldGUtY3J5cHQgPSBAYnVpbGRfb2Jzb2xldGVfY3J5cHRACisgbnNzLWNyeXB0ID0gQGxpYmNfY3ZfbnNzX2NyeXB0QAorIHN0YXRpYy1uc3MtY3J5cHQgPSBAbGliY19jdl9zdGF0aWNfbnNzX2NyeXB0QAorIAorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggN2E4YmQzZjgxNy4uNDZmNmJkN2Y4NiAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtNjcyLDYgKzY3Miw3IEBAIGJhc2VfbWFjaGluZQorIGhhdmVfdHVuYWJsZXMKKyBidWlsZF9wdF9jaG93bgorIGJ1aWxkX25zY2QKKytidWlsZF9vYnNvbGV0ZV9jcnlwdAorIGJ1aWxkX29ic29sZXRlX25zbAorIGxpbmtfb2Jzb2xldGVfcnBjCisgbGliY19jdl9zdGF0aWNfbnNzX2NyeXB0CitAQCAtNzgyLDYgKzc4Myw3IEBAIGVuYWJsZV9leHBlcmltZW50YWxfbWFsbG9jCisgZW5hYmxlX25zc19jcnlwdAorIGVuYWJsZV9vYnNvbGV0ZV9ycGMKKyBlbmFibGVfb2Jzb2xldGVfbnNsCisrZW5hYmxlX29ic29sZXRlX2NyeXB0CisgZW5hYmxlX3N5c3RlbXRhcAorIGVuYWJsZV9idWlsZF9uc2NkCisgZW5hYmxlX25zY2QKK0BAIC0xNDUzLDYgKzE0NTUsNyBAQCBPcHRpb25hbCBGZWF0dXJlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmstdGltZSB1c2FnZQorICAgLS1lbmFibGUtb2Jzb2xldGUtbnNsICAgYnVpbGQgYW5kIGluc3RhbGwgdGhlIG9ic29sZXRlIGxpYm5zbCBsaWJyYXJ5IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kaW5nIE5TUyBtb2R1bGVzCisrICAtLWVuYWJsZS1vYnNvbGV0ZS1jcnlwdCBidWlsZCBhbmQgaW5zdGFsbCB0aGUgb2Jzb2xldGUgbGliY3J5cHQgbGlicmFyeQorICAgLS1lbmFibGUtc3lzdGVtdGFwICAgICAgZW5hYmxlIHN5c3RlbXRhcCBzdGF0aWMgcHJvYmUgcG9pbnRzIFtkZWZhdWx0PW5vXQorICAgLS1kaXNhYmxlLWJ1aWxkLW5zY2QgICAgZGlzYWJsZSBidWlsZGluZyBhbmQgaW5zdGFsbGluZyB0aGUgbnNjZCBkYWVtb24KKyAgIC0tZGlzYWJsZS1uc2NkICAgICAgICAgIGxpYnJhcnkgZnVuY3Rpb25zIHdpbGwgbm90IGNvbnRhY3QgdGhlIG5zY2QgZGFlbW9uCitAQCAtMzYzMiw2ICszNjM1LDE2IEBAIGlmIHRlc3QgIiRidWlsZF9vYnNvbGV0ZV9uc2wiID0geWVzOyB0aGVuCisgCisgZmkKKyAKKysjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtb2Jzb2xldGUtY3J5cHQgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7ZW5hYmxlX29ic29sZXRlX2NyeXB0K3NldH0iID0gc2V0OyB0aGVuIDoKKysgIGVuYWJsZXZhbD0kZW5hYmxlX29ic29sZXRlX2NyeXB0OyBidWlsZF9vYnNvbGV0ZV9jcnlwdD0kZW5hYmxldmFsCisrZWxzZQorKyAgYnVpbGRfb2Jzb2xldGVfY3J5cHQ9bm8KKytmaQorKworKworKworKworICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1zeXN0ZW10YXAgd2FzIGdpdmVuLgorIGlmIHRlc3QgIiR7ZW5hYmxlX3N5c3RlbXRhcCtzZXR9IiA9IHNldDsgdGhlbiA6CisgICBlbmFibGV2YWw9JGVuYWJsZV9zeXN0ZW10YXA7IHN5c3RlbXRhcD0kZW5hYmxldmFsCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBjYTEyODJhNmIzLi4wMTQyMzUzNzQwIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0zNzgsNiArMzc4LDE0IEBAIGlmIHRlc3QgIiRidWlsZF9vYnNvbGV0ZV9uc2wiID0geWVzOyB0aGVuCisgICBBQ19ERUZJTkUoTElOS19PQlNPTEVURV9OU0wpCisgZmkKKyAKKytBQ19BUkdfRU5BQkxFKFtvYnNvbGV0ZS1jcnlwdF0sCisrICAgICAgICAgICAgICBBQ19IRUxQX1NUUklORyhbLS1lbmFibGUtb2Jzb2xldGUtY3J5cHRdLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1aWxkIGFuZCBpbnN0YWxsIHRoZSBvYnNvbGV0ZSBsaWJjcnlwdCBsaWJyYXJ5XSksCisrICAgICAgICAgICAgICBbYnVpbGRfb2Jzb2xldGVfY3J5cHQ9JGVuYWJsZXZhbF0sCisrICAgICAgICAgICAgICBbYnVpbGRfb2Jzb2xldGVfY3J5cHQ9bm9dKQorK0FDX1NVQlNUKGJ1aWxkX29ic29sZXRlX2NyeXB0KQorKworKworIEFDX0FSR19FTkFCTEUoW3N5c3RlbXRhcF0sCisgICAgICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXN5c3RlbXRhcF0sCisgCSAgICAgICBbZW5hYmxlIHN5c3RlbXRhcCBzdGF0aWMgcHJvYmUgcG9pbnRzIEA8OkBkZWZhdWx0PW5vQDo+QF0pXSwKK2RpZmYgLS1naXQgYS9jb25mb3JtL01ha2VmaWxlIGIvY29uZm9ybS9NYWtlZmlsZQoraW5kZXggODY0ZmRlY2EyMS4uNWVmNDc0ZmIyNCAxMDA2NDQKKy0tLSBhL2NvbmZvcm0vTWFrZWZpbGUKKysrKyBiL2NvbmZvcm0vTWFrZWZpbGUKK0BAIC0xOTMsMjIgKzE5MywyOCBAQCBsaW5rbmFtZXNwYWNlLWxpYnMtdGhyID0gJChsaW5rbmFtZXNwYWNlLWxpYnMtaXNvYykgXAorIAkJCSAkKGNvbW1vbi1vYmpwZngpcnQvbGlicnQuYSAkKHN0YXRpYy10aHJlYWQtbGlicmFyeSkKKyBsaW5rbmFtZXNwYWNlLWxpYnMtcG9zaXggPSAkKGxpbmtuYW1lc3BhY2UtbGlicy10aHIpIFwKKyAJCQkgICAkKGNvbW1vbi1vYmpwZngpZGxmY24vbGliZGwuYQorLWxpbmtuYW1lc3BhY2UtbGlicy14c2kgPSAkKGxpbmtuYW1lc3BhY2UtbGlicy1wb3NpeCkgXAorLQkJCSAkKGNvbW1vbi1vYmpwZngpY3J5cHQvbGliY3J5cHQuYQorK2xpbmtuYW1lc3BhY2UtbGlicy14c2kgPSAkKGxpbmtuYW1lc3BhY2UtbGlicy1wb3NpeCkKKyBsaW5rbmFtZXNwYWNlLWxpYnMtSVNPID0gJChsaW5rbmFtZXNwYWNlLWxpYnMtaXNvYykKKyBsaW5rbmFtZXNwYWNlLWxpYnMtSVNPOTkgPSAkKGxpbmtuYW1lc3BhY2UtbGlicy1pc29jKQorIGxpbmtuYW1lc3BhY2UtbGlicy1JU08xMSA9ICQobGlua25hbWVzcGFjZS1saWJzLWlzb2MpCistbGlua25hbWVzcGFjZS1saWJzLVhQRzQgPSAkKGxpbmtuYW1lc3BhY2UtbGlicy1pc29jKSBcCistCQkJICAkKGNvbW1vbi1vYmpwZngpY3J5cHQvbGliY3J5cHQuYQorK2xpbmtuYW1lc3BhY2UtbGlicy1YUEc0ID0gJChsaW5rbmFtZXNwYWNlLWxpYnMtaXNvYykKKyBsaW5rbmFtZXNwYWNlLWxpYnMtWFBHNDIgPSAkKGxpbmtuYW1lc3BhY2UtbGlicy1YUEc0KQorIGxpbmtuYW1lc3BhY2UtbGlicy1QT1NJWCA9ICQobGlua25hbWVzcGFjZS1saWJzLXRocikKKyBsaW5rbmFtZXNwYWNlLWxpYnMtVU5JWDk4ID0gJChsaW5rbmFtZXNwYWNlLWxpYnMteHNpKQorIGxpbmtuYW1lc3BhY2UtbGlicy1YT1BFTjJLID0gJChsaW5rbmFtZXNwYWNlLWxpYnMteHNpKQorIGxpbmtuYW1lc3BhY2UtbGlicy1QT1NJWDIwMDggPSAkKGxpbmtuYW1lc3BhY2UtbGlicy1wb3NpeCkKKyBsaW5rbmFtZXNwYWNlLWxpYnMtWE9QRU4ySzggPSAkKGxpbmtuYW1lc3BhY2UtbGlicy14c2kpCisrCisraWZlcSAoJChidWlsZC1vYnNvbGV0ZS1jcnlwdCkseWVzKQorK2xpbmtuYW1lc3BhY2UtbGlicy14c2kgKz0gJChjb21tb24tb2JqcGZ4KWNyeXB0L2xpYmNyeXB0LmEKKytsaW5rbmFtZXNwYWNlLWxpYnMtWFBHNCArPSAkKGNvbW1vbi1vYmpwZngpY3J5cHQvbGliY3J5cHQuYQorK2VuZGlmCisrCisgbGlua25hbWVzcGFjZS1saWJzID0gJChmb3JlYWNoIHN0ZCwkKGNvbmZvcm10ZXN0LXN0YW5kYXJkcyksXAorIAkJCQkgICAkKGxpbmtuYW1lc3BhY2UtbGlicy0kKHN0ZCkpKQorIAorKworKworICQobGlua25hbWVzcGFjZS1zeW1saXN0LXN0ZGxpYnMtdGVzdHMpOiAkKG9ianBmeClzeW1saXN0LXN0ZGxpYnMtJTogXAorIAkJCQkJJChsaW5rbmFtZXNwYWNlLWxpYnMpCisgCUxDX0FMTD1DICQoUkVBREVMRikgLVcgLXMgJChsaW5rbmFtZXNwYWNlLWxpYnMtJCopID4gJEA7IFwKK2RpZmYgLS1naXQgYS9jb25mb3JtL2RhdGEvc3RkbGliLmgtZGF0YSBiL2NvbmZvcm0vZGF0YS9zdGRsaWIuaC1kYXRhCitpbmRleCBkOGZjY2NjMmZiLi42OTEzODI4MTk2IDEwMDY0NAorLS0tIGEvY29uZm9ybS9kYXRhL3N0ZGxpYi5oLWRhdGEKKysrKyBiL2NvbmZvcm0vZGF0YS9zdGRsaWIuaC1kYXRhCitAQCAtMTQ5LDkgKzE0OSw2IEBAIGZ1bmN0aW9uIHt1bnNpZ25lZCBzaG9ydCBpbnQqfSBzZWVkNDggKHVuc2lnbmVkIHNob3J0IGludFszXSkKKyAjaWYgIWRlZmluZWQgSVNPICYmICFkZWZpbmVkIElTTzk5ICYmICFkZWZpbmVkIElTTzExICYmICFkZWZpbmVkIFBPU0lYICYmICFkZWZpbmVkIFhQRzQgJiYgIWRlZmluZWQgWFBHNDIgJiYgIWRlZmluZWQgVU5JWDk4CisgZnVuY3Rpb24gaW50IHNldGVudiAoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBpbnQpCisgI2VuZGlmCistI2lmICFkZWZpbmVkIElTTyAmJiAhZGVmaW5lZCBJU085OSAmJiAhZGVmaW5lZCBJU08xMSAmJiAhZGVmaW5lZCBQT1NJWCAmJiAhZGVmaW5lZCBQT1NJWDIwMDgKKy1mdW5jdGlvbiB2b2lkIHNldGtleSAoY29uc3QgY2hhciopCistI2VuZGlmCisgI2lmICFkZWZpbmVkIElTTyAmJiAhZGVmaW5lZCBJU085OSAmJiAhZGVmaW5lZCBJU08xMSAmJiAhZGVmaW5lZCBYUEc0ICYmICFkZWZpbmVkIFBPU0lYICYmICFkZWZpbmVkIFBPU0lYMjAwOAorIGZ1bmN0aW9uIHtjaGFyKn0gc2V0c3RhdGUgKGNoYXIqKQorICNlbmRpZgorZGlmZiAtLWdpdCBhL2NvbmZvcm0vZGF0YS91bmlzdGQuaC1kYXRhIGIvY29uZm9ybS9kYXRhL3VuaXN0ZC5oLWRhdGEKK2luZGV4IGRkZjRmMjUxMzIuLmFhMDcwNTI4ZTggMTAwNjQ0CistLS0gYS9jb25mb3JtL2RhdGEvdW5pc3RkLmgtZGF0YQorKysrIGIvY29uZm9ybS9kYXRhL3VuaXN0ZC5oLWRhdGEKK0BAIC00MzcsOSArNDM3LDYgQEAgZnVuY3Rpb24gaW50IGNocm9vdCAoY29uc3QgY2hhciopCisgZnVuY3Rpb24gaW50IGNob3duIChjb25zdCBjaGFyKiwgdWlkX3QsIGdpZF90KQorIGZ1bmN0aW9uIGludCBjbG9zZSAoaW50KQorIGZ1bmN0aW9uIHNpemVfdCBjb25mc3RyIChpbnQsIGNoYXIqLCBzaXplX3QpCistI2lmICFkZWZpbmVkIFBPU0lYICYmICFkZWZpbmVkIFBPU0lYMjAwOAorLWZ1bmN0aW9uIHtjaGFyKn0gY3J5cHQgKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKikKKy0jZW5kaWYKKyAjaWYgZGVmaW5lZCBYUEc0IHx8IGRlZmluZWQgWFBHNDIgfHwgZGVmaW5lZCBVTklYOTgKKyBmdW5jdGlvbiB7Y2hhcip9IGN0ZXJtaWQgKGNoYXIqKQorIGZ1bmN0aW9uIHtjaGFyKn0gY3VzZXJpZCAoY2hhciopCitAQCAtNDQ5LDkgKzQ0Niw2IEBAIGFsbG93IGN1c2VyaWQKKyAjZW5kaWYKKyBmdW5jdGlvbiBpbnQgZHVwIChpbnQpCisgZnVuY3Rpb24gaW50IGR1cDIgKGludCwgaW50KQorLSNpZiAhZGVmaW5lZCBQT1NJWCAmJiAhZGVmaW5lZCBQT1NJWDIwMDgKKy1mdW5jdGlvbiB2b2lkIGVuY3J5cHQgKGNoYXJbNjRdLCBpbnQpCistI2VuZGlmCisgZnVuY3Rpb24gaW50IGV4ZWNsIChjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIC4uLikKKyBmdW5jdGlvbiBpbnQgZXhlY2xlIChjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIC4uLikKKyBmdW5jdGlvbiBpbnQgZXhlY2xwIChjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIC4uLikKK2RpZmYgLS1naXQgYS9jcnlwdC9NYWtlZmlsZSBiL2NyeXB0L01ha2VmaWxlCitpbmRleCAzMDM4MDBkZjczLi4wMjRlYzJjNmFiIDEwMDY0NAorLS0tIGEvY3J5cHQvTWFrZWZpbGUKKysrKyBiL2NyeXB0L01ha2VmaWxlCitAQCAtMjIsNiArMjIsOCBAQCBzdWJkaXIJOj0gY3J5cHQKKyAKKyBpbmNsdWRlIC4uL01ha2Vjb25maWcKKyAKKytpZmVxICgkKGJ1aWxkLW9ic29sZXRlLWNyeXB0KSx5ZXMpCisrCisgaGVhZGVycyA6PSBjcnlwdC5oCisgCisgZXh0cmEtbGlicyA6PSBsaWJjcnlwdAorQEAgLTUyLDkgKzU0LDExIEBAIHRlc3RzICs9IG1kNXRlc3Qgc2hhMjU2dGVzdCBzaGE1MTJ0ZXN0CisgIyBtYWNoaW5lIG92ZXIgYSBtaW51dGUuCisgeHRlc3RzID0gbWQ1dGVzdC1naWFudAorIGVuZGlmCisrZW5kaWYKKyAKKyBpbmNsdWRlIC4uL1J1bGVzCisgCisraWZlcSAoJChidWlsZC1vYnNvbGV0ZS1jcnlwdCkseWVzKQorIGlmbmVxICgkKG5zcy1jcnlwdCkseWVzKQorIG1kNS1yb3V0aW5lcyA6PSBtZDUgJChmaWx0ZXIgbWQ1JSwkKGxpYmNyeXB0LXN5c2RlcF9yb3V0aW5lcykpCisgc2hhMjU2LXJvdXRpbmVzIDo9IHNoYTI1NiAkKGZpbHRlciBzaGEyNTYlLCQobGliY3J5cHQtc3lzZGVwX3JvdXRpbmVzKSkKK0BAIC03MSwzICs3NSw0IEBAICQoYWRkcHJlZml4ICQob2JqcGZ4KSwkKHRlc3RzKSk6ICQob2JqcGZ4KWxpYmNyeXB0LnNvCisgZWxzZQorICQoYWRkcHJlZml4ICQob2JqcGZ4KSwkKHRlc3RzKSk6ICQob2JqcGZ4KWxpYmNyeXB0LmEKKyBlbmRpZgorK2VuZGlmCitkaWZmIC0tZ2l0IGEvZWxmL01ha2VmaWxlIGIvZWxmL01ha2VmaWxlCitpbmRleCAyYTQzMmQ4YmVlLi4zNjZmN2I4MGVjIDEwMDY0NAorLS0tIGEvZWxmL01ha2VmaWxlCisrKysgYi9lbGYvTWFrZWZpbGUKK0BAIC0zODUsMTUgKzM4NSwxOSBAQCAkKG9ianBmeCl0c3QtX2RsX2FkZHJfaW5zaWRlX29iamVjdDogJChvYmpwZngpZGwtYWRkci1vYmoub3MKKyBDRkxBR1MtdHN0LV9kbF9hZGRyX2luc2lkZV9vYmplY3QuYyArPSAkKFBJRS1jY2ZsYWcpCisgZW5kaWYKKyAKKy0jIEJ5IGRlZmF1bHQgdHN0LWxpbmthbGwtc3RhdGljIHNob3VsZCB0cnkgdG8gdXNlIGNyeXB0IHJvdXRpbmVzIHRvIHRlc3QKKy0jIHN0YXRpYyBsaWJjcnlwdCB1c2UuCistQ0ZMQUdTLXRzdC1saW5rYWxsLXN0YXRpYy5jICs9IC1EVVNFX0NSWVBUPTEKKytpZmVxICgkKGJ1aWxkLW9ic29sZXRlLWNyeXB0KSx5ZXMpCisrIyBJZiB0aGUgbGliY3J5cHQgbGlicmFyeSBpcyBiZWluZyBidWlsdCwgdHN0LWxpbmthbGwtc3RhdGljIHNob3VsZAorKyMgdHJ5IHRvIHVzZSBjcnlwdCByb3V0aW5lcyB0byB0ZXN0IHN0YXRpYyBsaWJjcnlwdCB1c2UuCisrQ0ZMQUdTLXRzdC1saW5rYWxsLXN0YXRpYy5jID0gLURVU0VfQ1JZUFQ9MQorICMgSG93ZXZlciwgaWYgd2UgYXJlIHVzaW5nIE5TUyBjcnlwdG8gYW5kIHdlIGRvbid0IGhhdmUgYSBzdGF0aWMKKyAjIGxpYnJhcnksIHRoZW4gd2UgZXhjbHVkZSB0aGUgdXNlIG9mIGNyeXB0IGZ1bmN0aW9ucyBpbiB0aGUgdGVzdC4KKyAjIFdlIHNpbWlsYXJseSBleGNsdWRlIGxpYmNyeXB0LmEgZnJvbSB0aGUgc3RhdGljIGxpbmsgKHNlZSBiZWxvdykuCisgaWZlcSAoeWVzbm8sJChuc3MtY3J5cHQpJChzdGF0aWMtbnNzLWNyeXB0KSkKKyBDRkxBR1MtdHN0LWxpbmthbGwtc3RhdGljLmMgKz0gLVVVU0VfQ1JZUFQgLURVU0VfQ1JZUFQ9MAorIGVuZGlmCisrZWxzZQorK0NGTEFHUy10c3QtbGlua2FsbC1zdGF0aWMuYyA9IC1EVVNFX0NSWVBUPTAKKytlbmRpZgorIAorIGluY2x1ZGUgLi4vUnVsZXMKKyAKK0BAIC0xMTEzLDggKzExMTcsMTAgQEAgbG9jYWxwbHQtYnVpbHQtZHNvIDo9ICQoYWRkcHJlZml4ICQoY29tbW9uLW9ianBmeCksXAorIAkJCQkgIHJ0L2xpYnJ0LnNvIFwKKyAJCQkJICBkbGZjbi9saWJkbC5zbyBcCisgCQkJCSAgcmVzb2x2L2xpYnJlc29sdi5zbyBcCistCQkJCSAgY3J5cHQvbGliY3J5cHQuc28gXAorIAkJICAgICAgICkKKytpZmVxICgkKGJ1aWxkLW9ic29sZXRlLWNyeXB0KSx5ZXMpCisrbG9jYWxwbHQtYnVpbHQtZHNvICs9ICQoYWRkcHJlZml4ICQoY29tbW9uLW9ianBmeCksIGNyeXB0L2xpYmNyeXB0LnNvKQorK2VuZGlmCisgaWZlcSAoJChidWlsZC1tYXRodmVjKSx5ZXMpCisgbG9jYWxwbHQtYnVpbHQtZHNvICs9ICQoYWRkcHJlZml4ICQoY29tbW9uLW9ianBmeCksIG1hdGh2ZWMvbGlibXZlYy5zbykKKyBlbmRpZgorQEAgLTEzOTUsNiArMTQwMSw3IEBAICQob2JqcGZ4KXRzdC1saW5rYWxsLXN0YXRpYzogXAorICAgJChjb21tb24tb2JqcGZ4KXJlc29sdi9saWJhbmwuYSBcCisgICAkKHN0YXRpYy10aHJlYWQtbGlicmFyeSkKKyAKKytpZmVxICgkKGJ1aWxkLW9ic29sZXRlLWNyeXB0KSx5ZXMpCisgIyBJZiB3ZSBhcmUgdXNpbmcgTlNTIGNyeXB0byBhbmQgd2UgaGF2ZSB0aGUgYWJpbGl0eSB0byBsaW5rIHN0YXRpY2FsbHkKKyAjIHRoZW4gd2UgaW5jbHVkZSBsaWJjcnlwdC5hLCBvdGhlcndpc2Ugd2UgbGVhdmUgb3V0IGxpYmNyeXB0LmEgYW5kCisgIyBsaW5rIGFzIG11Y2ggYXMgd2UgY2FuIGludG8gdGhlIHRzdC1saW5rYWxsLXN0YXRpYyB0ZXN0LiAgVGhpcyBhc3N1bWVzCitAQCAtMTQxMCw2ICsxNDE3LDcgQEAgaWZlcSAobm8sJChuc3MtY3J5cHQpKQorICQob2JqcGZ4KXRzdC1saW5rYWxsLXN0YXRpYzogXAorICAgJChjb21tb24tb2JqcGZ4KWNyeXB0L2xpYmNyeXB0LmEKKyBlbmRpZgorK2VuZGlmCisgCisgIyBUaGUgYXBwbGljYXRpb24gZGVwZW5kcyBvbiB0aGUgRFNPLCBhbmQgdGhlIERTTyBsb2FkcyB0aGUgcGx1Z2luLgorICMgVGhlIHBsdWdpbiBhbHNvIGRlcGVuZHMgb24gdGhlIERTTy4gVGhpcyBjcmVhdGVzIHRoZSBjaXJjdWxhcgorZGlmZiAtLWdpdCBhL2VsZi90c3QtbGlua2FsbC1zdGF0aWMuYyBiL2VsZi90c3QtbGlua2FsbC1zdGF0aWMuYworaW5kZXggZThkZjM4Zjc0ZS4uMGZmYWU3YzcyMyAxMDA2NDQKKy0tLSBhL2VsZi90c3QtbGlua2FsbC1zdGF0aWMuYworKysrIGIvZWxmL3RzdC1saW5rYWxsLXN0YXRpYy5jCitAQCAtMTgsNyArMTgsOSBAQAorIAorICNpbmNsdWRlIDxtYXRoLmg+CisgI2luY2x1ZGUgPHB0aHJlYWQuaD4KKysjaWYgVVNFX0NSWVBUCisgI2luY2x1ZGUgPGNyeXB0Lmg+CisrI2VuZGlmCisgI2luY2x1ZGUgPHJlc29sdi5oPgorICNpbmNsdWRlIDxkbGZjbi5oPgorICNpbmNsdWRlIDx1dG1wLmg+CitkaWZmIC0tZ2l0IGEvcG9zaXgvdW5pc3RkLmggYi9wb3NpeC91bmlzdGQuaAoraW5kZXggNGQxNDlmOTk0NS4uZTc1Y2U0ZDRlYyAxMDA2NDQKKy0tLSBhL3Bvc2l4L3VuaXN0ZC5oCisrKysgYi9wb3NpeC91bmlzdGQuaAorQEAgLTEwNyw5ICsxMDcsNiBAQCBfX0JFR0lOX0RFQ0xTCisgLyogVGhlIFgvT3BlbiBVbml4IGV4dGVuc2lvbnMgYXJlIGF2YWlsYWJsZS4gICovCisgI2RlZmluZSBfWE9QRU5fVU5JWAkxCisgCistLyogRW5jcnlwdGlvbiBpcyBwcmVzZW50LiAgKi8KKy0jZGVmaW5lCV9YT1BFTl9DUllQVAkxCistCisgLyogVGhlIGVuaGFuY2VkIGludGVybmF0aW9uYWxpemF0aW9uIGNhcGFiaWxpdGllcyBhY2NvcmRpbmcgdG8gWFBHNC4yCisgICAgYXJlIHByZXNlbnQuICAqLworICNkZWZpbmUJX1hPUEVOX0VOSF9JMThOCTEKK0BAIC0xMTE4LDIwICsxMTE1LDcgQEAgc3NpemVfdCBjb3B5X2ZpbGVfcmFuZ2UgKGludCBfX2luZmQsIF9fb2ZmNjRfdCAqX19waW5vZmYsCisgZXh0ZXJuIGludCBmZGF0YXN5bmMgKGludCBfX2ZpbGRlcyk7CisgI2VuZGlmIC8qIFVzZSBQT1NJWDE5OTMwOSAqLworIAorLQorLS8qIFhQRzQuMiBzcGVjaWZpZXMgdGhhdCBwcm90b3R5cGVzIGZvciB0aGUgZW5jcnlwdGlvbiBmdW5jdGlvbnMgbXVzdAorLSAgIGJlIGRlZmluZWQgaGVyZS4gICovCisgI2lmZGVmCV9fVVNFX1hPUEVOCistLyogRW5jcnlwdCBhdCBtb3N0IDggY2hhcmFjdGVycyBmcm9tIEtFWSB1c2luZyBzYWx0IHRvIHBlcnR1cmIgREVTLiAgKi8KKy1leHRlcm4gY2hhciAqY3J5cHQgKGNvbnN0IGNoYXIgKl9fa2V5LCBjb25zdCBjaGFyICpfX3NhbHQpCistICAgICBfX1RIUk9XIF9fbm9ubnVsbCAoKDEsIDIpKTsKKy0KKy0vKiBFbmNyeXB0IGRhdGEgaW4gQkxPQ0sgaW4gcGxhY2UgaWYgRURGTEFHIGlzIHplcm87IG90aGVyd2lzZSBkZWNyeXB0CistICAgYmxvY2sgaW4gcGxhY2UuICAqLworLWV4dGVybiB2b2lkIGVuY3J5cHQgKGNoYXIgKl9fZ2xpYmNfYmxvY2ssIGludCBfX2VkZmxhZykKKy0gICAgIF9fVEhST1cgX19ub25udWxsICgoMSkpOworLQorLQorIC8qIFN3YWIgcGFpcnMgYnl0ZXMgaW4gdGhlIGZpcnN0IE4gYnl0ZXMgb2YgdGhlIGFyZWEgcG9pbnRlZCB0byBieQorICAgIEZST00gYW5kIGNvcHkgdGhlIHJlc3VsdCB0byBUTy4gIFRoZSB2YWx1ZSBvZiBUTyBtdXN0IG5vdCBiZSBpbiB0aGUKKyAgICByYW5nZSBbRlJPTSAtIE4gKyAxLCBGUk9NIC0gMV0uICBJZiBOIGlzIG9kZCB0aGUgZmlyc3QgYnl0ZSBpbiBGUk9NCitkaWZmIC0tZ2l0IGEvc3RkbGliL3N0ZGxpYi5oIGIvc3RkbGliL3N0ZGxpYi5oCitpbmRleCA2YjFlYWQzMWUwLi44ZTIzZTkzNTU3IDEwMDY0NAorLS0tIGEvc3RkbGliL3N0ZGxpYi5oCisrKysgYi9zdGRsaWIvc3RkbGliLmgKK0BAIC05NTgsMTIgKzk1OCw2IEBAIGV4dGVybiBpbnQgZ2V0c3Vib3B0IChjaGFyICoqX19yZXN0cmljdCBfX29wdGlvbnAsCisgI2VuZGlmCisgCisgCistI2lmZGVmIF9fVVNFX1hPUEVOCistLyogU2V0dXAgREVTIHRhYmxlcyBhY2NvcmRpbmcgS0VZLiAgKi8KKy1leHRlcm4gdm9pZCBzZXRrZXkgKGNvbnN0IGNoYXIgKl9fa2V5KSBfX1RIUk9XIF9fbm9ubnVsbCAoKDEpKTsKKy0jZW5kaWYKKy0KKy0KKyAvKiBYL09wZW4gcHNldWRvIHRlcm1pbmFsIGhhbmRsaW5nLiAgKi8KKyAKKyAjaWZkZWYgX19VU0VfWE9QRU4yS1hTSQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvc3BhcmMvc3BhcmMzMi9zcGFyY3Y5L211bHRpYXJjaC9NYWtlZmlsZSBiL3N5c2RlcHMvc3BhcmMvc3BhcmMzMi9zcGFyY3Y5L211bHRpYXJjaC9NYWtlZmlsZQoraW5kZXggYTZkMDhmM2EwMC4uZDhiODI5N2ZiMCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvc3BhcmMvc3BhcmMzMi9zcGFyY3Y5L211bHRpYXJjaC9NYWtlZmlsZQorKysrIGIvc3lzZGVwcy9zcGFyYy9zcGFyYzMyL3NwYXJjdjkvbXVsdGlhcmNoL01ha2VmaWxlCitAQCAtMSw2ICsxLDggQEAKKyBpZmVxICgkKHN1YmRpciksY3J5cHQpCisraWZlcSAoJChidWlsZC1vYnNvbGV0ZS1jcnlwdCkseWVzKQorIGxpYmNyeXB0LXN5c2RlcF9yb3V0aW5lcyArPSBtZDUtY3JvcCBzaGEyNTYtY3JvcCBzaGE1MTItY3JvcAorIGVuZGlmCisrZW5kaWYKKyAKKyBpZmVxICgkKHN1YmRpciksbG9jYWxlKQorIGxvY2FsZWRlZi1hdXggKz0gbWQ1LWNyb3AKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3NwYXJjL3NwYXJjNjQvbXVsdGlhcmNoL01ha2VmaWxlIGIvc3lzZGVwcy9zcGFyYy9zcGFyYzY0L211bHRpYXJjaC9NYWtlZmlsZQoraW5kZXggZWFmNzU4ZTdhYS4uMDE5OGY5ODg2ZiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvc3BhcmMvc3BhcmM2NC9tdWx0aWFyY2gvTWFrZWZpbGUKKysrKyBiL3N5c2RlcHMvc3BhcmMvc3BhcmM2NC9tdWx0aWFyY2gvTWFrZWZpbGUKK0BAIC0xLDYgKzEsOCBAQAorIGlmZXEgKCQoc3ViZGlyKSxjcnlwdCkKKytpZmVxICgkKGJ1aWxkLW9ic29sZXRlLWNyeXB0KSx5ZXMpCisgbGliY3J5cHQtc3lzZGVwX3JvdXRpbmVzICs9IG1kNS1jcm9wIHNoYTI1Ni1jcm9wIHNoYTUxMi1jcm9wCisgZW5kaWYKKytlbmRpZgorIAorIGlmZXEgKCQoc3ViZGlyKSxsb2NhbGUpCisgbG9jYWxlZGVmLWF1eCArPSBtZDUtY3JvcAorZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9NYWtlZmlsZSBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9NYWtlZmlsZQoraW5kZXggNGFkYzM1ZGUwNC4uNmNhYjRmM2EzMSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9NYWtlZmlsZQorKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL01ha2VmaWxlCitAQCAtMTksOCArMTksMTAgQEAgZW5kaWYKKyAjIEFkZCBhIHN5c2NhbGwgZnVuY3Rpb24gdG8gZWFjaCBsaWJyYXJ5IHRoYXQgbmVlZHMgb25lLgorIAorIGlmZXEgKCQoc3ViZGlyKSxjcnlwdCkKKytpZmVxICgkKGJ1aWxkLW9ic29sZXRlLWNyeXB0KSx5ZXMpCisgbGliY3J5cHQtc3lzZGVwX3JvdXRpbmVzICs9IGxpYmMtZG8tc3lzY2FsbAorIGVuZGlmCisrZW5kaWYKKyAKKyBpZmVxICgkKHN1YmRpcikscnQpCisgbGlicnQtc3lzZGVwX3JvdXRpbmVzICs9IGxpYmMtZG8tc3lzY2FsbAorLS0gCisyLjE2LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDE3LTE1NjcwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDE3LTE1NjcwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTA1MGE1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9DVkUtMjAxNy0xNTY3MC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLUZyb20gYTc2Mzc2ZGY3YzA3ZTU3N2E5NTE1YzNmYWE1ZGJkNTBiZGE1ZGEwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdWwgRWdnZXJ0IDxlZ2dlcnRAY3MudWNsYS5lZHU+Ci1EYXRlOiBGcmksIDIwIE9jdCAyMDE3IDE4OjQxOjE0ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIENWRS0yMDE3LTE1NjcwOiBnbG9iOiBGaXggb25lLWJ5dGUgb3ZlcmZsb3cgW0JaICMyMjMyMF0KLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgYzM2OWQ2NmU1NDI2YTMwZTQ3MjViMTAwZDVjZDI4ZTM3Mjc1NGY5MCkKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy0xNTY3MAotQWZmZWN0czogZ2xpYmMgPCAyLjI3Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gQ2hhbmdlTG9nICAgIHwgNiArKysrKysKLSBORVdTICAgICAgICAgfCA1ICsrKysrCi0gcG9zaXgvZ2xvYi5jIHwgMiArLQotIDMgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogZ2l0L05FV1MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9ORVdTCi0rKysgZ2l0L05FV1MKLUBAIC0yMDYsNiArMjA2LDExIEBAIFNlY3VyaXR5IHJlbGF0ZWQgY2hhbmdlczoKLSAqIEEgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eSBpbiBjbG50dWRwX2NhbGwgaW4gdGhlIFN1biBSUEMgc3lzdGVtIGhhcyBiZWVuCi0gICBmaXhlZCAoQ1ZFLTIwMTctMTIxMzMpLgotIAotKyAgQ1ZFLTIwMTctMTU2NzA6IFRoZSBnbG9iIGZ1bmN0aW9uLCB3aGVuIGludm9rZWQgd2l0aCBHTE9CX1RJTERFLAotKyAgc3VmZmVyZWQgZnJvbSBhIG9uZS1ieXRlIG92ZXJmbG93IGR1cmluZyB+IG9wZXJhdG9yIHByb2Nlc3NpbmcgKGVpdGhlcgotKyAgb24gdGhlIHN0YWNrIG9yIHRoZSBoZWFwLCBkZXBlbmRpbmcgb24gdGhlIGxlbmd0aCBvZiB0aGUgdXNlciBuYW1lKS4KLSsgIFJlcG9ydGVkIGJ5IFRpbSBSw7xoc2VuLgotKwotIFRoZSBmb2xsb3dpbmcgYnVncyBhcmUgcmVzb2x2ZWQgd2l0aCB0aGlzIHJlbGVhc2U6Ci0gCi0gICBbOTg0XSBuZXR3b3JrOiBSZXNwb25kIHRvIGNoYW5nZWQgcmVzb2x2LmNvbmYgaW4gZ2V0aG9zdGJ5bmFtZQotSW5kZXg6IGdpdC9wb3NpeC9nbG9iLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9wb3NpeC9nbG9iLmMKLSsrKyBnaXQvcG9zaXgvZ2xvYi5jCi1AQCAtODQzLDcgKzg0Myw3IEBAIGdsb2IgKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGludCBmbGFncywgaW4KLSAJCSAgKnAgPSAnXDAnOwotIAkJfQotIAkgICAgICBlbHNlCi0tCQkqKChjaGFyICopIG1lbXBjcHkgKG5ld3AsIGRpcm5hbWUgKyAxLCBlbmRfbmFtZSAtIGRpcm5hbWUpKQotKwkJKigoY2hhciAqKSBtZW1wY3B5IChuZXdwLCBkaXJuYW1lICsgMSwgZW5kX25hbWUgLSBkaXJuYW1lIC0gMSkpCi0gCQkgID0gJ1wwJzsKLSAJICAgICAgdXNlcl9uYW1lID0gbmV3cDsKLSAJICAgIH0KLUluZGV4OiBnaXQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvQ2hhbmdlTG9nCi0rKysgZ2l0L0NoYW5nZUxvZwotQEAgLTEsMyArMSw5IEBACi0rMjAxNy0xMC0yMCAgUGF1bCBFZ2dlcnQgPGVnZ2VydEBjcy51Y2xhLmVkdT4KLSsKLSsgICAgICAgW0JaICMyMjMyMF0KLSsgICAgICAgQ1ZFLTIwMTctMTU2NzAKLSsgICAgICAgKiBwb3NpeC9nbG9iLmMgKF9fZ2xvYik6IEZpeCBvbmUtYnl0ZSBvdmVyZmxvdy4KLSsKLSAyMDE3LTA4LTAyICBTaWRkaGVzaCBQb3lhcmVrYXIgIDxzaWRkaGVzaEBzb3VyY2V3YXJlLm9yZz4KLSAKLSAJKiB2ZXJzaW9uLmggKFJFTEVBU0UpOiBTZXQgdG8gInN0YWJsZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliY18yLjI2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkMWU2MzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNDQgKzAsMCBAQAotcmVxdWlyZSBnbGliYy5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRVM7bWQ1PWU5YTU1OGUyNDNiMzZkMzIwOWYzODBkZWIzOTRiMjEzIFwKLSAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICBmaWxlOi8vcG9zaXgvcnhzcGVuY2VyL0NPUFlSSUdIVDttZDU9ZGM1NDg1YmIzOTRhMTNiMjMzMmVjMWM3ODVmNWQ4M2EgXAotICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLQotREVQRU5EUyArPSAiZ3BlcmYtbmF0aXZlIGJpc29uLW5hdGl2ZSIKLQotU1JDUkVWID89ICJkMzAwMDQxYzUzM2EzZDgzN2M5ZjM3YTA5OWJjYzk1NDY2ODYwZTk4IgotCi1TUkNCUkFOQ0ggPz0gInJlbGVhc2UvJHtQVn0vbWFzdGVyIgotCi1HTElCQ19HSVRfVVJJID89ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvZ2xpYmMuZ2l0IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrXC5cZCsoXC5cZCspKikiCi0KLVNSQ19VUkkgPSAiJHtHTElCQ19HSVRfVVJJfTticmFuY2g9JHtTUkNCUkFOQ0h9O25hbWU9Z2xpYmMgXAotICAgICAgICAgICBmaWxlOi8vZXRjL2xkLnNvLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vZ2VuZXJhdGUtc3VwcG9ydGVkLm1rIFwKLSAgICAgICAgICAgXAotICAgICAgICAgICAke05BVElWRVNES0ZJWEVTfSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA4LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOS1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTItc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEzLUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTQteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNS10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTYtUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE3LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOC1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTktZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIwLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIxLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIyLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI0LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNS1sb2NhbGUtZml4LWhhcmQtY29kZWQtcmVmZXJlbmNlLXRvLWdjYy1FLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjctZ2xpYmMtcmVzZXQtZGwtbG9hZC13cml0ZS1sb2NrLWFmdGVyLWZvcmtpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyOC1CdWctNDU3OC1hZGQtbGQuc28tbG9jay13aGlsZS1mb3JrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjktYml0cy1zaWdpbmZvLWNvbnN0cy5oLWVudW0tZGVmaW5pdGlvbi1mb3ItVFJBUF9IV0JLUC5wYXRjaCBcCi0iCi0KLU5BVElWRVNES0ZJWEVTID89ICIiCi1OQVRJVkVTREtGSVhFU19jbGFzcy1uYXRpdmVzZGsgPSAiXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1uYXRpdmVzZGstZ2xpYmMtTG9vay1mb3ItaG9zdC1zeXN0ZW0tbGQuc28uY2FjaGUtYXMtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZWxvY2F0ZS1sb2NhbGVzLnBhdGNoIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLUIgPSAiJHtXT1JLRElSfS9idWlsZC0ke1RBUkdFVF9TWVN9IgotCi1QQUNLQUdFU19EWU5BTUlDID0gIiIKLQotIyB0aGUgLWlzeXN0ZW0gaW4gYml0YmFrZS5jb25mIHNjcmV3cyB1cCBnbGliYyBkb19zdGFnZQotQlVJTERfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfSU5DRElSX05BVElWRX0iCi1UQVJHRVRfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfRElSX1RBUkdFVH0ke2luY2x1ZGVkaXJ9IgotCi1HTElCQ19CUk9LRU5fTE9DQUxFUyA9ICIiCi0jCi0jIFdlIHdpbGwgc2tpcCBwYXJzaW5nIGdsaWJjIHdoZW4gdGFyZ2V0IHN5c3RlbSBDIGxpYnJhcnkgc2VsZWN0aW9uIGlzIG5vdCBnbGliYwotIyB0aGlzIGhlbHBzIGluIGVhc2luZyBvdXQgcGFyc2luZyBmb3Igbm9uLWdsaWJjIHN5c3RlbSBsaWJyYXJpZXMKLSMKLUNPTVBBVElCTEVfSE9TVF9saWJjLW11c2xfY2xhc3MtdGFyZ2V0ID0gIm51bGwiCi0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1rZXJuZWw9JHtPTERFU1RfS0VSTkVMfSBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWN2cyAtLWRpc2FibGUtcHJvZmlsZSBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRlYnVnIC0td2l0aG91dC1nZCBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtY2xvY2FsZT1nbnUgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWFkZC1vbnM9bGliaWRuIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtaGVhZGVycz0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXNlbGludXggXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLW9ic29sZXRlLXJwYyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtb2Jzb2xldGUtbnNsIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS10dW5hYmxlcyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtYmluZC1ub3cgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXN0YWNrLXByb3RlY3Rvcj1zdHJvbmcgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXN0YWNrZ3VhcmQtcmFuZG9taXphdGlvbiBcCi0gICAgICAgICAgICAgICAgJHtHTElCQ19FWFRSQV9PRUNPTkZ9IgotCi1FWFRSQV9PRUNPTkYgKz0gIiR7QGdldF9saWJjX2ZwdV9zZXR0aW5nKGJiLCBkKX0iCi1FWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGliYy1pbmV0LWFubCcsICctLWVuYWJsZS1uc2NkJywgJy0tZGlzYWJsZS1uc2NkJywgZCl9IgotCi0KLWRvX3BhdGNoX2FwcGVuZCgpIHsKLSAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2RvX2ZpeF9yZWFkbGliX2MnLCBkKQotfQotCi1kb19maXhfcmVhZGxpYl9jICgpIHsKLQlzZWQgLWkgLWUgJ3MjT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTIyR7RUdMSUJDX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTfSMnICR7U30vZWxmL3JlYWRsaWIuYwotfQotCi1kb19jb25maWd1cmUgKCkgewotIyBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIHRvIGF2b2lkIHRoZSBhdXRvY29uZi9hdXRvbWFrZS9hY2xvY2FsL2F1dG9oZWFkZXIKLSMgY2FsbHMgZm9yIG5vdwotIyBkb24ndCBwYXNzIENQUEZMQUdTIGludG8gY29uZmlndXJlLCBzaW5jZSBpdCB1cHNldHMgdGhlIGtlcm5lbC1oZWFkZXJzCi0jIHZlcnNpb24gY2hlY2sgYW5kIGRvZXNuJ3QgcmVhbGx5IGhlbHAgd2l0aCBhbnl0aGluZwotICAgICAgICAoY2QgJHtTfSAmJiBnbnUtY29uZmlnaXplKSB8fCBkaWUgImZhaWx1cmUgaW4gcnVubmluZyBnbnUtY29uZmlnaXplIgotICAgICAgICBmaW5kICR7U30gLW5hbWUgImNvbmZpZ3VyZSIgfCB4YXJncyB0b3VjaAotICAgICAgICAjICJwbHVyYWwuYyIgbWF5IG9yIG1heSBub3QgZ2V0IHJlZ2VuZXJhdGVkIGZyb20gInBsdXJhbC55IiBzbyB3ZQotICAgICAgICAjIHRvdWNoICJwbHVyYWwueSIgdG8gbWFrZSBzdXJlIGl0IGRvZXMuIChUaGlzIHNob3VsZCBub3QgYmUgbmVlZGVkCi0gICAgICAgICMgZm9yIGdsaWJjIHZlcnNpb24gMi4yNispCi0gICAgICAgIGZpbmQgJHtTfS9pbnRsIC1uYW1lICJwbHVyYWwueSIgfCB4YXJncyB0b3VjaAotICAgICAgICBDUFBGTEFHUz0iIiBvZV9ydW5jb25mCi19Ci0KLXJwY3N2YyA9ICJib290cGFyYW1fcHJvdC54IG5sbV9wcm90LnggcnN0YXQueCBcCi0JICB5cHBhc3N3ZC54IGtsbV9wcm90LnggcmV4Lnggc21faW50ZXIueCBtb3VudC54IFwKLQkgIHJ1c2Vycy54IHNwcmF5LnggbmZzX3Byb3QueCBycXVvdGEueCBrZXlfcHJvdC54IgotCi1kb19jb21waWxlICgpIHsKLQkjIC1XbCwtcnBhdGgtbGluayA8c3RhZ2luZz4vbGliIGluIExERkxBR1MgY2FuIGNhdXNlIGJyZWFrYWdlIGlmIGFub3RoZXIgZ2xpYmMgaXMgaW4gc3RhZ2luZwotCXVuc2V0IExERkxBR1MKLQliYXNlX2RvX2NvbXBpbGUKLQkoCi0JCWNkICR7U30vc3VucnBjL3JwY3N2YwotCQlmb3IgciBpbiAke3JwY3N2Y307IGRvCi0JCQloPWBlY2hvICRyfHNlZCAtZSdzLFwueCQsLmgsJ2AKLQkJCXJtIC1mICRoCi0JCQkke0J9L3N1bnJwYy9jcm9zcy1ycGNnZW4gLWggJHIgLW8gJGggfHwgYmJ3YXJuICIke1BOfTogdW5hYmxlIHRvIGdlbmVyYXRlIGhlYWRlciBmb3IgJHIiCi0JCWRvbmUKLQkpCi0JZWNobyAiQWRqdXN0IGxkZCBzY3JpcHQiCi0JaWYgWyAtbiAiJHtSVExETElTVH0iIF0KLQl0aGVuCi0JCXByZXZydGxkPWBjYXQgJHtCfS9lbGYvbGRkIHwgZ3JlcCAiXlJUTERMSVNUPSIgfCBzZWQgJ3MjXlJUTERMSVNUPSJcP1woW14iXSpcKSJcPyQjXDEjJ2AKLQkJaWYgWyAiJHtwcmV2cnRsZH0iICE9ICIke1JUTERMSVNUfSIgXQotCQl0aGVuCi0JCQlzZWQgLWkgJHtCfS9lbGYvbGRkIC1lICJzI15SVExETElTVD0uKlwkI1JUTERMSVNUPVwiJHtwcmV2cnRsZH0gJHtSVExETElTVH1cIiMiCi0JCWZpCi0JZmkKLQotfQotCi1yZXF1aXJlIGdsaWJjLXBhY2thZ2UuaW5jCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4yNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODE0Nzk4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMjcuYmIKQEAgLTAsMCArMSwxNDYgQEAKK3JlcXVpcmUgZ2xpYmMuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0VTO21kNT1lOWE1NThlMjQzYjM2ZDMyMDlmMzgwZGViMzk0YjIxMyBcCisgICAgICBmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgZmlsZTovL3Bvc2l4L3J4c3BlbmNlci9DT1BZUklHSFQ7bWQ1PWRjNTQ4NWJiMzk0YTEzYjIzMzJlYzFjNzg1ZjVkODNhIFwKKyAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK0RFUEVORFMgKz0gImdwZXJmLW5hdGl2ZSBiaXNvbi1uYXRpdmUiCisKK1NSQ1JFViA/PSAiZGYzZmY0ZTQ5ZDRlZTNjYmJkYWViMGIxY2I1ZGMyMzQ0YzA4YmU5OCIKKworU1JDQlJBTkNIID89ICJyZWxlYXNlLyR7UFZ9L21hc3RlciIKKworR0xJQkNfR0lUX1VSSSA/PSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L2dsaWJjLmdpdCIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkK1wuXGQrKFwuKD8hOTApXGQrKSopIgorCitTUkNfVVJJID0gIiR7R0xJQkNfR0lUX1VSSX07YnJhbmNoPSR7U1JDQlJBTkNIfTtuYW1lPWdsaWJjIFwKKyAgICAgICAgICAgZmlsZTovL2V0Yy9sZC5zby5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2dlbmVyYXRlLXN1cHBvcnRlZC5tayBcCisgICAgICAgICAgIFwKKyAgICAgICAgICAgJHtOQVRJVkVTREtGSVhFU30gXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDktUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEyLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMy1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE0LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTUtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE2LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNy1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTgtZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE5LWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMC1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMS1lZ2xpYmMtSW5zdGFsbC1QSUMtYXJjaGl2ZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMy1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNC1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjUtbG9jYWxlLWZpeC1oYXJkLWNvZGVkLXJlZmVyZW5jZS10by1nY2MtRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI2LXJlc2V0LWRsX2xvYWRfd3JpdGVfbG9jay1hZnRlci1mb3JraW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjctQWNxdWlyZS1sZC5zby1sb2NrLWJlZm9yZS1zd2l0Y2hpbmctdG8tbWFsbG9jX2F0Zm9yay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI4LWJpdHMtc2lnaW5mby1jb25zdHMuaC1lbnVtLWRlZmluaXRpb24tZm9yLVRSQVBfSFdCS1AucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyOS1SZXBsYWNlLXN0cm5jcHktd2l0aC1tZW1jY3B5LXRvLWZpeC1Xc3RyaW5nb3AtdHJ1bmNhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzAtcGx1cmFsX2Nfbm9fcHJlcHJvY2Vzc29yX2xpbmVzLnBhdGNoIFwKKyIKKworTkFUSVZFU0RLRklYRVMgPz0gIiIKK05BVElWRVNES0ZJWEVTX2NsYXNzLW5hdGl2ZXNkayA9ICJcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlbG9jYXRlLWxvY2FsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMS1uYXRpdmVzZGstZGVwcmVjYXRlLWxpYmNyeXB0LnBhdGNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK0IgPSAiJHtXT1JLRElSfS9idWlsZC0ke1RBUkdFVF9TWVN9IgorCitQQUNLQUdFU19EWU5BTUlDID0gIiIKKworIyB0aGUgLWlzeXN0ZW0gaW4gYml0YmFrZS5jb25mIHNjcmV3cyB1cCBnbGliYyBkb19zdGFnZQorQlVJTERfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfSU5DRElSX05BVElWRX0iCitUQVJHRVRfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfRElSX1RBUkdFVH0ke2luY2x1ZGVkaXJ9IgorCitHTElCQ19CUk9LRU5fTE9DQUxFUyA9ICIiCisjCisjIFdlIHdpbGwgc2tpcCBwYXJzaW5nIGdsaWJjIHdoZW4gdGFyZ2V0IHN5c3RlbSBDIGxpYnJhcnkgc2VsZWN0aW9uIGlzIG5vdCBnbGliYworIyB0aGlzIGhlbHBzIGluIGVhc2luZyBvdXQgcGFyc2luZyBmb3Igbm9uLWdsaWJjIHN5c3RlbSBsaWJyYXJpZXMKKyMKK0NPTVBBVElCTEVfSE9TVF9saWJjLW11c2xfY2xhc3MtdGFyZ2V0ID0gIm51bGwiCisKK0dMSUJDUElFID8/PSAiIgorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUta2VybmVsPSR7T0xERVNUX0tFUk5FTH0gXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC1jdnMgLS1kaXNhYmxlLXByb2ZpbGUgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kZWJ1ZyAtLXdpdGhvdXQtZ2QgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWNsb2NhbGU9Z251IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1hZGQtb25zPWxpYmlkbiBcCisgICAgICAgICAgICAgICAgLS13aXRoLWhlYWRlcnM9JHtTVEFHSU5HX0lOQ0RJUn0gXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC1zZWxpbnV4IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1vYnNvbGV0ZS1ycGMgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLW9ic29sZXRlLW5zbCBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtdHVuYWJsZXMgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWJpbmQtbm93IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1zdGFjay1wcm90ZWN0b3I9c3Ryb25nIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1zdGFja2d1YXJkLXJhbmRvbWl6YXRpb24gXAorICAgICAgICAgICAgICAgICR7R0xJQkNQSUV9IFwKKyAgICAgICAgICAgICAgICAke0dMSUJDX0VYVFJBX09FQ09ORn0iCisKK0VYVFJBX09FQ09ORiArPSAiJHtAZ2V0X2xpYmNfZnB1X3NldHRpbmcoYmIsIGQpfSIKK0VYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsaWJjLWluZXQtYW5sJywgJy0tZW5hYmxlLW5zY2QnLCAnLS1kaXNhYmxlLW5zY2QnLCBkKX0iCisKKworZG9fcGF0Y2hfYXBwZW5kKCkgeworICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnZG9fZml4X3JlYWRsaWJfYycsIGQpCit9CisKK2RvX2ZpeF9yZWFkbGliX2MgKCkgeworCXNlZCAtaSAtZSAncyNPRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMjJHtFR0xJQkNfS05PV05fSU5URVJQUkVURVJfTkFNRVN9IycgJHtTfS9lbGYvcmVhZGxpYi5jCit9CisKK2RvX2NvbmZpZ3VyZSAoKSB7CisjIG92ZXJyaWRlIHRoaXMgZnVuY3Rpb24gdG8gYXZvaWQgdGhlIGF1dG9jb25mL2F1dG9tYWtlL2FjbG9jYWwvYXV0b2hlYWRlcgorIyBjYWxscyBmb3Igbm93CisjIGRvbid0IHBhc3MgQ1BQRkxBR1MgaW50byBjb25maWd1cmUsIHNpbmNlIGl0IHVwc2V0cyB0aGUga2VybmVsLWhlYWRlcnMKKyMgdmVyc2lvbiBjaGVjayBhbmQgZG9lc24ndCByZWFsbHkgaGVscCB3aXRoIGFueXRoaW5nCisgICAgICAgIChjZCAke1N9ICYmIGdudS1jb25maWdpemUpIHx8IGRpZSAiZmFpbHVyZSBpbiBydW5uaW5nIGdudS1jb25maWdpemUiCisgICAgICAgIGZpbmQgJHtTfSAtbmFtZSAiY29uZmlndXJlIiB8IHhhcmdzIHRvdWNoCisgICAgICAgIENQUEZMQUdTPSIiIG9lX3J1bmNvbmYKK30KKworcnBjc3ZjID0gImJvb3RwYXJhbV9wcm90LnggbmxtX3Byb3QueCByc3RhdC54IFwKKwkgIHlwcGFzc3dkLngga2xtX3Byb3QueCByZXgueCBzbV9pbnRlci54IG1vdW50LnggXAorCSAgcnVzZXJzLnggc3ByYXkueCBuZnNfcHJvdC54IHJxdW90YS54IGtleV9wcm90LngiCisKK2RvX2NvbXBpbGUgKCkgeworCSMgLVdsLC1ycGF0aC1saW5rIDxzdGFnaW5nPi9saWIgaW4gTERGTEFHUyBjYW4gY2F1c2UgYnJlYWthZ2UgaWYgYW5vdGhlciBnbGliYyBpcyBpbiBzdGFnaW5nCisJdW5zZXQgTERGTEFHUworCWJhc2VfZG9fY29tcGlsZQorCSgKKwkJY2QgJHtTfS9zdW5ycGMvcnBjc3ZjCisJCWZvciByIGluICR7cnBjc3ZjfTsgZG8KKwkJCWg9YGVjaG8gJHJ8c2VkIC1lJ3MsXC54JCwuaCwnYAorCQkJcm0gLWYgJGgKKwkJCSR7Qn0vc3VucnBjL2Nyb3NzLXJwY2dlbiAtaCAkciAtbyAkaCB8fCBiYndhcm4gIiR7UE59OiB1bmFibGUgdG8gZ2VuZXJhdGUgaGVhZGVyIGZvciAkciIKKwkJZG9uZQorCSkKKwllY2hvICJBZGp1c3QgbGRkIHNjcmlwdCIKKwlpZiBbIC1uICIke1JUTERMSVNUfSIgXQorCXRoZW4KKwkJcHJldnJ0bGQ9YGNhdCAke0J9L2VsZi9sZGQgfCBncmVwICJeUlRMRExJU1Q9IiB8IHNlZCAncyNeUlRMRExJU1Q9Ilw/XChbXiJdKlwpIlw/JCNcMSMnYAorCQlpZiBbICIke3ByZXZydGxkfSIgIT0gIiR7UlRMRExJU1R9IiBdCisJCXRoZW4KKwkJCXNlZCAtaSAke0J9L2VsZi9sZGQgLWUgInMjXlJUTERMSVNUPS4qXCQjUlRMRExJU1Q9XCIke3ByZXZydGxkfSAke1JUTERMSVNUfVwiIyIKKwkJZmkKKwlmaQorCit9CisKK3JlcXVpcmUgZ2xpYmMtcGFja2FnZS5pbmMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvc2l0ZV9jb25maWcvaGVhZGVycyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9zaXRlX2NvbmZpZy9oZWFkZXJzCmluZGV4IDYwOWFiNTMuLjY5ZmVkZWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9zaXRlX2NvbmZpZy9oZWFkZXJzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9zaXRlX2NvbmZpZy9oZWFkZXJzCkBAIC05LDcgKzksNiBAQAogYXNtL3R5cGVzLmgKIGFzc2VydC5oCiBieXRlc3dhcC5oCi1jcnlwdC5oCiBjdHlwZS5oCiBkaXJlbnQuaAogZGxmY24uaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2lmdXBkb3duXzAuOC4xNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9pZnVwZG93bl8wLjguMTYuYmIKaW5kZXggNTY1NDUyOC4uZTlmM2EyYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2lmdXBkb3duXzAuOC4xNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vaWZ1cGRvd25fMC44LjE2LmJiCkBAIC02LDcgKzYsNyBAQAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgogCi1TUkNfVVJJID0gImdpdDovL2Fub25zY20uZGViaWFuLm9yZy9naXQvY29sbGFiLW1haW50L2lmdXBkb3duLmdpdCBcCitTUkNfVVJJID0gImdpdDovL3NhbHNhLmRlYmlhbi5vcmcvZGViaWFuL2lmdXBkb3duLmdpdDtwcm90b2NvbD1odHRwcyBcCiAJICAgZmlsZTovL2RlZm4yLWMtbWFuLWRvbi10LXJlbHktb24tZHBrZy1hcmNoaXRlY3R1cmUtdG8tc2V0LWEucGF0Y2ggXAogCSAgIGZpbGU6Ly9pbmV0LTYtLmRlZm4tZml4LWludmVydGVkLWNoZWNrcy1mb3ItbG9vcGJhY2sucGF0Y2ggXAogCSAgIGZpbGU6Ly85OV9uZXR3b3JrIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvYnVpbGQtYXBwbGlhbmNlLWltYWdlXzE1LjAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvYnVpbGQtYXBwbGlhbmNlLWltYWdlXzE1LjAuMC5iYgppbmRleCBiZDQ0MWFlLi5kYjJmNThkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2J1aWxkLWFwcGxpYW5jZS1pbWFnZV8xNS4wLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9idWlsZC1hcHBsaWFuY2UtaW1hZ2VfMTUuMC4wLmJiCkBAIC0yMiw4ICsyMiw4IEBACiAKIGluaGVyaXQgY29yZS1pbWFnZSBtb2R1bGUtYmFzZSBzZXR1cHRvb2xzMwogCi1TUkNSRVYgPz0gImE5NTg4NjQ2ZmNlYzE3ZTUzMTk5ZTFlYTdlN2I4ZGNjZjE0MDgxN2UiCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3k7YnJhbmNoPXJvY2tvIFwKK1NSQ1JFViA/PSAiMTRkNjJkNWMxNGUzNTUyZjJhZWFiZGJkODBkMTUwNGJiMmM2ZWQ2NCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reTticmFuY2g9c3VtbyBcCiAgICAgICAgICAgIGZpbGU6Ly9Zb2N0b19CdWlsZF9BcHBsaWFuY2Uudm14IFwKICAgICAgICAgICAgZmlsZTovL1lvY3RvX0J1aWxkX0FwcGxpYW5jZS52bXhmIFwKICAgICAgICAgICAgZmlsZTovL1JFQURNRV9WaXJ0dWFsQm94X0d1ZXN0X0FkZGl0aW9ucy50eHQgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzLmJiCmluZGV4IGM0NDZlODcuLjZkZTg2MGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMuYmIKQEAgLTMsNyArMywxNSBAQAogdGhlIE1pbmltYWwgUkFNLWJhc2VkIEluaXRpYWwgUm9vdCBGaWxlc3lzdGVtIChpbml0cmFtZnMpLCB3aGljaCBmaW5kcyB0aGUgXAogZmlyc3QgJ2luaXQnIHByb2dyYW0gbW9yZSBlZmZpY2llbnRseS4iCiAKLVBBQ0tBR0VfSU5TVEFMTCA9ICJpbml0cmFtZnMtbGl2ZS1ib290IGluaXRyYW1mcy1saXZlLWluc3RhbGwgaW5pdHJhbWZzLWxpdmUtaW5zdGFsbC1lZmkgJHtWSVJUVUFMLVJVTlRJTUVfYmFzZS11dGlsc30gdWRldiBiYXNlLXBhc3N3ZCAke1JPT1RGU19CT09UU1RSQVBfSU5TVEFMTH0iCitJTklUUkFNRlNfU0NSSVBUUyA/PSAiXAorICAgICAgICAgICAgICAgICAgICAgIGluaXRyYW1mcy1mcmFtZXdvcmstYmFzZSBcCisgICAgICAgICAgICAgICAgICAgICAgaW5pdHJhbWZzLW1vZHVsZS1zZXR1cC1saXZlIFwKKyAgICAgICAgICAgICAgICAgICAgICBpbml0cmFtZnMtbW9kdWxlLXVkZXYgXAorICAgICAgICAgICAgICAgICAgICAgIGluaXRyYW1mcy1tb2R1bGUtaW5zdGFsbCBcCisgICAgICAgICAgICAgICAgICAgICAgaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsLWVmaSBcCisgICAgICAgICAgICAgICAgICAgICAiCisKK1BBQ0tBR0VfSU5TVEFMTCA9ICIke0lOSVRSQU1GU19TQ1JJUFRTfSAke1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzfSB1ZGV2IGJhc2UtcGFzc3dkICR7Uk9PVEZTX0JPT1RTVFJBUF9JTlNUQUxMfSIKIAogIyBEbyBub3QgcG9sbHV0ZSB0aGUgaW5pdHJkIGltYWdlIHdpdGggcm9vdGZzIGZlYXR1cmVzCiBJTUFHRV9GRUFUVVJFUyA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtdGlueS1pbml0cmFtZnMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtdGlueS1pbml0cmFtZnMuYmIKaW5kZXggMTY5OTVlNi4uNTFkMDhhMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLXRpbnktaW5pdHJhbWZzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS10aW55LWluaXRyYW1mcy5iYgpAQCAtNSw3ICs1LDcgQEAKIGFjdHVhbGx5IGdlbmVyYXRlIGFuIGltYWdlIGJ1dCByYXRoZXIgZ2VuZXJhdGVzIGJvb3QgYW5kIHJvb3RmcyBhcnRpZmFjdHMgXAogdGhhdCBjYW4gc3Vic2VxdWVudGx5IGJlIHBpY2tlZCB1cCBieSBleHRlcm5hbCBpbWFnZSBnZW5lcmF0aW9uIHRvb2xzIHN1Y2ggYXMgd2ljLiIKIAotUEFDS0FHRV9JTlNUQUxMID0gImluaXRyYW1mcy1saXZlLWJvb3QgcGFja2FnZWdyb3VwLWNvcmUtYm9vdCBkcm9wYmVhciAke1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzfSB1ZGV2IGJhc2UtcGFzc3dkICR7Uk9PVEZTX0JPT1RTVFJBUF9JTlNUQUxMfSIKK1BBQ0tBR0VfSU5TVEFMTCA9ICJpbml0cmFtZnMtbGl2ZS1ib290LXRpbnkgcGFja2FnZWdyb3VwLWNvcmUtYm9vdCBkcm9wYmVhciAke1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzfSAke1ZJUlRVQUwtUlVOVElNRV9kZXZfbWFuYWdlcn0gYmFzZS1wYXNzd2QgJHtST09URlNfQk9PVFNUUkFQX0lOU1RBTEx9IgogCiAjIERvIG5vdCBwb2xsdXRlIHRoZSBpbml0cmQgaW1hZ2Ugd2l0aCByb290ZnMgZmVhdHVyZXMKIElNQUdFX0ZFQVRVUkVTID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtaW5zdGFsbC1lZmkuc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWluc3RhbGwtZWZpLnNoCmluZGV4IDcwNjQxOGYuLjgyYjBhYTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtaW5zdGFsbC1lZmkuc2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1pbnN0YWxsLWVmaS5zaApAQCAtOCw4ICs4LDE5IEBACiAKIFBBVEg9L3NiaW46L2JpbjovdXNyL3NiaW46L3Vzci9iaW4KIAotIyBXZSBuZWVkIDIwIE1iIGZvciB0aGUgYm9vdCBwYXJ0aXRpb24KLWJvb3Rfc2l6ZT0yMAorIyBmaWd1cmUgb3V0IGhvdyBiaWcgb2YgYSBib290IHBhcnRpdGlvbiB3ZSBuZWVkCitib290X3NpemU9JChkdSAtbXMgL3J1bi9tZWRpYS8kMS8gfCBhd2sgJ3twcmludCAkMX0nKQorIyByZW1vdmUgcm9vdGZzLmltZyAoJDIpIGZyb20gdGhlIHNpemUgaWYgaXQgZXhpc3RzLCBhcyBpdHMgbm90IGluc3RhbGxlZCB0byAvYm9vdAoraWYgWyAtZSAvcnVuL21lZGlhLyQxLyQyIF07IHRoZW4KKyAgICBib290X3NpemU9JCgoIGJvb3Rfc2l6ZSAtICQoIGR1IC1tcyAvcnVuL21lZGlhLyQxLyQyIHwgYXdrICd7cHJpbnQgJDF9JykgKSkKK2ZpCisjIHJlbW92ZSBpbml0cmQgZnJvbSBzaXplIHNpbmNlIGl0cyBub3QgY3VycmVudGx5IGluc3RhbGxlZAoraWYgWyAtZSAvcnVuL21lZGlhLyQxL2luaXRyZCBdOyB0aGVuCisgICAgYm9vdF9zaXplPSQoKCBib290X3NpemUgLSAkKCBkdSAtbXMgL3J1bi9tZWRpYS8kMS9pbml0cmQgfCBhd2sgJ3twcmludCAkMX0nKSApKQorZmkKKyMgYWRkIDEwTSB0byBwcm92aWRlIHNvbWUgZXh0cmEgc3BhY2UgZm9yIHVzZXJzIGFuZCBhY2NvdW50CisjIGZvciByb3VuZGluZyBpbiB0aGUgYWJvdmUgc3VidHJhY3Rpb25zCitib290X3NpemU9JCgoIGJvb3Rfc2l6ZSArIDEwICkpCiAKICMgNSUgZm9yIHN3YXAKIHN3YXBfcmF0aW89NQpAQCAtMTc5LDcgKzE5MCw3IEBACiBwYXJ0ZWQgJHtkZXZpY2V9IHNldCAxIGJvb3Qgb24KIAogZWNobyAiQ3JlYXRpbmcgcm9vdGZzIHBhcnRpdGlvbiBvbiAkcm9vdGZzIgotcGFydGVkICR7ZGV2aWNlfSBta3BhcnQgcm9vdCBleHQzICRyb290ZnNfc3RhcnQgJHJvb3Rmc19lbmQKK3BhcnRlZCAke2RldmljZX0gbWtwYXJ0IHJvb3QgZXh0NCAkcm9vdGZzX3N0YXJ0ICRyb290ZnNfZW5kCiAKIGVjaG8gIkNyZWF0aW5nIHN3YXAgcGFydGl0aW9uIG9uICRzd2FwIgogcGFydGVkICR7ZGV2aWNlfSBta3BhcnQgc3dhcCBsaW51eC1zd2FwICRzd2FwX3N0YXJ0IDEwMCUKQEAgLTE5Niw4ICsyMDcsOCBAQAogZWNobyAiRm9ybWF0dGluZyAkYm9vdGZzIHRvIHZmYXQuLi4iCiBta2ZzLnZmYXQgJGJvb3RmcwogCi1lY2hvICJGb3JtYXR0aW5nICRyb290ZnMgdG8gZXh0My4uLiIKLW1rZnMuZXh0MyAkcm9vdGZzCitlY2hvICJGb3JtYXR0aW5nICRyb290ZnMgdG8gZXh0NC4uLiIKK21rZnMuZXh0NCAkcm9vdGZzCiAKIGVjaG8gIkZvcm1hdHRpbmcgc3dhcCBwYXJ0aXRpb24uLi4oJHN3YXApIgogbWtzd2FwICRzd2FwCkBAIC0yNDQsMTAgKzI1NSw5IEBACiAgICAgc2VkIC1pICIvaW5pdHJkIC9kIiAkR1JVQkNGRwogICAgICMgRGVsZXRlIGFueSBMQUJFTD0gc3RyaW5ncwogICAgIHNlZCAtaSAicy8gTEFCRUw9W14gXSovIC8iICRHUlVCQ0ZHCi0gICAgIyBEZWxldGUgYW55IHJvb3Q9IHN0cmluZ3MKLSAgICBzZWQgLWkgInMvIHJvb3Q9W14gXSovIC9nIiAkR1JVQkNGRwotICAgICMgQWRkIHRoZSByb290PSBhbmQgb3RoZXIgc3RhbmRhcmQgYm9vdCBvcHRpb25zCi0gICAgc2VkIC1pICJzQGxpbnV4IC92bWxpbnV6ICpAbGludXggL3ZtbGludXogcm9vdD1QQVJUVVVJRD0kcm9vdF9wYXJ0X3V1aWQgcncgJHJvb3R3YWl0IHF1aWV0IEAiICRHUlVCQ0ZHCisgICAgIyBSZXBsYWNlIHJvb3Q9IGFuZCBhZGQgYWRkaXRpb25hbCBzdGFuZGFyZCBib290IG9wdGlvbnMKKyAgICAjIFdlIHVzZSByb290IGFzIGEgc2VudGluZWwgdmFsdWUsIGFzIHZtbGludXogaXMgbm8gbG9uZ2VyIGd1YXJhbnRlZWQKKyAgICBzZWQgLWkgInMvIHJvb3Q9W14gXSovIHJvb3Q9UEFSVFVVSUQ9JHJvb3RfcGFydF91dWlkIHJ3ICRyb290d2FpdCBxdWlldCAvZyIgJEdSVUJDRkcKIGZpCiAKIGlmIFsgLWQgL3J1bi9tZWRpYS8kMS9sb2FkZXIgXTsgdGhlbgpAQCAtMjY5LDcgKzI3OSwxMyBAQAogCiB1bW91bnQgL3RndF9yb290CiAKLWNwIC9ydW4vbWVkaWEvJDEvdm1saW51eiAvYm9vdAorIyBDb3B5IGtlcm5lbCBhcnRpZmFjdHMuIFRvIGFkZCBtb3JlIGFydGlmYWN0cyBqdXN0IGFkZCB0byB0eXBlcworIyBGb3Igbm93IGp1c3Qgc3VwcG9ydCBrZXJuZWwgdHlwZXMgYWxyZWFkeSBiZWluZyB1c2VkIGJ5IHNvbWV0aGluZyBpbiBPRS1jb3JlCitmb3IgdHlwZXMgaW4gYnpJbWFnZSB6SW1hZ2Ugdm1saW51eCB2bWxpbnV6IGZpdEltYWdlOyBkbworICAgIGZvciBrZXJuZWwgaW4gYGZpbmQgL3J1bi9tZWRpYS8kMS8gLW5hbWUgJHR5cGVzKmA7IGRvCisgICAgICAgIGNwICRrZXJuZWwgL2Jvb3QKKyAgICBkb25lCitkb25lCiAKIHVtb3VudCAvYm9vdAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWluc3RhbGwuc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWluc3RhbGwuc2gKaW5kZXggZGFkZTA1OS4uMjhlOGYwOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1pbnN0YWxsLnNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtaW5zdGFsbC5zaApAQCAtNyw4ICs3LDE5IEBACiAKIFBBVEg9L3NiaW46L2JpbjovdXNyL3NiaW46L3Vzci9iaW4KIAotIyBXZSBuZWVkIDIwIE1iIGZvciB0aGUgYm9vdCBwYXJ0aXRpb24KLWJvb3Rfc2l6ZT0yMAorIyBmaWd1cmUgb3V0IGhvdyBiaWcgb2YgYSBib290IHBhcnRpdGlvbiB3ZSBuZWVkCitib290X3NpemU9JChkdSAtbXMgL3J1bi9tZWRpYS8kMS8gfCBhd2sgJ3twcmludCAkMX0nKQorIyByZW1vdmUgcm9vdGZzLmltZyAoJDIpIGZyb20gdGhlIHNpemUgaWYgaXQgZXhpc3RzLCBhcyBpdHMgbm90IGluc3RhbGxlZCB0byAvYm9vdAoraWYgWyAtZSAvcnVuL21lZGlhLyQxLyQyIF07IHRoZW4KKyAgICBib290X3NpemU9JCgoIGJvb3Rfc2l6ZSAtICQoIGR1IC1tcyAvcnVuL21lZGlhLyQxLyQyIHwgYXdrICd7cHJpbnQgJDF9JykgKSkKK2ZpCisjIHJlbW92ZSBpbml0cmQgZnJvbSBzaXplIHNpbmNlIGl0cyBub3QgY3VycmVudGx5IGluc3RhbGxlZAoraWYgWyAtZSAvcnVuL21lZGlhLyQxL2luaXRyZCBdOyB0aGVuCisgICAgYm9vdF9zaXplPSQoKCBib290X3NpemUgLSAkKCBkdSAtbXMgL3J1bi9tZWRpYS8kMS9pbml0cmQgfCBhd2sgJ3twcmludCAkMX0nKSApKQorZmkKKyMgYWRkIDEwTSB0byBwcm92aWRlIHNvbWUgZXh0cmEgc3BhY2UgZm9yIHVzZXJzIGFuZCBhY2NvdW50CisjIGZvciByb3VuZGluZyBpbiB0aGUgYWJvdmUgc3VidHJhY3Rpb25zCitib290X3NpemU9JCgoIGJvb3Rfc2l6ZSArIDEwICkpCiAKICMgNSUgZm9yIHRoZSBzd2FwCiBzd2FwX3JhdGlvPTUKQEAgLTIwMyw3ICsyMTQsNyBAQAogCiBlY2hvICJDcmVhdGluZyByb290ZnMgcGFydGl0aW9uIG9uICRyb290ZnMiCiBbICRncnViX3ZlcnNpb24gLWVxIDAgXSAmJiBwbmFtZT0ncHJpbWFyeScgfHwgcG5hbWU9J3Jvb3QnCi1wYXJ0ZWQgJHtkZXZpY2V9IG1rcGFydCAkcG5hbWUgZXh0MyAkcm9vdGZzX3N0YXJ0ICRyb290ZnNfZW5kCitwYXJ0ZWQgJHtkZXZpY2V9IG1rcGFydCAkcG5hbWUgZXh0NCAkcm9vdGZzX3N0YXJ0ICRyb290ZnNfZW5kCiAKIGVjaG8gIkNyZWF0aW5nIHN3YXAgcGFydGl0aW9uIG9uICRzd2FwIgogWyAkZ3J1Yl92ZXJzaW9uIC1lcSAwIF0gJiYgcG5hbWU9J3ByaW1hcnknIHx8IHBuYW1lPSdzd2FwJwpAQCAtMjIxLDggKzIzMiw4IEBACiBlY2hvICJGb3JtYXR0aW5nICRib290ZnMgdG8gZXh0My4uLiIKIG1rZnMuZXh0MyAkYm9vdGZzCiAKLWVjaG8gIkZvcm1hdHRpbmcgJHJvb3RmcyB0byBleHQzLi4uIgotbWtmcy5leHQzICRyb290ZnMKK2VjaG8gIkZvcm1hdHRpbmcgJHJvb3RmcyB0byBleHQ0Li4uIgorbWtmcy5leHQ0ICRyb290ZnMKIAogZWNobyAiRm9ybWF0dGluZyBzd2FwIHBhcnRpdGlvbi4uLigkc3dhcCkiCiBta3N3YXAgJHN3YXAKQEAgLTI1Niw5ICsyNjcsMzQgQEAKIHVtb3VudCAvdGd0X3Jvb3QKIHVtb3VudCAvc3JjX3Jvb3QKIAorZWNobyAiTG9va2luZyBmb3Iga2VybmVscyB0byB1c2UgYXMgYm9vdCB0YXJnZXQuLiIKKyMgRmluZCBrZXJuZWwgdG8gYm9vdCB0bworIyBHaXZlIHVzZXIgb3B0aW9ucyBpZiBtdWx0aXBsZSBhcmUgZm91bmQKK2tlcm5lbHM9IiQoZmluZCAvcnVuL21lZGlhLyQxLyAtdHlwZSBmICBcCisgICAgICAgICAgIC1uYW1lIGJ6SW1hZ2UqIC1vIC1uYW1lIHpJbWFnZSogXAorICAgICAgICAgICAtbyAtbmFtZSB2bWxpbnV4KiAtbyAtbmFtZSB2bWxpbnV6KiBcCisgICAgICAgICAgIC1vIC1uYW1lIGZpdEltYWdlKiBcCisgICAgICAgICAgIHwgc2VkIHM6LiovOjopIgoraWYgWyAtbiAiJChlY2hvICRrZXJuZWxzKSIgXTsgdGhlbgorICAgICMgb25seSBvbmUga2VybmVsIGVudHJ5IGlmIG5vIHNwYWNlCisgICAgaWYgWyAteiAiJChlY2hvICRrZXJuZWxzIHwgZ3JlcCAiICIpIiBdOyB0aGVuCisgICAgICAgIGtlcm5lbD0ka2VybmVscworICAgICAgICBlY2hvICIka2VybmVsIHdpbGwgYmUgdXNlZCBhcyB0aGUgYm9vdCB0YXJnZXQiCisgICAgZWxzZQorICAgICAgICBlY2hvICJXaGljaCBrZXJuZWwgZG8gd2Ugd2FudCB0byBib290IGJ5IGRlZmF1bHQ/IFRoZSBmb2xsb3dpbmcga2VybmVscyB3ZXJlIGZvdW5kOiIKKyAgICAgICAgZWNobyAka2VybmVscworICAgICAgICByZWFkIGFuc3dlcgorICAgICAgICBrZXJuZWw9JGFuc3dlcgorICAgIGZpCitlbHNlCisgICAgZWNobyAiTm8ga2VybmVscyBmb3VuZCwgZXhpdGluZy4uLiIKKyAgICBleGl0IDEKK2ZpCisKICMgSGFuZGxpbmcgb2YgdGhlIHRhcmdldCBib290IHBhcnRpdGlvbgogbW91bnQgJGJvb3RmcyAvYm9vdAogZWNobyAiUHJlcGFyaW5nIGJvb3QgcGFydGl0aW9uLi4uIgorCiBpZiBbIC1mIC9ldGMvZ3J1Yi5kLzAwX2hlYWRlciAtYSAkZ3J1Yl92ZXJzaW9uIC1uZSAwIF0gOyB0aGVuCiAgICAgZWNobyAiUHJlcGFyaW5nIGN1c3RvbSBncnViMiBtZW51Li4uIgogICAgIHJvb3RfcGFydF91dWlkPSQoYmxraWQgLW8gdmFsdWUgLXMgUEFSVFVVSUQgJHtyb290ZnN9KQpAQCAtMjY4LDcgKzMwNCw3IEBACiAgICAgY2F0ID4kR1JVQkNGRyA8PF9FT0YKIG1lbnVlbnRyeSAiTGludXgiIHsKICAgICBzZWFyY2ggLS1uby1mbG9wcHkgLS1mcy11dWlkICRib290X3V1aWQgLS1zZXQgcm9vdAotICAgIGxpbnV4IC92bWxpbnV6IHJvb3Q9UEFSVFVVSUQ9JHJvb3RfcGFydF91dWlkICRyb290d2FpdCBydyAkNSAkMyAkNCBxdWlldAorICAgIGxpbnV4IC8ka2VybmVsIHJvb3Q9UEFSVFVVSUQ9JHJvb3RfcGFydF91dWlkICRyb290d2FpdCBydyAkNSAkMyAkNCBxdWlldAogfQogX0VPRgogICAgIGNobW9kIDA0NDQgJEdSVUJDRkcKQEAgLTI4MiwxMCArMzE4LDE2IEBACiAgICAgZWNobyAidGltZW91dCAzMCIgPj4gL2Jvb3QvZ3J1Yi9tZW51LmxzdAogICAgIGVjaG8gInRpdGxlIExpdmUgQm9vdC9JbnN0YWxsLUltYWdlIiA+PiAvYm9vdC9ncnViL21lbnUubHN0CiAgICAgZWNobyAicm9vdCAgKGhkMCwwKSIgPj4gL2Jvb3QvZ3J1Yi9tZW51LmxzdAotICAgIGVjaG8gImtlcm5lbCAvdm1saW51eiByb290PSRyb290ZnMgcncgJDMgJDQgcXVpZXQiID4+IC9ib290L2dydWIvbWVudS5sc3QKKyAgICBlY2hvICJrZXJuZWwgLyRrZXJuZWwgcm9vdD0kcm9vdGZzIHJ3ICQzICQ0IHF1aWV0IiA+PiAvYm9vdC9ncnViL21lbnUubHN0CiBmaQogCi1jcCAvcnVuL21lZGlhLyQxL3ZtbGludXogL2Jvb3QvCisjIENvcHkga2VybmVsIGFydGlmYWN0cy4gVG8gYWRkIG1vcmUgYXJ0aWZhY3RzIGp1c3QgYWRkIHRvIHR5cGVzCisjIEZvciBub3cganVzdCBzdXBwb3J0IGtlcm5lbCB0eXBlcyBhbHJlYWR5IGJlaW5nIHVzZWQgYnkgc29tZXRoaW5nIGluIE9FLWNvcmUKK2ZvciB0eXBlcyBpbiBiekltYWdlIHpJbWFnZSB2bWxpbnV4IHZtbGludXogZml0SW1hZ2U7IGRvCisgICAgZm9yIGtlcm5lbCBpbiBgZmluZCAvcnVuL21lZGlhLyQxLyAtbmFtZSAkdHlwZXMqYDsgZG8KKyAgICAgICAgY3AgJGtlcm5lbCAvYm9vdAorICAgIGRvbmUKK2RvbmUKIAogdW1vdW50IC9ib290CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvZXhlYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvZXhlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOGUyNDMyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9leGVjCkBAIC0wLDAgKzEsMjkgQEAKKyMhL2Jpbi9zaAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgTy5TLiBTeXN0ZW1zIFNvZnR3YXJlIExUREEuCisjIExpY2Vuc2VkIG9uIE1JVAorCitFWEVDX0RJUj0vZXhlYy5kICAjIHBsYWNlIHRvIGxvb2sgZm9yIG1vZHVsZXMKKworZXhlY19lbmFibGVkKCkgeworCXJldHVybiAwCit9CisKK2V4ZWNfcnVuKCkgeworCWlmIFsgISAtZCAkRVhFQ19ESVIgXTsgdGhlbgorCQltc2cgIk5vIGNvbnRlbnRzIHRvIGV4ZWMgaW4gJEVYRUNfRElSLiBTdGFydGluZyBzaGVsbCAuLi4iCisJCXNoCisJZmkKKworCSMgTG9hZCBhbmQgcnVuIG1vZHVsZXMKKwlmb3IgbSBpbiAkRVhFQ19ESVIvKjsgZG8KKwkJIyBTa2lwIGJhY2t1cCBmaWxlcworCQlpZiBbICJgZWNobyAkbSB8IHNlZCAtZSAncy9cfiQvLydgIiAhPSAiJG0iIF07IHRoZW4KKwkJCWNvbnRpbnVlCisJCWZpCisKKwkJZGVidWcgIlN0YXJ0aW5nICRtIgorCisJCSMgcHJvY2VzcyBtb2R1bGUKKwkJLi8kbQorCWRvbmUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvcm9vdGZzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9yb290ZnMKaW5kZXggMTQ3NjhmMS4uNzZmYTg0ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9yb290ZnMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9yb290ZnMKQEAgLTMxLDYgKzMxLDExIEBACiAJCQkJYm9vdHBhcmFtX3Jvb3Q9Ii9kZXYvZGlzay9ieS1wYXJ0dXVpZC8kcm9vdF91dWlkIgogCQkJZmkKIAorCQkJaWYgWyAiYGVjaG8gJHtib290cGFyYW1fcm9vdH0gfCBjdXQgLWMxLTZgIiA9ICJMQUJFTD0iIF07IHRoZW4KKwkJCQlyb290X2xhYmVsPWBlY2hvICRib290cGFyYW1fcm9vdCB8IGN1dCAtYzctYAorCQkJCWJvb3RwYXJhbV9yb290PSIvZGV2L2Rpc2svYnktbGFiZWwvJHJvb3RfbGFiZWwiCisJCQlmaQorCiAJCQlpZiBbIC1lICIkYm9vdHBhcmFtX3Jvb3QiIF07IHRoZW4KIAkJCQlmbGFncz0iIgogCQkJCWlmIFsgLW4gIiRib290cGFyYW1fcm8iIF0gJiYgISBlY2hvICIkYm9vdHBhcmFtX3Jvb3RmbGFncyIgfCBncmVwIC13IC1xICJybyI7IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmtfMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29ya18xLjAuYmIKaW5kZXggMmFmYzM3ZS4uNzVkOTY1ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29ya18xLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29ya18xLjAuYmIKQEAgLTgsNiArOCw3IEBACiBpbmhlcml0IGFsbGFyY2gKIAogU1JDX1VSSSA9ICJmaWxlOi8vaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9leGVjIFwKICAgICAgICAgICAgZmlsZTovL3Jvb3RmcyBcCiAgICAgICAgICAgIGZpbGU6Ly9maW5pc2ggXAogICAgICAgICAgICBmaWxlOi8vbWRldiBcCkBAIC0yNiw2ICsyNyw5IEBACiAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vcm9vdGZzICR7RH0vaW5pdC5kLzkwLXJvb3RmcwogICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2ZpbmlzaCAke0R9L2luaXQuZC85OS1maW5pc2gKIAorCSMgZXhlYworICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2V4ZWMgJHtEfS9pbml0LmQvODktZXhlYworCiAgICAgIyBtZGV2CiAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbWRldiAke0R9L2luaXQuZC8wMS1tZGV2CiAKQEAgLTQ1LDYgKzQ5LDcgQEAKIH0KIAogUEFDS0FHRVMgPSAiJHtQTn0tYmFzZSBcCisgICAgICAgICAgICBpbml0cmFtZnMtbW9kdWxlLWV4ZWMgXAogICAgICAgICAgICAgaW5pdHJhbWZzLW1vZHVsZS1tZGV2IFwKICAgICAgICAgICAgIGluaXRyYW1mcy1tb2R1bGUtdWRldiBcCiAgICAgICAgICAgICBpbml0cmFtZnMtbW9kdWxlLWUyZnMgXApAQCAtNjIsNiArNjcsMTAgQEAKICMgYW5kIG1vdW50cyB0aGUgcm9vdGZzLiBUaGVuIDkwLXJvb3RmcyB3aWxsIHByb2NlZWQgaW1tZWRpYXRlbHkuCiBSUkVDT01NRU5EU18ke1BOfS1iYXNlICs9ICJpbml0cmFtZnMtbW9kdWxlLXJvb3RmcyIKIAorU1VNTUFSWV9pbml0cmFtZnMtbW9kdWxlLWV4ZWMgPSAiaW5pdHJhbWZzIHN1cHBvcnQgZm9yIGVhc3kgZXhlY3V0aW9uIG9mIGFwcGxpY2F0aW9ucyIKK1JERVBFTkRTX2luaXRyYW1mcy1tb2R1bGUtZXhlYyA9ICIke1BOfS1iYXNlIgorRklMRVNfaW5pdHJhbWZzLW1vZHVsZS1leGVjID0gIi9pbml0LmQvODktZXhlYyIKKwogU1VNTUFSWV9pbml0cmFtZnMtbW9kdWxlLW1kZXYgPSAiaW5pdHJhbWZzIHN1cHBvcnQgZm9yIG1kZXYiCiBSREVQRU5EU19pbml0cmFtZnMtbW9kdWxlLW1kZXYgPSAiJHtQTn0tYmFzZSBidXN5Ym94LW1kZXYiCiBGSUxFU19pbml0cmFtZnMtbW9kdWxlLW1kZXYgPSAiL2luaXQuZC8wMS1tZGV2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWxpdmUtYm9vdC10aW55XzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWJvb3QtdGlueV8xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E5YThlYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWJvb3QtdGlueV8xLjAuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJMaXZlIGltYWdlIGluaXQgc2NyaXB0IgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKK0RFUEVORFMgPSAidmlydHVhbC9rZXJuZWwiCitSREVQRU5EU18ke1BOfSA9ICJidXN5Ym94LW1kZXYiCitTUkNfVVJJID0gImZpbGU6Ly9pbml0LWxpdmUuc2giCisKK1BSID0gInIxMiIKKworUyA9ICIke1dPUktESVJ9IgorCitkb19pbnN0YWxsKCkgeworICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0LWxpdmUuc2ggJHtEfS9pbml0CisgICAgICAgIGluc3RhbGwgLWQgJHtEfS9kZXYKKyAgICAgICAgbWtub2QgLW0gNjIyICR7RH0vZGV2L2NvbnNvbGUgYyA1IDEKK30KKworRklMRVNfJHtQTn0gKz0gIiAvaW5pdCAvZGV2ICIKKworIyBEdWUgdG8ga2VybmVsIGRlcGVuZGVuY3kKK1BBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaV8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaV8xLjAuYmIKaW5kZXggMmE3Zjg0ZC4uZjU4OGExMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWxpdmUtaW5zdGFsbC1lZmlfMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGwtZWZpXzEuMC5iYgpAQCAtNSw3ICs1LDcgQEAKIAogUFIgPSAicjEiCiAKLVJERVBFTkRTXyR7UE59ID0gInBhcnRlZCBlMmZzcHJvZ3MtbWtlMmZzIGRvc2ZzdG9vbHMgdXRpbC1saW51eC1ibGtpZCIKK1JERVBFTkRTXyR7UE59ID0gInBhcnRlZCBlMmZzcHJvZ3MtbWtlMmZzIGRvc2ZzdG9vbHMgdXRpbC1saW51eC1ibGtpZCAke1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzfSIKIAogUyA9ICIke1dPUktESVJ9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbGl2ZS1pbnN0YWxsXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGxfMS4wLmJiCmluZGV4IGE1NTNhMGQuLjkyMjJkNTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGxfMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGxfMS4wLmJiCkBAIC03LDcgKzcsNyBAQAogCiBTID0gIiR7V09SS0RJUn0iCiAKLVJERVBFTkRTXyR7UE59ID0gImdydWIgcGFydGVkIGUyZnNwcm9ncy1ta2UyZnMgdXRpbC1saW51eC1ibGtpZCIKK1JERVBFTkRTXyR7UE59ID0gImdydWIgcGFydGVkIGUyZnNwcm9ncy1ta2UyZnMgdXRpbC1saW51eC1ibGtpZCAke1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzfSIKIAogZG9faW5zdGFsbCgpIHsKICAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdC1pbnN0YWxsLnNoICR7RH0vaW5zdGFsbC5zaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsLWVmaV8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbW9kdWxlLWluc3RhbGwtZWZpXzEuMC5iYgppbmRleCAxZTdmNzZmLi43OGE2MWNkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbW9kdWxlLWluc3RhbGwtZWZpXzEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbW9kdWxlLWluc3RhbGwtZWZpXzEuMC5iYgpAQCAtMSw3ICsxLDcgQEAKIFNVTU1BUlkgPSAiaW5pdHJhbWZzLWZyYW1ld29yayBtb2R1bGUgZm9yIEVGSSBpbnN0YWxsYXRpb24gb3B0aW9uIgogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKLVJERVBFTkRTXyR7UE59ID0gImluaXRyYW1mcy1mcmFtZXdvcmstYmFzZSBwYXJ0ZWQgZTJmc3Byb2dzLW1rZTJmcyBkb3Nmc3Rvb2xzIHV0aWwtbGludXgtYmxraWQiCitSREVQRU5EU18ke1BOfSA9ICJpbml0cmFtZnMtZnJhbWV3b3JrLWJhc2UgcGFydGVkIGUyZnNwcm9ncy1ta2UyZnMgZG9zZnN0b29scyB1dGlsLWxpbnV4LWJsa2lkICR7VklSVFVBTC1SVU5USU1FX2Jhc2UtdXRpbHN9IgogCiBQUiA9ICJyNCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1tb2R1bGUtaW5zdGFsbF8xLjAuYmIKaW5kZXggMDJiNjlmMy4uMDRlOTBjZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsXzEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbW9kdWxlLWluc3RhbGxfMS4wLmJiCkBAIC0xLDcgKzEsNyBAQAogU1VNTUFSWSA9ICJpbml0cmFtZnMtZnJhbWV3b3JrIG1vZHVsZSBmb3IgaW5zdGFsbGF0aW9uIG9wdGlvbiIKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCi1SREVQRU5EU18ke1BOfSA9ICJpbml0cmFtZnMtZnJhbWV3b3JrLWJhc2UgZ3J1YiBwYXJ0ZWQgZTJmc3Byb2dzLW1rZTJmcyB1dGlsLWxpbnV4LWJsa2lkIgorUkRFUEVORFNfJHtQTn0gPSAiaW5pdHJhbWZzLWZyYW1ld29yay1iYXNlIGdydWIgcGFydGVkIGUyZnNwcm9ncy1ta2UyZnMgdXRpbC1saW51eC1ibGtpZCAke1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzfSIKIAogIyBUaGUgc2FtZSByZXN0cmljdGlvbiBhcyBncnViCiBDT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NC4qfGkuODYuKnxhcm0uKnxhYXJjaDY0LiopLShsaW51eC4qfGZyZWVic2QuKiknCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC9zZXQtcHJvcGVyLXBhdGgtb2YtcmVzb3VyY2VzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmQvc2V0LXByb3Blci1wYXRoLW9mLXJlc291cmNlcy5wYXRjaAppbmRleCAyN2Q2ZjQyLi5hOWEzYWI4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC9zZXQtcHJvcGVyLXBhdGgtb2YtcmVzb3VyY2VzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkL3NldC1wcm9wZXItcGF0aC1vZi1yZXNvdXJjZXMucGF0Y2gKQEAgLTEzLDEwICsxMywxMCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KIAotZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDE5NzYzMzMuLmIzNmFlZjMgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KK0luZGV4OiBrYmQtMi4wLjQvdGVzdHMvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBrYmQtMi4wLjQub3JpZy90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGtiZC0yLjAuNC90ZXN0cy9NYWtlZmlsZS5hbQogQEAgLTEsNyArMSw3IEBACiAgQU1fQ1BQRkxBR1MgPSBcCiAgCS1JJChzcmNkaXIpLy4uL3NyYy9saWJrZXltYXAgXApAQCAtMjUsMTEgKzI1LDExIEBACiArCS1EREFUQURJUj1cIi5cIiAtREJVSUxERElSPVwiJChidWlsZGRpcilcIgogIAogIEFNX0NGTEFHUyA9ICQoQ0hFQ0tfQ0ZMQUdTKQotIExEQUREICA9ICQodG9wX2J1aWxkZGlyKS9zcmMvbGlia2V5bWFwL2xpYmtleW1hcC5sYSAkKENIRUNLX0xJQlMpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvYWx0LWlzLW1ldGEuaW4gYi90ZXN0cy9hbHQtaXMtbWV0YS5pbgotaW5kZXggZGRkNWVkOC4uNzcyZmI1MSAxMDA3NTUKLS0tLSBhL3Rlc3RzL2FsdC1pcy1tZXRhLmluCi0rKysgYi90ZXN0cy9hbHQtaXMtbWV0YS5pbgorIExEQUREICA9ICQodG9wX2J1aWxkZGlyKS9zcmMvbGlia2V5bWFwL2xpYmtleW1hcC5sYSAkKENIRUNLX0xJQlMpIEBJTlRMTElCU0AKK0luZGV4OiBrYmQtMi4wLjQvdGVzdHMvYWx0LWlzLW1ldGEuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBrYmQtMi4wLjQub3JpZy90ZXN0cy9hbHQtaXMtbWV0YS5pbgorKysrIGtiZC0yLjAuNC90ZXN0cy9hbHQtaXMtbWV0YS5pbgogQEAgLTcsOCArNyw4IEBAIGNkICIkY3dkIgogIHJjPTAKICB0ZW1wPSIkKG1rdGVtcCAiQEJVSUxERElSQC90ZW1wLlhYWFhYWFhYWCIpIgpAQCAtNDEsMTAgKzQxLDEwIEBACiAgCiAgaWYgWyAiJHJjIiAhPSAwIF07IHRoZW4KICAJcHJpbnRmICdmYWlsZWRcbicKLWRpZmYgLS1naXQgYS90ZXN0cy9kdW1wa2V5cy1mdWxsdGFibGUuaW4gYi90ZXN0cy9kdW1wa2V5cy1mdWxsdGFibGUuaW4KLWluZGV4IDdjODU2ZTUuLjE0ZDkyYzEgMTAwNzU1Ci0tLS0gYS90ZXN0cy9kdW1wa2V5cy1mdWxsdGFibGUuaW4KLSsrKyBiL3Rlc3RzL2R1bXBrZXlzLWZ1bGx0YWJsZS5pbgorSW5kZXg6IGtiZC0yLjAuNC90ZXN0cy9kdW1wa2V5cy1mdWxsdGFibGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBrYmQtMi4wLjQub3JpZy90ZXN0cy9kdW1wa2V5cy1mdWxsdGFibGUuaW4KKysrKyBrYmQtMi4wLjQvdGVzdHMvZHVtcGtleXMtZnVsbHRhYmxlLmluCiBAQCAtNSw3ICs1LDcgQEAgY3dkPSIkKHJlYWRsaW5rIC1ldiAiJHswJS8qfSIpIgogIGNkICIkY3dkIgogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmRfMi4wLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZF8yLjAuNC5iYgppbmRleCA0MjNiNDdhLi40YWYzMjU2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZF8yLjAuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZF8yLjAuNC5iYgpAQCAtMyw3ICszLDYgQEAKICMgZXZlcnl0aGluZyBtaW51cyBjb25zb2xlLWZvbnRzIGlzIEdQTHYyKwogTElDRU5TRSA9ICJHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNWZjYzM2MTIxZDkzZTFmNjlkOTZhMzEzMDc4YzhiNSIKLURFUEVORFMgPSAibGliY2hlY2siCiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcHRlc3QgcGtnY29uZmlnCiAKQEAgLTE5LDggKzE4LDEyIEBACiBTUkNfVVJJW21kNXN1bV0gPSAiYzE2MzVhNWE4M2I2M2FjYTdmOTdhM2VhYjM5ZWJhYTYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWZkOTBhZjZiZWIyMjVhOWJiOWI5ZmI0MTRjMDkwZmJhNTNjOWE1NTc5M2UxNzJmNTA4Y2Q0MzY1MmU1OWE4OCIKIAotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IgorUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAndGVzdHMnLCcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgIgorCiBQQUNLQUdFQ09ORklHW3BhbV0gPSAiLS1lbmFibGUtdmxvY2ssIC0tZGlzYWJsZS12bG9jaywgbGlicGFtLCIKK1BBQ0tBR0VDT05GSUdbdGVzdHNdID0gIi0tZW5hYmxlLXRlc3RzLCAtLWRpc2FibGUtdGVzdHMsIGxpYmNoZWNrIgogCiBkb19jb21waWxlX3B0ZXN0KCkgewogICAgIG9lX3J1bm1ha2UgLUMgJHtCfS90ZXN0cyBkdW1wa2V5cy1mdWxsdGFibGUgYWx0LWlzLW1ldGEKQEAgLTI5LDYgKzMyLDEzIEBACiBkb19pbnN0YWxsX3B0ZXN0KCkgewogICAgIGluc3RhbGwgLUQgJHtCfS90ZXN0cy9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQogICAgIHNlZCAtaSAtZSAnL01ha2VmaWxlOi8sL14kL2QnIC1lICcvJTogJS5pbi8sL14kL2QnIFwKKwktZSAnczotLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9OjpnJyBcCisJLWUgJ3M6JHtERUJVR19QUkVGSVhfTUFQfTo6ZycgXAorCS1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKwktZSAnczoke1N9L2NvbmZpZy9taXNzaW5nOjpnJyBcCisJLWUgJ3M6JHtXT1JLRElSfTo6ZycgXAogCS1lICcvbGlia2V5bWFwXy4qX1NPVVJDRVMgPS9kJyAtZSAnLyQoRVhFRVhUKTovLC9eJC9kJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQogCiAgICAgZmluZCAke0J9L3Rlc3RzIC1leGVjdXRhYmxlIC1leGVjIGluc3RhbGwge30gJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMgXDsKQEAgLTQ4LDcgKzU4LDcgQEAKIAogaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCiAKLUFMVEVSTkFUSVZFXyR7UE59ID0gImNodnQgZGVhbGxvY3Z0IGZnY29uc29sZSBvcGVudnQiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJjaHZ0IGRlYWxsb2N2dCBmZ2NvbnNvbGUgb3BlbnZ0IHNob3drZXkiCiBBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYmNncm91cC9saWJjZ3JvdXBfMC40MS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJjZ3JvdXAvbGliY2dyb3VwXzAuNDEuYmIKaW5kZXggZTRiMTc4Mi4uN2RkYzgxZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYmNncm91cC9saWJjZ3JvdXBfMC40MS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGliY2dyb3VwL2xpYmNncm91cF8wLjQxLmJiCkBAIC05LDcgKzksNyBAQAogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKIAotREVQRU5EUyA9ICJiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKK0RFUEVORFMgPSAiYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlIgogCiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2xpYmNnLyR7QlBOfS92MC40MS8ke0JQTn0tJHtQVn0udGFyLmJ6MiIKIFNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovL211c2wtZGVjbHMtY29tcGF0LnBhdGNoIgpAQCAtMjAsOSArMjAsMTAgQEAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYmNnL2ZpbGVzL2xpYmNncm91cC8iCiAKIERFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZnRzICIKLUVYVFJBX09FTUFLRV9hcHBlbmRfbGliYy1tdXNsID0gIkxJQlM9LWxmdHMiCitFWFRSQV9PRU1BS0VfYXBwZW5kX2xpYmMtbXVzbCA9ICIgTElCUz0tbGZ0cyIKIAotRVhUUkFfT0VDT05GID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0tZW5hYmxlLXBhbS1tb2R1bGUtZGlyPSR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5IC0tZW5hYmxlLXBhbT15ZXMnLCAnLS1lbmFibGUtcGFtPW5vJywgZCl9IgorUEFDS0FHRUNPTkZJRyA9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iCitQQUNLQUdFQ09ORklHW3BhbV0gPSAiLS1lbmFibGUtcGFtLW1vZHVsZS1kaXI9JHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkgLS1lbmFibGUtcGFtPXllcywtLWVuYWJsZS1wYW09bm8sbGlicGFtIgogCiBQQUNLQUdFUyA9KyAiY2dyb3Vwcy1wYW0tcGx1Z2luIgogRklMRVNfY2dyb3Vwcy1wYW0tcGx1Z2luID0gIiR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5L3BhbV9jZ3JvdXAuc28qIgpAQCAtMzMsOCArMzQsOCBAQAogCWlmIFsgISAke0R9JHtsaWJkaXJ9IC1lZiAke0R9JHtiYXNlX2xpYmRpcn0gXTsgdGhlbgogCQlta2RpciAtcCAke0R9LyR7YmFzZV9saWJkaXJ9LwogCQltdiAtZiAke0R9JHtsaWJkaXJ9L2xpYmNncm91cC5zby4qICR7RH0ke2Jhc2VfbGliZGlyfS8KLQkJcmVsX2xpYl9wcmVmaXg9YGVjaG8gJHtsaWJkaXJ9IHwgc2VkICdzLFwoXi9cfFwpW14vXVteL10qLC4uLGcnYAotCQlsbiAtc2YgJHtyZWxfbGliX3ByZWZpeH0ke2Jhc2VfbGliZGlyfS9saWJjZ3JvdXAuc28uMSAke0R9JHtsaWJkaXJ9L2xpYmNncm91cC5zbworCQlybSAtZiAke0R9JHtsaWJkaXJ9L2xpYmNncm91cC5zbworCQlsbnIgJHtEfSR7YmFzZV9saWJkaXJ9L2xpYmNncm91cC5zby4xICR7RH0ke2xpYmRpcn0vbGliY2dyb3VwLnNvCiAJZmkKIAkjIHBhbSBtb2R1bGVzIGluICR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5LyBzaG91bGQgYmUgYmluYXJ5IC5zbyBmaWxlcywgbm90IHN5bWxpbmtzLgogCWlmIFsgLWYgJHtEfSR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5L3BhbV9jZ3JvdXAuc28uMC4wLjAgXTsgdGhlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHRfNC4wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdF80LjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWQ2N2E2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHRfNC4wLjEuYmIKQEAgLTAsMCArMSwzMiBAQAorU1VNTUFSWSA9ICJFeHRlbmRlZCBjcnlwdG9ncmFwaGljIGxpYnJhcnkgKGZyb20gZ2xpYmMpIgorREVTQ1JJUFRJT04gPSAiRm9ya2VkIGNvZGUgZnJvbSBnbGliYyBsaWJhcnkgdG8gZXh0cmFjdCBvbmx5IGNyeXB0byBwYXJ0LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9iZXNzZXI4Mi9saWJ4Y3J5cHQiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA/PSAiZmlsZTovL0xJQ0VOU0lORzttZDU9ZDFjYzE4ZjUxMmRlZDNiZDYwMDBmMzcyOWYzMWJlMDggXAorICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK1NSQ1JFViA/PSAiMDg5NDc5YmIyNGFjZDE2ODYxMzc1N2E2ZjEyZDYzY2FhOTU0MTZiNCIKK1NSQ0JSQU5DSCA/PSAibWFzdGVyIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYmVzc2VyODIvbGlieGNyeXB0LmdpdDticmFuY2g9JHtTUkNCUkFOQ0h9IFwKKyAgICAgICAgICAgIgorCitQUk9WSURFUyA9ICJ2aXJ0dWFsL2NyeXB0IgorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliY3J5cHQqLnNvLiogJHtsaWJkaXJ9L2xpYmNyeXB0LSouc28gJHtsaWJkaXJ9L2xpYm93Y3J5cHQqLnNvLiogJHtsaWJkaXJ9L2xpYm93Y3J5cHQtKi5zbyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworQlVJTERfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfSU5DRElSX05BVElWRX0gLXN0ZD1nbnU5OSIKK1RBUkdFVF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7aW5jbHVkZWRpcn0iCisKK3B5dGhvbiAoKSB7CisgICAgaWYgbm90IGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ25hdGl2ZXNkaycsIGQpOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJSZWNpcGUgb25seSBhcHBsaWVzIGluIG5hdGl2ZXNkayBjYXNlIGZvciBub3ciKQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi8wMDAxLU1ha2UtcHRlc3QtcnVuLXRoZS1weXRob24tdGVzdHMtaWYtcHl0aG9uLWlzLWVuYWJsZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvMDAwMS1NYWtlLXB0ZXN0LXJ1bi10aGUtcHl0aG9uLXRlc3RzLWlmLXB5dGhvbi1pcy1lbmFibGVkLnBhdGNoCmluZGV4IGQxYWQ1NTEuLjJiOTJkYmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi8wMDAxLU1ha2UtcHRlc3QtcnVuLXRoZS1weXRob24tdGVzdHMtaWYtcHl0aG9uLWlzLWVuYWJsZWQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyLzAwMDEtTWFrZS1wdGVzdC1ydW4tdGhlLXB5dGhvbi10ZXN0cy1pZi1weXRob24taXMtZW5hYmxlZC5wYXRjaApAQCAtMTUsMTIgKzE1LDEyIEBACiAgcHl0aG9uL3Rlc3RzL3RzdExhc3RFcnJvci5weSB8ICAyICstCiAgNCBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggZTE4MWVlMC4uNzk2MGU3ZCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQorSW5kZXg6IGxpYnhtbDItMi45LjcvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsaWJ4bWwyLTIuOS43Lm9yaWcvTWFrZWZpbGUuYW0KKysrKyBsaWJ4bWwyLTIuOS43L01ha2VmaWxlLmFtCiBAQCAtMjA3LDkgKzIwNyw5IEBAIGluc3RhbGwtcHRlc3Q6Ci0gCWluc3RhbGwgJChub2luc3RfUFJPR1JBTVMpICQoREVTVERJUikpCisgCWluc3RhbGwgJChjaGVja19QUk9HUkFNUykgJChERVNURElSKSkKICAJY3AgLXIgJChzcmNkaXIpL3Rlc3QgJChERVNURElSKQogIAljcCAtciAkKHNyY2RpcikvcmVzdWx0ICQoREVTVERJUikKIC0JY3AgLXIgJChzcmNkaXIpL3B5dGhvbiAkKERFU1RESVIpCkBAIC0yOCwxMyArMjgsMTMgQEAKICAJc2VkIC1pIC1lICdzfF5NYWtlZmlsZTp8X01ha2VmaWxlOnwnICQoREVTVERJUikvTWFrZWZpbGUKICsJJChNQUtFKSAtQyBweXRob24gaW5zdGFsbC1wdGVzdAogIAotIHJ1bnRlc3RzOgotIAlbIC1kIHRlc3QgICBdIHx8ICQoTE5fUykgJChzcmNkaXIpL3Rlc3QgICAuCi1kaWZmIC0tZ2l0IGEvcHl0aG9uL01ha2VmaWxlLmFtIGIvcHl0aG9uL01ha2VmaWxlLmFtCi1pbmRleCAzNGFlZDk2Li5iYTNlYzZhIDEwMDY0NAotLS0tIGEvcHl0aG9uL01ha2VmaWxlLmFtCi0rKysgYi9weXRob24vTWFrZWZpbGUuYW0KLUBAIC00OCw3ICs0OCwxNiBAQCBHRU5FUkFURUQgPSBsaWJ4bWwyY2xhc3MucHkgbGlieG1sMmNsYXNzLnR4dCAkKEJVSUxUX1NPVVJDRVMpCisgcnVudGVzdHM6IHJ1bnRlc3QkKEVYRUVYVCkgdGVzdHJlY3Vyc2UkKEVYRUVYVCkgdGVzdGFwaSQoRVhFRVhUKSBcCisgICAgICAgICAgIHRlc3RjaGFyJChFWEVFWFQpIHRlc3RkaWN0JChFWEVFWFQpIHJ1bnhtbGNvbmYkKEVYRUVYVCkKK0luZGV4OiBsaWJ4bWwyLTIuOS43L3B5dGhvbi9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYnhtbDItMi45Ljcub3JpZy9weXRob24vTWFrZWZpbGUuYW0KKysrKyBsaWJ4bWwyLTIuOS43L3B5dGhvbi9NYWtlZmlsZS5hbQorQEAgLTQ4LDcgKzQ4LDE2IEBAIEdFTkVSQVRFRCA9IGxpYnhtbDJjbGFzcy5weSBsaWJ4bWwyY2xhc3MKICAKICAkKEdFTkVSQVRFRCk6ICQoc3JjZGlyKS9nZW5lcmF0b3IucHkgJChBUElfREVTQykKICAJJChQWVRIT04pICQoc3JjZGlyKS9nZW5lcmF0b3IucHkgJChzcmNkaXIpCkBAIC01MSwxMCArNTEsMTAgQEAKICsuUEhPTlk6IHRlc3RzIHRlc3QKICB0ZXN0cyB0ZXN0OiBhbGwKICAJY2QgdGVzdHMgJiYgJChNQUtFKSB0ZXN0cwotZGlmZiAtLWdpdCBhL3B5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbSBiL3B5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggOTVlYmVhZC4uNDE4ZTIxZSAxMDA2NDQKLS0tLSBhL3B5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGIvcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtCitJbmRleDogbGlieG1sMi0yLjkuNy9weXRob24vdGVzdHMvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsaWJ4bWwyLTIuOS43Lm9yaWcvcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtCisrKysgbGlieG1sMi0yLjkuNy9weXRob24vdGVzdHMvTWFrZWZpbGUuYW0KIEBAIC01OSw2ICs1OSwxMSBAQCBYTUxTPQkJXAogIENMRUFORklMRVMgPSBjb3JlIHRtcC54bWwgKi5weWMKICAKQEAgLTgxLDEwICs4MSwxMCBAQAogKwogIHRlc3RzOgogIGVuZGlmCi1kaWZmIC0tZ2l0IGEvcHl0aG9uL3Rlc3RzL3RzdExhc3RFcnJvci5weSBiL3B5dGhvbi90ZXN0cy90c3RMYXN0RXJyb3IucHkKLWluZGV4IGQ1ZjliZTcuLjNlNWJlZjggMTAwNzU1Ci0tLS0gYS9weXRob24vdGVzdHMvdHN0TGFzdEVycm9yLnB5Ci0rKysgYi9weXRob24vdGVzdHMvdHN0TGFzdEVycm9yLnB5CitJbmRleDogbGlieG1sMi0yLjkuNy9weXRob24vdGVzdHMvdHN0TGFzdEVycm9yLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGlieG1sMi0yLjkuNy5vcmlnL3B5dGhvbi90ZXN0cy90c3RMYXN0RXJyb3IucHkKKysrKyBsaWJ4bWwyLTIuOS43L3B5dGhvbi90ZXN0cy90c3RMYXN0RXJyb3IucHkKIEBAIC0yNSw3ICsyNSw3IEBAIGNsYXNzIFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgIHdoZW4gdGhlIGV4Y2VwdGlvbiBpcyByYWlzZWQsIGNoZWNrIHRoZSBsaWJ4bWwyLmxhc3RFcnJvciBmb3IKICAgICAgICAgIGV4cGVjdGVkIHZhbHVlcy4iIiIKQEAgLTk0LDYgKzk0LDMgQEAKICAgICAgICAgIHRyeToKICAgICAgICAgICAgICBmKCphcmdzKQogICAgICAgICAgZXhjZXB0IGV4YzoKLS0tIAotMi4xMi4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9maXgtZXhlY3V0aW9uLW9mLXB0ZXN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9maXgtZXhlY3V0aW9uLW9mLXB0ZXN0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWE5ZTE5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2ZpeC1leGVjdXRpb24tb2YtcHRlc3RzLnBhdGNoCkBAIC0wLDAgKzEsMjEgQEAKK01ha2Ugc3VyZSB0aGF0IE1ha2VmaWxlIGRvZXNuJ3QgdHJ5IHRvIGNvbXBpbGUgdGhlc2UgdGVzdHMgYWdhaW4KK29uIHRoZSB0YXJnZXQgd2hlcmUgdGhlIHNvdXJjZSBkZXBlbmRlbmNpZXMgd29uJ3QgYmUgYXZhaWxhYmxlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Nyb3NzLWNvbXBpbGUgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CisKK0luZGV4OiBsaWJ4bWwyLTIuOS43L01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGlieG1sMi0yLjkuNy5vcmlnL01ha2VmaWxlLmFtCisrKysgbGlieG1sMi0yLjkuNy9NYWtlZmlsZS5hbQorQEAgLTIxMSw4ICsyMTEsNyBAQCBpbnN0YWxsLXB0ZXN0OgorIAlzZWQgLWkgLWUgJ3N8Xk1ha2VmaWxlOnxfTWFrZWZpbGU6fCcgJChERVNURElSKS9NYWtlZmlsZQorIAkkKE1BS0UpIC1DIHB5dGhvbiBpbnN0YWxsLXB0ZXN0CisgCistcnVudGVzdHM6IHJ1bnRlc3QkKEVYRUVYVCkgdGVzdHJlY3Vyc2UkKEVYRUVYVCkgdGVzdGFwaSQoRVhFRVhUKSBcCistICAgICAgICAgIHRlc3RjaGFyJChFWEVFWFQpIHRlc3RkaWN0JChFWEVFWFQpIHJ1bnhtbGNvbmYkKEVYRUVYVCkKKytydW50ZXN0czoKKyAJWyAtZCB0ZXN0ICAgXSB8fCAkKExOX1MpICQoc3JjZGlyKS90ZXN0ICAgLgorIAlbIC1kIHJlc3VsdCBdIHx8ICQoTE5fUykgJChzcmNkaXIpL3Jlc3VsdCAuCisgCSQoQ0hFQ0tFUikgLi9ydW50ZXN0JChFWEVFWFQpICYmIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwtbTQtdXNlLXBrZ2NvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwtbTQtdXNlLXBrZ2NvbmZpZy5wYXRjaAppbmRleCAzMjc3MTY1Li5kOWVkMTUxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sLW00LXVzZS1wa2djb25maWcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbC1tNC11c2UtcGtnY29uZmlnLnBhdGNoCkBAIC0xODMsNyArMTgzLDcgQEAKIC0gICAgICAgICAgZWNobyAiKioqIElmIHlvdSBoYXZlIGFuIG9sZCB2ZXJzaW9uIGluc3RhbGxlZCwgaXQgaXMgYmVzdCB0byByZW1vdmUgaXQsIGFsdGhvdWdoIgogLSAgICAgICAgICBlY2hvICIqKiogeW91IG1heSBhbHNvIGJlIGFibGUgdG8gZ2V0IHRoaW5ncyB0byB3b3JrIGJ5IG1vZGlmeWluZyBMRF9MSUJSQVJZX1BBVEgiIF0sCiAtICAgICAgICBbIGVjaG8gIioqKiBUaGUgdGVzdCBwcm9ncmFtIGZhaWxlZCB0byBjb21waWxlIG9yIGxpbmsuIFNlZSB0aGUgZmlsZSBjb25maWcubG9nIGZvciB0aGUiCi0tICAgICAgICAgIGVjaG8gIioqKiBleGFjdCBlcnJvciB0aGF0IG9jY3VyZWQuIFRoaXMgdXN1YWxseSBtZWFucyBMSUJYTUwgd2FzIGluY29ycmVjdGx5IGluc3RhbGxlZCIKKy0gICAgICAgICAgZWNobyAiKioqIGV4YWN0IGVycm9yIHRoYXQgb2NjdXJyZWQuIFRoaXMgdXN1YWxseSBtZWFucyBMSUJYTUwgd2FzIGluY29ycmVjdGx5IGluc3RhbGxlZCIKIC0gICAgICAgICAgZWNobyAiKioqIG9yIHRoYXQgeW91IGhhdmUgbW92ZWQgTElCWE1MIHNpbmNlIGl0IHdhcyBpbnN0YWxsZWQuIEluIHRoZSBsYXR0ZXIgY2FzZSwgeW91IgogLSAgICAgICAgICBlY2hvICIqKiogbWF5IHdhbnQgdG8gZWRpdCB0aGUgeG1sMi1jb25maWcgc2NyaXB0OiAkWE1MMl9DT05GSUciIF0pCiAtICAgICAgICAgIENQUEZMQUdTPSIkYWNfc2F2ZV9DUFBGTEFHUyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE2LTQ2NTgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1DVkUtMjAxNi00NjU4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjU1ZWVkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE2LTQ2NTgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNjkgKzAsMCBAQAotbGlieG1sMi0yLjkuNDogRml4IENWRS0yMDE2LTQ2NTgKLQotW05vIHVwc3RyZWFtIHRyYWNraW5nXSAtLSBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPUNWRS0yMDE2LTQ2NTgKLQoteHBvaW50ZXI6IERpc2FsbG93IG5hbWVzcGFjZSBub2RlcyBpbiBYUG9pbnRlciBwb2ludHMgYW5kIHJhbmdlcwotCi1OYW1lc3BhY2Ugbm9kZXMgbXVzdCBiZSBjb3BpZWQgdG8gYXZvaWQgdXNlLWFmdGVyLWZyZWUgZXJyb3JzLgotQnV0IHRoZXkgZG9uJ3QgbmVjZXNzYXJpbHkgaGF2ZSBhIHBoeXNpY2FsIHJlcHJlc2VudGF0aW9uIGluIGEKLWRvY3VtZW50LCBzbyBzaW1wbHkgZGlzYWxsb3cgdGhlbSBpbiBYUG9pbnRlciByYW5nZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLSAtIFtodHRwczovL2dpdC5nbm9tZS5vcmcvYnJvd3NlL2xpYnhtbDIvY29tbWl0Lz9pZD1jMWQxZjcxMjExOTQwMzY2MDhiZjU1NWYwOGQzMDYyYTM2ZmQzNDRiXQotIC0gW2h0dHBzOi8vZ2l0Lmdub21lLm9yZy9icm93c2UvbGlieG1sMi9jb21taXQvP2lkPTNmOGE5MTAzNmQzMzhlNTFjMDU5ZDU0Mzk3YTQyZDY0NWYwMTljNjVdCi1DVkU6IENWRS0yMDE2LTQ2NTgKLVNpZ25lZC1vZmYtYnk6IEFuZHJlaiBWYWxlayA8YW5kcmVqLnZhbGVrQHNpZW1lbnMuY29tPgotU2lnbmVkLW9mZi1ieTogUGFzY2FsIEJhY2ggPHBhc2NhbC5iYWNoQHNpZW1lbnMuY29tPgotCi1kaWZmIC0tZ2l0IGEveHBvaW50ZXIuYyBiL3hwb2ludGVyLmMKLWluZGV4IDY3NmM1MTAuLjkxMTY4MGQgMTAwNjQ0Ci0tLS0gYS94cG9pbnRlci5jCi0rKysgYi94cG9pbnRlci5jCi1AQCAtMzIwLDYgKzMyMCw0NSBAQCB4bWxYUHRyUmFuZ2VzRXF1YWwoeG1sWFBhdGhPYmplY3RQdHIgcmFuZ2UxLCB4bWxYUGF0aE9iamVjdFB0ciByYW5nZTIpIHsKLSB9Ci0gCi0gLyoqCi0rICogeG1sWFB0ck5ld1JhbmdlSW50ZXJuYWw6Ci0rICogQHN0YXJ0OiAgdGhlIHN0YXJ0aW5nIG5vZGUKLSsgKiBAc3RhcnRpbmRleDogIHRoZSBzdGFydCBpbmRleAotKyAqIEBlbmQ6ICB0aGUgZW5kaW5nIHBvaW50Ci0rICogQGVuZGluZGV4OiAgdGhlIGVuZGluZyBpbmRleAotKyAqCi0rICogSW50ZXJuYWwgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IHhtbFhQYXRoT2JqZWN0UHRyIG9mIHR5cGUgcmFuZ2UKLSsgKgotKyAqIFJldHVybnMgdGhlIG5ld2x5IGNyZWF0ZWQgb2JqZWN0LgotKyAqLwotK3N0YXRpYyB4bWxYUGF0aE9iamVjdFB0cgotK3htbFhQdHJOZXdSYW5nZUludGVybmFsKHhtbE5vZGVQdHIgc3RhcnQsIGludCBzdGFydGluZGV4LAotKyAgICAgICAgICAgICAgICAgICAgICAgIHhtbE5vZGVQdHIgZW5kLCBpbnQgZW5kaW5kZXgpIHsKLSsgICAgeG1sWFBhdGhPYmplY3RQdHIgcmV0OwotKwotKyAgICAvKgotKyAgICAgKiBOYW1lc3BhY2Ugbm9kZXMgbXVzdCBiZSBjb3BpZWQgKHNlZSB4bWxYUGF0aE5vZGVTZXREdXBOcykuCi0rICAgICAqIERpc2FsbG93IHRoZW0gZm9yIG5vdy4KLSsgICAgICovCi0rICAgIGlmICgoc3RhcnQgIT0gTlVMTCkgJiYgKHN0YXJ0LT50eXBlID09IFhNTF9OQU1FU1BBQ0VfREVDTCkpCi0rCXJldHVybihOVUxMKTsKLSsgICAgaWYgKChlbmQgIT0gTlVMTCkgJiYgKGVuZC0+dHlwZSA9PSBYTUxfTkFNRVNQQUNFX0RFQ0wpKQotKwlyZXR1cm4oTlVMTCk7Ci0rCi0rICAgIHJldCA9ICh4bWxYUGF0aE9iamVjdFB0cikgeG1sTWFsbG9jKHNpemVvZih4bWxYUGF0aE9iamVjdCkpOwotKyAgICBpZiAocmV0ID09IE5VTEwpIHsKLSsgICAgICAgIHhtbFhQdHJFcnJNZW1vcnkoImFsbG9jYXRpbmcgcmFuZ2UiKTsKLSsJcmV0dXJuKE5VTEwpOwotKyAgICB9Ci0rICAgIG1lbXNldChyZXQsIDAsIHNpemVvZih4bWxYUGF0aE9iamVjdCkpOwotKyAgICByZXQtPnR5cGUgPSBYUEFUSF9SQU5HRTsKLSsgICAgcmV0LT51c2VyID0gc3RhcnQ7Ci0rICAgIHJldC0+aW5kZXggPSBzdGFydGluZGV4OwotKyAgICByZXQtPnVzZXIyID0gZW5kOwotKyAgICByZXQtPmluZGV4MiA9IGVuZGluZGV4OwotKyAgICByZXR1cm4ocmV0KTsKLSt9Ci0rCi0rLyoqCi0gICogeG1sWFB0ck5ld1JhbmdlOgotICAqIEBzdGFydDogIHRoZSBzdGFydGluZyBub2RlCi0gICogQHN0YXJ0aW5kZXg6ICB0aGUgc3RhcnQgaW5kZXgKLUBAIC0zNDQsMTcgKzM4Myw3IEBAIHhtbFhQdHJOZXdSYW5nZSh4bWxOb2RlUHRyIHN0YXJ0LCBpbnQgc3RhcnRpbmRleCwKLSAgICAgaWYgKGVuZGluZGV4IDwgMCkKLSAJcmV0dXJuKE5VTEwpOwotIAotLSAgICByZXQgPSAoeG1sWFBhdGhPYmplY3RQdHIpIHhtbE1hbGxvYyhzaXplb2YoeG1sWFBhdGhPYmplY3QpKTsKLS0gICAgaWYgKHJldCA9PSBOVUxMKSB7Ci0tICAgICAgICB4bWxYUHRyRXJyTWVtb3J5KCJhbGxvY2F0aW5nIHJhbmdlIik7Ci0tCXJldHVybihOVUxMKTsKLS0gICAgfQotLSAgICBtZW1zZXQocmV0LCAwICwgKHNpemVfdCkgc2l6ZW9mKHhtbFhQYXRoT2JqZWN0KSk7Ci0tICAgIHJldC0+dHlwZSA9IFhQQVRIX1JBTkdFOwotLSAgICByZXQtPnVzZXIgPSBzdGFydDsKLS0gICAgcmV0LT5pbmRleCA9IHN0YXJ0aW5kZXg7Ci0tICAgIHJldC0+dXNlcjIgPSBlbmQ7Ci0tICAgIHJldC0+aW5kZXgyID0gZW5kaW5kZXg7Ci0rICAgIHJldCA9IHhtbFhQdHJOZXdSYW5nZUludGVybmFsKHN0YXJ0LCBzdGFydGluZGV4LCBlbmQsIGVuZGluZGV4KTsKLSAgICAgeG1sWFB0clJhbmdlQ2hlY2tPcmRlcihyZXQpOwotICAgICByZXR1cm4ocmV0KTsKLSB9Ci1AQCAtMzgxLDE3ICs0MTAsOCBAQCB4bWxYUHRyTmV3UmFuZ2VQb2ludHMoeG1sWFBhdGhPYmplY3RQdHIgc3RhcnQsIHhtbFhQYXRoT2JqZWN0UHRyIGVuZCkgewotICAgICBpZiAoZW5kLT50eXBlICE9IFhQQVRIX1BPSU5UKQotIAlyZXR1cm4oTlVMTCk7Ci0gCi0tICAgIHJldCA9ICh4bWxYUGF0aE9iamVjdFB0cikgeG1sTWFsbG9jKHNpemVvZih4bWxYUGF0aE9iamVjdCkpOwotLSAgICBpZiAocmV0ID09IE5VTEwpIHsKLS0gICAgICAgIHhtbFhQdHJFcnJNZW1vcnkoImFsbG9jYXRpbmcgcmFuZ2UiKTsKLS0JcmV0dXJuKE5VTEwpOwotLSAgICB9Ci0tICAgIG1lbXNldChyZXQsIDAgLCAoc2l6ZV90KSBzaXplb2YoeG1sWFBhdGhPYmplY3QpKTsKLS0gICAgcmV0LT50eXBlID0gWFBBVEhfUkFOR0U7Ci0tICAgIHJldC0+dXNlciA9IHN0YXJ0LT51c2VyOwotLSAgICByZXQtPmluZGV4ID0gc3RhcnQtPmluZGV4OwotLSAgICByZXQtPnVzZXIyID0gZW5kLT51c2VyOwotLSAgICByZXQtPmluZGV4MiA9IGVuZC0+aW5kZXg7Ci0rICAgIHJldCA9IHhtbFhQdHJOZXdSYW5nZUludGVybmFsKHN0YXJ0LT51c2VyLCBzdGFydC0+aW5kZXgsIGVuZC0+dXNlciwKLSsJCQkJICBlbmQtPmluZGV4KTsKLSAgICAgeG1sWFB0clJhbmdlQ2hlY2tPcmRlcihyZXQpOwotICAgICByZXR1cm4ocmV0KTsKLSB9Ci1AQCAtNDE2LDE3ICs0MzYsNyBAQCB4bWxYUHRyTmV3UmFuZ2VQb2ludE5vZGUoeG1sWFBhdGhPYmplY3RQdHIgc3RhcnQsIHhtbE5vZGVQdHIgZW5kKSB7Ci0gICAgIGlmIChzdGFydC0+dHlwZSAhPSBYUEFUSF9QT0lOVCkKLSAJcmV0dXJuKE5VTEwpOwotIAotLSAgICByZXQgPSAoeG1sWFBhdGhPYmplY3RQdHIpIHhtbE1hbGxvYyhzaXplb2YoeG1sWFBhdGhPYmplY3QpKTsKLS0gICAgaWYgKHJldCA9PSBOVUxMKSB7Ci0tICAgICAgICB4bWxYUHRyRXJyTWVtb3J5KCJhbGxvY2F0aW5nIHJhbmdlIik7Ci0tCXJldHVybihOVUxMKTsKLS0gICAgfQotLSAgICBtZW1zZXQocmV0LCAwICwgKHNpemVfdCkgc2l6ZW9mKHhtbFhQYXRoT2JqZWN0KSk7Ci0tICAgIHJldC0+dHlwZSA9IFhQQVRIX1JBTkdFOwotLSAgICByZXQtPnVzZXIgPSBzdGFydC0+dXNlcjsKLS0gICAgcmV0LT5pbmRleCA9IHN0YXJ0LT5pbmRleDsKLS0gICAgcmV0LT51c2VyMiA9IGVuZDsKLS0gICAgcmV0LT5pbmRleDIgPSAtMTsKLSsgICAgcmV0ID0geG1sWFB0ck5ld1JhbmdlSW50ZXJuYWwoc3RhcnQtPnVzZXIsIHN0YXJ0LT5pbmRleCwgZW5kLCAtMSk7Ci0gICAgIHhtbFhQdHJSYW5nZUNoZWNrT3JkZXIocmV0KTsKLSAgICAgcmV0dXJuKHJldCk7Ci0gfQotQEAgLTQ1MywxNyArNDYzLDcgQEAgeG1sWFB0ck5ld1JhbmdlTm9kZVBvaW50KHhtbE5vZGVQdHIgc3RhcnQsIHhtbFhQYXRoT2JqZWN0UHRyIGVuZCkgewotICAgICBpZiAoZW5kLT50eXBlICE9IFhQQVRIX1BPSU5UKQotIAlyZXR1cm4oTlVMTCk7Ci0gCi0tICAgIHJldCA9ICh4bWxYUGF0aE9iamVjdFB0cikgeG1sTWFsbG9jKHNpemVvZih4bWxYUGF0aE9iamVjdCkpOwotLSAgICBpZiAocmV0ID09IE5VTEwpIHsKLS0gICAgICAgIHhtbFhQdHJFcnJNZW1vcnkoImFsbG9jYXRpbmcgcmFuZ2UiKTsKLS0JcmV0dXJuKE5VTEwpOwotLSAgICB9Ci0tICAgIG1lbXNldChyZXQsIDAgLCAoc2l6ZV90KSBzaXplb2YoeG1sWFBhdGhPYmplY3QpKTsKLS0gICAgcmV0LT50eXBlID0gWFBBVEhfUkFOR0U7Ci0tICAgIHJldC0+dXNlciA9IHN0YXJ0OwotLSAgICByZXQtPmluZGV4ID0gLTE7Ci0tICAgIHJldC0+dXNlcjIgPSBlbmQtPnVzZXI7Ci0tICAgIHJldC0+aW5kZXgyID0gZW5kLT5pbmRleDsKLSsgICAgcmV0ID0geG1sWFB0ck5ld1JhbmdlSW50ZXJuYWwoc3RhcnQsIC0xLCBlbmQtPnVzZXIsIGVuZC0+aW5kZXgpOwotICAgICB4bWxYUHRyUmFuZ2VDaGVja09yZGVyKHJldCk7Ci0gICAgIHJldHVybihyZXQpOwotIH0KLUBAIC00ODYsMTcgKzQ4Niw3IEBAIHhtbFhQdHJOZXdSYW5nZU5vZGVzKHhtbE5vZGVQdHIgc3RhcnQsIHhtbE5vZGVQdHIgZW5kKSB7Ci0gICAgIGlmIChlbmQgPT0gTlVMTCkKLSAJcmV0dXJuKE5VTEwpOwotIAotLSAgICByZXQgPSAoeG1sWFBhdGhPYmplY3RQdHIpIHhtbE1hbGxvYyhzaXplb2YoeG1sWFBhdGhPYmplY3QpKTsKLS0gICAgaWYgKHJldCA9PSBOVUxMKSB7Ci0tICAgICAgICB4bWxYUHRyRXJyTWVtb3J5KCJhbGxvY2F0aW5nIHJhbmdlIik7Ci0tCXJldHVybihOVUxMKTsKLS0gICAgfQotLSAgICBtZW1zZXQocmV0LCAwICwgKHNpemVfdCkgc2l6ZW9mKHhtbFhQYXRoT2JqZWN0KSk7Ci0tICAgIHJldC0+dHlwZSA9IFhQQVRIX1JBTkdFOwotLSAgICByZXQtPnVzZXIgPSBzdGFydDsKLS0gICAgcmV0LT5pbmRleCA9IC0xOwotLSAgICByZXQtPnVzZXIyID0gZW5kOwotLSAgICByZXQtPmluZGV4MiA9IC0xOwotKyAgICByZXQgPSB4bWxYUHRyTmV3UmFuZ2VJbnRlcm5hbChzdGFydCwgLTEsIGVuZCwgLTEpOwotICAgICB4bWxYUHRyUmFuZ2VDaGVja09yZGVyKHJldCk7Ci0gICAgIHJldHVybihyZXQpOwotIH0KLUBAIC01MTYsMTcgKzUwNiw3IEBAIHhtbFhQdHJOZXdDb2xsYXBzZWRSYW5nZSh4bWxOb2RlUHRyIHN0YXJ0KSB7Ci0gICAgIGlmIChzdGFydCA9PSBOVUxMKQotIAlyZXR1cm4oTlVMTCk7Ci0gCi0tICAgIHJldCA9ICh4bWxYUGF0aE9iamVjdFB0cikgeG1sTWFsbG9jKHNpemVvZih4bWxYUGF0aE9iamVjdCkpOwotLSAgICBpZiAocmV0ID09IE5VTEwpIHsKLS0gICAgICAgIHhtbFhQdHJFcnJNZW1vcnkoImFsbG9jYXRpbmcgcmFuZ2UiKTsKLS0JcmV0dXJuKE5VTEwpOwotLSAgICB9Ci0tICAgIG1lbXNldChyZXQsIDAgLCAoc2l6ZV90KSBzaXplb2YoeG1sWFBhdGhPYmplY3QpKTsKLS0gICAgcmV0LT50eXBlID0gWFBBVEhfUkFOR0U7Ci0tICAgIHJldC0+dXNlciA9IHN0YXJ0OwotLSAgICByZXQtPmluZGV4ID0gLTE7Ci0tICAgIHJldC0+dXNlcjIgPSBOVUxMOwotLSAgICByZXQtPmluZGV4MiA9IC0xOwotKyAgICByZXQgPSB4bWxYUHRyTmV3UmFuZ2VJbnRlcm5hbChzdGFydCwgLTEsIE5VTEwsIC0xKTsKLSAgICAgcmV0dXJuKHJldCk7Ci0gfQotIAotQEAgLTU0MSw2ICs1MjEsOCBAQCB4bWxYUHRyTmV3Q29sbGFwc2VkUmFuZ2UoeG1sTm9kZVB0ciBzdGFydCkgewotICAqLwotIHhtbFhQYXRoT2JqZWN0UHRyCi0geG1sWFB0ck5ld1JhbmdlTm9kZU9iamVjdCh4bWxOb2RlUHRyIHN0YXJ0LCB4bWxYUGF0aE9iamVjdFB0ciBlbmQpIHsKLSsgICAgeG1sTm9kZVB0ciBlbmROb2RlOwotKyAgICBpbnQgZW5kSW5kZXg7Ci0gICAgIHhtbFhQYXRoT2JqZWN0UHRyIHJldDsKLSAKLSAgICAgaWYgKHN0YXJ0ID09IE5VTEwpCi1AQCAtNTQ5LDcgKzUzMSwxMiBAQCB4bWxYUHRyTmV3UmFuZ2VOb2RlT2JqZWN0KHhtbE5vZGVQdHIgc3RhcnQsIHhtbFhQYXRoT2JqZWN0UHRyIGVuZCkgewotIAlyZXR1cm4oTlVMTCk7Ci0gICAgIHN3aXRjaCAoZW5kLT50eXBlKSB7Ci0gCWNhc2UgWFBBVEhfUE9JTlQ6Ci0rCSAgICBlbmROb2RlID0gZW5kLT51c2VyOwotKwkgICAgZW5kSW5kZXggPSBlbmQtPmluZGV4OwotKwkgICAgYnJlYWs7Ci0gCWNhc2UgWFBBVEhfUkFOR0U6Ci0rCSAgICBlbmROb2RlID0gZW5kLT51c2VyMjsKLSsJICAgIGVuZEluZGV4ID0gZW5kLT5pbmRleDI7Ci0gCSAgICBicmVhazsKLSAJY2FzZSBYUEFUSF9OT0RFU0VUOgotIAkgICAgLyoKLUBAIC01NTcsMzkgKzU0NCwxNSBAQCB4bWxYUHRyTmV3UmFuZ2VOb2RlT2JqZWN0KHhtbE5vZGVQdHIgc3RhcnQsIHhtbFhQYXRoT2JqZWN0UHRyIGVuZCkgewotIAkgICAgICovCi0gCSAgICBpZiAoZW5kLT5ub2Rlc2V0dmFsLT5ub2RlTnIgPD0gMCkKLSAJCXJldHVybihOVUxMKTsKLSsJICAgIGVuZE5vZGUgPSBlbmQtPm5vZGVzZXR2YWwtPm5vZGVUYWJbZW5kLT5ub2Rlc2V0dmFsLT5ub2RlTnIgLSAxXTsKLSsJICAgIGVuZEluZGV4ID0gLTE7Ci0gCSAgICBicmVhazsKLSAJZGVmYXVsdDoKLSAJICAgIC8qIFRPRE8gKi8KLSAJICAgIHJldHVybihOVUxMKTsKLSAgICAgfQotIAotLSAgICByZXQgPSAoeG1sWFBhdGhPYmplY3RQdHIpIHhtbE1hbGxvYyhzaXplb2YoeG1sWFBhdGhPYmplY3QpKTsKLS0gICAgaWYgKHJldCA9PSBOVUxMKSB7Ci0tICAgICAgICB4bWxYUHRyRXJyTWVtb3J5KCJhbGxvY2F0aW5nIHJhbmdlIik7Ci0tCXJldHVybihOVUxMKTsKLS0gICAgfQotLSAgICBtZW1zZXQocmV0LCAwICwgKHNpemVfdCkgc2l6ZW9mKHhtbFhQYXRoT2JqZWN0KSk7Ci0tICAgIHJldC0+dHlwZSA9IFhQQVRIX1JBTkdFOwotLSAgICByZXQtPnVzZXIgPSBzdGFydDsKLS0gICAgcmV0LT5pbmRleCA9IC0xOwotLSAgICBzd2l0Y2ggKGVuZC0+dHlwZSkgewotLQljYXNlIFhQQVRIX1BPSU5UOgotLQkgICAgcmV0LT51c2VyMiA9IGVuZC0+dXNlcjsKLS0JICAgIHJldC0+aW5kZXgyID0gZW5kLT5pbmRleDsKLS0JICAgIGJyZWFrOwotLQljYXNlIFhQQVRIX1JBTkdFOgotLQkgICAgcmV0LT51c2VyMiA9IGVuZC0+dXNlcjI7Ci0tCSAgICByZXQtPmluZGV4MiA9IGVuZC0+aW5kZXgyOwotLQkgICAgYnJlYWs7Ci0tCWNhc2UgWFBBVEhfTk9ERVNFVDogewotLQkgICAgcmV0LT51c2VyMiA9IGVuZC0+bm9kZXNldHZhbC0+bm9kZVRhYltlbmQtPm5vZGVzZXR2YWwtPm5vZGVOciAtIDFdOwotLQkgICAgcmV0LT5pbmRleDIgPSAtMTsKLS0JICAgIGJyZWFrOwotLQl9Ci0tCWRlZmF1bHQ6Ci0tCSAgICBTVFJBTkdFCi0tCSAgICByZXR1cm4oTlVMTCk7Ci0tICAgIH0KLSsgICAgcmV0ID0geG1sWFB0ck5ld1JhbmdlSW50ZXJuYWwoc3RhcnQsIC0xLCBlbmROb2RlLCBlbmRJbmRleCk7Ci0gICAgIHhtbFhQdHJSYW5nZUNoZWNrT3JkZXIocmV0KTsKLSAgICAgcmV0dXJuKHJldCk7Ci0gfQotQEAgLTE4MzUsOCArMTc5OCw4IEBAIHhtbFhQdHJTdGFydFBvaW50RnVuY3Rpb24oeG1sWFBhdGhQYXJzZXJDb250ZXh0UHRyIGN0eHQsIGludCBuYXJncykgewotIAkJY2FzZSBYUEFUSF9SQU5HRTogewotIAkJICAgIHhtbE5vZGVQdHIgbm9kZSA9IHRtcC0+dXNlcjsKLSAJCSAgICBpZiAobm9kZSAhPSBOVUxMKSB7Ci0tCQkJaWYgKG5vZGUtPnR5cGUgPT0gWE1MX0FUVFJJQlVURV9OT0RFKSB7Ci0tCQkJICAgIC8qIFRPRE86IE5hbWVzcGFjZSBOb2RlcyA/Pz8gKi8KLSsJCQlpZiAoKG5vZGUtPnR5cGUgPT0gWE1MX0FUVFJJQlVURV9OT0RFKSB8fAotKwkJCSAgICAgKG5vZGUtPnR5cGUgPT0gWE1MX05BTUVTUEFDRV9ERUNMKSkgewotIAkJCSAgICB4bWxYUGF0aEZyZWVPYmplY3Qob2JqKTsKLSAJCQkgICAgeG1sWFB0ckZyZWVMb2NhdGlvblNldChuZXdzZXQpOwotIAkJCSAgICBYUF9FUlJPUihYUFRSX1NZTlRBWF9FUlJPUik7Ci1AQCAtMTkzMSw4ICsxODk0LDggQEAgeG1sWFB0ckVuZFBvaW50RnVuY3Rpb24oeG1sWFBhdGhQYXJzZXJDb250ZXh0UHRyIGN0eHQsIGludCBuYXJncykgewotIAkJY2FzZSBYUEFUSF9SQU5HRTogewotIAkJICAgIHhtbE5vZGVQdHIgbm9kZSA9IHRtcC0+dXNlcjI7Ci0gCQkgICAgaWYgKG5vZGUgIT0gTlVMTCkgewotLQkJCWlmIChub2RlLT50eXBlID09IFhNTF9BVFRSSUJVVEVfTk9ERSkgewotLQkJCSAgICAvKiBUT0RPOiBOYW1lc3BhY2UgTm9kZXMgPz8/ICovCi0rCQkJaWYgKChub2RlLT50eXBlID09IFhNTF9BVFRSSUJVVEVfTk9ERSkgfHwKLSsJCQkgICAgIChub2RlLT50eXBlID09IFhNTF9OQU1FU1BBQ0VfREVDTCkpIHsKLSAJCQkgICAgeG1sWFBhdGhGcmVlT2JqZWN0KG9iaik7Ci0gCQkJICAgIHhtbFhQdHJGcmVlTG9jYXRpb25TZXQobmV3c2V0KTsKLSAJCQkgICAgWFBfRVJST1IoWFBUUl9TWU5UQVhfRVJST1IpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItQ1ZFLTIwMTYtNTEzMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE2LTUxMzEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkNDdkMDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItQ1ZFLTIwMTYtNTEzMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi1Gcm9tIDlhYjAxYTI3N2Q3MWY1NGQzMTQzYzJjZjMzM2M1YzJlOWFhZWRkOWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIFdlbGxuaG9mZXIgPHdlbGxuaG9mZXJAYWV2dW0uZGU+Ci1EYXRlOiBUdWUsIDI4IEp1biAyMDE2IDE0OjIyOjIzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBYUG9pbnRlciBwYXRocyBiZWdpbm5pbmcgd2l0aCByYW5nZS10bwotCi1UaGUgb2xkIGNvZGUgd291bGQgaW52b2tlIHRoZSBicm9rZW4geG1sWFB0clJhbmdlVG9GdW5jdGlvbi4gcmFuZ2UtdG8KLWlzbid0IHJlYWxseSBhIGZ1bmN0aW9uIGJ1dCBhIHNwZWNpYWwga2luZCBvZiBsb2NhdGlvbiBzdGVwLiBSZW1vdmUKLXRoaXMgZnVuY3Rpb24gYW5kIGFsd2F5cyBoYW5kbGUgcmFuZ2UtdG8gaW4gdGhlIFhQYXRoIGNvZGUuCi0KLVRoZSBvbGQgeG1sWFB0clJhbmdlVG9GdW5jdGlvbiBjb3VsZCBhbHNvIGJlIGFidXNlZCB0byB0cmlnZ2VyIGEKLXVzZS1hZnRlci1mcmVlIGVycm9yIHdpdGggdGhlIHBvdGVudGlhbCBmb3IgcmVtb3RlIGNvZGUgZXhlY3V0aW9uLgotCi1Gb3VuZCB3aXRoIGFmbC1mdXp6LgotCi1GaXhlcyBDVkUtMjAxNi01MTMxLgotCi1DVkU6IENWRS0yMDE2LTUxMzEKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLWh0dHBzOi8vZ2l0Lmdub21lLm9yZy9icm93c2UvbGlieG1sMi9jb21taXQvP2lkPTlhYjAxYTI3N2Q3MWY1NGQzMTQzYzJjZjMzM2M1YzJlOWFhZWRkOWUKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kaXJ2ZXIuY29tPgotLS0tCi0gcmVzdWx0L1hQYXRoL3hwdHIvdmlkYmFzZSB8IDEzICsrKysrKysrCi0gdGVzdC9YUGF0aC94cHRyL3ZpZGJhc2UgICB8ICAxICsKLSB4cGF0aC5jICAgICAgICAgICAgICAgICAgIHwgIDcgKysrKy0KLSB4cG9pbnRlci5jICAgICAgICAgICAgICAgIHwgNzYgKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDcxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvcmVzdWx0L1hQYXRoL3hwdHIvdmlkYmFzZSBiL3Jlc3VsdC9YUGF0aC94cHRyL3ZpZGJhc2UKLWluZGV4IDhiOWU5MmQuLmYxOTE5M2UgMTAwNjQ0Ci0tLS0gYS9yZXN1bHQvWFBhdGgveHB0ci92aWRiYXNlCi0rKysgYi9yZXN1bHQvWFBhdGgveHB0ci92aWRiYXNlCi1AQCAtMTcsMyArMTcsMTYgQEAgT2JqZWN0IGlzIGEgTG9jYXRpb24gU2V0OgotICAgVG8gbm9kZQotICAgICBFTEVNRU5UIHAKLSAKLSsKLSs9PT09PT09PT09PT09PT09PT09PT09PT0KLStFeHByZXNzaW9uOiB4cG9pbnRlcihyYW5nZS10byhpZCgnY2hhcHRlcjInKSkpCi0rT2JqZWN0IGlzIGEgTG9jYXRpb24gU2V0OgotKzEgOiAgIE9iamVjdCBpcyBhIHJhbmdlIDoKLSsgIEZyb20gbm9kZQotKyAgICAgLwotKyAgVG8gbm9kZQotKyAgICBFTEVNRU5UIGNoYXB0ZXIKLSsgICAgICBBVFRSSUJVVEUgaWQKLSsgICAgICAgIFRFWFQKLSsgICAgICAgICAgY29udGVudD1jaGFwdGVyMgotKwotZGlmZiAtLWdpdCBhL3Rlc3QvWFBhdGgveHB0ci92aWRiYXNlIGIvdGVzdC9YUGF0aC94cHRyL3ZpZGJhc2UKLWluZGV4IGIxNDYzODMuLjg4NGIxMDYgMTAwNjQ0Ci0tLS0gYS90ZXN0L1hQYXRoL3hwdHIvdmlkYmFzZQotKysrIGIvdGVzdC9YUGF0aC94cHRyL3ZpZGJhc2UKLUBAIC0xLDIgKzEsMyBAQAotIHhwb2ludGVyKGlkKCdjaGFwdGVyMScpL3ApCi0geHBvaW50ZXIoaWQoJ2NoYXB0ZXIxJykvcFsxXS9yYW5nZS10byhmb2xsb3dpbmctc2libGluZzo6cFsyXSkpCi0reHBvaW50ZXIocmFuZ2UtdG8oaWQoJ2NoYXB0ZXIyJykpKQotZGlmZiAtLWdpdCBhL3hwYXRoLmMgYi94cGF0aC5jCi1pbmRleCBkOTkyODQxLi41YTAxYjFiIDEwMDY0NAotLS0tIGEveHBhdGguYwotKysrIGIveHBhdGguYwotQEAgLTEwNjkxLDEzICsxMDY5MSwxOCBAQCB4bWxYUGF0aENvbXBQYXRoRXhwcih4bWxYUGF0aFBhcnNlckNvbnRleHRQdHIgY3R4dCkgewotIAkJICAgIGxjID0gMTsKLSAJCSAgICBicmVhazsKLSAJCX0gZWxzZSBpZiAoKE5YVChsZW4pID09ICcoJykpIHsKLS0JCSAgICAvKiBOb3RlIFR5cGUgb3IgRnVuY3Rpb24gKi8KLSsJCSAgICAvKiBOb2RlIFR5cGUgb3IgRnVuY3Rpb24gKi8KLSAJCSAgICBpZiAoeG1sWFBhdGhJc05vZGVUeXBlKG5hbWUpKSB7Ci0gI2lmZGVmIERFQlVHX1NURVAKLSAJCSAgICAgICAgeG1sR2VuZXJpY0Vycm9yKHhtbEdlbmVyaWNFcnJvckNvbnRleHQsCi0gCQkJCSJQYXRoRXhwcjogVHlwZSBzZWFyY2hcbiIpOwotICNlbmRpZgotIAkJCWxjID0gMTsKLSsjaWZkZWYgTElCWE1MX1hQVFJfRU5BQkxFRAotKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdHh0LT54cHRyICYmCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbFN0ckVxdWFsKG5hbWUsIEJBRF9DQVNUICJyYW5nZS10byIpKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgbGMgPSAxOwotKyNlbmRpZgotIAkJICAgIH0gZWxzZSB7Ci0gI2lmZGVmIERFQlVHX1NURVAKLSAJCSAgICAgICAgeG1sR2VuZXJpY0Vycm9yKHhtbEdlbmVyaWNFcnJvckNvbnRleHQsCi1kaWZmIC0tZ2l0IGEveHBvaW50ZXIuYyBiL3hwb2ludGVyLmMKLWluZGV4IDY3NmM1MTAuLmQ3NDE3NGEgMTAwNjQ0Ci0tLS0gYS94cG9pbnRlci5jCi0rKysgYi94cG9pbnRlci5jCi1AQCAtMTMzMiw4ICsxMzMyLDYgQEAgeG1sWFB0ck5ld0NvbnRleHQoeG1sRG9jUHRyIGRvYywgeG1sTm9kZVB0ciBoZXJlLCB4bWxOb2RlUHRyIG9yaWdpbikgewotICAgICByZXQtPmhlcmUgPSBoZXJlOwotICAgICByZXQtPm9yaWdpbiA9IG9yaWdpbjsKLSAKLS0gICAgeG1sWFBhdGhSZWdpc3RlckZ1bmMocmV0LCAoeG1sQ2hhciAqKSJyYW5nZS10byIsCi0tCSAgICAgICAgICAgICAgICAgeG1sWFB0clJhbmdlVG9GdW5jdGlvbik7Ci0gICAgIHhtbFhQYXRoUmVnaXN0ZXJGdW5jKHJldCwgKHhtbENoYXIgKikicmFuZ2UiLAotIAkgICAgICAgICAgICAgICAgIHhtbFhQdHJSYW5nZUZ1bmN0aW9uKTsKLSAgICAgeG1sWFBhdGhSZWdpc3RlckZ1bmMocmV0LCAoeG1sQ2hhciAqKSJyYW5nZS1pbnNpZGUiLAotQEAgLTIyNDMsNzYgKzIyNDEsMTQgQEAgeG1sWFB0clJhbmdlSW5zaWRlRnVuY3Rpb24oeG1sWFBhdGhQYXJzZXJDb250ZXh0UHRyIGN0eHQsIGludCBuYXJncykgewotICAqIEBuYXJnczogIHRoZSBudW1iZXIgb2YgYXJncwotICAqCi0gICogSW1wbGVtZW50IHRoZSByYW5nZS10bygpIFhQb2ludGVyIGZ1bmN0aW9uCi0rICoKLSsgKiBPYnNvbGV0ZS4gcmFuZ2UtdG8gaXMgbm90IGEgcmVhbCBmdW5jdGlvbiBidXQgYSBzcGVjaWFsIHR5cGUgb2YgbG9jYXRpb24KLSsgKiBzdGVwIHdoaWNoIGlzIGhhbmRsZWQgaW4geHBhdGguYy4KLSAgKi8KLSB2b2lkCi0teG1sWFB0clJhbmdlVG9GdW5jdGlvbih4bWxYUGF0aFBhcnNlckNvbnRleHRQdHIgY3R4dCwgaW50IG5hcmdzKSB7Ci0tICAgIHhtbFhQYXRoT2JqZWN0UHRyIHJhbmdlOwotLSAgICBjb25zdCB4bWxDaGFyICpjdXI7Ci0tICAgIHhtbFhQYXRoT2JqZWN0UHRyIHJlcywgb2JqOwotLSAgICB4bWxYUGF0aE9iamVjdFB0ciB0bXA7Ci0tICAgIHhtbExvY2F0aW9uU2V0UHRyIG5ld3NldCA9IE5VTEw7Ci0tICAgIHhtbE5vZGVTZXRQdHIgb2xkc2V0OwotLSAgICBpbnQgaTsKLS0KLS0gICAgaWYgKGN0eHQgPT0gTlVMTCkgcmV0dXJuOwotLSAgICBDSEVDS19BUklUWSgxKTsKLS0gICAgLyoKLS0gICAgICogU2F2ZSB0aGUgZXhwcmVzc2lvbiBwb2ludGVyIHNpbmNlIHdlIHdpbGwgaGF2ZSB0byBldmFsdWF0ZQotLSAgICAgKiBpdCBtdWx0aXBsZSB0aW1lcy4gSW5pdGlhbGl6ZSB0aGUgbmV3IHNldC4KLS0gICAgICovCi0tICAgIENIRUNLX1RZUEUoWFBBVEhfTk9ERVNFVCk7Ci0tICAgIG9iaiA9IHZhbHVlUG9wKGN0eHQpOwotLSAgICBvbGRzZXQgPSBvYmotPm5vZGVzZXR2YWw7Ci0tICAgIGN0eHQtPmNvbnRleHQtPm5vZGUgPSBOVUxMOwotLQotLSAgICBjdXIgPSBjdHh0LT5jdXI7Ci0tICAgIG5ld3NldCA9IHhtbFhQdHJMb2NhdGlvblNldENyZWF0ZShOVUxMKTsKLS0KLS0gICAgZm9yIChpID0gMDsgaSA8IG9sZHNldC0+bm9kZU5yOyBpKyspIHsKLS0JY3R4dC0+Y3VyID0gY3VyOwotLQotLQkvKgotLQkgKiBSdW4gdGhlIGV2YWx1YXRpb24gd2l0aCBhIG5vZGUgbGlzdCBtYWRlIG9mIGEgc2luZ2xlIGl0ZW0KLS0JICogaW4gdGhlIG5vZGVzZXQuCi0tCSAqLwotLQljdHh0LT5jb250ZXh0LT5ub2RlID0gb2xkc2V0LT5ub2RlVGFiW2ldOwotLQl0bXAgPSB4bWxYUGF0aE5ld05vZGVTZXQoY3R4dC0+Y29udGV4dC0+bm9kZSk7Ci0tCXZhbHVlUHVzaChjdHh0LCB0bXApOwotLQotLQl4bWxYUGF0aEV2YWxFeHByKGN0eHQpOwotLQlDSEVDS19FUlJPUjsKLS0KLS0JLyoKLS0JICogVGhlIHJlc3VsdCBvZiB0aGUgZXZhbHVhdGlvbiBuZWVkIHRvIGJlIHRlc3RlZCB0bwotLQkgKiBkZWNpZGVkIHdoZXRoZXIgdGhlIGZpbHRlciBzdWNjZWVkZWQgb3Igbm90Ci0tCSAqLwotLQlyZXMgPSB2YWx1ZVBvcChjdHh0KTsKLS0JcmFuZ2UgPSB4bWxYUHRyTmV3UmFuZ2VOb2RlT2JqZWN0KG9sZHNldC0+bm9kZVRhYltpXSwgcmVzKTsKLS0JaWYgKHJhbmdlICE9IE5VTEwpIHsKLS0JICAgIHhtbFhQdHJMb2NhdGlvblNldEFkZChuZXdzZXQsIHJhbmdlKTsKLS0JfQotLQotLQkvKgotLQkgKiBDbGVhbnVwCi0tCSAqLwotLQlpZiAocmVzICE9IE5VTEwpCi0tCSAgICB4bWxYUGF0aEZyZWVPYmplY3QocmVzKTsKLS0JaWYgKGN0eHQtPnZhbHVlID09IHRtcCkgewotLQkgICAgcmVzID0gdmFsdWVQb3AoY3R4dCk7Ci0tCSAgICB4bWxYUGF0aEZyZWVPYmplY3QocmVzKTsKLS0JfQotLQotLQljdHh0LT5jb250ZXh0LT5ub2RlID0gTlVMTDsKLS0gICAgfQotLQotLSAgICAvKgotLSAgICAgKiBUaGUgcmVzdWx0IGlzIHVzZWQgYXMgdGhlIG5ldyBldmFsdWF0aW9uIHNldC4KLS0gICAgICovCi0tICAgIHhtbFhQYXRoRnJlZU9iamVjdChvYmopOwotLSAgICBjdHh0LT5jb250ZXh0LT5ub2RlID0gTlVMTDsKLS0gICAgY3R4dC0+Y29udGV4dC0+Y29udGV4dFNpemUgPSAtMTsKLS0gICAgY3R4dC0+Y29udGV4dC0+cHJveGltaXR5UG9zaXRpb24gPSAtMTsKLS0gICAgdmFsdWVQdXNoKGN0eHQsIHhtbFhQdHJXcmFwTG9jYXRpb25TZXQobmV3c2V0KSk7Ci0reG1sWFB0clJhbmdlVG9GdW5jdGlvbih4bWxYUGF0aFBhcnNlckNvbnRleHRQdHIgY3R4dCwKLSsgICAgICAgICAgICAgICAgICAgICAgIGludCBuYXJncyBBVFRSSUJVVEVfVU5VU0VEKSB7Ci0rICAgIFhQX0VSUk9SKFhQQVRIX0VYUFJfRVJST1IpOwotIH0KLSAKLSAvKioKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItQ1ZFLTIwMTctMDY2My5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE3LTA2NjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxMDgyNjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItQ1ZFLTIwMTctMDY2My5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLWxpYnhtbDI6IEZpeCBDVkUtMjAxNy0wNjYzCi0KLVtObyB1cHN0cmVhbSB0cmFja2luZ10gLS0gaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc4MDIyOAotCi12YWxpZDogRml4IHR5cGUgY29uZnVzaW9uIGluIHhtbFZhbGlkYXRlT25lTmFtZXNwYWNlCi0KLUNvbW1lbnQgb3V0IGNvZGUgdGhhdCBjYXN0cyB4bWxOc1B0ciB0byB4bWxBdHRyUHRyLiBJRCB0eXBlcwotb24gbmFtZXNwYWNlIGRlY2xhcmF0aW9ucyBtYWtlIG5vIHByYWN0aWNhbCBzZW5zZSBhbnl3YXkuCi0KLUZpeGVzIGJ1ZyA3ODAyMjgKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9saWJ4bWwyL2NvbW1pdC8/aWQ9OTJiOWU4YzhiMzc4NzA2ODU2NWExODIwYmE1NzVkMDQyZjllZWM2Nl0KLUNWRTogQ1ZFLTIwMTctMDY2MwotU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+Ci0KLWRpZmYgLS1naXQgYS92YWxpZC5jIGIvdmFsaWQuYwotaW5kZXggMTlmODRiOC4uZTAzZDM1ZSAxMDA2NDQKLS0tLSBhL3ZhbGlkLmMKLSsrKyBiL3ZhbGlkLmMKLUBAIC00NjIxLDYgKzQ2MjEsMTIgQEAgeG1sTm9kZVB0ciBlbGVtLCBjb25zdCB4bWxDaGFyICpwcmVmaXgsIHhtbE5zUHRyIG5zLCBjb25zdCB4bWxDaGFyICp2YWx1ZSkgewotIAl9Ci0gICAgIH0KLSAKLSsgICAgLyoKLSsgICAgICogQ2FzdGluZyBucyB0byB4bWxBdHRyUHRyIGlzIHdyb25nLiBXZSdkIG5lZWQgc2VwYXJhdGUgZnVuY3Rpb25zCi0rICAgICAqIHhtbEFkZElEIGFuZCB4bWxBZGRSZWYgZm9yIG5hbWVzcGFjZSBkZWNsYXJhdGlvbnMsIGJ1dCBpdCBtYWtlcwotKyAgICAgKiBubyBwcmFjdGljYWwgc2Vuc2UgdG8gdXNlIElEIHR5cGVzIGFueXdheS4KLSsgICAgICovCi0rI2lmIDAKLSAgICAgLyogVmFsaWRpdHkgQ29uc3RyYWludDogSUQgdW5pcXVlbmVzcyAqLwotICAgICBpZiAoYXR0ckRlY2wtPmF0eXBlID09IFhNTF9BVFRSSUJVVEVfSUQpIHsKLSAgICAgICAgIGlmICh4bWxBZGRJRChjdHh0LCBkb2MsIHZhbHVlLCAoeG1sQXR0clB0cikgbnMpID09IE5VTEwpCi1AQCAtNDYzMiw2ICs0NjM4LDcgQEAgeG1sTm9kZVB0ciBlbGVtLCBjb25zdCB4bWxDaGFyICpwcmVmaXgsIHhtbE5zUHRyIG5zLCBjb25zdCB4bWxDaGFyICp2YWx1ZSkgewotICAgICAgICAgaWYgKHhtbEFkZFJlZihjdHh0LCBkb2MsIHZhbHVlLCAoeG1sQXR0clB0cikgbnMpID09IE5VTEwpCi0gCSAgICByZXQgPSAwOwotICAgICB9Ci0rI2VuZGlmCi0gCi0gICAgIC8qIFZhbGlkaXR5IENvbnN0cmFpbnQ6IE5vdGF0aW9uIEF0dHJpYnV0ZXMgKi8KLSAgICAgaWYgKGF0dHJEZWNsLT5hdHlwZSA9PSBYTUxfQVRUUklCVVRFX05PVEFUSU9OKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1DVkUtMjAxNy01OTY5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItQ1ZFLTIwMTctNTk2OS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTcxYjA1Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1DVkUtMjAxNy01OTY5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotbGlieG1sMi0yLjkuNDogRml4IENWRS0yMDE3LTU5NjkKLQotW05vIHVwc3RyZWFtIHRyYWNraW5nXSAtLSBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4NDIyCi0KLXZhbGlkOiBGaXggTlVMTCBwb2ludGVyIGRlcmVmIGluIHhtbER1bXBFbGVtZW50Q29udGVudAotCi1DYW4gb25seSBiZSB0cmlnZ2VyZWQgaW4gcmVjb3ZlcnkgbW9kZS4KLQotRml4ZXMgYnVnIDc1ODQyMgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IC0gW2h0dHBzOi8vZ2l0Lmdub21lLm9yZy9icm93c2UvbGlieG1sMi9jb21taXQvP2lkPTk0NjkxZGM4ODRkMWE4YWRhMzlmMDczNDA4YjRiYjkyZmU3ZmU4ODJdCi1DVkU6IENWRS0yMDE3LTU5NjkKLVNpZ25lZC1vZmYtYnk6IEFuZHJlaiBWYWxlayA8YW5kcmVqLnZhbGVrQHNpZW1lbnMuY29tPgotCi1kaWZmIC0tZ2l0IGEvdmFsaWQuYyBiL3ZhbGlkLmMKLWluZGV4IDE5Zjg0YjguLjBhOGU1OGEgMTAwNjQ0Ci0tLS0gYS92YWxpZC5jCi0rKysgYi92YWxpZC5jCi1AQCAtMTE3MiwyOSArMTE3MiwzMyBAQCB4bWxEdW1wRWxlbWVudENvbnRlbnQoeG1sQnVmZmVyUHRyIGJ1ZiwgeG1sRWxlbWVudENvbnRlbnRQdHIgY29udGVudCwgaW50IGdsb2IpCi0gCSAgICB4bWxCdWZmZXJXcml0ZUNIQVIoYnVmLCBjb250ZW50LT5uYW1lKTsKLSAJICAgIGJyZWFrOwotIAljYXNlIFhNTF9FTEVNRU5UX0NPTlRFTlRfU0VROgotLQkgICAgaWYgKChjb250ZW50LT5jMS0+dHlwZSA9PSBYTUxfRUxFTUVOVF9DT05URU5UX09SKSB8fAotLQkgICAgICAgIChjb250ZW50LT5jMS0+dHlwZSA9PSBYTUxfRUxFTUVOVF9DT05URU5UX1NFUSkpCi0rCSAgICBpZiAoKGNvbnRlbnQtPmMxICE9IE5VTEwpICYmCi0rCSAgICAgICAgKChjb250ZW50LT5jMS0+dHlwZSA9PSBYTUxfRUxFTUVOVF9DT05URU5UX09SKSB8fAotKwkgICAgICAgICAoY29udGVudC0+YzEtPnR5cGUgPT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9TRVEpKSkKLSAJCXhtbER1bXBFbGVtZW50Q29udGVudChidWYsIGNvbnRlbnQtPmMxLCAxKTsKLSAJICAgIGVsc2UKLSAJCXhtbER1bXBFbGVtZW50Q29udGVudChidWYsIGNvbnRlbnQtPmMxLCAwKTsKLSAgICAgICAgICAgICB4bWxCdWZmZXJXcml0ZUNoYXIoYnVmLCAiICwgIik7Ci0tCSAgICBpZiAoKGNvbnRlbnQtPmMyLT50eXBlID09IFhNTF9FTEVNRU5UX0NPTlRFTlRfT1IpIHx8Ci0tCSAgICAgICAgKChjb250ZW50LT5jMi0+dHlwZSA9PSBYTUxfRUxFTUVOVF9DT05URU5UX1NFUSkgJiYKLS0JCSAoY29udGVudC0+YzItPm9jdXIgIT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9PTkNFKSkpCi0rCSAgICBpZiAoKGNvbnRlbnQtPmMyICE9IE5VTEwpICYmCi0rCSAgICAgICAgKChjb250ZW50LT5jMi0+dHlwZSA9PSBYTUxfRUxFTUVOVF9DT05URU5UX09SKSB8fAotKwkgICAgICAgICAoKGNvbnRlbnQtPmMyLT50eXBlID09IFhNTF9FTEVNRU5UX0NPTlRFTlRfU0VRKSAmJgotKwkJICAoY29udGVudC0+YzItPm9jdXIgIT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9PTkNFKSkpKQotIAkJeG1sRHVtcEVsZW1lbnRDb250ZW50KGJ1ZiwgY29udGVudC0+YzIsIDEpOwotIAkgICAgZWxzZQotIAkJeG1sRHVtcEVsZW1lbnRDb250ZW50KGJ1ZiwgY29udGVudC0+YzIsIDApOwotIAkgICAgYnJlYWs7Ci0gCWNhc2UgWE1MX0VMRU1FTlRfQ09OVEVOVF9PUjoKLS0JICAgIGlmICgoY29udGVudC0+YzEtPnR5cGUgPT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9PUikgfHwKLS0JICAgICAgICAoY29udGVudC0+YzEtPnR5cGUgPT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9TRVEpKQotKwkgICAgaWYgKChjb250ZW50LT5jMSAhPSBOVUxMKSAmJgotKwkgICAgICAgICgoY29udGVudC0+YzEtPnR5cGUgPT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9PUikgfHwKLSsJICAgICAgICAgKGNvbnRlbnQtPmMxLT50eXBlID09IFhNTF9FTEVNRU5UX0NPTlRFTlRfU0VRKSkpCi0gCQl4bWxEdW1wRWxlbWVudENvbnRlbnQoYnVmLCBjb250ZW50LT5jMSwgMSk7Ci0gCSAgICBlbHNlCi0gCQl4bWxEdW1wRWxlbWVudENvbnRlbnQoYnVmLCBjb250ZW50LT5jMSwgMCk7Ci0gICAgICAgICAgICAgeG1sQnVmZmVyV3JpdGVDaGFyKGJ1ZiwgIiB8ICIpOwotLQkgICAgaWYgKChjb250ZW50LT5jMi0+dHlwZSA9PSBYTUxfRUxFTUVOVF9DT05URU5UX1NFUSkgfHwKLS0JICAgICAgICAoKGNvbnRlbnQtPmMyLT50eXBlID09IFhNTF9FTEVNRU5UX0NPTlRFTlRfT1IpICYmCi0tCQkgKGNvbnRlbnQtPmMyLT5vY3VyICE9IFhNTF9FTEVNRU5UX0NPTlRFTlRfT05DRSkpKQotKwkgICAgaWYgKChjb250ZW50LT5jMiAhPSBOVUxMKSAmJgotKwkgICAgICAgICgoY29udGVudC0+YzItPnR5cGUgPT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9TRVEpIHx8Ci0rCSAgICAgICAgICgoY29udGVudC0+YzItPnR5cGUgPT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9PUikgJiYKLSsJCSAgKGNvbnRlbnQtPmMyLT5vY3VyICE9IFhNTF9FTEVNRU5UX0NPTlRFTlRfT05DRSkpKSkKLSAJCXhtbER1bXBFbGVtZW50Q29udGVudChidWYsIGNvbnRlbnQtPmMyLCAxKTsKLSAJICAgIGVsc2UKLSAJCXhtbER1bXBFbGVtZW50Q29udGVudChidWYsIGNvbnRlbnQtPmMyLCAwKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE3LTg4NzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1DVkUtMjAxNy04ODcyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjc3OWFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE3LTg4NzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIGQyZjg3M2E1NDFjNzJiMGY2N2UxNTU2MjgxOWJmOThiODg0YjMwYjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDIzIEF1ZyAyMDE3IDE2OjA0OjQ5ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCBDVkUtMjAxNy04ODcyCi0KLXRoaXMgbWFrZXMgeG1sSGFsdFBhcnNlciAiZW1wdHkiIHRoZSBidWZmZXIsIGFzIGl0IHJlc2V0cyBjdXIgYW5kIGF2YQotaWwgdG9vIGhlcmUuCi0KLXRoaXMgc2VlbXMgdG8gY3VyZSB0aGlzIHNwZWNpZmljIGlzc3VlLCBhbmQgYWxzbyBwYXNzZXMgdGhlIHRlc3RzdWl0ZQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+Ci0KLWh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUyMDAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2F0dGFjaG1lbnQuY2dpP2lkPTM1NTUyNyZhY3Rpb249ZGlmZl0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIHBhcnNlci5jIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvcGFyc2VyLmMgYi9wYXJzZXIuYwotaW5kZXggOTUwNmVhZC4uNmMwN2ZmZCAxMDA2NDQKLS0tLSBhL3BhcnNlci5jCi0rKysgYi9wYXJzZXIuYwotQEAgLTEyNjY0LDYgKzEyNjY0LDEwIEBAIHhtbEhhbHRQYXJzZXIoeG1sUGFyc2VyQ3R4dFB0ciBjdHh0KSB7Ci0gCX0KLSAJY3R4dC0+aW5wdXQtPmN1ciA9IEJBRF9DQVNUIiI7Ci0gCWN0eHQtPmlucHV0LT5iYXNlID0gY3R4dC0+aW5wdXQtPmN1cjsKLSsJaWYgKGN0eHQtPmlucHV0LT5idWYpIHsKLSsJCXhtbEJ1ZkVtcHR5IChjdHh0LT5pbnB1dC0+YnVmLT5idWZmZXIpOwotKwl9IGVsc2UKLSsJCWN0eHQtPmlucHV0LT5sZW5ndGggPSAwOwotICAgICB9Ci0gfQotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1DVkUtMjAxNy05MDQ3X0NWRS0yMDE3LTkwNDgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1DVkUtMjAxNy05MDQ3X0NWRS0yMDE3LTkwNDgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiMDM0NTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItQ1ZFLTIwMTctOTA0N19DVkUtMjAxNy05MDQ4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLWxpYnhtbDItMi45LjQ6IEZpeCBDVkUtMjAxNy05MDQ3IGFuZCBDVkUtMjAxNy05MDQ4Ci0KLVtObyB1cHN0cmVhbSB0cmFja2luZ10gLS0gaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc4MTMzMwotIC0tIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03ODE3MDEKLQotdmFsaWQ6IEZpeCBidWZmZXIgc2l6ZSBjaGVja3MgaW4geG1sU25wcmludGZFbGVtZW50Q29udGVudAotCi14bWxTbnByaW50ZkVsZW1lbnRDb250ZW50IGZhaWxlZCB0byBjb3JyZWN0bHkgY2hlY2sgdGhlIGF2YWlsYWJsZQotYnVmZmVyIHNwYWNlIGluIHR3byBsb2NhdGlvbnMuCi0KLUZpeGVzIGJ1ZyA3ODEzMzMgYW5kIGJ1ZyA3ODE3MDEKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9saWJ4bWwyL2NvbW1pdC8/aWQ9OTMyY2M5ODk2YWI0MTQ3NWQ0YWE0MjljMjdkOWFmZDE3NTk1OWQ3NF0KLUNWRTogQ1ZFLTIwMTctOTA0NyBDVkUtMjAxNy05MDQ4Ci1TaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KLQotZGlmZiAtLWdpdCBhL3Jlc3VsdC92YWxpZC83ODEzMzMueG1sIGIvcmVzdWx0L3ZhbGlkLzc4MTMzMy54bWwKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4wMWJhZjExCi0tLS0gL2Rldi9udWxsCi0rKysgYi9yZXN1bHQvdmFsaWQvNzgxMzMzLnhtbAotQEAgLTAsMCArMSw1IEBACi0rPD94bWwgdmVyc2lvbj0iMS4wIj8+Ci0rPCFET0NUWVBFIGEgWwotKzwhRUxFTUVOVCBhIChwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwOmxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsKT4KLStdPgotKzxhLz4KLWRpZmYgLS1naXQgYS9yZXN1bHQvdmFsaWQvNzgxMzMzLnhtbC5lcnIgYi9yZXN1bHQvdmFsaWQvNzgxMzMzLnhtbC5lcnIKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yMTc2MjAwCi0tLS0gL2Rldi9udWxsCi0rKysgYi9yZXN1bHQvdmFsaWQvNzgxMzMzLnhtbC5lcnIKLUBAIC0wLDAgKzEsMyBAQAotKy4vdGVzdC92YWxpZC83ODEzMzMueG1sOjQ6IGVsZW1lbnQgYTogdmFsaWRpdHkgZXJyb3IgOiBFbGVtZW50IGEgY29udGVudCBkb2VzIG5vdCBmb2xsb3cgdGhlIERURCwgZXhwZWN0aW5nICggLi4uLCBnb3QgCi0rPGEvPgotKyAgICBeCi1kaWZmIC0tZ2l0IGEvcmVzdWx0L3ZhbGlkLzc4MTMzMy54bWwuZXJyLnJkciBiL3Jlc3VsdC92YWxpZC83ODEzMzMueG1sLmVyci5yZHIKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xMTk1YTA0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9yZXN1bHQvdmFsaWQvNzgxMzMzLnhtbC5lcnIucmRyCi1AQCAtMCwwICsxLDYgQEAKLSsuL3Rlc3QvdmFsaWQvNzgxMzMzLnhtbDo0OiBlbGVtZW50IGE6IHZhbGlkaXR5IGVycm9yIDogRWxlbWVudCBhIGNvbnRlbnQgZG9lcyBub3QgZm9sbG93IHRoZSBEVEQsIGV4cGVjdGluZyAoIC4uLiwgZ290IAotKzxhLz4KLSsgICAgXgotKy4vdGVzdC92YWxpZC83ODEzMzMueG1sOjU6IGVsZW1lbnQgYTogdmFsaWRpdHkgZXJyb3IgOiBFbGVtZW50IGEgY29udGVudCBkb2VzIG5vdCBmb2xsb3cgdGhlIERURCwgRXhwZWN0aW5nIG1vcmUgY2hpbGQKLSsKLSteCi1kaWZmIC0tZ2l0IGEvdGVzdC92YWxpZC83ODEzMzMueG1sIGIvdGVzdC92YWxpZC83ODEzMzMueG1sCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYmNlYWM5YwotLS0tIC9kZXYvbnVsbAotKysrIGIvdGVzdC92YWxpZC83ODEzMzMueG1sCi1AQCAtMCwwICsxLDQgQEAKLSs8IURPQ1RZUEUgYSBbCi0rICAgIDwhRUxFTUVOVCBhIChwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwOmxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsKT4KLStdPgotKzxhLz4KLWRpZmYgLS1naXQgYS92YWxpZC5jIGIvdmFsaWQuYwotaW5kZXggMTlmODRiOC4uYWFhMzBmNiAxMDA2NDQKLS0tLSBhL3ZhbGlkLmMKLSsrKyBiL3ZhbGlkLmMKLUBAIC0xMjYyLDIyICsxMjYyLDIzIEBAIHhtbFNucHJpbnRmRWxlbWVudENvbnRlbnQoY2hhciAqYnVmLCBpbnQgc2l6ZSwgeG1sRWxlbWVudENvbnRlbnRQdHIgY29udGVudCwgaW50Ci0gICAgICAgICBjYXNlIFhNTF9FTEVNRU5UX0NPTlRFTlRfUENEQVRBOgotICAgICAgICAgICAgIHN0cmNhdChidWYsICIjUENEQVRBIik7Ci0gCSAgICBicmVhazsKLS0JY2FzZSBYTUxfRUxFTUVOVF9DT05URU5UX0VMRU1FTlQ6Ci0rCWNhc2UgWE1MX0VMRU1FTlRfQ09OVEVOVF9FTEVNRU5UOiB7Ci0rICAgICAgICAgICAgaW50IHFuYW1lTGVuID0geG1sU3RybGVuKGNvbnRlbnQtPm5hbWUpOwotKwotKwkgICAgaWYgKGNvbnRlbnQtPnByZWZpeCAhPSBOVUxMKQotKyAgICAgICAgICAgICAgICBxbmFtZUxlbiArPSB4bWxTdHJsZW4oY29udGVudC0+cHJlZml4KSArIDE7Ci0rCSAgICBpZiAoc2l6ZSAtIGxlbiA8IHFuYW1lTGVuICsgMTApIHsKLSsJCXN0cmNhdChidWYsICIgLi4uIik7Ci0rCQlyZXR1cm47Ci0rCSAgICB9Ci0gCSAgICBpZiAoY29udGVudC0+cHJlZml4ICE9IE5VTEwpIHsKLS0JCWlmIChzaXplIC0gbGVuIDwgeG1sU3RybGVuKGNvbnRlbnQtPnByZWZpeCkgKyAxMCkgewotLQkJICAgIHN0cmNhdChidWYsICIgLi4uIik7Ci0tCQkgICAgcmV0dXJuOwotLQkJfQotIAkJc3RyY2F0KGJ1ZiwgKGNoYXIgKikgY29udGVudC0+cHJlZml4KTsKLSAJCXN0cmNhdChidWYsICI6Iik7Ci0gCSAgICB9Ci0tCSAgICBpZiAoc2l6ZSAtIGxlbiA8IHhtbFN0cmxlbihjb250ZW50LT5uYW1lKSArIDEwKSB7Ci0tCQlzdHJjYXQoYnVmLCAiIC4uLiIpOwotLQkJcmV0dXJuOwotLQkgICAgfQotIAkgICAgaWYgKGNvbnRlbnQtPm5hbWUgIT0gTlVMTCkKLSAJCXN0cmNhdChidWYsIChjaGFyICopIGNvbnRlbnQtPm5hbWUpOwotIAkgICAgYnJlYWs7Ci0rCX0KLSAJY2FzZSBYTUxfRUxFTUVOVF9DT05URU5UX1NFUToKLSAJICAgIGlmICgoY29udGVudC0+YzEtPnR5cGUgPT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9PUikgfHwKLSAJICAgICAgICAoY29udGVudC0+YzEtPnR5cGUgPT0gWE1MX0VMRU1FTlRfQ09OVEVOVF9TRVEpKQotQEAgLTEzMTksNiArMTMyMCw3IEBAIHhtbFNucHJpbnRmRWxlbWVudENvbnRlbnQoY2hhciAqYnVmLCBpbnQgc2l6ZSwgeG1sRWxlbWVudENvbnRlbnRQdHIgY29udGVudCwgaW50Ci0gCQl4bWxTbnByaW50ZkVsZW1lbnRDb250ZW50KGJ1Ziwgc2l6ZSwgY29udGVudC0+YzIsIDApOwotIAkgICAgYnJlYWs7Ci0gICAgIH0KLSsgICAgaWYgKHNpemUgLSBzdHJsZW4oYnVmKSA8PSAyKSByZXR1cm47Ci0gICAgIGlmIChlbmdsb2IpCi0gICAgICAgICBzdHJjYXQoYnVmLCAiKSIpOwotICAgICBzd2l0Y2ggKGNvbnRlbnQtPm9jdXIpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE3LTkwNDlfQ1ZFLTIwMTctOTA1MC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE3LTkwNDlfQ1ZFLTIwMTctOTA1MC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTkxMDc1ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1DVkUtMjAxNy05MDQ5X0NWRS0yMDE3LTkwNTAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOTEgKzAsMCBAQAotbGlieG1sMi0yLjkuNDogRml4IENWRS0yMDE3LTkwNDkgYW5kIENWRS0yMDE3LTkwNTAKLQotW05vIHVwc3RyZWFtIHRyYWNraW5nXSAtLSBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgxMjA1Ci0gLS0gaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc4MTM2MQotCi1wYXJzZXI6IEZpeCBoYW5kbGluZyBvZiBwYXJhbWV0ZXItZW50aXR5IHJlZmVyZW5jZXMKLQotVGhlcmUgd2VyZSB0d28gYnVncyB3aGVyZSBwYXJhbWV0ZXItZW50aXR5IHJlZmVyZW5jZXMgY291bGQgbGVhZCB0byBhbgotdW5leHBlY3RlZCBjaGFuZ2Ugb2YgdGhlIGlucHV0IGJ1ZmZlciBpbiB4bWxQYXJzZU5hbWVDb21wbGV4IGFuZAoteG1sRGljdExvb2t1cCBiZWluZyBjYWxsZWQgd2l0aCBhbiBpbnZhbGlkIHBvaW50ZXIuCi0KLVBlcmNlbnQgc2lnbiBpbiBEVEQgTmFtZXMKLT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotVGhlIE5FWFRMIG1hY3JvIHVzZWQgdG8gY2FsbCB4bWxQYXJzZXJIYW5kbGVQRVJlZmVyZW5jZS4gV2hlbiBwYXJzaW5nCi0iY29tcGxleCIgbmFtZXMgaW5zaWRlIHRoZSBEVEQsIHRoaXMgY291bGQgcmVzdWx0IGluIGVudGl0eSBleHBhbnNpb24KLXdoaWNoIGNyZWF0ZWQgYSBuZXcgaW5wdXQgYnVmZmVyLiBUaGUgZml4IGlzIHRvIHNpbXBseSByZW1vdmUgdGhlIGNhbGwKLXRvIHhtbFBhcnNlckhhbmRsZVBFUmVmZXJlbmNlIGZyb20gdGhlIE5FWFRMIG1hY3JvLiBUaGlzIGlzIHNhZmUgYmVjYXVzZQotbm8gdXNlcnMgb2YgdGhlIG1hY3JvIHJlcXVpcmUgZXhwYW5zaW9uIG9mIHBhcmFtZXRlciBlbnRpdGllcy4KLQotLSB4bWxQYXJzZU5hbWVDb21wbGV4Ci0tIHhtbFBhcnNlTkNOYW1lQ29tcGxleAotLSB4bWxQYXJzZU5tdG9rZW4KLQotVGhlIHBlcmNlbnQgc2lnbiBpcyBub3QgYWxsb3dlZCBpbiBuYW1lcywgd2hpY2ggYXJlIGdyYW1tYXRpY2FsIHRva2Vucy4KLQotLSB4bWxQYXJzZUVudGl0eVZhbHVlCi0KLVBhcmFtZXRlci1lbnRpdHkgcmVmZXJlbmNlcyBpbiBlbnRpdHkgdmFsdWVzIGFyZSBleHBhbmRlZCBidXQgdGhpcwotaGFwcGVucyBpbiBhIHNlcGFyYXRlIHN0ZXAgaW4gdGhpcyBmdW5jdGlvbi4KLQotLSB4bWxQYXJzZVN5c3RlbUxpdGVyYWwKLQotUGFyYW1ldGVyLWVudGl0eSByZWZlcmVuY2VzIGFyZSBpZ25vcmVkIGluIHRoZSBzeXN0ZW0gbGl0ZXJhbC4KLQotLSB4bWxQYXJzZUF0dFZhbHVlQ29tcGxleAotLSB4bWxQYXJzZUNoYXJEYXRhQ29tcGxleAotLSB4bWxQYXJzZUNvbW1lbnRDb21wbGV4Ci0tIHhtbFBhcnNlUEkKLS0geG1sUGFyc2VDRFNlY3QKLQotUGFyYW1ldGVyLWVudGl0eSByZWZlcmVuY2VzIGFyZSBpZ25vcmVkIG91dHNpZGUgdGhlIERURC4KLQotLSB4bWxMb2FkRW50aXR5Q29udGVudAotCi1UaGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGZyb20geG1sU3RyaW5nTGVuRGVjb2RlRW50aXRpZXMgYW5kCi1lbnRpdGllcyBhcmUgcmVwbGFjZWQgaW4gYSBzZXBhcmF0ZSBzdGVwIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBmdW5jdGlvbgotY2FsbC4KLQotVGhpcyBidWcgY291bGQgYWxzbyBiZSB0cmlnZ2VyZWQgd2l0aCBhbiBpbnRlcm5hbCBzdWJzZXQgYW5kIGRvdWJsZQotZW50aXR5IGV4cGFuc2lvbi4KLQotVGhpcyBmaXhlcyBidWcgNzY2OTU2IGluaXRpYWxseSByZXBvcnRlZCBieSBXZWkgTGVpIGFuZCBpbmRlcGVuZGVudGx5IGJ5Ci1DaHJvbWl1bSdzIENsdXN0ZXJGdXp6LCBIYW5ubyBCw7ZjaywgYW5kIE1hcmNvIEdyYXNzaS4gVGhhbmtzIHRvIGV2ZXJ5b25lCi1pbnZvbHZlZC4KLQoteG1sUGFyc2VOYW1lQ29tcGxleCB3aXRoIFhNTF9QQVJTRV9PTEQxMAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1XaGVuIHBhcnNpbmcgTmFtZXMgaW5zaWRlIGFuIGV4cGFuZGVkIHBhcmFtZXRlciBlbnRpdHkgd2l0aCB0aGUKLVhNTF9QQVJTRV9PTEQxMCBvcHRpb24sIHhtbFBhcnNlTmFtZUNvbXBsZXggd291bGQgY2FsbCB4bWxHUk9XIHZpYSB0aGUKLUdST1cgbWFjcm8gaWYgdGhlIGlucHV0IGJ1ZmZlciB3YXMgZXhoYXVzdGVkLiBBdCB0aGUgZW5kIG9mIHRoZQotcGFyYW1ldGVyIGVudGl0eSdzIHJlcGxhY2VtZW50IHRleHQsIHRoaXMgZnVuY3Rpb24gd291bGQgdGhlbiBjYWxsCi14bWxQb3BJbnB1dCB3aGljaCBpbnZhbGlkYXRlZCB0aGUgaW5wdXQgYnVmZmVyLgotCi1UaGVyZSBzaG91bGQgYmUgbm8gbmVlZCB0byBpbnZva2UgR1JPVyBpbiB0aGlzIHNpdHVhdGlvbiBiZWNhdXNlIHRoZQotYnVmZmVyIGlzIGdyb3duIHBlcmlvZGljYWxseSBldmVyeSBYTUxfUEFSU0VSX0NIVU5LX1NJWkUgY2hhcmFjdGVycyBhbmQsCi1hdCBsZWFzdCBmb3IgVVRGLTgsIGluIHhtbEN1cnJlbnRDaGFyLiBUaGlzIGFsc28gbWF0Y2hlcyB0aGUgY29kZSBwYXRoCi1leGVjdXRlZCB3aGVuIFhNTF9QQVJTRV9PTEQxMCBpcyBub3Qgc2V0LgotCi1UaGlzIGZpeGVzIGJ1Z3MgNzgxMjA1IChDVkUtMjAxNy05MDQ5KSBhbmQgNzgxMzYxIChDVkUtMjAxNy05MDUwKS4KLVRoYW5rcyB0byBNYXJjZWwgQsO2aG1lIGFuZCBUaHVhbiBQaGFtIGZvciB0aGUgcmVwb3J0LgotCi1BZGRpdGlvbmFsIGhhcmRlbmluZwotPT09PT09PT09PT09PT09PT09PT0KLQotQSBzZXBhcmF0ZSBjaGVjayB3YXMgYWRkZWQgaW4geG1sUGFyc2VOYW1lQ29tcGxleCB0byB2YWxpZGF0ZSB0aGUKLWJ1ZmZlciBzaXplLgotCi1GaXhlcyBidWcgNzgxMjA1IGFuZCBidWcgNzgxMzYxCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0Lmdub21lLm9yZy9icm93c2UvbGlieG1sMi9jb21taXQvP2lkPTkzMmNjOTg5NmFiNDE0NzVkNGFhNDI5YzI3ZDlhZmQxNzU5NTlkNzRdCi1DVkU6IENWRS0yMDE3LTkwNDkgQ1ZFLTIwMTctOTA1MAotU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+Ci0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCA5Zjk4OGIwLi5kYWIxNWE0IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtNDIyLDYgKzQyMiwyNCBAQCBFcnJ0ZXN0cyA6IHhtbGxpbnQkKEVYRUVYVCkKLSAJICAgICAgaWYgWyAtbiAiJCRsb2ciIF0gOyB0aGVuIGVjaG8gJCRuYW1lIHJlc3VsdCA7IGVjaG8gJCRsb2cgOyBmaSA7IFwKLSAJICAgICAgcm0gcmVzdWx0LiQkbmFtZSBlcnJvci4kJG5hbWUgOyBcCi0gCSAgZmkgOyBmaSA7IGRvbmUpCi0rCUBlY2hvICIjIyBFcnJvciBjYXNlcyByZWdyZXNzaW9uIHRlc3RzIChvbGQgMS4wKSIKLSsJLUAoZm9yIGkgaW4gJChzcmNkaXIpL3Rlc3QvZXJyb3JzMTAvKi54bWwgOyBkbyBcCi0rCSAgbmFtZT1gYmFzZW5hbWUgJCRpYDsgXAotKwkgIGlmIFsgISAtZCAkJGkgXSA7IHRoZW4gXAotKwkgIGlmIFsgISAtZiAkKHNyY2RpcikvcmVzdWx0L2Vycm9yczEwLyQkbmFtZSBdIDsgdGhlbiBcCi0rCSAgICAgIGVjaG8gTmV3IHRlc3QgZmlsZSAkJG5hbWUgOyBcCi0rCSAgICAgICQoQ0hFQ0tFUikgJCh0b3BfYnVpbGRkaXIpL3htbGxpbnQgLS1vbGR4bWwxMCAkJGkgXAotKwkgICAgICAgICAyPiAkKHNyY2RpcikvcmVzdWx0L2Vycm9yczEwLyQkbmFtZS5lcnIgXAotKwkJID4gJChzcmNkaXIpL3Jlc3VsdC9lcnJvcnMxMC8kJG5hbWUgOyBcCi0rCSAgICAgIGdyZXAgIk1PUlkgQUxMTyIgLm1lbWR1bXAgIHwgZ3JlcCAtdiAiTUVNT1JZIEFMTE9DQVRFRCA6IDAiOyBcCi0rCSAgZWxzZSBcCi0rCSAgICAgIGxvZz1gJChDSEVDS0VSKSAkKHRvcF9idWlsZGRpcikveG1sbGludCAtLW9sZHhtbDEwICQkaSAyPiBlcnJvci4kJG5hbWUgPiByZXN1bHQuJCRuYW1lIDsgXAotKwkgICAgICBncmVwICJNT1JZIEFMTE8iIC5tZW1kdW1wICB8IGdyZXAgLXYgIk1FTU9SWSBBTExPQ0FURUQgOiAwIjsgXAotKwkgICAgICBkaWZmICQoc3JjZGlyKS9yZXN1bHQvZXJyb3JzMTAvJCRuYW1lIHJlc3VsdC4kJG5hbWUgOyBcCi0rCSAgICAgIGRpZmYgJChzcmNkaXIpL3Jlc3VsdC9lcnJvcnMxMC8kJG5hbWUuZXJyIGVycm9yLiQkbmFtZWAgOyBcCi0rCSAgICAgIGlmIFsgLW4gIiQkbG9nIiBdIDsgdGhlbiBlY2hvICQkbmFtZSByZXN1bHQgOyBlY2hvICIkJGxvZyIgOyBmaSA7IFwKLSsJICAgICAgcm0gcmVzdWx0LiQkbmFtZSBlcnJvci4kJG5hbWUgOyBcCi0rCSAgZmkgOyBmaSA7IGRvbmUpCi0gCUBlY2hvICIjIyBFcnJvciBjYXNlcyBzdHJlYW0gcmVncmVzc2lvbiB0ZXN0cyIKLSAJLUAoZm9yIGkgaW4gJChzcmNkaXIpL3Rlc3QvZXJyb3JzLyoueG1sIDsgZG8gXAotIAkgIG5hbWU9YGJhc2VuYW1lICQkaWA7IFwKLWRpZmYgLS1naXQgYS9wYXJzZXIuYyBiL3BhcnNlci5jCi1pbmRleCA2MDlhMjcwLi44ZTExYzEyIDEwMDY0NAotLS0tIGEvcGFyc2VyLmMKLSsrKyBiL3BhcnNlci5jCi1AQCAtMjExNSw3ICsyMTE1LDYgQEAgc3RhdGljIHZvaWQgeG1sR1JPVyAoeG1sUGFyc2VyQ3R4dFB0ciBjdHh0KSB7Ci0gCWN0eHQtPmlucHV0LT5saW5lKys7IGN0eHQtPmlucHV0LT5jb2wgPSAxOwkJCVwKLSAgICAgfSBlbHNlIGN0eHQtPmlucHV0LT5jb2wrKzsJCQkJCQlcCi0gICAgIGN0eHQtPmlucHV0LT5jdXIgKz0gbDsJCQkJXAotLSAgICBpZiAoKmN0eHQtPmlucHV0LT5jdXIgPT0gJyUnKSB4bWxQYXJzZXJIYW5kbGVQRVJlZmVyZW5jZShjdHh0KTsJXAotICAgfSB3aGlsZSAoMCkKLSAKLSAjZGVmaW5lIENVUl9DSEFSKGwpIHhtbEN1cnJlbnRDaGFyKGN0eHQsICZsKQotQEAgLTM0MDYsMTMgKzM0MDUsNiBAQCB4bWxQYXJzZU5hbWVDb21wbGV4KHhtbFBhcnNlckN0eHRQdHIgY3R4dCkgewotIAkgICAgbGVuICs9IGw7Ci0gCSAgICBORVhUTChsKTsKLSAJICAgIGMgPSBDVVJfQ0hBUihsKTsKLS0JICAgIGlmIChjID09IDApIHsKLS0JCWNvdW50ID0gMDsKLS0JCUdST1c7Ci0tICAgICAgICAgICAgICAgIGlmIChjdHh0LT5pbnN0YXRlID09IFhNTF9QQVJTRVJfRU9GKQotLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuKE5VTEwpOwotLQkJYyA9IENVUl9DSEFSKGwpOwotLQkgICAgfQotIAl9Ci0gICAgIH0KLSAgICAgaWYgKChsZW4gPiBYTUxfTUFYX05BTUVfTEVOR1RIKSAmJgotQEAgLTM0MjAsNiArMzQxMiwxNiBAQCB4bWxQYXJzZU5hbWVDb21wbGV4KHhtbFBhcnNlckN0eHRQdHIgY3R4dCkgewotICAgICAgICAgeG1sRmF0YWxFcnIoY3R4dCwgWE1MX0VSUl9OQU1FX1RPT19MT05HLCAiTmFtZSIpOwotICAgICAgICAgcmV0dXJuKE5VTEwpOwotICAgICB9Ci0rICAgIGlmIChjdHh0LT5pbnB1dC0+Y3VyIC0gY3R4dC0+aW5wdXQtPmJhc2UgPCBsZW4pIHsKLSsgICAgICAgIC8qCi0rICAgICAgICAgKiBUaGVyZSB3ZXJlIGEgY291cGxlIG9mIGJ1Z3Mgd2hlcmUgUEVSZWZzIGxlYWQgdG8gdG8gYSBjaGFuZ2UKLSsgICAgICAgICAqIG9mIHRoZSBidWZmZXIuIENoZWNrIHRoZSBidWZmZXIgc2l6ZSB0byBhdm9pZCBwYXNzaW5nIGFuIGludmFsaWQKLSsgICAgICAgICAqIHBvaW50ZXIgdG8geG1sRGljdExvb2t1cC4KLSsgICAgICAgICAqLwotKyAgICAgICAgeG1sRmF0YWxFcnIoY3R4dCwgWE1MX0VSUl9JTlRFUk5BTF9FUlJPUiwKLSsgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIGNoYW5nZSBvZiBpbnB1dCBidWZmZXIiKTsKLSsgICAgICAgIHJldHVybiAoTlVMTCk7Ci0rICAgIH0KLSAgICAgaWYgKCgqY3R4dC0+aW5wdXQtPmN1ciA9PSAnXG4nKSAmJiAoY3R4dC0+aW5wdXQtPmN1clstMV0gPT0gJ1xyJykpCi0gICAgICAgICByZXR1cm4oeG1sRGljdExvb2t1cChjdHh0LT5kaWN0LCBjdHh0LT5pbnB1dC0+Y3VyIC0gKGxlbiArIDEpLCBsZW4pKTsKLSAgICAgcmV0dXJuKHhtbERpY3RMb29rdXAoY3R4dC0+ZGljdCwgY3R4dC0+aW5wdXQtPmN1ciAtIGxlbiwgbGVuKSk7Ci1kaWZmIC0tZ2l0IGEvcmVzdWx0L2Vycm9yczEwLzc4MTIwNS54bWwgYi9yZXN1bHQvZXJyb3JzMTAvNzgxMjA1LnhtbAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLWRpZmYgLS1naXQgYS9yZXN1bHQvZXJyb3JzMTAvNzgxMjA1LnhtbC5lcnIgYi9yZXN1bHQvZXJyb3JzMTAvNzgxMjA1LnhtbC5lcnIKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kYTE1YzNmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9yZXN1bHQvZXJyb3JzMTAvNzgxMjA1LnhtbC5lcnIKLUBAIC0wLDAgKzEsMjEgQEAKLStFbnRpdHk6IGxpbmUgMTogcGFyc2VyIGVycm9yIDogaW50ZXJuYWwgZXJyb3I6IHhtbFBhcnNlSW50ZXJuYWxTdWJzZXQ6IGVycm9yIGRldGVjdGVkIGluIE1hcmt1cCBkZWNsYXJhdGlvbgotKwotKyAlYTsgCi0rICAgIF4KLStFbnRpdHk6IGxpbmUgMTogCi0rPDowMDAwCi0rXgotK0VudGl0eTogbGluZSAxOiBwYXJzZXIgZXJyb3IgOiBET0NUWVBFIGltcHJvcGVybHkgdGVybWluYXRlZAotKyAlYTsgCi0rICAgIF4KLStFbnRpdHk6IGxpbmUgMTogCi0rPDowMDAwCi0rXgotK25hbWVzcGFjZSBlcnJvciA6IEZhaWxlZCB0byBwYXJzZSBRTmFtZSAnOjAwMDAnCi0rICVhOyAKLSsgICAgXgotKzw6MDAwMAotKyAgICAgIF4KLSsuL3Rlc3QvZXJyb3JzMTAvNzgxMjA1LnhtbDo0OiBwYXJzZXIgZXJyb3IgOiBDb3VsZG4ndCBmaW5kIGVuZCBvZiBTdGFydCBUYWcgOjAwMDAgbGluZSAxCi0rCi0rXgotZGlmZiAtLWdpdCBhL3Jlc3VsdC9lcnJvcnMxMC83ODEzNjEueG1sIGIvcmVzdWx0L2Vycm9yczEwLzc4MTM2MS54bWwKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci1kaWZmIC0tZ2l0IGEvcmVzdWx0L2Vycm9yczEwLzc4MTM2MS54bWwuZXJyIGIvcmVzdWx0L2Vycm9yczEwLzc4MTM2MS54bWwuZXJyCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNjU1ZjQxYQotLS0tIC9kZXYvbnVsbAotKysrIGIvcmVzdWx0L2Vycm9yczEwLzc4MTM2MS54bWwuZXJyCi1AQCAtMCwwICsxLDEzIEBACi0rLi90ZXN0L2Vycm9yczEwLzc4MTM2MS54bWw6NDogcGFyc2VyIGVycm9yIDogeG1sUGFyc2VFbGVtZW50RGVjbDogJ0VNUFRZJywgJ0FOWScgb3IgJygnIGV4cGVjdGVkCi0rCi0rXgotKy4vdGVzdC9lcnJvcnMxMC83ODEzNjEueG1sOjQ6IHBhcnNlciBlcnJvciA6IGludGVybmFsIGVycm9yOiB4bWxQYXJzZUludGVybmFsU3Vic2V0OiBlcnJvciBkZXRlY3RlZCBpbiBNYXJrdXAgZGVjbGFyYXRpb24KLSsKLSsKLSteCi0rLi90ZXN0L2Vycm9yczEwLzc4MTM2MS54bWw6NDogcGFyc2VyIGVycm9yIDogRE9DVFlQRSBpbXByb3Blcmx5IHRlcm1pbmF0ZWQKLSsKLSteCi0rLi90ZXN0L2Vycm9yczEwLzc4MTM2MS54bWw6NDogcGFyc2VyIGVycm9yIDogU3RhcnQgdGFnIGV4cGVjdGVkLCAnPCcgbm90IGZvdW5kCi0rCi0rXgotZGlmZiAtLWdpdCBhL3Jlc3VsdC92YWxpZC83NjY5NTYueG1sIGIvcmVzdWx0L3ZhbGlkLzc2Njk1Ni54bWwKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci1kaWZmIC0tZ2l0IGEvcmVzdWx0L3ZhbGlkLzc2Njk1Ni54bWwuZXJyIGIvcmVzdWx0L3ZhbGlkLzc2Njk1Ni54bWwuZXJyCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMzRiMWRhZQotLS0tIC9kZXYvbnVsbAotKysrIGIvcmVzdWx0L3ZhbGlkLzc2Njk1Ni54bWwuZXJyCi1AQCAtMCwwICsxLDkgQEAKLSt0ZXN0L3ZhbGlkL2R0ZHMvNzY2OTU2LmR0ZDoyOiBwYXJzZXIgZXJyb3IgOiBQRVJlZmVyZW5jZTogZXhwZWN0aW5nICc7JwotKyXDpCVlbnQ7Ci0rICAgXgotK0VudGl0eTogbGluZSAxOiBwYXJzZXIgZXJyb3IgOiBDb250ZW50IGVycm9yIGluIHRoZSBleHRlcm5hbCBzdWJzZXQKLSsgJWVudDsgCi0rICAgICAgXgotK0VudGl0eTogbGluZSAxOiAKLSt2YWx1ZQotK14KLWRpZmYgLS1naXQgYS9yZXN1bHQvdmFsaWQvNzY2OTU2LnhtbC5lcnIucmRyIGIvcmVzdWx0L3ZhbGlkLzc2Njk1Ni54bWwuZXJyLnJkcgotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjc3NjAzNDYKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Jlc3VsdC92YWxpZC83NjY5NTYueG1sLmVyci5yZHIKLUBAIC0wLDAgKzEsMTAgQEAKLSt0ZXN0L3ZhbGlkL2R0ZHMvNzY2OTU2LmR0ZDoyOiBwYXJzZXIgZXJyb3IgOiBQRVJlZmVyZW5jZTogZXhwZWN0aW5nICc7JwotKyXDpCVlbnQ7Ci0rICAgXgotK0VudGl0eTogbGluZSAxOiBwYXJzZXIgZXJyb3IgOiBDb250ZW50IGVycm9yIGluIHRoZSBleHRlcm5hbCBzdWJzZXQKLSsgJWVudDsgCi0rICAgICAgXgotK0VudGl0eTogbGluZSAxOiAKLSt2YWx1ZQotK14KLSsuL3Rlc3QvdmFsaWQvNzY2OTU2LnhtbCA6IGZhaWxlZCB0byBwYXJzZQotZGlmZiAtLWdpdCBhL3J1bnRlc3QuYyBiL3J1bnRlc3QuYwotaW5kZXggYmI3NGQyYS4uNjNlOGMyMCAxMDA2NDQKLS0tLSBhL3J1bnRlc3QuYwotKysrIGIvcnVudGVzdC5jCi1AQCAtNDIwMiw2ICs0MjAyLDkgQEAgdGVzdERlc2MgdGVzdERlc2NyaXB0aW9uc1tdID0gewotICAgICB7ICJFcnJvciBjYXNlcyByZWdyZXNzaW9uIHRlc3RzIiwKLSAgICAgICBlcnJQYXJzZVRlc3QsICIuL3Rlc3QvZXJyb3JzLyoueG1sIiwgInJlc3VsdC9lcnJvcnMvIiwgIiIsICIuZXJyIiwKLSAgICAgICAwIH0sCi0rICAgIHsgIkVycm9yIGNhc2VzIHJlZ3Jlc3Npb24gdGVzdHMgKG9sZCAxLjApIiwKLSsgICAgICBlcnJQYXJzZVRlc3QsICIuL3Rlc3QvZXJyb3JzMTAvKi54bWwiLCAicmVzdWx0L2Vycm9yczEwLyIsICIiLCAiLmVyciIsCi0rICAgICAgWE1MX1BBUlNFX09MRDEwIH0sCi0gI2lmZGVmIExJQlhNTF9SRUFERVJfRU5BQkxFRAotICAgICB7ICJFcnJvciBjYXNlcyBzdHJlYW0gcmVncmVzc2lvbiB0ZXN0cyIsCi0gICAgICAgc3RyZWFtUGFyc2VUZXN0LCAiLi90ZXN0L2Vycm9ycy8qLnhtbCIsICJyZXN1bHQvZXJyb3JzLyIsIE5VTEwsICIuc3RyIiwKLWRpZmYgLS1naXQgYS90ZXN0L2Vycm9yczEwLzc4MTIwNS54bWwgYi90ZXN0L2Vycm9yczEwLzc4MTIwNS54bWwKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kOWU5ZTgzCi0tLS0gL2Rldi9udWxsCi0rKysgYi90ZXN0L2Vycm9yczEwLzc4MTIwNS54bWwKLUBAIC0wLDAgKzEsMyBAQAotKzwhRE9DVFlQRSBEIFsKLSsgIDwhRU5USVRZICUgYSAiPDowMDAwIj4KLSsgICVhOwotZGlmZiAtLWdpdCBhL3Rlc3QvZXJyb3JzMTAvNzgxMzYxLnhtbCBiL3Rlc3QvZXJyb3JzMTAvNzgxMzYxLnhtbAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjY3NDc2YmMKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Rlc3QvZXJyb3JzMTAvNzgxMzYxLnhtbAotQEAgLTAsMCArMSwzIEBACi0rPCFET0NUWVBFIGRvYyBbCi0rICA8IUVOVElUWSAlIGVsZW0gIjwhRUxFTUVOVCBlMDAwMDAwMDAwMCI+Ci0rICAlZWxlbTsKLWRpZmYgLS1naXQgYS90ZXN0L3ZhbGlkLzc2Njk1Ni54bWwgYi90ZXN0L3ZhbGlkLzc2Njk1Ni54bWwKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xOWE5NWEwCi0tLS0gL2Rldi9udWxsCi0rKysgYi90ZXN0L3ZhbGlkLzc2Njk1Ni54bWwKLUBAIC0wLDAgKzEsMiBAQAotKzwhRE9DVFlQRSB0ZXN0IFNZU1RFTSAiZHRkcy83NjY5NTYuZHRkIj4KLSs8dGVzdC8+Ci1kaWZmIC0tZ2l0IGEvdGVzdC92YWxpZC9kdGRzLzc2Njk1Ni5kdGQgYi90ZXN0L3ZhbGlkL2R0ZHMvNzY2OTU2LmR0ZAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmRkZGRlNjgKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Rlc3QvdmFsaWQvZHRkcy83NjY5NTYuZHRkCi1AQCAtMCwwICsxLDIgQEAKLSs8IUVOVElUWSAlIGVudCAidmFsdWUiPgotKyXDpCVlbnQ7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1maXhfTlVMTF9wb2ludGVyX2RlcmVmcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLWZpeF9OVUxMX3BvaW50ZXJfZGVyZWZzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjBlMzJmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLWZpeF9OVUxMX3BvaW50ZXJfZGVyZWZzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotbGlieG1sMi0yLjkuNDogRml4IG1vcmUgTlVMTCBwb2ludGVyIGRlcmVmcwotCi14cG9pbnRlcjogRml4IG1vcmUgTlVMTCBwb2ludGVyIGRlcmVmcwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5nbm9tZS5vcmcvYnJvd3NlL2xpYnhtbDIvY29tbWl0Lz9pZD1lOTA1ZjA4MTIzZTRhNmU3NzMxNTQ5ZTZmMDlkYWRmZjRjYWI2NWJkXQotU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAc2llbWVucy5jb20+Ci0KLWRpZmYgLS1naXQgYS94cG9pbnRlci5jIGIveHBvaW50ZXIuYwotaW5kZXggNjc2YzUxMC4uMDc0ZGIyNCAxMDA2NDQKLS0tLSBhL3hwb2ludGVyLmMKLSsrKyBiL3hwb2ludGVyLmMKLUBAIC01NTUsNyArNTU1LDcgQEAgeG1sWFB0ck5ld1JhbmdlTm9kZU9iamVjdCh4bWxOb2RlUHRyIHN0YXJ0LCB4bWxYUGF0aE9iamVjdFB0ciBlbmQpIHsKLSAJICAgIC8qCi0gCSAgICAgKiBFbXB0eSBzZXQgLi4uCi0gCSAgICAgKi8KLS0JICAgIGlmIChlbmQtPm5vZGVzZXR2YWwtPm5vZGVOciA8PSAwKQotKwkgICAgaWYgKChlbmQtPm5vZGVzZXR2YWwgPT0gTlVMTCkgfHwgKGVuZC0+bm9kZXNldHZhbC0+bm9kZU5yIDw9IDApKQotIAkJcmV0dXJuKE5VTEwpOwotIAkgICAgYnJlYWs7Ci0gCWRlZmF1bHQ6Ci1AQCAtMTQwMCw3ICsxNDAwLDcgQEAgeG1sWFB0ckV2YWwoY29uc3QgeG1sQ2hhciAqc3RyLCB4bWxYUGF0aENvbnRleHRQdHIgY3R4KSB7Ci0gCQkgICAgICovCi0gCQkgICAgeG1sTm9kZVNldFB0ciBzZXQ7Ci0gCQkgICAgc2V0ID0gdG1wLT5ub2Rlc2V0dmFsOwotLQkJICAgIGlmICgoc2V0LT5ub2RlTnIgIT0gMSkgfHwKLSsJCSAgICBpZiAoKHNldCA9PSBOVUxMKSB8fCAoc2V0LT5ub2RlTnIgIT0gMSkgfHwKLSAJCQkoc2V0LT5ub2RlVGFiWzBdICE9ICh4bWxOb2RlUHRyKSBjdHgtPmRvYykpCi0gCQkJc3RhY2srKzsKLSAJCX0gZWxzZQotQEAgLTIwNzMsOSArMjA3MywxMSBAQCB4bWxYUHRyUmFuZ2VGdW5jdGlvbih4bWxYUGF0aFBhcnNlckNvbnRleHRQdHIgY3R4dCwgaW50IG5hcmdzKSB7Ci0gCXhtbFhQYXRoRnJlZU9iamVjdChzZXQpOwotICAgICAgICAgWFBfRVJST1IoWFBBVEhfTUVNT1JZX0VSUk9SKTsKLSAgICAgfQotLSAgICBmb3IgKGkgPSAwO2kgPCBvbGRzZXQtPmxvY05yO2krKykgewotLQl4bWxYUHRyTG9jYXRpb25TZXRBZGQobmV3c2V0LAotLQkJeG1sWFB0ckNvdmVyaW5nUmFuZ2UoY3R4dCwgb2xkc2V0LT5sb2NUYWJbaV0pKTsKLSsgICAgaWYgKG9sZHNldCAhPSBOVUxMKSB7Ci0rCWZvciAoaSA9IDA7aSA8IG9sZHNldC0+bG9jTnI7aSsrKSB7Ci0rCSAgeG1sWFB0ckxvY2F0aW9uU2V0QWRkKG5ld3NldCwKLSsJCSAgeG1sWFB0ckNvdmVyaW5nUmFuZ2UoY3R4dCwgb2xkc2V0LT5sb2NUYWJbaV0pKTsKLSsgICAgICB9Ci0gICAgIH0KLSAKLSAgICAgLyoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLWZpeF9hbmRfc2ltcGxpZnlfeG1sUGFyc2VTdGFydFRhZzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1maXhfYW5kX3NpbXBsaWZ5X3htbFBhcnNlU3RhcnRUYWcyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWE1NzcwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLWZpeF9hbmRfc2ltcGxpZnlfeG1sUGFyc2VTdGFydFRhZzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OTAgKzAsMCBAQAotbGlieG1sMi0yLjkuNDogQXZvaWQgcmVwYXJzaW5nIGFuZCBzaW1wbGlmeSBjb250cm9sIGZsb3cgaW4geG1sUGFyc2VTdGFydFRhZzIKLQotW05vIHVwc3RyZWFtIHRyYWNraW5nXQotCi1wYXJzZXI6IEF2b2lkIHJlcGFyc2luZyBpbiB4bWxQYXJzZVN0YXJ0VGFnMgotCi1UaGUgY29kZSBpbiB4bWxQYXJzZVN0YXJ0VGFnMiBtdXN0IGhhbmRsZSB0aGUgY2FzZSB0aGF0IHRoZSBpbnB1dAotYnVmZmVyIHdhcyBncm93biBhbmQgcmVhbGxvY2F0ZWQgd2hpY2ggY2FuIGludmFsaWRhdGUgcG9pbnRlcnMgdG8KLWF0dHJpYnV0ZSB2YWx1ZXMuIEJlZm9yZSwgdGhpcyB3YXMgaGFuZGxlZCBieSBkZXRlY3RpbmcgY2hhbmdlcyBvZgotdGhlIGlucHV0IGJ1ZmZlciAiYmFzZSIgcG9pbnRlciBhbmQsIGluIGNhc2Ugb2YgYSBjaGFuZ2UsIGp1bXBpbmcKLWJhY2sgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZnVuY3Rpb24gYW5kIHJlcGFyc2luZyB0aGUgc3RhcnQgdGFnLgotCi1UaGUgbWFqb3IgcHJvYmxlbSBvZiB0aGlzIGFwcHJvYWNoIGlzIHRoYXQgd2hldGhlciBhbiBpbnB1dCBidWZmZXIgaXMKLXJlYWxsb2NhdGVkIGlzIG5vbmRldGVybWluaXN0aWMsIHJlc3VsdGluZyBpbiBzZWVtaW5nbHkgcmFuZG9tIHRlc3QKLWZhaWx1cmVzLiBTZWUgdGhlIG1haWxpbmcgbGlzdCB0aHJlYWQgInJ1bnRlc3QgbXlzdGVyeSBidWc6IG5hbWUyLnhtbAotZXJyb3IgY2FzZSByZWdyZXNzaW9uIHRlc3QiIGZyb20gMjAxMiwgZm9yIGV4YW1wbGUuCi0KLUlmIGEgcmVhbGxvY2F0aW9uIHdhcyBkZXRlY3RlZCwgdGhlIGNvZGUgYWxzbyBtYWRlIG5vIGF0dGVtcHRzIHRvCi1jb250aW51ZSBwYXJzaW5nIGluIGNhc2Ugb2YgZXJyb3JzIHdoaWNoIG1ha2VzIGEgZGlmZmVyZW5jZSBpbgotdGhlIGxheCAicmVjb3ZlciIgbW9kZS4KLQotTm93IHdlIHN0b3JlIHRoZSBjdXJyZW50IGlucHV0IGJ1ZmZlciAiYmFzZSIgcG9pbnRlciBmb3IgZWFjaCAobm90Ci1zZXBhcmF0ZWx5IGFsbG9jYXRlZCkgYXR0cmlidXRlIGluIHRoZSBuYW1lc3BhY2UgVVJJIGZpZWxkLCB3aGljaCBpc24ndAotdXNlZCB1bnRpbCBsYXRlci4gQWZ0ZXIgdGhlIHdob2xlIHN0YXJ0IHRhZyB3YXMgcGFyc2VkLCB0aGUgcG9pbnRlcnMgdG8KLXRoZSBhdHRyaWJ1dGUgdmFsdWVzIGFyZSByZWNvbnN0cnVjdGVkIHVzaW5nIHRoZSBvZmZzZXQgYmV0d2VlbiB0aGUKLW5ldyBhbmQgdGhlIG9sZCBpbnB1dCBidWZmZXIuIFRoaXMgcmVsaWVzIG9uIGFyaXRobWV0aWMgb24gZGFuZ2xpbmcKLXBvaW50ZXJzIHdoaWNoIGlzIHRlY2huaWNhbGx5IHVuZGVmaW5lZCBiZWhhdmlvci4gQnV0IGl0IHNlZW1zIGxpa2UKLXRoZSBlYXNpZXN0IGFuZCBtb3N0IGVmZmljaWVudCBmaXggYW5kIGEgc2ltaWxhciBhcHByb2FjaCBpcyB1c2VkIGluCi14bWxQYXJzZXJJbnB1dEdyb3cuCi0KLVRoaXMgY2hhbmdlcyB0aGUgZXJyb3Igb3V0cHV0IG9mIHNldmVyYWwgdGVzdHMsIHR5cGljYWxseSBtYWtpbmcgaXQKLW1vcmUgdmVyYm9zZSBiZWNhdXNlIHdlIHRyeSBoYXJkZXIgdG8gY29udGludWUgcGFyc2luZyBpbiBjYXNlIG9mIGVycm9ycy4KLQotKEFub3RoZXIgcG9zc2libGUgc29sdXRpb24gaXMgdG8gY2hlY2sgbm90IG9ubHkgdGhlICJiYXNlIiBwb2ludGVyCi1idXQgdGhlIHNpemUgb2YgdGhlIGlucHV0IGJ1ZmZlciBhcyB3ZWxsLiBCdXQgdGhpcyB3b3VsZCByZXN1bHQgaW4KLWV2ZW4gbW9yZSByZXBhcnNpbmcuKQotCi1SZW1vdmUgc29tZSBnb3RvIGxhYmVscyBhbmQgZGVkdXBsaWNhdGUgYSBiaXQgb2YgY29kZSBhZnRlciBoYW5kbGluZwotbmFtZXNwYWNlcy4KLQotVGhlcmUgd2VyZSB0d28gYnVncyB3aGVyZSBwYXJhbWV0ZXItZW50aXR5IHJlZmVyZW5jZXMgY291bGQgbGVhZCB0byBhbgotdW5leHBlY3RlZCBjaGFuZ2Ugb2YgdGhlIGlucHV0IGJ1ZmZlciBpbiB4bWxQYXJzZU5hbWVDb21wbGV4IGFuZAoteG1sRGljdExvb2t1cCBiZWluZyBjYWxsZWQgd2l0aCBhbiBpbnZhbGlkIHBvaW50ZXIuCi0KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotIC0gW2h0dHBzOi8vZ2l0Lmdub21lLm9yZy9icm93c2UvbGlieG1sMi9jb21taXQvP2lkPTA3Yjc0MjhiNjljMzY4NjExZDIxNWExNDBmZTYzMGIyZDFlNjEzNDldCi0gLSBbaHR0cHM6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9saWJ4bWwyL2NvbW1pdC8/aWQ9ODU1YzE5ZWZiN2NkMzBkOTI3ZDY3M2IzNjU4NTYzYzQ5NTljYTZmMF0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlaiBWYWxlayA8YW5kcmVqLnZhbGVrQHNpZW1lbnMuY29tPgotCi1kaWZmIC0tZ2l0IGEvcGFyc2VyLmMgYi9wYXJzZXIuYwotaW5kZXggNjA5YTI3MC4uNzQwMTZlMyAxMDA2NDQKLS0tLSBhL3BhcnNlci5jCi0rKysgYi9wYXJzZXIuYwotQEAgLTQzLDYgKzQzLDcgQEAKLSAjaW5jbHVkZSA8bGltaXRzLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0gI2luY2x1ZGUgPGxpYnhtbC94bWxtZW1vcnkuaD4KLSAjaW5jbHVkZSA8bGlieG1sL3RocmVhZHMuaD4KLSAjaW5jbHVkZSA8bGlieG1sL2dsb2JhbHMuaD4KLUBAIC05Mzc3LDggKzkzNzgsNyBAQCB4bWxQYXJzZVN0YXJ0VGFnMih4bWxQYXJzZXJDdHh0UHRyIGN0eHQsIGNvbnN0IHhtbENoYXIgKipwcmVmLAotICAgICBjb25zdCB4bWxDaGFyICoqYXR0cyA9IGN0eHQtPmF0dHM7Ci0gICAgIGludCBtYXhhdHRzID0gY3R4dC0+bWF4YXR0czsKLSAgICAgaW50IG5yYXR0cywgbmJhdHRzLCBuYmRlZjsKLS0gICAgaW50IGksIGosIG5iTnMsIGF0dHZhbCwgb2xkbGluZSwgb2xkY29sLCBpbnB1dE5yOwotLSAgICBjb25zdCB4bWxDaGFyICpiYXNlOwotKyAgICBpbnQgaSwgaiwgbmJOcywgYXR0dmFsOwotICAgICB1bnNpZ25lZCBsb25nIGN1cjsKLSAgICAgaW50IG5zTnIgPSBjdHh0LT5uc05yOwotIAotQEAgLTkzOTIsMTMgKzkzOTIsOCBAQCB4bWxQYXJzZVN0YXJ0VGFnMih4bWxQYXJzZXJDdHh0UHRyIGN0eHQsIGNvbnN0IHhtbENoYXIgKipwcmVmLAotICAgICAgKiAgICAgICBUaGUgU2hyaW5raW5nIGlzIG9ubHkgcG9zc2libGUgb25jZSB0aGUgZnVsbCBzZXQgb2YgYXR0cmlidXRlCi0gICAgICAqICAgICAgIGNhbGxiYWNrcyBoYXZlIGJlZW4gZG9uZS4KLSAgICAgICovCi0tcmVwYXJzZToKLSAgICAgU0hSSU5LOwotLSAgICBiYXNlID0gY3R4dC0+aW5wdXQtPmJhc2U7Ci0gICAgIGN1ciA9IGN0eHQtPmlucHV0LT5jdXIgLSBjdHh0LT5pbnB1dC0+YmFzZTsKLS0gICAgaW5wdXROciA9IGN0eHQtPmlucHV0TnI7Ci0tICAgIG9sZGxpbmUgPSBjdHh0LT5pbnB1dC0+bGluZTsKLS0gICAgb2xkY29sID0gY3R4dC0+aW5wdXQtPmNvbDsKLSAgICAgbmJhdHRzID0gMDsKLSAgICAgbnJhdHRzID0gMDsKLSAgICAgbmJkZWYgPSAwOwotQEAgLTk0MjIsOCArOTQxNyw2IEBAIHJlcGFyc2U6Ci0gICAgICAqLwotICAgICBTS0lQX0JMQU5LUzsKLSAgICAgR1JPVzsKLS0gICAgaWYgKChjdHh0LT5pbnB1dC0+YmFzZSAhPSBiYXNlKSB8fCAoaW5wdXROciAhPSBjdHh0LT5pbnB1dE5yKSkKLS0gICAgICAgIGdvdG8gYmFzZV9jaGFuZ2VkOwotIAotICAgICB3aGlsZSAoKChSQVcgIT0gJz4nKSAmJgotIAkgICAoKFJBVyAhPSAnLycpIHx8IChOWFQoMSkgIT0gJz4nKSkgJiYKLUBAIC05NDM0LDIwMyArOTQyNywxNzQgQEAgcmVwYXJzZToKLSAKLSAJYXR0bmFtZSA9IHhtbFBhcnNlQXR0cmlidXRlMihjdHh0LCBwcmVmaXgsIGxvY2FsbmFtZSwKLSAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXByZWZpeCwgJmF0dHZhbHVlLCAmbGVuLCAmYWxsb2MpOwotLQlpZiAoKGN0eHQtPmlucHV0LT5iYXNlICE9IGJhc2UpIHx8IChpbnB1dE5yICE9IGN0eHQtPmlucHV0TnIpKSB7Ci0tCSAgICBpZiAoKGF0dHZhbHVlICE9IE5VTEwpICYmIChhbGxvYyAhPSAwKSkKLS0JICAgICAgICB4bWxGcmVlKGF0dHZhbHVlKTsKLS0JICAgIGF0dHZhbHVlID0gTlVMTDsKLS0JICAgIGdvdG8gYmFzZV9jaGFuZ2VkOwotLQl9Ci0tICAgICAgICBpZiAoKGF0dG5hbWUgIT0gTlVMTCkgJiYgKGF0dHZhbHVlICE9IE5VTEwpKSB7Ci0tCSAgICBpZiAobGVuIDwgMCkgbGVuID0geG1sU3RybGVuKGF0dHZhbHVlKTsKLS0gICAgICAgICAgICBpZiAoKGF0dG5hbWUgPT0gY3R4dC0+c3RyX3htbG5zKSAmJiAoYXByZWZpeCA9PSBOVUxMKSkgewotLQkgICAgICAgIGNvbnN0IHhtbENoYXIgKlVSTCA9IHhtbERpY3RMb29rdXAoY3R4dC0+ZGljdCwgYXR0dmFsdWUsIGxlbik7Ci0tCQl4bWxVUklQdHIgdXJpOwotLQotLSAgICAgICAgICAgICAgICBpZiAoVVJMID09IE5VTEwpIHsKLS0JCSAgICB4bWxFcnJNZW1vcnkoY3R4dCwgImRpY3Rpb25hcnkgYWxsb2NhdGlvbiBmYWlsdXJlIik7Ci0tCQkgICAgaWYgKChhdHR2YWx1ZSAhPSBOVUxMKSAmJiAoYWxsb2MgIT0gMCkpCi0tCQkJeG1sRnJlZShhdHR2YWx1ZSk7Ci0tCQkgICAgcmV0dXJuKE5VTEwpOwotLQkJfQotLSAgICAgICAgICAgICAgICBpZiAoKlVSTCAhPSAwKSB7Ci0tCQkgICAgdXJpID0geG1sUGFyc2VVUkkoKGNvbnN0IGNoYXIgKikgVVJMKTsKLS0JCSAgICBpZiAodXJpID09IE5VTEwpIHsKLS0JCQl4bWxOc0VycihjdHh0LCBYTUxfV0FSX05TX1VSSSwKLS0JCQkgICAgICAgICAieG1sbnM6ICclcycgaXMgbm90IGEgdmFsaWQgVVJJXG4iLAotLQkJCQkJICAgVVJMLCBOVUxMLCBOVUxMKTsKLS0JCSAgICB9IGVsc2UgewotLQkJCWlmICh1cmktPnNjaGVtZSA9PSBOVUxMKSB7Ci0tCQkJICAgIHhtbE5zV2FybihjdHh0LCBYTUxfV0FSX05TX1VSSV9SRUxBVElWRSwKLS0JCQkJICAgICAgInhtbG5zOiBVUkkgJXMgaXMgbm90IGFic29sdXRlXG4iLAotLQkJCQkgICAgICBVUkwsIE5VTEwsIE5VTEwpOwotLQkJCX0KLS0JCQl4bWxGcmVlVVJJKHVyaSk7Ci0tCQkgICAgfQotLQkJICAgIGlmIChVUkwgPT0gY3R4dC0+c3RyX3htbF9ucykgewotLQkJCWlmIChhdHRuYW1lICE9IGN0eHQtPnN0cl94bWwpIHsKLS0JCQkgICAgeG1sTnNFcnIoY3R4dCwgWE1MX05TX0VSUl9YTUxfTkFNRVNQQUNFLAotLQkJCSAieG1sIG5hbWVzcGFjZSBVUkkgY2Fubm90IGJlIHRoZSBkZWZhdWx0IG5hbWVzcGFjZVxuIiwKLS0JCQkJICAgICBOVUxMLCBOVUxMLCBOVUxMKTsKLS0JCQl9Ci0tCQkJZ290byBza2lwX2RlZmF1bHRfbnM7Ci0tCQkgICAgfQotLQkJICAgIGlmICgobGVuID09IDI5KSAmJgotLQkJCSh4bWxTdHJFcXVhbChVUkwsCi0tCQkJCSBCQURfQ0FTVCAiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iKSkpIHsKLS0JCQl4bWxOc0VycihjdHh0LCBYTUxfTlNfRVJSX1hNTF9OQU1FU1BBQ0UsCi0tCQkJICAgICAicmV1c2Ugb2YgdGhlIHhtbG5zIG5hbWVzcGFjZSBuYW1lIGlzIGZvcmJpZGRlblxuIiwKLS0JCQkJIE5VTEwsIE5VTEwsIE5VTEwpOwotLQkJCWdvdG8gc2tpcF9kZWZhdWx0X25zOwotLQkJICAgIH0KLS0JCX0KLS0JCS8qCi0tCQkgKiBjaGVjayB0aGF0IGl0J3Mgbm90IGEgZGVmaW5lZCBuYW1lc3BhY2UKLS0JCSAqLwotLQkJZm9yIChqID0gMTtqIDw9IG5iTnM7aisrKQotLQkJICAgIGlmIChjdHh0LT5uc1RhYltjdHh0LT5uc05yIC0gMiAqIGpdID09IE5VTEwpCi0tCQkJYnJlYWs7Ci0tCQlpZiAoaiA8PSBuYk5zKQotLQkJICAgIHhtbEVyckF0dHJpYnV0ZUR1cChjdHh0LCBOVUxMLCBhdHRuYW1lKTsKLS0JCWVsc2UKLS0JCSAgICBpZiAobnNQdXNoKGN0eHQsIE5VTEwsIFVSTCkgPiAwKSBuYk5zKys7Ci0tc2tpcF9kZWZhdWx0X25zOgotLQkJaWYgKChhdHR2YWx1ZSAhPSBOVUxMKSAmJiAoYWxsb2MgIT0gMCkpIHsKLS0JCSAgICB4bWxGcmVlKGF0dHZhbHVlKTsKLS0JCSAgICBhdHR2YWx1ZSA9IE5VTEw7Ci0tCQl9Ci0tCQlpZiAoKFJBVyA9PSAnPicpIHx8ICgoKFJBVyA9PSAnLycpICYmIChOWFQoMSkgPT0gJz4nKSkpKQotLQkJICAgIGJyZWFrOwotLQkJaWYgKCFJU19CTEFOS19DSChSQVcpKSB7Ci0tCQkgICAgeG1sRmF0YWxFcnJNc2coY3R4dCwgWE1MX0VSUl9TUEFDRV9SRVFVSVJFRCwKLS0JCQkJICAgImF0dHJpYnV0ZXMgY29uc3RydWN0IGVycm9yXG4iKTsKLS0JCSAgICBicmVhazsKLS0JCX0KLS0JCVNLSVBfQkxBTktTOwotLQkJaWYgKChjdHh0LT5pbnB1dC0+YmFzZSAhPSBiYXNlKSB8fCAoaW5wdXROciAhPSBjdHh0LT5pbnB1dE5yKSkKLS0JCSAgICBnb3RvIGJhc2VfY2hhbmdlZDsKLS0JCWNvbnRpbnVlOwotLQkgICAgfQotLSAgICAgICAgICAgIGlmIChhcHJlZml4ID09IGN0eHQtPnN0cl94bWxucykgewotLQkgICAgICAgIGNvbnN0IHhtbENoYXIgKlVSTCA9IHhtbERpY3RMb29rdXAoY3R4dC0+ZGljdCwgYXR0dmFsdWUsIGxlbik7Ci0tCQl4bWxVUklQdHIgdXJpOwotLQotLSAgICAgICAgICAgICAgICBpZiAoYXR0bmFtZSA9PSBjdHh0LT5zdHJfeG1sKSB7Ci0tCQkgICAgaWYgKFVSTCAhPSBjdHh0LT5zdHJfeG1sX25zKSB7Ci0tCQkgICAgICAgIHhtbE5zRXJyKGN0eHQsIFhNTF9OU19FUlJfWE1MX05BTUVTUEFDRSwKLS0JCQkgICAgICAgICAieG1sIG5hbWVzcGFjZSBwcmVmaXggbWFwcGVkIHRvIHdyb25nIFVSSVxuIiwKLS0JCQkgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMKTsKLS0JCSAgICB9Ci0tCQkgICAgLyoKLS0JCSAgICAgKiBEbyBub3Qga2VlcCBhIG5hbWVzcGFjZSBkZWZpbml0aW9uIG5vZGUKLS0JCSAgICAgKi8KLS0JCSAgICBnb3RvIHNraXBfbnM7Ci0tCQl9Ci0rICAgICAgICBpZiAoKGF0dG5hbWUgPT0gTlVMTCkgfHwgKGF0dHZhbHVlID09IE5VTEwpKQotKyAgICAgICAgICAgIGdvdG8gbmV4dF9hdHRyOwotKwlpZiAobGVuIDwgMCkgbGVuID0geG1sU3RybGVuKGF0dHZhbHVlKTsKLSsKLSsgICAgICAgIGlmICgoYXR0bmFtZSA9PSBjdHh0LT5zdHJfeG1sbnMpICYmIChhcHJlZml4ID09IE5VTEwpKSB7Ci0rICAgICAgICAgICAgY29uc3QgeG1sQ2hhciAqVVJMID0geG1sRGljdExvb2t1cChjdHh0LT5kaWN0LCBhdHR2YWx1ZSwgbGVuKTsKLSsgICAgICAgICAgICB4bWxVUklQdHIgdXJpOwotKwotKyAgICAgICAgICAgIGlmIChVUkwgPT0gTlVMTCkgewotKyAgICAgICAgICAgICAgICB4bWxFcnJNZW1vcnkoY3R4dCwgImRpY3Rpb25hcnkgYWxsb2NhdGlvbiBmYWlsdXJlIik7Ci0rICAgICAgICAgICAgICAgIGlmICgoYXR0dmFsdWUgIT0gTlVMTCkgJiYgKGFsbG9jICE9IDApKQotKyAgICAgICAgICAgICAgICAgICAgeG1sRnJlZShhdHR2YWx1ZSk7Ci0rICAgICAgICAgICAgICAgIHJldHVybihOVUxMKTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgaWYgKCpVUkwgIT0gMCkgewotKyAgICAgICAgICAgICAgICB1cmkgPSB4bWxQYXJzZVVSSSgoY29uc3QgY2hhciAqKSBVUkwpOwotKyAgICAgICAgICAgICAgICBpZiAodXJpID09IE5VTEwpIHsKLSsgICAgICAgICAgICAgICAgICAgIHhtbE5zRXJyKGN0eHQsIFhNTF9XQVJfTlNfVVJJLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInhtbG5zOiAnJXMnIGlzIG5vdCBhIHZhbGlkIFVSSVxuIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVUkwsIE5VTEwsIE5VTEwpOwotKyAgICAgICAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgICAgICAgICAgaWYgKHVyaS0+c2NoZW1lID09IE5VTEwpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICB4bWxOc1dhcm4oY3R4dCwgWE1MX1dBUl9OU19VUklfUkVMQVRJVkUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4bWxuczogVVJJICVzIGlzIG5vdCBhYnNvbHV0ZVxuIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVJMLCBOVUxMLCBOVUxMKTsKLSsgICAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgICAgIHhtbEZyZWVVUkkodXJpKTsKLSsgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBpZiAoVVJMID09IGN0eHQtPnN0cl94bWxfbnMpIHsKLS0JCSAgICBpZiAoYXR0bmFtZSAhPSBjdHh0LT5zdHJfeG1sKSB7Ci0tCQkgICAgICAgIHhtbE5zRXJyKGN0eHQsIFhNTF9OU19FUlJfWE1MX05BTUVTUEFDRSwKLS0JCQkgICAgICAgICAieG1sIG5hbWVzcGFjZSBVUkkgbWFwcGVkIHRvIHdyb25nIHByZWZpeFxuIiwKLS0JCQkgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMKTsKLS0JCSAgICB9Ci0tCQkgICAgZ290byBza2lwX25zOwotLQkJfQotLSAgICAgICAgICAgICAgICBpZiAoYXR0bmFtZSA9PSBjdHh0LT5zdHJfeG1sbnMpIHsKLS0JCSAgICB4bWxOc0VycihjdHh0LCBYTUxfTlNfRVJSX1hNTF9OQU1FU1BBQ0UsCi0tCQkJICAgICAicmVkZWZpbml0aW9uIG9mIHRoZSB4bWxucyBwcmVmaXggaXMgZm9yYmlkZGVuXG4iLAotLQkJCSAgICAgTlVMTCwgTlVMTCwgTlVMTCk7Ci0tCQkgICAgZ290byBza2lwX25zOwotLQkJfQotLQkJaWYgKChsZW4gPT0gMjkpICYmCi0tCQkgICAgKHhtbFN0ckVxdWFsKFVSTCwKLS0JCSAgICAgICAgICAgICAgICAgQkFEX0NBU1QgImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIikpKSB7Ci0tCQkgICAgeG1sTnNFcnIoY3R4dCwgWE1MX05TX0VSUl9YTUxfTkFNRVNQQUNFLAotLQkJCSAgICAgInJldXNlIG9mIHRoZSB4bWxucyBuYW1lc3BhY2UgbmFtZSBpcyBmb3JiaWRkZW5cbiIsCi0tCQkJICAgICBOVUxMLCBOVUxMLCBOVUxMKTsKLS0JCSAgICBnb3RvIHNraXBfbnM7Ci0tCQl9Ci0tCQlpZiAoKFVSTCA9PSBOVUxMKSB8fCAoVVJMWzBdID09IDApKSB7Ci0tCQkgICAgeG1sTnNFcnIoY3R4dCwgWE1MX05TX0VSUl9YTUxfTkFNRVNQQUNFLAotLQkJICAgICAgICAgICAgICJ4bWxuczolczogRW1wdHkgWE1MIG5hbWVzcGFjZSBpcyBub3QgYWxsb3dlZFxuIiwKLS0JCQkgICAgICAgICAgYXR0bmFtZSwgTlVMTCwgTlVMTCk7Ci0tCQkgICAgZ290byBza2lwX25zOwotLQkJfSBlbHNlIHsKLS0JCSAgICB1cmkgPSB4bWxQYXJzZVVSSSgoY29uc3QgY2hhciAqKSBVUkwpOwotLQkJICAgIGlmICh1cmkgPT0gTlVMTCkgewotLQkJCXhtbE5zRXJyKGN0eHQsIFhNTF9XQVJfTlNfVVJJLAotLQkJCSAgICAgInhtbG5zOiVzOiAnJXMnIGlzIG5vdCBhIHZhbGlkIFVSSVxuIiwKLS0JCQkJCSAgIGF0dG5hbWUsIFVSTCwgTlVMTCk7Ci0tCQkgICAgfSBlbHNlIHsKLS0JCQlpZiAoKGN0eHQtPnBlZGFudGljKSAmJiAodXJpLT5zY2hlbWUgPT0gTlVMTCkpIHsKLS0JCQkgICAgeG1sTnNXYXJuKGN0eHQsIFhNTF9XQVJfTlNfVVJJX1JFTEFUSVZFLAotLQkJCQkgICAgICAieG1sbnM6JXM6IFVSSSAlcyBpcyBub3QgYWJzb2x1dGVcbiIsCi0tCQkJCSAgICAgIGF0dG5hbWUsIFVSTCwgTlVMTCk7Ci0tCQkJfQotLQkJCXhtbEZyZWVVUkkodXJpKTsKLS0JCSAgICB9Ci0tCQl9Ci0tCi0tCQkvKgotLQkJICogY2hlY2sgdGhhdCBpdCdzIG5vdCBhIGRlZmluZWQgbmFtZXNwYWNlCi0tCQkgKi8KLS0JCWZvciAoaiA9IDE7aiA8PSBuYk5zO2orKykKLS0JCSAgICBpZiAoY3R4dC0+bnNUYWJbY3R4dC0+bnNOciAtIDIgKiBqXSA9PSBhdHRuYW1lKQotLQkJCWJyZWFrOwotLQkJaWYgKGogPD0gbmJOcykKLS0JCSAgICB4bWxFcnJBdHRyaWJ1dGVEdXAoY3R4dCwgYXByZWZpeCwgYXR0bmFtZSk7Ci0tCQllbHNlCi0tCQkgICAgaWYgKG5zUHVzaChjdHh0LCBhdHRuYW1lLCBVUkwpID4gMCkgbmJOcysrOwotLXNraXBfbnM6Ci0tCQlpZiAoKGF0dHZhbHVlICE9IE5VTEwpICYmIChhbGxvYyAhPSAwKSkgewotLQkJICAgIHhtbEZyZWUoYXR0dmFsdWUpOwotLQkJICAgIGF0dHZhbHVlID0gTlVMTDsKLS0JCX0KLS0JCWlmICgoUkFXID09ICc+JykgfHwgKCgoUkFXID09ICcvJykgJiYgKE5YVCgxKSA9PSAnPicpKSkpCi0tCQkgICAgYnJlYWs7Ci0tCQlpZiAoIUlTX0JMQU5LX0NIKFJBVykpIHsKLS0JCSAgICB4bWxGYXRhbEVyck1zZyhjdHh0LCBYTUxfRVJSX1NQQUNFX1JFUVVJUkVELAotLQkJCQkgICAiYXR0cmlidXRlcyBjb25zdHJ1Y3QgZXJyb3JcbiIpOwotLQkJICAgIGJyZWFrOwotLQkJfQotLQkJU0tJUF9CTEFOS1M7Ci0tCQlpZiAoKGN0eHQtPmlucHV0LT5iYXNlICE9IGJhc2UpIHx8IChpbnB1dE5yICE9IGN0eHQtPmlucHV0TnIpKQotLQkJICAgIGdvdG8gYmFzZV9jaGFuZ2VkOwotLQkJY29udGludWU7Ci0tCSAgICB9Ci0rICAgICAgICAgICAgICAgICAgICBpZiAoYXR0bmFtZSAhPSBjdHh0LT5zdHJfeG1sKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgeG1sTnNFcnIoY3R4dCwgWE1MX05TX0VSUl9YTUxfTkFNRVNQQUNFLAotKyAgICAgICAgICAgICAgICAgICAgICJ4bWwgbmFtZXNwYWNlIFVSSSBjYW5ub3QgYmUgdGhlIGRlZmF1bHQgbmFtZXNwYWNlXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwpOwotKyAgICAgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0X2F0dHI7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgaWYgKChsZW4gPT0gMjkpICYmCi0rICAgICAgICAgICAgICAgICAgICAoeG1sU3RyRXF1YWwoVVJMLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQkFEX0NBU1QgImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIikpKSB7Ci0rICAgICAgICAgICAgICAgICAgICB4bWxOc0VycihjdHh0LCBYTUxfTlNfRVJSX1hNTF9OQU1FU1BBQ0UsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICJyZXVzZSBvZiB0aGUgeG1sbnMgbmFtZXNwYWNlIG5hbWUgaXMgZm9yYmlkZGVuXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCk7Ci0rICAgICAgICAgICAgICAgICAgICBnb3RvIG5leHRfYXR0cjsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAvKgotKyAgICAgICAgICAgICAqIGNoZWNrIHRoYXQgaXQncyBub3QgYSBkZWZpbmVkIG5hbWVzcGFjZQotKyAgICAgICAgICAgICAqLwotKyAgICAgICAgICAgIGZvciAoaiA9IDE7aiA8PSBuYk5zO2orKykKLSsgICAgICAgICAgICAgICAgaWYgKGN0eHQtPm5zVGFiW2N0eHQtPm5zTnIgLSAyICogal0gPT0gTlVMTCkKLSsgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgIGlmIChqIDw9IG5iTnMpCi0rICAgICAgICAgICAgICAgIHhtbEVyckF0dHJpYnV0ZUR1cChjdHh0LCBOVUxMLCBhdHRuYW1lKTsKLSsgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICAgIGlmIChuc1B1c2goY3R4dCwgTlVMTCwgVVJMKSA+IDApIG5iTnMrKzsKLSsKLSsgICAgICAgIH0gZWxzZSBpZiAoYXByZWZpeCA9PSBjdHh0LT5zdHJfeG1sbnMpIHsKLSsgICAgICAgICAgICBjb25zdCB4bWxDaGFyICpVUkwgPSB4bWxEaWN0TG9va3VwKGN0eHQtPmRpY3QsIGF0dHZhbHVlLCBsZW4pOwotKyAgICAgICAgICAgIHhtbFVSSVB0ciB1cmk7Ci0rCi0rICAgICAgICAgICAgaWYgKGF0dG5hbWUgPT0gY3R4dC0+c3RyX3htbCkgewotKyAgICAgICAgICAgICAgICBpZiAoVVJMICE9IGN0eHQtPnN0cl94bWxfbnMpIHsKLSsgICAgICAgICAgICAgICAgICAgIHhtbE5zRXJyKGN0eHQsIFhNTF9OU19FUlJfWE1MX05BTUVTUEFDRSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4bWwgbmFtZXNwYWNlIHByZWZpeCBtYXBwZWQgdG8gd3JvbmcgVVJJXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCk7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgLyoKLSsgICAgICAgICAgICAgICAgICogRG8gbm90IGtlZXAgYSBuYW1lc3BhY2UgZGVmaW5pdGlvbiBub2RlCi0rICAgICAgICAgICAgICAgICAqLwotKyAgICAgICAgICAgICAgICBnb3RvIG5leHRfYXR0cjsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgaWYgKFVSTCA9PSBjdHh0LT5zdHJfeG1sX25zKSB7Ci0rICAgICAgICAgICAgICAgIGlmIChhdHRuYW1lICE9IGN0eHQtPnN0cl94bWwpIHsKLSsgICAgICAgICAgICAgICAgICAgIHhtbE5zRXJyKGN0eHQsIFhNTF9OU19FUlJfWE1MX05BTUVTUEFDRSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4bWwgbmFtZXNwYWNlIFVSSSBtYXBwZWQgdG8gd3JvbmcgcHJlZml4XG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCk7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgZ290byBuZXh0X2F0dHI7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGlmIChhdHRuYW1lID09IGN0eHQtPnN0cl94bWxucykgewotKyAgICAgICAgICAgICAgICB4bWxOc0VycihjdHh0LCBYTUxfTlNfRVJSX1hNTF9OQU1FU1BBQ0UsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICJyZWRlZmluaXRpb24gb2YgdGhlIHhtbG5zIHByZWZpeCBpcyBmb3JiaWRkZW5cbiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwpOwotKyAgICAgICAgICAgICAgICBnb3RvIG5leHRfYXR0cjsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgaWYgKChsZW4gPT0gMjkpICYmCi0rICAgICAgICAgICAgICAgICh4bWxTdHJFcXVhbChVUkwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCQURfQ0FTVCAiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iKSkpIHsKLSsgICAgICAgICAgICAgICAgeG1sTnNFcnIoY3R4dCwgWE1MX05TX0VSUl9YTUxfTkFNRVNQQUNFLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAicmV1c2Ugb2YgdGhlIHhtbG5zIG5hbWVzcGFjZSBuYW1lIGlzIGZvcmJpZGRlblxuIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCk7Ci0rICAgICAgICAgICAgICAgIGdvdG8gbmV4dF9hdHRyOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBpZiAoKFVSTCA9PSBOVUxMKSB8fCAoVVJMWzBdID09IDApKSB7Ci0rICAgICAgICAgICAgICAgIHhtbE5zRXJyKGN0eHQsIFhNTF9OU19FUlJfWE1MX05BTUVTUEFDRSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgInhtbG5zOiVzOiBFbXB0eSBYTUwgbmFtZXNwYWNlIGlzIG5vdCBhbGxvd2VkXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dG5hbWUsIE5VTEwsIE5VTEwpOwotKyAgICAgICAgICAgICAgICBnb3RvIG5leHRfYXR0cjsKLSsgICAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgICAgICB1cmkgPSB4bWxQYXJzZVVSSSgoY29uc3QgY2hhciAqKSBVUkwpOwotKyAgICAgICAgICAgICAgICBpZiAodXJpID09IE5VTEwpIHsKLSsgICAgICAgICAgICAgICAgICAgIHhtbE5zRXJyKGN0eHQsIFhNTF9XQVJfTlNfVVJJLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAieG1sbnM6JXM6ICclcycgaXMgbm90IGEgdmFsaWQgVVJJXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dG5hbWUsIFVSTCwgTlVMTCk7Ci0rICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgICAgICBpZiAoKGN0eHQtPnBlZGFudGljKSAmJiAodXJpLT5zY2hlbWUgPT0gTlVMTCkpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICB4bWxOc1dhcm4oY3R4dCwgWE1MX1dBUl9OU19VUklfUkVMQVRJVkUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4bWxuczolczogVVJJICVzIGlzIG5vdCBhYnNvbHV0ZVxuIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0bmFtZSwgVVJMLCBOVUxMKTsKLSsgICAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgICAgIHhtbEZyZWVVUkkodXJpKTsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgIH0KLSAKLS0JICAgIC8qCi0tCSAgICAgKiBBZGQgdGhlIHBhaXIgdG8gYXR0cwotLQkgICAgICovCi0tCSAgICBpZiAoKGF0dHMgPT0gTlVMTCkgfHwgKG5iYXR0cyArIDUgPiBtYXhhdHRzKSkgewotLQkgICAgICAgIGlmICh4bWxDdHh0R3Jvd0F0dHJzKGN0eHQsIG5iYXR0cyArIDUpIDwgMCkgewotLQkJICAgIGlmIChhdHR2YWx1ZVtsZW5dID09IDApCi0tCQkJeG1sRnJlZShhdHR2YWx1ZSk7Ci0tCQkgICAgZ290byBmYWlsZWQ7Ci0tCQl9Ci0tCSAgICAgICAgbWF4YXR0cyA9IGN0eHQtPm1heGF0dHM7Ci0tCQlhdHRzID0gY3R4dC0+YXR0czsKLS0JICAgIH0KLS0JICAgIGN0eHQtPmF0dGFsbG9jc1tucmF0dHMrK10gPSBhbGxvYzsKLS0JICAgIGF0dHNbbmJhdHRzKytdID0gYXR0bmFtZTsKLS0JICAgIGF0dHNbbmJhdHRzKytdID0gYXByZWZpeDsKLS0JICAgIGF0dHNbbmJhdHRzKytdID0gTlVMTDsgLyogdGhlIFVSSSB3aWxsIGJlIGZldGNoZWQgbGF0ZXIgKi8KLS0JICAgIGF0dHNbbmJhdHRzKytdID0gYXR0dmFsdWU7Ci0tCSAgICBhdHR2YWx1ZSArPSBsZW47Ci0tCSAgICBhdHRzW25iYXR0cysrXSA9IGF0dHZhbHVlOwotLQkgICAgLyoKLS0JICAgICAqIHRhZyBpZiBzb21lIGRlYWxsb2NhdGlvbiBpcyBuZWVkZWQKLS0JICAgICAqLwotLQkgICAgaWYgKGFsbG9jICE9IDApIGF0dHZhbCA9IDE7Ci0tCX0gZWxzZSB7Ci0tCSAgICBpZiAoKGF0dHZhbHVlICE9IE5VTEwpICYmIChhdHR2YWx1ZVtsZW5dID09IDApKQotLQkJeG1sRnJlZShhdHR2YWx1ZSk7Ci0tCX0KLSsgICAgICAgICAgICAvKgotKyAgICAgICAgICAgICAqIGNoZWNrIHRoYXQgaXQncyBub3QgYSBkZWZpbmVkIG5hbWVzcGFjZQotKyAgICAgICAgICAgICAqLwotKyAgICAgICAgICAgIGZvciAoaiA9IDE7aiA8PSBuYk5zO2orKykKLSsgICAgICAgICAgICAgICAgaWYgKGN0eHQtPm5zVGFiW2N0eHQtPm5zTnIgLSAyICogal0gPT0gYXR0bmFtZSkKLSsgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgIGlmIChqIDw9IG5iTnMpCi0rICAgICAgICAgICAgICAgIHhtbEVyckF0dHJpYnV0ZUR1cChjdHh0LCBhcHJlZml4LCBhdHRuYW1lKTsKLSsgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICAgIGlmIChuc1B1c2goY3R4dCwgYXR0bmFtZSwgVVJMKSA+IDApIG5iTnMrKzsKLSsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgLyoKLSsgICAgICAgICAgICAgKiBBZGQgdGhlIHBhaXIgdG8gYXR0cwotKyAgICAgICAgICAgICAqLwotKyAgICAgICAgICAgIGlmICgoYXR0cyA9PSBOVUxMKSB8fCAobmJhdHRzICsgNSA+IG1heGF0dHMpKSB7Ci0rICAgICAgICAgICAgICAgIGlmICh4bWxDdHh0R3Jvd0F0dHJzKGN0eHQsIG5iYXR0cyArIDUpIDwgMCkgewotKyAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0X2F0dHI7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgbWF4YXR0cyA9IGN0eHQtPm1heGF0dHM7Ci0rICAgICAgICAgICAgICAgIGF0dHMgPSBjdHh0LT5hdHRzOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBjdHh0LT5hdHRhbGxvY3NbbnJhdHRzKytdID0gYWxsb2M7Ci0rICAgICAgICAgICAgYXR0c1tuYmF0dHMrK10gPSBhdHRuYW1lOwotKyAgICAgICAgICAgIGF0dHNbbmJhdHRzKytdID0gYXByZWZpeDsKLSsgICAgICAgICAgICAvKgotKyAgICAgICAgICAgICAqIFRoZSBuYW1lc3BhY2UgVVJJIGZpZWxkIGlzIHVzZWQgdGVtcG9yYXJpbHkgdG8gcG9pbnQgYXQgdGhlCi0rICAgICAgICAgICAgICogYmFzZSBvZiB0aGUgY3VycmVudCBpbnB1dCBidWZmZXIgZm9yIG5vbi1hbGxvY2VkIGF0dHJpYnV0ZXMuCi0rICAgICAgICAgICAgICogV2hlbiB0aGUgaW5wdXQgYnVmZmVyIGlzIHJlYWxsb2NhdGVkLCBhbGwgdGhlIHBvaW50ZXJzIGJlY29tZQotKyAgICAgICAgICAgICAqIGludmFsaWQsIGJ1dCB0aGV5IGNhbiBiZSByZWNvbnN0cnVjdGVkIGxhdGVyLgotKyAgICAgICAgICAgICAqLwotKyAgICAgICAgICAgIGlmIChhbGxvYykKLSsgICAgICAgICAgICAgICAgYXR0c1tuYmF0dHMrK10gPSBOVUxMOwotKyAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgYXR0c1tuYmF0dHMrK10gPSBjdHh0LT5pbnB1dC0+YmFzZTsKLSsgICAgICAgICAgICBhdHRzW25iYXR0cysrXSA9IGF0dHZhbHVlOwotKyAgICAgICAgICAgIGF0dHZhbHVlICs9IGxlbjsKLSsgICAgICAgICAgICBhdHRzW25iYXR0cysrXSA9IGF0dHZhbHVlOwotKyAgICAgICAgICAgIC8qCi0rICAgICAgICAgICAgICogdGFnIGlmIHNvbWUgZGVhbGxvY2F0aW9uIGlzIG5lZWRlZAotKyAgICAgICAgICAgICAqLwotKyAgICAgICAgICAgIGlmIChhbGxvYyAhPSAwKSBhdHR2YWwgPSAxOwotKyAgICAgICAgICAgIGF0dHZhbHVlID0gTlVMTDsgLyogbW92ZWQgaW50byBhdHRzICovCi0rICAgICAgICB9Ci0gCi0tZmFpbGVkOgotK25leHRfYXR0cjoKLSsgICAgICAgIGlmICgoYXR0dmFsdWUgIT0gTlVMTCkgJiYgKGFsbG9jICE9IDApKSB7Ci0rICAgICAgICAgICAgeG1sRnJlZShhdHR2YWx1ZSk7Ci0rICAgICAgICAgICAgYXR0dmFsdWUgPSBOVUxMOwotKyAgICAgICAgfQotIAotIAlHUk9XCi0gICAgICAgICBpZiAoY3R4dC0+aW5zdGF0ZSA9PSBYTUxfUEFSU0VSX0VPRikKLSAgICAgICAgICAgICBicmVhazsKLS0JaWYgKChjdHh0LT5pbnB1dC0+YmFzZSAhPSBiYXNlKSB8fCAoaW5wdXROciAhPSBjdHh0LT5pbnB1dE5yKSkKLS0JICAgIGdvdG8gYmFzZV9jaGFuZ2VkOwotIAlpZiAoKFJBVyA9PSAnPicpIHx8ICgoKFJBVyA9PSAnLycpICYmIChOWFQoMSkgPT0gJz4nKSkpKQotIAkgICAgYnJlYWs7Ci0gCWlmICghSVNfQkxBTktfQ0goUkFXKSkgewotQEAgLTk2NDYsOCArOTYxMCwyMCBAQCBmYWlsZWQ6Ci0gCSAgICBicmVhazsKLSAJfQotICAgICAgICAgR1JPVzsKLS0JaWYgKChjdHh0LT5pbnB1dC0+YmFzZSAhPSBiYXNlKSB8fCAoaW5wdXROciAhPSBjdHh0LT5pbnB1dE5yKSkKLS0JICAgIGdvdG8gYmFzZV9jaGFuZ2VkOwotKyAgICB9Ci0rCi0rICAgIC8qIFJlY29uc3RydWN0IGF0dHJpYnV0ZSB2YWx1ZSBwb2ludGVycy4gKi8KLSsgICAgZm9yIChpID0gMCwgaiA9IDA7IGogPCBucmF0dHM7IGkgKz0gNSwgaisrKSB7Ci0rICAgICAgICBpZiAoYXR0c1tpKzJdICE9IE5VTEwpIHsKLSsgICAgICAgICAgICAvKgotKyAgICAgICAgICAgICAqIEFyaXRobWV0aWMgb24gZGFuZ2xpbmcgcG9pbnRlcnMgaXMgdGVjaG5pY2FsbHkgdW5kZWZpbmVkCi0rICAgICAgICAgICAgICogYmVoYXZpb3IsIGJ1dCB3ZWxsLi4uCi0rICAgICAgICAgICAgICovCi0rICAgICAgICAgICAgcHRyZGlmZl90IG9mZnNldCA9IGN0eHQtPmlucHV0LT5iYXNlIC0gYXR0c1tpKzJdOwotKyAgICAgICAgICAgIGF0dHNbaSsyXSAgPSBOVUxMOyAgICAvKiBSZXNldCByZXB1cnBvc2VkIG5hbWVzcGFjZSBVUkkgKi8KLSsgICAgICAgICAgICBhdHRzW2krM10gKz0gb2Zmc2V0OyAgLyogdmFsdWUgKi8KLSsgICAgICAgICAgICBhdHRzW2krNF0gKz0gb2Zmc2V0OyAgLyogdmFsdWVuZCAqLwotKyAgICAgICAgfQotICAgICB9Ci0gCi0gICAgIC8qCi1AQCAtOTgwNCwzNCArOTc4MCw2IEBAIGZhaWxlZDoKLSAgICAgfQotIAotICAgICByZXR1cm4obG9jYWxuYW1lKTsKLS0KLS1iYXNlX2NoYW5nZWQ6Ci0tICAgIC8qCi0tICAgICAqIHRoZSBhdHRyaWJ1dGUgc3RyaW5ncyBhcmUgdmFsaWQgaWlmIHRoZSBiYXNlIGRpZG4ndCBjaGFuZ2VkCi0tICAgICAqLwotLSAgICBpZiAoYXR0dmFsICE9IDApIHsKLS0JZm9yIChpID0gMyxqID0gMDsgaiA8IG5yYXR0cztpICs9IDUsaisrKQotLQkgICAgaWYgKChjdHh0LT5hdHRhbGxvY3Nbal0gIT0gMCkgJiYgKGF0dHNbaV0gIT0gTlVMTCkpCi0tCSAgICAgICAgeG1sRnJlZSgoeG1sQ2hhciAqKSBhdHRzW2ldKTsKLS0gICAgfQotLQotLSAgICAvKgotLSAgICAgKiBXZSBjYW4ndCBzd2l0Y2ggZnJvbSBvbmUgZW50aXR5IHRvIGFub3RoZXIgaW4gdGhlIG1pZGRsZQotLSAgICAgKiBvZiBhIHN0YXJ0IHRhZwotLSAgICAgKi8KLS0gICAgaWYgKGlucHV0TnIgIT0gY3R4dC0+aW5wdXROcikgewotLSAgICAgICAgeG1sRmF0YWxFcnJNc2coY3R4dCwgWE1MX0VSUl9FTlRJVFlfQk9VTkRBUlksCi0tCQkgICAgIlN0YXJ0IHRhZyBkb2Vzbid0IHN0YXJ0IGFuZCBzdG9wIGluIHRoZSBzYW1lIGVudGl0eVxuIik7Ci0tCXJldHVybihOVUxMKTsKLS0gICAgfQotLQotLSAgICBjdHh0LT5pbnB1dC0+Y3VyID0gY3R4dC0+aW5wdXQtPmJhc2UgKyBjdXI7Ci0tICAgIGN0eHQtPmlucHV0LT5saW5lID0gb2xkbGluZTsKLS0gICAgY3R4dC0+aW5wdXQtPmNvbCA9IG9sZGNvbDsKLS0gICAgaWYgKGN0eHQtPndlbGxGb3JtZWQgPT0gMSkgewotLQlnb3RvIHJlcGFyc2U7Ci0tICAgIH0KLS0gICAgcmV0dXJuKE5VTEwpOwotIH0KLSAKLSAvKioKLWRpZmYgLS1naXQgYS9yZXN1bHQvZXJyb3JzLzc1OTM5OC54bWwuZXJyIGIvcmVzdWx0L2Vycm9ycy83NTkzOTgueG1sLmVycgotaW5kZXggZTA4ZDliZi4uZjYwMzZhMyAxMDA2NDQKLS0tLSBhL3Jlc3VsdC9lcnJvcnMvNzU5Mzk4LnhtbC5lcnIKLSsrKyBiL3Jlc3VsdC9lcnJvcnMvNzU5Mzk4LnhtbC5lcnIKLUBAIC0xLDkgKzEsMTIgQEAKLSAuL3Rlc3QvZXJyb3JzLzc1OTM5OC54bWw6MjEwOiBwYXJzZXIgZXJyb3IgOiBTdGFydFRhZzogaW52YWxpZCBlbGVtZW50IG5hbWUKLSBuZWVkIHRvIHdvcnJ5IGFib3V0IHBhcnNlcnMgd2hpPCEgZG9uJ3QgZXhwYW5kIFBFcmVmcyBmaW5kaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCi0tLi90ZXN0L2Vycm9ycy83NTkzOTgueG1sOjMwOTogcGFyc2VyIGVycm9yIDogT3BlbmluZyBhbmQgZW5kaW5nIHRhZyBtaXNtYXRjaDogc3BlYyBsaW5lIDUwIGFuZCB0ZXJtZGVmCi0rLi90ZXN0L2Vycm9ycy83NTkzOTgueG1sOjMwOTogcGFyc2VyIGVycm9yIDogT3BlbmluZyBhbmQgZW5kaW5nIHRhZyBtaXNtYXRjaDog4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSW4oSWbSBsaW5lIDMwOCBhbmQgdGVybWRlZgotIGFuZCBwcm92aWRlIGFjY2VzcyB0byB0aGVpciBjb250ZW50IGFuZCBzdHJ1Y3R1cmUuPC90ZXJtZGVmPiA8dGVybWRlZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KLS0uL3Rlc3QvZXJyb3JzLzc1OTM5OC54bWw6MzA5OiBwYXJzZXIgZXJyb3IgOiBFeHRyYSBjb250ZW50IGF0IHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50Ci0tYW5kIHByb3ZpZGUgYWNjZXNzIHRvIHRoZWlyIGNvbnRlbnQgYW5kIHN0cnVjdHVyZS48L3Rlcm1kZWY+IDx0ZXJtZGVmCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KLSsuL3Rlc3QvZXJyb3JzLzc1OTM5OC54bWw6MzE0OiBwYXJzZXIgZXJyb3IgOiBPcGVuaW5nIGFuZCBlbmRpbmcgdGFnIG1pc21hdGNoOiBzcGVjIGxpbmUgNTAgYW5kIHAKLStkYXRhIGFuZCB0aGUgaW5mb3JtYXRpb24gaXQgbXVzdCBwcm92aWRlIHRvIHRoZSBhcHBsaWNhdGlvbi48L3A+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KLSsuL3Rlc3QvZXJyb3JzLzc1OTM5OC54bWw6MzE2OiBwYXJzZXIgZXJyb3IgOiBFeHRyYSBjb250ZW50IGF0IHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50Ci0rPGRpdjIgaWQ9J3NlYy1vcmlnaW4tZ29hbHMnPgotK14KLWRpZmYgLS1naXQgYS9yZXN1bHQvZXJyb3JzL2F0dHIxLnhtbC5lcnIgYi9yZXN1bHQvZXJyb3JzL2F0dHIxLnhtbC5lcnIKLWluZGV4IDRmMDg1MzguLmM0YzRmYzggMTAwNjQ0Ci0tLS0gYS9yZXN1bHQvZXJyb3JzL2F0dHIxLnhtbC5lcnIKLSsrKyBiL3Jlc3VsdC9lcnJvcnMvYXR0cjEueG1sLmVycgotQEAgLTEsNiArMSw5IEBACi0gLi90ZXN0L2Vycm9ycy9hdHRyMS54bWw6MjogcGFyc2VyIGVycm9yIDogQXR0VmFsdWU6ICcgZXhwZWN0ZWQKLSAKLSBeCi0tLi90ZXN0L2Vycm9ycy9hdHRyMS54bWw6MTogcGFyc2VyIGVycm9yIDogRXh0cmEgY29udGVudCBhdCB0aGUgZW5kIG9mIHRoZSBkb2N1bWVudAotLTxmb28gZm9vPSJvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vCi0tIF4KLSsuL3Rlc3QvZXJyb3JzL2F0dHIxLnhtbDoyOiBwYXJzZXIgZXJyb3IgOiBhdHRyaWJ1dGVzIGNvbnN0cnVjdCBlcnJvcgotKwotK14KLSsuL3Rlc3QvZXJyb3JzL2F0dHIxLnhtbDoyOiBwYXJzZXIgZXJyb3IgOiBDb3VsZG4ndCBmaW5kIGVuZCBvZiBTdGFydCBUYWcgZm9vIGxpbmUgMQotKwotK14KLWRpZmYgLS1naXQgYS9yZXN1bHQvZXJyb3JzL2F0dHIyLnhtbC5lcnIgYi9yZXN1bHQvZXJyb3JzL2F0dHIyLnhtbC5lcnIKLWluZGV4IGM4YTljN2QuLjc3ZTM0MmUgMTAwNjQ0Ci0tLS0gYS9yZXN1bHQvZXJyb3JzL2F0dHIyLnhtbC5lcnIKLSsrKyBiL3Jlc3VsdC9lcnJvcnMvYXR0cjIueG1sLmVycgotQEAgLTEsNiArMSw5IEBACi0gLi90ZXN0L2Vycm9ycy9hdHRyMi54bWw6MjogcGFyc2VyIGVycm9yIDogQXR0VmFsdWU6ICcgZXhwZWN0ZWQKLSAKLSBeCi0tLi90ZXN0L2Vycm9ycy9hdHRyMi54bWw6MTogcGFyc2VyIGVycm9yIDogRXh0cmEgY29udGVudCBhdCB0aGUgZW5kIG9mIHRoZSBkb2N1bWVudAotLTxmb28gZm9vPSI+b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vCi0tIF4KLSsuL3Rlc3QvZXJyb3JzL2F0dHIyLnhtbDoyOiBwYXJzZXIgZXJyb3IgOiBhdHRyaWJ1dGVzIGNvbnN0cnVjdCBlcnJvcgotKwotK14KLSsuL3Rlc3QvZXJyb3JzL2F0dHIyLnhtbDoyOiBwYXJzZXIgZXJyb3IgOiBDb3VsZG4ndCBmaW5kIGVuZCBvZiBTdGFydCBUYWcgZm9vIGxpbmUgMQotKwotK14KLWRpZmYgLS1naXQgYS9yZXN1bHQvZXJyb3JzL25hbWUyLnhtbC5lcnIgYi9yZXN1bHQvZXJyb3JzL25hbWUyLnhtbC5lcnIKLWluZGV4IGE2NjQ5YTEuLjhhNmFjZWUgMTAwNjQ0Ci0tLS0gYS9yZXN1bHQvZXJyb3JzL25hbWUyLnhtbC5lcnIKLSsrKyBiL3Jlc3VsdC9lcnJvcnMvbmFtZTIueG1sLmVycgotQEAgLTEsNiArMSw5IEBACi0gLi90ZXN0L2Vycm9ycy9uYW1lMi54bWw6MjogcGFyc2VyIGVycm9yIDogU3BlY2lmaWNhdGlvbiBtYW5kYXRlIHZhbHVlIGZvciBhdHRyaWJ1dGUgZm9vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vbwotIAotIF4KLS0uL3Rlc3QvZXJyb3JzL25hbWUyLnhtbDoxOiBwYXJzZXIgZXJyb3IgOiBFeHRyYSBjb250ZW50IGF0IHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50Ci0tPGZvbyBmb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb28KLS0gXgotKy4vdGVzdC9lcnJvcnMvbmFtZTIueG1sOjI6IHBhcnNlciBlcnJvciA6IGF0dHJpYnV0ZXMgY29uc3RydWN0IGVycm9yCi0rCi0rXgotKy4vdGVzdC9lcnJvcnMvbmFtZTIueG1sOjI6IHBhcnNlciBlcnJvciA6IENvdWxkbid0IGZpbmQgZW5kIG9mIFN0YXJ0IFRhZyBmb28gbGluZSAxCi0rCi0rXgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItZml4X25vZGVfY29tcGFyaXNvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLWZpeF9ub2RlX2NvbXBhcmlzb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ZjZiZWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItZml4X25vZGVfY29tcGFyaXNvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLWxpYnhtbDItMi45LjQ6IEZpeCBjb21wYXJpc29uIHdpdGggcm9vdCBub2RlIGluIHhtbFhQYXRoQ21wTm9kZXMgYW5kIE5VTEwgcG9pbnRlciBkZXJlZiBpbiBYUG9pbnRlcgotCi14cGF0aDoKLSAtIENoZWNrIGZvciBlcnJvcnMgYWZ0ZXIgZXZhbHVhdGluZyBmaXJzdCBvcGVyYW5kLgotIC0gQWRkIHNhbml0eSBjaGVjayBmb3IgZW1wdHkgc3RhY2suCi0gLSBJbmNsdWRlIGNvbXBhcmF0aW9uIGluIGNoYW5nZXMgZnJvbSB4bWxYUGF0aENtcE5vZGVzRXh0IHRvIHhtbFhQYXRoQ21wTm9kZXMKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotIC0gW2h0dHBzOi8vZ2l0Lmdub21lLm9yZy9icm93c2UvbGlieG1sMi9jb21taXQvP2lkPWMxZDFmNzEyMTE5NDAzNjYwOGJmNTU1ZjA4ZDMwNjJhMzZmZDM0NGJdCi0gLSBbaHR0cHM6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9saWJ4bWwyL2NvbW1pdC8/aWQ9YTAwNTE5OTMzMGI4NmRhZGExOWQxNjJjYWUxNWVmOWJkY2I2YmFhOF0KLUNWRTogQ1ZFLTIwMTYtNTEzMQotU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAc2llbWVucy5jb20+Ci0KLWRpZmYgLS1naXQgYS9yZXN1bHQvWFBhdGgveHB0ci92aWRlcnJvciBiL3Jlc3VsdC9YUGF0aC94cHRyL3ZpZGVycm9yCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZDU4OTg4MgotLS0tIC9kZXYvbnVsbAotKysrIGIvcmVzdWx0L1hQYXRoL3hwdHIvdmlkZXJyb3IKLUBAIC0wLDAgKzEsNCBAQAotKwotKz09PT09PT09PT09PT09PT09PT09PT09PQotK0V4cHJlc3Npb246IHhwb2ludGVyKG5vbi1leGlzdGluZy1mbigpL3JhbmdlLXRvKGlkKCdjaGFwdGVyMicpKSkKLStPYmplY3QgaXMgZW1wdHkgKE5VTEwpCi1kaWZmIC0tZ2l0IGEvdGVzdC9YUGF0aC94cHRyL3ZpZGVycm9yIGIvdGVzdC9YUGF0aC94cHRyL3ZpZGVycm9yCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZGE4YzUzYgotLS0tIC9kZXYvbnVsbAotKysrIGIvdGVzdC9YUGF0aC94cHRyL3ZpZGVycm9yCi1AQCAtMCwwICsxIEBACi0reHBvaW50ZXIobm9uLWV4aXN0aW5nLWZuKCkvcmFuZ2UtdG8oaWQoJ2NoYXB0ZXIyJykpKQotZGlmZiAtLWdpdCBhL3hwYXRoLmMgYi94cGF0aC5jCi1pbmRleCAxMTNiY2U2Li5kOTkyODQxIDEwMDY0NAotLS0tIGEveHBhdGguYwotKysrIGIveHBhdGguYwotQEAgLTMzNDIsMTMgKzMzNDIsMTMgQEAgeG1sWFBhdGhDbXBOb2Rlcyh4bWxOb2RlUHRyIG5vZGUxLCB4bWxOb2RlUHRyIG5vZGUyKSB7Ci0gICAgICAqIGNvbXB1dGUgZGVwdGggdG8gcm9vdAotICAgICAgKi8KLSAgICAgZm9yIChkZXB0aDIgPSAwLCBjdXIgPSBub2RlMjtjdXItPnBhcmVudCAhPSBOVUxMO2N1ciA9IGN1ci0+cGFyZW50KSB7Ci0tCWlmIChjdXIgPT0gbm9kZTEpCi0rCWlmIChjdXItPnBhcmVudCA9PSBub2RlMSkKLSAJICAgIHJldHVybigxKTsKLSAJZGVwdGgyKys7Ci0gICAgIH0KLSAgICAgcm9vdCA9IGN1cjsKLSAgICAgZm9yIChkZXB0aDEgPSAwLCBjdXIgPSBub2RlMTtjdXItPnBhcmVudCAhPSBOVUxMO2N1ciA9IGN1ci0+cGFyZW50KSB7Ci0tCWlmIChjdXIgPT0gbm9kZTIpCi0rCWlmIChjdXItPnBhcmVudCA9PSBub2RlMikKLSAJICAgIHJldHVybigtMSk7Ci0gCWRlcHRoMSsrOwotICAgICB9Ci1AQCAtMTQwMDUsOSArMTQwMDUsMTQgQEAgeG1sWFBhdGhDb21wT3BFdmFsKHhtbFhQYXRoUGFyc2VyQ29udGV4dFB0ciBjdHh0LCB4bWxYUGF0aFN0ZXBPcFB0ciBvcCkKLSAgICAgICAgICAgICAgICAgeG1sTm9kZVNldFB0ciBvbGRzZXQ7Ci0gICAgICAgICAgICAgICAgIGludCBpLCBqOwotIAotLSAgICAgICAgICAgICAgICBpZiAob3AtPmNoMSAhPSAtMSkKLSsgICAgICAgICAgICAgICAgaWYgKG9wLT5jaDEgIT0gLTEpIHsKLSAgICAgICAgICAgICAgICAgICAgIHRvdGFsICs9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgeG1sWFBhdGhDb21wT3BFdmFsKGN0eHQsICZjb21wLT5zdGVwc1tvcC0+Y2gxXSk7Ci0rICAgICAgICAgICAgICAgICAgICBDSEVDS19FUlJPUjA7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgaWYgKGN0eHQtPnZhbHVlID09IE5VTEwpIHsKLSsgICAgICAgICAgICAgICAgICAgIFhQX0VSUk9SMChYUEFUSF9JTlZBTElEX09QRVJBTkQpOwotKyAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIGlmIChvcC0+Y2gyID09IC0xKQotICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh0b3RhbCk7Ci0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvcnVudGVzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9ydW50ZXN0LnBhdGNoCmluZGV4IDZlNTY4NTcuLmNiMTcxZDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9ydW50ZXN0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9ydW50ZXN0LnBhdGNoCkBAIC0yLDQ3ICsyLDI5IEBACiBQcmludCBhIHN0YW5kYXJkIHJlc3VsdCBsaW5lIGZvciBlYWNoIHRlc3QuCiAKIFNpZ25lZC1vZmYtYnk6IE1paGFlbGEgU2VuZHJlYSA8bWloYWVsYS5zZW5kcmVhQGVuZWEuY29tPgotU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAZW5lYS5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KIFVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKIAogZGlmZiAtdU5yIGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotLS0tIGEvTWFrZWZpbGUuYW0JMjAxNi0wNS0yMiAwMzo0OTowMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBiL01ha2VmaWxlLmFtCTIwMTctMDYtMTQgMTA6Mzg6NDMuMzgxMzA1Mzg1ICswMjAwCi1AQCAtMjAyLDEwICsyMDIsMjQgQEAKKy0tLSBhL01ha2VmaWxlLmFtCTIwMTctMDgtMjggMTU6MDE6MTQuMDAwMDAwMDAwICswMjAwCisrKysgYi9NYWtlZmlsZS5hbQkyMDE3LTA5LTA1IDA4OjA2OjA1Ljc1MjI4NzMyMyArMDIwMAorQEAgLTIwMiw2ICsyMDIsMTUgQEAKICAjdGVzdE9PTV9ERVBFTkRFTkNJRVMgPSAkKERFUFMpCiAgI3Rlc3RPT01fTERBREQ9ICQoTERBRERTKQogIAogK2luc3RhbGwtcHRlc3Q6CiArCUAoaWYgWyAtZCAubGlicyBdIDsgdGhlbiBjZCAubGliczsgZmk7IFwKLSsJaW5zdGFsbCAkKG5vaW5zdF9QUk9HUkFNUykgJChERVNURElSKSkKKysJaW5zdGFsbCAkKGNoZWNrX1BST0dSQU1TKSAkKERFU1RESVIpKQogKwljcCAtciAkKHNyY2RpcikvdGVzdCAkKERFU1RESVIpCiArCWNwIC1yICQoc3JjZGlyKS9yZXN1bHQgJChERVNURElSKQogKwljcCAtciAkKHNyY2RpcikvcHl0aG9uICQoREVTVERJUikKICsJY3AgTWFrZWZpbGUgJChERVNURElSKQogKwlzZWQgLWkgLWUgJ3N8Xk1ha2VmaWxlOnxfTWFrZWZpbGU6fCcgJChERVNURElSKS9NYWtlZmlsZQogKwotIHJ1bnRlc3RzOgorIHJ1bnRlc3RzOiBydW50ZXN0JChFWEVFWFQpIHRlc3RyZWN1cnNlJChFWEVFWFQpIHRlc3RhcGkkKEVYRUVYVCkgXAorICAgICAgICAgICB0ZXN0Y2hhciQoRVhFRVhUKSB0ZXN0ZGljdCQoRVhFRVhUKSBydW54bWxjb25mJChFWEVFWFQpCiAgCVsgLWQgdGVzdCAgIF0gfHwgJChMTl9TKSAkKHNyY2RpcikvdGVzdCAgIC4KLSAJWyAtZCByZXN1bHQgXSB8fCAkKExOX1MpICQoc3JjZGlyKS9yZXN1bHQgLgotLQkkKENIRUNLRVIpIC4vcnVudGVzdCQoRVhFRVhUKSAmJiAkKENIRUNLRVIpIC4vdGVzdHJlY3Vyc2UkKEVYRUVYVCkgJiYkKENIRUNLRVIpIC4vdGVzdGFwaSQoRVhFRVhUKSAmJiAkKENIRUNLRVIpIC4vdGVzdGNoYXIkKEVYRUVYVCkmJiAkKENIRUNLRVIpIC4vdGVzdGRpY3QkKEVYRUVYVCkgJiYgJChDSEVDS0VSKSAuL3J1bnhtbGNvbmYkKEVYRUVYVCkKLSsJJChDSEVDS0VSKSAuL3J1bnRlc3QkKEVYRUVYVCkgJiYgXAotKwkgICAgJChDSEVDS0VSKSAuL3Rlc3RyZWN1cnNlJChFWEVFWFQpICYmIFwKLSsJICAgIEFTQU5fT1BUSU9OUz0iJCRBU0FOX09QVElPTlM6ZGV0ZWN0X2xlYWtzPTAiICQoQ0hFQ0tFUikgLi90ZXN0YXBpJChFWEVFWFQpICYmIFwKLSsJICAgICQoQ0hFQ0tFUikgLi90ZXN0Y2hhciQoRVhFRVhUKSAmJiBcCi0rCSAgICAkKENIRUNLRVIpIC4vdGVzdGRpY3QkKEVYRUVYVCkgJiYgXAotKwkgICAgJChDSEVDS0VSKSAuL3J1bnhtbGNvbmYkKEVYRUVYVCkKLSAJQChpZiBbICIkKFBZVEhPTl9TVUJESVIpIiAhPSAiIiBdIDsgdGhlbiBjZCBweXRob24gOyBcCi0gCSAgICAkKE1BS0UpIHRlc3RzIDsgZmkpCi0gCi1AQCAtMjI5LDcgKzI0Myw3IEBACi0gCi0gQVBJdGVzdHM6IHRlc3RhcGkkKEVYRUVYVCkKLSAJQGVjaG8gIiMjIFJ1bm5pbmcgdGhlIEFQSSByZWdyZXNzaW9uIHRlc3RzIHRoaXMgbWF5IHRha2UgYSBsaXR0bGUgd2hpbGUiCi0tCS1AKCQoQ0hFQ0tFUikgJCh0b3BfYnVpbGRkaXIpL3Rlc3RhcGkgLXEpCi0rCS1AKEFTQU5fT1BUSU9OUz0iJCRBU0FOX09QVElPTlM6ZGV0ZWN0X2xlYWtzPTAiICQoQ0hFQ0tFUikgJCh0b3BfYnVpbGRkaXIpL3Rlc3RhcGkgLXEpCi0gCi0gSFRNTHRlc3RzIDogdGVzdEhUTUwkKEVYRUVYVCkKLSAJQChlY2hvID4gLm1lbWR1bXApCisKIGRpZmYgLXVOciBhL3J1bnN1aXRlLmMgYi9ydW5zdWl0ZS5jCiAtLS0gYS9ydW5zdWl0ZS5jCTIwMTMtMDQtMTIgMTY6MTc6MTEuNDYyODIzMjM4ICswMjAwCiArKysgYi9ydW5zdWl0ZS5jCTIwMTMtMDQtMTcgMTQ6MDc6MjQuMzUyNjkzMjExICswMjAwCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhZGIyOWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyXzIuOS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLVNVTU1BUlkgPSAiWE1MIEMgUGFyc2VyIExpYnJhcnkgYW5kIFRvb2xraXQiCi1ERVNDUklQVElPTiA9ICJUaGUgWE1MIFBhcnNlciBMaWJyYXJ5IGFsbG93cyBmb3IgbWFuaXB1bGF0aW9uIG9mIFhNTCBmaWxlcy4gIExpYnhtbDIgZXhwb3J0cyBQdXNoIGFuZCBQdWxsIHR5cGUgcGFyc2VyIGludGVyZmFjZXMgZm9yIGJvdGggWE1MIGFuZCBIVE1MLiAgSXQgY2FuIGRvIERURCB2YWxpZGF0aW9uIGF0IHBhcnNlIHRpbWUsIG9uIGEgcGFyc2VkIGRvY3VtZW50IGluc3RhbmNlIG9yIHdpdGggYW4gYXJiaXRyYXJ5IERURC4gIExpYnhtbDIgaW5jbHVkZXMgY29tcGxldGUgWFBhdGgsIFhQb2ludGVyIGFuZCBYaW5jbHVkZSBpbXBsZW1lbnRhdGlvbnMuICBJdCBhbHNvIGhhcyBhIFNBWCBsaWtlIGludGVyZmFjZSwgd2hpY2ggaXMgZGVzaWduZWQgdG8gYmUgY29tcGF0aWJsZSB3aXRoIEV4cGF0LiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cueG1sc29mdC5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL2J1Z2xpc3QuY2dpP3Byb2R1Y3Q9bGlieG1sMiIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weXJpZ2h0O21kNT0yMDQ0NDE3ZTJlNTAwNmI2NWE4YjkwNjdiNjgzZmNmMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9oYXNoLmM7YmVnaW5saW5lPTY7ZW5kbGluZT0xNTttZDU9OTZmNzI5NjYwNWVhZTgwNzY3MGZiMDg5NDc4Mjk5NjkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGlzdC5jO2JlZ2lubGluZT00O2VuZGxpbmU9MTM7bWQ1PWNkYmZhM2RlZTUxYzA5OWVkYjA0ZTM5Zjc2MmVlOTA3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3RyaW8uYztiZWdpbmxpbmU9NTtlbmRsaW5lPTE0O21kNT02YzAyNTc1M2M4NmQ5NTg3MjJlYzc2ZTk0Y2FlOTMyZSIKLQotREVQRU5EUyA9ICJ6bGliIHZpcnR1YWwvbGliaWNvbnYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy54bWxzb2Z0Lm9yZy9zb3VyY2VzL2xpYnhtbDItJHtQVn0udGFyLmd6O25hbWU9bGlidGFyIFwKLSAgICAgICAgICAgaHR0cDovL3d3dy53My5vcmcvWE1ML1Rlc3QveG1sdHMyMDA4MDgyNy50YXIuZ3o7bmFtZT10ZXN0dGFyIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnhtbC02NGJpdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hbnNpZGVjbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW50ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9weXRob24tc2l0ZXBhY2thZ2VzLWRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ4bWwtbTQtdXNlLXBrZ2NvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ4bWwyLWZpeF9ub2RlX2NvbXBhcmlzb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGlieG1sMi1DVkUtMjAxNi01MTMxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnhtbDItQ1ZFLTIwMTYtNDY1OC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ4bWwyLWZpeF9OVUxMX3BvaW50ZXJfZGVyZWZzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnhtbDItZml4X2FuZF9zaW1wbGlmeV94bWxQYXJzZVN0YXJ0VGFnMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ4bWwyLUNWRS0yMDE3LTkwNDdfQ1ZFLTIwMTctOTA0OC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ4bWwyLUNWRS0yMDE3LTkwNDlfQ1ZFLTIwMTctOTA1MC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ4bWwyLUNWRS0yMDE3LTU5NjkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGlieG1sMi1DVkUtMjAxNy0wNjYzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnhtbDItQ1ZFLTIwMTctODg3Mi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2UtcHRlc3QtcnVuLXRoZS1weXRob24tdGVzdHMtaWYtcHl0aG9uLWlzLWVuYWJsZWQucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbGlidGFyLm1kNXN1bV0gPSAiYWUyNDkxNjVjMTczYjFmZjM4NmVlOGFkNjc2ODE1ZjUiCi1TUkNfVVJJW2xpYnRhci5zaGEyNTZzdW1dID0gImZmYjkxMTE5MWU1MDliOTY2ZGViNTVkZTcwNTM4N2YxNDE1NmUxYTU2YjIxODI0MzU3Y2RmMDA1MzIzMzYzM2MiCi1TUkNfVVJJW3Rlc3R0YXIubWQ1c3VtXSA9ICJhZTNkMWViZTAwMGEzOTcyYWZhMTA0Y2E3ZjBlMWI0YSIKLVNSQ19VUklbdGVzdHRhci5zaGEyNTZzdW1dID0gIjk2MTUxNjg1Y2VjOTk3ZTFmOWYzMzg3ZTM2MjZkNjFlNjI4NGQ0ZDZlNjZlMGU0NDBjMjA5Mjg2YzAzZTljYzciCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0veG1sMi1jb25maWciCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJweXRob24gXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAotIgotUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0td2l0aC1weXRob249JHtQWVRIT059LC0td2l0aG91dC1weXRob24scHl0aG9uMyIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWctZGlzYWJsZWQgcHRlc3QKLQotaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAncHl0aG9uM25hdGl2ZScsICcnLCBkKX0KLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ2xpYmdjYyBweXRob24zLWNvcmUgcHl0aG9uMy1hcmdwYXJzZSBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1zaGVsbCBweXRob24zLXNpZ25hbCBweXRob24zLXN0cmluZ29sZCBweXRob24zLXRocmVhZGluZyBweXRob24zLXVuaXR0ZXN0ICR7UE59LXB5dGhvbicsICcnLCBkKX0iCi0KLVJERVBFTkRTXyR7UE59LXB5dGhvbiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ3B5dGhvbjMtY29yZScsICcnLCBkKX0iCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy1nY29udi1lYmNkaWMtdXMgZ2xpYmMtZ2NvbnYtaWJtMTE0MSBnbGliYy1nY29udi1pc284ODU5LTUiCi0KLWV4cG9ydCBQWVRIT05fU0lURV9QQUNLQUdFUz0iJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCi0KLSMgV0FSTklORzogemxpYiBpcyByZXF1aXJlZCBmb3IgUlBNIHVzZQotRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1kZWJ1ZyAtLXdpdGhvdXQtbGVnYWN5IC0td2l0aC1jYXRhbG9nIC0td2l0aG91dC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC1mZXhjZXB0aW9ucyIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LWxlZ2FjeSAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtemxpYiIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiLS13aXRob3V0LWxlZ2FjeSAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtemxpYiIKLUVYVFJBX09FQ09ORl9saW51eHN0ZGJhc2UgPSAiLS13aXRoLWRlYnVnIC0td2l0aC1sZWdhY3kgLS13aXRoLWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLXpsaWIiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICAjIGF1dG9uYW1lciB3b3VsZCBjYWxsIHRoaXMgbGlieG1sMi0yLCBidXQgd2UgZG9uJ3Qgd2FudCB0aGF0Ci0gICAgaWYgZC5nZXRWYXIoJ0RFQklBTl9OQU1FUycpOgotICAgICAgICBkLnNldFZhcignUEtHX2xpYnhtbDInLCAnJHtNTFBSRUZJWH1saWJ4bWwyJykKLX0KLQotUEFDS0FHRVMgKz0gIiR7UE59LXV0aWxzICR7UE59LXB5dGhvbiIKLQotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmEiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS94bWwyQ29uZi5zaCAke2xpYmRpcn0vY21ha2UvKiIKLUZJTEVTXyR7UE59LXV0aWxzICs9ICIke2JpbmRpcn0vKiIKLUZJTEVTXyR7UE59LXB5dGhvbiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQkjIGV4ZWN1dGFibGVzIHRha2UgbG9uZ2VyIHRvIHBhY2thZ2U6IHRoZXNlIHNob3VsZCBub3QgYmUgZXhlY3V0YWJsZQotCWZpbmQgJHtXT1JLRElSfS94bWxjb25mLyAtdHlwZSBmIC1leGVjIGNobW9kIC14IHt9IFwrCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotCWNwIC1yICR7V09SS0RJUn0veG1sY29uZiAke0R9JHtQVEVTVF9QQVRIfQotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdweXRob24nLCBkKX0iIF07IHRoZW4KLQkJc2VkIC1pIC1lICdzfF5cKFBZVEhPTiA9IFwpLip8XDEke1VTUkJJTlBBVEh9LyR7UFlUSE9OX1BOfXwnIFwKLQkJICAgICR7RH0ke1BURVNUX1BBVEh9L3B5dGhvbi90ZXN0cy9NYWtlZmlsZQotCQlncmVwIC1sclogJyMhL3Vzci9iaW4vcHl0aG9uJyAke0R9JHtQVEVTVF9QQVRIfS9weXRob24gfAotCQkJeGFyZ3MgLTAgc2VkIC1pIC1lICdzfC91c3IvYmluL3B5dGhvbnwke1VTUkJJTlBBVEh9LyR7UFlUSE9OX1BOfXwnCi0JZmkKLQkjUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcyBmcm9tIHZhcmlvdXMgTWFrZWZpbGVzCi0JZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0iIC1uYW1lIE1ha2VmaWxlIC10eXBlIGYgLWV4ZWMgXAotCSAgICBzZWQgLWkgXAotCSAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCi0JICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKLQkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKLQkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCi0JICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCi0JICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAotCSAgICAtZSAnL15SRUxEQVRFL2QnIFwKLQkgICAge30gKwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgewotCSMgRG9jcyBhcmUgbm90IG5lZWRlZCBpbiB0aGUgbmF0aXZlIGNhc2UKLQlybSAke0R9JHtkYXRhZGlyfS9ndGstZG9jIC1yZgotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZiOTBhNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMl8yLjkuNy5iYgpAQCAtMCwwICsxLDEwNSBAQAorU1VNTUFSWSA9ICJYTUwgQyBQYXJzZXIgTGlicmFyeSBhbmQgVG9vbGtpdCIKK0RFU0NSSVBUSU9OID0gIlRoZSBYTUwgUGFyc2VyIExpYnJhcnkgYWxsb3dzIGZvciBtYW5pcHVsYXRpb24gb2YgWE1MIGZpbGVzLiAgTGlieG1sMiBleHBvcnRzIFB1c2ggYW5kIFB1bGwgdHlwZSBwYXJzZXIgaW50ZXJmYWNlcyBmb3IgYm90aCBYTUwgYW5kIEhUTUwuICBJdCBjYW4gZG8gRFREIHZhbGlkYXRpb24gYXQgcGFyc2UgdGltZSwgb24gYSBwYXJzZWQgZG9jdW1lbnQgaW5zdGFuY2Ugb3Igd2l0aCBhbiBhcmJpdHJhcnkgRFRELiAgTGlieG1sMiBpbmNsdWRlcyBjb21wbGV0ZSBYUGF0aCwgWFBvaW50ZXIgYW5kIFhpbmNsdWRlIGltcGxlbWVudGF0aW9ucy4gIEl0IGFsc28gaGFzIGEgU0FYIGxpa2UgaW50ZXJmYWNlLCB3aGljaCBpcyBkZXNpZ25lZCB0byBiZSBjb21wYXRpYmxlIHdpdGggRXhwYXQuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy54bWxzb2Z0Lm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvYnVnbGlzdC5jZ2k/cHJvZHVjdD1saWJ4bWwyIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Db3B5cmlnaHQ7bWQ1PTIwNDQ0MTdlMmU1MDA2YjY1YThiOTA2N2I2ODNmY2YxIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2hhc2guYztiZWdpbmxpbmU9NjtlbmRsaW5lPTE1O21kNT05NmY3Mjk2NjA1ZWFlODA3NjcwZmIwODk0NzgyOTk2OSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saXN0LmM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xMzttZDU9Y2RiZmEzZGVlNTFjMDk5ZWRiMDRlMzlmNzYyZWU5MDcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdHJpby5jO2JlZ2lubGluZT01O2VuZGxpbmU9MTQ7bWQ1PTZjMDI1NzUzYzg2ZDk1ODcyMmVjNzZlOTRjYWU5MzJlIgorCitERVBFTkRTID0gInpsaWIgdmlydHVhbC9saWJpY29udiIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LnhtbHNvZnQub3JnL3NvdXJjZXMvbGlieG1sMi0ke1BWfS50YXIuZ3o7bmFtZT1saWJ0YXIgXAorICAgICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9YTUwvVGVzdC94bWx0czIwMDgwODI3LnRhci5nejtuYW1lPXRlc3R0YXIgXAorICAgICAgICAgICBmaWxlOi8vbGlieG1sLTY0Yml0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Fuc2lkZWNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bnRlc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL3B5dGhvbi1zaXRlcGFja2FnZXMtZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpYnhtbC1tNC11c2UtcGtnY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZS1wdGVzdC1ydW4tdGhlLXB5dGhvbi10ZXN0cy1pZi1weXRob24taXMtZW5hYmxlZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtZXhlY3V0aW9uLW9mLXB0ZXN0cy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVtsaWJ0YXIubWQ1c3VtXSA9ICI4OTY2MDg2NDFhMDhiNDY1MDk4YTQwZGRmNTFjZWZiYSIKK1NSQ19VUklbbGlidGFyLnNoYTI1NnN1bV0gPSAiZjYzYzVlN2QzMDM2MmVkMjhiMzhiZmExYWM2MzEzZjlhODAyMzA3MjBiN2ZiNmM4MDU3NWVlYWIzZmY1OTAwYyIKK1NSQ19VUklbdGVzdHRhci5tZDVzdW1dID0gImFlM2QxZWJlMDAwYTM5NzJhZmExMDRjYTdmMGUxYjRhIgorU1JDX1VSSVt0ZXN0dGFyLnNoYTI1NnN1bV0gPSAiOTYxNTE2ODVjZWM5OTdlMWY5ZjMzODdlMzYyNmQ2MWU2Mjg0ZDRkNmU2NmUwZTQ0MGMyMDkyODZjMDNlOWNjNyIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS94bWwyLWNvbmZpZyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbiBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS13aXRoLXB5dGhvbj0ke1BZVEhPTn0sLS13aXRob3V0LXB5dGhvbixweXRob24zIgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZy1kaXNhYmxlZCBwdGVzdAorCitpbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdweXRob24zbmF0aXZlJywgJycsIGQpfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAnbGliZ2NjIHB5dGhvbjMtY29yZSBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1zaGVsbCAgcHl0aG9uMy1zdHJpbmdvbGQgcHl0aG9uMy10aHJlYWRpbmcgcHl0aG9uMy11bml0dGVzdCAke1BOfS1weXRob24nLCAnJywgZCl9IgorCitSREVQRU5EU18ke1BOfS1weXRob24gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdweXRob24zLWNvcmUnLCAnJywgZCl9IgorCitSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtZ2NvbnYtZWJjZGljLXVzIGdsaWJjLWdjb252LWlibTExNDEgZ2xpYmMtZ2NvbnYtaXNvODg1OS01IgorCitleHBvcnQgUFlUSE9OX1NJVEVfUEFDS0FHRVM9IiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorCisjIFdBUk5JTkc6IHpsaWIgaXMgcmVxdWlyZWQgZm9yIFJQTSB1c2UKK0VYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtZGVidWcgLS13aXRob3V0LWxlZ2FjeSAtLXdpdGgtY2F0YWxvZyAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtZmV4Y2VwdGlvbnMiCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC1sZWdhY3kgLS13aXRob3V0LWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLXpsaWIiCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlc2RrID0gIi0td2l0aG91dC1sZWdhY3kgLS13aXRob3V0LWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLXpsaWIiCitFWFRSQV9PRUNPTkZfbGludXhzdGRiYXNlID0gIi0td2l0aC1kZWJ1ZyAtLXdpdGgtbGVnYWN5IC0td2l0aC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC16bGliIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgIyBhdXRvbmFtZXIgd291bGQgY2FsbCB0aGlzIGxpYnhtbDItMiwgYnV0IHdlIGRvbid0IHdhbnQgdGhhdAorICAgIGlmIGQuZ2V0VmFyKCdERUJJQU5fTkFNRVMnKToKKyAgICAgICAgZC5zZXRWYXIoJ1BLR19saWJ4bWwyJywgJyR7TUxQUkVGSVh9bGlieG1sMicpCit9CisKK1BBQ0tBR0VTICs9ICIke1BOfS11dGlscyAke1BOfS1weXRob24iCisKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi5hIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0veG1sMkNvbmYuc2ggJHtsaWJkaXJ9L2NtYWtlLyoiCitGSUxFU18ke1BOfS11dGlscyArPSAiJHtiaW5kaXJ9LyoiCitGSUxFU18ke1BOfS1weXRob24gKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJIyBleGVjdXRhYmxlcyB0YWtlIGxvbmdlciB0byBwYWNrYWdlOiB0aGVzZSBzaG91bGQgbm90IGJlIGV4ZWN1dGFibGUKKwlmaW5kICR7V09SS0RJUn0veG1sY29uZi8gLXR5cGUgZiAtZXhlYyBjaG1vZCAteCB7fSBcKworfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgY2hlY2stYW0KK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisJY3AgLXIgJHtXT1JLRElSfS94bWxjb25mICR7RH0ke1BURVNUX1BBVEh9CisJaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsIGQpfSIgXTsgdGhlbgorCQlzZWQgLWkgLWUgJ3N8XlwoUFlUSE9OID0gXCkuKnxcMSR7VVNSQklOUEFUSH0vJHtQWVRIT05fUE59fCcgXAorCQkgICAgJHtEfSR7UFRFU1RfUEFUSH0vcHl0aG9uL3Rlc3RzL01ha2VmaWxlCisJCWdyZXAgLWxyWiAnIyEvdXNyL2Jpbi9weXRob24nICR7RH0ke1BURVNUX1BBVEh9L3B5dGhvbiB8CisJCQl4YXJncyAtMCBzZWQgLWkgLWUgJ3N8L3Vzci9iaW4vcHl0aG9ufCR7VVNSQklOUEFUSH0vJHtQWVRIT05fUE59fCcKKwlmaQorCSNSZW1vdmUgYnVpbGQgaG9zdCByZWZlcmVuY2VzIGZyb20gdmFyaW91cyBNYWtlZmlsZXMKKwlmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLW5hbWUgTWFrZWZpbGUgLXR5cGUgZiAtZXhlYyBcCisJICAgIHNlZCAtaSBcCisJICAgIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKKwkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorCSAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKwkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKwkgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisJICAgIC1lICcvXlJFTERBVEUvZCcgXAorCSAgICB7fSArCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisJIyBEb2NzIGFyZSBub3QgbmVlZGVkIGluIHRoZSBuYXRpdmUgY2FzZQorCXJtICR7RH0ke2RhdGFkaXJ9L2d0ay1kb2MgLXJmCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2R1bW15LXNkay1wYWNrYWdlLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2R1bW15LXNkay1wYWNrYWdlLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDgzZGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvZHVtbXktc2RrLXBhY2thZ2UuaW5jCkBAIC0wLDAgKzEsMjQgQEAKK1NVTU1BUlkgPSAiRHVtbXkgcGFja2FnZXMgd2hpY2ggaGFuZGxlIGV4Y2x1ZGluZyBwYWNrYWdlcyBmcm9tIHRoZSBzZGssIGUuZy4gZW5zdXJpbmcgcGVybCBpcyBleGNsdWRlZCBmcm9tIGJ1aWxkdG9vbHMiCitMSUNFTlNFID0gIk1JVCIKKworaW5oZXJpdCBhbGxhcmNoCisKK3B5dGhvbigpIHsKKyAgICAjIFB1dCB0aGUgcGFja2FnZSBzb21ld2hlcmUgc2VwYXJhdGUgdG8gZW5zdXJlIGl0J3MgbmV2ZXIgdXNlZCBleGNlcHQKKyAgICAjIHdoZW4gd2Ugd2FudCBpdAorICAgICMgKG5vdGUgdGhhdCB3ZSBoYXZlIHRvIGRvIHRoaXMgaW4gYW5vbnltb3VzIHB5dGhvbiBoZXJlIHRvIGF2b2lkCisgICAgIyBhbGxhcmNoLmJiY2xhc3MgZGlzYWJsaW5nIGl0c2VsZikKKyAgICBkLnNldFZhcignUEFDS0FHRV9BUkNIJywgJyR7RFVNTVlBUkNIfScpCit9CisKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisKK1BSW3ZhcmRlcHNdICs9ICJEVU1NWVBST1ZJREVTIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKKyAgICBwID0gZC5nZXRWYXIoIlBOIikKKyAgICBkLmFwcGVuZFZhcigiUlBST1ZJREVTXyVzIiAlIHAsICIke0RVTU1ZUFJPVklERVN9IikKKyAgICAjZC5hcHBlbmRWYXIoIlJDT05GTElDVFNfJXMiICUgcCwgIiR7RFVNTVlQUk9WSURFU30iKQorICAgICNkLmFwcGVuZFZhcigiUlJFUExBQ0VTXyVzIiAlIHAsICIke0RVTU1ZUFJPVklERVN9IikKK30KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS1lbnZpcm9ubWVudC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtZW52aXJvbm1lbnQuYmIKaW5kZXggMjlkYTEyMS4uMDlmNzU3YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS1lbnZpcm9ubWVudC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLWVudmlyb25tZW50LmJiCkBAIC01NSw2ICs1NSw4IEBACiAKIAkjIEFkZCB2ZXJzaW9uIGluZm9ybWF0aW9uCiAJdG9vbGNoYWluX2NyZWF0ZV9zZGtfdmVyc2lvbiAke1NES19PVVRQVVR9LyR7U0RLUEFUSH0vdmVyc2lvbi0ke1JFQUxfTVVMVElNQUNIX1RBUkdFVF9TWVN9CisKKwl0b29sY2hhaW5fY3JlYXRlX3Bvc3RfcmVsb2NhdGVfc2NyaXB0ICR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS9wb3N0LXJlbG9jYXRlLXNldHVwLnNoCiB9CiAKIGRvX2luc3RhbGwoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLXdvcmxkLXBrZ2RhdGEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLXdvcmxkLXBrZ2RhdGEuYmIKaW5kZXggMDJhYmQ4YS4uYjI5OTg2MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS13b3JsZC1wa2dkYXRhLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtd29ybGQtcGtnZGF0YS5iYgpAQCAtMyw2ICszLDggQEAKIAogSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKIAorUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKKwogYWRkdGFzayBkb19hbGxwYWNrYWdlZGF0YSBiZWZvcmUgZG9fYnVpbGQKIGRvX2FsbHBhY2thZ2VkYXRhKCkgewogCToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL25hdGl2ZXNkay1idWlsZHRvb2xzLXBlcmwtZHVtbXkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9uYXRpdmVzZGstYnVpbGR0b29scy1wZXJsLWR1bW15LmJiCmluZGV4IDBiNThhMDIuLmY1YmNiODIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL25hdGl2ZXNkay1idWlsZHRvb2xzLXBlcmwtZHVtbXkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbmF0aXZlc2RrLWJ1aWxkdG9vbHMtcGVybC1kdW1teS5iYgpAQCAtMSwyNiArMSwxMSBAQAotU1VNTUFSWSA9ICJEdW1teSBwYWNrYWdlIHdoaWNoIGVuc3VyZXMgcGVybCBpcyBleGNsdWRlZCBmcm9tIGJ1aWxkdG9vbHMiCi1MSUNFTlNFID0gIk1JVCIKK0RVTU1ZQVJDSCA9ICJidWlsZHRvb2xzLWR1bW15LSR7U0RLUEtHU1VGRklYfSIKIAotaW5oZXJpdCBhbGxhcmNoCitEVU1NWVBST1ZJREVTID0gIlwKKyAgICBuYXRpdmVzZGstcGVybCBcCisgICAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWZpbGUtcGF0aCIKIAogUFIgPSAicjIiCiAKLXB5dGhvbigpIHsKLSAgICAjIFB1dCB0aGUgcGFja2FnZSBzb21ld2hlcmUgc2VwYXJhdGUgdG8gZW5zdXJlIGl0J3MgbmV2ZXIgdXNlZCBleGNlcHQKLSAgICAjIHdoZW4gd2Ugd2FudCBpdAotICAgICMgKG5vdGUgdGhhdCB3ZSBoYXZlIHRvIGRvIHRoaXMgaW4gYW5vbnltb3VzIHB5dGhvbiBoZXJlIHRvIGF2b2lkCi0gICAgIyBhbGxhcmNoLmJiY2xhc3MgZGlzYWJsaW5nIGl0c2VsZikKLSAgICBkLnNldFZhcignUEFDS0FHRV9BUkNIJywgJ2J1aWxkdG9vbHMtZHVtbXktJHtTREtQS0dTVUZGSVh9JykKLX0KK3JlcXVpcmUgZHVtbXktc2RrLXBhY2thZ2UuaW5jCiAKLVBFUkxQQUNLQUdFUyA9ICJuYXRpdmVzZGstcGVybCBcCi0gICAgICAgICAgICAgICAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWZpbGUtcGF0aCIKLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQoKSB7Ci0gICAgZC5hcHBlbmRWYXIoZC5leHBhbmQoJ1JQUk9WSURFU18ke1BOfScpLCAnJHtQRVJMUEFDS0FHRVN9JykKLSAgICBkLmFwcGVuZFZhcihkLmV4cGFuZCgnUkNPTkZMSUNUU18ke1BOfScpLCAnJHtQRVJMUEFDS0FHRVN9JykKLSAgICBkLmFwcGVuZFZhcihkLmV4cGFuZCgnUlJFUExBQ0VTXyR7UE59JyksICcke1BFUkxQQUNLQUdFU30nKQotfQotCitpbmhlcml0IG5hdGl2ZXNkawpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbmF0aXZlc2RrLXNkay1wcm92aWRlcy1kdW1teS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL25hdGl2ZXNkay1zZGstcHJvdmlkZXMtZHVtbXkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFhNzI3ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL25hdGl2ZXNkay1zZGstcHJvdmlkZXMtZHVtbXkuYmIKQEAgLTAsMCArMSwxNSBAQAorRFVNTVlBUkNIID0gInNkay1wcm92aWRlcy1kdW1teS0ke1NES1BLR1NVRkZJWH0iCisKKyMgQWRkIC9iaW4vc2g/CitEVU1NWVBST1ZJREVTID0gIlwKKyAgICAvYmluL2Jhc2ggXAorICAgIC91c3IvYmluL2VudiBcCisgICAgL3Vzci9iaW4vcGVybCBcCisgICAgcGtnY29uZmlnIFwKKyAgICBsaWJHTC5zbygpKDY0Yml0KSBcCisgICAgbGliR0wuc28gXAorIgorCityZXF1aXJlIGR1bW15LXNkay1wYWNrYWdlLmluYworCitpbmhlcml0IG5hdGl2ZXNkawpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvc2lnbmluZy1rZXlzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvc2lnbmluZy1rZXlzLmJiCmluZGV4IDJjMWNjMzguLjFlMWM3ZTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3NpZ25pbmcta2V5cy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9zaWduaW5nLWtleXMuYmIKQEAgLTQxLDYgKzQxLDcgQEAKIH0KIGRvX2dldF9wdWJsaWNfa2V5c1tjbGVhbmRpcnNdID0gIiR7Qn0iCiBhZGR0YXNrIGdldF9wdWJsaWNfa2V5cyBiZWZvcmUgZG9faW5zdGFsbAorZG9fZ2V0X3B1YmxpY19rZXlzW2RlcGVuZHNdICs9ICJnbnVwZy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIAogZG9faW5zdGFsbCAoKSB7CiAgICAgaWYgWyAtZiAiJHtCfS9ycG0ta2V5IiBdOyB0aGVuCkBAIC02OCw3ICs2OSw4IEBACiBkb19kZXBsb3lbc3N0YXRlLW91dHB1dGRpcnNdID0gIiR7REVQTE9ZX0RJUl9SUE19IgogIyBjbGVhbmRpcnMgc2hvdWxkIHBvc3NpYmx5IGJlIGluIGRlcGxveS5iYmNsYXNzIGJ1dCB3ZSBuZWVkIGl0CiBkb19kZXBsb3lbY2xlYW5kaXJzXSA9ICIke0RFUExPWURJUn0iCi0jIGNsZWFyIHN0YW1wLWV4dHJhLWluZm8gc2luY2UgTUFDSElORSBpcyBub3JtYWxseSBwdXQgdGhlcmUgYnkgZGVwbG95LmJiY2xhc3MKKyMgY2xlYXIgc3RhbXAtZXh0cmEtaW5mbyBzaW5jZSBNQUNISU5FX0FSQ0ggaXMgbm9ybWFsbHkgcHV0IHRoZXJlIGJ5CisjIGRlcGxveS5iYmNsYXNzCiBkb19kZXBsb3lbc3RhbXAtZXh0cmEtaW5mb10gPSAiIgogYWRkdGFzayBkZXBsb3kgYWZ0ZXIgZG9fZ2V0X3B1YmxpY19rZXlzCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3RhcmdldC1zZGstcHJvdmlkZXMtZHVtbXkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS90YXJnZXQtc2RrLXByb3ZpZGVzLWR1bW15LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNGQxNWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS90YXJnZXQtc2RrLXByb3ZpZGVzLWR1bW15LmJiCkBAIC0wLDAgKzEsMTEgQEAKK0RVTU1ZQVJDSCA9ICJzZGstcHJvdmlkZXMtZHVtbXktdGFyZ2V0IgorCitEVU1NWVBST1ZJREVTID0gIlwKKyAgICAvYmluL3NoIFwKKyAgICAvYmluL2Jhc2ggXAorICAgIC91c3IvYmluL2VudiBcCisgICAgL3Vzci9iaW4vcGVybCBcCisgICAgcGtnY29uZmlnIFwKKyIKKworcmVxdWlyZSBkdW1teS1zZGstcGFja2FnZS5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3Rlc3RleHBvcnQtdGFyYmFsbC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3Rlc3RleHBvcnQtdGFyYmFsbC5iYgppbmRleCA3MmY1NTMxLi5jMzhhYzkwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS90ZXN0ZXhwb3J0LXRhcmJhbGwuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvdGVzdGV4cG9ydC10YXJiYWxsLmJiCkBAIC0xMCw3ICsxMCwxMyBAQAogCiBUT09MQ0hBSU5fSE9TVF9UQVNLID89ICIke1RFU1RfRVhQT1JUX1NES19QQUNLQUdFU30iCiAKLVNES19QQUNLQUdFX0FSQ0hTICs9ICJ0ZXNleHBvcnQtdG9vbHMtJHtTREtQS0dTVUZGSVh9IgorTVVMVElNQUNIX1RBUkdFVF9TWVMgPSAiJHtTREtfQVJDSH0tbmF0aXZlc2RrJHtTREtfVkVORE9SfS0ke1NES19PU30iCitQQUNLQUdFX0FSQ0ggPSAiJHtTREtfQVJDSH1fJHtTREtfT1N9IgorUEFDS0FHRV9BUkNIUyA9ICIiCitUQVJHRVRfQVJDSCA9ICJub25lIgorVEFSR0VUX09TID0gIm5vbmUiCisKK1NES19QQUNLQUdFX0FSQ0hTICs9ICJ0ZXN0ZXhwb3J0LXRvb2xzLSR7U0RLUEtHU1VGRklYfSIKIAogVE9PTENIQUlOX09VVFBVVE5BTUUgPz0gIiR7VEVTVF9FWFBPUlRfU0RLX05BTUV9IgogCkBAIC0yMiw3ICsyOCwxNSBAQAogCiBpbmhlcml0IG1ldGEKIGluaGVyaXQgcG9wdWxhdGVfc2RrCi1pbmhlcml0IHRvb2xjaGFpbi1zY3JpcHRzCitpbmhlcml0IHRvb2xjaGFpbi1zY3JpcHRzLWJhc2UKK2luaGVyaXQgbm9wYWNrYWdlcworCitkZWx0YXNrIGluc3RhbGwKK2RlbHRhc2sgcG9wdWxhdGVfc3lzcm9vdAorCitkb19wb3B1bGF0ZV9zZGtbc3RhbXAtZXh0cmEtaW5mb10gPSAiJHtQQUNLQUdFX0FSQ0h9IgorCitSRUFMX01VTFRJTUFDSF9UQVJHRVRfU1lTID0gIm5vbmUiCiAKIGNyZWF0ZV9zZGtfZmlsZXNfYXBwZW5kICgpIHsKIAlybSAtZiAke1NES19PVVRQVVR9LyR7U0RLUEFUSH0vc2l0ZS1jb25maWctKgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvdW5pbmF0aXZlLXRhcmJhbGwuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS91bmluYXRpdmUtdGFyYmFsbC5iYgppbmRleCA1ZmFiZjdmLi4zOGMzYTMxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS91bmluYXRpdmUtdGFyYmFsbC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS91bmluYXRpdmUtdGFyYmFsbC5iYgpAQCAtMTMsNiArMTMsNyBAQAogICAgIG5hdGl2ZXNkay1nbGliYy1nY29udi11dGYtMTYgXAogICAgIG5hdGl2ZXNkay1nbGliYy1nY29udi1jcDEyNTIgXAogICAgIG5hdGl2ZXNkay1wYXRjaGVsZiBcCisgICAgbmF0aXZlc2RrLWxpYnhjcnlwdCBcCiAgICAgIgogCiBJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2JzZC1oZWFkZXJzL2JzZC1oZWFkZXJzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvYnNkLWhlYWRlcnMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9ic2QtaGVhZGVycy9ic2QtaGVhZGVycy5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvYnNkLWhlYWRlcnMuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9ic2QtaGVhZGVycy9ic2QtaGVhZGVycy9zeXMtY2RlZnMuaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL2JzZC1oZWFkZXJzL3N5cy1jZGVmcy5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnNkLWhlYWRlcnMvYnNkLWhlYWRlcnMvc3lzLWNkZWZzLmgKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL2JzZC1oZWFkZXJzL3N5cy1jZGVmcy5oCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnNkLWhlYWRlcnMvYnNkLWhlYWRlcnMvc3lzLXF1ZXVlLmggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9ic2QtaGVhZGVycy9zeXMtcXVldWUuaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2JzZC1oZWFkZXJzL2JzZC1oZWFkZXJzL3N5cy1xdWV1ZS5oCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9ic2QtaGVhZGVycy9zeXMtcXVldWUuaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2JzZC1oZWFkZXJzL2JzZC1oZWFkZXJzL3N5cy10cmVlLmggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9ic2QtaGVhZGVycy9zeXMtdHJlZS5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnNkLWhlYWRlcnMvYnNkLWhlYWRlcnMvc3lzLXRyZWUuaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvYnNkLWhlYWRlcnMvc3lzLXRyZWUuaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC11dGlscy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wtdXRpbHMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRiODQ2ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wtdXRpbHMuYmIKQEAgLTAsMCArMSwyNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTggS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworREVTQ1JJUFRJT04gPSAiZ2V0Y29uZiwgZ2V0ZW50IGFuZCBpY29udiBpbXBsZW1lbnRhdGlvbnMgZm9yIG11c2wiCitIT01FUEFHRSA9ICJodHRwczovL2dpdC5hbHBpbmVsaW51eC5vcmcvY2dpdC9hcG9ydHMvdHJlZS9tYWluL211c2wiCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSAmIEdQTC0yLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OWQwODIxNWU2MTFkYjg3YjM1N2U4Njc0YjRiNDI1NjQiCitTRUNUSU9OID0gInV0aWxzIgorCisjIERhdGUgb2YgdGhlIGNvbW1pdCBpbiBTUkNSRVYKK1BWID0gIjIwMTcwNDIxIgorCitTUkNSRVYgPSAiZmI1NjMwMTM4Y2NhYmJiYzE0YTE5ZDM3MjA5NmEwNGU0MjU3M2M3ZCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ib2x0bGludXgvbXVzbC11dGlscyIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworUEFDS0FHRVMgPSsgIiR7UE59LWljb252IgorCitGSUxFU18ke1BOfS1pY29udiA9ICIke2JpbmRpcn0vaWNvbnYiCisKK0NPTVBBVElCTEVfSE9TVCA9ICIuKi1tdXNsLioiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC5pbmMKaW5kZXggOWFmMTE3Mi4uYmE5YjFhMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC5pbmMKQEAgLTksNyArOSw3IEBACiBIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm11c2wtbGliYy5vcmcvIgogTElDRU5TRSA9ICJNSVQiCiBTRUNUSU9OID0gImxpYnMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PTc5MjhiN2FkMzJjZWRhMDQ5MzI0NzhlMzMwZTUyZjdmIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0yYjkwMzIwOTNjNDc2NWU0OWFlODVkZGViYTI5YWZmZiIKIAogUEFUSF9wcmVwZW5kID0gIiR7U1RBR0lOR19CSU5ESVJfVE9PTENIQUlOfS4ke1NUQUdJTkdDQ306IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9maWxlcy8wMDAxLU1ha2UtZHluYW1pYy1saW5rZXItYS1yZWxhdGl2ZS1zeW1saW5rLXRvLWxpYmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsLzAwMDEtTWFrZS1keW5hbWljLWxpbmtlci1hLXJlbGF0aXZlLXN5bWxpbmstdG8tbGliYy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvZmlsZXMvMDAwMS1NYWtlLWR5bmFtaWMtbGlua2VyLWEtcmVsYXRpdmUtc3ltbGluay10by1saWJjLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsLzAwMDEtTWFrZS1keW5hbWljLWxpbmtlci1hLXJlbGF0aXZlLXN5bWxpbmstdG8tbGliYy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsX2dpdC5iYgppbmRleCBkYjI2YjRmLi45ZjhjNTEyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsX2dpdC5iYgpAQCAtMyw5ICszLDkgQEAKIAogcmVxdWlyZSBtdXNsLmluYwogCi1TUkNSRVYgPSAiZWIwM2JkZTJmMjQ1ODI4NzRjYjcyYjU2Yzc4MTFiZjUxZGEwYzgxNyIKK1NSQ1JFViA9ICI1NWRmMDliZmNjYmZlMjFmYzlkZDdkOGY5NDU1MGMwZmYyNWFjZTA0IgogCi1QViA9ICIxLjEuMTgrZ2l0JHtTUkNQVn0iCitQViA9ICIxLjEuMTkrZ2l0JHtTUkNQVn0iCiAKICMgbWlycm9yIGlzIGF0IGdpdDovL2dpdGh1Yi5jb20va3Jhai9tdXNsLmdpdAogCkBAIC0xNSw3ICsxNSw3IEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLVBST1ZJREVTICs9ICJ2aXJ0dWFsL2xpYmMgdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9bGliYy1mb3ItZ2NjIHZpcnR1YWwvbGliaWNvbnYgdmlydHVhbC9saWJpbnRsIgorUFJPVklERVMgKz0gInZpcnR1YWwvbGliYyB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1saWJjLWZvci1nY2MgdmlydHVhbC9saWJpY29udiB2aXJ0dWFsL2xpYmludGwgdmlydHVhbC9jcnlwdCIKIAogREVQRU5EUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1iaW51dGlscyBcCiAgICAgICAgICAgIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYy1pbml0aWFsIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL2ZpbGVzL0NWRS0yMDE3LTEzNzMyLUNWRS0yMDE3LTEzNzM0LUNWRS0yMDE3LTEzNzMwLUNWRS0yMDE3LTEzNzI5LUNWRS0yMDE3LTEzNzI4LUNWRS0yMDE3LTEzNzMxLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvQ1ZFLTIwMTctMTM3MzItQ1ZFLTIwMTctMTM3MzQtQ1ZFLTIwMTctMTM3MzAtQ1ZFLTIwMTctMTM3MjktQ1ZFLTIwMTctMTM3MjgtQ1ZFLTIwMTctMTM3MzEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExOTMzMmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvQ1ZFLTIwMTctMTM3MzItQ1ZFLTIwMTctMTM3MzQtQ1ZFLTIwMTctMTM3MzAtQ1ZFLTIwMTctMTM3MjktQ1ZFLTIwMTctMTM3MjgtQ1ZFLTIwMTctMTM3MzEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NDEgKzAsMCBAQAotRnJvbSA0YmY3MmNiOGYxZDNhYTVmMzNjMzFlYjgxN2E1ZjAzMzhmNGFhZjZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogT3ZpZGl1IFBhbmFpdCA8b3ZpZGl1LnBhbmFpdEB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAyMCBTZXAgMjAxNyAwNTowMjowMCArMDAwMAotU3ViamVjdDogW1BBVENIXSBJbXBvcnQgdXBzdHJlYW0gcGF0Y2ggMjAxNzA4MjYKLQotMjAxNzA4MjYKLQkrIGZpeGVzIGZvciAiaXRlcm0yIiAocmVwb3J0IGJ5IExlb25hcmRvIEJyb25kYW5pIFNjaGVua2VsKSAtVEQKLQkrIGNvcnJlY3RlZCBhIHdhcm5pbmcgZnJvbSB0aWMgYWJvdXQga2V5cyB3aGljaCBhcmUgdGhlIHNhbWUsIHRvIHNraXAKLQkgIG92ZXIgbWlzc2luZy9jYW5jZWxsZWQgdmFsdWVzLgotCSsgYWRkIGNoZWNrIGluIHRpYyBmb3IgdW5uZWNlc3NhcnkgdXNlIG9mICIyIiB0byBkZW5vdGUgYSBzaGlmdGVkCi0JICBzcGVjaWFsIGtleS4KLQkrIGltcHJvdmUgY2hlY2tzIGluIHRyaW1fc2dyMCwgY29tcF9wYXJzZS5jIGFuZCBwYXJzZV9lbnRyeS5jLCBmb3IKLQkgIGNhbmNlbGxlZCBzdHJpbmcgY2FwYWJpbGl0aWVzLgotCSsgYWRkIGNoZWNrIGluIF9uY19wYXJzZV9lbnRyeSgpIGZvciBpbnZhbGlkIGVudHJ5IG5hbWUsIHNldHRpbmcgdGhlCi0JICBuYW1lIHRvICJpbnZhbGlkIiB0byBhdm9pZCBwcm9ibGVtcyBzdG9yaW5nIGVudHJpZXMuCi0JKyBhZGQvaW1wcm92ZSBjaGVja3MgaW4gdGljJ3MgcGFyc2VyIHRvIGFkZHJlc3MgaW52YWxpZCBpbnB1dAotCSAgKyBhZGQgYSBjaGVjayBpbiBjb21wX3NjYW4uYyB0byBoYW5kbGUgdGhlIHNwZWNpYWwgY2FzZSB3aGVyZSBhCi0JICAgIG5vbnRleHQgZmlsZSBlbmRpbmcgd2l0aCBhIE5VTCByYXRoZXIgdGhhbiBuZXdsaW5lIGlzIGdpdmVuIHRvIHRpYwotCSAgICBhcyBpbnB1dCAoUmVkaGF0ICMxNDg0Mjc0KS4KLQkgICsgYWxsb3cgZm9yIGNhbmNlbGxlZCBjYXBhYmlsaXRpZXMgaW4gX25jX3NhdmVfc3RyIChSZWRoYXQgIzE0ODQyNzYpLgotCSAgKyBhZGQgdmFsaWRpdHkgY2hlY2tzIGZvciAidXNlPSIgdGFyZ2V0IGluIF9uY19wYXJzZV9lbnRyeSAoUmVkaGF0Ci0JICAgICMxNDg0Mjg0KS4KLQkgICsgY2hlY2sgZm9yIGludmFsaWQgc3RyaW5ncyBpbiBwb3N0cHJvY2Vzc190ZXJtY2FwIChSZWRoYXQgIzE0ODQyODUpCi0JICArIHJlc2V0IHNlY29uZGFyeSBwb2ludGVycyBvbiBFT0YgaW4gbmV4dF9jaGFyKCkgKFJlZGhhdCAjMTQ4NDI4NykuCi0JICArIGd1YXJkIF9uY19zYWZlX3N0cmNweSgpIGFuZCBfbmNfc2FmZV9zdHJjYXQoKSBhZ2FpbnN0IGNhbGxzIHVzaW5nCi0JICAgIGNhbmNlbGxlZCBzdHJpbmdzIChSZWRoYXQgIzE0ODQyOTEpLgotCSsgY29ycmVjdCB0eXBvIGluIGN1cnNfbWVtbGVha3MuM3ggKFN2ZW4gSm9hY2hpbSkuCi0JKyBpbXByb3ZlIHRlc3QvY29uZmlndXJlIGNoZWNrcyBmb3Igc29tZSBjdXJzZXMgdmFyaWFudHMgbm90IGJhc2VkIG9uCi0JICBYL09wZW4gQ3Vyc2VzLgotCSsgYWRkIG9wdGlvbnMgZm9yIHRlc3QvY29uZmlndXJlIHRvIGRpc2FibGUgY2hlY2tzIGZvciBmb3JtLCBtZW51IGFuZAotCSAgcGFuZWwgbGlicmFyaWVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTEzNzMyLCBDVkUtMjAxNy0xMzczNCwgQ1ZFLTIwMTctMTM3MzAsIENWRS0yMDE3LTEzNzI5LCBDVkUtMjAxNy0xMzcyOCwgQ1ZFLTIwMTctMTM3MzEKLSAKLQotQXV0aG9yOiBTdmVuIEpvYWNoaW0gPHN2ZW5qb2FjQGdteC5kZT4KLVNpZ25lZC1vZmYtYnk6IE92aWRpdSBQYW5haXQgPG92aWRpdS5wYW5haXRAd2luZHJpdmVyLmNvbT4KLS0tLQotIGRpc3QubWsgICAgICAgICAgICAgICAgICAgICB8ICA0ICstCi0gaW5jbHVkZS9uY3Vyc2VzX2RlZnMgICAgICAgIHwgIDQgKy0KLSBuY3Vyc2VzL3RpbmZvL2FsbG9jX2VudHJ5LmMgfCAgNCArLQotIG5jdXJzZXMvdGluZm8vY29tcF9wYXJzZS5jICB8IDEwICsrLS0tCi0gbmN1cnNlcy90aW5mby9jb21wX3NjYW4uYyAgIHwgIDYgKystCi0gbmN1cnNlcy90aW5mby9wYXJzZV9lbnRyeS5jIHwgOTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCi0gbmN1cnNlcy90aW5mby9zdHJpbmdzLmMgICAgIHwgIDkgKysrLS0KLSBuY3Vyc2VzL3RpbmZvL3RyaW1fc2dyMC5jICAgfCAgNCArLQotIHByb2dzL3RpYy5jICAgICAgICAgICAgICAgICB8IDc1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KLSA5IGZpbGVzIGNoYW5nZWQsIDE1NyBpbnNlcnRpb25zKCspLCA1MCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2Rpc3QubWsgYi9kaXN0Lm1rCi1pbmRleCA5YWYyNjk5Li4yYzcwNDcyIDEwMDY0NAotLS0tIGEvZGlzdC5tawotKysrIGIvZGlzdC5tawotQEAgLTI1LDcgKzI1LDcgQEAKLSAjIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiAgICAgICAgICAgICAgICMKLSAjIGF1dGhvcml6YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLS0jICRJZDogZGlzdC5tayx2IDEuMTE3MiAyMDE3LzA3LzEzIDAwOjE1OjI3IHRvbSBFeHAgJAotKyMgJElkOiBkaXN0Lm1rLHYgMS4xMTc5IDIwMTcvMDgvMjAgMTU6MzM6NDEgdG9tIEV4cCAkCi0gIyBNYWtlZmlsZSBmb3IgY3JlYXRpbmcgbmN1cnNlcyBkaXN0cmlidXRpb25zLgotICMKLSAjIFRoaXMgb25seSBuZWVkcyB0byBiZSB1c2VkIGRpcmVjdGx5IGFzIGEgbWFrZWZpbGUgYnkgZGV2ZWxvcGVycywgYnV0Ci1AQCAtMzcsNyArMzcsNyBAQCBTSEVMTCA9IC9iaW4vc2gKLSAjIFRoZXNlIGRlZmluZSB0aGUgbWFqb3IvbWlub3IvcGF0Y2ggdmVyc2lvbnMgb2YgbmN1cnNlcy4KLSBOQ1VSU0VTX01BSk9SID0gNgotIE5DVVJTRVNfTUlOT1IgPSAwCi0tTkNVUlNFU19QQVRDSCA9IDIwMTcwNzE1Ci0rTkNVUlNFU19QQVRDSCA9IDIwMTcwODI2Ci0gCi0gIyBXZSBkb24ndCBhcHBlbmQgdGhlIHBhdGNoIHRvIHRoZSB2ZXJzaW9uLCBzaW5jZSB0aGlzIG9ubHkgYXBwbGllcyB0byByZWxlYXNlcwotIFZFUlNJT04gPSAkKE5DVVJTRVNfTUFKT1IpLiQoTkNVUlNFU19NSU5PUikKLWRpZmYgLS1naXQgYS9pbmNsdWRlL25jdXJzZXNfZGVmcyBiL2luY2x1ZGUvbmN1cnNlc19kZWZzCi1pbmRleCBlNjYxMWI3Li5kMjM3ZGIxIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9uY3Vyc2VzX2RlZnMKLSsrKyBiL2luY2x1ZGUvbmN1cnNlc19kZWZzCi1AQCAtMSw0ICsxLDQgQEAKLS0jICRJZDogbmN1cnNlc19kZWZzLHYgMS43MyAyMDE3LzA2LzI0IDE0OjIwOjU3IHRvbSBFeHAgJAotKyMgJElkOiBuY3Vyc2VzX2RlZnMsdiAxLjc1IDIwMTcvMDgvMjAgMTY6NTA6MDQgdG9tIEV4cCAkCi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gIyBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxNiwyMDE3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgICAjCi0gIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi1AQCAtNTAsNyArNTAsOSBAQCBIQVZFX0JTRF9TVFJJTkdfSAotIEhBVkVfQlRPV0MgCi0gSEFWRV9CVUlMVElOX0gKLSBIQVZFX0NIR0FUCTEKLStIQVZFX0NPTE9SX0NPTlRFTlQJMQotIEhBVkVfQ09MT1JfU0VUCTEKLStIQVZFX0NVUlNDUgkxCi0gSEFWRV9ESVJFTlRfSAotIEhBVkVfRVJSTk8KLSBIQVZFX0ZDTlRMX0gKLWRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL2FsbG9jX2VudHJ5LmMgYi9uY3Vyc2VzL3RpbmZvL2FsbG9jX2VudHJ5LmMKLWluZGV4IDVkZTA5ZjEuLjA5Mzc0ZDYgMTAwNjQ0Ci0tLS0gYS9uY3Vyc2VzL3RpbmZvL2FsbG9jX2VudHJ5LmMKLSsrKyBiL25jdXJzZXMvdGluZm8vYWxsb2NfZW50cnkuYwotQEAgLTQ3LDcgKzQ3LDcgQEAKLSAKLSAjaW5jbHVkZSA8dGljLmg+Ci0gCi0tTU9EVUxFX0lEKCIkSWQ6IGFsbG9jX2VudHJ5LmMsdiAxLjYwIDIwMTcvMDYvMjcgMjM6NDg6NTUgdG9tIEV4cCAkIikKLStNT0RVTEVfSUQoIiRJZDogYWxsb2NfZW50cnkuYyx2IDEuNjEgMjAxNy8wOC8yNSAwOTowOTowOCB0b20gRXhwICQiKQotIAotICNkZWZpbmUgQUJTRU5UX09GRlNFVCAgICAtMQotICNkZWZpbmUgQ0FOQ0VMTEVEX09GRlNFVCAtMgotQEAgLTk4LDcgKzk4LDcgQEAgX25jX3NhdmVfc3RyKGNvbnN0IGNoYXIgKmNvbnN0IHN0cmluZykKLSAgICAgc2l6ZV90IG9sZF9uZXh0X2ZyZWUgPSBuZXh0X2ZyZWU7Ci0gICAgIHNpemVfdCBsZW47Ci0gCi0tICAgIGlmIChzdHJpbmcgPT0gMCkKLSsgICAgaWYgKCFWQUxJRF9TVFJJTkcoc3RyaW5nKSkKLSAJcmV0dXJuIF9uY19zYXZlX3N0cigiIik7Ci0gICAgIGxlbiA9IHN0cmxlbihzdHJpbmcpICsgMTsKLSAKLWRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL2NvbXBfcGFyc2UuYyBiL25jdXJzZXMvdGluZm8vY29tcF9wYXJzZS5jCi1pbmRleCAzNGU2MjE2Li41ODBkNGRmIDEwMDY0NAotLS0tIGEvbmN1cnNlcy90aW5mby9jb21wX3BhcnNlLmMKLSsrKyBiL25jdXJzZXMvdGluZm8vY29tcF9wYXJzZS5jCi1AQCAtNDcsNyArNDcsNyBAQAotIAotICNpbmNsdWRlIDx0aWMuaD4KLSAKLS1NT0RVTEVfSUQoIiRJZDogY29tcF9wYXJzZS5jLHYgMS45NiAyMDE3LzA0LzE1IDE1OjM2OjU4IHRvbSBFeHAgJCIpCi0rTU9EVUxFX0lEKCIkSWQ6IGNvbXBfcGFyc2UuYyx2IDEuOTkgMjAxNy8wOC8yNiAxNjoxNTo1MCB0b20gRXhwICQiKQotIAotIHN0YXRpYyB2b2lkIHNhbml0eV9jaGVjazIoVEVSTVRZUEUyICosIGJvb2wpOwotIE5DVVJTRVNfSU1QRVhQIHZvaWQgTkNVUlNFU19BUEkoKl9uY19jaGVja190ZXJtdHlwZTIpIChURVJNVFlQRTIgKiwgYm9vbCkgPSBzYW5pdHlfY2hlY2syOwotQEAgLTUxMCw5ICs1MTAsOSBAQCBzdGF0aWMgdm9pZAotIGZpeHVwX2Fjc2MoVEVSTVRZUEUyICp0cCwgaW50IGxpdGVyYWwpCi0gewotICAgICBpZiAoIWxpdGVyYWwpIHsKLS0JaWYgKGFjc19jaGFycyA9PSAwCi0tCSAgICAmJiBlbnRlcl9hbHRfY2hhcnNldF9tb2RlICE9IDAKLS0JICAgICYmIGV4aXRfYWx0X2NoYXJzZXRfbW9kZSAhPSAwKQotKwlpZiAoYWNzX2NoYXJzID09IEFCU0VOVF9TVFJJTkcKLSsJICAgICYmIFBSRVNFTlQoZW50ZXJfYWx0X2NoYXJzZXRfbW9kZSkKLSsJICAgICYmIFBSRVNFTlQoZXhpdF9hbHRfY2hhcnNldF9tb2RlKSkKLSAJICAgIGFjc19jaGFycyA9IHN0cmR1cChWVF9BQ1NDKTsKLSAgICAgfQotIH0KLUBAIC01NjgsOSArNTY4LDcgQEAgc2FuaXR5X2NoZWNrMihURVJNVFlQRTIgKnRwLCBib29sIGxpdGVyYWwpCi0gICAgIFBBSVJFRChlbnRlcl94b25fbW9kZSwgZXhpdF94b25fbW9kZSk7Ci0gICAgIFBBSVJFRChlbnRlcl9hbV9tb2RlLCBleGl0X2FtX21vZGUpOwotICAgICBBTkRNSVNTSU5HKGxhYmVsX29mZiwgbGFiZWxfb24pOwotLSNpZmRlZiByZW1vdmVfY2xvY2sKLSAgICAgUEFJUkVEKGRpc3BsYXlfY2xvY2ssIHJlbW92ZV9jbG9jayk7Ci0tI2VuZGlmCi0gICAgIEFORE1JU1NJTkcoc2V0X2NvbG9yX3BhaXIsIGluaXRpYWxpemVfcGFpcik7Ci0gfQotIAotZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vY29tcF9zY2FuLmMgYi9uY3Vyc2VzL3RpbmZvL2NvbXBfc2Nhbi5jCi1pbmRleCA0MGQ3ZjZhLi5iMjA3MjU3IDEwMDY0NAotLS0tIGEvbmN1cnNlcy90aW5mby9jb21wX3NjYW4uYwotKysrIGIvbmN1cnNlcy90aW5mby9jb21wX3NjYW4uYwotQEAgLTUwLDcgKzUwLDcgQEAKLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8dGljLmg+Ci0gCi0tTU9EVUxFX0lEKCIkSWQ6IGNvbXBfc2Nhbi5jLHYgMS4xMDYgMjAxNy8wNC8yMiAxMTo0MToxMiB0b20gRXhwICQiKQotK01PRFVMRV9JRCgiJElkOiBjb21wX3NjYW4uYyx2IDEuMTA4IDIwMTcvMDgvMjUgMjI6NTc6MjEgdG9tIEV4cCAkIikKLSAKLSAvKgotICAqIE1heGltdW0gbGVuZ3RoIG9mIHN0cmluZyBjYXBhYmlsaXR5IHdlJ2xsIGFjY2VwdCBiZWZvcmUgcmFpc2luZyBhbiBlcnJvci4KLUBAIC0xNjgsNiArMTY4LDggQEAgbmV4dF9jaGFyKHZvaWQpCi0gCWlmIChyZXN1bHQgIT0gMCkgewotIAkgICAgRnJlZUFuZE51bGwocmVzdWx0KTsKLSAJICAgIEZyZWVBbmROdWxsKHB1c2huYW1lKTsKLSsJICAgIGJ1ZnB0ciA9IDA7Ci0rCSAgICBidWZzdGFydCA9IDA7Ci0gCSAgICBhbGxvY2F0ZWQgPSAwOwotIAl9Ci0gCS8qCi1AQCAtMjIyLDYgKzIyNCw4IEBAIG5leHRfY2hhcih2b2lkKQotIAkJfQotIAkJaWYgKChidWZwdHIgPSBidWZzdGFydCkgIT0gMCkgewotIAkJICAgIHVzZWQgPSBzdHJsZW4oYnVmcHRyKTsKLSsJCSAgICBpZiAodXNlZCA9PSAwKQotKwkJCXJldHVybiAoRU9GKTsKLSAJCSAgICB3aGlsZSAoaXN3aGl0ZSgqYnVmcHRyKSkgewotIAkJCWlmICgqYnVmcHRyID09ICdcdCcpIHsKLSAJCQkgICAgX25jX2N1cnJfY29sID0gKF9uY19jdXJyX2NvbCB8IDcpICsgMTsKLWRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL3BhcnNlX2VudHJ5LmMgYi9uY3Vyc2VzL3RpbmZvL3BhcnNlX2VudHJ5LmMKLWluZGV4IDNmYTJmMjUuLmJiYmZjYjIgMTAwNjQ0Ci0tLS0gYS9uY3Vyc2VzL3RpbmZvL3BhcnNlX2VudHJ5LmMKLSsrKyBiL25jdXJzZXMvdGluZm8vcGFyc2VfZW50cnkuYwotQEAgLTQ3LDcgKzQ3LDcgQEAKLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8dGljLmg+Ci0gCi0tTU9EVUxFX0lEKCIkSWQ6IHBhcnNlX2VudHJ5LmMsdiAxLjg2IDIwMTcvMDYvMjggMDA6NTM6MTIgdG9tIEV4cCAkIikKLStNT0RVTEVfSUQoIiRJZDogcGFyc2VfZW50cnkuYyx2IDEuOTEgMjAxNy8wOC8yNiAxNjoxMzozNCB0b20gRXhwICQiKQotIAotICNpZmRlZiBMSU5UCi0gc3RhdGljIHNob3J0IGNvbnN0IHBhcmFtZXRyaXplZFtdID0KLUBAIC0xODAsNiArMTgwLDIwIEBAIF9uY19leHRlbmRfbmFtZXMoRU5UUlkgKiBlbnRyeXAsIGNoYXIgKm5hbWUsIGludCB0b2tlbl90eXBlKQotIH0KLSAjZW5kaWYgLyogTkNVUlNFU19YTkFNRVMgKi8KLSAKLStzdGF0aWMgYm9vbAotK3ZhbGlkX2VudHJ5bmFtZShjb25zdCBjaGFyICpuYW1lKQotK3sKLSsgICAgYm9vbCByZXN1bHQgPSBUUlVFOwotKyAgICBpbnQgY2g7Ci0rICAgIHdoaWxlICgoY2ggPSBVQ2hhcigqbmFtZSsrKSkgIT0gJ1wwJykgewotKwlpZiAoY2ggPD0gJyAnIHx8IGNoID4gJ34nIHx8IGNoID09ICcvJykgewotKwkgICAgcmVzdWx0ID0gRkFMU0U7Ci0rCSAgICBicmVhazsKLSsJfQotKyAgICB9Ci0rICAgIHJldHVybiByZXN1bHQ7Ci0rfQotKwotIC8qCi0gICoJaW50Ci0gICoJX25jX3BhcnNlX2VudHJ5KGVudHJ5LCBsaXRlcmFsLCBzaWxlbnQpCi1AQCAtMjExLDYgKzIyNSw3IEBAIF9uY19wYXJzZV9lbnRyeShFTlRSWSAqIGVudHJ5cCwgaW50IGxpdGVyYWwsIGJvb2wgc2lsZW50KQotICAgICBpbnQgdG9rZW5fdHlwZTsKLSAgICAgc3RydWN0IG5hbWVfdGFibGVfZW50cnkgY29uc3QgKmVudHJ5X3B0cjsKLSAgICAgY2hhciAqcHRyLCAqYmFzZTsKLSsgICAgY29uc3QgY2hhciAqbmFtZTsKLSAgICAgYm9vbCBiYWRfdGNfdXNhZ2UgPSBGQUxTRTsKLSAKLSAgICAgdG9rZW5fdHlwZSA9IF9uY19nZXRfdG9rZW4oc2lsZW50KTsKLUBAIC0yNjEsNyArMjc2LDEyIEBAIF9uY19wYXJzZV9lbnRyeShFTlRSWSAqIGVudHJ5cCwgaW50IGxpdGVyYWwsIGJvb2wgc2lsZW50KQotICAgICAgKiByZXN1bHRzIGluIHRoZSB0ZXJtaW5hbCB0eXBlIGdldHRpbmcgcHJlbWF0dXJlbHkgc2V0IHRvIGNvcnJlc3BvbmQKLSAgICAgICogdG8gdGhhdCBvZiB0aGUgbmV4dCBlbnRyeS4KLSAgICAgICovCi0tICAgIF9uY19zZXRfdHlwZShfbmNfZmlyc3RfbmFtZShlbnRyeXAtPnR0ZXJtLnRlcm1fbmFtZXMpKTsKLSsgICAgbmFtZSA9IF9uY19maXJzdF9uYW1lKGVudHJ5cC0+dHRlcm0udGVybV9uYW1lcyk7Ci0rICAgIGlmICghdmFsaWRfZW50cnluYW1lKG5hbWUpKSB7Ci0rCV9uY193YXJuaW5nKCJpbnZhbGlkIGVudHJ5IG5hbWUgXCIlc1wiIiwgbmFtZSk7Ci0rCW5hbWUgPSAiaW52YWxpZCI7Ci0rICAgIH0KLSsgICAgX25jX3NldF90eXBlKG5hbWUpOwotIAotICAgICAvKiBjaGVjayBmb3Igb3Zlcmx5LWxvbmcgbmFtZXMgYW5kIGFsaWFzZXMgKi8KLSAgICAgZm9yIChiYXNlID0gZW50cnlwLT50dGVybS50ZXJtX25hbWVzOyAocHRyID0gc3RyY2hyKGJhc2UsICd8JykpICE9IDA7Ci1AQCAtMjgzLDEzICszMDMsMjQgQEAgX25jX3BhcnNlX2VudHJ5KEVOVFJZICogZW50cnlwLCBpbnQgbGl0ZXJhbCwgYm9vbCBzaWxlbnQpCi0gCWJvb2wgaXNfdXNlID0gKHN0cmNtcChfbmNfY3Vycl90b2tlbi50a19uYW1lLCAidXNlIikgPT0gMCk7Ci0gCWJvb2wgaXNfdGMgPSAhaXNfdXNlICYmIChzdHJjbXAoX25jX2N1cnJfdG9rZW4udGtfbmFtZSwgInRjIikgPT0gMCk7Ci0gCWlmIChpc191c2UgfHwgaXNfdGMpIHsKLSsJICAgIGlmICghVkFMSURfU1RSSU5HKF9uY19jdXJyX3Rva2VuLnRrX3ZhbHN0cmluZykKLSsJCXx8IF9uY19jdXJyX3Rva2VuLnRrX3ZhbHN0cmluZ1swXSA9PSAnXDAnKSB7Ci0rCQlfbmNfd2FybmluZygibWlzc2luZyBuYW1lIGZvciB1c2UtY2xhdXNlIik7Ci0rCQljb250aW51ZTsKLSsJICAgIH0gZWxzZSBpZiAoIXZhbGlkX2VudHJ5bmFtZShfbmNfY3Vycl90b2tlbi50a192YWxzdHJpbmcpKSB7Ci0rCQlfbmNfd2FybmluZygiaW52YWxpZCBuYW1lIGZvciB1c2UtY2xhdXNlIFwiJXNcIiIsCi0rCQkJICAgIF9uY19jdXJyX3Rva2VuLnRrX3ZhbHN0cmluZyk7Ci0rCQljb250aW51ZTsKLSsJICAgIH0gZWxzZSBpZiAoZW50cnlwLT5udXNlcyA+PSBNQVhfVVNFUykgewotKwkJX25jX3dhcm5pbmcoInRvbyBtYW55IHVzZS1jbGF1c2VzLCBpZ25vcmVkIFwiJXNcIiIsCi0rCQkJICAgIF9uY19jdXJyX3Rva2VuLnRrX3ZhbHN0cmluZyk7Ci0rCQljb250aW51ZTsKLSsJICAgIH0KLSAJICAgIGVudHJ5cC0+dXNlc1tlbnRyeXAtPm51c2VzXS5uYW1lID0gX25jX3NhdmVfc3RyKF9uY19jdXJyX3Rva2VuLnRrX3ZhbHN0cmluZyk7Ci0gCSAgICBlbnRyeXAtPnVzZXNbZW50cnlwLT5udXNlc10ubGluZSA9IF9uY19jdXJyX2xpbmU7Ci0tCSAgICBpZiAoVkFMSURfU1RSSU5HKGVudHJ5cC0+dXNlc1tlbnRyeXAtPm51c2VzXS5uYW1lKSkgewotLQkJZW50cnlwLT5udXNlcysrOwotLQkJaWYgKGVudHJ5cC0+bnVzZXMgPiAxICYmIGlzX3RjKSB7Ci0tCQkgICAgQkFEX1RDX1VTQUdFCi0tCQl9Ci0rCSAgICBlbnRyeXAtPm51c2VzKys7Ci0rCSAgICBpZiAoZW50cnlwLT5udXNlcyA+IDEgJiYgaXNfdGMpIHsKLSsJCUJBRF9UQ19VU0FHRQotIAkgICAgfQotIAl9IGVsc2UgewotIAkgICAgLyogbm9ybWFsIHRva2VuIGxvb2t1cCAqLwotQEAgLTY0MSwxMyArNjcyLDYgQEAgc3RhdGljIGNvbnN0IGNoYXIgQ19CU1tdID0gIlxiIjsKLSBzdGF0aWMgY29uc3QgY2hhciBDX0hUW10gPSAiXHQiOwotIAotIC8qCi0tICogTm90ZSB0aGF0IFdBTlRFRCBhbmQgUFJFU0VOVCBhcmUgbm90IHNpbXBsZSBpbnZlcnNlcyEgIElmIGEgY2FwYWJpbGl0eQotLSAqIGhhcyBiZWVuIGV4cGxpY2l0bHkgY2FuY2VsbGVkLCBpdCdzIG5vdCBjb25zaWRlcmVkIFdBTlRFRC4KLS0gKi8KLS0jZGVmaW5lIFdBTlRFRChzKQkoKHMpID09IEFCU0VOVF9TVFJJTkcpCi0tI2RlZmluZSBQUkVTRU5UKHMpCSgoKHMpICE9IEFCU0VOVF9TVFJJTkcpICYmICgocykgIT0gQ0FOQ0VMTEVEX1NUUklORykpCi0tCi0tLyoKLSAgKiBUaGlzIGJpdCBvZiBsZWdlcmRlbWFpbiB0dXJucyBhbGwgdGhlIHRlcm1pbmZvIHZhcmlhYmxlIG5hbWVzIGludG8KLSAgKiByZWZlcmVuY2VzIHRvIGxvY2F0aW9ucyBpbiB0aGUgYXJyYXlzIEJvb2xlYW5zLCBOdW1iZXJzLCBhbmQgU3RyaW5ncyAtLS0KLSAgKiBwcmVjaXNlbHkgd2hhdCdzIG5lZWRlZC4KLUBAIC02NzIsMTAgKzY5NiwxMCBAQCBwb3N0cHJvY2Vzc190ZXJtY2FwKFRFUk1UWVBFMiAqdHAsIGJvb2wgaGFzX2Jhc2UpCi0gCi0gICAgIC8qIGlmIHRoZXJlIHdhcyBhIHRjIGVudHJ5LCBhc3N1bWUgd2UgcGlja2VkIHVwIGRlZmF1bHRzIHZpYSB0aGF0ICovCi0gICAgIGlmICghaGFzX2Jhc2UpIHsKLS0JaWYgKFdBTlRFRChpbml0XzNzdHJpbmcpICYmIHRlcm1jYXBfaW5pdDIpCi0rCWlmIChXQU5URUQoaW5pdF8zc3RyaW5nKSAmJiBQUkVTRU5UKHRlcm1jYXBfaW5pdDIpKQotIAkgICAgaW5pdF8zc3RyaW5nID0gX25jX3NhdmVfc3RyKHRlcm1jYXBfaW5pdDIpOwotIAotLQlpZiAoV0FOVEVEKHJlc2V0XzJzdHJpbmcpICYmIHRlcm1jYXBfcmVzZXQpCi0rCWlmIChXQU5URUQocmVzZXRfMnN0cmluZykgJiYgUFJFU0VOVCh0ZXJtY2FwX3Jlc2V0KSkKLSAJICAgIHJlc2V0XzJzdHJpbmcgPSBfbmNfc2F2ZV9zdHIodGVybWNhcF9yZXNldCk7Ci0gCi0gCWlmIChXQU5URUQoY2FycmlhZ2VfcmV0dXJuKSkgewotQEAgLTc5MCw3ICs4MTQsNyBAQCBwb3N0cHJvY2Vzc190ZXJtY2FwKFRFUk1UWVBFMiAqdHAsIGJvb2wgaGFzX2Jhc2UpCi0gCWlmIChpbml0X3RhYnMgIT0gOCAmJiBpbml0X3RhYnMgIT0gQUJTRU5UX05VTUVSSUMpCi0gCSAgICBfbmNfd2FybmluZygiaGFyZHdhcmUgdGFicyB3aXRoIGEgd2lkdGggb3RoZXIgdGhhbiA4OiAlZCIsIGluaXRfdGFicyk7Ci0gCWVsc2UgewotLQkgICAgaWYgKHRhYiAmJiBfbmNfY2FwY21wKHRhYiwgQ19IVCkpCi0rCSAgICBpZiAoUFJFU0VOVCh0YWIpICYmIF9uY19jYXBjbXAodGFiLCBDX0hUKSkKLSAJCV9uY193YXJuaW5nKCJoYXJkd2FyZSB0YWJzIHdpdGggYSBub24tXkkgdGFiIHN0cmluZyAlcyIsCi0gCQkJICAgIF9uY192aXNidWYodGFiKSk7Ci0gCSAgICBlbHNlIHsKLUBAIC04NjcsMTcgKzg5MSwyMiBAQCBwb3N0cHJvY2Vzc190ZXJtY2FwKFRFUk1UWVBFMiAqdHAsIGJvb2wgaGFzX2Jhc2UpCi0gCSAgICAgKiBUaGUgbWFnaWMgbW9tZW50IC0tIGNvcHkgdGhlIG1hcHBlZCBrZXkgc3RyaW5nIG92ZXIsCi0gCSAgICAgKiBzdHJpcHBpbmcgb3V0IHBhZGRpbmcuCi0gCSAgICAgKi8KLS0JICAgIGZvciAoZHAgPSBidWYyLCBicCA9IHRwLT5TdHJpbmdzW2Zyb21fcHRyLT5udGVfaW5kZXhdOyAqYnA7IGJwKyspIHsKLS0JCWlmIChicFswXSA9PSAnJCcgJiYgYnBbMV0gPT0gJzwnKSB7Ci0tCQkgICAgd2hpbGUgKCpicCAmJiAqYnAgIT0gJz4nKSB7Ci0tCQkJKyticDsKLS0JCSAgICB9Ci0tCQl9IGVsc2UKLS0JCSAgICAqZHArKyA9ICpicDsKLS0JICAgIH0KLS0JICAgICpkcCA9ICdcMCc7Ci0rCSAgICBicCA9IHRwLT5TdHJpbmdzW2Zyb21fcHRyLT5udGVfaW5kZXhdOwotKwkgICAgaWYgKFZBTElEX1NUUklORyhicCkpIHsKLSsJCWZvciAoZHAgPSBidWYyOyAqYnA7IGJwKyspIHsKLSsJCSAgICBpZiAoYnBbMF0gPT0gJyQnICYmIGJwWzFdID09ICc8JykgewotKwkJCXdoaWxlICgqYnAgJiYgKmJwICE9ICc+JykgewotKwkJCSAgICArK2JwOwotKwkJCX0KLSsJCSAgICB9IGVsc2UKLSsJCQkqZHArKyA9ICpicDsKLSsJCX0KLSsJCSpkcCA9ICdcMCc7Ci0gCi0tCSAgICB0cC0+U3RyaW5nc1t0b19wdHItPm50ZV9pbmRleF0gPSBfbmNfc2F2ZV9zdHIoYnVmMik7Ci0rCQl0cC0+U3RyaW5nc1t0b19wdHItPm50ZV9pbmRleF0gPSBfbmNfc2F2ZV9zdHIoYnVmMik7Ci0rCSAgICB9IGVsc2UgewotKwkJdHAtPlN0cmluZ3NbdG9fcHRyLT5udGVfaW5kZXhdID0gYnA7Ci0rCSAgICB9Ci0gCX0KLSAKLSAJLyoKLUBAIC04ODYsNyArOTE1LDcgQEAgcG9zdHByb2Nlc3NfdGVybWNhcChURVJNVFlQRTIgKnRwLCBib29sIGhhc19iYXNlKQotIAkgKiBnb3QgbWFwcGVkIHRvIGtpY2gxIGFuZCBpbSB0byBrSUMgdG8gYXZvaWQgYSBjb2xsaXNpb24uCi0gCSAqIElmIHRoZSBkZXNjcmlwdGlvbiBoYXMgaW0gYnV0IG5vdCBpYywgaGFjayBrSUMgYmFjayB0byBraWNoMS4KLSAJICovCi0tCWlmIChmb3VuZGltICYmIFdBTlRFRChrZXlfaWMpICYmIGtleV9zaWMpIHsKLSsJaWYgKGZvdW5kaW0gJiYgV0FOVEVEKGtleV9pYykgJiYgUFJFU0VOVChrZXlfc2ljKSkgewotIAkgICAga2V5X2ljID0ga2V5X3NpYzsKLSAJICAgIGtleV9zaWMgPSBBQlNFTlRfU1RSSU5HOwotIAl9Ci1AQCAtOTM4LDkgKzk2Nyw5IEBAIHBvc3Rwcm9jZXNzX3Rlcm1jYXAoVEVSTVRZUEUyICp0cCwgYm9vbCBoYXNfYmFzZSkKLSAJICAgIGFjc19jaGFycyA9IF9uY19zYXZlX3N0cihidWYyKTsKLSAJICAgIF9uY193YXJuaW5nKCJhY3NjIHN0cmluZyBzeW50aGVzaXplZCBmcm9tIFhFTklYIGNhcGFiaWxpdGllcyIpOwotIAl9Ci0tICAgIH0gZWxzZSBpZiAoYWNzX2NoYXJzID09IDAKLS0JICAgICAgICYmIGVudGVyX2FsdF9jaGFyc2V0X21vZGUgIT0gMAotLQkgICAgICAgJiYgZXhpdF9hbHRfY2hhcnNldF9tb2RlICE9IDApIHsKLSsgICAgfSBlbHNlIGlmIChhY3NfY2hhcnMgPT0gQUJTRU5UX1NUUklORwotKwkgICAgICAgJiYgUFJFU0VOVChlbnRlcl9hbHRfY2hhcnNldF9tb2RlKQotKwkgICAgICAgJiYgUFJFU0VOVChleGl0X2FsdF9jaGFyc2V0X21vZGUpKSB7Ci0gCWFjc19jaGFycyA9IF9uY19zYXZlX3N0cihWVF9BQ1NDKTsKLSAgICAgfQotIH0KLWRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL3N0cmluZ3MuYyBiL25jdXJzZXMvdGluZm8vc3RyaW5ncy5jCi1pbmRleCAzOTNkOGU3Li4xMGVjNmM4IDEwMDY0NAotLS0tIGEvbmN1cnNlcy90aW5mby9zdHJpbmdzLmMKLSsrKyBiL25jdXJzZXMvdGluZm8vc3RyaW5ncy5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLSAqIENvcHlyaWdodCAoYykgMjAwMC0yMDA3LDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCi0rICogQ29weXJpZ2h0IChjKSAyMDAwLTIwMTIsMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICoKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICAqCi0gICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAgICAgICAgICAgICoKLUBAIC0zNSw4ICszNSw5IEBACi0gKiovCi0gCi0gI2luY2x1ZGUgPGN1cnNlcy5wcml2Lmg+Ci0rI2luY2x1ZGUgPHRpYy5oPgotIAotLU1PRFVMRV9JRCgiJElkOiBzdHJpbmdzLmMsdiAxLjggMjAxMi8wMi8yMiAyMjozNDozMSB0b20gRXhwICQiKQotK01PRFVMRV9JRCgiJElkOiBzdHJpbmdzLmMsdiAxLjkgMjAxNy8wOC8yNiAxMzoxNjoxMSB0b20gRXhwICQiKQotIAotIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICogVXNlZnVsIHN0cmluZyBmdW5jdGlvbnMgKGVzcGVjaWFsbHkgZm9yIG12Y3VyKQotQEAgLTEwNSw3ICsxMDYsNyBAQCBfbmNfc3RyX2NvcHkoc3RyaW5nX2Rlc2MgKiBkc3QsIHN0cmluZ19kZXNjICogc3JjKQotIE5DVVJTRVNfRVhQT1JUKGJvb2wpCi0gX25jX3NhZmVfc3RyY2F0KHN0cmluZ19kZXNjICogZHN0LCBjb25zdCBjaGFyICpzcmMpCi0gewotLSAgICBpZiAoc3JjICE9IDApIHsKLSsgICAgaWYgKFBSRVNFTlQoc3JjKSkgewotIAlzaXplX3QgbGVuID0gc3RybGVuKHNyYyk7Ci0gCi0gCWlmIChsZW4gPCBkc3QtPnNfc2l6ZSkgewotQEAgLTEyNiw3ICsxMjcsNyBAQCBfbmNfc2FmZV9zdHJjYXQoc3RyaW5nX2Rlc2MgKiBkc3QsIGNvbnN0IGNoYXIgKnNyYykKLSBOQ1VSU0VTX0VYUE9SVChib29sKQotIF9uY19zYWZlX3N0cmNweShzdHJpbmdfZGVzYyAqIGRzdCwgY29uc3QgY2hhciAqc3JjKQotIHsKLS0gICAgaWYgKHNyYyAhPSAwKSB7Ci0rICAgIGlmIChQUkVTRU5UKHNyYykpIHsKLSAJc2l6ZV90IGxlbiA9IHN0cmxlbihzcmMpOwotIAotIAlpZiAobGVuIDwgZHN0LT5zX3NpemUpIHsKLWRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL3RyaW1fc2dyMC5jIGIvbmN1cnNlcy90aW5mby90cmltX3NncjAuYwotaW5kZXggNGNiY2I2NS4uNGQ5MmQxNSAxMDA2NDQKLS0tLSBhL25jdXJzZXMvdGluZm8vdHJpbV9zZ3IwLmMKLSsrKyBiL25jdXJzZXMvdGluZm8vdHJpbV9zZ3IwLmMKLUBAIC0zNiw3ICszNiw3IEBACi0gCi0gI2luY2x1ZGUgPHRpYy5oPgotIAotLU1PRFVMRV9JRCgiJElkOiB0cmltX3NncjAuYyx2IDEuMTYgMjAxNy8wNC8wNSAyMjozMzowNyB0b20gRXhwICQiKQotK01PRFVMRV9JRCgiJElkOiB0cmltX3NncjAuYyx2IDEuMTcgMjAxNy8wOC8yNiAxNDo1NDoxNiB0b20gRXhwICQiKQotIAotICN1bmRlZiBDVVIKLSAjZGVmaW5lIENVUiB0cC0+Ci1AQCAtMjYzLDcgKzI2Myw3IEBAIF9uY190cmltX3NncjAoVEVSTVRZUEUyICp0cCkKLSAJICAgIC8qCi0gCSAgICAgKiBJZiBybWFjcyBpcyBhIHN1YnN0cmluZyBvZiBzZ3IoMCksIHJlbW92ZSB0aGF0IGNodW5rLgotIAkgICAgICovCi0tCSAgICBpZiAoZXhpdF9hbHRfY2hhcnNldF9tb2RlICE9IDApIHsKLSsJICAgIGlmIChQUkVTRU5UKGV4aXRfYWx0X2NoYXJzZXRfbW9kZSkpIHsKLSAJCVRSKFRSQUNFX0RBVEFCQVNFLCAoInNjYW4gZm9yIHJtYWNzICVzIiwgX25jX3Zpc2J1ZihleGl0X2FsdF9jaGFyc2V0X21vZGUpKSk7Ci0gCQlqID0gc3RybGVuKG9mZik7Ci0gCQlrID0gc3RybGVuKGV4aXRfYWx0X2NoYXJzZXRfbW9kZSk7Ci1kaWZmIC0tZ2l0IGEvcHJvZ3MvdGljLmMgYi9wcm9ncy90aWMuYwotaW5kZXggYzVkNzhlNS4uNmRkNDY3OCAxMDA2NDQKLS0tLSBhL3Byb2dzL3RpYy5jCi0rKysgYi9wcm9ncy90aWMuYwotQEAgLTQ4LDcgKzQ4LDcgQEAKLSAjaW5jbHVkZSA8cGFyYW1ldHJpemVkLmg+Ci0gI2luY2x1ZGUgPHRyYW5zZm9ybS5oPgotIAotLU1PRFVMRV9JRCgiJElkOiB0aWMuYyx2IDEuMjMzIDIwMTcvMDcvMTUgMTc6NDA6MTkgdG9tIEV4cCAkIikKLStNT0RVTEVfSUQoIiRJZDogdGljLmMsdiAxLjI0MyAyMDE3LzA4LzI2IDIwOjU2OjU1IHRvbSBFeHAgJCIpCi0gCi0gI2RlZmluZSBTVERJTl9OQU1FICI8c3RkaW4+IgotIAotQEAgLTYyLDYgKzYyLDEwIEBAIHN0YXRpYyBib29sIHNob3dzdW1tYXJ5ID0gRkFMU0U7Ci0gc3RhdGljIGNoYXIgKipuYW1lbHN0ID0gMDsKLSBzdGF0aWMgY29uc3QgY2hhciAqdG9fcmVtb3ZlOwotIAotKyNpZiBOQ1VSU0VTX1hOQU1FUwotK3N0YXRpYyBib29sIHVzaW5nX2V4dGVuc2lvbnMgPSBGQUxTRTsKLSsjZW5kaWYKLSsKLSBzdGF0aWMgdm9pZCAoKnNhdmVfY2hlY2tfdGVybXR5cGUpIChURVJNVFlQRTIgKiwgYm9vbCk7Ci0gc3RhdGljIHZvaWQgY2hlY2tfdGVybXR5cGUoVEVSTVRZUEUyICp0dCwgYm9vbCk7Ci0gCi1AQCAtODUwLDYgKzg1NCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICAgIC8qIEZBTExUSFJVICovCi0gCWNhc2UgJ3gnOgotIAkgICAgdXNlX2V4dGVuZGVkX25hbWVzKFRSVUUpOwotKwkgICAgdXNpbmdfZXh0ZW5zaW9ucyA9IFRSVUU7Ci0gCSAgICBicmVhazsKLSAjZW5kaWYKLSAJZGVmYXVsdDoKLUBAIC0yNDA1LDEwICsyNDEwLDE3IEBAIGNoZWNrX2NvbmZsaWN0KFRFUk1UWVBFMiAqdHApCi0gCSAgICBjb25zdCBjaGFyICphID0gZ2l2ZW5bal0udmFsdWU7Ci0gCSAgICBib29sIGZpcnN0ID0gVFJVRTsKLSAKLSsJICAgIGlmICghVkFMSURfU1RSSU5HKGEpKQotKwkJY29udGludWU7Ci0rCi0gCSAgICBmb3IgKGsgPSBqICsgMTsgZ2l2ZW5ba10ua2V5Y29kZTsgaysrKSB7Ci0gCQljb25zdCBjaGFyICpiID0gZ2l2ZW5ba10udmFsdWU7Ci0rCi0rCQlpZiAoIVZBTElEX1NUUklORyhiKSkKLSsJCSAgICBjb250aW51ZTsKLSAJCWlmIChjaGVja1trXSkKLSAJCSAgICBjb250aW51ZTsKLSsKLSAJCWlmICghX25jX2NhcGNtcChhLCBiKSkgewotIAkJICAgIGNoZWNrW2pdID0gMTsKLSAJCSAgICBjaGVja1trXSA9IDE7Ci1AQCAtMjQzMSw2ICsyNDQzLDY3IEBAIGNoZWNrX2NvbmZsaWN0KFRFUk1UWVBFMiAqdHApCi0gCSAgICBpZiAoIWZpcnN0KQotIAkJZnByaW50ZihzdGRlcnIsICJcbiIpOwotIAl9Ci0rI2lmIE5DVVJTRVNfWE5BTUVTCi0rCWlmICh1c2luZ19leHRlbnNpb25zKSB7Ci0rCSAgICAvKiAqSU5ERU5ULU9GRiogKi8KLSsJICAgIHN0YXRpYyBzdHJ1Y3QgewotKwkJY29uc3QgY2hhciAqeGN1cnNlczsKLSsJCWNvbnN0IGNoYXIgKnNoaWZ0ZWQ7Ci0rCSAgICB9IHRhYmxlW10gPSB7Ci0rCQl7ICJrREMiLCAgTlVMTCB9LAotKwkJeyAia0ROIiwgICJraW5kIiB9LAotKwkJeyAia0VORCIsIE5VTEwgfSwKLSsJCXsgImtIT00iLCBOVUxMIH0sCi0rCQl7ICJrTEZUIiwgTlVMTCB9LAotKwkJeyAia05YVCIsIE5VTEwgfSwKLSsJCXsgImtQUlYiLCBOVUxMIH0sCi0rCQl7ICJrUklUIiwgTlVMTCB9LAotKwkJeyAia1VQIiwgICJrcmkiIH0sCi0rCQl7IE5VTEwsICAgTlVMTCB9LAotKwkgICAgfTsKLSsJICAgIC8qICpJTkRFTlQtT04qICovCi0rCi0rCSAgICAvKgotKwkgICAgICogU1ZyNCBjdXJzZXMgZGVmaW5lcyB0aGUgInhjdXJzZXMiIG5hbWVzIGxpc3RlZCBhYm92ZSBleGNlcHQgZm9yCi0rCSAgICAgKiB0aGUgc3BlY2lhbCBjYXNlcyBpbiB0aGUgInNoaWZ0ZWQiIGNvbHVtbi4gIFdoZW4gdXNpbmcgdGhlc2UKLSsJICAgICAqIG5hbWVzIGZvciB4dGVybSdzIGV4dGVuc2lvbnMsIHRoYXQgd2FzIGNvbmZ1c2luZywgYW5kIHJlc3VsdGVkCi0rCSAgICAgKiBpbiBhZGRpbmcgZXh0ZW5kZWQgY2FwYWJpbGl0aWVzIHdpdGggIjIiIChzaGlmdCkgc3VmZml4LiAgVGhpcwotKwkgICAgICogY2hlY2sgd2FybnMgYWJvdXQgdW5uZWNlc3NhcnkgdXNlIG9mIGV4dGVuc2lvbnMgZm9yIHRoaXMgcXVpcmsuCi0rCSAgICAgKi8KLSsJICAgIGZvciAoaiA9IDA7IGdpdmVuW2pdLmtleWNvZGU7ICsraikgewotKwkJY29uc3QgY2hhciAqZmluZCA9IGdpdmVuW2pdLm5hbWU7Ci0rCQlpbnQgdmFsdWU7Ci0rCQljaGFyIGNoOwotKwotKwkJaWYgKCFWQUxJRF9TVFJJTkcoZ2l2ZW5bal0udmFsdWUpKQotKwkJICAgIGNvbnRpbnVlOwotKwotKwkJZm9yIChrID0gMDsgdGFibGVba10ueGN1cnNlczsgKytrKSB7Ci0rCQkgICAgY29uc3QgY2hhciAqdGVzdCA9IHRhYmxlW2tdLnhjdXJzZXM7Ci0rCQkgICAgc2l6ZV90IHNpemUgPSBzdHJsZW4odGVzdCk7Ci0rCi0rCQkgICAgaWYgKCFzdHJuY21wKGZpbmQsIHRlc3QsIHNpemUpICYmIHN0cmNtcChmaW5kLCB0ZXN0KSkgewotKwkJCXN3aXRjaCAoc3NjYW5mKGZpbmQgKyBzaXplLCAiJWQlYyIsICZ2YWx1ZSwgJmNoKSkgewotKwkJCWNhc2UgMToKLSsJCQkgICAgaWYgKHZhbHVlID09IDIpIHsKLSsJCQkJX25jX3dhcm5pbmcoImV4cGVjdGVkICclcycgcmF0aGVyIHRoYW4gJyVzJyIsCi0rCQkJCQkgICAgKHRhYmxlW2tdLnNoaWZ0ZWQKLSsJCQkJCSAgICAgPyB0YWJsZVtrXS5zaGlmdGVkCi0rCQkJCQkgICAgIDogdGVzdCksIGZpbmQpOwotKwkJCSAgICB9IGVsc2UgaWYgKHZhbHVlIDwgMiB8fCB2YWx1ZSA+IDE1KSB7Ci0rCQkJCV9uY193YXJuaW5nKCJleHBlY3RlZCBudW1lcmljIDIuLjE1ICclcyciLCBmaW5kKTsKLSsJCQkgICAgfQotKwkJCSAgICBicmVhazsKLSsJCQlkZWZhdWx0OgotKwkJCSAgICBfbmNfd2FybmluZygiZXhwZWN0ZWQgbnVtZXJpYyBzdWZmaXggZm9yICclcyciLCBmaW5kKTsKLSsJCQkgICAgYnJlYWs7Ci0rCQkJfQotKwkJCWJyZWFrOwotKwkJICAgIH0KLSsJCX0KLSsJICAgIH0KLSsJfQotKyNlbmRpZgotIAlmcmVlKGdpdmVuKTsKLSAJZnJlZShjaGVjayk7Ci0gICAgIH0KLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlcy5pbmMKaW5kZXggMWYyMWNkNC4uMDFlNDFkNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlcy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlcy5pbmMKQEAgLTEzLDcgKzEzLDcgQEAKIGluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBtdWx0aWxpYl9oZWFkZXIgcGtnY29uZmlnCiAKICMgVXBzdHJlYW0gaGFzIHVzZWZ1bCBwYXRjaGVzIGF0IHRpbWVzIGF0IGZ0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvCi1TUkNfVVJJID0gImdpdDovL2Fub25zY20uZGViaWFuLm9yZy9jb2xsYWItbWFpbnQvbmN1cnNlcy5naXQiCitTUkNfVVJJID0gImdpdDovL3NhbHNhLmRlYmlhbi5vcmcvZGViaWFuL25jdXJzZXMuZ2l0O3Byb3RvY29sPWh0dHBzIgogCiBFWFRSQV9BVVRPUkVDT05GID0gIi1JIG00IgogQ09ORklHX1NJVEUgPSsgIiR7V09SS0RJUn0vY29uZmlnLmNhY2hlIgpAQCAtNTksNiArNTksNyBAQAogRVhfVEVSTUlORk8gPSAiIgogRVhfVEVSTUlORk9fY2xhc3MtbmF0aXZlID0gIjovZXRjL3Rlcm1pbmZvOi91c3Ivc2hhcmUvdGVybWluZm86L3Vzci9zaGFyZS9taXNjL3Rlcm1pbmZvOi9saWIvdGVybWluZm8iCiBFWF9URVJNSU5GT19jbGFzcy1uYXRpdmVzZGsgPSAiOi9ldGMvdGVybWluZm86L3Vzci9zaGFyZS90ZXJtaW5mbzovdXNyL3NoYXJlL21pc2MvdGVybWluZm86L2xpYi90ZXJtaW5mbyIKK0VYX1RFUk1MSUIgPz0gInRpbmZvIgogCiAjIEhlbHBlciBmdW5jdGlvbiBmb3IgZG9fY29uZmlndXJlIHRvIGFsbG93IG11bHRpcGxlIGNvbmZpZ3VyYXRpb25zCiAjICQxIHRoZSBkaXJlY3RvcnkgdG8gcnVuIGNvbmZpZ3VyZSBpbgpAQCAtODAsNyArODEsNyBAQAogCSAgICAgICAgLS1kaXNhYmxlLWJpZy1jb3JlIFwKIAkgICAgICAgIC0tcHJvZ3JhbS1wcmVmaXg9IFwKIAkgICAgICAgIC0td2l0aC10aWNsaWIgXAotCSAgICAgICAgLS13aXRoLXRlcm1saWI9dGluZm8gXAorCSAgICAgICAgLS13aXRoLXRlcm1saWI9JHtFWF9URVJNTElCfSBcCiAJICAgICAgICAtLWVuYWJsZS1zaWd3aW5jaCBcCiAJICAgICAgICAtLWVuYWJsZS1wYy1maWxlcyBcCiAJICAgICAgICAtLWRpc2FibGUtcnBhdGgtaGFjayBcCkBAIC0yMDEsNyArMjAyLDEwIEBACiAgICAgICAgICAgICAgICAgbG4gLXNmIHh0ZXJtLWNvbG9yICR7RH0ke3N5c2NvbmZkaXJ9L3Rlcm1pbmZvL3gveHRlcm0KICAgICAgICAgZmkKIAotICAgICAgICBybSAtZiAke0R9JHtsaWJkaXJ9L3Rlcm1pbmZvCisgICAgICAgICMgV2hlbiBjaGFuZ2luZyAke2xpYmRpcn0gdG8gZS5nLiAvdXNyL2xpYi9teWF3ZXNvbWVsaWIvIG5jdXJzZXMgCisgICAgICAgICMgc3RpbGwgaW5zdGFsbHMgJy91c3IvbGliL3Rlcm1pbmZvJywgc28gdHJ5IHRvIHJtIGJvdGggCisgICAgICAgICMgdGhlIHByb3BlciBwYXRoIGFuZCBhIHNsaWdodGx5IGhhcmRjb2RlZCBvbmUKKyAgICAgICAgcm0gLWYgJHtEfSR7bGliZGlyfS90ZXJtaW5mbyAke0R9JHtwcmVmaXh9L2xpYi90ZXJtaW5mbwogCiAgICAgICAgICMgY3JlYXRlIGxpbmtlciBzY3JpcHRzIGZvciBsaWJjdXJzZXMuc28gYW5kIGxpYm5jdXJzZXMgdG8KICAgICAgICAgIyBsaW5rIGFnYWluc3QgLWx0aW5mbyB3aGVuIG5lZWRlZC4gU29tZSBidWlsZHMgbWlnaHQgYnJlYWsKQEAgLTIyNyw3ICsyMzEsNyBAQAogICAgICAgICBpZiBbICEgLWQgIiR7RH0ke2Jhc2VfbGliZGlyfSIgXTsgdGhlbgogICAgICAgICAgICAgIyBTZXR0aW5nIGJhc2VfbGliZGlyIHRvIGxpYmRpciBhcyBpcyBkb25lIGluIHRoZSAtbmF0aXZlCiAgICAgICAgICAgICAjIGNhc2Ugd2lsbCBza2lwIHRoaXMgY29kZQotICAgICAgICAgICAgbWtkaXIgJHtEfSR7YmFzZV9saWJkaXJ9CisgICAgICAgICAgICBta2RpciAtcCAke0R9JHtiYXNlX2xpYmRpcn0KICAgICAgICAgICAgIG12ICR7RH0ke2xpYmRpcn0vbGlibmN1cnNlcy5zby4qICR7RH0ke2Jhc2VfbGliZGlyfQogICAgICAgICAgICAgISAke0VOQUJMRV9XSURFQ30gfHwgXAogICAgICAgICAgICAgICAgIG12ICR7RH0ke2xpYmRpcn0vbGlibmN1cnNlc3cuc28uKiAke0R9JHtiYXNlX2xpYmRpcn0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4wKzIwMTcwNzE1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjArMjAxNzA3MTUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxZGE1ZDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjArMjAxNzA3MTUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1yZXF1aXJlIG5jdXJzZXMuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLXRpYy1oYW5nLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbmZpZ3VyZS1yZXByb2R1Y2libGUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2NvbmZpZy5jYWNoZSBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTM3MzItQ1ZFLTIwMTctMTM3MzQtQ1ZFLTIwMTctMTM3MzAtQ1ZFLTIwMTctMTM3MjktQ1ZFLTIwMTctMTM3MjgtQ1ZFLTIwMTctMTM3MzEucGF0Y2ggXAotIgotIyBjb21taXQgaWQgY29ycmVzcG9uZHMgdG8gdGhlIHJldmlzaW9uIGluIHBhY2thZ2UgdmVyc2lvbgotU1JDUkVWID0gIjUyNjgxYTZhMWExOGI0ZDZlYjFhNzE2NTEyZDBkZDgyN2JkNzFjODciCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtYWJpLXZlcnNpb249NSIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKFwrXGQrKSopIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjArMjAxNzExMjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzXzYuMCsyMDE3MTEyNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzRiOTZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjArMjAxNzExMjUuYmIKQEAgLTAsMCArMSwxMSBAQAorcmVxdWlyZSBuY3Vyc2VzLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS10aWMtaGFuZy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUtcmVwcm9kdWNpYmxlLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9jb25maWcuY2FjaGUgXAorIgorIyBjb21taXQgaWQgY29ycmVzcG9uZHMgdG8gdGhlIHJldmlzaW9uIGluIHBhY2thZ2UgdmVyc2lvbgorU1JDUkVWID0gIjVkODQ5ZTgzNjA1MjQ1OTkwMWNmZTBiODVhMGIyOTM5ZmY4ZDJiMmEiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorRVhUUkFfT0VDT05GICs9ICItLXdpdGgtYWJpLXZlcnNpb249NSIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKFwrXGQrKSopIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi9uby1zdGFjay1wcm90ZWN0b3ItYWxsLWFyY2hzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi9uby1zdGFjay1wcm90ZWN0b3ItYWxsLWFyY2hzLnBhdGNoCmluZGV4IDk1OWIxYzYuLjI1ZTViNTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvbm8tc3RhY2stcHJvdGVjdG9yLWFsbC1hcmNocy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mL25vLXN0YWNrLXByb3RlY3Rvci1hbGwtYXJjaHMucGF0Y2gKQEAgLTE3LDQgKzE3LDQgQEAKICtERUZJTkUgR0NDNDRfQUxMX0NDX0ZMQUdTICAgICAgICAgICAgPSAtZyAtZnNob3J0LXdjaGFyIC1mbm8tYnVpbHRpbiAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtV2Vycm9yIC1Xbm8tYXJyYXktYm91bmRzIC1mZnVuY3Rpb24tc2VjdGlvbnMgLWZkYXRhLXNlY3Rpb25zIC1mbm8tc3RhY2stcHJvdGVjdG9yIC1pbmNsdWRlIEF1dG9HZW4uaCAtZm5vLWNvbW1vbiAtRFNUUklOR19BUlJBWV9OQU1FPSQoQkFTRV9OQU1FKVN0cmluZ3MNCiAgREVGSU5FIEdDQzQ0X0lBMzJfQ0NfRkxBR1MgICAgICAgICAgID0gREVGKEdDQzQ0X0FMTF9DQ19GTEFHUykgLW0zMiAtbWFyY2g9aTU4NiAtbWFsaWduLWRvdWJsZSAtZm5vLXN0YWNrLXByb3RlY3RvciAtRCBFRkkzMiAtZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIC1mbm8tUElFIC1uby1waWUNCiAgREVGSU5FIEdDQzQ0X1g2NF9DQ19GTEFHUyAgICAgICAgICAgID0gREVGKEdDQzQ0X0FMTF9DQ19GTEFHUykgLW02NCAtZm5vLXN0YWNrLXByb3RlY3RvciAiLURFRklBUEk9X19hdHRyaWJ1dGVfXygobXNfYWJpKSkiIC1tYWNjdW11bGF0ZS1vdXRnb2luZy1hcmdzIC1tbm8tcmVkLXpvbmUgLVduby1hZGRyZXNzIC1tY21vZGVsPXNtYWxsIC1mcGllIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMNCi0gREVGSU5FIEdDQzQ0X0lBMzJfWDY0X0RMSU5LX0NPTU1PTiAgID0gLW5vc3RkbGliIC1XbCwtbiwtcSwtLWdjLXNlY3Rpb25zIC16IGNvbW1vbi1wYWdlLXNpemU9MHgyMA0KKyBERUZJTkUgR0NDNDRfSUEzMl9YNjRfRExJTktfQ09NTU9OICAgPSAtbm9zdGRsaWIgLVdsLC1uLC1xLC0tZ2Mtc2VjdGlvbnMgLXogY29tbW9uLXBhZ2Utc2l6ZT0weDIwIC1uby1waWUNCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWZfZ2l0LmJiCmluZGV4IGZhMGQ2NjIuLjg3NTBiM2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWZfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWZfZ2l0LmJiCkBAIC0xNTEsNyArMTUxLDcgQEAKIAogZG9fY29tcGlsZV9jbGFzcy10YXJnZXQoKSB7CiAgICAgZXhwb3J0IExGTEFHUz0iJHtMREZMQUdTfSIKLSAgICBQQVJBTExFTF9KT0JTPSIke0AgJyR7UEFSQUxMRUxfTUFLRX0nLnJlcGxhY2UoJy1qJywgJy1uICcpfSIKKyAgICBQQVJBTExFTF9KT0JTPSIke0BvZS51dGlscy5wYXJhbGxlbF9tYWtlX2FyZ3VtZW50KGQsICctbiAlZCcpfSIKICAgICBPVk1GX0FSQ0g9Ilg2NCIKICAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgIT0gIng4Nl82NCIgXSA7IHRoZW4KICAgICAgICAgT1ZNRl9BUkNIPSJJQTMyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvbmF0aXZlc2RrLXBhY2thZ2Vncm91cC1zZGstaG9zdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL25hdGl2ZXNkay1wYWNrYWdlZ3JvdXAtc2RrLWhvc3QuYmIKaW5kZXggYWVlNGEwMy4uZTJmNjE2OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvbmF0aXZlc2RrLXBhY2thZ2Vncm91cC1zZGstaG9zdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9uYXRpdmVzZGstcGFja2FnZWdyb3VwLXNkay1ob3N0LmJiCkBAIC0yMyw4ICsyMyw4IEBACiAgICAgbmF0aXZlc2RrLW1ha2VkZXZzIFwKICAgICBuYXRpdmVzZGstZG5mIFwKICAgICBuYXRpdmVzZGstY21ha2UgXAotICAgIG5hdGl2ZXNkay1wb3N0aW5zdC1pbnRlcmNlcHQgXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICduYXRpdmVzZGstd2F5bGFuZCcsICcnLCBkKX0gXAorICAgIG5hdGl2ZXNkay1zZGstcHJvdmlkZXMtZHVtbXkgXAogICAgICIKIAogUkRFUEVORFNfJHtQTn1fZGFyd2luID0gIlwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1iYXNlLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWJhc2UuYmIKaW5kZXggZjllNmUyZS4uYmIxOTJhZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWJhc2UuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWJhc2UuYmIKQEAgLTU0LDcgKzU0LDYgQEAKICAgICBwYWNrYWdlZ3JvdXAtZGlzdHJvLWJhc2UgXAogICAgIHBhY2thZ2Vncm91cC1tYWNoaW5lLWJhc2UgXAogICAgIFwKLSAgICBzeXNmc3V0aWxzIFwKICAgICBtb2R1bGUtaW5pdC10b29scyBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAnYXBtJywgJ3BhY2thZ2Vncm91cC1iYXNlLWFwbScsICcnLGQpfSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAnYWNwaScsICdwYWNrYWdlZ3JvdXAtYmFzZS1hY3BpJywgJycsZCl9IFwKQEAgLTE1Miw4ICsxNTEsNyBAQAogCiBTVU1NQVJZX3BhY2thZ2Vncm91cC1iYXNlLWFjcGkgPSAiQUNQSSBzdXBwb3J0IgogUkRFUEVORFNfcGFja2FnZWdyb3VwLWJhc2UtYWNwaSA9ICJcCi0gICAgYWNwaWQgXAotICAgIGxpYmFjcGkgIgorICAgIGFjcGlkIgogCiBTVU1NQVJZX3BhY2thZ2Vncm91cC1iYXNlLWFwbSA9ICJBUE0gc3VwcG9ydCIKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1iYXNlLWFwbSA9ICJcCkBAIC0yOTIsOCArMjkwLDYgQEAKIFNVTU1BUllfcGFja2FnZWdyb3VwLWJhc2Utd2lmaSA9ICJXaUZpIHN1cHBvcnQiCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtYmFzZS13aWZpID0gIlwKICAgICAke1ZJUlRVQUwtUlVOVElNRV93aXJlbGVzcy10b29sc30gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdDT01CSU5FRF9GRUFUVVJFUycsICdwY21jaWEnLCAnaG9zdGFwLXV0aWxzJywgJycsZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnQ09NQklORURfRkVBVFVSRVMnLCAncGNpJywgJ2hvc3RhcC11dGlscycsICcnLGQpfSBcCiAgICAgd3BhLXN1cHBsaWNhbnQiCiAKIFJSRUNPTU1FTkRTX3BhY2thZ2Vncm91cC1iYXNlLXdpZmkgPSAiXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtYm9vdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWJvb3QuYmIKaW5kZXggMDRiYzBmMi4uNzZjZDdmYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtYm9vdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1ib290LmJiCkBAIC0yMyw2ICsyMyw4IEBACiBWSVJUVUFMLVJVTlRJTUVfaW5pdHNjcmlwdHMgPz0gImluaXRzY3JpcHRzIgogVklSVFVBTC1SVU5USU1FX2tleW1hcHMgPz0gImtleW1hcHMiCiAKK0VGSV9QUk9WSURFUiA/Pz0gImdydWItZWZpIgorCiBTWVNWSU5JVF9TQ1JJUFRTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3J0YycsICcke1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzLWh3Y2xvY2t9JywgJycsIGQpfSBcCiAgICAgICAgICAgICAgICAgICAgIG1vZHV0aWxzLWluaXRzY3JpcHRzIFwKICAgICAgICAgICAgICAgICAgICAgaW5pdC1pZnVwZG93biBcCkBAIC0zNSw2ICszNyw3IEBACiAgICAgJHtWSVJUVUFMLVJVTlRJTUVfYmFzZS11dGlsc30gXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAic3lzdmluaXQiLCAiJHtTWVNWSU5JVF9TQ1JJUFRTfSIsICIiLCBkKX0gXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNQUNISU5FX0ZFQVRVUkVTIiwgImtleWJvYXJkIiwgIiR7VklSVFVBTC1SVU5USU1FX2tleW1hcHN9IiwgIiIsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIk1BQ0hJTkVfRkVBVFVSRVMiLCAiZWZpIiwgIiR7RUZJX1BST1ZJREVSfSBrZXJuZWwiLCAiIiwgZCl9IFwKICAgICBuZXRiYXNlIFwKICAgICAke1ZJUlRVQUwtUlVOVElNRV9sb2dpbl9tYW5hZ2VyfSBcCiAgICAgJHtWSVJUVUFMLVJVTlRJTUVfaW5pdF9tYW5hZ2VyfSBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1zZGsuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1zZGsuYmIKaW5kZXggYWYwY2UyMC4uNDVlOGMxMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtc2RrLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXNkay5iYgpAQCAtMjcsMTEgKzI3LDEwIEBACiAgICAgdGNsIgogCiBTQU5JVElaRVJTID0gImxpYmFzYW4tZGV2IGxpYnVic2FuLWRldiIKLVNBTklUSVpFUlNfYWFyY2g2NCA9ICIiCitTQU5JVElaRVJTX21pY3JvYmxhemUgPSAiIgogU0FOSVRJWkVSU19taXBzYXJjaCA9ICIiCiBTQU5JVElaRVJTX25pb3MyID0gIiIKLVNBTklUSVpFUlNfcG93ZXJwYzY0ID0gIiIKLVNBTklUSVpFUlNfc3BhcmMgPSAiIgorU0FOSVRJWkVSU19yaXNjdjY0ID0gIiIKIFNBTklUSVpFUlNfbGliYy1tdXNsID0gIiIKIAogUlJFQ09NTUVORFNfcGFja2FnZWdyb3VwLWNvcmUtc2RrID0gIlwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXByb2ZpbGUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy1wcm9maWxlLmJiCmluZGV4IGE4ZTQ3ZGEuLmZhMGUzNjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXByb2ZpbGUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtcHJvZmlsZS5iYgpAQCAtMjYsNyArMjYsNiBAQAogCiBQUk9GSUxFVE9PTFMgPSAiXAogICAgIHBvd2VydG9wIFwKLSAgICBsYXRlbmN5dG9wIFwKICAgICAiCiBQRVJGID0gInBlcmYiCiBQRVJGX2xpYmMtbXVzbCA9ICIiCkBAIC0zNCwxNiArMzMsMTYgQEAKICMgc3lzdGVtdGFwIG5lZWRzIGVsZnV0aWxzIHdoaWNoIGlzIG5vdCBmdWxseSBidWlsZGFibGUgb24gc29tZSBhcmNoZXMvbGliY3MKIFNZU1RFTVRBUCA9ICJzeXN0ZW10YXAiCiBTWVNURU1UQVBfbGliYy1tdXNsID0gIiIKLVNZU1RFTVRBUF9taXBzYXJjaCA9ICIiCiBTWVNURU1UQVBfbmlvczIgPSAiIgotU1lTVEVNVEFQX2FhcmNoNjQgPSAiIgogCiAjIGx0dG5nLXVzdCB1c2VzIHNjaGVkX2dldGNwdSgpIHdoaWNoIGlzIG5vdCB0aGVyZSBvbiBmb3Igc29tZSBwbGF0Zm9ybXMuCiBMVFROR1VTVCA9ICJsdHRuZy11c3QiCiBMVFROR1VTVF9saWJjLW11c2wgPSAiIgorTFRUTkdVU1RfcmlzY3Y2NCA9ICIiCiAKIExUVE5HVE9PTFMgPSAibHR0bmctdG9vbHMiCiBMVFROR1RPT0xTX2xpYmMtbXVzbCA9ICIiCitMVFROR1RPT0xTX3Jpc2N2NjQgPSAiIgogCiBMVFROR01PRFVMRVMgPSAibHR0bmctbW9kdWxlcyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtdGVzdGFwcHMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy10ZXN0YXBwcy5iYgppbmRleCAzMTcwOTc4Li5iOGU1MDcwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy10ZXN0YXBwcy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy10ZXN0YXBwcy5iYgpAQCAtMTAsOSArMTAsMTAgQEAKIAogaW5oZXJpdCBwYWNrYWdlZ3JvdXAKIAotIyBrZXhlYy10b29scyBkb2Vzbid0IHdvcmsgb24gZTU1MDAtNjRiIGFuZCBuaW9zMiB5ZXQKKyMga2V4ZWMtdG9vbHMgZG9lc24ndCB3b3JrIG9uIGU1NTAwLTY0YiwgbWljcm9ibGF6ZSBhbmQgbmlvczIgeWV0CiBLRVhFQ1RPT0xTID89ICJrZXhlYyIKIEtFWEVDVE9PTFNfZTU1MDAtNjRiID89ICIiCitLRVhFQ1RPT0xTX21pY3JvYmxhemUgPz0gIiIKIEtFWEVDVE9PTFNfbmlvczIgPz0gIiIKIAogWDExR0xUT09MUyA9ICJcCkBAIC0yNSw3ICsyNiw3IEBACiAKIFgxMVRPT0xTID0gIlwKICAgICBmc3Rlc3RzIFwKLSAgICBnc3QtcGxheWVyIFwKKyAgICBnc3QtZXhhbXBsZXMgXAogICAgIHgxMXBlcmYgXAogICAgIHhyZXN0b3AgXAogICAgIHh3aW5pbmZvIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1nby1zZGstdGFyZ2V0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdvLXNkay10YXJnZXQuYmIKaW5kZXggM2UxOTA3Ny4uN2QyY2NiZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdvLXNkay10YXJnZXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdvLXNkay10YXJnZXQuYmIKQEAgLTUsNCArNSw1IEBACiBSREVQRU5EU18ke1BOfSA9ICIgXAogICAgIGdvLXJ1bnRpbWUgXAogICAgIGdvLXJ1bnRpbWUtZGV2IFwKKyAgICBnby1ydW50aW1lLXN0YXRpY2RldiBcCiAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQuYmIKaW5kZXggZmY0Mjg2Ni4uYWRiMGM1NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1zZWxmLWhvc3RlZC5iYgpAQCAtMTM2LDcgKzEzNiw2IEBACiAgICAgbXRvb2xzIFwKICAgICBuY3Vyc2VzIFwKICAgICBuY3Vyc2VzLXRlcm1pbmZvLWJhc2UgXAotICAgIG5lb24gXAogICAgIG5mcy11dGlscyBcCiAgICAgbmZzLXV0aWxzLWNsaWVudCBcCiAgICAgb3BlbnNzbCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9wc3BsYXNoX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL3BzcGxhc2hfZ2l0LmJiCmluZGV4IDNiN2Y4MTguLmFhYjJjMDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL3BzcGxhc2hfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL3BzcGxhc2hfZ2l0LmJiCkBAIC0xMiw3ICsxMiw3IEBACiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyR7QlBOfSBcCiAgICAgICAgICAgIGZpbGU6Ly9wc3BsYXNoLWluaXQgXAogICAgICAgICAgICAke1NQTEFTSF9JTUFHRVN9IgotVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCitVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCiAKIFNQTEFTSF9JTUFHRVMgPSAiZmlsZTovL3BzcGxhc2gtcG9reS1pbWcuaDtvdXRzdWZmaXg9ZGVmYXVsdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290XzIzNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtYm9vdF8yMzQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiMThiMjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290XzIzNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLXJlcXVpcmUgc3lzdGVtZC5pbmMKLUZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L3N5c3RlbWQ6IgotCi1ERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSBsaWJjYXAgdXRpbC1saW51eCBnbnUtZWZpIGdwZXJmLW5hdGl2ZSIKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDctdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKLWluaGVyaXQgZGVwbG95Ci0KLUVGSV9DQyA/PSAiJHtDQ30iCi0jIE1hbiBwYWdlcyBhcmUgcGFja2FnZWQgdGhyb3VnaCB0aGUgbWFpbiBzeXN0ZW1kIHJlY2lwZQotRVhUUkFfT0VDT05GID0gIiAtLWVuYWJsZS1nbnVlZmkgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtZWZpLWluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgICAgICAgICAgICAgICAtLXdpdGgtZWZpLWxkc2Rpcj0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1lZmktbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW1hbnBhZ2VzIFwKLSAgICAgICAgICAgICAgICAgRUZJX0NDPScke0VGSV9DQ30nIFwKLSAgICAgICAgICAgICAgICIKLQotIyBJbXBvcnRlZCBmcm9tIHRoZSBvbGQgZ3VtbWlib290IHJlY2lwZQotVFVORV9DQ0FSR1NfcmVtb3ZlID0gIi1tZnBtYXRoPXNzZSIKLUNPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0Lip8aS44Ni4qKS1saW51eCIKLUNPTVBBVElCTEVfSE9TVF9saW51eC1nbnV4MzIgPSAibnVsbCIKLQotZG9fY29tcGlsZSgpIHsKLQlTWVNURU1EX0JPT1RfRUZJX0FSQ0g9ImlhMzIiCi0JaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgXTsgdGhlbgotCQlTWVNURU1EX0JPT1RfRUZJX0FSQ0g9Ing2NCIKLQlmaQotCi0Jb2VfcnVubWFrZSBzeXN0ZW1kLWJvb3Qke1NZU1RFTURfQk9PVF9FRklfQVJDSH0uZWZpCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JIyBCeXBhc3Mgc3lzdGVtZCBpbnN0YWxsYXRpb24gd2l0aCBhIE5PUAotCToKLX0KLQotZG9fZGVwbG95ICgpIHsKLQlpbnN0YWxsICR7Qn0vc3lzdGVtZC1ib290Ki5lZmkgJHtERVBMT1lESVJ9Ci19Ci1hZGR0YXNrIGRlcGxveSBiZWZvcmUgZG9fYnVpbGQgYWZ0ZXIgZG9fY29tcGlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290XzIzNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtYm9vdF8yMzcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZkMzg0OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtYm9vdF8yMzcuYmIKQEAgLTAsMCArMSw3MCBAQAorcmVxdWlyZSBzeXN0ZW1kLmluYworRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vc3lzdGVtZDoiCisKK0RFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIGxpYmNhcCB1dGlsLWxpbnV4IGdudS1lZmkgZ3BlcmYtbmF0aXZlIgorCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMy11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDI3LXJlbW92ZS1ub2JvZHktdXNlci1ncm91cC1jaGVja2luZy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1BbHNvLWNoZWNrLWkzODYtaTU4Ni1hbmQtaTY4Ni1mb3ItaWEzMi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtdG8tcnVuLWVmaV9jYy1hbmQtZWZpX2xkLWNvcnJlY3RseS13aGVuLWNyb3NzLWNvLnBhdGNoIFwKKyAgICAgICAgICAgICIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZ2V0dGV4dAoraW5oZXJpdCBkZXBsb3kKKworRUZJX0NDID89ICIke0NDfSIKK0VYVFJBX09FTUVTT04gKz0gIi1EZWZpPXRydWUgXAorICAgICAgICAgICAgICAgICAgLURnbnUtZWZpPXRydWUgXAorICAgICAgICAgICAgICAgICAgLURlZmktaW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfS9lZmkgXAorICAgICAgICAgICAgICAgICAgLURlZmktbGRzZGlyPSR7U1RBR0lOR19MSUJESVJ9IFwKKyAgICAgICAgICAgICAgICAgIC1EZWZpLWxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSBcCisgICAgICAgICAgICAgICAgICAtRG1hbj1mYWxzZSBcCisgICAgICAgICAgICAgICAgICAtRGVmaS1jYz0nJHtFRklfQ0N9JyBcCisgICAgICAgICAgICAgICAgICAtRGVmaS1sZD0nJHtMRH0nIFwKKyAgICAgICAgICAgICAgICAgICIKKworIyBpbnN0YWxsIHRvIHRoZSBpbWFnZSBhcyBib290Ki5lZmkgaWYgaXRzIHRoZSBFRklfUFJPVklERVIsCisjIG90aGVyd2lzZSBpbnN0YWxsIGFzIHRoZSBmdWxsIG5hbWUuCisjIFRoaXMgYWxsb3dzIG11bHRpcGxlIGJvb3Rsb2FkZXJzIHRvIGNvZXhpc3QgaW4gYSBzaW5nbGUgaW1hZ2UuCitweXRob24gX19hbm9ueW1vdXMgKCkgeworICAgIGltcG9ydCByZQorICAgIHRhcmdldCA9IGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpCisgICAgcHJlZml4ID0gIiIgaWYgZC5nZXRWYXIoJ0VGSV9QUk9WSURFUicsIFRydWUpID09ICJzeXN0ZW1kLWJvb3QiIGVsc2UgInN5c3RlbWQtIgorICAgIGlmIHRhcmdldCA9PSAieDg2XzY0IjoKKyAgICAgICAgc3lzdGVtZGltYWdlID0gcHJlZml4ICsgImJvb3R4NjQuZWZpIgorICAgIGVsc2U6CisgICAgICAgIHN5c3RlbWRpbWFnZSA9IHByZWZpeCArICJib290aWEzMi5lZmkiCisgICAgZC5zZXRWYXIoIlNZU1RFTURfQk9PVF9JTUFHRSIsIHN5c3RlbWRpbWFnZSkKKyAgICBwcmVmaXggPSAic3lzdGVtZC0iIGlmIHByZWZpeCA9PSAiIiBlbHNlICIiCisgICAgZC5zZXRWYXIoIlNZU1RFTURfQk9PVF9JTUFHRV9QUkVGSVgiLCBwcmVmaXgpCit9CisKK0ZJTEVTXyR7UE59ID0gIi9ib290L0VGSS9CT09ULyR7U1lTVEVNRF9CT09UX0lNQUdFfSIKKworUkRFUEVORFNfJHtQTn0gKz0gInZpcnR1YWwvc3lzdGVtZC1ib290Y29uZiIKKworIyBJbXBvcnRlZCBmcm9tIHRoZSBvbGQgZ3VtbWlib290IHJlY2lwZQorVFVORV9DQ0FSR1NfcmVtb3ZlID0gIi1tZnBtYXRoPXNzZSIKK0NPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0Lip8aS44Ni4qKS1saW51eCIKK0NPTVBBVElCTEVfSE9TVF94ODYteDMyID0gIm51bGwiCisKK2RvX2NvbXBpbGUoKSB7CisJU1lTVEVNRF9CT09UX0VGSV9BUkNIPSJpYTMyIgorCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIF07IHRoZW4KKwkJU1lTVEVNRF9CT09UX0VGSV9BUkNIPSJ4NjQiCisJZmkKKworCW5pbmphIHNyYy9ib290L2VmaS8ke1NZU1RFTURfQk9PVF9JTUFHRV9QUkVGSVh9JHtTWVNURU1EX0JPT1RfSU1BR0V9Cit9CisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAke0R9L2Jvb3QKKwlpbnN0YWxsIC1kICR7RH0vYm9vdC9FRkkKKwlpbnN0YWxsIC1kICR7RH0vYm9vdC9FRkkvQk9PVAorCWluc3RhbGwgJHtCfS9zcmMvYm9vdC9lZmkvc3lzdGVtZC1ib290Ki5lZmkgJHtEfS9ib290L0VGSS9CT09ULyR7U1lTVEVNRF9CT09UX0lNQUdFfQorfQorCitkb19kZXBsb3kgKCkgeworCWluc3RhbGwgJHtCfS9zcmMvYm9vdC9lZmkvc3lzdGVtZC1ib290Ki5lZmkgJHtERVBMT1lESVJ9Cit9CithZGR0YXNrIGRlcGxveSBiZWZvcmUgZG9fYnVpbGQgYWZ0ZXIgZG9fY29tcGlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290Y29uZl8xLjAwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290Y29uZl8xLjAwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5YzI0NjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWJvb3Rjb25mXzEuMDAuYmIKQEAgLTAsMCArMSwzMSBAQAorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKK1NVTU1BUlkgPSAiQmFzaWMgc3lzdGVtZC1ib290IGNvbmZpZ3VyYXRpb24gZmlsZXMiCisKK1JQUk9WSURFU18ke1BOfSArPSAidmlydHVhbC9zeXN0ZW1kLWJvb3Rjb25mIgorCitpbmhlcml0IHN5c3RlbWQtYm9vdC1jZmcKKworUyA9ICIke1dPUktESVJ9IgorCitMQUJFTFMgPSAiYm9vdCIKKworUk9PVCA/PSAicm9vdD0vZGV2L3NkYTIiCitBUFBFTkRfYXBwZW5kID0gIiAke1JPT1R9IgorCitweXRob24gZG9fY29uZmlndXJlKCkgeworICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnYnVpbGRfZWZpX2NmZycsIGQpCit9CisKK2RvX2NvbmZpZ3VyZVt2YXJkZXBzXSArPSAiQVBQRU5EIgorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfS9ib290CisJaW5zdGFsbCAtZCAke0R9L2Jvb3QvbG9hZGVyCisJaW5zdGFsbCAtZCAke0R9L2Jvb3QvbG9hZGVyL2VudHJpZXMKKwlpbnN0YWxsIGxvYWRlci5jb25mICR7RH0vYm9vdC9sb2FkZXIvCisJcm0gbG9hZGVyLmNvbmYKKwlpbnN0YWxsICouY29uZiAke0R9L2Jvb3QvbG9hZGVyL2VudHJpZXMvCit9CisKK0ZJTEVTXyR7UE59ID0gIi9ib290L2xvYWRlci8qIC9ib290L2xvYWRlci9lbnRyaWVzLyoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLXNlcmlhbGdldHR5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1zZXJpYWxnZXR0eS5iYgppbmRleCBkOTM0NzE2Li5kNjdhM2M5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLXNlcmlhbGdldHR5LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtc2VyaWFsZ2V0dHkuYmIKQEAgLTExLDYgKzExLDEwIEBACiAKIFMgPSAiJHtXT1JLRElSfSIKIAorIyBBcyB0aGlzIHBhY2thZ2UgaXMgdGllZCB0byBzeXN0ZW1kLCBvbmx5IGJ1aWxkIGl0IHdoZW4gd2UncmUgYWxzbyBidWlsZGluZyBzeXN0ZW1kLgoraW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJzeXN0ZW1kIgorCiBkb19pbnN0YWxsKCkgewogCWlmIFsgISAteiAiJHtTRVJJQUxfQ09OU09MRVN9IiBdIDsgdGhlbgogCQlkZWZhdWx0X2JhdWRyYXRlPWBlY2hvICIke1NFUklBTF9DT05TT0xFU30iIHwgc2VkICdzL1w7LiovLydgCkBAIC00MywxMCArNDcsNCBAQAogRklMRVNfJHtQTn0gPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UgJHtzeXNjb25mZGlyfSIKIFBBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCiAKLSMgQXMgdGhpcyBwYWNrYWdlIGlzIHRpZWQgdG8gc3lzdGVtZCwgb25seSBidWlsZCBpdCB3aGVuIHdlJ3JlIGFsc28gYnVpbGRpbmcgc3lzdGVtZC4KLXB5dGhvbiAoKSB7Ci0gICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zICgnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBUcnVlLCBGYWxzZSwgZCk6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCInc3lzdGVtZCcgbm90IGluIERJU1RST19GRUFUVVJFUyIpCi19Ci0KIEFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jCmluZGV4IGQ5OWQxNTAuLjVmYTQ4ZTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jCkBAIC0xNCw3ICsxNCw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLkdQTDI7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuTEdQTDIuMTttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCiAKLVNSQ1JFViA9ICJjMWVkYWI3YWQxZTdjY2M5YmU2OTNiZWRmZDQ2NGNkMWNiZmZiMzk1IgorU1JDUkVWID0gIjQ2NjU5ZjdkZWI5NjJmNTVjNzI4ZTcwNTk3ZTM3YzJhM2FiNjMyNmQiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQuZ2l0O3Byb3RvY29sPWdpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLUFsc28tY2hlY2staTM4Ni1pNTg2LWFuZC1pNjg2LWZvci1pYTMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLUFsc28tY2hlY2staTM4Ni1pNTg2LWFuZC1pNjg2LWZvci1pYTMyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3N2JiMWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtQWxzby1jaGVjay1pMzg2LWk1ODYtYW5kLWk2ODYtZm9yLWlhMzIucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSAzZThjMTliYjFiYmM0NDkzYzU5MWY3NWMwMGMxZmVmZTNiMWM4YTY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAyNyBGZWIgMjAxOCAyMDo0Mjo0MSAtMDgwMAorU3ViamVjdDogW1BBVENIXSBBbHNvIGNoZWNrIGkzODYsIGk1ODYgYW5kIGk2ODYgZm9yIGlhMzIKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIG1lc29uLmJ1aWxkIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggMjhjYjhiNjBlLi40ODk1MzFhNDMgMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC0xMjE3LDcgKzEyMTcsNyBAQCBjb25mLnNldDEwKCdTWVNURU1EX1NMT1dfVEVTVFNfREVGQVVMVCcsIHNsb3dfdGVzdHMpCisgaWYgZ2V0X29wdGlvbignZWZpJykKKyAgICAgICAgIGVmaV9hcmNoID0gaG9zdF9tYWNoaW5lLmNwdV9mYW1pbHkoKQorIAorLSAgICAgICAgaWYgZWZpX2FyY2ggPT0gJ3g4NicKKysgICAgICAgIGlmIGVmaV9hcmNoID09ICd4ODYnIG9yIGVmaV9hcmNoID09ICdpMzg2JyBvciBlZmlfYXJjaCA9PSAnaTU4Nicgb3IgZWZpX2FyY2ggPT0gJ2k2ODYnCisgICAgICAgICAgICAgICAgIEVGSV9NQUNISU5FX1RZUEVfTkFNRSA9ICdpYTMyJworICAgICAgICAgICAgICAgICBnbnVfZWZpX2FyY2ggPSAnaWEzMicKKyAgICAgICAgIGVsaWYgZWZpX2FyY2ggPT0gJ3g4Nl82NCcKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1EZWZpbmUtX1BBVEhfV1RNUFgtYW5kLV9QQVRIX1VUTVBYLWlmLW5vdC1kZWZpbmVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLURlZmluZS1fUEFUSF9XVE1QWC1hbmQtX1BBVEhfVVRNUFgtaWYtbm90LWRlZmluZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1NTk5ZDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLURlZmluZS1fUEFUSF9XVE1QWC1hbmQtX1BBVEhfVVRNUFgtaWYtbm90LWRlZmluZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIDNjYTUzMjY0ODVjYjE5ZTc3NWFmNmRlNjE1YzE3YmU2NmU0NGU0NzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyNCBPY3QgMjAxNyAyMzowODoyNCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBEZWZpbmUgX1BBVEhfV1RNUFggYW5kIF9QQVRIX1VUTVBYIGlmIG5vdCBkZWZpbmVkCi0KLU11c2wgbmVlZHMgdGhlc2UgZGVmaW5lcwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHNyYy9zaGFyZWQvdXRtcC13dG1wLmMgfCA4ICsrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC91dG1wLXd0bXAuYyBiL3NyYy9zaGFyZWQvdXRtcC13dG1wLmMKLWluZGV4IDk3NTBkY2Q4MS4uYmQ1NWQ3NGExIDEwMDY0NAotLS0tIGEvc3JjL3NoYXJlZC91dG1wLXd0bXAuYwotKysrIGIvc3JjL3NoYXJlZC91dG1wLXd0bXAuYwotQEAgLTI3LDYgKzI3LDcgQEAKLSAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPHV0bXAuaD4KLSAjaW5jbHVkZSA8dXRtcHguaD4KLSAKLSAjaW5jbHVkZSAiYWxsb2MtdXRpbC5oIgotQEAgLTQxLDYgKzQyLDEzIEBACi0gI2luY2x1ZGUgInV0aWwuaCIKLSAjaW5jbHVkZSAidXRtcC13dG1wLmgiCi0gCi0rI2lmIGRlZmluZWQgX1BBVEhfVVRNUCAmJiAhZGVmaW5lZCBfUEFUSF9VVE1QWAotKyMgZGVmaW5lIF9QQVRIX1VUTVBYIF9QQVRIX1VUTVAKLSsjZW5kaWYKLSsjaWYgZGVmaW5lZCBfUEFUSF9XVE1QICYmICFkZWZpbmVkIF9QQVRIX1dUTVBYCi0rIyBkZWZpbmUgX1BBVEhfV1RNUFggX1BBVEhfV1RNUAotKyNlbmRpZgotKwotIGludCB1dG1wX2dldF9ydW5sZXZlbChpbnQgKnJ1bmxldmVsLCBpbnQgKnByZXZpb3VzKSB7Ci0gICAgICAgICBzdHJ1Y3QgdXRtcHggKmZvdW5kLCBsb29rdXAgPSB7IC51dF90eXBlID0gUlVOX0xWTCB9OwotICAgICAgICAgaW50IHI7Ci0tLSAKLTIuMTQuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtRml4LXRvLXJ1bi1lZmlfY2MtYW5kLWVmaV9sZC1jb3JyZWN0bHktd2hlbi1jcm9zcy1jby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1GaXgtdG8tcnVuLWVmaV9jYy1hbmQtZWZpX2xkLWNvcnJlY3RseS13aGVuLWNyb3NzLWNvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyZTE5YmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtRml4LXRvLXJ1bi1lZmlfY2MtYW5kLWVmaV9sZC1jb3JyZWN0bHktd2hlbi1jcm9zcy1jby5wYXRjaApAQCAtMCwwICsxLDYyIEBACitGcm9tIDUyNzQxM2VjMjQzNTY0YTg5ZmZhYWQ2MzY4ZDQ0NmRlNDQ0MTU5NzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDI3IEZlYiAyMDE4IDIxOjQyOjIzIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCB0byBydW4gZWZpX2NjIGFuZCBlZmlfbGQgY29ycmVjdGx5IHdoZW4gY3Jvc3MtY29tcGlsaW5nCisKK1doZW4gY3Jvc3MtY29tcGlsaW5nLCBlZmlfY2MgYW5kIGVmaV9sZCBtYXkgdGFrZSB0aGUgZm9ybSBvZgorJ3h4eC1nY2MgLS1zeXNyb290PXh4eCcsIGFuZCB0aGlzIHdvdWxkIGNhdXNlIHJ1bl9jb21tYW5kIGFuZAordGhlIGFsaWtlIGZhaWwuCisKK0ZpeCB0byBzcGxpdCB0aGVtIHRvIG1ha2UgY29tbWFuZHMgcnVuIGNvcnJlY3RseS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9ib290L2VmaS9tZXNvbi5idWlsZCB8IDE2ICsrKysrKysrKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZCBiL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZAoraW5kZXggOTkyYTNiYTRjLi45ZjllYzQ5MTEgMTAwNjQ0CistLS0gYS9zcmMvYm9vdC9lZmkvbWVzb24uYnVpbGQKKysrKyBiL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZAorQEAgLTE1Nyw3ICsxNTcsNyBAQCBpZiBoYXZlX2dudV9lZmkKKyAgICAgICAgICAgICAgICAgb19maWxlID0gY3VzdG9tX3RhcmdldChmaWxlICsgJy5vJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCA6IGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IDogZmlsZSArICcubycsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA6IFtlZmlfY2MsICctYycsICdASU5QVVRAJywgJy1vJywgJ0BPVVRQVVRAJ10KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIDogZWZpX2NjLnNwbGl0KCkgKyBbJy1jJywgJ0BJTlBVVEAnLCAnLW8nLCAnQE9VVFBVVEAnXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGNvbXBpbGVfYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRfZmlsZXMgOiBlZmlfaGVhZGVycykKKyAgICAgICAgICAgICAgICAgaWYgKGNvbW1vbl9zb3VyY2VzICsgc3lzdGVtZF9ib290X3NvdXJjZXMpLmNvbnRhaW5zKGZpbGUpCitAQCAtMTY4LDcgKzE2OCwxNyBAQCBpZiBoYXZlX2dudV9lZmkKKyAgICAgICAgICAgICAgICAgZW5kaWYKKyAgICAgICAgIGVuZGZvcmVhY2gKKyAKKy0gICAgICAgIGxpYmdjY19maWxlX25hbWUgPSBydW5fY29tbWFuZChlZmlfY2MsICctcHJpbnQtbGliZ2NjLWZpbGUtbmFtZScpLnN0ZG91dCgpLnN0cmlwKCkKKysgICAgICAgIGZpbmRfbGliZ2NjX2NtZF9hbGwgPSBlZmlfY2MgKyAnIC1wcmludC1saWJnY2MtZmlsZS1uYW1lJworKyAgICAgICAgZmluZF9saWJnY2NfY21kID0gZmluZF9saWJnY2NfY21kX2FsbC5zcGxpdCgpWzBdCisrICAgICAgICBmaW5kX2xpYmdjY19hcmdzID0gW10KKysgICAgICAgIGNtZF9hcmdzX2FsbCA9IGZpbmRfbGliZ2NjX2NtZF9hbGwuc3BsaXQoKQorKyAgICAgICAgZm9yZWFjaCBhcmcgOiBjbWRfYXJnc19hbGwKKysgICAgICAgICAgICAgICAgaWYgYXJnICE9IGZpbmRfbGliZ2NjX2NtZAorKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRfbGliZ2NjX2FyZ3MgKz0gYXJnCisrICAgICAgICAgICAgICAgIGVuZGlmCisrICAgICAgICBlbmRmb3JlYWNoCisrCisrICAgICAgICBsaWJnY2NfZmlsZV9uYW1lID0gcnVuX2NvbW1hbmQoZmluZF9saWJnY2NfY21kLCBmaW5kX2xpYmdjY19hcmdzKS5zdGRvdXQoKS5zdHJpcCgpCisgICAgICAgICBzeXN0ZW1kX2Jvb3RfZWZpX25hbWUgPSAnc3lzdGVtZC1ib290QDBALmVmaScuZm9ybWF0KEVGSV9NQUNISU5FX1RZUEVfTkFNRSkKKyAgICAgICAgIHN0dWJfZWZpX25hbWUgPSAnbGludXhAMEAuZWZpLnN0dWInLmZvcm1hdChFRklfTUFDSElORV9UWVBFX05BTUUpCisgICAgICAgICBub191bmRlZmluZWRfc3ltYm9scyA9IGZpbmRfcHJvZ3JhbSgnbm8tdW5kZWZpbmVkLXN5bWJvbHMuc2gnKQorQEAgLTE3OSw3ICsxODksNyBAQCBpZiBoYXZlX2dudV9lZmkKKyAgICAgICAgICAgICAgICAgICAgICAgICB0dXBsZVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCA6IHR1cGxlWzJdLAorICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA6IHR1cGxlWzBdLAorLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgOiBbZWZpX2xkLCAnLW8nLCAnQE9VVFBVVEAnXSArCisrICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA6IGVmaV9sZC5zcGxpdCgpICsgWyctbycsICdAT1VUUFVUQCddICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWZpX2xkZmxhZ3MgKyB0dXBsZVsyXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnLWxlZmknLCAnLWxnbnVlZmknLCBsaWJnY2NfZmlsZV9uYW1lXSkKKyAKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1IaWRlLV9fc3RhcnRfQlVTX0VSUk9SX01BUC1hbmQtX19zdG9wX0JVU19FUlJPUl9NQVAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtSGlkZS1fX3N0YXJ0X0JVU19FUlJPUl9NQVAtYW5kLV9fc3RvcF9CVVNfRVJST1JfTUFQLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjZmZjNDIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtSGlkZS1fX3N0YXJ0X0JVU19FUlJPUl9NQVAtYW5kLV9fc3RvcF9CVVNfRVJST1JfTUFQLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gNjg3YTVhZjhkYzVkMzhmOTE4YTZjZTA4ZmVkNTI5NzIzNGJmODM0NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDIgTWFyIDIwMTggMTg6MDA6MTcgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gSGlkZSBfX3N0YXJ0X0JVU19FUlJPUl9NQVAgYW5kIF9fc3RvcF9CVVNfRVJST1JfTUFQCisKK2ZvciBjdXJyZW50bHkgdW5rbm93biByZWFzb25zIHRoZXkgZ2V0IGV4cG9ydGVkIHRvIHRoZSBzaGFyZWQgbGlicmllcworZXZlbiB3aXRob3V0IGJlaW5nIGxpc3RlZCBpbiB0aGUgc3ltIGZpbGUKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgWyBDb25kaXRpb25hbCBvbiBtYXN0ZXIgbmVlZGluZyB0aGlzLCAyMzQgZG9lcyBuZWVkIGl0IF0KKworIHNyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMKK2luZGV4IDM3OGY3YTM3Ny4uNDlkNzk3YWJkIDEwMDY0NAorLS0tIGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jCisrKysgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMKK0BAIC03MSw4ICs3MSw4IEBAIEJVU19FUlJPUl9NQVBfRUxGX1JFR0lTVEVSIGNvbnN0IHNkX2J1c19lcnJvcl9tYXAgYnVzX3N0YW5kYXJkX2Vycm9yc1tdID0geworIH07CisgCisgLyogR0NDIG1hcHMgdGhpcyBtYWdpY2FsbHkgdG8gdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIHRoZSBCVVNfRVJST1JfTUFQIHNlY3Rpb24gKi8KKy1leHRlcm4gY29uc3Qgc2RfYnVzX2Vycm9yX21hcCBfX3N0YXJ0X0JVU19FUlJPUl9NQVBbXTsKKy1leHRlcm4gY29uc3Qgc2RfYnVzX2Vycm9yX21hcCBfX3N0b3BfQlVTX0VSUk9SX01BUFtdOworK2V4dGVybiBjb25zdCBzZF9idXNfZXJyb3JfbWFwIF9fc3RhcnRfQlVTX0VSUk9SX01BUFtdIF9oaWRkZW5fOworK2V4dGVybiBjb25zdCBzZF9idXNfZXJyb3JfbWFwIF9fc3RvcF9CVVNfRVJST1JfTUFQW10gX2hpZGRlbl87CisgCisgLyogQWRkaXRpb25hbCBtYXBzIHJlZ2lzdGVyZWQgd2l0aCBzZF9idXNfZXJyb3JfYWRkX21hcCgpIGFyZSBpbiB0aGlzCisgICogTlVMTCB0ZXJtaW5hdGVkIGFycmF5ICovCistLSAKKzIuMTYuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtUmVtb3ZlLWZzdGFjay1wcm90ZWN0b3ItZmxhZ3MtdG8td29ya2Fyb3VuZC1tdXNsLWJ1aS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1SZW1vdmUtZnN0YWNrLXByb3RlY3Rvci1mbGFncy10by13b3JrYXJvdW5kLW11c2wtYnVpLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5MTNlM2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtUmVtb3ZlLWZzdGFjay1wcm90ZWN0b3ItZmxhZ3MtdG8td29ya2Fyb3VuZC1tdXNsLWJ1aS5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIGUzNjFmNmI0YWVmYWU1N2VmZmY3ZTQ1N2RmOGRiNGQxMDY3YmVjMjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDI4IEZlYiAyMDE4IDIxOjUwOjIzIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBmc3RhY2stcHJvdGVjdG9yIGZsYWdzIHRvIHdvcmthcm91bmQgbXVzbCBidWlsZAorCitSZW1vdmUgZnN0YWNrLXByb3RlY3RvciBhbmQgZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcgZmxhZ3MgdG8gZml4Cit0aGUgZm9sbG93aW5nIGJ1aWxkIGZhaWx1cmUgZm9yIHFlbXV4ODYgYW5kIHFlbXVwcGMgd2l0aCBtdXNsLgorCisgIHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fc3RhY2tfY2hrX2ZhaWxfbG9jYWwnCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgU3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIG1lc29uLmJ1aWxkIHwgMiAtLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggNzYxMGFiMTJiLi41OTFiOWNiYWIgMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC0zMjksOCArMzI5LDYgQEAgZm9yZWFjaCBhcmcgOiBbJy1XZXh0cmEnLAorICAgICAgICAgICAgICAgICctZmRpYWdub3N0aWNzLXNob3ctb3B0aW9uJywKKyAgICAgICAgICAgICAgICAnLWZuby1zdHJpY3QtYWxpYXNpbmcnLAorICAgICAgICAgICAgICAgICctZnZpc2liaWxpdHk9aGlkZGVuJywKKy0gICAgICAgICAgICAgICAnLWZzdGFjay1wcm90ZWN0b3InLAorLSAgICAgICAgICAgICAgICctZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcnLAorICAgICAgICAgICAgICAgICctLXBhcmFtPXNzcC1idWZmZXItc2l6ZT00JywKKyAgICAgICAgICAgICAgIF0KKyAgICAgICAgIGlmIGNjLmhhc19hcmd1bWVudChhcmcpCistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtVXNlLWdldGVudi13aGVuLXNlY3VyZS12ZXJzaW9ucy1hcmUtbm90LWF2YWlsYWJsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1Vc2UtZ2V0ZW52LXdoZW4tc2VjdXJlLXZlcnNpb25zLWFyZS1ub3QtYXZhaWxhYmxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0YzE1ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtVXNlLWdldGVudi13aGVuLXNlY3VyZS12ZXJzaW9ucy1hcmUtbm90LWF2YWlsYWJsZS5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIGIxMTkyYTZlMTcxNDEzMjkxZDlkNjRmYWZjMDQ3NzNjNmJiYzljYWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDIzIEZlYiAyMDE4IDEwOjA0OjQ4ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDEvMzFdIFVzZSBnZXRlbnYgd2hlbiBzZWN1cmUgdmVyc2lvbnMgYXJlIG5vdCBhdmFpbGFibGUKKworbXVzbCBkb2VzbnQgaW1wbGVtZW50IHNlY3VyZSB2ZXJzaW9uLCBzbyB3ZSBkZWZhdWx0Cit0byBpdCBpZiBjb25maWd1cmUgZG9lcyBub3QgZGV0ZWN0IGEgc2VjdXJlIGltcGxlbWVudGF0aW9uCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogRGVuaWVkCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9iYXNpYy9taXNzaW5nLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZy5oIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAoraW5kZXggMTI4MGU2YzQxLi4zOWMxZmI3MDAgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvbWlzc2luZy5oCisrKysgYi9zcmMvYmFzaWMvbWlzc2luZy5oCitAQCAtNjA1LDcgKzYwNSw3IEBAIHN0cnVjdCBidHJmc19pb2N0bF9xdW90YV9jdGxfYXJncyB7CisgIyAgaWYgSEFWRV9fX1NFQ1VSRV9HRVRFTlYKKyAjICAgIGRlZmluZSBzZWN1cmVfZ2V0ZW52IF9fc2VjdXJlX2dldGVudgorICMgIGVsc2UKKy0jICAgIGVycm9yICJuZWl0aGVyIHNlY3VyZV9nZXRlbnYgbm9yIF9fc2VjdXJlX2dldGVudiBhcmUgYXZhaWxhYmxlIgorKyMgICAgZGVmaW5lIHNlY3VyZV9nZXRlbnYgZ2V0ZW52CisgIyAgZW5kaWYKKyAjZW5kaWYKKyAKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtVXNlLXVpbnRtYXhfdC1mb3ItaGFuZGxpbmctcmxpbV90LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzlkYzc4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi1Gcm9tIGIyZDQxNzFjNmU1MjFjZjFlNzAzMzFmYjc2OTIzNGQ2M2E0YTZkNDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyNyBPY3QgMjAxNyAxMzowMDo0MSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBVc2UgdWludG1heF90IGZvciBoYW5kbGluZyBybGltX3QKLQotUFJJdXszMiw2NH0gaXMgbm90IHJpZ2h0IGZvcm1hdCB0byByZXByZXNlbnQgcmxpbV90IHR5cGUKLXRoZXJlZm9yZSB1c2UgJWp1IGFuZCB0eXBlY2FzdCB0aGUgcmxpbV90IHZhcmlhYmxlcyB0bwotdWludG1heF90LgotCi1GaXhlcyBwb3J0YWJsaWxpdHkgZXJyb3JzIGxpa2UKLQotZXhlY3V0ZS5jOjM0NDY6MzY6IGVycm9yOiBmb3JtYXQgJyVsdScgZXhwZWN0cyBhcmd1bWVudCBvZiB0eXBlICdsb25nIHVuc2lnbmVkIGludCcsIGJ1dCBhcmd1bWVudCA1IGhhcyB0eXBlICdybGltX3Qge2FrYSBsb25nIGxvbmcgdW5zaWduZWQgaW50fScgWy1XZXJyb3I9Zm9ybWF0PV0KLXwgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzJXM6ICIgUkxJTV9GTVQgIlxuIiwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn4KLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCBybGltaXRfdG9fc3RyaW5nKGkpLCBjLT5ybGltaXRbaV0tPnJsaW1fbWF4KTsKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL3B1bGwvNzE5OV0KLQotIHNyYy9iYXNpYy9mb3JtYXQtdXRpbC5oIHwgOCAtLS0tLS0tLQotIHNyYy9iYXNpYy9ybGltaXQtdXRpbC5jIHwgOCArKysrLS0tLQotIHNyYy9jb3JlL2V4ZWN1dGUuYyAgICAgIHwgOCArKysrLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oIGIvc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmgKLWluZGV4IGFlNDJhOGY4OS4uMTQ0MjQ5Y2Q2IDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmgKLSsrKyBiL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oCi1AQCAtNjAsMTQgKzYwLDYgQEAKLSAjICBkZWZpbmUgUFJJX1RJTUVYICJsaSIKLSAjZW5kaWYKLSAKLS0jaWYgU0laRU9GX1JMSU1fVCA9PSA4Ci0tIyAgZGVmaW5lIFJMSU1fRk1UICIlIiBQUkl1NjQKLS0jZWxpZiBTSVpFT0ZfUkxJTV9UID09IDQKLS0jICBkZWZpbmUgUkxJTV9GTVQgIiUiIFBSSXUzMgotLSNlbHNlCi0tIyAgZXJyb3IgVW5rbm93biBybGltX3Qgc2l6ZQotLSNlbmRpZgotLQotICNpZiBTSVpFT0ZfREVWX1QgPT0gOAotICMgIGRlZmluZSBERVZfRk1UICIlIiBQUkl1NjQKLSAjZWxpZiBTSVpFT0ZfREVWX1QgPT0gNAotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jIGIvc3JjL2Jhc2ljL3JsaW1pdC11dGlsLmMKLWluZGV4IGNhODM0ZGY2Mi4uNDFmY2ViYjc0IDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL3JsaW1pdC11dGlsLmMKLSsrKyBiL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jCi1AQCAtMjg0LDEzICsyODQsMTMgQEAgaW50IHJsaW1pdF9mb3JtYXQoY29uc3Qgc3RydWN0IHJsaW1pdCAqcmwsIGNoYXIgKipyZXQpIHsKLSAgICAgICAgIGlmIChybC0+cmxpbV9jdXIgPj0gUkxJTV9JTkZJTklUWSAmJiBybC0+cmxpbV9tYXggPj0gUkxJTV9JTkZJTklUWSkKLSAgICAgICAgICAgICAgICAgcyA9IHN0cmR1cCgiaW5maW5pdHkiKTsKLSAgICAgICAgIGVsc2UgaWYgKHJsLT5ybGltX2N1ciA+PSBSTElNX0lORklOSVRZKQotLSAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsICJpbmZpbml0eToiIFJMSU1fRk1ULCBybC0+cmxpbV9tYXgpOwotKyAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsICJpbmZpbml0eTolanUiLCAodWludG1heF90KXJsLT5ybGltX21heCk7Ci0gICAgICAgICBlbHNlIGlmIChybC0+cmxpbV9tYXggPj0gUkxJTV9JTkZJTklUWSkKLS0gICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCBSTElNX0ZNVCAiOmluZmluaXR5IiwgcmwtPnJsaW1fY3VyKTsKLSsgICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiJWp1OmluZmluaXR5IiwgKHVpbnRtYXhfdClybC0+cmxpbV9jdXIpOwotICAgICAgICAgZWxzZSBpZiAocmwtPnJsaW1fY3VyID09IHJsLT5ybGltX21heCkKLS0gICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCBSTElNX0ZNVCwgcmwtPnJsaW1fY3VyKTsKLSsgICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiJWp1IiwgKHVpbnRtYXhfdClybC0+cmxpbV9jdXIpOwotICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsIFJMSU1fRk1UICI6IiBSTElNX0ZNVCwgcmwtPnJsaW1fY3VyLCBybC0+cmxpbV9tYXgpOwotKyAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsICIlanU6JWp1IiwgKHVpbnRtYXhfdClybC0+cmxpbV9jdXIsICh1aW50bWF4X3QpcmwtPnJsaW1fbWF4KTsKLSAKLSAgICAgICAgIGlmICghcykKLSAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Ci1kaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXhlY3V0ZS5jIGIvc3JjL2NvcmUvZXhlY3V0ZS5jCi1pbmRleCBkNzJlNWJmMDguLmQzODk0NjAwMiAxMDA2NDQKLS0tLSBhL3NyYy9jb3JlL2V4ZWN1dGUuYwotKysrIGIvc3JjL2NvcmUvZXhlY3V0ZS5jCi1AQCAtMzQ0MywxMCArMzQ0MywxMCBAQCB2b2lkIGV4ZWNfY29udGV4dF9kdW1wKEV4ZWNDb250ZXh0ICpjLCBGSUxFKiBmLCBjb25zdCBjaGFyICpwcmVmaXgpIHsKLSAKLSAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBSTElNX05MSU1JVFM7IGkrKykKLSAgICAgICAgICAgICAgICAgaWYgKGMtPnJsaW1pdFtpXSkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzJXM6ICIgUkxJTV9GTVQgIlxuIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcmxpbWl0X3RvX3N0cmluZyhpKSwgYy0+cmxpbWl0W2ldLT5ybGltX21heCk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmLCAiJXMlc1NvZnQ6ICIgUkxJTV9GTVQgIlxuIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcmxpbWl0X3RvX3N0cmluZyhpKSwgYy0+cmxpbWl0W2ldLT5ybGltX2N1cik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmLCAiJXMlczogJWp1XG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCBybGltaXRfdG9fc3RyaW5nKGkpLCAodWludG1heF90KWMtPnJsaW1pdFtpXS0+cmxpbV9tYXgpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzJXNTb2Z0OiAlanVcbiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgsIHJsaW1pdF90b19zdHJpbmcoaSksICh1aW50bWF4X3QpYy0+cmxpbWl0W2ldLT5ybGltX2N1cik7Ci0gICAgICAgICAgICAgICAgIH0KLSAKLSAgICAgICAgIGlmIChjLT5pb3ByaW9fc2V0KSB7Ci0tLSAKLTIuMTQuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyZjc0NTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMzICswLDAgQEAKLUZyb20gMDkzM2NhNjI1MTgwOGY4NTZiOTJiMGNlOGRhODY5NmQ1ZmViYzMzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgotRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMDo0MTozOSAtMDcwMAotU3ViamVjdDogW1BBVENIIDAxLzEyXSBhZGQgZmFsbGJhY2sgcGFyc2VfcHJpbnRmX2Zvcm1hdCBpbXBsZW1lbnRhdGlvbgotCi1TaWduZWQtb2ZmLWJ5OiBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICB8ICAgNCArCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICB8ICAgMiArCi0gc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYyB8IDI3MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaCB8ICA1NyArKysrKysrKysKLSBzcmMvYmFzaWMvc3RkaW8tdXRpbC5oICAgICAgICAgIHwgICAyICstCi0gc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMgICAgICB8ICAgMiArLQotIDYgZmlsZXMgY2hhbmdlZCwgMzM4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaAotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggNjkyZDdiYjk1Li4zY2M4ZjM0NTEgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC05OTcsNiArOTk3LDEwIEBAIGxpYmJhc2ljX2xhX1NPVVJDRVMgPSBcCi0gCXNyYy9iYXNpYy9qb3VybmFsLWltcG9ydGVyLmggXAotIAlzcmMvYmFzaWMvam91cm5hbC1pbXBvcnRlci5jCi0gCi0raWYgIUhBVkVfUFJJTlRGX0gKLStsaWJiYXNpY19sYV9TT1VSQ0VTICs9IHNyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMKLStlbmRpZgotKwotIG5vZGlzdF9saWJiYXNpY19sYV9TT1VSQ0VTID0gXAotIAlzcmMvYmFzaWMvZXJybm8tZnJvbS1uYW1lLmggXAotIAlzcmMvYmFzaWMvZXJybm8tdG8tbmFtZS5oIFwKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDYwZTdkZjVlZS4uZWZjZGM2YzE2IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zMDgsOCArMzA4LDEwIEBAIEFDX0NIRUNLX0hFQURFUlMoW3VjaGFyLmhdLCBbXSwgW10pCi0gQUNfQ0hFQ0tfSEVBREVSUyhbc3lzL2NhcGFiaWxpdHkuaF0sIFtdLCBbQUNfTVNHX0VSUk9SKFsqKiogUE9TSVggY2FwcyBoZWFkZXJzIG5vdCBmb3VuZF0pXSkKLSBBQ19DSEVDS19IRUFERVJTKFtsaW51eC9idHJmcy5oXSwgW10sIFtdKQotIEFDX0NIRUNLX0hFQURFUlMoW2xpbnV4L21lbWZkLmhdLCBbXSwgW10pCi0rQUNfQ0hFQ0tfSEVBREVSUyhbcHJpbnRmLmhdLCBbXSwgW10pCi0gQUNfQ0hFQ0tfSEVBREVSUyhbbGludXgvdm1fc29ja2V0cy5oXSwgW10sIFtdLCBbI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD5dKQotIAotK0FNX0NPTkRJVElPTkFMKEhBVkVfUFJJTlRGX0gsIFt0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9wcmludGZfaCIgPSB4eWVzXSkKLSAjIHVuY29uZGl0aW9uYWxseSBwdWxsLWluIGxpYnJ0IHdpdGggb2xkIGdsaWJjIHZlcnNpb25zCi0gQUNfU0VBUkNIX0xJQlMoW2Nsb2NrX2dldHRpbWVdLCBbcnRdLCBbXSwgW10pCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYyBiL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAuLjQ5NDM3ZTU0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYwotQEAgLTAsMCArMSwyNzMgQEAKLSsvKi0qLSBNb2RlOiBDOyBjLWJhc2ljLW9mZnNldDogODsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLSovCi0rCi0rLyoqKgotKyAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc3lzdGVtZC4KLSsKLSsgIENvcHlyaWdodCAyMDE0IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgotKwotKyAgV2l0aCBwYXJ0cyBmcm9tIHRoZSBtdXNsIEMgbGlicmFyeQotKyAgQ29weXJpZ2h0IDIwMDUtMjAxNCBSaWNoIEZlbGtlciwgZXQgYWwuCi0rCi0rICBzeXN0ZW1kIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgIHN5c3RlbWQgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Ci0rICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCi0rICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqKiovCi0rCi0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsKLSsjaW5jbHVkZSAicGFyc2UtcHJpbnRmLWZvcm1hdC5oIgotKwotK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX25vbmFyZyhjb25zdCBjaGFyICpmbXQpCi0rewotKyAgICAgICAgZG8gewotKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnXDAnKQotKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7Ci0rICAgICAgICB9IHdoaWxlICgqZm10KysgIT0gJyUnKTsKLSsgICAgICAgIHJldHVybiBmbXQ7Ci0rfQotKwotK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX251bShjb25zdCBjaGFyICpmbXQpCi0rewotKyAgICAgICAgZm9yICg7KmZtdCA+PSAnMCcgJiYgKmZtdCA8PSAnOSc7IGZtdCsrKQotKyAgICAgICAgICAgICAgICAvKiBkbyBub3RoaW5nICovOwotKyAgICAgICAgcmV0dXJuIGZtdDsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfYXJnbihjb25zdCBjaGFyICpmbXQsIHNpemVfdCAqYXJnKQotK3sKLSsgICAgICAgIGNvbnN0IGNoYXIgKnAgPSBmbXQ7Ci0rICAgICAgICBzaXplX3QgdmFsID0gMDsKLSsKLSsgICAgICAgIGlmICgqcCA8ICcxJyB8fCAqcCA+ICc5JykKLSsgICAgICAgICAgICAgICAgcmV0dXJuIGZtdDsKLSsgICAgICAgIGRvIHsKLSsgICAgICAgICAgICAgICAgdmFsID0gMTAqdmFsICsgKCpwKysgLSAnMCcpOwotKyAgICAgICAgfSB3aGlsZSAoKnAgPj0gJzAnICYmICpwIDw9ICc5Jyk7Ci0rCi0rICAgICAgICBpZiAoKnAgIT0gJyQnKQotKyAgICAgICAgICAgICAgICByZXR1cm4gZm10OwotKyAgICAgICAgKmFyZyA9IHZhbDsKLSsgICAgICAgIHJldHVybiBwKzE7Ci0rfQotKwotK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX2ZsYWdzKGNvbnN0IGNoYXIgKmZtdCkKLSt7Ci0rICAgICAgICB3aGlsZSAoMSkgewotKyAgICAgICAgICAgICAgICBzd2l0Y2ggKCpmbXQpIHsKLSsgICAgICAgICAgICAgICAgY2FzZSAnIyc6Ci0rICAgICAgICAgICAgICAgIGNhc2UgJzAnOgotKyAgICAgICAgICAgICAgICBjYXNlICctJzoKLSsgICAgICAgICAgICAgICAgY2FzZSAnICc6Ci0rICAgICAgICAgICAgICAgIGNhc2UgJysnOgotKyAgICAgICAgICAgICAgICBjYXNlICdcJyc6Ci0rICAgICAgICAgICAgICAgIGNhc2UgJ0knOgotKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCsrOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7Ci0rICAgICAgICB9Ci0rfQotKwotK2VudW0gc3RhdGUgewotKyAgICAgICAgQkFSRSwKLSsgICAgICAgIExQUkUsCi0rICAgICAgICBMTFBSRSwKLSsgICAgICAgIEhQUkUsCi0rICAgICAgICBISFBSRSwKLSsgICAgICAgIEJJR0xQUkUsCi0rICAgICAgICBaVFBSRSwKLSsgICAgICAgIEpQUkUsCi0rICAgICAgICBTVE9QCi0rfTsKLSsKLStlbnVtIHR5cGUgewotKyAgICAgICAgTk9ORSwKLSsgICAgICAgIFBUUiwKLSsgICAgICAgIElOVCwKLSsgICAgICAgIFVJTlQsCi0rICAgICAgICBVTExPTkcsCi0rICAgICAgICBMT05HLAotKyAgICAgICAgVUxPTkcsCi0rICAgICAgICBTSE9SVCwKLSsgICAgICAgIFVTSE9SVCwKLSsgICAgICAgIENIQVIsCi0rICAgICAgICBVQ0hBUiwKLSsgICAgICAgIExMT05HLAotKyAgICAgICAgU0laRVQsCi0rICAgICAgICBJTUFYLAotKyAgICAgICAgVU1BWCwKLSsgICAgICAgIFBESUZGLAotKyAgICAgICAgVUlQVFIsCi0rICAgICAgICBEQkwsCi0rICAgICAgICBMREJMLAotKyAgICAgICAgTUFYVFlQRQotK307Ci0rCi0rc3RhdGljIGNvbnN0IHNob3J0IHBhX3R5cGVzW01BWFRZUEVdID0gewotKyAgICAgICAgW05PTkVdICAgPSBQQV9JTlQsCi0rICAgICAgICBbUFRSXSAgICA9IFBBX1BPSU5URVIsCi0rICAgICAgICBbSU5UXSAgICA9IFBBX0lOVCwKLSsgICAgICAgIFtVSU5UXSAgID0gUEFfSU5ULAotKyAgICAgICAgW1VMTE9OR10gPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKLSsgICAgICAgIFtMT05HXSAgID0gUEFfSU5UIHwgUEFfRkxBR19MT05HLAotKyAgICAgICAgW1VMT05HXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCi0rICAgICAgICBbU0hPUlRdICA9IFBBX0lOVCB8IFBBX0ZMQUdfU0hPUlQsCi0rICAgICAgICBbVVNIT1JUXSA9IFBBX0lOVCB8IFBBX0ZMQUdfU0hPUlQsCi0rICAgICAgICBbQ0hBUl0gICA9IFBBX0NIQVIsCi0rICAgICAgICBbVUNIQVJdICA9IFBBX0NIQVIsCi0rICAgICAgICBbTExPTkddICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAotKyAgICAgICAgW1NJWkVUXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCi0rICAgICAgICBbSU1BWF0gICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAotKyAgICAgICAgW1VNQVhdICAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKLSsgICAgICAgIFtQRElGRl0gID0gUEFfSU5UIHwgUEFfRkxBR19MT05HX0xPTkcsCi0rICAgICAgICBbVUlQVFJdICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9ORywKLSsgICAgICAgIFtEQkxdICAgID0gUEFfRE9VQkxFLAotKyAgICAgICAgW0xEQkxdICAgPSBQQV9ET1VCTEUgfCBQQV9GTEFHX0xPTkdfRE9VQkxFCi0rfTsKLSsKLSsjZGVmaW5lIFMoeCkgWyh4KS0nQSddCi0rI2RlZmluZSBFKHgpIChTVE9QICsgKHgpKQotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHN0YXRlc1tdWyd6Jy0nQScrMV0gPSB7Ci0rICAgICAgICB7IC8qIDA6IGJhcmUgdHlwZXMgKi8KLSsgICAgICAgICAgICAgICAgUygnZCcpID0gRShJTlQpLCBTKCdpJykgPSBFKElOVCksCi0rICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVUlOVCksUygndScpID0gRShVSU5UKSxTKCd4JykgPSBFKFVJTlQpLCBTKCdYJykgPSBFKFVJTlQpLAotKyAgICAgICAgICAgICAgICBTKCdlJykgPSBFKERCTCksIFMoJ2YnKSA9IEUoREJMKSwgUygnZycpID0gRShEQkwpLCAgUygnYScpID0gRShEQkwpLAotKyAgICAgICAgICAgICAgICBTKCdFJykgPSBFKERCTCksIFMoJ0YnKSA9IEUoREJMKSwgUygnRycpID0gRShEQkwpLCAgUygnQScpID0gRShEQkwpLAotKyAgICAgICAgICAgICAgICBTKCdjJykgPSBFKENIQVIpLFMoJ0MnKSA9IEUoSU5UKSwKLSsgICAgICAgICAgICAgICAgUygncycpID0gRShQVFIpLCBTKCdTJykgPSBFKFBUUiksIFMoJ3AnKSA9IEUoVUlQVFIpLFMoJ24nKSA9IEUoUFRSKSwKLSsgICAgICAgICAgICAgICAgUygnbScpID0gRShOT05FKSwKLSsgICAgICAgICAgICAgICAgUygnbCcpID0gTFBSRSwgICBTKCdoJykgPSBIUFJFLCBTKCdMJykgPSBCSUdMUFJFLAotKyAgICAgICAgICAgICAgICBTKCd6JykgPSBaVFBSRSwgIFMoJ2onKSA9IEpQUkUsIFMoJ3QnKSA9IFpUUFJFCi0rICAgICAgICB9LCB7IC8qIDE6IGwtcHJlZml4ZWQgKi8KLSsgICAgICAgICAgICAgICAgUygnZCcpID0gRShMT05HKSwgUygnaScpID0gRShMT05HKSwKLSsgICAgICAgICAgICAgICAgUygnbycpID0gRShVTE9ORyksUygndScpID0gRShVTE9ORyksUygneCcpID0gRShVTE9ORyksUygnWCcpID0gRShVTE9ORyksCi0rICAgICAgICAgICAgICAgIFMoJ2UnKSA9IEUoREJMKSwgIFMoJ2YnKSA9IEUoREJMKSwgIFMoJ2cnKSA9IEUoREJMKSwgIFMoJ2EnKSA9IEUoREJMKSwKLSsgICAgICAgICAgICAgICAgUygnRScpID0gRShEQkwpLCAgUygnRicpID0gRShEQkwpLCAgUygnRycpID0gRShEQkwpLCAgUygnQScpID0gRShEQkwpLAotKyAgICAgICAgICAgICAgICBTKCdjJykgPSBFKElOVCksICBTKCdzJykgPSBFKFBUUiksICBTKCduJykgPSBFKFBUUiksCi0rICAgICAgICAgICAgICAgIFMoJ2wnKSA9IExMUFJFCi0rICAgICAgICB9LCB7IC8qIDI6IGxsLXByZWZpeGVkICovCi0rICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoTExPTkcpLCBTKCdpJykgPSBFKExMT05HKSwKLSsgICAgICAgICAgICAgICAgUygnbycpID0gRShVTExPTkcpLFMoJ3UnKSA9IEUoVUxMT05HKSwKLSsgICAgICAgICAgICAgICAgUygneCcpID0gRShVTExPTkcpLFMoJ1gnKSA9IEUoVUxMT05HKSwKLSsgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCi0rICAgICAgICB9LCB7IC8qIDM6IGgtcHJlZml4ZWQgKi8KLSsgICAgICAgICAgICAgICAgUygnZCcpID0gRShTSE9SVCksIFMoJ2knKSA9IEUoU0hPUlQpLAotKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVTSE9SVCksUygndScpID0gRShVU0hPUlQpLAotKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVTSE9SVCksUygnWCcpID0gRShVU0hPUlQpLAotKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUiksCi0rICAgICAgICAgICAgICAgIFMoJ2gnKSA9IEhIUFJFCi0rICAgICAgICB9LCB7IC8qIDQ6IGhoLXByZWZpeGVkICovCi0rICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoQ0hBUiksIFMoJ2knKSA9IEUoQ0hBUiksCi0rICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVUNIQVIpLFMoJ3UnKSA9IEUoVUNIQVIpLAotKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVDSEFSKSxTKCdYJykgPSBFKFVDSEFSKSwKLSsgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCi0rICAgICAgICB9LCB7IC8qIDU6IEwtcHJlZml4ZWQgKi8KLSsgICAgICAgICAgICAgICAgUygnZScpID0gRShMREJMKSxTKCdmJykgPSBFKExEQkwpLFMoJ2cnKSA9IEUoTERCTCksIFMoJ2EnKSA9IEUoTERCTCksCi0rICAgICAgICAgICAgICAgIFMoJ0UnKSA9IEUoTERCTCksUygnRicpID0gRShMREJMKSxTKCdHJykgPSBFKExEQkwpLCBTKCdBJykgPSBFKExEQkwpLAotKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUikKLSsgICAgICAgIH0sIHsgLyogNjogei0gb3IgdC1wcmVmaXhlZCAoYXNzdW1lZCB0byBiZSBzYW1lIHNpemUpICovCi0rICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoUERJRkYpLFMoJ2knKSA9IEUoUERJRkYpLAotKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFNJWkVUKSxTKCd1JykgPSBFKFNJWkVUKSwKLSsgICAgICAgICAgICAgICAgUygneCcpID0gRShTSVpFVCksUygnWCcpID0gRShTSVpFVCksCi0rICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQotKyAgICAgICAgfSwgeyAvKiA3OiBqLXByZWZpeGVkICovCi0rICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoSU1BWCksIFMoJ2knKSA9IEUoSU1BWCksCi0rICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVU1BWCksIFMoJ3UnKSA9IEUoVU1BWCksCi0rICAgICAgICAgICAgICAgIFMoJ3gnKSA9IEUoVU1BWCksIFMoJ1gnKSA9IEUoVU1BWCksCi0rICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQotKyAgICAgICAgfQotK307Ci0rCi0rc2l6ZV90IHBhcnNlX3ByaW50Zl9mb3JtYXQoY29uc3QgY2hhciAqZm10LCBzaXplX3QgbiwgaW50ICp0eXBlcykKLSt7Ci0rICAgICAgICBzaXplX3QgaSA9IDA7Ci0rICAgICAgICBzaXplX3QgbGFzdCA9IDA7Ci0rCi0rICAgICAgICBtZW1zZXQodHlwZXMsIDAsIG4pOwotKwotKyAgICAgICAgd2hpbGUgKDEpIHsKLSsgICAgICAgICAgICAgICAgc2l6ZV90IGFyZzsKLSsgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHN0YXRlOwotKwotKyAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX25vbmFyZyhmbXQpOwotKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnXDAnKQotKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnJScpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBmbXQrKzsKLSsgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICBhcmcgPSAwOwotKyAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2FyZ24oZm10LCAmYXJnKTsKLSsgICAgICAgICAgICAgICAgLyogZmxhZ3MgKi8KLSsgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9mbGFncyhmbXQpOwotKyAgICAgICAgICAgICAgICAvKiB3aWR0aCAqLwotKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnKicpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgd2FyZyA9IDA7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9hcmduKGZtdCsxLCAmd2FyZyk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPT0gMCkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcmcgPSArK2k7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPiBsYXN0KQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHdhcmc7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPD0gbiAmJiB0eXBlc1t3YXJnLTFdID09IE5PTkUpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlc1t3YXJnLTFdID0gSU5UOwotKyAgICAgICAgICAgICAgICB9IGVsc2UKLSsgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX251bShmbXQpOwotKyAgICAgICAgICAgICAgICAvKiBwcmVjaXNpb24gKi8KLSsgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJy4nKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJyonKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGFyZyA9IDA7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2FyZ24oZm10KzEsICZwYXJnKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJnID09IDApCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmcgPSArK2k7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZyA+IGxhc3QpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgPSBwYXJnOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmcgPD0gbiAmJiB0eXBlc1twYXJnLTFdID09IE5PTkUpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzW3BhcmctMV0gPSBJTlQ7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICctJykKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX251bShmbXQpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICAvKiBsZW5ndGggbW9kaWZpZXIgYW5kIGNvbnZlcnNpb24gc3BlY2lmaWVyICovCi0rICAgICAgICAgICAgICAgIHN0YXRlID0gQkFSRTsKLSsgICAgICAgICAgICAgICAgZG8gewotKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9ICpmbXQrKzsKLSsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA8ICdBJyB8fCBjID4gJ3onKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZXNbc3RhdGVdUyhjKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gMCkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgICAgICAgICB9IHdoaWxlIChzdGF0ZSA8IFNUT1ApOwotKwotKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gRShOT05FKSkKLSsgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsKLSsgICAgICAgICAgICAgICAgaWYgKGFyZyA9PSAwKQotKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9ICsraTsKLSsgICAgICAgICAgICAgICAgaWYgKGFyZyA+IGxhc3QpCi0rICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IGFyZzsKLSsgICAgICAgICAgICAgICAgaWYgKGFyZyA8PSBuKQotKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzW2FyZy0xXSA9IHN0YXRlIC0gU1RPUDsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIGlmIChsYXN0ID4gbikKLSsgICAgICAgICAgICAgICAgbGFzdCA9IG47Ci0rICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGFzdDsgaSsrKQotKyAgICAgICAgICAgICAgICB0eXBlc1tpXSA9IHBhX3R5cGVzW3R5cGVzW2ldXTsKLSsKLSsgICAgICAgIHJldHVybiBsYXN0OwotK30KLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oIGIvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMC4uNDM3MTE3N2IwCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oCi1AQCAtMCwwICsxLDU3IEBACi0rLyotKi0gTW9kZTogQzsgYy1iYXNpYy1vZmZzZXQ6IDg7IGluZGVudC10YWJzLW1vZGU6IG5pbCAtKi0qLwotKwotKy8qKioKLSsgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHN5c3RlbWQuCi0rCi0rICBDb3B5cmlnaHQgMjAxNCBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KLSsKLSsgIFdpdGggcGFydHMgZnJvbSB0aGUgR05VIEMgTGlicmFyeQotKyAgQ29weXJpZ2h0IDE5OTEtMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgIHN5c3RlbWQgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgc3lzdGVtZCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSsgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKLSsgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyoqKi8KLSsKLSsjcHJhZ21hIG9uY2UKLSsKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rCi0rI2lmZGVmIEhBVkVfUFJJTlRGX0gKLSsjaW5jbHVkZSA8cHJpbnRmLmg+Ci0rI2Vsc2UKLSsKLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rCi0rZW51bSB7CQkJCS8qIEMgdHlwZTogKi8KLSsgIFBBX0lOVCwJCQkvKiBpbnQgKi8KLSsgIFBBX0NIQVIsCQkJLyogaW50LCBjYXN0IHRvIGNoYXIgKi8KLSsgIFBBX1dDSEFSLAkJCS8qIHdpZGUgY2hhciAqLwotKyAgUEFfU1RSSU5HLAkJCS8qIGNvbnN0IGNoYXIgKiwgYSAnXDAnLXRlcm1pbmF0ZWQgc3RyaW5nICovCi0rICBQQV9XU1RSSU5HLAkJCS8qIGNvbnN0IHdjaGFyX3QgKiwgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nICovCi0rICBQQV9QT0lOVEVSLAkJCS8qIHZvaWQgKiAqLwotKyAgUEFfRkxPQVQsCQkJLyogZmxvYXQgKi8KLSsgIFBBX0RPVUJMRSwJCQkvKiBkb3VibGUgKi8KLSsgIFBBX0xBU1QKLSt9OwotKwotKy8qIEZsYWcgYml0cyB0aGF0IGNhbiBiZSBzZXQgaW4gYSB0eXBlIHJldHVybmVkIGJ5IGBwYXJzZV9wcmludGZfZm9ybWF0Jy4gICovCi0rI2RlZmluZQlQQV9GTEFHX01BU0sJCTB4ZmYwMAotKyNkZWZpbmUJUEFfRkxBR19MT05HX0xPTkcJKDEgPDwgOCkKLSsjZGVmaW5lCVBBX0ZMQUdfTE9OR19ET1VCTEUJUEFfRkxBR19MT05HX0xPTkcKLSsjZGVmaW5lCVBBX0ZMQUdfTE9ORwkJKDEgPDwgOSkKLSsjZGVmaW5lCVBBX0ZMQUdfU0hPUlQJCSgxIDw8IDEwKQotKyNkZWZpbmUJUEFfRkxBR19QVFIJCSgxIDw8IDExKQotKwotK3NpemVfdCBwYXJzZV9wcmludGZfZm9ybWF0KGNvbnN0IGNoYXIgKmZtdCwgc2l6ZV90IG4sIGludCAqdHlwZXMpOwotKwotKyNlbmRpZiAvKiBIQVZFX1BSSU5URl9IICovCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaCBiL3NyYy9iYXNpYy9zdGRpby11dGlsLmgKLWluZGV4IGJkMTE0NGI0Yy4uYzljOTVlYjU0IDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaAotKysrIGIvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaAotQEAgLTE5LDEyICsxOSwxMiBAQAotICAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gKioqLwotIAotLSNpbmNsdWRlIDxwcmludGYuaD4KLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotIAotICNpbmNsdWRlICJtYWNyby5oIgotKyNpbmNsdWRlICJwYXJzZS1wcmludGYtZm9ybWF0LmgiCi0gCi0gI2RlZmluZSB4c3ByaW50ZihidWYsIGZtdCwgLi4uKSBcCi0gICAgICAgICBhc3NlcnRfbWVzc2FnZV9zZSgoc2l6ZV90KSBzbnByaW50ZihidWYsIEVMRU1FTlRTT0YoYnVmKSwgZm10LCBfX1ZBX0FSR1NfXykgPCBFTEVNRU5UU09GKGJ1ZiksICJ4c3ByaW50ZjogIiAjYnVmICJbXSBtdXN0IGJlIGJpZyBlbm91Z2giKQotZGlmZiAtLWdpdCBhL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jIGIvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKLWluZGV4IDQ0MGZiYTY3Yy4uMDIzNmM0M2M0IDEwMDY0NAotLS0tIGEvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKLSsrKyBiL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jCi1AQCAtMTksNyArMTksNiBAQAotIAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxmY250bC5oPgotLSNpbmNsdWRlIDxwcmludGYuaD4KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSAjaW5jbHVkZSA8c3lzL3VuLmg+Ci1AQCAtMzgsNiArMzcsNyBAQAotICNpbmNsdWRlICJzdGRpby11dGlsLmgiCi0gI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCi0gI2luY2x1ZGUgInV0aWwuaCIKLSsjaW5jbHVkZSAicGFyc2UtcHJpbnRmLWZvcm1hdC5oIgotIAotICNkZWZpbmUgU05EQlVGX1NJWkUgKDgqMTAyNCoxMDI0KQotIAotLS0gCi0yLjE0LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWNvcmUtZGV2aWNlLmMtQ2hhbmdlLXRoZS1kZWZhdWx0LWRldmljZS10aW1lb3V0LXRvLTIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtY29yZS1kZXZpY2UuYy1DaGFuZ2UtdGhlLWRlZmF1bHQtZGV2aWNlLXRpbWVvdXQtdG8tMi5wYXRjaAppbmRleCA3ZjFiYzQ0Li45OGM4MzYyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtY29yZS1kZXZpY2UuYy1DaGFuZ2UtdGhlLWRlZmF1bHQtZGV2aWNlLXRpbWVvdXQtdG8tMi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtY29yZS1kZXZpY2UuYy1DaGFuZ2UtdGhlLWRlZmF1bHQtZGV2aWNlLXRpbWVvdXQtdG8tMi5wYXRjaApAQCAtMSw4ICsxLDcgQEAKLUZyb20gZjFiNWE2ZjcxN2JkYTZmODBhNmI1ZTNlNGQ1MGI0NTBmNmNjN2IwOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNzg0NGUwNzA3NDU2MTFhNTJlMzU1YjczZTc4OTBmMzYwZGQ1NDBkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDE0IERlYyAyMDE1IDA0OjA5OjE5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTQvMTRdIGNvcmUvZGV2aWNlLmM6IENoYW5nZSB0aGUgZGVmYXVsdCBkZXZpY2UgdGltZW91dCB0byAyNDAKLSBzZWMuCitTdWJqZWN0OiBbUEFUQ0hdIGNvcmUvZGV2aWNlLmM6IENoYW5nZSB0aGUgZGVmYXVsdCBkZXZpY2UgdGltZW91dCB0byAyNDAgc2VjLgogTUlNRS1WZXJzaW9uOiAxLjAKIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAogQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdApAQCAtMTcsMTAgKzE2LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvY29yZS9kZXZpY2UuYyBiL3NyYy9jb3JlL2RldmljZS5jCi1pbmRleCA3NzYwMWM1NTIuLjk4YmY0OWJhMiAxMDA2NDQKK2luZGV4IGE0MzY2NGQzYi4uNGIxNmE4YWVjIDEwMDY0NAogLS0tIGEvc3JjL2NvcmUvZGV2aWNlLmMKICsrKyBiL3NyYy9jb3JlL2RldmljZS5jCi1AQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyB2b2lkIGRldmljZV9pbml0KFVuaXQgKnUpIHsKK0BAIC0xMTMsNyArMTEzLDcgQEAgc3RhdGljIHZvaWQgZGV2aWNlX2luaXQoVW5pdCAqdSkgewogICAgICAgICAgICogaW5kZWZpbml0ZWx5IGZvciBwbHVnZ2VkIGluIGRldmljZXMsIHNvbWV0aGluZyB3aGljaCBjYW5ub3QKICAgICAgICAgICAqIGhhcHBlbiBmb3IgdGhlIG90aGVyIHVuaXRzIHNpbmNlIHRoZWlyIG9wZXJhdGlvbnMgdGltZSBvdXQKICAgICAgICAgICAqIGFueXdheS4gKi8KQEAgLTI5LDYgKzI4LDMgQEAKICAKICAgICAgICAgIHUtPmlnbm9yZV9vbl9pc29sYXRlID0gdHJ1ZTsKICB9Ci0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtY29yZS1ldmFsdWF0ZS1wcmVzZXRzLWFmdGVyLWdlbmVyYXRvcnMtaGF2ZS1ydW4tNjUyNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jb3JlLWV2YWx1YXRlLXByZXNldHMtYWZ0ZXItZ2VuZXJhdG9ycy1oYXZlLXJ1bi02NTI2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjEwMGU1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jb3JlLWV2YWx1YXRlLXByZXNldHMtYWZ0ZXItZ2VuZXJhdG9ycy1oYXZlLXJ1bi02NTI2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotRnJvbSAyOGRkNjZlY2ZjZTc0M2IxZWE5MDQ2YzdiYjUwMWUwZmNhZWZmNzI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTHVjYSBCcnVubyA8bHVjYS5icnVub0Bjb3Jlb3MuY29tPgotRGF0ZTogU3VuLCA2IEF1ZyAyMDE3IDEzOjI0OjI0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvcmU6IGV2YWx1YXRlIHByZXNldHMgYWZ0ZXIgZ2VuZXJhdG9ycyBoYXZlIHJ1biAoIzY1MjYpCi0KLVRoaXMgY29tbWl0IG1vdmVzIHRoZSBmaXJzdC1ib290IHN5c3RlbSBwcmVzZXQtc2V0dGluZ3MgZXZhbHVhdGlvbiBvdXQKLW9mIG1haW4gYW5kIGludG8gdGhlIG1hbmFnZXIgc3RhcnR1cCBsb2dpYyBpdHNlbGYuIE5vdGFibHksIGl0IHJldmVyc2VzCi10aGUgb3JkZXIgYmV0d2VlbiBnZW5lcmF0b3JzIGFuZCBwcmVzZXRzIGV2YWx1YXRpb24sIHNvIHRoYXQgYW55IGNoYW5nZXMKLXBlcmZvcm1lZCBieSBmaXJzdC1ib290IGdlbmVyYXRvcnMgYXJlIHRha2VuIGludG8gdGhlIGFjY291bnQgYnkgcHJlc2V0cwotbG9naWMuCi0KLUFmdGVyIHRoaXMgY2hhbmdlLCB1bml0cyBjcmVhdGVkIGJ5IGEgZ2VuZXJhdG9yIGNhbiBiZSBlbmFibGVkIGFzIHBhcnQKLW9mIGEgcHJlc2V0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL2NvcmUvbWFpbi5jICAgIHwgMTIgKystLS0tLS0tLS0tCi0gc3JjL2NvcmUvbWFuYWdlci5jIHwgIDggKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbWFpbi5jIGIvc3JjL2NvcmUvbWFpbi5jCi1pbmRleCBkZmVkYzNkLi4xMWFjOWNmIDEwMDY0NAotLS0tIGEvc3JjL2NvcmUvbWFpbi5jCi0rKysgYi9zcmMvY29yZS9tYWluLmMKLUBAIC0xODA5LDE4ICsxODA5LDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKLSAgICAgICAgICAgICAgICAgaWYgKHByY3RsKFBSX1NFVF9DSElMRF9TVUJSRUFQRVIsIDEpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfd2FybmluZ19lcnJubyhlcnJubywgIkZhaWxlZCB0byBtYWtlIHVzIGEgc3VicmVhcGVyOiAlbSIpOwotIAotLSAgICAgICAgaWYgKGFyZ19zeXN0ZW0pIHsKLSsgICAgICAgIGlmIChhcmdfc3lzdGVtKQotKyAgICAgICAgICAgICAgICAvKiBCdW1wIHVwIFJMSU1JVF9OT0ZJTEUgZm9yIHN5c3RlbWQgaXRzZWxmICovCi0gICAgICAgICAgICAgICAgICh2b2lkKSBidW1wX3JsaW1pdF9ub2ZpbGUoJnNhdmVkX3JsaW1pdF9ub2ZpbGUpOwotIAotLSAgICAgICAgICAgICAgICBpZiAoZW1wdHlfZXRjKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgciA9IHVuaXRfZmlsZV9wcmVzZXRfYWxsKFVOSVRfRklMRV9TWVNURU0sIDAsIE5VTEwsIFVOSVRfRklMRV9QUkVTRVRfRU5BQkxFX09OTFksIE5VTEwsIDApOwotLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyIDwgMCkKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19mdWxsX2Vycm5vKHIgPT0gLUVFWElTVCA/IExPR19OT1RJQ0UgOiBMT0dfV0FSTklORywgciwgIkZhaWxlZCB0byBwb3B1bGF0ZSAvZXRjIHdpdGggcHJlc2V0IHVuaXQgc2V0dGluZ3MsIGlnbm9yaW5nOiAlbSIpOwotLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvKCJQb3B1bGF0ZWQgL2V0YyB3aXRoIHByZXNldCB1bml0IHNldHRpbmdzLiIpOwotLSAgICAgICAgICAgICAgICB9Ci0tICAgICAgICB9Ci0tCi0gICAgICAgICByID0gbWFuYWdlcl9uZXcoYXJnX3N5c3RlbSA/IFVOSVRfRklMRV9TWVNURU0gOiBVTklUX0ZJTEVfVVNFUiwgYXJnX2FjdGlvbiA9PSBBQ1RJT05fVEVTVCwgJm0pOwotICAgICAgICAgaWYgKHIgPCAwKSB7Ci0gICAgICAgICAgICAgICAgIGxvZ19lbWVyZ2VuY3lfZXJybm8ociwgIkZhaWxlZCB0byBhbGxvY2F0ZSBtYW5hZ2VyIG9iamVjdDogJW0iKTsKLWRpZmYgLS1naXQgYS9zcmMvY29yZS9tYW5hZ2VyLmMgYi9zcmMvY29yZS9tYW5hZ2VyLmMKLWluZGV4IDFhYWRiNzAuLmZiNWUyYjUgMTAwNjQ0Ci0tLS0gYS9zcmMvY29yZS9tYW5hZ2VyLmMKLSsrKyBiL3NyYy9jb3JlL21hbmFnZXIuYwotQEAgLTEzMjgsNiArMTMyOCwxNCBAQCBpbnQgbWFuYWdlcl9zdGFydHVwKE1hbmFnZXIgKm0sIEZJTEUgKnNlcmlhbGl6YXRpb24sIEZEU2V0ICpmZHMpIHsKLSAgICAgICAgIGlmIChyIDwgMCkKLSAgICAgICAgICAgICAgICAgcmV0dXJuIHI7Ci0gCi0rICAgICAgICBpZiAobS0+Zmlyc3RfYm9vdCAmJiBtLT51bml0X2ZpbGVfc2NvcGUgPT0gVU5JVF9GSUxFX1NZU1RFTSkgewotKyAgICAgICAgICAgICAgICBxID0gdW5pdF9maWxlX3ByZXNldF9hbGwoVU5JVF9GSUxFX1NZU1RFTSwgMCwgTlVMTCwgVU5JVF9GSUxFX1BSRVNFVF9FTkFCTEVfT05MWSwgTlVMTCwgMCk7Ci0rICAgICAgICAgICAgICAgIGlmIChxIDwgMCkKLSsgICAgICAgICAgICAgICAgICAgICAgICBsb2dfZnVsbF9lcnJubyhxID09IC1FRVhJU1QgPyBMT0dfTk9USUNFIDogTE9HX1dBUk5JTkcsIHEsICJGYWlsZWQgdG8gcG9wdWxhdGUgL2V0YyB3aXRoIHByZXNldCB1bml0IHNldHRpbmdzLCBpZ25vcmluZzogJW0iKTsKLSsgICAgICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvKCJQb3B1bGF0ZWQgL2V0YyB3aXRoIHByZXNldCB1bml0IHNldHRpbmdzLiIpOwotKyAgICAgICAgfQotKwotICAgICAgICAgbG9va3VwX3BhdGhzX3JlZHVjZSgmbS0+bG9va3VwX3BhdGhzKTsKLSAgICAgICAgIG1hbmFnZXJfYnVpbGRfdW5pdF9wYXRoX2NhY2hlKG0pOwotIAotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLW1haW4tc2tpcC1tYW55LWluaXRpYWxpemF0aW9uLXN0ZXBzLXdoZW4tcnVubmluZy1pbi0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtbWFpbi1za2lwLW1hbnktaW5pdGlhbGl6YXRpb24tc3RlcHMtd2hlbi1ydW5uaW5nLWluLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTAzM2IwNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtbWFpbi1za2lwLW1hbnktaW5pdGlhbGl6YXRpb24tc3RlcHMtd2hlbi1ydW5uaW5nLWluLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2MyArMCwwIEBACi1Gcm9tIGRlYTM3NGU4OThhNzQ5YTA0NzRiNzJiMjAxNWNjYTkwMDliMTQzMmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBMZW5uYXJ0IFBvZXR0ZXJpbmcgPGxlbm5hcnRAcG9ldHRlcmluZy5uZXQ+Ci1EYXRlOiBXZWQsIDEzIFNlcCAyMDE3IDEwOjMxOjQwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1haW46IHNraXAgbWFueSBpbml0aWFsaXphdGlvbiBzdGVwcyB3aGVuIHJ1bm5pbmcgaW4gLS10ZXN0Ci0gbW9kZQotCi1Nb3N0IGltcG9ydGFudGx5LCBkb24ndCBjb2xsZWN0IG9wZW4gc29ja2V0IGFjdGl2YXRpb24gZmRzIHdoZW4gaW4KLS0tdGVzdCBtb2RlLiBUaGlzIHNwZWNpZmljYWxseSBjcmVhdGVkIGEgcHJvYmxlbSBiZWNhdXNlIHdlIGludm9rZQotcGFnZXJfb3BlbigpIGJlZm9yZWhhbmQgKHdoaWNoIHRoZXNlIGRheXMgbWFrZXMgY29waWVzIG9mIHRoZSBvcmlnaW5hbAotc3Rkb3V0L3N0ZGVyciBpbiBvcmRlciB0byBiZSBhYmxlIHRvIHJlc3RvcmUgdGhlbSB3aGVuIHRoZSBwYWdlciBnb2VzCi1hd2F5KSBhbmQgd2UgbWlnaHQgbWlzdGFrZW5seSB0aGUgZmQgY29waWVzIGl0IGNyZWF0ZXMgYXMgc29ja2V0Ci1hY3RpdmF0aW9uIGZkcy4KLQotRml4ZXM6ICM2MzgzCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQ2F0YWxpbiBFbmFjaGUgPGNhdGFsaW4uZW5hY2hlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvY29yZS9tYWluLmMgfCAxMDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNTYgaW5zZXJ0aW9ucygrKSwgNTIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY29yZS9tYWluLmMgYi9zcmMvY29yZS9tYWluLmMKLWluZGV4IDExYWM5Y2YuLmQxYTUzYTUgMTAwNjQ0Ci0tLS0gYS9zcmMvY29yZS9tYWluLmMKLSsrKyBiL3NyYy9jb3JlL21haW4uYwotQEAgLTE2NzksMjAgKzE2NzksMjIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgewotICAgICAgICAgbG9nX2Nsb3NlKCk7Ci0gCi0gICAgICAgICAvKiBSZW1lbWJlciBvcGVuIGZpbGUgZGVzY3JpcHRvcnMgZm9yIGxhdGVyIGRlc2VyaWFsaXphdGlvbiAqLwotLSAgICAgICAgciA9IGZkc2V0X25ld19maWxsKCZmZHMpOwotLSAgICAgICAgaWYgKHIgPCAwKSB7Ci0tICAgICAgICAgICAgICAgIGxvZ19lbWVyZ2VuY3lfZXJybm8ociwgIkZhaWxlZCB0byBhbGxvY2F0ZSBmZCBzZXQ6ICVtIik7Ci0tICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSAiRmFpbGVkIHRvIGFsbG9jYXRlIGZkIHNldCI7Ci0tICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOwotLSAgICAgICAgfSBlbHNlCi0tICAgICAgICAgICAgICAgIGZkc2V0X2Nsb2V4ZWMoZmRzLCB0cnVlKTsKLSsgICAgICAgIGlmIChhcmdfYWN0aW9uID09IEFDVElPTl9SVU4pIHsKLSsgICAgICAgICAgICAgICAgciA9IGZkc2V0X25ld19maWxsKCZmZHMpOwotKyAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBsb2dfZW1lcmdlbmN5X2Vycm5vKHIsICJGYWlsZWQgdG8gYWxsb2NhdGUgZmQgc2V0OiAlbSIpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSAiRmFpbGVkIHRvIGFsbG9jYXRlIGZkIHNldCI7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7Ci0rICAgICAgICAgICAgICAgIH0gZWxzZQotKyAgICAgICAgICAgICAgICAgICAgICAgIGZkc2V0X2Nsb2V4ZWMoZmRzLCB0cnVlKTsKLSAKLS0gICAgICAgIGlmIChhcmdfc2VyaWFsaXphdGlvbikKLS0gICAgICAgICAgICAgICAgYXNzZXJ0X3NlKGZkc2V0X3JlbW92ZShmZHMsIGZpbGVubyhhcmdfc2VyaWFsaXphdGlvbikpID49IDApOwotKyAgICAgICAgICAgICAgICBpZiAoYXJnX3NlcmlhbGl6YXRpb24pCi0rICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3NlKGZkc2V0X3JlbW92ZShmZHMsIGZpbGVubyhhcmdfc2VyaWFsaXphdGlvbikpID49IDApOwotIAotLSAgICAgICAgaWYgKGFyZ19zeXN0ZW0pCi0tICAgICAgICAgICAgICAgIC8qIEJlY29tZSBhIHNlc3Npb24gbGVhZGVyIGlmIHdlIGFyZW4ndCBvbmUgeWV0LiAqLwotLSAgICAgICAgICAgICAgICBzZXRzaWQoKTsKLSsgICAgICAgICAgICAgICAgaWYgKGFyZ19zeXN0ZW0pCi0rICAgICAgICAgICAgICAgICAgICAgICAgLyogQmVjb21lIGEgc2Vzc2lvbiBsZWFkZXIgaWYgd2UgYXJlbid0IG9uZSB5ZXQuICovCi0rICAgICAgICAgICAgICAgICAgICAgICAgc2V0c2lkKCk7Ci0rICAgICAgICB9Ci0gCi0gICAgICAgICAvKiBNb3ZlIG91dCBvZiB0aGUgd2F5LCBzbyB0aGF0IHdlIHdvbid0IGJsb2NrIHVubW91bnRzICovCi0gICAgICAgICBhc3NlcnRfc2UoY2hkaXIoIi8iKSA9PSAwKTsKLUBAIC0xNzYyLDU2ICsxNzY0LDU4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ19hY3Rpb24gPT0gQUNUSU9OX1RFU1QgPyAiIHRlc3QiIDogIiIsIGdldHVpZCgpLCB0KTsKLSAgICAgICAgIH0KLSAKLS0gICAgICAgIGlmIChhcmdfc3lzdGVtICYmICFza2lwX3NldHVwKSB7Ci0tICAgICAgICAgICAgICAgIGlmIChhcmdfc2hvd19zdGF0dXMgPiAwKQotLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c193ZWxjb21lKCk7Ci0rICAgICAgICBpZiAoYXJnX2FjdGlvbiA9PSBBQ1RJT05fUlVOKSB7Ci0rICAgICAgICAgICAgICAgIGlmIChhcmdfc3lzdGVtICYmICFza2lwX3NldHVwKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ19zaG93X3N0YXR1cyA+IDApCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNfd2VsY29tZSgpOwotIAotLSAgICAgICAgICAgICAgICBob3N0bmFtZV9zZXR1cCgpOwotLSAgICAgICAgICAgICAgICBtYWNoaW5lX2lkX3NldHVwKE5VTEwsIGFyZ19tYWNoaW5lX2lkLCBOVUxMKTsKLS0gICAgICAgICAgICAgICAgbG9vcGJhY2tfc2V0dXAoKTsKLS0gICAgICAgICAgICAgICAgYnVtcF91bml4X21heF9kZ3JhbV9xbGVuKCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaG9zdG5hbWVfc2V0dXAoKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lX2lkX3NldHVwKE5VTEwsIGFyZ19tYWNoaW5lX2lkLCBOVUxMKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBsb29wYmFja19zZXR1cCgpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1bXBfdW5peF9tYXhfZGdyYW1fcWxlbigpOwotIAotLSAgICAgICAgICAgICAgICB0ZXN0X3VzcigpOwotLSAgICAgICAgfQotKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfdXNyKCk7Ci0rICAgICAgICAgICAgICAgIH0KLSAKLS0gICAgICAgIGlmIChhcmdfc3lzdGVtICYmIGFyZ19ydW50aW1lX3dhdGNoZG9nID4gMCAmJiBhcmdfcnVudGltZV93YXRjaGRvZyAhPSBVU0VDX0lORklOSVRZKQotLSAgICAgICAgICAgICAgICB3YXRjaGRvZ19zZXRfdGltZW91dCgmYXJnX3J1bnRpbWVfd2F0Y2hkb2cpOwotKyAgICAgICAgICAgICAgICBpZiAoYXJnX3N5c3RlbSAmJiBhcmdfcnVudGltZV93YXRjaGRvZyA+IDAgJiYgYXJnX3J1bnRpbWVfd2F0Y2hkb2cgIT0gVVNFQ19JTkZJTklUWSkKLSsgICAgICAgICAgICAgICAgICAgICAgICB3YXRjaGRvZ19zZXRfdGltZW91dCgmYXJnX3J1bnRpbWVfd2F0Y2hkb2cpOwotIAotLSAgICAgICAgaWYgKGFyZ190aW1lcl9zbGFja19uc2VjICE9IE5TRUNfSU5GSU5JVFkpCi0tICAgICAgICAgICAgICAgIGlmIChwcmN0bChQUl9TRVRfVElNRVJTTEFDSywgYXJnX3RpbWVyX3NsYWNrX25zZWMpIDwgMCkKLS0gICAgICAgICAgICAgICAgICAgICAgICBsb2dfZXJyb3JfZXJybm8oZXJybm8sICJGYWlsZWQgdG8gYWRqdXN0IHRpbWVyIHNsYWNrOiAlbSIpOwotKyAgICAgICAgICAgICAgICBpZiAoYXJnX3RpbWVyX3NsYWNrX25zZWMgIT0gTlNFQ19JTkZJTklUWSkKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJjdGwoUFJfU0VUX1RJTUVSU0xBQ0ssIGFyZ190aW1lcl9zbGFja19uc2VjKSA8IDApCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfZXJyb3JfZXJybm8oZXJybm8sICJGYWlsZWQgdG8gYWRqdXN0IHRpbWVyIHNsYWNrOiAlbSIpOwotIAotLSAgICAgICAgaWYgKGFyZ19zeXN0ZW0gJiYgIWNhcF90ZXN0X2FsbChhcmdfY2FwYWJpbGl0eV9ib3VuZGluZ19zZXQpKSB7Ci0tICAgICAgICAgICAgICAgIHIgPSBjYXBhYmlsaXR5X2JvdW5kaW5nX3NldF9kcm9wX3VzZXJtb2RlKGFyZ19jYXBhYmlsaXR5X2JvdW5kaW5nX3NldCk7Ci0tICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19lbWVyZ2VuY3lfZXJybm8ociwgIkZhaWxlZCB0byBkcm9wIGNhcGFiaWxpdHkgYm91bmRpbmcgc2V0IG9mIHVzZXJtb2RlIGhlbHBlcnM6ICVtIik7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfbWVzc2FnZSA9ICJGYWlsZWQgdG8gZHJvcCBjYXBhYmlsaXR5IGJvdW5kaW5nIHNldCBvZiB1c2VybW9kZSBoZWxwZXJzIjsKLS0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKLS0gICAgICAgICAgICAgICAgfQotLSAgICAgICAgICAgICAgICByID0gY2FwYWJpbGl0eV9ib3VuZGluZ19zZXRfZHJvcChhcmdfY2FwYWJpbGl0eV9ib3VuZGluZ19zZXQsIHRydWUpOwotLSAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBsb2dfZW1lcmdlbmN5X2Vycm5vKHIsICJGYWlsZWQgdG8gZHJvcCBjYXBhYmlsaXR5IGJvdW5kaW5nIHNldDogJW0iKTsKLS0gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9tZXNzYWdlID0gIkZhaWxlZCB0byBkcm9wIGNhcGFiaWxpdHkgYm91bmRpbmcgc2V0IjsKLS0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKLSsgICAgICAgICAgICAgICAgaWYgKGFyZ19zeXN0ZW0gJiYgIWNhcF90ZXN0X2FsbChhcmdfY2FwYWJpbGl0eV9ib3VuZGluZ19zZXQpKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgciA9IGNhcGFiaWxpdHlfYm91bmRpbmdfc2V0X2Ryb3BfdXNlcm1vZGUoYXJnX2NhcGFiaWxpdHlfYm91bmRpbmdfc2V0KTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19lbWVyZ2VuY3lfZXJybm8ociwgIkZhaWxlZCB0byBkcm9wIGNhcGFiaWxpdHkgYm91bmRpbmcgc2V0IG9mIHVzZXJtb2RlIGhlbHBlcnM6ICVtIik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9tZXNzYWdlID0gIkZhaWxlZCB0byBkcm9wIGNhcGFiaWxpdHkgYm91bmRpbmcgc2V0IG9mIHVzZXJtb2RlIGhlbHBlcnMiOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBjYXBhYmlsaXR5X2JvdW5kaW5nX3NldF9kcm9wKGFyZ19jYXBhYmlsaXR5X2JvdW5kaW5nX3NldCwgdHJ1ZSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfZW1lcmdlbmN5X2Vycm5vKHIsICJGYWlsZWQgdG8gZHJvcCBjYXBhYmlsaXR5IGJvdW5kaW5nIHNldDogJW0iKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSAiRmFpbGVkIHRvIGRyb3AgY2FwYWJpbGl0eSBib3VuZGluZyBzZXQiOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICB9Ci0tICAgICAgICB9Ci0gCi0tICAgICAgICBpZiAoYXJnX3N5c2NhbGxfYXJjaHMpIHsKLS0gICAgICAgICAgICAgICAgciA9IGVuZm9yY2Vfc3lzY2FsbF9hcmNocyhhcmdfc3lzY2FsbF9hcmNocyk7Ci0tICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSAiRmFpbGVkIHRvIHNldCBzeXNjYWxsIGFyY2hpdGVjdHVyZXMiOwotLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOwotKyAgICAgICAgICAgICAgICBpZiAoYXJnX3N5c2NhbGxfYXJjaHMpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICByID0gZW5mb3JjZV9zeXNjYWxsX2FyY2hzKGFyZ19zeXNjYWxsX2FyY2hzKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSAiRmFpbGVkIHRvIHNldCBzeXNjYWxsIGFyY2hpdGVjdHVyZXMiOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICB9Ci0tICAgICAgICB9Ci0gCi0tICAgICAgICBpZiAoIWFyZ19zeXN0ZW0pCi0tICAgICAgICAgICAgICAgIC8qIEJlY29tZSByZWFwZXIgb2Ygb3VyIGNoaWxkcmVuICovCi0tICAgICAgICAgICAgICAgIGlmIChwcmN0bChQUl9TRVRfQ0hJTERfU1VCUkVBUEVSLCAxKSA8IDApCi0tICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3dhcm5pbmdfZXJybm8oZXJybm8sICJGYWlsZWQgdG8gbWFrZSB1cyBhIHN1YnJlYXBlcjogJW0iKTsKLSsgICAgICAgICAgICAgICAgaWYgKCFhcmdfc3lzdGVtKQotKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJlY29tZSByZWFwZXIgb2Ygb3VyIGNoaWxkcmVuICovCi0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByY3RsKFBSX1NFVF9DSElMRF9TVUJSRUFQRVIsIDEpIDwgMCkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ193YXJuaW5nX2Vycm5vKGVycm5vLCAiRmFpbGVkIHRvIG1ha2UgdXMgYSBzdWJyZWFwZXI6ICVtIik7Ci0gCi0tICAgICAgICBpZiAoYXJnX3N5c3RlbSkKLS0gICAgICAgICAgICAgICAgLyogQnVtcCB1cCBSTElNSVRfTk9GSUxFIGZvciBzeXN0ZW1kIGl0c2VsZiAqLwotLSAgICAgICAgICAgICAgICAodm9pZCkgYnVtcF9ybGltaXRfbm9maWxlKCZzYXZlZF9ybGltaXRfbm9maWxlKTsKLSsgICAgICAgICAgICAgICAgaWYgKGFyZ19zeXN0ZW0pCi0rICAgICAgICAgICAgICAgICAgICAgICAgLyogQnVtcCB1cCBSTElNSVRfTk9GSUxFIGZvciBzeXN0ZW1kIGl0c2VsZiAqLwotKyAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSBidW1wX3JsaW1pdF9ub2ZpbGUoJnNhdmVkX3JsaW1pdF9ub2ZpbGUpOwotKyAgICAgICAgfQotIAotICAgICAgICAgciA9IG1hbmFnZXJfbmV3KGFyZ19zeXN0ZW0gPyBVTklUX0ZJTEVfU1lTVEVNIDogVU5JVF9GSUxFX1VTRVIsIGFyZ19hY3Rpb24gPT0gQUNUSU9OX1RFU1QsICZtKTsKLSAgICAgICAgIGlmIChyIDwgMCkgewotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLWJpbmZtdC1Eb24tdC1pbnN0YWxsLWRlcGVuZGVuY3ktbGlua3MtYXQtaW5zdGFsbC10aW0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItYmluZm10LURvbi10LWluc3RhbGwtZGVwZW5kZW5jeS1saW5rcy1hdC1pbnN0YWxsLXRpbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2Y0YjM5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLWJpbmZtdC1Eb24tdC1pbnN0YWxsLWRlcGVuZGVuY3ktbGlua3MtYXQtaW5zdGFsbC10aW0ucGF0Y2gKQEAgLTAsMCArMSw4MSBAQAorRnJvbSBjOTNlYjZjZGVjMDNmNWUyNDNlNTllOTVkYzQ5MjczZmNiOTBlN2MxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAyMyBGZWIgMjAxOCAxMDoyMzo0MCArMDgwMAorU3ViamVjdDogW1BBVENIIDAyLzMxXSBiaW5mbXQ6IERvbid0IGluc3RhbGwgZGVwZW5kZW5jeSBsaW5rcyBhdCBpbnN0YWxsIHRpbWUKKyBmb3IgdGhlIGJpbmZtdCBzZXJ2aWNlcworCit1c2UgW0luc3RhbGxdIGJsb2NrcyBzbyB0aGF0IHRoZXkgZ2V0IGNyZWF0ZWQgd2hlbiB0aGUgc2VydmljZSBpcyBlbmFibGVkCitsaWtlIGEgdHJhZGl0aW9uYWwgc2VydmljZS4KKworVGhlIFtJbnN0YWxsXSBibG9ja3Mgd2VyZSByZWplY3RlZCB1cHN0cmVhbSBhcyB0aGV5IGRvbid0IGhhdmUgYSB3YXkgdG8KKyJlbmFibGUiIGl0IG9uIGluc3RhbGwgd2l0aG91dCBzdGF0aWMgc3ltbGlua3Mgd2hpY2ggY2FuJ3QgYmUgZGlzYWJsZWQsCitvbmx5IG1hc2tlZC4gV2UgaG93ZXZlciBjYW4gZG8gdGhhdCBpbiBhIHBvc3RpbnN0LgorCitVcHN0cmVhbS1TdGF0dXM6IERlbmllZAorCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHVuaXRzL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICB8IDYgKystLS0tCisgdW5pdHMvcHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50IHwgMyArKysKKyB1bml0cy9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlLmluICAgICAgICAgfCA0ICsrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3VuaXRzL21lc29uLmJ1aWxkIGIvdW5pdHMvbWVzb24uYnVpbGQKK2luZGV4IDgxNGVlNzg4NS4uNDlhY2UwZDBmIDEwMDY0NAorLS0tIGEvdW5pdHMvbWVzb24uYnVpbGQKKysrKyBiL3VuaXRzL21lc29uLmJ1aWxkCitAQCAtNjAsOCArNjAsNyBAQCB1bml0cyA9IFsKKyAgICAgICAgIFsncG93ZXJvZmYudGFyZ2V0JywgICAgICAgICAgICAgICAgICAgICAnJywKKyAgICAgICAgICAncnVubGV2ZWwwLnRhcmdldCddLAorICAgICAgICAgWydwcmludGVyLnRhcmdldCcsICAgICAgICAgICAgICAgICAgICAgICcnXSwKKy0gICAgICAgIFsncHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50JywgICAnRU5BQkxFX0JJTkZNVCcsCistICAgICAgICAgJ3N5c2luaXQudGFyZ2V0LndhbnRzLyddLAorKyAgICAgICAgWydwcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQnLCAgICdFTkFCTEVfQklORk1UJ10sCisgICAgICAgICBbJ3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLm1vdW50JywgICAgICAgJ0VOQUJMRV9CSU5GTVQnXSwKKyAgICAgICAgIFsncmVib290LnRhcmdldCcsICAgICAgICAgICAgICAgICAgICAgICAnJywKKyAgICAgICAgICAncnVubGV2ZWw2LnRhcmdldCBjdHJsLWFsdC1kZWwudGFyZ2V0J10sCitAQCAtMTQ0LDggKzE0Myw3IEBAIGluX3VuaXRzID0gWworICAgICAgICAgWydzeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnNlcnZpY2UnLCAnJ10sCisgICAgICAgICBbJ3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwuc2VydmljZScsICAgICcnXSwKKyAgICAgICAgIFsnc3lzdGVtZC1iYWNrbGlnaHRALnNlcnZpY2UnLCAgICAgICAgICAgJ0VOQUJMRV9CQUNLTElHSFQnXSwKKy0gICAgICAgIFsnc3lzdGVtZC1iaW5mbXQuc2VydmljZScsICAgICAgICAgICAgICAgJ0VOQUJMRV9CSU5GTVQnLAorLSAgICAgICAgICdzeXNpbml0LnRhcmdldC53YW50cy8nXSwKKysgICAgICAgIFsnc3lzdGVtZC1iaW5mbXQuc2VydmljZScsICAgICAgICAgICAgICAgJ0VOQUJMRV9CSU5GTVQnXSwKKyAgICAgICAgIFsnc3lzdGVtZC1jb3JlZHVtcEAuc2VydmljZScsICAgICAgICAgICAgJ0VOQUJMRV9DT1JFRFVNUCddLAorICAgICAgICAgWydzeXN0ZW1kLWV4aXQuc2VydmljZScsICAgICAgICAgICAgICAgICAnJ10sCisgICAgICAgICBbJ3N5c3RlbWQtZmlyc3Rib290LnNlcnZpY2UnLCAgICAgICAgICAgICdFTkFCTEVfRklSU1RCT09UJywKK2RpZmYgLS1naXQgYS91bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQgYi91bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKK2luZGV4IDMwYTZiYzk5MS4uNDIzMWYzYjcwIDEwMDY0NAorLS0tIGEvdW5pdHMvcHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50CisrKysgYi91bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKK0BAIC0xOCwzICsxOCw2IEBAIENvbmRpdGlvblBhdGhJc1JlYWRXcml0ZT0vcHJvYy9zeXMvCisgCisgW0F1dG9tb3VudF0KKyBXaGVyZT0vcHJvYy9zeXMvZnMvYmluZm10X21pc2MKKysKKytbSW5zdGFsbF0KKytXYW50ZWRCeT1zeXNpbml0LnRhcmdldAorZGlmZiAtLWdpdCBhL3VuaXRzL3N5c3RlbWQtYmluZm10LnNlcnZpY2UuaW4gYi91bml0cy9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlLmluCitpbmRleCBkZjkzOTZkODkuLjA2ODdmNDY0OCAxMDA2NDQKKy0tLSBhL3VuaXRzL3N5c3RlbWQtYmluZm10LnNlcnZpY2UuaW4KKysrKyBiL3VuaXRzL3N5c3RlbWQtYmluZm10LnNlcnZpY2UuaW4KK0BAIC0xMyw2ICsxMyw3IEBAIERvY3VtZW50YXRpb249bWFuOnN5c3RlbWQtYmluZm10LnNlcnZpY2UoOCkgbWFuOmJpbmZtdC5kKDUpCisgRG9jdW1lbnRhdGlvbj1odHRwczovL3d3dy5rZXJuZWwub3JnL2RvYy9Eb2N1bWVudGF0aW9uL2JpbmZtdF9taXNjLnR4dAorIERlZmF1bHREZXBlbmRlbmNpZXM9bm8KKyBDb25mbGljdHM9c2h1dGRvd24udGFyZ2V0CisrV2FudHM9cHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50CisgQWZ0ZXI9cHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50CisgQmVmb3JlPXN5c2luaXQudGFyZ2V0IHNodXRkb3duLnRhcmdldAorIENvbmRpdGlvblBhdGhJc1JlYWRXcml0ZT0vcHJvYy9zeXMvCitAQCAtMjcsMyArMjgsNiBAQCBUeXBlPW9uZXNob3QKKyBSZW1haW5BZnRlckV4aXQ9eWVzCisgRXhlY1N0YXJ0PUByb290bGliZXhlY2RpckAvc3lzdGVtZC1iaW5mbXQKKyBUaW1lb3V0U2VjPTkwcworKworK1tJbnN0YWxsXQorK1dhbnRlZEJ5PXN5c2luaXQudGFyZ2V0CistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1zdHJuZHVwYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGMxMzZiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLUZyb20gNTg1YWJkODkxYTU2NDA5OTE1MzE0MzA0MTAxY2FjMjZiNDJjMDc2YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgotRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMDo0NTo0NiAtMDcwMAotU3ViamVjdDogW1BBVENIIDAyLzEyXSBzcmMvYmFzaWMvbWlzc2luZy5oOiBjaGVjayBmb3IgbWlzc2luZyBzdHJuZHVwYQotCi1pbmNsdWRlIG1pc3NpbmcuaCAgZm9yIGRlZmluaXRpb24gb2Ygc3RybmR1cGEKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBjb25maWd1cmUuYWMgICAgICAgICAgIHwgIDEgKwotIHNyYy9iYXNpYy9taXNzaW5nLmggICAgfCAxMSArKysrKysrKysrKwotIHNyYy9iYXNpYy9ta2Rpci5jICAgICAgfCAgMSArCi0gc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYyB8ICAxICsKLSBzcmMvc2hhcmVkL3BhZ2VyLmMgICAgIHwgIDEgKwotIHNyYy9zaGFyZWQvdWlkLXJhbmdlLmMgfCAgMSArCi0gNiBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGVmY2RjNmMxNi4uY2QwMzVhOTcxIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zMjksNiArMzI5LDcgQEAgQUNfQ0hFQ0tfREVDTFMoWwotICAgICAgICAgcGl2b3Rfcm9vdCwKLSAgICAgICAgIG5hbWVfdG9faGFuZGxlX2F0LAotICAgICAgICAgc2V0bnMsCi0rICAgICAgICBzdHJuZHVwYSwKLSAgICAgICAgIHJlbmFtZWF0MiwKLSAgICAgICAgIGtjbXAsCi0gICAgICAgICBrZXljdGwsCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLWluZGV4IDA0OTEyYmY1Mi4uODAwOTg4OGFkIDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmcuaAotKysrIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAotQEAgLTExMDQsNiArMTEwNCwxNyBAQCB0eXBlZGVmIGludDMyX3Qga2V5X3NlcmlhbF90OwotICNkZWZpbmUgS0VZQ1RMX0RFU0NSSUJFIDYKLSAjZW5kaWYKLSAKLSsjaWYgIUhBVkVfREVDTF9TVFJORFVQQQotKyNkZWZpbmUgc3RybmR1cGEocywgbikgXAotKyAgKHsgXAotKyAgICBjb25zdCBjaGFyICpfX29sZCA9IChzKTsgXAotKyAgICBzaXplX3QgX19sZW4gPSBzdHJubGVuKF9fb2xkLCAobikpOyBcCi0rICAgIGNoYXIgKl9fbmV3ID0gKGNoYXIgKilhbGxvY2EoX19sZW4gKyAxKTsgXAotKyAgICBfX25ld1tfX2xlbl0gPSAnXDAnOyBcCi0rICAgIChjaGFyICopbWVtY3B5KF9fbmV3LCBfX29sZCwgX19sZW4pOyBcCi0rICB9KQotKyNlbmRpZgotKwotICNpZm5kZWYgS0VZQ1RMX1JFQUQKLSAjZGVmaW5lIEtFWUNUTF9SRUFEIDExCi0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21rZGlyLmMgYi9zcmMvYmFzaWMvbWtkaXIuYwotaW5kZXggNmIxYTk4NDAyLi5kMTM4OGRmNDggMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvbWtkaXIuYwotKysrIGIvc3JjL2Jhc2ljL21rZGlyLmMKLUBAIC0yOCw2ICsyOCw3IEBACi0gI2luY2x1ZGUgInBhdGgtdXRpbC5oIgotICNpbmNsdWRlICJzdGF0LXV0aWwuaCIKLSAjaW5jbHVkZSAidXNlci11dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKLSAKLSBpbnQgbWtkaXJfc2FmZV9pbnRlcm5hbChjb25zdCBjaGFyICpwYXRoLCBtb2RlX3QgbW9kZSwgdWlkX3QgdWlkLCBnaWRfdCBnaWQsIG1rZGlyX2Z1bmNfdCBfbWtkaXIpIHsKLSAgICAgICAgIHN0cnVjdCBzdGF0IHN0OwotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMgYi9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCi1pbmRleCA0NTMyZjIyMmMuLjdhMzBhMGUwNiAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKLSsrKyBiL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKLUBAIC0zMCw2ICszMCw3IEBACi0gI2luY2x1ZGUgInBhcnNlLXV0aWwuaCIKLSAjaW5jbHVkZSAicHJvY2Vzcy11dGlsLmgiCi0gI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKLSAKLSBpbnQgcGFyc2VfYm9vbGVhbihjb25zdCBjaGFyICp2KSB7Ci0gICAgICAgICBhc3NlcnQodik7Ci1kaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9wYWdlci5jIGIvc3JjL3NoYXJlZC9wYWdlci5jCi1pbmRleCA0ZDdiMDJjNjMuLjg1NGVmYzBjOSAxMDA2NDQKLS0tLSBhL3NyYy9zaGFyZWQvcGFnZXIuYwotKysrIGIvc3JjL3NoYXJlZC9wYWdlci5jCi1AQCAtMzgsNiArMzgsNyBAQAotICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgotICNpbmNsdWRlICJzdHJ2LmgiCi0gI2luY2x1ZGUgInRlcm1pbmFsLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgotIAotIHN0YXRpYyBwaWRfdCBwYWdlcl9waWQgPSAwOwotIAotZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMgYi9zcmMvc2hhcmVkL3VpZC1yYW5nZS5jCi1pbmRleCBiNmVjNDc0MzkuLjkxY2U5ZmI3ZiAxMDA2NDQKLS0tLSBhL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMKLSsrKyBiL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMKLUBAIC0yNCw2ICsyNCw3IEBACi0gI2luY2x1ZGUgIm1hY3JvLmgiCi0gI2luY2x1ZGUgInVpZC1yYW5nZS5oIgotICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgotIAotIHN0YXRpYyBib29sIHVpZF9yYW5nZV9pbnRlcnNlY3QoVWlkUmFuZ2UgKnJhbmdlLCB1aWRfdCBzdGFydCwgdWlkX3QgbnIpIHsKLSAgICAgICAgIGFzc2VydChyYW5nZSk7Ci0tLSAKLTIuMTQuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTJkMmM4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTU3ICswLDAgQEAKLUZyb20gNWJiYmMyYTA4YTNiNDI4M2VjMDRhZjBlNzdlMjVmYjIwNWFhOGI4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgotRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMDo1MDoxNCAtMDcwMAotU3ViamVjdDogW1BBVENIIDAzLzEyXSBkb24ndCBmYWlsIGlmIEdMT0JfQlJBQ0UgYW5kIEdMT0JfQUxURElSRlVOQyBpcyBub3QKLSBkZWZpbmVkCi0KLUlmIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGRvZXNuJ3QgcHJvdmlkZSBicmFjZQotZXhwYW5zaW9uIHVzZXJzIGp1c3Qgd29uJ3QgZ2V0IGl0LgotCi1Eb250IHVzZSBHTlUgR0xPQiBleHRlbnRpb25zIG9uIG5vbi1nbGliYyBzeXN0ZW1zCi0KLUNvbmRpdGlvbmFsaXplIHVzZSBvZiBHTE9CX0FMVERJUkZVTkMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBzcmMvYmFzaWMvZ2xvYi11dGlsLmMgICAgIHwgMjAgKysrKysrKysrKysrKysrKystLS0KLSBzcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jIHwgMTcgKysrKysrKysrKysrKysrLS0KLSBzcmMvdG1wZmlsZXMvdG1wZmlsZXMuYyAgIHwgIDggKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvZ2xvYi11dGlsLmMgYi9zcmMvYmFzaWMvZ2xvYi11dGlsLmMKLWluZGV4IGY2MTFjNDJlNC4uYWQ2ZTJiZThkIDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL2dsb2ItdXRpbC5jCi0rKysgYi9zcmMvYmFzaWMvZ2xvYi11dGlsLmMKLUBAIC0yNywxMyArMjcsMTggQEAKLSAjaW5jbHVkZSAibWFjcm8uaCIKLSAjaW5jbHVkZSAicGF0aC11dGlsLmgiCi0gI2luY2x1ZGUgInN0cnYuaCIKLSsvKiBEb24ndCBmYWlsIGlmIHRoZSBzdGFuZGFyZCBsaWJyYXJ5Ci0rICogZG9lc24ndCBwcm92aWRlIGJyYWNlIGV4cGFuc2lvbiAqLwotKyNpZm5kZWYgR0xPQl9CUkFDRQotKyNkZWZpbmUgR0xPQl9CUkFDRSAwCi0rI2VuZGlmCi0gCi0gaW50IHNhZmVfZ2xvYihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIGdsb2JfdCAqcGdsb2IpIHsKLSAgICAgICAgIGludCBrOwotIAotKyNpZmRlZiBHTE9CX0FMVERJUkZVTkMKLSAgICAgICAgIC8qIFdlIHdhbnQgdG8gc2V0IEdMT0JfQUxURElSRlVOQyBvdXJzZWx2ZXMsIGRvbid0IGFsbG93IGl0IHRvIGJlIHNldC4gKi8KLSAgICAgICAgIGFzc2VydCghKGZsYWdzICYgR0xPQl9BTFRESVJGVU5DKSk7Ci0tCi0gICAgICAgICBpZiAoIXBnbG9iLT5nbF9jbG9zZWRpcikKLSAgICAgICAgICAgICAgICAgcGdsb2ItPmdsX2Nsb3NlZGlyID0gKHZvaWQgKCopKHZvaWQgKikpIGNsb3NlZGlyOwotICAgICAgICAgaWYgKCFwZ2xvYi0+Z2xfcmVhZGRpcikKLUBAIC00NCwxMCArNDksMTMgQEAgaW50IHNhZmVfZ2xvYihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIGdsb2JfdCAqcGdsb2IpIHsKLSAgICAgICAgICAgICAgICAgcGdsb2ItPmdsX2xzdGF0ID0gbHN0YXQ7Ci0gICAgICAgICBpZiAoIXBnbG9iLT5nbF9zdGF0KQotICAgICAgICAgICAgICAgICBwZ2xvYi0+Z2xfc3RhdCA9IHN0YXQ7Ci0tCi0rI2VuZGlmCi0gICAgICAgICBlcnJubyA9IDA7Ci0rI2lmZGVmIEdMT0JfQUxURElSRlVOQwotICAgICAgICAgayA9IGdsb2IocGF0aCwgZmxhZ3MgfCBHTE9CX0FMVERJUkZVTkMsIE5VTEwsIHBnbG9iKTsKLS0KLSsjZWxzZQotKyAgICAgICAgayA9IGdsb2IocGF0aCwgZmxhZ3MsIE5VTEwsIHBnbG9iKTsKLSsjZW5kaWYKLSAgICAgICAgIGlmIChrID09IEdMT0JfTk9NQVRDSCkKLSAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9FTlQ7Ci0gICAgICAgICBpZiAoayA9PSBHTE9CX05PU1BBQ0UpCi1AQCAtNjAsNiArNjgsMTIgQEAgaW50IHNhZmVfZ2xvYihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIGdsb2JfdCAqcGdsb2IpIHsKLSAgICAgICAgIHJldHVybiAwOwotIH0KLSAKLSsvKiBEb24ndCBmYWlsIGlmIHRoZSBzdGFuZGFyZCBsaWJyYXJ5Ci0rICogZG9lc24ndCBwcm92aWRlIGJyYWNlIGV4cGFuc2lvbiAqLwotKyNpZm5kZWYgR0xPQl9CUkFDRQotKyNkZWZpbmUgR0xPQl9CUkFDRSAwCi0rI2VuZGlmCi0rCi0gaW50IGdsb2JfZXhpc3RzKGNvbnN0IGNoYXIgKnBhdGgpIHsKLSAgICAgICAgIF9jbGVhbnVwX2dsb2JmcmVlXyBnbG9iX3QgZyA9IHt9OwotICAgICAgICAgaW50IGs7Ci1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYyBiL3NyYy90ZXN0L3Rlc3QtZ2xvYi11dGlsLmMKLWluZGV4IGFmODY2ZTAwNC4uM2FmYTA5YWRhIDEwMDY0NAotLS0tIGEvc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYwotKysrIGIvc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYwotQEAgLTI5LDYgKzI5LDExIEBACi0gI2luY2x1ZGUgImdsb2ItdXRpbC5oIgotICNpbmNsdWRlICJtYWNyby5oIgotICNpbmNsdWRlICJybS1yZi5oIgotKy8qIERvbid0IGZhaWwgaWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkKLSsgKiBkb2Vzbid0IHByb3ZpZGUgYnJhY2UgZXhwYW5zaW9uICovCi0rI2lmbmRlZiBHTE9CX0JSQUNFCi0rI2RlZmluZSBHTE9CX0JSQUNFIDAKLSsjZW5kaWYKLSAKLSBzdGF0aWMgdm9pZCB0ZXN0X2dsb2JfZXhpc3RzKHZvaWQpIHsKLSAgICAgICAgIGNoYXIgbmFtZVtdID0gIi90bXAvdGVzdC1nbG9iX2V4aXN0cy5YWFhYWFgiOwotQEAgLTUxLDI1ICs1NiwzMyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2dsb2JfZXhpc3RzKHZvaWQpIHsKLSBzdGF0aWMgdm9pZCB0ZXN0X2dsb2Jfbm9fZG90KHZvaWQpIHsKLSAgICAgICAgIGNoYXIgdGVtcGxhdGVbXSA9ICIvdG1wL3Rlc3QtZ2xvYi11dGlsLlhYWFhYWFgiOwotICAgICAgICAgY29uc3QgY2hhciAqZm47Ci0tCi0gICAgICAgICBfY2xlYW51cF9nbG9iZnJlZV8gZ2xvYl90IGcgPSB7Ci0rI2lmZGVmIEdMT0JfQUxURElSRlVOQwotICAgICAgICAgICAgICAgICAuZ2xfY2xvc2VkaXIgPSAodm9pZCAoKikodm9pZCAqKSkgY2xvc2VkaXIsCi0gICAgICAgICAgICAgICAgIC5nbF9yZWFkZGlyID0gKHN0cnVjdCBkaXJlbnQgKigqKSh2b2lkICopKSByZWFkZGlyX25vX2RvdCwKLSAgICAgICAgICAgICAgICAgLmdsX29wZW5kaXIgPSAodm9pZCAqKCopKGNvbnN0IGNoYXIgKikpIG9wZW5kaXIsCi0gICAgICAgICAgICAgICAgIC5nbF9sc3RhdCA9IGxzdGF0LAotICAgICAgICAgICAgICAgICAuZ2xfc3RhdCA9IHN0YXQsCi0rI2VuZGlmCi0gICAgICAgICB9OwotLQotICAgICAgICAgaW50IHI7Ci0gCi0gICAgICAgICBhc3NlcnRfc2UobWtkdGVtcCh0ZW1wbGF0ZSkpOwotIAotICAgICAgICAgZm4gPSBzdHJqb2luYSh0ZW1wbGF0ZSwgIi8qIik7Ci0rI2lmZGVmIEdMT0JfQUxURElSRlVOQwotICAgICAgICAgciA9IGdsb2IoZm4sIEdMT0JfTk9TT1JUfEdMT0JfQlJBQ0V8R0xPQl9BTFRESVJGVU5DLCBOVUxMLCAmZyk7Ci0rI2Vsc2UKLSsgICAgICAgIHIgPSBnbG9iKGZuLCBHTE9CX05PU09SVHxHTE9CX0JSQUNFLCBOVUxMLCAmZyk7Ci0rI2VuZGlmCi0gICAgICAgICBhc3NlcnRfc2UociA9PSBHTE9CX05PTUFUQ0gpOwotIAotICAgICAgICAgZm4gPSBzdHJqb2luYSh0ZW1wbGF0ZSwgIi8uKiIpOwotKyNpZmRlZiBHTE9CX0FMVERJUkZVTkMKLSAgICAgICAgIHIgPSBnbG9iKGZuLCBHTE9CX05PU09SVHxHTE9CX0JSQUNFfEdMT0JfQUxURElSRlVOQywgTlVMTCwgJmcpOwotKyNlbHNlCi0rICAgICAgICByID0gZ2xvYihmbiwgR0xPQl9OT1NPUlR8R0xPQl9CUkFDRSwgTlVMTCwgJmcpOwotKyNlbmRpZgotICAgICAgICAgYXNzZXJ0X3NlKHIgPT0gR0xPQl9OT01BVENIKTsKLSAKLSAgICAgICAgICh2b2lkKSBybV9yZih0ZW1wbGF0ZSwgUkVNT1ZFX1JPT1R8UkVNT1ZFX1BIWVNJQ0FMKTsKLWRpZmYgLS1naXQgYS9zcmMvdG1wZmlsZXMvdG1wZmlsZXMuYyBiL3NyYy90bXBmaWxlcy90bXBmaWxlcy5jCi1pbmRleCA5NDE5Yzk5ZTIuLjA3MDI3YTc2NSAxMDA2NDQKLS0tLSBhL3NyYy90bXBmaWxlcy90bXBmaWxlcy5jCi0rKysgYi9zcmMvdG1wZmlsZXMvdG1wZmlsZXMuYwotQEAgLTcxLDYgKzcxLDEyIEBACi0gI2luY2x1ZGUgInVtYXNrLXV0aWwuaCIKLSAjaW5jbHVkZSAidXNlci11dGlsLmgiCi0gI2luY2x1ZGUgInV0aWwuaCIKLSsvKiBEb24ndCBmYWlsIGlmIHRoZSBzdGFuZGFyZCBsaWJyYXJ5Ci0rICogZG9lc24ndCBwcm92aWRlIGJyYWNlIGV4cGFuc2lvbiAqLwotKyNpZm5kZWYgR0xPQl9CUkFDRQotKyNkZWZpbmUgR0xPQl9CUkFDRSAwCi0rI2VuZGlmCi0rCi0gCi0gLyogVGhpcyByZWFkcyBhbGwgZmlsZXMgbGlzdGVkIGluIC9ldGMvdG1wZmlsZXMuZC8/Ki5jb25mIGFuZCBjcmVhdGVzCi0gICogdGhlbSBpbiB0aGUgZmlsZSBzeXN0ZW0uIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB0byBjcmVhdGUKLUBAIC0xMDkyLDcgKzEwOTgsOSBAQCBzdGF0aWMgaW50IGl0ZW1fZG9fY2hpbGRyZW4oSXRlbSAqaSwgY29uc3QgY2hhciAqcGF0aCwgYWN0aW9uX3QgYWN0aW9uKSB7Ci0gCi0gc3RhdGljIGludCBnbG9iX2l0ZW0oSXRlbSAqaSwgYWN0aW9uX3QgYWN0aW9uLCBib29sIHJlY3Vyc2l2ZSkgewotICAgICAgICAgX2NsZWFudXBfZ2xvYmZyZWVfIGdsb2JfdCBnID0gewotKyNpZmRlZiBHTE9CX0FMVERJUkZVTkMKLSAgICAgICAgICAgICAgICAgLmdsX29wZW5kaXIgPSAodm9pZCAqKCopKGNvbnN0IGNoYXIgKikpIG9wZW5kaXJfbm9tb2QsCi0rI2VuZGlmCi0gICAgICAgICB9OwotICAgICAgICAgaW50IHIgPSAwLCBrOwotICAgICAgICAgY2hhciAqKmZuOwotLS0gCi0yLjE0LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGYxYjIxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2gKQEAgLTAsMCArMSw2NCBAQAorRnJvbSA4YjlkMTk0ZTk1Njg0OGUwZDFmYjM1ZWYyZmJhNzE0YjI2OTFlYmU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyOCBGZWIgMjAxOCAyMDo0Nzo0OSAtMDgwMAorU3ViamVjdDogW1BBVENIIDAzLzMxXSB1c2UgbG5yIHdyYXBwZXIgaW5zdGVhZCBvZiBsb29raW5nIGZvciAtLXJlbGF0aXZlCisgb3B0aW9uIGZvciBsbgorCitSZW1vdmUgZmlsZSBtYW51YWxseSB0byBhdm9pZCB0aGUgJ0ZpbGUgRXhpc3RzJyBlcnJvciB3aGVuIGNyZWF0aW5nCitzeW1saW5rLiBUaGlzIGlzIGJlY2F1c2UgdGhlIG9yaWdpbmFsICdsbicgY29tbWFuZCB1c2VzICctZicgb3B0aW9uLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgIHwgNCAtLS0tCisgdG9vbHMvbWVzb24tbWFrZS1zeW1saW5rLnNoIHwgMyArKy0KKyB1bml0cy9tZXNvbi1hZGQtd2FudHMuc2ggICAgfCA3ICsrKysrKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKK2luZGV4IDM2YTYyZDI4MC4uNzM0N2VhODgwIDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtNTcwLDEwICs1NzAsNiBAQCBlbmRmb3JlYWNoCisgCisgY29uZi5zZXRfcXVvdGVkKCdURUxJTklUJywgZ2V0X29wdGlvbigndGVsaW5pdC1wYXRoJykpCisgCistaWYgcnVuX2NvbW1hbmQoJ2xuJywgJy0tcmVsYXRpdmUnLCAnLS1oZWxwJykucmV0dXJuY29kZSgpICE9IDAKKy0gICAgICAgIGVycm9yKCdsbiBkb2VzIG5vdCBzdXBwb3J0IC0tcmVsYXRpdmUnKQorLWVuZGlmCistCisgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgCisgZ3BlcmYgPSBmaW5kX3Byb2dyYW0oJ2dwZXJmJykKK2RpZmYgLS1naXQgYS90b29scy9tZXNvbi1tYWtlLXN5bWxpbmsuc2ggYi90b29scy9tZXNvbi1tYWtlLXN5bWxpbmsuc2gKK2luZGV4IDUwMWNkNDNkNC4uZjRlNGFjOWFjIDEwMDc1NQorLS0tIGEvdG9vbHMvbWVzb24tbWFrZS1zeW1saW5rLnNoCisrKysgYi90b29scy9tZXNvbi1tYWtlLXN5bWxpbmsuc2gKK0BAIC04LDUgKzgsNiBAQCBta2RpciAtdnAgIiQoZGlybmFtZSAiJHtERVNURElSOi19JDIiKSIKKyBpZiBbICIkKGRpcm5hbWUgJDEpIiA9IC4gXTsgdGhlbgorICAgICAgICAgbG4gLXZmcyAtVCAiJDEiICIke0RFU1RESVI6LX0kMiIKKyBlbHNlCistICAgICAgICBsbiAtdmZzIC1UIC0tcmVsYXRpdmUgIiR7REVTVERJUjotfSQxIiAiJHtERVNURElSOi19JDIiCisrICAgICAgICBybSAtZiAiJHtERVNURElSOi19JDIiCisrICAgICAgICBsbnIgIiR7REVTVERJUjotfSQxIiAiJHtERVNURElSOi19JDIiCisgZmkKK2RpZmYgLS1naXQgYS91bml0cy9tZXNvbi1hZGQtd2FudHMuc2ggYi91bml0cy9tZXNvbi1hZGQtd2FudHMuc2gKK2luZGV4IDcwZjcxNzJhZS4uYTQyNjY2YWFjIDEwMDc1NQorLS0tIGEvdW5pdHMvbWVzb24tYWRkLXdhbnRzLnNoCisrKysgYi91bml0cy9tZXNvbi1hZGQtd2FudHMuc2gKK0BAIC0yNSw0ICsyNSw5IEBAIGNhc2UgIiR0YXJnZXQiIGluCisgICAgICAgICAgICAgICAgIDs7CisgZXNhYworIAorLWxuIC12ZnMgLS1yZWxhdGl2ZSAiJHVuaXRwYXRoIiAiJGRpciIKKytpZiBbIC1kICIkZGlyIiBdOyB0aGVuCisrICAgICAgICBybSAtZiAiJGRpci8kdW5pdCIKKysgICAgICAgIGxuciAiJHVuaXRwYXRoIiAiJGRpci8kdW5pdCIKKytlbHNlCisrICAgICAgICBsbnIgIiR1bml0cGF0aCIgIiRkaXIiCisrZmkKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1Vc2UtZ2V0ZW52LXdoZW4tc2VjdXJlLXZlcnNpb25zLWFyZS1ub3QtYXZhaWxhYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LVVzZS1nZXRlbnYtd2hlbi1zZWN1cmUtdmVyc2lvbnMtYXJlLW5vdC1hdmFpbGFibGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiMmNiZTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LVVzZS1nZXRlbnYtd2hlbi1zZWN1cmUtdmVyc2lvbnMtYXJlLW5vdC1hdmFpbGFibGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIDU3NjVjZGE0ZjcyNDNlMjQwYjFlODcyM2RjNTM2ZmIyMDUwM2Q1NDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCA5IE5vdiAyMDE2IDE5OjI4OjMyIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvMTldIFVzZSBnZXRlbnYgd2hlbiBzZWN1cmUgdmVyc2lvbnMgYXJlIG5vdCBhdmFpbGFibGUKLQotbXVzbCBkb2VzbnQgaW1wbGVtZW50IHNlY3VyZSB2ZXJzaW9uLCBzbyB3ZSBkZWZhdWx0Ci10byBpdCBpZiBjb25maWd1cmUgZG9lcyBub3QgZGV0ZWN0IGEgc2VjdXJlIGltZXBsZW1lbnRhdGlvbgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQKLS0tLQotIHNyYy9iYXNpYy9taXNzaW5nLmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZy5oIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAotaW5kZXggNGEzZmQ5Yy4uNDkzNjg3MyAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9taXNzaW5nLmgKLSsrKyBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLUBAIC01MjksNyArNTI5LDcgQEAgc3RydWN0IGJ0cmZzX2lvY3RsX3F1b3RhX2N0bF9hcmdzIHsKLSAjICBpZmRlZiBIQVZFX19fU0VDVVJFX0dFVEVOVgotICMgICAgZGVmaW5lIHNlY3VyZV9nZXRlbnYgX19zZWN1cmVfZ2V0ZW52Ci0gIyAgZWxzZQotLSMgICAgZXJyb3IgIm5laXRoZXIgc2VjdXJlX2dldGVudiBub3IgX19zZWN1cmVfZ2V0ZW52IGFyZSBhdmFpbGFibGUiCi0rIyAgICBkZWZpbmUgc2VjdXJlX2dldGVudiBnZXRlbnYKLSAjICBlbmRpZgotICNlbmRpZgotIAotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LWltcGxtZW50LXN5c3RlbWQtc3lzdi1pbnN0YWxsLWZvci1PRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1pbXBsbWVudC1zeXN0ZW1kLXN5c3YtaW5zdGFsbC1mb3ItT0UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNmZGI1MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1pbXBsbWVudC1zeXN0ZW1kLXN5c3YtaW5zdGFsbC1mb3ItT0UucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSA3MGQ0NTZmYjIxZGUyYTgwNjk3ZmEzNjRmMDg0NzUzMzlkNjM5NmMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgNSBTZXAgMjAxNSAwNjozMTo0NyArMDAwMAorU3ViamVjdDogW1BBVENIIDA0LzMxXSBpbXBsbWVudCBzeXN0ZW1kLXN5c3YtaW5zdGFsbCBmb3IgT0UKKworVXNlIHVwZGF0ZS1yYy5kIGZvciBlbmFibGluZy9kaXNhYmxpbmcgYW5kIHN0YXR1cyBjb21tYW5kCit0byBjaGVjayB0aGUgc3RhdHVzIG9mIHRoZSBzeXN2IHNlcnZpY2UKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04gfCA2ICsrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OIGIvc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTgoraW5kZXggYTUzYTNlNjIyLi41ZDg3N2IwNmUgMTAwNzU1CistLS0gYS9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OCisrKysgYi9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OCitAQCAtMzAsMTcgKzMwLDE3IEBAIGNhc2UgIiQxIiBpbgorICAgICBlbmFibGUpCisgICAgICAgICAjIGNhbGwgdGhlIGNvbW1hbmQgdG8gZW5hYmxlIFN5c1YgaW5pdCBzY3JpcHQgJE5BTUUgaGVyZQorICAgICAgICAgIyAoY29uc2lkZXIgb3B0aW9uYWwgJFJPT1QpCistICAgICAgICBlY2hvICJJTVBMRU1FTlQgTUU6IGVuYWJsaW5nIFN5c1YgaW5pdC5kIHNjcmlwdCAkTkFNRSIKKysgICAgICAgIHVwZGF0ZS1yYy5kIC1mICROQU1FIGRlZmF1bHRzCisgICAgICAgICA7OworICAgICBkaXNhYmxlKQorICAgICAgICAgIyBjYWxsIHRoZSBjb21tYW5kIHRvIGRpc2FibGUgU3lzViBpbml0IHNjcmlwdCAkTkFNRSBoZXJlCisgICAgICAgICAjIChjb25zaWRlciBvcHRpb25hbCAkUk9PVCkKKy0gICAgICAgIGVjaG8gIklNUExFTUVOVCBNRTogZGlzYWJsaW5nIFN5c1YgaW5pdC5kIHNjcmlwdCAkTkFNRSIKKysgICAgICAgIHVwZGF0ZS1yYy5kIC1mICROQU1FIHJlbW92ZQorICAgICAgICAgOzsKKyAgICAgaXMtZW5hYmxlZCkKKyAgICAgICAgICMgZXhpdCB3aXRoIDAgaWYgJE5BTUUgaXMgZW5hYmxlZCwgbm9uLXplcm8gaWYgaXQgaXMgZGlzYWJsZWQKKyAgICAgICAgICMgKGNvbnNpZGVyIG9wdGlvbmFsICRST09UKQorLSAgICAgICAgZWNobyAiSU1QTEVNRU5UIE1FOiBjaGVja2luZyBTeXNWIGluaXQuZCBzY3JpcHQgJE5BTUUiCisrICAgICAgICAvZXRjL2luaXQuZC8kTkFNRSBzdGF0dXMKKyAgICAgICAgIDs7CisgICAgICopCisgICAgICAgICB1c2FnZSA7OworLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3NpbmctX19jb21wYXJfZm5fdC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1fX2NvbXBhcl9mbl90LS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2I1YWU5OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1fX2NvbXBhcl9mbl90LS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gYzg1MGI2NTRlNzE2NzdlMGQ2MjkyZjEzNDUyMDdiOWI1YWNmZmMzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgotRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMTozMTowMyAtMDcwMAotU3ViamVjdDogW1BBVENIIDA0LzEyXSBzcmMvYmFzaWMvbWlzc2luZy5oOiBjaGVjayBmb3IgbWlzc2luZyBfX2NvbXBhcl9mbl90Ci0gdHlwZWRlZgotCi1pbmNsdWRlIG1pc3NpbmcuaCBmb3IgbWlzc2luZyBfX2NvbXBhcl9mbl90Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gc3JjL2Jhc2ljL21pc3NpbmcuaCB8IDUgKysrKysKLSBzcmMvYmFzaWMvc3RyYnVmLmMgIHwgMSArCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nLmggYi9zcmMvYmFzaWMvbWlzc2luZy5oCi1pbmRleCA4MDA5ODg4YWQuLjY3MWYzNDFjNiAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9taXNzaW5nLmgKLSsrKyBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLUBAIC0xMDYzLDYgKzEwNjMsMTEgQEAgc3RydWN0IGlucHV0X21hc2sgewotICNkZWZpbmUgUkVOQU1FX05PUkVQTEFDRSAoMSA8PCAwKQotICNlbmRpZgotIAotKyNpZm5kZWYgX19DT01QQVJfRk5fVAotKyNkZWZpbmUgX19DT01QQVJfRk5fVAotK3R5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopOwotKyNlbmRpZgotKwotICNpZm5kZWYgS0NNUF9GSUxFCi0gI2RlZmluZSBLQ01QX0ZJTEUgMAotICNlbmRpZgotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9zdHJidWYuYyBiL3NyYy9iYXNpYy9zdHJidWYuYwotaW5kZXggMDBhYWY5ZTYyLi45ZGM0YTU4NGEgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvc3RyYnVmLmMKLSsrKyBiL3NyYy9iYXNpYy9zdHJidWYuYwotQEAgLTIzLDYgKzIzLDcgQEAKLSAKLSAjaW5jbHVkZSAiYWxsb2MtdXRpbC5oIgotICNpbmNsdWRlICJzdHJidWYuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgotIAotIC8qCi0gICogU3RyYnVmIHN0b3JlcyBnaXZlbiBzdHJpbmdzIGluIGEgc2luZ2xlIGNvbnRpbnVvdXMgYWxsb2NhdGVkIG1lbW9yeQotLS0gCi0yLjE0LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA1LWJpbmZtdC1Eb24tdC1pbnN0YWxsLWRlcGVuZGVuY3ktbGlua3MtYXQtaW5zdGFsbC10aW0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDUtYmluZm10LURvbi10LWluc3RhbGwtZGVwZW5kZW5jeS1saW5rcy1hdC1pbnN0YWxsLXRpbS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzAxNmU5OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDUtYmluZm10LURvbi10LWluc3RhbGwtZGVwZW5kZW5jeS1saW5rcy1hdC1pbnN0YWxsLXRpbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLUZyb20gNzQ0NTBmMGRiYWQyZjg0NzhjMjZlZWFhNDZkNGU0YTk4Nzg1OGY0NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIwIEZlYiAyMDE1IDA1OjAzOjQ0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvMTldIGJpbmZtdDogRG9uJ3QgaW5zdGFsbCBkZXBlbmRlbmN5IGxpbmtzIGF0IGluc3RhbGwgdGltZQotIGZvciB0aGUgYmluZm10IHNlcnZpY2VzCi0KLXVzZSBbSW5zdGFsbF0gYmxvY2tzIHNvIHRoYXQgdGhleSBnZXQgY3JlYXRlZCB3aGVuIHRoZSBzZXJ2aWNlIGlzIGVuYWJsZWQKLWxpa2UgYSB0cmFkaXRpb25hbCBzZXJ2aWNlLgotCi1UaGUgW0luc3RhbGxdIGJsb2NrcyB3ZXJlIHJlamVjdGVkIHVwc3RyZWFtIGFzIHRoZXkgZG9uJ3QgaGF2ZSBhIHdheSB0bwotImVuYWJsZSIKLWl0IG9uIGluc3RhbGwgd2l0aG91dCBzdGF0aWMgc3ltbGlua3Mgd2hpY2ggY2FuJ3QgYmUgZGlzYWJsZWQsIG9ubHkKLW1hc2tlZC4gIFdlCi1ob3dldmVyIGNhbiBkbyB0aGF0IGluIGEgcG9zdGluc3QuCi0KLVVwc3RyZWFtLVN0YXR1czogRGVuaWVkCi0KLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCAtLS0tCi0gdW5pdHMvcHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50IHwgMyArKysKLSB1bml0cy9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlLmluICAgICAgICAgfCA1ICsrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCA1MGRhNDU4Li4yOWVkMWRkIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtNDYzNSwxMCArNDYzNSw2IEBAIElOU1RBTExfRElSUyArPSBcCi0gCSQocHJlZml4KS9saWIvYmluZm10LmQgXAotIAkkKHN5c2NvbmZkaXIpL2JpbmZtdC5kCi0gCi0tU1lTSU5JVF9UQVJHRVRfV0FOVFMgKz0gXAotLQlzeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlIFwKLS0JcHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50Ci0tCi0gZW5kaWYKLSAKLSBFWFRSQV9ESVNUICs9IFwKLWRpZmYgLS1naXQgYS91bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQgYi91bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKLWluZGV4IDZiZTM4OTMuLjcwOWFkZWYgMTAwNjQ0Ci0tLS0gYS91bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKLSsrKyBiL3VuaXRzL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudAotQEAgLTE2LDMgKzE2LDYgQEAgQ29uZGl0aW9uUGF0aElzUmVhZFdyaXRlPS9wcm9jL3N5cy8KLSAKLSBbQXV0b21vdW50XQotIFdoZXJlPS9wcm9jL3N5cy9mcy9iaW5mbXRfbWlzYwotKwotK1tJbnN0YWxsXQotK1dhbnRlZEJ5PXN5c2luaXQudGFyZ2V0Ci1kaWZmIC0tZ2l0IGEvdW5pdHMvc3lzdGVtZC1iaW5mbXQuc2VydmljZS5pbiBiL3VuaXRzL3N5c3RlbWQtYmluZm10LnNlcnZpY2UuaW4KLWluZGV4IGQ1MzA3M2UuLjhjNTdlZTAgMTAwNjQ0Ci0tLS0gYS91bml0cy9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlLmluCi0rKysgYi91bml0cy9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlLmluCi1AQCAtMTEsNiArMTEsOCBAQCBEb2N1bWVudGF0aW9uPW1hbjpzeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlKDgpIG1hbjpiaW5mbXQuZCg1KQotIERvY3VtZW50YXRpb249aHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvRG9jdW1lbnRhdGlvbi9iaW5mbXRfbWlzYy50eHQKLSBEZWZhdWx0RGVwZW5kZW5jaWVzPW5vCi0gQ29uZmxpY3RzPXNodXRkb3duLnRhcmdldAotK1dhbnRzPXByb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudAotKwotIEFmdGVyPXByb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudAotIEJlZm9yZT1zeXNpbml0LnRhcmdldCBzaHV0ZG93bi50YXJnZXQKLSBDb25kaXRpb25QYXRoSXNSZWFkV3JpdGU9L3Byb2Mvc3lzLwotQEAgLTI1LDMgKzI3LDYgQEAgVHlwZT1vbmVzaG90Ci0gUmVtYWluQWZ0ZXJFeGl0PXllcwotIEV4ZWNTdGFydD1Acm9vdGxpYmV4ZWNkaXJAL3N5c3RlbWQtYmluZm10Ci0gVGltZW91dFNlYz05MHMKLSsKLStbSW5zdGFsbF0KLStXYW50ZWRCeT1zeXNpbml0LnRhcmdldAotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA1LXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA1LXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0NDIxYzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDUtcnVsZXMtd2hpdGVsaXN0LWhkLWRldmljZXMucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA3YjViMzQ5OTMwMDJiNDQxOGJhOGEzYzJhZTY2MWE3MzM3ZmQ4ZWQwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgOSBOb3YgMjAxNiAxOTo0MToxMyAtMDgwMAorU3ViamVjdDogW1BBVENIIDA1LzMxXSBydWxlczogd2hpdGVsaXN0IGhkKiBkZXZpY2VzCisKK3FlbXUgYnkgZGVmYXVsdCBlbXVsYXRlcyBJREUgYW5kIHRoZSBsaW51eC15b2N0byBrZXJuZWwocykgdXNlCitDT05GSUdfSURFIGluc3RlYWQgb2YgdGhlIG1vcmUgbW9kZXJuIGxpYnNhdGEsIHNvIGRpc2tzIGFwcGVhciBhcworL2Rldi9oZCouIFBhdGNoIHJlamVjdGVkIHVwc3RyZWFtIGJlY2F1c2UgQ09ORklHX0lERSBpcyBkZXByZWNhdGVkLgorCitVcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9wdWxsLzEyNzZdCisKK1NpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMgYi9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMKK2luZGV4IDBkZThjZjNhMS4uZDNmNThmMTUzIDEwMDY0NAorLS0tIGEvcnVsZXMvNjAtcGVyc2lzdGVudC1zdG9yYWdlLnJ1bGVzCisrKysgYi9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMKK0BAIC03LDcgKzcsNyBAQCBBQ1RJT049PSJyZW1vdmUiLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgorIEVOVntVREVWX0RJU0FCTEVfUEVSU0lTVEVOVF9TVE9SQUdFX1JVTEVTX0ZMQUd9PT0iMSIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCisgCisgU1VCU1lTVEVNIT0iYmxvY2siLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgorLUtFUk5FTCE9Imxvb3AqfG1tY2JsaypbMC05XXxtc2JsaypbMC05XXxtc3BibGsqWzAtOV18bnZtZSp8c2QqfHNyKnx2ZCp8eHZkKnxiY2FjaGUqfGNjaXNzKnxkYXNkKnx1YmQqfHNjbSp8cG1lbSp8bmJkKiIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCisrS0VSTkVMIT0ibG9vcCp8bW1jYmxrKlswLTldfG1zYmxrKlswLTldfG1zcGJsaypbMC05XXxudm1lKnxzZCp8c3IqfHZkKnx4dmQqfGJjYWNoZSp8Y2Npc3MqfGRhc2QqfHViZCp8c2NtKnxwbWVtKnxuYmQqfGhkKiIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCisgCisgIyBpZ25vcmUgcGFydGl0aW9ucyB0aGF0IHNwYW4gdGhlIGVudGlyZSBkaXNrCisgVEVTVD09Indob2xlX2Rpc2siLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgorLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LUluY2x1ZGUtbmV0aW5ldC1pZl9ldGhlci5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LUluY2x1ZGUtbmV0aW5ldC1pZl9ldGhlci5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTg4N2VlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNi1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLUZyb20gMjEwODBiNmE0MGQwYTRkZGQyZGI4ZjBmYTM3Njg2ZjZmYTg4NWQxYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIzIE9jdCAyMDE3IDExOjM4OjMzIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMDYvMTJdIEluY2x1ZGUgbmV0aW5ldC9pZl9ldGhlci5oCi0KLUZpeGVzCi0vbW50L2Evb2UvYnVpbGQvdG1wL3dvcmsvbWlwczMycjItYmVjLWxpbnV4LW11c2wvc3lzdGVtZC8xXzIzNC1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9uZXRpbmV0L2lmX2V0aGVyLmg6MTAxOjg6IGVycm9yOiByZWRlZmluaXRpb24gb2YgJ3N0cnVjdCBldGhoZHInCi0gc3RydWN0IGV0aGhkciB7Ci0gICAgICAgIF5+fn5+fgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHNyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jIHwgMSArCi0gc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jICAgICAgICAgICAgICAgfCAxICsKLSBzcmMvbmV0d29yay9uZXR3b3JrZC1icnZsYW4uYyAgICAgICAgICAgICB8IDEgKwotIHNyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuYyAgICAgICAgICAgICAgIHwgMiArLQotIHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jICAgIHwgMiArLQotIDUgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMgYi9zcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYwotaW5kZXggOTIzZjdkZDEwLi5iOTViMWU0YjIgMTAwNjQ0Ci0tLS0gYS9zcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYwotKysrIGIvc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMKLUBAIC0xOSw2ICsxOSw3IEBACi0gCi0gI2luY2x1ZGUgPHN0ZGludC5oPgotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0rI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KLSAjaW5jbHVkZSA8bGludXgvbmV0bGluay5oPgotICNpbmNsdWRlIDxsaW51eC9ydG5ldGxpbmsuaD4KLSAjaW5jbHVkZSA8bGludXgvY2FuL25ldGxpbmsuaD4KLWRpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXRkZXYvdHVudGFwLmMgYi9zcmMvbmV0d29yay9uZXRkZXYvdHVudGFwLmMKLWluZGV4IDNkNjI4MDg4NC4uNDBlNThjMzhmIDEwMDY0NAotLS0tIGEvc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jCi0rKysgYi9zcmMvbmV0d29yay9uZXRkZXYvdHVudGFwLmMKLUBAIC0xOCw2ICsxOCw3IEBACi0gKioqLwotIAotICNpbmNsdWRlIDxmY250bC5oPgotKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2lmX3R1bi5oPgotICNpbmNsdWRlIDxuZXQvaWYuaD4KLSAjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgotZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMKLWluZGV4IGZhNWQzZWU3Zi4uZTA4Mjg5NjJhIDEwMDY0NAotLS0tIGEvc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMKLSsrKyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jCi1AQCAtMTgsNiArMTgsNyBAQAotICoqKi8KLSAKLSAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2lmX2JyaWRnZS5oPgotICNpbmNsdWRlIDxzdGRib29sLmg+Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jIGIvc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jCi1pbmRleCAyMDFmYzIzNDMuLjVmN2NjMmEwYSAxMDA2NDQKLS0tLSBhL3NyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuYwotKysrIGIvc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jCi1AQCAtMTYsNyArMTYsNyBAQAotICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSAqKiovCi0tCi0rI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KLSAjaW5jbHVkZSA8bmV0L2lmLmg+Ci0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotICNpbmNsdWRlIDxsaW51eC9ldGh0b29sLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tbmV0X3NldHVwX2xpbmsuYwotaW5kZXggOGU0Nzc3NTEzLi5kMDFmZmYyYTQgMTAwNjQ0Ci0tLS0gYS9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tbmV0X3NldHVwX2xpbmsuYwotKysrIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMKLUBAIC0xNiw3ICsxNiw3IEBACi0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotICoqKi8KLS0KLSsjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgotICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCi0gI2luY2x1ZGUgImxpbmstY29uZmlnLmgiCi0gI2luY2x1ZGUgImxvZy5oIgotLS0gCi0yLjE0LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LU1ha2Utcm9vdC1zLWhvbWUtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNi1NYWtlLXJvb3Qtcy1ob21lLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJhOTY2MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNi1NYWtlLXJvb3Qtcy1ob21lLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2gKQEAgLTAsMCArMSw3OCBAQAorRnJvbSA5ZDYzMjI3NDIwZjBjNGYwOTNjMWMyMDY2ZWFmZTJiNjE1MjA3MGNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAyMyBGZWIgMjAxOCAxMzo0NzozNyArMDgwMAorU3ViamVjdDogW1BBVENIIDA2LzMxXSBNYWtlIHJvb3QncyBob21lIGRpcmVjdG9yeSBjb25maWd1cmFibGUKKworT3BlbkVtYmVkZGVkIGhhcyBhIGNvbmZpZ3VyYWJsZSBob21lIGRpcmVjdG9yeSBmb3Igcm9vdC4gQWxsb3cKK3N5c3RlbWQgdG8gYmUgYnVpbHQgdXNpbmcgaXRzIGlkZWEgb2Ygd2hhdCByb290J3MgaG9tZSBkaXJlY3RvcnkKK3Nob3VsZCBiZS4KKworVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQKK1Vwc3RyZWFtIHdhbnRzIHRvIGhhdmUgYSB1bmlmaWVkIGhpZXJhcmNoeSB3aGVyZSBldmVyeW9uZSBpcwordXNpbmcgdGhlIHNhbWUgcm9vdCBmb2xkZXIuCitodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL2lzc3Vlcy81NDEKKworU2lnbmVkLW9mZi1ieTogRGFuIE1jR3JlZ29yIDxkYW4ubWNncmVnb3JAdXNhc2suY2E+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbWVzb24uYnVpbGQgICAgICAgfCA4ICsrKysrKysrCisgbWVzb25fb3B0aW9ucy50eHQgfCAyICsrCisgMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCA3MzQ3ZWE4ODAuLjkxODEwMWQ2YiAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTk0LDYgKzk0LDExIEBAIGlmIHJvb3RsaWJkaXIgPT0gJycKKyAgICAgICAgIHJvb3RsaWJkaXIgPSBqb2luX3BhdGhzKHJvb3RwcmVmaXhkaXIsIGxpYmRpci5zcGxpdCgnLycpWy0xXSkKKyBlbmRpZgorIAorK3Jvb3Rob21lZGlyID0gZ2V0X29wdGlvbigncm9vdGhvbWVkaXInKQorK2lmIHJvb3Rob21lZGlyID09ICcnCisrICAgICAgICByb290aG9tZWRpciA9ICcvcm9vdCcKKytlbmRpZgorKworICMgRGlycyBvZiBleHRlcm5hbCBwYWNrYWdlcworIHBrZ2NvbmZpZ2RhdGFkaXIgPSBqb2luX3BhdGhzKGRhdGFkaXIsICdwa2djb25maWcnKQorIHBrZ2NvbmZpZ2xpYmRpciA9IGpvaW5fcGF0aHMobGliZGlyLCAncGtnY29uZmlnJykKK0BAIC0yMDUsNiArMjEwLDcgQEAgY29uZi5zZXRfcXVvdGVkKCdVREVWTElCRVhFQ0RJUicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ZGV2bGliZXhlY2RpcikKKyBjb25mLnNldF9xdW90ZWQoJ1BPTEtJVF9BR0VOVF9CSU5BUllfUEFUSCcsICAgICAgICAgICAgICAgICAgIGpvaW5fcGF0aHMoYmluZGlyLCAncGt0dHlhZ2VudCcpKQorIGNvbmYuc2V0X3F1b3RlZCgnTElCRElSJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGliZGlyKQorIGNvbmYuc2V0X3F1b3RlZCgnUk9PVExJQkRJUicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdGxpYmRpcikKKytjb25mLnNldF9xdW90ZWQoJ1JPT1RIT01FRElSJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3Rob21lZGlyKQorIGNvbmYuc2V0X3F1b3RlZCgnUk9PVExJQkVYRUNESVInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdGxpYmV4ZWNkaXIpCisgY29uZi5zZXRfcXVvdGVkKCdCT09UTElCRElSJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib290bGliZGlyKQorIGNvbmYuc2V0X3F1b3RlZCgnU1lTVEVNRF9QVUxMX1BBVEgnLCAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbl9wYXRocyhyb290bGliZXhlY2RpciwgJ3N5c3RlbWQtcHVsbCcpKQorQEAgLTIyMSw2ICsyMjcsNyBAQCBzdWJzdHMuc2V0KCdwcmVmaXgnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeGRpcikKKyBzdWJzdHMuc2V0KCdleGVjX3ByZWZpeCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeGRpcikKKyBzdWJzdHMuc2V0KCdsaWJkaXInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYmRpcikKKyBzdWJzdHMuc2V0KCdyb290bGliZGlyJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RsaWJkaXIpCisrc3Vic3RzLnNldCgncm9vdGhvbWVkaXInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290aG9tZWRpcikKKyBzdWJzdHMuc2V0KCdpbmNsdWRlZGlyJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVkaXIpCisgc3Vic3RzLnNldCgncGtnc3lzY29uZmRpcicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2dzeXNjb25mZGlyKQorIHN1YnN0cy5zZXQoJ2JpbmRpcicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZGlyKQorQEAgLTI3MDUsNiArMjcxMiw3IEBAIHN0YXR1cyA9IFsKKyAgICAgICAgICdpbmNsdWRlIGRpcmVjdG9yeTogICAgICAgICAgICAgICAgIEAwQCcuZm9ybWF0KGluY2x1ZGVkaXIpLAorICAgICAgICAgJ2xpYiBkaXJlY3Rvcnk6ICAgICAgICAgICAgICAgICAgICAgQDBAJy5mb3JtYXQobGliZGlyKSwKKyAgICAgICAgICdyb290bGliIGRpcmVjdG9yeTogICAgICAgICAgICAgICAgIEAwQCcuZm9ybWF0KHJvb3RsaWJkaXIpLAorKyAgICAgICAgJ3Jvb3Rob21lIGRpcmVjdG9yeTogICAgICAgICAgICAgICAgQDBAJy5mb3JtYXQocm9vdGhvbWVkaXIpLAorICAgICAgICAgJ1N5c1YgaW5pdCBzY3JpcHRzOiAgICAgICAgICAgICAgICAgQDBAJy5mb3JtYXQoc3lzdmluaXRfcGF0aCksCisgICAgICAgICAnU3lzViByYz8uZCBkaXJlY3RvcmllczogICAgICAgICAgICBAMEAnLmZvcm1hdChzeXN2cmNuZF9wYXRoKSwKKyAgICAgICAgICdQQU0gbW9kdWxlcyBkaXJlY3Rvcnk6ICAgICAgICAgICAgIEAwQCcuZm9ybWF0KHBhbWxpYmRpciksCitkaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQgYi9tZXNvbl9vcHRpb25zLnR4dAoraW5kZXggMzk4MjJkNmNkLi4wYjI0ZjBlMGYgMTAwNjQ0CistLS0gYS9tZXNvbl9vcHRpb25zLnR4dAorKysrIGIvbWVzb25fb3B0aW9ucy50eHQKK0BAIC0yMiw2ICsyMiw4IEBAIG9wdGlvbigncm9vdGxpYmRpcicsIHR5cGUgOiAnc3RyaW5nJywKKyAgICAgICAgZGVzY3JpcHRpb24gOiAnJydbL3Vzcl0vbGliL3g4Nl82NC1saW51eC1nbnUgb3Igc3VjaCcnJykKKyBvcHRpb24oJ3Jvb3RwcmVmaXgnLCB0eXBlIDogJ3N0cmluZycsCisgICAgICAgIGRlc2NyaXB0aW9uIDogJycnb3ZlcnJpZGUgdGhlIHJvb3QgcHJlZml4JycnKQorK29wdGlvbigncm9vdGhvbWVkaXInLCB0eXBlIDogJ3N0cmluZycsCisrICAgICAgIGRlc2NyaXB0aW9uIDogJycnb3ZlcnJpZGUgdGhlIHJvb3QgaG9tZSBkaXJlY3RvcnknJycpCisgb3B0aW9uKCdsaW5rLXVkZXYtc2hhcmVkJywgdHlwZSA6ICdib29sZWFuJywKKyAgICAgICAgZGVzY3JpcHRpb24gOiAnbGluayBzeXN0ZW1kLXVkZXYgYW5kIGl0cyBoZWxwZXJzIHRvIGxpYnN5c3RlbWQtc2hhcmVkLnNvJykKKyAKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy1SZXZlcnQtcnVsZXMtcmVtb3ZlLWZpcm13YXJlLWxvYWRpbmctcnVsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctUmV2ZXJ0LXJ1bGVzLXJlbW92ZS1maXJtd2FyZS1sb2FkaW5nLXJ1bGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiMTJkMzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctUmV2ZXJ0LXJ1bGVzLXJlbW92ZS1maXJtd2FyZS1sb2FkaW5nLXJ1bGVzLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gMzVkNmQzODRlODNhYzM4MDc3NjAzNjExYmI3OTE5NjllZjk1ZmU2OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvbmF0aGFuIExpdSA8bmV0MTQ3QGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTkgTWFyIDIwMTUgMTU6MDE6MjkgKzExMDAKK1N1YmplY3Q6IFtQQVRDSCAwNy8zMV0gUmV2ZXJ0ICJydWxlczogcmVtb3ZlIGZpcm13YXJlIGxvYWRpbmcgcnVsZXMiCisKK1RoaXMgcmV2ZXJ0cyBjb21taXQgNzBlN2Q3NTRkZGIzNTZmYjFhMjk0MmIyNjJmOGNlZTk2NTBlMmExOS4KK1VzZXJzcGFjZSBmaXJtd2FyZSBsb2FkaW5nIHN1cHBvcnQgaXMgbmVlZGVkIGZvciBMaW51eCA8IDMuNy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gTGl1IDxuZXQxNDdAZ21haWwuY29tPgorLS0tCisgcnVsZXMvNTAtZmlybXdhcmUucnVsZXMgfCAzICsrKworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgcnVsZXMvNTAtZmlybXdhcmUucnVsZXMKKworZGlmZiAtLWdpdCBhL3J1bGVzLzUwLWZpcm13YXJlLnJ1bGVzIGIvcnVsZXMvNTAtZmlybXdhcmUucnVsZXMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAuLmYwYWU2ODQ1MQorLS0tIC9kZXYvbnVsbAorKysrIGIvcnVsZXMvNTAtZmlybXdhcmUucnVsZXMKK0BAIC0wLDAgKzEsMyBAQAorKyMgZG8gbm90IGVkaXQgdGhpcyBmaWxlLCBpdCB3aWxsIGJlIG92ZXJ3cml0dGVuIG9uIHVwZGF0ZQorKworK1NVQlNZU1RFTT09ImZpcm13YXJlIiwgQUNUSU9OPT0iYWRkIiwgUlVOe2J1aWx0aW59PSJmaXJtd2FyZSIKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy1jaGVjay1mb3ItbWlzc2luZy1jYW5vbmljYWxpemVfZmlsZV9uYW1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LWNoZWNrLWZvci1taXNzaW5nLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyMzRjNTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LWNoZWNrLWZvci1taXNzaW5nLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi1Gcm9tIDA1ZGZmZTY3OTE5ZmZjNzJiZTVjMDE3YmM2Y2Y4MmYxNjRiMmU4ZjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KLURhdGU6IE1vbiwgMjMgT2N0IDIwMTcgMTE6NDI6MDMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAwNy8xMl0gY2hlY2sgZm9yIG1pc3NpbmcgY2Fub25pY2FsaXplX2ZpbGVfbmFtZQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICB8IDIgKysKLSBzcmMvYmFzaWMvbWlzc2luZy5oICAgICAgICAgfCAxICsKLSBzcmMvYmFzaWMvbWlzc2luZ19zeXNjYWxsLmggfCA2ICsrKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGNkMDM1YTk3MS4uMzY3NDE5MGZiIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zMzMsNiArMzMzLDcgQEAgQUNfQ0hFQ0tfREVDTFMoWwotICAgICAgICAgcmVuYW1lYXQyLAotICAgICAgICAga2NtcCwKLSAgICAgICAgIGtleWN0bCwKLSsgICAgICAgIGNhbm9uaWNhbGl6ZV9maWxlX25hbWUsCi0gICAgICAgICBMT19GTEFHU19QQVJUU0NBTiwKLSAgICAgICAgIGNvcHlfZmlsZV9yYW5nZSwKLSAgICAgICAgIGV4cGxpY2l0X2J6ZXJvXSwKLUBAIC0zNDMsNiArMzQ0LDcgQEAgQUNfQ0hFQ0tfREVDTFMoWwotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzY2hlZC5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2xvb3AuaD4KLSBdXSkKLSAKLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZy5oIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAotaW5kZXggNjcxZjM0MWM2Li44YWU0OTY0ZTEgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvbWlzc2luZy5oCi0rKysgYi9zcmMvYmFzaWMvbWlzc2luZy5oCi1AQCAtMTI0NiwzICsxMjQ2LDQgQEAgc3RydWN0IGV0aHRvb2xfbGlua19zZXR0aW5ncyB7Ci0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgIm1pc3Npbmdfc3lzY2FsbC5oIgotKwotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaCBiL3NyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaAotaW5kZXggODk4MTE2YzdiLi40ZDQ0ZWU0ZmEgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvbWlzc2luZ19zeXNjYWxsLmgKLSsrKyBiL3NyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaAotQEAgLTI4LDYgKzI4LDEyIEBAIHN0YXRpYyBpbmxpbmUgaW50IHBpdm90X3Jvb3QoY29uc3QgY2hhciAqbmV3X3Jvb3QsIGNvbnN0IGNoYXIgKnB1dF9vbGQpIHsKLSB9Ci0gI2VuZGlmCi0gCi0rI2lmICFIQVZFX0RFQ0xfQ0FOT05JQ0FMSVpFX0ZJTEVfTkFNRQotK3N0YXRpYyBpbmxpbmUgY2hhciAqY2Fub25pY2FsaXplX2ZpbGVfbmFtZShjb25zdCBjaGFyICpwYXRoKSB7Ci0rICAgICAgICByZXR1cm4gcmVhbHBhdGgocGF0aCwgTlVMTCk7Ci0rfQotKyNlbmRpZgotKwotIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0gCi0gI2lmICFIQVZFX0RFQ0xfTUVNRkRfQ1JFQVRFCi0tLSAKLTIuMTQuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzkyZGI3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSBhMzQ4MmM5MTY0MmNmNTY4YjNhYzI3ZmE2YzBjYjNjNmIzMDY2OWI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgOSBOb3YgMjAxNiAxOTozMjoxNCAtMDgwMAotU3ViamVjdDogW1BBVENIIDA3LzE5XSB1c2UgbG5yIHdyYXBwZXIgaW5zdGVhZCBvZiBsb29raW5nIGZvciAtLXJlbGF0aXZlCi0gb3B0aW9uIGZvciBsbgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUuYW0gIHwgMiArLQotIGNvbmZpZ3VyZS5hYyB8IDIgLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAzIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvTWFrZWZpbGUuYW0KLSsrKyBnaXQvTWFrZWZpbGUuYW0KLUBAIC0zMjAsNyArMzIwLDcgQEAgZGVmaW5lIGluc3RhbGwtcmVsYXRpdmUtYWxpYXNlcwotIAl3aGlsZSBbIC1uICIkJDEiIF07IGRvIFwKLSAJCSQoTUtESVJfUCkgYGRpcm5hbWUgJChERVNURElSKSQkZGlyLyQkMmAgJiYgXAotIAkJcm0gLWYgJChERVNURElSKSQkZGlyLyQkMiAmJiBcCi0tCQkkKExOX1MpIC0tcmVsYXRpdmUgJChERVNURElSKSQkMSAkKERFU1RESVIpJCRkaXIvJCQyICYmIFwKLSsJCWxuciAkKERFU1RESVIpJCQxICQoREVTVERJUikkJGRpci8kJDIgJiYgXAotIAkJc2hpZnQgMiB8fCBleGl0ICQkPzsgXAotIAlkb25lCi0gZW5kZWYKLUluZGV4OiBnaXQvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgZ2l0L2NvbmZpZ3VyZS5hYwotQEAgLTExMCw4ICsxMTAsNiBAQCBBQ19QQVRIX1BST0coW1NVTE9HSU5dLCBbc3Vsb2dpbl0sIFsvdXNyCi0gQUNfUEFUSF9QUk9HKFtNT1VOVF9QQVRIXSwgW21vdW50XSwgWy91c3IvYmluL21vdW50XSwgWyRQQVRIOi91c3Ivc2Jpbjovc2Jpbl0pCi0gQUNfUEFUSF9QUk9HKFtVTU9VTlRfUEFUSF0sIFt1bW91bnRdLCBbL3Vzci9iaW4vdW1vdW50XSwgWyRQQVRIOi91c3Ivc2Jpbjovc2Jpbl0pCi0gCi0tQVNfSUYoWyEgbG4gLS1yZWxhdGl2ZSAtLWhlbHAgPiAvZGV2L251bGwgMj4mMV0sIFtBQ19NU0dfRVJST1IoWyoqKiBsbiBkb2Vzbid0IHN1cHBvcnQgLS1yZWxhdGl2ZSAqKipdKV0pCi0tCi0gTTRfREVGSU5FUz0KLSAKLSBBQ19DSEVDS19UT09MKE9CSkNPUFksIG9iamNvcHkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDgtRG8tbm90LWVuYWJsZS1uc3MtdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDgtRG8tbm90LWVuYWJsZS1uc3MtdGVzdHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3YTRmOGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA4LURvLW5vdC1lbmFibGUtbnNzLXRlc3RzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSA0OGU3YzBmNWIyZjVkNzc3YTE2YWM1NTg0ZGM0ZjUwZjFkZmE4MzJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjMgT2N0IDIwMTcgMTI6Mjc6NTMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAwOC8xMl0gRG8gbm90IGVuYWJsZSBuc3MgdGVzdHMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBNYWtlZmlsZS5hbSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDNjYzhmMzQ1MS4uZGYyMGE5YTExIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtNTI5MCw2ICs1MjkwLDcgQEAgRVhUUkFfRElTVCArPSBcCi0gCXNyYy90aW1lc3luYy90aW1lc3luY2QuY29uZi5pbgotIAotICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0raWYgRU5BQkxFX05TU19TWVNURU1ECi0gdGVzdF9uc3NfU09VUkNFUyA9IFwKLSAJc3JjL3Rlc3QvdGVzdC1uc3MuYwotIAotQEAgLTUzMDIsNyArNTMwMyw2IEBAIG1hbnVhbF90ZXN0cyArPSBcCi0gCXRlc3QtbnNzCi0gCi0gIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS1pZiBFTkFCTEVfTlNTX1NZU1RFTUQKLSBsaWJuc3Nfc3lzdGVtZF9sYV9TT1VSQ0VTID0gXAotIAlzcmMvbnNzLXN5c3RlbWQvbnNzLXN5c3RlbWQuc3ltIFwKLSAJc3JjL25zcy1zeXN0ZW1kL25zcy1zeXN0ZW1kLmMKLS0tIAotMi4xNC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOC1SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA4LVJldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVkN2UwMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOC1SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoCkBAIC0wLDAgKzEsMzc3IEBACitGcm9tIDVjY2U3NjI2ZjMzZTkyZjYyNGFjMDZiNjEzMTI1ODEzZmI0N2Q0NDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDI4IEZlYiAyMDE4IDIxOjA1OjM5IC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMDgvMzFdIFJldmVydCAidWRldjogcmVtb3ZlIHVzZXJzcGFjZSBmaXJtd2FyZSBsb2FkaW5nCisgc3VwcG9ydCIKKworVGhpcyByZXZlcnRzIGNvbW1pdCBiZTJlYTcyM2IxZDAyM2IzZDM4NWQzYjc5MWVlNDYwN2NiZmIyMGNhLgorVXNlcnNwYWNlIGZpcm13YXJlIGxvYWRpbmcgc3VwcG9ydCBpcyBuZWVkZWQgZm9yIExpbnV4IDwgMy43LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBKb25hdGhhbiBMaXUgPG5ldDE0N0BnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgUkVBRE1FICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KKyBUT0RPICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCisgbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICAgfCAgIDkgKysrCisgbWVzb25fb3B0aW9ucy50eHQgICAgICAgICAgICAgICAgfCAgIDIgKworIHJ1bGVzL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgIHwgICA0ICsKKyBzcmMvdWRldi9tZXNvbi5idWlsZCAgICAgICAgICAgICB8ICAgNCArCisgc3JjL3VkZXYvdWRldi1idWlsdGluLWZpcm13YXJlLmMgfCAxNTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgc3JjL3VkZXYvdWRldi1idWlsdGluLmMgICAgICAgICAgfCAgIDMgKworIHNyYy91ZGV2L3VkZXYuaCAgICAgICAgICAgICAgICAgIHwgICA2ICsrCisgc3JjL3VkZXYvdWRldmQuYyAgICAgICAgICAgICAgICAgfCAgMTIgKysrCisgMTAgZmlsZXMgY2hhbmdlZCwgMTk3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jCisKK2RpZmYgLS1naXQgYS9SRUFETUUgYi9SRUFETUUKK2luZGV4IDg4MDdlNWNmZS4uYmZkN2EzNWRlIDEwMDY0NAorLS0tIGEvUkVBRE1FCisrKysgYi9SRUFETUUKK0BAIC01OCw4ICs1OCw4IEBAIFJFUVVJUkVNRU5UUzoKKyAgICAgICAgIExlZ2FjeSBob3RwbHVnIHNsb3dzIGRvd24gdGhlIHN5c3RlbSBhbmQgY29uZnVzZXMgdWRldjoKKyAgICAgICAgICAgQ09ORklHX1VFVkVOVF9IRUxQRVJfUEFUSD0iIgorIAorLSAgICAgICAgVXNlcnNwYWNlIGZpcm13YXJlIGxvYWRpbmcgaXMgbm90IHN1cHBvcnRlZCBhbmQgc2hvdWxkCistICAgICAgICBiZSBkaXNhYmxlZCBpbiB0aGUga2VybmVsOgorKyAgICAgICAgVXNlcnNwYWNlIGZpcm13YXJlIGxvYWRpbmcgaXMgZGVwcmVjYXRlZCwgd2lsbCBnbyBhd2F5LCBhbmQKKysgICAgICAgIHNvbWV0aW1lcyBjYXVzZXMgcHJvYmxlbXM6CisgICAgICAgICAgIENPTkZJR19GV19MT0FERVJfVVNFUl9IRUxQRVI9bgorIAorICAgICAgICAgU29tZSB1ZGV2IHJ1bGVzIGFuZCB2aXJ0dWFsaXphdGlvbiBkZXRlY3Rpb24gcmVsaWVzIG9uIGl0OgorZGlmZiAtLWdpdCBhL1RPRE8gYi9UT0RPCitpbmRleCBhNzcwMjhjN2IuLjM5ZTcyZDdlYyAxMDA2NDQKKy0tLSBhL1RPRE8KKysrKyBiL1RPRE8KK0BAIC03ODMsNiArNzgzLDcgQEAgRmVhdHVyZXM6CisgKiBpbml0aWFsaXplIHRoZSBob3N0bmFtZSBmcm9tIHRoZSBmcyBsYWJlbCBvZiAvLCBpZiAvZXRjL2hvc3RuYW1lIGRvZXMgbm90IGV4aXN0PworIAorICogdWRldjoKKysgIC0gcmVtb3ZlIHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jIChDT05GSUdfRldfTE9BREVSX1VTRVJfSEVMUEVSPW4pCisgICAtIG1vdmUgdG8gTEdQTAorICAgLSBraWxsIHNjc2lfaWQKKyAgIC0gYWRkIHRyaWdnZXIgLS1zdWJzeXN0ZW0tbWF0Y2g9dXNiL3VzYl9kZXZpY2UgZGV2aWNlCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggOTE4MTAxZDZiLi45YzI1MDIyYTQgMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC03Miw2ICs3MiwxMiBAQCBjb25mLnNldDEwKCdIQVZFX1NZU1ZfQ09NUEFUJywgaGF2ZSwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uIDogJ1N5c1YgaW5pdCBzY3JpcHRzIGFuZCByY04uZCBsaW5rcyBhcmUgc3VwcG9ydGVkJykKKyBtNF9kZWZpbmVzICs9IGhhdmUgPyBbJy1ESEFWRV9TWVNWX0NPTVBBVCddIDogW10KKyAKKytmaXJtd2FyZV9wYXRoID0gZ2V0X29wdGlvbignZmlybXdhcmUtcGF0aCcpCisraGF2ZSA9IGZpcm13YXJlX3BhdGggIT0gJycKKytjb25mLnNldDEwKCdIQVZFX0ZJUk1XQVJFJywgaGF2ZSwKKysgICAgICAgICAgIGRlc2NyaXB0aW9uIDogJ1VzZXJzcGFjZSBmaXJtd2FyZSBsb2FkaW5nIGlzIHN1cHBvcnRlZCcpCisrbTRfZGVmaW5lcyArPSBoYXZlID8gWyctREhBVkVfRklSTVdBUkUnXSA6IFtdCisrCisgIyBqb2luX3BhdGhzIGlnbm9yZSB0aGUgcHJlY2VkaW5nIGFyZ3VtZW50cyBpZiBhbiBhYnNvbHV0ZSBjb21wb25lbnQgaXMKKyAjIGVuY291bnRlcmVkLCBzbyB0aGlzIHNob3VsZCBjYW5vbmljYWxpemUgdmFyaW91cyBwYXRocyB3aGVuIHRoZXkgYXJlCisgIyBhYnNvbHV0ZSBvciByZWxhdGl2ZS4KK0BAIC0xNzgsNiArMTg0LDcgQEAgY29uZi5zZXRfcXVvdGVkKCdTWVNURU1fQ09ORklHX1VOSVRfUEFUSCcsICAgICAgICAgICAgICAgICAgICBqb2luX3BhdGhzKHBrZ3N5c2MKKyBjb25mLnNldF9xdW90ZWQoJ1NZU1RFTV9EQVRBX1VOSVRfUEFUSCcsICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbXVuaXRkaXIpCisgY29uZi5zZXRfcXVvdGVkKCdTWVNURU1fU1lTVklOSVRfUEFUSCcsICAgICAgICAgICAgICAgICAgICAgICBzeXN2aW5pdF9wYXRoKQorIGNvbmYuc2V0X3F1b3RlZCgnU1lTVEVNX1NZU1ZSQ05EX1BBVEgnLCAgICAgICAgICAgICAgICAgICAgICAgc3lzdnJjbmRfcGF0aCkKKytjb25mLnNldF9xdW90ZWQoJ0ZJUk1XQVJFX1BBVEgnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcm13YXJlX3BhdGgpCisgY29uZi5zZXRfcXVvdGVkKCdSQ19MT0NBTF9TQ1JJUFRfUEFUSF9TVEFSVCcsICAgICAgICAgICAgICAgICBnZXRfb3B0aW9uKCdyYy1sb2NhbCcpKQorIGNvbmYuc2V0X3F1b3RlZCgnUkNfTE9DQUxfU0NSSVBUX1BBVEhfU1RPUCcsICAgICAgICAgICAgICAgICAgZ2V0X29wdGlvbignaGFsdC1sb2NhbCcpKQorIGNvbmYuc2V0X3F1b3RlZCgnVVNFUl9DT05GSUdfVU5JVF9QQVRIJywgICAgICAgICAgICAgICAgICAgICAgam9pbl9wYXRocyhwa2dzeXNjb25mZGlyLCAndXNlcicpKQorQEAgLTI1OCw2ICsyNjUsNyBAQCBzdWJzdHMuc2V0KCdTWVNURU1DVEwnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvaW5fcGF0aHMocm9vdGJpbgorIHN1YnN0cy5zZXQoJ1JBTkRPTV9TRUVEJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbl9wYXRocyhyYW5kb21zZWVkZGlyLCAncmFuZG9tLXNlZWQnKSkKKyBzdWJzdHMuc2V0KCdTWVNURU1fU1lTVklOSVRfUEFUSCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3Zpbml0X3BhdGgpCisgc3Vic3RzLnNldCgnU1lTVEVNX1NZU1ZSQ05EX1BBVEgnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXN2cmNuZF9wYXRoKQorK3N1YnN0cy5zZXQoJ0ZJUk1XQVJFX1BBVEgnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlybXdhcmVfcGF0aCkKKyBzdWJzdHMuc2V0KCdSQ19MT0NBTF9TQ1JJUFRfUEFUSF9TVEFSVCcsICAgICAgICAgICAgICAgICAgICAgIGdldF9vcHRpb24oJ3JjLWxvY2FsJykpCisgc3Vic3RzLnNldCgnUkNfTE9DQUxfU0NSSVBUX1BBVEhfU1RPUCcsICAgICAgICAgICAgICAgICAgICAgICBnZXRfb3B0aW9uKCdoYWx0LWxvY2FsJykpCisgCitAQCAtMjcxNSw2ICsyNzIzLDcgQEAgc3RhdHVzID0gWworICAgICAgICAgJ3Jvb3Rob21lIGRpcmVjdG9yeTogICAgICAgICAgICAgICAgQDBAJy5mb3JtYXQocm9vdGhvbWVkaXIpLAorICAgICAgICAgJ1N5c1YgaW5pdCBzY3JpcHRzOiAgICAgICAgICAgICAgICAgQDBAJy5mb3JtYXQoc3lzdmluaXRfcGF0aCksCisgICAgICAgICAnU3lzViByYz8uZCBkaXJlY3RvcmllczogICAgICAgICAgICBAMEAnLmZvcm1hdChzeXN2cmNuZF9wYXRoKSwKKysgICAgICAgICdmaXJtd2FyZSBwYXRoOiAgICAgICAgICAgICAgICAgICAgIEAwQCcuZm9ybWF0KGZpcm13YXJlX3BhdGgpLAorICAgICAgICAgJ1BBTSBtb2R1bGVzIGRpcmVjdG9yeTogICAgICAgICAgICAgQDBAJy5mb3JtYXQocGFtbGliZGlyKSwKKyAgICAgICAgICdQQU0gY29uZmlndXJhdGlvbiBkaXJlY3Rvcnk6ICAgICAgIEAwQCcuZm9ybWF0KHBhbWNvbmZkaXIpLAorICAgICAgICAgJ1JQTSBtYWNyb3MgZGlyZWN0b3J5OiAgICAgICAgICAgICAgQDBAJy5mb3JtYXQocnBtbWFjcm9zZGlyKSwKK2RpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29uX29wdGlvbnMudHh0CitpbmRleCAwYjI0ZjBlMGYuLjkyZDI1ZmEzNSAxMDA2NDQKKy0tLSBhL21lc29uX29wdGlvbnMudHh0CisrKysgYi9tZXNvbl9vcHRpb25zLnR4dAorQEAgLTEwOCw2ICsxMDgsOCBAQCBvcHRpb24oJ3RtcGZpbGVzJywgdHlwZSA6ICdib29sZWFuJywKKyAgICAgICAgZGVzY3JpcHRpb24gOiAnc3VwcG9ydCBmb3IgdG1wZmlsZXMuZCcpCisgb3B0aW9uKCdpbXBvcnRkJywgdHlwZSA6ICdjb21ibycsIGNob2ljZXMgOiBbJ2F1dG8nLCAndHJ1ZScsICdmYWxzZSddLAorICAgICAgICBkZXNjcmlwdGlvbiA6ICdpbnN0YWxsIHRoZSBzeXN0ZW1kLWltcG9ydGQgZGFlbW9uJykKKytvcHRpb24oJ2Zpcm13YXJlLXBhdGgnLCB0eXBlIDogJ3N0cmluZycsIHZhbHVlIDogJycsCisrICAgICAgIGRlc2NyaXB0aW9uIDogJ0Zpcm13YXJlIHNlYXJjaCBwYXRoJykKKyBvcHRpb24oJ2h3ZGInLCB0eXBlIDogJ2Jvb2xlYW4nLAorICAgICAgICBkZXNjcmlwdGlvbiA6ICdzdXBwb3J0IGZvciB0aGUgaGFyZHdhcmUgZGF0YWJhc2UnKQorIG9wdGlvbigncmZraWxsJywgdHlwZSA6ICdib29sZWFuJywKK2RpZmYgLS1naXQgYS9ydWxlcy9tZXNvbi5idWlsZCBiL3J1bGVzL21lc29uLmJ1aWxkCitpbmRleCBlMjUzYjlmNTkuLjVlZWU1ZmJjYSAxMDA2NDQKKy0tLSBhL3J1bGVzL21lc29uLmJ1aWxkCisrKysgYi9ydWxlcy9tZXNvbi5idWlsZAorQEAgLTQxLDYgKzQxLDEwIEBAIHJ1bGVzID0gZmlsZXMoJycnCisgaW5zdGFsbF9kYXRhKHJ1bGVzLAorICAgICAgICAgICAgICBpbnN0YWxsX2RpciA6IHVkZXZydWxlc2RpcikKKyAKKytpZiBjb25mLmdldCgnSEFWRV9GSVJNV0FSRScpID09IDEKKysgICAgICAgIGluc3RhbGxfZGF0YSgnNTAtZmlybXdhcmUucnVsZXMnLCBpbnN0YWxsX2RpciA6IHVkZXZydWxlc2RpcikKKytlbmRpZgorKworIGFsbF9ydWxlcyA9IHJ1bGVzCisgCisgcnVsZXNfaW4gPSAnJycKK2RpZmYgLS1naXQgYS9zcmMvdWRldi9tZXNvbi5idWlsZCBiL3NyYy91ZGV2L21lc29uLmJ1aWxkCitpbmRleCBkZTJmZDJkOWMuLmI2YjBjYTAwNiAxMDA2NDQKKy0tLSBhL3NyYy91ZGV2L21lc29uLmJ1aWxkCisrKysgYi9zcmMvdWRldi9tZXNvbi5idWlsZAorQEAgLTY3LDYgKzY3LDEwIEBAIGlmIGNvbmYuZ2V0KCdIQVZFX0FDTCcpID09IDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZF9sb2dpbl9jXQorIGVuZGlmCisgCisraWYgY29uZi5nZXQoJ0hBVkVfRklSTVdBUkUnKSA9PSAxCisrICAgICAgICBsaWJ1ZGV2X2NvcmVfc291cmNlcyArPSBbJ3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jJ10KKytlbmRpZgorKworICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIAorIGdlbmVyYXRlX2tleWJvYXJkX2tleXNfbGlzdCA9IGZpbmRfcHJvZ3JhbSgnZ2VuZXJhdGUta2V5Ym9hcmQta2V5cy1saXN0LnNoJykKK2RpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tZmlybXdhcmUuYyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwLi5iZDhjMmZiOTYKKy0tLSAvZGV2L251bGwKKysrKyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jCitAQCAtMCwwICsxLDE1NCBAQAorKy8qCisrICogZmlybXdhcmUgLSBLZXJuZWwgZmlybXdhcmUgbG9hZGVyCisrICoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMDkgUGl0ZXIgUHVuayA8cGl0ZXJwdW5rQHNsYWNrd2FyZS5jb20+CisrICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTEgS2F5IFNpZXZlcnMgPGtheUB2cmZ5Lm9yZz4KKysgKgorKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZQorKyAqIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrICogV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzOioKKysgKi8KKysKKysjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8Z2V0b3B0Lmg+CisrI2luY2x1ZGUgPGVycm5vLmg+CisrI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKysjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KKysjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKysKKysjaW5jbHVkZSAidWRldi5oIgorKworK3N0YXRpYyBib29sIHNldF9sb2FkaW5nKHN0cnVjdCB1ZGV2ICp1ZGV2LCBjaGFyICpsb2FkcGF0aCwgY29uc3QgY2hhciAqc3RhdGUpIHsKKysgICAgICAgIEZJTEUgKmxkZmlsZTsKKysKKysgICAgICAgIGxkZmlsZSA9IGZvcGVuKGxvYWRwYXRoLCAid2UiKTsKKysgICAgICAgIGlmIChsZGZpbGUgPT0gTlVMTCkgeworKyAgICAgICAgICAgICAgICBsb2dfZXJyb3IoImVycm9yOiBjYW4gbm90IG9wZW4gJyVzJyIsIGxvYWRwYXRoKTsKKysgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICAgICAgfTsKKysgICAgICAgIGZwcmludGYobGRmaWxlLCAiJXNcbiIsIHN0YXRlKTsKKysgICAgICAgIGZjbG9zZShsZGZpbGUpOworKyAgICAgICAgcmV0dXJuIHRydWU7CisrfQorKworK3N0YXRpYyBib29sIGNvcHlfZmlybXdhcmUoc3RydWN0IHVkZXYgKnVkZXYsIGNvbnN0IGNoYXIgKnNvdXJjZSwgY29uc3QgY2hhciAqdGFyZ2V0LCBzaXplX3Qgc2l6ZSkgeworKyAgICAgICAgY2hhciAqYnVmOworKyAgICAgICAgRklMRSAqZnNvdXJjZSA9IE5VTEwsICpmdGFyZ2V0ID0gTlVMTDsKKysgICAgICAgIGJvb2wgcmV0ID0gZmFsc2U7CisrCisrICAgICAgICBidWYgPSBtYWxsb2Moc2l6ZSk7CisrICAgICAgICBpZiAoYnVmID09IE5VTEwpIHsKKysgICAgICAgICAgICAgICAgbG9nX2Vycm9yKCJObyBtZW1vcnkgYXZhaWxhYmxlIHRvIGxvYWQgZmlybXdhcmUgZmlsZSIpOworKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgICAgICB9CisrCisrICAgICAgICBsb2dfZGVidWcoIndyaXRpbmcgJyVzJyAoJXppKSB0byAnJXMnIiwgc291cmNlLCBzaXplLCB0YXJnZXQpOworKworKyAgICAgICAgZnNvdXJjZSA9IGZvcGVuKHNvdXJjZSwgInJlIik7CisrICAgICAgICBpZiAoZnNvdXJjZSA9PSBOVUxMKQorKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisrICAgICAgICBmdGFyZ2V0ID0gZm9wZW4odGFyZ2V0LCAid2UiKTsKKysgICAgICAgIGlmIChmdGFyZ2V0ID09IE5VTEwpCisrICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKysgICAgICAgIGlmIChmcmVhZChidWYsIHNpemUsIDEsIGZzb3VyY2UpICE9IDEpCisrICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKysgICAgICAgIGlmIChmd3JpdGUoYnVmLCBzaXplLCAxLCBmdGFyZ2V0KSA9PSAxKQorKyAgICAgICAgICAgICAgICByZXQgPSB0cnVlOworK2V4aXQ6CisrICAgICAgICBpZiAoZnRhcmdldCAhPSBOVUxMKQorKyAgICAgICAgICAgICAgICBmY2xvc2UoZnRhcmdldCk7CisrICAgICAgICBpZiAoZnNvdXJjZSAhPSBOVUxMKQorKyAgICAgICAgICAgICAgICBmY2xvc2UoZnNvdXJjZSk7CisrICAgICAgICBmcmVlKGJ1Zik7CisrICAgICAgICByZXR1cm4gcmV0OworK30KKysKKytzdGF0aWMgaW50IGJ1aWx0aW5fZmlybXdhcmUoc3RydWN0IHVkZXZfZGV2aWNlICpkZXYsIGludCBhcmdjLCBjaGFyICphcmd2W10sIGJvb2wgdGVzdCkgeworKyAgICAgICAgc3RydWN0IHVkZXYgKnVkZXYgPSB1ZGV2X2RldmljZV9nZXRfdWRldihkZXYpOworKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgKnNlYXJjaHBhdGhbXSA9IHsgRklSTVdBUkVfUEFUSCB9OworKyAgICAgICAgY2hhciBsb2FkcGF0aFtVVElMX1BBVEhfU0laRV07CisrICAgICAgICBjaGFyIGRhdGFwYXRoW1VUSUxfUEFUSF9TSVpFXTsKKysgICAgICAgIGNoYXIgZndwYXRoW1VUSUxfUEFUSF9TSVpFXTsKKysgICAgICAgIGNvbnN0IGNoYXIgKmZpcm13YXJlOworKyAgICAgICAgRklMRSAqZndmaWxlID0gTlVMTDsKKysgICAgICAgIHN0cnVjdCB1dHNuYW1lIGtlcm5lbDsKKysgICAgICAgIHN0cnVjdCBzdGF0IHN0YXRidWY7CisrICAgICAgICB1bnNpZ25lZCBpbnQgaTsKKysgICAgICAgIGludCByYyA9IEVYSVRfU1VDQ0VTUzsKKysKKysgICAgICAgIGZpcm13YXJlID0gdWRldl9kZXZpY2VfZ2V0X3Byb3BlcnR5X3ZhbHVlKGRldiwgIkZJUk1XQVJFIik7CisrICAgICAgICBpZiAoZmlybXdhcmUgPT0gTlVMTCkgeworKyAgICAgICAgICAgICAgICBsb2dfZXJyb3IoImZpcm13YXJlIHBhcmFtZXRlciBtaXNzaW5nIik7CisrICAgICAgICAgICAgICAgIHJjID0gRVhJVF9GQUlMVVJFOworKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisrICAgICAgICB9CisrCisrICAgICAgICAvKiBsb29rdXAgZmlybXdhcmUgZmlsZSAqLworKyAgICAgICAgdW5hbWUoJmtlcm5lbCk7CisrICAgICAgICBmb3IgKGkgPSAwOyBpIDwgRUxFTUVOVFNPRihzZWFyY2hwYXRoKTsgaSsrKSB7CisrICAgICAgICAgICAgICAgIHN0cnNjcHlsKGZ3cGF0aCwgc2l6ZW9mKGZ3cGF0aCksIHNlYXJjaHBhdGhbaV0sIGtlcm5lbC5yZWxlYXNlLCAiLyIsIGZpcm13YXJlLCBOVUxMKTsKKysgICAgICAgICAgICAgICAgZndmaWxlID0gZm9wZW4oZndwYXRoLCAicmUiKTsKKysgICAgICAgICAgICAgICAgaWYgKGZ3ZmlsZSAhPSBOVUxMKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworKworKyAgICAgICAgICAgICAgICBzdHJzY3B5bChmd3BhdGgsIHNpemVvZihmd3BhdGgpLCBzZWFyY2hwYXRoW2ldLCBmaXJtd2FyZSwgTlVMTCk7CisrICAgICAgICAgICAgICAgIGZ3ZmlsZSA9IGZvcGVuKGZ3cGF0aCwgInJlIik7CisrICAgICAgICAgICAgICAgIGlmIChmd2ZpbGUgIT0gTlVMTCkKKysgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgIH0KKysKKysgICAgICAgIHN0cnNjcHlsKGxvYWRwYXRoLCBzaXplb2YobG9hZHBhdGgpLCB1ZGV2X2RldmljZV9nZXRfc3lzcGF0aChkZXYpLCAiL2xvYWRpbmciLCBOVUxMKTsKKysKKysgICAgICAgIGlmIChmd2ZpbGUgPT0gTlVMTCkgeworKyAgICAgICAgICAgICAgICBsb2dfZGVidWcoImRpZCBub3QgZmluZCBmaXJtd2FyZSBmaWxlICclcyciLCBmaXJtd2FyZSk7CisrICAgICAgICAgICAgICAgIHJjID0gRVhJVF9GQUlMVVJFOworKyAgICAgICAgICAgICAgICAvKgorKyAgICAgICAgICAgICAgICAgKiBEbyBub3QgY2FuY2VsIHRoZSByZXF1ZXN0IGluIHRoZSBpbml0cmQsIHRoZSByZWFsIHJvb3QgbWlnaHQgaGF2ZQorKyAgICAgICAgICAgICAgICAgKiB0aGUgZmlybXdhcmUgZmlsZSBhbmQgdGhlICdjb2xkcGx1ZycgcnVuIGluIHRoZSByZWFsIHJvb3Qgd2lsbCBmaW5kCisrICAgICAgICAgICAgICAgICAqIHRoaXMgcGVuZGluZyByZXF1ZXN0IGFuZCBmdWxmaWxsIG9yIGNhbmNlbCBpdC4KKysgICAgICAgICAgICAgICAgICogKi8KKysgICAgICAgICAgICAgICAgaWYgKCFpbl9pbml0cmQoKSkKKysgICAgICAgICAgICAgICAgICAgICAgICBzZXRfbG9hZGluZyh1ZGV2LCBsb2FkcGF0aCwgIi0xIik7CisrICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmIChzdGF0KGZ3cGF0aCwgJnN0YXRidWYpIDwgMCB8fCBzdGF0YnVmLnN0X3NpemUgPT0gMCkgeworKyAgICAgICAgICAgICAgICBpZiAoIWluX2luaXRyZCgpKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHNldF9sb2FkaW5nKHVkZXYsIGxvYWRwYXRoLCAiLTEiKTsKKysgICAgICAgICAgICAgICAgcmMgPSBFWElUX0ZBSUxVUkU7CisrICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmICghc2V0X2xvYWRpbmcodWRldiwgbG9hZHBhdGgsICIxIikpCisrICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKysKKysgICAgICAgIHN0cnNjcHlsKGRhdGFwYXRoLCBzaXplb2YoZGF0YXBhdGgpLCB1ZGV2X2RldmljZV9nZXRfc3lzcGF0aChkZXYpLCAiL2RhdGEiLCBOVUxMKTsKKysgICAgICAgIGlmICghY29weV9maXJtd2FyZSh1ZGV2LCBmd3BhdGgsIGRhdGFwYXRoLCBzdGF0YnVmLnN0X3NpemUpKSB7CisrICAgICAgICAgICAgICAgIGxvZ19lcnJvcigiZXJyb3Igc2VuZGluZyBmaXJtd2FyZSAnJXMnIHRvIGRldmljZSIsIGZpcm13YXJlKTsKKysgICAgICAgICAgICAgICAgc2V0X2xvYWRpbmcodWRldiwgbG9hZHBhdGgsICItMSIpOworKyAgICAgICAgICAgICAgICByYyA9IEVYSVRfRkFJTFVSRTsKKysgICAgICAgICAgICAgICAgZ290byBleGl0OworKyAgICAgICAgfTsKKysKKysgICAgICAgIHNldF9sb2FkaW5nKHVkZXYsIGxvYWRwYXRoLCAiMCIpOworK2V4aXQ6CisrICAgICAgICBpZiAoZndmaWxlKQorKyAgICAgICAgICAgICAgICBmY2xvc2UoZndmaWxlKTsKKysgICAgICAgIHJldHVybiByYzsKKyt9CisrCisrY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiB1ZGV2X2J1aWx0aW5fZmlybXdhcmUgPSB7CisrICAgICAgICAubmFtZSA9ICJmaXJtd2FyZSIsCisrICAgICAgICAuY21kID0gYnVpbHRpbl9maXJtd2FyZSwKKysgICAgICAgIC5oZWxwID0gImtlcm5lbCBmaXJtd2FyZSBsb2FkZXIiLAorKyAgICAgICAgLnJ1bl9vbmNlID0gdHJ1ZSwKKyt9OworZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi5jIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLmMKK2luZGV4IGRiMmI2ODc0Zi4uY2NkODg2MzhjIDEwMDY0NAorLS0tIGEvc3JjL3VkZXYvdWRldi1idWlsdGluLmMKKysrKyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi5jCitAQCAtMzIsNiArMzIsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiAqYnVpbHRpbnNbXSA9IHsKKyAgICAgICAgIFtVREVWX0JVSUxUSU5fQkxLSURdID0gJnVkZXZfYnVpbHRpbl9ibGtpZCwKKyAjZW5kaWYKKyAgICAgICAgIFtVREVWX0JVSUxUSU5fQlRSRlNdID0gJnVkZXZfYnVpbHRpbl9idHJmcywKKysjaWYgSEFWRV9GSVJNV0FSRQorKyAgICAgICAgW1VERVZfQlVJTFRJTl9GSVJNV0FSRV0gPSAmdWRldl9idWlsdGluX2Zpcm13YXJlLAorKyNlbmRpZgorICAgICAgICAgW1VERVZfQlVJTFRJTl9IV0RCXSA9ICZ1ZGV2X2J1aWx0aW5faHdkYiwKKyAgICAgICAgIFtVREVWX0JVSUxUSU5fSU5QVVRfSURdID0gJnVkZXZfYnVpbHRpbl9pbnB1dF9pZCwKKyAgICAgICAgIFtVREVWX0JVSUxUSU5fS0VZQk9BUkRdID0gJnVkZXZfYnVpbHRpbl9rZXlib2FyZCwKK2RpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2LmggYi9zcmMvdWRldi91ZGV2LmgKK2luZGV4IGVhMTFjMmQyOS4uYzQ3ZGQzZDg4IDEwMDY0NAorLS0tIGEvc3JjL3VkZXYvdWRldi5oCisrKysgYi9zcmMvdWRldi91ZGV2LmgKK0BAIC0xNTEsNiArMTUxLDkgQEAgZW51bSB1ZGV2X2J1aWx0aW5fY21kIHsKKyAgICAgICAgIFVERVZfQlVJTFRJTl9CTEtJRCwKKyAjZW5kaWYKKyAgICAgICAgIFVERVZfQlVJTFRJTl9CVFJGUywKKysjaWYgSEFWRV9GSVJNV0FSRQorKyAgICAgICAgVURFVl9CVUlMVElOX0ZJUk1XQVJFLAorKyNlbmRpZgorICAgICAgICAgVURFVl9CVUlMVElOX0hXREIsCisgICAgICAgICBVREVWX0JVSUxUSU5fSU5QVVRfSUQsCisgICAgICAgICBVREVWX0JVSUxUSU5fS0VZQk9BUkQsCitAQCAtMTc5LDYgKzE4Miw5IEBAIHN0cnVjdCB1ZGV2X2J1aWx0aW4geworIGV4dGVybiBjb25zdCBzdHJ1Y3QgdWRldl9idWlsdGluIHVkZXZfYnVpbHRpbl9ibGtpZDsKKyAjZW5kaWYKKyBleHRlcm4gY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiB1ZGV2X2J1aWx0aW5fYnRyZnM7CisrI2lmIEhBVkVfRklSTVdBUkUKKytleHRlcm4gY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiB1ZGV2X2J1aWx0aW5fZmlybXdhcmU7CisrI2VuZGlmCisgZXh0ZXJuIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gdWRldl9idWlsdGluX2h3ZGI7CisgZXh0ZXJuIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gdWRldl9idWlsdGluX2lucHV0X2lkOworIGV4dGVybiBjb25zdCBzdHJ1Y3QgdWRldl9idWlsdGluIHVkZXZfYnVpbHRpbl9rZXlib2FyZDsKK2RpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2ZC5jIGIvc3JjL3VkZXYvdWRldmQuYworaW5kZXggNWM3NTdkNTEzLi4yZjMzMTMwMDcgMTAwNjQ0CistLS0gYS9zcmMvdWRldi91ZGV2ZC5jCisrKysgYi9zcmMvdWRldi91ZGV2ZC5jCitAQCAtMTI3LDYgKzEyNyw5IEBAIHN0cnVjdCBldmVudCB7CisgICAgICAgICBib29sIGlzX2Jsb2NrOworICAgICAgICAgc2RfZXZlbnRfc291cmNlICp0aW1lb3V0X3dhcm5pbmc7CisgICAgICAgICBzZF9ldmVudF9zb3VyY2UgKnRpbWVvdXQ7CisrI2lmIEhBVkVfRklSTVdBUkUKKysgICAgICAgIGJvb2wgbm9kZWxheTsKKysjZW5kaWYKKyB9OworIAorIHN0YXRpYyB2b2lkIGV2ZW50X3F1ZXVlX2NsZWFudXAoTWFuYWdlciAqbWFuYWdlciwgZW51bSBldmVudF9zdGF0ZSB0eXBlKTsKK0BAIC02MDksNiArNjEyLDEwIEBAIHN0YXRpYyBpbnQgZXZlbnRfcXVldWVfaW5zZXJ0KE1hbmFnZXIgKm1hbmFnZXIsIHN0cnVjdCB1ZGV2X2RldmljZSAqZGV2KSB7CisgICAgICAgICBldmVudC0+ZGV2bnVtID0gdWRldl9kZXZpY2VfZ2V0X2Rldm51bShkZXYpOworICAgICAgICAgZXZlbnQtPmlzX2Jsb2NrID0gc3RyZXEoImJsb2NrIiwgdWRldl9kZXZpY2VfZ2V0X3N1YnN5c3RlbShkZXYpKTsKKyAgICAgICAgIGV2ZW50LT5pZmluZGV4ID0gdWRldl9kZXZpY2VfZ2V0X2lmaW5kZXgoZGV2KTsKKysjaWYgSEFWRV9GSVJNV0FSRQorKyAgICAgICAgaWYgKHN0cmVxKHVkZXZfZGV2aWNlX2dldF9zdWJzeXN0ZW0oZGV2KSwgImZpcm13YXJlIikpCisrICAgICAgICAgICAgICAgIGV2ZW50LT5ub2RlbGF5ID0gdHJ1ZTsKKysjZW5kaWYKKyAKKyAgICAgICAgIGxvZ19kZWJ1Zygic2VxICVsbHUgcXVldWVkLCAnJXMnICclcyciLCB1ZGV2X2RldmljZV9nZXRfc2VxbnVtKGRldiksCisgICAgICAgICAgICAgIHVkZXZfZGV2aWNlX2dldF9hY3Rpb24oZGV2KSwgdWRldl9kZXZpY2VfZ2V0X3N1YnN5c3RlbShkZXYpKTsKK0BAIC02OTIsNiArNjk5LDExIEBAIHN0YXRpYyBib29sIGlzX2RldnBhdGhfYnVzeShNYW5hZ2VyICptYW5hZ2VyLCBzdHJ1Y3QgZXZlbnQgKmV2ZW50KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgIH0KKyAKKysjaWYgSEFWRV9GSVJNV0FSRQorKyAgICAgICAgICAgICAgICAvKiBhbGxvdyB0byBieXBhc3MgdGhlIGRlcGVuZGVuY3kgdHJhY2tpbmcgKi8KKysgICAgICAgICAgICAgICAgaWYgKGV2ZW50LT5ub2RlbGF5KQorKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyNlbmRpZgorICAgICAgICAgICAgICAgICAvKiBwYXJlbnQgZGV2aWNlIGV2ZW50IGZvdW5kICovCisgICAgICAgICAgICAgICAgIGlmIChldmVudC0+ZGV2cGF0aFtjb21tb25dID09ICcvJykgeworICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LT5kZWxheWluZ19zZXFudW0gPSBsb29wX2V2ZW50LT5zZXFudW07CistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDktcmVtb3ZlLWR1cGxpY2F0ZS1pbmNsdWRlLXVjaGFyLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDktcmVtb3ZlLWR1cGxpY2F0ZS1pbmNsdWRlLXVjaGFyLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIxNDM2OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOS1yZW1vdmUtZHVwbGljYXRlLWluY2x1ZGUtdWNoYXIuaC5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIGZmZGY5Y2I2YmEwZDkzMmI4MTkzM2Q4MjRmMjNhODc4YzMxM2E4ZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyMiBGZWIgMjAxNiAwNTo1OTowMSArMDAwMAorU3ViamVjdDogW1BBVENIIDA5LzMxXSByZW1vdmUgZHVwbGljYXRlIGluY2x1ZGUgdWNoYXIuaAorCittaXNzaW5nLmggYWxyZWFkeSBpbmNsdWRlcyBpdAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBzcmMvYmFzaWMvZXNjYXBlLmggfCAxIC0KKyBzcmMvYmFzaWMvdXRmOC5oICAgfCAxIC0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvZXNjYXBlLmggYi9zcmMvYmFzaWMvZXNjYXBlLmgKK2luZGV4IGRlODlmNDNhOC4uOTkyMWNjYmJkIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL2VzY2FwZS5oCisrKysgYi9zcmMvYmFzaWMvZXNjYXBlLmgKK0BAIC0yNCw3ICsyNCw2IEBACisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorICNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPHVjaGFyLmg+CisgCisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisgI2luY2x1ZGUgIm1pc3NpbmcuaCIKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvdXRmOC5oIGIvc3JjL2Jhc2ljL3V0ZjguaAoraW5kZXggYjBhNzQ4NWFlLi5mYTA2ZDI5MDYgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvdXRmOC5oCisrKysgYi9zcmMvYmFzaWMvdXRmOC5oCitAQCAtMjMsNyArMjMsNiBAQAorICNpbmNsdWRlIDxzdGRib29sLmg+CisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorICNpbmNsdWRlIDxzdGRpbnQuaD4KKy0jaW5jbHVkZSA8dWNoYXIuaD4KKyAKKyAjaW5jbHVkZSAibWFjcm8uaCIKKyAjaW5jbHVkZSAibWlzc2luZy5oIgorLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA5LXRlc3QtaGV4ZGVjb2N0LmMtSW5jbHVkZS1taXNzaW5nLmgtZm9ybS1zdHJuZHVwYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOS10ZXN0LWhleGRlY29jdC5jLUluY2x1ZGUtbWlzc2luZy5oLWZvcm0tc3RybmR1cGEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzNjk0ZGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA5LXRlc3QtaGV4ZGVjb2N0LmMtSW5jbHVkZS1taXNzaW5nLmgtZm9ybS1zdHJuZHVwYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLUZyb20gNzVmNGU3ZjE2N2RlNTMzYTE2MGVlMWFmMmEwM2ZiYTRjNWE1ZmZjNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIzIE9jdCAyMDE3IDEyOjMzOjIyIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvMTJdIHRlc3QtaGV4ZGVjb2N0LmM6IEluY2x1ZGUgbWlzc2luZy5oIGZvcm0gc3RybmR1cGEKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBzcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jIGIvc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYwotaW5kZXggZmNhZTQyN2U3Li41ZWI1ZTJlZDcgMTAwNjQ0Ci0tLS0gYS9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jCi0rKysgYi9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jCi1AQCAtMjEsNiArMjEsNyBAQAotICNpbmNsdWRlICJoZXhkZWNvY3QuaCIKLSAjaW5jbHVkZSAibWFjcm8uaCIKLSAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgotIAotIHN0YXRpYyB2b2lkIHRlc3RfaGV4Y2hhcih2b2lkKSB7Ci0gICAgICAgICBhc3NlcnRfc2UoaGV4Y2hhcigweGEpID09ICdhJyk7Ci0tLSAKLTIuMTQuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTAtY2hlY2stZm9yLXVjaGFyLmgtaW4tbWVzb24uYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTAtY2hlY2stZm9yLXVjaGFyLmgtaW4tbWVzb24uYnVpbGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWE0NGI1NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMC1jaGVjay1mb3ItdWNoYXIuaC1pbi1tZXNvbi5idWlsZC5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitGcm9tIGVhNGNhYWExYzZhNmRjNjgyYmIwNDU0OGFiMDVjNWM3M2QwYjQ1ZDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDI2IEZlYiAyMDE4IDE1OjM0OjUyICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMTAvMzFdIGNoZWNrIGZvciB1Y2hhci5oIGluIG1lc29uLmJ1aWxkCisKK1VzZSAjaWYgSEFWRV9VQ0hBUl9IIHRvIGluY2x1ZGUgdWNoYXIuaCBjb25kaXRpb25hbGx5LgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIG1lc29uLmJ1aWxkICAgICAgICAgfCAxICsKKyBzcmMvYmFzaWMvbWlzc2luZy5oIHwgMiArKworIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCA5YzI1MDIyYTQuLjk0YTE2NzEyYiAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTYyMyw2ICs2MjMsNyBAQCBmb3JlYWNoIGhlYWRlciA6IFsnY3J5cHQuaCcsCisgICAgICAgICAgICAgICAgICAgJ3N5cy9hdXh2LmgnLAorICAgICAgICAgICAgICAgICAgICd2YWxncmluZC9tZW1jaGVjay5oJywKKyAgICAgICAgICAgICAgICAgICAndmFsZ3JpbmQvdmFsZ3JpbmQuaCcsCisrICAgICAgICAgICAgICAgICAgJ3VjaGFyLmgnLAorICAgICAgICAgICAgICAgICAgXQorIAorICAgICAgICAgY29uZi5zZXQxMCgnSEFWRV8nICsgaGVhZGVyLnVuZGVyc2NvcmlmeSgpLnRvX3VwcGVyKCksCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKK2luZGV4IDM5YzFmYjcwMC4uODRkNmQ5MTY3IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmcuaAorKysrIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAorQEAgLTM4LDcgKzM4LDkgQEAKKyAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CisgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKysjaWYgSEFWRV9VQ0hBUl9ICisgI2luY2x1ZGUgPHVjaGFyLmg+CisrI2VuZGlmCisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorIAorICNpZiBIQVZFX0FVRElUCistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTAtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEwLWltcGxtZW50LXN5c3RlbWQtc3lzdi1pbnN0YWxsLWZvci1PRS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODgyOGQ2ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTAtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotRnJvbSA1MjcyNmJlOTJlMmI4NDFmNzQ0YTk2YzM3OGNjODcyYWUwMDMzYTJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgNSBTZXAgMjAxNSAwNjozMTo0NyArMDAwMAotU3ViamVjdDogW1BBVENIIDEwLzE5XSBpbXBsbWVudCBzeXN0ZW1kLXN5c3YtaW5zdGFsbCBmb3IgT0UKLQotVXNlIHVwZGF0ZS1yYy5kIGZvciBlbmFibGluZy9kaXNhYmxpbmcgYW5kIHN0YXR1cyBjb21tYW5kCi10byBjaGVjayB0aGUgc3RhdHVzIG9mIHRoZSBzeXN2IHNlcnZpY2UKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04gfCA2ICsrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OIGIvc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTgotaW5kZXggYTUzYTNlNi4uNWQ4NzdiMCAxMDA3NTUKLS0tLSBhL3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04KLSsrKyBiL3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04KLUBAIC0zMCwxNyArMzAsMTcgQEAgY2FzZSAiJDEiIGluCi0gICAgIGVuYWJsZSkKLSAgICAgICAgICMgY2FsbCB0aGUgY29tbWFuZCB0byBlbmFibGUgU3lzViBpbml0IHNjcmlwdCAkTkFNRSBoZXJlCi0gICAgICAgICAjIChjb25zaWRlciBvcHRpb25hbCAkUk9PVCkKLS0gICAgICAgIGVjaG8gIklNUExFTUVOVCBNRTogZW5hYmxpbmcgU3lzViBpbml0LmQgc2NyaXB0ICROQU1FIgotKyAgICAgICAgdXBkYXRlLXJjLmQgLWYgJE5BTUUgZGVmYXVsdHMKLSAgICAgICAgIDs7Ci0gICAgIGRpc2FibGUpCi0gICAgICAgICAjIGNhbGwgdGhlIGNvbW1hbmQgdG8gZGlzYWJsZSBTeXNWIGluaXQgc2NyaXB0ICROQU1FIGhlcmUKLSAgICAgICAgICMgKGNvbnNpZGVyIG9wdGlvbmFsICRST09UKQotLSAgICAgICAgZWNobyAiSU1QTEVNRU5UIE1FOiBkaXNhYmxpbmcgU3lzViBpbml0LmQgc2NyaXB0ICROQU1FIgotKyAgICAgICAgdXBkYXRlLXJjLmQgLWYgJE5BTUUgcmVtb3ZlCi0gICAgICAgICA7OwotICAgICBpcy1lbmFibGVkKQotICAgICAgICAgIyBleGl0IHdpdGggMCBpZiAkTkFNRSBpcyBlbmFibGVkLCBub24temVybyBpZiBpdCBpcyBkaXNhYmxlZAotICAgICAgICAgIyAoY29uc2lkZXIgb3B0aW9uYWwgJFJPT1QpCi0tICAgICAgICBlY2hvICJJTVBMRU1FTlQgTUU6IGNoZWNraW5nIFN5c1YgaW5pdC5kIHNjcmlwdCAkTkFNRSIKLSsgICAgICAgIC9ldGMvaW5pdC5kLyROQU1FIHN0YXR1cwotICAgICAgICAgOzsKLSAgICAgKikKLSAgICAgICAgIHVzYWdlIDs7Ci0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTAtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMC10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDhjODNhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMC10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotRnJvbSA2ZTlkMmJjYWE2Zjg4NmIyMzg0YzFjMzVhMDRlNGViYzE0OGFlYTY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjMgT2N0IDIwMTcgMTI6NDA6MjUgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8xMl0gdGVzdC1zaXplb2YuYzogRGlzYWJsZSB0ZXN0cyBmb3IgbWlzc2luZyB0eXBlZGVmcyBpbgotIG11c2wKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBzcmMvdGVzdC90ZXN0LXNpemVvZi5jIHwgNSArKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMgYi9zcmMvdGVzdC90ZXN0LXNpemVvZi5jCi1pbmRleCAyNjlhZGZkMTguLmJhNzg1NWRmZiAxMDA2NDQKLS0tLSBhL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKLSsrKyBiL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKLUBAIC0xOCw3ICsxOCw2IEBACi0gKioqLwotIAotICNpbmNsdWRlIDxzdGRpby5oPgotLQotICNpbmNsdWRlICJ0aW1lLXV0aWwuaCIKLSAKLSAvKiBQcmludCBpbmZvcm1hdGlvbiBhYm91dCB2YXJpb3VzIHR5cGVzLiBVc2VmdWwgd2hlbiBkaWFnbm9zaW5nCi1AQCAtNDgsOCArNDcsMTAgQEAgaW50IG1haW4odm9pZCkgewotICAgICAgICAgaW5mbyh1bnNpZ25lZCk7Ci0gICAgICAgICBpbmZvKGxvbmcgdW5zaWduZWQpOwotICAgICAgICAgaW5mbyhsb25nIGxvbmcgdW5zaWduZWQpOwotKyNpZmRlZiBfX0dMSUJDX18KLSAgICAgICAgIGluZm8oX19zeXNjYWxsX3Vsb25nX3QpOwotICAgICAgICAgaW5mbyhfX3N5c2NhbGxfc2xvbmdfdCk7Ci0rI2VuZGlmCi0gCi0gICAgICAgICBpbmZvKGZsb2F0KTsKLSAgICAgICAgIGluZm8oZG91YmxlKTsKLUBAIC01OSw3ICs2MCw5IEBAIGludCBtYWluKHZvaWQpIHsKLSAgICAgICAgIGluZm8oc3NpemVfdCk7Ci0gICAgICAgICBpbmZvKHRpbWVfdCk7Ci0gICAgICAgICBpbmZvKHVzZWNfdCk7Ci0rI2lmZGVmIF9fR0xJQkNfXwotICAgICAgICAgaW5mbyhfX3RpbWVfdCk7Ci0rI2VuZGlmCi0gCi0gICAgICAgICBpbmZvKGVudW0gRW51bSk7Ci0gICAgICAgICBpbmZvKGVudW0gQmlnRW51bSk7Ci0tLSAKLTIuMTQuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTEtZG9uLXQtdXNlLWdsaWJjLXNwZWNpZmljLXFzb3J0X3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTEtZG9uLXQtdXNlLWdsaWJjLXNwZWNpZmljLXFzb3J0X3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjZmU4MjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDExLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLUZyb20gMmViNDVmNWEwYThiZmI4YmRjYTA4NDU4N2FkMjhlNTAwMWYzY2M0YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgotRGF0ZTogVGh1LCAxOCBTZXAgMjAxNCAxNToyNDo1NiArMDIwMAotU3ViamVjdDogW1BBVENIIDExLzEyXSBkb24ndCB1c2UgZ2xpYmMtc3BlY2lmaWMgcXNvcnRfcgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHNyYy9od2RiL2h3ZGIuYyAgICAgICAgIHwgMTggKysrKysrKysrKystLS0tLS0tCi0gc3JjL3VkZXYvdWRldmFkbS1od2RiLmMgfCAxNiArKysrKysrKysrLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9od2RiL2h3ZGIuYyBiL3NyYy9od2RiL2h3ZGIuYwotaW5kZXggNzkzMzk4Y2E2Li42NjliMDA4MTggMTAwNjQ0Ci0tLS0gYS9zcmMvaHdkYi9od2RiLmMKLSsrKyBiL3NyYy9od2RiL2h3ZGIuYwotQEAgLTE1MSwxMyArMTUxLDEyIEBAIHN0YXRpYyB2b2lkIHRyaWVfZnJlZShzdHJ1Y3QgdHJpZSAqdHJpZSkgewotIAotIERFRklORV9UUklWSUFMX0NMRUFOVVBfRlVOQyhzdHJ1Y3QgdHJpZSosIHRyaWVfZnJlZSk7Ci0gCi0tc3RhdGljIGludCB0cmllX3ZhbHVlc19jbXAoY29uc3Qgdm9pZCAqdjEsIGNvbnN0IHZvaWQgKnYyLCB2b2lkICphcmcpIHsKLStzdGF0aWMgc3RydWN0IHRyaWUgKnRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZTsKLStzdGF0aWMgaW50IHRyaWVfdmFsdWVzX2NtcChjb25zdCB2b2lkICp2MSwgY29uc3Qgdm9pZCAqdjIpIHsKLSAgICAgICAgIGNvbnN0IHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5ICp2YWwxID0gdjE7Ci0gICAgICAgICBjb25zdCBzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSAqdmFsMiA9IHYyOwotLSAgICAgICAgc3RydWN0IHRyaWUgKnRyaWUgPSBhcmc7Ci0tCi0tICAgICAgICByZXR1cm4gc3RyY21wKHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCi0tICAgICAgICAgICAgICAgICAgICAgIHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDItPmtleV9vZmYpOwotKyAgICAgICAgcmV0dXJuIHN0cmNtcCh0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCi0rICAgICAgICAgICAgICAgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZS0+c3RyaW5ncy0+YnVmICsgdmFsMi0+a2V5X29mZik7Ci0gfQotIAotIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKLUBAIC0xODIsNyArMTgxLDEwIEBAIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVfb2ZmID0gdiwKLSAgICAgICAgICAgICAgICAgfTsKLSAKLS0gICAgICAgICAgICAgICAgdmFsID0geGJzZWFyY2hfcigmc2VhcmNoLCBub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wLCB0cmllKTsKLSsgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gdHJpZTsKLSsgICAgICAgICAgICAgICAgdmFsID0gYnNlYXJjaCgmc2VhcmNoLCBub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wKTsKLSsgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gTlVMTDsKLSsKLSAgICAgICAgICAgICAgICAgaWYgKHZhbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSAyIGlkZW50aWNhbCBwcm9wZXJ0aWVzIG9uIHRoZSBzYW1lIG1hdGNoLXN0cmluZy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgKiBTaW5jZSB3ZSBwcm9jZXNzIGZpbGVzIGluIG9yZGVyLCB3ZSBqdXN0IHJlcGxhY2UgdGhlIHByZXZpb3VzIHZhbHVlLgotQEAgLTIwNyw3ICsyMDksOSBAQCBzdGF0aWMgaW50IHRyaWVfbm9kZV9hZGRfdmFsdWUoc3RydWN0IHRyaWUgKnRyaWUsIHN0cnVjdCB0cmllX25vZGUgKm5vZGUsCi0gICAgICAgICBub2RlLT52YWx1ZXNbbm9kZS0+dmFsdWVzX2NvdW50XS5maWxlX3ByaW9yaXR5ID0gZmlsZV9wcmlvcml0eTsKLSAgICAgICAgIG5vZGUtPnZhbHVlc1tub2RlLT52YWx1ZXNfY291bnRdLmxpbmVfbnVtYmVyID0gbGluZV9udW1iZXI7Ci0gICAgICAgICBub2RlLT52YWx1ZXNfY291bnQrKzsKLS0gICAgICAgIHFzb3J0X3Iobm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCwgdHJpZSk7Ci0rICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSB0cmllOwotKyAgICAgICAgcXNvcnQobm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCk7Ci0rICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSBOVUxMOwotICAgICAgICAgcmV0dXJuIDA7Ci0gfQotIAotZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXZhZG0taHdkYi5jIGIvc3JjL3VkZXYvdWRldmFkbS1od2RiLmMKLWluZGV4IDY5YjBiOTAyNS4uZmJkMjEzMzAwIDEwMDY0NAotLS0tIGEvc3JjL3VkZXYvdWRldmFkbS1od2RiLmMKLSsrKyBiL3NyYy91ZGV2L3VkZXZhZG0taHdkYi5jCi1AQCAtMTI4LDEzICsxMjgsMTMgQEAgc3RhdGljIHZvaWQgdHJpZV9ub2RlX2NsZWFudXAoc3RydWN0IHRyaWVfbm9kZSAqbm9kZSkgewotICAgICAgICAgZnJlZShub2RlKTsKLSB9Ci0gCi0tc3RhdGljIGludCB0cmllX3ZhbHVlc19jbXAoY29uc3Qgdm9pZCAqdjEsIGNvbnN0IHZvaWQgKnYyLCB2b2lkICphcmcpIHsKLStzdGF0aWMgc3RydWN0IHRyaWUgKnRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZTsKLStzdGF0aWMgaW50IHRyaWVfdmFsdWVzX2NtcChjb25zdCB2b2lkICp2MSwgY29uc3Qgdm9pZCAqdjIpIHsKLSAgICAgICAgIGNvbnN0IHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5ICp2YWwxID0gdjE7Ci0gICAgICAgICBjb25zdCBzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSAqdmFsMiA9IHYyOwotLSAgICAgICAgc3RydWN0IHRyaWUgKnRyaWUgPSBhcmc7Ci0gCi0tICAgICAgICByZXR1cm4gc3RyY21wKHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCi0tICAgICAgICAgICAgICAgICAgICAgIHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDItPmtleV9vZmYpOwotKyAgICAgICAgcmV0dXJuIHN0cmNtcCh0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCi0rICAgICAgICAgICAgICAgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZS0+c3RyaW5ncy0+YnVmICsgdmFsMi0+a2V5X29mZik7Ci0gfQotIAotIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKLUBAIC0xNTUsNyArMTU1LDkgQEAgc3RhdGljIGludCB0cmllX25vZGVfYWRkX3ZhbHVlKHN0cnVjdCB0cmllICp0cmllLCBzdHJ1Y3QgdHJpZV9ub2RlICpub2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZV9vZmYgPSB2LAotICAgICAgICAgICAgICAgICB9OwotIAotLSAgICAgICAgICAgICAgICB2YWwgPSB4YnNlYXJjaF9yKCZzZWFyY2gsIG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXAsIHRyaWUpOwotKyAgICAgICAgICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSB0cmllOwotKyAgICAgICAgICAgICAgICB2YWwgPSBic2VhcmNoKCZzZWFyY2gsIG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXApOwotKyAgICAgICAgICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSBOVUxMOwotICAgICAgICAgICAgICAgICBpZiAodmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVwbGFjZSBleGlzdGluZyBlYXJsaWVyIGtleSB3aXRoIG5ldyB2YWx1ZSAqLwotICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC0+dmFsdWVfb2ZmID0gdjsKLUBAIC0xNzIsNyArMTc0LDkgQEAgc3RhdGljIGludCB0cmllX25vZGVfYWRkX3ZhbHVlKHN0cnVjdCB0cmllICp0cmllLCBzdHJ1Y3QgdHJpZV9ub2RlICpub2RlLAotICAgICAgICAgbm9kZS0+dmFsdWVzW25vZGUtPnZhbHVlc19jb3VudF0ua2V5X29mZiA9IGs7Ci0gICAgICAgICBub2RlLT52YWx1ZXNbbm9kZS0+dmFsdWVzX2NvdW50XS52YWx1ZV9vZmYgPSB2OwotICAgICAgICAgbm9kZS0+dmFsdWVzX2NvdW50Kys7Ci0tICAgICAgICBxc29ydF9yKG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXAsIHRyaWUpOwotKyAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gdHJpZTsKLSsgICAgICAgIHFzb3J0KG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXApOwotKyAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gTlVMTDsKLSAgICAgICAgIHJldHVybiAwOwotIH0KLSAKLS0tIAotMi4xNC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMS1uc3MtbXltYWNoaW5lcy1CdWlsZC1jb25kaXRpb25hbGx5LXdoZW4tSEFWRV9NWUhPU1ROLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDExLW5zcy1teW1hY2hpbmVzLUJ1aWxkLWNvbmRpdGlvbmFsbHktd2hlbi1IQVZFX01ZSE9TVE4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwMWFlOTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDExLW5zcy1teW1hY2hpbmVzLUJ1aWxkLWNvbmRpdGlvbmFsbHktd2hlbi1IQVZFX01ZSE9TVE4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIDNmNmY0NTU3OGI4MjhlNDE0ZjUwYzY4MjIzNzUwNzNlNzE3NDIzNmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAxNCBEZWMgMjAxNSAwMDo1MDowMSArMDAwMAotU3ViamVjdDogW1BBVENIIDExLzE5XSBuc3MtbXltYWNoaW5lczogQnVpbGQgY29uZGl0aW9uYWxseSB3aGVuCi0gSEFWRV9NWUhPU1ROQU1FIGlzIHNldAotCi1GaXhlcyBidWlsZCBmYWlsdXJlcyB3aGVuIGJ1aWxkaW5nIHdpdGggLS1kaXNhYmxlLW15aG9zdG5hbWUKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZS5hbSB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCAwMmY0MDE3Li40MjBlMGUwIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtNTE0Niw2ICs1MTQ2LDcgQEAgU1lTVEVNX1VOSVRfQUxJQVNFUyArPSBcCi0gQlVTTkFNRVNfVEFSR0VUX1dBTlRTICs9IFwKLSAJb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmJ1c25hbWUKLSAKLStpZiBIQVZFX01ZSE9TVE5BTUUKLSBsaWJuc3NfbXltYWNoaW5lc19sYV9TT1VSQ0VTID0gXAotIAlzcmMvbnNzLW15bWFjaGluZXMvbnNzLW15bWFjaGluZXMuc3ltIFwKLSAJc3JjL25zcy1teW1hY2hpbmVzL25zcy1teW1hY2hpbmVzLmMKLUBAIC01MTY3LDYgKzUxNjgsNyBAQCByb290bGliX0xUTElCUkFSSUVTICs9IFwKLSAJbGlibnNzX215bWFjaGluZXMubGEKLSAKLSBlbmRpZgotK2VuZGlmCi0gCi0gcG9sa2l0cG9saWN5X2luX2ZpbGVzICs9IFwKLSAJc3JjL21hY2hpbmUvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLnBvbGljeS5pbgotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDExLXNvY2tldC11dGlsLWRvbi10LWZhaWwtaWYtbGliYy1kb2Vzbi10LXN1cHBvcnQtSUROLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDExLXNvY2tldC11dGlsLWRvbi10LWZhaWwtaWYtbGliYy1kb2Vzbi10LXN1cHBvcnQtSUROLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwOTIzZDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTEtc29ja2V0LXV0aWwtZG9uLXQtZmFpbC1pZi1saWJjLWRvZXNuLXQtc3VwcG9ydC1JRE4ucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSA2MGRkNDExZTk3NTZmYzJiMTRjMGUwNjFhZDgwMzc4MmI0YWVlODc0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAyNiBGZWIgMjAxOCAxNTo0NjowNSArMDgwMAorU3ViamVjdDogW1BBVENIIDExLzMxXSBzb2NrZXQtdXRpbDogZG9uJ3QgZmFpbCBpZiBsaWJjIGRvZXNuJ3Qgc3VwcG9ydCBJRE4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMgfCAxMCArKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5jIGIvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMKK2luZGV4IDJjNzBjYWRlMS4uNjdhZWRhZGQ0IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5jCitAQCAtNTAsNiArNTAsMTYgQEAKKyAjaW5jbHVkZSAidXRmOC5oIgorICNpbmNsdWRlICJ1dGlsLmgiCisgCisrLyogRG9uJ3QgZmFpbCBpZiB0aGUgc3RhbmRhcmQgbGlicmFyeQorKyAqIGRvZXNuJ3Qgc3VwcG9ydCBJRE4gKi8KKysjaWZuZGVmIE5JX0lETgorKyNkZWZpbmUgTklfSUROIDAKKysjZW5kaWYKKysKKysjaWZuZGVmIE5JX0lETl9VU0VfU1REM19BU0NJSV9SVUxFUworKyNkZWZpbmUgTklfSUROX1VTRV9TVEQzX0FTQ0lJX1JVTEVTIDAKKysjZW5kaWYKKysKKyAjaWYgRU5BQkxFX0lETgorICMgIGRlZmluZSBJRE5fRkxBR1MgKE5JX0lETnxOSV9JRE5fVVNFX1NURDNfQVNDSUlfUlVMRVMpCisgI2Vsc2UKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMi1kb24tdC1wYXNzLUFUX1NZTUxJTktfTk9GT0xMT1ctZmxhZy10by1mYWNjZXNzYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTItZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTZkYjY1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMi1kb24tdC1wYXNzLUFUX1NZTUxJTktfTk9GT0xMT1ctZmxhZy10by1mYWNjZXNzYXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi1Gcm9tIDk2MjE2MThjNzAxYTJkNWViM2UyNmY0MGM2ODM1NGQ0ZGZiOGY4NzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotRGF0ZTogVHVlLCAxMCBPY3QgMjAxNyAxNDozMzozMCAtMDcwMAotU3ViamVjdDogW1BBVENIIDEyLzEyXSBkb24ndCBwYXNzIEFUX1NZTUxJTktfTk9GT0xMT1cgZmxhZyB0byBmYWNjZXNzYXQoKQotCi1Bdm9pZCB1c2luZyBBVF9TWU1MSU5LX05PRk9MTE9XIGZsYWcuIEl0IGRvZXNuJ3Qgc2VlbSBsaWtlIHRoZSByaWdodAotdGhpbmcgdG8gZG8gYW5kIGl0J3Mgbm90IHBvcnRhYmxlIChub3Qgc3VwcG9ydGVkIGJ5IG11c2wpLiBTZWU6Ci0KLSAgaHR0cDovL2xpc3RzLmxhbmRsZXkubmV0L3BpcGVybWFpbC90b3lib3gtbGFuZGxleS5uZXQvMjAxNC1TZXB0ZW1iZXIvMDAzNjEwLmh0bWwKLSAgaHR0cDovL3d3dy5vcGVud2FsbC5jb20vbGlzdHMvbXVzbC8yMDE1LzAyLzA1LzIKLQotTm90ZSB0aGF0IGxhY2Nlc3MoKSBpcyBuZXZlciBwYXNzaW5nIEFUX0VBQ0NFU1Mgc28gYSBsb3Qgb2YgdGhlCi1kaXNjdXNzaW9uIGluIHRoZSBsaW5rcyBhYm92ZSBkb2Vzbid0IGFwcGx5LiBOb3RlIGFsc28gdGhhdAotKGN1cnJlbnRseSkgYWxsIHN5c3RlbWQgY2FsbGVycyBvZiBsYWNjZXNzKCkgcGFzcyBtb2RlIGFzIEZfT0ssIHNvCi1vbmx5IGNoZWNrIGZvciBleGlzdGVuY2Ugb2YgYSBmaWxlLCBub3QgYWNjZXNzIHBlcm1pc3Npb25zLgotVGhlcmVmb3JlLCBpbiB0aGlzIGNhc2UsIHRoZSBvbmx5IGRpc3RpY3Rpb24gYmV0d2VlbiBmYWNjZXNzYXQoKQotd2l0aCAoZmxhZyA9PSAwKSBhbmQgKGZsYWcgPT0gQVRfU1lNTElOS19OT0ZPTExPVykgaXMgdGhlIGJlaGF2aW91cgotZm9yIGJyb2tlbiBzeW1saW5rczsgbGFjY2VzcygpIG9uIGEgYnJva2VuIHN5bWxpbmsgd2lsbCBzdWNjZWVkIHdpdGgKLShmbGFnID09IEFUX1NZTUxJTktfTk9GT0xMT1cpIGFuZCBmYWlsIChmbGFnID09IDApLgotCi1UaGUgbGFjY2VzcygpIG1hY3JvcyB3YXMgYWRkZWQgdG8gc3lzdGVtZCBzb21lIHRpbWUgYWdvIGFuZCBpdCdzIG5vdAotY2xlYXIgaWYgb3Igd2h5IGl0IG5lZWRzIHRvIHJldHVybiBzdWNjZXNzIGZvciBicm9rZW4gc3ltbGlua3MuIE1heWJlCi1qdXN0IGhpc3RvcmljYWwgYW5kIG5vdCBhY3R1YWxseSBuZWNlc3Nhcnkgb3IgZGVzaXJlZCBiZWhhdmlvdXI/Ci0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gc3JjL2Jhc2ljL2ZzLXV0aWwuaCAgICAgICAgICB8IDIyICsrKysrKysrKysrKysrKysrKysrKy0KLSBzcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jIHwgIDYgKysrLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2ZzLXV0aWwuaCBiL3NyYy9iYXNpYy9mcy11dGlsLmgKLWluZGV4IDA5NGFjZjE3OS4uY2RiYzBhZTcyIDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL2ZzLXV0aWwuaAotKysrIGIvc3JjL2Jhc2ljL2ZzLXV0aWwuaAotQEAgLTQ4LDcgKzQ4LDI3IEBAIGludCBmY2htb2RfdW1hc2soaW50IGZkLCBtb2RlX3QgbW9kZSk7Ci0gCi0gaW50IGZkX3dhcm5fcGVybWlzc2lvbnMoY29uc3QgY2hhciAqcGF0aCwgaW50IGZkKTsKLSAKLS0jZGVmaW5lIGxhY2Nlc3MocGF0aCwgbW9kZSkgZmFjY2Vzc2F0KEFUX0ZEQ1dELCAocGF0aCksIChtb2RlKSwgQVRfU1lNTElOS19OT0ZPTExPVykKLSsvKgotKyAgIEF2b2lkIHVzaW5nIEFUX1NZTUxJTktfTk9GT0xMT1cgZmxhZy4gSXQgZG9lc24ndCBzZWVtIGxpa2UgdGhlIHJpZ2h0IHRoaW5nIHRvCi0rICAgZG8gYW5kIGl0J3Mgbm90IHBvcnRhYmxlIChub3Qgc3VwcG9ydGVkIGJ5IG11c2wpLiBTZWU6Ci0rCi0rICAgICBodHRwOi8vbGlzdHMubGFuZGxleS5uZXQvcGlwZXJtYWlsL3RveWJveC1sYW5kbGV5Lm5ldC8yMDE0LVNlcHRlbWJlci8wMDM2MTAuaHRtbAotKyAgICAgaHR0cDovL3d3dy5vcGVud2FsbC5jb20vbGlzdHMvbXVzbC8yMDE1LzAyLzA1LzIKLSsKLSsgICBOb3RlIHRoYXQgbGFjY2VzcygpIGlzIG5ldmVyIHBhc3NpbmcgQVRfRUFDQ0VTUyBzbyBhIGxvdCBvZiB0aGUgZGlzY3Vzc2lvbiBpbgotKyAgIHRoZSBsaW5rcyBhYm92ZSBkb2Vzbid0IGFwcGx5LiBOb3RlIGFsc28gdGhhdCAoY3VycmVudGx5KSBhbGwgc3lzdGVtZCBjYWxsZXJzCi0rICAgb2YgbGFjY2VzcygpIHBhc3MgbW9kZSBhcyBGX09LLCBzbyBvbmx5IGNoZWNrIGZvciBleGlzdGVuY2Ugb2YgYSBmaWxlLCBub3QKLSsgICBhY2Nlc3MgcGVybWlzc2lvbnMuIFRoZXJlZm9yZSwgaW4gdGhpcyBjYXNlLCB0aGUgb25seSBkaXN0aWN0aW9uIGJldHdlZW4KLSsgICBmYWNjZXNzYXQoKSB3aXRoIChmbGFnID09IDApIGFuZCAoZmxhZyA9PSBBVF9TWU1MSU5LX05PRk9MTE9XKSBpcyB0aGUKLSsgICBiZWhhdmlvdXIgZm9yIGJyb2tlbiBzeW1saW5rczsgbGFjY2VzcygpIG9uIGEgYnJva2VuIHN5bWxpbmsgd2lsbCBzdWNjZWVkCi0rICAgd2l0aCAoZmxhZyA9PSBBVF9TWU1MSU5LX05PRk9MTE9XKSBhbmQgZmFpbCAoZmxhZyA9PSAwKS4KLSsKLSsgICBUaGUgbGFjY2VzcygpIG1hY3JvcyB3YXMgYWRkZWQgdG8gc3lzdGVtZCBzb21lIHRpbWUgYWdvIGFuZCBpdCdzIG5vdCBjbGVhciBpZgotKyAgIG9yIHdoeSBpdCBuZWVkcyB0byByZXR1cm4gc3VjY2VzcyBmb3IgYnJva2VuIHN5bWxpbmtzLiBNYXliZSBqdXN0IGhpc3RvcmljYWwKLSsgICBhbmQgbm90IGFjdHVhbGx5IG5lY2Vzc2FyeSBvciBkZXNpcmVkIGJlaGF2aW91cj8KLSsqLwotKwotKyNkZWZpbmUgbGFjY2VzcyhwYXRoLCBtb2RlKSBmYWNjZXNzYXQoQVRfRkRDV0QsIChwYXRoKSwgKG1vZGUpLCAwKQotIAotIGludCB0b3VjaF9maWxlKGNvbnN0IGNoYXIgKnBhdGgsIGJvb2wgcGFyZW50cywgdXNlY190IHN0YW1wLCB1aWRfdCB1aWQsIGdpZF90IGdpZCwgbW9kZV90IG1vZGUpOwotIGludCB0b3VjaChjb25zdCBjaGFyICpwYXRoKTsKLWRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jIGIvc3JjL3NoYXJlZC9iYXNlLWZpbGVzeXN0ZW0uYwotaW5kZXggOTAzYTE4Nzg2Li4yZjYwNTJlZTcgMTAwNjQ0Ci0tLS0gYS9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jCi0rKysgYi9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jCi1AQCAtNzAsNyArNzAsNyBAQCBpbnQgYmFzZV9maWxlc3lzdGVtX2NyZWF0ZShjb25zdCBjaGFyICpyb290LCB1aWRfdCB1aWQsIGdpZF90IGdpZCkgewotICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2Vycm9yX2Vycm5vKGVycm5vLCAiRmFpbGVkIHRvIG9wZW4gcm9vdCBmaWxlIHN5c3RlbTogJW0iKTsKLSAKLSAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBFTEVNRU5UU09GKHRhYmxlKTsgaSArKykgewotLSAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCB0YWJsZVtpXS5kaXIsIEZfT0ssIEFUX1NZTUxJTktfTk9GT0xMT1cpID49IDApCi0rICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHRhYmxlW2ldLmRpciwgRl9PSywgMCkgPj0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAKLSAgICAgICAgICAgICAgICAgaWYgKHRhYmxlW2ldLnRhcmdldCkgewotQEAgLTc4LDcgKzc4LDcgQEAgaW50IGJhc2VfZmlsZXN5c3RlbV9jcmVhdGUoY29uc3QgY2hhciAqcm9vdCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKLSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjaGVjayBpZiBvbmUgb2YgdGhlIHRhcmdldHMgZXhpc3RzICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgTlVMU1RSX0ZPUkVBQ0gocywgdGFibGVbaV0udGFyZ2V0KSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCBzLCBGX09LLCBBVF9TWU1MSU5LX05PRk9MTE9XKSA8IDApCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCBzLCBGX09LLCAwKSA8IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY2hlY2sgaWYgYSBzcGVjaWZpYyBmaWxlIGV4aXN0cyBhdCB0aGUgdGFyZ2V0IHBhdGggKi8KLUBAIC04OSw3ICs4OSw3IEBAIGludCBiYXNlX2ZpbGVzeXN0ZW1fY3JlYXRlKGNvbnN0IGNoYXIgKnJvb3QsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX29vbSgpOwotIAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCBwLCBGX09LLCBBVF9TWU1MSU5LX05PRk9MTE9XKSA8IDApCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHAsIEZfT0ssIDApIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAKLS0tIAotMi4xNC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMi1ydWxlcy13YXRjaC1tZXRhZGF0YS1jaGFuZ2VzLWluLWlkZS1kZXZpY2VzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEyLXJ1bGVzLXdhdGNoLW1ldGFkYXRhLWNoYW5nZXMtaW4taWRlLWRldmljZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzIwNzg2MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMi1ydWxlcy13YXRjaC1tZXRhZGF0YS1jaGFuZ2VzLWluLWlkZS1kZXZpY2VzLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gNDA2YTRjODY5MjMxNmU4YzdlMTRjNzhmOWE4MDI2ODliZTMwNGE5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMTcgTm92IDIwMTcgMDk6NDY6MDAgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxMi8zMV0gcnVsZXM6IHdhdGNoIG1ldGFkYXRhIGNoYW5nZXMgaW4gaWRlIGRldmljZXMKKworRm9ybWF0dGluZyBJREUgc3RvcmFnZSBkb2VzIG5vdCB0cmlnZ2VyICJjaGFuZ2UiIHVldmVudHMuIEFzIGEgcmVzdWx0CitjbGllbnRzIHVzaW5nIHVkZXYgQVBJIGRvbid0IGdldCBhbnkgdXBkYXRlcyBhZnRlcndhcmRzIGFuZCBnZXQgb3V0ZGF0ZWQKK2luZm9ybWF0aW9uIGFib3V0IHRoZSBkZXZpY2UuCisuLi4KK3Jvb3RAcWVtdXg4Ni02NDp+IyBta2ZzLmV4dDQgLUYgL2Rldi9oZGExCitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggMjYyMTQ0IDRrIGJsb2NrcyBhbmQgNjU1MzYgaW5vZGVzCitGaWxlc3lzdGVtIFVVSUQ6IDk4NzkxZWIyLTJiZjMtNDdhZC1iNGQ4LTRjZjdlOTE0ZWVlMgorCityb290QHFlbXV4ODYtNjQ6fiMgbHMgL2Rldi9kaXNrL2J5LXV1aWQvOTg3OTFlYjItMmJmMy00N2FkLWI0ZDgtNGNmN2U5MTRlZWUyCitsczogY2Fubm90IGFjY2VzcyAnL2Rldi9kaXNrL2J5LXV1aWQvOTg3OTFlYjItMmJmMy00N2FkLWI0ZDgtNGNmN2U5MTRlZWUyJzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorLi4uCitJbmNsdWRlIGhkKiBpbiBhIG1hdGNoIGZvciB3YXRjaCBvcHRpb24gYXNzaWdubWVudC4KKworVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQKKworcWVtdSBieSBkZWZhdWx0IGVtdWxhdGVzIElERSBhbmQgdGhlIGxpbnV4LXlvY3RvIGtlcm5lbChzKSB1c2UKK0NPTkZJR19JREUgaW5zdGVhZCBvZiB0aGUgbW9yZSBtb2Rlcm4gbGlic2F0YSwgc28gZGlza3MgYXBwZWFyIGFzCisvZGV2L2hkKi4gQSBzaW1pbGFyIHBhdGNoIHJlamVjdGVkIGJ5IHVwc3RyZWFtIGJlY2F1c2UgQ09ORklHX0lERQoraXMgZGVwcmVjYXRlZC4KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgcnVsZXMvNjAtYmxvY2sucnVsZXMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9ydWxlcy82MC1ibG9jay5ydWxlcyBiL3J1bGVzLzYwLWJsb2NrLnJ1bGVzCitpbmRleCAzNDNmYzA2ZjguLmI1MjM3ZGFjNCAxMDA2NDQKKy0tLSBhL3J1bGVzLzYwLWJsb2NrLnJ1bGVzCisrKysgYi9ydWxlcy82MC1ibG9jay5ydWxlcworQEAgLTgsNCArOCw0IEBAIEFDVElPTj09ImFkZCIsIFNVQlNZU1RFTT09Im1vZHVsZSIsIEtFUk5FTD09ImJsb2NrIiwgQVRUUntwYXJhbWV0ZXJzL2V2ZW50c19kZmxfCisgQUNUSU9OPT0iY2hhbmdlIiwgU1VCU1lTVEVNPT0ic2NzaSIsIEVOVntERVZUWVBFfT09InNjc2lfZGV2aWNlIiwgVEVTVD09ImJsb2NrIiwgQVRUUntibG9jay8qL3VldmVudH09ImNoYW5nZSIKKyAKKyAjIHdhdGNoIG1ldGFkYXRhIGNoYW5nZXMsIGNhdXNlZCBieSB0b29scyBjbG9zaW5nIHRoZSBkZXZpY2Ugbm9kZSB3aGljaCB3YXMgb3BlbmVkIGZvciB3cml0aW5nCistQUNUSU9OIT0icmVtb3ZlIiwgU1VCU1lTVEVNPT0iYmxvY2siLCBLRVJORUw9PSJsb29wKnxudm1lKnxzZCp8dmQqfHh2ZCp8cG1lbSp8bW1jYmxrKiIsIE9QVElPTlMrPSJ3YXRjaCIKKytBQ1RJT04hPSJyZW1vdmUiLCBTVUJTWVNURU09PSJibG9jayIsIEtFUk5FTD09Imxvb3AqfG52bWUqfHNkKnx2ZCp8eHZkKnxwbWVtKnxtbWNibGsqfGhkKiIsIE9QVElPTlMrPSJ3YXRjaCIKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMi1ydWxlcy13aGl0ZWxpc3QtaGQtZGV2aWNlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMi1ydWxlcy13aGl0ZWxpc3QtaGQtZGV2aWNlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWIzODBjZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTItcnVsZXMtd2hpdGVsaXN0LWhkLWRldmljZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIGFiNWEyNzA0MDEzM2Y3Y2RmMDYyYWM4Y2ZlYjk0ZTA4MWQzNTY3YjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCA5IE5vdiAyMDE2IDE5OjQxOjEzIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvMTRdIHJ1bGVzOiB3aGl0ZWxpc3QgaGQqIGRldmljZXMKLQotcWVtdSBieSBkZWZhdWx0IGVtdWxhdGVzIElERSBhbmQgdGhlIGxpbnV4LXlvY3RvIGtlcm5lbChzKSB1c2UKLUNPTkZJR19JREUgaW5zdGVhZCBvZiB0aGUgbW9yZSBtb2Rlcm4gbGlic2F0YSwgc28gZGlza3MgYXBwZWFyIGFzCi0vZGV2L2hkKi4gUGF0Y2ggcmVqZWN0ZWQgdXBzdHJlYW0gYmVjYXVzZSBDT05GSUdfSURFIGlzIGRlcHJlY2F0ZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogRGVuaWVkIFtodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL3B1bGwvMTI3Nl0KLQotU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotLS0tCi0gcnVsZXMvNjAtcGVyc2lzdGVudC1zdG9yYWdlLnJ1bGVzIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcnVsZXMvNjAtcGVyc2lzdGVudC1zdG9yYWdlLnJ1bGVzIGIvcnVsZXMvNjAtcGVyc2lzdGVudC1zdG9yYWdlLnJ1bGVzCi1pbmRleCBkMjc0NWY2NWYuLjYzZjQ3MmJlOCAxMDA2NDQKLS0tLSBhL3J1bGVzLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcwotKysrIGIvcnVsZXMvNjAtcGVyc2lzdGVudC1zdG9yYWdlLnJ1bGVzCi1AQCAtNyw3ICs3LDcgQEAgQUNUSU9OPT0icmVtb3ZlIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKLSBFTlZ7VURFVl9ESVNBQkxFX1BFUlNJU1RFTlRfU1RPUkFHRV9SVUxFU19GTEFHfT09IjEiLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgotIAotIFNVQlNZU1RFTSE9ImJsb2NrIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKLS1LRVJORUwhPSJsb29wKnxtbWNibGsqWzAtOV18bXNibGsqWzAtOV18bXNwYmxrKlswLTldfG52bWUqfHNkKnxzcip8dmQqfHh2ZCp8YmNhY2hlKnxjY2lzcyp8ZGFzZCp8dWJkKnxzY20qfHBtZW0qfG5iZCoiLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgotK0tFUk5FTCE9Imxvb3AqfG1tY2JsaypbMC05XXxtc2JsaypbMC05XXxtc3BibGsqWzAtOV18bnZtZSp8c2QqfHNyKnx2ZCp8eHZkKnxiY2FjaGUqfGNjaXNzKnxkYXNkKnx1YmQqfHNjbSp8cG1lbSp8bmJkKnxoZCoiLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgotIAotICMgaWdub3JlIHBhcnRpdGlvbnMgdGhhdCBzcGFuIHRoZSBlbnRpcmUgZGlzawotIFRFU1Q9PSJ3aG9sZV9kaXNrIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMy1NYWtlLXJvb3Qtcy1ob21lLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTMtTWFrZS1yb290LXMtaG9tZS1kaXJlY3RvcnktY29uZmlndXJhYmxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWViYmZiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMy1NYWtlLXJvb3Qtcy1ob21lLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNTUgKzAsMCBAQAotRnJvbSA0NzllMWY0YWEyYjlmMWM5MTFhNGQwZGQxOGUyMjJkMjQxYTk3OGVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgOSBOb3YgMjAxNiAyMDozNTozMCAtMDgwMAotU3ViamVjdDogW1BBVENIIDQyLzQ4XSBNYWtlIHJvb3QncyBob21lIGRpcmVjdG9yeSBjb25maWd1cmFibGUKLQotT3BlbkVtYmVkZGVkIGhhcyBhIGNvbmZpZ3VyYWJsZSBob21lIGRpcmVjdG9yeSBmb3Igcm9vdC4gQWxsb3cKLXN5c3RlbWQgdG8gYmUgYnVpbHQgdXNpbmcgaXRzIGlkZWEgb2Ygd2hhdCByb290J3MgaG9tZSBkaXJlY3RvcnkKLXNob3VsZCBiZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQKLVVwc3RyZWFtIHdhbnRzIHRvIGhhdmUgYSB1bmlmaWVkIGhpZXJhcmNoeSB3aGVyZSBldmVyeW9uZSBpcwotdXNpbmcgdGhlIHNhbWUgcm9vdCBmb2xkZXIuCi1odHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL2lzc3Vlcy81NDEKLQotU2lnbmVkLW9mZi1ieTogRGFuIE1jR3JlZ29yIDxkYW4ubWNncmVnb3JAdXNhc2suY2E+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0tLS0KLSBNYWtlZmlsZS5hbSAgICAgICAgICAgICAgICB8IDIgKysKLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICB8IDcgKysrKysrKwotIHNyYy9iYXNpYy91c2VyLXV0aWwuYyAgICAgIHwgNCArKy0tCi0gc3JjL25zcGF3bi9uc3Bhd24uYyAgICAgICAgfCA0ICsrLS0KLSB1bml0cy9lbWVyZ2VuY3kuc2VydmljZS5pbiB8IDQgKystLQotIHVuaXRzL3Jlc2N1ZS5zZXJ2aWNlLmluICAgIHwgNCArKy0tCi0gNiBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggMWJjZDkzMmMyLi5jMmI0YTk5ZDIgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0yMjYsNiArMjI2LDcgQEAgQU1fQ1BQRkxBR1MgPSBcCi0gCS1ETElCRElSPVwiJChsaWJkaXIpXCIgXAotIAktRFJPT1RMSUJESVI9XCIkKHJvb3RsaWJkaXIpXCIgXAotIAktRFJPT1RMSUJFWEVDRElSPVwiJChyb290bGliZXhlY2RpcilcIiBcCi0rCS1EUk9PVEhPTUVESVI9XCIkKHJvb3Rob21lZGlyKVwiIFwKLSAJLUkgJCh0b3Bfc3JjZGlyKS9zcmMgXAotIAktSSAkKHRvcF9idWlsZGRpcikvc3JjL2Jhc2ljIFwKLSAJLUkgJCh0b3Bfc3JjZGlyKS9zcmMvYmFzaWMgXAotQEAgLTYzNTYsNiArNjM1Nyw3IEBAIHN1YnN0aXR1dGlvbnMgPSBcCi0gICAgICAgICd8cm9vdGxpYmRpcj0kKHJvb3RsaWJkaXIpfCcgXAotICAgICAgICAnfHJvb3RsaWJleGVjZGlyPSQocm9vdGxpYmV4ZWNkaXIpfCcgXAotICAgICAgICAnfHJvb3RiaW5kaXI9JChyb290YmluZGlyKXwnIFwKLSsgICAgICAgJ3xyb290aG9tZWRpcj0kKHJvb3Rob21lZGlyKXwnIFwKLSAgICAgICAgJ3xiaW5kaXI9JChiaW5kaXIpfCcgXAotICAgICAgICAnfFNZU1RFTUNUTD0kKHJvb3RiaW5kaXIpL3N5c3RlbWN0bHwnIFwKLSAgICAgICAgJ3xTWVNURU1EX05PVElGWT0kKHJvb3RiaW5kaXIpL3N5c3RlbWQtbm90aWZ5fCcgXAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMDM1NGZmZTZhLi5iNTNjYTFmMWEgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE2NDEsNiArMTY0MSwxMSBAQCBBQ19BUkdfV0lUSChbcm9vdGxpYmRpcl0sCi0gICAgICAgICBbd2l0aF9yb290bGliZGlyPSR7bGliZGlyfV0pCi0gQVhfTk9STUFMSVpFX1BBVEgoW3dpdGhfcm9vdGxpYmRpcl0pCi0gCi0rQUNfQVJHX1dJVEgoW3Jvb3Rob21lZGlyXSwKLSsgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtcm9vdGhvbWVkaXI9RElSXSwgW0hvbWUgZGlyZWN0b3J5IGZvciB0aGUgcm9vdCB1c2VyXSksCi0rICAgICAgICBbXSwKLSsgICAgICAgIFt3aXRoX3Jvb3Rob21lZGlyPS9yb290XSkKLSsKLSBBQ19BUkdfV0lUSChbcGFtbGliZGlyXSwKLSAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtcGFtbGliZGlyPURJUl0sIFtkaXJlY3RvcnkgZm9yIFBBTSBtb2R1bGVzXSksCi0gICAgICAgICBbXSwKLUBAIC0xNzMzLDYgKzE3MzgsNyBAQCBBQ19TVUJTVChbcGFtY29uZmRpcl0sIFskd2l0aF9wYW1jb25mZGlyXSkKLSBBQ19TVUJTVChbcnBtbWFjcm9zZGlyXSwgWyR3aXRoX3JwbW1hY3Jvc2Rpcl0pCi0gQUNfU1VCU1QoW3Jvb3RwcmVmaXhdLCBbJHdpdGhfcm9vdHByZWZpeF0pCi0gQUNfU1VCU1QoW3Jvb3RsaWJkaXJdLCBbJHdpdGhfcm9vdGxpYmRpcl0pCi0rQUNfU1VCU1QoW3Jvb3Rob21lZGlyXSwgWyR3aXRoX3Jvb3Rob21lZGlyXSkKLSAKLSBBQ19DT05GSUdfRklMRVMoWwotICAgICAgICAgTWFrZWZpbGUKLUBAIC0xODI5LDYgKzE4MzUsNyBAQCBBQ19NU0dfUkVTVUxUKFsKLSAgICAgICAgIGluY2x1ZGVkaXI6ICAgICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfQotICAgICAgICAgbGliIGRpcjogICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0KLSAgICAgICAgIHJvb3RsaWIgZGlyOiAgICAgICAgICAgICAgICAgICAgICAgJHt3aXRoX3Jvb3RsaWJkaXJ9Ci0rICAgICAgICByb290IGhvbWUgZGlyOiAgICAgICAgICAgICAgICAgICAgICR7d2l0aF9yb290aG9tZWRpcn0KLSAgICAgICAgIFN5c1YgaW5pdCBzY3JpcHRzOiAgICAgICAgICAgICAgICAgJHtTWVNURU1fU1lTVklOSVRfUEFUSH0KLSAgICAgICAgIFN5c1YgcmM/LmQgZGlyZWN0b3JpZXM6ICAgICAgICAgICAgJHtTWVNURU1fU1lTVlJDTkRfUEFUSH0KLSAgICAgICAgIGJ1aWxkIFB5dGhvbjogICAgICAgICAgICAgICAgICAgICAgJHtQWVRIT059Ci1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3VzZXItdXRpbC5jIGIvc3JjL2Jhc2ljL3VzZXItdXRpbC5jCi1pbmRleCBjNjE5ZGFkNTIuLjY2MjY4MmFkZiAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy91c2VyLXV0aWwuYwotKysrIGIvc3JjL2Jhc2ljL3VzZXItdXRpbC5jCi1AQCAtMTI5LDcgKzEyOSw3IEBAIGludCBnZXRfdXNlcl9jcmVkcygKLSAgICAgICAgICAgICAgICAgICAgICAgICAqZ2lkID0gMDsKLSAKLSAgICAgICAgICAgICAgICAgaWYgKGhvbWUpCi0tICAgICAgICAgICAgICAgICAgICAgICAgKmhvbWUgPSAiL3Jvb3QiOwotKyAgICAgICAgICAgICAgICAgICAgICAgICpob21lID0gUk9PVEhPTUVESVI7Ci0gCi0gICAgICAgICAgICAgICAgIGlmIChzaGVsbCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAqc2hlbGwgPSAiL2Jpbi9zaCI7Ci1AQCAtMzg5LDcgKzM4OSw3IEBAIGludCBnZXRfaG9tZV9kaXIoY2hhciAqKl9oKSB7Ci0gICAgICAgICAvKiBIYXJkY29kZSBob21lIGRpcmVjdG9yeSBmb3Igcm9vdCB0byBhdm9pZCBOU1MgKi8KLSAgICAgICAgIHUgPSBnZXR1aWQoKTsKLSAgICAgICAgIGlmICh1ID09IDApIHsKLS0gICAgICAgICAgICAgICAgaCA9IHN0cmR1cCgiL3Jvb3QiKTsKLSsgICAgICAgICAgICAgICAgaCA9IHN0cmR1cChST09USE9NRURJUik7Ci0gICAgICAgICAgICAgICAgIGlmICghaCkKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKLSAKLWRpZmYgLS1naXQgYS9zcmMvbnNwYXduL25zcGF3bi5jIGIvc3JjL25zcGF3bi9uc3Bhd24uYwotaW5kZXggOGE1ZmVkZDRiLi43YjAxZWMwNzggMTAwNjQ0Ci0tLS0gYS9zcmMvbnNwYXduL25zcGF3bi5jCi0rKysgYi9zcmMvbnNwYXduL25zcGF3bi5jCi1AQCAtMjI5MSw3ICsyMjkxLDcgQEAgc3RhdGljIGludCBpbm5lcl9jaGlsZCgKLSAgICAgICAgIGlmIChlbnZwW25fZW52XSkKLSAgICAgICAgICAgICAgICAgbl9lbnYrKzsKLSAKLS0gICAgICAgIGlmICgoYXNwcmludGYoKGNoYXIqKikoZW52cCArIG5fZW52KyspLCAiSE9NRT0lcyIsIGhvbWUgPyBob21lOiAiL3Jvb3QiKSA8IDApIHx8Ci0rICAgICAgICBpZiAoKGFzcHJpbnRmKChjaGFyKiopKGVudnAgKyBuX2VudisrKSwgIkhPTUU9JXMiLCBob21lID8gaG9tZTogUk9PVEhPTUVESVIpIDwgMCkgfHwKLSAgICAgICAgICAgICAoYXNwcmludGYoKGNoYXIqKikoZW52cCArIG5fZW52KyspLCAiVVNFUj0lcyIsIGFyZ191c2VyID8gYXJnX3VzZXIgOiAicm9vdCIpIDwgMCkgfHwKLSAgICAgICAgICAgICAoYXNwcmludGYoKGNoYXIqKikoZW52cCArIG5fZW52KyspLCAiTE9HTkFNRT0lcyIsIGFyZ191c2VyID8gYXJnX3VzZXIgOiAicm9vdCIpIDwgMCkpCi0gICAgICAgICAgICAgICAgIHJldHVybiBsb2dfb29tKCk7Ci1AQCAtMjM3Myw3ICsyMzczLDcgQEAgc3RhdGljIGludCBpbm5lcl9jaGlsZCgKLSAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgIGlmICghYXJnX2NoZGlyKQotICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElmIHdlIGNhbm5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSwgd2UnbGwgZW5kIHVwIGluIC8sIHRoYXQgaXMgZXhwZWN0ZWQuICovCi0tICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpIGNoZGlyKGhvbWUgPzogIi9yb290Iik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpIGNoZGlyKGhvbWUgPzogUk9PVEhPTUVESVIpOwotIAotICAgICAgICAgICAgICAgICBleGVjbGUoIi9iaW4vYmFzaCIsICItYmFzaCIsIE5VTEwsIGVudl91c2UpOwotICAgICAgICAgICAgICAgICBleGVjbGUoIi9iaW4vc2giLCAiLXNoIiwgTlVMTCwgZW52X3VzZSk7Ci1kaWZmIC0tZ2l0IGEvdW5pdHMvZW1lcmdlbmN5LnNlcnZpY2UuaW4gYi91bml0cy9lbWVyZ2VuY3kuc2VydmljZS5pbgotaW5kZXggZTllYjIzOGI5Li4zMjU4OGU0OGEgMTAwNjQ0Ci0tLS0gYS91bml0cy9lbWVyZ2VuY3kuc2VydmljZS5pbgotKysrIGIvdW5pdHMvZW1lcmdlbmN5LnNlcnZpY2UuaW4KLUBAIC0xNSw4ICsxNSw4IEBAIENvbmZsaWN0cz1zeXNsb2cuc29ja2V0Ci0gQmVmb3JlPXNodXRkb3duLnRhcmdldAotIAotIFtTZXJ2aWNlXQotLUVudmlyb25tZW50PUhPTUU9L3Jvb3QKLS1Xb3JraW5nRGlyZWN0b3J5PS0vcm9vdAotK0Vudmlyb25tZW50PUhPTUU9QHJvb3Rob21lZGlyQAotK1dvcmtpbmdEaXJlY3Rvcnk9LUByb290aG9tZWRpckAKLSBFeGVjU3RhcnQ9LUByb290bGliZXhlY2RpckAvc3lzdGVtZC1zdWxvZ2luLXNoZWxsIGVtZXJnZW5jeQotIFR5cGU9aWRsZQotIFN0YW5kYXJkSW5wdXQ9dHR5LWZvcmNlCi1kaWZmIC0tZ2l0IGEvdW5pdHMvcmVzY3VlLnNlcnZpY2UuaW4gYi91bml0cy9yZXNjdWUuc2VydmljZS5pbgotaW5kZXggNGFiNjZmNDg1Li5iZDk4OThmMmMgMTAwNjQ0Ci0tLS0gYS91bml0cy9yZXNjdWUuc2VydmljZS5pbgotKysrIGIvdW5pdHMvcmVzY3VlLnNlcnZpY2UuaW4KLUBAIC0xNCw4ICsxNCw4IEBAIEFmdGVyPXN5c2luaXQudGFyZ2V0IHBseW1vdXRoLXN0YXJ0LnNlcnZpY2UKLSBCZWZvcmU9c2h1dGRvd24udGFyZ2V0Ci0gCi0gW1NlcnZpY2VdCi0tRW52aXJvbm1lbnQ9SE9NRT0vcm9vdAotLVdvcmtpbmdEaXJlY3Rvcnk9LS9yb290Ci0rRW52aXJvbm1lbnQ9SE9NRT1Acm9vdGhvbWVkaXJACi0rV29ya2luZ0RpcmVjdG9yeT0tQHJvb3Rob21lZGlyQAotIEV4ZWNTdGFydD0tQHJvb3RsaWJleGVjZGlyQC9zeXN0ZW1kLXN1bG9naW4tc2hlbGwgcmVzY3VlCi0gVHlwZT1pZGxlCi0gU3RhbmRhcmRJbnB1dD10dHktZm9yY2UKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMy1hZGQtZmFsbGJhY2stcGFyc2VfcHJpbnRmX2Zvcm1hdC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMy1hZGQtZmFsbGJhY2stcGFyc2VfcHJpbnRmX2Zvcm1hdC1pbXBsZW1lbnRhdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzkyNzhkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEzLWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoCkBAIC0wLDAgKzEsNDMxIEBACitGcm9tIDU4MGQyM2NmMGIzMmUzNmE4ZmI5NjcxMDMzNmZmZWY0MzJiM2M3Y2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDI4IEZlYiAyMDE4IDIxOjEwOjU4IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGFkZCBmYWxsYmFjayBwYXJzZV9wcmludGZfZm9ybWF0IGltcGxlbWVudGF0aW9uCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBtZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKKyBzcmMvYmFzaWMvbWVzb24uYnVpbGQgICAgICAgICAgIHwgICA0ICsKKyBzcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jIHwgMjczICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBzcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oIHwgIDU3ICsrKysrKysrKworIHNyYy9iYXNpYy9zdGRpby11dGlsLmggICAgICAgICAgfCAgIDIgKy0KKyBzcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYyAgICAgIHwgICAyICstCisgNiBmaWxlcyBjaGFuZ2VkLCAzMzcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCA5NGExNjcxMmIuLjRlYWJhYWZlOCAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTYyMCw2ICs2MjAsNyBAQCBmb3JlYWNoIGhlYWRlciA6IFsnY3J5cHQuaCcsCisgICAgICAgICAgICAgICAgICAgJ2xpbnV4L2J0cmZzLmgnLAorICAgICAgICAgICAgICAgICAgICdsaW51eC9tZW1mZC5oJywKKyAgICAgICAgICAgICAgICAgICAnbGludXgvdm1fc29ja2V0cy5oJywKKysgICAgICAgICAgICAgICAgICAncHJpbnRmLmgnLAorICAgICAgICAgICAgICAgICAgICdzeXMvYXV4di5oJywKKyAgICAgICAgICAgICAgICAgICAndmFsZ3JpbmQvbWVtY2hlY2suaCcsCisgICAgICAgICAgICAgICAgICAgJ3ZhbGdyaW5kL3ZhbGdyaW5kLmgnLAorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9tZXNvbi5idWlsZCBiL3NyYy9iYXNpYy9tZXNvbi5idWlsZAoraW5kZXggNDRjZDMxZWNiLi40MzVjNmVlMDIgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvbWVzb24uYnVpbGQKKysrKyBiL3NyYy9iYXNpYy9tZXNvbi5idWlsZAorQEAgLTMxMCw2ICszMTAsMTAgQEAgZW5kZm9yZWFjaAorIAorIGJhc2ljX3NvdXJjZXMgKz0gW21pc3NpbmdfaF0gKyBnZW5lcmF0ZWRfZ3BlcmZfaGVhZGVycworIAorK2lmIGNvbmYuZ2V0KCdIQVZFX1BSSU5URl9IJykgIT0gMQorKyAgICAgICAgYmFzaWNfc291cmNlcyArPSBbZmlsZXMoJ3BhcnNlLXByaW50Zi1mb3JtYXQuYycpXQorK2VuZGlmCisrCisgbGliYmFzaWMgPSBzdGF0aWNfbGlicmFyeSgKKyAgICAgICAgICdiYXNpYycsCisgICAgICAgICBiYXNpY19zb3VyY2VzLAorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMgYi9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwLi40OTQzN2U1NDQKKy0tLSAvZGV2L251bGwKKysrKyBiL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMKK0BAIC0wLDAgKzEsMjczIEBACisrLyotKi0gTW9kZTogQzsgYy1iYXNpYy1vZmZzZXQ6IDg7IGluZGVudC10YWJzLW1vZGU6IG5pbCAtKi0qLworKworKy8qKioKKysgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHN5c3RlbWQuCisrCisrICBDb3B5cmlnaHQgMjAxNCBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KKysKKysgIFdpdGggcGFydHMgZnJvbSB0aGUgbXVzbCBDIGxpYnJhcnkKKysgIENvcHlyaWdodCAyMDA1LTIwMTQgUmljaCBGZWxrZXIsIGV0IGFsLgorKworKyAgc3lzdGVtZCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisrICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IKKysgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICBzeXN0ZW1kIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorKyAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKioqLworKworKyNpbmNsdWRlIDxzdGRkZWYuaD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrCisrI2luY2x1ZGUgInBhcnNlLXByaW50Zi1mb3JtYXQuaCIKKysKKytzdGF0aWMgY29uc3QgY2hhciAqY29uc3VtZV9ub25hcmcoY29uc3QgY2hhciAqZm10KQorK3sKKysgICAgICAgIGRvIHsKKysgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJ1wwJykKKysgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm10OworKyAgICAgICAgfSB3aGlsZSAoKmZtdCsrICE9ICclJyk7CisrICAgICAgICByZXR1cm4gZm10OworK30KKysKKytzdGF0aWMgY29uc3QgY2hhciAqY29uc3VtZV9udW0oY29uc3QgY2hhciAqZm10KQorK3sKKysgICAgICAgIGZvciAoOypmbXQgPj0gJzAnICYmICpmbXQgPD0gJzknOyBmbXQrKykKKysgICAgICAgICAgICAgICAgLyogZG8gbm90aGluZyAqLzsKKysgICAgICAgIHJldHVybiBmbXQ7CisrfQorKworK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX2FyZ24oY29uc3QgY2hhciAqZm10LCBzaXplX3QgKmFyZykKKyt7CisrICAgICAgICBjb25zdCBjaGFyICpwID0gZm10OworKyAgICAgICAgc2l6ZV90IHZhbCA9IDA7CisrCisrICAgICAgICBpZiAoKnAgPCAnMScgfHwgKnAgPiAnOScpCisrICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7CisrICAgICAgICBkbyB7CisrICAgICAgICAgICAgICAgIHZhbCA9IDEwKnZhbCArICgqcCsrIC0gJzAnKTsKKysgICAgICAgIH0gd2hpbGUgKCpwID49ICcwJyAmJiAqcCA8PSAnOScpOworKworKyAgICAgICAgaWYgKCpwICE9ICckJykKKysgICAgICAgICAgICAgICAgcmV0dXJuIGZtdDsKKysgICAgICAgICphcmcgPSB2YWw7CisrICAgICAgICByZXR1cm4gcCsxOworK30KKysKKytzdGF0aWMgY29uc3QgY2hhciAqY29uc3VtZV9mbGFncyhjb25zdCBjaGFyICpmbXQpCisreworKyAgICAgICAgd2hpbGUgKDEpIHsKKysgICAgICAgICAgICAgICAgc3dpdGNoICgqZm10KSB7CisrICAgICAgICAgICAgICAgIGNhc2UgJyMnOgorKyAgICAgICAgICAgICAgICBjYXNlICcwJzoKKysgICAgICAgICAgICAgICAgY2FzZSAnLSc6CisrICAgICAgICAgICAgICAgIGNhc2UgJyAnOgorKyAgICAgICAgICAgICAgICBjYXNlICcrJzoKKysgICAgICAgICAgICAgICAgY2FzZSAnXCcnOgorKyAgICAgICAgICAgICAgICBjYXNlICdJJzoKKysgICAgICAgICAgICAgICAgICAgICAgICBmbXQrKzsKKysgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICByZXR1cm4gZm10OworKyAgICAgICAgfQorK30KKysKKytlbnVtIHN0YXRlIHsKKysgICAgICAgIEJBUkUsCisrICAgICAgICBMUFJFLAorKyAgICAgICAgTExQUkUsCisrICAgICAgICBIUFJFLAorKyAgICAgICAgSEhQUkUsCisrICAgICAgICBCSUdMUFJFLAorKyAgICAgICAgWlRQUkUsCisrICAgICAgICBKUFJFLAorKyAgICAgICAgU1RPUAorK307CisrCisrZW51bSB0eXBlIHsKKysgICAgICAgIE5PTkUsCisrICAgICAgICBQVFIsCisrICAgICAgICBJTlQsCisrICAgICAgICBVSU5ULAorKyAgICAgICAgVUxMT05HLAorKyAgICAgICAgTE9ORywKKysgICAgICAgIFVMT05HLAorKyAgICAgICAgU0hPUlQsCisrICAgICAgICBVU0hPUlQsCisrICAgICAgICBDSEFSLAorKyAgICAgICAgVUNIQVIsCisrICAgICAgICBMTE9ORywKKysgICAgICAgIFNJWkVULAorKyAgICAgICAgSU1BWCwKKysgICAgICAgIFVNQVgsCisrICAgICAgICBQRElGRiwKKysgICAgICAgIFVJUFRSLAorKyAgICAgICAgREJMLAorKyAgICAgICAgTERCTCwKKysgICAgICAgIE1BWFRZUEUKKyt9OworKworK3N0YXRpYyBjb25zdCBzaG9ydCBwYV90eXBlc1tNQVhUWVBFXSA9IHsKKysgICAgICAgIFtOT05FXSAgID0gUEFfSU5ULAorKyAgICAgICAgW1BUUl0gICAgPSBQQV9QT0lOVEVSLAorKyAgICAgICAgW0lOVF0gICAgPSBQQV9JTlQsCisrICAgICAgICBbVUlOVF0gICA9IFBBX0lOVCwKKysgICAgICAgIFtVTExPTkddID0gUEFfSU5UIHwgUEFfRkxBR19MT05HX0xPTkcsCisrICAgICAgICBbTE9OR10gICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9ORywKKysgICAgICAgIFtVTE9OR10gID0gUEFfSU5UIHwgUEFfRkxBR19MT05HLAorKyAgICAgICAgW1NIT1JUXSAgPSBQQV9JTlQgfCBQQV9GTEFHX1NIT1JULAorKyAgICAgICAgW1VTSE9SVF0gPSBQQV9JTlQgfCBQQV9GTEFHX1NIT1JULAorKyAgICAgICAgW0NIQVJdICAgPSBQQV9DSEFSLAorKyAgICAgICAgW1VDSEFSXSAgPSBQQV9DSEFSLAorKyAgICAgICAgW0xMT05HXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKKysgICAgICAgIFtTSVpFVF0gID0gUEFfSU5UIHwgUEFfRkxBR19MT05HLAorKyAgICAgICAgW0lNQVhdICAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKKysgICAgICAgIFtVTUFYXSAgID0gUEFfSU5UIHwgUEFfRkxBR19MT05HX0xPTkcsCisrICAgICAgICBbUERJRkZdICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAorKyAgICAgICAgW1VJUFRSXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCisrICAgICAgICBbREJMXSAgICA9IFBBX0RPVUJMRSwKKysgICAgICAgIFtMREJMXSAgID0gUEFfRE9VQkxFIHwgUEFfRkxBR19MT05HX0RPVUJMRQorK307CisrCisrI2RlZmluZSBTKHgpIFsoeCktJ0EnXQorKyNkZWZpbmUgRSh4KSAoU1RPUCArICh4KSkKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzdGF0ZXNbXVsneictJ0EnKzFdID0geworKyAgICAgICAgeyAvKiAwOiBiYXJlIHR5cGVzICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoSU5UKSwgUygnaScpID0gRShJTlQpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVJTlQpLFMoJ3UnKSA9IEUoVUlOVCksUygneCcpID0gRShVSU5UKSwgUygnWCcpID0gRShVSU5UKSwKKysgICAgICAgICAgICAgICAgUygnZScpID0gRShEQkwpLCBTKCdmJykgPSBFKERCTCksIFMoJ2cnKSA9IEUoREJMKSwgIFMoJ2EnKSA9IEUoREJMKSwKKysgICAgICAgICAgICAgICAgUygnRScpID0gRShEQkwpLCBTKCdGJykgPSBFKERCTCksIFMoJ0cnKSA9IEUoREJMKSwgIFMoJ0EnKSA9IEUoREJMKSwKKysgICAgICAgICAgICAgICAgUygnYycpID0gRShDSEFSKSxTKCdDJykgPSBFKElOVCksCisrICAgICAgICAgICAgICAgIFMoJ3MnKSA9IEUoUFRSKSwgUygnUycpID0gRShQVFIpLCBTKCdwJykgPSBFKFVJUFRSKSxTKCduJykgPSBFKFBUUiksCisrICAgICAgICAgICAgICAgIFMoJ20nKSA9IEUoTk9ORSksCisrICAgICAgICAgICAgICAgIFMoJ2wnKSA9IExQUkUsICAgUygnaCcpID0gSFBSRSwgUygnTCcpID0gQklHTFBSRSwKKysgICAgICAgICAgICAgICAgUygneicpID0gWlRQUkUsICBTKCdqJykgPSBKUFJFLCBTKCd0JykgPSBaVFBSRQorKyAgICAgICAgfSwgeyAvKiAxOiBsLXByZWZpeGVkICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoTE9ORyksIFMoJ2knKSA9IEUoTE9ORyksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVUxPTkcpLFMoJ3UnKSA9IEUoVUxPTkcpLFMoJ3gnKSA9IEUoVUxPTkcpLFMoJ1gnKSA9IEUoVUxPTkcpLAorKyAgICAgICAgICAgICAgICBTKCdlJykgPSBFKERCTCksICBTKCdmJykgPSBFKERCTCksICBTKCdnJykgPSBFKERCTCksICBTKCdhJykgPSBFKERCTCksCisrICAgICAgICAgICAgICAgIFMoJ0UnKSA9IEUoREJMKSwgIFMoJ0YnKSA9IEUoREJMKSwgIFMoJ0cnKSA9IEUoREJMKSwgIFMoJ0EnKSA9IEUoREJMKSwKKysgICAgICAgICAgICAgICAgUygnYycpID0gRShJTlQpLCAgUygncycpID0gRShQVFIpLCAgUygnbicpID0gRShQVFIpLAorKyAgICAgICAgICAgICAgICBTKCdsJykgPSBMTFBSRQorKyAgICAgICAgfSwgeyAvKiAyOiBsbC1wcmVmaXhlZCAqLworKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKExMT05HKSwgUygnaScpID0gRShMTE9ORyksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVUxMT05HKSxTKCd1JykgPSBFKFVMTE9ORyksCisrICAgICAgICAgICAgICAgIFMoJ3gnKSA9IEUoVUxMT05HKSxTKCdYJykgPSBFKFVMTE9ORyksCisrICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQorKyAgICAgICAgfSwgeyAvKiAzOiBoLXByZWZpeGVkICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoU0hPUlQpLCBTKCdpJykgPSBFKFNIT1JUKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVU0hPUlQpLFMoJ3UnKSA9IEUoVVNIT1JUKSwKKysgICAgICAgICAgICAgICAgUygneCcpID0gRShVU0hPUlQpLFMoJ1gnKSA9IEUoVVNIT1JUKSwKKysgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpLAorKyAgICAgICAgICAgICAgICBTKCdoJykgPSBISFBSRQorKyAgICAgICAgfSwgeyAvKiA0OiBoaC1wcmVmaXhlZCAqLworKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKENIQVIpLCBTKCdpJykgPSBFKENIQVIpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVDSEFSKSxTKCd1JykgPSBFKFVDSEFSKSwKKysgICAgICAgICAgICAgICAgUygneCcpID0gRShVQ0hBUiksUygnWCcpID0gRShVQ0hBUiksCisrICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQorKyAgICAgICAgfSwgeyAvKiA1OiBMLXByZWZpeGVkICovCisrICAgICAgICAgICAgICAgIFMoJ2UnKSA9IEUoTERCTCksUygnZicpID0gRShMREJMKSxTKCdnJykgPSBFKExEQkwpLCBTKCdhJykgPSBFKExEQkwpLAorKyAgICAgICAgICAgICAgICBTKCdFJykgPSBFKExEQkwpLFMoJ0YnKSA9IEUoTERCTCksUygnRycpID0gRShMREJMKSwgUygnQScpID0gRShMREJMKSwKKysgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCisrICAgICAgICB9LCB7IC8qIDY6IHotIG9yIHQtcHJlZml4ZWQgKGFzc3VtZWQgdG8gYmUgc2FtZSBzaXplKSAqLworKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKFBESUZGKSxTKCdpJykgPSBFKFBESUZGKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShTSVpFVCksUygndScpID0gRShTSVpFVCksCisrICAgICAgICAgICAgICAgIFMoJ3gnKSA9IEUoU0laRVQpLFMoJ1gnKSA9IEUoU0laRVQpLAorKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUikKKysgICAgICAgIH0sIHsgLyogNzogai1wcmVmaXhlZCAqLworKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKElNQVgpLCBTKCdpJykgPSBFKElNQVgpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVNQVgpLCBTKCd1JykgPSBFKFVNQVgpLAorKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVNQVgpLCBTKCdYJykgPSBFKFVNQVgpLAorKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUikKKysgICAgICAgIH0KKyt9OworKworK3NpemVfdCBwYXJzZV9wcmludGZfZm9ybWF0KGNvbnN0IGNoYXIgKmZtdCwgc2l6ZV90IG4sIGludCAqdHlwZXMpCisreworKyAgICAgICAgc2l6ZV90IGkgPSAwOworKyAgICAgICAgc2l6ZV90IGxhc3QgPSAwOworKworKyAgICAgICAgbWVtc2V0KHR5cGVzLCAwLCBuKTsKKysKKysgICAgICAgIHdoaWxlICgxKSB7CisrICAgICAgICAgICAgICAgIHNpemVfdCBhcmc7CisrICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzdGF0ZTsKKysKKysgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9ub25hcmcoZm10KTsKKysgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJ1wwJykKKysgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJyUnKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7CisrICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgYXJnID0gMDsKKysgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9hcmduKGZtdCwgJmFyZyk7CisrICAgICAgICAgICAgICAgIC8qIGZsYWdzICovCisrICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfZmxhZ3MoZm10KTsKKysgICAgICAgICAgICAgICAgLyogd2lkdGggKi8KKysgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJyonKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHdhcmcgPSAwOworKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfYXJnbihmbXQrMSwgJndhcmcpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3YXJnID09IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJnID0gKytpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3YXJnID4gbGFzdCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgPSB3YXJnOworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3YXJnIDw9IG4gJiYgdHlwZXNbd2FyZy0xXSA9PSBOT05FKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXNbd2FyZy0xXSA9IElOVDsKKysgICAgICAgICAgICAgICAgfSBlbHNlCisrICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9udW0oZm10KTsKKysgICAgICAgICAgICAgICAgLyogcHJlY2lzaW9uICovCisrICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICcuJykgeworKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCsrOworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICcqJykgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBhcmcgPSAwOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9hcmduKGZtdCsxLCAmcGFyZyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZyA9PSAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJnID0gKytpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmcgPiBsYXN0KQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0ID0gcGFyZzsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJnIDw9IG4gJiYgdHlwZXNbcGFyZy0xXSA9PSBOT05FKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlc1twYXJnLTFdID0gSU5UOworKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnLScpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCsrOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9udW0oZm10KTsKKysgICAgICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgLyogbGVuZ3RoIG1vZGlmaWVyIGFuZCBjb252ZXJzaW9uIHNwZWNpZmllciAqLworKyAgICAgICAgICAgICAgICBzdGF0ZSA9IEJBUkU7CisrICAgICAgICAgICAgICAgIGRvIHsKKysgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSAqZm10Kys7CisrCisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPCAnQScgfHwgYyA+ICd6JykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gc3RhdGVzW3N0YXRlXVMoYyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlID09IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgICAgICAgICAgfSB3aGlsZSAoc3RhdGUgPCBTVE9QKTsKKysKKysgICAgICAgICAgICAgICAgaWYgKHN0YXRlID09IEUoTk9ORSkpCisrICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrCisrICAgICAgICAgICAgICAgIGlmIChhcmcgPT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICBhcmcgPSArK2k7CisrICAgICAgICAgICAgICAgIGlmIChhcmcgPiBsYXN0KQorKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgPSBhcmc7CisrICAgICAgICAgICAgICAgIGlmIChhcmcgPD0gbikKKysgICAgICAgICAgICAgICAgICAgICAgICB0eXBlc1thcmctMV0gPSBzdGF0ZSAtIFNUT1A7CisrICAgICAgICB9CisrCisrICAgICAgICBpZiAobGFzdCA+IG4pCisrICAgICAgICAgICAgICAgIGxhc3QgPSBuOworKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGxhc3Q7IGkrKykKKysgICAgICAgICAgICAgICAgdHlwZXNbaV0gPSBwYV90eXBlc1t0eXBlc1tpXV07CisrCisrICAgICAgICByZXR1cm4gbGFzdDsKKyt9CitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaCBiL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAuLjQ3YmU3NTIyZAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaAorQEAgLTAsMCArMSw1NyBAQAorKy8qLSotIE1vZGU6IEM7IGMtYmFzaWMtb2Zmc2V0OiA4OyBpbmRlbnQtdGFicy1tb2RlOiBuaWwgLSotKi8KKysKKysvKioqCisrICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzeXN0ZW1kLgorKworKyAgQ29weXJpZ2h0IDIwMTQgRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+CisrCisrICBXaXRoIHBhcnRzIGZyb20gdGhlIEdOVSBDIExpYnJhcnkKKysgIENvcHlyaWdodCAxOTkxLTIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICBzeXN0ZW1kIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKysgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgIHN5c3RlbWQgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCisrICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqKiovCisrCisrI3ByYWdtYSBvbmNlCisrCisrI2luY2x1ZGUgImNvbmZpZy5oIgorKworKyNpZiBIQVZFX1BSSU5URl9ICisrI2luY2x1ZGUgPHByaW50Zi5oPgorKyNlbHNlCisrCisrI2luY2x1ZGUgPHN0ZGRlZi5oPgorKworK2VudW0gewkJCQkvKiBDIHR5cGU6ICovCisrICBQQV9JTlQsCQkJLyogaW50ICovCisrICBQQV9DSEFSLAkJCS8qIGludCwgY2FzdCB0byBjaGFyICovCisrICBQQV9XQ0hBUiwJCQkvKiB3aWRlIGNoYXIgKi8KKysgIFBBX1NUUklORywJCQkvKiBjb25zdCBjaGFyICosIGEgJ1wwJy10ZXJtaW5hdGVkIHN0cmluZyAqLworKyAgUEFfV1NUUklORywJCQkvKiBjb25zdCB3Y2hhcl90ICosIHdpZGUgY2hhcmFjdGVyIHN0cmluZyAqLworKyAgUEFfUE9JTlRFUiwJCQkvKiB2b2lkICogKi8KKysgIFBBX0ZMT0FULAkJCS8qIGZsb2F0ICovCisrICBQQV9ET1VCTEUsCQkJLyogZG91YmxlICovCisrICBQQV9MQVNUCisrfTsKKysKKysvKiBGbGFnIGJpdHMgdGhhdCBjYW4gYmUgc2V0IGluIGEgdHlwZSByZXR1cm5lZCBieSBgcGFyc2VfcHJpbnRmX2Zvcm1hdCcuICAqLworKyNkZWZpbmUJUEFfRkxBR19NQVNLCQkweGZmMDAKKysjZGVmaW5lCVBBX0ZMQUdfTE9OR19MT05HCSgxIDw8IDgpCisrI2RlZmluZQlQQV9GTEFHX0xPTkdfRE9VQkxFCVBBX0ZMQUdfTE9OR19MT05HCisrI2RlZmluZQlQQV9GTEFHX0xPTkcJCSgxIDw8IDkpCisrI2RlZmluZQlQQV9GTEFHX1NIT1JUCQkoMSA8PCAxMCkKKysjZGVmaW5lCVBBX0ZMQUdfUFRSCQkoMSA8PCAxMSkKKysKKytzaXplX3QgcGFyc2VfcHJpbnRmX2Zvcm1hdChjb25zdCBjaGFyICpmbXQsIHNpemVfdCBuLCBpbnQgKnR5cGVzKTsKKysKKysjZW5kaWYgLyogSEFWRV9QUklOVEZfSCAqLworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9zdGRpby11dGlsLmggYi9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oCitpbmRleCBkYmZhZmJhMjYuLjgwMzgzODBkNiAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9zdGRpby11dGlsLmgKKysrKyBiL3NyYy9iYXNpYy9zdGRpby11dGlsLmgKK0BAIC0yMCwxMiArMjAsMTIgQEAKKyAgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICoqKi8KKyAKKy0jaW5jbHVkZSA8cHJpbnRmLmg+CisgI2luY2x1ZGUgPHN0ZGFyZy5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAKKyAjaW5jbHVkZSAibWFjcm8uaCIKKysjaW5jbHVkZSAicGFyc2UtcHJpbnRmLWZvcm1hdC5oIgorIAorICNkZWZpbmUgeHNwcmludGYoYnVmLCBmbXQsIC4uLikgXAorICAgICAgICAgYXNzZXJ0X21lc3NhZ2Vfc2UoKHNpemVfdCkgc25wcmludGYoYnVmLCBFTEVNRU5UU09GKGJ1ZiksIGZtdCwgX19WQV9BUkdTX18pIDwgRUxFTUVOVFNPRihidWYpLCAieHNwcmludGY6ICIgI2J1ZiAiW10gbXVzdCBiZSBiaWcgZW5vdWdoIikKK2RpZmYgLS1naXQgYS9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYyBiL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jCitpbmRleCA3MzMyOWJhMDIuLjcwYmI5ZTBlOCAxMDA2NDQKKy0tLSBhL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jCisrKysgYi9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYworQEAgLTIwLDcgKzIwLDYgQEAKKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKy0jaW5jbHVkZSA8cHJpbnRmLmg+CisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisgI2luY2x1ZGUgPHN5cy91bi5oPgorQEAgLTM5LDYgKzM4LDcgQEAKKyAjaW5jbHVkZSAic3RkaW8tdXRpbC5oIgorICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgorICNpbmNsdWRlICJ1dGlsLmgiCisrI2luY2x1ZGUgInBhcnNlLXByaW50Zi1mb3JtYXQuaCIKKyAKKyAjZGVmaW5lIFNOREJVRl9TSVpFICg4KjEwMjQqMTAyNCkKKyAKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMy1jb21wYXJpc29uX2ZuX3QtaXMtZ2xpYmMtc3BlY2lmaWMtdXNlLXJhdy1zaWduYXR1cmUtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEzLWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyMTk5ODEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEzLWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDRiNjczMzU0NGJlYjY2MmEwZjc3MzEwMzAyZmFlMWZiN2I3NmQxNjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAxMiBTZXAgMjAxNSAxODo1MzozMSArMDAwMAotU3ViamVjdDogW1BBVENIIDEzLzEzXSBjb21wYXJpc29uX2ZuX3QgaXMgZ2xpYmMgc3BlY2lmaWMsIHVzZSByYXcgc2lnbmF0dXJlIGluCi0gZnVuY3Rpb24gcG9pbnRlcgotCi1tYWtlIGl0IHdvcmsgd2l0aCBtdXNsIHdoZXJlIGNvbXBhcmlzb25fZm5fdCBpcyBub3QgcHJvdmlkZWQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBzcmMvYmFzaWMvdXRpbC5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3V0aWwuaCBiL3NyYy9iYXNpYy91dGlsLmgKLWluZGV4IGM3ZGE2YzM5Yi4uODdmNjJiODkxIDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL3V0aWwuaAotKysrIGIvc3JjL2Jhc2ljL3V0aWwuaAotQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCAqeGJzZWFyY2hfcihjb25zdCB2b2lkICprZXksIGNvbnN0IHZvaWQgKmJhc2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsCi0gICogTm9ybWFsIHFzb3J0IHJlcXVpcmVzIGJhc2UgdG8gYmUgbm9ubnVsbC4gSGVyZSB3ZXJlIHJlcXVpcmUKLSAgKiB0aGF0IG9ubHkgaWYgbm1lbWIgPiAwLgotICAqLwotLXN0YXRpYyBpbmxpbmUgdm9pZCBxc29ydF9zYWZlKHZvaWQgKmJhc2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsIGNvbXBhcmlzb25fZm5fdCBjb21wYXIpIHsKLStzdGF0aWMgaW5saW5lIHZvaWQgcXNvcnRfc2FmZSh2b2lkICpiYXNlLCBzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplLCBpbnQgKCpjb21wYXIpKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSkgewotICAgICAgICAgaWYgKG5tZW1iIDw9IDEpCi0gICAgICAgICAgICAgICAgIHJldHVybjsKLSAKLS0tIAotMi4xNC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNC1SZXZlcnQtcnVsZXMtcmVtb3ZlLWZpcm13YXJlLWxvYWRpbmctcnVsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTQtUmV2ZXJ0LXJ1bGVzLXJlbW92ZS1maXJtd2FyZS1sb2FkaW5nLXJ1bGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDdjNjhmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNC1SZXZlcnQtcnVsZXMtcmVtb3ZlLWZpcm13YXJlLWxvYWRpbmctcnVsZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIDBmNDdjZmNiMTZlOGU0MGE5MGE5MjIxZjk5OTVmOGNkOGE5MTVjMjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKb25hdGhhbiBMaXUgPG5ldDE0N0BnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDE5IE1hciAyMDE1IDE1OjAxOjI5ICsxMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMTQvMTldIFJldmVydCAicnVsZXM6IHJlbW92ZSBmaXJtd2FyZSBsb2FkaW5nIHJ1bGVzIgotCi1UaGlzIHJldmVydHMgY29tbWl0IDcwZTdkNzU0ZGRiMzU2ZmIxYTI5NDJiMjYyZjhjZWU5NjUwZTJhMTkuCi1Vc2Vyc3BhY2UgZmlybXdhcmUgbG9hZGluZyBzdXBwb3J0IGlzIG5lZWRlZCBmb3IgTGludXggPCAzLjcuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEpvbmF0aGFuIExpdSA8bmV0MTQ3QGdtYWlsLmNvbT4KLS0tLQotIHJ1bGVzLzUwLWZpcm13YXJlLnJ1bGVzIHwgMyArKysKLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1bGVzLzUwLWZpcm13YXJlLnJ1bGVzCi0KLWRpZmYgLS1naXQgYS9ydWxlcy81MC1maXJtd2FyZS5ydWxlcyBiL3J1bGVzLzUwLWZpcm13YXJlLnJ1bGVzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZjBhZTY4NAotLS0tIC9kZXYvbnVsbAotKysrIGIvcnVsZXMvNTAtZmlybXdhcmUucnVsZXMKLUBAIC0wLDAgKzEsMyBAQAotKyMgZG8gbm90IGVkaXQgdGhpcyBmaWxlLCBpdCB3aWxsIGJlIG92ZXJ3cml0dGVuIG9uIHVwZGF0ZQotKwotK1NVQlNZU1RFTT09ImZpcm13YXJlIiwgQUNUSU9OPT0iYWRkIiwgUlVOe2J1aWx0aW59PSJmaXJtd2FyZSIKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNC1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE0LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3Npbmctc3RybmR1cGEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY2MmNiYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNC1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoCkBAIC0wLDAgKzEsMTE4IEBACitGcm9tIDMzYmU5MDUyMzE1Y2M0ZWM4ZTkyOWZhMjM4ZTFmMGNjMDE2MWFkMDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDI4IEZlYiAyMDE4IDIxOjE1OjI4IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIHNyYy9iYXNpYy9taXNzaW5nLmg6IGNoZWNrIGZvciBtaXNzaW5nIHN0cm5kdXBhCisKK2luY2x1ZGUgbWlzc2luZy5oICBmb3IgZGVmaW5pdGlvbiBvZiBzdHJuZHVwYQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIG1lc29uLmJ1aWxkICAgICAgICAgICAgIHwgIDEgKworIHNyYy9iYXNpYy9taXNzaW5nLmggICAgIHwgMTEgKysrKysrKysrKysKKyBzcmMvYmFzaWMvbWtkaXIuYyAgICAgICB8ICAxICsKKyBzcmMvYmFzaWMvcGFyc2UtdXRpbC5jICB8ICAxICsKKyBzcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYyB8ICAxICsKKyBzcmMvc2hhcmVkL3BhZ2VyLmMgICAgICB8ICAxICsKKyBzcmMvc2hhcmVkL3VpZC1yYW5nZS5jICB8ICAxICsKKyA3IGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKK2luZGV4IDRlYWJhYWZlOC4uMTI4MTFiM2YzIDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtNTI1LDYgKzUyNSw3IEBAIGZvcmVhY2ggaWRlbnQgOiBbCisgICAgICAgICBbJ2JwZicsICAgICAgICAgICAgICAgJycnI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPHVuaXN0ZC5oPicnJ10sCisgICAgICAgICBbJ2V4cGxpY2l0X2J6ZXJvJyAsICAgJycnI2luY2x1ZGUgPHN0cmluZy5oPicnJ10sCisrICAgICAgICBbJ3N0cm5kdXBhJyAsICAgICAgICAgJycnI2luY2x1ZGUgPHN0cmluZy5oPicnJ10sCisgXQorIAorICAgICAgICAgaGF2ZSA9IGNjLmhhc19mdW5jdGlvbihpZGVudFswXSwgcHJlZml4IDogaWRlbnRbMV0sIGFyZ3MgOiAnLURfR05VX1NPVVJDRScpCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKK2luZGV4IDg0ZDZkOTE2Ny4uMDdhOGM4MzY0IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmcuaAorKysrIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAorQEAgLTExODcsNiArMTE4NywxNyBAQCBzdHJ1Y3QgaW5wdXRfbWFzayB7CisgdHlwZWRlZiBpbnQzMl90IGtleV9zZXJpYWxfdDsKKyAjZW5kaWYKKyAKKysjaWYgISBIQVZFX1NUUk5EVVBBCisrI2RlZmluZSBzdHJuZHVwYShzLCBuKSBcCisrICAoeyBcCisrICAgIGNvbnN0IGNoYXIgKl9fb2xkID0gKHMpOyBcCisrICAgIHNpemVfdCBfX2xlbiA9IHN0cm5sZW4oX19vbGQsIChuKSk7IFwKKysgICAgY2hhciAqX19uZXcgPSAoY2hhciAqKWFsbG9jYShfX2xlbiArIDEpOyBcCisrICAgIF9fbmV3W19fbGVuXSA9ICdcMCc7IFwKKysgICAgKGNoYXIgKiltZW1jcHkoX19uZXcsIF9fb2xkLCBfX2xlbik7IFwKKysgIH0pCisrI2VuZGlmCisrCisgI2lmbmRlZiBLRVlDVExfSk9JTl9TRVNTSU9OX0tFWVJJTkcKKyAjZGVmaW5lIEtFWUNUTF9KT0lOX1NFU1NJT05fS0VZUklORyAxCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21rZGlyLmMgYi9zcmMvYmFzaWMvbWtkaXIuYworaW5kZXggZGU0NzQ2Yzg2Li5kNTE1MThhNWEgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvbWtkaXIuYworKysrIGIvc3JjL2Jhc2ljL21rZGlyLmMKK0BAIC0zMCw2ICszMCw3IEBACisgI2luY2x1ZGUgInBhdGgtdXRpbC5oIgorICNpbmNsdWRlICJzdGF0LXV0aWwuaCIKKyAjaW5jbHVkZSAidXNlci11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAKKyBpbnQgbWtkaXJfc2FmZV9pbnRlcm5hbChjb25zdCBjaGFyICpwYXRoLCBtb2RlX3QgbW9kZSwgdWlkX3QgdWlkLCBnaWRfdCBnaWQsIGJvb2wgZm9sbG93X3N5bWxpbmssIG1rZGlyX2Z1bmNfdCBfbWtkaXIpIHsKKyAgICAgICAgIHN0cnVjdCBzdGF0IHN0OworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMgYi9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCitpbmRleCAyYzIyNzUzZGUuLjk3NTMzNzIxZCAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKK0BAIC0zMyw2ICszMyw3IEBACisgI2luY2x1ZGUgInBhcnNlLXV0aWwuaCIKKyAjaW5jbHVkZSAicHJvY2Vzcy11dGlsLmgiCisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAKKyBpbnQgcGFyc2VfYm9vbGVhbihjb25zdCBjaGFyICp2KSB7CisgICAgICAgICBhc3NlcnQodik7CitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3Byb2Nmcy11dGlsLmMgYi9zcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYworaW5kZXggOWJiNDJjYzdiLi4yM2JiZDllNjcgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYworKysrIGIvc3JjL2Jhc2ljL3Byb2Nmcy11dGlsLmMKK0BAIC05LDYgKzksNyBAQAorICNpbmNsdWRlICJwcm9jZnMtdXRpbC5oIgorICNpbmNsdWRlICJzdGRpby11dGlsLmgiCisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAKKyBpbnQgcHJvY2ZzX3Rhc2tzX2dldF9saW1pdCh1aW50NjRfdCAqcmV0KSB7CisgICAgICAgICBfY2xlYW51cF9mcmVlXyBjaGFyICp2YWx1ZSA9IE5VTEw7CitkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9wYWdlci5jIGIvc3JjL3NoYXJlZC9wYWdlci5jCitpbmRleCA3NWRiM2M5ODUuLjg0ZjA2YmY3ZCAxMDA2NDQKKy0tLSBhL3NyYy9zaGFyZWQvcGFnZXIuYworKysrIGIvc3JjL3NoYXJlZC9wYWdlci5jCitAQCAtMzksNiArMzksNyBAQAorICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgorICNpbmNsdWRlICJzdHJ2LmgiCisgI2luY2x1ZGUgInRlcm1pbmFsLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZy5oIgorIAorIHN0YXRpYyBwaWRfdCBwYWdlcl9waWQgPSAwOworIAorZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMgYi9zcmMvc2hhcmVkL3VpZC1yYW5nZS5jCitpbmRleCBjMzhiN2NjOTguLjhlYzZiZjA4ZCAxMDA2NDQKKy0tLSBhL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMKKysrKyBiL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMKK0BAIC0yNSw2ICsyNSw3IEBACisgI2luY2x1ZGUgIm1hY3JvLmgiCisgI2luY2x1ZGUgInVpZC1yYW5nZS5oIgorICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZy5oIgorIAorIHN0YXRpYyBib29sIHVpZF9yYW5nZV9pbnRlcnNlY3QoVWlkUmFuZ2UgKnJhbmdlLCB1aWRfdCBzdGFydCwgdWlkX3QgbnIpIHsKKyAgICAgICAgIGFzc2VydChyYW5nZSk7CistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTUtUmV2ZXJ0LXVkZXYtcmVtb3ZlLXVzZXJzcGFjZS1maXJtd2FyZS1sb2FkaW5nLXN1cHBvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNS1SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTg3MWJiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNS1SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUxICswLDAgQEAKLUZyb20gNzg4Mzk4NWEzYTc4Njc3ZTlhMWQ1ZDYxZmU3ZmE4YmFkZjM5ZjU2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDkgTm92IDIwMTYgMjA6NDU6MjMgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8xNF0gUmV2ZXJ0ICJ1ZGV2OiByZW1vdmUgdXNlcnNwYWNlIGZpcm13YXJlIGxvYWRpbmcKLSBzdXBwb3J0IgotCi1UaGlzIHJldmVydHMgY29tbWl0IGJlMmVhNzIzYjFkMDIzYjNkMzg1ZDNiNzkxZWU0NjA3Y2JmYjIwY2EuCi1Vc2Vyc3BhY2UgZmlybXdhcmUgbG9hZGluZyBzdXBwb3J0IGlzIG5lZWRlZCBmb3IgTGludXggPCAzLjcuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEpvbmF0aGFuIExpdSA8bmV0MTQ3QGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLS0tLQotIE1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgIHwgIDEyICsrKwotIFJFQURNRSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICstCi0gVE9ETyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgIHwgIDE4ICsrKysrCi0gc3JjL3VkZXYvdWRldi1idWlsdGluLWZpcm13YXJlLmMgfCAxNTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gc3JjL3VkZXYvdWRldi1idWlsdGluLmMgICAgICAgICAgfCAgIDMgKwotIHNyYy91ZGV2L3VkZXYuaCAgICAgICAgICAgICAgICAgIHwgICA2ICsrCi0gc3JjL3VkZXYvdWRldmQuYyAgICAgICAgICAgICAgICAgfCAgMTMgKysrKwotIDggZmlsZXMgY2hhbmdlZCwgMjA5IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCBjMmI0YTk5ZDIuLjY5MmQ3YmI5NSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTM5ODUsNiArMzk4NSwxOCBAQCBsaWJ1ZGV2X2NvcmVfbGFfTElCQUREID0gXAotIAkkKEJMS0lEX0xJQlMpIFwKLSAJJChLTU9EX0xJQlMpCi0gCi0rbGlidWRldl9jb3JlX2xhX0NQUEZMQUdTID0gXAotKwkkKEFNX0NQUEZMQUdTKSBcCi0rCS1ERklSTVdBUkVfUEFUSD0iJChGSVJNV0FSRV9QQVRIKSIKLSsKLStpZiBFTkFCTEVfRklSTVdBUkUKLStsaWJ1ZGV2X2NvcmVfbGFfU09VUkNFUyArPSBcCi0rCXNyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jCi0rCi0rZGlzdF91ZGV2cnVsZXNfREFUQSArPSBcCi0rCXJ1bGVzLzUwLWZpcm13YXJlLnJ1bGVzCi0rZW5kaWYKLSsKLSBpZiBIQVZFX0tNT0QKLSBsaWJ1ZGV2X2NvcmVfbGFfU09VUkNFUyArPSBcCi0gCXNyYy91ZGV2L3VkZXYtYnVpbHRpbi1rbW9kLmMKLWRpZmYgLS1naXQgYS9SRUFETUUgYi9SRUFETUUKLWluZGV4IDYwMzg4ZWViZS4uZTIxOTc2MzkzIDEwMDY0NAotLS0tIGEvUkVBRE1FCi0rKysgYi9SRUFETUUKLUBAIC02MSw4ICs2MSw4IEBAIFJFUVVJUkVNRU5UUzoKLSAgICAgICAgIExlZ2FjeSBob3RwbHVnIHNsb3dzIGRvd24gdGhlIHN5c3RlbSBhbmQgY29uZnVzZXMgdWRldjoKLSAgICAgICAgICAgQ09ORklHX1VFVkVOVF9IRUxQRVJfUEFUSD0iIgotIAotLSAgICAgICAgVXNlcnNwYWNlIGZpcm13YXJlIGxvYWRpbmcgaXMgbm90IHN1cHBvcnRlZCBhbmQgc2hvdWxkCi0tICAgICAgICBiZSBkaXNhYmxlZCBpbiB0aGUga2VybmVsOgotKyAgICAgICAgVXNlcnNwYWNlIGZpcm13YXJlIGxvYWRpbmcgaXMgZGVwcmVjYXRlZCwgd2lsbCBnbyBhd2F5LCBhbmQKLSsgICAgICAgIHNvbWV0aW1lcyBjYXVzZXMgcHJvYmxlbXM6Ci0gICAgICAgICAgIENPTkZJR19GV19MT0FERVJfVVNFUl9IRUxQRVI9bgotIAotICAgICAgICAgU29tZSB1ZGV2IHJ1bGVzIGFuZCB2aXJ0dWFsaXphdGlvbiBkZXRlY3Rpb24gcmVsaWVzIG9uIGl0OgotZGlmZiAtLWdpdCBhL1RPRE8gYi9UT0RPCi1pbmRleCA2MWVmYTVlOWYuLjY3Y2NhYzIyNCAxMDA2NDQKLS0tLSBhL1RPRE8KLSsrKyBiL1RPRE8KLUBAIC03NDAsNiArNzQwLDcgQEAgRmVhdHVyZXM6Ci0gKiBpbml0aWFsaXplIHRoZSBob3N0bmFtZSBmcm9tIHRoZSBmcyBsYWJlbCBvZiAvLCBpZiAvZXRjL2hvc3RuYW1lIGRvZXMgbm90IGV4aXN0PwotIAotICogdWRldjoKLSsgIC0gcmVtb3ZlIHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jIChDT05GSUdfRldfTE9BREVSX1VTRVJfSEVMUEVSPW4pCi0gICAtIG1vdmUgdG8gTEdQTAotICAgLSBraWxsIHNjc2lfaWQKLSAgIC0gYWRkIHRyaWdnZXIgLS1zdWJzeXN0ZW0tbWF0Y2g9dXNiL3VzYl9kZXZpY2UgZGV2aWNlCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBiNTNjYTFmMWEuLjExNTBjYTUwZSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTUyMiw2ICsxNTIyLDIzIEBAIEFNX0NPTkRJVElPTkFMKEhBVkVfTVlIT1NUTkFNRSwgW3Rlc3QgIiRoYXZlX215aG9zdG5hbWUiID0gInllcyJdKQotIEFDX0FSR19FTkFCTEUoaHdkYiwgW0FTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtaHdkYl0sIFtkaXNhYmxlIGhhcmR3YXJlIGRhdGFiYXNlIHN1cHBvcnRdKV0sCi0gICAgICAgIGVuYWJsZV9od2RiPSRlbmFibGV2YWwsIGVuYWJsZV9od2RiPXllcykKLSBBTV9DT05ESVRJT05BTChFTkFCTEVfSFdEQiwgW3Rlc3QgeCRlbmFibGVfaHdkYiA9IHh5ZXNdKQotK0FDX0FSR19XSVRIKGZpcm13YXJlLXBhdGgsCi0rICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtZmlybXdhcmUtcGF0aD1ESVJbW1s6RElSWy4uLl1dXV1dLAotKyAgICAgICAgICBbRmlybXdhcmUgc2VhcmNoIHBhdGggKGRlZmF1bHQ9IiIpXSksCi0rICAgICAgIFtdLCBbd2l0aF9maXJtd2FyZV9wYXRoPSIiXSkKLStPTERfSUZTPSRJRlMKLStJRlM9OgotK2ZvciBpIGluICR3aXRoX2Zpcm13YXJlX3BhdGg7IGRvCi0rICAgICAgIGlmIHRlc3QgIngke0ZJUk1XQVJFX1BBVEh9IiA9ICJ4IjsgdGhlbgotKyAgICAgICAgICAgICAgRklSTVdBUkVfUEFUSD0iXFxcIiR7aX0vXFxcIiIKLSsgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgRklSTVdBUkVfUEFUSD0iJHtGSVJNV0FSRV9QQVRIfSwgXFxcIiR7aX0vXFxcIiIKLSsgICAgICAgZmkKLStkb25lCi0rSUZTPSRPTERfSUZTCi0rQUNfU1VCU1QoRklSTVdBUkVfUEFUSCkKLStBU19JRihbdGVzdCAieCR7RklSTVdBUkVfUEFUSH0iICE9ICJ4Il0sIFsgQUNfREVGSU5FKEhBVkVfRklSTVdBUkUsIDEsIFtEZWZpbmUgaWYgRklSTVdBUkUgaXMgYXZhaWxhYmxlXSkgXSkKLStBTV9DT05ESVRJT05BTChFTkFCTEVfRklSTVdBUkUsIFt0ZXN0ICJ4JHtGSVJNV0FSRV9QQVRIfSIgIT0gIngiXSkKLSAKLSAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGhhdmVfbWFucGFnZXM9bm8KLUBAIC0xODM5LDYgKzE4NTYsNyBAQCBBQ19NU0dfUkVTVUxUKFsKLSAgICAgICAgIFN5c1YgaW5pdCBzY3JpcHRzOiAgICAgICAgICAgICAgICAgJHtTWVNURU1fU1lTVklOSVRfUEFUSH0KLSAgICAgICAgIFN5c1YgcmM/LmQgZGlyZWN0b3JpZXM6ICAgICAgICAgICAgJHtTWVNURU1fU1lTVlJDTkRfUEFUSH0KLSAgICAgICAgIGJ1aWxkIFB5dGhvbjogICAgICAgICAgICAgICAgICAgICAgJHtQWVRIT059Ci0rICAgICAgICBmaXJtd2FyZSBwYXRoOiAgICAgICAgICAgICAgICAgICAgICR7RklSTVdBUkVfUEFUSH0KLSAgICAgICAgIFBBTSBtb2R1bGVzIGRpcjogICAgICAgICAgICAgICAgICAgJHt3aXRoX3BhbWxpYmRpcn0KLSAgICAgICAgIFBBTSBjb25maWd1cmF0aW9uIGRpcjogICAgICAgICAgICAgJHt3aXRoX3BhbWNvbmZkaXJ9Ci0gICAgICAgICBSUE0gbWFjcm9zIGRpcjogICAgICAgICAgICAgICAgICAgICR7d2l0aF9ycG1tYWNyb3NkaXJ9Ci1kaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi1idWlsdGluLWZpcm13YXJlLmMgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tZmlybXdhcmUuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMC4uYmQ4YzJmYjk2Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tZmlybXdhcmUuYwotQEAgLTAsMCArMSwxNTQgQEAKLSsvKgotKyAqIGZpcm13YXJlIC0gS2VybmVsIGZpcm13YXJlIGxvYWRlcgotKyAqCi0rICogQ29weXJpZ2h0IChDKSAyMDA5IFBpdGVyIFB1bmsgPHBpdGVycHVua0BzbGFja3dhcmUuY29tPgotKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDExIEtheSBTaWV2ZXJzIDxrYXlAdnJmeS5vcmc+Ci0rICoKLSsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUKLSsgKiBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyAqCi0rICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotKyAqIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlsczoqCi0rICovCi0rCi0rI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPGdldG9wdC5oPgotKyNpbmNsdWRlIDxlcnJuby5oPgotKyNpbmNsdWRlIDxzdGRib29sLmg+Ci0rI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+Ci0rI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0rCi0rI2luY2x1ZGUgInVkZXYuaCIKLSsKLStzdGF0aWMgYm9vbCBzZXRfbG9hZGluZyhzdHJ1Y3QgdWRldiAqdWRldiwgY2hhciAqbG9hZHBhdGgsIGNvbnN0IGNoYXIgKnN0YXRlKSB7Ci0rICAgICAgICBGSUxFICpsZGZpbGU7Ci0rCi0rICAgICAgICBsZGZpbGUgPSBmb3Blbihsb2FkcGF0aCwgIndlIik7Ci0rICAgICAgICBpZiAobGRmaWxlID09IE5VTEwpIHsKLSsgICAgICAgICAgICAgICAgbG9nX2Vycm9yKCJlcnJvcjogY2FuIG5vdCBvcGVuICclcyciLCBsb2FkcGF0aCk7Ci0rICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSsgICAgICAgIH07Ci0rICAgICAgICBmcHJpbnRmKGxkZmlsZSwgIiVzXG4iLCBzdGF0ZSk7Ci0rICAgICAgICBmY2xvc2UobGRmaWxlKTsKLSsgICAgICAgIHJldHVybiB0cnVlOwotK30KLSsKLStzdGF0aWMgYm9vbCBjb3B5X2Zpcm13YXJlKHN0cnVjdCB1ZGV2ICp1ZGV2LCBjb25zdCBjaGFyICpzb3VyY2UsIGNvbnN0IGNoYXIgKnRhcmdldCwgc2l6ZV90IHNpemUpIHsKLSsgICAgICAgIGNoYXIgKmJ1ZjsKLSsgICAgICAgIEZJTEUgKmZzb3VyY2UgPSBOVUxMLCAqZnRhcmdldCA9IE5VTEw7Ci0rICAgICAgICBib29sIHJldCA9IGZhbHNlOwotKwotKyAgICAgICAgYnVmID0gbWFsbG9jKHNpemUpOwotKyAgICAgICAgaWYgKGJ1ZiA9PSBOVUxMKSB7Ci0rICAgICAgICAgICAgICAgIGxvZ19lcnJvcigiTm8gbWVtb3J5IGF2YWlsYWJsZSB0byBsb2FkIGZpcm13YXJlIGZpbGUiKTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotKyAgICAgICAgfQotKwotKyAgICAgICAgbG9nX2RlYnVnKCJ3cml0aW5nICclcycgKCV6aSkgdG8gJyVzJyIsIHNvdXJjZSwgc2l6ZSwgdGFyZ2V0KTsKLSsKLSsgICAgICAgIGZzb3VyY2UgPSBmb3Blbihzb3VyY2UsICJyZSIpOwotKyAgICAgICAgaWYgKGZzb3VyY2UgPT0gTlVMTCkKLSsgICAgICAgICAgICAgICAgZ290byBleGl0OwotKyAgICAgICAgZnRhcmdldCA9IGZvcGVuKHRhcmdldCwgIndlIik7Ci0rICAgICAgICBpZiAoZnRhcmdldCA9PSBOVUxMKQotKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0rICAgICAgICBpZiAoZnJlYWQoYnVmLCBzaXplLCAxLCBmc291cmNlKSAhPSAxKQotKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0rICAgICAgICBpZiAoZndyaXRlKGJ1Ziwgc2l6ZSwgMSwgZnRhcmdldCkgPT0gMSkKLSsgICAgICAgICAgICAgICAgcmV0ID0gdHJ1ZTsKLStleGl0OgotKyAgICAgICAgaWYgKGZ0YXJnZXQgIT0gTlVMTCkKLSsgICAgICAgICAgICAgICAgZmNsb3NlKGZ0YXJnZXQpOwotKyAgICAgICAgaWYgKGZzb3VyY2UgIT0gTlVMTCkKLSsgICAgICAgICAgICAgICAgZmNsb3NlKGZzb3VyY2UpOwotKyAgICAgICAgZnJlZShidWYpOwotKyAgICAgICAgcmV0dXJuIHJldDsKLSt9Ci0rCi0rc3RhdGljIGludCBidWlsdGluX2Zpcm13YXJlKHN0cnVjdCB1ZGV2X2RldmljZSAqZGV2LCBpbnQgYXJnYywgY2hhciAqYXJndltdLCBib29sIHRlc3QpIHsKLSsgICAgICAgIHN0cnVjdCB1ZGV2ICp1ZGV2ID0gdWRldl9kZXZpY2VfZ2V0X3VkZXYoZGV2KTsKLSsgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyICpzZWFyY2hwYXRoW10gPSB7IEZJUk1XQVJFX1BBVEggfTsKLSsgICAgICAgIGNoYXIgbG9hZHBhdGhbVVRJTF9QQVRIX1NJWkVdOwotKyAgICAgICAgY2hhciBkYXRhcGF0aFtVVElMX1BBVEhfU0laRV07Ci0rICAgICAgICBjaGFyIGZ3cGF0aFtVVElMX1BBVEhfU0laRV07Ci0rICAgICAgICBjb25zdCBjaGFyICpmaXJtd2FyZTsKLSsgICAgICAgIEZJTEUgKmZ3ZmlsZSA9IE5VTEw7Ci0rICAgICAgICBzdHJ1Y3QgdXRzbmFtZSBrZXJuZWw7Ci0rICAgICAgICBzdHJ1Y3Qgc3RhdCBzdGF0YnVmOwotKyAgICAgICAgdW5zaWduZWQgaW50IGk7Ci0rICAgICAgICBpbnQgcmMgPSBFWElUX1NVQ0NFU1M7Ci0rCi0rICAgICAgICBmaXJtd2FyZSA9IHVkZXZfZGV2aWNlX2dldF9wcm9wZXJ0eV92YWx1ZShkZXYsICJGSVJNV0FSRSIpOwotKyAgICAgICAgaWYgKGZpcm13YXJlID09IE5VTEwpIHsKLSsgICAgICAgICAgICAgICAgbG9nX2Vycm9yKCJmaXJtd2FyZSBwYXJhbWV0ZXIgbWlzc2luZyIpOwotKyAgICAgICAgICAgICAgICByYyA9IEVYSVRfRkFJTFVSRTsKLSsgICAgICAgICAgICAgICAgZ290byBleGl0OwotKyAgICAgICAgfQotKwotKyAgICAgICAgLyogbG9va3VwIGZpcm13YXJlIGZpbGUgKi8KLSsgICAgICAgIHVuYW1lKCZrZXJuZWwpOwotKyAgICAgICAgZm9yIChpID0gMDsgaSA8IEVMRU1FTlRTT0Yoc2VhcmNocGF0aCk7IGkrKykgewotKyAgICAgICAgICAgICAgICBzdHJzY3B5bChmd3BhdGgsIHNpemVvZihmd3BhdGgpLCBzZWFyY2hwYXRoW2ldLCBrZXJuZWwucmVsZWFzZSwgIi8iLCBmaXJtd2FyZSwgTlVMTCk7Ci0rICAgICAgICAgICAgICAgIGZ3ZmlsZSA9IGZvcGVuKGZ3cGF0aCwgInJlIik7Ci0rICAgICAgICAgICAgICAgIGlmIChmd2ZpbGUgIT0gTlVMTCkKLSsgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSsKLSsgICAgICAgICAgICAgICAgc3Ryc2NweWwoZndwYXRoLCBzaXplb2YoZndwYXRoKSwgc2VhcmNocGF0aFtpXSwgZmlybXdhcmUsIE5VTEwpOwotKyAgICAgICAgICAgICAgICBmd2ZpbGUgPSBmb3Blbihmd3BhdGgsICJyZSIpOwotKyAgICAgICAgICAgICAgICBpZiAoZndmaWxlICE9IE5VTEwpCi0rICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBzdHJzY3B5bChsb2FkcGF0aCwgc2l6ZW9mKGxvYWRwYXRoKSwgdWRldl9kZXZpY2VfZ2V0X3N5c3BhdGgoZGV2KSwgIi9sb2FkaW5nIiwgTlVMTCk7Ci0rCi0rICAgICAgICBpZiAoZndmaWxlID09IE5VTEwpIHsKLSsgICAgICAgICAgICAgICAgbG9nX2RlYnVnKCJkaWQgbm90IGZpbmQgZmlybXdhcmUgZmlsZSAnJXMnIiwgZmlybXdhcmUpOwotKyAgICAgICAgICAgICAgICByYyA9IEVYSVRfRkFJTFVSRTsKLSsgICAgICAgICAgICAgICAgLyoKLSsgICAgICAgICAgICAgICAgICogRG8gbm90IGNhbmNlbCB0aGUgcmVxdWVzdCBpbiB0aGUgaW5pdHJkLCB0aGUgcmVhbCByb290IG1pZ2h0IGhhdmUKLSsgICAgICAgICAgICAgICAgICogdGhlIGZpcm13YXJlIGZpbGUgYW5kIHRoZSAnY29sZHBsdWcnIHJ1biBpbiB0aGUgcmVhbCByb290IHdpbGwgZmluZAotKyAgICAgICAgICAgICAgICAgKiB0aGlzIHBlbmRpbmcgcmVxdWVzdCBhbmQgZnVsZmlsbCBvciBjYW5jZWwgaXQuCi0rICAgICAgICAgICAgICAgICAqICovCi0rICAgICAgICAgICAgICAgIGlmICghaW5faW5pdHJkKCkpCi0rICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2xvYWRpbmcodWRldiwgbG9hZHBhdGgsICItMSIpOwotKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBpZiAoc3RhdChmd3BhdGgsICZzdGF0YnVmKSA8IDAgfHwgc3RhdGJ1Zi5zdF9zaXplID09IDApIHsKLSsgICAgICAgICAgICAgICAgaWYgKCFpbl9pbml0cmQoKSkKLSsgICAgICAgICAgICAgICAgICAgICAgICBzZXRfbG9hZGluZyh1ZGV2LCBsb2FkcGF0aCwgIi0xIik7Ci0rICAgICAgICAgICAgICAgIHJjID0gRVhJVF9GQUlMVVJFOwotKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBpZiAoIXNldF9sb2FkaW5nKHVkZXYsIGxvYWRwYXRoLCAiMSIpKQotKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0rCi0rICAgICAgICBzdHJzY3B5bChkYXRhcGF0aCwgc2l6ZW9mKGRhdGFwYXRoKSwgdWRldl9kZXZpY2VfZ2V0X3N5c3BhdGgoZGV2KSwgIi9kYXRhIiwgTlVMTCk7Ci0rICAgICAgICBpZiAoIWNvcHlfZmlybXdhcmUodWRldiwgZndwYXRoLCBkYXRhcGF0aCwgc3RhdGJ1Zi5zdF9zaXplKSkgewotKyAgICAgICAgICAgICAgICBsb2dfZXJyb3IoImVycm9yIHNlbmRpbmcgZmlybXdhcmUgJyVzJyB0byBkZXZpY2UiLCBmaXJtd2FyZSk7Ci0rICAgICAgICAgICAgICAgIHNldF9sb2FkaW5nKHVkZXYsIGxvYWRwYXRoLCAiLTEiKTsKLSsgICAgICAgICAgICAgICAgcmMgPSBFWElUX0ZBSUxVUkU7Ci0rICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSsgICAgICAgIH07Ci0rCi0rICAgICAgICBzZXRfbG9hZGluZyh1ZGV2LCBsb2FkcGF0aCwgIjAiKTsKLStleGl0OgotKyAgICAgICAgaWYgKGZ3ZmlsZSkKLSsgICAgICAgICAgICAgICAgZmNsb3NlKGZ3ZmlsZSk7Ci0rICAgICAgICByZXR1cm4gcmM7Ci0rfQotKwotK2NvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gdWRldl9idWlsdGluX2Zpcm13YXJlID0gewotKyAgICAgICAgLm5hbWUgPSAiZmlybXdhcmUiLAotKyAgICAgICAgLmNtZCA9IGJ1aWx0aW5fZmlybXdhcmUsCi0rICAgICAgICAuaGVscCA9ICJrZXJuZWwgZmlybXdhcmUgbG9hZGVyIiwKLSsgICAgICAgIC5ydW5fb25jZSA9IHRydWUsCi0rfTsKLWRpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2LWJ1aWx0aW4uYyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi5jCi1pbmRleCBlNmIzNmYxMjQuLmNkOTk0N2UyYSAxMDA2NDQKLS0tLSBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi5jCi0rKysgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4uYwotQEAgLTMxLDYgKzMxLDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gKmJ1aWx0aW5zW10gPSB7Ci0gICAgICAgICBbVURFVl9CVUlMVElOX0JMS0lEXSA9ICZ1ZGV2X2J1aWx0aW5fYmxraWQsCi0gI2VuZGlmCi0gICAgICAgICBbVURFVl9CVUlMVElOX0JUUkZTXSA9ICZ1ZGV2X2J1aWx0aW5fYnRyZnMsCi0rI2lmZGVmIEhBVkVfRklSTVdBUkUKLSsgICAgICAgIFtVREVWX0JVSUxUSU5fRklSTVdBUkVdID0gJnVkZXZfYnVpbHRpbl9maXJtd2FyZSwKLSsjZW5kaWYKLSAgICAgICAgIFtVREVWX0JVSUxUSU5fSFdEQl0gPSAmdWRldl9idWlsdGluX2h3ZGIsCi0gICAgICAgICBbVURFVl9CVUlMVElOX0lOUFVUX0lEXSA9ICZ1ZGV2X2J1aWx0aW5faW5wdXRfaWQsCi0gICAgICAgICBbVURFVl9CVUlMVElOX0tFWUJPQVJEXSA9ICZ1ZGV2X2J1aWx0aW5fa2V5Ym9hcmQsCi1kaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi5oIGIvc3JjL3VkZXYvdWRldi5oCi1pbmRleCBjMGNiN2VhZTguLjlmMGYxY2YxMyAxMDA2NDQKLS0tLSBhL3NyYy91ZGV2L3VkZXYuaAotKysrIGIvc3JjL3VkZXYvdWRldi5oCi1AQCAtMTUwLDYgKzE1MCw5IEBAIGVudW0gdWRldl9idWlsdGluX2NtZCB7Ci0gICAgICAgICBVREVWX0JVSUxUSU5fQkxLSUQsCi0gI2VuZGlmCi0gICAgICAgICBVREVWX0JVSUxUSU5fQlRSRlMsCi0rI2lmZGVmIEhBVkVfRklSTVdBUkUKLSsgICAgICAgIFVERVZfQlVJTFRJTl9GSVJNV0FSRSwKLSsjZW5kaWYKLSAgICAgICAgIFVERVZfQlVJTFRJTl9IV0RCLAotICAgICAgICAgVURFVl9CVUlMVElOX0lOUFVUX0lELAotICAgICAgICAgVURFVl9CVUlMVElOX0tFWUJPQVJELAotQEAgLTE3OCw2ICsxODEsOSBAQCBzdHJ1Y3QgdWRldl9idWlsdGluIHsKLSBleHRlcm4gY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiB1ZGV2X2J1aWx0aW5fYmxraWQ7Ci0gI2VuZGlmCi0gZXh0ZXJuIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gdWRldl9idWlsdGluX2J0cmZzOwotKyNpZmRlZiBIQVZFX0ZJUk1XQVJFCi0rZXh0ZXJuIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gdWRldl9idWlsdGluX2Zpcm13YXJlOwotKyNlbmRpZgotIGV4dGVybiBjb25zdCBzdHJ1Y3QgdWRldl9idWlsdGluIHVkZXZfYnVpbHRpbl9od2RiOwotIGV4dGVybiBjb25zdCBzdHJ1Y3QgdWRldl9idWlsdGluIHVkZXZfYnVpbHRpbl9pbnB1dF9pZDsKLSBleHRlcm4gY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiB1ZGV2X2J1aWx0aW5fa2V5Ym9hcmQ7Ci1kaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldmQuYyBiL3NyYy91ZGV2L3VkZXZkLmMKLWluZGV4IGFjYmRkZDQxOC4uMjAzNDdiNDAyIDEwMDY0NAotLS0tIGEvc3JjL3VkZXYvdWRldmQuYwotKysrIGIvc3JjL3VkZXYvdWRldmQuYwotQEAgLTEyNSw2ICsxMjUsOSBAQCBzdHJ1Y3QgZXZlbnQgewotICAgICAgICAgYm9vbCBpc19ibG9jazsKLSAgICAgICAgIHNkX2V2ZW50X3NvdXJjZSAqdGltZW91dF93YXJuaW5nOwotICAgICAgICAgc2RfZXZlbnRfc291cmNlICp0aW1lb3V0OwotKyNpZmRlZiBIQVZFX0ZJUk1XQVJFCi0rICAgICAgICBib29sIG5vZGVsYXk7Ci0rI2VuZGlmCi0gfTsKLSAKLSBzdGF0aWMgaW5saW5lIHN0cnVjdCBldmVudCAqbm9kZV90b19ldmVudChzdHJ1Y3QgdWRldl9saXN0X25vZGUgKm5vZGUpIHsKLUBAIC02MTMsNiArNjE2LDEwIEBAIHN0YXRpYyBpbnQgZXZlbnRfcXVldWVfaW5zZXJ0KE1hbmFnZXIgKm1hbmFnZXIsIHN0cnVjdCB1ZGV2X2RldmljZSAqZGV2KSB7Ci0gICAgICAgICBldmVudC0+ZGV2bnVtID0gdWRldl9kZXZpY2VfZ2V0X2Rldm51bShkZXYpOwotICAgICAgICAgZXZlbnQtPmlzX2Jsb2NrID0gc3RyZXEoImJsb2NrIiwgdWRldl9kZXZpY2VfZ2V0X3N1YnN5c3RlbShkZXYpKTsKLSAgICAgICAgIGV2ZW50LT5pZmluZGV4ID0gdWRldl9kZXZpY2VfZ2V0X2lmaW5kZXgoZGV2KTsKLSsjaWZkZWYgSEFWRV9GSVJNV0FSRQotKyAgICAgICAgaWYgKHN0cmVxKHVkZXZfZGV2aWNlX2dldF9zdWJzeXN0ZW0oZGV2KSwgImZpcm13YXJlIikpCi0rICAgICAgICAgICAgICAgIGV2ZW50LT5ub2RlbGF5ID0gdHJ1ZTsKLSsjZW5kaWYKLSAKLSAgICAgICAgIGxvZ19kZWJ1Zygic2VxICVsbHUgcXVldWVkLCAnJXMnICclcyciLCB1ZGV2X2RldmljZV9nZXRfc2VxbnVtKGRldiksCi0gICAgICAgICAgICAgIHVkZXZfZGV2aWNlX2dldF9hY3Rpb24oZGV2KSwgdWRldl9kZXZpY2VfZ2V0X3N1YnN5c3RlbShkZXYpKTsKLUBAIC02OTgsNiArNzA1LDEyIEBAIHN0YXRpYyBib29sIGlzX2RldnBhdGhfYnVzeShNYW5hZ2VyICptYW5hZ2VyLCBzdHJ1Y3QgZXZlbnQgKmV2ZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgIH0KLSAKLSsjaWZkZWYgSEFWRV9GSVJNV0FSRQotKyAgICAgICAgICAgICAgICAvKiBhbGxvdyB0byBieXBhc3MgdGhlIGRlcGVuZGVuY3kgdHJhY2tpbmcgKi8KLSsgICAgICAgICAgICAgICAgaWYgKGV2ZW50LT5ub2RlbGF5KQotKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKyNlbmRpZgotKwotICAgICAgICAgICAgICAgICAvKiBwYXJlbnQgZGV2aWNlIGV2ZW50IGZvdW5kICovCi0gICAgICAgICAgICAgICAgIGlmIChldmVudC0+ZGV2cGF0aFtjb21tb25dID09ICcvJykgewotICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LT5kZWxheWluZ19zZXFudW0gPSBsb29wX2V2ZW50LT5zZXFudW07Ci0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTUtZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNS1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1MDk0NzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTUtZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LS5wYXRjaApAQCAtMCwwICsxLDE1NyBAQAorRnJvbSBiNDVjZjQ5MjNjN2UxZjExNjU5MjVlOWI0ZDdkYjIxMDhmYWYyZWFlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+CitEYXRlOiBNb24sIDIzIE9jdCAyMDE3IDEwOjUwOjE0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMTUvMzFdIGRvbid0IGZhaWwgaWYgR0xPQl9CUkFDRSBhbmQgR0xPQl9BTFRESVJGVU5DIGlzIG5vdAorIGRlZmluZWQKKworSWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZG9lc24ndCBwcm92aWRlIGJyYWNlCitleHBhbnNpb24gdXNlcnMganVzdCB3b24ndCBnZXQgaXQuCisKK0RvbnQgdXNlIEdOVSBHTE9CIGV4dGVudGlvbnMgb24gbm9uLWdsaWJjIHN5c3RlbXMKKworQ29uZGl0aW9uYWxpemUgdXNlIG9mIEdMT0JfQUxURElSRlVOQworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9iYXNpYy9nbG9iLXV0aWwuYyAgICAgfCAyMCArKysrKysrKysrKysrKysrKy0tLQorIHNyYy90ZXN0L3Rlc3QtZ2xvYi11dGlsLmMgfCAxNyArKysrKysrKysrKysrKystLQorIHNyYy90bXBmaWxlcy90bXBmaWxlcy5jICAgfCAgOCArKysrKysrKworIDMgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9nbG9iLXV0aWwuYyBiL3NyYy9iYXNpYy9nbG9iLXV0aWwuYworaW5kZXggNmU4MGExZTIzLi4zMTJiYjNmZDEgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvZ2xvYi11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9nbG9iLXV0aWwuYworQEAgLTI4LDEzICsyOCwxOCBAQAorICNpbmNsdWRlICJtYWNyby5oIgorICNpbmNsdWRlICJwYXRoLXV0aWwuaCIKKyAjaW5jbHVkZSAic3Rydi5oIgorKy8qIERvbid0IGZhaWwgaWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkKKysgKiBkb2Vzbid0IHByb3ZpZGUgYnJhY2UgZXhwYW5zaW9uICovCisrI2lmbmRlZiBHTE9CX0JSQUNFCisrI2RlZmluZSBHTE9CX0JSQUNFIDAKKysjZW5kaWYKKyAKKyBpbnQgc2FmZV9nbG9iKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgZ2xvYl90ICpwZ2xvYikgeworICAgICAgICAgaW50IGs7CisgCisrI2lmZGVmIEdMT0JfQUxURElSRlVOQworICAgICAgICAgLyogV2Ugd2FudCB0byBzZXQgR0xPQl9BTFRESVJGVU5DIG91cnNlbHZlcywgZG9uJ3QgYWxsb3cgaXQgdG8gYmUgc2V0LiAqLworICAgICAgICAgYXNzZXJ0KCEoZmxhZ3MgJiBHTE9CX0FMVERJUkZVTkMpKTsKKy0KKyAgICAgICAgIGlmICghcGdsb2ItPmdsX2Nsb3NlZGlyKQorICAgICAgICAgICAgICAgICBwZ2xvYi0+Z2xfY2xvc2VkaXIgPSAodm9pZCAoKikodm9pZCAqKSkgY2xvc2VkaXI7CisgICAgICAgICBpZiAoIXBnbG9iLT5nbF9yZWFkZGlyKQorQEAgLTQ1LDEwICs1MCwxMyBAQCBpbnQgc2FmZV9nbG9iKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgZ2xvYl90ICpwZ2xvYikgeworICAgICAgICAgICAgICAgICBwZ2xvYi0+Z2xfbHN0YXQgPSBsc3RhdDsKKyAgICAgICAgIGlmICghcGdsb2ItPmdsX3N0YXQpCisgICAgICAgICAgICAgICAgIHBnbG9iLT5nbF9zdGF0ID0gc3RhdDsKKy0KKysjZW5kaWYKKyAgICAgICAgIGVycm5vID0gMDsKKysjaWZkZWYgR0xPQl9BTFRESVJGVU5DCisgICAgICAgICBrID0gZ2xvYihwYXRoLCBmbGFncyB8IEdMT0JfQUxURElSRlVOQywgTlVMTCwgcGdsb2IpOworLQorKyNlbHNlCisrICAgICAgICBrID0gZ2xvYihwYXRoLCBmbGFncywgTlVMTCwgcGdsb2IpOworKyNlbmRpZgorICAgICAgICAgaWYgKGsgPT0gR0xPQl9OT01BVENIKQorICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKKyAgICAgICAgIGlmIChrID09IEdMT0JfTk9TUEFDRSkKK0BAIC02MSw2ICs2OSwxMiBAQCBpbnQgc2FmZV9nbG9iKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgZ2xvYl90ICpwZ2xvYikgeworICAgICAgICAgcmV0dXJuIDA7CisgfQorIAorKy8qIERvbid0IGZhaWwgaWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkKKysgKiBkb2Vzbid0IHByb3ZpZGUgYnJhY2UgZXhwYW5zaW9uICovCisrI2lmbmRlZiBHTE9CX0JSQUNFCisrI2RlZmluZSBHTE9CX0JSQUNFIDAKKysjZW5kaWYKKysKKyBpbnQgZ2xvYl9leGlzdHMoY29uc3QgY2hhciAqcGF0aCkgeworICAgICAgICAgX2NsZWFudXBfZ2xvYmZyZWVfIGdsb2JfdCBnID0ge307CisgICAgICAgICBpbnQgazsKK2RpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jIGIvc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYworaW5kZXggYmQyZjhmY2ZkLi5hMTBjNzc0MjcgMTAwNjQ0CistLS0gYS9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jCisrKysgYi9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jCitAQCAtMzAsNiArMzAsMTEgQEAKKyAjaW5jbHVkZSAiZ2xvYi11dGlsLmgiCisgI2luY2x1ZGUgIm1hY3JvLmgiCisgI2luY2x1ZGUgInJtLXJmLmgiCisrLyogRG9uJ3QgZmFpbCBpZiB0aGUgc3RhbmRhcmQgbGlicmFyeQorKyAqIGRvZXNuJ3QgcHJvdmlkZSBicmFjZSBleHBhbnNpb24gKi8KKysjaWZuZGVmIEdMT0JfQlJBQ0UKKysjZGVmaW5lIEdMT0JfQlJBQ0UgMAorKyNlbmRpZgorIAorIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYl9leGlzdHModm9pZCkgeworICAgICAgICAgY2hhciBuYW1lW10gPSAiL3RtcC90ZXN0LWdsb2JfZXhpc3RzLlhYWFhYWCI7CitAQCAtNTIsMjUgKzU3LDMzIEBAIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYl9leGlzdHModm9pZCkgeworIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYl9ub19kb3Qodm9pZCkgeworICAgICAgICAgY2hhciB0ZW1wbGF0ZVtdID0gIi90bXAvdGVzdC1nbG9iLXV0aWwuWFhYWFhYWCI7CisgICAgICAgICBjb25zdCBjaGFyICpmbjsKKy0KKyAgICAgICAgIF9jbGVhbnVwX2dsb2JmcmVlXyBnbG9iX3QgZyA9IHsKKysjaWZkZWYgR0xPQl9BTFRESVJGVU5DCisgICAgICAgICAgICAgICAgIC5nbF9jbG9zZWRpciA9ICh2b2lkICgqKSh2b2lkICopKSBjbG9zZWRpciwKKyAgICAgICAgICAgICAgICAgLmdsX3JlYWRkaXIgPSAoc3RydWN0IGRpcmVudCAqKCopKHZvaWQgKikpIHJlYWRkaXJfbm9fZG90LAorICAgICAgICAgICAgICAgICAuZ2xfb3BlbmRpciA9ICh2b2lkICooKikoY29uc3QgY2hhciAqKSkgb3BlbmRpciwKKyAgICAgICAgICAgICAgICAgLmdsX2xzdGF0ID0gbHN0YXQsCisgICAgICAgICAgICAgICAgIC5nbF9zdGF0ID0gc3RhdCwKKysjZW5kaWYKKyAgICAgICAgIH07CistCisgICAgICAgICBpbnQgcjsKKyAKKyAgICAgICAgIGFzc2VydF9zZShta2R0ZW1wKHRlbXBsYXRlKSk7CisgCisgICAgICAgICBmbiA9IHN0cmpvaW5hKHRlbXBsYXRlLCAiLyoiKTsKKysjaWZkZWYgR0xPQl9BTFRESVJGVU5DCisgICAgICAgICByID0gZ2xvYihmbiwgR0xPQl9OT1NPUlR8R0xPQl9CUkFDRXxHTE9CX0FMVERJUkZVTkMsIE5VTEwsICZnKTsKKysjZWxzZQorKyAgICAgICAgciA9IGdsb2IoZm4sIEdMT0JfTk9TT1JUfEdMT0JfQlJBQ0UsIE5VTEwsICZnKTsKKysjZW5kaWYKKyAgICAgICAgIGFzc2VydF9zZShyID09IEdMT0JfTk9NQVRDSCk7CisgCisgICAgICAgICBmbiA9IHN0cmpvaW5hKHRlbXBsYXRlLCAiLy4qIik7CisrI2lmZGVmIEdMT0JfQUxURElSRlVOQworICAgICAgICAgciA9IGdsb2IoZm4sIEdMT0JfTk9TT1JUfEdMT0JfQlJBQ0V8R0xPQl9BTFRESVJGVU5DLCBOVUxMLCAmZyk7CisrI2Vsc2UKKysgICAgICAgIHIgPSBnbG9iKGZuLCBHTE9CX05PU09SVHxHTE9CX0JSQUNFLCBOVUxMLCAmZyk7CisrI2VuZGlmCisgICAgICAgICBhc3NlcnRfc2UociA9PSBHTE9CX05PTUFUQ0gpOworIAorICAgICAgICAgKHZvaWQpIHJtX3JmKHRlbXBsYXRlLCBSRU1PVkVfUk9PVHxSRU1PVkVfUEhZU0lDQUwpOworZGlmZiAtLWdpdCBhL3NyYy90bXBmaWxlcy90bXBmaWxlcy5jIGIvc3JjL3RtcGZpbGVzL3RtcGZpbGVzLmMKK2luZGV4IDM4Y2JiNzM5Yy4uODhjYzU0M2YwIDEwMDY0NAorLS0tIGEvc3JjL3RtcGZpbGVzL3RtcGZpbGVzLmMKKysrKyBiL3NyYy90bXBmaWxlcy90bXBmaWxlcy5jCitAQCAtNzYsNiArNzYsMTIgQEAKKyAjaW5jbHVkZSAidW1hc2stdXRpbC5oIgorICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKyAjaW5jbHVkZSAidXRpbC5oIgorKy8qIERvbid0IGZhaWwgaWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkKKysgKiBkb2Vzbid0IHByb3ZpZGUgYnJhY2UgZXhwYW5zaW9uICovCisrI2lmbmRlZiBHTE9CX0JSQUNFCisrI2RlZmluZSBHTE9CX0JSQUNFIDAKKysjZW5kaWYKKysKKyAKKyAvKiBUaGlzIHJlYWRzIGFsbCBmaWxlcyBsaXN0ZWQgaW4gL2V0Yy90bXBmaWxlcy5kLz8qLmNvbmYgYW5kIGNyZWF0ZXMKKyAgKiB0aGVtIGluIHRoZSBmaWxlIHN5c3RlbS4gVGhpcyBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIGNyZWF0ZQorQEAgLTEyODgsNyArMTI5NCw5IEBAIHN0YXRpYyBpbnQgaXRlbV9kb19jaGlsZHJlbihJdGVtICppLCBjb25zdCBjaGFyICpwYXRoLCBhY3Rpb25fdCBhY3Rpb24pIHsKKyAKKyBzdGF0aWMgaW50IGdsb2JfaXRlbShJdGVtICppLCBhY3Rpb25fdCBhY3Rpb24sIGJvb2wgcmVjdXJzaXZlKSB7CisgICAgICAgICBfY2xlYW51cF9nbG9iZnJlZV8gZ2xvYl90IGcgPSB7CisrI2lmZGVmIEdMT0JfQUxURElSRlVOQworICAgICAgICAgICAgICAgICAuZ2xfb3BlbmRpciA9ICh2b2lkICooKikoY29uc3QgY2hhciAqKSkgb3BlbmRpcl9ub21vZCwKKysjZW5kaWYKKyAgICAgICAgIH07CisgICAgICAgICBpbnQgciA9IDAsIGs7CisgICAgICAgICBjaGFyICoqZm47CistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTYtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1fX2NvbXBhcl9mbl90LS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNi1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLV9fY29tcGFyX2ZuX3QtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzMDM3ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTYtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1fX2NvbXBhcl9mbl90LS5wYXRjaApAQCAtMCwwICsxLDQ3IEBACitGcm9tIGVmYzU3ODU2Zjk2MWMxZjNiZjAxNmM1MTFjNTNkOTkwZGI4YWJkZmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KK0RhdGU6IE1vbiwgMjMgT2N0IDIwMTcgMTE6MzE6MDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxNi8zMV0gc3JjL2Jhc2ljL21pc3NpbmcuaDogY2hlY2sgZm9yIG1pc3NpbmcgX19jb21wYXJfZm5fdAorIHR5cGVkZWYKKworaW5jbHVkZSBtaXNzaW5nLmggZm9yIG1pc3NpbmcgX19jb21wYXJfZm5fdAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9iYXNpYy9taXNzaW5nLmggfCA1ICsrKysrCisgc3JjL2Jhc2ljL3N0cmJ1Zi5jICB8IDEgKworIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZy5oIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAoraW5kZXggMDdhOGM4MzY0Li4xYWVlMzM0NmEgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvbWlzc2luZy5oCisrKysgYi9zcmMvYmFzaWMvbWlzc2luZy5oCitAQCAtMTE2Miw2ICsxMTYyLDExIEBAIHN0cnVjdCBpbnB1dF9tYXNrIHsKKyAjZGVmaW5lIFJFTkFNRV9OT1JFUExBQ0UgKDEgPDwgMCkKKyAjZW5kaWYKKyAKKysjaWZuZGVmIF9fQ09NUEFSX0ZOX1QKKysjZGVmaW5lIF9fQ09NUEFSX0ZOX1QKKyt0eXBlZGVmIGludCAoKl9fY29tcGFyX2ZuX3QpKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTsKKysjZW5kaWYKKysKKyAjaWZuZGVmIEtDTVBfRklMRQorICNkZWZpbmUgS0NNUF9GSUxFIDAKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvc3RyYnVmLmMgYi9zcmMvYmFzaWMvc3RyYnVmLmMKK2luZGV4IDhiZWZmZmE2Ni4uYmNiODYwZjk1IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3N0cmJ1Zi5jCisrKysgYi9zcmMvYmFzaWMvc3RyYnVmLmMKK0BAIC0yNCw2ICsyNCw3IEBACisgCisgI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKKyAjaW5jbHVkZSAic3RyYnVmLmgiCisrI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAKKyAvKgorICAqIFN0cmJ1ZiBzdG9yZXMgZ2l2ZW4gc3RyaW5ncyBpbiBhIHNpbmdsZSBjb250aW51b3VzIGFsbG9jYXRlZCBtZW1vcnkKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNy1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNy1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDljZmRkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE3LUluY2x1ZGUtbmV0aW5ldC1pZl9ldGhlci5oLnBhdGNoCkBAIC0wLDAgKzEsODUgQEAKK0Zyb20gZjJiMDE3M2NkOTgwNzg2NGRiMWVmM2IxMDJhYmFhNzZlZjM3ZTUwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjggRmViIDIwMTggMjE6MTk6MTIgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxNy8zMV0gSW5jbHVkZSBuZXRpbmV0L2lmX2V0aGVyLmgKKworRml4ZXMKKy9wYXRoL3RvL3N5c3RlbWQvcmVjaXBlLXN5c3Jvb3QvdXNyL2luY2x1ZGUvbmV0aW5ldC9pZl9ldGhlci5oOjEwMTo4OiBlcnJvcjogcmVkZWZpbml0aW9uIG9mICdzdHJ1Y3QgZXRoaGRyJworIHN0cnVjdCBldGhoZHIgeworICAgICAgICBefn5+fn4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYyB8IDEgKworIHNyYy9uZXR3b3JrL25ldGRldi90dW50YXAuYyAgICAgICAgICAgICAgIHwgMSArCisgc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMgICAgICAgICAgICAgfCAxICsKKyBzcmMvdWRldi9uZXQvZXRodG9vbC11dGlsLmMgICAgICAgICAgICAgICB8IDEgKworIHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jICAgIHwgMSArCisgNSBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jIGIvc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMKK2luZGV4IDBlZTdkNmYwZC4uZWY3NTg5M2E2IDEwMDY0NAorLS0tIGEvc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMKKysrKyBiL3NyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jCitAQCAtMjEsNiArMjEsNyBAQAorICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisrI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KKyAjaW5jbHVkZSA8bGludXgvbmV0bGluay5oPgorICNpbmNsdWRlIDxsaW51eC9ydG5ldGxpbmsuaD4KKyAjaW5jbHVkZSA8bGludXgvZ2VuZXRsaW5rLmg+CitkaWZmIC0tZ2l0IGEvc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jIGIvc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jCitpbmRleCA0ZmM5YjYxMGEuLjYyOGM2MWM1NyAxMDA2NDQKKy0tLSBhL3NyYy9uZXR3b3JrL25ldGRldi90dW50YXAuYworKysrIGIvc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jCitAQCAtMjAsNiArMjAsNyBAQAorIAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxmY250bC5oPgorKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CisgI2luY2x1ZGUgPGxpbnV4L2lmX3R1bi5oPgorICNpbmNsdWRlIDxuZXQvaWYuaD4KKyAjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgorZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMKK2luZGV4IDk5ZGQ0MTYyOS4uOTA0MDdjOWQ4IDEwMDY0NAorLS0tIGEvc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMKKysrKyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jCitAQCAtMTksNiArMTksNyBAQAorICoqKi8KKyAKKyAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CisgI2luY2x1ZGUgPGxpbnV4L2lmX2JyaWRnZS5oPgorICNpbmNsdWRlIDxzdGRib29sLmg+CisgCitkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jIGIvc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jCitpbmRleCA5YmRhZWY4ZDkuLjk0OGY4OWNmOCAxMDA2NDQKKy0tLSBhL3NyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuYworKysrIGIvc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jCitAQCAtMTgsNiArMTgsNyBAQAorICAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKioqLworIAorKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CisgI2luY2x1ZGUgPG5ldC9pZi5oPgorICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyAjaW5jbHVkZSA8bGludXgvZXRodG9vbC5oPgorZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMKK2luZGV4IDQwMTU4ZTBhZi4uYjI0YjNmY2U4IDEwMDY0NAorLS0tIGEvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMKKysrKyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jCitAQCAtMTgsNiArMTgsNyBAQAorICAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKioqLworIAorKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CisgI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKKyAjaW5jbHVkZSAibGluay1jb25maWcuaCIKKyAjaW5jbHVkZSAibG9nLmgiCistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTctcmVtb3ZlLWR1cGxpY2F0ZS1pbmNsdWRlLXVjaGFyLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTctcmVtb3ZlLWR1cGxpY2F0ZS1pbmNsdWRlLXVjaGFyLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyMDA2MzUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE3LXJlbW92ZS1kdXBsaWNhdGUtaW5jbHVkZS11Y2hhci5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbSBlNzhhZjg3NGZjOWYzZDNhZjQ5NDk4YjgyMDcxMDk5OTNkOTNhNTk2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjIgRmViIDIwMTYgMDU6NTk6MDEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxNy8xOV0gcmVtb3ZlIGR1cGxpY2F0ZSBpbmNsdWRlIHVjaGFyLmgKLQotbWlzc2luZy5oIGFscmVhZHkgaW5jbHVkZXMgaXQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gc3JjL2Jhc2ljL2VzY2FwZS5oIHwgMSAtCi0gc3JjL2Jhc2ljL3V0ZjguaCAgIHwgMSAtCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2VzY2FwZS5oIGIvc3JjL2Jhc2ljL2VzY2FwZS5oCi1pbmRleCBkZWFhNGRlLi4zNmQ0MzdjIDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL2VzY2FwZS5oCi0rKysgYi9zcmMvYmFzaWMvZXNjYXBlLmgKLUBAIC0yMyw3ICsyMyw2IEBACi0gI2luY2x1ZGUgPHN0ZGRlZi5oPgotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tI2luY2x1ZGUgPHVjaGFyLmg+Ci0gCi0gI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCi0gI2luY2x1ZGUgIm1pc3NpbmcuaCIKLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvdXRmOC5oIGIvc3JjL2Jhc2ljL3V0ZjguaAotaW5kZXggZjliOWM5NC4uNmFjOWEzYyAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy91dGY4LmgKLSsrKyBiL3NyYy9iYXNpYy91dGY4LmgKLUBAIC0yMiw3ICsyMiw2IEBACi0gI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0gI2luY2x1ZGUgPHN0ZGludC5oPgotLSNpbmNsdWRlIDx1Y2hhci5oPgotIAotICNpbmNsdWRlICJtYWNyby5oIgotICNpbmNsdWRlICJtaXNzaW5nLmgiCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTgtY2hlY2stZm9yLW1pc3NpbmctY2Fub25pY2FsaXplX2ZpbGVfbmFtZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOC1jaGVjay1mb3ItbWlzc2luZy1jYW5vbmljYWxpemVfZmlsZV9uYW1lLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiN2VkZjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTgtY2hlY2stZm9yLW1pc3NpbmctY2Fub25pY2FsaXplX2ZpbGVfbmFtZS5wYXRjaApAQCAtMCwwICsxLDQ3IEBACitGcm9tIDY5MGVlZWY5NTkwYzdlZjFkOWQyYzMxZDhjMWQ1ZDgwNzFkYThjNGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDI2IEZlYiAyMDE4IDE3OjIxOjExICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMTgvMzFdIGNoZWNrIGZvciBtaXNzaW5nIGNhbm9uaWNhbGl6ZV9maWxlX25hbWUKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBtZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgfCAyICsrCisgc3JjL2Jhc2ljL21pc3Npbmdfc3lzY2FsbC5oIHwgNiArKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggMTI4MTFiM2YzLi5mNjUxNWU5N2MgMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC01MjAsNiArNTIwLDggQEAgZm9yZWFjaCBpZGVudCA6IFsKKyAgICAgICAgIFsna2NtcCcsICAgICAgICAgICAgICAnJycjaW5jbHVkZSA8bGludXgva2NtcC5oPicnJ10sCisgICAgICAgICBbJ2tleWN0bCcsICAgICAgICAgICAgJycnI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxrZXl1dGlscy5oPicnJ10sCisrICAgICAgICBbJ2Nhbm9uaWNhbGl6ZV9maWxlX25hbWUnLCAnJycjZGVmaW5lIF9HTlVfU09VUkNFCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8c3RkbGliLmg+JycnXSwKKyAgICAgICAgIFsnY29weV9maWxlX3JhbmdlJywgICAnJycjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8dW5pc3RkLmg+JycnXSwKKyAgICAgICAgIFsnYnBmJywgICAgICAgICAgICAgICAnJycjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZ19zeXNjYWxsLmggYi9zcmMvYmFzaWMvbWlzc2luZ19zeXNjYWxsLmgKK2luZGV4IGM5MzhkMGQ5Ny4uMzA4Yjk0NzJiIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL21pc3Npbmdfc3lzY2FsbC5oCisrKysgYi9zcmMvYmFzaWMvbWlzc2luZ19zeXNjYWxsLmgKK0BAIC0zMSw2ICszMSwxMiBAQCBzdGF0aWMgaW5saW5lIGludCBwaXZvdF9yb290KGNvbnN0IGNoYXIgKm5ld19yb290LCBjb25zdCBjaGFyICpwdXRfb2xkKSB7CisgfQorICNlbmRpZgorIAorKyNpZiAhSEFWRV9DQU5PTklDQUxJWkVfRklMRV9OQU1FCisrc3RhdGljIGlubGluZSBjaGFyICpjYW5vbmljYWxpemVfZmlsZV9uYW1lKGNvbnN0IGNoYXIgKnBhdGgpIHsKKysgICAgICAgIHJldHVybiByZWFscGF0aChwYXRoLCBOVUxMKTsKKyt9CisrI2VuZGlmCisrCisgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KKyAKKyAjaWYgIUhBVkVfTUVNRkRfQ1JFQVRFCistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTgtY2hlY2stZm9yLXVjaGFyLmgtaW4tY29uZmlndXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE4LWNoZWNrLWZvci11Y2hhci5oLWluLWNvbmZpZ3VyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDY3YjczZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTgtY2hlY2stZm9yLXVjaGFyLmgtaW4tY29uZmlndXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotRnJvbSAxMzU1NDU3MDkyYjAyYTE1YzY0NmZjMWM3MmU2OGI2OTRhODZkZDk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjIgRmViIDIwMTYgMDY6MDI6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMi8xNF0gY2hlY2sgZm9yIHVjaGFyLmggaW4gY29uZmlndXJlCi0KLVVzZSBpZmRlZiB0byBpbmNsdWRlIHVjaGFyLmgKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgIHwgMSArCi0gc3JjL2Jhc2ljL21pc3NpbmcuaCB8IDIgKysKLSAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAxMTUwY2E1MGUuLjYwZTdkZjVlZSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzA0LDYgKzMwNCw3IEBAIEFNX0NPTkRJVElPTkFMKFtIQVZFX1BZVEhPTl0sIFt0ZXN0ICJ4JGhhdmVfcHl0aG9uIiA9ICJ4eWVzIl0pCi0gCi0gIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAKLStBQ19DSEVDS19IRUFERVJTKFt1Y2hhci5oXSwgW10sIFtdKQotIEFDX0NIRUNLX0hFQURFUlMoW3N5cy9jYXBhYmlsaXR5LmhdLCBbXSwgW0FDX01TR19FUlJPUihbKioqIFBPU0lYIGNhcHMgaGVhZGVycyBub3QgZm91bmRdKV0pCi0gQUNfQ0hFQ0tfSEVBREVSUyhbbGludXgvYnRyZnMuaF0sIFtdLCBbXSkKLSBBQ19DSEVDS19IRUFERVJTKFtsaW51eC9tZW1mZC5oXSwgW10sIFtdKQotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nLmggYi9zcmMvYmFzaWMvbWlzc2luZy5oCi1pbmRleCAyNWExMWYzNTEuLmQ2MzFiN2UzZSAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9taXNzaW5nLmgKLSsrKyBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLUBAIC0zNyw3ICszNyw5IEBACi0gI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0gI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Ci0rI2lmZGVmIEhBVkVfVUNIQVJfSAotICNpbmNsdWRlIDx1Y2hhci5oPgotKyNlbmRpZgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLSAjaWZkZWYgSEFWRV9BVURJVAotLS0gCi0yLjEzLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE5LURvLW5vdC1lbmFibGUtbnNzLXRlc3RzLWlmLW5zcy1zeXN0ZW1kLWlzLW5vdC1lbmFibGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTktRG8tbm90LWVuYWJsZS1uc3MtdGVzdHMtaWYtbnNzLXN5c3RlbWQtaXMtbm90LWVuYWJsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNmIyMWEwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE5LURvLW5vdC1lbmFibGUtbnNzLXRlc3RzLWlmLW5zcy1zeXN0ZW1kLWlzLW5vdC1lbmFibGUucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSBmNWYzMTM5MTVkNzhiYzQzZWI5NmUyYWFmYjhjZTNjZGEzMDRjMjc3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAyNiBGZWIgMjAxOCAxNzoyNzo1NiArMDgwMAorU3ViamVjdDogW1BBVENIIDE5LzMxXSBEbyBub3QgZW5hYmxlIG5zcyB0ZXN0cyBpZiBuc3Mtc3lzdGVtZCBpcyBub3QgZW5hYmxlZAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy90ZXN0L21lc29uLmJ1aWxkIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tZXNvbi5idWlsZAoraW5kZXggMWRiOGFhMTA3Li5kZjNhMWY1YzUgMTAwNjQ0CistLS0gYS9zcmMvdGVzdC9tZXNvbi5idWlsZAorKysrIGIvc3JjL3Rlc3QvbWVzb24uYnVpbGQKK0BAIC02NDYsNyArNjQ2LDcgQEAgdGVzdHMgKz0gWworICAgICAgICAgW1snc3JjL3Rlc3QvdGVzdC1uc3MuYyddLAorICAgICAgICAgIFtdLAorICAgICAgICAgIFtsaWJkbF0sCistICAgICAgICAgJycsICdtYW51YWwnXSwKKysgICAgICAgICAnRU5BQkxFX05TU19TWVNURU1EJywgJ21hbnVhbCddLAorIF0KKyAKKyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOS1zb2NrZXQtdXRpbC1kb24tdC1mYWlsLWlmLWxpYmMtZG9lc24tdC1zdXBwb3J0LUlETi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOS1zb2NrZXQtdXRpbC1kb24tdC1mYWlsLWlmLWxpYmMtZG9lc24tdC1zdXBwb3J0LUlETi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjYwOTI3Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTktc29ja2V0LXV0aWwtZG9uLXQtZmFpbC1pZi1saWJjLWRvZXNuLXQtc3VwcG9ydC1JRE4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIGI3YzZiZmUyZWM1YWU0MjZlNTg2ZTFkNmVjYWRiNTJhOTcxMjhhM2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCA5IE5vdiAyMDE2IDIwOjQ5OjUzIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTMvMTRdIHNvY2tldC11dGlsOiBkb24ndCBmYWlsIGlmIGxpYmMgZG9lc24ndCBzdXBwb3J0IElETgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0tLS0KLSBzcmMvYmFzaWMvc29ja2V0LXV0aWwuYyB8IDkgKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMgYi9zcmMvYmFzaWMvc29ja2V0LXV0aWwuYwotaW5kZXggMDE2ZTY0YWEwLi5kNDY1ODgyNmUgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvc29ja2V0LXV0aWwuYwotKysrIGIvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMKLUBAIC00Nyw2ICs0NywxNSBAQAotICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKLSAjaW5jbHVkZSAidXRmOC5oIgotICNpbmNsdWRlICJ1dGlsLmgiCi0rLyogRG9uJ3QgZmFpbCBpZiB0aGUgc3RhbmRhcmQgbGlicmFyeQotKyAqIGRvZXNuJ3Qgc3VwcG9ydCBJRE4gKi8KLSsjaWZuZGVmIE5JX0lETgotKyNkZWZpbmUgTklfSUROIDAKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIE5JX0lETl9VU0VfU1REM19BU0NJSV9SVUxFUwotKyNkZWZpbmUgTklfSUROX1VTRV9TVEQzX0FTQ0lJX1JVTEVTIDAKLSsjZW5kaWYKLSAKLSAjaWZkZWYgRU5BQkxFX0lETgotICMgIGRlZmluZSBJRE5fRkxBR1MgKE5JX0lETnxOSV9JRE5fVVNFX1NURDNfQVNDSUlfUlVMRVMpCi0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjAtdGVzdC1oZXhkZWNvY3QuYy1JbmNsdWRlLW1pc3NpbmcuaC1mb3Itc3RybmR1cGEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjAtdGVzdC1oZXhkZWNvY3QuYy1JbmNsdWRlLW1pc3NpbmcuaC1mb3Itc3RybmR1cGEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ0OWNmZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMC10ZXN0LWhleGRlY29jdC5jLUluY2x1ZGUtbWlzc2luZy5oLWZvci1zdHJuZHVwYS5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIGQ2M2QyZmVkY2Q4MGU1OGVlNTM2NTVhZWFmMjgzNmQ0YjBhMTQ2NTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMjozMzoyMiAtMDcwMAorU3ViamVjdDogW1BBVENIIDIwLzMxXSB0ZXN0LWhleGRlY29jdC5jOiBJbmNsdWRlIG1pc3NpbmcuaCBmb3Igc3RybmR1cGEKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jIGIvc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYworaW5kZXggM2UyNWEwYmFjLi5hYjNlNTA4ZjEgMTAwNjQ0CistLS0gYS9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jCisrKysgYi9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jCitAQCAtMjQsNiArMjQsNyBAQAorICNpbmNsdWRlICJoZXhkZWNvY3QuaCIKKyAjaW5jbHVkZSAibWFjcm8uaCIKKyAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZy5oIgorIAorIHN0YXRpYyB2b2lkIHRlc3RfaGV4Y2hhcih2b2lkKSB7CisgICAgICAgICBhc3NlcnRfc2UoaGV4Y2hhcigweGEpID09ICdhJyk7CistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjEtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMS10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljOGFlY2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjEtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIGRmZWE0Yjk4ODQ0Nzk1YTBjZDE0ZmRhZjQwYzY3ZGYzODlkYmQyN2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDI4IEZlYiAyMDE4IDIxOjI1OjIyIC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMjEvMzFdIHRlc3Qtc2l6ZW9mLmM6IERpc2FibGUgdGVzdHMgZm9yIG1pc3NpbmcgdHlwZWRlZnMgaW4KKyBtdXNsCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL3Rlc3QvdGVzdC1zaXplb2YuYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMgYi9zcmMvdGVzdC90ZXN0LXNpemVvZi5jCitpbmRleCBhZWQ2ZGI4NDIuLjBkZTZmYTYzYyAxMDA2NDQKKy0tLSBhL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKKysrKyBiL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKK0BAIC01MCw4ICs1MCwxMCBAQCBpbnQgbWFpbih2b2lkKSB7CisgICAgICAgICBpbmZvKHVuc2lnbmVkKTsKKyAgICAgICAgIGluZm8obG9uZyB1bnNpZ25lZCk7CisgICAgICAgICBpbmZvKGxvbmcgbG9uZyB1bnNpZ25lZCk7CisrI2lmZGVmIF9fR0xJQkNfXworICAgICAgICAgaW5mbyhfX3N5c2NhbGxfdWxvbmdfdCk7CisgICAgICAgICBpbmZvKF9fc3lzY2FsbF9zbG9uZ190KTsKKysjZW5kaWYKKyAKKyAgICAgICAgIGluZm8oZmxvYXQpOworICAgICAgICAgaW5mbyhkb3VibGUpOworQEAgLTYxLDcgKzYzLDkgQEAgaW50IG1haW4odm9pZCkgeworICAgICAgICAgaW5mbyhzc2l6ZV90KTsKKyAgICAgICAgIGluZm8odGltZV90KTsKKyAgICAgICAgIGluZm8odXNlY190KTsKKysjaWZkZWYgX19HTElCQ19fCisgICAgICAgICBpbmZvKF9fdGltZV90KTsKKysjZW5kaWYKKyAgICAgICAgIGluZm8ocGlkX3QpOworICAgICAgICAgaW5mbyh1aWRfdCk7CisgICAgICAgICBpbmZvKGdpZF90KTsKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMi1kb24tdC11c2UtZ2xpYmMtc3BlY2lmaWMtcXNvcnRfci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMi1kb24tdC11c2UtZ2xpYmMtc3BlY2lmaWMtcXNvcnRfci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWY3NDQyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIyLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoCkBAIC0wLDAgKzEsMTA1IEBACitGcm9tIGQzNDM3NTdkNjI5NDAyYzcwY2E4ZTVlYWE1NTFkZWFmMTc1Yzk2ZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KK0RhdGU6IFRodSwgMTggU2VwIDIwMTQgMTU6MjQ6NTYgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAyMi8zMV0gZG9uJ3QgdXNlIGdsaWJjLXNwZWNpZmljIHFzb3J0X3IKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvaHdkYi9od2RiLmMgICAgICAgICB8IDE4ICsrKysrKysrKysrLS0tLS0tLQorIHNyYy91ZGV2L3VkZXZhZG0taHdkYi5jIHwgMTYgKysrKysrKysrKy0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvaHdkYi9od2RiLmMgYi9zcmMvaHdkYi9od2RiLmMKK2luZGV4IDQ1NDAyNjBmOS4uODFhY2E3YTliIDEwMDY0NAorLS0tIGEvc3JjL2h3ZGIvaHdkYi5jCisrKysgYi9zcmMvaHdkYi9od2RiLmMKK0BAIC0xNTIsMTMgKzE1MiwxMiBAQCBzdGF0aWMgdm9pZCB0cmllX2ZyZWUoc3RydWN0IHRyaWUgKnRyaWUpIHsKKyAKKyBERUZJTkVfVFJJVklBTF9DTEVBTlVQX0ZVTkMoc3RydWN0IHRyaWUqLCB0cmllX2ZyZWUpOworIAorLXN0YXRpYyBpbnQgdHJpZV92YWx1ZXNfY21wKGNvbnN0IHZvaWQgKnYxLCBjb25zdCB2b2lkICp2Miwgdm9pZCAqYXJnKSB7Cisrc3RhdGljIHN0cnVjdCB0cmllICp0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWU7Cisrc3RhdGljIGludCB0cmllX3ZhbHVlc19jbXAoY29uc3Qgdm9pZCAqdjEsIGNvbnN0IHZvaWQgKnYyKSB7CisgICAgICAgICBjb25zdCBzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSAqdmFsMSA9IHYxOworICAgICAgICAgY29uc3Qgc3RydWN0IHRyaWVfdmFsdWVfZW50cnkgKnZhbDIgPSB2MjsKKy0gICAgICAgIHN0cnVjdCB0cmllICp0cmllID0gYXJnOworLQorLSAgICAgICAgcmV0dXJuIHN0cmNtcCh0cmllLT5zdHJpbmdzLT5idWYgKyB2YWwxLT5rZXlfb2ZmLAorLSAgICAgICAgICAgICAgICAgICAgICB0cmllLT5zdHJpbmdzLT5idWYgKyB2YWwyLT5rZXlfb2ZmKTsKKysgICAgICAgIHJldHVybiBzdHJjbXAodHJpZV9ub2RlX2FkZF92YWx1ZV90cmllLT5zdHJpbmdzLT5idWYgKyB2YWwxLT5rZXlfb2ZmLAorKyAgICAgICAgICAgICAgICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDItPmtleV9vZmYpOworIH0KKyAKKyBzdGF0aWMgaW50IHRyaWVfbm9kZV9hZGRfdmFsdWUoc3RydWN0IHRyaWUgKnRyaWUsIHN0cnVjdCB0cmllX25vZGUgKm5vZGUsCitAQCAtMTgzLDcgKzE4MiwxMCBAQCBzdGF0aWMgaW50IHRyaWVfbm9kZV9hZGRfdmFsdWUoc3RydWN0IHRyaWUgKnRyaWUsIHN0cnVjdCB0cmllX25vZGUgKm5vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlX29mZiA9IHYsCisgICAgICAgICAgICAgICAgIH07CisgCistICAgICAgICAgICAgICAgIHZhbCA9IHhic2VhcmNoX3IoJnNlYXJjaCwgbm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCwgdHJpZSk7CisrICAgICAgICAgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IHRyaWU7CisrICAgICAgICAgICAgICAgIHZhbCA9IGJzZWFyY2goJnNlYXJjaCwgbm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCk7CisrICAgICAgICAgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IE5VTEw7CisrCisgICAgICAgICAgICAgICAgIGlmICh2YWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBdCB0aGlzIHBvaW50IHdlIGhhdmUgMiBpZGVudGljYWwgcHJvcGVydGllcyBvbiB0aGUgc2FtZSBtYXRjaC1zdHJpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICogU2luY2Ugd2UgcHJvY2VzcyBmaWxlcyBpbiBvcmRlciwgd2UganVzdCByZXBsYWNlIHRoZSBwcmV2aW91cyB2YWx1ZS4KK0BAIC0yMDgsNyArMjEwLDkgQEAgc3RhdGljIGludCB0cmllX25vZGVfYWRkX3ZhbHVlKHN0cnVjdCB0cmllICp0cmllLCBzdHJ1Y3QgdHJpZV9ub2RlICpub2RlLAorICAgICAgICAgbm9kZS0+dmFsdWVzW25vZGUtPnZhbHVlc19jb3VudF0uZmlsZV9wcmlvcml0eSA9IGZpbGVfcHJpb3JpdHk7CisgICAgICAgICBub2RlLT52YWx1ZXNbbm9kZS0+dmFsdWVzX2NvdW50XS5saW5lX251bWJlciA9IGxpbmVfbnVtYmVyOworICAgICAgICAgbm9kZS0+dmFsdWVzX2NvdW50Kys7CistICAgICAgICBxc29ydF9yKG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXAsIHRyaWUpOworKyAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gdHJpZTsKKysgICAgICAgIHFzb3J0KG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXApOworKyAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gTlVMTDsKKyAgICAgICAgIHJldHVybiAwOworIH0KKyAKK2RpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2YWRtLWh3ZGIuYyBiL3NyYy91ZGV2L3VkZXZhZG0taHdkYi5jCitpbmRleCBhYjVkYzdhYjYuLmM3NzdlMzBhYiAxMDA2NDQKKy0tLSBhL3NyYy91ZGV2L3VkZXZhZG0taHdkYi5jCisrKysgYi9zcmMvdWRldi91ZGV2YWRtLWh3ZGIuYworQEAgLTEzMCwxMyArMTMwLDEzIEBAIHN0YXRpYyB2b2lkIHRyaWVfbm9kZV9jbGVhbnVwKHN0cnVjdCB0cmllX25vZGUgKm5vZGUpIHsKKyAgICAgICAgIGZyZWUobm9kZSk7CisgfQorIAorLXN0YXRpYyBpbnQgdHJpZV92YWx1ZXNfY21wKGNvbnN0IHZvaWQgKnYxLCBjb25zdCB2b2lkICp2Miwgdm9pZCAqYXJnKSB7Cisrc3RhdGljIHN0cnVjdCB0cmllICp0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWU7Cisrc3RhdGljIGludCB0cmllX3ZhbHVlc19jbXAoY29uc3Qgdm9pZCAqdjEsIGNvbnN0IHZvaWQgKnYyKSB7CisgICAgICAgICBjb25zdCBzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSAqdmFsMSA9IHYxOworICAgICAgICAgY29uc3Qgc3RydWN0IHRyaWVfdmFsdWVfZW50cnkgKnZhbDIgPSB2MjsKKy0gICAgICAgIHN0cnVjdCB0cmllICp0cmllID0gYXJnOworIAorLSAgICAgICAgcmV0dXJuIHN0cmNtcCh0cmllLT5zdHJpbmdzLT5idWYgKyB2YWwxLT5rZXlfb2ZmLAorLSAgICAgICAgICAgICAgICAgICAgICB0cmllLT5zdHJpbmdzLT5idWYgKyB2YWwyLT5rZXlfb2ZmKTsKKysgICAgICAgIHJldHVybiBzdHJjbXAodHJpZV9ub2RlX2FkZF92YWx1ZV90cmllLT5zdHJpbmdzLT5idWYgKyB2YWwxLT5rZXlfb2ZmLAorKyAgICAgICAgICAgICAgICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDItPmtleV9vZmYpOworIH0KKyAKKyBzdGF0aWMgaW50IHRyaWVfbm9kZV9hZGRfdmFsdWUoc3RydWN0IHRyaWUgKnRyaWUsIHN0cnVjdCB0cmllX25vZGUgKm5vZGUsCitAQCAtMTU3LDcgKzE1Nyw5IEBAIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVfb2ZmID0gdiwKKyAgICAgICAgICAgICAgICAgfTsKKyAKKy0gICAgICAgICAgICAgICAgdmFsID0geGJzZWFyY2hfcigmc2VhcmNoLCBub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wLCB0cmllKTsKKysgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gdHJpZTsKKysgICAgICAgICAgICAgICAgdmFsID0gYnNlYXJjaCgmc2VhcmNoLCBub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wKTsKKysgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgaWYgKHZhbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlcGxhY2UgZXhpc3RpbmcgZWFybGllciBrZXkgd2l0aCBuZXcgdmFsdWUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICB2YWwtPnZhbHVlX29mZiA9IHY7CitAQCAtMTc0LDcgKzE3Niw5IEBAIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKKyAgICAgICAgIG5vZGUtPnZhbHVlc1tub2RlLT52YWx1ZXNfY291bnRdLmtleV9vZmYgPSBrOworICAgICAgICAgbm9kZS0+dmFsdWVzW25vZGUtPnZhbHVlc19jb3VudF0udmFsdWVfb2ZmID0gdjsKKyAgICAgICAgIG5vZGUtPnZhbHVlc19jb3VudCsrOworLSAgICAgICAgcXNvcnRfcihub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wLCB0cmllKTsKKysgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IHRyaWU7CisrICAgICAgICBxc29ydChub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wKTsKKysgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IE5VTEw7CisgICAgICAgICByZXR1cm4gMDsKKyB9CisgCistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjMtZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIzLWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWMyYjVjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIzLWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaApAQCAtMCwwICsxLDk5IEBACitGcm9tIDdiODAyYWRhMTIwN2VkMDBlZDM4NjdiOTgwNGRkMGYzMTY2NDFiOWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorRGF0ZTogVHVlLCAxMCBPY3QgMjAxNyAxNDozMzozMCAtMDcwMAorU3ViamVjdDogW1BBVENIIDIzLzMxXSBkb24ndCBwYXNzIEFUX1NZTUxJTktfTk9GT0xMT1cgZmxhZyB0byBmYWNjZXNzYXQoKQorCitBdm9pZCB1c2luZyBBVF9TWU1MSU5LX05PRk9MTE9XIGZsYWcuIEl0IGRvZXNuJ3Qgc2VlbSBsaWtlIHRoZSByaWdodAordGhpbmcgdG8gZG8gYW5kIGl0J3Mgbm90IHBvcnRhYmxlIChub3Qgc3VwcG9ydGVkIGJ5IG11c2wpLiBTZWU6CisKKyAgaHR0cDovL2xpc3RzLmxhbmRsZXkubmV0L3BpcGVybWFpbC90b3lib3gtbGFuZGxleS5uZXQvMjAxNC1TZXB0ZW1iZXIvMDAzNjEwLmh0bWwKKyAgaHR0cDovL3d3dy5vcGVud2FsbC5jb20vbGlzdHMvbXVzbC8yMDE1LzAyLzA1LzIKKworTm90ZSB0aGF0IGxhY2Nlc3MoKSBpcyBuZXZlciBwYXNzaW5nIEFUX0VBQ0NFU1Mgc28gYSBsb3Qgb2YgdGhlCitkaXNjdXNzaW9uIGluIHRoZSBsaW5rcyBhYm92ZSBkb2Vzbid0IGFwcGx5LiBOb3RlIGFsc28gdGhhdAorKGN1cnJlbnRseSkgYWxsIHN5c3RlbWQgY2FsbGVycyBvZiBsYWNjZXNzKCkgcGFzcyBtb2RlIGFzIEZfT0ssIHNvCitvbmx5IGNoZWNrIGZvciBleGlzdGVuY2Ugb2YgYSBmaWxlLCBub3QgYWNjZXNzIHBlcm1pc3Npb25zLgorVGhlcmVmb3JlLCBpbiB0aGlzIGNhc2UsIHRoZSBvbmx5IGRpc3RpY3Rpb24gYmV0d2VlbiBmYWNjZXNzYXQoKQord2l0aCAoZmxhZyA9PSAwKSBhbmQgKGZsYWcgPT0gQVRfU1lNTElOS19OT0ZPTExPVykgaXMgdGhlIGJlaGF2aW91cgorZm9yIGJyb2tlbiBzeW1saW5rczsgbGFjY2VzcygpIG9uIGEgYnJva2VuIHN5bWxpbmsgd2lsbCBzdWNjZWVkIHdpdGgKKyhmbGFnID09IEFUX1NZTUxJTktfTk9GT0xMT1cpIGFuZCBmYWlsIChmbGFnID09IDApLgorCitUaGUgbGFjY2VzcygpIG1hY3JvcyB3YXMgYWRkZWQgdG8gc3lzdGVtZCBzb21lIHRpbWUgYWdvIGFuZCBpdCdzIG5vdAorY2xlYXIgaWYgb3Igd2h5IGl0IG5lZWRzIHRvIHJldHVybiBzdWNjZXNzIGZvciBicm9rZW4gc3ltbGlua3MuIE1heWJlCitqdXN0IGhpc3RvcmljYWwgYW5kIG5vdCBhY3R1YWxseSBuZWNlc3Nhcnkgb3IgZGVzaXJlZCBiZWhhdmlvdXI/CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorLS0tCisgc3JjL2Jhc2ljL2ZzLXV0aWwuaCAgICAgICAgICB8IDIyICsrKysrKysrKysrKysrKysrKysrKy0KKyBzcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jIHwgIDYgKysrLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2ZzLXV0aWwuaCBiL3NyYy9iYXNpYy9mcy11dGlsLmgKK2luZGV4IDRkYmExZWE1Ni4uOWM0YjAyZWNjIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL2ZzLXV0aWwuaAorKysrIGIvc3JjL2Jhc2ljL2ZzLXV0aWwuaAorQEAgLTUwLDcgKzUwLDI3IEBAIGludCBmY2htb2RfdW1hc2soaW50IGZkLCBtb2RlX3QgbW9kZSk7CisgCisgaW50IGZkX3dhcm5fcGVybWlzc2lvbnMoY29uc3QgY2hhciAqcGF0aCwgaW50IGZkKTsKKyAKKy0jZGVmaW5lIGxhY2Nlc3MocGF0aCwgbW9kZSkgZmFjY2Vzc2F0KEFUX0ZEQ1dELCAocGF0aCksIChtb2RlKSwgQVRfU1lNTElOS19OT0ZPTExPVykKKysvKgorKyAgIEF2b2lkIHVzaW5nIEFUX1NZTUxJTktfTk9GT0xMT1cgZmxhZy4gSXQgZG9lc24ndCBzZWVtIGxpa2UgdGhlIHJpZ2h0IHRoaW5nIHRvCisrICAgZG8gYW5kIGl0J3Mgbm90IHBvcnRhYmxlIChub3Qgc3VwcG9ydGVkIGJ5IG11c2wpLiBTZWU6CisrCisrICAgICBodHRwOi8vbGlzdHMubGFuZGxleS5uZXQvcGlwZXJtYWlsL3RveWJveC1sYW5kbGV5Lm5ldC8yMDE0LVNlcHRlbWJlci8wMDM2MTAuaHRtbAorKyAgICAgaHR0cDovL3d3dy5vcGVud2FsbC5jb20vbGlzdHMvbXVzbC8yMDE1LzAyLzA1LzIKKysKKysgICBOb3RlIHRoYXQgbGFjY2VzcygpIGlzIG5ldmVyIHBhc3NpbmcgQVRfRUFDQ0VTUyBzbyBhIGxvdCBvZiB0aGUgZGlzY3Vzc2lvbiBpbgorKyAgIHRoZSBsaW5rcyBhYm92ZSBkb2Vzbid0IGFwcGx5LiBOb3RlIGFsc28gdGhhdCAoY3VycmVudGx5KSBhbGwgc3lzdGVtZCBjYWxsZXJzCisrICAgb2YgbGFjY2VzcygpIHBhc3MgbW9kZSBhcyBGX09LLCBzbyBvbmx5IGNoZWNrIGZvciBleGlzdGVuY2Ugb2YgYSBmaWxlLCBub3QKKysgICBhY2Nlc3MgcGVybWlzc2lvbnMuIFRoZXJlZm9yZSwgaW4gdGhpcyBjYXNlLCB0aGUgb25seSBkaXN0aWN0aW9uIGJldHdlZW4KKysgICBmYWNjZXNzYXQoKSB3aXRoIChmbGFnID09IDApIGFuZCAoZmxhZyA9PSBBVF9TWU1MSU5LX05PRk9MTE9XKSBpcyB0aGUKKysgICBiZWhhdmlvdXIgZm9yIGJyb2tlbiBzeW1saW5rczsgbGFjY2VzcygpIG9uIGEgYnJva2VuIHN5bWxpbmsgd2lsbCBzdWNjZWVkCisrICAgd2l0aCAoZmxhZyA9PSBBVF9TWU1MSU5LX05PRk9MTE9XKSBhbmQgZmFpbCAoZmxhZyA9PSAwKS4KKysKKysgICBUaGUgbGFjY2VzcygpIG1hY3JvcyB3YXMgYWRkZWQgdG8gc3lzdGVtZCBzb21lIHRpbWUgYWdvIGFuZCBpdCdzIG5vdCBjbGVhciBpZgorKyAgIG9yIHdoeSBpdCBuZWVkcyB0byByZXR1cm4gc3VjY2VzcyBmb3IgYnJva2VuIHN5bWxpbmtzLiBNYXliZSBqdXN0IGhpc3RvcmljYWwKKysgICBhbmQgbm90IGFjdHVhbGx5IG5lY2Vzc2FyeSBvciBkZXNpcmVkIGJlaGF2aW91cj8KKysqLworKworKyNkZWZpbmUgbGFjY2VzcyhwYXRoLCBtb2RlKSBmYWNjZXNzYXQoQVRfRkRDV0QsIChwYXRoKSwgKG1vZGUpLCAwKQorIAorIGludCB0b3VjaF9maWxlKGNvbnN0IGNoYXIgKnBhdGgsIGJvb2wgcGFyZW50cywgdXNlY190IHN0YW1wLCB1aWRfdCB1aWQsIGdpZF90IGdpZCwgbW9kZV90IG1vZGUpOworIGludCB0b3VjaChjb25zdCBjaGFyICpwYXRoKTsKK2RpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jIGIvc3JjL3NoYXJlZC9iYXNlLWZpbGVzeXN0ZW0uYworaW5kZXggM2MyNWFhNTM0Li41NzRjYTcxYzcgMTAwNjQ0CistLS0gYS9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jCisrKysgYi9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jCitAQCAtNzEsNyArNzEsNyBAQCBpbnQgYmFzZV9maWxlc3lzdGVtX2NyZWF0ZShjb25zdCBjaGFyICpyb290LCB1aWRfdCB1aWQsIGdpZF90IGdpZCkgeworICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2Vycm9yX2Vycm5vKGVycm5vLCAiRmFpbGVkIHRvIG9wZW4gcm9vdCBmaWxlIHN5c3RlbTogJW0iKTsKKyAKKyAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBFTEVNRU5UU09GKHRhYmxlKTsgaSArKykgeworLSAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCB0YWJsZVtpXS5kaXIsIEZfT0ssIEFUX1NZTUxJTktfTk9GT0xMT1cpID49IDApCisrICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHRhYmxlW2ldLmRpciwgRl9PSywgMCkgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAKKyAgICAgICAgICAgICAgICAgaWYgKHRhYmxlW2ldLnRhcmdldCkgeworQEAgLTc5LDcgKzc5LDcgQEAgaW50IGJhc2VfZmlsZXN5c3RlbV9jcmVhdGUoY29uc3QgY2hhciAqcm9vdCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjaGVjayBpZiBvbmUgb2YgdGhlIHRhcmdldHMgZXhpc3RzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgTlVMU1RSX0ZPUkVBQ0gocywgdGFibGVbaV0udGFyZ2V0KSB7CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCBzLCBGX09LLCBBVF9TWU1MSU5LX05PRk9MTE9XKSA8IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCBzLCBGX09LLCAwKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY2hlY2sgaWYgYSBzcGVjaWZpYyBmaWxlIGV4aXN0cyBhdCB0aGUgdGFyZ2V0IHBhdGggKi8KK0BAIC05MCw3ICs5MCw3IEBAIGludCBiYXNlX2ZpbGVzeXN0ZW1fY3JlYXRlKGNvbnN0IGNoYXIgKnJvb3QsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX29vbSgpOworIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCBwLCBGX09LLCBBVF9TWU1MSU5LX05PRk9MTE9XKSA8IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHAsIEZfT0ssIDApIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyNC1jb21wYXJpc29uX2ZuX3QtaXMtZ2xpYmMtc3BlY2lmaWMtdXNlLXJhdy1zaWduYXR1cmUtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI0LWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmU3ZTYyMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyNC1jb21wYXJpc29uX2ZuX3QtaXMtZ2xpYmMtc3BlY2lmaWMtdXNlLXJhdy1zaWduYXR1cmUtLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gNzZjNzFhYTg4OTE1NWYyOWJlMWQ1ZDJiNzRhMmM0ZmFhNTkwOWM4YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDEyIFNlcCAyMDE1IDE4OjUzOjMxICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMjQvMzFdIGNvbXBhcmlzb25fZm5fdCBpcyBnbGliYyBzcGVjaWZpYywgdXNlIHJhdyBzaWduYXR1cmUgaW4KKyBmdW5jdGlvbiBwb2ludGVyCisKK21ha2UgaXQgd29yayB3aXRoIG11c2wgd2hlcmUgY29tcGFyaXNvbl9mbl90IGlzIG5vdCBwcm92aWRlZAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9iYXNpYy91dGlsLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvdXRpbC5oIGIvc3JjL2Jhc2ljL3V0aWwuaAoraW5kZXggOWQxYjEwNzU2Li4xMmRiNTNhOTMgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvdXRpbC5oCisrKysgYi9zcmMvYmFzaWMvdXRpbC5oCitAQCAtOTUsNyArOTUsNyBAQCB2b2lkICp4YnNlYXJjaF9yKGNvbnN0IHZvaWQgKmtleSwgY29uc3Qgdm9pZCAqYmFzZSwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSwKKyAgKiBOb3JtYWwgcXNvcnQgcmVxdWlyZXMgYmFzZSB0byBiZSBub25udWxsLiBIZXJlIHdlcmUgcmVxdWlyZQorICAqIHRoYXQgb25seSBpZiBubWVtYiA+IDAuCisgICovCistc3RhdGljIGlubGluZSB2b2lkIHFzb3J0X3NhZmUodm9pZCAqYmFzZSwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSwgY29tcGFyaXNvbl9mbl90IGNvbXBhcikgeworK3N0YXRpYyBpbmxpbmUgdm9pZCBxc29ydF9zYWZlKHZvaWQgKmJhc2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsIGludCAoKmNvbXBhcikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKSB7CisgICAgICAgICBpZiAobm1lbWIgPD0gMSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuOworIAorLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI1LURlZmluZS1fUEFUSF9XVE1QWC1hbmQtX1BBVEhfVVRNUFgtaWYtbm90LWRlZmluZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjUtRGVmaW5lLV9QQVRIX1dUTVBYLWFuZC1fUEFUSF9VVE1QWC1pZi1ub3QtZGVmaW5lZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Mzc2YThmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI1LURlZmluZS1fUEFUSF9XVE1QWC1hbmQtX1BBVEhfVVRNUFgtaWYtbm90LWRlZmluZWQucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSBhMGIxNDk2MzIyZjRkN2NlODNmNGZiZmQyYTkwYjkxZDA3MjFmNjQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjQgT2N0IDIwMTcgMjM6MDg6MjQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyNS8zMV0gRGVmaW5lIF9QQVRIX1dUTVBYIGFuZCBfUEFUSF9VVE1QWCBpZiBub3QgZGVmaW5lZAorCitNdXNsIG5lZWRzIHRoZXNlIGRlZmluZXMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvc2hhcmVkL3V0bXAtd3RtcC5jIHwgOCArKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvdXRtcC13dG1wLmMgYi9zcmMvc2hhcmVkL3V0bXAtd3RtcC5jCitpbmRleCBjYWIxY2Q2YTIuLmY1ZWVkYWMxOCAxMDA2NDQKKy0tLSBhL3NyYy9zaGFyZWQvdXRtcC13dG1wLmMKKysrKyBiL3NyYy9zaGFyZWQvdXRtcC13dG1wLmMKK0BAIC0yOCw2ICsyOCw3IEBACisgI2luY2x1ZGUgPHN5cy90aW1lLmg+CisgI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorKyNpbmNsdWRlIDx1dG1wLmg+CisgI2luY2x1ZGUgPHV0bXB4Lmg+CisgCisgI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKK0BAIC00Miw2ICs0MywxMyBAQAorICNpbmNsdWRlICJ1dGlsLmgiCisgI2luY2x1ZGUgInV0bXAtd3RtcC5oIgorIAorKyNpZiBkZWZpbmVkIF9QQVRIX1VUTVAgJiYgIWRlZmluZWQgX1BBVEhfVVRNUFgKKysjIGRlZmluZSBfUEFUSF9VVE1QWCBfUEFUSF9VVE1QCisrI2VuZGlmCisrI2lmIGRlZmluZWQgX1BBVEhfV1RNUCAmJiAhZGVmaW5lZCBfUEFUSF9XVE1QWAorKyMgZGVmaW5lIF9QQVRIX1dUTVBYIF9QQVRIX1dUTVAKKysjZW5kaWYKKysKKyBpbnQgdXRtcF9nZXRfcnVubGV2ZWwoaW50ICpydW5sZXZlbCwgaW50ICpwcmV2aW91cykgeworICAgICAgICAgc3RydWN0IHV0bXB4ICpmb3VuZCwgbG9va3VwID0geyAudXRfdHlwZSA9IFJVTl9MVkwgfTsKKyAgICAgICAgIGludCByOworLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI2LVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyNi1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZkNzVhZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyNi1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2gKQEAgLTAsMCArMSw4OSBAQAorRnJvbSA4OGM0OGVhODRkYjZmZGExOWRmYWViNjQ1NDVmY2NmOGZhMDUyNWVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjcgT2N0IDIwMTcgMTM6MDA6NDEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyNi8zMV0gVXNlIHVpbnRtYXhfdCBmb3IgaGFuZGxpbmcgcmxpbV90CisKK1BSSXV7MzIsNjR9IGlzIG5vdCByaWdodCBmb3JtYXQgdG8gcmVwcmVzZW50IHJsaW1fdCB0eXBlCit0aGVyZWZvcmUgdXNlICVqdSBhbmQgdHlwZWNhc3QgdGhlIHJsaW1fdCB2YXJpYWJsZXMgdG8KK3VpbnRtYXhfdC4KKworRml4ZXMgcG9ydGFibGlsaXR5IGVycm9ycyBsaWtlCisKK2V4ZWN1dGUuYzozNDQ2OjM2OiBlcnJvcjogZm9ybWF0ICclbHUnIGV4cGVjdHMgYXJndW1lbnQgb2YgdHlwZSAnbG9uZyB1bnNpZ25lZCBpbnQnLCBidXQgYXJndW1lbnQgNSBoYXMgdHlwZSAncmxpbV90IHtha2EgbG9uZyBsb25nIHVuc2lnbmVkIGludH0nIFstV2Vycm9yPWZvcm1hdD1dCit8ICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGYsICIlcyVzOiAiIFJMSU1fRk1UICJcbiIsCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcmxpbWl0X3RvX3N0cmluZyhpKSwgYy0+cmxpbWl0W2ldLT5ybGltX21heCk7Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9wdWxsLzcxOTldCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvYmFzaWMvZm9ybWF0LXV0aWwuaCB8IDggLS0tLS0tLS0KKyBzcmMvYmFzaWMvcmxpbWl0LXV0aWwuYyB8IDggKysrKy0tLS0KKyBzcmMvY29yZS9leGVjdXRlLmMgICAgICB8IDggKysrKy0tLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvZm9ybWF0LXV0aWwuaCBiL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oCitpbmRleCBkOWE3OGY3ODEuLjlhMWJjMjFkNyAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oCisrKysgYi9zcmMvYmFzaWMvZm9ybWF0LXV0aWwuaAorQEAgLTYxLDE0ICs2MSw2IEBACisgIyAgZGVmaW5lIFBSSV9USU1FWCAibGkiCisgI2VuZGlmCisgCistI2lmIFNJWkVPRl9STElNX1QgPT0gOAorLSMgIGRlZmluZSBSTElNX0ZNVCAiJSIgUFJJdTY0CistI2VsaWYgU0laRU9GX1JMSU1fVCA9PSA0CistIyAgZGVmaW5lIFJMSU1fRk1UICIlIiBQUkl1MzIKKy0jZWxzZQorLSMgIGVycm9yIFVua25vd24gcmxpbV90IHNpemUKKy0jZW5kaWYKKy0KKyAjaWYgU0laRU9GX0RFVl9UID09IDgKKyAjICBkZWZpbmUgREVWX0ZNVCAiJSIgUFJJdTY0CisgI2VsaWYgU0laRU9GX0RFVl9UID09IDQKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvcmxpbWl0LXV0aWwuYyBiL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jCitpbmRleCAwMDY0ODIxMWQuLmRmM2Q5ZWNjMSAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jCisrKysgYi9zcmMvYmFzaWMvcmxpbWl0LXV0aWwuYworQEAgLTI4NiwxMyArMjg2LDEzIEBAIGludCBybGltaXRfZm9ybWF0KGNvbnN0IHN0cnVjdCBybGltaXQgKnJsLCBjaGFyICoqcmV0KSB7CisgICAgICAgICBpZiAocmwtPnJsaW1fY3VyID49IFJMSU1fSU5GSU5JVFkgJiYgcmwtPnJsaW1fbWF4ID49IFJMSU1fSU5GSU5JVFkpCisgICAgICAgICAgICAgICAgIHMgPSBzdHJkdXAoImluZmluaXR5Iik7CisgICAgICAgICBlbHNlIGlmIChybC0+cmxpbV9jdXIgPj0gUkxJTV9JTkZJTklUWSkKKy0gICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiaW5maW5pdHk6IiBSTElNX0ZNVCwgcmwtPnJsaW1fbWF4KTsKKysgICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiaW5maW5pdHk6JWp1IiwgKHVpbnRtYXhfdClybC0+cmxpbV9tYXgpOworICAgICAgICAgZWxzZSBpZiAocmwtPnJsaW1fbWF4ID49IFJMSU1fSU5GSU5JVFkpCistICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgUkxJTV9GTVQgIjppbmZpbml0eSIsIHJsLT5ybGltX2N1cik7CisrICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgIiVqdTppbmZpbml0eSIsICh1aW50bWF4X3QpcmwtPnJsaW1fY3VyKTsKKyAgICAgICAgIGVsc2UgaWYgKHJsLT5ybGltX2N1ciA9PSBybC0+cmxpbV9tYXgpCistICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgUkxJTV9GTVQsIHJsLT5ybGltX2N1cik7CisrICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgIiVqdSIsICh1aW50bWF4X3QpcmwtPnJsaW1fY3VyKTsKKyAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCBSTElNX0ZNVCAiOiIgUkxJTV9GTVQsIHJsLT5ybGltX2N1ciwgcmwtPnJsaW1fbWF4KTsKKysgICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiJWp1OiVqdSIsICh1aW50bWF4X3QpcmwtPnJsaW1fY3VyLCAodWludG1heF90KXJsLT5ybGltX21heCk7CisgCisgICAgICAgICBpZiAoIXMpCisgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4ZWN1dGUuYyBiL3NyYy9jb3JlL2V4ZWN1dGUuYworaW5kZXggMGRmMzk3MWRmLi5hYWJkZGRiNjggMTAwNjQ0CistLS0gYS9zcmMvY29yZS9leGVjdXRlLmMKKysrKyBiL3NyYy9jb3JlL2V4ZWN1dGUuYworQEAgLTM5OTEsMTAgKzM5OTEsMTAgQEAgdm9pZCBleGVjX2NvbnRleHRfZHVtcChFeGVjQ29udGV4dCAqYywgRklMRSogZiwgY29uc3QgY2hhciAqcHJlZml4KSB7CisgCisgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUkxJTV9OTElNSVRTOyBpKyspCisgICAgICAgICAgICAgICAgIGlmIChjLT5ybGltaXRbaV0pIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGYsICIlcyVzOiAiIFJMSU1fRk1UICJcbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgsIHJsaW1pdF90b19zdHJpbmcoaSksIGMtPnJsaW1pdFtpXS0+cmxpbV9tYXgpOworLSAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzJXNTb2Z0OiAiIFJMSU1fRk1UICJcbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgsIHJsaW1pdF90b19zdHJpbmcoaSksIGMtPnJsaW1pdFtpXS0+cmxpbV9jdXIpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzJXM6ICVqdVxuIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcmxpbWl0X3RvX3N0cmluZyhpKSwgKHVpbnRtYXhfdCljLT5ybGltaXRbaV0tPnJsaW1fbWF4KTsKKysgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGYsICIlcyVzU29mdDogJWp1XG4iLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCBybGltaXRfdG9fc3RyaW5nKGkpLCAodWludG1heF90KWMtPnJsaW1pdFtpXS0+cmxpbV9jdXIpOworICAgICAgICAgICAgICAgICB9CisgCisgICAgICAgICBpZiAoYy0+aW9wcmlvX3NldCkgeworLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI3LXJlbW92ZS1ub2JvZHktdXNlci1ncm91cC1jaGVja2luZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyNy1yZW1vdmUtbm9ib2R5LXVzZXItZ3JvdXAtY2hlY2tpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJmNTliMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyNy1yZW1vdmUtbm9ib2R5LXVzZXItZ3JvdXAtY2hlY2tpbmcucGF0Y2gKQEAgLTAsMCArMSw2MyBAQAorRnJvbSA1MzU0ZWI3NjdkMWViYTJlYzQxZWIyNzNmNmI2NTdmNGE2MzBjYThhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCA5IEphbiAyMDE4IDE0OjQ1OjQ2ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMjcvMzFdIHJlbW92ZSBub2JvZHkgdXNlci9ncm91cCBjaGVja2luZworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIFNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBtZXNvbi5idWlsZCB8IDM3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMzcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCBmNjUxNWU5N2MuLjFiOTQ3YWRhYyAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTcwMCw0MyArNzAwLDYgQEAgc3Vic3RzLnNldCgnY29udGFpbmVydWlkYmFzZW1heCcsIGNvbnRhaW5lcl91aWRfYmFzZV9tYXgpCisgbm9ib2R5X3VzZXIgPSBnZXRfb3B0aW9uKCdub2JvZHktdXNlcicpCisgbm9ib2R5X2dyb3VwID0gZ2V0X29wdGlvbignbm9ib2R5LWdyb3VwJykKKyAKKy1nZXRlbnRfcmVzdWx0ID0gcnVuX2NvbW1hbmQoJ2dldGVudCcsICdwYXNzd2QnLCAnNjU1MzQnKQorLWlmIGdldGVudF9yZXN1bHQucmV0dXJuY29kZSgpID09IDAKKy0gICAgICAgIG5hbWUgPSBnZXRlbnRfcmVzdWx0LnN0ZG91dCgpLnNwbGl0KCc6JylbMF0KKy0gICAgICAgIGlmIG5hbWUgIT0gbm9ib2R5X3VzZXIKKy0gICAgICAgICAgICAgICAgbWVzc2FnZSgnV0FSTklORzpcbicgKworLSAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIFRoZSBsb2NhbCB1c2VyIHdpdGggdGhlIFVJRCA2NTUzNCBkb2VzIG5vdCBtYXRjaCB0aGUgY29uZmlndXJlZCB1c2VyIG5hbWUgIkAwQCIgb2YgdGhlIG5vYm9keSB1c2VyIChpdHMgbmFtZSBpcyBAMUApLlxuJy5mb3JtYXQobm9ib2R5X3VzZXIsIG5hbWUpICsKKy0gICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBZb3VyIGJ1aWxkIHdpbGwgcmVzdWx0IGluIGFuIHVzZXIgdGFibGUgc2V0dXAgdGhhdCBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgbG9jYWwgc3lzdGVtLicpCistICAgICAgICBlbmRpZgorLWVuZGlmCistaWRfcmVzdWx0ID0gcnVuX2NvbW1hbmQoJ2lkJywgJy11Jywgbm9ib2R5X3VzZXIpCistaWYgaWRfcmVzdWx0LnJldHVybmNvZGUoKSA9PSAwCistICAgICAgICBpZCA9IGlkX3Jlc3VsdC5zdGRvdXQoKS50b19pbnQoKQorLSAgICAgICAgaWYgaWQgIT0gNjU1MzQKKy0gICAgICAgICAgICAgICAgbWVzc2FnZSgnV0FSTklORzpcbicgKworLSAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIFRoZSBsb2NhbCB1c2VyIHdpdGggdGhlIGNvbmZpZ3VyZWQgdXNlciBuYW1lICJAMEAiIG9mIHRoZSBub2JvZHkgdXNlciBkb2VzIG5vdCBoYXZlIFVJRCA2NTUzNCAoaXQgaGFzIEAxQCkuXG4nLmZvcm1hdChub2JvZHlfdXNlciwgaWQpICsKKy0gICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBZb3VyIGJ1aWxkIHdpbGwgcmVzdWx0IGluIGFuIHVzZXIgdGFibGUgc2V0dXAgdGhhdCBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgbG9jYWwgc3lzdGVtLicpCistICAgICAgICBlbmRpZgorLWVuZGlmCistCistZ2V0ZW50X3Jlc3VsdCA9IHJ1bl9jb21tYW5kKCdnZXRlbnQnLCAnZ3JvdXAnLCAnNjU1MzQnKQorLWlmIGdldGVudF9yZXN1bHQucmV0dXJuY29kZSgpID09IDAKKy0gICAgICAgIG5hbWUgPSBnZXRlbnRfcmVzdWx0LnN0ZG91dCgpLnNwbGl0KCc6JylbMF0KKy0gICAgICAgIGlmIG5hbWUgIT0gbm9ib2R5X2dyb3VwCistICAgICAgICAgICAgICAgIG1lc3NhZ2UoJ1dBUk5JTkc6XG4nICsKKy0gICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBUaGUgbG9jYWwgZ3JvdXAgd2l0aCB0aGUgR0lEIDY1NTM0IGRvZXMgbm90IG1hdGNoIHRoZSBjb25maWd1cmVkIGdyb3VwIG5hbWUgIkAwQCIgb2YgdGhlIG5vYm9keSBncm91cCAoaXRzIG5hbWUgaXMgQDFAKS5cbicuZm9ybWF0KG5vYm9keV9ncm91cCwgbmFtZSkgKworLSAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIFlvdXIgYnVpbGQgd2lsbCByZXN1bHQgaW4gYW4gZ3JvdXAgdGFibGUgc2V0dXAgdGhhdCBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgbG9jYWwgc3lzdGVtLicpCistICAgICAgICBlbmRpZgorLWVuZGlmCistaWRfcmVzdWx0ID0gcnVuX2NvbW1hbmQoJ2lkJywgJy1nJywgbm9ib2R5X2dyb3VwKQorLWlmIGlkX3Jlc3VsdC5yZXR1cm5jb2RlKCkgPT0gMAorLSAgICAgICAgaWQgPSBpZF9yZXN1bHQuc3Rkb3V0KCkudG9faW50KCkKKy0gICAgICAgIGlmIGlkICE9IDY1NTM0CistICAgICAgICAgICAgICAgIG1lc3NhZ2UoJ1dBUk5JTkc6XG4nICsKKy0gICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICBUaGUgbG9jYWwgZ3JvdXAgd2l0aCB0aGUgY29uZmlndXJlZCBncm91cCBuYW1lICJAMEAiIG9mIHRoZSBub2JvZHkgZ3JvdXAgZG9lcyBub3QgaGF2ZSBVSUQgNjU1MzQgKGl0IGhhcyBAMUApLlxuJy5mb3JtYXQobm9ib2R5X2dyb3VwLCBpZCkgKworLSAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIFlvdXIgYnVpbGQgd2lsbCByZXN1bHQgaW4gYW4gZ3JvdXAgdGFibGUgc2V0dXAgdGhhdCBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgbG9jYWwgc3lzdGVtLicpCistICAgICAgICBlbmRpZgorLWVuZGlmCisgaWYgbm9ib2R5X3VzZXIgIT0gbm9ib2R5X2dyb3VwIGFuZCBub3QgKG5vYm9keV91c2VyID09ICdub2JvZHknIGFuZCBub2JvZHlfZ3JvdXAgPT0gJ25vZ3JvdXAnKQorICAgICAgICAgbWVzc2FnZSgnV0FSTklORzpcbicgKworICAgICAgICAgICAgICAgICAnICAgICAgICBUaGUgY29uZmlndXJlZCB1c2VyIG5hbWUgIkAwQCIgYW5kIGdyb3VwIG5hbWUgIkAwQCIgb2YgdGhlIG5vYm9keSB1c2VyL2dyb3VwIGFyZSBub3QgZXF1aXZhbGVudC5cbicuZm9ybWF0KG5vYm9keV91c2VyLCBub2JvZHlfZ3JvdXApICsKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyOC1hZGQtbWlzc2luZy1GVFdfLW1hY3Jvcy1mb3ItbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyOC1hZGQtbWlzc2luZy1GVFdfLW1hY3Jvcy1mb3ItbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWMzMTM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI4LWFkZC1taXNzaW5nLUZUV18tbWFjcm9zLWZvci1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsNTAgQEAKK0Zyb20gMDNjZGQzM2JlNjJkYjRjNzJhN2ZjZjIxYjYxZDBkMDU2YzIzYzZhOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjggRmViIDIwMTggMjE6MzY6MzIgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyOC8zMV0gYWRkIG1pc3NpbmcgRlRXXyBtYWNyb3MgZm9yIG11c2wKKworVGhpcyBpcyB0byBhdm9pZCBidWlsZCBmYWlsdXJlcyBsaWtlIGJlbG93IGZvciBtdXNsLgorCisgIGxvY2FsZS11dGlsLmM6Mjk2OjI0OiBlcnJvcjogJ0ZUV19TVE9QJyB1bmRlY2xhcmVkCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvYmFzaWMvbWlzc2luZy5oIHwgMjAgKysrKysrKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKK2luZGV4IDFhZWUzMzQ2YS4uNWI5ZmRlNjkyIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmcuaAorKysrIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAorQEAgLTIwNyw2ICsyMDcsMjYgQEAgc3RydWN0IHNvY2thZGRyX3ZtIHsKKyAjZGVmaW5lIEJUUkZTX1FHUk9VUF9MRVZFTF9TSElGVCA0OAorICNlbmRpZgorIAorKyNpZm5kZWYgRlRXX0FDVElPTlJFVFZBTAorKyNkZWZpbmUgRlRXX0FDVElPTlJFVFZBTCAxNgorKyNlbmRpZgorKworKyNpZm5kZWYgRlRXX0NPTlRJTlVFCisrI2RlZmluZSBGVFdfQ09OVElOVUUgMAorKyNlbmRpZgorKworKyNpZm5kZWYgRlRXX1NUT1AKKysjZGVmaW5lIEZUV19TVE9QIDEKKysjZW5kaWYKKysKKysjaWZuZGVmIEZUV19TS0lQX1NVQlRSRUUKKysjZGVmaW5lIEZUV19TS0lQX1NVQlRSRUUgMgorKyNlbmRpZgorKworKyNpZm5kZWYgRlRXX1NLSVBfU0lCTElOR1MKKysjZGVmaW5lIEZUV19TS0lQX1NJQkxJTkdTIDMKKysjZW5kaWYKKysKKyAjaWYgISBIQVZFX0xJTlVYX0JUUkZTX0gKKyAjZGVmaW5lIEJUUkZTX0lPQ19RR1JPVVBfQVNTSUdOIF9JT1coQlRSRlNfSU9DVExfTUFHSUMsIDQxLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBidHJmc19pb2N0bF9xZ3JvdXBfYXNzaWduX2FyZ3MpCistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjktbnNzLW15bWFjaGluZXMtQnVpbGQtY29uZGl0aW9uYWxseS13aGVuLUVOQUJMRV9NWUhPUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyOS1uc3MtbXltYWNoaW5lcy1CdWlsZC1jb25kaXRpb25hbGx5LXdoZW4tRU5BQkxFX01ZSE9TLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxNzI0OWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjktbnNzLW15bWFjaGluZXMtQnVpbGQtY29uZGl0aW9uYWxseS13aGVuLUVOQUJMRV9NWUhPUy5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIDU4NDVjODJkMTAxNmEzZTNmMjY5NjE4MGQ1YWM5MWI0Njk1MDU0MGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDI3IEZlYiAyMDE4IDEyOjU2OjIxICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMjkvMzFdIG5zcy1teW1hY2hpbmVzOiBCdWlsZCBjb25kaXRpb25hbGx5IHdoZW4KKyBFTkFCTEVfTVlIT1NUTkFNRSBpcyBzZXQKKworRml4ZXMgYnVpbGQgZmFpbHVyZXMgd2hlbiBidWlsZGluZyB3aXRoIC0tZGlzYWJsZS1teWhvc3RuYW1lCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbWVzb24uYnVpbGQgfCAxMSArKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCAxYjk0N2FkYWMuLjFlZDRkZGU3MiAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTEzNTEsMTIgKzEzNTEsMTUgQEAgdGVzdF9kbG9wZW4gPSBleGVjdXRhYmxlKAorICAgICAgICAgbGlua193aXRoIDogW2xpYmJhc2ljXSwKKyAgICAgICAgIGRlcGVuZGVuY2llcyA6IFtsaWJkbF0pCisgCistZm9yZWFjaCB0dXBsZSA6IFtbJ215aG9zdG5hbWUnLCAnRU5BQkxFX01ZSE9TVE5BTUUnXSwKKy0gICAgICAgICAgICAgICAgIFsnc3lzdGVtZCcsICAgICdFTkFCTEVfTlNTX1NZU1RFTUQnXSwKKy0gICAgICAgICAgICAgICAgIFsnbXltYWNoaW5lcycsICdFTkFCTEVfTUFDSElORUQnXSwKKy0gICAgICAgICAgICAgICAgIFsncmVzb2x2ZScsICAgICdFTkFCTEVfUkVTT0xWRSddXQorK2ZvcmVhY2ggdHVwbGUgOiBbWydteWhvc3RuYW1lJywgJ0VOQUJMRV9NWUhPU1ROQU1FJywgICcnXSwKKysgICAgICAgICAgICAgICAgIFsnc3lzdGVtZCcsICAgICdFTkFCTEVfTlNTX1NZU1RFTUQnLCAnJ10sCisrICAgICAgICAgICAgICAgICBbJ215bWFjaGluZXMnLCAnRU5BQkxFX01BQ0hJTkVEJywgICAgJ0VOQUJMRV9NWUhPU1ROQU1FJ10sCisrICAgICAgICAgICAgICAgICBbJ3Jlc29sdmUnLCAgICAnRU5BQkxFX1JFU09MVkUnLCAgICAgJyddXQorIAorICAgICAgICAgY29uZGl0aW9uID0gdHVwbGVbMV0gPT0gJycgb3IgY29uZi5nZXQodHVwbGVbMV0pID09IDEKKysgICAgICAgIGlmIHR1cGxlWzJdICE9ICcnIGFuZCBjb25kaXRpb24KKysgICAgICAgICAgICAgICAgY29uZGl0aW9uID0gY29uZi5nZXQodHVwbGVbMl0pID09IDEKKysgICAgICAgIGVuZGlmCisgICAgICAgICBpZiBjb25kaXRpb24KKyAgICAgICAgICAgICAgICAgbW9kdWxlID0gdHVwbGVbMF0KKyAKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzMC1maXgtbWlzc2luZy1vZi1fX3JlZ2lzdGVyX2F0Zm9yay1mb3Itbm9uLWdsaWJjLWJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDMwLWZpeC1taXNzaW5nLW9mLV9fcmVnaXN0ZXJfYXRmb3JrLWZvci1ub24tZ2xpYmMtYnVpbGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2YwYjRiZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzMC1maXgtbWlzc2luZy1vZi1fX3JlZ2lzdGVyX2F0Zm9yay1mb3Itbm9uLWdsaWJjLWJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gYjdlYWNkZjAzODhmOTMwZmM1MjcxYmRlY2ZhNDY2MTJjNzFkZDY1YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMjcgRmViIDIwMTggMTM6Mjc6NDcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAzMC8zMV0gZml4IG1pc3Npbmcgb2YgX19yZWdpc3Rlcl9hdGZvcmsgZm9yIG5vbi1nbGliYyBidWlsZHMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYyB8IDcgKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYyBiL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYworaW5kZXggZGM3YzllZjllLi44NWNlOGEwY2MgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYworQEAgLTM5LDYgKzM5LDkgQEAKKyAjaWYgSEFWRV9WQUxHUklORF9WQUxHUklORF9ICisgI2luY2x1ZGUgPHZhbGdyaW5kL3ZhbGdyaW5kLmg+CisgI2VuZGlmCisrI2lmbmRlZiBfX0dMSUJDX18KKysjaW5jbHVkZSA8cHRocmVhZC5oPgorKyNlbmRpZgorIAorICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCisgI2luY2x1ZGUgImFyY2hpdGVjdHVyZS5oIgorQEAgLTExMTIsMTEgKzExMTUsMTUgQEAgdm9pZCByZXNldF9jYWNoZWRfcGlkKHZvaWQpIHsKKyAgICAgICAgIGNhY2hlZF9waWQgPSBDQUNIRURfUElEX1VOU0VUOworIH0KKyAKKysjaWZkZWYgX19HTElCQ19fCisgLyogV2UgdXNlIGdsaWJjIF9fcmVnaXN0ZXJfYXRmb3JrKCkgKyBfX2Rzb19oYW5kbGUgZGlyZWN0bHkgaGVyZSwgYXMgdGhleSBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSBnbGliYworICAqIGhlYWRlcnMuIF9fcmVnaXN0ZXJfYXRmb3JrKCkgaXMgbW9zdGx5IGVxdWl2YWxlbnQgdG8gcHRocmVhZF9hdGZvcmsoKSwgYnV0IGRvZXNuJ3QgcmVxdWlyZSB1cyB0byBsaW5rIGFnYWluc3QKKyAgKiBsaWJwdGhyZWFkLCBhcyBpdCBpcyBwYXJ0IG9mIGdsaWJjIGFueXdheS4gKi8KKyBleHRlcm4gaW50IF9fcmVnaXN0ZXJfYXRmb3JrKHZvaWQgKCpwcmVwYXJlKSAodm9pZCksIHZvaWQgKCpwYXJlbnQpICh2b2lkKSwgdm9pZCAoKmNoaWxkKSAodm9pZCksIHZvaWQgKiBfX2Rzb19oYW5kbGUpOworIGV4dGVybiB2b2lkKiBfX2Rzb19oYW5kbGUgX19hdHRyaWJ1dGVfXyAoKF9fd2Vha19fKSk7CisrI2Vsc2UKKysjZGVmaW5lIF9fcmVnaXN0ZXJfYXRmb3JrKHByZXBhcmUscGFyZW50LGNoaWxkLGRzbykgcHRocmVhZF9hdGZvcmsocHJlcGFyZSxwYXJlbnQsY2hpbGQpCisrI2VuZGlmCisgCisgcGlkX3QgZ2V0cGlkX2NhY2hlZCh2b2lkKSB7CisgICAgICAgICBwaWRfdCBjdXJyZW50X3ZhbHVlOworLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDMxLWZpeC1taXNzaW5nLVVMT05HX0xPTkdfTUFYLWRlZmluaXRpb24taW4tY2FzZS1vZi1tdXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzEtZml4LW1pc3NpbmctVUxPTkdfTE9OR19NQVgtZGVmaW5pdGlvbi1pbi1jYXNlLW9mLW11cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTljNGI2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDMxLWZpeC1taXNzaW5nLVVMT05HX0xPTkdfTUFYLWRlZmluaXRpb24taW4tY2FzZS1vZi1tdXMucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSBhZGNkN2U0MjZmY2Q4MGU3NTQyNzRhNzMwMjIxZDFhMWY0OWRiYzIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAyNyBGZWIgMjAxOCAxNDowMTozMCArMDgwMAorU3ViamVjdDogW1BBVENIIDMxLzMxXSBmaXggbWlzc2luZyBVTE9OR19MT05HX01BWCBkZWZpbml0aW9uIGluIGNhc2Ugb2YgbXVzbAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2Jhc2ljL21pc3NpbmcuaCB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nLmggYi9zcmMvYmFzaWMvbWlzc2luZy5oCitpbmRleCA1YjlmZGU2OTIuLmE5MjJmMTM0NiAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9taXNzaW5nLmgKKysrKyBiL3NyYy9iYXNpYy9taXNzaW5nLmgKK0BAIC03Miw2ICs3MiwxMCBAQCBzdHJ1Y3Qgc29ja2FkZHJfdm0geworIH07CisgI2VuZGlmIC8qICFIQVZFX0xJTlVYX1ZNX1NPQ0tFVFNfSCAqLworIAorKyNpZm5kZWYgVUxPTkdfTE9OR19NQVgKKysjZGVmaW5lIFVMT05HX0xPTkdfTUFYIFVMTE9OR19NQVgKKysjZW5kaWYKKysKKyAjaWZuZGVmIFJMSU1JVF9SVFRJTUUKKyAjZGVmaW5lIFJMSU1JVF9SVFRJTUUgMTUKKyAjZW5kaWYKKy0tIAorMi4xMy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzMi1tZW1mZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzMi1tZW1mZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mN2NmZDYwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDMyLW1lbWZkLnBhdGNoCkBAIC0wLDAgKzEsMjcyIEBACittaXNzaW5nX3N5c2NhbGw6IHdoZW4gYWRkaW5nIHN5c2NhbGwgcmVwbGFjZW1lbnRzLCB1c2UgZGlmZmVyZW50IG5hbWVzICgKKworIzgyMjkpCisKK0luIG1lc29uLmJ1aWxkIHdlIGNoZWNrIHRoYXQgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgdXNpbmc6CisgICAgbWVzb24uZ2V0X2NvbXBpbGVyKCdjJykuaGFzX2Z1bmN0aW9uKCdmb28nKQord2hpY2ggY2hlY2tzIHRoZSBmb2xsb3dpbmc6CistIGlmIF9fc3R1Yl9mb28gb3IgX19zdHViX19fZm9vIGFyZSBkZWZpbmVkLCByZXR1cm4gZmFsc2UKKy0gaWYgZm9vIGlzIGRlY2xhcmVkIChhIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIGNhbiBiZSB0YWtlbiksIHJldHVybiB0cnVlCistIG90aGVyd2lzZSBjaGVjayBmb3IgX19idWlsdGluX21lbWZkX2NyZWF0ZQorCitfc3R1YiBpcyBkb2N1bWVudGVkIGJ5IGdsaWJjIGFzCisgICBJdCBkZWZpbmVzIGEgc3ltYm9sICdfX3N0dWJfRlVOQ1RJT04nIGZvciBlYWNoIGZ1bmN0aW9uCisgICBpbiB0aGUgQyBsaWJyYXJ5IHdoaWNoIGlzIGEgc3R1YiwgbWVhbmluZyBpdCB3aWxsIGZhaWwKKyAgIGV2ZXJ5IHRpbWUgY2FsbGVkLCB1c3VhbGx5IHNldHRpbmcgZXJybm8gdG8gRU5PU1lTLgorCitTbyBpZiBfX3N0dWIgaXMgZGVmaW5lZCwgd2Uga25vdyB3ZSBkb24ndCB3YW50IHRvIHVzZSB0aGUgZ2xpYmMgdmVyc2lvbiwgYnV0Cit0aGlzIGRvZXNuJ3QgdGVsbCB1cyBpZiB0aGUgbmFtZSBpdHNlbGYgaXMgZGVmaW5lZCBvciBub3QuIElmIGl0IF9pc18gZGVmaW5lZCwKK2FuZCB3ZSBkZWZpbmUgb3VyIHJlcGxhY2VtZW50IGFzIGFuIGlubGluZSBzdGF0aWMgZnVuY3Rpb24sIHdlIGdldCBhbiBlcnJvcjoKKworSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL3NyYy9iYXNpYy9taXNzaW5nLmg6MTM1ODowLAorICAgICAgICAgICAgICAgICBmcm9tIC4uL3NyYy9iYXNpYy91dGlsLmg6NDcsCisgICAgICAgICAgICAgICAgIGZyb20gLi4vc3JjL2Jhc2ljL2NhbGVuZGFyc3BlYy5oOjI5LAorICAgICAgICAgICAgICAgICBmcm9tIC4uL3NyYy9iYXNpYy9jYWxlbmRhcnNwZWMuYzozNDoKKy4uL3NyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaDo2NToxOTogZXJyb3I6IHN0YXRpYyBkZWNsYXJhdGlvbiBvZiAnbWVtZmRfY3JlYXRlJyBmb2xsb3dzIG5vbi1zdGF0aWMgZGVjbGFyYXRpb24KKyBzdGF0aWMgaW5saW5lIGludCBtZW1mZF9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgaW50IGZsYWdzKSB7CisgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+CisuLi4vdXNyL2luY2x1ZGUvYml0cy9tbWFuLXNoYXJlZC5oOjQ2OjU6IG5vdGU6IHByZXZpb3VzIGRlY2xhcmF0aW9uIG9mICdtZW1mZF9jcmVhdGUnIHdhcyBoZXJlCisgaW50IG1lbWZkX2NyZWF0ZSAoY29uc3QgY2hhciAqX19uYW1lLCB1bnNpZ25lZCBpbnQgX19mbGFncykgX19USFJPVzsKKyAgICAgXn5+fn5+fn5+fn5+CisKK1RvIGF2b2lkIHRoaXMgcHJvYmxlbSwgY2FsbCBvdXIgaW5saW5lIGZ1bmN0aW9ucyBkaWZmZXJlbnQgdGhhbiBnbGliYywKK2FuZCB1c2UgYSAjZGVmaW5lIHRvIG1hcCB0aGUgb2ZmaWNpYWwgbmFtZSB0byBvdXIgcmVwbGFjZW1lbnQuCisKK0ZpeGVzICM4MDk5LgorCit2MjoKKy0gdXNlICJtaXNzaW5nXyIgYXMgdGhlIHByZWZpeCBpbnN0ZWFkIG9mICJfIgorCit2MzoKKy0gcmViYXNlIGFuZCB1cGRhdGUgZm9yIHN0YXR4KCkKKworICBVbmZvcnR1bmF0ZWx5ICJzdGF0eCIgaXMgYWxzbyBwcmVzZW50IGluICJzdHJ1Y3Qgc3RhdHgiLCBzbyB0aGUgZGVmaW5lCisgIGNhdXNlcyBpc3N1ZXMuIFdvcmsgYXJvdW5kIHRoaXMgYnkgdXNpbmcgYSB0eXBlZGVmLgorCitJIGNoZWNrZWQgdGhhdCBzeXN0ZW1kIGNvbXBpbGVzIHdpdGggY3VycmVudCBnbGliYworKGdsaWJjLWRldmVsLTIuMjYtMjQuZmMyNy54ODZfNjQpIGlmIEhBVkVfTUVNRkRfQ1JFQVRFLCBIQVZFX0dFVFRJRCwKK0hBVkVfUElWT1RfUk9PVCwgSEFWRV9TRVROUywgSEFWRV9SRU5BTUVBVDIsIEhBVkVfS0NNUCwgSEFWRV9LRVlDVEwsCitIQVZFX0NPUFlfRklMRV9SQU5HRSwgSEFWRV9CUEYsIEhBVkVfU1RBVFggYXJlIGZvcmNlZCB0byAwLgorCitTZXR0aW5nIEhBVkVfTkFNRV9UT19IQU5ETEVfQVQgdG8gMCBjYXVzZXMgYW4gaXNzdWUsIGJ1dCBpdCdzIG5vdCBiZWNhdXNlIG9mCit0aGUgZGVmaW5lLCBidXQgYmVjYXVzZSBvZiBzdHJ1Y3QgZmlsZV9oYW5kbGUuCisKKworYmFja3BvcnQgaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9jb21taXQvNTE4N2RkMmM0MDNjYWY5MmQwOWYzNDkxZTQxZjFjZWIzZjEwNDkxZgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9pc3N1ZXMvODA5OV0KK0luZGV4OiBnaXQvc3JjL2Jhc2ljL21pc3Npbmdfc3lzY2FsbC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL2Jhc2ljL21pc3Npbmdfc3lzY2FsbC5oCisrKysgZ2l0L3NyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaAorQEAgLTI2LDkgKzI2LDExIEBACisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIAorICNpZiAhSEFWRV9QSVZPVF9ST09UCistc3RhdGljIGlubGluZSBpbnQgcGl2b3Rfcm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29uc3QgY2hhciAqcHV0X29sZCkgeworK3N0YXRpYyBpbmxpbmUgaW50IG1pc3NpbmdfcGl2b3Rfcm9vdChjb25zdCBjaGFyICpuZXdfcm9vdCwgY29uc3QgY2hhciAqcHV0X29sZCkgeworICAgICAgICAgcmV0dXJuIHN5c2NhbGwoU1lTX3Bpdm90X3Jvb3QsIG5ld19yb290LCBwdXRfb2xkKTsKKyB9CisrCisrIyAgZGVmaW5lIHBpdm90X3Jvb3QgbWlzc2luZ19waXZvdF9yb290CisgI2VuZGlmCisgCisgI2lmICFIQVZFX0NBTk9OSUNBTElaRV9GSUxFX05BTUUKK0BAIC02OCw3ICs3MCw3IEBAIHN0YXRpYyBpbmxpbmUgY2hhciAqY2Fub25pY2FsaXplX2ZpbGVfbmEKKyAjICAgIGVuZGlmCisgIyAgZW5kaWYKKyAKKy1zdGF0aWMgaW5saW5lIGludCBtZW1mZF9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgaW50IGZsYWdzKSB7Cisrc3RhdGljIGlubGluZSBpbnQgbWlzc2luZ19tZW1mZF9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgaW50IGZsYWdzKSB7CisgIyAgaWZkZWYgX19OUl9tZW1mZF9jcmVhdGUKKyAgICAgICAgIHJldHVybiBzeXNjYWxsKF9fTlJfbWVtZmRfY3JlYXRlLCBuYW1lLCBmbGFncyk7CisgIyAgZWxzZQorQEAgLTc2LDYgKzc4LDggQEAgc3RhdGljIGlubGluZSBpbnQgbWVtZmRfY3JlYXRlKGNvbnN0IGNoYQorICAgICAgICAgcmV0dXJuIC0xOworICMgIGVuZGlmCisgfQorKworKyMgIGRlZmluZSBtZW1mZF9jcmVhdGUgbWlzc2luZ19tZW1mZF9jcmVhdGUKKyAjZW5kaWYKKyAKKyAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLworQEAgLTExNSw3ICsxMTksNyBAQCBzdGF0aWMgaW5saW5lIGludCBtZW1mZF9jcmVhdGUoY29uc3QgY2hhCisgIyAgICBlbmRpZgorICMgIGVuZGlmCisgCistc3RhdGljIGlubGluZSBpbnQgZ2V0cmFuZG9tKHZvaWQgKmJ1ZmZlciwgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBmbGFncykgeworK3N0YXRpYyBpbmxpbmUgaW50IG1pc3NpbmdfZ2V0cmFuZG9tKHZvaWQgKmJ1ZmZlciwgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBmbGFncykgeworICMgIGlmZGVmIF9fTlJfZ2V0cmFuZG9tCisgICAgICAgICByZXR1cm4gc3lzY2FsbChfX05SX2dldHJhbmRvbSwgYnVmZmVyLCBjb3VudCwgZmxhZ3MpOworICMgIGVsc2UKK0BAIC0xMjMsMTQgKzEyNywxOCBAQCBzdGF0aWMgaW5saW5lIGludCBnZXRyYW5kb20odm9pZCAqYnVmZmVyCisgICAgICAgICByZXR1cm4gLTE7CisgIyAgZW5kaWYKKyB9CisrCisrIyAgZGVmaW5lIGdldHJhbmRvbSBtaXNzaW5nX2dldHJhbmRvbQorICNlbmRpZgorIAorIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCisgCisgI2lmICFIQVZFX0dFVFRJRAorLXN0YXRpYyBpbmxpbmUgcGlkX3QgZ2V0dGlkKHZvaWQpIHsKKytzdGF0aWMgaW5saW5lIHBpZF90IG1pc3NpbmdfZ2V0dGlkKHZvaWQpIHsKKyAgICAgICAgIHJldHVybiAocGlkX3QpIHN5c2NhbGwoU1lTX2dldHRpZCk7CisgfQorKworKyMgIGRlZmluZSBnZXR0aWQgbWlzc2luZ19nZXR0aWQKKyAjZW5kaWYKKyAKKyAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLworQEAgLTE1OCw3ICsxNjYsNyBAQCBzdHJ1Y3QgZmlsZV9oYW5kbGUgeworICAgICAgICAgdW5zaWduZWQgY2hhciBmX2hhbmRsZVswXTsKKyB9OworIAorLXN0YXRpYyBpbmxpbmUgaW50IG5hbWVfdG9faGFuZGxlX2F0KGludCBmZCwgY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGZpbGVfaGFuZGxlICpoYW5kbGUsIGludCAqbW50X2lkLCBpbnQgZmxhZ3MpIHsKKytzdGF0aWMgaW5saW5lIGludCBtaXNzaW5nX25hbWVfdG9faGFuZGxlX2F0KGludCBmZCwgY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGZpbGVfaGFuZGxlICpoYW5kbGUsIGludCAqbW50X2lkLCBpbnQgZmxhZ3MpIHsKKyAjICBpZmRlZiBfX05SX25hbWVfdG9faGFuZGxlX2F0CisgICAgICAgICByZXR1cm4gc3lzY2FsbChfX05SX25hbWVfdG9faGFuZGxlX2F0LCBmZCwgbmFtZSwgaGFuZGxlLCBtbnRfaWQsIGZsYWdzKTsKKyAjICBlbHNlCitAQCAtMTY2LDYgKzE3NCw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IG5hbWVfdG9faGFuZGxlX2F0KGludAorICAgICAgICAgcmV0dXJuIC0xOworICMgIGVuZGlmCisgfQorKworKyMgIGRlZmluZSBuYW1lX3RvX2hhbmRsZV9hdCBtaXNzaW5nX25hbWVfdG9faGFuZGxlX2F0CisgI2VuZGlmCisgCisgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KK0BAIC0xODMsNyArMTkzLDcgQEAgc3RhdGljIGlubGluZSBpbnQgbmFtZV90b19oYW5kbGVfYXQoaW50CisgIyAgICBlbmRpZgorICMgIGVuZGlmCisgCistc3RhdGljIGlubGluZSBpbnQgc2V0bnMoaW50IGZkLCBpbnQgbnN0eXBlKSB7Cisrc3RhdGljIGlubGluZSBpbnQgbWlzc2luZ19zZXRucyhpbnQgZmQsIGludCBuc3R5cGUpIHsKKyAjICBpZmRlZiBfX05SX3NldG5zCisgICAgICAgICByZXR1cm4gc3lzY2FsbChfX05SX3NldG5zLCBmZCwgbnN0eXBlKTsKKyAjICBlbHNlCitAQCAtMTkxLDYgKzIwMSw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IHNldG5zKGludCBmZCwgaW50IG5zdHkKKyAgICAgICAgIHJldHVybiAtMTsKKyAjICBlbmRpZgorIH0KKysKKysjICBkZWZpbmUgc2V0bnMgbWlzc2luZ19zZXRucworICNlbmRpZgorIAorIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCitAQCAtMjM2LDcgKzI0OCw3IEBAIHN0YXRpYyBpbmxpbmUgcGlkX3QgcmF3X2dldHBpZCh2b2lkKSB7CisgIyAgICBlbmRpZgorICMgIGVuZGlmCisgCistc3RhdGljIGlubGluZSBpbnQgcmVuYW1lYXQyKGludCBvbGRmZCwgY29uc3QgY2hhciAqb2xkbmFtZSwgaW50IG5ld2ZkLCBjb25zdCBjaGFyICpuZXduYW1lLCB1bnNpZ25lZCBmbGFncykgeworK3N0YXRpYyBpbmxpbmUgaW50IG1pc3NpbmdfcmVuYW1lYXQyKGludCBvbGRmZCwgY29uc3QgY2hhciAqb2xkbmFtZSwgaW50IG5ld2ZkLCBjb25zdCBjaGFyICpuZXduYW1lLCB1bnNpZ25lZCBmbGFncykgeworICMgIGlmZGVmIF9fTlJfcmVuYW1lYXQyCisgICAgICAgICByZXR1cm4gc3lzY2FsbChfX05SX3JlbmFtZWF0Miwgb2xkZmQsIG9sZG5hbWUsIG5ld2ZkLCBuZXduYW1lLCBmbGFncyk7CisgIyAgZWxzZQorQEAgLTI0NCwxMiArMjU2LDE0IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJlbmFtZWF0MihpbnQgb2xkZmQsIGMKKyAgICAgICAgIHJldHVybiAtMTsKKyAjICBlbmRpZgorIH0KKysKKysjICBkZWZpbmUgcmVuYW1lYXQyIG1pc3NpbmdfcmVuYW1lYXQyCisgI2VuZGlmCisgCisgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KKyAKKyAjaWYgIUhBVkVfS0NNUAorLXN0YXRpYyBpbmxpbmUgaW50IGtjbXAocGlkX3QgcGlkMSwgcGlkX3QgcGlkMiwgaW50IHR5cGUsIHVuc2lnbmVkIGxvbmcgaWR4MSwgdW5zaWduZWQgbG9uZyBpZHgyKSB7Cisrc3RhdGljIGlubGluZSBpbnQgbWlzc2luZ19rY21wKHBpZF90IHBpZDEsIHBpZF90IHBpZDIsIGludCB0eXBlLCB1bnNpZ25lZCBsb25nIGlkeDEsIHVuc2lnbmVkIGxvbmcgaWR4MikgeworICMgIGlmZGVmIF9fTlJfa2NtcAorICAgICAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9rY21wLCBwaWQxLCBwaWQyLCB0eXBlLCBpZHgxLCBpZHgyKTsKKyAjICBlbHNlCitAQCAtMjU3LDM2ICsyNzEsNDQgQEAgc3RhdGljIGlubGluZSBpbnQga2NtcChwaWRfdCBwaWQxLCBwaWRfdAorICAgICAgICAgcmV0dXJuIC0xOworICMgIGVuZGlmCisgfQorKworKyMgIGRlZmluZSBrY21wIG1pc3Npbmdfa2NtcAorICNlbmRpZgorIAorIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCisgCisgI2lmICFIQVZFX0tFWUNUTAorLXN0YXRpYyBpbmxpbmUgbG9uZyBrZXljdGwoaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcyLCB1bnNpZ25lZCBsb25nIGFyZzMsIHVuc2lnbmVkIGxvbmcgYXJnNCx1bnNpZ25lZCBsb25nIGFyZzUpIHsKKytzdGF0aWMgaW5saW5lIGxvbmcgbWlzc2luZ19rZXljdGwoaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcyLCB1bnNpZ25lZCBsb25nIGFyZzMsIHVuc2lnbmVkIGxvbmcgYXJnNCx1bnNpZ25lZCBsb25nIGFyZzUpIHsKKyAjICBpZmRlZiBfX05SX2tleWN0bAorICAgICAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9rZXljdGwsIGNtZCwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7CisgIyAgZWxzZQorICAgICAgICAgZXJybm8gPSBFTk9TWVM7CisgICAgICAgICByZXR1cm4gLTE7CisgIyAgZW5kaWYKKysKKysjICBkZWZpbmUga2V5Y3RsIG1pc3Npbmdfa2V5Y3RsCisgfQorIAorLXN0YXRpYyBpbmxpbmUga2V5X3NlcmlhbF90IGFkZF9rZXkoY29uc3QgY2hhciAqdHlwZSwgY29uc3QgY2hhciAqZGVzY3JpcHRpb24sIGNvbnN0IHZvaWQgKnBheWxvYWQsIHNpemVfdCBwbGVuLCBrZXlfc2VyaWFsX3QgcmluZ2lkKSB7Cisrc3RhdGljIGlubGluZSBrZXlfc2VyaWFsX3QgbWlzc2luZ19hZGRfa2V5KGNvbnN0IGNoYXIgKnR5cGUsIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uLCBjb25zdCB2b2lkICpwYXlsb2FkLCBzaXplX3QgcGxlbiwga2V5X3NlcmlhbF90IHJpbmdpZCkgeworICMgIGlmZGVmIF9fTlJfYWRkX2tleQorICAgICAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9hZGRfa2V5LCB0eXBlLCBkZXNjcmlwdGlvbiwgcGF5bG9hZCwgcGxlbiwgcmluZ2lkKTsKKyAjICBlbHNlCisgICAgICAgICBlcnJubyA9IEVOT1NZUzsKKyAgICAgICAgIHJldHVybiAtMTsKKyAjICBlbmRpZgorKworKyMgIGRlZmluZSBhZGRfa2V5IG1pc3NpbmdfYWRkX2tleQorIH0KKyAKKy1zdGF0aWMgaW5saW5lIGtleV9zZXJpYWxfdCByZXF1ZXN0X2tleShjb25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFyICpkZXNjcmlwdGlvbiwgY29uc3QgY2hhciAqIGNhbGxvdXRfaW5mbywga2V5X3NlcmlhbF90IGRlc3RyaW5naWQpIHsKKytzdGF0aWMgaW5saW5lIGtleV9zZXJpYWxfdCBtaXNzaW5nX3JlcXVlc3Rfa2V5KGNvbnN0IGNoYXIgKnR5cGUsIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uLCBjb25zdCBjaGFyICogY2FsbG91dF9pbmZvLCBrZXlfc2VyaWFsX3QgZGVzdHJpbmdpZCkgeworICMgIGlmZGVmIF9fTlJfcmVxdWVzdF9rZXkKKyAgICAgICAgIHJldHVybiBzeXNjYWxsKF9fTlJfcmVxdWVzdF9rZXksIHR5cGUsIGRlc2NyaXB0aW9uLCBjYWxsb3V0X2luZm8sIGRlc3RyaW5naWQpOworICMgIGVsc2UKKyAgICAgICAgIGVycm5vID0gRU5PU1lTOworICAgICAgICAgcmV0dXJuIC0xOworICMgIGVuZGlmCisrCisrIyAgZGVmaW5lIHJlcXVlc3Rfa2V5IG1pc3NpbmdfcmVxdWVzdF9rZXkKKyB9CisgI2VuZGlmCisgCitAQCAtMzEzLDEwICszMzUsMTAgQEAgc3RhdGljIGlubGluZSBrZXlfc2VyaWFsX3QgcmVxdWVzdF9rZXkoYworICMgICAgZW5kaWYKKyAjICBlbmRpZgorIAorLXN0YXRpYyBpbmxpbmUgc3NpemVfdCBjb3B5X2ZpbGVfcmFuZ2UoaW50IGZkX2luLCBsb2ZmX3QgKm9mZl9pbiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmZF9vdXQsIGxvZmZfdCAqb2ZmX291dCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpIHsKKytzdGF0aWMgaW5saW5lIHNzaXplX3QgbWlzc2luZ19jb3B5X2ZpbGVfcmFuZ2UoaW50IGZkX2luLCBsb2ZmX3QgKm9mZl9pbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZkX291dCwgbG9mZl90ICpvZmZfb3V0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpIHsKKyAjICBpZmRlZiBfX05SX2NvcHlfZmlsZV9yYW5nZQorICAgICAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9jb3B5X2ZpbGVfcmFuZ2UsIGZkX2luLCBvZmZfaW4sIGZkX291dCwgb2ZmX291dCwgbGVuLCBmbGFncyk7CisgIyAgZWxzZQorQEAgLTMyNCw2ICszNDYsOCBAQCBzdGF0aWMgaW5saW5lIHNzaXplX3QgY29weV9maWxlX3JhbmdlKGluCisgICAgICAgICByZXR1cm4gLTE7CisgIyAgZW5kaWYKKyB9CisrCisrIyAgZGVmaW5lIGNvcHlfZmlsZV9yYW5nZSBtaXNzaW5nX2NvcHlfZmlsZV9yYW5nZQorICNlbmRpZgorIAorIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCitAQCAtMzUxLDcgKzM3NSw3IEBAIHN0YXRpYyBpbmxpbmUgc3NpemVfdCBjb3B5X2ZpbGVfcmFuZ2UoaW4KKyAKKyB1bmlvbiBicGZfYXR0cjsKKyAKKy1zdGF0aWMgaW5saW5lIGludCBicGYoaW50IGNtZCwgdW5pb24gYnBmX2F0dHIgKmF0dHIsIHNpemVfdCBzaXplKSB7Cisrc3RhdGljIGlubGluZSBpbnQgbWlzc2luZ19icGYoaW50IGNtZCwgdW5pb24gYnBmX2F0dHIgKmF0dHIsIHNpemVfdCBzaXplKSB7CisgI2lmZGVmIF9fTlJfYnBmCisgICAgICAgICByZXR1cm4gKGludCkgc3lzY2FsbChfX05SX2JwZiwgY21kLCBhdHRyLCBzaXplKTsKKyAjZWxzZQorQEAgLTM2MCw2ICszODQsNyBAQCBzdGF0aWMgaW5saW5lIGludCBicGYoaW50IGNtZCwgdW5pb24gYnBmCisgI2VuZGlmCisgfQorIAorKyMgIGRlZmluZSBicGYgbWlzc2luZ19icGYKKyAjZW5kaWYKKyAKKyAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDMzLWJhc2ljLW1hY3Jvcy1yZW5hbWUtbm9yZXR1cm4taW50by1fbm9yZXR1cm5fLTg0NTYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzMtYmFzaWMtbWFjcm9zLXJlbmFtZS1ub3JldHVybi1pbnRvLV9ub3JldHVybl8tODQ1Ni5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTY0N2IyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDMzLWJhc2ljLW1hY3Jvcy1yZW5hbWUtbm9yZXR1cm4taW50by1fbm9yZXR1cm5fLTg0NTYucGF0Y2gKQEAgLTAsMCArMSwyMDMgQEAKK0Zyb20gODQ4ZTg2M2FjYzUxZWNmYjBmMzk1NWM0OTg4NzQ1ODgyMDFkOTEzMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEZyYW5jayBCdWkgPGZidWlAc3VzZS5jb20+CitEYXRlOiBUaHUsIDE1IE1hciAyMDE4IDA2OjIzOjQ2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGJhc2ljL21hY3JvczogcmVuYW1lIG5vcmV0dXJuIGludG8gX25vcmV0dXJuXyAoIzg0NTYpCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKKyJub3JldHVybiIgaXMgcmVzZXJ2ZWQgYW5kIGNhbiBiZSB1c2VkIGluIG90aGVyIGhlYWRlciBmaWxlcyB3ZSBpbmNsdWRlOgorCisgIFsgICAxNnNdIEluIGZpbGUgaW5jbHVkZWQgZnJvbSAvdXNyL2luY2x1ZGUvZ2NyeXB0Lmg6MzA6MCwKKyAgWyAgIDE2c10gICAgICAgICAgICAgICAgICBmcm9tIC4uL3NyYy9qb3VybmFsL2pvdXJuYWwtZmlsZS5oOjI2LAorICBbICAgMTZzXSAgICAgICAgICAgICAgICAgIGZyb20gLi4vc3JjL2pvdXJuYWwvam91cm5hbC12YWN1dW0uYzozMToKKyAgWyAgIDE2c10gL3Vzci9pbmNsdWRlL2dwZy1lcnJvci5oOjE1NDQ6NDY6IGVycm9yOiBleHBlY3RlZCDigJgs4oCZIG9yIOKAmDvigJkgYmVmb3JlIOKAmCnigJkgdG9rZW4KKyAgWyAgIDE2c10gIHZvaWQgZ3BncnRfbG9nX2J1ZyAoY29uc3QgY2hhciAqZm10LCAuLi4pICAgIEdQR1JUX0FUVFJfTlJfUFJJTlRGKDEsMik7CisKK0hlcmUgd2UgaW5jbHVkZSBncmNyeXB0LmggKHdoaWNoIGluIHR1cm5zIGluY2x1ZGUgZ3BnLWVycm9yLmgpICphZnRlciogd2UKKyJub3JldHVybiIgd2FzIGRlZmluZWQgaW4gbWFjcm8uaC4KKy0tLQorIHNyYy9iYXNpYy9sb2cuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KKyBzcmMvYmFzaWMvbG9nLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArKy0tCisgc3JjL2Jhc2ljL21hY3JvLmggICAgICAgICAgICAgICAgICAgICAgIHwgMTkgKysrKysrKysrLS0tLS0tLS0tLQorIHNyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYyAgICAgICAgICAgICAgICB8ICAyICstCisgc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5oICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvY29yZS9tYWluLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArKy0tCisgc3JjL2pvdXJuYWwvdGVzdC1qb3VybmFsLWludGVybGVhdmluZy5jIHwgIDIgKy0KKyBzcmMvc2hhcmVkL3BhZ2VyLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy91ZGV2L2NvbGxlY3QvY29sbGVjdC5jICAgICAgICAgICAgICB8ICAyICstCisgOSBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9wdWxsLzg0NTZdCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvbG9nLmMgYi9zcmMvYmFzaWMvbG9nLmMKK2luZGV4IDdhN2YyY2JlYy4uMTZhMjQzMWM1IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL2xvZy5jCisrKysgYi9zcmMvYmFzaWMvbG9nLmMKK0BAIC04MTQsNyArODE0LDcgQEAgc3RhdGljIHZvaWQgbG9nX2Fzc2VydCgKKyAgICAgICAgIGxvZ19kaXNwYXRjaF9pbnRlcm5hbChsZXZlbCwgMCwgZmlsZSwgbGluZSwgZnVuYywgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgYnVmZmVyKTsKKyB9CisgCistbm9yZXR1cm4gdm9pZCBsb2dfYXNzZXJ0X2ZhaWxlZF9yZWFsbSgKKytfbm9yZXR1cm5fIHZvaWQgbG9nX2Fzc2VydF9mYWlsZWRfcmVhbG0oCisgICAgICAgICAgICAgICAgIExvZ1JlYWxtIHJlYWxtLAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0ZXh0LAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlLAorQEAgLTgyNiw3ICs4MjYsNyBAQCBub3JldHVybiB2b2lkIGxvZ19hc3NlcnRfZmFpbGVkX3JlYWxtKAorICAgICAgICAgYWJvcnQoKTsKKyB9CisgCistbm9yZXR1cm4gdm9pZCBsb2dfYXNzZXJ0X2ZhaWxlZF91bnJlYWNoYWJsZV9yZWFsbSgKKytfbm9yZXR1cm5fIHZvaWQgbG9nX2Fzc2VydF9mYWlsZWRfdW5yZWFjaGFibGVfcmVhbG0oCisgICAgICAgICAgICAgICAgIExvZ1JlYWxtIHJlYWxtLAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0ZXh0LAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlLAorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9sb2cuaCBiL3NyYy9iYXNpYy9sb2cuaAoraW5kZXggZWZjZjBmMWJmLi4zMTRiZTEyOGEgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvbG9nLmgKKysrKyBiL3NyYy9iYXNpYy9sb2cuaAorQEAgLTE4Niw3ICsxODYsNyBAQCBpbnQgbG9nX2R1bXBfaW50ZXJuYWwoCisgICAgICAgICAgICAgICAgIGNoYXIgKmJ1ZmZlcik7CisgCisgLyogTG9nZ2luZyBmb3IgdmFyaW91cyBhc3NlcnRpb25zICovCistbm9yZXR1cm4gdm9pZCBsb2dfYXNzZXJ0X2ZhaWxlZF9yZWFsbSgKKytfbm9yZXR1cm5fIHZvaWQgbG9nX2Fzc2VydF9mYWlsZWRfcmVhbG0oCisgICAgICAgICAgICAgICAgIExvZ1JlYWxtIHJlYWxtLAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0ZXh0LAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlLAorQEAgLTE5NSw3ICsxOTUsNyBAQCBub3JldHVybiB2b2lkIGxvZ19hc3NlcnRfZmFpbGVkX3JlYWxtKAorICNkZWZpbmUgbG9nX2Fzc2VydF9mYWlsZWQodGV4dCwgLi4uKSBcCisgICAgICAgICBsb2dfYXNzZXJ0X2ZhaWxlZF9yZWFsbShMT0dfUkVBTE0sICh0ZXh0KSwgX19WQV9BUkdTX18pCisgCistbm9yZXR1cm4gdm9pZCBsb2dfYXNzZXJ0X2ZhaWxlZF91bnJlYWNoYWJsZV9yZWFsbSgKKytfbm9yZXR1cm5fIHZvaWQgbG9nX2Fzc2VydF9mYWlsZWRfdW5yZWFjaGFibGVfcmVhbG0oCisgICAgICAgICAgICAgICAgIExvZ1JlYWxtIHJlYWxtLAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0ZXh0LAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlLAorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9tYWNyby5oIGIvc3JjL2Jhc2ljL21hY3JvLmgKK2luZGV4IDk1YmU2M2EyMC4uODkxMWVkZmM0IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL21hY3JvLmgKKysrKyBiL3NyYy9iYXNpYy9tYWNyby5oCitAQCAtNTMsNiArNTMsMTUgQEAKKyAjZWxzZQorICNkZWZpbmUgX2ZhbGx0aHJvdWdoXworICNlbmRpZgorKy8qIERlZmluZSBDMTEgbm9yZXR1cm4gd2l0aG91dCA8c3Rkbm9yZXR1cm4uaD4gYW5kIGV2ZW4gb24gb2xkZXIgZ2NjCisrICogY29tcGlsZXIgdmVyc2lvbnMgKi8KKysjaWZuZGVmIF9ub3JldHVybl8KKysjaWYgX19TVERDX1ZFUlNJT05fXyA+PSAyMDExMTJMCisrI2RlZmluZSBfbm9yZXR1cm5fIF9Ob3JldHVybgorKyNlbHNlCisrI2RlZmluZSBfbm9yZXR1cm5fIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSkKKysjZW5kaWYKKysjZW5kaWYKKyAKKyAvKiBUZW1wb3JhcmlseSBkaXNhYmxlIHNvbWUgd2FybmluZ3MgKi8KKyAjZGVmaW5lIERJU0FCTEVfV0FSTklOR19ERUNMQVJBVElPTl9BRlRFUl9TVEFURU1FTlQgICAgICAgICAgICAgICAgICAgICBcCitAQCAtNDE0LDE2ICs0MjMsNiBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgQUxJR05fUE9XRVIyKHVuc2lnbmVkIGxvbmcgdSkgeworICNlbmRpZgorICNlbmRpZgorIAorLS8qIERlZmluZSBDMTEgbm9yZXR1cm4gd2l0aG91dCA8c3Rkbm9yZXR1cm4uaD4gYW5kIGV2ZW4gb24gb2xkZXIgZ2NjCistICogY29tcGlsZXIgdmVyc2lvbnMgKi8KKy0jaWZuZGVmIG5vcmV0dXJuCistI2lmIF9fU1REQ19WRVJTSU9OX18gPj0gMjAxMTEyTAorLSNkZWZpbmUgbm9yZXR1cm4gX05vcmV0dXJuCistI2Vsc2UKKy0jZGVmaW5lIG5vcmV0dXJuIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSkKKy0jZW5kaWYKKy0jZW5kaWYKKy0KKyAjZGVmaW5lIERFRklORV9UUklWSUFMX0NMRUFOVVBfRlVOQyh0eXBlLCBmdW5jKSAgICAgICAgICAgICAgICAgXAorICAgICAgICAgc3RhdGljIGlubGluZSB2b2lkIGZ1bmMjI3AodHlwZSAqcCkgeyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgIGlmICgqcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMgYi9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKK2luZGV4IGFhOTg0NmRiNS4uZTYxMjBhZjViIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jCisrKysgYi9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKK0BAIC05ODcsNyArOTg3LDcgQEAgYm9vbCBpc19tYWluX3RocmVhZCh2b2lkKSB7CisgICAgICAgICByZXR1cm4gY2FjaGVkID4gMDsKKyB9CisgCistbm9yZXR1cm4gdm9pZCBmcmVlemUodm9pZCkgeworK19ub3JldHVybl8gdm9pZCBmcmVlemUodm9pZCkgeworIAorICAgICAgICAgbG9nX2Nsb3NlKCk7CisgCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5oIGIvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5oCitpbmRleCA5MzAyOWUzNmUuLjUxNzBhZGVjNyAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuaAorKysrIGIvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5oCitAQCAtOTEsNyArOTEsNyBAQCBpbnQgcGlkX2Zyb21fc2FtZV9yb290X2ZzKHBpZF90IHBpZCk7CisgCisgYm9vbCBpc19tYWluX3RocmVhZCh2b2lkKTsKKyAKKy1ub3JldHVybiB2b2lkIGZyZWV6ZSh2b2lkKTsKKytfbm9yZXR1cm5fIHZvaWQgZnJlZXplKHZvaWQpOworIAorIGJvb2wgb29tX3Njb3JlX2FkanVzdF9pc192YWxpZChpbnQgb2EpOworIAorZGlmZiAtLWdpdCBhL3NyYy9jb3JlL21haW4uYyBiL3NyYy9jb3JlL21haW4uYworaW5kZXggMDc2ODQ2YTQxLi40YjJkMTQ5MjMgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9tYWluLmMKKysrKyBiL3NyYy9jb3JlL21haW4uYworQEAgLTE0MSw3ICsxNDEsNyBAQCBzdGF0aWMgdWludDY0X3QgYXJnX2RlZmF1bHRfdGFza3NfbWF4ID0gVUlOVDY0X01BWDsKKyBzdGF0aWMgc2RfaWQxMjhfdCBhcmdfbWFjaGluZV9pZCA9IHt9OworIHN0YXRpYyBFbWVyZ2VuY3lBY3Rpb24gYXJnX2NhZF9idXJzdF9hY3Rpb24gPSBFTUVSR0VOQ1lfQUNUSU9OX1JFQk9PVF9GT1JDRTsKKyAKKy1ub3JldHVybiBzdGF0aWMgdm9pZCBmcmVlemVfb3JfcmVib290KHZvaWQpIHsKKytfbm9yZXR1cm5fIHN0YXRpYyB2b2lkIGZyZWV6ZV9vcl9yZWJvb3Qodm9pZCkgeworIAorICAgICAgICAgaWYgKGFyZ19jcmFzaF9yZWJvb3QpIHsKKyAgICAgICAgICAgICAgICAgbG9nX25vdGljZSgiUmVib290aW5nIGluIDEwcy4uLiIpOworQEAgLTE1Niw3ICsxNTYsNyBAQCBub3JldHVybiBzdGF0aWMgdm9pZCBmcmVlemVfb3JfcmVib290KHZvaWQpIHsKKyAgICAgICAgIGZyZWV6ZSgpOworIH0KKyAKKy1ub3JldHVybiBzdGF0aWMgdm9pZCBjcmFzaChpbnQgc2lnKSB7CisrX25vcmV0dXJuXyBzdGF0aWMgdm9pZCBjcmFzaChpbnQgc2lnKSB7CisgICAgICAgICBzdHJ1Y3Qgc2lnYWN0aW9uIHNhOworICAgICAgICAgcGlkX3QgcGlkOworIAorZGlmZiAtLWdpdCBhL3NyYy9qb3VybmFsL3Rlc3Qtam91cm5hbC1pbnRlcmxlYXZpbmcuYyBiL3NyYy9qb3VybmFsL3Rlc3Qtam91cm5hbC1pbnRlcmxlYXZpbmcuYworaW5kZXggNWE4OGIyNzc0Li5kODdiZGJkZDMgMTAwNjQ0CistLS0gYS9zcmMvam91cm5hbC90ZXN0LWpvdXJuYWwtaW50ZXJsZWF2aW5nLmMKKysrKyBiL3NyYy9qb3VybmFsL3Rlc3Qtam91cm5hbC1pbnRlcmxlYXZpbmcuYworQEAgLTM3LDcgKzM3LDcgQEAKKyAKKyBzdGF0aWMgYm9vbCBhcmdfa2VlcCA9IGZhbHNlOworIAorLW5vcmV0dXJuIHN0YXRpYyB2b2lkIGxvZ19hc3NlcnRfZXJybm8oY29uc3QgY2hhciAqdGV4dCwgaW50IGVycm9yLCBjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZnVuYykgeworK19ub3JldHVybl8gc3RhdGljIHZvaWQgbG9nX2Fzc2VydF9lcnJubyhjb25zdCBjaGFyICp0ZXh0LCBpbnQgZXJyb3IsIGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpmdW5jKSB7CisgICAgICAgICBsb2dfaW50ZXJuYWwoTE9HX0NSSVQsIGVycm9yLCBmaWxlLCBsaW5lLCBmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICInJXMnIGZhaWxlZCBhdCAlczoldSAoJXMpOiAlbSIsIHRleHQsIGZpbGUsIGxpbmUsIGZ1bmMpOworICAgICAgICAgYWJvcnQoKTsKK2RpZmYgLS1naXQgYS9zcmMvc2hhcmVkL3BhZ2VyLmMgYi9zcmMvc2hhcmVkL3BhZ2VyLmMKK2luZGV4IDc1ZGIzYzk4NS4uNjgxYWY5YzQwIDEwMDY0NAorLS0tIGEvc3JjL3NoYXJlZC9wYWdlci5jCisrKysgYi9zcmMvc2hhcmVkL3BhZ2VyLmMKK0BAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBpbnQgc3RvcmVkX3N0ZGVyciA9IC0xOworIHN0YXRpYyBib29sIHN0ZG91dF9yZWRpcmVjdGVkID0gZmFsc2U7Cisgc3RhdGljIGJvb2wgc3RkZXJyX3JlZGlyZWN0ZWQgPSBmYWxzZTsKKyAKKy1ub3JldHVybiBzdGF0aWMgdm9pZCBwYWdlcl9mYWxsYmFjayh2b2lkKSB7CisrX25vcmV0dXJuXyBzdGF0aWMgdm9pZCBwYWdlcl9mYWxsYmFjayh2b2lkKSB7CisgICAgICAgICBpbnQgcjsKKyAKKyAgICAgICAgIHIgPSBjb3B5X2J5dGVzKFNURElOX0ZJTEVOTywgU1RET1VUX0ZJTEVOTywgKHVpbnQ2NF90KSAtMSwgMCk7CitkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvY29sbGVjdC9jb2xsZWN0LmMgYi9zcmMvdWRldi9jb2xsZWN0L2NvbGxlY3QuYworaW5kZXggMjgyMTY0MGU5Li5jOGZhNDdiM2QgMTAwNjQ0CistLS0gYS9zcmMvdWRldi9jb2xsZWN0L2NvbGxlY3QuYworKysrIGIvc3JjL3VkZXYvY29sbGVjdC9jb2xsZWN0LmMKK0BAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IF9tYXRlICpub2RlX3RvX21hdGUoc3RydWN0IHVkZXZfbGlzdF9ub2RlICpub2RlKQorICAgICAgICAgcmV0dXJuIGNvbnRhaW5lcl9vZihub2RlLCBzdHJ1Y3QgX21hdGUsIG5vZGUpOworIH0KKyAKKy1ub3JldHVybiBzdGF0aWMgdm9pZCBzaWdfYWxybShpbnQgc2lnbm8pCisrX25vcmV0dXJuXyBzdGF0aWMgdm9pZCBzaWdfYWxybShpbnQgc2lnbm8pCisgeworICAgICAgICAgZXhpdCg0KTsKKyB9CistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzQtRml4LWZvcm1hdC10cnVuY2F0aW9uLWNvbXBpbGUtZmFpbHVyZS1ieS10eXBlY2FzdGluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzNC1GaXgtZm9ybWF0LXRydW5jYXRpb24tY29tcGlsZS1mYWlsdXJlLWJ5LXR5cGVjYXN0aW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1NjA2MWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzQtRml4LWZvcm1hdC10cnVuY2F0aW9uLWNvbXBpbGUtZmFpbHVyZS1ieS10eXBlY2FzdGluZy5wYXRjaApAQCAtMCwwICsxLDE3MyBAQAorRnJvbSBjMmIzZWJlMTEyZWJmZDlmOWU4MmZiMTUzMWVlMjI1YzMxNTJjYTgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF0cmljayBVaXRlcndpamsgPHBhdHJpY2tAcHVpdGVyd2lqay5vcmc+CitEYXRlOiBUaHUsIDIyIEZlYiAyMDE4IDE5OjQxOjMwICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBmb3JtYXQtdHJ1bmNhdGlvbiBjb21waWxlIGZhaWx1cmUgYnkgdHlwZWNhc3RpbmcgVVNCIElEcworICgjODI1MCkKKworVGhpcyBwYXRjaCBhZGRzIHNhZmVfYXRvdXgxNiBmb3IgcGFyc2luZyBhbiB1bnNpZ25lZCBoZXhhZGVjaW1hbCAxNmJpdCBpbnQsIGFuZAordXNlcyB0aGF0IGZvciBwYXJzaW5nIFVTQiBkZXZpY2UgYW5kIHZlbmRvciBJRHMuCisKK1RoaXMgZml4ZXMgYSBjb21waWxlIGVycm9yIHdpdGggZ2NjLTggYmVjYXVzZSB3aGlsZSB3ZSBrbm93IHRoYXQgVVNCIElEcyBhcmUgMiBieXRlcywKK3RoZSBjb21waWxlciBkb2VzIG5vdCBrbm93IHRoYXQuCisKKy4uL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1od2RiLmM6ODA6Mzg6IGVycm9yOiAnJTA0WCcgZGlyZWN0aXZlIG91dHB1dCBtYXkgYmUKK3RydW5jYXRlZCB3cml0aW5nIGJldHdlZW4gNCBhbmQgOCBieXRlcyBpbnRvIGEgcmVnaW9uIG9mIHNpemUgYmV0d2VlbiAyIGFuZCA2CitbLVdlcnJvcj1mb3JtYXQtdHJ1bmNhdGlvbj1dCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQvY29tbWl0LzU1NDdjMTI1MDNhNjgzMjkwZWFlZDQ3OTU0ZmZjZmIyZDFiYzAzY2RdCisKK1NpZ25lZC1vZmYtYnk6IEFkYW0gV2lsbGlhbXNvbiA8YXdpbGxpYW1AcmVkaGF0LmNvbT4KK1NpZ25lZC1vZmYtYnk6IFBhdHJpY2sgVWl0ZXJ3aWprIDxwdWl0ZXJ3aWprQHJlZGhhdC5jb20+CistLS0KKyBzcmMvYmFzaWMvcGFyc2UtdXRpbC5jICAgICAgIHwgMjQgKysrKysrKysrKysrKysrKysrKysrKworIHNyYy9iYXNpYy9wYXJzZS11dGlsLmggICAgICAgfCAgMiArKworIHNyYy90ZXN0L3Rlc3QtcGFyc2UtdXRpbC5jICAgfCAzOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBzcmMvdWRldi91ZGV2LWJ1aWx0aW4taHdkYi5jIHwgMTMgKysrKysrLS0tLS0tCisgNCBmaWxlcyBjaGFuZ2VkLCA3MSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYyBiL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKK2luZGV4IDk3NTMzNzIxZC4uZmYzZmMyOThhIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYworKysrIGIvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYworQEAgLTUzMiw2ICs1MzIsMzAgQEAgaW50IHNhZmVfYXRvaTE2KGNvbnN0IGNoYXIgKnMsIGludDE2X3QgKnJldCkgeworICAgICAgICAgcmV0dXJuIDA7CisgfQorIAorK2ludCBzYWZlX2F0b3V4MTYoY29uc3QgY2hhciAqcywgdWludDE2X3QgKnJldCkgeworKyAgICAgICAgY2hhciAqeCA9IE5VTEw7CisrICAgICAgICB1bnNpZ25lZCBsb25nIGw7CisrCisrICAgICAgICBhc3NlcnQocyk7CisrICAgICAgICBhc3NlcnQocmV0KTsKKysKKysgICAgICAgIHMgKz0gc3Ryc3BuKHMsIFdISVRFU1BBQ0UpOworKworKyAgICAgICAgZXJybm8gPSAwOworKyAgICAgICAgbCA9IHN0cnRvdWwocywgJngsIDE2KTsKKysgICAgICAgIGlmIChlcnJubyA+IDApCisrICAgICAgICAgICAgICAgIHJldHVybiAtZXJybm87CisrICAgICAgICBpZiAoIXggfHwgeCA9PSBzIHx8ICp4ICE9IDApCisrICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworKyAgICAgICAgaWYgKHNbMF0gPT0gJy0nKQorKyAgICAgICAgICAgICAgICByZXR1cm4gLUVSQU5HRTsKKysgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgKHVpbnQxNl90KSBsICE9IGwpCisrICAgICAgICAgICAgICAgIHJldHVybiAtRVJBTkdFOworKworKyAgICAgICAgKnJldCA9ICh1aW50MTZfdCkgbDsKKysgICAgICAgIHJldHVybiAwOworK30KKysKKyBpbnQgc2FmZV9hdG9kKGNvbnN0IGNoYXIgKnMsIGRvdWJsZSAqcmV0X2QpIHsKKyAgICAgICAgIF9jbGVhbnVwXyhmcmVlbG9jYWxlcCkgbG9jYWxlX3QgbG9jID0gKGxvY2FsZV90KSAwOworICAgICAgICAgY2hhciAqeCA9IE5VTEw7CitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuaCBiL3NyYy9iYXNpYy9wYXJzZS11dGlsLmgKK2luZGV4IDFlZGExZDdmOS4uNzI3NDIyMDU2IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuaAorKysrIGIvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuaAorQEAgLTU0LDYgKzU0LDggQEAgaW50IHNhZmVfYXRvdTgoY29uc3QgY2hhciAqcywgdWludDhfdCAqcmV0KTsKKyBpbnQgc2FmZV9hdG91MTYoY29uc3QgY2hhciAqcywgdWludDE2X3QgKnJldCk7CisgaW50IHNhZmVfYXRvaTE2KGNvbnN0IGNoYXIgKnMsIGludDE2X3QgKnJldCk7CisgCisraW50IHNhZmVfYXRvdXgxNihjb25zdCBjaGFyICpzLCB1aW50MTZfdCAqcmV0KTsKKysKKyBzdGF0aWMgaW5saW5lIGludCBzYWZlX2F0b3UzMihjb25zdCBjaGFyICpzLCB1aW50MzJfdCAqcmV0X3UpIHsKKyAgICAgICAgIGFzc2VydF9jYyhzaXplb2YodWludDMyX3QpID09IHNpemVvZih1bnNpZ25lZCkpOworICAgICAgICAgcmV0dXJuIHNhZmVfYXRvdShzLCAodW5zaWduZWQqKSByZXRfdSk7CitkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdC1wYXJzZS11dGlsLmMgYi9zcmMvdGVzdC90ZXN0LXBhcnNlLXV0aWwuYworaW5kZXggOTM3NTAwMjEzLi5hOTljZWE1YTEgMTAwNjQ0CistLS0gYS9zcmMvdGVzdC90ZXN0LXBhcnNlLXV0aWwuYworKysrIGIvc3JjL3Rlc3QvdGVzdC1wYXJzZS11dGlsLmMKK0BAIC00NjgsNiArNDY4LDQ0IEBAIHN0YXRpYyB2b2lkIHRlc3Rfc2FmZV9hdG9pMTYodm9pZCkgeworICAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVJTlZBTCk7CisgfQorIAorK3N0YXRpYyB2b2lkIHRlc3Rfc2FmZV9hdG91eDE2KHZvaWQpIHsKKysgICAgICAgIGludCByOworKyAgICAgICAgdWludDE2X3QgbDsKKysKKysgICAgICAgIHIgPSBzYWZlX2F0b3V4MTYoIjEyMzQiLCAmbCk7CisrICAgICAgICBhc3NlcnRfc2UociA9PSAwKTsKKysgICAgICAgIGFzc2VydF9zZShsID09IDB4MTIzNCk7CisrCisrICAgICAgICByID0gc2FmZV9hdG91eDE2KCJhYmNkIiwgJmwpOworKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gMCk7CisrICAgICAgICBhc3NlcnRfc2UobCA9PSAweGFiY2QpOworKworKyAgICAgICAgciA9IHNhZmVfYXRvdXgxNigiICAxMjM0IiwgJmwpOworKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gMCk7CisrICAgICAgICBhc3NlcnRfc2UobCA9PSAweDEyMzQpOworKworKyAgICAgICAgciA9IHNhZmVfYXRvdXgxNigiMTIzNDUiLCAmbCk7CisrICAgICAgICBhc3NlcnRfc2UociA9PSAtRVJBTkdFKTsKKysKKysgICAgICAgIHIgPSBzYWZlX2F0b3V4MTYoIi0xIiwgJmwpOworKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVSQU5HRSk7CisrCisrICAgICAgICByID0gc2FmZV9hdG91eDE2KCIgIC0xIiwgJmwpOworKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVSQU5HRSk7CisrCisrICAgICAgICByID0gc2FmZV9hdG91eDE2KCJqdW5rIiwgJmwpOworKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVJTlZBTCk7CisrCisrICAgICAgICByID0gc2FmZV9hdG91eDE2KCIxMjN4IiwgJmwpOworKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVJTlZBTCk7CisrCisrICAgICAgICByID0gc2FmZV9hdG91eDE2KCIxMi4zIiwgJmwpOworKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVJTlZBTCk7CisrCisrICAgICAgICByID0gc2FmZV9hdG91eDE2KCIiLCAmbCk7CisrICAgICAgICBhc3NlcnRfc2UociA9PSAtRUlOVkFMKTsKKyt9CisrCisgc3RhdGljIHZvaWQgdGVzdF9zYWZlX2F0b3U2NCh2b2lkKSB7CisgICAgICAgICBpbnQgcjsKKyAgICAgICAgIHVpbnQ2NF90IGw7CitAQCAtNzQ1LDYgKzc4Myw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyAgICAgICAgIHRlc3Rfc2FmZV9hdG9sbGkoKTsKKyAgICAgICAgIHRlc3Rfc2FmZV9hdG91MTYoKTsKKyAgICAgICAgIHRlc3Rfc2FmZV9hdG9pMTYoKTsKKysgICAgICAgIHRlc3Rfc2FmZV9hdG91eDE2KCk7CisgICAgICAgICB0ZXN0X3NhZmVfYXRvdTY0KCk7CisgICAgICAgICB0ZXN0X3NhZmVfYXRvaTY0KCk7CisgICAgICAgICB0ZXN0X3NhZmVfYXRvZCgpOworZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1od2RiLmMgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4taHdkYi5jCitpbmRleCBjYTdmN2MyMzAuLmRiZmUwMjQyOSAxMDA2NDQKKy0tLSBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1od2RiLmMKKysrKyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1od2RiLmMKK0BAIC0yNyw2ICsyNyw3IEBACisgCisgI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKKyAjaW5jbHVkZSAiaHdkYi11dGlsLmgiCisrI2luY2x1ZGUgInBhcnNlLXV0aWwuaCIKKyAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKKyAjaW5jbHVkZSAidWRldi11dGlsLmgiCisgI2luY2x1ZGUgInVkZXYuaCIKK0BAIC02Myw3ICs2NCw3IEBAIGludCB1ZGV2X2J1aWx0aW5faHdkYl9sb29rdXAoc3RydWN0IHVkZXZfZGV2aWNlICpkZXYsCisgCisgc3RhdGljIGNvbnN0IGNoYXIgKm1vZGFsaWFzX3VzYihzdHJ1Y3QgdWRldl9kZXZpY2UgKmRldiwgY2hhciAqcywgc2l6ZV90IHNpemUpIHsKKyAgICAgICAgIGNvbnN0IGNoYXIgKnYsICpwOworLSAgICAgICAgaW50IHZuLCBwbjsKKysgICAgICAgIHVpbnQxNl90IHZuLCBwbjsKKyAKKyAgICAgICAgIHYgPSB1ZGV2X2RldmljZV9nZXRfc3lzYXR0cl92YWx1ZShkZXYsICJpZFZlbmRvciIpOworICAgICAgICAgaWYgKCF2KQorQEAgLTcxLDEyICs3MiwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciAqbW9kYWxpYXNfdXNiKHN0cnVjdCB1ZGV2X2RldmljZSAqZGV2LCBjaGFyICpzLCBzaXplX3Qgc2l6ZSkgeworICAgICAgICAgcCA9IHVkZXZfZGV2aWNlX2dldF9zeXNhdHRyX3ZhbHVlKGRldiwgImlkUHJvZHVjdCIpOworICAgICAgICAgaWYgKCFwKQorICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKy0gICAgICAgIHZuID0gc3RydG9sKHYsIE5VTEwsIDE2KTsKKy0gICAgICAgIGlmICh2biA8PSAwKQorLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKy0gICAgICAgIHBuID0gc3RydG9sKHAsIE5VTEwsIDE2KTsKKy0gICAgICAgIGlmIChwbiA8PSAwKQorLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgICAgIGlmIChzYWZlX2F0b3V4MTYodiwgJnZuKSA8IDApCisrCQlyZXR1cm4gTlVMTDsKKysgICAgICAgIGlmIChzYWZlX2F0b3V4MTYocCwgJnBuKSA8IDApCisrCQlyZXR1cm4gTlVMTDsKKyAgICAgICAgIHNucHJpbnRmKHMsIHNpemUsICJ1c2I6diUwNFhwJTA0WCoiLCB2biwgcG4pOworICAgICAgICAgcmV0dXJuIHM7CisgfQorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDM1LURlZmluZS1nbGliYy1jb21wYXRpYmxlLWJhc2VuYW1lLWZvci1ub24tZ2xpYmMtc3lzdGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzUtRGVmaW5lLWdsaWJjLWNvbXBhdGlibGUtYmFzZW5hbWUtZm9yLW5vbi1nbGliYy1zeXN0ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzZkNTI1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDM1LURlZmluZS1nbGliYy1jb21wYXRpYmxlLWJhc2VuYW1lLWZvci1ub24tZ2xpYmMtc3lzdGUucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA1ZjFmMDY0YzgxZWEzMGFjZjkzY2ZhMGZiNDY2YjM4ZjA5NGY0ODhjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMjcgTWF5IDIwMTggMDg6MzY6NDQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gRGVmaW5lIGdsaWJjIGNvbXBhdGlibGUgYmFzZW5hbWUoKSBmb3Igbm9uLWdsaWJjIHN5c3RlbXMKKworRml4ZXMgYnVpbGRzIHdpdGggbXVzbCwgZXZlbiB0aG91Z2ggc3lzdGVtZCBpcyBhZGFtYW50IGFib3V0Cit1c2luZyBub24tcG9zaXggYmFzZW5hbWUgaW1wbGVtZW50YXRpb24sIHdlIGhhdmUgYSB3YXkgb3V0CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL21hY2hpbmUvbWFjaGluZS1kYnVzLmMgYi9zcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYworaW5kZXggMmQ3ODA2NDkxYi4uOWEzYmRiMWQ3NiAxMDA2NDQKKy0tLSBhL3NyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jCisrKysgYi9zcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYworQEAgLTI5LDYgKzI5LDEwIEBACisgI2luY2x1ZGUgPGxpYmdlbi5oPgorICN1bmRlZiBiYXNlbmFtZQorIAorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrI2RlZmluZSBiYXNlbmFtZShzcmMpIChzdHJyY2hyKHNyYywnLycpID8gc3RycmNocihzcmMsJy8nKSsxIDogc3JjKQorKyNlbmRpZgorKworICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCisgI2luY2x1ZGUgImJ1cy1jb21tb24tZXJyb3JzLmgiCisgI2luY2x1ZGUgImJ1cy1pbnRlcm5hbC5oIgorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC9saWJtb3VudC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvbGlibW91bnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU5ZDViNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvbGlibW91bnQucGF0Y2gKQEAgLTAsMCArMSw3NSBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworRnJvbSAyMjdiOGE3NjJmZWExNDU4NTQ3YmUyY2RmMGU2ZTRhYWMwMDc5NzMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+CitEYXRlOiBNb24sIDI2IE1hciAyMDE4IDE3OjM0OjUzICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvcmU6IGRvbid0IGluY2x1ZGUgbGlibW91bnQuaCBpbiBhIGhlYWRlciBmaWxlICgjODU4MCkKKworbGludXgvZnMuaCBzeXMvbW91bnQuaCwgbGlibW91bnQuaCBhbmQgbWlzc2luZy5oIGFsbCBpbmNsdWRlIE1TXyoKK2RlZmluaXRpb25zLgorCitUbyBhdm9pZCBwcm9ibGVtcywgb25seSBvbmUgb2YgbGludXgvZnMuaCwgc3lzL21vdW50LmggYW5kIGxpYm1vdW50LmgKK3Nob3VsZCBiZSBpbmNsdWRlZC4gQW5kIG1pc3NpbmcuaCBtdXN0IGJlIGluY2x1ZGVkIGxhc3QuCisKK1dpdGhvdXQgdGhpcywgYnVpbGRpbmcgc3lzdGVtZCBtYXkgZmFpbCB3aXRoOgorCitJbiBmaWxlIGluY2x1ZGVkIGZyb20gWy4uLl0vbGlibW91bnQvbGlibW91bnQuaDozMTowLAorICAgICAgICAgICAgICAgICBmcm9tIC4uL3N5c3RlbWQtMjM4L3NyYy9jb3JlL21hbmFnZXIuaDoyMywKKyAgICAgICAgICAgICAgICAgZnJvbSAuLi9zeXN0ZW1kLTIzOC9zcmMvY29yZS9lbWVyZ2VuY3ktYWN0aW9uLmg6MzcsCisgICAgICAgICAgICAgICAgIGZyb20gLi4vc3lzdGVtZC0yMzgvc3JjL2NvcmUvdW5pdC5oOjM0LAorICAgICAgICAgICAgICAgICBmcm9tIC4uL3N5c3RlbWQtMjM4L3NyYy9jb3JlL2RidXMtdGltZXIuaDoyNSwKKyAgICAgICAgICAgICAgICAgZnJvbSAuLi9zeXN0ZW1kLTIzOC9zcmMvY29yZS90aW1lci5jOjI2OgorWy4uLl0vc3lzL21vdW50Lmg6NTc6MjogZXJyb3I6IGV4cGVjdGVkIGlkZW50aWZpZXIgYmVmb3JlIG51bWVyaWMgY29uc3RhbnQKKy0tLQorIHNyYy9jb3JlL2RidXMtZXhlY3V0ZS5jIHwgMSArCisgc3JjL2NvcmUvbWFuYWdlci5oICAgICAgfCAzICsrLQorIHNyYy9jb3JlL21vdW50LmMgICAgICAgIHwgMiArKworIDMgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9kYnVzLWV4ZWN1dGUuYyBiL3NyYy9jb3JlL2RidXMtZXhlY3V0ZS5jCitpbmRleCA3MzQ0NjIzZWJmNi4uYzM0MjA5M2JjYTQgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9kYnVzLWV4ZWN1dGUuYworKysrIGIvc3JjL2NvcmUvZGJ1cy1leGVjdXRlLmMKK0BAIC0xOCw2ICsxOCw3IEBACisgICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqKiovCisgCisrI2luY2x1ZGUgPHN5cy9tb3VudC5oPgorICNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KKyAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+CisgCitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbWFuYWdlci5oIGIvc3JjL2NvcmUvbWFuYWdlci5oCitpbmRleCAyOGM1ZGEyMjViMS4uZTA5ZTBjZGY1ZTkgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9tYW5hZ2VyLmgKKysrKyBiL3NyYy9jb3JlL21hbmFnZXIuaAorQEAgLTIwLDcgKzIwLDYgQEAKKyAgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICoqKi8KKyAKKy0jaW5jbHVkZSA8bGlibW91bnQuaD4KKyAjaW5jbHVkZSA8c3RkYm9vbC5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorIAorQEAgLTM0LDYgKzMzLDggQEAKKyAjaW5jbHVkZSAibGlzdC5oIgorICNpbmNsdWRlICJyYXRlbGltaXQuaCIKKyAKKytzdHJ1Y3QgbGlibW50X21vbml0b3I7CisrCisgLyogRW5mb3JjZSB1cHBlciBsaW1pdCBob3cgbWFueSBuYW1lcyB3ZSBhbGxvdyAqLworICNkZWZpbmUgTUFOQUdFUl9NQVhfTkFNRVMgMTMxMDcyIC8qIDEyOEsgKi8KKyAKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9tb3VudC5jIGIvc3JjL2NvcmUvbW91bnQuYworaW5kZXggMGU3NTVkYTVjMDIuLjAxNTRlYmRhNWQ2IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvbW91bnQuYworKysrIGIvc3JjL2NvcmUvbW91bnQuYworQEAgLTIzLDYgKzIzLDggQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3lzL2Vwb2xsLmg+CisgCisrI2luY2x1ZGUgPGxpYm1vdW50Lmg+CisrCisgI2luY2x1ZGUgInNkLW1lc3NhZ2VzLmgiCisgCisgI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvcnVuLXB0ZXN0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC9ydW4tcHRlc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhZTc2ZmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC9ydW4tcHRlc3QKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLSMhL2Jpbi9zaAotCi1jZCB0ZXN0cwotdGFyIC1DIHRlc3QgLXhKZiB0ZXN0L3N5cy50YXIueHoKLW1ha2UgY2hlY2stVEVTVFMKLWNkIC4uCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzIzNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjM0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2UyN2JmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjM0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjQxICswLDAgQEAKLXJlcXVpcmUgc3lzdGVtZC5pbmMKLQotUFJPVklERVMgPSAidWRldiIKLQotUEUgPSAiMSIKLQotREVQRU5EUyA9ICJrbW9kIGludGx0b29sLW5hdGl2ZSBncGVyZi1uYXRpdmUgYWNsIHJlYWRsaW5lIGxpYmNhcCBsaWJjZ3JvdXAgdXRpbC1saW51eCIKLQotU0VDVElPTiA9ICJiYXNlL3NoZWxsIgotCi1pbmhlcml0IHVzZXJhZGQgcGtnY29uZmlnIGF1dG90b29scyBwZXJsbmF0aXZlIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcWVtdSBzeXN0ZW1kIHB0ZXN0IGdldHRleHQgYmFzaC1jb21wbGV0aW9uIG1hbnBhZ2VzCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQuZ2l0O3Byb3RvY29sPWdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly90b3VjaHNjcmVlbi5ydWxlcyBcCi0gICAgICAgICAgIGZpbGU6Ly8wMC1jcmVhdGUtdm9sYXRpbGUuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9pbml0IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LVVzZS1nZXRlbnYtd2hlbi1zZWN1cmUtdmVyc2lvbnMtYXJlLW5vdC1hdmFpbGFibGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEwLWltcGxtZW50LXN5c3RlbWQtc3lzdi1pbnN0YWxsLWZvci1PRS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDExLW5zcy1teW1hY2hpbmVzLUJ1aWxkLWNvbmRpdGlvbmFsbHktd2hlbi1IQVZFX01ZSE9TVE4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMi1ydWxlcy13aGl0ZWxpc3QtaGQtZGV2aWNlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEzLU1ha2Utcm9vdC1zLWhvbWUtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE0LVJldmVydC1ydWxlcy1yZW1vdmUtZmlybXdhcmUtbG9hZGluZy1ydWxlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE1LVJldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNy1yZW1vdmUtZHVwbGljYXRlLWluY2x1ZGUtdWNoYXIuaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE4LWNoZWNrLWZvci11Y2hhci5oLWluLWNvbmZpZ3VyZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE5LXNvY2tldC11dGlsLWRvbi10LWZhaWwtaWYtbGliYy1kb2Vzbi10LXN1cHBvcnQtSUROLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3NpbmctX19jb21wYXJfZm5fdC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LWNoZWNrLWZvci1taXNzaW5nLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1Eby1ub3QtZW5hYmxlLW5zcy10ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA5LXRlc3QtaGV4ZGVjb2N0LmMtSW5jbHVkZS1taXNzaW5nLmgtZm9ybS1zdHJuZHVwYS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEwLXRlc3Qtc2l6ZW9mLmMtRGlzYWJsZS10ZXN0cy1mb3ItbWlzc2luZy10eXBlZGVmcy1pbi0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMS1kb24tdC11c2UtZ2xpYmMtc3BlY2lmaWMtcXNvcnRfci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEyLWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEzLWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EZWZpbmUtX1BBVEhfV1RNUFgtYW5kLV9QQVRIX1VUTVBYLWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXVpbnRtYXhfdC1mb3ItaGFuZGxpbmctcmxpbV90LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29yZS1ldmFsdWF0ZS1wcmVzZXRzLWFmdGVyLWdlbmVyYXRvcnMtaGF2ZS1ydW4tNjUyNi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1haW4tc2tpcC1tYW55LWluaXRpYWxpemF0aW9uLXN0ZXBzLXdoZW4tcnVubmluZy1pbi0ucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9xZW11YWxsID0gIiBmaWxlOi8vMDAwMS1jb3JlLWRldmljZS5jLUNoYW5nZS10aGUtZGVmYXVsdC1kZXZpY2UtdGltZW91dC10by0yLnBhdGNoIgotCi1QQU1fUExVR0lOUyA9ICIgXAotICAgIHBhbS1wbHVnaW4tdW5peCBcCi0gICAgcGFtLXBsdWdpbi1sb2dpbnVpZCBcCi0gICAgcGFtLXBsdWdpbi1rZXlpbml0IFwKLSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnZWZpIGxkY29uZmlnIHBhbSBzZWxpbnV4IHVzcm1lcmdlJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dpZmknLCAncmZraWxsJywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneGtiY29tbW9uJywgJycsIGQpfSBcCi0gICAgYmFja2xpZ2h0IFwKLSAgICBiaW5mbXQgXAotICAgIGZpcnN0Ym9vdCBcCi0gICAgaGliZXJuYXRlIFwKLSAgICBob3N0bmFtZWQgXAotICAgIGltYSBcCi0gICAgbG9jYWxlZCBcCi0gICAgbG9naW5kIFwKLSAgICBtYWNoaW5lZCBcCi0gICAgbXlob3N0bmFtZSBcCi0gICAgbmV0d29ya2QgXAotICAgIG5zcyBcCi0gICAgcG9sa2l0IFwKLSAgICBxdW90YWNoZWNrIFwKLSAgICByYW5kb21zZWVkIFwKLSAgICByZXNvbHZlZCBcCi0gICAgc21hY2sgXAotICAgIHN5c3VzZXJzIFwKLSAgICB0aW1lZGF0ZWQgXAotICAgIHRpbWVzeW5jZCBcCi0gICAgdXRtcCBcCi0gICAgdmNvbnNvbGUgXAotICAgIHh6IFwKLSIKLQotUEFDS0FHRUNPTkZJR19yZW1vdmVfbGliYy1tdXNsID0gIiBcCi0gICAgbG9jYWxlZCBcCi0gICAgbXlob3N0bmFtZSBcCi0gICAgbnNzIFwKLSAgICByZXNvbHZlZCBcCi0gICAgc2VsaW51eCBcCi0gICAgc21hY2sgXAotICAgIHN5c3VzZXJzIFwKLSAgICB1dG1wIFwKLSIKLQotIyBVc2UgdGhlIHVwc3RyZWFtIHN5c3RlbWQgc2VyaWFsLWdldHR5QC5zZXJ2aWNlIGFuZCByZWx5IG9uCi0jIHN5c3RlbWQtZ2V0dHktZ2VuZXJhdG9yIGluc3RlYWQgb2YgdXNpbmcgdGhlIE9FLWNvcmUgc3BlY2lmaWMKLSMgc3lzdGVtZC1zZXJpYWxnZXR0eS5iYiAtIG5vdCBlbmFibGVkIGJ5IGRlZmF1bHQuCi1QQUNLQUdFQ09ORklHW3NlcmlhbC1nZXR0eS1nZW5lcmF0b3JdID0gIiIKLQotUEFDS0FHRUNPTkZJR1thdWRpdF0gPSAiLS1lbmFibGUtYXVkaXQsLS1kaXNhYmxlLWF1ZGl0LGF1ZGl0IgotUEFDS0FHRUNPTkZJR1tiYWNrbGlnaHRdID0gIi0tZW5hYmxlLWJhY2tsaWdodCwtLWRpc2FibGUtYmFja2xpZ2h0IgotUEFDS0FHRUNPTkZJR1tiaW5mbXRdID0gIi0tZW5hYmxlLWJpbmZtdCwtLWRpc2FibGUtYmluZm10IgotUEFDS0FHRUNPTkZJR1tiemlwMl0gPSAiLS1lbmFibGUtYnppcDIsLS1kaXNhYmxlLWJ6aXAyLGJ6aXAyIgotUEFDS0FHRUNPTkZJR1tjb3JlZHVtcF0gPSAiLS1lbmFibGUtY29yZWR1bXAsLS1kaXNhYmxlLWNvcmVkdW1wIgotUEFDS0FHRUNPTkZJR1tjcnlwdHNldHVwXSA9ICItLWVuYWJsZS1saWJjcnlwdHNldHVwLC0tZGlzYWJsZS1saWJjcnlwdHNldHVwLGNyeXB0c2V0dXAiCi1QQUNLQUdFQ09ORklHW2RidXNdID0gIi0tZW5hYmxlLWRidXMsLS1kaXNhYmxlLWRidXMsZGJ1cyIKLVBBQ0tBR0VDT05GSUdbZWZpXSA9ICItLWVuYWJsZS1lZmksLS1kaXNhYmxlLWVmaSIKLVBBQ0tBR0VDT05GSUdbZWxmdXRpbHNdID0gIi0tZW5hYmxlLWVsZnV0aWxzLC0tZGlzYWJsZS1lbGZ1dGlscyxlbGZ1dGlscyIKLVBBQ0tBR0VDT05GSUdbZmlyc3Rib290XSA9ICItLWVuYWJsZS1maXJzdGJvb3QsLS1kaXNhYmxlLWZpcnN0Ym9vdCIKLSMgU2lnbiB0aGUgam91cm5hbCBmb3IgYW50aS10YW1wZXJpbmcKLVBBQ0tBR0VDT05GSUdbZ2NyeXB0XSA9ICItLWVuYWJsZS1nY3J5cHQsLS1kaXNhYmxlLWdjcnlwdCxsaWJnY3J5cHQiCi1QQUNLQUdFQ09ORklHW2hpYmVybmF0ZV0gPSAiLS1lbmFibGUtaGliZXJuYXRlLC0tZGlzYWJsZS1oaWJlcm5hdGUiCi1QQUNLQUdFQ09ORklHW2hvc3RuYW1lZF0gPSAiLS1lbmFibGUtaG9zdG5hbWVkLC0tZGlzYWJsZS1ob3N0bmFtZWQiCi1QQUNLQUdFQ09ORklHW2ltYV0gPSAiLS1lbmFibGUtaW1hLC0tZGlzYWJsZS1pbWEiCi0jIGltcG9ydGQgcmVxdWlyZXMgY3VybC94ei96bGliL2J6aXAyL2djcnlwdAotUEFDS0FHRUNPTkZJR1tpbXBvcnRkXSA9ICItLWVuYWJsZS1pbXBvcnRkLC0tZGlzYWJsZS1pbXBvcnRkIgotIyBVcGRhdGUgTkFUIGZpcmV3YWxsIHJ1bGVzCi1QQUNLQUdFQ09ORklHW2lwdGNdID0gIi0tZW5hYmxlLWxpYmlwdGMsLS1kaXNhYmxlLWxpYmlwdGMsaXB0YWJsZXMiCi1QQUNLQUdFQ09ORklHW2pvdXJuYWwtdXBsb2FkXSA9ICItLWVuYWJsZS1saWJjdXJsLC0tZGlzYWJsZS1saWJjdXJsLGN1cmwiCi1QQUNLQUdFQ09ORklHW2xkY29uZmlnXSA9ICItLWVuYWJsZS1sZGNvbmZpZywtLWRpc2FibGUtbGRjb25maWciCi1QQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLS1lbmFibGUtbGliaWRuLC0tZGlzYWJsZS1saWJpZG4sbGliaWRuIgotUEFDS0FHRUNPTkZJR1tsb2NhbGVkXSA9ICItLWVuYWJsZS1sb2NhbGVkLC0tZGlzYWJsZS1sb2NhbGVkIgotUEFDS0FHRUNPTkZJR1tsb2dpbmRdID0gIi0tZW5hYmxlLWxvZ2luZCwtLWRpc2FibGUtbG9naW5kIgotUEFDS0FHRUNPTkZJR1tsejRdID0gIi0tZW5hYmxlLWx6NCwtLWRpc2FibGUtbHo0LGx6NCIKLVBBQ0tBR0VDT05GSUdbbWFjaGluZWRdID0gIi0tZW5hYmxlLW1hY2hpbmVkLC0tZGlzYWJsZS1tYWNoaW5lZCIKLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbnBhZ2VzLC0tZGlzYWJsZS1tYW5wYWdlcyxsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgotUEFDS0FHRUNPTkZJR1ttaWNyb2h0dHBkXSA9ICItLWVuYWJsZS1taWNyb2h0dHBkLC0tZGlzYWJsZS1taWNyb2h0dHBkLGxpYm1pY3JvaHR0cGQiCi1QQUNLQUdFQ09ORklHW215aG9zdG5hbWVdID0gIi0tZW5hYmxlLW15aG9zdG5hbWUsLS1kaXNhYmxlLW15aG9zdG5hbWUiCi1QQUNLQUdFQ09ORklHW25ldHdvcmtkXSA9ICItLWVuYWJsZS1uZXR3b3JrZCwtLWRpc2FibGUtbmV0d29ya2QiCi1QQUNLQUdFQ09ORklHW25zc10gPSAiLS1lbmFibGUtbnNzLXN5c3RlbWQsLS1kaXNhYmxlLW5zcy1zeXN0ZW1kIgotUEFDS0FHRUNPTkZJR1twYW1dID0gIi0tZW5hYmxlLXBhbSwtLWRpc2FibGUtcGFtLGxpYnBhbSwke1BBTV9QTFVHSU5TfSIKLVBBQ0tBR0VDT05GSUdbcG9sa2l0XSA9ICItLWVuYWJsZS1wb2xraXQsLS1kaXNhYmxlLXBvbGtpdCIKLVBBQ0tBR0VDT05GSUdbcXJlbmNvZGVdID0gIi0tZW5hYmxlLXFyZW5jb2RlLC0tZGlzYWJsZS1xcmVuY29kZSxxcmVuY29kZSIKLVBBQ0tBR0VDT05GSUdbcXVvdGFjaGVja10gPSAiLS1lbmFibGUtcXVvdGFjaGVjaywtLWRpc2FibGUtcXVvdGFjaGVjayIKLVBBQ0tBR0VDT05GSUdbcmFuZG9tc2VlZF0gPSAiLS1lbmFibGUtcmFuZG9tc2VlZCwtLWRpc2FibGUtcmFuZG9tc2VlZCIKLVBBQ0tBR0VDT05GSUdbcmVzb2x2ZWRdID0gIi0tZW5hYmxlLXJlc29sdmVkLC0tZGlzYWJsZS1yZXNvbHZlZCIKLVBBQ0tBR0VDT05GSUdbcmZraWxsXSA9ICItLWVuYWJsZS1yZmtpbGwsLS1kaXNhYmxlLXJma2lsbCIKLSMgbGlic2VjY29tcCBpcyBmb3VuZCBpbiBtZXRhLXNlY3VyaXR5Ci1QQUNLQUdFQ09ORklHW3NlY2NvbXBdID0gIi0tZW5hYmxlLXNlY2NvbXAsLS1kaXNhYmxlLXNlY2NvbXAsbGlic2VjY29tcCIKLVBBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLS1lbmFibGUtc2VsaW51eCwtLWRpc2FibGUtc2VsaW51eCxsaWJzZWxpbnV4LGluaXRzY3JpcHRzLXN1c2hlbGwiCi1QQUNLQUdFQ09ORklHW3NtYWNrXSA9ICItLWVuYWJsZS1zbWFjaywtLWRpc2FibGUtc21hY2siCi1QQUNLQUdFQ09ORklHW3N5c3VzZXJzXSA9ICItLWVuYWJsZS1zeXN1c2VycywtLWRpc2FibGUtc3lzdXNlcnMiCi1QQUNLQUdFQ09ORklHW3RpbWVkYXRlZF0gPSAiLS1lbmFibGUtdGltZWRhdGVkLC0tZGlzYWJsZS10aW1lZGF0ZWQiCi1QQUNLQUdFQ09ORklHW3RpbWVzeW5jZF0gPSAiLS1lbmFibGUtdGltZXN5bmNkLC0tZGlzYWJsZS10aW1lc3luY2QiCi1QQUNLQUdFQ09ORklHW3Vzcm1lcmdlXSA9ICItLWRpc2FibGUtc3BsaXQtdXNyLC0tZW5hYmxlLXNwbGl0LXVzciIKLVBBQ0tBR0VDT05GSUdbdXRtcF0gPSAiLS1lbmFibGUtdXRtcCwtLWRpc2FibGUtdXRtcCIKLVBBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gImFjX2N2X2hlYWRlcl92YWxncmluZF9tZW1jaGVja19oPXllcyBhY19jdl9oZWFkZXJfdmFsZ3JpbmRfdmFsZ3JpbmRfaD15ZXMsYWNfY3ZfaGVhZGVyX3ZhbGdyaW5kX21lbWNoZWNrX2g9bm8gYWNfY3ZfaGVhZGVyX3ZhbGdyaW5kX3ZhbGdyaW5kX2g9bm8sdmFsZ3JpbmQiCi1QQUNLQUdFQ09ORklHW3Zjb25zb2xlXSA9ICItLWVuYWJsZS12Y29uc29sZSwtLWRpc2FibGUtdmNvbnNvbGUsLCR7UE59LXZjb25zb2xlLXNldHVwIgotIyBWZXJpZnkga2V5bWFwcyBvbiBsb2NhbGUgY2hhbmdlCi1QQUNLQUdFQ09ORklHW3hrYmNvbW1vbl0gPSAiLS1lbmFibGUteGtiY29tbW9uLC0tZGlzYWJsZS14a2Jjb21tb24sbGlieGtiY29tbW9uIgotUEFDS0FHRUNPTkZJR1t4el0gPSAiLS1lbmFibGUteHosLS1kaXNhYmxlLXh6LHh6IgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLWVuYWJsZS16bGliLC0tZGlzYWJsZS16bGliLHpsaWIiCi0KLSMgSGFyZGNvZGUgdGFyZ2V0IGJpbmFyeSBwYXRocyB0byBhdm9pZCBBQ19QUk9HX1BBVEggaW4gdGhlIHN5c3RlbWQKLSMgY29uZmlndXJlIHNjcmlwdCBkZXRlY3RpbmcgYW5kIHNldHRpbmcgcGF0aHMgZnJvbSBzeXNyb290IG9yIGhvc3QuCi1DQUNIRURfQ09ORklHVVJFVkFSU19jbGFzcy10YXJnZXQgPSAiIFwKLSAgICBhY19jdl9wYXRoX0tFWEVDPSR7c2JpbmRpcn0va2V4ZWMgXAotICAgIGFjX2N2X3BhdGhfS0lMTD0ke2Jhc2VfYmluZGlyfS9raWxsIFwKLSAgICBhY19jdl9wYXRoX0tNT0Q9JHtiYXNlX2JpbmRpcn0va21vZCBcCi0gICAgYWNfY3ZfcGF0aF9NT1VOVF9QQVRIPSR7YmFzZV9iaW5kaXJ9L21vdW50IFwKLSAgICBhY19jdl9wYXRoX1FVT1RBQ0hFQ0s9JHtzYmluZGlyfS9xdW90YWNoZWNrIFwKLSAgICBhY19jdl9wYXRoX1FVT1RBT049JHtzYmluZGlyfS9xdW90YW9uIFwKLSAgICBhY19jdl9wYXRoX1NVTE9HSU49JHtiYXNlX3NiaW5kaXJ9L3N1bG9naW4gXAotICAgIGFjX2N2X3BhdGhfVU1PVU5UX1BBVEg9JHtiYXNlX2JpbmRpcn0vdW1vdW50IFwKLSIKLQotIyBIZWxwZXIgdmFyaWFibGVzIHRvIGNsYXJpZnkgbG9jYXRpb25zLiAgVGhpcyBtaXJyb3JzIHRoZSBsb2dpYyBpbiBzeXN0ZW1kJ3MKLSMgYnVpbGQgc3lzdGVtLgotcm9vdHByZWZpeCA/PSAiJHtyb290X3ByZWZpeH0iCi1yb290bGliZGlyID89ICIke2Jhc2VfbGliZGlyfSIKLXJvb3RsaWJleGVjZGlyID0gIiR7cm9vdHByZWZpeH0vbGliIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLXdpdGhvdXQtcHl0aG9uIFwKLSAgICAtLXdpdGgtcm9vdGhvbWVkaXI9JHtST09UX0hPTUV9IFwKLSAgICAtLXdpdGgtcm9vdGxpYmRpcj0ke3Jvb3RsaWJkaXJ9IFwKLSAgICAtLXdpdGgtcm9vdHByZWZpeD0ke3Jvb3RwcmVmaXh9IFwKLSAgICAtLXdpdGgtc3lzdnJjbmQtcGF0aD0ke3N5c2NvbmZkaXJ9IFwKLSAgICAtLXdpdGgtZmlybXdhcmUtcGF0aD0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlIFwKLSIKLQotIyBwZXIgdGhlIHN5c3RlbWQgUkVBRE1FLCBkZWZpbmUgVkFMR1JJTkQ9MSB0byBydW4gdW5kZXIgdmFsZ3JpbmQKLUNGTEFHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndmFsZ3JpbmQnLCAnIC1EVkFMR1JJTkQ9MScsICcnLCBkKX0iCi0KLSMgZGlzYWJsZSBwcm9ibGVtYXRpYyBHQ0MgNS4yIG9wdGltaXphdGlvbnMgW1lPQ1RPICM4MjkxXQotRlVMTF9PUFRJTUlaQVRJT05fYXBwZW5kX2FybSA9ICIgLWZuby1zY2hlZHVsZS1pbnNucyAtZm5vLXNjaGVkdWxlLWluc25zMiIKLQotQ09NUElMRVJfTk0gPz0gIiR7SE9TVF9QUkVGSVh9Z2NjLW5tIgotQ09NUElMRVJfQVIgPz0gIiR7SE9TVF9QUkVGSVh9Z2NjLWFyIgotQ09NUElMRVJfUkFOTElCID89ICIke0hPU1RfUFJFRklYfWdjYy1yYW5saWIiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCWV4cG9ydCBOTT0iJHtDT01QSUxFUl9OTX0iCi0JZXhwb3J0IEFSPSIke0NPTVBJTEVSX0FSfSIKLQlleHBvcnQgUkFOTElCPSIke0NPTVBJTEVSX1JBTkxJQn0iCi0JZXhwb3J0IEtNT0Q9IiR7YmFzZV9iaW5kaXJ9L2ttb2QiCi0JaWYgWyAtZCAke1N9L3VuaXRzLnByZV9zZWQgXSA7IHRoZW4KLQkJY3AgLXIgJHtTfS91bml0cy5wcmVfc2VkICR7U30vdW5pdHMKLQllbHNlCi0JCWNwIC1yICR7U30vdW5pdHMgJHtTfS91bml0cy5wcmVfc2VkCi0JZmkKLQlzZWQgLWkgLWUgJ3M6LURURVNUX0RJUj1cXFwiLipcXFwiOi1EVEVTVF9ESVI9XFxcIiR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdFxcXCI6JyAke1N9L01ha2VmaWxlLmFtCi0Jc2VkIC1pIC1lICdzOi1EQ0FUQUxPR19ESVI9XFxcIi4qXFxcIjotRENBVEFMT0dfRElSPVxcXCIke1BURVNUX1BBVEh9L3Rlc3RzL2NhdGFsb2dcXFwiOicgJHtTfS9NYWtlZmlsZS5hbQotfQotCi1kb19pbnN0YWxsKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0JaW5zdGFsbCAtZCAke0R9LyR7YmFzZV9zYmluZGlyfQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlcmlhbC1nZXR0eS1nZW5lcmF0b3InLCAnZmFsc2UnLCAndHJ1ZScsIGQpfTsgdGhlbgotCQkjIFByb3ZpZGVkIGJ5IGEgc2VwYXJhdGUgcmVjaXBlCi0JCXJtICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NlcmlhbC1nZXR0eSogLWYKLQlmaQotCi0JIyBQcm92aWRlIHN1cHBvcnQgZm9yIGluaXRyYW1mcwotCVsgISAtZSAke0R9L2luaXQgXSAmJiBsbiAtcyAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQgJHtEfS9pbml0Ci0JWyAhIC1lICR7RH0vJHtiYXNlX3NiaW5kaXJ9L3VkZXZkIF0gJiYgbG4gLXMgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXVkZXZkICR7RH0vJHtiYXNlX3NiaW5kaXJ9L3VkZXZkCi0KLQkjIENyZWF0ZSBtYWNoaW5lLWlkCi0JIyAyMDoxMiA8IG1lemNhbGVybz4ga29lbjogeW91IGhhdmUgdGhyZWUgb3B0aW9uczogYSkgcnVuIHN5c3RlbWQtbWFjaGluZS1pZC1zZXR1cCBhdCBpbnN0YWxsIHRpbWUsIGIpIGhhdmUgLyByZWFkLW9ubHkgYW5kIGFuIGVtcHR5IGZpbGUgdGhlcmUgKGZvciBzdGF0ZWxlc3MpIGFuZCBjKSBib290IHdpdGggLyB3cml0YWJsZQotCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L21hY2hpbmUtaWQKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLwotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LyoucnVsZXMgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLwotCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcKLQlpbnN0YWxsIC1tIDA2NDQgJHtCfS9zcmMvdWRldi91ZGV2LnBjICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnLwotCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vMDAtY3JlYXRlLXZvbGF0aWxlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KLQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN2aW5pdCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQKLQkJc2VkIC1pIHMlQFVERVZEQCUke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQlICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXN0ZW1kLXVkZXZkCi0JZmkKLQotCWNob3duIHJvb3Q6c3lzdGVtZC1qb3VybmFsICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9sb2cvam91cm5hbAotCi0JIyBEZWxldGUgam91cm5hbCBSRUFETUUsIGFzIGxvZyBjYW4gYmUgc3ltbGlua2VkIGluc2lkZSB2b2xhdGlsZS4KLQlybSAtZiAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbG9nL1JFQURNRQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ncmFwaGljYWwudGFyZ2V0LndhbnRzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cwotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcG93ZXJvZmYudGFyZ2V0LndhbnRzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZWJvb3QudGFyZ2V0LndhbnRzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZXNjdWUudGFyZ2V0LndhbnRzCi0KLQkjIENyZWF0ZSBzeW1saW5rcyBmb3Igc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndXRtcCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZ3JhcGhpY2FsLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wb3dlcm9mZi50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCi0JCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmVib290LnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZXNjdWUudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQotCWZpCi0KLQkjIEVuYWJsZSBqb3VybmFsIHRvIGZvcndhcmQgbWVzc2FnZSB0byBzeXNsb2cgZGFlbW9uCi0Jc2VkIC1pIC1lICdzLy4qRm9yd2FyZFRvU3lzbG9nLiovRm9yd2FyZFRvU3lzbG9nPXllcy8nICR7RH0ke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZgotCSMgU2V0IHRoZSBtYXhpbWl1bSBzaXplIG9mIHJ1bnRpbWUgam91cm5hbCB0byA2NE0gYXMgZGVmYXVsdAotCXNlZCAtaSAtZSAncy8uKlJ1bnRpbWVNYXhVc2UuKi9SdW50aW1lTWF4VXNlPTY0TS8nICR7RH0ke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZgotCi0JIyB0aGlzIGZpbGUgaXMgbmVlZGVkIHRvIGV4aXN0IGlmIG5ldHdvcmtkIGlzIGRpc2FibGVkIGJ1dCB0aW1lc3luY2QgaXMgc3RpbGwgaW4gdXNlIHNpbmNlIHRpbWVzeW5jZCBjaGVja3MgaXQKLQkjIGZvciBleGlzdGVuY2UgZWxzZSBpdCBmYWlscwotCWlmIFsgLXMgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZiBdOyB0aGVuCi0JCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ25ldHdvcmtkJywgJzonLCAnc2VkIC1pIC1lICJcJGFkIC9ydW4vc3lzdGVtZC9uZXRpZi9saW5rcyAwNzU1IHJvb3Qgcm9vdCAtIiAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mJywgZCl9Ci0JZmkKLQlpZiAhICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Jlc29sdmVkJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJZWNobyAnTCEgJHtzeXNjb25mZGlyfS9yZXNvbHYuY29uZiAtIC0gLSAtIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYnID4+JHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL2V0Yy5jb25mCi0JCWVjaG8gJ2QgL3J1bi9zeXN0ZW1kL3Jlc29sdmUgMDc1NSByb290IHJvb3QgLScgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mCi0JCWVjaG8gJ2YgL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYgMDY0NCByb290IHJvb3QnID4+JHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZgotCQlsbiAtcyAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQKLQllbHNlCi0JCXNlZCAtaSAtZSAicyVeTCEgL2V0Yy9yZXNvbHYuY29uZi4qJCVMISAvZXRjL3Jlc29sdi5jb25mIC0gLSAtIC0gLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiVnIiAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvZXRjLmNvbmYKLQkJbG4gLXMgLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiAke0R9JHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kCi0JZmkKLQlpbnN0YWxsIC1EbSAwNzU1ICR7U30vc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTiAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbWQtc3lzdi1pbnN0YWxsCi0KLQkjIElmIHBvbGtpdCBpcyBzZXR1cCBmaXh1cCBwZXJtaXNzaW9ucyBhbmQgb3duZXJzaGlwCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncG9sa2l0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJaWYgWyAtZCAke0R9JHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kIF07IHRoZW4KLQkJCWNobW9kIDcwMCAke0R9JHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kCi0JCQljaG93biBwb2xraXRkOnJvb3QgJHtEfSR7ZGF0YWRpcn0vcG9sa2l0LTEvcnVsZXMuZAotCQlmaQotCWZpCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotCSMgaW5zdGFsbCBkYXRhIGZpbGVzIG5lZWRlZCBmb3IgdGVzdHMKLQlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3Rlc3QKLQljcCAtcmZMICR7U30vdGVzdC8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3Rlc3QKLQkjIHB5dGhvbiBpcyBkaXNhYmxlZCBmb3Igc3lzdGVtZCwgdGh1cyByZW1vdmluZyB0aGVzZSBweXRob24gdGVzdGluZyBzY3JpcHRzCi0Jcm0gJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdC8qLnB5Ci0Jc2VkIC1pICdzLyJ0cmVlIi8ibHMiLycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdC91ZGV2LXRlc3QucGwKLQotCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvY2F0YWxvZwotCWluc3RhbGwgJHtTfS9jYXRhbG9nLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvY2F0YWxvZy8KLQotCWluc3RhbGwgLUQgJHtTfS9idWlsZC1hdXgvdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvYnVpbGQtYXV4L3Rlc3QtZHJpdmVyCi0KLQlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3J1bGVzCi0JaW5zdGFsbCAke0J9L3J1bGVzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvcnVsZXMvCi0KLQkjIFRoaXMgZGlyZWN0b3J5IG5lZWRzIHRvIGJlIHRoZXJlIGZvciB1ZGV2LXRlc3QucGwgdG8gd29yay4KLQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vdWRldi9ydWxlcy5kCi0KLQkjIGluc3RhbGwgYWN0dWFsIHRlc3QgYmluYXJpZXMKLQlpbnN0YWxsIC1tIDA3NTUgJHtCfS90ZXN0LSogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCi0JaW5zdGFsbCAtbSAwNzU1ICR7Qn0vLmxpYnMvdGVzdC0qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLwotCi0JaW5zdGFsbCAke0J9L01ha2VmaWxlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLwotfQotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKXsKLSAgICBzeXN0ZW1kbGliZGlyID0gZC5nZXRWYXIoInJvb3RsaWJkaXIiKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHN5c3RlbWRsaWJkaXIsICdebGliKC4qKVwuc29cLionLCAnbGliJXMnLCAnU3lzdGVtZCAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKLX0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWIodWRldnxzeXN0ZW1kfG5zcykuKiIKLQotUEFDS0FHRVMgPSsgIlwKLSAgICAke1BOfS1ndWkgXAotICAgICR7UE59LXZjb25zb2xlLXNldHVwIFwKLSAgICAke1BOfS1pbml0cmFtZnMgXAotICAgICR7UE59LWFuYWx5emUgXAotICAgICR7UE59LWtlcm5lbC1pbnN0YWxsIFwKLSAgICAke1BOfS1ycG0tbWFjcm9zIFwKLSAgICAke1BOfS1iaW5mbXQgXAotICAgICR7UE59LXpzaC1jb21wbGV0aW9uIFwKLSAgICAke1BOfS14b3JnLXhpbml0cmMgXAotICAgICR7UE59LWNvbnRhaW5lciBcCi0gICAgJHtQTn0tZXh0cmEtdXRpbHMgXAotIgotCi1TVU1NQVJZXyR7UE59LWNvbnRhaW5lciA9ICJUb29scyBmb3IgY29udGFpbmVycyBhbmQgVk1zIgotREVTQ1JJUFRJT05fJHtQTn0tY29udGFpbmVyID0gIlN5c3RlbWQgdG9vbHMgdG8gc3Bhd24gYW5kIG1hbmFnZSBjb250YWluZXJzIGFuZCB2aXJ0dWFsIG1hY2hpbmVzLiIKLQotU1lTVEVNRF9QQUNLQUdFUyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdiaW5mbXQnLCAnJHtQTn0tYmluZm10JywgJycsIGQpfSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1iaW5mbXQgPSAic3lzdGVtZC1iaW5mbXQuc2VydmljZSIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1leHRyYS11dGlscyIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21pY3JvaHR0cGQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheTsnLCAnJywgZCl9IgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWljcm9odHRwZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC1yZW1vdGU7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2pvdXJuYWwtdXBsb2FkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLXVwbG9hZDsnLCAnJywgZCl9IgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGltZXN5bmNkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC10aW1lc3luYzsnLCAnJywgZCl9IgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbmV0d29ya2QnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLW5ldHdvcms7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2NvcmVkdW1wJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1jb3JlZHVtcDsnLCAnJywgZCl9IgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLXJlc29sdmU7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BvbGtpdCcsICctLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0tdXNlci1ncm91cCAtLWhvbWUtZGlyICR7c3lzY29uZmRpcn0vcG9sa2l0LTEgcG9sa2l0ZDsnLCAnJywgZCl9IgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLXIgbG9jazsgLXIgc3lzdGVtZC1qb3VybmFsIgotVVNFUkFERF9QQVJBTV8ke1BOfS1leHRyYS11dGlscyArPSAiLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWJ1cy1wcm94eTsiCi0KLUZJTEVTXyR7UE59LWFuYWx5emUgPSAiJHtiaW5kaXJ9L3N5c3RlbWQtYW5hbHl6ZSIKLQotRklMRVNfJHtQTn0taW5pdHJhbWZzID0gIi9pbml0IgotUkRFUEVORFNfJHtQTn0taW5pdHJhbWZzID0gIiR7UE59IgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiZ2F3ayBtYWtlIHBlcmwgYmFzaCB4eiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgdHpkYXRhIHR6ZGF0YS1hbWVyaWNhcyB0emRhdGEtYXNpYSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgdHpkYXRhLWV1cm9wZSB0emRhdGEtYWZyaWNhIHR6ZGF0YS1hbnRhcmN0aWNhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICB0emRhdGEtYXJjdGljIHR6ZGF0YS1hdGxhbnRpYyB0emRhdGEtYXVzdHJhbGlhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICB0emRhdGEtcGFjaWZpYyB0emRhdGEtcG9zaXgiCi0KLUZJTEVTXyR7UE59LXB0ZXN0ICs9ICIke2xpYmRpcn0vdWRldi9ydWxlcy5kIgotCi1GSUxFU18ke1BOfS1ndWkgPSAiJHtiaW5kaXJ9L3N5c3RlbWFkbSIKLQotRklMRVNfJHtQTn0tdmNvbnNvbGUtc2V0dXAgPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXZjb25zb2xlLXNldHVwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC12Y29uc29sZS1zZXR1cC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC12Y29uc29sZS1zZXR1cC5zZXJ2aWNlIgotCi1SREVQRU5EU18ke1BOfS1rZXJuZWwtaW5zdGFsbCArPSAiYmFzaCIKLUZJTEVTXyR7UE59LWtlcm5lbC1pbnN0YWxsID0gIiR7YmluZGlyfS9rZXJuZWwtaW5zdGFsbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2tlcm5lbC8gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2tlcm5lbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLUZJTEVTXyR7UE59LXJwbS1tYWNyb3MgPSAiJHtleGVjX3ByZWZpeH0vbGliL3JwbSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1GSUxFU18ke1BOfS14b3JnLXhpbml0cmMgPSAiJHtzeXNjb25mZGlyfS9YMTEveGluaXQveGluaXRyYy5kLyoiCi0KLUZJTEVTXyR7UE59LXpzaC1jb21wbGV0aW9uID0gIiR7ZGF0YWRpcn0venNoL3NpdGUtZnVuY3Rpb25zIgotCi1GSUxFU18ke1BOfS1iaW5mbXQgPSAiJHtzeXNjb25mZGlyfS9iaW5mbXQuZC8gXAotICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9iaW5mbXQuZCBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWJpbmZtdCBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy4qIFwKLSAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYmluZm10LnNlcnZpY2UiCi1SUkVDT01NRU5EU18ke1BOfS1iaW5mbXQgPSAia2VybmVsLW1vZHVsZS1iaW5mbXQtbWlzYyIKLQotUlJFQ09NTUVORFNfJHtQTn0tdmNvbnNvbGUtc2V0dXAgPSAia2JkIGtiZC1jb25zb2xlZm9udHMga2JkLWtleW1hcHMiCi0KLUZJTEVTXyR7UE59LWNvbnRhaW5lciA9ICIke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuY29uZiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vbWFjaGluZWN0bCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtbnNwYXduIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS9zeXN0ZW1kL2ltcG9ydC1wdWJyaW5nLmdwZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9idXNuYW1lcy50YXJnZXQud2FudHMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuYnVzbmFtZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9idXNuYW1lcy50YXJnZXQud2FudHMvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmJ1c25hbWUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9jYWwtZnMudGFyZ2V0LndhbnRzL3Zhci1saWItbWFjaGluZXMubW91bnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbWFjaGluZS5zbGljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9tYWNoaW5lcy50YXJnZXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuYnVzbmFtZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuYnVzbmFtZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLWltcG9ydGQuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLW1hY2hpbmVkLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vZGJ1cy1vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS92YXItbGliLW1hY2hpbmVzLm1vdW50IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW1wb3J0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW1wb3J0ZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1qb3VybmFsLXJlbW90ZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtdXBsb2FkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtbWFjaGluZWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1wdWxsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLW5zcGF3bi5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtbnNwYXduQC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibnNzX215bWFjaGluZXMuc28uMiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmNvbmYgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5wb2xpY3kgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEucG9saWN5IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICIKLQotRklMRVNfJHtQTn0tZXh0cmEtdXRpbHMgPSAiXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1lc2NhcGUgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1pbmhpYml0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWRldGVjdC12aXJ0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtcnVuIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNhdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1kZWx0YSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jZ2xzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNndG9wIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXN0ZGlvLWJyaWRnZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWFzay1wYXNzd29yZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLXR0eS1hc2stcGFzc3dvcmQtYWdlbnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXJlc29sdmUtaG9zdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYWMtcG93ZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWFjdGl2YXRlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1idXMtcHJveHlkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1idXMtcHJveHlkLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWJ1cy1wcm94eWQuc29ja2V0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1zb2NrZXQtcHJveHlkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1yZXBseS1wYXNzd29yZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtc2xlZXAgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW0tc2xlZXAgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWhpYmVybmF0ZS5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1oeWJyaWQtc2xlZXAuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtc3VzcGVuZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc2xlZXAudGFyZ2V0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbml0Y3RsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1pbml0Y3RsLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWluaXRjdGwuc29ja2V0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc29ja2V0cy50YXJnZXQud2FudHMvc3lzdGVtZC1pbml0Y3RsLnNvY2tldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbS1nZW5lcmF0b3JzL3N5c3RlbWQtZ3B0LWF1dG8tZ2VuZXJhdG9yIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1jZ3JvdXBzLWFnZW50IFwKLSIKLQotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vbWFjaGluZS1pZCBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2NvcmVkdW1wLmNvbmYgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvbG9naW5kLmNvbmYgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9zeXN0ZW0uY29uZiBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3VzZXIuY29uZiIKLQotRklMRVNfJHtQTn0gPSAiICR7YmFzZV9iaW5kaXJ9LyogXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtCUE59IFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2ZhY3RvcnkgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGJ1cy0xLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9tYWNoaW5lLWlkIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L21vZHVsZXMtbG9hZC5kLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9wYW0uZC8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzY3RsLmQvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3hkZy8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL1JFQURNRSBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kIFwKLSAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kLyogXAotICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS8qIFwKLSAgICAgICAgICAgICAgICAke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8qLnNvIFwKLSAgICAgICAgICAgICAgICAvY2dyb3VwIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZCogXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9idXNjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9jb3JlZHVtcGN0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2xvY2FsZWN0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2hvc3RuYW1lY3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vdGltZWRhdGVjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9ib290Y3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0va2VybmVsLWluc3RhbGwgXAotICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kLyouY29uZiBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c3RlbWQgXAotICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9tb2R1bGVzLWxvYWQuZCBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c2N0bC5kIFwKLSAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvc3lzdXNlcnMuZCBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2Vudmlyb25tZW50LmQgXAotICAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0gXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzcwLXVhY2Nlc3MucnVsZXMgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzcxLXNlYXQucnVsZXMgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzczLXNlYXQtbGF0ZS5ydWxlcyBcCi0gICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvOTktc3lzdGVtZC5ydWxlcyBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnRpbWVkYXRlMS5jb25mIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubG9jYWxlMS5jb25mIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubmV0d29yazEuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnJlc29sdmUxLmNvbmYgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5zeXN0ZW1kMS5jb25mIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaG9zdG5hbWUxLmNvbmYgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5sb2dpbjEuY29uZiBcCi0gICAgICAgICAgICAgICAiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvKi5sYSAke2RhdGFkaXJ9L2RidXMtMS9pbnRlcmZhY2VzLyAke3N5c2NvbmZkaXJ9L3JwbS9tYWNyb3Muc3lzdGVtZCIKLQotUkRFUEVORFNfJHtQTn0gKz0gImttb2QgZGJ1cyB1dGlsLWxpbnV4LW1vdW50IHVkZXYgKD0gJHtFWFRFTkRQS0dWfSkgdXRpbC1saW51eC1hZ2V0dHkiCi1SREVQRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VyaWFsLWdldHR5LWdlbmVyYXRvcicsICcnLCAnc3lzdGVtZC1zZXJpYWxnZXR0eScsIGQpfSIKLVJERVBFTkRTXyR7UE59ICs9ICJ2b2xhdGlsZS1iaW5kcyB1cGRhdGUtcmMuZCIKLQotUlJFQ09NTUVORFNfJHtQTn0gKz0gInN5c3RlbWQtZXh0cmEtdXRpbHMgXAotICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbWQtY29tcGF0LXVuaXRzIHVkZXYtaHdkYiBcCi0gICAgICAgICAgICAgICAgICAgICAgdXRpbC1saW51eC1mc2NrIGUyZnNwcm9ncy1lMmZzY2sgXAotICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtYXV0b2ZzNCBrZXJuZWwtbW9kdWxlLXVuaXgga2VybmVsLW1vZHVsZS1pcHY2IFwKLSAgICAgICAgICAgICAgICAgICAgICBvcy1yZWxlYXNlIFwKLSIKLQotSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyBsaWJkaXIiCi1JTlNBTkVfU0tJUF8ke1BOfS1kYmcgKz0gImxpYmRpciIKLUlOU0FORV9TS0lQXyR7UE59LWRvYyArPSAiIGxpYmRpciIKLQotUEFDS0FHRVMgPSsgInVkZXYgdWRldi1od2RiIgotCi1SUFJPVklERVNfdWRldiA9ICJob3RwbHVnIgotCi1SREVQRU5EU191ZGV2LWh3ZGIgKz0gInVkZXYiCi0KLUZJTEVTX3VkZXYgKz0gIiR7YmFzZV9zYmluZGlyfS91ZGV2ZCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9hY2NlbGVyb21ldGVyIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvYXRhX2lkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvY2Ryb21faWQgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9jb2xsZWN0IFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvZmluZGtleWJvYXJkcyBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleWJvYXJkLWZvcmNlLXJlbGVhc2Uuc2ggXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXltYXAgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9tdGRfcHJvYmUgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9zY3NpX2lkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvdjRsX2lkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5bWFwcyBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvKi5ydWxlcyBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3VkZXYgXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZCBcCi0gICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyp1ZGV2KiBcCi0gICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyoud2FudHMvKnVkZXYqIFwKLSAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3VkZXZhZG0gXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24vY29tcGxldGlvbnMvdWRldmFkbSBcCi0gICAgICAgICAgICAgICIKLQotRklMRVNfdWRldi1od2RiID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvaHdkYi5kIgotCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gInVkZXYiCi1JTklUU0NSSVBUX05BTUVfdWRldiA9ICJzeXN0ZW1kLXVkZXZkIgotSU5JVFNDUklQVF9QQVJBTVNfdWRldiA9ICJzdGFydCAwMyBTIC4iCi0KLXB5dGhvbiBfX2Fub255bW91cygpIHsKLSAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsIFRydWUsIEZhbHNlLCBkKToKLSAgICAgICAgZC5zZXRWYXIoIklOSElCSVRfVVBEQVRFUkNEX0JCQ0xBU1MiLCAiMSIpCi19Ci0KLSMgVE9ETzoKLSMgdS1hIGZvciBydW5sZXZlbCBhbmQgdGVsaW5pdAotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJpbml0IGhhbHQgcmVib290IHNodXRkb3duIHBvd2Vyb2ZmIHJ1bmxldmVsIHJlc29sdi1jb25mIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbaW5pdF0gPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2luaXRdID0gIiR7YmFzZV9zYmluZGlyfS9pbml0IgotQUxURVJOQVRJVkVfUFJJT1JJVFlbaW5pdF0gPz0gIjMwMCIKLQotQUxURVJOQVRJVkVfVEFSR0VUW2hhbHRdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtoYWx0XSA9ICIke2Jhc2Vfc2JpbmRpcn0vaGFsdCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW2hhbHRdID89ICIzMDAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtyZWJvb3RdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtyZWJvb3RdID0gIiR7YmFzZV9zYmluZGlyfS9yZWJvb3QiCi1BTFRFUk5BVElWRV9QUklPUklUWVtyZWJvb3RdID89ICIzMDAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtzaHV0ZG93bl0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3NodXRkb3duXSA9ICIke2Jhc2Vfc2JpbmRpcn0vc2h1dGRvd24iCi1BTFRFUk5BVElWRV9QUklPUklUWVtzaHV0ZG93bl0gPz0gIjMwMCIKLQotQUxURVJOQVRJVkVfVEFSR0VUW3Bvd2Vyb2ZmXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcG93ZXJvZmZdID0gIiR7YmFzZV9zYmluZGlyfS9wb3dlcm9mZiIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW3Bvd2Vyb2ZmXSA/PSAiMzAwIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbcnVubGV2ZWxdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtydW5sZXZlbF0gPSAiJHtiYXNlX3NiaW5kaXJ9L3J1bmxldmVsIgotQUxURVJOQVRJVkVfUFJJT1JJVFlbcnVubGV2ZWxdID89ICIzMDAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtyZXNvbHYtY29uZl0gPSAiJHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Jlc29sdi1jb25mXSA9ICIke3N5c2NvbmZkaXJ9L3Jlc29sdi5jb25mIgotQUxURVJOQVRJVkVfUFJJT1JJVFlbcmVzb2x2LWNvbmZdID89ICI1MCIKLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLQlzZWQgLWUgJy9eaG9zdHM6L3MvXHMqXDxteWhvc3RuYW1lXD4vLycgXAotCQktZSAncy9cKF5ob3N0czouKlwpXChcPGZpbGVzXD5cKVwoLipcKVwoXDxkbnNcPlwpXCguKlwpL1wxXDIgbXlob3N0bmFtZSBcM1w0XDUvJyBcCi0JCS1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCi19Ci0KLXBrZ19wcmVybV8ke1BOfSAoKSB7Ci0Jc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bXlob3N0bmFtZVw+Ly8nIFwKLQkJLWUgJy9eaG9zdHM6L3MvXHMqbXlob3N0bmFtZS8vJyBcCi0JCS1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCi19Ci0KLVBBQ0tBR0VfV1JJVEVfREVQUyArPSAicWVtdS1uYXRpdmUiCi1wa2dfcG9zdGluc3RfdWRldi1od2RiICgpIHsKLQlpZiB0ZXN0IC1uICIkRCI7IHRoZW4KLQkJJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2Jhc2VfYmluZGlyfS91ZGV2YWRtJyl9IGh3ZGIgLS11cGRhdGUgXAotCQkJLS1yb290ICRECi0JCWNob3duIHJvb3Q6cm9vdCAkRCR7c3lzY29uZmRpcn0vdWRldi9od2RiLmJpbgotCWVsc2UKLQkJdWRldmFkbSBod2RiIC0tdXBkYXRlCi0JZmkKLX0KLQotcGtnX3ByZXJtX3VkZXYtaHdkYiAoKSB7Ci0Jcm0gLWYgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KLX0KLQotIyBBcyB0aGlzIHJlY2lwZSBidWlsZHMgdWRldiwgcmVzcGVjdCBzeXN0ZW1kIGJlaW5nIGluIERJU1RST19GRUFUVVJFUyBzbwotIyB0aGF0IHdlIGRvbid0IGJ1aWxkIGJvdGggdWRldiBhbmQgc3lzdGVtZCBpbiB3b3JsZCBidWlsZHMuCi1weXRob24gKCkgewotICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucyAoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgVHJ1ZSwgRmFsc2UsIGQpOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiJ3N5c3RlbWQnIG5vdCBpbiBESVNUUk9fRkVBVFVSRVMiKQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yMzcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzIzNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTY1NThkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yMzcuYmIKQEAgLTAsMCArMSw1OTUgQEAKK3JlcXVpcmUgc3lzdGVtZC5pbmMKKworUFJPVklERVMgPSAidWRldiIKKworUEUgPSAiMSIKKworREVQRU5EUyA9ICJrbW9kIGludGx0b29sLW5hdGl2ZSBncGVyZi1uYXRpdmUgYWNsIHJlYWRsaW5lIGxpYmNhcCBsaWJjZ3JvdXAgdXRpbC1saW51eCIKKworU0VDVElPTiA9ICJiYXNlL3NoZWxsIgorCitpbmhlcml0IHVzZXJhZGQgcGtnY29uZmlnIG1lc29uIHBlcmxuYXRpdmUgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcyBxZW11IHN5c3RlbWQgZ2V0dGV4dCBiYXNoLWNvbXBsZXRpb24gbWFucGFnZXMgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKKyMgQXMgdGhpcyByZWNpcGUgYnVpbGRzIHVkZXYsIHJlc3BlY3Qgc3lzdGVtZCBiZWluZyBpbiBESVNUUk9fRkVBVFVSRVMgc28KKyMgdGhhdCB3ZSBkb24ndCBidWlsZCBib3RoIHVkZXYgYW5kIHN5c3RlbWQgaW4gd29ybGQgYnVpbGRzLgorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly90b3VjaHNjcmVlbi5ydWxlcyBcCisgICAgICAgICAgIGZpbGU6Ly8wMC1jcmVhdGUtdm9sYXRpbGUuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtSGlkZS1fX3N0YXJ0X0JVU19FUlJPUl9NQVAtYW5kLV9fc3RvcF9CVVNfRVJST1JfTUFQLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLWdldGVudi13aGVuLXNlY3VyZS12ZXJzaW9ucy1hcmUtbm90LWF2YWlsYWJsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWJpbmZtdC1Eb24tdC1pbnN0YWxsLWRlcGVuZGVuY3ktbGlua3MtYXQtaW5zdGFsbC10aW0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtcnVsZXMtd2hpdGVsaXN0LWhkLWRldmljZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1NYWtlLXJvb3Qtcy1ob21lLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy1SZXZlcnQtcnVsZXMtcmVtb3ZlLWZpcm13YXJlLWxvYWRpbmctcnVsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDktcmVtb3ZlLWR1cGxpY2F0ZS1pbmNsdWRlLXVjaGFyLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMC1jaGVjay1mb3ItdWNoYXIuaC1pbi1tZXNvbi5idWlsZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDExLXNvY2tldC11dGlsLWRvbi10LWZhaWwtaWYtbGliYy1kb2Vzbi10LXN1cHBvcnQtSUROLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTItcnVsZXMtd2F0Y2gtbWV0YWRhdGEtY2hhbmdlcy1pbi1pZGUtZGV2aWNlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEzLWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTQtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1zdHJuZHVwYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE1LWRvbi10LWZhaWwtaWYtR0xPQl9CUkFDRS1hbmQtR0xPQl9BTFRESVJGVU5DLWlzLW5vdC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNi1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLV9fY29tcGFyX2ZuX3QtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTctSW5jbHVkZS1uZXRpbmV0LWlmX2V0aGVyLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC1jaGVjay1mb3ItbWlzc2luZy1jYW5vbmljYWxpemVfZmlsZV9uYW1lLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTktRG8tbm90LWVuYWJsZS1uc3MtdGVzdHMtaWYtbnNzLXN5c3RlbWQtaXMtbm90LWVuYWJsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIwLXRlc3QtaGV4ZGVjb2N0LmMtSW5jbHVkZS1taXNzaW5nLmgtZm9yLXN0cm5kdXBhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjEtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIyLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjMtZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjQtY29tcGFyaXNvbl9mbl90LWlzLWdsaWJjLXNwZWNpZmljLXVzZS1yYXctc2lnbmF0dXJlLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI1LURlZmluZS1fUEFUSF9XVE1QWC1hbmQtX1BBVEhfVVRNUFgtaWYtbm90LWRlZmluZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNi1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNy1yZW1vdmUtbm9ib2R5LXVzZXItZ3JvdXAtY2hlY2tpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyOC1hZGQtbWlzc2luZy1GVFdfLW1hY3Jvcy1mb3ItbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI5LW5zcy1teW1hY2hpbmVzLUJ1aWxkLWNvbmRpdGlvbmFsbHktd2hlbi1FTkFCTEVfTVlIT1MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMC1maXgtbWlzc2luZy1vZi1fX3JlZ2lzdGVyX2F0Zm9yay1mb3Itbm9uLWdsaWJjLWJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzEtZml4LW1pc3NpbmctVUxPTkdfTE9OR19NQVgtZGVmaW5pdGlvbi1pbi1jYXNlLW9mLW11cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMyLW1lbWZkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzMtYmFzaWMtbWFjcm9zLXJlbmFtZS1ub3JldHVybi1pbnRvLV9ub3JldHVybl8tODQ1Ni5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9saWJtb3VudC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM0LUZpeC1mb3JtYXQtdHJ1bmNhdGlvbi1jb21waWxlLWZhaWx1cmUtYnktdHlwZWNhc3RpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNS1EZWZpbmUtZ2xpYmMtY29tcGF0aWJsZS1iYXNlbmFtZS1mb3Itbm9uLWdsaWJjLXN5c3RlLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfcWVtdWFsbCA9ICIgZmlsZTovLzAwMDEtY29yZS1kZXZpY2UuYy1DaGFuZ2UtdGhlLWRlZmF1bHQtZGV2aWNlLXRpbWVvdXQtdG8tMi5wYXRjaCIKKworIyBXb3JrYXJvdW5kIHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fc3RhY2tfY2hrX2ZhaWxfbG9jYWwnIG9uIHFlbXV4ODYgYW5kIHFlbXVwcGMgZm9yIG11c2wKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbF9xZW11eDg2ID0gIiBmaWxlOi8vMDAwMS1SZW1vdmUtZnN0YWNrLXByb3RlY3Rvci1mbGFncy10by13b3JrYXJvdW5kLW11c2wtYnVpLnBhdGNoIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsX3FlbXVwcGMgPSAiIGZpbGU6Ly8wMDAxLVJlbW92ZS1mc3RhY2stcHJvdGVjdG9yLWZsYWdzLXRvLXdvcmthcm91bmQtbXVzbC1idWkucGF0Y2giCisKK1BBTV9QTFVHSU5TID0gIiBcCisgICAgcGFtLXBsdWdpbi11bml4IFwKKyAgICBwYW0tcGx1Z2luLWxvZ2ludWlkIFwKKyAgICBwYW0tcGx1Z2luLWtleWluaXQgXAorIgorCitQQUNLQUdFQ09ORklHID8/PSAiIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdlZmkgbGRjb25maWcgcGFtIHNlbGludXggdXNybWVyZ2UnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2lmaScsICdyZmtpbGwnLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4a2Jjb21tb24nLCAnJywgZCl9IFwKKyAgICBiYWNrbGlnaHQgXAorICAgIGJpbmZtdCBcCisgICAgZmlyc3Rib290IFwKKyAgICBoaWJlcm5hdGUgXAorICAgIGhvc3RuYW1lZCBcCisgICAgaW1hIFwKKyAgICBsb2NhbGVkIFwKKyAgICBsb2dpbmQgXAorICAgIG1hY2hpbmVkIFwKKyAgICBteWhvc3RuYW1lIFwKKyAgICBuZXR3b3JrZCBcCisgICAgbnNzIFwKKyAgICBwb2xraXQgXAorICAgIHF1b3RhY2hlY2sgXAorICAgIHJhbmRvbXNlZWQgXAorICAgIHJlc29sdmVkIFwKKyAgICBzbWFjayBcCisgICAgc3lzdXNlcnMgXAorICAgIHRpbWVkYXRlZCBcCisgICAgdGltZXN5bmNkIFwKKyAgICB1dG1wIFwKKyAgICB2Y29uc29sZSBcCisgICAgeHogXAorIgorCitQQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAiIFwKKyAgICBsb2NhbGVkIFwKKyAgICBteWhvc3RuYW1lIFwKKyAgICBuc3MgXAorICAgIHJlc29sdmVkIFwKKyAgICBzZWxpbnV4IFwKKyAgICBzbWFjayBcCisgICAgc3lzdXNlcnMgXAorICAgIHV0bXAgXAorIgorCisjIFVzZSB0aGUgdXBzdHJlYW0gc3lzdGVtZCBzZXJpYWwtZ2V0dHlALnNlcnZpY2UgYW5kIHJlbHkgb24KKyMgc3lzdGVtZC1nZXR0eS1nZW5lcmF0b3IgaW5zdGVhZCBvZiB1c2luZyB0aGUgT0UtY29yZSBzcGVjaWZpYworIyBzeXN0ZW1kLXNlcmlhbGdldHR5LmJiIC0gbm90IGVuYWJsZWQgYnkgZGVmYXVsdC4KK1BBQ0tBR0VDT05GSUdbc2VyaWFsLWdldHR5LWdlbmVyYXRvcl0gPSAiIgorCitQQUNLQUdFQ09ORklHW2F1ZGl0XSA9ICItRGF1ZGl0PXRydWUsLURhdWRpdD1mYWxzZSxhdWRpdCIKK1BBQ0tBR0VDT05GSUdbYmFja2xpZ2h0XSA9ICItRGJhY2tsaWdodD10cnVlLC1EYmFja2xpZ2h0PWZhbHNlIgorUEFDS0FHRUNPTkZJR1tiaW5mbXRdID0gIi1EYmluZm10PXRydWUsLURiaW5mbXQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItRGJ6aXAyPXRydWUsLURiemlwMj1mYWxzZSxiemlwMiIKK1BBQ0tBR0VDT05GSUdbY29yZWR1bXBdID0gIi1EY29yZWR1bXA9dHJ1ZSwtRGNvcmVkdW1wPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tjcnlwdHNldHVwXSA9ICItRGxpYmNyeXB0c2V0dXA9dHJ1ZSwtRGxpYmNyeXB0c2V0dXA9ZmFsc2UsY3J5cHRzZXR1cCIKK1BBQ0tBR0VDT05GSUdbZGJ1c10gPSAiLURkYnVzPXRydWUsLURkYnVzPWZhbHNlLGRidXMiCitQQUNLQUdFQ09ORklHW2VmaV0gPSAiLURlZmk9dHJ1ZSwtRGVmaT1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbZWxmdXRpbHNdID0gIi1EZWxmdXRpbHM9dHJ1ZSwtRGVsZnV0aWxzPWZhbHNlLGVsZnV0aWxzIgorUEFDS0FHRUNPTkZJR1tmaXJzdGJvb3RdID0gIi1EZmlyc3Rib290PXRydWUsLURmaXJzdGJvb3Q9ZmFsc2UiCisjIFNpZ24gdGhlIGpvdXJuYWwgZm9yIGFudGktdGFtcGVyaW5nCitQQUNLQUdFQ09ORklHW2djcnlwdF0gPSAiLURnY3J5cHQ9dHJ1ZSwtRGdjcnlwdD1mYWxzZSxsaWJnY3J5cHQiCitQQUNLQUdFQ09ORklHW2hpYmVybmF0ZV0gPSAiLURoaWJlcm5hdGU9dHJ1ZSwtRGhpYmVybmF0ZT1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbaG9zdG5hbWVkXSA9ICItRGhvc3RuYW1lZD10cnVlLC1EaG9zdG5hbWVkPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tpbWFdID0gIi1EaW1hPXRydWUsLURpbWE9ZmFsc2UiCisjIGltcG9ydGQgcmVxdWlyZXMgY3VybC94ei96bGliL2J6aXAyL2djcnlwdAorUEFDS0FHRUNPTkZJR1tpbXBvcnRkXSA9ICItRGltcG9ydGQ9dHJ1ZSwtRGltcG9ydGQ9ZmFsc2UiCisjIFVwZGF0ZSBOQVQgZmlyZXdhbGwgcnVsZXMKK1BBQ0tBR0VDT05GSUdbaXB0Y10gPSAiLURsaWJpcHRjPXRydWUsLURsaWJpcHRjPWZhbHNlLGlwdGFibGVzIgorUEFDS0FHRUNPTkZJR1tqb3VybmFsLXVwbG9hZF0gPSAiLURsaWJjdXJsPXRydWUsLURsaWJjdXJsPWZhbHNlLGN1cmwiCitQQUNLQUdFQ09ORklHW2xkY29uZmlnXSA9ICItRGxkY29uZmlnPXRydWUsLURsZGNvbmZpZz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICItRGxpYmlkbj10cnVlLC1EbGliaWRuPWZhbHNlLGxpYmlkbiIKK1BBQ0tBR0VDT05GSUdbbG9jYWxlZF0gPSAiLURsb2NhbGVkPXRydWUsLURsb2NhbGVkPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tsb2dpbmRdID0gIi1EbG9naW5kPXRydWUsLURsb2dpbmQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2x6NF0gPSAiLURsejQ9dHJ1ZSwtRGx6ND1mYWxzZSxsejQiCitQQUNLQUdFQ09ORklHW21hY2hpbmVkXSA9ICItRG1hY2hpbmVkPXRydWUsLURtYWNoaW5lZD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi1EbWFuPXRydWUsLURtYW49ZmFsc2UsbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIGRvY2Jvb2steG1sLWR0ZDQtbmF0aXZlIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbbWljcm9odHRwZF0gPSAiLURtaWNyb2h0dHBkPXRydWUsLURtaWNyb2h0dHBkPWZhbHNlLGxpYm1pY3JvaHR0cGQiCitQQUNLQUdFQ09ORklHW215aG9zdG5hbWVdID0gIi1EbXlob3N0bmFtZT10cnVlLC1EbXlob3N0bmFtZT1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbbmV0d29ya2RdID0gIi1EbmV0d29ya2Q9dHJ1ZSwtRG5ldHdvcmtkPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tuc3NdID0gIi1EbnNzLXN5c3RlbWQ9dHJ1ZSwtRG5zcy1zeXN0ZW1kPWZhbHNlIgorUEFDS0FHRUNPTkZJR1twYW1dID0gIi1EcGFtPXRydWUsLURwYW09ZmFsc2UsbGlicGFtLCR7UEFNX1BMVUdJTlN9IgorUEFDS0FHRUNPTkZJR1twb2xraXRdID0gIi1EcG9sa2l0PXRydWUsLURwb2xraXQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3FyZW5jb2RlXSA9ICItRHFyZW5jb2RlPXRydWUsLURxcmVuY29kZT1mYWxzZSxxcmVuY29kZSIKK1BBQ0tBR0VDT05GSUdbcXVvdGFjaGVja10gPSAiLURxdW90YWNoZWNrPXRydWUsLURxdW90YWNoZWNrPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tyYW5kb21zZWVkXSA9ICItRHJhbmRvbXNlZWQ9dHJ1ZSwtRHJhbmRvbXNlZWQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3Jlc29sdmVkXSA9ICItRHJlc29sdmU9dHJ1ZSwtRHJlc29sdmU9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3Jma2lsbF0gPSAiLURyZmtpbGw9dHJ1ZSwtRHJma2lsbD1mYWxzZSIKKyMgbGlic2VjY29tcCBpcyBmb3VuZCBpbiBtZXRhLXNlY3VyaXR5CitQQUNLQUdFQ09ORklHW3NlY2NvbXBdID0gIi1Ec2VjY29tcD10cnVlLC1Ec2VjY29tcD1mYWxzZSxsaWJzZWNjb21wIgorUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICItRHNlbGludXg9dHJ1ZSwtRHNlbGludXg9ZmFsc2UsbGlic2VsaW51eCxpbml0c2NyaXB0cy1zdXNoZWxsIgorUEFDS0FHRUNPTkZJR1tzbWFja10gPSAiLURzbWFjaz10cnVlLC1Ec21hY2s9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3N5c3VzZXJzXSA9ICItRHN5c3VzZXJzPXRydWUsLURzeXN1c2Vycz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdGltZWRhdGVkXSA9ICItRHRpbWVkYXRlZD10cnVlLC1EdGltZWRhdGVkPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t0aW1lc3luY2RdID0gIi1EdGltZXN5bmNkPXRydWUsLUR0aW1lc3luY2Q9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3Vzcm1lcmdlXSA9ICItRHNwbGl0LXVzcj1mYWxzZSwtRHNwbGl0LXVzcj10cnVlIgorUEFDS0FHRUNPTkZJR1t1dG1wXSA9ICItRHV0bXA9dHJ1ZSwtRHV0bXA9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItRFZBTEdSSU5EPTEsLHZhbGdyaW5kIgorUEFDS0FHRUNPTkZJR1t2Y29uc29sZV0gPSAiLUR2Y29uc29sZT10cnVlLC1EdmNvbnNvbGU9ZmFsc2UsLCR7UE59LXZjb25zb2xlLXNldHVwIgorIyBWZXJpZnkga2V5bWFwcyBvbiBsb2NhbGUgY2hhbmdlCitQQUNLQUdFQ09ORklHW3hrYmNvbW1vbl0gPSAiLUR4a2Jjb21tb249dHJ1ZSwtRHhrYmNvbW1vbj1mYWxzZSxsaWJ4a2Jjb21tb24iCitQQUNLQUdFQ09ORklHW3h6XSA9ICItRHh6PXRydWUsLUR4ej1mYWxzZSx4eiIKK1BBQ0tBR0VDT05GSUdbemxpYl0gPSAiLUR6bGliPXRydWUsLUR6bGliPWZhbHNlLHpsaWIiCisKKyMgSGVscGVyIHZhcmlhYmxlcyB0byBjbGFyaWZ5IGxvY2F0aW9ucy4gIFRoaXMgbWlycm9ycyB0aGUgbG9naWMgaW4gc3lzdGVtZCdzCisjIGJ1aWxkIHN5c3RlbS4KK3Jvb3RwcmVmaXggPz0gIiR7cm9vdF9wcmVmaXh9Igorcm9vdGxpYmRpciA/PSAiJHtiYXNlX2xpYmRpcn0iCityb290bGliZXhlY2RpciA9ICIke3Jvb3RwcmVmaXh9L2xpYiIKKworIyBUaGlzIGxpbmtzIHVkZXYgc3RhdGljYWxseSB3aXRoIHN5c3RlbWQgaGVscGVyIGxpYnJhcnkuCisjIE90aGVyd2lzZSB1ZGV2IHBhY2thZ2Ugd291bGQgZGVwZW5kIG9uIHN5c3RlbWQgcGFja2FnZSAod2hpY2ggaGFzIHRoZSBuZWVkZWQgc2hhcmVkIGxpYnJhcnkpLAorIyBhbmQgYWx3YXlzIHB1bGwgaXQgaW50byBpbWFnZXMuCitFWFRSQV9PRU1FU09OICs9ICItRGxpbmstdWRldi1zaGFyZWQ9ZmFsc2UiCisKK0VYVFJBX09FTUVTT04gKz0gIi1Ebm9ib2R5LXVzZXI9bm9ib2R5IFwKKyAgICAgICAgICAgICAgICAgIC1Ebm9ib2R5LWdyb3VwPW5vYm9keSBcCisgICAgICAgICAgICAgICAgICAtRHJvb3Rob21lZGlyPSR7Uk9PVEhPTUV9IFwKKyAgICAgICAgICAgICAgICAgIC1Ecm9vdGxpYmRpcj0ke3Jvb3RsaWJkaXJ9IFwKKyAgICAgICAgICAgICAgICAgIC1Ecm9vdHByZWZpeD0ke3Jvb3RwcmVmaXh9IFwKKyAgICAgICAgICAgICAgICAgIC1Ec3lzdnJjbmQtcGF0aD0ke3N5c2NvbmZkaXJ9IFwKKyAgICAgICAgICAgICAgICAgIC1EZmlybXdhcmUtcGF0aD0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlIFwKKyAgICAgICAgICAgICAgICAgICIKKworIyBIYXJkY29kZSB0YXJnZXQgYmluYXJ5IHBhdGhzIHRvIGF2b2lkIHVzaW5nIHBhdGhzIGZyb20gc3lzcm9vdAorRVhUUkFfT0VNRVNPTiArPSAiLURrZXhlYy1wYXRoPSR7c2JpbmRpcn0va2V4ZWMgXAorICAgICAgICAgICAgICAgICAgLURraWxsLXBhdGg9JHtiYXNlX2JpbmRpcn0va2lsbCBcCisgICAgICAgICAgICAgICAgICAtRGttb2QtcGF0aD0ke2Jhc2VfYmluZGlyfS9rbW9kIFwKKyAgICAgICAgICAgICAgICAgIC1EbW91bnQtcGF0aD0ke2Jhc2VfYmluZGlyfS9tb3VudCBcCisgICAgICAgICAgICAgICAgICAtRHF1b3RhY2hlY2stcGF0aD0ke3NiaW5kaXJ9L3F1b3RhY2hlY2sgXAorICAgICAgICAgICAgICAgICAgLURxdW90YW9uLXBhdGg9JHtzYmluZGlyfS9xdW90YW9uIFwKKyAgICAgICAgICAgICAgICAgIC1Ec3Vsb2dpbi1wYXRoPSR7YmFzZV9zYmluZGlyfS9zdWxvZ2luIFwKKyAgICAgICAgICAgICAgICAgIC1EdW1vdW50LXBhdGg9JHtiYXNlX2JpbmRpcn0vdW1vdW50IgorCitkb19pbnN0YWxsKCkgeworCW1lc29uX2RvX2luc3RhbGwKKwlpbnN0YWxsIC1kICR7RH0vJHtiYXNlX3NiaW5kaXJ9CisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VyaWFsLWdldHR5LWdlbmVyYXRvcicsICdmYWxzZScsICd0cnVlJywgZCl9OyB0aGVuCisJCSMgUHJvdmlkZWQgYnkgYSBzZXBhcmF0ZSByZWNpcGUKKwkJcm0gJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc2VyaWFsLWdldHR5KiAtZgorCWZpCisKKwkjIFByb3ZpZGUgc3VwcG9ydCBmb3IgaW5pdHJhbWZzCisJWyAhIC1lICR7RH0vaW5pdCBdICYmIGxuIC1zICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZCAke0R9L2luaXQKKwlbICEgLWUgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0vdWRldmQgXSAmJiBsbiAtcyAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0vdWRldmQKKworCSMgQ3JlYXRlIG1hY2hpbmUtaWQKKwkjIDIwOjEyIDwgbWV6Y2FsZXJvPiBrb2VuOiB5b3UgaGF2ZSB0aHJlZSBvcHRpb25zOiBhKSBydW4gc3lzdGVtZC1tYWNoaW5lLWlkLXNldHVwIGF0IGluc3RhbGwgdGltZSwgYikgaGF2ZSAvIHJlYWQtb25seSBhbmQgYW4gZW1wdHkgZmlsZSB0aGVyZSAoZm9yIHN0YXRlbGVzcykgYW5kIGMpIGJvb3Qgd2l0aCAvIHdyaXRhYmxlCisJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbWFjaGluZS1pZAorCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vKi5ydWxlcyAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZworCWluc3RhbGwgLW0gMDY0NCAke0J9L3NyYy91ZGV2L3VkZXYucGMgJHtEfSR7bGliZGlyfS9wa2djb25maWcvCisKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8wMC1jcmVhdGUtdm9sYXRpbGUuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLworCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3Zpbml0JywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZAorCQlzZWQgLWkgcyVAVURFVkRAJSR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC11ZGV2ZCUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQKKwlmaQorCisJY2hvd24gcm9vdDpzeXN0ZW1kLWpvdXJuYWwgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9qb3VybmFsCisKKwkjIERlbGV0ZSBqb3VybmFsIFJFQURNRSwgYXMgbG9nIGNhbiBiZSBzeW1saW5rZWQgaW5zaWRlIHZvbGF0aWxlLgorCXJtIC1mICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9sb2cvUkVBRE1FCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2dyYXBoaWNhbC50YXJnZXQud2FudHMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wb3dlcm9mZi50YXJnZXQud2FudHMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3JlYm9vdC50YXJnZXQud2FudHMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Jlc2N1ZS50YXJnZXQud2FudHMKKworCSMgQ3JlYXRlIHN5bWxpbmtzIGZvciBzeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1dG1wJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ncmFwaGljYWwudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Bvd2Vyb2ZmLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZWJvb3QudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Jlc2N1ZS50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCisJZmkKKworCSMgRW5hYmxlIGpvdXJuYWwgdG8gZm9yd2FyZCBtZXNzYWdlIHRvIHN5c2xvZyBkYWVtb24KKwlzZWQgLWkgLWUgJ3MvLipGb3J3YXJkVG9TeXNsb2cuKi9Gb3J3YXJkVG9TeXNsb2c9eWVzLycgJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mCisJIyBTZXQgdGhlIG1heGltaXVtIHNpemUgb2YgcnVudGltZSBqb3VybmFsIHRvIDY0TSBhcyBkZWZhdWx0CisJc2VkIC1pIC1lICdzLy4qUnVudGltZU1heFVzZS4qL1J1bnRpbWVNYXhVc2U9NjRNLycgJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mCisKKwkjIHRoaXMgZmlsZSBpcyBuZWVkZWQgdG8gZXhpc3QgaWYgbmV0d29ya2QgaXMgZGlzYWJsZWQgYnV0IHRpbWVzeW5jZCBpcyBzdGlsbCBpbiB1c2Ugc2luY2UgdGltZXN5bmNkIGNoZWNrcyBpdAorCSMgZm9yIGV4aXN0ZW5jZSBlbHNlIGl0IGZhaWxzCisJaWYgWyAtcyAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mIF07IHRoZW4KKwkJJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbmV0d29ya2QnLCAnOicsICdzZWQgLWkgLWUgIlwkYWQgL3J1bi9zeXN0ZW1kL25ldGlmL2xpbmtzIDA3NTUgcm9vdCByb290IC0iICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYnLCBkKX0KKwlmaQorCWlmICEgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQllY2hvICdMISAke3N5c2NvbmZkaXJ9L3Jlc29sdi5jb25mIC0gLSAtIC0gLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZicgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvZXRjLmNvbmYKKwkJZWNobyAnZCAvcnVuL3N5c3RlbWQvcmVzb2x2ZSAwNzU1IHJvb3Qgcm9vdCAtJyA+PiR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYKKwkJZWNobyAnZiAvcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiAwNjQ0IHJvb3Qgcm9vdCcgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mCisJCWxuIC1zIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZAorCWVsc2UKKwkJc2VkIC1pIC1lICJzJV5MISAvZXRjL3Jlc29sdi5jb25mLiokJUwhIC9ldGMvcmVzb2x2LmNvbmYgLSAtIC0gLSAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mJWciICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9ldGMuY29uZgorCQlsbiAtcyAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQKKwlmaQorCWluc3RhbGwgLURtIDA3NTUgJHtTfS9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtZC1zeXN2LWluc3RhbGwKKworCSMgSWYgcG9sa2l0IGlzIHNldHVwIGZpeHVwIHBlcm1pc3Npb25zIGFuZCBvd25lcnNoaXAKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwb2xraXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlpZiBbIC1kICR7RH0ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQgXTsgdGhlbgorCQkJY2htb2QgNzAwICR7RH0ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQKKwkJCWNob3duIHBvbGtpdGQ6cm9vdCAke0R9JHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kCisJCWZpCisJZmkKK30KKworCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKXsKKyAgICBzeXN0ZW1kbGliZGlyID0gZC5nZXRWYXIoInJvb3RsaWJkaXIiKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHN5c3RlbWRsaWJkaXIsICdebGliKC4qKVwuc29cLionLCAnbGliJXMnLCAnU3lzdGVtZCAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKK30KK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWIodWRldnxzeXN0ZW1kfG5zcykuKiIKKworUEFDS0FHRVMgPSsgIlwKKyAgICAke1BOfS1ndWkgXAorICAgICR7UE59LXZjb25zb2xlLXNldHVwIFwKKyAgICAke1BOfS1pbml0cmFtZnMgXAorICAgICR7UE59LWFuYWx5emUgXAorICAgICR7UE59LWtlcm5lbC1pbnN0YWxsIFwKKyAgICAke1BOfS1ycG0tbWFjcm9zIFwKKyAgICAke1BOfS1iaW5mbXQgXAorICAgICR7UE59LXpzaC1jb21wbGV0aW9uIFwKKyAgICAke1BOfS14b3JnLXhpbml0cmMgXAorICAgICR7UE59LWNvbnRhaW5lciBcCisgICAgJHtQTn0tZXh0cmEtdXRpbHMgXAorIgorCitTVU1NQVJZXyR7UE59LWNvbnRhaW5lciA9ICJUb29scyBmb3IgY29udGFpbmVycyBhbmQgVk1zIgorREVTQ1JJUFRJT05fJHtQTn0tY29udGFpbmVyID0gIlN5c3RlbWQgdG9vbHMgdG8gc3Bhd24gYW5kIG1hbmFnZSBjb250YWluZXJzIGFuZCB2aXJ0dWFsIG1hY2hpbmVzLiIKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdiaW5mbXQnLCAnJHtQTn0tYmluZm10JywgJycsIGQpfSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1iaW5mbXQgPSAic3lzdGVtZC1iaW5mbXQuc2VydmljZSIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1leHRyYS11dGlscyIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21pY3JvaHR0cGQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheTsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWljcm9odHRwZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC1yZW1vdGU7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2pvdXJuYWwtdXBsb2FkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLXVwbG9hZDsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGltZXN5bmNkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC10aW1lc3luYzsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbmV0d29ya2QnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLW5ldHdvcms7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2NvcmVkdW1wJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1jb3JlZHVtcDsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLXJlc29sdmU7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BvbGtpdCcsICctLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0tdXNlci1ncm91cCAtLWhvbWUtZGlyICR7c3lzY29uZmRpcn0vcG9sa2l0LTEgcG9sa2l0ZDsnLCAnJywgZCl9IgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLXIgbG9jazsgLXIgc3lzdGVtZC1qb3VybmFsIgorVVNFUkFERF9QQVJBTV8ke1BOfS1leHRyYS11dGlscyArPSAiLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWJ1cy1wcm94eTsiCisKK0ZJTEVTXyR7UE59LWFuYWx5emUgPSAiJHtiaW5kaXJ9L3N5c3RlbWQtYW5hbHl6ZSIKKworRklMRVNfJHtQTn0taW5pdHJhbWZzID0gIi9pbml0IgorUkRFUEVORFNfJHtQTn0taW5pdHJhbWZzID0gIiR7UE59IgorCitGSUxFU18ke1BOfS1ndWkgPSAiJHtiaW5kaXJ9L3N5c3RlbWFkbSIKKworRklMRVNfJHtQTn0tdmNvbnNvbGUtc2V0dXAgPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXZjb25zb2xlLXNldHVwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC12Y29uc29sZS1zZXR1cC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC12Y29uc29sZS1zZXR1cC5zZXJ2aWNlIgorCitSREVQRU5EU18ke1BOfS1rZXJuZWwtaW5zdGFsbCArPSAiYmFzaCIKK0ZJTEVTXyR7UE59LWtlcm5lbC1pbnN0YWxsID0gIiR7YmluZGlyfS9rZXJuZWwtaW5zdGFsbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2tlcm5lbC8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2tlcm5lbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKK0ZJTEVTXyR7UE59LXJwbS1tYWNyb3MgPSAiJHtleGVjX3ByZWZpeH0vbGliL3JwbSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIgorCitGSUxFU18ke1BOfS14b3JnLXhpbml0cmMgPSAiJHtzeXNjb25mZGlyfS9YMTEveGluaXQveGluaXRyYy5kLyoiCisKK0ZJTEVTXyR7UE59LXpzaC1jb21wbGV0aW9uID0gIiR7ZGF0YWRpcn0venNoL3NpdGUtZnVuY3Rpb25zIgorCitGSUxFU18ke1BOfS1iaW5mbXQgPSAiJHtzeXNjb25mZGlyfS9iaW5mbXQuZC8gXAorICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9iaW5mbXQuZCBcCisgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWJpbmZtdCBcCisgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy4qIFwKKyAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYmluZm10LnNlcnZpY2UiCitSUkVDT01NRU5EU18ke1BOfS1iaW5mbXQgPSAia2VybmVsLW1vZHVsZS1iaW5mbXQtbWlzYyIKKworUlJFQ09NTUVORFNfJHtQTn0tdmNvbnNvbGUtc2V0dXAgPSAia2JkIGtiZC1jb25zb2xlZm9udHMga2JkLWtleW1hcHMiCisKK0ZJTEVTXyR7UE59LWNvbnRhaW5lciA9ICIke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuY29uZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vbWFjaGluZWN0bCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtbnNwYXduIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS9zeXN0ZW1kL2ltcG9ydC1wdWJyaW5nLmdwZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9idXNuYW1lcy50YXJnZXQud2FudHMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuYnVzbmFtZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9idXNuYW1lcy50YXJnZXQud2FudHMvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmJ1c25hbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9jYWwtZnMudGFyZ2V0LndhbnRzL3Zhci1saWItbWFjaGluZXMubW91bnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbWFjaGluZS5zbGljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9tYWNoaW5lcy50YXJnZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuYnVzbmFtZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuYnVzbmFtZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLWltcG9ydGQuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLW1hY2hpbmVkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vZGJ1cy1vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS92YXItbGliLW1hY2hpbmVzLm1vdW50IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW1wb3J0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW1wb3J0ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1qb3VybmFsLXJlbW90ZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtdXBsb2FkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtbWFjaGluZWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1wdWxsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLW5zcGF3bi5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtbnNwYXduQC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibnNzX215bWFjaGluZXMuc28uMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmNvbmYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5wb2xpY3kgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEucG9saWN5IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICIKKworRklMRVNfJHtQTn0tZXh0cmEtdXRpbHMgPSAiXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1lc2NhcGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1pbmhpYml0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWRldGVjdC12aXJ0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtcnVuIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNhdCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1kZWx0YSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jZ2xzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNndG9wIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXN0ZGlvLWJyaWRnZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWFzay1wYXNzd29yZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLXR0eS1hc2stcGFzc3dvcmQtYWdlbnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXJlc29sdmUtaG9zdCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYWMtcG93ZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWFjdGl2YXRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1idXMtcHJveHlkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1idXMtcHJveHlkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWJ1cy1wcm94eWQuc29ja2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1zb2NrZXQtcHJveHlkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1yZXBseS1wYXNzd29yZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtc2xlZXAgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW0tc2xlZXAgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWhpYmVybmF0ZS5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1oeWJyaWQtc2xlZXAuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtc3VzcGVuZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc2xlZXAudGFyZ2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbml0Y3RsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1pbml0Y3RsLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWluaXRjdGwuc29ja2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc29ja2V0cy50YXJnZXQud2FudHMvc3lzdGVtZC1pbml0Y3RsLnNvY2tldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbS1nZW5lcmF0b3JzL3N5c3RlbWQtZ3B0LWF1dG8tZ2VuZXJhdG9yIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1jZ3JvdXBzLWFnZW50IFwKKyIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vbWFjaGluZS1pZCBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2NvcmVkdW1wLmNvbmYgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvbG9naW5kLmNvbmYgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9zeXN0ZW0uY29uZiBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3VzZXIuY29uZiIKKworRklMRVNfJHtQTn0gPSAiICR7YmFzZV9iaW5kaXJ9LyogXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtCUE59IFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2ZhY3RvcnkgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGJ1cy0xLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9tYWNoaW5lLWlkIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L21vZHVsZXMtbG9hZC5kLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9wYW0uZC8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzY3RsLmQvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3hkZy8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL1JFQURNRSBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kIFwKKyAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kLyogXAorICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS8qIFwKKyAgICAgICAgICAgICAgICAke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8qLnNvIFwKKyAgICAgICAgICAgICAgICAvY2dyb3VwIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZCogXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9idXNjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9jb3JlZHVtcGN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2xvY2FsZWN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2hvc3RuYW1lY3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vdGltZWRhdGVjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9ib290Y3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0va2VybmVsLWluc3RhbGwgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kLyouY29uZiBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c3RlbWQgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9tb2R1bGVzLWxvYWQuZCBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c2N0bC5kIFwKKyAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvc3lzdXNlcnMuZCBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2Vudmlyb25tZW50LmQgXAorICAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0gXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzcwLXVhY2Nlc3MucnVsZXMgXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzcxLXNlYXQucnVsZXMgXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzczLXNlYXQtbGF0ZS5ydWxlcyBcCisgICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvOTktc3lzdGVtZC5ydWxlcyBcCisgICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9tb2Rwcm9iZS5kL3N5c3RlbWQuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnRpbWVkYXRlMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubG9jYWxlMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubmV0d29yazEuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnJlc29sdmUxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5zeXN0ZW1kMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaG9zdG5hbWUxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5sb2dpbjEuY29uZiBcCisgICAgICAgICAgICAgICAiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvKi5sYSAke2RhdGFkaXJ9L2RidXMtMS9pbnRlcmZhY2VzLyAke3N5c2NvbmZkaXJ9L3JwbS9tYWNyb3Muc3lzdGVtZCIKKworUkRFUEVORFNfJHtQTn0gKz0gImttb2QgZGJ1cyB1dGlsLWxpbnV4LW1vdW50IHVkZXYgKD0gJHtFWFRFTkRQS0dWfSkgdXRpbC1saW51eC1hZ2V0dHkiCitSREVQRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VyaWFsLWdldHR5LWdlbmVyYXRvcicsICcnLCAnc3lzdGVtZC1zZXJpYWxnZXR0eScsIGQpfSIKK1JERVBFTkRTXyR7UE59ICs9ICJ2b2xhdGlsZS1iaW5kcyB1cGRhdGUtcmMuZCIKKworUlJFQ09NTUVORFNfJHtQTn0gKz0gInN5c3RlbWQtZXh0cmEtdXRpbHMgXAorICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbWQtY29tcGF0LXVuaXRzIHVkZXYtaHdkYiBcCisgICAgICAgICAgICAgICAgICAgICAgdXRpbC1saW51eC1mc2NrIGUyZnNwcm9ncy1lMmZzY2sgXAorICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtYXV0b2ZzNCBrZXJuZWwtbW9kdWxlLXVuaXgga2VybmVsLW1vZHVsZS1pcHY2IFwKKyAgICAgICAgICAgICAgICAgICAgICBvcy1yZWxlYXNlIFwKKyIKKworSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyBsaWJkaXIiCitJTlNBTkVfU0tJUF8ke1BOfS1kYmcgKz0gImxpYmRpciIKK0lOU0FORV9TS0lQXyR7UE59LWRvYyArPSAiIGxpYmRpciIKKworUEFDS0FHRVMgPSsgInVkZXYgdWRldi1od2RiIgorCitSUFJPVklERVNfdWRldiA9ICJob3RwbHVnIgorCitSREVQRU5EU191ZGV2LWh3ZGIgKz0gInVkZXYiCisKK0ZJTEVTX3VkZXYgKz0gIiR7YmFzZV9zYmluZGlyfS91ZGV2ZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9hY2NlbGVyb21ldGVyIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvYXRhX2lkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvY2Ryb21faWQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9jb2xsZWN0IFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvZmluZGtleWJvYXJkcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleWJvYXJkLWZvcmNlLXJlbGVhc2Uuc2ggXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXltYXAgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9tdGRfcHJvYmUgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9zY3NpX2lkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvdjRsX2lkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5bWFwcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvKi5ydWxlcyBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3VkZXYgXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZCBcCisgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyp1ZGV2KiBcCisgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyoud2FudHMvKnVkZXYqIFwKKyAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3VkZXZhZG0gXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24vY29tcGxldGlvbnMvdWRldmFkbSBcCisgICAgICAgICAgICAgICIKKworRklMRVNfdWRldi1od2RiID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvaHdkYi5kIgorCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gInVkZXYiCitJTklUU0NSSVBUX05BTUVfdWRldiA9ICJzeXN0ZW1kLXVkZXZkIgorSU5JVFNDUklQVF9QQVJBTVNfdWRldiA9ICJzdGFydCAwMyBTIC4iCisKK3B5dGhvbiBfX2Fub255bW91cygpIHsKKyAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsIFRydWUsIEZhbHNlLCBkKToKKyAgICAgICAgZC5zZXRWYXIoIklOSElCSVRfVVBEQVRFUkNEX0JCQ0xBU1MiLCAiMSIpCit9CisKKyMgVE9ETzoKKyMgdS1hIGZvciBydW5sZXZlbCBhbmQgdGVsaW5pdAorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJpbml0IGhhbHQgcmVib290IHNodXRkb3duIHBvd2Vyb2ZmIHJ1bmxldmVsIHJlc29sdi1jb25mIgorCitBTFRFUk5BVElWRV9UQVJHRVRbaW5pdF0gPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2luaXRdID0gIiR7YmFzZV9zYmluZGlyfS9pbml0IgorQUxURVJOQVRJVkVfUFJJT1JJVFlbaW5pdF0gPz0gIjMwMCIKKworQUxURVJOQVRJVkVfVEFSR0VUW2hhbHRdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtoYWx0XSA9ICIke2Jhc2Vfc2JpbmRpcn0vaGFsdCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW2hhbHRdID89ICIzMDAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtyZWJvb3RdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtyZWJvb3RdID0gIiR7YmFzZV9zYmluZGlyfS9yZWJvb3QiCitBTFRFUk5BVElWRV9QUklPUklUWVtyZWJvb3RdID89ICIzMDAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtzaHV0ZG93bl0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3NodXRkb3duXSA9ICIke2Jhc2Vfc2JpbmRpcn0vc2h1dGRvd24iCitBTFRFUk5BVElWRV9QUklPUklUWVtzaHV0ZG93bl0gPz0gIjMwMCIKKworQUxURVJOQVRJVkVfVEFSR0VUW3Bvd2Vyb2ZmXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcG93ZXJvZmZdID0gIiR7YmFzZV9zYmluZGlyfS9wb3dlcm9mZiIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3Bvd2Vyb2ZmXSA/PSAiMzAwIgorCitBTFRFUk5BVElWRV9UQVJHRVRbcnVubGV2ZWxdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtydW5sZXZlbF0gPSAiJHtiYXNlX3NiaW5kaXJ9L3J1bmxldmVsIgorQUxURVJOQVRJVkVfUFJJT1JJVFlbcnVubGV2ZWxdID89ICIzMDAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtyZXNvbHYtY29uZl0gPSAiJHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Jlc29sdi1jb25mXSA9ICIke3N5c2NvbmZkaXJ9L3Jlc29sdi5jb25mIgorQUxURVJOQVRJVkVfUFJJT1JJVFlbcmVzb2x2LWNvbmZdID89ICI1MCIKKworcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKKwlzZWQgLWUgJy9eaG9zdHM6L3MvXHMqXDxteWhvc3RuYW1lXD4vLycgXAorCQktZSAncy9cKF5ob3N0czouKlwpXChcPGZpbGVzXD5cKVwoLipcKVwoXDxkbnNcPlwpXCguKlwpL1wxXDIgbXlob3N0bmFtZSBcM1w0XDUvJyBcCisJCS1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCit9CisKK3BrZ19wcmVybV8ke1BOfSAoKSB7CisJc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bXlob3N0bmFtZVw+Ly8nIFwKKwkJLWUgJy9eaG9zdHM6L3MvXHMqbXlob3N0bmFtZS8vJyBcCisJCS1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCit9CisKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAicWVtdS1uYXRpdmUiCitwa2dfcG9zdGluc3RfdWRldi1od2RiICgpIHsKKwlpZiB0ZXN0IC1uICIkRCI7IHRoZW4KKwkJJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2Jhc2VfYmluZGlyfS91ZGV2YWRtJyl9IGh3ZGIgLS11cGRhdGUgXAorCQkJLS1yb290ICRECisJCWNob3duIHJvb3Q6cm9vdCAkRCR7c3lzY29uZmRpcn0vdWRldi9od2RiLmJpbgorCWVsc2UKKwkJdWRldmFkbSBod2RiIC0tdXBkYXRlCisJZmkKK30KKworcGtnX3ByZXJtX3VkZXYtaHdkYiAoKSB7CisJcm0gLWYgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC1pbml0dGFiXzIuODhkc2YuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQtaW5pdHRhYl8yLjg4ZHNmLmJiCmluZGV4IDViOWM0MjIuLjg1ODVhNDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC1pbml0dGFiXzIuODhkc2YuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LWluaXR0YWJfMi44OGRzZi5iYgpAQCAtNTMsOCArNTMsMTUgQEAKIH0KIAogcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKKyMgcnVuIHRoaXMgb24gaG9zdCBhbmQgb24gdGFyZ2V0CitpZiBbICIke1NFUklBTF9DT05TT0xFU19DSEVDS30iID0gIiIgXTsgdGhlbgorICAgICAgIGV4aXQgMAorZmkKK30KKworcGtnX3Bvc3RpbnN0X29udGFyZ2V0XyR7UE59ICgpIHsKICMgcnVuIHRoaXMgb24gdGhlIHRhcmdldAotaWYgWyAieCREIiA9ICJ4IiBdICYmIFsgLWUgL3Byb2MvY29uc29sZXMgXTsgdGhlbgoraWYgWyAtZSAvcHJvYy9jb25zb2xlcyBdOyB0aGVuCiAJdG1wPSIke1NFUklBTF9DT05TT0xFU19DSEVDS30iCiAJZm9yIGkgaW4gJHRtcAogCWRvCkBAIC02OCwxMSArNzUsNyBAQAogCWRvbmUKIAlraWxsIC1IVVAgMQogZWxzZQotCWlmIFsgIiR7U0VSSUFMX0NPTlNPTEVTX0NIRUNLfSIgPSAiIiBdOyB0aGVuCi0JCWV4aXQgMAotCWVsc2UKLQkJZXhpdCAxCi0JZmkKKwlleGl0IDEKIGZpCiB9CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdF8yLjg4ZHNmLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuODhkc2YuYmIKaW5kZXggMjJhMGVjZi4uYWQ2NTgxOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuODhkc2YuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuODhkc2YuYmIKQEAgLTI4LDkgKzI4LDExIEBACiBTID0gIiR7V09SS0RJUn0vc3lzdmluaXQtJHtQVn0iCiBCID0gIiR7U30vc3JjIgogCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKIERFUEVORFNfYXBwZW5kID0gIiB1cGRhdGUtcmMuZC1uYXRpdmUgYmFzZS1wYXNzd2QiCiAKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJzeXN2aW5pdCIKKwogQUxURVJOQVRJVkVfJHtQTn0gPSAiaW5pdCBtb3VudHBvaW50IGhhbHQgcmVib290IHJ1bmxldmVsIHNodXRkb3duIHBvd2Vyb2ZmIGxhc3QgbGFzdGIgbWVzZyB1dG1wZHVtcCB3YWxsIgogCiBBTFRFUk5BVElWRV9QUklPUklUWSA9ICIyMDAiCkBAIC0xMDUsOCArMTA3LDMgQEAKIAljaG93biByb290LnNodXRkb3duICR7RH0ke2Jhc2Vfc2JpbmRpcn0vaGFsdCAke0R9JHtiYXNlX3NiaW5kaXJ9L3NodXRkb3duCiAJY2htb2Qgby14LHUrcyAke0R9JHtiYXNlX3NiaW5kaXJ9L2hhbHQgJHtEfSR7YmFzZV9zYmluZGlyfS9zaHV0ZG93bgogfQotCi1weXRob24gKCkgewotICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgVHJ1ZSwgRmFsc2UsIGQpOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiJ3N5c3Zpbml0JyBub3QgaW4gRElTVFJPX0ZFQVRVUkVTIikKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2XzMuMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyZmIyM2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4yLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi1TVU1NQVJZID0gImV1ZGV2IGlzIGEgZm9yayBvZiBzeXN0ZW1kJ3MgdWRldiIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nZW50b28ub3JnL3dpa2kvRXVkZXYiCi1MSUNFTlNFID0gIkdQTHYyLjArICYgTEdQTC0yLjErIgotTElDRU5TRV9saWJ1ZGV2ID0gIkxHUEwtMi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBncGVyZi1uYXRpdmUga21vZCBsaWJ4c2x0LW5hdGl2ZSB1dGlsLWxpbnV4IgotCi1QUk9WSURFUyA9ICJ1ZGV2IgotCi1TUkNfVVJJID0gImh0dHA6Ly9kZXYuZ2VudG9vLm9yZy9+Ymx1ZW5lc3MvJHtCUE59LyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE0LVJldmVydC1ydWxlcy1yZW1vdmUtZmlybXdhcmUtbG9hZGluZy1ydWxlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RldmZzLXVkZXYucnVsZXMgXAotICAgICAgICAgICBmaWxlOi8vaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly9saW5rcy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2xvY2FsLnJ1bGVzIFwKLSAgICAgICAgICAgZmlsZTovL3Blcm1pc3Npb25zLnJ1bGVzIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi5ydWxlcyBcCi0gICAgICAgICAgIGZpbGU6Ly91ZGV2LnJ1bGVzIFwKLSIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ2VudG9vL2V1ZGV2L3JlbGVhc2VzIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDFlMTliNzA0NjI2OTJmZWZkMDcyYTNmMzg4MThiNmUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2U0YzU2ZWMyZmMxODU0YWZkMGEzMWYzYWZmYTQ4ZjkyMmM2MmQ0MGVlMTJhMGMxYTRiNGYxNTJlZjViMGY2MyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgcWVtdSBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1zYmluZGlyPSR7YmFzZV9zYmluZGlyfSBcCi0gICAgLS13aXRoLXJvb3RsaWJkaXI9JHtiYXNlX2xpYmRpcn0gXAotICAgIC0td2l0aC1yb290cHJlZml4PSBcCi0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJod2RiIgotUEFDS0FHRUNPTkZJR1tod2RiXSA9ICItLWVuYWJsZS1od2RiLC0tZGlzYWJsZS1od2RiIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3VkZXYKLQlzZWQgLWkgcyVAVURFVkRAJSR7YmFzZV9zYmluZGlyfS91ZGV2ZCUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3VkZXYKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbG9jYWwucnVsZXMgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kL2xvY2FsLnJ1bGVzCi0KLQkjIFVzZSBjbGFzc2ljIG5ldHdvcmsgaW50ZXJmYWNlIG5hbWluZyBzY2hlbWUKLQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvODAtbmV0LW5hbWUtc2xvdC5ydWxlcwotCi0JIyBoaWQyaGNpIGhhcyBtb3ZlZCB0byBibHVlejQuIHJlbW92ZWQgaW4gdWRldiBhcyBvZiB2ZXJzaW9uIDE2OQotCXJtIC1mICR7RH0ke2Jhc2VfbGliZGlyfS91ZGV2L2hpZDJoY2kKLX0KLQotZG9faW5zdGFsbF9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7Ci0JIyBSZW1vdmUgcmVmZXJlbmNlcyB0byBidWlsZG1hY2hpbmUKLQlzZWQgLWkgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCi0JCSR7Qn0vc3JjL3VkZXYva2V5Ym9hcmQta2V5cy1mcm9tLW5hbWUuaAotfQotCi1JTklUU0NSSVBUX05BTUUgPSAidWRldiIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDA0IFMgLiIKLQotUEFDS0FHRVMgPSsgImxpYnVkZXYiCi1QQUNLQUdFUyA9KyAiZXVkZXYtaHdkYiIKLQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJleGVjZGlyfSAke2Jhc2VfbGliZGlyfS91ZGV2ICR7YmluZGlyfS91ZGV2YWRtIgotRklMRVNfJHtQTn0tZGV2ID0gIiR7ZGF0YWRpcn0vcGtnY29uZmlnL3VkZXYucGMgXAotICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vbGlidWRldi5oICR7bGliZGlyfS9saWJ1ZGV2LnNvIFwKLSAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L3VkZXYuaCAke2xpYmRpcn0vbGlidWRldi5sYSBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnVkZXYuYSAke2xpYmRpcn0vcGtnY29uZmlnL2xpYnVkZXYucGMiCi1GSUxFU19saWJ1ZGV2ID0gIiR7YmFzZV9saWJkaXJ9L2xpYnVkZXYuc28uKiIKLUZJTEVTX2V1ZGV2LWh3ZGIgPSAiJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuZCIKLQotUkRFUEVORFNfZXVkZXYtaHdkYiArPSAiZXVkZXYiCi0KLVJQUk9WSURFU18ke1BOfSA9ICJob3RwbHVnIHVkZXYiCi1SUFJPVklERVNfZXVkZXYtaHdkYiArPSAidWRldi1od2RiIgotCi1weXRob24gKCkgewotICAgIGlmIGJiLnV0aWxzLmNvbnRhaW5zICgnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBUcnVlLCBGYWxzZSwgZCk6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCInc3lzdGVtZCcgaW4gRElTVFJPX0ZFQVRVUkVTIikKLX0KLQotUEFDS0FHRV9XUklURV9ERVBTICs9ICJxZW11LW5hdGl2ZSIKLXBrZ19wb3N0aW5zdF9ldWRldi1od2RiICgpIHsKLSAgICBpZiB0ZXN0IC1uICIkRCI7IHRoZW4KLSAgICAgICAgJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2JpbmRpcn0vdWRldmFkbScpfSBod2RiIC0tdXBkYXRlIC0tcm9vdCAkRAotICAgICAgICBjaG93biByb290OnJvb3QgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KLSAgICBlbHNlCi0gICAgICAgIHVkZXZhZG0gaHdkYiAtLXVwZGF0ZQotICAgIGZpCi19Ci0KLXBrZ19wcmVybV9ldWRldi1od2RiICgpIHsKLSAgICAgICAgcm0gLWYgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2XzMuMi41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4yLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhhZDhmMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2XzMuMi41LmJiCkBAIC0wLDAgKzEsOTIgQEAKK1NVTU1BUlkgPSAiZXVkZXYgaXMgYSBmb3JrIG9mIHN5c3RlbWQncyB1ZGV2IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdlbnRvby5vcmcvd2lraS9FdWRldiIKK0xJQ0VOU0UgPSAiR1BMdjIuMCsgJiBMR1BMLTIuMSsiCitMSUNFTlNFX2xpYnVkZXYgPSAiTEdQTC0yLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGdwZXJmLW5hdGl2ZSBrbW9kIGxpYnhzbHQtbmF0aXZlIHV0aWwtbGludXgiCisKK1BST1ZJREVTID0gInVkZXYiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rldi5nZW50b28ub3JnL35ibHVlbmVzcy8ke0JQTn0vJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMTQtUmV2ZXJ0LXJ1bGVzLXJlbW92ZS1maXJtd2FyZS1sb2FkaW5nLXJ1bGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL1JldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGV2ZnMtdWRldi5ydWxlcyBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0IFwKKyAgICAgICAgICAgZmlsZTovL2xpbmtzLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vbG9jYWwucnVsZXMgXAorICAgICAgICAgICBmaWxlOi8vcGVybWlzc2lvbnMucnVsZXMgXAorICAgICAgICAgICBmaWxlOi8vcnVuLnJ1bGVzIFwKKyAgICAgICAgICAgZmlsZTovL3VkZXYucnVsZXMgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNmNhMDhjMGUxNDM4MGY4N2RmOGU4YWNlYWMxMjM2NzEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDljMmQwNDEwNWNhZDI1MjYzMDI2MjdlMDQwZmEyNGIxOTE2YTlhM2UwNTk1MzliYzhiYjkxOWI5NzM4OTBhZiIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgcWVtdSBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK0NPTkZMSUNUX0RJU1RST19GRUFUVVJFUyA9ICJzeXN0ZW1kIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLXNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IFwKKyAgICAtLXdpdGgtcm9vdGxpYmRpcj0ke2Jhc2VfbGliZGlyfSBcCisgICAgLS13aXRoLXJvb3RwcmVmaXg9IFwKKyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImh3ZGIiCitQQUNLQUdFQ09ORklHW2h3ZGJdID0gIi0tZW5hYmxlLWh3ZGIsLS1kaXNhYmxlLWh3ZGIiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdWRldgorCXNlZCAtaSBzJUBVREVWREAlJHtiYXNlX3NiaW5kaXJ9L3VkZXZkJSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdWRldgorCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9sb2NhbC5ydWxlcyAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvbG9jYWwucnVsZXMKKworCSMgVXNlIGNsYXNzaWMgbmV0d29yayBpbnRlcmZhY2UgbmFtaW5nIHNjaGVtZQorCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC84MC1uZXQtbmFtZS1zbG90LnJ1bGVzCisKKwkjIGhpZDJoY2kgaGFzIG1vdmVkIHRvIGJsdWV6NC4gcmVtb3ZlZCBpbiB1ZGV2IGFzIG9mIHZlcnNpb24gMTY5CisJcm0gLWYgJHtEfSR7YmFzZV9saWJkaXJ9L3VkZXYvaGlkMmhjaQorfQorCitkb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKKwkjIFJlbW92ZSByZWZlcmVuY2VzIHRvIGJ1aWxkbWFjaGluZQorCXNlZCAtaSAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKwkJJHtCfS9zcmMvdWRldi9rZXlib2FyZC1rZXlzLWZyb20tbmFtZS5oCit9CisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJ1ZGV2IgorSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMDQgUyAuIgorCitQQUNLQUdFUyA9KyAibGlidWRldiIKK1BBQ0tBR0VTID0rICJldWRldi1od2RiIgorCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmV4ZWNkaXJ9ICR7YmFzZV9saWJkaXJ9L3VkZXYgJHtiaW5kaXJ9L3VkZXZhZG0iCitGSUxFU18ke1BOfS1kZXYgPSAiJHtkYXRhZGlyfS9wa2djb25maWcvdWRldi5wYyBcCisgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9saWJ1ZGV2LmggJHtsaWJkaXJ9L2xpYnVkZXYuc28gXAorICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vdWRldi5oICR7bGliZGlyfS9saWJ1ZGV2LmxhIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlidWRldi5hICR7bGliZGlyfS9wa2djb25maWcvbGlidWRldi5wYyIKK0ZJTEVTX2xpYnVkZXYgPSAiJHtiYXNlX2xpYmRpcn0vbGlidWRldi5zby4qIgorRklMRVNfZXVkZXYtaHdkYiA9ICIke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5kIgorCitSREVQRU5EU19ldWRldi1od2RiICs9ICJldWRldiIKKworUlBST1ZJREVTXyR7UE59ID0gImhvdHBsdWcgdWRldiIKK1JQUk9WSURFU19ldWRldi1od2RiICs9ICJ1ZGV2LWh3ZGIiCisKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAicWVtdS1uYXRpdmUiCitwa2dfcG9zdGluc3RfZXVkZXYtaHdkYiAoKSB7CisgICAgaWYgdGVzdCAtbiAiJEQiOyB0aGVuCisgICAgICAgICR7QHFlbXVfcnVuX2JpbmFyeShkLCAnJEQnLCAnJHtiaW5kaXJ9L3VkZXZhZG0nKX0gaHdkYiAtLXVwZGF0ZSAtLXJvb3QgJEQKKyAgICAgICAgY2hvd24gcm9vdDpyb290ICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCisgICAgZWxzZQorICAgICAgICB1ZGV2YWRtIGh3ZGIgLS11cGRhdGUKKyAgICBmaQorfQorCitwa2dfcHJlcm1fZXVkZXYtaHdkYiAoKSB7CisgICAgICAgIHJtIC1mICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXBkYXRlLXJjLmQvdXBkYXRlLXJjLmRfMC43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VwZGF0ZS1yYy5kL3VwZGF0ZS1yYy5kXzAuNy5iYgppbmRleCA2ZmM2ZjZlLi43NmQ0MzEyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXBkYXRlLXJjLmQvdXBkYXRlLXJjLmRfMC43LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91cGRhdGUtcmMuZC91cGRhdGUtcmMuZF8wLjcuYmIKQEAgLTE2LDcgKzE2LDcgQEAKICAgICAgICAgICAgZmlsZTovL2NoZWNrLWlmLXN5bWxpbmtzLWFyZS12YWxpZC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtdG8taGFuZGxlLXByaW9yaXR5LW51bWJlcnMtY29ycmVjdGx5LnBhdGNoIFwKICAgICAgICAgICAiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LmluYwppbmRleCBmMGZmZDI1Li4wYjdkYjUyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LmluYwpAQCAtMjAsNyArMjAsNyBAQAogCiAjZ3RrLWRvYyBpcyBub3QgZW5hYmxlZCBhcyBpdCByZXF1aXJlcyB4bWx0byB3aGljaCByZXF1aXJlcyB1dGlsLWxpbnV4CiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBzeXN0ZW1kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcHl0aG9uMy1kaXIgYmFzaC1jb21wbGV0aW9uIHB0ZXN0Ci1ERVBFTkRTID0gInpsaWIgbmN1cnNlcyIKK0RFUEVORFMgPSAiemxpYiBuY3Vyc2VzIHZpcnR1YWwvY3J5cHQiCiBERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGx6by1uYXRpdmUiCiBERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIGx6by1uYXRpdmUiCiAKQEAgLTMxLDcgKzMxLDcgQEAKICAgICAgICAgICAgICB1dGlsLWxpbnV4LXN3YXBvbm9mZiB1dGlsLWxpbnV4LWxvc2V0dXAgdXRpbC1saW51eC11bW91bnQgXAogICAgICAgICAgICAgIHV0aWwtbGludXgtbW91bnQgdXRpbC1saW51eC1yZWFkcHJvZmlsZSB1dGlsLWxpbnV4LXV1aWRkIFwKICAgICAgICAgICAgICB1dGlsLWxpbnV4LXV1aWRnZW4gdXRpbC1saW51eC1sc2NwdSB1dGlsLWxpbnV4LWZzY2suY3JhbWZzIHV0aWwtbGludXgtZnNjayBcCi0gICAgICAgICAgICAgdXRpbC1saW51eC1ibGtpZCB1dGlsLWxpbnV4LW1rZnMgdXRpbC1saW51eC1tY29va2llIHV0aWwtbGludXgtcmVzZXQgXAorICAgICAgICAgICAgIHV0aWwtbGludXgtYmxraWQgdXRpbC1saW51eC1ta2ZzIHV0aWwtbGludXgtbWNvb2tpZSB1dGlsLWxpbnV4LXJma2lsbCBcCiAgICAgICAgICAgICAgdXRpbC1saW51eC1sc2JsayB1dGlsLWxpbnV4LW1rZnMuY3JhbWZzIHV0aWwtbGludXgtZnN0cmltIFwKICAgICAgICAgICAgICB1dGlsLWxpbnV4LXBhcnR4IHV0aWwtbGludXgtaHdjbG9jayB1dGlsLWxpbnV4LW1vdW50cG9pbnQgXAogICAgICAgICAgICAgIHV0aWwtbGludXgtZmluZGZzIHV0aWwtbGludXgtZ2V0b3B0IHV0aWwtbGludXgtc3Vsb2dpbiB1dGlsLWxpbnV4LXBybGltaXQgXApAQCAtNDQsNyArNDQsNyBAQAogU0hBUkVEX0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtdXNlLXR0eS1ncm91cCBcCiAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1tYWtlaW5zdGFsbC1jaG93biBcCiAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWtpbGwgLS1lbmFibGUtbGFzdCAtLWVuYWJsZS1tZXNnIC0tZW5hYmxlLXBhcnR4IFwKLSAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtcmF3IC0tZW5hYmxlLXJlc2V0IC0tZGlzYWJsZS1sb2dpbiBcCisgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLXJhdyAtLWVuYWJsZS1yZmtpbGwgLS1kaXNhYmxlLWxvZ2luIFwKICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXZpcHcgLS1kaXNhYmxlLW5ld2dycCAtLWRpc2FibGUtY2hmbi1jaHNoIFwKICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtd3JpdGUgLS1lbmFibGUtbW91bnQgXAogICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1saWJ1dWlkIC0tZW5hYmxlLWxpYmJsa2lkIC0tZW5hYmxlLWZzY2sgXApAQCAtODYsNyArODYsNyBAQAogRklMRVNfdXRpbC1saW51eC1yZWFkcHJvZmlsZSA9ICIke3NiaW5kaXJ9L3JlYWRwcm9maWxlLiR7QlBOfSIKIEZJTEVTX3V0aWwtbGludXgtdXVpZGdlbiA9ICIke2JpbmRpcn0vdXVpZGdlbiIKIEZJTEVTX3V0aWwtbGludXgtdXVpZGQgPSAiJHtzYmluZGlyfS91dWlkZCIKLUZJTEVTX3V0aWwtbGludXgtcmVzZXQgPSAiJHtiYXNlX2JpbmRpcn0vcmVzZXQqIgorRklMRVNfdXRpbC1saW51eC1yZmtpbGwgPSAiJHtzYmluZGlyfS9yZmtpbGwqIgogRklMRVNfdXRpbC1saW51eC1wYXJ0eCA9ICIke3NiaW5kaXJ9L3BhcnR4IgogRklMRVNfdXRpbC1saW51eC1od2Nsb2NrID0gIiR7YmFzZV9zYmluZGlyfS9od2Nsb2NrLiR7QlBOfSIKIEZJTEVTX3V0aWwtbGludXgtZmluZGZzID0gIiR7c2JpbmRpcn0vZmluZGZzIgpAQCAtMTE5LDkgKzExOSw2IEBACiBSQ09ORkxJQ1RTX3V0aWwtbGludXgtYmxraWQgPSAiZTJmc3Byb2dzLWJsa2lkIgogUlJFUExBQ0VTX3V0aWwtbGludXgtYmxraWQgPSAiZTJmc3Byb2dzLWJsa2lkIgogCi0jIHJlc2V0IGNhbGxzICd0cHV0JwotUkRFUEVORFNfdXRpbC1saW51eC1yZXNldCArPSAibmN1cnNlcyIKLQogUkRFUEVORFNfdXRpbC1saW51eC1ydW51c2VyICs9ICJsaWJwYW0iCiBSREVQRU5EU191dGlsLWxpbnV4LXN1ICs9ICJsaWJwYW0iCiAKQEAgLTE2MCw3ICsxNTcsNyBAQAogCiAgICAgICAgIHNiaW5wcm9ncz0iYWdldHR5IGN0cmxhbHRkZWwgY2ZkaXNrIHZpcHcgdmlnciIKICAgICAgICAgc2JpbnByb2dzX2E9InBpdm90X3Jvb3QgaHdjbG9jayBta3N3YXAgbWtmcy5taW5peCBmc2NrLm1pbml4IGxvc2V0dXAgc3dhcG9uIHN3YXBvZmYgZmRpc2sgZnNjayBibGtpZCBibG9ja2RldiBmc3RyaW0gc3Vsb2dpbiBzd2l0Y2hfcm9vdCBub2xvZ2luIgotICAgICAgICBiaW5wcm9nc19hPSJkbWVzZyBnZXRvcHQga2lsbCBtb3JlIHVtb3VudCBtb3VudCBsb2dpbiByZXNldCBzdSBtb3VudHBvaW50IgorICAgICAgICBiaW5wcm9nc19hPSJkbWVzZyBnZXRvcHQga2lsbCBtb3JlIHVtb3VudCBtb3VudCBsb2dpbiBzdSBtb3VudHBvaW50IgogCiAgICAgICAgIGlmIFsgIiR7YmFzZV9zYmluZGlyfSIgIT0gIiR7c2JpbmRpcn0iIF07IHRoZW4KICAgICAgICAgCW1rZGlyIC1wICR7RH0ke2Jhc2Vfc2JpbmRpcn0KQEAgLTE5OCwxNyArMTk1LDE4IEBACiAJZmkKIH0KIAotIyByZXNldCBhbmQgbm9sb2dpbiBjYXVzZXMgYSBjb25mbGljdCB3aXRoIG5jdXJzZXMtbmF0aXZlIGFuZCBzaGFkb3ctbmF0aXZlCisjIG5vbG9naW4gY2F1c2VzIGEgY29uZmxpY3Qgd2l0aCBzaGFkb3ctbmF0aXZlCisjIGtpbGwgY2F1c2VzIGEgY29uZmxpY3Qgd2l0aCBjb3JldXRpbHMtbmF0aXZlIChpZiAke2JpbmRpcn09PSR7YmFzZV9iaW5kaXJ9KQogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLQlybSAtZiAke0R9JHtiYXNlX2JpbmRpcn0vcmVzZXQKIAlybSAtZiAke0R9JHtiYXNlX3NiaW5kaXJ9L25vbG9naW4KKwlybSAtZiAke0R9JHtiYXNlX2JpbmRpcn0va2lsbAogfQogCiBBTFRFUk5BVElWRV9QUklPUklUWSA9ICI4MCIKIAogQUxURVJOQVRJVkVfJHtQTn0gID0gImRtZXNnIGtpbGwgbW9yZSBta3N3YXAgYmxvY2tkZXYgcGl2b3Rfcm9vdCBzd2l0Y2hfcm9vdCIKIEFMVEVSTkFUSVZFXyR7UE59ICs9ICJoZXhkdW1wIGxhc3QgbGFzdGIgbG9nZ2VyIG1lc2cgcmVuaWNlIHdhbGwiCi1BTFRFUk5BVElWRV8ke1BOfSArPSAic2V0c2lkIGNocnQgZmxvY2sgdXRtcGR1bXAgZWplY3Qgbm9sb2dpbiIKK0FMVEVSTkFUSVZFXyR7UE59ICs9ICJzZXRzaWQgY2hydCBmbG9jayB1dG1wZHVtcCBlamVjdCBub2xvZ2luIHRhc2tzZXQiCiAKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtkbWVzZ10gPSAiJHtiYXNlX2JpbmRpcn0vZG1lc2ciCiBBTFRFUk5BVElWRV9MSU5LX05BTUVba2lsbF0gPSAiJHtiYXNlX2JpbmRpcn0va2lsbCIKQEAgLTIyMCwxNCArMjE4LDE0IEBACiBBTFRFUk5BVElWRV9MSU5LX05BTUVbZWplY3RdID0gIiR7YmluZGlyfS9lamVjdCIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtub2xvZ2luXSA9ICIke2Jhc2Vfc2JpbmRpcn0vbm9sb2dpbiIKIAotQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gIm1vdW50cG9pbnQuMSBsYXN0LjEgbGFzdGIuMSBtZXNnLjEgd2FsbC4xIG5vbG9naW4uOCBzdWxvZ2luLjggdXRtcGR1bXAuMSByZXNldC4xIGtpbGwuMSBsaWJibGtpZC4zIGJsa2lkLjggZmluZGZzLjggZnNjay44IHV1aWQuMyBlamVjdC4xIGxvZ2dlci4xIgorQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gIm1vdW50cG9pbnQuMSBsYXN0LjEgbGFzdGIuMSBtZXNnLjEgd2FsbC4xIG5vbG9naW4uOCBzdWxvZ2luLjggdXRtcGR1bXAuMSByZmtpbGwuOCBraWxsLjEgbGliYmxraWQuMyBibGtpZC44IGZpbmRmcy44IGZzY2suOCB1dWlkLjMgZWplY3QuMSBsb2dnZXIuMSIKIAogQUxURVJOQVRJVkVfTElOS19OQU1FW2xhc3QuMV0gPSAiJHttYW5kaXJ9L21hbjEvbGFzdC4xIgogQUxURVJOQVRJVkVfTElOS19OQU1FW2xhc3RiLjFdID0gIiR7bWFuZGlyfS9tYW4xL2xhc3RiLjEiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbbWVzZy4xXSA9ICIke21hbmRpcn0vbWFuMS9tZXNnLjEiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbbW91bnRwb2ludC4xXSA9ICIke21hbmRpcn0vbWFuMS9tb3VudHBvaW50LjEiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbbm9sb2dpbi44XSA9ICIke21hbmRpcn0vbWFuOC9ub2xvZ2luLjgiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcmVzZXQuMV0gPSAiJHttYW5kaXJ9L21hbjEvcmVzZXQuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtyZmtpbGwuOF0gPSAiJHttYW5kaXJ9L21hbjgvcmZraWxsLjgiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbc3Vsb2dpbi44XSA9ICIke21hbmRpcn0vbWFuOC9zdWxvZ2luLjgiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbdXRtcGR1bXAuMV0gPSAiJHttYW5kaXJ9L21hbjEvdXRtcGR1bXAuMSIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVt3YWxsLjFdID0gIiR7bWFuZGlyfS9tYW4xL3dhbGwuMSIKQEAgLTI3Miw5ICsyNzAsOCBAQAogQUxURVJOQVRJVkVfdXRpbC1saW51eC1ibGtpZCA9ICJibGtpZCIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtibGtpZF0gPSAiJHtiYXNlX3NiaW5kaXJ9L2Jsa2lkIgogCi1BTFRFUk5BVElWRV91dGlsLWxpbnV4LXJlc2V0ID0gInJlc2V0IgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Jlc2V0XSA9ICIke2JpbmRpcn0vcmVzZXQiCi1BTFRFUk5BVElWRV9UQVJHRVRbcmVzZXRdID0gIiR7YmFzZV9iaW5kaXJ9L3Jlc2V0IgorQUxURVJOQVRJVkVfdXRpbC1saW51eC1yZmtpbGwgPSAicmZraWxsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Jma2lsbF0gPSAiJHtzYmluZGlyfS9yZmtpbGwiCiAKIEFMVEVSTkFUSVZFX3V0aWwtbGludXgtZ2V0b3B0ID0gImdldG9wdCIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtnZXRvcHRdID0gIiR7YmFzZV9iaW5kaXJ9L2dldG9wdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4L2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoCmluZGV4IDQ2ZDRkMzcuLjc0OGI2ZWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaApAQCAtNSwxNSArNSwxNiBAQAogU2lnbmVkLW9mZi1ieTogVHVkb3IgRmxvcmVhICA8dHVkb3IuZmxvcmVhQGVuZWEuY29tPgogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIAogCi1kaWZmIC1ydU4gYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLS0tLSBhL2NvbmZpZ3VyZS5hYwkyMDE0LTA1LTI3IDEyOjM3OjQyLjExOTc3MjY1OCArMDIwMAotKysrIGIvY29uZmlndXJlLmFjCTIwMTQtMDUtMjcgMTI6NDE6NDYuMjI1NTczMjcyICswMjAwCi1AQCAtMTAsNyArMTAsNyBAQAorSW5kZXg6IHV0aWwtbGludXgtMi4zMi9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB1dGlsLWxpbnV4LTIuMzIub3JpZy9jb25maWd1cmUuYWMKKysrKyB1dGlsLWxpbnV4LTIuMzIvY29uZmlndXJlLmFjCitAQCAtMTEsNyArMTEsNyBAQCBBQ19DT05GSUdfTUFDUk9fRElSKFttNF0pCiAgZG5sIEFDX1VTRV9TWVNURU1fRVhURU5TSU9OUyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IG1hY3JvcyB0aGF0IHJ1bgogIGRubCB0aGUgY29tcGlsZXIgKGxpa2UgQUNfUFJPR19MSUJUT09MKSB0byBhdm9pZCBhdXRvY29uZiBlcnJvcnMuCiAgQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCi0tQU1fSU5JVF9BVVRPTUFLRShbLVdhbGwgZm9yZWlnbiAxLjEwIHRhci1wYXggZGlzdC1iemlwMiBuby1kaXN0LWd6aXAgZGlzdC14eiAtV25vLXBvcnRhYmlsaXR5IHN1YmRpci1vYmplY3RzXSkKLStBTV9JTklUX0FVVE9NQUtFKFstV2FsbCBmb3JlaWduIDEuMTAgdGFyLXBheCBkaXN0LWJ6aXAyIG5vLWRpc3QtZ3ppcCBkaXN0LXh6IC1Xbm8tcG9ydGFiaWxpdHkgc3ViZGlyLW9iamVjdHMgc2VyaWFsLXRlc3RzXSkKLQorLUFNX0lOSVRfQVVUT01BS0UoWy1XYWxsIGZvcmVpZ24gMS4xMCB0YXItcGF4IG5vLWRpc3QtZ3ppcCBkaXN0LXh6IHN1YmRpci1vYmplY3RzXSkKKytBTV9JTklUX0FVVE9NQUtFKFstV2FsbCBmb3JlaWduIDEuMTAgdGFyLXBheCBuby1kaXN0LWd6aXAgZGlzdC14eiBzdWJkaXItb2JqZWN0cyBzZXJpYWwtdGVzdHNdKQorIAogIG00X2lmZGVmKFtBTV9TSUxFTlRfUlVMRVNdLCBbQU1fU0lMRU5UX1JVTEVTKFt5ZXNdKV0sCiAgCQkJICAgIFtBQ19TVUJTVChbQU1fREVGQVVMVF9WRVJCT1NJVFldLCBbMV0pXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvY29uZmlndXJlLXNiaW5kaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4L2NvbmZpZ3VyZS1zYmluZGlyLnBhdGNoCmluZGV4IGE1YjFmZjEuLmU0NzUyODkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvY29uZmlndXJlLXNiaW5kaXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC9jb25maWd1cmUtc2JpbmRpci5wYXRjaApAQCAtNSwxMSArNSwxMSBAQAogU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCiAKLUluZGV4OiB1dGlsLWxpbnV4LTIuMjIuMS9jb25maWd1cmUuYWMKK0luZGV4OiB1dGlsLWxpbnV4LTIuMzEvY29uZmlndXJlLmFjCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdXRpbC1saW51eC0yLjIyLjEub3JpZy9jb25maWd1cmUuYWMKLSsrKyB1dGlsLWxpbnV4LTIuMjIuMS9jb25maWd1cmUuYWMKLUBAIC03Myw3ICs3MywxMCBAQCBBQ19TVUJTVChbbG9jYWxzdGF0ZWRpcl0pCistLS0gdXRpbC1saW51eC0yLjMxLm9yaWcvY29uZmlndXJlLmFjCisrKysgdXRpbC1saW51eC0yLjMxL2NvbmZpZ3VyZS5hYworQEAgLTg5LDcgKzg5LDEwIEBAIEFDX1NVQlNUKFtydW5zdGF0ZWRpcl0pCiAgdXNyYmluX2V4ZWNkaXI9JyR7ZXhlY19wcmVmaXh9L2JpbicKICBBQ19TVUJTVChbdXNyYmluX2V4ZWNkaXJdKQogIApAQCAtMjAsNCArMjAsNCBAQAogK2ZpCiAgQUNfU1VCU1QoW3VzcnNiaW5fZXhlY2Rpcl0pCiAgCi0gY2FzZSAkbGliZGlyIGluCisgQVNfQ0FTRShbJGxpYmRpcl0sCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4L25vX2dldHJhbmRvbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvbm9fZ2V0cmFuZG9tLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWZhMWNhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvbm9fZ2V0cmFuZG9tLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotZ2V0cmFuZG9tKCkgaXMgb25seSBhdmFpbGFibGUgaW4gZ2xpYmMgMi4yNSsgYW5kIHVuaW5hdGl2ZSBtYXkgcmVsb2NhdGUgCi1iaW5hcmllcyBvbnRvIHN5c3RlbXMgdGhhdCBkb24ndCBoYXZlIHRoaXMgZnVuY3Rpb24uIEZvciBub3csIGZvcmNlIHRoZSAKLWNvZGUgdG8gdGhlIG9sZGVyIGNvZGVwYXRoIHVudGlsIHdlIGNhbiBjb21lIHVwIHdpdGggYSBiZXR0ZXIgc29sdXRpb24gCi1mb3IgdGhpcyBraW5kIG9mIGlzc3VlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLVJQCi0yMDE2LzgvMTUKLQotSW5kZXg6IHV0aWwtbGludXgtMi4zMC9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB1dGlsLWxpbnV4LTIuMzAub3JpZy9jb25maWd1cmUuYWMKLSsrKyB1dGlsLWxpbnV4LTIuMzAvY29uZmlndXJlLmFjCi1AQCAtMzk5LDcgKzM5OSw2IEBAIEFDX0NIRUNLX0ZVTkNTKFsgXAotIAlnZXRkdGFibGVzaXplIFwKLSAJZ2V0ZXhlY25hbWUgXAotIAlnZXRtbnRpbmZvIFwKLS0JZ2V0cmFuZG9tIFwKLSAJZ2V0cmxpbWl0IFwKLSAJZ2V0c2duYW0gXAotIAlpbm90aWZ5X2luaXQgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjMwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjMwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTQ0OWQ5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfMi4zMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLU1BSk9SX1ZFUlNJT04gPSAiMi4zMCIKLXJlcXVpcmUgdXRpbC1saW51eC5pbmMKLQotIyBUbyBzdXBwb3J0IG9sZGVyIGhvc3RzLCB3ZSBuZWVkIHRvIHBhdGNoIGFuZC9vciByZXZlcnQKLSMgc29tZSB1cHN0cmVhbSBjaGFuZ2VzLiAgT25seSBkbyB0aGlzIGZvciBuYXRpdmUgcGFja2FnZXMuCi1PTERIT1NUID0gIiIKLU9MREhPU1RfY2xhc3MtbmF0aXZlID0gImZpbGU6Ly91dGlsLWxpbnV4LW5hdGl2ZS1xc29ydC5wYXRjaCIKLQotU1JDX1VSSSArPSAiZmlsZTovL2NvbmZpZ3VyZS1zYmluZGlyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ydW51c2VyLnBhbWQgXAotICAgICAgICAgICAgZmlsZTovL3J1bnVzZXItbC5wYW1kIFwKLSAgICAgICAgICAgICR7T0xESE9TVH0gXAotICAgICAgICAgICAgZmlsZTovL3B0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICAgZmlsZTovL2Rpc3BsYXlfdGVzdG5hbWVfZm9yX3N1YnRlc3QucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoIFwKLSIKLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL25vX2dldHJhbmRvbS5wYXRjaCIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlYWEzNDI5MTUwMjY4MDI3OTA4YTFiOGFlNmVlOWE2MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjMjA4YTRmZjY5MDZjYjdmNTc5NDBhYTViYzNhNmVlZDE0NmU1MGE3Y2MwYTA5MmY1MmVmMmFiNjUwNTdhMDhkIgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAic2NhbmZfY3ZfYWxsb2NfbW9kaWZpZXI9bXMiCi0KLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiJHtTSEFSRURfRVhUUkFfT0VDT05GfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1mYWxsb2NhdGUgXAotCQkJICAgICAtLWRpc2FibGUtdXNlLXR0eS1ncm91cCBcCi0iCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlc2RrID0gIiR7U0hBUkVEX0VYVFJBX09FQ09ORn0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZmFsbG9jYXRlIFwKLQkJCQktLWRpc2FibGUtdXNlLXR0eS1ncm91cCBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4XzIuMzIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4XzIuMzIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTVjYzk4YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfMi4zMi5iYgpAQCAtMCwwICsxLDMwIEBACitNQUpPUl9WRVJTSU9OID0gIjIuMzIiCityZXF1aXJlIHV0aWwtbGludXguaW5jCisKKyMgVG8gc3VwcG9ydCBvbGRlciBob3N0cywgd2UgbmVlZCB0byBwYXRjaCBhbmQvb3IgcmV2ZXJ0CisjIHNvbWUgdXBzdHJlYW0gY2hhbmdlcy4gIE9ubHkgZG8gdGhpcyBmb3IgbmF0aXZlIHBhY2thZ2VzLgorT0xESE9TVCA9ICIiCitPTERIT1NUX2NsYXNzLW5hdGl2ZSA9ICJmaWxlOi8vdXRpbC1saW51eC1uYXRpdmUtcXNvcnQucGF0Y2giCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9jb25maWd1cmUtc2JpbmRpci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcnVudXNlci5wYW1kIFwKKyAgICAgICAgICAgIGZpbGU6Ly9ydW51c2VyLWwucGFtZCBcCisgICAgICAgICAgICAke09MREhPU1R9IFwKKyAgICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgIGZpbGU6Ly9kaXNwbGF5X3Rlc3RuYW1lX2Zvcl9zdWJ0ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiZTBkOGEyNTg1M2Y4OGNkMTVmZjU1N2U1ZDhjYjRlYTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmM3Mzk3YWJjNzY0ZTMyZTgxNTljMmU5NjA0Mjg3NGExOTAzMDNlNzdhZGNlYjRhYzViZDUwMmEyNzJhNDczNCIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gInNjYW5mX2N2X2FsbG9jX21vZGlmaWVyPW1zIgorCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIiR7U0hBUkVEX0VYVFJBX09FQ09ORn0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZmFsbG9jYXRlIFwKKwkJCSAgICAgLS1kaXNhYmxlLXVzZS10dHktZ3JvdXAgXAorIgorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZXNkayA9ICIke1NIQVJFRF9FWFRSQV9PRUNPTkZ9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWZhbGxvY2F0ZSBcCisJCQkJLS1kaXNhYmxlLXVzZS10dHktZ3JvdXAgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3ZvbGF0aWxlLWJpbmRzL3ZvbGF0aWxlLWJpbmRzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3ZvbGF0aWxlLWJpbmRzL3ZvbGF0aWxlLWJpbmRzLmJiCmluZGV4IGE2ZTMyNTQuLmQ4NjFhNzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS92b2xhdGlsZS1iaW5kcy92b2xhdGlsZS1iaW5kcy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdm9sYXRpbGUtYmluZHMvdm9sYXRpbGUtYmluZHMuYmIKQEAgLTY3LDcgKzY3LDcgQEAKICAgICBpbnN0YWxsIC1tIDA3NTUgbW91bnQtY29weWJpbmQgJHtEfSR7YmFzZV9zYmluZGlyfS8KIAogICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBmb3Igc2VydmljZSBpbiAke1NZU1RFTURfU0VSVklDRV92b2xhdGlsZS1iaW5kc307IGRvCisgICAgZm9yIHNlcnZpY2UgaW4gJHtTWVNURU1EX1NFUlZJQ0VfJHtQTn19OyBkbwogICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCiAgICAgZG9uZQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvemxpYi96bGliLTEuMi4xMS9yZW1vdmUubGRjb25maWcuY2FsbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS96bGliL3psaWItMS4yLjExL3JlbW92ZS5sZGNvbmZpZy5jYWxsLnBhdGNoCmluZGV4IDQwM2I0ODIuLjdjY2JlMWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS96bGliL3psaWItMS4yLjExL3JlbW92ZS5sZGNvbmZpZy5jYWxsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS96bGliL3psaWItMS4yLjExL3JlbW92ZS5sZGNvbmZpZy5jYWxsLnBhdGNoCkBAIC03LDE0ICs3LDE1IEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGlzYWJsZSBmZWF0dXJlXQogCi1kaWZmIC11TnIgemxpYi0xLjIuNi5vcmlnL01ha2VmaWxlLmluIHpsaWItMS4yLjYvTWFrZWZpbGUuaW4KLS0tLSB6bGliLTEuMi42Lm9yaWcvTWFrZWZpbGUuaW4JMjAxMi0wMS0yOCAyMzo0ODo1MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyB6bGliLTEuMi42L01ha2VmaWxlLmluCTIwMTItMDItMTMgMTU6Mzg6MjAuNTc3NzAwNzIzICswMTAwCi1AQCAtMTk5LDcgKzE5OSw2IEBACitJbmRleDogemxpYi0xLjIuMTEvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB6bGliLTEuMi4xMS5vcmlnL01ha2VmaWxlLmluCisrKysgemxpYi0xLjIuMTEvTWFrZWZpbGUuaW4KK0BAIC0zMjIsNyArMzIyLDYgQEAgaW5zdGFsbC1saWJzOiAkKExJQlMpCiAgCSAgcm0gLWYgJChERVNURElSKSQoc2hhcmVkbGliZGlyKS8kKFNIQVJFRExJQikgJChERVNURElSKSQoc2hhcmVkbGliZGlyKS8kKFNIQVJFRExJQk0pOyBcCiAgCSAgbG4gLXMgJChTSEFSRURMSUJWKSAkKERFU1RESVIpJChzaGFyZWRsaWJkaXIpLyQoU0hBUkVETElCKTsgXAogIAkgIGxuIC1zICQoU0hBUkVETElCVikgJChERVNURElSKSQoc2hhcmVkbGliZGlyKS8kKFNIQVJFRExJQk0pOyBcCiAtCSAgKCQoTERDT05GSUcpIHx8IHRydWUpICA+L2Rldi9udWxsIDI+JjE7IFwKICAJZmkKLSAJY3AgemxpYi4zICQoREVTVERJUikkKG1hbjNkaXIpCi0gCWNobW9kIDY0NCAkKERFU1RESVIpJChtYW4zZGlyKS96bGliLjMKKyAJcm0gLWYgJChERVNURElSKSQobWFuM2RpcikvemxpYi4zCisgCWNwICQoU1JDRElSKXpsaWIuMyAkKERFU1RESVIpJChtYW4zZGlyKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LW5hdGl2ZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQtbmF0aXZlLmluYwppbmRleCA2OGYxYjNjLi5lZjIzMmMxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQtbmF0aXZlLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQtbmF0aXZlLmluYwpAQCAtNjcsNCArNjcsMTAgQEAKIAlpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2FwdC9hcmNoaXZlcy9wYXJ0aWFsCiAKIAlpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9hcHQvCisKKwlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L2FwdC1wa2cKKwlmb3IgaCBpbiBgZmluZCAke1N9L2FwdC1wa2cgJHtTfS9hcHQtaW5zdCAtbmFtZSAnKi5oJ2AKKwlkbworCQlpbnN0YWxsIC1tIDA2NDQgJGggJHtEfSR7aW5jbHVkZWRpcn0vYXB0LXBrZworCWRvbmUKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9kaXNhYmxlLXRlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvZGlzYWJsZS10ZXN0LnBhdGNoCmluZGV4IDA1MzI2NzEuLmQxNmI1YzcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9kaXNhYmxlLXRlc3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L2Rpc2FibGUtdGVzdC5wYXRjaApAQCAtMTcsMTAgKzE3LDEwIEBACiAgY29uZmlndXJlLmFjIHwgNyAtLS0tLS0tCiAgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggNzY4MGYwOC4uNjk1MjdhNSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQorSW5kZXg6IGFwdC0xLjIuMjQvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhcHQtMS4yLjI0Lm9yaWcvTWFrZWZpbGUKKysrKyBhcHQtMS4yLjI0L01ha2VmaWxlCiBAQCAtOSw4ICs5LDggQEAgZW5kaWYKICAuUEhPTlk6IGRlZmF1bHQKICBkZWZhdWx0OiBzdGFydHVwIGFsbApAQCAtMzIsOSArMzIsOSBAQAogIAkkKE1BS0UpIC1DIHZlbmRvciAkQAogIAkkKE1BS0UpIC1DIGFwdC1wa2cgJEAKICAJJChNQUtFKSAtQyBhcHQtaW5zdCAkQAotQEAgLTIxLDggKzIxLDYgQEAgYWxsIGhlYWRlcnMgbGlicmFyeSBjbGVhbiB2ZXJ5Y2xlYW4gYmluYXJ5IHByb2dyYW0gZG9jIG1hbnBhZ2VzIGRvY2Jvb2sgdGVzdCB1cGQKK0BAIC0yMSw4ICsyMSw2IEBAIGFsbCBoZWFkZXJzIGxpYnJhcnkgY2xlYW4gdmVyeWNsZWFuIGJpbmEKICAJJChNQUtFKSAtQyBkc2VsZWN0ICRACi0gCSQoTUFLRSkgLUMgZG9jICRACisgIwkkKE1BS0UpIC1DIGRvYyAkQAogIAkkKE1BS0UpIC1DIHBvICRACiAtCSMgRklYTUU6IC1DIHRlc3QgaGFzIGlzc3VlIHN3aXRoIHBhcmFsbGVsIGJ1aWxkcywgaW52ZXN0aWdhdGUhCiAtCS0kKE1BS0UpIC1DIHRlc3QgJEAKQEAgLTUyLDEwICs1MiwxMCBAQAogIAogIGRpcnM6IHN0YXJ0dXAKICAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDFmMDVkYTUuLmU0N2Y0NTkgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYworSW5kZXg6IGFwdC0xLjIuMjQvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYXB0LTEuMi4yNC5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGFwdC0xLjIuMjQvY29uZmlndXJlLmFjCiBAQCAtOTAsMTMgKzkwLDYgQEAgQUNfQ0hFQ0tfTElCKGN1cmwsIGN1cmxfZWFzeV9pbml0LAogICAgICAgQUNfTVNHX0VSUk9SKFtmYWlsZWQ6IEkgbmVlZCBDVVJMIGR1ZSBodHRwcyBzdXBwb3J0XSksCiAgKQpAQCAtNzAsNiArNzAsMyBAQAogIEFDX1NVQlNUKEJEQkxJQikKICAKICBIQVZFX1pMSUI9bm8KLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L2ZpeC1nY2MtNC42LW51bGwtbm90LWRlZmluZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvZml4LWdjYy00LjYtbnVsbC1ub3QtZGVmaW5lZC5wYXRjaAppbmRleCA4MDFhZTZkLi44OTljNmVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvZml4LWdjYy00LjYtbnVsbC1ub3QtZGVmaW5lZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvZml4LWdjYy00LjYtbnVsbC1ub3QtZGVmaW5lZC5wYXRjaApAQCAtMSwxMiArMSwxNCBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLS0tLSBhL2FwdC1wa2cvY29udHJpYi93ZWFrcHRyLmgKLSsrKyBiL2FwdC1wa2cvY29udHJpYi93ZWFrcHRyLmgKK0luZGV4OiBhcHQtMS4yLjI0L2FwdC1wa2cvY29udHJpYi93ZWFrcHRyLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhcHQtMS4yLjI0Lm9yaWcvYXB0LXBrZy9jb250cmliL3dlYWtwdHIuaAorKysrIGFwdC0xLjIuMjQvYXB0LXBrZy9jb250cmliL3dlYWtwdHIuaAogQEAgLTIxLDYgKzIxLDcgQEAKICAjaWZuZGVmIFdFQUtfUE9JTlRFUl9ICiAgI2RlZmluZSBXRUFLX1BPSU5URVJfSAogIAogKyNpbmNsdWRlIDxjc3RkbGliPgogICNpbmNsdWRlIDxzZXQ+Ci0gLyoqCi0gICogQ2xhc3MgZm9yIG9iamVjdHMgcHJvdmlkaW5nIHN1cHBvcnQgZm9yIHdlYWsgcG9pbnRlcnMuCisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L21ha2VyYWNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L21ha2VyYWNlLnBhdGNoCmluZGV4IDQ2ZTMxNjEuLjBjNjg2ZDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9tYWtlcmFjZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvbWFrZXJhY2UucGF0Y2gKQEAgLTgsMTYgKzgsMTYgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLUluZGV4OiBhcHQtMC45LjkuNC9idWlsZGxpYi9saWJyYXJ5Lm1haworSW5kZXg6IGFwdC0xLjIuMjQvYnVpbGRsaWIvbGlicmFyeS5tYWsKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhcHQtMC45LjkuNC5vcmlnL2J1aWxkbGliL2xpYnJhcnkubWFrCTIwMTMtMDctMzEgMTU6NDU6MDcuMzIwNDQwNTc1ICswMzAwCi0rKysgYXB0LTAuOS45LjQvYnVpbGRsaWIvbGlicmFyeS5tYWsJMjAxMy0wNy0zMSAxNTo0Njo0OS40NDA0NDA1NjEgKzAzMDAKLUBAIC02MSw3ICs2MSw3IEBACistLS0gYXB0LTEuMi4yNC5vcmlnL2J1aWxkbGliL2xpYnJhcnkubWFrCisrKysgYXB0LTEuMi4yNC9idWlsZGxpYi9saWJyYXJ5Lm1haworQEAgLTY1LDcgKzY1LDcgQEAgJChMSUIpL2xpYiQoTElCUkFSWSkuc28uJChNQUpPUikuJChNSU5PUgogIAogICMgQ29tcGlsYXRpb24gcnVsZXMKICB2cGF0aCAlLmNjICQoU1VCRElSUykKIC0kKE9CSikvJS5vcGljOiAlLmNjICQoTElCUkFSWURFUEVORFMpCiArJChPQkopLyUub3BpYzogJS5jYyAkKExJQlJBUllERVBFTkRTKSAkKCQoTE9DQUwpLUhFQURFUlMpCiAgCWVjaG8gQ29tcGlsaW5nICQ8IHRvICRACi0gCSQoQ1hYKSAtYyAkKElOTElORURFUEZMQUcpICQoQ1BQRkxBR1MpICQoQ1hYRkxBR1MpICQoUElDRkxBR1MpIC1vICRAICQ8CisgCSQoQ1hYKSAtYyAkKElOTElORURFUEZMQUcpICQoQ1BQRkxBR1MpICQoQ1hYU1REKSAkKENYWEZMQUdTKSAkKFBJQ0ZMQUdTKSAtbyAkQCAnJChhYnNwYXRoICQ8KScKICAJJChEb0RlcCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9uby1ubHMtZHBrZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9uby1ubHMtZHBrZy5wYXRjaAppbmRleCBhMDk5NmQ0Li45OGI2Yzk2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvbm8tbmxzLWRwa2cucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L25vLW5scy1kcGtnLnBhdGNoCkBAIC0xLDggKzEsMTAgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCi0tLS0gYS9hcHQtcGtnL2RlYi9kcGtncG0uY2MKLSsrKyBiL2FwdC1wa2cvZGViL2Rwa2dwbS5jYwotQEAgLTQyLDYgKzQyLDEyIEBACitJbmRleDogYXB0LTEuMi4yNC9hcHQtcGtnL2RlYi9kcGtncG0uY2MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhcHQtMS4yLjI0Lm9yaWcvYXB0LXBrZy9kZWIvZHBrZ3BtLmNjCisrKysgYXB0LTEuMi4yNC9hcHQtcGtnL2RlYi9kcGtncG0uY2MKK0BAIC01NCw2ICs1NCwxMiBAQAogICNpbmNsdWRlIDxhcHRpMThuLmg+CiAgCQkJCQkJCQkJLyp9fX0qLwogIApAQCAtMTQsOCArMTYsOCBAQAogKwogIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAgCi0gbmFtZXNwYWNlCi1AQCAtMTI3OSw3ICsxMjg1LDcgQEAgdm9pZCBwa2dEUGtnUE06OldyaXRlQXBwb3J0UmVwb3J0KGNvbnN0CisgQVBUX1BVUkUgc3RhdGljIHN0cmluZworQEAgLTE3MDMsNyArMTcwOSw3IEBAIHZvaWQgcGtnRFBrZ1BNOjpXcml0ZUFwcG9ydFJlcG9ydChjb25zdAogICAgIH0KICAKICAgICAvLyBjaGVjayBpZiBpdHMgbm90IGEgZm9sbG93IHVwIGVycm9yIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L25vZG9jLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L25vZG9jLnBhdGNoCmluZGV4IDQ0OWU0MmQuLjc4Y2Y1MzggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9ub2RvYy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvbm9kb2MucGF0Y2gKQEAgLTMsMTYgKzMsMTYgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KIFNpZ25lZC1vZmYtYnk6IENvbnN0YW50aW4gTXVzY2EgPGNvbnN0YW50aW54Lm11c2NhQGludGVsLmNvbT4KIAotSW5kZXg6IGFwdC0wLjkuNy43L01ha2VmaWxlCitJbmRleDogYXB0LTEuMi4yNC9NYWtlZmlsZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGFwdC0wLjkuNy43Lm9yaWcvTWFrZWZpbGUKLSsrKyBhcHQtMC45LjcuNy9NYWtlZmlsZQotQEAgLTE3LDcgKzE3LDcgQEAgYWxsIGhlYWRlcnMgbGlicmFyeSBjbGVhbiB2ZXJ5Y2xlYW4gYmluYQorLS0tIGFwdC0xLjIuMjQub3JpZy9NYWtlZmlsZQorKysrIGFwdC0xLjIuMjQvTWFrZWZpbGUKK0BAIC0xOSw3ICsxOSw3IEBAIGFsbCBoZWFkZXJzIGxpYnJhcnkgY2xlYW4gdmVyeWNsZWFuIGJpbmEKICAJJChNQUtFKSAtQyBjbWRsaW5lICRACiAgCSQoTUFLRSkgLUMgZnRwYXJjaGl2ZSAkQAogIAkkKE1BS0UpIC1DIGRzZWxlY3QgJEAKIC0JJChNQUtFKSAtQyBkb2MgJEAKICsjCSQoTUFLRSkgLUMgZG9jICRACiAgCSQoTUFLRSkgLUMgcG8gJEAKLSAJJChNQUtFKSAtQyB0ZXN0ICRACi0gCisgCSMgRklYTUU6IC1DIHRlc3QgaGFzIGlzc3VlIHN3aXRoIHBhcmFsbGVsIGJ1aWxkcywgaW52ZXN0aWdhdGUhCisgCS0kKE1BS0UpIC1DIHRlc3QgJEAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYtYXJjaGl2ZS9hdXRvY29uZi1hcmNoaXZlXzIwMTYuMDkuMTYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mLWFyY2hpdmUvYXV0b2NvbmYtYXJjaGl2ZV8yMDE2LjA5LjE2LmJiCmluZGV4IDEwNGRjMzguLjg5ZDU3YWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYtYXJjaGl2ZS9hdXRvY29uZi1hcmNoaXZlXzIwMTYuMDkuMTYuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi1hcmNoaXZlL2F1dG9jb25mLWFyY2hpdmVfMjAxNi4wOS4xNi5iYgpAQCAtOSw2ICs5LDEwIEBACiBTUkNfVVJJW21kNXN1bV0gPSAiYmYxOWQ0Y2RkY2UyNjBiM2MzZTFkNTFkNDI1MDkwNzEiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZThmMmVmZDIzNWY4NDJiYWQyZjY5MzhiZjRhNzIyNDBhNWU1ZmNkMjQ4ZTg0NDQzMzVlNjNiZWI2MGZhYmQ4MiIKIAotaW5oZXJpdCBhdXRvdG9vbHMKK2luaGVyaXQgYXV0b3Rvb2xzIGFsbGFyY2gKKworUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tZG9jIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9hY2xvY2FsIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mL2F1dG9jb25mLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYvYXV0b2NvbmYuaW5jCmluZGV4IGVhNjJkZjguLmRmODFiYzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYvYXV0b2NvbmYuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYvYXV0b2NvbmYuaW5jCkBAIC00MSw2ICs0MSwxMCBAQAogQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEVSTD0nJHtQRVJMfSciCiAKIGRvX2NvbmZpZ3VyZSgpIHsKKwkjIG1hbnVhbGx5IGluc3RhbGwgYSBuZXdlciBjb25maWcuZ3Vlc3MvLnN1YgorCWluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLmd1ZXNzICR7U30vYnVpbGQtYXV4CisJaW5zdGFsbCAtbSAwNzU1ICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ251LWNvbmZpZy9jb25maWcuc3ViICR7U30vYnVpbGQtYXV4CisKIAlvZV9ydW5jb25mCiB9CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvYXV0b21ha2UtcmVwbGFjZS13LW9wdGlvbi1pbi1zaGViYW5ncy13aXRoLW1vZGVybi11c2Utd2FybmluZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlL2F1dG9tYWtlLXJlcGxhY2Utdy1vcHRpb24taW4tc2hlYmFuZ3Mtd2l0aC1tb2Rlcm4tdXNlLXdhcm5pbmdzLnBhdGNoCmluZGV4IDY0ZWIyNTMuLjk2YjVhM2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvYXV0b21ha2UtcmVwbGFjZS13LW9wdGlvbi1pbi1zaGViYW5ncy13aXRoLW1vZGVybi11c2Utd2FybmluZ3MucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS9hdXRvbWFrZS1yZXBsYWNlLXctb3B0aW9uLWluLXNoZWJhbmdzLXdpdGgtbW9kZXJuLXVzZS13YXJuaW5ncy5wYXRjaApAQCAtMjIsMTAgKzIyLDEwIEBACiAgdC93cmFwL2F1dG9tYWtlLmluIHwgMyArKy0KICA0IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2Jpbi9hY2xvY2FsLmluIGIvYmluL2FjbG9jYWwuaW4KLWluZGV4IDM0OWYyNGEuLjUwY2I4ZDMgMTAwNjQ0Ci0tLS0gYS9iaW4vYWNsb2NhbC5pbgotKysrIGIvYmluL2FjbG9jYWwuaW4KK0luZGV4OiBhdXRvbWFrZS0xLjE1LjEvYmluL2FjbG9jYWwuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhdXRvbWFrZS0xLjE1LjEub3JpZy9iaW4vYWNsb2NhbC5pbgorKysrIGF1dG9tYWtlLTEuMTUuMS9iaW4vYWNsb2NhbC5pbgogQEAgLTEsNCArMSw0IEBACiAtIyFAUEVSTEAgLXcKICsjIUBQRVJMQApAQCAtNDAsMTcgKzQwLDE3IEBACiAgCiAgdXNlIEF1dG9tYWtlOjpDb25maWc7CiAgdXNlIEF1dG9tYWtlOjpHZW5lcmFsOwotZGlmZiAtLWdpdCBhL2Jpbi9hdXRvbWFrZS5pbiBiL2Jpbi9hdXRvbWFrZS5pbgotaW5kZXggZWVkYzhiYy4uZTBhMDFjZiAxMDA2NDQKLS0tLSBhL2Jpbi9hdXRvbWFrZS5pbgotKysrIGIvYmluL2F1dG9tYWtlLmluCitJbmRleDogYXV0b21ha2UtMS4xNS4xL2Jpbi9hdXRvbWFrZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGF1dG9tYWtlLTEuMTUuMS5vcmlnL2Jpbi9hdXRvbWFrZS5pbgorKysrIGF1dG9tYWtlLTEuMTUuMS9iaW4vYXV0b21ha2UuaW4KIEBAIC0xLDQgKzEsNCBAQAogLSMhQFBFUkxAIC13CiArIyFAUEVSTEAKICAjIC0qLSBwZXJsIC0qLQogICMgQGNvbmZpZ3VyZV9pbnB1dEAKICAKLUBAIC0yOCw2ICsyOCw3IEBAIGV2YWwgJ2Nhc2UgJCMgaW4gMCkgZXhlYyBAUEVSTEAgLVMgIiQwIjs7ICopIGV4ZWMgQFBFUkxAIC1TICIkMCIgIiRAIjs7IGVzYWMnCitAQCAtMjgsNiArMjgsNyBAQCBldmFsICdjYXNlICQjIGluIDApIGV4ZWMgQFBFUkxAIC1TICIkMCI7CiAgcGFja2FnZSBBdXRvbWFrZTsKICAKICB1c2Ugc3RyaWN0OwpAQCAtNTgsMTYgKzU4LDE2IEBACiAgCiAgQkVHSU4KICB7Ci1kaWZmIC0tZ2l0IGEvdC93cmFwL2FjbG9jYWwuaW4gYi90L3dyYXAvYWNsb2NhbC5pbgotaW5kZXggZTY0YjU0Ni4uOTk5Njg5OSAxMDA2NDQKLS0tLSBhL3Qvd3JhcC9hY2xvY2FsLmluCi0rKysgYi90L3dyYXAvYWNsb2NhbC5pbgorSW5kZXg6IGF1dG9tYWtlLTEuMTUuMS90L3dyYXAvYWNsb2NhbC5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGF1dG9tYWtlLTEuMTUuMS5vcmlnL3Qvd3JhcC9hY2xvY2FsLmluCisrKysgYXV0b21ha2UtMS4xNS4xL3Qvd3JhcC9hY2xvY2FsLmluCiBAQCAtMSw0ICsxLDQgQEAKIC0jIUBQRVJMQCAtdwogKyMhQFBFUkxACiAgIyBAY29uZmlndXJlX2lucHV0QAogIAotICMgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgIyBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIEBAIC0xOSw2ICsxOSw3IEBACiAgQkVHSU4KICB7CkBAIC03NiwxNiArNzYsMTYgQEAKICAgIEBBY2xvY2FsOjpwZXJsX2xpYmRpcnMgPSAoJ0BhYnNfdG9wX3NyY2RpckAvbGliJyk7CiAgICB1bnNoaWZ0IEBBY2xvY2FsOjpwZXJsX2xpYmRpcnMsICdAYWJzX3RvcF9idWlsZGRpckAvbGliJwogICAgICBpZiAnQHNyY2RpckAnIG5lICcuJzsKLWRpZmYgLS1naXQgYS90L3dyYXAvYXV0b21ha2UuaW4gYi90L3dyYXAvYXV0b21ha2UuaW4KLWluZGV4IDhiOTQzYjEuLmJlNjEyMjYgMTAwNjQ0Ci0tLS0gYS90L3dyYXAvYXV0b21ha2UuaW4KLSsrKyBiL3Qvd3JhcC9hdXRvbWFrZS5pbgorSW5kZXg6IGF1dG9tYWtlLTEuMTUuMS90L3dyYXAvYXV0b21ha2UuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhdXRvbWFrZS0xLjE1LjEub3JpZy90L3dyYXAvYXV0b21ha2UuaW4KKysrKyBhdXRvbWFrZS0xLjE1LjEvdC93cmFwL2F1dG9tYWtlLmluCiBAQCAtMSw0ICsxLDQgQEAKIC0jIUBQRVJMQCAtdwogKyMhQFBFUkxACiAgIyBAY29uZmlndXJlX2lucHV0QAogIAotICMgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgIyBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIEBAIC0xOSw2ICsxOSw3IEBACiAgQkVHSU4KICB7CkBAIC05NCw2ICs5NCwzIEBACiAgICBAQXV0b21ha2U6OnBlcmxfbGliZGlycyA9ICgnQGFic190b3Bfc3JjZGlyQC9saWInKTsKICAgIHVuc2hpZnQgQEF1dG9tYWtlOjpwZXJsX2xpYmRpcnMsICdAYWJzX3RvcF9idWlsZGRpckAvbGliJwogICAgICBpZiAnQHNyY2RpckAnIG5lICcuJzsKLS0tIAotMi4zLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS9idWlsZHRlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlL2J1aWxkdGVzdC5wYXRjaAppbmRleCAxZGQ1MzM3Li5jMzJjZDFmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlL2J1aWxkdGVzdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlL2J1aWxkdGVzdC5wYXRjaApAQCAtNCwyMSArNCwyMyBAQAogU2lnbmVkLW9mZi1ieTogQmrDtnJuIFN0ZW5iZXJnIDxianN0QGVuZWEuY29tPgogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLS0tLSBhL2xpYi9hbS9jaGVjay5hbQkyMDEyLTExLTE0IDEzOjQ2OjE2LjMzNTQ3NTk5NSArMDEwMAotKysrIGIvbGliL2FtL2NoZWNrLmFtCTIwMTItMDgtMTMgMTg6NDA6MTIuMDAwMDAwMDAwICswMjAwCi1AQCAtNDQsNyArNDQsNyBAQAotIGFtX190dHlfY29sb3JzID0gJChhbV9fdHR5X2NvbG9yc19kdW1teSkKLSBlbmRpZiAhJT9DT0xPUiUKLQorSW5kZXg6IGF1dG9tYWtlLTEuMTUuMS9saWIvYW0vY2hlY2suYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhdXRvbWFrZS0xLjE1LjEub3JpZy9saWIvYW0vY2hlY2suYW0KKysrKyBhdXRvbWFrZS0xLjE1LjEvbGliL2FtL2NoZWNrLmFtCitAQCAtNDEsNyArNDEsNyBAQCBhbV9fdHR5X2NvbG9ycyA9IHsgXAorICAgZmk7IFwKKyB9CisgCiAtLlBIT05ZOiBjaGVjay1URVNUUwogKy5QSE9OWTogY2hlY2stVEVTVFMgYnVpbGR0ZXN0LVRFU1RTIHJ1bnRlc3QtVEVTVFMKLQotIGlmICU/UEFSQUxMRUxfVEVTVFMlCi0KLUBAIC00NjUsNyArNDY1LDE0IEBACi0KLSBlbHNlICElP1BBUkFMTEVMX1RFU1RTJQotCisgCisgaWYgISU/U0VSSUFMX1RFU1RTJQorIAorQEAgLTQ2Niw3ICs0NjYsMTQgQEAgZWxzZSAlP1NFUklBTF9URVNUUyUKKyAKKyAjIyBPYnNvbGVzY2VudCBzZXJpYWwgdGVzdHN1aXRlIGRyaXZlci4KKyAKIC1jaGVjay1URVNUUzogJChURVNUUykKICtBTV9SRUNVUlNJVkVfVEFSR0VUUyArPSBidWlsZHRlc3QgcnVudGVzdAogKwpAQCAtMjgsNiArMzAsNiBAQAogKwkkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBydW50ZXN0LVRFU1RTCiArCiArcnVudGVzdC1URVNUUzoKLQlAZmFpbGVkPTA7IGFsbD0wOyB4ZmFpbD0wOyB4cGFzcz0wOyBza2lwPTA7IFwKLQlzcmNkaXI9JChzcmNkaXIpOyBleHBvcnQgc3JjZGlyOyBcCisgCUBmYWlsZWQ9MDsgYWxsPTA7IHhmYWlsPTA7IHhwYXNzPTA7IHNraXA9MDsgXAorIAlzcmNkaXI9JChzcmNkaXIpOyBleHBvcnQgc3JjZGlyOyBcCiAgIyMgTWFrZSBzdXJlIFNvbGFyaXMgVlBBVEgtZXhwYW5kcyBhbGwgbWVtYmVycyBvZiB0aGlzIGxpc3QsIGV2ZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtMi4yOS4xLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtMi4yOS4xLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDdhNzJlMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLTIuMjkuMS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1MSUNfRklMRVNfQ0hLU1VNPSJcCi0gICAgZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyXAotICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9OWY2MDRkOGE0ZjhlNzRmNGY1MTQwODQ1YTIxYjY2NzRcCi0gICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKLSAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNlwKLSAgICBmaWxlOi8vZ2FzL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAotICAgIGZpbGU6Ly9pbmNsdWRlL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyXAotICAgIGZpbGU6Ly9pbmNsdWRlL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKLSAgICBmaWxlOi8vbGliaWJlcnR5L0NPUFlJTkcuTElCO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljN1wKLSAgICBmaWxlOi8vYmZkL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAotICAgICIKLQotZGVmIGJpbnV0aWxzX2JyYW5jaF92ZXJzaW9uKGQpOgotICAgIHB2c3BsaXQgPSBkLmdldFZhcignUFYnKS5zcGxpdCgnLicpCi0gICAgcmV0dXJuIHB2c3BsaXRbMF0gKyAiXyIgKyBwdnNwbGl0WzFdCi0KLUJJTlVQViA9ICIke0BiaW51dGlsc19icmFuY2hfdmVyc2lvbihkKX0iCi0KLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gImJpbnV0aWxzLSg/UDxwdmVyPlxkK18oXGRfPykqKSIKLQotU1JDUkVWID89ICI5MDI3NmYxNTM3OWQzODA3NjFmYzQ5OWRhMmJhMjRjZmIzYzEyYTk0IgotQklOVVRJTFNfR0lUX1VSSSA/PSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L2JpbnV0aWxzLWdkYi5naXQ7YnJhbmNoPWJpbnV0aWxzLSR7QklOVVBWfS1icmFuY2g7cHJvdG9jb2w9Z2l0IgotU1JDX1VSSSA9ICJcCi0gICAgICR7QklOVVRJTFNfR0lUX1VSSX0gXAotICAgICBmaWxlOi8vMDAwMy1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDA0LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDUtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDA2LVVzZS1saWJ0b29sLTIuNC5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDA3LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDA4LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2ggXAotICAgICBmaWxlOi8vMDAwOS13YXJuLWZvci11c2VzLW9mLXN5c3RlbS1kaXJlY3Rvcmllcy13aGVuLWNyb3NzLWxpbmtpLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTAtRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2ggXAotICAgICBmaWxlOi8vMDAxMS1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDEyLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2ggXAotICAgICBmaWxlOi8vMDAxMy1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDE0LURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTUtc3luYy13aXRoLU9FLWxpYnRvb2wtY2hhbmdlcy5wYXRjaCBcCi0iCi1TICA9ICIke1dPUktESVJ9L2dpdCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAgICAgICBybSAtcmYgJHtTfS9nZGIgJHtTfS9saWJkZWNudW1iZXIgJHtTfS9yZWFkbGluZSAke1N9L3NpbQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjMwLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtMi4zMC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM4ODNhYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtMi4zMC5pbmMKQEAgLTAsMCArMSw0MyBAQAorTElDX0ZJTEVTX0NIS1NVTT0iXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MlwKKyAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTlmNjA0ZDhhNGY4ZTc0ZjRmNTE0MDg0NWEyMWI2Njc0XAorICAgIGZpbGU6Ly9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCisgICAgZmlsZTovL0NPUFlJTkczLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjZcCisgICAgZmlsZTovL2dhcy9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKKyAgICBmaWxlOi8vaW5jbHVkZS9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MlwKKyAgICBmaWxlOi8vaW5jbHVkZS9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCisgICAgZmlsZTovL2xpYmliZXJ0eS9DT1BZSU5HLkxJQjttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzdcCisgICAgZmlsZTovL2JmZC9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKKyAgICAiCisKK2RlZiBiaW51dGlsc19icmFuY2hfdmVyc2lvbihkKToKKyAgICBwdnNwbGl0ID0gZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKQorICAgIHJldHVybiBwdnNwbGl0WzBdICsgIl8iICsgcHZzcGxpdFsxXQorCitCSU5VUFYgPSAiJHtAYmludXRpbHNfYnJhbmNoX3ZlcnNpb24oZCl9IgorCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJiaW51dGlscy0oP1A8cHZlcj5cZCtfKFxkXz8pKikiCisKK1NSQ1JFViA/PSAiY2FhODM5ZmJhNjY2MDBhNmMzNmQzNjM5OTA2ZWQ5MTEwYjc5YzMwNyIKK0JJTlVUSUxTX0dJVF9VUkkgPz0gImdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9iaW51dGlscy1nZGIuZ2l0O2JyYW5jaD1iaW51dGlscy0ke0JJTlVQVn0tYnJhbmNoO3Byb3RvY29sPWdpdCIKK1NSQ19VUkkgPSAiXAorICAgICAke0JJTlVUSUxTX0dJVF9VUkl9IFwKKyAgICAgZmlsZTovLzAwMDMtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwNC1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA1LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwNi1Vc2UtbGlidG9vbC0yLjQucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwNy1BZGQtdGhlLWFybXY1ZS1hcmNoaXRlY3R1cmUtdG8tYmludXRpbHMucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwOC1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMDktd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDEwLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTEtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxMi1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTMtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxNC1EZXRlY3QtNjQtYml0LU1JUFMtdGFyZ2V0cy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDE1LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2ggXAorIgorUyAgPSAiJHtXT1JLRElSfS9naXQiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKyAgICAgICAgcm0gLXJmICR7U30vZ2RiICR7U30vbGliZGVjbnVtYmVyICR7U30vcmVhZGxpbmUgJHtTfS9zaW0KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3MtY2FuYWRpYW5fMi4yOS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy1jYW5hZGlhbl8yLjMwLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzLWNhbmFkaWFuXzIuMjkuMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy1jYW5hZGlhbl8yLjMwLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzXzIuMjkuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NfMi4zMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc18yLjI5LjEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NfMi4zMC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc3Nka18yLjI5LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3Nzc2RrXzIuMzAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NzZGtfMi4yOS4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3Nzc2RrXzIuMzAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMS1iaW51dGlscy1jcm9zc3Nkay1HZW5lcmF0ZS1yZWxvY2F0YWJsZS1TREtzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAxLWJpbnV0aWxzLWNyb3Nzc2RrLUdlbmVyYXRlLXJlbG9jYXRhYmxlLVNES3MucGF0Y2gKaW5kZXggMGI1MTVkOC4uMmRmODM2MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAxLWJpbnV0aWxzLWNyb3Nzc2RrLUdlbmVyYXRlLXJlbG9jYXRhYmxlLVNES3MucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAxLWJpbnV0aWxzLWNyb3Nzc2RrLUdlbmVyYXRlLXJlbG9jYXRhYmxlLVNES3MucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDU4YWM5Zjk1YTNkODNjMjllZmFmN2E4OTA2ZmI2YWVmZWE4YzhlNzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDJlMWI1ZTI0YTY3NTlkZTdmNzNhYTYwNjBhNTc0ODQ4ZDkxMzFiNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjU4OjU0ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0ggMDEvMTVdIGJpbnV0aWxzLWNyb3Nzc2RrOiBHZW5lcmF0ZSByZWxvY2F0YWJsZSBTREtzCkBAIC0xOCw3ICsxOCw3IEBACiAgMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9sZC9nZW5zY3JpcHRzLnNoIGIvbGQvZ2Vuc2NyaXB0cy5zaAotaW5kZXggYjY5NDBkMzc2ZC4uYTQyYzRkN2E0YiAxMDA3NTUKK2luZGV4IDg3MzI0MjJiM2EuLjFmMjU3ZTk5Y2EgMTAwNzU1CiAtLS0gYS9sZC9nZW5zY3JpcHRzLnNoCiArKysgYi9sZC9nZW5zY3JpcHRzLnNoCiBAQCAtMjc3LDYgKzI3Nyw3IEBAIERBVEFfQUxJR05NRU5UX3U9IiR7REFUQV9BTElHTk1FTlRfdS0ke0RBVEFfQUxJR05NRU5UX3J9fSIKQEAgLTM3LDE2ICszNywxNiBAQAogICggZWNobyAiLyogU2NyaXB0IGZvciBsZCAtVXI6IGxpbmsgdy9vdXQgcmVsb2NhdGlvbiwgZG8gY3JlYXRlIGNvbnN0cnVjdG9ycyAqLyIKICAgIC4gJHtDVVNUT01JWkVSX1NDUklQVH0KICAgIC4gJHtzcmNkaXJ9L3NjcmlwdHRlbXBsLyR7U0NSSVBUX05BTUV9LnNjCi0gKSB8IHNlZCAtZSAnL14gKiQvZDtzL1sgCV0qJC8vJyA+IGxkc2NyaXB0cy8ke0VNVUxBVElPTl9OQU1FfS54dQorICkgfCBzZWQgLWUgJy9eICokL2Q7cy9bCSBdKiQvLycgPiBsZHNjcmlwdHMvJHtFTVVMQVRJT05fTkFNRX0ueHUKICt1bnNldCBQQVJUSUFMX0xJTktJTkcKICAKLSBMRF9GTEFHPQogIERBVEFfQUxJR05NRU5UPSR7REFUQV9BTElHTk1FTlRffQorIFJFTE9DQVRJTkc9IiAiCiBkaWZmIC0tZ2l0IGEvbGQvc2NyaXB0dGVtcGwvZWxmLnNjIGIvbGQvc2NyaXB0dGVtcGwvZWxmLnNjCi1pbmRleCBkOTEzOGJjMDU5Li5lNDhmYWVjYTQzIDEwMDY0NAoraW5kZXggOTc4N2FiNWRhYy4uMGM4YTkzYzJjOCAxMDA2NDQKIC0tLSBhL2xkL3NjcmlwdHRlbXBsL2VsZi5zYwogKysrIGIvbGQvc2NyaXB0dGVtcGwvZWxmLnNjCi1AQCAtMTM4LDggKzEzOCw4IEBAIGlmIHRlc3QgLXogIiREQVRBX1NFR01FTlRfQUxJR04iOyB0aGVuCitAQCAtMTM5LDggKzEzOSw4IEBAIGlmIHRlc3QgLXogIiREQVRBX1NFR01FTlRfQUxJR04iOyB0aGVuCiAgICAgIERBVEFfU0VHTUVOVF9SRUxST19FTkQ9Ii4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgke1NFUEFSQVRFX0dPVFBMVC0wfSwgLik7IgogICAgZmkKICBmaQpAQCAtNTgsNSArNTgsNSBAQAogIGlmIHRlc3QgLXogIiRQTFQiOyB0aGVuCiAgICBJUExUPSIuaXBsdCAgICAgICAgICR7UkVMT0NBVElORy0wfSA6IHsgKiguaXBsdCkgfSIKIC0tIAotMi4xNC4wCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAyLWJpbnV0aWxzLWNyb3NzLURvLW5vdC1nZW5lcmF0ZS1saW5rZXItc2NyaXB0LWRpcmVjdG8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDItYmludXRpbHMtY3Jvc3MtRG8tbm90LWdlbmVyYXRlLWxpbmtlci1zY3JpcHQtZGlyZWN0by5wYXRjaAppbmRleCAzNzAzMzNkLi5iYWM3ZmIyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDItYmludXRpbHMtY3Jvc3MtRG8tbm90LWdlbmVyYXRlLWxpbmtlci1zY3JpcHQtZGlyZWN0by5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDItYmludXRpbHMtY3Jvc3MtRG8tbm90LWdlbmVyYXRlLWxpbmtlci1zY3JpcHQtZGlyZWN0by5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gOGY5MjljNjE2MjA4MzUxZDA5NzFkN2RmZDc1NzRkNDhkMzE0NDYwMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNThkZGYzOGZhNTNhYmI0OGI2OWRkNzZlMzk4YzczNDUxYWQxYTVlYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDYgTWFyIDIwMTcgMjM6Mzc6MDUgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSCAwMi8xNV0gYmludXRpbHMtY3Jvc3M6IERvIG5vdCBnZW5lcmF0ZSBsaW5rZXIgc2NyaXB0CkBAIC0yMyw3ICsyMyw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDIzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbGQvZ2Vuc2NyaXB0cy5zaCBiL2xkL2dlbnNjcmlwdHMuc2gKLWluZGV4IGE0MmM0ZDdhNGIuLmQ3MjdiNGQwN2UgMTAwNzU1CitpbmRleCAxZjI1N2U5OWNhLi4xNTgzYjczYTJiIDEwMDc1NQogLS0tIGEvbGQvZ2Vuc2NyaXB0cy5zaAogKysrIGIvbGQvZ2Vuc2NyaXB0cy5zaAogQEAgLTE4OSwyOSArMTg5LDYgQEAgYXBwZW5kX3RvX2xpYl9wYXRoKCkKQEAgLTU3LDUgKzU3LDUgQEAKICAgIGxpYnM9JHtOQVRJVkVfTElCX0RJUlN9CiAgICBpZiBbICJ4JHtOQVRJVkV9IiA9ICJ4eWVzIiBdIDsgdGhlbgogLS0gCi0yLjE0LjAKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDMtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDMtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2gKaW5kZXggYjZjMDljYy4uMzA2YWZlNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAzLWNvbmZpZ3VyZS13aWRlbi10aGUtcmVnZXhwLWZvci1TSC1hcmNoaXRlY3R1cmVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMy1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZTVhODA2YWFlMDJhMTAyOTBjNzFkZWI3MmY2Mjk0Yzk4MDY4MzY4ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNTA4OWJlODhmNjcwYmNhZGY3ZGIwZTc3ODg5NGY5MDBiMmMwNWQ3YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6MDc6MzMgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAwMy8xNV0gY29uZmlndXJlOiB3aWRlbiB0aGUgcmVnZXhwIGZvciBTSCBhcmNoaXRlY3R1cmVzCkBAIC0xNCwxMiArMTQsMTIgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCBiZTlkZDg5ZDliLi5kOGFmMTU1YWI1IDEwMDc1NQoraW5kZXggMmQ2MTVhOTk5Ni4uYzRhZDQ1YzA2YyAxMDA3NTUKIC0tLSBhL2NvbmZpZ3VyZQogKysrIGIvY29uZmlndXJlCi1AQCAtMzg0NCw3ICszODQ0LDcgQEAgY2FzZSAiJHt0YXJnZXR9IiBpbgotICAgb3IxayotKi0qKQotICAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2RpcnMgZ2RiIgorQEAgLTM4MzUsNyArMzgzNSw3IEBAIGNhc2UgIiR7dGFyZ2V0fSIgaW4KKyAgIG52cHR4Ki0qLSopCisgICAgIG5vY29uZmlnZGlycz0iJG5vY29uZmlnZGlycyB0YXJnZXQtbGlic3NwIHRhcmdldC1saWJzdGRjKystdjMgdGFyZ2V0LWxpYm9iamMiCiAgICAgIDs7CiAtICBzaC0qLSopCiArICBzaCotKi0qIHwgc2g2NC0qLSopCkBAIC0yNyw3ICsyNyw3IEBACiAgICAgICAgc2gqLSotZWxmKQogICAgICAgICAgIDs7CiBkaWZmIC0tZ2l0IGEvZ3Byb2YvY29uZmlndXJlIGIvZ3Byb2YvY29uZmlndXJlCi1pbmRleCBlNzFmZThiOWU0Li42NzllMGRjZTc3IDEwMDc1NQoraW5kZXggMWUyNTEwMjk3Ni4uNmI0M2JmMmIxOCAxMDA3NTUKIC0tLSBhL2dwcm9mL2NvbmZpZ3VyZQogKysrIGIvZ3Byb2YvY29uZmlndXJlCiBAQCAtNTg3NCw2ICs1ODc0LDExIEBAIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKQEAgLTQzLDUgKzQzLDUgQEAKICAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+IC9kZXYvbnVsbDsgdGhlbgogICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nbWF0Y2hfcGF0dGVybiAvbGliW14vXSsoXC5zb1wuWzAtOV0rXC5bMC05XSt8X3BpY1wuYSkkJwogLS0gCi0yLjE0LjAKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDQtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDQtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2gKaW5kZXggMzhlZWUzMC4uM2UyOWM1OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA0LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNC1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMzYzNGVjMzU0N2JjMGY4YTVkMWI4YWQxNTM2NWUyZjgzNmNkYTY0MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYTBlODkzZWEwOTRjNDhmYTgwMzA0NmZmYTg5ZTMxOTA3YWVlMDU5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6MDk6NTggKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAwNC8xNV0gUG9pbnQgc2NyaXB0cyBsb2NhdGlvbiB0byBsaWJkaXIKQEAgLTEyLDcgKzEyLDcgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2xkL01ha2VmaWxlLmFtIGIvbGQvTWFrZWZpbGUuYW0KLWluZGV4IDYyNTM0N2ZmNjIuLmQ1MzM0ZDI2ODEgMTAwNjQ0CitpbmRleCA2MjQzYzEyNTI4Li4zYzVkNmM4MjAyIDEwMDY0NAogLS0tIGEvbGQvTWFrZWZpbGUuYW0KICsrKyBiL2xkL01ha2VmaWxlLmFtCiBAQCAtNTcsNyArNTcsNyBAQCBlbmRpZgpAQCAtMjUsNyArMjUsNyBAQAogIEVNVUwgPSBARU1VTEAKICBFTVVMQVRJT05fT0ZJTEVTID0gQEVNVUxBVElPTl9PRklMRVNACiBkaWZmIC0tZ2l0IGEvbGQvTWFrZWZpbGUuaW4gYi9sZC9NYWtlZmlsZS5pbgotaW5kZXggYmEyNTE3NzdiMC4uYTJjZjIyODJiNSAxMDA2NDQKK2luZGV4IDc2MGMwMzdmOWQuLjZkZWE2OTI4NjkgMTAwNjQ0CiAtLS0gYS9sZC9NYWtlZmlsZS5pbgogKysrIGIvbGQvTWFrZWZpbGUuaW4KIEBAIC00NDYsNyArNDQ2LDcgQEAgQU1fQ0ZMQUdTID0gJChXQVJOX0NGTEFHUykgJChFTEZfQ0xGQUdTKQpAQCAtMzgsNSArMzgsNSBAQAogIEJGRERJUiA9ICQoQkFTRURJUikvYmZkCiAgSU5DRElSID0gJChCQVNFRElSKS9pbmNsdWRlCiAtLSAKLTIuMTQuMAorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNS1Pbmx5LWdlbmVyYXRlLWFuLVJQQVRILWVudHJ5LWlmLUxEX1JVTl9QQVRILWlzLW5vdC1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA1LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2gKaW5kZXggNTkxNTBhMi4uMmY0OTk2OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA1LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA1LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDlkMzdjOGY2OGMwN2RhNjMxODZjYjk5M2YxMjIxZjZjMTFlY2E0MjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDUxOGFiYjE5NWQwZWI0N2Q4ZWVmNTgxZDdmZDBhNWZkOWZhNzNmN2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjI3OjE3ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0ggMDUvMTVdIE9ubHkgZ2VuZXJhdGUgYW4gUlBBVEggZW50cnkgaWYgTERfUlVOX1BBVEggaXMgbm90CkBAIC0xNSwxMCArMTUsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9sZC9lbXVsdGVtcGwvZWxmMzIuZW0gYi9sZC9lbXVsdGVtcGwvZWxmMzIuZW0KLWluZGV4IDlhYzE4NDAzMTYuLjlkYzRjMTQ5YmMgMTAwNjQ0CitpbmRleCBjMDkyNWZjOWI5Li43ZDc2NzBhODlmIDEwMDY0NAogLS0tIGEvbGQvZW11bHRlbXBsL2VsZjMyLmVtCiArKysgYi9sZC9lbXVsdGVtcGwvZWxmMzIuZW0KLUBAIC0xNDYzLDYgKzE0NjMsOCBAQCBmcmFnbWVudCA8PEVPRgorQEAgLTE0NzAsNiArMTQ3MCw4IEBAIGZyYWdtZW50IDw8RU9GCiAgCSAgICAgICYmIGNvbW1hbmRfbGluZS5ycGF0aCA9PSBOVUxMKQogIAkgICAgewogIAkgICAgICBwYXRoID0gKGNvbnN0IGNoYXIgKikgZ2V0ZW52ICgiTERfUlVOX1BBVEgiKTsKQEAgLTI3LDcgKzI3LDcgQEAKICAJICAgICAgaWYgKHBhdGgKICAJCSAgJiYgZ2xkJHtFTVVMQVRJT05fTkFNRX1fc2VhcmNoX25lZWRlZCAocGF0aCwgJm4sIGZvcmNlKSkKICAJCWJyZWFrOwotQEAgLTE3NDAsNiArMTc0Miw4IEBAIGdsZCR7RU1VTEFUSU9OX05BTUV9X2JlZm9yZV9hbGxvY2F0aW9uICh2b2lkKQorQEAgLTE3NTAsNiArMTc1Miw4IEBAIGdsZCR7RU1VTEFUSU9OX05BTUV9X2JlZm9yZV9hbGxvY2F0aW9uICh2b2lkKQogICAgcnBhdGggPSBjb21tYW5kX2xpbmUucnBhdGg7CiAgICBpZiAocnBhdGggPT0gTlVMTCkKICAgICAgcnBhdGggPSAoY29uc3QgY2hhciAqKSBnZXRlbnYgKCJMRF9SVU5fUEFUSCIpOwpAQCAtMzcsNSArMzcsNSBAQAogICAgZm9yIChhYmZkID0gbGlua19pbmZvLmlucHV0X2JmZHM7IGFiZmQ7IGFiZmQgPSBhYmZkLT5saW5rLm5leHQpCiAgICAgIGlmIChiZmRfZ2V0X2ZsYXZvdXIgKGFiZmQpID09IGJmZF90YXJnZXRfZWxmX2ZsYXZvdXIpCiAtLSAKLTIuMTQuMAorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNi1Vc2UtbGlidG9vbC0yLjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDYtVXNlLWxpYnRvb2wtMi40LnBhdGNoCmluZGV4IGU4N2VmZTYuLjMzM2UyZWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNi1Vc2UtbGlidG9vbC0yLjQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA2LVVzZS1saWJ0b29sLTIuNC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNzFjNzM0YmIzNzU0MzE5MDI5ZGNmYzg5OGNlZGJhZGU0MjI3NGRjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZmFkMDUzY2M1OWJhYTYyNzcxODJiMGZjOTA0MTVhMjE0MDYwYmE5OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTdW4sIDE0IEZlYiAyMDE2IDE3OjA0OjA3ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0ggMDYvMTVdIFVzZSBsaWJ0b29sIDIuNApAQCAtMTIsNyArMTIsNiBAQAogIGJmZC9jb25maWd1cmUgICAgICAgIHwgMTMxOCArKysrKysrKysrKysrKysrKy0tLS0tLQogIGJmZC9jb25maWd1cmUuYWMgICAgIHwgICAgMiArLQogIGJpbnV0aWxzL2NvbmZpZ3VyZSAgIHwgMTMxNiArKysrKysrKysrKysrKysrKy0tLS0tLQotIGNvbmZpZ3VyZSAgICAgICAgICAgIHwgICAgMiArLQogIGdhcy9jb25maWd1cmUgICAgICAgIHwgMTMxNCArKysrKysrKysrKysrKysrKy0tLS0tLQogIGdwcm9mL2NvbmZpZ3VyZSAgICAgIHwgMTMyMSArKysrKysrKysrKysrKysrKy0tLS0tLQogIGxkL2NvbmZpZ3VyZSAgICAgICAgIHwgMTY5MSArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQpAQCAtMjQsMTAgKzIzLDEwIEBACiAgb3Bjb2Rlcy9jb25maWd1cmUgICAgfCAxMzE4ICsrKysrKysrKysrKysrKysrLS0tLS0tCiAgb3Bjb2Rlcy9jb25maWd1cmUuYWMgfCAgICAyICstCiAgemxpYi9jb25maWd1cmUgICAgICAgfCAxMzE2ICsrKysrKysrKysrKysrKysrLS0tLS0tCi0gMTUgZmlsZXMgY2hhbmdlZCwgOTkyNyBpbnNlcnRpb25zKCspLCAzNjk0IGRlbGV0aW9ucygtKQorIDE0IGZpbGVzIGNoYW5nZWQsIDk5MjYgaW5zZXJ0aW9ucygrKSwgMzY5MyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2JmZC9jb25maWd1cmUgYi9iZmQvY29uZmlndXJlCi1pbmRleCA0ODI3NjU5NGVkLi4zZWNlODk0M2YzIDEwMDc1NQoraW5kZXggNmMyYjI0ZWJlMy4uNWZkZDcyM2I3ZiAxMDA3NTUKIC0tLSBhL2JmZC9jb25maWd1cmUKICsrKyBiL2JmZC9jb25maWd1cmUKIEBAIC02NzIsNiArNjcyLDkgQEAgT1RPT0wKQEAgLTE5MzEsNyArMTkzMCw3IEBACiAgICBjaG1vZCAreCAiJG9maWxlIgogIAogZGlmZiAtLWdpdCBhL2JmZC9jb25maWd1cmUuYWMgYi9iZmQvY29uZmlndXJlLmFjCi1pbmRleCA4ZmQwM2E3ZWE4Li44ODE2YzMyODZjIDEwMDY0NAoraW5kZXggMjM0MmYzZmFlYS4uYTY0NTFmY2NkYSAxMDA2NDQKIC0tLSBhL2JmZC9jb25maWd1cmUuYWMKICsrKyBiL2JmZC9jb25maWd1cmUuYWMKIEBAIC0yNTQsNyArMjU0LDcgQEAgY2hhbmdlcXVvdGUoLClkbmwKQEAgLTE5NDQsNyArMTk0Myw3IEBACiAgCiAgIyBNb3JlIGhhY2tzIHRvIGJ1aWxkIERMTHMgb24gV2luZG93cy4KIGRpZmYgLS1naXQgYS9iaW51dGlscy9jb25maWd1cmUgYi9iaW51dGlscy9jb25maWd1cmUKLWluZGV4IDIyZTFiMTczNmUuLjMyMWI2MzUzNWIgMTAwNzU1CitpbmRleCA1ZDljOTEwNWE3Li5hNjViMmI0NTE4IDEwMDc1NQogLS0tIGEvYmludXRpbHMvY29uZmlndXJlCiArKysgYi9iaW51dGlscy9jb25maWd1cmUKIEBAIC02NTksOCArNjU5LDExIEBAIE9UT09MCkBAIC0zODQxLDIxICszODQwLDggQEAKICAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKICAgIGNobW9kICt4ICIkb2ZpbGUiCiAgCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCBkOGFmMTU1YWI1Li4wMDVlZDgyN2FiIDEwMDc1NQotLS0tIGEvY29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC0zODQ0LDcgKzM4NDQsNyBAQCBjYXNlICIke3RhcmdldH0iIGluCi0gICBvcjFrKi0qLSopCi0gICAgIG5vY29uZmlnZGlycz0iJG5vY29uZmlnZGlycyBnZGIiCi0gICAgIDs7Ci0tICBzaCotKi0qIHwgc2g2NC0qLSopCi0rICBzaC0qLSogfCBzaDY0LSotKikKLSAgICAgY2FzZSAiJHt0YXJnZXR9IiBpbgotICAgICAgIHNoKi0qLWVsZikKLSAgICAgICAgICA7OwogZGlmZiAtLWdpdCBhL2dhcy9jb25maWd1cmUgYi9nYXMvY29uZmlndXJlCi1pbmRleCA5M2FmYjIwYzhmLi44MWRkNGNiZDk3IDEwMDc1NQoraW5kZXggZmJhYzhmNDRkNS4uYTQwYWMyMTQ0ZiAxMDA3NTUKIC0tLSBhL2dhcy9jb25maWd1cmUKICsrKyBiL2dhcy9jb25maWd1cmUKIEBAIC02NTAsOCArNjUwLDExIEBAIE9UT09MCkBAIC01MTU2LDcgKzUxNDIsNyBAQAogIGludCBtYWluICgpCiAgewogICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTU0MzYsMTMgKzE2MDg5LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNTQzNywxMyArMTYwOTAsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtNTE3Nyw3ICs1MTYzLDcgQEAKICBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE1NDU3LDE0ICsxNjExNywxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQorQEAgLTE1NDU4LDE0ICsxNjExOCwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTUxOTYsNyArNTE4Miw3IEBACiAgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTU0OTcsMTIgKzE2MTYwLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCitAQCAtMTU0OTgsMTIgKzE2MTYxLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCiAgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtNTIxMCw3ICs1MTk2LDcgQEAKICBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE1NTU3LDggKzE2MjIwLDEzIEBAIHJlbG9hZF9mbGFnIFwKK0BAIC0xNTU1OCw4ICsxNjIyMSwxMyBAQCByZWxvYWRfZmxhZyBcCiAgT0JKRFVNUCBcCiAgZGVwbGlic19jaGVja19tZXRob2QgXAogIGZpbGVfbWFnaWNfY21kIFwKQEAgLTUyMjQsNyArNTIxMCw3IEBACiAgU1RSSVAgXAogIFJBTkxJQiBcCiAgQ0MgXAotQEAgLTE1NTY4LDEyICsxNjIzNiwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKK0BAIC0xNTU2OSwxMiArMTYyMzcsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKQEAgLTUyNDAsNyArNTIyNiw3IEBACiAgRFNZTVVUSUwgXAogIE5NRURJVCBcCiAgTElQTyBcCi1AQCAtMTU1ODksNyArMTYyNTksNiBAQCBub191bmRlZmluZWRfZmxhZyBcCitAQCAtMTU1OTAsNyArMTYyNjAsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCiAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCiAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCiAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCkBAIC01MjQ4LDcgKzUyMzQsNyBAQAogIGV4Y2x1ZGVfZXhwc3ltcyBcCiAgaW5jbHVkZV9leHBzeW1zIFwKICBmaWxlX2xpc3Rfc3BlYyBcCi1AQCAtMTU2MjUsNiArMTYyOTQsNyBAQCBtb2R1bGVfY21kcyBcCitAQCAtMTU2MjYsNiArMTYyOTUsNyBAQCBtb2R1bGVfY21kcyBcCiAgbW9kdWxlX2V4cHN5bV9jbWRzIFwKICBleHBvcnRfc3ltYm9sc19jbWRzIFwKICBwcmVsaW5rX2NtZHMgXApAQCAtNTI1Niw3ICs1MjQyLDcgQEAKICBwb3N0aW5zdGFsbF9jbWRzIFwKICBwb3N0dW5pbnN0YWxsX2NtZHMgXAogIGZpbmlzaF9jbWRzIFwKLUBAIC0xNjM4OSw3ICsxNzA1OSw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKK0BAIC0xNjM5MCw3ICsxNzA2MCw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKICAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KICAjCiAgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKQEAgLTUyNjYsNyArNTI1Miw3IEBACiAgIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKICAjCiAgIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgotQEAgLTE2NDkyLDE5ICsxNzE2Myw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKK0BAIC0xNjQ5MywxOSArMTcxNjQsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCiAgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgogIE5MMlNQPSRsdF9sdF9OTDJTUAogIApAQCAtNTMxMCw3ICs1Mjk2LDcgQEAKICAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgogIFNUUklQPSRsdF9TVFJJUAogIAotQEAgLTE2NTM0LDYgKzE3MjI4LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCitAQCAtMTY1MzUsNiArMTcyMjksMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKICAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgogIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAogIApAQCAtNTMyMyw3ICs1MzA5LDcgQEAKICAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KICBvYmpkaXI9JG9iamRpcgogIAotQEAgLTE2NTQzLDYgKzE3MjQzLDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKK0BAIC0xNjU0NCw2ICsxNzI0NCw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECiAgIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KICBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCiAgCkBAIC01MzMzLDcgKzUzMTksNyBAQAogICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KICBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKICAKLUBAIC0xNjY1NywxMiArMTczNjAsMTIgQEAgd2l0aF9nY2M9JEdDQworQEAgLTE2NjU4LDEyICsxNzM2MSwxMiBAQCB3aXRoX2djYz0kR0NDCiAgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgogIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKICAKQEAgLTUzNDksNyArNTMzNSw3IEBACiAgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgogIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCiAgCi1AQCAtMTY3NDksOSArMTc0NTIsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCitAQCAtMTY3NTAsOSArMTc0NTMsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCiAgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCiAgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwogIApAQCAtNTM1OSw3ICs1MzQ1LDcgQEAKICAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scwogIAotQEAgLTE2NzY3LDYgKzE3NDY3LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKK0BAIC0xNjc2OCw2ICsxNzQ2OCw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCiAgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KICBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwogIApAQCAtNTM2OSw3ICs1MzU1LDcgQEAKICAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KICBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKICAKLUBAIC0xNjc5OSwyMTAgKzE3NTAyLDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKK0BAIC0xNjgwMCwyMTAgKzE3NTAzLDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKICAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KICAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCiAgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwpAQCAtNTc0NCw3ICs1NzMwLDcgQEAKICAgIGNobW9kICt4ICIkb2ZpbGUiCiAgCiBkaWZmIC0tZ2l0IGEvZ3Byb2YvY29uZmlndXJlIGIvZ3Byb2YvY29uZmlndXJlCi1pbmRleCA2NzllMGRjZTc3Li5hYzRjMDE2YTYzIDEwMDc1NQoraW5kZXggNmI0M2JmMmIxOC4uMjQ1ZWU0OGJjMyAxMDA3NTUKIC0tLSBhL2dwcm9mL2NvbmZpZ3VyZQogKysrIGIvZ3Byb2YvY29uZmlndXJlCiBAQCAtNjMxLDggKzYzMSwxMSBAQCBPVE9PTApAQCAtNzY1NCw3ICs3NjQwLDcgQEAKICAgIGNobW9kICt4ICIkb2ZpbGUiCiAgCiBkaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlIGIvbGQvY29uZmlndXJlCi1pbmRleCBkN2Y2NmY4Y2RjLi40ZTcxNTExYmQxIDEwMDc1NQoraW5kZXggMGNjNmU4YTUwZi4uZGI4Yjk5ODcyMiAxMDA3NTUKIC0tLSBhL2xkL2NvbmZpZ3VyZQogKysrIGIvbGQvY29uZmlndXJlCiBAQCAtNjU1LDggKzY1NSwxMSBAQCBPVE9PTApAQCAtMTczMzYsNyArMTczMjIsNyBAQAogICMgVGhlc2UgZXhpc3QgZW50aXJlbHkgdG8gZm9vbCBhY2xvY2FsIHdoZW4gYm9vdHN0cmFwcGluZyBsaWJ0b29sLgogICMKIGRpZmYgLS1naXQgYS9vcGNvZGVzL2NvbmZpZ3VyZSBiL29wY29kZXMvY29uZmlndXJlCi1pbmRleCAxNzUzMGY1NGI5Li43OWIzOTYxMWMyIDEwMDc1NQoraW5kZXggNGYyOTg4NzA5OC4uMjEyN2QzOTI4OCAxMDA3NTUKIC0tLSBhL29wY29kZXMvY29uZmlndXJlCiArKysgYi9vcGNvZGVzL2NvbmZpZ3VyZQogQEAgLTY1MCw2ICs2NTAsOSBAQCBPVE9PTApAQCAtMTkyNDAsNyArMTkyMjYsNyBAQAogICAgY2htb2QgK3ggIiRvZmlsZSIKICAKIGRpZmYgLS1naXQgYS9vcGNvZGVzL2NvbmZpZ3VyZS5hYyBiL29wY29kZXMvY29uZmlndXJlLmFjCi1pbmRleCBhOWZiZmQ2MWYxLi5jNDM3ODBmNjRkIDEwMDY0NAoraW5kZXggYjA3ZjNmMzYyOS4uNWEzMmQ5YjFmYyAxMDA2NDQKIC0tLSBhL29wY29kZXMvY29uZmlndXJlLmFjCiArKysgYi9vcGNvZGVzL2NvbmZpZ3VyZS5hYwogQEAgLTE2Nyw3ICsxNjcsNyBAQCBjaGFuZ2VxdW90ZSgsKWRubApAQCAtMjExNTMsNSArMjExMzksNSBAQAogICAgY2htb2QgK3ggIiRvZmlsZSIKICAKIC0tIAotMi4xNC4wCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNy1BZGQtdGhlLWFybXY1ZS1hcmNoaXRlY3R1cmUtdG8tYmludXRpbHMucGF0Y2gKaW5kZXggODgwMTk2MC4uNGE1MTI3MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDctQWRkLXRoZS1hcm12NWUtYXJjaGl0ZWN0dXJlLXRvLWJpbnV0aWxzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyYjg3YWFkMTc0MWJjNDgxZGQwOTgyZjEwMGFkNWVhN2Y5MzdiYjYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA2OTc5MDMyNTZlMDk1MzM3NzhiYWE4YWY2NjQwMmM0NGQ3MDIxOWQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTozNzoxMCArMDAwMAogU3ViamVjdDogW1BBVENIIDA3LzE1XSBBZGQgdGhlIGFybXY1ZSBhcmNoaXRlY3R1cmUgdG8gYmludXRpbHMKQEAgLTE5LDEwICsxOSwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCiBkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZy90Yy1hcm0uYyBiL2dhcy9jb25maWcvdGMtYXJtLmMKLWluZGV4IGE4ODVlZmU0ZmMuLjczNWVhYTc0NDcgMTAwNjQ0CitpbmRleCBlYzUwNDIwNTE4Li5hMjVkMTcyMWFmIDEwMDY0NAogLS0tIGEvZ2FzL2NvbmZpZy90Yy1hcm0uYwogKysrIGIvZ2FzL2NvbmZpZy90Yy1hcm0uYwotQEAgLTI1OTkwLDYgKzI1OTkwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcm1fYXJjaF9vcHRpb25fdGFibGUgYXJtX2FyY2hzW10gPQorQEAgLTI2MTk1LDYgKzI2MTk1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcm1fYXJjaF9vcHRpb25fdGFibGUgYXJtX2FyY2hzW10gPQogICAgQVJNX0FSQ0hfT1BUICgiYXJtdjR0IiwJQVJNX0FSQ0hfVjRULAkgRlBVX0FSQ0hfRlBBKSwKICAgIEFSTV9BUkNIX09QVCAoImFybXY0dHhtIiwJQVJNX0FSQ0hfVjRUeE0sCSBGUFVfQVJDSF9GUEEpLAogICAgQVJNX0FSQ0hfT1BUICgiYXJtdjUiLAlBUk1fQVJDSF9WNSwJIEZQVV9BUkNIX1ZGUCksCkBAIC0zMSw1ICszMSw1IEBACiAgICBBUk1fQVJDSF9PUFQgKCJhcm12NXR4bSIsCUFSTV9BUkNIX1Y1VHhNLAkgRlBVX0FSQ0hfVkZQKSwKICAgIEFSTV9BUkNIX09QVCAoImFybXY1dGUiLAlBUk1fQVJDSF9WNVRFLAkgRlBVX0FSQ0hfVkZQKSwKIC0tIAotMi4xNC4wCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA4LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaAppbmRleCAzMGEyMmI1Li45MzliZTY3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMzMxNDQzYTg3YTMxZWM1MDRlNTY1MmZjMDk5ZDkxMjlhOWE0ZGViOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNjIyZDY2NjM0ZWIyZTUwOWQ0MTI2ZjViZGNhYjI2ZGUzNjcyNDFhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6Mzk6MDEgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAwOC8xNV0gZG9uJ3QgbGV0IHRoZSBkaXN0cm8gY29tcGlsZXIgcG9pbnQgdG8gdGhlIHdyb25nCkBAIC0xNyw3ICsxNyw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvbGliaWJlcnR5L01ha2VmaWxlLmluIGIvbGliaWJlcnR5L01ha2VmaWxlLmluCi1pbmRleCAyNWNmYTI5YWQ1Li5jZTY3YTcxMGUzIDEwMDY0NAoraW5kZXggZWQxYjMzNGMzNi4uZDRmZmQ4YjU3YiAxMDA2NDQKIC0tLSBhL2xpYmliZXJ0eS9NYWtlZmlsZS5pbgogKysrIGIvbGliaWJlcnR5L01ha2VmaWxlLmluCiBAQCAtMzY0LDcgKzM2NCw4IEBAIGluc3RhbGwtc3RyaXA6IGluc3RhbGwKQEAgLTMxLDUgKzMxLDUgQEAKICAJaWYgdGVzdCAtbiAiJHt0YXJnZXRfaGVhZGVyX2Rpcn0iOyB0aGVuIFwKICAJCSR7bWtpbnN0YWxsZGlyc30gJChERVNURElSKSQobGliZGlyKS8kKE1VTFRJT1NESVIpOyBcCiAtLSAKLTIuMTQuMAorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOS13YXJuLWZvci11c2VzLW9mLXN5c3RlbS1kaXJlY3Rvcmllcy13aGVuLWNyb3NzLWxpbmtpLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2gKaW5kZXggZTBlMjU3OC4uZTc1MTA0NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDBhNGFmZGNmMDcwMGVmZDQ1OTYzNTY4ZTJkMDA0OTEyN2NkZjQ0MzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDI3ZTM4ZWU5MmMyNGZjYTg2YjFjM2Y2ZWYxNTZhMTg5MmRkMDZiZmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogRnJpLCAxNSBKYW4gMjAxNiAwNjozMTowOSArMDAwMAogU3ViamVjdDogW1BBVENIIDA5LzE1XSB3YXJuIGZvciB1c2VzIG9mIHN5c3RlbSBkaXJlY3RvcmllcyB3aGVuIGNyb3NzIGxpbmtpbmcKQEAgLTc3LDcgKzc3LDcgQEAKICAjdW5kZWYgRVhUUkFfU0hMSUJfRVhURU5TSU9OCiAgCiBkaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlIGIvbGQvY29uZmlndXJlCi1pbmRleCA0ZTcxNTExYmQxLi43MWM2YWQxZmQxIDEwMDc1NQoraW5kZXggZGI4Yjk5ODcyMi4uNDg5ZWFkNWMxMyAxMDA3NTUKIC0tLSBhL2xkL2NvbmZpZ3VyZQogKysrIGIvbGQvY29uZmlndXJlCiBAQCAtNzg5LDYgKzc4OSw3IEBAIHdpdGhfbGliX3BhdGgKQEAgLTExOCw3ICsxMTgsNyBAQAogIGlmIHRlc3QgIiR7ZW5hYmxlX2dvbGQrc2V0fSIgPSBzZXQ7IHRoZW4gOgogICAgZW5hYmxldmFsPSRlbmFibGVfZ29sZDsgY2FzZSAiJHtlbmFibGV2YWx9IiBpbgogZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZS5hYyBiL2xkL2NvbmZpZ3VyZS5hYwotaW5kZXggMDAwODBmODVmZC4uM2FhOThlMzdmYiAxMDA2NDQKK2luZGV4IGJhZGExYjUwYjAuLmQwNzRhMzgyMGIgMTAwNjQ0CiAtLS0gYS9sZC9jb25maWd1cmUuYWMKICsrKyBiL2xkL2NvbmZpZ3VyZS5hYwogQEAgLTk1LDYgKzk1LDE2IEBAIEFDX1NVQlNUKHVzZV9zeXNyb290KQpAQCAtMTM5LDEwICsxMzksMTAgQEAKICBkbmwgImluc3RhbGxfYXNfZGVmYXVsdCIgaXMgc2V0IHRvIGZhbHNlIGlmIGdvbGQgaXMgdGhlIGRlZmF1bHQgbGlua2VyLgogIGRubCAiaW5zdGFsbGVkX2xpbmtlciIgaXMgdGhlIGluc3RhbGxlZCBCRkQgbGlua2VyIG5hbWUuCiBkaWZmIC0tZ2l0IGEvbGQvbGQuaCBiL2xkL2xkLmgKLWluZGV4IGM2ZmExMjQ3ZjAuLjAxYzM3MzQ5OGYgMTAwNjQ0CitpbmRleCBiYTkxNGI5MjFlLi45ZGYxN2RhYjZjIDEwMDY0NAogLS0tIGEvbGQvbGQuaAogKysrIGIvbGQvbGQuaAotQEAgLTE3NCw2ICsxNzQsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QKK0BAIC0xODAsNiArMTgwLDE0IEBAIHR5cGVkZWYgc3RydWN0CiAgICAgICBpbiB0aGUgbGlua2VyIHNjcmlwdC4gICovCiAgICBiZmRfYm9vbGVhbiBmb3JjZV9ncm91cF9hbGxvY2F0aW9uOwogIApAQCAtMTU4LDEwICsxNTgsMTAgQEAKICAgIGVudW0gZW5kaWFuX2VudW0gZW5kaWFuOwogIAogZGlmZiAtLWdpdCBhL2xkL2xkLnRleGluZm8gYi9sZC9sZC50ZXhpbmZvCi1pbmRleCBlYmU3ZTdiN2JkLi4zM2FhMmM2MmZhIDEwMDY0NAoraW5kZXggYzg5OTE1ZjFhYS4uZGY0MzA4MzdlMiAxMDA2NDQKIC0tLSBhL2xkL2xkLnRleGluZm8KICsrKyBiL2xkL2xkLnRleGluZm8KLUBAIC0yNDgwLDYgKzI0ODAsMTggQEAgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBvcmlnaW5hbCBsaW5rZWQgZmlsZSBkb2VzIG5vdCBjaGFuZ2UuCitAQCAtMjQ5OCw2ICsyNDk4LDE4IEBAIHN0cmluZyBpZGVudGlmeWluZyB0aGUgb3JpZ2luYWwgbGlua2VkIGZpbGUgZG9lcyBub3QgY2hhbmdlLgogIAogIFBhc3NpbmcgQGNvZGV7bm9uZX0gZm9yIEB2YXJ7c3R5bGV9IGRpc2FibGVzIHRoZSBzZXR0aW5nIGZyb20gYW55CiAgQGNvZGV7LS1idWlsZC1pZH0gb3B0aW9ucyBlYXJsaWVyIG9uIHRoZSBjb21tYW5kIGxpbmUuCkBAIC0xODEsNyArMTgxLDcgQEAKICAKICBAYyBtYW4gZW5kCiBkaWZmIC0tZ2l0IGEvbGQvbGRmaWxlLmMgYi9sZC9sZGZpbGUuYwotaW5kZXggM2IzN2EwYTNlMi4uNWM4NWIwMTg0OSAxMDA2NDQKK2luZGV4IDY1MzJhNTdkOTYuLmY5NDNmMGIyZTUgMTAwNjQ0CiAtLS0gYS9sZC9sZGZpbGUuYwogKysrIGIvbGQvbGRmaWxlLmMKIEBAIC0xMTYsNiArMTE2LDIzIEBAIGxkZmlsZV9hZGRfbGlicmFyeV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBiZmRfYm9vbGVhbiBjbWRsaW5lKQpAQCAtMjA5LDcgKzIwOSw3IEBACiAgCiAgLyogVHJ5IHRvIG9wZW4gYSBCRkQgZm9yIGEgbGFuZ19pbnB1dF9zdGF0ZW1lbnQuICAqLwogZGlmZiAtLWdpdCBhL2xkL2xkbGV4LmggYi9sZC9sZGxleC5oCi1pbmRleCA1YWE3ZjZiYzNlLi5jYjY1NWUwMzk5IDEwMDY0NAoraW5kZXggMTQwZWQxZDlkYS4uOTk2NWNiYzA0ZiAxMDA2NDQKIC0tLSBhL2xkL2xkbGV4LmgKICsrKyBiL2xkL2xkbGV4LmgKIEBAIC0xNDcsNiArMTQ3LDggQEAgZW51bSBvcHRpb25fdmFsdWVzCkBAIC0yMjIsNyArMjIyLDcgQEAKICAKICAvKiBUaGUgaW5pdGlhbCBwYXJzZXIgc3RhdGVzLiAgKi8KIGRpZmYgLS1naXQgYS9sZC9sZG1haW4uYyBiL2xkL2xkbWFpbi5jCi1pbmRleCAyYjA5ZjIwNDEzLi44OWUyYTNhODA1IDEwMDY0NAoraW5kZXggYzQ3M2VkMjRjMy4uYWRhZTBiNDYxMCAxMDA2NDQKIC0tLSBhL2xkL2xkbWFpbi5jCiArKysgYi9sZC9sZG1haW4uYwogQEAgLTI2MSw2ICsyNjEsOCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCkBAIC0yMzUsNyArMjM1LDcgQEAKICAgIC8qIFdlIGluaXRpYWxpemUgREVNQU5HTElORyBiYXNlZCBvbiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKICAgICAgIENPTExFQ1RfTk9fREVNQU5HTEUuICBUaGUgZ2NjIGNvbGxlY3QyIHByb2dyYW0gd2lsbCBkZW1hbmdsZSB0aGUKIGRpZmYgLS1naXQgYS9sZC9sZXhzdXAuYyBiL2xkL2xleHN1cC5jCi1pbmRleCBlZmZhMjc3YjE2Li5lNDkyOTYwN2U5IDEwMDY0NAoraW5kZXggZjIxOTE2MDJkNC4uYmNjYjNiZGVlZiAxMDA2NDQKIC0tLSBhL2xkL2xleHN1cC5jCiArKysgYi9sZC9sZXhzdXAuYwogQEAgLTUzOCw2ICs1MzgsMTQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBsZF9vcHRpb24gbGRfb3B0aW9uc1tdID0KQEAgLTI2OSw1ICsyNjksNSBAQAogICAgICB9CiAgCiAtLSAKLTIuMTQuMAorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaAppbmRleCA0OTYyNDJlLi4zM2RmZmY5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTAtRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEwLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA4OGZhYzA4ZjFjNDcyYzYxMmYzODFjYmI5NDA4NzU2ZjJmNThiNGZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlMjA1YWUwNWM0MWE4Y2M4ZDQ3NzA4ZjBhM2I2Zjc0MGUyYmYyNTI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTo0MjozOCArMDAwMAogU3ViamVjdDogW1BBVENIIDEwLzE1XSBGaXggcnBhdGggaW4gbGlidG9vbCB3aGVuIHN5c3Jvb3QgaXMgZW5hYmxlZApAQCAtNDgsNSArNDgsNSBAQAogIAkgICAgaWYgdGVzdCAteiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCiAgCSAgICAgIGhhcmRjb2RlX2xpYmRpcnM9IiRsaWJkaXIiCiAtLSAKLTIuMTQuMAorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMS1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMS1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaAppbmRleCBhYzg3YTJkLi44MGZjYmMxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTEtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDExLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA0OTc2NjBiZGJlYjY3ODg3ODY1NTNhNWQ3MzMxMDVmN2Y4OThkYzYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3OTc4YzEyOTkwMjEwMzNjMzVjMjljOTRlMDk5NzIzNWY3ZWRlMjQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTo0NDoxNCArMDAwMAogU3ViamVjdDogW1BBVENIIDExLzE1XSBDaGFuZ2UgZGVmYXVsdCBlbXVsYXRpb24gZm9yIG1pcHM2NCotKi1saW51eApAQCAtMTQsMTAgKzE0LDEwIEBACiAgMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9iZmQvY29uZmlnLmJmZCBiL2JmZC9jb25maWcuYmZkCi1pbmRleCBkYzI0YWFiYWQ1Li40NTExMDI0ZjIyIDEwMDY0NAoraW5kZXggZjA0YTk5M2YwNi4uODc3N2Y5NmJkMiAxMDA2NDQKIC0tLSBhL2JmZC9jb25maWcuYmZkCiArKysgYi9iZmQvY29uZmlnLmJmZAotQEAgLTExODYsMTIgKzExODYsMTIgQEAgY2FzZSAiJHt0YXJnfSIgaW4KK0BAIC0xMTg5LDEyICsxMTg5LDEyIEBAIGNhc2UgIiR7dGFyZ30iIGluCiAgICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9sZV92ZWMgbWlwc19lbGY2NF9iZV92ZWMgbWlwc19lbGY2NF9sZV92ZWMgbWlwc19lY29mZl9iZV92ZWMgbWlwc19lY29mZl9sZV92ZWMiCiAgICAgIDs7CiAgICBtaXBzNjQqZWwtKi1saW51eCopCkBAIC0zNSwxMiArMzUsMTIgQEAKICAgIG1pcHMqZWwtKi1saW51eCopCiAgICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfdHJhZF9sZV92ZWMKIGRpZmYgLS1naXQgYS9sZC9jb25maWd1cmUudGd0IGIvbGQvY29uZmlndXJlLnRndAotaW5kZXggNDdjNzE5Y2QwNS4uZmU3YjkyMzhiMiAxMDA2NDQKK2luZGV4IDYxODNhODViM2QuLjFkNzg0NjU1OTAgMTAwNjQ0CiAtLS0gYS9sZC9jb25maWd1cmUudGd0CiArKysgYi9sZC9jb25maWd1cmUudGd0Ci1AQCAtNTMwLDExICs1MzAsMTEgQEAgbWlwcyplbC0qLXZ4d29ya3MqKQl0YXJnX2VtdWw9ZWxmMzJlbG1pcHZ4d29ya3MKK0BAIC01MzUsMTEgKzUzNSwxMSBAQCBtaXBzKmVsLSotdnh3b3JrcyopCXRhcmdfZW11bD1lbGYzMmVsbWlwdnh3b3JrcwogIG1pcHMqLSotdnh3b3JrcyopCXRhcmdfZW11bD1lbGYzMmVibWlwdnh3b3JrcwotIAkJICAgICAgICB0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmVsbWlwdnh3b3JrcyIgOzsKKyAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmVsbWlwdnh3b3JrcyIgOzsKICBtaXBzKi0qLXdpbmRpc3MpCXRhcmdfZW11bD1lbGYzMm1pcHN3aW5kaXNzIDs7CiAtbWlwczY0KmVsLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjMybHRzbWlwbjMyCiAtCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJidHNtaXBuMzIgZWxmMzJsdHNtaXAgZWxmMzJidHNtaXAgZWxmNjRsdHNtaXAgZWxmNjRidHNtaXAiCkBAIC01NSw1ICs1NSw1IEBACiAgbWlwcyplbC0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGYzMmx0c21pcAogIAkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyYnRzbWlwIGVsZjMybHRzbWlwbjMyIGVsZjY0bHRzbWlwIGVsZjMyYnRzbWlwbjMyIGVsZjY0YnRzbWlwIgogLS0gCi0yLjE0LjAKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTItQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMi1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoCmluZGV4IGRjNWU1ODAuLjFmZWZiNjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMi1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMi1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA4YzYwYTU1ZDM2Nzg1ODlkOTM3MzliZDI3ZmVjMjE2OTExZDgwOTY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAzYjQwYmY1ODQ2MTVmNzk0Yjg1ZmQ1MGQ0ZDBhNWMwYTFkMmVlN2JmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFN1biwgMTQgRmViIDIwMTYgMTc6MDY6MTkgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAxMi8xNV0gQWRkIHN1cHBvcnQgZm9yIE5ldGxvZ2ljIFhMUApAQCAtMzQsNyArMzQsNyBAQAogIDE0IGZpbGVzIGNoYW5nZWQsIDYxIGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYmZkL2FvdXR4LmggYi9iZmQvYW91dHguaAotaW5kZXggM2QzOGZkYTE0Yi4uMGFlYzQ5YmJiMyAxMDA2NDQKK2luZGV4IGVlYzljNGFkMmEuLjNiZjBhNzFlNjMgMTAwNjQ0CiAtLS0gYS9iZmQvYW91dHguaAogKysrIGIvYmZkL2FvdXR4LmgKIEBAIC04MTQsNiArODE0LDcgQEAgTkFNRSAoYW91dCwgbWFjaGluZV90eXBlKSAoZW51bSBiZmRfYXJjaGl0ZWN0dXJlIGFyY2gsCkBAIC00NiwzNCArNDYsMzQgQEAKICAJICBhcmNoX2ZsYWdzID0gTV9NSVBTMjsKICAJICBicmVhazsKIGRpZmYgLS1naXQgYS9iZmQvYXJjaHVyZXMuYyBiL2JmZC9hcmNodXJlcy5jCi1pbmRleCA0MzNiOTVmYTA4Li4wNjNiNzk0M2ExIDEwMDY0NAoraW5kZXggZTgzYzU3YTJmMy4uMzAxNmVhMWJhZSAxMDA2NDQKIC0tLSBhL2JmZC9hcmNodXJlcy5jCiArKysgYi9iZmQvYXJjaHVyZXMuYwogQEAgLTIwMSw2ICsyMDEsNyBAQCBERVNDUklQVElPTgotIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNfb2N0ZW9uMyAgICAgICAgICA2NTAzCi0gLiNkZWZpbmUgYmZkX21hY2hfbWlwc194bHIgICAgICAgICAgICAgIDg4NzY4MiAgIHsqIGRlY2ltYWwgJ1hMUicgICp9Ci0gLiNkZWZpbmUgYmZkX21hY2hfbWlwc19pbnRlcmFwdGl2X21yMiAgIDczNjU1MCAgIHsqIGRlY2ltYWwgJ0lBMicgICp9Ci0rLiNkZWZpbmUgYmZkX21hY2hfbWlwc194bHAgICAgICAgICAgICAgIDg4NzY4MCAgIHsqIGRlY2ltYWwgJ1hMUCcgICp9Ci0gLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMyICAgICAgICAgICAgIDMyCi0gLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjIgICAgICAgICAgIDMzCi0gLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjMgICAgICAgICAgIDM0CisgLiNkZWZpbmUgYmZkX21hY2hfbWlwc19vY3Rlb24zCQk2NTAzCisgLiNkZWZpbmUgYmZkX21hY2hfbWlwc194bHIJCTg4NzY4MgkgeyogZGVjaW1hbCAnWExSJy4gICp9CisgLiNkZWZpbmUgYmZkX21hY2hfbWlwc19pbnRlcmFwdGl2X21yMgk3MzY1NTAJIHsqIGRlY2ltYWwgJ0lBMicuICAqfQorKy4jZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxwICAgICAgICAgICAgICA4ODc2ODAgICB7KiBkZWNpbWFsICdYTFAnLiAgKn0KKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzIJCTMyCisgLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjIJCTMzCisgLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjMJCTM0CiBkaWZmIC0tZ2l0IGEvYmZkL2JmZC1pbjIuaCBiL2JmZC9iZmQtaW4yLmgKLWluZGV4IGQxMjZhZWQwODYuLjJiNzUzYjNhOTMgMTAwNjQ0CitpbmRleCA0Mjk5MWU3ODQ4Li4yN2FiYzVkNWE4IDEwMDY0NAogLS0tIGEvYmZkL2JmZC1pbjIuaAogKysrIGIvYmZkL2JmZC1pbjIuaAotQEAgLTIwNjAsNiArMjA2MCw3IEBAIGVudW0gYmZkX2FyY2hpdGVjdHVyZQorQEAgLTIwNjIsNiArMjA2Miw3IEBAIGVudW0gYmZkX2FyY2hpdGVjdHVyZQogICNkZWZpbmUgYmZkX21hY2hfbWlwc19vY3Rlb24zICAgICAgICAgIDY1MDMKLSAjZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxyICAgICAgICAgICAgICA4ODc2ODIgICAvKiBkZWNpbWFsICdYTFInICAqLwotICNkZWZpbmUgYmZkX21hY2hfbWlwc19pbnRlcmFwdGl2X21yMiAgIDczNjU1MCAgIC8qIGRlY2ltYWwgJ0lBMicgICovCi0rI2RlZmluZSBiZmRfbWFjaF9taXBzX3hscCAgICAgICAgICAgICAgODg3NjgwICAgLyogZGVjaW1hbCAnWExQJyAgKi8KKyAjZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxyICAgICAgICAgICAgICA4ODc2ODIgICAvKiBkZWNpbWFsICdYTFInLiAgKi8KKyAjZGVmaW5lIGJmZF9tYWNoX21pcHNfaW50ZXJhcHRpdl9tcjIgICA3MzY1NTAgICAvKiBkZWNpbWFsICdJQTInLiAgKi8KKysjZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxwICAgICAgICAgICAgICA4ODc2ODAgICAvKiBkZWNpbWFsICdYTFAnLiAgKi8KICAjZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMiAgICAgICAgICAgICAzMgogICNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjIgICAgICAgICAgIDMzCiAgI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMyAgICAgICAgICAgMzQKIGRpZmYgLS1naXQgYS9iZmQvY29uZmlnLmJmZCBiL2JmZC9jb25maWcuYmZkCi1pbmRleCA0NTExMDI0ZjIyLi5mMGY5MDcyZjEwIDEwMDY0NAoraW5kZXggODc3N2Y5NmJkMi4uN2I4MGJkYThjOSAxMDA2NDQKIC0tLSBhL2JmZC9jb25maWcuYmZkCiArKysgYi9iZmQvY29uZmlnLmJmZAotQEAgLTExNjksNiArMTE2OSwxMSBAQCBjYXNlICIke3Rhcmd9IiBpbgorQEAgLTExNzIsNiArMTE3MiwxMSBAQCBjYXNlICIke3Rhcmd9IiBpbgogICAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX2xlX3ZlYwogICAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfYmVfdmVjIG1pcHNfZWxmNjRfYmVfdmVjIG1pcHNfZWxmNjRfbGVfdmVjIgogICAgICA7OwpAQCAtODYsNyArODYsNyBAQAogICAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX2JlX3ZlYwogICAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbGVfdmVjIG1pcHNfZWxmNjRfYmVfdmVjIG1pcHNfZWxmNjRfbGVfdmVjIgogZGlmZiAtLWdpdCBhL2JmZC9jcHUtbWlwcy5jIGIvYmZkL2NwdS1taXBzLmMKLWluZGV4IDI0OTMwOTRiZWYuLjgzNzVkMWFlOTYgMTAwNjQ0CitpbmRleCBjYjUwYzY0MzcxLi4yYjlkMWQ2ZWNmIDEwMDY0NAogLS0tIGEvYmZkL2NwdS1taXBzLmMKICsrKyBiL2JmZC9jcHUtbWlwcy5jCiBAQCAtMTA1LDcgKzEwNSw4IEBAIGVudW0KQEAgLTEwMCw3ICsxMDAsNyBAQAogIAogICNkZWZpbmUgTk4oaW5kZXgpICgmYXJjaF9pbmZvX3N0cnVjdFsoaW5kZXgpICsgMV0pCiBAQCAtMTU4LDcgKzE1OSw4IEBAIHN0YXRpYyBjb25zdCBiZmRfYXJjaF9pbmZvX3R5cGUgYXJjaF9pbmZvX3N0cnVjdFtdID0KLSAgIE4gKDY0LCA2NCwgYmZkX21hY2hfbWlwc194bHIsICJtaXBzOnhsciIsICAgICAgIEZBTFNFLCBOTihJX3hscikpLAorICAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX3hsciwgIm1pcHM6eGxyIiwJICBGQUxTRSwgTk4oSV94bHIpKSwKICAgIE4gKDMyLCAzMiwgYmZkX21hY2hfbWlwc19pbnRlcmFwdGl2X21yMiwgIm1pcHM6aW50ZXJhcHRpdi1tcjIiLCBGQUxTRSwKICAgICAgIE5OKElfaW50ZXJhcHRpdl9tcjIpKSwKIC0gIE4gKDY0LCA2NCwgYmZkX21hY2hfbWlwc19taWNyb21pcHMsIm1pcHM6bWljcm9taXBzIixGQUxTRSwwKQpAQCAtMTEwLDEwICsxMTAsMTAgQEAKICAKICAvKiBUaGUgZGVmYXVsdCBhcmNoaXRlY3R1cmUgaXMgbWlwczozMDAwLCBidXQgd2l0aCBhIG1hY2hpbmUgbnVtYmVyIG9mCiBkaWZmIC0tZ2l0IGEvYmZkL2VsZnh4LW1pcHMuYyBiL2JmZC9lbGZ4eC1taXBzLmMKLWluZGV4IGZkZGY2OGM4MTYuLjM1NGM4NWQwMGIgMTAwNjQ0CitpbmRleCAyODU0MDEzNjdkLi4xNGViYjVmMTc1IDEwMDY0NAogLS0tIGEvYmZkL2VsZnh4LW1pcHMuYwogKysrIGIvYmZkL2VsZnh4LW1pcHMuYwotQEAgLTY3OTYsNiArNjc5Niw5IEBAIF9iZmRfZWxmX21pcHNfbWFjaCAoZmxhZ3dvcmQgZmxhZ3MpCitAQCAtNjgwNiw2ICs2ODA2LDkgQEAgX2JmZF9lbGZfbWlwc19tYWNoIChmbGFnd29yZCBmbGFncykKICAgICAgY2FzZSBFX01JUFNfTUFDSF9JQU1SMjoKICAgICAgICByZXR1cm4gYmZkX21hY2hfbWlwc19pbnRlcmFwdGl2X21yMjsKICAKQEAgLTEyMyw3ICsxMjMsNyBAQAogICAgICBkZWZhdWx0OgogICAgICAgIHN3aXRjaCAoZmxhZ3MgJiBFRl9NSVBTX0FSQ0gpCiAgCXsKLUBAIC0xMTk1Niw2ICsxMTk1OSwxMCBAQCBtaXBzX3NldF9pc2FfZmxhZ3MgKGJmZCAqYWJmZCkKK0BAIC0xMTk2Myw2ICsxMTk2NiwxMCBAQCBtaXBzX3NldF9pc2FfZmxhZ3MgKGJmZCAqYWJmZCkKICAgICAgICB2YWwgPSBFX01JUFNfQVJDSF82NFIyIHwgRV9NSVBTX01BQ0hfT0NURU9OMjsKICAgICAgICBicmVhazsKICAKQEAgLTEzNCw3ICsxMzQsNyBAQAogICAgICBjYXNlIGJmZF9tYWNoX21pcHNpc2EzMjoKICAgICAgICB2YWwgPSBFX01JUFNfQVJDSF8zMjsKICAgICAgICBicmVhazsKLUBAIC0xMzk4OSw2ICsxMzk5Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWlwc19tYWNoX2V4dGVuc2lvbiBtaXBzX21hY2hfZXh0ZW5zaW9uc1tdID0KK0BAIC0xMzkzNiw2ICsxMzk0Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWlwc19tYWNoX2V4dGVuc2lvbiBtaXBzX21hY2hfZXh0ZW5zaW9uc1tdID0KICAgIHsgYmZkX21hY2hfbWlwc19vY3Rlb25wLCBiZmRfbWFjaF9taXBzX29jdGVvbiB9LAogICAgeyBiZmRfbWFjaF9taXBzX29jdGVvbiwgYmZkX21hY2hfbWlwc2lzYTY0cjIgfSwKICAgIHsgYmZkX21hY2hfbWlwc19sb29uZ3Nvbl8zYSwgYmZkX21hY2hfbWlwc2lzYTY0cjIgfSwKQEAgLTE0MywxMCArMTQzLDEwIEBACiAgICAvKiBNSVBTNjQgZXh0ZW5zaW9ucy4gICovCiAgICB7IGJmZF9tYWNoX21pcHNpc2E2NHIyLCBiZmRfbWFjaF9taXBzaXNhNjQgfSwKIGRpZmYgLS1naXQgYS9iaW51dGlscy9yZWFkZWxmLmMgYi9iaW51dGlscy9yZWFkZWxmLmMKLWluZGV4IDJiMTVmMGYyY2IuLjA5Mjc0NDcwOGUgMTAwNjQ0CitpbmRleCBhZTFjZGE5YTdiLi5mZWQwMzg3YTk0IDEwMDY0NAogLS0tIGEvYmludXRpbHMvcmVhZGVsZi5jCiArKysgYi9iaW51dGlscy9yZWFkZWxmLmMKLUBAIC0zMzM1LDYgKzMzMzUsNyBAQCBnZXRfbWFjaGluZV9mbGFncyAodW5zaWduZWQgZV9mbGFncywgdW5zaWduZWQgZV9tYWNoaW5lKQorQEAgLTMzNzAsNiArMzM3MCw3IEBAIGdldF9tYWNoaW5lX2ZsYWdzIChGaWxlZGF0YSAqIGZpbGVkYXRhLCB1bnNpZ25lZCBlX2ZsYWdzLCB1bnNpZ25lZCBlX21hY2hpbmUpCiAgCSAgICBjYXNlIEVfTUlQU19NQUNIX09DVEVPTjM6IHN0cmNhdCAoYnVmLCAiLCBvY3Rlb24zIik7IGJyZWFrOwogIAkgICAgY2FzZSBFX01JUFNfTUFDSF9YTFI6ICBzdHJjYXQgKGJ1ZiwgIiwgeGxyIik7IGJyZWFrOwogIAkgICAgY2FzZSBFX01JUFNfTUFDSF9JQU1SMjogIHN0cmNhdCAoYnVmLCAiLCBpbnRlcmFwdGl2LW1yMiIpOyBicmVhazsKQEAgLTE1NSw3ICsxNTUsNyBAQAogIAkgICAgLyogV2Ugc2ltcGx5IGlnbm9yZSB0aGUgZmllbGQgaW4gdGhpcyBjYXNlIHRvIGF2b2lkIGNvbmZ1c2lvbjoKICAJICAgICAgIE1JUFMgRUxGIGRvZXMgbm90IHNwZWNpZnkgRUZfTUlQU19NQUNILCBpdCBpcyBhIEdOVQogZGlmZiAtLWdpdCBhL2dhcy9jb25maWcvdGMtbWlwcy5jIGIvZ2FzL2NvbmZpZy90Yy1taXBzLmMKLWluZGV4IDM4MDRkZjI5NTguLjk1NzZjOTg2ZGIgMTAwNjQ0CitpbmRleCBjMTM1MTMxYjU5Li5kOGZiZGE4ZTMxIDEwMDY0NAogLS0tIGEvZ2FzL2NvbmZpZy90Yy1taXBzLmMKICsrKyBiL2dhcy9jb25maWcvdGMtbWlwcy5jCiBAQCAtNTUyLDYgKzU1Miw3IEBAIHN0YXRpYyBpbnQgbWlwc18zMmJpdG1vZGUgPSAwOwpAQCAtMTc0LDcgKzE3NCw3IEBACiAgICAgKQogIAogIC8qIFdoZXRoZXIgdGhlIHByb2Nlc3NvciB1c2VzIGhhcmR3YXJlIGludGVybG9ja3MgdG8gcHJvdGVjdCByZWFkcwotQEAgLTE5NzM4LDcgKzE5NzQwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtaXBzX2NwdV9pbmZvIG1pcHNfY3B1X2luZm9fdGFibGVbXSA9CitAQCAtMTk3MzcsNyArMTk3MzksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1pcHNfY3B1X2luZm8gbWlwc19jcHVfaW5mb190YWJsZVtdID0KICAgIC8qIEJyb2FkY29tIFhMUC4KICAgICAgIFhMUCBpcyBtb3N0bHkgbGlrZSBYTFIsIHdpdGggdGhlIHByb21pbmVudCBleGNlcHRpb24gdGhhdCBpdCBpcwogICAgICAgTUlQUzY0UjIgcmF0aGVyIHRoYW4gTUlQUzY0LiAgKi8KQEAgLTE4NCw3ICsxODQsNyBAQAogICAgLyogTUlQUyA2NCBSZWxlYXNlIDYgKi8KICAgIHsgImk2NDAwIiwJICAgICAgMCwgQVNFX01TQSwJCUlTQV9NSVBTNjRSNiwgQ1BVX01JUFM2NFI2fSwKIGRpZmYgLS1naXQgYS9nYXMvY29uZmlndXJlIGIvZ2FzL2NvbmZpZ3VyZQotaW5kZXggODFkZDRjYmQ5Ny4uOTViZGYzYjE5YiAxMDA3NTUKK2luZGV4IGE0MGFjMjE0NGYuLjY1YTY5OTUyNDMgMTAwNzU1CiAtLS0gYS9nYXMvY29uZmlndXJlCiArKysgYi9nYXMvY29uZmlndXJlCiBAQCAtMTI5ODksNiArMTI5ODksOSBAQCBfQUNFT0YKQEAgLTE5OCw3ICsxOTgsNyBAQAogIAkgICAgbWlwc19jcHU9cjM5MDAKICAJICAgIDs7CiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9lbGYvbWlwcy5oIGIvaW5jbHVkZS9lbGYvbWlwcy5oCi1pbmRleCBhNGJlYTQzZmY4Li43M2Q5MDRlMjVmIDEwMDY0NAoraW5kZXggOWRlMGI0ZTE3NS4uNzRmYzRmN2U1NSAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvZWxmL21pcHMuaAogKysrIGIvaW5jbHVkZS9lbGYvbWlwcy5oCiBAQCAtMjkwLDYgKzI5MCw3IEBAIEVORF9SRUxPQ19OVU1CRVJTIChSX01JUFNfbWF4ZXh0KQpAQCAtMjEwLDcgKzIxMCw3IEBACiAgI2RlZmluZSBFX01JUFNfTUFDSF9PQ1RFT04zCTB4MDA4ZTAwMDAKICAjZGVmaW5lIEVfTUlQU19NQUNIXzU0MDAJMHgwMDkxMDAwMAogZGlmZiAtLWdpdCBhL2luY2x1ZGUvb3Bjb2RlL21pcHMuaCBiL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAotaW5kZXggY2VhZTllYzUwYS4uMjc2ZWUzYzZjMSAxMDA2NDQKK2luZGV4IDVlZWE3MmYxMzkuLjkwZjZkNTdlMTUgMTAwNjQ0CiAtLS0gYS9pbmNsdWRlL29wY29kZS9taXBzLmgKICsrKyBiL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAogQEAgLTEyNTksNiArMTI1OSw4IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbWlwc19pc2FfdGFibGVbXSA9IHsKQEAgLTI0MSwxMCArMjQxLDEwIEBACiAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICB9CiBkaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlLnRndCBiL2xkL2NvbmZpZ3VyZS50Z3QKLWluZGV4IGZlN2I5MjM4YjIuLjJhZGYxMDhiMTcgMTAwNjQ0CitpbmRleCAxZDc4NDY1NTkwLi4zMDdlNzg3YjY0IDEwMDY0NAogLS0tIGEvbGQvY29uZmlndXJlLnRndAogKysrIGIvbGQvY29uZmlndXJlLnRndAotQEAgLTUxNiw2ICs1MTYsOCBAQCBtaXBzKmVsLXNkZS1lbGYqIHwgbWlwcyplbC1tdGktZWxmKiB8IG1pcHMqZWwtaW1nLWVsZiopCitAQCAtNTIxLDYgKzUyMSw4IEBAIG1pcHMqZWwtc2RlLWVsZiogfCBtaXBzKmVsLW10aS1lbGYqIHwgbWlwcyplbC1pbWctZWxmKikKICBtaXBzKi1zZGUtZWxmKiB8IG1pcHMqLW10aS1lbGYqIHwgbWlwcyotaW1nLWVsZiopCiAgCQkJdGFyZ19lbXVsPWVsZjMyYnRzbWlwCiAgCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJsdHNtaXAgZWxmMzJidHNtaXBuMzIgZWxmNjRidHNtaXAgZWxmMzJsdHNtaXBuMzIgZWxmNjRsdHNtaXAiIDs7CkBAIC0yNTQsNyArMjU0LDcgQEAKICAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmxyNTkwMCIKICAJCQl0YXJnX2V4dHJhX2xpYnBhdGg9JHRhcmdfZXh0cmFfZW11bHMgOzsKIGRpZmYgLS1naXQgYS9vcGNvZGVzL21pcHMtZGlzLmMgYi9vcGNvZGVzL21pcHMtZGlzLmMKLWluZGV4IDQ1MTk1MDA3YzEuLjRhODBhMDVkMTkgMTAwNjQ0CitpbmRleCA5ODRmY2JiODAyLi45NWIxMDdkMjE2IDEwMDY0NAogLS0tIGEvb3Bjb2Rlcy9taXBzLWRpcy5jCiArKysgYi9vcGNvZGVzL21pcHMtZGlzLmMKIEBAIC02NTUsMTMgKzY1NSwxMSBAQCBjb25zdCBzdHJ1Y3QgbWlwc19hcmNoX2Nob2ljZSBtaXBzX2FyY2hfY2hvaWNlc1tdID0KQEAgLTI3Nyw3ICsyNzcsNyBAQAogICAgLyogVGhpcyBlbnRyeSwgbWlwczE2LCBpcyBoZXJlIG9ubHkgZm9yIElTQS9wcm9jZXNzb3Igc2VsZWN0aW9uOyBkbwogICAgICAgbm90IHByaW50IGl0cyBuYW1lLiAgKi8KIGRpZmYgLS1naXQgYS9vcGNvZGVzL21pcHMtb3BjLmMgYi9vcGNvZGVzL21pcHMtb3BjLmMKLWluZGV4IDE5ZmNhNDA4YzkuLmQwMjA2OWM1MjggMTAwNjQ0CitpbmRleCAxODBkNjEzYzkzLi42NWI3YjhjYzIzIDEwMDY0NAogLS0tIGEvb3Bjb2Rlcy9taXBzLW9wYy5jCiArKysgYi9vcGNvZGVzL21pcHMtb3BjLmMKIEBAIC0zMjgsNiArMzI4LDcgQEAgZGVjb2RlX21pcHNfb3BlcmFuZCAoY29uc3QgY2hhciAqcCkKQEAgLTM4OSw1ICszODksNSBAQAogIHsic3djMCIsCQkiRSxBKGIpIiwJMCwgICAgKGludCkgTV9TV0MwX0FCLAlJTlNOX01BQ1JPLAkJMCwJCUkxLAkJMCwJSU9DVHxJT0NUUHxJT0NUMnxJMzcgfSwKICB7InN3YzEiLAkJIlQsbyhiKSIsCTB4ZTQwMDAwMDAsIDB4ZmMwMDAwMDAsCVJEXzF8UkRfM3xTTXxGUF9TLAkwLAkJSTEsCQkwLAkwIH0sCiAtLSAKLTIuMTQuMAorMi4xNi4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMy1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMy1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaAppbmRleCAyNDczNzZiLi5jM2UxYjEzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEzLWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBlNDYyMDJiZWNhYjYyNWM2YzA4Y2FmOTFlMDhjY2JiYzFiZjc5OWM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAyN2VjMjJjYTNjZDU2Y2ZkZjA2MGQyZTFmNDE0YmVkY2UyNjliMzIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogWmhlbmh1YSBMdW8gPHpoZW5odWEubHVvQG54cC5jb20+CiBEYXRlOiBTYXQsIDExIEp1biAyMDE2IDIyOjA4OjI5IC0wNTAwCiBTdWJqZWN0OiBbUEFUQ0ggMTMvMTVdIGZpeCB0aGUgaW5jb3JyZWN0IGFzc2VtYmxpbmcgZm9yIHBwYyB3YWl0IG1uZW1vbmljCkBAIC0xMSwxMCArMTEsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9vcGNvZGVzL3BwYy1vcGMuYyBiL29wY29kZXMvcHBjLW9wYy5jCi1pbmRleCA0MjYyNjFhYjIxLi4wZDM1OTE2Y2RkIDEwMDY0NAoraW5kZXggYmIxN2YyNmMyZS4uZGJkZDc2MmI0ZSAxMDA2NDQKIC0tLSBhL29wY29kZXMvcHBjLW9wYy5jCiArKysgYi9vcGNvZGVzL3BwYy1vcGMuYwotQEAgLTQ4ODEsNyArNDg4MSw2IEBAIGNvbnN0IHN0cnVjdCBwb3dlcnBjX29wY29kZSBwb3dlcnBjX29wY29kZXNbXSA9IHsKK0BAIC01MzM4LDcgKzUzMzgsNiBAQCBjb25zdCBzdHJ1Y3QgcG93ZXJwY19vcGNvZGUgcG93ZXJwY19vcGNvZGVzW10gPSB7CiAgeyJsZGVweCIsCVgoMzEsMjkpLAlYX01BU0ssCSAgRTUwME1DfFBQQ0EyLCAwLAkJe1JULCBSQTAsIFJCfX0sCiAgCiAgeyJ3YWl0YXNlYyIsCVgoMzEsMzApLCAgICAgIFhSVFJBUkJfTUFTSywgUE9XRVI4LAlQT1dFUjksCQl7MH19LApAQCAtMjIsNyArMjIsNyBAQAogIAogIHsibHdlcHgiLAlYKDMxLDMxKSwJWF9NQVNLLAkgIEU1MDBNQ3xQUENBMiwgMCwJCXtSVCwgUkEwLCBSQn19LAogIAotQEAgLTQ5MzUsNyArNDkzNCw3IEBAIGNvbnN0IHN0cnVjdCBwb3dlcnBjX29wY29kZSBwb3dlcnBjX29wY29kZXNbXSA9IHsKK0BAIC01MzkyLDcgKzUzOTEsNyBAQCBjb25zdCBzdHJ1Y3QgcG93ZXJwY19vcGNvZGUgcG93ZXJwY19vcGNvZGVzW10gPSB7CiAgCiAgeyJ3YWl0cnN2IiwJWCgzMSw2Mil8KDE8PDIxKSwgMHhmZmZmZmZmZiwgRTUwME1DfFBQQ0EyLCAwLAkJezB9fSwKICB7IndhaXRpbXBsIiwJWCgzMSw2Mil8KDI8PDIxKSwgMHhmZmZmZmZmZiwgRTUwME1DfFBQQ0EyLCAwLAkJezB9fSwKQEAgLTMyLDUgKzMyLDUgQEAKICB7ImRjYnN0ZXAiLAlYUlQoMzEsNjMsMCksCVhSVF9NQVNLLCAgICBFNTAwTUN8UFBDQTIsIDAsCQl7UkEwLCBSQn19LAogIAogLS0gCi0yLjE0LjAKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2gKaW5kZXggNDJiMTA2NS4uY2YzNjkwZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE0LURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNC1EZXRlY3QtNjQtYml0LU1JUFMtdGFyZ2V0cy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYmYyMGQ1ODIzNjYyZDFmMmViNDdkZTJjZGZkMTczNjI3YTIwNWIxNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gN2RmYmQ2ODg5ZDg2OGEwOWQ2OTVkZDI3MzYxMDQ4NDhjMWE5YzljMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDMxIE1hciAyMDE3IDExOjQyOjAzIC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0ggMTQvMTVdIERldGVjdCA2NC1iaXQgTUlQUyB0YXJnZXRzCkBAIC0xNCw3ICsxNCw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL2dvbGQvY29uZmlndXJlLnRndCBiL2dvbGQvY29uZmlndXJlLnRndAotaW5kZXggM2Q2MzAyNzI5Ny4uYzFmOTJhMTM2MCAxMDA2NDQKK2luZGV4IDhhZWYyMmEzMTguLjcwMzAwMjZmZmEgMTAwNjQ0CiAtLS0gYS9nb2xkL2NvbmZpZ3VyZS50Z3QKICsrKyBiL2dvbGQvY29uZmlndXJlLnRndAogQEAgLTE1Myw2ICsxNTMsMTMgQEAgYWFyY2g2NCotKikKQEAgLTQ2LDUgKzQ2LDUgQEAKICAgdGFyZ19vYmo9bWlwcwogICB0YXJnX21hY2hpbmU9RU1fTUlQUwogLS0gCi0yLjE0LjAKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTUtc3luYy13aXRoLU9FLWxpYnRvb2wtY2hhbmdlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoCmluZGV4IDJjODkwMGMuLjhjOWZkMjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA5YjQ1NmEwZTRmMjg0ZmQ0MWFjMzY1OTUxNDRlZDQ0ZGM4MjQxMGVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAyOTg4MDRmNDMwOTM5ZDZjYzk0YjA5NzMyZWU5M2U2NGM1ZTZiZTE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIERhdGU6IE1vbiwgNiBNYXIgMjAxNyAyMzozMzoyNyAtMDgwMAogU3ViamVjdDogW1BBVENIIDE1LzE1XSBzeW5jIHdpdGggT0UgbGlidG9vbCBjaGFuZ2VzCkBAIC04NSw1ICs4NSw1IEBACiAgCWVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgogIAkgIGNhc2UgIiRmaW5hbGl6ZV9wZXJtX3JwYXRoICIgaW4KIC0tIAotMi4xNC4wCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlsc18yLjI5LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzXzIuMzAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4yOS4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzXzIuMzAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmlzb24vYmlzb24vbTQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jpc29uL2Jpc29uL200LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTM5ZGE1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmlzb24vYmlzb24vbTQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MTQgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSMKLSMgUGF0Y2ggbWFuYWdlZCBieSBodHRwOi8vd3d3Lm1uLWxvZ2lzdGlrLmRlL3Vuc3VwcG9ydGVkL3B4YTI1MC9wYXRjaGVyCi0jCi0KLUluZGV4OiBiaXNvbi0yLjQuMi9tNC9sY21lc3NhZ2UubTQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBiaXNvbi0yLjQuMi9tNC9sY21lc3NhZ2UubTQKLUBAIC0wLDAgKzEsMzIgQEAKLSsjIGxjbWVzc2FnZS5tNCBzZXJpYWwgMyAoZ2V0dGV4dC0wLjExLjMpCi0rZG5sIENvcHlyaWdodCAoQykgMTk5NS0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rZG5sCi0rZG5sIFRoaXMgZmlsZSBjYW4gY2FuIGJlIHVzZWQgaW4gcHJvamVjdHMgd2hpY2ggYXJlIG5vdCBhdmFpbGFibGUgdW5kZXIKLStkbmwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIG9yIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotK2RubCBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0Ci0rZG5sIGZ1bmN0aW9uYWxpdHkuCi0rZG5sIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCBjb2RlIG9mIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGlzIGNvdmVyZWQKLStkbmwgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCi0rZG5sIGdldHRleHQgcGFja2FnZSBwYWNrYWdlIGlzIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotK2RubCBUaGV5IGFyZSAqbm90KiBpbiB0aGUgcHVibGljIGRvbWFpbi4KLSsKLStkbmwgQXV0aG9yczoKLStkbmwgICBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMTk5NS4KLSsKLSsjIENoZWNrIHdoZXRoZXIgTENfTUVTU0FHRVMgaXMgYXZhaWxhYmxlIGluIDxsb2NhbGUuaD4uCi0rCi0rQUNfREVGVU4oW0FNX0xDX01FU1NBR0VTXSwKLStbCi0rICBBQ19DQUNIRV9DSEVDSyhbZm9yIExDX01FU1NBR0VTXSwgYW1fY3ZfdmFsX0xDX01FU1NBR0VTLAotKyAgICBbQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsb2NhbGUuaD5dLCBbcmV0dXJuIExDX01FU1NBR0VTXSwKLSsgICAgICAgYW1fY3ZfdmFsX0xDX01FU1NBR0VTPXllcywgYW1fY3ZfdmFsX0xDX01FU1NBR0VTPW5vKV0pCi0rICBpZiB0ZXN0ICRhbV9jdl92YWxfTENfTUVTU0FHRVMgPSB5ZXM7IHRoZW4KLSsgICAgQUNfREVGSU5FKEhBVkVfTENfTUVTU0FHRVMsIDEsCi0rICAgICAgW0RlZmluZSBpZiB5b3VyIDxsb2NhbGUuaD4gZmlsZSBkZWZpbmVzIExDX01FU1NBR0VTLl0pCi0rICBmaQotK10pCi1JbmRleDogYmlzb24tMi40LjIvbTQvdWludG1heF90Lm00Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgYmlzb24tMi40LjIvbTQvdWludG1heF90Lm00Ci1AQCAtMCwwICsxLDI5IEBACi0rIyB1aW50bWF4X3QubTQgc2VyaWFsIDYgKGdldHRleHQtMC4xMSkKLStkbmwgQ29weXJpZ2h0IChDKSAxOTk3LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBQYXVsIEVnZ2VydC4KLSsKLStBQ19QUkVSRVEoMi4xMykKLSsKLSsjIERlZmluZSB1aW50bWF4X3QgdG8gYHVuc2lnbmVkIGxvbmcnIG9yIGB1bnNpZ25lZCBsb25nIGxvbmcnCi0rIyBpZiA8aW50dHlwZXMuaD4gZG9lcyBub3QgZXhpc3QuCi0rCi0rQUNfREVGVU4oW2ptX0FDX1RZUEVfVUlOVE1BWF9UXSwKLStbCi0rICBBQ19SRVFVSVJFKFtqbV9BQ19IRUFERVJfSU5UVFlQRVNfSF0pCi0rICBBQ19SRVFVSVJFKFtqbV9BQ19IRUFERVJfU1RESU5UX0hdKQotKyAgaWYgdGVzdCAkam1fYWNfY3ZfaGVhZGVyX2ludHR5cGVzX2ggPSBubyAmJiB0ZXN0ICRqbV9hY19jdl9oZWFkZXJfc3RkaW50X2ggPSBubzsgdGhlbgotKyAgICBBQ19SRVFVSVJFKFtqbV9BQ19UWVBFX1VOU0lHTkVEX0xPTkdfTE9OR10pCi0rICAgIHRlc3QgJGFjX2N2X3R5cGVfdW5zaWduZWRfbG9uZ19sb25nID0geWVzIFwKLSsgICAgICAmJiBhY190eXBlPSd1bnNpZ25lZCBsb25nIGxvbmcnIFwKLSsgICAgICB8fCBhY190eXBlPSd1bnNpZ25lZCBsb25nJwotKyAgICBBQ19ERUZJTkVfVU5RVU9URUQodWludG1heF90LCAkYWNfdHlwZSwKLSsgIFtEZWZpbmUgdG8gdW5zaWduZWQgbG9uZyBvciB1bnNpZ25lZCBsb25nIGxvbmcKLSsgICBpZiA8aW50dHlwZXMuaD4gYW5kIDxzdGRpbnQuaD4gZG9uJ3QgZGVmaW5lLl0pCi0rICBmaQotK10pCi1JbmRleDogYmlzb24tMi40LjIvbTQvdWxvbmdsb25nLm00Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgYmlzb24tMi40LjIvbTQvdWxvbmdsb25nLm00Ci1AQCAtMCwwICsxLDIzIEBACi0rIyB1bG9uZ2xvbmcubTQgc2VyaWFsIDIgKGZpbGV1dGlscy00LjAuMzIsIGdldHRleHQtMC4xMC40MCkKLStkbmwgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBQYXVsIEVnZ2VydC4KLSsKLStBQ19ERUZVTihbam1fQUNfVFlQRV9VTlNJR05FRF9MT05HX0xPTkddLAotK1sKLSsgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgdW5zaWduZWQgbG9uZyBsb25nXSwgYWNfY3ZfdHlwZV91bnNpZ25lZF9sb25nX2xvbmcsCi0rICBbQUNfVFJZX0xJTksoW3Vuc2lnbmVkIGxvbmcgbG9uZyB1bGwgPSAxOyBpbnQgaSA9IDYzO10sCi0rICAgIFt1bnNpZ25lZCBsb25nIGxvbmcgdWxsbWF4ID0gKHVuc2lnbmVkIGxvbmcgbG9uZykgLTE7Ci0rICAgICByZXR1cm4gdWxsIDw8IGkgfCB1bGwgPj4gaSB8IHVsbG1heCAvIHVsbCB8IHVsbG1heCAlIHVsbDtdLAotKyAgICBhY19jdl90eXBlX3Vuc2lnbmVkX2xvbmdfbG9uZz15ZXMsCi0rICAgIGFjX2N2X3R5cGVfdW5zaWduZWRfbG9uZ19sb25nPW5vKV0pCi0rICBpZiB0ZXN0ICRhY19jdl90eXBlX3Vuc2lnbmVkX2xvbmdfbG9uZyA9IHllczsgdGhlbgotKyAgICBBQ19ERUZJTkUoSEFWRV9VTlNJR05FRF9MT05HX0xPTkcsIDEsCi0rICAgICAgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgdW5zaWduZWQgbG9uZyBsb25nIHR5cGUuXSkKLSsgIGZpCi0rXSkKLUluZGV4OiBiaXNvbi0yLjQuMi9tNC9pbnRkaXYwLm00Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgYmlzb24tMi40LjIvbTQvaW50ZGl2MC5tNAotQEAgLTAsMCArMSw3MiBAQAotKyMgaW50ZGl2MC5tNCBzZXJpYWwgMSAoZ2V0dGV4dC0wLjExLjMpCi0rZG5sIENvcHlyaWdodCAoQykgMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KLSsKLStBQ19ERUZVTihbZ3RfSU5URElWMF0sCi0rWwotKyAgQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pZG5sCi0rICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCi0rCi0rICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciBpbnRlZ2VyIGRpdmlzaW9uIGJ5IHplcm8gcmFpc2VzIFNJR0ZQRV0sCi0rICAgIGd0X2N2X2ludF9kaXZieXplcm9fc2lnZnBlLAotKyAgICBbCi0rICAgICAgQUNfVFJZX1JVTihbCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzaWduYWwuaD4KLSsKLStzdGF0aWMgdm9pZAotKyNpZmRlZiBfX2NwbHVzcGx1cwotK3NpZ2ZwZV9oYW5kbGVyIChpbnQgc2lnKQotKyNlbHNlCi0rc2lnZnBlX2hhbmRsZXIgKHNpZykgaW50IHNpZzsKLSsjZW5kaWYKLSt7Ci0rICAvKiBFeGl0IHdpdGggY29kZSAwIGlmIFNJR0ZQRSwgd2l0aCBjb2RlIDEgaWYgYW55IG90aGVyIHNpZ25hbC4gICovCi0rICBleGl0IChzaWcgIT0gU0lHRlBFKTsKLSt9Ci0rCi0raW50IHggPSAxOwotK2ludCB5ID0gMDsKLStpbnQgejsKLStpbnQgbmFuOwotKwotK2ludCBtYWluICgpCi0rewotKyAgc2lnbmFsIChTSUdGUEUsIHNpZ2ZwZV9oYW5kbGVyKTsKLSsvKiBJUklYIGFuZCBBSVggKHdoZW4gInhsYyAtcWNoZWNrIiBpcyB1c2VkKSB5aWVsZCBzaWduYWwgU0lHVFJBUC4gICovCi0rI2lmIChkZWZpbmVkIChfX3NnaSkgfHwgZGVmaW5lZCAoX0FJWCkpICYmIGRlZmluZWQgKFNJR1RSQVApCi0rICBzaWduYWwgKFNJR1RSQVAsIHNpZ2ZwZV9oYW5kbGVyKTsKLSsjZW5kaWYKLSsvKiBMaW51eC9TUEFSQyB5aWVsZHMgc2lnbmFsIFNJR0lMTC4gICovCi0rI2lmIGRlZmluZWQgKF9fc3BhcmNfXykgJiYgZGVmaW5lZCAoX19saW51eF9fKQotKyAgc2lnbmFsIChTSUdJTEwsIHNpZ2ZwZV9oYW5kbGVyKTsKLSsjZW5kaWYKLSsKLSsgIHogPSB4IC8geTsKLSsgIG5hbiA9IHkgLyB5OwotKyAgZXhpdCAoMSk7Ci0rfQotK10sIGd0X2N2X2ludF9kaXZieXplcm9fc2lnZnBlPXllcywgZ3RfY3ZfaW50X2RpdmJ5emVyb19zaWdmcGU9bm8sCi0rICAgICAgICBbCi0rICAgICAgICAgICMgR3Vlc3MgYmFzZWQgb24gdGhlIENQVS4KLSsgICAgICAgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgotKyAgICAgICAgICAgIGFscGhhKiB8IGlbMzQ1NjddODYgfCBtNjhrIHwgczM5MCopCi0rICAgICAgICAgICAgICBndF9jdl9pbnRfZGl2Ynl6ZXJvX3NpZ2ZwZT0iZ3Vlc3NpbmcgeWVzIjs7Ci0rICAgICAgICAgICAgKikKLSsgICAgICAgICAgICAgIGd0X2N2X2ludF9kaXZieXplcm9fc2lnZnBlPSJndWVzc2luZyBubyI7OwotKyAgICAgICAgICBlc2FjCi0rICAgICAgICBdKQotKyAgICBdKQotKyAgY2FzZSAiJGd0X2N2X2ludF9kaXZieXplcm9fc2lnZnBlIiBpbgotKyAgICAqeWVzKSB2YWx1ZT0xOzsKLSsgICAgKikgdmFsdWU9MDs7Ci0rICBlc2FjCi0rICBBQ19ERUZJTkVfVU5RVU9URUQoSU5URElWMF9SQUlTRVNfU0lHRlBFLCAkdmFsdWUsCi0rICAgIFtEZWZpbmUgaWYgaW50ZWdlciBkaXZpc2lvbiBieSB6ZXJvIHJhaXNlcyBzaWduYWwgU0lHRlBFLl0pCi0rXSkKLUluZGV4OiBiaXNvbi0yLjQuMi9tNC9nbGliLm00Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgYmlzb24tMi40LjIvbTQvZ2xpYi5tNAotQEAgLTAsMCArMSwxOTYgQEAKLSsjIENvbmZpZ3VyZSBwYXRocyBmb3IgR0xJQgotKyMgT3dlbiBUYXlsb3IgICAgIDk3LTExLTMKLSsKLStkbmwgQU1fUEFUSF9HTElCKFtNSU5JTVVNLVZFUlNJT04sIFtBQ1RJT04tSUYtRk9VTkQgWywgQUNUSU9OLUlGLU5PVC1GT1VORCBbLCBNT0RVTEVTXV1dXSkKLStkbmwgVGVzdCBmb3IgR0xJQiwgYW5kIGRlZmluZSBHTElCX0NGTEFHUyBhbmQgR0xJQl9MSUJTLCBpZiAiZ21vZHVsZSIgb3IgCi0rZG5sIGd0aHJlYWQgaXMgc3BlY2lmaWVkIGluIE1PRFVMRVMsIHBhc3MgdG8gZ2xpYi1jb25maWcKLStkbmwKLStBQ19ERUZVTihBTV9QQVRIX0dMSUIsCi0rW2RubCAKLStkbmwgR2V0IHRoZSBjZmxhZ3MgYW5kIGxpYnJhcmllcyBmcm9tIHRoZSBnbGliLWNvbmZpZyBzY3JpcHQKLStkbmwKLStBQ19BUkdfV0lUSChnbGliLXByZWZpeCxbICAtLXdpdGgtZ2xpYi1wcmVmaXg9UEZYICAgUHJlZml4IHdoZXJlIEdMSUIgaXMgaW5zdGFsbGVkIChvcHRpb25hbCldLAotKyAgICAgICAgICAgIGdsaWJfY29uZmlnX3ByZWZpeD0iJHdpdGh2YWwiLCBnbGliX2NvbmZpZ19wcmVmaXg9IiIpCi0rQUNfQVJHX1dJVEgoZ2xpYi1leGVjLXByZWZpeCxbICAtLXdpdGgtZ2xpYi1leGVjLXByZWZpeD1QRlggRXhlYyBwcmVmaXggd2hlcmUgR0xJQiBpcyBpbnN0YWxsZWQgKG9wdGlvbmFsKV0sCi0rICAgICAgICAgICAgZ2xpYl9jb25maWdfZXhlY19wcmVmaXg9IiR3aXRodmFsIiwgZ2xpYl9jb25maWdfZXhlY19wcmVmaXg9IiIpCi0rQUNfQVJHX0VOQUJMRShnbGlidGVzdCwgWyAgLS1kaXNhYmxlLWdsaWJ0ZXN0ICAgICAgIERvIG5vdCB0cnkgdG8gY29tcGlsZSBhbmQgcnVuIGEgdGVzdCBHTElCIHByb2dyYW1dLAotKwkJICAgICwgZW5hYmxlX2dsaWJ0ZXN0PXllcykKLSsKLSsgIGlmIHRlc3QgeCRnbGliX2NvbmZpZ19leGVjX3ByZWZpeCAhPSB4IDsgdGhlbgotKyAgICAgZ2xpYl9jb25maWdfYXJncz0iJGdsaWJfY29uZmlnX2FyZ3MgLS1leGVjLXByZWZpeD0kZ2xpYl9jb25maWdfZXhlY19wcmVmaXgiCi0rICAgICBpZiB0ZXN0IHgke0dMSUJfQ09ORklHK3NldH0gIT0geHNldCA7IHRoZW4KLSsgICAgICAgIEdMSUJfQ09ORklHPSRnbGliX2NvbmZpZ19leGVjX3ByZWZpeC9iaW4vZ2xpYi1jb25maWcKLSsgICAgIGZpCi0rICBmaQotKyAgaWYgdGVzdCB4JGdsaWJfY29uZmlnX3ByZWZpeCAhPSB4IDsgdGhlbgotKyAgICAgZ2xpYl9jb25maWdfYXJncz0iJGdsaWJfY29uZmlnX2FyZ3MgLS1wcmVmaXg9JGdsaWJfY29uZmlnX3ByZWZpeCIKLSsgICAgIGlmIHRlc3QgeCR7R0xJQl9DT05GSUcrc2V0fSAhPSB4c2V0IDsgdGhlbgotKyAgICAgICAgR0xJQl9DT05GSUc9JGdsaWJfY29uZmlnX3ByZWZpeC9iaW4vZ2xpYi1jb25maWcKLSsgICAgIGZpCi0rICBmaQotKwotKyAgZm9yIG1vZHVsZSBpbiAuICQ0Ci0rICBkbwotKyAgICAgIGNhc2UgIiRtb2R1bGUiIGluCi0rICAgICAgICAgZ21vZHVsZSkgCi0rICAgICAgICAgICAgIGdsaWJfY29uZmlnX2FyZ3M9IiRnbGliX2NvbmZpZ19hcmdzIGdtb2R1bGUiCi0rICAgICAgICAgOzsKLSsgICAgICAgICBndGhyZWFkKSAKLSsgICAgICAgICAgICAgZ2xpYl9jb25maWdfYXJncz0iJGdsaWJfY29uZmlnX2FyZ3MgZ3RocmVhZCIKLSsgICAgICAgICA7OwotKyAgICAgIGVzYWMKLSsgIGRvbmUKLSsKLSsgIEFDX1BBVEhfUFJPRyhHTElCX0NPTkZJRywgZ2xpYi1jb25maWcsIG5vKQotKyAgbWluX2dsaWJfdmVyc2lvbj1pZmVsc2UoWyQxXSwgLDAuOTkuNywkMSkKLSsgIEFDX01TR19DSEVDS0lORyhmb3IgR0xJQiAtIHZlcnNpb24gPj0gJG1pbl9nbGliX3ZlcnNpb24pCi0rICBub19nbGliPSIiCi0rICBpZiB0ZXN0ICIkR0xJQl9DT05GSUciID0gIm5vIiA7IHRoZW4KLSsgICAgbm9fZ2xpYj15ZXMKLSsgIGVsc2UKLSsgICAgR0xJQl9DRkxBR1M9YCRHTElCX0NPTkZJRyAkZ2xpYl9jb25maWdfYXJncyAtLWNmbGFnc2AKLSsgICAgR0xJQl9MSUJTPWAkR0xJQl9DT05GSUcgJGdsaWJfY29uZmlnX2FyZ3MgLS1saWJzYAotKyAgICBnbGliX2NvbmZpZ19tYWpvcl92ZXJzaW9uPWAkR0xJQl9DT05GSUcgJGdsaWJfY29uZmlnX2FyZ3MgLS12ZXJzaW9uIHwgXAotKyAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKS5cKFtbMC05XV0qXCkuXChbWzAtOV1dKlwpL1wxLydgCi0rICAgIGdsaWJfY29uZmlnX21pbm9yX3ZlcnNpb249YCRHTElCX0NPTkZJRyAkZ2xpYl9jb25maWdfYXJncyAtLXZlcnNpb24gfCBcCi0rICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpLlwoW1swLTldXSpcKS5cKFtbMC05XV0qXCkvXDIvJ2AKLSsgICAgZ2xpYl9jb25maWdfbWljcm9fdmVyc2lvbj1gJEdMSUJfQ09ORklHICRnbGliX2NvbmZpZ19hcmdzIC0tdmVyc2lvbiB8IFwKLSsgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXCkuXChbWzAtOV1dKlwpLlwoW1swLTldXSpcKS9cMy8nYAotKyAgICBpZiB0ZXN0ICJ4JGVuYWJsZV9nbGlidGVzdCIgPSAieHllcyIgOyB0aGVuCi0rICAgICAgYWNfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0rICAgICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKLSsgICAgICBDRkxBR1M9IiRDRkxBR1MgJEdMSUJfQ0ZMQUdTIgotKyAgICAgIExJQlM9IiRHTElCX0xJQlMgJExJQlMiCi0rZG5sCi0rZG5sIE5vdyBjaGVjayBpZiB0aGUgaW5zdGFsbGVkIEdMSUIgaXMgc3VmZmljaWVudGx5IG5ldy4gKEFsc28gc2FuaXR5Ci0rZG5sIGNoZWNrcyB0aGUgcmVzdWx0cyBvZiBnbGliLWNvbmZpZyB0byBzb21lIGV4dGVudAotK2RubAotKyAgICAgIHJtIC1mIGNvbmYuZ2xpYnRlc3QKLSsgICAgICBBQ19UUllfUlVOKFsKLSsjaW5jbHVkZSA8Z2xpYi5oPgotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsKLStpbnQgCi0rbWFpbiAoKQotK3sKLSsgIGludCBtYWpvciwgbWlub3IsIG1pY3JvOwotKyAgY2hhciAqdG1wX3ZlcnNpb247Ci0rCi0rICBzeXN0ZW0gKCJ0b3VjaCBjb25mLmdsaWJ0ZXN0Iik7Ci0rCi0rICAvKiBIUC9VWCA5ICglQCMhKSB3cml0ZXMgdG8gc3NjYW5mIHN0cmluZ3MgKi8KLSsgIHRtcF92ZXJzaW9uID0gZ19zdHJkdXAoIiRtaW5fZ2xpYl92ZXJzaW9uIik7Ci0rICBpZiAoc3NjYW5mKHRtcF92ZXJzaW9uLCAiJWQuJWQuJWQiLCAmbWFqb3IsICZtaW5vciwgJm1pY3JvKSAhPSAzKSB7Ci0rICAgICBwcmludGYoIiVzLCBiYWQgdmVyc2lvbiBzdHJpbmdcbiIsICIkbWluX2dsaWJfdmVyc2lvbiIpOwotKyAgICAgZXhpdCgxKTsKLSsgICB9Ci0rCi0rICBpZiAoKGdsaWJfbWFqb3JfdmVyc2lvbiAhPSAkZ2xpYl9jb25maWdfbWFqb3JfdmVyc2lvbikgfHwKLSsgICAgICAoZ2xpYl9taW5vcl92ZXJzaW9uICE9ICRnbGliX2NvbmZpZ19taW5vcl92ZXJzaW9uKSB8fAotKyAgICAgIChnbGliX21pY3JvX3ZlcnNpb24gIT0gJGdsaWJfY29uZmlnX21pY3JvX3ZlcnNpb24pKQotKyAgICB7Ci0rICAgICAgcHJpbnRmKCJcbioqKiAnZ2xpYi1jb25maWcgLS12ZXJzaW9uJyByZXR1cm5lZCAlZC4lZC4lZCwgYnV0IEdMSUIgKCVkLiVkLiVkKVxuIiwgCi0rICAgICAgICAgICAgICRnbGliX2NvbmZpZ19tYWpvcl92ZXJzaW9uLCAkZ2xpYl9jb25maWdfbWlub3JfdmVyc2lvbiwgJGdsaWJfY29uZmlnX21pY3JvX3ZlcnNpb24sCi0rICAgICAgICAgICAgIGdsaWJfbWFqb3JfdmVyc2lvbiwgZ2xpYl9taW5vcl92ZXJzaW9uLCBnbGliX21pY3JvX3ZlcnNpb24pOwotKyAgICAgIHByaW50ZiAoIioqKiB3YXMgZm91bmQhIElmIGdsaWItY29uZmlnIHdhcyBjb3JyZWN0LCB0aGVuIGl0IGlzIGJlc3RcbiIpOwotKyAgICAgIHByaW50ZiAoIioqKiB0byByZW1vdmUgdGhlIG9sZCB2ZXJzaW9uIG9mIEdMSUIuIFlvdSBtYXkgYWxzbyBiZSBhYmxlIHRvIGZpeCB0aGUgZXJyb3JcbiIpOwotKyAgICAgIHByaW50ZigiKioqIGJ5IG1vZGlmeWluZyB5b3VyIExEX0xJQlJBUllfUEFUSCBlbnZpcm9tZW50IHZhcmlhYmxlLCBvciBieSBlZGl0aW5nXG4iKTsKLSsgICAgICBwcmludGYoIioqKiAvZXRjL2xkLnNvLmNvbmYuIE1ha2Ugc3VyZSB5b3UgaGF2ZSBydW4gbGRjb25maWcgaWYgdGhhdCBpc1xuIik7Ci0rICAgICAgcHJpbnRmKCIqKiogcmVxdWlyZWQgb24geW91ciBzeXN0ZW0uXG4iKTsKLSsgICAgICBwcmludGYoIioqKiBJZiBnbGliLWNvbmZpZyB3YXMgd3JvbmcsIHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgR0xJQl9DT05GSUdcbiIpOwotKyAgICAgIHByaW50ZigiKioqIHRvIHBvaW50IHRvIHRoZSBjb3JyZWN0IGNvcHkgb2YgZ2xpYi1jb25maWcsIGFuZCByZW1vdmUgdGhlIGZpbGUgY29uZmlnLmNhY2hlXG4iKTsKLSsgICAgICBwcmludGYoIioqKiBiZWZvcmUgcmUtcnVubmluZyBjb25maWd1cmVcbiIpOwotKyAgICB9IAotKyAgZWxzZSBpZiAoKGdsaWJfbWFqb3JfdmVyc2lvbiAhPSBHTElCX01BSk9SX1ZFUlNJT04pIHx8Ci0rCSAgIChnbGliX21pbm9yX3ZlcnNpb24gIT0gR0xJQl9NSU5PUl9WRVJTSU9OKSB8fAotKyAgICAgICAgICAgKGdsaWJfbWljcm9fdmVyc2lvbiAhPSBHTElCX01JQ1JPX1ZFUlNJT04pKQotKyAgICB7Ci0rICAgICAgcHJpbnRmKCIqKiogR0xJQiBoZWFkZXIgZmlsZXMgKHZlcnNpb24gJWQuJWQuJWQpIGRvIG5vdCBtYXRjaFxuIiwKLSsJICAgICBHTElCX01BSk9SX1ZFUlNJT04sIEdMSUJfTUlOT1JfVkVSU0lPTiwgR0xJQl9NSUNST19WRVJTSU9OKTsKLSsgICAgICBwcmludGYoIioqKiBsaWJyYXJ5ICh2ZXJzaW9uICVkLiVkLiVkKVxuIiwKLSsJICAgICBnbGliX21ham9yX3ZlcnNpb24sIGdsaWJfbWlub3JfdmVyc2lvbiwgZ2xpYl9taWNyb192ZXJzaW9uKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgaWYgKChnbGliX21ham9yX3ZlcnNpb24gPiBtYWpvcikgfHwKLSsgICAgICAgICgoZ2xpYl9tYWpvcl92ZXJzaW9uID09IG1ham9yKSAmJiAoZ2xpYl9taW5vcl92ZXJzaW9uID4gbWlub3IpKSB8fAotKyAgICAgICAgKChnbGliX21ham9yX3ZlcnNpb24gPT0gbWFqb3IpICYmIChnbGliX21pbm9yX3ZlcnNpb24gPT0gbWlub3IpICYmIChnbGliX21pY3JvX3ZlcnNpb24gPj0gbWljcm8pKSkKLSsgICAgICB7Ci0rICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgfQotKyAgICAgZWxzZQotKyAgICAgIHsKLSsgICAgICAgIHByaW50ZigiXG4qKiogQW4gb2xkIHZlcnNpb24gb2YgR0xJQiAoJWQuJWQuJWQpIHdhcyBmb3VuZC5cbiIsCi0rICAgICAgICAgICAgICAgZ2xpYl9tYWpvcl92ZXJzaW9uLCBnbGliX21pbm9yX3ZlcnNpb24sIGdsaWJfbWljcm9fdmVyc2lvbik7Ci0rICAgICAgICBwcmludGYoIioqKiBZb3UgbmVlZCBhIHZlcnNpb24gb2YgR0xJQiBuZXdlciB0aGFuICVkLiVkLiVkLiBUaGUgbGF0ZXN0IHZlcnNpb24gb2ZcbiIsCi0rCSAgICAgICBtYWpvciwgbWlub3IsIG1pY3JvKTsKLSsgICAgICAgIHByaW50ZigiKioqIEdMSUIgaXMgYWx3YXlzIGF2YWlsYWJsZSBmcm9tIGZ0cDovL2Z0cC5ndGsub3JnLlxuIik7Ci0rICAgICAgICBwcmludGYoIioqKlxuIik7Ci0rICAgICAgICBwcmludGYoIioqKiBJZiB5b3UgaGF2ZSBhbHJlYWR5IGluc3RhbGxlZCBhIHN1ZmZpY2llbnRseSBuZXcgdmVyc2lvbiwgdGhpcyBlcnJvclxuIik7Ci0rICAgICAgICBwcmludGYoIioqKiBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSB3cm9uZyBjb3B5IG9mIHRoZSBnbGliLWNvbmZpZyBzaGVsbCBzY3JpcHQgaXNcbiIpOwotKyAgICAgICAgcHJpbnRmKCIqKiogYmVpbmcgZm91bmQuIFRoZSBlYXNpZXN0IHdheSB0byBmaXggdGhpcyBpcyB0byByZW1vdmUgdGhlIG9sZCB2ZXJzaW9uXG4iKTsKLSsgICAgICAgIHByaW50ZigiKioqIG9mIEdMSUIsIGJ1dCB5b3UgY2FuIGFsc28gc2V0IHRoZSBHTElCX0NPTkZJRyBlbnZpcm9ubWVudCB0byBwb2ludCB0byB0aGVcbiIpOwotKyAgICAgICAgcHJpbnRmKCIqKiogY29ycmVjdCBjb3B5IG9mIGdsaWItY29uZmlnLiAoSW4gdGhpcyBjYXNlLCB5b3Ugd2lsbCBoYXZlIHRvXG4iKTsKLSsgICAgICAgIHByaW50ZigiKioqIG1vZGlmeSB5b3VyIExEX0xJQlJBUllfUEFUSCBlbnZpcm9tZW50IHZhcmlhYmxlLCBvciBlZGl0IC9ldGMvbGQuc28uY29uZlxuIik7Ci0rICAgICAgICBwcmludGYoIioqKiBzbyB0aGF0IHRoZSBjb3JyZWN0IGxpYnJhcmllcyBhcmUgZm91bmQgYXQgcnVuLXRpbWUpKVxuIik7Ci0rICAgICAgfQotKyAgICB9Ci0rICByZXR1cm4gMTsKLSt9Ci0rXSwsIG5vX2dsaWI9eWVzLFtlY2hvICRhY19uICJjcm9zcyBjb21waWxpbmc7IGFzc3VtZWQgT0suLi4gJGFjX2MiXSkKLSsgICAgICAgQ0ZMQUdTPSIkYWNfc2F2ZV9DRkxBR1MiCi0rICAgICAgIExJQlM9IiRhY19zYXZlX0xJQlMiCi0rICAgICBmaQotKyAgZmkKLSsgIGlmIHRlc3QgIngkbm9fZ2xpYiIgPSB4IDsgdGhlbgotKyAgICAgQUNfTVNHX1JFU1VMVCh5ZXMpCi0rICAgICBpZmVsc2UoWyQyXSwgLCA6LCBbJDJdKSAgICAgCi0rICBlbHNlCi0rICAgICBBQ19NU0dfUkVTVUxUKG5vKQotKyAgICAgaWYgdGVzdCAiJEdMSUJfQ09ORklHIiA9ICJubyIgOyB0aGVuCi0rICAgICAgIGVjaG8gIioqKiBUaGUgZ2xpYi1jb25maWcgc2NyaXB0IGluc3RhbGxlZCBieSBHTElCIGNvdWxkIG5vdCBiZSBmb3VuZCIKLSsgICAgICAgZWNobyAiKioqIElmIEdMSUIgd2FzIGluc3RhbGxlZCBpbiBQUkVGSVgsIG1ha2Ugc3VyZSBQUkVGSVgvYmluIGlzIGluIgotKyAgICAgICBlY2hvICIqKiogeW91ciBwYXRoLCBvciBzZXQgdGhlIEdMSUJfQ09ORklHIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHRoZSIKLSsgICAgICAgZWNobyAiKioqIGZ1bGwgcGF0aCB0byBnbGliLWNvbmZpZy4iCi0rICAgICBlbHNlCi0rICAgICAgIGlmIHRlc3QgLWYgY29uZi5nbGlidGVzdCA7IHRoZW4KLSsgICAgICAgIDoKLSsgICAgICAgZWxzZQotKyAgICAgICAgICBlY2hvICIqKiogQ291bGQgbm90IHJ1biBHTElCIHRlc3QgcHJvZ3JhbSwgY2hlY2tpbmcgd2h5Li4uIgotKyAgICAgICAgICBDRkxBR1M9IiRDRkxBR1MgJEdMSUJfQ0ZMQUdTIgotKyAgICAgICAgICBMSUJTPSIkTElCUyAkR0xJQl9MSUJTIgotKyAgICAgICAgICBBQ19UUllfTElOSyhbCi0rI2luY2x1ZGUgPGdsaWIuaD4KLSsjaW5jbHVkZSA8c3RkaW8uaD4KLStdLCAgICAgIFsgcmV0dXJuICgoZ2xpYl9tYWpvcl92ZXJzaW9uKSB8fCAoZ2xpYl9taW5vcl92ZXJzaW9uKSB8fCAoZ2xpYl9taWNyb192ZXJzaW9uKSk7IF0sCi0rICAgICAgICBbIGVjaG8gIioqKiBUaGUgdGVzdCBwcm9ncmFtIGNvbXBpbGVkLCBidXQgZGlkIG5vdCBydW4uIFRoaXMgdXN1YWxseSBtZWFucyIKLSsgICAgICAgICAgZWNobyAiKioqIHRoYXQgdGhlIHJ1bi10aW1lIGxpbmtlciBpcyBub3QgZmluZGluZyBHTElCIG9yIGZpbmRpbmcgdGhlIHdyb25nIgotKyAgICAgICAgICBlY2hvICIqKiogdmVyc2lvbiBvZiBHTElCLiBJZiBpdCBpcyBub3QgZmluZGluZyBHTElCLCB5b3UnbGwgbmVlZCB0byBzZXQgeW91ciIKLSsgICAgICAgICAgZWNobyAiKioqIExEX0xJQlJBUllfUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgb3IgZWRpdCAvZXRjL2xkLnNvLmNvbmYgdG8gcG9pbnQiCi0rICAgICAgICAgIGVjaG8gIioqKiB0byB0aGUgaW5zdGFsbGVkIGxvY2F0aW9uICBBbHNvLCBtYWtlIHN1cmUgeW91IGhhdmUgcnVuIGxkY29uZmlnIGlmIHRoYXQiCi0rICAgICAgICAgIGVjaG8gIioqKiBpcyByZXF1aXJlZCBvbiB5b3VyIHN5c3RlbSIKLSsJICBlY2hvICIqKioiCi0rICAgICAgICAgIGVjaG8gIioqKiBJZiB5b3UgaGF2ZSBhbiBvbGQgdmVyc2lvbiBpbnN0YWxsZWQsIGl0IGlzIGJlc3QgdG8gcmVtb3ZlIGl0LCBhbHRob3VnaCIKLSsgICAgICAgICAgZWNobyAiKioqIHlvdSBtYXkgYWxzbyBiZSBhYmxlIHRvIGdldCB0aGluZ3MgdG8gd29yayBieSBtb2RpZnlpbmcgTERfTElCUkFSWV9QQVRIIgotKyAgICAgICAgICBlY2hvICIqKioiCi0rICAgICAgICAgIGVjaG8gIioqKiBJZiB5b3UgaGF2ZSBhIFJlZEhhdCA1LjAgc3lzdGVtLCB5b3Ugc2hvdWxkIHJlbW92ZSB0aGUgR1RLIHBhY2thZ2UgdGhhdCIKLSsgICAgICAgICAgZWNobyAiKioqIGNhbWUgd2l0aCB0aGUgc3lzdGVtIHdpdGggdGhlIGNvbW1hbmQiCi0rICAgICAgICAgIGVjaG8gIioqKiIKLSsgICAgICAgICAgZWNobyAiKioqICAgIHJwbSAtLWVyYXNlIC0tbm9kZXBzIGd0ayBndGstZGV2ZWwiIF0sCi0rICAgICAgICBbIGVjaG8gIioqKiBUaGUgdGVzdCBwcm9ncmFtIGZhaWxlZCB0byBjb21waWxlIG9yIGxpbmsuIFNlZSB0aGUgZmlsZSBjb25maWcubG9nIGZvciB0aGUiCi0rICAgICAgICAgIGVjaG8gIioqKiBleGFjdCBlcnJvciB0aGF0IG9jY3VyZWQuIFRoaXMgdXN1YWxseSBtZWFucyBHTElCIHdhcyBpbmNvcnJlY3RseSBpbnN0YWxsZWQiCi0rICAgICAgICAgIGVjaG8gIioqKiBvciB0aGF0IHlvdSBoYXZlIG1vdmVkIEdMSUIgc2luY2UgaXQgd2FzIGluc3RhbGxlZC4gSW4gdGhlIGxhdHRlciBjYXNlLCB5b3UiCi0rICAgICAgICAgIGVjaG8gIioqKiBtYXkgd2FudCB0byBlZGl0IHRoZSBnbGliLWNvbmZpZyBzY3JpcHQ6ICRHTElCX0NPTkZJRyIgXSkKLSsgICAgICAgICAgQ0ZMQUdTPSIkYWNfc2F2ZV9DRkxBR1MiCi0rICAgICAgICAgIExJQlM9IiRhY19zYXZlX0xJQlMiCi0rICAgICAgIGZpCi0rICAgICBmaQotKyAgICAgR0xJQl9DRkxBR1M9IiIKLSsgICAgIEdMSUJfTElCUz0iIgotKyAgICAgaWZlbHNlKFskM10sICwgOiwgWyQzXSkKLSsgIGZpCi0rICBBQ19TVUJTVChHTElCX0NGTEFHUykKLSsgIEFDX1NVQlNUKEdMSUJfTElCUykKLSsgIHJtIC1mIGNvbmYuZ2xpYnRlc3QKLStdKQotSW5kZXg6IGJpc29uLTIuNC4yL200L2lzYy1wb3NpeC5tNAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGJpc29uLTIuNC4yL200L2lzYy1wb3NpeC5tNAotQEAgLTAsMCArMSwyNiBAQAotKyMgaXNjLXBvc2l4Lm00IHNlcmlhbCAyIChnZXR0ZXh0LTAuMTEuMikKLStkbmwgQ29weXJpZ2h0IChDKSAxOTk1LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLSsjIFRoaXMgZmlsZSBpcyBub3QgbmVlZGVkIHdpdGggYXV0b2NvbmYtMi41MyBhbmQgbmV3ZXIuICBSZW1vdmUgaXQgaW4gMjAwNS4KLSsKLSsjIFRoaXMgdGVzdCByZXBsYWNlcyB0aGUgb25lIGluIGF1dG9jb25mLgotKyMgQ3VycmVudGx5IHRoaXMgbWFjcm8gc2hvdWxkIGhhdmUgdGhlIHNhbWUgbmFtZSBhcyB0aGUgYXV0b2NvbmYgbWFjcm8KLSsjIGJlY2F1c2UgZ2V0dGV4dCdzIGdldHRleHQubTQgKGRpc3RyaWJ1dGVkIGluIHRoZSBhdXRvbWFrZSBwYWNrYWdlKQotKyMgc3RpbGwgdXNlcyBpdC4gIE90aGVyd2lzZSwgdGhlIHVzZSBpbiBnZXR0ZXh0Lm00IG1ha2VzIGF1dG9oZWFkZXIKLSsjIGdpdmUgdGhlc2UgZGlhZ25vc3RpY3M6Ci0rIyAgIGNvbmZpZ3VyZS5pbjo1NTY6IEFDX1RSWV9DT01QSUxFIHdhcyBjYWxsZWQgYmVmb3JlIEFDX0lTQ19QT1NJWAotKyMgICBjb25maWd1cmUuaW46NTU2OiBBQ19UUllfUlVOIHdhcyBjYWxsZWQgYmVmb3JlIEFDX0lTQ19QT1NJWAotKwotK3VuZGVmaW5lKFtBQ19JU0NfUE9TSVhdKQotKwotK0FDX0RFRlVOKFtBQ19JU0NfUE9TSVhdLAotKyAgWwotKyAgICBkbmwgVGhpcyB0ZXN0IHJlcGxhY2VzIHRoZSBvYnNvbGVzY2VudCBBQ19JU0NfUE9TSVgga2x1ZGdlLgotKyAgICBBQ19DSEVDS19MSUIoY3Bvc2l4LCBzdHJlcnJvciwgW0xJQlM9IiRMSUJTIC1sY3Bvc2l4Il0pCi0rICBdCi0rKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbl8zLjAuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmlzb24vYmlzb25fMy4wLjQuYmIKaW5kZXggN2QwNjZiZS4uNTg3MjhmNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbl8zLjAuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jpc29uL2Jpc29uXzMuMC40LmJiCkBAIC0xMCw3ICsxMCw2IEBACiBERVBFTkRTID0gImJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKIAogU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2Jpc29uL2Jpc29uLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9tNC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtc3JjLWxvY2FsLm1rLWZpeC1wYXJhbGxlbC1pc3N1ZS5wYXRjaCBcCkBAIC0yMyw5ICsyMiw5IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiYzM0MjIwMWRlMTA0Y2M5Y2UwYTIxZTBhZDEwZDQwMjEiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTcyNDI4Yzc5MTdiZGY5ZmE5M2NiODE4MWM5NzFiNmUyMjgzNDEyNTg0OGNmMWQwM2NlMTBiMWJiMDcxNmZlMSIKIAotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiZ2V0dGV4dC1taW5pbWFsLW5hdGl2ZSIKLQogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvCisKKyMgVGhlIGF1dG9tYXRpYyBtNCBwYXRoIGRldGVjdGlvbiBnZXRzIGNvbmZ1c2VkLCBzbyBmb3JjZSB0aGUgcmlnaHQgdmFsdWUKIGFjcGF0aHMgPSAiLUkgJHtTfS9tNCIKIAogZG9fY29tcGlsZV9wcmVwZW5kKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ib290Y2hhcnQyL2Jvb3RjaGFydDJfMC4xNC44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ib290Y2hhcnQyL2Jvb3RjaGFydDJfMC4xNC44LmJiCmluZGV4IGEzMTAxMzUuLmIzYzg4OWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYm9vdGNoYXJ0Mi9ib290Y2hhcnQyXzAuMTQuOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jvb3RjaGFydDIvYm9vdGNoYXJ0Ml8wLjE0LjguYmIKQEAgLTkwLDcgKzkwLDcgQEAKIAogVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrXC5cZCsoXC5cZCspKikiCiAKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9tbWVla3MvYm9vdGNoYXJ0LmdpdCBcCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20veHJteC9ib290Y2hhcnQuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL2Jvb3RjaGFydGRfc3RvcC5zaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeGVkLU1pc3NpbmctZGVmYXVsdC12YWx1ZS1mb3ItQk9PVExPR19ERVNULnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtY29sbGVjdG9yLUFsbG9jYXRlLXNwYWNlLW9uLWhlYXAtZm9yLWNodW5rcy5wYXRjaCBcCkBAIC0xMzksNyArMTM5LDcgQEAKIAogUEFDS0FHRVMgPSsgInB5Ym9vdGNoYXJ0Z3VpIgogRklMRVNfcHlib290Y2hhcnRndWkgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3B5Ym9vdGNoYXJ0Z3VpICR7YmluZGlyfS9weWJvb3RjaGFydGd1aSIKLVJERVBFTkRTX3B5Ym9vdGNoYXJ0Z3VpID0gInB5dGhvbjMtcHljYWlybyBweXRob24zLWNvbXByZXNzaW9uIHB5dGhvbjMtaW1hZ2UgcHl0aG9uMy10ZXh0dXRpbHMgcHl0aG9uMy1zaGVsbCBweXRob24zLWNvbXByZXNzaW9uIHB5dGhvbjMtY29kZWNzIgorUkRFUEVORFNfcHlib290Y2hhcnRndWkgPSAicHl0aG9uMy1weWNhaXJvIHB5dGhvbjMtY29tcHJlc3Npb24gcHl0aG9uMy1pbWFnZSBweXRob24zLXNoZWxsIHB5dGhvbjMtY29tcHJlc3Npb24gcHl0aG9uMy1jb2RlY3MiCiBSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAnc3lzdmluaXQtcGlkb2YnLCAncHJvY3BzJywgZCl9IgogUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJsc2IiCiBERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIHB5dGhvbjMtcHljYWlyby1uYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1taXNzaW5nLWhlYWRlci1pbmNsdWRlLWZvci1kZXZfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLW1pc3NpbmctaGVhZGVyLWluY2x1ZGUtZm9yLWRldl90LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5MDY3NmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1taXNzaW5nLWhlYWRlci1pbmNsdWRlLWZvci1kZXZfdC5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIGJjMzVjNGNhZWJiNTdjYzhiOTZjMzBjMjU0MzJiMTJjYThkYzE4ZDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgNiBPY3QgMjAxNyAxNTowMzo0OSArMDMwMAorU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgd2l0aCBtdXNsIChtaXNzaW5nIGhlYWRlciBpbmNsdWRlIGZvciBkZXZfdCkuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBjb252ZXJ0L3NvdXJjZS1mcy5oIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9jb252ZXJ0L3NvdXJjZS1mcy5oIGIvY29udmVydC9zb3VyY2UtZnMuaAoraW5kZXggMjNmMzM1Ni4uNmZkNzcwZiAxMDA2NDQKKy0tLSBhL2NvbnZlcnQvc291cmNlLWZzLmgKKysrKyBiL2NvbnZlcnQvc291cmNlLWZzLmgKK0BAIC0yMCw2ICsyMCw3IEBACisgI2luY2x1ZGUgImtlcm5jb21wYXQuaCIKKyAjaW5jbHVkZSA8bGludXgva2Rldl90Lmg+CisgI2luY2x1ZGUgPHB0aHJlYWQuaD4KKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgCisgI2RlZmluZSBDT05WX0lNQUdFX1NVQlZPTF9PQkpFQ1RJRCBCVFJGU19GSVJTVF9GUkVFX09CSkVDVElECisgCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzLzAwMDEtTWFrZWZpbGUtYnVpbGQtbWt0YWJsZXMtdXNpbmctbmF0aXZlLWdjYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHMvMDAwMS1NYWtlZmlsZS1idWlsZC1ta3RhYmxlcy11c2luZy1uYXRpdmUtZ2NjLnBhdGNoCmluZGV4IGE4MTkwMGUuLjQ2N2RlMzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHMvMDAwMS1NYWtlZmlsZS1idWlsZC1ta3RhYmxlcy11c2luZy1uYXRpdmUtZ2NjLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHMvMDAwMS1NYWtlZmlsZS1idWlsZC1ta3RhYmxlcy11c2luZy1uYXRpdmUtZ2NjLnBhdGNoCkBAIC0xMiwxOSArMTIsMTYgQEAKICBNYWtlZmlsZSB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IGIzZTJiNjMuLjM0N2FhZjEgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZQotKysrIGIvTWFrZWZpbGUKLUBAIC0zMjMsNyArMzIzLDcgQEAgdmVyc2lvbi5oOiB2ZXJzaW9uLnNoIHZlcnNpb24uaC5pbiBjb25maWd1cmUuYWMKK0luZGV4OiBnaXQvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9NYWtlZmlsZQorKysrIGdpdC9NYWtlZmlsZQorQEAgLTM0Myw3ICszNDMsNyBAQCB2ZXJzaW9uLmg6IHZlcnNpb24uc2ggdmVyc2lvbi5oLmluIGNvbmZpCiAgCiAgbWt0YWJsZXM6IGtlcm5lbC1saWIvbWt0YWJsZXMuYwogIAlAZWNobyAiICAgIFtDQ10gICAgICRAIgogLQkkKFEpJChDQykgJChDRkxBR1MpICQ8IC1vICRACiArCSQoUSkkKEJVSUxEX0NDKSAkKEJVSUxEX0NGTEFHUykgJDwgLW8gJEAKICAKLSBrZXJuZWwtbGliL3RhYmxlcy5jOiBta3RhYmxlcwotIAlAZWNobyAiICAgIFtUQUJMRV0gICRAIgotLS0gCi0yLjEzLjIKLQorICMgdGhlIHRhcmdldCBjYW4gYmUgcmVnZW5lcmF0ZWQgbWFudWFsbHkgdXNpbmcgbWt0YWJsZXMsIGJ1dCBhIGxvY2FsIGNvcHkgaXMKKyAjIGtlcHQgc28gdGhlIGJ1aWxkIHByb2Nlc3MgaXMgc2ltcGxlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc180LjEyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc180LjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2NjODljLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNC4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiQ2hlY2tzdW1taW5nIENvcHkgb24gV3JpdGUgRmlsZXN5c3RlbSB1dGlsaXRpZXMiCi1ERVNDUklQVElPTiA9ICJCdHJmcyBpcyBhIG5ldyBjb3B5IG9uIHdyaXRlIGZpbGVzeXN0ZW0gZm9yIExpbnV4IGFpbWVkIGF0IFwKLWltcGxlbWVudGluZyBhZHZhbmNlZCBmZWF0dXJlcyB3aGlsZSBmb2N1c2luZyBvbiBmYXVsdCB0b2xlcmFuY2UsIHJlcGFpciBhbmQgXAotZWFzeSBhZG1pbmlzdHJhdGlvbi4gXAotVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHV0aWxpdGllcyAobWtmcywgZnNjaywgYnRyZnNjdGwpIHVzZWQgdG8gd29yayB3aXRoIFwKLWJ0cmZzIGFuZCBhbiB1dGlsaXR5IChidHJmcy1jb252ZXJ0KSB0byBtYWtlIGEgYnRyZnMgZmlsZXN5c3RlbSBmcm9tIGFuIGV4dDMuIgotCi1IT01FUEFHRSA9ICJodHRwczovL2J0cmZzLndpa2kua2VybmVsLm9yZyIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZjYjAyZGM1NTJhMDQxZGVlMjdlNGI4NWM3Mzk2MDY3IgotU0VDVElPTiA9ICJiYXNlIgotREVQRU5EUyA9ICJ1dGlsLWxpbnV4IGF0dHIgZTJmc3Byb2dzIGx6byBhY2wiCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHVkZXYiCi1SREVQRU5EU18ke1BOfSA9ICJsaWJnY2MiCi0KLVNSQ1JFViA9ICIwNjA3MTMyYzMyMDBiY2VhZDE0MjZlNmRjNjg1NDMyMDA4ZGU5NWRlIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQva2RhdmUvYnRyZnMtcHJvZ3MuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtYnVpbGQtbWt0YWJsZXMtdXNpbmctbmF0aXZlLWdjYy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBtYW5wYWdlcwotCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1kb2N1bWVudGF0aW9uLCAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiwgYXNjaWlkb2MtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtYmFja3RyYWNlICIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0JIyBVcHN0cmVhbSBkb2Vzbid0IHNoaXAgdGhpcyBhbmQgYXV0b3JlY29uZiB3b24ndCBpbnN0YWxsIGl0IGFzIGF1dG9tYWtlIGlzbid0IHVzZWQuCi0JbWtkaXIgLXAgJHtTfS9jb25maWcKLQljcCAtZiAkKGF1dG9tYWtlIC0tcHJpbnQtbGliZGlyKS9pbnN0YWxsLXNoICR7U30vY29uZmlnLwotfQotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNC4xMy4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc180LjEzLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMxNTdlMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNC4xMy4zLmJiCkBAIC0wLDAgKzEsMzkgQEAKK1NVTU1BUlkgPSAiQ2hlY2tzdW1taW5nIENvcHkgb24gV3JpdGUgRmlsZXN5c3RlbSB1dGlsaXRpZXMiCitERVNDUklQVElPTiA9ICJCdHJmcyBpcyBhIG5ldyBjb3B5IG9uIHdyaXRlIGZpbGVzeXN0ZW0gZm9yIExpbnV4IGFpbWVkIGF0IFwKK2ltcGxlbWVudGluZyBhZHZhbmNlZCBmZWF0dXJlcyB3aGlsZSBmb2N1c2luZyBvbiBmYXVsdCB0b2xlcmFuY2UsIHJlcGFpciBhbmQgXAorZWFzeSBhZG1pbmlzdHJhdGlvbi4gXAorVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHV0aWxpdGllcyAobWtmcywgZnNjaywgYnRyZnNjdGwpIHVzZWQgdG8gd29yayB3aXRoIFwKK2J0cmZzIGFuZCBhbiB1dGlsaXR5IChidHJmcy1jb252ZXJ0KSB0byBtYWtlIGEgYnRyZnMgZmlsZXN5c3RlbSBmcm9tIGFuIGV4dDMuIgorCitIT01FUEFHRSA9ICJodHRwczovL2J0cmZzLndpa2kua2VybmVsLm9yZyIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZjYjAyZGM1NTJhMDQxZGVlMjdlNGI4NWM3Mzk2MDY3IgorU0VDVElPTiA9ICJiYXNlIgorREVQRU5EUyA9ICJ1dGlsLWxpbnV4IGF0dHIgZTJmc3Byb2dzIGx6byBhY2wiCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHVkZXYiCitSREVQRU5EU18ke1BOfSA9ICJsaWJnY2MiCisKK1NSQ1JFViA9ICJhN2ExZWEwZjRmMmExZDZlZWViM2QxMDZlMDYyYzdmMTAzNGYxNmQ0IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQva2RhdmUvYnRyZnMtcHJvZ3MuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtYnVpbGQtbWt0YWJsZXMtdXNpbmctbmF0aXZlLWdjYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wtbWlzc2luZy1oZWFkZXItaW5jbHVkZS1mb3ItZGV2X3QucGF0Y2ggXAorICAgICAgICAgICAiCisKK1JFQ0lQRV9OT19VUERBVEVfUkVBU09OID0gIldhaXRpbmcgZm9yIHJlc29sdXRpb24gb2YgaHR0cHM6Ly9naXRodWIuY29tL2tkYXZlL2J0cmZzLXByb2dzL2lzc3Vlcy8xMDkiCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIG1hbnBhZ2VzCisKK0NMRUFOQlJPS0VOID0gIjEiCisKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLWRvY3VtZW50YXRpb24sIC0tZGlzYWJsZS1kb2N1bWVudGF0aW9uLCBhc2NpaWRvYy1uYXRpdmUgeG1sdG8tbmF0aXZlIgorRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS1iYWNrdHJhY2UgIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKwkjIFVwc3RyZWFtIGRvZXNuJ3Qgc2hpcCB0aGlzIGFuZCBhdXRvcmVjb25mIHdvbid0IGluc3RhbGwgaXQgYXMgYXV0b21ha2UgaXNuJ3QgdXNlZC4KKwlta2RpciAtcCAke1N9L2NvbmZpZworCWNwIC1mICQoYXV0b21ha2UgLS1wcmludC1saWJkaXIpL2luc3RhbGwtc2ggJHtTfS9jb25maWcvCit9CisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2J1aWxkLWNvbXBhcmVfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2J1aWxkLWNvbXBhcmVfZ2l0LmJiCmluZGV4IDg0ZDA0Y2YuLmVmY2Y2YjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9idWlsZC1jb21wYXJlX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvYnVpbGQtY29tcGFyZV9naXQuYmIKQEAgLTIyLDcgKzIyLDcgQEAKIFNSQ1JFViA9ICJjNTM1MmMwNTRjNmVmMTU3MzVkYTMxYjc2ZDZkODg2MjBmNGFmZjBhIgogUEUgPSAiMSIKIFBWID0gIjIwMTUuMDIuMTArZ2l0JHtTUkNQVn0iCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvY2NhY2hlXzMuMy40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvY2NhY2hlXzMuMy40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTUzNWIxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2NjYWNoZV8zLjMuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLXJlcXVpcmUgY2NhY2hlLmluYwotCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT03ZmUyMWY5NDcwZjIzMDVlOTVlN2Q4YTYzMjI1NTA3OSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjk1YWIzYzU2Mjg0MTI5Y2MyYTMyNDYwYzIzMDY5NTE2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI0ZjE1YmYzODllMzhjNDE1NDhjOWMyNTk1MzIxODc3NzRlYzBjYjk2ODZjMzQ5N2JiYjc1NTA0YzhkYzQwNGYiCi0KLVNSQ19VUkkgKz0gIiBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMi1kZXYubWsuaW4tZml4LWZpbGUtbmFtZS10b28tbG9uZy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vUmV2ZXJ0LUNyZWF0ZS1tYW4tcGFnZS1pbi10aGUtbWFrZS1pbnN0YWxsLWZyb20tZ2l0LS5wYXRjaCBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy4zLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy4zLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI5ZjBmMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2NjYWNoZV8zLjMuNS5iYgpAQCAtMCwwICsxLDEyIEBACityZXF1aXJlIGNjYWNoZS5pbmMKKworTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZGFlMzc5YTg1YmI2ZTlkNTk0NzczZTBhYTY0ODc2ZjYiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlZWU1OGRiN2NjZTg5MmZlYmRkYjk4OTMwOGRjNTY4ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxOTA1NzZhNmU5Mzg3NjBlYzgxMTM1MjNlNmZkMzgwMTQxMTE3MzAzZTkwNzY2Y2M0ODAyZTc3MDQyMmIzMGM2IgorCitTUkNfVVJJICs9ICIgXAorICAgICAgICAgICAgZmlsZTovLzAwMDItZGV2Lm1rLmluLWZpeC1maWxlLW5hbWUtdG9vLWxvbmcucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL1JldmVydC1DcmVhdGUtbWFuLXBhZ2UtaW4tdGhlLW1ha2UtaW5zdGFsbC1mcm9tLWdpdC0ucGF0Y2ggXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvZmlsZXMvMDAwMi1kZXYubWsuaW4tZml4LWZpbGUtbmFtZS10b28tbG9uZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2ZpbGVzLzAwMDItZGV2Lm1rLmluLWZpeC1maWxlLW5hbWUtdG9vLWxvbmcucGF0Y2gKaW5kZXggODM3Y2ZhZC4uM2YwMWM2OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvZmlsZXMvMDAwMi1kZXYubWsuaW4tZml4LWZpbGUtbmFtZS10b28tbG9uZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9maWxlcy8wMDAyLWRldi5tay5pbi1maXgtZmlsZS1uYW1lLXRvby1sb25nLnBhdGNoCkBAIC0xNCwxMCArMTQsMTAgQEAKICBkZXYubWsuaW4gfCAgICAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9kZXYubWsuaW4gYi9kZXYubWsuaW4KLWluZGV4IDEyNjFhZDMuLmVjNTVhYzQgMTAwNjQ0Ci0tLS0gYS9kZXYubWsuaW4KLSsrKyBiL2Rldi5tay5pbgorSW5kZXg6IGNjYWNoZS0zLjMuNC9kZXYubWsuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBjY2FjaGUtMy4zLjQub3JpZy9kZXYubWsuaW4KKysrKyBjY2FjaGUtMy4zLjQvZGV2Lm1rLmluCiBAQCAtMSw3ICsxLDcgQEAKICAjIEdOVSBtYWtlIHN5bnRheCByZWlnbnMgaW4gdGhpcyBmaWxlLgogIApAQCAtMjYsNyArMjYsNCBAQAogK2FsbF9jcHBmbGFncyArPSAtTUQgLU1QIC1NRiAuZGVwcy8kKHN1YnN0IC4uXywsJChzdWJzdCAvLF8sJChzdWJzdCAkKHNyY2RpcikvLCwkPCkpKS5kCiAgCiAgQVNDSUlET0MgPSBhc2NpaWRvYwotIEdQRVJGID0gZ3BlcmYKLS0tIAotMS43LjkuNQotCisgQ1BQQ0hFQ0sgPSBjcHBjaGVjawpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jZHJ0b29scy9jZHJ0b29scy1uYXRpdmVfMy4wMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2RydG9vbHMvY2RydG9vbHMtbmF0aXZlXzMuMDEuYmIKaW5kZXggMGUwYmU2Mi4uNzhlMTU2NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jZHJ0b29scy9jZHJ0b29scy1uYXRpdmVfMy4wMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NkcnRvb2xzL2NkcnRvb2xzLW5hdGl2ZV8zLjAxLmJiCkBAIC04LDYgKzgsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzJmNjgxNzBiZTQyNGMyY2Q2NDgwNDMzNzcyNmIzMTIiCiAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvY2RydG9vbHMvY2RydG9vbHMtJHtSRUFMUFZ9LnRhci5iejIiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIAogU1JDX1VSSVttZDVzdW1dID0gIjdkNDVjNWI3ZTFmNzhkODVkMTU4M2IzNjFhZWU2ZThiIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImVkMjgyZWI2Mjc2YzQxNTRjZTZhMGI1ZGVlMGJkYjgxOTQwZDBjYmJmYzdkMDNmNzY5YzQ3MzVlZjVmNTg2MGYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLW5hdGl2ZV8zLjguMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuMTAuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS1uYXRpdmVfMy44LjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuMTAuMy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLmluYwppbmRleCA2YWViMjVmLi4zOTRjOWViIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLmluYwpAQCAtNiw0MSArNiwyMyBAQAogQlVHVFJBQ0tFUiA9ICJodHRwOi8vcHVibGljLmtpdHdhcmUuY29tL0J1Zy9teV92aWV3X3BhZ2UucGhwIgogU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgogTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Db3B5cmlnaHQudHh0O21kNT04ZDhjN2JjMzJmODc5N2QyM2Y1Y2Y2MDVkOTMzOWQyZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9Tb3VyY2UvY21ha2UuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTM7bWQ1PTQ0OTRkZWUxODQyMTJmYzg5YzQ2OWMzYWNkNTU1YTE0IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weXJpZ2h0LnR4dDttZDU9NzliNWI3ODE5N2M3NGQ1YzVmOWM3Y2NhZGVlZTRlOGMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vU291cmNlL2NtYWtlLmg7bWQ1PTQ0OTRkZWUxODQyMTJmYzg5YzQ2OWMzYWNkNTU1YTE0O2JlZ2lubGluZT0xO2VuZGxpbmU9MyBcCisgICAgICAgICAgICAgICAgICAgICIKIAogQ01BS0VfTUFKT1JfVkVSU0lPTiA9ICIke0AnLicuam9pbihkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzA6Ml0pfSIKIAogU1JDX1VSSSA9ICJodHRwczovL2NtYWtlLm9yZy9maWxlcy92JHtDTUFLRV9NQUpPUl9WRVJTSU9OfS9jbWFrZS0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vc3VwcG9ydC1vZS1xdDQtdG9vbHMtbmFtZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcXQ0LWZhaWwtc2lsZW50LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRmluZENVREEtVXNlLWZpbmRfcHJvZ3JhbS1pZi1maW5kX2hvc3RfcHJvZ3JhbS1pcy1uby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jbWFrZS1QcmV2ZW50LXRoZS1kZXRlY3Rpb24tb2YtUXQ1LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRmluZEJvb3N0LUJvb3N0LTEuNjYuMC1kZXBlbmRlbmN5LWFuZC1yZWxlYXNlLXVwZGF0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpbmRCb29zdC1GaXgtaW5jb3JyZWN0LWFscGhhYmV0aXNhdGlvbi1vZi1oZWFkZXJzLWwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1GaW5kQm9vc3QtSW1wbGVtZW50LUFyY2hpdGVjdHVyZS1hbmQtQWRkcmVzcy1Nb2RlbC10LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtRmluZEJvb3N0LVNlYXJjaC1mb3ItdXBzdHJlYW0tcGFja2FnZWQtbGlicy1uZXh0LXRvLS5wYXRjaCBcCiAgICAgICAgICAgICIKIAotU1JDX1VSSVttZDVzdW1dID0gImI1ZGZmNjFmNmE3ZjEzMDUyNzFhYjNmNmFlMjYxNDE5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRhMzA3Mjc5NGViNGMwOWYyZDc4MmZjZWUwNDM4NDdiOTliYjRjZjhkNDU3Mzk3OGQ5YjIwMjQyMTRkNmU5MmQiCitTUkNfVVJJW21kNXN1bV0gPSAiMWMzOGM2NzI5NWNhNjk2YWVhZmQ4YzA1OWQ3NDhiMzgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGMzYTFkY2YwYmUwM2U0MGNmNGYzNDFkZGE3OWM5NmZmYjZjMzVhZTM1ZjJmOTExODQ1YjcyZGFiMzU1OWNmOCIKIAogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiY21ha2UtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCi0KLSMgVWdseSBoYWNrIHRvIHdvcmsgYXJvdW5kIHVuZGVmaW5lZCBPRV9RTUFLRV9QQVRIX0VYVEVSTkFMX0hPU1RfQklOUyB2YXJpYWJsZQotIyBhbmQgcG9zc2libHkgbWlzc2luZyBxbWFrZSBiaW5hcnkgKHF0YmFzZS1uYXRpdmUgY2FuIGJlIHJlbW92ZWQgZnJvbSBzeXNyb290Ci0jIGUuZy4gaW4gb3JkZXIgdG8gdXBncmFkZSBpdCwgZXZlbiB3aGVuIHRoZXJlIGlzIHRhcmdldCBxdGJhc2UpCi0KLSMgRml4ZXMgZXJyb3JzIGxpa2UgdGhpcyBpbiBjbWFrZSgtbmF0aXZlKS5kb19jb25maWd1cmU6Ci0jfCAtLSBQZXJmb3JtaW5nIFRlc3QgcnVuX3BpY190ZXN0IC0gU3VjY2VzcwotI3wgQ01ha2UgRXJyb3IgYXQgdG1wLWVnbGliYy9zeXNyb290cy9xZW11YXJtL3Vzci9saWIvY21ha2UvUXQ1Q29yZS9RdDVDb3JlQ29uZmlnLmNtYWtlOjI3IChtZXNzYWdlKToKLSN8ICAgVGhlIGltcG9ydGVkIHRhcmdldCAiUXQ1OjpDb3JlIiByZWZlcmVuY2VzIHRoZSBmaWxlCi0jfAotI3wgICAgICAiL3FtYWtlIgotI3wKLSN8ICAgYnV0IHRoaXMgZmlsZSBkb2VzIG5vdCBleGlzdC4gIFBvc3NpYmxlIHJlYXNvbnMgaW5jbHVkZToKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0Jc2VkIC1pICdzL15maW5kX3BhY2thZ2UoUXQ1Q29yZSBRVUlFVCkkLyNmaW5kX3BhY2thZ2UoUXQ1Q29yZSBRVUlFVCkvZycgJHtTfS9UZXN0cy9SdW5DTWFrZS9DTWFrZUxpc3RzLnR4dAotCXNlZCAtaSAncy9eICBmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkvIyAgZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpL2cnICR7U30vVGVzdHMvUXQ0QW5kNUF1dG9tb2MvQ01ha2VMaXN0cy50eHQKLQlzZWQgLWkgJ3MvXiAgZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUVVJRVQgTk9fTU9EVUxFKS8jICBmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBRVUlFVCBOT19NT0RVTEUpL2cnICR7U30vVGVzdHMvQ01ha2VMaXN0cy50eHQKLQlzZWQgLWkgJ3MvXmZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFFVSUVUKS8jZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUVVJRVQpL2cnICR7U30vU291cmNlL1F0RGlhbG9nL0NNYWtlTGlzdHMudHh0Ci0Jc2VkIC1pICdzL14gIGZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFJFUVVJUkVEKS8jICBmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBSRVFVSVJFRCkvZycgJHtTfS9UZXN0cy9RdEF1dG9VaWNJbnRlcmZhY2UvQ01ha2VMaXN0cy50eHQKLQlzZWQgLWkgJ3MvXiAgZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUkVRVUlSRUQpLyMgIGZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFJFUVVJUkVEKS9nJyAke1N9L1Rlc3RzL1F0QXV0b2dlbi9DTWFrZUxpc3RzLnR4dAotCXNlZCAtaSAncy9eICBmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkvIyAgZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpL2cnICR7U30vVGVzdHMvUXRBdXRvZ2VuL2F1dG9yY2NfZGVwZW5kcy9DTWFrZUxpc3RzLnR4dAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUZpbmRCb29zdC1Cb29zdC0xLjY2LjAtZGVwZW5kZW5jeS1hbmQtcmVsZWFzZS11cGRhdGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtRmluZEJvb3N0LUJvb3N0LTEuNjYuMC1kZXBlbmRlbmN5LWFuZC1yZWxlYXNlLXVwZGF0ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGE2MGUzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUZpbmRCb29zdC1Cb29zdC0xLjY2LjAtZGVwZW5kZW5jeS1hbmQtcmVsZWFzZS11cGRhdGUucGF0Y2gKQEAgLTAsMCArMSw1MiBAQAorRnJvbSA0MzNhMmQ0OTVhMjQ4MWM2M2I4MmMxMWEzMGY3YzY0MmQ2YWJlNjNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIlBhdWwgXCJUQkJsZVwiIEhhbXBzb24iIDxQYXVsLkhhbXBzb25AUG9ib3guY29tPgorRGF0ZTogRnJpLCAyOSBEZWMgMjAxNyAxOTo1NTo0OSArMTEwMAorU3ViamVjdDogW1BBVENIXSBGaW5kQm9vc3Q6IEJvb3N0IDEuNjYuMCBkZXBlbmRlbmN5IGFuZCByZWxlYXNlIHVwZGF0ZQorCitSZWxlYXNlIG5vdGVzOiBodHRwOi8vd3d3LmJvb3N0Lm9yZy91c2Vycy9oaXN0b3J5L3ZlcnNpb25fMV82Nl8wLmh0bWwKKworKiBBbGwgbmV3IGxpYnJhcmllcyBhcmUgaGVhZGVyLW9ubHkuCisqIF9Cb29zdF9DT01QT05FTlRfREVQRU5ERU5DSUVTIGlzIHVuY2hhbmdlZCBmcm9tIDEuNjUuMQorKiBfQm9vc3RfRklCRVJfQ09NUElMRVJfRkVBVFVSRVMgaXMgdW5jaGFuZ2VkIGZyb20gMS42NC4wCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1tZb2N0byAxMjc2Ml0KK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CisKKy0tLQorIE1vZHVsZXMvRmluZEJvb3N0LmNtYWtlIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK0luZGV4OiBjbWFrZS0zLjEwLjMvTW9kdWxlcy9GaW5kQm9vc3QuY21ha2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBjbWFrZS0zLjEwLjMub3JpZy9Nb2R1bGVzL0ZpbmRCb29zdC5jbWFrZQorKysrIGNtYWtlLTMuMTAuMy9Nb2R1bGVzL0ZpbmRCb29zdC5jbWFrZQorQEAgLTc5Nyw3ICs3OTcsNyBAQCBmdW5jdGlvbihfQm9vc3RfQ09NUE9ORU5UX0RFUEVOREVOQ0lFUyBjCisgICAgICAgc2V0KF9Cb29zdF9XQVZFX0RFUEVOREVOQ0lFUyBmaWxlc3lzdGVtIHN5c3RlbSBzZXJpYWxpemF0aW9uIHRocmVhZCBjaHJvbm8gZGF0ZV90aW1lIGF0b21pYykKKyAgICAgICBzZXQoX0Jvb3N0X1dTRVJJQUxJWkFUSU9OX0RFUEVOREVOQ0lFUyBzZXJpYWxpemF0aW9uKQorICAgICBlbmRpZigpCistICAgIGlmKE5PVCBCb29zdF9WRVJTSU9OIFZFUlNJT05fTEVTUyAxMDY2MDApCisrICAgIGlmKE5PVCBCb29zdF9WRVJTSU9OIFZFUlNJT05fTEVTUyAxMDY3MDApCisgICAgICAgbWVzc2FnZShXQVJOSU5HICJOZXcgQm9vc3QgdmVyc2lvbiBtYXkgaGF2ZSBpbmNvcnJlY3Qgb3IgbWlzc2luZyBkZXBlbmRlbmNpZXMgYW5kIGltcG9ydGVkIHRhcmdldHMiKQorICAgICAgIHNldChfQm9vc3RfSU1QT1JURURfVEFSR0VUUyBGQUxTRSkKKyAgICAgZW5kaWYoKQorQEAgLTkzMSw4ICs5MzEsOCBAQCBlbmRmdW5jdGlvbigpCisgIyBgJHtCb29zdF9ST09UfS9saWJzL2ZpYmVyL2J1aWxkL0phbWZpbGUudjJgLgorICMKKyBmdW5jdGlvbihfQm9vc3RfQ09NUElMRVJfRkVBVFVSRVMgY29tcG9uZW50IF9yZXQpCistICAjIEJvb3N0ID49IDEuNjIgYW5kIDwgMS42NQorLSAgaWYoTk9UIEJvb3N0X1ZFUlNJT04gVkVSU0lPTl9MRVNTIDEwNjIwMCBBTkQgQm9vc3RfVkVSU0lPTiBWRVJTSU9OX0xFU1MgMTA2NTAwKQorKyAgIyBCb29zdCA+PSAxLjYyIGFuZCA8IDEuNjcKKysgIGlmKE5PVCBCb29zdF9WRVJTSU9OIFZFUlNJT05fTEVTUyAxMDYyMDAgQU5EIEJvb3N0X1ZFUlNJT04gVkVSU0lPTl9MRVNTIDEwNjcwMCkKKyAgICAgc2V0KF9Cb29zdF9GSUJFUl9DT01QSUxFUl9GRUFUVVJFUworICAgICAgICAgY3h4X2FsaWFzX3RlbXBsYXRlcworICAgICAgICAgY3h4X2F1dG9fdHlwZQorQEAgLTEwMzgsNyArMTAzOCw3IEBAIGVsc2UoKQorICAgIyBfQm9vc3RfQ09NUE9ORU5UX0hFQURFUlMuICBTZWUgdGhlIGluc3RydWN0aW9ucyBhdCB0aGUgdG9wIG9mCisgICAjIF9Cb29zdF9DT01QT05FTlRfREVQRU5ERU5DSUVTLgorICAgc2V0KF9Cb29zdF9LTk9XTl9WRVJTSU9OUyAke0Jvb3N0X0FERElUSU9OQUxfVkVSU0lPTlN9CistICAgICIxLjY1LjEiICIxLjY1LjAiICIxLjY1IgorKyAgICAiMS42Ni4wIiAiMS42NiIgIjEuNjUuMSIgIjEuNjUuMCIgIjEuNjUiCisgICAgICIxLjY0LjAiICIxLjY0IiAiMS42My4wIiAiMS42MyIgIjEuNjIuMCIgIjEuNjIiICIxLjYxLjAiICIxLjYxIiAiMS42MC4wIiAiMS42MCIKKyAgICAgIjEuNTkuMCIgIjEuNTkiICIxLjU4LjAiICIxLjU4IiAiMS41Ny4wIiAiMS41NyIgIjEuNTYuMCIgIjEuNTYiICIxLjU1LjAiICIxLjU1IgorICAgICAiMS41NC4wIiAiMS41NCIgIjEuNTMuMCIgIjEuNTMiICIxLjUyLjAiICIxLjUyIiAiMS41MS4wIiAiMS41MSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMS1GaW5kQm9vc3QtRml4LWluY29ycmVjdC1hbHBoYWJldGlzYXRpb24tb2YtaGVhZGVycy1sLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUZpbmRCb29zdC1GaXgtaW5jb3JyZWN0LWFscGhhYmV0aXNhdGlvbi1vZi1oZWFkZXJzLWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ1ZWRhNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMS1GaW5kQm9vc3QtRml4LWluY29ycmVjdC1hbHBoYWJldGlzYXRpb24tb2YtaGVhZGVycy1sLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gYjFlOWY2NzEzNzczM2JjMTA5ZDM1NTQ1MGZjZDA2ZWRkYTQ3ODRjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJQYXVsIFwiVEJCbGVcIiBIYW1wc29uIiA8UGF1bC5IYW1wc29uQFBvYm94LmNvbT4KK0RhdGU6IEZyaSwgMjkgRGVjIDIwMTcgMjA6MDc6MzEgKzExMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzZdIEZpbmRCb29zdDogRml4IGluY29ycmVjdCBhbHBoYWJldGlzYXRpb24gb2YgaGVhZGVycyBsaXN0CisKK0FmZmVjdHMgY21ha2UgPCAzLjExLjAKKworVXBzdGVhbS1TdGF0dXM6IEJhY2twb3J0CitbWW9jdG8gMTI3NjJdCitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgorCistLS0KKyBNb2R1bGVzL0ZpbmRCb29zdC5jbWFrZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworSW5kZXg6IGNtYWtlLTMuMTAuMy9Nb2R1bGVzL0ZpbmRCb29zdC5jbWFrZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGNtYWtlLTMuMTAuMy5vcmlnL01vZHVsZXMvRmluZEJvb3N0LmNtYWtlCisrKysgY21ha2UtMy4xMC4zL01vZHVsZXMvRmluZEJvb3N0LmNtYWtlCitAQCAtODMxLDggKzgzMSw4IEBAIGZ1bmN0aW9uKF9Cb29zdF9DT01QT05FTlRfSEVBREVSUyBjb21wb24KKyAgIHNldChfQm9vc3RfQ09OVEFJTkVSX0hFQURFUlMgICAgICAgICAgICJib29zdC9jb250YWluZXIvY29udGFpbmVyX2Z3ZC5ocHAiKQorICAgc2V0KF9Cb29zdF9DT05URVhUX0hFQURFUlMgICAgICAgICAgICAgImJvb3N0L2NvbnRleHQvYWxsLmhwcCIpCisgICBzZXQoX0Jvb3N0X0NPUk9VVElORV9IRUFERVJTICAgICAgICAgICAiYm9vc3QvY29yb3V0aW5lL2FsbC5ocHAiKQorLSAgc2V0KF9Cb29zdF9FWENFUFRJT05fSEVBREVSUyAgICAgICAgICAgImJvb3N0L2V4Y2VwdGlvbi9leGNlcHRpb24uaHBwIikKKyAgIHNldChfQm9vc3RfREFURV9USU1FX0hFQURFUlMgICAgICAgICAgICJib29zdC9kYXRlX3RpbWUvZGF0ZS5ocHAiKQorKyAgc2V0KF9Cb29zdF9FWENFUFRJT05fSEVBREVSUyAgICAgICAgICAgImJvb3N0L2V4Y2VwdGlvbi9leGNlcHRpb24uaHBwIikKKyAgIHNldChfQm9vc3RfRklCRVJfSEVBREVSUyAgICAgICAgICAgICAgICJib29zdC9maWJlci9hbGwuaHBwIikKKyAgIHNldChfQm9vc3RfRklMRVNZU1RFTV9IRUFERVJTICAgICAgICAgICJib29zdC9maWxlc3lzdGVtL3BhdGguaHBwIikKKyAgIHNldChfQm9vc3RfR1JBUEhfSEVBREVSUyAgICAgICAgICAgICAgICJib29zdC9ncmFwaC9hZGphY2VuY3lfbGlzdC5ocHAiKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUZpbmRDVURBLVVzZS1maW5kX3Byb2dyYW0taWYtZmluZF9ob3N0X3Byb2dyYW0taXMtbm8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtRmluZENVREEtVXNlLWZpbmRfcHJvZ3JhbS1pZi1maW5kX2hvc3RfcHJvZ3JhbS1pcy1uby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWI4MjBkYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtRmluZENVREEtVXNlLWZpbmRfcHJvZ3JhbS1pZi1maW5kX2hvc3RfcHJvZ3JhbS1pcy1uby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gNDZkMjVlNzgyZWJkOWI2YzUwNzcxYjZmMzA0MzNjNThmYWUwM2E1MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1heGltZSBSb3Vzc2luLULDqWxhbmdlciA8bWF4aW1lLnJvdXNzaW5iZWxhbmdlckBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDI2IEp1biAyMDE3IDExOjMwOjA3IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNtYWtlOiBVc2UgZmluZF9wcm9ncmFtIGlmIGZpbmRfaG9zdF9wcm9ncmFtIGlzIG5vdAotIGF2YWlsYWJsZQotCi1DTWFrZSBkb2VzIG5vdCBkZWZpbmUgdGhlIGBmaW5kX2hvc3RfcHJvZ3JhbWAgY29tbWFuZCB3ZSd2ZSBiZWVuIHVzaW5nCi1pbiB0aGUgY3Jvc3MtY29tcGlsaW5nIGNvZGUgcGF0aC4gIEl0IHdhcyBwcm92aWRlZCBieSBhIHdpZGVseSB1c2VkCi1BbmRyb2lkIHRvb2xjaGFpbiBmaWxlLiAgRm9yIGNvbXBhdGliaWxpdHksIGNvbnRpbnVlIHRvIHVzZQotYGZpbmRfaG9zdF9wcm9ncmFtYCBpZiBhdmFpbGFibGUsIGJ1dCBvdGhlcndpc2UgdXNlIGp1c3QgYGZpbmRfcHJvZ3JhbWAuCi0KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKLVtodHRwczovL2dpdGxhYi5raXR3YXJlLmNvbS9jbWFrZS9jbWFrZS9tZXJnZV9yZXF1ZXN0cy8xMDA5XQotICAgICAgICAtIFdpbGwgYmUgaW4gMy4xMAotCi1TaWduZWQtb2ZmLWJ5OiBNYXhpbWUgUm91c3Npbi1Cw6lsYW5nZXIgPG1heGltZS5yb3Vzc2luYmVsYW5nZXJAZ21haWwuY29tPgotLS0tCi0gTW9kdWxlcy9GaW5kQ1VEQS5jbWFrZSB8IDYgKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvTW9kdWxlcy9GaW5kQ1VEQS5jbWFrZSBiL01vZHVsZXMvRmluZENVREEuY21ha2UKLWluZGV4IGE0ZGNhNTQuLjc3Y2EzNTEgMTAwNjQ0Ci0tLS0gYS9Nb2R1bGVzL0ZpbmRDVURBLmNtYWtlCi0rKysgYi9Nb2R1bGVzL0ZpbmRDVURBLmNtYWtlCi1AQCAtNjc5LDcgKzY3OSwxMSBAQCBpZihDTUFLRV9DUk9TU0NPTVBJTElORykKLSAgICMgYWRkIGtub3duIENVREEgdGFyZ2V0ciByb290IHBhdGggdG8gdGhlIHNldCBvZiBkaXJlY3RvcmllcyB3ZSBzZWFyY2ggZm9yIHByb2dyYW1zLCBsaWJyYXJpZXMgYW5kIGhlYWRlcnMKLSAgIHNldCggQ01BS0VfRklORF9ST09UX1BBVEggIiR7Q1VEQV9UT09MS0lUX1RBUkdFVF9ESVJ9OyR7Q01BS0VfRklORF9ST09UX1BBVEh9IikKLSAgIG1hY3JvKCBjdWRhX2ZpbmRfaG9zdF9wcm9ncmFtICkKLS0gICAgZmluZF9ob3N0X3Byb2dyYW0oICR7QVJHTn0gKQotKyAgICBpZiAoQ09NTUFORCBmaW5kX2hvc3RfcHJvZ3JhbSkKLSsgICAgICBmaW5kX2hvc3RfcHJvZ3JhbSggJHtBUkdOfSApCi0rICAgIGVsc2UoKQotKyAgICAgIGZpbmRfcHJvZ3JhbSggJHtBUkdOfSApCi0rICAgIGVuZGlmKCkKLSAgIGVuZG1hY3JvKCkKLSBlbHNlKCkKLSAgICMgZm9yIG5vbi1jcm9zcy1jb21waWxlLCBmaW5kX2hvc3RfcHJvZ3JhbSA9PSBmaW5kX3Byb2dyYW0gYW5kIENVREFfVE9PTEtJVF9UQVJHRVRfRElSID09IENVREFfVE9PTEtJVF9ST09UX0RJUgotLS0KLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMi1GaW5kQm9vc3QtSW1wbGVtZW50LUFyY2hpdGVjdHVyZS1hbmQtQWRkcmVzcy1Nb2RlbC10LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAyLUZpbmRCb29zdC1JbXBsZW1lbnQtQXJjaGl0ZWN0dXJlLWFuZC1BZGRyZXNzLU1vZGVsLXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgzMDFjNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMi1GaW5kQm9vc3QtSW1wbGVtZW50LUFyY2hpdGVjdHVyZS1hbmQtQWRkcmVzcy1Nb2RlbC10LnBhdGNoCkBAIC0wLDAgKzEsMTMyIEBACitGcm9tIGIwNDRmNjlhNDEzMTIzZjE1YTA1MDM0YzAwYThlMzc2Mzc2NGExZTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiUGF1bCBcIlRCQmxlXCIgSGFtcHNvbiIgPFBhdWwuSGFtcHNvbkBQb2JveC5jb20+CitEYXRlOiBGcmksIDI5IERlYyAyMDE3IDIxOjUwOjU0ICsxMTAwCitTdWJqZWN0OiBbUEFUQ0ggMi82XSBGaW5kQm9vc3Q6IEltcGxlbWVudCAiQXJjaGl0ZWN0dXJlIGFuZCBBZGRyZXNzIE1vZGVsIiB0YWcKKworVGhpcyB0YWcgaXMgbmV3IGluIEJvb3N0IDEuNjYuMCwgYW5kIGlzIHByZXNlbnQgaW4gdGhlICd2ZXJzaW9uZWQnCitsaWJyYXJ5IGZpbGUgbmFtZSBsYXlvdXQuCisKK0FmZmVjdHMgY21ha2UgPCAzLjExLjAKKworVXBzdGVhbS1TdGF0dXM6IEJhY2twb3J0CitbWW9jdG8gMTI3NjJdCitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgorCistLS0KKyBNb2R1bGVzL0ZpbmRCb29zdC5jbWFrZSB8IDUyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCisKK0luZGV4OiBjbWFrZS0zLjEwLjMvTW9kdWxlcy9GaW5kQm9vc3QuY21ha2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBjbWFrZS0zLjEwLjMub3JpZy9Nb2R1bGVzL0ZpbmRCb29zdC5jbWFrZQorKysrIGNtYWtlLTMuMTAuMy9Nb2R1bGVzL0ZpbmRCb29zdC5jbWFrZQorQEAgLTEzODUsOCArMTM4NSwxMSBAQCBpZihCb29zdF9ERUJVRykKKyBlbmRpZigpCisgCisgIz09PT09PT09PT09PT09PT09PT09PT0KKy0jIFN5c3RlbWF0aWNhbGx5IGJ1aWxkIHVwIHRoZSBCb29zdCBBQkkgdGFnCistIyBodHRwOi8vYm9vc3Qub3JnL2RvYy9saWJzLzFfNDFfMC9tb3JlL2dldHRpbmdfc3RhcnRlZC93aW5kb3dzLmh0bWwjbGlicmFyeS1uYW1pbmcKKysjIFN5c3RlbWF0aWNhbGx5IGJ1aWxkIHVwIHRoZSBCb29zdCBBQkkgdGFnIGZvciB0aGUgJ3RhZ2dlZCcgYW5kICd2ZXJzaW9uZWQnIGxheW91dHMKKysjIGh0dHA6Ly9ib29zdC5vcmcvZG9jL2xpYnMvMV82Nl8wL21vcmUvZ2V0dGluZ19zdGFydGVkL3dpbmRvd3MuaHRtbCNsaWJyYXJ5LW5hbWluZworKyMgaHR0cDovL2Jvb3N0Lm9yZy9kb2MvbGlicy8xXzY2XzAvYm9vc3QvY29uZmlnL2F1dG9fbGluay5ocHAKKysjIGh0dHA6Ly9ib29zdC5vcmcvZG9jL2xpYnMvMV82Nl8wL3Rvb2xzL2J1aWxkL3NyYy90b29scy9jb21tb24uamFtCisrIyBodHRwOi8vYm9vc3Qub3JnL2RvYy9saWJzLzFfNjZfMC9ib29zdGNwcC5qYW0KKyBzZXQoIF9ib29zdF9SRUxFQVNFX0FCSV9UQUcgIi0iKQorIHNldCggX2Jvb3N0X0RFQlVHX0FCSV9UQUcgICAiLSIpCisgIyBLZXkgICAgICAgVXNlIHRoaXMgbGlicmFyeSB3aGVuOgorQEAgLTE0MTgsMTEgKzE0MjEsNDAgQEAgaWYoQm9vc3RfVVNFX1NUTFBPUlQpCisgICBzdHJpbmcoQVBQRU5EIF9ib29zdF9ERUJVR19BQklfVEFHICJwIikKKyBlbmRpZigpCisgIyAgbiAgICAgICAgdXNpbmcgdGhlIFNUTHBvcnQgZGVwcmVjYXRlZCAibmF0aXZlIGlvc3RyZWFtcyIgZmVhdHVyZQorKyMgICAgICAgICAgIHJlbW92ZWQgZnJvbSB0aGUgZG9jdW1lbnRhdGlvbiBpbiAxLjQzLjAgYnV0IHN0aWxsIHByZXNlbnQgaW4KKysjICAgICAgICAgICBib29zdC9jb25maWcvYXV0b19saW5rLmhwcAorIGlmKEJvb3N0X1VTRV9TVExQT1JUX0RFUFJFQ0FURURfTkFUSVZFX0lPU1RSRUFNUykKKyAgIHN0cmluZyhBUFBFTkQgX2Jvb3N0X1JFTEVBU0VfQUJJX1RBRyAibiIpCisgICBzdHJpbmcoQVBQRU5EIF9ib29zdF9ERUJVR19BQklfVEFHICJuIikKKyBlbmRpZigpCisgCisrIyAgLXg4NiAgICAgQXJjaGl0ZWN0dXJlIGFuZCBhZGRyZXNzIG1vZGVsIHRhZworKyMgICAgICAgICAgIEZpcnN0IGNoYXJhY3RlciBpcyB0aGUgYXJjaGl0ZWN0dXJlLCB0aGVuIHdvcmQtc2l6ZSwgZWl0aGVyIDMyIG9yIDY0CisrIyAgICAgICAgICAgT25seSB1c2VkIGluICd2ZXJzaW9uZWQnIGxheW91dCwgYWRkZWQgaW4gQm9vc3QgMS42Ni4wCisrc2V0KF9ib29zdF9BUkNISVRFQ1RVUkVfVEFHICIiKQorKyMge0NNQUtFX0NYWF9DT01QSUxFUl9BUkNISVRFQ1RVUkVfSUR9IGlzIG5vdCBjdXJyZW50bHkgc2V0IGZvciBhbGwgY29tcGlsZXJzCisraWYoTk9UICJ4JHtDTUFLRV9DWFhfQ09NUElMRVJfQVJDSElURUNUVVJFX0lEfSIgU1RSRVFVQUwgIngiIEFORCBOT1QgQm9vc3RfVkVSU0lPTiBWRVJTSU9OX0xFU1MgMTA2NjAwKQorKyAgc3RyaW5nKEFQUEVORCBfYm9vc3RfQVJDSElURUNUVVJFX1RBRyAiLSIpCisrICAjIFRoaXMgbmVlZHMgdG8gYmUga2VwdCBpbi1zeW5jIHdpdGggdGhlIHNlY3Rpb24gb2YgQ01ha2VQbGF0Zm9ybUlkLmguaW4KKysgICMgaW5zaWRlICdkZWZpbmVkKF9XSU4zMikgJiYgZGVmaW5lZChfTVNDX1ZFUiknCisrICBpZigke0NNQUtFX0NYWF9DT01QSUxFUl9BUkNISVRFQ1RVUkVfSUR9IFNUUkVRVUFMICJJQTY0IikKKysgICAgc3RyaW5nKEFQUEVORCBfYm9vc3RfQVJDSElURUNUVVJFX1RBRyAiaSIpCisrICBlbHNlaWYoJHtDTUFLRV9DWFhfQ09NUElMRVJfQVJDSElURUNUVVJFX0lEfSBTVFJFUVVBTCAiWDg2IgorKyAgICAgICAgICAgIE9SICR7Q01BS0VfQ1hYX0NPTVBJTEVSX0FSQ0hJVEVDVFVSRV9JRH0gU1RSRVFVQUwgIng2NCIpCisrICAgIHN0cmluZyhBUFBFTkQgX2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUcgIngiKQorKyAgZWxzZWlmKCR7Q01BS0VfQ1hYX0NPTVBJTEVSX0FSQ0hJVEVDVFVSRV9JRH0gTUFUQ0hFUyAiXkFSTSIpCisrICAgIHN0cmluZyhBUFBFTkQgX2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUcgImEiKQorKyAgZWxzZWlmKCR7Q01BS0VfQ1hYX0NPTVBJTEVSX0FSQ0hJVEVDVFVSRV9JRH0gU1RSRVFVQUwgIk1JUFMiKQorKyAgICBzdHJpbmcoQVBQRU5EIF9ib29zdF9BUkNISVRFQ1RVUkVfVEFHICJtIikKKysgIGVuZGlmKCkKKysKKysgIGlmKENNQUtFX1NJWkVPRl9WT0lEX1AgRVFVQUwgOCkKKysgICAgc3RyaW5nKEFQUEVORCBfYm9vc3RfQVJDSElURUNUVVJFX1RBRyAiNjQiKQorKyAgZWxzZSgpCisrICAgIHN0cmluZyhBUFBFTkQgX2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUcgIjMyIikKKysgIGVuZGlmKCkKKytlbmRpZigpCisrCisgaWYoQm9vc3RfREVCVUcpCisgICBtZXNzYWdlKFNUQVRVUyAiWyAke0NNQUtFX0NVUlJFTlRfTElTVF9GSUxFfToke0NNQUtFX0NVUlJFTlRfTElTVF9MSU5FfSBdICIKKyAgICAgIl9ib29zdF9SRUxFQVNFX0FCSV9UQUcgPSAke19ib29zdF9SRUxFQVNFX0FCSV9UQUd9IikKK0BAIC0xNjE2LDIyICsxNjQ4LDIyIEBAIGZvcmVhY2goQ09NUE9ORU5UICR7Qm9vc3RfRklORF9DT01QT05FTlQKKyAgIHVuc2V0KF9ib29zdF9SRUxFQVNFX05BTUVTKQorICAgZm9yZWFjaChjb21waWxlciBJTiBMSVNUUyBfYm9vc3RfQ09NUElMRVIpCisgICAgIGxpc3QoQVBQRU5EIF9ib29zdF9SRUxFQVNFX05BTUVTCistICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke2NvbXBpbGVyfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9BQklfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQorKyAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtjb21waWxlcn0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X1JFTEVBU0VfQUJJX1RBR30ke19ib29zdF9BUkNISVRFQ1RVUkVfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQorICAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtjb21waWxlcn0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X1JFTEVBU0VfQUJJX1RBR30gKQorICAgZW5kZm9yZWFjaCgpCisgICBsaXN0KEFQUEVORCBfYm9vc3RfUkVMRUFTRV9OQU1FUworLSAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9BQklfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQorKyAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9BQklfVEFHfSR7X2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUd9LSR7Qm9vc3RfTElCX1ZFUlNJT059CisgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9SRUxFQVNFX0FCSV9UQUd9CisgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9ICkKKyAgIGlmKF9ib29zdF9TVEFUSUNfUlVOVElNRV9XT1JLQVJPVU5EKQorICAgICBzZXQoX2Jvb3N0X1JFTEVBU0VfU1RBVElDX0FCSV9UQUcgIi1zJHtfYm9vc3RfUkVMRUFTRV9BQklfVEFHfSIpCisgICAgIGZvcmVhY2goY29tcGlsZXIgSU4gTElTVFMgX2Jvb3N0X0NPTVBJTEVSKQorICAgICAgIGxpc3QoQVBQRU5EIF9ib29zdF9SRUxFQVNFX05BTUVTCistICAgICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7Y29tcGlsZXJ9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9SRUxFQVNFX1NUQVRJQ19BQklfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQorKyAgICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke2NvbXBpbGVyfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9TVEFUSUNfQUJJX1RBR30ke19ib29zdF9BUkNISVRFQ1RVUkVfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQorICAgICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke2NvbXBpbGVyfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9TVEFUSUNfQUJJX1RBR30gKQorICAgICBlbmRmb3JlYWNoKCkKKyAgICAgbGlzdChBUFBFTkQgX2Jvb3N0X1JFTEVBU0VfTkFNRVMKKy0gICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9TVEFUSUNfQUJJX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KKysgICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9TVEFUSUNfQUJJX1RBR30ke19ib29zdF9BUkNISVRFQ1RVUkVfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQorICAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9SRUxFQVNFX1NUQVRJQ19BQklfVEFHfSApCisgICBlbmRpZigpCisgICBpZihCb29zdF9USFJFQURBUEkgQU5EICR7Q09NUE9ORU5UfSBTVFJFUVVBTCAidGhyZWFkIikKK0BAIC0xNjY2LDExICsxNjk4LDExIEBAIGZvcmVhY2goQ09NUE9ORU5UICR7Qm9vc3RfRklORF9DT01QT05FTlQKKyAgIHVuc2V0KF9ib29zdF9ERUJVR19OQU1FUykKKyAgIGZvcmVhY2goY29tcGlsZXIgSU4gTElTVFMgX2Jvb3N0X0NPTVBJTEVSKQorICAgICBsaXN0KEFQUEVORCBfYm9vc3RfREVCVUdfTkFNRVMKKy0gICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7Y29tcGlsZXJ9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9ERUJVR19BQklfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQorKyAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtjb21waWxlcn0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X0RFQlVHX0FCSV9UQUd9JHtfYm9vc3RfQVJDSElURUNUVVJFX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KKyAgICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7Y29tcGlsZXJ9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9ERUJVR19BQklfVEFHfSApCisgICBlbmRmb3JlYWNoKCkKKyAgIGxpc3QoQVBQRU5EIF9ib29zdF9ERUJVR19OQU1FUworLSAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfREVCVUdfQUJJX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KKysgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X0RFQlVHX0FCSV9UQUd9JHtfYm9vc3RfQVJDSElURUNUVVJFX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KKyAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X0RFQlVHX0FCSV9UQUd9CisgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0KKyAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0gKQorQEAgLTE2NzgsMTEgKzE3MTAsMTEgQEAgZm9yZWFjaChDT01QT05FTlQgJHtCb29zdF9GSU5EX0NPTVBPTkVOVAorICAgICBzZXQoX2Jvb3N0X0RFQlVHX1NUQVRJQ19BQklfVEFHICItcyR7X2Jvb3N0X0RFQlVHX0FCSV9UQUd9IikKKyAgICAgZm9yZWFjaChjb21waWxlciBJTiBMSVNUUyBfYm9vc3RfQ09NUElMRVIpCisgICAgICAgbGlzdChBUFBFTkQgX2Jvb3N0X0RFQlVHX05BTUVTCistICAgICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7Y29tcGlsZXJ9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9ERUJVR19TVEFUSUNfQUJJX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KKysgICAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtjb21waWxlcn0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X0RFQlVHX1NUQVRJQ19BQklfVEFHfSR7X2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUd9LSR7Qm9vc3RfTElCX1ZFUlNJT059CisgICAgICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7Y29tcGlsZXJ9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9ERUJVR19TVEFUSUNfQUJJX1RBR30gKQorICAgICBlbmRmb3JlYWNoKCkKKyAgICAgbGlzdChBUFBFTkQgX2Jvb3N0X0RFQlVHX05BTUVTCistICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X0RFQlVHX1NUQVRJQ19BQklfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQorKyAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9ERUJVR19TVEFUSUNfQUJJX1RBR30ke19ib29zdF9BUkNISVRFQ1RVUkVfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQorICAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9ERUJVR19TVEFUSUNfQUJJX1RBR30gKQorICAgZW5kaWYoKQorICAgaWYoQm9vc3RfVEhSRUFEQVBJIEFORCAke0NPTVBPTkVOVH0gU1RSRVFVQUwgInRocmVhZCIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDMtRmluZEJvb3N0LVNlYXJjaC1mb3ItdXBzdHJlYW0tcGFja2FnZWQtbGlicy1uZXh0LXRvLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMy1GaW5kQm9vc3QtU2VhcmNoLWZvci11cHN0cmVhbS1wYWNrYWdlZC1saWJzLW5leHQtdG8tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxNzhmNWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDMtRmluZEJvb3N0LVNlYXJjaC1mb3ItdXBzdHJlYW0tcGFja2FnZWQtbGlicy1uZXh0LXRvLS5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIGQ1NmRlZmY3ZDEyN2IwMzA3MzliZDAwMzQ2MDlkMDA0NjEyMWQ4Y2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiUGF1bCBcIlRCQmxlXCIgSGFtcHNvbiIgPFBhdWwuSGFtcHNvbkBQb2JveC5jb20+CitEYXRlOiBGcmksIDI5IERlYyAyMDE3IDIyOjM4OjM2ICsxMTAwCitTdWJqZWN0OiBbUEFUQ0ggMy82XSBGaW5kQm9vc3Q6IFNlYXJjaCBmb3IgdXBzdHJlYW0tcGFja2FnZWQgbGlicyBuZXh0IHRvCisgaW5jbHVkZXMKKworVXBzdHJlYW0gcGFja2FnZXMgQm9vc3QgYmluYXJpZXMgZm9yIFdpbmRvd3Mgd2l0aCB0aGUgJ2Jvb3N0JyBkaXJlY3RvcnkKKyh0aGUgSU5DTFVERV9ESVIpIG5leHQgdG8gdGhlIGxpYi0uLi4gZGlyZWN0b3J5ICh0aGUgTElCUkFSWV9ESVIpLgorCitBZmZlY3RzIGNtYWtlIDwgMy4xMS4wCisKK1Vwc3RlYW0tU3RhdHVzOiBCYWNrcG9ydAorW1lvY3RvIDEyNzYyXQorU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KKworLS0tCisgTW9kdWxlcy9GaW5kQm9vc3QuY21ha2UgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworSW5kZXg6IGNtYWtlLTMuMTAuMy9Nb2R1bGVzL0ZpbmRCb29zdC5jbWFrZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGNtYWtlLTMuMTAuMy5vcmlnL01vZHVsZXMvRmluZEJvb3N0LmNtYWtlCisrKysgY21ha2UtMy4xMC4zL01vZHVsZXMvRmluZEJvb3N0LmNtYWtlCitAQCAtMTUwMiw2ICsxNTAyLDcgQEAgZm9yZWFjaChjIERFQlVHIFJFTEVBU0UpCisgICAgICAgJHtCb29zdF9JTkNMVURFX0RJUn0vc3RhZ2UvbGliCisgICAgICAgKQorICAgICBfQm9vc3RfVVBEQVRFX1dJTkRPV1NfTElCUkFSWV9TRUFSQ0hfRElSU19XSVRIX1BSRUJVSUxUX1BBVEhTKF9ib29zdF9MSUJSQVJZX1NFQVJDSF9ESVJTXyR7Y30gIiR7Qm9vc3RfSU5DTFVERV9ESVJ9Ly4uIikKKysgICAgX0Jvb3N0X1VQREFURV9XSU5ET1dTX0xJQlJBUllfU0VBUkNIX0RJUlNfV0lUSF9QUkVCVUlMVF9QQVRIUyhfYm9vc3RfTElCUkFSWV9TRUFSQ0hfRElSU18ke2N9ICIke0Jvb3N0X0lOQ0xVREVfRElSfSIpCisgICAgIGlmKCBCb29zdF9OT19TWVNURU1fUEFUSFMgKQorICAgICAgIGxpc3QoQVBQRU5EIF9ib29zdF9MSUJSQVJZX1NFQVJDSF9ESVJTXyR7Y30gTk9fQ01BS0VfU1lTVEVNX1BBVEggTk9fU1lTVEVNX0VOVklST05NRU5UX1BBVEgpCisgICAgIGVsc2UoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9jbWFrZS1QcmV2ZW50LXRoZS1kZXRlY3Rpb24tb2YtUXQ1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9jbWFrZS1QcmV2ZW50LXRoZS1kZXRlY3Rpb24tb2YtUXQ1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4YjdlOTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlL2NtYWtlLVByZXZlbnQtdGhlLWRldGVjdGlvbi1vZi1RdDUucGF0Y2gKQEAgLTAsMCArMSwyMTUgQEAKK0Zyb20gODc1YzExZGJmODdkMTI1OGFkN2QzNjk3YTQwZDYwNWQ1MDNlNTY3MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CitEYXRlOiBXZWQsIDE3IEphbiAyMDE4IDEwOjAyOjE0IC0wMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGNtYWtlOiBQcmV2ZW50IHRoZSBkZXRlY3Rpb24gb2YgUXQ1CitPcmdhbml6YXRpb246IE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgorCitDTWFrZSBkb2Vzbid0IGhhdmUgZGVwZW5kZW5jeSBvbiBxdDQvcXQ1LCBzbyB0aGVzZSB0ZXN0cyB1c3VhbGx5IGZhaWwKK2J1dCBzdGlsbCBjYW4gY2F1c2UgdW5kZXRlcm1pbmlzdGljIHJlc3VsdHMgb3IgYnVpbGQgZmFpbHVyZXMgKHdoZW4KK09FX1FNQUtFX1BBVEhfRVhURVJOQUxfSE9TVF9CSU5TIGlzIHVuZGVmaW5lZCBvciBuYXRpdmUgcW1ha2UgcmVtb3ZlZAord2hpbGUgcnVubmluZyB0aGUgdGVzdCBpbiBjbWFrZSkKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorCitTaWduZWQtb2ZmLWJ5OiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgorLS0tCisgU291cmNlL1F0RGlhbG9nL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgVGVzdHMvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgVGVzdHMvUXQ0QW5kNUF1dG9tb2MvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBUZXN0cy9RdEF1dG9VaWNJbnRlcmZhY2UvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICB8IDIgKy0KKyBUZXN0cy9RdEF1dG9nZW4vQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBUZXN0cy9RdEF1dG9nZW4vbWFjb3NGVy9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICB8IDIgKy0KKyBUZXN0cy9RdEF1dG9nZW4vbW9jRGVwZW5kcy9DTWFrZUxpc3RzLnR4dCAgICAgICAgICB8IDIgKy0KKyBUZXN0cy9RdEF1dG9nZW5SZXJ1bi9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICB8IDQgKystLQorIFRlc3RzL1F0QXV0b2dlblJlcnVuL21vY1BsdWdpbi9DTWFrZUxpc3RzLnR4dCAgICAgIHwgMiArLQorIFRlc3RzL1F0QXV0b2dlblJlcnVuL21vY1JlcnVuL0NNYWtlTGlzdHMudHh0ICAgICAgIHwgMiArLQorIFRlc3RzL1F0QXV0b2dlblJlcnVuL3JjY0RlcGVuZHMvQ01ha2VMaXN0cy50eHQgICAgIHwgMiArLQorIFRlc3RzL1J1bkNNYWtlL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIFRlc3RzL1J1bkNNYWtlL0luY29tcGF0aWJsZVF0L0luY29tcGF0aWJsZVF0LmNtYWtlIHwgMiArLQorIDEzIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvU291cmNlL1F0RGlhbG9nL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1F0RGlhbG9nL0NNYWtlTGlzdHMudHh0CitpbmRleCBiMzg3OTdiY2EuLmI1ZmJmYzVmYSAxMDA2NDQKKy0tLSBhL1NvdXJjZS9RdERpYWxvZy9DTWFrZUxpc3RzLnR4dAorKysrIGIvU291cmNlL1F0RGlhbG9nL0NNYWtlTGlzdHMudHh0CitAQCAtNiw3ICs2LDcgQEAgaWYoUE9MSUNZIENNUDAwMjApCisgICBjbWFrZV9wb2xpY3koU0VUIENNUDAwMjAgTkVXKSAjIERyb3Agd2hlbiBDTWFrZSA+PSAyLjguMTEgcmVxdWlyZWQKKyBlbmRpZigpCisgQ01ha2VfT1BUSU9OQUxfQ09NUE9ORU5UKGNtYWtlLWd1aSkKKy1maW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBRVUlFVCkKKysjZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUVVJRVQpCisgaWYgKFF0NVdpZGdldHNfRk9VTkQpCisgICBpbmNsdWRlX2RpcmVjdG9yaWVzKCR7UXQ1V2lkZ2V0c19JTkNMVURFX0RJUlN9KQorICAgYWRkX2RlZmluaXRpb25zKCR7UXQ1V2lkZ2V0c19ERUZJTklUT05TfSkKK2RpZmYgLS1naXQgYS9UZXN0cy9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL0NNYWtlTGlzdHMudHh0CitpbmRleCA1MzM3ODhhNDQuLjMyZWYwM2M1NSAxMDA2NDQKKy0tLSBhL1Rlc3RzL0NNYWtlTGlzdHMudHh0CisrKysgYi9UZXN0cy9DTWFrZUxpc3RzLnR4dAorQEAgLTEyNjAsNyArMTI2MCw3IEBAICR7Q01ha2VfQklOQVJZX0RJUn0vYmluL2NtYWtlIC1ERElSPWRldiAtUCAke0NNYWtlX1NPVVJDRV9ESVJ9L1V0aWxpdGllcy9SZWxlYXNlCisgICAgIHNldChDTWFrZV9URVNUX1F0NSAxKQorICAgZW5kaWYoKQorICAgaWYoQ01ha2VfVEVTVF9RdDUpCistICAgIGZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFFVSUVUIE5PX01PRFVMRSkKKysgICAgI2ZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFFVSUVUIE5PX01PRFVMRSkKKyAgIGVuZGlmKCkKKyAgIGlmKENNYWtlX1RFU1RfUXQ1IEFORCBRdDVXaWRnZXRzX0ZPVU5EKQorICAgICBhZGRfdGVzdChOQU1FIFF0NUF1dG9nZW4gQ09NTUFORCAke0NNQUtFX0NURVNUX0NPTU1BTkR9CitkaWZmIC0tZ2l0IGEvVGVzdHMvUXQ0QW5kNUF1dG9tb2MvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9RdDRBbmQ1QXV0b21vYy9DTWFrZUxpc3RzLnR4dAoraW5kZXggYWQ3NDk2MWQ5Li5hOWRkNzRiMTUgMTAwNjQ0CistLS0gYS9UZXN0cy9RdDRBbmQ1QXV0b21vYy9DTWFrZUxpc3RzLnR4dAorKysrIGIvVGVzdHMvUXQ0QW5kNUF1dG9tb2MvQ01ha2VMaXN0cy50eHQKK0BAIC0zLDExICszLDExIEBAIGNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAyLjguMTIpCisgcHJvamVjdChRdDRBbmQ1QXV0b21vYykKKyAKKyBpZiAoUVRfUkVWRVJTRV9GSU5EX09SREVSKQorLSAgZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpCisrICAjZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpCisgICBmaW5kX3BhY2thZ2UoUXQ0IFJFUVVJUkVEKQorIGVsc2UoKQorICAgZmluZF9wYWNrYWdlKFF0NCBSRVFVSVJFRCkKKy0gIGZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQorKyAgI2ZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQorIGVuZGlmKCkKKyAKKyBzZXQoQ01BS0VfQVVUT01PQyBPTikKK2RpZmYgLS1naXQgYS9UZXN0cy9RdEF1dG9VaWNJbnRlcmZhY2UvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9RdEF1dG9VaWNJbnRlcmZhY2UvQ01ha2VMaXN0cy50eHQKK2luZGV4IGE1YzJkOTliMi4uMmQ2NDBlNGEzIDEwMDY0NAorLS0tIGEvVGVzdHMvUXRBdXRvVWljSW50ZXJmYWNlL0NNYWtlTGlzdHMudHh0CisrKysgYi9UZXN0cy9RdEF1dG9VaWNJbnRlcmZhY2UvQ01ha2VMaXN0cy50eHQKK0BAIC0xNCw3ICsxNCw3IEBAIGVsc2UoKQorICAgaWYgKE5PVCBRVF9URVNUX1ZFUlNJT04gU1RSRVFVQUwgNSkKKyAgICAgbWVzc2FnZShTRU5EX0VSUk9SICJJbnZhbGlkIFF0IHZlcnNpb24gc3BlY2lmaWVkLiIpCisgICBlbmRpZigpCistICBmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBSRVFVSVJFRCkKKysgICNmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBSRVFVSVJFRCkKKyAKKyAgIHNldChRVF9DT1JFX1RBUkdFVCBRdDU6OkNvcmUpCisgICBzZXQoUVRfR1VJX1RBUkdFVCBRdDU6OldpZGdldHMpCitkaWZmIC0tZ2l0IGEvVGVzdHMvUXRBdXRvZ2VuL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvUXRBdXRvZ2VuL0NNYWtlTGlzdHMudHh0CitpbmRleCBkZmY5ZDBjNjYuLmM2ZThmYzNmNSAxMDA2NDQKKy0tLSBhL1Rlc3RzL1F0QXV0b2dlbi9DTWFrZUxpc3RzLnR4dAorKysrIGIvVGVzdHMvUXRBdXRvZ2VuL0NNYWtlTGlzdHMudHh0CitAQCAtMjMsNyArMjMsNyBAQCBlbHNlKCkKKyAgIGlmIChOT1QgUVRfVEVTVF9WRVJTSU9OIFNUUkVRVUFMIDUpCisgICAgIG1lc3NhZ2UoU0VORF9FUlJPUiAiSW52YWxpZCBRdCB2ZXJzaW9uIHNwZWNpZmllZC4iKQorICAgZW5kaWYoKQorLSAgZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUkVRVUlSRUQpCisrICAjZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUkVRVUlSRUQpCisgCisgICBzZXQoUVRfUVRDT1JFX1RBUkdFVCBRdDU6OkNvcmUpCisgCitkaWZmIC0tZ2l0IGEvVGVzdHMvUXRBdXRvZ2VuL21hY29zRlcvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9RdEF1dG9nZW4vbWFjb3NGVy9DTWFrZUxpc3RzLnR4dAoraW5kZXggMTE0ZDliYWMwLi4xNTdmZTBhYWEgMTAwNjQ0CistLS0gYS9UZXN0cy9RdEF1dG9nZW4vbWFjb3NGVy9DTWFrZUxpc3RzLnR4dAorKysrIGIvVGVzdHMvUXRBdXRvZ2VuL21hY29zRlcvQ01ha2VMaXN0cy50eHQKK0BAIC0xLDcgKzEsNyBAQAorIGNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjgpCisgcHJvamVjdChtYWNvcy1mdy10ZXN0KQorIAorLWZpbmRfcGFja2FnZShRdDVUZXN0IFJFUVVJUkVEKQorKyNmaW5kX3BhY2thZ2UoUXQ1VGVzdCBSRVFVSVJFRCkKKyAKKyBzZXQoQ01BS0VfQ1hYX1NUQU5EQVJEIDExKQorIHNldChDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgJHtDTUFLRV9CSU5BUllfRElSfS9vdXRwdXQvYmluKQorZGlmZiAtLWdpdCBhL1Rlc3RzL1F0QXV0b2dlbi9tb2NEZXBlbmRzL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvUXRBdXRvZ2VuL21vY0RlcGVuZHMvQ01ha2VMaXN0cy50eHQKK2luZGV4IDgyMTdiOGRiZi4uODZiYjdiYzdmIDEwMDY0NAorLS0tIGEvVGVzdHMvUXRBdXRvZ2VuL21vY0RlcGVuZHMvQ01ha2VMaXN0cy50eHQKKysrKyBiL1Rlc3RzL1F0QXV0b2dlbi9tb2NEZXBlbmRzL0NNYWtlTGlzdHMudHh0CitAQCAtMTAsNyArMTAsNyBAQCBlbHNlKCkKKyAgICAgbWVzc2FnZShTRU5EX0VSUk9SICJJbnZhbGlkIFF0IHZlcnNpb24gc3BlY2lmaWVkLiIpCisgICBlbmRpZigpCisgCistICBmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkKKysgICNmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkKKyAgIHNldChRVF9DT1JFX1RBUkdFVCBRdDU6OkNvcmUpCisgZW5kaWYoKQorIAorZGlmZiAtLWdpdCBhL1Rlc3RzL1F0QXV0b2dlblJlcnVuL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvUXRBdXRvZ2VuUmVydW4vQ01ha2VMaXN0cy50eHQKK2luZGV4IGU3MmMxOTEyZS4uZDdlNjg4NGNlIDEwMDY0NAorLS0tIGEvVGVzdHMvUXRBdXRvZ2VuUmVydW4vQ01ha2VMaXN0cy50eHQKKysrKyBiL1Rlc3RzL1F0QXV0b2dlblJlcnVuL0NNYWtlTGlzdHMudHh0CitAQCAtMiw3ICsyLDcgQEAgY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDMuOSkKKyBjbWFrZV9wb2xpY3koU0VUIENNUDAwNzEgTkVXKQorIHByb2plY3QoUXRBdXRvZ2VuUmVydW4pCisgCistIyBUZWxsIGZpbmRfcGFja2FnZShRdDUpIHdoZXJlIHRvIGZpbmQgUXQuCisrIyBUZWxsICNmaW5kX3BhY2thZ2UoUXQ1KSB3aGVyZSB0byBmaW5kIFF0LgorIGlmKFFUX1FNQUtFX0VYRUNVVEFCTEUpCisgICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KFF0X0JJTl9ESVIgIiR7UVRfUU1BS0VfRVhFQ1VUQUJMRX0iIFBBVEgpCisgICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KFF0X1BSRUZJWF9ESVIgIiR7UXRfQklOX0RJUn0iIFBBVEgpCitAQCAtMjMsNyArMjMsNyBAQCBlbHNlKCkKKyAgIGlmIChOT1QgUVRfVEVTVF9WRVJTSU9OIFNUUkVRVUFMIDUpCisgICAgIG1lc3NhZ2UoU0VORF9FUlJPUiAiSW52YWxpZCBRdCB2ZXJzaW9uIHNwZWNpZmllZC4iKQorICAgZW5kaWYoKQorLSAgZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUkVRVUlSRUQpCisrICAjZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUkVRVUlSRUQpCisgCisgICBzZXQoUVRfUVRDT1JFX1RBUkdFVCBRdDU6OkNvcmUpCisgCitkaWZmIC0tZ2l0IGEvVGVzdHMvUXRBdXRvZ2VuUmVydW4vbW9jUGx1Z2luL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvUXRBdXRvZ2VuUmVydW4vbW9jUGx1Z2luL0NNYWtlTGlzdHMudHh0CitpbmRleCBiN2NjNWU5ZmYuLmUxZDEwOTk1MyAxMDA2NDQKKy0tLSBhL1Rlc3RzL1F0QXV0b2dlblJlcnVuL21vY1BsdWdpbi9DTWFrZUxpc3RzLnR4dAorKysrIGIvVGVzdHMvUXRBdXRvZ2VuUmVydW4vbW9jUGx1Z2luL0NNYWtlTGlzdHMudHh0CitAQCAtOSw3ICs5LDcgQEAgc2V0KENNQUtFX0FVVE9NT0NfREVQRU5EX0ZJTFRFUlMKKyBpZiAoTk9UIFFUX1RFU1RfVkVSU0lPTiBTVFJFUVVBTCA1KQorICAgbWVzc2FnZShTRU5EX0VSUk9SICJJbnZhbGlkIFF0IHZlcnNpb24gc3BlY2lmaWVkLiIpCisgZW5kaWYoKQorLWZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFJFUVVJUkVEKQorKyNmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBSRVFVSVJFRCkKKyAKKyBpZihRdDVfUE9TSVRJT05fSU5ERVBFTkRFTlRfQ09ERSBBTkQgQ01BS0VfQ1hYX0NPTVBJTEVfT1BUSU9OU19QSUMpCisgICBhZGRfZGVmaW5pdGlvbnMoJHtDTUFLRV9DWFhfQ09NUElMRV9PUFRJT05TX1BJQ30pCitkaWZmIC0tZ2l0IGEvVGVzdHMvUXRBdXRvZ2VuUmVydW4vbW9jUmVydW4vQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9RdEF1dG9nZW5SZXJ1bi9tb2NSZXJ1bi9DTWFrZUxpc3RzLnR4dAoraW5kZXggYmFmZDljZjQ4Li40M2VjOTMzZDIgMTAwNjQ0CistLS0gYS9UZXN0cy9RdEF1dG9nZW5SZXJ1bi9tb2NSZXJ1bi9DTWFrZUxpc3RzLnR4dAorKysrIGIvVGVzdHMvUXRBdXRvZ2VuUmVydW4vbW9jUmVydW4vQ01ha2VMaXN0cy50eHQKK0BAIC0xMCw3ICsxMCw3IEBAIGVsc2UoKQorICAgICBtZXNzYWdlKFNFTkRfRVJST1IgIkludmFsaWQgUXQgdmVyc2lvbiBzcGVjaWZpZWQuIikKKyAgIGVuZGlmKCkKKyAKKy0gIGZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQorKyAgI2ZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQorICAgc2V0KFFUX0NPUkVfVEFSR0VUIFF0NTo6Q29yZSkKKyBlbmRpZigpCisgCitkaWZmIC0tZ2l0IGEvVGVzdHMvUXRBdXRvZ2VuUmVydW4vcmNjRGVwZW5kcy9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL1F0QXV0b2dlblJlcnVuL3JjY0RlcGVuZHMvQ01ha2VMaXN0cy50eHQKK2luZGV4IDI5MTU5MmU3ZC4uNDBjZDUyODY4IDEwMDY0NAorLS0tIGEvVGVzdHMvUXRBdXRvZ2VuUmVydW4vcmNjRGVwZW5kcy9DTWFrZUxpc3RzLnR4dAorKysrIGIvVGVzdHMvUXRBdXRvZ2VuUmVydW4vcmNjRGVwZW5kcy9DTWFrZUxpc3RzLnR4dAorQEAgLTksNyArOSw3IEBAIGVsc2UoKQorICAgICBtZXNzYWdlKFNFTkRfRVJST1IgIkludmFsaWQgUXQgdmVyc2lvbiBzcGVjaWZpZWQuIikKKyAgIGVuZGlmKCkKKyAKKy0gIGZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQorKyAgI2ZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQorICAgc2V0KFFUX0NPUkVfVEFSR0VUIFF0NTo6Q29yZSkKKyBlbmRpZigpCisgCitkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9SdW5DTWFrZS9DTWFrZUxpc3RzLnR4dAoraW5kZXggMjkzMjVmZjBhLi5kMzBkMDFlNzggMTAwNjQ0CistLS0gYS9UZXN0cy9SdW5DTWFrZS9DTWFrZUxpc3RzLnR4dAorKysrIGIvVGVzdHMvUnVuQ01ha2UvQ01ha2VMaXN0cy50eHQKK0BAIC0yNzQsNyArMjc0LDcgQEAgYWRkX1J1bkNNYWtlX3Rlc3QoY29uZmlndXJlX2ZpbGUpCisgYWRkX1J1bkNNYWtlX3Rlc3QoQ1Rlc3RUaW1lb3V0QWZ0ZXJNYXRjaCkKKyAKKyBmaW5kX3BhY2thZ2UoUXQ0IFFVSUVUKQorLWZpbmRfcGFja2FnZShRdDVDb3JlIFFVSUVUKQorKyNmaW5kX3BhY2thZ2UoUXQ1Q29yZSBRVUlFVCkKKyBpZiAoUVQ0X0ZPVU5EIEFORCBRdDVDb3JlX0ZPVU5EIEFORCBOT1QgUXQ1Q29yZV9WRVJTSU9OIFZFUlNJT05fTEVTUyA1LjEuMCkKKyAgIGFkZF9SdW5DTWFrZV90ZXN0KEluY29tcGF0aWJsZVF0KQorIGVuZGlmKCkKK2RpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9JbmNvbXBhdGlibGVRdC9JbmNvbXBhdGlibGVRdC5jbWFrZSBiL1Rlc3RzL1J1bkNNYWtlL0luY29tcGF0aWJsZVF0L0luY29tcGF0aWJsZVF0LmNtYWtlCitpbmRleCA0ZmNjZGM0MTguLmI3NmUxZTUzMSAxMDA2NDQKKy0tLSBhL1Rlc3RzL1J1bkNNYWtlL0luY29tcGF0aWJsZVF0L0luY29tcGF0aWJsZVF0LmNtYWtlCisrKysgYi9UZXN0cy9SdW5DTWFrZS9JbmNvbXBhdGlibGVRdC9JbmNvbXBhdGlibGVRdC5jbWFrZQorQEAgLTEsNiArMSw2IEBACisgCisgZmluZF9wYWNrYWdlKFF0NCBSRVFVSVJFRCkKKy1maW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkKKysjZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpCisgCisgYWRkX2V4ZWN1dGFibGUobWFpbmV4ZSBtYWluLmNwcCkKKyB0YXJnZXRfbGlua19saWJyYXJpZXMobWFpbmV4ZSBRdDQ6OlF0Q29yZSBRdDU6OkNvcmUpCistLSAKKzIuMTUuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlL3N1cHBvcnQtb2UtcXQ0LXRvb2xzLW5hbWVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9zdXBwb3J0LW9lLXF0NC10b29scy1uYW1lcy5wYXRjaAppbmRleCAxNWNiY2E4Li42ODQxNTU0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlL3N1cHBvcnQtb2UtcXQ0LXRvb2xzLW5hbWVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2Uvc3VwcG9ydC1vZS1xdDQtdG9vbHMtbmFtZXMucGF0Y2gKQEAgLTEsNCArMSw3IEBACi1jbWFrZTogc3VwcG9ydCBPcGVuRW1iZWRkZWQgUXQ0IHRvb2wgYmluYXJ5IG5hbWVzCitGcm9tIDEwYjhiNTIzODY5MTI0ZDJmYzhjZDk4ZDllMDI4YzBiY2ZmZDYxYjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgorRGF0ZTogVGh1LCAxMiBNYXkgMjAxMSAxNTozNjowMyArMDAwMAorU3ViamVjdDogW1BBVENIIDEvMl0gY21ha2U6IHN1cHBvcnQgT3BlbkVtYmVkZGVkIFF0NCB0b29sIGJpbmFyeSBuYW1lcwogCiBUaGUgRmluZFF0NCBtb2R1bGUgbG9va3MgZm9yIFF0NCBiaW5hcmllcyB0byBiZSBhYmxlIHRvIGdhdGhlciB0aGUKIHBhdGhzIHVzZWQgZm9yIGNvbXBpbGF0aW9uIGFuZCBhbHNvIHRvIGJlIHVzaW5nIGR1cmluZyBvdGhlciBwcm9jZXNzZXMKQEAgLTE1LDE1ICsxOCwxNiBAQAogSW5zdGVhZCBvZiBmaW5kX3Byb2dyYW0sIF9maW5kX3F0NF9wcm9ncmFtIGlzIG5vdyB1c2VkLgogCiBTaWduZWQtb2ZmLWJ5OiBNb3JpdHogQmx1bWUgPG1vcml0ei5ibHVtZUBibXctY2FyaXQuZGU+CisKIC0tLQogIE1vZHVsZXMvRmluZFF0NC5jbWFrZSB8IDEwICsrKysrLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvTW9kdWxlcy9GaW5kUXQ0LmNtYWtlIGIvTW9kdWxlcy9GaW5kUXQ0LmNtYWtlCi1pbmRleCAxMTA5MWI1Li42NzA0NzY5IDEwMDY0NAoraW5kZXggYzY3ZDBiZS4uMGNmMTY5YiAxMDA2NDQKIC0tLSBhL01vZHVsZXMvRmluZFF0NC5jbWFrZQogKysrIGIvTW9kdWxlcy9GaW5kUXQ0LmNtYWtlCi1AQCAtNTIyLDcgKzUyMiw3IEBAIGVuZGZ1bmN0aW9uKCkKK0BAIC01MTYsNyArNTE2LDcgQEAgZW5kZnVuY3Rpb24oKQogIAogIHNldChRVDRfSU5TVEFMTEVEX1ZFUlNJT05fVE9PX09MRCBGQUxTRSkKICAKQEAgLTMyLDcgKzM2LDcgQEAKICBfcXQ0X2ZpbmRfcW1ha2UoIiR7X1FUNF9RTUFLRV9OQU1FU30iIFFUX1FNQUtFX0VYRUNVVEFCTEUgUVRWRVJTSU9OKQogIAogIGlmIChRVF9RTUFLRV9FWEVDVVRBQkxFIEFORAotQEAgLTExNDgsMTIgKzExNDgsMTIgQEAgaWYgKFFUX1FNQUtFX0VYRUNVVEFCTEUgQU5ECitAQCAtMTE0MiwxMiArMTE0MiwxMiBAQCBpZiAoUVRfUU1BS0VfRVhFQ1VUQUJMRSBBTkQKICAgIF9maW5kX3F0NF9wcm9ncmFtKFFUX01PQ19FWEVDVVRBQkxFIFF0NDo6bW9jIG1vYy1xdDQgbW9jNCBtb2MpCiAgICBfZmluZF9xdDRfcHJvZ3JhbShRVF9VSUNfRVhFQ1VUQUJMRSBRdDQ6OnVpYyB1aWMtcXQ0IHVpYzQgdWljKQogICAgX2ZpbmRfcXQ0X3Byb2dyYW0oUVRfVUlDM19FWEVDVVRBQkxFIFF0NDo6dWljMyB1aWMzKQpAQCAtNTAsNSArNTQsNSBAQAogICAgX2ZpbmRfcXQ0X3Byb2dyYW0oUVRfTElOR1VJU1RfRVhFQ1VUQUJMRSBRdDQ6Omxpbmd1aXN0IGxpbmd1aXN0LXF0NCBsaW5ndWlzdDQgbGluZ3Vpc3QpCiAgCiAtLSAKLTEuOS4xCisyLjcuNAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlXzMuOC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZV8zLjEwLjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2VfMy44LjIuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2VfMy4xMC4zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2N2ZS1jaGVjay10b29sL2N2ZS1jaGVjay10b29sXzUuNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jdmUtY2hlY2stdG9vbC9jdmUtY2hlY2stdG9vbF81LjYuNC5iYgppbmRleCA3YjcwZGFhLi4xYzg0ZmIxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2N2ZS1jaGVjay10b29sL2N2ZS1jaGVjay10b29sXzUuNi40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3ZlLWNoZWNrLXRvb2wvY3ZlLWNoZWNrLXRvb2xfNS42LjQuYmIKQEAgLTQxLDYgKzQxLDcgQEAKICAgICBbIC16ICIke2N2ZV9kaXJ9IiBdICYmIGN2ZV9kaXI9IiR7RExfRElSfS9DVkVfQ0hFQ0siCiAgICAgWyAteiAiJHtjdmVfZmlsZX0iIF0gJiYgY3ZlX2ZpbGU9IiR7VE1QRElSfS9jdmVfY2hlY2siCiAKKyAgICB1bnVzZWQ9IiR7QGJiLnV0aWxzLmV4cG9ydF9wcm94aWVzKGQpfSIKICAgICBiYmRlYnVnIDIgIlVwZGF0aW5nIGN2ZS1jaGVjay10b29sIGRhdGFiYXNlIGxvY2F0ZWQgaW4gJGN2ZV9kaXIiCiAgICAgIyAtLWNhY2VydCB3b3JrcyBhcm91bmQgY3VybC1uYXRpdmUgbm90IGZpbmRpbmcgdGhlIENBIGJ1bmRsZQogICAgIGlmIGN2ZS1jaGVjay11cGRhdGUgLS1jYWNlcnQgJHtzeXNjb25mZGlyfS9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCAtZCAiJGN2ZV9kaXIiIDsgdGhlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaXN0Y2MvZGlzdGNjXzMuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlzdGNjL2Rpc3RjY18zLjIuYmIKaW5kZXggZTZmMTU5Yy4uNjYwNDY0OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaXN0Y2MvZGlzdGNjXzMuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rpc3RjYy9kaXN0Y2NfMy4yLmJiCkBAIC0yMyw3ICsyMyw2IEBACiAgICAgICAgICAgIGZpbGU6Ly9kaXN0Y2Muc2VydmljZSIKIFNSQ1JFViA9ICJkOGIxOGRmM2U5ZGNiZTRmMDkyYmVkNTY1ODM1ZDM5NzVlOTk0MzJjIgogUyA9ICIke1dPUktESVJ9L2dpdCIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLXJjLmQgdXNlcmFkZCBzeXN0ZW1kCiAKQEAgLTQxLDcgKzQwLDkgQEAKIFNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0iCiBTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiZGlzdGNjLnNlcnZpY2UiCiAKLWRvX2luc3RhbGxfYXBwZW5kKCkgeworZG9faW5zdGFsbCgpIHsKKyAgICAjIEltcHJvdmUgcmVwcm9kdWNpYmlsaXR5OiBjb21wcmVzcyB3L28gdGltZXN0YW1wcworICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgICJHWklQX0JJTj1nemlwIC1uIiBpbnN0YWxsCiAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCiAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0CiAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZGlzdGNjICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDAxLUNoZWNrLWNvbmYucmVsZWFzZXZlci1pbnN0ZWFkLW9mLXJlbGVhc2V2ZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1DaGVjay1jb25mLnJlbGVhc2V2ZXItaW5zdGVhZC1vZi1yZWxlYXNldmVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWYzMTQxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDAxLUNoZWNrLWNvbmYucmVsZWFzZXZlci1pbnN0ZWFkLW9mLXJlbGVhc2V2ZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDE2NjgzM2E4OGE5MjhhNTc0YmY5MTQzYjliNjVmNTQ0YmU0ODJjNzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTggQXVnIDIwMTcgMTU6NTU6MTUgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gQ2hlY2sgY29uZi5yZWxlYXNldmVyIGluc3RlYWQgb2YgcmVsZWFzZXZlcgotCi1UaGUgc3Vic3RpdHV0aW9ucyBtYXkgYWN0dWFsbHkgc2V0IHRoZSBjb25mLnJlbGVhc2V2ZXIgY29ycmVjdGx5LAotYW5kIHNvIHRoZSBjaGVjayBzaG91bGQgdXNlIHRoYXQgaW5zdGVhZCBvZiB0aGUgcGFzc2VkLWluIGZ1bmN0aW9uCi1wYXJhbWV0ZXIuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvZG5mL3B1bGwvOTAxXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBkbmYvY2xpL2NsaS5weSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2RuZi9jbGkvY2xpLnB5IGIvZG5mL2NsaS9jbGkucHkKLWluZGV4IDJkNjM0MjBjLi4xNjc5NDNiOCAxMDA2NDQKLS0tLSBhL2RuZi9jbGkvY2xpLnB5Ci0rKysgYi9kbmYvY2xpL2NsaS5weQotQEAgLTkxNCw3ICs5MTQsNyBAQCBjbGFzcyBDbGkob2JqZWN0KToKLSAgICAgICAgIGNvbmYucmVsZWFzZXZlciA9IHJlbGVhc2V2ZXIKLSAgICAgICAgIHN1YnN0ID0gY29uZi5zdWJzdGl0dXRpb25zCi0gICAgICAgICBzdWJzdC51cGRhdGVfZnJvbV9ldGMoY29uZi5pbnN0YWxscm9vdCkKLS0gICAgICAgIGlmIHJlbGVhc2V2ZXIgaXMgTm9uZToKLSsgICAgICAgIGlmIGNvbmYucmVsZWFzZXZlciBpcyBOb25lOgotICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKF8oIlVuYWJsZSB0byBkZXRlY3QgcmVsZWFzZSB2ZXJzaW9uICh1c2UgJy0tcmVsZWFzZXZlcicgdG8gc3BlY2lmeSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVsZWFzZSB2ZXJzaW9uKSIpKQotIAotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMDEtQ29ycmV0bHktaW5zdGFsbC10bXBmaWxlcy5kLWNvbmZpZ3VyYXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1Db3JyZXRseS1pbnN0YWxsLXRtcGZpbGVzLmQtY29uZmlndXJhdGlvbi5wYXRjaAppbmRleCBjOWRmNDU4Li42NjkyYjQxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1Db3JyZXRseS1pbnN0YWxsLXRtcGZpbGVzLmQtY29uZmlndXJhdGlvbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1Db3JyZXRseS1pbnN0YWxsLXRtcGZpbGVzLmQtY29uZmlndXJhdGlvbi5wYXRjaApAQCAtMSwxMCArMSwxMSBAQAotRnJvbSA4Y2UxODE3MTQ2NDAzMTVkMmRkMzdlZTc5NGFjYmIyMjA2M2NkNjY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAwNWUwNTljZDRlOTkxMGMwMGIzMmQzNzdmNGY5OGUzYzhkZGU2YmM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDI2IEphbiAyMDE3IDE2OjM2OjIwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIENvcnJldGx5IGluc3RhbGwgdG1wZmlsZXMuZCBjb25maWd1cmF0aW9uCitTdWJqZWN0OiBbUEFUQ0ggNC81XSBDb3JyZXRseSBpbnN0YWxsIHRtcGZpbGVzLmQgY29uZmlndXJhdGlvbgogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCiAgZXRjL3RtcGZpbGVzLmQvQ01ha2VMaXN0cy50eHQgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCkBAIC0xNyw1ICsxOCw1IEBACiAtSU5TVEFMTCAoRklMRVMgZG5mLmNvbmYgREVTVElOQVRJT04gL3Vzci9saWIvdG1wZmlsZXMuZC8pCiArSU5TVEFMTCAoRklMRVMgZG5mLmNvbmYgREVTVElOQVRJT04gJHtTWVNDT05GRElSfS90bXBmaWxlcy5kLykKIC0tIAotMi4xMS4wCisyLjE0LjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMDEtRG8tbm90LWhhcmRjb2RlLWV0Yy1hbmQtc3lzdGVtZC11bml0LWRpcmVjdG9yaWVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMDEtRG8tbm90LWhhcmRjb2RlLWV0Yy1hbmQtc3lzdGVtZC11bml0LWRpcmVjdG9yaWVzLnBhdGNoCmluZGV4IDBmMjYxZTUuLjE1YTdiZmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDAxLURvLW5vdC1oYXJkY29kZS1ldGMtYW5kLXN5c3RlbWQtdW5pdC1kaXJlY3Rvcmllcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1Eby1ub3QtaGFyZGNvZGUtZXRjLWFuZC1zeXN0ZW1kLXVuaXQtZGlyZWN0b3JpZXMucGF0Y2gKQEAgLTEsMTYgKzEsMTcgQEAKLUZyb20gNDMxM2NlZDEzMjA1OTQwMTM3OTVmMTFmNmRiMDAzODFlM2Y0Y2M0NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYThlZjgxYzExNWE0NWYwNWRhZDE0NWM5OGUxMGYzYzQ5NDBlNGUyOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogVGh1LCAyNiBKYW4gMjAxNyAxNjoyNTo0NyArMDIwMAotU3ViamVjdDogW1BBVENIXSBEbyBub3QgaGFyZGNvZGUgL2V0YyBhbmQgc3lzdGVtZCB1bml0IGRpcmVjdG9yaWVzCitTdWJqZWN0OiBbUEFUQ0ggMy81XSBEbyBub3QgaGFyZGNvZGUgL2V0YyBhbmQgc3lzdGVtZCB1bml0IGRpcmVjdG9yaWVzCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KICBDTWFrZUxpc3RzLnR4dCB8IDQgKystLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCA2YTMxOTkzNS4uZGIyMGNjZDQgMTAwNjQ0CitpbmRleCA2NTBiNjI0YS4uMTAxOTk2MTggMTAwNjQ0CiAtLS0gYS9DTWFrZUxpc3RzLnR4dAogKysrIGIvQ01ha2VMaXN0cy50eHQKIEBAIC03LDggKzcsOCBAQCBpZiAoTk9UIFBZVEhPTl9ERVNJUkVEKQpAQCAtMjUsNSArMjYsNSBAQAogIGlmICgke1BZVEhPTl9ERVNJUkVEfSBTVFJFUVVBTCAiMiIpCiAgCUZJTkRfUEFDS0FHRSAoUHl0aG9uSW50ZXJwIFJFUVVJUkVEKQogLS0gCi0yLjExLjAKKzIuMTQuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1Eby1ub3QtcHJlcGVuZC1pbnN0YWxscm9vdC10by1sb2dkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1Eby1ub3QtcHJlcGVuZC1pbnN0YWxscm9vdC10by1sb2dkaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5MGU3N2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMDEtRG8tbm90LXByZXBlbmQtaW5zdGFsbHJvb3QtdG8tbG9nZGlyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSAzMTY1M2QzMjRjZjhjN2IxZjJmOWU0OWQyMjY3NmJkMmFjNTQ2MzMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDExIEphbiAyMDE3IDE1OjEwOjEzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBwcmVwZW5kIGluc3RhbGxyb290IHRvIGxvZ2Rpci4KLQotVGhpcyB3b3VsZCBvdGhlcndpc2Ugd3JpdGUgdGhlIGxvZ3MgaW50byByb290ZnMvdmFyL2xvZwotKHdoZXJlYXMgd2Ugd2FudCB0aGVtIGluICRUKSwKLWFuZCB3aWxsIGJyZWFrIGluc3RhbGxhdGlvbiBvZiBiYXNlLWZpbGVzIHJwbS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBkbmYvY2xpL2NsaS5weSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2RuZi9jbGkvY2xpLnB5IGIvZG5mL2NsaS9jbGkucHkKLWluZGV4IGI3NjQ4MDFhLi44OTNmNGJkYSAxMDA2NDQKLS0tLSBhL2RuZi9jbGkvY2xpLnB5Ci0rKysgYi9kbmYvY2xpL2NsaS5weQotQEAgLTg4MSw3ICs4ODEsNyBAQCBjbGFzcyBDbGkob2JqZWN0KToKLSAgICAgICAgIHN1YnN0ID0gY29uZi5zdWJzdGl0dXRpb25zCi0gICAgICAgICBzdWJzdC51cGRhdGVfZnJvbV9ldGMoY29uZi5pbnN0YWxscm9vdCkKLSAKLS0gICAgICAgIGZvciBvcHQgaW4gKCdjYWNoZWRpcicsICdsb2dkaXInLCAncGVyc2lzdGRpcicpOgotKyAgICAgICAgZm9yIG9wdCBpbiAoJ2NhY2hlZGlyJywgJ3BlcnNpc3RkaXInKToKLSAgICAgICAgICAgICBjb25mLnByZXBlbmRfaW5zdGFsbHJvb3Qob3B0KQotIAotICAgICAgICAgc2VsZi5iYXNlLl9sb2dnaW5nLl9zZXR1cF9mcm9tX2RuZl9jb25mKGNvbmYpCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwNS1Eby1ub3QtcHJlcGVuZC1pbnN0YWxscm9vdC10by1sb2dkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwNS1Eby1ub3QtcHJlcGVuZC1pbnN0YWxscm9vdC10by1sb2dkaXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWEyMDAwOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDA1LURvLW5vdC1wcmVwZW5kLWluc3RhbGxyb290LXRvLWxvZ2Rpci5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDYzNjUzODkwNzRhMWI4Njk2MmYzZDhiMjJhMmVhZDIyMDIwMjZhOTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTEgSmFuIDIwMTcgMTU6MTA6MTMgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCA1LzVdIERvIG5vdCBwcmVwZW5kIGluc3RhbGxyb290IHRvIGxvZ2Rpci4KKworVGhpcyB3b3VsZCBvdGhlcndpc2Ugd3JpdGUgdGhlIGxvZ3MgaW50byByb290ZnMvdmFyL2xvZworKHdoZXJlYXMgd2Ugd2FudCB0aGVtIGluICRUKSwKK2FuZCB3aWxsIGJyZWFrIGluc3RhbGxhdGlvbiBvZiBiYXNlLWZpbGVzIHJwbS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBkbmYvY2xpL2NsaS5weSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2RuZi9jbGkvY2xpLnB5IGIvZG5mL2NsaS9jbGkucHkKK2luZGV4IGQyZDljMDgyLi44MjI3MGVjZiAxMDA2NDQKKy0tLSBhL2RuZi9jbGkvY2xpLnB5CisrKysgYi9kbmYvY2xpL2NsaS5weQorQEAgLTkyMCw3ICs5MjAsNyBAQCBjbGFzcyBDbGkob2JqZWN0KToKKyAgICAgICAgICAgICBsb2dnZXIud2FybmluZyhfKCJVbmFibGUgdG8gZGV0ZWN0IHJlbGVhc2UgdmVyc2lvbiAodXNlICctLXJlbGVhc2V2ZXInIHRvIHNwZWNpZnkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlbGVhc2UgdmVyc2lvbikiKSkKKyAKKy0gICAgICAgIGZvciBvcHQgaW4gKCdjYWNoZWRpcicsICdsb2dkaXInLCAncGVyc2lzdGRpcicpOgorKyAgICAgICAgZm9yIG9wdCBpbiAoJ2NhY2hlZGlyJywgJ3BlcnNpc3RkaXInKToKKyAgICAgICAgICAgICBjb25mLnByZXBlbmRfaW5zdGFsbHJvb3Qob3B0KQorIAorICAgICAgICAgc2VsZi5iYXNlLl9sb2dnaW5nLl9zZXR1cF9mcm9tX2RuZl9jb25mKGNvbmYpCistLSAKKzIuMTQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAyOS1Eby1ub3Qtc2V0LVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXB5dGhvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDI5LURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoCmluZGV4IDhjNTlmOWYuLjZlMDExOTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDI5LURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDI5LURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoCkBAIC0xLDE2ICsxLDE3IEBACi1Gcm9tIDNkZGFhOTMwY2RhNTdhNjJhMjE3NGZhZWJjYzg3YWViYzU5NTkxZDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDcyMDUwMzNlNDRkOGZiYTFkM2IxOGI0OTBlN2VhYWI4MmRhMWZmYTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMzAgRGVjIDIwMTYgMTg6Mjk6MDcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyOS8zMF0gRG8gbm90IHNldCBQWVRIT05fSU5TVEFMTF9ESVIgYnkgcnVubmluZyBweXRob24KK1N1YmplY3Q6IFtQQVRDSCAxLzVdIERvIG5vdCBzZXQgUFlUSE9OX0lOU1RBTExfRElSIGJ5IHJ1bm5pbmcgcHl0aG9uCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KICBDTWFrZUxpc3RzLnR4dCB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IDZhMzE5OTM1Li40NjZjYTFlNiAxMDA2NDQKK2luZGV4IDIzZTVmODg5Li42NTBiNjI0YSAxMDA2NDQKIC0tLSBhL0NNYWtlTGlzdHMudHh0CiArKysgYi9DTWFrZUxpc3RzLnR4dAogQEAgLTE4LDcgKzE4LDcgQEAgZWxzZSgpCkBAIC0yMyw1ICsyNCw1IEBACiAgTUVTU0FHRShTVEFUVVMgIlB5dGhvbiBpbnN0YWxsIGRpciBpcyAke1BZVEhPTl9JTlNUQUxMX0RJUn0iKQogIAogLS0gCi0yLjExLjAKKzIuMTQuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAzMC1SdW4tcHl0aG9uLXNjcmlwdHMtdXNpbmctZW52LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMzAtUnVuLXB5dGhvbi1zY3JpcHRzLXVzaW5nLWVudi5wYXRjaAppbmRleCAxYWJkODgwLi5lZWRiYjU3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAzMC1SdW4tcHl0aG9uLXNjcmlwdHMtdXNpbmctZW52LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDMwLVJ1bi1weXRob24tc2NyaXB0cy11c2luZy1lbnYucGF0Y2gKQEAgLTEsMTkgKzEsMjAgQEAKLUZyb20gOWM4ZDU0NTE1MmIzNWQ4OTQzYmU3MmI5NTAzNDE0YTUzZTFlYmY3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOGQ5N2I3MmExZDc3MTQ5ZTJmOTA0OGQxY2E2Y2VmNjZkYTFhOGFhNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogRnJpLCAzMCBEZWMgMjAxNiAxODoyOTozNyArMDIwMAotU3ViamVjdDogW1BBVENIIDMwLzMwXSBSdW4gcHl0aG9uIHNjcmlwdHMgdXNpbmcgZW52CitTdWJqZWN0OiBbUEFUQ0ggMi81XSBSdW4gcHl0aG9uIHNjcmlwdHMgdXNpbmcgZW52CiAKIE90aGVyd2lzZSB0aGUgYnVpbGQgdG9vbHMgaGFyZGNvZGUgdGhlIHB5dGhvbiBwYXRoIGludG8gdGhlbS4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKIC0tLQogIGJpbi9kbmYtYXV0b21hdGljLmluIHwgMiArLQogIGJpbi9kbmYuaW4gICAgICAgICAgIHwgMiArLQogIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYmluL2RuZi1hdXRvbWF0aWMuaW4gYi9iaW4vZG5mLWF1dG9tYXRpYy5pbgotaW5kZXggNWIwNmFhMjYuLjlmNmY3MDNlIDEwMDc1NQoraW5kZXggNWIwNmFhMjYuLjg5MWI0YzI0IDEwMDc1NQogLS0tIGEvYmluL2RuZi1hdXRvbWF0aWMuaW4KICsrKyBiL2Jpbi9kbmYtYXV0b21hdGljLmluCiBAQCAtMSw0ICsxLDQgQEAKQEAgLTIzLDcgKzI0LDcgQEAKICAjCiAgIyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBSZWQgSGF0LCBJbmMuCiBkaWZmIC0tZ2l0IGEvYmluL2RuZi5pbiBiL2Jpbi9kbmYuaW4KLWluZGV4IDY0NWQwZjA2Li5hYjE0MWFiZCAxMDA3NTUKK2luZGV4IDY0NWQwZjA2Li5iZGY3YjNjNCAxMDA3NTUKIC0tLSBhL2Jpbi9kbmYuaW4KICsrKyBiL2Jpbi9kbmYuaW4KIEBAIC0xLDQgKzEsNCBAQApAQCAtMzMsNSArMzQsNSBAQAogICMKICAjIENvcHlyaWdodCAoQykgMjAxMi0yMDE2IFJlZCBIYXQsIEluYy4KIC0tIAotMi4xMS4wCisyLjE0LjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mXzIuNi4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mXzIuNi4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZWQ2YTc0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZl8yLjYuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLVNVTU1BUlkgPSAiUGFja2FnZSBtYW5hZ2VyIGZvcmtlZCBmcm9tIFl1bSwgdXNpbmcgbGlic29sdiBhcyBhIGRlcGVuZGVuY3kgcmVzb2x2ZXIiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vUEFDS0FHRS1MSUNFTlNJTkc7bWQ1PWJmYzI5OTE2ZTExMzIxYmUwNjkyNGM0ZmIwOTZmZGNjIFwKLSAgICAgICAgICAgICAgICAgICAiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9kbmYuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMjktRG8tbm90LXNldC1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1weXRob24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMC1SdW4tcHl0aG9uLXNjcmlwdHMtdXNpbmctZW52LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXByZXBlbmQtaW5zdGFsbHJvb3QtdG8tbG9nZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWhhcmRjb2RlLWV0Yy1hbmQtc3lzdGVtZC11bml0LWRpcmVjdG9yaWVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQ29ycmV0bHktaW5zdGFsbC10bXBmaWxlcy5kLWNvbmZpZ3VyYXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1DaGVjay1jb25mLnJlbGVhc2V2ZXItaW5zdGVhZC1vZi1yZWxlYXNldmVyLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNSRVYgPSAiYmUyNTg1MTgzZWM0NDg1ZWU0ZDVlMTIxZjI0MmQ4NjY5Mjk2ZjA2NSIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBjbWFrZSBnZXR0ZXh0IGJhc2gtY29tcGxldGlvbiBkaXN0dXRpbHMzLWJhc2Ugc3lzdGVtZAotCi1ERVBFTkRTICs9ICJsaWJkbmYgbGlicmVwbyBsaWJjb21wcyBweXRob24zLWluaXBhcnNlIgotCi0jIG1hbnBhZ2VzIGdlbmVyYXRpb24gcmVxdWlyZXMgaHR0cDovL3d3dy5zcGhpbngtZG9jLm9yZy8KLUVYVFJBX09FQ01BS0UgPSAiIC1EV0lUSF9NQU49MCAtRFBZVEhPTl9JTlNUQUxMX0RJUj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSAtRFBZVEhPTl9ERVNJUkVEPTMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAicHl0aG9uMy1jb3JlIHB5dGhvbjMtY29kZWNzIHB5dGhvbjMtbmV0Y2xpZW50IHB5dGhvbjMtZW1haWwgcHl0aG9uMy10aHJlYWRpbmcgcHl0aG9uMy1kaXN0dXRpbHMgbGlicmVwbyBweXRob24zLXNoZWxsIHB5dGhvbjMtc3VicHJvY2VzcyBsaWJjb21wcyBsaWJkbmYgcHl0aG9uMy1zcWxpdGUzIHB5dGhvbjMtY29tcHJlc3Npb24gcHl0aG9uMy1ycG0gcHl0aG9uMy1pbmlwYXJzZSBweXRob24zLWpzb24gcHl0aG9uMy1pbXBvcnRsaWIgcHl0aG9uMy1jdXJzZXMgcHl0aG9uMy1hcmdwYXJzZSBweXRob24zLW1pc2MgcHl0aG9uMy1ncGciCi0jIFJlY29tbWVuZCBnbnVwZyBzbyB0aGF0IEdQRyBzaWduYXR1cmUgY2hlY2sgb24gcmVwb3NpdG9yeSBtZXRhZGF0YSBpcyBwb3NzaWJsZQotUlJFQ09NTUVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJnbnVwZyIKLQotIyBDcmVhdGUgYSBzeW1saW5rIGNhbGxlZCAnZG5mJyBhcyAnbWFrZSBpbnN0YWxsJyBkb2VzIG5vdCBkbyBpdCwgYnV0Ci0jIC5zcGVjIGZpbGUgaW4gZG5mIHNvdXJjZSB0cmVlIGRvZXMgKGFuZCB0aGVuIEZlZG9yYSBhbmQgZG5mIGRvY3VtZW50YXRpb24KLSMgc2F5cyB0aGF0IGRuZiBiaW5hcnkgaXMgcGxhaW4gJ2RuZicpLgotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgICAgIGxuciAke0R9LyR7YmluZGlyfS9kbmYtMyAke0R9LyR7YmluZGlyfS9kbmYKLSAgICAgICAgbG5yICR7RH0vJHtiaW5kaXJ9L2RuZi1hdXRvbWF0aWMtMyAke0R9LyR7YmluZGlyfS9kbmYtYXV0b21hdGljCi19Ci0KLSMgRGlyZWN0IGRuZi1uYXRpdmUgdG8gcmVhZCBycG0gY29uZmlndXJhdGlvbiBmcm9tIG91ciBzeXNyb290LCBub3QgdGhlIG9uZSBpdCB3YXMgY29tcGlsZWQgaW4KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICAgICAgY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZG5mIFwKLSAgICAgICAgICAgICAgICBSUE1fQ09ORklHRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9ycG0gXAotICAgICAgICAgICAgICAgIFJQTV9OT19DSFJPT1RfRk9SX1NDUklQVFM9MQotfQotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiZG5mLW1ha2VjYWNoZS5zZXJ2aWNlIGRuZi1tYWtlY2FjaGUudGltZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGRuZi1hdXRvbWF0aWMtZG93bmxvYWQuc2VydmljZSBkbmYtYXV0b21hdGljLWRvd25sb2FkLnRpbWVyIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkbmYtYXV0b21hdGljLWluc3RhbGwuc2VydmljZSBkbmYtYXV0b21hdGljLWluc3RhbGwudGltZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGRuZi1hdXRvbWF0aWMtbm90aWZ5b25seS5zZXJ2aWNlIGRuZi1hdXRvbWF0aWMtbm90aWZ5b25seS50aW1lciBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmZfMi43LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmZfMi43LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg4ZGRiNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZl8yLjcuNS5iYgpAQCAtMCwwICsxLDc0IEBACitTVU1NQVJZID0gIlBhY2thZ2UgbWFuYWdlciBmb3JrZWQgZnJvbSBZdW0sIHVzaW5nIGxpYnNvbHYgYXMgYSBkZXBlbmRlbmN5IHJlc29sdmVyIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL1BBQ0tBR0UtTElDRU5TSU5HO21kNT1iZmMyOTkxNmUxMTMyMWJlMDY5MjRjNGZiMDk2ZmRjYyBcCisgICAgICAgICAgICAgICAgICAgIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvZG5mLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUNvcnJldGx5LWluc3RhbGwtdG1wZmlsZXMuZC1jb25maWd1cmF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWhhcmRjb2RlLWV0Yy1hbmQtc3lzdGVtZC11bml0LWRpcmVjdG9yaWVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtRG8tbm90LXByZXBlbmQtaW5zdGFsbHJvb3QtdG8tbG9nZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjktRG8tbm90LXNldC1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1weXRob24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMC1SdW4tcHl0aG9uLXNjcmlwdHMtdXNpbmctZW52LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNSRVYgPSAiNTY0YzQ0NjY3YzcwMTQ4NDNmYTZmMTczMjYyMTA5MzExNGVjNTliMiIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZSBnZXR0ZXh0IGJhc2gtY29tcGxldGlvbiBkaXN0dXRpbHMzLWJhc2Ugc3lzdGVtZAorCitERVBFTkRTICs9ICJsaWJkbmYgbGlicmVwbyBsaWJjb21wcyBweXRob24zLWluaXBhcnNlIgorCisjIG1hbnBhZ2VzIGdlbmVyYXRpb24gcmVxdWlyZXMgaHR0cDovL3d3dy5zcGhpbngtZG9jLm9yZy8KK0VYVFJBX09FQ01BS0UgPSAiIC1EV0lUSF9NQU49MCAtRFBZVEhPTl9JTlNUQUxMX0RJUj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSAtRFBZVEhPTl9ERVNJUkVEPTMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICIgXAorICBweXRob24zLWNvcmUgXAorICBweXRob24zLWNvZGVjcyBcCisgIHB5dGhvbjMtbmV0Y2xpZW50IFwKKyAgcHl0aG9uMy1lbWFpbCBcCisgIHB5dGhvbjMtdGhyZWFkaW5nIFwKKyAgcHl0aG9uMy1kaXN0dXRpbHMgXAorICBweXRob24zLWxvZ2dpbmcgXAorICBweXRob24zLWZjbnRsIFwKKyAgbGlicmVwbyBcCisgIHB5dGhvbjMtc2hlbGwgXAorICBsaWJjb21wcyBcCisgIGxpYmRuZiBcCisgIHB5dGhvbjMtc3FsaXRlMyBcCisgIHB5dGhvbjMtY29tcHJlc3Npb24gXAorICBweXRob24zLXJwbSBcCisgIHB5dGhvbjMtaW5pcGFyc2UgXAorICBweXRob24zLWpzb24gXAorICBweXRob24zLWN1cnNlcyBcCisgIHB5dGhvbjMtbWlzYyBcCisgIHB5dGhvbjMtZ3BnIFwKKyAgIgorCitSUkVDT01NRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gImdudXBnIgorCisjIENyZWF0ZSBhIHN5bWxpbmsgY2FsbGVkICdkbmYnIGFzICdtYWtlIGluc3RhbGwnIGRvZXMgbm90IGRvIGl0LCBidXQKKyMgLnNwZWMgZmlsZSBpbiBkbmYgc291cmNlIHRyZWUgZG9lcyAoYW5kIHRoZW4gRmVkb3JhIGFuZCBkbmYgZG9jdW1lbnRhdGlvbgorIyBzYXlzIHRoYXQgZG5mIGJpbmFyeSBpcyBwbGFpbiAnZG5mJykuCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAgICAgbG5yICR7RH0vJHtiaW5kaXJ9L2RuZi0zICR7RH0vJHtiaW5kaXJ9L2RuZgorICAgICAgICBsbnIgJHtEfS8ke2JpbmRpcn0vZG5mLWF1dG9tYXRpYy0zICR7RH0vJHtiaW5kaXJ9L2RuZi1hdXRvbWF0aWMKK30KKworIyBEaXJlY3QgZG5mLW5hdGl2ZSB0byByZWFkIHJwbSBjb25maWd1cmF0aW9uIGZyb20gb3VyIHN5c3Jvb3QsIG5vdCB0aGUgb25lIGl0IHdhcyBjb21waWxlZCBpbgorZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9kbmYgXAorICAgICAgICAgICAgICAgIFJQTV9DT05GSUdESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3JwbSBcCisgICAgICAgICAgICAgICAgUlBNX05PX0NIUk9PVF9GT1JfU0NSSVBUUz0xCit9CisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJkbmYtbWFrZWNhY2hlLnNlcnZpY2UgZG5mLW1ha2VjYWNoZS50aW1lciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgZG5mLWF1dG9tYXRpYy5zZXJ2aWNlIGRuZi1hdXRvbWF0aWMudGltZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGRuZi1hdXRvbWF0aWMtZG93bmxvYWQuc2VydmljZSBkbmYtYXV0b21hdGljLWRvd25sb2FkLnRpbWVyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBkbmYtYXV0b21hdGljLWluc3RhbGwuc2VydmljZSBkbmYtYXV0b21hdGljLWluc3RhbGwudGltZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGRuZi1hdXRvbWF0aWMtbm90aWZ5b25seS5zZXJ2aWNlIGRuZi1hdXRvbWF0aWMtbm90aWZ5b25seS50aW1lciBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDAxLWFyY2gtQWRkLXN1cHBvcnQtZm9yLXJpc2N2NjQtQ1BVLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvMDAwMS1hcmNoLUFkZC1zdXBwb3J0LWZvci1yaXNjdjY0LUNQVS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWM2MDZlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvMDAwMS1hcmNoLUFkZC1zdXBwb3J0LWZvci1yaXNjdjY0LUNQVS5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIDMxOWYzMmQ3NDNmNWI1ZTcyNTAxMjY1NGQxMjRlNDkyMjZkNWRlOTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxNiBNYXIgMjAxOCAyMDoyODoyNCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBhcmNoOiBBZGQgc3VwcG9ydCBmb3IgcmlzY3Y2NCBDUFUKKworICAqIEFyY2hpdGVjdHVyZSBzdXBwb3J0OgorICAgIC0gQWRkIHN1cHBvcnQgZm9yIHJpc2N2NjQgQ1BVLiBDbG9zZXM6ICM4MjI5MTQKKyAgICAgIFRoYW5rcyB0byBNYW51ZWwgQS4gRmVybmFuZGV6IE1vbnRlY2VsbyA8bWFmbUBkZWJpYW4ub3JnPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2FsaW90aC5kZWJpYW4ub3JnL3BsdWdpbnMvc2NtZ2l0L2NnaS1iaW4vZ2l0d2ViLmNnaT9wPWRwa2clMkZkcGtnLmdpdDthPWNvbW1pdGRpZmZfcGxhaW47aD1lZTA4NTVjYzY2MDc2NjkxZGU0Nzk2YmU0OGY4YTBkODg5ZmRlMDAxO2hwPTJmNTgxNmQ4YmU0MGI0NDlkMjQ3M2IyMmY5ZTBjMzNiMzJmM2JkNzhdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBkYXRhL2NwdXRhYmxlICAgICAgICAgfCAxICsKKyBzY3JpcHRzL3QvRHBrZ19BcmNoLnQgfCA0ICsrLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2RhdGEvY3B1dGFibGUgYi9kYXRhL2NwdXRhYmxlCitpbmRleCBhMmJkN2Q2Li45ZjJhOGUwIDEwMDY0NAorLS0tIGEvZGF0YS9jcHV0YWJsZQorKysrIGIvZGF0YS9jcHV0YWJsZQorQEAgLTQxLDYgKzQxLDcgQEAgcG93ZXJwYwkJcG93ZXJwYwkJKHBvd2VycGN8cHBjKQkJMzIJYmlnCisgcG93ZXJwY2VsCXBvd2VycGNsZQlwb3dlcnBjbGUJCTMyCWxpdHRsZQorIHBwYzY0CQlwb3dlcnBjNjQJKHBvd2VycGN8cHBjKTY0CQk2NAliaWcKKyBwcGM2NGVsCQlwb3dlcnBjNjRsZQlwb3dlcnBjNjRsZQkJNjQJbGl0dGxlCisrcmlzY3Y2NAkJcmlzY3Y2NAkJcmlzY3Y2NAkJCTY0CWxpdHRsZQorIHMzOTAJCXMzOTAJCXMzOTAJCQkzMgliaWcKKyBzMzkweAkJczM5MHgJCXMzOTB4CQkJNjQJYmlnCisgc2gzCQlzaDMJCXNoMwkJCTMyCWxpdHRsZQorZGlmZiAtLWdpdCBhL3NjcmlwdHMvdC9EcGtnX0FyY2gudCBiL3NjcmlwdHMvdC9EcGtnX0FyY2gudAoraW5kZXggZDQ3OGI0OS4uZWNkNWQ2NiAxMDA2NDQKKy0tLSBhL3NjcmlwdHMvdC9EcGtnX0FyY2gudAorKysrIGIvc2NyaXB0cy90L0Rwa2dfQXJjaC50CitAQCAtMTYsNyArMTYsNyBAQAorIHVzZSBzdHJpY3Q7CisgdXNlIHdhcm5pbmdzOworIAorLXVzZSBUZXN0OjpNb3JlIHRlc3RzID0+IDE2MzY3OworK3VzZSBUZXN0OjpNb3JlIHRlc3RzID0+IDE2ODMyOworIAorIHVzZV9vaygnRHBrZzo6QXJjaCcsIHF3KGRlYmFyY2hfdG9fZGVidHVwbGUgZGViYXJjaF90b19tdWx0aWFyY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICBkZWJhcmNoX2VxIGRlYmFyY2hfaXMgZGViYXJjaF9pc193aWxkY2FyZAorQEAgLTE2Miw3ICsxNjIsNyBAQCBpcyhnbnV0cmlwbGV0X3RvX2RlYmFyY2godW5kZWYpLCB1bmRlZiwgJ3VuZGVmIGdudXRyaXBsZXQnKTsKKyBpcyhnbnV0cmlwbGV0X3RvX2RlYmFyY2goJ3Vua25vd24tdW5rbm93bi11bmtub3duJyksIHVuZGVmLCAndW5rbm93biBnbnV0cmlwbGV0Jyk7CisgaXMoZ251dHJpcGxldF90b19kZWJhcmNoKCd4ODZfNjQtbGludXgtZ251JyksICdhbWQ2NCcsICdrbm93biBnbnV0cmlwbGV0Jyk7CisgCistaXMoc2NhbGFyIGdldF92YWxpZF9hcmNoZXMoKSwgNTI0LCAnZXhwZWN0ZWQgYW1vdW50IG9mIGtub3duIGFyY2hpdGVjdHVyZXMnKTsKKytpcyhzY2FsYXIgZ2V0X3ZhbGlkX2FyY2hlcygpLCA1MzksICdleHBlY3RlZCBhbW91bnQgb2Yga25vd24gYXJjaGl0ZWN0dXJlcycpOworIAorIHsKKyAgICAgbG9jYWwgJEVOVntDQ30gPSAnZmFsc2UnOworLS0gCisyLjE2LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvMDAwNi1hZGQtbXVzbGVhYmktdG8ta25vd24tdGFyZ2V0LXRyaXBldHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDA2LWFkZC1tdXNsZWFiaS10by1rbm93bi10YXJnZXQtdHJpcGV0cy5wYXRjaAppbmRleCBkOTI5NDY2Li44Nzk3ZWE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDA2LWFkZC1tdXNsZWFiaS10by1rbm93bi10YXJnZXQtdHJpcGV0cy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDA2LWFkZC1tdXNsZWFiaS10by1rbm93bi10YXJnZXQtdHJpcGV0cy5wYXRjaApAQCAtNSw2ICs1LDcgQEAKIAogaGVscHMgY29tcGlsaW5nIGRwa2cgZm9yIG11c2wvYXJtLXNvZnRmbG9hdAogCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4KIC0tLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvZ2xpYmMyLjUtc3luY19maWxlX3JhbmdlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvZ2xpYmMyLjUtc3luY19maWxlX3JhbmdlLnBhdGNoCmluZGV4IGQ1NmI4YTYuLmQ0ODM4NjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL2dsaWJjMi41LXN5bmNfZmlsZV9yYW5nZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy9nbGliYzIuNS1zeW5jX2ZpbGVfcmFuZ2UucGF0Y2gKQEAgLTEsMTIgKzEsMTcgQEAKK0Zyb20gOWQyNjBkNDA4ZjllMTdhYmQxZDFkY2NkNjg1YmQ3ZTgwYTM2NTVhOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERvbm4gU2VlbGV5IDxkb25uLnNlZWxleUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAyNSBGZWIgMjAxNCAxNzo0NDowNCArMDgwMAorU3ViamVjdDogW1BBVENIXSBkcGtnOiBmaXggYSBsaW5rIHByb2JsZW0gZm9yIGRwa2ctbmF0aXZlIG9uIENlbnRPUyA1LjgKKwogQ2VudE9TIDUuOCBrZXJuZWxzIGFuZCBoZWFkZXJzIHN1cHBvcnQgdGhlIHN5bmNfZmlsZV9yYW5nZSgpIHN5c3RlbSBjYWxsLAogYnV0IGdsaWJjIDIuNSBkb2Vzbid0IHByb3ZpZGUgdGhlIHN5c2NhbGwgc3R1Yi4gIEl0IGFwcGVhcnMgdGhhdCB0aGlzCiBwcm9ibGVtIGlzIGtub3duIGJ1dCB3aWxsIG5ldmVyIGJlIGZpeGVkOgogCiAgIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NTE4NTgxCiAKLSAgQnVnIDUxODU4MSAtIFtSSEVMNV0gZ2xpYmMgbWlzc2VzIHN5bmNfZmlsZV9yYW5nZSBzeXNjYWxsIGludGVyZmFjZSAKKyAgQnVnIDUxODU4MSAtIFtSSEVMNV0gZ2xpYmMgbWlzc2VzIHN5bmNfZmlsZV9yYW5nZSBzeXNjYWxsIGludGVyZmFjZQogCi0gIFN0YXR1czogICAgICAgQ0xPU0VEIENBTlRGSVggCisgIFN0YXR1czogICAgICAgQ0xPU0VEIENBTlRGSVgKICAgTGFzdCBDbG9zZWQ6ICAyMDA5LTExLTIyIDIyOjE5OjU1CiAKICAgS2lyYnkgWmhvdSAyMDA5LTA4LTIwIDIzOjM3OjU1IEVEVApAQCAtNjAsMTMgKzY1LDE2IEBACiAKIFNpZ25lZC1vZmYtYnk6IERvbm4gU2VlbGV5IDxkb25uLnNlZWxleUB3aW5kcml2ZXIuY29tPgogU2lnbmVkLW9mZi1ieTogTGVpIExpdSA8bGVpLmxpdTJAd2luZHJpdmVyLmNvbT4KKwogLS0tCi0gc3JjL2FyY2hpdmVzLmMgfCAgICA0ICsrLS0KKyBzcmMvYXJjaGl2ZXMuYyB8IDQgKystLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKK2RpZmYgLS1naXQgYS9zcmMvYXJjaGl2ZXMuYyBiL3NyYy9hcmNoaXZlcy5jCitpbmRleCA0YjJmYzkyLi5hOTJiNzk1IDEwMDY0NAogLS0tIGEvc3JjL2FyY2hpdmVzLmMKICsrKyBiL3NyYy9hcmNoaXZlcy5jCi1AQCAtNzUsNyArNzUsNyBAQAorQEAgLTY5LDcgKzY5LDcgQEAgZmRfd3JpdGViYWNrX2luaXQoaW50IGZkKQogICAgLyogSWdub3JlIHRoZSByZXR1cm4gY29kZSBhcyBpdCBzaG91bGQgYmUgY29uc2lkZXJlZCBlcXVpdmFsZW50IHRvIGFuCiAgICAgKiBhc3luY2hyb25vdXMgaGludCBmb3IgdGhlIGtlcm5lbCwgd2UgYXJlIGRvaW5nIGFuIGZzeW5jKCkgbGF0ZXIgb24KICAgICAqIGFueXdheS4gKi8KQEAgLTc1LDcgKzgzLDcgQEAKICAgIHN5bmNfZmlsZV9yYW5nZShmZCwgMCwgMCwgU1lOQ19GSUxFX1JBTkdFX1dSSVRFKTsKICAjZWxpZiBkZWZpbmVkKEhBVkVfUE9TSVhfRkFEVklTRSkKICAgIHBvc2l4X2ZhZHZpc2UoZmQsIDAsIDAsIFBPU0lYX0ZBRFZfRE9OVE5FRUQpOwotQEAgLTExNzksNyArMTE3OSw3IEBACitAQCAtMTA3OCw3ICsxMDc4LDcgQEAgdGFyb2JqZWN0KHZvaWQgKmN0eCwgc3RydWN0IHRhcl9lbnRyeSAqdGkpCiAgICByZXR1cm4gMDsKICB9CiAgCkBAIC04NCwzICs5Miw2IEBACiAgc3RhdGljIHZvaWQKICB0YXJfd3JpdGViYWNrX2JhcnJpZXIoc3RydWN0IGZpbGVpbmxpc3QgKmZpbGVzLCBzdHJ1Y3QgcGtnaW5mbyAqcGtnKQogIHsKKy0tIAorMi4xNi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnXzEuMTguMjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZ18xLjE4LjI0LmJiCmluZGV4IGMwYzU5ZjEuLjZkOGVjMzQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnXzEuMTguMjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2dfMS4xOC4yNC5iYgpAQCAtMTQsNiArMTQsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwNi1hZGQtbXVzbGVhYmktdG8ta25vd24tdGFyZ2V0LXRyaXBldHMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwNy1kcGtnLWRlYi1idWlsZC5jLVJlbW92ZS11c2FnZS1vZi1jbGFtcC1tdGltZS1pbi10YXIucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1kcGtnLVN1cHBvcnQtbXVzbHgzMi1idWlsZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFyY2gtQWRkLXN1cHBvcnQtZm9yLXJpc2N2NjQtQ1BVLnBhdGNoIFwKICAgICAgICAgICAgIgogU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vZ2xpYmMyLjUtc3luY19maWxlX3JhbmdlLnBhdGNoICIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kd2FyZnNyY2ZpbGVzL2R3YXJmc3JjZmlsZXMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2R3YXJmc3JjZmlsZXMvZHdhcmZzcmNmaWxlcy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTlhMDA2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kd2FyZnNyY2ZpbGVzL2R3YXJmc3JjZmlsZXMuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJBIHNtYWxsIHV0aWxpdHkgZm9yIHByaW50aW5nIGRlYmlnIHNvdXJjZSBmaWxlIGxvY2F0aW9ucyBlbWJlZGRlZCBpbiBiaW5hcmllcyIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vZHdhcmZzcmNmaWxlcy5jO21kNT0zMTQ4Mzg5NGU0NTNhNzdhY2JiNjc4NDc1NjVmMWI1YztiZWdpbmxpbmU9MTtlbmRsaW5lPTgiCisKK1NSQ19VUkkgPSAiZmlsZTovL2R3YXJmc3JjZmlsZXMuYyIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorREVQRU5EUyA9ICJlbGZ1dGlscyIKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIgorCitkb19jb21waWxlICgpIHsKKwkke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSAtbyBkd2FyZnNyY2ZpbGVzIC4uL2R3YXJmc3JjZmlsZXMuYyAtbGVsZiAtbGR3Cit9CisKK2RvX2NvbXBpbGVfbGliYy1tdXNsICgpIHsKKwkke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSAtbyBkd2FyZnNyY2ZpbGVzIC4uL2R3YXJmc3JjZmlsZXMuYyAtbGVsZiAtbGR3IC1sYXJncCAKK30KKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtdCAke0R9JHtiaW5kaXJ9IGR3YXJmc3JjZmlsZXMKK30KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kd2FyZnNyY2ZpbGVzL2ZpbGVzL2R3YXJmc3JjZmlsZXMuYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHdhcmZzcmNmaWxlcy9maWxlcy9kd2FyZnNyY2ZpbGVzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY3YWY1MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHdhcmZzcmNmaWxlcy9maWxlcy9kd2FyZnNyY2ZpbGVzLmMKQEAgLTAsMCArMSwxMTEgQEAKKy8vIGR3YXJmc3JjZmlsZXMuYyAtIEdldCBzb3VyY2UgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBkd2FyZiBpbiBhIGVsZiBmaWxlLgorLy8gZ2NjIC1XYWxsIC1nIC1PMiAtbGVsZiAtbGR3IC1vIGR3YXJmc3JjZmlsZXMgZHdhcmZzcmNmaWxlcy5jIAorLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMSwgTWFyayBXaWVsYWFyZCA8bWp3QHJlZGhhdC5jb20+CisvLworLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUuICBZb3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisvLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpOyBlaXRoZXIKKy8vIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworI2luY2x1ZGUgPGFyZ3AuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSA8ZHdhcmYuaD4KKyNpbmNsdWRlIDxlbGZ1dGlscy9saWJkdy5oPgorI2luY2x1ZGUgPGVsZnV0aWxzL2xpYmR3ZmwuaD4KKworc3RhdGljIGludAorcHJvY2Vzc19jdSAoRHdhcmZfRGllICpjdV9kaWUpCit7CisgIER3YXJmX0F0dHJpYnV0ZSBhdHRyOworICBjb25zdCBjaGFyICpuYW1lOworICBjb25zdCBjaGFyICpkaXIgPSBOVUxMOworICAKKyAgRHdhcmZfRmlsZXMgKmZpbGVzOworICBzaXplX3QgbjsKKyAgaW50IGk7CisgIAorICBpZiAoZHdhcmZfdGFnIChjdV9kaWUpICE9IERXX1RBR19jb21waWxlX3VuaXQpCisgICAgeworICAgICAgZnByaW50ZiAoc3RkZXJyLCAiRElFIGlzbid0IGEgY29tcGlsZSB1bml0Iik7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICAKKyAgaWYgKGR3YXJmX2F0dHIgKGN1X2RpZSwgRFdfQVRfbmFtZSwgJmF0dHIpID09IE5VTEwpCisgICAgeworICAgICAgZnByaW50ZihzdGRlcnIsICJDVSBkb2Vzbid0IGhhdmUgYSBEV19BVF9uYW1lIik7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICAKKyAgbmFtZSA9IGR3YXJmX2Zvcm1zdHJpbmcgKCZhdHRyKTsKKyAgaWYgKG5hbWUgPT0gTlVMTCkKKyAgICB7CisgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvdWxkbid0IGdldCBEV19BVF9uYW1lIGFzIHN0cmluZywgJXMiLAorCSAgICAgZHdhcmZfZXJybXNnICgtMSkpOworICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgCisgIGlmIChkd2FyZl9hdHRyIChjdV9kaWUsIERXX0FUX2NvbXBfZGlyLCAmYXR0cikgIT0gTlVMTCkKKyAgICB7CisgICAgICBkaXIgPSBkd2FyZl9mb3Jtc3RyaW5nICgmYXR0cik7CisgICAgICBpZiAoZGlyID09IE5VTEwpCisJeworCSAgZnByaW50ZihzdGRlcnIsICJDb3VsZG4ndCBnZXQgRFdfQVRfY29tcF9kaWUgYXMgc3RyaW5nLCAlcyIsCisJCSBkd2FyZl9lcnJtc2cgKC0xKSk7CisJICByZXR1cm4gLTE7CisJfQorICAgIH0KKyAgCisgIGlmIChkaXIgPT0gTlVMTCkKKyAgICBwcmludGYgKCIlc1xuIiwgbmFtZSk7CisgIGVsc2UKKyAgICBwcmludGYgKCIlcy8lc1xuIiwgZGlyLCBuYW1lKTsKKyAgCisgIGlmIChkd2FyZl9nZXRzcmNmaWxlcyAoY3VfZGllLCAmZmlsZXMsICZuKSAhPSAwKQorICAgIHsKKyAgICAgIGZwcmludGYoc3RkZXJyLCAiQ291bGRuJ3QgZ2V0IENVIGZpbGUgdGFibGUsICVzIiwKKwkgICAgIGR3YXJmX2Vycm1zZyAoLTEpKTsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgIAorICBmb3IgKGkgPSAxOyBpIDwgbjsgaSsrKQorICAgIHsKKyAgICAgIGNvbnN0IGNoYXIgKmZpbGUgPSBkd2FyZl9maWxlc3JjIChmaWxlcywgaSwgTlVMTCwgTlVMTCk7CisgICAgICBpZiAoZGlyICE9IE5VTEwgJiYgZmlsZVswXSAhPSAnLycpCisJcHJpbnRmICgiXHQlcy8lc1xuIiwgZGlyLCBmaWxlKTsKKyAgICAgIGVsc2UKKwlwcmludGYgKCJcdCVzXG4iLCBmaWxlKTsKKyAgICB9CisgIAorICByZXR1cm4gMDsKK30KKworaW50CittYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgIGNoYXIqIGFyZ3NbM107CisgIGludCByZXMgPSAwOworICBEd2ZsICpkd2ZsOworICBEd2FyZl9BZGRyIGJpYXM7CisgIAorICBpZiAoYXJnYyAhPSAyKQorICAgIGZwcmludGYoc3RkZXJyLCAiVXNhZ2UgJXMgPGZpbGU+IiwgYXJndlswXSk7CisgIAorICAvLyBQcmV0ZW5kICJkd2FyZnNyY2ZpbGVzIC1lIDxmaWxlPiIgd2FzIGdpdmVuLCBzbyB3ZSBjYW4gdXNlIHN0YW5kYXJkCisgIC8vIGR3ZmwgYXJncCBwYXJzZXIgdG8gb3BlbiB0aGUgZmlsZSBmb3IgdXMgYW5kIGdldCBvdXIgRHdmbC4gVXNlZnVsCisgIC8vIGluIGNhc2UgYXJndW1lbnQgaXMgYW4gRVRfUkVMIGZpbGUgKGxpa2Uga2VybmVsIG1vZHVsZXMpLiBsaWJkd2ZsCisgIC8vIHdpbGwgZml4IHVwIHJlbG9jYXRpb25zIGZvciB1cy4KKyAgYXJnc1swXSA9IGFyZ3ZbMF07CisgIGFyZ3NbMV0gPSAiLWUiOworICBhcmdzWzJdID0gYXJndlsxXTsKKyAgCisgIGFyZ3BfcGFyc2UgKGR3Zmxfc3RhbmRhcmRfYXJncCAoKSwgMywgYXJncywgMCwgTlVMTCwgJmR3ZmwpOworICAKKyAgRHdhcmZfRGllICpjdSA9IE5VTEw7CisgIHdoaWxlICgoY3UgPSBkd2ZsX25leHRjdSAoZHdmbCwgY3UsICZiaWFzKSkgIT0gTlVMTCkKKyAgICByZXMgfD0gcHJvY2Vzc19jdSAoY3UpOworICAKKyAgZHdmbF9lbmQgKGR3ZmwpOworCisgIHJldHVybiByZXM7Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1saWJleHQyZnMtZml4LWJ1aWxkLWZhaWx1cmUtaW4tc3dhcGZzLmMtb24tYmlnLWVuZGlhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLzAwMDEtbGliZXh0MmZzLWZpeC1idWlsZC1mYWlsdXJlLWluLXN3YXBmcy5jLW9uLWJpZy1lbmRpYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjEyODRlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLzAwMDEtbGliZXh0MmZzLWZpeC1idWlsZC1mYWlsdXJlLWluLXN3YXBmcy5jLW9uLWJpZy1lbmRpYS5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIGFlNjYwMzIwNjE3NmI3NzFjOWVkMWY4MjU2OWY2OGZjMTI1N2YwMTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PgorRGF0ZTogV2VkLCAzIEphbiAyMDE4IDAxOjMyOjAyIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYmV4dDJmczogZml4IGJ1aWxkIGZhaWx1cmUgaW4gc3dhcGZzLmMgb24gYmlnLWVuZGlhbgorIHN5c3RlbXMKKworQWRkcmVzc2VzLURlYmlhbi1CdWc6ICM4ODYxMTkKKworUmVwb3J0ZWQtYnk6IEphbWVzIENsYXJrZSA8anJ0YzI3QGRlYmlhbi5vcmc+CitTaWduZWQtb2ZmLWJ5OiBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKKyBsaWIvZXh0MmZzL3N3YXBmcy5jIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWIvZXh0MmZzL3N3YXBmcy5jIGIvbGliL2V4dDJmcy9zd2FwZnMuYworaW5kZXggNmU1Y2ZmOTcuLmIxM2RjNDIyIDEwMDY0NAorLS0tIGEvbGliL2V4dDJmcy9zd2FwZnMuYworKysrIGIvbGliL2V4dDJmcy9zd2FwZnMuYworQEAgLTE5LDYgKzE5LDcgQEAKKyAKKyAjaW5jbHVkZSAiZXh0Ml9mcy5oIgorICNpbmNsdWRlICJleHQyZnMuaCIKKysjaW5jbHVkZSAiZXh0MmZzUC5oIgorICNpbmNsdWRlIDxleHQyZnMvZXh0Ml9leHRfYXR0ci5oPgorIAorICNpZmRlZiBXT1JEU19CSUdFTkRJQU4KK0BAIC0zNTgsNyArMzU5LDcgQEAgdm9pZCBleHQyZnNfc3dhcF9pbm9kZV9mdWxsKGV4dDJfZmlsc3lzIGZzLCBzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqdCwKKyAJaWYgKGlub2RlX2luY2x1ZGVzKGlub2RlX3NpemUsIGlfcHJvamlkKSkKKyAgICAgICAgICAgICAgICAgdC0+aV9wcm9qaWQgPSBleHQyZnNfc3dhYjE2KGYtPmlfcHJvamlkKTsKKyAJLyogY2F0Y2ggbmV3IHN0YXRpYyBmaWVsZHMgYWRkZWQgYWZ0ZXIgaV9wcm9qaWQgKi8KKy0JRVhUMkZTX0JVSUxEX0JVR19PTihzaXplb2YoZXh0Ml9pbm9kZV9sYXJnZSkgIT0gMTYwKTsKKysJRVhUMkZTX0JVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UpICE9IDE2MCk7CisgCisgCWkgPSBzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGUpICsgZXh0cmFfaXNpemUgKyBzaXplb2YoX191MzIpOworIAlpZiAoYnVmc2l6ZSA8IChpbnQpIGkpCistLSAKKzIuMTYuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1taXNjLXJlbmFtZS1jb3B5X2ZpbGVfcmFuZ2UtdG8tY29weV9maWxlX2NodW5rLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLzAwMDEtbWlzYy1yZW5hbWUtY29weV9maWxlX3JhbmdlLXRvLWNvcHlfZmlsZV9jaHVuay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA4ZmUwZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1taXNjLXJlbmFtZS1jb3B5X2ZpbGVfcmFuZ2UtdG8tY29weV9maWxlX2NodW5rLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotRnJvbSA2NDczNTNmN2MzZmQyOWUxZmZkNDY4ZDdmZjU2ZDk2NDMwNDdhYjM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGFsbWVyIERhYmJlbHQgPHBhbG1lckBkYWJiZWx0LmNvbT4KLURhdGU6IEZyaSwgMjkgRGVjIDIwMTcgMTA6MTk6NTEgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbWlzYzogcmVuYW1lIGNvcHlfZmlsZV9yYW5nZSB0byBjb3B5X2ZpbGVfY2h1bmsKLQotQXMgb2YgMi4yNywgZ2xpYmMgd2lsbCBoYXZlIGEgY29weV9maWxlX3JhbmdlIGxpYnJhcnkgY2FsbCB0byB3cmFwIHRoZQotbmV3IGNvcHlfZmlsZV9yYW5nZSBzeXN0ZW0gY2FsbC4gIFRoaXMgY29uZmxpY3RzIHdpdGggdGhlIGZ1bmN0aW9uIGluCi1taXNjL2NyZWF0ZV9pbm9kZS5jLCB3aGljaCB0aGlzIHBhdGNoIHJlbmFtZXMgX2NvcHlfZmlsZV9yYW5nZS4KLQotU2lnbmVkLW9mZi1ieTogUGFsbWVyIERhYmJlbHQgPHBhbG1lckBkYWJiZWx0LmNvbT4KLVNpZ25lZC1vZmYtYnk6IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgotLS0tCi0gbWlzYy9jcmVhdGVfaW5vZGUuYyB8IDggKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbWlzYy9jcmVhdGVfaW5vZGUuYyBiL21pc2MvY3JlYXRlX2lub2RlLmMKLWluZGV4IDhjZTNmYWZhLi5jZDg5MTQ2ZiAxMDA2NDQKLS0tLSBhL21pc2MvY3JlYXRlX2lub2RlLmMKLSsrKyBiL21pc2MvY3JlYXRlX2lub2RlLmMKLUBAIC0zOTYsNyArMzk2LDcgQEAgc3RhdGljIHNzaXplX3QgbXlfcHJlYWQoaW50IGZkLCB2b2lkICpidWYsIHNpemVfdCBjb3VudCwgb2ZmX3Qgb2Zmc2V0KQotIH0KLSAjZW5kaWYgLyogIWRlZmluZWQgSEFWRV9QUkVBRDY0ICYmICFkZWZpbmVkIEhBVkVfUFJFQUQgKi8KLSAKLS1zdGF0aWMgZXJyY29kZV90IGNvcHlfZmlsZV9yYW5nZShleHQyX2ZpbHN5cyBmcywgaW50IGZkLCBleHQyX2ZpbGVfdCBlMl9maWxlLAotK3N0YXRpYyBlcnJjb2RlX3QgY29weV9maWxlX2NodW5rKGV4dDJfZmlsc3lzIGZzLCBpbnQgZmQsIGV4dDJfZmlsZV90IGUyX2ZpbGUsCi0gCQkJCSBvZmZfdCBzdGFydCwgb2ZmX3QgZW5kLCBjaGFyICpidWYsCi0gCQkJCSBjaGFyICp6ZXJvYnVmKQotIHsKLUBAIC00NzAsNyArNDcwLDcgQEAgc3RhdGljIGVycmNvZGVfdCB0cnlfbHNlZWtfY29weShleHQyX2ZpbHN5cyBmcywgaW50IGZkLCBzdHJ1Y3Qgc3RhdCAqc3RhdGJ1ZiwKLSAKLSAJCWRhdGFfYmxrID0gZGF0YSAmIH4oZnMtPmJsb2Nrc2l6ZSAtIDEpOwotIAkJaG9sZV9ibGsgPSAoaG9sZSArIChmcy0+YmxvY2tzaXplIC0gMSkpICYgfihmcy0+YmxvY2tzaXplIC0gMSk7Ci0tCQllcnIgPSBjb3B5X2ZpbGVfcmFuZ2UoZnMsIGZkLCBlMl9maWxlLCBkYXRhX2JsaywgaG9sZV9ibGssIGJ1ZiwKLSsJCWVyciA9IGNvcHlfZmlsZV9jaHVuayhmcywgZmQsIGUyX2ZpbGUsIGRhdGFfYmxrLCBob2xlX2JsaywgYnVmLAotIAkJCQkgICAgICB6ZXJvYnVmKTsKLSAJCWlmIChlcnIpCi0gCQkJcmV0dXJuIGVycjsKLUBAIC01MjEsNyArNTIxLDcgQEAgc3RhdGljIGVycmNvZGVfdCB0cnlfZmllbWFwX2NvcHkoZXh0Ml9maWxzeXMgZnMsIGludCBmZCwgZXh0Ml9maWxlX3QgZTJfZmlsZSwKLSAJCQlnb3RvIG91dDsKLSAJCWZvciAoaSA9IDAsIGV4dCA9IGV4dF9idWY7IGkgPCBmaWVtYXBfYnVmLT5mbV9tYXBwZWRfZXh0ZW50czsKLSAJCSAgICAgaSsrLCBleHQrKykgewotLQkJCWVyciA9IGNvcHlfZmlsZV9yYW5nZShmcywgZmQsIGUyX2ZpbGUsIGV4dC0+ZmVfbG9naWNhbCwKLSsJCQllcnIgPSBjb3B5X2ZpbGVfY2h1bmsoZnMsIGZkLCBlMl9maWxlLCBleHQtPmZlX2xvZ2ljYWwsCi0gCQkJCQkgICAgICBleHQtPmZlX2xvZ2ljYWwgKyBleHQtPmZlX2xlbmd0aCwKLSAJCQkJCSAgICAgIGJ1ZiwgemVyb2J1Zik7Ci0gCQkJaWYgKGVycikKLUBAIC01NzQsNyArNTc0LDcgQEAgc3RhdGljIGVycmNvZGVfdCBjb3B5X2ZpbGUoZXh0Ml9maWxzeXMgZnMsIGludCBmZCwgc3RydWN0IHN0YXQgKnN0YXRidWYsCi0gCQlnb3RvIG91dDsKLSAjZW5kaWYKLSAKLS0JZXJyID0gY29weV9maWxlX3JhbmdlKGZzLCBmZCwgZTJfZmlsZSwgMCwgc3RhdGJ1Zi0+c3Rfc2l6ZSwgYnVmLAotKwllcnIgPSBjb3B5X2ZpbGVfY2h1bmsoZnMsIGZkLCBlMl9maWxlLCAwLCBzdGF0YnVmLT5zdF9zaXplLCBidWYsCi0gCQkJICAgICAgemVyb2J1Zik7Ci0gb3V0OgotIAlleHQyZnNfZnJlZV9tZW0oJnplcm9idWYpOwotLS0gCi0yLjE2LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL1JldmVydC1ta2UyZnMtZW5hYmxlLXRoZS1tZXRhZGF0YV9jc3VtLWFuZC02NGJpdC1mZWEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvUmV2ZXJ0LW1rZTJmcy1lbmFibGUtdGhlLW1ldGFkYXRhX2NzdW0tYW5kLTY0Yml0LWZlYS5wYXRjaAppbmRleCAzOGZiMDdlLi4zOGUxYmRiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvUmV2ZXJ0LW1rZTJmcy1lbmFibGUtdGhlLW1ldGFkYXRhX2NzdW0tYW5kLTY0Yml0LWZlYS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvUmV2ZXJ0LW1rZTJmcy1lbmFibGUtdGhlLW1ldGFkYXRhX2NzdW0tYW5kLTY0Yml0LWZlYS5wYXRjaApAQCAtMTksMTAgKzE5LDEwIEBACiAgbWlzYy9ta2UyZnMuY29uZi5pbiB8IDMgKystCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvbWlzYy9ta2UyZnMuY29uZi5pbiBiL21pc2MvbWtlMmZzLmNvbmYuaW4KLWluZGV4IDgxMmY3YzcuLjAyODAzOTggMTAwNjQ0Ci0tLS0gYS9taXNjL21rZTJmcy5jb25mLmluCi0rKysgYi9taXNjL21rZTJmcy5jb25mLmluCitJbmRleDogZ2l0L21pc2MvbWtlMmZzLmNvbmYuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9taXNjL21rZTJmcy5jb25mLmluCisrKysgZ2l0L21pc2MvbWtlMmZzLmNvbmYuaW4KIEBAIC0xMSw4ICsxMSw5IEBACiAgCQlmZWF0dXJlcyA9IGhhc19qb3VybmFsCiAgCX0KQEAgLTMyLDUgKzMyLDUgQEAKICAJCWlub2RlX3NpemUgPSAyNTYKICsJCWF1dG9fNjQtYml0X3N1cHBvcnQgPSAxCiAgCX0KLSAJZXh0NGRldiA9IHsKLSAJCWZlYXR1cmVzID0gaGFzX2pvdXJuYWwsZXh0ZW50LGh1Z2VfZmlsZSxmbGV4X2JnLHVuaW5pdF9iZyxpbmxpbmVfZGF0YSw2NGJpdCxkaXJfbmxpbmssZXh0cmFfaXNpemUKKyAJc21hbGwgPSB7CisgCQlibG9ja3NpemUgPSAxMDI0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvYWNpbmNsdWRlLm00IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL2FjaW5jbHVkZS5tNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzBiZDdkYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvYWNpbmNsdWRlLm00CisrKyAvZGV2L251bGwKQEAgLTEsMTM1ICswLDAgQEAKLSMgRXh0cmFjdGVkIGZyb20gdGhlIHBhY2thZ2UncyBzaGlwcGVkIGFjbG9jYWwubTQuIEN1c3RvbSBtYWNyb3Mgc2hvdWxkIGJlIGluCi0jIGFjaW5jbHVkZS5tNCBzbyBydW5uaW5nIGFjbG9jYWwgZG9lc24ndCBibG93IHRoZW0gYXdheS4KLSMKLSMgU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotIyBmcm9tIGh0dHA6Ly9hdXRvY29uZi1hcmNoaXZlLmNyeXAudG8vYXhfdGxzLmh0bWwKLSMKLSMgVGhpcyB3YXMgbGljZW5zZWQgdW5kZXIgdGhlIEdQTCB3aXRoIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOgotIwotIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgcmVzcGVjdGl2ZSBBdXRvY29uZiBNYWNybydzIGNvcHlyaWdodAotIyBvd25lciBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgdGhlCi0jIGNvbmZpZ3VyZSBzY3JpcHRzIHRoYXQgYXJlIHRoZSBvdXRwdXQgb2YgQXV0b2NvbmYgd2hlbiBwcm9jZXNzaW5nCi0jIHRoZSBNYWNyby4gWW91IG5lZWQgbm90IGZvbGxvdyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotIyBMaWNlbnNlIHdoZW4gdXNpbmcgb3IgZGlzdHJpYnV0aW5nIHN1Y2ggc2NyaXB0cywgZXZlbiB0aG91Z2gKLSMgcG9ydGlvbnMgb2YgdGhlIHRleHQgb2YgdGhlIE1hY3JvIGFwcGVhciBpbiB0aGVtLiBUaGUgR05VIEdlbmVyYWwKLSMgUHVibGljIExpY2Vuc2UgKEdQTCkgZG9lcyBnb3Zlcm4gYWxsIG90aGVyIHVzZSBvZiB0aGUgbWF0ZXJpYWwgdGhhdAotIyBjb25zdGl0dXRlcyB0aGUgQXV0b2NvbmYgTWFjcm8uCi0jCi0jIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCBhcHBsaWVzIHRvIHZlcnNpb25zIG9mIHRoZQotIyBBdXRvY29uZiBNYWNybyByZWxlYXNlZCBieSB0aGUgQXV0b2NvbmYgTWFjcm8gQXJjaGl2ZS4gV2hlbiB5b3UgbWFrZQotIyBhbmQgZGlzdHJpYnV0ZSBhIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIEF1dG9jb25mIE1hY3JvLCB5b3UgbWF5Ci0jIGV4dGVuZCB0aGlzIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwgdG8gYXBwbHkgdG8geW91ciBtb2RpZmllZAotIyB2ZXJzaW9uIGFzIHdlbGwuCi0jCi1BQ19ERUZVTihbQVhfVExTXSwgWwotICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIHRocmVhZCBsb2NhbCBzdG9yYWdlIChUTFMpIGNsYXNzKQotICBBQ19DQUNIRV9WQUwoYWNfY3ZfdGxzLCBbCi0gICAgYXhfdGxzX2tleXdvcmRzPSJfX3RocmVhZCBfX2RlY2xzcGVjKHRocmVhZCkgbm9uZSIKLSAgICBmb3IgYXhfdGxzX2tleXdvcmQgaW4gJGF4X3Rsc19rZXl3b3JkczsgZG8KLSAgICAgICBjYXNlICRheF90bHNfa2V5d29yZCBpbgotICAgICAgICAgIG5vbmUpIGFjX2N2X3Rscz1ub25lIDsgYnJlYWsgOzsKLSAgICAgICAgICAqKQotICAgICAgICAgICAgIEFDX1RSWV9DT01QSUxFKAotICAgICAgICAgICAgICAgIFsjaW5jbHVkZSA8c3RkbGliLmg+Ci0gICAgICAgICAgICAgICAgIHN0YXRpYyB2b2lkCi0gICAgICAgICAgICAgICAgIGZvbyh2b2lkKSB7Ci0gICAgICAgICAgICAgICAgIHN0YXRpYyBdICRheF90bHNfa2V5d29yZCBbIGludCBiYXI7Ci0gICAgICAgICAgICAgICAgIGV4aXQoMSk7Ci0gICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgICBbXSwKLSAgICAgICAgICAgICAgICAgW2FjX2N2X3Rscz0kYXhfdGxzX2tleXdvcmQgOyBicmVha10sCi0gICAgICAgICAgICAgICAgIGFjX2N2X3Rscz1ub25lCi0gICAgICAgICAgICAgKQotICAgICAgICAgIGVzYWMKLSAgICBkb25lCi1dKQotCi0gIGlmIHRlc3QgIiRhY19jdl90bHMiICE9ICJub25lIjsgdGhlbgotICAgIGRubCBBQ19ERUZJTkUoW1RMU10sIFtdLCBbSWYgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIGEgVExTIHN0b3JhZ2UgY2xhc3MgZGVmaW5lIGl0IHRvIHRoYXQgaGVyZV0pCi0gICAgQUNfREVGSU5FX1VOUVVPVEVEKFtUTFNdLCAkYWNfY3ZfdGxzLCBbSWYgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIGEgVExTIHN0b3JhZ2UgY2xhc3MgZGVmaW5lIGl0IHRvIHRoYXQgaGVyZV0pCi0gIGZpCi0gIEFDX01TR19SRVNVTFQoJGFjX2N2X3RscykKLV0pCi0KLSMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jICAgICAgICAgaHR0cDovL3d3dy5ub25nbnUub3JnL2F1dG9jb25mLWFyY2hpdmUvY2hlY2tfZ251X21ha2UuaHRtbAotIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMKLSMgU1lOT1BTSVMKLSMKLSMgICBDSEVDS19HTlVfTUFLRSgpCi0jCi0jIERFU0NSSVBUSU9OCi0jCi0jICAgVGhpcyBtYWNybyBzZWFyY2hlcyBmb3IgYSBHTlUgdmVyc2lvbiBvZiBtYWtlLiBJZiBhIG1hdGNoIGlzIGZvdW5kLCB0aGUKLSMgICBtYWtlZmlsZSB2YXJpYWJsZSBgaWZHTlVtYWtlJyBpcyBzZXQgdG8gdGhlIGVtcHR5IHN0cmluZywgb3RoZXJ3aXNlIGl0Ci0jICAgaXMgc2V0IHRvICIjIi4gVGhpcyBpcyB1c2VmdWwgZm9yIGluY2x1ZGluZyBhIHNwZWNpYWwgZmVhdHVyZXMgaW4gYQotIyAgIE1ha2VmaWxlLCB3aGljaCBjYW5ub3QgYmUgaGFuZGxlZCBieSBvdGhlciB2ZXJzaW9ucyBvZiBtYWtlLiBUaGUKLSMgICB2YXJpYWJsZSBfY3ZfZ251X21ha2VfY29tbWFuZCBpcyBzZXQgdG8gdGhlIGNvbW1hbmQgdG8gaW52b2tlIEdOVSBtYWtlCi0jICAgaWYgaXQgZXhpc3RzLCB0aGUgZW1wdHkgc3RyaW5nIG90aGVyd2lzZS4KLSMKLSMgICBIZXJlIGlzIGFuIGV4YW1wbGUgb2YgaXRzIHVzZToKLSMKLSMgICBNYWtlZmlsZS5pbiBtaWdodCBjb250YWluOgotIwotIyAgICAgICAjIEEgZmFpbHNhZmUgd2F5IG9mIHB1dHRpbmcgYSBkZXBlbmRlbmN5IHJ1bGUgaW50byBhIG1ha2VmaWxlCi0jICAgICAgICQoREVQRU5EKToKLSMgICAgICAgICAgICAgICAkKENDKSAtTU0gJChzcmNkaXIpLyouYyA+ICQoREVQRU5EKQotIwotIyAgICAgICBAaWZHTlVtYWtlQCBpZmVxICgkKERFUEVORCksJCh3aWxkY2FyZCAkKERFUEVORCkpKQotIyAgICAgICBAaWZHTlVtYWtlQCBpbmNsdWRlICQoREVQRU5EKQotIyAgICAgICBAaWZHTlVtYWtlQCBlbmRpZgotIwotIyAgIFRoZW4gY29uZmlndXJlLmluIHdvdWxkIG5vcm1hbGx5IGNvbnRhaW46Ci0jCi0jICAgICAgIENIRUNLX0dOVV9NQUtFKCkKLSMgICAgICAgQUNfT1VUUFVUKE1ha2VmaWxlKQotIwotIyAgIFRoZW4gcGVyaGFwcyB0byBjYXVzZSBnbnUgbWFrZSB0byBvdmVycmlkZSBhbnkgb3RoZXIgbWFrZSwgd2UgY291bGQgZG8KLSMgICBzb21ldGhpbmcgbGlrZSB0aGlzIChub3RlIHRoYXQgR05VIG1ha2UgYWx3YXlzIGxvb2tzIGZvciBHTlVtYWtlZmlsZQotIyAgIGZpcnN0KToKLSMKLSMgICAgICAgaWYgICEgdGVzdCB4JF9jdl9nbnVfbWFrZV9jb21tYW5kID0geCA7IHRoZW4KLSMgICAgICAgICAgICAgICBtdiBNYWtlZmlsZSBHTlVtYWtlZmlsZQotIyAgICAgICAgICAgICAgIGVjaG8gLkRFRkFVTFQ6ID4gTWFrZWZpbGUgOwotIyAgICAgICAgICAgICAgIGVjaG8gXCAgJF9jdl9nbnVfbWFrZV9jb21tYW5kIFwkQCA+PiBNYWtlZmlsZTsKLSMgICAgICAgZmkKLSMKLSMgICBUaGVuLCBpZiBhbnkgKHdlbGwgYWxtb3N0IGFueSkgb3RoZXIgbWFrZSBpcyBjYWxsZWQsIGFuZCBHTlUgbWFrZSBhbHNvCi0jICAgZXhpc3RzLCB0aGVuIHRoZSBvdGhlciBtYWtlIHdyYXBzIHRoZSBHTlUgbWFrZS4KLSMKLSMgTElDRU5TRQotIwotIyAgIENvcHlyaWdodCAoYykgMjAwOCBKb2huIERhcnJpbmd0b24gPGouZGFycmluZ3RvbkBlbHZpcy5tdXJkb2NoLmVkdS5hdT4KLSMKLSMgICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBmaWxlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUKLSMgICBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UKLSMgICBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4KLSMKLSMgTm90ZTogTW9kaWZpZWQgYnkgVGVkIFRzJ28gdG8gYWRkIEBpZk5vdEdOVU1ha2VACi0KLUFDX0RFRlVOKAotICAgICAgICBbQ0hFQ0tfR05VX01BS0VdLCBbIEFDX0NBQ0hFX0NIRUNLKCBmb3IgR05VIG1ha2UsX2N2X2dudV9tYWtlX2NvbW1hbmQsCi0gICAgICAgICAgICAgICAgX2N2X2dudV9tYWtlX2NvbW1hbmQ9JycgOwotZG5sIFNlYXJjaCBhbGwgdGhlIGNvbW1vbiBuYW1lcyBmb3IgR05VIG1ha2UKLSAgICAgICAgICAgICAgICBmb3IgYSBpbiAiJE1BS0UiIG1ha2UgZ21ha2UgZ251bWFrZSA7IGRvCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkYSIgOyB0aGVuIGNvbnRpbnVlIDsgZmkgOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgICggc2ggLWMgIiRhIC0tdmVyc2lvbiIgMj4gL2Rldi9udWxsIHwgZ3JlcCBHTlUgIDI+JjEgPiAvZGV2L251bGwgKSA7ICB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jdl9nbnVfbWFrZV9jb21tYW5kPSRhIDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaQotICAgICAgICAgICAgICAgIGRvbmUgOwotICAgICAgICApIDsKLWRubCBJZiB0aGVyZSB3YXMgYSBHTlUgdmVyc2lvbiwgdGhlbiBzZXQgQGlmR05VbWFrZUAgdG8gdGhlIGVtcHR5IHN0cmluZywgJyMnIG90aGVyd2lzZQotICAgICAgICBpZiB0ZXN0ICAieCRfY3ZfZ251X21ha2VfY29tbWFuZCIgIT0gIngiICA7IHRoZW4KLSAgICAgICAgICAgICAgICBpZkdOVW1ha2U9JycgOwotICAgICAgICAgICAgICAgIGlmTm90R05VbWFrZT0nIycgOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgaWZHTlVtYWtlPScjJyA7Ci0gICAgICAgICAgICAgICAgaWZOb3RHTlVtYWtlPScnIDsKLSAgICAgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKCJOb3QgZm91bmQiKTsKLSAgICAgICAgZmkKLSAgICAgICAgQUNfU1VCU1QoaWZHTlVtYWtlKQotICAgICAgICBBQ19TVUJTVChpZk5vdEdOVW1ha2UpCi1dICkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9lMmZzcHJvZ3MtZml4LW1pc3NpbmctY2hlY2stZm9yLXBlcm1pc3Npb24tZGVuaWVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL2UyZnNwcm9ncy1maXgtbWlzc2luZy1jaGVjay1mb3ItcGVybWlzc2lvbi1kZW5pZWQucGF0Y2gKaW5kZXggMzMwNTRjNi4uNjljMDliYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL2UyZnNwcm9ncy1maXgtbWlzc2luZy1jaGVjay1mb3ItcGVybWlzc2lvbi1kZW5pZWQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL2UyZnNwcm9ncy1maXgtbWlzc2luZy1jaGVjay1mb3ItcGVybWlzc2lvbi1kZW5pZWQucGF0Y2gKQEAgLTEsMyArMSw2IEBACitGcm9tIGM3OTE0MzA5YWVlZTYyMDlkZGI2OTk1YzA4NDgwNWE5MTFkOWNjODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxMCBBdWcgMjAxNiAxMToxOTo0NCArMDgwMAogU3ViamVjdDogW1BBVENIXSBGaXggbWlzc2luZyBjaGVjayBmb3IgcGVybWlzc2lvbiBkZW5pZWQuCiAKIElmIHRoZSBwYXRoIHRvICJST09UX1NZU0NPTkZESVIvbWtlMmZzLmNvbmYiIGhhcyBhIHBlcm1pc3Npb24gZGVuaWVkIHByb2JsZW0sCkBAIC0xMCwxNSArMTMsMTYgQEAKIFdyaXR0ZW4tYnk6IEhlbnJpayBXYWxsaW4gPGhlbnJpay5iLndhbGxpbkBlcmljc3Nvbi5jb20+CiAKIFNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CisKIC0tLQogIGxpYi9zdXBwb3J0L3Byb2ZpbGUuYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2xpYi9zdXBwb3J0L3Byb2ZpbGUuYyBiL2xpYi9zdXBwb3J0L3Byb2ZpbGUuYwotaW5kZXggNTFhMzMxNC4uMWMxMDM5ZiAxMDA2NDQKK2luZGV4IDllOTY2NzNiLi4zMmQ4MzAwMiAxMDA2NDQKIC0tLSBhL2xpYi9zdXBwb3J0L3Byb2ZpbGUuYwogKysrIGIvbGliL3N1cHBvcnQvcHJvZmlsZS5jCi1AQCAtMzM1LDcgKzMzNSw3IEBAIHByb2ZpbGVfaW5pdChjb25zdCBjaGFyICoqZmlsZXMsIHByb2ZpbGVfdCAqcmV0X3Byb2ZpbGUpCitAQCAtMzM1LDcgKzMzNSw3IEBAIHByb2ZpbGVfaW5pdChjb25zdCBjaGFyICogY29uc3QgKmZpbGVzLCBwcm9maWxlX3QgKnJldF9wcm9maWxlKQogIAkJCQkqbGFzdCA9IG5ld19maWxlOwogIAkJCQlsYXN0ID0gJm5ld19maWxlLT5uZXh0OwogIAkJCX0KQEAgLTI4LDUgKzMyLDUgQEAKICAJCQlnb3RvIGVycm91dDsKICAKIC0tIAotMi43LjQKKzIuMTYuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvbWtkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvbWtkaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhM2FlZmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL21rZGlyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBNZWkgTGVpIDxsZWkubWVpQGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYzFmZTIyNC4uZjVhYzYyOCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTM3NCw3ICsxMzc0LDggQEAgaWYgdGVzdCAtbiAiJFdJVEhfRElFVF9MSUJDIiA7IHRoZW4KLSAJSU5DTFVERVM9IiRJTkNMVURFUyAtRF9SRUVOVFJBTlQiCi0gZmkKLSBBQ19TVUJTVChJTkNMVURFUykKLS1BTV9NS0lOU1RBTExESVJTCi0rTUtJTlNUQUxMRElSUz0ibWtkaXIgLXAiCi0rQUNfU1VCU1QoTUtJTlNUQUxMRElSUykKLSBkbmwKLSBkbmwgQnVpbGQgQ0ZMQUdTCi0gZG5sCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvcHRlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvcHRlc3QucGF0Y2gKaW5kZXggN2RmMDk2Ny4uN2M0YmIzOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3B0ZXN0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9wdGVzdC5wYXRjaApAQCAtMSwxMCArMSwxMCBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCiAKLWRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5pbiBiL3Rlc3RzL01ha2VmaWxlLmluCi1pbmRleCBjMTMwZjRhLi5kMmFkZTAzIDEwMDY0NAotLS0tIGEvdGVzdHMvTWFrZWZpbGUuaW4KLSsrKyBiL3Rlc3RzL01ha2VmaWxlLmluCi1AQCAtMTgsNyArMTgsNyBAQCB0ZXN0X29uZTogJChzcmNkaXIpL3Rlc3Rfb25lLmluIE1ha2VmaWxlIG1rZTJmcy5jb25mCitJbmRleDogZ2l0L3Rlc3RzL01ha2VmaWxlLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdGVzdHMvTWFrZWZpbGUuaW4KKysrKyBnaXQvdGVzdHMvTWFrZWZpbGUuaW4KK0BAIC0xOCw3ICsxOCw3IEBAIHRlc3Rfb25lOiAkKHNyY2RpcikvdGVzdF9vbmUuaW4gTWFrZWZpbGUKICAJQGVjaG8gIiMhL2Jpbi9zaCIgPiB0ZXN0X29uZQogIAlAZWNobyAiSFRSRUU9eSIgPj4gdGVzdF9vbmUKICAJQGVjaG8gIlFVT1RBPXkiID4+IHRlc3Rfb25lCkBAIC0xMiw4ICsxMiw4IEBACiArCUBlY2hvICJTUkNESVI9JHtwcmVmaXh9JHtsaWJkaXJ9L2UyZnNwcm9ncy9wdGVzdC90ZXN0IiA+PiB0ZXN0X29uZQogIAlAZWNobyAiRElGRl9PUFRTPUBVTklfRElGRl9PUFRTQCIgPj4gdGVzdF9vbmUKICAJQGVjaG8gIlNJWkVPRl9USU1FX1Q9QFNJWkVPRl9USU1FX1RAIiA+PiB0ZXN0X29uZQotIAlAY2F0ICQoc3JjZGlyKS90ZXN0X29uZS5pbiA+PiB0ZXN0X29uZQotQEAgLTI3LDcgKzI3LDcgQEAgdGVzdF9vbmU6ICQoc3JjZGlyKS90ZXN0X29uZS5pbiBNYWtlZmlsZSBta2UyZnMuY29uZgorIAlAZWNobyAiREQ9QEREQCIgPj50ZXN0X29uZQorQEAgLTI4LDcgKzI4LDcgQEAgdGVzdF9vbmU6ICQoc3JjZGlyKS90ZXN0X29uZS5pbiBNYWtlZmlsZQogIHRlc3Rfc2NyaXB0OiB0ZXN0X29uZSB0ZXN0X3NjcmlwdC5pbiBNYWtlZmlsZSBta2UyZnMuY29uZgogIAlAZWNobyAiQ3JlYXRpbmcgdGVzdF9zY3JpcHQuLi4iCiAgCUBlY2hvICIjIS9iaW4vc2giID4gdGVzdF9zY3JpcHQKQEAgLTIyLDEwICsyMiwxMCBAQAogIAlAY2F0ICQoc3JjZGlyKS90ZXN0X3NjcmlwdC5pbiA+PiB0ZXN0X3NjcmlwdAogIAlAY2htb2QgK3ggdGVzdF9zY3JpcHQKICAKLWRpZmYgLS1naXQgYS90ZXN0cy90ZXN0X2NvbmZpZyBiL3Rlc3RzL3Rlc3RfY29uZmlnCi1pbmRleCA1NDdlZjRjLi5lMTFlNmY0IDEwMDY0NAotLS0tIGEvdGVzdHMvdGVzdF9jb25maWcKLSsrKyBiL3Rlc3RzL3Rlc3RfY29uZmlnCitJbmRleDogZ2l0L3Rlc3RzL3Rlc3RfY29uZmlnCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdGVzdHMvdGVzdF9jb25maWcKKysrKyBnaXQvdGVzdHMvdGVzdF9jb25maWcKIEBAIC0zLDI0ICszLDI0IEBACiAgIwogIApAQCAtNjcsMTAgKzY3LDEwIEBACiAgQ0xFQU5fT1VUUFVUPSJzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCIKICBMRF9MSUJSQVJZX1BBVEg9Li4vbGliOi4uL2xpYi9leHQyZnM6Li4vbGliL2UycDouLi9saWIvZXQ6Li4vbGliL3NzOiR7TERfTElCUkFSWV9QQVRIfQogIERZTERfTElCUkFSWV9QQVRIPS4uL2xpYjouLi9saWIvZXh0MmZzOi4uL2xpYi9lMnA6Li4vbGliL2V0Oi4uL2xpYi9zczoke0RZTERfTElCUkFSWV9QQVRIfQotZGlmZiAtLWdpdCBhL3Rlc3RzL3Rlc3Rfc2NyaXB0LmluIGIvdGVzdHMvdGVzdF9zY3JpcHQuaW4KLWluZGV4IDk5NTllMzAuLjQ0Mjk5OWQgMTAwNjQ0Ci0tLS0gYS90ZXN0cy90ZXN0X3NjcmlwdC5pbgotKysrIGIvdGVzdHMvdGVzdF9zY3JpcHQuaW4KK0luZGV4OiBnaXQvdGVzdHMvdGVzdF9zY3JpcHQuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy90ZXN0cy90ZXN0X3NjcmlwdC5pbgorKysrIGdpdC90ZXN0cy90ZXN0X3NjcmlwdC5pbgogQEAgLTM5LDcgKzM5LDcgQEAgZm9yIGk7IGRvCiAgZG9uZQogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3JlcHJvZHVjaWJsZS1kb2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvcmVwcm9kdWNpYmxlLWRvYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGU1ZDFkMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvcmVwcm9kdWNpYmxlLWRvYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotU3VwcHBvcnQgZm9yIGJpbmFyeSByZXByb2R1Y2liaWxpdHkuCi1XaGVuIGNvbXByZXNzaW5nLCBkbyBub3Qgc2F2ZSB0aGUgb3JpZ2luYWwgZmlsZSBuYW1lIGFuZCB0aW1lIHN0YW1wLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbVGhlb2RvcmUgVHMnbyB0eXRzb0BtaXQuZWR1IChtYWludGFpbmVyKV0KLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL2RvYy9NYWtlZmlsZS5pbiBiL2RvYy9NYWtlZmlsZS5pbgotaW5kZXggOWNiNTg0Yy4uMGJlZTRlNCAxMDA2NDQKLS0tLSBhL2RvYy9NYWtlZmlsZS5pbgotKysrIGIvZG9jL01ha2VmaWxlLmluCi1AQCAtMjgsNyArMjgsNyBAQCBpbnN0YWxsLWRvYy1saWJzOiBsaWJleHQyZnMuaW5mbyBsaWJleHQyZnMuZHZpCi0gCQkkKElOU1RBTExfREFUQSkgJCRpICQoREVTVERJUikkKGluZm9kaXIpLyQkaSA7IFwKLSAJZG9uZQotIAkkKEUpICIJR1pJUCAkKGluZm9kaXIpL2xpYmV4dDJmcy5pbmZvKiIKLS0JLSQoUSkgZ3ppcCAtOSAkKERFU1RESVIpJChpbmZvZGlyKS9saWJleHQyZnMuaW5mbyoKLSsJLSQoUSkgZ3ppcCAtOSAtbiAkKERFU1RESVIpJChpbmZvZGlyKS9saWJleHQyZnMuaW5mbyoKLSAKLSB1bmluc3RhbGwtZG9jLWxpYnM6Ci0gCSQoUk0pIC1yZiAkKERFU1RESVIpJChpbmZvZGlyKS9saWJleHQyZnMuaW5mbyoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9nc18xLjQzLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3NfMS40My41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWQ3YzA4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9nc18xLjQzLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotcmVxdWlyZSBlMmZzcHJvZ3MuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9hY2luY2x1ZGUubTQgXAotICAgICAgICAgICAgZmlsZTovL3JlbW92ZS5sZGNvbmZpZy5jYWxsLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9xdWlldC1kZWJ1Z2ZzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICAgZmlsZTovL3B0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ta2Rpci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vUmV2ZXJ0LW1rZTJmcy1lbmFibGUtdGhlLW1ldGFkYXRhX2NzdW0tYW5kLTY0Yml0LWZlYS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vbWtkaXJfcC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcmVwcm9kdWNpYmxlLWRvYy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1taXNjLWNyZWF0ZV9pbm9kZS5jLXNldC1kaXItcy1tb2RlLWNvcnJlY3RseS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1taXNjLXJlbmFtZS1jb3B5X2ZpbGVfcmFuZ2UtdG8tY29weV9maWxlX2NodW5rLnBhdGNoIFwKLSIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vZTJmc3Byb2dzLWZpeC1taXNzaW5nLWNoZWNrLWZvci1wZXJtaXNzaW9uLWRlbmllZC5wYXRjaCIKLQotU1JDUkVWID0gIjJhMTNjODRiNTEzYWEwOTRkMWNkYTcyN2U5MmQzNWE4OWRkNzc3ZGEiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+XGQrXC5cZCsoXC5cZCspKikkIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tbGliZGlyPSR7YmFzZV9saWJkaXJ9IC0tc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0gXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWVsZi1zaGxpYnMgLS1kaXNhYmxlLWxpYnV1aWQgLS1kaXNhYmxlLXV1aWRkIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliYmxraWQgLS1lbmFibGUtdmVyYm9zZS1tYWtlY21kcyIKLQotRVhUUkFfT0VDT05GX2RhcndpbiA9ICItLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSAtLXNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IC0tZW5hYmxlLWJzZC1zaGxpYnMiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2Z1c2VdID0gJy0tZW5hYmxlLWZ1c2UyZnMsLS1kaXNhYmxlLWZ1c2UyZnMsZnVzZScKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCWNwICR7V09SS0RJUn0vYWNpbmNsdWRlLm00ICR7U30vCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbC1saWJzCi0JIyBXZSB1c2UgYmxraWQgZnJvbSB1dGlsLWxpbnV4IG5vdyBzbyByZW1vdmUgZnJvbSBoZXJlCi0Jcm0gLWYgJHtEfSR7YmFzZV9saWJkaXJ9L2xpYmJsa2lkKgotCXJtIC1yZiAke0R9JHtpbmNsdWRlZGlyfS9ibGtpZAotCXJtIC1mICR7RH0ke2Jhc2VfbGliZGlyfS9wa2djb25maWcvYmxraWQucGMKLQlybSAtZiAke0R9JHtiYXNlX3NiaW5kaXJ9L2Jsa2lkCi0Jcm0gLWYgJHtEfSR7YmFzZV9zYmluZGlyfS9mc2NrCi0Jcm0gLWYgJHtEfSR7YmFzZV9zYmluZGlyfS9maW5kZnMKLQotCSMgZTJpbml0cmRfaGVscGVyIGFuZCB0aGUgcGtnY29uZmlnIGZpbGVzIGJlbG9uZyBpbiBsaWJkaXIKLQlpZiBbICEgJHtEfSR7bGliZGlyfSAtZWYgJHtEfSR7YmFzZV9saWJkaXJ9IF07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9Ci0JCW12ICR7RH0ke2Jhc2VfbGliZGlyfS9lMmluaXRyZF9oZWxwZXIgJHtEfSR7bGliZGlyfQotCQltdiAke0R9JHtiYXNlX2xpYmRpcn0vcGtnY29uZmlnICR7RH0ke2xpYmRpcn0KLQlmaQotCi0Jb2VfbXVsdGlsaWJfaGVhZGVyIGV4dDJmcy9leHQyX3R5cGVzLmgKLQlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQotCW12ICR7RH0ke2JpbmRpcn0vY2hhdHRyICR7RH0ke2Jhc2VfYmluZGlyfS9jaGF0dHIuZTJmc3Byb2dzCi0KLQlpbnN0YWxsIC12IC1tIDc1NSAke1N9L2NvbnRyaWIvcG9wdWxhdGUtZXh0ZnMuc2ggJHtEfSR7YmFzZV9zYmluZGlyfS8KLQotCSMgQ2xlYW4gaG9zdCBwYXRoIChidWlsZCBkaXJlY3RvcnkpIGluIGNvbXBpbGVfZXQsIG1rX2NtZHMKLQlzZWQgLWkgLWUgInMsXChFVF9ESVI9LipcKSR7U30vbGliL2V0XCguKlwpLFwxJHtkYXRhZGlyfS9ldFwyLGciICR7RH0ke2JpbmRpcn0vY29tcGlsZV9ldAotCXNlZCAtaSAtZSAicyxcKFNTX0RJUj0uKlwpJHtTfS9saWIvc3NcKC4qXCksXDEke2RhdGFkaXJ9L3NzXDIsZyIgJHtEfSR7YmluZGlyfS9ta19jbWRzCi19Ci0KLSMgTmVlZCB0byBmaW5kIHRoZSByaWdodCBta2UyZnMuY29uZiBmaWxlCi1lMmZzcHJvZ3NfY29uZl9maXh1cCAoKSB7Ci0JZm9yIGkgaW4gbWtlMmZzIG1rZnMuZXh0MiBta2ZzLmV4dDMgbWtmcy5leHQ0OyBkbwotCQljcmVhdGVfd3JhcHBlciAke0R9JHtiYXNlX3NiaW5kaXJ9LyRpIE1LRTJGU19DT05GSUc9JHtzeXNjb25mZGlyfS9ta2UyZnMuY29uZgotCWRvbmUKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWUyZnNwcm9nc19jb25mX2ZpeHVwCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLQllMmZzcHJvZ3NfY29uZl9maXh1cAotfQotCi1SREVQRU5EU19lMmZzcHJvZ3MgPSAiZTJmc3Byb2dzLWJhZGJsb2NrcyIKLVJSRUNPTU1FTkRTX2UyZnNwcm9ncyA9ICJlMmZzcHJvZ3MtbWtlMmZzIGUyZnNwcm9ncy1lMmZzY2siCi0KLVBBQ0tBR0VTID0rICJlMmZzcHJvZ3MtZTJmc2NrIGUyZnNwcm9ncy1ta2UyZnMgZTJmc3Byb2dzLXR1bmUyZnMgZTJmc3Byb2dzLWJhZGJsb2NrcyBlMmZzcHJvZ3MtcmVzaXplMmZzIgotUEFDS0FHRVMgPSsgImxpYmNvbWVyciBsaWJzcyBsaWJlMnAgbGliZXh0MmZzIgotCi1GSUxFU19lMmZzcHJvZ3MtcmVzaXplMmZzID0gIiR7YmFzZV9zYmluZGlyfS9yZXNpemUyZnMqIgotRklMRVNfZTJmc3Byb2dzLWUyZnNjayA9ICIke2Jhc2Vfc2JpbmRpcn0vZTJmc2NrICR7YmFzZV9zYmluZGlyfS9mc2NrLmV4dCoiCi1GSUxFU19lMmZzcHJvZ3MtbWtlMmZzID0gIiR7YmFzZV9zYmluZGlyfS9ta2UyZnMgJHtiYXNlX3NiaW5kaXJ9L21rZnMuZXh0KiAke3N5c2NvbmZkaXJ9L21rZTJmcy5jb25mIgotRklMRVNfZTJmc3Byb2dzLXR1bmUyZnMgPSAiJHtiYXNlX3NiaW5kaXJ9L3R1bmUyZnMgJHtiYXNlX3NiaW5kaXJ9L2UybGFiZWwiCi1GSUxFU19lMmZzcHJvZ3MtYmFkYmxvY2tzID0gIiR7YmFzZV9zYmluZGlyfS9iYWRibG9ja3MiCi1GSUxFU19saWJjb21lcnIgPSAiJHtiYXNlX2xpYmRpcn0vbGliY29tX2Vyci5zby4qIgotRklMRVNfbGlic3MgPSAiJHtiYXNlX2xpYmRpcn0vbGlic3Muc28uKiIKLUZJTEVTX2xpYmUycCA9ICIke2Jhc2VfbGliZGlyfS9saWJlMnAuc28uKiIKLUZJTEVTX2xpYmV4dDJmcyA9ICIke2xpYmRpcn0vZTJpbml0cmRfaGVscGVyICR7YmFzZV9saWJkaXJ9L2xpYmV4dDJmcy5zby4qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9LyovKi5hd2sgJHtkYXRhZGlyfS8qLyouc2VkICR7YmFzZV9saWJkaXJ9Lyouc28gJHtiaW5kaXJ9L2NvbXBpbGVfZXQgJHtiaW5kaXJ9L21rX2NtZHMiCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImNoYXR0ciIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtjaGF0dHJdID0gIiR7YmFzZV9iaW5kaXJ9L2NoYXR0ciIKLUFMVEVSTkFUSVZFX1RBUkdFVFtjaGF0dHJdID0gIiR7YmFzZV9iaW5kaXJ9L2NoYXR0ci5lMmZzcHJvZ3MiCi0KLUFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJmc2NrLjgiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZnNjay44XSA9ICIke21hbmRpcn0vbWFuOC9mc2NrLjgiCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfSAke1BOfS10dW5lMmZzIGNvcmV1dGlscyBwcm9jcHMgYmFzaCIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIC1DICR7Qn0vdGVzdHMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQljcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAke0J9L3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQljcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotCXNlZCAtZSAncyEuLi9lMmZzY2svZTJmc2NrIWUyZnNjayFnJyAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0LyovZXhwZWN0KgotCi0JIyBSZW1vdmUgdmFyaW91cyBmaWxlcwotCWZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtdHlwZSBmIFwKLQkgICAgXCggLW5hbWUgJ01ha2VmaWxlJyAtbyAtbmFtZSAnTWFrZWZpbGUuaW4nIC1vIC1uYW1lICcqLm8nIC1vIC1uYW1lICcqLmMnIC1vIC1uYW1lICcqLmgnIFwpXAotCSAgICAtZXhlYyAgcm0gLWYge30gKwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzXzEuNDMuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9nc18xLjQzLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZhYmIzYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9nc18xLjQzLjguYmIKQEAgLTAsMCArMSwxMjAgQEAKK3JlcXVpcmUgZTJmc3Byb2dzLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vcmVtb3ZlLmxkY29uZmlnLmNhbGwucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgICBmaWxlOi8vcHRlc3QucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL1JldmVydC1ta2UyZnMtZW5hYmxlLXRoZS1tZXRhZGF0YV9jc3VtLWFuZC02NGJpdC1mZWEucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL21rZGlyX3AucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtbWlzYy1jcmVhdGVfaW5vZGUuYy1zZXQtZGlyLXMtbW9kZS1jb3JyZWN0bHkucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtbGliZXh0MmZzLWZpeC1idWlsZC1mYWlsdXJlLWluLXN3YXBmcy5jLW9uLWJpZy1lbmRpYS5wYXRjaCBcCisgICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL2UyZnNwcm9ncy1maXgtbWlzc2luZy1jaGVjay1mb3ItcGVybWlzc2lvbi1kZW5pZWQucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcXVpZXQtZGVidWdmcy5wYXRjaCBcCisiCisKK1NSQ1JFViA9ICJhZjJlYWM0ODFjZjQyNmMwNWFlMTJiOTQ2Mzk2OTgwZTE2YzhhYjE5IgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPlxkK1wuXGQrKFwuXGQrKSopJCIKKworRVhUUkFfT0VDT05GICs9ICItLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSAtLXNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1lbGYtc2hsaWJzIC0tZGlzYWJsZS1saWJ1dWlkIC0tZGlzYWJsZS11dWlkZCBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmJsa2lkIC0tZW5hYmxlLXZlcmJvc2UtbWFrZWNtZHMiCisKK0VYVFJBX09FQ09ORl9kYXJ3aW4gPSAiLS1saWJkaXI9JHtiYXNlX2xpYmRpcn0gLS1zYmluZGlyPSR7YmFzZV9zYmluZGlyfSAtLWVuYWJsZS1ic2Qtc2hsaWJzIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tmdXNlXSA9ICctLWVuYWJsZS1mdXNlMmZzLC0tZGlzYWJsZS1mdXNlMmZzLGZ1c2UnCisKKyMgbWFrZSBsb2NhbGUgcnVsZXMgc29tZXRpbWVzIGZpcmUsIHNvbWV0aW1lcyBkb24ndCBhcyBnaXQgZG9lc24ndCBwcmVzZXJ2ZQorIyBmaWxlIG1rdGltZS4gVG91Y2ggdGhlIGZpbGVzIGludHJvZHVjaW5nIG5vbi1kZXRlcm1pbmlzbSB0byB0aGUgYnVpbGQKK2RvX2NvbXBpbGVfcHJlcGVuZCAoKXsKKwlmaW5kICR7U30vcG8gLXR5cGUgZiAtbmFtZSAiKi5wbyIgLWV4ZWMgdG91Y2gge30gKworfQorCitkb19pbnN0YWxsICgpIHsKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtbGlicworCSMgV2UgdXNlIGJsa2lkIGZyb20gdXRpbC1saW51eCBub3cgc28gcmVtb3ZlIGZyb20gaGVyZQorCXJtIC1mICR7RH0ke2Jhc2VfbGliZGlyfS9saWJibGtpZCoKKwlybSAtcmYgJHtEfSR7aW5jbHVkZWRpcn0vYmxraWQKKwlybSAtZiAke0R9JHtiYXNlX2xpYmRpcn0vcGtnY29uZmlnL2Jsa2lkLnBjCisJcm0gLWYgJHtEfSR7YmFzZV9zYmluZGlyfS9ibGtpZAorCXJtIC1mICR7RH0ke2Jhc2Vfc2JpbmRpcn0vZnNjaworCXJtIC1mICR7RH0ke2Jhc2Vfc2JpbmRpcn0vZmluZGZzCisKKwkjIGUyaW5pdHJkX2hlbHBlciBhbmQgdGhlIHBrZ2NvbmZpZyBmaWxlcyBiZWxvbmcgaW4gbGliZGlyCisJaWYgWyAhICR7RH0ke2xpYmRpcn0gLWVmICR7RH0ke2Jhc2VfbGliZGlyfSBdOyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfQorCQltdiAke0R9JHtiYXNlX2xpYmRpcn0vZTJpbml0cmRfaGVscGVyICR7RH0ke2xpYmRpcn0KKwkJbXYgJHtEfSR7YmFzZV9saWJkaXJ9L3BrZ2NvbmZpZyAke0R9JHtsaWJkaXJ9CisJZmkKKworCW9lX211bHRpbGliX2hlYWRlciBleHQyZnMvZXh0Ml90eXBlcy5oCisJaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKwltdiAke0R9JHtiaW5kaXJ9L2NoYXR0ciAke0R9JHtiYXNlX2JpbmRpcn0vY2hhdHRyLmUyZnNwcm9ncworCisJaW5zdGFsbCAtdiAtbSA3NTUgJHtTfS9jb250cmliL3BvcHVsYXRlLWV4dGZzLnNoICR7RH0ke2Jhc2Vfc2JpbmRpcn0vCisKKwkjIENsZWFuIGhvc3QgcGF0aCAoYnVpbGQgZGlyZWN0b3J5KSBpbiBjb21waWxlX2V0LCBta19jbWRzCisJc2VkIC1pIC1lICJzLFwoRVRfRElSPS4qXCkke1N9L2xpYi9ldFwoLipcKSxcMSR7ZGF0YWRpcn0vZXRcMixnIiAke0R9JHtiaW5kaXJ9L2NvbXBpbGVfZXQKKwlzZWQgLWkgLWUgInMsXChTU19ESVI9LipcKSR7U30vbGliL3NzXCguKlwpLFwxJHtkYXRhZGlyfS9zc1wyLGciICR7RH0ke2JpbmRpcn0vbWtfY21kcworfQorCisjIE5lZWQgdG8gZmluZCB0aGUgcmlnaHQgbWtlMmZzLmNvbmYgZmlsZQorZTJmc3Byb2dzX2NvbmZfZml4dXAgKCkgeworCWZvciBpIGluIG1rZTJmcyBta2ZzLmV4dDIgbWtmcy5leHQzIG1rZnMuZXh0NDsgZG8KKwkJY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmFzZV9zYmluZGlyfS8kaSBNS0UyRlNfQ09ORklHPSR7c3lzY29uZmRpcn0vbWtlMmZzLmNvbmYKKwlkb25lCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwllMmZzcHJvZ3NfY29uZl9maXh1cAorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisJZTJmc3Byb2dzX2NvbmZfZml4dXAKK30KKworUkRFUEVORFNfZTJmc3Byb2dzID0gImUyZnNwcm9ncy1iYWRibG9ja3MiCitSUkVDT01NRU5EU19lMmZzcHJvZ3MgPSAiZTJmc3Byb2dzLW1rZTJmcyBlMmZzcHJvZ3MtZTJmc2NrIgorCitQQUNLQUdFUyA9KyAiZTJmc3Byb2dzLWUyZnNjayBlMmZzcHJvZ3MtbWtlMmZzIGUyZnNwcm9ncy10dW5lMmZzIGUyZnNwcm9ncy1iYWRibG9ja3MgZTJmc3Byb2dzLXJlc2l6ZTJmcyIKK1BBQ0tBR0VTID0rICJsaWJjb21lcnIgbGlic3MgbGliZTJwIGxpYmV4dDJmcyIKKworRklMRVNfZTJmc3Byb2dzLXJlc2l6ZTJmcyA9ICIke2Jhc2Vfc2JpbmRpcn0vcmVzaXplMmZzKiIKK0ZJTEVTX2UyZnNwcm9ncy1lMmZzY2sgPSAiJHtiYXNlX3NiaW5kaXJ9L2UyZnNjayAke2Jhc2Vfc2JpbmRpcn0vZnNjay5leHQqIgorRklMRVNfZTJmc3Byb2dzLW1rZTJmcyA9ICIke2Jhc2Vfc2JpbmRpcn0vbWtlMmZzICR7YmFzZV9zYmluZGlyfS9ta2ZzLmV4dCogJHtzeXNjb25mZGlyfS9ta2UyZnMuY29uZiIKK0ZJTEVTX2UyZnNwcm9ncy10dW5lMmZzID0gIiR7YmFzZV9zYmluZGlyfS90dW5lMmZzICR7YmFzZV9zYmluZGlyfS9lMmxhYmVsIgorRklMRVNfZTJmc3Byb2dzLWJhZGJsb2NrcyA9ICIke2Jhc2Vfc2JpbmRpcn0vYmFkYmxvY2tzIgorRklMRVNfbGliY29tZXJyID0gIiR7YmFzZV9saWJkaXJ9L2xpYmNvbV9lcnIuc28uKiIKK0ZJTEVTX2xpYnNzID0gIiR7YmFzZV9saWJkaXJ9L2xpYnNzLnNvLioiCitGSUxFU19saWJlMnAgPSAiJHtiYXNlX2xpYmRpcn0vbGliZTJwLnNvLioiCitGSUxFU19saWJleHQyZnMgPSAiJHtsaWJkaXJ9L2UyaW5pdHJkX2hlbHBlciAke2Jhc2VfbGliZGlyfS9saWJleHQyZnMuc28uKiIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS8qLyouYXdrICR7ZGF0YWRpcn0vKi8qLnNlZCAke2Jhc2VfbGliZGlyfS8qLnNvICR7YmluZGlyfS9jb21waWxlX2V0ICR7YmluZGlyfS9ta19jbWRzIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJjaGF0dHIiCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbY2hhdHRyXSA9ICIke2Jhc2VfYmluZGlyfS9jaGF0dHIiCitBTFRFUk5BVElWRV9UQVJHRVRbY2hhdHRyXSA9ICIke2Jhc2VfYmluZGlyfS9jaGF0dHIuZTJmc3Byb2dzIgorCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAiZnNjay44IgorQUxURVJOQVRJVkVfTElOS19OQU1FW2ZzY2suOF0gPSAiJHttYW5kaXJ9L21hbjgvZnNjay44IgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0gJHtQTn0tdHVuZTJmcyBjb3JldXRpbHMgcHJvY3BzIGJhc2giCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJb2VfcnVubWFrZSAtQyAke0J9L3Rlc3RzCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJY3AgLVIgLS1uby1kZXJlZmVyZW5jZSAtLXByZXNlcnZlPW1vZGUsbGlua3MgLXYgJHtCfS90ZXN0cyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJY3AgLVIgLS1uby1kZXJlZmVyZW5jZSAtLXByZXNlcnZlPW1vZGUsbGlua3MgLXYgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwlzZWQgLWUgJ3MhLi4vZTJmc2NrL2UyZnNjayFlMmZzY2shZycgXAorCSAgICAtZSAncyEuLi9taXNjL3R1bmUyZnMhdHVuZTJmcyFnJyAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0LyovZXhwZWN0KgorCXNlZCAtZSAncyEuLi9lMmZzY2svZTJmc2NrISR7YmFzZV9zYmluZGlyfS9lMmZzY2shZycgLWkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC8qL3NjcmlwdAorCisJIyBSZW1vdmUgdmFyaW91cyBmaWxlcworCWZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtdHlwZSBmIFwKKwkgICAgXCggLW5hbWUgJ01ha2VmaWxlJyAtbyAtbmFtZSAnTWFrZWZpbGUuaW4nIC1vIC1uYW1lICcqLm8nIC1vIC1uYW1lICcqLmMnIC1vIC1uYW1lICcqLmgnIFwpXAorCSAgICAtZXhlYyAgcm0gLWYge30gKworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3MC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNzAuYmIKaW5kZXggM2I4MWUyOC4uMTRhYzIyZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3MC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTcwLmJiCkBAIC01LDQwICs1LDMxIEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKIERFUEVORFMgPSAibGlidG9vbCBiemlwMiB6bGliIHZpcnR1YWwvbGliaW50bCIKIERFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIGZ0cyAiCi1TUkNfVVJJID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvZWxmdXRpbHMvZnRwLyR7UFZ9LyR7QlB9LnRhci5iejIiCisjIFRoZSBEZWJpYW4gcGF0Y2hlcyBiZWxvdyBhcmUgZnJvbToKKyMgaHR0cDovL2Z0cC5kZS5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vZS9lbGZ1dGlscy9lbGZ1dGlsc18wLjE2OC0wLjIuZGViaWFuLnRhci54egorU1JDX1VSSSA9ICJodHRwczovL3NvdXJjZXdhcmUub3JnL2VsZnV0aWxzL2Z0cC8ke1BWfS8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZHNvLWxpbmstY2hhbmdlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItRml4LWVsZl9jdnRfZ3VuaGFzaC1pZi1kZXN0LWFuZC1zcmMtYXJlLXNhbWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1maXhoZWFkZXJjaGVjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LURpc2FibGUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1maXgtYS1zdGFjay11c2FnZS13YXJuaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtRml4LWJ1aWxkLW9uLWFhcmNoNjQtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LUZpeC1jb250cm9sLXBhdGgtd2hlcmUtd2UtaGF2ZS1zdHItYXMtdW5pbml0aWFsaXplZC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJhc20tbWF5LWxpbmstd2l0aC1saWJiejItaWYtZm91bmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL2hwcGFfYmFja2VuZC5kaWZmIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9hcm1fYmFja2VuZC5kaWZmIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9taXBzX2JhY2tlbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL21pcHNfcmVhZGVsZl93LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAxLUlnbm9yZS1kaWZmZXJlbmNlcy1iZXR3ZWVuLW1pcHMtbWFjaGluZS1pZGVudGlmaWVycy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMi1BZGQtc3VwcG9ydC1mb3ItbWlwczY0LWFiaXMtaW4tbWlwc19yZXR2YWwuYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMy1BZGQtbWlwcy1uNjQtcmVsb2NhdGlvbi1mb3JtYXQtaGFjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1mYWxsdGhyb3VnaC1hdHRyaWJ1dGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1FbnN1cmUtdGhhdC1wYWNrZWQtc3RydWN0cy1mb2xsb3ctdGhlLWdjYy1tZW1vcnktbGF5LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwOC1idWlsZC1Qcm92aWRlLWFsdGVybmF0aXZlcy1mb3ItZ2xpYmMtYXNzdW1wdGlvbnMtaGVsLnBhdGNoIgogU1JDX1VSSVttZDVzdW1dID0gIjAzNTk5YWVlOThjOWI3MjZjN2E3MzJhMmRkMDI0NWQ1IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFmODQ0Nzc1NTc2Yjc5YmRjOWY5YzcxN2E1MDA1OGQwODYyMDMyM2MxZTkzNTQ1ODIyM2ExMmYyNDljOWUwNjYiCiAKLVNSQ19VUkkgKz0gIlwKLSAgICAgICAgZmlsZTovLzAwMDEtZHNvLWxpbmstY2hhbmdlLnBhdGNoIFwKLSAgICAgICAgZmlsZTovLzAwMDItRml4LWVsZl9jdnRfZ3VuaGFzaC1pZi1kZXN0LWFuZC1zcmMtYXJlLXNhbWUucGF0Y2ggXAotICAgICAgICBmaWxlOi8vMDAwMy1maXhoZWFkZXJjaGVjay5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly8wMDA0LURpc2FibGUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2ggXAotICAgICAgICBmaWxlOi8vMDAwNS1maXgtYS1zdGFjay11c2FnZS13YXJuaW5nLnBhdGNoIFwKLSAgICAgICAgZmlsZTovLzAwMDYtRml4LWJ1aWxkLW9uLWFhcmNoNjQtbXVzbC5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly8wMDA3LUZpeC1jb250cm9sLXBhdGgtd2hlcmUtd2UtaGF2ZS1zdHItYXMtdW5pbml0aWFsaXplZC0ucGF0Y2ggXAotICAgICAgICBmaWxlOi8vMDAwMS1saWJhc20tbWF5LWxpbmstd2l0aC1saWJiejItaWYtZm91bmQucGF0Y2ggXAotIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwOC1idWlsZC1Qcm92aWRlLWFsdGVybmF0aXZlcy1mb3ItZ2xpYmMtYXNzdW1wdGlvbnMtaGVsLnBhdGNoIgotCi0jIFBpY2sgcGF0Y2hlcyBmcm9tIGRlYmlhbgotIyBodHRwOi8vZnRwLmRlLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9lL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTY4LTAuMi5kZWJpYW4udGFyLnh6Ci1TUkNfVVJJICs9ICJcCi0gICAgICAgIGZpbGU6Ly9kZWJpYW4vaHBwYV9iYWNrZW5kLmRpZmYgXAotICAgICAgICBmaWxlOi8vZGViaWFuL2FybV9iYWNrZW5kLmRpZmYgXAotICAgICAgICBmaWxlOi8vZGViaWFuL21pcHNfYmFja2VuZC5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9kZWJpYW4vbWlwc19yZWFkZWxmX3cucGF0Y2ggXAotICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDEtSWdub3JlLWRpZmZlcmVuY2VzLWJldHdlZW4tbWlwcy1tYWNoaW5lLWlkZW50aWZpZXJzLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAyLUFkZC1zdXBwb3J0LWZvci1taXBzNjQtYWJpcy1pbi1taXBzX3JldHZhbC5jLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAzLUFkZC1taXBzLW42NC1yZWxvY2F0aW9uLWZvcm1hdC1oYWNrLnBhdGNoIFwKLSIKLSMgRml4IHRoZSBwYXRjaGVzIGZyb20gRGViaWFuIHdpdGggR0NDNwotU1JDX1VSSSArPSAiZmlsZTovL2RlYmlhbi9mYWxsdGhyb3VnaC5wYXRjaCIKLQotIyBUaGUgYnVpbGRzeXN0ZW0gd2FudHMgdG8gZ2VuZXJhdGUgMiAuaCBmaWxlcyBmcm9tIHNvdXJjZSB1c2luZyBhIGJpbmFyeSBpdCBqdXN0IGJ1aWx0LAotIyB3aGljaCBjYW4gbm90IHBhc3MgdGhlIGNyb3NzIGNvbXBpbGluZywgc28gbGV0J3Mgd29yayBhcm91bmQgaXQgYnkgYWRkaW5nIDIgLmggZmlsZXMKLSMgYWxvbmcgd2l0aCB0aGUgZG9fY29uZmlndXJlX3ByZXBlbmQoKQotCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0CiAKIEVYVFJBX09FQ09ORiA9ICItLXByb2dyYW0tcHJlZml4PWV1LSAtLXdpdGhvdXQtbHptYSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1FbnN1cmUtdGhhdC1wYWNrZWQtc3RydWN0cy1mb2xsb3ctdGhlLWdjYy1tZW1vcnktbGF5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLUVuc3VyZS10aGF0LXBhY2tlZC1zdHJ1Y3RzLWZvbGxvdy10aGUtZ2NjLW1lbW9yeS1sYXkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y0ZDFkZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1FbnN1cmUtdGhhdC1wYWNrZWQtc3RydWN0cy1mb2xsb3ctdGhlLWdjYy1tZW1vcnktbGF5LnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gNzMyOTEzYThjMzVjN2IyNWMwY2JmNjkwM2NhYjFhZDZiNjAyYjUyNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDIyIE1hciAyMDE4IDIyOjQ0OjAzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEVuc3VyZSB0aGF0IHBhY2tlZCBzdHJ1Y3RzIGZvbGxvdyB0aGUgZ2NjIG1lbW9yeSBsYXlvdXQKKworUGFydGlhbCBiYWNrcG9ydCBvZgoraHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvP3A9ZWxmdXRpbHMuZ2l0O2E9Y29tbWl0O2g9MTdkNzE5NGQyOTFiZjkxZDEzMGI3OGUwNmNiZTI3YjI5MGUwMzc2ZAorCitIZWxwcyBmaXhpbmcgYWxpZ25tZW50IGVycm9ycyBlLmcuCitsaW51eC1jb3JlLW5vdGUuYzoxMTY6MTogZXJyb3I6IGFsaWdubWVudCAyIG9mICdzdHJ1Y3QgbTY4a19wcnN0YXR1cworJyBpcyBsZXNzIHRoYW4gNCBbLVdlcnJvcj1wYWNrZWQtbm90LWFsaWduZWRdCisgOworIF4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvP3A9ZWxmdXRpbHMuZ2l0O2E9Y29tbWl0O2g9MTdkNzE5NGQyOTFiZjkxZDEzMGI3OGUwNmNiZTI3YjI5MGUwMzc2ZF0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGJhY2tlbmRzL2xpbnV4LWNvcmUtbm90ZS5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvbGludXgtY29yZS1ub3RlLmMgYi9iYWNrZW5kcy9saW51eC1jb3JlLW5vdGUuYworaW5kZXggNWYwNmM4OTYuLjlmYWFlNGMzIDEwMDY0NAorLS0tIGEvYmFja2VuZHMvbGludXgtY29yZS1ub3RlLmMKKysrKyBiL2JhY2tlbmRzL2xpbnV4LWNvcmUtbm90ZS5jCitAQCAtMTExLDcgKzExMSw3IEBAIHN0cnVjdCBFQkxIT09LKHByc3RhdHVzKQorICAgRklFTEQgKElOVCwgcHJfZnB2YWxpZCk7CisgfQorICNpZmRlZiBBTElHTl9QUlNUQVRVUworLSAgX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCwgYWxpZ25lZCAoQUxJR05fUFJTVEFUVVMpKSkKKysgIGF0dHJpYnV0ZV9wYWNrZWQgX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQgKEFMSUdOX1BSU1RBVFVTKSkpCisgI2VuZGlmCisgOworIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLVVzZS1mYWxsdGhyb3VnaC1hdHRyaWJ1dGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtVXNlLWZhbGx0aHJvdWdoLWF0dHJpYnV0ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTIxNTViCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLVVzZS1mYWxsdGhyb3VnaC1hdHRyaWJ1dGUucGF0Y2gKQEAgLTAsMCArMSw3OTEgQEAKK0Zyb20gNWNiODgzZjY3ZDAwYTYzNTMxZWYxOTVjMjQyNzYzZDM2YjE5MDVjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvc2h1YSBXYXR0IDxKb3NodWEuV2F0dEBnYXJtaW4uY29tPgorRGF0ZTogRnJpLCA5IEZlYiAyMDE4IDEyOjQ2OjM4IC0wNjAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBmYWxsdGhyb3VnaCBhdHRyaWJ1dGUKKworVXNlIF9fYXR0cmlidXRlX18gKChmYWxsdGhyb3VnaCkpIHRvIGluZGljYXRlIHN3aXRjaCBjYXNlIGZhbGwgdGhyb3VnaAoraW5zdGVhZCBvZiBhIGNvbW1lbnQuIFRoaXMgZW5zdXJlIHRoYXQgdGhlIGZhbGx0aHJvdWdoIHdhcm5pbmcgaXMgbm90Cit0cmlnZ2VyZWQgZXZlbiBpZiB0aGUgZmlsZSBpcyBwcmUtcHJvY2Vzc2VkIChoZW5jZSBzdHJpcHBpbmcgdGhlCitjb21tZW50cykgYmVmb3JlIGl0IGlzIGNvbXBpbGVkLgorCitUaGUgYWN0dWFsIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIGlzIGhpZGRlbiBiZWhpbmQgYSBGQUxMQkFDSyBtYWNybyBpbgorY2FzZSB0aGUgY29tcGlsZXIgZG9lc24ndCBzdXBwb3J0IGl0LgorCitGaW5hbGx5LCB0aGUgLVdpbXBsaWN0LWZhbGx0aHJvdWdoIHdhcm5pbmcgd2FzIHVwZ3JhZGVkIHRvIG9ubHkgYWxsb3cKK3RoZSBhdHRyaWJ1dGUgdG8gc2F0aXNmeSBpdDsgYSBjb21tZW50IGFsb25lIGlzIG5vIGxvbmdlciBzdWZmaWNpZW50LgorCitTaWduZWQtb2ZmLWJ5OiBKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFsxXQorCitbMV0gaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9lbGZ1dGlscy1kZXZlbC8yMDE4LXExL21zZzAwMDI3Lmh0bWwKKy0tLQorIGJhY2tlbmRzL2FhcmNoNjRfcmV0dmFsLmMgICAgfCAyICstCisgYmFja2VuZHMvYWxwaGFfcmV0dmFsLmMgICAgICB8IDQgKystLQorIGJhY2tlbmRzL2FybV9yZWdzLmMgICAgICAgICAgfCAyICstCisgYmFja2VuZHMvYXJtX3JldHZhbC5jICAgICAgICB8IDIgKy0KKyBiYWNrZW5kcy9pMzg2X3JlZ3MuYyAgICAgICAgIHwgMiArLQorIGJhY2tlbmRzL2kzODZfcmV0dmFsLmMgICAgICAgfCA0ICsrLS0KKyBiYWNrZW5kcy9pYTY0X3JldHZhbC5jICAgICAgIHwgMiArLQorIGJhY2tlbmRzL2xpbnV4LWNvcmUtbm90ZS5jICAgfCAyICstCisgYmFja2VuZHMvbTY4a19yZXR2YWwuYyAgICAgICB8IDQgKystLQorIGJhY2tlbmRzL21pcHNfcmV0dmFsLmMgICAgICAgfCA0ICsrLS0KKyBiYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMgICAgIHwgNSArKystLQorIGJhY2tlbmRzL3BwYzY0X3JldHZhbC5jICAgICAgfCA2ICsrKy0tLQorIGJhY2tlbmRzL3BwY19yZWdzLmMgICAgICAgICAgfCAyICstCisgYmFja2VuZHMvcHBjX3JldHZhbC5jICAgICAgICB8IDQgKystLQorIGJhY2tlbmRzL3MzOTBfcmV0dmFsLmMgICAgICAgfCA0ICsrLS0KKyBiYWNrZW5kcy9zaF9yZXR2YWwuYyAgICAgICAgIHwgMiArLQorIGJhY2tlbmRzL3NwYXJjX3JldHZhbC5jICAgICAgfCAyICstCisgYmFja2VuZHMvdGlsZWd4X3JldHZhbC5jICAgICB8IDQgKystLQorIGJhY2tlbmRzL3g4Nl82NF9yZWdzLmMgICAgICAgfCAyICstCisgYmFja2VuZHMveDg2XzY0X3JldHZhbC5jICAgICB8IDIgKy0KKyBjb25maWcvZXUuYW0gICAgICAgICAgICAgICAgIHwgNCArKystCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICB8IDYgKysrKysrCisgbGliL2V1LWNvbmZpZy5oICAgICAgICAgICAgICB8IDcgKysrKysrKworIGxpYmNwdS9pMzg2X2Rpc2FzbS5jICAgICAgICAgfCAyICstCisgbGliY3B1L2kzODZfcGFyc2UuYyAgICAgICAgICB8IDQgKystLQorIGxpYmR3L2NmaS5jICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBsaWJkdy9kd2FyZl9mcmFtZV9yZWdpc3Rlci5jIHwgMiArLQorIGxpYmR3ZmwvZHdmbF9yZXBvcnRfZWxmLmMgICAgfCAyICstCisgbGliZHdmbC9mcmFtZV91bndpbmQuYyAgICAgICB8IDIgKy0KKyBsaWJlYmwvZWJsb2Jqbm90ZS5jICAgICAgICAgIHwgMiArLQorIGxpYmVsZi9lbGYzMl91cGRhdGVudWxsLmMgICAgfCAyICstCisgbGliZWxmL2VsZl9iZWdpbi5jICAgICAgICAgICB8IDQgKystLQorIGxpYmVsZi9lbGZfY250bC5jICAgICAgICAgICAgfCAyICstCisgc3JjL2FkZHIybGluZS5jICAgICAgICAgICAgICB8IDIgKy0KKyBzcmMvZWxmY29tcHJlc3MuYyAgICAgICAgICAgIHwgMiArLQorIHNyYy9lbGZsaW50LmMgICAgICAgICAgICAgICAgfCA4ICsrKystLS0tCisgc3JjL29iamR1bXAuYyAgICAgICAgICAgICAgICB8IDIgKy0KKyBzcmMvcmVhZGVsZi5jICAgICAgICAgICAgICAgIHwgOCArKysrLS0tLQorIHNyYy9zdHJpbmdzLmMgICAgICAgICAgICAgICAgfCAyICstCisgdGVzdHMvYmFja3RyYWNlLmMgICAgICAgICAgICB8IDIgKy0KKyB0ZXN0cy9lbGZzdHJtZXJnZS5jICAgICAgICAgIHwgMyArKy0KKyA0MSBmaWxlcyBjaGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspLCA1OCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2JhY2tlbmRzL2FhcmNoNjRfcmV0dmFsLmMgYi9iYWNrZW5kcy9hYXJjaDY0X3JldHZhbC5jCitpbmRleCA2OGRlMzA3Li4xMzA4MzQwIDEwMDY0NAorLS0tIGEvYmFja2VuZHMvYWFyY2g2NF9yZXR2YWwuYworKysrIGIvYmFja2VuZHMvYWFyY2g2NF9yZXR2YWwuYworQEAgLTI5Miw3ICsyOTIsNyBAQCBhYXJjaDY0X3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQorIAkgIGFzc2VydCAoY291bnQgPiAwKTsKKyAJICBpZiAoY291bnQgPD0gNCkKKyAJICAgIHJldHVybiBwYXNzX2hmYSAobG9jcCwgYmFzZV9zaXplLCBjb3VudCk7CistCSAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKysJICBGQUxMVEhST1VHSDsKKyAKKyAJY2FzZSAxOgorIAkgIC8qIE5vdCBhIEhGQS4gICovCitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvYWxwaGFfcmV0dmFsLmMgYi9iYWNrZW5kcy9hbHBoYV9yZXR2YWwuYworaW5kZXggNTNkYmZhNC4uZDliYWUzYiAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL2FscGhhX3JldHZhbC5jCisrKysgYi9iYWNrZW5kcy9hbHBoYV9yZXR2YWwuYworQEAgLTg1LDcgKzg1LDcgQEAgYWxwaGFfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7CisgCSAgdGFnID0gRFdBUkZfVEFHX09SX1JFVFVSTiAodHlwZWRpZSk7CisgCX0KKy0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6CitAQCAtMTMxLDcgKzEzMSw3IEBAIGFscGhhX3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQorIAkgIH0KKyAgICAgICB9CisgCistICAgICAgLyogRWxzZSBmYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9hcm1fcmVncy5jIGIvYmFja2VuZHMvYXJtX3JlZ3MuYworaW5kZXggNGVlMTAzOS4uNDE4YzkzMSAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL2FybV9yZWdzLmMKKysrKyBiL2JhY2tlbmRzL2FybV9yZWdzLmMKK0BAIC04MSw3ICs4MSw3IEBAIGFybV9yZWdpc3Rlcl9pbmZvIChFYmwgKmVibCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCisgICAgICAgICogYnV0IGdjYyBtYXBzIEZQQSByZWdpc3RlcnMgaGVyZQorICAgICAgICAqLworICAgICAgIHJlZ25vICs9IDk2IC0gMTY7CistICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAgICAgY2FzZSA5NiArIDAgLi4uIDk2ICsgNzoKKyAgICAgICAqc2V0bmFtZSA9ICJGUEEiOworICAgICAgICp0eXBlID0gRFdfQVRFX2Zsb2F0OworZGlmZiAtLWdpdCBhL2JhY2tlbmRzL2FybV9yZXR2YWwuYyBiL2JhY2tlbmRzL2FybV9yZXR2YWwuYworaW5kZXggODY4N2VhYi4uMzEzZTRlYiAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL2FybV9yZXR2YWwuYworKysrIGIvYmFja2VuZHMvYXJtX3JldHZhbC5jCitAQCAtOTAsNyArOTAsNyBAQCBhcm1fcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXyAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwLAorIAkgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOworIAkgIHRhZyA9IERXQVJGX1RBR19PUl9SRVRVUk4gKHR5cGVkaWUpOworIAl9CistICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAKKyAgICAgY2FzZSBEV19UQUdfYmFzZV90eXBlOgorICAgICBjYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOgorZGlmZiAtLWdpdCBhL2JhY2tlbmRzL2kzODZfcmVncy5jIGIvYmFja2VuZHMvaTM4Nl9yZWdzLmMKK2luZGV4IGZkOTYzYTYuLjdlYzkzYmIgMTAwNjQ0CistLS0gYS9iYWNrZW5kcy9pMzg2X3JlZ3MuYworKysrIGIvYmFja2VuZHMvaTM4Nl9yZWdzLmMKK0BAIC05Miw3ICs5Miw3IEBAIGkzODZfcmVnaXN0ZXJfaW5mbyAoRWJsICplYmwgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAorICAgICBjYXNlIDU6CisgICAgIGNhc2UgODoKKyAgICAgICAqdHlwZSA9IERXX0FURV9hZGRyZXNzOworLSAgICAgIC8qIEZhbGx0aHJvdWdoICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgICAgIGNhc2UgMCAuLi4gMzoKKyAgICAgY2FzZSA2IC4uLiA3OgorICAgICAgIG5hbWVbMF0gPSAnZSc7CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvaTM4Nl9yZXR2YWwuYyBiL2JhY2tlbmRzL2kzODZfcmV0dmFsLmMKK2luZGV4IDRhYTY0NmYuLjMyZmVjNzIgMTAwNjQ0CistLS0gYS9iYWNrZW5kcy9pMzg2X3JldHZhbC5jCisrKysgYi9iYWNrZW5kcy9pMzg2X3JldHZhbC5jCitAQCAtODUsNyArODUsNyBAQCBpMzg2X3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQorIAkgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOworIAkgIHRhZyA9IERXQVJGX1RBR19PUl9SRVRVUk4gKHR5cGVkaWUpOworIAl9CistICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAKKyAgICAgY2FzZSBEV19UQUdfYmFzZV90eXBlOgorICAgICBjYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOgorQEAgLTEyMyw3ICsxMjMsNyBAQCBpMzg2X3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQorIAlpZiAoc2l6ZSA8PSA4KQorIAkgIHJldHVybiBubG9jX2ludHJlZ3BhaXI7CisgICAgICAgfQorLSAgICAvKiBGYWxsdGhyb3VnaCAqLworKyAgICBGQUxMVEhST1VHSDsKKyAKKyAgICAgY2FzZSBEV19UQUdfc3RydWN0dXJlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvaWE2NF9yZXR2YWwuYyBiL2JhY2tlbmRzL2lhNjRfcmV0dmFsLmMKK2luZGV4IGRjZDVmMjguLjAzZWE0ZDggMTAwNjQ0CistLS0gYS9iYWNrZW5kcy9pYTY0X3JldHZhbC5jCisrKysgYi9iYWNrZW5kcy9pYTY0X3JldHZhbC5jCitAQCAtMjYwLDcgKzI2MCw3IEBAIGlhNjRfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7CisgCSAgdGFnID0gRFdBUkZfVEFHX09SX1JFVFVSTiAodHlwZWRpZSk7CisgCX0KKy0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvbGludXgtY29yZS1ub3RlLmMgYi9iYWNrZW5kcy9saW51eC1jb3JlLW5vdGUuYworaW5kZXggNjc2MzhkNy4uNWYwNmM4OSAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL2xpbnV4LWNvcmUtbm90ZS5jCisrKysgYi9iYWNrZW5kcy9saW51eC1jb3JlLW5vdGUuYworQEAgLTIyNiw3ICsyMjYsNyBAQCBFQkxIT09LKGNvcmVfbm90ZSkgKGNvbnN0IEdFbGZfTmhkciAqbmhkciwgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICBpZiAobWVtY21wIChuYW1lLCAiQ09SRSIsIG5oZHItPm5fbmFtZXN6KSA9PSAwKQorIAlicmVhazsKKyAgICAgICAvKiBCdWdneSBvbGQgTGludXgga2VybmVscyBkaWRuJ3QgdGVybWluYXRlICJMSU5VWCIuICAqLworLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAKKyAgICAgY2FzZSBzaXplb2YgIkxJTlVYIjoKKyAgICAgICBpZiAobWVtY21wIChuYW1lLCAiTElOVVgiLCBuaGRyLT5uX25hbWVzeikgPT0gMCkKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9tNjhrX3JldHZhbC5jIGIvYmFja2VuZHMvbTY4a19yZXR2YWwuYworaW5kZXggYzY4ZWQwMi4uYTY1M2JhMyAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL202OGtfcmV0dmFsLmMKKysrKyBiL2JhY2tlbmRzL202OGtfcmV0dmFsLmMKK0BAIC05Miw3ICs5Miw3IEBAIG02OGtfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7CisgCSAgdGFnID0gRFdBUkZfVEFHX09SX1JFVFVSTiAodHlwZWRpZSk7CisgCX0KKy0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6CitAQCAtMTM1LDcgKzEzNSw3IEBAIG02OGtfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCWlmIChzaXplIDw9IDgpCisgCSAgcmV0dXJuIG5sb2NfaW50cmVncGFpcjsKKyAgICAgICB9CistICAgICAgLyogRmFsbHRocm91Z2ggKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAgICAgY2FzZSBEV19UQUdfc3RydWN0dXJlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX3VuaW9uX3R5cGU6CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvbWlwc19yZXR2YWwuYyBiL2JhY2tlbmRzL21pcHNfcmV0dmFsLmMKK2luZGV4IDU3NDg3YmIuLmM2ZTFmZmUgMTAwNjQ0CistLS0gYS9iYWNrZW5kcy9taXBzX3JldHZhbC5jCisrKysgYi9iYWNrZW5kcy9taXBzX3JldHZhbC5jCitAQCAtMzA2LDcgKzMwNiw3IEBAIG1pcHNfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7CisgCSAgdGFnID0gZHdhcmZfdGFnICh0eXBlZGllKTsKKyAJfQorLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgCisgICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKK0BAIC0zODksNyArMzg5LDcgQEAgbWlwc19yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgCistICAgICAgLyogRmFsbHRocm91Z2ggdG8gaGFuZGxlIGxhcmdlIHR5cGVzICovCisrICAgICAgRkFMTFRIUk9VR0g7IC8qIEZhbGx0aHJvdWdoIHRvIGhhbmRsZSBsYXJnZSB0eXBlcyAqLworIAorICAgICBjYXNlIERXX1RBR19hcnJheV90eXBlOgorICAgICBsYXJnZToKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMgYi9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMKK2luZGV4IGRmN2VjM2EuLjFmMWU5MWEgMTAwNjQ0CistLS0gYS9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMKKysrKyBiL2JhY2tlbmRzL3BhcmlzY19yZXR2YWwuYworQEAgLTExNiw3ICsxMTYsNyBAQCBwYXJpc2NfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXyAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwLCBpbgorIAkgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOworIAkgIHRhZyA9IGR3YXJmX3RhZyAodHlwZWRpZSk7CisgCX0KKy0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6CitAQCAtMTY3LDYgKzE2Nyw3IEBAIHBhcmlzY19yZXR1cm5fdmFsdWVfbG9jYXRpb25fIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3AsIGluCisgCisgCS8qIEVsc2UgZmFsbCB0aHJvdWdoLiAgKi8KKyAgICAgICB9CisrICAgICAgRkFMTFRIUk9VR0g7CisgCisgICAgIGNhc2UgRFdfVEFHX3N0cnVjdHVyZV90eXBlOgorICAgICBjYXNlIERXX1RBR19jbGFzc190eXBlOgorQEAgLTE4OSw3ICsxOTAsNyBAQCBwYXJpc2NfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXyAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwLCBpbgorICAgICAgICAgKmxvY3AgPSBsb2NfYWdncmVnYXRlOworICAgICAgICAgcmV0dXJuIG5sb2NfYWdncmVnYXRlOworICNlbmRpZgorLQkvKiBmYWxsIHRocm91Z2guICAqLworKwlGQUxMVEhST1VHSDsKKyAgICAgICB9CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9wcGM2NF9yZXR2YWwuYyBiL2JhY2tlbmRzL3BwYzY0X3JldHZhbC5jCitpbmRleCBhMjUxOTgzLi5lYjFjMTFlIDEwMDY0NAorLS0tIGEvYmFja2VuZHMvcHBjNjRfcmV0dmFsLmMKKysrKyBiL2JhY2tlbmRzL3BwYzY0X3JldHZhbC5jCitAQCAtOTYsNyArOTYsNyBAQCBwcGM2NF9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKKyAJICB0YWcgPSBEV0FSRl9UQUdfT1JfUkVUVVJOICh0eXBlZGllKTsKKyAJfQorLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgCisgICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKK0BAIC0xNDEsNyArMTQxLDcgQEAgcHBjNjRfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgcmV0dXJuIG5sb2NfaW50cmVnOworIAl9CisgCistICAgICAgLyogRWxzZSBmYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworICAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfdW5pb25fdHlwZToKK0BAIC0xNjEsNyArMTYxLDcgQEAgcHBjNjRfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgICByZXR1cm4gbmxvY192bXhyZWc7CisgCSAgfQorICAgICAgIH0KKy0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIERXX1RBR19zdHJpbmdfdHlwZToKKyAgICAgICBpZiAoZHdhcmZfYWdncmVnYXRlX3NpemUgKHR5cGVkaWUsICZzaXplKSA9PSAwICYmIHNpemUgPD0gOCkKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9wcGNfcmVncy5jIGIvYmFja2VuZHMvcHBjX3JlZ3MuYworaW5kZXggYzJkNTAxMS4uNDNkMjUzNCAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL3BwY19yZWdzLmMKKysrKyBiL2JhY2tlbmRzL3BwY19yZWdzLmMKK0BAIC0xNDAsNyArMTQwLDcgQEAgcHBjX3JlZ2lzdGVyX2luZm8gKEVibCAqZWJsIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKyAgICAgY2FzZSAxMDA6CisgICAgICAgaWYgKCpiaXRzID09IDMyKQorIAlyZXR1cm4gc3RwY3B5IChuYW1lLCAibXEiKSArIDEgLSBuYW1lOworLSAgICAgIC8qIEZhbGx0aHJvdWdoICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgICAgIGNhc2UgMTAyIC4uLiAxMDc6CisgICAgICAgbmFtZVswXSA9ICdzJzsKKyAgICAgICBuYW1lWzFdID0gJ3AnOworZGlmZiAtLWdpdCBhL2JhY2tlbmRzL3BwY19yZXR2YWwuYyBiL2JhY2tlbmRzL3BwY19yZXR2YWwuYworaW5kZXggYjE0YTk5Zi4uMzliNDJkYSAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL3BwY19yZXR2YWwuYworKysrIGIvYmFja2VuZHMvcHBjX3JldHZhbC5jCitAQCAtMTA4LDcgKzEwOCw3IEBAIHBwY19yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKKyAJICB0YWcgPSBEV0FSRl9UQUdfT1JfUkVUVVJOICh0eXBlZGllKTsKKyAJfQorLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgCisgICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKK0BAIC0xNzIsNyArMTcyLDcgQEAgcHBjX3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQorIAkgICAgICByZXR1cm4gbmxvY19pbnRyZWdxdWFkOworIAkgICAgfQorICAgICAgIH0KKy0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9zMzkwX3JldHZhbC5jIGIvYmFja2VuZHMvczM5MF9yZXR2YWwuYworaW5kZXggYTkyN2Q0Ni4uMjA0M2Y5OCAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL3MzOTBfcmV0dmFsLmMKKysrKyBiL2JhY2tlbmRzL3MzOTBfcmV0dmFsLmMKK0BAIC04Nyw3ICs4Nyw3IEBAIHMzOTBfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7CisgCSAgdGFnID0gRFdBUkZfVEFHX09SX1JFVFVSTiAodHlwZWRpZSk7CisgCX0KKy0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6CitAQCAtMTI3LDcgKzEyNyw3IEBAIHMzOTBfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgICByZXR1cm4gc2l6ZSA8PSBhc2l6ZSA/IG5sb2NfaW50cmVnIDogbmxvY19pbnRyZWdwYWlyOworIAkgIH0KKyAgICAgICB9CistICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAKKyAgICAgY2FzZSBEV19UQUdfc3RydWN0dXJlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvc2hfcmV0dmFsLmMgYi9iYWNrZW5kcy9zaF9yZXR2YWwuYworaW5kZXggZDQ0ZjI2MC4uMzNkN2Q5NiAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL3NoX3JldHZhbC5jCisrKysgYi9iYWNrZW5kcy9zaF9yZXR2YWwuYworQEAgLTg0LDcgKzg0LDcgQEAgc2hfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7CisgCSAgdGFnID0gRFdBUkZfVEFHX09SX1JFVFVSTiAodHlwZWRpZSk7CisgCX0KKy0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvc3BhcmNfcmV0dmFsLmMgYi9iYWNrZW5kcy9zcGFyY19yZXR2YWwuYworaW5kZXggZTFiMTc3NS4uZmI4MWNkYyAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL3NwYXJjX3JldHZhbC5jCisrKysgYi9iYWNrZW5kcy9zcGFyY19yZXR2YWwuYworQEAgLTkxLDcgKzkxLDcgQEAgc3BhcmNfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7CisgCSAgdGFnID0gRFdBUkZfVEFHX09SX1JFVFVSTiAodHlwZWRpZSk7CisgCX0KKy0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworIAorICAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvdGlsZWd4X3JldHZhbC5jIGIvYmFja2VuZHMvdGlsZWd4X3JldHZhbC5jCitpbmRleCBkYjgxYTIwLi43ZjdkMjRiIDEwMDY0NAorLS0tIGEvYmFja2VuZHMvdGlsZWd4X3JldHZhbC5jCisrKysgYi9iYWNrZW5kcy90aWxlZ3hfcmV0dmFsLmMKK0BAIC03OSw3ICs3OSw3IEBAIHRpbGVneF9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKKyAJICB0YWcgPSBEV0FSRl9UQUdfT1JfUkVUVVJOICh0eXBlZGllKTsKKyAJfQorLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgCisgICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKK0BAIC0xMTMsNyArMTEzLDcgQEAgdGlsZWd4X3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQorIAkgIHJldHVybiBubG9jX2ludHJlZzsKKyAJfQorIAorLSAgICAgIC8qIEVsc2UgZmFsbCB0aHJvdWdoLiAgKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAgICAgY2FzZSBEV19UQUdfc3RydWN0dXJlX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6CisgICAgIGNhc2UgRFdfVEFHX3VuaW9uX3R5cGU6CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMveDg2XzY0X3JlZ3MuYyBiL2JhY2tlbmRzL3g4Nl82NF9yZWdzLmMKK2luZGV4IDg0MzA0NDAuLmVmOTg3ZGEgMTAwNjQ0CistLS0gYS9iYWNrZW5kcy94ODZfNjRfcmVncy5jCisrKysgYi9iYWNrZW5kcy94ODZfNjRfcmVncy5jCitAQCAtODcsNyArODcsNyBAQCB4ODZfNjRfcmVnaXN0ZXJfaW5mbyAoRWJsICplYmwgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAorIAorICAgICBjYXNlIDYgLi4uIDc6CisgICAgICAgKnR5cGUgPSBEV19BVEVfYWRkcmVzczsKKy0gICAgICAvKiBGYWxsdGhyb3VnaCAqLworKyAgICAgIEZBTExUSFJPVUdIOworICAgICBjYXNlIDAgLi4uIDU6CisgICAgICAgbmFtZVswXSA9ICdyJzsKKyAgICAgICBuYW1lWzFdID0gYmFzZXJlZ3NbcmVnbm9dWzBdOworZGlmZiAtLWdpdCBhL2JhY2tlbmRzL3g4Nl82NF9yZXR2YWwuYyBiL2JhY2tlbmRzL3g4Nl82NF9yZXR2YWwuYworaW5kZXggYjM3OTlhZS4uZjkxMTRjYiAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL3g4Nl82NF9yZXR2YWwuYworKysrIGIvYmFja2VuZHMveDg2XzY0X3JldHZhbC5jCitAQCAtMTAwLDcgKzEwMCw3IEBAIHg4Nl82NF9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKKyAJICB0YWcgPSBEV0FSRl9UQUdfT1JfUkVUVVJOICh0eXBlZGllKTsKKyAJfQorLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgCisgICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKKyAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKK2RpZmYgLS1naXQgYS9jb25maWcvZXUuYW0gYi9jb25maWcvZXUuYW0KK2luZGV4IDhmZTFlMjUuLmI2ZWM1ODEgMTAwNjQ0CistLS0gYS9jb25maWcvZXUuYW0KKysrKyBiL2NvbmZpZy9ldS5hbQorQEAgLTYyLDcgKzYyLDkgQEAgTlVMTF9ERVJFRkVSRU5DRV9XQVJOSU5HPQorIGVuZGlmCisgCisgaWYgSEFWRV9JTVBMSUNJVF9GQUxMVEhST1VHSF9XQVJOSU5HCistSU1QTElDSVRfRkFMTFRIUk9VR0hfV0FSTklORz0tV2ltcGxpY2l0LWZhbGx0aHJvdWdoCisrIyBVc2Ugc3RyaWN0IGZhbGx0aHJvdWdoLiBPbmx5IF9fYXR0cmlidXRlX18oKGZhbGx0aHJvdWdoKSkgd2lsbCBwcmV2ZW50IHRoZQorKyMgd2FybmluZworK0lNUExJQ0lUX0ZBTExUSFJPVUdIX1dBUk5JTkc9LVdpbXBsaWNpdC1mYWxsdGhyb3VnaD01CisgZWxzZQorIElNUExJQ0lUX0ZBTExUSFJPVUdIX1dBUk5JTkc9CisgZW5kaWYKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDFmMTg1NmQuLjY5OGVmYmIgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTM2MCw2ICszNjAsMTIgQEAgQ0ZMQUdTPSIkb2xkX0NGTEFHUyJdKQorIEFNX0NPTkRJVElPTkFMKEhBVkVfSU1QTElDSVRfRkFMTFRIUk9VR0hfV0FSTklORywKKyAJICAgICAgIFt0ZXN0ICJ4JGFjX2N2X2ltcGxpY2l0X2ZhbGx0aHJvdWdoIiAhPSAieG5vIl0pCisgCisrIyBBc3N1bWUgdGhlIGZhbGx0aHJvdWdoIGF0dHJpYnV0ZSBpcyBzdXBwb3J0ZWQgaWYgLVdpbXBsaWN0LWZhbGx0aHJvdWdoIGlzIHN1cHBvcnRlZAorK2lmIHRlc3QgIiRhY19jdl9pbXBsaWNpdF9mYWxsdGhyb3VnaCIgPSAieWVzIjsgdGhlbgorKwlBQ19ERUZJTkUoW0hBVkVfRkFMTFRIUk9VR0hdLCBbMV0sCisrCQkgIFtEZWZpbmVkIGlmIF9fYXR0cmlidXRlX18oKGZhbGx0aHJvdWdoKSkgaXMgc3VwcG9ydGVkXSkKKytmaQorKworIGRubCBDaGVjayBpZiB3ZSBoYXZlIGFyZ3AgYXZhaWxhYmxlIGZyb20gb3VyIGxpYmMKKyBBQ19MSU5LX0lGRUxTRSgKKyAJW0FDX0xBTkdfUFJPR1JBTSgKK2RpZmYgLS1naXQgYS9saWIvZXUtY29uZmlnLmggYi9saWIvZXUtY29uZmlnLmgKK2luZGV4IDQwMGNkYzYuLmU4ZDRlYzIgMTAwNjQ0CistLS0gYS9saWIvZXUtY29uZmlnLmgKKysrKyBiL2xpYi9ldS1jb25maWcuaAorQEAgLTE4Niw1ICsxODYsMTIgQEAgYXNtICgiLnNlY3Rpb24gcHJlZGljdF9kYXRhLCBcImF3XCI7IC5wcmV2aW91c1xuIgorICMgZGVmaW5lIENPTVBBVF9WRVJTSU9OKG5hbWUsIHZlcnNpb24sIHByZWZpeCkgZXJyb3IgInNob3VsZCB1c2UgI2lmZGVmIFNZTUJPTF9WRVJTSU9OSU5HIgorICNlbmRpZgorIAorKyNpZm5kZWYgRkFMTFRIUk9VR0gKKysjIGlmZGVmIEhBVkVfRkFMTFRIUk9VR0gKKysjICBkZWZpbmUgRkFMTFRIUk9VR0ggX19hdHRyaWJ1dGVfXyAoKGZhbGx0aHJvdWdoKSkKKysjIGVsc2UKKysjICBkZWZpbmUgRkFMTFRIUk9VR0ggKCh2b2lkKSAwKQorKyMgZW5kaWYKKysjZW5kaWYKKyAKKyAjZW5kaWYJLyogZXUtY29uZmlnLmggKi8KK2RpZmYgLS1naXQgYS9saWJjcHUvaTM4Nl9kaXNhc20uYyBiL2xpYmNwdS9pMzg2X2Rpc2FzbS5jCitpbmRleCA2MGZkNmQ0Li44MzdhM2E4IDEwMDY0NAorLS0tIGEvbGliY3B1L2kzODZfZGlzYXNtLmMKKysrKyBiL2xpYmNwdS9pMzg2X2Rpc2FzbS5jCitAQCAtODE5LDcgKzgxOSw3IEBAIGkzODZfZGlzYXNtIChFYmwgKmVibCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKKyAJCQkgICAgICArK3BhcmFtX3N0YXJ0OworIAkJCSAgICAgIGJyZWFrOworIAkJCSAgICB9CistCQkJICAvKiBGYWxsdGhyb3VnaCAqLworKwkJCSAgRkFMTFRIUk9VR0g7CisgCQkJZGVmYXVsdDoKKyAJCQkgIHN0ciA9ICIiOworIAkJCSAgYXNzZXJ0ICghICJJTlZBTElEIG5vdCBoYW5kbGVkIik7CitkaWZmIC0tZ2l0IGEvbGliY3B1L2kzODZfcGFyc2UuYyBiL2xpYmNwdS9pMzg2X3BhcnNlLmMKK2luZGV4IGVmMWFjMzUuLjZmYTdjZTMgMTAwNjQ0CistLS0gYS9saWJjcHUvaTM4Nl9wYXJzZS5jCisrKysgYi9saWJjcHUvaTM4Nl9wYXJzZS5jCitAQCAtMTA0Nyw3ICsxMDQ3LDcgQEAgeXl0bmFtZXJyIChjaGFyICp5eXJlcywgY29uc3QgY2hhciAqeXlzdHIpCisgICAgICAgICAgIGNhc2UgJ1xcJzoKKyAgICAgICAgICAgICBpZiAoKisreXlwICE9ICdcXCcpCisgICAgICAgICAgICAgICBnb3RvIGRvX25vdF9zdHJpcF9xdW90ZXM7CistICAgICAgICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKysgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICBpZiAoeXlyZXMpCisgICAgICAgICAgICAgICB5eXJlc1t5eW5dID0gKnl5cDsKK0BAIC0yMDQyLDcgKzIwNDIsNyBAQCB5eWFib3J0bGFiOgorIHl5ZXhoYXVzdGVkbGFiOgorICAgeXllcnJvciAoWVlfKCJtZW1vcnkgZXhoYXVzdGVkIikpOworICAgeXlyZXN1bHQgPSAyOworLSAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKysgIEZBTExUSFJPVUdIOworICNlbmRpZgorIAorIHl5cmV0dXJuOgorZGlmZiAtLWdpdCBhL2xpYmR3L2NmaS5jIGIvbGliZHcvY2ZpLmMKK2luZGV4IGRhYTg0NWYuLjM0MWUwNTUgMTAwNjQ0CistLS0gYS9saWJkdy9jZmkuYworKysrIGIvbGliZHcvY2ZpLmMKK0BAIC0xMzgsNyArMTM4LDcgQEAgZXhlY3V0ZV9jZmkgKER3YXJmX0NGSSAqY2FjaGUsCisgCisgCWNhc2UgRFdfQ0ZBX2FkdmFuY2VfbG9jMToKKyAJICBvcGVyYW5kID0gKnByb2dyYW0rKzsKKy0JICAvKiBGYWxsdGhyb3VnaCAqLworKwkgIEZBTExUSFJPVUdIOworIAljYXNlIERXX0NGQV9hZHZhbmNlX2xvYyArIDAgLi4uIERXX0NGQV9hZHZhbmNlX2xvYyArIENGSV9QUklNQVJZX01BWDoKKyAJYWR2YW5jZV9sb2M6CisgCSAgbG9jICs9IG9wZXJhbmQgKiBjaWUtPmNvZGVfYWxpZ25tZW50X2ZhY3RvcjsKK0BAIC0zMDEsNyArMzAxLDcgQEAgZXhlY3V0ZV9jZmkgKER3YXJmX0NGSSAqY2FjaGUsCisgCisgCWNhc2UgRFdfQ0ZBX3Jlc3RvcmVfZXh0ZW5kZWQ6CisgCSAgZ2V0X3VsZWIxMjggKG9wZXJhbmQsIHByb2dyYW0sIGVuZCk7CistCSAgLyogRmFsbHRocm91Z2ggKi8KKysJICBGQUxMVEhST1VHSDsKKyAJY2FzZSBEV19DRkFfcmVzdG9yZSArIDAgLi4uIERXX0NGQV9yZXN0b3JlICsgQ0ZJX1BSSU1BUllfTUFYOgorIAorIAkgIGlmICh1bmxpa2VseSAoYWJpX2NmaSkgJiYgbGlrZWx5IChvcGNvZGUgPT0gRFdfQ0ZBX3Jlc3RvcmUpKQorZGlmZiAtLWdpdCBhL2xpYmR3L2R3YXJmX2ZyYW1lX3JlZ2lzdGVyLmMgYi9saWJkdy9kd2FyZl9mcmFtZV9yZWdpc3Rlci5jCitpbmRleCAzN2U4ZTkxLi5kMDE1OWZiIDEwMDY0NAorLS0tIGEvbGliZHcvZHdhcmZfZnJhbWVfcmVnaXN0ZXIuYworKysrIGIvbGliZHcvZHdhcmZfZnJhbWVfcmVnaXN0ZXIuYworQEAgLTYyLDcgKzYyLDcgQEAgZHdhcmZfZnJhbWVfcmVnaXN0ZXIgKER3YXJmX0ZyYW1lICpmcywgaW50IHJlZ25vLCBEd2FyZl9PcCAqb3BzX21lbSwKKyAgICAgICAvKiBVc2UgdGhlIGRlZmF1bHQgcnVsZSBmb3IgcmVnaXN0ZXJzIG5vdCB5ZXQgbWVudGlvbmVkIGluIENGSS4gICovCisgICAgICAgaWYgKGZzLT5jYWNoZS0+ZGVmYXVsdF9zYW1lX3ZhbHVlKQorIAlnb3RvIHNhbWVfdmFsdWU7CistICAgICAgLypGQUxMVEhST1VHSCovCisrICAgICAgRkFMTFRIUk9VR0g7CisgICAgIGNhc2UgcmVnX3VuZGVmaW5lZDoKKyAgICAgICAvKiBUaGUgdmFsdWUgaXMga25vd24gdG8gYmUgdW5hdmFpbGFibGUuICAqLworICAgICAgIGJyZWFrOworZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZHdmbF9yZXBvcnRfZWxmLmMgYi9saWJkd2ZsL2R3ZmxfcmVwb3J0X2VsZi5jCitpbmRleCA2OTUwYTM3Li4zZmM5Mzg0IDEwMDY0NAorLS0tIGEvbGliZHdmbC9kd2ZsX3JlcG9ydF9lbGYuYworKysrIGIvbGliZHdmbC9kd2ZsX3JlcG9ydF9lbGYuYworQEAgLTE3NCw3ICsxNzQsNyBAQCBfX2xpYmR3ZmxfZWxmX2FkZHJlc3NfcmFuZ2UgKEVsZiAqZWxmLCBHRWxmX0FkZHIgYmFzZSwgYm9vbCBhZGRfcF92YWRkciwKKyAgICAgICAvKiBBbiBhc3NpZ25lZCBiYXNlIGFkZHJlc3MgaXMgbWVhbmluZ2xlc3MgZm9yIHRoZXNlLiAgKi8KKyAgICAgICBiYXNlID0gMDsKKyAgICAgICBhZGRfcF92YWRkciA9IHRydWU7CistICAgICAgLyogRmFsbHRocm91Z2guICovCisrICAgICAgRkFMTFRIUk9VR0g7CisgICAgIGNhc2UgRVRfRFlOOgorICAgICBkZWZhdWx0OjsKKyAgICAgICBzaXplX3QgcGhudW07CitkaWZmIC0tZ2l0IGEvbGliZHdmbC9mcmFtZV91bndpbmQuYyBiL2xpYmR3ZmwvZnJhbWVfdW53aW5kLmMKK2luZGV4IDRkYzljNDMuLmVhZWE0OTUgMTAwNjQ0CistLS0gYS9saWJkd2ZsL2ZyYW1lX3Vud2luZC5jCisrKysgYi9saWJkd2ZsL2ZyYW1lX3Vud2luZC5jCitAQCAtNDQyLDcgKzQ0Miw3IEBAIGV4cHJfZXZhbCAoRHdmbF9GcmFtZSAqc3RhdGUsIER3YXJmX0ZyYW1lICpmcmFtZSwgY29uc3QgRHdhcmZfT3AgKm9wcywKKyAJICAgIH0KKyAJICBpZiAodmFsMSA9PSAwKQorIAkgICAgYnJlYWs7CistCSAgLyogRkFMTFRIUlUgKi8KKysJICBGQUxMVEhST1VHSDsKKyAJY2FzZSBEV19PUF9za2lwOjsKKyAJICBEd2FyZl9Xb3JkIG9mZnNldCA9IG9wLT5vZmZzZXQgKyAxICsgMiArIChpbnQxNl90KSBvcC0+bnVtYmVyOworIAkgIGNvbnN0IER3YXJmX09wICpmb3VuZCA9IGJzZWFyY2ggKCh2b2lkICopICh1aW50cHRyX3QpIG9mZnNldCwgb3BzLCBub3BzLAorZGlmZiAtLWdpdCBhL2xpYmVibC9lYmxvYmpub3RlLmMgYi9saWJlYmwvZWJsb2Jqbm90ZS5jCitpbmRleCBmODBhMWE1Li5jYTRmMTU1IDEwMDY0NAorLS0tIGEvbGliZWJsL2VibG9iam5vdGUuYworKysrIGIvbGliZWJsL2VibG9iam5vdGUuYworQEAgLTIyMyw3ICsyMjMsNyBAQCBlYmxfb2JqZWN0X25vdGUgKEVibCAqZWJsLCBjb25zdCBjaGFyICpuYW1lLCB1aW50MzJfdCB0eXBlLAorIAkJZnJlZSAoYnVmKTsKKyAJICAgICAgYnJlYWs7CisgCSAgICB9CistCSAgLyogRkFMTFRIUk9VR0ggKi8KKysJICBGQUxMVEhST1VHSDsKKyAKKyAJZGVmYXVsdDoKKyAJICAvKiBVbmtub3duIHR5cGUuICAqLworZGlmZiAtLWdpdCBhL2xpYmVsZi9lbGYzMl91cGRhdGVudWxsLmMgYi9saWJlbGYvZWxmMzJfdXBkYXRlbnVsbC5jCitpbmRleCBhNTFiZjcwLi41MzUxNTE4IDEwMDY0NAorLS0tIGEvbGliZWxmL2VsZjMyX3VwZGF0ZW51bGwuYworKysrIGIvbGliZWxmL2VsZjMyX3VwZGF0ZW51bGwuYworQEAgLTIzMiw3ICsyMzIsNyBAQCBfX2VsZncyKExJQkVMRkJJVFMsdXBkYXRlbnVsbF93cmxvY2spIChFbGYgKmVsZiwgaW50ICpjaGFuZ2VfYm9wLCBzaXplX3Qgc2hudW0pCisgCQkgICAgICBfX2xpYmVsZl9zZXRlcnJubyAoRUxGX0VfR1JPVVBfTk9UX1JFTCk7CisgCQkgICAgICByZXR1cm4gLTE7CisgCQkgICAgfQorLQkJICAvKiBGQUxMVEhST1VHSCAqLworKwkJICBGQUxMVEhST1VHSDsKKyAJCWNhc2UgU0hUX1NZTVRBQl9TSE5EWDoKKyAJCSAgc2hfZW50c2l6ZSA9IGVsZl90eXBlc2l6ZSAoMzIsIEVMRl9UX1dPUkQsIDEpOworIAkJICBicmVhazsKK2RpZmYgLS1naXQgYS9saWJlbGYvZWxmX2JlZ2luLmMgYi9saWJlbGYvZWxmX2JlZ2luLmMKK2luZGV4IDZmODUwMzguLjZkZTIwNmEgMTAwNjQ0CistLS0gYS9saWJlbGYvZWxmX2JlZ2luLmMKKysrKyBiL2xpYmVsZi9lbGZfYmVnaW4uYworQEAgLTU4Miw3ICs1ODIsNyBAQCByZWFkX3VubW1hcGVkX2ZpbGUgKGludCBmaWxkZXMsIG9mZl90IG9mZnNldCwgc2l6ZV90IG1heHNpemUsIEVsZl9DbWQgY21kLAorIAkJCSAgICAgPyBzaXplb2YgKEVsZjMyX0VoZHIpIDogc2l6ZW9mIChFbGY2NF9FaGRyKSkpCisgCXJldHVybiBmaWxlX3JlYWRfZWxmIChmaWxkZXMsIE5VTEwsIG1lbS5oZWFkZXIsIG9mZnNldCwgbWF4c2l6ZSwgY21kLAorIAkJCSAgICAgIHBhcmVudCk7CistICAgICAgLyogRkFMTFRIUk9VR0ggKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAKKyAgICAgZGVmYXVsdDoKKyAgICAgICBicmVhazsKK0BAIC0xMDk3LDcgKzEwOTcsNyBAQCBlbGZfYmVnaW4gKGludCBmaWxkZXMsIEVsZl9DbWQgY21kLCBFbGYgKnJlZikKKyAJICByZXR2YWwgPSBOVUxMOworIAkgIGJyZWFrOworIAl9CistICAgICAgLyogRkFMTFRIUk9VR0ggKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAKKyAgICAgY2FzZSBFTEZfQ19SRUFEOgorICAgICBjYXNlIEVMRl9DX1JFQURfTU1BUDoKK2RpZmYgLS1naXQgYS9saWJlbGYvZWxmX2NudGwuYyBiL2xpYmVsZi9lbGZfY250bC5jCitpbmRleCBhYjEzZmZiLi5mZDY4MTc4IDEwMDY0NAorLS0tIGEvbGliZWxmL2VsZl9jbnRsLmMKKysrKyBiL2xpYmVsZi9lbGZfY250bC5jCitAQCAtNjIsNyArNjIsNyBAQCBlbGZfY250bCAoRWxmICplbGYsIEVsZl9DbWQgY21kKQorIAkgIHJlc3VsdCA9IC0xOworIAkgIGJyZWFrOworIAl9CistICAgICAgLyogRkFMTFRIUk9VR0ggKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAKKyAgICAgY2FzZSBFTEZfQ19GRERPTkU6CisgICAgICAgLyogTWFyayB0aGUgZmlsZSBkZXNjcmlwdG9yIGFzIG5vdCB1c2FibGUuICAqLworZGlmZiAtLWdpdCBhL3NyYy9hZGRyMmxpbmUuYyBiL3NyYy9hZGRyMmxpbmUuYworaW5kZXggYmE0MTRhNy4uNDQ0ZWU1MiAxMDA2NDQKKy0tLSBhL3NyYy9hZGRyMmxpbmUuYworKysrIGIvc3JjL2FkZHIybGluZS5jCitAQCAtNjE4LDcgKzYxOCw3IEBAIGhhbmRsZV9hZGRyZXNzIChjb25zdCBjaGFyICpzdHJpbmcsIER3ZmwgKmR3ZmwpCisgCWNhc2UgMToKKyAJICBhZGRyID0gMDsKKyAJICBqID0gaTsKKy0JICAvKiBGYWxsdGhyb3VnaCAqLworKwkgIEZBTExUSFJPVUdIOworIAljYXNlIDI6CisgCSAgaWYgKHN0cmluZ1tqXSAhPSAnXDAnKQorIAkgICAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvc3JjL2VsZmNvbXByZXNzLmMgYi9zcmMvZWxmY29tcHJlc3MuYworaW5kZXggOGUwZDVjNS4uMjUzNzhhNCAxMDA2NDQKKy0tLSBhL3NyYy9lbGZjb21wcmVzcy5jCisrKysgYi9zcmMvZWxmY29tcHJlc3MuYworQEAgLTE0OSw3ICsxNDksNyBAQCBwYXJzZV9vcHQgKGludCBrZXksIGNoYXIgKmFyZyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCisgCQkgICAgTl8oIk9ubHkgb25lIGlucHV0IGZpbGUgYWxsb3dlZCB0b2dldGhlciB3aXRoICctbyciKSk7CisgICAgICAgLyogV2Ugb25seSB1c2UgdGhpcyBmb3IgY2hlY2tpbmcgdGhlIG51bWJlciBvZiBhcmd1bWVudHMsIHdlIGRvbid0CisgCSBhY3R1YWxseSB3YW50IHRvIGNvbnN1bWUgdGhlbS4gICovCistICAgICAgLyogRmFsbHRocm91Z2ggKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAgICAgZGVmYXVsdDoKKyAgICAgICByZXR1cm4gQVJHUF9FUlJfVU5LTk9XTjsKKyAgICAgfQorZGlmZiAtLWdpdCBhL3NyYy9lbGZsaW50LmMgYi9zcmMvZWxmbGludC5jCitpbmRleCA1MWU1M2MyLi5kZjFiM2EwIDEwMDY0NAorLS0tIGEvc3JjL2VsZmxpbnQuYworKysrIGIvc3JjL2VsZmxpbnQuYworQEAgLTE3NjQsNyArMTc2NCw3IEBAIHNlY3Rpb24gWyUyZF0gJyVzJzogZW50cnkgJXp1OiBwb2ludGVyIGRvZXMgbm90IG1hdGNoIGFkZHJlc3Mgb2Ygc2VjdGlvbiBbJTJkXSAnCisgCSAgaWYgKGR5bi0+ZF90YWcgPCBEVF9BRERSUk5HTE8gfHwgZHluLT5kX3RhZyA+IERUX0FERFJSTkdISSkKKyAJICAgIC8qIFZhbHVlIGlzIG5vIHBvaW50ZXIuICAqLworIAkgICAgYnJlYWs7CistCSAgLyogRkFMTFRIUk9VR0ggKi8KKysJICBGQUxMVEhST1VHSDsKKyAKKyAJY2FzZSBEVF9BVVhJTElBUlk6CisgCWNhc2UgRFRfRklMVEVSOgorQEAgLTM5OTMsNyArMzk5Myw3IEBAIHNlY3Rpb24gWyUyenVdICclcyc6IG1lcmdlIGZsYWcgc2V0IGJ1dCBlbnRyeSBzaXplIGlzIHplcm9cbiIpLAorIAkgICAgY2FzZSBTSFRfTk9CSVRTOgorIAkgICAgICBpZiAoaXNfZGVidWdpbmZvKQorIAkJYnJlYWs7CistCSAgICAgIC8qIEZhbGx0aHJvdWdoICovCisrCSAgICAgIEZBTExUSFJPVUdIOworIAkgICAgZGVmYXVsdDoKKyAJICAgICAgRVJST1IgKGdldHRleHQgKCJcCisgc2VjdGlvbiBbJTJ6dV0gJyVzJyBoYXMgdW5leHBlY3RlZCB0eXBlICVkIGZvciBhbiBleGVjdXRhYmxlIHNlY3Rpb25cbiIpLAorQEAgLTQxMzcsNyArNDEzNyw3IEBAIHNlY3Rpb24gWyUyenVdICclcyc6IEVMRiBoZWFkZXIgc2F5cyB0aGlzIGlzIHRoZSBzZWN0aW9uIGhlYWRlciBzdHJpbmcgdGFibGUgYnV0CisgCSAgICBFUlJPUiAoZ2V0dGV4dCAoIlwKKyBzZWN0aW9uIFslMnp1XSAnJXMnOiByZWxvY2F0YWJsZSBmaWxlcyBjYW5ub3QgaGF2ZSBkeW5hbWljIHN5bWJvbCB0YWJsZXNcbiIpLAorIAkJICAgY250LCBzZWN0aW9uX25hbWUgKGVibCwgY250KSk7CistCSAgLyogRkFMTFRIUk9VR0ggKi8KKysJICBGQUxMVEhST1VHSDsKKyAJY2FzZSBTSFRfU1lNVEFCOgorIAkgIGNoZWNrX3N5bXRhYiAoZWJsLCBlaGRyLCBzaGRyLCBjbnQpOworIAkgIGJyZWFrOworQEAgLTQzMzYsNyArNDMzNiw3IEBAIHNlY3Rpb24gWyUyZF0gJyVzJzogdW5rbm93biBjb3JlIGZpbGUgbm90ZSB0eXBlICUiIFBSSXUzMgorIAkgICAgaWYgKG5oZHIubl9uYW1lc3ogPT0gc2l6ZW9mICJMaW51eCIKKyAJCSYmICFtZW1jbXAgKGRhdGEtPmRfYnVmICsgbmFtZV9vZmZzZXQsICJMaW51eCIsIHNpemVvZiAiTGludXgiKSkKKyAJICAgICAgYnJlYWs7CistCSAgICAvKiBGYWxsdGhyb3VnaCAqLworKwkgICAgRkFMTFRIUk9VR0g7CisgCSAgZGVmYXVsdDoKKyAJICAgIGlmIChzaG5keCA9PSAwKQorIAkgICAgICBFUlJPUiAoZ2V0dGV4dCAoIlwKK2RpZmYgLS1naXQgYS9zcmMvb2JqZHVtcC5jIGIvc3JjL29iamR1bXAuYworaW5kZXggODYwY2ZhYy4uMGRkOWE2YSAxMDA2NDQKKy0tLSBhL3NyYy9vYmpkdW1wLmMKKysrKyBiL3NyYy9vYmpkdW1wLmMKK0BAIC0yMjMsNyArMjIzLDcgQEAgcGFyc2Vfb3B0IChpbnQga2V5LCBjaGFyICphcmcsCisgCX0KKyAgICAgICAvKiBXZSBvbmx5IHVzZSB0aGlzIGZvciBjaGVja2luZyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cywgd2UgZG9uJ3QKKyAJIGFjdHVhbGx5IHdhbnQgdG8gY29uc3VtZSB0aGVtLiAgKi8KKy0gICAgICAvKiBGYWxsdGhyb3VnaCAqLworKyAgICAgIEZBTExUSFJPVUdIOworICAgICBkZWZhdWx0OgorICAgICAgIHJldHVybiBBUkdQX0VSUl9VTktOT1dOOworICAgICB9CitkaWZmIC0tZ2l0IGEvc3JjL3JlYWRlbGYuYyBiL3NyYy9yZWFkZWxmLmMKK2luZGV4IDM0NmVjY2QuLjZhMjdlN2UgMTAwNjQ0CistLS0gYS9zcmMvcmVhZGVsZi5jCisrKysgYi9zcmMvcmVhZGVsZi5jCitAQCAtNDY1LDcgKzQ2NSw3IEBAIHBhcnNlX29wdCAoaW50IGtleSwgY2hhciAqYXJnLAorIAkgIHByaW50X3N0cmluZ19zZWN0aW9ucyA9IHRydWU7CisgCSAgYnJlYWs7CisgCX0KKy0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKyAgICAgIEZBTExUSFJPVUdIOworICAgICBjYXNlICd4JzoKKyAgICAgICBhZGRfZHVtcF9zZWN0aW9uIChhcmcsIGZhbHNlKTsKKyAgICAgICBhbnlfY29udHJvbF9vcHRpb24gPSB0cnVlOworQEAgLTYwMjksNyArNjAyOSw3IEBAIGF0dHJfY2FsbGJhY2sgKER3YXJmX0F0dHJpYnV0ZSAqYXR0cnAsIHZvaWQgKmFyZykKKyAJCQlkd2FyZl9mb3JtX25hbWUgKGZvcm0pLCAodWludG1heF90KSBudW0pOworIAkgICAgICByZXR1cm4gRFdBUkZfQ0JfT0s7CisgCSAgICB9CistCSAgLyogZWxzZSBmYWxsdGhyb3VnaCAqLworKwkgIEZBTExUSFJPVUdIOworIAorIAkvKiBUaGVzZSBjYXNlcyBhbHdheXMgdGFrZSBhIGxvY2xpc3RwdHIgYW5kIG5vIGNvbnN0YW50LiAqLworIAljYXNlIERXX0FUX2xvY2F0aW9uOgorQEAgLTYxOTUsNyArNjE5NSw3IEBAIGF0dHJfY2FsbGJhY2sgKER3YXJmX0F0dHJpYnV0ZSAqYXR0cnAsIHZvaWQgKmFyZykKKyAJICAgICAgcHJpbnRfYmxvY2sgKGJsb2NrLmxlbmd0aCwgYmxvY2suZGF0YSk7CisgCSAgICAgIGJyZWFrOworIAkgICAgfQorLQkgIC8qIEZhbGwgdGhyb3VnaC4gICovCisrCSAgRkFMTFRIUk9VR0g7CisgCisgCWNhc2UgRFdfQVRfbG9jYXRpb246CisgCWNhc2UgRFdfQVRfZGF0YV9sb2NhdGlvbjoKK0BAIC05MjI3LDcgKzkyMjcsNyBAQCBoYW5kbGVfYXV4dl9ub3RlIChFYmwgKmVibCwgRWxmICpjb3JlLCBHRWxmX1dvcmQgZGVzY3N6LCBHRWxmX09mZiBkZXNjX3BvcykKKyAJCXByaW50ZiAoIiAgICAlc1xuIiwgbmFtZSk7CisgCQlicmVhazsKKyAJICAgICAgfQorLQkgICAgLyogRmFsbCB0aHJvdWdoICovCisrCSAgICBGQUxMVEhST1VHSDsKKyAJICBjYXNlICd4JzoJCS8qIGhleCAqLworIAkgIGNhc2UgJ3AnOgkJLyogYWRkcmVzcyAqLworIAkgIGNhc2UgJ3MnOgkJLyogYWRkcmVzcyBvZiBzdHJpbmcgKi8KK2RpZmYgLS1naXQgYS9zcmMvc3RyaW5ncy5jIGIvc3JjL3N0cmluZ3MuYworaW5kZXggZDIxNDM1Ni4uMDNkMGYxMyAxMDA2NDQKKy0tLSBhL3NyYy9zdHJpbmdzLmMKKysrKyBiL3NyYy9zdHJpbmdzLmMKK0BAIC0yNDYsNyArMjQ2LDcgQEAgcGFyc2Vfb3B0IChpbnQga2V5LCBjaGFyICphcmcsCisgCWNhc2UgJ2InOgorIAljYXNlICdCJzoKKyAJICBiaWdfZW5kaWFuID0gdHJ1ZTsKKy0JICAvKiBGQUxMVEhST1VHSCAqLworKwkgIEZBTExUSFJPVUdIOworIAorIAljYXNlICdsJzoKKyAJY2FzZSAnTCc6CitkaWZmIC0tZ2l0IGEvdGVzdHMvYmFja3RyYWNlLmMgYi90ZXN0cy9iYWNrdHJhY2UuYworaW5kZXggMjFhYmU4YS4uZjVkZDc2MSAxMDA2NDQKKy0tLSBhL3Rlc3RzL2JhY2t0cmFjZS5jCisrKysgYi90ZXN0cy9iYWNrdHJhY2UuYworQEAgLTEyNyw3ICsxMjcsNyBAQCBjYWxsYmFja192ZXJpZnkgKHBpZF90IHRpZCwgdW5zaWduZWQgZnJhbWVubywgRHdhcmZfQWRkciBwYywKKyAJICBhc3NlcnQgKHN5bW5hbWUyID09IE5VTEwgfHwgc3RyY21wIChzeW1uYW1lMiwgImptcCIpICE9IDApOworIAkgIGJyZWFrOworIAl9CistICAgICAgLyogRkFMTFRIUlUgKi8KKysgICAgICBGQUxMVEhST1VHSDsKKyAgICAgY2FzZSA0OgorICAgICAgIC8qIFNvbWUgc2ltcGxlIGZyYW1lIHVud2luZGVycyBnZXQgdGhpcyB3cm9uZyBhbmQgdGhpbmsgc2lndXNyMgorIAkgaXMgY2FsbGluZyBpdHNlbGYgYWdhaW4uIEFsbG93IGl0IGFuZCBqdXN0IHByZXRlbmQgdGhlcmUgaXMKK2RpZmYgLS1naXQgYS90ZXN0cy9lbGZzdHJtZXJnZS5jIGIvdGVzdHMvZWxmc3RybWVyZ2UuYworaW5kZXggOGQ1YjUzYy4uNjJjNTQ5ZCAxMDA2NDQKKy0tLSBhL3Rlc3RzL2VsZnN0cm1lcmdlLmMKKysrKyBiL3Rlc3RzL2VsZnN0cm1lcmdlLmMKK0BAIC01NzgsNyArNTc4LDggQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkgICAgICBicmVhazsKKyAKKyAJICAgIGNhc2UgU0hUX0RZTkFNSUM6CistCSAgICAgIC8qIEZhbGx0aHJvdWdoLiAgVGhlcmUgYXJlIHN0cmluZyBpbmRleGVzIGluIGhlcmUsIGJ1dAorKwkgICAgICBGQUxMVEhST1VHSDsKKysJICAgICAgLyogVGhlcmUgYXJlIHN0cmluZyBpbmRleGVzIGluIGhlcmUsIGJ1dAorIAkJIHRoZXkgKHNob3VsZCkgcG9pbnQgdG8gYSBhbGxvY2F0ZWQgc3RyaW5nIHRhYmxlLAorIAkJIHdoaWNoIHdlIGRvbid0IGFsdGVyLiAgKi8KKyAJICAgIGRlZmF1bHQ6CistLSAKKzIuMTQuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDgtYnVpbGQtUHJvdmlkZS1hbHRlcm5hdGl2ZXMtZm9yLWdsaWJjLWFzc3VtcHRpb25zLWhlbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwOC1idWlsZC1Qcm92aWRlLWFsdGVybmF0aXZlcy1mb3ItZ2xpYmMtYXNzdW1wdGlvbnMtaGVsLnBhdGNoCmluZGV4IDg4NjRkNDQuLmE0MmNlN2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwOC1idWlsZC1Qcm92aWRlLWFsdGVybmF0aXZlcy1mb3ItZ2xpYmMtYXNzdW1wdGlvbnMtaGVsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwOC1idWlsZC1Qcm92aWRlLWFsdGVybmF0aXZlcy1mb3ItZ2xpYmMtYXNzdW1wdGlvbnMtaGVsLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAwMTBiMGM1N2U3NDg0NDBlYjFjZWIzZDk3Nzg3NWYyNDg4ZDJiNGNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlZjA5ODE3NDQ2NjkxNDlhMDBkZDA0MzlhNTRkYWMzMGRlN2I1NmE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMTA6MDY6MjYgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gYnVpbGQ6IFByb3ZpZGUgYWx0ZXJuYXRpdmVzIGZvciBnbGliYyBhc3N1bXB0aW9ucyBoZWxwcwpAQCAtMTAsNiArMTAsNyBAQAogUmViYXNlIHRvIDAuMTcwCiAKIFNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKwogLS0tCiAgTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogIGxpYi9jb2xvci5jICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKystCkBAIC04Myw3ICs4NCw3IEBACiAgNjkgZmlsZXMgY2hhbmdlZCwgOTUgaW5zZXJ0aW9ucygrKSwgNjQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCAyZmY0NDRlLi40MWY3N2RmIDEwMDY0NAoraW5kZXggMmZmNDQ0ZTcuLjQxZjc3ZGY4IDEwMDY0NAogLS0tIGEvTWFrZWZpbGUuYW0KICsrKyBiL01ha2VmaWxlLmFtCiBAQCAtMjgsNyArMjgsNyBAQCBwa2dpbmNsdWRlX0hFQURFUlMgPSB2ZXJzaW9uLmgKQEAgLTk2LDcgKzk3LDcgQEAKICBFWFRSQV9ESVNUID0gZWxmdXRpbHMuc3BlYyBHUEctS0VZIE5PVEVTIENPTlRSSUJVVElORyBcCiAgCSAgICAgQ09QWUlORyBDT1BZSU5HLUdQTFYyIENPUFlJTkctTEdQTFYzCiBkaWZmIC0tZ2l0IGEvbGliL2NvbG9yLmMgYi9saWIvY29sb3IuYwotaW5kZXggZjYyMzg5ZC4uYTJhODRiNCAxMDA2NDQKK2luZGV4IGY2MjM4OWQ1Li5hMmE4NGI0NiAxMDA2NDQKIC0tLSBhL2xpYi9jb2xvci5jCiArKysgYi9saWIvY29sb3IuYwogQEAgLTMyLDEzICszMiwxNCBAQApAQCAtMTE2LDcgKzExNyw3IEBACiAgLyogUHJvdG90eXBlIGZvciBvcHRpb24gaGFuZGxlci4gICovCiAgc3RhdGljIGVycm9yX3QgcGFyc2Vfb3B0IChpbnQga2V5LCBjaGFyICphcmcsIHN0cnVjdCBhcmdwX3N0YXRlICpzdGF0ZSk7CiBkaWZmIC0tZ2l0IGEvbGliL2ZpeGVkc2l6ZWhhc2guaCBiL2xpYi9maXhlZHNpemVoYXNoLmgKLWluZGV4IGRhYzJhNWYuLjQzMDE2ZmMgMTAwNjQ0CitpbmRleCBkYWMyYTVmNS4uNDMwMTZmYzMgMTAwNjQ0CiAtLS0gYS9saWIvZml4ZWRzaXplaGFzaC5oCiArKysgYi9saWIvZml4ZWRzaXplaGFzaC5oCiBAQCAtMzAsNyArMzAsNiBAQApAQCAtMTI4LDcgKzEyOSw3IEBACiAgI2luY2x1ZGUgPHN5c3RlbS5oPgogIAogZGlmZiAtLWdpdCBhL2xpYi9zeXN0ZW0uaCBiL2xpYi9zeXN0ZW0uaAotaW5kZXggOTIwMzMzNS4uMWE2MDEzMSAxMDA2NDQKK2luZGV4IDkyMDMzMzU1Li4xYTYwMTMxOSAxMDA2NDQKIC0tLSBhL2xpYi9zeXN0ZW0uaAogKysrIGIvbGliL3N5c3RlbS5oCiBAQCAtNTAsNiArNTAsMTYgQEAKQEAgLTE0OSw3ICsxNTAsNyBAQAogICNpZm5kZWYgTUFYCiAgI2RlZmluZSBNQVgobSwgbikgKChtKSA8IChuKSA/IChuKSA6IChtKSkKIGRpZmYgLS1naXQgYS9saWIveG1hbGxvYy5jIGIvbGliL3htYWxsb2MuYwotaW5kZXggMGNkZTM4NC4uMjE3YjA1NCAxMDA2NDQKK2luZGV4IDBjZGUzODRmLi4yMTdiMDU0MSAxMDA2NDQKIC0tLSBhL2xpYi94bWFsbG9jLmMKICsrKyBiL2xpYi94bWFsbG9jLmMKIEBAIC0zMCw3ICszMCw3IEBACkBAIC0xNjIsNyArMTYzLDcgQEAKICAjaW5jbHVkZSA8c3RkZGVmLmg+CiAgI2luY2x1ZGUgPHN0ZGxpYi5oPgogZGlmZiAtLWdpdCBhL2xpYmFzbS9hc21fZW5kLmMgYi9saWJhc20vYXNtX2VuZC5jCi1pbmRleCBjZWQyNGY1Li40YWQ5MThjIDEwMDY0NAoraW5kZXggY2VkMjRmNTAuLjRhZDkxOGM0IDEwMDY0NAogLS0tIGEvbGliYXNtL2FzbV9lbmQuYwogKysrIGIvbGliYXNtL2FzbV9lbmQuYwogQEAgLTMyLDcgKzMyLDcgQEAKQEAgLTE3NSw3ICsxNzYsNyBAQAogICNpbmNsdWRlIDxzdGRpby5oPgogICNpbmNsdWRlIDxzdGRsaWIuaD4KIGRpZmYgLS1naXQgYS9saWJhc20vYXNtX25ld3Njbi5jIGIvbGliYXNtL2FzbV9uZXdzY24uYwotaW5kZXggZGRiYjI1ZC4uNzRhNTk4ZCAxMDA2NDQKK2luZGV4IGRkYmIyNWRmLi43NGE1OThkOSAxMDA2NDQKIC0tLSBhL2xpYmFzbS9hc21fbmV3c2NuLmMKICsrKyBiL2xpYmFzbS9hc21fbmV3c2NuLmMKIEBAIC0zMiw3ICszMiw3IEBACkBAIC0xODgsNyArMTg5LDcgQEAKICAjaW5jbHVkZSA8c3RkbGliLmg+CiAgI2luY2x1ZGUgPHN0cmluZy5oPgogZGlmZiAtLWdpdCBhL2xpYmNwdS9pMzg2X2dlbmRpcy5jIGIvbGliY3B1L2kzODZfZ2VuZGlzLmMKLWluZGV4IGFhZTVlYWUuLjZkNzYwMTYgMTAwNjQ0CitpbmRleCBhYWU1ZWFlNi4uNmQ3NjAxNjUgMTAwNjQ0CiAtLS0gYS9saWJjcHUvaTM4Nl9nZW5kaXMuYwogKysrIGIvbGliY3B1L2kzODZfZ2VuZGlzLmMKIEBAIC0zMSw3ICszMSw3IEBACkBAIC0yMDEsNyArMjAyLDcgQEAKICAjaW5jbHVkZSA8c3RkaW8uaD4KICAjaW5jbHVkZSA8c3RkbGliLmg+CiBkaWZmIC0tZ2l0IGEvbGliY3B1L2kzODZfbGV4LmMgYi9saWJjcHUvaTM4Nl9sZXguYwotaW5kZXggYmE1ZjRhYS4uYjFlNDE5MSAxMDA2NDQKK2luZGV4IGJhNWY0YWE1Li5iMWU0MTkxNiAxMDA2NDQKIC0tLSBhL2xpYmNwdS9pMzg2X2xleC5jCiArKysgYi9saWJjcHUvaTM4Nl9sZXguYwogQEAgLTU3Nyw3ICs1NzcsNyBAQCBjaGFyICppMzg2X3RleHQ7CkBAIC0yMTQsNyArMjE1LDcgQEAKICAKICAjaW5jbHVkZSA8bGliZXUuaD4KIGRpZmYgLS1naXQgYS9saWJjcHUvaTM4Nl9wYXJzZS5jIGIvbGliY3B1L2kzODZfcGFyc2UuYwotaW5kZXggZWYxYWMzNS4uNDhmMmU2NCAxMDA2NDQKK2luZGV4IDZmYTdjZTNkLi5iYjI3MDA2MSAxMDA2NDQKIC0tLSBhL2xpYmNwdS9pMzg2X3BhcnNlLmMKICsrKyBiL2xpYmNwdS9pMzg2X3BhcnNlLmMKIEBAIC0xMDcsNyArMTA3LDcgQEAKQEAgLTIyNyw3ICsyMjgsNyBAQAogICNpbmNsdWRlIDxsaWJpbnRsLmg+CiAgI2luY2x1ZGUgPG1hdGguaD4KIGRpZmYgLS1naXQgYS9saWJkdy9NYWtlZmlsZS5hbSBiL2xpYmR3L01ha2VmaWxlLmFtCi1pbmRleCBmZjhjMjkxLi44OWU3OTJhIDEwMDY0NAoraW5kZXggZmY4YzI5MWUuLjg5ZTc5MmFhIDEwMDY0NAogLS0tIGEvbGliZHcvTWFrZWZpbGUuYW0KICsrKyBiL2xpYmR3L01ha2VmaWxlLmFtCiBAQCAtMTA1LDcgKzEwNSw4IEBAIGFtX2xpYmR3X3BpY19hX09CSkVDVFMgPSAkKGxpYmR3X2FfU09VUkNFUzouYz0ub3MpCkBAIC0yNDEsNyArMjQyLDcgQEAKICBsaWJkdy5zbyQoRVhFRVhUKTogJChzcmNkaXIpL2xpYmR3Lm1hcCAkKGxpYmR3X3NvX0xJQlMpICQobGliZHdfc29fREVQUykKICAjIFRoZSBycGF0aCBpcyBuZWNlc3NhcnkgZm9yIGxpYmVibCBiZWNhdXNlIGl0cyAkT1JJR0lOIHVzZSB3aWxsCiBkaWZmIC0tZ2l0IGEvbGliZHcvbGliZHdfYWxsb2MuYyBiL2xpYmR3L2xpYmR3X2FsbG9jLmMKLWluZGV4IDI4YThjZjYuLjI5YWViM2YgMTAwNjQ0CitpbmRleCAyOGE4Y2Y2ZS4uMjlhZWIzZjcgMTAwNjQ0CiAtLS0gYS9saWJkdy9saWJkd19hbGxvYy5jCiArKysgYi9saWJkdy9saWJkd19hbGxvYy5jCiBAQCAtMzEsNyArMzEsNyBAQApAQCAtMjU0LDcgKzI1NSw3IEBACiAgI2luY2x1ZGUgPHN0ZGxpYi5oPgogICNpbmNsdWRlICJsaWJkd1AuaCIKIGRpZmYgLS1naXQgYS9saWJkd2ZsL2R3ZmxfYnVpbGRfaWRfZmluZF9lbGYuYyBiL2xpYmR3ZmwvZHdmbF9idWlsZF9pZF9maW5kX2VsZi5jCi1pbmRleCBlZTBjMTY0Li5iMDZhYjU5IDEwMDY0NAoraW5kZXggZWUwYzE2NDYuLmIwNmFiNTk2IDEwMDY0NAogLS0tIGEvbGliZHdmbC9kd2ZsX2J1aWxkX2lkX2ZpbmRfZWxmLmMKICsrKyBiL2xpYmR3ZmwvZHdmbF9idWlsZF9pZF9maW5kX2VsZi5jCiBAQCAtMzEsNiArMzEsNyBAQApAQCAtMjc1LDcgKzI3Niw3IEBACiAgCSAgICB7CiAgCSAgICAgICpmaWxlX25hbWUgPSBuYW1lOwogZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZHdmbF9lcnJvci5jIGIvbGliZHdmbC9kd2ZsX2Vycm9yLmMKLWluZGV4IDdiY2Y2MWMuLmMzNDU3OTcgMTAwNjQ0CitpbmRleCA3YmNmNjFjYy4uYzM0NTc5N2EgMTAwNjQ0CiAtLS0gYS9saWJkd2ZsL2R3ZmxfZXJyb3IuYwogKysrIGIvbGliZHdmbC9kd2ZsX2Vycm9yLmMKIEBAIC0xNDAsNiArMTQwLDcgQEAgX19saWJkd2ZsX3NldGVycm5vIChEd2ZsX0Vycm9yIGVycm9yKQpAQCAtMjk3LDcgKzI5OCw3IEBACiAgICAgICAgcmV0dXJuIGVsZl9lcnJtc2cgKGVycm9yICYgMHhmZmZmKTsKICAgICAgY2FzZSBPVEhFUl9FUlJPUiAoTElCRFcpOgogZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZHdmbF9tb2R1bGVfZ2V0ZHdhcmYuYyBiL2xpYmR3ZmwvZHdmbF9tb2R1bGVfZ2V0ZHdhcmYuYwotaW5kZXggOTc3NWFjZS4uNTExYzRhNiAxMDA2NDQKK2luZGV4IDk3NzVhY2VkLi41MTFjNGE2YSAxMDA2NDQKIC0tLSBhL2xpYmR3ZmwvZHdmbF9tb2R1bGVfZ2V0ZHdhcmYuYwogKysrIGIvbGliZHdmbC9kd2ZsX21vZHVsZV9nZXRkd2FyZi5jCiBAQCAtMzUsNiArMzUsNyBAQApAQCAtMzA5LDcgKzMxMCw3IEBACiAgI2luY2x1ZGUgIi4uL2xpYmVsZi9saWJlbGZQLmgiCiAgI2luY2x1ZGUgInN5c3RlbS5oIgogZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZmluZC1kZWJ1Z2luZm8uYyBiL2xpYmR3ZmwvZmluZC1kZWJ1Z2luZm8uYwotaW5kZXggNmQ1YTQyYS4uOTI2Nzc4OCAxMDA2NDQKK2luZGV4IDZkNWE0MmE2Li45MjY3Nzg4ZCAxMDA2NDQKIC0tLSBhL2xpYmR3ZmwvZmluZC1kZWJ1Z2luZm8uYwogKysrIGIvbGliZHdmbC9maW5kLWRlYnVnaW5mby5jCiBAQCAtMzg5LDcgKzM4OSw3IEBAIGR3Zmxfc3RhbmRhcmRfZmluZF9kZWJ1Z2luZm8gKER3ZmxfTW9kdWxlICptb2QsCkBAIC0zMjIsNyArMzIzLDcgQEAKICAJZmQgPSBmaW5kX2RlYnVnaW5mb19pbl9wYXRoIChtb2QsIGNhbm9uLAogIAkJCQkgICAgIGRlYnVnbGlua19maWxlLCBkZWJ1Z2xpbmtfY3JjLAogZGlmZiAtLWdpdCBhL2xpYmR3ZmwvbGliZHdmbF9jcmMzMl9maWxlLmMgYi9saWJkd2ZsL2xpYmR3ZmxfY3JjMzJfZmlsZS5jCi1pbmRleCBmODQ5MTI4Li42ZjBhY2ExIDEwMDY0NAoraW5kZXggZjg0OTEyOGQuLjZmMGFjYTFiIDEwMDY0NAogLS0tIGEvbGliZHdmbC9saWJkd2ZsX2NyYzMyX2ZpbGUuYwogKysrIGIvbGliZHdmbC9saWJkd2ZsX2NyYzMyX2ZpbGUuYwogQEAgLTI5LDYgKzI5LDE1IEBACkBAIC0zNDIsNyArMzQzLDcgQEAKICAjZGVmaW5lIGNyYzMyIF9fbGliZHdmbF9jcmMzMgogICNpbmNsdWRlIDxsaWJkd2ZsUC5oPgogZGlmZiAtLWdpdCBhL2xpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYyBiL2xpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYwotaW5kZXggOWQwZmVmMi4uOWZjMDliOCAxMDA2NDQKK2luZGV4IDlkMGZlZjJjLi45ZmMwOWI4OCAxMDA2NDQKIC0tLSBhL2xpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYwogKysrIGIvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jCiBAQCAtNDAsNiArNDAsNyBAQApAQCAtMzU0LDcgKzM1NSw3IEBACiAgI2luY2x1ZGUgPGVycm5vLmg+CiAgI2luY2x1ZGUgPHN0ZGlvLmg+CiBkaWZmIC0tZ2l0IGEvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMgYi9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYwotaW5kZXggNTM3MTM5Ni4uMmU2NmRmZCAxMDA2NDQKK2luZGV4IDUzNzEzOTYzLi4yZTY2ZGZkZCAxMDA2NDQKIC0tLSBhL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jCiArKysgYi9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYwogQEAgLTMyLDcgKzMyLDcgQEAKQEAgLTM2Nyw3ICszNjgsNyBAQAogICNpbmNsdWRlIDxkd2FyZi5oPgogICNpbmNsdWRlIDxzdGRsaWIuaD4KIGRpZmYgLS1naXQgYS9saWJlbGYvZWxmLmggYi9saWJlbGYvZWxmLmgKLWluZGV4IDVjZjJiOTMuLjk5MGIzYWYgMTAwNjQ0CitpbmRleCA1Y2YyYjkzNC4uOTkwYjNhZmIgMTAwNjQ0CiAtLS0gYS9saWJlbGYvZWxmLmgKICsrKyBiL2xpYmVsZi9lbGYuaAogQEAgLTIxLDcgKzIxLDkgQEAKQEAgLTM5Miw3ICszOTMsNyBAQAogIAogICNlbmRpZgkvKiBlbGYuaCAqLwogZGlmZiAtLWdpdCBhL2xpYmVsZi9saWJlbGYuaCBiL2xpYmVsZi9saWJlbGYuaAotaW5kZXggNTQ3YzBmNS4uZGQ3ODc5OSAxMDA2NDQKK2luZGV4IDU0N2MwZjUwLi5kZDc4Nzk5ZSAxMDA2NDQKIC0tLSBhL2xpYmVsZi9saWJlbGYuaAogKysrIGIvbGliZWxmL2xpYmVsZi5oCiBAQCAtMjksNiArMjksNyBAQApAQCAtNDA0LDcgKzQwNSw3IEBACiAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogIAogZGlmZiAtLWdpdCBhL2xpYmVsZi9saWJlbGZQLmggYi9saWJlbGYvbGliZWxmUC5oCi1pbmRleCA3ZWU2NjI1Li41ODQwODk5IDEwMDY0NAoraW5kZXggN2VlNjYyNWEuLjU4NDA4OTk3IDEwMDY0NAogLS0tIGEvbGliZWxmL2xpYmVsZlAuaAogKysrIGIvbGliZWxmL2xpYmVsZlAuaAogQEAgLTMyLDYgKzMyLDcgQEAKQEAgLTQxNiw3ICs0MTcsNyBAQAogICNpbmNsdWRlIDxlcnJuby5oPgogICNpbmNsdWRlIDxzdGRib29sLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL2FkZHIybGluZS5jIGIvc3JjL2FkZHIybGluZS5jCi1pbmRleCBiYTQxNGE3Li4wNGI3MTE2IDEwMDY0NAoraW5kZXggNDQ0ZWU1MmMuLjk1OTZmYTY3IDEwMDY0NAogLS0tIGEvc3JjL2FkZHIybGluZS5jCiArKysgYi9zcmMvYWRkcjJsaW5lLmMKIEBAIC0yMyw3ICsyMyw3IEBACkBAIC00MjksNyArNDMwLDcgQEAKICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KICAjaW5jbHVkZSA8bGliZHdmbC5oPgogZGlmZiAtLWdpdCBhL3NyYy9hci5jIGIvc3JjL2FyLmMKLWluZGV4IGVjMzJjZWUuLjRlZmQ3MjkgMTAwNjQ0CitpbmRleCBlYzMyY2VlNS4uNGVmZDcyOWMgMTAwNjQ0CiAtLS0gYS9zcmMvYXIuYwogKysrIGIvc3JjL2FyLmMKIEBAIC0yMiw3ICsyMiw3IEBACkBAIC00NDIsNyArNDQzLDcgQEAKICAjaW5jbHVkZSA8Z2VsZi5oPgogICNpbmNsdWRlIDxsaWJpbnRsLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL2FybGliLmMgYi9zcmMvYXJsaWIuYwotaW5kZXggZTA4MzlhYS4uMTE0MzY1OCAxMDA2NDQKK2luZGV4IGUwODM5YWFiLi4xMTQzNjU4ZiAxMDA2NDQKIC0tLSBhL3NyYy9hcmxpYi5jCiArKysgYi9zcmMvYXJsaWIuYwogQEAgLTIxLDcgKzIxLDcgQEAKQEAgLTQ1NSw3ICs0NTYsNyBAQAogICNpbmNsdWRlIDxpbnR0eXBlcy5oPgogICNpbmNsdWRlIDxsaWJpbnRsLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL2FybGliMi5jIGIvc3JjL2FybGliMi5jCi1pbmRleCA1NTNmYzU3Li40NjQ0M2QwIDEwMDY0NAoraW5kZXggNTUzZmM1N2IuLjQ2NDQzZDBlIDEwMDY0NAogLS0tIGEvc3JjL2FybGliMi5jCiArKysgYi9zcmMvYXJsaWIyLmMKIEBAIC0yMCw3ICsyMCw3IEBACkBAIC00NjgsNyArNDY5LDcgQEAKICAjaW5jbHVkZSA8bGltaXRzLmg+CiAgI2luY2x1ZGUgPHN0cmluZy5oPgogZGlmZiAtLWdpdCBhL3NyYy9lbGZjbXAuYyBiL3NyYy9lbGZjbXAuYwotaW5kZXggNTA0NjQyMC4uY2ZmMTgzZiAxMDA2NDQKK2luZGV4IDUwNDY0MjA3Li5jZmYxODNmYSAxMDA2NDQKIC0tLSBhL3NyYy9lbGZjbXAuYwogKysrIGIvc3JjL2VsZmNtcC5jCiBAQCAtMjMsNyArMjMsNyBAQApAQCAtNDgxLDcgKzQ4Miw3IEBACiAgI2luY2x1ZGUgPGxvY2FsZS5oPgogICNpbmNsdWRlIDxsaWJpbnRsLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL2VsZmxpbnQuYyBiL3NyYy9lbGZsaW50LmMKLWluZGV4IDUxZTUzYzIuLmRhMGIwZGMgMTAwNjQ0CitpbmRleCBkZjFiM2EwMy4uNjdkOGQxMzQgMTAwNjQ0CiAtLS0gYS9zcmMvZWxmbGludC5jCiArKysgYi9zcmMvZWxmbGludC5jCiBAQCAtMjQsNyArMjQsNyBAQApAQCAtNDk0LDcgKzQ5NSw3IEBACiAgI2luY2x1ZGUgPGdlbGYuaD4KICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KIGRpZmYgLS1naXQgYS9zcmMvZmluZHRleHRyZWwuYyBiL3NyYy9maW5kdGV4dHJlbC5jCi1pbmRleCA4ZjFlMjM5Li43MTQ2M2FmIDEwMDY0NAoraW5kZXggOGYxZTIzOWEuLjcxNDYzYWYzIDEwMDY0NAogLS0tIGEvc3JjL2ZpbmR0ZXh0cmVsLmMKICsrKyBiL3NyYy9maW5kdGV4dHJlbC5jCiBAQCAtMjMsNyArMjMsNyBAQApAQCAtNTA3LDcgKzUwOCw3IEBACiAgI2luY2x1ZGUgPGdlbGYuaD4KICAjaW5jbHVkZSA8bGliZHcuaD4KIGRpZmYgLS1naXQgYS9zcmMvbm0uYyBiL3NyYy9ubS5jCi1pbmRleCA5NjljNmQzLi4zMTEzYzA0IDEwMDY0NAoraW5kZXggOTY5YzZkMzUuLjMxMTNjMDRjIDEwMDY0NAogLS0tIGEvc3JjL25tLmMKICsrKyBiL3NyYy9ubS5jCiBAQCAtMjYsNyArMjYsNyBAQApAQCAtNTIwLDcgKzUyMSw3IEBACiAgI2luY2x1ZGUgPGdlbGYuaD4KICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KIGRpZmYgLS1naXQgYS9zcmMvb2JqZHVtcC5jIGIvc3JjL29iamR1bXAuYwotaW5kZXggODYwY2ZhYy4uNjFlNjdiZiAxMDA2NDQKK2luZGV4IDBkZDlhNmFhLi45YzhiZjE0OSAxMDA2NDQKIC0tLSBhL3NyYy9vYmpkdW1wLmMKICsrKyBiL3NyYy9vYmpkdW1wLmMKIEBAIC0yMSw3ICsyMSw3IEBACkBAIC01MzMsNyArNTM0LDcgQEAKICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KICAjaW5jbHVkZSA8bGliaW50bC5oPgogZGlmZiAtLWdpdCBhL3NyYy9yYW5saWIuYyBiL3NyYy9yYW5saWIuYwotaW5kZXggY2MwZWUyMy4uYWU4NTFlNCAxMDA2NDQKK2luZGV4IGNjMGVlMjMzLi5hZTg1MWU0MCAxMDA2NDQKIC0tLSBhL3NyYy9yYW5saWIuYwogKysrIGIvc3JjL3JhbmxpYi5jCiBAQCAtMjQsNyArMjQsNyBAQApAQCAtNTQ2LDcgKzU0Nyw3IEBACiAgI2luY2x1ZGUgPGdlbGYuaD4KICAjaW5jbHVkZSA8bGliaW50bC5oPgogZGlmZiAtLWdpdCBhL3NyYy9yZWFkZWxmLmMgYi9zcmMvcmVhZGVsZi5jCi1pbmRleCAzNDZlY2NkLi5jODMxYWE4IDEwMDY0NAoraW5kZXggNmEyN2U3ZTAuLjQ3NTlhOTY1IDEwMDY0NAogLS0tIGEvc3JjL3JlYWRlbGYuYwogKysrIGIvc3JjL3JlYWRlbGYuYwogQEAgLTI1LDcgKzI1LDcgQEAKQEAgLTU1OSw3ICs1NjAsNyBAQAogICNpbmNsdWRlIDxnZWxmLmg+CiAgI2luY2x1ZGUgPGludHR5cGVzLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL3NpemUuYyBiL3NyYy9zaXplLmMKLWluZGV4IGFkOGRiY2IuLmZkODNiZTAgMTAwNjQ0CitpbmRleCBhZDhkYmNiYi4uZmQ4M2JlMDYgMTAwNjQ0CiAtLS0gYS9zcmMvc2l6ZS5jCiArKysgYi9zcmMvc2l6ZS5jCiBAQCAtMjEsNyArMjEsNyBAQApAQCAtNTcyLDcgKzU3Myw3IEBACiAgI2luY2x1ZGUgPGdlbGYuaD4KICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KIGRpZmYgLS1naXQgYS9zcmMvc3RhY2suYyBiL3NyYy9zdGFjay5jCi1pbmRleCA2ZjJmZjY5Li42ZGEwMjQzIDEwMDY0NAoraW5kZXggNmYyZmY2OWYuLjZkYTAyNDNkIDEwMDY0NAogLS0tIGEvc3JjL3N0YWNrLmMKICsrKyBiL3NyYy9zdGFjay5jCiBAQCAtMTgsNyArMTgsNyBAQApAQCAtNTg1LDcgKzU4Niw3IEBACiAgI2luY2x1ZGUgPGludHR5cGVzLmg+CiAgI2luY2x1ZGUgPHN0ZGlvLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL3N0cmluZ3MuYyBiL3NyYy9zdHJpbmdzLmMKLWluZGV4IGQyMTQzNTYuLjc2Y2IyNmIgMTAwNjQ0CitpbmRleCAwM2QwZjEzMy4uNWMzMTFjYmQgMTAwNjQ0CiAtLS0gYS9zcmMvc3RyaW5ncy5jCiArKysgYi9zcmMvc3RyaW5ncy5jCiBAQCAtMjUsNyArMjUsNyBAQApAQCAtNTk4LDcgKzU5OSw3IEBACiAgI2luY2x1ZGUgPGdlbGYuaD4KICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KIGRpZmYgLS1naXQgYS9zcmMvc3RyaXAuYyBiL3NyYy9zdHJpcC5jCi1pbmRleCBjNzgzMGVjLi4wZDdmMTQ4IDEwMDY0NAoraW5kZXggYzc4MzBlYzYuLjBkN2YxNDhkIDEwMDY0NAogLS0tIGEvc3JjL3N0cmlwLmMKICsrKyBiL3NyYy9zdHJpcC5jCiBAQCAtMjQsNyArMjQsNyBAQApAQCAtNjExLDcgKzYxMiw3IEBACiAgI2luY2x1ZGUgPGZubWF0Y2guaD4KICAjaW5jbHVkZSA8Z2VsZi5oPgogZGlmZiAtLWdpdCBhL3NyYy91bnN0cmlwLmMgYi9zcmMvdW5zdHJpcC5jCi1pbmRleCA1MDc0OTA5Li4zZDRmOTUyIDEwMDY0NAoraW5kZXggNTA3NDkwOTMuLjNkNGY5NTI1IDEwMDY0NAogLS0tIGEvc3JjL3Vuc3RyaXAuYwogKysrIGIvc3JjL3Vuc3RyaXAuYwogQEAgLTMxLDcgKzMxLDcgQEAKQEAgLTYyNCw3ICs2MjUsNyBAQAogICNpbmNsdWRlIDxmbm1hdGNoLmg+CiAgI2luY2x1ZGUgPGxpYmludGwuaD4KIGRpZmYgLS1naXQgYS90ZXN0cy9hZGRyc2NvcGVzLmMgYi90ZXN0cy9hZGRyc2NvcGVzLmMKLWluZGV4IDc5MTU2OWYuLjU0ZjQzMTEgMTAwNjQ0CitpbmRleCA3OTE1NjlmNS4uNTRmNDMxMWIgMTAwNjQ0CiAtLS0gYS90ZXN0cy9hZGRyc2NvcGVzLmMKICsrKyBiL3Rlc3RzL2FkZHJzY29wZXMuYwogQEAgLTI1LDcgKzI1LDcgQEAKQEAgLTYzNyw3ICs2MzgsNyBAQAogIAogIAogZGlmZiAtLWdpdCBhL3Rlc3RzL2FsbHJlZ3MuYyBiL3Rlc3RzL2FsbHJlZ3MuYwotaW5kZXggMjg2ZjdlMy4uYzlkZTA4OSAxMDA2NDQKK2luZGV4IDI4NmY3ZTNjLi5jOWRlMDg5NyAxMDA2NDQKIC0tLSBhL3Rlc3RzL2FsbHJlZ3MuYwogKysrIGIvdGVzdHMvYWxscmVncy5jCiBAQCAtMjEsNyArMjEsNyBAQApAQCAtNjUwLDcgKzY1MSw3IEBACiAgI2luY2x1ZGUgPGFyZ3AuaD4KICAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiBkaWZmIC0tZ2l0IGEvdGVzdHMvYmFja3RyYWNlLWRhdGEuYyBiL3Rlc3RzL2JhY2t0cmFjZS1kYXRhLmMKLWluZGV4IGEzODdkOGYuLjk1NWMyN2QgMTAwNjQ0CitpbmRleCBhMzg3ZDhmZi4uOTU1YzI3ZDEgMTAwNjQ0CiAtLS0gYS90ZXN0cy9iYWNrdHJhY2UtZGF0YS5jCiArKysgYi90ZXN0cy9iYWNrdHJhY2UtZGF0YS5jCiBAQCAtMjcsNyArMjcsNyBAQApAQCAtNjYzLDcgKzY2NCw3IEBACiAgI2luY2x1ZGUgPGR3YXJmLmg+CiAgI2lmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX2xpbnV4X18pCiBkaWZmIC0tZ2l0IGEvdGVzdHMvYmFja3RyYWNlLWR3YXJmLmMgYi90ZXN0cy9iYWNrdHJhY2UtZHdhcmYuYwotaW5kZXggMmRjOGE5YS4uMjRjYTdmYiAxMDA2NDQKK2luZGV4IDJkYzhhOWEyLi4yNGNhN2ZiMCAxMDA2NDQKIC0tLSBhL3Rlc3RzL2JhY2t0cmFjZS1kd2FyZi5jCiArKysgYi90ZXN0cy9iYWNrdHJhY2UtZHdhcmYuYwogQEAgLTIyLDcgKzIyLDcgQEAKQEAgLTY3Niw3ICs2NzcsNyBAQAogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KIGRpZmYgLS1naXQgYS90ZXN0cy9iYWNrdHJhY2UuYyBiL3Rlc3RzL2JhY2t0cmFjZS5jCi1pbmRleCAyMWFiZThhLi5kNzMzMjQ4IDEwMDY0NAoraW5kZXggZjVkZDc2MWYuLmE5M2E4ZjAzIDEwMDY0NAogLS0tIGEvdGVzdHMvYmFja3RyYWNlLmMKICsrKyBiL3Rlc3RzL2JhY2t0cmFjZS5jCiBAQCAtMjQsNyArMjQsNyBAQApAQCAtNjg5LDcgKzY5MCw3IEBACiAgI2luY2x1ZGUgPGR3YXJmLmg+CiAgI2lmZGVmIF9fbGludXhfXwogZGlmZiAtLWdpdCBhL3Rlc3RzL2J1aWxkaWQuYyBiL3Rlc3RzL2J1aWxkaWQuYwotaW5kZXggODdjMTg3Ny4uMjk1M2U2YiAxMDA2NDQKK2luZGV4IDg3YzE4NzczLi4yOTUzZTZiYiAxMDA2NDQKIC0tLSBhL3Rlc3RzL2J1aWxkaWQuYwogKysrIGIvdGVzdHMvYnVpbGRpZC5jCiBAQCAtMjMsNyArMjMsNyBAQApAQCAtNzAyLDcgKzcwMyw3IEBACiAgI2luY2x1ZGUgPHN0ZGxpYi5oPgogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KIGRpZmYgLS1naXQgYS90ZXN0cy9kZWJ1Z2FsdGxpbmsuYyBiL3Rlc3RzL2RlYnVnYWx0bGluay5jCi1pbmRleCA2ZDk3ZDUwLi5lZTdlNTU5IDEwMDY0NAoraW5kZXggNmQ5N2Q1MDAuLmVlN2U1NTllIDEwMDY0NAogLS0tIGEvdGVzdHMvZGVidWdhbHRsaW5rLmMKICsrKyBiL3Rlc3RzL2RlYnVnYWx0bGluay5jCiBAQCAtMjMsNyArMjMsNyBAQApAQCAtNzE1LDcgKzcxNiw3IEBACiAgI2luY2x1ZGUgPHN0ZGxpYi5oPgogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KIGRpZmYgLS1naXQgYS90ZXN0cy9kZWJ1Z2xpbmsuYyBiL3Rlc3RzL2RlYnVnbGluay5jCi1pbmRleCA5MzVkMTAyLi43NDFjYjgxIDEwMDY0NAoraW5kZXggOTM1ZDEwMjkuLjc0MWNiODE0IDEwMDY0NAogLS0tIGEvdGVzdHMvZGVidWdsaW5rLmMKICsrKyBiL3Rlc3RzL2RlYnVnbGluay5jCiBAQCAtMjEsNyArMjEsNyBAQApAQCAtNzI4LDcgKzcyOSw3IEBACiAgI2luY2x1ZGUgPHN0ZGxpYi5oPgogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KIGRpZmYgLS1naXQgYS90ZXN0cy9kZWxldGVkLmMgYi90ZXN0cy9kZWxldGVkLmMKLWluZGV4IDZiZTM1YmMuLjAxOTA3MTEgMTAwNjQ0CitpbmRleCA2YmUzNWJjMi4uMDE5MDcxMTMgMTAwNjQ0CiAtLS0gYS90ZXN0cy9kZWxldGVkLmMKICsrKyBiL3Rlc3RzL2RlbGV0ZWQuYwogQEAgLTIxLDcgKzIxLDcgQEAKQEAgLTc0MSw3ICs3NDIsNyBAQAogICNpZmRlZiBfX2xpbnV4X18KICAjaW5jbHVkZSA8c3lzL3ByY3RsLmg+CiBkaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbC1hZGRyLXNlY3QuYyBiL3Rlc3RzL2R3ZmwtYWRkci1zZWN0LmMKLWluZGV4IDIxZTQ3MGEuLjFlYTFlM2IgMTAwNjQ0CitpbmRleCAyMWU0NzBhMy4uMWVhMWUzYjIgMTAwNjQ0CiAtLS0gYS90ZXN0cy9kd2ZsLWFkZHItc2VjdC5jCiArKysgYi90ZXN0cy9kd2ZsLWFkZHItc2VjdC5jCiBAQCAtMjMsNyArMjMsNyBAQApAQCAtNzU0LDcgKzc1NSw3IEBACiAgI2luY2x1ZGUgPGFyZ3AuaD4KICAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdmbCkKIGRpZmYgLS1naXQgYS90ZXN0cy9kd2ZsLWJ1Zy1hZGRyLW92ZXJmbG93LmMgYi90ZXN0cy9kd2ZsLWJ1Zy1hZGRyLW92ZXJmbG93LmMKLWluZGV4IGFhODAzMGUuLjAyYzhiZWYgMTAwNjQ0CitpbmRleCBhYTgwMzBlMS4uMDJjOGJlZjkgMTAwNjQ0CiAtLS0gYS90ZXN0cy9kd2ZsLWJ1Zy1hZGRyLW92ZXJmbG93LmMKICsrKyBiL3Rlc3RzL2R3ZmwtYnVnLWFkZHItb3ZlcmZsb3cuYwogQEAgLTIwLDcgKzIwLDcgQEAKQEAgLTc2Nyw3ICs3NjgsNyBAQAogICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2ZsKQogIAogZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmwtYnVnLWZkLWxlYWsuYyBiL3Rlc3RzL2R3ZmwtYnVnLWZkLWxlYWsuYwotaW5kZXggNjg5Y2RkNy4uNTk3M2RhMyAxMDA2NDQKK2luZGV4IDY4OWNkZDc5Li41OTczZGEzOSAxMDA2NDQKIC0tLSBhL3Rlc3RzL2R3ZmwtYnVnLWZkLWxlYWsuYwogKysrIGIvdGVzdHMvZHdmbC1idWctZmQtbGVhay5jCiBAQCAtMjQsNyArMjQsNyBAQApAQCAtNzgwLDcgKzc4MSw3IEBACiAgI2luY2x1ZGUgPGR3YXJmLmg+CiAgCiBkaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbC1idWctZ2V0bW9kdWxlcy5jIGIvdGVzdHMvZHdmbC1idWctZ2V0bW9kdWxlcy5jCi1pbmRleCAxZWU5ODlmLi5mZDYyZTY1IDEwMDY0NAoraW5kZXggMWVlOTg5ZjguLmZkNjJlNjUzIDEwMDY0NAogLS0tIGEvdGVzdHMvZHdmbC1idWctZ2V0bW9kdWxlcy5jCiArKysgYi90ZXN0cy9kd2ZsLWJ1Zy1nZXRtb2R1bGVzLmMKIEBAIC0xOCw3ICsxOCw3IEBACkBAIC03OTMsNyArNzk0LDcgQEAKICBzdGF0aWMgY29uc3QgRHdmbF9DYWxsYmFja3MgY2FsbGJhY2tzID0KICAgIHsKIGRpZmYgLS1naXQgYS90ZXN0cy9kd2ZsLXJlcG9ydC1lbGYtYWxpZ24uYyBiL3Rlc3RzL2R3ZmwtcmVwb3J0LWVsZi1hbGlnbi5jCi1pbmRleCBhNGU5N2QzLi5mNDcxNTg3IDEwMDY0NAoraW5kZXggYTRlOTdkM2MuLmY0NzE1ODdjIDEwMDY0NAogLS0tIGEvdGVzdHMvZHdmbC1yZXBvcnQtZWxmLWFsaWduLmMKICsrKyBiL3Rlc3RzL2R3ZmwtcmVwb3J0LWVsZi1hbGlnbi5jCiBAQCAtMjAsNyArMjAsNyBAQApAQCAtODA2LDcgKzgwNyw3IEBACiAgI2luY2x1ZGUgPHN0cmluZy5oPgogICNpbmNsdWRlIDxzdGRsaWIuaD4KIGRpZmYgLS1naXQgYS90ZXN0cy9kd2ZsbGluZXMuYyBiL3Rlc3RzL2R3ZmxsaW5lcy5jCi1pbmRleCA5MDM3OWRkLi5jYmRmNmM0IDEwMDY0NAoraW5kZXggOTAzNzlkZDIuLmNiZGY2YzRjIDEwMDY0NAogLS0tIGEvdGVzdHMvZHdmbGxpbmVzLmMKICsrKyBiL3Rlc3RzL2R3ZmxsaW5lcy5jCiBAQCAtMjcsNyArMjcsNyBAQApAQCAtODE5LDcgKzgyMCw3IEBACiAgaW50CiAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIGRpZmYgLS1naXQgYS90ZXN0cy9kd2ZsbW9kdGVzdC5jIGIvdGVzdHMvZHdmbG1vZHRlc3QuYwotaW5kZXggMDAyN2Y5Ni4uZTY4ZDNiYyAxMDA2NDQKK2luZGV4IDAwMjdmOTZiLi5lNjhkM2JjYSAxMDA2NDQKIC0tLSBhL3Rlc3RzL2R3Zmxtb2R0ZXN0LmMKICsrKyBiL3Rlc3RzL2R3Zmxtb2R0ZXN0LmMKIEBAIC0yMyw3ICsyMyw3IEBACkBAIC04MzIsNyArODMzLDcgQEAKICAjaW5jbHVkZSA8YXJncC5oPgogICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2ZsKQogZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmxzeW1zLmMgYi90ZXN0cy9kd2Zsc3ltcy5jCi1pbmRleCA0OWFjMzM0Li5jZjA3ODMwIDEwMDY0NAoraW5kZXggNDlhYzMzNDYuLmNmMDc4MzAxIDEwMDY0NAogLS0tIGEvdGVzdHMvZHdmbHN5bXMuYwogKysrIGIvdGVzdHMvZHdmbHN5bXMuYwogQEAgLTI1LDcgKzI1LDcgQEAKQEAgLTg0NSw3ICs4NDYsNyBAQAogIAogIHN0YXRpYyBjb25zdCBjaGFyICoKIGRpZmYgLS1naXQgYS90ZXN0cy9lYXJseS1vZmZzY24uYyBiL3Rlc3RzL2Vhcmx5LW9mZnNjbi5jCi1pbmRleCA5MjRjYjllLi42ZjYwZDVhIDEwMDY0NAoraW5kZXggOTI0Y2I5ZWYuLjZmNjBkNWEzIDEwMDY0NAogLS0tIGEvdGVzdHMvZWFybHktb2Zmc2NuLmMKICsrKyBiL3Rlc3RzL2Vhcmx5LW9mZnNjbi5jCiBAQCAtMTksNyArMTksNyBAQApAQCAtODU4LDcgKzg1OSw3IEBACiAgI2luY2x1ZGUgPGdlbGYuaD4KICAjaW5jbHVkZSA8c3RkaW8uaD4KIGRpZmYgLS1naXQgYS90ZXN0cy9lY3AuYyBiL3Rlc3RzL2VjcC5jCi1pbmRleCAzOGE2ODU5Li43NDNjZWE1IDEwMDY0NAoraW5kZXggMzhhNjg1OWUuLjc0M2NlYTVkIDEwMDY0NAogLS0tIGEvdGVzdHMvZWNwLmMKICsrKyBiL3Rlc3RzL2VjcC5jCiBAQCAtMjAsNyArMjAsNyBAQApAQCAtODcxLDcgKzg3Miw3IEBACiAgI2luY2x1ZGUgPGdlbGYuaD4KICAjaW5jbHVkZSA8c3RkbGliLmg+CiBkaWZmIC0tZ2l0IGEvdGVzdHMvZmluZC1wcm9sb2d1ZXMuYyBiL3Rlc3RzL2ZpbmQtcHJvbG9ndWVzLmMKLWluZGV4IGJhOGFlMzcuLjc2ZjVmMDQgMTAwNjQ0CitpbmRleCBiYThhZTM3MS4uNzZmNWYwNDcgMTAwNjQ0CiAtLS0gYS90ZXN0cy9maW5kLXByb2xvZ3Vlcy5jCiArKysgYi90ZXN0cy9maW5kLXByb2xvZ3Vlcy5jCiBAQCAtMjUsNyArMjUsNyBAQApAQCAtODg0LDcgKzg4NSw3IEBACiAgI2luY2x1ZGUgPGZubWF0Y2guaD4KICAKIGRpZmYgLS1naXQgYS90ZXN0cy9mdW5jcmV0dmFsLmMgYi90ZXN0cy9mdW5jcmV0dmFsLmMKLWluZGV4IDhkMTlkMTEuLmM4YWFhOTMgMTAwNjQ0CitpbmRleCA4ZDE5ZDExNy4uYzhhYWE5M2QgMTAwNjQ0CiAtLS0gYS90ZXN0cy9mdW5jcmV0dmFsLmMKICsrKyBiL3Rlc3RzL2Z1bmNyZXR2YWwuYwogQEAgLTI1LDcgKzI1LDcgQEAKQEAgLTg5Nyw3ICs4OTgsNyBAQAogICNpbmNsdWRlIDxmbm1hdGNoLmg+CiAgCiBkaWZmIC0tZ2l0IGEvdGVzdHMvZnVuY3Njb3Blcy5jIGIvdGVzdHMvZnVuY3Njb3Blcy5jCi1pbmRleCA5YzkwMTg1Li5kYmNjYjg5IDEwMDY0NAoraW5kZXggOWM5MDE4NTguLmRiY2NiODllIDEwMDY0NAogLS0tIGEvdGVzdHMvZnVuY3Njb3Blcy5jCiArKysgYi90ZXN0cy9mdW5jc2NvcGVzLmMKIEBAIC0yNSw3ICsyNSw3IEBACkBAIC05MTAsNyArOTExLDcgQEAKICAjaW5jbHVkZSA8Zm5tYXRjaC5oPgogIAogZGlmZiAtLWdpdCBhL3Rlc3RzL2dldHNyY19kaWUuYyBiL3Rlc3RzL2dldHNyY19kaWUuYwotaW5kZXggMDU1YWVkZS4uOWMzOTRkZCAxMDA2NDQKK2luZGV4IDA1NWFlZGUwLi45YzM5NGRkMCAxMDA2NDQKIC0tLSBhL3Rlc3RzL2dldHNyY19kaWUuYwogKysrIGIvdGVzdHMvZ2V0c3JjX2RpZS5jCiBAQCAtMTksNyArMTksNyBAQApAQCAtOTIzLDcgKzkyNCw3IEBACiAgI2luY2x1ZGUgPGludHR5cGVzLmg+CiAgI2luY2x1ZGUgPGxpYmVsZi5oPgogZGlmZiAtLWdpdCBhL3Rlc3RzL2xpbmUyYWRkci5jIGIvdGVzdHMvbGluZTJhZGRyLmMKLWluZGV4IGUwZDY1ZDMuLjliZjAwMjMgMTAwNjQ0CitpbmRleCBlMGQ2NWQzZC4uOWJmMDAyM2IgMTAwNjQ0CiAtLS0gYS90ZXN0cy9saW5lMmFkZHIuYwogKysrIGIvdGVzdHMvbGluZTJhZGRyLmMKIEBAIC0yNiw3ICsyNiw3IEBACkBAIC05MzYsNyArOTM3LDcgQEAKICAKICBzdGF0aWMgdm9pZAogZGlmZiAtLWdpdCBhL3Rlc3RzL2xvd19oaWdoX3BjLmMgYi90ZXN0cy9sb3dfaGlnaF9wYy5jCi1pbmRleCBkMGY0MzAyLi44ZGE0ZmJkIDEwMDY0NAoraW5kZXggZDBmNDMwMjMuLjhkYTRmYmRmIDEwMDY0NAogLS0tIGEvdGVzdHMvbG93X2hpZ2hfcGMuYwogKysrIGIvdGVzdHMvbG93X2hpZ2hfcGMuYwogQEAgLTI1LDcgKzI1LDcgQEAKQEAgLTk0OSw3ICs5NTAsNyBAQAogICNpbmNsdWRlIDxmbm1hdGNoLmg+CiAgCiBkaWZmIC0tZ2l0IGEvdGVzdHMvbWQ1LXNoYTEtdGVzdC5jIGIvdGVzdHMvbWQ1LXNoYTEtdGVzdC5jCi1pbmRleCBkNTAzNTVlLi4zYzQxZjQwIDEwMDY0NAoraW5kZXggZDUwMzU1ZTkuLjNjNDFmNDBiIDEwMDY0NAogLS0tIGEvdGVzdHMvbWQ1LXNoYTEtdGVzdC5jCiArKysgYi90ZXN0cy9tZDUtc2hhMS10ZXN0LmMKIEBAIC0xOSw3ICsxOSw3IEBACkBAIC05NjIsNyArOTYzLDcgQEAKICAjaW5jbHVkZSAibWQ1LmgiCiAgI2luY2x1ZGUgInNoYTEuaCIKIGRpZmYgLS1naXQgYS90ZXN0cy9yZHdybW1hcC5jIGIvdGVzdHMvcmR3cm1tYXAuYwotaW5kZXggNmYwMjdkZi4uMWNlNWU2ZSAxMDA2NDQKK2luZGV4IDZmMDI3ZGZlLi4xY2U1ZTZlZCAxMDA2NDQKIC0tLSBhL3Rlc3RzL3Jkd3JtbWFwLmMKICsrKyBiL3Rlc3RzL3Jkd3JtbWFwLmMKIEBAIC0xOSw3ICsxOSw3IEBACkBAIC05NzUsNyArOTc2LDcgQEAKICAjaW5jbHVkZSA8ZmNudGwuaD4KICAjaW5jbHVkZSA8dW5pc3RkLmg+CiBkaWZmIC0tZ2l0IGEvdGVzdHMvc2FyaWR4LmMgYi90ZXN0cy9zYXJpZHguYwotaW5kZXggOGE0NTBkOC4uYjM4NzgwMSAxMDA2NDQKK2luZGV4IDhhNDUwZDgyLi5iMzg3ODAxMyAxMDA2NDQKIC0tLSBhL3Rlc3RzL3NhcmlkeC5jCiArKysgYi90ZXN0cy9zYXJpZHguYwogQEAgLTE3LDcgKzE3LDcgQEAKQEAgLTk4OCw3ICs5ODksNyBAQAogICNpbmNsdWRlIDxnZWxmLmg+CiAgI2luY2x1ZGUgPHN0ZGlvLmg+CiBkaWZmIC0tZ2l0IGEvdGVzdHMvc2VjdGlvbmR1bXAuYyBiL3Rlc3RzL3NlY3Rpb25kdW1wLmMKLWluZGV4IDMwMzNmZWQuLjhlODg4ZGIgMTAwNjQ0CitpbmRleCAzMDMzZmVkYy4uOGU4ODhkYjMgMTAwNjQ0CiAtLS0gYS90ZXN0cy9zZWN0aW9uZHVtcC5jCiArKysgYi90ZXN0cy9zZWN0aW9uZHVtcC5jCiBAQCAtMTgsNyArMTgsNyBAQApAQCAtMTAwMSw3ICsxMDAyLDcgQEAKICAjaW5jbHVkZSA8Z2VsZi5oPgogICNpbmNsdWRlIDxpbnR0eXBlcy5oPgogZGlmZiAtLWdpdCBhL3Rlc3RzL3ZhcmxvY3MuYyBiL3Rlc3RzL3ZhcmxvY3MuYwotaW5kZXggYzNmYmE4OS4uZTA0M2VhMiAxMDA2NDQKK2luZGV4IGMzZmJhODllLi5lMDQzZWEyYyAxMDA2NDQKIC0tLSBhL3Rlc3RzL3ZhcmxvY3MuYwogKysrIGIvdGVzdHMvdmFybG9jcy5jCiBAQCAtMjUsNyArMjUsNyBAQApAQCAtMTAxNCw3ICsxMDE1LDcgQEAKICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiBkaWZmIC0tZ2l0IGEvdGVzdHMvdmRzb3N5bXMuYyBiL3Rlc3RzL3Zkc29zeW1zLmMKLWluZGV4IGI4NzZjMTAuLmFmYjI4MjMgMTAwNjQ0CitpbmRleCBiODc2YzEwYi4uYWZiMjgyMzIgMTAwNjQ0CiAtLS0gYS90ZXN0cy92ZHNvc3ltcy5jCiArKysgYi90ZXN0cy92ZHNvc3ltcy5jCiBAQCAtMTgsNyArMTgsNyBAQApAQCAtMTAyNiw2ICsxMDI3LDMgQEAKICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KICAjaW5jbHVkZSA8c3RkaW8uaD4KICAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tLSAKLTEuOC4zLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vZmFsbHRocm91Z2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9mYWxsdGhyb3VnaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI2MjNmOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9mYWxsdGhyb3VnaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUdDQzcgYWRkcyAtV2ltcGxpY2l0LWZhbGx0aHJvdWdoIHRvIHdhcm4gd2hlbiBhIHN3aXRjaCBjYXNlIGZhbGxzIHRocm91Z2gsCi1ob3dldmVyIHRoaXMgY2F1c2VzIHdhcm5pbmdzICh3aGljaCBhcmUgcHJvbW90ZWQgdG8gZXJyb3JzKSB3aXRoIHRoZSBlbGZ1dGlscwotcGF0Y2hlcyBmcm9tIERlYmlhbiBmb3IgbWlwcyBhbmQgcGFyaXNjLCB3aGljaCB1c2UgZmFsbHRocm91Z2gncyBieSBkZXNpZ24uCi0KLUV4cGxpY2l0bHkgbWFyayB0aGUgaW50ZW50aW9uYWwgZmFsbHRocm91Z2ggc3dpdGNoIGNhc2VzIHdpdGggYSBjb21tZW50IHRvCi1kaXNhYmxlIHRoZSB3YXJuaW5ncyB3aGVyZSB0aGUgZmFsbHRocm91Z2ggYmVoYXZpb3VyIGlzIGRlc2lyZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbZGViaWFuXQotU2lnbmVkLW9mZi1ieTogSm9zaHVhIExvY2sgPGpvc2h1YS5nLmxvY2tAaW50ZWwuY29tPgotCi1JbmRleDogZWxmdXRpbHMtMC4xNjgvYmFja2VuZHMvcGFyaXNjX3JldHZhbC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjgub3JpZy9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMKLSsrKyBlbGZ1dGlscy0wLjE2OC9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMKLUBAIC0xNjYsNyArMTY2LDcgQEAgcGFyaXNjX3JldHVybl92YWx1ZV9sb2NhdGlvbl8gKER3YXJmX0RpZQotIAkgIHJldHVybiBubG9jX2ludHJlZ3BhaXI7Ci0gCi0gCS8qIEVsc2UgZmFsbCB0aHJvdWdoLiAgKi8KLS0gICAgICB9Ci0rICAgICAgfSAvLyBmYWxsdGhyb3VnaAotIAotICAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKLUluZGV4OiBlbGZ1dGlscy0wLjE2OC9iYWNrZW5kcy9taXBzX3JldHZhbC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNjgub3JpZy9iYWNrZW5kcy9taXBzX3JldHZhbC5jCi0rKysgZWxmdXRpbHMtMC4xNjgvYmFja2VuZHMvbWlwc19yZXR2YWwuYwotQEAgLTM4Nyw3ICszODcsNyBAQCBtaXBzX3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmCi0gICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgIHJldHVybiBubG9jX2ludHJlZ3BhaXI7Ci0gICAgICAgICAgICAgfQotLSAgICAgICAgfQotKyAgICAgICAgfSAvLyBmYWxsdGhyb3VnaAotIAotICAgICAgIC8qIEZhbGx0aHJvdWdoIHRvIGhhbmRsZSBsYXJnZSB0eXBlcyAqLwotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vaHBwYV9iYWNrZW5kLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9ocHBhX2JhY2tlbmQuZGlmZgppbmRleCA0NGZkYTdmLi41NmY4NTJhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9ocHBhX2JhY2tlbmQuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9ocHBhX2JhY2tlbmQuZGlmZgpAQCAtMSwxMCArMSwxMCBAQAogVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZnJvbSBkZWJpYW5dCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiAKLUluZGV4OiBiL2JhY2tlbmRzL3BhcmlzY19pbml0LmMKK0luZGV4OiBlbGZ1dGlscy0wLjE3MC9iYWNrZW5kcy9wYXJpc2NfaW5pdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCi0rKysgYi9iYWNrZW5kcy9wYXJpc2NfaW5pdC5jCisrKysgZWxmdXRpbHMtMC4xNzAvYmFja2VuZHMvcGFyaXNjX2luaXQuYwogQEAgLTAsMCArMSw3MyBAQAogKy8qIEluaXRpYWxpemF0aW9uIG9mIFBBLVJJU0Mgc3BlY2lmaWMgYmFja2VuZCBsaWJyYXJ5LgogKyAgIENvcHlyaWdodCAoQykgMjAwMiwgMjAwNSwgMjAwNiBSZWQgSGF0LCBJbmMuCkBAIC03OSwxMCArNzksMTAgQEAKICsKICsgIHJldHVybiBNT0RWRVJTSU9OOwogK30KLUluZGV4OiBiL2JhY2tlbmRzL3BhcmlzY19yZWdzLmMKK0luZGV4OiBlbGZ1dGlscy0wLjE3MC9iYWNrZW5kcy9wYXJpc2NfcmVncy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCi0rKysgYi9iYWNrZW5kcy9wYXJpc2NfcmVncy5jCisrKysgZWxmdXRpbHMtMC4xNzAvYmFja2VuZHMvcGFyaXNjX3JlZ3MuYwogQEAgLTAsMCArMSwxNTkgQEAKICsvKiBSZWdpc3RlciBuYW1lcyBhbmQgbnVtYmVycyBmb3IgUEEtUklTQyBEV0FSRi4KICsgICBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgUmVkIEhhdCwgSW5jLgpAQCAtMjQzLDEwICsyNDMsMTAgQEAKICsgIG5hbWVbbmFtZWxlbisrXSA9ICdcMCc7CiArICByZXR1cm4gbmFtZWxlbjsKICt9Ci1JbmRleDogYi9iYWNrZW5kcy9wYXJpc2NfcmVsb2MuZGVmCitJbmRleDogZWxmdXRpbHMtMC4xNzAvYmFja2VuZHMvcGFyaXNjX3JlbG9jLmRlZgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAotKysrIGIvYmFja2VuZHMvcGFyaXNjX3JlbG9jLmRlZgorKysrIGVsZnV0aWxzLTAuMTcwL2JhY2tlbmRzL3BhcmlzY19yZWxvYy5kZWYKIEBAIC0wLDAgKzEsMTI4IEBACiArLyogTGlzdCB0aGUgcmVsb2NhdGlvbiB0eXBlcyBmb3IgUEEtUklTQy4gIC0qLSBDIC0qLQogKyAgIENvcHlyaWdodCAoQykgMjAwNSBSZWQgSGF0LCBJbmMuCkBAIC0zNzYsMTAgKzM3NiwxMCBAQAogK1JFTE9DX1RZUEUgKFRMU19EVFBNT0Q2NCwJRFlOKQogKwogKyNkZWZpbmUgTk9fUkVMQVRJVkVfUkVMT0MgICAgICAgMQotSW5kZXg6IGIvYmFja2VuZHMvcGFyaXNjX3JldHZhbC5jCitJbmRleDogZWxmdXRpbHMtMC4xNzAvYmFja2VuZHMvcGFyaXNjX3JldHZhbC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCi0rKysgYi9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMKKysrKyBlbGZ1dGlscy0wLjE3MC9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMKIEBAIC0wLDAgKzEsMjEzIEBACiArLyogRnVuY3Rpb24gcmV0dXJuIHZhbHVlIGxvY2F0aW9uIGZvciBMaW51eC9QQS1SSVNDIEFCSS4KICsgICBDb3B5cmlnaHQgKEMpIDIwMDUgUmVkIEhhdCwgSW5jLgpAQCAtNTk0LDEwICs1OTQsMTAgQEAKICsgIHJldHVybiBwYXJpc2NfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXyAoZnVuY3R5cGVkaWUsIGxvY3AsIDEpOwogK30KICsKLUluZGV4OiBiL2JhY2tlbmRzL3BhcmlzY19zeW1ib2wuYworSW5kZXg6IGVsZnV0aWxzLTAuMTcwL2JhY2tlbmRzL3BhcmlzY19zeW1ib2wuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAotKysrIGIvYmFja2VuZHMvcGFyaXNjX3N5bWJvbC5jCisrKysgZWxmdXRpbHMtMC4xNzAvYmFja2VuZHMvcGFyaXNjX3N5bWJvbC5jCiBAQCAtMCwwICsxLDExMiBAQAogKy8qIFBBLVJJU0Mgc3BlY2lmaWMgc3ltYm9saWMgbmFtZSBoYW5kbGluZy4KICsgICBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDUgUmVkIEhhdCwgSW5jLgpAQCAtNzExLDEwICs3MTEsMTAgQEAKICsgICAgICByZXR1cm4gRUxGX1RfTlVNOwogKyAgICB9CiArfQotSW5kZXg6IGIvYmFja2VuZHMvbGliZWJsX3BhcmlzYy5oCitJbmRleDogZWxmdXRpbHMtMC4xNzAvYmFja2VuZHMvbGliZWJsX3BhcmlzYy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCi0rKysgYi9iYWNrZW5kcy9saWJlYmxfcGFyaXNjLmgKKysrKyBlbGZ1dGlscy0wLjE3MC9iYWNrZW5kcy9saWJlYmxfcGFyaXNjLmgKIEBAIC0wLDAgKzEsOSBAQAogKyNpZm5kZWYgX0xJQkVCTF9IUFBBX0gKICsjZGVmaW5lIF9MSUJFQkxfSFBQQV9IIDEKQEAgLTcyNSwxMCArNzI1LDEwIEBACiArZXh0ZXJuIGludCBwYXJpc2NfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXzY0KER3YXJmX0RpZSAqLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApOwogKwogKyNlbmRpZgotSW5kZXg6IGIvYmFja2VuZHMvTWFrZWZpbGUuYW0KK0luZGV4OiBlbGZ1dGlscy0wLjE3MC9iYWNrZW5kcy9NYWtlZmlsZS5hbQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvYmFja2VuZHMvTWFrZWZpbGUuYW0KLSsrKyBiL2JhY2tlbmRzL01ha2VmaWxlLmFtCistLS0gZWxmdXRpbHMtMC4xNzAub3JpZy9iYWNrZW5kcy9NYWtlZmlsZS5hbQorKysrIGVsZnV0aWxzLTAuMTcwL2JhY2tlbmRzL01ha2VmaWxlLmFtCiBAQCAtMzMsMTIgKzMzLDEyIEBAIEFNX0NQUEZMQUdTICs9IC1JJCh0b3Bfc3JjZGlyKS9saWJlYmwgLUkKICAKICAKQEAgLTc0NCw3ICs3NDQsNyBAQAogIG5vaW5zdF9MSUJSQVJJRVMgPSAkKGxpYmVibF9waWMpCiAgbm9pbnN0X0RBVEEgPSAkKGxpYmVibF9waWM6X3BpYy5hPS5zbykKICAKLUBAIC0xMjgsNiArMTI4LDkgQEAgZW5kaWYKK0BAIC0xMjQsNiArMTI0LDkgQEAgY3B1X2JwZiA9IC4uL2xpYmNwdS9saWJjcHVfYnBmLmEKICBsaWJlYmxfYnBmX3BpY19hX1NPVVJDRVMgPSAkKGJwZl9TUkNTKQogIGFtX2xpYmVibF9icGZfcGljX2FfT0JKRUNUUyA9ICQoYnBmX1NSQ1M6LmM9Lm9zKQogIApAQCAtNzUyLDEzICs3NTIsMTMgQEAKICtsaWJlYmxfcGFyaXNjX3BpY19hX1NPVVJDRVMgPSAkKHBhcmlzY19TUkNTKQogK2FtX2xpYmVibF9wYXJpc2NfcGljX2FfT0JKRUNUUyA9ICQocGFyaXNjX1NSQ1M6LmM9Lm9zKQogIAotIGxpYmVibF8lLnNvIGxpYmVibF8lLm1hcDogbGliZWJsXyVfcGljLmEgJChsaWJlbGYpICQobGliZHcpCisgbGliZWJsXyUuc28gbGliZWJsXyUubWFwOiBsaWJlYmxfJV9waWMuYSAkKGxpYmVsZikgJChsaWJkdykgJChsaWJldSkKICAJQHJtIC1mICQoQDouc289Lm1hcCkKLUluZGV4OiBiL2xpYmVsZi9lbGYuaAorSW5kZXg6IGVsZnV0aWxzLTAuMTcwL2xpYmVsZi9lbGYuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvbGliZWxmL2VsZi5oCi0rKysgYi9saWJlbGYvZWxmLmgKLUBAIC0yMDU1LDE2ICsyMDU1LDI0IEBAIGVudW0KKy0tLSBlbGZ1dGlscy0wLjE3MC5vcmlnL2xpYmVsZi9lbGYuaAorKysrIGVsZnV0aWxzLTAuMTcwL2xpYmVsZi9lbGYuaAorQEAgLTIwNTYsMTYgKzIwNTYsMjQgQEAgZW51bQogICNkZWZpbmUgUl9QQVJJU0NfUENSRUwxN0YJMTIJLyogMTcgYml0cyBvZiByZWwuIGFkZHJlc3MuICAqLwogICNkZWZpbmUgUl9QQVJJU0NfUENSRUwxNFIJMTQJLyogUmlnaHQgMTQgYml0cyBvZiByZWwuIGFkZHJlc3MuICAqLwogICNkZWZpbmUgUl9QQVJJU0NfRFBSRUwyMUwJMTgJLyogTGVmdCAyMSBiaXRzIG9mIHJlbC4gYWRkcmVzcy4gICovCkBAIC03ODMsNyArNzgzLDcgQEAKICAjZGVmaW5lIFJfUEFSSVNDX0xUT0ZGX0ZQVFIzMgk1NwkvKiAzMiBiaXRzIExULXJlbC4gZnVuY3Rpb24gcG9pbnRlci4gKi8KICAjZGVmaW5lIFJfUEFSSVNDX0xUT0ZGX0ZQVFIyMUwJNTgJLyogTFQtcmVsLiBmY3QgcHRyLCBsZWZ0IDIxIGJpdHMuICovCiAgI2RlZmluZSBSX1BBUklTQ19MVE9GRl9GUFRSMTRSCTYyCS8qIExULXJlbC4gZmN0IHB0ciwgcmlnaHQgMTQgYml0cy4gKi8KLUBAIC0yMDczLDYgKzIwODEsNyBAQCBlbnVtCitAQCAtMjA3NCw2ICsyMDgyLDcgQEAgZW51bQogICNkZWZpbmUgUl9QQVJJU0NfUExBQkVMMjFMCTY2CS8qIExlZnQgMjEgYml0cyBvZiBmZGVzYyBhZGRyZXNzLiAgKi8KICAjZGVmaW5lIFJfUEFSSVNDX1BMQUJFTDE0Ugk3MAkvKiBSaWdodCAxNCBiaXRzIG9mIGZkZXNjIGFkZHJlc3MuICAqLwogICNkZWZpbmUgUl9QQVJJU0NfUENSRUw2NAk3MgkvKiA2NCBiaXRzIFBDLXJlbC4gYWRkcmVzcy4gICovCkBAIC03OTEsNyArNzkxLDcgQEAKICAjZGVmaW5lIFJfUEFSSVNDX1BDUkVMMjJGCTc0CS8qIDIyIGJpdHMgUEMtcmVsLiBhZGRyZXNzLiAgKi8KICAjZGVmaW5lIFJfUEFSSVNDX1BDUkVMMTRXUgk3NQkvKiBQQy1yZWwuIGFkZHJlc3MsIHJpZ2h0IDE0IGJpdHMuICAqLwogICNkZWZpbmUgUl9QQVJJU0NfUENSRUwxNERSCTc2CS8qIFBDIHJlbC4gYWRkcmVzcywgcmlnaHQgMTQgYml0cy4gICovCi1AQCAtMjA5OCw2ICsyMTA3LDggQEAgZW51bQorQEAgLTIwOTksNiArMjEwOCw4IEBAIGVudW0KICAjZGVmaW5lIFJfUEFSSVNDX0xUT0ZGMTZXRgkxMDIJLyogMTYgYml0cyBMVC1yZWwuIGFkZHJlc3MuICAqLwogICNkZWZpbmUgUl9QQVJJU0NfTFRPRkYxNkRGCTEwMwkvKiAxNiBiaXRzIExULXJlbC4gYWRkcmVzcy4gICovCiAgI2RlZmluZSBSX1BBUklTQ19TRUNSRUw2NAkxMDQJLyogNjQgYml0cyBzZWN0aW9uIHJlbC4gYWRkcmVzcy4gICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2V4cGVjdC9leHBlY3QvMDAwMS1leHBlY3QtRml4LXNlZ2ZhdWx0cy1pZi1UY2wtaXMtYnVpbHQtd2l0aC1zdHVicy1hbmQtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9leHBlY3QvZXhwZWN0LzAwMDEtZXhwZWN0LUZpeC1zZWdmYXVsdHMtaWYtVGNsLWlzLWJ1aWx0LXdpdGgtc3R1YnMtYW5kLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWQzMjJkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9leHBlY3QvZXhwZWN0LzAwMDEtZXhwZWN0LUZpeC1zZWdmYXVsdHMtaWYtVGNsLWlzLWJ1aWx0LXdpdGgtc3R1YnMtYW5kLS5wYXRjaApAQCAtMCwwICsxLDkxIEBACitGcm9tIGYwMDQ5YjRiMmVhNTViM2IzYzUzYmY2ZjAyNzU2NTQ4MDFjNzU1ZDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMaSBaaG91IDxsaS56aG91QHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI4IFNlcCAyMDE3IDE1OjU0OjU1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGV4cGVjdDogRml4IHNlZ2ZhdWx0cyBpZiBUY2wgaXMgYnVpbHQgd2l0aCBzdHVicyBhbmQgRXhwZWN0CisgaXMgdXNlZCBkaXJlY3RseSBmcm9tIEMgcHJvZ3JhbQorCitEZXNjcmlwdGlvbjogVGhpcyBkaXJ0eSBoYWNrIGZpeGVzIHNlZ2ZhdWx0cyBpZiBUY2wgaXMgYnVpbHQgd2l0aCBzdHVicworIGFuZCBFeHBlY3QgaXMgdXNlZCBkaXJlY3RseSBmcm9tIEMgcHJvZ3JhbS4KK0J1ZzogaHR0cDovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTU4ODgxNworRXhhbXBsZToKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8dGNsOC41L2V4cGVjdC5oPgorIGludCBtYWluKCkKKyB7CisgICAgIEZJTEUgKnBpcGU7CisgICAgIGNoYXIgKnNvbWVfY29tbWFuZCA9ICJ1bmFtZSI7CisgICAgIGNoYXIgZGF0dW07CisgICAgIHBpcGUgPSBleHBfcG9wZW4oc29tZV9jb21tYW5kKTsKKyAgICAgaWYgKHBpcGUgPT0gTlVMTCkgcmV0dXJuIDE7CisgICAgIHdoaWxlICgoZGF0dW0gPSBnZXRjIChwaXBlKSkgIT0gRU9GKQorIAlwcmludGYoIiVjIixkYXR1bSk7CisgfQorRXhhbXBsZToKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSAiZXhwZWN0LmgiCisgbWFpbigpCisgeworICAgICBpbnQgZmQgPSAwOworICAgICBmZCA9IGV4cF9zcGF3bmwoImVjaG8iLCAiZWNobyIsICJIZWxsbyBVc2VyOiBXaGF0cyB1cD8iLCAoY2hhciopIDApOworICAgICBzd2l0Y2ggKGV4cF9leHBlY3RsKGZkLCBleHBfcmVnZXhwLCAic2VyOiIsIDEsIGV4cF9lbmQpKSB7CisgCWNhc2UgMTogeworIAkgICAgcHJpbnRmKCJHT1Qgc2VyOlxuIik7CisgCSAgICBicmVhazsKKyAJfQorIAlkZWZhdWx0OiB7CisgCSAgICBwcmludGYoIkRFRkFVTFRcbiIpOworIAkgICAgcmV0dXJuIDE7CisgCX0KKyAgICAgfQorICAgICBwcmludGYoIk5vcm1hbCBFeGl0XG4iKTsKKyAgICAgcmV0dXJuIDA7CisgfQorQXV0aG9yOiBTZXJnZWkgR29sb3ZhbiA8c2dvbG92YW5AZGViaWFuLm9yZz4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitUaGlzIHBhdGNoIGlzIGJhY2twb3J0ZWQgZnJvbSBmZWRvcmEgY2hhbmdlcyBmb3IgZXhwZWN0OgoraHR0cDovL3BrZ3MuZmVkb3JhcHJvamVjdC5vcmcvY2dpdC9ycG1zL2V4cGVjdC5naXQvY29tbWl0LworP2g9bWFzdGVyJmlkPWI2NzM3ZWVkNTUwYmU5MzE4MmYyZWQxOTRlODM2YTZjYmJjZjRmYTMKK1NpZ25lZC1vZmYtYnk6IExpIFpob3UgPGxpLnpob3VAd2luZHJpdmVyLmNvbT4KKy0tLQorIGV4cF9jbGliLmMgfCAxMCArKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2V4cF9jbGliLmMgYi9leHBfY2xpYi5jCitpbmRleCAxNzJjMDVlLi4xOTM0MWQ1IDEwMDY0NAorLS0tIGEvZXhwX2NsaWIuYworKysrIGIvZXhwX2NsaWIuYworQEAgLTExNCw3ICsxMTQsMTEgQEAgZXh0ZXJuIHVuc2lnbmVkIGxvbmcJc3RydG91bCBfQU5TSV9BUkdTXygoQ09OU1QgY2hhciAqc3RyaW5nLAorICNpbmNsdWRlIDxzdGRsaWIuaD4JCS8qIGZvciBtYWxsb2MgKi8KKyAjZW5kaWYKKyAKKy0jaW5jbHVkZSA8dGNsLmg+CisrI2RlZmluZSBja2FsbG9jKHgpIFRjbF9BbGxvYyh4KQorKyNkZWZpbmUgY2tmcmVlKHgpIFRjbF9GcmVlKHgpCisrZXh0ZXJuIGNoYXIgKlRjbF9FcnJub01zZyhpbnQgZXJyKTsKKytleHRlcm4gY2hhciAqVGNsX0FsbG9jKHVuc2lnbmVkIGludCBzaXplKTsKKytleHRlcm4gdm9pZCBUY2xfRnJlZShjaGFyICpwdHIpOworICNpbmNsdWRlICJleHBlY3QuaCIKKyAjZGVmaW5lIFRjbFJlZ0Vycm9yIGV4cF9UY2xSZWdFcnJvcgorIAorQEAgLTM4OSw3ICszOTMsNyBAQCBjaGFyICpleHA7CisgCQlGQUlMKCJyZWdleHAgdG9vIGJpZyIpOworIAorIAkvKiBBbGxvY2F0ZSBzcGFjZS4gKi8KKy0JciA9IChyZWdleHAgKilja2FsbG9jKHNpemVvZihyZWdleHApICsgKHVuc2lnbmVkKXJjc3RhdGUtPnJlZ3NpemUpOworKwlyID0gKHJlZ2V4cCAqKW1hbGxvYyhzaXplb2YocmVnZXhwKSArICh1bnNpZ25lZClyY3N0YXRlLT5yZWdzaXplKTsKKyAJaWYgKHIgPT0gTlVMTCkKKyAJCUZBSUwoIm91dCBvZiBzcGFjZSIpOworIAorQEAgLTM5OSw3ICs0MDMsNyBAQCBjaGFyICpleHA7CisgCXJjc3RhdGUtPnJlZ2NvZGUgPSByLT5wcm9ncmFtOworIAlyZWdjKE1BR0lDLCByY3N0YXRlKTsKKyAJaWYgKHJlZygwLCAmZmxhZ3MsIHJjc3RhdGUpID09IE5VTEwpIHsKKy0JICBja2ZyZWUgKChjaGFyKikgcik7CisrCSAgZnJlZSgoY2hhciopIHIpOworIAkgIHJldHVybihOVUxMKTsKKyAJfQorIAorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2V4cGVjdC9leHBlY3RfNS40NS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9leHBlY3QvZXhwZWN0XzUuNDUuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmVhY2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9leHBlY3QvZXhwZWN0XzUuNDUuNC5iYgpAQCAtMCwwICsxLDc2IEBACitTVU1NQVJZID0gInRvb2wgZm9yIGF1dG9tYXRpbmcgaW50ZXJhY3RpdmUgYXBwbGljYXRpb25zIGFjY29yZGluZyB0byBhIHNjcmlwdCIKK0RFU0NSSVBUSU9OID0gIkV4cGVjdCBpcyBhIHRvb2wgZm9yIGF1dG9tYXRpbmcgaW50ZXJhY3RpdmUgYXBwbGljYXRpb25zIGFjY29yZGluZyB0byBhIHNjcmlwdC4gXAorRm9sbG93aW5nIHRoZSBzY3JpcHQsIEV4cGVjdCBrbm93cyB3aGF0IGNhbiBiZSBleHBlY3RlZCBmcm9tIGEgcHJvZ3JhbSBhbmQgd2hhdCBcCit0aGUgY29ycmVjdCByZXNwb25zZSBzaG91bGQgYmUuIEV4cGVjdCBpcyBhbHNvIHVzZWZ1bCBmb3IgdGVzdGluZyB0aGVzZSBzYW1lIFwKK2FwcGxpY2F0aW9ucy4gQW5kIGJ5IGFkZGluZyBUaywgeW91IGNhbiBhbHNvIHdyYXAgaW50ZXJhY3RpdmUgYXBwbGljYXRpb25zIGluIFwKK1gxMSBHVUlzLiBBbiBpbnRlcnByZXRlZCBsYW5ndWFnZSBwcm92aWRlcyBicmFuY2hpbmcgYW5kIGhpZ2gtbGV2ZWwgY29udHJvbCBcCitzdHJ1Y3R1cmVzIHRvIGRpcmVjdCB0aGUgZGlhbG9ndWUuIEluIGFkZGl0aW9uLCB0aGUgdXNlciBjYW4gdGFrZSBjb250cm9sIGFuZCBcCitpbnRlcmFjdCBkaXJlY3RseSB3aGVuIGRlc2lyZWQsIGFmdGVyd2FyZCByZXR1cm5pbmcgY29udHJvbCB0byB0aGUgc2NyaXB0LiBcCisiCitIT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2V4cGVjdC8iCitMSUNFTlNFID0gIlBEIgorU0VDVElPTiA9ICJkZXZlbCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbGljZW5zZS50ZXJtczttZDU9ZmJmMmRlN2U5MTAyNTA1YjE0MzlkYjA2ZmMzNmNlNWMiCisKK0RFUEVORFMgKz0gInRjbCIKK1JERVBFTkRTXyR7UE59ID0gInRjbCIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcworCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9leHBlY3QvRXhwZWN0LyR7UFZ9LyR7QlBOfSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5pbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXRjbC5tNC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMS1leGFtcGxlLXNoZWJhbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1leHBlY3QtaW5zdGFsbC1zY3JpcHRzLXdpdGhvdXQtdXNpbmctdGhlLWZpeGxpbmUxLXRjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVzb2x2ZS1zdHJpbmctZm9ybWF0dGluZy1pc3N1ZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1leHBlY3QtRml4LXNlZ2ZhdWx0cy1pZi1UY2wtaXMtYnVpbHQtd2l0aC1zdHVicy1hbmQtLnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMDBmY2U4ZGUxNTg0MjJmNWNjZDI2NjY1MTIzMjliZDIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDlhN2RhODNiMGJkZDlmNDZkMDRhMDRkZWVjMTljNzc2N2JiOWEzMjNlNDBjNDc4MWY4OWNhZjc2MGI5MmMzNCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZXhwZWN0L2ZpbGVzL0V4cGVjdC8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvRXhwZWN0Lyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0ke1BWfSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9CisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke0R9JHtsaWJkaXJ9L2V4cGVjdCR7UFZ9L2xpYmV4cGVjdCouc28gICAke0R9JHtsaWJkaXJ9LworICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9maXhsaW5lMSAgICAgICAgICAgJHtEfSR7bGliZGlyfS9leHBlY3Qke1BWfS8KKyAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vZXhhbXBsZS8qICAgICAgICAgICR7RH0ke2xpYmRpcn0vZXhwZWN0JHtQVn0vCisgICAgICAgIHJtICR7RH0ke2xpYmRpcn0vZXhwZWN0JHtQVn0vbGliZXhwZWN0Ki5zbworICAgICAgICBzZWQgLWUgJ3N8JGRpcnwke2xpYmRpcn18JyAtaSAke0R9JHtsaWJkaXJ9L2V4cGVjdCR7UFZ9L3BrZ0luZGV4LnRjbAorfQorCisjIEFwcGFyZW50bHkgdGhlIHB1YmxpYyBUY2wgaGVhZGVycyBhcmUgb25seSBpbiAvdXNyL2luY2x1ZGUvdGNsOC42CisjIHdoZW4gYnVpbGRpbmcgZm9yIHRoZSB0YXJnZXQuCitUQ0xfSU5DTFVERV9QQVRIID0gIiIKK1RDTF9JTkNMVURFX1BBVEhfY2xhc3MtdGFyZ2V0ID0gIi0td2l0aC10Y2xpbmNsdWRlPSR7U1RBR0lOR19JTkNESVJ9L3RjbDguNiIKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGgtdGNsPSR7U1RBR0lOR19MSUJESVJ9IFwKKyAgICAgICAgICAgICAgICAgLS1lbmFibGUtc2hhcmVkIFwKKyAgICAgICAgICAgICAgICAgLS1lbmFibGUtdGhyZWFkcyBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aCBcCisgICAgICAgICAgICAgICAgICR7VENMX0lOQ0xVREVfUEFUSH0gXAorICAgICAgICAgICAgICAgICIKK0VYVFJBX09FTUFLRV9pbnN0YWxsID0gIiAnU0NSSVBUUz0nICIKKworQUxURVJOQVRJVkVfJHtQTn0gID0gIm1rcGFzc3dkIgorQUxURVJOQVRJVkVfTElOS19OQU1FW21rcGFzc3dkXSA9ICIke2JpbmRpcn0vbWtwYXNzd2QiCisjIFVzZSBsb3dlciBwcmlvcml0eSB0aGFuIGJ1c3lib3gncyBta3Bhc3N3ZCAoY3JlYXRlZCB3aGVuIGJ1aWx0IHdpdGggQ09ORklHX0NSWVBUUFcpCitBTFRFUk5BVElWRV9QUklPUklUWVtta3Bhc3N3ZF0gPSAiNDAiCisKK0ZJTEVTXyR7UE59LWRldiA9ICIke2xpYmRpcl9uYXRpdmV9L2V4cGVjdCR7UFZ9L2xpYmV4cGVjdCouc28gXAorICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vZXhwZWN0LmggXAorICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vZXhwZWN0X3RjbC5oIFwKKyAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2V4cGVjdF9jb21tLmggXAorICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vdGNsZGJnLmggXAorICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vKi5oIFwKKyAgICAgICAgICAgICAgICAgICIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9saWJleHBlY3Qke1BWfS5zbyBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2V4cGVjdCR7UFZ9LyogXAorICAgICAgICAgICAgICAgIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2V4cGVjdC9leHBlY3RfNS40NS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZXhwZWN0L2V4cGVjdF81LjQ1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmQyNGU4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZXhwZWN0L2V4cGVjdF81LjQ1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotU1VNTUFSWSA9ICJ0b29sIGZvciBhdXRvbWF0aW5nIGludGVyYWN0aXZlIGFwcGxpY2F0aW9ucyBhY2NvcmRpbmcgdG8gYSBzY3JpcHQiCi1ERVNDUklQVElPTiA9ICJFeHBlY3QgaXMgYSB0b29sIGZvciBhdXRvbWF0aW5nIGludGVyYWN0aXZlIGFwcGxpY2F0aW9ucyBhY2NvcmRpbmcgdG8gYSBzY3JpcHQuIFwKLUZvbGxvd2luZyB0aGUgc2NyaXB0LCBFeHBlY3Qga25vd3Mgd2hhdCBjYW4gYmUgZXhwZWN0ZWQgZnJvbSBhIHByb2dyYW0gYW5kIHdoYXQgXAotdGhlIGNvcnJlY3QgcmVzcG9uc2Ugc2hvdWxkIGJlLiBFeHBlY3QgaXMgYWxzbyB1c2VmdWwgZm9yIHRlc3RpbmcgdGhlc2Ugc2FtZSBcCi1hcHBsaWNhdGlvbnMuIEFuZCBieSBhZGRpbmcgVGssIHlvdSBjYW4gYWxzbyB3cmFwIGludGVyYWN0aXZlIGFwcGxpY2F0aW9ucyBpbiBcCi1YMTEgR1VJcy4gQW4gaW50ZXJwcmV0ZWQgbGFuZ3VhZ2UgcHJvdmlkZXMgYnJhbmNoaW5nIGFuZCBoaWdoLWxldmVsIGNvbnRyb2wgXAotc3RydWN0dXJlcyB0byBkaXJlY3QgdGhlIGRpYWxvZ3VlLiBJbiBhZGRpdGlvbiwgdGhlIHVzZXIgY2FuIHRha2UgY29udHJvbCBhbmQgXAotaW50ZXJhY3QgZGlyZWN0bHkgd2hlbiBkZXNpcmVkLCBhZnRlcndhcmQgcmV0dXJuaW5nIGNvbnRyb2wgdG8gdGhlIHNjcmlwdC4gXAotIgotSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9leHBlY3QvIgotTElDRU5TRSA9ICJQRCIKLVNFQ1RJT04gPSAiZGV2ZWwiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2xpY2Vuc2UudGVybXM7bWQ1PWZiZjJkZTdlOTEwMjUwNWIxNDM5ZGIwNmZjMzZjZTVjIgotCi1ERVBFTkRTICs9ICJ0Y2wiCi1SREVQRU5EU18ke1BOfSA9ICJ0Y2wiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotUFIgPSAicjEiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2V4cGVjdC9FeHBlY3QvJHtQVn0vJHtCUE59JHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItdGNsLm00LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAxLWV4YW1wbGUtc2hlYmFuZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWV4cGVjdC1pbnN0YWxsLXNjcmlwdHMtd2l0aG91dC11c2luZy10aGUtZml4bGluZTEtdGMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZXNvbHZlLXN0cmluZy1mb3JtYXR0aW5nLWlzc3Vlcy5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjQ0ZTFhNGY0Yzg3N2U5ZGRjNWE1NDJkZmE3ZWNjOTJiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImIyOGRjYTkwNDI4YTNiMzBlNjUwNTI1Y2RjMTYyNTVkNzZiYjZjY2Q2NWQ0NDhiZTUzZTYyMGQ5NWQ1Y2MwNDAiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2V4cGVjdC9maWxlcy9FeHBlY3QvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL0V4cGVjdC8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59JHtQVn0iCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfQotICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtEfSR7bGliZGlyfS9leHBlY3Qke1BWfS9saWJleHBlY3QqLnNvICAgJHtEfSR7bGliZGlyfS8KLSAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vZml4bGluZTEgICAgICAgICAgICR7RH0ke2xpYmRpcn0vZXhwZWN0JHtQVn0vCi0gICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2V4YW1wbGUvKiAgICAgICAgICAke0R9JHtsaWJkaXJ9L2V4cGVjdCR7UFZ9LwotICAgICAgICBybSAke0R9JHtsaWJkaXJ9L2V4cGVjdCR7UFZ9L2xpYmV4cGVjdCouc28KLSAgICAgICAgc2VkIC1lICdzfCRkaXJ8JHtsaWJkaXJ9fCcgLWkgJHtEfSR7bGliZGlyfS9leHBlY3Qke1BWfS9wa2dJbmRleC50Y2wKLX0KLQotIyBBcHBhcmVudGx5IHRoZSBwdWJsaWMgVGNsIGhlYWRlcnMgYXJlIG9ubHkgaW4gL3Vzci9pbmNsdWRlL3RjbDguNgotIyB3aGVuIGJ1aWxkaW5nIGZvciB0aGUgdGFyZ2V0LgotVENMX0lOQ0xVREVfUEFUSCA9ICIiCi1UQ0xfSU5DTFVERV9QQVRIX2NsYXNzLXRhcmdldCA9ICItLXdpdGgtdGNsaW5jbHVkZT0ke1NUQUdJTkdfSU5DRElSfS90Y2w4LjYiCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLXRjbD0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLXNoYXJlZCBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLXRocmVhZHMgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtcnBhdGggXAotICAgICAgICAgICAgICAgICAke1RDTF9JTkNMVURFX1BBVEh9IFwKLSAgICAgICAgICAgICAgICAiCi1FWFRSQV9PRU1BS0VfaW5zdGFsbCA9ICIgJ1NDUklQVFM9JyAiCi0KLUFMVEVSTkFUSVZFXyR7UE59ICA9ICJta3Bhc3N3ZCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtta3Bhc3N3ZF0gPSAiJHtiaW5kaXJ9L21rcGFzc3dkIgotIyBVc2UgbG93ZXIgcHJpb3JpdHkgdGhhbiBidXN5Ym94J3MgbWtwYXNzd2QgKGNyZWF0ZWQgd2hlbiBidWlsdCB3aXRoIENPTkZJR19DUllQVFBXKQotQUxURVJOQVRJVkVfUFJJT1JJVFlbbWtwYXNzd2RdID0gIjQwIgotCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtsaWJkaXJfbmF0aXZlfS9leHBlY3Qke1BWfS9saWJleHBlY3QqLnNvIFwKLSAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2V4cGVjdC5oIFwKLSAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2V4cGVjdF90Y2wuaCBcCi0gICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9leHBlY3RfY29tbS5oIFwKLSAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L3RjbGRiZy5oIFwKLSAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9LyouaCBcCi0gICAgICAgICAgICAgICAgICAiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbGliZXhwZWN0JHtQVn0uc28gXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS9leHBlY3Qke1BWfS8qIFwKLSAgICAgICAgICAgICAgICIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGUvZGViaWFuLTc0MjI2Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlL2RlYmlhbi03NDIyNjIucGF0Y2gKaW5kZXggZDMxYWM1OS4uMzE5ZjlkYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGUvZGViaWFuLTc0MjI2Mi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZS9kZWJpYW4tNzQyMjYyLnBhdGNoCkBAIC0xNCwxNyArMTQsMTQgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAogZGlmZiAtLWdpdCBhL21hZ2ljL01hZ2Rpci9jb21tYW5kcyBiL21hZ2ljL01hZ2Rpci9jb21tYW5kcwotaW5kZXggMWE0NmVmZC4uMjU1YzA0YiAxMDA2NDQKK2luZGV4IGY2YWQxYzguLmY3OWU3ZGQgMTAwNjQ0CiAtLS0gYS9tYWdpYy9NYWdkaXIvY29tbWFuZHMKICsrKyBiL21hZ2ljL01hZ2Rpci9jb21tYW5kcwogQEAgLTU3LDYgKzU3LDcgQEAKICAwCXN0cmluZy93dAkjIVwgL3Vzci9iaW4vYXdrCWF3ayBzY3JpcHQgdGV4dCBleGVjdXRhYmxlCiAgITptaW1lCXRleHQveC1hd2sKLSAwCXJlZ2V4LzQwOTYJPV5bQS1aYS16MC05X117MCwxMDB9QkVHSU5bQS1aYS16MC05X117MCwxMDB9W3tdCWF3ayBvciBwZXJsIHNjcmlwdCB0ZXh0CisgMAlyZWdleC80MDk2CT1eW1wwNDBcdFxmXHJcbl17MCwxMDB9QkVHSU5bXDA0MFx0XGZcclxuXXswLDEwMH1be10JYXdrIG9yIHBlcmwgc2NyaXB0IHRleHQKICshOnN0cmVuZ3RoIC0gMTIKICAKICAjIEFUJlQgQmVsbCBMYWJzJyBQbGFuIDkgc2hlbGwKICAwCXN0cmluZy93dAkjIVwgL2Jpbi9yYwlQbGFuIDkgcmMgc2hlbGwgc2NyaXB0IHRleHQgZXhlY3V0YWJsZQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjMxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGVfNS4zMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWIxZjUwMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjMxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotU1VNTUFSWSA9ICJGaWxlIGNsYXNzaWZpY2F0aW9uIHRvb2wiCi1ERVNDUklQVElPTiA9ICJGaWxlIGF0dGVtcHRzIHRvIGNsYXNzaWZ5IGZpbGVzIGRlcGVuZGluZyBcCi1vbiB0aGVpciBjb250ZW50cyBhbmQgcHJpbnRzIGEgZGVzY3JpcHRpb24gaWYgYSBtYXRjaCBpcyBmb3VuZC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmRhcndpbnN5cy5jb20vZmlsZS8iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLSMgdHdvIGNsYXVzZSBCU0QKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORztiZWdpbmxpbmU9MjttZDU9NmE3MzgyODcyZWRiNjhkMzNlMWE5Mzk4YjZlMDMxODgiCi0KLURFUEVORFMgPSAiemxpYiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gInpsaWItbmF0aXZlIgotCi0jIEJsYWNrbGlzdCBhIGJvZ3VzIHRhZyBpbiB1cHN0cmVhbSBjaGVjawotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiRklMRSg/UDxwdmVyPig/ITZfMjMpLispIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZmlsZS9maWxlLmdpdCBcCi0gICAgICAgIGZpbGU6Ly9kZWJpYW4tNzQyMjYyLnBhdGNoIFwKLSAgICAgICAgZmlsZTovLzAwMDEtQWRkLVAtcHJvbXB0LWludG8tVXNhZ2UtaW5mby5wYXRjaCBcCi0gICAgICAgICIKLQotU1JDUkVWID0gIjcwYzVmMTUwNjBjN2FkODExNTAxNzdkZTgzYTNlNjQ1MDBhNTRjOWYiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scwotCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICItZSBGSUxFX0NPTVBJTEU9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2ZpbGUtbmF0aXZlL2ZpbGUiCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICItZSBGSUxFX0NPTVBJTEU9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2ZpbGUtbmF0aXZlL2ZpbGUiCi0KLUNGTEFHU19hcHBlbmQgPSAiIC1zdGQ9Yzk5IgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9taXNjLyoubWdjIgotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0JY3JlYXRlX2NtZGxpbmVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9maWxlIFwKLQkJLS1tYWdpYy1maWxlICR7ZGF0YWRpcn0vbWlzYy9tYWdpYy5tZ2MKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotCWNyZWF0ZV9jbWRsaW5lX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZmlsZSBcCi0JCS0tbWFnaWMtZmlsZSAke2RhdGFkaXJ9L21pc2MvbWFnaWMubWdjCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLVBST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgotIyBEb24ndCB1c2UgTkFUSVZFX1BBQ0tBR0VfUEFUSF9TVUZGSVggYXMgdGhhdCBoaWRlcyBsaWJtYWdpYyBmcm9tIGFueW9uZSB3aG8KLSMgZGVwZW5kcyBvbiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZS4KLWJpbmRpcl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIi9maWxlLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjMyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlMTU5MjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjMyLmJiCkBAIC0wLDAgKzEsNDggQEAKK1NVTU1BUlkgPSAiRmlsZSBjbGFzc2lmaWNhdGlvbiB0b29sIgorREVTQ1JJUFRJT04gPSAiRmlsZSBhdHRlbXB0cyB0byBjbGFzc2lmeSBmaWxlcyBkZXBlbmRpbmcgXAorb24gdGhlaXIgY29udGVudHMgYW5kIHByaW50cyBhIGRlc2NyaXB0aW9uIGlmIGEgbWF0Y2ggaXMgZm91bmQuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5kYXJ3aW5zeXMuY29tL2ZpbGUvIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCisjIHR3byBjbGF1c2UgQlNECitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7YmVnaW5saW5lPTI7bWQ1PTZhNzM4Mjg3MmVkYjY4ZDMzZTFhOTM5OGI2ZTAzMTg4IgorCitERVBFTkRTID0gInpsaWIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJ6bGliLW5hdGl2ZSIKKworIyBCbGFja2xpc3QgYSBib2d1cyB0YWcgaW4gdXBzdHJlYW0gY2hlY2sKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIkZJTEUoP1A8cHZlcj4oPyE2XzIzKS4rKSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ZpbGUvZmlsZS5naXQgXAorICAgICAgICBmaWxlOi8vZGViaWFuLTc0MjI2Mi5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1QLXByb21wdC1pbnRvLVVzYWdlLWluZm8ucGF0Y2ggXAorICAgICAgICAiCisKK1NSQ1JFViA9ICJkNDc0ZTM1NTEzOTQwZGJjYTAzOWI1MTBiNGRlNzA1YjQ0ZjViZDljIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiLWUgRklMRV9DT01QSUxFPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9maWxlLW5hdGl2ZS9maWxlIgorRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiLWUgRklMRV9DT01QSUxFPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9maWxlLW5hdGl2ZS9maWxlIgorCitDRkxBR1NfYXBwZW5kID0gIiAtc3RkPWM5OSIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vbWlzYy8qLm1nYyIKKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWNyZWF0ZV9jbWRsaW5lX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZmlsZSBcCisJCS0tbWFnaWMtZmlsZSAke2RhdGFkaXJ9L21pc2MvbWFnaWMubWdjCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKwljcmVhdGVfY21kbGluZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2ZpbGUgXAorCQktLW1hZ2ljLWZpbGUgJHtkYXRhZGlyfS9taXNjL21hZ2ljLm1nYworfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCitQUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKKyMgRG9uJ3QgdXNlIE5BVElWRV9QQUNLQUdFX1BBVEhfU1VGRklYIGFzIHRoYXQgaGlkZXMgbGlibWFnaWMgZnJvbSBhbnlvbmUgd2hvCisjIGRlcGVuZHMgb24gZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUuCitiaW5kaXJfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIvZmlsZS1uYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC9kb19ub3RfY3JlYXRlX3BkZl9kb2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC9kb19ub3RfY3JlYXRlX3BkZl9kb2MucGF0Y2gKaW5kZXggMDMyODMzYS4uMjk3OTJlZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXgvZG9fbm90X2NyZWF0ZV9wZGZfZG9jLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4L2RvX25vdF9jcmVhdGVfcGRmX2RvYy5wYXRjaApAQCAtMiwxMSArMiwxMSBAQAogCiBTaWduZWQtb2ZmLWJ5OiBMYXVyZW50aXUgUGFsY3UgPGxhdXJlbnRpdS5wYWxjdUBpbnRlbC5jb20+CiAKLUluZGV4OiBmbGV4LTIuNS4zNy9kb2MvTWFrZWZpbGUuYW0KK0luZGV4OiBmbGV4LTIuNi4wL2RvYy9NYWtlZmlsZS5hbQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZsZXgtMi41LjM3Lm9yaWcvZG9jL01ha2VmaWxlLmFtCTIwMTItMDctMjEgMDQ6MTg6MjcuMDAwMDAwMDAwICswMzAwCi0rKysgZmxleC0yLjUuMzcvZG9jL01ha2VmaWxlLmFtCTIwMTMtMDctMzAgMTc6NTc6MDkuODM0ODM0NTMxICswMzAwCi1AQCAtMiw3ICsyLDcgQEAKKy0tLSBmbGV4LTIuNi4wLm9yaWcvZG9jL01ha2VmaWxlLmFtCisrKysgZmxleC0yLjYuMC9kb2MvTWFrZWZpbGUuYW0KK0BAIC0yLDcgKzIsNyBAQCBoZWxwMm1hbiA9IEBIRUxQMk1BTkAKICAKICBpbmZvX1RFWElORk9TID0JZmxleC50ZXhpCiAgZGlzdF9tYW5fTUFOUyA9IGZsZXguMQpAQCAtMTQsNCArMTQsNCBAQAogK0VYVFJBX0RJU1Q9IGZsZXgucGRmCiAgCiAgQ0xFQU5GSUxFUyA9IFwKLSAJZmxleC5oa3MgXAorIAlmbGV4LmF1eCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleF8yLjYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4XzIuNi4wLmJiCmluZGV4IGE5MDZmZTguLmI4OWI3NTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4XzIuNi4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4XzIuNi4wLmJiCkBAIC00Myw2ICs0MywxMCBAQAogCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2ZsZXggTTQ9JHtNNH0KIH0KIAorUEFDS0FHRVMgPSsgIiR7UE59LWxpYmZsIgorCitGSUxFU18ke1BOfS1saWJmbCA9ICIke2xpYmRpcn0vbGliZmwuc28uKiAke2xpYmRpcn0vbGliZmxfcGljLnNvLioiCisKIFJERVBFTkRTXyR7UE59ICs9ICJtNCIKIFJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJiYXNoIGdhd2siCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyZWFiZWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotcmVxdWlyZSBnY2MtY29tbW9uLmluYwotCi0jIFRoaXJkIGRpZ2l0IGluIFBWIHNob3VsZCBiZSBpbmNyZW1lbnRlZCBhZnRlciBhIG1pbm9yIHJlbGVhc2UKLQotUFYgPSAiNi40LjAiCi0KLSMgQklOViBzaG91bGQgYmUgaW5jcmVtZW50ZWQgdG8gYSByZXZpc2lvbiBhZnRlciBhIG1pbm9yIGdjYyByZWxlYXNlCi0KLUJJTlYgPSAiNi40LjAiCi0KLUZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L2djYy02LjQ6JHtGSUxFX0RJUk5BTUV9L2djYy02LjQvYmFja3BvcnQ6IgotCi1ERVBFTkRTID0rICJtcGZyIGdtcCBsaWJtcGMgemxpYiIKLU5BVElWRURFUFMgPSAibXBmci1uYXRpdmUgZ21wLW5hdGl2ZSBsaWJtcGMtbmF0aXZlIHpsaWItbmF0aXZlIgotCi1MSUNFTlNFID0gIkdQTC0zLjAtd2l0aC1HQ0MtZXhjZXB0aW9uICYgR1BMdjMiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCi0gICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgZmlsZTovL0NPUFlJTkczLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYgXAotICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAotICAgIGZpbGU6Ly9DT1BZSU5HLlJVTlRJTUU7bWQ1PWZlNjBkODcwNDg1NjdkNGZlOGM4YTBlZDI0NDhiY2M4IFwKLSIKLQotCi1CQVNFVVJJID89ICIke0dOVV9NSVJST1J9L2djYy9nY2MtJHtQVn0vZ2NjLSR7UFZ9LnRhci54eiIKLSNTUkNSRVYgPSAiYmQ5YTgyNmQ1NDQ4ZGIxMWQyOWQyZWM1ODg0ZTdlNjc5MDY2ZjE0MCIKLSNCQVNFVVJJID89ICJnaXQ6Ly9naXRodWIuY29tL2djYy1taXJyb3IvZ2NjO2JyYW5jaD1nY2MtNi1icmFuY2g7cHJvdG9jb2w9Z2l0IgotI0JBU0VVUkkgPz0gImZ0cDovL3NvdXJjZXdhcmUub3JnL3B1Yi9nY2Mvc25hcHNob3RzLzYuMi4wLVJDLTIwMTYwODE1L2djYy02LjIuMC1SQy0yMDE2MDgxNS50YXIuYnoyIgotCi1TUkNfVVJJID0gIlwKLSAgICAgICAgICAgJHtCQVNFVVJJfSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1taXNzaW5nLWV4ZWNpbmZvX2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOS1jOTktc25wcmludGYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDExLWdjYy1wb2lzb24tZGlyLWV4dGVuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEyLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTMtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNC1vcHRpb25hbC1saWJzdGRjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTUtZ2NjLWRpc2FibGUtTUFTS19SRUxBWF9QSUNfQ0FMTFMtYml0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTgtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOS1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIwLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMS1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjItZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjMtRGlzYWJsZS1zZHQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNC1saWJ0b29sLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjUtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI2LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNy1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjgtZXhwb3J0LUNQUC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI5LUVuYWJsZS1TUEUtQWx0aVZlYy1nZW5lcmF0aW9uLW9uLXBvd2VwYy1saW51eC10YXJnZXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMC1EaXNhYmxlLXRoZS1NVUxUSUxJQl9PU0RJUk5BTUVTLWFuZC1vdGhlci1tdWx0aWxpYi1vLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzEtRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMi1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzMtRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM0LVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNS1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNi1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNy1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzgtU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM5LUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDAtbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0MS1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDItZ2NjLWxpYmNwcC1zdXBwb3J0LWZmaWxlLXByZWZpeC1tYXAtb2xkLW5ldy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQzLVJldXNlLWZkZWJ1Zy1wcmVmaXgtbWFwLXRvLXJlcGxhY2UtZmZpbGUtcHJlZml4LW1hcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQ0LWdjYy1maW5hbC5jLWZkZWJ1Zy1wcmVmaXgtbWFwLXN1cHBvcnQtdG8tcmVtYXAtc291cmMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0NS1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQ2LUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQ3LWxpYmdjY19zLVVzZS1hbGlhcy1mb3ItX19jcHVfaW5kaWNhdG9yX2luaXQtaW5zdGVhZC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0OC1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA1NF9hbGxfbm9waWUtYWxsLWZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNTUtdW53aW5kX2gtZ2xpYmMyNi5wYXRjaCBcCi0gICAgICAgICAgICR7QkFDS1BPUlRTfSBcCi0iCi1CQUNLUE9SVFMgPSAiXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtNjEzMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDU3LUFSTS1QUi04MjQ0NS1zdXBwcmVzcy0zMi1iaXQtYWxpZ25lZC1sZHJkLXN0cmQtcGVlcGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1lbmFibGUtRkxfTFBBRS1mbGFnLWZvci1hcm12N3ZlLWNvcmVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaTM4Ni1Nb3ZlLXN0cnVjdC1peDg2X2ZyYW1lLXRvLW1hY2hpbmVfZnVuY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1pMzg2LVVzZS1yZWZlcmVuY2Utb2Ytc3RydWN0LWl4ODZfZnJhbWUtdG8tYXZvaWQtY29wLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtaTM4Ni1Vc2UtY29uc3QtcmVmZXJlbmNlLW9mLXN0cnVjdC1peDg2X2ZyYW1lLXRvLWF2by5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LXg4Ni1BZGQtbWluZGlyZWN0LWJyYW5jaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LXg4Ni1BZGQtbWZ1bmN0aW9uLXJldHVybi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LXg4Ni1BZGQtbWluZGlyZWN0LWJyYW5jaC1yZWdpc3Rlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LXg4Ni1BZGQtVi1yZWdpc3Rlci1vcGVyYW5kLW1vZGlmaWVyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDgteDg2LURpc2FsbG93LW1pbmRpcmVjdC1icmFuY2gtbWZ1bmN0aW9uLXJldHVybi13aXRoLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA5LVVzZS1JTlZBTElEX1JFR05VTS1pbi1pbmRpcmVjdC10aHVuay1wcm9jZXNzaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtaTM4Ni1QYXNzLUlOVkFMSURfUkVHTlVNLWFzLWludmFsaWQtcmVnaXN0ZXItbnVtYmVyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtaTM4Ni1VcGRhdGUtbWZ1bmN0aW9uLXJldHVybi1mb3ItcmV0dXJuLXdpdGgtcG9wLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTItaTM4Ni1BZGQtVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEzLWdjYy1zYW5pdGl6ZXJzLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjExYmE1MWEwY2ZiODQ3MTkyN2YzODdjODg5NWZlMjMyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg1MGJmMjFlYWZkZmU1Y2Q1ZjY4MjcxNDgxODRjMDhjNGEwODUyYTM3Y2NmMzZjZTY5ODU1MzM0ZDJjOTE0ZDQiCi0KLVMgPSAiJHtUTVBESVJ9L3dvcmstc2hhcmVkL2djYy0ke1BWfS0ke1BSfS9nY2MtJHtQVn0iCi0jUyA9ICIke1RNUERJUn0vd29yay1zaGFyZWQvZ2NjLSR7UFZ9LSR7UFJ9L2dpdCIKLUIgPSAiJHtXT1JLRElSfS9nY2MtJHtQVn0vYnVpbGQuJHtIT1NUX1NZU30uJHtUQVJHRVRfU1lTfSIKLQotIyBMYW5ndWFnZSBPdmVycmlkZXMKLUZPUlRSQU4gPSAiIgotSkFWQSA9ICIiCi0KLUxUTyA9ICItLWVuYWJsZS1sdG8iCi0KLUVYVFJBX09FQ09ORl9CQVNFID0gIlwKLSAgICAke0xUT30gXAotICAgIC0tZW5hYmxlLWxpYnNzcCBcCi0gICAgLS1lbmFibGUtbGliaXRtIFwKLSAgICAtLWRpc2FibGUtYm9vdHN0cmFwIFwKLSAgICAtLWRpc2FibGUtbGlibXVkZmxhcCBcCi0gICAgLS13aXRoLXN5c3RlbS16bGliIFwKLSAgICAtLXdpdGgtbGlua2VyLWhhc2gtc3R5bGU9JHtMSU5LRVJfSEFTSF9TVFlMRX0gXAotICAgIC0tZW5hYmxlLWxpbmtlci1idWlsZC1pZCBcCi0gICAgLS13aXRoLXBwbD1ubyBcCi0gICAgLS13aXRoLWNsb29nPW5vIFwKLSAgICAtLWVuYWJsZS1jaGVja2luZz1yZWxlYXNlIFwKLSAgICAtLWVuYWJsZS1jaGVhZGVycz1jX2dsb2JhbCBcCi0gICAgLS13aXRob3V0LWlzbCBcCi0iCi0KLUVYVFJBX09FQ09ORl9JTklUSUFMID0gIlwKLSAgICAtLWRpc2FibGUtbGlibXVkZmxhcCBcCi0gICAgLS1kaXNhYmxlLWxpYmdvbXAgXAotICAgIC0tZGlzYWJsZS1saWJpdG0gXAotICAgIC0tZGlzYWJsZS1saWJxdWFkbWF0aCBcCi0gICAgLS13aXRoLXN5c3RlbS16bGliIFwKLSAgICAtLWRpc2FibGUtbHRvIFwKLSAgICAtLWRpc2FibGUtcGx1Z2luIFwKLSAgICAtLWVuYWJsZS1kZWNpbWFsLWZsb2F0PW5vIFwKLSAgICAtLXdpdGhvdXQtaXNsIFwKLSAgICBnY2NfY3ZfbGliY19wcm92aWRlc19zc3A9eWVzIFwKLSIKLQotRVhUUkFfT0VDT05GX1BBVEhTID0gIlwKLSAgICAtLXdpdGgtZ3h4LWluY2x1ZGUtZGlyPS9ub3QvZXhpc3R7dGFyZ2V0X2luY2x1ZGVkaXJ9L2MrKy8ke0JJTlZ9IFwKLSAgICAtLXdpdGgtc3lzcm9vdD0vbm90L2V4aXN0IFwKLSAgICAtLXdpdGgtYnVpbGQtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0gXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDE1ZjA5MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gOTJlZDMwZGExNmI3NDg3YjMzNGY3MzliZTE3N2ViMzk4ODVhYjc3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjM3OjExICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDEvNDZdIGdjYy00LjMuMTogQVJDSF9GTEFHU19GT1JfVEFSR0VUCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0tLS0KLSBjb25maWd1cmUgICAgfCAyICstCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCAzNWYyMzFlLi5iZmFkYzMzIDEwMDc1NQotLS0tIGEvY29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC03NTUwLDcgKzc1NTAsNyBAQCBmaQotICMgZm9yIHRhcmdldF9hbGlhcyBhbmQgZ2NjIGRvZXNuJ3QgbWFuYWdlIGl0IGNvbnNpc3RlbnRseS4KLSB0YXJnZXRfY29uZmlnYXJncz0iLS1jYWNoZS1maWxlPS4vY29uZmlnLmNhY2hlICR7dGFyZ2V0X2NvbmZpZ2FyZ3N9IgotIAotLUZMQUdTX0ZPUl9UQVJHRVQ9Ci0rRkxBR1NfRk9SX1RBUkdFVD0iJEFSQ0hfRkxBR1NfRk9SX1RBUkdFVCIKLSBjYXNlICIgJHRhcmdldF9jb25maWdkaXJzICIgaW4KLSAgKiIgbmV3bGliICIqKQotICAgY2FzZSAiICR0YXJnZXRfY29uZmlnYXJncyAiIGluCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA3NGJmNThhLi4xOTdkNjFiIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zMTQ5LDcgKzMxNDksNyBAQCBmaQotICMgZm9yIHRhcmdldF9hbGlhcyBhbmQgZ2NjIGRvZXNuJ3QgbWFuYWdlIGl0IGNvbnNpc3RlbnRseS4KLSB0YXJnZXRfY29uZmlnYXJncz0iLS1jYWNoZS1maWxlPS4vY29uZmlnLmNhY2hlICR7dGFyZ2V0X2NvbmZpZ2FyZ3N9IgotIAotLUZMQUdTX0ZPUl9UQVJHRVQ9Ci0rRkxBR1NfRk9SX1RBUkdFVD0iJEFSQ0hfRkxBR1NfRk9SX1RBUkdFVCIKLSBjYXNlICIgJHRhcmdldF9jb25maWdkaXJzICIgaW4KLSAgKiIgbmV3bGliICIqKQotICAgY2FzZSAiICR0YXJnZXRfY29uZmlnYXJncyAiIGluCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAwOC1taXNzaW5nLWV4ZWNpbmZvX2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMDgtbWlzc2luZy1leGVjaW5mb19oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMWU3Yzk1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAwOC1taXNzaW5nLWV4ZWNpbmZvX2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIDZkZGUzZGEyNGVmNGI5YjM1N2JjYTY3MGQ4NTUxY2FiM2ZkZGE4NDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo0ODoxMCArMDQwMAotU3ViamVjdDogW1BBVENIIDA4LzQ2XSBtaXNzaW5nLWV4ZWNpbmZvX2gKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBib2VobS1nYy9pbmNsdWRlL2djLmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9ib2VobS1nYy9pbmNsdWRlL2djLmggYi9ib2VobS1nYy9pbmNsdWRlL2djLmgKLWluZGV4IDZiMzhmMmQuLmZjYTk4ZmYgMTAwNjQ0Ci0tLS0gYS9ib2VobS1nYy9pbmNsdWRlL2djLmgKLSsrKyBiL2JvZWhtLWdjL2luY2x1ZGUvZ2MuaAotQEAgLTUwMyw3ICs1MDMsNyBAQCBHQ19BUEkgR0NfUFRSIEdDX21hbGxvY19hdG9taWNfaWdub3JlX29mZl9wYWdlIEdDX1BST1RPKChzaXplX3QgbGIpKTsKLSAjaWYgZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX19HTElCQ19fKQotICMgaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSAjIGlmIChfX0dMSUJDX18gPT0gMiAmJiBfX0dMSUJDX01JTk9SX18gPj0gMSB8fCBfX0dMSUJDX18gPiAyKSBcCi0tICAgICAmJiAhZGVmaW5lZChfX2lhNjRfXykKLSsgICAgICYmICFkZWZpbmVkKF9faWE2NF9fKSAmJiAhZGVmaW5lZChfX1VDTElCQ19fKQotICMgICBpZm5kZWYgR0NfSEFWRV9CVUlMVElOX0JBQ0tUUkFDRQotICMgICAgIGRlZmluZSBHQ19IQVZFX0JVSUxUSU5fQkFDS1RSQUNFCi0gIyAgIGVuZGlmCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAwOS1jOTktc25wcmludGYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMDktYzk5LXNucHJpbnRmLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjIzNDFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAwOS1jOTktc25wcmludGYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIGI3OTRmMWYxYzFjN2MwNmYzZjBkNzhjZjc2YzRmYjkwYzJhYjhkZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo0OTowMyArMDQwMAotU3ViamVjdDogW1BBVENIIDA5LzQ2XSBjOTktc25wcmludGYKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBsaWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8gYi9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8KLWluZGV4IGE0MTE5YmEuLjgzOTZmNDMgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8KLSsrKyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbwotQEAgLTE0NCw3ICsxNDQsNyBAQCBuYW1lc3BhY2Ugc3RkCi0gICB1c2luZyA6OnZzcHJpbnRmOwotIH0gLy8gbmFtZXNwYWNlIHN0ZAotIAotLSNpZiBfR0xJQkNYWF9VU0VfQzk5X1NURElPCi0rI2lmIF9HTElCQ1hYX1VTRV9DOTlfU1RESU8gfHwgZGVmaW5lZChfX1VDTElCQ19fKQotIAotICN1bmRlZiBzbnByaW50ZgotICN1bmRlZiB2ZnNjYW5mCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxMC1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxMC1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWM0Y2Y0NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTAtZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOTIgKzAsMCBAQAotRnJvbSBkNzYyNTAzMjNkYWQ2OTIxMmM5NThlNDg1N2E5OGQ5OWFiNTFhMzllIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NTk6MDAgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxMC80Nl0gZ2NjOiBwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGlzdHJpYnV0aW9uOiBjb2Rlc291cmNlcnldCi0tLS0KLSBnY2MvY29tbW9uLm9wdCAgICAgIHwgIDQgKysrKwotIGdjYy9jb25maWcuaW4gICAgICAgfCAgNiArKysrKysKLSBnY2MvY29uZmlndXJlICAgICAgIHwgMTYgKysrKysrKysrKysrKysrKwotIGdjYy9jb25maWd1cmUuYWMgICAgfCAxMCArKysrKysrKysrCi0gZ2NjL2RvYy9pbnZva2UudGV4aSB8ICA5ICsrKysrKysrKwotIGdjYy9nY2MuYyAgICAgICAgICAgfCAgMiArKwotIGdjYy9pbmNwYXRoLmMgICAgICAgfCAxOSArKysrKysrKysrKysrKysrKysrCi0gNyBmaWxlcyBjaGFuZ2VkLCA2NiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvY29tbW9uLm9wdCBiL2djYy9jb21tb24ub3B0Ci1pbmRleCA2NzA0OGRiLi43MzMxODVjIDEwMDY0NAotLS0tIGEvZ2NjL2NvbW1vbi5vcHQKLSsrKyBiL2djYy9jb21tb24ub3B0Ci1AQCAtNjU5LDYgKzY1OSwxMCBAQCBXcmV0dXJuLWxvY2FsLWFkZHIKLSBDb21tb24gVmFyKHdhcm5fcmV0dXJuX2xvY2FsX2FkZHIpIEluaXQoMSkgV2FybmluZwotIFdhcm4gYWJvdXQgcmV0dXJuaW5nIGEgcG9pbnRlci9yZWZlcmVuY2UgdG8gYSBsb2NhbCBvciB0ZW1wb3JhcnkgdmFyaWFibGUuCi0gCi0rV3BvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLStDb21tb24gVmFyKGZsYWdfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcykgSW5pdCgxKSBXYXJuaW5nCi0rV2FybiBmb3IgLUkgYW5kIC1MIG9wdGlvbnMgdXNpbmcgc3lzdGVtIGRpcmVjdG9yaWVzIGlmIGNyb3NzIGNvbXBpbGluZwotKwotIFdzaGFkb3cKLSBDb21tb24gVmFyKHdhcm5fc2hhZG93KSBXYXJuaW5nCi0gV2FybiB3aGVuIG9uZSBsb2NhbCB2YXJpYWJsZSBzaGFkb3dzIGFub3RoZXIuCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy5pbiBiL2djYy9jb25maWcuaW4KLWluZGV4IDExNWNiNjEuLjEwNWIzMGYgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnLmluCi0rKysgYi9nY2MvY29uZmlnLmluCi1AQCAtMTg3LDYgKzE4NywxMiBAQAotICNlbmRpZgotIAotIAotKy8qIERlZmluZSB0byB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXMgKi8KLSsjaWZuZGVmIFVTRURfRk9SX1RBUkdFVAotKyN1bmRlZiBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUwotKyNlbmRpZgotKwotKwotIC8qIERlZmluZSBpZiB5b3Ugd2FudCBhbGwgb3BlcmF0aW9ucyBvbiBSVEwgKHRoZSBiYXNpYyBkYXRhIHN0cnVjdHVyZSBvZiB0aGUKLSAgICBvcHRpbWl6ZXIgYW5kIGJhY2sgZW5kKSB0byBiZSBjaGVja2VkIGZvciBkeW5hbWljIHR5cGUgc2FmZXR5IGF0IHJ1bnRpbWUuCi0gICAgVGhpcyBpcyBxdWl0ZSBleHBlbnNpdmUuICovCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IDFjNmUzNDAuLjhmODMxNTIgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtOTQyLDYgKzk0Miw3IEBAIHdpdGhfc3lzdGVtX3psaWIKLSBlbmFibGVfbWFpbnRhaW5lcl9tb2RlCi0gZW5hYmxlX2xpbmtfbXV0ZXgKLSBlbmFibGVfdmVyc2lvbl9zcGVjaWZpY19ydW50aW1lX2xpYnMKLStlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcwotIGVuYWJsZV9wbHVnaW4KLSBlbmFibGVfaG9zdF9zaGFyZWQKLSBlbmFibGVfbGlicXVhZG1hdGhfc3VwcG9ydAotQEAgLTE2ODEsNiArMTY4Miw4IEBAIE9wdGlvbmFsIEZlYXR1cmVzOgotICAgLS1lbmFibGUtdmVyc2lvbi1zcGVjaWZpYy1ydW50aW1lLWxpYnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgdGhhdCBydW50aW1lIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBhIGNvbXBpbGVyLXNwZWNpZmljIGRpcmVjdG9yeQotKyAgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzCi0gICAtLWVuYWJsZS1wbHVnaW4gICAgICAgICBlbmFibGUgcGx1Z2luIHN1cHBvcnQKLSAgIC0tZW5hYmxlLWhvc3Qtc2hhcmVkICAgIGJ1aWxkIGhvc3QgY29kZSBhcyBzaGFyZWQgbGlicmFyaWVzCi0gICAtLWRpc2FibGUtbGlicXVhZG1hdGgtc3VwcG9ydAotQEAgLTI4OTA4LDYgKzI4OTExLDE5IEBAIGlmIHRlc3QgIiR7ZW5hYmxlX3ZlcnNpb25fc3BlY2lmaWNfcnVudGltZV9saWJzK3NldH0iID0gc2V0OyB0aGVuIDoKLSBmaQotIAotIAotKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIGVuYWJsZXZhbD0kZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM7Ci0rZWxzZQotKyAgZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM9bm8KLStmaQotKwotK2lmIHRlc3QgIngke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzfSIgPSAieHllcyI7IHRoZW4KLSsKLSskYXNfZWNobyAiI2RlZmluZSBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUyAxIiA+PmNvbmZkZWZzLmgKLSsKLStmaQotKwotICMgU3Vic3RpdHV0ZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcwotIAotIAotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCA2YzFkY2Q5Li4wZmNjYWVmIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTU4NjEsNiArNTg2MSwxNiBAQCBBQ19BUkdfRU5BQkxFKHZlcnNpb24tc3BlY2lmaWMtcnVudGltZS1saWJzLAotICAgICAgICAgICAgICAgICBbc3BlY2lmeSB0aGF0IHJ1bnRpbWUgbGlicmFyaWVzIHNob3VsZCBiZQotICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIGluIGEgY29tcGlsZXItc3BlY2lmaWMgZGlyZWN0b3J5XSldKQotIAotK0FDX0FSR19FTkFCTEUoW3BvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAotKyAgICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc10sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXNdKSwsCi0rICAgICAgICAgICAgIFtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcz1ub10pCi0raWYgdGVzdCAieCR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXN9IiA9ICJ4eWVzIjsgdGhlbgotKyAgQUNfREVGSU5FKFtFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFU10sCi0rICAgICAgICAgICBbMV0sCi0rICAgICAgICAgICBbRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3Rvcmllc10pCi0rZmkKLSsKLSAjIFN1YnN0aXR1dGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKLSBBQ19TVUJTVChzdWJkaXJzKQotIEFDX1NVQlNUKHNyY2RpcikKLWRpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQotaW5kZXggODIxZjhmZC4uOGJiNDllNyAxMDA2NDQKLS0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKLSsrKyBiL2djYy9kb2MvaW52b2tlLnRleGkKLUBAIC0yODQsNiArMjg0LDcgQEAgT2JqZWN0aXZlLUMgYW5kIE9iamVjdGl2ZS1DKysgRGlhbGVjdHN9LgotIC1XcGFyZW50aGVzZXMgLVduby1wZWRhbnRpYy1tcy1mb3JtYXQgQGdvbAotIC1XcGxhY2VtZW50LW5ldyAtV3BsYWNlbWVudC1uZXc9QHZhcntufSBAZ29sCi0gLVdwb2ludGVyLWFyaXRoICAtV25vLXBvaW50ZXItdG8taW50LWNhc3QgQGdvbAotKy1Xbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyBAZ29sCi0gLVduby1wcmFnbWFzIC1XcmVkdW5kYW50LWRlY2xzICAtV25vLXJldHVybi1sb2NhbC1hZGRyIEBnb2wKLSAtV3JldHVybi10eXBlICAtV3NlcXVlbmNlLXBvaW50ICAtV3NoYWRvdyAgLVduby1zaGFkb3ctaXZhciBAZ29sCi0gLVdzaGlmdC1vdmVyZmxvdyAtV3NoaWZ0LW92ZXJmbG93PUB2YXJ7bn0gQGdvbAotQEAgLTQ3MjMsNiArNDcyNCwxNCBAQCBtYWRlIHVwIG9mIGRhdGEgb25seSBhbmQgdGh1cyByZXF1aXJlcyBubyBzcGVjaWFsIHRyZWF0bWVudC4gIEJ1dCwgZm9yCi0gbW9zdCB0YXJnZXRzLCBpdCBpcyBtYWRlIHVwIG9mIGNvZGUgYW5kIHRodXMgcmVxdWlyZXMgdGhlIHN0YWNrIHRvIGJlCi0gbWFkZSBleGVjdXRhYmxlIGluIG9yZGVyIGZvciB0aGUgcHJvZ3JhbSB0byB3b3JrIHByb3Blcmx5LgotIAotK0BpdGVtIC1Xbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotK0BvcGluZGV4IFduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rRG8gbm90IHdhcm4gZm9yIEBvcHRpb257LUl9IG9yIEBvcHRpb257LUx9IG9wdGlvbnMgdXNpbmcgc3lzdGVtCi0rZGlyZWN0b3JpZXMgc3VjaCBhcyBAZmlsZXsvdXNyL2luY2x1ZGV9IHdoZW4gY3Jvc3MgY29tcGlsaW5nLiAgVGhpcwotK29wdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIGluIGNocm9vdCBlbnZpcm9ubWVudHMgd2hlbiBzdWNoCi0rZGlyZWN0b3JpZXMgY29udGFpbiB0aGUgY29ycmVjdCBoZWFkZXJzIGFuZCBsaWJyYXJpZXMgZm9yIHRoZSB0YXJnZXQKLStzeXN0ZW0gcmF0aGVyIHRoYW4gdGhlIGhvc3QuCi0rCi0gQGl0ZW0gLVdmbG9hdC1lcXVhbAotIEBvcGluZGV4IFdmbG9hdC1lcXVhbAotIEBvcGluZGV4IFduby1mbG9hdC1lcXVhbAotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggMWFmNTkyMC4uNGNmZWY3ZiAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtMTAxNyw2ICsxMDE3LDggQEAgcHJvcGVyIHBvc2l0aW9uIGFtb25nIHRoZSBvdGhlciBvdXRwdXQgZmlsZXMuICAqLwotICAgICIle2Z1c2UtbGQ9KjotZnVzZS1sZD0lKn0gIiBMSU5LX0NPTVBSRVNTX0RFQlVHX1NQRUMgXAotICAgICIlWCAle28qfSAle2UqfSAle059ICV7bn0gJXtyfVwKLSAgICAgJXtzfSAle3R9ICV7dSp9ICV7en0gJXtafSAleyFub3N0ZGxpYjoleyFub3N0YXJ0ZmlsZXM6JVN9fSBcCi0rICAgICV7V25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXM6LS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzfSBcCi0rICAgICV7V2Vycm9yPXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXM6LS1lcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzfSBcCi0gICAgICV7c3RhdGljOn0gJXtMKn0gJShtZndyYXApICUobGlua19saWJnY2MpICIgXAotICAgICBWVEFCTEVfVkVSSUZJQ0FUSU9OX1NQRUMgIiAiIFNBTklUSVpFUl9FQVJMWV9TUEVDICIgJW8gIiBDSEtQX1NQRUMgIiBcCi0gICAgICV7Zm9wZW5hY2N8Zm9wZW5tcHwlOmd0KCV7ZnRyZWUtcGFyYWxsZWxpemUtbG9vcHM9KjolKn0gMSk6XAotZGlmZiAtLWdpdCBhL2djYy9pbmNwYXRoLmMgYi9nY2MvaW5jcGF0aC5jCi1pbmRleCBlYTQwZjRhLi44NTZkYTQxIDEwMDY0NAotLS0tIGEvZ2NjL2luY3BhdGguYwotKysrIGIvZ2NjL2luY3BhdGguYwotQEAgLTI2LDYgKzI2LDcgQEAKLSAjaW5jbHVkZSAiaW50bC5oIgotICNpbmNsdWRlICJpbmNwYXRoLmgiCi0gI2luY2x1ZGUgImNwcGRlZmF1bHQuaCIKLSsjaW5jbHVkZSAiZGlhZ25vc3RpYy1jb3JlLmgiCi0gCi0gLyogTWljcm9zb2Z0IFdpbmRvd3MgZG9lcyBub3QgbmF0aXZlbHkgc3VwcG9ydCBpbm9kZXMuCi0gICAgVk1TIGhhcyBub24tbnVtZXJpYyBpbm9kZXMuICAqLwotQEAgLTM4MSw2ICszODIsMjQgQEAgbWVyZ2VfaW5jbHVkZV9jaGFpbnMgKGNvbnN0IGNoYXIgKnN5c3Jvb3QsIGNwcF9yZWFkZXIgKnBmaWxlLCBpbnQgdmVyYm9zZSkKLSAJfQotICAgICAgIGZwcmludGYgKHN0ZGVyciwgXygiRW5kIG9mIHNlYXJjaCBsaXN0LlxuIikpOwotICAgICB9Ci0rCi0rI2lmZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCi0rICBpZiAoZmxhZ19wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzKQotKyAgICB7Ci0rICAgICAgIHN0cnVjdCBjcHBfZGlyICpwOwotKwotKyAgICAgICBmb3IgKHAgPSBoZWFkc1tRVU9URV07IHA7IHAgPSBwLT5uZXh0KQotKyAgICAgICAgIHsKLSsgICAgICAgICAgaWYgKCghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvaW5jbHVkZSIsIDEyKSkKLSsgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvbG9jYWwvaW5jbHVkZSIsIDE4KSkKLSsgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvWDExUjYvaW5jbHVkZSIsIDE4KSkpCi0rICAgICAgICAgICAgd2FybmluZyAoT1BUX1dwb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLAotKyAgICAgICAgICAgICAgICAgICAgICJpbmNsdWRlIGxvY2F0aW9uIFwiJXNcIiBpcyB1bnNhZmUgZm9yICIKLSsgICAgICAgICAgICAgICAgICAgICAiY3Jvc3MtY29tcGlsYXRpb24iLAotKyAgICAgICAgICAgICAgICAgICAgIHAtPm5hbWUpOwotKyAgICAgICAgIH0KLSsgICAgfQotKyNlbmRpZgotIH0KLSAKLSAvKiBVc2UgZ2l2ZW4gLUkgcGF0aHMgZm9yICNpbmNsdWRlICIuLi4iIGJ1dCBub3QgI2luY2x1ZGUgPC4uLj4sIGFuZAotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTEtZ2NjLXBvaXNvbi1kaXItZXh0ZW5kLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDExLWdjYy1wb2lzb24tZGlyLWV4dGVuZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE3MzZhZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTEtZ2NjLXBvaXNvbi1kaXItZXh0ZW5kLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotRnJvbSBhMWMyNGI1OWRlZjM5M2U0M2NkNTBiNjc2ODYwNGEyMTJjNzg4ZWQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MDA6MzQgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxMS80Nl0gZ2NjLXBvaXNvbi1kaXItZXh0ZW5kCi0KLUFkZCAvc3cvaW5jbHVkZSBhbmQgL29wdC9pbmNsdWRlIGJhc2VkIG9uIHRoZSBvcmlnaW5hbAotemVja2Utbm8taG9zdC1pbmNsdWRlcy5wYXRjaCBwYXRjaC4gIFRoZSBvcmlnaW5hbCBwYXRjaCBjaGVja2VkIGZvcgotL3Vzci9pbmNsdWRlLCAvc3cvaW5jbHVkZSBhbmQgL29wdC9pbmNsdWRlIGFuZCB0aGVuIHRyaWdnZXJlZCBhIGZhaWx1cmUgYW5kCi1hYm9ydGVkLgotCi1JbnN0ZWFkLCB3ZSBhZGQgdGhlIHR3byBtaXNzaW5nIGl0ZW1zIHRvIHRoZSBjdXJyZW50IHNjYW4uICBJZiB0aGUgdXNlcgotd2FudHMgdGhpcyB0byBiZSBhIGZhaWx1cmUsIHRoZXkgY2FuIGFkZCAiLVdlcnJvcj1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIi4KLQotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBnY2MvaW5jcGF0aC5jIHwgNCArKystCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2luY3BhdGguYyBiL2djYy9pbmNwYXRoLmMKLWluZGV4IDg1NmRhNDEuLmQyZmM4MmMgMTAwNjQ0Ci0tLS0gYS9nY2MvaW5jcGF0aC5jCi0rKysgYi9nY2MvaW5jcGF0aC5jCi1AQCAtMzkyLDcgKzM5Miw5IEBAIG1lcmdlX2luY2x1ZGVfY2hhaW5zIChjb25zdCBjaGFyICpzeXNyb290LCBjcHBfcmVhZGVyICpwZmlsZSwgaW50IHZlcmJvc2UpCi0gICAgICAgICAgewotICAgICAgICAgICBpZiAoKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9pbmNsdWRlIiwgMTIpKQotICAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9sb2NhbC9pbmNsdWRlIiwgMTgpKQotLSAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9YMTFSNi9pbmNsdWRlIiwgMTgpKSkKLSsgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvWDExUjYvaW5jbHVkZSIsIDE4KSkKLSsgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi9zdy9pbmNsdWRlIiwgMTEpKQotKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL29wdC9pbmNsdWRlIiwgMTIpKSkKLSAgICAgICAgICAgICB3YXJuaW5nIChPUFRfV3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMsCi0gICAgICAgICAgICAgICAgICAgICAgImluY2x1ZGUgbG9jYXRpb24gXCIlc1wiIGlzIHVuc2FmZSBmb3IgIgotICAgICAgICAgICAgICAgICAgICAgICJjcm9zcy1jb21waWxhdGlvbiIsCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxMi1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxMi1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM5YjA3MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTItZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi1Gcm9tIDAwZWY1ZjBmMmE4ZDNiMzNhZWIxZTU1YzBkMjM0MzlmNGRkNDk1YWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTowODozMSArMDQwMAotU3ViamVjdDogW1BBVENIIDEyLzQ2XSBnY2MtNC4zLjM6IFNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQKLQotQmVmb3JlIGNvbW1pdHRpbmcsIEkgbm90aWNlZCB0aGF0IFBSLzMyMTYxIHdhcyBtYXJrZWQgYXMgYSBkdXAgb2YgUFIvMzIwMDksIGJ1dCBteSBwcmV2aW91cyBwYXRjaCBkaWQgbm90IGZpeCBpdC4KLQotVGhpcyBhbHRlcm5hdGl2ZSBwYXRjaCBpcyBiZXR0ZXIgYmVjYXVzZSBpdCBsZXRzIHlvdSBqdXN0IHVzZSBDRkxBR1NfRk9SX1RBUkdFVCB0byBzZXQgdGhlIGNvbXBpbGF0aW9uIGZsYWdzIGZvciBsaWJnY2MuIFNpbmNlIGJvb3RzdHJhcHBlZCB0YXJnZXQgbGlicmFyaWVzIGFyZSBuZXZlciBjb21waWxlZCB3aXRoIHRoZSBuYXRpdmUgY29tcGlsZXIsIGl0IG1ha2VzIGxpdHRsZSBzZW5zZSB0byB1c2UgZGlmZmVyZW50IGZsYWdzIGZvciBzdGFnZTEgYW5kIGxhdGVyIHN0YWdlcy4gQW5kIGl0IGFsc28gbWFrZXMgbGl0dGxlIHNlbnNlIHRvIHVzZSBhIGRpZmZlcmVudCB2YXJpYWJsZSB0aGFuIENGTEFHU19GT1JfVEFSR0VULgotCi1PdGhlciBjaGFuZ2VzIEkgaGFkIHRvIGRvIGluY2x1ZGU6Ci0KLS0gbW92aW5nIHRoZSBjcmVhdGlvbiBvZiBkZWZhdWx0IENGTEFHU19GT1JfVEFSR0VUIGZyb20gTWFrZWZpbGUuYW0gdG8gY29uZmlndXJlLmFjLCBiZWNhdXNlIG90aGVyd2lzZSB0aGUgQk9PVF9DRkxBR1MgYXJlIHN1YnN0aXR1dGVkIGludG8gQ0ZMQUdTX0ZPUl9UQVJHRVQgKHdoaWNoIGlzICItTzIgLWcgJChDRkxBR1MpIikgdmlhICQoQ0ZMQUdTKS4gSXQgaXMgYWxzbyBjbGVhbmVyIHRoaXMgd2F5IHRob3VnaC4KLQotLSBwYXNzaW5nIHRoZSByaWdodCBDRkxBR1MgdG8gY29uZmlndXJlIHNjcmlwdHMgYXMgZXhwb3J0ZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzCi0KLUkgYWxzbyBzdG9wcGVkIHBhc3NpbmcgTElCQ0ZMQUdTIHRvIGNvbmZpZ3VyZSBzY3JpcHRzIHNpbmNlIHRoZXkgYXJlIHVudXNlZCBpbiB0aGUgd2hvbGUgc3JjIHRyZWUuIEFuZCBJIHVwZGF0ZWQgdGhlIGRvY3VtZW50YXRpb24gYXMgSC1QIHJlbWluZGVkIG1lIHRvIGRvLgotCi1Cb290c3RyYXBwZWQvcmVndGVzdGVkIGk2ODYtcGMtbGludXgtZ251LCB3aWxsIGNvbW1pdCB0byA0LjQgc2hvcnRseS4gT2sgZm9yIDQuMz8KLQotU2lnbmVkLW9mZi1ieTogUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gY29uZmlndXJlIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCBiZmFkYzMzLi43NTVkMzgyIDEwMDc1NQotLS0tIGEvY29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC02ODE5LDYgKzY4MTksMzggQEAgZmkKLSAKLSAKLSAKLSsjIER1cmluZyBnY2MgYm9vdHN0cmFwLCBpZiB3ZSB1c2Ugc29tZSByYW5kb20gY2MgZm9yIHN0YWdlMSB0aGVuIENGTEFHUwotKyMgbWlnaHQgYmUgZW1wdHkgb3IgIi1nIi4gIFdlIGRvbid0IHJlcXVpcmUgYSBDKysgY29tcGlsZXIsIHNvIENYWEZMQUdTCi0rIyBtaWdodCBhbHNvIGJlIGVtcHR5IChvciAiLWciLCBpZiBhIG5vbi1HQ0MgQysrIGNvbXBpbGVyIGlzIGluIHRoZSBwYXRoKS4KLSsjIFdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgVEFSR0VUIGxpYnJhcmllcyAod2hpY2ggd2Uga25vdyBhcmUgYnVpbHQgd2l0aAotKyMgZ2NjKSBhcmUgYnVpbHQgd2l0aCAiLU8yIC1nIiwgc28gaW5jbHVkZSB0aG9zZSBvcHRpb25zIHdoZW4gc2V0dGluZwotKyMgQ0ZMQUdTX0ZPUl9UQVJHRVQgYW5kIENYWEZMQUdTX0ZPUl9UQVJHRVQuCi0raWYgdGVzdCAieCRDRkxBR1NfRk9SX1RBUkdFVCIgPSB4OyB0aGVuCi0rICBDRkxBR1NfRk9SX1RBUkdFVD0kQ0ZMQUdTCi0rICBjYXNlICIgJENGTEFHUyAiIGluCi0rICAgICoiIC1PMiAiKikgOzsKLSsgICAgKikgQ0ZMQUdTX0ZPUl9UQVJHRVQ9Ii1PMiAkQ0ZMQUdTIiA7OwotKyAgZXNhYwotKyAgY2FzZSAiICRDRkxBR1MgIiBpbgotKyAgICAqIiAtZyAiKiB8ICoiIC1nMyAiKikgOzsKLSsgICAgKikgQ0ZMQUdTX0ZPUl9UQVJHRVQ9Ii1nICRDRkxBR1MiIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSsKLStpZiB0ZXN0ICJ4JENYWEZMQUdTX0ZPUl9UQVJHRVQiID0geDsgdGhlbgotKyAgQ1hYRkxBR1NfRk9SX1RBUkdFVD0kQ1hYRkxBR1MKLSsgIGNhc2UgIiAkQ1hYRkxBR1MgIiBpbgotKyAgICAqIiAtTzIgIiopIDs7Ci0rICAgICopIENYWEZMQUdTX0ZPUl9UQVJHRVQ9Ii1PMiAkQ1hYRkxBR1MiIDs7Ci0rICBlc2FjCi0rICBjYXNlICIgJENYWEZMQUdTICIgaW4KLSsgICAgKiIgLWcgIiogfCAqIiAtZzMgIiopIDs7Ci0rICAgICopIENYWEZMQUdTX0ZPUl9UQVJHRVQ9Ii1nICRDWFhGTEFHUyIgOzsKLSsgIGVzYWMKLStmaQotKwotKwotICMgSGFuZGxlIC0td2l0aC1oZWFkZXJzPVhYWC4gIElmIHRoZSB2YWx1ZSBpcyBub3QgInllcyIsIHRoZSBjb250ZW50cyBvZgotICMgdGhlIG5hbWVkIGRpcmVjdG9yeSBhcmUgY29waWVkIHRvICQodG9vbGRpcikvc3lzLWluY2x1ZGUuCi0gaWYgdGVzdCB4IiR7d2l0aF9oZWFkZXJzfSIgIT0geCAmJiB0ZXN0IHgiJHt3aXRoX2hlYWRlcnN9IiAhPSB4bm8gOyB0aGVuCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxMy02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxMy02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTMxY2RlNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTMtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi1Gcm9tIDdmYzdhMDcwYWM1M2E1NTk1MGExZWFjNzZmMDI4NzdkNDEwNmI0YjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxMDowNiArMDQwMAotU3ViamVjdDogW1BBVENIIDEzLzQ2XSA2NC1iaXQgbXVsdGlsaWIgaGFjay4KLQotR0NDIGhhcyBpbnRlcm5hbCBtdWx0aWxpYiBoYW5kbGluZyBjb2RlIGJ1dCBpdCBhc3N1bWVzIGEgdmVyeSBzcGVjaWZpYyByaWdpZCBkaXJlY3RvcnkKLWxheW91dC4gVGhlIGJ1aWxkIHN5c3RlbSBpbXBsZW1lbnRhdGlvbiBvZiBtdWx0aWxpYiBsYXlvdXQgaXMgdmVyeSBnZW5lcmljIGFuZCBhbGxvd3MKLWNvbXBsZXRlIGN1c3RvbWlzYXRpb24gb2YgdGhlIGxpYnJhcnkgZGlyZWN0b3JpZXMuCi0KLVRoaXMgcGF0Y2ggaXMgYSBwYXJ0aWFsIHNvbHV0aW9uIHRvIGFsbG93IGFueSBjdXN0b20gZGlyZWN0b3JpZXMgdG8gYmUgcGFzc2VkIGludG8gZ2NjCi1hbmQgaGFuZGxlZCBjb3JyZWN0bHkuIEl0IGZvcmNlcyBnY2MgdG8gdXNlIHRoZSBiYXNlX2xpYmRpciAod2hpY2ggaXMgdGhlIGN1cnJlbnQKLWRpcmVjdG9yeSwgIi4iKS4gV2UgbmVlZCB0byBkbyB0aGlzIGZvciBlYWNoIG11bHRpbGliIHRoYXQgaXMgY29uZmlndXJlZCBhcyB3ZSBkb24ndAota25vdyB3aGljaCBjb21waWxlciBvcHRpb25zIG1heSBiZSBiZWluZyBwYXNzZWQgaW50byB0aGUgY29tcGlsZXIuIFNpbmNlIHdlIGhhdmUgYSBjb21waWxlcgotcGVyIG11bGl0bGliIGF0IHRoaXMgcG9pbnQgdGhhdCBpc24ndCBhbiBpc3N1ZS4KLQotVGhlIG9uZSBwcm9ibGVtIGlzIHRoZSB0YXJnZXQgY29tcGlsZXIgaXMgb25seSBnb2luZyB0byB3b3JrIGZvciB0aGUgZGVmYXVsdCBtdWx0bGlsaWIgYXQKLXRoaXMgcG9pbnQuIElkZWFsbHkgd2UnZCBmaWd1cmUgb3V0IHdoaWNoIG11bHRpbGlicyB3ZXJlIGJlaW5nIGVuYWJsZWQgd2l0aCB3aGljaCBwYXRocwotYW5kIGJlIGFibGUgdG8gcGF0Y2ggdGhlc2UgZW50cmllcyB3aXRoIGEgY29tcGxldGUgc2V0IG9mIGNvcnJlY3QgcGF0aHMgYnV0IHRoaXMgd2UKLWRvbid0IGhhdmUgc3VjaCBjb2RlIGF0IHRoaXMgcG9pbnQuIFRoaXMgaXMgc29tZXRoaW5nIHRoZSB0YXJnZXQgZ2NjIHJlY2lwZSBzaG91bGQgZG8KLWFuZCBvdmVycmlkZSB0aGVzZSBwbGF0Zm9ybSBkZWZhdWx0cyBpbiBpdHMgYnVpbGQgY29uZmlnLgotCi1SUCAxNS84LzExCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBFbHZpcyBEb3dzb24gPGVsdmlzLmRvd3NvbkBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NCAgIHwgIDYgKystLS0tCi0gZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NCAgIHwgMTAgKysrLS0tLS0tLQotIGdjYy9jb25maWcvcnM2MDAwL3QtbGludXg2NCB8ICA1ICsrLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NCBiL2djYy9jb25maWcvaTM4Ni90LWxpbnV4NjQKLWluZGV4IGMwY2M4YTMuLjM2NWE1ZDYgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0Ci0rKysgYi9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0Ci1AQCAtMzIsNyArMzIsNSBAQAotICMKLSBjb21tYT0sCi0gTVVMVElMSUJfT1BUSU9OUyAgICA9ICQoc3Vic3QgJChjb21tYSksLywkKFRNX01VTFRJTElCX0NPTkZJRykpCi0tTVVMVElMSUJfRElSTkFNRVMgICA9ICQocGF0c3Vic3QgbSUsICUsICQoc3Vic3QgLywgLCQoTVVMVElMSUJfT1BUSU9OUykpKQotLU1VTFRJTElCX09TRElSTkFNRVMgPSBtNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDp4ODZfNjQtbGludXgtZ251KQotLU1VTFRJTElCX09TRElSTkFNRVMrPSBtMzI9JChpZiAkKHdpbGRjYXJkICQoc2hlbGwgZWNobyAkKFNZU1RFTV9IRUFERVJfRElSKSkvLi4vLi4vdXNyL2xpYjMyKSwuLi9saWIzMiwuLi9saWIpJChjYWxsIGlmX211bHRpYXJjaCw6aTM4Ni1saW51eC1nbnUpCi0tTVVMVElMSUJfT1NESVJOQU1FUys9IG14MzI9Li4vbGlieDMyJChjYWxsIGlmX211bHRpYXJjaCw6eDg2XzY0LWxpbnV4LWdudXgzMikKLStNVUxUSUxJQl9ESVJOQU1FUyA9IC4gLgotK01VTFRJTElCX09TRElSTkFNRVMgPSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbWlwcy90LWxpbnV4NjQgYi9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0Ci1pbmRleCAxNmM4YWRmLi5iOTMyYWNlIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAotKysrIGIvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAotQEAgLTE3LDEwICsxNyw2IEBACi0gIyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gCi0gTVVMVElMSUJfT1BUSU9OUyA9IG1hYmk9bjMyL21hYmk9MzIvbWFiaT02NAotLU1VTFRJTElCX0RJUk5BTUVTID0gbjMyIDMyIDY0Ci0tTUlQU19FTCA9ICQoaWYgJChmaWx0ZXIgJWVsLCAkKGZpcnN0d29yZCAkKHN1YnN0IC0sICwkKHRhcmdldCkpKSksZWwpCi0tTUlQU19TT0ZUID0gJChpZiAkKHN0cmlwICQoZmlsdGVyIE1BU0tfU09GVF9GTE9BVF9BQkksICQodGFyZ2V0X2NwdV9kZWZhdWx0KSkgJChmaWx0ZXIgc29mdCwgJCh3aXRoX2Zsb2F0KSkpLHNvZnQpCi0tTVVMVElMSUJfT1NESVJOQU1FUyA9IFwKLS0JLi4vbGliMzIkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzNjQkKE1JUFNfRUwpLWxpbnV4LWdudWFiaW4zMiQoTUlQU19TT0ZUKSkgXAotLQkuLi9saWIkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzJChNSVBTX0VMKS1saW51eC1nbnUkKE1JUFNfU09GVCkpIFwKLS0JLi4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzNjQkKE1JUFNfRUwpLWxpbnV4LWdudWFiaTY0JChNSVBTX1NPRlQpKQotK01VTFRJTElCX0RJUk5BTUVTID0gLiAuIC4KLStNVUxUSUxJQl9PU0RJUk5BTUVTID0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKLSsKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQgYi9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQKLWluZGV4IGZhNzU1MGIuLjliNWQ5ZWYgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQKLSsrKyBiL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NAotQEAgLTI2LDEwICsyNiw5IEBACi0gIyBNVUxUSUxJQl9PU0RJUk5BTUVTIGFjY29yZGluZyB0byB3aGF0IGlzIGZvdW5kIG9uIHRoZSB0YXJnZXQuCi0gCi0gTVVMVElMSUJfT1BUSU9OUyAgICA6PSBtNjQvbTMyCi0tTVVMVElMSUJfRElSTkFNRVMgICA6PSA2NCAzMgotK01VTFRJTElCX0RJUk5BTUVTICAgOj0gLiAuCi0gTVVMVElMSUJfRVhUUkFfT1BUUyA6PSAKLS1NVUxUSUxJQl9PU0RJUk5BTUVTIDo9IG02ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOnBvd2VycGM2NC1saW51eC1nbnUpCi0tTVVMVElMSUJfT1NESVJOQU1FUyArPSBtMzI9JChpZiAkKHdpbGRjYXJkICQoc2hlbGwgZWNobyAkKFNZU1RFTV9IRUFERVJfRElSKSkvLi4vLi4vdXNyL2xpYjMyKSwuLi9saWIzMiwuLi9saWIpJChjYWxsIGlmX211bHRpYXJjaCw6cG93ZXJwYy1saW51eC1nbnUpCi0rTVVMVElMSUJfT1NESVJOQU1FUyA6PSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQotIAotIHJzNjAwMC1saW51eC5vOiAkKHNyY2RpcikvY29uZmlnL3JzNjAwMC9yczYwMDAtbGludXguYwotIAkkKENPTVBJTEUpICQ8Ci0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxNC1vcHRpb25hbC1saWJzdGRjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDE0LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0YjBjYzcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDE0LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotRnJvbSAzNjI3NWY3OTgxYmRhZjkxOWJiYzliNTFhN2M3ZmFlMWUxOTJhZGIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTI6NTYgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxNC80Nl0gb3B0aW9uYWwgbGlic3RkYwotCi1nY2MtcnVudGltZSBidWlsZHMgbGlic3RkYysrIHNlcGFyYXRlbHkgZnJvbSBnY2MtY3Jvc3MtKi4gSXRzIGNvbmZpZ3VyZSB0ZXN0cyB1c2luZyBnKysKLXdpbGwgbm90IHJ1biBjb3JyZWN0bHkgc2luY2UgYnkgZGVmYXVsdCB0aGUgbGlua2VyIHdpbGwgdHJ5IHRvIGxpbmsgYWdhaW5zdCBsaWJzdGRjKysKLXdoaWNoIHNob3VsZG4ndCBleGlzdCB5ZXQuIFdlIG5lZWQgYW4gb3B0aW9uIHRvIGRpc2FibGUgLWxzdGRjKysKLW9wdGlvbiB3aGlsc3QgbGVhdmluZyAtbGMsIC1sZ2NjIGFuZCBvdGhlciBhdXRvbWF0aWMgbGlicmFyeSBkZXBlbmRlbmNpZXMgYWRkZWQgYnkgZ2NjCi1kcml2ZXIuIFRoaXMgcGF0Y2ggYWRkcyBzdWNoIGFuIG9wdGlvbiB3aGljaCBvbmx5IGRpc2FibGVzIHRoZSAtbHN0ZGMrKy4KLQotQSAic3RhbmRhcmQiIGdjYyBidWlsZCB1c2VzIHhnY2MgYW5kIGhlbmNlIGF2b2lkcyB0aGlzLiBXZSBzaG91bGQgYXNrIHVwc3RyZWFtIGhvdyB0bwotZG8gdGhpcyBvZmZpY2lhbGx5LCB0aGUgbGlrZWx5IGFuc3dlciBpcyBkb24ndCBidWlsZCBsaWJzdGRjKysgc2VwYXJhdGVseS4KLQotUlAgMjkvNi8xMAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotLS0tCi0gZ2NjL2MtZmFtaWx5L2Mub3B0ICB8ICA0ICsrKysKLSBnY2MvY3AvZysrc3BlYy5jICAgIHwgIDEgKwotIGdjYy9kb2MvaW52b2tlLnRleGkgfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQotIGdjYy9nY2MuYyAgICAgICAgICAgfCAgMSArCi0gNCBmaWxlcyBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy5vcHQgYi9nY2MvYy1mYW1pbHkvYy5vcHQKLWluZGV4IDRmODY4NzYuLjY2MGRhNmMgMTAwNjQ0Ci0tLS0gYS9nY2MvYy1mYW1pbHkvYy5vcHQKLSsrKyBiL2djYy9jLWZhbWlseS9jLm9wdAotQEAgLTE2NDcsNiArMTY0NywxMCBAQCBub3N0ZGluYysrCi0gQysrIE9iakMrKwotIERvIG5vdCBzZWFyY2ggc3RhbmRhcmQgc3lzdGVtIGluY2x1ZGUgZGlyZWN0b3JpZXMgZm9yIEMrKy4KLSAKLStub3N0ZGxpYisrCi0rRHJpdmVyCi0rRG8gbm90IGxpbmsgc3RhbmRhcmQgQysrIHJ1bnRpbWUgbGlicmFyeQotKwotIG8KLSBDIE9iakMgQysrIE9iakMrKyBKb2luZWQgU2VwYXJhdGUKLSA7IERvY3VtZW50ZWQgaW4gY29tbW9uLm9wdAotZGlmZiAtLWdpdCBhL2djYy9jcC9nKytzcGVjLmMgYi9nY2MvY3AvZysrc3BlYy5jCi1pbmRleCAwM2NiZGUwLi4zNjQyNTQwIDEwMDY0NAotLS0tIGEvZ2NjL2NwL2crK3NwZWMuYwotKysrIGIvZ2NjL2NwL2crK3NwZWMuYwotQEAgLTEzNyw2ICsxMzcsNyBAQCBsYW5nX3NwZWNpZmljX2RyaXZlciAoc3RydWN0IGNsX2RlY29kZWRfb3B0aW9uICoqaW5fZGVjb2RlZF9vcHRpb25zLAotICAgICAgIHN3aXRjaCAoZGVjb2RlZF9vcHRpb25zW2ldLm9wdF9pbmRleCkKLSAJewotIAljYXNlIE9QVF9ub3N0ZGxpYjoKLSsJY2FzZSBPUFRfbm9zdGRsaWJfXzoKLSAJY2FzZSBPUFRfbm9kZWZhdWx0bGliczoKLSAJICBsaWJyYXJ5ID0gLTE7Ci0gCSAgYnJlYWs7Ci1kaWZmIC0tZ2l0IGEvZ2NjL2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkKLWluZGV4IDhiYjQ5ZTcuLjg0ZDY4YWEgMTAwNjQ0Ci0tLS0gYS9nY2MvZG9jL2ludm9rZS50ZXhpCi0rKysgYi9nY2MvZG9jL2ludm9rZS50ZXhpCi1AQCAtMjA3LDYgKzIwNyw5IEBAIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMuCi0gLWZuby13ZWFrICAtbm9zdGRpbmMrKyBAZ29sCi0gLWZ2aXNpYmlsaXR5LWlubGluZXMtaGlkZGVuIEBnb2wKLSAtZnZpc2liaWxpdHktbXMtY29tcGF0IEBnb2wKLSstZnZ0YWJsZS12ZXJpZnk9QHJ7W31zdGRAcnt8fXByZWluaXRAcnt8fW5vbmVAcntdfSBAZ29sCi0rLWZ2dHYtY291bnRzIC1mdnR2LWRlYnVnIEBnb2wKLSstbm9zdGRsaWIrKyBAZ29sCi0gLWZleHQtbnVtZXJpYy1saXRlcmFscyBAZ29sCi0gLVdhYmk9QHZhcntufSAgLVdhYmktdGFnICAtV2NvbnZlcnNpb24tbnVsbCAgLVdjdG9yLWR0b3ItcHJpdmFjeSBAZ29sCi0gLVdkZWxldGUtbm9uLXZpcnR1YWwtZHRvciAtV2xpdGVyYWwtc3VmZml4IC1XbXVsdGlwbGUtaW5oZXJpdGFuY2UgQGdvbAotQEAgLTQ3MCw3ICs0NzMsNyBAQCBPYmplY3RpdmUtQyBhbmQgT2JqZWN0aXZlLUMrKyBEaWFsZWN0c30uCi0gLXMgIC1zdGF0aWMgLXN0YXRpYy1saWJnY2MgLXN0YXRpYy1saWJzdGRjKysgQGdvbAotIC1zdGF0aWMtbGliYXNhbiAtc3RhdGljLWxpYnRzYW4gLXN0YXRpYy1saWJsc2FuIC1zdGF0aWMtbGlidWJzYW4gQGdvbAotIC1zdGF0aWMtbGlibXB4IC1zdGF0aWMtbGlibXB4d3JhcHBlcnMgQGdvbAotLS1zaGFyZWQgLXNoYXJlZC1saWJnY2MgIC1zeW1ib2xpYyBAZ29sCi0rLXNoYXJlZCAtc2hhcmVkLWxpYmdjYyAgLXN5bWJvbGljIC1ub3N0ZGxpYisrIEBnb2wKLSAtVCBAdmFye3NjcmlwdH0gIC1XbCxAdmFye29wdGlvbn0gIC1YbGlua2VyIEB2YXJ7b3B0aW9ufSBAZ29sCi0gLXUgQHZhcntzeW1ib2x9IC16IEB2YXJ7a2V5d29yZH19Ci0gCi1AQCAtMTA2MDEsNiArMTA2MDQsMzMgQEAgbGlicmFyeSBzdWJyb3V0aW5lcy4KLSBjb25zdHJ1Y3RvcnMgYXJlIGNhbGxlZDsgQHB4cmVme0NvbGxlY3QyLCxAY29kZXtjb2xsZWN0Mn0sIGdjY2ludCwKLSBHTlUgQ29tcGlsZXIgQ29sbGVjdGlvbiAoR0NDKSBJbnRlcm5hbHN9LikKLSAKLStAaXRlbSAtbm9zdGRsaWIrKwotK0BvcGluZGV4IG5vc3RkbGliKysKLStEbyBub3QgdXNlIHRoZSBzdGFuZGFyZCBzeXN0ZW0gQysrIHJ1bnRpbWUgbGlicmFyaWVzIHdoZW4gbGlua2luZy4KLStPbmx5IHRoZSBsaWJyYXJpZXMgeW91IHNwZWNpZnkgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGxpbmtlci4KLSsKLStAY2luZGV4IEBvcHRpb257LWxnY2N9LCB1c2Ugd2l0aCBAb3B0aW9uey1ub3N0ZGxpYn0KLStAY2luZGV4IEBvcHRpb257LW5vc3RkbGlifSBhbmQgdW5yZXNvbHZlZCByZWZlcmVuY2VzCi0rQGNpbmRleCB1bnJlc29sdmVkIHJlZmVyZW5jZXMgYW5kIEBvcHRpb257LW5vc3RkbGlifQotK0BjaW5kZXggQG9wdGlvbnstbGdjY30sIHVzZSB3aXRoIEBvcHRpb257LW5vZGVmYXVsdGxpYnN9Ci0rQGNpbmRleCBAb3B0aW9uey1ub2RlZmF1bHRsaWJzfSBhbmQgdW5yZXNvbHZlZCByZWZlcmVuY2VzCi0rQGNpbmRleCB1bnJlc29sdmVkIHJlZmVyZW5jZXMgYW5kIEBvcHRpb257LW5vZGVmYXVsdGxpYnN9Ci0rT25lIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJpZXMgYnlwYXNzZWQgYnkgQG9wdGlvbnstbm9zdGRsaWJ9IGFuZAotK0BvcHRpb257LW5vZGVmYXVsdGxpYnN9IGlzIEBmaWxle2xpYmdjYy5hfSwgYSBsaWJyYXJ5IG9mIGludGVybmFsIHN1YnJvdXRpbmVzCi0rd2hpY2ggR0NDIHVzZXMgdG8gb3ZlcmNvbWUgc2hvcnRjb21pbmdzIG9mIHBhcnRpY3VsYXIgbWFjaGluZXMsIG9yIHNwZWNpYWwKLStuZWVkcyBmb3Igc29tZSBsYW5ndWFnZXMuCi0rKEB4cmVme0ludGVyZmFjZSwsSW50ZXJmYWNpbmcgdG8gR0NDIE91dHB1dCxnY2NpbnQsR05VIENvbXBpbGVyCi0rQ29sbGVjdGlvbiAoR0NDKSBJbnRlcm5hbHN9LAotK2ZvciBtb3JlIGRpc2N1c3Npb24gb2YgQGZpbGV7bGliZ2NjLmF9LikKLStJbiBtb3N0IGNhc2VzLCB5b3UgbmVlZCBAZmlsZXtsaWJnY2MuYX0gZXZlbiB3aGVuIHlvdSB3YW50IHRvIGF2b2lkCi0rb3RoZXIgc3RhbmRhcmQgbGlicmFyaWVzLiAgSW4gb3RoZXIgd29yZHMsIHdoZW4geW91IHNwZWNpZnkgQG9wdGlvbnstbm9zdGRsaWJ9Ci0rb3IgQG9wdGlvbnstbm9kZWZhdWx0bGlic30geW91IHNob3VsZCB1c3VhbGx5IHNwZWNpZnkgQG9wdGlvbnstbGdjY30gYXMgd2VsbC4KLStUaGlzIGVuc3VyZXMgdGhhdCB5b3UgaGF2ZSBubyB1bnJlc29sdmVkIHJlZmVyZW5jZXMgdG8gaW50ZXJuYWwgR0NDCi0rbGlicmFyeSBzdWJyb3V0aW5lcy4KLSsoQW4gZXhhbXBsZSBvZiBzdWNoIGFuIGludGVybmFsIHN1YnJvdXRpbmUgaXMgQGNvZGV7X19tYWlufSwgdXNlZCB0byBlbnN1cmUgQysrCi0rY29uc3RydWN0b3JzIGFyZSBjYWxsZWQ7IEBweHJlZntDb2xsZWN0MiwsQGNvZGV7Y29sbGVjdDJ9LCBnY2NpbnQsCi0rR05VIENvbXBpbGVyIENvbGxlY3Rpb24gKEdDQykgSW50ZXJuYWxzfS4pCi0rCi0gQGl0ZW0gLXBpZQotIEBvcGluZGV4IHBpZQotIFByb2R1Y2UgYSBwb3NpdGlvbiBpbmRlcGVuZGVudCBleGVjdXRhYmxlIG9uIHRhcmdldHMgdGhhdCBzdXBwb3J0IGl0LgotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggNGNmZWY3Zi4uZGEwYjQ4MiAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtMTAyOCw2ICsxMDI4LDcgQEAgcHJvcGVyIHBvc2l0aW9uIGFtb25nIHRoZSBvdGhlciBvdXRwdXQgZmlsZXMuICAqLwotICAgICAlKG1mbGliKSAiIFNUQUNLX1NQTElUX1NQRUMgIlwKLSAgICAgJXtmcHJvZmlsZS1hcmNzfGZwcm9maWxlLWdlbmVyYXRlKnxjb3ZlcmFnZTotbGdjb3Z9ICIgU0FOSVRJWkVSX1NQRUMgIiBcCi0gICAgICV7IW5vc3RkbGliOiV7IW5vZGVmYXVsdGxpYnM6JShsaW5rX3NzcCkgJShsaW5rX2djY19jX3NlcXVlbmNlKX19XAotKyAgICAleyFub3N0ZGxpYisrOn1cCi0gICAgICV7IW5vc3RkbGliOiV7IW5vc3RhcnRmaWxlczolRX19ICV7VCp9ICBcbiUocG9zdF9saW5rKSB9fX19fX0iCi0gI2VuZGlmCi0gCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxNS1nY2MtZGlzYWJsZS1NQVNLX1JFTEFYX1BJQ19DQUxMUy1iaXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTUtZ2NjLWRpc2FibGUtTUFTS19SRUxBWF9QSUNfQ0FMTFMtYml0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmM3MzQ2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxNS1nY2MtZGlzYWJsZS1NQVNLX1JFTEFYX1BJQ19DQUxMUy1iaXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1Gcm9tIDkzNDZmNjA0MmQ4ZjdmODVhNzVjYTJhZjE1ZjNiOGQyMzQ5ODUxNjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxNDoyMCArMDQwMAotU3ViamVjdDogW1BBVENIIDE1LzQ2XSBnY2M6IGRpc2FibGUgTUFTS19SRUxBWF9QSUNfQ0FMTFMgYml0Ci0KLVRoZSBuZXcgZmVhdHVyZSBhZGRlZCBhZnRlciA0LjMuMwotImh0dHA6Ly93d3cucHViYnMubmV0LzIwMDkwOS9nY2MvOTQwNDgtcGF0Y2gtYWRkLXN1cHBvcnQtZm9yLXJtaXBzamFsci5odG1sIgotd2lsbCBjYXVzZSBjYzFwbHVzIGVhdCB1cCBhbGwgdGhlIHN5c3RlbSBtZW1vcnkgd2hlbiBidWlsZCB3ZWJraXQtZ3RrLgotVGhlIGZ1bmN0aW9uIG1pcHNfZ2V0X3BpY19jYWxsX3N5bWJvbCBrZWVwcyBvbiByZWN1cnNpdmVseSBjYWxsaW5nIGl0c2VsZi4KLURpc2FibGUgdGhpcyBmZWF0dXJlIHRvIHdhbGsgYXNpZGUgdGhlIGJ1Zy4KLQotU2lnbmVkLW9mZi1ieTogRG9uZ3hpYW8gWHUgPGRvbmd4aWFvLnh1QGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLS0tLQotIGdjYy9jb25maWd1cmUgICAgfCA3IC0tLS0tLS0KLSBnY2MvY29uZmlndXJlLmFjIHwgNyAtLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCA4ZjgzMTUyLi41ZTcyZjE3IDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTI3MDE4LDEzICsyNzAxOCw2IEBAICRhc19lY2hvX24gImNoZWNraW5nIGFzc2VtYmxlciBhbmQgbGlua2VyIGZvciBleHBsaWNpdCBKQUxSIHJlbG9jYXRpb24uLi4gIiA+JjY7Ci0gICAgICAgICBybSAtZiBjb25mdGVzdC4qCi0gICAgICAgZmkKLSAgICAgZmkKLS0gICAgaWYgdGVzdCAkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MgPSB5ZXM7IHRoZW4KLS0gICAgICBpZiB0ZXN0IHgkdGFyZ2V0X2NwdV9kZWZhdWx0ID0geDsgdGhlbgotLSAgICAgICAgdGFyZ2V0X2NwdV9kZWZhdWx0PU1BU0tfUkVMQVhfUElDX0NBTExTCi0tICAgICAgZWxzZQotLSAgICAgICAgdGFyZ2V0X2NwdV9kZWZhdWx0PSIoJHRhcmdldF9jcHVfZGVmYXVsdCl8TUFTS19SRUxBWF9QSUNfQ0FMTFMiCi0tICAgICAgZmkKLS0gICAgZmkKLSAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnY2NfY3ZfYXNfbGRfamFscl9yZWxvYyIgPiY1Ci0gJGFzX2VjaG8gIiRnY2NfY3ZfYXNfbGRfamFscl9yZWxvYyIgPiY2OyB9Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKLWluZGV4IDBmY2NhZWYuLmRkOGY2ZmEgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtNDUyMiwxMyArNDUyMiw2IEBAIHg6Ci0gICAgICAgICBybSAtZiBjb25mdGVzdC4qCi0gICAgICAgZmkKLSAgICAgZmkKLS0gICAgaWYgdGVzdCAkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MgPSB5ZXM7IHRoZW4KLS0gICAgICBpZiB0ZXN0IHgkdGFyZ2V0X2NwdV9kZWZhdWx0ID0geDsgdGhlbgotLSAgICAgICAgdGFyZ2V0X2NwdV9kZWZhdWx0PU1BU0tfUkVMQVhfUElDX0NBTExTCi0tICAgICAgZWxzZQotLSAgICAgICAgdGFyZ2V0X2NwdV9kZWZhdWx0PSIoJHRhcmdldF9jcHVfZGVmYXVsdCl8TUFTS19SRUxBWF9QSUNfQ0FMTFMiCi0tICAgICAgZmkKLS0gICAgZmkKLSAgICAgQUNfTVNHX1JFU1VMVCgkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MpCi0gCi0gICAgIEFDX0NBQ0hFX0NIRUNLKFtsaW5rZXIgZm9yIC5laF9mcmFtZSBwZXJzb25hbGl0eSByZWxheGF0aW9uXSwKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDE2LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE1NDg2NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gMTAzM2JjMmQ0ZWZjNWMzMDFiYjgyMmI2MDdhNjczZjViMTBjYzY5ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjE2OjI4ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTYvNDZdIENPTExFQ1RfR0NDX09QVElPTlMKLQotVGhpcyBwYXRjaCBhZGRzIC0tc3lzcm9vdCBpbnRvIENPTExFQ1RfR0NDX09QVElPTlMgd2hpY2ggaXMgdXNlZCB0bwotaW52b2tlIGNvbGxlY3QyLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9nY2MuYyB8IDkgKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCBkYTBiNDgyLi43Y2ExMjlmIDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC00NTkxLDYgKzQ1OTEsMTUgQEAgc2V0X2NvbGxlY3RfZ2NjX29wdGlvbnMgKHZvaWQpCi0gCQlzaXplb2YgKCJDT0xMRUNUX0dDQ19PUFRJT05TPSIpIC0gMSk7Ci0gCi0gICBmaXJzdF90aW1lID0gVFJVRTsKLSsjaWZkZWYgSEFWRV9MRF9TWVNST09UCi0rICBpZiAodGFyZ2V0X3N5c3RlbV9yb290X2NoYW5nZWQgJiYgdGFyZ2V0X3N5c3RlbV9yb290KQotKyAgICB7Ci0rICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCAiJy0tc3lzcm9vdD0iLCBzaXplb2YoIictLXN5c3Jvb3Q9IiktMSk7Ci0rICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCB0YXJnZXRfc3lzdGVtX3Jvb3Qsc3RybGVuKHRhcmdldF9zeXN0ZW1fcm9vdCkpOwotKyAgICAgIG9ic3RhY2tfZ3JvdyAoJmNvbGxlY3Rfb2JzdGFjaywgIiciLCAxKTsKLSsgICAgICBmaXJzdF90aW1lID0gRkFMU0U7Ci0rICAgIH0KLSsjZW5kaWYKLSAgIGZvciAoaSA9IDA7IChpbnQpIGkgPCBuX3N3aXRjaGVzOyBpKyspCi0gICAgIHsKLSAgICAgICBjb25zdCBjaGFyICpjb25zdCAqYXJnczsKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDE3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDE3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZGJhYmQ5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxNy1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLUZyb20gNjcxMjNhMzA2ODgwYWY5OTdhOTlhZTUxNDY3N2MyZGE0OTczYmQxYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjE3OjI1ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTcvNDZdIFVzZSB0aGUgZGVmYXVsdHMuaCBpbiAke0J9IGluc3RlYWQgb2YgJHtTfSwgYW5kIHQtb2UgaW4KLSAke0J9Ci0KLVVzZSB0aGUgZGVmYXVsdHMuaCBpbiAke0J9IGluc3RlYWQgb2YgJHtTfSwgYW5kIHQtb2UgaW4gJHtCfSwgc28gdGhhdAotdGhlIHNvdXJjZSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gZ2NjLWNyb3NzLWluaXRpYWwsCi1nY2MtY3Jvc3MtaW50ZXJtZWRpYXRlLCBnY2MtY3Jvc3MsIGdjYy1ydW50aW1lLCBhbmQgYWxzbyB0aGUgc2RrIGJ1aWxkLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotV2hpbGUgY29tcGlsaW5nIGdjYy1jcm9zc3Nkay1pbml0aWFsLXg4Nl82NCBvbiBzb21lIGhvc3QsIHRoZXJlIGlzCi1vY2Nhc2lvbmFsbHkgZmFpbHVyZSB0aGF0IHRlc3QgdGhlIGV4aXN0YW5jZSBvZiBkZWZhdWx0LmggZG9lc24ndAotd29yaywgdGhlIHJlYXNvbiBpcyB0bV9pbmNsdWRlX2xpc3Q9JyoqIGRlZmF1bHRzLmgnIHJhdGhlciB0aGFuCi10bV9pbmNsdWRlX2xpc3Q9JyoqIC4vZGVmYXVsdHMuaCcKLQotU28gd2UgYWRkIHRoZSB0ZXN0IGNvbmRpdGlvbiBmb3IgdGhpcyBzaXR1YXRpb24uCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnY2MvTWFrZWZpbGUuaW4gIHwgMiArLQotIGdjYy9jb25maWd1cmUgICAgfCA0ICsrLS0KLSBnY2MvY29uZmlndXJlLmFjIHwgNCArKy0tCi0gZ2NjL21rY29uZmlnLnNoICB8IDQgKystLQotIDQgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCi1pbmRleCA2YzVhZGMwLi45YTFkNDY2IDEwMDY0NAotLS0tIGEvZ2NjL01ha2VmaWxlLmluCi0rKysgYi9nY2MvTWFrZWZpbGUuaW4KLUBAIC01MTcsNyArNTE3LDcgQEAgVEFSR0VUX1NZU1RFTV9ST09UID0gQFRBUkdFVF9TWVNURU1fUk9PVEAKLSBUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FID0gQFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkVACi0gCi0geG1ha2VfZmlsZT1AeG1ha2VfZmlsZUAKLS10bWFrZV9maWxlPUB0bWFrZV9maWxlQAotK3RtYWtlX2ZpbGU9QHRtYWtlX2ZpbGVAIC4vdC1vZQotIFRNX0VORElBTl9DT05GSUc9QFRNX0VORElBTl9DT05GSUdACi0gVE1fTVVMVElMSUJfQ09ORklHPUBUTV9NVUxUSUxJQl9DT05GSUdACi0gVE1fTVVMVElMSUJfRVhDRVBUSU9OU19DT05GSUc9QFRNX01VTFRJTElCX0VYQ0VQVElPTlNfQ09ORklHQAotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCA1ZTcyZjE3Li4zODliNmQ1IDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTEyMTMwLDggKzEyMTMwLDggQEAgZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCi0gICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgotICAgICAgICA7OwotICAgICBkZWZhdWx0cy5oICkKLS0gICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS8kZiIKLS0gICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCi0rICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vJGYiCi0rICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vJGYiCi0gICAgICAgIDs7Ci0gICAgICogKQotICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggZGQ4ZjZmYS4uOTFhYzgwMCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC0xODgzLDggKzE4ODMsOCBAQCBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KLSAgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCi0gICAgICAgIDs7Ci0gICAgIGRlZmF1bHRzLmggKQotLSAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpLyRmIgotLSAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKLSsgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi8kZiIKLSsgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi8kZiIKLSAgICAgICAgOzsKLSAgICAgKiApCi0gICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvY29uZmlnLyRmIgotZGlmZiAtLWdpdCBhL2djYy9ta2NvbmZpZy5zaCBiL2djYy9ta2NvbmZpZy5zaAotaW5kZXggNjdkZmFjNi4uYjczZTA4ZCAxMDA2NDQKLS0tLSBhL2djYy9ta2NvbmZpZy5zaAotKysrIGIvZ2NjL21rY29uZmlnLnNoCi1AQCAtNzcsNyArNzcsNyBAQCBpZiBbIC1uICIkSEVBREVSUyIgXTsgdGhlbgotICAgICBpZiBbICQjIC1nZSAxIF07IHRoZW4KLSAJZWNobyAnI2lmZGVmIElOX0dDQycgPj4gJHtvdXRwdXR9VAotIAlmb3IgZmlsZSBpbiAiJEAiOyBkbwotLQkgICAgaWYgdGVzdCB4IiRmaWxlIiA9IHgiZGVmYXVsdHMuaCI7IHRoZW4KLSsJICAgIGlmIHRlc3QgeCIkZmlsZSIgPSB4Ii4vZGVmYXVsdHMuaCIgLW8geCIkZmlsZSIgPSB4ImRlZmF1bHRzLmgiOyB0aGVuCi0gCQlwb3N0cG9uZV9kZWZhdWx0c19oPSJ5ZXMiCi0gCSAgICBlbHNlCi0gCQllY2hvICIjIGluY2x1ZGUgXCIkZmlsZVwiIiA+PiAke291dHB1dH1UCi1AQCAtMTA5LDcgKzEwOSw3IEBAIGVzYWMKLSAKLSAjIElmIHdlIHBvc3Rwb25lZCBpbmNsdWRpbmcgZGVmYXVsdHMuaCwgYWRkIHRoZSAjaW5jbHVkZSBub3cuCi0gaWYgdGVzdCB4IiRwb3N0cG9uZV9kZWZhdWx0c19oIiA9IHgieWVzIjsgdGhlbgotLSAgICBlY2hvICIjIGluY2x1ZGUgXCJkZWZhdWx0cy5oXCIiID4+ICR7b3V0cHV0fVQKLSsgICAgZWNobyAiIyBpbmNsdWRlIFwiLi9kZWZhdWx0cy5oXCIiID4+ICR7b3V0cHV0fVQKLSBmaQotIAotICMgQWRkIG11bHRpcGxlIGluY2x1c2lvbiBwcm90ZWN0aW9uIGd1YXJkLCBwYXJ0IHR3by4KLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDE4LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDE4LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDNkODllLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAxOC1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gZTM2MGRjM2UwZjFlMGI5YjAwMWVmNzIyZmNmNjZmODEyMGEwM2RiYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjIwOjAxICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTgvNDZdIGZvcnRyYW4gY3Jvc3MtY29tcGlsZSBoYWNrLgotCi0qIEZvcnRyYW4gd291bGQgaGF2ZSBzZWFyY2hlZCBmb3IgYXJtLWFuZ3N0cm9tLWdudWVhYmktZ2ZvcnRyYW4gYnV0IHdvdWxkIGhhdmUgdXNlZAotdXNlZCBnZm9ydGFuLiBGb3IgZ2NjXzQuMi4yLmJiIHdlIHdhbnQgdG8gdXNlIHRoZSBnZm9ydHJhbiBjb21waWxlciBmcm9tIG91ciBjcm9zcwotZGlyZWN0b3J5LgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotLS0tCi0gbGliZ2ZvcnRyYW4vY29uZmlndXJlICAgIHwgMiArLQotIGxpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYyB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZSBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQotaW5kZXggZjc0NmY2Zi4uYjRmMzI3OCAxMDA3NTUKLS0tLSBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQotKysrIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlCi1AQCAtMTI3MzQsNyArMTI3MzQsNyBAQCBlc2FjCi0gCi0gIyBXZSBuZWVkIGdmb3J0cmFuIHRvIGNvbXBpbGUgcGFydHMgb2YgdGhlIGxpYnJhcnkKLSAjQUNfUFJPR19GQyhnZm9ydHJhbikKLS1GQz0iJEdGT1JUUkFOIgotKyNGQz0iJEdGT1JUUkFOIgotIGFjX2V4dD0ke2FjX2ZjX3NyY2V4dC1mfQotIGFjX2NvbXBpbGU9JyRGQyAtYyAkRkNGTEFHUyAkYWNfZmNmbGFnc19zcmNleHQgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi0gYWNfbGluaz0nJEZDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkRkNGTEFHUyAkTERGTEFHUyAkYWNfZmNmbGFnc19zcmNleHQgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCi1kaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjCi1pbmRleCA4ZjM3N2JiLi42NzcxMGI1IDEwMDY0NAotLS0tIGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjCi0rKysgYi9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMKLUBAIC0yNDAsNyArMjQwLDcgQEAgQUNfU1VCU1QoZW5hYmxlX3N0YXRpYykKLSAKLSAjIFdlIG5lZWQgZ2ZvcnRyYW4gdG8gY29tcGlsZSBwYXJ0cyBvZiB0aGUgbGlicmFyeQotICNBQ19QUk9HX0ZDKGdmb3J0cmFuKQotLUZDPSIkR0ZPUlRSQU4iCi0rI0ZDPSIkR0ZPUlRSQU4iCi0gQUNfUFJPR19GQyhnZm9ydHJhbikKLSAKLSAjIGV4dHJhIExEIEZsYWdzIHdoaWNoIGFyZSByZXF1aXJlZCBmb3IgdGFyZ2V0cwotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTktY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMTktY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxN2E1ZWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDE5LWNwcC1ob25vci1zeXNyb290LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSA5OGQ5YzBjMWI1NTUyMjk0YjIxMzBmNzMwNGJmYjUyMmRhMzIzNDQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjI6MDAgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxOS80Nl0gY3BwOiBob25vciBzeXNyb290LgotCi1DdXJyZW50bHksIGlmIHRoZSBnY2MgdG9vbGNoYWluIGlzIHJlbG9jYXRlZCBhbmQgaW5zdGFsbGVkIGZyb20gc3N0YXRlLCB0aGVuIHlvdSB0cnkgYW5kIGNvbXBpbGUKLXByZXByb2Nlc3NlZCBzb3VyY2UgKC5pIG9yIC5paSBmaWxlcyksIHRoZSBjb21waWxlciB3aWxsIHRyeSBhbmQgYWNjZXNzIHRoZSBidWlsdGluIHN5c3Jvb3QgbG9jYXRpb24KLXJhdGhlciB0aGFuIHRoZSAtLXN5c3Jvb3Qgb3B0aW9uIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZGxpbmUuIElmIGFjY2VzcyB0byB0aGF0IGRpcmVjdG9yeSBpcwotcGVybWlzc2lvbiBkZW5pZWQgKHVucmVhZGFibGUpLCBnY2Mgd2lsbCBlcnJvci4KLQotVGhpcyBoYXBwZW5zIHdoZW4gY2NhY2hlIGlzIGluIHVzZSBkdWUgdG8gdGhlIGZhY3QgaXQgdXNlcyBwcmVwcm9jZXNzZWQgc291cmNlIGZpbGVzLgotCi1UaGUgZml4IGJlbG93IGFkZHMgJUkgdG8gdGhlIGNwcC1vdXRwdXQgc3BlYyBtYWNybyBzbyB0aGUgZGVmYXVsdCBzdWJzdGl0dXRpb25zIGZvciAtaXByZWZpeCwKLS1pc3lzdGVtLCAtaXN5c3Jvb3QgaGFwcGVuIGFuZCB0aGUgY29ycmVjdCBzeXNyb290IGlzIHVzZWQuCi0KLVtZT0NUTyAjMjA3NF0KLQotUlAgMjAxMi8wNC8xMwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9jcC9sYW5nLXNwZWNzLmggfCAyICstCi0gZ2NjL2djYy5jICAgICAgICAgICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jcC9sYW5nLXNwZWNzLmggYi9nY2MvY3AvbGFuZy1zcGVjcy5oCi1pbmRleCA5NzA3ZmFjLi5mZTQ4N2EyIDEwMDY0NAotLS0tIGEvZ2NjL2NwL2xhbmctc3BlY3MuaAotKysrIGIvZ2NjL2NwL2xhbmctc3BlY3MuaAotQEAgLTY0LDUgKzY0LDUgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAgIHsiLmlpIiwgIkBjKystY3BwLW91dHB1dCIsIDAsIDAsIDB9LAotICAgeyJAYysrLWNwcC1vdXRwdXQiLAotICAgICIleyFNOiV7IU1NOiV7IUU6XAotLSAgICBjYzFwbHVzIC1mcHJlcHJvY2Vzc2VkICVpICUoY2MxX29wdGlvbnMpICUyXAotKyAgICBjYzFwbHVzIC1mcHJlcHJvY2Vzc2VkICVpICVJICUoY2MxX29wdGlvbnMpICUyXAotICAgICAleyFmc3ludGF4LW9ubHk6JShpbnZva2VfYXMpfX19fSIsIDAsIDAsIDB9LAotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggN2NhMTI5Zi4uMDRmYTgxZCAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtMTMyOSw3ICsxMzI5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjb21waWxlciBkZWZhdWx0X2NvbXBpbGVyc1tdID0KLSAJCQkJCSAgICVXe28qOi0tb3V0cHV0LXBjaD0lKn19JVZ9fX19fX19IiwgMCwgMCwgMH0sCi0gICB7Ii5pIiwgIkBjcHAtb3V0cHV0IiwgMCwgMCwgMH0sCi0gICB7IkBjcHAtb3V0cHV0IiwKLS0gICAiJXshTToleyFNTToleyFFOmNjMSAtZnByZXByb2Nlc3NlZCAlaSAlKGNjMV9vcHRpb25zKSAleyFmc3ludGF4LW9ubHk6JShpbnZva2VfYXMpfX19fSIsIDAsIDAsIDB9LAotKyAgICIleyFNOiV7IU1NOiV7IUU6Y2MxIC1mcHJlcHJvY2Vzc2VkICVpICVJICUoY2MxX29wdGlvbnMpICV7IWZzeW50YXgtb25seTolKGludm9rZV9hcyl9fX19IiwgMCwgMCwgMH0sCi0gICB7Ii5zIiwgIkBhc3NlbWJsZXIiLCAwLCAwLCAwfSwKLSAgIHsiQGFzc2VtYmxlciIsCi0gICAgIiV7IU06JXshTU06JXshRToleyFTOmFzICUoYXNtX2RlYnVnKSAlKGFzbV9vcHRpb25zKSAlaSAlQSB9fX19IiwgMCwgMCwgMH0sCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyMC1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDIwLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhNjEyZjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDIwLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1Gcm9tIDFmMTU0NDdmYmNmNjUxNDI2MjdhZjhhOTY5NDc2MTUzNGRhOGQwZDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMzowOCArMDQwMAotU3ViamVjdDogW1BBVENIIDIwLzQ2XSBNSVBTNjQ6IERlZmF1bHQgdG8gTjY0IEFCSQotCi1NSVBTNjQgZGVmYXVsdHMgdG8gbjMyIEFCSSwgdGhpcyBwYXRjaCBtYWtlcyBpdAotc28gdGhhdCBpdCBkZWZhdWx0cyB0byBONjQgQUJJCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlnIHNwZWNpZmljXQotLS0tCi0gZ2NjL2NvbmZpZy5nY2MgfCAxMCArKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcuZ2NjIGIvZ2NjL2NvbmZpZy5nY2MKLWluZGV4IGY2NmU0OGMuLjljNmQxNTYgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnLmdjYwotKysrIGIvZ2NjL2NvbmZpZy5nY2MKLUBAIC0yMDY1LDI5ICsyMDY1LDI5IEBAIG1pcHMqLSotbGludXgqKQkJCQkjIExpbnV4IE1JUFMsIGVpdGhlciBlbmRpYW4uCi0gCQkJZGVmYXVsdF9taXBzX2FyY2g9bWlwczMyCi0gCQkJOzsKLSAJCW1pcHM2NGVsLXN0LWxpbnV4LWdudSkKLS0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgotKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKLSAJCQl0bV9maWxlPSIke3RtX2ZpbGV9IG1pcHMvc3QuaCIKLSAJCQl0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGV9IG1pcHMvdC1zdCIKLSAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKLSAJCQk7OwotIAkJbWlwczY0b2N0ZW9uKi0qLWxpbnV4KikKLS0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgotKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKLSAJCQl0bV9kZWZpbmVzPSIke3RtX2RlZmluZXN9IE1JUFNfQ1BVX1NUUklOR19ERUZBVUxUPVxcXCJvY3Rlb25cXFwiIgotIAkJCXRhcmdldF9jcHVfZGVmYXVsdD1NQVNLX1NPRlRfRkxPQVRfQUJJCi0gCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCi0gCQkJOzsKLSAJCW1pcHNpc2E2NHI2Ki0qLWxpbnV4KikKLS0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgotKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKLSAJCQlkZWZhdWx0X21pcHNfYXJjaD1taXBzNjRyNgotIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgotIAkJCTs7Ci0gCQltaXBzaXNhNjRyMiotKi1saW51eCopCi0tCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKLSsJCQlkZWZhdWx0X21pcHNfYWJpPTY0Ci0gCQkJZGVmYXVsdF9taXBzX2FyY2g9bWlwczY0cjIKLSAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKLSAJCQk7OwotIAkJbWlwczY0Ki0qLWxpbnV4KiB8IG1pcHNpc2E2NCotKi1saW51eCopCi0tCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKLSsJCQlkZWZhdWx0X21pcHNfYWJpPTY0Ci0gCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCi0gCQkJOzsKLSAJZXNhYwotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMjEtRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyMS1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Njc1Y2UzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyMS1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjM0ICswLDAgQEAKLUZyb20gOWY3M2M4OTE4YjYzZTZhMWM5Yjc5Mzg0ZmFjNDExZDEwNTZlZWMxYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI0OjUwICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjEvNDZdIERlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBhbmQgVUNMSUJDX0RZTkFNSUNfTElOS0VSCi0gcmVsYXRpdmUgdG8gU1lTVEVNTElCU19ESVIKLQotVGhpcyBwYXRjaCBkZWZpbmVzIEdMSUJDX0RZTkFNSUNfTElOS0VSIGFuZCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIKLXJlbGF0aXZlIHRvIFNZU1RFTUxJQlNfRElSIHdoaWNoIGNhbiBiZSBzZXQgaW4gZ2VuZXJhdGVkIGhlYWRlcnMKLVRoaXMgYnJlYWtzIHRoZSBhc3N1bXB0aW9uIG9mIGhhcmRjb2RlZCBtdWx0aWxpYiBpbiBnY2MKLUNoYW5nZSBpcyBvbmx5IGZvciB0aGUgc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMgaW4gT0UgaW5jbHVkaW5nCi1TSCwgc3BhcmMsIGFscGhhIGZvciBwb3NzaWJsZSBmdXR1cmUgc3VwcG9ydCAoaWYgYW55KQotCi1SZW1vdmVzIHRoZSBkb19oZWFkZXJmaXggdGFzayBpbiBtZXRhZGF0YQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIGNvbmZpZ3VyYXRpb25dCi0tLS0KLSBnY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oIHwgIDQgKystLQotIGdjYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCAgfCAgNCArKy0tCi0gZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmggICB8ICAyICstCi0gZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmggICAgICB8ICAyICstCi0gZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaCAgICB8ICA2ICsrKy0tLQotIGdjYy9jb25maWcvbGludXguaCAgICAgICAgICAgfCAgOCArKysrLS0tLQotIGdjYy9jb25maWcvbWlwcy9saW51eC5oICAgICAgfCAxMiArKysrKystLS0tLS0KLSBnY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggIHwgMTYgKysrKysrLS0tLS0tLS0tLQotIGdjYy9jb25maWcvc2gvbGludXguaCAgICAgICAgfCAgMiArLQotIGdjYy9jb25maWcvc3BhcmMvbGludXguaCAgICAgfCAgMiArLQotIGdjYy9jb25maWcvc3BhcmMvbGludXg2NC5oICAgfCAgNCArKy0tCi0gMTEgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oIGIvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaAotaW5kZXggYTA3NjRkMy4uMDJmN2E3YyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKLSsrKyBiL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKLUBAIC0yMyw4ICsyMyw4IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gI2RlZmluZSBFWFRSQV9TUEVDUyBcCi0geyAiZWxmX2R5bmFtaWNfbGlua2VyIiwgRUxGX0RZTkFNSUNfTElOS0VSIH0sCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUgkiL2xpYi9sZC1saW51eC5zby4yIgotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLXVDbGliYy5zby4wIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIJU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKLSAjaWYgREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDCi0gI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSkgIiV7bWdsaWJjOiIgRyAiOzoiIFUgIn0iCi0gI2VsaWYgREVGQVVMVF9MSUJDID09IExJQkNfR0xJQkMKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLWluZGV4IGFjZTg0ODEuLjQwMTA0MzUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLSsrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAotQEAgLTY4LDggKzY4LDggQEAKLSAgICBHTElCQ19EWU5BTUlDX0xJTktFUl9ERUZBVUxUIGFuZCBUQVJHRVRfREVGQVVMVF9GTE9BVF9BQkkuICAqLwotIAotICN1bmRlZiAgR0xJQkNfRFlOQU1JQ19MSU5LRVIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQgIi9saWIvbGQtbGludXguc28uMyIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX0hBUkRfRkxPQVQgIi9saWIvbGQtbGludXgtYXJtaGYuc28uMyIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjMiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9IQVJEX0ZMT0FUIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hcm1oZi5zby4zIgotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfREVGQVVMVCBHTElCQ19EWU5BTUlDX0xJTktFUl9TT0ZUX0ZMT0FUCi0gCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAotaW5kZXggYTk0YmQyZC4uMDIyMDYyOCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oCi0rKysgYi9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAotQEAgLTYyLDcgKzYyLDcgQEAKLSAKLSAjZGVmaW5lIExJQkdDQ19TUEVDICIle21mbG9hdC1hYmk9c29mdCo6LWxmbG9hdH0gLWxnY2MiCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI2RlZmluZSBMSU5VWF9UQVJHRVRfTElOS19TUEVDICAiJXtoKn0gXAotICAgICV7c3RhdGljOi1Cc3RhdGljfSBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmggYi9nY2MvY29uZmlnL2kzODYvbGludXguaAotaW5kZXggZDM3YTg3NS4uZWRkZTU4NiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2kzODYvbGludXguaAotQEAgLTIwLDcgKzIwLDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotIAotICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT04gImVsZl9pMzg2IgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotIAotICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSCi0gI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLW11c2wtaTM4Ni5zby4xIgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmggYi9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oCi1pbmRleCA3M2QyMmUzLi5mNGI1NjE1IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAotQEAgLTI3LDkgKzI3LDkgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCi0gI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTjY0ICJlbGZfeDg2XzY0IgotICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT05YMzIgImVsZjMyX3g4Nl82NCIKLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbGludXguc28uMiIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMiIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSWDMyICIvbGlieDMyL2xkLWxpbnV4LXgzMi5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXg4Ni02NC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXgzMi5zby4yIgotIAotICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSMzIKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC1tdXNsLWkzODYuc28uMSIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2xpbnV4LmggYi9nY2MvY29uZmlnL2xpbnV4LmgKLWluZGV4IDlhZWViOTQuLmIwNTU2NTIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvbGludXguaAotQEAgLTgxLDEwICs4MSwxMCBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKLSAgICBHTElCQ19EWU5BTUlDX0xJTktFUiBtdXN0IGJlIGRlZmluZWQgZm9yIGVhY2ggdGFyZ2V0IHVzaW5nIHRoZW0sIG9yCi0gICAgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBhbmQgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBmb3IgdGFyZ2V0cwotICAgIHN1cHBvcnRpbmcgYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBjb21waWxhdGlvbi4gICovCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0ICIvbGliL2xkNjQtdUNsaWJjLnNvLjAiCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgIi9saWIvbGR4MzItdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wIgotKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wIgotKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgU1lTVEVNTElCU19ESVIgImxkeDMyLXVDbGliYy5zby4wIgotICNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElOS0VSICIvc3lzdGVtL2Jpbi9saW5rZXIiCi0gI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIzMiAiL3N5c3RlbS9iaW4vbGlua2VyIgotICNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElOS0VSNjQgIi9zeXN0ZW0vYmluL2xpbmtlcjY0IgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbWlwcy9saW51eC5oIGIvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgKLWluZGV4IGZhMjUzYjYuLmRhMDJjOGQgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL21pcHMvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgKLUBAIC0yMiwyMCArMjIsMjAgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9OTjMyICJlbGYzMiV7RUI6Yn0le0VMOmx9dHNtaXBuMzIiCi0gCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFwKLS0gICIle21uYW49MjAwODovbGliL2xkLWxpbnV4LW1pcHNuOC5zby4xOzovbGliL2xkLnNvLjF9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LW1pcHNuOC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZC5zby4xfSIKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWI2NC9sZC1saW51eC1taXBzbjguc28uMTs6L2xpYjY0L2xkLnNvLjF9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LW1pcHNuOC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZC5zby4xfSIKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSTjMyIFwKLS0gICIle21uYW49MjAwODovbGliMzIvbGQtbGludXgtbWlwc244LnNvLjE7Oi9saWIzMi9sZC5zby4xfSIKLSsgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCi0gCi0gI3VuZGVmIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyCi0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBcCi0tICAiJXttbmFuPTIwMDg6L2xpYi9sZC11Q2xpYmMtbWlwc244LnNvLjA7Oi9saWIvbGQtdUNsaWJjLnNvLjB9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy1taXBzbjguc28uMDs6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjB9IgotICN1bmRlZiBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NAotICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWIvbGQ2NC11Q2xpYmMtbWlwc244LnNvLjA7Oi9saWIvbGQ2NC11Q2xpYmMuc28uMH0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMtbWlwc244LnNvLjA7OiIgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLnNvLjB9IgotICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSTjMyIFwKLS0gICIle21uYW49MjAwODovbGliMzIvbGQtdUNsaWJjLW1pcHNuOC5zby4wOzovbGliMzIvbGQtdUNsaWJjLnNvLjB9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy1taXBzbjguc28uMDs6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjB9IgotIAotICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSMzIKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC1tdXNsLW1pcHMle0VMOmVsfSV7bXNvZnQtZmxvYXQ6LXNmfS5zby4xIgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotaW5kZXggZmVmYTBjNC4uNzE3MzkzOCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi1AQCAtNDEyLDE2ICs0MTIsMTEgQEAgZXh0ZXJuIGludCBkb3Rfc3ltYm9sczsKLSAjdW5kZWYJTElOS19PU19ERUZBVUxUX1NQRUMKLSAjZGVmaW5lIExJTktfT1NfREVGQVVMVF9TUEVDICIlKGxpbmtfb3NfbGludXgpIgotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiJShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYi9sZC5zby4xIgotLQotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQuc28uMSIKLSAjaWZkZWYgTElOVVg2NF9ERUZBVUxUX0FCSV9FTEZ2MgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCi0tIiV7bWFiaT1lbGZ2MTolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4xOyIgXAotLSI6JShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYjY0L2xkNjQuc28uMn0iCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0ICIle21hYmk9ZWxmdjE6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjJ9IgotICNlbHNlCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKLS0iJXttYWJpPWVsZnYyOiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWI2NC9sZDY0LnNvLjI7IiBcCi0tIjolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4xfSIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIiV7bWFiaT1lbGZ2MjoiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjI7OiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMX0iCi0gI2VuZGlmCi0gCi0gI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSMzIgXAotQEAgLTQyOSw4ICs0MjQsOSBAQCBleHRlcm4gaW50IGRvdF9zeW1ib2xzOwotICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjY0IFwKLSAgICIvbGliL2xkLW11c2wtcG93ZXJwYzY0IiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bXNvZnQtZmxvYXQ6LXNmfS5zby4xIgotIAotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiL2xpYi9sZDY0LXVDbGliYy5zby4wIgotKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wIgotKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLnNvLjAiCi0rCi0gI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQwotICNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIE0pIFwKLSAgICIle21nbGliYzoiIEcgIjs6JXttbXVzbDoiIE0gIjs6IiBVICJ9fSIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3NoL2xpbnV4LmggYi9nY2MvY29uZmlnL3NoL2xpbnV4LmgKLWluZGV4IDJhMDM2YWMuLjUwZmI3MzUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3NoL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvc2gvbGludXguaAotQEAgLTY0LDcgKzY0LDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAgICIvbGliL2xkLW11c2wtc2giIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSBNVVNMX0RZTkFNSUNfTElOS0VSX0ZQIFwKLSAgICIle21mZHBpYzotZmRwaWN9LnNvLjEiCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI3VuZGVmIFNVQlRBUkdFVF9MSU5LX0VNVUxfU1VGRklYCi0gI2RlZmluZSBTVUJUQVJHRVRfTElOS19FTVVMX1NVRkZJWCAiJXttZmRwaWM6X2ZkOzpfbGludXh9IgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc3BhcmMvbGludXguaCBiL2djYy9jb25maWcvc3BhcmMvbGludXguaAotaW5kZXggOWIzMjU3Ny4uN2JkNjZkZSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvc3BhcmMvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oCi1AQCAtODMsNyArODMsNyBAQCBleHRlcm4gY29uc3QgY2hhciAqaG9zdF9kZXRlY3RfbG9jYWxfY3B1IChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpOwotICAgIFdoZW4gdGhlIC1zaGFyZWQgbGluayBvcHRpb24gaXMgdXNlZCBhIGZpbmFsIGxpbmsgaXMgbm90IGJlaW5nCi0gICAgZG9uZS4gICovCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI3VuZGVmICBMSU5LX1NQRUMKLSAjZGVmaW5lIExJTktfU1BFQyAiLW0gZWxmMzJfc3BhcmMgJXtzaGFyZWQ6LXNoYXJlZH0gXAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgKLWluZGV4IGExZWYzMjUuLjNiYWUzZDUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaAotKysrIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgKLUBAIC04NCw4ICs4NCw4IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gICAgV2hlbiB0aGUgLXNoYXJlZCBsaW5rIG9wdGlvbiBpcyB1c2VkIGEgZmluYWwgbGluayBpcyBub3QgYmVpbmcKLSAgICBkb25lLiAgKi8KLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbGludXguc28uMiIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWI2NC9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI2lmZGVmIFNQQVJDX0JJX0FSQ0gKLSAKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDIyLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyMi1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhYjZlNGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDIyLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gYWNjZTUxNTdmNmIzYTFkYzlhMzY3NmI3MTE4YWM4ODdkYzU2OTNiZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI2OjM3ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjIvNDZdIGdjYzogRml4IGFyZ3VtZW50IGxpc3QgdG9vIGxvbmcgZXJyb3IuCi0KLVRoZXJlIHdvdWxkIGJlIGFuICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIHRoZQotYnVpbGQgZGlyZWN0b3J5IGlzIGxvbmdlciB0aGFuIDIwMCwgdGhpcyBpcyBjYXVzZWQgYnk6Ci0KLWhlYWRlcnM9YGVjaG8gJChQTFVHSU5fSEVBREVSUykgfCB0ciAnICcgJ1wwMTInIHwgc29ydCAtdWAKLQotVGhlIFBMVUdJTl9IRUFERVJTIGlzIHRvbyBsb25nIGJlZm9yZSBzb3J0LCBzbyB0aGUgImVjaG8iIGNhbid0IGhhbmRsZQotaXQsIHVzZSB0aGUgJChzb3J0IGxpc3QpIG9mIEdOVSBtYWtlIHdoaWNoIGNhbiBoYW5kbGUgdGhlIHRvbyBsb25nIGxpc3QKLXdvdWxkIGZpeCB0aGUgcHJvYmxlbSwgdGhlIGhlYWRlciB3b3VsZCBiZSBzaG9ydCBlbm91Z2ggYWZ0ZXIgc29ydGVkLgotVGhlICJ0ciAnICcgJ1wwMTInIiB3YXMgdXNlZCBmb3IgdHJhbnNsYXRpbmcgdGhlIHNwYWNlIHRvICJcbiIsIHRoZQotJChzb3J0IGxpc3QpIGRvZXNuJ3QgbmVlZCB0aGlzLgotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZ2NjL01ha2VmaWxlLmluIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCi1pbmRleCA5YTFkNDY2Li40NTBjYjc5IDEwMDY0NAotLS0tIGEvZ2NjL01ha2VmaWxlLmluCi0rKysgYi9nY2MvTWFrZWZpbGUuaW4KLUBAIC0zMzQ5LDcgKzMzNDksNyBAQCBpbnN0YWxsLXBsdWdpbjogaW5zdGFsbGRpcnMgbGFuZy5pbnN0YWxsLXBsdWdpbiBzLWhlYWRlci12YXJzIGluc3RhbGwtZ2VuZ3R5cGUKLSAjIFdlIGtlZXAgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGZpbGVzIGluIGNvbmZpZyBvciBjLWZhbWlseSBhbmQgLmRlZgotICMgZmlsZXMuIEFsbCBvdGhlciBmaWxlcyBhcmUgZmxhdHRlbmVkIHRvIGEgc2luZ2xlIGRpcmVjdG9yeS4KLSAJJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChwbHVnaW5faW5jbHVkZWRpcikKLS0JaGVhZGVycz1gZWNobyAkKFBMVUdJTl9IRUFERVJTKSAkJChjZCAkKHNyY2Rpcik7IGVjaG8gKi5oICouZGVmKSB8IHRyICcgJyAnXDAxMicgfCBzb3J0IC11YDsgXAotKwloZWFkZXJzPSIkKHNvcnQgJChQTFVHSU5fSEVBREVSUykgJCQoY2QgJChzcmNkaXIpOyBlY2hvICouaCAqLmRlZikpIjsgXAotIAlzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAncy9bXS5bXiQkXFwqfF0vXFxcXCYvZydgOyBcCi0gCWZvciBmaWxlIGluICQkaGVhZGVyczsgZG8gXAotIAkgIGlmIFsgLWYgJCRmaWxlIF0gOyB0aGVuIFwKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDIzLURpc2FibGUtc2R0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDIzLURpc2FibGUtc2R0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWZkODkwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyMy1EaXNhYmxlLXNkdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi1Gcm9tIDY1NzNhZWMwMGFkYTM1YzQ4YzE4MzhjODQ5MWNlOGY3Nzk4YWU5OTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyODoxMCArMDQwMAotU3ViamVjdDogW1BBVENIIDIzLzQ2XSBEaXNhYmxlIHNkdC4KLQotV2UgZG9uJ3QgbGlzdCBkdHJhY2UgaW4gREVQRU5EUyBzbyB3ZSBzaG91bGRuJ3QgYmUgZGVwZW5kaW5nIG9uIHRoaXMgaGVhZGVyLgotSXQgbWF5IG9yIG1heSBub3QgZXhpc3QgZnJvbSBwcmVpdm91cyBidWlsZHMgdGhvdWdoLiBUbyBiZSBkZXRlcm1pbnN0aWMsIGRpc2FibGUKLXNkdC5oIHVzYWdlIGFsd2F5cy4gVGhpcyBhdm9pZHMgYnVpbGQgZmFpbHVyZXMgaWYgdGhlIGhlYWRlciBpcyByZW1vdmVkIGFmdGVyIGNvbmZpZ3VyZQotYnV0IGJlZm9yZSBsaWJnY2MgaXMgY29tcGlsZWQgZm9yIGV4YW1wbGUuCi0KLVJQIDIwMTIvOC83Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLURpc2FibGUgc2R0IGZvciBsaWJzdGRjKystdjMuCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2hhY2tdCi0tLS0KLSBnY2MvY29uZmlndXJlICAgICAgICAgICAgIHwgMTIgKysrKysrLS0tLS0tCi0gZ2NjL2NvbmZpZ3VyZS5hYyAgICAgICAgICB8IDE4ICsrKysrKysrKy0tLS0tLS0tLQotIGxpYnN0ZGMrKy12My9jb25maWd1cmUgICAgfCAgNiArKystLS0KLSBsaWJzdGRjKystdjMvY29uZmlndXJlLmFjIHwgIDIgKy0KLSA0IGZpbGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IDM4OWI2ZDUuLjczYzI2NGQgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMjg1MjgsMTIgKzI4NTI4LDEyIEBAIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeS4uLiAiID4mNjsgfQotIGhhdmVfc3lzX3NkdF9oPW5vCi0taWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCi0tICBoYXZlX3N5c19zZHRfaD15ZXMKLS0KLS0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKLS0KLS1maQotKyNpZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KLSsjICBoYXZlX3N5c19zZHRfaD15ZXMKLSsjCi0rIyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAotKyMKLSsjZmkKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfc3lzX3NkdF9oIiA+JjUKLSAkYXNfZWNobyAiJGhhdmVfc3lzX3NkdF9oIiA+JjY7IH0KLSAKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggOTFhYzgwMC4uY2VjZjEyMSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC01NTE0LDE1ICs1NTE0LDE1IEBAIGZpCi0gQUNfU1VCU1QoW2VuYWJsZV9kZWZhdWx0X3NzcF0pCi0gCi0gIyBUZXN0IGZvciA8c3lzL3NkdC5oPiBvbiB0aGUgdGFyZ2V0LgotLUdDQ19UQVJHRVRfVEVNUExBVEUoW0hBVkVfU1lTX1NEVF9IXSkKLS1BQ19NU0dfQ0hFQ0tJTkcoc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5KQotLWhhdmVfc3lzX3NkdF9oPW5vCi0taWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCi0tICBoYXZlX3N5c19zZHRfaD15ZXMKLS0gIEFDX0RFRklORShIQVZFX1NZU19TRFRfSCwgMSwKLS0gICAgICAgICAgICBbRGVmaW5lIGlmIHlvdXIgdGFyZ2V0IEMgbGlicmFyeSBwcm92aWRlcyBzeXMvc2R0LmhdKQotLWZpCi0tQUNfTVNHX1JFU1VMVCgkaGF2ZV9zeXNfc2R0X2gpCi0rI0dDQ19UQVJHRVRfVEVNUExBVEUoW0hBVkVfU1lTX1NEVF9IXSkKLSsjQUNfTVNHX0NIRUNLSU5HKHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeSkKLSsjaGF2ZV9zeXNfc2R0X2g9bm8KLSsjaWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCi0rIyAgaGF2ZV9zeXNfc2R0X2g9eWVzCi0rIyAgQUNfREVGSU5FKEhBVkVfU1lTX1NEVF9ILCAxLAotKyMgICAgICAgICAgICBbRGVmaW5lIGlmIHlvdXIgdGFyZ2V0IEMgbGlicmFyeSBwcm92aWRlcyBzeXMvc2R0LmhdKQotKyNmaQotKyNBQ19NU0dfUkVTVUxUKCRoYXZlX3N5c19zZHRfaCkKLSAKLSAjIENoZWNrIGlmIFRGbW9kZSBsb25nIGRvdWJsZSBzaG91bGQgYmUgdXNlZCBieSBkZWZhdWx0IG9yIG5vdC4KLSAjIFNvbWUgZ2xpYmMgdGFyZ2V0cyB1c2VkIERGbW9kZSBsb25nIGRvdWJsZSwgYnV0IHdpdGggZ2xpYmMgMi40Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZSBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUKLWluZGV4IDhhNTQ4MWMuLjZhNDBlOTIgMTAwNzU1Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlndXJlCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlndXJlCi1AQCAtMjE3MzUsMTEgKzIxNzM1LDExIEBAIGFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKLSBhY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotIGFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKLSAKLS0gIGlmIHRlc3QgJGdsaWJjeHhfY3Zfc3lzX3NkdF9oID0geWVzOyB0aGVuCi0rIyAgaWYgdGVzdCAkZ2xpYmN4eF9jdl9zeXNfc2R0X2ggPSB5ZXM7IHRoZW4KLSAKLS0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKLSsjJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TWVNfU0RUX0ggMSIgPj5jb25mZGVmcy5oCi0gCi0tICBmaQotKyMgIGZpCi0gICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsaWJjeHhfY3Zfc3lzX3NkdF9oIiA+JjUKLSAkYXNfZWNobyAiJGdsaWJjeHhfY3Zfc3lzX3NkdF9oIiA+JjY7IH0KLSAKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlndXJlLmFjIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYwotaW5kZXggOWUxOWU5OS4uMDA3N2ZmZCAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKLUBAIC0yMzAsNyArMjMwLDcgQEAgR0xJQkNYWF9DSEVDS19TQ19OUFJPQ0VTU09SU19PTkxOCi0gR0xJQkNYWF9DSEVDS19TQ19OUFJPQ19PTkxOCi0gR0xJQkNYWF9DSEVDS19QVEhSRUFEU19OVU1fUFJPQ0VTU09SU19OUAotIEdMSUJDWFhfQ0hFQ0tfU1lTQ1RMX0hXX05DUFUKLS1HTElCQ1hYX0NIRUNLX1NEVF9ICi0rI0dMSUJDWFhfQ0hFQ0tfU0RUX0gKLSAKLSAjIENoZWNrIGZvciBhdmFpbGFibGUgaGVhZGVycy4KLSBBQ19DSEVDS19IRUFERVJTKFtlbmRpYW4uaCBleGVjaW5mby5oIGZsb2F0LmggZnAuaCBpZWVlZnAuaCBpbnR0eXBlcy5oIFwKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDI0LWxpYnRvb2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMjQtbGlidG9vbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWY3M2I1ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMjQtbGlidG9vbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gNmMwYWE1YzI1Mzg4MjkyNDg1NDcxOTc3MTgwMzdmZjBiOTc4ODY3NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI5OjExICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjQvNDZdIGxpYnRvb2wKLQotbGlic3RkYysrIGZyb20gZ2NjLXJ1bnRpbWUgZ2V0cyBjcmVhdGVkIHdpdGggLXJwYXRoPS91c3IvbGliLy4uL2xpYiBmb3IgcWVtdXg4Ni02NAotd2hlbiBydW5uaW5nIG9uIGFtIHg4Nl82NCBidWlsZCBob3N0LgotCi1UaGlzIHBhdGNoIHN0b3BzIHRoaXMgc3BlYWRpbmcgdG8gbGliZGlyIGluIHRoZSBsaWJzdGRjKysubGEgZmlsZSB3aXRoaW4gbGlidG9vbC4KLUFyZ3VhYmx5LCBpdCBzaG91bGRuJ3QgYmUgcGFzc2luZyB0aGlzIGludG8gbGlidG9vbCBpbiB0aGUgZmlyc3QgcGxhY2UgYnV0Ci1mb3Igbm93IHRoaXMgcmVzb2x2ZXMgdGhlIG5hc3RpZXN0IHByb2JsZW1zIHRoaXMgY2F1c2VzLgotCi1mdW5jX25vcm1hbF9hYnNwYXRoIHdvdWxkIHJlc29sdmUgYW4gZW1wdHkgcGF0aCB0byBgcHdkYCBzbyB3ZSBuZWVkCi10byBmaWx0ZXIgdGhlIHplcm8gY2FzZS4KLQotUlAgMjAxMi84LzI0Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gbHRtYWluLnNoIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCi1pbmRleCA5NTAzZWM4Li4wMTIxZmJhIDEwMDY0NAotLS0tIGEvbHRtYWluLnNoCi0rKysgYi9sdG1haW4uc2gKLUBAIC02MzU5LDYgKzYzNTksMTAgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJZnVuY193YXJuaW5nICJpZ25vcmluZyBtdWx0aXBsZSBcYC1ycGF0aCdzIGZvciBhIGxpYnRvb2wgbGlicmFyeSIKLSAKLSAgICAgICBpbnN0YWxsX2xpYmRpcj0iJDEiCi0rICAgICAgaWYgdGVzdCAtbiAiJGluc3RhbGxfbGliZGlyIjsgdGhlbgotKwlmdW5jX25vcm1hbF9hYnNwYXRoICIkaW5zdGFsbF9saWJkaXIiCi0rCWluc3RhbGxfbGliZGlyPSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdAotKyAgICAgIGZpCi0gCi0gICAgICAgb2xkbGlicz0KLSAgICAgICBpZiB0ZXN0IC16ICIkcnBhdGgiOyB0aGVuCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyNS1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDI1LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiN2VlNDkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDI1LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIGIxMjYzYTQ4NTUzY2U3NWY4YzNiZWQ0ZmUxMjEyMmFmNTc4NDU1NjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTozMDozMiArMDQwMAotU3ViamVjdDogW1BBVENIIDI1LzQ2XSBnY2M6IGFybXY0OiBwYXNzIGZpeC12NGJ4IHRvIGxpbmtlciB0byBzdXBwb3J0IEVBQkkuCi0KLVRoZSBMSU5LX1NQRUMgZm9yIGxpbnV4IGdldHMgb3ZlcndyaXR0ZW4gYnkgbGludXgtZWFiaS5oIHdoaWNoCi1tZWFucyB0aGUgdmFsdWUgb2YgVEFSR0VUX0ZJWF9WNEJYX1NQRUMgZ2V0cyBsb3N0IGFuZCBhcyBhIHJlc3VsdAotdGhlIG9wdGlvbiBpcyBub3QgcGFzc2VkIHRvIGxpbmtlciB3aGVuIGNob3NpbmcgbWFyY2g9YXJtdjQKLVRoaXMgcGF0Y2ggcmVkZWZpbmVzIHRoaXMgaW4gbGludXgtZWFiaS5oIGFuZCByZWluc2VydHMgaXQKLWZvciBlYWJpIGRlZmF1bHRpbmcgdG9vbGNoYWlucy4KLQotV2UgbWlnaHQgd2FudCB0byBzZW5kIGl0IHVwc3RyZWFtLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCB8IDYgKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCi1pbmRleCA0MDEwNDM1Li5hYWVhMWM5IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCi0rKysgYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLUBAIC05NCwxMCArOTQsMTQgQEAKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgXAotICAgIi9saWIvbGQtbXVzbC1hcm0iIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttZmxvYXQtYWJpPWhhcmQ6aGZ9LnNvLjEiCi0gCi0rLyogRm9yIGFybXY0IHdlIHBhc3MgLS1maXgtdjRieCB0byBsaW5rZXIgdG8gc3VwcG9ydCBFQUJJICovCi0rI3VuZGVmIFRBUkdFVF9GSVhfVjRCWF9TUEVDCi0rI2RlZmluZSBUQVJHRVRfRklYX1Y0QlhfU1BFQyAiJXttY3B1PWFybTh8bWNwdT1hcm04MTB8bWNwdT1zdHJvbmdhcm0qfG1hcmNoPWFybXY0OiAtLWZpeC12NGJ4fSIKLSsKLSAvKiBBdCB0aGlzIHBvaW50LCBicGFiaS5oIHdpbGwgaGF2ZSBjbG9iYmVyZWQgTElOS19TUEVDLiAgV2Ugd2FudCB0bwotICAgIHVzZSB0aGUgR05VL0xpbnV4IHZlcnNpb24sIG5vdCB0aGUgZ2VuZXJpYyBCUEFCSSB2ZXJzaW9uLiAgKi8KLSAjdW5kZWYgIExJTktfU1BFQwotLSNkZWZpbmUgTElOS19TUEVDIEVBQklfTElOS19TUEVDCQkJCQlcCi0rI2RlZmluZSBMSU5LX1NQRUMgVEFSR0VUX0ZJWF9WNEJYX1NQRUMgRUFCSV9MSU5LX1NQRUMJCQlcCi0gICBMSU5VWF9PUl9BTkRST0lEX0xEIChMSU5VWF9UQVJHRVRfTElOS19TUEVDLAkJCQlcCi0gCQkgICAgICAgTElOVVhfVEFSR0VUX0xJTktfU1BFQyAiICIgQU5EUk9JRF9MSU5LX1NQRUMpCi0gCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyNi1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDI2LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlMjViZTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDI2LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotRnJvbSBiNWMzMDVmYzI1MTI5OWYyZTMyODQxMGIxOGNmYjU1Yzc1YjVmMDM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MzM6MDQgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAyNi80Nl0gVXNlIHRoZSBtdWx0aWxpYiBjb25maWcgZmlsZXMgZnJvbSAke0J9IGluc3RlYWQgb2YKLSB1c2luZyB0aGUgb25lcyBmcm9tICR7U30KLQotVXNlIHRoZSBtdWx0aWxpYiBjb25maWcgZmlsZXMgZnJvbSAke0J9IGluc3RlYWQgb2YgdXNpbmcgdGhlIG9uZXMgZnJvbSAke1N9Ci1zbyB0aGF0IHRoZSBzb3VyY2UgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGdjYy1jcm9zcy1pbml0aWFsLAotZ2NjLWNyb3NzLWludGVybWVkaWF0ZSwgZ2NjLWNyb3NzLCBnY2MtcnVudGltZSwgYW5kIGFsc28gdGhlIHNkayBidWlsZC4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IENvbnN0YW50aW4gTXVzY2EgPGNvbnN0YW50aW54Lm11c2NhQGludGVsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotLS0tCi0gZ2NjL2NvbmZpZ3VyZSAgICB8IDIyICsrKysrKysrKysrKysrKysrKy0tLS0KLSBnY2MvY29uZmlndXJlLmFjIHwgMjIgKysrKysrKysrKysrKysrKysrLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCA3M2MyNjRkLi4zNzcyNTNlIDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTEyMTEwLDEwICsxMjExMCwyMCBAQCBkb25lCi0gdG1ha2VfZmlsZV89Ci0gZm9yIGYgaW4gJHt0bWFrZV9maWxlfQotIGRvCi0tCWlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgotLQl0aGVuCi0tCQl0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCi0tCWZpCi0rICBjYXNlICRmIGluCi0rICAgICovdC1saW51eDY0ICkKLSsgICAgICAgaWYgdGVzdCAtZiAuL2NvbmZpZy8kZgotKyAgICAgICB0aGVuCi0rICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IC4vY29uZmlnLyRmIgotKyAgICAgICBmaQotKyAgICAgICA7OwotKyAgICAqICkKLSsgICAgICAgaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCi0rICAgICAgIHRoZW4KLSsgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCi0rICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICBlc2FjCi0gZG9uZQotIHRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZV99IgotIAotQEAgLTEyMTI0LDYgKzEyMTM0LDEwIEBAIHRtX2ZpbGVfbGlzdD0ib3B0aW9ucy5oIgotIHRtX2luY2x1ZGVfbGlzdD0ib3B0aW9ucy5oIGluc24tY29uc3RhbnRzLmgiCi0gZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCi0gICBjYXNlICRmIGluCi0rICAgICovbGludXg2NC5oICkKLSsgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi9jb25maWcvJGYiCi0rICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vY29uZmlnLyRmIgotKyAgICAgICA7OwotICAgICAuLyogKQotICAgICAgICBmPWBlY2hvICRmIHwgc2VkICdzL14uLi8vJ2AKLSAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gJGYiCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKLWluZGV4IGNlY2YxMjEuLjU0ZTc2MTkgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtMTg2MywxMCArMTg2MywyMCBAQCBkb25lCi0gdG1ha2VfZmlsZV89Ci0gZm9yIGYgaW4gJHt0bWFrZV9maWxlfQotIGRvCi0tCWlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgotLQl0aGVuCi0tCQl0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCi0tCWZpCi0rICBjYXNlICRmIGluCi0rICAgICovdC1saW51eDY0ICkKLSsgICAgICAgaWYgdGVzdCAtZiAuL2NvbmZpZy8kZgotKyAgICAgICB0aGVuCi0rICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IC4vY29uZmlnLyRmIgotKyAgICAgICBmaQotKyAgICAgICA7OwotKyAgICAqICkKLSsgICAgICAgaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCi0rICAgICAgIHRoZW4KLSsgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCi0rICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICBlc2FjCi0gZG9uZQotIHRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZV99IgotIAotQEAgLTE4NzcsNiArMTg4NywxMCBAQCB0bV9maWxlX2xpc3Q9Im9wdGlvbnMuaCIKLSB0bV9pbmNsdWRlX2xpc3Q9Im9wdGlvbnMuaCBpbnNuLWNvbnN0YW50cy5oIgotIGZvciBmIGluICR0bV9maWxlOyBkbwotICAgY2FzZSAkZiBpbgotKyAgICAqL2xpbnV4NjQuaCApCi0rICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vY29uZmlnLyRmIgotKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuL2NvbmZpZy8kZiIKLSsgICAgICAgOzsKLSAgICAgLi8qICkKLSAgICAgICAgZj1gZWNobyAkZiB8IHNlZCAncy9eLi4vLydgCi0gICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9ICRmIgotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMjctQXZvaWQtdXNpbmctbGliZGlyLWZyb20tLmxhLXdoaWNoLXVzdWFsbHktcG9pbnRzLXRvLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyNy1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWJiZWJjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyNy1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSBlYjYxNzhiN2ZiNDY2YWU0MjljNTYzODBjNmRiYzU2NGExNmQ5MDBhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMDk6Mzk6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyNy80Nl0gQXZvaWQgdXNpbmcgbGliZGlyIGZyb20gLmxhIHdoaWNoIHVzdWFsbHkgcG9pbnRzIHRvIGEKLSBob3N0IHBhdGgKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gTGl1IDxuZXQxNDdAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGx0bWFpbi5zaCB8IDMgKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCi1pbmRleCAwMTIxZmJhLi41MmJkYmRiIDEwMDY0NAotLS0tIGEvbHRtYWluLnNoCi0rKysgYi9sdG1haW4uc2gKLUBAIC01NjI4LDYgKzU2MjgsOSBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyIgotIAkgICAgbGliZGlyPSIkYWJzX2xhZGlyIgotIAkgIGVsc2UKLSsJICAgICMgSW5zdGVhZCBvZiB1c2luZyBsaWJkaXIgZnJvbSAubGEgd2hpY2ggdXN1YWxseSBwb2ludHMgdG8gYSBob3N0IHBhdGgsCi0rCSAgICAjIHVzZSB0aGUgcGF0aCB0aGUgLmxhIGlzIGNvbnRhaW5lZCBpbi4KLSsJICAgIGxpYmRpcj0iJGFic19sYWRpciIKLSAJICAgIGRpcj0iJGxpYmRpciIKLSAJICAgIGFic2Rpcj0iJGxpYmRpciIKLSAJICBmaQotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMjgtZXhwb3J0LUNQUC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyOC1leHBvcnQtQ1BQLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjEyNTM5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyOC1leHBvcnQtQ1BQLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotRnJvbSA2MTcxODRmMzVlOTc5MzRkOWU2MjY4ZTcxMzc4NTc0ZTJiNzc2YzJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMDk6NDA6NTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyOC80Nl0gZXhwb3J0IENQUAotCi1UaGUgT0UgZW52aXJvbm1lbnQgc2V0cyBhbmQgZXhwb3J0cyBDUFAgYXMgYmVpbmcgdGhlIHRhcmdldCBnY2MuIFdoZW4KLWJ1aWxkaW5nIGdjYy1jcm9zcy1jYW5hZGlhbiBmb3IgYSBtaW5ndyB0YXJnZXR0ZWQgc2RrLCB0aGUgZm9sbG93aW5nIGNhbiBiZSBmb3VuZAotaW4gYnVpbGQueDg2XzY0LXBva3lzZGstbWluZ3czMi5pNTg2LXBva3ktbGludXgvYnVpbGQteDg2XzY0LWxpbnV4L2xpYmliZXJ0eS9jb25maWcubG9nOgotCi1jb25maWd1cmU6MzY0MTogY2hlY2tpbmcgZm9yIF9GSUxFX09GRlNFVF9CSVRTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMKLWNvbmZpZ3VyZTozNjY2OiBnY2MgIC1jIC1pc3lzdGVtL21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2luY2x1ZGUgLU8yIC1waXBlICBjb25mdGVzdC5jID4mNQotY29uZmlndXJlOjM2NjY6ICQ/ID0gMAotY29uZmlndXJlOjM2OTg6IHJlc3VsdDogbm8KLWNvbmZpZ3VyZTozNzg2OiBjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3NvcgotY29uZmlndXJlOjM4NTY6IHJlc3VsdDogeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MgLUUgLS1zeXNyb290PS9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LW5hdGl2ZXNkay1taW5ndzMyLXBva3lzZGstbWluZ3czMgotY29uZmlndXJlOjM4NzY6IHg4Nl82NC1wb2t5c2RrLW1pbmd3MzItZ2NjIC1FIC0tc3lzcm9vdD0vbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1uYXRpdmVzZGstbWluZ3czMi1wb2t5c2RrLW1pbmd3MzIgY29uZnRlc3QuYwotY29uZmlndXJlOjM4NzY6ICQ/ID0gMAotCi1Ob3RlIHRoaXMgaXMgYSAqYnVpbGQqIHRhcmdldCAoaW4gYnVpbGQteDg2XzY0LWxpbnV4KSBzbyBpdCBzaG91bGQgYmUKLXVzaW5nIHRoZSBob3N0ICJnY2MiLCBub3QgeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MuIFNpbmNlIHRoZSBtaW5ndzMyCi1oZWFkZXJzIGFyZSB2ZXJ5IGRpZmZlcmVudCwgdXNpbmcgdGhlIHdyb25nIGNwcCBpcyBhIHJlYWwgcHJvYmxlbS4gSXQgaXMgbGVha2luZwotaW50byBjb25maWd1cmUgdGhyb3VnaCB0aGUgQ1BQIHZhcmlhYmxlLiBVbHRpbWF0ZWx5IHRoaXMgbGVhZHMgdG8gYnVpbGQKLWZhaWx1cmVzIHJlbGF0ZWQgdG8gbm90IGJlaW5nIGFibGUgdG8gaW5jbHVkZSBhIHByb2Nlc3MuaCBmaWxlIGZvciBwZW0tdW5peC5jLgotCi1UaGUgZml4IGlzIHRvIGVuc3VyZSB3ZSBleHBvcnQgYSBzYW5lIENQUCB2YWx1ZSBpbnRvIHRoZSBidWlsZAotZW52aXJvbm1lbnQgd2hlbiB1c2luZyBidWlsZCB0YXJnZXRzLiBXZSBjb3VsZCBkZWZpbmUgYSBDUFBfRk9SX0JVSUxEIHZhbHVlIHdoaWNoIG1heSBiZQotdGhlIHZlcnNpb24gd2hpY2ggbmVlZHMgdG8gYmUgdXBzdHJlYW1lZCBidXQgZm9yIG5vdywgdGhpcyBmaXggaXMgZ29vZCBlbm91Z2ggdG8KLWF2b2lkIHRoZSBwcm9ibGVtLgotCi1SUCAyMi8wOC8yMDEzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUuaW4gfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IDE1MjJlMzkuLmJlYjliOWEgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KLUBAIC0xNDksNiArMTQ5LDcgQEAgQlVJTERfRVhQT1JUUyA9IFwKLSAJQVI9IiQoQVJfRk9SX0JVSUxEKSI7IGV4cG9ydCBBUjsgXAotIAlBUz0iJChBU19GT1JfQlVJTEQpIjsgZXhwb3J0IEFTOyBcCi0gCUNDPSIkKENDX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0M7IFwKLSsJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiOyBleHBvcnQgQ1BQOyBcCi0gCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDRkxBR1M7IFwKLSAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKLSAJQ1hYPSIkKENYWF9GT1JfQlVJTEQpIjsgZXhwb3J0IENYWDsgXAotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMjktRW5hYmxlLVNQRS1BbHRpVmVjLWdlbmVyYXRpb24tb24tcG93ZXBjLWxpbnV4LXRhcmdldC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyOS1FbmFibGUtU1BFLUFsdGlWZWMtZ2VuZXJhdGlvbi1vbi1wb3dlcGMtbGludXgtdGFyZ2V0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2I5YzBkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAyOS1FbmFibGUtU1BFLUFsdGlWZWMtZ2VuZXJhdGlvbi1vbi1wb3dlcGMtbGludXgtdGFyZ2V0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSBlMTQwNzAwOTc2ZTNiN2ViNDI1MGIxZmZkZTliYzE2NDk0NDU2OTAzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZHJ1LUNlemFyIFNhcmRhbiA8YWxleGFuZHJ1LnNhcmRhbkBmcmVlc2NhbGUuY29tPgotRGF0ZTogV2VkLCA1IEZlYiAyMDE0IDE2OjUyOjMxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMjkvNDZdIEVuYWJsZSBTUEUgJiBBbHRpVmVjIGdlbmVyYXRpb24gb24gcG93ZXBjKmxpbnV4IHRhcmdldAotCi1XaGVuIGlzIGNvbmZpZ3VyZWQgd2l0aCAtLXRhcmdldD1wb3dlcnBjLWxpbnV4LCB0aGUgcmVzdWx0aW5nIEdDQyB3aWxsCi1ub3QgYmUgYWJsZSB0byBnZW5lcmF0ZSBjb2RlIGZvciBTUEUgdGFyZ2V0cyAoZTUwMHYxL3YyKS4KLUdDQyBjb25maWd1cmVkIHdpdGggLS10YXJnZXQ9cG93ZXJwYy1saW51eHNwZSB3aWxsIG5vdCBiZSBhYmxlIHRvCi1nZW5lcmF0ZSBBbHRpVmVjIGluc3RydWN0aW9ucyAoZm9yIGU2NTAwKS4KLVRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvbmZpZ3VyZWQgZmlsZSBzdWNoIHRoYXQgU1BFIG9yIEFsdGlWZWMgY29kZQotY2FuIGJlIGdlbmVyYXRlZCB3aGVuIGdjYyBpcyBjb25maWd1cmVkIHdpdGggLS10YXJnZXQ9cG93ZXJwYy1saW51eC4KLVRoZSBBQkkgYW5kIHNwZWNpZmZpYyBpbnN0cnVjdGlvbnMgY2FuIGJlIHNlbGVjdGVkIHRocm91Z2ggdGhlCi0iLW1hYmk9c3BlIG9yIC1tYWJpPWFsdGl2ZWMiIGFuZCB0aGUgIi1tc3BlIG9yIC1tYWx0aXZlYyIgcGFyYW1ldGVycy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kcnUtQ2V6YXIgU2FyZGFuIDxhbGV4YW5kcnUuc2FyZGFuQGZyZWVzY2FsZS5jb20+Ci0tLS0KLSBnY2MvY29uZmlnLmdjYyAgICAgICAgICAgICAgIHwgOSArKysrKysrKy0KLSBnY2MvY29uZmlnL3JzNjAwMC9saW51eHNwZS5oIHwgMyAtLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcuZ2NjIGIvZ2NjL2NvbmZpZy5nY2MKLWluZGV4IDljNmQxNTYuLjE4Y2ZmNWEgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnLmdjYwotKysrIGIvZ2NjL2NvbmZpZy5nY2MKLUBAIC0yMzkyLDcgKzIzOTIsMTQgQEAgcG93ZXJwYy0qLXJ0ZW1zKikKLSAJdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlfSByczYwMDAvdC1mcHJ1bGVzIHJzNjAwMC90LXJ0ZW1zIHJzNjAwMC90LXBwY2NvbW0iCi0gCTs7Ci0gcG93ZXJwYyotKi1saW51eCopCi0tCXRtX2ZpbGU9IiR7dG1fZmlsZX0gZGJ4ZWxmLmggZWxmb3MuaCBnbnUtdXNlci5oIGZyZWVic2Qtc3BlYy5oIHJzNjAwMC9zeXN2NC5oIgotKwljYXNlICR7dGFyZ2V0fSBpbgotKwkgICAgcG93ZXJwYyotKi1saW51eCpzcGUqIHwgcG93ZXJwYyotKi1saW51eCphbHRpdmVjKikKLSsJCXRtX2ZpbGU9IiR7dG1fZmlsZX0gZGJ4ZWxmLmggZWxmb3MuaCBnbnUtdXNlci5oIGZyZWVic2Qtc3BlYy5oIHJzNjAwMC9zeXN2NC5oIgotKwkJOzsKLSsJICAgICopCi0rCQl0bV9maWxlPSIke3RtX2ZpbGV9IGRieGVsZi5oIGVsZm9zLmggZ251LXVzZXIuaCBmcmVlYnNkLXNwZWMuaCByczYwMDAvc3lzdjQuaCByczYwMDAvbGludXhhbHRpdmVjLmggcnM2MDAwL2xpbnV4c3BlLmggcnM2MDAwL2U1MDAuaCIKLSsJCTs7Ci0rCWVzYWMKLSAJZXh0cmFfb3B0aW9ucz0iJHtleHRyYV9vcHRpb25zfSByczYwMDAvc3lzdjQub3B0IgotIAl0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGV9IHJzNjAwMC90LWZwcnVsZXMgcnM2MDAwL3QtcHBjY29tbSIKLSAJZXh0cmFfb2Jqcz0iJGV4dHJhX29ianMgcnM2MDAwLWxpbnV4Lm8iCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXhzcGUuaCBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4c3BlLmgKLWluZGV4IDM1NjIzY2QuLmY3NGUwMGQgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eHNwZS5oCi0rKysgYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eHNwZS5oCi1AQCAtMjcsNiArMjcsMyBAQAotICN1bmRlZglUQVJHRVRfREVGQVVMVAotICNkZWZpbmUgVEFSR0VUX0RFRkFVTFQgTUFTS19TVFJJQ1RfQUxJR04KLSAjZW5kaWYKLS0KLS0jdW5kZWYgIEFTTV9ERUZBVUxUX1NQRUMKLS0jZGVmaW5lCUFTTV9ERUZBVUxUX1NQRUMgIi1tcHBjIC1tc3BlIC1tZTUwMCIKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDMwLURpc2FibGUtdGhlLU1VTFRJTElCX09TRElSTkFNRVMtYW5kLW90aGVyLW11bHRpbGliLW8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzAtRGlzYWJsZS10aGUtTVVMVElMSUJfT1NESVJOQU1FUy1hbmQtb3RoZXItbXVsdGlsaWItby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzA5ZDAxOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzAtRGlzYWJsZS10aGUtTVVMVElMSUJfT1NESVJOQU1FUy1hbmQtb3RoZXItbXVsdGlsaWItby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gMGRkY2I5NWE4NjgzMDc2NmZkMDIxMjJmMTkzODRmYzkyOWIzNzdjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIwIEZlYiAyMDE1IDEwOjIxOjU1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMzAvNDZdIERpc2FibGUgdGhlIE1VTFRJTElCX09TRElSTkFNRVMgYW5kIG90aGVyIG11bHRpbGliCi0gb3B0aW9ucy4KLQotSGFyZCBjb2RpbmcgdGhlIE1VTFRJTElCX09TRElSTkFNRVMgd2l0aCAuLi9saWI2NCBpcyBjYXVzaW5nIHByb2JsZW1zIG9uCi1zeXN0ZW1zIHdoZXJlIHRoZSBsaWJkaXIgaXMgTk9UIHNldCB0byAvbGliNjQuICBUaGlzIGlzIGFsbG93ZWQgYnkgdGhlCi1BQkksIGFzCi1sb25nIGFzIHRoZSBkeW5hbWljIGxvYWRlciBpcyBwcmVzZW50IGluIC9saWIuCi0KLVdlIHNpbXBseSB3YW50IHRvIHVzZSB0aGUgZGVmYXVsdCBydWxlcyBpbiBnY2MgdG8gZmluZCBhbmQgY29uZmlndXJlIHRoZQotbm9ybWFsIGxpYmRpci4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW09FLVNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eCB8IDggKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eCBiL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKLWluZGV4IDFjZmU5ZjMuLmQ2ODhhYzkgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4Ci0rKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4Ci1AQCAtMjEsOCArMjEsOCBAQAotIExJQjFBU01TUkMgICA9IGFhcmNoNjQvbGliMWZ1bmNzLmFzbQotIExJQjFBU01GVU5DUyA9IF9hYXJjaDY0X3N5bmNfY2FjaGVfcmFuZ2UKLSAKLS1BQVJDSF9CRSA9ICQoaWYgJChmaW5kc3RyaW5nIFRBUkdFVF9CSUdfRU5ESUFOX0RFRkFVTFQ9MSwgJCh0bV9kZWZpbmVzKSksX2JlKQotLU1VTFRJTElCX09TRElSTkFNRVMgPSBtYWJpLmxwNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQotLU1VTFRJQVJDSF9ESVJOQU1FID0gJChjYWxsIGlmX211bHRpYXJjaCxhYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQotKyNBQVJDSF9CRSA9ICQoaWYgJChmaW5kc3RyaW5nIFRBUkdFVF9CSUdfRU5ESUFOX0RFRkFVTFQ9MSwgJCh0bV9kZWZpbmVzKSksX2JlKQotKyNNVUxUSUxJQl9PU0RJUk5BTUVTID0gbWFiaS5scDY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6YWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKLSsjTVVMVElBUkNIX0RJUk5BTUUgPSAkKGNhbGwgaWZfbXVsdGlhcmNoLGFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCi0gCi0tTVVMVElMSUJfT1NESVJOQU1FUyArPSBtYWJpLmlscDMyPS4uL2xpYmlscDMyCi0rI01VTFRJTElCX09TRElSTkFNRVMgKz0gbWFiaS5pbHAzMj0uLi9saWJpbHAzMgotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzEtRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzEtRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiMWNkMGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDMxLUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotRnJvbSBmYzY2MjE0MzVhNjRhOWQ2OWFhMjUxYjcwMzYxZGE5NGNmMmRiNmJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMTA6MjU6MTEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAzMS80Nl0gRW5zdXJlIHRhcmdldCBnY2MgaGVhZGVycyBjYW4gYmUgaW5jbHVkZWQKLQotVGhlcmUgYXJlIGEgZmV3IGhlYWRlcnMgaW5zdGFsbGVkIGFzIHBhcnQgb2YgdGhlIE9wZW5FbWJlZGRlZAotZ2NjLXJ1bnRpbWUgdGFyZ2V0IChvbXAuaCwgc3NwLyouaCkuIEJlaW5nIGluc3RhbGxlZCBmcm9tIGEgcmVjaXBlCi1idWlsdCBmb3IgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsIHRoZXNlIGFyZSB3aXRoaW4gdGhlIHRhcmdldAotc3lzcm9vdCBhbmQgbm90IGNyb3NzL25hdGl2ZXNkazsgdGh1cyB0aGV5IHdlcmVuJ3QgYWJsZSB0byBiZQotZm91bmQgYnkgZ2NjIHdpdGggdGhlIGV4aXN0aW5nIHNlYXJjaCBwYXRocy4gQWRkIHN1cHBvcnQgZm9yCi1waWNraW5nIHVwIHRoZXNlIGhlYWRlcnMgdW5kZXIgdGhlIHN5c3Jvb3Qgc3VwcGxpZWQgb24gdGhlIGdjYwotY29tbWFuZCBsaW5lIGluIG9yZGVyIHRvIHJlc29sdmUgdGhpcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9NYWtlZmlsZS5pbiAgfCAyICsrCi0gZ2NjL2NwcGRlZmF1bHQuYyB8IDQgKysrKwotIGdjYy9kZWZhdWx0cy5oICAgfCA5ICsrKysrKysrKwotIGdjYy9nY2MuYyAgICAgICAgfCA3IC0tLS0tLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KLWluZGV4IDQ1MGNiNzkuLmNjNzU1MzYgMTAwNjQ0Ci0tLS0gYS9nY2MvTWFrZWZpbGUuaW4KLSsrKyBiL2djYy9NYWtlZmlsZS5pbgotQEAgLTU5Myw2ICs1OTMsNyBAQCBsaWJleGVjZGlyID0gQGxpYmV4ZWNkaXJACi0gCi0gIyBEaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbXBpbGVyIGZpbmRzIGxpYnJhcmllcyBldGMuCi0gbGlic3ViZGlyID0gJChsaWJkaXIpL2djYy8kKHJlYWxfdGFyZ2V0X25vbmNhbm9uaWNhbCkvJCh2ZXJzaW9uKSQoYWNjZWxfZGlyX3N1ZmZpeCkKLStsaWJzdWJkaXJfdGFyZ2V0ID0gZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJCh2ZXJzaW9uKQotICMgRGlyZWN0b3J5IGluIHdoaWNoIHRoZSBjb21waWxlciBmaW5kcyBleGVjdXRhYmxlcwotIGxpYmV4ZWNzdWJkaXIgPSAkKGxpYmV4ZWNkaXIpL2djYy8kKHJlYWxfdGFyZ2V0X25vbmNhbm9uaWNhbCkvJCh2ZXJzaW9uKSQoYWNjZWxfZGlyX3N1ZmZpeCkKLSAjIERpcmVjdG9yeSBpbiB3aGljaCBhbGwgcGx1Z2luIHJlc291cmNlcyBhcmUgaW5zdGFsbGVkCi1AQCAtMjY4OCw2ICsyNjg5LDcgQEAgQ0ZMQUdTLWludGwubyArPSAtRExPQ0FMRURJUj1cIiQobG9jYWxlZGlyKVwiCi0gCi0gUFJFUFJPQ0VTU09SX0RFRklORVMgPSBcCi0gICAtREdDQ19JTkNMVURFX0RJUj1cIiQobGlic3ViZGlyKS9pbmNsdWRlXCIgXAotKyAgLURHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUPVwiJChsaWJzdWJkaXJfdGFyZ2V0KS9pbmNsdWRlXCIgXAotICAgLURGSVhFRF9JTkNMVURFX0RJUj1cIiQobGlic3ViZGlyKS9pbmNsdWRlLWZpeGVkXCIgXAotICAgLURHUExVU1BMVVNfSU5DTFVERV9ESVI9XCIkKGdjY19neHhfaW5jbHVkZV9kaXIpXCIgXAotICAgLURHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1Q9JChnY2NfZ3h4X2luY2x1ZGVfZGlyX2FkZF9zeXNyb290KSBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NwcGRlZmF1bHQuYyBiL2djYy9jcHBkZWZhdWx0LmMKLWluZGV4IDU0YWFmMDYuLjdiNGRkNTEgMTAwNjQ0Ci0tLS0gYS9nY2MvY3BwZGVmYXVsdC5jCi0rKysgYi9nY2MvY3BwZGVmYXVsdC5jCi1AQCAtNTksNiArNTksMTAgQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCi0gICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzLiAgKi8KLSAgICAgeyBHQ0NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCi0gI2VuZGlmCi0rI2lmZGVmIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQKLSsgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMgdW5kZXIgdGhlIHNwZWNpZmllZCBzeXNyb290LiAgKi8KLSsgICAgeyBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVCwgIkdDQyIsIDAsIDAsIDEsIDAgfSwKLSsjZW5kaWYKLSAjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKLSAgICAgLyogL3Vzci9sb2NhbC9pbmNsdWRlIGNvbWVzIGJlZm9yZSB0aGUgZml4aW5jbHVkZWQgaGVhZGVyIGZpbGVzLiAgKi8KLSAgICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMiB9LAotZGlmZiAtLWdpdCBhL2djYy9kZWZhdWx0cy5oIGIvZ2NjL2RlZmF1bHRzLmgKLWluZGV4IDNlMTgzMzguLjBmMzE3ZjIgMTAwNjQ0Ci0tLS0gYS9nY2MvZGVmYXVsdHMuaAotKysrIGIvZ2NjL2RlZmF1bHRzLmgKLUBAIC0xNDkyLDQgKzE0OTIsMTMgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCi0gI2RlZmluZSBEV0FSRl9HTkFUX0VOQ09ESU5HU19ERUZBVUxUIERXQVJGX0dOQVRfRU5DT0RJTkdTX0dEQgotICNlbmRpZgotIAotKy8qIERlZmF1bHQgcHJlZml4ZXMgdG8gYXR0YWNoIHRvIGNvbW1hbmQgbmFtZXMuICAqLwotKwotKyNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xCi0rI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEgIi9saWIvIgotKyNlbmRpZgotKyNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yCi0rI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgIi91c3IvbGliLyIKLSsjZW5kaWYKLSsKLSAjZW5kaWYgIC8qICEgR0NDX0RFRkFVTFRTX0ggKi8KLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IDA0ZmE4MWQuLjk3NTBjYzIgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTE0NTAsMTMgKzE0NTAsNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqZ2NjX2xpYmV4ZWNfcHJlZml4OwotIAotIC8qIERlZmF1bHQgcHJlZml4ZXMgdG8gYXR0YWNoIHRvIGNvbW1hbmQgbmFtZXMuICAqLwotIAotLSNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xCi0tI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEgIi9saWIvIgotLSNlbmRpZgotLSNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yCi0tI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgIi91c3IvbGliLyIKLS0jZW5kaWYKLS0KLSAjaWZkZWYgQ1JPU1NfRElSRUNUT1JZX1NUUlVDVFVSRSAgLyogRG9uJ3QgdXNlIHRoZXNlIHByZWZpeGVzIGZvciBhIGNyb3NzIGNvbXBpbGVyLiAgKi8KLSAjdW5kZWYgTURfRVhFQ19QUkVGSVgKLSAjdW5kZWYgTURfU1RBUlRGSUxFX1BSRUZJWAotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzItZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzMi1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMGIwMDFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzMi1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSBmZjkzOWM1MDYzZDhmOGQ0NDRiZGIyNTY1MWEwYTQ4ZTYwOGVmYWE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMTE6MTc6MTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAzMi80Nl0gZ2NjIDQuOCsgd29uJ3QgYnVpbGQgd2l0aCAtLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZwotCi1zaW5jZSB0aGUgKi5QcG8gZmlsZXMgZG9uJ3QgZ2V0IGNyZWF0ZWQgdW5sZXNzIC0tZW5hYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgaXMgdHJ1ZS4KLQotVGhpcyBwYXRjaCBlbnN1cmVzIHdlIG9ubHkgdXNlIHRob3NlIGNvbXBpbGVyIG9wdGlvbnMgd2hlbiBpdHMgZW5hYmxlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotKFByb2JsZW0gd2FzIGFscmVhZHkgcmVwb3J0ZWQgdXBzdHJlYW0sIGF0dGFjaGVkIHRoaXMgcGF0Y2ggdGhlcmUKLWh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NTU5MzApCi0KLVJQCi0yMDEyLzA5LzIyCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsaWJhdG9taWMvTWFrZWZpbGUuYW0gfCAzICsrLQotIGxpYmF0b21pYy9NYWtlZmlsZS5pbiB8IDMgKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdG9taWMvTWFrZWZpbGUuYW0gYi9saWJhdG9taWMvTWFrZWZpbGUuYW0KLWluZGV4IGIzNTEyNDQuLjM5OWNlMTggMTAwNjQ0Ci0tLS0gYS9saWJhdG9taWMvTWFrZWZpbGUuYW0KLSsrKyBiL2xpYmF0b21pYy9NYWtlZmlsZS5hbQotQEAgLTEwMSw3ICsxMDEsOCBAQCBQQVRfUwkJPSAkKHdvcmQgMywkKFBBVF9TUExJVCkpCi0gSUZVTkNfREVGCT0gLURJRlVOQ19BTFQ9JChQQVRfUykKLSBJRlVOQ19PUFQJPSAkKHdvcmQgJChQQVRfUyksJChJRlVOQ19PUFRJT05TKSkKLSAKLS1NX0RFUFMJCT0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KLStAQU1ERVBfVFJVRUBNX0RFUFMJCT0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KLStAQU1ERVBfRkFMU0VATV9ERVBTCQk9Ci0gTV9TSVpFCQk9IC1ETj0kKFBBVF9OKQotIE1fSUZVTkMJCT0gJChpZiAkKFBBVF9TKSwkKElGVU5DX0RFRikgJChJRlVOQ19PUFQpKQotIE1fRklMRQkJPSAkKFBBVF9CQVNFKV9uLmMKLWRpZmYgLS1naXQgYS9saWJhdG9taWMvTWFrZWZpbGUuaW4gYi9saWJhdG9taWMvTWFrZWZpbGUuaW4KLWluZGV4IGEwODNkODcuLmE5MmNmY2UgMTAwNjQ0Ci0tLS0gYS9saWJhdG9taWMvTWFrZWZpbGUuaW4KLSsrKyBiL2xpYmF0b21pYy9NYWtlZmlsZS5pbgotQEAgLTMzMCw3ICszMzAsOCBAQCBQQVRfTiA9ICQod29yZCAyLCQoUEFUX1NQTElUKSkKLSBQQVRfUyA9ICQod29yZCAzLCQoUEFUX1NQTElUKSkKLSBJRlVOQ19ERUYgPSAtRElGVU5DX0FMVD0kKFBBVF9TKQotIElGVU5DX09QVCA9ICQod29yZCAkKFBBVF9TKSwkKElGVU5DX09QVElPTlMpKQotLU1fREVQUyA9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCi0rQEFNREVQX1RSVUVATV9ERVBTID0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KLStAQU1ERVBfRkFMU0VATV9ERVBTID0KLSBNX1NJWkUgPSAtRE49JChQQVRfTikKLSBNX0lGVU5DID0gJChpZiAkKFBBVF9TKSwkKElGVU5DX0RFRikgJChJRlVOQ19PUFQpKQotIE1fRklMRSA9ICQoUEFUX0JBU0UpX24uYwotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzMtRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzMy1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDI1ZDcxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzMy1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotRnJvbSA1MDkyZjUzODlkMDJlNzhjZDU5NjkwY2YzZmNhMjRiNTZhOTdhZmYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMyBNYXIgMjAxNSAwODoyMToxOSArMDAwMAotU3ViamVjdDogW1BBVENIIDMzLzQ2XSBEb24ndCBzZWFyY2ggaG9zdCBkaXJlY3RvcnkgZHVyaW5nICJyZWxpbmsiIGlmCi0gJGluc3RfcHJlZml4IGlzIHByb3ZpZGVkCi0KLWh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9saWJ0b29sLXBhdGNoZXMvMjAxMS0wMS9tc2cwMDAyNi5odG1sCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsdG1haW4uc2ggfCA1ICsrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAotaW5kZXggNTJiZGJkYi4uODJiY2VjMyAxMDA2NDQKLS0tLSBhL2x0bWFpbi5zaAotKysrIGIvbHRtYWluLnNoCi1AQCAtNjAwNCwxMiArNjAwNCwxMyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgICBmaQotIAkgICAgZWxzZQotIAkgICAgICAjIFdlIGNhbm5vdCBzZWVtIHRvIGhhcmRjb2RlIGl0LCBndWVzcyB3ZSdsbCBmYWtlIGl0LgotKwkgICAgICAjIERlZmF1bHQgaWYgJGxpYmRpciBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHByZWZpeDoKLSAJICAgICAgYWRkX2Rpcj0iLUwkbGliZGlyIgotLQkgICAgICAjIFRyeSBsb29raW5nIGZpcnN0IGluIHRoZSBsb2NhdGlvbiB3ZSdyZSBiZWluZyBpbnN0YWxsZWQgdG8uCi0rCi0gCSAgICAgIGlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCi0gCQljYXNlICRsaWJkaXIgaW4KLSAJCSAgW1xcL10qKQotLQkJICAgIGFkZF9kaXI9IiRhZGRfZGlyIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCi0rCQkgICAgYWRkX2Rpcj0iLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKLSAJCSAgICA7OwotIAkJZXNhYwotIAkgICAgICBmaQotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzQtVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzNC1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjJhODU1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzNC1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSAxZmFhNmY2OWY5M2JiOTVhZjJiMmIyYmQyNGUxODFiNTBmYjViMzdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjggQXByIDIwMTUgMjM6MTU6MjcgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAzNC80Nl0gVXNlIFNZU1RFTUxJQlNfRElSIHJlcGxhY2VtZW50IGluc3RlYWQgb2YgaGFyZGNvZGluZwotIGJhc2VfbGliZGlyCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgQ29uZmlndXJhdGlvbl0KLQotIGdjYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotaW5kZXggNWZjYWE1OS4uODU4OGFjMCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKLUBAIC0yMSw3ICsyMSw3IEBACi0gI2lmbmRlZiBHQ0NfQUFSQ0g2NF9MSU5VWF9ICi0gI2RlZmluZSBHQ0NfQUFSQ0g2NF9MSU5VWF9ICi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCi0gCi0gI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbXVzbC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDM1LWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzNS1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZmM0NzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDM1LWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gMzc2ODQ2OGMxYTZjYzE3MGZmZjg4YzAzYjgwOGM5NzVhYzY1MzgxMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI4IEFwciAyMDE1IDIzOjE4OjM5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMzUvNDZdIGFhcmNoNjQ6IEFkZCBzdXBwb3J0IGZvciBtdXNsIGxkc28KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBDb25maWd1cmF0aW9uXQotCi0gZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi1pbmRleCA4NTg4YWMwLi45NDZiM2NhIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotQEAgLTI0LDcgKzI0LDcgQEAKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCi0gCi0gI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIKLS0jZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbXVzbC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgotIAotICN1bmRlZiAgQVNBTl9DQzFfU1BFQwotICNkZWZpbmUgQVNBTl9DQzFfU1BFQyAiJXslOnNhbml0aXplKGFkZHJlc3MpOi1mdW53aW5kLXRhYmxlc30iCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzNi1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzYtbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODlhODg2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzNi1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIGY0ZDNjOGU5NzBkNDJhNDNjZDNkMmY3NTFlMTMzMjRlZmE5MzZmZjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFN1biwgNSBKdWwgMjAxNSAyMDoyNToxOCAtMDcwMAotU3ViamVjdDogW1BBVENIIDM2LzQ2XSBsaWJjYzE6IGZpeCBsaWJjYzEncyBpbnN0YWxsIHBhdGggYW5kIHJwYXRoCi0KLSogSW5zdGFsbCBsaWJjYzEuc28gYW5kIGxpYmNjMXBsdWdpbi5zbyBpbnRvCi0gICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbiksIGFzIHdoYXQgd2UKLSAgaGFkIGRvbmUgdG8gbHRvLXBsdWdpbi4KLSogRml4IGJhZCBSUEFUSCBpdXNzdWU6Ci0gIGdjYy01LjIuMDogcGFja2FnZSBnY2MtcGx1Z2lucyBjb250YWlucyBiYWQgUlBBVEggL3BhdGh0L3RvL3RtcC9zeXNyb290cy9xZW11eDg2LTY0L3Vzci9saWI2NC8uLi9saWI2NCBpbiBmaWxlCi0gL3BhdGgvdG8vZ2NjLzUuMi4wLXIwL3BhY2thZ2VzLXNwbGl0L2djYy1wbHVnaW5zL3Vzci9saWI2NC9nY2MveDg2XzY0LXBva3ktbGludXgvNS4yLjAvcGx1Z2luL2xpYmNjMXBsdWdpbi5zby4wLjAuMAotIFtycGF0aHNdCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJjYzEvTWFrZWZpbGUuYW0gfCA0ICsrLS0KLSBsaWJjYzEvTWFrZWZpbGUuaW4gfCA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmNjMS9NYWtlZmlsZS5hbSBiL2xpYmNjMS9NYWtlZmlsZS5hbQotaW5kZXggYjQwODIwYi4uMzI5MzBjNSAxMDA2NDQKLS0tLSBhL2xpYmNjMS9NYWtlZmlsZS5hbQotKysrIGIvbGliY2MxL01ha2VmaWxlLmFtCi1AQCAtMzUsOCArMzUsOCBAQCBsaWJpYmVydHkgPSAkKGlmICQod2lsZGNhcmQgJChsaWJpYmVydHlfbm9hc2FuKSksJChXYykkKGxpYmliZXJ0eV9ub2FzYW4pLCBcCi0gCSAgICAkKFdjKSQobGliaWJlcnR5X25vcm1hbCkpKQotIGxpYmliZXJ0eV9kZXAgPSAkKHBhdHN1YnN0ICQoV2MpJSwlLCQobGliaWJlcnR5KSkKLSAKLS1wbHVnaW5kaXIgPSAkKGxpYmRpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikvcGx1Z2luCi0tY2MxbGliZGlyID0gJChsaWJkaXIpLyQobGlic3VmZml4KQotK2NjMWxpYmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikKLStwbHVnaW5kaXIgPSAkKGNjMWxpYmRpcikKLSAKLSBpZiBFTkFCTEVfUExVR0lOCi0gcGx1Z2luX0xUTElCUkFSSUVTID0gbGliY2MxcGx1Z2luLmxhCi1kaWZmIC0tZ2l0IGEvbGliY2MxL01ha2VmaWxlLmluIGIvbGliY2MxL01ha2VmaWxlLmluCi1pbmRleCA3OWQzOWQzLi4yMjdlYzIyIDEwMDY0NAotLS0tIGEvbGliY2MxL01ha2VmaWxlLmluCi0rKysgYi9saWJjYzEvTWFrZWZpbGUuaW4KLUBAIC0yOTEsOCArMjkxLDggQEAgbGliaWJlcnR5ID0gJChpZiAkKHdpbGRjYXJkICQobGliaWJlcnR5X25vYXNhbikpLCQoV2MpJChsaWJpYmVydHlfbm9hc2FuKSwgXAotIAkgICAgJChXYykkKGxpYmliZXJ0eV9ub3JtYWwpKSkKLSAKLSBsaWJpYmVydHlfZGVwID0gJChwYXRzdWJzdCAkKFdjKSUsJSwkKGxpYmliZXJ0eSkpCi0tcGx1Z2luZGlyID0gJChsaWJkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pL3BsdWdpbgotLWNjMWxpYmRpciA9ICQobGliZGlyKS8kKGxpYnN1ZmZpeCkKLStjYzFsaWJkaXIgPSAkKGxpYmV4ZWNkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pCi0rcGx1Z2luZGlyID0gJChjYzFsaWJkaXIpCi0gQEVOQUJMRV9QTFVHSU5fVFJVRUBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJjYzFwbHVnaW4ubGEKLSBARU5BQkxFX1BMVUdJTl9UUlVFQGNjMWxpYl9MVExJQlJBUklFUyA9IGxpYmNjMS5sYQotIEJVSUxUX1NPVVJDRVMgPSBjb21waWxlci1uYW1lLmgKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDM3LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzctaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTVlZmNiMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzctaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxMyArMCwwIEBACi1Gcm9tIDE0NzViOTQxZDdhOWM5ODc0YjBmYjA1NThkMDE4MDU5NDU0NjczMzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCA3IERlYyAyMDE1IDIzOjM5OjU0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMzcvNDZdIGhhbmRsZSBzeXNyb290IHN1cHBvcnQgZm9yIG5hdGl2ZXNkay1nY2MKLQotQmVpbmcgYWJsZSB0byBidWlsZCBhIG5hdGl2ZXNkayBnY2MgaXMgdXNlZnVsLCBwYXJ0aWN1bGFybHkgaW4gY2FzZXMKLXdoZXJlIHRoZSBob3N0IGNvbXBpbGVyIG1heSBiZSBvZiBhbiBpbmNvbXBhdGlibGUgdmVyc2lvbiAob3IgYSAzMgotYml0IGNvbXBpbGVyIGlzIG5lZWRlZCkuCi0KLVNhZGx5LCBidWlsZGluZyBuYXRpdmVzZGstZ2NjIGlzIG5vdCBzdHJhaWdodCBmb3J3YXJkLiBXZSBpbnN0YWxsCi1uYXRpdmVzZGstZ2NjIGludG8gYSByZWxvY2F0YWJsZSBsb2NhdGlvbiBhbmQgdGhpcyBtZWFucyB0aGF0IGl0cwotbGlicmFyeSBsb2NhdGlvbnMgY2FuIGNoYW5nZS4gIk5vcm1hbCIgc3lzcm9vdCBzdXBwb3J0IGRvZXNuJ3QgaGVscAotaW4gdGhpcyBjYXNlIHNpbmNlIHRoZSB2YWx1ZXMgb2YgcGF0aHMgbGlrZSAibGliZGlyIiBjaGFuZ2UsIG5vdCBqdXN0Ci1iYXNlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBzeXN0ZW0uCi0KLUluIG9yZGVyIHRvIGhhbmRsZSB0aGlzIHdlIGRvIHR3byB0aGluZ3M6Ci0KLWEpIEFkZCAlciBpbnRvIHNwZWMgZmlsZSBtYXJrdXAgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGluamVjdGVkIHBhdGhzCi0gICBzdWNoIGFzIFNZU1RFTUxJQlNfRElSIChzZWUgZ2NjX211bHRpbGliX3NldHVwKCkpLgotYikgQWRkIG90aGVyIHBhdGhzIHdoaWNoIG5lZWQgcmVsb2NhdGlvbiBpbnRvIGEgLmdjY3JlbG9jcHJlZml4IHNlY3Rpb24KLSAgIHdoaWNoIHRoZSByZWxvY2F0aW9uIGNvZGUgd2lsbCBub3RpY2UgYW5kIGFkanVzdCBhdXRvbWF0aWNhbGx5LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLVJQIDIwMTUvNy8yOAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NwcGRlZmF1bHQuYyB8IDUwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCi0gZ2NjL2NwcGRlZmF1bHQuaCB8ICAzICsrLQotIGdjYy9nY2MuYyAgICAgICAgfCAyMCArKysrKysrKysrKysrKy0tLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY3BwZGVmYXVsdC5jIGIvZ2NjL2NwcGRlZmF1bHQuYwotaW5kZXggN2I0ZGQ1MS4uOWQxMTY2YyAxMDA2NDQKLS0tLSBhL2djYy9jcHBkZWZhdWx0LmMKLSsrKyBiL2djYy9jcHBkZWZhdWx0LmMKLUBAIC0zNSw2ICszNSwzMCBAQAotICMgdW5kZWYgQ1JPU1NfSU5DTFVERV9ESVIKLSAjZW5kaWYKLSAKLStzdGF0aWMgY2hhciBHUExVU1BMVVNfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX0lOQ0xVREVfRElSOwotK3N0YXRpYyBjaGFyIEdDQ19JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHQ0NfSU5DTFVERV9ESVI7Ci0rc3RhdGljIGNoYXIgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVI7Ci0rc3RhdGljIGNoYXIgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUjsKLStzdGF0aWMgY2hhciBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQ7Ci0rI2lmZGVmIExPQ0FMX0lOQ0xVREVfRElSCi0rc3RhdGljIGNoYXIgTE9DQUxfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gTE9DQUxfSU5DTFVERV9ESVI7Ci0rI2VuZGlmCi0rI2lmZGVmIFBSRUZJWF9JTkNMVURFX0RJUgotK3N0YXRpYyBjaGFyIFBSRUZJWF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBQUkVGSVhfSU5DTFVERV9ESVI7Ci0rI2VuZGlmCi0rI2lmZGVmIEZJWEVEX0lOQ0xVREVfRElSCi0rc3RhdGljIGNoYXIgRklYRURfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gRklYRURfSU5DTFVERV9ESVI7Ci0rI2VuZGlmCi0rI2lmZGVmIENST1NTX0lOQ0xVREVfRElSCi0rc3RhdGljIGNoYXIgQ1JPU1NfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gQ1JPU1NfSU5DTFVERV9ESVI7Ci0rI2VuZGlmCi0rI2lmZGVmIFRPT0xfSU5DTFVERV9ESVIKLStzdGF0aWMgY2hhciBUT09MX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFRPT0xfSU5DTFVERV9ESVI7Ci0rI2VuZGlmCi0rI2lmZGVmIE5BVElWRV9TWVNURU1fSEVBREVSX0RJUgotK3N0YXRpYyBjaGFyIE5BVElWRV9TWVNURU1fSEVBREVSX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVI7Ci0rI2VuZGlmCi0rCi0gY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCi0gI2lmZGVmIElOQ0xVREVfREVGQVVMVFMKLSA9IElOQ0xVREVfREVGQVVMVFM7Ci1AQCAtNDIsMzggKzY2LDM4IEBAIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXQotID0gewotICNpZmRlZiBHUExVU1BMVVNfSU5DTFVERV9ESVIKLSAgICAgLyogUGljayB1cCBHTlUgQysrIGdlbmVyaWMgaW5jbHVkZSBmaWxlcy4gICovCi0tICAgIHsgR1BMVVNQTFVTX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwKLSsgICAgeyBHUExVU1BMVVNfSU5DTFVERV9ESVJWQVIsICJHKysiLCAxLCAxLAotICAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUgotICAgICAvKiBQaWNrIHVwIEdOVSBDKysgdGFyZ2V0LWRlcGVuZGVudCBpbmNsdWRlIGZpbGVzLiAgKi8KLS0gICAgeyBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCi0rICAgIHsgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVJWQVIsICJHKysiLCAxLCAxLAotICAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMSB9LAotICNlbmRpZgotICNpZmRlZiBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVIKLSAgICAgLyogUGljayB1cCBHTlUgQysrIGJhY2t3YXJkIGFuZCBkZXByZWNhdGVkIGluY2x1ZGUgZmlsZXMuICAqLwotLSAgICB7IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCi0rICAgIHsgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSVkFSLCAiRysrIiwgMSwgMSwKLSAgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgR0NDX0lOQ0xVREVfRElSCi0gICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzLiAgKi8KLS0gICAgeyBHQ0NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCi0rICAgIHsgR0NDX0lOQ0xVREVfRElSVkFSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUCi0gICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzIHVuZGVyIHRoZSBzcGVjaWZpZWQgc3lzcm9vdC4gICovCi0tICAgIHsgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQsICJHQ0MiLCAwLCAwLCAxLCAwIH0sCi0rICAgIHsgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yVkFSLCAiR0NDIiwgMCwgMCwgMSwgMCB9LAotICNlbmRpZgotICNpZmRlZiBMT0NBTF9JTkNMVURFX0RJUgotICAgICAvKiAvdXNyL2xvY2FsL2luY2x1ZGUgY29tZXMgYmVmb3JlIHRoZSBmaXhpbmNsdWRlZCBoZWFkZXIgZmlsZXMuICAqLwotLSAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAyIH0sCi0tICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDAgfSwKLSsgICAgeyBMT0NBTF9JTkNMVURFX0RJUlZBUiwgMCwgMCwgMSwgMSwgMiB9LAotKyAgICB7IExPQ0FMX0lOQ0xVREVfRElSVkFSLCAwLCAwLCAxLCAxLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIFBSRUZJWF9JTkNMVURFX0RJUgotLSAgICB7IFBSRUZJWF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMCwgMCB9LAotKyAgICB7IFBSRUZJWF9JTkNMVURFX0RJUlZBUiwgMCwgMCwgMSwgMCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBGSVhFRF9JTkNMVURFX0RJUgotICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGZpeGluY2x1ZGVzLiAgKi8KLS0gICAgeyBGSVhFRF9JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsCi0rICAgIHsgRklYRURfSU5DTFVERV9ESVJWQVIsICJHQ0MiLCAwLCAwLCAwLAotICAgICAgIC8qIEEgbXVsdGlsaWIgc3VmZml4IG5lZWRzIGFkZGluZyBpZiBkaWZmZXJlbnQgbXVsdGlsaWJzIHVzZQotIAkgZGlmZmVyZW50IGhlYWRlcnMuICAqLwotICNpZmRlZiBTWVNST09UX0hFQURFUlNfU1VGRklYX1NQRUMKLUBAIC04NSwxNiArMTA5LDE2IEBAIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXQotICNlbmRpZgotICNpZmRlZiBDUk9TU19JTkNMVURFX0RJUgotICAgICAvKiBPbmUgcGxhY2UgdGhlIHRhcmdldCBzeXN0ZW0ncyBoZWFkZXJzIG1pZ2h0IGJlLiAgKi8KLS0gICAgeyBDUk9TU19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKLSsgICAgeyBDUk9TU19JTkNMVURFX0RJUlZBUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgVE9PTF9JTkNMVURFX0RJUgotICAgICAvKiBBbm90aGVyIHBsYWNlIHRoZSB0YXJnZXQgc3lzdGVtJ3MgaGVhZGVycyBtaWdodCBiZS4gICovCi0tICAgIHsgVE9PTF9JTkNMVURFX0RJUiwgIkJJTlVUSUxTIiwgMCwgMSwgMCwgMCB9LAotKyAgICB7IFRPT0xfSU5DTFVERV9ESVJWQVIsICJCSU5VVElMUyIsIDAsIDEsIDAsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSCi0gICAgIC8qIC91c3IvaW5jbHVkZSBjb21lcyBkZWFkIGxhc3QuICAqLwotLSAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAyIH0sCi0tICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDAgfSwKLSsgICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVJWQVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMiB9LAotKyAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUlZBUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAwIH0sCi0gI2VuZGlmCi0gICAgIHsgMCwgMCwgMCwgMCwgMCwgMCB9Ci0gICB9OwotZGlmZiAtLWdpdCBhL2djYy9jcHBkZWZhdWx0LmggYi9nY2MvY3BwZGVmYXVsdC5oCi1pbmRleCA4YTgxYjQ1Li45NzU5ZWZkIDEwMDY0NAotLS0tIGEvZ2NjL2NwcGRlZmF1bHQuaAotKysrIGIvZ2NjL2NwcGRlZmF1bHQuaAotQEAgLTMzLDcgKzMzLDggQEAKLSAKLSBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlCi0gewotLSAgY29uc3QgY2hhciAqY29uc3QgZm5hbWU7CS8qIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkuICAqLwotKyAgY29uc3QgY2hhciAqZm5hbWU7ICAgICAvKiBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5LiAgKi8KLSsKLSAgIGNvbnN0IGNoYXIgKmNvbnN0IGNvbXBvbmVudDsJLyogVGhlIGNvbXBvbmVudCBjb250YWluaW5nIHRoZSBkaXJlY3RvcnkKLSAJCQkJICAgKHNlZSB1cGRhdGVfcGF0aCBpbiBwcmVmaXguYykgKi8KLSAgIGNvbnN0IGNoYXIgY3BsdXNwbHVzOwkJLyogT25seSBsb29rIGhlcmUgaWYgd2UncmUgY29tcGlsaW5nIEMrKy4gICovCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCA5NzUwY2MyLi45NGMyNDBlIDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC0yNDcsNiArMjQ3LDggQEAgRklMRSAqcmVwb3J0X3RpbWVzX3RvX2ZpbGUgPSBOVUxMOwotICNlbmRpZgotIHN0YXRpYyBjb25zdCBjaGFyICp0YXJnZXRfc3lzdGVtX3Jvb3QgPSBERUZBVUxUX1RBUkdFVF9TWVNURU1fUk9PVDsKLSAKLStzdGF0aWMgY2hhciB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNZU1RFTUxJQlNfRElSOwotKwotIC8qIE5vbnplcm8gbWVhbnMgcGFzcyB0aGUgdXBkYXRlZCB0YXJnZXRfc3lzdGVtX3Jvb3QgdG8gdGhlIGNvbXBpbGVyLiAgKi8KLSAKLSBzdGF0aWMgaW50IHRhcmdldF9zeXN0ZW1fcm9vdF9jaGFuZ2VkOwotQEAgLTUxNyw2ICs1MTksNyBAQCBvciB3aXRoIGNvbnN0YW50IHRleHQgaW4gYSBzaW5nbGUgYXJndW1lbnQuCi0gICVHICAgICBwcm9jZXNzIExJQkdDQ19TUEVDIGFzIGEgc3BlYy4KLSAgJVIgICAgIE91dHB1dCB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0YXJnZXRfc3lzdGVtX3Jvb3QgYW5kCi0gICAgICAgICB0YXJnZXRfc3lzcm9vdF9zdWZmaXguCi0rICVyICAgICBPdXRwdXQgdGhlIGJhc2UgcGF0aCB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4Ci0gICVTICAgICBwcm9jZXNzIFNUQVJURklMRV9TUEVDIGFzIGEgc3BlYy4gIEEgY2FwaXRhbCBTIGlzIGFjdHVhbGx5IHVzZWQgaGVyZS4KLSAgJUUgICAgIHByb2Nlc3MgRU5ERklMRV9TUEVDIGFzIGEgc3BlYy4gIEEgY2FwaXRhbCBFIGlzIGFjdHVhbGx5IHVzZWQgaGVyZS4KLSAgJUMgICAgIHByb2Nlc3MgQ1BQX1NQRUMgYXMgYSBzcGVjLgotQEAgLTE0NzMsMTAgKzE0NzYsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmdjY19saWJleGVjX3ByZWZpeDsKLSAgICBnY2NfZXhlY19wcmVmaXggaXMgc2V0IGJlY2F1c2UsIGluIHRoYXQgY2FzZSwgd2Uga25vdyB3aGVyZSB0aGUKLSAgICBjb21waWxlciBoYXMgYmVlbiBpbnN0YWxsZWQsIGFuZCB1c2UgcGF0aHMgcmVsYXRpdmUgdG8gdGhhdAotICAgIGxvY2F0aW9uIGluc3RlYWQuICAqLwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9leGVjX3ByZWZpeCA9IFNUQU5EQVJEX0VYRUNfUFJFRklYOwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9saWJleGVjX3ByZWZpeCA9IFNUQU5EQVJEX0xJQkVYRUNfUFJFRklYOwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9iaW5kaXJfcHJlZml4ID0gU1RBTkRBUkRfQklORElSX1BSRUZJWDsKLS1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeCA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVg7Ci0rc3RhdGljIGNoYXIgc3RhbmRhcmRfZXhlY19wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfRVhFQ19QUkVGSVg7Ci0rc3RhdGljIGNoYXIgc3RhbmRhcmRfbGliZXhlY19wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfTElCRVhFQ19QUkVGSVg7Ci0rc3RhdGljIGNoYXIgc3RhbmRhcmRfYmluZGlyX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9CSU5ESVJfUFJFRklYOwotK3N0YXRpYyBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKLSAKLSAvKiBGb3IgbmF0aXZlIGNvbXBpbGVycywgdGhlc2UgYXJlIHdlbGwta25vd24gcGF0aHMgY29udGFpbmluZwotICAgIGNvbXBvbmVudHMgdGhhdCBtYXkgYmUgcHJvdmlkZWQgYnkgdGhlIHN5c3RlbS4gIEZvciBjcm9zcwotQEAgLTE0ODQsOSArMTQ4Nyw5IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKLSBzdGF0aWMgY29uc3QgY2hhciAqbWRfZXhlY19wcmVmaXggPSBNRF9FWEVDX1BSRUZJWDsKLSBzdGF0aWMgY29uc3QgY2hhciAqbWRfc3RhcnRmaWxlX3ByZWZpeCA9IE1EX1NUQVJURklMRV9QUkVGSVg7Ci0gc3RhdGljIGNvbnN0IGNoYXIgKm1kX3N0YXJ0ZmlsZV9wcmVmaXhfMSA9IE1EX1NUQVJURklMRV9QUkVGSVhfMTsKLS1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8xCi0rc3RhdGljIGNoYXIgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8xWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKQotICAgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzE7Ci0tc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMgotK3N0YXRpYyBjaGFyIHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkKLSAgID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yOwotIAotIC8qIEEgcmVsYXRpdmUgcGF0aCB0byBiZSB1c2VkIGluIGZpbmRpbmcgdGhlIGxvY2F0aW9uIG9mIHRvb2xzCi1AQCAtNTc2Miw2ICs1NzY1LDExIEBAIGRvX3NwZWNfMSAoY29uc3QgY2hhciAqc3BlYywgaW50IGluc3dpdGNoLCBjb25zdCBjaGFyICpzb2Z0X21hdGNoZWRfcGFydCkKLSAJICAgICAgfQotIAkgICAgYnJlYWs7Ci0gCi0rICAgICAgICAgIGNhc2UgJ3InOgotKyAgICAgICAgICAgICAgb2JzdGFja19ncm93ICgmb2JzdGFjaywgdGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeCwKLSsJCSAgICAgIHN0cmxlbiAodGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeCkpOwotKyAgICAgICAgICAgIGJyZWFrOwotKwotIAkgIGNhc2UgJ1MnOgotIAkgICAgdmFsdWUgPSBkb19zcGVjXzEgKHN0YXJ0ZmlsZV9zcGVjLCAwLCBOVUxMKTsKLSAJICAgIGlmICh2YWx1ZSAhPSAwKQotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzgtU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzOC1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWVlNzlkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDAzOC1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLUZyb20gNDJlNGNkY2FhZDU5MDUzNjI0Njg2NmIwODQ2ZWMyNzllMTI0ZmExNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6NDE6NDUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAzOC80Nl0gU2VhcmNoIHRhcmdldCBzeXNyb290IGdjYyB2ZXJzaW9uIHNwZWNpZmljIGRpcnMgd2l0aAotIG11bHRpbGliLgotCi1XZSBpbnN0YWxsIHRoZSBnY2MgbGlicmFyaWVzIChzdWNoIGFzIGNydGJlZ2luLnApIGludG8KLTxzeXNyb290PjxsaWJkaXI+Lzx0YXJnZXQtc3lzPi81LjIuMC8KLXdoaWNoIGlzIGEgZGVmYXVsdCBzZWFyY2ggcGF0aCBmb3IgR0NDIChha2EgbXVsdGlfc3VmZml4IGluIHRoZQotY29kZSBiZWxvdykuIDx0YXJnZXQtc3lzPiBpcyAnbWFjaGluZScgaW4gZ2NjJ3MgdGVybWlub2xvZ3kuIFdlIHVzZQotdGhlc2UgZGlyZWN0b3JpZXMgc28gdGhhdCBtdWx0aXBsZSBnY2MgdmVyc2lvbnMgY291bGQgaW4gdGhlb3J5Ci1jby1leGlzdCBvbiB0YXJnZXQuCi0KLVdlIG9ubHkgd2FudCB0byBidWlsZCBvbmUgZ2NjLWNyb3NzLWNhbmFkaWFuIHBlciBhcmNoIGFuZCBoYXZlIHRoaXMgd29yawotZm9yIGFsbCBtdWx0aWxpYnMuIDx0YXJnZXQtc3lzPiBjYW4gYmUgaGFuZGxlZCBieSBtYXBwaW5nIHRoZSBtdWx0aWxpYgotPHRhcmdldC1zeXM+IHRvIHRoZSBvbmUgdXNlZCBieSBnY2MtY3Jvc3MtY2FuYWRpYW4sIGUuZy4KLW1pcHM2NC1wb2xrbWxsaWIzMi1saW51eAotaXMgc3ltbGlua2VkIHRvIGJ5IG1pcHM2NC1wb2t5LWxpbnV4LgotCi1UaGUgZGVmYXVsdCBnY2Mgc2VhcmNoIHBhdGggaW4gdGhlIHRhcmdldCBzeXNyb290IGZvciBhICJsaWI2NCIgbXV0bGlsaWIKLWlzOgotCi08c3lzcm9vdD4vbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCi08c3lzcm9vdD4vbGliMzIvLi4vbGliNjQvCi08c3lzcm9vdD4vdXNyL2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC8KLTxzeXNyb290Pi9saWIzMi8KLTxzeXNyb290Pi91c3IvbGliMzIvCi0KLXdoaWNoIG1lYW5zIHRoYXQgdGhlIGxpYjMyIGNydGJlZ2luLm8gd2lsbCBiZSBmb3VuZCBhbmQgdGhlIGxpYjY0IG9uZXMKLXdpbGwgbm90IHdoaWNoIGxlYWRzIHRvIGNvbXBpbGVyIGZhaWx1cmVzLgotCi1UaGlzIHBhdGNoIGluamVjdHMgYSBtdWx0aWxpYiB2ZXJzaW9uIG9mIHRoYXQgcGF0aCBmaXJzdCBzbyB0aGUgbGliNjQKLWJpbmFyaWVzIGNhbiBiZSBmb3VuZCBmaXJzdC4gV2l0aCB0aGlzIGNoYW5nZSB0aGUgc2VhcmNoIHBhdGggYmVjb21lczoKLQotPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0L21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0LwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC9taXBzNjQtcG9reS1saW51eC81LjIuMC8KLTxzeXNyb290Pi91c3IvbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCi08c3lzcm9vdD4vdXNyL2xpYjMyLy4uL2xpYjY0LwotPHN5c3Jvb3Q+L2xpYjMyLwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1SUCAyMDE1LzcvMzEKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9nY2MuYyB8IDI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggOTRjMjQwZS4uMjgxMjgxOSAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtMjUwNyw3ICsyNTA3LDcgQEAgZm9yX2VhY2hfcGF0aCAoY29uc3Qgc3RydWN0IHBhdGhfcHJlZml4ICpwYXRocywKLSAgICAgICBpZiAocGF0aCA9PSBOVUxMKQotIAl7Ci0gCSAgbGVuID0gcGF0aHMtPm1heF9sZW4gKyBleHRyYV9zcGFjZSArIDE7Ci0tCSAgbGVuICs9IE1BWCAoTUFYIChzdWZmaXhfbGVuLCBtdWx0aV9vc19kaXJfbGVuKSwgbXVsdGlhcmNoX2xlbik7Ci0rCSAgbGVuICs9IE1BWCAoKHN1ZmZpeF9sZW4gKyBtdWx0aV9vc19kaXJfbGVuKSwgbXVsdGlhcmNoX2xlbik7Ci0gCSAgcGF0aCA9IFhORVdWRUMgKGNoYXIsIGxlbik7Ci0gCX0KLSAKLUBAIC0yNTE5LDYgKzI1MTksMzMgQEAgZm9yX2VhY2hfcGF0aCAoY29uc3Qgc3RydWN0IHBhdGhfcHJlZml4ICpwYXRocywKLSAJICAvKiBMb29rIGZpcnN0IGluIE1BQ0hJTkUvVkVSU0lPTiBzdWJkaXJlY3RvcnkuICAqLwotIAkgIGlmICghc2tpcF9tdWx0aV9kaXIpCi0gCSAgICB7Ci0rCSAgICAgIGlmICghKHBsLT5vc19tdWx0aWxpYiA/IHNraXBfbXVsdGlfb3NfZGlyIDogc2tpcF9tdWx0aV9kaXIpKQotKwkgICAgICAgIHsKLSsJICAgICAgICAgIGNvbnN0IGNoYXIgKnRoaXNfbXVsdGk7Ci0rCSAgICAgICAgICBzaXplX3QgdGhpc19tdWx0aV9sZW47Ci0rCi0rCSAgICAgICAgICBpZiAocGwtPm9zX211bHRpbGliKQotKwkJICAgIHsKLSsJCSAgICAgIHRoaXNfbXVsdGkgPSBtdWx0aV9vc19kaXI7Ci0rCQkgICAgICB0aGlzX211bHRpX2xlbiA9IG11bHRpX29zX2Rpcl9sZW47Ci0rCQkgICAgfQotKwkgICAgICAgICAgZWxzZQotKwkJICAgIHsKLSsJCSAgICAgIHRoaXNfbXVsdGkgPSBtdWx0aV9kaXI7Ci0rCQkgICAgICB0aGlzX211bHRpX2xlbiA9IG11bHRpX2Rpcl9sZW47Ci0rCQkgICAgfQotKwotKwkgICAgICAgICAgLyogTG9vayBpbiBtdWx0aWxpYiBNQUNISU5FL1ZFUlNJT04gc3ViZGlyZWN0b3J5IGZpcnN0ICovCi0rCSAgICAgICAgICBpZiAodGhpc19tdWx0aV9sZW4pCi0rCSAgICAgICAgICAgIHsKLSsJCSAgICAgIG1lbWNweSAocGF0aCArIGxlbiwgdGhpc19tdWx0aSwgdGhpc19tdWx0aV9sZW4gKyAxKTsKLSsJICAgICAgICAgICAgICBtZW1jcHkgKHBhdGggKyBsZW4gKyB0aGlzX211bHRpX2xlbiwgbXVsdGlfc3VmZml4LCBzdWZmaXhfbGVuICsgMSk7Ci0rCSAgICAgICAgICAgICAgcmV0ID0gY2FsbGJhY2sgKHBhdGgsIGNhbGxiYWNrX2luZm8pOwotKwkgICAgICAgICAgICAgICAgaWYgKHJldCkKLSsJCSAgICAgICAgICBicmVhazsKLSsJICAgICAgICAgICAgfQotKwkgICAgICAgIH0KLSsKLSAJICAgICAgbWVtY3B5IChwYXRoICsgbGVuLCBtdWx0aV9zdWZmaXgsIHN1ZmZpeF9sZW4gKyAxKTsKLSAJICAgICAgcmV0ID0gY2FsbGJhY2sgKHBhdGgsIGNhbGxiYWNrX2luZm8pOwotIAkgICAgICBpZiAocmV0KQotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzktRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwMzktRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjZTdhZWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDM5LUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLUZyb20gOWNlZDQ5ZTQ1OWNjZjE4ODdmZWI1OGFkZjFlODgzNmRjYjRiMWJkZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6NDI6NDUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAzOS80Nl0gRml4IHZhcmlvdXMgX0ZPUl9CVUlMRCBhbmQgcmVsYXRlZCB2YXJpYWJsZXMKLQotV2hlbiBkb2luZyBhIEZPUl9CVUlMRCB0aGluZywgeW91IGhhdmUgdG8gb3ZlcnJpZGUgQ0ZMQUdTIHdpdGgKLUNGTEFHU19GT1JfQlVJTEQuIEFuZCBpZiB5b3UgdXNlIEMrKywgeW91IGFsc28gaGF2ZSB0byBvdmVycmlkZQotQ1hYRkxBR1Mgd2l0aCBDWFhGTEFHU19GT1JfQlVJTEQuCi1XaXRob3V0IHRoaXMsIHdoZW4gYnVpbGRpbmcgZm9yIG1pbmd3LCB5b3UgZW5kIHVwIHRyeWluZyB0byB1c2UKLXRoZSBtaW5ndyBoZWFkZXJzIGZvciBhIGhvc3QgYnVpbGQuCi0KLVRoZSBzYW1lIGdvZXMgZm9yIG90aGVyIHZhcmlhYmxlcyBhcyB3ZWxsLCBzdWNoIGFzIENQUEZMQUdTLAotQ1BQLCBhbmQgR01QSU5DLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUGV0ZXIgU2VlYmFjaCA8cGV0ZXIuc2VlYmFjaEB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlLmluICAgICAgfCA2ICsrKysrKwotIE1ha2VmaWxlLnRwbCAgICAgfCA1ICsrKysrCi0gZ2NjL01ha2VmaWxlLmluICB8IDIgKy0KLSBnY2MvY29uZmlndXJlICAgIHwgMiArLQotIGdjYy9jb25maWd1cmUuYWMgfCAyICstCi0gNSBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggYmViOWI5YS4uM2UxYzZiYyAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTE1Miw2ICsxNTIsNyBAQCBCVUlMRF9FWFBPUlRTID0gXAotIAlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSI7IGV4cG9ydCBDUFA7IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENQUEZMQUdTOyBcCi0gCUNYWD0iJChDWFhfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFg7IFwKLSAJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFhGTEFHUzsgXAotIAlHQ0o9IiQoR0NKX0ZPUl9CVUlMRCkiOyBleHBvcnQgR0NKOyBcCi1AQCAtMTcwLDYgKzE3MSw5IEBAIEJVSUxEX0VYUE9SVFMgPSBcCi0gIyBidWlsdCBmb3IgdGhlIGJ1aWxkIHN5c3RlbSB0byBvdmVycmlkZSB0aG9zZSBpbiBCQVNFX0ZMQUdTX1RPX1BBU1MuCi0gRVhUUkFfQlVJTERfRkxBR1MgPSBcCi0gCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSIgXAotKwlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIiBcCi0rCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIiBcCi0rCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSAJTERGTEFHUz0iJChMREZMQUdTX0ZPUl9CVUlMRCkiCi0gCi0gIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJ1aWx0IGZvciB0aGUgaG9zdCBzeXN0ZW0uCi1AQCAtMTg3LDYgKzE5MSw3IEBAIEhPU1RfU1VCRElSID0gQGhvc3Rfc3ViZGlyQAotIEhPU1RfRVhQT1JUUyA9IFwKLSAJJChCQVNFX0VYUE9SVFMpIFwKLSAJQ0M9IiQoQ0MpIjsgZXhwb3J0IENDOyBcCi0rCUNQUD0iJChDQykgLUUiOyBleHBvcnQgQ1BQOyBcCi0gCUFEQV9DRkxBR1M9IiQoQURBX0NGTEFHUykiOyBleHBvcnQgQURBX0NGTEFHUzsgXAotIAlDRkxBR1M9IiQoQ0ZMQUdTKSI7IGV4cG9ydCBDRkxBR1M7IFwKLSAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKLUBAIC03MTMsNiArNzE4LDcgQEAgQkFTRV9GTEFHU19UT19QQVNTID0gXAotIAkiQ0NfRk9SX0JVSUxEPSQoQ0NfRk9SX0JVSUxEKSIgXAotIAkiQ0ZMQUdTX0ZPUl9CVUlMRD0kKENGTEFHU19GT1JfQlVJTEQpIiBcCi0gCSJDWFhfRk9SX0JVSUxEPSQoQ1hYX0ZPUl9CVUlMRCkiIFwKLSsJIkNYWEZMQUdTX0ZPUl9CVUlMRD0kKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSAJIkVYUEVDVD0kKEVYUEVDVCkiIFwKLSAJIkZMRVg9JChGTEVYKSIgXAotIAkiSU5TVEFMTD0kKElOU1RBTEwpIiBcCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUudHBsIGIvTWFrZWZpbGUudHBsCi1pbmRleCA2YjJlYjZhLi4xMTRlNDYyIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUudHBsCi0rKysgYi9NYWtlZmlsZS50cGwKLUBAIC0xNTQsNiArMTU0LDcgQEAgQlVJTERfRVhQT1JUUyA9IFwKLSAJQ0M9IiQoQ0NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDQzsgXAotIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0ZMQUdTOyBcCi0gCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCi0rCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1BQRkxBR1M7IFwKLSAJQ1hYPSIkKENYWF9GT1JfQlVJTEQpIjsgZXhwb3J0IENYWDsgXAotIAlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENYWEZMQUdTOyBcCi0gCUdDSj0iJChHQ0pfRk9SX0JVSUxEKSI7IGV4cG9ydCBHQ0o7IFwKLUBAIC0xNzIsNiArMTczLDkgQEAgQlVJTERfRVhQT1JUUyA9IFwKLSAjIGJ1aWx0IGZvciB0aGUgYnVpbGQgc3lzdGVtIHRvIG92ZXJyaWRlIHRob3NlIGluIEJBU0VfRkxBR1NfVE9fUEFTUy4KLSBFWFRSQV9CVUlMRF9GTEFHUyA9IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIiBcCi0rCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSsJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiIFwKLSsJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSIgXAotIAlMREZMQUdTPSIkKExERkxBR1NfRk9SX0JVSUxEKSIKLSAKLSAjIFRoaXMgaXMgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gYnVpbHQgZm9yIHRoZSBob3N0IHN5c3RlbS4KLUBAIC0xODksNiArMTkzLDcgQEAgSE9TVF9TVUJESVIgPSBAaG9zdF9zdWJkaXJACi0gSE9TVF9FWFBPUlRTID0gXAotIAkkKEJBU0VfRVhQT1JUUykgXAotIAlDQz0iJChDQykiOyBleHBvcnQgQ0M7IFwKLSsJQ1BQPSIkKENDKSAtRSI7IGV4cG9ydCBDUFA7IFwKLSAJQURBX0NGTEFHUz0iJChBREFfQ0ZMQUdTKSI7IGV4cG9ydCBBREFfQ0ZMQUdTOyBcCi0gCUNGTEFHUz0iJChDRkxBR1MpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgotaW5kZXggY2M3NTUzNi4uMGFkMmRjOCAxMDA2NDQKLS0tLSBhL2djYy9NYWtlZmlsZS5pbgotKysrIGIvZ2NjL01ha2VmaWxlLmluCi1AQCAtNzgwLDcgKzc4MCw3IEBAIEJVSUxEX0xERkxBR1M9QEJVSUxEX0xERkxBR1NACi0gQlVJTERfTk9fUElFX0ZMQUcgPSBAQlVJTERfTk9fUElFX0ZMQUdACi0gQlVJTERfTERGTEFHUyArPSAkKEJVSUxEX05PX1BJRV9GTEFHKQotIEJVSUxEX0NQUEZMQUdTPSAtSS4gLUkkKEBEKSAtSSQoc3JjZGlyKSAtSSQoc3JjZGlyKS8kKEBEKSBcCi0tCQktSSQoc3JjZGlyKS8uLi9pbmNsdWRlIEBJTkNJTlRMQCAkKENQUElOQykgJChDUFBGTEFHUykKLSsJCS1JJChzcmNkaXIpLy4uL2luY2x1ZGUgQElOQ0lOVExAICQoQ1BQSU5DKSAkKENQUEZMQUdTX0ZPUl9CVUlMRCkKLSAKLSAjIEFjdHVhbCBuYW1lIHRvIHVzZSB3aGVuIGluc3RhbGxpbmcgYSBuYXRpdmUgY29tcGlsZXIuCi0gR0NDX0lOU1RBTExfTkFNRSA6PSAkKHNoZWxsIGVjaG8gZ2NjfHNlZCAnJChwcm9ncmFtX3RyYW5zZm9ybV9uYW1lKScpCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IDM3NzI1M2UuLjc4ZmM2NGEgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMTE3OTksNyArMTE3OTksNyBAQCBlbHNlCi0gCUNDPSIke0NDX0ZPUl9CVUlMRH0iIENGTEFHUz0iJHtDRkxBR1NfRk9SX0JVSUxEfSIgXAotIAlDWFg9IiR7Q1hYX0ZPUl9CVUlMRH0iIENYWEZMQUdTPSIke0NYWEZMQUdTX0ZPUl9CVUlMRH0iIFwKLSAJTEQ9IiR7TERfRk9SX0JVSUxEfSIgTERGTEFHUz0iJHtMREZMQUdTX0ZPUl9CVUlMRH0iIFwKLS0JR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTfSAtREdFTkVSQVRPUl9GSUxFIiBcCi0rCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU19GT1JfQlVJTER9IC1ER0VORVJBVE9SX0ZJTEUiIFwKLSAJJHtyZWFsc3JjZGlyfS9jb25maWd1cmUgXAotIAkJLS1lbmFibGUtbGFuZ3VhZ2VzPSR7ZW5hYmxlX2xhbmd1YWdlcy1hbGx9IFwKLSAJCS0tdGFyZ2V0PSR0YXJnZXRfYWxpYXMgLS1ob3N0PSRidWlsZF9hbGlhcyAtLWJ1aWxkPSRidWlsZF9hbGlhcwotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCA1NGU3NjE5Li5hOTQ2NjZlIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTE2ODIsNyArMTY4Miw3IEBAIGVsc2UKLSAJQ0M9IiR7Q0NfRk9SX0JVSUxEfSIgQ0ZMQUdTPSIke0NGTEFHU19GT1JfQlVJTER9IiBcCi0gCUNYWD0iJHtDWFhfRk9SX0JVSUxEfSIgQ1hYRkxBR1M9IiR7Q1hYRkxBR1NfRk9SX0JVSUxEfSIgXAotIAlMRD0iJHtMRF9GT1JfQlVJTER9IiBMREZMQUdTPSIke0xERkxBR1NfRk9SX0JVSUxEfSIgXAotLQlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9IC1ER0VORVJBVE9SX0ZJTEUiIFwKLSsJR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTX0ZPUl9CVUlMRH0gLURHRU5FUkFUT1JfRklMRSIgXAotIAkke3JlYWxzcmNkaXJ9L2NvbmZpZ3VyZSBcCi0gCQktLWVuYWJsZS1sYW5ndWFnZXM9JHtlbmFibGVfbGFuZ3VhZ2VzLWFsbH0gXAotIAkJLS10YXJnZXQ9JHRhcmdldF9hbGlhcyAtLWhvc3Q9JGJ1aWxkX2FsaWFzIC0tYnVpbGQ9JGJ1aWxkX2FsaWFzCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0MC1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0MC1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzlhNmZkMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDAtbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIGIwNDEyYzAxYzI3NWFhZWI2YjQ1ODQ2MWNkMjQyNTEyMGM4YmNlYzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyIEZlYiAyMDE2IDEwOjI2OjEwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggNDAvNDZdIG5pb3MyOiBEZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUgotCi1TaWduZWQtb2ZmLWJ5OiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmggYi9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKLWluZGV4IDRlZjU1YjUuLjYyYmMxZTcgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvbmlvczIvbGludXguaAotQEAgLTMwLDYgKzMwLDcgQEAKLSAjZGVmaW5lIENQUF9TUEVDICIle3Bvc2l4Oi1EX1BPU0lYX1NPVVJDRX0gJXtwdGhyZWFkOi1EX1JFRU5UUkFOVH0iCi0gCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC1uaW9zMi5zby4xIgotKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAgIi9saWIvbGQtbXVzbC1uaW9zMi5zby4xIgotIAotICN1bmRlZiBMSU5LX1NQRUMKLSAjZGVmaW5lIExJTktfU1BFQyBMSU5LX1NQRUNfRU5ESUFOIFwKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDQxLUFkZC1zc3Bfbm9uc2hhcmVkLXRvLWxpbmstY29tbWFuZGxpbmUtZm9yLW11c2wtdGFyZ2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDEtQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjliN2NlNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDEtQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLUZyb20gMjEwZjZiM2I4MjA4NGNjNzU2ZTAyYjhiYzEyZjkwOWE0M2IxNGVlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI3IEp1biAyMDE3IDE4OjEwOjU0IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggNDAvNDldIEFkZCBzc3Bfbm9uc2hhcmVkIHRvIGxpbmsgY29tbWFuZGxpbmUgZm9yIG11c2wgdGFyZ2V0cwotCi13aGVuIC1mc3RhY2stcHJvdGVjdG9yIG9wdGlvbnMgYXJlIGVuYWJsZWQgd2UgbmVlZCB0bwotbGluayB3aXRoIHNzcF9zaGFyZWQgb24gbXVzbCBzaW5jZSBpdCBkb2VzIG5vdCBwcm92aWRlCi10aGUgX19zdGFja19jaGtfZmFpbF9sb2NhbCgpIHNvIGVzc2VudGlhbGx5IGl0IHByb3ZpZGVzCi1saWJzc3AgYnV0IG5vdCBsaWJzc3Bfbm9uc2hhcmVkIHNvbWV0aGluZyBsaWtlCi1UQVJHRVRfTElCQ19QUk9WSURFU19TU1BfQlVUX05PVF9TU1BfTk9OU0hBUkVECi0gd2hlcmUtYXMgZm9yIGdsaWJjIHRoZSBuZWVkZWQgc3ltYm9scwotYXJlIGFscmVhZHkgcHJlc2VudCBpbiBsaWJjX25vbnNoYXJlZCBsaWJyYXJ5IHRoZXJlZm9yZQotd2UgZG8gbm90IG5lZWQgYW55IGxpYnJhcnkgaGVscGVyIG9uIGdsaWJjIGJhc2VkIHN5c3RlbXMKLWJ1dCBtdXNsIG5lZWRzIHRoZSBsaWJzc3Bfbm9zaGFyZWQgZnJvbSBnY2MKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL2xpbnV4LmggICAgICAgICAgfCAgNyArKysrKysrCi0gZ2NjL2NvbmZpZy9yczYwMDAvbGludXguaCAgIHwgMTAgKysrKysrKysrKwotIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCB8IDEwICsrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbGludXguaCBiL2djYy9jb25maWcvbGludXguaAotaW5kZXggMmU2ODNkMGM0MzAuLjFiNGRmNzk4NjcxIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2xpbnV4LmgKLUBAIC0xODIsNiArMTgyLDEzIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQotICAgICB7IEdDQ19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDEsIDAsIDAgfSwJCVwKLSAgICAgeyAwLCAwLCAwLCAwLCAwLCAwIH0JCQkJXAotICAgfQotKyNpZmRlZiBUQVJHRVRfTElCQ19QUk9WSURFU19TU1AKLSsjdW5kZWYgTElOS19TU1BfU1BFQwotKyNkZWZpbmUgTElOS19TU1BfU1BFQyAiJXtmc3RhY2stcHJvdGVjdG9yfGZzdGFjay1wcm90ZWN0b3ItYWxsIiBcCi0rCQkgICAgICAgInxmc3RhY2stcHJvdGVjdG9yLXN0cm9uZ3xmc3RhY2stcHJvdGVjdG9yLWV4cGxpY2l0IiBcCi0rCQkgICAgICAgIjotbHNzcF9ub25zaGFyZWR9IgotKyNlbmRpZgotKwotICNlbmRpZgotIAotICNpZiAoREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDKSAmJiBkZWZpbmVkIChTSU5HTEVfTElCQykgLyogdUNsaW51eCAqLwotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oCi1pbmRleCA2ODRhZmQ2YzE5MC4uMjJjZmEzOTFiODkgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oCi1AQCAtOTEsNiArOTEsMTYgQEAKLSAJCQkJCSAiIC1tIGVsZjMycHBjbGludXgiKQotICNlbmRpZgotIAotKy8qIGxpbmsgbGlic3NwX25vbnNoYXJlZC5hIHdpdGggbXVzbCAqLwotKyNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19NVVNMCi0rI2lmZGVmIFRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUAotKyN1bmRlZiBMSU5LX1NTUF9TUEVDCi0rI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKLSsJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKLSsJCSAgICAgICAiOi1sc3NwX25vbnNoYXJlZH0iCi0rI2VuZGlmCi0rI2VuZGlmCi0rCi0gI3VuZGVmIExJTktfT1NfTElOVVhfU1BFQwotICNkZWZpbmUgTElOS19PU19MSU5VWF9TUEVDIExJTktfT1NfTElOVVhfRU1VTCAiICV7IXNoYXJlZDogJXshc3RhdGljOiBcCi0gICAle3JkeW5hbWljOi1leHBvcnQtZHluYW1pY30gXAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotaW5kZXggM2IwMGVjMGZjZjAuLjgzNzFmOGQ3YjZiIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi0rKysgYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLUBAIC00NjUsNiArNDY1LDE2IEBAIGV4dGVybiBpbnQgZG90X3N5bWJvbHM7Ci0gCQkJCQkgICAiIC1tIGVsZjY0cHBjIikKLSAjZW5kaWYKLSAKLSsvKiBsaW5rIGxpYnNzcF9ub25zaGFyZWQuYSB3aXRoIG11c2wgKi8KLSsjaWYgREVGQVVMVF9MSUJDID09IExJQkNfTVVTTAotKyNpZmRlZiBUQVJHRVRfTElCQ19QUk9WSURFU19TU1AKLSsjdW5kZWYgTElOS19TU1BfU1BFQwotKyNkZWZpbmUgTElOS19TU1BfU1BFQyAiJXtmc3RhY2stcHJvdGVjdG9yfGZzdGFjay1wcm90ZWN0b3ItYWxsIiBcCi0rCQkgICAgICAgInxmc3RhY2stcHJvdGVjdG9yLXN0cm9uZ3xmc3RhY2stcHJvdGVjdG9yLWV4cGxpY2l0IiBcCi0rCQkgICAgICAgIjotbHNzcF9ub25zaGFyZWR9IgotKyNlbmRpZgotKyNlbmRpZgotKwotICNkZWZpbmUgTElOS19PU19MSU5VWF9TUEVDMzIgTElOS19PU19MSU5VWF9FTVVMMzIgIiAleyFzaGFyZWQ6ICV7IXN0YXRpYzogXAotICAgJXtyZHluYW1pYzotZXhwb3J0LWR5bmFtaWN9IFwKLSAgIC1keW5hbWljLWxpbmtlciAiIEdOVV9VU0VSX0RZTkFNSUNfTElOS0VSMzIgIn19IFwKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0Mi1nY2MtbGliY3BwLXN1cHBvcnQtZmZpbGUtcHJlZml4LW1hcC1vbGQtbmV3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDQyLWdjYy1saWJjcHAtc3VwcG9ydC1mZmlsZS1wcmVmaXgtbWFwLW9sZC1uZXcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2MWYwZmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDQyLWdjYy1saWJjcHAtc3VwcG9ydC1mZmlsZS1wcmVmaXgtbWFwLW9sZC1uZXcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOTIgKzAsMCBAQAotRnJvbSBiYTczOGNjNDExYzlhNTRlMzg5ZTMzNmJjYWEwYTI0MjhkZDRhOWQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAxNiBNYXIgMjAxNiAwMjoyNzo0MyAtMDQwMAotU3ViamVjdDogW1BBVENIIDQyLzQ2XSBnY2MvbGliY3BwOiBzdXBwb3J0IC1mZmlsZS1wcmVmaXgtbWFwPTxvbGQ+PTxuZXc+Ci0KLVNpbWlsYXIgLWZkZWJ1Zy1wcmVmaXgtbWFwLCBhZGQgb3B0aW9uIC1mZmlsZS1wcmVmaXgtbWFwIHRvIG1hcCBvbmUKLWRpcmVjdG9yeSBuYW1lIChvbGQpIHRvIGFub3RoZXIgKG5ldykgaW4gX19GSUxFX18sIF9fQkFTRV9GSUxFX18gYW5kCi1fX2J1aWx0aW5fRklMRSAoKS4KLQotaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NzAyNjgKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2djYy1wYXRjaGVzQGdjYy5nbnUub3JnXQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jICAgICB8IDEzICsrKysrKysKLSBnY2MvYy1mYW1pbHkvYy5vcHQgICAgICAgIHwgIDQgKysrCi0gZ2NjL2R3YXJmMm91dC5jICAgICAgICAgICB8ICAxICsKLSBnY2MvZ2ltcGxpZnkuYyAgICAgICAgICAgIHwgIDMgKysKLSBsaWJjcHAvTWFrZWZpbGUuaW4gICAgICAgIHwgMTAgKysrLS0tCi0gbGliY3BwL2ZpbGUtbWFwLmMgICAgICAgICB8IDkyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gbGliY3BwL2luY2x1ZGUvZmlsZS1tYXAuaCB8IDMwICsrKysrKysrKysrKysrKysKLSBsaWJjcHAvbWFjcm8uYyAgICAgICAgICAgIHwgIDIgKysKLSA4IGZpbGVzIGNoYW5nZWQsIDE1MCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJjcHAvZmlsZS1tYXAuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJjcHAvaW5jbHVkZS9maWxlLW1hcC5oCi0KLWRpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy1vcHRzLmMgYi9nY2MvYy1mYW1pbHkvYy1vcHRzLmMKLWluZGV4IGZlYzU4YmMuLjdhMGFmNDMgMTAwNjQ0Ci0tLS0gYS9nY2MvYy1mYW1pbHkvYy1vcHRzLmMKLSsrKyBiL2djYy9jLWZhbWlseS9jLW9wdHMuYwotQEAgLTM4LDYgKzM4LDE0IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gI2luY2x1ZGUgIm9wdHMuaCIKLSAjaW5jbHVkZSAicGx1Z2luLmgiCQkvKiBGb3IgUExVR0lOX0lOQ0xVREVfRklMRSBldmVudC4gICovCi0gI2luY2x1ZGUgIm1rZGVwcy5oIgotKyNpbmNsdWRlICJmaWxlLW1hcC5oIgotKyNpbmNsdWRlICJjLXRhcmdldC5oIgotKyNpbmNsdWRlICJ0bS5oIgkJCS8qIEZvciBCWVRFU19CSUdfRU5ESUFOLAotKwkJCQkgICBET0xMQVJTX0lOX0lERU5USUZJRVJTLAotKwkJCQkgICBTVERDXzBfSU5fU1lTVEVNX0hFQURFUlMsCi0rCQkJCSAgIFRBUkdFVF9GTFRfRVZBTF9NRVRIT0RfTk9OX0RFRkFVTFQgYW5kCi0rCQkJCSAgIFRBUkdFVF9PUFRGLiAgKi8KLSsjaW5jbHVkZSAidG1fcC5oIgkJLyogRm9yIENfQ09NTU9OX09WRVJSSURFX09QVElPTlMuICAqLwotICNpbmNsdWRlICJkdW1wZmlsZS5oIgotIAotICNpZm5kZWYgRE9MTEFSU19JTl9JREVOVElGSUVSUwotQEAgLTUwMyw2ICs1MTEsMTEgQEAgY19jb21tb25faGFuZGxlX29wdGlvbiAoc2l6ZV90IHNjb2RlLCBjb25zdCBjaGFyICphcmcsIGludCB2YWx1ZSwKLSAgICAgICBjcHBfb3B0cy0+bmFycm93X2NoYXJzZXQgPSBhcmc7Ci0gICAgICAgYnJlYWs7Ci0gCi0rICAgIGNhc2UgT1BUX2ZmaWxlX3ByZWZpeF9tYXBfOgotKyAgICAgIGlmIChhZGRfZmlsZV9wcmVmaXhfbWFwIChhcmcpIDwgMCkKLSsgICAgICAgIGVycm9yICgiaW52YWxpZCBhcmd1bWVudCAlcXMgdG8gLWZmaWxlLXByZWZpeC1tYXAiLCBhcmcpOwotKyAgICAgIGJyZWFrOwotKwotICAgICBjYXNlIE9QVF9md2lkZV9leGVjX2NoYXJzZXRfOgotICAgICAgIGNwcF9vcHRzLT53aWRlX2NoYXJzZXQgPSBhcmc7Ci0gICAgICAgYnJlYWs7Ci1kaWZmIC0tZ2l0IGEvZ2NjL2MtZmFtaWx5L2Mub3B0IGIvZ2NjL2MtZmFtaWx5L2Mub3B0Ci1pbmRleCA2NjBkYTZjLi4zMWY3YjM0IDEwMDY0NAotLS0tIGEvZ2NjL2MtZmFtaWx5L2Mub3B0Ci0rKysgYi9nY2MvYy1mYW1pbHkvYy5vcHQKLUBAIC0xMjA4LDYgKzEyMDgsMTAgQEAgZmV4ZWMtY2hhcnNldD0KLSBDIE9iakMgQysrIE9iakMrKyBKb2luZWQgUmVqZWN0TmVnYXRpdmUKLSAtZmV4ZWMtY2hhcnNldD08Y3NldD4JQ29udmVydCBhbGwgc3RyaW5ncyBhbmQgY2hhcmFjdGVyIGNvbnN0YW50cyB0byBjaGFyYWN0ZXIgc2V0IDxjc2V0Pi4KLSAKLStmZmlsZS1wcmVmaXgtbWFwPQotK0MgT2JqQyBDKysgT2JqQysrIEpvaW5lZCBSZWplY3ROZWdhdGl2ZQotKy1mZmlsZS1wcmVmaXgtbWFwPTxvbGQ9bmV3PglNYXAgb25lIGRpcmVjdG9yeSBuYW1lIHRvIGFub3RoZXIgaW4gX19GSUxFX18sIF9fQkFTRV9GSUxFX18gYW5kIF9fYnVpbHRpbl9GSUxFICgpCi0rCi0gZmV4dGVuZGVkLWlkZW50aWZpZXJzCi0gQyBPYmpDIEMrKyBPYmpDKysKLSBQZXJtaXQgdW5pdmVyc2FsIGNoYXJhY3RlciBuYW1lcyAoXFx1IGFuZCBcXFUpIGluIGlkZW50aWZpZXJzLgotZGlmZiAtLWdpdCBhL2djYy9kd2FyZjJvdXQuYyBiL2djYy9kd2FyZjJvdXQuYwotaW5kZXggODBmMmRmNS4uYTJiZmNjMCAxMDA2NDQKLS0tLSBhL2djYy9kd2FyZjJvdXQuYwotKysrIGIvZ2NjL2R3YXJmMm91dC5jCi1AQCAtMjE2NzIsNiArMjE2NzIsNyBAQCBnZW5fcHJvZHVjZXJfc3RyaW5nICh2b2lkKQotICAgICAgIGNhc2UgT1BUX2ZsdHJhbnNfb3V0cHV0X2xpc3RfOgotICAgICAgIGNhc2UgT1BUX2ZyZXNvbHV0aW9uXzoKLSAgICAgICBjYXNlIE9QVF9mZGVidWdfcHJlZml4X21hcF86Ci0rICAgICAgY2FzZSBPUFRfZmZpbGVfcHJlZml4X21hcF86Ci0gCS8qIElnbm9yZSB0aGVzZS4gICovCi0gCWNvbnRpbnVlOwotICAgICAgIGRlZmF1bHQ6Ci1kaWZmIC0tZ2l0IGEvZ2NjL2dpbXBsaWZ5LmMgYi9nY2MvZ2ltcGxpZnkuYwotaW5kZXggZTIyM2U1OS4uMTQzM2MyNSAxMDA2NDQKLS0tLSBhL2djYy9naW1wbGlmeS5jCi0rKysgYi9nY2MvZ2ltcGxpZnkuYwotQEAgLTU3LDYgKzU3LDggQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAjaW5jbHVkZSAiZ29tcC1jb25zdGFudHMuaCIKLSAjaW5jbHVkZSAidHJlZS1kdW1wLmgiCi0gI2luY2x1ZGUgImdpbXBsZS13YWxrLmgiCi0rI2luY2x1ZGUgImZpbGUtbWFwLmgiCi0rCi0gI2luY2x1ZGUgImxhbmdob29rcy1kZWYuaCIJLyogRklYTUU6IGZvciBsaGRfc2V0X2RlY2xfYXNzZW1ibGVyX25hbWUgKi8KLSAjaW5jbHVkZSAiYnVpbHRpbnMuaCIKLSAKLUBAIC0yNDMyLDYgKzI0MzQsNyBAQCBnaW1wbGlmeV9jYWxsX2V4cHIgKHRyZWUgKmV4cHJfcCwgZ2ltcGxlX3NlcSAqcHJlX3AsIGJvb2wgd2FudF92YWx1ZSkKLSAgICAgICBjYXNlIEJVSUxUX0lOX0ZJTEU6Ci0gCXsKLSAJICBjb25zdCBjaGFyICpsb2NmaWxlID0gTE9DQVRJT05fRklMRSAoRVhQUl9MT0NBVElPTiAoKmV4cHJfcCkpOwotKwkgIGxvY2ZpbGUgPSByZW1hcF9maWxlX2ZpbGVuYW1lIChsb2NmaWxlKTsKLSAJICAqZXhwcl9wID0gYnVpbGRfc3RyaW5nX2xpdGVyYWwgKHN0cmxlbiAobG9jZmlsZSkgKyAxLCBsb2NmaWxlKTsKLSAJICByZXR1cm4gR1NfT0s7Ci0gCX0KLWRpZmYgLS1naXQgYS9saWJjcHAvTWFrZWZpbGUuaW4gYi9saWJjcHAvTWFrZWZpbGUuaW4KLWluZGV4IGE3ZDc4MjguLjNkMjk1NzIgMTAwNjQ0Ci0tLS0gYS9saWJjcHAvTWFrZWZpbGUuaW4KLSsrKyBiL2xpYmNwcC9NYWtlZmlsZS5pbgotQEAgLTg0LDEyICs4NCwxMiBAQCBERVBNT0RFID0gJChDWFhERVBNT0RFKQotIAotIAotIGxpYmNwcF9hX09CSlMgPSBjaGFyc2V0Lm8gZGlyZWN0aXZlcy5vIGRpcmVjdGl2ZXMtb25seS5vIGVycm9ycy5vIFwKLS0JZXhwci5vIGZpbGVzLm8gaWRlbnRpZmllcnMubyBpbml0Lm8gbGV4Lm8gbGluZS1tYXAubyBtYWNyby5vIFwKLS0JbWtkZXBzLm8gcGNoLm8gc3ltdGFiLm8gdHJhZGl0aW9uYWwubwotKwlleHByLm8gZmlsZS1tYXAubyBmaWxlcy5vIGlkZW50aWZpZXJzLm8gaW5pdC5vIGxleC5vIGxpbmUtbWFwLm8gXAotKwltYWNyby5vIG1rZGVwcy5vIHBjaC5vIHN5bXRhYi5vIHRyYWRpdGlvbmFsLm8KLSAKLSBsaWJjcHBfYV9TT1VSQ0VTID0gY2hhcnNldC5jIGRpcmVjdGl2ZXMuYyBkaXJlY3RpdmVzLW9ubHkuYyBlcnJvcnMuYyBcCi0tCWV4cHIuYyBmaWxlcy5jIGlkZW50aWZpZXJzLmMgaW5pdC5jIGxleC5jIGxpbmUtbWFwLmMgbWFjcm8uYyBcCi0tCW1rZGVwcy5jIHBjaC5jIHN5bXRhYi5jIHRyYWRpdGlvbmFsLmMKLSsJZXhwci5jIGZpbGUtbWFwLmMgZmlsZXMuYyBpZGVudGlmaWVycy5jIGluaXQuYyBsZXguYyBsaW5lLW1hcC5jIFwKLSsJbWFjcm8uYyBta2RlcHMuYyBwY2guYyBzeW10YWIuYyB0cmFkaXRpb25hbC5jCi0gCi0gYWxsOiBsaWJjcHAuYSAkKFVTRURfQ0FUQUxPR1MpCi0gCi1AQCAtMjYzLDcgKzI2Myw3IEBAIHBvLyQoUEFDS0FHRSkucG90OiAkKGxpYmNwcF9hX1NPVVJDRVMpCi0gCi0gVEFHU19TT1VSQ0VTID0gJChsaWJjcHBfYV9TT1VSQ0VTKSBpbnRlcm5hbC5oIHVjbmlkLmggXAotICAgICBpbmNsdWRlL2xpbmUtbWFwLmggaW5jbHVkZS9zeW10YWIuaCBpbmNsdWRlL2NwcC1pZC1kYXRhLmggXAotLSAgICBpbmNsdWRlL2NwcGxpYi5oIGluY2x1ZGUvbWtkZXBzLmggc3lzdGVtLmgKLSsgICAgaW5jbHVkZS9jcHBsaWIuaCBpbmNsdWRlL21rZGVwcy5oIHN5c3RlbS5oIGluY2x1ZGUvZmlsZS1tYXAuaAotIAotIFRBR1M6ICQoVEFHU19TT1VSQ0VTKQotIAljZCAkKHNyY2RpcikgJiYgZXRhZ3MgJChUQUdTX1NPVVJDRVMpCi1kaWZmIC0tZ2l0IGEvbGliY3BwL2ZpbGUtbWFwLmMgYi9saWJjcHAvZmlsZS1tYXAuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjE4MDM1ZWYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYmNwcC9maWxlLW1hcC5jCi1AQCAtMCwwICsxLDkyIEBACi0rLyogTWFwIG9uZSBkaXJlY3RvcnkgbmFtZSB0byBhbm90aGVyIGluIF9fRklMRV9fLCBfX0JBU0VfRklMRV9fCi0rICAgYW5kIF9fYnVpbHRpbl9GSUxFICgpLgotKyAgIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotK1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pIGFueQotK2xhdGVyIHZlcnNpb24uCi0rCi0rVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLStNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLStZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotK2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0rPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyBJbiBvdGhlciB3b3JkcywgeW91IGFyZSB3ZWxjb21lIHRvIHVzZSwgc2hhcmUgYW5kIGltcHJvdmUgdGhpcyBwcm9ncmFtLgotKyBZb3UgYXJlIGZvcmJpZGRlbiB0byBmb3JiaWQgYW55b25lIGVsc2UgdG8gdXNlLCBzaGFyZSBhbmQgaW1wcm92ZQotKyB3aGF0IHlvdSBnaXZlIHRoZW0uICAgSGVscCBzdGFtcCBvdXQgc29mdHdhcmUtaG9hcmRpbmchICAqLwotKwotKyNpbmNsdWRlICJjb25maWcuaCIKLSsjaW5jbHVkZSAic3lzdGVtLmgiCi0rI2luY2x1ZGUgImZpbGUtbWFwLmgiCi0rCi0rLyogU3RydWN0dXJlIHJlY29yZGluZyB0aGUgbWFwcGluZyBmcm9tIHNvdXJjZSBmaWxlIGFuZCBkaXJlY3RvcnkKLSsgICBuYW1lcyBhdCBjb21waWxlIHRpbWUgdG8gX19GSUxFX18gKi8KLSt0eXBlZGVmIHN0cnVjdCBmaWxlX3ByZWZpeF9tYXAKLSt7Ci0rICBjb25zdCBjaGFyICpvbGRfcHJlZml4OwotKyAgY29uc3QgY2hhciAqbmV3X3ByZWZpeDsKLSsgIHNpemVfdCBvbGRfbGVuOwotKyAgc2l6ZV90IG5ld19sZW47Ci0rICBzdHJ1Y3QgZmlsZV9wcmVmaXhfbWFwICpuZXh0OwotK30gZmlsZV9wcmVmaXhfbWFwOwotKwotKy8qIExpbmtlZCBsaXN0IG9mIHN1Y2ggc3RydWN0dXJlcy4gICovCi0rc3RhdGljIGZpbGVfcHJlZml4X21hcCAqZmlsZV9wcmVmaXhfbWFwczsKLSsKLSsvKiBSZWNvcmQgcHJlZml4IG1hcHBpbmcgb2YgX19GSUxFX18uICBBUkcgaXMgdGhlIGFyZ3VtZW50IHRvCi0rICAgLWZmaWxlLXByZWZpeC1tYXAgYW5kIG11c3QgYmUgb2YgdGhlIGZvcm0gT0xEPU5FVy4gICovCi0raW50Ci0rYWRkX2ZpbGVfcHJlZml4X21hcCAoY29uc3QgY2hhciAqYXJnKQotK3sKLSsgIGZpbGVfcHJlZml4X21hcCAqbWFwOwotKyAgY29uc3QgY2hhciAqcDsKLSsKLSsgIHAgPSBzdHJjaHIgKGFyZywgJz0nKTsKLSsgIGlmICghcCkKLSsgIHsKLSsgICAgICBmcHJpbnRmKHN0ZGVyciwgImludmFsaWQgYXJndW1lbnQgJXFzIHRvIC1mZmlsZS1wcmVmaXgtbWFwIiwgYXJnKTsKLSsgICAgICByZXR1cm4gLTE7Ci0rICB9Ci0rICBtYXAgPSBYTkVXIChmaWxlX3ByZWZpeF9tYXApOwotKyAgbWFwLT5vbGRfcHJlZml4ID0geHN0cm5kdXAgKGFyZywgcCAtIGFyZyk7Ci0rICBtYXAtPm9sZF9sZW4gPSBwIC0gYXJnOwotKyAgcCsrOwotKyAgbWFwLT5uZXdfcHJlZml4ID0geHN0cmR1cCAocCk7Ci0rICBtYXAtPm5ld19sZW4gPSBzdHJsZW4gKHApOwotKyAgbWFwLT5uZXh0ID0gZmlsZV9wcmVmaXhfbWFwczsKLSsgIGZpbGVfcHJlZml4X21hcHMgPSBtYXA7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogUGVyZm9ybSB1c2VyLXNwZWNpZmllZCBtYXBwaW5nIG9mIF9fRklMRV9fIHByZWZpeGVzLiAgUmV0dXJuCi0rICAgdGhlIG5ldyBuYW1lIGNvcnJlc3BvbmRpbmcgdG8gZmlsZW5hbWUuICAqLwotKwotK2NvbnN0IGNoYXIgKgotK3JlbWFwX2ZpbGVfZmlsZW5hbWUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK3sKLSsgIGZpbGVfcHJlZml4X21hcCAqbWFwOwotKyAgY2hhciAqczsKLSsgIGNvbnN0IGNoYXIgKm5hbWU7Ci0rICBzaXplX3QgbmFtZV9sZW47Ci0rCi0rICBmb3IgKG1hcCA9IGZpbGVfcHJlZml4X21hcHM7IG1hcDsgbWFwID0gbWFwLT5uZXh0KQotKyAgICBpZiAoZmlsZW5hbWVfbmNtcCAoZmlsZW5hbWUsIG1hcC0+b2xkX3ByZWZpeCwgbWFwLT5vbGRfbGVuKSA9PSAwKQotKyAgICAgIGJyZWFrOwotKyAgaWYgKCFtYXApCi0rICAgIHJldHVybiBmaWxlbmFtZTsKLSsgIG5hbWUgPSBmaWxlbmFtZSArIG1hcC0+b2xkX2xlbjsKLSsgIG5hbWVfbGVuID0gc3RybGVuIChuYW1lKSArIDE7Ci0rICBzID0gKGNoYXIgKikgYWxsb2NhIChuYW1lX2xlbiArIG1hcC0+bmV3X2xlbik7Ci0rICBtZW1jcHkgKHMsIG1hcC0+bmV3X3ByZWZpeCwgbWFwLT5uZXdfbGVuKTsKLSsgIG1lbWNweSAocyArIG1hcC0+bmV3X2xlbiwgbmFtZSwgbmFtZV9sZW4pOwotKwotKyAgcmV0dXJuIHhzdHJkdXAgKHMpOwotK30KLSsKLSsKLWRpZmYgLS1naXQgYS9saWJjcHAvaW5jbHVkZS9maWxlLW1hcC5oIGIvbGliY3BwL2luY2x1ZGUvZmlsZS1tYXAuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjg3NTAzMTUKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYmNwcC9pbmNsdWRlL2ZpbGUtbWFwLmgKLUBAIC0wLDAgKzEsMzAgQEAKLSsvKiBNYXAgb25lIGRpcmVjdG9yeSBuYW1lIHRvIGFub3RoZXIgaW4gX19GSUxFX18sIF9fQkFTRV9GSUxFX18KLSsgICBhbmQgX19idWlsdGluX0ZJTEUgKCkuCi0rICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSt1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLStGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55Ci0rbGF0ZXIgdmVyc2lvbi4KLSsKLStUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLStidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotK01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLStHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotK1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSs8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rIEluIG90aGVyIHdvcmRzLCB5b3UgYXJlIHdlbGNvbWUgdG8gdXNlLCBzaGFyZSBhbmQgaW1wcm92ZSB0aGlzIHByb2dyYW0uCi0rIFlvdSBhcmUgZm9yYmlkZGVuIHRvIGZvcmJpZCBhbnlvbmUgZWxzZSB0byB1c2UsIHNoYXJlIGFuZCBpbXByb3ZlCi0rIHdoYXQgeW91IGdpdmUgdGhlbS4gICBIZWxwIHN0YW1wIG91dCBzb2Z0d2FyZS1ob2FyZGluZyEgICovCi0rCi0rI2lmbmRlZiBMSUJDUFBfRklMRV9NQVBfSAotKyNkZWZpbmUgTElCQ1BQX0ZJTEVfTUFQX0gKLSsKLStjb25zdCBjaGFyICogcmVtYXBfZmlsZV9maWxlbmFtZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpOwotKwotK2ludCBhZGRfZmlsZV9wcmVmaXhfbWFwIChjb25zdCBjaGFyICphcmcpOwotKwotKyNlbmRpZiAvKiAhTElCQ1BQX0ZJTEVfTUFQX0ggICovCi1kaWZmIC0tZ2l0IGEvbGliY3BwL21hY3JvLmMgYi9saWJjcHAvbWFjcm8uYwotaW5kZXggYzI1MTU1My4uM2NlZWMzZCAxMDA2NDQKLS0tLSBhL2xpYmNwcC9tYWNyby5jCi0rKysgYi9saWJjcHAvbWFjcm8uYwotQEAgLTI2LDYgKzI2LDcgQEAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAjaW5jbHVkZSAic3lzdGVtLmgiCi0gI2luY2x1ZGUgImNwcGxpYi5oIgotICNpbmNsdWRlICJpbnRlcm5hbC5oIgotKyNpbmNsdWRlICJmaWxlLW1hcC5oIgotIAotIHR5cGVkZWYgc3RydWN0IG1hY3JvX2FyZyBtYWNyb19hcmc7Ci0gLyogVGhpcyBzdHJ1Y3R1cmUgcmVwcmVzZW50cyB0aGUgdG9rZW5zIG9mIGEgbWFjcm8gYXJndW1lbnQuICBUaGVzZQotQEAgLTMwMSw2ICszMDIsNyBAQCBfY3BwX2J1aWx0aW5fbWFjcm9fdGV4dCAoY3BwX3JlYWRlciAqcGZpbGUsIGNwcF9oYXNobm9kZSAqbm9kZSwKLSAJICAgIGlmICghbmFtZSkKLSAJICAgICAgYWJvcnQgKCk7Ci0gCSAgfQotKwluYW1lID0gcmVtYXBfZmlsZV9maWxlbmFtZSAobmFtZSk7Ci0gCWxlbiA9IHN0cmxlbiAobmFtZSk7Ci0gCWJ1ZiA9IF9jcHBfdW5hbGlnbmVkX2FsbG9jIChwZmlsZSwgbGVuICogMiArIDMpOwotIAlyZXN1bHQgPSBidWY7Ci0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0My1SZXVzZS1mZGVidWctcHJlZml4LW1hcC10by1yZXBsYWNlLWZmaWxlLXByZWZpeC1tYXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDMtUmV1c2UtZmRlYnVnLXByZWZpeC1tYXAtdG8tcmVwbGFjZS1mZmlsZS1wcmVmaXgtbWFwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDc3ZjgwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0My1SZXVzZS1mZGVidWctcHJlZml4LW1hcC10by1yZXBsYWNlLWZmaWxlLXByZWZpeC1tYXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIDI1Yzg3YzZjYzQwZWM1Y2M2OTY1ZjhiZmIyMTViZWMwMWFiZDZkODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDE2IE1hciAyMDE2IDA1OjM5OjU5IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggNDMvNDZdIFJldXNlIC1mZGVidWctcHJlZml4LW1hcCB0byByZXBsYWNlIC1mZmlsZS1wcmVmaXgtbWFwCi0KLVRoZSBvZS1jb3JlIG1heSB1c2UgZXh0ZXJuYWwgdG9vbGNoYWluIHRvIGNvbXBpbGUsCi13aGljaCBtYXkgbm90IHN1cHBvcnQgLWZmaWxlLXByZWZpeC1tYXAuCi0KLVNpbmNlIHdlIHVzZSAtZmRlYnVnLXByZWZpeC1tYXAgdG8gZG8gdGhlIHNhbWUgdGhpbmcsCi1zbyB3ZSBjb3VsZCByZXVzZSBpdCB0byByZXBsYWNlIC1mZmlsZS1wcmVmaXgtbWFwLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbb2UtY29yZSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gZ2NjL29wdHMtZ2xvYmFsLmMgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nY2Mvb3B0cy1nbG9iYWwuYyBiL2djYy9vcHRzLWdsb2JhbC5jCi1pbmRleCBiN2U1MjMyLi4xMjFkN2I5IDEwMDY0NAotLS0tIGEvZ2NjL29wdHMtZ2xvYmFsLmMKLSsrKyBiL2djYy9vcHRzLWdsb2JhbC5jCi1AQCAtMzEsNiArMzEsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICNpbmNsdWRlICJsYW5naG9va3MuaCIKLSAjaW5jbHVkZSAiZGJnY250LmgiCi0gI2luY2x1ZGUgImRlYnVnLmgiCi0rI2luY2x1ZGUgImZpbGUtbWFwLmgiCi0gI2luY2x1ZGUgIm91dHB1dC5oIgotICNpbmNsdWRlICJwbHVnaW4uaCIKLSAjaW5jbHVkZSAidG9wbGV2LmgiCi1AQCAtMzU3LDYgKzM1OCw5IEBAIGhhbmRsZV9jb21tb25fZGVmZXJyZWRfb3B0aW9ucyAodm9pZCkKLSAKLSAJY2FzZSBPUFRfZmRlYnVnX3ByZWZpeF9tYXBfOgotIAkgIGFkZF9kZWJ1Z19wcmVmaXhfbWFwIChvcHQtPmFyZyk7Ci0rCi0rCSAgLyogUmV1c2UgLWZkZWJ1Zy1wcmVmaXgtbWFwIHRvIHJlcGxhY2UgLWZmaWxlLXByZWZpeC1tYXAgKi8KLSsJICBhZGRfZmlsZV9wcmVmaXhfbWFwIChvcHQtPmFyZyk7Ci0gCSAgYnJlYWs7Ci0gCi0gCWNhc2UgT1BUX2ZkdW1wXzoKLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDQ0LWdjYy1maW5hbC5jLWZkZWJ1Zy1wcmVmaXgtbWFwLXN1cHBvcnQtdG8tcmVtYXAtc291cmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDQtZ2NjLWZpbmFsLmMtZmRlYnVnLXByZWZpeC1tYXAtc3VwcG9ydC10by1yZW1hcC1zb3VyYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ0MWFmNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDQtZ2NjLWZpbmFsLmMtZmRlYnVnLXByZWZpeC1tYXAtc3VwcG9ydC10by1yZW1hcC1zb3VyYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLUZyb20gNmFiMjNlODhhZWYyMmJiYWJlZTdiOTYwMGM0NTlmZjM5NTQ3YmI2NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMjQgTWFyIDIwMTYgMTE6MjM6MTQgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCA0NC80Nl0gZ2NjL2ZpbmFsLmM6IC1mZGVidWctcHJlZml4LW1hcCBzdXBwb3J0IHRvIHJlbWFwCi0gc291cmNlcyB3aXRoIHJlbGF0aXZlIHBhdGgKLQotUFIgb3RoZXIvNzA0MjgKLSogZmluYWwuYyAocmVtYXBfZGVidWdfZmlsZW5hbWUpOiBVc2UgbHJlYWxwYXRoIHRvIHRyYW5zbGF0ZQotcmVsYXRpdmUgcGF0aCBiZWZvcmUgcmVtYXBwaW5nCi0KLWh0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTcwNDI4Ci1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmddCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGdjYy9maW5hbC5jIHwgMTUgKysrKysrKysrKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvZmluYWwuYyBiL2djYy9maW5hbC5jCi1pbmRleCA1NWNmNTA5Li4yMzI5M2U1IDEwMDY0NAotLS0tIGEvZ2NjL2ZpbmFsLmMKLSsrKyBiL2djYy9maW5hbC5jCi1AQCAtMTU1NCwxNiArMTU1NCwyNSBAQCByZW1hcF9kZWJ1Z19maWxlbmFtZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpCi0gICBjb25zdCBjaGFyICpuYW1lOwotICAgc2l6ZV90IG5hbWVfbGVuOwotIAotKyAgLyogU3VwcG9ydCB0byByZW1hcCBmaWxlbmFtZSB3aXRoIHJlbGF0aXZlIHBhdGggICovCi0rICBjaGFyICpyZWFscGF0aCA9IGxyZWFscGF0aCAoZmlsZW5hbWUpOwotKyAgaWYgKHJlYWxwYXRoID09IE5VTEwpCi0rICAgIHJldHVybiBmaWxlbmFtZTsKLSsKLSAgIGZvciAobWFwID0gZGVidWdfcHJlZml4X21hcHM7IG1hcDsgbWFwID0gbWFwLT5uZXh0KQotLSAgICBpZiAoZmlsZW5hbWVfbmNtcCAoZmlsZW5hbWUsIG1hcC0+b2xkX3ByZWZpeCwgbWFwLT5vbGRfbGVuKSA9PSAwKQotKyAgICBpZiAoZmlsZW5hbWVfbmNtcCAocmVhbHBhdGgsIG1hcC0+b2xkX3ByZWZpeCwgbWFwLT5vbGRfbGVuKSA9PSAwKQotICAgICAgIGJyZWFrOwotICAgaWYgKCFtYXApCi0tICAgIHJldHVybiBmaWxlbmFtZTsKLS0gIG5hbWUgPSBmaWxlbmFtZSArIG1hcC0+b2xkX2xlbjsKLSsgICAgewotKyAgICAgIGZyZWUgKHJlYWxwYXRoKTsKLSsgICAgICByZXR1cm4gZmlsZW5hbWU7Ci0rICAgIH0KLSsgIG5hbWUgPSByZWFscGF0aCArIG1hcC0+b2xkX2xlbjsKLSAgIG5hbWVfbGVuID0gc3RybGVuIChuYW1lKSArIDE7Ci0gICBzID0gKGNoYXIgKikgYWxsb2NhIChuYW1lX2xlbiArIG1hcC0+bmV3X2xlbik7Ci0gICBtZW1jcHkgKHMsIG1hcC0+bmV3X3ByZWZpeCwgbWFwLT5uZXdfbGVuKTsKLSAgIG1lbWNweSAocyArIG1hcC0+bmV3X2xlbiwgbmFtZSwgbmFtZV9sZW4pOwotKyAgZnJlZSAocmVhbHBhdGgpOwotICAgcmV0dXJuIGdnY19zdHJkdXAgKHMpOwotIH0KLSAMCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0NS1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0NS1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzYyYjcyNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDUtbGliZ2NjLUFkZC1rbm9iLXRvLXVzZS1sZGJsLTEyOC1vbi1wcGMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotRnJvbSA1YTQ3ZDQwNGVhMjllMjU0NzI2OWUzZGRmMzg3NTQ0NjJkOTNmOTAzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgQXByIDIwMTYgMjA6MDM6MjggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCA0NS80Nl0gbGliZ2NjOiBBZGQga25vYiB0byB1c2UgbGRibC0xMjggb24gcHBjCi0KLW11c2wgZG9lcyBub3Qgc3VwcG9ydCBsZGJsIDEyOCBzbyB3ZSBjYW4gbm90IGFzc3VtZQotdGhhdCBsaW51eCBhcyBhIHdob2xlIHN1cHBvcnRzIGxkYmwtMTI4IGJpdHMsIGluc3RlYWQKLWFjdCB1cG9uIGNvbmZpZ3VyZSBvcHRpb24gcGFzc2VkIHRvIGdjYyBhbmQgYXNzdW1lIG5vCi1vbiBtdXNsIGFuZCB5ZXMgb3RoZXJ3aXNlIGlmIG5vIG9wdGlvbiBpcyBwYXNzZWQgc2luY2UKLWRlZmF1bHQgYmVoYXZpb3VyIGlzIHRvIGFzc3VtZSBsZGJsMTI4IGl0IGRvZXMgbm90Ci1jaGFuZ2UgdGhlIGRlZmF1bHRzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gbGliZ2NjL01ha2VmaWxlLmluICAgICAgICAgICB8ICAxICsKLSBsaWJnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4IHwgIDUgKysrKy0KLSBsaWJnY2MvY29uZmlndXJlICAgICAgICAgICAgIHwgMTggKysrKysrKysrKysrKysrKysrCi0gbGliZ2NjL2NvbmZpZ3VyZS5hYyAgICAgICAgICB8IDEyICsrKysrKysrKysrKwotIDQgZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgbGliZ2NjL2NvbmZpZ3VyZQotCi1kaWZmIC0tZ2l0IGEvbGliZ2NjL01ha2VmaWxlLmluIGIvbGliZ2NjL01ha2VmaWxlLmluCi1pbmRleCBmMDliMzliLi4yOTZjZjBmIDEwMDY0NAotLS0tIGEvbGliZ2NjL01ha2VmaWxlLmluCi0rKysgYi9saWJnY2MvTWFrZWZpbGUuaW4KLUBAIC00Myw2ICs0Myw3IEBAIGVuYWJsZV92dGFibGVfdmVyaWZ5ID0gQGVuYWJsZV92dGFibGVfdmVyaWZ5QAotIGVuYWJsZV9kZWNpbWFsX2Zsb2F0ID0gQGVuYWJsZV9kZWNpbWFsX2Zsb2F0QAotIGZpeGVkX3BvaW50ID0gQGZpeGVkX3BvaW50QAotIHdpdGhfYWl4X3NvbmFtZSA9IEB3aXRoX2FpeF9zb25hbWVACi0rd2l0aF9sZGJsMTI4ID0gQHdpdGhfbGRibDEyOEAKLSAKLSBob3N0X25vbmNhbm9uaWNhbCA9IEBob3N0X25vbmNhbm9uaWNhbEAKLSByZWFsX2hvc3Rfbm9uY2Fub25pY2FsID0gQHJlYWxfaG9zdF9ub25jYW5vbmljYWxACi1kaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eCBiL2xpYmdjYy9jb25maWcvcnM2MDAwL3QtbGludXgKLWluZGV4IDRmNmQ0YzQuLmM1MGRkOTQgMTAwNjQ0Ci0tLS0gYS9saWJnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4Ci0rKysgYi9saWJnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4Ci1AQCAtMSwzICsxLDYgQEAKLSBTSExJQl9NQVBGSUxFUyArPSAkKHNyY2RpcikvY29uZmlnL3JzNjAwMC9saWJnY2MtZ2xpYmMudmVyCi0gCi0tSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbWxvbmctZG91YmxlLTEyOCAtbW5vLW1pbmltYWwtdG9jCi0raWZlcSAoJCh3aXRoX2xkYmwxMjgpLHllcykKLStIT1NUX0xJQkdDQzJfQ0ZMQUdTICs9IC1tbG9uZy1kb3VibGUtMTI4Ci0rZW5kaWYKLStIT1NUX0xJQkdDQzJfQ0ZMQUdTICs9IC1tbm8tbWluaW1hbC10b2MKLWRpZmYgLS1naXQgYS9saWJnY2MvY29uZmlndXJlIGIvbGliZ2NjL2NvbmZpZ3VyZQotb2xkIG1vZGUgMTAwNjQ0Ci1uZXcgbW9kZSAxMDA3NTUKLWluZGV4IGU3ZDZjNzUuLmU5YTkwMTkKLS0tLSBhL2xpYmdjYy9jb25maWd1cmUKLSsrKyBiL2xpYmdjYy9jb25maWd1cmUKLUBAIC02MTQsNiArNjE0LDcgQEAgYnVpbGRfdmVuZG9yCi0gYnVpbGRfY3B1Ci0gYnVpbGQKLSB3aXRoX2FpeF9zb25hbWUKLSt3aXRoX2xkYmwxMjgKLSBlbmFibGVfdnRhYmxlX3ZlcmlmeQotIGVuYWJsZV9zaGFyZWQKLSBsaWJnY2NfdG9wZGlyCi1AQCAtNjYzLDYgKzY2NCw3IEBAIHdpdGhfY3Jvc3NfaG9zdAotIHdpdGhfbGQKLSBlbmFibGVfc2hhcmVkCi0gZW5hYmxlX3Z0YWJsZV92ZXJpZnkKLSt3aXRoX2xvbmdfZG91YmxlXzEyOAotIHdpdGhfYWl4X3NvbmFtZQotIGVuYWJsZV92ZXJzaW9uX3NwZWNpZmljX3J1bnRpbWVfbGlicwotIHdpdGhfc2xpYmRpcgotQEAgLTEzMTksNiArMTMyMSw3IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgLS13aXRoLXRhcmdldC1zdWJkaXI9U1VCRElSICAgICAgQ29uZmlndXJpbmcgaW4gYSBzdWJkaXJlY3RvcnkgZm9yIHRhcmdldAotICAgLS13aXRoLWNyb3NzLWhvc3Q9SE9TVCAgICAgICAgICAgQ29uZmlndXJpbmcgd2l0aCBhIGNyb3NzIGNvbXBpbGVyCi0gICAtLXdpdGgtbGQgICAgICAgICAgICAgICBhcnJhbmdlIHRvIHVzZSB0aGUgc3BlY2lmaWVkIGxkIChmdWxsIHBhdGhuYW1lKQotKyAgLS13aXRoLWxvbmctZG91YmxlLTEyOCAgdXNlIDEyOC1iaXQgbG9uZyBkb3VibGUgYnkgZGVmYXVsdAotICAgLS13aXRoLWFpeC1zb25hbWU9YWl4fHN2cjR8Ym90aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkIGxpYnJhcnkgdmVyc2lvbmluZyAoYWthICJTT05BTUUiKSB2YXJpYW50IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlIG9uIEFJWAotQEAgLTIyMDEsNiArMjIwNCwyMSBAQCBmaQotIAotIAotIAotKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbG9uZy1kb3VibGUtMTI4IHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke3dpdGhfbG9uZ19kb3VibGVfMTI4K3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIHdpdGh2YWw9JHdpdGhfbG9uZ19kb3VibGVfMTI4OyB3aXRoX2xkYmwxMjg9IiR3aXRoX2xvbmdfZG91YmxlXzEyOCIKLStlbHNlCi0rICBjYXNlICIke2hvc3R9IiBpbgotKyBwb3dlciotKi1tdXNsKikKLSsgICB3aXRoX2xkYmwxMjg9Im5vIjs7Ci0rICopIHdpdGhfbGRibDEyOD0ieWVzIjs7Ci0rIGVzYWMKLSsKLStmaQotKwotKwotKwotKwotICMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYWl4LXNvbmFtZSB3YXMgZ2l2ZW4uCi0gaWYgdGVzdCAiJHt3aXRoX2FpeF9zb25hbWUrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICAgd2l0aHZhbD0kd2l0aF9haXhfc29uYW1lOyBjYXNlICIke2hvc3R9OiR7ZW5hYmxlX3NoYXJlZH0iIGluCi1kaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZ3VyZS5hYyBiL2xpYmdjYy9jb25maWd1cmUuYWMKLWluZGV4IDI2OTk5N2YuLjgxZGMzYmEgMTAwNjQ0Ci0tLS0gYS9saWJnY2MvY29uZmlndXJlLmFjCi0rKysgYi9saWJnY2MvY29uZmlndXJlLmFjCi1AQCAtNzcsNiArNzcsMTggQEAgQUNfQVJHX0VOQUJMRSh2dGFibGUtdmVyaWZ5LAotIFtlbmFibGVfdnRhYmxlX3ZlcmlmeT1ub10pCi0gQUNfU1VCU1QoZW5hYmxlX3Z0YWJsZV92ZXJpZnkpCi0gCi0rQUNfQVJHX1dJVEgobG9uZy1kb3VibGUtMTI4LAotK1tBU19IRUxQX1NUUklORyhbLS13aXRoLWxvbmctZG91YmxlLTEyOF0sCi0rICAgIFt1c2UgMTI4LWJpdCBsb25nIGRvdWJsZSBieSBkZWZhdWx0XSldLAotKyAgICAgIHdpdGhfbGRibDEyOD0iJHdpdGhfbG9uZ19kb3VibGVfMTI4IiwKLStbY2FzZSAiJHtob3N0fSIgaW4KLSsgcG93ZXIqLSotbXVzbCopCi0rICAgd2l0aF9sZGJsMTI4PSJubyI7OwotKyAqKSB3aXRoX2xkYmwxMjg9InllcyI7OwotKyBlc2FjCi0rXSkKLStBQ19TVUJTVCh3aXRoX2xkYmwxMjgpCi0rCi0gQUNfQVJHX1dJVEgoYWl4LXNvbmFtZSwKLSBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1haXgtc29uYW1lPWFpeHxzdnI0fGJvdGhdLAotICAgICBbc2hhcmVkIGxpYnJhcnkgdmVyc2lvbmluZyAoYWthICJTT05BTUUiKSB2YXJpYW50IHRvIHByb3ZpZGUgb24gQUlYXSldLAotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDYtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDQ2LUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzkwMDM3Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDYtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSA1MTNiZjNjMzNlMmY1NTFmMDhiZDU3NjA1MDkxZDVkZGViYTM1MzZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgNCBNYXkgMjAxNiAyMToxMTozNCAtMDcwMAotU3ViamVjdDogW1BBVENIIDQ2LzQ2XSBMaW5rIGxpYmdjYyB1c2luZyBMREZMQUdTLCBub3QganVzdCBTSExJQl9MREZMQUdTCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxpYmdjYy9jb25maWcvdC1zbGliZ2NjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MgYi9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYwotaW5kZXggOGM1Zjg5MC4uMjliZTkwOSAxMDA2NDQKLS0tLSBhL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjCi0rKysgYi9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYwotQEAgLTMyLDcgKzMyLDcgQEAgU0hMSUJfSU5TVEFMTF9TT0xJTksgPSAkKExOX1MpICQoU0hMSUJfU09OQU1FKSBcCi0gCSQoREVTVERJUikkKHNsaWJkaXIpJChTSExJQl9TTElCRElSX1FVQUwpLyQoU0hMSUJfU09MSU5LKQotIAotIFNITElCX0xJTksgPSAkKENDKSAkKExJQkdDQzJfQ0ZMQUdTKSAtc2hhcmVkIC1ub2RlZmF1bHRsaWJzIFwKLS0JJChTSExJQl9MREZMQUdTKSBcCi0rCSQoTERGTEFHUykgJChTSExJQl9MREZMQUdTKSBcCi0gCS1vICQoU0hMSUJfRElSKS8kKFNITElCX1NPTkFNRSkudG1wIEBtdWx0aWxpYl9mbGFnc0AgXAotIAkkKFNITElCX09CSlMpICQoU0hMSUJfTEMpICYmIFwKLSAJcm0gLWYgJChTSExJQl9ESVIpLyQoU0hMSUJfU09MSU5LKSAmJiBcCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0Ny1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDQ3LWxpYmdjY19zLVVzZS1hbGlhcy1mb3ItX19jcHVfaW5kaWNhdG9yX2luaXQtaW5zdGVhZC0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiNWRhMDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDQ3LWxpYmdjY19zLVVzZS1hbGlhcy1mb3ItX19jcHVfaW5kaWNhdG9yX2luaXQtaW5zdGVhZC0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi1Gcm9tIDBhOWVkMDQ3OTIwM2NiN2U2OWMzNzQ1YjBjMjU5MDA3NDEwZjM5YmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTemFib2xjcyBOYWd5IDxuc3pAcG9ydDcwLm5ldD4KLURhdGU6IFNhdCwgMjQgT2N0IDIwMTUgMjA6MDk6NTMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCA0Ny80N10gbGliZ2NjX3M6IFVzZSBhbGlhcyBmb3IgX19jcHVfaW5kaWNhdG9yX2luaXQgaW5zdGVhZCBvZgotIHN5bXZlcgotCi1BZGFwdGVyIGZyb20KLQotaHR0cHM6Ly9nY2MuZ251Lm9yZy9tbC9nY2MtcGF0Y2hlcy8yMDE1LTA1L21zZzAwODk5Lmh0bWwKLQotVGhpcyBmaXggd2FzIGRlYmF0ZWQgYnV0IGhhc250IGJlZW4gYXBwbGllZCBnY2MgdXBzdHJlYW0gc2luY2UKLXRoZXkgZXhwZWN0IG11c2wgdG8gc3VwcG9ydCAnQCcgaW4gc3ltYm9sIHZlcnNpb25pbmcgd2hpY2ggaXMKLWEgc3VuL2dudSB2ZXJzaW9uaW5nIGV4dGVudGlvbi4gVGhpcyBwYXRjaCBob3dldmVyIGF2b2lkcyB0aGUKLW5lZWQgZm9yIHRoZSAnQCcgc3ltYm9scyBhdCBhbGwKLQotbGliZ2NjL0NoYW5nZWxvZzoKLQotMjAxNS0wNS0xMSAgU3phYm9sY3MgTmFneSAgPHN6YWJvbGNzLm5hZ3lAYXJtLmNvbT4KLQotCSogY29uZmlnL2kzODYvY3B1aW5mby5jIChfX2NwdV9pbmRpY2F0b3JfaW5pdF9sb2NhbCk6IEFkZC4KLQkoX19jcHVfaW5kaWNhdG9yX2luaXRAR0NDXzQuOC4wLCBfX2NwdV9tb2RlbEBHQ0NfNC44LjApOiBSZW1vdmUuCi0KLQkqIGNvbmZpZy9pMzg2L3QtbGludXggKEhPU1RfTElCR0NDMl9DRkxBR1MpOiBSZW1vdmUgLURVU0VfRUxGX1NZTVZFUi4KLQotZ2NjL0NoYW5nZWxvZzoKLQotMjAxNS0wNS0xMSAgU3phYm9sY3MgTmFneSAgPHN6YWJvbGNzLm5hZ3lAYXJtLmNvbT4KLQotCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9idWlsdGluKTogTWFrZSBfX2J1aWx0aW5fY3B1X2luaXQKLQljYWxsIF9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsIGluc3RlYWQgb2YgX19jcHVfaW5kaWNhdG9yX2luaXQuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogRGVuaWVkCi0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5jICAgICAgIHwgNCArKy0tCi0gbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYyB8IDYgKysrLS0tCi0gbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXggICB8IDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1pbmRleCA4NjFhMDI5Li4xYzk3ZDcyIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotQEAgLTQwMzIzLDEwICs0MDMyMywxMCBAQCBpeDg2X2V4cGFuZF9idWlsdGluICh0cmVlIGV4cCwgcnR4IHRhcmdldCwgcnR4IHN1YnRhcmdldCwKLSAgICAgewotICAgICBjYXNlIElYODZfQlVJTFRJTl9DUFVfSU5JVDoKLSAgICAgICB7Ci0tCS8qIE1ha2UgaXQgY2FsbCBfX2NwdV9pbmRpY2F0b3JfaW5pdCBpbiBsaWJnY2MuICovCi0rCS8qIE1ha2UgaXQgY2FsbCBfX2NwdV9pbmRpY2F0b3JfaW5pdF9sb2NhbCBpbiBsaWJnY2MuYS4gKi8KLSAJdHJlZSBjYWxsX2V4cHIsIGZuZGVjbCwgdHlwZTsKLSAgICAgICAgIHR5cGUgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKGludGVnZXJfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOyAKLS0JZm5kZWNsID0gYnVpbGRfZm5fZGVjbCAoIl9fY3B1X2luZGljYXRvcl9pbml0IiwgdHlwZSk7Ci0rCWZuZGVjbCA9IGJ1aWxkX2ZuX2RlY2wgKCJfX2NwdV9pbmRpY2F0b3JfaW5pdF9sb2NhbCIsIHR5cGUpOwotIAljYWxsX2V4cHIgPSBidWlsZF9jYWxsX2V4cHIgKGZuZGVjbCwgMCk7IAotIAlyZXR1cm4gZXhwYW5kX2V4cHIgKGNhbGxfZXhwciwgdGFyZ2V0LCBtb2RlLCBFWFBBTkRfTk9STUFMKTsKLSAgICAgICB9Ci1kaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYyBiL2xpYmdjYy9jb25maWcvaTM4Ni9jcHVpbmZvLmMKLWluZGV4IDhjMjI0OGQuLjZjODJmMTUgMTAwNjQ0Ci0tLS0gYS9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jCi0rKysgYi9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jCi1AQCAtNDg1LDcgKzQ4NSw3IEBAIF9fY3B1X2luZGljYXRvcl9pbml0ICh2b2lkKQotICAgcmV0dXJuIDA7Ci0gfQotIAotLSNpZiBkZWZpbmVkIFNIQVJFRCAmJiBkZWZpbmVkIFVTRV9FTEZfU1lNVkVSCi0tX19hc21fXyAoIi5zeW12ZXIgX19jcHVfaW5kaWNhdG9yX2luaXQsIF9fY3B1X2luZGljYXRvcl9pbml0QEdDQ180LjguMCIpOwotLV9fYXNtX18gKCIuc3ltdmVyIF9fY3B1X21vZGVsLCBfX2NwdV9tb2RlbEBHQ0NfNC44LjAiKTsKLSsjaWZuZGVmIFNIQVJFRAotK2ludCBfX2NwdV9pbmRpY2F0b3JfaW5pdF9sb2NhbCAodm9pZCkKLSsgIF9fYXR0cmlidXRlX18gKCh3ZWFrLCBhbGlhcyAoIl9fY3B1X2luZGljYXRvcl9pbml0IikpKTsKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL2kzODYvdC1saW51eCBiL2xpYmdjYy9jb25maWcvaTM4Ni90LWxpbnV4Ci1pbmRleCAxMWJiNDZlLi40ZjQ3ZjdiIDEwMDY0NAotLS0tIGEvbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXgKLSsrKyBiL2xpYmdjYy9jb25maWcvaTM4Ni90LWxpbnV4Ci1AQCAtMyw0ICszLDQgQEAKLSAjIHQtc2xpYmdjYy1lbGYtdmVyIGFuZCB0LWxpbnV4Ci0gU0hMSUJfTUFQRklMRVMgPSBsaWJnY2Mtc3RkLnZlciAkKHNyY2RpcikvY29uZmlnL2kzODYvbGliZ2NjLWdsaWJjLnZlcgotIAotLUhPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1sb25nLWRvdWJsZS04MCAtRFVTRV9FTEZfU1lNVkVSCi0rSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbWxvbmctZG91YmxlLTgwCi0tLSAKLTIuOS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0OC1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNDgtc3luYy1nY2Mtc3RkZGVmLmgtd2l0aC1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMGMxNThkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA0OC1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi1Gcm9tIDEwNTk1YzAzYzM5YjRlOTgwZDJhMDBlMTZmYzg0ZTljYWY4MjI5MmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAzIEZlYiAyMDE3IDEyOjU2OjAwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggNDgvNDhdIHN5bmMgZ2NjIHN0ZGRlZi5oIHdpdGggbXVzbAotCi1tdXNsIGRlZmluZXMgcHRyZGlmZl90IHNpemVfdCBhbmQgd2NoYXJfdAotc28gZG9udCBkZWZpbmUgdGhlbSBoZXJlIGlmIG11c2wgaXMgZGVmaW5pbmluZyB0aGVtCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oIHwgOSArKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvZ2luY2x1ZGUvc3RkZGVmLmggYi9nY2MvZ2luY2x1ZGUvc3RkZGVmLmgKLWluZGV4IGQ3MTE1MzBkMDUzLi5jMzE1YjdhOTdjMSAxMDA2NDQKLS0tLSBhL2djYy9naW5jbHVkZS9zdGRkZWYuaAotKysrIGIvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oCi1AQCAtMTM0LDYgKzEzNCw3IEBAIF9UWVBFX3djaGFyX3Q7Ci0gI2lmbmRlZiBfX19pbnRfcHRyZGlmZl90X2gKLSAjaWZuZGVmIF9HQ0NfUFRSRElGRl9UCi0gI2lmbmRlZiBfUFRSRElGRl9UX0RFQ0xBUkVEIC8qIERyYWdvbkZseSAqLwotKyNpZm5kZWYgX19ERUZJTkVEX3B0cmRpZmZfdCAvKiBtdXNsICovCi0gI2RlZmluZSBfUFRSRElGRl9UCi0gI2RlZmluZSBfVF9QVFJESUZGXwotICNkZWZpbmUgX1RfUFRSRElGRgotQEAgLTE0MywxMCArMTQ0LDEyIEBAIF9UWVBFX3djaGFyX3Q7Ci0gI2RlZmluZSBfX19pbnRfcHRyZGlmZl90X2gKLSAjZGVmaW5lIF9HQ0NfUFRSRElGRl9UCi0gI2RlZmluZSBfUFRSRElGRl9UX0RFQ0xBUkVECi0rI2RlZmluZSBfX0RFRklORURfcHRyZGlmZl90IC8qIG11c2wgKi8KLSAjaWZuZGVmIF9fUFRSRElGRl9UWVBFX18KLSAjZGVmaW5lIF9fUFRSRElGRl9UWVBFX18gbG9uZyBpbnQKLSAjZW5kaWYKLSB0eXBlZGVmIF9fUFRSRElGRl9UWVBFX18gcHRyZGlmZl90OwotKyNlbmRpZiAvKiBfX0RFRklORURfcHRyZGlmZl90ICovCi0gI2VuZGlmIC8qIF9QVFJESUZGX1RfREVDTEFSRUQgKi8KLSAjZW5kaWYgLyogX0dDQ19QVFJESUZGX1QgKi8KLSAjZW5kaWYgLyogX19faW50X3B0cmRpZmZfdF9oICovCi1AQCAtMTg0LDYgKzE4Nyw3IEBAIHR5cGVkZWYgX19QVFJESUZGX1RZUEVfXyBwdHJkaWZmX3Q7Ci0gI2lmbmRlZiBfR0NDX1NJWkVfVAotICNpZm5kZWYgX1NJWkVUXwotICNpZm5kZWYgX19zaXplX3QKLSsjaWZuZGVmIF9fREVGSU5FRF9zaXplX3QgLyogbXVzbCAqLwotICNkZWZpbmUgX19zaXplX3RfXwkvKiBCZU9TICovCi0gI2RlZmluZSBfX1NJWkVfVF9fCS8qIENyYXkgVW5pY29zL01rICovCi0gI2RlZmluZSBfU0laRV9UCi1AQCAtMjAwLDYgKzIwNCw3IEBAIHR5cGVkZWYgX19QVFJESUZGX1RZUEVfXyBwdHJkaWZmX3Q7Ci0gI2RlZmluZSBfX19pbnRfc2l6ZV90X2gKLSAjZGVmaW5lIF9HQ0NfU0laRV9UCi0gI2RlZmluZSBfU0laRVRfCi0rI2RlZmluZSBfX0RFRklORURfc2l6ZV90IC8qIG11c2wgKi8KLSAjaWYgKGRlZmluZWQgKF9fRnJlZUJTRF9fKSAmJiAoX19GcmVlQlNEX18gPj0gNSkpIFwKLSAgIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykgXAotICAgfHwgZGVmaW5lZChfX0ZyZWVCU0Rfa2VybmVsX18pCi1AQCAtMjM1LDYgKzI0MCw3IEBAIHR5cGVkZWYgbG9uZyBzc2l6ZV90OwotICNlbmRpZiAvKiBfU0laRV9UICovCi0gI2VuZGlmIC8qIF9fU0laRV9UX18gKi8KLSAjZW5kaWYgLyogX19zaXplX3RfXyAqLwotKyNlbmRpZiAvKiBfX0RFRklORURfc2l6ZV90ICovCi0gI3VuZGVmCV9fbmVlZF9zaXplX3QKLSAjZW5kaWYgLyogX1NURERFRl9IIG9yIF9fbmVlZF9zaXplX3QuICAqLwotIAotQEAgLTI2NCw2ICsyNzAsNyBAQCB0eXBlZGVmIGxvbmcgc3NpemVfdDsKLSAjaWZuZGVmIF9fX2ludF93Y2hhcl90X2gKLSAjaWZuZGVmIF9fSU5UX1dDSEFSX1RfSAotICNpZm5kZWYgX0dDQ19XQ0hBUl9UCi0rI2lmbmRlZiBfX0RFRklORURfd2NoYXJfdCAvKiBtdXNsICovCi0gI2RlZmluZSBfX3djaGFyX3RfXwkvKiBCZU9TICovCi0gI2RlZmluZSBfX1dDSEFSX1RfXwkvKiBDcmF5IFVuaWNvcy9NayAqLwotICNkZWZpbmUgX1dDSEFSX1QKLUBAIC0yNzksNiArMjg2LDcgQEAgdHlwZWRlZiBsb25nIHNzaXplX3Q7Ci0gI2RlZmluZSBfX0lOVF9XQ0hBUl9UX0gKLSAjZGVmaW5lIF9HQ0NfV0NIQVJfVAotICNkZWZpbmUgX1dDSEFSX1RfREVDTEFSRUQKLSsjZGVmaW5lIF9fREVGSU5FRF93Y2hhcl90IC8qIG11c2wgKi8KLSAKLSAvKiBPbiBCU0QvMzg2IDEuMSwgYXQgbGVhc3QsIG1hY2hpbmUvYW5zaS5oIGRlZmluZXMgX0JTRF9XQ0hBUl9UXwotICAgIGluc3RlYWQgb2YgX1dDSEFSX1RfLCBhbmQgX0JTRF9SVU5FX1RfICh3aGljaCwgdW5saWtlIHRoZSBvdGhlcgotQEAgLTM0NCw2ICszNTIsNyBAQCB0eXBlZGVmIF9fV0NIQVJfVFlQRV9fIHdjaGFyX3Q7Ci0gI2VuZGlmCi0gI2VuZGlmIC8qIF9fV0NIQVJfVF9fICovCi0gI2VuZGlmIC8qIF9fd2NoYXJfdF9fICovCi0rI2VuZGlmIC8qIF9fREVGSU5FRF93Y2hhcl90IG11c2wgKi8KLSAjdW5kZWYJX19uZWVkX3djaGFyX3QKLSAjZW5kaWYgLyogX1NURERFRl9IIG9yIF9fbmVlZF93Y2hhcl90LiAgKi8KLSAKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA1NF9hbGxfbm9waWUtYWxsLWZsYWdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDU0X2FsbF9ub3BpZS1hbGwtZmxhZ3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczYWI5NTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC8wMDU0X2FsbF9ub3BpZS1hbGwtZmxhZ3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1OZWVkIHRvIHBhc3MgTk9fUElFX0NGTEFHUyB0byBBTExfKiBzbyBnY2MgZG9lc24ndCBmYWlsIHdoZW4KLXdlIGNvbXBpbGUgaXQgd2l0aCBvbGRlciBnY2MgYW5kIHBpZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1NYWludGFpbmVkIGJ5OiBHZW50b28gVG9vbGNoYWluIFByb2plY3QgPHRvb2xjaGFpbkBnZW50b28ub3JnPgotU2lnbmVkLW9mZi1ieTogU3RlcGhlbiBBcm5vbGQgPHN0ZXBoZW4uYXJub2xkNDJAZ21haWwuY29tPgotCi0tLS0gYS9nY2MvTWFrZWZpbGUuaW4JMjAxNS0wNi0yNSAxOToxODoxMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBiL2djYy9NYWtlZmlsZS5pbgkyMDE2LTA0LTIyIDAwOjEyOjU0LjAyOTE3ODg2MCArMDIwMAotQEAgLTk5MSwxMCArOTkxLDEwIEBAIEFMTF9DWFhGTEFHUyA9ICQoVF9DRkxBR1MpICQoQ0ZMQUdTLSRAKQotIEFMTF9DUFBGTEFHUyA9ICQoSU5DTFVERVMpICQoQ1BQRkxBR1MpCi0KLSAjIFRoaXMgaXMgdGhlIHZhcmlhYmxlIHRvIHVzZSB3aGVuIHVzaW5nICQoQ09NUElMRVIpLgotLUFMTF9DT01QSUxFUkZMQUdTID0gJChBTExfQ1hYRkxBR1MpCi0rQUxMX0NPTVBJTEVSRkxBR1MgPSAkKE5PX1BJRV9DRkxBR1MpICQoQUxMX0NYWEZMQUdTKQotCi0gIyBUaGlzIGlzIHRoZSB2YXJpYWJsZSB0byB1c2Ugd2hlbiB1c2luZyAkKExJTktFUikuCi0tQUxMX0xJTktFUkZMQUdTID0gJChBTExfQ1hYRkxBR1MpCi0rQUxMX0xJTktFUkZMQUdTID0gJChOT19QSUVfQ0ZMQUdTKSAkKEFMTF9DWFhGTEFHUykKLQotICMgQnVpbGQgYW5kIGhvc3Qgc3VwcG9ydCBsaWJyYXJpZXMuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNTUtdW53aW5kX2gtZ2xpYmMyNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA1NS11bndpbmRfaC1nbGliYzI2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjY2Y2ZlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA1NS11bndpbmRfaC1nbGliYzI2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLUJhY2twb3J0IGFuZCBlZGl0IG9mIHBhdGNoZXMgZnJvbToKLWh0dHBzOi8vZ2NjLmdudS5vcmcvdmlld2N2cy9nY2M/bGltaXRfY2hhbmdlcz0wJnZpZXc9cmV2aXNpb24mcmV2aXNpb249MjQ5OTU3Ci1ieSBqc20yOCAoSm9zZXBoIE15ZXJzKQotCi1DdXJyZW50IGdsaWJjIG5vIGxvbmdlciBnaXZlcyB0aGUgdWNvbnRleHRfdCB0eXBlIHRoZSB0YWcgc3RydWN0Ci11Y29udGV4dCwgdG8gY29uZm9ybSB3aXRoIFBPU0lYIG5hbWVzcGFjZSBydWxlcy4gIFRoaXMgcmVxdWlyZXMKLXZhcmlvdXMgbGludXgtdW53aW5kLmggZmlsZXMgaW4gbGliZ2NjLCB0aGF0IHdlcmUgcHJldmlvdXNseSB1c2luZwotc3RydWN0IHVjb250ZXh0LCB0byBiZSBmaXhlZCB0byB1c2UgdWNvbnRleHRfdCBpbnN0ZWFkLiAgVGhpcyBpcwotc2ltaWxhciB0byB0aGUgcmVtb3ZhbCBvZiB0aGUgc3RydWN0IHNpZ2luZm8gdGFnIGZyb20gc2lnaW5mb190IHNvbWUKLXllYXJzIGFnby4KLQotVGhpcyBwYXRjaCBjaGFuZ2VzIHRob3NlIGZpbGVzIHRvIHVzZSB1Y29udGV4dF90IGluc3RlYWQuICBBcyB0aGUKLXN0YW5kYXJkIG5hbWUgdGhhdCBzaG91bGQgYmUgdW5jb25kaXRpb25hbGx5IHNhZmUsIHNvIHRoaXMgaXMgbm90Ci1yZXN0cmljdGVkIHRvIGFyY2hpdGVjdHVyZXMgc3VwcG9ydGVkIGJ5IGdsaWJjLCBvciBjb25kaXRpb25lZCBvbiB0aGUKLWdsaWJjIHZlcnNpb24uCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotLS0tIGJyYW5jaGVzL2djYy02LWJyYW5jaC9saWJnY2MvY29uZmlnL2FhcmNoNjQvbGludXgtdW53aW5kLmgJMjAxNy8wNy8wNCAxMDoyMjo1NgkyNDk5NTYKLS0tLSBiL2xpYmdjYy9jb25maWcvYWFyY2g2NC9saW51eC11bndpbmQuaAkyMDE3LzA3LzA0IDEwOjIzOjU3CTI0OTk1NwotQEAgLTUyLDcgKzUyLDcgQEAKLSAgIHN0cnVjdCBydF9zaWdmcmFtZQotICAgewotICAgICBzaWdpbmZvX3QgaW5mbzsKLS0gICAgc3RydWN0IHVjb250ZXh0IHVjOwotKyAgICB1Y29udGV4dF90IHVjOwotICAgfTsKLSAKLSAgIHN0cnVjdCBydF9zaWdmcmFtZSAqcnRfOwotLS0tIGJyYW5jaGVzL2djYy02LWJyYW5jaC9saWJnY2MvY29uZmlnL2FscGhhL2xpbnV4LXVud2luZC5oCTIwMTcvMDcvMDQgMTA6MjI6NTYJMjQ5OTU2Ci0tLS0gYi9saWJnY2MvY29uZmlnL2FscGhhL2xpbnV4LXVud2luZC5oCTIwMTcvMDcvMDQgMTA6MjM6NTcJMjQ5OTU3Ci1AQCAtNTEsNyArNTEsNyBAQAotICAgICB7Ci0gICAgICAgc3RydWN0IHJ0X3NpZ2ZyYW1lIHsKLSAJc2lnaW5mb190IGluZm87Ci0tCXN0cnVjdCB1Y29udGV4dCB1YzsKLSsJdWNvbnRleHRfdCB1YzsKLSAgICAgICB9ICpydF8gPSBjb250ZXh0LT5jZmE7Ci0gICAgICAgc2MgPSAmcnRfLT51Yy51Y19tY29udGV4dDsKLSAgICAgfQotLS0tIGJyYW5jaGVzL2djYy02LWJyYW5jaC9saWJnY2MvY29uZmlnL2JmaW4vbGludXgtdW53aW5kLmgJMjAxNy8wNy8wNCAxMDoyMjo1NgkyNDk5NTYKLS0tLSBiL2xpYmdjYy9jb25maWcvYmZpbi9saW51eC11bndpbmQuaAkyMDE3LzA3LzA0IDEwOjIzOjU3CTI0OTk1NwotQEAgLTUyLDcgKzUyLDcgQEAKLSAJdm9pZCAqcHVjOwotIAljaGFyIHJldGNvZGVbOF07Ci0gCXNpZ2luZm9fdCBpbmZvOwotLQlzdHJ1Y3QgdWNvbnRleHQgdWM7Ci0rCXVjb250ZXh0X3QgdWM7Ci0gICAgICAgfSAqcnRfID0gY29udGV4dC0+Y2ZhOwotIAotICAgICAgIC8qIFRoZSB2b2lkICogY2FzdCBpcyBuZWNlc3NhcnkgdG8gYXZvaWQgYW4gYWxpYXNpbmcgd2FybmluZy4KLS0tLSBicmFuY2hlcy9nY2MtNi1icmFuY2gvbGliZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LXVud2luZC5oCTIwMTcvMDcvMDQgMTA6MjI6NTYJMjQ5OTU2Ci0tLS0gYi9saWJnY2MvY29uZmlnL2kzODYvbGludXgtdW53aW5kLmgJMjAxNy8wNy8wNCAxMDoyMzo1NwkyNDk5NTcKLUBAIC01OCw3ICs1OCw3IEBACi0gICBpZiAoKih1bnNpZ25lZCBjaGFyICopKHBjKzApID09IDB4NDgKLSAgICAgICAmJiAqKHVuc2lnbmVkIGxvbmcgbG9uZyAqKShwYysxKSA9PSBSVF9TSUdSRVRVUk5fU1lTQ0FMTCkKLSAgICAgewotLSAgICAgIHN0cnVjdCB1Y29udGV4dCAqdWNfID0gY29udGV4dC0+Y2ZhOwotKyAgICAgIHVjb250ZXh0X3QgKnVjXyA9IGNvbnRleHQtPmNmYTsKLSAgICAgICAvKiBUaGUgdm9pZCAqIGNhc3QgaXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGFuIGFsaWFzaW5nIHdhcm5pbmcuCi0gICAgICAgICAgVGhlIGFsaWFzaW5nIHdhcm5pbmcgaXMgY29ycmVjdCwgYnV0IHNob3VsZCBub3QgYmUgYSBwcm9ibGVtCi0gICAgICAgICAgYmVjYXVzZSBpdCBkb2VzIG5vdCBhbGlhcyBhbnl0aGluZy4gICovCi1AQCAtMTM4LDcgKzEzOCw3IEBACi0gCXNpZ2luZm9fdCAqcGluZm87Ci0gCXZvaWQgKnB1YzsKLSAJc2lnaW5mb190IGluZm87Ci0tCXN0cnVjdCB1Y29udGV4dCB1YzsKLSsJdWNvbnRleHRfdCB1YzsKLSAgICAgICB9ICpydF8gPSBjb250ZXh0LT5jZmE7Ci0gICAgICAgLyogVGhlIHZvaWQgKiBjYXN0IGlzIG5lY2Vzc2FyeSB0byBhdm9pZCBhbiBhbGlhc2luZyB3YXJuaW5nLgotICAgICAgICAgIFRoZSBhbGlhc2luZyB3YXJuaW5nIGlzIGNvcnJlY3QsIGJ1dCBzaG91bGQgbm90IGJlIGEgcHJvYmxlbQotLS0tIGJyYW5jaGVzL2djYy02LWJyYW5jaC9saWJnY2MvY29uZmlnL202OGsvbGludXgtdW53aW5kLmgJMjAxNy8wNy8wNCAxMDoyMjo1NgkyNDk5NTYKLS0tLSBiL2xpYmdjYy9jb25maWcvbTY4ay9saW51eC11bndpbmQuaAkyMDE3LzA3LzA0IDEwOjIzOjU3CTI0OTk1NwotQEAgLTMzLDcgKzMzLDcgQEAKLSAvKiA8c3lzL3Vjb250ZXh0Lmg+IGlzIHVuZm9ydHVuYXRlbHkgYnJva2VuIHJpZ2h0IG5vdy4gICovCi0gc3RydWN0IHV3X3Vjb250ZXh0IHsKLSAJdW5zaWduZWQgbG9uZwkgIHVjX2ZsYWdzOwotLQlzdHJ1Y3QgdWNvbnRleHQgICp1Y19saW5rOwotKwl1Y29udGV4dF90CSAqdWNfbGluazsKLSAJc3RhY2tfdAkJICB1Y19zdGFjazsKLSAJbWNvbnRleHRfdAkgIHVjX21jb250ZXh0OwotIAl1bnNpZ25lZCBsb25nCSAgdWNfZmlsbGVyWzgwXTsKLS0tLSBicmFuY2hlcy9nY2MtNi1icmFuY2gvbGliZ2NjL2NvbmZpZy9uaW9zMi9saW51eC11bndpbmQuaAkyMDE3LzA3LzA0IDEwOjIyOjU2CTI0OTk1NgotLS0tIGIvbGliZ2NjL2NvbmZpZy9uaW9zMi9saW51eC11bndpbmQuaAkyMDE3LzA3LzA0IDEwOjIzOjU3CTI0OTk1NwotQEAgLTM4LDcgKzM4LDcgQEAKLSAKLSBzdHJ1Y3QgbmlvczJfdWNvbnRleHQgewotICAgdW5zaWduZWQgbG9uZyB1Y19mbGFnczsKLS0gIHN0cnVjdCB1Y29udGV4dCAqdWNfbGluazsKLSsgIHVjb250ZXh0X3QgKnVjX2xpbms7Ci0gICBzdGFja190IHVjX3N0YWNrOwotICAgc3RydWN0IG5pb3MyX21jb250ZXh0IHVjX21jb250ZXh0OwotICAgc2lnc2V0X3QgdWNfc2lnbWFzazsJLyogbWFzayBsYXN0IGZvciBleHRlbnNpYmlsaXR5ICovCi0tLS0gYnJhbmNoZXMvZ2NjLTYtYnJhbmNoL2xpYmdjYy9jb25maWcvcGEvbGludXgtdW53aW5kLmgJMjAxNy8wNy8wNCAxMDoyMjo1NgkyNDk5NTYKLS0tLSBiL2xpYmdjYy9jb25maWcvcGEvbGludXgtdW53aW5kLmgJMjAxNy8wNy8wNCAxMDoyMzo1NwkyNDk5NTcKLUBAIC04MCw3ICs4MCw3IEBACi0gICBzdHJ1Y3Qgc2lnY29udGV4dCAqc2M7Ci0gICBzdHJ1Y3QgcnRfc2lnZnJhbWUgewotICAgICBzaWdpbmZvX3QgaW5mbzsKLS0gICAgc3RydWN0IHVjb250ZXh0IHVjOwotKyAgICB1Y29udGV4dF90IHVjOwotICAgfSAqZnJhbWU7Ci0gCi0gICAvKiBydF9zaWdyZXR1cm4gdHJhbXBvbGluZToKLS0tLSBicmFuY2hlcy9nY2MtNi1icmFuY2gvbGliZ2NjL2NvbmZpZy9zaC9saW51eC11bndpbmQuaAkyMDE3LzA3LzA0IDEwOjIyOjU2CTI0OTk1NgotLS0tIGIvbGliZ2NjL2NvbmZpZy9zaC9saW51eC11bndpbmQuaAkyMDE3LzA3LzA0IDEwOjIzOjU3CTI0OTk1NwotQEAgLTE4MCw3ICsxODAsNyBAQAotICAgICB7Ci0gICAgICAgc3RydWN0IHJ0X3NpZ2ZyYW1lIHsKLSAJc2lnaW5mb190IGluZm87Ci0tCXN0cnVjdCB1Y29udGV4dCB1YzsKLSsJdWNvbnRleHRfdCB1YzsKLSAgICAgICB9ICpydF8gPSBjb250ZXh0LT5jZmE7Ci0gICAgICAgLyogVGhlIHZvaWQgKiBjYXN0IGlzIG5lY2Vzc2FyeSB0byBhdm9pZCBhbiBhbGlhc2luZyB3YXJuaW5nLgotICAgICAgICAgIFRoZSBhbGlhc2luZyB3YXJuaW5nIGlzIGNvcnJlY3QsIGJ1dCBzaG91bGQgbm90IGJlIGEgcHJvYmxlbQotLS0tIGJyYW5jaGVzL2djYy02LWJyYW5jaC9saWJnY2MvY29uZmlnL3RpbGVwcm8vbGludXgtdW53aW5kLmgJMjAxNy8wNy8wNCAxMDoyMjo1NgkyNDk5NTYKLS0tLSBiL2xpYmdjYy9jb25maWcvdGlsZXByby9saW51eC11bndpbmQuaAkyMDE3LzA3LzA0IDEwOjIzOjU3CTI0OTk1NwotQEAgLTYxLDcgKzYxLDcgQEAKLSAgIHN0cnVjdCBydF9zaWdmcmFtZSB7Ci0gICAgIHVuc2lnbmVkIGNoYXIgc2F2ZV9hcmVhW0NfQUJJX1NBVkVfQVJFQV9TSVpFXTsKLSAgICAgc2lnaW5mb190IGluZm87Ci0tICAgIHN0cnVjdCB1Y29udGV4dCB1YzsKLSsgICAgdWNvbnRleHRfdCB1YzsKLSAgIH0gKnJ0XzsKLSAKLSAgIC8qIFJldHVybiBpZiB0aGlzIGlzIG5vdCBhIHNpZ25hbCBoYW5kbGVyLiAgKi8KLS0tLSBicmFuY2hlcy9nY2MtNi1icmFuY2gvbGliZ2NjL2NvbmZpZy94dGVuc2EvbGludXgtdW53aW5kLmgJMjAxNy8wNy8wNCAxMDoyMjo1NgkyNDk5NTYKLS0tLSBiL2xpYmdjYy9jb25maWcveHRlbnNhL2xpbnV4LXVud2luZC5oCTIwMTcvMDcvMDQgMTA6MjM6NTcJMjQ5OTU3Ci1AQCAtNjcsNyArNjcsNyBAQAotIAotICAgc3RydWN0IHJ0X3NpZ2ZyYW1lIHsKLSAgICAgc2lnaW5mb190IGluZm87Ci0tICAgIHN0cnVjdCB1Y29udGV4dCB1YzsKLSsgICAgdWNvbnRleHRfdCB1YzsKLSAgIH0gKnJ0XzsKLSAKLSAgIC8qIG1vdmkgYTIsIF9fTlJfcnRfc2lncmV0dXJuOyBzeXNjYWxsICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40LzAwNTctQVJNLVBSLTgyNDQ1LXN1cHByZXNzLTMyLWJpdC1hbGlnbmVkLWxkcmQtc3RyZC1wZWVwaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA1Ny1BUk0tUFItODI0NDUtc3VwcHJlc3MtMzItYml0LWFsaWduZWQtbGRyZC1zdHJkLXBlZXBoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjE0YWI4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvMDA1Ny1BUk0tUFItODI0NDUtc3VwcHJlc3MtMzItYml0LWFsaWduZWQtbGRyZC1zdHJkLXBlZXBoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTk0ICswLDAgQEAKLUZyb20gYWQ1YmY0NTBhZWYyZmZlZTZkNTdlZDE5M2ZhYmM1ZjcyZjhlYWE2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IHJlYXJuc2hhIDxyZWFybnNoYUAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBUaHUsIDE5IE9jdCAyMDE3IDEzOjE2OjQyICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFtBUk1dIFBSIDgyNDQ1IC0gc3VwcHJlc3MgMzItYml0IGFsaWduZWQgbGRyZC9zdHJkIHBlZXBob2xpbmcKLSB3aXRoIC1tbm8tdW5hbGlnbmVkLWFjY2VzcwotCi1QZWVwaG9sZSBwYXR0ZXJucyBleGlzdCBpbiB0aGUgYXJtIGJhY2tlbmQgdG8gc3BvdCBsb2FkL3N0b3JlCi1vcGVyYXRpb25zIHRvIGFkamFjZW50IG1lbW9yeSBvcGVyYXRpb25zIGluIG9yZGVyIHRvIGNvbnZlcnQgdGhlbSBpbnRvCi1sZHJkL3N0cmQgaW5zdHJ1Y3Rpb25zLiAgSG93ZXZlciwgd2hlbiB3ZSBoYXZlIHN0cmljdCBhbGlnbm1lbnQKLWVuZm9yY2VkLCB0aGVuIHdlIGNhbiBvbmx5IGRvIHRoaXMgaWYgdGhlIGFjY2Vzc2VzIGFyZSBrbm93biB0byBiZQotNjQtYml0IGFsaWduZWQ7IHRoaXMgaXMgdW5saWtlbHkgdG8gYmUgdGhlIGNhc2UgZm9yIG1vc3QgbG9hZHMuICBUaGUKLXBhdGNoIGFkZHMgc29tZSBhbGlnbm1lbnQgY2hlY2tpbmcgdG8gdGhlIGNvZGUgdGhhdCB2YWxpZGF0ZXMgdGhlCi1hZGRyZXNzZXMgZm9yIHVzZSBpbiB0aGUgcGVlcGhvbGUgcGF0dGVybnMuICBUaGlzIHNob3VsZCBhbHNvIGZpeAotaW5jb3JyZWN0IGdlbmVyYXRpb24gb2YgbGRyZC9zdHJkIHdpdGggdW5hbGlnbmVkIGFjY2Vzc2VzIHRoYXQgY291bGQKLXByZXZpb3VzbHkgaGF2ZSBvY2N1cnJlZCBvbiBBUk12NWUgd2hlcmUgYWxsIHN1Y2ggb3BlcmF0aW9ucyBtdXN0IGJlCi02NC1iaXQgYWxpZ25lZC4KLQotSSd2ZSBhZGRlZCBzb21lIG5ldyB0ZXN0cyBhcyB3ZWxsLiAgSW4gZG9pbmcgc28gSSBkaXNjb3ZlcmVkIHRoYXQgdGhlCi1sZHJkL3N0cmQgcGVlcGhvbGUgdGVzdHMgY291bGQgbmV2ZXIgZmFpbCBzaW5jZSB0aGV5IHdvdWxkIG1hdGNoIHRoZQotc291cmNlIGZpbGUgbmFtZSBpbiB0aGUgc2Nhbm5lZCBhc3NlbWJseSBhcyB3ZWxsIGFzIGFueSBpbnN0cnVjdGlvbnMKLW9mIHRoZSBpbnRlbmRlZCB0eXBlLiAgSSd2ZSBmaXhlZCB0aG9zZSBieSB0aWdodGVuaW5nIHRoZSBzY2FuIHJlc3VsdHMKLXNsaWdodGx5LgotCi1nY2M6Ci0KLSogY29uZmlnL2FybS9hcm0uYyAoYWxpZ25fb2tfbGRyZF9zdHJkKTogTmV3IGZ1bmN0aW9uLgotKG1lbV9va19mb3JfbGRyZF9zdHJkKTogTmV3IHBhcmFtZXRlciBhbGlnbi4gIEV4dHJhY3QgdGhlIGFsaWdubWVudCBvZiB0aGUKLW1lbSBpbnRvIGl0LgotKGdlbl9vcGVyYW5kc19sZHJkX3N0cmQpOiBWYWxpZGF0ZSB0aGUgYWxpZ25tZW50IG9mIHRoZSBhY2Nlc3Nlcy4KLQotdGVzdHN1aXRlOgotCi0qIGdjYy50YXJnZXQvYXJtL3BlZXAtbGRyZC0xLmM6IFRpZ2h0ZW4gdGVzdCBzY2FuIHBhdHRlcm4uCi0qIGdjYy50YXJnZXQvYXJtL3BlZXAtc3RyZC0xLmM6IExpa2V3aXNlLgotKiBnY2MudGFyZ2V0L2FybS9wZWVwLWxkcmQtMi5jOiBOZXcgdGVzdC4KLSogZ2NjLnRhcmdldC9hcm0vcGVlcC1zdHJkLTIuYzogTmV3IHRlc3QuCi0KLQotCi1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy9icmFuY2hlcy9nY2MtNi1icmFuY2hAMjUzODkyIDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0gZ2NjL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOCArKysrKysrCi0gZ2NjL2NvbmZpZy9hcm0vYXJtLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyNyArKysrKysrKysrKysrKysrKystLS0tCi0gZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOCArKysrKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wZWVwLWxkcmQtMS5jICAgICAgICAgfCAgMiArLQotIC4uLi9hcm0ve3BlZXAtbGRyZC0xLmMgPT4gcGVlcC1sZHJkLTIuY30gICAgICAgICAgIHwgIDQgKystLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1zdHJkLTEuYyAgICAgICAgIHwgIDIgKy0KLSAuLi4vYXJtL3twZWVwLXN0cmQtMS5jID0+IHBlZXAtc3RyZC0yLmN9ICAgICAgICAgICB8ICA0ICsrLS0KLSA3IGZpbGVzIGNoYW5nZWQsIDQ0IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQotIGNvcHkgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS97cGVlcC1sZHJkLTEuYyA9PiBwZWVwLWxkcmQtMi5jfSAoNjMlKQotIGNvcHkgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS97cGVlcC1zdHJkLTEuYyA9PiBwZWVwLXN0cmQtMi5jfSAoNTglKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vYXJtLmMgYi9nY2MvY29uZmlnL2FybS9hcm0uYwotaW5kZXggOWMwODEzZDU5OGQuLmUzZGE5Zjc3ZmI2IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hcm0vYXJtLmMKLSsrKyBiL2djYy9jb25maWcvYXJtL2FybS5jCi1AQCAtMTU5MjYsMTIgKzE1OTI2LDIzIEBAIG9wZXJhbmRzX29rX2xkcmRfc3RyZCAocnR4IHJ0LCBydHggcnQyLCBydHggcm4sIEhPU1RfV0lERV9JTlQgb2Zmc2V0LAotICAgcmV0dXJuIHRydWU7Ci0gfQotIAotKy8qIFJldHVybiB0cnVlIGlmIGEgNjQtYml0IGFjY2VzcyB3aXRoIGFsaWdubWVudCBBTElHTiBhbmQgd2l0aCBhCi0rICAgY29uc3RhbnQgb2Zmc2V0IE9GRlNFVCBmcm9tIHRoZSBiYXNlIHBvaW50ZXIgaXMgcGVybWl0dGVkIG9uIHRoaXMKLSsgICBhcmNoaXRlY3R1cmUuICAqLwotK3N0YXRpYyBib29sCi0rYWxpZ25fb2tfbGRyZF9zdHJkIChIT1NUX1dJREVfSU5UIGFsaWduLCBIT1NUX1dJREVfSU5UIG9mZnNldCkKLSt7Ci0rICByZXR1cm4gKHVuYWxpZ25lZF9hY2Nlc3MKLSsJICA/IChhbGlnbiA+PSBCSVRTX1BFUl9XT1JEICYmIChvZmZzZXQgJiAzKSA9PSAwKQotKwkgIDogKGFsaWduID49IDIgKiBCSVRTX1BFUl9XT1JEICYmIChvZmZzZXQgJiA3KSA9PSAwKSk7Ci0rfQotKwotIC8qIEhlbHBlciBmb3IgZ2VuX29wZXJhbmRzX2xkcmRfc3RyZC4gIFJldHVybnMgdHJ1ZSBpZmYgdGhlIG1lbW9yeQotICAgIG9wZXJhbmQgTUVNJ3MgYWRkcmVzcyBjb250YWlucyBhbiBpbW1lZGlhdGUgb2Zmc2V0IGZyb20gdGhlIGJhc2UKLS0gICByZWdpc3RlciBhbmQgaGFzIG5vIHNpZGUgZWZmZWN0cywgaW4gd2hpY2ggY2FzZSBpdCBzZXRzIEJBU0UgYW5kCi0tICAgT0ZGU0VUIGFjY29yZGluZ2x5LiAgKi8KLSsgICByZWdpc3RlciBhbmQgaGFzIG5vIHNpZGUgZWZmZWN0cywgaW4gd2hpY2ggY2FzZSBpdCBzZXRzIEJBU0UsCi0rICAgT0ZGU0VUIGFuZCBBTElHTiBhY2NvcmRpbmdseS4gICovCi0gc3RhdGljIGJvb2wKLS1tZW1fb2tfZm9yX2xkcmRfc3RyZCAocnR4IG1lbSwgcnR4ICpiYXNlLCBydHggKm9mZnNldCkKLSttZW1fb2tfZm9yX2xkcmRfc3RyZCAocnR4IG1lbSwgcnR4ICpiYXNlLCBydHggKm9mZnNldCwgSE9TVF9XSURFX0lOVCAqYWxpZ24pCi0gewotICAgcnR4IGFkZHI7Ci0gCi1AQCAtMTU5NTAsNiArMTU5NjEsNyBAQCBtZW1fb2tfZm9yX2xkcmRfc3RyZCAocnR4IG1lbSwgcnR4ICpiYXNlLCBydHggKm9mZnNldCkKLSAgIGdjY19hc3NlcnQgKE1FTV9QIChtZW0pKTsKLSAKLSAgICpvZmZzZXQgPSBjb25zdDBfcnR4OwotKyAgKmFsaWduID0gTUVNX0FMSUdOIChtZW0pOwotIAotICAgYWRkciA9IFhFWFAgKG1lbSwgMCk7Ci0gCi1AQCAtMTU5OTAsNyArMTYwMDIsNyBAQCBnZW5fb3BlcmFuZHNfbGRyZF9zdHJkIChydHggKm9wZXJhbmRzLCBib29sIGxvYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjb25zdF9zdG9yZSwgYm9vbCBjb21tdXRlKQotIHsKLSAgIGludCBub3BzID0gMjsKLS0gIEhPU1RfV0lERV9JTlQgb2Zmc2V0c1syXSwgb2Zmc2V0OwotKyAgSE9TVF9XSURFX0lOVCBvZmZzZXRzWzJdLCBvZmZzZXQsIGFsaWduWzJdOwotICAgcnR4IGJhc2UgPSBOVUxMX1JUWDsKLSAgIHJ0eCBjdXJfYmFzZSwgY3VyX29mZnNldCwgdG1wOwotICAgaW50IGksIGdhcDsKLUBAIC0xNjAwMiw3ICsxNjAxNCw4IEBAIGdlbl9vcGVyYW5kc19sZHJkX3N0cmQgKHJ0eCAqb3BlcmFuZHMsIGJvb2wgbG9hZCwKLSAgICAgIHJlZ2lzdGVycywgYW5kIHRoZSBjb3JyZXNwb25kaW5nIG1lbW9yeSBvZmZzZXRzLiAgKi8KLSAgIGZvciAoaSA9IDA7IGkgPCBub3BzOyBpKyspCi0gICAgIHsKLS0gICAgICBpZiAoIW1lbV9va19mb3JfbGRyZF9zdHJkIChvcGVyYW5kc1tub3BzK2ldLCAmY3VyX2Jhc2UsICZjdXJfb2Zmc2V0KSkKLSsgICAgICBpZiAoIW1lbV9va19mb3JfbGRyZF9zdHJkIChvcGVyYW5kc1tub3BzK2ldLCAmY3VyX2Jhc2UsICZjdXJfb2Zmc2V0LAotKwkJCQkgJmFsaWduW2ldKSkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAKLSAgICAgICBpZiAoaSA9PSAwKQotQEAgLTE2MTE0LDYgKzE2MTI3LDcgQEAgZ2VuX29wZXJhbmRzX2xkcmRfc3RyZCAocnR4ICpvcGVyYW5kcywgYm9vbCBsb2FkLAotICAgICAgIC8qIFN3YXAgdGhlIGluc3RydWN0aW9ucyBzdWNoIHRoYXQgbG93ZXIgbWVtb3J5IGlzIGFjY2Vzc2VkIGZpcnN0LiAgKi8KLSAgICAgICBzdGQ6OnN3YXAgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSk7Ci0gICAgICAgc3RkOjpzd2FwIChvcGVyYW5kc1syXSwgb3BlcmFuZHNbM10pOwotKyAgICAgIHN0ZDo6c3dhcCAoYWxpZ25bMF0sIGFsaWduWzFdKTsKLSAgICAgICBpZiAoY29uc3Rfc3RvcmUpCi0gICAgICAgICBzdGQ6OnN3YXAgKG9wZXJhbmRzWzRdLCBvcGVyYW5kc1s1XSk7Ci0gICAgIH0KLUBAIC0xNjEyNyw2ICsxNjE0MSw5IEBAIGdlbl9vcGVyYW5kc19sZHJkX3N0cmQgKHJ0eCAqb3BlcmFuZHMsIGJvb2wgbG9hZCwKLSAgIGlmIChnYXAgIT0gNCkKLSAgICAgcmV0dXJuIGZhbHNlOwotIAotKyAgaWYgKCFhbGlnbl9va19sZHJkX3N0cmQgKGFsaWduWzBdLCBvZmZzZXQpKQotKyAgICByZXR1cm4gZmFsc2U7Ci0rCi0gICAvKiBNYWtlIHN1cmUgd2UgZ2VuZXJhdGUgbGVnYWwgaW5zdHJ1Y3Rpb25zLiAgKi8KLSAgIGlmIChvcGVyYW5kc19va19sZHJkX3N0cmQgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgYmFzZSwgb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIGxvYWQpKQotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1sZHJkLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1sZHJkLTEuYwotaW5kZXggZWIyYjg2ZWU3YjYuLmQ0OWVmZjZiODdlIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wZWVwLWxkcmQtMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3BlZXAtbGRyZC0xLmMKLUBAIC04LDQgKzgsNCBAQCBpbnQgZm9vKGludCBhLCBpbnQgYiwgaW50KiBwLCBpbnQgKnEpCi0gICAqcCA9IGE7Ci0gICByZXR1cm4gYTsKLSB9Ci0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJsZHJkIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImxkcmRcXHQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1sZHJkLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1sZHJkLTIuYwotc2ltaWxhcml0eSBpbmRleCA2MyUKLWNvcHkgZnJvbSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3BlZXAtbGRyZC0xLmMKLWNvcHkgdG8gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wZWVwLWxkcmQtMi5jCi1pbmRleCBlYjJiODZlZTdiNi4uNjgyMmMyYjE0NTQgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3BlZXAtbGRyZC0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1sZHJkLTIuYwotQEAgLTEsNiArMSw2IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSAvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBhcm1fcHJlZmVyX2xkcmRfc3RyZCB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIiIH0gICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby11bmFsaWduZWQtYWNjZXNzIiB9ICAqLwotIGludCBmb28oaW50IGEsIGludCBiLCBpbnQqIHAsIGludCAqcSkKLSB7Ci0gICBhID0gcFsyXSArIHBbM107Ci1AQCAtOCw0ICs4LDQgQEAgaW50IGZvbyhpbnQgYSwgaW50IGIsIGludCogcCwgaW50ICpxKQotICAgKnAgPSBhOwotICAgcmV0dXJuIGE7Ci0gfQotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibGRyZCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAibGRyZFxcdCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wZWVwLXN0cmQtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wZWVwLXN0cmQtMS5jCi1pbmRleCBiZDMzMDc2OTU5OS4uZmUxYmVhYzcyMjkgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3BlZXAtc3RyZC0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1zdHJkLTEuYwotQEAgLTYsNCArNiw0IEBAIHZvaWQgZm9vKGludCBhLCBpbnQgYiwgaW50KiBwKQotICAgcFsyXSA9IGE7Ci0gICBwWzNdID0gYjsKLSB9Ci0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJzdHJkIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInN0cmRcXHQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1zdHJkLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1zdHJkLTIuYwotc2ltaWxhcml0eSBpbmRleCA1OCUKLWNvcHkgZnJvbSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3BlZXAtc3RyZC0xLmMKLWNvcHkgdG8gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wZWVwLXN0cmQtMi5jCi1pbmRleCBiZDMzMDc2OTU5OS4uYmZjNWViZTllZWMgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL3BlZXAtc3RyZC0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vcGVlcC1zdHJkLTIuYwotQEAgLTEsOSArMSw5IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSAvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBhcm1fcHJlZmVyX2xkcmRfc3RyZCB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIiIH0gICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby11bmFsaWduZWQtYWNjZXNzIiB9ICAqLwotIHZvaWQgZm9vKGludCBhLCBpbnQgYiwgaW50KiBwKQotIHsKLSAgIHBbMl0gPSBhOwotICAgcFszXSA9IGI7Ci0gfQotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAic3RyZCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAic3RyZFxcdCIgfSB9ICovCi0tLSAKLTIuMTUuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDEtZW5hYmxlLUZMX0xQQUUtZmxhZy1mb3ItYXJtdjd2ZS1jb3Jlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwMS1lbmFibGUtRkxfTFBBRS1mbGFnLWZvci1hcm12N3ZlLWNvcmVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjY2NGM1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwMS1lbmFibGUtRkxfTFBBRS1mbGFnLWZvci1hcm12N3ZlLWNvcmVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotRnJvbSAyMmZjYzEyNmZhZDYxYThlOWRkYWFhYmJjODAzNjY0NDI3MzY0MmRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbToga3RrYWNob3YgPGt0a2FjaG92QDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IFRodSwgOSBOb3YgMjAxNyAxNDozNDoyOCArMDAwMAotU3ViamVjdDogW1BBVENIXSBlbmFibGUgRkxfTFBBRSBmbGFnIGZvciBhcm12N3ZlIGNvcmVzCi0KLVRoZSBmb2xsb3dpbmcgY29tbWl0IGFkZGVkIHRoZSBGTF9MUEFFIGZsYWcgdG8gRkxfRk9SX0FSQ0g3VkUsIGJ1dAotbmVnbGVjdGVkIHRvIGFsc28gYWRkIGl0IHRvIHRoZSBhcm12N3ZlIGNvbXBhdGlibGUgY29yZXMgZGVmaW5lZCBpbgotYXJtLWNvcmVzLmRlZi4KLQotICBodHRwczovL2dpdGh1Yi5jb20vZ2NjLW1pcnJvci9nY2MvY29tbWl0L2FmMmQ5YjllNThlOGJlNTc2YzUzZDk0ZjMwYzQ4YzY4MTQ2YjBjOTgKLQotVGhlIHJlc3VsdCBpcyB0aGF0IGdjYyA2LjQgbm93IHJlZnVzZXMgdG8gYWxsb3cgLW1hcmNoPWFybXY3dmUgYW5kCi0tbWNwdT1YWFggdG8gYmUgdXNlZCB0b2dldGhlciwgZXZlbiB3aGVuIC1tY3B1IGlzIHNldCB0byBhbiBhcm12N3ZlCi1jb21wYXRpYmxlIGNvcmU6Ci0KLSAgYXJtLWxpbnV4LWdudWVhYmktZ2NjIC1tYXJjaD1hcm12N3ZlIC1tY3B1PWNvcnRleC1hNyAtV2Vycm9yIC4uLgotICBlcnJvcjogc3dpdGNoIC1tY3B1PWNvcnRleC1hNyBjb25mbGljdHMgd2l0aCAtbWFyY2g9YXJtdjd2ZSBzd2l0Y2ggWy1XZXJyb3JdCi0KLUZpeCBieSBkZWZpbmluZyBmbGFncyBmb3IgYXJtdjd2ZSBjb21wYXRpYmxlIGNvcmVzIGRpcmVjdGx5IGZyb20KLUZMX0ZPUl9BUkNIN1ZFLCByYXRoZXIgdGhhbiByZS1jcmVhdGluZyB0aGUgYXJtdjd2ZSBmbGFncwotaW5kZXBlbmRlbnRseSBieSBjb21iaW5pbmcgRkxfRk9SX0FSQ0g3QSB3aXRoIHRoZSBhcm12N3ZlIHNwZWNpZmljCi1GTF9USFVNQl9ESVYgYW5kIEZMX0FSTV9ESVYgZmxhZ3MuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvYnJhbmNoZXMvZ2NjLTYtYnJhbmNoQDI1NDU4NCAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLQotU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLS0tLQotIGdjYy9jb25maWcvYXJtL2FybS1jb3Jlcy5kZWYgfCAxMiArKysrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vYXJtLWNvcmVzLmRlZiBiL2djYy9jb25maWcvYXJtL2FybS1jb3Jlcy5kZWYKLWluZGV4IDgyOWI4MzkuLmNhMzdlNmYgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FybS9hcm0tY29yZXMuZGVmCi0rKysgYi9nY2MvY29uZmlnL2FybS9hcm0tY29yZXMuZGVmCi1AQCAtMTQ1LDEyICsxNDUsMTIgQEAgQVJNX0NPUkUoImNvcnRleC1tMHBsdXMuc21hbGwtbXVsdGlwbHkiLGNvcnRleG0wcGx1c3NtYWxsbXVsdGlwbHksIGNvcnRleG0wcGx1cywKLSAvKiBWNyBBcmNoaXRlY3R1cmUgUHJvY2Vzc29ycyAqLwotIEFSTV9DT1JFKCJnZW5lcmljLWFybXY3LWEiLAlnZW5lcmljdjdhLCBnZW5lcmljdjdhLAkJN0EsCUFSTV9GU0VUX01BS0VfQ1BVMSAoRkxfTERTQ0hFRCB8IEZMX0ZPUl9BUkNIN0EpLCBjb3J0ZXgpCi0gQVJNX0NPUkUoImNvcnRleC1hNSIsCQljb3J0ZXhhNSwgY29ydGV4YTUsCQk3QSwJQVJNX0ZTRVRfTUFLRV9DUFUxIChGTF9MRFNDSEVEIHwgRkxfRk9SX0FSQ0g3QSksIGNvcnRleF9hNSkKLS1BUk1fQ09SRSgiY29ydGV4LWE3IiwJCWNvcnRleGE3LCBjb3J0ZXhhNywJCTdBLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfCBGTF9USFVNQl9ESVYgfCBGTF9BUk1fRElWIHwgRkxfRk9SX0FSQ0g3QSksIGNvcnRleF9hNykKLStBUk1fQ09SRSgiY29ydGV4LWE3IiwJCWNvcnRleGE3LCBjb3J0ZXhhNywJCTdBLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfCBGTF9GT1JfQVJDSDdWRSksIGNvcnRleF9hNykKLSBBUk1fQ09SRSgiY29ydGV4LWE4IiwJCWNvcnRleGE4LCBjb3J0ZXhhOCwJCTdBLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfCBGTF9GT1JfQVJDSDdBKSwgY29ydGV4X2E4KQotIEFSTV9DT1JFKCJjb3J0ZXgtYTkiLAkJY29ydGV4YTksIGNvcnRleGE5LAkJN0EsCUFSTV9GU0VUX01BS0VfQ1BVMSAoRkxfTERTQ0hFRCB8IEZMX0ZPUl9BUkNIN0EpLCBjb3J0ZXhfYTkpCi0tQVJNX0NPUkUoImNvcnRleC1hMTIiLAkJY29ydGV4YTEyLCBjb3J0ZXhhMTcsCQk3QSwJQVJNX0ZTRVRfTUFLRV9DUFUxIChGTF9MRFNDSEVEIHwgRkxfVEhVTUJfRElWIHwgRkxfQVJNX0RJViB8IEZMX0ZPUl9BUkNIN0EpLCBjb3J0ZXhfYTEyKQotLUFSTV9DT1JFKCJjb3J0ZXgtYTE1IiwJCWNvcnRleGExNSwgY29ydGV4YTE1LAkJN0EsCUFSTV9GU0VUX01BS0VfQ1BVMSAoRkxfTERTQ0hFRCB8IEZMX1RIVU1CX0RJViB8IEZMX0FSTV9ESVYgfCBGTF9GT1JfQVJDSDdBKSwgY29ydGV4X2ExNSkKLS1BUk1fQ09SRSgiY29ydGV4LWExNyIsCQljb3J0ZXhhMTcsIGNvcnRleGExNywJCTdBLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfCBGTF9USFVNQl9ESVYgfCBGTF9BUk1fRElWIHwgRkxfRk9SX0FSQ0g3QSksIGNvcnRleF9hMTIpCi0rQVJNX0NPUkUoImNvcnRleC1hMTIiLAkJY29ydGV4YTEyLCBjb3J0ZXhhMTcsCQk3QSwJQVJNX0ZTRVRfTUFLRV9DUFUxIChGTF9MRFNDSEVEIHwgRkxfRk9SX0FSQ0g3VkUpLCBjb3J0ZXhfYTEyKQotK0FSTV9DT1JFKCJjb3J0ZXgtYTE1IiwJCWNvcnRleGExNSwgY29ydGV4YTE1LAkJN0EsCUFSTV9GU0VUX01BS0VfQ1BVMSAoRkxfTERTQ0hFRCB8IEZMX0ZPUl9BUkNIN1ZFKSwgY29ydGV4X2ExNSkKLStBUk1fQ09SRSgiY29ydGV4LWExNyIsCQljb3J0ZXhhMTcsIGNvcnRleGExNywJCTdBLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfCBGTF9GT1JfQVJDSDdWRSksIGNvcnRleF9hMTIpCi0gQVJNX0NPUkUoImNvcnRleC1yNCIsCQljb3J0ZXhyNCwgY29ydGV4cjQsCQk3UiwJQVJNX0ZTRVRfTUFLRV9DUFUxIChGTF9MRFNDSEVEIHwgRkxfRk9SX0FSQ0g3UiksIGNvcnRleCkKLSBBUk1fQ09SRSgiY29ydGV4LXI0ZiIsCQljb3J0ZXhyNGYsIGNvcnRleHI0ZiwJCTdSLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfCBGTF9GT1JfQVJDSDdSKSwgY29ydGV4KQotIEFSTV9DT1JFKCJjb3J0ZXgtcjUiLAkJY29ydGV4cjUsIGNvcnRleHI1LAkJN1IsCUFSTV9GU0VUX01BS0VfQ1BVMSAoRkxfTERTQ0hFRCB8IEZMX0FSTV9ESVYgfCBGTF9GT1JfQVJDSDdSKSwgY29ydGV4KQotQEAgLTE2Miw4ICsxNjIsOCBAQCBBUk1fQ09SRSgiY29ydGV4LW0zIiwJCWNvcnRleG0zLCBjb3J0ZXhtMywJCTdNLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfAotIEFSTV9DT1JFKCJtYXJ2ZWxsLXBqNCIsCQltYXJ2ZWxsX3BqNCwgbWFydmVsbF9wajQsCTdBLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfCBGTF9GT1JfQVJDSDdBKSwgbWFydmVsbF9wajQpCi0gCi0gLyogVjcgYmlnLkxJVFRMRSBpbXBsZW1lbnRhdGlvbnMgKi8KLS1BUk1fQ09SRSgiY29ydGV4LWExNS5jb3J0ZXgtYTciLCBjb3J0ZXhhMTVjb3J0ZXhhNywgY29ydGV4YTcsCTdBLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfCBGTF9USFVNQl9ESVYgfCBGTF9BUk1fRElWIHwgRkxfRk9SX0FSQ0g3QSksIGNvcnRleF9hMTUpCi0tQVJNX0NPUkUoImNvcnRleC1hMTcuY29ydGV4LWE3IiwgY29ydGV4YTE3Y29ydGV4YTcsIGNvcnRleGE3LAk3QSwJQVJNX0ZTRVRfTUFLRV9DUFUxIChGTF9MRFNDSEVEIHwgRkxfVEhVTUJfRElWIHwgRkxfQVJNX0RJViB8IEZMX0ZPUl9BUkNIN0EpLCBjb3J0ZXhfYTEyKQotK0FSTV9DT1JFKCJjb3J0ZXgtYTE1LmNvcnRleC1hNyIsIGNvcnRleGExNWNvcnRleGE3LCBjb3J0ZXhhNywJN0EsCUFSTV9GU0VUX01BS0VfQ1BVMSAoRkxfTERTQ0hFRCB8IEZMX0ZPUl9BUkNIN1ZFKSwgY29ydGV4X2ExNSkKLStBUk1fQ09SRSgiY29ydGV4LWExNy5jb3J0ZXgtYTciLCBjb3J0ZXhhMTdjb3J0ZXhhNywgY29ydGV4YTcsCTdBLAlBUk1fRlNFVF9NQUtFX0NQVTEgKEZMX0xEU0NIRUQgfCBGTF9GT1JfQVJDSDdWRSksIGNvcnRleF9hMTIpCi0gCi0gLyogVjggQXJjaGl0ZWN0dXJlIFByb2Nlc3NvcnMgKi8KLSBBUk1fQ09SRSgiY29ydGV4LWEzMiIsCWNvcnRleGEzMiwgY29ydGV4YTUzLAk4QSwJQVJNX0ZTRVRfTUFLRV9DUFUxIChGTF9MRFNDSEVEIHwgRkxfQ1JDMzIgfCBGTF9GT1JfQVJDSDhBKSwgY29ydGV4X2EzNSkKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDAxLWkzODYtTW92ZS1zdHJ1Y3QtaXg4Nl9mcmFtZS10by1tYWNoaW5lX2Z1bmN0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDAxLWkzODYtTW92ZS1zdHJ1Y3QtaXg4Nl9mcmFtZS10by1tYWNoaW5lX2Z1bmN0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGIwZmZkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwMS1pMzg2LU1vdmUtc3RydWN0LWl4ODZfZnJhbWUtdG8tbWFjaGluZV9mdW5jdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0NyArMCwwIEBACi1Gcm9tIGMyYzc3NzVjNTU4N2RjNTliNjc1NjE2MmQzOTBkODlkNjA5NzFhMTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBoamwgPGhqbEAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBNb24sIDE1IEphbiAyMDE4IDExOjI3OjI0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDEvMTJdIGkzODY6IE1vdmUgc3RydWN0IGl4ODZfZnJhbWUgdG8gbWFjaGluZV9mdW5jdGlvbgotCi1NYWtlIGl4ODZfZnJhbWUgYXZhaWxhYmxlIHRvIGkzODYgY29kZSBnZW5lcmF0aW9uLiAgVGhpcyBpcyBuZWVkZWQgdG8KLWJhY2twb3J0IHRoZSBwYXRjaCBzZXQgb2YgLW1pbmRpcmVjdC1icmFuY2g9IHRvIG1pdGlnYXRlIHZhcmlhbnQgIzIgb2YKLXRoZSBzcGVjdWxhdGl2ZSBleGVjdXRpb24gdnVsbmVyYWJpbGl0aWVzIG9uIHg4NiBwcm9jZXNzb3JzIGlkZW50aWZpZWQKLWJ5IENWRS0yMDE3LTU3MTUsIGFrYSBTcGVjdHJlLgotCi0JQmFja3BvcnQgZnJvbSBtYWlubGluZQotCTIwMTctMDYtMDEgIEJlcm5kIEVkbGluZ2VyICA8YmVybmQuZWRsaW5nZXJAaG90bWFpbC5kZT4KLQotCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2ZyYW1lKTogTW92ZWQgdG8gLi4uCi0JKiBjb25maWcvaTM4Ni9pMzg2LmggKGl4ODZfZnJhbWUpOiBIZXJlLgotCShtYWNoaW5lX2Z1bmN0aW9uKTogQWRkIGZyYW1lLgotCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0KTogUmVwYWNlIHRoZQotCWZyYW1lIGFyZ3VtZW50IHdpdGggJmNmdW4tPm1hY2hpbmUtPmZyYW1lLgotCShpeDg2X2Nhbl91c2VfcmV0dXJuX2luc25fcCk6IERvbid0IHBhc3MgJmZyYW1lIHRvCi0JaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dC4gIENvcHkgZnJhbWUgZnJvbSBjZnVuLT5tYWNoaW5lLT5mcmFtZS4KLQkoaXg4Nl9jYW5fZWxpbWluYXRlKTogTGlrZXdpc2UuCi0JKGl4ODZfZXhwYW5kX3Byb2xvZ3VlKTogTGlrZXdpc2UuCi0JKGl4ODZfZXhwYW5kX2VwaWxvZ3VlKTogTGlrZXdpc2UuCi0JKGl4ODZfZXhwYW5kX3NwbGl0X3N0YWNrX3Byb2xvZ3VlKTogTGlrZXdpc2UuCi0KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+Ci0KLS0tLQotIGdjYy9jb25maWcvaTM4Ni9pMzg2LmMgfCA2OCArKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGdjYy9jb25maWcvaTM4Ni9pMzg2LmggfCA1MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKyksIDU2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLWluZGV4IDhiNWZhYWMuLmExZmYzMmIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1AQCAtMjQzNCw1MyArMjQzNCw2IEBAIHN0cnVjdCBHVFkoKCkpIHN0YWNrX2xvY2FsX2VudHJ5IHsKLSAgIHN0cnVjdCBzdGFja19sb2NhbF9lbnRyeSAqbmV4dDsKLSB9OwotIAotLS8qIFN0cnVjdHVyZSBkZXNjcmliaW5nIHN0YWNrIGZyYW1lIGxheW91dC4KLS0gICBTdGFjayBncm93cyBkb3dud2FyZDoKLS0KLS0gICBbYXJndW1lbnRzXQotLQkJCQkJPC0gQVJHX1BPSU5URVIKLS0gICBzYXZlZCBwYwotLQotLSAgIHNhdmVkIHN0YXRpYyBjaGFpbgkJCWlmIGl4ODZfc3RhdGljX2NoYWluX29uX3N0YWNrCi0tCi0tICAgc2F2ZWQgZnJhbWUgcG9pbnRlcgkJCWlmIGZyYW1lX3BvaW50ZXJfbmVlZGVkCi0tCQkJCQk8LSBIQVJEX0ZSQU1FX1BPSU5URVIKLS0gICBbc2F2ZWQgcmVnc10KLS0JCQkJCTwtIHJlZ3Nfc2F2ZV9vZmZzZXQKLS0gICBbcGFkZGluZzBdCi0tCi0tICAgW3NhdmVkIFNTRSByZWdzXQotLQkJCQkJPC0gc3NlX3JlZ3Nfc2F2ZV9vZmZzZXQKLS0gICBbcGFkZGluZzFdICAgICAgICAgIHwKLS0JCSAgICAgICB8CQk8LSBGUkFNRV9QT0lOVEVSCi0tICAgW3ZhX2FyZyByZWdpc3RlcnNdICB8Ci0tCQkgICAgICAgfAotLSAgIFtmcmFtZV0JICAgICAgIHwKLS0JCSAgICAgICB8Ci0tICAgW3BhZGRpbmcyXQkgICAgICAgfCA9IHRvX2FsbG9jYXRlCi0tCQkJCQk8LSBTVEFDS19QT0lOVEVSCi0tICAqLwotLXN0cnVjdCBpeDg2X2ZyYW1lCi0tewotLSAgaW50IG5zc2VyZWdzOwotLSAgaW50IG5yZWdzOwotLSAgaW50IHZhX2FyZ19zaXplOwotLSAgaW50IHJlZF96b25lX3NpemU7Ci0tICBpbnQgb3V0Z29pbmdfYXJndW1lbnRzX3NpemU7Ci0tCi0tICAvKiBUaGUgb2Zmc2V0cyByZWxhdGl2ZSB0byBBUkdfUE9JTlRFUi4gICovCi0tICBIT1NUX1dJREVfSU5UIGZyYW1lX3BvaW50ZXJfb2Zmc2V0OwotLSAgSE9TVF9XSURFX0lOVCBoYXJkX2ZyYW1lX3BvaW50ZXJfb2Zmc2V0OwotLSAgSE9TVF9XSURFX0lOVCBzdGFja19wb2ludGVyX29mZnNldDsKLS0gIEhPU1RfV0lERV9JTlQgaGZwX3NhdmVfb2Zmc2V0OwotLSAgSE9TVF9XSURFX0lOVCByZWdfc2F2ZV9vZmZzZXQ7Ci0tICBIT1NUX1dJREVfSU5UIHNzZV9yZWdfc2F2ZV9vZmZzZXQ7Ci0tCi0tICAvKiBXaGVuIHNhdmVfcmVnc191c2luZ19tb3YgaXMgc2V0LCBlbWl0IHByb2xvZ3VlIHVzaW5nCi0tICAgICBtb3ZlIGluc3RlYWQgb2YgcHVzaCBpbnN0cnVjdGlvbnMuICAqLwotLSAgYm9vbCBzYXZlX3JlZ3NfdXNpbmdfbW92OwotLX07Ci0tCi0gLyogV2hpY2ggY3B1IGFyZSB3ZSBzY2hlZHVsaW5nIGZvci4gICovCi0gZW51bSBhdHRyX2NwdSBpeDg2X3NjaGVkdWxlOwotIAotQEAgLTI1NzIsNyArMjUyNSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaXg4Nl9mdW5jdGlvbl9hcmdfYm91bmRhcnkgKG1hY2hpbmVfbW9kZSwKLSAJCQkJCQljb25zdF90cmVlKTsKLSBzdGF0aWMgcnR4IGl4ODZfc3RhdGljX2NoYWluIChjb25zdF90cmVlLCBib29sKTsKLSBzdGF0aWMgaW50IGl4ODZfZnVuY3Rpb25fcmVncGFybSAoY29uc3RfdHJlZSwgY29uc3RfdHJlZSk7Ci0tc3RhdGljIHZvaWQgaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAoc3RydWN0IGl4ODZfZnJhbWUgKik7Ci0rc3RhdGljIHZvaWQgaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAodm9pZCk7Ci0gc3RhdGljIGJvb2wgaXg4Nl9leHBhbmRfdmVjdG9yX2luaXRfb25lX25vbnplcm8gKGJvb2wsIG1hY2hpbmVfbW9kZSwKLSAJCQkJCQkgcnR4LCBydHgsIGludCk7Ci0gc3RhdGljIHZvaWQgaXg4Nl9hZGRfbmV3X2J1aWx0aW5zIChIT1NUX1dJREVfSU5UKTsKLUBAIC0xMDk0NCw3ICsxMDg5Nyw4IEBAIGl4ODZfY2FuX3VzZV9yZXR1cm5faW5zbl9wICh2b2lkKQotICAgaWYgKGNydGwtPmFyZ3MucG9wc19hcmdzICYmIGNydGwtPmFyZ3Muc2l6ZSA+PSAzMjc2OCkKLSAgICAgcmV0dXJuIDA7Ci0gCi0tICBpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0ICgmZnJhbWUpOwotKyAgaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAoKTsKLSsgIGZyYW1lID0gY2Z1bi0+bWFjaGluZS0+ZnJhbWU7Ci0gICByZXR1cm4gKGZyYW1lLnN0YWNrX3BvaW50ZXJfb2Zmc2V0ID09IFVOSVRTX1BFUl9XT1JECi0gCSAgJiYgKGZyYW1lLm5yZWdzICsgZnJhbWUubnNzZXJlZ3MpID09IDApOwotIH0KLUBAIC0xMTM1NSw4ICsxMTMwOSw4IEBAIGl4ODZfY2FuX2VsaW1pbmF0ZSAoY29uc3QgaW50IGZyb20sIGNvbnN0IGludCB0bykKLSBIT1NUX1dJREVfSU5UCi0gaXg4Nl9pbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCAoaW50IGZyb20sIGludCB0bykKLSB7Ci0tICBzdHJ1Y3QgaXg4Nl9mcmFtZSBmcmFtZTsKLS0gIGl4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQgKCZmcmFtZSk7Ci0rICBpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0ICgpOwotKyAgc3RydWN0IGl4ODZfZnJhbWUgZnJhbWUgPSBjZnVuLT5tYWNoaW5lLT5mcmFtZTsKLSAKLSAgIGlmIChmcm9tID09IEFSR19QT0lOVEVSX1JFR05VTSAmJiB0byA9PSBIQVJEX0ZSQU1FX1BPSU5URVJfUkVHTlVNKQotICAgICByZXR1cm4gZnJhbWUuaGFyZF9mcmFtZV9wb2ludGVyX29mZnNldDsKLUBAIC0xMTM5NSw4ICsxMTM0OSw5IEBAIGl4ODZfYnVpbHRpbl9zZXRqbXBfZnJhbWVfdmFsdWUgKHZvaWQpCi0gLyogRmlsbCBzdHJ1Y3R1cmUgaXg4Nl9mcmFtZSBhYm91dCBmcmFtZSBvZiBjdXJyZW50bHkgY29tcHV0ZWQgZnVuY3Rpb24uICAqLwotIAotIHN0YXRpYyB2b2lkCi0taXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAoc3RydWN0IGl4ODZfZnJhbWUgKmZyYW1lKQotK2l4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQgKHZvaWQpCi0gewotKyAgc3RydWN0IGl4ODZfZnJhbWUgKmZyYW1lID0gJmNmdW4tPm1hY2hpbmUtPmZyYW1lOwotICAgdW5zaWduZWQgSE9TVF9XSURFX0lOVCBzdGFja19hbGlnbm1lbnRfbmVlZGVkOwotICAgSE9TVF9XSURFX0lOVCBvZmZzZXQ7Ci0gICB1bnNpZ25lZCBIT1NUX1dJREVfSU5UIHByZWZlcnJlZF9hbGlnbm1lbnQ7Ci1AQCAtMTI3MDIsNyArMTI2NTcsOCBAQCBpeDg2X2V4cGFuZF9wcm9sb2d1ZSAodm9pZCkKLSAgIG0tPmZzLnNwX29mZnNldCA9IElOQ09NSU5HX0ZSQU1FX1NQX09GRlNFVDsKLSAgIG0tPmZzLnNwX3ZhbGlkID0gdHJ1ZTsKLSAKLS0gIGl4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQgKCZmcmFtZSk7Ci0rICBpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0ICgpOwotKyAgZnJhbWUgPSBtLT5mcmFtZTsKLSAKLSAgIGlmICghVEFSR0VUXzY0QklUICYmIGl4ODZfZnVuY3Rpb25fbXNfaG9va19wcm9sb2d1ZSAoY3VycmVudF9mdW5jdGlvbl9kZWNsKSkKLSAgICAgewotQEAgLTEzMzc5LDcgKzEzMzM1LDggQEAgaXg4Nl9leHBhbmRfZXBpbG9ndWUgKGludCBzdHlsZSkKLSAgIGJvb2wgdXNpbmdfZHJhcDsKLSAKLSAgIGl4ODZfZmluYWxpemVfc3RhY2tfcmVhbGlnbl9mbGFncyAoKTsKLS0gIGl4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQgKCZmcmFtZSk7Ci0rICBpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0ICgpOwotKyAgZnJhbWUgPSBtLT5mcmFtZTsKLSAKLSAgIG0tPmZzLnNwX3ZhbGlkID0gKCFmcmFtZV9wb2ludGVyX25lZWRlZAotIAkJICAgIHx8IChjcnRsLT5zcF9pc191bmNoYW5naW5nCi1AQCAtMTM4NzYsNyArMTM4MzMsOCBAQCBpeDg2X2V4cGFuZF9zcGxpdF9zdGFja19wcm9sb2d1ZSAodm9pZCkKLSAgIGdjY19hc3NlcnQgKGZsYWdfc3BsaXRfc3RhY2sgJiYgcmVsb2FkX2NvbXBsZXRlZCk7Ci0gCi0gICBpeDg2X2ZpbmFsaXplX3N0YWNrX3JlYWxpZ25fZmxhZ3MgKCk7Ci0tICBpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0ICgmZnJhbWUpOwotKyAgaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAoKTsKLSsgIGZyYW1lID0gY2Z1bi0+bWFjaGluZS0+ZnJhbWU7Ci0gICBhbGxvY2F0ZSA9IGZyYW1lLnN0YWNrX3BvaW50ZXJfb2Zmc2V0IC0gSU5DT01JTkdfRlJBTUVfU1BfT0ZGU0VUOwotIAotICAgLyogVGhpcyBpcyB0aGUgbGFiZWwgd2Ugd2lsbCBicmFuY2ggdG8gaWYgd2UgaGF2ZSBlbm91Z2ggc3RhY2sKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5oIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaAotaW5kZXggODExM2Y4My4uNTQxNDQxNiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmgKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmgKLUBAIC0yNDI3LDkgKzI0MjcsNTYgQEAgZW51bSBhdnhfdTEyOF9zdGF0ZQotIAwKLSAjZGVmaW5lIEZBU1RDQUxMX1BSRUZJWCAnQCcKLSAMCi0rI2lmbmRlZiBVU0VEX0ZPUl9UQVJHRVQKLSsvKiBTdHJ1Y3R1cmUgZGVzY3JpYmluZyBzdGFjayBmcmFtZSBsYXlvdXQuCi0rICAgU3RhY2sgZ3Jvd3MgZG93bndhcmQ6Ci0rCi0rICAgW2FyZ3VtZW50c10KLSsJCQkJCTwtIEFSR19QT0lOVEVSCi0rICAgc2F2ZWQgcGMKLSsKLSsgICBzYXZlZCBzdGF0aWMgY2hhaW4JCQlpZiBpeDg2X3N0YXRpY19jaGFpbl9vbl9zdGFjawotKwotKyAgIHNhdmVkIGZyYW1lIHBvaW50ZXIJCQlpZiBmcmFtZV9wb2ludGVyX25lZWRlZAotKwkJCQkJPC0gSEFSRF9GUkFNRV9QT0lOVEVSCi0rICAgW3NhdmVkIHJlZ3NdCi0rCQkJCQk8LSByZWdzX3NhdmVfb2Zmc2V0Ci0rICAgW3BhZGRpbmcwXQotKwotKyAgIFtzYXZlZCBTU0UgcmVnc10KLSsJCQkJCTwtIHNzZV9yZWdzX3NhdmVfb2Zmc2V0Ci0rICAgW3BhZGRpbmcxXSAgICAgICAgICB8Ci0rCQkgICAgICAgfAkJPC0gRlJBTUVfUE9JTlRFUgotKyAgIFt2YV9hcmcgcmVnaXN0ZXJzXSAgfAotKwkJICAgICAgIHwKLSsgICBbZnJhbWVdCSAgICAgICB8Ci0rCQkgICAgICAgfAotKyAgIFtwYWRkaW5nMl0JICAgICAgIHwgPSB0b19hbGxvY2F0ZQotKwkJCQkJPC0gU1RBQ0tfUE9JTlRFUgotKyAgKi8KLStzdHJ1Y3QgR1RZKCgpKSBpeDg2X2ZyYW1lCi0rewotKyAgaW50IG5zc2VyZWdzOwotKyAgaW50IG5yZWdzOwotKyAgaW50IHZhX2FyZ19zaXplOwotKyAgaW50IHJlZF96b25lX3NpemU7Ci0rICBpbnQgb3V0Z29pbmdfYXJndW1lbnRzX3NpemU7Ci0rCi0rICAvKiBUaGUgb2Zmc2V0cyByZWxhdGl2ZSB0byBBUkdfUE9JTlRFUi4gICovCi0rICBIT1NUX1dJREVfSU5UIGZyYW1lX3BvaW50ZXJfb2Zmc2V0OwotKyAgSE9TVF9XSURFX0lOVCBoYXJkX2ZyYW1lX3BvaW50ZXJfb2Zmc2V0OwotKyAgSE9TVF9XSURFX0lOVCBzdGFja19wb2ludGVyX29mZnNldDsKLSsgIEhPU1RfV0lERV9JTlQgaGZwX3NhdmVfb2Zmc2V0OwotKyAgSE9TVF9XSURFX0lOVCByZWdfc2F2ZV9vZmZzZXQ7Ci0rICBIT1NUX1dJREVfSU5UIHNzZV9yZWdfc2F2ZV9vZmZzZXQ7Ci0rCi0rICAvKiBXaGVuIHNhdmVfcmVnc191c2luZ19tb3YgaXMgc2V0LCBlbWl0IHByb2xvZ3VlIHVzaW5nCi0rICAgICBtb3ZlIGluc3RlYWQgb2YgcHVzaCBpbnN0cnVjdGlvbnMuICAqLwotKyAgYm9vbCBzYXZlX3JlZ3NfdXNpbmdfbW92OwotK307Ci0rCi0gLyogTWFjaGluZSBzcGVjaWZpYyBmcmFtZSB0cmFja2luZyBkdXJpbmcgcHJvbG9ndWUvZXBpbG9ndWUgZ2VuZXJhdGlvbi4gICovCi0gCi0tI2lmbmRlZiBVU0VEX0ZPUl9UQVJHRVQKLSBzdHJ1Y3QgR1RZKCgpKSBtYWNoaW5lX2ZyYW1lX3N0YXRlCi0gewotICAgLyogVGhpcyBwYWlyIHRyYWNrcyB0aGUgY3VycmVudGx5IGFjdGl2ZSBDRkEgYXMgcmVnK29mZnNldC4gIFdoZW4gcmVnCi1AQCAtMjQ3NSw2ICsyNTIyLDkgQEAgc3RydWN0IEdUWSgoKSkgbWFjaGluZV9mdW5jdGlvbiB7Ci0gICBpbnQgdmFyYXJnc19mcHJfc2l6ZTsKLSAgIGludCBvcHRpbWl6ZV9tb2RlX3N3aXRjaGluZ1tNQVhfMzg2X0VOVElUSUVTXTsKLSAKLSsgIC8qIENhY2hlZCBpbml0aWFsIGZyYW1lIGxheW91dCBmb3IgdGhlIGN1cnJlbnQgZnVuY3Rpb24uICAqLwotKyAgc3RydWN0IGl4ODZfZnJhbWUgZnJhbWU7Ci0rCi0gICAvKiBOdW1iZXIgb2Ygc2F2ZWQgcmVnaXN0ZXJzIFVTRV9GQVNUX1BST0xPR1VFX0VQSUxPR1VFCi0gICAgICBoYXMgYmVlbiBjb21wdXRlZCBmb3IuICAqLwotICAgaW50IHVzZV9mYXN0X3Byb2xvZ3VlX2VwaWxvZ3VlX25yZWdzOwotQEAgLTI1NTQsNiArMjYwNCw3IEBAIHN0cnVjdCBHVFkoKCkpIG1hY2hpbmVfZnVuY3Rpb24gewotICNkZWZpbmUgaXg4Nl9jdXJyZW50X2Z1bmN0aW9uX2NhbGxzX3Rsc19kZXNjcmlwdG9yIFwKLSAgIChpeDg2X3Rsc19kZXNjcmlwdG9yX2NhbGxzX2V4cGFuZGVkX2luX2NmdW4gJiYgZGZfcmVnc19ldmVyX2xpdmVfcCAoU1BfUkVHKSkKLSAjZGVmaW5lIGl4ODZfc3RhdGljX2NoYWluX29uX3N0YWNrIChjZnVuLT5tYWNoaW5lLT5zdGF0aWNfY2hhaW5fb25fc3RhY2spCi0rI2RlZmluZSBpeDg2X3JlZF96b25lX3NpemUgKGNmdW4tPm1hY2hpbmUtPmZyYW1lLnJlZF96b25lX3NpemUpCi0gCi0gLyogQ29udHJvbCBiZWhhdmlvciBvZiB4ODZfZmlsZV9zdGFydC4gICovCi0gI2RlZmluZSBYODZfRklMRV9TVEFSVF9WRVJTSU9OX0RJUkVDVElWRSBmYWxzZQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDItaTM4Ni1Vc2UtcmVmZXJlbmNlLW9mLXN0cnVjdC1peDg2X2ZyYW1lLXRvLWF2b2lkLWNvcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwMi1pMzg2LVVzZS1yZWZlcmVuY2Utb2Ytc3RydWN0LWl4ODZfZnJhbWUtdG8tYXZvaWQtY29wLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjY1YjA4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwMi1pMzg2LVVzZS1yZWZlcmVuY2Utb2Ytc3RydWN0LWl4ODZfZnJhbWUtdG8tYXZvaWQtY29wLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotRnJvbSBmZTJiM2JlM2Y0YjZlYzZiM2E2Zjg5YzI2MDE2YTM5ODNiN2NiMzUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogaGpsIDxoamxAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgotRGF0ZTogTW9uLCAxNSBKYW4gMjAxOCAxMToyODo0NCArMDAwMAotU3ViamVjdDogW1BBVENIIDAyLzEyXSBpMzg2OiBVc2UgcmVmZXJlbmNlIG9mIHN0cnVjdCBpeDg2X2ZyYW1lIHRvIGF2b2lkIGNvcHkKLQotV2hlbiB0aGVyZSBpcyBubyBuZWVkIHRvIG1ha2UgYSBjb3B5IG9mIGl4ODZfZnJhbWUsIHdlIGNhbiB1c2UgcmVmZXJlbmNlCi1vZiBzdHJ1Y3QgaXg4Nl9mcmFtZSB0byBhdm9pZCBjb3B5LgotCi0JQmFja3BvcnQgZnJvbSBtYWlubGluZQotCTIwMTctMTEtMDYgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLQotCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2Nhbl91c2VfcmV0dXJuX2luc25fcCk6IFVzZSByZWZlcmVuY2UKLQlvZiBzdHJ1Y3QgaXg4Nl9mcmFtZS4KLQkoaXg4Nl9pbml0aWFsX2VsaW1pbmF0aW9uX29mZnNldCk6IExpa2V3aXNlLgotCShpeDg2X2V4cGFuZF9zcGxpdF9zdGFja19wcm9sb2d1ZSk6IExpa2V3aXNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotLS0tCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyB8IDggKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLWluZGV4IGExZmYzMmIuLjEzZWJmMTAgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1AQCAtMTA4ODcsNyArMTA4ODcsNiBAQCBzeW1ib2xpY19yZWZlcmVuY2VfbWVudGlvbmVkX3AgKHJ0eCBvcCkKLSBib29sCi0gaXg4Nl9jYW5fdXNlX3JldHVybl9pbnNuX3AgKHZvaWQpCi0gewotLSAgc3RydWN0IGl4ODZfZnJhbWUgZnJhbWU7Ci0gCi0gICBpZiAoISByZWxvYWRfY29tcGxldGVkIHx8IGZyYW1lX3BvaW50ZXJfbmVlZGVkKQotICAgICByZXR1cm4gMDsKLUBAIC0xMDg5OCw3ICsxMDg5Nyw3IEBAIGl4ODZfY2FuX3VzZV9yZXR1cm5faW5zbl9wICh2b2lkKQotICAgICByZXR1cm4gMDsKLSAKLSAgIGl4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQgKCk7Ci0tICBmcmFtZSA9IGNmdW4tPm1hY2hpbmUtPmZyYW1lOwotKyAgc3RydWN0IGl4ODZfZnJhbWUgJmZyYW1lID0gY2Z1bi0+bWFjaGluZS0+ZnJhbWU7Ci0gICByZXR1cm4gKGZyYW1lLnN0YWNrX3BvaW50ZXJfb2Zmc2V0ID09IFVOSVRTX1BFUl9XT1JECi0gCSAgJiYgKGZyYW1lLm5yZWdzICsgZnJhbWUubnNzZXJlZ3MpID09IDApOwotIH0KLUBAIC0xMTMxMCw3ICsxMTMwOSw3IEBAIEhPU1RfV0lERV9JTlQKLSBpeDg2X2luaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0IChpbnQgZnJvbSwgaW50IHRvKQotIHsKLSAgIGl4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQgKCk7Ci0tICBzdHJ1Y3QgaXg4Nl9mcmFtZSBmcmFtZSA9IGNmdW4tPm1hY2hpbmUtPmZyYW1lOwotKyAgc3RydWN0IGl4ODZfZnJhbWUgJmZyYW1lID0gY2Z1bi0+bWFjaGluZS0+ZnJhbWU7Ci0gCi0gICBpZiAoZnJvbSA9PSBBUkdfUE9JTlRFUl9SRUdOVU0gJiYgdG8gPT0gSEFSRF9GUkFNRV9QT0lOVEVSX1JFR05VTSkKLSAgICAgcmV0dXJuIGZyYW1lLmhhcmRfZnJhbWVfcG9pbnRlcl9vZmZzZXQ7Ci1AQCAtMTM4MjEsNyArMTM4MjAsNiBAQCBzdGF0aWMgR1RZKCgpKSBydHggc3BsaXRfc3RhY2tfZm5fbGFyZ2U7Ci0gdm9pZAotIGl4ODZfZXhwYW5kX3NwbGl0X3N0YWNrX3Byb2xvZ3VlICh2b2lkKQotIHsKLS0gIHN0cnVjdCBpeDg2X2ZyYW1lIGZyYW1lOwotICAgSE9TVF9XSURFX0lOVCBhbGxvY2F0ZTsKLSAgIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQgYXJnc19zaXplOwotICAgcnR4X2NvZGVfbGFiZWwgKmxhYmVsOwotQEAgLTEzODM0LDcgKzEzODMyLDcgQEAgaXg4Nl9leHBhbmRfc3BsaXRfc3RhY2tfcHJvbG9ndWUgKHZvaWQpCi0gCi0gICBpeDg2X2ZpbmFsaXplX3N0YWNrX3JlYWxpZ25fZmxhZ3MgKCk7Ci0gICBpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0ICgpOwotLSAgZnJhbWUgPSBjZnVuLT5tYWNoaW5lLT5mcmFtZTsKLSsgIHN0cnVjdCBpeDg2X2ZyYW1lICZmcmFtZSA9IGNmdW4tPm1hY2hpbmUtPmZyYW1lOwotICAgYWxsb2NhdGUgPSBmcmFtZS5zdGFja19wb2ludGVyX29mZnNldCAtIElOQ09NSU5HX0ZSQU1FX1NQX09GRlNFVDsKLSAKLSAgIC8qIFRoaXMgaXMgdGhlIGxhYmVsIHdlIHdpbGwgYnJhbmNoIHRvIGlmIHdlIGhhdmUgZW5vdWdoIHN0YWNrCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwMy1pMzg2LVVzZS1jb25zdC1yZWZlcmVuY2Utb2Ytc3RydWN0LWl4ODZfZnJhbWUtdG8tYXZvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDAzLWkzODYtVXNlLWNvbnN0LXJlZmVyZW5jZS1vZi1zdHJ1Y3QtaXg4Nl9mcmFtZS10by1hdm8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1ZmZkODUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDAzLWkzODYtVXNlLWNvbnN0LXJlZmVyZW5jZS1vZi1zdHJ1Y3QtaXg4Nl9mcmFtZS10by1hdm8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAsMCBAQAotRnJvbSA4MjI0MzczMmRjNjNlOWI5MDM5NmE1YWU0YWQ5OWNhMzZhZjgxMzU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogaGpsIDxoamxAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgotRGF0ZTogU2F0LCAyNyBKYW4gMjAxOCAxMzoxMDoyNCArMDAwMAotU3ViamVjdDogW1BBVENIIDAzLzEyXSBpMzg2OiBVc2UgY29uc3QgcmVmZXJlbmNlIG9mIHN0cnVjdCBpeDg2X2ZyYW1lIHRvIGF2b2lkCi0gY29weQotCi1XZSBjYW4gdXNlIGNvbnN0IHJlZmVyZW5jZSBvZiBzdHJ1Y3QgaXg4Nl9mcmFtZSB0byBhdm9pZCBtYWtpbmcgYSBsb2NhbAotY29weSBvZiBpeDg2X2ZyYW1lLiAgaXg4Nl9leHBhbmRfZXBpbG9ndWUgbWFrZXMgYSBsb2NhbCBjb3B5IG9mIHN0cnVjdAotaXg4Nl9mcmFtZSBhbmQgdXNlcyB0aGUgcmVnX3NhdmVfb2Zmc2V0IGZpZWxkIGFzIGEgbG9jYWwgdmFyaWFibGUuICBUaGlzCi1wYXRjaCB1c2VzIGEgc2VwYXJhdGUgbG9jYWwgdmFyaWFibGUgZm9yIHJlZ19zYXZlX29mZnNldC4KLQotVGVzdGVkIG9uIHg4Ni02NCB3aXRoIGFkYS4KLQotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQlQUiB0YXJnZXQvODM5MDUKLQkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfcHJvbG9ndWUpOiBVc2UgY29zdCByZWZlcmVuY2UKLQlvZiBzdHJ1Y3QgaXg4Nl9mcmFtZS4KLQkoaXg4Nl9leHBhbmRfZXBpbG9ndWUpOiBMaWtld2lzZS4gIEFkZCBhIGxvY2FsIHZhcmlhYmxlIGZvcgotCXRoZSByZWdfc2F2ZV9vZmZzZXQgZmllbGQgaW4gc3RydWN0IGl4ODZfZnJhbWUuCi0KLWdpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL2JyYW5jaGVzL2djYy03LWJyYW5jaEAyNTcxMjMgMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotCi0tLS0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5jIHwgMjQgKysrKysrKysrKysrLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLWluZGV4IDEzZWJmMTAuLjZjOThmNzUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1AQCAtMTI2MzMsNyArMTI2MzMsNiBAQCBpeDg2X2V4cGFuZF9wcm9sb2d1ZSAodm9pZCkKLSB7Ci0gICBzdHJ1Y3QgbWFjaGluZV9mdW5jdGlvbiAqbSA9IGNmdW4tPm1hY2hpbmU7Ci0gICBydHggaW5zbiwgdDsKLS0gIHN0cnVjdCBpeDg2X2ZyYW1lIGZyYW1lOwotICAgSE9TVF9XSURFX0lOVCBhbGxvY2F0ZTsKLSAgIGJvb2wgaW50X3JlZ2lzdGVyc19zYXZlZDsKLSAgIGJvb2wgc3NlX3JlZ2lzdGVyc19zYXZlZDsKLUBAIC0xMjY1Nyw3ICsxMjY1Niw3IEBAIGl4ODZfZXhwYW5kX3Byb2xvZ3VlICh2b2lkKQotICAgbS0+ZnMuc3BfdmFsaWQgPSB0cnVlOwotIAotICAgaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAoKTsKLS0gIGZyYW1lID0gbS0+ZnJhbWU7Ci0rICBjb25zdCBzdHJ1Y3QgaXg4Nl9mcmFtZSAmZnJhbWUgPSBjZnVuLT5tYWNoaW5lLT5mcmFtZTsKLSAKLSAgIGlmICghVEFSR0VUXzY0QklUICYmIGl4ODZfZnVuY3Rpb25fbXNfaG9va19wcm9sb2d1ZSAoY3VycmVudF9mdW5jdGlvbl9kZWNsKSkKLSAgICAgewotQEAgLTEzMzI5LDEzICsxMzMyOCwxMiBAQCBpeDg2X2V4cGFuZF9lcGlsb2d1ZSAoaW50IHN0eWxlKQotIHsKLSAgIHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uICptID0gY2Z1bi0+bWFjaGluZTsKLSAgIHN0cnVjdCBtYWNoaW5lX2ZyYW1lX3N0YXRlIGZyYW1lX3N0YXRlX3NhdmUgPSBtLT5mczsKLS0gIHN0cnVjdCBpeDg2X2ZyYW1lIGZyYW1lOwotICAgYm9vbCByZXN0b3JlX3JlZ3NfdmlhX21vdjsKLSAgIGJvb2wgdXNpbmdfZHJhcDsKLSAKLSAgIGl4ODZfZmluYWxpemVfc3RhY2tfcmVhbGlnbl9mbGFncyAoKTsKLSAgIGl4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQgKCk7Ci0tICBmcmFtZSA9IG0tPmZyYW1lOwotKyAgY29uc3Qgc3RydWN0IGl4ODZfZnJhbWUgJmZyYW1lID0gY2Z1bi0+bWFjaGluZS0+ZnJhbWU7Ci0gCi0gICBtLT5mcy5zcF92YWxpZCA9ICghZnJhbWVfcG9pbnRlcl9uZWVkZWQKLSAJCSAgICB8fCAoY3J0bC0+c3BfaXNfdW5jaGFuZ2luZwotQEAgLTEzMzc3LDExICsxMzM3NSwxMyBAQCBpeDg2X2V4cGFuZF9lcGlsb2d1ZSAoaW50IHN0eWxlKQotIAkJCQkgICsgVU5JVFNfUEVSX1dPUkQpOwotICAgICB9Ci0gCi0rICBIT1NUX1dJREVfSU5UIHJlZ19zYXZlX29mZnNldCA9IGZyYW1lLnJlZ19zYXZlX29mZnNldDsKLSsKLSAgIC8qIFNwZWNpYWwgY2FyZSBtdXN0IGJlIHRha2VuIGZvciB0aGUgbm9ybWFsIHJldHVybiBjYXNlIG9mIGEgZnVuY3Rpb24KLSAgICAgIHVzaW5nIGVoX3JldHVybjogdGhlIGVheCBhbmQgZWR4IHJlZ2lzdGVycyBhcmUgbWFya2VkIGFzIHNhdmVkLCBidXQKLSAgICAgIG5vdCByZXN0b3JlZCBhbG9uZyB0aGlzIHBhdGguICBBZGp1c3QgdGhlIHNhdmUgbG9jYXRpb24gdG8gbWF0Y2guICAqLwotICAgaWYgKGNydGwtPmNhbGxzX2VoX3JldHVybiAmJiBzdHlsZSAhPSAyKQotLSAgICBmcmFtZS5yZWdfc2F2ZV9vZmZzZXQgLT0gMiAqIFVOSVRTX1BFUl9XT1JEOwotKyAgICByZWdfc2F2ZV9vZmZzZXQgLT0gMiAqIFVOSVRTX1BFUl9XT1JEOwotIAotICAgLyogRUhfUkVUVVJOIHJlcXVpcmVzIHRoZSB1c2Ugb2YgbW92ZXMgdG8gZnVuY3Rpb24gcHJvcGVybHkuICAqLwotICAgaWYgKGNydGwtPmNhbGxzX2VoX3JldHVybikKLUBAIC0xMzM5NywxMSArMTMzOTcsMTEgQEAgaXg4Nl9leHBhbmRfZXBpbG9ndWUgKGludCBzdHlsZSkKLSAgIGVsc2UgaWYgKFRBUkdFVF9FUElMT0dVRV9VU0lOR19NT1ZFCi0gCSAgICYmIGNmdW4tPm1hY2hpbmUtPnVzZV9mYXN0X3Byb2xvZ3VlX2VwaWxvZ3VlCi0gCSAgICYmIChmcmFtZS5ucmVncyA+IDEKLS0JICAgICAgIHx8IG0tPmZzLnNwX29mZnNldCAhPSBmcmFtZS5yZWdfc2F2ZV9vZmZzZXQpKQotKwkgICAgICAgfHwgbS0+ZnMuc3Bfb2Zmc2V0ICE9IHJlZ19zYXZlX29mZnNldCkpCi0gICAgIHJlc3RvcmVfcmVnc192aWFfbW92ID0gdHJ1ZTsKLSAgIGVsc2UgaWYgKGZyYW1lX3BvaW50ZXJfbmVlZGVkCi0gCSAgICYmICFmcmFtZS5ucmVncwotLQkgICAmJiBtLT5mcy5zcF9vZmZzZXQgIT0gZnJhbWUucmVnX3NhdmVfb2Zmc2V0KQotKwkgICAmJiBtLT5mcy5zcF9vZmZzZXQgIT0gcmVnX3NhdmVfb2Zmc2V0KQotICAgICByZXN0b3JlX3JlZ3NfdmlhX21vdiA9IHRydWU7Ci0gICBlbHNlIGlmIChmcmFtZV9wb2ludGVyX25lZWRlZAotIAkgICAmJiBUQVJHRVRfVVNFX0xFQVZFCi1AQCAtMTM0MzksNyArMTM0MzksNyBAQCBpeDg2X2V4cGFuZF9lcGlsb2d1ZSAoaW50IHN0eWxlKQotICAgICAgIHJ0eCB0OwotIAotICAgICAgIGlmIChmcmFtZS5ucmVncykKLS0JaXg4Nl9lbWl0X3Jlc3RvcmVfcmVnc191c2luZ19tb3YgKGZyYW1lLnJlZ19zYXZlX29mZnNldCwgc3R5bGUgPT0gMik7Ci0rCWl4ODZfZW1pdF9yZXN0b3JlX3JlZ3NfdXNpbmdfbW92IChyZWdfc2F2ZV9vZmZzZXQsIHN0eWxlID09IDIpOwotIAotICAgICAgIC8qIGVoX3JldHVybiBlcGlsb2d1ZXMgbmVlZCAlZWN4IGFkZGVkIHRvIHRoZSBzdGFjayBwb2ludGVyLiAgKi8KLSAgICAgICBpZiAoc3R5bGUgPT0gMikKLUBAIC0xMzUyOSwxOSArMTM1MjksMTkgQEAgaXg4Nl9leHBhbmRfZXBpbG9ndWUgKGludCBzdHlsZSkKLSAJIGVwaWxvZ3Vlcy4gICovCi0gICAgICAgaWYgKCFtLT5mcy5zcF92YWxpZAotICAJICB8fCAoVEFSR0VUX1NFSAotLQkgICAgICAmJiAobS0+ZnMuc3Bfb2Zmc2V0IC0gZnJhbWUucmVnX3NhdmVfb2Zmc2V0Ci0rCSAgICAgICYmIChtLT5mcy5zcF9vZmZzZXQgLSByZWdfc2F2ZV9vZmZzZXQKLSAJCSAgPj0gU0VIX01BWF9GUkFNRV9TSVpFKSkpCi0gCXsKLSAJICBwcm9fZXBpbG9ndWVfYWRqdXN0X3N0YWNrIChzdGFja19wb2ludGVyX3J0eCwgaGFyZF9mcmFtZV9wb2ludGVyX3J0eCwKLSAJCQkJICAgICBHRU5fSU5UIChtLT5mcy5mcF9vZmZzZXQKLS0JCQkJCSAgICAgIC0gZnJhbWUucmVnX3NhdmVfb2Zmc2V0KSwKLSsJCQkJCSAgICAgIC0gcmVnX3NhdmVfb2Zmc2V0KSwKLSAJCQkJICAgICBzdHlsZSwgZmFsc2UpOwotIAl9Ci0tICAgICAgZWxzZSBpZiAobS0+ZnMuc3Bfb2Zmc2V0ICE9IGZyYW1lLnJlZ19zYXZlX29mZnNldCkKLSsgICAgICBlbHNlIGlmIChtLT5mcy5zcF9vZmZzZXQgIT0gcmVnX3NhdmVfb2Zmc2V0KQotIAl7Ci0gCSAgcHJvX2VwaWxvZ3VlX2FkanVzdF9zdGFjayAoc3RhY2tfcG9pbnRlcl9ydHgsIHN0YWNrX3BvaW50ZXJfcnR4LAotIAkJCQkgICAgIEdFTl9JTlQgKG0tPmZzLnNwX29mZnNldAotLQkJCQkJICAgICAgLSBmcmFtZS5yZWdfc2F2ZV9vZmZzZXQpLAotKwkJCQkJICAgICAgLSByZWdfc2F2ZV9vZmZzZXQpLAotIAkJCQkgICAgIHN0eWxlLAotIAkJCQkgICAgIG0tPmZzLmNmYV9yZWcgPT0gc3RhY2tfcG9pbnRlcl9ydHgpOwotIAl9Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwNC14ODYtQWRkLW1pbmRpcmVjdC1icmFuY2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDQteDg2LUFkZC1taW5kaXJlY3QtYnJhbmNoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWQ2ZTVmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwNC14ODYtQWRkLW1pbmRpcmVjdC1icmFuY2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMTU0ICswLDAgQEAKLUZyb20gNjE0MGMyYzBiYjJiNjFlNjlkMGRhODQzMTVlMDQzM2ZmMzUyMGFhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJILkouIEx1IiA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgNiBKYW4gMjAxOCAyMjoyOTo1NSAtMDgwMAotU3ViamVjdDogW1BBVENIIDA0LzEyXSB4ODY6IEFkZCAtbWluZGlyZWN0LWJyYW5jaD0KLQotQWRkIC1taW5kaXJlY3QtYnJhbmNoPSBvcHRpb24gdG8gY29udmVydCBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHRvIGNhbGwKLWFuZCByZXR1cm4gdGh1bmtzLiAgVGhlIGRlZmF1bHQgaXMgJ2tlZXAnLCB3aGljaCBrZWVwcyBpbmRpcmVjdCBjYWxsIGFuZAotanVtcCB1bm1vZGlmaWVkLiAgJ3RodW5rJyBjb252ZXJ0cyBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHRvIGNhbGwgYW5kCi1yZXR1cm4gdGh1bmsuICAndGh1bmstaW5saW5lJyBjb252ZXJ0cyBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHRvIGlubGluZWQKLWNhbGwgYW5kIHJldHVybiB0aHVuay4gICd0aHVuay1leHRlcm4nIGNvbnZlcnRzIGluZGlyZWN0IGNhbGwgYW5kIGp1bXAgdG8KLWV4dGVybmFsIGNhbGwgYW5kIHJldHVybiB0aHVuayBwcm92aWRlZCBpbiBhIHNlcGFyYXRlIG9iamVjdCBmaWxlLiAgWW91Ci1jYW4gY29udHJvbCB0aGlzIGJlaGF2aW9yIGZvciBhIHNwZWNpZmljIGZ1bmN0aW9uIGJ5IHVzaW5nIHRoZSBmdW5jdGlvbgotYXR0cmlidXRlIGluZGlyZWN0X2JyYW5jaC4KLQotMiBraW5kcyBvZiB0aHVua3MgYXJlIGdlbmVhdGVkLiAgTWVtb3J5IHRodW5rIHdoZXJlIHRoZSBmdW5jdGlvbiBhZGRyZXNzCi1pcyBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjazoKLQotX194ODZfaW5kaXJlY3RfdGh1bms6Ci0JY2FsbCBMMgotTDE6Ci0JcGF1c2UKLQlsZmVuY2UKLQlqbXAgTDEKLUwyOgotCWxlYSA4KCVyc3ApLCAlcnNwfGxlYSA0KCVlc3ApLCAlZXNwCi0JcmV0Ci0KLUluZGlyZWN0IGptcCB2aWEgbWVtb3J5LCAiam1wIG1lbSIsIGlzIGNvbnZlcnRlZCB0bwotCi0JcHVzaCBtZW1vcnkKLQlqbXAgX194ODZfaW5kaXJlY3RfdGh1bmsKLQotSW5kaXJlY3QgY2FsbCB2aWEgbWVtb3J5LCAiY2FsbCBtZW0iLCBpcyBjb252ZXJ0ZWQgdG8KLQotCWptcCBMMgotTDE6Ci0JcHVzaCBbbWVtXQotCWptcCBfX3g4Nl9pbmRpcmVjdF90aHVuawotTDI6Ci0JY2FsbCBMMQotCi1SZWdpc3RlciB0aHVuayB3aGVyZSB0aGUgZnVuY3Rpb24gYWRkcmVzcyBpcyBpbiBhIHJlZ2lzdGVyLCByZWc6Ci0KLV9feDg2X2luZGlyZWN0X3RodW5rX3JlZzoKLQljYWxsCUwyCi1MMToKLQlwYXVzZQotCWxmZW5jZQotCWptcAlMMQotTDI6Ci0JbW92cQklcmVnLCAoJXJzcCl8bW92bCAgICAlcmVnLCAoJWVzcCkKLQlyZXQKLQotd2hlcmUgcmVnIGlzIG9uZSBvZiAocnxlKWF4LCAocnxlKWR4LCAocnxlKWN4LCAocnxlKWJ4LCAocnxlKXNpLCAocnxlKWRpLAotKHJ8ZSlicCwgcjgsIHI5LCByMTAsIHIxMSwgcjEyLCByMTMsIHIxNCBhbmQgcjE1LgotCi1JbmRpcmVjdCBqbXAgdmlhIHJlZ2lzdGVyLCAiam1wIHJlZyIsIGlzIGNvbnZlcnRlZCB0bwotCi0Jam1wIF9feDg2X2luZGlyZWN0X3RodW5rX3JlZwotCi1JbmRpcmVjdCBjYWxsIHZpYSByZWdpc3RlciwgImNhbGwgcmVnIiwgaXMgY29udmVydGVkIHRvCi0KLQljYWxsIF9feDg2X2luZGlyZWN0X3RodW5rX3JlZwotCi1nY2MvCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JMjAxOC0wMS0xNCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotCi0JKiBjb25maWcvaTM4Ni9pMzg2LW9wdHMuaCAoaW5kaXJlY3RfYnJhbmNoKTogTmV3LgotCSogY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCAoaXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wKTogTGlrZXdpc2UuCi0JKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfdXNpbmdfcmVkX3pvbmUpOiBEaXNhbGxvdyByZWQtem9uZQotCXdpdGggbG9jYWwgaW5kaXJlY3QganVtcCB3aGVuIGNvbnZlcnRpbmcgaW5kaXJlY3QgY2FsbCBhbmQganVtcC4KLQkoaXg4Nl9zZXRfaW5kaXJlY3RfYnJhbmNoX3R5cGUpOiBOZXcuCi0JKGl4ODZfc2V0X2N1cnJlbnRfZnVuY3Rpb24pOiBDYWxsIGl4ODZfc2V0X2luZGlyZWN0X2JyYW5jaF90eXBlLgotCShpbmRpcmVjdGxhYmVsbm8pOiBOZXcuCi0JKGluZGlyZWN0X3RodW5rX25lZWRlZCk6IExpa2V3aXNlLgotCShpbmRpcmVjdF90aHVua19ibmRfbmVlZGVkKTogTGlrZXdpc2UuCi0JKGluZGlyZWN0X3RodW5rc191c2VkKTogTGlrZXdpc2UuCi0JKGluZGlyZWN0X3RodW5rc19ibmRfdXNlZCk6IExpa2V3aXNlLgotCShJTkRJUkVDVF9MQUJFTCk6IExpa2V3aXNlLgotCShpbmRpcmVjdF90aHVua19uYW1lKTogTGlrZXdpc2UuCi0JKG91dHB1dF9pbmRpcmVjdF90aHVuayk6IExpa2V3aXNlLgotCShvdXRwdXRfaW5kaXJlY3RfdGh1bmtfZnVuY3Rpb24pOiBMaWtld2lzZS4KLQkoaXg4Nl9vdXRwdXRfaW5kaXJlY3RfYnJhbmNoX3ZpYV9yZWcpOiBMaWtld2lzZS4KLQkoaXg4Nl9vdXRwdXRfaW5kaXJlY3RfYnJhbmNoX3ZpYV9wdXNoKTogTGlrZXdpc2UuCi0JKGl4ODZfb3V0cHV0X2luZGlyZWN0X2JyYW5jaCk6IExpa2V3aXNlLgotCShpeDg2X291dHB1dF9pbmRpcmVjdF9qbXApOiBMaWtld2lzZS4KLQkoaXg4Nl9jb2RlX2VuZCk6IENhbGwgb3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uIGlmIG5lZWRlZC4KLQkoaXg4Nl9vdXRwdXRfY2FsbF9pbnNuKTogQ2FsbCBpeDg2X291dHB1dF9pbmRpcmVjdF9icmFuY2ggaWYKLQluZWVkZWQuCi0JKGl4ODZfaGFuZGxlX2ZuZGVjbF9hdHRyaWJ1dGUpOiBIYW5kbGUgaW5kaXJlY3RfYnJhbmNoLgotCShpeDg2X2F0dHJpYnV0ZV90YWJsZSk6IEFkZCBpbmRpcmVjdF9icmFuY2guCi0JKiBjb25maWcvaTM4Ni9pMzg2LmggKG1hY2hpbmVfZnVuY3Rpb24pOiBBZGQgaW5kaXJlY3RfYnJhbmNoX3R5cGUKLQlhbmQgaGFzX2xvY2FsX2luZGlyZWN0X2p1bXAuCi0JKiBjb25maWcvaTM4Ni9pMzg2Lm1kIChpbmRpcmVjdF9qdW1wKTogU2V0IGhhc19sb2NhbF9pbmRpcmVjdF9qdW1wCi0JdG8gdHJ1ZS4KLQkodGFibGVqdW1wKTogTGlrZXdpc2UuCi0JKCppbmRpcmVjdF9qdW1wKTogVXNlIGl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcC4KLQkoKnRhYmxlanVtcF8xKTogTGlrZXdpc2UuCi0JKHNpbXBsZV9yZXR1cm5faW5kaXJlY3RfaW50ZXJuYWwpOiBMaWtld2lzZS4KLQkqIGNvbmZpZy9pMzg2L2kzODYub3B0IChtaW5kaXJlY3QtYnJhbmNoPSk6IE5ldyBvcHRpb24uCi0JKGluZGlyZWN0X2JyYW5jaCk6IE5ldy4KLQkoa2VlcCk6IExpa2V3aXNlLgotCSh0aHVuayk6IExpa2V3aXNlLgotCSh0aHVuay1pbmxpbmUpOiBMaWtld2lzZS4KLQkodGh1bmstZXh0ZXJuKTogTGlrZXdpc2UuCi0JKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IGluZGlyZWN0X2JyYW5jaCBmdW5jdGlvbiBhdHRyaWJ1dGUuCi0JKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IC1taW5kaXJlY3QtYnJhbmNoPSBvcHRpb24uCi0KLWdjYy90ZXN0c3VpdGUvCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JMjAxOC0wMS0xNCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jOiBOZXcgdGVzdC4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTYuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTcuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci04LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmM6IExpa2V3aXNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotLS0tCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYtb3B0cy5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTMgKwotIGdjYy9jb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDYzOSArKysrKysrKysrKysrKysrKysrKy0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNyArCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjYgKy0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5vcHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyMCArCi0gZ2NjL2RvYy9leHRlbmQudGV4aSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTAgKwotIGdjYy9kb2MvaW52b2tlLnRleGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEzICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jICAgfCAgMjAgKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYyAgIHwgIDIwICsKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0zLmMgICB8ICAyMSArCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jICAgfCAgMjEgKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTUuYyAgIHwgIDE3ICsKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay02LmMgICB8ICAxOCArCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jICAgfCAgNDQgKysKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jICAgICAgICB8ICAyMyArCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTIuYyAgICAgICAgfCAgMjEgKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmMgICAgICAgIHwgIDIzICsKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNC5jICAgICAgICB8ICAyMiArCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYyAgICAgICAgfCAgMjIgKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmMgICAgICAgIHwgIDIxICsKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jICAgICAgICB8ICA0NCArKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci04LmMgICAgICAgIHwgIDQyICsrCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMS5jICAgICAgICAgfCAgMjAgKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYyAgICAgICAgIHwgIDIxICsKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmMgICAgICAgICB8ICAxOSArCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtNC5jICAgICAgICAgfCAgMjAgKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTEuYyAgICAgIHwgIDE5ICsKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmMgICAgICB8ICAxOSArCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMy5jICAgICAgfCAgMjAgKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYyAgICAgIHwgIDIwICsKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmMgICAgICB8ICAxNiArCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNi5jICAgICAgfCAgMTcgKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTcuYyAgICAgIHwgIDQzICsrCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMS5jICAgICAgfCAgMjAgKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTIuYyAgICAgIHwgIDIwICsKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmMgICAgICB8ICAyMSArCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNC5jICAgICAgfCAgMjEgKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTUuYyAgICAgIHwgIDE3ICsKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmMgICAgICB8ICAxOCArCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNy5jICAgICAgfCAgNDQgKysKLSA0MSBmaWxlcyBjaGFuZ2VkLCAxNDg2IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay00LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTYuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay03LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci00LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci01LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci03LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci04LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTEuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTMuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTYuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNy5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTIuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMy5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTUuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmMKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LW9wdHMuaCBiL2djYy9jb25maWcvaTM4Ni9pMzg2LW9wdHMuaAotaW5kZXggYjdmOTJlMy4uY2MyMTE1MiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LW9wdHMuaAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYtb3B0cy5oCi1AQCAtOTksNCArOTksMTcgQEAgZW51bSBzdGFja19wcm90ZWN0b3JfZ3VhcmQgewotICAgU1NQX0dMT0JBTCAgICAvKiBnbG9iYWwgY2FuYXJ5ICovCi0gfTsKLSAKLSsvKiBUaGlzIGlzIHVzZWQgdG8gbWl0aWdhdGUgdmFyaWFudCAjMiBvZiB0aGUgc3BlY3VsYXRpdmUgZXhlY3V0aW9uCi0rICAgdnVsbmVyYWJpbGl0aWVzIG9uIHg4NiBwcm9jZXNzb3JzIGlkZW50aWZpZWQgYnkgQ1ZFLTIwMTctNTcxNSwgYWthCi0rICAgU3BlY3RyZS4gIFRoZXkgY29udmVydCBpbmRpcmVjdCBicmFuY2hlcyBhbmQgZnVuY3Rpb24gcmV0dXJucyB0bwotKyAgIGNhbGwgYW5kIHJldHVybiB0aHVua3MgdG8gYXZvaWQgc3BlY3VsYXRpdmUgZXhlY3V0aW9uIHZpYSBpbmRpcmVjdAotKyAgIGNhbGwsIGptcCBhbmQgcmV0LiAgKi8KLStlbnVtIGluZGlyZWN0X2JyYW5jaCB7Ci0rICBpbmRpcmVjdF9icmFuY2hfdW5zZXQgPSAwLAotKyAgaW5kaXJlY3RfYnJhbmNoX2tlZXAsCi0rICBpbmRpcmVjdF9icmFuY2hfdGh1bmssCi0rICBpbmRpcmVjdF9icmFuY2hfdGh1bmtfaW5saW5lLAotKyAgaW5kaXJlY3RfYnJhbmNoX3RodW5rX2V4dGVybgotK307Ci0rCi0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmggYi9nY2MvY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaAotaW5kZXggZmY0N2JjMS4uZWNhNGNiZiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaAotQEAgLTMxMSw2ICszMTEsNyBAQCBleHRlcm4gZW51bSBhdHRyX2NwdSBpeDg2X3NjaGVkdWxlOwotICNlbmRpZgotIAotIGV4dGVybiBjb25zdCBjaGFyICogaXg4Nl9vdXRwdXRfY2FsbF9pbnNuIChydHhfaW5zbiAqaW5zbiwgcnR4IGNhbGxfb3ApOwotK2V4dGVybiBjb25zdCBjaGFyICogaXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wIChydHggY2FsbF9vcCwgYm9vbCByZXRfcCk7Ci0gZXh0ZXJuIGJvb2wgaXg4Nl9vcGVyYW5kc19va19mb3JfbW92ZV9tdWx0aXBsZSAocnR4ICpvcGVyYW5kcywgYm9vbCBsb2FkLAotIAkJCQkJCWVudW0gbWFjaGluZV9tb2RlIG1vZGUpOwotIAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1pbmRleCA2Yzk4Zjc1Li4wYjlmYzRkIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotQEAgLTM2NjIsMTIgKzM2NjIsMjMgQEAgbWFrZV9wYXNzX3N0diAoZ2NjOjpjb250ZXh0ICpjdHh0KQotICAgcmV0dXJuIG5ldyBwYXNzX3N0diAoY3R4dCk7Ci0gfQotIAotLS8qIFJldHVybiB0cnVlIGlmIGEgcmVkLXpvbmUgaXMgaW4gdXNlLiAgKi8KLSsvKiBSZXR1cm4gdHJ1ZSBpZiBhIHJlZC16b25lIGlzIGluIHVzZS4gIFdlIGNhbid0IHVzZSByZWQtem9uZSB3aGVuCi0rICAgdGhlcmUgYXJlIGxvY2FsIGluZGlyZWN0IGp1bXBzLCBsaWtlICJpbmRpcmVjdF9qdW1wIiBvciAidGFibGVqdW1wIiwKLSsgICB3aGljaCBqdW1wcyB0byBhbm90aGVyIHBsYWNlIGluIHRoZSBmdW5jdGlvbiwgc2luY2UgImNhbGwiIGluIHRoZQotKyAgIGluZGlyZWN0IHRodW5rIHB1c2hlcyB0aGUgcmV0dXJuIGFkZHJlc3Mgb250byBzdGFjaywgZGVzdHJveWluZwotKyAgIHJlZC16b25lLgotKwotKyAgIFRPRE86IElmIHdlIGNhbiByZXNlcnZlIHRoZSBmaXJzdCAyIFdPUkRzLCBmb3IgUFVTSCBhbmQsIGFub3RoZXIKLSsgICBmb3IgQ0FMTCwgaW4gcmVkLXpvbmUsIHdlIGNhbiBhbGxvdyBsb2NhbCBpbmRpcmVjdCBqdW1wcyB3aXRoCi0rICAgaW5kaXJlY3QgdGh1bmsuICAqLwotIAotIGJvb2wKLSBpeDg2X3VzaW5nX3JlZF96b25lICh2b2lkKQotIHsKLS0gIHJldHVybiBUQVJHRVRfUkVEX1pPTkUgJiYgIVRBUkdFVF82NEJJVF9NU19BQkk7Ci0rICByZXR1cm4gKFRBUkdFVF9SRURfWk9ORQotKwkgICYmICFUQVJHRVRfNjRCSVRfTVNfQUJJCi0rCSAgJiYgKCFjZnVuLT5tYWNoaW5lLT5oYXNfbG9jYWxfaW5kaXJlY3RfanVtcAotKwkgICAgICB8fCBjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZSA9PSBpbmRpcmVjdF9icmFuY2hfa2VlcCkpOwotIH0KLSAMCi0gLyogUmV0dXJuIGEgc3RyaW5nIHRoYXQgZG9jdW1lbnRzIHRoZSBjdXJyZW50IC1tIG9wdGlvbnMuICBUaGUgY2FsbGVyIGlzCi1AQCAtNjM1MCw2ICs2MzYxLDM3IEBAIGl4ODZfcmVzZXRfcHJldmlvdXNfZm5kZWNsICh2b2lkKQotICAgaXg4Nl9wcmV2aW91c19mbmRlY2wgPSBOVUxMX1RSRUU7Ci0gfQotIAotKy8qIFNldCB0aGUgaW5kaXJlY3RfYnJhbmNoX3R5cGUgZmllbGQgZnJvbSB0aGUgZnVuY3Rpb24gRk5ERUNMLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2l4ODZfc2V0X2luZGlyZWN0X2JyYW5jaF90eXBlICh0cmVlIGZuZGVjbCkKLSt7Ci0rICBpZiAoY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUgPT0gaW5kaXJlY3RfYnJhbmNoX3Vuc2V0KQotKyAgICB7Ci0rICAgICAgdHJlZSBhdHRyID0gbG9va3VwX2F0dHJpYnV0ZSAoImluZGlyZWN0X2JyYW5jaCIsCi0rCQkJCSAgICBERUNMX0FUVFJJQlVURVMgKGZuZGVjbCkpOwotKyAgICAgIGlmIChhdHRyICE9IE5VTEwpCi0rCXsKLSsJICB0cmVlIGFyZ3MgPSBUUkVFX1ZBTFVFIChhdHRyKTsKLSsJICBpZiAoYXJncyA9PSBOVUxMKQotKwkgICAgZ2NjX3VucmVhY2hhYmxlICgpOwotKwkgIHRyZWUgY3N0ID0gVFJFRV9WQUxVRSAoYXJncyk7Ci0rCSAgaWYgKHN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAoY3N0KSwgImtlZXAiKSA9PSAwKQotKwkgICAgY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUgPSBpbmRpcmVjdF9icmFuY2hfa2VlcDsKLSsJICBlbHNlIGlmIChzdHJjbXAgKFRSRUVfU1RSSU5HX1BPSU5URVIgKGNzdCksICJ0aHVuayIpID09IDApCi0rCSAgICBjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZSA9IGluZGlyZWN0X2JyYW5jaF90aHVuazsKLSsJICBlbHNlIGlmIChzdHJjbXAgKFRSRUVfU1RSSU5HX1BPSU5URVIgKGNzdCksICJ0aHVuay1pbmxpbmUiKSA9PSAwKQotKwkgICAgY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUgPSBpbmRpcmVjdF9icmFuY2hfdGh1bmtfaW5saW5lOwotKwkgIGVsc2UgaWYgKHN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAoY3N0KSwgInRodW5rLWV4dGVybiIpID09IDApCi0rCSAgICBjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZSA9IGluZGlyZWN0X2JyYW5jaF90aHVua19leHRlcm47Ci0rCSAgZWxzZQotKwkgICAgZ2NjX3VucmVhY2hhYmxlICgpOwotKwl9Ci0rICAgICAgZWxzZQotKwljZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZSA9IGl4ODZfaW5kaXJlY3RfYnJhbmNoOwotKyAgICB9Ci0rfQotKwotIC8qIEVzdGFibGlzaCBhcHByb3ByaWF0ZSBiYWNrLWVuZCBjb250ZXh0IGZvciBwcm9jZXNzaW5nIHRoZSBmdW5jdGlvbgotICAgIEZOREVDTC4gIFRoZSBhcmd1bWVudCBtaWdodCBiZSBOVUxMIHRvIGluZGljYXRlIHByb2Nlc3NpbmcgYXQgdG9wCi0gICAgbGV2ZWwsIG91dHNpZGUgb2YgYW55IGZ1bmN0aW9uIHNjb3BlLiAgKi8KLUBAIC02MzYwLDcgKzY0MDIsMTMgQEAgaXg4Nl9zZXRfY3VycmVudF9mdW5jdGlvbiAodHJlZSBmbmRlY2wpCi0gICAgICBzZXZlcmFsIHRpbWVzIGluIHRoZSBjb3Vyc2Ugb2YgY29tcGlsaW5nIGEgZnVuY3Rpb24sIGFuZCB3ZSBkb24ndCB3YW50IHRvCi0gICAgICBzbG93IHRoaW5ncyBkb3duIHRvbyBtdWNoIG9yIGNhbGwgdGFyZ2V0X3JlaW5pdCB3aGVuIGl0IGlzbid0IHNhZmUuICAqLwotICAgaWYgKGZuZGVjbCA9PSBpeDg2X3ByZXZpb3VzX2ZuZGVjbCkKLS0gICAgcmV0dXJuOwotKyAgICB7Ci0rICAgICAgLyogVGhlcmUgbWF5IGJlIDIgZnVuY3Rpb24gYm9kaWVzIGZvciB0aGUgc2FtZSBmdW5jdGlvbiBGTkRFQ0wsCi0rCSBvbmUgaXMgZXh0ZXJuIGlubGluZSBhbmQgb25lIGlzbid0LiAgKi8KLSsgICAgICBpZiAoZm5kZWNsICE9IE5VTExfVFJFRSkKLSsJaXg4Nl9zZXRfaW5kaXJlY3RfYnJhbmNoX3R5cGUgKGZuZGVjbCk7Ci0rICAgICAgcmV0dXJuOwotKyAgICB9Ci0gCi0gICB0cmVlIG9sZF90cmVlOwotICAgaWYgKGl4ODZfcHJldmlvdXNfZm5kZWNsID09IE5VTExfVFJFRSkKLUBAIC02Mzc3LDYgKzY0MjUsOCBAQCBpeDg2X3NldF9jdXJyZW50X2Z1bmN0aW9uICh0cmVlIGZuZGVjbCkKLSAgICAgICByZXR1cm47Ci0gICAgIH0KLSAKLSsgIGl4ODZfc2V0X2luZGlyZWN0X2JyYW5jaF90eXBlIChmbmRlY2wpOwotKwotICAgdHJlZSBuZXdfdHJlZSA9IERFQ0xfRlVOQ1RJT05fU1BFQ0lGSUNfVEFSR0VUIChmbmRlY2wpOwotICAgaWYgKG5ld190cmVlID09IE5VTExfVFJFRSkKLSAgICAgbmV3X3RyZWUgPSB0YXJnZXRfb3B0aW9uX2RlZmF1bHRfbm9kZTsKLUBAIC0xMDk2Miw2ICsxMTAxMiwyMjAgQEAgaXg4Nl9zZXR1cF9mcmFtZV9hZGRyZXNzZXMgKHZvaWQpCi0gIyBlbmRpZgotICNlbmRpZgotIAotKy8qIExhYmVsIGNvdW50IGZvciBjYWxsIGFuZCByZXR1cm4gdGh1bmtzLiAgSXQgaXMgdXNlZCB0byBtYWtlIHVuaXF1ZQotKyAgIGxhYmVscyBpbiBjYWxsIGFuZCByZXR1cm4gdGh1bmtzLiAgKi8KLStzdGF0aWMgaW50IGluZGlyZWN0bGFiZWxubzsKLSsKLSsvKiBUcnVlIGlmIGNhbGwgYW5kIHJldHVybiB0aHVuayBmdW5jdGlvbnMgYXJlIG5lZWRlZC4gICovCi0rc3RhdGljIGJvb2wgaW5kaXJlY3RfdGh1bmtfbmVlZGVkID0gZmFsc2U7Ci0rLyogVHJ1ZSBpZiBjYWxsIGFuZCByZXR1cm4gdGh1bmsgZnVuY3Rpb25zIHdpdGggdGhlIEJORCBwcmVmaXggYXJlCi0rICAgbmVlZGVkLiAgKi8KLStzdGF0aWMgYm9vbCBpbmRpcmVjdF90aHVua19ibmRfbmVlZGVkID0gZmFsc2U7Ci0rCi0rLyogQml0IG1hc2tzIG9mIGludGVnZXIgcmVnaXN0ZXJzLCB3aGljaCBjb250YWluIGJyYW5jaCB0YXJnZXQsIHVzZWQKLSsgICBieSBjYWxsIGFuZCByZXR1cm4gdGh1bmtzIGZ1bmN0aW9ucy4gICovCi0rc3RhdGljIGludCBpbmRpcmVjdF90aHVua3NfdXNlZDsKLSsvKiBCaXQgbWFza3Mgb2YgaW50ZWdlciByZWdpc3RlcnMsIHdoaWNoIGNvbnRhaW4gYnJhbmNoIHRhcmdldCwgdXNlZAotKyAgIGJ5IGNhbGwgYW5kIHJldHVybiB0aHVua3MgZnVuY3Rpb25zIHdpdGggdGhlIEJORCBwcmVmaXguICAqLwotK3N0YXRpYyBpbnQgaW5kaXJlY3RfdGh1bmtzX2JuZF91c2VkOwotKwotKyNpZm5kZWYgSU5ESVJFQ1RfTEFCRUwKLSsjIGRlZmluZSBJTkRJUkVDVF9MQUJFTCAiTElORCIKLSsjZW5kaWYKLSsKLSsvKiBGaWxscyBpbiB0aGUgbGFiZWwgbmFtZSB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciB0aGUgaW5kaXJlY3QgdGh1bmsuICAqLwotKwotK3N0YXRpYyB2b2lkCi0raW5kaXJlY3RfdGh1bmtfbmFtZSAoY2hhciBuYW1lWzMyXSwgaW50IHJlZ25vLCBib29sIG5lZWRfYm5kX3ApCi0rewotKyAgaWYgKFVTRV9ISURERU5fTElOS09OQ0UpCi0rICAgIHsKLSsgICAgICBjb25zdCBjaGFyICpibmQgPSBuZWVkX2JuZF9wID8gIl9ibmQiIDogIiI7Ci0rICAgICAgaWYgKHJlZ25vID49IDApCi0rCXsKLSsJICBjb25zdCBjaGFyICpyZWdfcHJlZml4OwotKwkgIGlmIChMRUdBQ1lfSU5UX1JFR05PX1AgKHJlZ25vKSkKLSsJICAgIHJlZ19wcmVmaXggPSBUQVJHRVRfNjRCSVQgPyAiciIgOiAiZSI7Ci0rCSAgZWxzZQotKwkgICAgcmVnX3ByZWZpeCA9ICIiOwotKwkgIHNwcmludGYgKG5hbWUsICJfX3g4Nl9pbmRpcmVjdF90aHVuayVzXyVzJXMiLAotKwkJICAgYm5kLCByZWdfcHJlZml4LCByZWdfbmFtZXNbcmVnbm9dKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJc3ByaW50ZiAobmFtZSwgIl9feDg2X2luZGlyZWN0X3RodW5rJXMiLCBibmQpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBpZiAocmVnbm8gPj0gMCkKLSsJewotKwkgIGlmIChuZWVkX2JuZF9wKQotKwkgICAgQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMIChuYW1lLCAiTElUQlIiLCByZWdubyk7Ci0rCSAgZWxzZQotKwkgICAgQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMIChuYW1lLCAiTElUUiIsIHJlZ25vKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIGlmIChuZWVkX2JuZF9wKQotKwkgICAgQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMIChuYW1lLCAiTElUQiIsIDApOwotKwkgIGVsc2UKLSsJICAgIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAobmFtZSwgIkxJVCIsIDApOwotKwl9Ci0rICAgIH0KLSt9Ci0rCi0rLyogT3V0cHV0IGEgY2FsbCBhbmQgcmV0dXJuIHRodW5rIGZvciBpbmRpcmVjdCBicmFuY2guICBJZiBCTkRfUCBpcwotKyAgIHRydWUsIHRoZSBCTkQgcHJlZml4IGlzIG5lZWRlZC4gICBJZiBSRUdOTyAhPSAtMSwgIHRoZSBmdW5jdGlvbgotKyAgIGFkZHJlc3MgaXMgaW4gUkVHTk8gYW5kIHRoZSBjYWxsIGFuZCByZXR1cm4gdGh1bmsgbG9va3MgbGlrZToKLSsKLSsJY2FsbAlMMgotKyAgIEwxOgotKwlwYXVzZQotKwlqbXAJTDEKLSsgICBMMjoKLSsJbW92CSVSRUcsICglc3ApCi0rCXJldAotKwotKyAgIE90aGVyd2lzZSwgdGhlIGZ1bmN0aW9uIGFkZHJlc3MgaXMgb24gdGhlIHRvcCBvZiBzdGFjayBhbmQgdGhlCi0rICAgY2FsbCBhbmQgcmV0dXJuIHRodW5rIGxvb2tzIGxpa2U6Ci0rCi0rCWNhbGwgTDIKLSsgIEwxOgotKwlwYXVzZQotKwlqbXAgTDEKLSsgIEwyOgotKwlsZWEgV09SRF9TSVpFKCVzcCksICVzcAotKwlyZXQKLSsgKi8KLSsKLStzdGF0aWMgdm9pZAotK291dHB1dF9pbmRpcmVjdF90aHVuayAoYm9vbCBuZWVkX2JuZF9wLCBpbnQgcmVnbm8pCi0rewotKyAgY2hhciBpbmRpcmVjdGxhYmVsMVszMl07Ci0rICBjaGFyIGluZGlyZWN0bGFiZWwyWzMyXTsKLSsKLSsgIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAoaW5kaXJlY3RsYWJlbDEsIElORElSRUNUX0xBQkVMLAotKwkJCSAgICAgICBpbmRpcmVjdGxhYmVsbm8rKyk7Ci0rICBBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwgKGluZGlyZWN0bGFiZWwyLCBJTkRJUkVDVF9MQUJFTCwKLSsJCQkgICAgICAgaW5kaXJlY3RsYWJlbG5vKyspOwotKwotKyAgLyogQ2FsbCAqLwotKyAgaWYgKG5lZWRfYm5kX3ApCi0rICAgIGZwdXRzICgiXHRibmQgY2FsbFx0IiwgYXNtX291dF9maWxlKTsKLSsgIGVsc2UKLSsgICAgZnB1dHMgKCJcdGNhbGxcdCIsIGFzbV9vdXRfZmlsZSk7Ci0rICBhc3NlbWJsZV9uYW1lX3JhdyAoYXNtX291dF9maWxlLCBpbmRpcmVjdGxhYmVsMik7Ci0rICBmcHV0YyAoJ1xuJywgYXNtX291dF9maWxlKTsKLSsKLSsgIEFTTV9PVVRQVVRfSU5URVJOQUxfTEFCRUwgKGFzbV9vdXRfZmlsZSwgaW5kaXJlY3RsYWJlbDEpOwotKwotKyAgLyogUGF1c2UgKyBsZmVuY2UuICAqLwotKyAgZnByaW50ZiAoYXNtX291dF9maWxlLCAiXHRwYXVzZVxuXHRsZmVuY2VcbiIpOwotKwotKyAgLyogSnVtcC4gICovCi0rICBmcHV0cyAoIlx0am1wXHQiLCBhc21fb3V0X2ZpbGUpOwotKyAgYXNzZW1ibGVfbmFtZV9yYXcgKGFzbV9vdXRfZmlsZSwgaW5kaXJlY3RsYWJlbDEpOwotKyAgZnB1dGMgKCdcbicsIGFzbV9vdXRfZmlsZSk7Ci0rCi0rICBBU01fT1VUUFVUX0lOVEVSTkFMX0xBQkVMIChhc21fb3V0X2ZpbGUsIGluZGlyZWN0bGFiZWwyKTsKLSsKLSsgIGlmIChyZWdubyA+PSAwKQotKyAgICB7Ci0rICAgICAgLyogTU9WLiAgKi8KLSsgICAgICBydHggeG9wc1syXTsKLSsgICAgICB4b3BzWzBdID0gZ2VuX3J0eF9NRU0gKHdvcmRfbW9kZSwgc3RhY2tfcG9pbnRlcl9ydHgpOwotKyAgICAgIHhvcHNbMV0gPSBnZW5fcnR4X1JFRyAod29yZF9tb2RlLCByZWdubyk7Ci0rICAgICAgb3V0cHV0X2FzbV9pbnNuICgibW92XHR7JTEsICUwfCUwLCAlMX0iLCB4b3BzKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgLyogTEVBLiAgKi8KLSsgICAgICBydHggeG9wc1syXTsKLSsgICAgICB4b3BzWzBdID0gc3RhY2tfcG9pbnRlcl9ydHg7Ci0rICAgICAgeG9wc1sxXSA9IHBsdXNfY29uc3RhbnQgKFBtb2RlLCBzdGFja19wb2ludGVyX3J0eCwgVU5JVFNfUEVSX1dPUkQpOwotKyAgICAgIG91dHB1dF9hc21faW5zbiAoImxlYVx0eyVFMSwgJTB8JTAsICVFMX0iLCB4b3BzKTsKLSsgICAgfQotKwotKyAgaWYgKG5lZWRfYm5kX3ApCi0rICAgIGZwdXRzICgiXHRibmQgcmV0XG4iLCBhc21fb3V0X2ZpbGUpOwotKyAgZWxzZQotKyAgICBmcHV0cyAoIlx0cmV0XG4iLCBhc21fb3V0X2ZpbGUpOwotK30KLSsKLSsvKiBPdXRwdXQgYSBmdW50aW9uIHdpdGggYSBjYWxsIGFuZCByZXR1cm4gdGh1bmsgZm9yIGluZGlyZWN0IGJyYW5jaC4KLSsgICBJZiBCTkRfUCBpcyB0cnVlLCB0aGUgQk5EIHByZWZpeCBpcyBuZWVkZWQuICAgSWYgUkVHTk8gIT0gLTEsICB0aGUKLSsgICBmdW5jdGlvbiBhZGRyZXNzIGlzIGluIFJFR05PLiAgT3RoZXJ3aXNlLCB0aGUgZnVuY3Rpb24gYWRkcmVzcyBpcwotKyAgIG9uIHRoZSB0b3Agb2Ygc3RhY2suICAqLwotKwotK3N0YXRpYyB2b2lkCi0rb3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uIChib29sIG5lZWRfYm5kX3AsIGludCByZWdubykKLSt7Ci0rICBjaGFyIG5hbWVbMzJdOwotKyAgdHJlZSBkZWNsOwotKwotKyAgLyogQ3JlYXRlIF9feDg2X2luZGlyZWN0X3RodW5rL19feDg2X2luZGlyZWN0X3RodW5rX2JuZC4gICovCi0rICBpbmRpcmVjdF90aHVua19uYW1lIChuYW1lLCByZWdubywgbmVlZF9ibmRfcCk7Ci0rICBkZWNsID0gYnVpbGRfZGVjbCAoQlVJTFRJTlNfTE9DQVRJT04sIEZVTkNUSU9OX0RFQ0wsCi0rCQkgICAgIGdldF9pZGVudGlmaWVyIChuYW1lKSwKLSsJCSAgICAgYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0ICh2b2lkX3R5cGVfbm9kZSwgTlVMTF9UUkVFKSk7Ci0rICBERUNMX1JFU1VMVCAoZGVjbCkgPSBidWlsZF9kZWNsIChCVUlMVElOU19MT0NBVElPTiwgUkVTVUxUX0RFQ0wsCi0rCQkJCSAgIE5VTExfVFJFRSwgdm9pZF90eXBlX25vZGUpOwotKyAgVFJFRV9QVUJMSUMgKGRlY2wpID0gMTsKLSsgIFRSRUVfU1RBVElDIChkZWNsKSA9IDE7Ci0rICBERUNMX0lHTk9SRURfUCAoZGVjbCkgPSAxOwotKwotKyNpZiBUQVJHRVRfTUFDSE8KLSsgIGlmIChUQVJHRVRfTUFDSE8pCi0rICAgIHsKLSsgICAgICBzd2l0Y2hfdG9fc2VjdGlvbiAoZGFyd2luX3NlY3Rpb25zW3BpY2Jhc2VfdGh1bmtfc2VjdGlvbl0pOwotKyAgICAgIGZwdXRzICgiXHQud2Vha19kZWZpbml0aW9uXHQiLCBhc21fb3V0X2ZpbGUpOwotKyAgICAgIGFzc2VtYmxlX25hbWUgKGFzbV9vdXRfZmlsZSwgbmFtZSk7Ci0rICAgICAgZnB1dHMgKCJcblx0LnByaXZhdGVfZXh0ZXJuXHQiLCBhc21fb3V0X2ZpbGUpOwotKyAgICAgIGFzc2VtYmxlX25hbWUgKGFzbV9vdXRfZmlsZSwgbmFtZSk7Ci0rICAgICAgcHV0YyAoJ1xuJywgYXNtX291dF9maWxlKTsKLSsgICAgICBBU01fT1VUUFVUX0xBQkVMIChhc21fb3V0X2ZpbGUsIG5hbWUpOwotKyAgICAgIERFQ0xfV0VBSyAoZGVjbCkgPSAxOwotKyAgICB9Ci0rICBlbHNlCi0rI2VuZGlmCi0rICAgIGlmIChVU0VfSElEREVOX0xJTktPTkNFKQotKyAgICAgIHsKLSsJY2dyYXBoX25vZGU6OmNyZWF0ZSAoZGVjbCktPnNldF9jb21kYXRfZ3JvdXAgKERFQ0xfQVNTRU1CTEVSX05BTUUgKGRlY2wpKTsKLSsKLSsJdGFyZ2V0bS5hc21fb3V0LnVuaXF1ZV9zZWN0aW9uIChkZWNsLCAwKTsKLSsJc3dpdGNoX3RvX3NlY3Rpb24gKGdldF9uYW1lZF9zZWN0aW9uIChkZWNsLCBOVUxMLCAwKSk7Ci0rCi0rCXRhcmdldG0uYXNtX291dC5nbG9iYWxpemVfbGFiZWwgKGFzbV9vdXRfZmlsZSwgbmFtZSk7Ci0rCWZwdXRzICgiXHQuaGlkZGVuXHQiLCBhc21fb3V0X2ZpbGUpOwotKwlhc3NlbWJsZV9uYW1lIChhc21fb3V0X2ZpbGUsIG5hbWUpOwotKwlwdXRjICgnXG4nLCBhc21fb3V0X2ZpbGUpOwotKwlBU01fREVDTEFSRV9GVU5DVElPTl9OQU1FIChhc21fb3V0X2ZpbGUsIG5hbWUsIGRlY2wpOwotKyAgICAgIH0KLSsgICAgZWxzZQotKyAgICAgIHsKLSsJc3dpdGNoX3RvX3NlY3Rpb24gKHRleHRfc2VjdGlvbik7Ci0rCUFTTV9PVVRQVVRfTEFCRUwgKGFzbV9vdXRfZmlsZSwgbmFtZSk7Ci0rICAgICAgfQotKwotKyAgREVDTF9JTklUSUFMIChkZWNsKSA9IG1ha2Vfbm9kZSAoQkxPQ0spOwotKyAgY3VycmVudF9mdW5jdGlvbl9kZWNsID0gZGVjbDsKLSsgIGFsbG9jYXRlX3N0cnVjdF9mdW5jdGlvbiAoZGVjbCwgZmFsc2UpOwotKyAgaW5pdF9mdW5jdGlvbl9zdGFydCAoZGVjbCk7Ci0rICAvKiBXZSdyZSBhYm91dCB0byBoaWRlIHRoZSBmdW5jdGlvbiBib2R5IGZyb20gY2FsbGVlcyBvZiBmaW5hbF8qIGJ5Ci0rICAgICBlbWl0dGluZyBpdCBkaXJlY3RseTsgdGVsbCB0aGVtIHdlJ3JlIGEgdGh1bmssIGlmIHRoZXkgY2FyZS4gICovCi0rICBjZnVuLT5pc190aHVuayA9IHRydWU7Ci0rICBmaXJzdF9mdW5jdGlvbl9ibG9ja19pc19jb2xkID0gZmFsc2U7Ci0rICAvKiBNYWtlIHN1cmUgdW53aW5kIGluZm8gaXMgZW1pdHRlZCBmb3IgdGhlIHRodW5rIGlmIG5lZWRlZC4gICovCi0rICBmaW5hbF9zdGFydF9mdW5jdGlvbiAoZW1pdF9iYXJyaWVyICgpLCBhc21fb3V0X2ZpbGUsIDEpOwotKwotKyAgb3V0cHV0X2luZGlyZWN0X3RodW5rIChuZWVkX2JuZF9wLCByZWdubyk7Ci0rCi0rICBmaW5hbF9lbmRfZnVuY3Rpb24gKCk7Ci0rICBpbml0X2luc25fbGVuZ3RocyAoKTsKLSsgIGZyZWVfYWZ0ZXJfY29tcGlsYXRpb24gKGNmdW4pOwotKyAgc2V0X2NmdW4gKE5VTEwpOwotKyAgY3VycmVudF9mdW5jdGlvbl9kZWNsID0gTlVMTDsKLSt9Ci0rCi0gc3RhdGljIGludCBwaWNfbGFiZWxzX3VzZWQ7Ci0gCi0gLyogRmlsbHMgaW4gdGhlIGxhYmVsIG5hbWUgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgYSBwYyB0aHVuayBmb3IKLUBAIC0xMDk4OCwxMSArMTEyNTIsMzIgQEAgaXg4Nl9jb2RlX2VuZCAodm9pZCkKLSAgIHJ0eCB4b3BzWzJdOwotICAgaW50IHJlZ25vOwotIAotKyAgaWYgKGluZGlyZWN0X3RodW5rX25lZWRlZCkKLSsgICAgb3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uIChmYWxzZSwgLTEpOwotKyAgaWYgKGluZGlyZWN0X3RodW5rX2JuZF9uZWVkZWQpCi0rICAgIG91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbiAodHJ1ZSwgLTEpOwotKwotKyAgZm9yIChyZWdubyA9IEZJUlNUX1JFWF9JTlRfUkVHOyByZWdubyA8PSBMQVNUX1JFWF9JTlRfUkVHOyByZWdubysrKQotKyAgICB7Ci0rICAgICAgaW50IGkgPSByZWdubyAtIEZJUlNUX1JFWF9JTlRfUkVHICsgTEFTVF9JTlRfUkVHICsgMTsKLSsgICAgICBpZiAoKGluZGlyZWN0X3RodW5rc191c2VkICYgKDEgPDwgaSkpKQotKwlvdXRwdXRfaW5kaXJlY3RfdGh1bmtfZnVuY3Rpb24gKGZhbHNlLCByZWdubyk7Ci0rCi0rICAgICAgaWYgKChpbmRpcmVjdF90aHVua3NfYm5kX3VzZWQgJiAoMSA8PCBpKSkpCi0rCW91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbiAodHJ1ZSwgcmVnbm8pOwotKyAgICB9Ci0rCi0gICBmb3IgKHJlZ25vID0gQVhfUkVHOyByZWdubyA8PSBTUF9SRUc7IHJlZ25vKyspCi0gICAgIHsKLSAgICAgICBjaGFyIG5hbWVbMzJdOwotICAgICAgIHRyZWUgZGVjbDsKLSAKLSsgICAgICBpZiAoKGluZGlyZWN0X3RodW5rc191c2VkICYgKDEgPDwgcmVnbm8pKSkKLSsJb3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uIChmYWxzZSwgcmVnbm8pOwotKwotKyAgICAgIGlmICgoaW5kaXJlY3RfdGh1bmtzX2JuZF91c2VkICYgKDEgPDwgcmVnbm8pKSkKLSsJb3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uICh0cnVlLCByZWdubyk7Ci0rCi0gICAgICAgaWYgKCEocGljX2xhYmVsc191c2VkICYgKDEgPDwgcmVnbm8pKSkKLSAJY29udGludWU7Ci0gCi1AQCAtMjczNjksMTIgKzI3NjU0LDI5MiBAQCBpeDg2X25vcGljX25vcGx0X2F0dHJpYnV0ZV9wIChydHggY2FsbF9vcCkKLSAgIHJldHVybiBmYWxzZTsKLSB9Ci0gCi0rLyogT3V0cHV0IGluZGlyZWN0IGJyYW5jaCB2aWEgYSBjYWxsIGFuZCByZXR1cm4gdGh1bmsuICBDQUxMX09QIGlzIGEKLSsgICByZWdpc3RlciB3aGljaCBjb250YWlucyB0aGUgYnJhbmNoIHRhcmdldC4gIFhBU00gaXMgdGhlIGFzc2VtYmx5Ci0rICAgdGVtcGxhdGUgZm9yIENBTExfT1AuICBCcmFuY2ggaXMgYSB0YWlsIGNhbGwgaWYgU0lCQ0FMTF9QIGlzIHRydWUuCi0rICAgQSBub3JtYWwgY2FsbCBpcyBjb252ZXJ0ZWQgdG86Ci0rCi0rCWNhbGwgX194ODZfaW5kaXJlY3RfdGh1bmtfcmVnCi0rCi0rICAgYW5kIGEgdGFpbCBjYWxsIGlzIGNvbnZlcnRlZCB0bzoKLSsKLSsJam1wIF9feDg2X2luZGlyZWN0X3RodW5rX3JlZwotKyAqLwotKwotK3N0YXRpYyB2b2lkCi0raXg4Nl9vdXRwdXRfaW5kaXJlY3RfYnJhbmNoX3ZpYV9yZWcgKHJ0eCBjYWxsX29wLCBib29sIHNpYmNhbGxfcCkKLSt7Ci0rICBjaGFyIHRodW5rX25hbWVfYnVmWzMyXTsKLSsgIGNoYXIgKnRodW5rX25hbWU7Ci0rICBib29sIG5lZWRfYm5kX3AgPSBpeDg2X2JuZF9wcmVmaXhlZF9pbnNuX3AgKGN1cnJlbnRfb3V0cHV0X2luc24pOwotKyAgaW50IHJlZ25vID0gUkVHTk8gKGNhbGxfb3ApOwotKwotKyAgaWYgKGNmdW4tPm1hY2hpbmUtPmluZGlyZWN0X2JyYW5jaF90eXBlCi0rICAgICAgIT0gaW5kaXJlY3RfYnJhbmNoX3RodW5rX2lubGluZSkKLSsgICAgewotKyAgICAgIGlmIChjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZSA9PSBpbmRpcmVjdF9icmFuY2hfdGh1bmspCi0rCXsKLSsJICBpbnQgaSA9IHJlZ25vOwotKwkgIGlmIChpID49IEZJUlNUX1JFWF9JTlRfUkVHKQotKwkgICAgaSAtPSAoRklSU1RfUkVYX0lOVF9SRUcgLSBMQVNUX0lOVF9SRUcgLSAxKTsKLSsJICBpZiAobmVlZF9ibmRfcCkKLSsJICAgIGluZGlyZWN0X3RodW5rc19ibmRfdXNlZCB8PSAxIDw8IGk7Ci0rCSAgZWxzZQotKwkgICAgaW5kaXJlY3RfdGh1bmtzX3VzZWQgfD0gMSA8PCBpOwotKwl9Ci0rICAgICAgaW5kaXJlY3RfdGh1bmtfbmFtZSAodGh1bmtfbmFtZV9idWYsIHJlZ25vLCBuZWVkX2JuZF9wKTsKLSsgICAgICB0aHVua19uYW1lID0gdGh1bmtfbmFtZV9idWY7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgdGh1bmtfbmFtZSA9IE5VTEw7Ci0rCi0rICBpZiAoc2liY2FsbF9wKQotKyAgICB7Ci0rICAgICAgaWYgKHRodW5rX25hbWUgIT0gTlVMTCkKLSsJewotKwkgIGlmIChuZWVkX2JuZF9wKQotKwkgICAgZnByaW50ZiAoYXNtX291dF9maWxlLCAiXHRibmQgam1wXHQlc1xuIiwgdGh1bmtfbmFtZSk7Ci0rCSAgZWxzZQotKwkgICAgZnByaW50ZiAoYXNtX291dF9maWxlLCAiXHRqbXBcdCVzXG4iLCB0aHVua19uYW1lKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJb3V0cHV0X2luZGlyZWN0X3RodW5rIChuZWVkX2JuZF9wLCByZWdubyk7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIGlmICh0aHVua19uYW1lICE9IE5VTEwpCi0rCXsKLSsJICBpZiAobmVlZF9ibmRfcCkKLSsJICAgIGZwcmludGYgKGFzbV9vdXRfZmlsZSwgIlx0Ym5kIGNhbGxcdCVzXG4iLCB0aHVua19uYW1lKTsKLSsJICBlbHNlCi0rCSAgICBmcHJpbnRmIChhc21fb3V0X2ZpbGUsICJcdGNhbGxcdCVzXG4iLCB0aHVua19uYW1lKTsKLSsJICByZXR1cm47Ci0rCX0KLSsKLSsgICAgICBjaGFyIGluZGlyZWN0bGFiZWwxWzMyXTsKLSsgICAgICBjaGFyIGluZGlyZWN0bGFiZWwyWzMyXTsKLSsKLSsgICAgICBBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwgKGluZGlyZWN0bGFiZWwxLAotKwkJCQkgICBJTkRJUkVDVF9MQUJFTCwKLSsJCQkJICAgaW5kaXJlY3RsYWJlbG5vKyspOwotKyAgICAgIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAoaW5kaXJlY3RsYWJlbDIsCi0rCQkJCSAgIElORElSRUNUX0xBQkVMLAotKwkJCQkgICBpbmRpcmVjdGxhYmVsbm8rKyk7Ci0rCi0rICAgICAgLyogSnVtcC4gICovCi0rICAgICAgaWYgKG5lZWRfYm5kX3ApCi0rCWZwdXRzICgiXHRibmQgam1wXHQiLCBhc21fb3V0X2ZpbGUpOwotKyAgICAgIGVsc2UKLSsJZnB1dHMgKCJcdGptcFx0IiwgYXNtX291dF9maWxlKTsKLSsgICAgICBhc3NlbWJsZV9uYW1lX3JhdyAoYXNtX291dF9maWxlLCBpbmRpcmVjdGxhYmVsMik7Ci0rICAgICAgZnB1dGMgKCdcbicsIGFzbV9vdXRfZmlsZSk7Ci0rCi0rICAgICAgQVNNX09VVFBVVF9JTlRFUk5BTF9MQUJFTCAoYXNtX291dF9maWxlLCBpbmRpcmVjdGxhYmVsMSk7Ci0rCi0rICAgICAgaWYgKHRodW5rX25hbWUgIT0gTlVMTCkKLSsJewotKwkgIGlmIChuZWVkX2JuZF9wKQotKwkgICAgZnByaW50ZiAoYXNtX291dF9maWxlLCAiXHRibmQgam1wXHQlc1xuIiwgdGh1bmtfbmFtZSk7Ci0rCSAgZWxzZQotKwkgICAgZnByaW50ZiAoYXNtX291dF9maWxlLCAiXHRqbXBcdCVzXG4iLCB0aHVua19uYW1lKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJb3V0cHV0X2luZGlyZWN0X3RodW5rIChuZWVkX2JuZF9wLCByZWdubyk7Ci0rCi0rICAgICAgQVNNX09VVFBVVF9JTlRFUk5BTF9MQUJFTCAoYXNtX291dF9maWxlLCBpbmRpcmVjdGxhYmVsMik7Ci0rCi0rICAgICAgLyogQ2FsbC4gICovCi0rICAgICAgaWYgKG5lZWRfYm5kX3ApCi0rCWZwdXRzICgiXHRibmQgY2FsbFx0IiwgYXNtX291dF9maWxlKTsKLSsgICAgICBlbHNlCi0rCWZwdXRzICgiXHRjYWxsXHQiLCBhc21fb3V0X2ZpbGUpOwotKyAgICAgIGFzc2VtYmxlX25hbWVfcmF3IChhc21fb3V0X2ZpbGUsIGluZGlyZWN0bGFiZWwxKTsKLSsgICAgICBmcHV0YyAoJ1xuJywgYXNtX291dF9maWxlKTsKLSsgICAgfQotK30KLSsKLSsvKiBPdXRwdXQgaW5kaXJlY3QgYnJhbmNoIHZpYSBhIGNhbGwgYW5kIHJldHVybiB0aHVuay4gIENBTExfT1AgaXMKLSsgICB0aGUgYnJhbmNoIHRhcmdldC4gIFhBU00gaXMgdGhlIGFzc2VtYmx5IHRlbXBsYXRlIGZvciBDQUxMX09QLgotKyAgIEJyYW5jaCBpcyBhIHRhaWwgY2FsbCBpZiBTSUJDQUxMX1AgaXMgdHJ1ZS4gIEEgbm9ybWFsIGNhbGwgaXMKLSsgICBjb252ZXJ0ZWQgdG86Ci0rCi0rCWptcCBMMgotKyAgIEwxOgotKwlwdXNoIENBTExfT1AKLSsJam1wIF9feDg2X2luZGlyZWN0X3RodW5rCi0rICAgTDI6Ci0rCWNhbGwgTDEKLSsKLSsgICBhbmQgYSB0YWlsIGNhbGwgaXMgY29udmVydGVkIHRvOgotKwotKwlwdXNoIENBTExfT1AKLSsJam1wIF9feDg2X2luZGlyZWN0X3RodW5rCi0rICovCi0rCi0rc3RhdGljIHZvaWQKLStpeDg2X291dHB1dF9pbmRpcmVjdF9icmFuY2hfdmlhX3B1c2ggKHJ0eCBjYWxsX29wLCBjb25zdCBjaGFyICp4YXNtLAotKwkJCQkgICAgICBib29sIHNpYmNhbGxfcCkKLSt7Ci0rICBjaGFyIHRodW5rX25hbWVfYnVmWzMyXTsKLSsgIGNoYXIgKnRodW5rX25hbWU7Ci0rICBjaGFyIHB1c2hfYnVmWzY0XTsKLSsgIGJvb2wgbmVlZF9ibmRfcCA9IGl4ODZfYm5kX3ByZWZpeGVkX2luc25fcCAoY3VycmVudF9vdXRwdXRfaW5zbik7Ci0rICBpbnQgcmVnbm8gPSAtMTsKLSsKLSsgIGlmIChjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZQotKyAgICAgICE9IGluZGlyZWN0X2JyYW5jaF90aHVua19pbmxpbmUpCi0rICAgIHsKLSsgICAgICBpZiAoY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUgPT0gaW5kaXJlY3RfYnJhbmNoX3RodW5rKQotKwl7Ci0rCSAgaWYgKG5lZWRfYm5kX3ApCi0rCSAgICBpbmRpcmVjdF90aHVua19ibmRfbmVlZGVkID0gdHJ1ZTsKLSsJICBlbHNlCi0rCSAgICBpbmRpcmVjdF90aHVua19uZWVkZWQgPSB0cnVlOwotKwl9Ci0rICAgICAgaW5kaXJlY3RfdGh1bmtfbmFtZSAodGh1bmtfbmFtZV9idWYsIHJlZ25vLCBuZWVkX2JuZF9wKTsKLSsgICAgICB0aHVua19uYW1lID0gdGh1bmtfbmFtZV9idWY7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgdGh1bmtfbmFtZSA9IE5VTEw7Ci0rCi0rICBzbnByaW50ZiAocHVzaF9idWYsIHNpemVvZiAocHVzaF9idWYpLCAicHVzaHslY31cdCVzIiwKLSsJICAgIFRBUkdFVF82NEJJVCA/ICdxJyA6ICdsJywgeGFzbSk7Ci0rCi0rICBpZiAoc2liY2FsbF9wKQotKyAgICB7Ci0rICAgICAgb3V0cHV0X2FzbV9pbnNuIChwdXNoX2J1ZiwgJmNhbGxfb3ApOwotKyAgICAgIGlmICh0aHVua19uYW1lICE9IE5VTEwpCi0rCXsKLSsJICBpZiAobmVlZF9ibmRfcCkKLSsJICAgIGZwcmludGYgKGFzbV9vdXRfZmlsZSwgIlx0Ym5kIGptcFx0JXNcbiIsIHRodW5rX25hbWUpOwotKwkgIGVsc2UKLSsJICAgIGZwcmludGYgKGFzbV9vdXRfZmlsZSwgIlx0am1wXHQlc1xuIiwgdGh1bmtfbmFtZSk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCW91dHB1dF9pbmRpcmVjdF90aHVuayAobmVlZF9ibmRfcCwgcmVnbm8pOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBjaGFyIGluZGlyZWN0bGFiZWwxWzMyXTsKLSsgICAgICBjaGFyIGluZGlyZWN0bGFiZWwyWzMyXTsKLSsKLSsgICAgICBBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwgKGluZGlyZWN0bGFiZWwxLAotKwkJCQkgICBJTkRJUkVDVF9MQUJFTCwKLSsJCQkJICAgaW5kaXJlY3RsYWJlbG5vKyspOwotKyAgICAgIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAoaW5kaXJlY3RsYWJlbDIsCi0rCQkJCSAgIElORElSRUNUX0xBQkVMLAotKwkJCQkgICBpbmRpcmVjdGxhYmVsbm8rKyk7Ci0rCi0rICAgICAgLyogSnVtcC4gICovCi0rICAgICAgaWYgKG5lZWRfYm5kX3ApCi0rCWZwdXRzICgiXHRibmQgam1wXHQiLCBhc21fb3V0X2ZpbGUpOwotKyAgICAgIGVsc2UKLSsJZnB1dHMgKCJcdGptcFx0IiwgYXNtX291dF9maWxlKTsKLSsgICAgICBhc3NlbWJsZV9uYW1lX3JhdyAoYXNtX291dF9maWxlLCBpbmRpcmVjdGxhYmVsMik7Ci0rICAgICAgZnB1dGMgKCdcbicsIGFzbV9vdXRfZmlsZSk7Ci0rCi0rICAgICAgQVNNX09VVFBVVF9JTlRFUk5BTF9MQUJFTCAoYXNtX291dF9maWxlLCBpbmRpcmVjdGxhYmVsMSk7Ci0rCi0rICAgICAgLyogQW4gZXh0ZXJuYWwgZnVuY3Rpb24gbWF5IGJlIGNhbGxlZCB2aWEgR09ULCBpbnN0ZWFkIG9mIFBMVC4gICovCi0rICAgICAgaWYgKE1FTV9QIChjYWxsX29wKSkKLSsJewotKwkgIHN0cnVjdCBpeDg2X2FkZHJlc3MgcGFydHM7Ci0rCSAgcnR4IGFkZHIgPSBYRVhQIChjYWxsX29wLCAwKTsKLSsJICBpZiAoaXg4Nl9kZWNvbXBvc2VfYWRkcmVzcyAoYWRkciwgJnBhcnRzKQotKwkgICAgICAmJiBwYXJ0cy5iYXNlID09IHN0YWNrX3BvaW50ZXJfcnR4KQotKwkgICAgewotKwkgICAgICAvKiBTaW5jZSBjYWxsIHdpbGwgYWRqdXN0IHN0YWNrIGJ5IC1VTklUU19QRVJfV09SRCwKLSsJCSB3ZSBtdXN0IGNvbnZlcnQgImRpc3Aoc3RhY2ssIGluZGV4LCBzY2FsZSkiIHRvCi0rCQkgImRpc3ArVU5JVFNfUEVSX1dPUkQoc3RhY2ssIGluZGV4LCBzY2FsZSkiLiAgKi8KLSsJICAgICAgaWYgKHBhcnRzLmluZGV4KQotKwkJewotKwkJICBhZGRyID0gZ2VuX3J0eF9NVUxUIChQbW9kZSwgcGFydHMuaW5kZXgsCi0rCQkJCSAgICAgICBHRU5fSU5UIChwYXJ0cy5zY2FsZSkpOwotKwkJICBhZGRyID0gZ2VuX3J0eF9QTFVTIChQbW9kZSwgc3RhY2tfcG9pbnRlcl9ydHgsCi0rCQkJCSAgICAgICBhZGRyKTsKLSsJCX0KLSsJICAgICAgZWxzZQotKwkJYWRkciA9IHN0YWNrX3BvaW50ZXJfcnR4OwotKwotKwkgICAgICBydHggZGlzcDsKLSsJICAgICAgaWYgKHBhcnRzLmRpc3AgIT0gTlVMTF9SVFgpCi0rCQlkaXNwID0gcGx1c19jb25zdGFudCAoUG1vZGUsIHBhcnRzLmRpc3AsCi0rCQkJCSAgICAgIFVOSVRTX1BFUl9XT1JEKTsKLSsJICAgICAgZWxzZQotKwkJZGlzcCA9IEdFTl9JTlQgKFVOSVRTX1BFUl9XT1JEKTsKLSsKLSsJICAgICAgYWRkciA9IGdlbl9ydHhfUExVUyAoUG1vZGUsIGFkZHIsIGRpc3ApOwotKwkgICAgICBjYWxsX29wID0gZ2VuX3J0eF9NRU0gKEdFVF9NT0RFIChjYWxsX29wKSwgYWRkcik7Ci0rCSAgICB9Ci0rCX0KLSsKLSsgICAgICBvdXRwdXRfYXNtX2luc24gKHB1c2hfYnVmLCAmY2FsbF9vcCk7Ci0rCi0rICAgICAgaWYgKHRodW5rX25hbWUgIT0gTlVMTCkKLSsJewotKwkgIGlmIChuZWVkX2JuZF9wKQotKwkgICAgZnByaW50ZiAoYXNtX291dF9maWxlLCAiXHRibmQgam1wXHQlc1xuIiwgdGh1bmtfbmFtZSk7Ci0rCSAgZWxzZQotKwkgICAgZnByaW50ZiAoYXNtX291dF9maWxlLCAiXHRqbXBcdCVzXG4iLCB0aHVua19uYW1lKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJb3V0cHV0X2luZGlyZWN0X3RodW5rIChuZWVkX2JuZF9wLCByZWdubyk7Ci0rCi0rICAgICAgQVNNX09VVFBVVF9JTlRFUk5BTF9MQUJFTCAoYXNtX291dF9maWxlLCBpbmRpcmVjdGxhYmVsMik7Ci0rCi0rICAgICAgLyogQ2FsbC4gICovCi0rICAgICAgaWYgKG5lZWRfYm5kX3ApCi0rCWZwdXRzICgiXHRibmQgY2FsbFx0IiwgYXNtX291dF9maWxlKTsKLSsgICAgICBlbHNlCi0rCWZwdXRzICgiXHRjYWxsXHQiLCBhc21fb3V0X2ZpbGUpOwotKyAgICAgIGFzc2VtYmxlX25hbWVfcmF3IChhc21fb3V0X2ZpbGUsIGluZGlyZWN0bGFiZWwxKTsKLSsgICAgICBmcHV0YyAoJ1xuJywgYXNtX291dF9maWxlKTsKLSsgICAgfQotK30KLSsKLSsvKiBPdXRwdXQgaW5kaXJlY3QgYnJhbmNoIHZpYSBhIGNhbGwgYW5kIHJldHVybiB0aHVuay4gIENBTExfT1AgaXMKLSsgICB0aGUgYnJhbmNoIHRhcmdldC4gIFhBU00gaXMgdGhlIGFzc2VtYmx5IHRlbXBsYXRlIGZvciBDQUxMX09QLgotKyAgIEJyYW5jaCBpcyBhIHRhaWwgY2FsbCBpZiBTSUJDQUxMX1AgaXMgdHJ1ZS4gICAqLwotKwotK3N0YXRpYyB2b2lkCi0raXg4Nl9vdXRwdXRfaW5kaXJlY3RfYnJhbmNoIChydHggY2FsbF9vcCwgY29uc3QgY2hhciAqeGFzbSwKLSsJCQkgICAgIGJvb2wgc2liY2FsbF9wKQotK3sKLSsgIGlmIChSRUdfUCAoY2FsbF9vcCkpCi0rICAgIGl4ODZfb3V0cHV0X2luZGlyZWN0X2JyYW5jaF92aWFfcmVnIChjYWxsX29wLCBzaWJjYWxsX3ApOwotKyAgZWxzZQotKyAgICBpeDg2X291dHB1dF9pbmRpcmVjdF9icmFuY2hfdmlhX3B1c2ggKGNhbGxfb3AsIHhhc20sIHNpYmNhbGxfcCk7Ci0rfQotKy8qIE91dHB1dCBpbmRpcmVjdCBqdW1wLiAgQ0FMTF9PUCBpcyB0aGUganVtcCB0YXJnZXQuICBKdW1wIGlzIGEKLSsgICBmdW5jdGlvbiByZXR1cm4gaWYgUkVUX1AgaXMgdHJ1ZS4gICovCi0rCi0rY29uc3QgY2hhciAqCi0raXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wIChydHggY2FsbF9vcCwgYm9vbCByZXRfcCkKLSt7Ci0rICBpZiAoY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUgIT0gaW5kaXJlY3RfYnJhbmNoX2tlZXApCi0rICAgIHsKLSsgICAgICAvKiBXZSBjYW4ndCBoYXZlIHJlZC16b25lIGlmIHRoaXMgaXNuJ3QgYSBmdW5jdGlvbiByZXR1cm4gc2luY2UKLSsJICJjYWxsIiBpbiB0aGUgaW5kaXJlY3QgdGh1bmsgcHVzaGVzIHRoZSByZXR1cm4gYWRkcmVzcyBvbnRvCi0rCSBzdGFjaywgZGVzdHJveWluZyByZWQtem9uZS4gICovCi0rICAgICAgaWYgKCFyZXRfcCAmJiBpeDg2X3JlZF96b25lX3NpemUgIT0gMCkKLSsJZ2NjX3VucmVhY2hhYmxlICgpOwotKwotKyAgICAgIGl4ODZfb3V0cHV0X2luZGlyZWN0X2JyYW5jaCAoY2FsbF9vcCwgIiUwIiwgdHJ1ZSk7Ci0rICAgICAgcmV0dXJuICIiOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHJldHVybiAiJSFqbXBcdCVBMCI7Ci0rfQotKwotIC8qIE91dHB1dCB0aGUgYXNzZW1ibHkgZm9yIGEgY2FsbCBpbnN0cnVjdGlvbi4gICovCi0gCi0gY29uc3QgY2hhciAqCi0gaXg4Nl9vdXRwdXRfY2FsbF9pbnNuIChydHhfaW5zbiAqaW5zbiwgcnR4IGNhbGxfb3ApCi0gewotICAgYm9vbCBkaXJlY3RfcCA9IGNvbnN0YW50X2NhbGxfYWRkcmVzc19vcGVyYW5kIChjYWxsX29wLCBWT0lEbW9kZSk7Ci0rICBib29sIG91dHB1dF9pbmRpcmVjdF9wCi0rICAgID0gKCFUQVJHRVRfU0VICi0rICAgICAgICYmIGNmdW4tPm1hY2hpbmUtPmluZGlyZWN0X2JyYW5jaF90eXBlICE9IGluZGlyZWN0X2JyYW5jaF9rZWVwKTsKLSAgIGJvb2wgc2VoX25vcF9wID0gZmFsc2U7Ci0gICBjb25zdCBjaGFyICp4YXNtOwotIAotQEAgLTI3MzgzLDcgKzI3OTQ4LDEzIEBAIGl4ODZfb3V0cHV0X2NhbGxfaW5zbiAocnR4X2luc24gKmluc24sIHJ0eCBjYWxsX29wKQotICAgICAgIGlmIChkaXJlY3RfcCkKLSAJewotIAkgIGlmIChpeDg2X25vcGljX25vcGx0X2F0dHJpYnV0ZV9wIChjYWxsX29wKSkKLS0JICAgIHhhc20gPSAiJSFqbXBcdHsqJXAwQEdPVFBDUkVMKCUlcmlwKXxbUVdPUkQgUFRSICVwMEBHT1RQQ1JFTFtyaXBdXX0iOwotKwkgICAgewotKwkgICAgICBkaXJlY3RfcCA9IGZhbHNlOwotKwkgICAgICBpZiAob3V0cHV0X2luZGlyZWN0X3ApCi0rCQl4YXNtID0gInslcDBAR09UUENSRUwoJSVyaXApfFtRV09SRCBQVFIgJXAwQEdPVFBDUkVMW3JpcF1dfSI7Ci0rCSAgICAgIGVsc2UKLSsJCXhhc20gPSAiJSFqbXBcdHsqJXAwQEdPVFBDUkVMKCUlcmlwKXxbUVdPUkQgUFRSICVwMEBHT1RQQ1JFTFtyaXBdXX0iOwotKwkgICAgfQotIAkgIGVsc2UKLSAJICAgIHhhc20gPSAiJSFqbXBcdCVQMCI7Ci0gCX0KLUBAIC0yNzM5Miw5ICsyNzk2MywxNyBAQCBpeDg2X291dHB1dF9jYWxsX2luc24gKHJ0eF9pbnNuICppbnNuLCBydHggY2FsbF9vcCkKLSAgICAgICBlbHNlIGlmIChUQVJHRVRfU0VIKQotIAl4YXNtID0gIiUhcmV4Llcgam1wXHQlQTAiOwotICAgICAgIGVsc2UKLS0JeGFzbSA9ICIlIWptcFx0JUEwIjsKLSsJewotKwkgIGlmIChvdXRwdXRfaW5kaXJlY3RfcCkKLSsJICAgIHhhc20gPSAiJTAiOwotKwkgIGVsc2UKLSsJICAgIHhhc20gPSAiJSFqbXBcdCVBMCI7Ci0rCX0KLSAKLS0gICAgICBvdXRwdXRfYXNtX2luc24gKHhhc20sICZjYWxsX29wKTsKLSsgICAgICBpZiAob3V0cHV0X2luZGlyZWN0X3AgJiYgIWRpcmVjdF9wKQotKwlpeDg2X291dHB1dF9pbmRpcmVjdF9icmFuY2ggKGNhbGxfb3AsIHhhc20sIHRydWUpOwotKyAgICAgIGVsc2UKLSsJb3V0cHV0X2FzbV9pbnNuICh4YXNtLCAmY2FsbF9vcCk7Ci0gICAgICAgcmV0dXJuICIiOwotICAgICB9Ci0gCi1AQCAtMjc0MzEsMTQgKzI4MDEwLDI4IEBAIGl4ODZfb3V0cHV0X2NhbGxfaW5zbiAocnR4X2luc24gKmluc24sIHJ0eCBjYWxsX29wKQotICAgaWYgKGRpcmVjdF9wKQotICAgICB7Ci0gICAgICAgaWYgKGl4ODZfbm9waWNfbm9wbHRfYXR0cmlidXRlX3AgKGNhbGxfb3ApKQotLQl4YXNtID0gIiUhY2FsbFx0eyolcDBAR09UUENSRUwoJSVyaXApfFtRV09SRCBQVFIgJXAwQEdPVFBDUkVMW3JpcF1dfSI7Ci0rCXsKLSsJICBkaXJlY3RfcCA9IGZhbHNlOwotKwkgIGlmIChvdXRwdXRfaW5kaXJlY3RfcCkKLSsJICAgIHhhc20gPSAieyVwMEBHT1RQQ1JFTCglJXJpcCl8W1FXT1JEIFBUUiAlcDBAR09UUENSRUxbcmlwXV19IjsKLSsJICBlbHNlCi0rCSAgICB4YXNtID0gIiUhY2FsbFx0eyolcDBAR09UUENSRUwoJSVyaXApfFtRV09SRCBQVFIgJXAwQEdPVFBDUkVMW3JpcF1dfSI7Ci0rCX0KLSAgICAgICBlbHNlCi0gCXhhc20gPSAiJSFjYWxsXHQlUDAiOwotICAgICB9Ci0gICBlbHNlCi0tICAgIHhhc20gPSAiJSFjYWxsXHQlQTAiOwotKyAgICB7Ci0rICAgICAgaWYgKG91dHB1dF9pbmRpcmVjdF9wKQotKwl4YXNtID0gIiUwIjsKLSsgICAgICBlbHNlCi0rCXhhc20gPSAiJSFjYWxsXHQlQTAiOwotKyAgICB9Ci0gCi0tICBvdXRwdXRfYXNtX2luc24gKHhhc20sICZjYWxsX29wKTsKLSsgIGlmIChvdXRwdXRfaW5kaXJlY3RfcCAmJiAhZGlyZWN0X3ApCi0rICAgIGl4ODZfb3V0cHV0X2luZGlyZWN0X2JyYW5jaCAoY2FsbF9vcCwgeGFzbSwgZmFsc2UpOwotKyAgZWxzZQotKyAgICBvdXRwdXRfYXNtX2luc24gKHhhc20sICZjYWxsX29wKTsKLSAKLSAgIGlmIChzZWhfbm9wX3ApCi0gICAgIHJldHVybiAibm9wIjsKLUBAIC00NDgzNiw3ICs0NTQyOSw3IEBAIGl4ODZfaGFuZGxlX3N0cnVjdF9hdHRyaWJ1dGUgKHRyZWUgKm5vZGUsIHRyZWUgbmFtZSwgdHJlZSwgaW50LAotIH0KLSAKLSBzdGF0aWMgdHJlZQotLWl4ODZfaGFuZGxlX2ZuZGVjbF9hdHRyaWJ1dGUgKHRyZWUgKm5vZGUsIHRyZWUgbmFtZSwgdHJlZSwgaW50LAotK2l4ODZfaGFuZGxlX2ZuZGVjbF9hdHRyaWJ1dGUgKHRyZWUgKm5vZGUsIHRyZWUgbmFtZSwgdHJlZSBhcmdzLCBpbnQsCi0gCQkJICAgICAgYm9vbCAqbm9fYWRkX2F0dHJzKQotIHsKLSAgIGlmIChUUkVFX0NPREUgKCpub2RlKSAhPSBGVU5DVElPTl9ERUNMKQotQEAgLTQ0ODQ1LDYgKzQ1NDM4LDI5IEBAIGl4ODZfaGFuZGxlX2ZuZGVjbF9hdHRyaWJ1dGUgKHRyZWUgKm5vZGUsIHRyZWUgbmFtZSwgdHJlZSwgaW50LAotICAgICAgICAgICAgICAgIG5hbWUpOwotICAgICAgICpub19hZGRfYXR0cnMgPSB0cnVlOwotICAgICB9Ci0rCi0rICBpZiAoaXNfYXR0cmlidXRlX3AgKCJpbmRpcmVjdF9icmFuY2giLCBuYW1lKSkKLSsgICAgewotKyAgICAgIHRyZWUgY3N0ID0gVFJFRV9WQUxVRSAoYXJncyk7Ci0rICAgICAgaWYgKFRSRUVfQ09ERSAoY3N0KSAhPSBTVFJJTkdfQ1NUKQotKwl7Ci0rCSAgd2FybmluZyAoT1BUX1dhdHRyaWJ1dGVzLAotKwkJICAgIiVxRSBhdHRyaWJ1dGUgcmVxdWlyZXMgYSBzdHJpbmcgY29uc3RhbnQgYXJndW1lbnQiLAotKwkJICAgbmFtZSk7Ci0rCSAgKm5vX2FkZF9hdHRycyA9IHRydWU7Ci0rCX0KLSsgICAgICBlbHNlIGlmIChzdHJjbXAgKFRSRUVfU1RSSU5HX1BPSU5URVIgKGNzdCksICJrZWVwIikgIT0gMAotKwkgICAgICAgJiYgc3RyY21wIChUUkVFX1NUUklOR19QT0lOVEVSIChjc3QpLCAidGh1bmsiKSAhPSAwCi0rCSAgICAgICAmJiBzdHJjbXAgKFRSRUVfU1RSSU5HX1BPSU5URVIgKGNzdCksICJ0aHVuay1pbmxpbmUiKSAhPSAwCi0rCSAgICAgICAmJiBzdHJjbXAgKFRSRUVfU1RSSU5HX1BPSU5URVIgKGNzdCksICJ0aHVuay1leHRlcm4iKSAhPSAwKQotKwl7Ci0rCSAgd2FybmluZyAoT1BUX1dhdHRyaWJ1dGVzLAotKwkJICAgImFyZ3VtZW50IHRvICVxRSBhdHRyaWJ1dGUgaXMgbm90ICIKLSsJCSAgICIoa2VlcHx0aHVua3x0aHVuay1pbmxpbmV8dGh1bmstZXh0ZXJuKSIsIG5hbWUpOwotKwkgICpub19hZGRfYXR0cnMgPSB0cnVlOwotKwl9Ci0rICAgIH0KLSsKLSAgIHJldHVybiBOVUxMX1RSRUU7Ci0gfQotIAotQEAgLTQ5MDcyLDYgKzQ5Njg4LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfc3BlYyBpeDg2X2F0dHJpYnV0ZV90YWJsZVtdID0KLSAgICAgZmFsc2UgfSwKLSAgIHsgImNhbGxlZV9wb3BfYWdncmVnYXRlX3JldHVybiIsIDEsIDEsIGZhbHNlLCB0cnVlLCB0cnVlLAotICAgICBpeDg2X2hhbmRsZV9jYWxsZWVfcG9wX2FnZ3JlZ2F0ZV9yZXR1cm4sIHRydWUgfSwKLSsgIHsgImluZGlyZWN0X2JyYW5jaCIsIDEsIDEsIHRydWUsIGZhbHNlLCBmYWxzZSwKLSsgICAgaXg4Nl9oYW5kbGVfZm5kZWNsX2F0dHJpYnV0ZSwgZmFsc2UgfSwKLSsKLSAgIC8qIEVuZCBlbGVtZW50LiAgKi8KLSAgIHsgTlVMTCwgICAgICAgIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIE5VTEwsIGZhbHNlIH0KLSB9OwotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmggYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5oCi1pbmRleCA1NDE0NDE2Li45ZGNjZGIwIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaAotQEAgLTI1NzIsNiArMjU3MiwxMyBAQCBzdHJ1Y3QgR1RZKCgpKSBtYWNoaW5lX2Z1bmN0aW9uIHsKLSAgIC8qIElmIHRydWUsIGl0IGlzIHNhZmUgdG8gbm90IHNhdmUvcmVzdG9yZSBEUkFQIHJlZ2lzdGVyLiAgKi8KLSAgIEJPT0xfQklURklFTEQgbm9fZHJhcF9zYXZlX3Jlc3RvcmUgOiAxOwotIAotKyAgLyogSG93IHRvIGdlbmVyYXRlIGluZGlyZWMgYnJhbmNoLiAgKi8KLSsgIEVOVU1fQklURklFTEQoaW5kaXJlY3RfYnJhbmNoKSBpbmRpcmVjdF9icmFuY2hfdHlwZSA6IDM7Ci0rCi0rICAvKiBJZiB0cnVlLCB0aGUgY3VycmVudCBmdW5jdGlvbiBoYXMgbG9jYWwgaW5kaXJlY3QganVtcHMsIGxpa2UKLSsgICAgICJpbmRpcmVjdF9qdW1wIiBvciAidGFibGVqdW1wIi4gICovCi0rICBCT09MX0JJVEZJRUxEIGhhc19sb2NhbF9pbmRpcmVjdF9qdW1wIDogMTsKLSsKLSAgIC8qIElmIHRydWUsIHRoZXJlIGlzIHJlZ2lzdGVyIGF2YWlsYWJsZSBmb3IgYXJndW1lbnQgcGFzc2luZy4gIFRoaXMKLSAgICAgIGlzIHVzZWQgb25seSBpbiBpeDg2X2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsIGJ5IDMyLWJpdCB0byBkZXRlcm1pbmUKLSAgICAgIGlmIHRoZXJlIGlzIHNjcmF0Y2ggcmVnaXN0ZXIgYXZhaWxhYmxlIGZvciBpbmRpcmVjdCBzaWJjYWxsLiAgSW4KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZCBiL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kCi1pbmRleCBkMmJmZTMxLi4xNTNlMTYyIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kCi1AQCAtMTE4MDcsMTMgKzExODA3LDE4IEBACi0gewotICAgaWYgKFRBUkdFVF9YMzIpCi0gICAgIG9wZXJhbmRzWzBdID0gY29udmVydF9tZW1vcnlfYWRkcmVzcyAod29yZF9tb2RlLCBvcGVyYW5kc1swXSk7Ci0rICBjZnVuLT5tYWNoaW5lLT5oYXNfbG9jYWxfaW5kaXJlY3RfanVtcCA9IHRydWU7Ci0gfSkKLSAKLSAoZGVmaW5lX2luc24gIippbmRpcmVjdF9qdW1wIgotICAgWyhzZXQgKHBjKSAobWF0Y2hfb3BlcmFuZDpXIDAgImluZGlyZWN0X2JyYW5jaF9vcGVyYW5kIiAickJ3IikpXQotICAgIiIKLS0gICIlIWptcFx0JUEwIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgImliciIpCi0rICAiKiByZXR1cm4gaXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wIChvcGVyYW5kc1swXSwgZmFsc2UpOyIKLSsgIFsoc2V0IChhdHRyICJ0eXBlIikKLSsgICAgIChpZl90aGVuX2Vsc2UgKG1hdGNoX3Rlc3QgIihjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZQotKwkJCQkgIT0gaW5kaXJlY3RfYnJhbmNoX2tlZXApIikKLSsJKGNvbnN0X3N0cmluZyAibXVsdGkiKQotKwkoY29uc3Rfc3RyaW5nICJpYnIiKSkpCi0gICAgKHNldF9hdHRyICJsZW5ndGhfaW1tZWRpYXRlIiAiMCIpCi0gICAgKHNldF9hdHRyICJtYXliZV9wcmVmaXhfYm5kIiAiMSIpXSkKLSAKLUBAIC0xMTg1NiwxNCArMTE4NjEsMTkgQEAKLSAKLSAgIGlmIChUQVJHRVRfWDMyKQotICAgICBvcGVyYW5kc1swXSA9IGNvbnZlcnRfbWVtb3J5X2FkZHJlc3MgKHdvcmRfbW9kZSwgb3BlcmFuZHNbMF0pOwotKyAgY2Z1bi0+bWFjaGluZS0+aGFzX2xvY2FsX2luZGlyZWN0X2p1bXAgPSB0cnVlOwotIH0pCi0gCi0gKGRlZmluZV9pbnNuICIqdGFibGVqdW1wXzEiCi0gICBbKHNldCAocGMpIChtYXRjaF9vcGVyYW5kOlcgMCAiaW5kaXJlY3RfYnJhbmNoX29wZXJhbmQiICJyQnciKSkKLSAgICAodXNlIChsYWJlbF9yZWYgKG1hdGNoX29wZXJhbmQgMSkpKV0KLSAgICIiCi0tICAiJSFqbXBcdCVBMCIKLS0gIFsoc2V0X2F0dHIgInR5cGUiICJpYnIiKQotKyAgIiogcmV0dXJuIGl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcCAob3BlcmFuZHNbMF0sIGZhbHNlKTsiCi0rICBbKHNldCAoYXR0ciAidHlwZSIpCi0rICAgICAoaWZfdGhlbl9lbHNlIChtYXRjaF90ZXN0ICIoY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUKLSsJCQkJICE9IGluZGlyZWN0X2JyYW5jaF9rZWVwKSIpCi0rCShjb25zdF9zdHJpbmcgIm11bHRpIikKLSsJKGNvbnN0X3N0cmluZyAiaWJyIikpKQotICAgIChzZXRfYXR0ciAibGVuZ3RoX2ltbWVkaWF0ZSIgIjAiKQotICAgIChzZXRfYXR0ciAibWF5YmVfcHJlZml4X2JuZCIgIjEiKV0pCi0gDAotQEAgLTEyNTIwLDggKzEyNTMwLDEyIEBACi0gICBbKHNpbXBsZV9yZXR1cm4pCi0gICAgKHVzZSAobWF0Y2hfb3BlcmFuZDpTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiciIpKV0KLSAgICJyZWxvYWRfY29tcGxldGVkIgotLSAgIiUham1wXHQlQTAiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAiaWJyIikKLSsgICIqIHJldHVybiBpeDg2X291dHB1dF9pbmRpcmVjdF9qbXAgKG9wZXJhbmRzWzBdLCB0cnVlKTsiCi0rICBbKHNldCAoYXR0ciAidHlwZSIpCi0rICAgICAoaWZfdGhlbl9lbHNlIChtYXRjaF90ZXN0ICIoY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUKLSsJCQkJICE9IGluZGlyZWN0X2JyYW5jaF9rZWVwKSIpCi0rCShjb25zdF9zdHJpbmcgIm11bHRpIikKLSsJKGNvbnN0X3N0cmluZyAiaWJyIikpKQotICAgIChzZXRfYXR0ciAibGVuZ3RoX2ltbWVkaWF0ZSIgIjAiKQotICAgIChzZXRfYXR0ciAibWF5YmVfcHJlZml4X2JuZCIgIjEiKV0pCi0gCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYub3B0IGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYub3B0Ci1pbmRleCBmMzA0YjYyLi41ZmZhMzM0IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYub3B0Ci0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5vcHQKLUBAIC04OTcsMyArODk3LDIzIEBAIEVudW0oc3RhY2tfcHJvdGVjdG9yX2d1YXJkKSBTdHJpbmcoZ2xvYmFsKSBWYWx1ZShTU1BfR0xPQkFMKQotIG1taXRpZ2F0ZS1yb3AKLSBUYXJnZXQgVmFyKGZsYWdfbWl0aWdhdGVfcm9wKSBJbml0KDApCi0gQXR0ZW1wdCB0byBhdm9pZCBnZW5lcmF0aW5nIGluc3RydWN0aW9uIHNlcXVlbmNlcyBjb250YWluaW5nIHJldCBieXRlcy4KLSsKLSttaW5kaXJlY3QtYnJhbmNoPQotK1RhcmdldCBSZXBvcnQgUmVqZWN0TmVnYXRpdmUgSm9pbmVkIEVudW0oaW5kaXJlY3RfYnJhbmNoKSBWYXIoaXg4Nl9pbmRpcmVjdF9icmFuY2gpIEluaXQoaW5kaXJlY3RfYnJhbmNoX2tlZXApCi0rQ29udmVydCBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHRvIGNhbGwgYW5kIHJldHVybiB0aHVua3MuCi0rCi0rRW51bQotK05hbWUoaW5kaXJlY3RfYnJhbmNoKSBUeXBlKGVudW0gaW5kaXJlY3RfYnJhbmNoKQotK0tub3duIGluZGlyZWN0IGJyYW5jaCBjaG9pY2VzIChmb3IgdXNlIHdpdGggdGhlIC1taW5kaXJlY3QtYnJhbmNoPSBvcHRpb24pOgotKwotK0VudW1WYWx1ZQotK0VudW0oaW5kaXJlY3RfYnJhbmNoKSBTdHJpbmcoa2VlcCkgVmFsdWUoaW5kaXJlY3RfYnJhbmNoX2tlZXApCi0rCi0rRW51bVZhbHVlCi0rRW51bShpbmRpcmVjdF9icmFuY2gpIFN0cmluZyh0aHVuaykgVmFsdWUoaW5kaXJlY3RfYnJhbmNoX3RodW5rKQotKwotK0VudW1WYWx1ZQotK0VudW0oaW5kaXJlY3RfYnJhbmNoKSBTdHJpbmcodGh1bmstaW5saW5lKSBWYWx1ZShpbmRpcmVjdF9icmFuY2hfdGh1bmtfaW5saW5lKQotKwotK0VudW1WYWx1ZQotK0VudW0oaW5kaXJlY3RfYnJhbmNoKSBTdHJpbmcodGh1bmstZXh0ZXJuKSBWYWx1ZShpbmRpcmVjdF9icmFuY2hfdGh1bmtfZXh0ZXJuKQotZGlmZiAtLWdpdCBhL2djYy9kb2MvZXh0ZW5kLnRleGkgYi9nY2MvZG9jL2V4dGVuZC50ZXhpCi1pbmRleCA4Y2M0ZjdlLi44NjY4ZGFlIDEwMDY0NAotLS0tIGEvZ2NjL2RvYy9leHRlbmQudGV4aQotKysrIGIvZ2NjL2RvYy9leHRlbmQudGV4aQotQEAgLTU0MTksNiArNTQxOSwxNiBAQCBTcGVjaWZ5IHdoaWNoIGZsb2F0aW5nLXBvaW50IHVuaXQgdG8gdXNlLiAgWW91IG11c3Qgc3BlY2lmeSB0aGUKLSBAY29kZXt0YXJnZXQoImZwbWF0aD1zc2UsMzg3Iil9IG9wdGlvbiBhcwotIEBjb2Rle3RhcmdldCgiZnBtYXRoPXNzZSszODciKX0gYmVjYXVzZSB0aGUgY29tbWEgd291bGQgc2VwYXJhdGUKLSBkaWZmZXJlbnQgb3B0aW9ucy4KLSsKLStAaXRlbSBpbmRpcmVjdF9icmFuY2goIkB2YXJ7Y2hvaWNlfSIpCi0rQGNpbmRleCBAY29kZXtpbmRpcmVjdF9icmFuY2h9IGZ1bmN0aW9uIGF0dHJpYnV0ZSwgeDg2Ci0rT24geDg2IHRhcmdldHMsIHRoZSBAY29kZXtpbmRpcmVjdF9icmFuY2h9IGF0dHJpYnV0ZSBjYXVzZXMgdGhlIGNvbXBpbGVyCi0rdG8gY29udmVydCBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHdpdGggQHZhcntjaG9pY2V9LiAgQHNhbXB7a2VlcH0KLStrZWVwcyBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHVubW9kaWZpZWQuICBAc2FtcHt0aHVua30gY29udmVydHMgaW5kaXJlY3QKLStjYWxsIGFuZCBqdW1wIHRvIGNhbGwgYW5kIHJldHVybiB0aHVuay4gIEBzYW1we3RodW5rLWlubGluZX0gY29udmVydHMKLStpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHRvIGlubGluZWQgY2FsbCBhbmQgcmV0dXJuIHRodW5rLgotK0BzYW1we3RodW5rLWV4dGVybn0gY29udmVydHMgaW5kaXJlY3QgY2FsbCBhbmQganVtcCB0byBleHRlcm5hbCBjYWxsCi0rYW5kIHJldHVybiB0aHVuayBwcm92aWRlZCBpbiBhIHNlcGFyYXRlIG9iamVjdCBmaWxlLgotIEBlbmQgdGFibGUKLSAKLSBPbiB0aGUgeDg2LCB0aGUgaW5saW5lciBkb2VzIG5vdCBpbmxpbmUgYQotZGlmZiAtLWdpdCBhL2djYy9kb2MvaW52b2tlLnRleGkgYi9nY2MvZG9jL2ludm9rZS50ZXhpCi1pbmRleCBiMDY2ZjdiLi5mZjlhMTk0IDEwMDY0NAotLS0tIGEvZ2NjL2RvYy9pbnZva2UudGV4aQotKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQotQEAgLTExNjksNyArMTE2OSw3IEBAIFNlZSBSUy82MDAwIGFuZCBQb3dlclBDIE9wdGlvbnMuCi0gLW1zc2UyYXZ4IC1tZmVudHJ5IC1tcmVjb3JkLW1jb3VudCAtbW5vcC1tY291bnQgLW04Yml0LWlkaXYgQGdvbAotIC1tYXZ4MjU2LXNwbGl0LXVuYWxpZ25lZC1sb2FkIC1tYXZ4MjU2LXNwbGl0LXVuYWxpZ25lZC1zdG9yZSBAZ29sCi0gLW1hbGlnbi1kYXRhPUB2YXJ7dHlwZX0gLW1zdGFjay1wcm90ZWN0b3ItZ3VhcmQ9QHZhcntndWFyZH0gQGdvbAotLS1tbWl0aWdhdGUtcm9wfQotKy1tbWl0aWdhdGUtcm9wIC1taW5kaXJlY3QtYnJhbmNoPUB2YXJ7Y2hvaWNlfX0KLSAKLSBAZW1waHt4ODYgV2luZG93cyBPcHRpb25zfQotIEBnY2NvcHRsaXN0ey1tY29uc29sZSAtbWN5Z3dpbiAtbW5vLWN5Z3dpbiAtbWRsbCBAZ29sCi1AQCAtMjQyMTgsNiArMjQyMTgsMTcgQEAgb3Bjb2RlcywgdG8gbWl0aWdhdGUgYWdhaW5zdCBjZXJ0YWluIGZvcm1zIG9mIGF0dGFjay4gQXQgdGhlIG1vbWVudCwKLSB0aGlzIG9wdGlvbiBpcyBsaW1pdGVkIGluIHdoYXQgaXQgY2FuIGRvIGFuZCBzaG91bGQgbm90IGJlIHJlbGllZAotIG9uIHRvIHByb3ZpZGUgc2VyaW91cyBwcm90ZWN0aW9uLgotIAotK0BpdGVtIC1taW5kaXJlY3QtYnJhbmNoPUB2YXJ7Y2hvaWNlfQotK0BvcGluZGV4IC1taW5kaXJlY3QtYnJhbmNoCi0rQ29udmVydCBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHdpdGggQHZhcntjaG9pY2V9LiAgVGhlIGRlZmF1bHQgaXMKLStAc2FtcHtrZWVwfSwgd2hpY2gga2VlcHMgaW5kaXJlY3QgY2FsbCBhbmQganVtcCB1bm1vZGlmaWVkLgotK0BzYW1we3RodW5rfSBjb252ZXJ0cyBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHRvIGNhbGwgYW5kIHJldHVybiB0aHVuay4KLStAc2FtcHt0aHVuay1pbmxpbmV9IGNvbnZlcnRzIGluZGlyZWN0IGNhbGwgYW5kIGp1bXAgdG8gaW5saW5lZCBjYWxsCi0rYW5kIHJldHVybiB0aHVuay4gIEBzYW1we3RodW5rLWV4dGVybn0gY29udmVydHMgaW5kaXJlY3QgY2FsbCBhbmQganVtcAotK3RvIGV4dGVybmFsIGNhbGwgYW5kIHJldHVybiB0aHVuayBwcm92aWRlZCBpbiBhIHNlcGFyYXRlIG9iamVjdCBmaWxlLgotK1lvdSBjYW4gY29udHJvbCB0aGlzIGJlaGF2aW9yIGZvciBhIHNwZWNpZmljIGZ1bmN0aW9uIGJ5IHVzaW5nIHRoZQotK2Z1bmN0aW9uIGF0dHJpYnV0ZSBAY29kZXtpbmRpcmVjdF9icmFuY2h9LiAgQHhyZWZ7RnVuY3Rpb24gQXR0cmlidXRlc30uCi0rCi0gQGVuZCB0YWJsZQotIAotIFRoZXNlIEBzYW1wey1tfSBzd2l0Y2hlcyBhcmUgc3VwcG9ydGVkIGluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZQotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmQ5ODNlMWMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYwotQEAgLTAsMCArMSwyMCBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSsKLSt0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0rCi0rZGlzcGF0Y2hfdCBkaXNwYXRjaDsKLSsKLSt2b2lkCi0rbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSt7Ci0rICBkaXNwYXRjaChvZmZzZXQpOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0bGZlbmNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0yLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi41OGYwOWI0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0yLmMKLUBAIC0wLDAgKzEsMjAgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rCi0rdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotKwotK2Rpc3BhdGNoX3QgZGlzcGF0Y2hbMjU2XTsKLSsKLSt2b2lkCi0rbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSt7Ci0rICBkaXNwYXRjaFtvZmZzZXRdKG9mZnNldCk7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmYyMGQzNWMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYwotQEAgLTAsMCArMSwyMSBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSsKLSt0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0rCi0rZGlzcGF0Y2hfdCBkaXNwYXRjaDsKLSsKLStpbnQKLSttYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotK3sKLSsgIGRpc3BhdGNoKG9mZnNldCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjBlZmY4ZmIKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYwotQEAgLTAsMCArMSwyMSBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSsKLSt0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0rCi0rZGlzcGF0Y2hfdCBkaXNwYXRjaFsyNTZdOwotKwotK2ludAotK21hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0rewotKyAgZGlzcGF0Y2hbb2Zmc2V0XShvZmZzZXQpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0bGZlbmNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hMjViMjBkCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmMKLUBAIC0wLDAgKzEsMTcgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayIgfSAqLwotKwotK2V4dGVybiB2b2lkIGJhciAodm9pZCk7Ci0rCi0rdm9pZAotK2ZvbyAodm9pZCkKLSt7Ci0rICBiYXIgKCk7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uY2ZmMTE0YQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jCi1AQCAtMCwwICsxLDE4IEBACi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0ICotKi1saW51eCogfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsiIH0gKi8KLSsKLStleHRlcm4gdm9pZCBiYXIgKHZvaWQpOwotKwotK2ludAotK2ZvbyAodm9pZCkKLSt7Ci0rICBiYXIgKCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYWZkYjYwMAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jCi1AQCAtMCwwICsxLDQ0IEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotKwotK3ZvaWQgZnVuYzAgKHZvaWQpOwotK3ZvaWQgZnVuYzEgKHZvaWQpOwotK3ZvaWQgZnVuYzIgKHZvaWQpOwotK3ZvaWQgZnVuYzMgKHZvaWQpOwotK3ZvaWQgZnVuYzQgKHZvaWQpOwotK3ZvaWQgZnVuYzQgKHZvaWQpOwotK3ZvaWQgZnVuYzUgKHZvaWQpOwotKwotK3ZvaWQKLStiYXIgKGludCBpKQotK3sKLSsgIHN3aXRjaCAoaSkKLSsgICAgewotKyAgICBkZWZhdWx0OgotKyAgICAgIGZ1bmMwICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDE6Ci0rICAgICAgZnVuYzEgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgMjoKLSsgICAgICBmdW5jMiAoKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSAzOgotKyAgICAgIGZ1bmMzICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDQ6Ci0rICAgICAgZnVuYzQgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgNToKLSsgICAgICBmdW5jNSAoKTsKLSsgICAgICBicmVhazsKLSsgICAgfQotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpcLkxcWzAtOVxdK1xcKCwlIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0bGZlbmNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZDY0ZDk3OAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xLmMKLUBAIC0wLDAgKzEsMjMgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mbm8tcGljIiB9ICovCi0rCi0rdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotKwotK2Rpc3BhdGNoX3QgZGlzcGF0Y2g7Ci0rCi0rZXh0ZXJuIHZvaWQgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nKQotKyAgX19hdHRyaWJ1dGVfXyAoKGluZGlyZWN0X2JyYW5jaCgidGh1bmsiKSkpOwotKwotK3ZvaWQKLSttYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotK3sKLSsgIGRpc3BhdGNoKG9mZnNldCk7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi45MzA2NzQ1Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTIuYwotQEAgLTAsMCArMSwyMSBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLWZuby1waWMiIH0gKi8KLSsKLSt0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0rCi0rZGlzcGF0Y2hfdCBkaXNwYXRjaFsyNTZdOwotKwotK19fYXR0cmlidXRlX18gKChpbmRpcmVjdF9icmFuY2goInRodW5rIikpKQotK3ZvaWQKLSttYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotK3sKLSsgIGRpc3BhdGNoW29mZnNldF0ob2Zmc2V0KTsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTMuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjk3NzQ0ZDYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMy5jCi1AQCAtMCwwICsxLDIzIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZm5vLXBpYyIgfSAqLwotKwotK3R5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSsKLStkaXNwYXRjaF90IGRpc3BhdGNoOwotK2V4dGVybiBpbnQgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nKQotKyAgX19hdHRyaWJ1dGVfXyAoKGluZGlyZWN0X2JyYW5jaCgidGh1bmstaW5saW5lIikpKTsKLSsKLStpbnQKLSttYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotK3sKLSsgIGRpc3BhdGNoKG9mZnNldCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYmZjZTNlYQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci00LmMKLUBAIC0wLDAgKzEsMjIgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mbm8tcGljIiB9ICovCi0rCi0rdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotKwotK2Rpc3BhdGNoX3QgZGlzcGF0Y2hbMjU2XTsKLSsKLStfX2F0dHJpYnV0ZV9fICgoaW5kaXJlY3RfYnJhbmNoKCJ0aHVuay1pbmxpbmUiKSkpCi0raW50Ci0rbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSt7Ci0rICBkaXNwYXRjaFtvZmZzZXRdKG9mZnNldCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMDgzMzYwNgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci01LmMKLUBAIC0wLDAgKzEsMjIgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mbm8tcGljIiB9ICovCi0rCi0rdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotKwotK2Rpc3BhdGNoX3QgZGlzcGF0Y2g7Ci0rZXh0ZXJuIGludCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcpCi0rICBfX2F0dHJpYnV0ZV9fICgoaW5kaXJlY3RfYnJhbmNoKCJ0aHVuay1leHRlcm4iKSkpOwotKwotK2ludAotK21hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0rewotKyAgZGlzcGF0Y2gob2Zmc2V0KTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMmViYTBmYgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmMKLUBAIC0wLDAgKzEsMjEgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mbm8tcGljIiB9ICovCi0rCi0rdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotKwotK2Rpc3BhdGNoX3QgZGlzcGF0Y2hbMjU2XTsKLSsKLStfX2F0dHJpYnV0ZV9fICgoaW5kaXJlY3RfYnJhbmNoKCJ0aHVuay1leHRlcm4iKSkpCi0raW50Ci0rbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSt7Ci0rICBkaXNwYXRjaFtvZmZzZXRdKG9mZnNldCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci03LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTcuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmY1ODQyN2UKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jCi1AQCAtMCwwICsxLDQ0IEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZm5vLXBpYyIgfSAqLwotKwotK3ZvaWQgZnVuYzAgKHZvaWQpOwotK3ZvaWQgZnVuYzEgKHZvaWQpOwotK3ZvaWQgZnVuYzIgKHZvaWQpOwotK3ZvaWQgZnVuYzMgKHZvaWQpOwotK3ZvaWQgZnVuYzQgKHZvaWQpOwotK3ZvaWQgZnVuYzQgKHZvaWQpOwotK3ZvaWQgZnVuYzUgKHZvaWQpOwotKwotK19fYXR0cmlidXRlX18gKChpbmRpcmVjdF9icmFuY2goInRodW5rLWV4dGVybiIpKSkKLSt2b2lkCi0rYmFyIChpbnQgaSkKLSt7Ci0rICBzd2l0Y2ggKGkpCi0rICAgIHsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBmdW5jMCAoKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSAxOgotKyAgICAgIGZ1bmMxICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDI6Ci0rICAgICAgZnVuYzIgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgMzoKLSsgICAgICBmdW5jMyAoKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSA0OgotKyAgICAgIGZ1bmM0ICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDU6Ci0rICAgICAgZnVuYzUgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci04LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTguYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjU2NGVkMzkKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItOC5jCi1AQCAtMCwwICsxLDQyIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotKwotK3ZvaWQgZnVuYzAgKHZvaWQpOwotK3ZvaWQgZnVuYzEgKHZvaWQpOwotK3ZvaWQgZnVuYzIgKHZvaWQpOwotK3ZvaWQgZnVuYzMgKHZvaWQpOwotK3ZvaWQgZnVuYzQgKHZvaWQpOwotK3ZvaWQgZnVuYzQgKHZvaWQpOwotK3ZvaWQgZnVuYzUgKHZvaWQpOwotKwotK19fYXR0cmlidXRlX18gKChpbmRpcmVjdF9icmFuY2goImtlZXAiKSkpCi0rdm9pZAotK2JhciAoaW50IGkpCi0rewotKyAgc3dpdGNoIChpKQotKyAgICB7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgZnVuYzAgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgMToKLSsgICAgICBmdW5jMSAoKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSAyOgotKyAgICAgIGZ1bmMyICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDM6Ci0rICAgICAgZnVuYzMgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgNDoKLSsgICAgICBmdW5jNCAoKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSA1OgotKyAgICAgIGZ1bmM1ICgpOwotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTEuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjUwZmJlZTIKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmMKLUBAIC0wLDAgKzEsMjAgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mY2hlY2stcG9pbnRlci1ib3VuZHMgLW1tcHggLWZuby1waWMiIH0gKi8KLSsKLSt2b2lkICgqZGlzcGF0Y2gpIChjaGFyICopOwotK2NoYXIgYnVmWzEwXTsKLSsKLSt2b2lkCi0rZm9vICh2b2lkKQotK3sKLSsgIGRpc3BhdGNoIChidWYpOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfYm5kIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIHJldCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0bGZlbmNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjI5NzZlNjcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0yLmMKLUBAIC0wLDAgKzEsMjEgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mY2hlY2stcG9pbnRlci1ib3VuZHMgLW1tcHggLWZuby1waWMiIH0gKi8KLSsKLSt2b2lkICgqZGlzcGF0Y2gpIChjaGFyICopOwotK2NoYXIgYnVmWzEwXTsKLSsKLStpbnQKLStmb28gKHZvaWQpCi0rewotKyAgZGlzcGF0Y2ggKGJ1Zik7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rX2JuZCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgcmV0IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZGE0YmM5OAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYwotQEAgLTAsMCArMSwxOSBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICotKi1saW51eCogJiYgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZjaGVjay1wb2ludGVyLWJvdW5kcyAtbW1weCAtZnBpYyAtZm5vLXBsdCIgfSAqLwotKwotK3ZvaWQgYmFyIChjaGFyICopOwotK2NoYXIgYnVmWzEwXTsKLSsKLSt2b2lkCi0rZm9vICh2b2lkKQotK3sKLSsgIGJhciAoYnVmKTsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua19ibmQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgcmV0IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC00LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtNC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYzY0ZDEyZQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTQuYwotQEAgLTAsMCArMSwyMCBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICotKi1saW51eCogJiYgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZjaGVjay1wb2ludGVyLWJvdW5kcyAtbW1weCAtZnBpYyAtZm5vLXBsdCIgfSAqLwotKwotK3ZvaWQgYmFyIChjaGFyICopOwotK2NoYXIgYnVmWzEwXTsKLSsKLStpbnQKLStmb28gKHZvaWQpCi0rewotKyAgYmFyIChidWYpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImJuZCBjYWxsXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgcmV0IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNDlmMjdiNAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTEuYwotQEAgLTAsMCArMSwxOSBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0rCi0rdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotKwotK2Rpc3BhdGNoX3QgZGlzcGF0Y2g7Ci0rCi0rdm9pZAotK21hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0rewotKyAgZGlzcGF0Y2gob2Zmc2V0KTsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hMWUzZWI2Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMi5jCi1AQCAtMCwwICsxLDE5IEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSsKLSt0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0rCi0rZGlzcGF0Y2hfdCBkaXNwYXRjaFsyNTZdOwotKwotK3ZvaWQKLSttYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotK3sKLSsgIGRpc3BhdGNoW29mZnNldF0ob2Zmc2V0KTsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4zOTU2MzRlCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMy5jCi1AQCAtMCwwICsxLDIwIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSsKLSt0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0rCi0rZGlzcGF0Y2hfdCBkaXNwYXRjaDsKLSsKLStpbnQKLSttYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotK3sKLSsgIGRpc3BhdGNoKG9mZnNldCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5mZDNmNjMzCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNC5jCi1AQCAtMCwwICsxLDIwIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSsKLSt0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0rCi0rZGlzcGF0Y2hfdCBkaXNwYXRjaFsyNTZdOwotKwotK2ludAotK21hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0rewotKyAgZGlzcGF0Y2hbb2Zmc2V0XShvZmZzZXQpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYmEyZjkyYgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTUuYwotQEAgLTAsMCArMSwxNiBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCAqLSotbGludXgqIH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiIgfSAqLwotKwotK2V4dGVybiB2b2lkIGJhciAodm9pZCk7Ci0rCi0rdm9pZAotK2ZvbyAodm9pZCkKLSt7Ci0rICBiYXIgKCk7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4wYzVhMmQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNi5jCi1AQCAtMCwwICsxLDE3IEBACi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0ICotKi1saW51eCogfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIiB9ICovCi0rCi0rZXh0ZXJuIHZvaWQgYmFyICh2b2lkKTsKLSsKLStpbnQKLStmb28gKHZvaWQpCi0rewotKyAgYmFyICgpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiam1wXFsgXHRcXSpcLkxJTkQiIDEgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjYWxsXFsgXHRcXSpcLkxJTkQiIDEgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTcuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjY2NTI1MjMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmMKLUBAIC0wLDAgKzEsNDMgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtZm5vLXBpYyIgfSAqLwotKwotK3ZvaWQgZnVuYzAgKHZvaWQpOwotK3ZvaWQgZnVuYzEgKHZvaWQpOwotK3ZvaWQgZnVuYzIgKHZvaWQpOwotK3ZvaWQgZnVuYzMgKHZvaWQpOwotK3ZvaWQgZnVuYzQgKHZvaWQpOwotK3ZvaWQgZnVuYzQgKHZvaWQpOwotK3ZvaWQgZnVuYzUgKHZvaWQpOwotKwotK3ZvaWQKLStiYXIgKGludCBpKQotK3sKLSsgIHN3aXRjaCAoaSkKLSsgICAgewotKyAgICBkZWZhdWx0OgotKyAgICAgIGZ1bmMwICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDE6Ci0rICAgICAgZnVuYzEgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgMjoKLSsgICAgICBmdW5jMiAoKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSAzOgotKyAgICAgIGZ1bmMzICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDQ6Ci0rICAgICAgZnVuYzQgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgNToKLSsgICAgICBmdW5jNSAoKTsKLSsgICAgICBicmVhazsKLSsgICAgfQotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpcLkxcWzAtOVxdK1xcKCwlIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTEuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjY4YzBmZjcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmMKLUBAIC0wLDAgKzEsMjAgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotKwotK3R5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSsKLStkaXNwYXRjaF90IGRpc3BhdGNoOwotKwotK3ZvaWQKLSttYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotK3sKLSsgIGRpc3BhdGNoKG9mZnNldCk7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTIuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmUyZGExZmMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0yLmMKLUBAIC0wLDAgKzEsMjAgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotKwotK3R5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSsKLStkaXNwYXRjaF90IGRpc3BhdGNoWzI1Nl07Ci0rCi0rdm9pZAotK21hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0rewotKyAgZGlzcGF0Y2hbb2Zmc2V0XShvZmZzZXQpOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0bGZlbmNlfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yNDRmZWM3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMy5jCi1AQCAtMCwwICsxLDIxIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSsKLSt0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0rCi0rZGlzcGF0Y2hfdCBkaXNwYXRjaDsKLSsKLStpbnQKLSttYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotK3sKLSsgIGRpc3BhdGNoKG9mZnNldCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDEgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdGxmZW5jZX0gMSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xMDdlYmUzCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNC5jCi1AQCAtMCwwICsxLDIxIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSsKLSt0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0rCi0rZGlzcGF0Y2hfdCBkaXNwYXRjaFsyNTZdOwotKwotK2ludAotK21hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0rewotKyAgZGlzcGF0Y2hbb2Zmc2V0XShvZmZzZXQpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiam1wXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjYWxsXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdHBhdXNlfSAxIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRsZmVuY2V9IDEgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS01LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMTdiMDRlZgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTUuYwotQEAgLTAsMCArMSwxNyBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCAqLSotbGludXgqIH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSIgfSAqLwotKwotK2V4dGVybiB2b2lkIGJhciAodm9pZCk7Ci0rCi0rdm9pZAotK2ZvbyAodm9pZCkKLSt7Ci0rICBiYXIgKCk7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTYuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmQ5ZWIxMTIKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmMKLUBAIC0wLDAgKzEsMTggQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUiIH0gKi8KLSsKLStleHRlcm4gdm9pZCBiYXIgKHZvaWQpOwotKwotK2ludAotK2ZvbyAodm9pZCkKLSt7Ci0rICBiYXIgKCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDEgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdGxmZW5jZX0gMSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kMDJiMWRjCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNy5jCi1AQCAtMCwwICsxLDQ0IEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSsKLSt2b2lkIGZ1bmMwICh2b2lkKTsKLSt2b2lkIGZ1bmMxICh2b2lkKTsKLSt2b2lkIGZ1bmMyICh2b2lkKTsKLSt2b2lkIGZ1bmMzICh2b2lkKTsKLSt2b2lkIGZ1bmM0ICh2b2lkKTsKLSt2b2lkIGZ1bmM0ICh2b2lkKTsKLSt2b2lkIGZ1bmM1ICh2b2lkKTsKLSsKLSt2b2lkCi0rYmFyIChpbnQgaSkKLSt7Ci0rICBzd2l0Y2ggKGkpCi0rICAgIHsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBmdW5jMCAoKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSAxOgotKyAgICAgIGZ1bmMxICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDI6Ci0rICAgICAgZnVuYzIgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgMzoKLSsgICAgICBmdW5jMyAoKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSA0OgotKyAgICAgIGZ1bmM0ICgpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDU6Ci0rICAgICAgZnVuYzUgKCk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDUteDg2LUFkZC1tZnVuY3Rpb24tcmV0dXJuLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDA1LXg4Ni1BZGQtbWZ1bmN0aW9uLXJldHVybi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM1NGM3Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDUteDg2LUFkZC1tZnVuY3Rpb24tcmV0dXJuLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTU3MCArMCwwIEBACi1Gcm9tIGUzMjcwODE0YjllMGNhYWQ2M2ZiY2RmZDdhZTlkYTJkNTJjOTc0OTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDYgSmFuIDIwMTggMjI6Mjk6NTYgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwNS8xMl0geDg2OiBBZGQgLW1mdW5jdGlvbi1yZXR1cm49Ci0KLUFkZCAtbWZ1bmN0aW9uLXJldHVybj0gb3B0aW9uIHRvIGNvbnZlcnQgZnVuY3Rpb24gcmV0dXJuIHRvIGNhbGwgYW5kCi1yZXR1cm4gdGh1bmtzLiAgVGhlIGRlZmF1bHQgaXMgJ2tlZXAnLCB3aGljaCBrZWVwcyBmdW5jdGlvbiByZXR1cm4KLXVubW9kaWZpZWQuICAndGh1bmsnIGNvbnZlcnRzIGZ1bmN0aW9uIHJldHVybiB0byBjYWxsIGFuZCByZXR1cm4gdGh1bmsuCi0ndGh1bmstaW5saW5lJyBjb252ZXJ0cyBmdW5jdGlvbiByZXR1cm4gdG8gaW5saW5lZCBjYWxsIGFuZCByZXR1cm4gdGh1bmsuCi0ndGh1bmstZXh0ZXJuJyBjb252ZXJ0cyBmdW5jdGlvbiByZXR1cm4gdG8gZXh0ZXJuYWwgY2FsbCBhbmQgcmV0dXJuCi10aHVuayBwcm92aWRlZCBpbiBhIHNlcGFyYXRlIG9iamVjdCBmaWxlLiAgWW91IGNhbiBjb250cm9sIHRoaXMgYmVoYXZpb3IKLWZvciBhIHNwZWNpZmljIGZ1bmN0aW9uIGJ5IHVzaW5nIHRoZSBmdW5jdGlvbiBhdHRyaWJ1dGUgZnVuY3Rpb25fcmV0dXJuLgotCi1GdW5jdGlvbiByZXR1cm4gdGh1bmsgaXMgdGhlIHNhbWUgYXMgbWVtb3J5IHRodW5rIGZvciAtbWluZGlyZWN0LWJyYW5jaD0KLXdoZXJlIHRoZSByZXR1cm4gYWRkcmVzcyBpcyBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjazoKLQotX194ODZfcmV0dXJuX3RodW5rOgotCWNhbGwgTDIKLUwxOgotCXBhdXNlCi0JbGZlbmNlCi0Jam1wIEwxCi1MMjoKLQlsZWEgOCglcnNwKSwgJXJzcHxsZWEgNCglZXNwKSwgJWVzcAotCXJldAotCi1hbmQgZnVuY3Rpb24gcmV0dXJuIGJlY29tZXMKLQotCWptcCBfX3g4Nl9yZXR1cm5fdGh1bmsKLQotLW1pbmRpcmVjdC1icmFuY2g9IHRlc3RzIGFyZSB1cGRhdGVkIHdpdGggLW1mdW5jdGlvbi1yZXR1cm49a2VlcCB0bwotYXZvaWQgZmFsc2UgdGVzdCBmYWlsdXJlcyB3aGVuIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rIGlzIGFkZGVkIHRvCi1SVU5URVNURkxBR1MgZm9yICJtYWtlIGNoZWNrIi4KLQotZ2NjLwotCi0JQmFja3BvcnQgZnJvbSBtYWlubGluZQotCTIwMTgtMDEtMTQgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLQotCSogY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCAoaXg4Nl9vdXRwdXRfZnVuY3Rpb25fcmV0dXJuKTogTmV3LgotCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X3NldF9pbmRpcmVjdF9icmFuY2hfdHlwZSk6IEFsc28KLQlzZXQgZnVuY3Rpb25fcmV0dXJuX3R5cGUuCi0JKGluZGlyZWN0X3RodW5rX25hbWUpOiBBZGQgcmV0X3AgdG8gaW5kaWNhdGUgdGh1bmsgZm9yIGZ1bmN0aW9uCi0JcmV0dXJuLgotCShvdXRwdXRfaW5kaXJlY3RfdGh1bmtfZnVuY3Rpb24pOiBQYXNzIGZhbHNlIHRvCi0JaW5kaXJlY3RfdGh1bmtfbmFtZS4KLQkoaXg4Nl9vdXRwdXRfaW5kaXJlY3RfYnJhbmNoX3ZpYV9yZWcpOiBMaWtld2lzZS4KLQkoaXg4Nl9vdXRwdXRfaW5kaXJlY3RfYnJhbmNoX3ZpYV9wdXNoKTogTGlrZXdpc2UuCi0JKG91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbik6IENyZWF0ZSBhbGlhcyBmb3IgZnVuY3Rpb24KLQlyZXR1cm4gdGh1bmsgaWYgcmVnbm8gPCAwLgotCShpeDg2X291dHB1dF9mdW5jdGlvbl9yZXR1cm4pOiBOZXcgZnVuY3Rpb24uCi0JKGl4ODZfaGFuZGxlX2ZuZGVjbF9hdHRyaWJ1dGUpOiBIYW5kbGUgZnVuY3Rpb25fcmV0dXJuLgotCShpeDg2X2F0dHJpYnV0ZV90YWJsZSk6IEFkZCBmdW5jdGlvbl9yZXR1cm4uCi0JKiBjb25maWcvaTM4Ni9pMzg2LmggKG1hY2hpbmVfZnVuY3Rpb24pOiBBZGQKLQlmdW5jdGlvbl9yZXR1cm5fdHlwZS4KLQkqIGNvbmZpZy9pMzg2L2kzODYubWQgKHNpbXBsZV9yZXR1cm5faW50ZXJuYWwpOiBVc2UKLQlpeDg2X291dHB1dF9mdW5jdGlvbl9yZXR1cm4uCi0JKHNpbXBsZV9yZXR1cm5faW50ZXJuYWxfbG9uZyk6IExpa2V3aXNlLgotCSogY29uZmlnL2kzODYvaTM4Ni5vcHQgKG1mdW5jdGlvbi1yZXR1cm49KTogTmV3IG9wdGlvbi4KLQkoaW5kaXJlY3RfYnJhbmNoKTogTWVudGlvbiAtbWZ1bmN0aW9uLXJldHVybj0uCi0JKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50IGZ1bmN0aW9uX3JldHVybiBmdW5jdGlvbiBhdHRyaWJ1dGUuCi0JKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IC1tZnVuY3Rpb24tcmV0dXJuPSBvcHRpb24uCi0KLWdjYy90ZXN0c3VpdGUvCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JMjAxOC0wMS0xNCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jIChkZy1vcHRpb25zKTogQWRkCi0JLW1mdW5jdGlvbi1yZXR1cm49a2VlcC4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTYuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTcuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci04LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xLmM6IE5ldyB0ZXN0LgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEyLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE1LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstOC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstOS5jOiBMaWtld2lzZS4KLQotaTM4NjogRG9uJ3QgdXNlIEFTTV9PVVRQVVRfREVGIGZvciBUQVJHRVRfTUFDSE8KLQotQVNNX09VVFBVVF9ERUYgaXNuJ3QgZGVmaW5lZCBmb3IgVEFSR0VUX01BQ0hPLiAgVXNlIEFTTV9PVVRQVVRfTEFCRUwgdG8KLWdlbmVyYXRlIHRoZSBfX3g4Nl9yZXR1cm5fdGh1bmsgbGFiZWwsIGluc3RlYWQgb2YgdGhlIHNldCBkaXJlY3RpdmUuCi1VcGRhdGUgdGVzdGNhc2UgdG8gcmVtb3ZlIHRoZSBfX3g4Nl9yZXR1cm5fdGh1bmsgbGFiZWwgY2hlY2suICBTaW5jZQotLWZuby1waWMgaXMgaWdub3JlZCBvbiBEYXJ3aW4sIHVwZGF0ZSB0ZXN0Y2FzZXMgdG8gc3NjYW4gb3IgInB1c2giCi1vbmx5IG9uIExpbnV4LgotCi1nY2MvCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JMjAxOC0wMS0xNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotCi0JUFIgdGFyZ2V0LzgzODM5Ci0JKiBjb25maWcvaTM4Ni9pMzg2LmMgKG91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbik6IFVzZQotCUFTTV9PVVRQVVRfTEFCRUwsIGluc3RlYWQgb2YgQVNNX09VVFBVVF9ERUYsIGZvciBUQVJHRVRfTUFDSE8KLQlmb3IgIF9feDg2LnJldHVybl90aHVuay4KLQotZ2NjL3Rlc3RzdWl0ZS8KLQotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQkyMDE4LTAxLTE1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0KLQlQUiB0YXJnZXQvODM4MzkKLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xLmM6IFNjYW4gZm9yICJwdXNoIiBvbmx5IG9uCi0JTGludXguCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci03LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1yZWdpc3Rlci00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEyLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE1LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay05LmM6IERvbid0IGNoZWNrIHRoZQotCV9feDg2X3JldHVybl90aHVuayBsYWJlbC4KLQlTY2FuIGZvciAicHVzaCIgb25seSBmb3IgTGludXguCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotCi0tLS0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNTIgKysrKysrKysrKysrKysrKysrKy0tCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKwotIGdjYy9jb25maWcvaTM4Ni9pMzg2Lm1kICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA5ICstCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYub3B0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KLSBnY2MvZG9jL2V4dGVuZC50ZXhpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgOSArKwotIGdjYy9kb2MvaW52b2tlLnRleGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE0ICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jICAgfCAgIDQgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0yLmMgICB8ICAgNCArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYyAgIHwgICA0ICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jICAgfCAgIDQgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmMgICB8ICAgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTYuYyAgIHwgICAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jICAgfCAgIDQgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jICAgICAgICB8ICAgNCArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmMgICAgICAgIHwgICA0ICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTMuYyAgICAgICAgfCAgIDQgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNC5jICAgICAgICB8ICAgNCArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci01LmMgICAgICAgIHwgICA0ICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYyAgICAgICAgfCAgIDQgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jICAgICAgICB8ICAgNCArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci04LmMgICAgICAgIHwgICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMS5jICAgICAgICAgfCAgIDQgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0yLmMgICAgICAgICB8ICAgNCArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYyAgICAgICAgIHwgICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtNC5jICAgICAgICAgfCAgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmMgICAgICB8ICAgNCArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYyAgICAgIHwgICA0ICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMy5jICAgICAgfCAgIDQgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmMgICAgICB8ICAgNCArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTUuYyAgICAgIHwgICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNi5jICAgICAgfCAgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmMgICAgICB8ICAgNCArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTEuYyAgICAgIHwgICA0ICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMi5jICAgICAgfCAgIDQgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmMgICAgICB8ICAgNCArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTQuYyAgICAgIHwgICA0ICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNS5jICAgICAgfCAgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmMgICAgICB8ICAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTcuYyAgICAgIHwgICA0ICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEuYyAgICAgICAgfCAgMTMgKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTAuYyAgICAgICB8ICAyMyArKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTExLmMgICAgICAgfCAgMjMgKysrKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMi5jICAgICAgIHwgIDIyICsrKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMy5jICAgICAgIHwgIDIyICsrKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNC5jICAgICAgIHwgIDIyICsrKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNS5jICAgICAgIHwgIDIyICsrKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNi5jICAgICAgIHwgIDE4ICsrKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yLmMgICAgICAgIHwgIDEzICsrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTMuYyAgICAgICAgfCAgMTIgKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNC5jICAgICAgICB8ICAxMiArKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay01LmMgICAgICAgIHwgIDE1ICsrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTYuYyAgICAgICAgfCAgMTQgKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNy5jICAgICAgICB8ICAxMyArKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay04LmMgICAgICAgIHwgIDE0ICsrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTkuYyAgICAgICAgfCAgMjQgKysrKwotIDU2IGZpbGVzIGNoYW5nZWQsIDUxNiBpbnNlcnRpb25zKCspLCA3NCBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTAuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTEuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTIuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTMuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTUuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTYuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0zLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay02LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTcuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstOC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay05LmMKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmgKLWluZGV4IGVjYTRjYmYuLjYyMGQ3MGUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmgKLUBAIC0zMTIsNiArMzEyLDcgQEAgZXh0ZXJuIGVudW0gYXR0cl9jcHUgaXg4Nl9zY2hlZHVsZTsKLSAKLSBleHRlcm4gY29uc3QgY2hhciAqIGl4ODZfb3V0cHV0X2NhbGxfaW5zbiAocnR4X2luc24gKmluc24sIHJ0eCBjYWxsX29wKTsKLSBleHRlcm4gY29uc3QgY2hhciAqIGl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcCAocnR4IGNhbGxfb3AsIGJvb2wgcmV0X3ApOwotK2V4dGVybiBjb25zdCBjaGFyICogaXg4Nl9vdXRwdXRfZnVuY3Rpb25fcmV0dXJuIChib29sIGxvbmdfcCk7Ci0gZXh0ZXJuIGJvb2wgaXg4Nl9vcGVyYW5kc19va19mb3JfbW92ZV9tdWx0aXBsZSAocnR4ICpvcGVyYW5kcywgYm9vbCBsb2FkLAotIAkJCQkJCWVudW0gbWFjaGluZV9tb2RlIG1vZGUpOwotIAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1pbmRleCAwYjlmYzRkLi4zNGUyNmEzIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotQEAgLTYzOTAsNiArNjM5MCwzMSBAQCBpeDg2X3NldF9pbmRpcmVjdF9icmFuY2hfdHlwZSAodHJlZSBmbmRlY2wpCi0gICAgICAgZWxzZQotIAljZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZSA9IGl4ODZfaW5kaXJlY3RfYnJhbmNoOwotICAgICB9Ci0rCi0rICBpZiAoY2Z1bi0+bWFjaGluZS0+ZnVuY3Rpb25fcmV0dXJuX3R5cGUgPT0gaW5kaXJlY3RfYnJhbmNoX3Vuc2V0KQotKyAgICB7Ci0rICAgICAgdHJlZSBhdHRyID0gbG9va3VwX2F0dHJpYnV0ZSAoImZ1bmN0aW9uX3JldHVybiIsCi0rCQkJCSAgICBERUNMX0FUVFJJQlVURVMgKGZuZGVjbCkpOwotKyAgICAgIGlmIChhdHRyICE9IE5VTEwpCi0rCXsKLSsJICB0cmVlIGFyZ3MgPSBUUkVFX1ZBTFVFIChhdHRyKTsKLSsJICBpZiAoYXJncyA9PSBOVUxMKQotKwkgICAgZ2NjX3VucmVhY2hhYmxlICgpOwotKwkgIHRyZWUgY3N0ID0gVFJFRV9WQUxVRSAoYXJncyk7Ci0rCSAgaWYgKHN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAoY3N0KSwgImtlZXAiKSA9PSAwKQotKwkgICAgY2Z1bi0+bWFjaGluZS0+ZnVuY3Rpb25fcmV0dXJuX3R5cGUgPSBpbmRpcmVjdF9icmFuY2hfa2VlcDsKLSsJICBlbHNlIGlmIChzdHJjbXAgKFRSRUVfU1RSSU5HX1BPSU5URVIgKGNzdCksICJ0aHVuayIpID09IDApCi0rCSAgICBjZnVuLT5tYWNoaW5lLT5mdW5jdGlvbl9yZXR1cm5fdHlwZSA9IGluZGlyZWN0X2JyYW5jaF90aHVuazsKLSsJICBlbHNlIGlmIChzdHJjbXAgKFRSRUVfU1RSSU5HX1BPSU5URVIgKGNzdCksICJ0aHVuay1pbmxpbmUiKSA9PSAwKQotKwkgICAgY2Z1bi0+bWFjaGluZS0+ZnVuY3Rpb25fcmV0dXJuX3R5cGUgPSBpbmRpcmVjdF9icmFuY2hfdGh1bmtfaW5saW5lOwotKwkgIGVsc2UgaWYgKHN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAoY3N0KSwgInRodW5rLWV4dGVybiIpID09IDApCi0rCSAgICBjZnVuLT5tYWNoaW5lLT5mdW5jdGlvbl9yZXR1cm5fdHlwZSA9IGluZGlyZWN0X2JyYW5jaF90aHVua19leHRlcm47Ci0rCSAgZWxzZQotKwkgICAgZ2NjX3VucmVhY2hhYmxlICgpOwotKwl9Ci0rICAgICAgZWxzZQotKwljZnVuLT5tYWNoaW5lLT5mdW5jdGlvbl9yZXR1cm5fdHlwZSA9IGl4ODZfZnVuY3Rpb25fcmV0dXJuOwotKyAgICB9Ci0gfQotIAotIC8qIEVzdGFibGlzaCBhcHByb3ByaWF0ZSBiYWNrLWVuZCBjb250ZXh0IGZvciBwcm9jZXNzaW5nIHRoZSBmdW5jdGlvbgotQEAgLTExMDM2LDggKzExMDYxLDEyIEBAIHN0YXRpYyBpbnQgaW5kaXJlY3RfdGh1bmtzX2JuZF91c2VkOwotIC8qIEZpbGxzIGluIHRoZSBsYWJlbCBuYW1lIHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBpbmRpcmVjdCB0aHVuay4gICovCi0gCi0gc3RhdGljIHZvaWQKLS1pbmRpcmVjdF90aHVua19uYW1lIChjaGFyIG5hbWVbMzJdLCBpbnQgcmVnbm8sIGJvb2wgbmVlZF9ibmRfcCkKLStpbmRpcmVjdF90aHVua19uYW1lIChjaGFyIG5hbWVbMzJdLCBpbnQgcmVnbm8sIGJvb2wgbmVlZF9ibmRfcCwKLSsJCSAgICAgYm9vbCByZXRfcCkKLSB7Ci0rICBpZiAocmVnbm8gPj0gMCAmJiByZXRfcCkKLSsgICAgZ2NjX3VucmVhY2hhYmxlICgpOwotKwotICAgaWYgKFVTRV9ISURERU5fTElOS09OQ0UpCi0gICAgIHsKLSAgICAgICBjb25zdCBjaGFyICpibmQgPSBuZWVkX2JuZF9wID8gIl9ibmQiIDogIiI7Ci1AQCAtMTEwNTIsNyArMTEwODEsMTAgQEAgaW5kaXJlY3RfdGh1bmtfbmFtZSAoY2hhciBuYW1lWzMyXSwgaW50IHJlZ25vLCBib29sIG5lZWRfYm5kX3ApCi0gCQkgICBibmQsIHJlZ19wcmVmaXgsIHJlZ19uYW1lc1tyZWdub10pOwotIAl9Ci0gICAgICAgZWxzZQotLQlzcHJpbnRmIChuYW1lLCAiX194ODZfaW5kaXJlY3RfdGh1bmslcyIsIGJuZCk7Ci0rCXsKLSsJICBjb25zdCBjaGFyICpyZXQgPSByZXRfcCA/ICJyZXR1cm4iIDogImluZGlyZWN0IjsKLSsJICBzcHJpbnRmIChuYW1lLCAiX194ODZfJXNfdGh1bmslcyIsIHJldCwgYm5kKTsKLSsJfQotICAgICB9Ci0gICBlbHNlCi0gICAgIHsKLUBAIC0xMTA2NSwxMCArMTEwOTcsMjAgQEAgaW5kaXJlY3RfdGh1bmtfbmFtZSAoY2hhciBuYW1lWzMyXSwgaW50IHJlZ25vLCBib29sIG5lZWRfYm5kX3ApCi0gCX0KLSAgICAgICBlbHNlCi0gCXsKLS0JICBpZiAobmVlZF9ibmRfcCkKLS0JICAgIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAobmFtZSwgIkxJVEIiLCAwKTsKLSsJICBpZiAocmV0X3ApCi0rCSAgICB7Ci0rCSAgICAgIGlmIChuZWVkX2JuZF9wKQotKwkJQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMIChuYW1lLCAiTFJUQiIsIDApOwotKwkgICAgICBlbHNlCi0rCQlBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwgKG5hbWUsICJMUlQiLCAwKTsKLSsJICAgIH0KLSAJICBlbHNlCi0tCSAgICBBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwgKG5hbWUsICJMSVQiLCAwKTsKLSsJICAgIHsKLSsJICAgICAgaWYgKG5lZWRfYm5kX3ApCi0rCQlBU01fR0VORVJBVEVfSU5URVJOQUxfTEFCRUwgKG5hbWUsICJMSVRCIiwgMCk7Ci0rCSAgICAgIGVsc2UKLSsJCUFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAobmFtZSwgIkxJVCIsIDApOwotKwkgICAgfQotIAl9Ci0gICAgIH0KLSB9Ci1AQCAtMTExNjMsNyArMTEyMDUsNyBAQCBvdXRwdXRfaW5kaXJlY3RfdGh1bmtfZnVuY3Rpb24gKGJvb2wgbmVlZF9ibmRfcCwgaW50IHJlZ25vKQotICAgdHJlZSBkZWNsOwotIAotICAgLyogQ3JlYXRlIF9feDg2X2luZGlyZWN0X3RodW5rL19feDg2X2luZGlyZWN0X3RodW5rX2JuZC4gICovCi0tICBpbmRpcmVjdF90aHVua19uYW1lIChuYW1lLCByZWdubywgbmVlZF9ibmRfcCk7Ci0rICBpbmRpcmVjdF90aHVua19uYW1lIChuYW1lLCByZWdubywgbmVlZF9ibmRfcCwgZmFsc2UpOwotICAgZGVjbCA9IGJ1aWxkX2RlY2wgKEJVSUxUSU5TX0xPQ0FUSU9OLCBGVU5DVElPTl9ERUNMLAotIAkJICAgICBnZXRfaWRlbnRpZmllciAobmFtZSksCi0gCQkgICAgIGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAodm9pZF90eXBlX25vZGUsIE5VTExfVFJFRSkpOwotQEAgLTExMjA2LDYgKzExMjQ4LDM2IEBAIG91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbiAoYm9vbCBuZWVkX2JuZF9wLCBpbnQgcmVnbm8pCi0gCUFTTV9PVVRQVVRfTEFCRUwgKGFzbV9vdXRfZmlsZSwgbmFtZSk7Ci0gICAgICAgfQotIAotKyAgaWYgKHJlZ25vIDwgMCkKLSsgICAgewotKyAgICAgIC8qIENyZWF0ZSBhbGlhcyBmb3IgX194ODYucmV0dXJuX3RodW5rL19feDg2LnJldHVybl90aHVua19ibmQuICAqLwotKyAgICAgIGNoYXIgYWxpYXNbMzJdOwotKwotKyAgICAgIGluZGlyZWN0X3RodW5rX25hbWUgKGFsaWFzLCByZWdubywgbmVlZF9ibmRfcCwgdHJ1ZSk7Ci0rI2lmIFRBUkdFVF9NQUNITwotKyAgICAgIGlmIChUQVJHRVRfTUFDSE8pCi0rCXsKLSsJICBmcHV0cyAoIlx0LndlYWtfZGVmaW5pdGlvblx0IiwgYXNtX291dF9maWxlKTsKLSsJICBhc3NlbWJsZV9uYW1lIChhc21fb3V0X2ZpbGUsIGFsaWFzKTsKLSsJICBmcHV0cyAoIlxuXHQucHJpdmF0ZV9leHRlcm5cdCIsIGFzbV9vdXRfZmlsZSk7Ci0rCSAgYXNzZW1ibGVfbmFtZSAoYXNtX291dF9maWxlLCBhbGlhcyk7Ci0rCSAgcHV0YyAoJ1xuJywgYXNtX291dF9maWxlKTsKLSsJICBBU01fT1VUUFVUX0xBQkVMIChhc21fb3V0X2ZpbGUsIGFsaWFzKTsKLSsJfQotKyNlbHNlCi0rICAgICAgQVNNX09VVFBVVF9ERUYgKGFzbV9vdXRfZmlsZSwgYWxpYXMsIG5hbWUpOwotKyAgICAgIGlmIChVU0VfSElEREVOX0xJTktPTkNFKQotKwl7Ci0rCSAgZnB1dHMgKCJcdC5nbG9ibFx0IiwgYXNtX291dF9maWxlKTsKLSsJICBhc3NlbWJsZV9uYW1lIChhc21fb3V0X2ZpbGUsIGFsaWFzKTsKLSsJICBwdXRjICgnXG4nLCBhc21fb3V0X2ZpbGUpOwotKwkgIGZwdXRzICgiXHQuaGlkZGVuXHQiLCBhc21fb3V0X2ZpbGUpOwotKwkgIGFzc2VtYmxlX25hbWUgKGFzbV9vdXRfZmlsZSwgYWxpYXMpOwotKwkgIHB1dGMgKCdcbicsIGFzbV9vdXRfZmlsZSk7Ci0rCX0KLSsjZW5kaWYKLSsgICAgfQotKwotICAgREVDTF9JTklUSUFMIChkZWNsKSA9IG1ha2Vfbm9kZSAoQkxPQ0spOwotICAgY3VycmVudF9mdW5jdGlvbl9kZWNsID0gZGVjbDsKLSAgIGFsbG9jYXRlX3N0cnVjdF9mdW5jdGlvbiAoZGVjbCwgZmFsc2UpOwotQEAgLTI3Njg3LDcgKzI3NzU5LDcgQEAgaXg4Nl9vdXRwdXRfaW5kaXJlY3RfYnJhbmNoX3ZpYV9yZWcgKHJ0eCBjYWxsX29wLCBib29sIHNpYmNhbGxfcCkKLSAJICBlbHNlCi0gCSAgICBpbmRpcmVjdF90aHVua3NfdXNlZCB8PSAxIDw8IGk7Ci0gCX0KLS0gICAgICBpbmRpcmVjdF90aHVua19uYW1lICh0aHVua19uYW1lX2J1ZiwgcmVnbm8sIG5lZWRfYm5kX3ApOwotKyAgICAgIGluZGlyZWN0X3RodW5rX25hbWUgKHRodW5rX25hbWVfYnVmLCByZWdubywgbmVlZF9ibmRfcCwgZmFsc2UpOwotICAgICAgIHRodW5rX25hbWUgPSB0aHVua19uYW1lX2J1ZjsKLSAgICAgfQotICAgZWxzZQotQEAgLTI3Nzk2LDcgKzI3ODY4LDcgQEAgaXg4Nl9vdXRwdXRfaW5kaXJlY3RfYnJhbmNoX3ZpYV9wdXNoIChydHggY2FsbF9vcCwgY29uc3QgY2hhciAqeGFzbSwKLSAJICBlbHNlCi0gCSAgICBpbmRpcmVjdF90aHVua19uZWVkZWQgPSB0cnVlOwotIAl9Ci0tICAgICAgaW5kaXJlY3RfdGh1bmtfbmFtZSAodGh1bmtfbmFtZV9idWYsIHJlZ25vLCBuZWVkX2JuZF9wKTsKLSsgICAgICBpbmRpcmVjdF90aHVua19uYW1lICh0aHVua19uYW1lX2J1ZiwgcmVnbm8sIG5lZWRfYm5kX3AsIGZhbHNlKTsKLSAgICAgICB0aHVua19uYW1lID0gdGh1bmtfbmFtZV9idWY7Ci0gICAgIH0KLSAgIGVsc2UKLUBAIC0yNzkzMSw2ICsyODAwMyw0NiBAQCBpeDg2X291dHB1dF9pbmRpcmVjdF9qbXAgKHJ0eCBjYWxsX29wLCBib29sIHJldF9wKQotICAgICByZXR1cm4gIiUham1wXHQlQTAiOwotIH0KLSAKLSsvKiBPdXRwdXQgZnVuY3Rpb24gcmV0dXJuLiAgQ0FMTF9PUCBpcyB0aGUganVtcCB0YXJnZXQuICBBZGQgYSBSRVAKLSsgICBwcmVmaXggdG8gUkVUIGlmIExPTkdfUCBpcyB0cnVlIGFuZCBmdW5jdGlvbiByZXR1cm4gaXMga2VwdC4gICovCi0rCi0rY29uc3QgY2hhciAqCi0raXg4Nl9vdXRwdXRfZnVuY3Rpb25fcmV0dXJuIChib29sIGxvbmdfcCkKLSt7Ci0rICBpZiAoY2Z1bi0+bWFjaGluZS0+ZnVuY3Rpb25fcmV0dXJuX3R5cGUgIT0gaW5kaXJlY3RfYnJhbmNoX2tlZXApCi0rICAgIHsKLSsgICAgICBjaGFyIHRodW5rX25hbWVbMzJdOwotKyAgICAgIGJvb2wgbmVlZF9ibmRfcCA9IGl4ODZfYm5kX3ByZWZpeGVkX2luc25fcCAoY3VycmVudF9vdXRwdXRfaW5zbik7Ci0rCi0rICAgICAgaWYgKGNmdW4tPm1hY2hpbmUtPmZ1bmN0aW9uX3JldHVybl90eXBlCi0rCSAgIT0gaW5kaXJlY3RfYnJhbmNoX3RodW5rX2lubGluZSkKLSsJewotKwkgIGJvb2wgbmVlZF90aHVuayA9IChjZnVuLT5tYWNoaW5lLT5mdW5jdGlvbl9yZXR1cm5fdHlwZQotKwkJCSAgICAgPT0gaW5kaXJlY3RfYnJhbmNoX3RodW5rKTsKLSsJICBpbmRpcmVjdF90aHVua19uYW1lICh0aHVua19uYW1lLCAtMSwgbmVlZF9ibmRfcCwgdHJ1ZSk7Ci0rCSAgaWYgKG5lZWRfYm5kX3ApCi0rCSAgICB7Ci0rCSAgICAgIGluZGlyZWN0X3RodW5rX2JuZF9uZWVkZWQgfD0gbmVlZF90aHVuazsKLSsJICAgICAgZnByaW50ZiAoYXNtX291dF9maWxlLCAiXHRibmQgam1wXHQlc1xuIiwgdGh1bmtfbmFtZSk7Ci0rCSAgICB9Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICBpbmRpcmVjdF90aHVua19uZWVkZWQgfD0gbmVlZF90aHVuazsKLSsJICAgICAgZnByaW50ZiAoYXNtX291dF9maWxlLCAiXHRqbXBcdCVzXG4iLCB0aHVua19uYW1lKTsKLSsJICAgIH0KLSsJfQotKyAgICAgIGVsc2UKLSsJb3V0cHV0X2luZGlyZWN0X3RodW5rIChuZWVkX2JuZF9wLCAtMSk7Ci0rCi0rICAgICAgcmV0dXJuICIiOwotKyAgICB9Ci0rCi0rICBpZiAoIWxvbmdfcCB8fCBpeDg2X2JuZF9wcmVmaXhlZF9pbnNuX3AgKGN1cnJlbnRfb3V0cHV0X2luc24pKQotKyAgICByZXR1cm4gIiUhcmV0IjsKLSsKLSsgIHJldHVybiAicmVwJTsgcmV0IjsKLSt9Ci0rCi0gLyogT3V0cHV0IHRoZSBhc3NlbWJseSBmb3IgYSBjYWxsIGluc3RydWN0aW9uLiAgKi8KLSAKLSBjb25zdCBjaGFyICoKLUBAIC00NTQ2MSw2ICs0NTU3MywyOCBAQCBpeDg2X2hhbmRsZV9mbmRlY2xfYXR0cmlidXRlICh0cmVlICpub2RlLCB0cmVlIG5hbWUsIHRyZWUgYXJncywgaW50LAotIAl9Ci0gICAgIH0KLSAKLSsgIGlmIChpc19hdHRyaWJ1dGVfcCAoImZ1bmN0aW9uX3JldHVybiIsIG5hbWUpKQotKyAgICB7Ci0rICAgICAgdHJlZSBjc3QgPSBUUkVFX1ZBTFVFIChhcmdzKTsKLSsgICAgICBpZiAoVFJFRV9DT0RFIChjc3QpICE9IFNUUklOR19DU1QpCi0rCXsKLSsJICB3YXJuaW5nIChPUFRfV2F0dHJpYnV0ZXMsCi0rCQkgICAiJXFFIGF0dHJpYnV0ZSByZXF1aXJlcyBhIHN0cmluZyBjb25zdGFudCBhcmd1bWVudCIsCi0rCQkgICBuYW1lKTsKLSsJICAqbm9fYWRkX2F0dHJzID0gdHJ1ZTsKLSsJfQotKyAgICAgIGVsc2UgaWYgKHN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAoY3N0KSwgImtlZXAiKSAhPSAwCi0rCSAgICAgICAmJiBzdHJjbXAgKFRSRUVfU1RSSU5HX1BPSU5URVIgKGNzdCksICJ0aHVuayIpICE9IDAKLSsJICAgICAgICYmIHN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAoY3N0KSwgInRodW5rLWlubGluZSIpICE9IDAKLSsJICAgICAgICYmIHN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAoY3N0KSwgInRodW5rLWV4dGVybiIpICE9IDApCi0rCXsKLSsJICB3YXJuaW5nIChPUFRfV2F0dHJpYnV0ZXMsCi0rCQkgICAiYXJndW1lbnQgdG8gJXFFIGF0dHJpYnV0ZSBpcyBub3QgIgotKwkJICAgIihrZWVwfHRodW5rfHRodW5rLWlubGluZXx0aHVuay1leHRlcm4pIiwgbmFtZSk7Ci0rCSAgKm5vX2FkZF9hdHRycyA9IHRydWU7Ci0rCX0KLSsgICAgfQotKwotICAgcmV0dXJuIE5VTExfVFJFRTsKLSB9Ci0gCi1AQCAtNDk2OTAsNiArNDk4MjQsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9zcGVjIGl4ODZfYXR0cmlidXRlX3RhYmxlW10gPQotICAgICBpeDg2X2hhbmRsZV9jYWxsZWVfcG9wX2FnZ3JlZ2F0ZV9yZXR1cm4sIHRydWUgfSwKLSAgIHsgImluZGlyZWN0X2JyYW5jaCIsIDEsIDEsIHRydWUsIGZhbHNlLCBmYWxzZSwKLSAgICAgaXg4Nl9oYW5kbGVfZm5kZWNsX2F0dHJpYnV0ZSwgZmFsc2UgfSwKLSsgIHsgImZ1bmN0aW9uX3JldHVybiIsIDEsIDEsIHRydWUsIGZhbHNlLCBmYWxzZSwKLSsgICAgaXg4Nl9oYW5kbGVfZm5kZWNsX2F0dHJpYnV0ZSwgZmFsc2UgfSwKLSAKLSAgIC8qIEVuZCBlbGVtZW50LiAgKi8KLSAgIHsgTlVMTCwgICAgICAgIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIE5VTEwsIGZhbHNlIH0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5oIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaAotaW5kZXggOWRjY2RiMC4uYjM0YmMxMSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmgKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmgKLUBAIC0yNTc5LDYgKzI1NzksOSBAQCBzdHJ1Y3QgR1RZKCgpKSBtYWNoaW5lX2Z1bmN0aW9uIHsKLSAgICAgICJpbmRpcmVjdF9qdW1wIiBvciAidGFibGVqdW1wIi4gICovCi0gICBCT09MX0JJVEZJRUxEIGhhc19sb2NhbF9pbmRpcmVjdF9qdW1wIDogMTsKLSAKLSsgIC8qIEhvdyB0byBnZW5lcmF0ZSBmdW5jdGlvbiByZXR1cm4uICAqLwotKyAgRU5VTV9CSVRGSUVMRChpbmRpcmVjdF9icmFuY2gpIGZ1bmN0aW9uX3JldHVybl90eXBlIDogMzsKLSsKLSAgIC8qIElmIHRydWUsIHRoZXJlIGlzIHJlZ2lzdGVyIGF2YWlsYWJsZSBmb3IgYXJndW1lbnQgcGFzc2luZy4gIFRoaXMKLSAgICAgIGlzIHVzZWQgb25seSBpbiBpeDg2X2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsIGJ5IDMyLWJpdCB0byBkZXRlcm1pbmUKLSAgICAgIGlmIHRoZXJlIGlzIHNjcmF0Y2ggcmVnaXN0ZXIgYXZhaWxhYmxlIGZvciBpbmRpcmVjdCBzaWJjYWxsLiAgSW4KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZCBiL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kCi1pbmRleCAxNTNlMTYyLi4yZGE2NzFlIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kCi1AQCAtMTI0ODksNyArMTI0ODksNyBAQAotIChkZWZpbmVfaW5zbiAic2ltcGxlX3JldHVybl9pbnRlcm5hbCIKLSAgIFsoc2ltcGxlX3JldHVybildCi0gICAicmVsb2FkX2NvbXBsZXRlZCIKLS0gICIlIXJldCIKLSsgICIqIHJldHVybiBpeDg2X291dHB1dF9mdW5jdGlvbl9yZXR1cm4gKGZhbHNlKTsiCi0gICBbKHNldF9hdHRyICJsZW5ndGgiICIxIikKLSAgICAoc2V0X2F0dHIgImF0b21fdW5pdCIgImpldSIpCi0gICAgKHNldF9hdHRyICJsZW5ndGhfaW1tZWRpYXRlIiAiMCIpCi1AQCAtMTI1MDMsMTIgKzEyNTAzLDcgQEAKLSAgIFsoc2ltcGxlX3JldHVybikKLSAgICAodW5zcGVjIFsoY29uc3RfaW50IDApXSBVTlNQRUNfUkVQKV0KLSAgICJyZWxvYWRfY29tcGxldGVkIgotLXsKLS0gIGlmIChpeDg2X2JuZF9wcmVmaXhlZF9pbnNuX3AgKGluc24pKQotLSAgICByZXR1cm4gIiUhcmV0IjsKLS0KLS0gIHJldHVybiAicmVwJTsgcmV0IjsKLS19Ci0rICAiKiByZXR1cm4gaXg4Nl9vdXRwdXRfZnVuY3Rpb25fcmV0dXJuICh0cnVlKTsiCi0gICBbKHNldF9hdHRyICJsZW5ndGgiICIyIikKLSAgICAoc2V0X2F0dHIgImF0b21fdW5pdCIgImpldSIpCi0gICAgKHNldF9hdHRyICJsZW5ndGhfaW1tZWRpYXRlIiAiMCIpCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYub3B0IGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYub3B0Ci1pbmRleCA1ZmZhMzM0Li5hZDU5MTZmIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYub3B0Ci0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5vcHQKLUBAIC05MDIsOSArOTAyLDEzIEBAIG1pbmRpcmVjdC1icmFuY2g9Ci0gVGFyZ2V0IFJlcG9ydCBSZWplY3ROZWdhdGl2ZSBKb2luZWQgRW51bShpbmRpcmVjdF9icmFuY2gpIFZhcihpeDg2X2luZGlyZWN0X2JyYW5jaCkgSW5pdChpbmRpcmVjdF9icmFuY2hfa2VlcCkKLSBDb252ZXJ0IGluZGlyZWN0IGNhbGwgYW5kIGp1bXAgdG8gY2FsbCBhbmQgcmV0dXJuIHRodW5rcy4KLSAKLSttZnVuY3Rpb24tcmV0dXJuPQotK1RhcmdldCBSZXBvcnQgUmVqZWN0TmVnYXRpdmUgSm9pbmVkIEVudW0oaW5kaXJlY3RfYnJhbmNoKSBWYXIoaXg4Nl9mdW5jdGlvbl9yZXR1cm4pIEluaXQoaW5kaXJlY3RfYnJhbmNoX2tlZXApCi0rQ29udmVydCBmdW5jdGlvbiByZXR1cm4gdG8gY2FsbCBhbmQgcmV0dXJuIHRodW5rLgotKwotIEVudW0KLSBOYW1lKGluZGlyZWN0X2JyYW5jaCkgVHlwZShlbnVtIGluZGlyZWN0X2JyYW5jaCkKLS1Lbm93biBpbmRpcmVjdCBicmFuY2ggY2hvaWNlcyAoZm9yIHVzZSB3aXRoIHRoZSAtbWluZGlyZWN0LWJyYW5jaD0gb3B0aW9uKToKLStLbm93biBpbmRpcmVjdCBicmFuY2ggY2hvaWNlcyAoZm9yIHVzZSB3aXRoIHRoZSAtbWluZGlyZWN0LWJyYW5jaD0vLW1mdW5jdGlvbi1yZXR1cm49IG9wdGlvbnMpOgotIAotIEVudW1WYWx1ZQotIEVudW0oaW5kaXJlY3RfYnJhbmNoKSBTdHJpbmcoa2VlcCkgVmFsdWUoaW5kaXJlY3RfYnJhbmNoX2tlZXApCi1kaWZmIC0tZ2l0IGEvZ2NjL2RvYy9leHRlbmQudGV4aSBiL2djYy9kb2MvZXh0ZW5kLnRleGkKLWluZGV4IDg2NjhkYWUuLjJjYjZiZDEgMTAwNjQ0Ci0tLS0gYS9nY2MvZG9jL2V4dGVuZC50ZXhpCi0rKysgYi9nY2MvZG9jL2V4dGVuZC50ZXhpCi1AQCAtNTQyOSw2ICs1NDI5LDE1IEBAIGNhbGwgYW5kIGp1bXAgdG8gY2FsbCBhbmQgcmV0dXJuIHRodW5rLiAgQHNhbXB7dGh1bmstaW5saW5lfSBjb252ZXJ0cwotIGluZGlyZWN0IGNhbGwgYW5kIGp1bXAgdG8gaW5saW5lZCBjYWxsIGFuZCByZXR1cm4gdGh1bmsuCi0gQHNhbXB7dGh1bmstZXh0ZXJufSBjb252ZXJ0cyBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHRvIGV4dGVybmFsIGNhbGwKLSBhbmQgcmV0dXJuIHRodW5rIHByb3ZpZGVkIGluIGEgc2VwYXJhdGUgb2JqZWN0IGZpbGUuCi0rCi0rQGl0ZW0gZnVuY3Rpb25fcmV0dXJuKCJAdmFye2Nob2ljZX0iKQotK0BjaW5kZXggQGNvZGV7ZnVuY3Rpb25fcmV0dXJufSBmdW5jdGlvbiBhdHRyaWJ1dGUsIHg4NgotK09uIHg4NiB0YXJnZXRzLCB0aGUgQGNvZGV7ZnVuY3Rpb25fcmV0dXJufSBhdHRyaWJ1dGUgY2F1c2VzIHRoZSBjb21waWxlcgotK3RvIGNvbnZlcnQgZnVuY3Rpb24gcmV0dXJuIHdpdGggQHZhcntjaG9pY2V9LiAgQHNhbXB7a2VlcH0ga2VlcHMgZnVuY3Rpb24KLStyZXR1cm4gdW5tb2RpZmllZC4gIEBzYW1we3RodW5rfSBjb252ZXJ0cyBmdW5jdGlvbiByZXR1cm4gdG8gY2FsbCBhbmQKLStyZXR1cm4gdGh1bmsuICBAc2FtcHt0aHVuay1pbmxpbmV9IGNvbnZlcnRzIGZ1bmN0aW9uIHJldHVybiB0byBpbmxpbmVkCi0rY2FsbCBhbmQgcmV0dXJuIHRodW5rLiAgQHNhbXB7dGh1bmstZXh0ZXJufSBjb252ZXJ0cyBmdW5jdGlvbiByZXR1cm4gdG8KLStleHRlcm5hbCBjYWxsIGFuZCByZXR1cm4gdGh1bmsgcHJvdmlkZWQgaW4gYSBzZXBhcmF0ZSBvYmplY3QgZmlsZS4KLSBAZW5kIHRhYmxlCi0gCi0gT24gdGhlIHg4NiwgdGhlIGlubGluZXIgZG9lcyBub3QgaW5saW5lIGEKLWRpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQotaW5kZXggZmY5YTE5NC4uZmE2M2RjNSAxMDA2NDQKLS0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKLSsrKyBiL2djYy9kb2MvaW52b2tlLnRleGkKLUBAIC0xMTY5LDcgKzExNjksOCBAQCBTZWUgUlMvNjAwMCBhbmQgUG93ZXJQQyBPcHRpb25zLgotIC1tc3NlMmF2eCAtbWZlbnRyeSAtbXJlY29yZC1tY291bnQgLW1ub3AtbWNvdW50IC1tOGJpdC1pZGl2IEBnb2wKLSAtbWF2eDI1Ni1zcGxpdC11bmFsaWduZWQtbG9hZCAtbWF2eDI1Ni1zcGxpdC11bmFsaWduZWQtc3RvcmUgQGdvbAotIC1tYWxpZ24tZGF0YT1AdmFye3R5cGV9IC1tc3RhY2stcHJvdGVjdG9yLWd1YXJkPUB2YXJ7Z3VhcmR9IEBnb2wKLS0tbW1pdGlnYXRlLXJvcCAtbWluZGlyZWN0LWJyYW5jaD1AdmFye2Nob2ljZX19Ci0rLW1taXRpZ2F0ZS1yb3AgLW1pbmRpcmVjdC1icmFuY2g9QHZhcntjaG9pY2V9IEBnb2wKLSstbWZ1bmN0aW9uLXJldHVybj1AdmFye2Nob2ljZX19Ci0gCi0gQGVtcGh7eDg2IFdpbmRvd3MgT3B0aW9uc30KLSBAZ2Njb3B0bGlzdHstbWNvbnNvbGUgLW1jeWd3aW4gLW1uby1jeWd3aW4gLW1kbGwgQGdvbAotQEAgLTI0MjI5LDYgKzI0MjMwLDE3IEBAIHRvIGV4dGVybmFsIGNhbGwgYW5kIHJldHVybiB0aHVuayBwcm92aWRlZCBpbiBhIHNlcGFyYXRlIG9iamVjdCBmaWxlLgotIFlvdSBjYW4gY29udHJvbCB0aGlzIGJlaGF2aW9yIGZvciBhIHNwZWNpZmljIGZ1bmN0aW9uIGJ5IHVzaW5nIHRoZQotIGZ1bmN0aW9uIGF0dHJpYnV0ZSBAY29kZXtpbmRpcmVjdF9icmFuY2h9LiAgQHhyZWZ7RnVuY3Rpb24gQXR0cmlidXRlc30uCi0gCi0rQGl0ZW0gLW1mdW5jdGlvbi1yZXR1cm49QHZhcntjaG9pY2V9Ci0rQG9waW5kZXggLW1mdW5jdGlvbi1yZXR1cm4KLStDb252ZXJ0IGZ1bmN0aW9uIHJldHVybiB3aXRoIEB2YXJ7Y2hvaWNlfS4gIFRoZSBkZWZhdWx0IGlzIEBzYW1we2tlZXB9LAotK3doaWNoIGtlZXBzIGZ1bmN0aW9uIHJldHVybiB1bm1vZGlmaWVkLiAgQHNhbXB7dGh1bmt9IGNvbnZlcnRzIGZ1bmN0aW9uCi0rcmV0dXJuIHRvIGNhbGwgYW5kIHJldHVybiB0aHVuay4gIEBzYW1we3RodW5rLWlubGluZX0gY29udmVydHMgZnVuY3Rpb24KLStyZXR1cm4gdG8gaW5saW5lZCBjYWxsIGFuZCByZXR1cm4gdGh1bmsuICBAc2FtcHt0aHVuay1leHRlcm59IGNvbnZlcnRzCi0rZnVuY3Rpb24gcmV0dXJuIHRvIGV4dGVybmFsIGNhbGwgYW5kIHJldHVybiB0aHVuayBwcm92aWRlZCBpbiBhIHNlcGFyYXRlCi0rb2JqZWN0IGZpbGUuICBZb3UgY2FuIGNvbnRyb2wgdGhpcyBiZWhhdmlvciBmb3IgYSBzcGVjaWZpYyBmdW5jdGlvbiBieQotK3VzaW5nIHRoZSBmdW5jdGlvbiBhdHRyaWJ1dGUgQGNvZGV7ZnVuY3Rpb25fcmV0dXJufS4KLStAeHJlZntGdW5jdGlvbiBBdHRyaWJ1dGVzfS4KLSsKLSBAZW5kIHRhYmxlCi0gCi0gVGhlc2UgQHNhbXB7LW19IHN3aXRjaGVzIGFyZSBzdXBwb3J0ZWQgaW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jCi1pbmRleCBkOTgzZTFjLi5lMzY1ZWY1IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotQEAgLTExLDcgKzExLDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIGRpc3BhdGNoKG9mZnNldCk7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYwotaW5kZXggNThmMDliNC4uMDVhNTFhZCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMi5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLUBAIC0xMSw3ICsxMSw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICBkaXNwYXRjaFtvZmZzZXRdKG9mZnNldCk7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYwotaW5kZXggZjIwZDM1Yy4uM2MwZDRjMyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMy5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLUBAIC0xMiw3ICsxMiw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYwotaW5kZXggMGVmZjhmYi4uMTRkNGVmNiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLUBAIC0xMiw3ICsxMiw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTUuYwotaW5kZXggYTI1YjIwZC4uYjQ4MzZjMyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTUuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsiIH0gKi8KLSAKLSBleHRlcm4gdm9pZCBiYXIgKHZvaWQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTYuYwotaW5kZXggY2ZmMTE0YS4uMWYwNmJkMSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTYuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsiIH0gKi8KLSAKLSBleHRlcm4gdm9pZCBiYXIgKHZvaWQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTcuYwotaW5kZXggYWZkYjYwMC4uYmM2YjQ3YSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTcuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotIAotIHZvaWQgZnVuYzAgKHZvaWQpOwotIHZvaWQgZnVuYzEgKHZvaWQpOwotQEAgLTM1LDcgKzM1LDcgQEAgYmFyIChpbnQgaSkKLSAgICAgfQotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpcLkxcWzAtOVxdK1xcKCwlIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpcLkxcWzAtOVxdK1xcKCwlIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jCi1pbmRleCBkNjRkOTc4Li4yMjU3YmUzIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLUBAIC0xNCw3ICsxNCw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICBkaXNwYXRjaChvZmZzZXQpOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMi5jCi1pbmRleCA5MzA2NzQ1Li5lOWNmZGM1IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMi5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLUBAIC0xMiw3ICsxMiw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICBkaXNwYXRjaFtvZmZzZXRdKG9mZnNldCk7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmMKLWluZGV4IDk3NzQ0ZDYuLmY5MzhkYjAgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTMuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotQEAgLTE0LDcgKzE0LDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci00LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTQuYwotaW5kZXggYmZjZTNlYS4uNGU1ODU5OSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTQuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1AQCAtMTMsNyArMTMsNyBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgcmV0dXJuIDA7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiam1wXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjYWxsXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNS5jCi1pbmRleCAwODMzNjA2Li5iOGQ1MDI0IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci01LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLUBAIC0xNCw3ICsxNCw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmMKLWluZGV4IDJlYmEwZmIuLjQ1NWFkYWIgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotQEAgLTEzLDcgKzEzLDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci03LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTcuYwotaW5kZXggZjU4NDI3ZS4uNDU5NWI4NCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTcuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZuby1waWMiIH0gKi8KLSAKLSB2b2lkIGZ1bmMwICh2b2lkKTsKLSB2b2lkIGZ1bmMxICh2b2lkKTsKLUBAIC0zNiw3ICszNiw3IEBAIGJhciAoaW50IGkpCi0gICAgIH0KLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci04LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTguYwotaW5kZXggNTY0ZWQzOS4uZDczMGQzMSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItOC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTguYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSAKLSB2b2lkIGZ1bmMwICh2b2lkKTsKLSB2b2lkIGZ1bmMxICh2b2lkKTsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTEuYwotaW5kZXggNTBmYmVlMi4uNWUzZTExOCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZjaGVjay1wb2ludGVyLWJvdW5kcyAtbW1weCAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZjaGVjay1wb2ludGVyLWJvdW5kcyAtbW1weCAtZm5vLXBpYyIgfSAqLwotIAotIHZvaWQgKCpkaXNwYXRjaCkgKGNoYXIgKik7Ci0gY2hhciBidWZbMTBdOwotQEAgLTEwLDcgKzEwLDcgQEAgZm9vICh2b2lkKQotICAgZGlzcGF0Y2ggKGJ1Zik7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua19ibmQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMi5jCi1pbmRleCAyOTc2ZTY3Li4yODAxYWE0IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZmNoZWNrLXBvaW50ZXItYm91bmRzIC1tbXB4IC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZmNoZWNrLXBvaW50ZXItYm91bmRzIC1tbXB4IC1mbm8tcGljIiB9ICovCi0gCi0gdm9pZCAoKmRpc3BhdGNoKSAoY2hhciAqKTsKLSBjaGFyIGJ1ZlsxMF07Ci1AQCAtMTEsNyArMTEsNyBAQCBmb28gKHZvaWQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rX2JuZCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMy5jCi1pbmRleCBkYTRiYzk4Li43MGI0ZmIzIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgKi0qLWxpbnV4KiAmJiB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZmNoZWNrLXBvaW50ZXItYm91bmRzIC1tbXB4IC1mcGljIC1mbm8tcGx0IiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZmNoZWNrLXBvaW50ZXItYm91bmRzIC1tbXB4IC1mcGljIC1mbm8tcGx0IiB9ICovCi0gCi0gdm9pZCBiYXIgKGNoYXIgKik7Ci0gY2hhciBidWZbMTBdOwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC00LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtNC5jCi1pbmRleCBjNjRkMTJlLi4zYmFmMDNlIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTQuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTQuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgKi0qLWxpbnV4KiAmJiB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZmNoZWNrLXBvaW50ZXItYm91bmRzIC1tbXB4IC1mcGljIC1mbm8tcGx0IiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZmNoZWNrLXBvaW50ZXItYm91bmRzIC1tbXB4IC1mcGljIC1mbm8tcGx0IiB9ICovCi0gCi0gdm9pZCBiYXIgKGNoYXIgKik7Ci0gY2hhciBidWZbMTBdOwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMS5jCi1pbmRleCA0OWYyN2I0Li5lZGViMjY0IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTEuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLUBAIC0xMSw3ICsxMSw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICBkaXNwYXRjaChvZmZzZXQpOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYwotaW5kZXggYTFlM2ViNi4uMWQwMDQxMyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1AQCAtMTEsNyArMTEsNyBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgZGlzcGF0Y2hbb2Zmc2V0XShvZmZzZXQpOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTMuYwotaW5kZXggMzk1NjM0ZS4uMDZlYmYxYyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1AQCAtMTIsNyArMTIsNyBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgcmV0dXJuIDA7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYwotaW5kZXggZmQzZjYzMy4uMWM4Zjk0NCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1AQCAtMTIsNyArMTIsNyBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgcmV0dXJuIDA7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTUuYwotaW5kZXggYmEyZjkyYi4uMjE3NDBhYyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCAqLSotbGludXgqIH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIiB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgYmFyICh2b2lkKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTYuYwotaW5kZXggMGM1YTJkNC4uYTc3YzFmNCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCAqLSotbGludXgqIH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIiB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgYmFyICh2b2lkKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTcuYwotaW5kZXggNjY1MjUyMy4uODZlOWZkMSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSAKLSB2b2lkIGZ1bmMwICh2b2lkKTsKLSB2b2lkIGZ1bmMxICh2b2lkKTsKLUBAIC0zNSw3ICszNSw3IEBAIGJhciAoaW50IGkpCi0gICAgIH0KLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmMKLWluZGV4IDY4YzBmZjcuLjNlY2RlODcgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotQEAgLTExLDcgKzExLDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIGRpc3BhdGNoKG9mZnNldCk7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMi5jCi1pbmRleCBlMmRhMWZjLi5kZjMyYTE5IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTIuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLUBAIC0xMSw3ICsxMSw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICBkaXNwYXRjaFtvZmZzZXRdKG9mZnNldCk7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMy5jCi1pbmRleCAyNDRmZWM3Li45NTQwOTk2IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTMuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTMuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLUBAIC0xMiw3ICsxMiw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDEgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmMKLWluZGV4IDEwN2ViZTMuLmYzZGI2ZTIgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNC5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotQEAgLTEyLDcgKzEyLDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTUuYwotaW5kZXggMTdiMDRlZi4uMGY2ODdjMyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS01LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS01LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCAqLSotbGludXgqIH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIiB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgYmFyICh2b2lkKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTYuYwotaW5kZXggZDllYjExMi4uYjI3YzZmYyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCAqLSotbGludXgqIH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIiB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgYmFyICh2b2lkKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTcuYwotaW5kZXggZDAyYjFkYy4uNzY0YTM3NSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSAKLSB2b2lkIGZ1bmMwICh2b2lkKTsKLSB2b2lkIGZ1bmMxICh2b2lkKTsKLUBAIC0zNSw3ICszNSw3IEBAIGJhciAoaW50IGkpCi0gICAgIH0KLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNzIyM2Y2NwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEuYwotQEAgLTAsMCArMSwxMyBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49dGh1bmsiIH0gKi8KLSsKLSt2b2lkCi0rZm9vICh2b2lkKQotK3sKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X3JldHVybl90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEwLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTAuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjNhNjcyN2IKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMC5jCi1AQCAtMCwwICsxLDIzIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj10aHVuay1pbmxpbmUgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSsKLStleHRlcm4gdm9pZCAoKmJhcikgKHZvaWQpOwotKwotK2ludAotK2ZvbyAodm9pZCkKLSt7Ci0rICBiYXIgKCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qX194ODZfcmV0dXJuX3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdGxmZW5jZX0gMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2JhciIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSAgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJfX3g4Nl9pbmRpcmVjdF90aHVuazoiIHsgdGFyZ2V0IHsgISB4MzIgfSB9ICB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHsgeDMyIH0gfSAgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4OiIgeyB0YXJnZXQgeyB4MzIgfSB9ICB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYjhmNjgxOAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTExLmMKLUBAIC0wLDAgKzEsMjMgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rLWV4dGVybiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotKwotK2V4dGVybiB2b2lkICgqYmFyKSAodm9pZCk7Ci0rCi0raW50Ci0rZm9vICh2b2lkKQotK3sKLSsgIGJhciAoKTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfcmV0dXJuX3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDEgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdGxmZW5jZX0gMSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9iYXIiIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJfX3g4Nl9pbmRpcmVjdF90aHVuazoiIHsgdGFyZ2V0IHsgISB4MzIgfSB9ICB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHsgeDMyIH0gfSAgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4OiIgeyB0YXJnZXQgeyB4MzIgfSB9ICB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMDFiMGEwMgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEyLmMKLUBAIC0wLDAgKzEsMjIgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSsKLStleHRlcm4gdm9pZCAoKmJhcikgKHZvaWQpOwotKwotK2ludAotK2ZvbyAodm9pZCkKLSt7Ci0rICBiYXIgKCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpfX3g4Nl9yZXR1cm5fdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0bGZlbmNlfSAxIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiX194ODZfaW5kaXJlY3RfdGh1bms6IiB7IHRhcmdldCB7ICEgeDMyIH0gfSAgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB7IHgzMiB9IH0gIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheDoiIHsgdGFyZ2V0IHsgeDMyIH0gfSAgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEzLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTMuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjRiNDk3YjUKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMy5jCi1AQCAtMCwwICsxLDIyIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotKwotK2V4dGVybiB2b2lkICgqYmFyKSAodm9pZCk7Ci0rZXh0ZXJuIGludCBmb28gKHZvaWQpIF9fYXR0cmlidXRlX18gKChmdW5jdGlvbl9yZXR1cm4oInRodW5rIikpKTsKLSsKLStpbnQKLStmb28gKHZvaWQpCi0rewotKyAgYmFyICgpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9yZXR1cm5fdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0bGZlbmNlfSAyIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/YmFyIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAzIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAzIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHsgeDMyIH0gfSAgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjRhZTRjNDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNC5jCi1AQCAtMCwwICsxLDIyIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtZm5vLXBpYyIgfSAqLwotKwotK2V4dGVybiB2b2lkICgqYmFyKSAodm9pZCk7Ci0rCi0rX19hdHRyaWJ1dGVfXyAoKGZ1bmN0aW9uX3JldHVybigidGh1bmstaW5saW5lIikpKQotK2ludAotK2ZvbyAodm9pZCkKLSt7Ci0rICBiYXIgKCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdHBhdXNlfSAxIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRsZmVuY2V9IDEgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpfX3g4Nl9yZXR1cm5fdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2JhciIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHsgeDMyIH0gfSAgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE1LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTUuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjViNWJjNzYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNS5jCi1AQCAtMCwwICsxLDIyIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPWtlZXAgLWZuby1waWMiIH0gKi8KLSsKLStleHRlcm4gdm9pZCAoKmJhcikgKHZvaWQpOwotKwotK19fYXR0cmlidXRlX18gKChmdW5jdGlvbl9yZXR1cm4oInRodW5rLWV4dGVybiIpLCBpbmRpcmVjdF9icmFuY2goInRodW5rIikpKQotK2ludAotK2ZvbyAodm9pZCkKLSt7Ci0rICBiYXIgKCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X3JldHVybl90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0bGZlbmNlfSAxIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/YmFyIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE2LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTYuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmExNmNhZDEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNi5jCi1AQCAtMCwwICsxLDE4IEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj10aHVuay1pbmxpbmUgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0rCi0rZXh0ZXJuIHZvaWQgKCpiYXIpICh2b2lkKTsKLSsKLStfX2F0dHJpYnV0ZV9fICgoZnVuY3Rpb25fcmV0dXJuKCJrZWVwIiksIGluZGlyZWN0X2JyYW5jaCgia2VlcCIpKSkKLStpbnQKLStmb28gKHZvaWQpCi0rewotKyAgYmFyICgpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJfX3g4Nl9yZXR1cm5fdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYzY2NTllMwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIuYwotQEAgLTAsMCArMSwxMyBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49dGh1bmstaW5saW5lIiB9ICovCi0rCi0rdm9pZAotK2ZvbyAodm9pZCkKLSt7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qX194ODZfcmV0dXJuX3RodW5rIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTMuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjBmN2YzODgKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0zLmMKLUBAIC0wLDAgKzEsMTIgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rLWV4dGVybiIgfSAqLwotKwotK3ZvaWQKLStmb28gKHZvaWQpCi0rewotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfcmV0dXJuX3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjlhZTM3ZTgKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay00LmMKLUBAIC0wLDAgKzEsMTIgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAiIH0gKi8KLSsKLSt2b2lkCi0rZm9vICh2b2lkKQotK3sKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpfX3g4Nl9yZXR1cm5fdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay01LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNGJkMGQyYQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTUuYwotQEAgLTAsMCArMSwxNSBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCIgfSAqLwotKwotK2V4dGVybiB2b2lkIGZvbyAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKGZ1bmN0aW9uX3JldHVybigidGh1bmsiKSkpOwotKwotK3ZvaWQKLStmb28gKHZvaWQpCi0rewotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfcmV0dXJuX3RodW5rIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0bGZlbmNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTYuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjA1Mzg0MWYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay02LmMKLUBAIC0wLDAgKzEsMTQgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAiIH0gKi8KLSsKLStfX2F0dHJpYnV0ZV9fICgoZnVuY3Rpb25fcmV0dXJuKCJ0aHVuay1pbmxpbmUiKSkpCi0rdm9pZAotK2ZvbyAodm9pZCkKLSt7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qX194ODZfcmV0dXJuX3RodW5rIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTcuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjI2MmU2NzgKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay03LmMKLUBAIC0wLDAgKzEsMTMgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAiIH0gKi8KLSsKLStfX2F0dHJpYnV0ZV9fICgoZnVuY3Rpb25fcmV0dXJuKCJ0aHVuay1leHRlcm4iKSkpCi0rdm9pZAotK2ZvbyAodm9pZCkKLSt7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9yZXR1cm5fdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay04LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstOC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYzE2NThlOQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTguYwotQEAgLTAsMCArMSwxNCBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49dGh1bmstaW5saW5lIiB9ICovCi0rCi0rZXh0ZXJuIHZvaWQgZm9vICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoZnVuY3Rpb25fcmV0dXJuKCJrZWVwIikpKTsKLSsKLSt2b2lkCi0rZm9vICh2b2lkKQotK3sKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpfX3g4Nl9yZXR1cm5fdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay05LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstOS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZmEyNGExZgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTkuYwotQEAgLTAsMCArMSwyNCBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49dGh1bmsgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSsKLStleHRlcm4gdm9pZCAoKmJhcikgKHZvaWQpOwotKwotK2ludAotK2ZvbyAodm9pZCkKLSt7Ci0rICBiYXIgKCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X3JldHVybl90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiX194ODZfaW5kaXJlY3RfdGh1bms6IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDEgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdGxmZW5jZX0gMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2JhciIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDIgeyB0YXJnZXQgeyB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRsZmVuY2V9IDIgeyB0YXJnZXQgeyB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeyB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDYteDg2LUFkZC1taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDA2LXg4Ni1BZGQtbWluZGlyZWN0LWJyYW5jaC1yZWdpc3Rlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQ3MzY5MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDYteDg2LUFkZC1taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTQ2ICswLDAgQEAKLUZyb20gM2YxYzM5ZmI1NDM4ODRkMzZlNzU5YTZkYzE5NmE4ZTkxNGViNGY3MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJILkouIEx1IiA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgNiBKYW4gMjAxOCAyMjoyOTo1NiAtMDgwMAotU3ViamVjdDogW1BBVENIIDA2LzEyXSB4ODY6IEFkZCAtbWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlcgotCi1BZGQgLW1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgdG8gZm9yY2UgaW5kaXJlY3QgYnJhbmNoIHZpYSByZWdpc3Rlci4KLVRoaXMgaXMgaW1wbGVtZW50ZWQgYnkgZGlzYWJsaW5nIHBhdHRlcm5zIG9mIGluZGlyZWN0IGJyYW5jaCB2aWEgbWVtb3J5LAotc2ltaWxhciB0byBUQVJHRVRfWDMyLgotCi0tbWluZGlyZWN0LWJyYW5jaD0gYW5kIC1tZnVuY3Rpb24tcmV0dXJuPSB0ZXN0cyBhcmUgdXBkYXRlZCB3aXRoCi0tbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciB0byBhdm9pZCBmYWxzZSB0ZXN0IGZhaWx1cmVzIHdoZW4KLS1taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIGlzIGFkZGVkIHRvIFJVTlRFU1RGTEFHUyBmb3IgIm1ha2UgY2hlY2siLgotCi1nY2MvCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JMjAxOC0wMS0xNCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotCi0JKiBjb25maWcvaTM4Ni9jb25zdHJhaW50cy5tZCAoQnMpOiBEaXNhbGxvdyBtZW1vcnkgb3BlcmFuZCBmb3IKLQktbWluZGlyZWN0LWJyYW5jaC1yZWdpc3Rlci4KLQkoQncpOiBMaWtld2lzZS4KLQkqIGNvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQgKGluZGlyZWN0X2JyYW5jaF9vcGVyYW5kKTogTGlrZXdpc2UuCi0JKEdPVF9tZW1vcnlfb3BlcmFuZCk6IExpa2V3aXNlLgotCShjYWxsX2luc25fb3BlcmFuZCk6IExpa2V3aXNlLgotCShzaWJjYWxsX2luc25fb3BlcmFuZCk6IExpa2V3aXNlLgotCShHT1QzMl9zeW1ib2xfb3BlcmFuZCk6IExpa2V3aXNlLgotCSogY29uZmlnL2kzODYvaTM4Ni5tZCAoaW5kaXJlY3RfanVtcCk6IENhbGwgY29udmVydF9tZW1vcnlfYWRkcmVzcwotCWZvciAtbWluZGlyZWN0LWJyYW5jaC1yZWdpc3Rlci4KLQkodGFibGVqdW1wKTogTGlrZXdpc2UuCi0JKCpzaWJjYWxsX21lbW9yeSk6IExpa2V3aXNlLgotCSgqc2liY2FsbF92YWx1ZV9tZW1vcnkpOiBMaWtld2lzZS4KLQlEaXNhbGxvdyBwZWVwaG9sZXMgb2YgaW5kaXJlY3QgY2FsbCBhbmQganVtcCB2aWEgbWVtb3J5IGZvcgotCS1taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyLgotCSgqY2FsbF9wb3ApOiBSZXBsYWNlIG0gd2l0aCBCdy4KLQkoKmNhbGxfdmFsdWVfcG9wKTogTGlrZXdpc2UuCi0JKCpzaWJjYWxsX3BvcF9tZW1vcnkpOiBSZXBsYWNlIG0gd2l0aCBCcy4KLQkqIGNvbmZpZy9pMzg2L2kzODYub3B0IChtaW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyKTogTmV3IG9wdGlvbi4KLQkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgLW1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgb3B0aW9uLgotCi1nY2MvdGVzdHN1aXRlLwotCi0JQmFja3BvcnQgZnJvbSBtYWlubGluZQotCTIwMTgtMDEtMTQgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLQotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYyAoZGctb3B0aW9ucyk6IEFkZAotCS1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTUuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay03LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTIuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtNC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTAuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTExLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTMuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE0LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstOS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1yZWdpc3Rlci0xLmM6IE5ldyB0ZXN0LgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTIuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItMy5jOiBMaWtld2lzZS4KLQotaTM4NjogUmVuYW1lIHRvIGl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyCi0KLVJlbmFtZSB0aGUgdmFyaWFibGUgZm9yIC1taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIHRvCi1peDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciB0byBtYXRjaCB0aGUgY29tbWFuZC1saW5lIG9wdGlvbiBuYW1lLgotCi0JQmFja3BvcnQgZnJvbSBtYWlubGluZQotCTIwMTgtMDEtMTUgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLQotCSogY29uZmlnL2kzODYvY29uc3RyYWludHMubWQgKEJzKTogUmVwbGFjZQotCWl4ODZfaW5kaXJlY3RfYnJhbmNoX3RodW5rX3JlZ2lzdGVyIHdpdGgKLQlpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3Rlci4KLQkoQncpOiBMaWtld2lzZS4KLQkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGluZGlyZWN0X2p1bXApOiBMaWtld2lzZS4KLQkodGFibGVqdW1wKTogTGlrZXdpc2UuCi0JKCpzaWJjYWxsX21lbW9yeSk6IExpa2V3aXNlLgotCSgqc2liY2FsbF92YWx1ZV9tZW1vcnkpOiBMaWtld2lzZS4KLQlQZWVwaG9sZXMgb2YgaW5kaXJlY3QgY2FsbCBhbmQganVtcCB2aWEgbWVtb3J5OiBMaWtld2lzZS4KLQkqIGNvbmZpZy9pMzg2L2kzODYub3B0OiBMaWtld2lzZS4KLQkqIGNvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQgKGluZGlyZWN0X2JyYW5jaF9vcGVyYW5kKTogTGlrZXdpc2UuCi0JKEdPVF9tZW1vcnlfb3BlcmFuZCk6IExpa2V3aXNlLgotCShjYWxsX2luc25fb3BlcmFuZCk6IExpa2V3aXNlLgotCShzaWJjYWxsX2luc25fb3BlcmFuZCk6IExpa2V3aXNlLgotCShHT1QzMl9zeW1ib2xfb3BlcmFuZCk6IExpa2V3aXNlLgotCi14ODY6IFJld3JpdGUgaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIgbG9naWMKLQotUmV3cml0ZSBpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciBsb2dpYyB3aXRoCi0KLShhbmQgKG5vdCAobWF0Y2hfdGVzdCAiaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIiKSkKLSAgICAgKG9yaWdpbmFsIGNvbmRpdGlvbiBiZWZvcmUgcjI1NjY2MikpCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JMjAxOC0wMS0xNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotCi0JKiBjb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kIChjb25zdGFudF9jYWxsX2FkZHJlc3Nfb3BlcmFuZCk6Ci0JUmV3cml0ZSBpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciBsb2dpYy4KLQkoc2liY2FsbF9pbnNuX29wZXJhbmQpOiBMaWtld2lzZS4KLQotRG9uJ3QgY2hlY2sgaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIgZm9yIEdPVCBvcGVyYW5kCi0KLVNpbmNlIEdPVF9tZW1vcnlfb3BlcmFuZCBhbmQgR09UMzJfc3ltYm9sX29wZXJhbmQgYXJlIHNpbXBsZSBwYXR0ZXJuCi1tYXRjaGVzLCBkb24ndCBjaGVjayBpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciBoZXJlLiAgSWYgbmVlZGVkLAotLW1pbmRpcmVjdC1icmFuY2g9IHdpbGwgY29udmVydCBpbmRpcmVjdCBicmFuY2ggdmlhIEdPVCBzbG90IHRvIGEgY2FsbAotYW5kIHJldHVybiB0aHVuay4KLQotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQkyMDE4LTAxLTE1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0KLQkqIGNvbmZpZy9pMzg2L2NvbnN0cmFpbnRzLm1kIChCcyk6IFVwZGF0ZQotCWl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyIGNoZWNrLiAgRG9uJ3QgY2hlY2sKLQlpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciB3aXRoIEdPVF9tZW1vcnlfb3BlcmFuZC4KLQkoQncpOiBMaWtld2lzZS4KLQkqIGNvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQgKEdPVF9tZW1vcnlfb3BlcmFuZCk6IERvbid0IGNoZWNrCi0JaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIgaGVyZS4KLQkoR09UMzJfc3ltYm9sX29wZXJhbmQpOiBMaWtld2lzZS4KLQotaTM4NjogUmV3cml0ZSBpbmRpcmVjdF9icmFuY2hfb3BlcmFuZCBsb2dpYwotCi0JQmFja3BvcnQgZnJvbSBtYWlubGluZQotCTIwMTgtMDEtMTUgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLQotCSogY29uZmlnL2kzODYvcHJlZGljYXRlcy5tZCAoaW5kaXJlY3RfYnJhbmNoX29wZXJhbmQpOiBSZXdyaXRlCi0JaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIgbG9naWMuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotCi0tLS0KLSBnY2MvY29uZmlnL2kzODYvY29uc3RyYWludHMubWQgICAgICAgICAgICAgICAgICAgICB8ICA2ICsrLS0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5tZCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDM0ICsrKysrKysrKysrKysrLS0tLS0tLS0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5vcHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICsrKwotIGdjYy9jb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kICAgICAgICAgICAgICAgICAgICAgIHwgMjEgKysrKysrKy0tLS0tLQotIGdjYy9kb2MvaW52b2tlLnRleGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKysrLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYyAgIHwgIDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0yLmMgICB8ICAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMy5jICAgfCAgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYyAgIHwgIDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmMgICB8ICAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jICAgfCAgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTcuYyAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jICAgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTIuYyAgICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmMgICAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNC5jICAgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYyAgICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmMgICAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jICAgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMS5jICAgICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYyAgICAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmMgICAgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtNC5jICAgICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTEuYyAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmMgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMy5jICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYyAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmMgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNi5jICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTcuYyAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmMgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMi5jICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTMuYyAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmMgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNS5jICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTYuYyAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmMgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1yZWdpc3Rlci0xLmMgICAgfCAyMiArKysrKysrKysrKysrKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItMi5jICAgIHwgMjAgKysrKysrKysrKysrKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItMy5jICAgIHwgMTkgKysrKysrKysrKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEwLmMgICAgICAgfCAgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMS5jICAgICAgIHwgIDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTIuYyAgICAgICB8ICAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEzLmMgICAgICAgfCAgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNC5jICAgICAgIHwgIDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTUuYyAgICAgICB8ICAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTkuYyAgICAgICAgfCAgMiArLQotIDQ3IGZpbGVzIGNoYW5nZWQsIDE0NyBpbnNlcnRpb25zKCspLCA2MyBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItMS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTIuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1yZWdpc3Rlci0zLmMKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9jb25zdHJhaW50cy5tZCBiL2djYy9jb25maWcvaTM4Ni9jb25zdHJhaW50cy5tZAotaW5kZXggMWE0YzcwMS4uOTIwNGM4ZSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9jb25zdHJhaW50cy5tZAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2NvbnN0cmFpbnRzLm1kCi1AQCAtMTcyLDE0ICsxNzIsMTYgQEAKLSAKLSAoZGVmaW5lX2NvbnN0cmFpbnQgIkJzIgotICAgIkBpbnRlcm5hbCBTaWJjYWxsIG1lbW9yeSBvcGVyYW5kLiIKLS0gIChpb3IgKGFuZCAobm90IChtYXRjaF90ZXN0ICJUQVJHRVRfWDMyIikpCi0rICAoaW9yIChhbmQgKG5vdCAobWF0Y2hfdGVzdCAiaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIiKSkKLSsJICAgIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIiKSkKLSAJICAgIChtYXRjaF9vcGVyYW5kIDAgInNpYmNhbGxfbWVtb3J5X29wZXJhbmQiKSkKLSAgICAgICAgKGFuZCAobWF0Y2hfdGVzdCAiVEFSR0VUX1gzMiAmJiBQbW9kZSA9PSBESW1vZGUiKQotIAkgICAgKG1hdGNoX29wZXJhbmQgMCAiR09UX21lbW9yeV9vcGVyYW5kIikpKSkKLSAKLSAoZGVmaW5lX2NvbnN0cmFpbnQgIkJ3IgotICAgIkBpbnRlcm5hbCBDYWxsIG1lbW9yeSBvcGVyYW5kLiIKLS0gIChpb3IgKGFuZCAobm90IChtYXRjaF90ZXN0ICJUQVJHRVRfWDMyIikpCi0rICAoaW9yIChhbmQgKG5vdCAobWF0Y2hfdGVzdCAiaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIiKSkKLSsJICAgIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIiKSkKLSAJICAgIChtYXRjaF9vcGVyYW5kIDAgIm1lbW9yeV9vcGVyYW5kIikpCi0gICAgICAgIChhbmQgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIgJiYgUG1vZGUgPT0gREltb2RlIikKLSAJICAgIChtYXRjaF9vcGVyYW5kIDAgIkdPVF9tZW1vcnlfb3BlcmFuZCIpKSkpCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZAotaW5kZXggMmRhNjcxZS4uMDVhODhmZiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZAotQEAgLTExODA1LDcgKzExODA1LDcgQEAKLSAgIFsoc2V0IChwYykgKG1hdGNoX29wZXJhbmQgMCAiaW5kaXJlY3RfYnJhbmNoX29wZXJhbmQiKSldCi0gICAiIgotIHsKLS0gIGlmIChUQVJHRVRfWDMyKQotKyAgaWYgKFRBUkdFVF9YMzIgfHwgaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIpCi0gICAgIG9wZXJhbmRzWzBdID0gY29udmVydF9tZW1vcnlfYWRkcmVzcyAod29yZF9tb2RlLCBvcGVyYW5kc1swXSk7Ci0gICBjZnVuLT5tYWNoaW5lLT5oYXNfbG9jYWxfaW5kaXJlY3RfanVtcCA9IHRydWU7Ci0gfSkKLUBAIC0xMTg1OSw3ICsxMTg1OSw3IEBACi0gCQkJCQkgT1BUQUJfRElSRUNUKTsKLSAgICAgfQotIAotLSAgaWYgKFRBUkdFVF9YMzIpCi0rICBpZiAoVEFSR0VUX1gzMiB8fCBpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlcikKLSAgICAgb3BlcmFuZHNbMF0gPSBjb252ZXJ0X21lbW9yeV9hZGRyZXNzICh3b3JkX21vZGUsIG9wZXJhbmRzWzBdKTsKLSAgIGNmdW4tPm1hY2hpbmUtPmhhc19sb2NhbF9pbmRpcmVjdF9qdW1wID0gdHJ1ZTsKLSB9KQotQEAgLTEyMDQ4LDcgKzEyMDQ4LDcgQEAKLSAgIFsoY2FsbCAobWVtOlFJIChtYXRjaF9vcGVyYW5kOlcgMCAibWVtb3J5X29wZXJhbmQiICJtIikpCi0gCSAobWF0Y2hfb3BlcmFuZCAxKSkKLSAgICAodW5zcGVjIFsoY29uc3RfaW50IDApXSBVTlNQRUNfUEVFUFNJQildCi0tICAiIVRBUkdFVF9YMzIiCi0rICAiIVRBUkdFVF9YMzIgJiYgIWl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyIgotICAgIiogcmV0dXJuIGl4ODZfb3V0cHV0X2NhbGxfaW5zbiAoaW5zbiwgb3BlcmFuZHNbMF0pOyIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJjYWxsIildKQotIAotQEAgLTEyMDU3LDcgKzEyMDU3LDkgQEAKLSAJKG1hdGNoX29wZXJhbmQ6VyAxICJtZW1vcnlfb3BlcmFuZCIpKQotICAgIChjYWxsIChtZW06UUkgKG1hdGNoX2R1cCAwKSkKLSAJIChtYXRjaF9vcGVyYW5kIDMpKV0KLS0gICIhVEFSR0VUX1gzMiAmJiBTSUJMSU5HX0NBTExfUCAocGVlcDJfbmV4dF9pbnNuICgxKSkKLSsgICIhVEFSR0VUX1gzMgotKyAgICYmICFpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlcgotKyAgICYmIFNJQkxJTkdfQ0FMTF9QIChwZWVwMl9uZXh0X2luc24gKDEpKQotICAgICYmICFyZWdfbWVudGlvbmVkX3AgKG9wZXJhbmRzWzBdLAotIAkJCUNBTExfSU5TTl9GVU5DVElPTl9VU0FHRSAocGVlcDJfbmV4dF9pbnNuICgxKSkpIgotICAgWyhwYXJhbGxlbCBbKGNhbGwgKG1lbTpRSSAobWF0Y2hfZHVwIDEpKQotQEAgLTEyMDcwLDcgKzEyMDcyLDkgQEAKLSAgICAodW5zcGVjX3ZvbGF0aWxlIFsoY29uc3RfaW50IDApXSBVTlNQRUNWX0JMT0NLQUdFKQotICAgIChjYWxsIChtZW06UUkgKG1hdGNoX2R1cCAwKSkKLSAJIChtYXRjaF9vcGVyYW5kIDMpKV0KLS0gICIhVEFSR0VUX1gzMiAmJiBTSUJMSU5HX0NBTExfUCAocGVlcDJfbmV4dF9pbnNuICgyKSkKLSsgICIhVEFSR0VUX1gzMgotKyAgICYmICFpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlcgotKyAgICYmIFNJQkxJTkdfQ0FMTF9QIChwZWVwMl9uZXh0X2luc24gKDIpKQotICAgICYmICFyZWdfbWVudGlvbmVkX3AgKG9wZXJhbmRzWzBdLAotIAkJCUNBTExfSU5TTl9GVU5DVElPTl9VU0FHRSAocGVlcDJfbmV4dF9pbnNuICgyKSkpIgotICAgWyh1bnNwZWNfdm9sYXRpbGUgWyhjb25zdF9pbnQgMCldIFVOU1BFQ1ZfQkxPQ0tBR0UpCi1AQCAtMTIwOTIsNyArMTIwOTYsNyBAQAotIH0pCi0gCi0gKGRlZmluZV9pbnNuICIqY2FsbF9wb3AiCi0tICBbKGNhbGwgKG1lbTpRSSAobWF0Y2hfb3BlcmFuZDpTSSAwICJjYWxsX2luc25fb3BlcmFuZCIgImxtQnoiKSkKLSsgIFsoY2FsbCAobWVtOlFJIChtYXRjaF9vcGVyYW5kOlNJIDAgImNhbGxfaW5zbl9vcGVyYW5kIiAibEJ3QnoiKSkKLSAJIChtYXRjaF9vcGVyYW5kIDEpKQotICAgIChzZXQgKHJlZzpTSSBTUF9SRUcpCi0gCShwbHVzOlNJIChyZWc6U0kgU1BfUkVHKQotQEAgLTEyMTEyLDcgKzEyMTE2LDcgQEAKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJjYWxsIildKQotIAotIChkZWZpbmVfaW5zbiAiKnNpYmNhbGxfcG9wX21lbW9yeSIKLS0gIFsoY2FsbCAobWVtOlFJIChtYXRjaF9vcGVyYW5kOlNJIDAgIm1lbW9yeV9vcGVyYW5kIiAibSIpKQotKyAgWyhjYWxsIChtZW06UUkgKG1hdGNoX29wZXJhbmQ6U0kgMCAibWVtb3J5X29wZXJhbmQiICJCcyIpKQotIAkgKG1hdGNoX29wZXJhbmQgMSkpCi0gICAgKHNldCAocmVnOlNJIFNQX1JFRykKLSAJKHBsdXM6U0kgKHJlZzpTSSBTUF9SRUcpCi1AQCAtMTIxNjYsNyArMTIxNzAsOSBAQAotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VyAwICJyZWdpc3Rlcl9vcGVyYW5kIikKLSAgICAgICAgIChtYXRjaF9vcGVyYW5kOlcgMSAibWVtb3J5X29wZXJhbmQiKSkKLSAgICAoc2V0IChwYykgKG1hdGNoX2R1cCAwKSldCi0tICAiIVRBUkdFVF9YMzIgJiYgcGVlcDJfcmVnX2RlYWRfcCAoMiwgb3BlcmFuZHNbMF0pIgotKyAgIiFUQVJHRVRfWDMyCi0rICAgJiYgIWl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyCi0rICAgJiYgcGVlcDJfcmVnX2RlYWRfcCAoMiwgb3BlcmFuZHNbMF0pIgotICAgWyhzZXQgKHBjKSAobWF0Y2hfZHVwIDEpKV0pCi0gCi0gOzsgQ2FsbCBzdWJyb3V0aW5lLCByZXR1cm5pbmcgdmFsdWUgaW4gb3BlcmFuZCAwCi1AQCAtMTIyNDQsNyArMTIyNTAsNyBAQAotICAJKGNhbGwgKG1lbTpRSSAobWF0Y2hfb3BlcmFuZDpXIDEgIm1lbW9yeV9vcGVyYW5kIiAibSIpKQotIAkgICAgICAobWF0Y2hfb3BlcmFuZCAyKSkpCi0gICAgKHVuc3BlYyBbKGNvbnN0X2ludCAwKV0gVU5TUEVDX1BFRVBTSUIpXQotLSAgIiFUQVJHRVRfWDMyIgotKyAgIiFUQVJHRVRfWDMyICYmICFpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciIKLSAgICIqIHJldHVybiBpeDg2X291dHB1dF9jYWxsX2luc24gKGluc24sIG9wZXJhbmRzWzFdKTsiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAiY2FsbHYiKV0pCi0gCi1AQCAtMTIyNTQsNyArMTIyNjAsOSBAQAotICAgIChzZXQgKG1hdGNoX29wZXJhbmQgMikKLSAgICAoY2FsbCAobWVtOlFJIChtYXRjaF9kdXAgMCkpCi0gCQkgKG1hdGNoX29wZXJhbmQgMykpKV0KLS0gICIhVEFSR0VUX1gzMiAmJiBTSUJMSU5HX0NBTExfUCAocGVlcDJfbmV4dF9pbnNuICgxKSkKLSsgICIhVEFSR0VUX1gzMgotKyAgICYmICFpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlcgotKyAgICYmIFNJQkxJTkdfQ0FMTF9QIChwZWVwMl9uZXh0X2luc24gKDEpKQotICAgICYmICFyZWdfbWVudGlvbmVkX3AgKG9wZXJhbmRzWzBdLAotIAkJCUNBTExfSU5TTl9GVU5DVElPTl9VU0FHRSAocGVlcDJfbmV4dF9pbnNuICgxKSkpIgotICAgWyhwYXJhbGxlbCBbKHNldCAobWF0Y2hfZHVwIDIpCi1AQCAtMTIyNjksNyArMTIyNzcsOSBAQAotICAgIChzZXQgKG1hdGNoX29wZXJhbmQgMikKLSAJKGNhbGwgKG1lbTpRSSAobWF0Y2hfZHVwIDApKQotIAkgICAgICAobWF0Y2hfb3BlcmFuZCAzKSkpXQotLSAgIiFUQVJHRVRfWDMyICYmIFNJQkxJTkdfQ0FMTF9QIChwZWVwMl9uZXh0X2luc24gKDIpKQotKyAgIiFUQVJHRVRfWDMyCi0rICAgJiYgIWl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyCi0rICAgJiYgU0lCTElOR19DQUxMX1AgKHBlZXAyX25leHRfaW5zbiAoMikpCi0gICAgJiYgIXJlZ19tZW50aW9uZWRfcCAob3BlcmFuZHNbMF0sCi0gCQkJQ0FMTF9JTlNOX0ZVTkNUSU9OX1VTQUdFIChwZWVwMl9uZXh0X2luc24gKDIpKSkiCi0gICBbKHVuc3BlY192b2xhdGlsZSBbKGNvbnN0X2ludCAwKV0gVU5TUEVDVl9CTE9DS0FHRSkKLUBAIC0xMjI5NCw3ICsxMjMwNCw3IEBACi0gCi0gKGRlZmluZV9pbnNuICIqY2FsbF92YWx1ZV9wb3AiCi0gICBbKHNldCAobWF0Y2hfb3BlcmFuZCAwKQotLQkoY2FsbCAobWVtOlFJIChtYXRjaF9vcGVyYW5kOlNJIDEgImNhbGxfaW5zbl9vcGVyYW5kIiAibG1CeiIpKQotKwkoY2FsbCAobWVtOlFJIChtYXRjaF9vcGVyYW5kOlNJIDEgImNhbGxfaW5zbl9vcGVyYW5kIiAibEJ3QnoiKSkKLSAJICAgICAgKG1hdGNoX29wZXJhbmQgMikpKQotICAgIChzZXQgKHJlZzpTSSBTUF9SRUcpCi0gCShwbHVzOlNJIChyZWc6U0kgU1BfUkVHKQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2Lm9wdCBiL2djYy9jb25maWcvaTM4Ni9pMzg2Lm9wdAotaW5kZXggYWQ1OTE2Zi4uYTk3Zjg0ZiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2Lm9wdAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYub3B0Ci1AQCAtOTIxLDMgKzkyMSw3IEBAIEVudW0oaW5kaXJlY3RfYnJhbmNoKSBTdHJpbmcodGh1bmstaW5saW5lKSBWYWx1ZShpbmRpcmVjdF9icmFuY2hfdGh1bmtfaW5saW5lKQotIAotIEVudW1WYWx1ZQotIEVudW0oaW5kaXJlY3RfYnJhbmNoKSBTdHJpbmcodGh1bmstZXh0ZXJuKSBWYWx1ZShpbmRpcmVjdF9icmFuY2hfdGh1bmtfZXh0ZXJuKQotKwotK21pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIKLStUYXJnZXQgUmVwb3J0IFZhcihpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlcikgSW5pdCgwKQotK0ZvcmNlIGluZGlyZWN0IGNhbGwgYW5kIGp1bXAgdmlhIHJlZ2lzdGVyLgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kIGIvZ2NjL2NvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQKLWluZGV4IDkzZGRhN2IuLmQxZjBhN2QgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvcHJlZGljYXRlcy5tZAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQKLUBAIC01OTMsNyArNTkzLDggQEAKLSA7OyBUZXN0IGZvciBhIHZhbGlkIG9wZXJhbmQgZm9yIGluZGlyZWN0IGJyYW5jaC4KLSAoZGVmaW5lX3ByZWRpY2F0ZSAiaW5kaXJlY3RfYnJhbmNoX29wZXJhbmQiCi0gICAoaW9yIChtYXRjaF9vcGVyYW5kIDAgInJlZ2lzdGVyX29wZXJhbmQiKQotLSAgICAgICAoYW5kIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIiKSkKLSsgICAgICAgKGFuZCAobm90IChtYXRjaF90ZXN0ICJpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciIpKQotKwkgICAgKG5vdCAobWF0Y2hfdGVzdCAiVEFSR0VUX1gzMiIpKQotIAkgICAgKG1hdGNoX29wZXJhbmQgMCAibWVtb3J5X29wZXJhbmQiKSkpKQotIAotIDs7IFJldHVybiB0cnVlIGlmIE9QIGlzIGEgbWVtb3J5IG9wZXJhbmRzIHRoYXQgY2FuIGJlIHVzZWQgaW4gc2liY2FsbHMuCi1AQCAtNjM2LDIwICs2MzcsMjIgQEAKLSAgIChpb3IgKG1hdGNoX3Rlc3QgImNvbnN0YW50X2NhbGxfYWRkcmVzc19vcGVyYW5kCi0gCQkgICAgIChvcCwgbW9kZSA9PSBWT0lEbW9kZSA/IG1vZGUgOiBQbW9kZSkiKQotICAgICAgICAobWF0Y2hfb3BlcmFuZCAwICJjYWxsX3JlZ2lzdGVyX25vX2VsaW1fb3BlcmFuZCIpCi0tICAgICAgIChpb3IgKGFuZCAobm90IChtYXRjaF90ZXN0ICJUQVJHRVRfWDMyIikpCi0tCQkgKG1hdGNoX29wZXJhbmQgMCAibWVtb3J5X29wZXJhbmQiKSkKLS0JICAgIChhbmQgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIgJiYgUG1vZGUgPT0gREltb2RlIikKLS0JCSAobWF0Y2hfb3BlcmFuZCAwICJHT1RfbWVtb3J5X29wZXJhbmQiKSkpKSkKLSsgICAgICAgKGFuZCAobm90IChtYXRjaF90ZXN0ICJpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciIpKQotKwkgICAgKGlvciAoYW5kIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIiKSkKLSsJCSAgICAgIChtYXRjaF9vcGVyYW5kIDAgIm1lbW9yeV9vcGVyYW5kIikpCi0rCQkgKGFuZCAobWF0Y2hfdGVzdCAiVEFSR0VUX1gzMiAmJiBQbW9kZSA9PSBESW1vZGUiKQotKwkJICAgICAgKG1hdGNoX29wZXJhbmQgMCAiR09UX21lbW9yeV9vcGVyYW5kIikpKSkpKQotIAotIDs7IFNpbWlsYXJseSwgYnV0IGZvciB0YWlsIGNhbGxzLCBpbiB3aGljaCB3ZSBjYW5ub3QgYWxsb3cgbWVtb3J5IHJlZmVyZW5jZXMuCi0gKGRlZmluZV9zcGVjaWFsX3ByZWRpY2F0ZSAic2liY2FsbF9pbnNuX29wZXJhbmQiCi0gICAoaW9yIChtYXRjaF90ZXN0ICJjb25zdGFudF9jYWxsX2FkZHJlc3Nfb3BlcmFuZAotIAkJICAgICAob3AsIG1vZGUgPT0gVk9JRG1vZGUgPyBtb2RlIDogUG1vZGUpIikKLSAgICAgICAgKG1hdGNoX29wZXJhbmQgMCAicmVnaXN0ZXJfbm9fZWxpbV9vcGVyYW5kIikKLS0gICAgICAgKGlvciAoYW5kIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIiKSkKLS0JCSAobWF0Y2hfb3BlcmFuZCAwICJzaWJjYWxsX21lbW9yeV9vcGVyYW5kIikpCi0tCSAgICAoYW5kIChtYXRjaF90ZXN0ICJUQVJHRVRfWDMyICYmIFBtb2RlID09IERJbW9kZSIpCi0tCQkgKG1hdGNoX29wZXJhbmQgMCAiR09UX21lbW9yeV9vcGVyYW5kIikpKSkpCi0rICAgICAgIChhbmQgKG5vdCAobWF0Y2hfdGVzdCAiaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIiKSkKLSsJICAgIChpb3IgKGFuZCAobm90IChtYXRjaF90ZXN0ICJUQVJHRVRfWDMyIikpCi0rCQkgICAgICAobWF0Y2hfb3BlcmFuZCAwICJzaWJjYWxsX21lbW9yeV9vcGVyYW5kIikpCi0rCQkgKGFuZCAobWF0Y2hfdGVzdCAiVEFSR0VUX1gzMiAmJiBQbW9kZSA9PSBESW1vZGUiKQotKwkJICAgICAgKG1hdGNoX29wZXJhbmQgMCAiR09UX21lbW9yeV9vcGVyYW5kIikpKSkpKQotIAotIDs7IFJldHVybiB0cnVlIGlmIE9QIGlzIGEgMzItYml0IEdPVCBzeW1ib2wgb3BlcmFuZC4KLSAoZGVmaW5lX3ByZWRpY2F0ZSAiR09UMzJfc3ltYm9sX29wZXJhbmQiCi1kaWZmIC0tZ2l0IGEvZ2NjL2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkKLWluZGV4IGZhNjNkYzUuLmFkOWYyOTUgMTAwNjQ0Ci0tLS0gYS9nY2MvZG9jL2ludm9rZS50ZXhpCi0rKysgYi9nY2MvZG9jL2ludm9rZS50ZXhpCi1AQCAtMTE3MCw3ICsxMTcwLDcgQEAgU2VlIFJTLzYwMDAgYW5kIFBvd2VyUEMgT3B0aW9ucy4KLSAtbWF2eDI1Ni1zcGxpdC11bmFsaWduZWQtbG9hZCAtbWF2eDI1Ni1zcGxpdC11bmFsaWduZWQtc3RvcmUgQGdvbAotIC1tYWxpZ24tZGF0YT1AdmFye3R5cGV9IC1tc3RhY2stcHJvdGVjdG9yLWd1YXJkPUB2YXJ7Z3VhcmR9IEBnb2wKLSAtbW1pdGlnYXRlLXJvcCAtbWluZGlyZWN0LWJyYW5jaD1AdmFye2Nob2ljZX0gQGdvbAotLS1tZnVuY3Rpb24tcmV0dXJuPUB2YXJ7Y2hvaWNlfX0KLSstbWZ1bmN0aW9uLXJldHVybj1AdmFye2Nob2ljZX0gLW1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXJ9Ci0gCi0gQGVtcGh7eDg2IFdpbmRvd3MgT3B0aW9uc30KLSBAZ2Njb3B0bGlzdHstbWNvbnNvbGUgLW1jeWd3aW4gLW1uby1jeWd3aW4gLW1kbGwgQGdvbAotQEAgLTI0MjQxLDYgKzI0MjQxLDEwIEBAIG9iamVjdCBmaWxlLiAgWW91IGNhbiBjb250cm9sIHRoaXMgYmVoYXZpb3IgZm9yIGEgc3BlY2lmaWMgZnVuY3Rpb24gYnkKLSB1c2luZyB0aGUgZnVuY3Rpb24gYXR0cmlidXRlIEBjb2Rle2Z1bmN0aW9uX3JldHVybn0uCi0gQHhyZWZ7RnVuY3Rpb24gQXR0cmlidXRlc30uCi0gCi0rQGl0ZW0gLW1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIKLStAb3BpbmRleCAtbWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlcgotK0ZvcmNlIGluZGlyZWN0IGNhbGwgYW5kIGp1bXAgdmlhIHJlZ2lzdGVyLgotKwotIEBlbmQgdGFibGUKLSAKLSBUaGVzZSBAc2FtcHstbX0gc3dpdGNoZXMgYXJlIHN1cHBvcnRlZCBpbiBhZGRpdGlvbiB0byB0aGUgYWJvdmUKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xLmMKLWluZGV4IGUzNjVlZjUuLjYwZDA5ODggMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0yLmMKLWluZGV4IDA1YTUxYWQuLmFhYzc1MTYgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0yLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0zLmMKLWluZGV4IDNjMGQ0YzMuLjllMjRhMzggMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0zLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay00LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay00LmMKLWluZGV4IDE0ZDRlZjYuLjEyN2I1ZDkgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay00LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmMKLWluZGV4IGI0ODM2YzMuLmZjYWExOGQgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTUuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0ICotKi1saW51eCogfSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsiIH0gKi8KLSAKLSBleHRlcm4gdm9pZCBiYXIgKHZvaWQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTYuYwotaW5kZXggMWYwNmJkMS4uZTQ2NDkyOCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTYuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayIgfSAqLwotIAotIGV4dGVybiB2b2lkIGJhciAodm9pZCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jCi1pbmRleCBiYzZiNDdhLi4xN2MyZDBmIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay03LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZuby1waWMiIH0gKi8KLSAKLSB2b2lkIGZ1bmMwICh2b2lkKTsKLSB2b2lkIGZ1bmMxICh2b2lkKTsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jCi1pbmRleCAyMjU3YmUzLi45MTk0Y2NmIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmMKLWluZGV4IGU5Y2ZkYzUuLmU1MWYyNjEgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTMuYwotaW5kZXggZjkzOGRiMC4uNGFlZWMxOCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTMuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNC5jCi1pbmRleCA0ZTU4NTk5Li5hYzBlNTk5IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci00LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNC5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mbm8tcGljIiB9ICovCi0gCi0gdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci01LmMKLWluZGV4IGI4ZDUwMjQuLjU3M2NmMWUgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci01LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYwotaW5kZXggNDU1YWRhYi4uYjJiMzdmYyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZm5vLXBpYyIgfSAqLwotIAotIHR5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jCi1pbmRleCA0NTk1Yjg0Li40YTQzZTE5IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci03LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mbm8tcGljIiB9ICovCi0gCi0gdm9pZCBmdW5jMCAodm9pZCk7Ci0gdm9pZCBmdW5jMSAodm9pZCk7Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmMKLWluZGV4IDVlM2UxMTguLmFjODRhYjYgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZjaGVjay1wb2ludGVyLWJvdW5kcyAtbW1weCAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsgLWZjaGVjay1wb2ludGVyLWJvdW5kcyAtbW1weCAtZm5vLXBpYyIgfSAqLwotIAotIHZvaWQgKCpkaXNwYXRjaCkgKGNoYXIgKik7Ci0gY2hhciBidWZbMTBdOwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMi5jCi1pbmRleCAyODAxYWE0Li5jZTY1NWU4IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mY2hlY2stcG9pbnRlci1ib3VuZHMgLW1tcHggLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mY2hlY2stcG9pbnRlci1ib3VuZHMgLW1tcHggLWZuby1waWMiIH0gKi8KLSAKLSB2b2lkICgqZGlzcGF0Y2gpIChjaGFyICopOwotIGNoYXIgYnVmWzEwXTsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYwotaW5kZXggNzBiNGZiMy4uZDM0NDg1YSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICotKi1saW51eCogJiYgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZmNoZWNrLXBvaW50ZXItYm91bmRzIC1tbXB4IC1mcGljIC1mbm8tcGx0IiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZmNoZWNrLXBvaW50ZXItYm91bmRzIC1tbXB4IC1mcGljIC1mbm8tcGx0IiB9ICovCi0gCi0gdm9pZCBiYXIgKGNoYXIgKik7Ci0gY2hhciBidWZbMTBdOwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC00LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtNC5jCi1pbmRleCAzYmFmMDNlLi4wZTE5ODMwIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTQuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTQuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgKi0qLWxpbnV4KiAmJiB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mY2hlY2stcG9pbnRlci1ib3VuZHMgLW1tcHggLWZwaWMgLWZuby1wbHQiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mY2hlY2stcG9pbnRlci1ib3VuZHMgLW1tcHggLWZwaWMgLWZuby1wbHQiIH0gKi8KLSAKLSB2b2lkIGJhciAoY2hhciAqKTsKLSBjaGFyIGJ1ZlsxMF07Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmMKLWluZGV4IGVkZWIyNjQuLjU3OTQ0MWYgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmMKLWluZGV4IDFkMDA0MTMuLmM5MmU2ZjIgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMi5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmMKLWluZGV4IDA2ZWJmMWMuLmQ5OTY0YzIgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMy5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmMKLWluZGV4IDFjOGY5NDQuLmQ0ZGNhNGQgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNC5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmMKLWluZGV4IDIxNzQwYWMuLjVjMDdlMDIgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIiB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgYmFyICh2b2lkKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTYuYwotaW5kZXggYTc3YzFmNC4uM2ViNDQwNiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCAqLSotbGludXgqIH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4iIH0gKi8KLSAKLSBleHRlcm4gdm9pZCBiYXIgKHZvaWQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNy5jCi1pbmRleCA4NmU5ZmQxLi5hZWNlOTM4IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTcuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTcuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1mbm8tcGljIiB9ICovCi0gCi0gdm9pZCBmdW5jMCAodm9pZCk7Ci0gdm9pZCBmdW5jMSAodm9pZCk7Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmMKLWluZGV4IDNlY2RlODcuLjNhYmE1ZTggMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0yLmMKLWluZGV4IGRmMzJhMTkuLjBmMDE4MWQgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMi5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmMKLWluZGV4IDk1NDA5OTYuLjJlZWY2ZjMgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMy5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmMKLWluZGV4IGYzZGI2ZTIuLmU4MjVhMTAgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNC5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLWZuby1waWMiIH0gKi8KLSAKLSB0eXBlZGVmIHZvaWQgKCpkaXNwYXRjaF90KShsb25nIG9mZnNldCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS01LmMKLWluZGV4IDBmNjg3YzMuLmM2ZDc3ZTEgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1mcGljIC1mbm8tcGx0IC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIiB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgYmFyICh2b2lkKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTYuYwotaW5kZXggYjI3YzZmYy4uNjQ1NDgyNyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCAqLSotbGludXgqIH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLWZwaWMgLWZuby1wbHQgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtZnBpYyAtZm5vLXBsdCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUiIH0gKi8KLSAKLSBleHRlcm4gdm9pZCBiYXIgKHZvaWQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNy5jCi1pbmRleCA3NjRhMzc1Li5jNjcwNjZjIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTcuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTcuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0gCi0gdm9pZCBmdW5jMCAodm9pZCk7Ci0gdm9pZCBmdW5jMSAodm9pZCk7Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItMS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uN2QzOTZhMwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItMS5jCi1AQCAtMCwwICsxLDIyIEBACi0rLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtbWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtZm5vLXBpYyIgfSAqLwotKwotK3R5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSsKLStkaXNwYXRjaF90IGRpc3BhdGNoOwotKwotK3ZvaWQKLSttYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotK3sKLSsgIGRpc3BhdGNoKG9mZnNldCk7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZcWyBcdFxdKCVlYXh8JXJheCksIFxcKCglZXNwfCVyc3ApXFwpIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiAgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiX194ODZfaW5kaXJlY3RfdGh1bmtcbiIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiX194ODZfaW5kaXJlY3RfdGh1bmtfYm5kXG4iIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTIuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmU3ZTYxNmIKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTIuYwotQEAgLTAsMCArMSwyMCBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1mbm8tcGljIiB9ICovCi0rCi0rdHlwZWRlZiB2b2lkICgqZGlzcGF0Y2hfdCkobG9uZyBvZmZzZXQpOwotKwotK2Rpc3BhdGNoX3QgZGlzcGF0Y2g7Ci0rCi0rdm9pZAotK21hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0rewotKyAgZGlzcGF0Y2gob2Zmc2V0KTsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92XFsgXHRcXSglZWF4fCVyYXgpLCBcXCgoJWVzcHwlcnNwKVxcKSIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1yZWdpc3Rlci0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1yZWdpc3Rlci0zLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi41MzIwZTkyCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1yZWdpc3Rlci0zLmMKLUBAIC0wLDAgKzEsMTkgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtbWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtZm5vLXBpYyIgfSAqLwotKwotK3R5cGVkZWYgdm9pZCAoKmRpc3BhdGNoX3QpKGxvbmcgb2Zmc2V0KTsKLSsKLStkaXNwYXRjaF90IGRpc3BhdGNoOwotKwotK3ZvaWQKLSttYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotK3sKLSsgIGRpc3BhdGNoKG9mZnNldCk7Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KHBhdXNlfHBhdXNlfG5vcCl9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEwLmMKLWluZGV4IDNhNjcyN2IuLmU2ZmVhODQgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTAuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEwLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49dGh1bmstaW5saW5lIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49dGh1bmstaW5saW5lIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgKCpiYXIpICh2b2lkKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMS5jCi1pbmRleCBiOGY2ODE4Li5lMjM5ZWM0IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTExLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rLWV4dGVybiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rLWV4dGVybiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotIAotIGV4dGVybiB2b2lkICgqYmFyKSAodm9pZCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTIuYwotaW5kZXggMDFiMGEwMi4uZmEzMTgxMyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTIuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1uby1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotIAotIGV4dGVybiB2b2lkICgqYmFyKSAodm9pZCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEzLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTMuYwotaW5kZXggNGI0OTdiNS4uZmQ1YjQxZiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTMuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWlubGluZSAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstaW5saW5lIC1mbm8tcGljIiB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgKCpiYXIpICh2b2lkKTsKLSBleHRlcm4gaW50IGZvbyAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKGZ1bmN0aW9uX3JldHVybigidGh1bmsiKSkpOwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE0LmMKLWluZGV4IDRhZTRjNDQuLmQ2MDYzNzMgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTQuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE0LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtZm5vLXBpYyIgfSAqLwotIAotIGV4dGVybiB2b2lkICgqYmFyKSAodm9pZCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE1LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTUuYwotaW5kZXggNWI1YmM3Ni4uNzVlNDVlMiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTUuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPWtlZXAgLWZuby1waWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbW5vLWluZGlyZWN0LWJyYW5jaC1yZWdpc3RlciAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPWtlZXAgLWZuby1waWMiIH0gKi8KLSAKLSBleHRlcm4gdm9pZCAoKmJhcikgKHZvaWQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay05LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstOS5jCi1pbmRleCBmYTI0YTFmLi5kMWRiNDFjIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTkuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTkuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj10aHVuayAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtZm5vLXBpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tbm8taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rIC1mbm8tcGljIiB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgKCpiYXIpICh2b2lkKTsKLSAKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDA3LXg4Ni1BZGQtVi1yZWdpc3Rlci1vcGVyYW5kLW1vZGlmaWVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDA3LXg4Ni1BZGQtVi1yZWdpc3Rlci1vcGVyYW5kLW1vZGlmaWVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWM4NGZlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwNy14ODYtQWRkLVYtcmVnaXN0ZXItb3BlcmFuZC1tb2RpZmllci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi1Gcm9tIDhmMGVmZDY5MmViOGRiMDZkNmMwMGI3NTljODcyYmQyMTcwYjdmN2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDYgSmFuIDIwMTggMjI6Mjk6NTYgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwNy8xMl0geDg2OiBBZGQgJ1YnIHJlZ2lzdGVyIG9wZXJhbmQgbW9kaWZpZXIKLQotQWRkICdWJywgYSBzcGVjaWFsIG1vZGlmaWVyIHdoaWNoIHByaW50cyB0aGUgbmFtZSBvZiB0aGUgZnVsbCBpbnRlZ2VyCi1yZWdpc3RlciB3aXRob3V0ICclJy4gIEZvcgotCi1leHRlcm4gdm9pZCAoKmZ1bmNfcCkgKHZvaWQpOwotCi12b2lkCi1mb28gKHZvaWQpCi17Ci0gIGFzbSAoImNhbGwgX194ODZfaW5kaXJlY3RfdGh1bmtfJVYwIiA6IDogImEiIChmdW5jX3ApKTsKLX0KLQotaXQgZ2VuZXJhdGVzOgotCi1mb286Ci0JbW92cQlmdW5jX3AoJXJpcCksICVyYXgKLQljYWxsCV9feDg2X2luZGlyZWN0X3RodW5rX3JheAotCXJldAotCi1nY2MvCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JMjAxOC0wMS0xNCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotCi0JKiBjb25maWcvaTM4Ni9pMzg2LmMgKHByaW50X3JlZyk6IFByaW50IHRoZSBuYW1lIG9mIHRoZSBmdWxsCi0JaW50ZWdlciByZWdpc3RlciB3aXRob3V0ICclJy4KLQkoaXg4Nl9wcmludF9vcGVyYW5kKTogSGFuZGxlICdWJy4KLQkgKiBkb2MvZXh0ZW5kLnRleGk6IERvY3VtZW50ICdWJyBtb2RpZmllci4KLQotZ2NjL3Rlc3RzdWl0ZS8KLQotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQkyMDE4LTAxLTE0ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1yZWdpc3Rlci00LmM6IE5ldyB0ZXN0LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotLS0tCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTMgKysrKysrKysrKysrLQotIGdjYy9kb2MvZXh0ZW5kLnRleGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzICsrKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTQuYyB8IDEzICsrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstcmVnaXN0ZXItNC5jCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotaW5kZXggMzRlMjZhMy4uZWVjYTdlNSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLUBAIC0xNjg2OSw2ICsxNjg2OSw3IEBAIHB1dF9jb25kaXRpb25fY29kZSAoZW51bSBydHhfY29kZSBjb2RlLCBtYWNoaW5lX21vZGUgbW9kZSwgYm9vbCByZXZlcnNlLAotICAgIElmIENPREUgaXMgJ2gnLCBwcmV0ZW5kIHRoZSByZWcgaXMgdGhlICdoaWdoJyBieXRlIHJlZ2lzdGVyLgotICAgIElmIENPREUgaXMgJ3knLCBwcmludCAic3QoMCkiIGluc3RlYWQgb2YgInN0IiwgaWYgdGhlIHJlZyBpcyBzdGFjayBvcC4KLSAgICBJZiBDT0RFIGlzICdkJywgZHVwbGljYXRlIHRoZSBvcGVyYW5kIGZvciBBVlggaW5zdHJ1Y3Rpb24uCi0rICAgSWYgQ09ERSBpcyAnVicsIHByaW50IG5ha2VkIGZ1bGwgaW50ZWdlciByZWdpc3RlciBuYW1lIHdpdGhvdXQgJS4KLSAgKi8KLSAKLSB2b2lkCi1AQCAtMTY4NzksNyArMTY4ODAsNyBAQCBwcmludF9yZWcgKHJ0eCB4LCBpbnQgY29kZSwgRklMRSAqZmlsZSkKLSAgIHVuc2lnbmVkIGludCByZWdubzsKLSAgIGJvb2wgZHVwbGljYXRlZDsKLSAKLS0gIGlmIChBU1NFTUJMRVJfRElBTEVDVCA9PSBBU01fQVRUKQotKyAgaWYgKEFTU0VNQkxFUl9ESUFMRUNUID09IEFTTV9BVFQgJiYgY29kZSAhPSAnVicpCi0gICAgIHB1dGMgKCclJywgZmlsZSk7Ci0gCi0gICBpZiAoeCA9PSBwY19ydHgpCi1AQCAtMTY5MjIsNiArMTY5MjMsMTQgQEAgcHJpbnRfcmVnIChydHggeCwgaW50IGNvZGUsIEZJTEUgKmZpbGUpCi0gCSAgICAgICYmIHJlZ25vICE9IEZQU1JfUkVHCi0gCSAgICAgICYmIHJlZ25vICE9IEZQQ1JfUkVHKTsKLSAKLSsgIGlmIChjb2RlID09ICdWJykKLSsgICAgewotKyAgICAgIGlmIChHRU5FUkFMX1JFR05PX1AgKHJlZ25vKSkKLSsJbXNpemUgPSBHRVRfTU9ERV9TSVpFICh3b3JkX21vZGUpOwotKyAgICAgIGVsc2UKLSsJZXJyb3IgKCInVicgbW9kaWZpZXIgb24gbm9uLWludGVnZXIgcmVnaXN0ZXIiKTsKLSsgICAgfQotKwotICAgZHVwbGljYXRlZCA9IGNvZGUgPT0gJ2QnICYmIFRBUkdFVF9BVlg7Ci0gCi0gICBzd2l0Y2ggKG1zaXplKQotQEAgLTE3MDM1LDYgKzE3MDQ0LDcgQEAgcHJpbnRfcmVnIChydHggeCwgaW50IGNvZGUsIEZJTEUgKmZpbGUpCi0gICAgJiAtLSBwcmludCBzb21lIGluLXVzZSBsb2NhbC1keW5hbWljIHN5bWJvbCBuYW1lLgotICAgIEggLS0gcHJpbnQgYSBtZW1vcnkgYWRkcmVzcyBvZmZzZXQgYnkgODsgdXNlZCBmb3Igc3NlIGhpZ2gtcGFydHMKLSAgICBZIC0tIHByaW50IGNvbmRpdGlvbiBmb3IgWE9QIHBjb20qIGluc3RydWN0aW9uLgotKyAgIFYgLS0gcHJpbnQgbmFrZWQgZnVsbCBpbnRlZ2VyIHJlZ2lzdGVyIG5hbWUgd2l0aG91dCAlLgotICAgICsgLS0gcHJpbnQgYSBicmFuY2ggaGludCBhcyAnY3MnIG9yICdkcycgcHJlZml4Ci0gICAgOyAtLSBwcmludCBhIHNlbWljb2xvbiAoYWZ0ZXIgcHJlZml4ZXMgZHVlIHRvIGJ1ZyBpbiBvbGRlciBnYXMpLgotICAgIH4gLS0gcHJpbnQgImkiIGlmIFRBUkdFVF9BVlgyLCAiZiIgb3RoZXJ3aXNlLgotQEAgLTE3MjU5LDYgKzE3MjY5LDcgQEAgaXg4Nl9wcmludF9vcGVyYW5kIChGSUxFICpmaWxlLCBydHggeCwgaW50IGNvZGUpCi0gCWNhc2UgJ1gnOgotIAljYXNlICdQJzoKLSAJY2FzZSAncCc6Ci0rCWNhc2UgJ1YnOgotIAkgIGJyZWFrOwotIAotIAljYXNlICdzJzoKLWRpZmYgLS1naXQgYS9nY2MvZG9jL2V4dGVuZC50ZXhpIGIvZ2NjL2RvYy9leHRlbmQudGV4aQotaW5kZXggMmNiNmJkMS4uNzZiYTFkNCAxMDA2NDQKLS0tLSBhL2djYy9kb2MvZXh0ZW5kLnRleGkKLSsrKyBiL2djYy9kb2MvZXh0ZW5kLnRleGkKLUBAIC04NTExLDYgKzg1MTEsOSBAQCBUaGUgdGFibGUgYmVsb3cgc2hvd3MgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIG1vZGlmaWVycyBhbmQgdGhlaXIgZWZmZWN0cy4KLSBAdGFiIEBjb2RlezJ9Ci0gQGVuZCBtdWx0aXRhYmxlCi0gCi0rQGNvZGV7Vn0gaXMgYSBzcGVjaWFsIG1vZGlmaWVyIHdoaWNoIHByaW50cyB0aGUgbmFtZSBvZiB0aGUgZnVsbCBpbnRlZ2VyCi0rcmVnaXN0ZXIgd2l0aG91dCBAY29kZXslfS4KLSsKLSBAYW5jaG9ye3g4NmZsb2F0aW5ncG9pbnRhc21vcGVyYW5kc30KLSBAc3Vic3Vic2VjdGlvbiB4ODYgRmxvYXRpbmctUG9pbnQgQGNvZGV7YXNtfSBPcGVyYW5kcwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmYwY2Q5YjcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLXJlZ2lzdGVyLTQuYwotQEAgLTAsMCArMSwxMyBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9a2VlcCAtZm5vLXBpYyIgfSAqLwotKwotK2V4dGVybiB2b2lkICgqZnVuY19wKSAodm9pZCk7Ci0rCi0rdm9pZAotK2ZvbyAodm9pZCkKLSt7Ci0rICBhc20oImNhbGwgX194ODZfaW5kaXJlY3RfdGh1bmtfJVYwIiA6IDogImEiIChmdW5jX3ApKTsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua19lYXgiIHsgdGFyZ2V0IGlhMzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rX3JheCIgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gfSAqLwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMDgteDg2LURpc2FsbG93LW1pbmRpcmVjdC1icmFuY2gtbWZ1bmN0aW9uLXJldHVybi13aXRoLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwOC14ODYtRGlzYWxsb3ctbWluZGlyZWN0LWJyYW5jaC1tZnVuY3Rpb24tcmV0dXJuLXdpdGgtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGE1ODEwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwOC14ODYtRGlzYWxsb3ctbWluZGlyZWN0LWJyYW5jaC1tZnVuY3Rpb24tcmV0dXJuLXdpdGgtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzA0ICswLDAgQEAKLUZyb20gOGUwZDliZjkzZTJlMmVjMDNjNTQ0NTcyYWVmNGIwM2E4ZTcwOTBmMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJILkouIEx1IiA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMTMgSmFuIDIwMTggMTg6MDE6NTQgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwOC8xMl0geDg2OiBEaXNhbGxvdyAtbWluZGlyZWN0LWJyYW5jaD0vLW1mdW5jdGlvbi1yZXR1cm49Ci0gd2l0aCAtbWNtb2RlbD1sYXJnZQotCi1TaW5jZSB0aGUgdGh1bmsgZnVuY3Rpb24gbWF5IG5vdCBiZSByZWFjaGFibGUgaW4gbGFyZ2UgY29kZSBtb2RlbCwKLS1tY21vZGVsPWxhcmdlIGlzIGluY29tcGF0aWJsZSB3aXRoIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLAotLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuLCAtbWZ1bmN0aW9uLXJldHVybj10aHVuayBhbmQKLS1tZnVuY3Rpb24tcmV0dXJuPXRodW5rLWV4dGVybi4gIElzc3VlIGFuIGVycm9yIHdoZW4gdGhleSBhcmUgdXNlZCB3aXRoCi0tbWNtb2RlbD1sYXJnZS4KLQotZ2NjLwotCi0JQmFja3BvcnQgZnJvbSBtYWlubGluZQotCTIwMTgtMDEtMTQgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLQotCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X3NldF9pbmRpcmVjdF9icmFuY2hfdHlwZSk6IERpc2FsbG93Ci0JLW1jbW9kZWw9bGFyZ2Ugd2l0aCAtbWluZGlyZWN0LWJyYW5jaD10aHVuaywKLQktbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4sIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rIGFuZAotCS1tZnVuY3Rpb24tcmV0dXJuPXRodW5rLWV4dGVybi4KLQkqIGRvYy9pbnZva2UudGV4aTogRG9jdW1lbnQgLW1jbW9kZWw9bGFyZ2UgaXMgaW5jb21wYXRpYmxlIHdpdGgKLQktbWluZGlyZWN0LWJyYW5jaD10aHVuaywgLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuLAotCS1tZnVuY3Rpb24tcmV0dXJuPXRodW5rIGFuZCAtbWZ1bmN0aW9uLXJldHVybj10aHVuay1leHRlcm4uCi0KLWdjYy90ZXN0c3VpdGUvCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JMjAxOC0wMS0xNCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMTAuYzogTmV3IHRlc3QuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstOC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay05LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMTAuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xMS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTkuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE3LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xOC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTkuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIwLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yMS5jOiBMaWtld2lzZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+Ci0KLS0tLQotIGdjYy9jb25maWcvaTM4Ni9pMzg2LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjYgKysrKysrKysrKysrKysrKysrKysrKwotIGdjYy9kb2MvaW52b2tlLnRleGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTEgKysrKysrKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMTAuYyAgfCAgNyArKysrKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay04LmMgICB8ICA3ICsrKysrKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTkuYyAgIHwgIDcgKysrKysrCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEwLmMgICAgICAgfCAgOSArKysrKysrKwotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xMS5jICAgICAgIHwgIDkgKysrKysrKysKLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItOS5jICAgICAgICB8ICA5ICsrKysrKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE3LmMgICAgICAgfCAgNyArKysrKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTguYyAgICAgICB8ICA4ICsrKysrKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTkuYyAgICAgICB8ICA4ICsrKysrKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjAuYyAgICAgICB8ICA5ICsrKysrKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIxLmMgICAgICAgfCAgOSArKysrKysrKwotIDEzIGZpbGVzIGNoYW5nZWQsIDEyNiBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEwLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstOC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTkuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEwLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xMS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItOS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNy5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xOC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xOS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yMC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yMS5jCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotaW5kZXggZWVjYTdlNS4uOWMwMzhiZSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLUBAIC02Mzg5LDYgKzYzODksMTkgQEAgaXg4Nl9zZXRfaW5kaXJlY3RfYnJhbmNoX3R5cGUgKHRyZWUgZm5kZWNsKQotIAl9Ci0gICAgICAgZWxzZQotIAljZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZSA9IGl4ODZfaW5kaXJlY3RfYnJhbmNoOwotKwotKyAgICAgIC8qIC1tY21vZGVsPWxhcmdlIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsKLSsJIG5vciAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4uICAqLwotKyAgICAgIGlmICgoaXg4Nl9jbW9kZWwgPT0gQ01fTEFSR0UgfHwgaXg4Nl9jbW9kZWwgPT0gQ01fTEFSR0VfUElDKQotKwkgICYmICgoY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUKLSsJICAgICAgID09IGluZGlyZWN0X2JyYW5jaF90aHVua19leHRlcm4pCi0rCSAgICAgIHx8IChjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZQotKwkJICA9PSBpbmRpcmVjdF9icmFuY2hfdGh1bmspKSkKLSsJZXJyb3IgKCIlPC1taW5kaXJlY3QtYnJhbmNoPSVzJT4gYW5kICU8LW1jbW9kZWw9bGFyZ2UlPiBhcmUgbm90ICIKLSsJICAgICAgICJjb21wYXRpYmxlIiwKLSsJICAgICAgICgoY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUKLSsJCSA9PSBpbmRpcmVjdF9icmFuY2hfdGh1bmtfZXh0ZXJuKQotKwkJPyAidGh1bmstZXh0ZXJuIiA6ICJ0aHVuayIpKTsKLSAgICAgfQotIAotICAgaWYgKGNmdW4tPm1hY2hpbmUtPmZ1bmN0aW9uX3JldHVybl90eXBlID09IGluZGlyZWN0X2JyYW5jaF91bnNldCkKLUBAIC02NDE0LDYgKzY0MjcsMTkgQEAgaXg4Nl9zZXRfaW5kaXJlY3RfYnJhbmNoX3R5cGUgKHRyZWUgZm5kZWNsKQotIAl9Ci0gICAgICAgZWxzZQotIAljZnVuLT5tYWNoaW5lLT5mdW5jdGlvbl9yZXR1cm5fdHlwZSA9IGl4ODZfZnVuY3Rpb25fcmV0dXJuOwotKwotKyAgICAgIC8qIC1tY21vZGVsPWxhcmdlIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggLW1mdW5jdGlvbi1yZXR1cm49dGh1bmsKLSsJIG5vciAtbWZ1bmN0aW9uLXJldHVybj10aHVuay1leHRlcm4uICAqLwotKyAgICAgIGlmICgoaXg4Nl9jbW9kZWwgPT0gQ01fTEFSR0UgfHwgaXg4Nl9jbW9kZWwgPT0gQ01fTEFSR0VfUElDKQotKwkgICYmICgoY2Z1bi0+bWFjaGluZS0+ZnVuY3Rpb25fcmV0dXJuX3R5cGUKLSsJICAgICAgID09IGluZGlyZWN0X2JyYW5jaF90aHVua19leHRlcm4pCi0rCSAgICAgIHx8IChjZnVuLT5tYWNoaW5lLT5mdW5jdGlvbl9yZXR1cm5fdHlwZQotKwkJICA9PSBpbmRpcmVjdF9icmFuY2hfdGh1bmspKSkKLSsJZXJyb3IgKCIlPC1tZnVuY3Rpb24tcmV0dXJuPSVzJT4gYW5kICU8LW1jbW9kZWw9bGFyZ2UlPiBhcmUgbm90ICIKLSsJICAgICAgICJjb21wYXRpYmxlIiwKLSsJICAgICAgICgoY2Z1bi0+bWFjaGluZS0+ZnVuY3Rpb25fcmV0dXJuX3R5cGUKLSsJCSA9PSBpbmRpcmVjdF9icmFuY2hfdGh1bmtfZXh0ZXJuKQotKwkJPyAidGh1bmstZXh0ZXJuIiA6ICJ0aHVuayIpKTsKLSAgICAgfQotIH0KLSAKLWRpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQotaW5kZXggYWQ5ZjI5NS4uNDhlODI3ZiAxMDA2NDQKLS0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKLSsrKyBiL2djYy9kb2MvaW52b2tlLnRleGkKLUBAIC0yNDIzMCw2ICsyNDIzMCwxMSBAQCB0byBleHRlcm5hbCBjYWxsIGFuZCByZXR1cm4gdGh1bmsgcHJvdmlkZWQgaW4gYSBzZXBhcmF0ZSBvYmplY3QgZmlsZS4KLSBZb3UgY2FuIGNvbnRyb2wgdGhpcyBiZWhhdmlvciBmb3IgYSBzcGVjaWZpYyBmdW5jdGlvbiBieSB1c2luZyB0aGUKLSBmdW5jdGlvbiBhdHRyaWJ1dGUgQGNvZGV7aW5kaXJlY3RfYnJhbmNofS4gIEB4cmVme0Z1bmN0aW9uIEF0dHJpYnV0ZXN9LgotIAotK05vdGUgdGhhdCBAb3B0aW9uey1tY21vZGVsPWxhcmdlfSBpcyBpbmNvbXBhdGlibGUgd2l0aAotK0BvcHRpb257LW1pbmRpcmVjdC1icmFuY2g9dGh1bmt9IG5vcgotK0BvcHRpb257LW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJufSBzaW5jZSB0aGUgdGh1bmsgZnVuY3Rpb24gbWF5Ci0rbm90IGJlIHJlYWNoYWJsZSBpbiBsYXJnZSBjb2RlIG1vZGVsLgotKwotIEBpdGVtIC1tZnVuY3Rpb24tcmV0dXJuPUB2YXJ7Y2hvaWNlfQotIEBvcGluZGV4IC1tZnVuY3Rpb24tcmV0dXJuCi0gQ29udmVydCBmdW5jdGlvbiByZXR1cm4gd2l0aCBAdmFye2Nob2ljZX0uICBUaGUgZGVmYXVsdCBpcyBAc2FtcHtrZWVwfSwKLUBAIC0yNDI0MSw2ICsyNDI0NiwxMiBAQCBvYmplY3QgZmlsZS4gIFlvdSBjYW4gY29udHJvbCB0aGlzIGJlaGF2aW9yIGZvciBhIHNwZWNpZmljIGZ1bmN0aW9uIGJ5Ci0gdXNpbmcgdGhlIGZ1bmN0aW9uIGF0dHJpYnV0ZSBAY29kZXtmdW5jdGlvbl9yZXR1cm59LgotIEB4cmVme0Z1bmN0aW9uIEF0dHJpYnV0ZXN9LgotIAotK05vdGUgdGhhdCBAb3B0aW9uey1tY21vZGVsPWxhcmdlfSBpcyBpbmNvbXBhdGlibGUgd2l0aAotK0BvcHRpb257LW1mdW5jdGlvbi1yZXR1cm49dGh1bmt9IG5vcgotK0BvcHRpb257LW1mdW5jdGlvbi1yZXR1cm49dGh1bmstZXh0ZXJufSBzaW5jZSB0aGUgdGh1bmsgZnVuY3Rpb24gbWF5Ci0rbm90IGJlIHJlYWNoYWJsZSBpbiBsYXJnZSBjb2RlIG1vZGVsLgotKwotKwotIEBpdGVtIC1taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVyCi0gQG9waW5kZXggLW1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIKLSBGb3JjZSBpbmRpcmVjdCBjYWxsIGFuZCBqdW1wIHZpYSByZWdpc3Rlci4KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xMC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMTAuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmEwNjc0YmQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEwLmMKLUBAIC0wLDAgKzEsNyBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7IGxwNjQgfSB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuay1pbmxpbmUgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWNtb2RlbD1sYXJnZSIgfSAqLwotKwotK3ZvaWQKLStiYXIgKHZvaWQpCi0rewotK30KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay04LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay04LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi43YTgwYTg5Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay04LmMKLUBAIC0wLDAgKzEsNyBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7IGxwNjQgfSB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD10aHVuayAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1tY21vZGVsPWxhcmdlIiB9ICovCi0rCi0rdm9pZAotK2JhciAodm9pZCkKLSt7IC8qIHsgZGctZXJyb3IgIictbWluZGlyZWN0LWJyYW5jaD10aHVuaycgYW5kICctbWNtb2RlbD1sYXJnZScgYXJlIG5vdCBjb21wYXRpYmxlIiB9ICovCi0rfQotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTkuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTkuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmQ0ZDQ1YzUKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTkuYwotQEAgLTAsMCArMSw3IEBACi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgbHA2NCB9IH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1tY21vZGVsPWxhcmdlIiB9ICovCi0rCi0rdm9pZAotK2JhciAodm9pZCkKLSt7IC8qIHsgZGctZXJyb3IgIictbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4nIGFuZCAnLW1jbW9kZWw9bGFyZ2UnIGFyZSBub3QgY29tcGF0aWJsZSIgfSAqLwotK30KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEwLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEwLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4zYTJhZWFkCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEwLmMKLUBAIC0wLDAgKzEsOSBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7IGxwNjQgfSB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWluZGlyZWN0LWJyYW5jaD1rZWVwIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1jbW9kZWw9bGFyZ2UiIH0gKi8KLSsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZQSUMiIHsgdGFyZ2V0IGZwaWMgfSB9ICovCi0rCi0rX19hdHRyaWJ1dGVfXyAoKGluZGlyZWN0X2JyYW5jaCgidGh1bmstZXh0ZXJuIikpKQotK3ZvaWQKLStiYXIgKHZvaWQpCi0reyAvKiB7IGRnLWVycm9yICInLW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuJyBhbmQgJy1tY21vZGVsPWxhcmdlJyBhcmUgbm90IGNvbXBhdGlibGUiIH0gKi8KLSt9Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xMS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uOGU1MmYwMwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xMS5jCi1AQCAtMCwwICsxLDkgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyBscDY0IH0gfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9a2VlcCAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1tY21vZGVsPWxhcmdlIiB9ICovCi0rLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1mUElDIiB7IHRhcmdldCBmcGljIH0gfSAqLwotKwotK19fYXR0cmlidXRlX18gKChpbmRpcmVjdF9icmFuY2goInRodW5rLWlubGluZSIpKSkKLSt2b2lkCi0rYmFyICh2b2lkKQotK3sKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci05LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTkuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmJkYWE0ZjYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItOS5jCi1AQCAtMCwwICsxLDkgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyBscDY0IH0gfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1pbmRpcmVjdC1icmFuY2g9a2VlcCAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1tY21vZGVsPWxhcmdlIiB9ICovCi0rLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1mUElDIiB7IHRhcmdldCBmcGljIH0gfSAqLwotKwotK19fYXR0cmlidXRlX18gKChpbmRpcmVjdF9icmFuY2goInRodW5rIikpKQotK3ZvaWQKLStiYXIgKHZvaWQpCi0reyAvKiB7IGRnLWVycm9yICInLW1pbmRpcmVjdC1icmFuY2g9dGh1bmsnIGFuZCAnLW1jbW9kZWw9bGFyZ2UnIGFyZSBub3QgY29tcGF0aWJsZSIgfSAqLwotK30KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMDYwNWUyYwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE3LmMKLUBAIC0wLDAgKzEsNyBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7IGxwNjQgfSB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj10aHVuayAtbWluZGlyZWN0LWJyYW5jaD1rZWVwIC1tY21vZGVsPWxhcmdlIiB9ICovCi0rCi0rdm9pZAotK2JhciAodm9pZCkKLSt7IC8qIHsgZGctZXJyb3IgIictbWZ1bmN0aW9uLXJldHVybj10aHVuaycgYW5kICctbWNtb2RlbD1sYXJnZScgYXJlIG5vdCBjb21wYXRpYmxlIiB9ICovCi0rfQotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xOC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE4LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4zMDcwMTlkCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTguYwotQEAgLTAsMCArMSw4IEBACi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgbHA2NCB9IH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rLWV4dGVybiAtbWluZGlyZWN0LWJyYW5jaD1rZWVwIC1tY21vZGVsPWxhcmdlIiB9ICovCi0rLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1mUElDIiB7IHRhcmdldCBmcGljIH0gfSAqLwotKwotK3ZvaWQKLStiYXIgKHZvaWQpCi0reyAvKiB7IGRnLWVycm9yICInLW1mdW5jdGlvbi1yZXR1cm49dGh1bmstZXh0ZXJuJyBhbmQgJy1tY21vZGVsPWxhcmdlJyBhcmUgbm90IGNvbXBhdGlibGUiIH0gKi8KLSt9Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE5LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTkuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjc3MjYxN2YKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xOS5jCi1AQCAtMCwwICsxLDggQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyBscDY0IH0gfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49a2VlcCAtbWluZGlyZWN0LWJyYW5jaD1rZWVwIC1tY21vZGVsPWxhcmdlIiB9ICovCi0rCi0rX19hdHRyaWJ1dGVfXyAoKGZ1bmN0aW9uX3JldHVybigidGh1bmsiKSkpCi0rdm9pZAotK2JhciAodm9pZCkKLSt7IC8qIHsgZGctZXJyb3IgIictbWZ1bmN0aW9uLXJldHVybj10aHVuaycgYW5kICctbWNtb2RlbD1sYXJnZScgYXJlIG5vdCBjb21wYXRpYmxlIiB9ICovCi0rfQotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yMC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIwLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xZTlmOWJkCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjAuYwotQEAgLTAsMCArMSw5IEBACi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgbHA2NCB9IH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPWtlZXAgLW1pbmRpcmVjdC1icmFuY2g9a2VlcCAtbWNtb2RlbD1sYXJnZSIgfSAqLwotKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItZlBJQyIgeyB0YXJnZXQgZnBpYyB9IH0gKi8KLSsKLStfX2F0dHJpYnV0ZV9fICgoZnVuY3Rpb25fcmV0dXJuKCJ0aHVuay1leHRlcm4iKSkpCi0rdm9pZAotK2JhciAodm9pZCkKLSt7IC8qIHsgZGctZXJyb3IgIictbWZ1bmN0aW9uLXJldHVybj10aHVuay1leHRlcm4nIGFuZCAnLW1jbW9kZWw9bGFyZ2UnIGFyZSBub3QgY29tcGF0aWJsZSIgfSAqLwotK30KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yMS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZWVhMDdmNwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIxLmMKLUBAIC0wLDAgKzEsOSBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7IGxwNjQgfSB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj1rZWVwIC1taW5kaXJlY3QtYnJhbmNoPWtlZXAgLW1jbW9kZWw9bGFyZ2UiIH0gKi8KLSsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZQSUMiIHsgdGFyZ2V0IGZwaWMgfSB9ICovCi0rCi0rX19hdHRyaWJ1dGVfXyAoKGZ1bmN0aW9uX3JldHVybigidGh1bmstaW5saW5lIikpKQotK3ZvaWQKLStiYXIgKHZvaWQpCi0rewotK30KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDA5LVVzZS1JTlZBTElEX1JFR05VTS1pbi1pbmRpcmVjdC10aHVuay1wcm9jZXNzaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDA5LVVzZS1JTlZBTElEX1JFR05VTS1pbi1pbmRpcmVjdC10aHVuay1wcm9jZXNzaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzY0YTJjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAwOS1Vc2UtSU5WQUxJRF9SRUdOVU0taW4taW5kaXJlY3QtdGh1bmstcHJvY2Vzc2luZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyNiArMCwwIEBACi1Gcm9tIDNlZmYyYWRhZGEyYjE2NjdiMGU3NjQ5NmZhNTU5ZTBjMjQ4ZWNkODQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiB1cm9zIDx1cm9zQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IFRodSwgMjUgSmFuIDIwMTggMTk6Mzk6MDEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwOS8xMl0gVXNlIElOVkFMSURfUkVHTlVNIGluIGluZGlyZWN0IHRodW5rIHByb2Nlc3NpbmcKLQotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQkyMDE4LTAxLTE3ICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgotCi0JKiBjb25maWcvaTM4Ni9pMzg2LmMgKGluZGlyZWN0X3RodW5rX25hbWUpOiBEZWNsYXJlIHJlZ25vCi0JYXMgdW5zaWduZWQgaW50LiAgQ29tcGFyZSByZWdubyB3aXRoIElOVkFMSURfUkVHTlVNLgotCShvdXRwdXRfaW5kaXJlY3RfdGh1bmspOiBEaXR0by4KLQkob3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uKTogRGl0dG8uCi0JKGl4ODZfY29kZV9lbmQpOiBEZWNsYXJlIHJlZ25vIGFzIHVuc2lnbmVkIGludC4gIFVzZSBJTlZBTElEX1JFR05VTQotCWluIHRoZSBjYWxsIHRvIG91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbi4KLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvYnJhbmNoZXMvZ2NjLTctYnJhbmNoQDI1NzA2NyAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+Ci0KLS0tLQotIGdjYy9jb25maWcvaTM4Ni9pMzg2LmMgfCAzMCArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotaW5kZXggOWMwMzhiZS4uNDAxMjY1NyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLUBAIC0xMTA4NywxNiArMTEwODcsMTYgQEAgc3RhdGljIGludCBpbmRpcmVjdF90aHVua3NfYm5kX3VzZWQ7Ci0gLyogRmlsbHMgaW4gdGhlIGxhYmVsIG5hbWUgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIGluZGlyZWN0IHRodW5rLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotLWluZGlyZWN0X3RodW5rX25hbWUgKGNoYXIgbmFtZVszMl0sIGludCByZWdubywgYm9vbCBuZWVkX2JuZF9wLAotLQkJICAgICBib29sIHJldF9wKQotK2luZGlyZWN0X3RodW5rX25hbWUgKGNoYXIgbmFtZVszMl0sIHVuc2lnbmVkIGludCByZWdubywKLSsJCSAgICAgYm9vbCBuZWVkX2JuZF9wLCBib29sIHJldF9wKQotIHsKLS0gIGlmIChyZWdubyA+PSAwICYmIHJldF9wKQotKyAgaWYgKHJlZ25vICE9IElOVkFMSURfUkVHTlVNICYmIHJldF9wKQotICAgICBnY2NfdW5yZWFjaGFibGUgKCk7Ci0gCi0gICBpZiAoVVNFX0hJRERFTl9MSU5LT05DRSkKLSAgICAgewotICAgICAgIGNvbnN0IGNoYXIgKmJuZCA9IG5lZWRfYm5kX3AgPyAiX2JuZCIgOiAiIjsKLS0gICAgICBpZiAocmVnbm8gPj0gMCkKLSsgICAgICBpZiAocmVnbm8gIT0gSU5WQUxJRF9SRUdOVU0pCi0gCXsKLSAJICBjb25zdCBjaGFyICpyZWdfcHJlZml4OwotIAkgIGlmIChMRUdBQ1lfSU5UX1JFR05PX1AgKHJlZ25vKSkKLUBAIC0xMTExNCw3ICsxMTExNCw3IEBAIGluZGlyZWN0X3RodW5rX25hbWUgKGNoYXIgbmFtZVszMl0sIGludCByZWdubywgYm9vbCBuZWVkX2JuZF9wLAotICAgICB9Ci0gICBlbHNlCi0gICAgIHsKLS0gICAgICBpZiAocmVnbm8gPj0gMCkKLSsgICAgICBpZiAocmVnbm8gIT0gSU5WQUxJRF9SRUdOVU0pCi0gCXsKLSAJICBpZiAobmVlZF9ibmRfcCkKLSAJICAgIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAobmFtZSwgIkxJVEJSIiwgcmVnbm8pOwotQEAgLTExMTY2LDcgKzExMTY2LDcgQEAgaW5kaXJlY3RfdGh1bmtfbmFtZSAoY2hhciBuYW1lWzMyXSwgaW50IHJlZ25vLCBib29sIG5lZWRfYm5kX3AsCi0gICovCi0gCi0gc3RhdGljIHZvaWQKLS1vdXRwdXRfaW5kaXJlY3RfdGh1bmsgKGJvb2wgbmVlZF9ibmRfcCwgaW50IHJlZ25vKQotK291dHB1dF9pbmRpcmVjdF90aHVuayAoYm9vbCBuZWVkX2JuZF9wLCB1bnNpZ25lZCBpbnQgcmVnbm8pCi0gewotICAgY2hhciBpbmRpcmVjdGxhYmVsMVszMl07Ci0gICBjaGFyIGluZGlyZWN0bGFiZWwyWzMyXTsKLUBAIC0xMTE5Niw3ICsxMTE5Niw3IEBAIG91dHB1dF9pbmRpcmVjdF90aHVuayAoYm9vbCBuZWVkX2JuZF9wLCBpbnQgcmVnbm8pCi0gCi0gICBBU01fT1VUUFVUX0lOVEVSTkFMX0xBQkVMIChhc21fb3V0X2ZpbGUsIGluZGlyZWN0bGFiZWwyKTsKLSAKLS0gIGlmIChyZWdubyA+PSAwKQotKyAgaWYgKHJlZ25vICE9IElOVkFMSURfUkVHTlVNKQotICAgICB7Ci0gICAgICAgLyogTU9WLiAgKi8KLSAgICAgICBydHggeG9wc1syXTsKLUBAIC0xMTIyMCwxMiArMTEyMjAsMTIgQEAgb3V0cHV0X2luZGlyZWN0X3RodW5rIChib29sIG5lZWRfYm5kX3AsIGludCByZWdubykKLSB9Ci0gCi0gLyogT3V0cHV0IGEgZnVudGlvbiB3aXRoIGEgY2FsbCBhbmQgcmV0dXJuIHRodW5rIGZvciBpbmRpcmVjdCBicmFuY2guCi0tICAgSWYgQk5EX1AgaXMgdHJ1ZSwgdGhlIEJORCBwcmVmaXggaXMgbmVlZGVkLiAgIElmIFJFR05PICE9IC0xLCAgdGhlCi0tICAgZnVuY3Rpb24gYWRkcmVzcyBpcyBpbiBSRUdOTy4gIE90aGVyd2lzZSwgdGhlIGZ1bmN0aW9uIGFkZHJlc3MgaXMKLSsgICBJZiBCTkRfUCBpcyB0cnVlLCB0aGUgQk5EIHByZWZpeCBpcyBuZWVkZWQuICBJZiBSRUdOTyAhPSBJTlZBTElEX1JFR05VTSwKLSsgICB0aGUgZnVuY3Rpb24gYWRkcmVzcyBpcyBpbiBSRUdOTy4gIE90aGVyd2lzZSwgdGhlIGZ1bmN0aW9uIGFkZHJlc3MgaXMKLSAgICBvbiB0aGUgdG9wIG9mIHN0YWNrLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotLW91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbiAoYm9vbCBuZWVkX2JuZF9wLCBpbnQgcmVnbm8pCi0rb3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uIChib29sIG5lZWRfYm5kX3AsIHVuc2lnbmVkIGludCByZWdubykKLSB7Ci0gICBjaGFyIG5hbWVbMzJdOwotICAgdHJlZSBkZWNsOwotQEAgLTExMjc0LDcgKzExMjc0LDcgQEAgb3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uIChib29sIG5lZWRfYm5kX3AsIGludCByZWdubykKLSAJQVNNX09VVFBVVF9MQUJFTCAoYXNtX291dF9maWxlLCBuYW1lKTsKLSAgICAgICB9Ci0gCi0tICBpZiAocmVnbm8gPCAwKQotKyAgaWYgKHJlZ25vID09IElOVkFMSURfUkVHTlVNKQotICAgICB7Ci0gICAgICAgLyogQ3JlYXRlIGFsaWFzIGZvciBfX3g4Ni5yZXR1cm5fdGh1bmsvX194ODYucmV0dXJuX3RodW5rX2JuZC4gICovCi0gICAgICAgY2hhciBhbGlhc1szMl07Ci1AQCAtMTEzNDgsMTYgKzExMzQ4LDE2IEBAIHN0YXRpYyB2b2lkCi0gaXg4Nl9jb2RlX2VuZCAodm9pZCkKLSB7Ci0gICBydHggeG9wc1syXTsKLS0gIGludCByZWdubzsKLSsgIHVuc2lnbmVkIGludCByZWdubzsKLSAKLSAgIGlmIChpbmRpcmVjdF90aHVua19uZWVkZWQpCi0tICAgIG91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbiAoZmFsc2UsIC0xKTsKLSsgICAgb3V0cHV0X2luZGlyZWN0X3RodW5rX2Z1bmN0aW9uIChmYWxzZSwgSU5WQUxJRF9SRUdOVU0pOwotICAgaWYgKGluZGlyZWN0X3RodW5rX2JuZF9uZWVkZWQpCi0tICAgIG91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbiAodHJ1ZSwgLTEpOwotKyAgICBvdXRwdXRfaW5kaXJlY3RfdGh1bmtfZnVuY3Rpb24gKHRydWUsIElOVkFMSURfUkVHTlVNKTsKLSAKLSAgIGZvciAocmVnbm8gPSBGSVJTVF9SRVhfSU5UX1JFRzsgcmVnbm8gPD0gTEFTVF9SRVhfSU5UX1JFRzsgcmVnbm8rKykKLSAgICAgewotLSAgICAgIGludCBpID0gcmVnbm8gLSBGSVJTVF9SRVhfSU5UX1JFRyArIExBU1RfSU5UX1JFRyArIDE7Ci0rICAgICAgdW5zaWduZWQgaW50IGkgPSByZWdubyAtIEZJUlNUX1JFWF9JTlRfUkVHICsgTEFTVF9JTlRfUkVHICsgMTsKLSAgICAgICBpZiAoKGluZGlyZWN0X3RodW5rc191c2VkICYgKDEgPDwgaSkpKQotIAlvdXRwdXRfaW5kaXJlY3RfdGh1bmtfZnVuY3Rpb24gKGZhbHNlLCByZWdubyk7Ci0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAxMC1pMzg2LVBhc3MtSU5WQUxJRF9SRUdOVU0tYXMtaW52YWxpZC1yZWdpc3Rlci1udW1iZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMTAtaTM4Ni1QYXNzLUlOVkFMSURfUkVHTlVNLWFzLWludmFsaWQtcmVnaXN0ZXItbnVtYmVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODBkNzQxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAxMC1pMzg2LVBhc3MtSU5WQUxJRF9SRUdOVU0tYXMtaW52YWxpZC1yZWdpc3Rlci1udW1iZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIGM0MzAwZDlhZDY4M2U2OTNjOTBkMDJkNGYxYjEzMTgzYmYyZDRhY2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBoamwgPGhqbEAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBGcmksIDIgRmViIDIwMTggMTY6NDc6MDIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8xMl0gaTM4NjogUGFzcyBJTlZBTElEX1JFR05VTSBhcyBpbnZhbGlkIHJlZ2lzdGVyIG51bWJlcgotCi0JQmFja3BvcnQgZnJvbSBtYWlubGluZQotCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X291dHB1dF9mdW5jdGlvbl9yZXR1cm4pOiBQYXNzCi0JSU5WQUxJRF9SRUdOVU0sIGluc3RlYWQgb2YgLTEsIGFzIGludmFsaWQgcmVnaXN0ZXIgbnVtYmVyIHRvCi0JaW5kaXJlY3RfdGh1bmtfbmFtZSBhbmQgb3V0cHV0X2luZGlyZWN0X3RodW5rLgotCi1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy9icmFuY2hlcy9nY2MtNy1icmFuY2hAMjU3MzQxIDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotLS0tCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyB8IDUgKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLWluZGV4IDQwMTI2NTcuLjY2NTAyZWUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1AQCAtMjgwNTYsNyArMjgwNTYsOCBAQCBpeDg2X291dHB1dF9mdW5jdGlvbl9yZXR1cm4gKGJvb2wgbG9uZ19wKQotIAl7Ci0gCSAgYm9vbCBuZWVkX3RodW5rID0gKGNmdW4tPm1hY2hpbmUtPmZ1bmN0aW9uX3JldHVybl90eXBlCi0gCQkJICAgICA9PSBpbmRpcmVjdF9icmFuY2hfdGh1bmspOwotLQkgIGluZGlyZWN0X3RodW5rX25hbWUgKHRodW5rX25hbWUsIC0xLCBuZWVkX2JuZF9wLCB0cnVlKTsKLSsJICBpbmRpcmVjdF90aHVua19uYW1lICh0aHVua19uYW1lLCBJTlZBTElEX1JFR05VTSwgbmVlZF9ibmRfcCwKLSsJCQkgICAgICAgdHJ1ZSk7Ci0gCSAgaWYgKG5lZWRfYm5kX3ApCi0gCSAgICB7Ci0gCSAgICAgIGluZGlyZWN0X3RodW5rX2JuZF9uZWVkZWQgfD0gbmVlZF90aHVuazsKLUBAIC0yODA2OSw3ICsyODA3MCw3IEBAIGl4ODZfb3V0cHV0X2Z1bmN0aW9uX3JldHVybiAoYm9vbCBsb25nX3ApCi0gCSAgICB9Ci0gCX0KLSAgICAgICBlbHNlCi0tCW91dHB1dF9pbmRpcmVjdF90aHVuayAobmVlZF9ibmRfcCwgLTEpOwotKwlvdXRwdXRfaW5kaXJlY3RfdGh1bmsgKG5lZWRfYm5kX3AsIElOVkFMSURfUkVHTlVNKTsKLSAKLSAgICAgICByZXR1cm4gIiI7Ci0gICAgIH0KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDExLWkzODYtVXBkYXRlLW1mdW5jdGlvbi1yZXR1cm4tZm9yLXJldHVybi13aXRoLXBvcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjQvYmFja3BvcnQvMDAxMS1pMzg2LVVwZGF0ZS1tZnVuY3Rpb24tcmV0dXJuLWZvci1yZXR1cm4td2l0aC1wb3AucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiMDM2ZmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDExLWkzODYtVXBkYXRlLW1mdW5jdGlvbi1yZXR1cm4tZm9yLXJldHVybi13aXRoLXBvcC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1MyArMCwwIEBACi1Gcm9tIGIzYTIyNjljNzg4NDM3OGE5YWZkMzk0YWM3ZTY2OWFhYjA0NDNiNTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBoamwgPGhqbEAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBNb24sIDI2IEZlYiAyMDE4IDE1OjI5OjMwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvMTJdIGkzODY6IFVwZGF0ZSAtbWZ1bmN0aW9uLXJldHVybj0gZm9yIHJldHVybiB3aXRoIHBvcAotCi1XaGVuIC1tZnVuY3Rpb24tcmV0dXJuPSBpcyB1c2VkLCBzaW1wbGVfcmV0dXJuX3BvcF9pbnRlcm5hbCBzaG91bGQgcG9wCi1yZXR1cm4gYWRkcmVzcyBpbnRvIEVDWCByZWdpc3RlciwgYWRqdXN0IHN0YWNrIGJ5IGJ5dGVzIHRvIHBvcCBmcm9tIHN0YWNrCi1hbmQganVtcCB0byB0aGUgcmV0dXJuIHRodW5rIHZpYSBFQ1ggcmVnaXN0ZXIuCi0KLVJldmlzaW9uIDI1Nzk5MiByZW1vdmVkIHRoZSBib29sIGFyZ3VtZW50IGZyb20gaXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wLgotVXBkYXRlIGNvbW1lbnRzIHRvIHJlZmxlY3QgaXQuCi0KLVRlc3RlZCBvbiBpNjg2IGFuZCB4ODYtNjQuCi0KLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcCk6IFVwZGF0ZSBjb21tZW50cy4KLQotCVBSIHRhcmdldC84NDUzMAotCSogY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCAoaXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wKTogUmVtb3ZlCi0JdGhlIGJvb2wgYXJndW1lbnQuCi0JKGl4ODZfb3V0cHV0X2luZGlyZWN0X2Z1bmN0aW9uX3JldHVybik6IE5ldyBwcm90b3R5cGUuCi0JKGl4ODZfc3BsaXRfc2ltcGxlX3JldHVybl9wb3BfaW50ZXJuYWwpOiBMaWtld2lzZS4KLQkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaW5kaXJlY3RfcmV0dXJuX3ZpYV9jeCk6IE5ldy4KLQkoaW5kaXJlY3RfcmV0dXJuX3ZpYV9jeF9ibmQpOiBMaWtld2lzZS4KLQkoaW5kaXJlY3RfdGh1bmtfbmFtZSk6IEhhbmRsZSByZXR1cm4gdmEgQ1hfUkVHLgotCShvdXRwdXRfaW5kaXJlY3RfdGh1bmtfZnVuY3Rpb24pOiBDcmVhdGUgYWxpYXMgZm9yCi0JX194ODZfcmV0dXJuX3RodW5rX1tyZV1jeCBhbmQgX194ODZfcmV0dXJuX3RodW5rX1tyZV1jeF9ibmQuCi0JKGl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcCk6IFJlbW92ZSB0aGUgYm9vbCBhcmd1bWVudC4KLQkoaXg4Nl9vdXRwdXRfaW5kaXJlY3RfZnVuY3Rpb25fcmV0dXJuKTogTmV3IGZ1bmN0aW9uLgotCShpeDg2X3NwbGl0X3NpbXBsZV9yZXR1cm5fcG9wX2ludGVybmFsKTogTGlrZXdpc2UuCi0JKiBjb25maWcvaTM4Ni9pMzg2Lm1kICgqaW5kaXJlY3RfanVtcCk6IERvbid0IHBhc3MgZmFsc2UKLQl0byBpeDg2X291dHB1dF9pbmRpcmVjdF9qbXAuCi0JKCp0YWJsZWp1bXBfMSk6IExpa2V3aXNlLgotCShzaW1wbGVfcmV0dXJuX3BvcF9pbnRlcm5hbCk6IENoYW5nZSBpdCB0byBkZWZpbmVfaW5zbl9hbmRfc3BsaXQuCi0JQ2FsbCBpeDg2X3NwbGl0X3NpbXBsZV9yZXR1cm5fcG9wX2ludGVybmFsIHRvIHNwbGl0IGl0IGZvcgotCS1tZnVuY3Rpb24tcmV0dXJuPS4KLQkoc2ltcGxlX3JldHVybl9pbmRpcmVjdF9pbnRlcm5hbCk6IENhbGwKLQlpeDg2X291dHB1dF9pbmRpcmVjdF9mdW5jdGlvbl9yZXR1cm4gaW5zdGVhZCBvZgotCWl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcC4KLQotZ2NjL3Rlc3RzdWl0ZS8KLQotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQlQUiB0YXJnZXQvODQ1MzAKLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjIuYzogTmV3IHRlc3QuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIzLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yNC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjUuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTI2LmM6IExpa2V3aXNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotLS0tCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYtcHJvdG9zLmggICAgICAgICAgICAgICAgfCAgIDQgKy0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5jICAgICAgICAgICAgICAgICAgICAgICB8IDEyNyArKysrKysrKysrKysrKysrKysrKysrKy0tLS0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5tZCAgICAgICAgICAgICAgICAgICAgICB8ICAxMSArKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjIuYyB8ICAxNSArKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIzLmMgfCAgMTUgKysrKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yNC5jIHwgIDE1ICsrKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjUuYyB8ICAxNSArKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTI2LmMgfCAgNDAgKysrKysrKysrCi0gOCBmaWxlcyBjaGFuZ2VkLCAyMjIgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yMi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yMy5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yNC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yNS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yNi5jCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaCBiL2djYy9jb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oCi1pbmRleCA2MjBkNzBlLi5jN2EwY2NiNSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5oCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaAotQEAgLTMxMSw4ICszMTEsMTAgQEAgZXh0ZXJuIGVudW0gYXR0cl9jcHUgaXg4Nl9zY2hlZHVsZTsKLSAjZW5kaWYKLSAKLSBleHRlcm4gY29uc3QgY2hhciAqIGl4ODZfb3V0cHV0X2NhbGxfaW5zbiAocnR4X2luc24gKmluc24sIHJ0eCBjYWxsX29wKTsKLS1leHRlcm4gY29uc3QgY2hhciAqIGl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcCAocnR4IGNhbGxfb3AsIGJvb2wgcmV0X3ApOwotK2V4dGVybiBjb25zdCBjaGFyICogaXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wIChydHggY2FsbF9vcCk7Ci0gZXh0ZXJuIGNvbnN0IGNoYXIgKiBpeDg2X291dHB1dF9mdW5jdGlvbl9yZXR1cm4gKGJvb2wgbG9uZ19wKTsKLStleHRlcm4gY29uc3QgY2hhciAqIGl4ODZfb3V0cHV0X2luZGlyZWN0X2Z1bmN0aW9uX3JldHVybiAocnR4IHJldF9vcCk7Ci0rZXh0ZXJuIHZvaWQgaXg4Nl9zcGxpdF9zaW1wbGVfcmV0dXJuX3BvcF9pbnRlcm5hbCAocnR4KTsKLSBleHRlcm4gYm9vbCBpeDg2X29wZXJhbmRzX29rX2Zvcl9tb3ZlX211bHRpcGxlIChydHggKm9wZXJhbmRzLCBib29sIGxvYWQsCi0gCQkJCQkJZW51bSBtYWNoaW5lX21vZGUgbW9kZSk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLWluZGV4IDY2NTAyZWUuLjIxYzNjMTggMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1AQCAtMTEwODAsNiArMTEwODAsMTIgQEAgc3RhdGljIGludCBpbmRpcmVjdF90aHVua3NfdXNlZDsKLSAgICBieSBjYWxsIGFuZCByZXR1cm4gdGh1bmtzIGZ1bmN0aW9ucyB3aXRoIHRoZSBCTkQgcHJlZml4LiAgKi8KLSBzdGF0aWMgaW50IGluZGlyZWN0X3RodW5rc19ibmRfdXNlZDsKLSAKLSsvKiBUcnVlIGlmIHJldHVybiB0aHVuayBmdW5jdGlvbiB2aWEgQ1ggaXMgbmVlZGVkLiAgKi8KLStzdGF0aWMgYm9vbCBpbmRpcmVjdF9yZXR1cm5fdmlhX2N4OwotKy8qIFRydWUgaWYgcmV0dXJuIHRodW5rIGZ1bmN0aW9uIHZpYSBDWCB3aXRoIHRoZSBCTkQgcHJlZml4IGlzCi0rICAgbmVlZGVkLiAgKi8KLStzdGF0aWMgYm9vbCBpbmRpcmVjdF9yZXR1cm5fdmlhX2N4X2JuZDsKLSsKLSAjaWZuZGVmIElORElSRUNUX0xBQkVMCi0gIyBkZWZpbmUgSU5ESVJFQ1RfTEFCRUwgIkxJTkQiCi0gI2VuZGlmCi1AQCAtMTEwOTAsMTIgKzExMDk2LDEzIEBAIHN0YXRpYyB2b2lkCi0gaW5kaXJlY3RfdGh1bmtfbmFtZSAoY2hhciBuYW1lWzMyXSwgdW5zaWduZWQgaW50IHJlZ25vLAotIAkJICAgICBib29sIG5lZWRfYm5kX3AsIGJvb2wgcmV0X3ApCi0gewotLSAgaWYgKHJlZ25vICE9IElOVkFMSURfUkVHTlVNICYmIHJldF9wKQotKyAgaWYgKHJlZ25vICE9IElOVkFMSURfUkVHTlVNICYmIHJlZ25vICE9IENYX1JFRyAmJiByZXRfcCkKLSAgICAgZ2NjX3VucmVhY2hhYmxlICgpOwotIAotICAgaWYgKFVTRV9ISURERU5fTElOS09OQ0UpCi0gICAgIHsKLSAgICAgICBjb25zdCBjaGFyICpibmQgPSBuZWVkX2JuZF9wID8gIl9ibmQiIDogIiI7Ci0rICAgICAgY29uc3QgY2hhciAqcmV0ID0gcmV0X3AgPyAicmV0dXJuIiA6ICJpbmRpcmVjdCI7Ci0gICAgICAgaWYgKHJlZ25vICE9IElOVkFMSURfUkVHTlVNKQotIAl7Ci0gCSAgY29uc3QgY2hhciAqcmVnX3ByZWZpeDsKLUBAIC0xMTEwMywxNCArMTExMTAsMTEgQEAgaW5kaXJlY3RfdGh1bmtfbmFtZSAoY2hhciBuYW1lWzMyXSwgdW5zaWduZWQgaW50IHJlZ25vLAotIAkgICAgcmVnX3ByZWZpeCA9IFRBUkdFVF82NEJJVCA/ICJyIiA6ICJlIjsKLSAJICBlbHNlCi0gCSAgICByZWdfcHJlZml4ID0gIiI7Ci0tCSAgc3ByaW50ZiAobmFtZSwgIl9feDg2X2luZGlyZWN0X3RodW5rJXNfJXMlcyIsCi0tCQkgICBibmQsIHJlZ19wcmVmaXgsIHJlZ19uYW1lc1tyZWdub10pOwotKwkgIHNwcmludGYgKG5hbWUsICJfX3g4Nl8lc190aHVuayVzXyVzJXMiLAotKwkJICAgcmV0LCBibmQsIHJlZ19wcmVmaXgsIHJlZ19uYW1lc1tyZWdub10pOwotIAl9Ci0gICAgICAgZWxzZQotLQl7Ci0tCSAgY29uc3QgY2hhciAqcmV0ID0gcmV0X3AgPyAicmV0dXJuIiA6ICJpbmRpcmVjdCI7Ci0tCSAgc3ByaW50ZiAobmFtZSwgIl9feDg2XyVzX3RodW5rJXMiLCByZXQsIGJuZCk7Ci0tCX0KLSsJc3ByaW50ZiAobmFtZSwgIl9feDg2XyVzX3RodW5rJXMiLCByZXQsIGJuZCk7Ci0gICAgIH0KLSAgIGVsc2UKLSAgICAgewotQEAgLTExMjc0LDkgKzExMjc4LDIzIEBAIG91dHB1dF9pbmRpcmVjdF90aHVua19mdW5jdGlvbiAoYm9vbCBuZWVkX2JuZF9wLCB1bnNpZ25lZCBpbnQgcmVnbm8pCi0gCUFTTV9PVVRQVVRfTEFCRUwgKGFzbV9vdXRfZmlsZSwgbmFtZSk7Ci0gICAgICAgfQotIAotKyAgLyogQ3JlYXRlIGFsaWFzIGZvciBfX3g4Nl9yZXR1cm5fdGh1bmsvX194ODZfcmV0dXJuX3RodW5rX2JuZCBvcgotKyAgICAgX194ODZfcmV0dXJuX3RodW5rX2VjeC9fX3g4Nl9yZXR1cm5fdGh1bmtfZWN4X2JuZC4gICovCi0rICBib29sIG5lZWRfYWxpYXM7Ci0gICBpZiAocmVnbm8gPT0gSU5WQUxJRF9SRUdOVU0pCi0rICAgIG5lZWRfYWxpYXMgPSB0cnVlOwotKyAgZWxzZSBpZiAocmVnbm8gPT0gQ1hfUkVHKQotKyAgICB7Ci0rICAgICAgaWYgKG5lZWRfYm5kX3ApCi0rCW5lZWRfYWxpYXMgPSBpbmRpcmVjdF9yZXR1cm5fdmlhX2N4X2JuZDsKLSsgICAgICBlbHNlCi0rCW5lZWRfYWxpYXMgPSBpbmRpcmVjdF9yZXR1cm5fdmlhX2N4OwotKyAgICB9Ci0rICBlbHNlCi0rICAgIG5lZWRfYWxpYXMgPSBmYWxzZTsKLSsKLSsgIGlmIChuZWVkX2FsaWFzKQotICAgICB7Ci0tICAgICAgLyogQ3JlYXRlIGFsaWFzIGZvciBfX3g4Ni5yZXR1cm5fdGh1bmsvX194ODYucmV0dXJuX3RodW5rX2JuZC4gICovCi0gICAgICAgY2hhciBhbGlhc1szMl07Ci0gCi0gICAgICAgaW5kaXJlY3RfdGh1bmtfbmFtZSAoYWxpYXMsIHJlZ25vLCBuZWVkX2JuZF9wLCB0cnVlKTsKLUBAIC0yODAxOSwxOCArMjgwMzcsMTcgQEAgaXg4Nl9vdXRwdXRfaW5kaXJlY3RfYnJhbmNoIChydHggY2FsbF9vcCwgY29uc3QgY2hhciAqeGFzbSwKLSAgIGVsc2UKLSAgICAgaXg4Nl9vdXRwdXRfaW5kaXJlY3RfYnJhbmNoX3ZpYV9wdXNoIChjYWxsX29wLCB4YXNtLCBzaWJjYWxsX3ApOwotIH0KLS0vKiBPdXRwdXQgaW5kaXJlY3QganVtcC4gIENBTExfT1AgaXMgdGhlIGp1bXAgdGFyZ2V0LiAgSnVtcCBpcyBhCi0tICAgZnVuY3Rpb24gcmV0dXJuIGlmIFJFVF9QIGlzIHRydWUuICAqLwotKwotKy8qIE91dHB1dCBpbmRpcmVjdCBqdW1wLiAgQ0FMTF9PUCBpcyB0aGUganVtcCB0YXJnZXQuICAqLwotIAotIGNvbnN0IGNoYXIgKgotLWl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcCAocnR4IGNhbGxfb3AsIGJvb2wgcmV0X3ApCi0raXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wIChydHggY2FsbF9vcCkKLSB7Ci0gICBpZiAoY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUgIT0gaW5kaXJlY3RfYnJhbmNoX2tlZXApCi0gICAgIHsKLS0gICAgICAvKiBXZSBjYW4ndCBoYXZlIHJlZC16b25lIGlmIHRoaXMgaXNuJ3QgYSBmdW5jdGlvbiByZXR1cm4gc2luY2UKLS0JICJjYWxsIiBpbiB0aGUgaW5kaXJlY3QgdGh1bmsgcHVzaGVzIHRoZSByZXR1cm4gYWRkcmVzcyBvbnRvCi0tCSBzdGFjaywgZGVzdHJveWluZyByZWQtem9uZS4gICovCi0tICAgICAgaWYgKCFyZXRfcCAmJiBpeDg2X3JlZF96b25lX3NpemUgIT0gMCkKLSsgICAgICAvKiBXZSBjYW4ndCBoYXZlIHJlZC16b25lIHNpbmNlICJjYWxsIiBpbiB0aGUgaW5kaXJlY3QgdGh1bmsKLSsgICAgICAgICBwdXNoZXMgdGhlIHJldHVybiBhZGRyZXNzIG9udG8gc3RhY2ssIGRlc3Ryb3lpbmcgcmVkLXpvbmUuICAqLwotKyAgICAgIGlmIChpeDg2X3JlZF96b25lX3NpemUgIT0gMCkKLSAJZ2NjX3VucmVhY2hhYmxlICgpOwotIAotICAgICAgIGl4ODZfb3V0cHV0X2luZGlyZWN0X2JyYW5jaCAoY2FsbF9vcCwgIiUwIiwgdHJ1ZSk7Ci1AQCAtMjgwODEsNiArMjgwOTgsODYgQEAgaXg4Nl9vdXRwdXRfZnVuY3Rpb25fcmV0dXJuIChib29sIGxvbmdfcCkKLSAgIHJldHVybiAicmVwJTsgcmV0IjsKLSB9Ci0gCi0rLyogT3V0cHV0IGluZGlyZWN0IGZ1bmN0aW9uIHJldHVybi4gIFJFVF9PUCBpcyB0aGUgZnVuY3Rpb24gcmV0dXJuCi0rICAgdGFyZ2V0LiAgKi8KLSsKLStjb25zdCBjaGFyICoKLStpeDg2X291dHB1dF9pbmRpcmVjdF9mdW5jdGlvbl9yZXR1cm4gKHJ0eCByZXRfb3ApCi0rewotKyAgaWYgKGNmdW4tPm1hY2hpbmUtPmZ1bmN0aW9uX3JldHVybl90eXBlICE9IGluZGlyZWN0X2JyYW5jaF9rZWVwKQotKyAgICB7Ci0rICAgICAgY2hhciB0aHVua19uYW1lWzMyXTsKLSsgICAgICBib29sIG5lZWRfYm5kX3AgPSBpeDg2X2JuZF9wcmVmaXhlZF9pbnNuX3AgKGN1cnJlbnRfb3V0cHV0X2luc24pOwotKyAgICAgIHVuc2lnbmVkIGludCByZWdubyA9IFJFR05PIChyZXRfb3ApOwotKyAgICAgIGdjY19hc3NlcnQgKHJlZ25vID09IENYX1JFRyk7Ci0rCi0rICAgICAgaWYgKGNmdW4tPm1hY2hpbmUtPmZ1bmN0aW9uX3JldHVybl90eXBlCi0rCSAgIT0gaW5kaXJlY3RfYnJhbmNoX3RodW5rX2lubGluZSkKLSsJewotKwkgIGJvb2wgbmVlZF90aHVuayA9IChjZnVuLT5tYWNoaW5lLT5mdW5jdGlvbl9yZXR1cm5fdHlwZQotKwkJCSAgICAgPT0gaW5kaXJlY3RfYnJhbmNoX3RodW5rKTsKLSsJICBpbmRpcmVjdF90aHVua19uYW1lICh0aHVua19uYW1lLCByZWdubywgbmVlZF9ibmRfcCwgdHJ1ZSk7Ci0rCSAgaWYgKG5lZWRfYm5kX3ApCi0rCSAgICB7Ci0rCSAgICAgIGlmIChuZWVkX3RodW5rKQotKwkJewotKwkJICBpbmRpcmVjdF9yZXR1cm5fdmlhX2N4X2JuZCA9IHRydWU7Ci0rCQkgIGluZGlyZWN0X3RodW5rc19ibmRfdXNlZCB8PSAxIDw8IENYX1JFRzsKLSsJCX0KLSsJICAgICAgZnByaW50ZiAoYXNtX291dF9maWxlLCAiXHRibmQgam1wXHQlc1xuIiwgdGh1bmtfbmFtZSk7Ci0rCSAgICB9Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICBpZiAobmVlZF90aHVuaykKLSsJCXsKLSsJCSAgaW5kaXJlY3RfcmV0dXJuX3ZpYV9jeCA9IHRydWU7Ci0rCQkgIGluZGlyZWN0X3RodW5rc191c2VkIHw9IDEgPDwgQ1hfUkVHOwotKwkJfQotKwkgICAgICBmcHJpbnRmIChhc21fb3V0X2ZpbGUsICJcdGptcFx0JXNcbiIsIHRodW5rX25hbWUpOwotKwkgICAgfQotKwl9Ci0rICAgICAgZWxzZQotKwlvdXRwdXRfaW5kaXJlY3RfdGh1bmsgKG5lZWRfYm5kX3AsIHJlZ25vKTsKLSsKLSsgICAgICByZXR1cm4gIiI7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgcmV0dXJuICIlIWptcFx0JUEwIjsKLSt9Ci0rCi0rLyogU3BsaXQgc2ltcGxlIHJldHVybiB3aXRoIHBvcHBpbmcgUE9QQyBieXRlcyBmcm9tIHN0YWNrIHRvIGluZGlyZWN0Ci0rICAgYnJhbmNoIHdpdGggc3RhY2sgYWRqdXN0bWVudCAuICAqLwotKwotK3ZvaWQKLStpeDg2X3NwbGl0X3NpbXBsZV9yZXR1cm5fcG9wX2ludGVybmFsIChydHggcG9wYykKLSt7Ci0rICBzdHJ1Y3QgbWFjaGluZV9mdW5jdGlvbiAqbSA9IGNmdW4tPm1hY2hpbmU7Ci0rICBydHggZWN4ID0gZ2VuX3J0eF9SRUcgKFNJbW9kZSwgQ1hfUkVHKTsKLSsgIHJ0eF9pbnNuICppbnNuOwotKwotKyAgLyogVGhlcmUgaXMgbm8gInBhc2NhbCIgY2FsbGluZyBjb252ZW50aW9uIGluIGFueSA2NGJpdCBBQkkuICAqLwotKyAgZ2NjX2Fzc2VydCAoIVRBUkdFVF82NEJJVCk7Ci0rCi0rICBpbnNuID0gZW1pdF9pbnNuIChnZW5fcG9wIChlY3gpKTsKLSsgIG0tPmZzLmNmYV9vZmZzZXQgLT0gVU5JVFNfUEVSX1dPUkQ7Ci0rICBtLT5mcy5zcF9vZmZzZXQgLT0gVU5JVFNfUEVSX1dPUkQ7Ci0rCi0rICBydHggeCA9IHBsdXNfY29uc3RhbnQgKFBtb2RlLCBzdGFja19wb2ludGVyX3J0eCwgVU5JVFNfUEVSX1dPUkQpOwotKyAgeCA9IGdlbl9ydHhfU0VUIChzdGFja19wb2ludGVyX3J0eCwgeCk7Ci0rICBhZGRfcmVnX25vdGUgKGluc24sIFJFR19DRkFfQURKVVNUX0NGQSwgeCk7Ci0rICBhZGRfcmVnX25vdGUgKGluc24sIFJFR19DRkFfUkVHSVNURVIsIGdlbl9ydHhfU0VUIChlY3gsIHBjX3J0eCkpOwotKyAgUlRYX0ZSQU1FX1JFTEFURURfUCAoaW5zbikgPSAxOwotKwotKyAgeCA9IGdlbl9ydHhfUExVUyAoUG1vZGUsIHN0YWNrX3BvaW50ZXJfcnR4LCBwb3BjKTsKLSsgIHggPSBnZW5fcnR4X1NFVCAoc3RhY2tfcG9pbnRlcl9ydHgsIHgpOwotKyAgaW5zbiA9IGVtaXRfaW5zbiAoeCk7Ci0rICBhZGRfcmVnX25vdGUgKGluc24sIFJFR19DRkFfQURKVVNUX0NGQSwgeCk7Ci0rICBSVFhfRlJBTUVfUkVMQVRFRF9QIChpbnNuKSA9IDE7Ci0rCi0rICAvKiBOb3cgcmV0dXJuIGFkZHJlc3MgaXMgaW4gRUNYLiAgKi8KLSsgIGVtaXRfanVtcF9pbnNuIChnZW5fc2ltcGxlX3JldHVybl9pbmRpcmVjdF9pbnRlcm5hbCAoZWN4KSk7Ci0rfQotKwotIC8qIE91dHB1dCB0aGUgYXNzZW1ibHkgZm9yIGEgY2FsbCBpbnN0cnVjdGlvbi4gICovCi0gCi0gY29uc3QgY2hhciAqCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZAotaW5kZXggMDVhODhmZi4uODU3NDY2YSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZAotQEAgLTExODEzLDcgKzExODEzLDcgQEAKLSAoZGVmaW5lX2luc24gIippbmRpcmVjdF9qdW1wIgotICAgWyhzZXQgKHBjKSAobWF0Y2hfb3BlcmFuZDpXIDAgImluZGlyZWN0X2JyYW5jaF9vcGVyYW5kIiAickJ3IikpXQotICAgIiIKLS0gICIqIHJldHVybiBpeDg2X291dHB1dF9pbmRpcmVjdF9qbXAgKG9wZXJhbmRzWzBdLCBmYWxzZSk7IgotKyAgIiogcmV0dXJuIGl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcCAob3BlcmFuZHNbMF0pOyIKLSAgIFsoc2V0IChhdHRyICJ0eXBlIikKLSAgICAgIChpZl90aGVuX2Vsc2UgKG1hdGNoX3Rlc3QgIihjZnVuLT5tYWNoaW5lLT5pbmRpcmVjdF9icmFuY2hfdHlwZQotIAkJCQkgIT0gaW5kaXJlY3RfYnJhbmNoX2tlZXApIikKLUBAIC0xMTg2OCw3ICsxMTg2OCw3IEBACi0gICBbKHNldCAocGMpIChtYXRjaF9vcGVyYW5kOlcgMCAiaW5kaXJlY3RfYnJhbmNoX29wZXJhbmQiICJyQnciKSkKLSAgICAodXNlIChsYWJlbF9yZWYgKG1hdGNoX29wZXJhbmQgMSkpKV0KLSAgICIiCi0tICAiKiByZXR1cm4gaXg4Nl9vdXRwdXRfaW5kaXJlY3Rfam1wIChvcGVyYW5kc1swXSwgZmFsc2UpOyIKLSsgICIqIHJldHVybiBpeDg2X291dHB1dF9pbmRpcmVjdF9qbXAgKG9wZXJhbmRzWzBdKTsiCi0gICBbKHNldCAoYXR0ciAidHlwZSIpCi0gICAgICAoaWZfdGhlbl9lbHNlIChtYXRjaF90ZXN0ICIoY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUKLSAJCQkJICE9IGluZGlyZWN0X2JyYW5jaF9rZWVwKSIpCi1AQCAtMTI1MjAsMTEgKzEyNTIwLDE0IEBACi0gICAgKHNldF9hdHRyICJwcmVmaXhfcmVwIiAiMSIpCi0gICAgKHNldF9hdHRyICJtb2RybSIgIjAiKV0pCi0gCi0tKGRlZmluZV9pbnNuICJzaW1wbGVfcmV0dXJuX3BvcF9pbnRlcm5hbCIKLSsoZGVmaW5lX2luc25fYW5kX3NwbGl0ICJzaW1wbGVfcmV0dXJuX3BvcF9pbnRlcm5hbCIKLSAgIFsoc2ltcGxlX3JldHVybikKLSAgICAodXNlIChtYXRjaF9vcGVyYW5kOlNJIDAgImNvbnN0X2ludF9vcGVyYW5kIikpXQotICAgInJlbG9hZF9jb21wbGV0ZWQiCi0gICAiJSFyZXRcdCUwIgotKyAgIiYmIGNmdW4tPm1hY2hpbmUtPmZ1bmN0aW9uX3JldHVybl90eXBlICE9IGluZGlyZWN0X2JyYW5jaF9rZWVwIgotKyAgWyhjb25zdF9pbnQgMCldCi0rICAiaXg4Nl9zcGxpdF9zaW1wbGVfcmV0dXJuX3BvcF9pbnRlcm5hbCAob3BlcmFuZHNbMF0pOyBET05FOyIKLSAgIFsoc2V0X2F0dHIgImxlbmd0aCIgIjMiKQotICAgIChzZXRfYXR0ciAiYXRvbV91bml0IiAiamV1IikKLSAgICAoc2V0X2F0dHIgImxlbmd0aF9pbW1lZGlhdGUiICIyIikKLUBAIC0xMjUzNSw3ICsxMjUzOCw3IEBACi0gICBbKHNpbXBsZV9yZXR1cm4pCi0gICAgKHVzZSAobWF0Y2hfb3BlcmFuZDpTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiciIpKV0KLSAgICJyZWxvYWRfY29tcGxldGVkIgotLSAgIiogcmV0dXJuIGl4ODZfb3V0cHV0X2luZGlyZWN0X2ptcCAob3BlcmFuZHNbMF0sIHRydWUpOyIKLSsgICIqIHJldHVybiBpeDg2X291dHB1dF9pbmRpcmVjdF9mdW5jdGlvbl9yZXR1cm4gKG9wZXJhbmRzWzBdKTsiCi0gICBbKHNldCAoYXR0ciAidHlwZSIpCi0gICAgICAoaWZfdGhlbl9lbHNlIChtYXRjaF90ZXN0ICIoY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUKLSAJCQkJICE9IGluZGlyZWN0X2JyYW5jaF9rZWVwKSIpCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjIuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjg5ZTA4NmQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yMi5jCi1AQCAtMCwwICsxLDE1IEBACi0rLyogUFIgdGFyZ2V0L3I4NDUzMCAqLwotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBpYTMyIH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rIiB9ICovCi0rCi0rc3RydWN0IHMgeyBfQ29tcGxleCB1bnNpZ25lZCBzaG9ydCB4OyB9OwotK3N0cnVjdCBzIGdzID0geyAxMDAgKyAyMDBpIH07Ci0rc3RydWN0IHMgX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKSBmb28gKHZvaWQpIHsgcmV0dXJuIGdzOyB9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJwb3BsXFtcXHQgXF0qJWVjeCIgMSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImxlYVxbbFxdP1xbXFx0IFxdKjRcXCglZXNwXFwpLCAlZXNwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfcmV0dXJuX3RodW5rX2VjeCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTIzLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjMuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjQzZjBjY2EKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yMy5jCi1AQCAtMCwwICsxLDE1IEBACi0rLyogUFIgdGFyZ2V0L3I4NDUzMCAqLwotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCBpYTMyIH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZnVuY3Rpb24tcmV0dXJuPXRodW5rLWV4dGVybiIgfSAqLwotKwotK3N0cnVjdCBzIHsgX0NvbXBsZXggdW5zaWduZWQgc2hvcnQgeDsgfTsKLStzdHJ1Y3QgcyBncyA9IHsgMTAwICsgMjAwaSB9OwotK3N0cnVjdCBzIF9fYXR0cmlidXRlX18oKG5vaW5saW5lKSkgZm9vICh2b2lkKSB7IHJldHVybiBnczsgfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAicG9wbFxbXFx0IFxdKiVlY3giIDEgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJsZWFcW2xcXT9cW1xcdCBcXSo0XFwoJWVzcFxcKSwgJWVzcCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X3JldHVybl90aHVua19lY3giIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0bGZlbmNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yNC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uODcyOWUzNQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTI0LmMKLUBAIC0wLDAgKzEsMTUgQEAKLSsvKiBQUiB0YXJnZXQvcjg0NTMwICovCi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGlhMzIgfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1mdW5jdGlvbi1yZXR1cm49dGh1bmstaW5saW5lIiB9ICovCi0rCi0rc3RydWN0IHMgeyBfQ29tcGxleCB1bnNpZ25lZCBzaG9ydCB4OyB9OwotK3N0cnVjdCBzIGdzID0geyAxMDAgKyAyMDBpIH07Ci0rc3RydWN0IHMgX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKSBmb28gKHZvaWQpIHsgcmV0dXJuIGdzOyB9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJwb3BsXFtcXHQgXF0qJWVjeCIgMSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImxlYVxbbFxdP1xbXFx0IFxdKjRcXCglZXNwXFwpLCAlZXNwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJqbXBcWyBcdFxdKl9feDg2X3JldHVybl90aHVua19lY3giIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTI1LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5mNzM1NTNjCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjUuYwotQEAgLTAsMCArMSwxNSBAQAotKy8qIFBSIHRhcmdldC9yODQ1MzAgKi8KLSsvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgaWEzMiB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZ1bmN0aW9uLXJldHVybj10aHVuayAtZmNoZWNrLXBvaW50ZXItYm91bmRzIC1tbXB4IC1mbm8tcGljIiB9ICovCi0rCi0rc3RydWN0IHMgeyBfQ29tcGxleCB1bnNpZ25lZCBzaG9ydCB4OyB9OwotK3N0cnVjdCBzIGdzID0geyAxMDAgKyAyMDBpIH07Ci0rc3RydWN0IHMgX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKSBmb28gKHZvaWQpIHsgcmV0dXJuIGdzOyB9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJwb3BsXFtcXHQgXF0qJWVjeCIgMSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImxlYVxbbFxdP1xbXFx0IFxdKjRcXCglZXNwXFwpLCAlZXNwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfcmV0dXJuX3RodW5rX2JuZF9lY3giIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0yNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTI2LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi45MTQ0ZTk4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMjYuYwotQEAgLTAsMCArMSw0MCBAQAotKy8qIFBSIHRhcmdldC9yODQ1MzAgKi8KLSsvKiB7IGRnLWRvIHJ1biB9ICovCi0rLyogeyBkZy1vcHRpb25zICItT3MgLW1mdW5jdGlvbi1yZXR1cm49dGh1bmsiIH0gKi8KLSsKLStzdHJ1Y3QgUyB7IGludCBpOyB9OwotK19fYXR0cmlidXRlX18oKGNvbnN0LCBub2lubGluZSwgbm9jbG9uZSkpCi0rc3RydWN0IFMgZm9vIChpbnQgeCkKLSt7Ci0rICBzdHJ1Y3QgUyBzOwotKyAgcy5pID0geDsKLSsgIHJldHVybiBzOwotK30KLSsKLStpbnQgYVsyMDQ4XSwgYlsyMDQ4XSwgY1syMDQ4XSwgZFsyMDQ4XTsKLStzdHJ1Y3QgUyBlWzIwNDhdOwotKwotK19fYXR0cmlidXRlX18oKG5vaW5saW5lLCBub2Nsb25lKSkgdm9pZAotK2JhciAodm9pZCkKLSt7Ci0rICBpbnQgaTsKLSsgIGZvciAoaSA9IDA7IGkgPCAxMDI0OyBpKyspCi0rICAgIHsKLSsgICAgICBlW2ldID0gZm9vIChpKTsKLSsgICAgICBhW2krMl0gPSBhW2ldICsgYVtpKzFdOwotKyAgICAgIGJbMTBdID0gYlsxMF0gKyBpOwotKyAgICAgIGNbaV0gPSBjWzIwNDcgLSBpXTsKLSsgICAgICBkW2ldID0gZFtpICsgMV07Ci0rICAgIH0KLSt9Ci0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSsgIGludCBpOwotKyAgYmFyICgpOwotKyAgZm9yIChpID0gMDsgaSA8IDEwMjQ7IGkrKykKLSsgICAgaWYgKGVbaV0uaSAhPSBpKQotKyAgICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKLSsgIHJldHVybiAwOwotK30KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDEyLWkzODYtQWRkLVRBUkdFVF9JTkRJUkVDVF9CUkFOQ0hfUkVHSVNURVIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMTItaTM4Ni1BZGQtVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUwYWM1Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMTItaTM4Ni1BZGQtVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMDQgKzAsMCBAQAotRnJvbSA3YmExOTJkMTFhNDNkMjRjZTQyN2EzZGZjZTBhZDA1OTJiZDUyODMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogaGpsIDxoamxAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgotRGF0ZTogTW9uLCAyNiBGZWIgMjAxOCAxNzowMDo0NiArMDAwMAotU3ViamVjdDogW1BBVENIIDEyLzEyXSBpMzg2OiBBZGQgVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUgotCi1Gb3IKLQotLS0tCi1zdHJ1Y3QgQyB7Ci0gIHZpcnR1YWwgfkMoKTsKLSAgdmlydHVhbCB2b2lkIGYoKTsKLX07Ci0KLXZvaWQKLWYgKEMgKnApCi17Ci0gIHAtPmYoKTsKLSAgcC0+ZigpOwotfQotLS0tCi0KLS1taW5kaXJlY3QtYnJhbmNoPXRodW5rLWV4dGVybiAtTzIgb24geDg2LTY0IEdOVS9MaW51eCBnZW5lcmF0ZXM6Ci0KLV9aMWZQMUM6Ci0uTEZCMDoKLSAgICAgICAgLmNmaV9zdGFydHByb2MKLSAgICAgICAgcHVzaHEgICAlcmJ4Ci0gICAgICAgIC5jZmlfZGVmX2NmYV9vZmZzZXQgMTYKLSAgICAgICAgLmNmaV9vZmZzZXQgMywgLTE2Ci0gICAgICAgIG1vdnEgICAgKCVyZGkpLCAlcmF4Ci0gICAgICAgIG1vdnEgICAgJXJkaSwgJXJieAotICAgICAgICBqbXAgICAgIC5MSU5EMQotLkxJTkQwOgotICAgICAgICBwdXNocSAgIDE2KCVyYXgpCi0gICAgICAgIGptcCAgICAgX194ODZfaW5kaXJlY3RfdGh1bmsKLS5MSU5EMToKLSAgICAgICAgY2FsbCAgICAuTElORDAKLSAgICAgICAgbW92cSAgICAoJXJieCksICVyYXgKLSAgICAgICAgbW92cSAgICAlcmJ4LCAlcmRpCi0gICAgICAgIHBvcHEgICAgJXJieAotICAgICAgICAuY2ZpX2RlZl9jZmFfb2Zmc2V0IDgKLSAgICAgICAgbW92cSAgICAxNiglcmF4KSwgJXJheAotICAgICAgICBqbXAgICAgIF9feDg2X2luZGlyZWN0X3RodW5rX3JheAotICAgICAgICAuY2ZpX2VuZHByb2MKLQoteDg2LTY0IGlzIHN1cHBvc2VkIHRvIGhhdmUgYXN5bmNocm9ub3VzIHVud2luZCB0YWJsZXMgYnkgZGVmYXVsdCwgYnV0Ci10aGVyZSBpcyBub3RoaW5nIHRoYXQgcmVmbGVjdHMgdGhlIGNoYW5nZSBpbiB0aGUgKHJlbGF0aXZlKSBmcmFtZQotYWRkcmVzcyBhZnRlciAuTElORDAuICBUaGF0IHJlZ2lvbiByZWFsbHkgaGFzIHRvIGJlIG1vdmVkIG91dHNpZGUgb2YKLXRoZSAuY2ZpX3N0YXJ0cHJvYy8uY2ZpX2VuZHByb2MgYnJhY2tldC4KLQotVGhpcyBwYXRjaCBhZGRzIFRBUkdFVF9JTkRJUkVDVF9CUkFOQ0hfUkVHSVNURVIgdG8gZm9yY2UgaW5kaXJlY3QKLWJyYW5jaCB2aWEgcmVnaXN0ZXIgd2hlbmV2ZXIgLW1pbmRpcmVjdC1icmFuY2g9IGlzIHVzZWQuICBOb3csCi0tbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLU8yIG9uIHg4Ni02NCBHTlUvTGludXggZ2VuZXJhdGVzOgotCi1fWjFmUDFDOgotLkxGQjA6Ci0JLmNmaV9zdGFydHByb2MKLQlwdXNocQklcmJ4Ci0JLmNmaV9kZWZfY2ZhX29mZnNldCAxNgotCS5jZmlfb2Zmc2V0IDMsIC0xNgotCW1vdnEJKCVyZGkpLCAlcmF4Ci0JbW92cQklcmRpLCAlcmJ4Ci0JbW92cQkxNiglcmF4KSwgJXJheAotCWNhbGwJX194ODZfaW5kaXJlY3RfdGh1bmtfcmF4Ci0JbW92cQkoJXJieCksICVyYXgKLQltb3ZxCSVyYngsICVyZGkKLQlwb3BxCSVyYngKLQkuY2ZpX2RlZl9jZmFfb2Zmc2V0IDgKLQltb3ZxCTE2KCVyYXgpLCAlcmF4Ci0Jam1wCV9feDg2X2luZGlyZWN0X3RodW5rX3JheAotCS5jZmlfZW5kcHJvYwotCi1zbyB0aGF0ICItbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4iIGlzIGVxdWl2YWxlbnQgdG8KLSItbWluZGlyZWN0LWJyYW5jaD10aHVuay1leHRlcm4gLW1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIiLCB3aGljaCBpcwotdXNlZCBieSBMaW51eCBrZXJuZWwuCi0KLWdjYy8KLQotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQlQUiB0YXJnZXQvODQwMzkKLQkqIGNvbmZpZy9pMzg2L2NvbnN0cmFpbnRzLm1kIChCcyk6IFJlcGxhY2UKLQlpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciB3aXRoCi0JVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUi4KLQkoQncpOiBMaWtld2lzZS4KLQkqIGNvbmZpZy9pMzg2L2kzODYubWQgKGluZGlyZWN0X2p1bXApOiBMaWtld2lzZS4KLQkodGFibGVqdW1wKTogTGlrZXdpc2UuCi0JKCpzaWJjYWxsX21lbW9yeSk6IExpa2V3aXNlLgotCSgqc2liY2FsbF92YWx1ZV9tZW1vcnkpOiBMaWtld2lzZS4KLQlQZWVwaG9sZXMgb2YgaW5kaXJlY3QgY2FsbCBhbmQganVtcCB2aWEgbWVtb3J5OiBMaWtld2lzZS4KLQkoKnNpYmNhbGxfR09UXzMyKTogRGlzYWxsb3dlZCBmb3IgVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUi4KLQkoKnNpYmNhbGxfdmFsdWVfR09UXzMyKTogTGlrZXdpc2UuCi0JKiBjb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kIChpbmRpcmVjdF9icmFuY2hfb3BlcmFuZCk6IExpa2V3aXNlLgotCShHT1RfbWVtb3J5X29wZXJhbmQpOiBMaWtld2lzZS4KLQkoY2FsbF9pbnNuX29wZXJhbmQpOiBMaWtld2lzZS4KLQkoc2liY2FsbF9pbnNuX29wZXJhbmQpOiBMaWtld2lzZS4KLQkoR09UMzJfc3ltYm9sX29wZXJhbmQpOiBMaWtld2lzZS4KLQkqIGNvbmZpZy9pMzg2L2kzODYuaCAoVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUik6IE5ldy4KLQotZ2NjL3Rlc3RzdWl0ZS8KLQotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQlQUiB0YXJnZXQvODQwMzkKLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0xLmM6IFVwZGF0ZWQuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay02LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTcuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMi5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTMuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNS5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci03LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0yLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS01LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay05LmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMC5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTEuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEyLmM6IExpa2V3aXNlLgotCSogZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMy5jOiBMaWtld2lzZS4KLQkqIGdjYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTQuYzogTGlrZXdpc2UuCi0JKiBnY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE1LmM6IExpa2V3aXNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotLS0tCi0gZ2NjL2NvbmZpZy9pMzg2L2NvbnN0cmFpbnRzLm1kICAgICAgICAgICAgICAgICAgICAgfCAgNCArKy0tCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNSArKysrCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyOCArKysrKysrKysrKysrLS0tLS0tLS0tCi0gZ2NjL2NvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQgICAgICAgICAgICAgICAgICAgICAgfCAgNiArKy0tLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYyAgIHwgIDUgKystLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYyAgIHwgIDUgKystLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTMuYyAgIHwgIDUgKystLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTQuYyAgIHwgIDUgKystLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTUuYyAgIHwgIDYgKysrLS0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay02LmMgICB8IDEyICsrKysrKy0tLS0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay03LmMgICB8ICA1ICsrLS0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jICAgICAgICB8ICA1ICsrLS0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMi5jICAgICAgICB8ICA1ICsrLS0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMy5jICAgICAgICB8ICAzICstLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci00LmMgICAgICAgIHwgIDMgKy0tCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYyAgICAgICAgfCAgOSArKysrLS0tCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYyAgICAgICAgfCAgOSArKysrLS0tCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTcuYyAgICAgICAgfCAgNSArKy0tCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMS5jICAgICAgICAgfCAgNiArKy0tLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYyAgICAgICAgIHwgIDYgKystLS0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmMgICAgICAgICB8ICA1ICsrLS0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC00LmMgICAgICAgICB8ICA3ICsrKy0tLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTEuYyAgICAgIHwgIDUgKystLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYyAgICAgIHwgIDUgKystLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTMuYyAgICAgIHwgIDkgKysrKy0tLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYyAgICAgIHwgIDYgKystLS0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmMgICAgICB8ICA2ICsrKy0tCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNi5jICAgICAgfCAgOCArKystLS0tCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNy5jICAgICAgfCAgNSArKy0tCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMS5jICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTIuYyAgICAgIHwgIDIgKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmMgICAgICB8ICAyICstCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNC5jICAgICAgfCAgMiArLQotIC4uLi9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTUuYyAgICAgIHwgIDMgKystCi0gLi4uL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNi5jICAgICAgfCAgMyArKy0KLSAuLi4vZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmMgICAgICB8ICA0ICsrLS0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTAuYyAgICAgICB8ICA5ICsrKy0tLS0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTEuYyAgICAgICB8ICA5ICsrKy0tLS0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTIuYyAgICAgICB8ICA4ICsrKy0tLS0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTMuYyAgICAgICB8ICA1ICsrLS0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTQuYyAgICAgICB8ICA3ICsrKy0tLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNS5jICAgICAgIHwgIDcgKysrLS0tCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTkuYyAgICAgICAgfCAxMyArKysrLS0tLS0tCi0gNDMgZmlsZXMgY2hhbmdlZCwgMTI4IGluc2VydGlvbnMoKyksIDE0MSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9jb25zdHJhaW50cy5tZCBiL2djYy9jb25maWcvaTM4Ni9jb25zdHJhaW50cy5tZAotaW5kZXggOTIwNGM4ZS4uZWY2ODRhOSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9jb25zdHJhaW50cy5tZAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2NvbnN0cmFpbnRzLm1kCi1AQCAtMTcyLDcgKzE3Miw3IEBACi0gCi0gKGRlZmluZV9jb25zdHJhaW50ICJCcyIKLSAgICJAaW50ZXJuYWwgU2liY2FsbCBtZW1vcnkgb3BlcmFuZC4iCi0tICAoaW9yIChhbmQgKG5vdCAobWF0Y2hfdGVzdCAiaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIiKSkKLSsgIChpb3IgKGFuZCAobm90IChtYXRjaF90ZXN0ICJUQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSIikpCi0gCSAgICAobm90IChtYXRjaF90ZXN0ICJUQVJHRVRfWDMyIikpCi0gCSAgICAobWF0Y2hfb3BlcmFuZCAwICJzaWJjYWxsX21lbW9yeV9vcGVyYW5kIikpCi0gICAgICAgIChhbmQgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIgJiYgUG1vZGUgPT0gREltb2RlIikKLUBAIC0xODAsNyArMTgwLDcgQEAKLSAKLSAoZGVmaW5lX2NvbnN0cmFpbnQgIkJ3IgotICAgIkBpbnRlcm5hbCBDYWxsIG1lbW9yeSBvcGVyYW5kLiIKLS0gIChpb3IgKGFuZCAobm90IChtYXRjaF90ZXN0ICJpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciIpKQotKyAgKGlvciAoYW5kIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9JTkRJUkVDVF9CUkFOQ0hfUkVHSVNURVIiKSkKLSAJICAgIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIiKSkKLSAJICAgIChtYXRjaF9vcGVyYW5kIDAgIm1lbW9yeV9vcGVyYW5kIikpCi0gICAgICAgIChhbmQgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIgJiYgUG1vZGUgPT0gREltb2RlIikKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5oIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaAotaW5kZXggYjM0YmMxMS4uMTgxNmQ3MSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmgKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmgKLUBAIC0yNjc2LDYgKzI2NzYsMTEgQEAgZXh0ZXJuIHZvaWQgZGVidWdfZGlzcGF0Y2hfd2luZG93IChpbnQpOwotICNkZWZpbmUgVEFSR0VUX1JFQ0lQX1ZFQ19ESVYJKChyZWNpcF9tYXNrICYgUkVDSVBfTUFTS19WRUNfRElWKSAhPSAwKQotICNkZWZpbmUgVEFSR0VUX1JFQ0lQX1ZFQ19TUVJUCSgocmVjaXBfbWFzayAmIFJFQ0lQX01BU0tfVkVDX1NRUlQpICE9IDApCi0gCi0rCi0rI2RlZmluZSBUQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSIFwKLSsgIChpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciBcCi0rICAgfHwgY2Z1bi0+bWFjaGluZS0+aW5kaXJlY3RfYnJhbmNoX3R5cGUgIT0gaW5kaXJlY3RfYnJhbmNoX2tlZXApCi0rCi0gI2RlZmluZSBJWDg2X0hMRV9BQ1FVSVJFICgxIDw8IDE2KQotICNkZWZpbmUgSVg4Nl9ITEVfUkVMRUFTRSAoMSA8PCAxNykKLSAKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZCBiL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kCi1pbmRleCA4NTc0NjZhLi42YTZkYzI2IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kCi1AQCAtMTE4MDUsNyArMTE4MDUsNyBAQAotICAgWyhzZXQgKHBjKSAobWF0Y2hfb3BlcmFuZCAwICJpbmRpcmVjdF9icmFuY2hfb3BlcmFuZCIpKV0KLSAgICIiCi0gewotLSAgaWYgKFRBUkdFVF9YMzIgfHwgaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIpCi0rICBpZiAoVEFSR0VUX1gzMiB8fCBUQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSKQotICAgICBvcGVyYW5kc1swXSA9IGNvbnZlcnRfbWVtb3J5X2FkZHJlc3MgKHdvcmRfbW9kZSwgb3BlcmFuZHNbMF0pOwotICAgY2Z1bi0+bWFjaGluZS0+aGFzX2xvY2FsX2luZGlyZWN0X2p1bXAgPSB0cnVlOwotIH0pCi1AQCAtMTE4NTksNyArMTE4NTksNyBAQAotIAkJCQkJIE9QVEFCX0RJUkVDVCk7Ci0gICAgIH0KLSAKLS0gIGlmIChUQVJHRVRfWDMyIHx8IGl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyKQotKyAgaWYgKFRBUkdFVF9YMzIgfHwgVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUikKLSAgICAgb3BlcmFuZHNbMF0gPSBjb252ZXJ0X21lbW9yeV9hZGRyZXNzICh3b3JkX21vZGUsIG9wZXJhbmRzWzBdKTsKLSAgIGNmdW4tPm1hY2hpbmUtPmhhc19sb2NhbF9pbmRpcmVjdF9qdW1wID0gdHJ1ZTsKLSB9KQotQEAgLTEyMDI5LDcgKzEyMDI5LDEwIEBACi0gCQkgICAgIChtYXRjaF9vcGVyYW5kOlNJIDAgInJlZ2lzdGVyX25vX2VsaW1fb3BlcmFuZCIgIlUiKQotIAkJICAgICAobWF0Y2hfb3BlcmFuZDpTSSAxICJHT1QzMl9zeW1ib2xfb3BlcmFuZCIpKSkpCi0gCSAobWF0Y2hfb3BlcmFuZCAyKSldCi0tICAiIVRBUkdFVF9NQUNITyAmJiAhVEFSR0VUXzY0QklUICYmIFNJQkxJTkdfQ0FMTF9QIChpbnNuKSIKLSsgICIhVEFSR0VUX01BQ0hPCi0rICAmJiAhVEFSR0VUXzY0QklUCi0rICAmJiAhVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUgotKyAgJiYgU0lCTElOR19DQUxMX1AgKGluc24pIgotIHsKLSAgIHJ0eCBmbmFkZHIgPSBnZW5fcnR4X1BMVVMgKFBtb2RlLCBvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0pOwotICAgZm5hZGRyID0gZ2VuX2NvbnN0X21lbSAoUG1vZGUsIGZuYWRkcik7Ci1AQCAtMTIwNDgsNyArMTIwNTEsNyBAQAotICAgWyhjYWxsIChtZW06UUkgKG1hdGNoX29wZXJhbmQ6VyAwICJtZW1vcnlfb3BlcmFuZCIgIm0iKSkKLSAJIChtYXRjaF9vcGVyYW5kIDEpKQotICAgICh1bnNwZWMgWyhjb25zdF9pbnQgMCldIFVOU1BFQ19QRUVQU0lCKV0KLS0gICIhVEFSR0VUX1gzMiAmJiAhaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIiCi0rICAiIVRBUkdFVF9YMzIgJiYgIVRBUkdFVF9JTkRJUkVDVF9CUkFOQ0hfUkVHSVNURVIiCi0gICAiKiByZXR1cm4gaXg4Nl9vdXRwdXRfY2FsbF9pbnNuIChpbnNuLCBvcGVyYW5kc1swXSk7IgotICAgWyhzZXRfYXR0ciAidHlwZSIgImNhbGwiKV0pCi0gCi1AQCAtMTIwNTgsNyArMTIwNjEsNyBAQAotICAgIChjYWxsIChtZW06UUkgKG1hdGNoX2R1cCAwKSkKLSAJIChtYXRjaF9vcGVyYW5kIDMpKV0KLSAgICIhVEFSR0VUX1gzMgotLSAgICYmICFpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlcgotKyAgICYmICFUQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSCi0gICAgJiYgU0lCTElOR19DQUxMX1AgKHBlZXAyX25leHRfaW5zbiAoMSkpCi0gICAgJiYgIXJlZ19tZW50aW9uZWRfcCAob3BlcmFuZHNbMF0sCi0gCQkJQ0FMTF9JTlNOX0ZVTkNUSU9OX1VTQUdFIChwZWVwMl9uZXh0X2luc24gKDEpKSkiCi1AQCAtMTIwNzMsNyArMTIwNzYsNyBAQAotICAgIChjYWxsIChtZW06UUkgKG1hdGNoX2R1cCAwKSkKLSAJIChtYXRjaF9vcGVyYW5kIDMpKV0KLSAgICIhVEFSR0VUX1gzMgotLSAgICYmICFpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlcgotKyAgICYmICFUQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSCi0gICAgJiYgU0lCTElOR19DQUxMX1AgKHBlZXAyX25leHRfaW5zbiAoMikpCi0gICAgJiYgIXJlZ19tZW50aW9uZWRfcCAob3BlcmFuZHNbMF0sCi0gCQkJQ0FMTF9JTlNOX0ZVTkNUSU9OX1VTQUdFIChwZWVwMl9uZXh0X2luc24gKDIpKSkiCi1AQCAtMTIxNzEsNyArMTIxNzQsNyBAQAotICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VyAxICJtZW1vcnlfb3BlcmFuZCIpKQotICAgIChzZXQgKHBjKSAobWF0Y2hfZHVwIDApKV0KLSAgICIhVEFSR0VUX1gzMgotLSAgICYmICFpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlcgotKyAgICYmICFUQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSCi0gICAgJiYgcGVlcDJfcmVnX2RlYWRfcCAoMiwgb3BlcmFuZHNbMF0pIgotICAgWyhzZXQgKHBjKSAobWF0Y2hfZHVwIDEpKV0pCi0gCi1AQCAtMTIyMjksNyArMTIyMzIsMTAgQEAKLSAJCQkgIChtYXRjaF9vcGVyYW5kOlNJIDEgInJlZ2lzdGVyX25vX2VsaW1fb3BlcmFuZCIgIlUiKQotIAkJCSAgKG1hdGNoX29wZXJhbmQ6U0kgMiAiR09UMzJfc3ltYm9sX29wZXJhbmQiKSkpKQotIAkgKG1hdGNoX29wZXJhbmQgMykpKV0KLS0gICIhVEFSR0VUX01BQ0hPICYmICFUQVJHRVRfNjRCSVQgJiYgU0lCTElOR19DQUxMX1AgKGluc24pIgotKyAgIiFUQVJHRVRfTUFDSE8KLSsgICAmJiAhVEFSR0VUXzY0QklUCi0rICAgJiYgIVRBUkdFVF9JTkRJUkVDVF9CUkFOQ0hfUkVHSVNURVIKLSsgICAmJiBTSUJMSU5HX0NBTExfUCAoaW5zbikiCi0gewotICAgcnR4IGZuYWRkciA9IGdlbl9ydHhfUExVUyAoUG1vZGUsIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSk7Ci0gICBmbmFkZHIgPSBnZW5fY29uc3RfbWVtIChQbW9kZSwgZm5hZGRyKTsKLUBAIC0xMjI1MCw3ICsxMjI1Niw3IEBACi0gIAkoY2FsbCAobWVtOlFJIChtYXRjaF9vcGVyYW5kOlcgMSAibWVtb3J5X29wZXJhbmQiICJtIikpCi0gCSAgICAgIChtYXRjaF9vcGVyYW5kIDIpKSkKLSAgICAodW5zcGVjIFsoY29uc3RfaW50IDApXSBVTlNQRUNfUEVFUFNJQildCi0tICAiIVRBUkdFVF9YMzIgJiYgIWl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyIgotKyAgIiFUQVJHRVRfWDMyICYmICFUQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSIgotICAgIiogcmV0dXJuIGl4ODZfb3V0cHV0X2NhbGxfaW5zbiAoaW5zbiwgb3BlcmFuZHNbMV0pOyIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJjYWxsdiIpXSkKLSAKLUBAIC0xMjI2MSw3ICsxMjI2Nyw3IEBACi0gICAgKGNhbGwgKG1lbTpRSSAobWF0Y2hfZHVwIDApKQotIAkJIChtYXRjaF9vcGVyYW5kIDMpKSldCi0gICAiIVRBUkdFVF9YMzIKLS0gICAmJiAhaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIKLSsgICAmJiAhVEFSR0VUX0lORElSRUNUX0JSQU5DSF9SRUdJU1RFUgotICAgICYmIFNJQkxJTkdfQ0FMTF9QIChwZWVwMl9uZXh0X2luc24gKDEpKQotICAgICYmICFyZWdfbWVudGlvbmVkX3AgKG9wZXJhbmRzWzBdLAotIAkJCUNBTExfSU5TTl9GVU5DVElPTl9VU0FHRSAocGVlcDJfbmV4dF9pbnNuICgxKSkpIgotQEAgLTEyMjc4LDcgKzEyMjg0LDcgQEAKLSAJKGNhbGwgKG1lbTpRSSAobWF0Y2hfZHVwIDApKQotIAkgICAgICAobWF0Y2hfb3BlcmFuZCAzKSkpXQotICAgIiFUQVJHRVRfWDMyCi0tICAgJiYgIWl4ODZfaW5kaXJlY3RfYnJhbmNoX3JlZ2lzdGVyCi0rICAgJiYgIVRBUkdFVF9JTkRJUkVDVF9CUkFOQ0hfUkVHSVNURVIKLSAgICAmJiBTSUJMSU5HX0NBTExfUCAocGVlcDJfbmV4dF9pbnNuICgyKSkKLSAgICAmJiAhcmVnX21lbnRpb25lZF9wIChvcGVyYW5kc1swXSwKLSAJCQlDQUxMX0lOU05fRlVOQ1RJT05fVVNBR0UgKHBlZXAyX25leHRfaW5zbiAoMikpKSIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvcHJlZGljYXRlcy5tZCBiL2djYy9jb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kCi1pbmRleCBkMWYwYTdkLi41ZjhhOThmIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L3ByZWRpY2F0ZXMubWQKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9wcmVkaWNhdGVzLm1kCi1AQCAtNTkzLDcgKzU5Myw3IEBACi0gOzsgVGVzdCBmb3IgYSB2YWxpZCBvcGVyYW5kIGZvciBpbmRpcmVjdCBicmFuY2guCi0gKGRlZmluZV9wcmVkaWNhdGUgImluZGlyZWN0X2JyYW5jaF9vcGVyYW5kIgotICAgKGlvciAobWF0Y2hfb3BlcmFuZCAwICJyZWdpc3Rlcl9vcGVyYW5kIikKLS0gICAgICAgKGFuZCAobm90IChtYXRjaF90ZXN0ICJpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciIpKQotKyAgICAgICAoYW5kIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9JTkRJUkVDVF9CUkFOQ0hfUkVHSVNURVIiKSkKLSAJICAgIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9YMzIiKSkKLSAJICAgIChtYXRjaF9vcGVyYW5kIDAgIm1lbW9yeV9vcGVyYW5kIikpKSkKLSAKLUBAIC02MzcsNyArNjM3LDcgQEAKLSAgIChpb3IgKG1hdGNoX3Rlc3QgImNvbnN0YW50X2NhbGxfYWRkcmVzc19vcGVyYW5kCi0gCQkgICAgIChvcCwgbW9kZSA9PSBWT0lEbW9kZSA/IG1vZGUgOiBQbW9kZSkiKQotICAgICAgICAobWF0Y2hfb3BlcmFuZCAwICJjYWxsX3JlZ2lzdGVyX25vX2VsaW1fb3BlcmFuZCIpCi0tICAgICAgIChhbmQgKG5vdCAobWF0Y2hfdGVzdCAiaXg4Nl9pbmRpcmVjdF9icmFuY2hfcmVnaXN0ZXIiKSkKLSsgICAgICAgKGFuZCAobm90IChtYXRjaF90ZXN0ICJUQVJHRVRfSU5ESVJFQ1RfQlJBTkNIX1JFR0lTVEVSIikpCi0gCSAgICAoaW9yIChhbmQgKG5vdCAobWF0Y2hfdGVzdCAiVEFSR0VUX1gzMiIpKQotIAkJICAgICAgKG1hdGNoX29wZXJhbmQgMCAibWVtb3J5X29wZXJhbmQiKSkKLSAJCSAoYW5kIChtYXRjaF90ZXN0ICJUQVJHRVRfWDMyICYmIFBtb2RlID09IERJbW9kZSIpCi1AQCAtNjQ4LDcgKzY0OCw3IEBACi0gICAoaW9yIChtYXRjaF90ZXN0ICJjb25zdGFudF9jYWxsX2FkZHJlc3Nfb3BlcmFuZAotIAkJICAgICAob3AsIG1vZGUgPT0gVk9JRG1vZGUgPyBtb2RlIDogUG1vZGUpIikKLSAgICAgICAgKG1hdGNoX29wZXJhbmQgMCAicmVnaXN0ZXJfbm9fZWxpbV9vcGVyYW5kIikKLS0gICAgICAgKGFuZCAobm90IChtYXRjaF90ZXN0ICJpeDg2X2luZGlyZWN0X2JyYW5jaF9yZWdpc3RlciIpKQotKyAgICAgICAoYW5kIChub3QgKG1hdGNoX3Rlc3QgIlRBUkdFVF9JTkRJUkVDVF9CUkFOQ0hfUkVHSVNURVIiKSkKLSAJICAgIChpb3IgKGFuZCAobm90IChtYXRjaF90ZXN0ICJUQVJHRVRfWDMyIikpCi0gCQkgICAgICAobWF0Y2hfb3BlcmFuZCAwICJzaWJjYWxsX21lbW9yeV9vcGVyYW5kIikpCi0gCQkgKGFuZCAobWF0Y2hfdGVzdCAiVEFSR0VUX1gzMiAmJiBQbW9kZSA9PSBESW1vZGUiKQotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYwotaW5kZXggNjBkMDk4OC4uNmU5NGQyYyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMS5jCi1AQCAtMTEsOSArMTEsOCBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgZGlzcGF0Y2gob2Zmc2V0KTsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCAqLSotbGludXgqIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYwotaW5kZXggYWFjNzUxNi4uM2M0NjcwNyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMi5jCi1AQCAtMTEsOSArMTEsOCBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgZGlzcGF0Y2hbb2Zmc2V0XShvZmZzZXQpOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMy5jCi1pbmRleCA5ZTI0YTM4Li4yYzdmYjUyIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstMy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay0zLmMKLUBAIC0xMiw5ICsxMiw4IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jCi1pbmRleCAxMjdiNWQ5Li4wZDNmODk1IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay00LmMKLUBAIC0xMiw5ICsxMiw4IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNS5jCi1pbmRleCBmY2FhMThkLi5mYjI2YzAwIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay01LmMKLUBAIC05LDggKzksMTAgQEAgZm9vICh2b2lkKQotICAgYmFyICgpOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpiYXJAR09UIiB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpiYXJAR09UIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jCi1pbmRleCBlNDY0OTI4Li5hYTAzZmJkIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay02LmMKLUBAIC0xMCw5ICsxMCwxMyBAQCBmb28gKHZvaWQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKmJhckBHT1QiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRsZmVuY2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTcuYwotaW5kZXggMTdjMmQwZi4uM2M3MjAzNiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLTcuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstNy5jCi1AQCAtMzUsOSArMzUsOCBAQCBiYXIgKGludCBpKQotICAgICB9Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKlwuTFxbMC05XF0rXFwoLCUiIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jCi1pbmRleCA5MTk0Y2NmLi43MTA2NDA3IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMS5jCi1AQCAtMTQsOSArMTQsOCBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgZGlzcGF0Y2gob2Zmc2V0KTsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCAqLSotbGludXgqIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmMKLWluZGV4IGU1MWYyNjEuLjI3YzdlNWIgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0yLmMKLUBAIC0xMiw5ICsxMiw4IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICBkaXNwYXRjaFtvZmZzZXRdKG9mZnNldCk7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMy5jCi1pbmRleCA0YWVlYzE4Li44OWEyYmFjIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci0zLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItMy5jCi1AQCAtMTQsMTAgKzE0LDkgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci00LmMKLWluZGV4IGFjMGU1OTkuLjNlYjgzYzMgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTQuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci00LmMKLUBAIC0xMywxMCArMTMsOSBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgcmV0dXJuIDA7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiam1wXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjYWxsXFsgXHRcXSpcLkxJTkQiIDIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0bGZlbmNlfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci01LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYwotaW5kZXggNTczY2YxZS4uMDA5OGRkMSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTUuYwotQEAgLTE0LDkgKzE0LDggQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAxIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmMKLWluZGV4IGIyYjM3ZmMuLmVjZThkZTEgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTYuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci02LmMKLUBAIC0xMyw5ICsxMyw4IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCAqLSotbGludXgqIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1hdHRyLTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jCi1pbmRleCA0YTQzZTE5Li5kNTNmYzg4IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYXR0ci03LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWF0dHItNy5jCi1AQCAtMzYsOSArMzYsOCBAQCBiYXIgKGludCBpKQotICAgICB9Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKlwuTFxbMC05XF0rXFwoLCUiIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTEuYwotaW5kZXggYWM4NGFiNi4uNzNkMTZiYSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0xLmMKLUBAIC0xMCw5ICsxMCw5IEBAIGZvbyAodm9pZCkKLSAgIGRpc3BhdGNoIChidWYpOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfYm5kIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rX2JuZF9yYXgiIHsgdGFyZ2V0IGxwNjQgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua19ibmRfZWF4IiB7IHRhcmdldCBpYTMyIH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCByZXQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMi5jCi1pbmRleCBjZTY1NWU4Li44NTY3NTFhIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTIuYwotQEAgLTExLDEwICsxMSw4IEBAIGZvbyAodm9pZCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfYm5kIiB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCAqLSotbGludXgqIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfYm5kXyhyfGUpYXgiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYm5kIGNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgcmV0IiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtMy5jCi1pbmRleCBkMzQ0ODVhLi40MjMxMmY2IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTMuYwotQEAgLTEwLDggKzEwLDkgQEAgZm9vICh2b2lkKQotICAgYmFyIChidWYpOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpiYXJAR09UIiB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rX2JuZCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpiYXJAR09UIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rX2JuZF9yYXgiIHsgdGFyZ2V0IGxwNjQgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua19ibmRfZWF4IiB7IHRhcmdldCBpYTMyIH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCByZXQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWJuZC00LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1ibmQtNC5jCi1pbmRleCAwZTE5ODMwLi5jOGNhMTAyIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTQuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstYm5kLTQuYwotQEAgLTExLDEwICsxMSw5IEBAIGZvbyAodm9pZCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpiYXJAR09UIiB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCBqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJibmQgY2FsbFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJibmQgY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfYm5kXyhyfGUpYXgiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiYm5kIGNhbGxcWyBcdFxdKlwuTElORCIgMSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImJuZCByZXQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRwYXVzZX0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdGxmZW5jZX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0xLmMKLWluZGV4IDU3OTQ0MWYuLmMwOWRkMGEgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMS5jCi1AQCAtMTEsOSArMTEsOCBAQCBtYWxlX2luZGlyZWN0X2p1bXAgKGxvbmcgb2Zmc2V0KQotICAgZGlzcGF0Y2gob2Zmc2V0KTsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCAqLSotbGludXgqIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMi5jCi1pbmRleCBjOTJlNmYyLi44MjY0MjVhIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTIuYwotQEAgLTExLDkgKzExLDggQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIGRpc3BhdGNoW29mZnNldF0ob2Zmc2V0KTsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCAqLSotbGludXgqIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tMy5jCi1pbmRleCBkOTk2NGMyLi4zODU2MjY4IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTMuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTMuYwotQEAgLTEyLDkgKzEyLDggQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiam1wXFsgXHRcXSpcLkxJTkQiIDEgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjYWxsXFsgXHRcXSpcLkxJTkQiIDEgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi00LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNC5jCi1pbmRleCBkNGRjYTRkLi4xYWU0OWIxIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTQuYwotQEAgLTEyLDkgKzEyLDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiam1wXFsgXHRcXSpcLkxJTkQiIDEgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJjYWxsXFsgXHRcXSpcLkxJTkQiIDEgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1x0KGxmZW5jZXxwYXVzZSl9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi01LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNS5jCi1pbmRleCA1YzA3ZTAyLi41MzI4MjM5IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTUuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTUuYwotQEAgLTksOCArOSwxMCBAQCBmb28gKHZvaWQpCi0gICBiYXIgKCk7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKmJhckBHT1QiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTYuYwotaW5kZXggM2ViNDQwNi4uOGFlNDM0OCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi02LmMKLUBAIC0xMCw4ICsxMCw4IEBAIGZvbyAodm9pZCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpiYXJAR09UIiB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAxIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAxIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKmJhckBHT1QiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHQobGZlbmNlfHBhdXNlKX0gfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstZXh0ZXJuLTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWV4dGVybi03LmMKLWluZGV4IGFlY2U5MzguLjJiOWEzM2UgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1leHRlcm4tNy5jCi1AQCAtMzUsOSArMzUsOCBAQCBiYXIgKGludCBpKQotICAgICB9Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKlwuTFxbMC05XF0rXFwoLCUiIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcdChsZmVuY2V8cGF1c2UpfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTEuYwotaW5kZXggM2FiYTVlOC4uODY5ZDkwNCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0xLmMKLUBAIC0xMSw3ICsxMSw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICBkaXNwYXRjaChvZmZzZXQpOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTIuYwotaW5kZXggMGYwMTgxZC4uYzVjMTZlZCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0yLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0yLmMKLUBAIC0xMSw3ICsxMSw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICBkaXNwYXRjaFtvZmZzZXRdKG9mZnNldCk7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtMy5jCi1pbmRleCAyZWVmNmYzLi40YTYzZWJlIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTMuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTMuYwotQEAgLTEyLDcgKzEyLDcgQEAgbWFsZV9pbmRpcmVjdF9qdW1wIChsb25nIG9mZnNldCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKl8/ZGlzcGF0Y2giIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAyIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTQuYwotaW5kZXggZTgyNWExMC4uYTM5NWZmYyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS00LmMKLUBAIC0xMiw3ICsxMiw3IEBAIG1hbGVfaW5kaXJlY3RfanVtcCAobG9uZyBvZmZzZXQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9kaXNwYXRjaCIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3YoPzpsfHEpXFsgXHRcXSpfP2Rpc3BhdGNoIiB7IHRhcmdldCAqLSotbGludXgqIH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDEgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS01LmMKLWluZGV4IGM2ZDc3ZTEuLjIxY2JmZDMgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNS5jCi1AQCAtOSw3ICs5LDggQEAgZm9vICh2b2lkKQotICAgYmFyICgpOwotIH0KLSAKLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpiYXJAR09UIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpiYXJAR09UIiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKmJhckBHT1QiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1x0cGF1c2V9IH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS02LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNi5jCi1pbmRleCA2NDU0ODI3Li5kMTMwMGYxIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTYuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTYuYwotQEAgLTEwLDcgKzEwLDggQEAgZm9vICh2b2lkKQotICAgcmV0dXJuIDA7Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKmJhckBHT1QiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qYmFyQEdPVCIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJqbXBcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImNhbGxcWyBcdFxdKlwuTElORCIgMiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDEgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW5kaXJlY3QtdGh1bmstaW5saW5lLTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2luZGlyZWN0LXRodW5rLWlubGluZS03LmMKLWluZGV4IGM2NzA2NmMuLmVhMDA5MjQgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbmRpcmVjdC10aHVuay1pbmxpbmUtNy5jCi1AQCAtMzUsOCArMzUsOCBAQCBiYXIgKGludCBpKQotICAgICB9Ci0gfQotIAotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKlwuTFxbMC05XF0rXFwoLCUiIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXC5MXFswLTlcXStcXCgsJSIgeyB0YXJnZXQgKi0qLWxpbnV4KiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSUocnxlKWF4IiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdHBhdXNlfSB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTAuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMC5jCi1pbmRleCBlNmZlYTg0Li5hZjkwMjNhIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEwLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMC5jCi1AQCAtMTUsOSArMTUsNiBAQCBmb28gKHZvaWQpCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiam1wXFsgXHRcXSpfX3g4Nl9yZXR1cm5fdGh1bmsiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0bGZlbmNlfSAyIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/YmFyIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9ICB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIl9feDg2X2luZGlyZWN0X3RodW5rOiIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeyB4MzIgfSB9ICB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXg6IiB7IHRhcmdldCB7IHgzMiB9IH0gIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4OiIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTExLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTEuYwotaW5kZXggZTIzOWVjNC4uYmE0NjdjNSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTEuYwotQEAgLTE1LDkgKzE1LDYgQEAgZm9vICh2b2lkKQotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRsZmVuY2V9IDEgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/YmFyIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIHsgdGFyZ2V0IHsgISB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiX194ODZfaW5kaXJlY3RfdGh1bms6IiB7IHRhcmdldCB7ICEgeDMyIH0gfSAgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB7IHgzMiB9IH0gIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheDoiIHsgdGFyZ2V0IHsgeDMyIH0gfSAgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXg6IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMi5jCi1pbmRleCBmYTMxODEzLi40M2U1N2NhIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEyLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMi5jCi1AQCAtMTUsOCArMTUsNiBAQCBmb28gKHZvaWQpCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdGxmZW5jZX0gMSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIl9feDg2X2luZGlyZWN0X3RodW5rOiIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeyB4MzIgfSB9ICB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXg6IiB7IHRhcmdldCB7IHgzMiB9IH0gIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4OiIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTEzLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTMuYwotaW5kZXggZmQ1YjQxZi4uNTVmMTU2YyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xMy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTMuYwotQEAgLTE0LDkgKzE0LDggQEAgZm9vICh2b2lkKQotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9yZXR1cm5fdGh1bmsiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRwYXVzZX0gMiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0bGZlbmNlfSAyIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHVzaCg/Omx8cSlcWyBcdFxdKl8/YmFyIiB7IHRhcmdldCB7IHsgISB4MzIgfSAmJiAqLSotbGludXgqIH0gfSB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImptcFxbIFx0XF0qXC5MSU5EIiAzIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAiY2FsbFxbIFx0XF0qXC5MSU5EIiAzIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmsiIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIHsgdGFyZ2V0IHsgeDMyIH0gfSAgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgeyB0YXJnZXQgeDMyIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAicHVzaHFcWyBcdFxdJXJheCIgfSB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTQuYwotaW5kZXggZDYwNjM3My4uMWM3OTA0MyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTQuYwotQEAgLTE2LDcgKzE2LDYgQEAgZm9vICh2b2lkKQotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImptcFxbIFx0XF0qX194ODZfcmV0dXJuX3RodW5rIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImptcFxbIFx0XF0qXC5MSU5EIiB9IH0gKi8KLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9iYXIiIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB7IHgzMiB9IH0gIH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXz9iYXIiIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIH0gfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay0xNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE1LmMKLWluZGV4IDc1ZTQ1ZTIuLjU4YWJhMzEgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstMTUuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTE1LmMKLUBAIC0xNiw3ICsxNiw2IEBAIGZvbyAodm9pZCkKLSAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdHBhdXNlfSAxIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRsZmVuY2V9IDEgfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwdXNoKD86bHxxKVxbIFx0XF0qXz9iYXIiIHsgdGFyZ2V0IHsgeyAhIHgzMiB9ICYmICotKi1saW51eCogfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiam1wXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVuayIgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB7IHRhcmdldCB4MzIgfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdig/Omx8cSlcWyBcdFxdKl8/YmFyIiB7IHRhcmdldCAqLSotbGludXgqIH0gfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpfX3g4Nl9pbmRpcmVjdF90aHVua18ocnxlKWF4IiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJwdXNocVxbIFx0XF0lcmF4IiB9IH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9yZXQtdGh1bmstOS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcmV0LXRodW5rLTkuYwotaW5kZXggZDFkYjQxYy4uZDJkZjhiOCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay05LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3JldC10aHVuay05LmMKLUBAIC0xNCwxMSArMTQsOCBAQCBmb28gKHZvaWQpCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKlwuTElORCIgfSB9ICovCi0gLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJjYWxsXFsgXHRcXSpcLkxJTkQiIH0gfSAqLwotIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiX194ODZfaW5kaXJlY3RfdGh1bms6IiB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDEgeyB0YXJnZXQgeyAhIHgzMiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdGxmZW5jZX0gMSB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB1c2goPzpsfHEpXFsgXHRcXSpfP2JhciIgeyB0YXJnZXQgeyB7ICEgeDMyIH0gJiYgKi0qLWxpbnV4KiB9IH0gfSB9ICovCi0tLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rIiB7IHRhcmdldCB7ICEgeDMyIH0gfSB9IH0gKi8KLS0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDIgeyB0YXJnZXQgeyB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRsZmVuY2V9IDIgeyB0YXJnZXQgeyB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiY2FsbFxbIFx0XF0qX194ODZfaW5kaXJlY3RfdGh1bmtfKHJ8ZSlheCIgeyB0YXJnZXQgeyB4MzIgfSB9IH0gfSAqLwotLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIHsgdGFyZ2V0IHgzMiB9IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92KD86bHxxKVxbIFx0XF0qXz9iYXIiIHsgdGFyZ2V0ICotKi1saW51eCogfSB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0cGF1c2V9IDIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtcdGxmZW5jZX0gMiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImNhbGxcWyBcdFxdKl9feDg2X2luZGlyZWN0X3RodW5rXyhyfGUpYXgiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgInB1c2hxXFsgXHRcXSVyYXgiIH0gfSAqLwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMTMtZ2NjLXNhbml0aXplcnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0LzAwMTMtZ2NjLXNhbml0aXplcnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3YmNkOGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC8wMDEzLWdjYy1zYW5pdGl6ZXJzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotRnJvbSAwZmE3MTAyZDc2Mzc2YjI3YWU0YmJjMTA4NDg2MDBhYWM2ZWQ3MWQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogamFrdWIgPGpha3ViQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IE1vbiwgMTcgSnVsIDIwMTcgMTk6NDE6MDggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gCUJhY2twb3J0ZWQgZnJvbSBtYWlubGluZSAJMjAxNy0wNy0xNCAgSmFrdWIKLSBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQotCVBSIHNhbml0aXplci84MTA2NgotCSogc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGludXguaDogQ2hlcnJ5LXBpY2sgdXBzdHJlYW0gcjMwNzk2OS4KLQkqIHNhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4LmNjOiBMaWtld2lzZS4KLQkqIHNhbml0aXplcl9jb21tb24vc2FuaXRpemVyX3N0b3B0aGV3b3JsZF9saW51eF9saWJjZGVwLmNjOiBMaWtld2lzZS4KLQkqIHRzYW4vdHNhbl9wbGF0Zm9ybV9saW51eC5jYzogTGlrZXdpc2UuCi0KLVtSb21haW4gY2hlcnJ5LXBpY2sgb24gZ2NjLTYtYnJhbmNoIGZyb20gZ2NjLTctYnJhbmNoXQotU2lnbmVkLW9mZi1ieTogUm9tYWluIE5hb3VyIDxyb21haW4ubmFvdXJAZ21haWwuY29tPgotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvYnJhbmNoZXMvZ2NjLTctYnJhbmNoQDI1MDI4NyAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotLS0tCi0gbGlic2FuaXRpemVyL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4LmNjICAgICAgICAgICAgICAgICAgICAgIHwgMyArLS0KLSBsaWJzYW5pdGl6ZXIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGludXguaCAgICAgICAgICAgICAgICAgICAgICAgfCA0ICstLS0KLSBsaWJzYW5pdGl6ZXIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfc3RvcHRoZXdvcmxkX2xpbnV4X2xpYmNkZXAuY2MgfCAyICstCi0gbGlic2FuaXRpemVyL3RzYW4vdHNhbl9wbGF0Zm9ybV9saW51eC5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIDQgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGlic2FuaXRpemVyL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4LmNjIGIvbGlic2FuaXRpemVyL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4LmNjCi1pbmRleCAyY2VmYTIwLi4yMjNkOWM2IDEwMDY0NAotLS0tIGEvbGlic2FuaXRpemVyL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4LmNjCi0rKysgYi9saWJzYW5pdGl6ZXIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGludXguY2MKLUBAIC01NDYsOCArNTQ2LDcgQEAgdXB0ciBpbnRlcm5hbF9wcmN0bChpbnQgb3B0aW9uLCB1cHRyIGFyZzIsIHVwdHIgYXJnMywgdXB0ciBhcmc0LCB1cHRyIGFyZzUpIHsKLSB9Ci0gI2VuZGlmCi0gCi0tdXB0ciBpbnRlcm5hbF9zaWdhbHRzdGFjayhjb25zdCBzdHJ1Y3Qgc2lnYWx0c3RhY2sgKnNzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2lnYWx0c3RhY2sgKm9zcykgewotK3VwdHIgaW50ZXJuYWxfc2lnYWx0c3RhY2soY29uc3Qgdm9pZCAqc3MsIHZvaWQgKm9zcykgewotICAgcmV0dXJuIGludGVybmFsX3N5c2NhbGwoU1lTQ0FMTChzaWdhbHRzdGFjayksICh1cHRyKXNzLCAodXB0cilvc3MpOwotIH0KLSAKLWRpZmYgLS1naXQgYS9saWJzYW5pdGl6ZXIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGludXguaCBiL2xpYnNhbml0aXplci9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9saW51eC5oCi1pbmRleCA0NDk3NzAyLi4xNTk0MDU4IDEwMDY0NAotLS0tIGEvbGlic2FuaXRpemVyL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4LmgKLSsrKyBiL2xpYnNhbml0aXplci9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9saW51eC5oCi1AQCAtMTksNyArMTksNiBAQAotICNpbmNsdWRlICJzYW5pdGl6ZXJfcGxhdGZvcm1fbGltaXRzX3Bvc2l4LmgiCi0gCi0gc3RydWN0IGxpbmtfbWFwOyAgLy8gT3BhcXVlIHR5cGUgcmV0dXJuZWQgYnkgZGxvcGVuKCkuCi0tc3RydWN0IHNpZ2FsdHN0YWNrOwotIAotIG5hbWVzcGFjZSBfX3Nhbml0aXplciB7Ci0gLy8gRGlyZW50IHN0cnVjdHVyZSBmb3IgZ2V0ZGVudHMoKS4gTm90ZSB0aGF0IHRoaXMgc3RydWN0dXJlIGlzIGRpZmZlcmVudCBmcm9tCi1AQCAtMjgsOCArMjcsNyBAQCBzdHJ1Y3QgbGludXhfZGlyZW50OwotIAotIC8vIFN5c2NhbGwgd3JhcHBlcnMuCi0gdXB0ciBpbnRlcm5hbF9nZXRkZW50cyhmZF90IGZkLCBzdHJ1Y3QgbGludXhfZGlyZW50ICpkaXJwLCB1bnNpZ25lZCBpbnQgY291bnQpOwotLXVwdHIgaW50ZXJuYWxfc2lnYWx0c3RhY2soY29uc3Qgc3RydWN0IHNpZ2FsdHN0YWNrKiBzcywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzaWdhbHRzdGFjayogb3NzKTsKLSt1cHRyIGludGVybmFsX3NpZ2FsdHN0YWNrKGNvbnN0IHZvaWQqIHNzLCB2b2lkKiBvc3MpOwotIHVwdHIgaW50ZXJuYWxfc2lncHJvY21hc2soaW50IGhvdywgX19zYW5pdGl6ZXJfc2lnc2V0X3QgKnNldCwKLSAgICAgX19zYW5pdGl6ZXJfc2lnc2V0X3QgKm9sZHNldCk7Ci0gdm9pZCBpbnRlcm5hbF9zaWdmaWxsc2V0KF9fc2FuaXRpemVyX3NpZ3NldF90ICpzZXQpOwotZGlmZiAtLWdpdCBhL2xpYnNhbml0aXplci9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9zdG9wdGhld29ybGRfbGludXhfbGliY2RlcC5jYyBiL2xpYnNhbml0aXplci9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9zdG9wdGhld29ybGRfbGludXhfbGliY2RlcC5jYwotaW5kZXggYzkxOWU0Zi4uMDE0MTYyYWYgMTAwNjQ0Ci0tLS0gYS9saWJzYW5pdGl6ZXIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfc3RvcHRoZXdvcmxkX2xpbnV4X2xpYmNkZXAuY2MKLSsrKyBiL2xpYnNhbml0aXplci9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9zdG9wdGhld29ybGRfbGludXhfbGliY2RlcC5jYwotQEAgLTI2Nyw3ICsyNjcsNyBAQCBzdGF0aWMgaW50IFRyYWNlclRocmVhZCh2b2lkKiBhcmd1bWVudCkgewotIAotICAgLy8gQWx0ZXJuYXRlIHN0YWNrIGZvciBzaWduYWwgaGFuZGxpbmcuCi0gICBJbnRlcm5hbFNjb3BlZEJ1ZmZlcjxjaGFyPiBoYW5kbGVyX3N0YWNrX21lbW9yeShrSGFuZGxlclN0YWNrU2l6ZSk7Ci0tICBzdHJ1Y3Qgc2lnYWx0c3RhY2sgaGFuZGxlcl9zdGFjazsKLSsgIHN0YWNrX3QgaGFuZGxlcl9zdGFjazsKLSAgIGludGVybmFsX21lbXNldCgmaGFuZGxlcl9zdGFjaywgMCwgc2l6ZW9mKGhhbmRsZXJfc3RhY2spKTsKLSAgIGhhbmRsZXJfc3RhY2suc3Nfc3AgPSBoYW5kbGVyX3N0YWNrX21lbW9yeS5kYXRhKCk7Ci0gICBoYW5kbGVyX3N0YWNrLnNzX3NpemUgPSBrSGFuZGxlclN0YWNrU2l6ZTsKLWRpZmYgLS1naXQgYS9saWJzYW5pdGl6ZXIvdHNhbi90c2FuX3BsYXRmb3JtX2xpbnV4LmNjIGIvbGlic2FuaXRpemVyL3RzYW4vdHNhbl9wbGF0Zm9ybV9saW51eC5jYwotaW5kZXggMDljZWM1Zi4uOTA4ZjRmZSAxMDA2NDQKLS0tLSBhL2xpYnNhbml0aXplci90c2FuL3RzYW5fcGxhdGZvcm1fbGludXguY2MKLSsrKyBiL2xpYnNhbml0aXplci90c2FuL3RzYW5fcGxhdGZvcm1fbGludXguY2MKLUBAIC0yOTEsNyArMjkxLDcgQEAgYm9vbCBJc0dsb2JhbFZhcih1cHRyIGFkZHIpIHsKLSBpbnQgRXh0cmFjdFJlc29sdkZEcyh2b2lkICpzdGF0ZSwgaW50ICpmZHMsIGludCBuZmQpIHsKLSAjaWYgU0FOSVRJWkVSX0xJTlVYCi0gICBpbnQgY250ID0gMDsKLS0gIF9fcmVzX3N0YXRlICpzdGF0cCA9IChfX3Jlc19zdGF0ZSopc3RhdGU7Ci0rICBzdHJ1Y3QgX19yZXNfc3RhdGUgKnN0YXRwID0gKHN0cnVjdCBfX3Jlc19zdGF0ZSopc3RhdGU7Ci0gICBmb3IgKGludCBpID0gMDsgaSA8IE1BWE5TICYmIGNudCA8IG5mZDsgaSsrKSB7Ci0gICAgIGlmIChzdGF0cC0+X3UuX2V4dC5uc2FkZHJzW2ldICYmIHN0YXRwLT5fdS5fZXh0Lm5zc29ja3NbaV0gIT0gLTEpCi0gICAgICAgZmRzW2NudCsrXSA9IHN0YXRwLT5fdS5fZXh0Lm5zc29ja3NbaV07Ci0tLSAKLTIuOS40CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0L0NWRS0yMDE2LTYxMzEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi40L2JhY2twb3J0L0NWRS0yMDE2LTYxMzEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjZGJiMmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuNC9iYWNrcG9ydC9DVkUtMjAxNi02MTMxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjIzICswLDAgQEAKLUZyb20gNTlhMGU0YmQ4MzkxOTYyZjYyNjAwYWUzYWM5NWFiMGZiYTc0ZDQ2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGxhdyA8bGF3QDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IFRodSwgNCBBdWcgMjAxNiAxNjo1MzoxOCArMDAwMAotU3ViamVjdDogW1BBVENIXSBGaXggZm9yIFBSNzE2OTYgaW4gTGliaWJlcnR5IERlbWFuZ2xlcgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1bQlogIzcxNjk2XSAtLSBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD03MTY5NgotCi0yMDE2LTA4LTA0ICBNYXJjZWwgQsO2aG1lICA8Ym9laG1lLm1hcmNlbEBnbWFpbC5jb20+Ci0KLQlQUiBjKysvNzE2OTYKLQkqIGNwbHVzLWRlbS5jOiBQcmV2ZW50IGluZmluaXRlIHJlY3Vyc2lvbiB3aGVuIHRoZXJlIGlzIGEgY3ljbGUKLQlpbiB0aGUgcmVmZXJlbmNpbmcgb2YgcmVtZW1iZXJlZCBtYW5nbGVkIHR5cGVzLgotCSh3b3JrX3N0dWZmKTogTmV3IHN0YWNrIHRvIGtlZXAgdHJhY2sgb2YgdGhlIHJlbWVtYmVyZWQgbWFuZ2xlZAotCXR5cGVzIHRoYXQgYXJlIGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWQuCi0JKHB1c2hfcHJvY2Vzc2VkX3R5cGUpOiBOZXcgbWV0aG9kIHRvIHB1c2ggY3VycmVudGx5IHByb2Nlc3NlZAotCXJlbWVtYmVyZWQgdHlwZSBvbnRvIHRoZSBzdGFjay4KLQkocG9wX3Byb2Nlc3NlZF90eXBlKTogTmV3IG1ldGhvZCB0byBwb3AgY3VycmVudGx5IHByb2Nlc3NlZAotCXJlbWVtYmVyZWQgdHlwZSBmcm9tIHRoZSBzdGFjay4KLQkod29ya19zdHVmZl9jb3B5X3RvX2Zyb20pOiBDb3B5IHZhbHVlcyBvZiBuZXcgdmFyaWFibGVzLgotCShkZWxldGVfbm9uX0JfS193b3JrX3N0dWZmKTogRnJlZSBzdGFjayBtZW1vcnkuCi0JKGRlbWFuZ2xlX2FyZ3MpOiBQdXNoL1BvcCBjdXJyZW50bHkgcHJvY2Vzc2VkIHJlbWVtYmVyZWQgdHlwZS4KLQkoZG9fdHlwZSk6IERvIG5vdCBkZW1hbmdsZSBhIGN5Y2xpYyByZWZlcmVuY2UgYW5kIHB1c2gvcG9wCi0JcmVmZXJlbmNlZCByZW1lbWJlcmVkIHR5cGUuCi0KLWNoZXJyeS1waWNrZWQgZnJvbSBjb21taXQgb2YKLWdpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL3RydW5rQDIzOTE0MyAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbbWFzdGVyXQotQ1ZFOiBDVkUtMjAxNi02MTMxCi1TaWduZWQtb2ZmLWJ5OiBZdWFuamllIEh1YW5nIDx5dWFuamllLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJpYmVydHkvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgIHwgMTcgKysrKysrKysKLSBsaWJpYmVydHkvY3BsdXMtZGVtLmMgICAgICAgICAgICAgICAgIHwgNzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KLSBsaWJpYmVydHkvdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkIHwgMTggKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDEwOCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2NjLTYuNC4wL2xpYmliZXJ0eS9jcGx1cy1kZW0uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy02LjQuMC5vcmlnL2xpYmliZXJ0eS9jcGx1cy1kZW0uYwotKysrIGdjYy02LjQuMC9saWJpYmVydHkvY3BsdXMtZGVtLmMKLUBAIC0xNDQsNiArMTQ0LDkgQEAgc3RydWN0IHdvcmtfc3R1ZmYKLSAgIHN0cmluZyogcHJldmlvdXNfYXJndW1lbnQ7IC8qIFRoZSBsYXN0IGZ1bmN0aW9uIGFyZ3VtZW50IGRlbWFuZ2xlZC4gICovCi0gICBpbnQgbnJlcGVhdHM7ICAgICAgICAgLyogVGhlIG51bWJlciBvZiB0aW1lcyB0byByZXBlYXQgdGhlIHByZXZpb3VzCi0gCQkJICAgYXJndW1lbnQuICAqLwotKyAgaW50ICpwcm9jdHlwZXZlYzsgICAgIC8qIEluZGljZXMgb2YgY3VycmVudGx5IHByb2Nlc3NlZCByZW1lbWJlcmVkIHR5cGV2ZWNzLiAgKi8KLSsgIGludCBwcm9jdHlwZXZlY19zaXplOwotKyAgaW50IG5wcm9jdHlwZXM7Ci0gfTsKLSAKLSAjZGVmaW5lIFBSSU5UX0FOU0lfUVVBTElGSUVSUyAod29yayAtPiBvcHRpb25zICYgRE1HTF9BTlNJKQotQEAgLTQzNSw2ICs0MzgsMTAgQEAgaXRlcmF0ZV9kZW1hbmdsZV9mdW5jdGlvbiAoc3RydWN0IHdvcmtfcwotIAotIHN0YXRpYyB2b2lkIHJlbWVtYmVyX3R5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICosIGNvbnN0IGNoYXIgKiwgaW50KTsKLSAKLStzdGF0aWMgdm9pZCBwdXNoX3Byb2Nlc3NlZF90eXBlIChzdHJ1Y3Qgd29ya19zdHVmZiAqLCBpbnQpOwotKwotK3N0YXRpYyB2b2lkIHBvcF9wcm9jZXNzZWRfdHlwZSAoc3RydWN0IHdvcmtfc3R1ZmYgKik7Ci0rCi0gc3RhdGljIHZvaWQgcmVtZW1iZXJfQnR5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICosIGNvbnN0IGNoYXIgKiwgaW50LCBpbnQpOwotIAotIHN0YXRpYyBpbnQgcmVnaXN0ZXJfQnR5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICopOwotQEAgLTEzMDEsNiArMTMwOCwxMCBAQCB3b3JrX3N0dWZmX2NvcHlfdG9fZnJvbSAoc3RydWN0IHdvcmtfc3R1Ci0gICAgICAgbWVtY3B5ICh0by0+YnR5cGV2ZWNbaV0sIGZyb20tPmJ0eXBldmVjW2ldLCBsZW4pOwotICAgICB9Ci0gCi0rICBpZiAoZnJvbS0+cHJvY3R5cGV2ZWMpCi0rICAgIHRvLT5wcm9jdHlwZXZlYyA9Ci0rICAgICAgWERVUFZFQyAoaW50LCBmcm9tLT5wcm9jdHlwZXZlYywgZnJvbS0+cHJvY3R5cGV2ZWNfc2l6ZSk7Ci0rCi0gICBpZiAoZnJvbS0+bnRtcGxfYXJncykKLSAgICAgdG8tPnRtcGxfYXJndmVjID0gWE5FV1ZFQyAoY2hhciAqLCBmcm9tLT5udG1wbF9hcmdzKTsKLSAKLUBAIC0xMzI5LDExICsxMzQwLDE3IEBAIGRlbGV0ZV9ub25fQl9LX3dvcmtfc3R1ZmYgKHN0cnVjdCB3b3JrX3MKLSAgIC8qIERpc2NhcmQgdGhlIHJlbWVtYmVyZWQgdHlwZXMsIGlmIGFueS4gICovCi0gCi0gICBmb3JnZXRfdHlwZXMgKHdvcmspOwotLSAgaWYgKHdvcmsgLT4gdHlwZXZlYyAhPSBOVUxMKQotKyAgaWYgKHdvcmstPnR5cGV2ZWMgIT0gTlVMTCkKLSAgICAgewotLSAgICAgIGZyZWUgKChjaGFyICopIHdvcmsgLT4gdHlwZXZlYyk7Ci0tICAgICAgd29yayAtPiB0eXBldmVjID0gTlVMTDsKLS0gICAgICB3b3JrIC0+IHR5cGV2ZWNfc2l6ZSA9IDA7Ci0rICAgICAgZnJlZSAoKGNoYXIgKikgd29yay0+dHlwZXZlYyk7Ci0rICAgICAgd29yay0+dHlwZXZlYyA9IE5VTEw7Ci0rICAgICAgd29yay0+dHlwZXZlY19zaXplID0gMDsKLSsgICAgfQotKyAgaWYgKHdvcmstPnByb2N0eXBldmVjICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBmcmVlICh3b3JrLT5wcm9jdHlwZXZlYyk7Ci0rICAgICAgd29yay0+cHJvY3R5cGV2ZWMgPSBOVUxMOwotKyAgICAgIHdvcmstPnByb2N0eXBldmVjX3NpemUgPSAwOwotICAgICB9Ci0gICBpZiAod29yay0+dG1wbF9hcmd2ZWMpCi0gICAgIHsKLUBAIC0zNTUyLDYgKzM1NjksOCBAQCBzdGF0aWMgaW50Ci0gZG9fdHlwZSAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmssIGNvbnN0IGNoYXIgKiptYW5nbGVkLCBzdHJpbmcgKnJlc3VsdCkKLSB7Ci0gICBpbnQgbjsKLSsgIGludCBpOwotKyAgaW50IGlzX3Byb2N0eXBldmVjOwotICAgaW50IGRvbmU7Ci0gICBpbnQgc3VjY2VzczsKLSAgIHN0cmluZyBkZWNsOwotQEAgLTM1NjQsNiArMzU4Myw3IEBAIGRvX3R5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICp3b3JrLCBjb25zdAotIAotICAgZG9uZSA9IDA7Ci0gICBzdWNjZXNzID0gMTsKLSsgIGlzX3Byb2N0eXBldmVjID0gMDsKLSAgIHdoaWxlIChzdWNjZXNzICYmICFkb25lKQotICAgICB7Ci0gICAgICAgaW50IG1lbWJlcjsKLUBAIC0zNjE2LDggKzM2MzYsMTUgQEAgZG9fdHlwZSAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmssIGNvbnN0Ci0gCSAgICAgIHN1Y2Nlc3MgPSAwOwotIAkgICAgfQotIAkgIGVsc2UKLSsJICAgIGZvciAoaSA9IDA7IGkgPCB3b3JrLT5ucHJvY3R5cGVzOyBpKyspCi0rCSAgICAgIGlmICh3b3JrIC0+IHByb2N0eXBldmVjIFtpXSA9PSBuKQotKwkgICAgICAgIHN1Y2Nlc3MgPSAwOwotKwotKwkgIGlmIChzdWNjZXNzKQotIAkgICAgewotLQkgICAgICByZW1lbWJlcmVkX3R5cGUgPSB3b3JrIC0+IHR5cGV2ZWNbbl07Ci0rCSAgICAgIGlzX3Byb2N0eXBldmVjID0gMTsKLSsJICAgICAgcHVzaF9wcm9jZXNzZWRfdHlwZSAod29yaywgbik7Ci0rCSAgICAgIHJlbWVtYmVyZWRfdHlwZSA9IHdvcmstPnR5cGV2ZWNbbl07Ci0gCSAgICAgIG1hbmdsZWQgPSAmcmVtZW1iZXJlZF90eXBlOwotIAkgICAgfQotIAkgIGJyZWFrOwotQEAgLTM4NDAsNiArMzg2Nyw5IEBAIGRvX3R5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICp3b3JrLCBjb25zdAotICAgICBzdHJpbmdfZGVsZXRlIChyZXN1bHQpOwotICAgc3RyaW5nX2RlbGV0ZSAoJmRlY2wpOwotIAotKyAgaWYgKGlzX3Byb2N0eXBldmVjKQotKyAgICBwb3BfcHJvY2Vzc2VkX3R5cGUgKHdvcmspOwotKwotICAgaWYgKHN1Y2Nlc3MpCi0gICAgIC8qIEFzc3VtZSBhbiBpbnRlZ3JhbCB0eXBlLCBpZiB3ZSdyZSBub3Qgc3VyZS4gICovCi0gICAgIHJldHVybiAoaW50KSAoKHRrID09IHRrX25vbmUpID8gdGtfaW50ZWdyYWwgOiB0ayk7Ci1AQCAtNDI1Miw2ICs0MjgyLDQxIEBAIGRvX2FyZyAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmssIGNvbnN0IGMKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLStwdXNoX3Byb2Nlc3NlZF90eXBlIChzdHJ1Y3Qgd29ya19zdHVmZiAqd29yaywgaW50IHR5cGV2ZWNfaW5kZXgpCi0rewotKyAgaWYgKHdvcmstPm5wcm9jdHlwZXMgPj0gd29yay0+cHJvY3R5cGV2ZWNfc2l6ZSkKLSsgICAgewotKyAgICAgIGlmICghd29yay0+cHJvY3R5cGV2ZWNfc2l6ZSkKLSsJewotKwkgIHdvcmstPnByb2N0eXBldmVjX3NpemUgPSA0OwotKwkgIHdvcmstPnByb2N0eXBldmVjID0gWE5FV1ZFQyAoaW50LCB3b3JrLT5wcm9jdHlwZXZlY19zaXplKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIGlmICh3b3JrLT5wcm9jdHlwZXZlY19zaXplIDwgMTYpCi0rCSAgICAvKiBEb3VibGUgd2hlbiBzbWFsbC4gICovCi0rCSAgICB3b3JrLT5wcm9jdHlwZXZlY19zaXplICo9IDI7Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICAvKiBHcm93IHNsb3dlciB3aGVuIGxhcmdlLiAgKi8KLSsJICAgICAgaWYgKHdvcmstPnByb2N0eXBldmVjX3NpemUgPiAoSU5UX01BWCAvIDMpICogMikKLSsgICAgICAgICAgICAgICAgeG1hbGxvY19mYWlsZWQgKElOVF9NQVgpOwotKyAgICAgICAgICAgICAgd29yay0+cHJvY3R5cGV2ZWNfc2l6ZSA9ICh3b3JrLT5wcm9jdHlwZXZlY19zaXplICogMyAvIDIpOwotKwkgICAgfQotKyAgICAgICAgICB3b3JrLT5wcm9jdHlwZXZlYwotKyAgICAgICAgICAgID0gWFJFU0laRVZFQyAoaW50LCB3b3JrLT5wcm9jdHlwZXZlYywgd29yay0+cHJvY3R5cGV2ZWNfc2l6ZSk7Ci0rCX0KLSsgICAgfQotKyAgICB3b3JrLT5wcm9jdHlwZXZlYyBbd29yay0+bnByb2N0eXBlcysrXSA9IHR5cGV2ZWNfaW5kZXg7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rcG9wX3Byb2Nlc3NlZF90eXBlIChzdHJ1Y3Qgd29ya19zdHVmZiAqd29yaykKLSt7Ci0rICB3b3JrLT5ucHJvY3R5cGVzLS07Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0gcmVtZW1iZXJfdHlwZSAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmssIGNvbnN0IGNoYXIgKnN0YXJ0LCBpbnQgbGVuKQotIHsKLSAgIGNoYXIgKnRlbTsKLUBAIC00NTE1LDEwICs0NTgwLDEzIEBAIGRlbWFuZ2xlX2FyZ3MgKHN0cnVjdCB3b3JrX3N0dWZmICp3b3JrLAotIAkJewotIAkJICBzdHJpbmdfYXBwZW5kIChkZWNscCwgIiwgIik7Ci0gCQl9Ci0rCSAgICAgIHB1c2hfcHJvY2Vzc2VkX3R5cGUgKHdvcmssIHQpOwotIAkgICAgICBpZiAoIWRvX2FyZyAod29yaywgJnRlbSwgJmFyZykpCi0gCQl7Ci0rCQkgIHBvcF9wcm9jZXNzZWRfdHlwZSAod29yayk7Ci0gCQkgIHJldHVybiAoMCk7Ci0gCQl9Ci0rCSAgICAgIHBvcF9wcm9jZXNzZWRfdHlwZSAod29yayk7Ci0gCSAgICAgIGlmIChQUklOVF9BUkdfVFlQRVMpCi0gCQl7Ci0gCQkgIHN0cmluZ19hcHBlbmRzIChkZWNscCwgJmFyZyk7Ci1JbmRleDogZ2NjLTYuNC4wL2xpYmliZXJ0eS90ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNi40LjAub3JpZy9saWJpYmVydHkvdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkCi0rKysgZ2NjLTYuNC4wL2xpYmliZXJ0eS90ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQKLUBAIC00NDkxLDMgKzQ0OTEsMjEgQEAgdm9pZCBlYXQ8aW50KiwgRm9vKCk6OntsYW1iZGEoYXV0bzoxKiwgYQotIAotIF9aM2VhdElQaVozQmFySXNFdnZFVWxQc1BUX1BUMF9FMF9FdlJTM19SUzVfCi0gdm9pZCBlYXQ8aW50Kiwgdm9pZCBCYXI8c2hvcnQ+KCk6OntsYW1iZGEoc2hvcnQqLCBhdXRvOjEqLCBhdXRvOjIqKSMyfT4oaW50KiYsIHZvaWQgQmFyPHNob3J0PigpOjp7bGFtYmRhKHNob3J0KiwgYXV0bzoxKiwgYXV0bzoyKikjMn0mKQotKyMKLSsjIFRlc3RzIHdyaXRlIGFjY2VzcyB2aW9sYXRpb24gUFI3MDkyNgotKwotKzBfX090Mm0wMlI1VDAwMDA1MDAwMDAKLSswX19PdDJtMDJSNVQwMDAwNTAwMDAwCi0rIwotKwotKzBfX0dUNTAwMDAwMDAwMDBfCi0rMF9fR1Q1MDAwMDAwMDAwMF8KLSsjCi0rCi0rX190Mm0wNUI1MDAwMDAwMDAwMDAwMDAwMDBfCi0rX190Mm0wNUI1MDAwMDAwMDAwMDAwMDAwMDBfCi0rIwotKyMgVGVzdHMgc3RhY2sgb3ZlcmZsb3cgUFI3MTY5NgotKwotK19fMTAlMF9fUzRfMFQwVDAKLSslMDw+OjolMCglMDw+KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLmluYwppbmRleCAyZGMzZGI4Li5kOTY4YzMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLmluYwpAQCAtMTAsOCArMTAsOCBAQAogCiBGSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS9nY2MtNy4zOiR7RklMRV9ESVJOQU1FfS9nY2MtNy4zL2JhY2twb3J0OiIKIAotREVQRU5EUyA9KyAibXBmciBnbXAgbGlibXBjIHpsaWIiCi1OQVRJVkVERVBTID0gIm1wZnItbmF0aXZlIGdtcC1uYXRpdmUgbGlibXBjLW5hdGl2ZSB6bGliLW5hdGl2ZSIKK0RFUEVORFMgPSsgIm1wZnIgZ21wIGxpYm1wYyB6bGliIGZsZXgtbmF0aXZlIgorTkFUSVZFREVQUyA9ICJtcGZyLW5hdGl2ZSBnbXAtbmF0aXZlIGxpYm1wYy1uYXRpdmUgemxpYi1uYXRpdmUgZmxleC1uYXRpdmUiCiAKIExJQ0VOU0UgPSAiR1BMLTMuMC13aXRoLUdDQy1leGNlcHRpb24gJiBHUEx2MyIKIApAQCAtNzMsMTIgKzczLDEyIEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDQ3LXN5bmMtZ2NjLXN0ZGRlZi5oLXdpdGgtbXVzbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDQ4LWdjYy1FbmFibGUtc3RhdGljLVBJRS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtc2VnbWVudGF0aW9uLWZhdWx0LXByZWNvbXBpbGVkLWhkci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDUwLVJJU0MtVi1IYW5kbGUtbm9uLWxlZ2l0aW1hdGUtYWRkcmVzcy1pbi1yaXNjdl9sZWdpdGkucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vbm8tc3NlLWZpeC10ZXN0LWNhc2UtZmFpbHVyZXMucGF0Y2ggXAogICAgICAgICAgICAke0JBQ0tQT1JUU30gXAogIgogQkFDS1BPUlRTID0gIlwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWludGVybmFsLWNvbXBpbGVyLWVycm9yLWluLXRlc3RjYXNlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUFItcnRsLW9wdGltaXphdGlvbi04MzAzMC5wYXRjaCBcCiAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJiZTJkYTIxNjgwZjI3NjI0ZjNhODcwNTVjNGJhNWFmMiIKQEAgLTEwMSw3ICsxMDEsNyBAQAogICAgIC0tZGlzYWJsZS1ib290c3RyYXAgXAogICAgIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKICAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAotICAgIC0td2l0aC1saW5rZXItaGFzaC1zdHlsZT0ke0xJTktFUl9IQVNIX1NUWUxFfSBcCisgICAgJHtAJy0td2l0aC1saW5rZXItaGFzaC1zdHlsZT0ke0xJTktFUl9IQVNIX1NUWUxFfScgaWYgJyR7TElOS0VSX0hBU0hfU1RZTEV9JyBlbHNlICcnfSBcCiAgICAgLS1lbmFibGUtbGlua2VyLWJ1aWxkLWlkIFwKICAgICAtLXdpdGgtcHBsPW5vIFwKICAgICAtLXdpdGgtY2xvb2c9bm8gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDAxLVBSLXJ0bC1vcHRpbWl6YXRpb24tODMwMzAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMDEtUFItcnRsLW9wdGltaXphdGlvbi04MzAzMC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWY3OTg4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDAxLVBSLXJ0bC1vcHRpbWl6YXRpb24tODMwMzAucGF0Y2gKQEAgLTAsMCArMSwyNzIgQEAKK0Zyb20gZjVjNGE5NDQwZjE1Y2NmNjc3NTY1OTkxMGEyMDE0YTU0OTRlZTg2ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGVib3RjYXpvdSA8ZWJvdGNhem91QDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KK0RhdGU6IFdlZCwgMjIgTm92IDIwMTcgMjE6NDM6MjIgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gCVBSIHJ0bC1vcHRpbWl6YXRpb24vODMwMzAgCSogZG9jL3J0bC50ZXhpIChGbGFncworIGluIGFuIFJUTCBFeHByZXNzaW9uKTogQWxwaGFiZXRpemUsIGFkZCBlbnRyeSAJZm9yIENST1NTSU5HX0pVTVBfUCBhbmQKKyBtZW50aW9uIHVzYWdlIG9mICdqdW1wJyBmb3IgSlVNUF9JTlNOcy4gCShJbnNucyk6IERlbGV0ZSBlbnRyeSBmb3IKKyBSRUdfQ1JPU1NJTkdfSlVNUCBpbiByZWdpc3RlciBub3Rlcy4gCSogYmItcmVvcmRlci5jCisgKHVwZGF0ZV9jcm9zc2luZ19qdW1wX2ZsYWdzKTogRG8gbm90IHRlc3Qgd2hldGhlciB0aGUgCUNST1NTSU5HX0pVTVBfUCBmbGFnCisgaXMgYWxyZWFkeSBzZXQgYmVmb3JlIHNldHRpbmcgaXQuIAkqIGNmZ3J0bC5jIChmaXh1cF9wYXJ0aXRpb25fY3Jvc3NpbmcpOgorIExpa2V3aXNlLiAJKiByZW9yZy5jIChyZWxheF9kZWxheV9zbG90cyk6IERvIG5vdCBjb25zaWRlciBhCisgQ1JPU1NJTkdfSlVNUF9QIGluc24gCWFzIHVzZWxlc3MuCisKK2dpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL3RydW5rQDI1NTA4MyAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitUaGlzIHBhdGNoIHJlbW92ZXMgY2hhbmdlcyB0byBDaGFuZ2Vsb2cgZnJvbSB0aGUgb3JpZ2luYWwgdXBzdHJlYW0gcGF0Y2guCitUaGlzIHdpbGwgaGVscCB1cyBhdm9pZCBjb25mbGljdHMuCisKK09yaWdpbmFsIGJhY2twb3J0IHRvIEdDQyA3LnggYnkgQW1ydXRhIFBhd2FyIDxBbXJ1dGEuUGF3YXJAa3BpdC5jb20+CisKK1NpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KKworLS0tCisgZ2NjL2JiLXJlb3JkZXIuYyB8ICAgNSArLS0KKyBnY2MvY2ZncnRsLmMgICAgIHwgICAzICstCisgZ2NjL2RvYy9ydGwudGV4aSB8IDEyOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgZ2NjL3Jlb3JnLmMgICAgICB8ICAgNyArLS0KKyA1IGZpbGVzIGNoYW5nZWQsIDg0IGluc2VydGlvbnMoKyksIDcyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2JiLXJlb3JkZXIuYyBiL2djYy9iYi1yZW9yZGVyLmMKK2luZGV4IDU1ZTZkYzYuLjc5NDI4M2MgMTAwNjQ0CistLS0gYS9nY2MvYmItcmVvcmRlci5jCisrKysgYi9nY2MvYmItcmVvcmRlci5jCitAQCAtMjIzNiwxMCArMjIzNiw3IEBAIHVwZGF0ZV9jcm9zc2luZ19qdW1wX2ZsYWdzICh2b2lkKQorICAgICBGT1JfRUFDSF9FREdFIChlLCBlaSwgYmItPnN1Y2NzKQorICAgICAgIGlmIChlLT5mbGFncyAmIEVER0VfQ1JPU1NJTkcpCisgCXsKKy0JICBpZiAoSlVNUF9QIChCQl9FTkQgKGJiKSkKKy0JICAgICAgLyogU29tZSBmbGFncyB3ZXJlIGFkZGVkIGR1cmluZyBmaXhfdXBfZmFsbF90aHJ1X2VkZ2VzLCB2aWEKKy0JCSBmb3JjZV9ub25mYWxsdGhydV9hbmRfcmVkaXJlY3QuICAqLworLQkgICAgICAmJiAhQ1JPU1NJTkdfSlVNUF9QIChCQl9FTkQgKGJiKSkpCisrCSAgaWYgKEpVTVBfUCAoQkJfRU5EIChiYikpKQorIAkgICAgQ1JPU1NJTkdfSlVNUF9QIChCQl9FTkQgKGJiKSkgPSAxOworIAkgIGJyZWFrOworIAl9CitkaWZmIC0tZ2l0IGEvZ2NjL2NmZ3J0bC5jIGIvZ2NjL2NmZ3J0bC5jCitpbmRleCBkNmU1YWMwLi5hMmFkMDc1IDEwMDY0NAorLS0tIGEvZ2NjL2NmZ3J0bC5jCisrKysgYi9nY2MvY2ZncnRsLmMKK0BAIC0xMzM0LDggKzEzMzQsNyBAQCBmaXh1cF9wYXJ0aXRpb25fY3Jvc3NpbmcgKGVkZ2UgZSkKKyAgIGlmIChCQl9QQVJUSVRJT04gKGUtPnNyYykgIT0gQkJfUEFSVElUSU9OIChlLT5kZXN0KSkKKyAgICAgeworICAgICAgIGUtPmZsYWdzIHw9IEVER0VfQ1JPU1NJTkc7CistICAgICAgaWYgKEpVTVBfUCAoQkJfRU5EIChlLT5zcmMpKQorLQkgICYmICFDUk9TU0lOR19KVU1QX1AgKEJCX0VORCAoZS0+c3JjKSkpCisrICAgICAgaWYgKEpVTVBfUCAoQkJfRU5EIChlLT5zcmMpKSkKKyAJQ1JPU1NJTkdfSlVNUF9QIChCQl9FTkQgKGUtPnNyYykpID0gMTsKKyAgICAgfQorICAgZWxzZSBpZiAoQkJfUEFSVElUSU9OIChlLT5zcmMpID09IEJCX1BBUlRJVElPTiAoZS0+ZGVzdCkpCitkaWZmIC0tZ2l0IGEvZ2NjL2RvYy9ydGwudGV4aSBiL2djYy9kb2MvcnRsLnRleGkKK2luZGV4IDIxNTI0ZjUuLmE1OGVlZGMgMTAwNjQ0CistLS0gYS9nY2MvZG9jL3J0bC50ZXhpCisrKysgYi9nY2MvZG9jL3J0bC50ZXhpCitAQCAtNTY1LDYgKzU2NSwxNiBAQCB0aGF0IGFyZSB1c2VkIGluIGNlcnRhaW4gdHlwZXMgb2YgZXhwcmVzc2lvbi4gIE1vc3Qgb2Z0ZW4gdGhleQorIGFyZSBhY2Nlc3NlZCB3aXRoIHRoZSBmb2xsb3dpbmcgbWFjcm9zLCB3aGljaCBleHBhbmQgaW50byBsdmFsdWVzLgorIAorIEB0YWJsZSBAY29kZQorK0BmaW5kZXggQ1JPU1NJTkdfSlVNUF9QCisrQGNpbmRleCBAY29kZXtqdW1wX2luc259IGFuZCBAc2FtcHsvan0KKytAaXRlbSBDUk9TU0lOR19KVU1QX1AgKEB2YXJ7eH0pCisrTm9uemVybyBpbiBhIEBjb2Rle2p1bXBfaW5zbn0gaWYgaXQgY3Jvc3NlcyBiZXR3ZWVuIGhvdCBhbmQgY29sZCBzZWN0aW9ucywKKyt3aGljaCBjb3VsZCBwb3RlbnRpYWxseSBiZSB2ZXJ5IGZhciBhcGFydCBpbiB0aGUgZXhlY3V0YWJsZS4gIFRoZSBwcmVzZW5jZQorK29mIHRoaXMgZmxhZyBpbmRpY2F0ZXMgdG8gb3RoZXIgb3B0aW1pemF0aW9ucyB0aGF0IHRoaXMgYnJhbmNoaW5nIGluc3RydWN0aW9uCisrc2hvdWxkIG5vdCBiZSBgYGNvbGxhcHNlZCcnIGludG8gYSBzaW1wbGVyIGJyYW5jaGluZyBjb25zdHJ1Y3QuICBJdCBpcyB1c2VkCisrd2hlbiB0aGUgb3B0aW1pemF0aW9uIHRvIHBhcnRpdGlvbiBiYXNpYyBibG9ja3MgaW50byBob3QgYW5kIGNvbGQgc2VjdGlvbnMKKytpcyB0dXJuZWQgb24uCisrCisgQGZpbmRleCBDT05TVEFOVF9QT09MX0FERFJFU1NfUAorIEBjaW5kZXggQGNvZGV7c3ltYm9sX3JlZn0gYW5kIEBzYW1wey91fQorIEBjaW5kZXggQGNvZGV7dW5jaGFuZ2luZ30sIGluIEBjb2Rle3N5bWJvbF9yZWZ9CitAQCAtNTc3LDM3ICs1ODcsNiBAQCBJbiBlaXRoZXIgY2FzZSBHQ0MgYXNzdW1lcyB0aGVzZSBhZGRyZXNzZXMgY2FuIGJlIGFkZHJlc3NlZCBkaXJlY3RseSwKKyBwZXJoYXBzIHdpdGggdGhlIGhlbHAgb2YgYmFzZSByZWdpc3RlcnMuCisgU3RvcmVkIGluIHRoZSBAY29kZXt1bmNoYW5naW5nfSBmaWVsZCBhbmQgcHJpbnRlZCBhcyBAc2FtcHsvdX0uCisgCistQGZpbmRleCBSVExfQ09OU1RfQ0FMTF9QCistQGNpbmRleCBAY29kZXtjYWxsX2luc259IGFuZCBAc2FtcHsvdX0KKy1AY2luZGV4IEBjb2Rle3VuY2hhbmdpbmd9LCBpbiBAY29kZXtjYWxsX2luc259CistQGl0ZW0gUlRMX0NPTlNUX0NBTExfUCAoQHZhcnt4fSkKKy1JbiBhIEBjb2Rle2NhbGxfaW5zbn0gaW5kaWNhdGVzIHRoYXQgdGhlIGluc24gcmVwcmVzZW50cyBhIGNhbGwgdG8gYQorLWNvbnN0IGZ1bmN0aW9uLiAgU3RvcmVkIGluIHRoZSBAY29kZXt1bmNoYW5naW5nfSBmaWVsZCBhbmQgcHJpbnRlZCBhcworLUBzYW1wey91fS4KKy0KKy1AZmluZGV4IFJUTF9QVVJFX0NBTExfUAorLUBjaW5kZXggQGNvZGV7Y2FsbF9pbnNufSBhbmQgQHNhbXB7L2l9CistQGNpbmRleCBAY29kZXtyZXR1cm5fdmFsfSwgaW4gQGNvZGV7Y2FsbF9pbnNufQorLUBpdGVtIFJUTF9QVVJFX0NBTExfUCAoQHZhcnt4fSkKKy1JbiBhIEBjb2Rle2NhbGxfaW5zbn0gaW5kaWNhdGVzIHRoYXQgdGhlIGluc24gcmVwcmVzZW50cyBhIGNhbGwgdG8gYQorLXB1cmUgZnVuY3Rpb24uICBTdG9yZWQgaW4gdGhlIEBjb2Rle3JldHVybl92YWx9IGZpZWxkIGFuZCBwcmludGVkIGFzCistQHNhbXB7L2l9LgorLQorLUBmaW5kZXggUlRMX0NPTlNUX09SX1BVUkVfQ0FMTF9QCistQGNpbmRleCBAY29kZXtjYWxsX2luc259IGFuZCBAc2FtcHsvdX0gb3IgQHNhbXB7L2l9CistQGl0ZW0gUlRMX0NPTlNUX09SX1BVUkVfQ0FMTF9QIChAdmFye3h9KQorLUluIGEgQGNvZGV7Y2FsbF9pbnNufSwgdHJ1ZSBpZiBAY29kZXtSVExfQ09OU1RfQ0FMTF9QfSBvcgorLUBjb2Rle1JUTF9QVVJFX0NBTExfUH0gaXMgdHJ1ZS4KKy0KKy1AZmluZGV4IFJUTF9MT09QSU5HX0NPTlNUX09SX1BVUkVfQ0FMTF9QCistQGNpbmRleCBAY29kZXtjYWxsX2luc259IGFuZCBAc2FtcHsvY30KKy1AY2luZGV4IEBjb2Rle2NhbGx9LCBpbiBAY29kZXtjYWxsX2luc259CistQGl0ZW0gUlRMX0xPT1BJTkdfQ09OU1RfT1JfUFVSRV9DQUxMX1AgKEB2YXJ7eH0pCistSW4gYSBAY29kZXtjYWxsX2luc259IGluZGljYXRlcyB0aGF0IHRoZSBpbnNuIHJlcHJlc2VudHMgYSBwb3NzaWJseQorLWluZmluaXRlIGxvb3BpbmcgY2FsbCB0byBhIGNvbnN0IG9yIHB1cmUgZnVuY3Rpb24uICBTdG9yZWQgaW4gdGhlCistQGNvZGV7Y2FsbH0gZmllbGQgYW5kIHByaW50ZWQgYXMgQHNhbXB7L2N9LiAgT25seSB0cnVlIGlmIG9uZSBvZgorLUBjb2Rle1JUTF9DT05TVF9DQUxMX1B9IG9yIEBjb2Rle1JUTF9QVVJFX0NBTExfUH0gaXMgdHJ1ZS4KKy0KKyBAZmluZGV4IElOU05fQU5OVUxMRURfQlJBTkNIX1AKKyBAY2luZGV4IEBjb2Rle2p1bXBfaW5zbn0gYW5kIEBzYW1wey91fQorIEBjaW5kZXggQGNvZGV7Y2FsbF9pbnNufSBhbmQgQHNhbXB7L3V9CitAQCAtNzAyLDYgKzY4MSwyOSBAQCBTdG9yZWQgaW4gdGhlIEBjb2Rle2NhbGx9IGZpZWxkIGFuZCBwcmludGVkIGFzIEBzYW1wey9jfS4KKyBOb256ZXJvIGluIGEgQGNvZGV7bWVtfSBpZiB0aGUgbWVtb3J5IHJlZmVyZW5jZSBob2xkcyBhIHBvaW50ZXIuCisgU3RvcmVkIGluIHRoZSBAY29kZXtmcmFtZV9yZWxhdGVkfSBmaWVsZCBhbmQgcHJpbnRlZCBhcyBAc2FtcHsvZn0uCisgCisrQGZpbmRleCBNRU1fUkVBRE9OTFlfUAorK0BjaW5kZXggQGNvZGV7bWVtfSBhbmQgQHNhbXB7L3V9CisrQGNpbmRleCBAY29kZXt1bmNoYW5naW5nfSwgaW4gQGNvZGV7bWVtfQorK0BpdGVtIE1FTV9SRUFET05MWV9QIChAdmFye3h9KQorK05vbnplcm8gaW4gYSBAY29kZXttZW19LCBpZiB0aGUgbWVtb3J5IGlzIHN0YXRpY2FsbHkgYWxsb2NhdGVkIGFuZCByZWFkLW9ubHkuCisrCisrUmVhZC1vbmx5IGluIHRoaXMgY29udGV4dCBtZWFucyBuZXZlciBtb2RpZmllZCBkdXJpbmcgdGhlIGxpZmV0aW1lIG9mIHRoZQorK3Byb2dyYW0sIG5vdCBuZWNlc3NhcmlseSBpbiBST00gb3IgaW4gd3JpdGUtZGlzYWJsZWQgcGFnZXMuICBBIGNvbW1vbgorK2V4YW1wbGUgb2YgdGhlIGxhdGVyIGlzIGEgc2hhcmVkIGxpYnJhcnkncyBnbG9iYWwgb2Zmc2V0IHRhYmxlLiAgVGhpcworK3RhYmxlIGlzIGluaXRpYWxpemVkIGJ5IHRoZSBydW50aW1lIGxvYWRlciwgc28gdGhlIG1lbW9yeSBpcyB0ZWNobmljYWxseQorK3dyaXRhYmxlLCBidXQgYWZ0ZXIgY29udHJvbCBpcyB0cmFuc2ZlcnJlZCBmcm9tIHRoZSBydW50aW1lIGxvYWRlciB0byB0aGUKKythcHBsaWNhdGlvbiwgdGhpcyBtZW1vcnkgd2lsbCBuZXZlciBiZSBzdWJzZXF1ZW50bHkgbW9kaWZpZWQuCisrCisrU3RvcmVkIGluIHRoZSBAY29kZXt1bmNoYW5naW5nfSBmaWVsZCBhbmQgcHJpbnRlZCBhcyBAc2FtcHsvdX0uCisrCisrQGZpbmRleCBQUkVGRVRDSF9TQ0hFRFVMRV9CQVJSSUVSX1AKKytAY2luZGV4IEBjb2Rle3ByZWZldGNofSBhbmQgQHNhbXB7L3Z9CisrQGNpbmRleCBAY29kZXt2b2xhdGlsZX0sIGluIEBjb2Rle3ByZWZldGNofQorK0BpdGVtIFBSRUZFVENIX1NDSEVEVUxFX0JBUlJJRVJfUCAoQHZhcnt4fSkKKytJbiBhIEBjb2Rle3ByZWZldGNofSwgaW5kaWNhdGVzIHRoYXQgdGhlIHByZWZldGNoIGlzIGEgc2NoZWR1bGluZyBiYXJyaWVyLgorK05vIG90aGVyIElOU05zIHdpbGwgYmUgbW92ZWQgb3ZlciBpdC4KKytTdG9yZWQgaW4gdGhlIEBjb2Rle3ZvbGF0aWx9IGZpZWxkIGFuZCBwcmludGVkIGFzIEBzYW1wey92fS4KKysKKyBAZmluZGV4IFJFR19GVU5DVElPTl9WQUxVRV9QCisgQGNpbmRleCBAY29kZXtyZWd9IGFuZCBAc2FtcHsvaX0KKyBAY2luZGV4IEBjb2Rle3JldHVybl92YWx9LCBpbiBAY29kZXtyZWd9CitAQCAtNzMxLDYgKzczMywzNyBAQCBUaGUgc2FtZSBoYXJkIHJlZ2lzdGVyIG1heSBiZSB1c2VkIGFsc28gZm9yIGNvbGxlY3RpbmcgdGhlIHZhbHVlcyBvZgorIGZ1bmN0aW9ucyBjYWxsZWQgYnkgdGhpcyBvbmUsIGJ1dCBAY29kZXtSRUdfRlVOQ1RJT05fVkFMVUVfUH0gaXMgemVybworIGluIHRoaXMga2luZCBvZiB1c2UuCisgCisrQGZpbmRleCBSVExfQ09OU1RfQ0FMTF9QCisrQGNpbmRleCBAY29kZXtjYWxsX2luc259IGFuZCBAc2FtcHsvdX0KKytAY2luZGV4IEBjb2Rle3VuY2hhbmdpbmd9LCBpbiBAY29kZXtjYWxsX2luc259CisrQGl0ZW0gUlRMX0NPTlNUX0NBTExfUCAoQHZhcnt4fSkKKytJbiBhIEBjb2Rle2NhbGxfaW5zbn0gaW5kaWNhdGVzIHRoYXQgdGhlIGluc24gcmVwcmVzZW50cyBhIGNhbGwgdG8gYQorK2NvbnN0IGZ1bmN0aW9uLiAgU3RvcmVkIGluIHRoZSBAY29kZXt1bmNoYW5naW5nfSBmaWVsZCBhbmQgcHJpbnRlZCBhcworK0BzYW1wey91fS4KKysKKytAZmluZGV4IFJUTF9QVVJFX0NBTExfUAorK0BjaW5kZXggQGNvZGV7Y2FsbF9pbnNufSBhbmQgQHNhbXB7L2l9CisrQGNpbmRleCBAY29kZXtyZXR1cm5fdmFsfSwgaW4gQGNvZGV7Y2FsbF9pbnNufQorK0BpdGVtIFJUTF9QVVJFX0NBTExfUCAoQHZhcnt4fSkKKytJbiBhIEBjb2Rle2NhbGxfaW5zbn0gaW5kaWNhdGVzIHRoYXQgdGhlIGluc24gcmVwcmVzZW50cyBhIGNhbGwgdG8gYQorK3B1cmUgZnVuY3Rpb24uICBTdG9yZWQgaW4gdGhlIEBjb2Rle3JldHVybl92YWx9IGZpZWxkIGFuZCBwcmludGVkIGFzCisrQHNhbXB7L2l9LgorKworK0BmaW5kZXggUlRMX0NPTlNUX09SX1BVUkVfQ0FMTF9QCisrQGNpbmRleCBAY29kZXtjYWxsX2luc259IGFuZCBAc2FtcHsvdX0gb3IgQHNhbXB7L2l9CisrQGl0ZW0gUlRMX0NPTlNUX09SX1BVUkVfQ0FMTF9QIChAdmFye3h9KQorK0luIGEgQGNvZGV7Y2FsbF9pbnNufSwgdHJ1ZSBpZiBAY29kZXtSVExfQ09OU1RfQ0FMTF9QfSBvcgorK0Bjb2Rle1JUTF9QVVJFX0NBTExfUH0gaXMgdHJ1ZS4KKysKKytAZmluZGV4IFJUTF9MT09QSU5HX0NPTlNUX09SX1BVUkVfQ0FMTF9QCisrQGNpbmRleCBAY29kZXtjYWxsX2luc259IGFuZCBAc2FtcHsvY30KKytAY2luZGV4IEBjb2Rle2NhbGx9LCBpbiBAY29kZXtjYWxsX2luc259CisrQGl0ZW0gUlRMX0xPT1BJTkdfQ09OU1RfT1JfUFVSRV9DQUxMX1AgKEB2YXJ7eH0pCisrSW4gYSBAY29kZXtjYWxsX2luc259IGluZGljYXRlcyB0aGF0IHRoZSBpbnNuIHJlcHJlc2VudHMgYSBwb3NzaWJseQorK2luZmluaXRlIGxvb3BpbmcgY2FsbCB0byBhIGNvbnN0IG9yIHB1cmUgZnVuY3Rpb24uICBTdG9yZWQgaW4gdGhlCisrQGNvZGV7Y2FsbH0gZmllbGQgYW5kIHByaW50ZWQgYXMgQHNhbXB7L2N9LiAgT25seSB0cnVlIGlmIG9uZSBvZgorK0Bjb2Rle1JUTF9DT05TVF9DQUxMX1B9IG9yIEBjb2Rle1JUTF9QVVJFX0NBTExfUH0gaXMgdHJ1ZS4KKysKKyBAZmluZGV4IFJUWF9GUkFNRV9SRUxBVEVEX1AKKyBAY2luZGV4IEBjb2Rle2luc259IGFuZCBAc2FtcHsvZn0KKyBAY2luZGV4IEBjb2Rle2NhbGxfaW5zbn0gYW5kIEBzYW1wey9mfQorQEAgLTc2NSwyMSArNzk4LDYgQEAgY29tcHV0YXRpb24gcGVyZm9ybWVkIGJ5IHRoaXMgaW5zdHJ1Y3Rpb24sIGkuZS4sIG9uZSB0aGF0CisgVGhpcyBmbGFnIGlzIHJlcXVpcmVkIGZvciBleGNlcHRpb24gaGFuZGxpbmcgc3VwcG9ydCBvbiB0YXJnZXRzIHdpdGggUlRMCisgcHJvbG9ndWVzLgorIAorLUBmaW5kZXggTUVNX1JFQURPTkxZX1AKKy1AY2luZGV4IEBjb2Rle21lbX0gYW5kIEBzYW1wey91fQorLUBjaW5kZXggQGNvZGV7dW5jaGFuZ2luZ30sIGluIEBjb2Rle21lbX0KKy1AaXRlbSBNRU1fUkVBRE9OTFlfUCAoQHZhcnt4fSkKKy1Ob256ZXJvIGluIGEgQGNvZGV7bWVtfSwgaWYgdGhlIG1lbW9yeSBpcyBzdGF0aWNhbGx5IGFsbG9jYXRlZCBhbmQgcmVhZC1vbmx5LgorLQorLVJlYWQtb25seSBpbiB0aGlzIGNvbnRleHQgbWVhbnMgbmV2ZXIgbW9kaWZpZWQgZHVyaW5nIHRoZSBsaWZldGltZSBvZiB0aGUKKy1wcm9ncmFtLCBub3QgbmVjZXNzYXJpbHkgaW4gUk9NIG9yIGluIHdyaXRlLWRpc2FibGVkIHBhZ2VzLiAgQSBjb21tb24KKy1leGFtcGxlIG9mIHRoZSBsYXRlciBpcyBhIHNoYXJlZCBsaWJyYXJ5J3MgZ2xvYmFsIG9mZnNldCB0YWJsZS4gIFRoaXMKKy10YWJsZSBpcyBpbml0aWFsaXplZCBieSB0aGUgcnVudGltZSBsb2FkZXIsIHNvIHRoZSBtZW1vcnkgaXMgdGVjaG5pY2FsbHkKKy13cml0YWJsZSwgYnV0IGFmdGVyIGNvbnRyb2wgaXMgdHJhbnNmZXJyZWQgZnJvbSB0aGUgcnVudGltZSBsb2FkZXIgdG8gdGhlCistYXBwbGljYXRpb24sIHRoaXMgbWVtb3J5IHdpbGwgbmV2ZXIgYmUgc3Vic2VxdWVudGx5IG1vZGlmaWVkLgorLQorLVN0b3JlZCBpbiB0aGUgQGNvZGV7dW5jaGFuZ2luZ30gZmllbGQgYW5kIHByaW50ZWQgYXMgQHNhbXB7L3V9LgorLQorIEBmaW5kZXggU0NIRURfR1JPVVBfUAorIEBjaW5kZXggQGNvZGV7aW5zbn0gYW5kIEBzYW1wey9zfQorIEBjaW5kZXggQGNvZGV7Y2FsbF9pbnNufSBhbmQgQHNhbXB7L3N9CitAQCAtODc5LDE0ICs4OTcsNiBAQCBTdG9yZWQgaW4gdGhlIEBjb2Rle3ZvbGF0aWx9IGZpZWxkIGFuZCBwcmludGVkIGFzIEBzYW1wey92fS4KKyBNb3N0IHVzZXMgb2YgQGNvZGV7U1lNQk9MX1JFRl9GTEFHfSBhcmUgaGlzdG9yaWMgYW5kIG1heSBiZSBzdWJzdW1lZAorIGJ5IEBjb2Rle1NZTUJPTF9SRUZfRkxBR1N9LiAgQ2VydGFpbmx5IHVzZSBvZiBAY29kZXtTWU1CT0xfUkVGX0ZMQUdTfQorIGlzIG1hbmRhdG9yeSBpZiB0aGUgdGFyZ2V0IHJlcXVpcmVzIG1vcmUgdGhhbiBvbmUgYml0IG9mIHN0b3JhZ2UuCistCistQGZpbmRleCBQUkVGRVRDSF9TQ0hFRFVMRV9CQVJSSUVSX1AKKy1AY2luZGV4IEBjb2Rle3ByZWZldGNofSBhbmQgQHNhbXB7L3Z9CistQGNpbmRleCBAY29kZXt2b2xhdGlsZX0sIGluIEBjb2Rle3ByZWZldGNofQorLUBpdGVtIFBSRUZFVENIX1NDSEVEVUxFX0JBUlJJRVJfUCAoQHZhcnt4fSkKKy1JbiBhIEBjb2Rle3ByZWZldGNofSwgaW5kaWNhdGVzIHRoYXQgdGhlIHByZWZldGNoIGlzIGEgc2NoZWR1bGluZyBiYXJyaWVyLgorLU5vIG90aGVyIElOU05zIHdpbGwgYmUgbW92ZWQgb3ZlciBpdC4KKy1TdG9yZWQgaW4gdGhlIEBjb2Rle3ZvbGF0aWx9IGZpZWxkIGFuZCBwcmludGVkIGFzIEBzYW1wey92fS4KKyBAZW5kIHRhYmxlCisgCisgVGhlc2UgYXJlIHRoZSBmaWVsZHMgdG8gd2hpY2ggdGhlIGFib3ZlIG1hY3JvcyByZWZlcjoKK0BAIC05NzQsNiArOTg1LDggQEAgSW4gYSBAY29kZXtzZXR9LCAxIG1lYW5zIGl0IGlzIGZvciBhIHJldHVybi4KKyAKKyBJbiBhIEBjb2Rle2NhbGxfaW5zbn0sIDEgbWVhbnMgaXQgaXMgYSBzaWJsaW5nIGNhbGwuCisgCisrSW4gYSBAY29kZXtqdW1wX2luc259LCAxIG1lYW5zIGl0IGlzIGEgY3Jvc3NpbmcganVtcC4KKysKKyBJbiBhbiBSVEwgZHVtcCwgdGhpcyBmbGFnIGlzIHJlcHJlc2VudGVkIGFzIEBzYW1wey9qfS4KKyAKKyBAZmluZGV4IHVuY2hhbmdpbmcKK0BAIC0zODg3LDE2ICszOTAwLDYgQEAgbXVsdGlwbGUgdGFyZ2V0czsgdGhlIGxhc3QgbGFiZWwgaW4gdGhlIGluc24gKGluIHRoZSBoaWdoZXN0IG51bWJlcmVkCisgaW5zbi1maWVsZCkgZ29lcyBpbnRvIHRoZSBAY29kZXtKVU1QX0xBQkVMfSBmaWVsZCBhbmQgZG9lcyBub3QgaGF2ZSBhCisgQGNvZGV7UkVHX0xBQkVMX1RBUkdFVH0gbm90ZS4gIEB4cmVme0luc25zLCBKVU1QX0xBQkVMfS4KKyAKKy1AZmluZGV4IFJFR19DUk9TU0lOR19KVU1QCistQGl0ZW0gUkVHX0NST1NTSU5HX0pVTVAKKy1UaGlzIGluc24gaXMgYSBicmFuY2hpbmcgaW5zdHJ1Y3Rpb24gKGVpdGhlciBhbiB1bmNvbmRpdGlvbmFsIGp1bXAgb3IKKy1hbiBpbmRpcmVjdCBqdW1wKSB3aGljaCBjcm9zc2VzIGJldHdlZW4gaG90IGFuZCBjb2xkIHNlY3Rpb25zLCB3aGljaAorLWNvdWxkIHBvdGVudGlhbGx5IGJlIHZlcnkgZmFyIGFwYXJ0IGluIHRoZSBleGVjdXRhYmxlLiAgVGhlIHByZXNlbmNlCistb2YgdGhpcyBub3RlIGluZGljYXRlcyB0byBvdGhlciBvcHRpbWl6YXRpb25zIHRoYXQgdGhpcyBicmFuY2hpbmcKKy1pbnN0cnVjdGlvbiBzaG91bGQgbm90IGJlIGBgY29sbGFwc2VkJycgaW50byBhIHNpbXBsZXIgYnJhbmNoaW5nCistY29uc3RydWN0LiAgSXQgaXMgdXNlZCB3aGVuIHRoZSBvcHRpbWl6YXRpb24gdG8gcGFydGl0aW9uIGJhc2ljIGJsb2NrcworLWludG8gaG90IGFuZCBjb2xkIHNlY3Rpb25zIGlzIHR1cm5lZCBvbi4KKy0KKyBAZmluZGV4IFJFR19TRVRKTVAKKyBAaXRlbSBSRUdfU0VUSk1QCisgQXBwZWFycyBhdHRhY2hlZCB0byBlYWNoIEBjb2Rle0NBTExfSU5TTn0gdG8gQGNvZGV7c2V0am1wfSBvciBhCitkaWZmIC0tZ2l0IGEvZ2NjL3Jlb3JnLmMgYi9nY2MvcmVvcmcuYworaW5kZXggNTkxNGFmNi4uNzdmM2ZlNyAxMDA2NDQKKy0tLSBhL2djYy9yZW9yZy5jCisrKysgYi9nY2MvcmVvcmcuYworQEAgLTMzNjAsMTAgKzMzNjAsMTEgQEAgcmVsYXhfZGVsYXlfc2xvdHMgKHJ0eF9pbnNuICpmaXJzdCkKKyAJfQorIAorICAgICAgIC8qIFNlZSBpZiB3ZSBoYXZlIGEgc2ltcGxlIChjb25kaXRpb25hbCkganVtcCB0aGF0IGlzIHVzZWxlc3MuICAqLworLSAgICAgIGlmICghIElOU05fQU5OVUxMRURfQlJBTkNIX1AgKGRlbGF5X2p1bXBfaW5zbikKKy0JICAmJiAhIGNvbmRqdW1wX2luX3BhcmFsbGVsX3AgKGRlbGF5X2p1bXBfaW5zbikKKysgICAgICBpZiAoIUNST1NTSU5HX0pVTVBfUCAoZGVsYXlfanVtcF9pbnNuKQorKwkgICYmICFJTlNOX0FOTlVMTEVEX0JSQU5DSF9QIChkZWxheV9qdW1wX2luc24pCisrCSAgJiYgIWNvbmRqdW1wX2luX3BhcmFsbGVsX3AgKGRlbGF5X2p1bXBfaW5zbikKKyAJICAmJiBwcmV2X2FjdGl2ZV9pbnNuIChhc19hPHJ0eF9pbnNuICo+ICh0YXJnZXRfbGFiZWwpKSA9PSBpbnNuCistCSAgJiYgISBCQVJSSUVSX1AgKHByZXZfbm9ubm90ZV9pbnNuIChhc19hPHJ0eF9pbnNuICo+ICh0YXJnZXRfbGFiZWwpKSkKKysJICAmJiAhQkFSUklFUl9QIChwcmV2X25vbm5vdGVfaW5zbiAoYXNfYTxydHhfaW5zbiAqPiAodGFyZ2V0X2xhYmVsKSkpCisgCSAgLyogSWYgdGhlIGxhc3QgaW5zbiBpbiB0aGUgZGVsYXkgc2xvdCBzZXRzIENDMCBmb3Igc29tZSBpbnNuLAorIAkgICAgIHZhcmlvdXMgY29kZSBhc3N1bWVzIHRoYXQgaXQgaXMgaW4gYSBkZWxheSBzbG90LiAgV2UgY291bGQKKyAJICAgICBwdXQgaXQgYmFjayB3aGVyZSBpdCBiZWxvbmdlZCBhbmQgZGVsZXRlIHRoZSByZWdpc3RlciBub3RlcywKKy0tIAorMS44LjUuNgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwNTAtUklTQy1WLUhhbmRsZS1ub24tbGVnaXRpbWF0ZS1hZGRyZXNzLWluLXJpc2N2X2xlZ2l0aS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA1MC1SSVNDLVYtSGFuZGxlLW5vbi1sZWdpdGltYXRlLWFkZHJlc3MtaW4tcmlzY3ZfbGVnaXRpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTE0ZDA0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA1MC1SSVNDLVYtSGFuZGxlLW5vbi1sZWdpdGltYXRlLWFkZHJlc3MtaW4tcmlzY3ZfbGVnaXRpLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSAxNjIxMGU2MjcwZTIwMGNkNDg5MmE5MGVjZWY2MDg5MDZiZTNhMTMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2l0byBDaGVuZyA8a2l0by5jaGVuZ0BnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDQgTWF5IDIwMTcgMDI6MTE6MTMgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gUklTQy1WOiBIYW5kbGUgbm9uLWxlZ2l0aW1hdGUgYWRkcmVzcyBpbgotIHJpc2N2X2xlZ2l0aW1pemVfbW92ZQotCi1HQ0MgbWF5IGdlbmVyYXRlIG5vbi1sZWdpdGltYXRlIGFkZHJlc3MgZHVlIHRvIHdlIGFsbG93IHNvbWUKLWxvYWQvc3RvcmUgd2l0aCBub24tbGVnaXRpbWF0ZSBhZGRyZXNzIGluIHBpYy5tZC4KLQotICAyMDE3LTA1LTEyICBLaXRvIENoZW5nICA8a2l0by5jaGVuZ0BnbWFpbC5jb20+Ci0KLSAgICAgICogY29uZmlnL3Jpc2N2L3Jpc2N2LmMgKHJpc2N2X2xlZ2l0aW1pemVfbW92ZSk6IEhhbmRsZQotICAgICAgbm9uLWxlZ2l0aW1hdGUgYWRkcmVzcy4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotIGdjYy9DaGFuZ2VMb2cgICAgICAgICAgICB8ICA1ICsrKysrCi0gZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5jIHwgMTYgKysrKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5jIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5jCi1pbmRleCBmN2ZlYzRiZmNmOC4uZDUxOWJlMTY1OWEgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LmMKLSsrKyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YuYwotQEAgLTEzODUsNiArMTM4NSwyMiBAQCByaXNjdl9sZWdpdGltaXplX21vdmUgKGVudW0gbWFjaGluZV9tb2RlIG1vZGUsIHJ0eCBkZXN0LCBydHggc3JjKQotICAgICAgIHJldHVybiB0cnVlOwotICAgICB9Ci0gCi0rICAvKiBSSVNDLVYgR0NDIG1heSBnZW5lcmF0ZSBub24tbGVnaXRpbWF0ZSBhZGRyZXNzIGR1ZSB0byB3ZSBwcm92aWRlIHNvbWUKLSsgICAgIHBhdHRlcm4gZm9yIG9wdGltaXplIGFjY2VzcyBQSUMgbG9jYWwgc3ltYm9sIGFuZCBpdCdzIG1ha2UgR0NDIGdlbmVyYXRlCi0rICAgICB1bnJlY29nbml6YWJsZSBpbnN0cnVjdGlvbiBkdXJpbmcgb3B0bWl6aW5nLiAgKi8KLSsKLSsgIGlmIChNRU1fUCAoZGVzdCkgJiYgIXJpc2N2X2xlZ2l0aW1hdGVfYWRkcmVzc19wIChtb2RlLCBYRVhQIChkZXN0LCAwKSwKLSsJCQkJCQkgICByZWxvYWRfY29tcGxldGVkKSkKLSsgICAgewotKyAgICAgIFhFWFAgKGRlc3QsIDApID0gcmlzY3ZfZm9yY2VfYWRkcmVzcyAoWEVYUCAoZGVzdCwgMCksIG1vZGUpOwotKyAgICB9Ci0rCi0rICBpZiAoTUVNX1AgKHNyYykgJiYgIXJpc2N2X2xlZ2l0aW1hdGVfYWRkcmVzc19wIChtb2RlLCBYRVhQIChzcmMsIDApLAotKwkJCQkJCSAgcmVsb2FkX2NvbXBsZXRlZCkpCi0rICAgIHsKLSsgICAgICBYRVhQIChzcmMsIDApID0gcmlzY3ZfZm9yY2VfYWRkcmVzcyAoWEVYUCAoc3JjLCAwKSwgbW9kZSk7Ci0rICAgIH0KLSsKLSAgIHJldHVybiBmYWxzZTsKLSB9Ci0gCi0tLSAKLTIuMTQuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW4uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuLmluYwppbmRleCA2ZDc3NjIwLi5iZGQ2ZjdlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW4uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbi5pbmMKQEAgLTMsNyArMyw3IEBACiBTVU1NQVJZID0gIkdOVSBjYyBhbmQgZ2NjIEMgY29tcGlsZXJzIChjcm9zcy1jYW5hZGlhbiBmb3IgJHtUQVJHRVRfQVJDSH0gdGFyZ2V0KSIKIFBOID0gImdjYy1jcm9zcy1jYW5hZGlhbi0ke1RSQU5TTEFURURfVEFSR0VUX0FSQ0h9IgogCi1ERVBFTkRTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYyB2aXJ0dWFsLyR7SE9TVF9QUkVGSVh9Z2NjLWNyb3Nzc2RrIHZpcnR1YWwvJHtIT1NUX1BSRUZJWH1iaW51dGlscy1jcm9zc3NkayB2aXJ0dWFsL25hdGl2ZXNkay0ke0hPU1RfUFJFRklYfWxpYmMtZm9yLWdjYyBuYXRpdmVzZGstZ2V0dGV4dCIKK0RFUEVORFMgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z2NjIHZpcnR1YWwvJHtIT1NUX1BSRUZJWH1nY2MtY3Jvc3NzZGsgdmlydHVhbC8ke0hPU1RfUFJFRklYfWJpbnV0aWxzLWNyb3Nzc2RrIHZpcnR1YWwvbmF0aXZlc2RrLSR7SE9TVF9QUkVGSVh9bGliYy1mb3ItZ2NjIG5hdGl2ZXNkay1nZXR0ZXh0IGZsZXgtbmF0aXZlIgogCiBHQ0NNVUxUSUxJQiA9ICItLWVuYWJsZS1tdWx0aWxpYiIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuXzYuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbl82LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmNTNjNWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuXzYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCi1yZXF1aXJlIGdjYy1jcm9zcy1jYW5hZGlhbi5pbmMKLQotCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1pbml0aWFsXzYuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1pbml0aWFsXzYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM3M2U1Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtaW5pdGlhbF82LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzXyR7UFZ9LmJiCi1yZXF1aXJlIGdjYy1jcm9zcy1pbml0aWFsLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzXzYuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc182LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0M2NjYTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzXzYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCi1yZXF1aXJlIGdjYy1jcm9zcy5pbmMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrLWluaXRpYWxfNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrLWluaXRpYWxfNi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDkwZTExLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nkay1pbml0aWFsXzYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtaW5pdGlhbF8ke1BWfS5iYgotcmVxdWlyZSBnY2MtY3Jvc3NzZGstaW5pdGlhbC5pbmMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrXzYuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nka182LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwYTZjNGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrXzYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NfJHtQVn0uYmIKLXJlcXVpcmUgZ2NjLWNyb3Nzc2RrLmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWUuaW5jCmluZGV4IGQzZDRiZDMuLjc2MjlmYTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZS5pbmMKQEAgLTM0LDYgKzM0LDE4IEBACiAjIGxpYm11ZGZsYXAKICMgbGliZ2ZvcnRyYW4gbmVlZHMgc2VwYXJhdGUgcmVjaXBlIGR1ZSB0byBsaWJxdWFkbWF0aCBkZXBlbmRlbmN5CiAKK1NMSUIgPSAiJHtUTVBESVJ9L3dvcmstc2hhcmVkL2djYy0ke1BWfS0ke1BSfS9nY2MtJHtQVn0iCitTTElCX05FVyA9ICIvdXNyL3NyYy9kZWJ1Zy8ke1BOfS8ke0VYVEVORFBFfSR7UFZ9LSR7UFJ9IgorCitERUJVR19QUkVGSVhfTUFQX2NsYXNzLXRhcmdldCA9ICIgXAorICAgLWZkZWJ1Zy1wcmVmaXgtbWFwPSR7V09SS0RJUn0vcmVjaXBlLXN5c3Jvb3Q9IFwKKyAgIC1mZGVidWctcHJlZml4LW1hcD0ke1dPUktESVJ9L3JlY2lwZS1zeXNyb290LW5hdGl2ZT0gXAorICAgLWZkZWJ1Zy1wcmVmaXgtbWFwPSR7U0xJQn09JHtTTElCX05FV30gXAorICAgLWZkZWJ1Zy1wcmVmaXgtbWFwPSR7U0xJQn0vaW5jbHVkZT0ke1NMSUJfTkVXfS9saWJzdGRjKystdjMvLi4vaW5jbHVkZSBcCisgICAtZmRlYnVnLXByZWZpeC1tYXA9JHtTTElCfS9saWJpYmVydHk9JHtTTElCX05FV30vbGlic3RkYysrLXYzLy4uL2xpYmliZXJ0eSBcCisgICAtZmRlYnVnLXByZWZpeC1tYXA9JHtCfT0ke1NMSUJfTkVXfSBcCisgICAiCisKIGRvX2NvbmZpZ3VyZSAoKSB7CiAJZXhwb3J0IENYWD0iJHtDWFh9IC1ub3N0ZGluYysrIC1ub3N0ZGxpYisrIgogCWZvciBkIGluIGxpYmdjYyAke1JVTlRJTUVUQVJHRVR9OyBkbwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWVfNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWVfNi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjMxZTc3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lXzYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCi1yZXF1aXJlIGdjYy1ydW50aW1lLmluYwotCi1GSUxFU19saWJnb21wLWRldiArPSAiXAotICAgICR7bGliZGlyfS9nY2MvJHtUQVJHRVRfU1lTfS8ke0JJTlZ9L2luY2x1ZGUvb3BlbmFjYy5oIFwKLSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnMuaW5jCmluZGV4IDMxODNiMjkuLjNiN2UwMDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVycy5pbmMKQEAgLTYxLDE1ICs2MSwxOSBAQAogUkRFUEVORFNfbGlibHNhbi1kZXYgKz0gIiR7UE59IgogUkRFUEVORFNfbGlidHNhbi1kZXYgKz0gIiR7UE59IgogUlJFQ09NTUVORFNfJHtQTn0gKz0gImxpYmFzYW4gbGlidWJzYW4iCi1SUkVDT01NRU5EU18ke1BOfV9hcHBlbmRfeDg2LTY0ID0gIiBsaWJsc2FuIGxpYnRzYW4iCiBSUkVDT01NRU5EU18ke1BOfV9hcHBlbmRfeDg2ID0gIiBsaWJsc2FuIgorUlJFQ09NTUVORFNfJHtQTn1fYXBwZW5kX3g4Ni02NCA9ICIgbGlibHNhbiBsaWJ0c2FuIgorUlJFQ09NTUVORFNfJHtQTn1fYXBwZW5kX3Bvd2VycGM2NCA9ICIgbGlibHNhbiBsaWJ0c2FuIgorUlJFQ09NTUVORFNfJHtQTn1fYXBwZW5kX2FhcmNoNjQgPSAiIGxpYmxzYW4gbGlidHNhbiIKIAogZG9fcGFja2FnZV93cml0ZV9pcGtbZGVwZW5kc10gKz0gInZpcnR1YWwvJHtNTFBSRUZJWH0ke1RBUkdFVF9QUkVGSVh9Y29tcGlsZXJsaWJzOmRvX3BhY2thZ2VkYXRhIgogZG9fcGFja2FnZV93cml0ZV9kZWJbZGVwZW5kc10gKz0gInZpcnR1YWwvJHtNTFBSRUZJWH0ke1RBUkdFVF9QUkVGSVh9Y29tcGlsZXJsaWJzOmRvX3BhY2thZ2VkYXRhIgogZG9fcGFja2FnZV93cml0ZV9ycG1bZGVwZW5kc10gKz0gInZpcnR1YWwvJHtNTFBSRUZJWH0ke1RBUkdFVF9QUkVGSVh9Y29tcGlsZXJsaWJzOmRvX3BhY2thZ2VkYXRhIgogCi0jIE1JUFMsIGFhcmNoNjQsIGFuZCBTUEFSQyBhcmUgYnJva2VuLgotQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjR8aS44Nnxwb3dlcnBjfGFybSkuKi1saW51eCcKKyMgT25seSB4ODYsIHBvd2VycGMsIHNwYXJjLCBzMzkwLCBhcm0sIGFuZCBhYXJjaDY0IGFyZSBzdXBwb3J0ZWQKK0NPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0fGkuODZ8cG93ZXJwY3xzcGFyY3xzMzkwfGFybXxhYXJjaDY0KS4qLWxpbnV4JworIyBtdXNsIGlzIGN1cnJlbnRseSBicm9rZW4gZW50aXJlbHkKK0NPTVBBVElCTEVfSE9TVF9saWJjLW11c2wgPSAnbnVsbCcKIAogRklMRVNfbGliYXNhbiArPSAiJHtsaWJkaXJ9L2xpYmFzYW4uc28uKiIKIEZJTEVTX2xpYmFzYW4tZGV2ICs9ICJcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc182LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc182LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMWY2NjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnNfNi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKLXJlcXVpcmUgZ2NjLXNhbml0aXplcnMuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc291cmNlXzYuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zb3VyY2VfNi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODkwZmEzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zb3VyY2VfNi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZS5pbmMKLQotRVhDTFVERV9GUk9NX1dPUkxEID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2NfNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjXzYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmM2MThkZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2NfNi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKLXJlcXVpcmUgZ2NjLXRhcmdldC5pbmMKLQotIyBCdWlsZGluZyB3aXRoIHRodW1iIGVuYWJsZWQgb24gYXJtdjR0IGZhaWxzIHdpdGgKLSMgfCBnY2MtNC44LjEtcjAvZ2NjLTQuOC4xL2djYy9jcC9kZWNsLmM6NzQzODooLnRleHQudW5saWtlbHkrMHgyZmEpOiByZWxvY2F0aW9uIHRydW5jYXRlZCB0byBmaXQ6IFJfQVJNX1RITV9DQUxMIGFnYWluc3Qgc3ltYm9sIGBmYW5jeV9hYm9ydChjaGFyIGNvbnN0KiwgaW50LCBjaGFyIGNvbnN0KiknIGRlZmluZWQgaW4gLmdsdWVfNyBzZWN0aW9uIGluIGxpbmtlciBzdHVicwotIyB8IGdjYy00LjguMS1yMC9nY2MtNC44LjEvZ2NjL2NwL2RlY2wuYzo3NDQyOigudGV4dC51bmxpa2VseSsweDMxOCk6IGFkZGl0aW9uYWwgcmVsb2NhdGlvbiBvdmVyZmxvd3Mgb21pdHRlZCBmcm9tIHRoZSBvdXRwdXQKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1pbml0aWFsXzYuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1pbml0aWFsXzYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTlmMjUzZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtaW5pdGlhbF82LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLSR7UFZ9LmluYwotcmVxdWlyZSBsaWJnY2MtaW5pdGlhbC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MuaW5jCmluZGV4IDE1MDBmYjUuLjVmMWRmZjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLmluYwpAQCAtMjgsNyArMjgsNyBAQAogCiBGSUxFU18ke1BOfS1kZXYgPSAiXAogICAgICR7YmFzZV9saWJkaXJ9L2xpYmdjYyouc28gXAotICAgICR7QGJhc2VfY29uZGl0aW9uYWwoJ0JBU0VUQVJHRVRfU1lTJywgJyR7VEFSR0VUX1NZU30nLCAnJywgJyR7bGliZGlyfS8ke0JBU0VUQVJHRVRfU1lTfScsIGQpfSBcCisgICAgJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ0JBU0VUQVJHRVRfU1lTJywgJyR7VEFSR0VUX1NZU30nLCAnJywgJyR7bGliZGlyfS8ke0JBU0VUQVJHRVRfU1lTfScsIGQpfSBcCiAgICAgJHtsaWJkaXJ9LyR7VEFSR0VUX1NZU30vJHtCSU5WfSogXAogICAgICR7bGliZGlyfS8ke1RBUkdFVF9BUkNIfSR7VEFSR0VUX1ZFTkRPUn0qIFwKICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjY182LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2NfNi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTE1MmYyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjY182LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLSR7UFZ9LmluYwotcmVxdWlyZSBsaWJnY2MuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbi5pbmMKaW5kZXggNWY1ZDRhZi4uMDUyMzc2NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW4uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuLmluYwpAQCAtNiwyMiArNiwyOCBAQAogIgogCiBkb19jb25maWd1cmUgKCkgewotCXJtIC1yZiAke0J9LyR7VEFSR0VUX1NZU30vbGliZ2ZvcnRyYW4vCi0JbWtkaXIgLXAgJHtCfS8ke1RBUkdFVF9TWVN9L2xpYmdmb3J0cmFuLwotCWNkICR7Qn0vJHtUQVJHRVRfU1lTfS9saWJnZm9ydHJhbi8KLQljaG1vZCBhK3ggJHtTfS9saWJnZm9ydHJhbi9jb25maWd1cmUKLQlyZWxwYXRoPSR7QG9zLnBhdGgucmVscGF0aCgiJHtTfS9saWJnZm9ydHJhbiIsICIke0J9LyR7VEFSR0VUX1NZU30vbGliZ2ZvcnRyYW4iKX0KLQkkcmVscGF0aC9jb25maWd1cmUgJHtDT05GSUdVUkVPUFRTfSAke0VYVFJBX09FQ09ORn0KLQkjIEVhc2llc3Qgd2F5IHRvIHN0b3AgYmFkIFJQQVRIcyBnZXR0aW5nIGludG8gdGhlIGxpYnJhcnkgc2luY2Ugd2UgaGF2ZSBhCi0JIyBicm9rZW4gbGlidG9vbCBoZXJlCi0Jc2VkIC1pIC1lICdzL2hhcmRjb2RlX2ludG9fbGlicz15ZXMvaGFyZGNvZGVfaW50b19saWJzPW5vLycgJHtCfS8ke1RBUkdFVF9TWVN9L2xpYmdmb3J0cmFuL2xpYnRvb2wKKwlmb3IgdGFyZ2V0IGluIGxpYmJhY2t0cmFjZSBsaWJnZm9ydHJhbgorCWRvCisJCXJtIC1yZiAke0J9LyR7VEFSR0VUX1NZU30vJHRhcmdldC8KKwkJbWtkaXIgLXAgJHtCfS8ke1RBUkdFVF9TWVN9LyR0YXJnZXQvCisJCWNkICR7Qn0vJHtUQVJHRVRfU1lTfS8kdGFyZ2V0LworCQljaG1vZCBhK3ggJHtTfS8kdGFyZ2V0L2NvbmZpZ3VyZQorCQlyZWxwYXRoPSR7QG9zLnBhdGgucmVscGF0aCgiJHtTfSIsICIke0J9LyR7VEFSR0VUX1NZU30iKX0KKwkJLi4vJHJlbHBhdGgvJHRhcmdldC9jb25maWd1cmUgJHtDT05GSUdVUkVPUFRTfSAke0VYVFJBX09FQ09ORn0KKwkJIyBFYXNpZXN0IHdheSB0byBzdG9wIGJhZCBSUEFUSHMgZ2V0dGluZyBpbnRvIHRoZSBsaWJyYXJ5IHNpbmNlIHdlIGhhdmUgYQorCQkjIGJyb2tlbiBsaWJ0b29sIGhlcmUKKwkJc2VkIC1pIC1lICdzL2hhcmRjb2RlX2ludG9fbGlicz15ZXMvaGFyZGNvZGVfaW50b19saWJzPW5vLycgJHtCfS8ke1RBUkdFVF9TWVN9LyR0YXJnZXQvbGlidG9vbAorCWRvbmUKIH0KIEVYVFJBQ09ORkZVTkNTICs9ICJleHRyYWN0X3N0YXNoZWRfYnVpbGRkaXIiCiBkb19jb25maWd1cmVbZGVwZW5kc10gKz0gIiR7Q09NUElMRVJERVB9IgogCiBkb19jb21waWxlICgpIHsKLQljZCAke0J9LyR7VEFSR0VUX1NZU30vbGliZ2ZvcnRyYW4vCi0Jb2VfcnVubWFrZSBNVUxUSUJVSUxEVE9QPSR7Qn0vJHtUQVJHRVRfU1lTfS9saWJnZm9ydHJhbi8KKwlmb3IgdGFyZ2V0IGluIGxpYmJhY2t0cmFjZSBsaWJnZm9ydHJhbgorCWRvCisJCWNkICR7Qn0vJHtUQVJHRVRfU1lTfS8kdGFyZ2V0LworCQlvZV9ydW5tYWtlIE1VTFRJQlVJTERUT1A9JHtCfS8ke1RBUkdFVF9TWVN9LyR0YXJnZXQvCisJZG9uZQogfQogCiBkb19pbnN0YWxsICgpIHsKQEAgLTY3LDUgKzczLDUgQEAKIHB5dGhvbiBfX2Fub255bW91cyAoKSB7CiAgICAgZiA9IGQuZ2V0VmFyKCJGT1JUUkFOIikKICAgICBpZiAiZm9ydHJhbiIgbm90IGluIGY6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJsaWJnZm9ydHJhbiBuZWVkcyBmb3J0cmFuIHN1cHBvcnQgdG8gYmUgZW5hYmxlZCBpbiB0aGUgY29tcGlsZXIiKQorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJsaWJnZm9ydHJhbiBuZWVkcyBmb3J0cmFuIHN1cHBvcnQgdG8gYmUgZW5hYmxlZCBpbiB0aGUgY29tcGlsZXIiKQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW5fNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW5fNi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWRkOGI0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuXzYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCi1yZXF1aXJlIGxpYmdmb3J0cmFuLmluYwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItOC4wLjEuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLTguMC4xLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTUyOTliCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLTguMC4xLmluYwpAQCAtMCwwICsxLDI0IEBACitMSUNFTlNFID0gIkdQTHYyICYgR1BMdjMgJiBMR1BMdjIgJiBMR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCisJCSAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKwkJICAgIGZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKKwkJICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9OWY2MDRkOGE0ZjhlNzRmNGY1MTQwODQ1YTIxYjY2NzQiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbnUub3JnL2dudS9nZGIvZ2RiLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLW1vZGVfdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLW1ha2UtbWFuLWluc3RhbGwtcmVsYXRpdmUtdG8tREVTVERJUi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLW1pcHMtbGludXgtbmF0LURlZmluZS1fQUJJTzMyLWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtcHBjLXB0cmFjZS1EZWZpbmUtcHRfcmVncy11YXBpX3B0X3JlZ3Mtb24tR0xJQkMtc3lzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LUFkZC1zdXBwb3J0LWZvci1SZW5lc2FzLVNILXNoNC1hcmNoaXRlY3R1cmUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1Vc2UtZXhvcnRlZC1kZWZpbml0aW9ucy1vZi1TSUdSVE1JTi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA5LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMC1yZXNvbHZlLXJlc3RyaWN0LWtleXdvcmQtY29uZmxpY3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcGFja2FnZV9kZXZlbF9nZGJfcGF0Y2hlc18xMjAtc2lncHJvY21hc2staW52YWxpZC1jYWxsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTItVW5icmVhay1HREJzZXJ2ZXItYnVpbGQtZm9yLXgzMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9nZGItRml4LWlhNjQtZGVmaW5pbmctVFJBUF9IV0JLUFQtYmVmb3JlLWluY2x1ZGluZy1nLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0OGNhYzUyN2U2ZjMwMThiODY1ZWNlMDIxZTk3MjNhYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzZGJkNWY5M2UzNmJhMjgxNWFkMGVmYWIwMzBkY2QwYzdiMjExZDdiMzUzYTQwYTUzZjRjMDJkN2Q1NjI5NWUzIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItOC4wLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi04LjAuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjdhYmQ5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi04LjAuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYzICYgTEdQTHYyICYgTEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAotCQkgICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0JCSAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCi0JCSAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTlmNjA0ZDhhNGY4ZTc0ZjRmNTE0MDg0NWEyMWI2Njc0IgotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAuZ251Lm9yZy9nbnUvZ2RiL2dkYi0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci1tb2RlX3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1taXBzLWxpbnV4LW5hdC1EZWZpbmUtX0FCSU8zMi1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LXBwYy1wdHJhY2UtRGVmaW5lLXB0X3JlZ3MtdWFwaV9wdF9yZWdzLW9uLUdMSUJDLXN5c3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtRG9udC1kaXNhYmxlLWxpYnJlYWRsaW5lLmEtd2hlbi11c2luZy1kaXNhYmxlLXN0YXRpYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LXVzZS1hc20tc2dpZGVmcy5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDgtVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOS1DaGFuZ2Utb3JkZXItb2YtQ0ZMQUdTLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtcmVzb2x2ZS1yZXN0cmljdC1rZXl3b3JkLWNvbmZsaWN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BhY2thZ2VfZGV2ZWxfZ2RiX3BhdGNoZXNfMTIwLXNpZ3Byb2NtYXNrLWludmFsaWQtY2FsbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9nZGItRml4LWlhNjQtZGVmaW5pbmctVFJBUF9IV0JLUFQtYmVmb3JlLWluY2x1ZGluZy1nLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjM2QzNWNkOTQ5MDg0YmU1M2I5MmNjMWUwMzQ4NWY4OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNmEyNGZmZTQ5MTdlNjcwMTRlZjkyNzNlYjhiNTQ3Y2I5NmExM2U1Y2E3NDg5NWIwNmQ2ODNiMzkxZjNmNGVlIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY29tbW9uLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jb21tb24uaW5jCmluZGV4IDkxNjRhMmIuLjAzOTU3N2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jb21tb24uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jb21tb24uaW5jCkBAIC01LDYgKzUsNyBAQAogCiBMVFROR1VTVCA9ICJsdHRuZy11c3QiCiBMVFROR1VTVF9hYXJjaDY0ID0gIiIKK0xUVE5HVVNUX3Jpc2N2NjQgPSAiIgogTFRUTkdVU1RfbWlwc2FyY2ggPSAiIgogTFRUTkdVU1Rfc2g0ID0gIiIKIExUVE5HVVNUX2xpYmMtbXVzbCA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW4uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzLWNhbmFkaWFuLmluYwppbmRleCAzZmYxOTg5Li40ZmM2NzQ3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW4uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy1jYW5hZGlhbi5pbmMKQEAgLTEzLDkgKzEzLDkgQEAKICMgT3ZlcnJpZGVzIFBBQ0tBR0VDT05GSUcgdmFyaWFibGVzIGluIGdkYi1jb21tb24uaW5jCiBQQUNLQUdFQ09ORklHID8/PSAicHl0aG9uIHJlYWRsaW5lIgogUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0td2l0aC1weXRob249JHtXT1JLRElSfS9weXRob24sLS13aXRob3V0LXB5dGhvbixuYXRpdmVzZGstcHl0aG9uMywgXAotICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZXNkay1weXRob24zLWNvcmUgbmF0aXZlc2RrLXB5dGhvbjMtbGFuZyBuYXRpdmVzZGstcHl0aG9uMy1yZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlc2RrLXB5dGhvbjMtY29yZSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlc2RrLXB5dGhvbjMtY29kZWNzIG5hdGl2ZXNkay1weXRob24zLW5ldGNsaWVudCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlc2RrLXB5dGhvbjMtaW1wb3J0bGliIgorICAgICAgICAgICAgICAgICAgICAgICAgICIKIFBBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aC1zeXN0ZW0tcmVhZGxpbmUsLS13aXRob3V0LXN5c3RlbS1yZWFkbGluZSxuYXRpdmVzZGstcmVhZGxpbmUiCiAKIFNTVEFURV9EVVBXSElURUxJU1QgKz0gIiR7U1RBR0lOR19EQVRBRElSfS9nZGIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW5fOC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzLWNhbmFkaWFuXzguMC4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW5fOC4wLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW5fOC4wLjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zc184LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3NfOC4wLjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zc184LjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zc184LjAuMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTItVW5icmVhay1HREJzZXJ2ZXItYnVpbGQtZm9yLXgzMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEyLVVuYnJlYWstR0RCc2VydmVyLWJ1aWxkLWZvci14MzIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThhM2NlMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEyLVVuYnJlYWstR0RCc2VydmVyLWJ1aWxkLWZvci14MzIucGF0Y2gKQEAgLTAsMCArMSwxMDEgQEAKK0Zyb20gM2UxZTQwMTA1M2VhNWYwMmE5ZTljNjVhYmRkZDMxYTAzYmFhMWJkMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFlhbyBRaSA8eWFvLnFpQGxpbmFyby5vcmc+CitEYXRlOiBGcmksIDI5IERlYyAyMDE3IDEyOjU3OjI1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIFVuYnJlYWsgR0RCc2VydmVyIGJ1aWxkIGZvciB4MzIKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworV2hlbiBJIHZlcmlmeSBteSB0YXJnZXQgZGVzY3JpcHRpb24gY2hhbmdlcywgSSBidWlsZCBHREIgYW5kIEdEQnNlcnZlciBmb3IKK3gzMiwgYnV0IGl0IGZhaWxlZC4KKworLy4uLy4uL2JpbnV0aWxzLWdkYi9nZGIvZ2Ric2VydmVyL2xpbnV4LWFtZDY0LWlwYS5jCisuLi8uLi8uLi9iaW51dGlscy1nZGIvZ2RiL2dkYnNlcnZlci9saW51eC1hbWQ2NC1pcGEuYzogSW4gZnVuY3Rpb24g4oCYY29uc3QgdGFyZ2V0X2Rlc2MqIGdldF9pcGFfdGRlc2MoaW50KeKAmToKKy4uLy4uLy4uL2JpbnV0aWxzLWdkYi9nZGIvZ2Ric2VydmVyL2xpbnV4LWFtZDY0LWlwYS5jOjE4NDoxMDogZXJyb3I6IOKAmFg4Nl9UREVTQ19BVlg1MTLigJkgd2FzIG5vdCBkZWNsYXJlZCBpbiB0aGlzIHNjb3BlCisgICAgIGNhc2UgWDg2X1RERVNDX0FWWDUxMjoKKyAgICAgICAgICBeCisuLi8uLi8uLi9iaW51dGlscy1nZGIvZ2RiL2dkYnNlcnZlci9saW51eC1hbWQ2NC1pcGEuYzoxODU6MTQ6IGVycm9yOiDigJh0ZGVzY194MzJfYXZ4NTEyX2xpbnV44oCZIHdhcyBub3QgZGVjbGFyZWQgaW4gdGhpcyBzY29wZQorICAgICAgIHJldHVybiB0ZGVzY194MzJfYXZ4NTEyX2xpbnV4OworICAgICAgICAgICAgICBeCisuLi8uLi8uLi9iaW51dGlscy1nZGIvZ2RiL2dkYnNlcnZlci9saW51eC1hbWQ2NC1pcGEuYzogSW4gZnVuY3Rpb24g4oCYdm9pZCBpbml0aWFsaXplX2xvd190cmFjZXBvaW50KCnigJk6CisuLi8uLi8uLi9iaW51dGlscy1nZGIvZ2RiL2dkYnNlcnZlci9saW51eC1hbWQ2NC1pcGEuYzoyODI6MzY6IGVycm9yOiDigJhpbml0X3JlZ2lzdGVyc194MzJfYXZ4NTEyX2xpbnV44oCZIHdhcyBub3QgZGVjbGFyZWQgaW4gdGhpcyBzY29wZQorICAgaW5pdF9yZWdpc3RlcnNfeDMyX2F2eDUxMl9saW51eCAoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKworaXBhX3gzMl9saW51eF9yZWdvYmogdXNlIHRvIGJlIHRoZXJlLCBidXQgcmVtb3ZlZCBieQorMjIwNDk0MjVjZTQwMzI0MTM5YmU4MmQ5YTZlYzUxOGM0NmI2NTgxNSBieSBtaXN0YWtlLgorCitnZGIvZ2Ric2VydmVyOgorCisyMDE3LTA4LTA0ICBZYW8gUWkgIDx5YW8ucWlAbGluYXJvLm9yZz4KKworICAgICAgICAqIGNvbmZpZ3VyZS5zcnYgKGlwYV94MzJfbGludXhfcmVnb2JqKTogTmV3LgorICAgICAgICAqIGxpbnV4LWFtZDY0LWlwYS5jIChnZXRfaXBhX3RkZXNjKTogVXNlIFg4Nl9UREVTQ19BVlhfQVZYNTEyCisgICAgICAgIGluc3RlYWQgb2YgWDg2X1RERVNDX0FWWDUxMi4KKyAgICAgICAgKGluaXRpYWxpemVfbG93X3RyYWNlcG9pbnQpOiBDYWxsCisgICAgICAgIGluaXRfcmVnaXN0ZXJzX3gzMl9hdnhfYXZ4NTEyX2xpbnV4LgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC9naXR3ZWIuY2dpP3A9YmludXRpbHMtZ2RiLmdpdDthPWNvbW1pdGRpZmY7aD1mMDJmZDc3NDVkMDAzZDY1ZmQzYjk4MTYxOGUwN2I4NzRiNzIxZDc5XQorCitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorLS0tCisgQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICB8IDggKysrKysrKysKKyBnZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZS5zcnYgICAgIHwgMSArCisgZ2RiL2dkYnNlcnZlci9saW51eC1hbWQ2NC1pcGEuYyB8IDYgKysrLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCitpbmRleCA0YWMyZDYzLi5iNWI4MjI4IDEwMDY0NAorLS0tIGEvQ2hhbmdlTG9nCisrKysgYi9DaGFuZ2VMb2cKK0BAIC0xLDMgKzEsMTEgQEAKKysgMjAxNy0wOC0wNCAgWWFvIFFpICA8eWFvLnFpQGxpbmFyby5vcmc+CisrCisrCSogY29uZmlndXJlLnNydiAoaXBhX3gzMl9saW51eF9yZWdvYmopOiBOZXcuCisrCSogbGludXgtYW1kNjQtaXBhLmMgKGdldF9pcGFfdGRlc2MpOiBVc2UgWDg2X1RERVNDX0FWWF9BVlg1MTIKKysJaW5zdGVhZCBvZiBYODZfVERFU0NfQVZYNTEyLgorKwkoaW5pdGlhbGl6ZV9sb3dfdHJhY2Vwb2ludCk6IENhbGwKKysJaW5pdF9yZWdpc3RlcnNfeDMyX2F2eF9hdng1MTJfbGludXguCisrCisgMjAxNy0wNC0xMyAgQW5kcmV3IEplbm5lciAgPGFuZHJld0Bjb2Rlc291cmNlcnkuY29tPgorIAorIAkqIGNvbmZpZy5zdWI6IFN5bmMgd2l0aCBtYXN0ZXIgdmVyc2lvbiBpbiBjb25maWcgcHJvamVjdC4KK2RpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZS5zcnYgYi9nZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZS5zcnYKK2luZGV4IGQwMGQ5ZTIuLjU2OTUxYzggMTAwNjQ0CistLS0gYS9nZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZS5zcnYKKysrKyBiL2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLnNydgorQEAgLTMxLDYgKzMxLDcgQEAgc3J2X2FtZDY0X2xpbnV4X3JlZ29iaj0iYW1kNjQtbGludXgubyBhbWQ2NC1hdngtbGludXgubyBhbWQ2NC1hdngtYXZ4NTEyLWxpbnV4Lm8KKyAKKyBpcGFfaTM4Nl9saW51eF9yZWdvYmo9ImkzODYtbGludXgtaXBhLm8gaTM4Ni1hdngtbGludXgtaXBhLm8gIGkzODYtYXZ4LW1weC1saW51eC1pcGEubyBpMzg2LWF2eC1hdng1MTItbGludXgtaXBhLm8gaTM4Ni1hdngtbXB4LWF2eDUxMi1wa3UtbGludXgtaXBhLm8gaTM4Ni1tcHgtbGludXgtaXBhLm8gaTM4Ni1tbXgtbGludXgtaXBhLm8iCisgaXBhX2FtZDY0X2xpbnV4X3JlZ29iaj0iYW1kNjQtbGludXgtaXBhLm8gYW1kNjQtYXZ4LWxpbnV4LWlwYS5vIGFtZDY0LWF2eC1tcHgtbGludXgtaXBhLm8gYW1kNjQtYXZ4LWF2eDUxMi1saW51eC1pcGEubyBhbWQ2NC1hdngtbXB4LWF2eDUxMi1wa3UtbGludXgtaXBhLm8gYW1kNjQtbXB4LWxpbnV4LWlwYS5vIgorK2lwYV94MzJfbGludXhfcmVnb2JqPSJ4MzItbGludXgtaXBhLm8geDMyLWF2eC1saW51eC1pcGEubyB4MzItYXZ4LWF2eDUxMi1saW51eC1pcGEubyIKKyBpcGFfcHBjX2xpbnV4X3JlZ29iaj0icG93ZXJwYy0zMmwtaXBhLm8gcG93ZXJwYy1hbHRpdmVjMzJsLWlwYS5vIHBvd2VycGMtY2VsbDMybC1pcGEubyBwb3dlcnBjLXZzeDMybC1pcGEubyBwb3dlcnBjLWlzYTIwNS0zMmwtaXBhLm8gcG93ZXJwYy1pc2EyMDUtYWx0aXZlYzMybC1pcGEubyBwb3dlcnBjLWlzYTIwNS12c3gzMmwtaXBhLm8gcG93ZXJwYy1lNTAwbC1pcGEubyBwb3dlcnBjLTY0bC1pcGEubyBwb3dlcnBjLWFsdGl2ZWM2NGwtaXBhLm8gcG93ZXJwYy1jZWxsNjRsLWlwYS5vIHBvd2VycGMtdnN4NjRsLWlwYS5vIHBvd2VycGMtaXNhMjA1LTY0bC1pcGEubyBwb3dlcnBjLWlzYTIwNS1hbHRpdmVjNjRsLWlwYS5vIHBvd2VycGMtaXNhMjA1LXZzeDY0bC1pcGEubyIKKyAKKyBzcnZfaTM4Nl8zMmJpdF94bWxmaWxlcz0iaTM4Ni8zMmJpdC1jb3JlLnhtbCBpMzg2LzMyYml0LXNzZS54bWwgaTM4Ni8zMmJpdC1hdngueG1sIGkzODYvMzJiaXQtYXZ4NTEyLnhtbCBpMzg2LzMyYml0LW1weC54bWwgaTM4Ni8zMmJpdC1wa2V5cy54bWwiCitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci9saW51eC1hbWQ2NC1pcGEuYyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgtYW1kNjQtaXBhLmMKK2luZGV4IDY3ZjM2YzIuLjY4MzMzOWIgMTAwNjQ0CistLS0gYS9nZGIvZ2Ric2VydmVyL2xpbnV4LWFtZDY0LWlwYS5jCisrKysgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LWFtZDY0LWlwYS5jCitAQCAtMTgxLDggKzE4MSw4IEBAIGdldF9pcGFfdGRlc2MgKGludCBpZHgpCisgICAgICAgcmV0dXJuIHRkZXNjX3gzMl9saW51eDsKKyAgICAgY2FzZSBYODZfVERFU0NfQVZYOgorICAgICAgIHJldHVybiB0ZGVzY194MzJfYXZ4X2xpbnV4OworLSAgICBjYXNlIFg4Nl9UREVTQ19BVlg1MTI6CistICAgICAgcmV0dXJuIHRkZXNjX3gzMl9hdng1MTJfbGludXg7CisrICAgIGNhc2UgWDg2X1RERVNDX0FWWF9BVlg1MTI6CisrICAgICAgcmV0dXJuIHRkZXNjX3gzMl9hdnhfYXZ4NTEyX2xpbnV4OworICAgICBkZWZhdWx0OgorICAgICAgIGJyZWFrOworICAgICB9CitAQCAtMjc5LDcgKzI3OSw3IEBAIGluaXRpYWxpemVfbG93X3RyYWNlcG9pbnQgKHZvaWQpCisgI2lmIGRlZmluZWQgX19JTFAzMl9fCisgICBpbml0X3JlZ2lzdGVyc194MzJfbGludXggKCk7CisgICBpbml0X3JlZ2lzdGVyc194MzJfYXZ4X2xpbnV4ICgpOworLSAgaW5pdF9yZWdpc3RlcnNfeDMyX2F2eDUxMl9saW51eCAoKTsKKysgIGluaXRfcmVnaXN0ZXJzX3gzMl9hdnhfYXZ4NTEyX2xpbnV4ICgpOworICNlbHNlCisgICBpbml0X3JlZ2lzdGVyc19hbWQ2NF9saW51eCAoKTsKKyAgIGluaXRfcmVnaXN0ZXJzX2FtZDY0X2F2eF9saW51eCAoKTsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiXzguMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYl84LjAuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiXzguMC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiXzguMC4xLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0LmluYwppbmRleCA5YjRjMTI4Li5kZDlkNzkyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdC5pbmMKQEAgLTExNiw2ICsxMTYsNyBAQAogICAgICR7ZGF0YWRpcn0vZ2l0d2ViL2dpdHdlYi5jZ2kgXAogICAgICR7ZGF0YWRpcn0vZ2l0LWNvcmUvdGVtcGxhdGVzL2hvb2tzL3ByZXBhcmUtY29tbWl0LW1zZy5zYW1wbGUgXAogICAgICR7ZGF0YWRpcn0vZ2l0LWNvcmUvdGVtcGxhdGVzL2hvb2tzL3ByZS1yZWJhc2Uuc2FtcGxlIFwKKyAgICAke2RhdGFkaXJ9L2dpdC1jb3JlL3RlbXBsYXRlcy9ob29rcy9mc21vbml0b3Itd2F0Y2htYW4uc2FtcGxlIFwKICIKIAogIyBHaXQgdG9vbHMgcmVxdWlyaW5nIHBlcmwKQEAgLTEyNSw2ICsxMjYsNyBAQAogICAgICR7bGliZGlyfS9wZXJsIFwKICAgICAke2RhdGFkaXJ9L3BlcmwgXAogIgorCiBSREVQRU5EU18ke1BOfS1wZXJsdG9vbHMgPSAiJHtQTn0gcGVybCBwZXJsLW1vZHVsZS1maWxlLXBhdGggZmluZHV0aWxzIgogCiAjIGdpdC10ayBwYWNrYWdlIHdpdGggZ2l0ayBhbmQgZ2l0LWd1aQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMTMuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjEzLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzZTM4ODcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMTMuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLXJlcXVpcmUgZ2l0LmluYwotCi1FWFRSQV9PRUNPTkYgKz0gImFjX2N2X3NucHJpbnRmX3JldHVybnNfYm9ndXM9bm8gXAotICAgICAgICAgICAgICAgICBhY19jdl9mcmVhZF9yZWFkc19kaXJlY3Rvcmllcz0ke2FjX2N2X2ZyZWFkX3JlYWRzX2RpcmVjdG9yaWVzPXllc30gXAotICAgICAgICAgICAgICAgICAiCi1FWFRSQV9PRU1BS0UgKz0gIk5PX0dFVFRFWFQ9MSIKLQotU1JDX1VSSVt0YXJiYWxsLm1kNXN1bV0gPSAiZDJkYzU1MGY2NjkzYmE3ZTViMTYyMTJiMjcxNGY1OWYiCi1TUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICIxNDk3MDAxNzcyZjYzMGQ0OTgwOWU5ODE2NzJlZGZlM2UzY2UxYTFkMThlOTA1Y2Q1MzljNGQyZjRkYmNkNzVhIgotU1JDX1VSSVttYW5wYWdlcy5tZDVzdW1dID0gIjMwMzdkMTFhNGY0Y2RkMTk0MzU4NzFjMjY3Y2E0OGI0IgotU1JDX1VSSVttYW5wYWdlcy5zaGEyNTZzdW1dID0gImY5YjMwMmVlYjA4Y2UwODkzNGU3YWZiNDIyODBjZTkyOTQ0MTFmYmY1ZjdiNmFjM2ZjYzIzNmU4MDMxZjEwYzUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXRfMi4xNi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMTYuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGM0ZWJhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMTYuMS5iYgpAQCAtMCwwICsxLDExIEBACityZXF1aXJlIGdpdC5pbmMKKworRVhUUkFfT0VDT05GICs9ICJhY19jdl9zbnByaW50Zl9yZXR1cm5zX2JvZ3VzPW5vIFwKKyAgICAgICAgICAgICAgICAgYWNfY3ZfZnJlYWRfcmVhZHNfZGlyZWN0b3JpZXM9JHthY19jdl9mcmVhZF9yZWFkc19kaXJlY3Rvcmllcz15ZXN9IFwKKyAgICAgICAgICAgICAgICAgIgorRVhUUkFfT0VNQUtFICs9ICJOT19HRVRURVhUPTEiCisKK1NSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gIjM3NDY3ZGE4ZTc5ZTcyZjI4NTk4ZDY2N2YyMTlmNzVlIgorU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiNTZjZmE0OGFmMmIyODliYmExNzJjYTBhNDdjMjlmMDA4M2Y1ODQ2Y2Y0NzU5OTc4YjcwOTg4ZTRmMDdmYzlmZCIKK1NSQ19VUklbbWFucGFnZXMubWQ1c3VtXSA9ICI1NTg3NDA3ZjNjMjg0NDZhZjEyZmRlM2YzMTMxYmEzNCIKK1NSQ19VUklbbWFucGFnZXMuc2hhMjU2c3VtXSA9ICJkNDk5ZTgyNWY0MjlkNzY4NjJiZTQxNWY1NzljMjBjYzI2YjA0NjU3M2EzYTM5MjM3YWNhZjk2ODJjYjcxYmU3IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbGlkZS9nbGlkZV8wLjEzLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dsaWRlL2dsaWRlXzAuMTMuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTViMTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbGlkZS9nbGlkZV8wLjEzLjEuYmIKQEAgLTAsMCArMSwxNSBAQAorU1VNTUFSWSA9ICJWZW5kb3IgUGFja2FnZSBNYW5hZ2VtZW50IGZvciBHb2xhbmciCitIT01FUEFHRSA9ICJodHRwczovL2dsaWRlLnNoIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvJHtHT19JTVBPUlR9L0xJQ0VOU0U7bWQ1PTU0OTA1Y2Y4OTRmOGNjNDE2YTkyZjRmYzM1MGMzNWIyIgorCitHT19JTVBPUlQgPSAiZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZSIKK1NSQ19VUkkgPSAiZ2l0Oi8vJHtHT19JTVBPUlR9IgorU1JDUkVWID0gIjY3NzkwYjNkYmVkZTcyY2ZkYzU0YWE1M2JlNDcwNjMyMmM5NDk5ZTAiCisKK2luaGVyaXQgZ28KKworUkRFUEVORFNfJHtQTn0tZGV2ICs9ICJiYXNoIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImJhc2giCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnX2dpdC5iYgppbmRleCA0ZmRlZDYwLi44ZGU4MTM4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbnUtY29uZmlnL2dudS1jb25maWdfZ2l0LmJiCkBAIC0xNCw3ICsxNCw3IEBACiBTUkNfVVJJID0gImdpdDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NvbmZpZy5naXQgXAogICAgICAgICAgICBmaWxlOi8vZ251LWNvbmZpZ2l6ZS5pbiIKIFMgPSAiJHtXT1JLRElSfS9naXQiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogQ0xFQU5CUk9LRU4gPSAiMSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ExMzViZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC5pbmMKQEAgLTAsMCArMSwyNCBAQAorcmVxdWlyZSBnby1jb21tb24uaW5jCisKK0dPX0JBU0VWRVJTSU9OID0gIjEuMTAiCitHT19NSU5PUiA9ICIuMiIKK1BWIC49ICIke0dPX01JTk9SfSIKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke0ZJTEVfRElSTkFNRX0vZ28tJHtHT19CQVNFVkVSU0lPTn06IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01ZDQ5NTBlY2I3YjI2ZDJjNWU0ZTdiNGUwZGQ3NDcwNyIKKworU1JDX1VSSSArPSAiXAorICAgIGZpbGU6Ly8wMDAxLWFsbG93LUNDLWFuZC1DWFgtdG8taGF2ZS1tdWx0aXBsZS13b3Jkcy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNS1tYWtlLmJhc2gtb3ZlcnJpZGUtQ0Mtd2hlbi1idWlsZGluZy1kaXN0LWFuZC1nb19ib290LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNi1jbWQtZGlzdC1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDgtY21kLWludGVybmFsLW9iai1hcm02NC1maXgtYnJhbmNoLXRvby1mYXItd2l0aC1UQlotbC5wYXRjaCBcCisiCisKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovLzAwMDktbGQtcmVwbGFjZS1nbGliYy1keW5hbWljLWxpbmtlci13aXRoLW11c2wucGF0Y2giCisKK1NSQ19VUklbbWFpbi5tZDVzdW1dID0gImM2M2IzNTA3NWJlZDY5M2JiZmM4NGQ0YTYyNjI5NDhhIgorU1JDX1VSSVttYWluLnNoYTI1NnN1bV0gPSAiNjI2NDYwOWM2YjljZDhlZDhlMDJjYTg0NjA1ZDcyN2NlMTg5OGQ3NGVmYTc5ODQxNjYwYjJlM2U5ODVhOThiZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDAxLWFsbG93LUNDLWFuZC1DWFgtdG8taGF2ZS1tdWx0aXBsZS13b3Jkcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDAxLWFsbG93LUNDLWFuZC1DWFgtdG8taGF2ZS1tdWx0aXBsZS13b3Jkcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmIzM2IwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDEtYWxsb3ctQ0MtYW5kLUNYWC10by1oYXZlLW11bHRpcGxlLXdvcmRzLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gN2E3ZGU0NjEyOWZhNjg1OWZiNjMxMTA5NmViOWY1NGM1M2M3ZmUyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CitEYXRlOiBNb24sIDE5IEZlYiAyMDE4IDA4OjQ5OjMzIC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMS85XSBhbGxvdyBDQyBhbmQgQ1hYIHRvIGhhdmUgbXVsdGlwbGUgd29yZHMKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KKy0tLQorIHNyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KK2luZGV4IDYwM2Y3YjUwNjAuLmY4OTExMjNmOWMgMTAwNjQ0CistLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbworQEAgLTgyLDExICs4MiwxMSBAQCBmdW5jIE1rRW52KCkgW11jZmcuRW52VmFyIHsKKyAKKyAJY2MgOj0gY2ZnLkRlZmF1bHRDQyhjZmcuR29vcywgY2ZnLkdvYXJjaCkKKyAJaWYgZW52IDo9IHN0cmluZ3MuRmllbGRzKG9zLkdldGVudigiQ0MiKSk7IGxlbihlbnYpID4gMCB7CistCQljYyA9IGVudlswXQorKwkJY2MgPSBzdHJpbmdzLkpvaW4oZW52LCAiICIpCisgCX0KKyAJY3h4IDo9IGNmZy5EZWZhdWx0Q1hYKGNmZy5Hb29zLCBjZmcuR29hcmNoKQorIAlpZiBlbnYgOj0gc3RyaW5ncy5GaWVsZHMob3MuR2V0ZW52KCJDWFgiKSk7IGxlbihlbnYpID4gMCB7CistCQljeHggPSBlbnZbMF0KKysJCWN4eCA9IHN0cmluZ3MuSm9pbihlbnYsICIgIikKKyAJfQorIAllbnYgPSBhcHBlbmQoZW52LCBjZmcuRW52VmFye05hbWU6ICJDQyIsIFZhbHVlOiBjY30pCisgCWVudiA9IGFwcGVuZChlbnYsIGNmZy5FbnZWYXJ7TmFtZTogIkNYWCIsIFZhbHVlOiBjeHh9KQorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDAyLWNtZC1nby1tYWtlLWNvbnRlbnQtYmFzZWQtaGFzaC1nZW5lcmF0aW9uLWxlc3MtcGVkYW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRmMzdhOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDAyLWNtZC1nby1tYWtlLWNvbnRlbnQtYmFzZWQtaGFzaC1nZW5lcmF0aW9uLWxlc3MtcGVkYW4ucGF0Y2gKQEAgLTAsMCArMSwyMjAgQEAKK0Zyb20gOGIyZmVhZWU4MWQ3YTE2YWRjNTllNjFkMDZjMWU3MzE0ZDNhNTQwOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CitEYXRlOiBNb24sIDE5IEZlYiAyMDE4IDA4OjUwOjU5IC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMi85XSBjbWQvZ286IG1ha2UgY29udGVudC1iYXNlZCBoYXNoIGdlbmVyYXRpb24gbGVzcyBwZWRhbnRpYworCitHbyAxLjEwJ3MgYnVpbGQgdG9vbCBub3cgdXNlcyBjb250ZW50LWJhc2VkIGhhc2hlcyB0bworZGV0ZXJtaW5lIHdoZW4gc29tZXRoaW5nIHNob3VsZCBiZSBidWlsdCBvciByZS1idWlsdC4KK1RoaXMgc2FtZSBtZWNoYW5pc20gaXMgdXNlZCB0byBtYWludGFpbiBhIGJ1aWx0LWFydGlmYWN0CitjYWNoZSBmb3Igc3BlZWRpbmcgdXAgYnVpbGRzLgorCitIb3dldmVyLCB0aGUgaGFzaGVzIGl0IGdlbmVyYXRlcyBpbmNsdWRlIGluZm9ybWF0aW9uIHRoYXQKK2RvZXNuJ3Qgd29yayB3ZWxsIHdpdGggT0UsIG5vciB3aXRoIHVzaW5nIGEgc2hhcmVkIHJ1bnRpbWUKK2xpYnJhcnkuCisKK0ZpcnN0LCBpdCBlbWJlZHMgcGF0aCBuYW1lcyB0byBzb3VyY2UgZmlsZXMsIHVubGVzcworYnVpbGRpbmcgd2l0aGluIEdPUk9PVC4gIFRoaXMgcHJldmVudHMgdGhlIGJ1aWxkaW5nCitvZiBhIHBhY2thZ2UgaW4gR09QQVRIIGZvciBsYXRlciBzdGFnaW5nIGludG8gR09ST09ULgorCitUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCitHT1BBVEhfT01JVF9JTl9BQ1RJT05JRC4gIElmIHByZXNlbnQsIHBhdGggbmFtZQorZW1iZWRkaW5nIGlzIGRpc2FibGVkLgorCitTZWNvbmQsIGlmIGNnbyBpcyBlbmFibGVkLCB0aGUgYnVpbGQgSUQgZm9yIGNnby1yZWxhdGVkCitwYWNrYWdlcyB3aWxsIGluY2x1ZGUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50Cit2YXJpYWJsZXMgZm9yIGludm9raW5nIHRoZSBjb21waWxlciAoQ0MsIENYWCwgRkMpIGFuZAorYW55IENHT194eEZMQUdTIHZhcmlhYmxlcy4gIE9ubHkgaWYgdGhlIHNldHRpbmdzIHVzZWQKK2R1cmluZyBhIGNvbXBpbGF0aW9uIGV4YWN0bHkgbWF0Y2gsIGNoYXJhY3RlciBmb3IgY2hhcmFjdGVyLAordGhlIHZhbHVlcyB1c2VkIGZvciBjb21waWxpbmcgcnVudGltZS9jZ28gb3IgYW55IG90aGVyCitjZ28tZW5hYmxlZCBwYWNrYWdlIGJlaW5nIGltcG9ydGVkLCB3aWxsIHRoZSB0b29sCitkZWNpZGUgdGhhdCB0aGUgaW1wb3J0ZWQgcGFja2FnZSBpcyB1cC10by1kYXRlLgorCitUaGlzIGlzIGRvbmUgdG8gaGVscCBlbnN1cmUgY29ycmVjdG5lc3MsIGJ1dCBpcyBvdmVybHkKK3NpbXBsaXN0aWMgYW5kIGVmZmVjdGl2ZWx5IHByZXZlbnRzIHRoZSByZXVzZSBvZiBidWlsdAorYXJ0aWZhY3RzIHRoYXQgdXNlIGNnbyAob3Igc2hhcmVkIHJ1bnRpbWUsIHdoaWNoIGluY2x1ZGVzCitydW50aW1lL2NnbykuCisKK1RoaXMgcGF0Y2ggZmlsdGVycyBvdXQgYWxsIGNvbXBpbGVyIGZsYWdzIGV4Y2VwdCB0aG9zZQorYmVnaW5uaW5nIHdpdGggJy1tJy4gIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGNhbiBiZSByZXN0b3JlZAorYnkgc2V0dGluZyB0aGUgQ0dPX1BFREFOVElDIGVudmlyb25tZW50IHZhcmlhYmxlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorLS0tCisgc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIHwgIDIgKy0KKyBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbyAgfCA2MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCitpbmRleCBmODkxMTIzZjljLi5lYmFjZmJmZGJjIDEwMDY0NAorLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KK0BAIC0xMTMsNyArMTEzLDcgQEAgZnVuYyBmaW5kRW52KGVudiBbXWNmZy5FbnZWYXIsIG5hbWUgc3RyaW5nKSBzdHJpbmcgeworIGZ1bmMgRXh0cmFFbnZWYXJzKCkgW11jZmcuRW52VmFyIHsKKyAJdmFyIGIgd29yay5CdWlsZGVyCisgCWIuSW5pdCgpCistCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIGVyciA6PSBiLkNGbGFncygmbG9hZC5QYWNrYWdle30pCisrCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIGVyciA6PSBiLkNGbGFncygmbG9hZC5QYWNrYWdle30sIGZhbHNlKQorIAlpZiBlcnIgIT0gbmlsIHsKKyAJCS8vIFNob3VsZCBub3QgaGFwcGVuIC0gYi5DRmxhZ3Mgd2FzIGdpdmVuIGFuIGVtcHR5IHBhY2thZ2UuCisgCQlmbXQuRnByaW50Zihvcy5TdGRlcnIsICJnbzogaW52YWxpZCBjZmxhZ3M6ICV2XG4iLCBlcnIpCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbworaW5kZXggYzRjMTUwMGViMi4uYjBmNmI0NTY0NyAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbworQEAgLTE3Myw2ICsxNzMsOCBAQCBmdW5jIChiICpCdWlsZGVyKSBEbyhyb290ICpBY3Rpb24pIHsKKyAJd2cuV2FpdCgpCisgfQorIAorK3ZhciBvbWl0R29wYXRoID0gb3MuR2V0ZW52KCJHT1BBVEhfT01JVF9JTl9BQ1RJT05JRCIpICE9ICIiCisrCisgLy8gYnVpbGRBY3Rpb25JRCBjb21wdXRlcyB0aGUgYWN0aW9uIElEIGZvciBhIGJ1aWxkIGFjdGlvbi4KKyBmdW5jIChiICpCdWlsZGVyKSBidWlsZEFjdGlvbklEKGEgKkFjdGlvbikgY2FjaGUuQWN0aW9uSUQgeworIAlwIDo9IGEuUGFja2FnZQorQEAgLTE4OSw3ICsxOTEsNyBAQCBmdW5jIChiICpCdWlsZGVyKSBidWlsZEFjdGlvbklEKGEgKkFjdGlvbikgY2FjaGUuQWN0aW9uSUQgeworIAkvLyBidXQgaXQgZG9lcyBub3QgaGlkZSB0aGUgZXhhY3QgdmFsdWUgb2YgJEdPUEFUSC4KKyAJLy8gSW5jbHVkZSB0aGUgZnVsbCBkaXIgaW4gdGhhdCBjYXNlLgorIAkvLyBBc3N1bWUgYi5Xb3JrRGlyIGlzIGJlaW5nIHRyaW1tZWQgcHJvcGVybHkuCistCWlmICFwLkdvcm9vdCAmJiAhc3RyaW5ncy5IYXNQcmVmaXgocC5EaXIsIGIuV29ya0RpcikgeworKwlpZiAhcC5Hb3Jvb3QgJiYgIW9taXRHb3BhdGggJiYgIXN0cmluZ3MuSGFzUHJlZml4KHAuRGlyLCBiLldvcmtEaXIpIHsKKyAJCWZtdC5GcHJpbnRmKGgsICJkaXIgJXNcbiIsIHAuRGlyKQorIAl9CisgCWZtdC5GcHJpbnRmKGgsICJnb29zICVzIGdvYXJjaCAlc1xuIiwgY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpCitAQCAtMTk3LDEzICsxOTksMTMgQEAgZnVuYyAoYiAqQnVpbGRlcikgYnVpbGRBY3Rpb25JRChhICpBY3Rpb24pIGNhY2hlLkFjdGlvbklEIHsKKyAJZm10LkZwcmludGYoaCwgIm9taXRkZWJ1ZyAldiBzdGFuZGFyZCAldiBsb2NhbCAldiBwcmVmaXggJXFcbiIsIHAuSW50ZXJuYWwuT21pdERlYnVnLCBwLlN0YW5kYXJkLCBwLkludGVybmFsLkxvY2FsLCBwLkludGVybmFsLkxvY2FsUHJlZml4KQorIAlpZiBsZW4ocC5DZ29GaWxlcykrbGVuKHAuU3dpZ0ZpbGVzKSA+IDAgeworIAkJZm10LkZwcmludGYoaCwgImNnbyAlcVxuIiwgYi50b29sSUQoImNnbyIpKQorLQkJY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgXywgXyA6PSBiLkNGbGFncyhwKQorLQkJZm10LkZwcmludGYoaCwgIkNDPSVxICVxICVxXG4iLCBiLmNjRXhlKCksIGNwcGZsYWdzLCBjZmxhZ3MpCisrCQljcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBfLCBfIDo9IGIuQ0ZsYWdzKHAsIHRydWUpCisrCQlmbXQuRnByaW50ZihoLCAiQ0M9JXEgJXEgJXFcbiIsIGIuY2NFeGUodHJ1ZSksIGNwcGZsYWdzLCBjZmxhZ3MpCisgCQlpZiBsZW4ocC5DWFhGaWxlcykrbGVuKHAuU3dpZ0ZpbGVzKSA+IDAgeworLQkJCWZtdC5GcHJpbnRmKGgsICJDWFg9JXEgJXFcbiIsIGIuY3h4RXhlKCksIGN4eGZsYWdzKQorKwkJCWZtdC5GcHJpbnRmKGgsICJDWFg9JXEgJXFcbiIsIGIuY3h4RXhlKHRydWUpLCBjeHhmbGFncykKKyAJCX0KKyAJCWlmIGxlbihwLkZGaWxlcykgPiAwIHsKKy0JCQlmbXQuRnByaW50ZihoLCAiRkM9JXEgJXFcbiIsIGIuZmNFeGUoKSwgZmZsYWdzKQorKwkJCWZtdC5GcHJpbnRmKGgsICJGQz0lcSAlcVxuIiwgYi5mY0V4ZSh0cnVlKSwgZmZsYWdzKQorIAkJfQorIAkJLy8gVE9ETyhyc2MpOiBTaG91bGQgd2UgaW5jbHVkZSB0aGUgU1dJRyB2ZXJzaW9uIG9yIEZvcnRyYW4vR0NDL0crKy9PYmplY3RpdmUtQyBjb21waWxlciB2ZXJzaW9ucz8KKyAJfQorQEAgLTE3MzEsMzMgKzE3MzMsMzMgQEAgdmFyICgKKyAvLyBnY2NDbWQgcmV0dXJucyBhIGdjYyBjb21tYW5kIGxpbmUgcHJlZml4CisgLy8gZGVmYXVsdENDIGlzIGRlZmluZWQgaW4gemRlZmF1bHRjYy5nbywgd3JpdHRlbiBieSBjbWQvZGlzdC4KKyBmdW5jIChiICpCdWlsZGVyKSBHY2NDbWQoaW5jZGlyLCB3b3JrZGlyIHN0cmluZykgW11zdHJpbmcgeworLQlyZXR1cm4gYi5jb21waWxlckNtZChiLmNjRXhlKCksIGluY2Rpciwgd29ya2RpcikKKysJcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jY0V4ZShmYWxzZSksIGluY2Rpciwgd29ya2RpcikKKyB9CisgCisgLy8gZ3h4Q21kIHJldHVybnMgYSBnKysgY29tbWFuZCBsaW5lIHByZWZpeAorIC8vIGRlZmF1bHRDWFggaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgorIGZ1bmMgKGIgKkJ1aWxkZXIpIEd4eENtZChpbmNkaXIsIHdvcmtkaXIgc3RyaW5nKSBbXXN0cmluZyB7CistCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuY3h4RXhlKCksIGluY2Rpciwgd29ya2RpcikKKysJcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jeHhFeGUoZmFsc2UpLCBpbmNkaXIsIHdvcmtkaXIpCisgfQorIAorIC8vIGdmb3J0cmFuQ21kIHJldHVybnMgYSBnZm9ydHJhbiBjb21tYW5kIGxpbmUgcHJlZml4LgorIGZ1bmMgKGIgKkJ1aWxkZXIpIGdmb3J0cmFuQ21kKGluY2Rpciwgd29ya2RpciBzdHJpbmcpIFtdc3RyaW5nIHsKKy0JcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5mY0V4ZSgpLCBpbmNkaXIsIHdvcmtkaXIpCisrCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuZmNFeGUoZmFsc2UpLCBpbmNkaXIsIHdvcmtkaXIpCisgfQorIAorIC8vIGNjRXhlIHJldHVybnMgdGhlIENDIGNvbXBpbGVyIHNldHRpbmcgd2l0aG91dCBhbGwgdGhlIGV4dHJhIGZsYWdzIHdlIGFkZCBpbXBsaWNpdGx5LgorLWZ1bmMgKGIgKkJ1aWxkZXIpIGNjRXhlKCkgW11zdHJpbmcgeworLQlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ0MsIGNmZy5EZWZhdWx0Q0MoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpKQorK2Z1bmMgKGIgKkJ1aWxkZXIpIGNjRXhlKGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKKysJcmV0dXJuIGIuY29tcGlsZXJFeGUob3JpZ0NDLCBjZmcuRGVmYXVsdENDKGNmZy5Hb29zLCBjZmcuR29hcmNoKSwgZmlsdGVyZWQpCisgfQorIAorIC8vIGN4eEV4ZSByZXR1cm5zIHRoZSBDWFggY29tcGlsZXIgc2V0dGluZyB3aXRob3V0IGFsbCB0aGUgZXh0cmEgZmxhZ3Mgd2UgYWRkIGltcGxpY2l0bHkuCistZnVuYyAoYiAqQnVpbGRlcikgY3h4RXhlKCkgW11zdHJpbmcgeworLQlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ1hYLCBjZmcuRGVmYXVsdENYWChjZmcuR29vcywgY2ZnLkdvYXJjaCkpCisrZnVuYyAoYiAqQnVpbGRlcikgY3h4RXhlKGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKKysJcmV0dXJuIGIuY29tcGlsZXJFeGUob3JpZ0NYWCwgY2ZnLkRlZmF1bHRDWFgoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpLCBmaWx0ZXJlZCkKKyB9CisgCisgLy8gZmNFeGUgcmV0dXJucyB0aGUgRkMgY29tcGlsZXIgc2V0dGluZyB3aXRob3V0IGFsbCB0aGUgZXh0cmEgZmxhZ3Mgd2UgYWRkIGltcGxpY2l0bHkuCistZnVuYyAoYiAqQnVpbGRlcikgZmNFeGUoKSBbXXN0cmluZyB7CistCXJldHVybiBiLmNvbXBpbGVyRXhlKG9zLkdldGVudigiRkMiKSwgImdmb3J0cmFuIikKKytmdW5jIChiICpCdWlsZGVyKSBmY0V4ZShmaWx0ZXJlZCBib29sKSBbXXN0cmluZyB7CisrCXJldHVybiBiLmNvbXBpbGVyRXhlKG9zLkdldGVudigiRkMiKSwgImdmb3J0cmFuIiwgZmlsdGVyZWQpCisgfQorIAorIC8vIGNvbXBpbGVyRXhlIHJldHVybnMgdGhlIGNvbXBpbGVyIHRvIHVzZSBnaXZlbiBhbgorQEAgLTE3NjYsMTEgKzE3NjgsMTQgQEAgZnVuYyAoYiAqQnVpbGRlcikgZmNFeGUoKSBbXXN0cmluZyB7CisgLy8gb2YgdGhlIGNvbXBpbGVyIGJ1dCBjYW4gaGF2ZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBpZiB0aGV5CisgLy8gd2VyZSBwcmVzZW50IGluIHRoZSBlbnZpcm9ubWVudCB2YWx1ZS4KKyAvLyBGb3IgZXhhbXBsZSBpZiBDQz0iZ2NjIC1ER09QSEVSIiB0aGVuIHRoZSByZXN1bHQgaXMgWyJnY2MiLCAiLURHT1BIRVIiXS4KKy1mdW5jIChiICpCdWlsZGVyKSBjb21waWxlckV4ZShlbnZWYWx1ZSBzdHJpbmcsIGRlZiBzdHJpbmcpIFtdc3RyaW5nIHsKKytmdW5jIChiICpCdWlsZGVyKSBjb21waWxlckV4ZShlbnZWYWx1ZSBzdHJpbmcsIGRlZiBzdHJpbmcsIGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKKyAJY29tcGlsZXIgOj0gc3RyaW5ncy5GaWVsZHMoZW52VmFsdWUpCisgCWlmIGxlbihjb21waWxlcikgPT0gMCB7CisgCQljb21waWxlciA9IFtdc3RyaW5ne2RlZn0KKyAJfQorKwlpZiBmaWx0ZXJlZCB7CisrCQlyZXR1cm4gYXBwZW5kKGNvbXBpbGVyWzA6MV0sIGZpbHRlckNvbXBpbGVyRmxhZ3MoY29tcGlsZXJbMTpdKS4uLikKKysJfQorIAlyZXR1cm4gY29tcGlsZXIKKyB9CisgCitAQCAtMTkyMCw4ICsxOTI1LDIzIEBAIGZ1bmMgZW52TGlzdChrZXksIGRlZiBzdHJpbmcpIFtdc3RyaW5nIHsKKyAJcmV0dXJuIHN0cmluZ3MuRmllbGRzKHYpCisgfQorIAorK3ZhciBmaWx0ZXJGbGFncyA9IG9zLkdldGVudigiQ0dPX1BFREFOVElDIikgPT0gIiIKKysKKytmdW5jIGZpbHRlckNvbXBpbGVyRmxhZ3MoZmxhZ3MgW11zdHJpbmcpIFtdc3RyaW5nIHsKKysJdmFyIG5ld2ZsYWdzIFtdc3RyaW5nCisrCWlmICFmaWx0ZXJGbGFncyB7CisrCQlyZXR1cm4gZmxhZ3MKKysJfQorKwlmb3IgXywgZmxhZyA6PSByYW5nZSBmbGFncyB7CisrCQlpZiBzdHJpbmdzLkhhc1ByZWZpeChmbGFnLCAiLW0iKSB7CisrCQkJbmV3ZmxhZ3MgPSBhcHBlbmQobmV3ZmxhZ3MsIGZsYWcpCisrCQl9CisrCX0KKysJcmV0dXJuIG5ld2ZsYWdzCisrfQorKworIC8vIENGbGFncyByZXR1cm5zIHRoZSBmbGFncyB0byB1c2Ugd2hlbiBpbnZva2luZyB0aGUgQywgQysrIG9yIEZvcnRyYW4gY29tcGlsZXJzLCBvciBjZ28uCistZnVuYyAoYiAqQnVpbGRlcikgQ0ZsYWdzKHAgKmxvYWQuUGFja2FnZSkgKGNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MgW11zdHJpbmcsIGVyciBlcnJvcikgeworK2Z1bmMgKGIgKkJ1aWxkZXIpIENGbGFncyhwICpsb2FkLlBhY2thZ2UsIGZpbHRlcmVkIGJvb2wpIChjcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzIFtdc3RyaW5nLCBlcnIgZXJyb3IpIHsKKyAJZGVmYXVsdHMgOj0gIi1nIC1PMiIKKyAKKyAJaWYgY3BwZmxhZ3MsIGVyciA9IGJ1aWxkRmxhZ3MoIkNQUEZMQUdTIiwgIiIsIHAuQ2dvQ1BQRkxBR1MsIGNoZWNrQ29tcGlsZXJGbGFncyk7IGVyciAhPSBuaWwgeworQEAgLTE5MzksNiArMTk1OSwxMyBAQCBmdW5jIChiICpCdWlsZGVyKSBDRmxhZ3MocCAqbG9hZC5QYWNrYWdlKSAoY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbAorIAlpZiBsZGZsYWdzLCBlcnIgPSBidWlsZEZsYWdzKCJMREZMQUdTIiwgZGVmYXVsdHMsIHAuQ2dvTERGTEFHUywgY2hlY2tMaW5rZXJGbGFncyk7IGVyciAhPSBuaWwgeworIAkJcmV0dXJuCisgCX0KKysJaWYgZmlsdGVyZWQgeworKwkJY3BwZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGNwcGZsYWdzKQorKwkJY2ZsYWdzID0gZmlsdGVyQ29tcGlsZXJGbGFncyhjZmxhZ3MpCisrCQljeHhmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoY3h4ZmxhZ3MpCisrCQlmZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGZmbGFncykKKysJCWxkZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGxkZmxhZ3MpCisrCX0KKyAKKyAJcmV0dXJuCisgfQorQEAgLTE5NTQsNyArMTk4MSw3IEBAIHZhciBjZ29SZSA9IHJlZ2V4cC5NdXN0Q29tcGlsZShgWy9cXDpdYCkKKyAKKyBmdW5jIChiICpCdWlsZGVyKSBjZ28oYSAqQWN0aW9uLCBjZ29FeGUsIG9iamRpciBzdHJpbmcsIHBjQ0ZMQUdTLCBwY0xERkxBR1MsIGNnb2ZpbGVzLCBnY2NmaWxlcywgZ3h4ZmlsZXMsIG1maWxlcywgZmZpbGVzIFtdc3RyaW5nKSAob3V0R28sIG91dE9iaiBbXXN0cmluZywgZXJyIGVycm9yKSB7CisgCXAgOj0gYS5QYWNrYWdlCistCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBjZ29GRkxBR1MsIGNnb0xERkxBR1MsIGVyciA6PSBiLkNGbGFncyhwKQorKwljZ29DUFBGTEFHUywgY2dvQ0ZMQUdTLCBjZ29DWFhGTEFHUywgY2dvRkZMQUdTLCBjZ29MREZMQUdTLCBlcnIgOj0gYi5DRmxhZ3MocCwgZmFsc2UpCisgCWlmIGVyciAhPSBuaWwgeworIAkJcmV0dXJuIG5pbCwgbmlsLCBlcnIKKyAJfQorQEAgLTIzMDYsNyArMjMzMyw3IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIHN3aWdJbnRTaXplKG9iamRpciBzdHJpbmcpIChpbnRzaXplIHN0cmluZywgZXJyIGVycm9yKSB7CisgCisgLy8gUnVuIFNXSUcgb24gb25lIFNXSUcgaW5wdXQgZmlsZS4KKyBmdW5jIChiICpCdWlsZGVyKSBzd2lnT25lKGEgKkFjdGlvbiwgcCAqbG9hZC5QYWNrYWdlLCBmaWxlLCBvYmpkaXIgc3RyaW5nLCBwY0NGTEFHUyBbXXN0cmluZywgY3h4IGJvb2wsIGludGdvc2l6ZSBzdHJpbmcpIChvdXRHbywgb3V0QyBzdHJpbmcsIGVyciBlcnJvcikgeworLQljZ29DUFBGTEFHUywgY2dvQ0ZMQUdTLCBjZ29DWFhGTEFHUywgXywgXywgZXJyIDo9IGIuQ0ZsYWdzKHApCisrCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBfLCBfLCBlcnIgOj0gYi5DRmxhZ3MocCwgZmFsc2UpCisgCWlmIGVyciAhPSBuaWwgeworIAkJcmV0dXJuICIiLCAiIiwgZXJyCisgCX0KKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDAzLWFsbG93LUdPVE9PTERJUi10by1iZS1vdmVycmlkZGVuLWluLXRoZS1lbnZpcm9ubWVudC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDAzLWFsbG93LUdPVE9PTERJUi10by1iZS1vdmVycmlkZGVuLWluLXRoZS1lbnZpcm9ubWVudC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MThmZTY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoCkBAIC0wLDAgKzEsNjQgQEAKK0Zyb20gYWNkMTc5YjQ5ZjFmYzhkNmY3ZjY5ZTU2OWZiNGE1NjAzOWM3MjVhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CitEYXRlOiBTYXQsIDE3IEZlYiAyMDE4IDA1OjI0OjIwIC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMy85XSBhbGxvdyBHT1RPT0xESVIgdG8gYmUgb3ZlcnJpZGRlbiBpbiB0aGUgZW52aXJvbm1lbnQKKwordG8gYWxsb3cgZm9yIHNwbGl0IGhvc3QvdGFyZ2V0IGJ1aWxkIHJvb3RzCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CistLS0KKyBzcmMvY21kL2Rpc3QvYnVpbGQuZ28gICAgICAgICAgfCA0ICsrKy0KKyBzcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28gfCA2ICsrKysrLQorIHNyYy9nby9idWlsZC9idWlsZC5nbyAgICAgICAgICB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jbWQvZGlzdC9idWlsZC5nbyBiL3NyYy9jbWQvZGlzdC9idWlsZC5nbworaW5kZXggNDllZDgwMDMzZS4uYWZjNjE1YjVjMiAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvZGlzdC9idWlsZC5nbworKysrIGIvc3JjL2NtZC9kaXN0L2J1aWxkLmdvCitAQCAtMjIwLDcgKzIyMCw5IEBAIGZ1bmMgeGluaXQoKSB7CisgCXdvcmtkaXIgPSB4d29ya2RpcigpCisgCXhhdGV4aXQocm13b3JrZGlyKQorIAorLQl0b29sZGlyID0gcGF0aGYoIiVzL3BrZy90b29sLyVzXyVzIiwgZ29yb290LCBnb2hvc3RvcywgZ29ob3N0YXJjaCkKKysJaWYgdG9vbGRpciA9IG9zLkdldGVudigiR09UT09MRElSIik7IHRvb2xkaXIgPT0gIiIgeworKwkJdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC8lc18lcyIsIGdvcm9vdCwgZ29ob3N0b3MsIGdvaG9zdGFyY2gpCisrCX0KKyB9CisgCisgLy8gY29tcGlsZXJFbnYgcmV0dXJucyBhIG1hcCBmcm9tICJnb29zL2dvYXJjaCIgdG8gdGhlCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvCitpbmRleCAxZGU0ZjBkYzc5Li40ZjYwMTBkNjYwIDEwMDY0NAorLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28KK0BAIC05Niw3ICs5NiwxMSBAQCBmdW5jIGluaXQoKSB7CisgCS8vIGFzIHRoZSB0b29sIGRpcmVjdG9yeSBkb2VzIG5vdCBtb3ZlIGJhc2VkIG9uIGVudmlyb25tZW50IHZhcmlhYmxlcy4KKyAJLy8gVGhpcyBtYXRjaGVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBUb29sRGlyIGluIGdvL2J1aWxkLAorIAkvLyBleGNlcHQgZm9yIHVzaW5nIEdPUk9PVCByYXRoZXIgdGhhbiBydW50aW1lLkdPUk9PVCgpLgorLQlidWlsZC5Ub29sRGlyID0gZmlsZXBhdGguSm9pbihHT1JPT1QsICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpCisrCWlmIHMgOj0gb3MuR2V0ZW52KCJHT1RPT0xESVIiKTsgcyAhPSAiIiB7CisrCQlidWlsZC5Ub29sRGlyID0gZmlsZXBhdGguQ2xlYW4ocykKKysJfSBlbHNlIHsKKysJCWJ1aWxkLlRvb2xEaXIgPSBmaWxlcGF0aC5Kb2luKEdPUk9PVCwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkKKysJfQorIH0KKyAKKyBmdW5jIGZpbmRHT1JPT1QoKSBzdHJpbmcgeworZGlmZiAtLWdpdCBhL3NyYy9nby9idWlsZC9idWlsZC5nbyBiL3NyYy9nby9idWlsZC9idWlsZC5nbworaW5kZXggNjhmYjQyMzk4My4uODFiMWIzMjI3MCAxMDA2NDQKKy0tLSBhL3NyYy9nby9idWlsZC9idWlsZC5nbworKysrIGIvc3JjL2dvL2J1aWxkL2J1aWxkLmdvCitAQCAtMTU5NCw3ICsxNTk0LDcgQEAgZnVuYyBpbml0KCkgeworIH0KKyAKKyAvLyBUb29sRGlyIGlzIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBidWlsZCB0b29scy4KKy12YXIgVG9vbERpciA9IGZpbGVwYXRoLkpvaW4ocnVudGltZS5HT1JPT1QoKSwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkKKyt2YXIgVG9vbERpciA9IGVudk9yKCJHT1RPT0xESVIiLCBmaWxlcGF0aC5Kb2luKHJ1bnRpbWUuR09ST09UKCksICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpKQorIAorIC8vIElzTG9jYWxJbXBvcnQgcmVwb3J0cyB3aGV0aGVyIHRoZSBpbXBvcnQgcGF0aCBpcworIC8vIGEgbG9jYWwgaW1wb3J0IHBhdGgsIGxpa2UgIi4iLCAiLi4iLCAiLi9mb28iLCBvciAiLi4vZm9vIi4KKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA0LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyM2NhOTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gODUyNTJmMGJkODc0MzIyM2ViNzc4ZWRiZTlmYjMxZGZmMTdhMjNkOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CitEYXRlOiBTYXQsIDE3IEZlYiAyMDE4IDA2OjI2OjEwIC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggNC85XSBsZDogYWRkIHNvbmFtZSB0byBzaGFyZWFibGUgb2JqZWN0cworCitzbyB0aGF0IE9FJ3Mgc2hhcmVkIGxpYnJhcnkgZGVwZW5kZW5jeSBoYW5kbGluZworY2FuIGZpbmQgdGhlbS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KKy0tLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28gfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbworaW5kZXggNmRjYWY2NDEyMi4uMTFjYmI4YThiYiAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KK0BAIC0xMTM0LDYgKzExMzQsNyBAQCBmdW5jIChjdHh0ICpMaW5rKSBob3N0bGluaygpIHsKKyAJCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKKyAJCQl9CisgCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLXNoYXJlZCIpCisrCQkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQorIAkJCWlmIGN0eHQuSGVhZFR5cGUgIT0gb2JqYWJpLkh3aW5kb3dzIHsKKyAJCQkJLy8gUGFzcyAteiBub2RlbGV0ZSB0byBtYXJrIHRoZSBzaGFyZWQgbGlicmFyeSBhcworIAkJCQkvLyBub24tY2xvc2VhYmxlOiBhIGRsY2xvc2Ugd2lsbCBkbyBub3RoaW5nLgorQEAgLTExNDUsNiArMTE0Niw4IEBAIGZ1bmMgKGN0eHQgKkxpbmspIGhvc3RsaW5rKCkgeworIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1XbCwteixyZWxybyIpCisgCQl9CisgCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItc2hhcmVkIikKKysJCWFyZ3YgPSBhcHBlbmQoYXJndiwgZm10LlNwcmludGYoIi1XbCwtc29uYW1lLCVzIiwgZmlsZXBhdGguQmFzZSgqZmxhZ091dGZpbGUpKSkKKysKKyAJY2FzZSBCdWlsZE1vZGVQbHVnaW46CisgCQlpZiBjdHh0LkhlYWRUeXBlID09IG9iamFiaS5IZGFyd2luIHsKKyAJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItZHluYW1pY2xpYiIpCitAQCAtMTE1Myw2ICsxMTU2LDcgQEAgZnVuYyAoY3R4dCAqTGluaykgaG9zdGxpbmsoKSB7CisgCQkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1XbCwteixyZWxybyIpCisgCQkJfQorIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1zaGFyZWQiKQorKwkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgZm10LlNwcmludGYoIi1XbCwtc29uYW1lLCVzIiwgZmlsZXBhdGguQmFzZSgqZmxhZ091dGZpbGUpKSkKKyAJCX0KKyAJfQorIAorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDUtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjdhOTM5MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSAxNjEyNGQ4NDY0OGY0ZGZkZmE0NzM4YzU2NjBiNTQwMGIzMGJmOWRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KK0RhdGU6IFNhdCwgMTcgRmViIDIwMTggMDY6MzI6NDUgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCA1LzldIG1ha2UuYmFzaDogb3ZlcnJpZGUgQ0Mgd2hlbiBidWlsZGluZyBkaXN0IGFuZAorIGdvX2Jvb3RzdHJhcAorCitmb3IgaGFuZGxpbmcgT0UgY3Jvc3MtY2FuYWRpYW4gYnVpbGRzLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorLS0tCisgc3JjL21ha2UuYmFzaCB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbWFrZS5iYXNoIGIvc3JjL21ha2UuYmFzaAoraW5kZXggOTNhNWM0M2QxMS4uM2E2MzY4MmJjNCAxMDA3NTUKKy0tLSBhL3NyYy9tYWtlLmJhc2gKKysrKyBiL3NyYy9tYWtlLmJhc2gKK0BAIC0xNjIsNyArMTYyLDcgQEAgaWYgWyAiJEdPUk9PVF9CT09UU1RSQVAiID0gIiRHT1JPT1QiIF07IHRoZW4KKyAJZXhpdCAxCisgZmkKKyBybSAtZiBjbWQvZGlzdC9kaXN0CistR09ST09UPSIkR09ST09UX0JPT1RTVFJBUCIgR09PUz0iIiBHT0FSQ0g9IiIgIiRHT1JPT1RfQk9PVFNUUkFQL2Jpbi9nbyIgYnVpbGQgLW8gY21kL2Rpc3QvZGlzdCAuL2NtZC9kaXN0CisrQ0M9IiR7QlVJTERfQ0M6LSR7Q0N9fSIgR09ST09UPSIkR09ST09UX0JPT1RTVFJBUCIgR09PUz0iIiBHT0FSQ0g9IiIgIiRHT1JPT1RfQk9PVFNUUkFQL2Jpbi9nbyIgYnVpbGQgLW8gY21kL2Rpc3QvZGlzdCAuL2NtZC9kaXN0CisgCisgIyAtZSBkb2Vzbid0IHByb3BhZ2F0ZSBvdXQgb2YgZXZhbCwgc28gY2hlY2sgc3VjY2VzcyBieSBoYW5kLgorIGV2YWwgJCguL2NtZC9kaXN0L2Rpc3QgZW52IC1wIHx8IGVjaG8gRkFJTD10cnVlKQorQEAgLTE5Myw3ICsxOTMsNyBAQCBmaQorICMgUnVuIGRpc3QgYm9vdHN0cmFwIHRvIGNvbXBsZXRlIG1ha2UuYmFzaC4KKyAjIEJvb3RzdHJhcCBpbnN0YWxscyBhIHByb3BlciBjbWQvZGlzdCwgYnVpbHQgd2l0aCB0aGUgbmV3IHRvb2xjaGFpbi4KKyAjIFRocm93IG91cnMsIGJ1aWx0IHdpdGggR28gMS40LCBhd2F5IGFmdGVyIGJvb3RzdHJhcC4KKy0uL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkdmZsYWcgJEdPX0RJU1RGTEFHUyAiJEAiCisrQ0M9IiR7QlVJTERfQ0M6LSR7Q0N9fSIgLi9jbWQvZGlzdC9kaXN0IGJvb3RzdHJhcCAkYnVpbGRhbGwgJHZmbGFnICRHT19ESVNURkxBR1MgIiRAIgorIHJtIC1mIC4vY21kL2Rpc3QvZGlzdAorIAorICMgRE8gTk9UIEFERCBBTlkgTkVXIENPREUgSEVSRS4KKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwNi1jbWQtZGlzdC1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmZTY5OTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwNi1jbWQtZGlzdC1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoCkBAIC0wLDAgKzEsMjc3IEBACitGcm9tIDJmMDdhZjM0Njk3YzYxZGVjZGNmYTViMTE0MzQ0NTFmYmNmMzc3MDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorRGF0ZTogU2F0LCAxNyBGZWIgMjAxOCAxMDowMzo0OCAtMDgwMAorU3ViamVjdDogW1BBVENIIDYvOV0gY21kL2Rpc3Q6IHNlcGFyYXRlIGhvc3QgYW5kIHRhcmdldCBidWlsZHMKKworQ2hhbmdlIHRoZSBkaXN0IHRvb2wgdG8gYWxsb3cgZm9yIE9FLXN0eWxlIGNyb3NzLQorYW5kIGNyb3NzLWNhbmFkaWFuIGJ1aWxkczoKKworIC0gY29tbWFuZCBmbGFncyAtLWhvc3Qtb25seSBhbmQgLS10YXJnZXQgb25seSBhcmUgYWRkZWQ7CisgICBpZiBvbmUgaXMgcHJlc2VudCwgdGhlIG90aGVyIGNoYW5nZXMgbWVudGlvbmVkIGJlbG93CisgICB0YWtlIGVmZmVjdCwgYW5kIGFyZ3VtZW50cyBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgb24KKyAgIHRoZSBjb21tYW5kIGxpbmUgdG8gZW51bWVyYXRlIHRoZSBwYWNrYWdlKHMpIHRvIGJlCisgICBidWlsdC4KKworIC0gZm9yIE9FIGNyb3NzIGJ1aWxkcywgZ29fYm9vdHN0cmFwIGlzIGFsd2F5cyBidWlsdCBmb3IKKyAgIHRoZSBjdXJyZW50IGJ1aWxkIGhvc3QsIGFuZCBpcyBtb3ZlZCwgYWxvbmcgd2l0aCB0aGUgc3VwcG9ydGluZworICAgdG9vbGNoYWluIChhc20sIGNvbXBpbGUsIGV0Yy4pIHRvIGEgc2VwYXJhdGUgJ25hdGl2ZV9uYXRpdmUnCisgICBkaXJlY3RvcnkgdW5kZXIgR09ST09UL3BrZy90b29sLgorCisgLSBnb19ib290c3RyYXAgaXMgbm90IGF1dG9tYXRpY2FsbHkgcmVtb3ZlZCBhZnRlciB0aGUgYnVpbGQsCisgICBzbyBpdCBjYW4gYmUgcmV1c2VkIGxhdGVyIChlLmcuLCBidWlsZGluZyBib3RoIHN0YXRpYyBhbmQKKyAgIHNoYXJlZCBydW50aW1lKS4KKworTm90ZSB0aGF0IGZvciAtLWhvc3Qtb25seSBidWlsZHMsIGl0IHdvdWxkIGJlIG5pY2UgdG8gc3BlY2lmeQoranVzdCB0aGUgImNtZCIgcGFja2FnZSB0byBidWlsZCBvbmx5IHRoZSBnbyBjb21tYW5kcy90b29scywKK3RoZSBzdGFsZW5lc3MgY2hlY2tzIGluIHRoZSBkaXN0IHRvb2wgd2lsbCBmYWlsIGlmIHRoZSAic3RkIgorbGlicmFyeSBoYXMgbm90IGFsc28gYmVlbiBidWlsdC4gIFNvIGhvc3Qtb25seSBidWlsZHMgaGF2ZSB0bworYnVpbGQgZXZlcnl0aGluZyBhbnl3YXkuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CisKK21vcmUgZGlzdCBjbGVhbnVwCistLS0KKyBzcmMvY21kL2Rpc3QvYnVpbGQuZ28gfCAxNDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTExIGluc2VydGlvbnMoKyksIDM4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9kaXN0L2J1aWxkLmdvIGIvc3JjL2NtZC9kaXN0L2J1aWxkLmdvCitpbmRleCBhZmM2MTViNWMyLi4zNjI2MjY2NWIyIDEwMDY0NAorLS0tIGEvc3JjL2NtZC9kaXN0L2J1aWxkLmdvCisrKysgYi9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KK0BAIC0zOCw2ICszOCw3IEBAIHZhciAoCisgCWdvbGRmbGFncyAgICAgICAgc3RyaW5nCisgCXdvcmtkaXIgICAgICAgICAgc3RyaW5nCisgCXRvb2xkaXIgICAgICAgICAgc3RyaW5nCisrCWJ1aWxkX3Rvb2xkaXIJIHN0cmluZworIAlvbGRnb29zICAgICAgICAgIHN0cmluZworIAlvbGRnb2FyY2ggICAgICAgIHN0cmluZworIAlleGUgICAgICAgICAgICAgIHN0cmluZworQEAgLTQ5LDYgKzUwLDcgQEAgdmFyICgKKyAKKyAJcmVidWlsZGFsbCAgIGJvb2wKKyAJZGVmYXVsdGNsYW5nIGJvb2wKKysJY3Jvc3NCdWlsZCAgIGJvb2wKKyAKKyAJdmZsYWcgaW50IC8vIHZlcmJvc2l0eQorICkKK0BAIC0yMjMsNiArMjI1LDggQEAgZnVuYyB4aW5pdCgpIHsKKyAJaWYgdG9vbGRpciA9IG9zLkdldGVudigiR09UT09MRElSIik7IHRvb2xkaXIgPT0gIiIgeworIAkJdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC8lc18lcyIsIGdvcm9vdCwgZ29ob3N0b3MsIGdvaG9zdGFyY2gpCisgCX0KKysJYnVpbGRfdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC9uYXRpdmVfbmF0aXZlIiwgZ29yb290KQorKworIH0KKyAKKyAvLyBjb21waWxlckVudiByZXR1cm5zIGEgbWFwIGZyb20gImdvb3MvZ29hcmNoIiB0byB0aGUKK0BAIC0yNTIsNyArMjU2LDYgQEAgZnVuYyBjb21waWxlckVudihlbnZOYW1lLCBkZWYgc3RyaW5nKSBtYXBbc3RyaW5nXXN0cmluZyB7CisgCQlpZiBnb2hvc3RvcyAhPSBnb29zIHx8IGdvaG9zdGFyY2ggIT0gZ29hcmNoIHsKKyAJCQltW2dvaG9zdG9zKyIvIitnb2hvc3RhcmNoXSA9IG1bIiJdCisgCQl9CistCQltWyIiXSA9IGVudgorIAl9CisgCisgCWZvciBfLCBnb29zIDo9IHJhbmdlIG9rZ29vcyB7CitAQCAtNDc5LDggKzQ4MiwxMCBAQCBmdW5jIHNldHVwKCkgeworIAkvLyBXZSBrZWVwIGl0IGluIHBrZy8sIGp1c3QgbGlrZSB0aGUgb2JqZWN0IGRpcmVjdG9yeSBhYm92ZS4KKyAJaWYgcmVidWlsZGFsbCB7CisgCQl4cmVtb3ZlYWxsKHRvb2xkaXIpCisrCQl4cmVtb3ZlYWxsKGJ1aWxkX3Rvb2xkaXIpCisgCX0KKyAJeG1rZGlyYWxsKHRvb2xkaXIpCisrCXhta2RpcmFsbChidWlsZF90b29sZGlyKQorIAorIAkvLyBSZW1vdmUgdG9vbCBiaW5hcmllcyBmcm9tIGJlZm9yZSB0aGUgdG9vbC9nb2hvc3Rvc19nb2hvc3RhcmNoCisgCXhyZW1vdmVhbGwocGF0aGYoIiVzL2Jpbi90b29sIiwgZ29yb290KSkKK0BAIC0xMTMwLDExICsxMTM1LDI5IEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgeworIAorIAl2YXIgbm9CYW5uZXIgYm9vbAorIAl2YXIgZGVidWcgYm9vbAorKwl2YXIgaG9zdE9ubHkgYm9vbAorKwl2YXIgdGFyZ2V0T25seSBib29sCisrCXZhciB0b0J1aWxkID0gW11zdHJpbmcgeyAic3RkIiwgImNtZCIgfQorKworIAlmbGFnLkJvb2xWYXIoJnJlYnVpbGRhbGwsICJhIiwgcmVidWlsZGFsbCwgInJlYnVpbGQgYWxsIikKKyAJZmxhZy5Cb29sVmFyKCZkZWJ1ZywgImQiLCBkZWJ1ZywgImVuYWJsZSBkZWJ1Z2dpbmcgb2YgYm9vdHN0cmFwIHByb2Nlc3MiKQorIAlmbGFnLkJvb2xWYXIoJm5vQmFubmVyLCAibm8tYmFubmVyIiwgbm9CYW5uZXIsICJkbyBub3QgcHJpbnQgYmFubmVyIikKKysJZmxhZy5Cb29sVmFyKCZob3N0T25seSwgImhvc3Qtb25seSIsIGhvc3RPbmx5LCAiYnVpbGQgb25seSBob3N0IGJpbmFyaWVzLCBub3QgdGFyZ2V0IikKKysJZmxhZy5Cb29sVmFyKCZ0YXJnZXRPbmx5LCAidGFyZ2V0LW9ubHkiLCB0YXJnZXRPbmx5LCAiYnVpbGQgb25seSB0YXJnZXQgYmluYXJpZXMsIG5vdCBob3N0IikKKyAKKy0JeGZsYWdwYXJzZSgwKQorKwl4ZmxhZ3BhcnNlKC0xKQorKworKwlpZiAoaG9zdE9ubHkgJiYgdGFyZ2V0T25seSkgeworKwkJZmF0YWxmKCJzcGVjaWZ5IG9ubHkgb25lIG9mIC0taG9zdC1vbmx5IG9yIC0tdGFyZ2V0LW9ubHlcbiIpCisrCX0KKysJY3Jvc3NCdWlsZCA9IGhvc3RPbmx5IHx8IHRhcmdldE9ubHkKKysJaWYgZmxhZy5OQXJnKCkgPiAwIHsKKysJCWlmIGNyb3NzQnVpbGQgeworKwkJCXRvQnVpbGQgPSBmbGFnLkFyZ3MoKQorKwkJfSBlbHNlIHsKKysJCQlmYXRhbGYoInBhY2thZ2UgbmFtZXMgbm90IHBlcm1pdHRlZCB3aXRob3V0IC0taG9zdC1vbmx5IG9yIC0tdGFyZ2V0LW9ubHlcbiIpCisrCQl9CisrCX0KKyAKKyAJaWYgZGVidWcgeworIAkJLy8gY21kL2J1aWxkaWQgaXMgdXNlZCBpbiBkZWJ1ZyBtb2RlLgorQEAgLTExODIsOCArMTIwNSwxMyBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKKyAJCXhwcmludGYoIlxuIikKKyAJfQorIAorLQlnb2djZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0dDRkxBR1MiKSAvLyB3ZSB3ZXJlIHVzaW5nICRCT09UX0dPX0dDRkxBR1MgdW50aWwgbm93CistCWdvbGRmbGFncyA9IG9zLkdldGVudigiR09fTERGTEFHUyIpCisrCS8vIEZvciBzcGxpdCBob3N0L3RhcmdldCBjcm9zcy9jcm9zcy1jYW5hZGlhbiBidWlsZHMsIHdlIGRvbid0CisrCS8vIHdhbnQgdG8gYmUgc2V0dGluZyB0aGVzZSBmbGFncyB1bnRpbCBhZnRlciB3ZSBoYXZlIGNvbXBpbGVkCisrCS8vIHRoZSB0b29sY2hhaW4gdGhhdCBydW5zIG9uIHRoZSBidWlsZCBob3N0LgorKwlpZiAhIGNyb3NzQnVpbGQgeworKwkJZ29nY2ZsYWdzID0gb3MuR2V0ZW52KCJHT19HQ0ZMQUdTIikgLy8gd2Ugd2VyZSB1c2luZyAkQk9PVF9HT19HQ0ZMQUdTIHVudGlsIG5vdworKwkJZ29sZGZsYWdzID0gb3MuR2V0ZW52KCJHT19MREZMQUdTIikKKysJfQorIAlnb0Jvb3RzdHJhcCA6PSBwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgdG9vbGRpcikKKyAJY21kR28gOj0gcGF0aGYoIiVzL2dvIiwgZ29iaW4pCisgCWlmIGRlYnVnIHsKK0BAIC0xMjEyLDcgKzEyNDAsMTEgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7CisgCQl4cHJpbnRmKCJcbiIpCisgCX0KKyAJeHByaW50ZigiQnVpbGRpbmcgR28gdG9vbGNoYWluMiB1c2luZyBnb19ib290c3RyYXAgYW5kIEdvIHRvb2xjaGFpbjEuXG4iKQorLQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQorKwlpZiBjcm9zc0J1aWxkIHsKKysJCW9zLlNldGVudigiQ0MiLCBkZWZhdWx0Y2NbIiJdKQorKwl9IGVsc2UgeworKwkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKKysJfQorIAlnb0luc3RhbGwoZ29Cb290c3RyYXAsIGFwcGVuZChbXXN0cmluZ3siLWkifSwgdG9vbGNoYWluLi4uKS4uLikKKyAJaWYgZGVidWcgeworIAkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgIi1WPWZ1bGwiKQorQEAgLTEyNDksNDUgKzEyODEsODIgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7CisgCX0KKyAJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgYXBwZW5kKHRvb2xjaGFpbiwgInJ1bnRpbWUvaW50ZXJuYWwvc3lzIikuLi4pCisgCistCWlmIGdvb3MgPT0gb2xkZ29vcyAmJiBnb2FyY2ggPT0gb2xkZ29hcmNoIHsKKy0JCS8vIENvbW1vbiBjYXNlIC0gbm90IHNldHRpbmcgdXAgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLgorLQkJdGltZWxvZygiYnVpbGQiLCAidG9vbGNoYWluIikKKy0JCWlmIHZmbGFnID4gMCB7CistCQkJeHByaW50ZigiXG4iKQorKwlpZiBjcm9zc0J1aWxkIHsKKysJCWdvZ2NmbGFncyA9IG9zLkdldGVudigiR09fR0NGTEFHUyIpCisrCQlnb2xkZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0xERkxBR1MiKQorKwkJdG9vbF9maWxlcywgXyA6PSBmaWxlcGF0aC5HbG9iKHBhdGhmKCIlcy8qIiwgdG9vbGRpcikpCisrCQlmb3IgXywgZiA6PSByYW5nZSB0b29sX2ZpbGVzIHsKKysJCQljb3B5ZmlsZShwYXRoZigiJXMvJXMiLCBidWlsZF90b29sZGlyLCBmaWxlcGF0aC5CYXNlKGYpKSwgZiwgd3JpdGVFeGVjKQorKwkJCXhyZW1vdmUoZikKKysJCX0KKysJCW9zLlNldGVudigiR09UT09MRElSIiwgYnVpbGRfdG9vbGRpcikKKysJCWdvQm9vdHN0cmFwID0gcGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIGJ1aWxkX3Rvb2xkaXIpCisrCQlpZiBob3N0T25seSB7CisrCQkJdGltZWxvZygiYnVpbGQiLCAiaG9zdCB0b29sY2hhaW4iKQorKwkJCWlmIHZmbGFnID4gMCB7CisrCQkJCXhwcmludGYoIlxuIikKKysJCQl9CisrCQkJeHByaW50ZigiQnVpbGRpbmcgJXMgZm9yIGhvc3QsICVzLyVzLlxuIiwgc3RyaW5ncy5Kb2luKHRvQnVpbGQsICIsIiksIGdvb3MsIGdvYXJjaCkKKysJCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsIHRvQnVpbGQuLi4pCisrCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKKysJCQkvLyBTa2lwIGNtZEdvIHN0YWxlbmVzcyBjaGVja3MgaGVyZSwgc2luY2Ugd2UgY2FuJ3QgbmVjZXNzYXJpbHkgcnVuIHRoZSBjbWRHbyBiaW5hcnkKKysKKysJCQl0aW1lbG9nKCJidWlsZCIsICJ0YXJnZXQgdG9vbGNoYWluIikKKysJCQlpZiB2ZmxhZyA+IDAgeworKwkJCQl4cHJpbnRmKCJcbiIpCisrCQkJfQorKwkJfSBlbHNlIGlmIHRhcmdldE9ubHkgeworKwkJCWdvb3MgPSBvbGRnb29zCisrCQkJZ29hcmNoID0gb2xkZ29hcmNoCisrCQkJb3MuU2V0ZW52KCJHT09TIiwgZ29vcykKKysJCQlvcy5TZXRlbnYoIkdPQVJDSCIsIGdvYXJjaCkKKysJCQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQorKwkJCXhwcmludGYoIkJ1aWxkaW5nICVzIGZvciB0YXJnZXQsICVzLyVzLlxuIiwgc3RyaW5ncy5Kb2luKHRvQnVpbGQsICIsIiksIGdvb3MsIGdvYXJjaCkKKysJCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsIHRvQnVpbGQuLi4pCisrCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKKysJCQkvLyBTa2lwIGNtZEdvIHN0YWxlbmVzcyBjaGVja3MgaGVyZSwgc2luY2Ugd2UgY2FuJ3QgcnVuIHRoZSB0YXJnZXQncyBjbWRHbyBiaW5hcnkKKyAJCX0KKy0JCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCisgCX0gZWxzZSB7CistCQkvLyBHT09TL0dPQVJDSCBkb2VzIG5vdCBtYXRjaCBHT0hPU1RPUy9HT0hPU1RBUkNILgorLQkJLy8gRmluaXNoIEdPSE9TVE9TL0dPSE9TVEFSQ0ggaW5zdGFsbGF0aW9uIGFuZCB0aGVuCistCQkvLyBydW4gR09PUy9HT0FSQ0ggaW5zdGFsbGF0aW9uLgorLQkJdGltZWxvZygiYnVpbGQiLCAiaG9zdCB0b29sY2hhaW4iKQorLQkJaWYgdmZsYWcgPiAwIHsKKy0JCQl4cHJpbnRmKCJcbiIpCisrCQlpZiBnb29zID09IG9sZGdvb3MgJiYgZ29hcmNoID09IG9sZGdvYXJjaCB7CisrCQkJLy8gQ29tbW9uIGNhc2UgLSBub3Qgc2V0dGluZyB1cCBmb3IgY3Jvc3MtY29tcGlsYXRpb24uCisrCQkJdGltZWxvZygiYnVpbGQiLCAidG9vbGNoYWluIikKKysJCQlpZiB2ZmxhZyA+IDAgeworKwkJCQl4cHJpbnRmKCJcbiIpCisrCQkJfQorKwkJCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCisrCQl9IGVsc2UgeworKwkJCS8vIEdPT1MvR09BUkNIIGRvZXMgbm90IG1hdGNoIEdPSE9TVE9TL0dPSE9TVEFSQ0guCisrCQkJLy8gRmluaXNoIEdPSE9TVE9TL0dPSE9TVEFSQ0ggaW5zdGFsbGF0aW9uIGFuZCB0aGVuCisrCQkJLy8gcnVuIEdPT1MvR09BUkNIIGluc3RhbGxhdGlvbi4KKysJCQl0aW1lbG9nKCJidWlsZCIsICJob3N0IHRvb2xjaGFpbiIpCisrCQkJaWYgdmZsYWcgPiAwIHsKKysJCQkJeHByaW50ZigiXG4iKQorKwkJCX0KKysJCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIGhvc3QsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQorKwkJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgInN0ZCIsICJjbWQiKQorKwkJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKKysJCQljaGVja05vdFN0YWxlKGNtZEdvLCAic3RkIiwgImNtZCIpCisrCisrCQkJdGltZWxvZygiYnVpbGQiLCAidGFyZ2V0IHRvb2xjaGFpbiIpCisrCQkJaWYgdmZsYWcgPiAwIHsKKysJCQkJeHByaW50ZigiXG4iKQorKwkJCX0KKysJCQlnb29zID0gb2xkZ29vcworKwkJCWdvYXJjaCA9IG9sZGdvYXJjaAorKwkJCW9zLlNldGVudigiR09PUyIsIGdvb3MpCisrCQkJb3MuU2V0ZW52KCJHT0FSQ0giLCBnb2FyY2gpCisrCQkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKKysJCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIHRhcmdldCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCisgCQl9CistCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIGhvc3QsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQorIAkJZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCisgCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCisgCQljaGVja05vdFN0YWxlKGNtZEdvLCAic3RkIiwgImNtZCIpCistCistCQl0aW1lbG9nKCJidWlsZCIsICJ0YXJnZXQgdG9vbGNoYWluIikKKy0JCWlmIHZmbGFnID4gMCB7CistCQkJeHByaW50ZigiXG4iKQorKwkJaWYgZGVidWcgeworKwkJCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksICItVj1mdWxsIikKKysJCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvYnVpbGRpZCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvcGtnLyVzXyVzL3J1bnRpbWUvaW50ZXJuYWwvc3lzLmEiLCBnb3Jvb3QsIGdvb3MsIGdvYXJjaCkpCisrCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgYXBwZW5kKHRvb2xjaGFpbiwgInJ1bnRpbWUvaW50ZXJuYWwvc3lzIikuLi4pCisrCQkJY29weWZpbGUocGF0aGYoIiVzL2NvbXBpbGU0IiwgdG9vbGRpciksIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksIHdyaXRlRXhlYykKKyAJCX0KKy0JCWdvb3MgPSBvbGRnb29zCistCQlnb2FyY2ggPSBvbGRnb2FyY2gKKy0JCW9zLlNldGVudigiR09PUyIsIGdvb3MpCistCQlvcy5TZXRlbnYoIkdPQVJDSCIsIGdvYXJjaCkKKy0JCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCistCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIHRhcmdldCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCistCX0KKy0JZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCistCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKKy0JY2hlY2tOb3RTdGFsZShjbWRHbywgInN0ZCIsICJjbWQiKQorLQlpZiBkZWJ1ZyB7CistCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCAiLVY9ZnVsbCIpCistCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvYnVpbGRpZCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvcGtnLyVzXyVzL3J1bnRpbWUvaW50ZXJuYWwvc3lzLmEiLCBnb3Jvb3QsIGdvb3MsIGdvYXJjaCkpCistCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCBhcHBlbmQodG9vbGNoYWluLCAicnVudGltZS9pbnRlcm5hbC9zeXMiKS4uLikKKy0JCWNvcHlmaWxlKHBhdGhmKCIlcy9jb21waWxlNCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCB3cml0ZUV4ZWMpCisgCX0KKyAKKyAJLy8gQ2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gbmV3IGZpbGVzIGluICRHT1JPT1QvYmluIG90aGVyIHRoYW4KK0BAIC0xMzA1LDcgKzEzNzQsMTEgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7CisgCX0KKyAKKyAJLy8gUmVtb3ZlIGdvX2Jvb3RzdHJhcCBub3cgdGhhdCB3ZSdyZSBkb25lLgorLQl4cmVtb3ZlKHBhdGhmKCIlcy9nb19ib290c3RyYXAiLCB0b29sZGlyKSkKKysJLy8gRXhjZXB0IHRoYXQgZm9yIHNwbGl0IGhvc3QvdGFyZ2V0IGNyb3NzLWJ1aWxkcywgd2UgbmVlZCB0bworKwkvLyBrZWVwIGl0LgorKwlpZiAhIGNyb3NzQnVpbGQgeworKwkJeHJlbW92ZShwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgdG9vbGRpcikpCisrCX0KKyAKKyAJLy8gUHJpbnQgdHJhaWxpbmcgYmFubmVyIHVubGVzcyBpbnN0cnVjdGVkIG90aGVyd2lzZS4KKyAJaWYgIW5vQmFubmVyIHsKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA3LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDctY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzI0Mjc2MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA3LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoCkBAIC0wLDAgKzEsMTA4IEBACitGcm9tIGY5OGFhMjg3OTQxNDE3MjI2YTZlNGY3ODc1OWY4YTVlMTk3MzJjZGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorRGF0ZTogRnJpLCAyIE1hciAyMDE4IDA2OjAwOjIwIC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggNy85XSBjbWQvZ286IG1ha2UgR09ST09UIHByZWNpb3VzIGJ5IGRlZmF1bHQKKworVGhlIGdvIGJ1aWxkIHRvb2wgbm9ybWFsbHkgcmVidWlsZHMgd2hhdGV2ZXIgaXQgZGV0ZWN0cyBpcworc3RhbGUuICBUaGlzIGNhbiBiZSBhIHByb2JsZW0gd2hlbiBHT1JPT1QgaXMgaW50ZW5kZWQgdG8KK2JlIHJlYWQtb25seSBhbmQgdGhlIGdvIHJ1bnRpbWUgaGFzIGJlZW4gYnVpbHQgYXMgYSBzaGFyZWQKK2xpYnJhcnksIHNpbmNlIHdlIGRvbid0IHdhbnQgZXZlcnkgYXBwbGljYXRpb24gdG8gYmUgcmVidWlsZGluZwordGhlIHNoYXJlZCBydW50aW1lIC0gcGFydGljdWxhcmx5IGluIGNyb3NzLWJ1aWxkL3BhY2thZ2luZworc2V0dXBzLCBzaW5jZSB0aGF0IHdvdWxkIGxlYWQgdG8gJ2FiaSBtaXNtYXRjaCcgcnVudGltZSBlcnJvcnMuCisKK1RoaXMgcGF0Y2ggcHJldmVudHMgdGhlIGluc3RhbGwgYW5kIGxpbmtzaGFyZWQgYWN0aW9ucyBmcm9tCitpbnN0YWxsaW5nIHRvIEdPUk9PVCB1bmxlc3Mgb3ZlcnJpZGRlbiB3aXRoIHRoZSBHT1JPT1RfT1ZFUlJJREUKK2Vudmlyb25tZW50IHZhcmlhYmxlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorLS0tCisgc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2FjdGlvbi5nbyB8ICAzICsrKworIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbyAgfCAgNSArKysrKworIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvICAgfCAyNSArKysrKysrKysrKysrKysrKysrKysrKysrCisgMyBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2FjdGlvbi5nbworaW5kZXggOWYxZjhmOGE1MC4uYTM4Mjg4MDQ3NCAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28KK0BAIC01NjMsNiArNTYzLDkgQEAgZnVuYyAoYiAqQnVpbGRlcikgYWRkVHJhbnNpdGl2ZUxpbmtEZXBzKGEsIGExICpBY3Rpb24sIHNobGliIHN0cmluZykgeworIAkJCWlmIHAxID09IG5pbCB8fCBwMS5TaGxpYiA9PSAiIiB8fCBoYXZlU2hsaWJbZmlsZXBhdGguQmFzZShwMS5TaGxpYildIHsKKyAJCQkJY29udGludWUKKyAJCQl9CisrCQkJaWYgZ29Sb290UHJlY2lvdXMgJiYgKHAxLlN0YW5kYXJkIHx8IHAxLkdvcm9vdCkgeworKwkJCQljb250aW51ZQorKwkJCX0KKyAJCQloYXZlU2hsaWJbZmlsZXBhdGguQmFzZShwMS5TaGxpYildID0gdHJ1ZQorIAkJCS8vIFRPRE8ocnNjKTogVGhlIHVzZSBvZiBNb2RlSW5zdGFsbCBoZXJlIGlzIHN1c3BlY3QsIGJ1dCBpZiB3ZSBvbmx5IGRvIE1vZGVCdWlsZCwKKyAJCQkvLyB3ZSdsbCBlbmQgdXAgYnVpbGRpbmcgYW4gb3ZlcmFsbCBsaWJyYXJ5IG9yIGV4ZWN1dGFibGUgdGhhdCBkZXBlbmRzIGF0IHJ1bnRpbWUKK2RpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KK2luZGV4IDU3YjdiMDA4NzkuLmUyYmE5NTQyMGUgMTAwNjQ0CistLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbworQEAgLTE0Myw2ICsxNDMsNyBAQCBTZWUgYWxzbzogZ28gaW5zdGFsbCwgZ28gZ2V0LCBnbyBjbGVhbi4KKyB9CisgCisgY29uc3QgY29uY3VycmVudEdDQmFja2VuZENvbXBpbGF0aW9uRW5hYmxlZEJ5RGVmYXVsdCA9IHRydWUKKyt2YXIgZ29Sb290UHJlY2lvdXMgYm9vbCA9IHRydWUKKyAKKyBmdW5jIGluaXQoKSB7CisgCS8vIGJyZWFrIGluaXQgY3ljbGUKK0BAIC0xNTYsNiArMTU3LDEwIEBAIGZ1bmMgaW5pdCgpIHsKKyAKKyAJQWRkQnVpbGRGbGFncyhDbWRCdWlsZCkKKyAJQWRkQnVpbGRGbGFncyhDbWRJbnN0YWxsKQorKworKwlpZiB4IDo9IG9zLkdldGVudigiR09ST09UX09WRVJSSURFIik7IHggIT0gIiIgeworKwkJZ29Sb290UHJlY2lvdXMgPSBmYWxzZQorKwl9CisgfQorIAorIC8vIE5vdGUgdGhhdCBmbGFncyBjb25zdWx0ZWQgYnkgb3RoZXIgcGFydHMgb2YgdGhlIGNvZGUKK2RpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCitpbmRleCBiMGY2YjQ1NjQ3Li5jOGYyNjZhOGFkIDEwMDY0NAorLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCitAQCAtMzcxLDYgKzM3MSwyMyBAQCBmdW5jIChiICpCdWlsZGVyKSBidWlsZChhICpBY3Rpb24pIChlcnIgZXJyb3IpIHsKKyAJCXJldHVybiBmbXQuRXJyb3JmKCJtaXNzaW5nIG9yIGludmFsaWQgYmluYXJ5LW9ubHkgcGFja2FnZSIpCisgCX0KKyAKKysJaWYgZ29Sb290UHJlY2lvdXMgJiYgKGEuUGFja2FnZS5TdGFuZGFyZCB8fCBhLlBhY2thZ2UuR29yb290KSB7CisrCQlfLCBlcnIgOj0gb3MuU3RhdChhLlBhY2thZ2UuVGFyZ2V0KQorKwkJaWYgZXJyID09IG5pbCB7CisrCQkJYS5idWlsdCA9IGEuUGFja2FnZS5UYXJnZXQKKysJCQlhLlRhcmdldCA9IGEuUGFja2FnZS5UYXJnZXQKKysJCQlhLmJ1aWxkSUQgPSBiLmZpbGVIYXNoKGEuUGFja2FnZS5UYXJnZXQpCisrCQkJYS5QYWNrYWdlLlN0YWxlID0gZmFsc2UKKysJCQlhLlBhY2thZ2UuU3RhbGVSZWFzb24gPSAiR09ST09ULXJlc2lkZW50IHBhY2thZ2UiCisrCQkJcmV0dXJuIG5pbAorKwkJfQorKwkJaWYgYi5Db21wdXRlU3RhbGVPbmx5IHsKKysJCQlhLlBhY2thZ2UuU3RhbGUgPSB0cnVlCisrCQkJYS5QYWNrYWdlLlN0YWxlUmVhc29uID0gIm1pc3Npbmcgb3IgaW52YWxpZCBHT1JPT1QtcmVzaWRlbnQgcGFja2FnZSIKKysJCQlyZXR1cm4gbmlsCisrCQl9CisrCX0KKysKKyAJaWYgZXJyIDo9IGIuTWtkaXIoYS5PYmpkaXIpOyBlcnIgIT0gbmlsIHsKKyAJCXJldHVybiBlcnIKKyAJfQorQEAgLTEwOTcsNiArMTExNCwxNCBAQCBmdW5jIEJ1aWxkSW5zdGFsbEZ1bmMoYiAqQnVpbGRlciwgYSAqQWN0aW9uKSAoZXJyIGVycm9yKSB7CisgCQlyZXR1cm4gbmlsCisgCX0KKyAKKysJaWYgZ29Sb290UHJlY2lvdXMgJiYgYS5QYWNrYWdlICE9IG5pbCB7CisrCQlwIDo9IGEuUGFja2FnZQorKwkJaWYgcC5TdGFuZGFyZCB8fCBwLkdvcm9vdCB7CisrCQkJZXJyIDo9IGZtdC5FcnJvcmYoImF0dGVtcHRpbmcgdG8gaW5zdGFsbCBwYWNrYWdlICVzIGludG8gcmVhZC1vbmx5IEdPUk9PVCIsIHAuSW1wb3J0UGF0aCkKKysJCQlyZXR1cm4gZXJyCisrCQl9CisrCX0KKysKKyAJaWYgZXJyIDo9IGIuTWtkaXIoYS5PYmpkaXIpOyBlcnIgIT0gbmlsIHsKKyAJCXJldHVybiBlcnIKKyAJfQorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDgtY21kLWludGVybmFsLW9iai1hcm02NC1maXgtYnJhbmNoLXRvby1mYXItd2l0aC1UQlotbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA4LWNtZC1pbnRlcm5hbC1vYmotYXJtNjQtZml4LWJyYW5jaC10b28tZmFyLXdpdGgtVEJaLWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWU3NTQxNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA4LWNtZC1pbnRlcm5hbC1vYmotYXJtNjQtZml4LWJyYW5jaC10b28tZmFyLXdpdGgtVEJaLWwucGF0Y2gKQEAgLTAsMCArMSw1OCBAQAorRnJvbSA0MWI5MGVkN2FmMTBhMDcxY2NmZWVkZTZhNDI5ZTBkODA1MTg0MzZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlcnJ5IFpoYW5nIDxjaGVycnl5ekBnb29nbGUuY29tPgorRGF0ZTogU2F0LCAxNyBGZWIgMjAxOCAxMDozMTozOSAtMDUwMAorU3ViamVjdDogW1BBVENIIDgvOV0gY21kL2ludGVybmFsL29iai9hcm02NDogZml4IGJyYW5jaC10b28tZmFyIHdpdGggVEJaIGxpa2UKKyBpbnN0cnVjdGlvbnMKKworVGhlIGNvbXBpbGVyIG5vdyBlbWl0cyBUQlogbGlrZSBpbnN0cnVjdGlvbnMsIGJ1dCB0aGUgYXNzZW1ibGVyJ3MKK3Rvby1mYXItYnJhbmNoIHBhdGNoIGNvZGUgZGlkbid0IGluY2x1ZGUgdGhhdCBjYXNlLiBBZGQgaXQuCisKK0ZpeGVzICMyMzg4OS4KKworQ2hhbmdlLUlkOiBJYjc1ZjkyNTBjNjYwYjlmYjY1MjgzNWZiYzgzMjYzYTVkNTA3M2RjNQorLS0tCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCisgc3JjL2NtZC9pbnRlcm5hbC9vYmovYXJtNjQvYXNtNy5nbyAgICAgfCAxMSArKysrKysrKystLQorIHNyYy9jbWQvaW50ZXJuYWwvb2JqL2FybTY0L2FzbV90ZXN0LmdvIHwgIDEgKworIDIgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jbWQvaW50ZXJuYWwvb2JqL2FybTY0L2FzbTcuZ28gYi9zcmMvY21kL2ludGVybmFsL29iai9hcm02NC9hc203LmdvCitpbmRleCBjYTgxMjM4YzkzLi5iMWVlNTUyNDg5IDEwMDY0NAorLS0tIGEvc3JjL2NtZC9pbnRlcm5hbC9vYmovYXJtNjQvYXNtNy5nbworKysrIGIvc3JjL2NtZC9pbnRlcm5hbC9vYmovYXJtNjQvYXNtNy5nbworQEAgLTY5Niw5ICs2OTYsMTYgQEAgZnVuYyBzcGFuNyhjdHh0ICpvYmouTGluaywgY3Vyc3ltICpvYmouTFN5bSwgbmV3cHJvZyBvYmouUHJvZ0FsbG9jKSB7CisgCQkJbyA9IGMub3Bsb29rKHApCisgCisgCQkJLyogdmVyeSBsYXJnZSBicmFuY2hlcyAqLworLQkJCWlmIChvLnR5cGVfID09IDcgfHwgby50eXBlXyA9PSAzOSkgJiYgcC5QY29uZCAhPSBuaWwgeyAvLyA3OiBCRVEgYW5kIGxpa2UsIDM5OiBDQlogYW5kIGxpa2UKKysJCQlpZiAoby50eXBlXyA9PSA3IHx8IG8udHlwZV8gPT0gMzkgfHwgby50eXBlXyA9PSA0MCkgJiYgcC5QY29uZCAhPSBuaWwgeyAvLyA3OiBCRVEgYW5kIGxpa2UsIDM5OiBDQlogYW5kIGxpa2UsIDQwOiBUQlogYW5kIGxpa2UKKyAJCQkJb3R4dCA6PSBwLlBjb25kLlBjIC0gcGMKKy0JCQkJaWYgb3R4dCA8PSAtKDE8PDE4KSsxMCB8fCBvdHh0ID49ICgxPDwxOCktMTAgeworKwkJCQl2YXIgdG9vZmFyIGJvb2wKKysJCQkJc3dpdGNoIG8udHlwZV8geworKwkJCQljYXNlIDcsIDM5OiAvLyBicmFuY2ggaW5zdHJ1Y3Rpb24gZW5jb2RlcyAxOSBiaXRzCisrCQkJCQl0b29mYXIgPSBvdHh0IDw9IC0oMTw8MjApKzEwIHx8IG90eHQgPj0gKDE8PDIwKS0xMAorKwkJCQljYXNlIDQwOiAvLyBicmFuY2ggaW5zdHJ1Y3Rpb24gZW5jb2RlcyAxNCBiaXRzCisrCQkJCQl0b29mYXIgPSBvdHh0IDw9IC0oMTw8MTUpKzEwIHx8IG90eHQgPj0gKDE8PDE1KS0xMAorKwkJCQl9CisrCQkJCWlmIHRvb2ZhciB7CisgCQkJCQlxIDo9IGMubmV3cHJvZygpCisgCQkJCQlxLkxpbmsgPSBwLkxpbmsKKyAJCQkJCXAuTGluayA9IHEKK2RpZmYgLS1naXQgYS9zcmMvY21kL2ludGVybmFsL29iai9hcm02NC9hc21fdGVzdC5nbyBiL3NyYy9jbWQvaW50ZXJuYWwvb2JqL2FybTY0L2FzbV90ZXN0LmdvCitpbmRleCAzNjljNDhmNTEwLi4zZTBjOWMxM2E2IDEwMDY0NAorLS0tIGEvc3JjL2NtZC9pbnRlcm5hbC9vYmovYXJtNjQvYXNtX3Rlc3QuZ28KKysrKyBiL3NyYy9jbWQvaW50ZXJuYWwvb2JqL2FybTY0L2FzbV90ZXN0LmdvCitAQCAtNTIsNiArNTIsNyBAQCBmdW5jIFRlc3RMYXJnZSh0ICp0ZXN0aW5nLlQpIHsKKyAvLyBnZW4gZ2VuZXJhdGVzIGEgdmVyeSBsYXJnZSBwcm9ncmFtLCB3aXRoIGEgdmVyeSBmYXIgY29uZGl0aW9uYWwgYnJhbmNoLgorIGZ1bmMgZ2VuKGJ1ZiAqYnl0ZXMuQnVmZmVyKSB7CisgCWZtdC5GcHJpbnRsbihidWYsICJURVhUIGYoU0IpLDAsJDAtMCIpCisrCWZtdC5GcHJpbnRsbihidWYsICJUQlogJDUsIFIwLCBsYWJlbCIpCisgCWZtdC5GcHJpbnRsbihidWYsICJDQlogUjAsIGxhYmVsIikKKyAJZm10LkZwcmludGxuKGJ1ZiwgIkJFUSBsYWJlbCIpCisgCWZvciBpIDo9IDA7IGkgPCAxPDwxOTsgaSsrIHsKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA5LWxkLXJlcGxhY2UtZ2xpYmMtZHluYW1pYy1saW5rZXItd2l0aC1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDktbGQtcmVwbGFjZS1nbGliYy1keW5hbWljLWxpbmtlci13aXRoLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZiMDBiMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA5LWxkLXJlcGxhY2UtZ2xpYmMtZHluYW1pYy1saW5rZXItd2l0aC1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMTMwIEBACitGcm9tIGY1NzVkODVjNGJkOWIyOTAzMjIzZDZjMGRjYzM4YTEyNzc1ZDU4MmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorRGF0ZTogU3VuLCAxOCBGZWIgMjAxOCAwODoyNDowNSAtMDgwMAorU3ViamVjdDogW1BBVENIIDkvOV0gbGQ6IHJlcGxhY2UgZ2xpYmMgZHluYW1pYyBsaW5rZXIgd2l0aCBtdXNsCisKK1Jld29yayBvZiBwYXRjaCBieSBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorZm9yIGdvIDEuMTAuICBTaG91bGQgYmUgYXBwbGllZCBjb25kaXRpb25hbGx5IG9uCittdXNsIGJlaW5nIHRoZSBzeXN0ZW0gQyBsaWJyYXJ5LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW1JlYWwgZml4IHNob3VsZCBiZSBwb3J0YWJsZSBhY3Jvc3MgbGliY3NdCisKK1NpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CistLS0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvICB8IDIgKy0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbyAgICB8IDIgKy0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvICB8IDIgKy0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwcy9vYmouZ28gICB8IDIgKy0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwczY0L29iai5nbyB8IDIgKy0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvcHBjNjQvb2JqLmdvICB8IDIgKy0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvICB8IDIgKy0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbyAgICB8IDIgKy0KKyA4IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCitpbmRleCA4N2U4MDkxNjZhLi5mNTIyYTYzMDM0IDEwMDY0NAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FtZDY0L29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FtZDY0L29iai5nbworQEAgLTYyLDcgKzYyLDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgeworIAkJUEVyZWxvYzE6ICAgICAgICAgcGVyZWxvYzEsCisgCQlUTFNJRXRvTEU6ICAgICAgICB0bHNJRXRvTEUsCisgCistCQlMaW51eGR5bmxkOiAgICAgIi9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMiIsCisrCQlMaW51eGR5bmxkOiAgICAgIi9saWI2NC9sZC1tdXNsLXg4Ni02NC5zby4xIiwKKyAJCUZyZWVic2RkeW5sZDogICAiL2xpYmV4ZWMvbGQtZWxmLnNvLjEiLAorIAkJT3BlbmJzZGR5bmxkOiAgICIvdXNyL2xpYmV4ZWMvbGQuc28iLAorIAkJTmV0YnNkZHlubGQ6ICAgICIvbGliZXhlYy9sZC5lbGZfc28iLAorZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28KK2luZGV4IGRhMTZmOTIzNDUuLmZkMTQ5NDBlZGUgMTAwNjQ0CistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28KK0BAIC01OCw3ICs1OCw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKKyAJCUdlbnRleHQ6ICAgICAgICAgIGdlbnRleHQsCisgCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKKyAKKy0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYi9sZC1saW51eC5zby4zIiwgLy8gMiBmb3IgT0FCSSwgMyBmb3IgRUFCSQorKwkJTGludXhkeW5sZDogICAgICIvbGliL2xkLW11c2wtYXJtaGYuc28uMSIsCisgCQlGcmVlYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC1lbGYuc28uMSIsCisgCQlPcGVuYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC5zbyIsCisgCQlOZXRic2RkeW5sZDogICAgIi9saWJleGVjL2xkLmVsZl9zbyIsCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28KK2luZGV4IDZiMzg2YWQ3MzcuLjk5ODYzNzEyY2MgMTAwNjQ0CistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCisrKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCitAQCAtNTcsNyArNTcsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAorIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCistCQlMaW51eGR5bmxkOiAiL2xpYi9sZC1saW51eC1hYXJjaDY0LnNvLjEiLAorKwkJTGludXhkeW5sZDogIi9saWIvbGQtbXVzbC1hYXJjaDY0LnNvLjEiLAorIAorIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAorIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAorZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbworaW5kZXggYzVkMzQ1MWMzOS4uZmQ4NWU2MzY4ZCAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvCitAQCAtNjAsNyArNjAsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAorIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCistCQlMaW51eGR5bmxkOiAiL2xpYi9sZC5zby4xIiwKKysJCUxpbnV4ZHlubGQ6ICIvbGliL2xkLW11c2wtbWlwc2xlLnNvLjEiLAorIAorIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAorIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAorZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28KK2luZGV4IDgzOTc0ZTViNTYuLjA5NzIyNGY2ZGEgMTAwNjQ0CistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwczY0L29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28KK0BAIC01OSw3ICs1OSw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKKyAJCUdlbnRleHQ6ICAgICAgICAgIGdlbnRleHQsCisgCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKKyAKKy0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkNjQuc28uMSIsCisrCQlMaW51eGR5bmxkOiAgICAgIi9saWI2NC9sZC1tdXNsLW1pcHM2NGxlLnNvLjEiLAorIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAorIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAorIAkJTmV0YnNkZHlubGQ6ICAgICJYWFgiLAorZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvcHBjNjQvb2JqLmdvCitpbmRleCAyNzNkOWI0MmNiLi5hNTAzYWJlOGVhIDEwMDY0NAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbworQEAgLTYyLDcgKzYyLDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgeworIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCisgCQkvLyBUT0RPKGF1c3Rpbik6IEFCSSB2MSB1c2VzIC91c3IvbGliL2xkLnNvLjEsCistCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkNjQuc28uMSIsCisrCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkLW11c2wtcG93ZXJwYzY0bGUuc28uMSIsCisgCisgCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCisgCQlPcGVuYnNkZHlubGQ6ICAgIlhYWCIsCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9zMzkweC9vYmouZ28KK2luZGV4IDlhYzdlYjgyMTcuLjM4MjVmZjdhYmUgMTAwNjQ0CistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCisrKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCitAQCAtNTcsNyArNTcsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAorIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCistCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkNjQuc28uMSIsCisrCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkLW11c2wtczM5MHguc28uMSIsCisgCisgCQkvLyBub3QgcmVsZXZhbnQgZm9yIHMzOTB4CisgCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbworaW5kZXggNmE3NDRkYzA0ZS4uZDgxZjM5MjU0OSAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvCisrKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbworQEAgLTU4LDcgKzU4LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgeworIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCQlQRXJlbG9jMTogICAgICAgICBwZXJlbG9jMSwKKyAKKy0JCUxpbnV4ZHlubGQ6ICAgIi9saWIvbGQtbGludXguc28uMiIsCisrCQlMaW51eGR5bmxkOiAgICIvbGliL2xkLW11c2wtaTM4Ni5zby4xIiwKKyAJCUZyZWVic2RkeW5sZDogIi91c3IvbGliZXhlYy9sZC1lbGYuc28uMSIsCisgCQlPcGVuYnNkZHlubGQ6ICIvdXNyL2xpYmV4ZWMvbGQuc28iLAorIAkJTmV0YnNkZHlubGQ6ICAiL3Vzci9saWJleGVjL2xkLmVsZl9zbyIsCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS5pbmMKaW5kZXggMjgyMzMwNC4uYTk0MmY2ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LmluYwpAQCAtMSw3ICsxLDcgQEAKIHJlcXVpcmUgZ28tY29tbW9uLmluYwogCiBHT19CQVNFVkVSU0lPTiA9ICIxLjkiCi1HT19NSU5PUiA9ICIuNCIKK0dPX01JTk9SID0gIi42IgogUFYgLj0gIiR7R09fTUlOT1J9IgogCiBGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtGSUxFX0RJUk5BTUV9L2dvLSR7R09fQkFTRVZFUlNJT059OiIKQEAgLTIyLDUgKzIyLDUgQEAKICIKIFNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovL3NldC1leHRlcm5hbC1saW5rZXIucGF0Y2giCiAKLVNSQ19VUklbbWFpbi5tZDVzdW1dID0gIjY4MTY0NDFmZDY2ODBjNjM4NjVjZGQ1Y2I4YmMxOTYwIgotU1JDX1VSSVttYWluLnNoYTI1NnN1bV0gPSAiMDU3M2E4ZGYzMzE2ODk3NzE4NWFhNDQxNzMzMDVlNWEwNDUwZjU1MjEzNjAwZTk0NTQxNjA0Yjc1ZDQ2ZGMwNiIKK1NSQ19VUklbbWFpbi5tZDVzdW1dID0gIjUyYzFhMzA2MzI5MTAzNjU5NzU1MmQzZmVkMGIyOTE3IgorU1JDX1VSSVttYWluLnNoYTI1NnN1bV0gPSAiMzZmNDA1OWJlNjU4ZjdmMDcwOTFlMjdmZTA0YmI5ZTk3YTBjNDgzNmViNDQ2ZTRjNWJhYzNjOTBmZjllNTgyOCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY29tbW9uLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY29tbW9uLmluYwppbmRleCA5YWY2ODczLi4xMWQ1NWM0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNvbW1vbi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jb21tb24uaW5jCkBAIC0xNywxMCArMTcsMTcgQEAKIFNSQ19VUkkgPSAiaHR0cDovL2dvbGFuZy5vcmcvZGwvZ28ke1BWfS5zcmMudGFyLmd6O25hbWU9bWFpbiIKIFMgPSAiJHtXT1JLRElSfS9nbyIKIEIgPSAiJHtTfSIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKVwuc3JjXC50YXIiCiAKIElOSElCSVRfUEFDS0FHRV9ERUJVR19TUExJVCA9ICIxIgogU1NUQVRFX1NDQU5fQ01EID0gInRydWUiCiAKK2V4cG9ydCBHT1JPT1RfT1ZFUlJJREUgPSAiMSIKK2V4cG9ydCBHT1RNUERJUiA/PSAiJHtXT1JLRElSfS9nby10bXAiCitHT1RNUERJUlt2YXJkZXB2YWx1ZV0gPSAiIgorZXhwb3J0IEdPQ0FDSEUgPSAib2ZmIgorZXhwb3J0IENHT19FTkFCTEVEID0gIjEiCisKIGRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKIAlCVUlMRF9DQz0ke0JVSUxEX0NDfQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy1jYW5hZGlhbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuLmluYwppbmRleCA4YWZkYTZiLi5lYTY4Yjg4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuLmluYwpAQCAtNywzNCArNywyOSBAQAogCiBleHBvcnQgR09IT1NUT1MgPSAiJHtCVUlMRF9HT09TfSIKIGV4cG9ydCBHT0hPU1RBUkNIID0gIiR7QlVJTERfR09BUkNIfSIKLWV4cG9ydCBHT0hPU1RPU19DUk9TUyA9ICIke0hPU1RfR09PU30iCi1leHBvcnQgR09IT1NUQVJDSF9DUk9TUyA9ICIke0hPU1RfR09BUkNIfSIKIGV4cG9ydCBHT1JPT1RfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nbyIKIGV4cG9ydCBHT1RPT0xESVJfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS8ke0hPU1RfU1lTfS9nby9wa2cvdG9vbC8ke0JVSUxEX0dPVFVQTEV9IgogZXhwb3J0IEdPUk9PVF9GSU5BTCA9ICIke2xpYmRpcn0vZ28iCi1leHBvcnQgQ0dPX0VOQUJMRUQgPSAiMSIKLWV4cG9ydCBDQ19GT1JfVEFSR0VUID0gIiR7VEFSR0VUX1BSRUZJWH1nY2MiCi1leHBvcnQgQ1hYX0ZPUl9UQVJHRVQgPSAiJHtUQVJHRVRfUFJFRklYfWcrKyIKLUNDID0gIiR7SE9TVF9QUkVGSVh9Z2NjIgotZXhwb3J0IENHT19DRkxBR1MgPSAiLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSAke0hPU1RfQ0NfQVJDSH0gJHtDRkxBR1N9IgotZXhwb3J0IENHT19MREZMQUdTID0gIi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0gJHtIT1NUX0NDX0FSQ0h9ICR7TERGTEFHU30iCi1leHBvcnQgR09fTERGTEFHUyA9ICctbGlua21vZGUgZXh0ZXJuYWwgLWV4dGxkICR7SE9TVF9QUkVGSVh9Z2NjIC1leHRsZGZsYWdzICItLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9ICR7SE9TVF9DQ19BUkNIfSAke0xERkxBR1N9IicKK2V4cG9ydCBDR09fQ0ZMQUdTID0gIiR7Q0ZMQUdTfSIKK2V4cG9ydCBDR09fTERGTEFHUyA9ICIke0xERkxBR1N9IgorZXhwb3J0IEdPX0xERkxBR1MgPSAnLWxpbmttb2RlIGV4dGVybmFsIC1leHRsZCAke0hPU1RfUFJFRklYfWdjYyAtZXh0bGRmbGFncyAiLS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH0gJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9ICR7SE9TVF9DQ19BUkNIfSAke0xERkxBR1N9IicKIAogZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKIAogZG9fY29tcGlsZSgpIHsKLQlleHBvcnQgR09CSU49IiR7Qn0vYmluIgotCXJtIC1yZiAke0dPQklOfSAke0J9L3BrZwotCW1rZGlyICR7R09CSU59CisJZXhwb3J0IENDX0ZPUl8ke0hPU1RfR09PU31fJHtIT1NUX0dPQVJDSH09IiR7SE9TVF9QUkVGSVh9Z2NjIC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9JHtTREtQQVRITkFUSVZFfSAke1NFQ1VSSVRZX05PUElFX0NGTEFHU30iCisJZXhwb3J0IENYWF9GT1JfJHtIT1NUX0dPT1N9XyR7SE9TVF9HT0FSQ0h9PSIke0hPU1RfUFJFRklYfWd4eCAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSR7U0RLUEFUSE5BVElWRX0gJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9IgogCWNkIHNyYwogCS4vbWFrZS5iYXNoIC0taG9zdC1vbmx5IC0tbm8tYmFubmVyCiAJY2QgJHtCfQogfQorZG9fY29tcGlsZVtkaXJzXSA9KyAiJHtHT1RNUERJUn0gJHtCfS9iaW4gJHtCfS9wa2ciCitkb19jb21waWxlW2NsZWFuZGlyc10gKz0gIiR7R09UTVBESVJ9ICR7Qn0vYmluICR7Qn0vcGtnIgogCiAKIG1ha2Vfd3JhcHBlcigpIHsKLSAgICBybSAtZiAke0R9JHtiaW5kaXJ9LyQyCi0gICAgY2F0IDw8RU5EID4ke0R9JHtiaW5kaXJ9LyQyCisJcm0gLWYgJHtEfSR7YmluZGlyfS8kMgorCWNhdCA8PEVORCA+JHtEfSR7YmluZGlyfS8kMgogIyEvYmluL3NoCiBoZXJlPVxgZGlybmFtZSBcJDBcYAogbmF0aXZlX2dvcm9vdD1cYHJlYWRsaW5rIC1mIFwkaGVyZS8uLi8uLi9saWIvJHtUQVJHRVRfU1lTfS9nb1xgCkBAIC00MiwxMSArMzcsMTIgQEAKIGV4cG9ydCBHT09TPSIke1RBUkdFVF9HT09TfSIKIHRlc3QgLW4gIlwkR09BUk0iIHx8IGV4cG9ydCBHT0FSTT0iJHtUQVJHRVRfR09BUk19IgogdGVzdCAtbiAiXCRHTzM4NiIgfHwgZXhwb3J0IEdPMzg2PSIke1RBUkdFVF9HTzM4Nn0iCit0ZXN0IC1uICJcJEdPTUlQUyIgfHwgZXhwb3J0IEdPTUlQUz0iJHtUQVJHRVRfR09NSVBTfSIKIGV4cG9ydCBHT1RPT0xESVI9IlwkbmF0aXZlX2dvcm9vdC9wa2cvdG9vbC8ke0hPU1RfR09UVVBMRX0iCiB0ZXN0IC1uICJcJEdPUk9PVCIgfHwgZXhwb3J0IEdPUk9PVD0iXCRPRUNPUkVfVEFSR0VUX1NZU1JPT1QvJHt0YXJnZXRfbGliZGlyfS9nbyIKIFwkaGVyZS8uLi8uLi9saWIvJHtUQVJHRVRfU1lTfS9nby9iaW4vJDEgIlwkQCIKIEVORAotICAgIGNobW9kICt4ICR7RH0ke2JpbmRpcn0vJDIKKwljaG1vZCAreCAke0R9JHtiaW5kaXJ9LyQyCiB9CiAKIGRvX2luc3RhbGwoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuXzEuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuXzEuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FjOTQ0OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW5fMS4xMC5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgZ28tY3Jvc3MtY2FuYWRpYW4uaW5jCityZXF1aXJlIGdvLSR7UFZ9LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy1jYW5hZGlhbl8xLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuXzEuOS5iYgppbmRleCA3YWM5NDQ5Li4zNjdhOTY3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuXzEuOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuXzEuOS5iYgpAQCAtMSwyICsxLDEyIEBACiByZXF1aXJlIGdvLWNyb3NzLWNhbmFkaWFuLmluYwogcmVxdWlyZSBnby0ke1BWfS5pbmMKKworZXhwb3J0IEdPSE9TVE9TX0NST1NTID0gIiR7SE9TVF9HT09TfSIKK2V4cG9ydCBHT0hPU1RBUkNIX0NST1NTID0gIiR7SE9TVF9HT0FSQ0h9IgorZXhwb3J0IENDX0ZPUl9UQVJHRVQgPSAiJHtIT1NUX1BSRUZJWH1nY2MgLS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH0ke1NES1BBVEhOQVRJVkV9ICR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKK2V4cG9ydCBDWFhfRk9SX1RBUkdFVCA9ICIke0hPU1RfUFJFRklYfWcrKyAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSR7U0RLUEFUSE5BVElWRX0gJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9IgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJZXhwb3J0IEdPQklOPSIke0J9L2JpbiIKKwlleHBvcnQgVE1QRElSPSIkR09UTVBESVIiCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MuaW5jCmluZGV4IDNhYzcyMTEuLjQ0ZjIzMGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MuaW5jCkBAIC0xLDcgKzEsNyBAQAogaW5oZXJpdCBjcm9zcwogCiBQUk9WSURFUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nbyIKLURFUEVORFMgKz0gImdvLW5hdGl2ZSIKK0RFUEVORFMgPSAiZ28tbmF0aXZlIgogCiBQTiA9ICJnby1jcm9zcy0ke1RBUkdFVF9BUkNIfSIKIApAQCAtMTEsNTIgKzExLDUyIEBACiBleHBvcnQgR09BUkNIID0gIiR7VEFSR0VUX0dPQVJDSH0iCiBleHBvcnQgR09BUk0gPSAiJHtUQVJHRVRfR09BUk19IgogZXhwb3J0IEdPMzg2ID0gIiR7VEFSR0VUX0dPMzg2fSIKK2V4cG9ydCBHT01JUFMgPSAiJHtUQVJHRVRfR09NSVBTfSIKIGV4cG9ydCBHT1JPT1RfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nbyIKIGV4cG9ydCBHT1JPT1RfRklOQUwgPSAiJHtsaWJkaXJ9L2dvIgotZXhwb3J0IENHT19FTkFCTEVEID0gIjEiCi1leHBvcnQgQ0NfRk9SX1RBUkdFVD0iJHtUQVJHRVRfUFJFRklYfWdjYyAke1RBUkdFVF9DQ19BUkNIfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgotZXhwb3J0IENYWF9GT1JfVEFSR0VUPSIke1RBUkdFVF9QUkVGSVh9ZysrICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCitleHBvcnQgR09DQUNIRSA9ICJvZmYiCiBDQyA9ICIke0BkLmdldFZhcignQlVJTERfQ0MnKS5zdHJpcCgpfSIKIAogZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKIAogZG9fY29tcGlsZSgpIHsKLSAgICBleHBvcnQgR09CSU49IiR7Qn0vYmluIgotICAgIHJtIC1yZiAke0dPQklOfSAke0J9L3BrZwotICAgIG1rZGlyICR7R09CSU59Ci0gICAgY2Qgc3JjCi0gICAgLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkKLSAgICBjZCAke0J9CisJZXhwb3J0IENDX0ZPUl8ke0dPT1N9XyR7R09BUkNIfT0iJHtUQVJHRVRfUFJFRklYfWdjYyAke1RBUkdFVF9DQ19BUkNIfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorCWV4cG9ydCBDWFhfRk9SXyR7R09PU31fJHtHT0FSQ2h9PSIke1RBUkdFVF9QUkVGSVh9ZysrICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCisJY2Qgc3JjCisJLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkgLS1uby1iYW5uZXIKKwljZCAke0J9CiB9Ci0KK2RvX2NvbXBpbGVbZGlyc10gPSsgIiR7R09UTVBESVJ9ICR7Qn0vYmluICR7Qn0vcGtnIgorZG9fY29tcGlsZVtjbGVhbmRpcnNdICs9ICIke0dPVE1QRElSfSAke0J9L2JpbiAke0J9L3BrZyIKIAogbWFrZV93cmFwcGVyKCkgewotICAgIHJtIC1mICR7RH0ke2JpbmRpcn0vJDIKLSAgICBjYXQgPDxFTkQgPiR7RH0ke2JpbmRpcn0vJDIKKwlybSAtZiAke0R9JHtiaW5kaXJ9LyQyCisJY2F0IDw8RU5EID4ke0R9JHtiaW5kaXJ9LyQyCiAjIS9iaW4vYmFzaAogaGVyZT1cYGRpcm5hbWUgXCQwXGAKIGV4cG9ydCBHT0FSQ0g9IiR7VEFSR0VUX0dPQVJDSH0iCiBleHBvcnQgR09PUz0iJHtUQVJHRVRfR09PU30iCiBleHBvcnQgR09BUk09Ilwke0dPQVJNOi0ke1RBUkdFVF9HT0FSTX19IgogZXhwb3J0IEdPMzg2PSJcJHtHTzM4NjotJHtUQVJHRVRfR08zODZ9fSIKK2V4cG9ydCBHT01JUFM9Ilwke0dPTUlQUzotJHtUQVJHRVRfR09NSVBTfX0iCiBcJGhlcmUvLi4vLi4vbGliLyR7Q1JPU1NfVEFSR0VUX1NZU19ESVJ9L2dvL2Jpbi8kMSAiXCRAIgogRU5ECi0gICAgY2htb2QgK3ggJHtEfSR7YmluZGlyfS8kMgorCWNobW9kICt4ICR7RH0ke2JpbmRpcn0vJDIKIH0KIAogZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28KLSAgICBjcCAtLXByZXNlcnZlPW1vZGUsdGltZXN0YW1wcyAtUiAke0J9L3BrZyAke0R9JHtsaWJkaXJ9L2dvLwotICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nby9zcmMKLSAgICAoY2QgJHtTfS9zcmM7IGZvciBkIGluICo7IGRvIFwKLSAgICAgICAgWyAhIC1kICRkIF0gfHwgY3AgLS1wcmVzZXJ2ZT1tb2RlLHRpbWVzdGFtcHMgLVIgJHtTfS9zcmMvJGQgJHtEfSR7bGliZGlyfS9nby9zcmMvOyBcCi0gICAgZG9uZSkKLSAgICBybSAtcmYgJHtEfSR7bGliZGlyfS9nby9zcmMvcnVudGltZS9wcHJvZi90ZXN0ZGF0YQotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfSAke0R9JHtsaWJkaXJ9L2dvL2JpbgotICAgIGZvciBmIGluICR7Qn0vYmluLyoKLSAgICBkbwotICAgICAgICBiYXNlPWBiYXNlbmFtZSAkZmAKLSAgICAgICAgaW5zdGFsbCAtbTc1NSAkZiAke0R9JHtsaWJkaXJ9L2dvL2JpbgotICAgICAgICBtYWtlX3dyYXBwZXIgJGJhc2UgJHtUQVJHRVRfUFJFRklYfSRiYXNlCi0gICAgZG9uZQorCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nbworCWNwIC0tcHJlc2VydmU9bW9kZSx0aW1lc3RhbXBzIC1SICR7Qn0vcGtnICR7RH0ke2xpYmRpcn0vZ28vCisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L2dvL3NyYworCShjZCAke1N9L3NyYzsgZm9yIGQgaW4gKjsgZG8gXAorCQlbICEgLWQgJGQgXSB8fCBjcCAtLXByZXNlcnZlPW1vZGUsdGltZXN0YW1wcyAtUiAke1N9L3NyYy8kZCAke0R9JHtsaWJkaXJ9L2dvL3NyYy87IFwKKwlkb25lKQorCWZpbmQgJHtEfSR7bGliZGlyfS9nby9zcmMgLWRlcHRoIC10eXBlIGQgLW5hbWUgdGVzdGRhdGEgLWV4ZWMgcm0gLXJmIHt9IFw7CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9ICR7RH0ke2xpYmRpcn0vZ28vYmluCisJZm9yIGYgaW4gJHtCfS9iaW4vKgorCWRvCisJCWJhc2U9YGJhc2VuYW1lICRmYAorCQlpbnN0YWxsIC1tNzU1ICRmICR7RH0ke2xpYmRpcn0vZ28vYmluCisJCW1ha2Vfd3JhcHBlciAkYmFzZSAke1RBUkdFVF9QUkVGSVh9JGJhc2UKKwlkb25lCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBiNWEwMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NfMS4xMC5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgZ28tY3Jvc3MuaW5jCityZXF1aXJlIGdvLSR7UFZ9LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc18xLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuOS5iYgppbmRleCA4MGI1YTAzLi40NzM5YzdkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuOS5iYgpAQCAtMSwyICsxLDEwIEBACiByZXF1aXJlIGdvLWNyb3NzLmluYwogcmVxdWlyZSBnby0ke1BWfS5pbmMKKworZXhwb3J0IENDX0ZPUl9UQVJHRVQgPSAiJHtUQVJHRVRfUFJFRklYfWdjYyAke1RBUkdFVF9DQ19BUkNIfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorZXhwb3J0IENYWF9GT1JfVEFSR0VUID0gIiR7VEFSR0VUX1BSRUZJWH1nKysgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCWV4cG9ydCBHT0JJTj0iJHtCfS9iaW4iCisJZXhwb3J0IFRNUERJUj0iJEdPVE1QRElSIgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nkay5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3Nzc2RrLmluYwppbmRleCBmNjdlNGI5Li40MzkxYjMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3Nzc2RrLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3Nzc2RrLmluYwpAQCAtMTAsMjIgKzEwLDE4IEBACiBleHBvcnQgR09BUkNIID0gIiR7VEFSR0VUX0dPQVJDSH0iCiBleHBvcnQgR09ST09UX0JPT1RTVFJBUCA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28iCiBleHBvcnQgR09ST09UX0ZJTkFMID0gIiR7bGliZGlyfS9nbyIKLWV4cG9ydCBDR09fRU5BQkxFRCA9ICIxIgotZXhwb3J0IENDX0ZPUl9UQVJHRVQ9IiR7VEFSR0VUX1BSRUZJWH1nY2MgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7U0RLUEFUSE5BVElWRX0iCi1leHBvcnQgQ1hYX0ZPUl9UQVJHRVQ9IiR7VEFSR0VUX1BSRUZJWH1nKysgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7U0RLUEFUSE5BVElWRX0iCi1leHBvcnQgR09fSU5TVEFMTCA9ICJjbWQiCi1DQyA9ICIke0BkLmdldFZhcignQlVJTERfQ0MnKS5zdHJpcCgpfSIKIAogZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKIAogZG9fY29tcGlsZSgpIHsKLQlleHBvcnQgR09CSU49IiR7Qn0vYmluIgotCXJtIC1yZiAke0dPQklOfSAke0J9L3BrZwotCW1rZGlyICR7R09CSU59CisJZXhwb3J0IENDX0ZPUl8ke1RBUkdFVF9HT09TfV8ke1RBUkdFVF9HT0FSQ0h9PSIke1RBUkdFVF9QUkVGSVh9Z2NjICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0ke1NES1BBVEhOQVRJVkV9IgorCWV4cG9ydCBDWFhfRk9SXyR7VEFSR0VUX0dPT1N9XyR7VEFSR0VUX0dPQVJDSH09IiR7VEFSR0VUX1BSRUZJWH1nKysgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7U0RLUEFUSE5BVElWRX0iCiAJY2Qgc3JjCi0JLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkKKwkuL21ha2UuYmFzaCAtLWhvc3Qtb25seSAtLW5vLWJhbm5lcgogCWNkICR7Qn0KIH0KK2RvX2NvbXBpbGVbZGlyc10gPSsgIiR7R09UTVBESVJ9ICR7Qn0vYmluICR7Qn0vcGtnIgorZG9fY29tcGlsZVtjbGVhbmRpcnNdICs9ICIke0dPVE1QRElSfSAke0J9L2JpbiAke0J9L3BrZyIKIAogbWFrZV93cmFwcGVyKCkgewogICAgIHJtIC1mICR7RH0ke2JpbmRpcn0vJDIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS4xMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODU3YzhhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nka18xLjEwLmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBnby1jcm9zc3Nkay5pbmMKK3JlcXVpcmUgZ28tJHtQVn0uaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3Nzc2RrXzEuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS45LmJiCmluZGV4IDE4NTdjOGEuLjNhYzYyOWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS45LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS45LmJiCkBAIC0xLDIgKzEsMTEgQEAKIHJlcXVpcmUgZ28tY3Jvc3NzZGsuaW5jCiByZXF1aXJlIGdvLSR7UFZ9LmluYworCitleHBvcnQgQ0NfRk9SX1RBUkdFVCA9ICIke1RBUkdFVF9QUkVGSVh9Z2NjICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCitleHBvcnQgQ1hYX0ZPUl9UQVJHRVQgPSAiJHtUQVJHRVRfUFJFRklYfWcrKyAke1RBUkdFVF9DQ19BUkNIfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorZXhwb3J0IEdPX0lOU1RBTEwgPSAiY21kIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJZXhwb3J0IEdPQklOPSIke0J9L2JpbiIKKwlleHBvcnQgVE1QRElSPSIkR09UTVBESVIiCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWRlcC8wMDAxLUFkZC1zdXBwb3J0LWZvci1taXBzLW1pcHM2NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwLzAwMDEtQWRkLXN1cHBvcnQtZm9yLW1pcHMtbWlwczY0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ZWM5ODcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWRlcC8wMDAxLUFkZC1zdXBwb3J0LWZvci1taXBzLW1pcHM2NC5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIGYwZmI4MDYwNDM4NWFlMzI2NmE0NzI2MDFlZjY4NTg5NmI0Y2MwYWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBWbGFkaW1pciBTdGVmYW5vdmljIDx2bGFkaW1pci5zdGVmYW5vdmljQGltZ3RlYy5jb20+CitEYXRlOiBGcmksIDE3IEZlYiAyMDE3IDIwOjQ0OjQzICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBzdXBwb3J0IGZvciBtaXBzLCBtaXBzNjQKKworLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworIHZlbmRvci9naXRodWIuY29tL2JvbHRkYi9ib2x0L2JvbHRfbWlwczY0eC5nbyB8IDEyICsrKysrKysrKysrKworIHZlbmRvci9naXRodWIuY29tL2JvbHRkYi9ib2x0L2JvbHRfbWlwc3guZ28gICB8IDEyICsrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCB2ZW5kb3IvZ2l0aHViLmNvbS9ib2x0ZGIvYm9sdC9ib2x0X21pcHM2NHguZ28KKyBjcmVhdGUgbW9kZSAxMDA2NDQgdmVuZG9yL2dpdGh1Yi5jb20vYm9sdGRiL2JvbHQvYm9sdF9taXBzeC5nbworCitkaWZmIC0tZ2l0IGEvdmVuZG9yL2dpdGh1Yi5jb20vYm9sdGRiL2JvbHQvYm9sdF9taXBzNjR4LmdvIGIvdmVuZG9yL2dpdGh1Yi5jb20vYm9sdGRiL2JvbHQvYm9sdF9taXBzNjR4LmdvCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAuLjEzNGI1NzhiCistLS0gL2Rldi9udWxsCisrKysgYi92ZW5kb3IvZ2l0aHViLmNvbS9ib2x0ZGIvYm9sdC9ib2x0X21pcHM2NHguZ28KK0BAIC0wLDAgKzEsMTIgQEAKKysvLyArYnVpbGQgbWlwczY0IG1pcHM2NGxlCisrCisrcGFja2FnZSBib2x0CisrCisrLy8gbWF4TWFwU2l6ZSByZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1tYXAgc2l6ZSBzdXBwb3J0ZWQgYnkgQm9sdC4KKytjb25zdCBtYXhNYXBTaXplID0gMHg4MDAwMDAwMDAwIC8vIDUxMkdCCisrCisrLy8gbWF4QWxsb2NTaXplIGlzIHRoZSBzaXplIHVzZWQgd2hlbiBjcmVhdGluZyBhcnJheSBwb2ludGVycy4KKytjb25zdCBtYXhBbGxvY1NpemUgPSAweDdGRkZGRkZGCisrCisrLy8gQXJlIHVuYWxpZ25lZCBsb2FkL3N0b3JlcyBicm9rZW4gb24gdGhpcyBhcmNoPworK3ZhciBicm9rZW5VbmFsaWduZWQgPSBmYWxzZQorZGlmZiAtLWdpdCBhL3ZlbmRvci9naXRodWIuY29tL2JvbHRkYi9ib2x0L2JvbHRfbWlwc3guZ28gYi92ZW5kb3IvZ2l0aHViLmNvbS9ib2x0ZGIvYm9sdC9ib2x0X21pcHN4LmdvCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAuLmQ1ZWNiMDU5CistLS0gL2Rldi9udWxsCisrKysgYi92ZW5kb3IvZ2l0aHViLmNvbS9ib2x0ZGIvYm9sdC9ib2x0X21pcHN4LmdvCitAQCAtMCwwICsxLDEyIEBACisrLy8gK2J1aWxkIG1pcHMgbWlwc2xlCisrCisrcGFja2FnZSBib2x0CisrCisrLy8gbWF4TWFwU2l6ZSByZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1tYXAgc2l6ZSBzdXBwb3J0ZWQgYnkgQm9sdC4KKytjb25zdCBtYXhNYXBTaXplID0gMHg0MDAwMDAwMCAvLyAxR0IKKysKKysvLyBtYXhBbGxvY1NpemUgaXMgdGhlIHNpemUgdXNlZCB3aGVuIGNyZWF0aW5nIGFycmF5IHBvaW50ZXJzLgorK2NvbnN0IG1heEFsbG9jU2l6ZSA9IDB4RkZGRkZGRgorKworKy8vIEFyZSB1bmFsaWduZWQgbG9hZC9zdG9yZXMgYnJva2VuIG9uIHRoaXMgYXJjaD8KKyt2YXIgYnJva2VuVW5hbGlnbmVkID0gZmFsc2UKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwXzAuMy4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC4zLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiZmViNDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC4zLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1TVU1NQVJZID0gIkRlcGVuZGVuY3kgbWFuYWdlbWVudCB0b29sIGZvciBHb2xhbmciCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ29sYW5nL2RlcCIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjLyR7R09fSU1QT1JUfS9MSUNFTlNFO21kNT0xYmFkMzE1NjQ3NzUxZmFiMDAwNzgxMmY3MGQ0MmMwZCIKLQotR09fSU1QT1JUID0gImdpdGh1Yi5jb20vZ29sYW5nL2RlcCIKLVNSQ19VUkkgPSAiZ2l0Oi8vJHtHT19JTVBPUlR9IgotCi0jIFBvaW50cyB0byAwLjMuMCB0YWcKLVNSQ1JFViA9ICI3YTkxYjc5NGJiZmJmMWYzYjhiNzk4MjM3OTkzMTY0NTExMjc4MDFiIgotCi1pbmhlcml0IGdvCi0KLUdPX0lOU1RBTEwgPSAiJHtHT19JTVBPUlR9L2NtZC9kZXAiCi0KLVJERVBFTkRTXyR7UE59LWRldiArPSAiYmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwXzAuNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC40LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDgyZTYzNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwXzAuNC4xLmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiRGVwZW5kZW5jeSBtYW5hZ2VtZW50IHRvb2wgZm9yIEdvbGFuZyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nb2xhbmcvZGVwIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvJHtHT19JTVBPUlR9L0xJQ0VOU0U7bWQ1PTFiYWQzMTU2NDc3NTFmYWIwMDA3ODEyZjcwZDQyYzBkIgorCitHT19JTVBPUlQgPSAiZ2l0aHViLmNvbS9nb2xhbmcvZGVwIgorU1JDX1VSSSA9ICJnaXQ6Ly8ke0dPX0lNUE9SVH0gXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtc3VwcG9ydC1mb3ItbWlwcy1taXBzNjQucGF0Y2g7cGF0Y2hkaXI9c3JjL2dpdGh1Yi5jb20vZ29sYW5nL2RlcCBcCisgICAgICAgICAgIgorCisjIFBvaW50cyB0byAwLjQuMSB0YWcKK1NSQ1JFViA9ICIzN2Q5ZWEwYWMxNmYwZTBhMDVhZmMzYjYwZTFhYzhjMzY0YjZjMzI5IgorCitpbmhlcml0IGdvCisKK0dPX0lOU1RBTEwgPSAiJHtHT19JTVBPUlR9L2NtZC9kZXAiCisKK1JERVBFTkRTXyR7UE59LWRldiArPSAiYmFzaCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmUuaW5jCmluZGV4IDk1ZGIxYzIuLmI3NmZiMDggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZS5pbmMKQEAgLTQsMzQgKzQsMzEgQEAKIAogaW5oZXJpdCBuYXRpdmUKIAotU1JDX1VSSV9hcHBlbmQgPSAiIGh0dHA6Ly9nb2xhbmcub3JnL2RsL2dvMS40LjMuc3JjLnRhci5nejtuYW1lPWJvb3RzdHJhcDtzdWJkaXI9Z28xLjQiCi1TUkNfVVJJW2Jvb3RzdHJhcC5tZDVzdW1dID0gImRmYjYwNDUxMTExNWRkNDAyYTc3YTU1M2E1OTIzYTA0IgotU1JDX1VSSVtib290c3RyYXAuc2hhMjU2c3VtXSA9ICI5OTQ3ZmM3MDViMGI4NDFiNTkzOGM0OGIyMmRjMzNlOTY0N2VjMDc1MmJhZTY2ZTUwMjc4ZGY0ZjIzZjY0OTU5IgorU1JDX1VSSV9hcHBlbmQgPSAiIGh0dHBzOi8vZGwuZ29vZ2xlLmNvbS9nby9nbzEuNC1ib290c3RyYXAtMjAxNzEwMDMudGFyLmd6O25hbWU9Ym9vdHN0cmFwO3N1YmRpcj1nbzEuNCIKK1NSQ19VUklbYm9vdHN0cmFwLm1kNXN1bV0gPSAiZGJmNzI3YTRiMGUzNjViZjg4ZDk3Y2JmZGU1OTAwMTYiCitTUkNfVVJJW2Jvb3RzdHJhcC5zaGEyNTZzdW1dID0gImY0ZmY1YjVlYjNhM2NhZTFjOTkzNzIzZjNlYWI1MTljNWJhZTE4ODY2YjVlNWY5NmZlMTEwMmYwY2I1YzNlNTIiCiAKIGV4cG9ydCBHT09TID0gIiR7QlVJTERfR09PU30iCiBleHBvcnQgR09BUkNIID0gIiR7QlVJTERfR09BUkNIfSIKIENDID0gIiR7QGQuZ2V0VmFyKCdCVUlMRF9DQycpLnN0cmlwKCl9IgogCi1leHBvcnQgQ0dPX0VOQUJMRUQgPSAiMSIKK0dPTUFLRUFSR1MgPz0gIi0tbm8tYmFubmVyIgogCiBkb19jb25maWd1cmUoKSB7Ci0gICAgY2QgJHtXT1JLRElSfS9nbzEuNC9nby9zcmMKLSAgICBDR09fRU5BQkxFRD0wIEdPUk9PVD0ke1dPUktESVJ9L2dvMS40L2dvIC4vbWFrZS5iYXNoCisJY2QgJHtXT1JLRElSfS9nbzEuNC9nby9zcmMKKwlDR09fRU5BQkxFRD0wIEdPUk9PVD0ke1dPUktESVJ9L2dvMS40L2dvIC4vbWFrZS5iYXNoCiB9CiAKIGRvX2NvbXBpbGUoKSB7Ci0JZXhwb3J0IEdPQklOPSIke0J9L2JpbiIKIAlleHBvcnQgR09ST09UX0ZJTkFMPSIke25vbnN0YWdpbmdfbGliZGlyfS9nbyIKIAlleHBvcnQgR09ST09UX0JPT1RTVFJBUD0iJHtXT1JLRElSfS9nbzEuNC9nbyIKLQlybSAtcmYgJHtHT0JJTn0KLQlta2RpciAke0dPQklOfQotCi0JZXhwb3J0IFRNUERJUj0ke1dPUktESVJ9L2J1aWxkLXRtcAotCW1rZGlyIC1wICR7V09SS0RJUn0vYnVpbGQtdG1wCiAKIAljZCBzcmMKLQkuL21ha2UuYmFzaCAtLWhvc3Qtb25seQorCS4vbWFrZS5iYXNoICR7R09NQUtFQVJHU30KKwljZCAke0J9CiB9Citkb19jb21waWxlW2RpcnNdID0rICIke0dPVE1QRElSfSAke0J9L2JpbiIKK2RvX2NvbXBpbGVbY2xlYW5kaXJzXSArPSAiJHtHT1RNUERJUn0gJHtCfS9iaW4iCiAKIG1ha2Vfd3JhcHBlcigpIHsKIAlybSAtZiAke0R9JHtiaW5kaXJ9LyQyJDMKQEAgLTUxLDcgKzQ4LDcgQEAKIAkoY2QgJHtTfS9zcmM7IGZvciBkIGluICo7IGRvIFwKIAkJWyAtZCAkZCBdICYmIGNwIC1hICR7U30vc3JjLyRkICR7RH0ke2xpYmRpcn0vZ28vc3JjLzsgXAogCWRvbmUpCi0Jcm0gLXJmICR7RH0ke2xpYmRpcn0vZ28vc3JjL3J1bnRpbWUvcHByb2YvdGVzdGRhdGEKKwlmaW5kICR7RH0ke2xpYmRpcn0vZ28vc3JjIC1kZXB0aCAtdHlwZSBkIC1uYW1lIHRlc3RkYXRhIC1leGVjIHJtIC1yZiB7fSBcOwogCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfSAke0R9JHtsaWJkaXJ9L2dvL2JpbgogCWZvciBmIGluICR7Qn0vYmluLyoKIAlkbwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmVfMS4xMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlXzEuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJmM2MwZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlXzEuMTAuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlICR7UE59LmluYworcmVxdWlyZSBnby0ke1BWfS5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlXzEuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlXzEuOS5iYgppbmRleCBiYmYzYzBkLi44NjIxZTFkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZV8xLjkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmVfMS45LmJiCkBAIC0xLDIgKzEsNCBAQAogcmVxdWlyZSAke1BOfS5pbmMKIHJlcXVpcmUgZ28tJHtQVn0uaW5jCisKK0dPTUFLRUFSR1MgPSAiLS1ob3N0LW9ubHkgLS1uby1iYW5uZXIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lLmluYwppbmRleCAyOWFlODZlLi4wMDQxZThhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZS5pbmMKQEAgLTgsMTMgKzgsMTYgQEAKIGV4cG9ydCBHT0FSQ0ggPSAiJHtUQVJHRVRfR09BUkNIfSIKIGV4cG9ydCBHT0FSTSA9ICIke1RBUkdFVF9HT0FSTX0iCiBleHBvcnQgR08zODYgPSAiJHtUQVJHRVRfR08zODZ9IgorZXhwb3J0IEdPTUlQUyA9ICIke1RBUkdFVF9HT01JUFN9IgogZXhwb3J0IEdPUk9PVF9CT09UU1RSQVAgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvIgogZXhwb3J0IEdPUk9PVF9GSU5BTCA9ICIke2xpYmRpcn0vZ28iCi1leHBvcnQgR09fVEFSR0VUX0lOU1RBTEwgPSAic3RkIgotZXhwb3J0IENHT19FTkFCTEVEID0gIjEiCi1leHBvcnQgQ0NfRk9SX1RBUkdFVD0iJHtDQ30iCi1leHBvcnQgQ1hYX0ZPUl9UQVJHRVQ9IiR7Q1hYfSIKLWV4cG9ydCBHT1JPT1RfT1ZFUlJJREUgPSAiMSIKK2V4cG9ydCBDR09fQ0ZMQUdTID0gIiR7Q0ZMQUdTfSIKK2V4cG9ydCBDR09fQ1BQRkxBR1MgPSAiJHtDUFBGTEFHU30iCitleHBvcnQgQ0dPX0NYWEZMQUdTID0gIiR7Q1hYRkxBR1N9IgorZXhwb3J0IENHT19MREZMQUdTID0gIiR7TERGTEFHU30iCisKK0dPX0VYVExERkxBR1MgPz0gIiR7SE9TVF9DQ19BUkNIfSR7VE9PTENIQUlOX09QVElPTlN9ICR7TERGTEFHU30iCitHT19TSExJQl9MREZMQUdTID89ICctbGRmbGFncz0iLS1saW5rbW9kZT1leHRlcm5hbCAtZXh0bGRmbGFncyAnJHtHT19FWFRMREZMQUdTfSciJwogCiBkb19jb25maWd1cmUoKSB7CiAJOgpAQCAtMjUsMjEgKzI4LDIwIEBACiB9CiAKIGRvX2NvbXBpbGUoKSB7Ci0JZXhwb3J0IEdPQklOPSIke0J9L2JpbiIKLQlleHBvcnQgQ0M9IiR7QGQuZ2V0VmFyKCdCVUlMRF9DQycpLnN0cmlwKCl9IgotCXJtIC1yZiAke0dPQklOfSAke0J9L3BrZwotCW1rZGlyICR7R09CSU59CisJZXhwb3J0IENDX0ZPUl8ke1RBUkdFVF9HT09TfV8ke1RBUkdFVF9HT0FSQ0h9PSIke0NDfSIKKwlleHBvcnQgQ1hYX0ZPUl8ke1RBUkdFVF9HT09TfV8ke1RBUkdFVF9HT0FSQ0h9PSIke0NYWH0iCisKIAljZCBzcmMKLQkuL21ha2UuYmFzaCAtLWhvc3Qtb25seQotCWNwICR7Qn0vcGtnL3Rvb2wvJHtCVUlMRF9HT1RVUExFfS9nb19ib290c3RyYXAgJHtCfQotCXJtIC1yZiAke0J9L3BrZy8ke1RBUkdFVF9HT1RVUExFfQotCS4vbWFrZS5iYXNoIC0tdGFyZ2V0LW9ubHkKKwkuL21ha2UuYmFzaCAtLXRhcmdldC1vbmx5IC0tbm8tYmFubmVyIHN0ZAogCWlmIFsgLW4gIiR7R09fRFlOTElOS30iIF07IHRoZW4KLQkJY3AgJHtCfS9nb19ib290c3RyYXAgJHtCfS9wa2cvdG9vbC8ke0JVSUxEX0dPVFVQTEV9Ci0JCUdPX0ZMQUdTPSItYnVpbGRtb2RlPXNoYXJlZCIgR09fTERGTEFHUz0iLWV4dGxkZmxhZ3MgXCIke0xERkxBR1N9XCIiIC4vbWFrZS5iYXNoIC0tdGFyZ2V0LW9ubHkKKwkJZXhwb3J0IEdPVE9PTERJUj0iJHtCfS9wa2cvdG9vbC9uYXRpdmVfbmF0aXZlIgorCQlDQz0iJENDX0ZPUl8ke1RBUkdFVF9HT09TfV8ke1RBUkdFVF9HT0FSQ0h9IiBHT0FSQ0g9IiR7VEFSR0VUX0dPQVJDSH0iIEdPT1M9IiR7VEFSR0VUX0dPT1N9IiBHT1JPT1Q9JHtCfSBcCisJCQkkR09UT09MRElSL2dvX2Jvb3RzdHJhcCBpbnN0YWxsIC1saW5rc2hhcmVkIC1idWlsZG1vZGU9c2hhcmVkICR7R09fU0hMSUJfTERGTEFHU30gc3RkCiAJZmkKIAljZCAke0J9CiB9Citkb19jb21waWxlW2RpcnNdID0rICIke0dPVE1QRElSfSAke0J9L2JpbiAke0J9L3BrZyIKK2RvX2NvbXBpbGVbY2xlYW5kaXJzXSArPSAiJHtHT1RNUERJUn0gJHtCfS9iaW4gJHtCfS9wa2ciCiAKIGRvX2luc3RhbGwoKSB7CiAJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L2dvL3NyYwpAQCAtNTQsMjAgKzU2LDEwIEBACiAJZmluZCBzcmMgLW1pbmRlcHRoIDEgLW1heGRlcHRoIDEgLXR5cGUgZCB8IHdoaWxlIHJlYWQgc3JjZGlyOyBkbwogCQljcCAtLXByZXNlcnZlPW1vZGUsdGltZXN0YW1wcyAtUiAkc3JjZGlyICR7RH0ke2xpYmRpcn0vZ28vc3JjLwogCWRvbmUKKwlmaW5kICR7RH0ke2xpYmRpcn0vZ28vc3JjIC1kZXB0aCAtdHlwZSBkIC1uYW1lIHRlc3RkYXRhIC1leGVjIHJtIC1yZiB7fSBcOwogCXJtIC1mICR7RH0ke2xpYmRpcn0vZ28vc3JjL2NtZC9kaXN0L2Rpc3QKIH0KIAotIyBSZW1vdmUgdGVzdCBiaW5hcmllcyB0aGF0IGNhbm5vdCBiZSByZWxvY2F0ZWQKLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLQlybSAtcmYgJHtEfSR7bGliZGlyfS9nby9zcmMvcnVudGltZS9wcHJvZi90ZXN0ZGF0YQotfQotCi0jIFRoZXNlIHRlc3RkYXRhIGRpcmVjdG9yaWVzIGFyZW4ndCBuZWVkZWQgZm9yIGJ1aWxkcyBhbmQgY29udGFpbiBiaW5hcmllcwotIyB0aGF0IGNhbiBjYXVzZSBlcnJvcnMgaW4gc3lzcm9vdF9zdHJpcCgpLCBzbyBqdXN0IHJlbW92ZSB0aGVtLgotc3lzcm9vdF9zdGFnZV9hbGxfYXBwZW5kKCkgewotCWZpbmQgJHtTWVNST09UX0RFU1RESVJ9JHtsaWJkaXJ9L2dvL3NyYyAtZGVwdGggLXR5cGUgZCAtbmFtZSAndGVzdGRhdGEnIC1leGVjIHJtIC1yZiB7fSBcOwotfQotCiBBTExPV19FTVBUWV8ke1BOfSA9ICIxIgogRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyoke1NPTElCU0RFVn0iCiBGSUxFU18ke1BOfS1kZXYgPSAiJHtsaWJkaXJ9L2dvL3NyYyAke2xpYmRpcn0vZ28vcGtnL2luY2x1ZGUgXApAQCAtNzgsOCArNzAsNiBAQAogICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLyovKi8qLyouc2hsaWJuYW1lIFwKICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ28vcGtnLyR7VEFSR0VUX0dPVFVQTEV9X2R5bmxpbmsvKi8qLyovKi8qLyouc2hsaWJuYW1lIFwKICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ28vcGtnLyR7VEFSR0VUX0dPVFVQTEV9X2R5bmxpbmsvKi8qLyovKi8qLyovKi5zaGxpYm5hbWUgXAotIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ID0gIiR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX0gXAogICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLmEgXAogICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLyouYSBcCiAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyovKi8qLmEgXApAQCAtODgsMTEgKzc4LDE1IEBACiAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyovKi8qLyovKi8qLmEgXAogICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLyovKi8qLyovKi8qLmEgXAogIgotIyBUaGUgdGVzdGRhdGEgZGlyZWN0b3JpZXMgaW4gdGhlIHNvdXJjZSB0cmVlIGluY2x1ZGUgc29tZSBiaW5hcmllcyBmb3IgdmFyaW91cwotIyBhcmNoaXRlY3R1cmVzLCBzY3JpcHRzLCBhbmQgLmEgZmlsZXMKLUlOU0FORV9TS0lQXyR7UE59LWRldiA9ICJzdGF0aWNkZXYgbGRmbGFncyBmaWxlLXJkZXBzIGFyY2giCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgPSAiJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfSIKKworIyBHbyBzb3VyY2VzIGluY2x1ZGUgc29tZSBzY3JpcHRzIGFuZCBwcmUtYnVpbHQgYmluYXJpZXMgZm9yCisjIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMuICBUaGUgc3RhdGljIC5hIGZpbGVzIGZvciBkeW5hbWljYWxseS1saW5rZWQKKyMgcnVudGltZSBhcmUgYWxzbyByZXF1aXJlZCBpbiAtZGV2LgorSU5TQU5FX1NLSVBfJHtQTn0tZGV2ID0gInN0YXRpY2RldiBmaWxlLXJkZXBzIGFyY2giCiAKIElOSElCSVRfUEFDS0FHRV9TVFJJUCA9ICIxIgogSU5ISUJJVF9QQUNLQUdFX0RFQlVHX1NQTElUID0gIjEiCitJTkhJQklUX1NZU1JPT1RfU1RSSVAgPSAiMSIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWVfMS4xMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZV8xLjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzYjY4YjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWVfMS4xMC5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgZ28tJHtQVn0uaW5jCityZXF1aXJlIGdvLXJ1bnRpbWUuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWVfMS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lXzEuOS5iYgppbmRleCA0M2I2OGI0Li5kNTI3OWVhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWVfMS45LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZV8xLjkuYmIKQEAgLTEsMiArMSwyMyBAQAogcmVxdWlyZSBnby0ke1BWfS5pbmMKIHJlcXVpcmUgZ28tcnVudGltZS5pbmMKKworZXhwb3J0IEdPX1RBUkdFVF9JTlNUQUxMID0gInN0ZCIKK2V4cG9ydCBDQ19GT1JfVEFSR0VUID0gIiR7Q0N9IgorZXhwb3J0IENYWF9GT1JfVEFSR0VUID0gIiR7Q1hYfSIKKworZG9fY29tcGlsZSgpIHsKKwlleHBvcnQgR09CSU49IiR7Qn0vYmluIgorCWV4cG9ydCBUTVBESVI9IiRHT1RNUERJUiIKKwlleHBvcnQgQ0M9JEJVSUxEX0NDCisKKwljZCBzcmMKKwlDR09fQ0ZMQUdTPSIke0JVSUxEX0NGTEFHU30iIENHT19MREZMQUdTPSIke0JVSUxEX0xERkxBR1N9IiAuL21ha2UuYmFzaCAtLWhvc3Qtb25seQorCWNwICR7Qn0vcGtnL3Rvb2wvJHtCVUlMRF9HT1RVUExFfS9nb19ib290c3RyYXAgJHtCfQorCXJtIC1yZiAke0J9L3BrZy8ke1RBUkdFVF9HT1RVUExFfQorCS4vbWFrZS5iYXNoIC0tdGFyZ2V0LW9ubHkKKwlpZiBbIC1uICIke0dPX0RZTkxJTkt9IiBdOyB0aGVuCisJCWNwICR7Qn0vZ29fYm9vdHN0cmFwICR7Qn0vcGtnL3Rvb2wvJHtCVUlMRF9HT1RVUExFfQorCQlHT19GTEFHUz0iLWJ1aWxkbW9kZT1zaGFyZWQiIEdPX0xERkxBR1M9Ii1leHRsZGZsYWdzIFwiJHtMREZMQUdTfVwiIiAuL21ha2UuYmFzaCAtLXRhcmdldC1vbmx5CisJZmkKKwljZCAke0J9Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXRhcmdldC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXRhcmdldC5pbmMKaW5kZXggY2FjNWQ3OC4uMjlhMTM0NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby10YXJnZXQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tdGFyZ2V0LmluYwpAQCAtMSw0ICsxLDMgQEAKLWluaGVyaXQgZ29hcmNoCiBERVBFTkRTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvIGdvLW5hdGl2ZSIKIERFUEVORFNfY2xhc3MtbmF0aXZlc2RrID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvLWNyb3Nzc2RrIGdvLW5hdGl2ZSIKIApAQCAtOCw0MSArNywzNCBAQAogZXhwb3J0IEdPQVJDSCA9ICIke1RBUkdFVF9HT0FSQ0h9IgogZXhwb3J0IEdPQVJNID0gIiR7VEFSR0VUX0dPQVJNfSIKIGV4cG9ydCBHTzM4NiA9ICIke1RBUkdFVF9HTzM4Nn0iCitleHBvcnQgR09NSVBTID0gIiR7VEFSR0VUX0dPTUlQU30iCiBleHBvcnQgR09ST09UX0JPT1RTVFJBUCA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28iCiBleHBvcnQgR09ST09UX0ZJTkFMID0gIiR7bGliZGlyfS9nbyIKLWV4cG9ydCBDR09fRU5BQkxFRCA9ICIxIgotZXhwb3J0IENDX0ZPUl9UQVJHRVQgPSAiJHtDQ30iCi1leHBvcnQgQ1hYX0ZPUl9UQVJHRVQgPSAiJHtDWFh9IgotZXhwb3J0IEdPX1RBUkdFVF9JTlNUQUxMID0gImNtZCIKLWV4cG9ydCBHT19GTEFHUyA9ICItYSIKIEdPX0xERkxBR1MgPSAiIgogR09fTERGTEFHU19jbGFzcy1uYXRpdmVzZGsgPSAiLWxpbmttb2RlIGV4dGVybmFsIgogZXhwb3J0IEdPX0xERkxBR1MKIAotU0VDVVJJVFlfQ0ZMQUdTID0gIiR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0xERkxBR1MgPSAiIgorQ0NfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9IgogCiBkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgogCiBkb19jb21waWxlKCkgewotCWV4cG9ydCBHT0JJTj0iJHtCfS9iaW4iCi0JZXhwb3J0IENDPSIke0BkLmdldFZhcignQlVJTERfQ0MnKS5zdHJpcCgpfSIKLQlybSAtcmYgJHtHT0JJTn0gJHtCfS9wa2cKLQlta2RpciAke0dPQklOfQotCi0JZXhwb3J0IFRNUERJUj0ke1dPUktESVJ9L2J1aWxkLXRtcAotCW1rZGlyIC1wICR7V09SS0RJUn0vYnVpbGQtdG1wCisJZXhwb3J0IENDX0ZPUl8ke1RBUkdFVF9HT09TfV8ke1RBUkdFVF9HT0FSQ0h9PSIke0NDfSIKKwlleHBvcnQgQ1hYX0ZPUl8ke1RBUkdFVF9HT09TfV8ke1RBUkdFVF9HT0FSQ0h9PSIke0NYWH0iCiAKIAljZCBzcmMKLQkuL21ha2UuYmFzaAorCS4vbWFrZS5iYXNoIC0tdGFyZ2V0LW9ubHkgLS1uby1iYW5uZXIKIAljZCAke0J9CiB9Citkb19jb21waWxlW2RpcnNdID0rICIke0dPVE1QRElSfSAke0J9L2JpbiAke0J9L3BrZyIKK2RvX2NvbXBpbGVbY2xlYW5kaXJzXSArPSAiJHtHT1RNUERJUn0gJHtCfS9iaW4gJHtCfS9wa2ciCiAKIGRvX2luc3RhbGwoKSB7CiAJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L2dvL3BrZy90b29sCiAJY3AgLS1wcmVzZXJ2ZT1tb2RlLHRpbWVzdGFtcHMgLVIgJHtCfS9wa2cvdG9vbC8ke1RBUkdFVF9HT1RVUExFfSAke0R9JHtsaWJkaXJ9L2dvL3BrZy90b29sLwogCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nby9zcmMKIAljcCAtLXByZXNlcnZlPW1vZGUsdGltZXN0YW1wcyAtUiAke1N9L3NyYy9jbWQgJHtEfSR7bGliZGlyfS9nby9zcmMvCisJZmluZCAke0R9JHtsaWJkaXJ9L2dvL3NyYyAtZGVwdGggLXR5cGUgZCAtbmFtZSB0ZXN0ZGF0YSAtZXhlYyBybSAtcmYge30gXDsKIAlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28vYmluCiAJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CiAJZm9yIGYgaW4gJHtCfS8ke0dPX0JVSUxEX0JJTkRJUn0vKjsgZG8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS4xMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjdlMmNiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjEwLmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBnby0ke1BWfS5pbmMKK3JlcXVpcmUgZ28tdGFyZ2V0LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuOS5iYgppbmRleCBjNjdlMmNiLi5lYzVhMzE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuOS5iYgpAQCAtMSwyICsxLDE3IEBACiByZXF1aXJlIGdvLSR7UFZ9LmluYwogcmVxdWlyZSBnby10YXJnZXQuaW5jCisKK2V4cG9ydCBHT19UQVJHRVRfSU5TVEFMTCA9ICJjbWQiCitleHBvcnQgR09fRkxBR1MgPSAiLWEiCitleHBvcnQgQ0NfRk9SX1RBUkdFVCA9ICIke0NDfSIKK2V4cG9ydCBDWFhfRk9SX1RBUkdFVCA9ICIke0NYWH0iCisKK2RvX2NvbXBpbGUoKSB7CisJZXhwb3J0IEdPQklOPSIke0J9L2JpbiIKKwlleHBvcnQgVE1QRElSPSIkR09UTVBESVIiCisJZXhwb3J0IENDPSRCVUlMRF9DQworCisJY2Qgc3JjCisJLi9tYWtlLmJhc2gKKwljZCAke0J9Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2hlbHAybWFuL2hlbHAybWFuLW5hdGl2ZV8xLjQ3LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2hlbHAybWFuL2hlbHAybWFuLW5hdGl2ZV8xLjQ3LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0ZGMzMmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9oZWxwMm1hbi9oZWxwMm1hbi1uYXRpdmVfMS40Ny40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotU1VNTUFSWSA9ICJQcm9ncmFtIGZvciBjcmVhdGluZyBzaW1wbGUgbWFuIHBhZ2VzIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLURFUEVORFMgPSAiYXV0b2NvbmYtbmF0aXZlIGF1dG9tYWtlLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTQ0YWNhNDk2YTdkODlkZTNlNWQ5OWU1NmEyZjAzZDMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDRlY2Y2OTdkMTNmMTRkZDFhNzhjNTk5NWYwNjQ1OWJmZjcwNmZkMWNlNTkzZDFjMDJkODE2NjdjMDIwNzc1MyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbmF0aXZlCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtbmxzIgotCi0jIFdlIGRvbid0IHdhbnQgdG8gcmVjb25maWd1cmUgdGhpbmdzIGFzIGl0IHdvdWxkIHJlcXVpcmUgJ3BlcmxuYXRpdmUnIHRvIGJlCi0jIHVzZWQuCi1kb19jb25maWd1cmUoKSB7Ci0Jb2VfcnVuY29uZgotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JIyBNYWtlIHN1cmUgd2UgdXNlIC91c3IvYmluL2VudiBwZXJsCi0Jc2VkIC1pIC1lICIxczojIS4qOiMhIC91c3IvYmluL2VudiBwZXJsOiIgJHtEfSR7YmluZGlyfS9oZWxwMm1hbgotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9oZWxwMm1hbi9oZWxwMm1hbi1uYXRpdmVfMS40Ny41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9oZWxwMm1hbi9oZWxwMm1hbi1uYXRpdmVfMS40Ny41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkZDZkMzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2hlbHAybWFuL2hlbHAybWFuLW5hdGl2ZV8xLjQ3LjUuYmIKQEAgLTAsMCArMSwyNSBAQAorU1VNTUFSWSA9ICJQcm9ncmFtIGZvciBjcmVhdGluZyBzaW1wbGUgbWFuIHBhZ2VzIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKK0RFUEVORFMgPSAiYXV0b2NvbmYtbmF0aXZlIGF1dG9tYWtlLW5hdGl2ZSIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMWM4ODYwNjNjOWUwYWI0NjM5MDZkZTgwNDU5NmFhMmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2NhNjBiMjUxOWZkYmU5N2Y0NjNmZTJkZjY2YTYxODhkMThiNTE0YmZkNDQxMjdkOTg1ZjAyMzRlZTI0NjFiMSIKKworaW5oZXJpdCBhdXRvdG9vbHMgbmF0aXZlCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtbmxzIgorCisjIFdlIGRvbid0IHdhbnQgdG8gcmVjb25maWd1cmUgdGhpbmdzIGFzIGl0IHdvdWxkIHJlcXVpcmUgJ3BlcmxuYXRpdmUnIHRvIGJlCisjIHVzZWQuCitkb19jb25maWd1cmUoKSB7CisJb2VfcnVuY29uZgorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJIyBNYWtlIHN1cmUgd2UgdXNlIC91c3IvYmluL2VudiBwZXJsCisJc2VkIC1pIC1lICIxczojIS4qOiMhIC91c3IvYmluL2VudiBwZXJsOiIgJHtEfSR7YmluZGlyfS9oZWxwMm1hbgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pMmMtdG9vbHMvZmlsZXMvMDAwMS1pMmMtdG9vbHMtZWVwcm9nLU1vZHVsZS5tay1BZGQtbWlzc2luZy1kZXBlbmRlbmN5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pMmMtdG9vbHMvZmlsZXMvMDAwMS1pMmMtdG9vbHMtZWVwcm9nLU1vZHVsZS5tay1BZGQtbWlzc2luZy1kZXBlbmRlbmN5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMWE1MzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9maWxlcy8wMDAxLWkyYy10b29scy1lZXByb2ctTW9kdWxlLm1rLUFkZC1taXNzaW5nLWRlcGVuZGVuY3kucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSAwMTY3NGZlZmUzYmQyNGZkOTM0MTJmYmIzZWI0ZTg1ZmU3MGM4MGFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIk1heGluIEIuIEpvaG4iIDxtYXhpbi5qb2huQGludGVsLmNvbT4KK0RhdGU6IE1vbiwgMTggRGVjIDIwMTcgMTY6MDE6MzkgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gaTJjLXRvb2xzOiBlZXByb2cvTW9kdWxlLm1rOiBBZGQgbWlzc2luZyBkZXBlbmRlbmN5CisKK0Fic2VuY2Ugb2YgdGhpcyBkZXBlbmRlbmN5IGNhdXNlZCBwYXJhbGxlbCBidWlsZCB0byBydW4gaW50byBhIHJhY2UKK2FuZCBicmVhay4KKworVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZAoraHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL3V0aWxzL2kyYy10b29scy9pMmMtdG9vbHMuZ2l0L2NvbW1pdC8/aWQ9Zjg3Yzk3MzE3MDEyYTNiOTZiNjcyMzc5MjU4OTNiOGZmZDVmNGY1MAorCitTaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KKy0tLQorIGVlcHJvZy9Nb2R1bGUubWsgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9lZXByb2cvTW9kdWxlLm1rIGIvZWVwcm9nL01vZHVsZS5taworaW5kZXggOWQzNjg2OS4uZDIxNTg1NSAxMDA2NDQKKy0tLSBhL2VlcHJvZy9Nb2R1bGUubWsKKysrKyBiL2VlcHJvZy9Nb2R1bGUubWsKK0BAIC0yMCw3ICsyMCw3IEBAIEVFUFJPR19UQVJHRVRTCTo9IGVlcHJvZworICMgUHJvZ3JhbXMKKyAjCisgCistJChFRVBST0dfRElSKS9lZXByb2c6ICQoRUVQUk9HX0RJUikvZWVwcm9nLm8gJChFRVBST0dfRElSKS8yNGNYWC5vCisrJChFRVBST0dfRElSKS9lZXByb2c6ICQoRUVQUk9HX0RJUikvZWVwcm9nLm8gJChFRVBST0dfRElSKS8yNGNYWC5vICQoTElCX0RFUFMpCisgCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJF4gJChFRVBST0dfTERGTEFHUykKKyAKKyAjCistLSAKKzIuNC4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2ZpbGVzLzAwMDEtbGliLU1vZHVsZS5tay1BZGQtbWlzc2luZy1kZXBlbmRlbmNpZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9maWxlcy8wMDAxLWxpYi1Nb2R1bGUubWstQWRkLW1pc3NpbmctZGVwZW5kZW5jaWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyNmI0MzMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9maWxlcy8wMDAxLWxpYi1Nb2R1bGUubWstQWRkLW1pc3NpbmctZGVwZW5kZW5jaWVzLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gYTZhNTk2OTMwNjZmZDhkYTgxZjcxMDc0NzlkZjNlMzJhMTI5MjQ3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplYW4gRGVsdmFyZSA8amRlbHZhcmVAc3VzZS5kZT4KK0RhdGU6IFdlZCwgNiBEZWMgMjAxNyAwOTo1NTowNCArMDEwMAorU3ViamVjdDogW1BBVENIXSBsaWIvTW9kdWxlLm1rOiBBZGQgbWlzc2luZyBkZXBlbmRlbmNpZXMKKworVGhlIGxpYiBzeW1saW5rcyBsYWNrZWQgYSBkZXBlbmRlbmN5IHRvIHRoZSBhY3R1YWwgbGlicmFyeSBmaWxlLCBzbworcGFyYWxsZWwgYnVpbGRzIGNvdWxkIHJ1biBpbnRvIGEgcmFjZSBhbmQgYnJlYWsuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogSmVhbiBEZWx2YXJlIDxqZGVsdmFyZUBzdXNlLmRlPgorU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+CistLS0KKyBsaWIvTW9kdWxlLm1rIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYi9Nb2R1bGUubWsgYi9saWIvTW9kdWxlLm1rCitpbmRleCA0MzJhMDUxLi5mZDJjOGM0IDEwMDY0NAorLS0tIGEvbGliL01vZHVsZS5taworKysrIGIvbGliL01vZHVsZS5taworQEAgLTQyLDExICs0MiwxMSBAQCBlbmRpZgorICQoTElCX0RJUikvJChMSUJfU0hMSUJOQU1FKTogJChMSUJfRElSKS9zbWJ1cy5vCisgCSQoQ0MpIC1zaGFyZWQgJChMREZMQUdTKSAtV2wsLS12ZXJzaW9uLXNjcmlwdD0kKExJQl9ESVIpL2xpYmkyYy5tYXAgLVdsLC1zb25hbWUsJChMSUJfU0hTT05BTUUpIC1vICRAICReIC1sYworIAorLSQoTElCX0RJUikvJChMSUJfU0hTT05BTUUpOgorKyQoTElCX0RJUikvJChMSUJfU0hTT05BTUUpOiAkKExJQl9ESVIpLyQoTElCX1NITElCTkFNRSkKKyAJJChSTSkgJEAKKyAJJChMTikgJChMSUJfU0hMSUJOQU1FKSAkQAorIAorLSQoTElCX0RJUikvJChMSUJfU0hCQVNFTkFNRSk6CisrJChMSUJfRElSKS8kKExJQl9TSEJBU0VOQU1FKTogJChMSUJfRElSKS8kKExJQl9TSExJQk5BTUUpCisgCSQoUk0pICRACisgCSQoTE4pICQoTElCX1NITElCTkFNRSkgJEAKKyAKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pMmMtdG9vbHMvZmlsZXMvMDAwMS10b29scy1Nb2R1bGUubWstQWRkLW1pc3NpbmctZGVwZW5kZW5jaWVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pMmMtdG9vbHMvZmlsZXMvMDAwMS10b29scy1Nb2R1bGUubWstQWRkLW1pc3NpbmctZGVwZW5kZW5jaWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzY2YyZDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9maWxlcy8wMDAxLXRvb2xzLU1vZHVsZS5tay1BZGQtbWlzc2luZy1kZXBlbmRlbmNpZXMucGF0Y2gKQEAgLTAsMCArMSw2NiBAQAorRnJvbSAwOGIwZDY3YmE3ZWNlYjg2MmNiMTdmNTJlYjE5MTFlOTU3OTcyNmVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVhbiBEZWx2YXJlIDxqZGVsdmFyZUBzdXNlLmRlPgorRGF0ZTogVGh1LCAxNCBEZWMgMjAxNyAwODo1MjoyNiArMDEwMAorU3ViamVjdDogW1BBVENIXSB0b29scy9Nb2R1bGUubWs6IEFkZCBtaXNzaW5nIGRlcGVuZGVuY2llcworCitCZXR0ZXIgYnVpbGQgdGhlIGxpYnJhcnkgYmVmb3JlIGJ1aWxkaW5nIHRoZSB0b29scyB3aGljaCBsaW5rIGFnYWluc3QKK2l0LCBvdGhlcndpc2UgcGFyYWxsZWwgYnVpbGRzIGNvdWxkIHJ1biBpbnRvIGEgcmFjZSBhbmQgYnJlYWsuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogSmVhbiBEZWx2YXJlIDxqZGVsdmFyZUBzdXNlLmRlPgorVGVzdGVkLWJ5OiBBbmdlbG8gQ29tcGFnbnVjY2kgPGFuZ2Vsb0BhbWFydWxhc29sdXRpb25zLmNvbT4KK0Fja2VkLWJ5OiBBbmdlbG8gQ29tcGFnbnVjY2kgPGFuZ2Vsb0BhbWFydWxhc29sdXRpb25zLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgorLS0tCisgbGliL01vZHVsZS5tayAgIHwgIDcgKysrKysrKworIHRvb2xzL01vZHVsZS5tayB8IDEwICsrKysrLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK0luZGV4OiBpMmMtdG9vbHMtNC4wL2xpYi9Nb2R1bGUubWsKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBpMmMtdG9vbHMtNC4wLm9yaWcvbGliL01vZHVsZS5taworKysrIGkyYy10b29scy00LjAvbGliL01vZHVsZS5taworQEAgLTM1LDYgKzM1LDEzIEBAIExJQl9UQVJHRVRTCSs9ICQoTElCX1NUTElCTkFNRSkKKyBMSUJfT0JKRUNUUwkrPSBzbWJ1cy5hbworIGVuZGlmCisgCisrIyBMaWJyYXJ5IGZpbGUgdG8gbGluayBhZ2FpbnN0IChzdGF0aWMgb3IgZHluYW1pYykKKytpZmVxICgkKFVTRV9TVEFUSUNfTElCKSwxKQorK0xJQl9ERVBTCTo9ICQoTElCX0RJUikvJChMSUJfU1RMSUJOQU1FKQorK2Vsc2UKKytMSUJfREVQUwk6PSAkKExJQl9ESVIpLyQoTElCX1NIQkFTRU5BTUUpCisrZW5kaWYKKysKKyAjCisgIyBMaWJyYXJpZXMKKyAjCitJbmRleDogaTJjLXRvb2xzLTQuMC90b29scy9Nb2R1bGUubWsKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBpMmMtdG9vbHMtNC4wLm9yaWcvdG9vbHMvTW9kdWxlLm1rCisrKysgaTJjLXRvb2xzLTQuMC90b29scy9Nb2R1bGUubWsKK0BAIC0yNCwxOSArMjQsMTkgQEAgVE9PTFNfVEFSR0VUUwk6PSBpMmNkZXRlY3QgaTJjZHVtcCBpMmNzZQorICMgUHJvZ3JhbXMKKyAjCisgCistJChUT09MU19ESVIpL2kyY2RldGVjdDogJChUT09MU19ESVIpL2kyY2RldGVjdC5vICQoVE9PTFNfRElSKS9pMmNidXNzZXMubworKyQoVE9PTFNfRElSKS9pMmNkZXRlY3Q6ICQoVE9PTFNfRElSKS9pMmNkZXRlY3QubyAkKFRPT0xTX0RJUikvaTJjYnVzc2VzLm8gJChMSUJfREVQUykKKyAJJChDQykgJChMREZMQUdTKSAtbyAkQCAkXiAkKFRPT0xTX0xERkxBR1MpCisgCistJChUT09MU19ESVIpL2kyY2R1bXA6ICQoVE9PTFNfRElSKS9pMmNkdW1wLm8gJChUT09MU19ESVIpL2kyY2J1c3Nlcy5vICQoVE9PTFNfRElSKS91dGlsLm8KKyskKFRPT0xTX0RJUikvaTJjZHVtcDogJChUT09MU19ESVIpL2kyY2R1bXAubyAkKFRPT0xTX0RJUikvaTJjYnVzc2VzLm8gJChUT09MU19ESVIpL3V0aWwubyAkKExJQl9ERVBTKQorIAkkKENDKSAkKExERkxBR1MpIC1vICRAICReICQoVE9PTFNfTERGTEFHUykKKyAKKy0kKFRPT0xTX0RJUikvaTJjc2V0OiAkKFRPT0xTX0RJUikvaTJjc2V0Lm8gJChUT09MU19ESVIpL2kyY2J1c3Nlcy5vICQoVE9PTFNfRElSKS91dGlsLm8KKyskKFRPT0xTX0RJUikvaTJjc2V0OiAkKFRPT0xTX0RJUikvaTJjc2V0Lm8gJChUT09MU19ESVIpL2kyY2J1c3Nlcy5vICQoVE9PTFNfRElSKS91dGlsLm8gJChMSUJfREVQUykKKyAJJChDQykgJChMREZMQUdTKSAtbyAkQCAkXiAkKFRPT0xTX0xERkxBR1MpCisgCistJChUT09MU19ESVIpL2kyY2dldDogJChUT09MU19ESVIpL2kyY2dldC5vICQoVE9PTFNfRElSKS9pMmNidXNzZXMubyAkKFRPT0xTX0RJUikvdXRpbC5vCisrJChUT09MU19ESVIpL2kyY2dldDogJChUT09MU19ESVIpL2kyY2dldC5vICQoVE9PTFNfRElSKS9pMmNidXNzZXMubyAkKFRPT0xTX0RJUikvdXRpbC5vICQoTElCX0RFUFMpCisgCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJF4gJChUT09MU19MREZMQUdTKQorIAorLSQoVE9PTFNfRElSKS9pMmN0cmFuc2ZlcjogJChUT09MU19ESVIpL2kyY3RyYW5zZmVyLm8gJChUT09MU19ESVIpL2kyY2J1c3Nlcy5vICQoVE9PTFNfRElSKS91dGlsLm8KKyskKFRPT0xTX0RJUikvaTJjdHJhbnNmZXI6ICQoVE9PTFNfRElSKS9pMmN0cmFuc2Zlci5vICQoVE9PTFNfRElSKS9pMmNidXNzZXMubyAkKFRPT0xTX0RJUikvdXRpbC5vICQoTElCX0RFUFMpCisgCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJF4gJChUT09MU19MREZMQUdTKQorIAorICMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2ZpbGVzL01vZHVsZS5tayBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2ZpbGVzL01vZHVsZS5tawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNhZjcyZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9maWxlcy9Nb2R1bGUubWsKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0jIEVFUFJPTUVSCi0jCi0jIExpY2Vuc2VkIHVuZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLQotRUVQUk9NRVJfRElSCTo9IGVlcHJvbWVyCi0KLUVFUFJPTUVSX0NGTEFHUwk6PSAtV3N0cmljdC1wcm90b3R5cGVzIC1Xc2hhZG93IC1XcG9pbnRlci1hcml0aCAtV2Nhc3QtcXVhbCBcCi0JCSAgIC1XY2FzdC1hbGlnbiAtV3dyaXRlLXN0cmluZ3MgLVduZXN0ZWQtZXh0ZXJucyAtV2lubGluZSBcCi0JCSAgIC1XIC1XdW5kZWYgLVdtaXNzaW5nLXByb3RvdHlwZXMgLUlpbmNsdWRlCi0KLUVFUFJPTUVSX1RBUkdFVFMJOj0gZWVwcm9tZXIgZWVwcm9tIGVlcHJvZwotCi0jCi0jIFByb2dyYW1zCi0jCi0KLSQoRUVQUk9NRVJfRElSKS9lZXByb21lcjogJChFRVBST01FUl9ESVIpL2VlcHJvbWVyLm8KLQkkKENDKSAkKExERkxBR1MpIC1vICRAICReCi0KLSQoRUVQUk9NRVJfRElSKS9lZXByb206ICQoRUVQUk9NRVJfRElSKS9lZXByb20ubwotCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJF4KLQotJChFRVBST01FUl9ESVIpL2VlcHJvZzogJChFRVBST01FUl9ESVIpL2VlcHJvZy5vICQoRUVQUk9NRVJfRElSKS8yNGNYWC5vIAotCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJF4KLQotIwotIyBPYmplY3RzCi0jCi0KLSQoRUVQUk9NRVJfRElSKS9lZXByb21lci5vOiAkKEVFUFJPTUVSX0RJUikvZWVwcm9tZXIuYwotCSQoQ0MpICQoQ0ZMQUdTKSAkKEVFUFJPTUVSX0NGTEFHUykgLWMgJDwgLW8gJEAKLQotJChFRVBST01FUl9ESVIpL2VlcHJvbS5vOiAkKEVFUFJPTUVSX0RJUikvZWVwcm9tLmMKLQkkKENDKSAkKENGTEFHUykgJChFRVBST01FUl9DRkxBR1MpIC1jICQ8IC1vICRACi0KLSQoRUVQUk9NRVJfRElSKS9lZXByb2cubzogJChFRVBST01FUl9ESVIpL2VlcHJvZy5jCi0JJChDQykgJChDRkxBR1MpICQoRUVQUk9NRVJfQ0ZMQUdTKSAtYyAkPCAtbyAkQAotCi0kKEVFUFJPTUVSX0RJUikvMjRjWFgubzogJChFRVBST01FUl9ESVIpLzI0Y1hYLmMKLQkkKENDKSAkKENGTEFHUykgJChFRVBST01FUl9DRkxBR1MpIC1jICQ8IC1vICRACi0KLSMKLSMgQ29tbWFuZHMKLSMKLQotYWxsLWVlcHJvbWVyOiAkKGFkZHByZWZpeCAkKEVFUFJPTUVSX0RJUikvLCQoRUVQUk9NRVJfVEFSR0VUUykpCi0KLXN0cmlwLWVlcHJvbWVyOiAkKGFkZHByZWZpeCAkKEVFUFJPTUVSX0RJUikvLCQoRUVQUk9NRVJfVEFSR0VUUykpCi0Jc3RyaXAgJChhZGRwcmVmaXggJChFRVBST01FUl9ESVIpLywkKEVFUFJPTUVSX1RBUkdFVFMpKQotCi1jbGVhbi1lZXByb21lcjoKLQkkKFJNKSAkKGFkZHByZWZpeCAkKEVFUFJPTUVSX0RJUikvLCoubyAkKEVFUFJPTUVSX1RBUkdFVFMpKQotCi1pbnN0YWxsLWVlcHJvbWVyOiAkKGFkZHByZWZpeCAkKEVFUFJPTUVSX0RJUikvLCQoRUVQUk9NRVJfVEFSR0VUUykpCi0JJChJTlNUQUxMX0RJUikgJChERVNURElSKSQoc2JpbmRpcikgJChERVNURElSKSQobWFuOGRpcikKLQlmb3IgcHJvZ3JhbSBpbiAkKEVFUFJPTUVSX1RBUkdFVFMpIDsgZG8gXAotCSQoSU5TVEFMTF9QUk9HUkFNKSAkKEVFUFJPTUVSX0RJUikvJCRwcm9ncmFtICQoREVTVERJUikkKHNiaW5kaXIpIDsgZG9uZQotCi11bmluc3RhbGwtZWVwcm9tZXI6Ci0JZm9yIHByb2dyYW0gaW4gJChFRVBST01FUl9UQVJHRVRTKSA7IGRvIFwKLQkkKFJNKSAkKERFU1RESVIpJChzYmluZGlyKS8kJHByb2dyYW0gOyBcCi0JJChSTSkgJChERVNURElSKSQobWFuOGRpcikvJCRwcm9ncmFtLjggOyBkb25lCi0KLWFsbDogYWxsLWVlcHJvbWVyCi0KLXN0cmlwOiBzdHJpcC1lZXByb21lcgotCi1jbGVhbjogY2xlYW4tZWVwcm9tZXIKLQotaW5zdGFsbDogaW5zdGFsbC1lZXByb21lcgotCi11bmluc3RhbGw6IHVuaW5zdGFsbC1lZXByb21lcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pMmMtdG9vbHMvZmlsZXMvcmVtb3ZlLWkyYy1kZXYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9maWxlcy9yZW1vdmUtaTJjLWRldi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDM2ODhkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pMmMtdG9vbHMvZmlsZXMvcmVtb3ZlLWkyYy1kZXYucGF0Y2gKQEAgLTAsMCArMSw5OCBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworRnJvbSAyMjZiYzAzYWNjYTQ0Y2Y0YjMwMDU5NzMwODA2NGM0NDY3NmI2ZjRiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVhbiBEZWx2YXJlIDxqZGVsdmFyZUBzdXNlLmRlPgorRGF0ZTogVHVlLCAyMyBKYW4gMjAxOCAxNDoyNDoxNiArMDEwMAorU3ViamVjdDogRGVsZXRlIGR1cGxpY2F0ZSBpMmMtZGV2LmgKKworVGhlIDxsaW51eC9pMmMtZGV2Lmg+IGhlYWRlciBmaWxlIGlzIHByb3ZpZGVkIGJ5IHRoZSBrZXJuZWwsIHNvIGRyb3AKK291ciBvd24gY29weSBvZiB0aGlzIGZpbGUuCisKK1NpZ25lZC1vZmYtYnk6IEplYW4gRGVsdmFyZSA8amRlbHZhcmVAc3VzZS5kZT4KK0Fja2VkLWJ5OiBXb2xmcmFtIFNhbmcgPHdzYUB0aGUtZHJlYW1zLmRlPgorLS0tCisgaW5jbHVkZS9saW51eC9pMmMtZGV2LmggfCA3MiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDcyIGRlbGV0aW9ucygtKQorIGRlbGV0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2xpbnV4L2kyYy1kZXYuaAorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pMmMtZGV2LmggYi9pbmNsdWRlL2xpbnV4L2kyYy1kZXYuaAorZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCA4MzlkMjVhLi4wMDAwMDAwCistLS0gYS9pbmNsdWRlL2xpbnV4L2kyYy1kZXYuaAorKysrIC9kZXYvbnVsbAorQEAgLTEsNzIgKzAsMCBAQAorLS8qCistICAgIGkyYy1kZXYuaCAtIGkyYy1idXMgZHJpdmVyLCBjaGFyIGRldmljZSBpbnRlcmZhY2UKKy0KKy0gICAgQ29weXJpZ2h0IChDKSAxOTk1LTk3IFNpbW9uIEcuIFZvZ2wKKy0gICAgQ29weXJpZ2h0IChDKSAxOTk4LTk5IEZyb2RvIExvb2lqYWFyZCA8ZnJvZG9sQGRkcy5ubD4KKy0KKy0gICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKy0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0KKy0gICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0gICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLAorLSAgICBNQSAwMjExMC0xMzAxIFVTQS4KKy0qLworLQorLSNpZm5kZWYgX0xJTlVYX0kyQ19ERVZfSAorLSNkZWZpbmUgX0xJTlVYX0kyQ19ERVZfSAorLQorLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorLQorLQorLS8qIC9kZXYvaTJjLVggaW9jdGwgY29tbWFuZHMuICBUaGUgaW9jdGwncyBwYXJhbWV0ZXIgaXMgYWx3YXlzIGFuCistICogdW5zaWduZWQgbG9uZywgZXhjZXB0IGZvcjoKKy0gKgktIEkyQ19GVU5DUywgdGFrZXMgcG9pbnRlciB0byBhbiB1bnNpZ25lZCBsb25nCistICoJLSBJMkNfUkRXUiwgdGFrZXMgcG9pbnRlciB0byBzdHJ1Y3QgaTJjX3Jkd3JfaW9jdGxfZGF0YQorLSAqCS0gSTJDX1NNQlVTLCB0YWtlcyBwb2ludGVyIHRvIHN0cnVjdCBpMmNfc21idXNfaW9jdGxfZGF0YQorLSAqLworLSNkZWZpbmUgSTJDX1JFVFJJRVMJMHgwNzAxCS8qIG51bWJlciBvZiB0aW1lcyBhIGRldmljZSBhZGRyZXNzIHNob3VsZAorLQkJCQkgICBiZSBwb2xsZWQgd2hlbiBub3QgYWNrbm93bGVkZ2luZyAqLworLSNkZWZpbmUgSTJDX1RJTUVPVVQJMHgwNzAyCS8qIHNldCB0aW1lb3V0IGluIHVuaXRzIG9mIDEwIG1zICovCistCistLyogTk9URTogU2xhdmUgYWRkcmVzcyBpcyA3IG9yIDEwIGJpdHMsIGJ1dCAxMC1iaXQgYWRkcmVzc2VzCistICogYXJlIE5PVCBzdXBwb3J0ZWQhIChkdWUgdG8gY29kZSBicm9rZW5uZXNzKQorLSAqLworLSNkZWZpbmUgSTJDX1NMQVZFCTB4MDcwMwkvKiBVc2UgdGhpcyBzbGF2ZSBhZGRyZXNzICovCistI2RlZmluZSBJMkNfU0xBVkVfRk9SQ0UJMHgwNzA2CS8qIFVzZSB0aGlzIHNsYXZlIGFkZHJlc3MsIGV2ZW4gaWYgaXQKKy0JCQkJICAgaXMgYWxyZWFkeSBpbiB1c2UgYnkgYSBkcml2ZXIhICovCistI2RlZmluZSBJMkNfVEVOQklUCTB4MDcwNAkvKiAwIGZvciA3IGJpdCBhZGRycywgIT0gMCBmb3IgMTAgYml0ICovCistCistI2RlZmluZSBJMkNfRlVOQ1MJMHgwNzA1CS8qIEdldCB0aGUgYWRhcHRlciBmdW5jdGlvbmFsaXR5IG1hc2sgKi8KKy0KKy0jZGVmaW5lIEkyQ19SRFdSCTB4MDcwNwkvKiBDb21iaW5lZCBSL1cgdHJhbnNmZXIgKG9uZSBTVE9QIG9ubHkpICovCistCistI2RlZmluZSBJMkNfUEVDCQkweDA3MDgJLyogIT0gMCB0byB1c2UgUEVDIHdpdGggU01CdXMgKi8KKy0jZGVmaW5lIEkyQ19TTUJVUwkweDA3MjAJLyogU01CdXMgdHJhbnNmZXIgKi8KKy0KKy0KKy0vKiBUaGlzIGlzIHRoZSBzdHJ1Y3R1cmUgYXMgdXNlZCBpbiB0aGUgSTJDX1NNQlVTIGlvY3RsIGNhbGwgKi8KKy1zdHJ1Y3QgaTJjX3NtYnVzX2lvY3RsX2RhdGEgeworLQlfX3U4IHJlYWRfd3JpdGU7CistCV9fdTggY29tbWFuZDsKKy0JX191MzIgc2l6ZTsKKy0JdW5pb24gaTJjX3NtYnVzX2RhdGEgKmRhdGE7CistfTsKKy0KKy0vKiBUaGlzIGlzIHRoZSBzdHJ1Y3R1cmUgYXMgdXNlZCBpbiB0aGUgSTJDX1JEV1IgaW9jdGwgY2FsbCAqLworLXN0cnVjdCBpMmNfcmR3cl9pb2N0bF9kYXRhIHsKKy0Jc3RydWN0IGkyY19tc2cgKm1zZ3M7CS8qIHBvaW50ZXJzIHRvIGkyY19tc2dzICovCistCV9fdTMyIG5tc2dzOwkJCS8qIG51bWJlciBvZiBpMmNfbXNncyAqLworLX07CistCistI2RlZmluZSAgSTJDX1JEUldfSU9DVExfTUFYX01TR1MJNDIKKy0KKy0KKy0jZW5kaWYgLyogX0xJTlVYX0kyQ19ERVZfSCAqLworLS0gCitjZ2l0IHYxLjEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2kyYy10b29sc18zLjEuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2kyYy10b29sc18zLjEuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzAxNzI1Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9pMmMtdG9vbHNfMy4xLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1TVU1NQVJZID0gIlNldCBvZiBpMmMgdG9vbHMgZm9yIGxpbnV4IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9pMmMud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9JMkNfVG9vbHMiCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL01vZHVsZS5tayBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNzEwNGExMDQzZDExYTVlMmM3YjEzMTYxNGViMWI5NjIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGI1ZTY5ZjJlMmE2ZTNhYTJlY2RmZTZhNWY0OTBiMTQ5YzUwNDQ2ODc3MGY1ODkyMWM4YzViOGE3ODYwYTQ0MSIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBjcCAke1dPUktESVJ9L01vZHVsZS5tayAke1N9L2VlcHJvbWVyLwotICAgIHNlZCAtaSAncyMvdXNyL2xvY2FsIy91c3IjJyAke1N9L01ha2VmaWxlCi0gICAgZWNobyAiaW5jbHVkZSBlZXByb21lci9Nb2R1bGUubWsiID4+ICR7U30vTWFrZWZpbGUKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfS9saW51eAotICAgIGluc3RhbGwgLW0gMDY0NCBpbmNsdWRlL2xpbnV4L2kyYy1kZXYuaCAke0R9JHtpbmNsdWRlZGlyfS9saW51eC9pMmMtZGV2LXVzZXIuaAotICAgIHJtIC1mICR7RH0ke2luY2x1ZGVkaXJ9L2xpbnV4L2kyYy1kZXYuaAotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tbWlzYyIKLUZJTEVTXyR7UE59LW1pc2MgPSAiJHtzYmluZGlyfS9pMmMtc3R1Yi1mcm9tLWR1bXAgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RkY21vbiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZGVjb2RlLWVkaWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RlY29kZS1kaW1tcyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZGVjb2RlLXZhaW8gXAotICAgICAgICAgICAgICAgICAgICAgICAiCi1SREVQRU5EU18ke1BOfS1taXNjID0gIiR7UE59IHBlcmwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9pMmMtdG9vbHNfNC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pMmMtdG9vbHMvaTJjLXRvb2xzXzQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWFjNDdmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pMmMtdG9vbHMvaTJjLXRvb2xzXzQuMC5iYgpAQCAtMCwwICsxLDM2IEBACitTVU1NQVJZID0gIlNldCBvZiBpMmMgdG9vbHMgZm9yIGxpbnV4IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9pMmMud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9JMkNfVG9vbHMiCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvdXRpbHMvaTJjLXRvb2xzLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYi1Nb2R1bGUubWstQWRkLW1pc3NpbmctZGVwZW5kZW5jaWVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdG9vbHMtTW9kdWxlLm1rLUFkZC1taXNzaW5nLWRlcGVuZGVuY2llcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWkyYy10b29scy1lZXByb2ctTW9kdWxlLm1rLUFkZC1taXNzaW5nLWRlcGVuZGVuY3kucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWkyYy1kZXYucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDkyYTI4OGQ3MGYzMDZkMzg5NWUzYTdlOWMxNGM5YWEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWI2MGRhZjZmMDExZGUwYWNiNjFkZTU3ZGJhNjJmMjA1NGJiMzlmMTk5NjFkNjdlMGM5MTYxMGYwNzFjYTQwMyIKKworRVhUUkFfT0VNQUtFID0gImJpbmRpcj0ke2JpbmRpcn0gc2JpbmRpcj0ke3NiaW5kaXJ9IFwKKyAgICAgICAgICAgICAgICBpbmNkaXI9JHtpbmNsdWRlZGlyfSBsaWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAgICAgICAgICAgICBtYW5kaXI9JHttYW5kaXJ9IFwKKyAgICAgICAgICAgICAgICBFWFRSQT1lZXByb2ciCisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1taXNjIgorRklMRVNfJHtQTn0tbWlzYyA9ICIke3NiaW5kaXJ9L2kyYy1zdHViLWZyb20tZHVtcCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZGRjbW9uIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9kZWNvZGUtZWRpZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZGVjb2RlLWRpbW1zIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9kZWNvZGUtdmFpbyBcCisgICAgICAgICAgICAgICAgICAgICAgICIKK1JERVBFTkRTXyR7UE59LW1pc2MgPSAiJHtQTn0gcGVybCBwZXJsLW1vZHVsZS1wb3NpeCBcCisgICAgICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWNvbnN0YW50IHBlcmwtbW9kdWxlLWZpbGUtYmFzZW5hbWUgXAorICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1mY250bCBwZXJsLW1vZHVsZS1zdHJpY3QgcGVybC1tb2R1bGUtdmFycyBcCisgICAgICAgICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy1jcmVhdGUtZW52L2ljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlXzAuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtY3JlYXRlLWVudi9pY2VjYy1jcmVhdGUtZW52LW5hdGl2ZV8wLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4ZjRhZWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy1jcmVhdGUtZW52L2ljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlXzAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLVNVTU1BUlkgPSAiaWNlY2MgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IgotREVTQ1JJUFRJT04gPSAiVGhpcyBpcyBhIHZlcnNpb24gb2YgdGhlIGljZWNjLWNyZWF0ZS1lbnYgc2NyaXB0IHRoYXQgaGFzIFwKLWJlZW4gbW9kaWZpZWQgaW4gb3JkZXIgdG8gbWFrZSBpdCB3b3JrIHdpdGggT0UuIgotU0VDVElPTiA9ICJiYXNlIgotIyBzb3VyY2UgZmlsZSBoYXMganVzdCBhICJHUEwiIHdvcmQsIGJ1dCB1cHN0cmVhbSBpcyBHUEx2MisuCi0jIG1vc3QgcHJvYmFibHkganVzdCBHUEwgd291bGQgYmUgYSBtaXN0YWtlCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2ljZWNjLWNyZWF0ZS1lbnY7YmVnaW5saW5lPTI7ZW5kbGluZT01O21kNT1hZTFkZjNkNmEwNThiZmRhNDBiNjYwOTRjNWY2MDY1ZiIKLQotUFIgPSAicjIiCi0KLURFUEVORFMgPSAiIgotSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKLQotaW5oZXJpdCBuYXRpdmUKLQotIyBUaGlzIGlzIG5lZWRlZCwgYmVjYXVzZSBvdGhlcndpc2UgdGhlcmUgaXMgZGVwZW5kZW5jeSBsb29wIGZyb20gcXVpbHQtbmF0aXZlCi0jIERlcGVuZGVuY3kgbG9vcCAjMSBmb3VuZDoKLSMgIFRhc2sgMTA5MDcgKG1ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdC1uYXRpdmVfMC42MC5iYiwgZG9faW5zdGFsbCkgKGRlcGVuZGVudCBUYXNrcyBbJ3F1aWx0LW5hdGl2ZSwgZG9fY29tcGlsZSddKQotIyAgVGFzayAxMDkwOCAobWV0YS9yZWNpcGVzLWRldnRvb2xzL3F1aWx0L3F1aWx0LW5hdGl2ZV8wLjYwLmJiLCBkb19wb3B1bGF0ZV9zeXNyb290KSAoZGVwZW5kZW50IFRhc2tzIFsncXVpbHQtbmF0aXZlLCBkb19pbnN0YWxsJ10pCi0jICBUYXNrIDEwOTk3IChtZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtY3JlYXRlLWVudi9pY2VjYy1jcmVhdGUtZW52LW5hdGl2ZV8wLjEuYmIsIGRvX3BhdGNoKSAoZGVwZW5kZW50IFRhc2tzIFsnaWNlY2MtY3JlYXRlLWVudi1uYXRpdmUsIGRvX3VucGFjaycsICdxdWlsdC1uYXRpdmUsIGRvX3BvcHVsYXRlX3N5c3Jvb3QnXSkKLSMgIFRhc2sgMTEwMDEgKG1ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy1jcmVhdGUtZW52L2ljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlXzAuMS5iYiwgZG9fY29uZmlndXJlKSAoZGVwZW5kZW50IFRhc2tzIFsnaWNlY2MtY3JlYXRlLWVudi1uYXRpdmUsIGRvX3BhdGNoJ10pCi0jICBUYXNrIDExMDAyIChtZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtY3JlYXRlLWVudi9pY2VjYy1jcmVhdGUtZW52LW5hdGl2ZV8wLjEuYmIsIGRvX2NvbXBpbGUpIChkZXBlbmRlbnQgVGFza3MgWydpY2VjYy1jcmVhdGUtZW52LW5hdGl2ZSwgZG9fY29uZmlndXJlJ10pCi0jICBUYXNrIDEwOTk4IChtZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtY3JlYXRlLWVudi9pY2VjYy1jcmVhdGUtZW52LW5hdGl2ZV8wLjEuYmIsIGRvX2luc3RhbGwpIChkZXBlbmRlbnQgVGFza3MgWydpY2VjYy1jcmVhdGUtZW52LW5hdGl2ZSwgZG9fY29tcGlsZSddKQotIyAgVGFzayAxMDk5OSAobWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLWNyZWF0ZS1lbnYvaWNlY2MtY3JlYXRlLWVudi1uYXRpdmVfMC4xLmJiLCBkb19wb3B1bGF0ZV9zeXNyb290KSAoZGVwZW5kZW50IFRhc2tzIFsnaWNlY2MtY3JlYXRlLWVudi1uYXRpdmUsIGRvX2luc3RhbGwnXSkKLSMgIFRhc2sgMTA5MTAgKG1ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdC1uYXRpdmVfMC42MC5iYiwgZG9fY29uZmlndXJlKSAoZGVwZW5kZW50IFRhc2tzIFsncXVpbHQtbmF0aXZlLCBkb19wYXRjaCcsICdpY2VjYy1jcmVhdGUtZW52LW5hdGl2ZSwgZG9fcG9wdWxhdGVfc3lzcm9vdCddKQotIyAgVGFzayAxMDkxMSAobWV0YS9yZWNpcGVzLWRldnRvb2xzL3F1aWx0L3F1aWx0LW5hdGl2ZV8wLjYwLmJiLCBkb19jb21waWxlKSAoZGVwZW5kZW50IFRhc2tzIFsncXVpbHQtbmF0aXZlLCBkb19jb25maWd1cmUnXSkKLVBBVENIVE9PTCA9ICJwYXRjaCIKLVNSQ19VUkkgPSAiZmlsZTovL2ljZWNjLWNyZWF0ZS1lbnYiCi0KLVMgPSAiJHtXT1JLRElSfSIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaWNlY2MtY3JlYXRlLWVudiAke0R9LyR7YmluZGlyfQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy1jcmVhdGUtZW52L2ljZWNjLWNyZWF0ZS1lbnYvaWNlY2MtY3JlYXRlLWVudiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtY3JlYXRlLWVudi9pY2VjYy1jcmVhdGUtZW52L2ljZWNjLWNyZWF0ZS1lbnYKaW5kZXggN2U0ZGJjNC4uNjRiNWUyMCAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy1jcmVhdGUtZW52L2ljZWNjLWNyZWF0ZS1lbnYvaWNlY2MtY3JlYXRlLWVudgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLWNyZWF0ZS1lbnYvaWNlY2MtY3JlYXRlLWVudi9pY2VjYy1jcmVhdGUtZW52CkBAIC00LDY5ICs0LDIwOCBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDQgYnkgdGhlIEljZWNyZWFtIEF1dGhvcnMKICMgR1BMCiAKLXRhcmdldF9maWxlcz0KK3RhcmdldF9wYXRocz0KK3RhcmdldF9hbGlhc2VzPQogCi1pc19jb250YWluZWQgKCkKKyMgQWx3YXlzIHByaW50cywgb3B0aW9uYWxseSB0byBhIGxvZyBmaWxlCitwcmludF9vdXRwdXQgKCkKIHsKLSAgY2FzZSAiICR0YXJnZXRfZmlsZXMgIiBpbgotICAgICoiICQxICIqICkgcmV0dXJuIDAgOzsKLSAgICAqIj0kMSAiKiApIHJldHVybiAwOzsKLSAgICAqICkgcmV0dXJuIDEgOzsKLSAgZXNhYworICAgIGlmIHRlc3QgLW4gIiRsb2dfcGF0aCI7IHRoZW4KKyAgICAgICAgZWNobyAiJEAiIHwgdGVlIC1hICIkbG9nX3BhdGgiCisgICAgZWxzZQorICAgICAgICBlY2hvICIkQCIKKyAgICBmaQorfQorCisjIE9ubHkgcHJpbnRzIGlmIHRoZSBkZWJ1ZyBmbGFnIGlzIHNwZWNpZmllZAorcHJpbnRfZGVidWcgKCkKK3sKKyAgICBpZiB0ZXN0IC1uICIkZGVidWciOyB0aGVuCisgICAgICAgIHByaW50X291dHB1dCAiJEAiCisgICAgZmkKK30KKworaXNfZHluYW1pY19lbGYgKCkKK3sKKyAgICAjIElzIHRoZSBmaWxlIGFuIGR5bmFtaWNhbGx5IGxpbmtlZCBFTEYgZXhlY3V0YWJsZT8KKyAgICAoZmlsZSAtTCAiJDEiIHwgZ3JlcCAnRUxGJyA+IC9kZXYvbnVsbCAyPiYxKSAmJiAoISBmaWxlIC1MICIkMSIgfCBncmVwICdzdGF0aWMnID4gL2Rldi9udWxsIDI+JjEpCit9CisKK2ZpeF9ycGF0aCAoKQoreworICAgICMgUGF0Y2hlcyB0aGUgUlBBVEggZm9yIGEgZmlsZS4gV2hlbiB0aGUgcHJvZ3JhbSBpcyBleGVjdXRlZCBpbiB0aGUgY2hyb290CisgICAgIyBiZSBpY2VjY2QsIC9wcm9jIGlzIG5vdCBtb3VudGVkLiBBcyBzdWNoLCAkT1JJR0lOIGNhbid0IGJlIHJlc29sdmVkLiBUbworICAgICMgd29yayBhcm91bmQgdGhpcywgcmVwbGFjZSBhbGwgaW5zdGFuY2VzIG9mICRPUklHSU4gaW4gUlBBVEggd2l0aCB0aGUKKyAgICAjIGtub3duIGNocm9vdCBwYXRoIHRvIHRoZSBleGVjdXRhYmxlcyBkaXJlY3RvcnkKKyAgICBsb2NhbCBwYXRoPSIkMSIKKyAgICBsb2NhbCBvcmlnaW49IiQyIgorICAgIGlmICEgaXNfZHluYW1pY19lbGYgIiRwYXRoIjsgdGhlbgorICAgICAgICByZXR1cm4KKyAgICBmaQorICAgIGxvY2FsIG9sZF9ycGF0aD0iYCRQQVRDSEVMRiAtLXByaW50LXJwYXRoICIkcGF0aCJgIgorICAgIGxvY2FsIG5ld19ycGF0aD0iYGVjaG8gIiRvbGRfcnBhdGgiIHwgXAorICAgICAgICBzZWQgJ3MvLipcW1woLipcKVxdL1wxL2cnIHwgXAorICAgICAgICBzZWQgInMsXFxcJE9SSUdJTiwvJG9yaWdpbixnImAiCisKKyAgICBpZiB0ZXN0IC1uICIkbmV3X3JwYXRoIjsgdGhlbgorICAgICAgICBwcmludF9kZWJ1ZyAiQ29udmVydGluZyBSUEFUSCAnJG9sZF9ycGF0aCcgLT4gJyRuZXdfcnBhdGgnIgorICAgICAgICAkUEFUQ0hFTEYgLS1zZXQtcnBhdGggIiRuZXdfcnBhdGgiICIkcGF0aCIKKyAgICBmaQorfQorCithZGRfcGF0aCAoKQoreworICAgIGNhc2UgIiAkdGFyZ2V0X3BhdGhzICIgaW4KKyAgICAgICAgKiIgJDEgIiopCisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICAgICAgOzsKKyAgICAgICAgKikKKyAgICAgICAgICAgIHRhcmdldF9wYXRocz0iJHRhcmdldF9wYXRocyAkMSIKKyAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgICAgICA7OworICAgIGVzYWMKK30KKworYWRkX2FsaWFzICgpCit7CisgICAgaWYgdGVzdCAiJDEiICE9ICIkMiI7IHRoZW4KKyAgICAgICAgbG9jYWwgYWxpYXM9IiQxPSQyIgorICAgICAgICBjYXNlICIgJHRhcmdldF9hbGlhc2VzICIgaW4KKyAgICAgICAgICAgICoiICRhbGlhcyAiKikKKyAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgKikKKyAgICAgICAgICAgICAgICBwcmludF9kZWJ1ZyAiQWRkaW5nIGFsaWFzICckMicgLT4gJyQxJyIKKyAgICAgICAgICAgICAgICB0YXJnZXRfYWxpYXNlcz0iJHRhcmdldF9hbGlhc2VzICRhbGlhcyIKKyAgICAgICAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgZmkKK30KKworbm9ybWFsaXplX3BhdGggKCkKK3sKKyAgICAjIE5vcm1hbGl6ZXMgdGhlIHBhdGggdG8gYSBmaWxlIG9yIGRpcmVjdG9yeSwgcmVtb3ZpbmcgYWxsICIuIiBhbmQgIi4uIgorICAgICMgZW50cmllcy4gVXNlIHB3ZCAtTCB0byBleHBsaWNpdGx5IHByZXZlbnQgc3ltbGluayBleHBhbnNpb24KKyAgICBsb2NhbCBwYXRoPSQxCisgICAgaWYgdGVzdCAtZiAiJHBhdGgiOyB0aGVuCisgICAgICAgIHB1c2hkICQoZGlybmFtZSAkcGF0aCkgPiAvZGV2L251bGwgMj4mMQorICAgICAgICBkaXJfcGF0aD0kKHB3ZCAtTCkKKyAgICAgICAgcGF0aD0kZGlyX3BhdGgvJChiYXNlbmFtZSAkcGF0aCkKKyAgICAgICAgcG9wZCA+IC9kZXYvbnVsbCAyPiYxCisgICAgZWxpZiB0ZXN0IC1kICIkcGF0aCI7IHRoZW4KKyAgICAgICAgcHVzaGQgJHBhdGggPiAvZGV2L251bGwgMj4mMQorICAgICAgICBwYXRoPSQocHdkIC1MKQorICAgICAgICBwb3BkID4gL2Rldi9udWxsIDI+JjEKKyAgICBmaQorICAgIGVjaG8gJHBhdGgKK30KKworYWRkX2ZpbGVfY29tbW9uKCkKK3sKKyAgICBsb2NhbCBwPSIkMSIKKyAgICBsb2NhbCBwYXRoPSIkMiIKKyAgICBsb2NhbCBhbGlhcz0iJDMiCisKKyAgICBhZGRfYWxpYXMgIiRwYXRoIiAiJHAiCisgICAgaWYgdGVzdCAtbiAiJGFsaWFzIjsgdGhlbgorICAgICAgICBhZGRfYWxpYXMgIiRwYXRoIiAiJGFsaWFzIgorICAgIGZpCisKKyAgICBhZGRfcGF0aCAiJHBhdGgiIHx8IHJldHVybiAxCisgICAgcHJpbnRfZGVidWcgIkFkZGluZyBmaWxlICckcGF0aCciCisKKyAgICByZXR1cm4gMAorfQorCithZGRfZGVwcygpCit7CisgICAgbG9jYWwgcGF0aD0iJDEiCisgICAgbG9jYWwgaW50ZXJwPSIkMiIKKworICAgIGlmIHRlc3QgLW4gIiRpbnRlcnAiICYmIHRlc3QgLXggIiRpbnRlcnAiOyB0aGVuCisgICAgICAgICMgVXNlIHRoZSBkeW5hbWljIGxvYWRlcnMgLS1saXN0IGFyZ3VtZW50IHRvIGxpc3QgdGhlCisgICAgICAgICMgZGVwZW5kZW5jaWVzLiBUaGUgcHJvZ3JhbSBtYXkgaGF2ZSBhIGRpZmZlcmVudCBwcm9ncmFtCisgICAgICAgICMgaW50ZXJwcmV0ZXIgKHR5cGljYWwgd2hlbiB1c2luZyB1bmluYXRpdmUgdGFyYmFsbHMpLCB3aGljaCBpcworICAgICAgICAjIHdoeSB3ZSBjYW4ndCBqdXN0IGNhbGwgbGRkLgorICAgICAgICBkZXBzPSJgJGludGVycCAtLWxpc3QgIiRwYXRoImAiCisgICAgZWxzZQorICAgICAgICBkZXBzPSJgbGRkICIkcGF0aCJgIgorICAgIGZpCisKKyAgICBwcmludF9kZWJ1ZyAiRGVwZW5kZW5jaWVzIGFyZToiCisgICAgcHJpbnRfZGVidWcgIiRkZXBzIgorICAgIGlmIHRlc3QgLW4gIiRkZXBzIjsgdGhlbgorICAgICAgICBmb3IgbGliIGluICRkZXBzOyBkbworICAgICAgICAgICAgIyBsZGQgbm93IG91dHB1dHMgbGQgYXMgL2xpYi9sZC1saW51eC5zby54eCBvbiBjdXJyZW50IG5wdGwKKyAgICAgICAgICAgICMgYmFzZWQgZ2xpYmMgdGhpcyByZWdleHAgcGFyc2UgdGhlIG91dHB1dHMgbGlrZToKKyAgICAgICAgICAgICMgbGRkIC91c3IvYmluL2djYworICAgICAgICAgICAgIyAgICAgICAgIGxpbnV4LWdhdGUuc28uMSA9PiAgKDB4ZmZmZmUwMDApCisgICAgICAgICAgICAjICAgICAgICAgbGliYy5zby42ID0+IC9saWIvdGxzL2xpYmMuc28uNiAoMHhiN2U4MTAwMCkKKyAgICAgICAgICAgICMgICAgICAgICAvbGliL2xkLWxpbnV4LnNvLjIgKDB4YjdmZTgwMDApCisgICAgICAgICAgICAjIGNvdmVyaW5nIGJvdGggc2l0dWF0aW9ucyAoIHdpdGggPT4gYW5kIHdpdGhvdXQgKQorICAgICAgICAgICAgbGliPSJgZWNobyAiJGxpYiIgfCBzZWQgLW4gJ3MsXlteL10qXCgvW14gXSpcKS4qLFwxLHAnYCIKKworICAgICAgICAgICAgdGVzdCAtZiAiJGxpYiIgfHwgY29udGludWUKKyAgICAgICAgICAgICMgQ2hlY2sgd2hldGhlciB0aGUgc2FtZSBsaWJyYXJ5IGFsc28gZXhpc3RzIGluIHRoZSBwYXJlbnQKKyAgICAgICAgICAgICMgZGlyZWN0b3J5LCBhbmQgcHJlZmVyIHRoYXQgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBpdCBpcyBhCisgICAgICAgICAgICAjIG1vcmUgZ2VuZXJpYyBvbmUuCisgICAgICAgICAgICBsb2NhbCBiYXNlbGliPWBlY2hvICIkbGliIiB8IHNlZCAncyxcKC9bXi9dKlwpLy4qXCgvW14vXSpcKSQsXDFcMiwnYAorICAgICAgICAgICAgdGVzdCAtZiAiJGJhc2VsaWIiICYmIGxpYj0kYmFzZWxpYgorICAgICAgICAgICAgYWRkX2RlcGVuZGVuY3kgIiRsaWIiICIkaW50ZXJwIgorICAgICAgICBkb25lCisgICAgZmkKK30KKworYWRkX2RlcGVuZGVuY3koKQoreworICAgIGxvY2FsIHA9YG5vcm1hbGl6ZV9wYXRoICQxYAorICAgICMgcmVhZGxpbmsgaXMgcmVxdWlyZWQgZm9yIFlvY3RvLCBzbyB3ZSBjYW4gdXNlIGl0CisgICAgbG9jYWwgcGF0aD1gcmVhZGxpbmsgLWYgIiRwImAKKyAgICBsb2NhbCBpbnRlcnA9IiQyIgorCisgICAgYWRkX2ZpbGVfY29tbW9uICIkcCIgIiRwYXRoIiB8fCByZXR1cm4KKworICAgIGlmIHRlc3QgLXggIiRwYXRoIiAmJiBpc19keW5hbWljX2VsZiAiJHBhdGgiOyB0aGVuCisgICAgICAgIGFkZF9kZXBzICIkcGF0aCIgIiRpbnRlcnAiCisgICAgZmkKIH0KIAogYWRkX2ZpbGUgKCkKIHsKLSAgbG9jYWwgbmFtZT0iJDEiCi0gIGxvY2FsIHBhdGg9IiQxIjsKLSAgaWYgdGVzdCAtbiAiJDIiOyB0aGVuCi0gICAgbmFtZT0iJDIiCi0gIGZpCi0gIHRlc3QgLXogIiRuYW1lIiAmJiByZXR1cm4KLSAgIyBscyAtSCBpc24ndCByZWFsbHkgdGhlIHNhbWUgYXMgcmVhZGxpbmssIGJ1dAotICAjIHJlYWRsaW5rIGlzIG5vdCBwb3J0YWJsZSBlbm91Z2guCi0gIHBhdGg9YGxzIC1IICRwYXRoYAotICB0b2FkZD0iJG5hbWU9JHBhdGgiCi0gIGlzX2NvbnRhaW5lZCAiJHRvYWRkIiAmJiByZXR1cm4KLSAgaWYgdGVzdCAteiAiJHNpbGVudCI7IHRoZW4KLSAgZWNobyAiYWRkaW5nIGZpbGUgJHRvYWRkIgotICBmaQotICB0YXJnZXRfZmlsZXM9IiR0YXJnZXRfZmlsZXMgJHRvYWRkIgotICBpZiB0ZXN0IC14ICIkcGF0aCI7IHRoZW4KLSAgICAjIE9ubHkgY2FsbCBsZGQgd2hlbiBpdCBtYWtlcyBzZW5zZQotICAgIGlmIGZpbGUgLUwgIiRwYXRoIiB8IGdyZXAgJ0VMRicgPiAvZGV2L251bGwgMj4mMTsgdGhlbgotCWlmICEgZmlsZSAtTCAiJHBhdGgiIHwgZ3JlcCAnc3RhdGljJyA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCi0JICAgIyBsZGQgbm93IG91dHB1dHMgbGQgYXMgL2xpYi9sZC1saW51eC5zby54eCBvbiBjdXJyZW50IG5wdGwgYmFzZWQgZ2xpYmMKLQkJIyB0aGlzIHJlZ2V4cCBwYXJzZSB0aGUgb3V0cHV0cyBsaWtlOgotCQkjIGxkZCAvdXNyL2Jpbi9nY2MKLQkJIyAgICAgICAgIGxpbnV4LWdhdGUuc28uMSA9PiAgKDB4ZmZmZmUwMDApCi0JCSMgICAgICAgICBsaWJjLnNvLjYgPT4gL2xpYi90bHMvbGliYy5zby42ICgweGI3ZTgxMDAwKQotCQkjICAgICAgICAgL2xpYi9sZC1saW51eC5zby4yICgweGI3ZmU4MDAwKQotCQkjIGNvdmVyaW5nIGJvdGggc2l0dWF0aW9ucyAoIHdpdGggPT4gYW5kIHdpdGhvdXQgKQotICAgICAgICAgIGZvciBsaWIgaW4gYGxkZCAiJHBhdGgiIHwgc2VkIC1uICdzLF5bXi9dKlwoL1teIF0qXCkuKixcMSxwJ2A7IGRvCi0JICAgIHRlc3QgLWYgIiRsaWIiIHx8IGNvbnRpbnVlCi0JICAgICMgQ2hlY2sgd2V0aGVyIHRoZSBzYW1lIGxpYnJhcnkgYWxzbyBleGlzdHMgaW4gdGhlIHBhcmVudCBkaXJlY3RvcnksCi0JICAgICMgYW5kIHByZWZlciB0aGF0IG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgaXQgaXMgYSBtb3JlIGdlbmVyaWMgb25lLgotCSAgICBsb2NhbCBiYXNlbGliPWBlY2hvICIkbGliIiB8IHNlZCAncyxcKC9bXi9dKlwpLy4qXCgvW14vXSpcKSQsXDFcMiwnYAotCSAgICB0ZXN0IC1mICIkYmFzZWxpYiIgJiYgbGliPSRiYXNlbGliCi0JICBhZGRfZmlsZSAiJGxpYiIKLSAgICAgICAgZG9uZQotICAgICAgZmkKKyAgICBsb2NhbCBwPWBub3JtYWxpemVfcGF0aCAkMWAKKyAgICAjIHJlYWRsaW5rIGlzIHJlcXVpcmVkIGZvciBZb2N0bywgc28gd2UgY2FuIHVzZSBpdAorICAgIGxvY2FsIHBhdGg9YHJlYWRsaW5rIC1mICIkcCJgCisKKyAgICBhZGRfZmlsZV9jb21tb24gIiRwIiAiJHBhdGgiICIkMiIgfHwgcmV0dXJuCisKKyAgICBpZiB0ZXN0IC14ICIkcGF0aCIgJiYgaXNfZHluYW1pY19lbGYgIiRwYXRoIjsgdGhlbgorICAgICAgICAjIFJlcXVlc3QgdGhlIHByb2dyYW0gaW50ZXJwZXRlciAoZHluYW1pYyBsb2FkZXIpCisgICAgICAgIGludGVycD1gcmVhZGVsZiAtVyAtbCAiJHBhdGgiIHwgZ3JlcCAiUmVxdWVzdGluZyBwcm9ncmFtIGludGVycHJldGVyOiIgfCBzZWQgInMvXHMqXFtSZXF1ZXN0aW5nIHByb2dyYW0gaW50ZXJwcmV0ZXI6XHMqXCguKlwpXF0vXDEvZyJgCisgICAgICAgIHByaW50X2RlYnVnICJJbnRlcnByZXRlciBpcyAnJGludGVycCciCisKKyAgICAgICAgYWRkX2RlcHMgIiRwYXRoIiAiJGludGVycCIKICAgICBmaQotICBmaQogfQogCi0jIGJhY2t3YXJkIGNvbXBhdAotaWYgdGVzdCAiJDEiID0gIi0tcmVzcGVjdC1wYXRoIjsgdGhlbgotICBzaGlmdAotZmkKLQotI2FkZCBhIC0tc2lsZW50IHN3aXRjaCB0byBhdm9pZCAiYnJva2VuIHBpcGUiIGVycm9ycyB3aGVuIGNhbGxpbmcgdGhpcyBzY2lwdCBmcm9tIHdpdGhpbiBPRQotaWYgdGVzdCAiJDEiID0gIi0tc2lsZW50IjsgdGhlbgotIHNpbGVudD0xCi0gc2hpZnQKLWZpCi0KK3doaWxlIHRlc3QgLW4gIiQxIjsgZG8KKyAgICBjYXNlICIkMSIgaW4KKyAgICAgICAgLS1yZXNwZWN0LXBhdGgpCisgICAgICAgICAgICAjIElnbm9yZSBmb3IgYmFja3dhcmQgY29tcGF0YWJpbGl0eQorICAgICAgICAgICAgOzsKKyAgICAgICAgLS1kZWJ1ZykKKyAgICAgICAgICAgIGRlYnVnPTEKKyAgICAgICAgICAgIDs7CisgICAgICAgIC0tbG9nKQorICAgICAgICAgICAgZG9fbG9nPTEKKyAgICAgICAgICAgIDs7CisgICAgICAgIC0tZXh0cmE9KikKKyAgICAgICAgICAgIGV4dHJhX3Rvb2xzPSIkZXh0cmFfdG9vbHMgJHsxIy0tZXh0cmE9fSIKKyAgICAgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgOzsKKyAgICBlc2FjCisgICAgc2hpZnQKK2RvbmUKIAogYWRkZWRfZ2NjPSQxCiBzaGlmdApAQCAtNzYsMTkgKzIxNSwzNSBAQAogc2hpZnQKIGFyY2hpdmVfbmFtZT0kMQogCitpZiB0ZXN0IC1uICIkZG9fbG9nIjsgdGhlbgorICAgIGxvZ19wYXRoPSIkYXJjaGl2ZV9uYW1lLmxvZyIKKyAgICBybSAtZiAiJGxvZ19wYXRoIgorZmkKKworaWYgdGVzdCAteiAiJFBBVENIRUxGIjsgdGhlbgorICAgIFBBVENIRUxGPWB3aGljaCBwYXRjaGVsZiAyPiAvZGV2L251bGxgCitmaQoraWYgdGVzdCAteiAiJFBBVENIRUxGIjsgdGhlbgorICAgIFBBVENIRUxGPWB3aGljaCBwYXRjaGVsZi11bmluYXRpdmUgMj4gL2Rldi9udWxsYAorZmkKK2lmIHRlc3QgLXogIiRQQVRDSEVMRiI7IHRoZW4KKyAgICBwcmludF9vdXRwdXQgInBhdGNoZWxmIGlzIHJlcXVpcmVkIgorICAgIGV4aXQgMQorZmkKKwogaWYgdGVzdCAteiAiJGFkZGVkX2djYyIgfHwgdGVzdCAteiAiJGFkZGVkX2d4eCIgOyB0aGVuCi0JZWNobyAidXNhZ2U6ICQwIDxnY2NfcGF0aD4gPGcrK19wYXRoPiIKLQlleGl0IDEKKyAgICBwcmludF9vdXRwdXQgInVzYWdlOiAkMCA8Z2NjX3BhdGg+IDxnKytfcGF0aD4iCisgICAgZXhpdCAxCiBmaQogCiBpZiAhIHRlc3QgLXggIiRhZGRlZF9nY2MiIDsgdGhlbgotICBlY2hvICInJGFkZGVkX2djYycgaXMgbm8gZXhlY3V0YWJsZS4iCi0gIGV4aXQgMQorICAgIHByaW50X291dHB1dCAiJyRhZGRlZF9nY2MnIGlzIG5vdCBleGVjdXRhYmxlLiIKKyAgICBleGl0IDEKIGZpCiAKIGlmICEgdGVzdCAteCAiJGFkZGVkX2d4eCIgOyB0aGVuCi0gIGVjaG8gIickYWRkZWRfZ2NjJyBpcyBubyBleGVjdXRhYmxlLiIKLSAgZXhpdCAxCisgICAgcHJpbnRfb3V0cHV0ICInJGFkZGVkX2djYycgaXMgbm90IGV4ZWN1dGFibGUuIgorICAgIGV4aXQgMQogZmkKIAogCkBAIC05Nyw5NiArMjUyLDEzMSBAQAogYWRkX2ZpbGUgJGFkZGVkX2d4eCAvdXNyL2Jpbi9nKysKIAogaWYgdGVzdCAteiAiJGFkZGVkX2FzIiA7IHRoZW4KLSBhZGRfZmlsZSAvdXNyL2Jpbi9hcyAvdXNyL2Jpbi9hcworICAgIGFkZF9maWxlIC91c3IvYmluL2FzIC91c3IvYmluL2FzCiBlbHNlCi0gaWYgISB0ZXN0IC14ICIkYWRkZWRfYXMiIDsgdGhlbgotICBlY2hvICInJGFkZGVkX2FzJyBpcyBubyBleGVjdXRhYmxlLiIKLSAgZXhpdCAxCi0gZmkKKyAgICBpZiAhIHRlc3QgLXggIiRhZGRlZF9hcyIgOyB0aGVuCisgICAgICAgIHByaW50X291dHB1dCAiJyRhZGRlZF9hcycgaXMgbm90IGV4ZWN1dGFibGUuIgorICAgICAgICBleGl0IDEKKyAgICBmaQogCi0gYWRkX2ZpbGUgJGFkZGVkX2FzICAvdXNyL2Jpbi9hcworICAgIGFkZF9maWxlICRhZGRlZF9hcyAgL3Vzci9iaW4vYXMKIGZpCiAKIGFkZF9maWxlIGAkYWRkZWRfZ2NjIC1wcmludC1wcm9nLW5hbWU9Y2MxYCAvdXNyL2Jpbi9jYzEKIGFkZF9maWxlIGAkYWRkZWRfZ3h4IC1wcmludC1wcm9nLW5hbWU9Y2MxcGx1c2AgL3Vzci9iaW4vY2MxcGx1cwogc3BlY2ZpbGU9YCRhZGRlZF9nY2MgLXByaW50LWZpbGUtbmFtZT1zcGVjc2AKIGlmIHRlc3QgLW4gIiRzcGVjZmlsZSIgJiYgdGVzdCAtZSAiJHNwZWNmaWxlIjsgdGhlbgotICBhZGRfZmlsZSAiJHNwZWNmaWxlIgorICAgIGFkZF9maWxlICIkc3BlY2ZpbGUiCiBmaQogCiBsdG9maWxlPWAkYWRkZWRfZ2NjIC1wcmludC1wcm9nLW5hbWU9bHRvMWAKLXBsdWdpbmZpbGU9IiR7bHRvZmlsZSVsdG8xfWxpYmx0b19wbHVnaW4uc28iCitwbHVnaW5maWxlPWBub3JtYWxpemVfcGF0aCAiJHtsdG9maWxlJWx0bzF9bGlibHRvX3BsdWdpbi5zbyJgCiBpZiB0ZXN0IC1yICIkcGx1Z2luZmlsZSIKIHRoZW4KLSAgYWRkX2ZpbGUgJHBsdWdpbmZpbGUgICR7cGx1Z2luZmlsZSMqdXNyfQotICBhZGRfZmlsZSAkcGx1Z2luZmlsZSAgL3VzciR7cGx1Z2luZmlsZSMqdXNyfQorICAgIGFkZF9maWxlICRwbHVnaW5maWxlICAke3BsdWdpbmZpbGUjKnVzcn0KKyAgICBhZGRfZmlsZSAkcGx1Z2luZmlsZSAgL3VzciR7cGx1Z2luZmlsZSMqdXNyfQogZmkKIAorIyBmb3IgdGVzdGluZyB0aGUgZW52aXJvbm1lbnQgaXMgdXNhYmxlIGF0IGFsbAoraWYgdGVzdCAteCAvYmluL3RydWU7IHRoZW4KKyAgICBhZGRfZmlsZSAvYmluL3RydWUKK2VsaWYgdGVzdCAteCAvdXNyL2Jpbi90cnVlOyB0aGVuCisgICAgYWRkX2ZpbGUgL3Vzci9iaW4vdHJ1ZSAvYmluL3RydWUKK2Vsc2UKKyAgICBwcmludF9vdXRwdXQgIid0cnVlJyBub3QgZm91bmQiCisgICAgZXhpdCAxCitmaQorCitmb3IgZXh0cmEgaW4gJGV4dHJhX3Rvb2xzOyBkbworICAgIGlmIHRlc3QgLXggIiRleHRyYSI7IHRoZW4KKyAgICAgICAgYWRkX2ZpbGUgIiRleHRyYSIKKyAgICBlbHNlCisgICAgICAgIHByaW50X291dHB1dCAiJyRleHRyYScgbm90IGZvdW5kIgorICAgICAgICBleGl0IDEKKyAgICBmaQorZG9uZQorCitsaW5rX3JlbCAoKQoreworICAgIGxvY2FsIHRhcmdldD0iJDEiCisgICAgbG9jYWwgbmFtZT0iJDIiCisgICAgbG9jYWwgYmFzZT0iJDMiCisKKyAgICBsb2NhbCBwcmVmaXg9YGRpcm5hbWUgJG5hbWVgCisKKyAgICBwcmVmaXg9YGVjaG8gJHByZWZpeCB8IHNlZCAncyxbXi9dXCssLi4sZycgfCBzZWQgJ3MsXi8qLCxnJ2AKKworICAgIGxuIC1zICRwcmVmaXgvJHRhcmdldCAkYmFzZS8kbmFtZQorfQorCiB0ZW1wZGlyPWBta3RlbXAgLWQgL3RtcC9pY2VjY2VudlhYWFhYWGAKLW5ld190YXJnZXRfZmlsZXM9Ci1mb3IgaSBpbiAkdGFyZ2V0X2ZpbGVzOyBkbwotIGNhc2UgJGkgaW4KLSAgICo9LyopCit0YXJnZXRfZmlsZXM9Citmb3IgcGF0aCBpbiAkdGFyZ2V0X3BhdGhzOyBkbworICAgIG1rZGlyIC1wICR0ZW1wZGlyL2BkaXJuYW1lICRwYXRoYAorICAgIGNwIC1wSCAkcGF0aCAkdGVtcGRpci8kcGF0aAorCisgICAgaWYgdGVzdCAtZiAkdGVtcGRpci8kcGF0aCAtYSAteCAkdGVtcGRpci8kcGF0aDsgdGhlbgorICAgICAgICBzdHJpcCAtcyAkdGVtcGRpci8kcGF0aCAyPi9kZXYvbnVsbAorICAgIGZpCisKKyAgICBmaXhfcnBhdGggJHRlbXBkaXIvJHBhdGggYGRpcm5hbWUgJHBhdGhgCisgICAgdGFyZ2V0X2ZpbGVzPSIkdGFyZ2V0X2ZpbGVzICRwYXRoIgorZG9uZQorCitmb3IgaSBpbiAkdGFyZ2V0X2FsaWFzZXM7IGRvCiAgICAgdGFyZ2V0PWBlY2hvICRpIHwgY3V0IC1kPSAtZjFgCi0gICAgcGF0aD1gZWNobyAkaSB8IGN1dCAtZD0gLWYyYAotICAgIDs7Ci0gICAqKQotICAgIHBhdGg9JGkKLSAgICB0YXJnZXQ9JGkKLSAgICA7OwotICBlc2FjCi0gIG1rZGlyIC1wICR0ZW1wZGlyL2BkaXJuYW1lICR0YXJnZXRgCi0gIGNwIC1wICRwYXRoICR0ZW1wZGlyLyR0YXJnZXQKLSAgaWYgdGVzdCAtZiAkdGVtcGRpci8kdGFyZ2V0IC1hIC14ICR0ZW1wZGlyLyR0YXJnZXQ7IHRoZW4KLSAgICBzdHJpcCAtcyAkdGVtcGRpci8kdGFyZ2V0IDI+L2Rldi9udWxsCi0gIGZpCi0gIHRhcmdldD1gZWNobyAkdGFyZ2V0IHwgY3V0IC1iMi1gCi0gIG5ld190YXJnZXRfZmlsZXM9IiRuZXdfdGFyZ2V0X2ZpbGVzICR0YXJnZXQiCisgICAgbGlua19uYW1lPWBlY2hvICRpIHwgY3V0IC1kPSAtZjJgCisKKyAgICBta2RpciAtcCAkdGVtcGRpci9gZGlybmFtZSAkbGlua19uYW1lYAorICAgICMgUmVsYXRpdmUgbGlua3MgYXJlIHVzZWQgYmVjYXVzZSB0aGUgZmlsZXMgYXJlIGNoZWNrZWQgZm9yIGJlaW5nCisgICAgIyBleGVjdXRhYmxlIG91dHNpZGUgdGhlIGNocm9vdAorICAgIGxpbmtfcmVsICR0YXJnZXQgJGxpbmtfbmFtZSAkdGVtcGRpcgorCisgICAgbGlua19uYW1lPWBlY2hvICRsaW5rX25hbWUgfCBjdXQgLWIyLWAKKyAgICB0YXJnZXRfZmlsZXM9IiR0YXJnZXRfZmlsZXMgJGxpbmtfbmFtZSIKIGRvbmUKIAogI3NvcnQgdGhlIGZpbGVzCi10YXJnZXRfZmlsZXM9YGZvciBpIGluICRuZXdfdGFyZ2V0X2ZpbGVzOyBkbyBlY2hvICRpOyBkb25lIHwgc29ydGAKK3RhcmdldF9maWxlcz1gZm9yIGkgaW4gJHRhcmdldF9maWxlczsgZG8gZWNobyAkaTsgZG9uZSB8IHNvcnRgCiAKICN0ZXN0IGlmIGFuIGFyY2hpdmUgbmFtZSB3YXMgc3VwcGxpZWQKICNpZiBub3QgdXNlIHRoZSBtZDUgb2YgYWxsIGZpbGVzIGFzIHRoZSBhcmNoaXZlIG5hbWUKIGlmIHRlc3QgLXogIiRhcmNoaXZlX25hbWUiOyB0aGVuCi0gIG1kNXN1bT1OT05FCi0gIGZvciBmaWxlIGluIC91c3IvYmluL21kNXN1bSAvYmluL21kNSAvdXNyL2Jpbi9tZDU7IGRvCi0gICAgaWYgdGVzdCAteCAkZmlsZTsgdGhlbgotICAgICAgbWQ1c3VtPSRmaWxlCi0gICAgICBicmVhawotICAgIGZpCi0gIGRvbmUKKyAgICBtZDVzdW09Tk9ORQorICAgIGZvciBmaWxlIGluIC91c3IvYmluL21kNXN1bSAvYmluL21kNSAvdXNyL2Jpbi9tZDU7IGRvCisgICAgICAgIGlmIHRlc3QgLXggJGZpbGU7IHRoZW4KKyAgICAgICAgICAgIG1kNXN1bT0kZmlsZQorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZmkKKyAgICBkb25lCiAKLSAgI2NhbGN1bGF0ZSBtZDUgYW5kIHVzZSBpdCBhcyB0aGUgYXJjaGl2ZSBuYW1lCi0gIGFyY2hpdmVfbmFtZT1gZm9yIGkgaW4gJHRhcmdldF9maWxlczsgZG8gdGVzdCAtZiAkdGVtcGRpci8kaSAmJiAkbWQ1c3VtICR0ZW1wZGlyLyRpOyBkb25lIHwgc2VkIC1lICdzLyAuKiQvLycgfCAkbWQ1c3VtIHwgc2VkIC1lICdzLyAuKiQvLydgLnRhci5neiB8fCB7Ci0gICAgaWYgdGVzdCAteiAiJHNpbGVudCI7IHRoZW4KLSAgICAgZWNobyAiQ291bGRuJ3QgY29tcHV0ZSBNRDUgc3VtLiIKLSAgICBmaQotICAgIGV4aXQgMgotICB9Ci0gIG15ZGlyPWBwd2RgCi1lbHNlCi0gIG15ZGlyPSJgZGlybmFtZSAiJGFyY2hpdmVfbmFtZSJgIgotCi0gICNjaGVjayBpZiB3ZSBoYXZlIGEgZnVsbCBwYXRoIG9yIG9ubHkgYSBmaWxlbmFtZQotICBpZiB0ZXN0ICIkbXlkaXIiID0gIi4iIDsgdGhlbgorICAgICNjYWxjdWxhdGUgbWQ1IGFuZCB1c2UgaXQgYXMgdGhlIGFyY2hpdmUgbmFtZQorICAgIGFyY2hpdmVfbmFtZT1gZm9yIGkgaW4gJHRhcmdldF9maWxlczsgZG8gdGVzdCAtZiAkdGVtcGRpci8kaSAmJiAkbWQ1c3VtICR0ZW1wZGlyLyRpOyBkb25lIHwgc2VkIC1lICdzLyAuKiQvLycgfCAkbWQ1c3VtIHwgc2VkIC1lICdzLyAuKiQvLydgLnRhci5neiB8fCB7CisgICAgICAgIHByaW50X291dHB1dCAiQ291bGRuJ3QgY29tcHV0ZSBNRDUgc3VtLiIKKyAgICAgICAgZXhpdCAyCisgICAgfQogICAgIG15ZGlyPWBwd2RgCi0gIGVsc2UKLSAgICBteWRpcj0iIgotICBmaQorZWxzZQorICAgIG15ZGlyPSJgZGlybmFtZSAiJGFyY2hpdmVfbmFtZSJgIgorCisgICAgI2NoZWNrIGlmIHdlIGhhdmUgYSBmdWxsIHBhdGggb3Igb25seSBhIGZpbGVuYW1lCisgICAgaWYgdGVzdCAiJG15ZGlyIiA9ICIuIiA7IHRoZW4KKyAgICAgICAgbXlkaXI9YHB3ZGAKKyAgICBlbHNlCisgICAgICAgIG15ZGlyPSIiCisgICAgZmkKIGZpCiAKLWlmIHRlc3QgLXogIiRzaWxlbnQiOyB0aGVuCi1lY2hvICJjcmVhdGluZyAkYXJjaGl2ZV9uYW1lIgotZmkKK3ByaW50X291dHB1dCAiY3JlYXRpbmcgJGFyY2hpdmVfbmFtZSIKIAogY2QgJHRlbXBkaXIKLXRhciAtY3poZiAiJG15ZGlyLyRhcmNoaXZlX25hbWUiICR0YXJnZXRfZmlsZXMgfHwgewotIGlmIHRlc3QgLXogIiRzaWxlbnQiOyB0aGVuCi0gIGVjaG8gIkNvdWxkbid0IGNyZWF0ZSBhcmNoaXZlIgotIGZpCi0gIGV4aXQgMworIyBBZGQgZXZlcnl0aGluZyBpbiB0aGUgdGVtcCBkaXJlY3RvcnkuIFRhciBkb2Vzbid0IGxpa2UgdG8gYmUgZ2l2ZW4gZmlsZXMgd2l0aAorIyAiLi4iIGluIHRoZW0sIHdoaWNoIGZyZXF1ZW50bHkgaGFwcGVucyBpbiAkdGFyZ2V0X2ZpbGVzLCBhbmQgd2lsbCBzdHJpcCBvZmYKKyMgdGhlIHBhdGggcHJlZml4IHBhc3QgdGhlIG9mZmVuZGluZyAiLi4iLiBUaGlzIG1ha2VzIHRoZSBhcmNoaXZlIGdlbmVyYXRlCisjIGluY29ycmVjdGx5Cit0YXIgLWN6ZiAiJG15ZGlyLyRhcmNoaXZlX25hbWUiIC4gfHwgeworICAgIHByaW50X291dHB1dCAiQ291bGRuJ3QgY3JlYXRlIGFyY2hpdmUiCisgICAgZXhpdCAzCiB9CiBjZCAuLgogcm0gLXJmICR0ZW1wZGlyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLWNyZWF0ZS1lbnYvaWNlY2MtY3JlYXRlLWVudl8wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLWNyZWF0ZS1lbnYvaWNlY2MtY3JlYXRlLWVudl8wLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDUzOTQ1ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtY3JlYXRlLWVudi9pY2VjYy1jcmVhdGUtZW52XzAuMS5iYgpAQCAtMCwwICsxLDM2IEBACitTVU1NQVJZID0gImljZWNjIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCIKK0RFU0NSSVBUSU9OID0gIlRoaXMgaXMgYSB2ZXJzaW9uIG9mIHRoZSBpY2VjYy1jcmVhdGUtZW52IHNjcmlwdCB0aGF0IGhhcyBcCitiZWVuIG1vZGlmaWVkIGluIG9yZGVyIHRvIG1ha2UgaXQgd29yayB3aXRoIE9FLiIKK1NFQ1RJT04gPSAiYmFzZSIKKyMgc291cmNlIGZpbGUgaGFzIGp1c3QgYSAiR1BMIiB3b3JkLCBidXQgdXBzdHJlYW0gaXMgR1BMdjIrLgorIyBtb3N0IHByb2JhYmx5IGp1c3QgR1BMIHdvdWxkIGJlIGEgbWlzdGFrZQorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9pY2VjYy1jcmVhdGUtZW52O2JlZ2lubGluZT0yO2VuZGxpbmU9NTttZDU9YWUxZGYzZDZhMDU4YmZkYTQwYjY2MDk0YzVmNjA2NWYiCisKK1BSID0gInIyIgorCitERVBFTkRTID0gIiIKK0lOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCisKKyMgVGhpcyBpcyBuZWVkZWQsIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZXJlIGlzIGRlcGVuZGVuY3kgbG9vcCBmcm9tIHF1aWx0LW5hdGl2ZQorIyBEZXBlbmRlbmN5IGxvb3AgIzEgZm91bmQ6CisjICBUYXNrIDEwOTA3IChtZXRhL3JlY2lwZXMtZGV2dG9vbHMvcXVpbHQvcXVpbHQtbmF0aXZlXzAuNjAuYmIsIGRvX2luc3RhbGwpIChkZXBlbmRlbnQgVGFza3MgWydxdWlsdC1uYXRpdmUsIGRvX2NvbXBpbGUnXSkKKyMgIFRhc2sgMTA5MDggKG1ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdC1uYXRpdmVfMC42MC5iYiwgZG9fcG9wdWxhdGVfc3lzcm9vdCkgKGRlcGVuZGVudCBUYXNrcyBbJ3F1aWx0LW5hdGl2ZSwgZG9faW5zdGFsbCddKQorIyAgVGFzayAxMDk5NyAobWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLWNyZWF0ZS1lbnYvaWNlY2MtY3JlYXRlLWVudi1uYXRpdmVfMC4xLmJiLCBkb19wYXRjaCkgKGRlcGVuZGVudCBUYXNrcyBbJ2ljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlLCBkb191bnBhY2snLCAncXVpbHQtbmF0aXZlLCBkb19wb3B1bGF0ZV9zeXNyb290J10pCisjICBUYXNrIDExMDAxIChtZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtY3JlYXRlLWVudi9pY2VjYy1jcmVhdGUtZW52LW5hdGl2ZV8wLjEuYmIsIGRvX2NvbmZpZ3VyZSkgKGRlcGVuZGVudCBUYXNrcyBbJ2ljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlLCBkb19wYXRjaCddKQorIyAgVGFzayAxMTAwMiAobWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLWNyZWF0ZS1lbnYvaWNlY2MtY3JlYXRlLWVudi1uYXRpdmVfMC4xLmJiLCBkb19jb21waWxlKSAoZGVwZW5kZW50IFRhc2tzIFsnaWNlY2MtY3JlYXRlLWVudi1uYXRpdmUsIGRvX2NvbmZpZ3VyZSddKQorIyAgVGFzayAxMDk5OCAobWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLWNyZWF0ZS1lbnYvaWNlY2MtY3JlYXRlLWVudi1uYXRpdmVfMC4xLmJiLCBkb19pbnN0YWxsKSAoZGVwZW5kZW50IFRhc2tzIFsnaWNlY2MtY3JlYXRlLWVudi1uYXRpdmUsIGRvX2NvbXBpbGUnXSkKKyMgIFRhc2sgMTA5OTkgKG1ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy1jcmVhdGUtZW52L2ljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlXzAuMS5iYiwgZG9fcG9wdWxhdGVfc3lzcm9vdCkgKGRlcGVuZGVudCBUYXNrcyBbJ2ljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlLCBkb19pbnN0YWxsJ10pCisjICBUYXNrIDEwOTEwIChtZXRhL3JlY2lwZXMtZGV2dG9vbHMvcXVpbHQvcXVpbHQtbmF0aXZlXzAuNjAuYmIsIGRvX2NvbmZpZ3VyZSkgKGRlcGVuZGVudCBUYXNrcyBbJ3F1aWx0LW5hdGl2ZSwgZG9fcGF0Y2gnLCAnaWNlY2MtY3JlYXRlLWVudi1uYXRpdmUsIGRvX3BvcHVsYXRlX3N5c3Jvb3QnXSkKKyMgIFRhc2sgMTA5MTEgKG1ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdC1uYXRpdmVfMC42MC5iYiwgZG9fY29tcGlsZSkgKGRlcGVuZGVudCBUYXNrcyBbJ3F1aWx0LW5hdGl2ZSwgZG9fY29uZmlndXJlJ10pCitQQVRDSFRPT0wgPSAicGF0Y2giCitTUkNfVVJJID0gImZpbGU6Ly9pY2VjYy1jcmVhdGUtZW52IgorCitTID0gIiR7V09SS0RJUn0iCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9LyR7YmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2ljZWNjLWNyZWF0ZS1lbnYgJHtEfS8ke2JpbmRpcn0KK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy10b29sY2hhaW4vaWNlY2MtdG9vbGNoYWluL2ljZWNjLWVudi5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtdG9vbGNoYWluL2ljZWNjLXRvb2xjaGFpbi9pY2VjYy1lbnYuc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ3NjAwNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtdG9vbGNoYWluL2ljZWNjLXRvb2xjaGFpbi9pY2VjYy1lbnYuc2gKQEAgLTAsMCArMSw0OSBAQAorIyEgL2Jpbi9zaAorIyBDb3B5cmlnaHQgKGMpIDIwMTggSm9zaHVhIFdhdHQsIEdhcm1pbiBJbnRlcm5hdGlvbmFsLEluYy4KKyMKKyMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorIyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAorIyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCisjIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKKyMgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisjIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisjCisjIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisjIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorIworIyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorIyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyMgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisjIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyMgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyMgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKKyMgU09GVFdBUkUuCisjCisKK2lmIFsgLXogIiRJQ0VDQ19QQVRIIiBdOyB0aGVuCisgICAgSUNFQ0NfUEFUSD0kKHdoaWNoIGljZWNjIDI+IC9kZXYvbnVsbCkKK2ZpCisKK2lmIFsgLW4gIiRJQ0VDQ19QQVRIIiBdOyB0aGVuCisgICAgIyBEZWZhdWx0IHRvIGRpc2FibGluZyB0aGUgY2FyZXQgd29ya2Fyb3VuZC4gSWYgc2V0IHRvICIxIiwgaWNlY2Mgd2lsbAorICAgICMgbG9jYWxseSByZWNvbXBpbGUgYW55IGZpbGVzIHRoYXQgaGF2ZSB3YXJuaW5ncywgd2hpY2ggY2FuIGFkdmVyc2VseQorICAgICMgYWZmZWN0IHBlcmZvcm1hbmNlLgorICAgICMKKyAgICAjIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2ljZWNjL2ljZWNyZWFtL2lzc3Vlcy8xOTAKKyAgICBpZiBbIC16ICIkSUNFQ0NfQ0FSRVRfV09SS0FST1VORCIgXTsgdGhlbgorICAgICAgICBJQ0VDQ19DQVJFVF9XT1JLQVJPVU5EPSIwIgorICAgIGZpCisgICAgaWYgWyAiJElDRUNDX0NBUkVUX1dPUktBUk9VTkQiICE9ICIxIiBdOyB0aGVuCisgICAgICAgIENGTEFHUz0iJENGTEFHUyAtZm5vLWRpYWdub3N0aWNzLXNob3ctY2FyZXQiCisgICAgICAgIENYWEZMQUdTPSIkQ1hYRkxBR1MgLWZuby1kaWFnbm9zdGljcy1zaG93LWNhcmV0IgorICAgIGZpCisgICAgZXhwb3J0IElDRUNDX1BBVEggSUNFQ0NfQ0FSRVRfV09SS0FST1VORAorICAgIGV4cG9ydCBJQ0VDQ19WRVJTSU9OPSIkT0VDT1JFX05BVElWRV9TWVNST09UL3Vzci9zaGFyZS9pY2VjcmVhbS9AVE9PTENIQUlOX0VOVkAiCisgICAgZXhwb3J0IElDRUNDPSIkKHdoaWNoICR7Q1JPU1NfQ09NUElMRX1nY2MpIgorICAgIGV4cG9ydCBJQ0VDWFg9IiQod2hpY2ggJHtDUk9TU19DT01QSUxFfWcrKykiCisgICAgZXhwb3J0IElDRUFTPSIkKHdoaWNoICR7Q1JPU1NfQ09NUElMRX1hcykiCisgICAgZXhwb3J0IFBBVEg9IiRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvdXNyL3NoYXJlL2ljZWNyZWFtL2JpbjokUEFUSCIKK2Vsc2UKKyAgICBlY2hvICJJY2VjYyBub3QgZm91bmQuIERpc2FibGluZyBkaXN0cmlidXRlZCBjb21waWxpbmciCitmaQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLXRvb2xjaGFpbi9pY2VjYy10b29sY2hhaW4vaWNlY2Mtc2V0dXAuc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLXRvb2xjaGFpbi9pY2VjYy10b29sY2hhaW4vaWNlY2Mtc2V0dXAuc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ4MDgyNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtdG9vbGNoYWluL2ljZWNjLXRvb2xjaGFpbi9pY2VjYy1zZXR1cC5zaApAQCAtMCwwICsxLDQzIEBACisjISAvYmluL3NoCisjIENvcHlyaWdodCAoYykgMjAxOCBKb3NodWEgV2F0dCwgR2FybWluIEludGVybmF0aW9uYWwsSW5jLgorIworIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisjIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCisjIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKKyMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyMKKyMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyMgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisjCisjIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisjIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorIyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyMgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorIyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorIyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQorIyBTT0ZUV0FSRS4KKyMKKworIyBTZXR1cCBlbnZpcm9ubWVudAorZm9yIGVudl9zZXR1cF9zY3JpcHQgaW4gYGxzICQxL2Vudmlyb25tZW50LXNldHVwLSpgOyBkbworCS4gJGVudl9zZXR1cF9zY3JpcHQKK2RvbmUKKworIyBJQ0VDQ19QQVRIIHdpbGwgaGF2ZSBiZWVuIGZvdW5kIGljZWNjLWVudi5zaAoraWYgWyAteiAiJElDRUNDX1BBVEgiIF07IHRoZW4KKyAgICBleGl0IDAKK2ZpCisKK2VjaG8gIlNldHRpbmcgdXAgSWNlQ3JlYW0gZGlzdHJpYnV0ZWQgY29tcGlsaW5nLi4uIgorCisjIENyZWF0ZSB0aGUgZW52aXJvbm1lbnQKK21rZGlyIC1wICJgZGlybmFtZSAkSUNFQ0NfVkVSU0lPTmAiCitpY2VjYy1jcmVhdGUtZW52ICRJQ0VDQyAkSUNFQ1hYICRJQ0VBUyAkSUNFQ0NfVkVSU0lPTiB8fCBleGl0ICQ/CisKKyMgQ3JlYXRlIHN5bWJvbGljIGxpbmtzCitkPSIkT0VDT1JFX05BVElWRV9TWVNST09UL3Vzci9zaGFyZS9pY2VjcmVhbS9iaW4iCitta2RpciAtcCAiJGQiCitsbiAtcyAiJElDRUNDX1BBVEgiICIkZC8ke0NST1NTX0NPTVBJTEV9Z2NjIgorbG4gLXMgIiRJQ0VDQ19QQVRIIiAiJGQvJHtDUk9TU19DT01QSUxFfWcrKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtdG9vbGNoYWluL25hdGl2ZXNkay1pY2VjYy10b29sY2hhaW5fMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy10b29sY2hhaW4vbmF0aXZlc2RrLWljZWNjLXRvb2xjaGFpbl8wLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQyNzUwZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtdG9vbGNoYWluL25hdGl2ZXNkay1pY2VjYy10b29sY2hhaW5fMC4xLmJiCkBAIC0wLDAgKzEsMzggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDE4IEpvc2h1YSBXYXR0LCBHYXJtaW4gSW50ZXJuYXRpb25hbCxJbmMuCisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCitTVU1NQVJZID0gIkdlbmVyYXRlcyBJY2VjcmVhbSB0b29sY2hhaW4gZm9yIFNESyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtXT1JLRElSfS9pY2VjYy1lbnYuc2g7YmVnaW5saW5lPTI7ZW5kbGluZT0yMDttZDU9ZGQ2YjY4YzFlZmVkOGE5ZmIwNGU0MDliM2IyODdkNDciCisKK0lOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCisKK1NSQ19VUkkgPSAiXAorICAgIGZpbGU6Ly9pY2VjYy1lbnYuc2ggXAorICAgIGZpbGU6Ly9pY2VjYy1zZXR1cC5zaCBcCisgICAgIgorCitpbmhlcml0IG5hdGl2ZXNkaworCitFTlZfTkFNRT0iJHtESVNUUk99LSR7VENMSUJDfS0ke1NES19BUkNIfS0ke1RVTkVfUEtHQVJDSH0tJHtESVNUUk9fVkVSU0lPTn0udGFyLmd6IgorCitkb19jb21waWxlKCkgeworfQorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7U0RLUEFUSE5BVElWRX0ke2RhdGFkaXJ9L2ljZWNyZWFtL2JpbgorCisgICAgaW5zdGFsbCAtZCAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kLworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2ljZWNjLWVudi5zaCAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kLworICAgIHNlZCAtaSAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kL2ljZWNjLWVudi5zaCBcCisgICAgICAgIC1lICJzLEBUT09MQ0hBSU5fRU5WQCwke0VOVl9OQU1FfSxnIgorCisgICAgaW5zdGFsbCAtZCAke0R9JHtTREtQQVRITkFUSVZFfS9wb3N0LXJlbG9jYXRlLXNldHVwLmQvCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaWNlY2Mtc2V0dXAuc2ggJHtEfSR7U0RLUEFUSE5BVElWRX0vcG9zdC1yZWxvY2F0ZS1zZXR1cC5kLworICAgIHNlZCAtaSAke0R9JHtTREtQQVRITkFUSVZFfS9wb3N0LXJlbG9jYXRlLXNldHVwLmQvaWNlY2Mtc2V0dXAuc2ggXAorICAgICAgICAtZSAicyxAVE9PTENIQUlOX0VOVkAsJHtFTlZfTkFNRX0sZyIKK30KKworUEFDS0FHRVMgPSAiJHtQTn0iCitGSUxFU18ke1BOfSA9ICIke1NES1BBVEhOQVRJVkV9IgorUkRFUEVORFNfJHtQTn0gKz0gIm5hdGl2ZXNkay1pY2VjYy1jcmVhdGUtZW52IgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ludGx0b29sL2ludGx0b29sL3BlcmwtNTIyLWRlcHJlY2F0aW9ucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaW50bHRvb2wvaW50bHRvb2wvcGVybC01MjItZGVwcmVjYXRpb25zLnBhdGNoCmluZGV4IGViNTIxNzIuLmYxMDQ5ZTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaW50bHRvb2wvaW50bHRvb2wvcGVybC01MjItZGVwcmVjYXRpb25zLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaW50bHRvb2wvaW50bHRvb2wvcGVybC01MjItZGVwcmVjYXRpb25zLnBhdGNoCkBAIC0xMCw5ICsxMCwxMSBAQAogVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgKGh0dHBzOi8vYnVncy5sYXVuY2hwYWQubmV0L2ludGx0b29sLytidWcvMTQ2NTAxMCkKIFNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CiAKLS0tLSBpbnRsdG9vbC0wLjUxLjAtT1JJRy9pbnRsdG9vbC11cGRhdGUuaW4JMjAxNS0wNS0yNyAwMDoyMDo0My4wMzgzNzk5NjMgKzAyMDAKLSsrKyBpbnRsdG9vbC0wLjUxLjAvaW50bHRvb2wtdXBkYXRlLmluCTIwMTUtMDUtMjcgMDA6MjM6NTMuMzA5MDc4MDUyICswMjAwCi1AQCAtMTA2Miw3ICsxMDYyLDcgQEAKK0luZGV4OiBpbnRsdG9vbC0wLjUxLjAvaW50bHRvb2wtdXBkYXRlLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gaW50bHRvb2wtMC41MS4wLm9yaWcvaW50bHRvb2wtdXBkYXRlLmluCisrKysgaW50bHRvb2wtMC41MS4wL2ludGx0b29sLXVwZGF0ZS5pbgorQEAgLTEwNjIsNyArMTA2Miw3IEBAIHN1YiBTdWJzdGl0dXRlVmFyaWFibGUKICAJfQogICAgICB9CiAgCkBAIC0yMSw3ICsyMyw3IEBACiAgICAgIHsKICAJbXkgJHJlc3QgPSAkMzsKICAJbXkgJHVudG91Y2hlZCA9ICQxOwotQEAgLTExOTAsMTAgKzExOTAsMTAgQEAKK0BAIC0xMTkwLDEwICsxMTkwLDEwIEBAIHN1YiBGaW5kUGFja2FnZU5hbWUKICAJJG5hbWUgICAgPX4gcy9cKCskLy9nOwogIAkkdmVyc2lvbiA9fiBzL1woKyQvL2c7CiAgCkBAIC0zNiw3ICszOCw3IEBACiAgICAgIH0KICAKICAgICAgaWYgKCRjb25mX3NvdXJjZSA9fiAvXkFDX0lOSVRcKChbXixcKV0rKSwoW14sXCldKylbLF0/KFteLFwpXSspPy9tKQotQEAgLTEyMTksMTEgKzEyMTksMTEgQEAKK0BAIC0xMjE5LDExICsxMjE5LDExIEBAIHN1YiBGaW5kUGFja2FnZU5hbWUKICAJJHZlcnNpb24gPX4gcy9cKCskLy9nOwogICAgICAgICAgJGJ1Z3VybCAgPX4gcy9cKCskLy9nIGlmIChkZWZpbmVkICRidWd1cmwpOwogIApAQCAtNTIsNCArNTQsNCBAQAogKyAgICAgICAgJHZhcmhhc2h7IlBBQ0tBR0VfQlVHUkVQT1JUIn0gPSAkYnVndXJsIGlmIChkZWZpbmVkICRidWd1cmwgYW5kIG5vdCAkYnVndXJsID1+IC9cJFx7P1x3K1x9Py8pOwogICAgICB9CiAgCi0gICAgICMgXHMgbWFrZXMgdGhpcyBub3Qgd29yaywgd2h5PwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgICAgIyBccyBtYWtlcyB0aGlzIG5vdCB3b3JrLCB3aHk/CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWMvMDAwMS1BZGQtRkFMTFRIUlUtY29tbWVudC10by1oYW5kbGUtR0NDNy13YXJuaW5ncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1jL2pzb24tYy8wMDAxLUFkZC1GQUxMVEhSVS1jb21tZW50LXRvLWhhbmRsZS1HQ0M3LXdhcm5pbmdzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzdiZTVlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1jL2pzb24tYy8wMDAxLUFkZC1GQUxMVEhSVS1jb21tZW50LXRvLWhhbmRsZS1HQ0M3LXdhcm5pbmdzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotRnJvbSA3YjI0ZjhiZDk1YWQ0ZjdkMDBjOTNjYTJhZDk5OGMxNGEwMjY2ZGJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogbWFyeGluIDxtbGlza2FAc3VzZS5jej4KLURhdGU6IFR1ZSwgMjEgTWFyIDIwMTcgMDg6NDI6MTEgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkIEZBTExUSFJVIGNvbW1lbnQgdG8gaGFuZGxlIEdDQzcgd2FybmluZ3MuCi0KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotIGpzb25fb2JqZWN0LmMgIHwgIDEgKwotIGpzb25fdG9rZW5lci5jIHwgIDEgKwotIGxpbmtoYXNoLmMgICAgIHwgMjIgKysrKysrKysrKystLS0tLS0tLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9qc29uX29iamVjdC5jIGIvanNvbl9vYmplY3QuYwotaW5kZXggNmNjNzNiYy4uNzdlOGIyMSAxMDA2NDQKLS0tLSBhL2pzb25fb2JqZWN0LmMKLSsrKyBiL2pzb25fb2JqZWN0LmMKLUBAIC01NTIsNiArNTUyLDcgQEAgaW50NjRfdCBqc29uX29iamVjdF9nZXRfaW50NjQoc3RydWN0IGpzb25fb2JqZWN0ICpqc28pCi0gICAgIHJldHVybiBqc28tPm8uY19ib29sZWFuOwotICAgY2FzZSBqc29uX3R5cGVfc3RyaW5nOgotIAlpZiAoanNvbl9wYXJzZV9pbnQ2NChqc28tPm8uY19zdHJpbmcuc3RyLCAmY2ludCkgPT0gMCkgcmV0dXJuIGNpbnQ7Ci0rCS8qIEZBTExUSFJVICovCi0gICBkZWZhdWx0OgotICAgICByZXR1cm4gMDsKLSAgIH0KLWRpZmYgLS1naXQgYS9qc29uX3Rva2VuZXIuYyBiL2pzb25fdG9rZW5lci5jCi1pbmRleCA5YTc2MjkzLi5hZTdiMWFlIDEwMDY0NAotLS0tIGEvanNvbl90b2tlbmVyLmMKLSsrKyBiL2pzb25fdG9rZW5lci5jCi1AQCAtMzA1LDYgKzMwNSw3IEBAIHN0cnVjdCBqc29uX29iamVjdCoganNvbl90b2tlbmVyX3BhcnNlX2V4KHN0cnVjdCBqc29uX3Rva2VuZXIgKnRvaywKLSAgICAgICAgICAgICB0b2stPmVyciA9IGpzb25fdG9rZW5lcl9lcnJvcl9wYXJzZV91bmV4cGVjdGVkOwotICAgICAgICAgICAgIGdvdG8gb3V0OwotICAgICAgICAgfQotKwkvKiBGQUxMVEhSVSAqLwotICAgICAgIGNhc2UgJyInOgotIAlzdGF0ZSA9IGpzb25fdG9rZW5lcl9zdGF0ZV9zdHJpbmc7Ci0gCXByaW50YnVmX3Jlc2V0KHRvay0+cGIpOwotZGlmZiAtLWdpdCBhL2xpbmtoYXNoLmMgYi9saW5raGFzaC5jCi1pbmRleCA3MTJjMzg3Li43NGUzYjBmIDEwMDY0NAotLS0tIGEvbGlua2hhc2guYwotKysrIGIvbGlua2hhc2guYwotQEAgLTM3NiwxNyArMzc2LDE3IEBAIHN0YXRpYyB1aW50MzJfdCBoYXNobGl0dGxlKCBjb25zdCB2b2lkICprZXksIHNpemVfdCBsZW5ndGgsIHVpbnQzMl90IGluaXR2YWwpCi0gICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gbGFzdCBibG9jazogYWZmZWN0IGFsbCAzMiBiaXRzIG9mIChjKSAqLwotICAgICBzd2l0Y2gobGVuZ3RoKSAgICAgICAgICAgICAgICAgICAvKiBhbGwgdGhlIGNhc2Ugc3RhdGVtZW50cyBmYWxsIHRocm91Z2ggKi8KLSAgICAgewotLSAgICBjYXNlIDEyOiBjKz0oKHVpbnQzMl90KWtbMTFdKTw8MjQ7Ci0tICAgIGNhc2UgMTE6IGMrPSgodWludDMyX3Qpa1sxMF0pPDwxNjsKLS0gICAgY2FzZSAxMDogYys9KCh1aW50MzJfdClrWzldKTw8ODsKLS0gICAgY2FzZSA5IDogYys9a1s4XTsKLS0gICAgY2FzZSA4IDogYis9KCh1aW50MzJfdClrWzddKTw8MjQ7Ci0tICAgIGNhc2UgNyA6IGIrPSgodWludDMyX3Qpa1s2XSk8PDE2OwotLSAgICBjYXNlIDYgOiBiKz0oKHVpbnQzMl90KWtbNV0pPDw4OwotLSAgICBjYXNlIDUgOiBiKz1rWzRdOwotLSAgICBjYXNlIDQgOiBhKz0oKHVpbnQzMl90KWtbM10pPDwyNDsKLS0gICAgY2FzZSAzIDogYSs9KCh1aW50MzJfdClrWzJdKTw8MTY7Ci0tICAgIGNhc2UgMiA6IGErPSgodWludDMyX3Qpa1sxXSk8PDg7Ci0rICAgIGNhc2UgMTI6IGMrPSgodWludDMyX3Qpa1sxMV0pPDwyNDsgLyogRkFMTFRIUlUgKi8KLSsgICAgY2FzZSAxMTogYys9KCh1aW50MzJfdClrWzEwXSk8PDE2OyAvKiBGQUxMVEhSVSAqLwotKyAgICBjYXNlIDEwOiBjKz0oKHVpbnQzMl90KWtbOV0pPDw4OyAvKiBGQUxMVEhSVSAqLwotKyAgICBjYXNlIDkgOiBjKz1rWzhdOyAvKiBGQUxMVEhSVSAqLwotKyAgICBjYXNlIDggOiBiKz0oKHVpbnQzMl90KWtbN10pPDwyNDsgLyogRkFMTFRIUlUgKi8KLSsgICAgY2FzZSA3IDogYis9KCh1aW50MzJfdClrWzZdKTw8MTY7IC8qIEZBTExUSFJVICovCi0rICAgIGNhc2UgNiA6IGIrPSgodWludDMyX3Qpa1s1XSk8PDg7IC8qIEZBTExUSFJVICovCi0rICAgIGNhc2UgNSA6IGIrPWtbNF07IC8qIEZBTExUSFJVICovCi0rICAgIGNhc2UgNCA6IGErPSgodWludDMyX3Qpa1szXSk8PDI0OyAvKiBGQUxMVEhSVSAqLwotKyAgICBjYXNlIDMgOiBhKz0oKHVpbnQzMl90KWtbMl0pPDwxNjsgLyogRkFMTFRIUlUgKi8KLSsgICAgY2FzZSAyIDogYSs9KCh1aW50MzJfdClrWzFdKTw8ODsgLyogRkFMTFRIUlUgKi8KLSAgICAgY2FzZSAxIDogYSs9a1swXTsKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgMCA6IHJldHVybiBjOwotLS0gCi0yLjEyLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jXzAuMTIuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1jL2pzb24tY18wLjEyLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwMWNmMTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jXzAuMTIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVNVTU1BUlkgPSAiQyBiaW5kaW5ncyBmb3IgYXBwcyB3aGljaCB3aWxsIG1hbmlwdWxhdGUgSlNPTiBkYXRhIgotREVTQ1JJUFRJT04gPSAiSlNPTi1DIGltcGxlbWVudHMgYSByZWZlcmVuY2UgY291bnRpbmcgb2JqZWN0IG1vZGVsIHRoYXQgYWxsb3dzIHlvdSB0byBlYXNpbHkgY29uc3RydWN0IEpTT04gb2JqZWN0cyBpbiBDLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9qc29uLWMvanNvbi1jL3dpa2kiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWRlNTRiNjBmYmJjMzUxMjNiYTE5M2ZlYThlZTIxNmYyIgotCi1TUkNfVVJJID0gImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9qc29uLWNfcmVsZWFzZXMvcmVsZWFzZXMvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLUZBTExUSFJVLWNvbW1lbnQtdG8taGFuZGxlLUdDQzctd2FybmluZ3MucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNTVmNzg1M2Y3ZDhjZjY2NDU1NGNlM2ZhNzFiZjFjN2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmExMzY0NTFhNzkzMmQ4MGI3ZDE5N2IxMDQ0MWUyNmUzOTQyOGQ2N2IxNDQzZWM0M2JiYmE4MjQ3MDVlMTEyMyIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAianNvbi1jLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCi0jIGpzb24tYyByZWxlYXNlcyBwYWdlIGlzIGZldGNoaW5nIHRoZSBsaXN0IG9mIHJlbGVhc2VzIGluIHNvbWUgd2VpcmQgWE1MIGZvcm1hdAotIyBmcm9tIGh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9qc29uLWNfcmVsZWFzZXMgYW5kIHByb2Nlc3NlcyBpdCB3aXRoIGphdmFzY3JpcHQgOi0vCi0jVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9qc29uLWNfcmVsZWFzZXMvcmVsZWFzZXMvaW5kZXguaHRtbCIKLVJFQ0lQRV9VUFNUUkVBTV9WRVJTSU9OID0gIjAuMTIuMSIKLVJFQ0lQRV9VUFNUUkVBTV9EQVRFID0gIkp1biAwNywgMjAxNiIKLUNIRUNLX0RBVEUgPSAiQXByIDE5LCAyMDE3IgotCi1SUFJPVklERVNfJHtQTn0gPSAibGlianNvbiIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXJkcmFuZCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgIyBDbGVhbiB1cCBhdXRvY29uZiBjcnVmdCB0aGF0IHNob3VsZCBub3QgYmUgaW4gdGhlIHRhcmJhbGwKLSAgICBybSAtZiAke1N9L2NvbmZpZy5zdGF0dXMKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jXzAuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWNfMC4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjMxOWRlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jXzAuMTMuYmIKQEAgLTAsMCArMSwzMSBAQAorU1VNTUFSWSA9ICJDIGJpbmRpbmdzIGZvciBhcHBzIHdoaWNoIHdpbGwgbWFuaXB1bGF0ZSBKU09OIGRhdGEiCitERVNDUklQVElPTiA9ICJKU09OLUMgaW1wbGVtZW50cyBhIHJlZmVyZW5jZSBjb3VudGluZyBvYmplY3QgbW9kZWwgdGhhdCBhbGxvd3MgeW91IHRvIGVhc2lseSBjb25zdHJ1Y3QgSlNPTiBvYmplY3RzIGluIEMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2pzb24tYy9qc29uLWMvd2lraSIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGU1NGI2MGZiYmMzNTEyM2JhMTkzZmVhOGVlMjE2ZjIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL2pzb24tY19yZWxlYXNlcy9yZWxlYXNlcy8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMTFmYzVkOTBjNzczNzVlNWZjODQwMWU4YjllZmJmMjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDMxNjc4MGJlOWFkMTZjNDJkN2MyNmIwMTVhNzg0ZmQ1ZGY0YjA5MDlmZWYwYWJhNTFjZmIxM2U0OTJhYzI0ZCIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAianNvbi1jLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCisjIGpzb24tYyByZWxlYXNlcyBwYWdlIGlzIGZldGNoaW5nIHRoZSBsaXN0IG9mIHJlbGVhc2VzIGluIHNvbWUgd2VpcmQgWE1MIGZvcm1hdAorIyBmcm9tIGh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9qc29uLWNfcmVsZWFzZXMgYW5kIHByb2Nlc3NlcyBpdCB3aXRoIGphdmFzY3JpcHQgOi0vCisjVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9qc29uLWNfcmVsZWFzZXMvcmVsZWFzZXMvaW5kZXguaHRtbCIKK1JFQ0lQRV9VUFNUUkVBTV9WRVJTSU9OID0gIjAuMTMiCitSRUNJUEVfVVBTVFJFQU1fREFURSA9ICJEZWMgMDcsIDIwMTciCitDSEVDS19EQVRFID0gIkphbiAzMSwgMjAxOCIKKworUlBST1ZJREVTXyR7UE59ID0gImxpYmpzb24iCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1yZHJhbmQiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICMgQ2xlYW4gdXAgYXV0b2NvbmYgY3J1ZnQgdGhhdCBzaG91bGQgbm90IGJlIGluIHRoZSB0YXJiYWxsCisgICAgcm0gLWYgJHtTfS9jb25maWcuc3RhdHVzCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAxLUdldC1wYXJhbWV0ZXJzLWZvci1ib3RoLWxpYnNvbHYtYW5kLWxpYnNvbHZleHQtbGliZG4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwMS1HZXQtcGFyYW1ldGVycy1mb3ItYm90aC1saWJzb2x2LWFuZC1saWJzb2x2ZXh0LWxpYmRuLnBhdGNoCmluZGV4IDI4MGVkYjcuLmNiZDAzNjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAxLUdldC1wYXJhbWV0ZXJzLWZvci1ib3RoLWxpYnNvbHYtYW5kLWxpYnNvbHZleHQtbGliZG4ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDEtR2V0LXBhcmFtZXRlcnMtZm9yLWJvdGgtbGlic29sdi1hbmQtbGlic29sdmV4dC1saWJkbi5wYXRjaApAQCAtMSw3ICsxLDggQEAKLUZyb20gMzAxMmE5Mzc0NTIyMzc1MWNjOTc5ZTM3NzAyMDdhMDlhMDc1YmVjNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMmJmMDY2NjU0NDI5M2RjZmFjMmY2N2I2NzhlMjQzNTNhY2RjZDRlNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogVHVlLCA3IEZlYiAyMDE3IDEyOjE2OjAzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggNS81XSBHZXQgcGFyYW1ldGVycyBmb3IgYm90aCBsaWJzb2x2IGFuZCBsaWJzb2x2ZXh0IChsaWJkbmYgaXMKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIEdldCBwYXJhbWV0ZXJzIGZvciBib3RoIGxpYnNvbHYgYW5kIGxpYnNvbHZleHQgKGxpYmRuZiBpcworCiAgdXNpbmcgYm90aCkKIAogVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9saWJkbmYvcHVsbC8zMTJdCkBAIC0xMiwxMiArMTMsMTIgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IDhiMmFiOWEuLmUyZDMzZDcgMTAwNjQ0CitpbmRleCBjYTI4MGYzLi42YWI5ODI3IDEwMDY0NAogLS0tIGEvQ01ha2VMaXN0cy50eHQKICsrKyBiL0NNYWtlTGlzdHMudHh0CiBAQCAtMjksNyArMjksNyBAQCBmaW5kX3BhY2thZ2UgKFBrZ0NvbmZpZyBSRVFVSVJFRCkKICBTRVQgKENNQUtFX01PRFVMRV9QQVRIICR7Q01BS0VfU09VUkNFX0RJUn0vY21ha2UvbW9kdWxlcykKLSBQS0dfQ0hFQ0tfTU9EVUxFUyhHTElCIGdpby11bml4LTIuMD49Mi40NC4wIFJFUVVJUkVEKQorIFBLR19DSEVDS19NT0RVTEVTKEdMSUIgZ2lvLXVuaXgtMi4wPj0yLjQ2LjAgUkVRVUlSRUQpCiAgRklORF9MSUJSQVJZIChSUE1EQl9MSUJSQVJZIE5BTUVTIHJwbWRiKQogLVBLR19DSEVDS19NT0RVTEVTIChMSUJTT0xWIFJFUVVJUkVEIGxpYnNvbHYpCiArUEtHX0NIRUNLX01PRFVMRVMgKExJQlNPTFYgUkVRVUlSRUQgbGlic29sdiBsaWJzb2x2ZXh0KQpAQCAtMjUsNSArMjYsNSBAQAogIGlmIChFTkFCTEVfUkhTTV9TVVBQT1JUKQogICAgICBwa2dfY2hlY2tfbW9kdWxlcyAoUkhTTSBSRVFVSVJFRCBsaWJyaHNtKQogLS0gCi0yLjExLjAKKzIuMTQuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwNC1TZXQtbGlic29sdi12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLWNtYWtlLXMtb3duLW1vLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDQtU2V0LWxpYnNvbHYtdmFyaWFibGVzLXdpdGgtcGtnLWNvbmZpZy1jbWFrZS1zLW93bi1tby5wYXRjaAppbmRleCAxZWE5MzEwLi42Y2Y0OGE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwNC1TZXQtbGlic29sdi12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLWNtYWtlLXMtb3duLW1vLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDA0LVNldC1saWJzb2x2LXZhcmlhYmxlcy13aXRoLXBrZy1jb25maWctY21ha2Utcy1vd24tbW8ucGF0Y2gKQEAgLTEsNyArMSw4IEBACi1Gcm9tIDU1Y2JlNmY0MGZlMDgzNjM4NWUxYTcyNDFlYzgxMWNiZTk5ZTU4NDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGJjZWE1YzUwNjNhMmQ1ZjA3ZGJlNmY0MGFlZTMwMzcwZmM0YmE2NTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMzAgRGVjIDIwMTYgMTg6MjQ6NTAgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCA0LzVdIFNldCBsaWJzb2x2IHZhcmlhYmxlcyB3aXRoIHBrZy1jb25maWcgKGNtYWtlJ3Mgb3duIG1vZHVsZQorU3ViamVjdDogW1BBVENIIDEvMl0gU2V0IGxpYnNvbHYgdmFyaWFibGVzIHdpdGggcGtnLWNvbmZpZyAoY21ha2UncyBvd24gbW9kdWxlCisKICBkb2Vzbid0IHdvcmsgcHJvcGVybHkpLgogCiBVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYmRuZi9wdWxsLzMxMl0KQEAgLTEyLDEyICsxMywxMiBAQAogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IGE3NWRmMDQuLjhiMmFiOWEgMTAwNjQ0CitpbmRleCA4ODc1YmJmLi5jYTI4MGYzIDEwMDY0NAogLS0tIGEvQ01ha2VMaXN0cy50eHQKICsrKyBiL0NNYWtlTGlzdHMudHh0CiBAQCAtMjksNyArMjksOCBAQCBmaW5kX3BhY2thZ2UgKFBrZ0NvbmZpZyBSRVFVSVJFRCkKICBTRVQgKENNQUtFX01PRFVMRV9QQVRIICR7Q01BS0VfU09VUkNFX0RJUn0vY21ha2UvbW9kdWxlcykKLSBQS0dfQ0hFQ0tfTU9EVUxFUyhHTElCIGdpby11bml4LTIuMD49Mi40NC4wIFJFUVVJUkVEKQorIFBLR19DSEVDS19NT0RVTEVTKEdMSUIgZ2lvLXVuaXgtMi4wPj0yLjQ2LjAgUkVRVUlSRUQpCiAgRklORF9MSUJSQVJZIChSUE1EQl9MSUJSQVJZIE5BTUVTIHJwbWRiKQogLWZpbmRfcGFja2FnZSAoTGliU29sdiAwLjYuMjEgUkVRVUlSRUQgQ09NUE9ORU5UUyBleHQpCiArUEtHX0NIRUNLX01PRFVMRVMgKExJQlNPTFYgUkVRVUlSRUQgbGlic29sdikKQEAgLTI2LDUgKzI3LDUgQEAKICAgICAgcGtnX2NoZWNrX21vZHVsZXMgKFJIU00gUkVRVUlSRUQgbGlicmhzbSkKICAgICAgaW5jbHVkZV9kaXJlY3RvcmllcyAoJHtSSFNNX0lOQ0xVREVfRElSU30pCiAtLSAKLTIuMTEuMAorMi4xNC4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZl8wLjExLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmZfMC4xMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmYzFkNmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmZfMC4xMS4xLmJiCkBAIC0wLDAgKzEsMjggQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBwcm92aWRpbmcgc2ltcGxpZmllZCBDIGFuZCBQeXRob24gQVBJIHRvIGxpYnNvbHYiCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9saWJkbmYgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaW5kR3RrRG9jLmNtYWtlLWRyb3AtdGhlLXJlcXVpcmVtZW50LWZvci1HVEtET0NfU0NBLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItUHJlZml4LXN5c3Jvb3QtcGF0aC10by1pbnRyb3NwZWN0aW9uLXRvb2xzLXBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1TZXQtdGhlLWxpYnJhcnktaW5zdGFsbGF0aW9uLWRpcmVjdG9yeS1jb3JyZWN0bHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1TZXQtbGlic29sdi12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLWNtYWtlLXMtb3duLW1vLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtR2V0LXBhcmFtZXRlcnMtZm9yLWJvdGgtbGlic29sdi1hbmQtbGlic29sdmV4dC1saWJkbi5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDUkVWID0gIjYwZjk3OWJkOGRiNjUxMjI5YzU1OWMxNDEyZjFlYjg4MDI1NzEyN2QiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgbGlic29sdiBsaWJjaGVjayBsaWJyZXBvIHJwbSBndGstZG9jIgorCitpbmhlcml0IGd0ay1kb2MgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGNtYWtlIHBrZ2NvbmZpZyBkaXN0dXRpbHMzLWJhc2UKKworRVhUUkFfT0VDTUFLRSA9ICIgLURQWVRIT05fSU5TVEFMTF9ESVI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gLURXSVRIX01BTj1PRkYgLURQWVRIT05fREVTSVJFRD0zIFwKKyAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICctRFdJVEhfR0lSPU9OJywgJy1EV0lUSF9HSVI9T0ZGJywgZCl9IFwKKyAgICAgICAgICAgICAgICAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1EV0lUSF9HSVI9T0ZGIgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAtRFdJVEhfR0lSPU9GRiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmZfMC45LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmZfMC45LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxZDkzNDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mXzAuOS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IHByb3ZpZGluZyBzaW1wbGlmaWVkIEMgYW5kIFB5dGhvbiBBUEkgdG8gbGlic29sdiIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYmRuZiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpbmRHdGtEb2MuY21ha2UtZHJvcC10aGUtcmVxdWlyZW1lbnQtZm9yLUdUS0RPQ19TQ0EucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1QcmVmaXgtc3lzcm9vdC1wYXRoLXRvLWludHJvc3BlY3Rpb24tdG9vbHMtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLVNldC10aGUtbGlicmFyeS1pbnN0YWxsYXRpb24tZGlyZWN0b3J5LWNvcnJlY3RseS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LVNldC1saWJzb2x2LXZhcmlhYmxlcy13aXRoLXBrZy1jb25maWctY21ha2Utcy1vd24tbW8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1HZXQtcGFyYW1ldGVycy1mb3ItYm90aC1saWJzb2x2LWFuZC1saWJzb2x2ZXh0LWxpYmRuLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNSRVYgPSAiMWIxOTk1MGU4MmQ4OGVlYzI4ZDAxYjRlN2MxZGE3MTJjOTQxMjAxZCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBsaWJzb2x2IGxpYmNoZWNrIGxpYnJlcG8gcnBtIGd0ay1kb2MiCi0KLWluaGVyaXQgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24gY21ha2UgcGtnY29uZmlnIGRpc3R1dGlsczMtYmFzZQotCi1FWFRSQV9PRUNNQUtFID0gIiAtRFBZVEhPTl9JTlNUQUxMX0RJUj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSAtRFdJVEhfTUFOPU9GRiAtRFBZVEhPTl9ERVNJUkVEPTMgXAotICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy1EV0lUSF9HSVI9T04nLCAnLURXSVRIX0dJUj1PRkYnLCBkKX0gXAotICAgICAgICAgICAgICAgICIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLURXSVRIX0dJUj1PRkYiCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC1EV0lUSF9HSVI9T0ZGIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvLzAwMDEtQ29ycmVjdGx5LXNldC10aGUtbGlicmFyeS1pbnN0YWxsYXRpb24tZGlyZWN0b3J5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwMS1Db3JyZWN0bHktc2V0LXRoZS1saWJyYXJ5LWluc3RhbGxhdGlvbi1kaXJlY3RvcnkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4YTU4ZjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwMS1Db3JyZWN0bHktc2V0LXRoZS1saWJyYXJ5LWluc3RhbGxhdGlvbi1kaXJlY3RvcnkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIDM2ZDg3OTE5MjIzZGI5YjA1NDg2MmFkMzhjZGRhOGQ5MjIyYTJiYWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMzAgRGVjIDIwMTYgMTg6MDQ6MzUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzRdIENvcnJlY3RseSBzZXQgdGhlIGxpYnJhcnkgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeQotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYnJlcG8vcHVsbC8xMTBdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIGxpYnJlcG8vQ01ha2VMaXN0cy50eHQgfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYnJlcG8vQ01ha2VMaXN0cy50eHQgYi9saWJyZXBvL0NNYWtlTGlzdHMudHh0Ci1pbmRleCAyZmU3NmQ4Li41MDI2ZGVmIDEwMDY0NAotLS0tIGEvbGlicmVwby9DTWFrZUxpc3RzLnR4dAotKysrIGIvbGlicmVwby9DTWFrZUxpc3RzLnR4dAotQEAgLTYwLDcgKzYwLDggQEAgQ09ORklHVVJFX0ZJTEUoInZlcnNpb24uaC5pbiIgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS92ZXJzaW9uLmgiIEBPTkxZKQotIElGIChDTUFLRV9TSVpFT0ZfVk9JRF9QIE1BVENIRVMgIjgiKQotICAgU0VUIChMSUJfU1VGRklYICI2NCIpCi0gRU5ESUYgKENNQUtFX1NJWkVPRl9WT0lEX1AgTUFUQ0hFUyAiOCIpCi0tU0VUIChMSUJfSU5TVEFMTF9ESVIgIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L2xpYiR7TElCX1NVRkZJWH0iKQotKyNTRVQgKExJQl9JTlNUQUxMX0RJUiAiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0vbGliJHtMSUJfU1VGRklYfSIpCi0rU0VUIChMSUJfSU5TVEFMTF9ESVIgIiR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9IikKLSAKLSBJTlNUQUxMKEZJTEVTICR7bGlicmVwb19IRUFERVJTfSBERVNUSU5BVElPTiBpbmNsdWRlL2xpYnJlcG8pCi0gSU5TVEFMTChUQVJHRVRTIGxpYnJlcG8gTElCUkFSWSBERVNUSU5BVElPTiAke0xJQl9JTlNUQUxMX0RJUn0pCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDAyLURvLW5vdC10cnktdG8tb2J0YWluLVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDAyLURvLW5vdC10cnktdG8tb2J0YWluLVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXAucGF0Y2gKaW5kZXggNzEzOGRmYy4uZDY5ZGViNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwMi1Eby1ub3QtdHJ5LXRvLW9idGFpbi1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1wLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvLzAwMDItRG8tbm90LXRyeS10by1vYnRhaW4tUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcC5wYXRjaApAQCAtMSw0MSArMSw2MiBAQAotRnJvbSAxNTcwYWQzM2RkN2U1ZDgzZjNlZTgwYmQxMDRiMTE0NzA5YWMxZTM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1YjY4NDlkOWQ3ZTAzMGMzYTUyMWI1MjQ1ZDg2Zjg1M2IwMjcxYTYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDMwIERlYyAyMDE2IDE4OjA1OjM2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMi80XSBEbyBub3QgdHJ5IHRvIG9idGFpbiBQWVRIT05fSU5TVEFMTF9ESVIgYnkgcnVubmluZworU3ViamVjdDogW1BBVENIIDEvMl0gRG8gbm90IHRyeSB0byBvYnRhaW4gUFlUSE9OX0lOU1RBTExfRElSIGJ5IHJ1bm5pbmcKICBweXRob24uCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KLSBsaWJyZXBvL3B5dGhvbi9weXRob24yL0NNYWtlTGlzdHMudHh0IHwgMiArLQotIGxpYnJlcG8vcHl0aG9uL3B5dGhvbjMvQ01ha2VMaXN0cy50eHQgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgbGlicmVwby9weXRob24vcHl0aG9uMi9DTWFrZUxpc3RzLnR4dCB8IDEyICsrKysrKy0tLS0tLQorIGxpYnJlcG8vcHl0aG9uL3B5dGhvbjMvQ01ha2VMaXN0cy50eHQgfCAxMiArKysrKystLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbGlicmVwby9weXRob24vcHl0aG9uMi9DTWFrZUxpc3RzLnR4dCBiL2xpYnJlcG8vcHl0aG9uL3B5dGhvbjIvQ01ha2VMaXN0cy50eHQKLWluZGV4IDM2MTVlMTcuLmNmZmE5OWYgMTAwNjQ0CitpbmRleCA1ZmZiZDYyLi45MGQzYzIyIDEwMDY0NAogLS0tIGEvbGlicmVwby9weXRob24vcHl0aG9uMi9DTWFrZUxpc3RzLnR4dAogKysrIGIvbGlicmVwby9weXRob24vcHl0aG9uMi9DTWFrZUxpc3RzLnR4dAotQEAgLTEsNiArMSw2IEBACitAQCAtMSwxMSArMSwxMSBAQAogIEZJTkRfUEFDS0FHRSAoUHl0aG9uTGlicyAyICkKICBGSU5EX1BBQ0tBR0UgKFB5dGhvbkludGVycCAyIFJFUVVJUkVEKQotLUVYRUNVVEVfUFJPQ0VTUyhDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9IC1jICJmcm9tIHN5cyBpbXBvcnQgc3Rkb3V0OyBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnOyBzdGRvdXQud3JpdGUoc3lzY29uZmlnLmdldF9weXRob25fbGliKFRydWUpKSIgT1VUUFVUX1ZBUklBQkxFIFBZVEhPTl9JTlNUQUxMX0RJUikKLSsjRVhFQ1VURV9QUk9DRVNTKENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gLWMgImZyb20gc3lzIGltcG9ydCBzdGRvdXQ7IGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWc7IHN0ZG91dC53cml0ZShzeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoVHJ1ZSkpIiBPVVRQVVRfVkFSSUFCTEUgUFlUSE9OX0lOU1RBTExfRElSKQorLUVYRUNVVEVfUFJPQ0VTUyhDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9IC1jICIKKy1mcm9tIHN5cyBpbXBvcnQgc3Rkb3V0CistZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZworLXBhdGg9c3lzY29uZmlnLmdldF9weXRob25fbGliKFRydWUsIHByZWZpeD0nJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0nKQorLXN0ZG91dC53cml0ZShwYXRoKSIKKy1PVVRQVVRfVkFSSUFCTEUgUFlUSE9OX0lOU1RBTExfRElSKQorKyNFWEVDVVRFX1BST0NFU1MoQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAtYyAiCisrI2Zyb20gc3lzIGltcG9ydCBzdGRvdXQKKysjZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZworKyNwYXRoPXN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYihUcnVlLCBwcmVmaXg9JyR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9JykKKysjc3Rkb3V0LndyaXRlKHBhdGgpIgorKyNPVVRQVVRfVkFSSUFCTEUgUFlUSE9OX0lOU1RBTExfRElSKQogIElOQ0xVREVfRElSRUNUT1JJRVMgKCR7UFlUSE9OX0lOQ0xVREVfUEFUSH0pCiAgCiAgTUVTU0FHRShTVEFUVVMgIlB5dGhvbiBpbnN0YWxsIGRpciBpcyAke1BZVEhPTl9JTlNUQUxMX0RJUn0iKQogZGlmZiAtLWdpdCBhL2xpYnJlcG8vcHl0aG9uL3B5dGhvbjMvQ01ha2VMaXN0cy50eHQgYi9saWJyZXBvL3B5dGhvbi9weXRob24zL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBkZmVjYWM5Li4zOGJjYzcyIDEwMDY0NAoraW5kZXggNDc1NTlmNy4uYjM5YWRjMiAxMDA2NDQKIC0tLSBhL2xpYnJlcG8vcHl0aG9uL3B5dGhvbjMvQ01ha2VMaXN0cy50eHQKICsrKyBiL2xpYnJlcG8vcHl0aG9uL3B5dGhvbjMvQ01ha2VMaXN0cy50eHQKLUBAIC0xMCw3ICsxMCw3IEBAIG1lc3NhZ2UoIi0tLSAke1BZVEhPTl9JTkNMVURFX0RJUn0iKQorQEAgLTEwLDEyICsxMCwxMiBAQCBtZXNzYWdlKCItLS0gJHtQWVRIT05fSU5DTFVERV9ESVJ9IikKICAKICBGSU5EX1BBQ0tBR0UoUHl0aG9uTGlicyAzLjApCiAgRklORF9QQUNLQUdFKFB5dGhvbkludGVycCAzLjAgUkVRVUlSRUQpCi0tRVhFQ1VURV9QUk9DRVNTKENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gLWMgImZyb20gc3lzIGltcG9ydCBzdGRvdXQ7IGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWc7IHN0ZG91dC53cml0ZShzeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoVHJ1ZSkpIiBPVVRQVVRfVkFSSUFCTEUgUFlUSE9OX0lOU1RBTExfRElSKQotKyNFWEVDVVRFX1BST0NFU1MoQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAtYyAiZnJvbSBzeXMgaW1wb3J0IHN0ZG91dDsgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZzsgc3Rkb3V0LndyaXRlKHN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYihUcnVlKSkiIE9VVFBVVF9WQVJJQUJMRSBQWVRIT05fSU5TVEFMTF9ESVIpCistRVhFQ1VURV9QUk9DRVNTKENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gLWMgIgorLWZyb20gc3lzIGltcG9ydCBzdGRvdXQKKy1mcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnCistcGF0aD1zeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoVHJ1ZSwgcHJlZml4PScke0NNQUtFX0lOU1RBTExfUFJFRklYfScpCistc3Rkb3V0LndyaXRlKHBhdGgpIgorLU9VVFBVVF9WQVJJQUJMRSBQWVRIT05fSU5TVEFMTF9ESVIpCisrI0VYRUNVVEVfUFJPQ0VTUyhDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9IC1jICIKKysjZnJvbSBzeXMgaW1wb3J0IHN0ZG91dAorKyNmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnCisrI3BhdGg9c3lzY29uZmlnLmdldF9weXRob25fbGliKFRydWUsIHByZWZpeD0nJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0nKQorKyNzdGRvdXQud3JpdGUocGF0aCkiCisrI09VVFBVVF9WQVJJQUJMRSBQWVRIT05fSU5TVEFMTF9ESVIpCiAgSU5DTFVERV9ESVJFQ1RPUklFUyAoJHtQWVRIT05fSU5DTFVERV9QQVRIfSkKICAKICBNRVNTQUdFKFNUQVRVUyAiUHl0aG9uMyBpbnN0YWxsIGRpciBpcyAke1BZVEhPTl9JTlNUQUxMX0RJUn0iKQogLS0gCi0yLjExLjAKKzIuMTQuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDAzLXRlc3RzLWZpeC1hLXJhY2Utd2hlbi1kZWxldGluZy10ZW1wb3JhcnktZGlyZWN0b3JpZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDAzLXRlc3RzLWZpeC1hLXJhY2Utd2hlbi1kZWxldGluZy10ZW1wb3JhcnktZGlyZWN0b3JpZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5Y2E2MGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwMy10ZXN0cy1maXgtYS1yYWNlLXdoZW4tZGVsZXRpbmctdGVtcG9yYXJ5LWRpcmVjdG9yaWVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbSBiMWE1YzkyZGJkMWQxMWYxYWZkYzA5NGZjY2VhNjRkZTMzNGQyNzgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDMwIERlYyAyMDE2IDE4OjA2OjI0ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMy80XSB0ZXN0czogZml4IGEgcmFjZSB3aGVuIGRlbGV0aW5nIHRlbXBvcmFyeSBkaXJlY3RvcmllcwotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYnJlcG8vcHVsbC8xMTBdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIHRlc3RzL3B5dGhvbi90ZXN0cy90ZXN0X3l1bV9yZXBvX2Rvd25sb2FkaW5nLnB5IHwgMiArLQotIHRlc3RzL3B5dGhvbi90ZXN0cy90ZXN0X3l1bV9yZXBvX2xvY2F0aW5nLnB5ICAgIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcHl0aG9uL3Rlc3RzL3Rlc3RfeXVtX3JlcG9fZG93bmxvYWRpbmcucHkgYi90ZXN0cy9weXRob24vdGVzdHMvdGVzdF95dW1fcmVwb19kb3dubG9hZGluZy5weQotaW5kZXggYWQ1OTdkYy4uNGEzMjUxOSAxMDA2NDQKLS0tLSBhL3Rlc3RzL3B5dGhvbi90ZXN0cy90ZXN0X3l1bV9yZXBvX2Rvd25sb2FkaW5nLnB5Ci0rKysgYi90ZXN0cy9weXRob24vdGVzdHMvdGVzdF95dW1fcmVwb19kb3dubG9hZGluZy5weQotQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgVGVzdENhc2VZdW1SZXBvRG93bmxvYWRpbmcoVGVzdENhc2VXaXRoRmxhc2spOgotICAgICAgICAgICAgIG9zLmVudmlyb24ucG9wKCdHTlVQR0hPTUUnKQotICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICBvcy5lbnZpcm9uWydHTlVQR0hPTUUnXSA9IHNlbGYuX2dudXBnaG9tZQotLSAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLnRtcGRpcikKLSsgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi50bXBkaXIsIFRydWUpCi0gCi0gICAgIGRlZiB0ZXN0X2Rvd25sb2FkX3JlcG9fMDEoc2VsZik6Ci0gICAgICAgICBoID0gbGlicmVwby5IYW5kbGUoKQotZGlmZiAtLWdpdCBhL3Rlc3RzL3B5dGhvbi90ZXN0cy90ZXN0X3l1bV9yZXBvX2xvY2F0aW5nLnB5IGIvdGVzdHMvcHl0aG9uL3Rlc3RzL3Rlc3RfeXVtX3JlcG9fbG9jYXRpbmcucHkKLWluZGV4IDhmNGJlYTUuLmRiNDI5NGMgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9weXRob24vdGVzdHMvdGVzdF95dW1fcmVwb19sb2NhdGluZy5weQotKysrIGIvdGVzdHMvcHl0aG9uL3Rlc3RzL3Rlc3RfeXVtX3JlcG9fbG9jYXRpbmcucHkKLUBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIFRlc3RDYXNlWXVtUmVwb0xvY2F0aW5nKFRlc3RDYXNlKToKLSAgICAgICAgICAgICBvcy5lbnZpcm9uLnBvcCgnR05VUEdIT01FJykKLSAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgb3MuZW52aXJvblsnR05VUEdIT01FJ10gPSBzZWxmLl9nbnVwZ2hvbWUKLS0gICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi50bXBkaXIpCi0rICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYudG1wZGlyLCBUcnVlKQotIAotICAgICBkZWYgdGVzdF9yZWFkX21pcnJvcmxpc3Qoc2VsZik6Ci0gICAgICAgICBoID0gbGlicmVwby5IYW5kbGUoKQotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwNS1GaXgtdHlwby1jb3JyZWN0LUxST19TU0xWRVJJRllIT1NULXdpdGgtQ1VSTE9QVF9TU0xfLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwNS1GaXgtdHlwby1jb3JyZWN0LUxST19TU0xWRVJJRllIT1NULXdpdGgtQ1VSTE9QVF9TU0xfLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGM3ZDFjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvLzAwMDUtRml4LXR5cG8tY29ycmVjdC1MUk9fU1NMVkVSSUZZSE9TVC13aXRoLUNVUkxPUFRfU1NMXy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gYTRiYmJjY2NlNmVkYzFhMmQxYmQ0NzU1MDZlMjk3NWZkNzY5NmM4OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgOCBKdW4gMjAxNyAxNjozMTozMCArMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXggdHlwbzogY29ycmVjdCBMUk9fU1NMVkVSSUZZSE9TVCB3aXRoCi0gQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVAotCi1JbiBjb21taXQgNTFkMzJjNmNkODhiYTAxMzljMzI3OTMxODNmZDZhMjM2YzFlZjQ1NgotLS0tCi1BdXRob3I6IFRvbWFzIE1sY29jaCA8dG1sY29jaEByZWRoYXQuY29tPgotRGF0ZTogICBNb24gTWF5IDUgMTQ6MzE6MzUgMjAxNCArMDIwMAotCi0gICAgQWRkIExST19TU0xWRVJJRllQRUVSIGFuZCBMUk9fU1NMVkVSSUZZSE9TVCBvcHRpb25zIChSaEJ1ZzogMTA5MzAxNCkKLS0tLQotCi1JdCBpbmNvcnJlY3RseSBzZXRvcHQgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiBmb3IgTFJPX1NTTFZFUklGWUhPU1QuCi1Vc2UgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCB0byBjb3JyZWN0LgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJyZXBvL2hhbmRsZS5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGlicmVwby9oYW5kbGUuYyBiL2xpYnJlcG8vaGFuZGxlLmMKLWluZGV4IGNjZWE3OWIuLmZmMzlkYjQgMTAwNjQ0Ci0tLS0gYS9saWJyZXBvL2hhbmRsZS5jCi0rKysgYi9saWJyZXBvL2hhbmRsZS5jCi1AQCAtNjI5LDcgKzYyOSw3IEBAIGxyX2hhbmRsZV9zZXRvcHQoTHJIYW5kbGUgKmhhbmRsZSwKLSAKLSAgICAgY2FzZSBMUk9fU1NMVkVSSUZZSE9TVDoKLSAgICAgICAgIGhhbmRsZS0+c3NsdmVyaWZ5aG9zdCA9IHZhX2FyZyhhcmcsIGxvbmcpID8gMiA6IDA7Ci0tICAgICAgICBjX3JjID0gY3VybF9lYXN5X3NldG9wdChjX2gsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIGhhbmRsZS0+c3NsdmVyaWZ5aG9zdCk7Ci0rICAgICAgICBjX3JjID0gY3VybF9lYXN5X3NldG9wdChjX2gsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIGhhbmRsZS0+c3NsdmVyaWZ5aG9zdCk7Ci0gICAgICAgICBicmVhazsKLSAKLSAgICAgY2FzZSBMUk9fU1NMQ0xJRU5UQ0VSVDoKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG9fMS44LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwb18xLjguMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTY5ODg1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG9fMS44LjEuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICIgQSBsaWJyYXJ5IHByb3ZpZGluZyBDIGFuZCBQeXRob24gKGxpYmNVUkwgbGlrZSkgQVBJIGZvciBkb3dubG9hZGluZyBsaW51eCByZXBvc2l0b3J5IG1ldGFkYXRhIGFuZCBwYWNrYWdlcy4iCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9saWJyZXBvLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLURvLW5vdC10cnktdG8tb2J0YWluLVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1TZXQtZ3BnbWUtdmFyaWFibGVzLXdpdGgtcGtnLWNvbmZpZy1ub3Qtd2l0aC1jbWFrZS1tLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNSRVYgPSAiN2I5YjdiZjM4OGYzZjA1OTUyOWM2ZjUwYzQwYjMwOTE5ZmVmMzBmOSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworREVQRU5EUyA9ICJjdXJsIGV4cGF0IGdsaWItMi4wIG9wZW5zc2wgYXR0ciBncGdtZSIKKworaW5oZXJpdCBjbWFrZSBkaXN0dXRpbHMzLWJhc2UgcGtnY29uZmlnCisKK0VYVFJBX09FQ01BS0UgPSAiIC1EUFlUSE9OX0lOU1RBTExfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IC1EUFlUSE9OX0RFU0lSRUQ9MyAtREVOQUJMRV9URVNUUz1PRkYgLURFTkFCTEVfRE9DUz1PRkYiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG9fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG9fZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjM4YjE0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAiIEEgbGlicmFyeSBwcm92aWRpbmcgQyBhbmQgUHl0aG9uIChsaWJjVVJMIGxpa2UpIEFQSSBmb3IgZG93bmxvYWRpbmcgbGludXggcmVwb3NpdG9yeSBtZXRhZGF0YSBhbmQgcGFja2FnZXMuIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvbGlicmVwby5naXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Db3JyZWN0bHktc2V0LXRoZS1saWJyYXJ5LWluc3RhbGxhdGlvbi1kaXJlY3RvcnkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1Eby1ub3QtdHJ5LXRvLW9idGFpbi1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1wLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtdGVzdHMtZml4LWEtcmFjZS13aGVuLWRlbGV0aW5nLXRlbXBvcmFyeS1kaXJlY3Rvcmllcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LVNldC1ncGdtZS12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLW5vdC13aXRoLWNtYWtlLW0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1GaXgtdHlwby1jb3JyZWN0LUxST19TU0xWRVJJRllIT1NULXdpdGgtQ1VSTE9QVF9TU0xfLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1QViA9ICIxLjcuMjArZ2l0JHtTUkNQVn0iCi1TUkNSRVYgPSAiZTExMzdjYmJkYTc4ZmVjYjE5MjE0NjMwMDc5MDY4MGE1YmM4MTFiMSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotREVQRU5EUyA9ICJjdXJsIGV4cGF0IGdsaWItMi4wIG9wZW5zc2wgYXR0ciBsaWJjaGVjayBncGdtZSIKLQotaW5oZXJpdCBjbWFrZSBkaXN0dXRpbHMzLWJhc2UgcGtnY29uZmlnCi0KLUVYVFJBX09FQ01BS0UgPSAiIC1EUFlUSE9OX0lOU1RBTExfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IC1EUFlUSE9OX0RFU0lSRUQ9MyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bS8wMDAxLURpc2FibGUtZ2VuZXJhdGluZy1hLW5hdGl2ZS1sbHZtLWNvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtLzAwMDEtRGlzYWJsZS1nZW5lcmF0aW5nLWEtbmF0aXZlLWxsdm0tY29uZmlnLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MDllNGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bS8wMDAxLURpc2FibGUtZ2VuZXJhdGluZy1hLW5hdGl2ZS1sbHZtLWNvbmZpZy5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIDdmNzc0M2NlMjMzZmNkNzM1ZWM1ODBjNzUyNzA0MTM0OTM2NThhYTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxOSBBcHIgMjAxOCAxODowODozMSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBEaXNhYmxlIGdlbmVyYXRpbmcgYSBuYXRpdmUgbGx2bS1jb25maWcKKworT3BlbkVtYmVkZGVkIGFscmVhZHkgYnVpbGRzIHRoaXMgYXMgcGFydCBvZiBsbHZtLW5hdGl2ZQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgdG9vbHMvbGx2bS1jb25maWcvQ01ha2VMaXN0cy50eHQgfCAxNiAtLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdG9vbHMvbGx2bS1jb25maWcvQ01ha2VMaXN0cy50eHQgYi90b29scy9sbHZtLWNvbmZpZy9DTWFrZUxpc3RzLnR4dAoraW5kZXggMjVmOTljZWM5NzguLmM0NWU5YjY0MmE4IDEwMDY0NAorLS0tIGEvdG9vbHMvbGx2bS1jb25maWcvQ01ha2VMaXN0cy50eHQKKysrKyBiL3Rvb2xzL2xsdm0tY29uZmlnL0NNYWtlTGlzdHMudHh0CitAQCAtNjMsMTkgKzYzLDMgQEAgZW5kaWYoKQorIAorICMgQWRkIHRoZSBkZXBlbmRlbmN5IG9uIHRoZSBnZW5lcmF0aW9uIHN0ZXAuCisgYWRkX2ZpbGVfZGVwZW5kZW5jaWVzKCR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9sbHZtLWNvbmZpZy5jcHAgJHtCVUlMRFZBUklBQkxFU19PQkpQQVRIfSkKKy0KKy1pZihDTUFLRV9DUk9TU0NPTVBJTElORykKKy0gIHNldCgke3Byb2plY3R9X0xMVk1fQ09ORklHX0VYRSAiJHtMTFZNX05BVElWRV9CVUlMRH0vYmluL2xsdm0tY29uZmlnIikKKy0gIHNldCgke3Byb2plY3R9X0xMVk1fQ09ORklHX0VYRSAkeyR7cHJvamVjdH1fTExWTV9DT05GSUdfRVhFfSBQQVJFTlRfU0NPUEUpCistCistICBhZGRfY3VzdG9tX2NvbW1hbmQoT1VUUFVUICIkeyR7cHJvamVjdH1fTExWTV9DT05GSUdfRVhFfSIKKy0gICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC0tYnVpbGQgLiAtLXRhcmdldCBsbHZtLWNvbmZpZyAtLWNvbmZpZyAkPENPTkZJR1VSQVRJT04+CistICAgIERFUEVORFMgJHtMTFZNX05BVElWRV9CVUlMRH0vQ01ha2VDYWNoZS50eHQKKy0gICAgV09SS0lOR19ESVJFQ1RPUlkgJHtMTFZNX05BVElWRV9CVUlMRH0KKy0gICAgQ09NTUVOVCAiQnVpbGRpbmcgbmF0aXZlIGxsdm0tY29uZmlnLi4uIgorLSAgICBVU0VTX1RFUk1JTkFMKQorLSAgYWRkX2N1c3RvbV90YXJnZXQoJHtwcm9qZWN0fU5hdGl2ZUxMVk1Db25maWcgREVQRU5EUyAkeyR7cHJvamVjdH1fTExWTV9DT05GSUdfRVhFfSkKKy0gIGFkZF9kZXBlbmRlbmNpZXMoJHtwcm9qZWN0fU5hdGl2ZUxMVk1Db25maWcgQ09ORklHVVJFX0xMVk1fTkFUSVZFKQorLQorLSAgYWRkX2RlcGVuZGVuY2llcyhsbHZtLWNvbmZpZyAke3Byb2plY3R9TmF0aXZlTExWTUNvbmZpZykKKy1lbmRpZihDTUFLRV9DUk9TU0NPTVBJTElORykKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtLzAwMDEtbGx2bS1UYXJnZXRMaWJyYXJ5SW5mby1VbmRlZmluZS1saWJjLWZ1bmN0aW9ucy1pZi10aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtLzAwMDEtbGx2bS1UYXJnZXRMaWJyYXJ5SW5mby1VbmRlZmluZS1saWJjLWZ1bmN0aW9ucy1pZi10aC5wYXRjaAppbmRleCBlMjUxNzk5Li4yMDk3NjRjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bS8wMDAxLWxsdm0tVGFyZ2V0TGlicmFyeUluZm8tVW5kZWZpbmUtbGliYy1mdW5jdGlvbnMtaWYtdGgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm0vMDAwMS1sbHZtLVRhcmdldExpYnJhcnlJbmZvLVVuZGVmaW5lLWxpYmMtZnVuY3Rpb25zLWlmLXRoLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyODI5M2U0OGNmMWE1MjAwNGM2YTc4ZGU0NDg3MTg0NDFmOWUwNWY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5NjU1OGM0ZjI1ZDUxMzI5MzYwMTRmNmYyZDYyNTJjZmRmZGY0NzhhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFNhdCwgMjEgTWF5IDIwMTYgMDA6MzM6MjAgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAxLzJdIGxsdm06IFRhcmdldExpYnJhcnlJbmZvOiBVbmRlZmluZSBsaWJjIGZ1bmN0aW9ucyBpZiB0aGV5CkBAIC0xNSwxMCArMTUsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1RhcmdldExpYnJhcnlJbmZvLmRlZiBiL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJnZXRMaWJyYXJ5SW5mby5kZWYKLWluZGV4IDljYmU5MTdjMTQ2Li5hZmY4NDE5Y2Y1NCAxMDA2NDQKK2luZGV4IGE0NjFlZDgxM2I5Li5mOWZkOWZhZWVlMCAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJnZXRMaWJyYXJ5SW5mby5kZWYKICsrKyBiL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJnZXRMaWJyYXJ5SW5mby5kZWYKLUBAIC02NTYsNiArNjU2LDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZtb2RsIikKK0BAIC02NjUsNiArNjY1LDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZtb2RsIikKICBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoZm9wZW4pCiAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZvcGVuIikKICAvLy8gRklMRSAqZm9wZW42NChjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqb3BlbnR5cGUpCkBAIC0yOCw3ICsyOCw3IEBACiAgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKGZvcGVuNjQpCiAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZvcGVuNjQiKQogIC8vLyBpbnQgZnByaW50ZihGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKLUBAIC02OTEsNiArNjk0LDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZzZWVrIikKK0BAIC03MDAsNiArNzAzLDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZzZWVrIikKICAvLy8gaW50IGZzZWVrbyhGSUxFICpzdHJlYW0sIG9mZl90IG9mZnNldCwgaW50IHdoZW5jZSk7CiAgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKGZzZWVrbykKICBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZnNlZWtvIikKQEAgLTM4LDcgKzM4LDcgQEAKICAvLy8gaW50IGZzZWVrbzY0KEZJTEUgKnN0cmVhbSwgb2ZmNjRfdCBvZmZzZXQsIGludCB3aGVuY2UpCiAgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKGZzZWVrbzY0KQogIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJmc2Vla282NCIpCi1AQCAtNzAxLDYgKzcwNyw5IEBAIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJmc2V0cG9zIikKK0BAIC03MTAsNiArNzE2LDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZzZXRwb3MiKQogIFRMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTChmc3RhdCkKICBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZnN0YXQiKQogIC8vLyBpbnQgZnN0YXQ2NChpbnQgZmlsZWRlcywgc3RydWN0IHN0YXQ2NCAqYnVmKQpAQCAtNDgsNyArNDgsNyBAQAogIFRMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTChmc3RhdDY0KQogIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJmc3RhdDY0IikKICAvLy8gaW50IGZzdGF0dmZzKGludCBmaWxkZXMsIHN0cnVjdCBzdGF0dmZzICpidWYpOwotQEAgLTcxNiw2ICs3MjUsOSBAQCBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZnRlbGwiKQorQEAgLTcyNSw2ICs3MzQsOSBAQCBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZnRlbGwiKQogIFRMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTChmdGVsbG8pCiAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZ0ZWxsbyIpCiAgLy8vIG9mZjY0X3QgZnRlbGxvNjQoRklMRSAqc3RyZWFtKQpAQCAtNTgsNyArNTgsNyBAQAogIFRMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTChmdGVsbG82NCkKICBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZnRlbGxvNjQiKQogIC8vLyBpbnQgZnRyeWxvY2tmaWxlKEZJTEUgKmZpbGUpOwotQEAgLTgzNiw2ICs4NDgsOSBAQCBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgibG9nbCIpCitAQCAtODQ1LDYgKzg1Nyw5IEBAIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJsb2dsIikKICBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwobHN0YXQpCiAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImxzdGF0IikKICAvLy8gaW50IGxzdGF0NjQoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQ2NCAqYnVmKTsKQEAgLTY4LDcgKzY4LDcgQEAKICBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwobHN0YXQ2NCkKICBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgibHN0YXQ2NCIpCiAgLy8vIHZvaWQgKm1hbGxvYyhzaXplX3Qgc2l6ZSk7Ci1AQCAtMTA1NSw2ICsxMDcwLDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoInNzY2FuZiIpCitAQCAtMTA2NCw2ICsxMDc5LDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoInNzY2FuZiIpCiAgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKHN0YXQpCiAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoInN0YXQiKQogIC8vLyBpbnQgc3RhdDY0KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0NjQgKmJ1Zik7CkBAIC03OCw3ICs3OCw3IEBACiAgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKHN0YXQ2NCkKICBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgic3RhdDY0IikKICAvLy8gaW50IHN0YXR2ZnMoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXR2ZnMgKmJ1Zik7Ci1AQCAtMTE4NCw2ICsxMjAyLDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoInRpbWVzIikKK0BAIC0xMTkzLDYgKzEyMTEsOSBAQCBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgidGltZXMiKQogIFRMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTCh0bXBmaWxlKQogIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJ0bXBmaWxlIikKICAvLy8gRklMRSAqdG1wZmlsZTY0KHZvaWQpCkBAIC04OSw1ICs4OSw1IEBACiAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoInRtcGZpbGU2NCIpCiAgLy8vIGludCB0b2FzY2lpKGludCBjKTsKIC0tIAotMi4xMy4xCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm0vMDAwMi1sbHZtLWFsbG93LWVudi1vdmVycmlkZS1vZi1leGUtcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtLzAwMDItbGx2bS1hbGxvdy1lbnYtb3ZlcnJpZGUtb2YtZXhlLXBhdGgucGF0Y2gKaW5kZXggODMyYmQ3Mi4uMjFkMmY4MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm0vMDAwMi1sbHZtLWFsbG93LWVudi1vdmVycmlkZS1vZi1leGUtcGF0aC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bS8wMDAyLWxsdm0tYWxsb3ctZW52LW92ZXJyaWRlLW9mLWV4ZS1wYXRoLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBkNzc2NDg3YmFjMTc2NTA3MDQ2MTQyNDhkMTlkMWU2YjM1Nzc1MDAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAyZjhlYTc2N2FmZGFhNDQwYzYzNjgwNDA2MzBlMWIzZWE2YTA5NzdhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWFydGluIEtlbGx5IDxta2VsbHlAeGV2by5jb20+CiBEYXRlOiBGcmksIDE5IE1heSAyMDE3IDAwOjIyOjU3IC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0ggMi8yXSBsbHZtOiBhbGxvdyBlbnYgb3ZlcnJpZGUgb2YgZXhlIHBhdGgKQEAgLTM1LDUgKzM1LDUgQEAKICAgIC8vIGFsbG93IHRha2luZyB0aGUgYWRkcmVzcyBvZiA6Om1haW4gaG93ZXZlci4KICAgIHZvaWQgKlAgPSAodm9pZCAqKShpbnRwdHJfdClHZXRFeGVjdXRhYmxlUGF0aDsKIC0tIAotMi4xMy4xCisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm1fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm1fZ2l0LmJiCmluZGV4IGYwNmZhNDkuLmNiM2JiYTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bV9naXQuYmIKQEAgLTgsNyArOCw3IEBACiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuVFhUO21kNT1lODI1ZTAxN2VkYzM1Y2ZkNThlMjYxMTZlNTI1MTc3MSIKIAotREVQRU5EUyA9ICJsaWJmZmkgbGlieG1sMi1uYXRpdmUgemxpYiBuaW5qYS1uYXRpdmUgbGx2bS1uYXRpdmUiCitERVBFTkRTID0gImxpYmZmaSBsaWJ4bWwyIHpsaWIgbmluamEtbmF0aXZlIGxsdm0tbmF0aXZlIgogCiBSREVQRU5EU18ke1BOfV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBuY3Vyc2VzLXRlcm1pbmZvIgogCkBAIC0xOSwxNCArMTksMTYgQEAKIExMVk1fUkVMRUFTRSA9ICIke1BWfSIKIExMVk1fRElSID0gImxsdm0ke0xMVk1fUkVMRUFTRX0iCiAKLVNSQ1JFViA9ICI5YTVjMzMzMzg4Y2JiNTRhMGNlM2E2N2M0ZjUzOWY1ZTU5MGEwODliIgotUFYgPSAiNS4wIgorU1JDUkVWID0gIjA4OWQ0YzBjNDkwNjg3ZGI2Yzc1ZjFkMDc0ZTk5YzRkNDI5MzZhNTAiCitQViA9ICI2LjAiCitCUkFOQ0ggPSAicmVsZWFzZV82MCIKIFBBVENIX1ZFUlNJT04gPSAiMCIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9sbHZtLW1pcnJvci9sbHZtLmdpdDticmFuY2g9cmVsZWFzZV81MDtwcm90b2NvbD1odHRwIFwKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9sbHZtLW1pcnJvci9sbHZtLmdpdDticmFuY2g9JHtCUkFOQ0h9O3Byb3RvY29sPWh0dHAgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1sbHZtLVRhcmdldExpYnJhcnlJbmZvLVVuZGVmaW5lLWxpYmMtZnVuY3Rpb25zLWlmLXRoLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItbGx2bS1hbGxvdy1lbnYtb3ZlcnJpZGUtb2YtZXhlLXBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLWdlbmVyYXRpbmctYS1uYXRpdmUtbGx2bS1jb25maWcucGF0Y2ggXAogICAgICAgICAgICIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogTExWTV9JTlNUQUxMX0RJUiA9ICIke1dPUktESVJ9L2xsdm0taW5zdGFsbCIKQEAgLTg0LDE1ICs4NiwxNSBAQAogfQogCiBkb19jb21waWxlKCkgewotCU5JTkpBX1NUQVRVUz0iWyVwXSAiIG5pbmphIC12ICR7UEFSQUxMRUxfTUFLRX0KKwluaW5qYSAtdiAke1BBUkFMTEVMX01BS0V9CiB9CiAKIGRvX2NvbXBpbGVfY2xhc3MtbmF0aXZlKCkgewotCU5JTkpBX1NUQVRVUz0iWyVwXSAiIG5pbmphIC12ICR7UEFSQUxMRUxfTUFLRX0gbGx2bS1jb25maWcgbGx2bS10YmxnZW4KKwluaW5qYSAtdiAke1BBUkFMTEVMX01BS0V9IGxsdm0tY29uZmlnIGxsdm0tdGJsZ2VuCiB9CiAKIGRvX2luc3RhbGwoKSB7Ci0JTklOSkFfU1RBVFVTPSJbJXBdICIgREVTVERJUj0ke0xMVk1fSU5TVEFMTF9ESVJ9IG5pbmphIC12IGluc3RhbGwKKwlERVNURElSPSR7TExWTV9JTlNUQUxMX0RJUn0gbmluamEgLXYgaW5zdGFsbAogCWluc3RhbGwgLUQgLW0gMDc1NSAke0J9L2Jpbi9sbHZtLWNvbmZpZyAke0R9JHtsaWJkaXJ9LyR7TExWTV9ESVJ9L2xsdm0tY29uZmlnCiAKIAlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vJHtMTFZNX0RJUn0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbTQvbTQtMS40LjE4LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbTQvbTQtMS40LjE4LmluYwppbmRleCBkN2M4NjQ4Li5lZThiZWU0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL200L200LTEuNC4xOC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tNC9tNC0xLjQuMTguaW5jCkBAIC0xLDIyICsxLDI5IEBACi1yZXF1aXJlIG00LmluYworU1VNTUFSWSA9ICJUcmFkaXRpb25hbCBVbml4IG1hY3JvIHByb2Nlc3NvciIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbTQvbTQuaHRtbCIKK0RFU0NSSVBUSU9OID0gIkdOVSBtNCBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgdHJhZGl0aW9uYWwgVW5peCBtYWNybyBwcm9jZXNzb3IuICBJdCBpcyBtb3N0bHkgU1ZSNCBcCitjb21wYXRpYmxlIGFsdGhvdWdoIGl0IGhhcyBzb21lIGV4dGVuc2lvbnMgKGZvciBleGFtcGxlLCBoYW5kbGluZyBtb3JlIHRoYW4gOSBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgdG8gbWFjcm9zKS4gXAorR05VIE00IGFsc28gaGFzIGJ1aWx0LWluIGZ1bmN0aW9ucyBmb3IgaW5jbHVkaW5nIGZpbGVzLCBydW5uaW5nIHNoZWxsIGNvbW1hbmRzLCBkb2luZyBhcml0aG1ldGljLCBldGMuIgogCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aG91dC1saWJzaWdzZWd2LXByZWZpeCIKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L200L200LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9hY19jb25maWdfbGlua3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWdldHMucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhMDc3Nzc5ZGIyODdhZGY0ZTEyYTAzNTAyOTAwMmQyOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhYjI2MzM5MjFhNWNkMzhlNDg3OTdiZjU1MjFhZDI1OWJkYzRiOTc5MDc4MDM0YTNiNzkwZDdmZWM1NDkzZmFiIgogCiBMSUNFTlNFID0gIkdQTHYzIgogCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKIAkgICAgICAgICAgICBmaWxlOi8vZXhhbXBsZXMvQ09QWUlORzttZDU9NDAzMTU5M2IyMTY2ZDZjNDdjYWUyODJkOTQ0YTdlZGUiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly9hY19jb25maWdfbGlua3MucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3JlbW92ZS1nZXRzLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCi0JICAgIgotCiAjIEZpeCAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiBsZW4oVE1QRElSKSA9IDQxMAogYWNwYXRocyA9ICItSSAuL200IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiYTA3Nzc3OWRiMjg3YWRmNGUxMmEwMzUwMjkwMDJkMjgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWIyNjMzOTIxYTVjZDM4ZTQ4Nzk3YmY1NTIxYWQyNTliZGM0Yjk3OTA3ODAzNGEzYjc5MGQ3ZmVjNTQ5M2ZhYiIKK0VYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LWxpYnNpZ3NlZ3YtcHJlZml4IgorCitFWFRSQV9PRU1BS0UgKz0gIidpbmZvZGlyPSR7aW5mb2Rpcn0nIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tNC9tNC1uYXRpdmVfMS40LjE4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tNC9tNC1uYXRpdmVfMS40LjE4LmJiCmluZGV4IDA2ZDhhYTIuLjQwN2FkODkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbTQvbTQtbmF0aXZlXzEuNC4xOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL200L200LW5hdGl2ZV8xLjQuMTguYmIKQEAgLTExLDMgKzExLDQgQEAKIAlvZV9ydW5jb25mCiB9CiAKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0dOVV9NSVJST1J9L200LyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbTQvbTQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tNC9tNC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMDI1OTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tNC9tNC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1TVU1NQVJZID0gIlRyYWRpdGlvbmFsIFVuaXggbWFjcm8gcHJvY2Vzc29yIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9tNC9tNC5odG1sIgotREVTQ1JJUFRJT04gPSAiR05VIG00IGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSB0cmFkaXRpb25hbCBVbml4IG1hY3JvIHByb2Nlc3Nvci4gIEl0IGlzIG1vc3RseSBTVlI0IFwKLWNvbXBhdGlibGUgYWx0aG91Z2ggaXQgaGFzIHNvbWUgZXh0ZW5zaW9ucyAoZm9yIGV4YW1wbGUsIGhhbmRsaW5nIG1vcmUgdGhhbiA5IHBvc2l0aW9uYWwgcGFyYW1ldGVycyB0byBtYWNyb3MpLiBcCi1HTlUgTTQgYWxzbyBoYXMgYnVpbHQtaW4gZnVuY3Rpb25zIGZvciBpbmNsdWRpbmcgZmlsZXMsIHJ1bm5pbmcgc2hlbGwgY29tbWFuZHMsIGRvaW5nIGFyaXRobWV0aWMsIGV0Yy4iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KLQotRVhUUkFfT0VNQUtFICs9ICInaW5mb2Rpcj0ke2luZm9kaXJ9JyIKLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9tNC9tNC0ke1BWfS50YXIuZ3oiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL200L200L2FjX2NvbmZpZ19saW5rcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbTQvbTQvYWNfY29uZmlnX2xpbmtzLnBhdGNoCmluZGV4IDI3NWMwYjIuLjcxZWRmNTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbTQvbTQvYWNfY29uZmlnX2xpbmtzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbTQvbTQvYWNfY29uZmlnX2xpbmtzLnBhdGNoCkBAIC0xNCwxMCArMTQsMTEgQEAKIAogMjAwOS0xMS0xMAlFc2JlbiBIYWFiZW5kYWwJICAgIDxlaGFAZG9yZWRldmVsb3BtZW50LmRrPgogCi1kaWZmIC11ck4gbTQtMS40LjEzLm9yaWcvY29uZmlndXJlIG00LTEuNC4xMy9jb25maWd1cmUKLS0tLSBtNC0xLjQuMTMub3JpZy9jb25maWd1cmUJMjAwOS0xMS0xMCAxMDo1NDowMC4zMDE3MDcwOTcgKzAxMDAKLSsrKyBtNC0xLjQuMTMvY29uZmlndXJlCTIwMDktMTEtMTAgMTA6NTQ6MTcuMzE0MjA2Mzc5ICswMTAwCi1AQCAtMTQ4NjAsOCArMTQ4NjAsOCBAQAorSW5kZXg6IG00LTEuNC4xOC9jb25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBtNC0xLjQuMTgub3JpZy9jb25maWd1cmUKKysrKyBtNC0xLjQuMTgvY29uZmlndXJlCitAQCAtMjQ0MTUsOCArMjQ0MTUsOCBAQCAkYXNfZWNobyAiI2RlZmluZSBHTlVMSUJfVEVTVF9HRVRUSU1FT0ZECiAgICAjIG9ubHksIGl0IGRvZXMgbm90IG1hdHRlciBpZiB3ZSBza2lwIHRoZSBsaW5rIHdpdGggb2xkZXIgYXV0b2NvbmYuCiAgICAjIEF1dG9tYWtlIDEuMTAuMSBhbmQgZWFybGllciB0cnkgdG8gcmVtb3ZlIEdOVW1ha2VmaWxlIGluIG5vbi1WUEFUSAogICAgIyBidWlsZHMsIHNvIHVzZSBhIHNoZWxsIHZhcmlhYmxlIHRvIGJ5cGFzcyB0aGlzLgpAQCAtMjcsNCArMjgsNCBAQAogKyAjIGFjX2NvbmZpZ19saW5rcz0iJGFjX2NvbmZpZ19saW5rcyAkR05VbWFrZWZpbGU6JEdOVW1ha2VmaWxlIgogIAogIAotIAorICAgOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UuaW5jCmluZGV4IDg0OWI3NDIuLmI4OTA1YmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS5pbmMKQEAgLTUsNyArNSwxMCBAQAogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL21ha2UvIgogU0VDVElPTiA9ICJkZXZlbCIKIAotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L21ha2UvbWFrZS0ke1BWfS50YXIuYnoyIgorU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L21ha2UvbWFrZS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZ2xvYi1Eby1ub3QtYXNzdW1lLWdsaWJjLWdsb2ItaW50ZXJuYWxzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItZ2xvYi1Eby1ub3QtYXNzdW1lLWdsaWJjLWdsb2ItaW50ZXJuYWxzLnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyB0ZXhpbmZvCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDEtZ2xvYi1Eby1ub3QtYXNzdW1lLWdsaWJjLWdsb2ItaW50ZXJuYWxzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMS1nbG9iLURvLW5vdC1hc3N1bWUtZ2xpYmMtZ2xvYi1pbnRlcm5hbHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI2ZTRkNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDEtZ2xvYi1Eby1ub3QtYXNzdW1lLWdsaWJjLWdsb2ItaW50ZXJuYWxzLnBhdGNoCkBAIC0wLDAgKzEsNzAgQEAKK0Zyb20gYzkwYTdkZGE2YzU3MmY3OWI4ZTc4ZGE0NGI2ZWJmODcwNGVkZWY2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhdWwgRWdnZXJ0IDxlZ2dlcnRAY3MudWNsYS5lZHU+CitEYXRlOiBTdW4sIDI0IFNlcCAyMDE3IDA5OjEyOjU4IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBnbG9iOiBEbyBub3QgYXNzdW1lIGdsaWJjIGdsb2IgaW50ZXJuYWxzLgorCitJdCBoYXMgYmVlbiBwcm9wb3NlZCB0aGF0IGdsaWJjIGdsb2Igc3RhcnQgdXNpbmcgZ2xfbHN0YXQsCit3aGljaCB0aGUgQVBJIGFsbG93cyBpdCB0byBkby4gIEdOVSAnbWFrZScgc2hvdWxkIG5vdCBnZXQgaW4KK3RoZSB3YXkgb2YgdGhpcy4gIFNlZToKK2h0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDE3LTA5L21zZzAwNDA5Lmh0bWwKKworKiBkaXIuYyAobG9jYWxfbHN0YXQpOiBOZXcgZnVuY3Rpb24sIGxpa2UgbG9jYWxfc3RhdC4KKyhkaXJfc2V0dXBfZ2xvYik6IFVzZSBpdCB0byBpbml0aWFsaXplIGdsX2xzdGF0IHRvbywgYXMgdGhlIEFQSQorcmVxdWlyZXMuCistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKyBkaXIuYyB8IDI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9kaXIuYyBiL2Rpci5jCitpbmRleCBmMzRiYmY1Li4xMmVlZjMwIDEwMDY0NAorLS0tIGEvZGlyLmMKKysrKyBiL2Rpci5jCitAQCAtMTI5OSwxNSArMTI5OSw0MCBAQCBsb2NhbF9zdGF0IChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqYnVmKQorIH0KKyAjZW5kaWYKKyAKKysvKiBTaW1pbGFybHkgZm9yIGxzdGF0LiAgKi8KKysjaWYgIWRlZmluZWQobHN0YXQpICYmICFkZWZpbmVkKFdJTkRPV1MzMikgfHwgZGVmaW5lZChWTVMpCisrIyBpZm5kZWYgVk1TCisrIyAgaWZuZGVmIEhBVkVfU1lTX1NUQVRfSAorK2ludCBsc3RhdCAoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKnNidWYpOworKyMgIGVuZGlmCisrIyBlbHNlCisrICAgIC8qIFdlIGFyZSBkb25lIHdpdGggdGhlIGZha2UgbHN0YXQuICBHbyBiYWNrIHRvIHRoZSByZWFsIGxzdGF0ICovCisrIyAgIGlmZGVmIGxzdGF0CisrIyAgICAgdW5kZWYgbHN0YXQKKysjICAgZW5kaWYKKysjIGVuZGlmCisrIyBkZWZpbmUgbG9jYWxfbHN0YXQgbHN0YXQKKysjZWxpZiBkZWZpbmVkKFdJTkRPV1MzMikKKysvKiBXaW5kb3dzIGRvZXNuJ3Qgc3VwcG9ydCBsc3RhdCgpLiAgKi8KKysjIGRlZmluZSBsb2NhbF9sc3RhdCBsb2NhbF9zdGF0CisrI2Vsc2UKKytzdGF0aWMgaW50CisrbG9jYWxfbHN0YXQgKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICpidWYpCisreworKyAgaW50IGU7CisrICBFSU5UUkxPT1AgKGUsIGxzdGF0IChwYXRoLCBidWYpKTsKKysgIHJldHVybiBlOworK30KKysjZW5kaWYKKysKKyB2b2lkCisgZGlyX3NldHVwX2dsb2IgKGdsb2JfdCAqZ2wpCisgeworICAgZ2wtPmdsX29wZW5kaXIgPSBvcGVuX2RpcnN0cmVhbTsKKyAgIGdsLT5nbF9yZWFkZGlyID0gcmVhZF9kaXJzdHJlYW07CisgICBnbC0+Z2xfY2xvc2VkaXIgPSBmcmVlOworKyAgZ2wtPmdsX2xzdGF0ID0gbG9jYWxfbHN0YXQ7CisgICBnbC0+Z2xfc3RhdCA9IGxvY2FsX3N0YXQ7CistICAvKiBXZSBkb24ndCBib3RoZXIgc2V0dGluZyBnbF9sc3RhdCwgc2luY2UgZ2xvYiBuZXZlciBjYWxscyBpdC4KKy0gICAgIFRoZSBzbG90IGlzIG9ubHkgdGhlcmUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCA0LjQgQlNELiAgKi8KKyB9CisgCisgdm9pZAorLS0gCisyLjE2LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMi1nbG9iLURvLW5vdC1hc3N1bWUtZ2xpYmMtZ2xvYi1pbnRlcm5hbHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAyLWdsb2ItRG8tbm90LWFzc3VtZS1nbGliYy1nbG9iLWludGVybmFscy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDlhY2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMi1nbG9iLURvLW5vdC1hc3N1bWUtZ2xpYmMtZ2xvYi1pbnRlcm5hbHMucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSA5ODU4NzAyZGJkMWUxMzcyNjJjMDY3NjU5MTk5Mzc2NjA4NzlmNjNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bCBFZ2dlcnQgPGVnZ2VydEBjcy51Y2xhLmVkdT4KK0RhdGU6IFN1biwgMjQgU2VwIDIwMTcgMDk6MTI6NTggLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIGdsb2I6IERvIG5vdCBhc3N1bWUgZ2xpYmMgZ2xvYiBpbnRlcm5hbHMuCisKK0l0IGhhcyBiZWVuIHByb3Bvc2VkIHRoYXQgZ2xpYmMgZ2xvYiBzdGFydCB1c2luZyBnbF9sc3RhdCwKK3doaWNoIHRoZSBBUEkgYWxsb3dzIGl0IHRvIGRvLiAgR05VICdtYWtlJyBzaG91bGQgbm90IGdldCBpbgordGhlIHdheSBvZiB0aGlzLiAgU2VlOgoraHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9saWJjLWFscGhhLzIwMTctMDkvbXNnMDA0MDkuaHRtbAorCisqIGRpci5jIChsb2NhbF9sc3RhdCk6IE5ldyBmdW5jdGlvbiwgbGlrZSBsb2NhbF9zdGF0LgorKGRpcl9zZXR1cF9nbG9iKTogVXNlIGl0IHRvIGluaXRpYWxpemUgZ2xfbHN0YXQgdG9vLCBhcyB0aGUgQVBJCityZXF1aXJlcy4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCisgY29uZmlndXJlLmFjIHwgMyArLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDY0ZWM4NzAuLmU4NzkwMWMgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTM5OSwxMCArMzk5LDkgQEAgQUNfQ0FDSEVfQ0hFQ0soW2lmIHN5c3RlbSBsaWJjIGhhcyBHTlUgZ2xvYl0sIFttYWtlX2N2X3N5c19nbnVfZ2xvYl0sCisgI2luY2x1ZGUgPGdsb2IuaD4KKyAjaW5jbHVkZSA8Zm5tYXRjaC5oPgorIAorLSNkZWZpbmUgR0xPQl9JTlRFUkZBQ0VfVkVSU0lPTiAxCisgI2lmICFkZWZpbmVkIF9MSUJDICYmIGRlZmluZWQgX19HTlVfTElCUkFSWV9fICYmIF9fR05VX0xJQlJBUllfXyA+IDEKKyAjIGluY2x1ZGUgPGdudS12ZXJzaW9ucy5oPgorLSMgaWYgX0dOVV9HTE9CX0lOVEVSRkFDRV9WRVJTSU9OID09IEdMT0JfSU5URVJGQUNFX1ZFUlNJT04KKytpZiBfR05VX0dMT0JfSU5URVJGQUNFX1ZFUlNJT04gPT0gMSB8fCBfR05VX0dMT0JfSU5URVJGQUNFX1ZFUlNJT04gPT0gMgorICAgIGdudSBnbG9iCisgIyBlbmRpZgorICNlbmRpZl0sCistLSAKKzIuMTYuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDEtTGlua2VyLXJ1bGVzLW1vdmUtY3Jvc3NfYXJncy1pbi1mcm9udC1vZi1vdXRwdXRfYXJncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMS1MaW5rZXItcnVsZXMtbW92ZS1jcm9zc19hcmdzLWluLWZyb250LW9mLW91dHB1dF9hcmdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3Nzc4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDEtTGlua2VyLXJ1bGVzLW1vdmUtY3Jvc3NfYXJncy1pbi1mcm9udC1vZi1vdXRwdXRfYXJncy5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDQ2NzYyMjRkYmRmZjBmNzEwN2U4Y2JkYmUwZWFiMTljODU1ZjE0NTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTcgTm92IDIwMTcgMTM6MTg6MjggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gTGlua2VyIHJ1bGVzOiBtb3ZlIHtjcm9zc19hcmdzfSBpbiBmcm9udCBvZiB7b3V0cHV0X2FyZ3N9CisKK1RoZSBwcmV2aW91cyBvcmRlciB3YXMgZm91bmQgdG8gYnJlYWsgbGlua2luZyBpbiBzb21lIGNhc2VzCisoZS5nLiB3aGVuIC1uby1waWMgLWZuby1QSUMgd2FzIHByZXNlbnQgaW4ge2Nyb3NzX2FyZ3N9LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgbWVzb25idWlsZC9iYWNrZW5kL25pbmphYmFja2VuZC5weSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL21lc29uYnVpbGQvYmFja2VuZC9uaW5qYWJhY2tlbmQucHkgYi9tZXNvbmJ1aWxkL2JhY2tlbmQvbmluamFiYWNrZW5kLnB5CitpbmRleCBiYjI4MWUxLi45NjliNzBlIDEwMDY0NAorLS0tIGEvbWVzb25idWlsZC9iYWNrZW5kL25pbmphYmFja2VuZC5weQorKysrIGIvbWVzb25idWlsZC9iYWNrZW5kL25pbmphYmFja2VuZC5weQorQEAgLTE1MDEsNyArMTUwMSw3IEBAIGludCBkdW1teTsKKyAgcnNwZmlsZV9jb250ZW50ID0gJEFSR1MgIHtvdXRwdXRfYXJnc30gJGluICRMSU5LX0FSR1Mge2Nyb3NzX2FyZ3N9ICRhbGlhc2luZworICcnJworICAgICAgICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICAgICAgY29tbWFuZF90ZW1wbGF0ZSA9ICcgY29tbWFuZCA9IHtleGVjdXRhYmxlfSAkQVJHUyB7b3V0cHV0X2FyZ3N9ICRpbiAkTElOS19BUkdTIHtjcm9zc19hcmdzfSAkYWxpYXNpbmdcbicKKysgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRfdGVtcGxhdGUgPSAnIGNvbW1hbmQgPSB7ZXhlY3V0YWJsZX0gJEFSR1Mge2Nyb3NzX2FyZ3N9IHtvdXRwdXRfYXJnc30gJGluICRMSU5LX0FSR1MgJGFsaWFzaW5nXG4nCisgICAgICAgICAgICAgICAgIGNvbW1hbmQgPSBjb21tYW5kX3RlbXBsYXRlLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGU9JyAnLmpvaW4oY29tcGlsZXIuZ2V0X2xpbmtlcl9leGVsaXN0KCkpLAorICAgICAgICAgICAgICAgICAgICAgY3Jvc3NfYXJncz0nICcuam9pbihjcm9zc19hcmdzKSwKKy0tIAorMi4xNS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMS1ndGtkb2MtZml4LWlzc3Vlcy10aGF0LWFyaXNlLXdoZW4tY3Jvc3MtY29tcGlsaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAxLWd0a2RvYy1maXgtaXNzdWVzLXRoYXQtYXJpc2Utd2hlbi1jcm9zcy1jb21waWxpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTkxMmU5NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMS1ndGtkb2MtZml4LWlzc3Vlcy10aGF0LWFyaXNlLXdoZW4tY3Jvc3MtY29tcGlsaW5nLnBhdGNoCkBAIC0wLDAgKzEsMTEzIEBACitGcm9tIGM1NjkyY2FjOWM1NTU2NjQyODEzNzdhODJiZjhiMWU0NjkzNGY0MzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgNCBBdWcgMjAxNyAxNjoxNjo0MSArMDMwMAorU3ViamVjdDogW1BBVENIIDEvM10gZ3RrZG9jOiBmaXggaXNzdWVzIHRoYXQgYXJpc2Ugd2hlbiBjcm9zcy1jb21waWxpbmcKKworU3BlY2lmaWNhbGx5OgorMSkgTWFrZSBpdCBwb3NzaWJsZSB0byBzcGVjaWZ5IGEgd3JhcHBlciBmb3IgZXhlY3V0aW5nIGJpbmFyaWVzCisodXN1YWxseSwgc29tZSBraW5kIG9mIHRhcmdldCBoYXJkd2FyZSBlbXVsYXRvciwgc3VjaCBhcyBxZW11KQorMikgRXhwbGljaXRseSBwcm92aWRlIENDIGFuZCBMRCB2aWEgY29tbWFuZCBsaW5lLCBhcyBvdGhlcndpc2UgZ3RrLWRvYyB3aWxsCit0cnkgdG8gZ3Vlc3MgdGhlbSwgaW5jb3JyZWN0bHkuCiszKSBJZiB0aGluZ3MgYnJlYWsgZG93biwgcHJpbnQgdGhlIGZ1bGwgY29tbWFuZCB3aXRoIGFyZ3VtZW50cywKK25vdCBqdXN0IHRoZSBiaW5hcnkgbmFtZS4KKzQpIENvcnJlY3RseSBkZXRlcm1pbmUgdGhlIGNvbXBpbGVyL2xpbmtlciBleGVjdXRhYmxlcyBhbmQgY3Jvc3Mtb3B0aW9ucyB3aGVuIGNyb3NzLWNvbXBpbGluZworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCistLS0KKyBtZXNvbmJ1aWxkL21vZHVsZXMvZ25vbWUucHkgICAgICAgIHwgMTggKysrKysrKysrKysrKysrLS0tCisgbWVzb25idWlsZC9zY3JpcHRzL2d0a2RvY2hlbHBlci5weSB8ICA5ICsrKysrKystLQorIDIgZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21lc29uYnVpbGQvbW9kdWxlcy9nbm9tZS5weSBiL21lc29uYnVpbGQvbW9kdWxlcy9nbm9tZS5weQoraW5kZXggNTY3NjVhNS4uNGY3ZmUzMCAxMDA2NDQKKy0tLSBhL21lc29uYnVpbGQvbW9kdWxlcy9nbm9tZS5weQorKysrIGIvbWVzb25idWlsZC9tb2R1bGVzL2dub21lLnB5CitAQCAtNzY5LDYgKzc2OSwxMCBAQCBUaGlzIHdpbGwgYmVjb21lIGEgaGFyZCBlcnJvciBpbiB0aGUgZnV0dXJlLicnJykKKyAgICAgICAgICAgICAgICAgJy0tbW9kZT0nICsgbW9kZV0KKyAgICAgICAgIGlmIG5hbWVzcGFjZToKKyAgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLS1uYW1lc3BhY2U9JyArIG5hbWVzcGFjZSkKKysgICAgICAgIGd0a2RvY19leGVfd3JhcHBlciA9IHN0YXRlLmVudmlyb25tZW50LmNyb3NzX2luZm8uY29uZmlnWyJwcm9wZXJ0aWVzIl0uZ2V0KCdndGtkb2NfZXhlX3dyYXBwZXInLCBOb25lKQorKyAgICAgICAgaWYgZ3RrZG9jX2V4ZV93cmFwcGVyIGlzIG5vdCBOb25lOgorKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCctLWd0a2RvYy1leGUtd3JhcHBlcj0nICsgZ3RrZG9jX2V4ZV93cmFwcGVyKQorKworICAgICAgICAgYXJncyArPSBzZWxmLl91bnBhY2tfYXJncygnLS1odG1sYXJncz0nLCAnaHRtbF9hcmdzJywga3dhcmdzKQorICAgICAgICAgYXJncyArPSBzZWxmLl91bnBhY2tfYXJncygnLS1zY2FuYXJncz0nLCAnc2Nhbl9hcmdzJywga3dhcmdzKQorICAgICAgICAgYXJncyArPSBzZWxmLl91bnBhY2tfYXJncygnLS1zY2Fub2Jqc2FyZ3M9JywgJ3NjYW5vYmpzX2FyZ3MnLCBrd2FyZ3MpCitAQCAtNzk2LDE0ICs4MDAsMjIgQEAgVGhpcyB3aWxsIGJlY29tZSBhIGhhcmQgZXJyb3IgaW4gdGhlIGZ1dHVyZS4nJycpCisgICAgICAgICAgICAgICAgIHJhaXNlIE1lc29uRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgJ0dpciBpbmNsdWRlIGRpcnMgc2hvdWxkIGJlIGluY2x1ZGVfZGlyZWN0b3JpZXMoKS4nKQorICAgICAgICAgY2ZsYWdzLnVwZGF0ZShnZXRfaW5jbHVkZV9hcmdzKGluY19kaXJzKSkKKysKKysgICAgICAgIGNyb3NzX2NfYXJncyA9ICIgIi5qb2luKHN0YXRlLmVudmlyb25tZW50LmNyb3NzX2luZm8uY29uZmlnWyJwcm9wZXJ0aWVzIl0uZ2V0KCdjX2FyZ3MnLCAiIikpCisrICAgICAgICBjcm9zc19saW5rX2FyZ3MgPSAiICIuam9pbihzdGF0ZS5lbnZpcm9ubWVudC5jcm9zc19pbmZvLmNvbmZpZ1sicHJvcGVydGllcyJdLmdldCgnY19saW5rX2FyZ3MnLCAiIikpCisrCisgICAgICAgICBpZiBjZmxhZ3M6CistICAgICAgICAgICAgYXJncyArPSBbJy0tY2ZsYWdzPSVzJyAlICcgJy5qb2luKGNmbGFncyldCisrICAgICAgICAgICAgYXJncyArPSBbJy0tY2ZsYWdzPSVzICVzJyAlIChjcm9zc19jX2FyZ3MsJyAnLmpvaW4oY2ZsYWdzKSldCisgICAgICAgICBpZiBsZGZsYWdzOgorLSAgICAgICAgICAgIGFyZ3MgKz0gWyctLWxkZmxhZ3M9JXMnICUgJyAnLmpvaW4obGRmbGFncyldCisrICAgICAgICAgICAgYXJncyArPSBbJy0tbGRmbGFncz0lcyAlcycgJSAoY3Jvc3NfbGlua19hcmdzLCAnICcuam9pbihsZGZsYWdzKSldCisgICAgICAgICBjb21waWxlciA9IHN0YXRlLmVudmlyb25tZW50LmNvcmVkYXRhLmNvbXBpbGVycy5nZXQoJ2MnKQorLSAgICAgICAgaWYgY29tcGlsZXI6CisrICAgICAgICBjcm9zc19jb21waWxlciA9IHN0YXRlLmVudmlyb25tZW50LmNvcmVkYXRhLmNyb3NzX2NvbXBpbGVycy5nZXQoJ2MnKQorKyAgICAgICAgaWYgY29tcGlsZXIgYW5kIG5vdCBzdGF0ZS5lbnZpcm9ubWVudC5pc19jcm9zc19idWlsZCgpOgorICAgICAgICAgICAgIGFyZ3MgKz0gWyctLWNjPSVzJyAlICcgJy5qb2luKGNvbXBpbGVyLmdldF9leGVsaXN0KCkpXQorICAgICAgICAgICAgIGFyZ3MgKz0gWyctLWxkPSVzJyAlICcgJy5qb2luKGNvbXBpbGVyLmdldF9saW5rZXJfZXhlbGlzdCgpKV0KKysgICAgICAgIGVsaWYgY3Jvc3NfY29tcGlsZXIgYW5kIHN0YXRlLmVudmlyb25tZW50LmlzX2Nyb3NzX2J1aWxkKCk6CisrICAgICAgICAgICAgYXJncyArPSBbJy0tY2M9JXMnICUgJyAnLmpvaW4oY3Jvc3NfY29tcGlsZXIuZ2V0X2V4ZWxpc3QoKSldCisrICAgICAgICAgICAgYXJncyArPSBbJy0tbGQ9JXMnICUgJyAnLmpvaW4oY3Jvc3NfY29tcGlsZXIuZ2V0X2xpbmtlcl9leGVsaXN0KCkpXQorIAorICAgICAgICAgcmV0dXJuIGFyZ3MKKyAKK2RpZmYgLS1naXQgYS9tZXNvbmJ1aWxkL3NjcmlwdHMvZ3RrZG9jaGVscGVyLnB5IGIvbWVzb25idWlsZC9zY3JpcHRzL2d0a2RvY2hlbHBlci5weQoraW5kZXggNDQwNmIyOC4uYjg0NjgyNyAxMDA2NDQKKy0tLSBhL21lc29uYnVpbGQvc2NyaXB0cy9ndGtkb2NoZWxwZXIucHkKKysrKyBiL21lc29uYnVpbGQvc2NyaXB0cy9ndGtkb2NoZWxwZXIucHkKK0BAIC00NCwxMyArNDQsMTQgQEAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1pZ25vcmUtaGVhZGVycycsIGRlc3Q9J2lnbm9yZV9oZWFkZXJzJywgZGVmYXVsdD0nJykKKyBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW5hbWVzcGFjZScsIGRlc3Q9J25hbWVzcGFjZScsIGRlZmF1bHQ9JycpCisgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1tb2RlJywgZGVzdD0nbW9kZScsIGRlZmF1bHQ9JycpCisgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1pbnN0YWxsZGlyJywgZGVzdD0naW5zdGFsbF9kaXInKQorK3BhcnNlci5hZGRfYXJndW1lbnQoJy0tZ3RrZG9jLWV4ZS13cmFwcGVyJywgZGVzdD0nZ3RrZG9jX2V4ZV93cmFwcGVyJykKKyAKKyBkZWYgZ3RrZG9jX3J1bl9jaGVjayhjbWQsIGN3ZCk6CisgICAgICMgUHV0IHN0ZGVyciBpbnRvIHN0ZG91dCBzaW5jZSB3ZSB3YW50IHRvIHByaW50IGl0IG91dCBhbnl3YXkuCisgICAgICMgVGhpcyBwcmVzZXJ2ZXMgdGhlIG9yZGVyIG9mIG1lc3NhZ2VzLgorICAgICBwLCBvdXQgPSBQb3Blbl9zYWZlKGNtZCwgY3dkPWN3ZCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKVswOjJdCisgICAgIGlmIHAucmV0dXJuY29kZSAhPSAwOgorLSAgICAgICAgZXJyX21zZyA9IFsieyFyfSBmYWlsZWQgd2l0aCBzdGF0dXMgezpkfSIuZm9ybWF0KGNtZFswXSwgcC5yZXR1cm5jb2RlKV0KKysgICAgICAgIGVycl9tc2cgPSBbInshcn0gZmFpbGVkIHdpdGggc3RhdHVzIHs6ZH0iLmZvcm1hdChjbWQsIHAucmV0dXJuY29kZSldCisgICAgICAgICBpZiBvdXQ6CisgICAgICAgICAgICAgZXJyX21zZy5hcHBlbmQob3V0KQorICAgICAgICAgcmFpc2UgTWVzb25FeGNlcHRpb24oJ1xuJy5qb2luKGVycl9tc2cpKQorQEAgLTU4LDcgKzU5LDcgQEAgZGVmIGd0a2RvY19ydW5fY2hlY2soY21kLCBjd2QpOgorIGRlZiBidWlsZF9ndGtkb2Moc291cmNlX3Jvb3QsIGJ1aWxkX3Jvb3QsIGRvY19zdWJkaXIsIHNyY19zdWJkaXJzLAorICAgICAgICAgICAgICAgICAgbWFpbl9maWxlLCBtb2R1bGUsCisgICAgICAgICAgICAgICAgICBodG1sX2FyZ3MsIHNjYW5fYXJncywgZml4eHJlZl9hcmdzLCBta2RiX2FyZ3MsCistICAgICAgICAgICAgICAgICBnb2JqZWN0X3R5cGVzZmlsZSwgc2Nhbm9ianNfYXJncywgbGQsIGNjLCBsZGZsYWdzLCBjZmxhZ3MsCisrICAgICAgICAgICAgICAgICBnb2JqZWN0X3R5cGVzZmlsZSwgc2Nhbm9ianNfYXJncywgZ3RrZG9jX2V4ZV93cmFwcGVyLCBsZCwgY2MsIGxkZmxhZ3MsIGNmbGFncywKKyAgICAgICAgICAgICAgICAgIGh0bWxfYXNzZXRzLCBjb250ZW50X2ZpbGVzLCBpZ25vcmVfaGVhZGVycywgbmFtZXNwYWNlLAorICAgICAgICAgICAgICAgICAgZXhwYW5kX2NvbnRlbnRfZmlsZXMsIG1vZGUpOgorICAgICBwcmludCgiQnVpbGRpbmcgZG9jdW1lbnRhdGlvbiBmb3IgJXMiICUgbW9kdWxlKQorQEAgLTExMSw2ICsxMTIsOSBAQCBkZWYgYnVpbGRfZ3RrZG9jKHNvdXJjZV9yb290LCBidWlsZF9yb290LCBkb2Nfc3ViZGlyLCBzcmNfc3ViZGlycywKKyAgICAgaWYgZ29iamVjdF90eXBlc2ZpbGU6CisgICAgICAgICBzY2Fub2Jqc19jbWQgPSBbJ2d0a2RvYy1zY2FuZ29iaiddICsgc2Nhbm9ianNfYXJncyArIFsnLS10eXBlcz0nICsgZ29iamVjdF90eXBlc2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1tb2R1bGU9JyArIG1vZHVsZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXJ1bj0nICsgZ3RrZG9jX2V4ZV93cmFwcGVyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tY2M9JyArIGNjLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbGQ9JyArIGxkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tY2ZsYWdzPScgKyBjZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1sZGZsYWdzPScgKyBsZGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbGQ9JyArIGxkXQorQEAgLTIwNyw2ICsyMTEsNyBAQCBkZWYgcnVuKGFyZ3MpOgorICAgICAgICAgbWtkYmFyZ3MsCisgICAgICAgICBvcHRpb25zLmdvYmplY3RfdHlwZXNmaWxlLAorICAgICAgICAgc2Nhbm9ianNhcmdzLAorKyAgICAgICAgb3B0aW9ucy5ndGtkb2NfZXhlX3dyYXBwZXIsCisgICAgICAgICBvcHRpb25zLmxkLAorICAgICAgICAgb3B0aW9ucy5jYywKKyAgICAgICAgIG9wdGlvbnMubGRmbGFncywKKy0tIAorMi4xNS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMi1nb2JqZWN0LWludHJvc3BlY3Rpb24tZGV0ZXJtaW5lLWctaXItc2Nhbm5lci1hbmQtZy1pLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAyLWdvYmplY3QtaW50cm9zcGVjdGlvbi1kZXRlcm1pbmUtZy1pci1zY2FubmVyLWFuZC1nLWkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVkNDJkMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMi1nb2JqZWN0LWludHJvc3BlY3Rpb24tZGV0ZXJtaW5lLWctaXItc2Nhbm5lci1hbmQtZy1pLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gOTcyNjY3ZTBkNzg5YTY5NjlhNWQ3OTI0OTQwNGYzNTM5Zjg5MTgxMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCA0IEF1ZyAyMDE3IDE2OjE4OjQ3ICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBnb2JqZWN0LWludHJvc3BlY3Rpb246IGRldGVybWluZSBnLWlyLXNjYW5uZXIgYW5kCisgZy1pci1jb21waWxlciBwYXRocyBmcm9tIHBrZ2NvbmZpZworCitEbyBub3QgaGFyZGNvZGUgdGhlIG5hbWUgb2YgdGhvc2UgYmluYXJpZXM7IGdvYmplY3QtaW50cm9zcGVjdGlvbgorcHJvdmlkZXMgdGhlbSB2aWEgcGtnY29uZmlnLCBhbmQgdGhleSBjYW4gYmUgc2V0IHRvIHNvbWV0aGluZyBlbHNlCisoZm9yIGV4YW1wbGUgd2hlbiBjcm9zcy1jb21waWxpbmcpLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCistLS0KKyBtZXNvbmJ1aWxkL21vZHVsZXMvZ25vbWUucHkgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbWVzb25idWlsZC9tb2R1bGVzL2dub21lLnB5IGIvbWVzb25idWlsZC9tb2R1bGVzL2dub21lLnB5CitpbmRleCA0ZjdmZTMwLi45NjEwY2Y2IDEwMDY0NAorLS0tIGEvbWVzb25idWlsZC9tb2R1bGVzL2dub21lLnB5CisrKysgYi9tZXNvbmJ1aWxkL21vZHVsZXMvZ25vbWUucHkKK0BAIC0zOTAsOCArMzkwLDYgQEAgY2xhc3MgR25vbWVNb2R1bGUoRXh0ZW5zaW9uTW9kdWxlKToKKyAgICAgICAgICAgICByYWlzZSBNZXNvbkV4Y2VwdGlvbignR2lyIHRha2VzIG9uZSBhcmd1bWVudCcpCisgICAgICAgICBpZiBrd2FyZ3MuZ2V0KCdpbnN0YWxsX2RpcicpOgorICAgICAgICAgICAgIHJhaXNlIE1lc29uRXhjZXB0aW9uKCdpbnN0YWxsX2RpciBpcyBub3Qgc3VwcG9ydGVkIHdpdGggZ2VuZXJhdGVfZ2lyKCksIHNlZSAiaW5zdGFsbF9kaXJfZ2lyIiBhbmQgImluc3RhbGxfZGlyX3R5cGVsaWIiJykKKy0gICAgICAgIGdpc2Nhbm5lciA9IGZpbmRfcHJvZ3JhbSgnZy1pci1zY2FubmVyJywgJ0dpcicpCistICAgICAgICBnaWNvbXBpbGVyID0gZmluZF9wcm9ncmFtKCdnLWlyLWNvbXBpbGVyJywgJ0dpcicpCisgICAgICAgICBnaXJ0YXJnZXQgPSBhcmdzWzBdCisgICAgICAgICB3aGlsZSBoYXNhdHRyKGdpcnRhcmdldCwgJ2hlbGRfb2JqZWN0Jyk6CisgICAgICAgICAgICAgZ2lydGFyZ2V0ID0gZ2lydGFyZ2V0LmhlbGRfb2JqZWN0CitAQCAtNDAyLDYgKzQwMCw4IEBAIGNsYXNzIEdub21lTW9kdWxlKEV4dGVuc2lvbk1vZHVsZSk6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2lyX2RlcCA9IFBrZ0NvbmZpZ0RlcGVuZGVuY3koJ2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmVudmlyb25tZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnbmF0aXZlJzogVHJ1ZX0pCisrICAgICAgICAgICAgZ2lzY2FubmVyID0gb3MuZW52aXJvblsnUEtHX0NPTkZJR19TWVNST09UX0RJUiddICsgc2VsZi5naXJfZGVwLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2dfaXJfc2Nhbm5lcicsIHt9KQorKyAgICAgICAgICAgIGdpY29tcGlsZXIgPSBvcy5lbnZpcm9uWydQS0dfQ09ORklHX1NZU1JPT1RfRElSJ10gKyBzZWxmLmdpcl9kZXAuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnZ19pcl9jb21waWxlcicsIHt9KQorICAgICAgICAgICAgIHBrZ2FyZ3MgPSBzZWxmLmdpcl9kZXAuZ2V0X2NvbXBpbGVfYXJncygpCisgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgIHJhaXNlIE1lc29uRXhjZXB0aW9uKCdnb2JqZWN0LWludHJvc3BlY3Rpb24gZGVwZW5kZW5jeSB3YXMgbm90IGZvdW5kLCBnaXIgY2Fubm90IGJlIGdlbmVyYXRlZC4nKQorLS0gCisyLjE1LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAzLW5hdGl2ZV9iaW5kaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDMtbmF0aXZlX2JpbmRpci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjVlNmExCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAzLW5hdGl2ZV9iaW5kaXIucGF0Y2gKQEAgLTAsMCArMSwxMTQgQEAKK0Zyb20gZmZhNzJlYWM1NjU1OGFhNDE3MWRkNzBhYzFlOWMyN2EwNzMzOGZhMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAZ21haWwuY29tPgorRGF0ZTogV2VkLCAxNSBOb3YgMjAxNyAxNTowNTowMSArMDEwMAorU3ViamVjdDogW1BBVENIIDQvNF0gbmF0aXZlX2JpbmRpcgorCitTb21lIGxpYnJhcmllcywgbGlrZSBRVCwgaGF2ZSBwcmUtcHJvY2Vzc29ycyB0aGF0IGNvbnZlcnQgdGhlaXIgaW5wdXQKK2ZpbGVzIGludG8gc29tZXRoaW5nIHRoYXQgdGhlIGNyb3NzLWNvbXBpbGVyIGNhbiBwcm9jZXNzLiBXZSBmaW5kIHRoZQorcGF0aCBvZiB0aG9zZSBwcmUtcHJvY2Vzc29ycyB2aWEgcGtnLWNvbmZpZy1uYXRpdmUgaW5zdGVhZCBvZgorcGtnLWNvbmZpZy4KKworVGhpcyBwYXRoIGZvcmNlcyB0aGUgdXNlIG9mIHBrZy1jb25maWctbmF0aXZlIGZvciBob3N0X2JpbnMgYXJndW1lbnRzLgorCitUaGVyZSBhcmUgc29tZSBkaXNjdXNzaW9ucyB1cHN0cmVhbSB0byBtZXJnZSB0aGlzIHBhdGNoLCBidXQgSSBwcmVzb25hbHkgYmVsaWV2ZQordGhhdCBpcyBpcyBPRSBvbmx5LiBodHRwczovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi9pc3N1ZXMvMTg0OSNpc3N1ZWNvbW1lbnQtMzAzNzMwMzIzCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQGdtYWlsLmNvbT4KKworLS0tCisgbWVzb25idWlsZC9kZXBlbmRlbmNpZXMvYmFzZS5weSB8IDE2ICsrKysrKysrKystLS0tLS0KKyBtZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy91aS5weSAgIHwgIDYgKysrLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbWVzb25idWlsZC9kZXBlbmRlbmNpZXMvYmFzZS5weSBiL21lc29uYnVpbGQvZGVwZW5kZW5jaWVzL2Jhc2UucHkKK2luZGV4IGJmNzliYzUuLmM5ZmQwOGMgMTAwNjQ0CistLS0gYS9tZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy9iYXNlLnB5CisrKysgYi9tZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy9iYXNlLnB5CitAQCAtMTMxLDcgKzEzMSw3IEBAIGNsYXNzIERlcGVuZGVuY3k6CisgICAgIGRlZiBuZWVkX3RocmVhZHMoc2VsZik6CisgICAgICAgICByZXR1cm4gRmFsc2UKKyAKKy0gICAgZGVmIGdldF9wa2djb25maWdfdmFyaWFibGUoc2VsZiwgdmFyaWFibGVfbmFtZSwga3dhcmdzKToKKysgICAgZGVmIGdldF9wa2djb25maWdfdmFyaWFibGUoc2VsZiwgdmFyaWFibGVfbmFtZSwga3dhcmdzLCB1c2VfbmF0aXZlPUZhbHNlKToKKyAgICAgICAgIHJhaXNlIERlcGVuZGVuY3lFeGNlcHRpb24oJ3shcn0gaXMgbm90IGEgcGtnY29uZmlnIGRlcGVuZGVuY3knLmZvcm1hdChzZWxmLm5hbWUpKQorIAorICAgICBkZWYgZ2V0X2NvbmZpZ3Rvb2xfdmFyaWFibGUoc2VsZiwgdmFyaWFibGVfbmFtZSk6CitAQCAtMTUwLDcgKzE1MCw3IEBAIGNsYXNzIEludGVybmFsRGVwZW5kZW5jeShEZXBlbmRlbmN5KToKKyAgICAgICAgIHNlbGYuc291cmNlcyA9IHNvdXJjZXMKKyAgICAgICAgIHNlbGYuZXh0X2RlcHMgPSBleHRfZGVwcworIAorLSAgICBkZWYgZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZShzZWxmLCB2YXJpYWJsZV9uYW1lLCBrd2FyZ3MpOgorKyAgICBkZWYgZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZShzZWxmLCB2YXJpYWJsZV9uYW1lLCBrd2FyZ3MsIHVzZV9uYXRpdmU9RmFsc2UpOgorICAgICAgICAgcmFpc2UgRGVwZW5kZW5jeUV4Y2VwdGlvbignTWV0aG9kICJnZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCkiIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZm9yIGFuIGludGVybmFsIGRlcGVuZGVuY3knKQorIAorQEAgLTQyNSwxMCArNDI1LDE0IEBAIGNsYXNzIFBrZ0NvbmZpZ0RlcGVuZGVuY3koRXh0ZXJuYWxEZXBlbmRlbmN5KToKKyAgICAgICAgIHJldHVybiBzLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5uYW1lLCBzZWxmLmlzX2ZvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyc2lvbl9yZXFzKQorIAorLSAgICBkZWYgX2NhbGxfcGtnYmluKHNlbGYsIGFyZ3MsIGVudj1Ob25lKToKKysgICAgZGVmIF9jYWxsX3BrZ2JpbihzZWxmLCBhcmdzLCBlbnY9Tm9uZSwgdXNlX25hdGl2ZT1GYWxzZSk6CisgICAgICAgICBpZiBub3QgZW52OgorICAgICAgICAgICAgIGVudiA9IG9zLmVudmlyb24KKy0gICAgICAgIHAsIG91dCA9IFBvcGVuX3NhZmUoW3NlbGYucGtnYmluXSArIGFyZ3MsIGVudj1lbnYpWzA6Ml0KKysgICAgICAgIGlmIHVzZV9uYXRpdmU6CisrICAgICAgICAgICAgcGtnYmluID0gW3NlbGYucGtnYmluICsgIi1uYXRpdmUiXQorKyAgICAgICAgZWxzZToKKysgICAgICAgICAgICBwa2diaW4gPSBbc2VsZi5wa2diaW5dCisrICAgICAgICBwLCBvdXQgPSBQb3Blbl9zYWZlKHBrZ2JpbiArIGFyZ3MsIGVudj1lbnYpWzA6Ml0KKyAgICAgICAgIHJldHVybiBwLnJldHVybmNvZGUsIG91dC5zdHJpcCgpCisgCisgICAgIGRlZiBfY29udmVydF9taW5nd19wYXRocyhzZWxmLCBhcmdzKToKK0BAIC01MjIsNyArNTI2LDcgQEAgY2xhc3MgUGtnQ29uZmlnRGVwZW5kZW5jeShFeHRlcm5hbERlcGVuZGVuY3kpOgorICAgICAgICAgICAgICMgbGlua2VycyBzdWNoIGFzIE1TVkMsIHNvIHByZXBlbmQgdGhlbS4KKyAgICAgICAgICAgICBzZWxmLmxpbmtfYXJncyA9IFsnLUwnICsgbHAgZm9yIGxwIGluIGxpYnBhdGhzXSArIHNlbGYubGlua19hcmdzCisgCistICAgIGRlZiBnZXRfcGtnY29uZmlnX3ZhcmlhYmxlKHNlbGYsIHZhcmlhYmxlX25hbWUsIGt3YXJncyk6CisrICAgIGRlZiBnZXRfcGtnY29uZmlnX3ZhcmlhYmxlKHNlbGYsIHZhcmlhYmxlX25hbWUsIGt3YXJncywgdXNlX25hdGl2ZT1GYWxzZSk6CisgICAgICAgICBvcHRpb25zID0gWyctLXZhcmlhYmxlPScgKyB2YXJpYWJsZV9uYW1lLCBzZWxmLm5hbWVdCisgCisgICAgICAgICBpZiAnZGVmaW5lX3ZhcmlhYmxlJyBpbiBrd2FyZ3M6CitAQCAtNTM1LDcgKzUzOSw3IEBAIGNsYXNzIFBrZ0NvbmZpZ0RlcGVuZGVuY3koRXh0ZXJuYWxEZXBlbmRlbmN5KToKKyAKKyAgICAgICAgICAgICBvcHRpb25zID0gWyctLWRlZmluZS12YXJpYWJsZT0nICsgJz0nLmpvaW4oZGVmaW5pdGlvbildICsgb3B0aW9ucworIAorLSAgICAgICAgcmV0LCBvdXQgPSBzZWxmLl9jYWxsX3BrZ2JpbihvcHRpb25zKQorKyAgICAgICAgcmV0LCBvdXQgPSBzZWxmLl9jYWxsX3BrZ2JpbihvcHRpb25zLCB1c2VfbmF0aXZlPXVzZV9uYXRpdmUpCisgICAgICAgICB2YXJpYWJsZSA9ICcnCisgICAgICAgICBpZiByZXQgIT0gMDoKKyAgICAgICAgICAgICBpZiBzZWxmLnJlcXVpcmVkOgorZGlmZiAtLWdpdCBhL21lc29uYnVpbGQvZGVwZW5kZW5jaWVzL3VpLnB5IGIvbWVzb25idWlsZC9kZXBlbmRlbmNpZXMvdWkucHkKK2luZGV4IDFkYjUxOGMuLjRlZDFkMDQgMTAwNjQ0CistLS0gYS9tZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy91aS5weQorKysrIGIvbWVzb25idWlsZC9kZXBlbmRlbmNpZXMvdWkucHkKK0BAIC0yMzksNyArMjM5LDcgQEAgY2xhc3MgUXRCYXNlRGVwZW5kZW5jeShFeHRlcm5hbERlcGVuZGVuY3kpOgorICAgICAgICAgc2VsZi5iaW5kaXIgPSBzZWxmLmdldF9wa2djb25maWdfaG9zdF9iaW5zKGNvcmUpCisgICAgICAgICBpZiBub3Qgc2VsZi5iaW5kaXI6CisgICAgICAgICAgICAgIyBJZiBleGVjX3ByZWZpeCBpcyBub3QgZGVmaW5lZCwgdGhlIHBrZy1jb25maWcgZmlsZSBpcyBicm9rZW4KKy0gICAgICAgICAgICBwcmVmaXggPSBjb3JlLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2V4ZWNfcHJlZml4Jywge30pCisrICAgICAgICAgICAgcHJlZml4ID0gY29yZS5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdleGVjX3ByZWZpeCcsIHt9LCB1c2VfbmF0aXZlPVRydWUpCisgICAgICAgICAgICAgaWYgcHJlZml4OgorICAgICAgICAgICAgICAgICBzZWxmLmJpbmRpciA9IG9zLnBhdGguam9pbihwcmVmaXgsICdiaW4nKQorIAorQEAgLTM1OSw3ICszNTksNyBAQCBjbGFzcyBRdDREZXBlbmRlbmN5KFF0QmFzZURlcGVuZGVuY3kpOgorICAgICAgICAgYXBwbGljYXRpb25zID0gWydtb2MnLCAndWljJywgJ3JjYycsICdsdXBkYXRlJywgJ2xyZWxlYXNlJ10KKyAgICAgICAgIGZvciBhcHBsaWNhdGlvbiBpbiBhcHBsaWNhdGlvbnM6CisgICAgICAgICAgICAgdHJ5OgorLSAgICAgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5kaXJuYW1lKGNvcmUuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnJXNfbG9jYXRpb24nICUgYXBwbGljYXRpb24sIHt9KSkKKysgICAgICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguZGlybmFtZShjb3JlLmdldF9wa2djb25maWdfdmFyaWFibGUoJyVzX2xvY2F0aW9uJyAlIGFwcGxpY2F0aW9uLCB7fSwgdXNlX25hdGl2ZT1UcnVlKSkKKyAgICAgICAgICAgICBleGNlcHQgTWVzb25FeGNlcHRpb246CisgICAgICAgICAgICAgICAgIHBhc3MKKyAKK0BAIC0zNjksNyArMzY5LDcgQEAgY2xhc3MgUXQ1RGVwZW5kZW5jeShRdEJhc2VEZXBlbmRlbmN5KToKKyAgICAgICAgIFF0QmFzZURlcGVuZGVuY3kuX19pbml0X18oc2VsZiwgJ3F0NScsIGVudiwga3dhcmdzKQorIAorICAgICBkZWYgZ2V0X3BrZ2NvbmZpZ19ob3N0X2JpbnMoc2VsZiwgY29yZSk6CistICAgICAgICByZXR1cm4gY29yZS5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdob3N0X2JpbnMnLCB7fSkKKysgICAgICAgIHJldHVybiBjb3JlLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2hvc3RfYmlucycsIHt9LCB1c2VfbmF0aXZlPVRydWUpCisgCisgCisgIyBUaGVyZSBhcmUgdGhyZWUgZGlmZmVyZW50IHdheXMgb2YgZGVwZW5kaW5nIG9uIFNETDI6CistLSAKKzIuMTUuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uXzAuNDQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb25fMC40NC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhODFkYWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uXzAuNDQuMS5iYgpAQCAtMCwwICsxLDIxIEBACitIT01FUEFHRSA9ICJodHRwOi8vbWVzb25idWlsZC5jb20iCitTVU1NQVJZID0gIkEgaGlnaCBwZXJmb3JtYW5jZSBidWlsZCBzeXN0ZW0iCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uL3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWd0a2RvYy1maXgtaXNzdWVzLXRoYXQtYXJpc2Utd2hlbi1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1nb2JqZWN0LWludHJvc3BlY3Rpb24tZGV0ZXJtaW5lLWctaXItc2Nhbm5lci1hbmQtZy1pLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTGlua2VyLXJ1bGVzLW1vdmUtY3Jvc3NfYXJncy1pbi1mcm9udC1vZi1vdXRwdXRfYXJncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLW5hdGl2ZV9iaW5kaXIucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiODJiMTE5OGJmNzE0YjVhNGRhODRiZmU4Mzc2Yzc5Y2MiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmVhMWE3MjE1NzRhZGIyMzE2MGI2NDgxMTkxYmNjMTE3M2YzNzRlMDJiMGZmM2JiMGFlODVkOTg4ZDk3ZTRmYSIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi9yZWxlYXNlcyIKKworaW5oZXJpdCBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSA9ICJuaW5qYSBweXRob24zLWNvcmUgcHl0aG9uMy1tb2R1bGVzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtlbGZpbWFnZS9ta2VsZmltYWdlL2NvbnZlcnQuYmluLmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rZWxmaW1hZ2UvbWtlbGZpbWFnZS9jb252ZXJ0LmJpbi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjZmYWE4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtlbGZpbWFnZS9ta2VsZmltYWdlL2NvbnZlcnQuYmluLmMKKysrIC9kZXYvbnVsbApAQCAtMSwzNDggKzAsMCBAQAotMHhmYywgMHhmYSwgMHhhMywgMHg5YywgMHgwMiwgMHgwMSwgMHgwMCwgMHg4OSwgMHgxZCwgMHhhMCwgMHgwMiwgMHgwMSwgMHgwMCwgMHg4MywgMHhmYywgMHgwMCwKLTB4NzQsIDB4MDksIDB4OGIsIDB4NDQsIDB4MjQsIDB4MDQsIDB4YTMsIDB4YTQsIDB4MDIsIDB4MDEsIDB4MDAsIDB4OGIsIDB4MjUsIDB4ODAsIDB4MTQsIDB4MDEsCi0weDAwLCAweDZhLCAweDAwLCAweDlkLCAweDMxLCAweGMwLCAweGJmLCAweGI4LCAweDE1LCAweDAxLCAweDAwLCAweGI5LCAweDQ0LCAweDU4LCAweDAxLCAweDAwLAotMHgyOSwgMHhmOSwgMHhmYywgMHhmMywgMHhhYSwgMHhiZSwgMHhiYSwgMHgwMiwgMHgwMSwgMHgwMCwgMHhiZiwgMHgwMCwgMHgxMCwgMHgwMiwgMHgwMCwgMHhiOSwKLTB4NzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4YTQsIDB4MGYsIDB4MDEsIDB4MTUsIDB4YjQsIDB4MDIsIDB4MDEsIDB4MDAsIDB4MGYsIDB4MDEsIDB4MWQsCi0weGFlLCAweDAyLCAweDAxLCAweDAwLCAweGI4LCAweDE4LCAweDAwLCAweDAwLCAweDAwLCAweDhlLCAweGQ4LCAweDhlLCAweGMwLCAweDhlLCAweGUwLCAweDhlLAotMHhlOCwgMHg4ZSwgMHhkMCwgMHg2OCwgMHg5MCwgMHgxNCwgMHgwMSwgMHgwMCwgMHhmZiwgMHgzNSwgMHhhNCwgMHgwMiwgMHgwMSwgMHgwMCwgMHhmZiwgMHgzNSwKLTB4YTAsIDB4MDIsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4MzUsIDB4OWMsIDB4MDIsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4ZTMsIDB4MDgsIDB4MDAsIDB4MDAsIDB4ODksCi0weGM2LCAweDgzLCAweGM0LCAweDEwLCAweDZhLCAweDAwLCAweDlkLCAweDMxLCAweGRiLCAweGExLCAweGFjLCAweDE0LCAweDAxLCAweDAwLCAweDgzLCAweGY4LAotMHgwMSwgMHg3NCwgMHgxMywgMHgzMSwgMHhjMCwgMHgzMSwgMHhjOSwgMHgzMSwgMHhkMiwgMHgzMSwgMHhmZiwgMHgzMSwgMHhlZCwgMHg2YSwgMHgxMCwgMHhhMSwKLTB4YTgsIDB4MTQsIDB4MDEsIDB4MDAsIDB4NTAsIDB4Y2IsIDB4ODksIDB4ZjAsIDB4YmUsIDB4MmEsIDB4MDMsIDB4MDEsIDB4MDAsIDB4YmYsIDB4MDAsIDB4MjAsCi0weDAyLCAweDAwLCAweGI5LCAweDIwLCAweDAwLCAweDAwLCAweDAwLCAweGYzLCAweGE0LCAweDg5LCAweGM2LCAweDBmLCAweDAxLCAweDE1LCAweDJhLCAweDAzLAotMHgwMSwgMHgwMCwgMHgzMSwgMHhjMCwgMHgwZiwgMHhiYSwgMHhlOCwgMHgwNSwgMHgwZiwgMHgyMiwgMHhlMCwgMHhiZiwgMHgwMCwgMHgzMCwgMHgwMiwgMHgwMCwKLTB4MzEsIDB4YzAsIDB4YjksIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4YWIsIDB4YmYsIDB4MDAsIDB4MzAsIDB4MDIsIDB4MDAsIDB4OGQsIDB4ODcsCi0weDA3LCAweDEwLCAweDAwLCAweDAwLCAweDg5LCAweDA3LCAweGJmLCAweDAwLCAweDQwLCAweDAyLCAweDAwLCAweDhkLCAweDg3LCAweDA3LCAweDEwLCAweDAwLAotMHgwMCwgMHhiOSwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OSwgMHgwNywgMHgwNSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHg4MywgMHhjNywgMHgwOCwKLTB4NDksIDB4NzUsIDB4ZjMsIDB4YmYsIDB4MDAsIDB4NTAsIDB4MDIsIDB4MDAsIDB4YjgsIDB4ODMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4YjksIDB4MDAsIDB4MDgsCi0weDAwLCAweDAwLCAweDg5LCAweDA3LCAweDA1LCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDgzLCAweGM3LCAweDA4LCAweDQ5LCAweDc1LCAweGYzLCAweGI4LAotMHgwMCwgMHgzMCwgMHgwMiwgMHgwMCwgMHgwZiwgMHgyMiwgMHhkOCwgMHhiOSwgMHg4MCwgMHgwMCwgMHgwMCwgMHhjMCwgMHgwZiwgMHgzMiwgMHgwZiwgMHhiYSwKLTB4ZTgsIDB4MDgsIDB4MGYsIDB4MzAsIDB4NmEsIDB4MTAsIDB4YTEsIDB4YTgsIDB4MTQsIDB4MDEsIDB4MDAsIDB4NTAsIDB4MzEsIDB4YzAsIDB4MGYsIDB4YmEsCi0weGU4LCAweDFmLCAweDBmLCAweGJhLCAweGU4LCAweDAwLCAweDBmLCAweDIyLCAweGMwLCAweGNiLCAweDU1LCAweDg5LCAweGU1LCAweDUzLCAweDU2LCAweDU3LAotMHg4YiwgMHg3ZCwgMHgwOCwgMHg4MSwgMHhlZiwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHg4YiwgMHg3NSwgMHgwYywgMHg1NiwgMHhlOCwgMHhmYywgMHgwMCwKLTB4MDAsIDB4MDAsIDB4NjYsIDB4MzEsIDB4ZGIsIDB4NjYsIDB4YjgsIDB4MjAsIDB4ZTgsIDB4MDAsIDB4MDAsIDB4NjYsIDB4YmEsIDB4NTAsIDB4NDEsIDB4NGQsCi0weDUzLCAweDY2LCAweGI5LCAweDE0LCAweDAwLCAweDAwLCAweDAwLCAweGNkLCAweDE1LCAweDcyLCAweDE4LCAweDY2LCAweDNkLCAweDUwLCAweDQxLCAweDRkLAotMHg1MywgMHg3NSwgMHgxMCwgMHg2NiwgMHg0ZSwgMHg2NiwgMHg4NSwgMHhmNiwgMHg3NCwgMHgwOSwgMHg4MywgMHhjNywgMHgxNCwgMHg2NiwgMHg4MywgMHhmYiwKLTB4MDAsIDB4NzUsIDB4ZDIsIDB4NjYsIDB4ZTgsIDB4ODIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTgsIDB4MjksIDB4ZjAsIDB4NWYsIDB4NWUsIDB4NWIsIDB4ODksCi0weGVjLCAweDVkLCAweGMzLCAweDUzLCAweDU2LCAweDU3LCAweGU4LCAweGIzLCAweDAwLCAweDAwLCAweDAwLCAweGY5LCAweDMxLCAweGM5LCAweDMxLCAweGQyLAotMHhiOCwgMHgwMSwgMHhlOCwgMHhjZCwgMHgxNSwgMHg3MiwgMHgyOCwgMHg4MywgMHhmOSwgMHgwMCwgMHg3NSwgMHgwOSwgMHg4MywgMHhmYSwgMHgwMCwgMHg3NSwKLTB4MDQsIDB4ODksIDB4YzEsIDB4ODksIDB4ZGEsIDB4NjYsIDB4ODEsIDB4ZTIsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4NjYsIDB4YzEsIDB4ZTIsIDB4MDYsCi0weDY2LCAweDg5LCAweGQwLCAweDY2LCAweDgxLCAweGUxLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDY2LCAweDAxLCAweGM4LCAweGViLCAweDAzLCAweDY2LAotMHgzMSwgMHhjMCwgMHg2NiwgMHhlOCwgMHgzMywgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwgMHg1ZSwgMHg1YiwgMHhjMywgMHg1MywgMHg1NiwgMHg1NywgMHhlOCwKLTB4NmEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjQsIDB4ODgsIDB4Y2QsIDB4MTUsIDB4NjYsIDB4MjUsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4NjYsIDB4ZTgsCi0weDE3LCAweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDVlLCAweDViLCAweGMzLCAweGU4LCAweDUxLCAweDAwLCAweDAwLCAweDAwLCAweGNkLCAweDEyLCAweDg5LAotMHhjMSwgMHg2NiwgMHhlOCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NiwgMHg4OSwgMHhjOCwgMHhjMywgMHhmYSwgMHgyZSwgMHg2NywgMHgwZiwgMHgwMSwKLTB4MTUsIDB4YjQsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MGYsIDB4MjAsIDB4YzAsIDB4NjYsIDB4ODMsIDB4YzgsIDB4MDEsIDB4MGYsIDB4MjIsIDB4YzAsIDB4NjYsCi0weGVhLCAweDM3LCAweDAyLCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweGI4LCAweDE4LCAweDAwLCAweDAwLCAweDAwLCAweDhlLCAweGQ4LCAweDhlLCAweGMwLAotMHg4ZSwgMHhkMCwgMHg4MSwgMHhjNCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgzMSwgMHhjMCwgMHg4ZSwgMHhlMCwgMHg4ZSwgMHhlOCwgMHg1OCwgMHgwNSwKLTB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4NTAsIDB4MmUsIDB4MGYsIDB4MDEsIDB4MWQsIDB4YWUsIDB4MDIsIDB4MDEsIDB4MDAsIDB4YzMsIDB4NTgsIDB4MmQsCi0weDAwLCAweDAwLCAweDAxLCAweDAwLCAweDUwLCAweDgxLCAweGVjLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweGVhLCAweDcyLCAweDAyLCAweDAwLCAweDAwLAotMHgwOCwgMHgwMCwgMHgwZiwgMHgyMCwgMHhjMCwgMHg2NiwgMHg4MywgMHhlMCwgMHhmZSwgMHgwZiwgMHgyMiwgMHhjMCwgMHg2NiwgMHhlYSwgMHg4NCwgMHgwMiwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4OGMsIDB4YzgsIDB4OGUsIDB4ZDgsIDB4OGUsIDB4YzAsIDB4OGUsIDB4ZDAsIDB4OGUsIDB4ZTAsIDB4OGUsIDB4ZTgsCi0weDJlLCAweDY3LCAweDBmLCAweDAxLCAweDFkLCAweGE4LCAweDAyLCAweDAwLCAweDAwLCAweGZiLCAweDY2LCAweGMzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NmYsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAxLCAweDliLCAweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDlhLAotMHhjZiwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5MiwgMHhjZiwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMSwgMHg5MywKLTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OWEsCi0weGNmLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDkyLCAweGNmLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDIwLCAweDAyLCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YSwKLTB4YWYsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTIsIDB4Y2YsIDB4MDAsIDB4NTUsIDB4ODksIDB4YzEsIDB4ODksIDB4ZTUsIDB4YmEsCi0weGZkLCAweDAzLCAweDAwLCAweDAwLCAweGVjLCAweGE4LCAweDIwLCAweDc0LCAweGZiLCAweGJhLCAweGY4LCAweDAzLCAweDAwLCAweDAwLCAweDg4LCAweGM4LAotMHhlZSwgMHhiYSwgMHhmZCwgMHgwMywgMHgwMCwgMHgwMCwgMHhlYywgMHhhOCwgMHg0MCwgMHg3NCwgMHhmYiwgMHg1ZCwgMHhjMywgMHg1NSwgMHg4MywgMHhmOCwKLTB4MGEsIDB4ODksIDB4ZTUsIDB4NTMsIDB4ODksIDB4YzMsIDB4NzUsIDB4MGEsIDB4YjgsIDB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTgsIDB4YzgsIDB4ZmYsCi0weGZmLCAweGZmLCAweDg5LCAweGQ4LCAweDViLCAweDVkLCAweGViLCAweGMyLCAweDU1LCAweDg5LCAweGU1LCAweDU3LCAweDU2LCAweDUzLCAweDgzLCAweGVjLAotMHg0NCwgMHg4ZCwgMHg1ZCwgMHgwYywgMHg4YiwgMHg3ZCwgMHgwOCwgMHgwZiwgMHhiZSwgMHgwNywgMHg4NCwgMHhjMCwgMHgwZiwgMHg4NCwgMHg2OCwgMHgwMSwKLTB4MDAsIDB4MDAsIDB4M2MsIDB4MjUsIDB4NzQsIDB4MGQsIDB4ZTgsIDB4YzIsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ODksIDB4N2QsIDB4YmMsIDB4ZTksIDB4NGUsCi0weDAxLCAweDAwLCAweDAwLCAweDhkLCAweDQ3LCAweDAxLCAweDg5LCAweDQ1LCAweGJjLCAweDhhLCAweDQ3LCAweDAxLCAweDNjLCAweDczLCAweDc1LCAweDFhLAotMHg4OSwgMHhkOCwgMHg4MywgMHhjMywgMHgwNCwgMHg4YiwgMHgzMCwgMHgwZiwgMHhiZSwgMHgwNiwgMHg4NCwgMHhjMCwgMHgwZiwgMHg4NCwgMHgyZiwgMHgwMSwKLTB4MDAsIDB4MDAsIDB4ZTgsIDB4OTYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4NDYsIDB4ZWIsIDB4ZWQsIDB4M2MsIDB4NGMsIDB4NzUsIDB4MGQsIDB4OGQsIDB4NDcsCi0weDAyLCAweGJlLCAweDNjLCAweDAwLCAweDAwLCAweDAwLCAweDg5LCAweDQ1LCAweGJjLCAweGViLCAweDM4LCAweDNjLCAweDZjLCAweDc1LCAweDBkLCAweDhkLAotMHg0NywgMHgwMiwgMHhiZSwgMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OSwgMHg0NSwgMHhiYywgMHhlYiwgMHgyNywgMHhiZSwgMHgxYywgMHgwMCwgMHgwMCwKLTB4MDAsIDB4M2MsIDB4NjgsIDB4NzUsIDB4MWUsIDB4ODAsIDB4N2YsIDB4MDIsIDB4NjgsIDB4NzQsIDB4MGQsIDB4OGQsIDB4NDcsIDB4MDIsIDB4YmUsIDB4MGMsCi0weDAwLCAweDAwLCAweDAwLCAweDg5LCAweDQ1LCAweGJjLCAweGViLCAweDBiLCAweDhkLCAweDQ3LCAweDAzLCAweGJlLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAotMHg4OSwgMHg0NSwgMHhiYywgMHg4YiwgMHg0NSwgMHhiYywgMHg4YSwgMHgwMCwgMHg4OCwgMHhjMiwgMHg4MywgMHhjYSwgMHgyMCwgMHg4MCwgMHhmYSwgMHg3OCwKLTB4NzUsIDB4NWIsIDB4OGIsIDB4MTMsIDB4ODMsIDB4ZmUsIDB4MWMsIDB4N2UsIDB4MGUsIDB4OGIsIDB4NGIsIDB4MDQsIDB4ODksIDB4NTUsIDB4YjAsIDB4ODksCi0weDRkLCAweGI0LCAweDgzLCAweGMzLCAweDA4LCAweGViLCAweDBiLCAweDMxLCAweGM5LCAweDg5LCAweDU1LCAweGIwLCAweDg5LCAweDRkLCAweGI0LCAweDgzLAotMHhjMywgMHgwNCwgMHg4MywgMHhlMCwgMHgyMCwgMHg4ZCwgMHg3ZCwgMHhjOCwgMHg4OCwgMHg0NSwgMHhiYiwgMHg4OSwgMHhmMSwgMHg4YiwgMHg1NSwgMHhiNCwKLTB4OGIsIDB4NDUsIDB4YjAsIDB4MGYsIDB4YWQsIDB4ZDAsIDB4ZDMsIDB4ZWEsIDB4ZjYsIDB4YzEsIDB4MjAsIDB4NzQsIDB4MDIsIDB4ODksIDB4ZDAsIDB4ODMsCi0weGUwLCAweDBmLCAweDhhLCAweDU1LCAweGJiLCAweDQ3LCAweDBhLCAweDkwLCAweDE0LCAweDEwLCAweDAxLCAweDAwLCAweDg4LCAweDU3LCAweGZmLCAweDgzLAotMHhlOSwgMHgwNCwgMHg3OSwgMHhkOSwgMHhjMSwgMHhlZSwgMHgwMiwgMHg4ZCwgMHg3NCwgMHgzNSwgMHhjOSwgMHhlYiwgMHg2MiwgMHgzYywgMHg2NCwgMHg3NSwKLTB4NGEsIDB4OGIsIDB4MDMsIDB4ODMsIDB4ZmUsIDB4MWMsIDB4N2UsIDB4MDUsIDB4ODMsIDB4YzMsIDB4MDgsIDB4ZWIsIDB4MDMsIDB4ODMsIDB4YzMsIDB4MDQsCi0weDhkLCAweDRkLCAweGM4LCAweDg1LCAweGMwLCAweDc5LCAweDA5LCAweGM2LCAweDQ1LCAweGM4LCAweDJkLCAweDhkLCAweDRkLCAweGM5LCAweGY3LCAweGQ4LAotMHg4OSwgMHhjZSwgMHhiZiwgMHgwYSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5OSwgMHg0NiwgMHhmNywgMHhmZiwgMHg4MywgMHhjMiwgMHgzMCwgMHg4NSwgMHhjMCwKLTB4ODgsIDB4NTYsIDB4ZmYsIDB4NzUsIDB4ZjIsIDB4ODksIDB4ZjAsIDB4NDgsIDB4MzksIDB4YzEsIDB4NzMsIDB4MjMsIDB4MGYsIDB4YjYsIDB4MzgsIDB4OGEsCi0weDExLCAweDQxLCAweDg4LCAweDEwLCAweDg5LCAweGZhLCAweDg4LCAweDUxLCAweGZmLCAweGViLCAweGVjLCAweDNjLCAweDYzLCAweDc1LCAweDBhLCAweDhiLAotMHgwMywgMHg4MywgMHhjMywgMHgwNCwgMHg4OCwgMHg0NSwgMHhjOCwgMHhlYiwgMHgwMywgMHg4OCwgMHg0NSwgMHhjOCwgMHg4ZCwgMHg3NSwgMHhjOSwgMHg4ZCwKLTB4N2QsIDB4YzgsIDB4MzksIDB4ZjcsIDB4NzMsIDB4MGIsIDB4MGYsIDB4YmUsIDB4MDcsIDB4NDcsIDB4ZTgsIDB4NmUsIDB4ZmUsIDB4ZmYsIDB4ZmYsIDB4ZWIsCi0weGYxLCAweDhiLCAweDdkLCAweGJjLCAweDQ3LCAweGU5LCAweDhkLCAweGZlLCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDQ0LCAweDViLCAweDVlLCAweDVmLAotMHg1ZCwgMHhjMywgMHg1NSwgMHgzMSwgMHhjOSwgMHg4OSwgMHhlNSwgMHg1NiwgMHg1MywgMHgzMSwgMHhkYiwgMHg4MywgMHhlYywgMHgxMCwgMHgzOSwgMHhkMywKLTB4NzQsIDB4MjMsIDB4MGYsIDB4YjYsIDB4MzQsIDB4MTgsIDB4ZjYsIDB4YzMsIDB4MDEsIDB4NzQsIDB4MDMsIDB4YzEsIDB4ZTYsIDB4MDgsIDB4MDEsIDB4ZjEsCi0weDgxLCAweGY5LCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDc2LCAweDBhLCAweDg5LCAweGNlLCAweGMxLCAweGVlLCAweDEwLCAweDAxLCAweGYxLCAweDBmLAotMHhiNywgMHhjOSwgMHg0MywgMHhlYiwgMHhkOSwgMHg4OCwgMHg0ZCwgMHhmNiwgMHhjMSwgMHhlOSwgMHgwOCwgMHg4OCwgMHg0ZCwgMHhmNywgMHgwZiwgMHhiNywKLTB4NDUsIDB4ZjYsIDB4ODMsIDB4YzQsIDB4MTAsIDB4NWIsIDB4NWUsIDB4NWQsIDB4YzMsIDB4NTUsIDB4ODksIDB4ZTUsIDB4NTcsIDB4NTYsIDB4NTMsIDB4ODksCi0weGMzLCAweDUxLCAweDg5LCAweDU1LCAweGYwLCAweDNiLCAweDVkLCAweGYwLCAweDczLCAweDVmLCAweDgxLCAweDNiLCAweDRjLCAweDQyLCAweDQ5LCAweDRmLAotMHg3NCwgMHgwNSwgMHg4MywgMHhjMywgMHgxMCwgMHhlYiwgMHhlZSwgMHg4MywgMHg3YiwgMHgwNCwgMHgxOCwgMHg3NSwgMHhmNSwgMHhiYSwgMHgxOCwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4ODksIDB4ZDgsIDB4ZTgsIDB4ODksIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZjcsIDB4ZDAsIDB4NjYsIDB4ODUsIDB4YzAsIDB4NzUsIDB4ZTIsCi0weDhkLCAweDczLCAweDE4LCAweDhiLCAweDUzLCAweDBjLCAweDg5LCAweGYwLCAweGU4LCAweDc1LCAweGZmLCAweGZmLCAweGZmLCAweGY3LCAweGQwLCAweDBmLAotMHhiNywgMHhjMCwgMHgzOSwgMHg0MywgMHgxMCwgMHg3NSwgMHhjYiwgMHg4YiwgMHg0YiwgMHgwYywgMHgzMSwgMHhjMCwgMHgwMSwgMHhmMSwgMHgzOSwgMHhmMSwKLTB4NzYsIDB4MTAsIDB4ODksIDB4Y2YsIDB4OGIsIDB4NTYsIDB4MDQsIDB4MjksIDB4ZjcsIDB4MzksIDB4ZmEsIDB4NzcsIDB4MDUsIDB4NDAsIDB4MDEsIDB4ZDYsCi0weGViLCAweGVjLCAweDM5LCAweDQzLCAweDE0LCAweDc1LCAweGFiLCAweGViLCAweDAyLCAweDMxLCAweGRiLCAweDVhLCAweDg5LCAweGQ4LCAweDViLCAweDVlLAotMHg1ZiwgMHg1ZCwgMHhjMywgMHg1NSwgMHhiYSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHg4OSwgMHhlNSwgMHg1NywgMHg1NiwgMHg1MywgMHg4OSwgMHhjMywKLTB4MzEsIDB4YzAsIDB4NTEsIDB4ZTgsIDB4NzEsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ODUsIDB4YzAsIDB4NzUsIDB4MTcsIDB4YmEsIDB4MDAsIDB4MDAsIDB4MTAsCi0weDAwLCAweGI4LCAweDAwLCAweDAwLCAweDBmLCAweDAwLCAweGU4LCAweDVlLCAweGZmLCAweGZmLCAweGZmLCAweDg1LCAweGMwLCAweDc1LCAweDA0LCAweDMxLAotMHhjMCwgMHhlYiwgMHgyZiwgMHg4YiwgMHg1MCwgMHgwNCwgMHgwMSwgMHhjMiwgMHg4MywgMHgzYSwgMHgxMSwgMHg3NSwgMHgxNiwgMHg4YiwgMHg3MiwgMHgwOCwKLTB4ODksIDB4ZjIsIDB4ODksIDB4ZjAsIDB4ODEsIDB4YzIsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4ZTgsIDB4M2EsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ODUsCi0weGMwLCAweDc0LCAweGRjLCAweDg5LCAweDQzLCAweDI4LCAweGM3LCAweDQzLCAweDI0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGI4LCAweDAxLCAweDAwLAotMHgwMCwgMHgwMCwgMHg1YSwgMHg1YiwgMHg1ZSwgMHg1ZiwgMHg1ZCwgMHhjMywgMHg1NSwgMHg4OSwgMHhlNSwgMHg1NywgMHg1NiwgMHg1MywgMHg4MywgMHhlYywKLTB4MTQsIDB4ODksIDB4NTUsIDB4ZTgsIDB4OGIsIDB4NzUsIDB4MGMsIDB4OGIsIDB4NWQsIDB4MDgsIDB4ODksIDB4NzUsIDB4ZTQsIDB4ODksIDB4NGQsIDB4ZWMsCi0weDBmLCAweGI2LCAweGIwLCAweGU4LCAweDAxLCAweDAwLCAweDAwLCAweDg5LCAweDVkLCAweGUwLCAweDhiLCAweDdkLCAweDEwLCAweDgzLCAweGZlLCAweDFmLAotMHg3ZiwgMHgzMiwgMHg4OSwgMHhmMywgMHg2YiwgMHhmNiwgMHgxNCwgMHgwMSwgMHhjNiwgMHg0MywgMHg4OSwgMHg5NiwgMHhkMCwgMHgwMiwgMHgwMCwgMHgwMCwKLTB4ODksIDB4OGUsIDB4ZDQsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OGIsIDB4NTUsIDB4ZTAsIDB4OGIsIDB4NGQsIDB4ZTQsIDB4ODksIDB4OTYsIDB4ZDgsIDB4MDIsCi0weDAwLCAweDAwLCAweDg5LCAweDhlLCAweGRjLCAweDAyLCAweDAwLCAweDAwLCAweDg5LCAweGJlLCAweGUwLCAweDAyLCAweDAwLCAweDAwLCAweDg4LCAweDk4LAotMHhlOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg0ZiwgMHg3NSwgMHg2NSwgMHg4YiwgMHg1ZCwgMHhlMCwgMHg4YiwgMHg3NSwgMHhlNCwgMHgwMywgMHg1ZCwgMHhlOCwKLTB4MTMsIDB4NzUsIDB4ZWMsIDB4ODksIDB4ZDksIDB4ODksIDB4ZjMsIDB4YmUsIDB4ZmYsIDB4ZmYsIDB4M2YsIDB4MDAsIDB4ODEsIDB4ZmIsIDB4ZmYsIDB4MDMsCi0weDAwLCAweDAwLCAweDc3LCAweDEzLCAweDBmLCAweGFjLCAweGQ5LCAweDBhLCAweDg5LCAweGNlLCAweDgxLCAweGY5LCAweGZmLCAweGZmLCAweDNmLCAweDAwLAotMHg3NiwgMHgwNSwgMHhiZSwgMHhmZiwgMHhmZiwgMHgzZiwgMHgwMCwgMHg4YiwgMHhiOCwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4ZCwgMHg5NywgMHgwMCwKLTB4MDQsIDB4MDAsIDB4MDAsIDB4MzksIDB4ZjIsIDB4NzMsIDB4MjUsIDB4OGQsIDB4OTYsIDB4MDAsIDB4ZmMsIDB4ZmYsIDB4ZmYsIDB4ODksIDB4OTAsIDB4ZTAsCi0weDAxLCAweDAwLCAweDAwLCAweDgxLCAweGZhLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDc3LCAweDBiLCAweDY2LCAweDgxLCAweGVlLCAweDAwLCAweDA0LAotMHg2NiwgMHg4OSwgMHg3MCwgMHgwMiwgMHhlYiwgMHgwNiwgMHg2NiwgMHhjNywgMHg0MCwgMHgwMiwgMHgwMCwgMHhmYywgMHg4MywgMHhjNCwgMHgxNCwgMHg1YiwKLTB4NWUsIDB4NWYsIDB4NWQsIDB4YzMsIDB4NTUsIDB4ODksIDB4ZTUsIDB4OGIsIDB4NTUsIDB4MDgsIDB4ZWMsIDB4NWQsIDB4YzMsIDB4NTUsIDB4ODksIDB4ZTUsCi0weDhiLCAweDU1LCAweDA4LCAweDY2LCAweGVkLCAweDVkLCAweGMzLCAweDU1LCAweDg5LCAweGU1LCAweDhiLCAweDU1LCAweDA4LCAweGVkLCAweDVkLCAweGMzLAotMHg1NSwgMHg4OSwgMHhlNSwgMHg4YiwgMHg0NSwgMHgwOCwgMHg4YiwgMHg1NSwgMHgwYywgMHhlZSwgMHg1ZCwgMHhjMywgMHg1NSwgMHg4OSwgMHhlNSwgMHg4YiwKLTB4NDUsIDB4MDgsIDB4OGIsIDB4NTUsIDB4MGMsIDB4NjYsIDB4ZWYsIDB4NWQsIDB4YzMsIDB4NTUsIDB4ODksIDB4ZTUsIDB4OGIsIDB4NDUsIDB4MDgsIDB4OGIsCi0weDU1LCAweDBjLCAweGVmLCAweDVkLCAweGMzLCAweDU1LCAweDMxLCAweGMwLCAweDg5LCAweGU1LCAweDhiLCAweDU1LCAweDA4LCAweDNiLCAweDQ1LCAweDBjLAotMHg3NCwgMHgwOSwgMHg4MCwgMHgzYywgMHgwMiwgMHgwMCwgMHg3NCwgMHgwMywgMHg0MCwgMHhlYiwgMHhmMiwgMHg1ZCwgMHhjMywgMHg1NSwgMHgzMSwgMHhkMiwKLTB4ODksIDB4ZTUsIDB4OGIsIDB4NDUsIDB4MDgsIDB4OGIsIDB4NGQsIDB4MGMsIDB4M2IsIDB4NTUsIDB4MTAsIDB4NzQsIDB4MDYsIDB4ODgsIDB4MGMsIDB4MTAsCi0weDQyLCAweGViLCAweGY1LCAweDVkLCAweGMzLCAweDU1LCAweDMxLCAweGQyLCAweDg5LCAweGU1LCAweDUzLCAweDhiLCAweDQ1LCAweDA4LCAweDhiLCAweDRkLAotMHgwYywgMHgzYiwgMHg1NSwgMHgxMCwgMHg3NCwgMHgwOSwgMHg4YSwgMHgxYywgMHgxMSwgMHg4OCwgMHgxYywgMHgxMCwgMHg0MiwgMHhlYiwgMHhmMiwgMHg1YiwKLTB4NWQsIDB4YzMsIDB4NTUsIDB4MzEsIDB4YzksIDB4ODksIDB4ZTUsIDB4M2IsIDB4NGQsIDB4MTAsIDB4NzQsIDB4MTcsIDB4OGIsIDB4NDUsIDB4MDgsIDB4MGYsCi0weGI2LCAweDEwLCAweDhiLCAweDQ1LCAweDBjLCAweDBmLCAweGI2LCAweDAwLCAweDM4LCAweGMyLCAweDc0LCAweDA0LCAweDI5LCAweGQwLCAweGViLCAweDA1LAotMHg0MSwgMHhlYiwgMHhlNCwgMHgzMSwgMHhjMCwgMHg1ZCwgMHhjMywgMHg1NSwgMHg4OSwgMHhlNSwgMHg1NywgMHg1NiwgMHg1MywgMHg4YiwgMHg0NSwgMHgwOCwKLTB4NjgsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4OGIsIDB4NGQsIDB4MTAsIDB4OGQsIDB4OTgsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4NTMsIDB4ZTgsCi0weDcxLCAweGZmLCAweGZmLCAweGZmLCAweDAxLCAweGMzLCAweDVlLCAweDgxLCAweGY5LCAweGZlLCAweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDhkLCAweDczLAotMHgwMSwgMHhjNiwgMHgwMywgMHgyMCwgMHg3ZSwgMHgwNSwgMHhiOSwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MSwgMHhmZiwgMHg3NSwgMHgwYywgMHhlOCwKLTB4NTEsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4NWEsIDB4NTksIDB4NTAsIDB4ZmYsIDB4NzUsIDB4MGMsIDB4ODksIDB4YzcsIDB4NTYsIDB4ZTgsIDB4NzMsIDB4ZmYsCi0weGZmLCAweGZmLCAweDgzLCAweGM0LCAweDBjLCAweGM2LCAweDQ0LCAweDNiLCAweDAxLCAweDAwLCAweDhkLCAweDY1LCAweGY0LCAweDViLCAweDVlLCAweDVmLAotMHg1ZCwgMHhjMywgMHg1NSwgMHg4OSwgMHhlNSwgMHg4YiwgMHg0NSwgMHgxMCwgMHg4YiwgMHg1NSwgMHgwYywgMHg4OSwgMHg0NSwgMHgwYywgMHg4YiwgMHg0NSwKLTB4MDgsIDB4ODksIDB4NTUsIDB4MTAsIDB4OGIsIDB4NDAsIDB4MTAsIDB4ODksIDB4NDUsIDB4MDgsIDB4NWQsIDB4ZWIsIDB4OGEsIDB4NTUsIDB4ODksIDB4ZTUsCi0weDU3LCAweDU2LCAweDUzLCAweDhiLCAweDVkLCAweDA4LCAweDY4LCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDZhLCAweDAwLCAweGZmLCAweDczLCAweDEwLAotMHhlOCwgMHgxOCwgMHhmZiwgMHhmZiwgMHhmZiwgMHg4YiwgMHg0MywgMHgxMCwgMHhjNywgMHg0MCwgMHgwZSwgMHgxOSwgMHgwMSwgMHgxMCwgMHgwMCwgMHhjNywKLTB4MDAsIDB4MDAsIDB4MTksIDB4MDAsIDB4MDAsIDB4YzcsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4YzYsIDB4ODAsIDB4ZTgsIDB4MDEsCi0weDAwLCAweDAwLCAweDAwLCAweDhkLCAweGI4LCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDY2LCAweGM3LCAweDQwLCAweDBhLCAweDAwLCAweDAwLCAweGM3LAotMHg0MCwgMHgyMCwgMHgzZiwgMHhhMywgMHgwMCwgMHgwOCwgMHg4OSwgMHhiOCwgMHgyOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg4YiwgMHg0MywgMHgwYywgMHg2OCwKLTB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OGQsIDB4NDgsIDB4MjgsIDB4NTEsIDB4ZTgsIDB4YjgsIDB4ZmUsIDB4ZmYsIDB4ZmYsIDB4NWEsIDB4NWUsIDB4ODksCi0weGM2LCAweDUwLCAweDUxLCAweDU3LCAweGU4LCAweGRjLCAweGZlLCAweGZmLCAweGZmLCAweDhiLCAweDQzLCAweDEwLCAweDgzLCAweGMwLCAweDQwLCAweGM2LAotMHg4NCwgMHgzMCwgMHhjMCwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHg2YSwgMHg0MCwgMHg2YSwgMHgwMCwgMHg1MCwgMHhlOCwgMHhhYywgMHhmZSwgMHhmZiwKLTB4ZmYsIDB4ODMsIDB4YzQsIDB4MjQsIDB4OGIsIDB4NDMsIDB4MTAsIDB4ODMsIDB4ZTgsIDB4ODAsIDB4NmEsIDB4MjAsIDB4NmEsIDB4MDAsIDB4NTAsIDB4ZTgsCi0weDk5LCAweGZlLCAweGZmLCAweGZmLCAweDhiLCAweDUzLCAweDBjLCAweDhiLCAweDQzLCAweDEwLCAweDA1LCAweDAyLCAweDAyLCAweDAwLCAweDAwLCAweDhiLAotMHg0YSwgMHgxNCwgMHg2NiwgMHg4YiwgMHg1MiwgMHgxNiwgMHg2NiwgMHg4OSwgMHg0OCwgMHhmNiwgMHg2NiwgMHg4OSwgMHg1MCwgMHhmYSwgMHg2NiwgMHhjNywKLTB4ODAsIDB4OWUsIDB4ZmUsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4YzcsIDB4NDAsIDB4ZGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjYsIDB4YzcsCi0weDgwLCAweDAwLCAweGZlLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDY2LCAweGM3LCAweDQwLCAweGYwLCAweGZmLCAweGZmLCAweGM2LCAweDQwLCAweGZkLAotMHgwMCwgMHg2YSwgMHgwNCwgMHg2OCwgMHgyNSwgMHgxMCwgMHgwMSwgMHgwMCwgMHg1MCwgMHhlOCwgMHg2NywgMHhmZSwgMHhmZiwgMHhmZiwgMHg4YiwgMHg0MywKLTB4MTAsIDB4NjYsIDB4YzcsIDB4ODAsIDB4MTAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NTAsIDB4MDAsIDB4ODMsIDB4YzQsIDB4MTgsIDB4OGIsIDB4NGIsIDB4MGMsCi0weDY2LCAweGM3LCAweDgwLCAweDA2LCAweDAyLCAweDAwLCAweDAwLCAweDAxLCAweDAyLCAweGM3LCAweDgwLCAweDE4LCAweDAyLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHhjNywgMHg4MCwgMHgxYywgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4YiwgMHg1MSwgMHgyNCwKLTB4ODUsIDB4ZDIsIDB4NzQsIDB4MGYsIDB4OGIsIDB4NDksIDB4MjAsIDB4ODksIDB4OTAsIDB4MWMsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ODksIDB4ODgsIDB4MTgsCi0weDAyLCAweDAwLCAweDAwLCAweGM3LCAweDQzLCAweDJjLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDhkLCAweDY1LCAweGY0LCAweDViLCAweDVlLCAweDVmLAotMHg1ZCwgMHhjMywgMHg1NSwgMHg4OSwgMHhlNSwgMHg1NywgMHg1NiwgMHg1MywgMHg4MywgMHhlYywgMHg0YywgMHhjNywgMHg0NSwgMHhjOCwgMHgwMCwgMHgwMCwKLTB4MDIsIDB4MDAsIDB4OGIsIDB4NDUsIDB4MDgsIDB4ODksIDB4NDUsIDB4YjgsIDB4OGIsIDB4NDUsIDB4MGMsIDB4ODksIDB4NDUsIDB4YmMsIDB4OGIsIDB4NDUsCi0weDEwLCAweDg5LCAweDQ1LCAweGMwLCAweDhiLCAweDQ1LCAweDE0LCAweDg5LCAweDQ1LCAweGM0LCAweDhkLCAweDQ1LCAweGI4LCAweDUwLCAweGU4LCAweDlhLAotMHhmZSwgMHhmZiwgMHhmZiwgMHg4YiwgMHg0NSwgMHhiOCwgMHg1OSwgMHgzZCwgMHgwMiwgMHhiMCwgMHhhZCwgMHgyYiwgMHg3NSwgMHgwOSwgMHhjNywgMHg0NSwKLTB4Y2MsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZWIsIDB4MjEsIDB4MzEsIDB4ZjYsIDB4M2QsIDB4MDcsIDB4YjAsIDB4MTEsIDB4MGEsIDB4NzUsIDB4MmMsCi0weDhiLCAweDQ1LCAweGJjLCAweDhiLCAweDEwLCAweGU4LCAweDU4LCAweGZiLCAweGZmLCAweGZmLCAweGY3LCAweGQwLCAweDY2LCAweDg1LCAweGMwLCAweDc1LAotMHgwZSwgMHhjNywgMHg0NSwgMHhkMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiZSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlYiwgMHgwZCwgMHg1MCwKLTB4NjgsIDB4MmEsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4YWUsIDB4ZjksIDB4ZmYsIDB4ZmYsIDB4NTgsIDB4NWEsIDB4MzEsIDB4ZGIsIDB4ODEsIDB4N2QsCi0weGI4LCAweDA3LCAweGIwLCAweDFmLCAweDBlLCAweDc1LCAweDAzLCAweDhiLCAweDVkLCAweGJjLCAweDhiLCAweDQ1LCAweGMwLCAweDg1LCAweGMwLCAweDc0LAotMHgwYSwgMHg4MSwgMHgzOCwgMHgwNywgMHhiMCwgMHgxZiwgMHgwZSwgMHg3NSwgMHgwMiwgMHg4OSwgMHhjMywgMHg4NSwgMHhmNiwgMHgwZiwgMHg4NSwgMHhjZSwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4ODUsIDB4ZGIsIDB4MGYsIDB4ODQsIDB4YzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjYsIDB4ODMsIDB4N2IsIDB4MDgsIDB4MDAsCi0weDc0LCAweDBmLCAweDhiLCAweDUzLCAweDA0LCAweDg5LCAweGQ4LCAweGU4LCAweGY2LCAweGZhLCAweGZmLCAweGZmLCAweGY3LCAweGQwLCAweDBmLCAweGI3LAotMHhmMCwgMHg4YiwgMHg0YiwgMHgwNCwgMHg4ZCwgMHg0MywgMHgwYywgMHgwMSwgMHhkOSwgMHgzMSwgMHhmZiwgMHg4OSwgMHg0ZCwgMHhiNCwgMHgzOSwgMHg0NSwKLTB4YjQsIDB4NzYsIDB4MWYsIDB4OGIsIDB4MDgsIDB4OGIsIDB4NTAsIDB4MDQsIDB4ODMsIDB4YzEsIDB4MDMsIDB4ODMsIDB4YzIsIDB4MDMsIDB4ODMsIDB4ZTEsCi0weGZjLCAweDgzLCAweGUyLCAweGZjLCAweDhkLCAweDU0LCAweDExLCAweDBjLCAweDAxLCAweGQwLCAweDM5LCAweDQ1LCAweGI0LCAweDcyLCAweDAzLCAweDQ3LAotMHhlYiwgMHhkYywgMHg4MSwgMHgzYiwgMHgwNywgMHhiMCwgMHgxZiwgMHgwZSwgMHg3NSwgMHgxYiwgMHg4NSwgMHhmNiwgMHg3NSwgMHgxNywgMHgwZiwgMHhiNywKLTB4NDMsIDB4MGEsIDB4MzksIDB4ZjgsIDB4NzUsIDB4MGYsIDB4YzcsIDB4NDUsIDB4ZDQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODksIDB4NWQsIDB4YzAsCi0weGU5LCAweDk1LCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDY4LCAweDRkLCAweDEwLCAweDAxLCAweDAwLCAweGU4LCAweDA4LCAweGY5LCAweGZmLCAweGZmLAotMHg1NiwgMHg2OCwgMHg2NywgMHgxMCwgMHgwMSwgMHgwMCwgMHhlOCwgMHhmZCwgMHhmOCwgMHhmZiwgMHhmZiwgMHg1NywgMHg2OCwgMHg3OSwgMHgxMCwgMHgwMSwKLTB4MDAsIDB4ZTgsIDB4ZjIsIDB4ZjgsIDB4ZmYsIDB4ZmYsIDB4NTMsIDB4NjgsIDB4OGIsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4ZTcsIDB4ZjgsIDB4ZmYsCi0weGZmLCAweDgzLCAweGM0LCAweDIwLCAweGZmLCAweDczLCAweDA0LCAweDY4LCAweDlkLCAweDEwLCAweDAxLCAweDAwLCAweGU4LCAweGQ3LCAweGY4LCAweGZmLAotMHhmZiwgMHhmZiwgMHgzMywgMHg2OCwgMHhhZiwgMHgxMCwgMHgwMSwgMHgwMCwgMHhlOCwgMHhjYiwgMHhmOCwgMHhmZiwgMHhmZiwgMHgwZiwgMHhiNywgMHg0MywKLTB4MGEsIDB4NTAsIDB4NjgsIDB4YzEsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4YmMsIDB4ZjgsIDB4ZmYsIDB4ZmYsIDB4ODMsIDB4YzQsIDB4MTgsIDB4ZWIsCi0weDA0LCAweDg1LCAweGY2LCAweDc1LCAweDM1LCAweDUxLCAweDY4LCAweGQzLCAweDEwLCAweDAxLCAweDAwLCAweGU4LCAweGE4LCAweGY4LCAweGZmLCAweGZmLAotMHhmZiwgMHg3NSwgMHhiOCwgMHg2OCwgMHhlZSwgMHgxMCwgMHgwMSwgMHgwMCwgMHhlOCwgMHg5YiwgMHhmOCwgMHhmZiwgMHhmZiwgMHhmZiwgMHg3NSwgMHhiYywKLTB4NjgsIDB4ZjcsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4OGUsIDB4ZjgsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4NzUsIDB4YzAsIDB4NjgsIDB4MDAsIDB4MTEsCi0weDAxLCAweDAwLCAweGU4LCAweDgxLCAweGY4LCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDIwLCAweGM3LCAweDQ1LCAweGQ4LCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHhjNywgMHg0NSwgMHhkYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MywgMHg3ZCwgMHhkNCwgMHgwMCwgMHgwZiwgMHg4NCwgMHhmYywgMHgwMCwKLTB4MDAsIDB4MDAsIDB4OGIsIDB4N2QsIDB4YzAsIDB4OGQsIDB4NTcsIDB4MGMsIDB4MDMsIDB4N2YsIDB4MDQsIDB4MzksIDB4ZDcsIDB4NzYsIDB4NTEsIDB4OGIsCi0weDMyLCAweDhiLCAweDVhLCAweDA0LCAweDg5LCAweDVkLCAweGI0LCAweDgzLCAweGMzLCAweDAzLCAweDhkLCAweDRlLCAweDAzLCAweDgzLCAweGUzLCAweGZjLAotMHg4MywgMHhlMSwgMHhmYywgMHg4ZCwgMHg0MiwgMHgwYywgMHgwMSwgMHhjYiwgMHgwMSwgMHhjMywgMHgzOSwgMHhkZiwgMHg3MiwgMHgzMiwgMHg4MywgMHg3YSwKLTB4MDgsIDB4MDEsIDB4NzUsIDB4MjgsIDB4ODUsIDB4ZjYsIDB4NzUsIDB4MjQsIDB4ODksIDB4NTUsIDB4YjAsIDB4ODksIDB4NGQsIDB4YWMsIDB4NTIsIDB4NmEsCi0weDAwLCAweDZhLCAweDAwLCAweDUwLCAweGU4LCAweDI5LCAweGZjLCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDEwLCAweDg5LCAweGM2LCAweDg1LCAweGMwLAotMHg4YiwgMHg1NSwgMHhiMCwgMHg4YiwgMHg0ZCwgMHhhYywgMHgwZiwgMHg4NCwgMHgxZCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4OSwgMHhkYSwgMHhlYiwgMHhhYiwKLTB4MzEsIDB4ZDIsIDB4MzEsIDB4ZmYsIDB4MzEsIDB4ZjYsIDB4ODUsIDB4ZDIsIDB4MGYsIDB4OTUsIDB4YzMsIDB4ZjcsIDB4YzYsIDB4MDEsIDB4MDAsIDB4MDAsCi0weDAwLCAweDc1LCAweDM0LCAweDg0LCAweGRiLCAweDc0LCAweDMwLCAweDMxLCAweGY2LCAweDgzLCAweDdhLCAweDA0LCAweDBhLCAweDc1LCAweDI4LCAweDg5LAotMHg1NSwgMHhiNCwgMHg1MCwgMHg2YSwgMHgwYSwgMHg2OCwgMHgzNSwgMHgxMSwgMHgwMSwgMHgwMCwgMHg1NywgMHhlOCwgMHhlMiwgMHhmYiwgMHhmZiwgMHhmZiwKLTB4ODMsIDB4YzQsIDB4MTAsIDB4OGIsIDB4NTUsIDB4YjQsIDB4ODUsIDB4YzAsIDB4NzUsIDB4MGQsIDB4OGQsIDB4NDUsIDB4YjgsIDB4ZTgsIDB4MTEsIDB4ZmEsCi0weGZmLCAweGZmLCAweDhiLCAweDU1LCAweGI0LCAweDg5LCAweGM2LCAweDg1LCAweGY2LCAweDc1LCAweDBmLCAweDg0LCAweGRiLCAweDc0LCAweDBiLCAweDMxLAotMHhjMCwgMHg4MywgMHg3YSwgMHgwNCwgMHgwMCwgMHgwZiwgMHg5NCwgMHhjMCwgMHg4OSwgMHhjNiwgMHg4NSwgMHhmNiwgMHg3NSwgMHgyNSwgMHg4NCwgMHhkYiwKLTB4NzQsIDB4MjEsIDB4ODMsIDB4N2EsIDB4MDQsIDB4MDEsIDB4NzUsIDB4MWIsIDB4NTAsIDB4NmEsIDB4MDEsIDB4NjgsIDB4NjYsIDB4MTAsIDB4MDEsIDB4MDAsCi0weDU3LCAweGU4LCAweDljLCAweGZiLCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDEwLCAweDg1LCAweGMwLCAweDBmLCAweDk0LCAweGMwLCAweDBmLCAweGI2LAotMHhjMCwgMHg4OSwgMHhjNiwgMHg4NSwgMHhmNiwgMHg3NSwgMHgxMywgMHg4NCwgMHhkYiwgMHg3NCwgMHgwZiwgMHg1NywgMHg2OCwgMHgwYSwgMHgxMSwgMHgwMSwKLTB4MDAsIDB4ZTgsIDB4NzIsIDB4ZjcsIDB4ZmYsIDB4ZmYsIDB4NWYsIDB4NTgsIDB4ZWIsIDB4MDQsIDB4ODUsIDB4ZjYsIDB4NzUsIDB4MTMsIDB4OGQsIDB4NDUsCi0weGI4LCAweGU4LCAweGFkLCAweGY5LCAweGZmLCAweGZmLCAweDg1LCAweGMwLCAweDc1LCAweDA3LCAweGM3LCAweDQ1LCAweGQ4LCAweDAxLCAweDAwLCAweDAwLAotMHgwMCwgMHg1MSwgMHg2OCwgMHgyNSwgMHgxMSwgMHgwMSwgMHgwMCwgMHhlOCwgMHg0YywgMHhmNywgMHhmZiwgMHhmZiwgMHg1YiwgMHg4MywgMHg3ZCwgMHhkYywKLTB4MDAsIDB4NWUsIDB4NzQsIDB4MGQsIDB4NTAsIDB4NjgsIDB4MzQsIDB4MTEsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4MzksIDB4ZjcsIDB4ZmYsIDB4ZmYsIDB4NTgsCi0weDVhLCAweDgzLCAweDdkLCAweGQ4LCAweDAwLCAweDc0LCAweDBkLCAweDUzLCAweDY4LCAweDNmLCAweDExLCAweDAxLCAweDAwLCAweGU4LCAweDI2LCAweGY3LAotMHhmZiwgMHhmZiwgMHg1ZSwgMHg1ZiwgMHg1MCwgMHg2OCwgMHg2NSwgMHgxMCwgMHgwMSwgMHgwMCwgMHhlOCwgMHgxOSwgMHhmNywgMHhmZiwgMHhmZiwgMHg1YSwKLTB4ODMsIDB4N2QsIDB4ZGMsIDB4MDAsIDB4NTksIDB4NzUsIDB4MzEsIDB4ODMsIDB4N2QsIDB4ZDgsIDB4MDAsIDB4MGYsIDB4ODQsIDB4MTYsIDB4MDEsIDB4MDAsCi0weDAwLCAweDUwLCAweDUwLCAweDZhLCAweDIwLCAweDY4LCAweGM0LCAweDU1LCAweDAxLCAweDAwLCAweGU4LCAweGJiLCAweGY0LCAweGZmLCAweGZmLCAweGJiLAotMHhjMCwgMHg1NSwgMHgwMSwgMHgwMCwgMHhhMywgMHhjMCwgMHg1NSwgMHgwMSwgMHgwMCwgMHg4MywgMHhjNCwgMHgxMCwgMHhjNywgMHg0NSwgMHhiNCwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4ZTksIDB4YWEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OGIsIDB4NDUsIDB4ZTAsIDB4OGQsIDB4NTgsIDB4MTgsIDB4OGIsIDB4NDgsCi0weDBjLCAweDAxLCAweGQ5LCAweDg5LCAweDRkLCAweGI0LCAweDM5LCAweDVkLCAweGI0LCAweDc2LCAweGJjLCAweDhiLCAweDU1LCAweGI0LCAweDhiLCAweDQzLAotMHgwNCwgMHgyOSwgMHhkYSwgMHgzOSwgMHhkMCwgMHg3NywgMHhiMCwgMHg4MywgMHgzYiwgMHgwMSwgMHg3NSwgMHg0ZiwgMHg4MywgMHhlOCwgMHgwOCwgMHhiOSwKLTB4MTQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzEsIDB4ZDIsIDB4OGQsIDB4NzMsIDB4MDgsIDB4ZjcsIDB4ZjEsIDB4ODksIDB4NDUsIDB4YjAsIDB4MzEsIDB4ZmYsCi0weDM5LCAweDdkLCAweGIwLCAweDdlLCAweDJmLCAweDgzLCAweGZmLCAweDFmLCAweDdmLCAweDJhLCAweDMxLCAweGMwLCAweDhiLCAweDE2LCAweDgzLCAweDdlLAotMHgxMCwgMHgwMSwgMHgwZiwgMHg5NSwgMHhjMCwgMHg4MywgMHhlYywgMHgwNCwgMHg0MCwgMHg4YiwgMHg0ZSwgMHgwNCwgMHg0NywgMHg1MCwgMHg4YiwgMHg0NSwKLTB4YzgsIDB4ZmYsIDB4NzYsIDB4MGMsIDB4ZmYsIDB4NzYsIDB4MDgsIDB4ODMsIDB4YzYsIDB4MTQsIDB4ZTgsIDB4MjksIDB4ZjksIDB4ZmYsIDB4ZmYsIDB4ODMsCi0weGM0LCAweDEwLCAweGViLCAweGNjLCAweGM3LCAweDQ1LCAweGU0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDViLCAweDA0LCAweGViLCAweDk2LAotMHg4YiwgMHg0MywgMHgxNCwgMHg4YiwgMHg1MywgMHgwNCwgMHg4YiwgMHg0YiwgMHgwOCwgMHg4YiwgMHg3MywgMHgwYywgMHg4YiwgMHg3YiwgMHgxMCwgMHg4MywKLTB4ZjgsIDB4MDEsIDB4NzUsIDB4MDcsIDB4YzcsIDB4NDUsIDB4ZTQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODMsIDB4ZWMsIDB4MDQsIDB4ODMsIDB4YzMsCi0weDE0LCAweDUwLCAweDhiLCAweDQ1LCAweGIwLCAweDU3LCAweDU2LCAweGU4LCAweGVjLCAweGY4LCAweGZmLCAweGZmLCAweGZmLCAweDQ1LCAweGI0LCAweDgzLAotMHhjNCwgMHgxMCwgMHg4YiwgMHg0NSwgMHhiNCwgMHgzYiwgMHgwNSwgMHhjMCwgMHg1NSwgMHgwMSwgMHgwMCwgMHg4YiwgMHg0NSwgMHhjOCwgMHg4OSwgMHg0NSwKLTB4YjAsIDB4N2MsIDB4YmQsIDB4ZTgsIDB4M2IsIDB4ZjQsIDB4ZmYsIDB4ZmYsIDB4OGIsIDB4N2QsIDB4YjAsIDB4ODksIDB4ODcsIDB4ZTAsIDB4MDEsIDB4MDAsCi0weDAwLCAweDhiLCAweDVkLCAweGM4LCAweGU4LCAweDczLCAweGY0LCAweGZmLCAweGZmLCAweDY2LCAweDg5LCAweDQzLCAweDAyLCAweDhiLCAweDQ1LCAweGM4LAotMHg4MywgMHhiOCwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3NSwgMHgwNywgMHg2NiwgMHg4MywgMHg3OCwgMHgwMiwgMHgwMCwgMHg3NCwgMHgwNywKLTB4YzcsIDB4NDUsIDB4ZTQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODMsIDB4N2QsIDB4Y2MsIDB4MDAsIDB4MGYsIDB4ODQsIDB4YjksIDB4MDAsIDB4MDAsCi0weDAwLCAweDhiLCAweDc1LCAweGJjLCAweDhiLCAweDU1LCAweGM4LCAweDgzLCAweDdkLCAweGU0LCAweDAwLCAweDhiLCAweDFlLCAweDc0LCAweDRkLCAweGY2LAotMHhjMywgMHgwMSwgMHg3NCwgMHg0OCwgMHg4YiwgMHg0NiwgMHgwOCwgMHgwNSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzZCwgMHhmZiwgMHhmZiwgMHgzZiwKLTB4MDAsIDB4NzYsIDB4MDUsIDB4YjgsIDB4ZmYsIDB4ZmYsIDB4M2YsIDB4MDAsIDB4OGIsIDB4YmEsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4OGQsIDB4OGYsCi0weDAwLCAweDA0LCAweDAwLCAweDAwLCAweDM5LCAweGMxLCAweDczLCAweDI0LCAweDhkLCAweDg4LCAweDAwLCAweGZjLCAweGZmLCAweGZmLCAweDg5LCAweDhhLAotMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MSwgMHhmOSwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHg3NywgMHgwYSwgMHg2NiwgMHgyZCwgMHgwMCwgMHgwNCwKLTB4NjYsIDB4ODksIDB4NDIsIDB4MDIsIDB4ZWIsIDB4MDYsIDB4NjYsIDB4YzcsIDB4NDIsIDB4MDIsIDB4MDAsIDB4ZmMsIDB4ODAsIDB4ZTMsIDB4MDQsIDB4NzQsCi0weDBmLCAweDUwLCAweDZhLCAweGZmLCAweGZmLCAweDc2LCAweDEwLCAweDUyLCAweGU4LCAweGFhLCAweGY5LCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDEwLAotMHg4MywgMHg3ZCwgMHhlNCwgMHgwMCwgMHgwZiwgMHg4NCwgMHhiZCwgMHgwMSwgMHgwMCwgMHgwMCwgMHhmNiwgMHgwNiwgMHg0MCwgMHgwZiwgMHg4NCwgMHhiNCwKLTB4MDEsIDB4MDAsIDB4MDAsIDB4OGIsIDB4NWUsIDB4MzAsIDB4OGIsIDB4NDYsIDB4MmMsIDB4MDEsIDB4ZDgsIDB4OGIsIDB4N2QsIDB4YzgsIDB4ODksIDB4NDUsCi0weGI0LCAweDhiLCAweDczLCAweGZjLCAweDM5LCAweDVkLCAweGI0LCAweDBmLCAweDg2LCAweDlhLCAweDAxLCAweDAwLCAweDAwLCAweDhiLCAweDEzLCAweDhiLAotMHg0YiwgMHgwNCwgMHg1MCwgMHg4OSwgMHhmOCwgMHhmZiwgMHg3MywgMHgxMCwgMHhmZiwgMHg3MywgMHgwYywgMHhmZiwgMHg3MywgMHgwOCwgMHgwMSwgMHhmMywKLTB4ZTgsIDB4ZTMsIDB4ZjcsIDB4ZmYsIDB4ZmYsIDB4ODMsIDB4YzQsIDB4MTAsIDB4ZWIsIDB4ZGEsIDB4ODMsIDB4N2QsIDB4ZDAsIDB4MDAsIDB4MGYsIDB4ODQsCi0weGFhLCAweDAwLCAweDAwLCAweDAwLCAweDhiLCAweDc1LCAweGJjLCAweDhiLCAweDQ2LCAweDBjLCAweDg1LCAweGMwLCAweDc0LCAweDEwLCAweDUyLCAweDUwLAotMHhmZiwgMHg3NiwgMHgwOCwgMHhmZiwgMHg3NSwgMHhjOCwgMHhlOCwgMHgzYywgMHhmOSwgMHhmZiwgMHhmZiwgMHg4MywgMHhjNCwgMHgxMCwgMHg4YiwgMHg0NiwKLTB4MTQsIDB4OGIsIDB4NWUsIDB4MTAsIDB4ODksIDB4NDUsIDB4YjQsIDB4ODMsIDB4N2QsIDB4YjQsIDB4MDAsIDB4MGYsIDB4ODQsIDB4NDYsIDB4MDEsIDB4MDAsCi0weDAwLCAweDgzLCAweDNiLCAweDAxLCAweDc1LCAweDZiLCAweDgzLCAweDdkLCAweGU0LCAweDAwLCAweDc0LCAweDY1LCAweDhiLCAweDQ1LCAweGM4LCAweGI5LAotMHgxNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OSwgMHg0NSwgMHhiMCwgMHg4YiwgMHg0MywgMHgwNCwgMHg4MywgMHhlOCwgMHgwOCwgMHgzMSwgMHhkMiwgMHhmNywKLTB4ZjEsIDB4ODksIDB4NDUsIDB4YWMsIDB4OGQsIDB4NzMsIDB4MDgsIDB4MzEsIDB4ZmYsIDB4MzksIDB4N2QsIDB4YWMsIDB4N2UsIDB4M2MsIDB4ODMsIDB4ZmYsCi0weDFmLCAweDdmLCAweDM3LCAweDhiLCAweDQ2LCAweDEwLCAweDhkLCAweDUwLCAweGZmLCAweGI4LCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDgzLCAweGZhLAotMHgwMywgMHg3NywgMHgwNywgMHgwZiwgMHhiNiwgMHg4MiwgMHgxMCwgMHgxMCwgMHgwMSwgMHgwMCwgMHg4MywgMHhlYywgMHgwNCwgMHg4YiwgMHgxNiwgMHg4YiwKLTB4NGUsIDB4MDQsIDB4NDcsIDB4NTAsIDB4OGIsIDB4NDUsIDB4YjAsIDB4ZmYsIDB4NzYsIDB4MGMsIDB4ZmYsIDB4NzYsIDB4MDgsIDB4ODMsIDB4YzYsIDB4MTQsCi0weGU4LCAweDQzLCAweGY3LCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDEwLCAweGViLCAweGJmLCAweGM3LCAweDQ1LCAweGU0LCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHg4YiwgMHg0MywgMHgwNCwgMHgwMSwgMHhjMywgMHgyOSwgMHg0NSwgMHhiNCwgMHhlOSwgMHg3OSwgMHhmZiwgMHhmZiwgMHhmZiwgMHg4MywgMHg3ZCwKLTB4ZDQsIDB4MDAsIDB4MGYsIDB4ODQsIDB4YmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OGIsIDB4NTUsIDB4YzAsIDB4OGIsIDB4N2EsIDB4MDQsIDB4OGQsIDB4NDIsCi0weDBjLCAweDAxLCAweGQ3LCAweDM5LCAweGM3LCAweDBmLCAweDg2LCAweGFjLCAweDAwLCAweDAwLCAweDAwLCAweDhiLCAweDEwLCAweDhkLCAweDQ4LCAweDBjLAotMHg4ZCwgMHg1YSwgMHgwMywgMHg4MywgMHhlMywgMHhmYywgMHg4ZCwgMHgzNCwgMHgxOSwgMHg4YiwgMHg1OCwgMHgwNCwgMHg4OSwgMHg3NSwgMHhiNCwgMHg4ZCwKLTB4NzMsIDB4MDMsIDB4ODMsIDB4ZTYsIDB4ZmMsIDB4MDMsIDB4NzUsIDB4YjQsIDB4ODksIDB4NzUsIDB4YjAsIDB4MzksIDB4ZjcsIDB4MGYsIDB4ODIsIDB4ODQsCi0weDAwLCAweDAwLCAweDAwLCAweDhiLCAweDM1LCAweDcwLCAweDE0LCAweDAxLCAweDAwLCAweDhiLCAweDQwLCAweDA4LCAweDg5LCAweDc1LCAweGFjLCAweDM5LAotMHgwNSwgMHg3OCwgMHgxNCwgMHgwMSwgMHgwMCwgMHg4YiwgMHgzNSwgMHg3NCwgMHgxNCwgMHgwMSwgMHgwMCwgMHg3NSwgMHgyNywgMHgzYiwgMHg1NSwgMHhhYywKLTB4NzUsIDB4MjIsIDB4NTAsIDB4NTIsIDB4NTYsIDB4NTEsIDB4ZTgsIDB4MTcsIDB4ZjgsIDB4ZmYsIDB4ZmYsIDB4ODMsIDB4YzQsIDB4MTAsIDB4ODUsIDB4YzAsCi0weDc1LCAweDEyLCAweDUyLCAweDhkLCAweDQ1LCAweGI4LCAweGZmLCAweDc1LCAweGI0LCAweDUzLCAweDUwLCAweGZmLCAweDE1LCAweDdjLCAweDE0LCAweDAxLAotMHgwMCwgMHg4MywgMHhjNCwgMHgxMCwgMHg4YiwgMHg0NSwgMHhiMCwgMHhlYiwgMHg4YSwgMHg4ZCwgMHg3YywgMHgwYSwgMHgwYywgMHg4MywgMHg3ZCwgMHhiNCwKLTB4MDcsIDB4MGYsIDB4ODUsIDB4ZGYsIDB4ZmIsIDB4ZmYsIDB4ZmYsIDB4ODksIDB4NTUsIDB4YjQsIDB4NTAsIDB4NmEsIDB4MDcsIDB4NjgsIDB4NDAsIDB4MTEsCi0weDAxLCAweDAwLCAweDU3LCAweGU4LCAweGRhLCAweGY3LCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDEwLCAweDhiLCAweDU1LCAweGI0LCAweDg1LCAweGMwLAotMHgwZiwgMHg4NSwgMHhjMCwgMHhmYiwgMHhmZiwgMHhmZiwgMHhjNywgMHg0NSwgMHhkOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiZSwgMHgwMSwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4ZTksIDB4YWYsIDB4ZmIsIDB4ZmYsIDB4ZmYsIDB4YjAsIDB4ODAsIDB4ZTYsIDB4NzAsIDB4MzEsIDB4YzAsIDB4ZTYsIDB4ZjAsIDB4ZTYsCi0weGYxLCAweGIwLCAweDExLCAweGU2LCAweDIwLCAweGU2LCAweGEwLCAweGIwLCAweDIwLCAweGU2LCAweDIxLCAweGIwLCAweDI4LCAweGU2LCAweGExLCAweGIwLAotMHgwNCwgMHhlNiwgMHgyMSwgMHhiMCwgMHgwMiwgMHhlNiwgMHhhMSwgMHhiMCwgMHgwMSwgMHhlNiwgMHgyMSwgMHhlNiwgMHhhMSwgMHhiMCwgMHhmZiwgMHhlNiwKLTB4YTEsIDB4YjAsIDB4ZmIsIDB4ZTYsIDB4MjEsIDB4OGIsIDB4NDUsIDB4YzgsIDB4OGQsIDB4NjUsIDB4ZjQsIDB4NWIsIDB4NWUsIDB4NWYsIDB4NWQsIDB4YzMsCi0weDAxLCAweDAyLCAweDAzLCAweDA0LCAweDMwLCAweDMxLCAweDMyLCAweDMzLCAweDM0LCAweDM1LCAweDM2LCAweDM3LCAweDM4LCAweDM5LCAweDQxLCAweDQyLAotMHg0MywgMHg0NCwgMHg0NSwgMHg0NiwgMHgwMCwgMHg0OCwgMHg2NCwgMHg3MiwgMHg1MywgMHgwMCwgMHg0MiwgMHg2MSwgMHg2NCwgMHgyMCwgMHg3NSwgMHg2ZSwKLTB4NjksIDB4NjYsIDB4NmYsIDB4NzIsIDB4NmQsIDB4MjAsIDB4NjIsIDB4NmYsIDB4NmYsIDB4NzQsIDB4MjAsIDB4NjgsIDB4NjUsIDB4NjEsIDB4NjQsIDB4NjUsCi0weDcyLCAweDIwLCAweDYzLCAweDY4LCAweDY1LCAweDYzLCAweDZiLCAweDczLCAweDc1LCAweDZkLCAweDIxLCAweDBhLCAweDAwLCAweDQyLCAweDYxLCAweDY0LAotMHgyMCwgMHg0NSwgMHg0YywgMHg0NiwgMHgyMCwgMHg3MCwgMHg2MSwgMHg3MiwgMHg2MSwgMHg2ZCwgMHg2NSwgMHg3NCwgMHg2NSwgMHg3MiwgMHgyMCwgMHg3NCwKLTB4NjEsIDB4NjIsIDB4NmMsIDB4NjUsIDB4MjEsIDB4MGEsIDB4MDAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4NjMsIDB4NjgsIDB4NjUsIDB4NjMsIDB4NmIsIDB4NzMsCi0weDc1LCAweDZkLCAweDIwLCAweDNkLCAweDIwLCAweDI1LCAweDc4LCAweDBhLCAweDAwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDYzLAotMHg2ZiwgMHg3NSwgMHg2ZSwgMHg3NCwgMHgyMCwgMHgzZCwgMHgyMCwgMHgyNSwgMHg3OCwgMHgwYSwgMHgwMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKLTB4MjAsIDB4MjAsIDB4MjAsIDB4NjgsIDB4NjQsIDB4NzIsIDB4MjAsIDB4M2QsIDB4MjAsIDB4MjUsIDB4NzgsIDB4MGEsIDB4MDAsIDB4MjAsIDB4MjAsIDB4MjAsCi0weDIwLCAweDIwLCAweDYyLCAweDVmLCAweDczLCAweDY5LCAweDdhLCAweDY1LCAweDIwLCAweDNkLCAweDIwLCAweDI1LCAweDc4LCAweDBhLCAweDAwLCAweDYyLAotMHg1ZiwgMHg3MywgMHg2OSwgMHg2NywgMHg2ZSwgMHg2MSwgMHg3NCwgMHg3NSwgMHg3MiwgMHg2NSwgMHgyMCwgMHgzZCwgMHgyMCwgMHgyNSwgMHg3OCwgMHgwYSwKLTB4MDAsIDB4MjAsIDB4MjAsIDB4NjIsIDB4NWYsIDB4NzIsIDB4NjUsIDB4NjMsIDB4NmYsIDB4NzIsIDB4NjQsIDB4NzMsIDB4MjAsIDB4M2QsIDB4MjAsIDB4MjUsCi0weDc4LCAweDBhLCAweDAwLCAweDU1LCAweDZlLCAweDZiLCAweDZlLCAweDZmLCAweDc3LCAweDZlLCAweDIwLCAweDYyLCAweDZmLCAweDZmLCAweDc0LCAweDZjLAotMHg2ZiwgMHg2MSwgMHg2NCwgMHg2NSwgMHg3MiwgMHgyMCwgMHg2MywgMHg2YywgMHg2MSwgMHg3MywgMHg3MywgMHgyMSwgMHgwYSwgMHgwMCwgMHg3NCwgMHg3OSwKLTB4NzAsIDB4NjUsIDB4M2QsIDB4MjUsIDB4NzgsIDB4MGEsIDB4MDAsIDB4NjQsIDB4NjEsIDB4NzQsIDB4NjEsIDB4M2QsIDB4MjUsIDB4NzgsIDB4MGEsIDB4MDAsCi0weDcwLCAweDYxLCAweDcyLCAweDYxLCAweDZkLCAweDNkLCAweDI1LCAweDc4LCAweDBhLCAweDAwLCAweDU1LCAweDZlLCAweDZiLCAweDZlLCAweDZmLCAweDc3LAotMHg2ZSwgMHgyMCwgMHg2NiwgMHg2OSwgMHg3MiwgMHg2ZCwgMHg3NywgMHg2MSwgMHg3MiwgMHg2NSwgMHgyMCwgMHg3NCwgMHg3OSwgMHg3MCwgMHg2NSwgMHgzYSwKLTB4MjAsIDB4MjUsIDB4NzMsIDB4MGEsIDB4MDAsIDB4NDYsIDB4NjksIDB4NzIsIDB4NmQsIDB4NzcsIDB4NjEsIDB4NzIsIDB4NjUsIDB4MjAsIDB4NzQsIDB4NzksCi0weDcwLCAweDY1LCAweDNhLCAweDAwLCAweDIwLCAweDRjLCAweDY5LCAweDZlLCAweDc1LCAweDc4LCAweDQyLCAweDQ5LCAweDRmLCAweDUzLCAweDAwLCAweDIwLAotMHg1MCwgMHg0MywgMHg0MiwgMHg0OSwgMHg0ZiwgMHg1MywgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDEsIDB4N2EsIDB4NTIsIDB4MDAsIDB4MDEsIDB4N2MsIDB4MDgsIDB4MDEsIDB4MWIsIDB4MGMsIDB4MDQsIDB4MDQsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MDAsCi0weDFjLCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDAwLCAweDAwLCAweDAwLCAweGUyLCAweGYxLCAweGZmLCAweGZmLCAweDIzLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0NCwgMHgwZCwgMHgwNSwgMHg1ZCwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwKLTB4MjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTUsIDB4ZjEsIDB4ZmYsIDB4ZmYsIDB4MWIsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQ1LCAweDBkLCAweDA1LCAweDQxLCAweDgzLCAweDAzLCAweDUxLCAweGMzLCAweDQxLCAweGM1LAotMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgyYywgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkYywgMHhmMSwgMHhmZiwgMHhmZiwKLTB4OGEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDYsIDB4ODcsIDB4MDMsCi0weDg2LCAweDA0LCAweDgzLCAweDA1LCAweDAzLCAweDdkLCAweDAxLCAweGMzLCAweDQxLCAweGM2LCAweDQxLCAweGM3LCAweDQxLCAweGM1LCAweDBjLCAweDA0LAotMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzNiwgMHhmMywgMHhmZiwgMHhmZiwKLTB4NDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDQsIDB4MGQsIDB4MDUsIDB4NDIsIDB4ODYsIDB4MDMsCi0weDgzLCAweDA0LCAweDdkLCAweGMzLCAweDQxLCAweGM2LCAweDQxLCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDI4LCAweDAwLCAweDAwLCAweDAwLAotMHhiOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NSwgMHhmMywgMHhmZiwgMHhmZiwgMHg3YSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwKLTB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDMsIDB4ODcsIDB4MDMsIDB4ODYsIDB4MDQsIDB4ODMsIDB4MDUsIDB4MDIsIDB4NzAsIDB4YzMsIDB4NDEsCi0weGM2LCAweDQxLCAweGM3LCAweDQxLCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDI4LCAweDAwLCAweDAwLCAweDAwLCAweGU0LCAweDAwLCAweDAwLCAweDAwLAotMHhhMywgMHhmMywgMHhmZiwgMHhmZiwgMHg2NSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0NywgMHgwZCwKLTB4MDUsIDB4NDMsIDB4ODcsIDB4MDMsIDB4ODYsIDB4MDQsIDB4ODMsIDB4MDUsIDB4MDIsIDB4NTYsIDB4YzMsIDB4NDEsIDB4YzYsIDB4NDEsIDB4YzcsIDB4NDEsCi0weGM1LCAweDBjLCAweDA0LCAweDA0LCAweDI4LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAxLCAweDAwLCAweDAwLCAweGRjLCAweGYzLCAweGZmLCAweGZmLAotMHhjYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0MiwgMHgwZCwgMHgwNSwgMHg0NiwgMHg4NywgMHgwMywKLTB4ODYsIDB4MDQsIDB4ODMsIDB4MDUsIDB4MDIsIDB4YmYsIDB4YzMsIDB4NDEsIDB4YzYsIDB4NDEsIDB4YzcsIDB4NDEsIDB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsCi0weDFjLCAweDAwLCAweDAwLCAweDAwLCAweDNjLCAweDAxLCAweDAwLCAweDAwLCAweDdjLCAweGY0LCAweGZmLCAweGZmLCAweDA5LCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0MiwgMHgwZCwgMHgwNSwgMHg0NSwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwKLTB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4NjUsIDB4ZjQsIDB4ZmYsIDB4ZmYsIDB4MGEsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQyLCAweDBkLCAweDA1LCAweDQ2LCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLAotMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwgMHg3YywgMHgwMSwgMHgwMCwgMHgwMCwgMHg0ZiwgMHhmNCwgMHhmZiwgMHhmZiwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDUsIDB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsIDB4MDAsIDB4MDAsCi0weDFjLCAweDAwLCAweDAwLCAweDAwLCAweDljLCAweDAxLCAweDAwLCAweDAwLCAweDM4LCAweGY0LCAweGZmLCAweGZmLCAweDBjLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0MiwgMHgwZCwgMHgwNSwgMHg0OCwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwKLTB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YmMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MjQsIDB4ZjQsIDB4ZmYsIDB4ZmYsIDB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQyLCAweDBkLCAweDA1LCAweDQ5LCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLAotMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwgMHhkYywgMHgwMSwgMHgwMCwgMHgwMCwgMHgxMSwgMHhmNCwgMHhmZiwgMHhmZiwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDgsIDB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsIDB4MDAsIDB4MDAsCi0weDFjLCAweDAwLCAweDAwLCAweDAwLCAweGZjLCAweDAxLCAweDAwLCAweDAwLCAweGZkLCAweGYzLCAweGZmLCAweGZmLCAweDE4LCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0NCwgMHgwZCwgMHgwNSwgMHg1MiwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwKLTB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZjUsIDB4ZjMsIDB4ZmYsIDB4ZmYsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQ0LCAweDBkLCAweDA1LCAweDUyLCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLAotMHgyMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYywgMHgwMiwgMHgwMCwgMHgwMCwgMHhlZCwgMHhmMywgMHhmZiwgMHhmZiwgMHgxZCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDQsIDB4MGQsIDB4MDUsIDB4NDEsIDB4ODMsIDB4MDMsIDB4NTUsIDB4YzMsIDB4NDEsIDB4YzUsCi0weDBjLCAweDA0LCAweDA0LCAweDAwLCAweDFjLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweDAyLCAweDAwLCAweDAwLCAweGU2LCAweGYzLCAweGZmLCAweGZmLAotMHgyNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0NCwgMHgwZCwgMHgwNSwgMHg1ZiwgMHhjNSwgMHgwYywKLTB4MDQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZWIsIDB4ZjMsIDB4ZmYsIDB4ZmYsCi0weDViLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQyLCAweDBkLCAweDA1LCAweDQzLCAweDg3LCAweDAzLAotMHg4NiwgMHgwNCwgMHg4MywgMHgwNSwgMHgwMiwgMHg1MSwgMHhjMywgMHg0MSwgMHhjNiwgMHg0MSwgMHhjNywgMHg0MSwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwKLTB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YWMsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MWEsIDB4ZjQsIDB4ZmYsIDB4ZmYsIDB4MWIsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQyLCAweDBkLCAweDA1LCAweDU2LCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLAotMHgyYywgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYywgMHgwMiwgMHgwMCwgMHgwMCwgMHgxNSwgMHhmNCwgMHhmZiwgMHhmZiwgMHgzNSwgMHgwMSwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDMsIDB4ODcsIDB4MDMsIDB4ODYsIDB4MDQsIDB4ODMsIDB4MDUsCi0weDAzLCAweDJiLCAweDAxLCAweGMzLCAweDQxLCAweGM2LCAweDQxLCAweGM3LCAweDQxLCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLCAweDAwLAotMHgyYywgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYywgMHgwMiwgMHgwMCwgMHgwMCwgMHgxYSwgMHhmNSwgMHhmZiwgMHhmZiwgMHhhZSwgMHgwNiwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDYsIDB4ODcsIDB4MDMsIDB4ODYsIDB4MDQsIDB4ODMsIDB4MDUsCi0weDAzLCAweGExLCAweDA2LCAweGMzLCAweDQxLCAweGM2LCAweDQxLCAweGM3LCAweDQxLCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NiwgMHgxMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgwOCwgMHgwMSwgMHgwMCwKLTB4YzAsIDB4NTUsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0weGE1LCAweGE1LCAweGE1LCAweGE1LCAweDcwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweDAwLCAweDAwLAotMHg4YywgMHg0MiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4NGYsIDB4NGYsIDB4NTQsIDB4NWYsIDB4NDksIDB4NGQsIDB4NDEsCi0weDQ3LCAweDQ1LCAweDNkLCAweDY4LCAweDY1LCAweDYxLCAweDY0LCAweDJlLCAweDUzLCAweDIwLCAweDYzLCAweDZmLCAweDZlLCAweDczLCAweDZmLCAweDZjLAotMHg2NSwgMHgzZCwgMHg3NCwgMHg3NCwgMHg3OSwgMHg1MywgMHgzMCwgMHgyMCwgMHg2OSwgMHg3MCwgMHgzZCwgMHg2NCwgMHg2OCwgMHg2MywgMHg3MCwgMHgyMCwKLTB4NzIsIDB4NmYsIDB4NmYsIDB4NzQsIDB4M2QsIDB4MmYsIDB4NjQsIDB4NjUsIDB4NzYsIDB4MmYsIDB4NmUsIDB4NjYsIDB4NzMsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0weDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2VsZmltYWdlL21rZWxmaW1hZ2UvY3Jvc3MtY29tcGlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtlbGZpbWFnZS9ta2VsZmltYWdlL2Nyb3NzLWNvbXBpbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExNjJlYjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2VsZmltYWdlL21rZWxmaW1hZ2UvY3Jvc3MtY29tcGlsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi1Gcm9tIGRjMjcxMjExOWQ2ODMyZTI0YTliN2JlZDllZDRjZTVhZTAzY2UwYTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAxNCBKdWwgMjAxMiAxNDoxNDowNyAtMDcwMAotU3ViamVjdDogW1BBVENIXSBta2VsZmltYWdlOiBGaXggY3Jvc3MgYnVpbGQKLQotTWFrZSB0aGUgdG9vbCB0byBiZSBjcm9zcyBjb21waWxhYmxlLCBieSBzZXBhcmF0aW5nIHRoZSB2YXJpYWJsZXMgZm9yIGJ1aWxkCi10b29scyBmcm9tIHRob3NlIGZvciB0aGUgdGFyZ2V0LiBBbHNvIG1vZGlmaWVkIHRvIG9iZXkgTERGTEFHUy4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0tLS0KLSBNYWtlZmlsZS5jb25mLmluICAgIHwgMyArKysKLSBjb25maWd1cmUuYWMgICAgICAgIHwgNyArKysrKy0tCi0gbGludXgtaTM4Ni9NYWtlZmlsZSB8IDIgKy0KLSBsaW51eC1pYTY0L01ha2VmaWxlIHwgMiArLQotIG1haW4vTWFrZWZpbGUgICAgICAgfCA0ICsrLS0KLSA1IGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5jb25mLmluIGIvTWFrZWZpbGUuY29uZi5pbgotaW5kZXggNDY0NWU0NC4uZGNiNmNmMiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmNvbmYuaW4KLSsrKyBiL01ha2VmaWxlLmNvbmYuaW4KLUBAIC0xNyw2ICsxNyw5IEBAIERFRlM9QERFRlNACi0gTElCUz1ATElCU0AKLSBIT1NUX0NDPUBIT1NUX0NDQAotIEhPU1RfQ0ZMQUdTPUBIT1NUX0NGTEFHU0AgICQoREVGUykKLStDQz1AQ0NACi0rQ0ZMQUdTPUBDRkxBR1NAICQoREVGUykKLStMREZMQUdTPUBMREZMQUdTQAotCi0gSTM4Nl9DQyAgICAgPUBJMzg2X0NDQAotIEkzODZfTEQgICAgID1ASTM4Nl9MREAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDY1MmI5NTIuLjBmMmFjNzIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTcwLDYgKzcwLDkgQEAgaWYgdGVzdCAid2l0aF9kZWZhdWx0IiAhPSBubyA7IHRoZW4KLSAJCUFDX01TR19FUlJPUihbY2Mgbm90IGZvdW5kXSkKLSAJZmkKLSAJZXZhbCAiJHt3aXRoX2RlZmF1bHR9X0NDPSckQ0MnIgotKwlpZiB0ZXN0ICJ4JEhPU1RfQ0MiID0gJ3gnOyB0aGVuCi0rCQlBQ19DSEVDS19QUk9HKFtIT1NUX0NDXSwgWyRDQ10sIFskQ0NdLCBbZ2NjXSwgWyRQQVRIXSkKLSsJZmkKLSAJQUNfUFJPR19DUFAKLSAJaWYgdGVzdCAiJENQUCIgPSBubzsgdGhlbgotIAkJQUNfTVNHX0VSUk9SKFtjcHAgbm90IGZvdW5kXSkKLUBAIC0xNzIsOCArMTc1LDggQEAgZmkKLSAKLSBkbmwgLS0tT3V0cHV0IHZhcmlhYmxlcy4uLgotIAotLUhPU1RfQ0M9JENDCi0tSE9TVF9DRkxBR1M9IiRIT1NUX0NGTEFHUyAtTzIgLVdhbGwgXCQoSE9TVF9DUFBGTEFHUykiCi0rQ0ZMQUdTPSIke0NGTEFHUzotLU8yfSAtV2FsbCBcJChDUFBGTEFHUykiCi0rSE9TVF9DRkxBR1M9IiR7SE9TVF9DRkxBR1M6LS1PMn0gLVdhbGwgXCQoSE9TVF9DUFBGTEFHUykiCi0gCi0gZG5sIFRPRE86IGZpZ3VyZSBvdXQgaG93IHRvIHNldCB0aGVzZSBhcHByb3ByaWF0ZWx5IGZvciBjb21waWxlcnMgb3RoZXIgdGhhbiBnY2MKLSBJMzg2X0NGTEFHUz0iJEkzODZfQ0ZMQUdTIC1PcyAtZmZyZWVzdGFuZGluZyAtV2FsbCAtVyAtV25vLWZvcm1hdCBcJChJMzg2X0NQUEZMQUdTKSIKLWRpZmYgLS1naXQgYS9saW51eC1pMzg2L01ha2VmaWxlIGIvbGludXgtaTM4Ni9NYWtlZmlsZQotaW5kZXggNTE1MzFkNi4uN2U4YWEzYyAxMDA2NDQKLS0tLSBhL2xpbnV4LWkzODYvTWFrZWZpbGUKLSsrKyBiL2xpbnV4LWkzODYvTWFrZWZpbGUKLUBAIC00LDcgKzQsNyBAQCBMSTM4Nl9ERVA9TWFrZWZpbGUgTWFrZWZpbGUuY29uZiAkKExJMzg2X0RJUikvTWFrZWZpbGUKLSAKLSAkKExJMzg2X09CSikvbWtlbGYtbGludXgtaTM4Ni5vOiAkKExJMzg2X0RJUikvbWtlbGYtbGludXgtaTM4Ni5jICQoTEkzODZfRElSKS9jb252ZXJ0LmJpbi5jICQoTEkzODZfREVQKQotIAkkKE1LRElSKSAtcCAkKEBEKQotLQkkKEhPU1RfQ0MpICQoSE9TVF9DRkxBR1MpIC1jIC1nICQ8IC1vICRACi0rCSQoQ0MpICQoQ0ZMQUdTKSAtYyAtZyAkPCAtbyAkQAotIAotIAotIGlmZGVmIEkzODZfQ0MKLWRpZmYgLS1naXQgYS9saW51eC1pYTY0L01ha2VmaWxlIGIvbGludXgtaWE2NC9NYWtlZmlsZQotaW5kZXggMzhmNWQ4Yy4uNWRmODg3MCAxMDA2NDQKLS0tLSBhL2xpbnV4LWlhNjQvTWFrZWZpbGUKLSsrKyBiL2xpbnV4LWlhNjQvTWFrZWZpbGUKLUBAIC00LDcgKzQsNyBAQCBMSUE2NF9ERVA9TWFrZWZpbGUgTWFrZWZpbGUuY29uZiAkKExJQTY0X0RJUikvTWFrZWZpbGUKLSAKLSAkKExJQTY0X09CSikvbWtlbGYtbGludXgtaWE2NC5vOiAkKExJQTY0X0RJUikvbWtlbGYtbGludXgtaWE2NC5jICQoTElBNjRfRElSKS9jb252ZXJ0LmJpbi5jICQoTElBNjRfREVQKQotIAkkKE1LRElSKSAtcCAkKEBEKQotLQkkKEhPU1RfQ0MpICQoSE9TVF9DRkxBR1MpIC1jIC1nICQ8IC1vICRACi0rCSQoQ0MpICQoQ0ZMQUdTKSAtYyAtZyAkPCAtbyAkQAotIAotIGlmZGVmIElBNjRfQ0MKLSAKLWRpZmYgLS1naXQgYS9tYWluL01ha2VmaWxlIGIvbWFpbi9NYWtlZmlsZQotaW5kZXggNDAzYjBhNC4uY2Q1MzYxMyAxMDA2NDQKLS0tLSBhL21haW4vTWFrZWZpbGUKLSsrKyBiL21haW4vTWFrZWZpbGUKLUBAIC00LDExICs0LDExIEBAIE1LRUxGX09CSlM9JChPQkpESVIpL21haW4vbWtlbGZJbWFnZS5vIFwKLSAKLSAkKE9CSkRJUikvc2Jpbi9ta2VsZkltYWdlOiAkKE1LRUxGX09CSlMpICQoREVQUykKLSAJJChNS0RJUikgLXAgJChARCkKLS0JJChIT1NUX0NDKSAkKEhPU1RfQ0ZMQUdTKSAkKE1LRUxGX09CSlMpIC1vICRAICQoTElCUykKLSsJJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgJChNS0VMRl9PQkpTKSAtbyAkQCAkKExJQlMpCi0gCi0gJChPQkpESVIpL21haW4vbWtlbGZJbWFnZS5vOiBtYWluL21rZWxmSW1hZ2UuYyBpbmNsdWRlL21rZWxmSW1hZ2UuaCAkKERFUFMpCi0gCSQoTUtESVIpIC1wICQoQEQpCi0tCSQoSE9TVF9DQykgJChIT1NUX0NGTEFHUykgLWMgJDwgLW8gJEAKLSsJJChDQykgJChDRkxBR1MpIC1jICQ8IC1vICRACi0gCi0gJChPQkpESVIpL21hbi9tYW44L21rZWxmSW1hZ2UuODogbWFpbi9ta2VsZkltYWdlLm1hbgotIAkkKE1LRElSKSAtcCAkKEBEKQotLS0KLTIuOC4wCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rZWxmaW1hZ2UvbWtlbGZpbWFnZS9maXgtbWFrZWZpbGUtdG8tZmluZC1saWJ6LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2VsZmltYWdlL21rZWxmaW1hZ2UvZml4LW1ha2VmaWxlLXRvLWZpbmQtbGliei5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU1NDc1NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rZWxmaW1hZ2UvbWtlbGZpbWFnZS9maXgtbWFrZWZpbGUtdG8tZmluZC1saWJ6LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotTGV0IG1ha2VmaWxlIGZpbmQgbGlieiBhbmQgemxpYi5oIGJ5IENGTEFHUyBhbmQgTERGTEFHUy4KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBjb25maWd1cmUuYWMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAwZjJhYzcyLi5mOTA5OWEyIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02Miw3ICs2Miw3IEBAIEFDX0NIRUNLX1BST0coW1JQTV0sICAgcnBtLCAgIHJwbSwgICBbXSwgWyRQQVRIXSkKLSBBQ19DSEVDS19QUk9HKFtTRURdLCAgIHNlZCwgICBzZWQsICAgW10sIFskUEFUSF0pCi0gQUNfQ0hFQ0tfUFJPRyhbRklORF0sICBmaW5kLCAgZmluZCwgIFtdLCBbJFBBVEhdKQotIAotLUFDX0NIRUNLX0hFQURFUih6bGliLmgsIEFDX0NIRUNLX0xJQih6LCBpbmZsYXRlSW5pdF8sIFtBQ19ERUZJTkUoSEFWRV9aTElCX0gsIDEpIExJQlM9IiRMSUJTIC1seiJdKSkKLStBQ19DSEVDS19IRUFERVIoemxpYi5oLCBBQ19DSEVDS19MSUIoeiwgaW5mbGF0ZUluaXRfLCBbQUNfREVGSU5FKEhBVkVfWkxJQl9ILCAxKSBMSUJTPSIkTElCUyAkTERGTEFHUyAtbHoiXSkpCi0gCi0gZG5sIEZpbmQgdGhlIGRlZmF1bHQgcHJvZ3JhbXMKLSBpZiB0ZXN0ICJ3aXRoX2RlZmF1bHQiICE9IG5vIDsgdGhlbgotQEAgLTE3Niw3ICsxNzYsNyBAQCBmaQotIGRubCAtLS1PdXRwdXQgdmFyaWFibGVzLi4uCi0gCi0gQ0ZMQUdTPSIke0NGTEFHUzotLU8yfSAtV2FsbCBcJChDUFBGTEFHUykiCi0tSE9TVF9DRkxBR1M9IiR7SE9TVF9DRkxBR1M6LS1PMn0gLVdhbGwgXCQoSE9TVF9DUFBGTEFHUykiCi0rSE9TVF9DRkxBR1M9IiR7SE9TVF9DRkxBR1M6LS1PMn0gLVdhbGwgXCQoSE9TVF9DUFBGTEFHUykgJENGTEFHUyIKLSAKLSBkbmwgVE9ETzogZmlndXJlIG91dCBob3cgdG8gc2V0IHRoZXNlIGFwcHJvcHJpYXRlbHkgZm9yIGNvbXBpbGVycyBvdGhlciB0aGFuIGdjYwotIEkzODZfQ0ZMQUdTPSIkSTM4Nl9DRkxBR1MgLU9zIC1mZnJlZXN0YW5kaW5nIC1XYWxsIC1XIC1Xbm8tZm9ybWF0IFwkKEkzODZfQ1BQRkxBR1MpIgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rZWxmaW1hZ2UvbWtlbGZpbWFnZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rZWxmaW1hZ2UvbWtlbGZpbWFnZV9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzMGZhN2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2VsZmltYWdlL21rZWxmaW1hZ2VfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotU1VNTUFSWSA9ICJVdGlsaXR5IGZvciBjcmVhdGluZyBFTEYgYm9vdCBpbWFnZXMgZm9yIEVMRi1iYXNlZCBMaW51eCBrZXJuZWwgaW1hZ2VzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5jb3JlYm9vdC5vcmcvTWtlbGZpbWFnZSIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWE1YmVkMmY2MGQzNTc2MThjYTE2MWFkNTM5ZjdjMGEiCi0KLVNSQ1JFViA9ICI2ODZhNDhhMzM5YjMyMDAxODRjMjdlN2Y5OGQ0YzAzMTgwYjJiZTZjIgotUFYgPSAiNC4wK2dpdCR7U1JDUFZ9IgotUkVDSVBFX05PX1VQREFURV9SRUFTT04gPSAibWtlbGZpbWFnZSBoYXMgYmVlbiByZW1vdmVkIGluIGNvcmVib290IDQuMSByZWxlYXNlOiBcCi1odHRwOi8vcmV2aWV3LmNvcmVib290Lm9yZy9naXR3ZWI/cD1jb3JlYm9vdC5naXQ7YT1jb21taXQ7aD0zNGZjNGFiODBiNTA3NzM5ZTI1ODBkNDkwZGZmNjdmY2ZkZGUxMWVhIgotCi0KLURFUEVORFMgKz0gInpsaWIiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vcmV2aWV3LmNvcmVib290Lm9yZy9wL2NvcmVib290O3Byb3RvY29sPWh0dHAgXAotICAgICAgICAgICBmaWxlOi8vY3Jvc3MtY29tcGlsZS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgXAotICAgICAgICAgICBmaWxlOi8vZml4LW1ha2VmaWxlLXRvLWZpbmQtbGliei5wYXRjaCAgIFwKLSAgICAgICAgICAgZmlsZTovL2NvbnZlcnQuYmluLmMgXAotIgotCi1DTEVBTkJST0tFTiA9ICIxIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0L3V0aWwvbWtlbGZJbWFnZSIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gIlwKLSAgICBIT1NUX0NDPScke0JVSUxEX0NDfScgXAotICAgIEhPU1RfQ0ZMQUdTPScke0JVSUxEX0NGTEFHU30nIFwKLSAgICBIT1NUX0NQUEZMQUdTPScke0JVSUxEX0NQUEZMQUdTfScgXAotICAgIEkzODZfQ0ZMQUdTPSctZm5vLXN0YWNrLXByb3RlY3RvcicgXAotICAgIElBNjRfQ0ZMQUdTPSctZm5vLXN0YWNrLXByb3RlY3RvcicgXAotIgotRVhUUkFfT0VDT05GX2FwcGVuZF94ODYtNjQgPSAiIC0td2l0aC1pMzg2PSR7SE9TVF9TWVN9IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKLQotZG9fY29uZmlndXJlX3ByZXBlbmQtY2xhc3MtbmF0aXZlKCkgewotCWNwICR7V09SS0RJUn0vY29udmVydC5iaW4uYyAke1N9L2xpbnV4LWkzODYvCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCXJtZGlyICR7RH0ke2RhdGFkaXJ9L21rZWxmSW1hZ2UvZWxmMzItaTM4NgotCXJtZGlyICR7RH0ke2RhdGFkaXJ9L21rZWxmSW1hZ2UKLQljaG93biByb290OnJvb3QgJHtEfS8ke3NiaW5kaXJ9L21rZWxmSW1hZ2UKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rbGlicy9maWxlcy9hdm9pZC1mYWlsdXJlLW9uLXN5bWJvbC1wcm92aWRlZC1ieS1hcHBsaWNhdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtsaWJzL2ZpbGVzL2F2b2lkLWZhaWx1cmUtb24tc3ltYm9sLXByb3ZpZGVkLWJ5LWFwcGxpY2F0aW9uLnBhdGNoCmluZGV4IDdkNmQ2MmUuLjE3ZDlhZjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtsaWJzL2ZpbGVzL2F2b2lkLWZhaWx1cmUtb24tc3ltYm9sLXByb3ZpZGVkLWJ5LWFwcGxpY2F0aW9uLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtsaWJzL2ZpbGVzL2F2b2lkLWZhaWx1cmUtb24tc3ltYm9sLXByb3ZpZGVkLWJ5LWFwcGxpY2F0aW9uLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBmMTcyMTAxMTMwNjA0ZTRhOWVmYTU3NDZmNGQ4ZDMwZGU5OWEwZmRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkY2I0NTI1Njk3MGIxNWI2NzJkMDAwNDUzMzgyNmM5NDA4MzM1NmU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogWXVhbmppZSBIdWFuZyA8eXVhbmppZS5odWFuZ0B3aW5kcml2ZXIuY29tPgogRGF0ZTogRnJpLCAxNyBBcHIgMjAxNSAxNDo0ODoyMCArMDgwMAotU3ViamVjdDogW1BBVENIXSBhdm9pZCBmYWlsdXJlIG9uIHN5bWJvbCBwcm92aWRlZCBieSBhcHBsaWNhdGlvbgorU3ViamVjdDogW1BBVENIIDQvNl0gYXZvaWQgZmFpbHVyZSBvbiBzeW1ib2wgcHJvdmlkZWQgYnkgYXBwbGljYXRpb24KIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKQEAgLTEzLDEyICsxMywxMyBAQAogb2Ygc3ltYm9scy4KIAogU2lnbmVkLW9mZi1ieTogWXVhbmppZSBIdWFuZyA8eXVhbmppZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorCiAtLS0KICBzcmMvbWtsaWJzIHwgMjggKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL21rbGlicyBiL3NyYy9ta2xpYnMKLWluZGV4IGM1NjE0ZWEuLmIwZDkwMzQgMTAwNzU1CitpbmRleCBhMzUzM2MwLi42NmI3YTA5IDEwMDc1NQogLS0tIGEvc3JjL21rbGlicwogKysrIGIvc3JjL21rbGlicwogQEAgLTEzMyw5ICsxMzMsOSBAQCBjbGFzcyBTeW1ib2wob2JqZWN0KToKQEAgLTMxLDkgKzMyLDkgQEAKIC0gICAgICAgIHNlbGYud2Vhaywgc2VsZi5saWJyYXJ5ID0gd2VhaywgbGlicmFyeQogKyAgICAgICAgc2VsZi53ZWFrLCBzZWxmLmxpYnJhcnksIHNlbGYub2JqZWN0ID0gd2VhaywgbGlicmFyeSwgb2JqZWN0CiAgCi0gIyBSZXR1cm4gdW5kZWZpbmVkIHN5bWJvbHMgaW4gYW4gb2JqZWN0IGFzIGEgc2V0IG9mIHR1cGxlcyAobmFtZSwgd2Vha25lc3MpCi0gZGVmIHVuZGVmaW5lZF9zeW1ib2xzKG9iaik6Ci1AQCAtMTQ0LDYgKzE0NCwxMSBAQCBkZWYgdW5kZWZpbmVkX3N5bWJvbHMob2JqKToKKyBkZWYgc3ltYm9sX2lzX2JsYWNrbGlzdGVkKG5hbWUpOgorICAgICAjIFRoZSBBUk0gRW1iZWRkZWQgQUJJIHNwZWMgc3RhdGVzIHN5bWJvbHMgdW5kZXIgdGhpcyBuYW1lc3BhY2UgYXMKK0BAIC0xNTIsNiArMTUyLDExIEBAIGRlZiB1bmRlZmluZWRfc3ltYm9scyhvYmopOgogIAogICAgICBvdXRwdXQgPSBjb21tYW5kKCJta2xpYnMtcmVhZGVsZiIsICItLXByaW50LXN5bWJvbHMtdW5kZWZpbmVkIiwgb2JqKQogIApAQCAtNDUsNyArNDYsNyBAQAogICAgICByZXN1bHQgPSBbXQogICAgICBmb3IgbGluZSBpbiBvdXRwdXQ6CiAgICAgICAgICBuYW1lLCB3ZWFrX3N0cmluZywgdmVyc2lvbl9zdHJpbmcsIGxpYnJhcnlfc3RyaW5nID0gbGluZS5zcGxpdCgpWzo0XQotQEAgLTE2MCw3ICsxNjUsNyBAQCBkZWYgdW5kZWZpbmVkX3N5bWJvbHMob2JqKToKK0BAIC0xNzEsNyArMTc2LDcgQEAgZGVmIHVuZGVmaW5lZF9zeW1ib2xzKG9iaik6CiAgICAgICAgICBpZiBsaWJyYXJ5X3N0cmluZy5sb3dlcigpICE9ICdub25lJzoKICAgICAgICAgICAgICBsaWJyYXJ5ID0gbGlicmFyeV9zdHJpbmcKICAKQEAgLTU0LDcgKzU1LDcgQEAKICAKICAgICAgcmV0dXJuIHJlc3VsdAogIAotQEAgLTQ5NSwxMiArNTAwLDEzIEBAIHdoaWxlIDE6CitAQCAtNDk4LDEyICs1MDMsMTMgQEAgd2hpbGUgMToKICAgICAgICAgICAgICAgICAgICAgICBhbmQgcmUuc2VhcmNoKCJecHNfIiwgc3RyKHN5bWJvbCkpKQogICAgICAgICAgICAgICAgICBhbmQgbm90IChyZS5zZWFyY2goImxkLWxpbnV4LnNvLjMkIiwgc3RyKHN5bWJvbCkpKQogICAgICAgICAgICAgICAgICBhbmQgbm90IChyZS5zZWFyY2goIl5fX2dudV9sb2NhbF9ncCIsIHN0cihzeW1ib2wpKSkpOgpAQCAtNjgsOCArNjksOCBAQAogKyAgICBwcmVzZW50X3N5bWJvbF9wcm9ncyA9IHt9CiAgICAgIGNoZWNrZWRfbGlicyA9IHNtYWxsX2xpYnMKICAgICAgY2hlY2tlZF9saWJzLmV4dGVuZChhdmFpbGFibGVfbGlicykKLSAgICAgY2hlY2tlZF9saWJzLmFwcGVuZChsZGxpYikKLUBAIC01MTAsNiArNTE2LDEyIEBAIHdoaWxlIDE6CisgICAgIGNoZWNrZWRfbGlicy5hcHBlbmQoc3lzcm9vdCArIGxkbGliKQorQEAgLTUxMyw2ICs1MTksMTIgQEAgd2hpbGUgMToKICAgICAgICAgICAgICBuYW1lcyA9IHN5bWJvbC5iYXNlX25hbWVzKCkKICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBuYW1lczoKICAgICAgICAgICAgICAgICAgcHJlc2VudF9zeW1ib2xzW25hbWVdID0gc3ltYm9sCkBAIC04Miw3ICs4Myw3IEBACiAgCiAgICAgICMgYXJlIHdlIGZpbmlzaGVkPwogICAgICBudW1fdW5yZXNvbHZlZCA9IDAKLUBAIC01NjUsNiArNTc3LDE0IEBAIHdoaWxlIDE6CitAQCAtNTY4LDYgKzU4MCwxNCBAQCB3aGlsZSAxOgogICAgICBmb3IgbmFtZSBpbiBuZWVkZWRfc3ltYm9sczoKICAgICAgICAgIGlmIG5vdCBuYW1lIGluIHN5bWJvbF9wcm92aWRlcjoKICAgICAgICAgICAgICBpZiBub3QgbmVlZGVkX3N5bWJvbHNbbmFtZV0ud2VhazoKQEAgLTk4LDUgKzk5LDUgQEAKICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgbGliID0gc3ltYm9sX3Byb3ZpZGVyW25hbWVdCiAtLSAKLTEuOC41LjIuMjMzLmc5MzJmN2U0CisyLjE2LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tbWMvbW1jLXV0aWxzLzAwMDEtbHNtbWMtcmVwbGFjZS1zdHJuY3B5LXdpdGgtbWVtbW92ZS1vbi1vdmVybGFwcGluZy1tZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbW1jL21tYy11dGlscy8wMDAxLWxzbW1jLXJlcGxhY2Utc3RybmNweS13aXRoLW1lbW1vdmUtb24tb3ZlcmxhcHBpbmctbWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjJlMjVmZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbW1jL21tYy11dGlscy8wMDAxLWxzbW1jLXJlcGxhY2Utc3RybmNweS13aXRoLW1lbW1vdmUtb24tb3ZlcmxhcHBpbmctbWUucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSAxNzVhYzBmMzYyYmY2MTIxYzM1MzdlMmYxNzYwYWQ0MWM4ZjgxMzY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjkgTWFyIDIwMTggMDE6MDQ6NTcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbHNtbWM6IHJlcGxhY2Ugc3RybmNweSB3aXRoIG1lbW1vdmUgb24gb3ZlcmxhcHBpbmcgbWVtb3J5CisgY29weQorCitoZXJlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gYWRkcmVzc2VzIGFyZSBvdmVybGFwcGluZyBzbyB1c2luZyBtZW1tb3ZlIGlzCitnb2luZyB0byBiZSBtb3JlIGVmZmljaWVudC4KKworQWRkaXRpb25hbGx5LCB0aGUgYm91bmRlZCBzaXplIGZvciBjb3B5IGlzIG92ZXJmbG93aW5nIGZvciBmaXJzdCBjb3B5CisKK0luIGZ1bmN0aW9uICdzdHJuY3B5JywKKyAgICBpbmxpbmVkIGZyb20gJ3JlYWRfZmlsZScgYXQgbHNtbWMuYzozNTY6MzoKKy9tbnQvYS9vZS9idWlsZC90bXAvd29yay9jb3J0ZXhhN3QyaGYtbmVvbi12ZnB2NC1iZWMtbGludXgtZ251ZWFiaS9tbWMtdXRpbHMvMC4xLXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nX2ZvcnRpZmllZC5oOjEwNjoxMDogZXJyb3I6ICdfX2J1aWx0aW5fc3RybmNweScgYWNjZXNzaW5nIDQwOTYgYnl0ZXMgYXQgb2Zmc2V0cyAwIGFuZCAxIG92ZXJsYXBzIDQwOTUgYnl0ZXMgYXQgb2Zmc2V0IDEgWy1XZXJyb3I9cmVzdHJpY3RdCisgICByZXR1cm4gX19idWlsdGluX19fc3RybmNweV9jaGsgKF9fZGVzdCwgX19zcmMsIF9fbGVuLCBfX2JvcyAoX19kZXN0KSk7CisgICAgICAgICAgXn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gvMTAzMTQ3MjMvXQorIGxzbW1jLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9sc21tYy5jIGIvbHNtbWMuYworaW5kZXggYzRmYWEwMC4uYmNiODU0ZCAxMDA2NDQKKy0tLSBhL2xzbW1jLmMKKysrKyBiL2xzbW1jLmMKK0BAIC0zNTMsNyArMzUzLDcgQEAgY2hhciAqcmVhZF9maWxlKGNoYXIgKm5hbWUpCisgCQlsaW5lW3N0cmxlbihsaW5lKSAtIDFdID0gJ1wwJzsKKyAKKyAJd2hpbGUgKGlzc3BhY2UobGluZVswXSkpCistCQlzdHJuY3B5KCZsaW5lWzBdLCAmbGluZVsxXSwgc2l6ZW9mKGxpbmUpKTsKKysJCW1lbW1vdmUoJmxpbmVbMF0sICZsaW5lWzFdLCBzaXplb2YobGluZSktMSk7CisgCisgCXJldHVybiBzdHJkdXAobGluZSk7CisgfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tbWMvbW1jLXV0aWxzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbW1jL21tYy11dGlsc19naXQuYmIKaW5kZXggNTBhY2RiMS4uMzdhNDc1NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tbWMvbW1jLXV0aWxzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21tYy9tbWMtdXRpbHNfZ2l0LmJiCkBAIC00LDEyICs0LDE0IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9tbWMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1mYWUzMjc5MmUyMGY0ZDI3YWRlMWM1YTc2MmQxNmI3ZCIKIAogU1JDQlJBTkNIID89ICJtYXN0ZXIiCi1TUkNSRVYgPSAiMzdjODZlNjBjMDQ0MmZlZjU3MGI3NWNkODFhZWIxZGI0ZDBjYmFmZCIKK1NSQ1JFViA9ICJiNGZlMGM4YzBlNTdhNzRjMDE3NTVmYTkzNjI3MDNiNjBkN2VlNDlkIgogCiBQViA9ICIwLjEiCiAKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2NqYi9tbWMtdXRpbHMuZ2l0O2JyYW5jaD0ke1NSQ0JSQU5DSH0iCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2NqYi9tbWMtdXRpbHMuZ2l0O2JyYW5jaD0ke1NSQ0JSQU5DSH0gXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1sc21tYy1yZXBsYWNlLXN0cm5jcHktd2l0aC1tZW1tb3ZlLW9uLW92ZXJsYXBwaW5nLW1lLnBhdGNoIFwKKyAgICAgICAgICAgIgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdGQvbXRkLXV0aWxzLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmYzZjk4Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSA0ZGFiOWJlZDEwMzNmNzk3ZWY5YjQ4MmM3NzM0MmZlM2ZlMjZkMGJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgNiBPY3QgMjAxNSAyMzo1MTozNCArMDAwMAotU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgd2l0aCBtdXNsCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IERhdmlkIE9iZXJob2xsZW56ZXIgPGRhdmlkLm9iZXJob2xsZW56ZXJAc2lnbWEtc3Rhci5hdD4KLS0tLQotIGpmZnNYLXV0aWxzL21rZnMuamZmczIuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvamZmc1gtdXRpbHMvbWtmcy5qZmZzMi5jIGIvamZmc1gtdXRpbHMvbWtmcy5qZmZzMi5jCi1pbmRleCA1NDQ2YTE2Li5jYTVlMGQ1IDEwMDY0NAotLS0tIGEvamZmc1gtdXRpbHMvbWtmcy5qZmZzMi5jCi0rKysgYi9qZmZzWC11dGlscy9ta2ZzLmpmZnMyLmMKLUBAIC03Miw2ICs3Miw3IEBACi0gI2luY2x1ZGUgPGJ5dGVzd2FwLmg+Ci0gI2luY2x1ZGUgPGNyYzMyLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0rI2luY2x1ZGUgPGxpbWl0cy5oPgotIAotICNpbmNsdWRlICJyYnRyZWUuaCIKLSAjaW5jbHVkZSAiY29tbW9uLmgiCi0tLSAKLTIuNi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlscy8wMTAtZml4LXJwbWF0Y2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHMvMDEwLWZpeC1ycG1hdGNoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTNkZTZhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlscy8wMTAtZml4LXJwbWF0Y2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi1Gcm9tIDgyODM5YzNjMDM3MWNhMmExNjQzYTk5ZDdkMDFmNWJjMWM4NTBiMjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEYXZpZCBPYmVyaG9sbGVuemVyIDxkYXZpZC5vYmVyaG9sbGVuemVyQHNpZ21hLXN0YXIuYXQ+Ci1EYXRlOiBUaHUsIDIgTWFyIDIwMTcgMTE6NDA6MzYgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gUmVwbGFjZSBycG1hdGNoKCkgdXNhZ2Ugd2l0aCBjaGVja2luZyBmaXJzdCBjaGFyYWN0ZXIgb2YgbGluZQotCi1UaGlzIGlzIGJhc2VkIG9uIHRoZSBwYXRjaCBmcm9tIEtoZW0gUmFqIHVzZWQgYnkgb3BlbmVtYmVkZGVkLiBJbgotYWRkaXRpb24gdG8gdGhlIG9yaWdpbmFsIHBhdGNoLCB0aGlzIGFsc28gcmVtb3ZlcyB0aGUgZmFsbGJhY2sKLWltcGxlbWVudGF0aW9uIHRoYXQgd2FzIHByb3ZpZGVkIGZvciBDIGxpYnJhcmllcyB0aGF0IGRvbid0IGltcGxlbWVudAotcnBtYXRjaC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogRGF2aWQgT2JlcmhvbGxlbnplciA8ZGF2aWQub2JlcmhvbGxlbnplckBzaWdtYS1zdGFyLmF0PgotLS0tCi0gaW5jbHVkZS9jb21tb24uaCB8IDI1ICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29tbW9uLmggYi9pbmNsdWRlL2NvbW1vbi5oCi1pbmRleCBkMGM3MDZkLi5kNjA5MjU3IDEwMDY0NAotLS0tIGEvaW5jbHVkZS9jb21tb24uaAotKysrIGIvaW5jbHVkZS9jb21tb24uaAotQEAgLTEyOSwyMSArMTI5LDYgQEAgZXh0ZXJuICJDIiB7Ci0gCWZwcmludGYoc3RkZXJyLCAiJXM6IHdhcm5pbmchOiAiIGZtdCAiXG4iLCBQUk9HUkFNX05BTUUsICMjX19WQV9BUkdTX18pOyBcCi0gfSB3aGlsZSgwKQotIAotLS8qIHVDbGliYyB2ZXJzaW9ucyBiZWZvcmUgMC45LjM0IGFuZCBtdXNsIGRvbid0IGhhdmUgcnBtYXRjaCgpICovCi0tI2lmIGRlZmluZWQoX19VQ0xJQkNfXykgJiYgXAotLQkJKF9fVUNMSUJDX01BSk9SX18gPT0gMCAmJiBcCi0tCQkoX19VQ0xJQkNfTUlOT1JfXyA8IDkgfHwgXAotLQkJKF9fVUNMSUJDX01JTk9SX18gPT0gOSAmJiBfX1VDTElCQ19TVUJMRVZFTF9fIDwgMzQpKSkgfHwgXAotLQkhZGVmaW5lZChfX0dMSUJDX18pCi0tI3VuZGVmIHJwbWF0Y2gKLS0jZGVmaW5lIHJwbWF0Y2ggX19ycG1hdGNoCi0tc3RhdGljIGlubGluZSBpbnQgX19ycG1hdGNoKGNvbnN0IGNoYXIgKnJlc3ApCi0tewotLSAgICByZXR1cm4gKHJlc3BbMF0gPT0gJ3knIHx8IHJlc3BbMF0gPT0gJ1knKSA/IDEgOgotLQkocmVzcFswXSA9PSAnbicgfHwgcmVzcFswXSA9PSAnTicpID8gMCA6IC0xOwotLX0KLS0jZW5kaWYKLS0KLSAvKioKLSAgKiBwcm9tcHQgdGhlIHVzZXIgZm9yIGNvbmZpcm1hdGlvbgotICAqLwotQEAgLTE2NCwxMCArMTQ5LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBwcm9tcHQoY29uc3QgY2hhciAqbXNnLCBib29sIGRlZikKLSAJCX0KLSAKLSAJCWlmIChzdHJjbXAoIlxuIiwgbGluZSkgIT0gMCkgewotLQkJCXN3aXRjaCAocnBtYXRjaChsaW5lKSkgewotLQkJCWNhc2UgMDogcmV0ID0gZmFsc2U7IGJyZWFrOwotLQkJCWNhc2UgMTogcmV0ID0gdHJ1ZTsgYnJlYWs7Ci0tCQkJY2FzZSAtMToKLSsJCQlzd2l0Y2ggKGxpbmVbMF0pIHsKLSsJCQljYXNlICdOJzoKLSsJCQljYXNlICduJzogcmV0ID0gZmFsc2U7IGJyZWFrOwotKwkJCWNhc2UgJ1knOgotKwkJCWNhc2UgJ3knOiByZXQgPSB0cnVlOyBicmVhazsKLSsJCQlkZWZhdWx0OgotIAkJCQlwdXRzKCJ1bmtub3duIHJlc3BvbnNlOyBwbGVhc2UgdHJ5IGFnYWluIik7Ci0gCQkJCWNvbnRpbnVlOwotIAkJCX0KLS0tIAotMi42LjEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlscy9hZGQtZXhjbHVzaW9uLXRvLW1rZnMtamZmczItZ2l0LTIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHMvYWRkLWV4Y2x1c2lvbi10by1ta2ZzLWpmZnMyLWdpdC0yLnBhdGNoCmluZGV4IDBlMzc3NmEuLjVkODc0ZDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlscy9hZGQtZXhjbHVzaW9uLXRvLW1rZnMtamZmczItZ2l0LTIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdGQvbXRkLXV0aWxzL2FkZC1leGNsdXNpb24tdG8tbWtmcy1qZmZzMi1naXQtMi5wYXRjaApAQCAtMSw4ICsxLDEwIEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAotLS0tIC90bXAvbWtmcy5qZmZzMi5jCTIwMDktMDEtMTEgMTU6Mjg6NDEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2l0L2pmZnNYLXV0aWxzL21rZnMuamZmczIuYwkyMDA5LTAxLTExIDE1OjU5OjI5LjAwMDAwMDAwMCArMDEwMAotQEAgLTEwMCw2ICsxMDAsMTEgQEAKK0luZGV4OiBnaXQvamZmc1gtdXRpbHMvbWtmcy5qZmZzMi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvamZmc1gtdXRpbHMvbWtmcy5qZmZzMi5jCisrKysgZ2l0L2pmZnNYLXV0aWxzL21rZnMuamZmczIuYworQEAgLTEwMCw2ICsxMDAsMTEgQEAgc3RydWN0IGZpbGVzeXN0ZW1fZW50cnkgewogIAlzdHJ1Y3QgcmJfbm9kZSBoYXJkbGlua19yYjsKICB9OwogIApAQCAtMTQsNyArMTYsNyBAQAogIHN0cnVjdCByYl9yb290IGhhcmRsaW5rczsKICBzdGF0aWMgaW50IG91dF9mZCA9IC0xOwogIHN0YXRpYyBpbnQgaW5fZmQgPSAtMTsKLUBAIC00MDgsNyArNDEzLDcgQEAKK0BAIC0zMDksNyArMzE0LDcgQEAgc3RhdGljIHN0cnVjdCBmaWxlc3lzdGVtX2VudHJ5ICpyZWN1cnNpdgogIAljaGFyICpocGF0aCwgKnRwYXRoOwogIAlzdHJ1Y3QgZGlyZW50ICpkcCwgKipuYW1lbGlzdDsKICAJc3RydWN0IGZpbGVzeXN0ZW1fZW50cnkgKmVudHJ5OwpAQCAtMjIsOCArMjQsOCBAQAogKwlzdHJ1Y3QgaWdub3JlcGF0aF9lbnRyeSogZWxlbWVudCA9IGlnbm9yZXBhdGg7CiAgCiAgCWlmIChsc3RhdChob3N0cGF0aCwgJnNiKSkgewotIAkJcGVycm9yX21zZ19hbmRfZGllKCIlcyIsIGhvc3RwYXRoKTsKLUBAIC00MTcsNiArNDIyLDE1IEBACisgCQlzeXNfZXJybXNnX2RpZSgiJXMiLCBob3N0cGF0aCk7CitAQCAtMzE4LDYgKzMyMywxNSBAQCBzdGF0aWMgc3RydWN0IGZpbGVzeXN0ZW1fZW50cnkgKnJlY3Vyc2l2CiAgCWVudHJ5ID0gYWRkX2hvc3RfZmlsZXN5c3RlbV9lbnRyeSh0YXJnZXRwYXRoLCBob3N0cGF0aCwKICAJCQlzYi5zdF91aWQsIHNiLnN0X2dpZCwgc2Iuc3RfbW9kZSwgMCwgcGFyZW50KTsKICAKQEAgLTM4LDggKzQwLDggQEAKICsKICAJbiA9IHNjYW5kaXIoaG9zdHBhdGgsICZuYW1lbGlzdCwgMCwgYWxwaGFzb3J0KTsKICAJaWYgKG4gPCAwKSB7Ci0gCQlwZXJyb3JfbXNnX2FuZF9kaWUoIm9wZW5pbmcgZGlyZWN0b3J5ICVzIiwgaG9zdHBhdGgpOwotQEAgLTE0NTMsNiArMTQ2Nyw3IEBACisgCQlzeXNfZXJybXNnX2RpZSgib3BlbmluZyBkaXJlY3RvcnkgJXMiLCBob3N0cGF0aCk7CitAQCAtMTM1OSw2ICsxMzczLDcgQEAgc3RhdGljIHN0cnVjdCBvcHRpb24gbG9uZ19vcHRpb25zW10gPSB7CiAgCXsicm9vdCIsIDEsIE5VTEwsICdyJ30sCiAgCXsicGFnZXNpemUiLCAxLCBOVUxMLCAncyd9LAogIAl7ImVyYXNlYmxvY2siLCAxLCBOVUxMLCAnZSd9LApAQCAtNDcsMTUgKzQ5LDE1IEBACiAgCXsib3V0cHV0IiwgMSwgTlVMTCwgJ28nfSwKICAJeyJoZWxwIiwgMCwgTlVMTCwgJ2gnfSwKICAJeyJ2ZXJib3NlIiwgMCwgTlVMTCwgJ3YnfSwKLUBAIC0xNTAwLDYgKzE1MTUsNyBAQAotICIgIC1MLCAtLWxpc3QtY29tcHJlc3NvcnMgIFNob3cgdGhlIGxpc3Qgb2YgdGhlIGF2YWlhYmxlIGNvbXByZXNzb3JzXG4iCitAQCAtMTQwOSw2ICsxNDI0LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgaGVscHRleHRbXSA9CisgIiAgLUwsIC0tbGlzdC1jb21wcmVzc29ycyAgU2hvdyB0aGUgbGlzdCBvZiB0aGUgYXZhaWxhYmxlIGNvbXByZXNzb3JzXG4iCiAgIiAgLXQsIC0tdGVzdC1jb21wcmVzc2lvbiAgQ2FsbCBkZWNvbXByZXNzIGFuZCBjb21wYXJlIHdpdGggdGhlIG9yaWdpbmFsIChmb3IgdGVzdClcbiIKICAiICAtbiwgLS1uby1jbGVhbm1hcmtlcnMgICBEb24ndCBhZGQgYSBjbGVhbm1hcmtlciB0byBldmVyeSBlcmFzZWJsb2NrXG4iCiArIiAgLUksIC0taWdub3JlPVBBVEggICAgICAgSWdub3JlIHN1YiBkaXJlY3RvcnkgYW5kIGZpbGUgdHJlZSBiZWxvdyBQQVRIIHdoZW4gcmVjdXJzaW5nIG92ZXIgdGhlIGZpbGUgc3lzdGVtXG4iCiAgIiAgLW8sIC0tb3V0cHV0PUZJTEUgICAgICAgT3V0cHV0IHRvIEZJTEUgKGRlZmF1bHQ6IHN0ZG91dClcbiIKICAiICAtbCwgLS1saXR0bGUtZW5kaWFuICAgICBDcmVhdGUgYSBsaXR0bGUtZW5kaWFuIGZpbGVzeXN0ZW1cbiIKICAiICAtYiwgLS1iaWctZW5kaWFuICAgICAgICBDcmVhdGUgYSBiaWctZW5kaWFuIGZpbGVzeXN0ZW1cbiIKLUBAIC0xNjY2LDYgKzE2ODIsNyBAQAorQEAgLTE1NjYsNiArMTU4Miw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAJY2hhciAqY29tcHJfbmFtZSA9IE5VTEw7CiAgCWludCBjb21wcl9wcmlvciAgPSAtMTsKICAJaW50IHdhcm5fcGFnZV9zaXplID0gMDsKQEAgLTYzLDcgKzY1LDcgQEAKICAKICAJcGFnZV9zaXplID0gc3lzY29uZihfU0NfUEFHRVNJWkUpOwogIAlpZiAocGFnZV9zaXplIDwgMCkgLyogU3lzdGVtIGRvZXNuJ3Qga25vdyBzbyAuLi4gKi8KLUBAIC0xNjc2LDcgKzE2OTMsNyBAQAorQEAgLTE1NzYsNyArMTU5Myw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAJamZmczJfY29tcHJlc3NvcnNfaW5pdCgpOwogIAogIAl3aGlsZSAoKG9wdCA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsCkBAIC03Miw3ICs3NCw3IEBACiAgCXsKICAJCXN3aXRjaCAob3B0KSB7CiAgCQkJY2FzZSAnRCc6Ci1AQCAtMTcwMCw2ICsxNzE3LDI4IEBACitAQCAtMTYwMCw2ICsxNjE3LDI4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAJCQkJd2Fybl9wYWdlX3NpemUgPSAwOyAvKiBzZXQgYnkgdXNlciwgc28gZG9uJ3QgbmVlZCB0byB3YXJuICovCiAgCQkJCWJyZWFrOwogIApAQCAtMTAwLDQgKzEwMiw0IEBACiArCiAgCQkJY2FzZSAnbyc6CiAgCQkJCWlmIChvdXRfZmQgIT0gLTEpIHsKLSAJCQkJCWVycm9yX21zZ19hbmRfZGllKCJvdXRwdXQgZmlsZW5hbWUgc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlIik7CisgCQkJCQllcnJtc2dfZGllKCJvdXRwdXQgZmlsZW5hbWUgc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlIik7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHMvZml4LWFybXY3LW5lb24tYWxpZ25tZW50LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdGQvbXRkLXV0aWxzL2ZpeC1hcm12Ny1uZW9uLWFsaWdubWVudC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmZjNTk0Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHMvZml4LWFybXY3LW5lb24tYWxpZ25tZW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotRnJvbSA3ZDAyNmE4NTk0NmEwOGI4MTY3ZGNkNzkyZWE2NjYwYmY2YTQ5ZTA4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogWXVhbmppZSBIdWFuZyA8WXVhbmppZS5IdWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAyIE1hciAyMDE3IDEwOjQzOjU2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBhbGlnbm1lbnQgdHJhcCB0cmlnZ2VyZWQgYnkgTkVPTiBpbnN0cnVjdGlvbnMKLQotTkVPTiBpbnN0cnVjdGlvbiBWTEQxLjY0IHdhcyB1c2VkIHRvIGNvcHkgNjQgYml0cyBkYXRhIGFmdGVyIHR5cGUKLWNhc3RpbmcsIGFuZCB0aGV5IHdpbGwgdHJpZ2dlciBhbGlnbm1lbnQgdHJhcC4KLVRoaXMgcGF0Y2ggdXNlcyBtZW1jcHkgdG8gYXZvaWQgYWxpZ25tZW50IHByb2JsZW0uCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogWXVhbmppZSBIdWFuZyA8WXVhbmppZS5IdWFuZ0B3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogRGF2aWQgT2JlcmhvbGxlbnplciA8ZGF2aWQub2JlcmhvbGxlbnplckBzaWdtYS1zdGFyLmF0PgotLS0tCi0gdWJpZnMtdXRpbHMvbWtmcy51Ymlmcy9rZXkuaCB8IDE2ICsrKysrKysrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3ViaWZzLXV0aWxzL21rZnMudWJpZnMva2V5LmggYi91Ymlmcy11dGlscy9ta2ZzLnViaWZzL2tleS5oCi1pbmRleCAzOTM3OWZkLi4xMTg4NThiIDEwMDY0NAotLS0tIGEvdWJpZnMtdXRpbHMvbWtmcy51Ymlmcy9rZXkuaAotKysrIGIvdWJpZnMtdXRpbHMvbWtmcy51Ymlmcy9rZXkuaAotQEAgLTE1OSwxMCArMTU5LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkYXRhX2tleV9pbml0KHVuaW9uIHViaWZzX2tleSAqa2V5LCBpbm9fdCBpbnVtLAotICAqLwotIHN0YXRpYyBpbmxpbmUgdm9pZCBrZXlfd3JpdGUoY29uc3QgdW5pb24gdWJpZnNfa2V5ICpmcm9tLCB2b2lkICp0bykKLSB7Ci0tCXVuaW9uIHViaWZzX2tleSAqdCA9IHRvOwotKwlfX2xlMzIgeFsyXTsKLSAKLS0JdC0+ajMyWzBdID0gY3B1X3RvX2xlMzIoZnJvbS0+dTMyWzBdKTsKLS0JdC0+ajMyWzFdID0gY3B1X3RvX2xlMzIoZnJvbS0+dTMyWzFdKTsKLSsJeFswXSA9IGNwdV90b19sZTMyKGZyb20tPnUzMlswXSk7Ci0rCXhbMV0gPSBjcHVfdG9fbGUzMihmcm9tLT51MzJbMV0pOwotKwotKwltZW1jcHkodG8sICZ4LCA4KTsKLSAJbWVtc2V0KHRvICsgOCwgMCwgVUJJRlNfTUFYX0tFWV9MRU4gLSA4KTsKLSB9Ci0gCi1AQCAtMTc0LDEwICsxNzYsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGtleV93cml0ZShjb25zdCB1bmlvbiB1Ymlmc19rZXkgKmZyb20sIHZvaWQgKnRvKQotICAqLwotIHN0YXRpYyBpbmxpbmUgdm9pZCBrZXlfd3JpdGVfaWR4KGNvbnN0IHVuaW9uIHViaWZzX2tleSAqZnJvbSwgdm9pZCAqdG8pCi0gewotLQl1bmlvbiB1Ymlmc19rZXkgKnQgPSB0bzsKLSsJX19sZTMyIHhbMl07Ci0rCi0rCXhbMF0gPSBjcHVfdG9fbGUzMihmcm9tLT51MzJbMF0pOwotKwl4WzFdID0gY3B1X3RvX2xlMzIoZnJvbS0+dTMyWzFdKTsKLSAKLS0JdC0+ajMyWzBdID0gY3B1X3RvX2xlMzIoZnJvbS0+dTMyWzBdKTsKLS0JdC0+ajMyWzFdID0gY3B1X3RvX2xlMzIoZnJvbS0+dTMyWzFdKTsKLSsJbWVtY3B5KHRvLCAmeCwgOCk7Ci0gfQotIAotIC8qKgotLS0gCi0yLjYuMQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdGQvbXRkLXV0aWxzL210ZC11dGlscy1maXgtY29ycnVwdC1jbGVhbm1hcmtlci13aXRoLWZsYXNoX2VyYXNlLS1qLWNvbW1hbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHMvbXRkLXV0aWxzLWZpeC1jb3JydXB0LWNsZWFubWFya2VyLXdpdGgtZmxhc2hfZXJhc2UtLWotY29tbWFuZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGY0MmU3My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHMvbXRkLXV0aWxzLWZpeC1jb3JydXB0LWNsZWFubWFya2VyLXdpdGgtZmxhc2hfZXJhc2UtLWotY29tbWFuZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUZyb20gcGF0Y2h3b3JrIE1vbiBBdWcgIDggMDg6MTY6NDMgMjAxMQotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1dGYtOCIKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0Ci1TdWJqZWN0OiBtdGQtdXRpbHM6IGZpeCBjb3JydXB0IGNsZWFubWFya2VyIHdpdGggZmxhc2hfZXJhc2UgLWogY29tbWFuZAotRGF0ZTogU3VuLCAwNyBBdWcgMjAxMSAyMjoxNjo0MyAtMDAwMAotRnJvbTogYjM1MzYyQGZyZWVzY2FsZS5jb20KLVgtUGF0Y2h3b3JrLUlkOiAxMDg4NzMKLU1lc3NhZ2UtSWQ6IDwxMzEyNzkxNDAzLTEzNDczLTEtZ2l0LXNlbmQtZW1haWwtYjM1MzYyQGZyZWVzY2FsZS5jb20+Ci1UbzogPGR3bXcyQGluZnJhZGVhZC5vcmc+Ci1DYzogTGl1IFNodW8gPGIzNTM2MkBmcmVlc2NhbGUuY29tPiwgQXJ0ZW0uQml0eXV0c2tpeUBub2tpYS5jb20sCi0gTGkgWWFuZyA8bGVvbGlAZnJlZXNjYWxlLmNvbT4sIGxpbnV4LW10ZEBsaXN0cy5pbmZyYWRlYWQub3JnCi0KLUZyb206IExpdSBTaHVvIDxiMzUzNjJAZnJlZXNjYWxlLmNvbT4KLQotRmxhc2hfZXJhc2UgLWogc2hvdWxkIGZpbGwgZGlzY3JldGUgZnJlZW9vYiBhcmVhcyB3aXRoIHJlcXVpcmVkIGJ5dGVzCi1vZiBKRkZTMiBjbGVhbm1hcmtlciBpbiBqZmZzMl9jaGVja19uYW5kX2NsZWFubWFya2VyKCkuIE5vdCBqdXN0IGZpbGwKLXRoZSBmaXJzdCBmcmVlb29iIGFyZWEuCi0KLVRoZSBiZWxvdyBpcyB0aGUgcmVzdWx0IHdpdGhvdXQgdGhpcyB3b3JrYXJvdW5kOgotCi1KRkZTMjogRXJhc2UgYmxvY2sgYXQgMHgwMDAwMDAwMCBpcyBub3QgZm9ybWF0dGVkLiBJdCB3aWxsIGJlIGVyYXNlZAotSkZGUzI6IEVyYXNlIGJsb2NrIGF0IDB4MDAwMDQwMDAgaXMgbm90IGZvcm1hdHRlZC4gSXQgd2lsbCBiZSBlcmFzZWQKLUpGRlMyOiBFcmFzZSBibG9jayBhdCAweDAwMDA4MDAwIGlzIG5vdCBmb3JtYXR0ZWQuIEl0IHdpbGwgYmUgZXJhc2VkCi1KRkZTMjogRXJhc2UgYmxvY2sgYXQgMHgwMDAwYzAwMCBpcyBub3QgZm9ybWF0dGVkLiBJdCB3aWxsIGJlIGVyYXNlZAotSkZGUzI6IEVyYXNlIGJsb2NrIGF0IDB4MDAwMTAwMDAgaXMgbm90IGZvcm1hdHRlZC4gSXQgd2lsbCBiZSBlcmFzZWQKLUpGRlMyOiBFcmFzZSBibG9jayBhdCAweDAwMDE0MDAwIGlzIG5vdCBmb3JtYXR0ZWQuIEl0IHdpbGwgYmUgZXJhc2VkCi1KRkZTMjogRXJhc2UgYmxvY2sgYXQgMHgwMDAxODAwMCBpcyBub3QgZm9ybWF0dGVkLiBJdCB3aWxsIGJlIGVyYXNlZAotSkZGUzI6IEVyYXNlIGJsb2NrIGF0IDB4MDAwMWMwMDAgaXMgbm90IGZvcm1hdHRlZC4gSXQgd2lsbCBiZSBlcmFzZWQKLUpGRlMyOiBFcmFzZSBibG9jayBhdCAweDAwMDIwMDAwIGlzIG5vdCBmb3JtYXR0ZWQuIEl0IHdpbGwgYmUgZXJhc2VkCi1KRkZTMjogRXJhc2UgYmxvY2sgYXQgMHgwMDAyNDAwMCBpcyBub3QgZm9ybWF0dGVkLiBJdCB3aWxsIGJlIGVyYXNlZAotSkZGUzI6IEVyYXNlIGJsb2NrIGF0IDB4MDAwMjgwMDAgaXMgbm90IGZvcm1hdHRlZC4gSXQgd2lsbCBiZSBlcmFzZWQKLS4uLgotCi1TaWduZWQtb2ZmLWJ5OiBMaXUgU2h1byA8YjM1MzYyQGZyZWVzY2FsZS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBMaSBZYW5nIDxsZW9saUBmcmVlc2NhbGUuY29tPgotCi1VcGRhdGVkIGZvciB0aGUgbmV3IHZlcnNpb24KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0KLS0tLQotdjIgOiBnZXQgbGVuZ3RoIG9mIGF2YWlsYmxlIGZyZWVvb2IgYnl0ZXMgZnJvbSBvb2JpbmZvIGluZm9ybWF0aW9uLAotICAgICAgbm90IHVzZSB0aGUgaW9jdGwgRUNDR0VUTEFZT1VUIHdoaWNoIGlzIGJlaW5nIGRlcHJlY2F0ZWQuCi0KLSBmbGFzaF9lcmFzZS5jIHwgICA0NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCi0gMSBmaWxlcyBjaGFuZ2VkLCAzOSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZmxhc2hfZXJhc2UuYyBiL2ZsYXNoX2VyYXNlLmMKLWluZGV4IDkzMzM3M2EuLjRiOWQ4NGIgMTAwNjQ0Ci0tLS0gYS9taXNjLXV0aWxzL2ZsYXNoX2VyYXNlLmMKLSsrKyBiL21pc2MtdXRpbHMvZmxhc2hfZXJhc2UuYwotQEAgLTk5LDYgKzk5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJYm9vbCBpc05BTkQ7Ci0gCWludCBlcnJvciA9IDA7Ci0gCW9mZl90IG9mZnNldCA9IDA7Ci0rCXZvaWQgKm9vYl9kYXRhID0gTlVMTDsKLSAKLSAJLyoKLSAJICogUHJvY2VzcyB1c2VyIGFyZ3VtZW50cwotQEAgLTIwMSwxNSArMjAyLDQzIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCQkJaWYgKGlvY3RsKGZkLCBNRU1HRVRPT0JTRUwsICZvb2JpbmZvKSAhPSAwKQotIAkJCQlyZXR1cm4gc3lzX2Vycm1zZygiJXM6IHVuYWJsZSB0byBnZXQgTkFORCBvb2JpbmZvIiwgbXRkX2RldmljZSk7Ci0gCi0rCQkJY2xlYW5tYXJrZXIudG90bGVuID0gY3B1X3RvX2plMzIoOCk7Ci0gCQkJLyogQ2hlY2sgZm9yIGF1dG9wbGFjZW1lbnQgKi8KLSAJCQlpZiAob29iaW5mby51c2VlY2MgPT0gTVREX05BTkRFQ0NfQVVUT1BMQUNFKSB7Ci0tCQkJCS8qIEdldCB0aGUgcG9zaXRpb24gb2YgdGhlIGZyZWUgYnl0ZXMgKi8KLS0JCQkJaWYgKCFvb2JpbmZvLm9vYmZyZWVbMF1bMV0pCi0rCQkJCXN0cnVjdCBuYW5kX2VjY2xheW91dF91c2VyIGVjY2xheW91dDsKLSsJCQkJaW50IGksIG9vYmF2YWlsOwotKwotKwkJCQlmb3IgKGkgPSAwLCBvb2JhdmFpbCA9IDA7IG9vYmluZm8ub29iZnJlZVtpXVsxXTsgaSsrKQotKwkJCQkJb29iYXZhaWwgKz0gb29iaW5mby5vb2JmcmVlW2ldWzFdOwotKwotKwkJCQlpZiAoIW9vYmF2YWlsKQotIAkJCQkJcmV0dXJuIGVycm1zZygiIEVlZXAuIEF1dG9wbGFjZW1lbnQgc2VsZWN0ZWQgYW5kIG5vIGVtcHR5IHNwYWNlIGluIG9vYiIpOwotKwotKwkJCQkvKiBHZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSBmcmVlIGJ5dGVzICovCi0gCQkJCWNsbXBvcyA9IG9vYmluZm8ub29iZnJlZVswXVswXTsKLS0JCQkJY2xtbGVuID0gb29iaW5mby5vb2JmcmVlWzBdWzFdOwotLQkJCQlpZiAoY2xtbGVuID4gOCkKLS0JCQkJCWNsbWxlbiA9IDg7Ci0rCQkJCWNsbWxlbiA9IE1JTihvb2JhdmFpbCwgOCk7Ci0rCi0rCQkJCWlmIChvb2JpbmZvLm9vYmZyZWVbMF1bMV0gPCA4ICYmIG9vYmF2YWlsID49IDgpIHsKLSsJCQkJCWludCBsZWZ0LCBuLCBsYXN0ID0gMDsKLSsJCQkJCXZvaWQgKmNtOwotKwotKwkJCQkJb29iX2RhdGEgPSBtYWxsb2MobXRkLm9vYl9zaXplKTsKLSsJCQkJCWlmICghb29iX2RhdGEpCi0rCQkJCQkJcmV0dXJuIC1FTk9NRU07Ci0rCi0rCQkJCQltZW1zZXQob29iX2RhdGEsIDB4ZmYsIG10ZC5vb2Jfc2l6ZSk7Ci0rCQkJCQljbSA9ICZjbGVhbm1hcmtlcjsKLSsJCQkJCWZvciAoaSA9IDAsIGxlZnQgPSBjbG1sZW47IGxlZnQgOyBpKyspIHsKLSsJCQkJCQluID0gTUlOKGxlZnQsIG9vYmluZm8ub29iZnJlZVtpXVsxXSk7Ci0rCQkJCQkJbWVtY3B5KG9vYl9kYXRhICsgb29iaW5mby5vb2JmcmVlW2ldWzBdLAotKwkJCQkJCQkJY20sIG4pOwotKwkJCQkJCWxlZnQgLT0gbjsKLSsJCQkJCQljbSAgICs9IG47Ci0rCQkJCQkJbGFzdCA9IG9vYmluZm8ub29iZnJlZVtpXVswXSArIG47Ci0rCQkJCQl9Ci0rCi0rCQkJCQljbG1sZW4gPSBsYXN0IC0gY2xtcG9zOwotKwkJCQl9Ci0gCQkJfSBlbHNlIHsKLSAJCQkJLyogTGVnYWN5IG1vZGUgKi8KLSAJCQkJc3dpdGNoIChtdGQub29iX3NpemUpIHsKLUBAIC0yMjcsNyArMjU2LDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJCQkJCQlicmVhazsKLSAJCQkJfQotIAkJCX0KLS0JCQljbGVhbm1hcmtlci50b3RsZW4gPSBjcHVfdG9famUzMig4KTsKLSAJCX0KLSAJCWNsZWFubWFya2VyLmhkcl9jcmMgPSBjcHVfdG9famUzMihtdGRfY3JjMzIoMCwgJmNsZWFubWFya2VyLCBzaXplb2YoY2xlYW5tYXJrZXIpIC0gNCkpOwotIAl9Ci1AQCAtMjc2LDcgKzMwNCw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCi0gCQkvKiB3cml0ZSBjbGVhbm1hcmtlciAqLwotIAkJaWYgKGlzTkFORCkgewotLQkJCWlmIChtdGRfd3JpdGVfb29iKG10ZF9kZXNjLCAmbXRkLCBmZCwgKHVpbnQ2NF90KW9mZnNldCArIGNsbXBvcywgY2xtbGVuLCAmY2xlYW5tYXJrZXIpICE9IDApIHsKLSsJCQl2b2lkICpkYXRhID0gb29iX2RhdGEgPyBvb2JfZGF0YSArIGNsbXBvcyA6ICZjbGVhbm1hcmtlcjsKLSsJCQlpZiAobXRkX3dyaXRlX29vYihtdGRfZGVzYywgJm10ZCwgZmQsICh1aW50NjRfdClvZmZzZXQgKyBjbG1wb3MsIGNsbWxlbiwgZGF0YSkgIT0gMCkgewotIAkJCQlzeXNfZXJybXNnKCIlczogTVREIHdyaXRlb29iIGZhaWx1cmUiLCBtdGRfZGV2aWNlKTsKLSAJCQkJY29udGludWU7Ci0gCQkJfQotQEAgLTI5MSw1ICszMjAsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAlzaG93X3Byb2dyZXNzKCZtdGQsIG9mZnNldCwgZWIsIGViX3N0YXJ0LCBlYl9jbnQpOwotIAliYXJldmVyYm9zZSghcXVpZXQsICJcbiIpOwotIAotKwlpZiAob29iX2RhdGEpCi0rCQlmcmVlKG9vYl9kYXRhKTsKLSsKLSAJcmV0dXJuIDA7Ci0gfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdGQvbXRkLXV0aWxzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlsc19naXQuYmIKaW5kZXggNDhiYTJlZS4uYTBlMWNmNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdGQvbXRkLXV0aWxzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHNfZ2l0LmJiCkBAIC04LDQyICs4LDYxIEBACiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLWFsdGVybmF0aXZlcwogCiBERVBFTkRTID0gInpsaWIgbHpvIGUyZnNwcm9ncyB1dGlsLWxpbnV4IgorUkRFUEVORFNfbXRkLXV0aWxzLXRlc3RzICs9ICJiYXNoIgogCi1QViA9ICIyLjAuMCIKK1BWID0gIjIuMC4xKyR7U1JDUFZ9IgogCi1TUkNSRVYgPSAiMWJmZWU4NjYwMTMxZmNhN2ExOGY2OGU5NTQ4YTE4Y2E2YjMzNzhhMCIKK1NSQ1JFViA9ICI5YzYxNzM1NTlmOTVlOTM5ZTY2ZWZiMmVjMzE5M2Q2ZjM2MThjZjY5IgogU1JDX1VSSSA9ICJnaXQ6Ly9naXQuaW5mcmFkZWFkLm9yZy9tdGQtdXRpbHMuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL2FkZC1leGNsdXNpb24tdG8tbWtmcy1qZmZzMi1naXQtMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtYXJtdjctbmVvbi1hbGlnbm1lbnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbXRkLXV0aWxzLWZpeC1jb3JydXB0LWNsZWFubWFya2VyLXdpdGgtZmxhc2hfZXJhc2UtLWotY29tbWFuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDEwLWZpeC1ycG1hdGNoLnBhdGNoIFwKICIKIAogUyA9ICIke1dPUktESVJ9L2dpdC8iCiAKK0VYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtaW5zdGFsbC10ZXN0cyIKKwogIyB4YXR0ciBzdXBwb3J0IGNyZWF0ZXMgYW4gYWRkaXRpb25hbCBjb21waWxlLXRpbWUgZGVwZW5kZW5jeSBvbiBhY2wgYmVjYXVzZQogIyB0aGUgc3lzL2FjbC5oIGhlYWRlciBpcyBuZWVkZWQuIGxpYmFjbCBpcyBub3QgbmVlZGVkIGFuZCB0aHVzIGVuYWJsaW5nIHhhdHRyCiAjIHJlZ2FyZGxlc3Mgd2hldGhlciBhY2wgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCBpbiB0aGUgZGlzdHJvIHNob3VsZCBiZSBva2F5LgogUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneGF0dHInLCBkKX0iCiBQQUNLQUdFQ09ORklHW3hhdHRyXSA9ICIsLGFjbCwiCiAKK0NQUEZMQUdTX2FwcGVuZF9yaXNjdjY0ICA9ICIgLXB0aHJlYWQgLURfUkVFTlRSQU5UIgorCiBFWFRSQV9PRU1BS0UgPSAiJ0NDPSR7Q0N9JyAnUkFOTElCPSR7UkFOTElCfScgJ0FSPSR7QVJ9JyAnQ0ZMQUdTPSR7Q0ZMQUdTfSAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4YXR0cicsICcnLCAnLURXSVRIT1VUX1hBVFRSJywgZCl9IC1JJHtTfS9pbmNsdWRlJyAnQlVJTERESVI9JHtTfSciCiAKLUFMVEVSTkFUSVZFXyR7UE59ID0gImZsYXNoX2VyYXNlYWxsIgorIyBVc2UgaGlnaGVyIHByaW9yaXR5IHRoYW4gY29ycmVzcG9uZGluZyBCdXN5Qm94LXByb3ZpZGVkIGFwcGxldHMKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiZmxhc2hjcCBmbGFzaF9lcmFzZWFsbCBmbGFzaF9sb2NrIGZsYXNoX3VubG9jayBuYW5kZHVtcCBuYW5kd3JpdGUiCitBTFRFUk5BVElWRV8ke1BOfS11YmlmcyA9ICJ1YmlhdHRhY2ggdWJpZGV0YWNoIHViaW1rdm9sIHViaXJlbmFtZSB1YmlybXZvbCB1Ymlyc3ZvbCB1Yml1cGRhdGV2b2wiCisKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtmbGFzaF9lcmFzZWFsbF0gPSAiJHtzYmluZGlyfS9mbGFzaF9lcmFzZWFsbCIKLSMgVXNlIGhpZ2hlciBwcmlvcml0eSB0aGFuIGJ1c3lib3gncyBmbGFzaF9lcmFzZWFsbCAoY3JlYXRlZCB3aGVuIGJ1aWx0IHdpdGggQ09ORklHX0ZMQVNIX0VSQVNFQUxMKQotQUxURVJOQVRJVkVfUFJJT1JJVFlbZmxhc2hfZXJhc2VhbGxdID0gIjEwMCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtuYW5kd3JpdGVdID0gIiR7c2JpbmRpcn0vbmFuZHdyaXRlIgorQUxURVJOQVRJVkVfTElOS19OQU1FW25hbmRkdW1wXSA9ICIke3NiaW5kaXJ9L25hbmRkdW1wIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3ViaWF0dGFjaF0gPSAiJHtzYmluZGlyfS91YmlhdHRhY2giCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdWJpYXR0YWNoXSA9ICIke3NiaW5kaXJ9L3ViaWF0dGFjaCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt1YmlkZXRhY2hdID0gIiR7c2JpbmRpcn0vdWJpZGV0YWNoIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3ViaW1rdm9sXSA9ICIke3NiaW5kaXJ9L3ViaW1rdm9sIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3ViaXJlbmFtZV0gPSAiJHtzYmluZGlyfS91YmlyZW5hbWUiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdWJpcm12b2xdID0gIiR7c2JpbmRpcn0vdWJpcm12b2wiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdWJpcnN2b2xdID0gIiR7c2JpbmRpcn0vdWJpcnN2b2wiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdWJpdXBkYXRldm9sXSA9ICIke3NiaW5kaXJ9L3ViaXVwZGF0ZXZvbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtmbGFzaF9lcmFzZWFsbF0gPSAiJHtzYmluZGlyfS9mbGFzaF9lcmFzZWFsbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtmbGFzaF9sb2NrXSA9ICIke3NiaW5kaXJ9L2ZsYXNoX2xvY2siCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZmxhc2hfdW5sb2NrXSA9ICIke3NiaW5kaXJ9L2ZsYXNoX3VubG9jayIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtmbGFzaGNwXSA9ICIke3NiaW5kaXJ9L2ZsYXNoY3AiCiAKIGRvX2luc3RhbGwgKCkgewogCW9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gU0JJTkRJUj0ke3NiaW5kaXJ9IE1BTkRJUj0ke21hbmRpcn0gSU5DTFVERURJUj0ke2luY2x1ZGVkaXJ9CiB9CiAKLVBBQ0tBR0VTID0rICJtdGQtdXRpbHMtamZmczIgbXRkLXV0aWxzLXViaWZzIG10ZC11dGlscy1taXNjIgorUEFDS0FHRVMgPSsgIm10ZC11dGlscy1qZmZzMiBtdGQtdXRpbHMtdWJpZnMgbXRkLXV0aWxzLW1pc2MgbXRkLXV0aWxzLXRlc3RzIgogCiBGSUxFU19tdGQtdXRpbHMtamZmczIgPSAiJHtzYmluZGlyfS9ta2ZzLmpmZnMyICR7c2JpbmRpcn0vamZmczJkdW1wICR7c2JpbmRpcn0vamZmczJyZWFkZXIgJHtzYmluZGlyfS9zdW10b29sIgogRklMRVNfbXRkLXV0aWxzLXViaWZzID0gIiR7c2JpbmRpcn0vbWtmcy51YmlmcyAke3NiaW5kaXJ9L3ViaSoiCiBGSUxFU19tdGQtdXRpbHMtbWlzYyA9ICIke3NiaW5kaXJ9L25mdGwqICR7c2JpbmRpcn0vZnRsKiAke3NiaW5kaXJ9L3JmZCogJHtzYmluZGlyfS9kb2MqICR7c2JpbmRpcn0vc2VydmVfaW1hZ2UgJHtzYmluZGlyfS9yZWN2X2ltYWdlIgorRklMRVNfbXRkLXV0aWxzLXRlc3RzID0gIiR7bGliZXhlY2Rpcn0vbXRkLXV0aWxzLyoiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdG9vbHMvbXRvb2xzL210b29scy1tYWtlaW5mby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRvb2xzL210b29scy9tdG9vbHMtbWFrZWluZm8ucGF0Y2gKaW5kZXggMmUyODczYS4uOGNlYjBhZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdG9vbHMvbXRvb2xzL210b29scy1tYWtlaW5mby5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210b29scy9tdG9vbHMvbXRvb2xzLW1ha2VpbmZvLnBhdGNoCkBAIC0xLDggKzEsMTAgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbGljZW5zaW5nXQogCi0tLS0gbXRvb2xzLTMuOS45L2NvbmZpZ3VyZS5pbi5vcmlnCTIwMDYtMDQtMTQgMTY6MDU6NTQuMzM3NjU1MTkyIC0wNjAwCi0rKysgbXRvb2xzLTMuOS45L2NvbmZpZ3VyZS5pbgkyMDA2LTA0LTE0IDE2OjEyOjI5LjczNjU0NTQyNCAtMDYwMAotQEAgLTIxLDYgKzIxLDMzIEBACitJbmRleDogbXRvb2xzLTQuMC4xOC9jb25maWd1cmUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBtdG9vbHMtNC4wLjE4Lm9yaWcvY29uZmlndXJlLmluCisrKysgbXRvb2xzLTQuMC4xOC9jb25maWd1cmUuaW4KK0BAIC0zNSw2ICszNSwzMyBAQCBBQ19DQU5PTklDQUxfU1lTVEVNCiAgQUNfQ19DT05TVAogIEFDX0NfSU5MSU5FCiAgCkBAIC0zNiw5ICszOCwxMSBAQAogIAogIGRubCBDaGVjayBmb3IgY29uZmlndXJhdGlvbiBvcHRpb25zCiAgZG5sIEVuYWJsZSBPUy8yIGV4dGVuZGVkIGRlbnNpdHkgZm9ybWF0IGRpc2tzCi0tLS0gbXRvb2xzLTMuOS45L01ha2VmaWxlLmluLnNhdgkyMDA2LTA0LTE0IDE1OjU2OjE5LjAwMDAwMDAwMCAtMDYwMAotKysrIG10b29scy0zLjkuOS9NYWtlZmlsZS5pbgkyMDA2LTA0LTE0IDE2OjE1OjI5LjMxNTI0NTMxMiAtMDYwMAotQEAgLTExLDEwICsxMSwxMSBAQAorSW5kZXg6IG10b29scy00LjAuMTgvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBtdG9vbHMtNC4wLjE4Lm9yaWcvTWFrZWZpbGUuaW4KKysrKyBtdG9vbHMtNC4wLjE4L01ha2VmaWxlLmluCitAQCAtMjYsMTAgKzI2LDExIEBAIFVTRVJDRkxBR1MgPQogIFVTRVJMREZMQUdTID0KICBVU0VSTERMSUJTID0KICAKQEAgLTU0LDcgKzU4LDcgQEAKICAKICAKICAjIGRvIG5vdCBlZGl0IGJlbG93IHRoaXMgbGluZQotQEAgLTE4MSw3ICsxODIsNyBAQAorQEAgLTE5OCw3ICsxOTksNyBAQCBkdmk6IG10b29scy5kdmkKICAKICBwczogbXRvb2xzLnBzCiAgJS5wczogJS5kdmkKQEAgLTYyLDQgKzY2LDQgQEAKICsJJChEVkkyUFMpIC1mIDwgJDwgPiAkQAogIAogIHBkZjogbXRvb2xzLnBkZgotICUucGRmOiAlLnRleGkKKyAlLnBkZjogJS50ZXhpIHN5c2NvbmZkaXIudGV4aQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc20vMDAwMS1hc21saWItRHJvcC1wdXJlLWZ1bmN0aW9uLWF0dHJpYnV0ZS1mcm9tLXNlZ19pbml0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc20vMDAwMS1hc21saWItRHJvcC1wdXJlLWZ1bmN0aW9uLWF0dHJpYnV0ZS1mcm9tLXNlZ19pbml0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyYWUzYTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbS8wMDAxLWFzbWxpYi1Ecm9wLXB1cmUtZnVuY3Rpb24tYXR0cmlidXRlLWZyb20tc2VnX2luaXQucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSA3N2MzYTc3MjEwZDhjYThiOTRlOTk5YzcxMTE1NmU5ODRhOGRjNzM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMzEgTWFyIDIwMTggMTE6MDU6MzMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gYXNtbGliOiBEcm9wIHB1cmUgZnVuY3Rpb24gYXR0cmlidXRlIGZyb20gc2VnX2luaXQKKworc2VnX2luaXQgcmV0dXJucyB2b2lkLCBzbyBpdCBpcyBpbXB1cmUgZnVuY3Rpb24KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworIGluY2x1ZGUvbmFzbWxpYi5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uYXNtbGliLmggYi9pbmNsdWRlL25hc21saWIuaAoraW5kZXggNzllODY2Yi4uYjgwYjdlMiAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvbmFzbWxpYi5oCisrKysgYi9pbmNsdWRlL25hc21saWIuaAorQEAgLTE5MSw3ICsxOTEsNyBAQCBpbnQ2NF90IHJlYWRzdHJudW0oY2hhciAqc3RyLCBpbnQgbGVuZ3RoLCBib29sICp3YXJuKTsKKyAgKiBzZWdfaW5pdDogSW5pdGlhbGlzZSB0aGUgc2VnbWVudC1udW1iZXIgYWxsb2NhdG9yLgorICAqIHNlZ19hbGxvYzogYWxsb2NhdGUgYSBoaXRoZXJ0byB1bnVzZWQgc2VnbWVudCBudW1iZXIuCisgICovCistdm9pZCBwdXJlX2Z1bmMgc2VnX2luaXQodm9pZCk7Cisrdm9pZCBzZWdfaW5pdCh2b2lkKTsKKyBpbnQzMl90IHB1cmVfZnVuYyBzZWdfYWxsb2Modm9pZCk7CisgCisgLyoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtXzIuMTMuMDEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbV8yLjEzLjAxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjE4Y2Q2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtXzIuMTMuMDEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIkdlbmVyYWwtcHVycG9zZSB4ODYgYXNzZW1ibGVyIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTA5MDQ0ODZmOGZiZjE4NjFjZjQyNzUyZTFhMzllZmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5uYXNtLnVzL3B1Yi9uYXNtL3JlbGVhc2VidWlsZHMvJHtQVn0vbmFzbS0ke1BWfS50YXIuYnoyICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFmN2Q0NjYyMDQwZDI0MzUxZGY3ZDY3MTllZDRmOTdhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA4Zjk3YmFmMGE3Zjg5MjEyOGM2NDEzY2ZhOTNiNjlkYzU4MjVmYmJkMDZjNzA5MjhhZWEwMjg4MzVkMTk4ZmEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JaWYgWyAtZiAke1N9L2FjbG9jYWwubTQgXSAmJiBbICEgLWYgJHtTfS9hY2luY2x1ZGUubTQgXTsgdGhlbgotCQltdiAke1N9L2FjbG9jYWwubTQgJHtTfS9hY2luY2x1ZGUubTQKLQlmaQotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW4xCi0KLQlvZV9ydW5tYWtlICdJTlNUQUxMUk9PVD0ke0R9JyBpbnN0YWxsCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1ERVBFTkRTID0gImdyb2ZmLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtXzIuMTMuMDMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbV8yLjEzLjAzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzNmQ3ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbV8yLjEzLjAzLmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiR2VuZXJhbC1wdXJwb3NlIHg4NiBhc3NlbWJsZXIiCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05MDkwNDQ4NmY4ZmJmMTg2MWNmNDI3NTJlMWEzOWVmZSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm5hc20udXMvcHViL25hc20vcmVsZWFzZWJ1aWxkcy8ke1BWfS9uYXNtLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hc21saWItRHJvcC1wdXJlLWZ1bmN0aW9uLWF0dHJpYnV0ZS1mcm9tLXNlZ19pbml0LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMGM1ODFkNDgyZjM5ZDUxMTE4NzljYTk2MDE5MzhmNzQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjNlYzg2NDc3YWQzZjBmNjI5MjMyNWZkODllMWQ5M2FlYTJlMmZkNDkwMDcwODYzZjE3ZDQ4ZjdjZDM4NzAxMSIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlpZiBbIC1mICR7U30vYWNsb2NhbC5tNCBdICYmIFsgISAtZiAke1N9L2FjaW5jbHVkZS5tNCBdOyB0aGVuCisJCW12ICR7U30vYWNsb2NhbC5tNCAke1N9L2FjaW5jbHVkZS5tNAorCWZpCit9CisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjEKKworCW9lX3J1bm1ha2UgJ0lOU1RBTExST09UPSR7RH0nIGluc3RhbGwKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK0RFUEVORFMgPSAiZ3JvZmYtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYV8xLjcuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmluamEvbmluamFfMS43LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkM2IyNzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYV8xLjcuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVNVTU1BUlkgPSAiTmluamEgaXMgYSBzbWFsbCBidWlsZCBzeXN0ZW0gd2l0aCBhIGZvY3VzIG9uIHNwZWVkLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9tYXJ0aW5lLmdpdGh1Yi5jb20vbmluamEvIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTgxNTg2YTY0YWQ0ZTQ3NmM3OTFjZGE3ZTJmMmM1MmUiCi0KLURFUEVORFMgPSAicmUyYy1uYXRpdmUgbmluamEtbmF0aXZlIgotCi1TUkNSRVYgPSAiNzE3YjdiNGEzMWRiNjAyNzIwNzU4OGMwZmI4OWMzZWFkMzg0NzQ3YiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL21hcnRpbmUvbmluamEuZ2l0O2JyYW5jaD1yZWxlYXNlIgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPi4qKSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKLQotZG9fY29tcGlsZV9jbGFzcy1uYXRpdmUoKSB7Ci0JLi9jb25maWd1cmUucHkgLS1ib290c3RyYXAKLX0KLQotZG9fY29tcGlsZSgpIHsKLQkuL2NvbmZpZ3VyZS5weQotCW5pbmphCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtRCAtbSAwNzU1ICAke1N9L25pbmphICR7RH0ke2JpbmRpcn0vbmluamEKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYV8xLjguMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmluamEvbmluamFfMS44LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZmY2ZlZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmluamEvbmluamFfMS44LjIuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJOaW5qYSBpcyBhIHNtYWxsIGJ1aWxkIHN5c3RlbSB3aXRoIGEgZm9jdXMgb24gc3BlZWQuIgorSE9NRVBBR0UgPSAiaHR0cDovL21hcnRpbmUuZ2l0aHViLmNvbS9uaW5qYS8iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hODE1ODZhNjRhZDRlNDc2Yzc5MWNkYTdlMmYyYzUyZSIKKworREVQRU5EUyA9ICJyZTJjLW5hdGl2ZSBuaW5qYS1uYXRpdmUiCisKK1NSQ1JFViA9ICIyNTNlOTRjMWZhNTExNzA0YmFlYjYxY2Y2OTk5NWJiZjA5YmE0MzVlIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbmluamEtYnVpbGQvbmluamEuZ2l0O2JyYW5jaD1yZWxlYXNlIgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPi4qKSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKKworZG9fY29tcGlsZV9jbGFzcy1uYXRpdmUoKSB7CisJLi9jb25maWd1cmUucHkgLS1ib290c3RyYXAKK30KKworZG9fY29tcGlsZSgpIHsKKwkuL2NvbmZpZ3VyZS5weQorCW5pbmphCit9CisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtRCAtbSAwNzU1ICAke1N9L25pbmphICR7RH0ke2JpbmRpcn0vbmluamEKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvMDAwMS1Pbmx5LXVzZS1zb3J0LW5hbWUtb24tdmVyc2lvbnMtb2YtdGFyLXdoaWNoLXN1cHBvcnQtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvMDAwMS1Pbmx5LXVzZS1zb3J0LW5hbWUtb24tdmVyc2lvbnMtb2YtdGFyLXdoaWNoLXN1cHBvcnQtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiN2NhN2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy8wMDAxLU9ubHktdXNlLXNvcnQtbmFtZS1vbi12ZXJzaW9ucy1vZi10YXItd2hpY2gtc3VwcG9ydC0ucGF0Y2gKQEAgLTAsMCArMSw1MSBAQAorRnJvbSBlZjVkYjA2MmI3ZDI1ZTYwNzBhY2M2OTIyZWE0OGY1MDQ5MTMxM2I1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWljaGFlbCBIYW5zZW4gPG1pY2hhZWwuai5oYW5zZW5AaHAuY29tPgorRGF0ZTogTW9uLCAyNiBGZWIgMjAxOCAwOTo0Mjo1NiAtMDgwMAorU3ViamVjdDogW1BBVENIIDEvMl0gT25seSB1c2UgLS1zb3J0PW5hbWUgb24gdmVyc2lvbnMgb2YgdGFyIHdoaWNoIHN1cHBvcnQgaXQuCisgVGhpcyBmaXhlcyBjb21wYXRpYmlsaXR5IHdpdGggYnNkdGFyIGFuZCBvbGQgdmVyc2lvbnMgb2YgR05VIHRhciAoZS5nLgorIFJIRUw2KS4KKworU2lnbmVkLW9mZi1ieTogTWljaGFlbCBIYW5zZW4gPG1pY2hhZWwuai5oYW5zZW5AaHAuY29tPgorU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworLS0tCisgb3BrZy1idWlsZCB8IDExICsrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworSW5kZXg6IG9wa2ctdXRpbHMtMC4zLjYvb3BrZy1idWlsZAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wa2ctdXRpbHMtMC4zLjYub3JpZy9vcGtnLWJ1aWxkCisrKysgb3BrZy11dGlscy0wLjMuNi9vcGtnLWJ1aWxkCitAQCAtMjMyLDYgKzIzMiwxMSBAQCBpZiBbICRjb21wcmVzc29yID0gImd6aXAiIF0gOyB0aGVuCisgCWNvbXByZXNzb3JhcmdzPSR6aXBhcmdzCisgZmkKKyAKKyt0c29ydGFyZ3M9CisraWYgdGFyIC0taGVscCAyPiYxIHwgZ3JlcCAtLSAiLS1zb3J0PSIgPiAvZGV2L251bGw7IHRoZW4KKysJdHNvcnRhcmdzPSItLXNvcnQ9bmFtZSIKKytmaQorKworIHNoaWZ0ICQoKCRPUFRJTkQgLSAxKSkKKyAKKyAjIGNvbnRpbnVlIG9uIHRvIHByb2Nlc3MgYWRkaXRpb25hbCBhcmd1bWVudHMKK0BAIC0yODAsOCArMjg1LDggQEAgbWtkaXIgJHRtcF9kaXIKKyBidWlsZF9kYXRlPSIkKGRhdGUgLS11dGMgLS1kYXRlPSJAJHtTT1VSQ0VfREFURV9FUE9DSDotJChkYXRlICslcyl9IiArJVktJW0tJWQpIgorIAorIGVjaG8gJENPTlRST0wgPiAkdG1wX2Rpci90YXJYCistKCBjZCAkcGtnX2RpciAmJiB0YXIgJG9nYXJncyAtLXNvcnQ9bmFtZSAtLW10aW1lPSRidWlsZF9kYXRlIC1YICR0bXBfZGlyL3RhclggLWMgJHRhcmZvcm1hdCAuIHwgJGNvbXByZXNzb3IgJGNvbXByZXNzb3JhcmdzID4gJHRtcF9kaXIvZGF0YS50YXIuJGNleHQgKQorLSggY2QgJHBrZ19kaXIvJENPTlRST0wgJiYgdGFyICRvZ2FyZ3MgLS1zb3J0PW5hbWUgLS1tdGltZT0kYnVpbGRfZGF0ZSAtYyAkdGFyZm9ybWF0IC4gfCBnemlwICR6aXBhcmdzID4gJHRtcF9kaXIvY29udHJvbC50YXIuZ3ogKQorKyggY2QgJHBrZ19kaXIgJiYgdGFyICRvZ2FyZ3MgJHRzb3J0YXJncyAtLW10aW1lPSRidWlsZF9kYXRlIC1YICR0bXBfZGlyL3RhclggLWMgJHRhcmZvcm1hdCAuIHwgJGNvbXByZXNzb3IgJGNvbXByZXNzb3JhcmdzID4gJHRtcF9kaXIvZGF0YS50YXIuJGNleHQgKQorKyggY2QgJHBrZ19kaXIvJENPTlRST0wgJiYgdGFyICRvZ2FyZ3MgJHRzb3J0YXJncyAtLW10aW1lPSRidWlsZF9kYXRlIC1jICR0YXJmb3JtYXQgLiB8IGd6aXAgJHppcGFyZ3MgPiAkdG1wX2Rpci9jb250cm9sLnRhci5neiApCisgcm0gJHRtcF9kaXIvdGFyWAorIAorIGVjaG8gIjIuMCIgPiAkdG1wX2Rpci9kZWJpYW4tYmluYXJ5CitAQCAtMjk2LDcgKzMwMSw3IEBAIHJtIC1mICRwa2dfZmlsZQorIGlmIFsgIiRvdXRlciIgPSAiYXIiIF0gOyB0aGVuCisgICAoIGNkICR0bXBfZGlyICYmIGFyIC1jcmYgJHBrZ19maWxlIC4vZGViaWFuLWJpbmFyeSAuL2NvbnRyb2wudGFyLmd6IC4vZGF0YS50YXIuJGNleHQgKQorIGVsc2UKKy0gICggY2QgJHRtcF9kaXIgJiYgdGFyIC1jIC0tc29ydD1uYW1lIC0tbXRpbWU9JGJ1aWxkX2RhdGUgJHRhcmZvcm1hdCAuL2RlYmlhbi1iaW5hcnkgLi9jb250cm9sLnRhci5neiAuL2RhdGEudGFyLiRjZXh0IHwgZ3ppcCAkemlwYXJncyA+ICRwa2dfZmlsZSApCisrICAoIGNkICR0bXBfZGlyICYmIHRhciAtYyAkdHNvcnRhcmdzIC0tbXRpbWU9JGJ1aWxkX2RhdGUgJHRhcmZvcm1hdCAuL2RlYmlhbi1iaW5hcnkgLi9jb250cm9sLnRhci5neiAuL2RhdGEudGFyLiRjZXh0IHwgZ3ppcCAkemlwYXJncyA+ICRwa2dfZmlsZSApCisgZmkKKyAKKyBybSAkdG1wX2Rpci9kZWJpYW4tYmluYXJ5ICR0bXBfZGlyL2RhdGEudGFyLiRjZXh0ICR0bXBfZGlyL2NvbnRyb2wudGFyLmd6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy8wMDAyLW9wa2ctYnVpbGQtVXNlLWxvY2FsLXRpbWUtZm9yLWJ1aWxkX2RhdGUtc2luY2Utb3BrZy0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy8wMDAyLW9wa2ctYnVpbGQtVXNlLWxvY2FsLXRpbWUtZm9yLWJ1aWxkX2RhdGUtc2luY2Utb3BrZy0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMzODkxNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzLzAwMDItb3BrZy1idWlsZC1Vc2UtbG9jYWwtdGltZS1mb3ItYnVpbGRfZGF0ZS1zaW5jZS1vcGtnLS5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIDU3Mjc4MjZiNTFjZjk5ZmVhZmYzNDgzYTlkZjhhZjIwNDNlN2VmYzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaWNoYWVsIEhhbnNlbiA8bWljaGFlbC5qLmhhbnNlbkBocC5jb20+CitEYXRlOiBNb24sIDI2IEZlYiAyMDE4IDEwOjE3OjAxIC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBvcGtnLWJ1aWxkOiBVc2UgbG9jYWwgdGltZSBmb3IgYnVpbGRfZGF0ZSwgc2luY2Ugb3BrZworIGV4dHJhY3RzIGZpbGVzIGFzc3VtaW5nIGxvY2FsIHRpbWUgcmF0aGVyIHRoYW4gVVRDLiBBbHNvIGluY3JlYXNlIHJlc29sdXRpb24KKyBvZiBidWlsZCBkYXRlIGRvd24gdG8gdGhlIHNlY29uZCwgcmF0aGVyIHRoYW4gY2xhbXBpbmcgdG8gbWlkbmlnaHQgb2YgdGhlCisgY3VycmVudCBkYXRlLgorCitTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEhhbnNlbiA8bWljaGFlbC5qLmhhbnNlbkBocC5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gZGVsIENhc3RpbGxvIDxhbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCistLS0KKyBvcGtnLWJ1aWxkIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK0luZGV4OiBvcGtnLXV0aWxzLTAuMy42L29wa2ctYnVpbGQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGtnLXV0aWxzLTAuMy42Lm9yaWcvb3BrZy1idWlsZAorKysrIG9wa2ctdXRpbHMtMC4zLjYvb3BrZy1idWlsZAorQEAgLTI4MiwxMSArMjgyLDExIEBAIGZpCisgdG1wX2Rpcj0kZGVzdF9kaXIvSVBLR19CVUlMRC4kJAorIG1rZGlyICR0bXBfZGlyCisgCistYnVpbGRfZGF0ZT0iJChkYXRlIC0tdXRjIC0tZGF0ZT0iQCR7U09VUkNFX0RBVEVfRVBPQ0g6LSQoZGF0ZSArJXMpfSIgKyVZLSVtLSVkKSIKKytidWlsZF9kYXRlPSIkKGRhdGUgLS1kYXRlPSJAJHtTT1VSQ0VfREFURV9FUE9DSDotJChkYXRlICslcyl9IiAiKyVZLSVtLSVkICVIOiVNOiVTIikiCisgCisgZWNobyAkQ09OVFJPTCA+ICR0bXBfZGlyL3RhclgKKy0oIGNkICRwa2dfZGlyICYmIHRhciAkb2dhcmdzICR0c29ydGFyZ3MgLS1tdGltZT0kYnVpbGRfZGF0ZSAtWCAkdG1wX2Rpci90YXJYIC1jICR0YXJmb3JtYXQgLiB8ICRjb21wcmVzc29yICRjb21wcmVzc29yYXJncyA+ICR0bXBfZGlyL2RhdGEudGFyLiRjZXh0ICkKKy0oIGNkICRwa2dfZGlyLyRDT05UUk9MICYmIHRhciAkb2dhcmdzICR0c29ydGFyZ3MgLS1tdGltZT0kYnVpbGRfZGF0ZSAtYyAkdGFyZm9ybWF0IC4gfCBnemlwICR6aXBhcmdzID4gJHRtcF9kaXIvY29udHJvbC50YXIuZ3ogKQorKyggY2QgJHBrZ19kaXIgJiYgdGFyICRvZ2FyZ3MgJHRzb3J0YXJncyAtLW10aW1lPSIkYnVpbGRfZGF0ZSIgLVggJHRtcF9kaXIvdGFyWCAtYyAkdGFyZm9ybWF0IC4gfCAkY29tcHJlc3NvciAkY29tcHJlc3NvcmFyZ3MgPiAkdG1wX2Rpci9kYXRhLnRhci4kY2V4dCApCisrKCBjZCAkcGtnX2Rpci8kQ09OVFJPTCAmJiB0YXIgJG9nYXJncyAkdHNvcnRhcmdzIC0tbXRpbWU9IiRidWlsZF9kYXRlIiAtYyAkdGFyZm9ybWF0IC4gfCBnemlwICR6aXBhcmdzID4gJHRtcF9kaXIvY29udHJvbC50YXIuZ3ogKQorIHJtICR0bXBfZGlyL3RhclgKKyAKKyBlY2hvICIyLjAiID4gJHRtcF9kaXIvZGViaWFuLWJpbmFyeQorQEAgLTMwMSw3ICszMDEsNyBAQCBybSAtZiAkcGtnX2ZpbGUKKyBpZiBbICIkb3V0ZXIiID0gImFyIiBdIDsgdGhlbgorICAgKCBjZCAkdG1wX2RpciAmJiBhciAtY3JmICRwa2dfZmlsZSAuL2RlYmlhbi1iaW5hcnkgLi9jb250cm9sLnRhci5neiAuL2RhdGEudGFyLiRjZXh0ICkKKyBlbHNlCistICAoIGNkICR0bXBfZGlyICYmIHRhciAtYyAkdHNvcnRhcmdzIC0tbXRpbWU9JGJ1aWxkX2RhdGUgJHRhcmZvcm1hdCAuL2RlYmlhbi1iaW5hcnkgLi9jb250cm9sLnRhci5neiAuL2RhdGEudGFyLiRjZXh0IHwgZ3ppcCAkemlwYXJncyA+ICRwa2dfZmlsZSApCisrICAoIGNkICR0bXBfZGlyICYmIHRhciAtYyAkdHNvcnRhcmdzIC0tbXRpbWU9IiRidWlsZF9kYXRlIiAkdGFyZm9ybWF0IC4vZGViaWFuLWJpbmFyeSAuL2NvbnRyb2wudGFyLmd6IC4vZGF0YS50YXIuJGNleHQgfCBnemlwICR6aXBhcmdzID4gJHBrZ19maWxlICkKKyBmaQorIAorIHJtICR0bXBfZGlyL2RlYmlhbi1iaW5hcnkgJHRtcF9kaXIvZGF0YS50YXIuJGNleHQgJHRtcF9kaXIvY29udHJvbC50YXIuZ3oKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzL3Rhcl9pZ25vcmVfZXJyb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy90YXJfaWdub3JlX2Vycm9yLnBhdGNoCmluZGV4IDM4MjRlYjMuLmQ4OTMxYjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzL3Rhcl9pZ25vcmVfZXJyb3IucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvdGFyX2lnbm9yZV9lcnJvci5wYXRjaApAQCAtMTgsMjYgKzE4LDI3IEBACiAKIAogSW5kZXg6IGdpdC9vcGtnLWJ1aWxkCisKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBnaXQub3JpZy9vcGtnLWJ1aWxkCiArKysgZ2l0L29wa2ctYnVpbGQKLUBAIC0yNTAsOCArMjUwLDIxIEBAIHRtcF9kaXI9JGRlc3RfZGlyL0lQS0dfQlVJTEQuJCQKLSBta2RpciAkdG1wX2RpcgorQEAgLTI4NSw4ICsyODUsMjEgQEAgbWtkaXIgJHRtcF9kaXIKKyBidWlsZF9kYXRlPSIkKGRhdGUgLS1kYXRlPSJAJHtTT1VSQ0VfREFURV9FUE9DSDotJChkYXRlICslcyl9IiAiKyVZLSVtLSVkICVIOiVNOiVTIikiCiAgCiAgZWNobyAkQ09OVFJPTCA+ICR0bXBfZGlyL3RhclgKLS0oIGNkICRwa2dfZGlyICYmIHRhciAkb2dhcmdzIC1YICR0bXBfZGlyL3RhclggLWMgLS0kY29tcHJlc3NvciAkdGFyZm9ybWF0IC1mICR0bXBfZGlyL2RhdGEudGFyLiRjZXh0IC4gKQotLSggY2QgJHBrZ19kaXIvJENPTlRST0wgJiYgdGFyICRvZ2FyZ3MgLWN6ICR0YXJmb3JtYXQgLWYgJHRtcF9kaXIvY29udHJvbC50YXIuZ3ogLiApCistKCBjZCAkcGtnX2RpciAmJiB0YXIgJG9nYXJncyAkdHNvcnRhcmdzIC0tbXRpbWU9IiRidWlsZF9kYXRlIiAtWCAkdG1wX2Rpci90YXJYIC1jICR0YXJmb3JtYXQgLiB8ICRjb21wcmVzc29yICRjb21wcmVzc29yYXJncyA+ICR0bXBfZGlyL2RhdGEudGFyLiRjZXh0ICkKKy0oIGNkICRwa2dfZGlyLyRDT05UUk9MICYmIHRhciAkb2dhcmdzICR0c29ydGFyZ3MgLS1tdGltZT0iJGJ1aWxkX2RhdGUiIC1jICR0YXJmb3JtYXQgLiB8IGd6aXAgJHppcGFyZ3MgPiAkdG1wX2Rpci9jb250cm9sLnRhci5neiApCiArCiArCiArIyBJZ25vcmUgZXJyb3IgY29kZSAxLCBjYXVzZWQgYnkgbW9kaWZ5aW5nIHRoZSBudW1iZXIgb2YgaGFyZCBsaW5rcyB3aGlsZSBjcmVhdGluZyB0aGUgdGFyIGZpbGUKICtyYz0wCi0rKCBjZCAkcGtnX2RpciAmJiB0YXIgJG9nYXJncyAtWCAkdG1wX2Rpci90YXJYIC1jeiAkdGFyZm9ybWF0IC1mICR0bXBfZGlyL2RhdGEudGFyLmd6IC4gKSB8fCByYz0kPworKyggY2QgJHBrZ19kaXIgJiYgdGFyICRvZ2FyZ3MgJHRzb3J0YXJncyAtLW10aW1lPSIkYnVpbGRfZGF0ZSIgLVggJHRtcF9kaXIvdGFyWCAtYyAkdGFyZm9ybWF0IC4gfCAkY29tcHJlc3NvciAkY29tcHJlc3NvcmFyZ3MgPiAkdG1wX2Rpci9kYXRhLnRhci4kY2V4dCApIHx8IHJjPSQ/CiAraWYgWyAkcmMgLW5lIDEgXSAmJiBbICRyYyAtbmUgMCBdOyB0aGVuCiArICAgICAgICBleGl0ICRyYyAKICtmaQogKwogK3JjPTAKLSsoIGNkICRwa2dfZGlyLyRDT05UUk9MICYmIHRhciAkb2dhcmdzIC1jeiAkdGFyZm9ybWF0IC1mICR0bXBfZGlyL2NvbnRyb2wudGFyLmd6IC4gKSB8fCByYz0kPworKyggY2QgJHBrZ19kaXIvJENPTlRST0wgJiYgdGFyICRvZ2FyZ3MgJHRzb3J0YXJncyAtLW10aW1lPSIkYnVpbGRfZGF0ZSIgLWMgJHRhcmZvcm1hdCAuIHwgZ3ppcCAkemlwYXJncyA+ICR0bXBfZGlyL2NvbnRyb2wudGFyLmd6ICkgfHwgcmM9JD8KICtpZiBbICRyYyAtbmUgMSBdICYmIFsgJHJjIC1uZSAwIF07IHRoZW4KICsgICAgICAgIGV4aXQgJHJjCiArZmkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzL3RocmVhZGVkLXh6LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvdGhyZWFkZWQteHoucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNhNDlmOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzL3RocmVhZGVkLXh6LnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKK1Bhc3MgLS10aHJlYWRzPTAgdG8geHogc28gdGhhdCBpdCB3aWxsIHVzZSBhcyBtYW55IHRocmVhZHMgYXMgdGhlcmUgYXJlIGNvcmVzIHRvIGNvbXByZXNzIHRoZSBwYWNrYWdlcy4gIFRoaXMgbWFrZXMgcWVtdSdzIGRvX3BhY2thZ2VfaXBrIHJ1biBpbiAzNHMgaW5zdGVhZCBvZiAyNzVzIG9uIG15IG1hY2hpbmUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSAodWdseSBidXQgd29ya3MsIGRpc2N1c3Npbmcgd2l0aCB1cHN0cmVhbSBub3cpCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvb3BrZy1idWlsZCBiL29wa2ctYnVpbGQKK2luZGV4IDAwNTBjMmIuLjkzYTc5NTYgMTAwNzU1CistLS0gYS9vcGtnLWJ1aWxkCisrKysgYi9vcGtnLWJ1aWxkCitAQCAtMjMwLDYgKzIzMCw4IEBAIGlmIGd6aXAgLS1oZWxwIDI+JjEgfCBncmVwIC0tICItVCIgPiAvZGV2L251bGw7IHRoZW4KKyBmaQorIGlmIFsgJGNvbXByZXNzb3IgPSAiZ3ppcCIgXSA7IHRoZW4KKyAJY29tcHJlc3NvcmFyZ3M9JHppcGFyZ3MKKytlbGlmIFsgJGNvbXByZXNzb3IgPSAieHoiIF0gOyB0aGVuCisrCWNvbXByZXNzb3JhcmdzPSItLXRocmVhZHMgMCIKKyBmaQorIAorIHRzb3J0YXJncz0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzXzAuMy41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHNfMC4zLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0NmNjOGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHNfMC4zLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1TVU1NQVJZID0gIkFkZGl0aW9uYWwgdXRpbGl0aWVzIGZvciB0aGUgb3BrZyBwYWNrYWdlIG1hbmFnZXIiCi1TVU1NQVJZX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJVdGlsaXR5IGZvciBtYW5hZ2luZyB0aGUgYWx0ZXJuYXRpdmVzIHN5c3RlbSIKLVNFQ1RJT04gPSAiYmFzZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL29wa2ctdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL29wa2cucHk7YmVnaW5saW5lPTI7ZW5kbGluZT0xODttZDU9NjNjZTllNmJjYzQ0NTE4MWNkOWU0YmFmNGI0Y2NjMzUiCi1QUk9WSURFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndXBkYXRlLWFsdGVybmF0aXZlcycsICd2aXJ0dWFsL3VwZGF0ZS1hbHRlcm5hdGl2ZXMnLCAnJywgZCl9IgotCi1TUkNfVVJJID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpLyR7QlBOfS9zbmFwc2hvdC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtU3dpdGNoLWFsbC1zY3JpcHRzLXRvLXVzZS1QeXRob24tMy54LnBhdGNoIFwKLSIKLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL3Rhcl9pZ25vcmVfZXJyb3IucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhMTllMDljNzliZjExNTJhYWM2MmU4YTEyMGQ2NzlmZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZjRiMDg5MTJlMjZhM2Y0ZjZmNDIzZjNiNGU3MTU3YTczYjFmM2E3NDgzZmM1OWIyMTZkMWE4MGI1MGIwYzM4IgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotIyBGb3IgbmF0aXZlIGJ1aWxkcyB3ZSB1c2UgdGhlIGhvc3QgUHl0aG9uCi1QWVRIT05SREVQUyA9ICJweXRob24zIHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1pbyBweXRob24zLW1hdGggcHl0aG9uMy1jcnlwdCBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1mY250bCBweXRob24zLXN1YnByb2Nlc3MgcHl0aG9uMy1waWNrbGUgcHl0aG9uMy1jb21wcmVzc2lvbiBweXRob24zLXRleHR1dGlscyBweXRob24zLXN0cmluZ29sZCIKLVBZVEhPTlJERVBTX2NsYXNzLW5hdGl2ZSA9ICIiCi0KLVBBQ0tBR0VDT05GSUcgPSAicHl0aG9uIHVwZGF0ZS1hbHRlcm5hdGl2ZXMiCi1QQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLCwsJHtQWVRIT05SREVQU30iCi1QQUNLQUdFQ09ORklHW3VwZGF0ZS1hbHRlcm5hdGl2ZXNdID0gIiwsLCIKLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlIFBSRUZJWD0ke3ByZWZpeH0gREVTVERJUj0ke0R9IGluc3RhbGwKLQlpZiAhICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3VwZGF0ZS1hbHRlcm5hdGl2ZXMnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlybSAtZiAiJHtEfSR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIgotCWZpCi0KLSAgICBpZiAhICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGdyZXAgLWxaICIvdXNyL2Jpbi9lbnYuKnB5dGhvbiIgJHtEfSR7YmluZGlyfS8qIHwgeGFyZ3MgLTAgcm0KLSAgICBmaQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0JaWYgWyAtZSAiJHtEfSR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIiBdOyB0aGVuCi0JCXNlZCAtaSAke0R9JHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMgLWUgJ3MsL3Vzci9iaW4sJHtiaW5kaXJ9LGc7IHMsL3Vzci9saWIsJHtub25hcmNoX2xpYmRpcn0sZycKLQlmaQotfQotCi0jIFRoZXNlIGFyZSBlbXB0eSBhbmQgd2lsbCBwdWxsIHB5dGhvbjMtZGV2IGludG8gaW1hZ2VzIHdoZXJlIGl0IHdvdWxkbid0Ci0jIGhhdmUgYmVlbiBvdGhlcndpc2UsIHNvIGRvbid0IGdlbmVyYXRlIHRoZW0uCi1QQUNLQUdFU19yZW1vdmUgPSAiJHtQTn0tZGV2ICR7UE59LXN0YXRpY2RldiIKLQotUEFDS0FHRVMgPSsgInVwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyIKLUZJTEVTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICIke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyIKLVJQUk9WSURFU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAidXBkYXRlLWFsdGVybmF0aXZlcyB1cGRhdGUtYWx0ZXJuYXRpdmVzLWN3b3J0aCIKLVJSRVBMQUNFU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAidXBkYXRlLWFsdGVybmF0aXZlcy1jd29ydGgiCi1SQ09ORkxJQ1RTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJ1cGRhdGUtYWx0ZXJuYXRpdmVzLWN3b3J0aCIKLQotcGtnX3Bvc3RybV91cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2coKSB7Ci0Jcm0gLXJmICREJHtub25hcmNoX2xpYmRpcn0vb3BrZy9hbHRlcm5hdGl2ZXMKLQlybWRpciAkRCR7bm9uYXJjaF9saWJkaXJ9L29wa2cgfHwgdHJ1ZQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLUNMRUFOQlJPS0VOID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc18wLjMuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzXzAuMy42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0ODdjNWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc18wLjMuNi5iYgpAQCAtMCwwICsxLDY3IEBACitTVU1NQVJZID0gIkFkZGl0aW9uYWwgdXRpbGl0aWVzIGZvciB0aGUgb3BrZyBwYWNrYWdlIG1hbmFnZXIiCitTVU1NQVJZX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJVdGlsaXR5IGZvciBtYW5hZ2luZyB0aGUgYWx0ZXJuYXRpdmVzIHN5c3RlbSIKK1NFQ1RJT04gPSAiYmFzZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL29wa2ctdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL29wa2cucHk7YmVnaW5saW5lPTI7ZW5kbGluZT0xODttZDU9NjNjZTllNmJjYzQ0NTE4MWNkOWU0YmFmNGI0Y2NjMzUiCitQUk9WSURFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndXBkYXRlLWFsdGVybmF0aXZlcycsICd2aXJ0dWFsL3VwZGF0ZS1hbHRlcm5hdGl2ZXMnLCAnJywgZCl9IgorCitTUkNfVVJJID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpLyR7QlBOfS9zbmFwc2hvdC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtU3dpdGNoLWFsbC1zY3JpcHRzLXRvLXVzZS1QeXRob24tMy54LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtT25seS11c2Utc29ydC1uYW1lLW9uLXZlcnNpb25zLW9mLXRhci13aGljaC1zdXBwb3J0LS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLW9wa2ctYnVpbGQtVXNlLWxvY2FsLXRpbWUtZm9yLWJ1aWxkX2RhdGUtc2luY2Utb3BrZy0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdGhyZWFkZWQteHoucGF0Y2ggXAorIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vdGFyX2lnbm9yZV9lcnJvci5wYXRjaCIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9vcGtnLXV0aWxzL3JlZnMvIgorCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzOTFjMWM4MGFjYTI2OTYxMzc1ZGQyMmUxZDJkMGNiZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyNmIzZjRkZDFjMWVmNjVmNTE5ZDRjZGRmYjM1ZWJlYTQxYWU4YWY5ODlhZWEyNjk5YTM5NzgzNTk4YzMzNzY5IgorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworIyBGb3IgbmF0aXZlIGJ1aWxkcyB3ZSB1c2UgdGhlIGhvc3QgUHl0aG9uCitQWVRIT05SREVQUyA9ICJweXRob24zIHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1pbyBweXRob24zLW1hdGggcHl0aG9uMy1jcnlwdCBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1mY250bCBweXRob24zLXBpY2tsZSBweXRob24zLWNvbXByZXNzaW9uIHB5dGhvbjMtc3RyaW5nb2xkIgorUFlUSE9OUkRFUFNfY2xhc3MtbmF0aXZlID0gIiIKKworUEFDS0FHRUNPTkZJRyA9ICJweXRob24gdXBkYXRlLWFsdGVybmF0aXZlcyIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICIsLCwke1BZVEhPTlJERVBTfSIKK1BBQ0tBR0VDT05GSUdbdXBkYXRlLWFsdGVybmF0aXZlc10gPSAiLCwsIgorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgUFJFRklYPSR7cHJlZml4fSBERVNURElSPSR7RH0gaW5zdGFsbAorCWlmICEgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndXBkYXRlLWFsdGVybmF0aXZlcycsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCXJtIC1mICIke0R9JHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMiCisJZmkKKworICAgIGlmICEgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgZ3JlcCAtbFogIi91c3IvYmluL2Vudi4qcHl0aG9uIiAke0R9JHtiaW5kaXJ9LyogfCB4YXJncyAtMCBybQorICAgIGZpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKwlpZiBbIC1lICIke0R9JHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMiIF07IHRoZW4KKwkJc2VkIC1pICR7RH0ke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyAtZSAncywvdXNyL2Jpbiwke2JpbmRpcn0sZzsgcywvdXNyL2xpYiwke25vbmFyY2hfbGliZGlyfSxnJworCWZpCit9CisKKyMgVGhlc2UgYXJlIGVtcHR5IGFuZCB3aWxsIHB1bGwgcHl0aG9uMy1kZXYgaW50byBpbWFnZXMgd2hlcmUgaXQgd291bGRuJ3QKKyMgaGF2ZSBiZWVuIG90aGVyd2lzZSwgc28gZG9uJ3QgZ2VuZXJhdGUgdGhlbS4KK1BBQ0tBR0VTX3JlbW92ZSA9ICIke1BOfS1kZXYgJHtQTn0tc3RhdGljZGV2IgorCitQQUNLQUdFUyA9KyAidXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnIgorRklMRVNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gIiR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIgorUlBST1ZJREVTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJ1cGRhdGUtYWx0ZXJuYXRpdmVzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMtY3dvcnRoIgorUlJFUExBQ0VTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJ1cGRhdGUtYWx0ZXJuYXRpdmVzLWN3b3J0aCIKK1JDT05GTElDVFNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gInVwZGF0ZS1hbHRlcm5hdGl2ZXMtY3dvcnRoIgorCitwa2dfcG9zdHJtX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZygpIHsKKwlybSAtcmYgJEQke25vbmFyY2hfbGliZGlyfS9vcGtnL2FsdGVybmF0aXZlcworCXJtZGlyICREJHtub25hcmNoX2xpYmRpcn0vb3BrZyB8fCB0cnVlCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworQ0xFQU5CUk9LRU4gPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnXzAuMy41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2dfMC4zLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlNTExYjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2dfMC4zLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi1TVU1NQVJZID0gIk9wZW4gUGFja2FnZSBNYW5hZ2VyIgotU1VNTUFSWV9saWJvcGtnID0gIk9wZW4gUGFja2FnZSBNYW5hZ2VyIGxpYnJhcnkiCi1TRUNUSU9OID0gImJhc2UiCi1IT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3Avb3BrZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9vcGtnL2lzc3Vlcy9saXN0IgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvb3BrZy5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MjE7bWQ1PTkwNDM1YTUxOWM2ZWE2OWVmMjJlNGE4OGJjYzUyZmEwIgotCi1ERVBFTkRTID0gImxpYmFyY2hpdmUiCi0KLVBFID0gIjEiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL29wa2ctY29uZmlndXJlLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vb3BrZy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtb3BrZ19jb25mLWNyZWF0ZS1vcGtnLmxvY2staW4tcnVuLWluc3RlYWQtb2YtdmFyLXJ1bi5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkMjAyZDA5ZWEwOTMyOTQzMDcxYjg0MjYyNmNhYjEzYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3MzRiYzIxZGVhMTEyNjIxMTNmYTg2YjkyOGQwOTgxMjYxOGIzOTY2ZjM1MjM1MGNmOTE2YTZhZTBkMzQzZjMyIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZAotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAib3BrZy1jb25maWd1cmUuc2VydmljZSIKLQotdGFyZ2V0X2xvY2Fsc3RhdGVkaXIgOj0gIiR7bG9jYWxzdGF0ZWRpcn0iCi1PUEtHTElCRElSID0gIiR7dGFyZ2V0X2xvY2Fsc3RhdGVkaXJ9L2xpYiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImxpYnNvbHYiCi0KLVBBQ0tBR0VDT05GSUdbZ3BnXSA9ICItLWVuYWJsZS1ncGcsLS1kaXNhYmxlLWdwZyxncGdtZSBsaWJncGctZXJyb3IsZ251cGciCi1QQUNLQUdFQ09ORklHW2N1cmxdID0gIi0tZW5hYmxlLWN1cmwsLS1kaXNhYmxlLWN1cmwsY3VybCIKLVBBQ0tBR0VDT05GSUdbc3NsLWN1cmxdID0gIi0tZW5hYmxlLXNzbC1jdXJsLC0tZGlzYWJsZS1zc2wtY3VybCxjdXJsIG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0tZW5hYmxlLW9wZW5zc2wsLS1kaXNhYmxlLW9wZW5zc2wsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbc2hhMjU2XSA9ICItLWVuYWJsZS1zaGEyNTYsLS1kaXNhYmxlLXNoYTI1NiIKLVBBQ0tBR0VDT05GSUdbcGF0aGZpbmRlcl0gPSAiLS1lbmFibGUtcGF0aGZpbmRlciwtLWRpc2FibGUtcGF0aGZpbmRlcixwYXRoZmluZGVyIgotUEFDS0FHRUNPTkZJR1tsaWJzb2x2XSA9ICItLXdpdGgtbGlic29sdiwtLXdpdGhvdXQtbGlic29sdixsaWJzb2x2IgotCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0tbG9jYWxzdGF0ZWRpcj0vJHtAb3MucGF0aC5yZWxwYXRoKCcke2xvY2Fsc3RhdGVkaXJ9JywgJyR7U1RBR0lOR19ESVJfTkFUSVZFfScpfSAtLXN5c2NvbmZkaXI9LyR7QG9zLnBhdGgucmVscGF0aCgnJHtzeXNjb25mZGlyfScsICcke1NUQUdJTkdfRElSX05BVElWRX0nKX0iCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L29wa2cKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9vcGtnLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYKLQllY2hvICJvcHRpb24gbGlzdHNfZGlyICR7T1BLR0xJQkRJUn0vb3BrZy9saXN0cyIgPj4ke0R9JHtzeXNjb25mZGlyfS9vcGtnL29wa2cuY29uZgotCi0JIyBXZSBuZWVkIHRvIGNyZWF0ZSB0aGUgbG9jayBkaXJlY3RvcnkKLQlpbnN0YWxsIC1kICR7RH0ke09QS0dMSUJESVJ9L29wa2cKLQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07dGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L29wa2ctY29uZmlndXJlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0JCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKLQkJCS1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKLQkJCS1lICdzLEBCSU5ESVJALCR7YmluZGlyfSxnJyBcCi0JCQktZSAncyxAU1lTVEVNRF9VTklURElSQCwke3N5c3RlbWRfdW5pdGRpcn0sZycgXAotCQkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BrZy1jb25maWd1cmUuc2VydmljZQotCWZpCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gIiR7VklSVFVBTC1SVU5USU1FX3VwZGF0ZS1hbHRlcm5hdGl2ZXN9IG9wa2ctYXJjaC1jb25maWcgbGliYXJjaGl2ZSIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAiIgotUlJFUExBQ0VTXyR7UE59ID0gIm9wa2ctbm9ncGcgb3BrZy1jb2xsYXRlcmFsIgotUkNPTkZMSUNUU18ke1BOfSA9ICJvcGtnLWNvbGxhdGVyYWwiCi1SUFJPVklERVNfJHtQTn0gPSAib3BrZy1jb2xsYXRlcmFsIgotCi1QQUNLQUdFUyA9KyAibGlib3BrZyIKLQotRklMRVNfbGlib3BrZyA9ICIke2xpYmRpcn0vKi5zby4qICR7T1BLR0xJQkRJUn0vb3BrZy8iCi1GSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjMuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnXzAuMy42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwZjIwYWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjMuNi5iYgpAQCAtMCwwICsxLDc1IEBACitTVU1NQVJZID0gIk9wZW4gUGFja2FnZSBNYW5hZ2VyIgorU1VNTUFSWV9saWJvcGtnID0gIk9wZW4gUGFja2FnZSBNYW5hZ2VyIGxpYnJhcnkiCitTRUNUSU9OID0gImJhc2UiCitIT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3Avb3BrZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9vcGtnL2lzc3Vlcy9saXN0IgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvb3BrZy5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MjE7bWQ1PTkwNDM1YTUxOWM2ZWE2OWVmMjJlNGE4OGJjYzUyZmEwIgorCitERVBFTkRTID0gImxpYmFyY2hpdmUiCisKK1BFID0gIjEiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL29wa2ctY29uZmlndXJlLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vb3BrZy5jb25mIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtb3BrZ19jb25mLWNyZWF0ZS1vcGtnLmxvY2staW4tcnVuLWluc3RlYWQtb2YtdmFyLXJ1bi5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3OWUwNDMwN2Y2ZjU0ZGI0MzFjMjUxNzcyZDdkOTg3YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNjA3ZjBlNjFiZThjZjhhM2JiZDBkMmRjY2Q5ZWM5ZTliNmMyMWRkNDMwN2I2NzFjNjAwZDZlZWFmODRkMzBiIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZAorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAib3BrZy1jb25maWd1cmUuc2VydmljZSIKKwordGFyZ2V0X2xvY2Fsc3RhdGVkaXIgOj0gIiR7bG9jYWxzdGF0ZWRpcn0iCitPUEtHTElCRElSID0gIiR7dGFyZ2V0X2xvY2Fsc3RhdGVkaXJ9L2xpYiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImxpYnNvbHYiCisKK1BBQ0tBR0VDT05GSUdbZ3BnXSA9ICItLWVuYWJsZS1ncGcsLS1kaXNhYmxlLWdwZyxncGdtZSBsaWJncGctZXJyb3IsZ251cGciCitQQUNLQUdFQ09ORklHW2N1cmxdID0gIi0tZW5hYmxlLWN1cmwsLS1kaXNhYmxlLWN1cmwsY3VybCIKK1BBQ0tBR0VDT05GSUdbc3NsLWN1cmxdID0gIi0tZW5hYmxlLXNzbC1jdXJsLC0tZGlzYWJsZS1zc2wtY3VybCxjdXJsIG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0tZW5hYmxlLW9wZW5zc2wsLS1kaXNhYmxlLW9wZW5zc2wsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbc2hhMjU2XSA9ICItLWVuYWJsZS1zaGEyNTYsLS1kaXNhYmxlLXNoYTI1NiIKK1BBQ0tBR0VDT05GSUdbcGF0aGZpbmRlcl0gPSAiLS1lbmFibGUtcGF0aGZpbmRlciwtLWRpc2FibGUtcGF0aGZpbmRlcixwYXRoZmluZGVyIgorUEFDS0FHRUNPTkZJR1tsaWJzb2x2XSA9ICItLXdpdGgtbGlic29sdiwtLXdpdGhvdXQtbGlic29sdixsaWJzb2x2IgorCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0tbG9jYWxzdGF0ZWRpcj0vJHtAb3MucGF0aC5yZWxwYXRoKCcke2xvY2Fsc3RhdGVkaXJ9JywgJyR7U1RBR0lOR19ESVJfTkFUSVZFfScpfSAtLXN5c2NvbmZkaXI9LyR7QG9zLnBhdGgucmVscGF0aCgnJHtzeXNjb25mZGlyfScsICcke1NUQUdJTkdfRElSX05BVElWRX0nKX0iCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L29wa2cKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9vcGtnLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYKKwllY2hvICJvcHRpb24gbGlzdHNfZGlyICR7T1BLR0xJQkRJUn0vb3BrZy9saXN0cyIgPj4ke0R9JHtzeXNjb25mZGlyfS9vcGtnL29wa2cuY29uZgorCisJIyBXZSBuZWVkIHRvIGNyZWF0ZSB0aGUgbG9jayBkaXJlY3RvcnkKKwlpbnN0YWxsIC1kICR7RH0ke09QS0dMSUJESVJ9L29wa2cKKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07dGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L29wa2ctY29uZmlndXJlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisJCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKwkJCS1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKKwkJCS1lICdzLEBCSU5ESVJALCR7YmluZGlyfSxnJyBcCisJCQktZSAncyxAU1lTVEVNRF9VTklURElSQCwke3N5c3RlbWRfdW5pdGRpcn0sZycgXAorCQkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BrZy1jb25maWd1cmUuc2VydmljZQorCWZpCit9CisKK1JERVBFTkRTXyR7UE59ID0gIiR7VklSVFVBTC1SVU5USU1FX3VwZGF0ZS1hbHRlcm5hdGl2ZXN9IG9wa2ctYXJjaC1jb25maWcgbGliYXJjaGl2ZSIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAiIgorUlJFUExBQ0VTXyR7UE59ID0gIm9wa2ctbm9ncGcgb3BrZy1jb2xsYXRlcmFsIgorUkNPTkZMSUNUU18ke1BOfSA9ICJvcGtnLWNvbGxhdGVyYWwiCitSUFJPVklERVNfJHtQTn0gPSAib3BrZy1jb2xsYXRlcmFsIgorCitQQUNLQUdFUyA9KyAibGlib3BrZyIKKworRklMRVNfbGlib3BrZyA9ICIke2xpYmRpcn0vKi5zby4qICR7T1BLR0xJQkRJUn0vb3BrZy8iCitGSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29yYy9vcmNfMC40LjI3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcmMvb3JjXzAuNC4yNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzAzZjk5MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29yYy9vcmNfMC40LjI3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotU1VNTUFSWSA9ICJPcHRpbWlzZWQgSW5uZXIgTG9vcCBSdW50aW1lIENvbXBpbGVyIgotSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvbW9kdWxlcy9vcmMuaHRtbCIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlICYgQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTQwMGJkOWQwOWU4YWY1NmI5ZWM5ODJiM2Q4NTc5N2UiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL29yYy9vcmMtJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTgzN2RjMjBkYWNiNWI2Njg5MzViYmRlZDEwY2JiNjEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTFlNTNlNThmYzgxNThlNTk4NmExZjFhNDlhNmQ5NzBjNWIxNjQ5Mzg0MWNmN2I5ZGUyYzJiZGU3Y2UzNmI5MyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1QQUNLQUdFUyA9KyAib3JjLWV4YW1wbGVzIgotUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpYm9yYy0uKiIKLUZJTEVTX29yYy1leGFtcGxlcyA9ICIke2xpYmRpcn0vb3JjLyoiCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vKiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGxpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0nKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdPUkMgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCi19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUgKCkgewotICAgIHNlZCAtaSAtZSAncyMvdG1wIy4jZycgJHtTfS9vcmMvb3JjY29kZW1lbS5jCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29yYy9vcmNfMC40LjI4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcmMvb3JjXzAuNC4yOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTVkZTY0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcmMvb3JjXzAuNC4yOC5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIk9wdGltaXNlZCBJbm5lciBMb29wIFJ1bnRpbWUgQ29tcGlsZXIiCitIT01FUEFHRSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9tb2R1bGVzL29yYy5odG1sIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UgJiBCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xNDAwYmQ5ZDA5ZThhZjU2YjllYzk4MmIzZDg1Nzk3ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvb3JjL29yYy0ke1BWfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2YjU4MmVjNGIzMjc1YzVlZmQ1MWUzYWU2NDA2ZDQ0NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiZmNkN2M2NTYzYjA1NjcyMzg2YzRlZWRmYzRjMGQ0YTBhMTJiNGI0Nzc1Yjc0ZWM2ZGViODhmYzJiY2Q4M2NlIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1BBQ0tBR0VTID0rICJvcmMtZXhhbXBsZXMiCitQQUNLQUdFU19EWU5BTUlDICs9ICJebGlib3JjLS4qIgorRklMRVNfb3JjLWV4YW1wbGVzID0gIiR7bGliZGlyfS9vcmMvKiIKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS8qIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfScpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnXmxpYiguKilcLnNvXC4qJywgJ2xpYiVzJywgJ09SQyAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKK30KKworZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisgICAgc2VkIC1pIC1lICdzIy90bXAjLiNnJyAke1N9L29yYy9vcmNjb2RlbWVtLmMKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2gvMDAwMi1GaXgtc2VnZmF1bHQtd2l0aC1tYW5nbGVkLXJlbmFtZS1wYXRjaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2gvMDAwMi1GaXgtc2VnZmF1bHQtd2l0aC1tYW5nbGVkLXJlbmFtZS1wYXRjaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGJkNmZhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaC9wYXRjaC8wMDAyLUZpeC1zZWdmYXVsdC13aXRoLW1hbmdsZWQtcmVuYW1lLXBhdGNoLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gZjI5MGY0OGE2MjE4NjcwODQ4ODRiZmZmODdmODA5M2MxNTE5NWU2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlYXMgR3J1ZW5iYWNoZXIgPGFncnVlbkBnbnUub3JnPgorRGF0ZTogTW9uLCAxMiBGZWIgMjAxOCAxNjo0ODoyNCArMDEwMAorU3ViamVjdDogW1BBVENIXSBGaXggc2VnZmF1bHQgd2l0aCBtYW5nbGVkIHJlbmFtZSBwYXRjaAorCitodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz81MzEzMgorKiBzcmMvcGNoLmMgKGludHVpdF9kaWZmX3R5cGUpOiBFbnN1cmUgdGhhdCB0d28gZmlsZW5hbWVzIGFyZSBzcGVjaWZpZWQKK2ZvciByZW5hbWVzIGFuZCBjb3BpZXMgKGZpeCB0aGUgZXhpc3RpbmcgY2hlY2spLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9wYXRjaC5naXQvY29tbWl0Lz9pZD1mMjkwZjQ4YTYyMTg2NzA4NDg4NGJmZmY4N2Y4MDkzYzE1MTk1ZTZhXQorQ1ZFOiBDVkUtMjAxOC02OTUxCisKK1NpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CisKKy0tLQorIHNyYy9wY2guYyB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3BjaC5jIGIvc3JjL3BjaC5jCitpbmRleCBmZjllZDJjLi5iYzYyNzhjIDEwMDY0NAorLS0tIGEvc3JjL3BjaC5jCisrKysgYi9zcmMvcGNoLmMKK0BAIC05NzQsNyArOTc0LDggQEAgaW50dWl0X2RpZmZfdHlwZSAoYm9vbCBuZWVkX2hlYWRlciwgbW9kZV90ICpwX2ZpbGVfdHlwZSkKKyAgICAgaWYgKChwY2hfcmVuYW1lICgpIHx8IHBjaF9jb3B5ICgpKQorIAkmJiAhIGlubmFtZQorIAkmJiAhICgoaSA9PSBPTEQgfHwgaSA9PSBORVcpICYmCistCSAgICAgIHBfbmFtZVshIHJldmVyc2VdICYmCisrCSAgICAgIHBfbmFtZVtyZXZlcnNlXSAmJiBwX25hbWVbISByZXZlcnNlXSAmJgorKwkgICAgICBuYW1lX2lzX3ZhbGlkIChwX25hbWVbcmV2ZXJzZV0pICYmCisgCSAgICAgIG5hbWVfaXNfdmFsaWQgKHBfbmFtZVshIHJldmVyc2VdKSkpCisgICAgICAgeworIAlzYXkgKCJDYW5ub3QgJXMgZmlsZSB3aXRob3V0IHR3byB2YWxpZCBmaWxlIG5hbWVzXG4iLCBwY2hfcmVuYW1lICgpID8gInJlbmFtZSIgOiAiY29weSIpOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoLzAwMDMtQWxsb3ctaW5wdXQtZmlsZXMtdG8tYmUtbWlzc2luZy1mb3ItZWQtc3R5bGUtcGF0Y2hlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2gvMDAwMy1BbGxvdy1pbnB1dC1maWxlcy10by1iZS1taXNzaW5nLWZvci1lZC1zdHlsZS1wYXRjaGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhMDlkMGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoLzAwMDMtQWxsb3ctaW5wdXQtZmlsZXMtdG8tYmUtbWlzc2luZy1mb3ItZWQtc3R5bGUtcGF0Y2hlcy5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIGI1YTkxYTAxZTVkMDg5N2ZhY2RkMGY0OWQ2NGI3NmIwZjAyYjQzZTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZWFzIEdydWVuYmFjaGVyIDxhZ3J1ZW5AZ251Lm9yZz4KK0RhdGU6IEZyaSwgNiBBcHIgMjAxOCAxMTozNDo1MSArMDIwMAorU3ViamVjdDogW1BBVENIXSBBbGxvdyBpbnB1dCBmaWxlcyB0byBiZSBtaXNzaW5nIGZvciBlZC1zdHlsZSBwYXRjaGVzCisKKyogc3JjL3BjaC5jIChkb19lZF9zY3JpcHQpOiBBbGxvdyBpbnB1dCBmaWxlcyB0byBiZSBtaXNzaW5nIHNvIHRoYXQgbmV3CitmaWxlcyB3aWxsIGJlIGNyZWF0ZWQgYXMgd2l0aCBub24tZWQtc3R5bGUgcGF0Y2hlcy4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvcGF0Y2guZ2l0L2NvbW1pdC8/aWQ9YjVhOTFhMDFlNWQwODk3ZmFjZGQwZjQ5ZDY0Yjc2YjBmMDJiNDNlMV0KK0NWRTogQ1ZFLTIwMTgtMTAwMDE1NgorCitTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL3BjaC5jIHwgOCArKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcGNoLmMgYi9zcmMvcGNoLmMKK2luZGV4IGJjNjI3OGMuLjBjNWNjMjYgMTAwNjQ0CistLS0gYS9zcmMvcGNoLmMKKysrKyBiL3NyYy9wY2guYworQEAgLTIzOTQsOSArMjM5NCwxMSBAQCBkb19lZF9zY3JpcHQgKGNoYXIgY29uc3QgKmlubmFtZSwgY2hhciBjb25zdCAqb3V0bmFtZSwKKyAKKyAgICAgaWYgKCEgZHJ5X3J1biAmJiAhIHNraXBfcmVzdF9vZl9wYXRjaCkgeworIAlpbnQgZXhjbHVzaXZlID0gKm91dG5hbWVfbmVlZHNfcmVtb3ZhbCA/IDAgOiBPX0VYQ0w7CistCWFzc2VydCAoISBpbmVycm5vKTsKKy0JKm91dG5hbWVfbmVlZHNfcmVtb3ZhbCA9IHRydWU7CistCWNvcHlfZmlsZSAoaW5uYW1lLCBvdXRuYW1lLCAwLCBleGNsdXNpdmUsIGluc3RhdC5zdF9tb2RlLCB0cnVlKTsKKysJaWYgKGluZXJybm8gIT0gRU5PRU5UKQorKwkgIHsKKysJICAgICpvdXRuYW1lX25lZWRzX3JlbW92YWwgPSB0cnVlOworKwkgICAgY29weV9maWxlIChpbm5hbWUsIG91dG5hbWUsIDAsIGV4Y2x1c2l2ZSwgaW5zdGF0LnN0X21vZGUsIHRydWUpOworKwkgIH0KKyAJc3ByaW50ZiAoYnVmLCAiJXMgJXMlcyIsIGVkaXRvcl9wcm9ncmFtLAorIAkJIHZlcmJvc2l0eSA9PSBWRVJCT1NFID8gIiIgOiAiLSAiLAorIAkJIG91dG5hbWUpOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoLzAwMDQtRml4LWFyYml0cmFyeS1jb21tYW5kLWV4ZWN1dGlvbi1pbi1lZC1zdHlsZS1wYXRjaGVzLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2gvMDAwNC1GaXgtYXJiaXRyYXJ5LWNvbW1hbmQtZXhlY3V0aW9uLWluLWVkLXN0eWxlLXBhdGNoZXMtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3NGMyZjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoLzAwMDQtRml4LWFyYml0cmFyeS1jb21tYW5kLWV4ZWN1dGlvbi1pbi1lZC1zdHlsZS1wYXRjaGVzLS5wYXRjaApAQCAtMCwwICsxLDIxNSBAQAorRnJvbSAxMjNlYWZmMGQ1ZDFhZWJlMTI4Mjk1OTU5NDM1YjljYTU5MDljMjZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmVhcyBHcnVlbmJhY2hlciA8YWdydWVuQGdudS5vcmc+CitEYXRlOiBGcmksIDYgQXByIDIwMTggMTI6MTQ6NDkgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGFyYml0cmFyeSBjb21tYW5kIGV4ZWN1dGlvbiBpbiBlZC1zdHlsZSBwYXRjaGVzIChDVkUtMjAxOC0xMDAwMTU2KQorCisqIHNyYy9wY2guYyAoZG9fZWRfc2NyaXB0KTogV3JpdGUgZWQgc2NyaXB0IHRvIGEgdGVtcG9yYXJ5IGZpbGUgaW5zdGVhZAorb2YgcGlwaW5nIGl0IHRvIGVkOiB0aGlzIHdpbGwgY2F1c2UgZWQgdG8gYWJvcnQgb24gaW52YWxpZCBjb21tYW5kcworaW5zdGVhZCBvZiByZWplY3RpbmcgdGhlbSBhbmQgY2Fycnlpbmcgb24uCisqIHRlc3RzL2VkLXN0eWxlOiBOZXcgdGVzdCBjYXNlLgorKiB0ZXN0cy9NYWtlZmlsZS5hbSAoVEVTVFMpOiBBZGQgdGVzdCBjYXNlLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9wYXRjaC5naXQvY29tbWl0Lz9pZD0xMjNlYWZmMGQ1ZDFhZWJlMTI4Mjk1OTU5NDM1YjljYTU5MDljMjZkXQorQ1ZFOiBDVkUtMjAxOC0xMDAwMTU2CisKK1NpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvcGNoLmMgICAgICAgICB8IDkxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KKyB0ZXN0cy9NYWtlZmlsZS5hbSB8ICAxICsKKyB0ZXN0cy9lZC1zdHlsZSAgICB8IDQxICsrKysrKysrKysrKysrKysrKysrKysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDEwOCBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvZWQtc3R5bGUKKworZGlmZiAtLWdpdCBhL3NyYy9wY2guYyBiL3NyYy9wY2guYworaW5kZXggMGM1Y2MyNi4uNGZkNWEwNSAxMDA2NDQKKy0tLSBhL3NyYy9wY2guYworKysrIGIvc3JjL3BjaC5jCitAQCAtMzMsNiArMzMsNyBAQAorICMgaW5jbHVkZSA8aW8uaD4KKyAjZW5kaWYKKyAjaW5jbHVkZSA8c2FmZS5oPgorKyNpbmNsdWRlIDxzeXMvd2FpdC5oPgorIAorICNkZWZpbmUgSU5JVEhVTktNQVggMTI1CQkJLyogaW5pdGlhbCBkeW5hbWljIGFsbG9jYXRpb24gc2l6ZSAqLworIAorQEAgLTIzODksMjQgKzIzOTAsMjggQEAgZG9fZWRfc2NyaXB0IChjaGFyIGNvbnN0ICppbm5hbWUsIGNoYXIgY29uc3QgKm91dG5hbWUsCisgICAgIHN0YXRpYyBjaGFyIGNvbnN0IGVkaXRvcl9wcm9ncmFtW10gPSBFRElUT1JfUFJPR1JBTTsKKyAKKyAgICAgZmlsZV9vZmZzZXQgYmVnaW5uaW5nX29mX3RoaXNfbGluZTsKKy0gICAgRklMRSAqcGlwZWZwID0gMDsKKyAgICAgc2l6ZV90IGNoYXJzX3JlYWQ7CisrICAgIEZJTEUgKnRtcGZwID0gMDsKKysgICAgY2hhciBjb25zdCAqdG1wbmFtZTsKKysgICAgaW50IHRtcGZkOworKyAgICBwaWRfdCBwaWQ7CisrCisrICAgIGlmICghIGRyeV9ydW4gJiYgISBza2lwX3Jlc3Rfb2ZfcGF0Y2gpCisrICAgICAgeworKwkvKiBXcml0ZSBlZCBzY3JpcHQgdG8gYSB0ZW1wb3JhcnkgZmlsZS4gIFRoaXMgY2F1c2VzIGVkIHRvIGFib3J0IG9uCisrCSAgIGludmFsaWQgY29tbWFuZHMgc3VjaCBhcyB3aGVuIGxpbmUgbnVtYmVycyBvciByYW5nZXMgZXhjZWVkIHRoZQorKwkgICBudW1iZXIgb2YgYXZhaWxhYmxlIGxpbmVzLiAgV2hlbiBlZCByZWFkcyBmcm9tIGEgcGlwZSwgaXQgcmVqZWN0cworKwkgICBpbnZhbGlkIGNvbW1hbmRzIGFuZCB0cmVhdHMgdGhlIG5leHQgbGluZSBhcyBhIG5ldyBjb21tYW5kLCB3aGljaAorKwkgICBjYW4gbGVhZCB0byBhcmJpdHJhcnkgY29tbWFuZCBleGVjdXRpb24uICAqLworKworKwl0bXBmZCA9IG1ha2VfdGVtcGZpbGUgKCZ0bXBuYW1lLCAnZScsIE5VTEwsIE9fUkRXUiB8IE9fQklOQVJZLCAwKTsKKysJaWYgKHRtcGZkID09IC0xKQorKwkgIHBmYXRhbCAoIkNhbid0IGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZSAlcyIsIHF1b3RlYXJnICh0bXBuYW1lKSk7CisrCXRtcGZwID0gZmRvcGVuICh0bXBmZCwgIncrYiIpOworKwlpZiAoISB0bXBmcCkKKysJICBwZmF0YWwgKCJDYW4ndCBvcGVuIHN0cmVhbSBmb3IgZmlsZSAlcyIsIHF1b3RlYXJnICh0bXBuYW1lKSk7CisrICAgICAgfQorIAorLSAgICBpZiAoISBkcnlfcnVuICYmICEgc2tpcF9yZXN0X29mX3BhdGNoKSB7CistCWludCBleGNsdXNpdmUgPSAqb3V0bmFtZV9uZWVkc19yZW1vdmFsID8gMCA6IE9fRVhDTDsKKy0JaWYgKGluZXJybm8gIT0gRU5PRU5UKQorLQkgIHsKKy0JICAgICpvdXRuYW1lX25lZWRzX3JlbW92YWwgPSB0cnVlOworLQkgICAgY29weV9maWxlIChpbm5hbWUsIG91dG5hbWUsIDAsIGV4Y2x1c2l2ZSwgaW5zdGF0LnN0X21vZGUsIHRydWUpOworLQkgIH0KKy0Jc3ByaW50ZiAoYnVmLCAiJXMgJXMlcyIsIGVkaXRvcl9wcm9ncmFtLAorLQkJIHZlcmJvc2l0eSA9PSBWRVJCT1NFID8gIiIgOiAiLSAiLAorLQkJIG91dG5hbWUpOworLQlmZmx1c2ggKHN0ZG91dCk7CistCXBpcGVmcCA9IHBvcGVuKGJ1ZiwgYmluYXJ5X3RyYW5zcHV0ID8gIndiIiA6ICJ3Iik7CistCWlmICghcGlwZWZwKQorLQkgIHBmYXRhbCAoIkNhbid0IG9wZW4gcGlwZSB0byAlcyIsIHF1b3RlYXJnIChidWYpKTsKKy0gICAgfQorICAgICBmb3IgKDs7KSB7CisgCWNoYXIgZWRfY29tbWFuZF9sZXR0ZXI7CisgCWJlZ2lubmluZ19vZl90aGlzX2xpbmUgPSBmaWxlX3RlbGwgKHBmcCk7CitAQCAtMjQxNywxNCArMjQyMiwxNCBAQCBkb19lZF9zY3JpcHQgKGNoYXIgY29uc3QgKmlubmFtZSwgY2hhciBjb25zdCAqb3V0bmFtZSwKKyAJfQorIAllZF9jb21tYW5kX2xldHRlciA9IGdldF9lZF9jb21tYW5kX2xldHRlciAoYnVmKTsKKyAJaWYgKGVkX2NvbW1hbmRfbGV0dGVyKSB7CistCSAgICBpZiAocGlwZWZwKQorLQkJaWYgKCEgZndyaXRlIChidWYsIHNpemVvZiAqYnVmLCBjaGFyc19yZWFkLCBwaXBlZnApKQorKwkgICAgaWYgKHRtcGZwKQorKwkJaWYgKCEgZndyaXRlIChidWYsIHNpemVvZiAqYnVmLCBjaGFyc19yZWFkLCB0bXBmcCkpCisgCQkgICAgd3JpdGVfZmF0YWwgKCk7CisgCSAgICBpZiAoZWRfY29tbWFuZF9sZXR0ZXIgIT0gJ2QnICYmIGVkX2NvbW1hbmRfbGV0dGVyICE9ICdzJykgeworIAkgICAgICAgIHBfcGFzc19jb21tZW50c190aHJvdWdoID0gdHJ1ZTsKKyAJCXdoaWxlICgoY2hhcnNfcmVhZCA9IGdldF9saW5lICgpKSAhPSAwKSB7CistCQkgICAgaWYgKHBpcGVmcCkKKy0JCQlpZiAoISBmd3JpdGUgKGJ1Ziwgc2l6ZW9mICpidWYsIGNoYXJzX3JlYWQsIHBpcGVmcCkpCisrCQkgICAgaWYgKHRtcGZwKQorKwkJCWlmICghIGZ3cml0ZSAoYnVmLCBzaXplb2YgKmJ1ZiwgY2hhcnNfcmVhZCwgdG1wZnApKQorIAkJCSAgICB3cml0ZV9mYXRhbCAoKTsKKyAJCSAgICBpZiAoY2hhcnNfcmVhZCA9PSAyICAmJiAgc3RyRVEgKGJ1ZiwgIi5cbiIpKQorIAkJCWJyZWFrOworQEAgLTI0MzcsMTMgKzI0NDIsNDkgQEAgZG9fZWRfc2NyaXB0IChjaGFyIGNvbnN0ICppbm5hbWUsIGNoYXIgY29uc3QgKm91dG5hbWUsCisgCSAgICBicmVhazsKKyAJfQorICAgICB9CistICAgIGlmICghcGlwZWZwKQorKyAgICBpZiAoIXRtcGZwKQorICAgICAgIHJldHVybjsKKy0gICAgaWYgKGZ3cml0ZSAoIndcbnFcbiIsIHNpemVvZiAoY2hhciksIChzaXplX3QpIDQsIHBpcGVmcCkgPT0gMAorLQl8fCBmZmx1c2ggKHBpcGVmcCkgIT0gMCkKKysgICAgaWYgKGZ3cml0ZSAoIndcbnFcbiIsIHNpemVvZiAoY2hhciksIChzaXplX3QpIDQsIHRtcGZwKSA9PSAwCisrCXx8IGZmbHVzaCAodG1wZnApICE9IDApCisgICAgICAgd3JpdGVfZmF0YWwgKCk7CistICAgIGlmIChwY2xvc2UgKHBpcGVmcCkgIT0gMCkKKy0gICAgICBmYXRhbCAoIiVzIEZBSUxFRCIsIGVkaXRvcl9wcm9ncmFtKTsKKysKKysgICAgaWYgKGxzZWVrICh0bXBmZCwgMCwgU0VFS19TRVQpID09IC0xKQorKyAgICAgIHBmYXRhbCAoIkNhbid0IHJld2luZCB0byB0aGUgYmVnaW5uaW5nIG9mIGZpbGUgJXMiLCBxdW90ZWFyZyAodG1wbmFtZSkpOworKworKyAgICBpZiAoISBkcnlfcnVuICYmICEgc2tpcF9yZXN0X29mX3BhdGNoKSB7CisrCWludCBleGNsdXNpdmUgPSAqb3V0bmFtZV9uZWVkc19yZW1vdmFsID8gMCA6IE9fRVhDTDsKKysJKm91dG5hbWVfbmVlZHNfcmVtb3ZhbCA9IHRydWU7CisrCWlmIChpbmVycm5vICE9IEVOT0VOVCkKKysJICB7CisrCSAgICAqb3V0bmFtZV9uZWVkc19yZW1vdmFsID0gdHJ1ZTsKKysJICAgIGNvcHlfZmlsZSAoaW5uYW1lLCBvdXRuYW1lLCAwLCBleGNsdXNpdmUsIGluc3RhdC5zdF9tb2RlLCB0cnVlKTsKKysJICB9CisrCXNwcmludGYgKGJ1ZiwgIiVzICVzJXMiLCBlZGl0b3JfcHJvZ3JhbSwKKysJCSB2ZXJib3NpdHkgPT0gVkVSQk9TRSA/ICIiIDogIi0gIiwKKysJCSBvdXRuYW1lKTsKKysJZmZsdXNoIChzdGRvdXQpOworKworKwlwaWQgPSBmb3JrKCk7CisrCWlmIChwaWQgPT0gLTEpCisrCSAgcGZhdGFsICgiQ2FuJ3QgZm9yayIpOworKwllbHNlIGlmIChwaWQgPT0gMCkKKysJICB7CisrCSAgICBkdXAyICh0bXBmZCwgMCk7CisrCSAgICBleGVjbCAoIi9iaW4vc2giLCAic2giLCAiLWMiLCBidWYsIChjaGFyICopIDApOworKwkgICAgX2V4aXQgKDIpOworKwkgIH0KKysJZWxzZQorKwkgIHsKKysJICAgIGludCB3c3RhdHVzOworKwkgICAgaWYgKHdhaXRwaWQgKHBpZCwgJndzdGF0dXMsIDApID09IC0xCisrCSAgICAgICAgfHwgISBXSUZFWElURUQgKHdzdGF0dXMpCisrCQl8fCBXRVhJVFNUQVRVUyAod3N0YXR1cykgIT0gMCkKKysJICAgICAgZmF0YWwgKCIlcyBGQUlMRUQiLCBlZGl0b3JfcHJvZ3JhbSk7CisrCSAgfQorKyAgICB9CisrCisrICAgIGZjbG9zZSAodG1wZnApOworKyAgICBzYWZlX3VubGluayAodG1wbmFtZSk7CisgCisgICAgIGlmIChvZnApCisgICAgICAgeworZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KK2luZGV4IDZiNmRmNjMuLjE2Zjg2OTMgMTAwNjQ0CistLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KK0BAIC0zMiw2ICszMiw3IEBAIFRFU1RTID0gXAorIAljcmxmLWhhbmRsaW5nIFwKKyAJZGFzaC1vLWFwcGVuZCBcCisgCWRlZXAtZGlyZWN0b3JpZXMgXAorKwllZC1zdHlsZSBcCisgCWVtcHR5LWZpbGVzIFwKKyAJZmFsc2UtbWF0Y2ggXAorIAlmaWZvIFwKK2RpZmYgLS1naXQgYS90ZXN0cy9lZC1zdHlsZSBiL3Rlc3RzL2VkLXN0eWxlCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZDhjMDY4OQorLS0tIC9kZXYvbnVsbAorKysrIGIvdGVzdHMvZWQtc3R5bGUKK0BAIC0wLDAgKzEsNDEgQEAKKysjIENvcHlyaWdodCAoQykgMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjCisrIyBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBmaWxlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAorKyMgaW4gYW55IG1lZGl1bSwgYXJlIHBlcm1pdHRlZCB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAorKyMgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLgorKworKy4gJHNyY2Rpci90ZXN0LWxpYi5zaAorKworK3JlcXVpcmUgY2F0CisrdXNlX2xvY2FsX3BhdGNoCisrdXNlX3RtcGRpcgorKworKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysKKytjYXQgPiBlZDEuZGlmZiA8PEVPRgorKzBhCisrZm9vCisrLgorK0VPRgorKworK2NoZWNrICdwYXRjaCAtZSBmb28gLWkgZWQxLmRpZmYnIDw8RU9GCisrRU9GCisrCisrY2hlY2sgJ2NhdCBmb28nIDw8RU9GCisrZm9vCisrRU9GCisrCisrY2F0ID4gZWQyLmRpZmYgPDxFT0YKKysxMzM3YQorK3IgIWVjaG8gYmFyCisrLHAKKytFT0YKKysKKytjaGVjayAncGF0Y2ggLWUgZm9vIC1pIGVkMi5kaWZmIDI+IC9kZXYvbnVsbCB8fCBlY2hvICJTdGF0dXM6ICQ/IicgPDxFT0YKKys/CisrU3RhdHVzOiAyCisrRU9GCisrCisrY2hlY2sgJ2NhdCBmb28nIDw8RU9GCisrZm9vCisrRU9GCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2hfMi43LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoXzIuNy41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTFmMDIxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2hfMi43LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1yZXF1aXJlIHBhdGNoLmluYwotTElDRU5TRSA9ICJHUEx2MyIKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlZDRkNTY3NGVmNDU0M2I0ZWI0NjNkYjE2ODg4NmRjNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3NDM2ZjVhMTlmOTNjM2NhODMxNTNjZTljNWNiZTQ4NDdlOTdjNWQ5NTZlNTdhMjIwMTIxZTc0MWY2ZTc5NjhmIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotYWNwYXRocyA9ICItSSAke1N9L200ICIKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneGF0dHInLCBkKX0iCi1QQUNLQUdFQ09ORklHW3hhdHRyXSA9ICItLWVuYWJsZS14YXR0ciwtLWRpc2FibGUteGF0dHIsYXR0ciwiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2hfMi43LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoXzIuNy42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyMzQ4NmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoXzIuNy42LmJiCkBAIC0wLDAgKzEsMTkgQEAKK3JlcXVpcmUgcGF0Y2guaW5jCitMSUNFTlNFID0gIkdQTHYzIgorCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXgtc2VnZmF1bHQtd2l0aC1tYW5nbGVkLXJlbmFtZS1wYXRjaC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMy1BbGxvdy1pbnB1dC1maWxlcy10by1iZS1taXNzaW5nLWZvci1lZC1zdHlsZS1wYXRjaGVzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDA0LUZpeC1hcmJpdHJhcnktY29tbWFuZC1leGVjdXRpb24taW4tZWQtc3R5bGUtcGF0Y2hlcy0ucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGM2OGNlZTk4OWQ4M2M4N2IwMGEzODYwYmNkMDU2MDAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGNmODZlMDBhZDNhYWE2ZDI2YWNhMzA2NDBlODZiMGUzZTFmMzk1ZWQ5OWYxODliMDZkNGM5Zjc0YmM1OGE0ZSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK2FjcGF0aHMgPSAiLUkgJHtTfS9tNCAiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3hhdHRyJywgZCl9IgorUEFDS0FHRUNPTkZJR1t4YXR0cl0gPSAiLS1lbmFibGUteGF0dHIsLS1kaXNhYmxlLXhhdHRyLGF0dHIsIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZXJyb3ItcGVybF8wLjE3MDI0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmVycm9yLXBlcmxfMC4xNzAyNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmFlMGU3ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZXJyb3ItcGVybF8wLjE3MDI0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotU1VNTUFSWSA9ICJFcnJvciAtIEVycm9yL2V4Y2VwdGlvbiBoYW5kbGluZyBpbiBhbiBPTy1pc2ggd2F5IgotREVTQ1JJUFRJT04gPSAiVGhlIEVycm9yIHBhY2thZ2UgcHJvdmlkZXMgdHdvIGludGVyZmFjZXMuIEZpcnN0bHkgXAotRXJyb3IgcHJvdmlkZXMgYSBwcm9jZWR1cmFsIGludGVyZmFjZSB0byBleGNlcHRpb24gaGFuZGxpbmcuIFwKLVNlY29uZGx5IEVycm9yIGlzIGEgYmFzZSBjbGFzcyBmb3IgZXJyb3JzL2V4Y2VwdGlvbnMgdGhhdCBjYW4gXAotZWl0aGVyIGJlIHRocm93biwgZm9yIHN1YnNlcXVlbnQgY2F0Y2gsIG9yIGNhbiBzaW1wbHkgYmUgcmVjb3JkZWQuIgotCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04ZjM0OTlkMDllZTc0YTA1MGMwMzE5MzkxZmY5ZDEwMCIKLQotREVQRU5EUyArPSAicGVybCIKLQotU1JDX1VSSSA9ICJodHRwOi8vY3Bhbi5tZXRhY3Bhbi5vcmcvYXV0aG9ycy9pZC9TL1NIL1NITE9NSUYvRXJyb3ItJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2UzNjc2YTdmYjE0ZjY1ZjU2OGYxMmQ0YjQwYTJhNzIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDc0ZGI3Yzc4M2E2N2IwNjY3ZWNhNjRhNGY2YTBjM2RlOTQ5OThhZmM5MmMwMWQ2NDUzMTYzZWIwNGI5MTUwZCIKLQotUyA9ICIke1dPUktESVJ9L0Vycm9yLSR7UFZ9IgotCi1pbmhlcml0IGNwYW4KLQotZG9fY29tcGlsZSgpIHsKLQlleHBvcnQgTElCQz0iJChmaW5kICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS8gLW5hbWUgJ2xpYmMtKi5zbycpIgotCWNwYW5fZG9fY29tcGlsZQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJlcnJvci1wZXJsXzAuMTcwMjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZXJyb3ItcGVybF8wLjE3MDI1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZGMzMGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZXJyb3ItcGVybF8wLjE3MDI1LmJiCkBAIC0wLDAgKzEsMzMgQEAKK1NVTU1BUlkgPSAiRXJyb3IgLSBFcnJvci9leGNlcHRpb24gaGFuZGxpbmcgaW4gYW4gT08taXNoIHdheSIKK0RFU0NSSVBUSU9OID0gIlRoZSBFcnJvciBwYWNrYWdlIHByb3ZpZGVzIHR3byBpbnRlcmZhY2VzLiBGaXJzdGx5IFwKK0Vycm9yIHByb3ZpZGVzIGEgcHJvY2VkdXJhbCBpbnRlcmZhY2UgdG8gZXhjZXB0aW9uIGhhbmRsaW5nLiBcCitTZWNvbmRseSBFcnJvciBpcyBhIGJhc2UgY2xhc3MgZm9yIGVycm9ycy9leGNlcHRpb25zIHRoYXQgY2FuIFwKK2VpdGhlciBiZSB0aHJvd24sIGZvciBzdWJzZXF1ZW50IGNhdGNoLCBvciBjYW4gc2ltcGx5IGJlIHJlY29yZGVkLiIKKworU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OGYzNDk5ZDA5ZWU3NGEwNTBjMDMxOTM5MWZmOWQxMDAiCisKK0RFUEVORFMgKz0gInBlcmwiCisKK1NSQ19VUkkgPSAiaHR0cDovL2NwYW4ubWV0YWNwYW4ub3JnL2F1dGhvcnMvaWQvUy9TSC9TSExPTUlGL0Vycm9yLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjFhMmVlN2YwZGM0NGY5ZWU3NjY2MWExNmJiYmMwYzQ4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZjOWY0NzRhZDNkNGZlMGNhYmZmNmI2YmU1MzJjYjFkZDM0ODI0NTk4NmQ0YTZiNjAwYWQ5MjFkNWNmZGVmYWYiCisKK1MgPSAiJHtXT1JLRElSfS9FcnJvci0ke1BWfSIKKworaW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKKworZG9fY29tcGlsZSgpIHsKKwlleHBvcnQgTElCQz0iJChmaW5kICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS8gLW5hbWUgJ2xpYmMtKi5zbycpIgorCWNwYW5fZG9fY29tcGlsZQorfQorCitkb19pbnN0YWxsX3ByZXBlbmQoKSB7CisJIyB0ZXN0IHJlcXVpcmVzICItVCIgKHRhaW50KSBjb21tYW5kIGxpbmUgb3B0aW9uCisJcm0gLXJmICR7Qn0vdC9wb2QtY292ZXJhZ2UudAorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ0ZXN0LW5lZWRzLXBlcmxfMC4wMDIwMDUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlidGVzdC1uZWVkcy1wZXJsXzAuMDAyMDA1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1YWI3YTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlidGVzdC1uZWVkcy1wZXJsXzAuMDAyMDA1LmJiCkBAIC0wLDAgKzEsMjkgQEAKK1NVTU1BUlkgPSAiU2tpcCB0ZXN0cyB3aGVuIG1vZHVsZXMgbm90IGF2YWlsYWJsZSIKK0RFU0NSSVBUSU9OID0gIlNraXAgdGVzdCBzY3JpcHRzIGlmIG1vZHVsZXMgYXJlIG5vdCBhdmFpbGFibGUuIFwKK1RoZSByZXF1ZXN0ZWQgbW9kdWxlcyB3aWxsIGJlIGxvYWRlZCwgYW5kIG9wdGlvbmFsbHkgaGF2ZSB0aGVpciB2ZXJzaW9ucyBcCitjaGVja2VkLiBJZiB0aGUgbW9kdWxlIGlzIG1pc3NpbmcsIHRoZSB0ZXN0IHNjcmlwdCB3aWxsIGJlIHNraXBwZWQuIE1vZHVsZXMgXAordGhhdCBhcmUgZm91bmQgYnV0IGZhaWwgdG8gY29tcGlsZSB3aWxsIGV4aXQgd2l0aCBhbiBlcnJvciByYXRoZXIgdGhhbiBza2lwLiIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcmVsZWFzZS9UZXN0LU5lZWRzIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKKworQ1BBTl9OQU1FID0gIlRlc3QtTmVlZHMiCitDUEFOX0FVVEhPUiA9ICJIQUFSRyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT0zZjNjY2QyMWEwYTQ4YWEzMTNkYjIxMmNjM2IxYmMwOTtiZWdpbmxpbmU9ODE7ZW5kbGluZT04MiIKKworREVQRU5EUyArPSAicGVybCIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmNwYW4ub3JnL2F1dGhvcnMvaWQvSC9IQS8ke0NQQU5fQVVUSE9SfS8ke0NQQU5fTkFNRX0tJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzU2NjM0YTU2Yzk5MjgyZTgwNTlmMjkwZjVkNTM0YzgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWE0ZjMzOTgzNTg2ZWRhY2RiZTAwYTNiNDI5YTk4MzQxOTAxNDAxOTBkYWIyOGQwZjg3M2MzOTRlYjdkZjM5OSIKKworUyA9ICIke1dPUktESVJ9LyR7Q1BBTl9OQU1FfS0ke1BWfSIKKworaW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gInBlcmwtbW9kdWxlLXRlc3QtbW9yZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlidXJpLXBlcmxfMS43Mi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ1cmktcGVybF8xLjcyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzk5YzEwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ1cmktcGVybF8xLjcyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJQZXJsIG1vZHVsZSB0byBtYW5pcHVsYXRlIGFuZCBhY2Nlc3MgVVJJIHN0cmluZ3MiCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIFVSSS5wbSBtb2R1bGUgd2l0aCBmcmllbmRzLiBcCi1UaGUgbW9kdWxlIGltcGxlbWVudHMgdGhlIFVSSSBjbGFzcy4gVVJJIG9iamVjdHMgY2FuIGJlIHVzZWQgdG8gYWNjZXNzIFwKLWFuZCBtYW5pcHVsYXRlIHRoZSB2YXJpb3VzIGNvbXBvbmVudHMgdGhhdCBtYWtlIHVwIHRoZXNlIHN0cmluZ3MuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvVVJJLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWM0NTNlOTRmYWU2NzI4MDBmODNiYzFiZDdhMzhiNTNmIgotCi1ERVBFTkRTICs9ICJwZXJsIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuY3Bhbi5vcmcvYXV0aG9ycy9pZC9FL0VUL0VUSEVSL1VSSS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjZDU2ZDgxZWQ0MjllZmFhOTdlN2YzZmYwODg1MWI0OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzNWYxNDQzMWQ0YjMwMGRlNGJlMTE2M2IwYjUzMzJkZTJkN2ZiZGE0ZjA1ZmYxZWQxOThhOGU5MzMwZDQwYTMyIgotCi1TID0gIiR7V09SS0RJUn0vVVJJLSR7UFZ9IgotCi1FWFRSQV9DUEFORkxBR1MgPSAiRVhQQVRMSUJQQVRIPSR7U1RBR0lOR19MSUJESVJ9IEVYUEFUSU5DUEFUSD0ke1NUQUdJTkdfSU5DRElSfSIKLQotaW5oZXJpdCBjcGFuCi0KLWRvX2NvbXBpbGUoKSB7Ci0JZXhwb3J0IExJQkM9IiQoZmluZCAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0vIC1uYW1lICdsaWJjLSouc28nKSIKLQljcGFuX2RvX2NvbXBpbGUKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlidXJpLXBlcmxfMS43My5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ1cmktcGVybF8xLjczLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5MjM4ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlidXJpLXBlcmxfMS43My5iYgpAQCAtMCwwICsxLDM4IEBACitTVU1NQVJZID0gIlBlcmwgbW9kdWxlIHRvIG1hbmlwdWxhdGUgYW5kIGFjY2VzcyBVUkkgc3RyaW5ncyIKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgVVJJLnBtIG1vZHVsZSB3aXRoIGZyaWVuZHMuIFwKK1RoZSBtb2R1bGUgaW1wbGVtZW50cyB0aGUgVVJJIGNsYXNzLiBVUkkgb2JqZWN0cyBjYW4gYmUgdXNlZCB0byBhY2Nlc3MgXAorYW5kIG1hbmlwdWxhdGUgdGhlIHZhcmlvdXMgY29tcG9uZW50cyB0aGF0IG1ha2UgdXAgdGhlc2Ugc3RyaW5ncy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9VUkkvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzQ1M2U5NGZhZTY3MjgwMGY4M2JjMWJkN2EzOGI1M2YiCisKK0RFUEVORFMgKz0gInBlcmwiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5jcGFuLm9yZy9hdXRob3JzL2lkL0UvRVQvRVRIRVIvVVJJLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjM3ZDQ0YTA4ZTU5OWFhOTQ1YjMyYTk0MzRmZmUwMGE1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNjYTdhYjRhNmY2M2YzY2NhYWNhZTBmMmUxMzM3ZThlZGY4NDEzN2U3M2YxODU0OGVjN2Q2NTlmMjNlZmU0MTMiCisKK1MgPSAiJHtXT1JLRElSfS9VUkktJHtQVn0iCisKK0VYVFJBX0NQQU5GTEFHUyA9ICJFWFBBVExJQlBBVEg9JHtTVEFHSU5HX0xJQkRJUn0gRVhQQVRJTkNQQVRIPSR7U1RBR0lOR19JTkNESVJ9IgorCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAorCitkb19jb21waWxlKCkgeworCWV4cG9ydCBMSUJDPSIkKGZpbmQgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9LyAtbmFtZSAnbGliYy0qLnNvJykiCisJY3Bhbl9kb19jb21waWxlCit9CisKK2RvX2luc3RhbGxfcHJlcGVuZCgpIHsKKwkjIHRoZXNlIHRlc3RzIHJlcXVpcmUgIi1UIiAodGFpbnQpIGNvbW1hbmQgbGluZSBvcHRpb24KKwlybSAtcmYgJHtCfS90L2N3ZC50CisJcm0gLXJmICR7Qn0vdC9maWxlLnQKK30KKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImxpYnRlc3QtbmVlZHMtcGVybCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBhcnNlci1wZXJsXzIuNDQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBhcnNlci1wZXJsXzIuNDQuYmIKaW5kZXggY2MzYTY2MC4uYzVlMGFlNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wYXJzZXItcGVybF8yLjQ0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGFyc2VyLXBlcmxfMi40NC5iYgpAQCAtMTQsNyArMTQsNyBAQAogCiBFWFRSQV9DUEFORkxBR1MgPSAiRVhQQVRMSUJQQVRIPSR7U1RBR0lOR19MSUJESVJ9IEVYUEFUSU5DUEFUSD0ke1NUQUdJTkdfSU5DRElSfSBDQz0nJHtDQ30nIExEPScke0NDTER9JyBGVUxMX0FSPScke0FSfSciCiAKLWluaGVyaXQgY3BhbgoraW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKIAogIyBmaXggdXAgc3ViIE1ha2VNYWtlciBwcm9qZWN0IGFzIGFyZ3VtZW50cyBkb24ndCBnZXQgcHJvcGFnYXRlZCB0aG91Z2gKICMgc2VlIGh0dHBzOi8vcnQuY3Bhbi5vcmcvUHVibGljL0J1Zy9EaXNwbGF5Lmh0bWw/aWQ9Mjg2MzIKQEAgLTM0LDQgKzM0LDEzIEBACiAJY3Bhbl9kb19jb21waWxlCiB9CiAKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJc2VkIC1pIC1lICJzOi91c3IvbG9jYWwvYmluL3Blcmw6L3Vzci9iaW4vcGVybDpnIiAke0J9L3NhbXBsZXMveG1sc3RhdHMKKwlzZWQgLWkgLWUgInM6L3Vzci9sb2NhbC9iaW4vcGVybDovdXNyL2Jpbi9wZXJsOmciICR7Qn0vc2FtcGxlcy94bWxmaWx0ZXIKKwlzZWQgLWkgLWUgInM6L3Vzci9sb2NhbC9iaW4vcGVybDovdXNyL2Jpbi9wZXJsOmciICR7Qn0vc2FtcGxlcy94bWxjb21tZW50cworCXNlZCAtaSAtZSAiczovdXNyL2xvY2FsL2Jpbi9wZXJsOi91c3IvYmluL3Blcmw6ZyIgJHtCfS9zYW1wbGVzL2Nhbm9uaWNhbAorCWNwIC1yICR7Qn0vc2FtcGxlcyAke0R9JHtQVEVTVF9QQVRIfQorCWNob3duIC1SIHJvb3Q6cm9vdCAke0R9JHtQVEVTVF9QQVRIfS9zYW1wbGVzCit9CisKIEJCQ0xBU1NFWFRFTkQ9Im5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBlcmxfMC4wOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGVybF8wLjA4LmJiCmluZGV4IDA0Nzg0MjcuLjBmNjA5OTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGVybF8wLjA4LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGVybF8wLjA4LmJiCkBAIC0xOSw3ICsxOSw3IEBACiAKIEVYVFJBX0NQQU5GTEFHUyA9ICJFWFBBVExJQlBBVEg9JHtTVEFHSU5HX0xJQkRJUn0gRVhQQVRJTkNQQVRIPSR7U1RBR0lOR19JTkNESVJ9IgogCi1pbmhlcml0IGNwYW4KK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCiAKIGRvX2NvbXBpbGUoKSB7CiAJZXhwb3J0IExJQkM9IiQoZmluZCAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0vIC1uYW1lICdsaWJjLSouc28nKSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtc2ltcGxlLXBlcmxfMi4yNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtc2ltcGxlLXBlcmxfMi4yNC5iYgppbmRleCAwY2YyZWViLi5mOWQwMGQyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXNpbXBsZS1wZXJsXzIuMjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1zaW1wbGUtcGVybF8yLjI0LmJiCkBAIC0xOSw2ICsxOSw2IEBACiAKIEVYVFJBX1BFUkxGTEFHUyA9ICItSSAke1BFUkxIT1NUTElCfSIKIAotaW5oZXJpdCBjcGFuCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLW5hdGl2ZV81LjI0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1uYXRpdmVfNS4yNC4xLmJiCmluZGV4IDZjNTZhN2QuLjcxZjQ1ODkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLW5hdGl2ZV81LjI0LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtbmF0aXZlXzUuMjQuMS5iYgpAQCAtMSw4ICsxLDcgQEAKIHJlcXVpcmUgcGVybC5pbmMKIAogIyBXZSBuZWVkIGdudWdyZXAgKGZvciAtSSkKLURFUEVORFMgPSAidmlydHVhbC9kYi1uYXRpdmUgZ3JlcC1uYXRpdmUiCi1ERVBFTkRTICs9ICJnZGJtLW5hdGl2ZSB6bGliLW5hdGl2ZSIKK0RFUEVORFMgPSAiZGItbmF0aXZlIGdyZXAtbmF0aXZlIGdkYm0tbmF0aXZlIHpsaWItbmF0aXZlIgogCiBFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKIApAQCAtMTYsNiArMTUsNyBAQAogICAgICAgICAgICBmaWxlOi8vZHluYWxvYWRlcmhhY2sucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcGVybC1QYXRoVG9vbHMtZG9uLXQtZmlsdGVyLW91dC1ibGliLWZyb20tSU5DLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQ29uZmlndXJlLVJlbW92ZS1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZy1mb3ItbmF0aXZlLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wZXJsLTUuMjYuMS1ndWFyZF9vbGRfbGliY3J5cHRfZml4LnBhdGNoIFwKICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJhZjZhODRjN2MzZTJiOGIyNjljMTA1YTVkYjJmNmQ1MyIKQEAgLTEzNSwzICsxMzUsNSBAQAogCiAjIEZpeCB0aGUgcGF0aCBpbiBzc3RhdGUKIFNTVEFURV9TQ0FOX0ZJTEVTICs9ICIqLnBtICoucG9kICouaCAqLnBsICouc2giCitQQUNLQUdFU19EWU5BTUlDX2NsYXNzLW5hdGl2ZSArPSAiXnBlcmwtbW9kdWxlLS4qbmF0aXZlJCIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtcHRlc3QuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtcHRlc3QuaW5jCmluZGV4IDFmNTQ5YWYuLjZhN2EyZDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLXB0ZXN0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1wdGVzdC5pbmMKQEAgLTIsMzEgKzIsNDMgQEAKIAogU1JDX1VSSSArPSAiZmlsZTovL3J1bi1wdGVzdCBcCiAgICAgICAgICAgICIKLQogZG9faW5zdGFsbF9wdGVzdCAoKSB7CiAJbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0KIAlzZWQgLWUgInM6XC91c3JcL2xvY2FsOiR7YmluZGlyfTpnIiAtaSBjcGFuL3ZlcnNpb24vdC8qCiAJc2VkIC1lICJzOlwvb3B0OlwvdXNyOiIgLWkgUG9ydGluZy9hZGQtcGFja2FnZS5wbAogCXNlZCAtZSAiczpcL2xvY2FsXC9nbnVcLzpcLzoiIC1pIGhpbnRzL2N4dXguc2gKLQl0YXIgLWMgLS1leGNsdWRlPVwqLm8gLS1leGNsdWRlPWxpYnBlcmwuc28gLS1leGNsdWRlPU1ha2VmaWxlIC0tZXhjbHVkZT1tYWtlZmlsZSAtLWV4Y2x1ZGU9aG9zdHBlcmwgXAorCXRhciAtYyAtLWV4Y2x1ZGU9JyoubycgLS1leGNsdWRlPWxpYnBlcmwuc28gLS1leGNsdWRlPU1ha2VmaWxlIC0tZXhjbHVkZT1tYWtlZmlsZSAtLWV4Y2x1ZGU9aG9zdHBlcmwgXAorCSAgICAtLWV4Y2x1ZGU9Y3lnd2luIC0tZXhjbHVkZT1vczIgLS1leGNsdWRlPWRqZ3BwIC0tZXhjbHVkZT1xbnggLS1leGNsdWRlPXN5bWJpYW4gLS1leGNsdWRlPWhhaWt1IFwKKwkgICAgLS1leGNsdWRlPXZtcyAtLWV4Y2x1ZGU9dm9zIC0tZXhjbHVkZT1OZXRXYXJlIC0tZXhjbHVkZT1hbWlnYW9zNCAgLS1leGNsdWRlPWJ1aWxkY3VzdG9taXplLnBsIFwKKwkgICAgLS1leGNsdWRlPSd3aW4zMi9jb25maWcuKicgLS1leGNsdWRlPXBsYW45IC0tZXhjbHVkZT1SRUFETUUucGxhbjkgLS1leGNsdWRlPXBlcmxwbGFuOS5wb2QgLS1leGNsdWRlPUNvbmZpZ3VyZSBcCisJICAgIC0tZXhjbHVkZT12ZXJ5Y2xlYW4uc2ggLS1leGNsdWRlPXJlYWxjbGVhbi5zaCAgLS1leGNsdWRlPWdldGlvY3Rsc2l6ZXMgXAorCSAgICAtLWV4Y2x1ZGU9ZGxfYWl4LnhzIC0tZXhjbHVkZT1zZGJtLjMgLS1leGNsdWRlPSdjZmxhZ3MuU0gnIC0tZXhjbHVkZT1tYWtlZmlsZS5vbGQgXAogCQktLWV4Y2x1ZGU9bWluaXBlcmwgLS1leGNsdWRlPWdlbmVyYXRlX3V1ZG1hcCAtLWV4Y2x1ZGU9cGF0Y2hlcyAqIHwgKCBjZCAke0R9JHtQVEVTVF9QQVRIfSAmJiB0YXIgLXggKQogCi0Jc2VkIC1pIC1lICJzLCR7RH0sLGciIFwKKwlsbiAtc2YgJHtiaW5kaXJ9L3BlcmwgJHtEfSR7UFRFU1RfUEFUSH0vdC9wZXJsCisKKwkjIFJlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMgZnJvbSB2YXJpb3VzIHNjYXR0ZXJlZCBmaWxlcy4uLgorCWZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiBcCisJICAgICBcKCAtbmFtZSAnKi5QTCcgLW8gLW5hbWUgJ215Y29uZmlnJyAtbyAtbmFtZSAnY2ZsYWdzJyAtbyAtbmFtZSAnKi5wbCcgLW8gLW5hbWUgJyouc2gnIC1vIC1uYW1lICcqLnBtJyBcCisJICAgICAtbyAtbmFtZSAnaDJ4cycgLW8gLW5hbWUgJ2gycGgnIFwKKwkgICAgIC1vIC1uYW1lICcqLmgnIC1vIC1uYW1lICdjb25maWcuc2gtKicgLW8gLW5hbWUgJ3BvZDJtYW4nICAtbyAtbmFtZSAncG9kMnRleHQnIFwpIFwKKwkgICAgLXR5cGUgZiAtZXhlYyBzZWQgLWkgXAorCSAgICAgICAtZSAicywke0R9LCxnIiBcCiAJICAgICAgIC1lICJzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9LCxnIiBcCiAJICAgICAgIC1lICJzLC1pc3lzdGVtJHtTVEFHSU5HX0lOQ0RJUn0gLCxnIiBcCisJICAgICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlLywke2JpbmRpcn0vLGciIFwKIAkgICAgICAgLWUgInMsJHtTVEFHSU5HX0xJQkRJUn0sJHtsaWJkaXJ9LGciIFwKIAkgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUn0sJHtiaW5kaXJ9LGciIFwKIAkgICAgICAgLWUgInMsJHtTVEFHSU5HX0lOQ0RJUn0sJHtpbmNsdWRlZGlyfSxnIiBcCi0JICAgICAgIC1lICJzLCR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9wZXJsLW5hdGl2ZS8sJHtiaW5kaXJ9LyxnIiBcCiAJICAgICAgIC1lICJzLCR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8sLGciIFwKIAkgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU59LyR7VEFSR0VUX1BSRUZJWH0sJHtiaW5kaXJ9LGciIFwKLQkgICAgJHtEfSR7UFRFU1RfUEFUSH0vbGliL0NvbmZpZy5wbSBcCi0JICAgICR7RH0ke1BURVNUX1BBVEh9L2NwYW4vcG9kbGF0b3JzL3NjcmlwdHMvcG9kMm1hbiBcCi0JICAgICR7RH0ke1BURVNUX1BBVEh9L2NwYW4vcG9kbGF0b3JzL3NjcmlwdHMvcG9kMnRleHQKKwkgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCisJICAgICAgICB7fSArCiAKLQlsbiAtc2YgJHtiaW5kaXJ9L3BlcmwgJHtEfSR7UFRFU1RfUEFUSH0vdC9wZXJsCi0JIyBSZW1vdmUgcGxhbjkgcmVsYXRlZCBzdHVmZgotCXJtIC1yZiAke0R9JHtQVEVTVF9QQVRIfS9wbGFuOSAke0R9JHtQVEVTVF9QQVRIfS9SRUFETUUucGxhbjkgJHtEfSR7UFRFU1RfUEFUSH0vcG9kL3BlcmxwbGFuOS5wb2QKKwkgIyBSZW1vdmUgYSB1c2VsZXNzIHRpbWVzdGFtcC4uLgorCSBzZWQgLWkgLWUgJy9BdXRvZ2VuZXJhdGVkIHN0YXJ0aW5nIG9uL2QnICR7RH0ke1BURVNUX1BBVEh9L2xpYi91bmljb3JlL21rdGFibGVzLmxzdAogfQogCiBweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL0NWRS0yMDE3LTEyODM3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvQ1ZFLTIwMTctMTI4MzcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI1OWZjZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL0NWRS0yMDE3LTEyODM3LnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gNzNkNzI0N2VjYWI4NjNlZjI2YjU2ODdhMzdjY2M3NWQ2MTQ0YWQwZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEthcmwgV2lsbGlhbXNvbiA8a2h3QGNwYW4ub3JnPgorRGF0ZTogVHVlLCAxNyBPY3QgMjAxNyAxMzo0OToxNCArMDgwMAorU3ViamVjdDogW1BBVENIXSBmaXggQ1ZFLTIwMTctMTI4MzcKKworU2lnbmVkLW9mZi1ieTogS2FybCBXaWxsaWFtc29uIDxraHdAY3Bhbi5vcmc+CitTaWduZWQtb2ZmLWJ5OiBTdGV2ZSBIYXkgPHN0ZXZlLm0uaGF5QGdvb2dsZW1haWwuY29tPgorCitDVkU6IENWRS0yMDE3LTEyODM3CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitodHRwczovL3Blcmw1LmdpdC5wZXJsLm9yZy9wZXJsLmdpdC9jb21taXRkaWZmLzk2YzgzZWQ3OGFlZWExYTA0OTZkZDJiMmQ5MzU4NjlhODIyZGM4YTUKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgcmVnY29tcC5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9yZWdjb21wLmMgYi9yZWdjb21wLmMKK2luZGV4IDU0OThkMTQuLjMxZWMzODMgMTAwNjQ0CistLS0gYS9yZWdjb21wLmMKKysrKyBiL3JlZ2NvbXAuYworQEAgLTEzMDIxLDYgKzEzMDIxLDcgQEAgU19yZWdhdG9tKHBUSFhfIFJFeENfc3RhdGVfdCAqcFJFeENfc3RhdGUsIEkzMiAqZmxhZ3AsIFUzMiBkZXB0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBsb29wZG9uZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IFJFeENfcGFyc2U7CisrICAgICAgICAgICAgICAgICAgICAgICAgUkV4Q19wYXJzZSA9IHBhcnNlX3N0YXJ0OworICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbmRlciA+IDB4ZmYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVRVUlSRV9VVEY4KGZsYWdwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICB9CistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvQ1ZFLTIwMTctMTI4ODMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9DVkUtMjAxNy0xMjg4My5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzE4MDVmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvQ1ZFLTIwMTctMTI4ODMucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorRnJvbSA0MGIzY2RhZDM2NDkzMzQ1ODVjZWU4ZjQ2MzBlYzlhMDI1ZTYyYmU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2FybCBXaWxsaWFtc29uIDxraHdAY3Bhbi5vcmc+CitEYXRlOiBGcmksIDI1IEF1ZyAyMDE3IDExOjMzOjU4IC0wNjAwCitTdWJqZWN0OiBbUEFUQ0hdIFBBVENIOiBbcGVybCAjMTMxNTk4XQorCitUaGUgY2F1c2Ugb2YgdGhpcyBpcyB0aGF0IHRoZSB2RkFJTCBtYWNybyB1c2VzIFJFeENfcGFyc2UsIGFuZCB0aGF0Cit2YXJpYWJsZSBoYXMganVzdCBiZWVuIGNoYW5nZWQgaW4gcHJlcGFyYXRpb24gZm9yIGNvZGUgYWZ0ZXIgdGhlIHZGQUlMLgorVGhlIHNvbHV0aW9uIGlzIHRvIG5vdCBjaGFuZ2UgUkV4Q19wYXJzZSB1bnRpbCBhZnRlciB0aGUgdkZBSUwuCisKK1RoaXMgaXMgYSBjYXNlIHdoZXJlIHRoZSBtYWNybyBoaWRlcyBzdHVmZiB0aGF0IGNhbiBiaXRlIHlvdS4KKworKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMmJlNGVkZWRlNGFlMjI2ZTJlZWJkNGVmZjI4Y2VkZDIwNDFmMzAwZikKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNy0xMjgzMworU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+CisKKy0tLQorIHJlZ2NvbXAuYyB8IDYgKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworSW5kZXg6IHBlcmwtNS4yNC4xL3JlZ2NvbXAuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBlcmwtNS4yNC4xLm9yaWcvcmVnY29tcC5jCisrKysgcGVybC01LjI0LjEvcmVnY29tcC5jCitAQCAtMTE5MTgsMTQgKzExOTE4LDE2IEBAIFNfZ3Jva19ic2xhc2hfTihwVEhYXyBSRXhDX3N0YXRlX3QgKnBSRXgKKyAJfQorICAgICAgICAgc3ZfY2F0cHYoc3Vic3RpdHV0ZV9wYXJzZSwgIikiKTsKKyAKKy0gICAgICAgIFJFeENfcGFyc2UgPSBSRXhDX3N0YXJ0ID0gUkV4Q19hZGp1c3RlZF9zdGFydCA9IFN2UFYoc3Vic3RpdHV0ZV9wYXJzZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKTsKKysgICAgICAgIGxlbiA9IFN2Q1VSKHN1YnN0aXR1dGVfcGFyc2UpOworIAorIAkvKiBEb24ndCBhbGxvdyBlbXB0eSBudW1iZXIgKi8KKyAJaWYgKGxlbiA8IChTVFJMRU4pIDgpIHsKKyAgICAgICAgICAgICBSRXhDX3BhcnNlID0gZW5kYnJhY2U7CisgCSAgICB2RkFJTCgiSW52YWxpZCBoZXhhZGVjaW1hbCBudW1iZXIgaW4gXFxOe1UrLi4ufSIpOworIAl9CisrCisrICAgICAgICBSRXhDX3BhcnNlID0gUkV4Q19zdGFydCA9IFJFeENfYWRqdXN0ZWRfc3RhcnQKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTdlBWX25vbGVuKHN1YnN0aXR1dGVfcGFyc2UpOworIAlSRXhDX2VuZCA9IFJFeENfcGFyc2UgKyBsZW47CisgCisgICAgICAgICAvKiBUaGUgdmFsdWVzIGFyZSBVbmljb2RlLCBhbmQgdGhlcmVmb3JlIG5vdCBzdWJqZWN0IHRvIHJlY29kaW5nLCBidXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL01ha2VmaWxlLlNILnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvTWFrZWZpbGUuU0gucGF0Y2gKaW5kZXggZmQ4MjM3Zi4uYzFkYjMzNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvTWFrZWZpbGUuU0gucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvTWFrZWZpbGUuU0gucGF0Y2gKQEAgLTEyLDEwICsxMiwxMCBAQAogIE1ha2VmaWxlLlNIIHwgMTQ3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA2OCBpbnNlcnRpb25zKCspLCA3OSBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlLlNIIGIvTWFrZWZpbGUuU0gKLWluZGV4IDkxNmIzMzIuLmIxNDNkNDYgMTAwNzU1Ci0tLS0gYS9NYWtlZmlsZS5TSAotKysrIGIvTWFrZWZpbGUuU0gKK0luZGV4OiBwZXJsLTUuMjQuMS9NYWtlZmlsZS5TSAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBlcmwtNS4yNC4xLm9yaWcvTWFrZWZpbGUuU0gKKysrKyBwZXJsLTUuMjQuMS9NYWtlZmlsZS5TSAogQEAgLTQ4LDEwICs0OCwxMCBAQCBjYXNlICIkdXNlc2hycGxpYiIgaW4KICB0cnVlKQogIAkjIFByZWZpeCBhbGwgcnVucyBvZiAnbWluaXBlcmwnIGFuZCAncGVybCcgd2l0aApAQCAtNzQsNiArNzQsMTAgQEAKIC1hbGw6ICQoRklSU1RNQUtFRklMRSkgJChNSU5JUEVSTF9FWEUpICQoZ2VuZXJhdGVkX3BvZHMpICQocHJpdmF0ZSkgJCh1bmlkYXRhZmlsZXMpICQocHVibGljKSAkKGR5bmFtaWNfZXh0KSAkKG5vbnhzX2V4dCkgZXh0cmFzLm1ha2UgJChNQU5JRkVTVF9TUlQpCiAtCUBlY2hvICIgIjsKIC0JQGVjaG8gIglFdmVyeXRoaW5nIGlzIHVwIHRvIGRhdGUuIFR5cGUgJyQoTUFLRSkgdGVzdCcgdG8gcnVuIHRlc3Qgc3VpdGUuIgorLQorLSQoTUFOSUZFU1RfU1JUKToJTUFOSUZFU1QgJChQRVJMX0VYRSkKKy0JQCQoUlVOX1BFUkwpIFBvcnRpbmcvbWFuaXNvcnQgLXEgfHwgKGVjaG8gIldBUk5JTkc6IHJlLXNvcnRpbmcgTUFOSUZFU1QiOyBcCistCSAgICAkKFJVTl9QRVJMKSBQb3J0aW5nL21hbmlzb3J0IC1xIC1vIE1BTklGRVNUOyBzaCAtYyB0cnVlKQogKyNhbGw6ICQoRklSU1RNQUtFRklMRSkgJChNSU5JUEVSTF9FWEUpICQoZ2VuZXJhdGVkX3BvZHMpICQocHJpdmF0ZSkgJCh1bmlkYXRhZmlsZXMpICQocHVibGljKSAkKGR5bmFtaWNfZXh0KSAkKG5vbnhzX2V4dCkgZXh0cmFzLm1ha2UgJChNQU5JRkVTVF9TUlQpCiArIwlAZWNobyAiICI7CiArIwlAZWNobyAiCUV2ZXJ5dGhpbmcgaXMgdXAgdG8gZGF0ZS4gVHlwZSAnJChNQUtFKSB0ZXN0JyB0byBydW4gdGVzdCBzdWl0ZS4iCkBAIC04MywxMCArODcsNyBAQAogK21vcmU6ICQoZ2VuZXJhdGVkX3BvZHMpICQocHJpdmF0ZSkgJChwdWJsaWMpCiArCiArbW9yZTI6ICQoZHluYW1pY19leHQpCi0gCi0tJChNQU5JRkVTVF9TUlQpOglNQU5JRkVTVCAkKFBFUkxfRVhFKQotLQlAJChSVU5fUEVSTCkgUG9ydGluZy9tYW5pc29ydCAtcSB8fCAoZWNobyAiV0FSTklORzogcmUtc29ydGluZyBNQU5JRkVTVCI7IFwKLS0JICAgICQoUlVOX1BFUkwpIFBvcnRpbmcvbWFuaXNvcnQgLXEgLW8gTUFOSUZFU1Q7IHNoIC1jIHRydWUpCisrCiArbW9yZTM6ICQobm9ueHNfZXh0KQogKwogK21vcmU0OiBleHRyYXMubWFrZSAkKE1BTklGRVNUX1NSVCkKQEAgLTE1MSw3ICsxNTIsNyBAQAogIAkuLyQoTUlOSVBFUkxFWFApIG1ha2VkZWYucGwgUExBVEZPUk09b3MyIC1EUEVSTF9ETEw9JChQRVJMX0RMTCkgQ0NfRkxBR1M9IiQoT1BUSU1JWkUpIiA+IHBlcmw1LmRlZgogIAogICFOTyFTVUJTIQotQEAgLTg3OCw3ICs4NzgsNyBAQCAkKExJQlBFUkwpOiAkJiAkKHBlcmxsaWJfb2JqcykgJChEWU5BTE9BREVSKSAkKExJQlBFUkxFWFBPUlQpCitAQCAtODc4LDcgKzg3OCw3IEBAICQoTElCUEVSTCk6ICQmICQocGVybGxpYl9vYmpzKSAkKERZTkFMT0EKICAJdHJ1ZSkKICAJCSRzcGl0c2hlbGwgPj4kTWFrZWZpbGUgPDwnIU5PIVNVQlMhJwogIAlybSAtZiAkQApAQCAtMTYwLDcgKzE2MSw3IEBACiAgIU5PIVNVQlMhCiAgCQljYXNlICIkb3NuYW1lIiBpbgogIAkJYWl4KQotQEAgLTkzNiwxNSArOTM2LDE5IEBAIGxpYi9idWlsZGN1c3RvbWl6ZS5wbDogJCYgJChtaW5pcGVybF9vYmpzKSB3cml0ZV9idWlsZGN1c3RvbWl6ZS5wbAorQEAgLTkzNiwxNSArOTM2LDE5IEBAIGxpYi9idWlsZGN1c3RvbWl6ZS5wbDogJCYgJChtaW5pcGVybF9vYmoKICAJCSRzcGl0c2hlbGwgPj4kTWFrZWZpbGUgPDwnIU5PIVNVQlMhJwogIGxpYi9idWlsZGN1c3RvbWl6ZS5wbDogJCYgJChtaW5pcGVybF9vYmpzKQogIAkkKENDKSAtbyAkKE1JTklQRVJMX0VYRSkgJChDTERGTEFHUykgJChtaW5pcGVybF9vYmpzKSAkKGxpYnMpCkBAIC0xODMsNyArMTg0LDcgQEAKICAJJChNSU5JUEVSTCkgLWYgd3JpdGVfYnVpbGRjdXN0b21pemUucGwgICAgCiAgIU5PIVNVQlMhCiAgCQk7OwotQEAgLTk2Niw3ICs5NzAsOSBAQCBsaWIvYnVpbGRjdXN0b21pemUucGw6ICQmICQobWluaXBlcmxfb2Jqcykgd3JpdGVfYnVpbGRjdXN0b21pemUucGwKK0BAIC05NjYsNyArOTcwLDkgQEAgbGliL2J1aWxkY3VzdG9taXplLnBsOiAkJiAkKG1pbmlwZXJsX29iagogIAktQHJtIC1mIG1pbmlwZXJsLnhvawogIAkkKENDKSAkKENMREZMQUdTKSAkKE5BTUVTUEFDRUZMQUdTKSAtbyAkKE1JTklQRVJMX0VYRSkgXAogIAkgICAgJChtaW5pcGVybF9vYmpzKSAkKGxpYnMpCkBAIC0xOTQsNyArMTk1LDcgQEAKICAJJChNSU5JUEVSTCkgLWYgd3JpdGVfYnVpbGRjdXN0b21pemUucGwKICAhTk8hU1VCUyEKICAJCTs7Ci1AQCAtOTc3LDcgKzk4Myw5IEBAIGxpYi9idWlsZGN1c3RvbWl6ZS5wbDogXCQmIFwkKG1pbmlwZXJsX29ianMpIHdyaXRlX2J1aWxkY3VzdG9taXplLnBsCitAQCAtOTc3LDcgKzk4Myw5IEBAIGxpYi9idWlsZGN1c3RvbWl6ZS5wbDogXCQmIFwkKG1pbmlwZXJsX28KICAJLUBybSAtZiBtaW5pcGVybC54b2sKICAJLUBybSBcJChNSU5JUEVSTF9FWEUpCiAgCVwkKExOUykgXCQoSE9TVF9QRVJMKSBcJChNSU5JUEVSTF9FWEUpCkBAIC0yMDUsNyArMjA2LDcgQEAKICAJXCQoTUlOSVBFUkwpIC1mIHdyaXRlX2J1aWxkY3VzdG9taXplLnBsICdvc25hbWUnICIkb3NuYW1lIgogICFHUk9LIVRISVMhCiAgCQllbHNlCi1AQCAtOTg2LDcgKzk5NCw5IEBAIGxpYi9idWlsZGN1c3RvbWl6ZS5wbDogJCYgJChtaW5pcGVybF9vYmpzKSB3cml0ZV9idWlsZGN1c3RvbWl6ZS5wbAorQEAgLTk4Niw3ICs5OTQsOSBAQCBsaWIvYnVpbGRjdXN0b21pemUucGw6ICQmICQobWluaXBlcmxfb2JqCiAgCS1Acm0gLWYgbWluaXBlcmwueG9rCiAgCSQoQ0MpICQoQ0xERkxBR1MpIC1vICQoTUlOSVBFUkxfRVhFKSBcCiAgCSAgICAkKG1pbmlwZXJsX29ianMpICQobGlicykKQEAgLTIyNSw3ICsyMjYsNyBAQAogIAktQGZvciBmIGluIE1ha2VmaWxlLlBMIFBQUG9ydF9wbS5QTCBQUFBvcnRfeHMuUEwgcHBwb3J0X2guUEw7IGRvIFwKICAJKGNkIGV4dC9EZXZlbC1QUFBvcnQgJiYgYHB3ZGAvcnVuLnNoIC4uLy4uLyQoTUlOSVBFUkxfRVhFKSAtSS4uLy4uL2xpYiBcJFwkZik7IFwKICAJZG9uZQotQEAgLTEwNDYsNyArMTA1Niw3IEBAIG1ha2VwcHBvcnQ6IFwkKE1JTklQRVJMX0VYRSkgXCQoQ09ORklHUE0pCitAQCAtMTA0Niw3ICsxMDU2LDcgQEAgbWFrZXBwcG9ydDogXCQoTUlOSVBFUkxfRVhFKSBcJChDT05GSUdQTQogICopCiAgJHNwaXRzaGVsbCA+PiRNYWtlZmlsZSA8PCchTk8hU1VCUyEnCiAgLlBIT05ZOiBtYWtlcHBwb3J0CkBAIC0yNTQsNyArMjU1LDcgQEAKICAJJChNSU5JUEVSTCkgbGliL3VuaWNvcmUvbWt0YWJsZXMgLUMgbGliL3VuaWNvcmUgLVAgcG9kIC1tYWtldGVzdCAtbWFrZWxpc3QgLXAKICAjCUNvbW1lbnRlZCBvdXQgc28gYWx3YXlzIHJ1bnMsIG1rdGFibGVzIGxvb2tzIGF0IGZhciBtb3JlIGZpbGVzIHRoYW4gd2UKICAjCWNhbiBpbiB0aGlzIG1ha2VmaWxlIHRvIGRlY2lkZSBpZiBuZWVkcyB0byBydW4gb3Igbm90Ci1AQCAtMTA3NCwxMiArMTA4NCwxMiBAQCB1bmkuZGF0YTogJChNSU5JUEVSTF9FWEUpICQoQ09ORklHUE0pIGxpYi91bmljb3JlL21rdGFibGVzICQobm9ueHNfZXh0KQorQEAgLTEwNzQsMTIgKzEwODQsMTIgQEAgdW5pLmRhdGE6ICQoTUlOSVBFUkxfRVhFKSAkKENPTkZJR1BNKSBsaQogICMgJChQRVJMX0VYRSkgYW5kIGV4dCBiZWNhdXNlIHBvZF9saWIucGwgbmVlZHMgRGlnZXN0OjpNRDUKICAjIEJ1dCBhbHNvIHRoaXMgZW5zdXJlcyB0aGF0IGFsbCBleHRlbnNpb25zIGFyZSBidWlsdCBiZWZvcmUgd2UgdHJ5IHRvIHNjYW4KICAjIHRoZW0sIHdoaWNoIHBpY2tzIHVwIERldmVsOjpQUFBvcnQncyBkb2N1bWVudGF0aW9uLgpAQCAtMjcwLDkgKzI3MSw5IEBACiAgCSQoTUlOSVBFUkwpIGF1dG9kb2MucGwKICAKICBwb2QvcGVybG1vZGxpYi5wb2Q6ICQoTUlOSVBFUkxfRVhFKSBwb2QvcGVybG1vZGxpYi5QTCBNQU5JRkVTVAotQEAgLTEwODksNyArMTA5OSw3IEBAIHBvZC9wZXJsNTI0MGRlbHRhLnBvZDogcG9kL3BlcmxkZWx0YS5wb2QKLSAJJChSTVMpIHBvZC9wZXJsNTI0MGRlbHRhLnBvZAotIAkkKExOUykgcGVybGRlbHRhLnBvZCBwb2QvcGVybDUyNDBkZWx0YS5wb2QKK0BAIC0xMDg5LDcgKzEwOTksNyBAQCBwb2QvcGVybDUyNDFkZWx0YS5wb2Q6IHBvZC9wZXJsZGVsdGEucG9kCisgCSQoUk1TKSBwb2QvcGVybDUyNDFkZWx0YS5wb2QKKyAJJChMTlMpIHBlcmxkZWx0YS5wb2QgcG9kL3Blcmw1MjQxZGVsdGEucG9kCiAgCiAtZXh0cmEucG9kczogJChNSU5JUEVSTF9FWEUpCiArZXh0cmEucG9kczoKQEAgLTM0NSw3ICszNDYsNyBAQAogIAkkKE1JTklQRVJMKSBtYWtlX2V4dC5wbCAkQCAkKE1BS0VfRVhUX0FSR1MpIE1BS0U9IiQoTUFLRSkiIExJQlBFUkxfQT0kKExJQlBFUkwpIExJTktUWVBFPXN0YXRpYyAkKFNUQVRJQ19MREZMQUdTKQogIAogIG5fZHVtbXkgJChub254c19leHQpOgkkKE1JTklQRVJMX0VYRSkgbGliL2J1aWxkY3VzdG9taXplLnBsIHByZXBsaWJyYXJ5IEZPUkNFCi1AQCAtMTQ3OSwxNCArMTQ2OCwxNCBAQCB0ZXN0X3ByZXBfcHJlOiBwcmVwbGlicmFyeSB1dGlsaXRpZXMgJChub254c19leHQpCitAQCAtMTQ3OSwxNCArMTQ2OCwxNCBAQCB0ZXN0X3ByZXBfcHJlOiBwcmVwbGlicmFyeSB1dGlsaXRpZXMgJChuCiAgCiAgY2FzZSAiJHRhcmdldGhvc3QiIGluCiAgJycpICRzcGl0c2hlbGwgPj4kTWFrZWZpbGUgPDwnIU5PIVNVQlMhJwpAQCAtMzYyLDcgKzM2Myw3IEBACiAgCVwkKGR5bmFtaWNfZXh0KSBcJChURVNUX1BFUkxfRExMKSBydW50ZXN0cyBcCiAgCVwkKGdlbmVyYXRlZF9wb2RzKQogIAkkdG8gbGlicGVybC4qCi1AQCAtMTUzOSw3ICsxNTI4LDcgQEAgdGVzdF9wcmVwIHRlc3QtcHJlcDogdGVzdF9wcmVwX3ByZSBcJChNSU5JUEVSTF9FWEUpIFwkKHVuaWRhdGFmaWxlcykgXCQoUEVSTF9FWEUKK0BAIC0xNTM5LDcgKzE1MjgsNyBAQCB0ZXN0X3ByZXAgdGVzdC1wcmVwOiB0ZXN0X3ByZXBfcHJlIFwkKE1JCiAgZXNhYwogIAogICRzcGl0c2hlbGwgPj4kTWFrZWZpbGUgPDwnIU5PIVNVQlMhJwpAQCAtMzgwLDYgKzM4MSwzIEBACiAgCS0gY2QgdCAmJiAkKFJVTl9QRVJMKSBURVNUICQoTUlOSVRFU1RfVEVTVFMpIDwkKGRldnR0eSkKICAKICBtaW5pdGVzdC1ub3R0eSBtaW5pdGVzdF9ub3R0eTogJChNSU5JUEVSTF9FWEUpIG1pbml0ZXN0X3ByZXAKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvY29uZmlnLnNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvY29uZmlnLnNoCmluZGV4IDQ2NTc2NzMuLmFjMDQ4NGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2NvbmZpZy5zaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9jb25maWcuc2gKQEAgLTM2MSw3ICszNjEsNyBAQAogZF9sZGV4cGw9J2RlZmluZScKIGRfbGdhbW1hPSdkZWZpbmUnCiBkX2xnYW1tYV9yPSdkZWZpbmUnCi1kX2xpYm1fbGliX3ZlcnNpb249J2RlZmluZScKK2RfbGlibV9saWJfdmVyc2lvbj0ndW5kZWYnCiBkX2xpYm5hbWVfdW5pcXVlPSd1bmRlZicKIGRfbGluaz0nZGVmaW5lJwogZF9sbHJpbnQ9J2RlZmluZScKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2Nyb3NzLWdlbmVyYXRlX3V1ZG1hcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2Nyb3NzLWdlbmVyYXRlX3V1ZG1hcC5wYXRjaAppbmRleCBhMDBhZDYxLi4zM2UyMjIyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9jcm9zcy1nZW5lcmF0ZV91dWRtYXAucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvY3Jvc3MtZ2VuZXJhdGVfdXVkbWFwLnBhdGNoCkBAIC0xLDE1ICsxLDE1IEBACiBVcHN0cmVhbS1TdGF0dXM6SW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCiAKLUluZGV4OiBwZXJsLTUuMTQuMi9NYWtlZmlsZS5TSAorSW5kZXg6IHBlcmwtNS4yNC4xL01ha2VmaWxlLlNICiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGVybC01LjE0LjIub3JpZy9NYWtlZmlsZS5TSAotKysrIHBlcmwtNS4xNC4yL01ha2VmaWxlLlNICi1AQCAtNjIyLDcgKzYyMiw3IEBAIGJpdGNvdW50Lmg6IGdlbmVyYXRlX3V1ZG1hcCQoSE9TVF9FWEVfRVgKLSAJJChSVU4pIC4vZ2VuZXJhdGVfdXVkbWFwJChIT1NUX0VYRV9FWFQpIHV1ZG1hcC5oIGJpdGNvdW50LmgKKy0tLSBwZXJsLTUuMjQuMS5vcmlnL01ha2VmaWxlLlNICisrKysgcGVybC01LjI0LjEvTWFrZWZpbGUuU0gKK0BAIC03MTAsNyArNzEwLDcgQEAgYml0Y291bnQuaDogZ2VuZXJhdGVfdXVkbWFwXCQoSE9TVF9FWEVfRQogIAorICRzcGl0c2hlbGwgPj4kTWFrZWZpbGUgPDwnIU5PIVNVQlMhJwogIGdlbmVyYXRlX3V1ZG1hcCQoSE9TVF9FWEVfRVhUKTogZ2VuZXJhdGVfdXVkbWFwJChPQkpfRVhUKQogLQkkKENDKSAtbyBnZW5lcmF0ZV91dWRtYXAkKEVYRV9FWFQpICQoTERGTEFHUykgZ2VuZXJhdGVfdXVkbWFwJChPQkpfRVhUKSAkKGxpYnMpCiArCSQoQlVJTERfQ0MpIC1vIGdlbmVyYXRlX3V1ZG1hcCQoRVhFX0VYVCkgZ2VuZXJhdGVfdXVkbWFwLmMKICAKLSBtaW5pcGVybG1haW4kKE9CSl9FWFQpOiBtaW5pcGVybG1haW4uYyBwYXRjaGxldmVsLmgKLSAJJChDQ0NNRCkgJChQTERMRkxBR1MpICQqLmMKKyAhTk8hU1VCUyEKKyA7OwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZml4X2JhZF9ycGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2ZpeF9iYWRfcnBhdGgucGF0Y2gKaW5kZXggNzY1MDEyOC4uNDllZmNiZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZml4X2JhZF9ycGF0aC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9maXhfYmFkX3JwYXRoLnBhdGNoCkBAIC0xMCwxNSArMTAsMTUgQEAKIEl0IGlzIGEgZml4IHRvIE1ha2VNYWtlciB3aXRoaW4gcGVybCwgc28gYWxsIHN1Y2ggcGVybCByZWNpcGVzIHdpbGwgZ2V0IAogZml4ZWQgd2l0aCB0aGlzIHBlcmwgZml4LgogCi1JbmRleDogcGVybC01LjE0LjIvY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL0xpYmxpc3QvS2lkLnBtCitJbmRleDogcGVybC01LjI0LjEvY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL0xpYmxpc3QvS2lkLnBtCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGVybC01LjE0LjIub3JpZy9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTGlibGlzdC9LaWQucG0KLSsrKyBwZXJsLTUuMTQuMi9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTGlibGlzdC9LaWQucG0KLUBAIC01NSw2ICs1NSw3IEBAIHN1YiBfdW5peF9vczJfZXh0IHsKLSAgICAgbXkoJGZvdW5kKSA9IDA7CistLS0gcGVybC01LjI0LjEub3JpZy9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTGlibGlzdC9LaWQucG0KKysrKyBwZXJsLTUuMjQuMS9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTGlibGlzdC9LaWQucG0KK0BAIC01Nyw2ICs1Nyw3IEBAIHN1YiBfdW5peF9vczJfZXh0IHsKKyAgICAgbXkgKCAkZm91bmQgKSA9IDA7CiAgCiAgICAgICMgRGViaWFuLXNwZWNpZmljOiBkb24ndCB1c2UgTERfUlVOX1BBVEggZm9yIHN0YW5kYXJkIGRpcnMKICsgICAgcHVzaChAbGlicGF0aCwgIlNZU1JPT1RMSUIiKTsKICAgICAgJGxkX3J1bl9wYXRoX3NlZW57JF99KysgZm9yIEBsaWJwYXRoOwogIAotICAgICBmb3JlYWNoIG15ICR0aGlzbGliIChzcGxpdCAnICcsICRwb3RlbnRpYWxfbGlicykgeworICAgICBmb3JlYWNoIG15ICR0aGlzbGliICggc3BsaXQgJyAnLCAkcG90ZW50aWFsX2xpYnMgKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9pbnN0YWxscGVybC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2luc3RhbGxwZXJsLnBhdGNoCmluZGV4IDQ1NjAxMjMuLjdmZDFmNTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2luc3RhbGxwZXJsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2luc3RhbGxwZXJsLnBhdGNoCkBAIC0xLDEyICsxLDEyIEBACiBVcHN0cmVhbS1TdGF0dXM6SW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCiAKLUluZGV4OiBwZXJsLTUuMTIuMy9pbnN0YWxscGVybAorSW5kZXg6IHBlcmwtNS4yNC4xL2luc3RhbGxwZXJsCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGVybC01LjEyLjMub3JpZy9pbnN0YWxscGVybAotKysrIHBlcmwtNS4xMi4zL2luc3RhbGxwZXJsCi1AQCAtMyw4ICszLDggQEAKKy0tLSBwZXJsLTUuMjQuMS5vcmlnL2luc3RhbGxwZXJsCisrKysgcGVybC01LjI0LjEvaW5zdGFsbHBlcmwKK0BAIC0yLDggKzIsOCBAQAorIAogIEJFR0lOIHsKLSAgICAgcmVxdWlyZSA1LjAwNDsKICAgICAgY2hkaXIgJy4uJyBpZiAhLWQgJ2xpYicgYW5kIC1kICcuLi9saWInOwogLSAgICBASU5DID0gJ2xpYic7CiAtICAgICRFTlZ7UEVSTDVMSUJ9ID0gJ2xpYic7CkBAIC0xNCw0ICsxNCw0IEBACiArIyAgICAkRU5We1BFUkw1TElCfSA9ICdsaWInOwogIAogICAgICAjIFRoaXMgbmVlZHMgdG8gYmUgYXQgQkVHSU4gdGltZSwgYmVmb3JlIGFueSB1c2Ugb2YgQ29uZmlnCi0gICAgIHJlcXVpcmUgJy4vaW5zdGFsbF9saWIucGwnOworICAgICAjIGluc3RhbGxfbGliIGl0c2VsZiBsb2FkcyBhbmQgaW1wb3J0cyBDb25maWcgaW50byBtYWluOjoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL21ha2VfZXh0LnBsLWZpeC1yZWdlbmVyYXRlLW1ha2VmaWxlLWZhaWxlZC13aGlsZS1jYy0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9tYWtlX2V4dC5wbC1maXgtcmVnZW5lcmF0ZS1tYWtlZmlsZS1mYWlsZWQtd2hpbGUtY2MtLnBhdGNoCmluZGV4IGRlNmY2NTIuLmIyYzU5NzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL21ha2VfZXh0LnBsLWZpeC1yZWdlbmVyYXRlLW1ha2VmaWxlLWZhaWxlZC13aGlsZS1jYy0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvbWFrZV9leHQucGwtZml4LXJlZ2VuZXJhdGUtbWFrZWZpbGUtZmFpbGVkLXdoaWxlLWNjLS5wYXRjaApAQCAtMTAsMTAgKzEwLDEwIEBACiAgbWFrZV9leHQucGwgfCA0ICsrKysKICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCiAKLWRpZmYgLS1naXQgYS9tYWtlX2V4dC5wbCBiL21ha2VfZXh0LnBsCi1pbmRleCBiNDMzNzYyLi45ZmMxYTM2IDEwMDY0NAotLS0tIGEvbWFrZV9leHQucGwKLSsrKyBiL21ha2VfZXh0LnBsCitJbmRleDogcGVybC01LjI0LjEvbWFrZV9leHQucGwKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwZXJsLTUuMjQuMS5vcmlnL21ha2VfZXh0LnBsCisrKysgcGVybC01LjI0LjEvbWFrZV9leHQucGwKIEBAIC0zMzUsNiArMzM1LDEwIEBAIHN1YiBidWlsZF9leHRlbnNpb24gewogICAgICAgICAgICAgICAgICBwcmludCAiRGVsZXRpbmcgbm9uLUNyb3NzIG1ha2VmaWxlXG4iOwogICAgICAgICAgICAgICAgICBjbG9zZSAkbWZoIG9yIGRpZSAiY2xvc2UgJG1ha2VmaWxlOiAkISI7CkBAIC0yNCw3ICsyNCw0IEBACiArICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICB9Ci0gICAgIH0KLS0tIAotMS44LjEuMgotCisgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLTUuMjYuMS1ndWFyZF9vbGRfbGliY3J5cHRfZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvcGVybC01LjI2LjEtZ3VhcmRfb2xkX2xpYmNyeXB0X2ZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjNkNmRjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvcGVybC01LjI2LjEtZ3VhcmRfb2xkX2xpYmNyeXB0X2ZpeC5wYXRjaApAQCAtMCwwICsxLDI4IEBACitjb21taXQgMTNlNzBiMzk3ZGNiMGQxYmY0YTg2OWI2NzBmMDQxYzFkN2I3MzBkMAorQXV0aG9yOiBCauC4o+C4lnJuIEVzc2VyIDxiZXNzZXI4MkBmZWRvcmFwcm9qZWN0Lm9yZz4KK0RhdGU6ICAgU2F0IEphbiAyMCAyMDoyMjo1MyAyMDE4ICswMTAwCisKKyAgICBwcDogR3VhcmQgZml4IGZvciByZWFsbHkgb2xkIGJ1ZyBpbiBnbGliYyBsaWJjcnlwdAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorCitkaWZmIC0tZ2l0IGEvcHAuYyBiL3BwLmMKK2luZGV4IGQ1MGFkN2RkYmYuLjY1MTBjN2IxNWMgMTAwNjQ0CistLS0gYS9wcC5jCisrKysgYi9wcC5jCitAQCAtMzY1MCw4ICszNjUwLDEyIEBAIFBQKHBwX2NyeXB0KQorICNpZiBkZWZpbmVkKF9fR0xJQkNfXykgfHwgZGVmaW5lZChfX0VNWF9fKQorIAlpZiAoUExfcmVlbnRyYW50X2J1ZmZlci0+X2NyeXB0X3N0cnVjdF9idWZmZXIpIHsKKyAJICAgIFBMX3JlZW50cmFudF9idWZmZXItPl9jcnlwdF9zdHJ1Y3RfYnVmZmVyLT5pbml0aWFsaXplZCA9IDA7CistCSAgICAvKiB3b3JrIGFyb3VuZCBnbGliYy0yLjIuNSBidWcgKi8KKysjaWYgKGRlZmluZWQoX19HTElCQ19fKSAmJiBfX0dMSUJDX18gPT0gMikgJiYgXAorKyAgICAoZGVmaW5lZChfX0dMSUJDX01JTk9SX18pICYmIF9fR0xJQkNfTUlOT1JfXyA+PSAyICYmIF9fR0xJQkNfTUlOT1JfXyA8IDQpCisrCSAgICAvKiB3b3JrIGFyb3VuZCBnbGliYy0yLjIuNSBidWcsIGhhcyBiZWVuIGZpeGVkIGF0IHNvbWUKKysJICAgICAqIHRpbWUgaW4gZ2xpYmMtMi4zLlggKi8KKyAJICAgIFBMX3JlZW50cmFudF9idWZmZXItPl9jcnlwdF9zdHJ1Y3RfYnVmZmVyLT5jdXJyZW50X3NhbHRiaXRzID0gMDsKKysjZW5kaWYKKyAJfQorICNlbmRpZgorICAgICB9CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtYXJjaGxpYi1leHAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLWFyY2hsaWItZXhwLnBhdGNoCmluZGV4IGQ5MTJkMDAuLjM3YmY1MjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtYXJjaGxpYi1leHAucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvcGVybC1hcmNobGliLWV4cC5wYXRjaApAQCAtMjUsMTYgKzI1LDE2IEBACiAKIFNpZ25lZC1vZmYtYnk6IFRvbSBaYW51c3NpIDx0b20uemFudXNzaUBpbnRlbC5jb20+CiAKLUluZGV4OiBwZXJsLTUuMTQuMi9jb25maWdfaC5TSAorSW5kZXg6IHBlcmwtNS4yNC4xL2NvbmZpZ19oLlNICiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGVybC01LjE0LjIub3JpZy9jb25maWdfaC5TSAotKysrIHBlcmwtNS4xNC4yL2NvbmZpZ19oLlNICi1AQCAtOTk2LDcgKzk5Niw3IEBAIHNlZCA8PCFHUk9LIVRISVMhID4kQ09ORklHX0ggLWUgJ3MhXiN1bmQKKy0tLSBwZXJsLTUuMjQuMS5vcmlnL2NvbmZpZ19oLlNICisrKysgcGVybC01LjI0LjEvY29uZmlnX2guU0gKK0BAIC0xNDM0LDcgKzE0MzQsNyBAQCBzZWQgPDwhR1JPSyFUSElTISA+JENPTkZJR19IIC1lICdzIV4jdW5kCiAgICoJaW4gcHJvZ3JhbXMgdGhhdCBhcmUgbm90IHByZXBhcmVkIHRvIGRlYWwgd2l0aCB+IGV4cGFuc2lvbiBhdCBydW4tdGltZS4KICAgKi8KICAjJGRfYXJjaGxpYiBBUkNITElCICIkYXJjaGxpYiIJCS8qKi8KIC0jJGRfYXJjaGxpYiBBUkNITElCX0VYUCAiJGFyY2hsaWJleHAiCQkvKiovCiArIyRkX2FyY2hsaWIgQVJDSExJQl9FWFAgIiRhcmNobGliX2V4cCIJCS8qKi8KICAKLSAvKiBBUkNITkFNRToKLSAgKglUaGlzIHN5bWJvbCBob2xkcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGFyY2hpdGVjdHVyZSBuYW1lLgorIC8qIEJJTjoKKyAgKglUaGlzIHN5bWJvbCBob2xkcyB0aGUgcGF0aCBvZiB0aGUgYmluIGRpcmVjdG9yeSB3aGVyZSB0aGUgcGFja2FnZSB3aWxsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLWR5bmxvYWRlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtZHlubG9hZGVyLnBhdGNoCmluZGV4IDAzNWJlYmEuLjI1NzIwNjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtZHlubG9hZGVyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL3BlcmwtZHlubG9hZGVyLnBhdGNoCkBAIC03LDEzICs3LDEzIEBACiAKIFVwZGF0ZSBieSBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPiAyMDExLzA0LzIxCiAKLUluZGV4OiBwZXJsLTUuMTQuMi9kaXN0L1hTTG9hZGVyL1hTTG9hZGVyX3BtLlBMCitJbmRleDogcGVybC01LjI0LjEvZGlzdC9YU0xvYWRlci9YU0xvYWRlcl9wbS5QTAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBlcmwtNS4xNC4yLm9yaWcvZGlzdC9YU0xvYWRlci9YU0xvYWRlcl9wbS5QTAotKysrIHBlcmwtNS4xNC4yL2Rpc3QvWFNMb2FkZXIvWFNMb2FkZXJfcG0uUEwKLUBAIC0yOCw2ICsyOCwyMCBAQCBzdWIgbG9hZCB7Ci0gCi0gICAgIG15ICgkbW9kdWxlLCAkbW9kbGlibmFtZSkgPSBjYWxsZXIoKTsKKy0tLSBwZXJsLTUuMjQuMS5vcmlnL2Rpc3QvWFNMb2FkZXIvWFNMb2FkZXJfcG0uUEwKKysrKyBwZXJsLTUuMjQuMS9kaXN0L1hTTG9hZGVyL1hTTG9hZGVyX3BtLlBMCitAQCAtNTIsNiArNTIsMjAgQEAgc3ViIGxvYWQgeworICAgICBteSAoJGNhbGxlciwgJG1vZGxpYm5hbWUpID0gY2FsbGVyKCk7CisgICAgIG15ICRtb2R1bGUgPSAkY2FsbGVyOwogIAogKyAgICAjIE9FOiBBbGxvdyBlbnYgdG8gZm9ybSBkeW5hbWljIGxvYWRlciB0byBsb29rIGluIGEgZGlmZmVyZW50IHBsYWNlCiArICAgICMgVGhpcyBpcyBzbyBpdCBmaW5kcyB0aGUgaG9zdCAuc28gZmlsZXMsIG5vdCB0aGUgdGFyZ2V0cwpAQCAtMzAsNSArMzAsNSBAQAogKyAgICB9CiArCiAgICAgIGlmIChAXykgewotIAkkbW9kdWxlID0gJF9bMF07CisgICAgICAgICAkbW9kdWxlID0gJF9bMF07CiAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLWVuYWJsZS1nZGJtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvcGVybC1lbmFibGUtZ2RibS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE4M2ZjYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLWVuYWJsZS1nZGJtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOkluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1JbmRleDogcGVybC01LjguOC9jb25maWdfaC5TSAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBlcmwtNS44Ljgub3JpZy9jb25maWdfaC5TSAkyMDA1LTExLTAxIDAyOjEzOjA1LjAwMDAwMDAwMCArMDgwMAotKysrIHBlcmwtNS44LjgvY29uZmlnX2guU0gJMjAxMC0xMS0wMSAxNzowNjowNy4yMTUyMTk3MzggKzA4MDAKLUBAIC03MDksNiArNzA5LDEyIEBACi0gICovCi0gIyRpX2Zsb2F0IElfRkxPQVQJCS8qKi8KLSAKLSsvKiBJX0dEQk06Ci0rICogICAgICBUaGlzIHN5bWJvbCwgaWYgZGVmaW5lZCwgaW5kaWNhdGVzIHRoYXQgPGdkYm0uaD4gZXhpc3RzIGFuZCBzaG91bGQKLSsgKiAgICAgIGJlIGluY2x1ZGVkLgotKyAqLwotKyMkaV9nZGJtIElfR0RCTSAvKiovCi0rCi0gLyogSV9MSU1JVFM6Ci0gICoJVGhpcyBzeW1ib2wsIGlmIGRlZmluZWQsIGluZGljYXRlcyB0byB0aGUgQyBwcm9ncmFtIHRoYXQgaXQgc2hvdWxkCi0gICoJaW5jbHVkZSA8bGltaXRzLmg+IHRvIGdldCBkZWZpbml0aW9uIG9mIHN5bWJvbHMgbGlrZSBXT1JEX0JJVCBvcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvcGVybC10ZXN0LWN1c3RvbWl6ZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLXRlc3QtY3VzdG9taXplZC5wYXRjaAppbmRleCA5MGU0ZGNkLi4xZDlhNTZkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLXRlc3QtY3VzdG9taXplZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9wZXJsLXRlc3QtY3VzdG9taXplZC5wYXRjaApAQCAtMzIsNyArMzIsNyBAQAogIEV4dFV0aWxzOjpNYWtlTWFrZXIgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL0xpYmxpc3QucG0gMGUxZTRjMjVlZGRiOTk5ZmVjNmM0ZGM2NjU5M2Y3NmRiMzRjZmQxNgogLUV4dFV0aWxzOjpNYWtlTWFrZXIgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL0xpYmxpc3QvS2lkLnBtIGJmZDJhYTAwY2E0ZWQyNTFmMzQyZTFkMWFkNzA0YWJiYWY1YTYxNWUKIC1FeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NYWtlTWFrZXIucG0gNTUyOWFlMzA2NDM2NWVhZmQ5OTUzNjYyMTMwNWQ1MmY0YWIzMWI0NQotK0V4dFV0aWxzOjpNYWtlTWFrZXIgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL0xpYmxpc3QvS2lkLnBtIGQ1OTNkOGZkYzVjMGViY2I2ZDM3MDFjNzBmYzY2NDBjNTBkOTM0NTUKKytFeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9MaWJsaXN0L0tpZC5wbSBmMWNhNWVjMjQ3ZWI2OWJhMTNhMjY5ZjM0ZGMyMDVkYTM3YjYxMjQ0CiArRXh0VXRpbHM6Ok1ha2VNYWtlciBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTWFrZU1ha2VyLnBtIGJmOTE3NGM3MGEwZTUwZmYyZmVlNDU1MmM3ZGY4OWIzN2QyOTJkYTEKICBFeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NYWtlTWFrZXIvQ29uZmlnLnBtIGJjODhiMjc1YWY3M2I4ZmFhYzZhYmQ1OWE5YWFkM2Y2MjU5MjU4MTAKICBFeHRVdGlsczo6TWFrZU1ha2VyIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NYWtlTWFrZXIvRkFRLnBvZCAwNjJlNWQxNGE4MDNmYmJlYzhkNjE4MDMwODZhM2Q3OTk3ZThhNDczCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybF81LjI0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybF81LjI0LjEuYmIKaW5kZXggYjU1ZDIyMi4uOTFmMzEwZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmxfNS4yNC4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsXzUuMjQuMS5iYgpAQCAtMSw4ICsxLDcgQEAKIHJlcXVpcmUgcGVybC5pbmMKIAogIyBXZSBuZWVkIGdudWdyZXAgKGZvciAtSSkKLURFUEVORFMgPSAidmlydHVhbC9kYiBncmVwLW5hdGl2ZSIKLURFUEVORFMgKz0gImdkYm0gemxpYiIKK0RFUEVORFMgPSAiZGIgZ3JlcC1uYXRpdmUgZ2RibSB6bGliIHZpcnR1YWwvY3J5cHQiCiAKICMgUGljayB1cCBwYXRjaGVzIGZyb20gZGViaWFuCiAjIGh0dHA6Ly9mdHAuZGUuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL3AvcGVybC9wZXJsXzUuMjIuMC0xLmRlYmlhbi50YXIueHoKQEAgLTQ2LDcgKzQ1LDYgQEAKICAgICAgICAgZmlsZTovL2xldGdjYy1maW5kLWVycm5vLnBhdGNoIFwKICAgICAgICAgZmlsZTovL2dlbmVyYXRlLXNoLnBhdGNoIFwKICAgICAgICAgZmlsZTovL25hdGl2ZS1wZXJsaW5jLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL3BlcmwtZW5hYmxlLWdkYm0ucGF0Y2ggXAogICAgICAgICBmaWxlOi8vY3Jvc3MtZ2VuZXJhdGVfdXVkbWFwLnBhdGNoIFwKICAgICAgICAgZmlsZTovL2ZpeF9iYWRfcnBhdGgucGF0Y2ggXAogICAgICAgICBmaWxlOi8vZHluYWxvYWRlcmhhY2sucGF0Y2ggXApAQCAtNjUsNiArNjMsOSBAQAogICAgICAgICBmaWxlOi8vcGVybC1lcnJuby1nZW5lcmF0aW9uLWdjYzUucGF0Y2ggXAogICAgICAgICBmaWxlOi8vcGVybC1maXgtY29uZmxpY3QtYmV0d2Vlbi1za2lwX2FsbC1hbmQtRU5ELnBhdGNoIFwKICAgICAgICAgZmlsZTovL3BlcmwtdGVzdC1jdXN0b21pemVkLnBhdGNoIFwKKyAgICAgICAgZmlsZTovL3BlcmwtNS4yNi4xLWd1YXJkX29sZF9saWJjcnlwdF9maXgucGF0Y2ggXAorICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTI4ODMucGF0Y2ggXAorICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTI4MzcucGF0Y2ggXAogIgogCiAjIEZpeCB0ZXN0IGNhc2UgaXNzdWVzCkBAIC0xODksNiArMTkwLDE5IEBACiAgICAgICAgIG9lX3J1bm1ha2UgcGVybCBMRD0iJHtDQ0xEfSIKIH0KIAorZG9fY29tcGlsZV9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICAgICAjIFJlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMgZnJvbSBudW1lcm91cyBjb21tZW50cy4uLgorICAgICAgICBmaW5kICIke1N9L2NwYW4vRW5jb2RlIiAtdHlwZSBmIFwKKyAgICAgICAgICAgIFwoIC1uYW1lICcqLmV4aCcgLW8gLW5hbWUgJyouYycgLW8gLW5hbWUgJyouaCcgXClcCisgICAgICAgICAgICAtZXhlYyBzZWQgLWkgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyB7fSArCisgICAgICAgIHNlZCAtaSAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgJHtTfS9wZXJsLmggJHtTfS9wcC5oCisgICAgICAgIHNlZCAtaSAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX0vdXNyL2Jpbi9wZXJsLW5hdGl2ZS9wZXJsJHtQVn0ucmVhbDovdXNyL2Jpbi9wZXJsJHtQVn06ZycgIFwKKyAgICAgICAgICAgICR7U30vY3Bhbi9Db21wcmVzcy1SYXctQnppcDIvY29uc3RhbnRzLmggXAorICAgICAgICAgICAgJHtTfS9jcGFuL0NvbXByZXNzLVJhdy1abGliL2NvbnN0YW50cy5oIFwKKyAgICAgICAgICAgICR7U30vY3Bhbi9JUEMtU3lzVi9jb25zdC1jLmluYyBcCisgICAgICAgICAgICAke1N9L2Rpc3QvVGltZS1IaVJlcy9jb25zdC1jLmluYworfQorCiBkb19pbnN0YWxsKCkgewogCSNleHBvcnQgaG9zdHBlcmw9IiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9wZXJsLW5hdGl2ZS9wZXJsJHtQVn0iCiAJb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQpAQCAtMjMyLDYgKzI0Niw3IEBACiAgICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfQklORElSX05BVElWRX0vcGVybC1uYXRpdmUvLCR7YmluZGlyfS8sZyIgXAogICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LywsZyIgXAogICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU59LyR7VEFSR0VUX1BSRUZJWH0sJHtiaW5kaXJ9LGciIFwKKyAgICAgICAgICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCiAgICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L2gyeHMgXAogICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9oMnBoIFwKICAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vcG9kMm1hbiBcCkBAIC0yNjcsNiArMjgyLDcgQEAKIEZJTEVTXyR7UE59LWxpYiA9ICIke2xpYmRpcn0vbGlicGVybC5zbyogXAogICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNSBcCiAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvY29uZmlnLnNoIFwKKwkJICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ29uZmlnX2dpdC5wbCBcCiAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ29uZmlnX2hlYXZ5LnBsIFwKICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9Db25maWdfaGVhdnktdGFyZ2V0LnBsIgogRklMRVNfJHtQTn0tcG9kID0gIiR7bGliZGlyfS9wZXJsLyR7UFZ9L3BvZCBcCkBAIC0zMjQsNyArMzQwLDcgQEAKICAgICBkLnNldFZhcihkLmV4cGFuZCgiUlJFQ09NTUVORFNfJHtQTn0tbW9kdWxlcyIpLCAnICcuam9pbihwYWNrYWdlcykpCiB9CiAKLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5wZXJsLW1vZHVsZS0uKiIKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl5wZXJsLW1vZHVsZS0uKig/PCFcLW5hdGl2ZSkkIgogUEFDS0FHRVNfRFlOQU1JQ19jbGFzcy1uYXRpdmVzZGsgKz0gIl5uYXRpdmVzZGstcGVybC1tb2R1bGUtLioiCiAKIFJQUk9WSURFU19wZXJsLWxpYiA9ICJwZXJsLWxpYiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mLzAwMDEtTWluaW1hbC10d2Vha3MtdG8tY29tcGlsZS13aXRoLVZpc3VhbC1DLTIwMTUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZi8wMDAxLU1pbmltYWwtdHdlYWtzLXRvLWNvbXBpbGUtd2l0aC1WaXN1YWwtQy0yMDE1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODA1YWQzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mLzAwMDEtTWluaW1hbC10d2Vha3MtdG8tY29tcGlsZS13aXRoLVZpc3VhbC1DLTIwMTUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMjQgKzAsMCBAQAotRnJvbSA0ZDdiNGQ3YzhlOTk2NmM1OTNmNDcyMzU1NjA3MjA0YzZjODBmZWNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGFuIEtlZ2VsIDxkYW5rQGtlZ2VsLmNvbT4KLURhdGU6IFN1biwgNCBKdW4gMjAxNyAxOToxOTo1NSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBNaW5pbWFsIHR3ZWFrcyB0byBjb21waWxlIHdpdGggVmlzdWFsIEMgMjAxNQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgotLS0tCi0gZ2V0b3B0X2xvbmcuYyAgICAgICAgICAgfCAgMiArKwotIGxpYnBrZ2NvbmYvYnNkc3R1YnMuYyAgIHwgIDEgKwotIGxpYnBrZ2NvbmYvbGlicGtnY29uZi5oIHwgIDIgKy0KLSBsaWJwa2djb25mL3BhdGguYyAgICAgICB8IDEwICsrKysrLS0tLS0KLSBsaWJwa2djb25mL3BrZy5jICAgICAgICB8IDI4ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KLSBsaWJwa2djb25mL3N0ZGluYy5oICAgICB8ICA5ICsrKysrKystLQotIDYgZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nZXRvcHRfbG9uZy5jIGIvZ2V0b3B0X2xvbmcuYwotaW5kZXggYWZlYjY4ZC4uNWNlOWJmZCAxMDA2NDQKLS0tLSBhL2dldG9wdF9sb25nLmMKLSsrKyBiL2dldG9wdF9sb25nLmMKLUBAIC02Miw3ICs2Miw5IEBACi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaWZuZGVmIF9XSU4zMgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjZW5kaWYKLSAKLSAjZGVmaW5lIFBLR0NPTkZfSEFDS19MT0dJQ0FMX09SX0FMTF9WQUxVRVMKLSAKLWRpZmYgLS1naXQgYS9saWJwa2djb25mL2JzZHN0dWJzLmMgYi9saWJwa2djb25mL2JzZHN0dWJzLmMKLWluZGV4IDhmNzBmZjMuLjJjMDAwYWMgMTAwNjQ0Ci0tLS0gYS9saWJwa2djb25mL2JzZHN0dWJzLmMKLSsrKyBiL2xpYnBrZ2NvbmYvYnNkc3R1YnMuYwotQEAgLTE3LDYgKzE3LDcgQEAKLSAgKiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgotICAqLwotIAotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotIAotZGlmZiAtLWdpdCBhL2xpYnBrZ2NvbmYvbGlicGtnY29uZi5oIGIvbGlicGtnY29uZi9saWJwa2djb25mLmgKLWluZGV4IDQwNGJmMGMuLjU1MWQ4NWQgMTAwNjQ0Ci0tLS0gYS9saWJwa2djb25mL2xpYnBrZ2NvbmYuaAotKysrIGIvbGlicGtnY29uZi9saWJwa2djb25mLmgKLUBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBwa2djb25mX2F1ZGl0X2xvZ19kZXBlbmRlbmN5KHBrZ2NvbmZfY2xpZW50X3QgKmNsaWVudCwgY29uc3QgcGtnY29uZl9wa2dfdAotIC8qIHBhdGguYyAqLwotIHZvaWQgcGtnY29uZl9wYXRoX2FkZChjb25zdCBjaGFyICp0ZXh0LCBwa2djb25mX2xpc3RfdCAqZGlybGlzdCwgYm9vbCBmaWx0ZXIpOwotIHNpemVfdCBwa2djb25mX3BhdGhfc3BsaXQoY29uc3QgY2hhciAqdGV4dCwgcGtnY29uZl9saXN0X3QgKmRpcmxpc3QsIGJvb2wgZmlsdGVyKTsKLS1zaXplX3QgcGtnY29uZl9wYXRoX2J1aWxkX2Zyb21fZW52aXJvbihjb25zdCBjaGFyICplbnZpcm9uLCBjb25zdCBjaGFyICpmYWxsYmFjaywgcGtnY29uZl9saXN0X3QgKmRpcmxpc3QsIGJvb2wgZmlsdGVyKTsKLStzaXplX3QgcGtnY29uZl9wYXRoX2J1aWxkX2Zyb21fZW52aXJvbihjb25zdCBjaGFyICplbnZ2YXJuYW1lLCBjb25zdCBjaGFyICpmYWxsYmFjaywgcGtnY29uZl9saXN0X3QgKmRpcmxpc3QsIGJvb2wgZmlsdGVyKTsKLSBib29sIHBrZ2NvbmZfcGF0aF9tYXRjaF9saXN0KGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0KTsKLSB2b2lkIHBrZ2NvbmZfcGF0aF9mcmVlKHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0KTsKLSBib29sIHBrZ2NvbmZfcGF0aF9yZWxvY2F0ZShjaGFyICpidWYsIHNpemVfdCBidWZsZW4pOwotZGlmZiAtLWdpdCBhL2xpYnBrZ2NvbmYvcGF0aC5jIGIvbGlicGtnY29uZi9wYXRoLmMKLWluZGV4IGRkZGIzYmYuLjU5ZTAwM2UgMTAwNjQ0Ci0tLS0gYS9saWJwa2djb25mL3BhdGguYwotKysrIGIvbGlicGtnY29uZi9wYXRoLmMKLUBAIC0yMCw3ICsyMCw3IEBACi0gIyBpbmNsdWRlIDxzeXMvY3lnd2luLmg+Ci0gI2VuZGlmCi0gCi0tI2lmZGVmIEhBVkVfU1lTX1NUQVRfSAotKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1NUQVRfSCkgJiYgISBkZWZpbmVkKF9XSU4zMikKLSAjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gIyBkZWZpbmUgUEtHQ09ORl9DQUNIRV9JTk9ERVMKLSAjZW5kaWYKLUBAIC0xNTYsMTIgKzE1NiwxMiBAQCBwa2djb25mX3BhdGhfc3BsaXQoY29uc3QgY2hhciAqdGV4dCwgcGtnY29uZl9saXN0X3QgKmRpcmxpc3QsIGJvb2wgZmlsdGVyKQotIC8qCi0gICogIWRvYwotICAqCi0tICogLi4gYzpmdW5jdGlvbjo6IHNpemVfdCBwa2djb25mX3BhdGhfYnVpbGRfZnJvbV9lbnZpcm9uKGNvbnN0IGNoYXIgKmVudmlyb24sIGNvbnN0IGNoYXIgKmZhbGxiYWNrLCBwa2djb25mX2xpc3RfdCAqZGlybGlzdCkKLSsgKiAuLiBjOmZ1bmN0aW9uOjogc2l6ZV90IHBrZ2NvbmZfcGF0aF9idWlsZF9mcm9tX2Vudmlyb24oY29uc3QgY2hhciAqZW52dmFybmFtZSwgY29uc3QgY2hhciAqZmFsbGJhY2ssIHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0KQotICAqCi0gICogICAgQWRkcyB0aGUgcGF0aHMgc3BlY2lmaWVkIGluIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEgcGF0aCBsaXN0LiAgSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBzZXQsCi0gICogICAgYW4gb3B0aW9uYWwgZGVmYXVsdCBzZXQgb2YgcGF0aHMgaXMgYWRkZWQuCi0gICoKLS0gKiAgICA6cGFyYW0gY2hhciogZW52aXJvbjogVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGxvb2sgdXAuCi0rICogICAgOnBhcmFtIGNoYXIqIGVudnZhcm5hbWU6IFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBsb29rIHVwLgotICAqICAgIDpwYXJhbSBjaGFyKiBmYWxsYmFjazogVGhlIGZhbGxiYWNrIHBhdGhzIHRvIHVzZSBpZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldC4KLSAgKiAgICA6cGFyYW0gcGtnY29uZl9saXN0X3QqIGRpcmxpc3Q6IFRoZSBwYXRoIGxpc3QgdG8gYWRkIHRoZSBwYXRoIG5vZGVzIHRvLgotICAqICAgIDpwYXJhbSBib29sIGZpbHRlcjogV2hldGhlciB0byBwZXJmb3JtIGR1cGxpY2F0ZSBmaWx0ZXJpbmcuCi1AQCAtMTY5LDExICsxNjksMTEgQEAgcGtnY29uZl9wYXRoX3NwbGl0KGNvbnN0IGNoYXIgKnRleHQsIHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0LCBib29sIGZpbHRlcikKLSAgKiAgICA6cnR5cGU6IHNpemVfdAotICAqLwotIHNpemVfdAotLXBrZ2NvbmZfcGF0aF9idWlsZF9mcm9tX2Vudmlyb24oY29uc3QgY2hhciAqZW52aXJvbiwgY29uc3QgY2hhciAqZmFsbGJhY2ssIHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0LCBib29sIGZpbHRlcikKLStwa2djb25mX3BhdGhfYnVpbGRfZnJvbV9lbnZpcm9uKGNvbnN0IGNoYXIgKmVudnZhcm5hbWUsIGNvbnN0IGNoYXIgKmZhbGxiYWNrLCBwa2djb25mX2xpc3RfdCAqZGlybGlzdCwgYm9vbCBmaWx0ZXIpCi0gewotIAljb25zdCBjaGFyICpkYXRhOwotIAotLQlkYXRhID0gZ2V0ZW52KGVudmlyb24pOwotKwlkYXRhID0gZ2V0ZW52KGVudnZhcm5hbWUpOwotIAlpZiAoZGF0YSAhPSBOVUxMKQotIAkJcmV0dXJuIHBrZ2NvbmZfcGF0aF9zcGxpdChkYXRhLCBkaXJsaXN0LCBmaWx0ZXIpOwotIAotZGlmZiAtLWdpdCBhL2xpYnBrZ2NvbmYvcGtnLmMgYi9saWJwa2djb25mL3BrZy5jCi1pbmRleCA3YWViZDYxLi41ZGFjYWUzIDEwMDY0NAotLS0tIGEvbGlicGtnY29uZi9wa2cuYwotKysrIGIvbGlicGtnY29uZi9wa2cuYwotQEAgLTMwLDYgKzMwLDggQEAKLSAjCWRlZmluZSBQS0dfQ09ORklHX1JFR19LRVkgIlNvZnR3YXJlXFxwa2djb25maWdcXFBLR19DT05GSUdfUEFUSCIKLSAjCXVuZGVmIFBLR19ERUZBVUxUX1BBVEgKLSAjCWRlZmluZSBQS0dfREVGQVVMVF9QQVRIICIuLi9saWIvcGtnY29uZmlnOy4uL3NoYXJlL3BrZ2NvbmZpZyIKLSsjZGVmaW5lIHN0cm5jYXNlY21wIF9zdHJuaWNtcAotKyNkZWZpbmUgc3RyY2FzZWNtcCBfc3RyaWNtcAotICNlbmRpZgotIAotICNkZWZpbmUgUEtHX0NPTkZJR19FWFQJCSIucGMiCi1AQCAtMTM0LDIxICsxMzYsMjEgQEAgc3RhdGljIGludCBwa2djb25mX3BrZ19wYXJzZXJfa2V5d29yZF9wYWlyX2NtcChjb25zdCB2b2lkICprZXksIGNvbnN0IHZvaWQgKnB0cikKLSBzdGF0aWMgdm9pZAotIHBrZ2NvbmZfcGtnX3BhcnNlcl90dXBsZV9mdW5jKGNvbnN0IHBrZ2NvbmZfY2xpZW50X3QgKmNsaWVudCwgcGtnY29uZl9wa2dfdCAqcGtnLCBjb25zdCBwdHJkaWZmX3Qgb2Zmc2V0LCBjaGFyICp2YWx1ZSkKLSB7Ci0tCWNoYXIgKipkZXN0ID0gKCh2b2lkICopIHBrZyArIG9mZnNldCk7Ci0rCWNoYXIgKipkZXN0ID0gKGNoYXIgKiopKChjaGFyICopIHBrZyArIG9mZnNldCk7Ci0gCSpkZXN0ID0gcGtnY29uZl90dXBsZV9wYXJzZShjbGllbnQsICZwa2ctPnZhcnMsIHZhbHVlKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLSBwa2djb25mX3BrZ19wYXJzZXJfZnJhZ21lbnRfZnVuYyhjb25zdCBwa2djb25mX2NsaWVudF90ICpjbGllbnQsIHBrZ2NvbmZfcGtnX3QgKnBrZywgY29uc3QgcHRyZGlmZl90IG9mZnNldCwgY2hhciAqdmFsdWUpCi0gewotLQlwa2djb25mX2xpc3RfdCAqZGVzdCA9ICgodm9pZCAqKSBwa2cgKyBvZmZzZXQpOwotKwlwa2djb25mX2xpc3RfdCAqZGVzdCA9IChwa2djb25mX2xpc3RfdCAqKSgoY2hhciAqKSBwa2cgKyBvZmZzZXQpOwotIAlwa2djb25mX2ZyYWdtZW50X3BhcnNlKGNsaWVudCwgZGVzdCwgJnBrZy0+dmFycywgdmFsdWUpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotIHBrZ2NvbmZfcGtnX3BhcnNlcl9kZXBlbmRlbmN5X2Z1bmMoY29uc3QgcGtnY29uZl9jbGllbnRfdCAqY2xpZW50LCBwa2djb25mX3BrZ190ICpwa2csIGNvbnN0IHB0cmRpZmZfdCBvZmZzZXQsIGNoYXIgKnZhbHVlKQotIHsKLS0JcGtnY29uZl9saXN0X3QgKmRlc3QgPSAoKHZvaWQgKikgcGtnICsgb2Zmc2V0KTsKLSsJcGtnY29uZl9saXN0X3QgKmRlc3QgPSAocGtnY29uZl9saXN0X3QgKikoKGNoYXIgKikgcGtnICsgb2Zmc2V0KTsKLSAJcGtnY29uZl9kZXBlbmRlbmN5X3BhcnNlKGNsaWVudCwgcGtnLCBkZXN0LCB2YWx1ZSk7Ci0gfQotIAotQEAgLTIzOCw3ICsyNDAsNyBAQCBwa2djb25mX3BrZ192YWxpZGF0ZShjb25zdCBwa2djb25mX2NsaWVudF90ICpjbGllbnQsIGNvbnN0IHBrZ2NvbmZfcGtnX3QgKnBrZykKLSAKLSAJZm9yIChpID0gMDsgaSA8IFBLR0NPTkZfQVJSQVlfU0laRShwa2djb25mX3BrZ192YWxpZGF0aW9ucyk7IGkrKykKLSAJewotLQkJY2hhciAqKnAgPSAoKHZvaWQgKikgcGtnICsgcGtnY29uZl9wa2dfdmFsaWRhdGlvbnNbaV0ub2Zmc2V0KTsKLSsJCWNoYXIgKipwID0gKGNoYXIgKiopKChjaGFyICopIHBrZyArIHBrZ2NvbmZfcGtnX3ZhbGlkYXRpb25zW2ldLm9mZnNldCk7Ci0gCi0gCQlpZiAoKnAgIT0gTlVMTCkKLSAJCQljb250aW51ZTsKLUBAIC01ODcsNyArNTg5LDcgQEAgcGtnY29uZl9zY2FuX2FsbChwa2djb25mX2NsaWVudF90ICpjbGllbnQsIHZvaWQgKmRhdGEsIHBrZ2NvbmZfcGtnX2l0ZXJhdGlvbl9mdW4KLSAKLSAjaWZkZWYgX1dJTjMyCi0gc3RhdGljIHBrZ2NvbmZfcGtnX3QgKgotLXBrZ2NvbmZfcGtnX2ZpbmRfaW5fcmVnaXN0cnlfa2V5KGNvbnN0IHBrZ2NvbmZfY2xpZW50X3QgKmNsaWVudCwgSEtFWSBoa2V5LCBjb25zdCBjaGFyICpuYW1lKQotK3BrZ2NvbmZfcGtnX2ZpbmRfaW5fcmVnaXN0cnlfa2V5KHBrZ2NvbmZfY2xpZW50X3QgKmNsaWVudCwgSEtFWSBoa2V5LCBjb25zdCBjaGFyICpuYW1lKQotIHsKLSAJcGtnY29uZl9wa2dfdCAqcGtnID0gTlVMTDsKLSAKLUBAIC0xMDQ4LDggKzEwNTAsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgewotIAotIHN0YXRpYyBjb25zdCBwa2djb25mX3BrZ19wcm92aWRlc192ZXJtYXRjaF9ydWxlX3QgcGtnY29uZl9wa2dfcHJvdmlkZXNfdmVybWF0Y2hfcnVsZXNbXSA9IHsKLSAJW1BLR0NPTkZfQ01QX0FOWV0gPSB7Ci0tCQkucnVsZWNtcCA9IHt9LAotLQkJLmRlcGNtcCA9IHt9LAotKwkJLnJ1bGVjbXAgPSB7Ci0rCQkJW1BLR0NPTkZfQ01QX0FOWV0JCQk9IHBrZ2NvbmZfcGtnX2NvbXBhcmF0b3Jfbm9uZSwKLSsgICAgICAgICAgICAgICAgfSwKLSsJCS5kZXBjbXAgPSB7Ci0rCQkJW1BLR0NPTkZfQ01QX0FOWV0JCQk9IHBrZ2NvbmZfcGtnX2NvbXBhcmF0b3Jfbm9uZSwKLSsgICAgICAgICAgICAgICAgfSwKLSAJfSwKLSAJW1BLR0NPTkZfQ01QX0xFU1NfVEhBTl0gPSB7Ci0gCQkucnVsZWNtcCA9IHsKLUBAIC0xMTIxLDcgKzExMjcsOSBAQCBzdGF0aWMgY29uc3QgcGtnY29uZl9wa2dfcHJvdmlkZXNfdmVybWF0Y2hfcnVsZV90IHBrZ2NvbmZfcGtnX3Byb3ZpZGVzX3Zlcm1hdGNoXwotIAkJCVtQS0dDT05GX0NNUF9FUVVBTF0JCQk9IHBrZ2NvbmZfcGtnX2NvbXBhcmF0b3JfZXEsCi0gCQkJW1BLR0NPTkZfQ01QX05PVF9FUVVBTF0JCQk9IHBrZ2NvbmZfcGtnX2NvbXBhcmF0b3JfbmUKLSAJCX0sCi0tCQkuZGVwY21wID0ge30sCi0rCQkuZGVwY21wID0gewotKwkJCVtQS0dDT05GX0NNUF9BTlldCQkJPSBwa2djb25mX3BrZ19jb21wYXJhdG9yX25vbmUsCi0rICAgICAgICAgICAgICAgIH0sCi0gCX0sCi0gCVtQS0dDT05GX0NNUF9OT1RfRVFVQUxdID0gewotIAkJLnJ1bGVjbXAgPSB7Ci1AQCAtMTEzMyw3ICsxMTQxLDkgQEAgc3RhdGljIGNvbnN0IHBrZ2NvbmZfcGtnX3Byb3ZpZGVzX3Zlcm1hdGNoX3J1bGVfdCBwa2djb25mX3BrZ19wcm92aWRlc192ZXJtYXRjaF8KLSAJCQlbUEtHQ09ORl9DTVBfRVFVQUxdCQkJPSBwa2djb25mX3BrZ19jb21wYXJhdG9yX25lLAotIAkJCVtQS0dDT05GX0NNUF9OT1RfRVFVQUxdCQkJPSBwa2djb25mX3BrZ19jb21wYXJhdG9yX2VxCi0gCQl9LAotLQkJLmRlcGNtcCA9IHt9LAotKwkJLmRlcGNtcCA9IHsKLSsJCQlbUEtHQ09ORl9DTVBfQU5ZXQkJCT0gcGtnY29uZl9wa2dfY29tcGFyYXRvcl9ub25lLAotKyAgICAgICAgICAgICAgICB9LAotIAl9LAotIH07Ci0gCi1kaWZmIC0tZ2l0IGEvbGlicGtnY29uZi9zdGRpbmMuaCBiL2xpYnBrZ2NvbmYvc3RkaW5jLmgKLWluZGV4IDU4Y2M2YzcuLmFjN2U1M2MgMTAwNjQ0Ci0tLS0gYS9saWJwa2djb25mL3N0ZGluYy5oCi0rKysgYi9saWJwa2djb25mL3N0ZGluYy5oCi1AQCAtMjQsOSArMjQsNyBAQAotICNpbmNsdWRlIDxzdGRib29sLmg+Ci0gI2luY2x1ZGUgPHN0ZGFyZy5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8ZGlyZW50Lmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gCi0gI2lmZGVmIF9XSU4zMgotQEAgLTM0LDggKzMyLDE1IEBACi0gIyBpbmNsdWRlIDx3aW5kb3dzLmg+Ci0gIyBpbmNsdWRlIDxtYWxsb2MuaD4KLSAjIGRlZmluZSBQQVRIX0RFVl9OVUxMCSJudWwiCi0rIyBpZm5kZWYgc3NpemVfdAotKyMgIGluY2x1ZGUgPEJhc2VUc2QuaD4KLSsjICBkZWZpbmUgc3NpemVfdCBTU0laRV9UCi0rIyBlbmRpZgotKyMgaW5jbHVkZSAid2luLWRpcmVudC5oIgotICNlbHNlCi0gIyBkZWZpbmUgUEFUSF9ERVZfTlVMTAkiL2Rldi9udWxsIgotKyMgaW5jbHVkZSA8ZGlyZW50Lmg+Ci0rIyBpbmNsdWRlIDx1bmlzdGQuaD4KLSAjZW5kaWYKLSAKLSAjZW5kaWYKLS0tIAotMi40LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmYvMDAwMS1zdGRpbmMuaC1maXgtYnVpbGQtd2l0aC1taW5ndy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mLzAwMDEtc3RkaW5jLmgtZml4LWJ1aWxkLXdpdGgtbWluZ3cucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5ZWJlMzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmYvMDAwMS1zdGRpbmMuaC1maXgtYnVpbGQtd2l0aC1taW5ndy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gZWEyOGM1YjM0NDU3Y2Y3Njc2MTgxYjI4NGUyMmVhNWY3OWEzMGQ4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJNYXhpbiBCLiBKb2huIiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci1EYXRlOiBUaHUsIDEzIEp1bCAyMDE3IDE0OjQ3OjMxICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHN0ZGluYy5oOiBmaXggYnVpbGQgd2l0aCBtaW5ndwotCi1GaXhlcyB0aGlzIGJ1aWxkIGVycm9yIHdpdGggbWluZ3c6Ci0uLi4KLXwgY29tcGlsYXRpb24gdGVybWluYXRlZC4KLXwgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL3BrZ2NvbmYtMS4zLjcvbGlicGtnY29uZi9saWJwa2djb25mLmg6MTk6MCwKLXwgZnJvbSAuLi9wa2djb25mLTEuMy43L2xpYnBrZ2NvbmYvYXVkaXQuYzoxNjoKLXwgLi4vcGtnY29uZi0xLjMuNy9saWJwa2djb25mL3N0ZGluYy5oOjM2OjEyOiBmYXRhbCBlcnJvcjogQmFzZVRzZC5oOiBObwotc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotfCAjIGluY2x1ZGUgPEJhc2VUc2QuaD4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLSBsaWJwa2djb25mL3N0ZGluYy5oIHwgMTAgKysrKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYnBrZ2NvbmYvc3RkaW5jLmggYi9saWJwa2djb25mL3N0ZGluYy5oCi1pbmRleCBhYzdlNTNjLi5kOGVmY2Y1IDEwMDY0NAotLS0tIGEvbGlicGtnY29uZi9zdGRpbmMuaAotKysrIGIvbGlicGtnY29uZi9zdGRpbmMuaAotQEAgLTMzLDEwICszMywxOCBAQAotICMgaW5jbHVkZSA8bWFsbG9jLmg+Ci0gIyBkZWZpbmUgUEFUSF9ERVZfTlVMTAkibnVsIgotICMgaWZuZGVmIHNzaXplX3QKLSsjIGlmbmRlZiBfX01JTkdXMzJfXwotICMgIGluY2x1ZGUgPEJhc2VUc2QuaD4KLSsjIGVsc2UKLSsjICBpbmNsdWRlIDxiYXNldHNkLmg+Ci0rIyBlbmRpZgotICMgIGRlZmluZSBzc2l6ZV90IFNTSVpFX1QKLSAjIGVuZGlmCi0tIyBpbmNsdWRlICJ3aW4tZGlyZW50LmgiCi0rIyBpZm5kZWYgX19NSU5HVzMyX18KLSsjICBpbmNsdWRlICJ3aW4tZGlyZW50LmgiCi0rIyBlbHNlCi0rIyBpbmNsdWRlIDxkaXJlbnQuaD4KLSsjIGVuZGlmCi0gI2Vsc2UKLSAjIGRlZmluZSBQQVRIX0RFVl9OVUxMCSIvZGV2L251bGwiCi0gIyBpbmNsdWRlIDxkaXJlbnQuaD4KLS0tIAotMi40LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmZfMS4zLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZl8xLjMuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRhMGRkMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZl8xLjMuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLVNVTU1BUlkgPSAicGtnY29uZiBwcm92aWRlcyBjb21waWxlciBhbmQgbGlua2VyIGNvbmZpZ3VyYXRpb24gZm9yIGRldmVsb3BtZW50IGZyYW1ld29ya3MuIgotREVTQ1JJUFRJT04gPSAicGtnY29uZiBpcyBhIHByb2dyYW0gd2hpY2ggaGVscHMgdG8gY29uZmlndXJlIGNvbXBpbGVyIGFuZCBsaW5rZXIgXAotZmxhZ3MgZm9yIGRldmVsb3BtZW50IGZyYW1ld29ya3MuIEl0IGlzIHNpbWlsYXIgdG8gcGtnLWNvbmZpZyBmcm9tIFwKLWZyZWVkZXNrdG9wLm9yZywgcHJvdmlkaW5nIGFkZGl0aW9uYWwgZnVuY3Rpb25hbGl0eSB3aGlsZSBhbHNvIG1haW50YWluaW5nIFwKLWNvbXBhdGliaWxpdHkuIgotSE9NRVBBR0UgPSAiaHR0cDovL3BrZ2NvbmYub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vcGtnY29uZi9wa2djb25mL2lzc3VlcyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1QUk9WSURFUyArPSAicGtnY29uZmlnIgotUlBST1ZJREVTXyR7UE59ICs9ICJwa2djb25maWciCi1ERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCi0KLSMgVGhlIHBrZ2NvbmYgbGljZW5zZSBzZWVtcyB0byBiZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byBCU0QtMi1DbGF1c2Ugb3IKLSMgSVNDLCBidXQgaGFzIGRpZmZlcmVudCB3b3JkaW5nLCBzbyBuZWVkcyBpdHMgb3duIG5hbWUuCi1MSUNFTlNFID0gInBrZ2NvbmYiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01NDhhOWQxZGIxMGNjMGE4NDgxMGMzMTNhMGU5MjY2ZiIKLQotU1JDX1VSSSA9ICJcCi0gICAgaHR0cHM6Ly9kaXN0ZmlsZXMuZGVyZWZlcmVuY2VkLm9yZy9wa2djb25mL3BrZ2NvbmYtJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vMDAwMS1NaW5pbWFsLXR3ZWFrcy10by1jb21waWxlLXdpdGgtVmlzdWFsLUMtMjAxNS5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtc3RkaW5jLmgtZml4LWJ1aWxkLXdpdGgtbWluZ3cucGF0Y2ggXAotICAgIGZpbGU6Ly9wa2ctY29uZmlnLXdyYXBwZXIgXAotICAgIGZpbGU6Ly9wa2ctY29uZmlnLW5hdGl2ZS5pbiBcCi0gICAgZmlsZTovL3BrZy1jb25maWctZXNkay5pbiBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiYWMzNWMzNGQ4NGVlYjZhMDNkNGQ2MWI4NTU1ZDYxOTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWJlN2U0MDkwMGM3NDY3ODkzYzY1ZjgxMDIxMWIxZTY4ZGEzZjhkNWU3MGZkZGI4ODNmYzI0ODM5Y2FkMDMzOSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1wa2ctY29uZmlnLWRpcj0nJHtsaWJkaXJ9L3BrZ2NvbmZpZzoke2RhdGFkaXJ9L3BrZ2NvbmZpZyciCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICAjIEluc3RhbGwgYSB3cmFwcGVyIHdoaWNoIGRlYWxzLCBhcyBtdWNoIGFzIHBvc3NpYmxlIHdpdGggcGtnY29uZiB2cwotICAgICMgcGtnLWNvbmZpZyBjb21wYXRpYmlsaXR5IGlzc3Vlcy4KLSAgICBpbnN0YWxsIC1tIDA3NTUgIiR7V09SS0RJUn0vcGtnLWNvbmZpZy13cmFwcGVyIiAiJHtEfSR7YmluZGlyfS9wa2ctY29uZmlnIgotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgewotICAgICMgSW5zdGFsbCBhIHBrZy1jb25maWctbmF0aXZlIHdyYXBwZXIgdGhhdCB3aWxsIHVzZSB0aGUgbmF0aXZlIHN5c3Jvb3QgaW5zdGVhZAotICAgICMgb2YgdGhlIE1BQ0hJTkUgc3lzcm9vdCwgZm9yIHVzaW5nIHBrZy1jb25maWcgd2hlbiBidWlsZGluZyBuYXRpdmUgdG9vbHMuCi0gICAgc2VkIC1lICJzfEBQQVRIX05BVElWRUB8JHtQS0dfQ09ORklHX1BBVEh9fCIgXAotICAgICAgICA8ICR7V09SS0RJUn0vcGtnLWNvbmZpZy1uYXRpdmUuaW4gPiAke0J9L3BrZy1jb25maWctbmF0aXZlCi0gICAgaW5zdGFsbCAtbTc1NSAke0J9L3BrZy1jb25maWctbmF0aXZlICR7RH0ke2JpbmRpcn0vcGtnLWNvbmZpZy1uYXRpdmUKLSAgICBzZWQgLWUgInN8QFBBVEhfTkFUSVZFQHwke1BLR19DT05GSUdfUEFUSH18IiBcCi0gICAgICAgIC1lICJzfEBMSUJESVJfTkFUSVZFQHwke1BLR19DT05GSUdfTElCRElSfXwiIFwKLSAgICAgICAgPCAke1dPUktESVJ9L3BrZy1jb25maWctZXNkay5pbiA+ICR7Qn0vcGtnLWNvbmZpZy1lc2RrCi0gICAgaW5zdGFsbCAtbTc1NSAke0J9L3BrZy1jb25maWctZXNkayAke0R9JHtiaW5kaXJ9L3BrZy1jb25maWctZXNkawotfQotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJwa2ctY29uZmlnIgotCi0jIFdoZW4gdXNpbmcgdGhlIFJQTSBnZW5lcmF0ZWQgYXV0b21hdGljIHBhY2thZ2UgZGVwZW5kZW5jaWVzLCBzb21lIHBhY2thZ2VzCi0jIHdpbGwgZW5kIHVwIHJlcXVpcmluZyAncGtnY29uZmlnKHBrZy1jb25maWcpJy4gIEFsbG93IHRoaXMgYmVoYXZpb3IgYnkKLSMgc3BlY2lmeWluZyBhbiBhcHByb3ByaWF0ZSBwcm92aWRlLgotUlBST1ZJREVTXyR7UE59ICs9ICJwa2djb25maWcocGtnLWNvbmZpZykiCi0KLSMgSW5jbHVkZSBwa2cubTQgaW4gdGhlIG1haW4gcGFja2FnZSwgbGVhdmluZyBsaWJwa2djb25mIGRldiBmaWxlcyBpbiAtZGV2Ci1GSUxFU18ke1BOfS1kZXZfcmVtb3ZlID0gIiR7ZGF0YWRpcn0vYWNsb2NhbCIKLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2FjbG9jYWwiCi0KLUJCQ0xBU1NFWFRFTkQgKz0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLXBrZ2NvbmZfc3N0YXRlX2ZpeHVwX2VzZGsgKCkgewotICAgaWYgWyAiJHtCQl9DVVJSRU5UVEFTS30iID0gInBvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUiIC1hICIke1dJVEhJTl9FWFRfU0RLfSIgPSAiMSIgXSA7IHRoZW4KLSAgICAgICBwa2djb25mZGlyPSIke1NTVEFURV9JTlNURElSfS9yZWNpcGUtc3lzcm9vdC1uYXRpdmUvJHtiaW5kaXJfbmF0aXZlfSIKLSAgICAgICBtdiAkcGtnY29uZmRpci9wa2ctY29uZmlnICRwa2djb25mZGlyL3BrZy1jb25maWcucmVhbAotICAgICAgIGxuciAkcGtnY29uZmRpci9wa2ctY29uZmlnLWVzZGsgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZwotICAgICAgIHNlZCAtaSAtZSAic3xecGtnLWNvbmZpZ3xwa2ctY29uZmlnLnJlYWx8IiAkcGtnY29uZmRpci9wa2ctY29uZmlnLW5hdGl2ZQotICAgZmkKLX0KLQotU1NUQVRFUE9TVFVOUEFDS0ZVTkNTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIHBrZ2NvbmZfc3N0YXRlX2ZpeHVwX2VzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZl8xLjQuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mXzEuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhN2I2NjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZl8xLjQuMi5iYgpAQCAtMCwwICsxLDcxIEBACitTVU1NQVJZID0gInBrZ2NvbmYgcHJvdmlkZXMgY29tcGlsZXIgYW5kIGxpbmtlciBjb25maWd1cmF0aW9uIGZvciBkZXZlbG9wbWVudCBmcmFtZXdvcmtzLiIKK0RFU0NSSVBUSU9OID0gInBrZ2NvbmYgaXMgYSBwcm9ncmFtIHdoaWNoIGhlbHBzIHRvIGNvbmZpZ3VyZSBjb21waWxlciBhbmQgbGlua2VyIFwKK2ZsYWdzIGZvciBkZXZlbG9wbWVudCBmcmFtZXdvcmtzLiBJdCBpcyBzaW1pbGFyIHRvIHBrZy1jb25maWcgZnJvbSBcCitmcmVlZGVza3RvcC5vcmcsIHByb3ZpZGluZyBhZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHkgd2hpbGUgYWxzbyBtYWludGFpbmluZyBcCitjb21wYXRpYmlsaXR5LiIKK0hPTUVQQUdFID0gImh0dHA6Ly9wa2djb25mLm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL3BrZ2NvbmYvcGtnY29uZi9pc3N1ZXMiCitTRUNUSU9OID0gImRldmVsIgorUFJPVklERVMgKz0gInBrZ2NvbmZpZyIKK1JQUk9WSURFU18ke1BOfSArPSAicGtnY29uZmlnIgorREVGQVVMVF9QUkVGRVJFTkNFID0gIi0xIgorCisjIFRoZSBwa2djb25mIGxpY2Vuc2Ugc2VlbXMgdG8gYmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gQlNELTItQ2xhdXNlIG9yCisjIElTQywgYnV0IGhhcyBkaWZmZXJlbnQgd29yZGluZywgc28gbmVlZHMgaXRzIG93biBuYW1lLgorTElDRU5TRSA9ICJwa2djb25mIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjIxNDIyMmVjMWE4MjBiZDZjYzc1MTY3YTU2OTI1ZTAiCisKK1NSQ19VUkkgPSAiXAorICAgIGh0dHBzOi8vZGlzdGZpbGVzLmRlcmVmZXJlbmNlZC5vcmcvcGtnY29uZi9wa2djb25mLSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovL3BrZy1jb25maWctd3JhcHBlciBcCisgICAgZmlsZTovL3BrZy1jb25maWctbmF0aXZlLmluIFwKKyAgICBmaWxlOi8vcGtnLWNvbmZpZy1lc2RrLmluIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2NzhkMjQyYjRlZWYxNzU0YmJhNmE1ODY0MmFmMTBiYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiYWIzOTM3MWQ0YWI5NzJiZTFkNTM5YThiMTBiNmNjMjFmOGVhZmM5N2Y2MTcxMDJlNjY3ZTgyYmQzMmViMjM0IgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLXBrZy1jb25maWctZGlyPScke2xpYmRpcn0vcGtnY29uZmlnOiR7ZGF0YWRpcn0vcGtnY29uZmlnJyIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgICMgSW5zdGFsbCBhIHdyYXBwZXIgd2hpY2ggZGVhbHMsIGFzIG11Y2ggYXMgcG9zc2libGUgd2l0aCBwa2djb25mIHZzCisgICAgIyBwa2ctY29uZmlnIGNvbXBhdGliaWxpdHkgaXNzdWVzLgorICAgIGluc3RhbGwgLW0gMDc1NSAiJHtXT1JLRElSfS9wa2ctY29uZmlnLXdyYXBwZXIiICIke0R9JHtiaW5kaXJ9L3BrZy1jb25maWciCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisgICAgIyBJbnN0YWxsIGEgcGtnLWNvbmZpZy1uYXRpdmUgd3JhcHBlciB0aGF0IHdpbGwgdXNlIHRoZSBuYXRpdmUgc3lzcm9vdCBpbnN0ZWFkCisgICAgIyBvZiB0aGUgTUFDSElORSBzeXNyb290LCBmb3IgdXNpbmcgcGtnLWNvbmZpZyB3aGVuIGJ1aWxkaW5nIG5hdGl2ZSB0b29scy4KKyAgICBzZWQgLWUgInN8QFBBVEhfTkFUSVZFQHwke1BLR19DT05GSUdfUEFUSH18IiBcCisgICAgICAgIDwgJHtXT1JLRElSfS9wa2ctY29uZmlnLW5hdGl2ZS5pbiA+ICR7Qn0vcGtnLWNvbmZpZy1uYXRpdmUKKyAgICBpbnN0YWxsIC1tNzU1ICR7Qn0vcGtnLWNvbmZpZy1uYXRpdmUgJHtEfSR7YmluZGlyfS9wa2ctY29uZmlnLW5hdGl2ZQorICAgIHNlZCAtZSAic3xAUEFUSF9OQVRJVkVAfCR7UEtHX0NPTkZJR19QQVRIfXwiIFwKKyAgICAgICAgLWUgInN8QExJQkRJUl9OQVRJVkVAfCR7UEtHX0NPTkZJR19MSUJESVJ9fCIgXAorICAgICAgICA8ICR7V09SS0RJUn0vcGtnLWNvbmZpZy1lc2RrLmluID4gJHtCfS9wa2ctY29uZmlnLWVzZGsKKyAgICBpbnN0YWxsIC1tNzU1ICR7Qn0vcGtnLWNvbmZpZy1lc2RrICR7RH0ke2JpbmRpcn0vcGtnLWNvbmZpZy1lc2RrCit9CisKK0FMVEVSTkFUSVZFXyR7UE59ID0gInBrZy1jb25maWciCisKKyMgV2hlbiB1c2luZyB0aGUgUlBNIGdlbmVyYXRlZCBhdXRvbWF0aWMgcGFja2FnZSBkZXBlbmRlbmNpZXMsIHNvbWUgcGFja2FnZXMKKyMgd2lsbCBlbmQgdXAgcmVxdWlyaW5nICdwa2djb25maWcocGtnLWNvbmZpZyknLiAgQWxsb3cgdGhpcyBiZWhhdmlvciBieQorIyBzcGVjaWZ5aW5nIGFuIGFwcHJvcHJpYXRlIHByb3ZpZGUuCitSUFJPVklERVNfJHtQTn0gKz0gInBrZ2NvbmZpZyhwa2ctY29uZmlnKSIKKworIyBJbmNsdWRlIHBrZy5tNCBpbiB0aGUgbWFpbiBwYWNrYWdlLCBsZWF2aW5nIGxpYnBrZ2NvbmYgZGV2IGZpbGVzIGluIC1kZXYKK0ZJTEVTXyR7UE59LWRldl9yZW1vdmUgPSAiJHtkYXRhZGlyfS9hY2xvY2FsIgorRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYWNsb2NhbCIKKworQkJDTEFTU0VYVEVORCArPSAibmF0aXZlIG5hdGl2ZXNkayIKKworcGtnY29uZl9zc3RhdGVfZml4dXBfZXNkayAoKSB7CisgICBpZiBbICIke0JCX0NVUlJFTlRUQVNLfSIgPSAicG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZSIgLWEgIiR7V0lUSElOX0VYVF9TREt9IiA9ICIxIiBdIDsgdGhlbgorICAgICAgIHBrZ2NvbmZkaXI9IiR7U1NUQVRFX0lOU1RESVJ9L3JlY2lwZS1zeXNyb290LW5hdGl2ZS8ke2JpbmRpcl9uYXRpdmV9IgorICAgICAgIG12ICRwa2djb25mZGlyL3BrZy1jb25maWcgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZy5yZWFsCisgICAgICAgbG5yICRwa2djb25mZGlyL3BrZy1jb25maWctZXNkayAkcGtnY29uZmRpci9wa2ctY29uZmlnCisgICAgICAgc2VkIC1pIC1lICJzfF5wa2ctY29uZmlnfHBrZy1jb25maWcucmVhbHwiICRwa2djb25mZGlyL3BrZy1jb25maWctbmF0aXZlCisgICBmaQorfQorCitTU1RBVEVQT1NUVU5QQUNLRlVOQ1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgcGtnY29uZl9zc3RhdGVfZml4dXBfZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcG9zdGluc3QtaW50ZXJjZXB0L25hdGl2ZXNkay1wb3N0aW5zdC1pbnRlcmNlcHRfMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wb3N0aW5zdC1pbnRlcmNlcHQvbmF0aXZlc2RrLXBvc3RpbnN0LWludGVyY2VwdF8xLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzOGFjOGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wb3N0aW5zdC1pbnRlcmNlcHQvbmF0aXZlc2RrLXBvc3RpbnN0LWludGVyY2VwdF8xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1TVU1NQVJZID0gIlBvc3RpbnN0YWxsIHNjcmlwdGxldHMiCi1MSUNFTlNFID0gIk1JVCIKLQotRklMRVNfJHtQTn1fYXBwZW5kID0gIiAke2RhdGFkaXJ9L3Bvc3RpbnN0LWludGVyY2VwdHMvKiIKLQotZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKLWRvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vcG9zdGluc3QtaW50ZXJjZXB0cwotCWluc3RhbGwgLW0gNzU1ICR7Q09SRUJBU0V9L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy9wb3N0aW5zdF9pbnRlcmNlcHQgJHtEfSR7ZGF0YWRpcn0vcG9zdGluc3QtaW50ZXJjZXB0cy8KLQlpbnN0YWxsIC1tIDc1NSAke0NPUkVCQVNFfS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX2ZvbnRfY2FjaGUgJHtEfSR7ZGF0YWRpcn0vcG9zdGluc3QtaW50ZXJjZXB0cy8KLQlpbnN0YWxsIC1tIDc1NSAke0NPUkVCQVNFfS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX2ljb25fY2FjaGUgJHtEfSR7ZGF0YWRpcn0vcG9zdGluc3QtaW50ZXJjZXB0cy8KLQlpbnN0YWxsIC1tIDc1NSAke0NPUkVCQVNFfS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX3BpeGJ1Zl9jYWNoZSAke0R9JHtkYXRhZGlyfS9wb3N0aW5zdC1pbnRlcmNlcHRzLwotfQotCi1pbmhlcml0IG5hdGl2ZXNkawotSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rX2dpdC5iYgppbmRleCA1NzBlZjM2Li4wZjZkMTZlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGlua19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmtfZ2l0LmJiCkBAIC05LDcgKzksNyBAQAogcnVudGltZSBhbmQgdGh1cyBwcm9ncmFtcyBjb21lIHVwIGZhc3Rlci4iCiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzkzYzA1NTBiZDMxNzNmNDUwNGIyY2JkODk5MWU1MGIiCi1TUkNSRVYgPSAiZWYyMDYyOGRkNzhiOTJlMWEzMTIzYWZjNjdiNjRjZjAxMGJkZDllNCIKK1NSQ1JFViA9ICIwNWFlYWZkMDUzZTU2MzU2ZWM4YzYyZjRiYjhmN2I5NWJhZTE5MmYzIgogUFYgPSAiMS4wK2dpdCR7U1JDUFZ9IgogCiAjCkBAIC0zMiw4ICszMiw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9wcmVsaW5rLmNyb24uZGFpbHkgXAogICAgICAgICAgICBmaWxlOi8vcHJlbGluay5kZWZhdWx0IFwKIAkgICBmaWxlOi8vbWFjcm9zLnByZWxpbmsiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ1cHN0cmVhbSBoYXMgbm8gdXNhYmxlIHRhZ3MiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogVEFSR0VUX09TX09SSUcgOj0gIiR7VEFSR0VUX09TfSIKIE9WRVJSSURFU19hcHBlbmQgPSAiOiR7VEFSR0VUX09TX09SSUd9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvMDAwMS1Vc2UtZXBvbGwtQVBJLW9uLUxpbnV4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvMDAwMS1Vc2UtZXBvbGwtQVBJLW9uLUxpbnV4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjU1N2IxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDEtVXNlLWVwb2xsLUFQSS1vbi1MaW51eC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5MiArMCwwIEBACi1Gcm9tIDllNDA3ZTBiZTAxNjk1ZTdiOTI3ZjU4MjBhZGU4N2VlOTYwMmMyNDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTUgU2VwIDIwMTcgMTc6MDA6MTQgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gVXNlIGVwb2xsIEFQSSBvbiBMaW51eAotCi1BbHNvIGEgY291cGxlIG9mIG90aGVyIG1vZGlmaWNhdGlvbnMgZHVlIHRvIGVwb2xsIGhhdmluZwotYSBkaWZmZXJlbnQgYXBwcm9hY2ggdG8gaG93IHRoZSB3b3JraW5nIHNldCBvZiBmZHMgaXMgZGVmaW5lZAotYW5kIHVzZWQ6Ci0xKSBvcGVuX2NsaWVudCgpIHJldHVybnMgYW4gaW5kZXggaW50byB0aGUgYXJyYXkgb2YgY2xpZW50cwotMikgY2xvc2VfY2xpZW50KCkgaGFzIGEgcHJvdGVjdGlvbiBhZ2FpbnN0IGJlaW5nIGNhbGxlZCB0d2ljZQotd2l0aCB0aGUgc2FtZSBjbGllbnQgKHdoaWNoIHdvdWxkIG1lc3MgdXAgdGhlIGFjdGl2ZV9jbGllbnRzCi1jb3VudGVyKQotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbU2VlYnMgQ0MnZCBieSBlbWFpbF0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotCi0tLS0KLSBlbnVtcy9leGl0X3N0YXR1cy5pbiB8ICAgMyArCi0gcHNldWRvX3NlcnZlci5jICAgICAgfCAxODkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAxOTAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2VudW1zL2V4aXRfc3RhdHVzLmluIGIvZW51bXMvZXhpdF9zdGF0dXMuaW4KLWluZGV4IDZiZTQ0ZDMuLjg4Zjk0Y2QgMTAwNjQ0Ci0tLS0gYS9lbnVtcy9leGl0X3N0YXR1cy5pbgotKysrIGIvZW51bXMvZXhpdF9zdGF0dXMuaW4KLUBAIC0xOCwzICsxOCw2IEBAIGxpc3Rlbl9mZCwgInNlcnZlciBsb29wIGhhZCBubyB2YWxpZCBsaXN0ZW4gZmQiCi0gcHNldWRvX2xvYWRlZCwgInNlcnZlciBjb3VsZG4ndCBnZXQgb3V0IG9mIHBzZXVkbyBlbnZpcm9ubWVudCIKLSBwc2V1ZG9fcHJlZml4LCAiY291bGRuJ3QgZ2V0IHZhbGlkIHBzZXVkbyBwcmVmaXgiCi0gcHNldWRvX2ludm9jYXRpb24sICJpbnZhbGlkIHNlcnZlciBjb21tYW5kIGFyZ3VtZW50cyIKLStlcG9sbF9jcmVhdGUsICJlcG9sbF9jcmVhdGUoKSBmYWlsZWQiCi0rZXBvbGxfY3RsLCAiZXBvbGxfY3RsKCkgZmFpbGVkIgotKwotZGlmZiAtLWdpdCBhL3BzZXVkb19zZXJ2ZXIuYyBiL3BzZXVkb19zZXJ2ZXIuYwotaW5kZXggZmYxNmVmZC4uMTRkMzRkZSAxMDA2NDQKLS0tLSBhL3BzZXVkb19zZXJ2ZXIuYwotKysrIGIvcHNldWRvX3NlcnZlci5jCi1AQCAtNDAsNiArNDAsMTIgQEAKLSAjaW5jbHVkZSAicHNldWRvX2NsaWVudC5oIgotICNpbmNsdWRlICJwc2V1ZG9fZGIuaCIKLSAKLSsvLyBUaGlzIGhhcyB0byBjb21lIGFmdGVyIHBzZXVkbyBpbmNsdWRlcywgYXMgdGhhdCdzIHdoZXJlIFBTRVVET19QT1JUIGRlZmluZXMgYXJlCi0rI2lmZGVmIFBTRVVET19QT1JUX0xJTlVYCi0rI2luY2x1ZGUgPHN5cy9lcG9sbC5oPgotKyNlbmRpZgotKwotKwotIHN0YXRpYyBpbnQgbGlzdGVuX2ZkID0gLTE7Ci0gCi0gdHlwZWRlZiBzdHJ1Y3QgewotQEAgLTU5LDYgKzY1LDcgQEAgc3RhdGljIGludCBhY3RpdmVfY2xpZW50cyA9IDAsIGhpZ2hlc3RfY2xpZW50ID0gMCwgbWF4X2NsaWVudHMgPSAwOwotIAotICNkZWZpbmUgTE9PUF9ERUxBWSAyCi0gI2RlZmluZSBERUZBVUxUX1BTRVVET19TRVJWRVJfVElNRU9VVCAzMAotKyNkZWZpbmUgRVBPTExfTUFYX0VWRU5UUyAxMAotIGludCBwc2V1ZG9fc2VydmVyX3RpbWVvdXQgPSBERUZBVUxUX1BTRVVET19TRVJWRVJfVElNRU9VVDsKLSBzdGF0aWMgaW50IGRpZV9wZWFjZWZ1bGx5ID0gMDsKLSBzdGF0aWMgaW50IGRpZV9mb3JjZWZ1bGx5ID0gMDsKLUBAIC04MCw2ICs4Nyw5IEBAIHF1aXRfbm93KGludCBzaWduYWwpIHsKLSBzdGF0aWMgaW50IG1lc3NhZ2VzID0gMCwgcmVzcG9uc2VzID0gMDsKLSBzdGF0aWMgc3RydWN0IHRpbWV2YWwgbWVzc2FnZV90aW1lID0geyAudHZfc2VjID0gMCB9OwotIAotKyNpZmRlZiBQU0VVRE9fUE9SVF9MSU5VWAotK3N0YXRpYyB2b2lkIHBzZXVkb19zZXJ2ZXJfbG9vcF9lcG9sbCh2b2lkKTsKLSsjZW5kaWYKLSBzdGF0aWMgdm9pZCBwc2V1ZG9fc2VydmVyX2xvb3Aodm9pZCk7Ci0gCi0gLyogaGVscGVyIGZ1bmN0aW9uIHRvIG1ha2UgYSBkaXJlY3RvcnksIGp1c3QgbGlrZSBta2RpciAtcC4KLUBAIC0zNjksMTIgKzM3OSwxNiBAQCBwc2V1ZG9fc2VydmVyX3N0YXJ0KGludCBkYWVtb25pemUpIHsKLSAJCQlraWxsKHBwaWQsIFNJR1VTUjEpOwotIAkJfQotIAl9Ci0rI2lmZGVmIFBTRVVET19QT1JUX0xJTlVYCi0rCXBzZXVkb19zZXJ2ZXJfbG9vcF9lcG9sbCgpOwotKyNlbHNlCi0gCXBzZXVkb19zZXJ2ZXJfbG9vcCgpOwotKyNlbmRpZgotIAlyZXR1cm4gMDsKLSB9Ci0gCi0gLyogbWVzcyB3aXRoIGludGVybmFsIHRhYmxlcyBhcyBuZWVkZWQgKi8KLS1zdGF0aWMgdm9pZAotK3N0YXRpYyB1bnNpZ25lZCBpbnQKLSBvcGVuX2NsaWVudChpbnQgZmQpIHsKLSAJcHNldWRvX2NsaWVudF90ICpuZXdfY2xpZW50czsKLSAJaW50IGk7Ci1AQCAtMzkwLDcgKzQwNCw3IEBAIG9wZW5fY2xpZW50KGludCBmZCkgewotIAkJCSsrYWN0aXZlX2NsaWVudHM7Ci0gCQkJaWYgKGkgPiBoaWdoZXN0X2NsaWVudCkKLSAJCQkJaGlnaGVzdF9jbGllbnQgPSBpOwotLQkJCXJldHVybjsKLSsJCQlyZXR1cm4gaTsKLSAJCX0KLSAJfQotIAotQEAgLTQxNCw5ICs0MjgsMTEgQEAgb3Blbl9jbGllbnQoaW50IGZkKSB7Ci0gCi0gCQltYXhfY2xpZW50cyArPSAxNjsKLSAJCSsrYWN0aXZlX2NsaWVudHM7Ci0rCQlyZXR1cm4gbWF4X2NsaWVudHMgLSAxNjsKLSAJfSBlbHNlIHsKLSAJCXBzZXVkb19kaWFnKCJlcnJvciBhbGxvY2F0aW5nIG5ldyBjbGllbnQsIGZkICVkXG4iLCBmZCk7Ci0gCQljbG9zZShmZCk7Ci0rCQlyZXR1cm4gMDsKLSAJfQotIH0KLSAKLUBAIC00MzMsNiArNDQ5LDEwIEBAIGNsb3NlX2NsaWVudChpbnQgY2xpZW50KSB7Ci0gCQkJY2xpZW50LCBoaWdoZXN0X2NsaWVudCk7Ci0gCQlyZXR1cm47Ci0gCX0KLSsJaWYgKGNsaWVudHNbY2xpZW50XS5mZCA9PSAtMSkgewotKwkJcHNldWRvX2RlYnVnKFBEQkdGX1NFUlZFUiwgImNsaWVudCAlZCBhbHJlYWR5IGNsb3NlZFxuIiwgY2xpZW50KTsKLSsJCXJldHVybjsKLSsJfQotIAljbG9zZShjbGllbnRzW2NsaWVudF0uZmQpOwotIAljbGllbnRzW2NsaWVudF0uZmQgPSAtMTsKLSAJZnJlZShjbGllbnRzW2NsaWVudF0udGFnKTsKLUBAIC01NjYsNiArNTg2LDE3MSBAQCBzZXJ2ZV9jbGllbnQoaW50IGkpIHsKLSAJfQotIH0KLSAKLSsjaWZkZWYgUFNFVURPX1BPUlRfTElOVVgKLStzdGF0aWMgdm9pZCBwc2V1ZG9fc2VydmVyX2xvb3BfZXBvbGwodm9pZCkKLSt7Ci0rCXN0cnVjdCBzb2NrYWRkcl91biBjbGllbnQ7Ci0rCXNvY2tsZW5fdCBsZW47Ci0rICAgICAgICBpbnQgaTsKLSsgICAgICAgIGludCByYzsKLSsgICAgICAgIGludCBmZDsKLSsJaW50IHRpbWVvdXQ7Ci0rCXN0cnVjdCBlcG9sbF9ldmVudCBldiwgZXZlbnRzW0VQT0xMX01BWF9FVkVOVFNdOwotKwlpbnQgbG9vcF90aW1lb3V0ID0gcHNldWRvX3NlcnZlcl90aW1lb3V0OwotKwotKwljbGllbnRzID0gbWFsbG9jKDE2ICogc2l6ZW9mKCpjbGllbnRzKSk7Ci0rCi0rCWNsaWVudHNbMF0uZmQgPSBsaXN0ZW5fZmQ7Ci0rCWNsaWVudHNbMF0ucGlkID0gZ2V0cGlkKCk7Ci0rCi0rCWZvciAoaSA9IDE7IGkgPCAxNjsgKytpKSB7Ci0rCQljbGllbnRzW2ldLmZkID0gLTE7Ci0rCQljbGllbnRzW2ldLnBpZCA9IDA7Ci0rCQljbGllbnRzW2ldLnRhZyA9IE5VTEw7Ci0rCQljbGllbnRzW2ldLnByb2dyYW0gPSBOVUxMOwotKwl9Ci0rCi0rCWFjdGl2ZV9jbGllbnRzID0gMTsKLSsJbWF4X2NsaWVudHMgPSAxNjsKLSsJaGlnaGVzdF9jbGllbnQgPSAwOwotKwotKwlwc2V1ZG9fZGVidWcoUERCR0ZfU0VSVkVSLCAic2VydmVyIGxvb3Agc3RhcnRlZC5cbiIpOwotKwlpZiAobGlzdGVuX2ZkIDwgMCkgewotKwkJcHNldWRvX2RpYWcoImdvdCBpbnRvIGxvb3Agd2l0aCBubyB2YWxpZCBsaXN0ZW4gZmQuXG4iKTsKLSsJCWV4aXQoUFNFVURPX0VYSVRfTElTVEVOX0ZEKTsKLSsJfQotKwotKwl0aW1lb3V0ID0gTE9PUF9ERUxBWSAqIDEwMDA7Ci0rCi0rCWludCBlcG9sbGZkID0gZXBvbGxfY3JlYXRlMSgwKTsKLSsJaWYgKGVwb2xsZmQgPT0gLTEpIHsKLSsJCXBzZXVkb19kaWFnKCJlcG9sbF9jcmVhdGUxKCkgZmFpbGVkLlxuIik7Ci0rCQlleGl0KFBTRVVET19FWElUX0VQT0xMX0NSRUFURSk7Ci0rCX0KLSsJZXYuZXZlbnRzID0gRVBPTExJTjsKLSsJZXYuZGF0YS51NjQgPSAwOwotKwlpZiAoZXBvbGxfY3RsKGVwb2xsZmQsIEVQT0xMX0NUTF9BREQsIGNsaWVudHNbMF0uZmQsICZldikgPT0gLTEpIHsKLSsJCXBzZXVkb19kaWFnKCJlcG9sbF9jdGwoKSBmYWlsZWQgd2l0aCBsaXN0ZW5pbmcgc29ja2V0LlxuIik7Ci0rCQlleGl0KFBTRVVET19FWElUX0VQT0xMX0NUTCk7Ci0rCX0KLSsKLSsJcGRiX2xvZ19tc2coU0VWRVJJVFlfSU5GTywgTlVMTCwgTlVMTCwgTlVMTCwgInNlcnZlciBzdGFydGVkIChwaWQgJWQpIiwgZ2V0cGlkKCkpOwotKwotKyAgICAgICAgZm9yICg7OykgewotKwkJcmMgPSBlcG9sbF93YWl0KGVwb2xsZmQsIGV2ZW50cywgRVBPTExfTUFYX0VWRU5UUywgdGltZW91dCk7Ci0rCQlpZiAocmMgPT0gMCB8fCAocmMgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpKSB7Ci0rCQkJLyogSWYgdGhlcmUncyBubyBjbGllbnRzLCBzdGFydCB0aW1pbmcgb3V0LiAgSWYgdGhlcmUKLSsJCQkgKiBhcmUgYWN0aXZlIGNsaWVudHMsIG5ldmVyIHRpbWUgb3V0LgotKwkJCSAqLwotKwkJCWlmIChhY3RpdmVfY2xpZW50cyA9PSAxKSB7Ci0rCQkJCWxvb3BfdGltZW91dCAtPSBMT09QX0RFTEFZOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbWF5YmUgZmx1c2ggZGF0YWJhc2UgdG8gZGlzayAqLwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGRiX21heWJlX2JhY2t1cCgpOwotKwkJCQlpZiAobG9vcF90aW1lb3V0IDw9IDApIHsKLSsJCQkJCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIsICJubyBtb3JlIGNsaWVudHMsIGdvdCBib3JlZC5cbiIpOwotKwkJCQkJZGllX3BlYWNlZnVsbHkgPSAxOwotKwkJCQl9IGVsc2UgewotKwkJCQkJLyogZGlzcGxheSB0aGlzIGlmIG5vdCBleGl0aW5nICovCi0rCQkJCQlwc2V1ZG9fZGVidWcoUERCR0ZfU0VSVkVSIHwgUERCR0ZfQkVOQ0hNQVJLLCAiJWQgbWVzc2FnZXMgaGFuZGxlZCBpbiAlLjRmIHNlY29uZHMsICVkIHJlc3BvbnNlc1xuIiwKLSsJCQkJCQltZXNzYWdlcywKLSsJCQkJCQkoZG91YmxlKSBtZXNzYWdlX3RpbWUudHZfc2VjICsKLSsJCQkJCQkoZG91YmxlKSBtZXNzYWdlX3RpbWUudHZfdXNlYyAvIDEwMDAwMDAuMCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZXMpOwotKwkJCQl9Ci0rCQkJfQotKwkJfSBlbHNlIGlmIChyYyA+IDApIHsKLSsJCQlsb29wX3RpbWVvdXQgPSBwc2V1ZG9fc2VydmVyX3RpbWVvdXQ7Ci0rCQkJZm9yIChpID0gMDsgaSA8IHJjOyArK2kpIHsKLSsJCQkJaWYgKGNsaWVudHNbZXZlbnRzW2ldLmRhdGEudTY0XS5mZCA9PSBsaXN0ZW5fZmQpIHsKLSsJCQkJCWlmICghZGllX2ZvcmNlZnVsbHkpIHsKLSsJCQkJCQlsZW4gPSBzaXplb2YoY2xpZW50KTsKLSsJCQkJCQlpZiAoKGZkID0gYWNjZXB0KGxpc3Rlbl9mZCwgKHN0cnVjdCBzb2NrYWRkciAqKSAmY2xpZW50LCAmbGVuKSkgIT0gLTEpIHsKLSsJCQkJCQkvKiBEb24ndCBhbGxvdyBjbGllbnRzIHRvIGVuZCB1cCBvbiBmZCAyLCBiZWNhdXNlIGdsaWJjJ3MKLSsJCQkJCQkgKiBtYWxsb2MgZGVidWcgdXNlcyB0aGF0IGZkIHVuY29uZGl0aW9uYWxseS4KLSsJCQkJCQkgKi8KLSsJCQkJCQkJaWYgKGZkID09IDIpIHsKLSsJCQkJCQkJCWludCBuZXdmZCA9IGZjbnRsKGZkLCBGX0RVUEZELCAzKTsKLSsJCQkJCQkJCWNsb3NlKGZkKTsKLSsJCQkJCQkJCWZkID0gbmV3ZmQ7Ci0rCQkJCQkJCX0KLSsJCQkJCQkJcHNldWRvX2RlYnVnKFBEQkdGX1NFUlZFUiwgIm5ldyBjbGllbnQgZmQgJWRcbiIsIGZkKTsKLSsJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBIG5ldyBjbGllbnQgaW1wbGljaXRseSBjYW5jZWxzIGFueQotKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHByZXZpb3VzIHNodXRkb3duIHJlcXVlc3QsIG9yIGEKLSsJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzaHV0ZG93biBmb3IgbGFjayBvZiBjbGllbnRzLgotKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzZXVkb19zZXJ2ZXJfdGltZW91dCA9IERFRkFVTFRfUFNFVURPX1NFUlZFUl9USU1FT1VUOwotKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZV9wZWFjZWZ1bGx5ID0gMDsKLSsKLSsJCQkJCQkJZXYuZXZlbnRzID0gRVBPTExJTjsKLSsJCQkJCQkJZXYuZGF0YS51NjQgPSBvcGVuX2NsaWVudChmZCk7Ci0rCQkJCQkJCWlmIChldi5kYXRhLnU2NCAhPSAwICYmIGVwb2xsX2N0bChlcG9sbGZkLCBFUE9MTF9DVExfQURELCBjbGllbnRzW2V2LmRhdGEudTY0XS5mZCwgJmV2KSA9PSAtMSkgewotKwkJCQkJCQkJcHNldWRvX2RpYWcoImVwb2xsX2N0bCgpIGZhaWxlZCB3aXRoIGFjY2VwdGVkIHNvY2tldC5cbiIpOwotKwkJCQkJCQkJZXhpdChQU0VVRE9fRVhJVF9FUE9MTF9DVEwpOwotKwkJCQkJCQl9Ci0rCQkJCQkJfSBlbHNlIGlmIChlcnJubyA9PSBFTUZJTEUpIHsKLSsJCQkJCQkJcHNldWRvX2RlYnVnKFBEQkdGX1NFUlZFUiwgIkhpdCBtYXggb3BlbiBmaWxlcywgZHJvcHBpbmcgYSBjbGllbnQuXG4iKTsKLSsJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbiB0aGVvcnkgdGhlcmUgaXMgYSBwb3RlbnRpYWwgcmFjZSBoZXJlIHdoZXJlIGlmIHdlIGNsb3NlIGEgY2xpZW50LCAKLSsJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdCBtYXkgaGF2ZSBzZW50IHVzIGEgZmFzdG9wIG1lc3NhZ2Ugd2hpY2ggd2UgZG9uJ3QgYWN0IHVwb24uCi0rCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgd2UgZG9uJ3QgY2xvc2UgYSBmaWxlaGFuZGxlIHdlJ2xsIGxvb3AgaW5kZWZpbml0ZWx5IHRob3VnaHQuIAotKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9ubHkgY2xvc2Ugb25lIHBlciBsb29wIGl0ZXJhdGlvbiBpbiB0aGUgaW50ZXJlc3RzIG9mIGNhdXRpb24gKi8KLSsJCQkJICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDE7IGogPD0gaGlnaGVzdF9jbGllbnQ7ICsraikgewotKwkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjbGllbnRzW2pdLmZkICE9IC0xKSB7Ci0rCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9jbGllbnQoaik7Ci0rCQkJCQkJCQkJYnJlYWs7Ci0rCQkJCQkJCQl9Ci0rCQkJCQkJCX0KLSsJCQkJCQl9Ci0rCQkJCQl9Ci0rCQkJCX0gZWxzZSB7Ci0rCQkJCQlzdHJ1Y3QgdGltZXZhbCB0djEsIHR2MjsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJjOwotKwkJCQkJZ2V0dGltZW9mZGF5KCZ0djEsIE5VTEwpOwotKwkJCQkJcmMgPSBzZXJ2ZV9jbGllbnQoZXZlbnRzW2ldLmRhdGEudTY0KTsKLSsJCQkJCWdldHRpbWVvZmRheSgmdHYyLCBOVUxMKTsKLSsJCQkJCSsrbWVzc2FnZXM7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyYyA9PSAwKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrcmVzcG9uc2VzOwotKwkJCQkJbWVzc2FnZV90aW1lLnR2X3NlYyArPSAodHYyLnR2X3NlYyAtIHR2MS50dl9zZWMpOwotKwkJCQkJbWVzc2FnZV90aW1lLnR2X3VzZWMgKz0gKHR2Mi50dl91c2VjIC0gdHYxLnR2X3VzZWMpOwotKwkJCQkJaWYgKG1lc3NhZ2VfdGltZS50dl91c2VjIDwgMCkgewotKwkJCQkJCW1lc3NhZ2VfdGltZS50dl91c2VjICs9IDEwMDAwMDA7Ci0rCQkJCQkJLS1tZXNzYWdlX3RpbWUudHZfc2VjOwotKwkJCQkJfSBlbHNlIHdoaWxlIChtZXNzYWdlX3RpbWUudHZfdXNlYyA+IDEwMDAwMDApIHsKLSsJCQkJCQltZXNzYWdlX3RpbWUudHZfdXNlYyAtPSAxMDAwMDAwOwotKwkJCQkJCSsrbWVzc2FnZV90aW1lLnR2X3NlYzsKLSsJCQkJCX0KLSsJCQkJfQotKwkJCQlpZiAoZGllX2ZvcmNlZnVsbHkpCi0rCQkJCQlicmVhazsKLSsJCQl9Ci0rCQkJcHNldWRvX2RlYnVnKFBEQkdGX1NFUlZFUiwgInNlcnZlciBsb29wIGNvbXBsZXRlIFslZCBjbGllbnRzIGxlZnRdXG4iLCBhY3RpdmVfY2xpZW50cyk7Ci0rCQl9IGVsc2UgewotKwkJCXBzZXVkb19kaWFnKCJlcG9sbF93YWl0IGZhaWxlZDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7Ci0rCQkJYnJlYWs7Ci0rCQl9Ci0rCQlpZiAoZGllX3BlYWNlZnVsbHkgfHwgZGllX2ZvcmNlZnVsbHkpIHsKLSsJCQlwc2V1ZG9fZGVidWcoUERCR0ZfU0VSVkVSLCAicXVpdHRpbmcuXG4iKTsKLSsJCQlwc2V1ZG9fZGVidWcoUERCR0ZfU0VSVkVSIHwgUERCR0ZfQkVOQ0hNQVJLLCAic2VydmVyICVkIGV4aXRpbmc6IGhhbmRsZWQgJWQgbWVzc2FnZXMgaW4gJS40ZiBzZWNvbmRzXG4iLAotKwkJCQlnZXRwaWQoKSwgbWVzc2FnZXMsCi0rCQkJCShkb3VibGUpIG1lc3NhZ2VfdGltZS50dl9zZWMgKwotKwkJCQkoZG91YmxlKSBtZXNzYWdlX3RpbWUudHZfdXNlYyAvIDEwMDAwMDAuMCk7Ci0rCQkJcGRiX2xvZ19tc2coU0VWRVJJVFlfSU5GTywgTlVMTCwgTlVMTCwgTlVMTCwgInNlcnZlciAlZCBleGl0aW5nOiBoYW5kbGVkICVkIG1lc3NhZ2VzIGluICUuNGYgc2Vjb25kcyIsCi0rCQkJCWdldHBpZCgpLCBtZXNzYWdlcywKLSsJCQkJKGRvdWJsZSkgbWVzc2FnZV90aW1lLnR2X3NlYyArCi0rCQkJCShkb3VibGUpIG1lc3NhZ2VfdGltZS50dl91c2VjIC8gMTAwMDAwMC4wKTsKLSsJCQkvKiBhbmQgYXQgdGhpcyBwb2ludCwgd2UnbGwgc3RhcnQgcmVmdXNpbmcgY29ubmVjdGlvbnMgKi8KLSsJCQljbG9zZShjbGllbnRzWzBdLmZkKTsKLSsJCQkvKiBUaGlzIGlzIGEgZ29vZCBwbGFjZSB0byBpbnNlcnQgYSBkZWxheSBmb3IKLSsJCQkgKiBkZWJ1Z2dpbmcgcmFjZSBjb25kaXRpb25zIGR1cmluZyBzdGFydHVwLiAqLwotKwkJCS8qIHVzbGVlcCgzMDAwMDApOyAqLwotKwkJCWV4aXQoMCk7Ci0rCQl9Ci0rCX0KLSsKLSt9Ci0rCi0rI2VuZGlmCi0rCi0gLyogZ2V0IGNsaWVudHMsIGhhbmRsZSBtZXNzYWdlcywgc2h1dCBkb3duLgotICAqIFRoaXMgZG9lc24ndCBhY3R1YWxseSBkbyBhbnkgd29yaywgaXQganVzdCBjYWxscyBhIHRvbiBvZiB0aGluZ3Mgd2hpY2gKLSAgKiBkbyB3b3JrLgotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvYjZiNjhkYjg5NmY5OTYzNTU4MzM0YWZmN2ZjYTYxYWRkZTRlYzEwZi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL2I2YjY4ZGI4OTZmOTk2MzU1ODMzNGFmZjdmY2E2MWFkZGU0ZWMxMGYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwNDVhM2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvYjZiNjhkYjg5NmY5OTYzNTU4MzM0YWZmN2ZjYTYxYWRkZTRlYzEwZi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gYjZiNjhkYjg5NmY5OTYzNTU4MzM0YWZmN2ZjYTYxYWRkZTRlYzEwZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFNlZWJzIDxzZWVic0BzZWVicy5uZXQ+Ci1EYXRlOiBUaHUsIDEzIEFwciAyMDE3IDE4OjEyOjAxIC0wNTAwCi1TdWJqZWN0OiBQcmV2ZW50IGJhc2ggZnJvbSBzZWdmYXVsdGluZyB3aGVuIHVubG9hZGluZyBwc2V1ZG8KLQotYmFzaCdzIGV4dHJlbWVseSBmYW5jeSBpbnRlcm5hbCBhd2FyZW5lc3Mgb2YgaG93IHRoZSBlbnZpcm9ubWVudCBsb29rcwotbWVhbnMgdGhhdCwgaWYgeW91IGRpcmVjdGx5IGNhbGwgdGhlIHVuZGVybHlpbmcgbGliYyAidW5zZXRlbnYiIG9uCi1hIHZhcmlhYmxlLCBiYXNoIGNhbiBlbmQgdXAgdHJ5aW5nIHRvIGFjY2VzcyBhIG51bGwgcG9pbnRlci4gRml4aW5nCi10aGlzIGdlbmVyaWNhbGx5IGlzIGFjdHVhbGx5IHJhdGhlciBoYXJkOyB5b3UgY2FuJ3QgcmVhbGx5IGF2b2lkCi13cml0aW5nIHRvIGVudmlyb24gb24gZm9yaygpIG9yIHBvcGVuKCksIGV2ZW4gaWYgeW91IGNoYW5nZSBhbGwKLWV4ZWN2KigpIGZ1bmN0aW9ucyB0byB1c2UgdGhlIGV4ZWN2KmUoKSB2YXJpYW50cy4gU28gZm9yIG5vdywgaW5zdGVhZAotb2YgdW5zZXR0aW5nIHRoZSB2YXJpYWJsZSwgc2V0IGl0IHRvIGFuIGVtcHR5IHN0cmluZy4KLQotVGhhbmtzIHRvIFNhdXIgaW4gSVJDIGZvciBzcG90dGluZyB0aGlzIGFuZCBoZWxwaW5nIGRlYnVnIGl0LgotCi1TaWduZWQtb2ZmLWJ5OiBTZWVicyA8c2VlYnNAc2VlYnMubmV0PgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLWRpZmYgLS1naXQgYS9DaGFuZ2VMb2cudHh0IGIvQ2hhbmdlTG9nLnR4dAotaW5kZXggYTJkMzBlOS4uOGJhMWZmYSAxMDA2NDQKLS0tLSBhL0NoYW5nZUxvZy50eHQKLSsrKyBiL0NoYW5nZUxvZy50eHQKLUBAIC0xLDMgKzEsOCBAQAotKzIwMTctMDQtMTM6Ci0rCSogKHNlZWJzKSBkb24ndCB1bnNldCBMRF9QUkVMT0FEIG9yIHRoZSBsaWtlLCBiZWNhdXNlIGlmIHlvdQotKwkgIGRvIHRoYXQsIGJhc2ggY2FuIHNlZ2ZhdWx0IGJlY2F1c2UgaXQgImtub3dzIiBob3cgbWFueQotKwkgIGZpZWxkcyBhcmUgaW4gZW52aXJvbi4KLSsKLSAyMDE3LTAyLTI0OgotIAkqIChzZWVicykgaW1wb3J0IHBvc2l4X2FjbF9kZWZhdWx0IGZpeCBmcm9tIEFudG9uIEdlcmFzaW1vdgotIAkgIDxhbnRvbkBhZHZhbmNlZHRlbGVtYXRpYy5jb20+Ci1kaWZmIC0tZ2l0IGEvcHNldWRvX3V0aWwuYyBiL3BzZXVkb191dGlsLmMKLWluZGV4IDE3Mjk5MGIuLjZhMWZhYzIgMTAwNjQ0Ci0tLS0gYS9wc2V1ZG9fdXRpbC5jCi0rKysgYi9wc2V1ZG9fdXRpbC5jCi1AQCAtODQ0LDcgKzg0NCw3IEBAIHZvaWQgcHNldWRvX2Ryb3BlbnYoKSB7Ci0gCQlpZiAobGRfcHJlbG9hZCAmJiBzdHJsZW4obGRfcHJlbG9hZCkpIHsKLSAJCQlTRVRFTlYoUFJFTElOS19MSUJSQVJJRVMsIGxkX3ByZWxvYWQsIDEpOwotIAkJfSBlbHNlIHsKLS0JCQlVTlNFVEVOVihQUkVMSU5LX0xJQlJBUklFUyk7Ci0rCQkJU0VURU5WKFBSRUxJTktfTElCUkFSSUVTLCAiIiwgMSk7Ci0gCQl9Ci0gCX0KLSB9Ci0tLSAKLWNnaXQgdjAuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy9lZmUwYmUyNzk5MDEwMDZmOTM5Y2QzNTdjY2VlNDdiNjUxYzc4NmRhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvZWZlMGJlMjc5OTAxMDA2ZjkzOWNkMzU3Y2NlZTQ3YjY1MWM3ODZkYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRmYzU4Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy9lZmUwYmUyNzk5MDEwMDZmOTM5Y2QzNTdjY2VlNDdiNjUxYzc4NmRhLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotRnJvbSBlZmUwYmUyNzk5MDEwMDZmOTM5Y2QzNTdjY2VlNDdiNjUxYzc4NmRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU2VlYnMgPHNlZWJzQHNlZWJzLm5ldD4KLURhdGU6IEZyaSwgMjQgRmViIDIwMTcgMTI6NDc6MzggLTA2MDAKLVN1YmplY3Q6IERvbid0IHRyeSB0byByZWNvcmQgMC1sZW5ndGggcG9zaXhfYWNsX2RlZmF1bHQgeGF0dHJzCi0KLUJhc2VkIG9uIGEgc3VibWlzc2lvbiBmcm9tIEFudG9uIEdlcmFzaW1vdiA8YW50b25AYWR2YW5jZWR0ZWxlbWF0aWMuY29tPgotCi1PbiBzb21lIHN5c3RlbXMsIHdpdGggc29tZSBrZXJuZWwgY29uZmlncywgImNwIC1hIiBhcHBhcmVudGx5IHRyaWVzIHRvCi1zZXQgYW4gZW1wdHkgQUNMIGxpc3QsIHdpdGggYSB2YWxpZCBoZWFkZXIgYnV0IG5vIGNvbnRlbnRzLCB3aGljaCBjYXVzZXMKLXN0cmFuZ2UgYW5kIG15c3RlcmlvdXMgYmVoYXZpb3IgbGF0ZXIgaWYgd2UgYWN0dWFsbHkgY3JlYXRlIHN1Y2ggYW4gZW50cnkuCi1TbyBmaWx0ZXIgdGhhdCBvdXQsIGFsc28gc2FuaXR5LWNoZWNrIGEgY291cGxlIG9mIG90aGVyIHRoaW5ncy4KLQotU2lnbmVkLW9mZi1ieTogU2VlYnMgPHNlZWJzQHNlZWJzLm5ldD4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nLnR4dCBiL0NoYW5nZUxvZy50eHQKLWluZGV4IGFlMmE2ZTkuLmEyZDMwZTkgMTAwNjQ0Ci0tLS0gYS9DaGFuZ2VMb2cudHh0Ci0rKysgYi9DaGFuZ2VMb2cudHh0Ci1AQCAtMSwzICsxLDYgQEAKLSsyMDE3LTAyLTI0OgotKwkqIChzZWVicykgaW1wb3J0IHBvc2l4X2FjbF9kZWZhdWx0IGZpeCBmcm9tIEFudG9uIEdlcmFzaW1vdgotKwkgIDxhbnRvbkBhZHZhbmNlZHRlbGVtYXRpYy5jb20+Ci0gMjAxNy0wMi0wMToKLSAgICAqIChzZWVicykgaGFuZGxlIHhhdHRyIGRlbGV0aW9uIHNsaWdodGx5IG1vcmUgY2FyZWZ1bGx5LgotICAgICogKHNlZWJzKSB0YWcgdGhpcyBhcyAxLjguMgotZGlmZiAtLWdpdCBhL3BvcnRzL2xpbnV4L3hhdHRyL3BzZXVkb193cmFwcGVycy5jIGIvcG9ydHMvbGludXgveGF0dHIvcHNldWRvX3dyYXBwZXJzLmMKLWluZGV4IDQ2YmMwNTMuLmQ2OWQ1M2UgMTAwNjQ0Ci0tLS0gYS9wb3J0cy9saW51eC94YXR0ci9wc2V1ZG9fd3JhcHBlcnMuYwotKysrIGIvcG9ydHMvbGludXgveGF0dHIvcHNldWRvX3dyYXBwZXJzLmMKLUBAIC02Miw5ICs2Miw5IEBAIHN0YXRpYyBpbnQKLSBwb3NpeF9wZXJtaXNzaW9ucyhjb25zdCBhY2xfaGVhZGVyICpoZWFkZXIsIGludCBlbnRyaWVzLCBpbnQgKmV4dHJhLCBpbnQgKm1vZGUpIHsKLSAJaW50IGFjbF9zZWVuID0gMDsKLSAJaWYgKGxlMzIoaGVhZGVyLT52ZXJzaW9uKSAhPSAyKSB7Ci0tCQlwc2V1ZG9fZGlhZygiRmF0YWw6IEFDTCBzdXBwb3J0IG5vIGF2YWlsYWJsZSBmb3IgaGVhZGVyIHZlcnNpb24gJWQuXG4iLAotKwkJcHNldWRvX2RpYWcoIkZhdGFsOiBBQ0wgc3VwcG9ydCBub3QgYXZhaWxhYmxlIGZvciBoZWFkZXIgdmVyc2lvbiAlZC5cbiIsCi0gCQkJbGUzMihoZWFkZXItPnZlcnNpb24pKTsKLS0JCXJldHVybiAxOwotKwkJcmV0dXJuIC0xOwotIAl9Ci0gCSptb2RlID0gMDsKLSAJKmV4dHJhID0gMDsKLUBAIC0xNDAsMTIgKzE0MCwzOCBAQCBzdGF0aWMgaW50IHNoYXJlZF9zZXR4YXR0cihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmQsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHZvaQotIAlwc2V1ZG9fZGVidWcoUERCR0ZfWEFUVFIsICJzZXR4YXR0ciglcyBbZmQgJWRdLCAlcyA9PiAnJS4qcycpXG4iLAotIAkJcGF0aCA/IHBhdGggOiAiPG5vIHBhdGg+IiwgZmQsIG5hbWUsIChpbnQpIHNpemUsIChjaGFyICopIHZhbHVlKTsKLSAKLSsJLyogRmlsdGVyIG91dCBlcnJvbmVvdXMgc2l6ZXMgZm9yIFBPU0lYIEFDTAotKwkgKiAgc2VlIHBvc2l4X2FjbF94YXR0cl9jb3VudCBpbiBpbmNsdWRlL2xpbnV4L3Bvc2l4X2FjbF94YXR0ci5oIG9mIExpbnV4IHNvdXJjZSBjb2RlICovCi0rCS8qIEkgZG9uJ3QgdGhpbmsgdGhlcmUncyBhbnkgcG9zaXhfYWNsXyogdmFsdWVzIHRoYXQgYXJlbid0IGluIHRoaXMgZm9ybWF0ICovCi0rCWlmICghc3RybmNtcChuYW1lLCAic3lzdGVtLnBvc2l4X2FjbF8iLCAxNykpIHsKLSsJCS8vIEFDTCBpcyBjb3JydXB0LCBpc3N1ZSBhbiBlcnJvcgotKwkJaWYoc2l6ZSA8IHNpemVvZihhY2xfaGVhZGVyKSB8fCAoc2l6ZSAtIHNpemVvZihhY2xfaGVhZGVyKSkgJSBzaXplb2YoYWNsX2VudHJ5KSAhPSAwKSB7Ci0rCQkJcHNldWRvX2RlYnVnKFBEQkdGX1hBVFRSLCAiaW52YWxpZCBkYXRhIHNpemUgZm9yICVzOiAlZFxuIiwKLSsJCQkJbmFtZSwgKGludCkgc2l6ZSk7Ci0rCQkJZXJybm8gPSBFSU5WQUw7Ci0rCQkJcmV0dXJuIC0xOwotKwkJfQotKwotKwkJLy8gQUNMIGlzIGVtcHR5LCBkbyBub3RoaW5nCi0rCQlpZigoc2l6ZSAtIHNpemVvZihhY2xfaGVhZGVyKSkgLyBzaXplb2YoYWNsX2VudHJ5KSA9PSAwKSB7Ci0rCQkJLyogb24gc29tZSBzeXN0ZW1zLCAiY3AgLWEiIHdpbGwgYXR0ZW1wdCB0byBjbG9uZSB0aGUKLSsJCQkgKiBwb3NpeF9hY2xfZGVmYXVsdCBlbnRyeSBmb3IgYSBkaXJlY3RvcnkgKHdoaWNoIHdvdWxkIHNwZWNpZnkKLSsJCQkgKiBkZWZhdWx0IEFDTHMgZm9yIG5ldyBmaWxlcyBpbiB0aGF0IGRpcmVjdG9yeSksIGJ1dCBpZiB0aGUKLSsJCQkgKiBvcmlnaW5hbCB3YXMgZW1wdHksIHdlIGdldCBhIGhlYWRlciBidXQgbm8gZW50cmllcy4gV2l0aAotKwkJCSAqIHJlYWwgeGF0dHIsIHRoYXQgZW5kcyB1cCBiZWluZyBzaWxlbnRseSBkaXNjYXJkZWQsIGFwcGFyZW50bHksCi0rCQkJICogc28gd2UgZGlzY2FyZCBpdCB0b28uCi0rCQkJICovCi0rCQkJcHNldWRvX2RlYnVnKFBEQkdGX1hBVFRSLCAiMC1sZW5ndGggQUNMIGVudHJ5ICVzLlxuIiwgbmFtZSk7Ci0rCQkJcmV0dXJuIDA7Ci0rCQl9Ci0rCX0KLSAJLyogdGhpcyBtYXkgYmUgYSBwbGFpbiBjaG1vZCAqLwotIAlpZiAoIXN0cmNtcChuYW1lLCAic3lzdGVtLnBvc2l4X2FjbF9hY2Nlc3MiKSkgewotIAkJaW50IGV4dHJhOwotIAkJaW50IG1vZGU7Ci0gCQlpbnQgZW50cmllcyA9IChzaXplIC0gc2l6ZW9mKGFjbF9oZWFkZXIpKSAvIHNpemVvZihhY2xfZW50cnkpOwotLQkJaWYgKCFwb3NpeF9wZXJtaXNzaW9ucyh2YWx1ZSwgZW50cmllcywgJmV4dHJhLCAmbW9kZSkpIHsKLSsJCWludCByZXMgPSBwb3NpeF9wZXJtaXNzaW9ucyh2YWx1ZSwgZW50cmllcywgJmV4dHJhLCAmbW9kZSk7Ci0rCQlpZiAocmVzID09IDApIHsKLSAJCQlwc2V1ZG9fZGVidWcoUERCR0ZfWEFUVFIsICJwb3NpeF9hY2xfYWNjZXNzIHRyYW5zbGF0ZWQgdG8gbW9kZSAlMDRvLiBSZW1haW5pbmcgYXR0cmlidXRlKHMpOiAlZC5cbiIsCi0gCQkJCW1vZGUsIGV4dHJhKTsKLSAJCQlidWYuc3RfbW9kZSA9IG1vZGU7Ci1AQCAtMTY0LDggKzE5MCwxMiBAQCBzdGF0aWMgaW50IHNoYXJlZF9zZXR4YXR0cihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmQsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHZvaQotIAkJCWlmICghZXh0cmEpIHsKLSAJCQkJcmV0dXJuIDA7Ci0gCQkJfQotKwkJfSBlbHNlIGlmIChyZXMgPT0gLTEpIHsKLSsJCQllcnJubyA9IEVPUE5PVFNVUFA7Ci0rCQkJcmV0dXJuIC0xOwotIAkJfQotIAl9Ci0rCi0gCWlmICghc3RyY21wKG5hbWUsICJ1c2VyLnBzZXVkb19kYXRhIikpIHsKLSAJCXBzZXVkb19kZWJ1ZyhQREJHRl9YQVRUUiB8IFBEQkdGX1hBVFRSREIsICJ1c2VyLnBzZXVkb19kYXRhIHhhdHRyaWJ1dGUgZG9lcyBub3QgZ2V0IHRvIGdvIGluIGRhdGFiYXNlLlxuIik7Ci0gCQlyZXR1cm4gLTE7Ci0tLSAKLWNnaXQgdjAuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy9mYXN0b3ByZXBseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL2Zhc3RvcHJlcGx5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDRjMmQwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL2Zhc3RvcHJlcGx5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotRW5zdXJlIEZBU1RPUCBtZXNzYWdlcyBnZXQgYW4gQUNLIHJlcGx5IHNvIHRoYXQgdGhlIGNsaWVudCBjYW4gYmUgc3VyZSB0aGUgc2VydmVyCi1yZWNpZXZlZCB0aGVtLiBUaGlzIG1lYW5zIGlmIGNvbm5lY3Rpb25zIGFyZSB0ZXJtaW5hdGVkLCBkYXRhIGlzbid0IGxvc3QuCi0KLVJQIDIwMTcvOS8yMgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi1JbmRleDogcHNldWRvLTEuOC4yL3BzZXVkb19jbGllbnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBzZXVkby0xLjguMi5vcmlnL3BzZXVkb19jbGllbnQuYwotKysrIHBzZXVkby0xLjguMi9wc2V1ZG9fY2xpZW50LmMKLUBAIC0xMzMxLDIxICsxMzMxLDE5IEBAIHBzZXVkb19jbGllbnRfcmVxdWVzdChwc2V1ZG9fbXNnX3QgKm1zZywKLSAJCSAqIGluZGljYXRpbmcgYSBzdWNjZXNzZnVsIHNlbmQuCi0gCQkgKi8KLSAJCXBzZXVkb19kZWJ1ZyhQREJHRl9DTElFTlQgfCBQREJHRl9WRVJCT1NFLCAic2VudCFcbiIpOwotLQkJaWYgKG1zZy0+dHlwZSAhPSBQU0VVRE9fTVNHX0ZBU1RPUCkgewotLQkJCXJlc3BvbnNlID0gcHNldWRvX21zZ19yZWNlaXZlKGNvbm5lY3RfZmQpOwotLQkJCWlmICghcmVzcG9uc2UpIHsKLS0JCQkJcHNldWRvX2RlYnVnKFBEQkdGX0NMSUVOVCwgImV4cGVjdGVkIHJlc3BvbnNlIGRpZCBub3Qgb2NjdXI7IHJldHJ5aW5nXG4iKTsKLSsJCXJlc3BvbnNlID0gcHNldWRvX21zZ19yZWNlaXZlKGNvbm5lY3RfZmQpOwotKwkJaWYgKCFyZXNwb25zZSkgewotKwkJCXBzZXVkb19kZWJ1ZyhQREJHRl9DTElFTlQsICJleHBlY3RlZCByZXNwb25zZSBkaWQgbm90IG9jY3VyOyByZXRyeWluZ1xuIik7Ci0rCQl9IGVsc2UgewotKwkJCWlmIChyZXNwb25zZS0+dHlwZSAhPSBQU0VVRE9fTVNHX0FDSykgewotKwkJCQlwc2V1ZG9fZGVidWcoUERCR0ZfQ0xJRU5ULCAiZ290IG5vbi1hY2sgcmVzcG9uc2UgJWRcbiIsIHJlc3BvbnNlLT50eXBlKTsKLSsJCQkJcmV0dXJuIDA7Ci0rCQkJfSBlbHNlIGlmIChtc2ctPnR5cGUgIT0gUFNFVURPX01TR19GQVNUT1ApIHsKLSsJCQkJcHNldWRvX2RlYnVnKFBEQkdGX0NMSUVOVCB8IFBEQkdGX1ZFUkJPU0UsICJnb3QgcmVzcG9uc2UgdHlwZSAlZFxuIiwgcmVzcG9uc2UtPnR5cGUpOwotKwkJCQlyZXR1cm4gcmVzcG9uc2U7Ci0gCQkJfSBlbHNlIHsKLS0JCQkJaWYgKHJlc3BvbnNlLT50eXBlICE9IFBTRVVET19NU0dfQUNLKSB7Ci0tCQkJCQlwc2V1ZG9fZGVidWcoUERCR0ZfQ0xJRU5ULCAiZ290IG5vbi1hY2sgcmVzcG9uc2UgJWRcbiIsIHJlc3BvbnNlLT50eXBlKTsKLS0JCQkJCXJldHVybiAwOwotLQkJCQl9IGVsc2UgewotLQkJCQkJcHNldWRvX2RlYnVnKFBEQkdGX0NMSUVOVCB8IFBEQkdGX1ZFUkJPU0UsICJnb3QgcmVzcG9uc2UgdHlwZSAlZFxuIiwgcmVzcG9uc2UtPnR5cGUpOwotLQkJCQkJcmV0dXJuIHJlc3BvbnNlOwotLQkJCQl9Ci0rCQkJCXJldHVybiAwOwotIAkJCX0KLS0JCX0gZWxzZSB7Ci0tCQkJcmV0dXJuIDA7Ci0gCQl9Ci0gCX0KLSAJcHNldWRvX2RpYWcoInBzZXVkbzogc2VydmVyIGNvbm5lY3Rpb24gcGVyc2lzdGVudGx5IGZhaWxlZCwgYWJvcnRpbmcuXG4iKTsKLUluZGV4OiBwc2V1ZG8tMS44LjIvcHNldWRvX3NlcnZlci5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcHNldWRvLTEuOC4yLm9yaWcvcHNldWRvX3NlcnZlci5jCi0rKysgcHNldWRvLTEuOC4yL3BzZXVkb19zZXJ2ZXIuYwotQEAgLTQ2Myw2ICs0NjMsMTEgQEAgY2xvc2VfY2xpZW50KGludCBjbGllbnQpIHsKLSAJCQktLWhpZ2hlc3RfY2xpZW50OwotIH0KLSAKLStzdGF0aWMgcHNldWRvX21zZ190IHNlcnZlcl9mYXN0b3BfcmVwbHkgPSB7IAotKyAgICAgICAgLnR5cGUgPSBQU0VVRE9fTVNHX0FDSywKLSsgICAgICAgIC5vcCA9IE9QX05PTkUsCi0rfTsKLSsKLSAvKiBBY3R1YWxseSBwcm9jZXNzIGEgcmVxdWVzdC4KLSAgKi8KLSBzdGF0aWMgaW50Ci1AQCAtNTE1LDggKzUyMCwxNCBAQCBzZXJ2ZV9jbGllbnQoaW50IGkpIHsKLSAJCSAqIHBzZXVkb19zZXJ2ZXJfcmVzcG9uc2UuCi0gCQkgKi8KLSAJCWlmIChpbi0+dHlwZSAhPSBQU0VVRE9fTVNHX1NIVVRET1dOKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluLT50eXBlID09IFBTRVVET19NU0dfRkFTVE9QKQotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbi0+dHlwZSA9PSBQU0VVRE9fTVNHX0ZBU1RPUCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9yZXNwb25zZSA9IDA7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGb3IgZmFzdG9wcyB3ZSByZXBseSBub3cgdG8gc2F5IHdlIGdvdCB0aGUgZGF0YSAqLwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChyYyA9IHBzZXVkb19tc2dfc2VuZChjbGllbnRzW2ldLmZkLCAmc2VydmVyX2Zhc3RvcF9yZXBseSwgMCwgTlVMTCkpICE9IDApIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIsICJmYWlsZWQgdG8gc2VuZCBmYXN0b3AgYWNrIHRvIGNsaWVudCAlZCBbJWRdOiAlZCAoJXMpXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLCAoaW50KSBjbGllbnRzW2ldLnBpZCwgcmMsIHN0cmVycm9yKGVycm5vKSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgfQotIAkJCS8qIG1vc3QgbWVzc2FnZXMgZG9uJ3QgbmVlZCB0aGVzZSwgYnV0IHhhdHRyIG1heSAqLwotIAkJCXJlc3BvbnNlX3BhdGggPSAwOwotIAkJCXJlc3BvbnNlX3BhdGhsZW4gPSAtMTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL3Rvb21hbnlmaWxlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL3Rvb21hbnlmaWxlcy5wYXRjaAppbmRleCBiMDg1YTQ1Li5iZGE3ZTRiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy90b29tYW55ZmlsZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvdG9vbWFueWZpbGVzLnBhdGNoCkBAIC0xLDMgKzEsOCBAQAorRnJvbSBiMGIyNWZiYzA0MWExNDhkMWRlMDlmNWE2NTAzY2Q5NTk3M2VjNzdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CitEYXRlOiBUdWUsIDI1IEFwciAyMDE3IDE1OjI1OjU0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBwc2V1ZG86IEhhbmRsZSB0b28gbWFueSBmaWxlcyBkZWFkbG9jaworCiBDdXJyZW50bHkgaWYgd2UgbWF4IG91dCB0aGUgbWF4aW11bSBudW1iZXIgb2YgZmlsZXMsIHBzZXVkbyBjYW4gZGVhZGxvY2ssIHVuYWJsZSB0bwogYWNjZXB0IG5ldyBjb25uZWN0aW9ucyB5ZXQgdW5hYmxlIHRvIG1vdmUgZm9yd2FyZCBhbmQgdW5ibG9jayB0aGUgb3RoZXIgcHJvY2Vzc2VzCiB3YWl0aW5nIGVpdGhlci4KQEAgLTExLDE5ICsxNiwyMyBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbUGV0ZXIgaXMgYXdhcmUgb2YgdGhlIGlzc3VlXQogCi1JbmRleDogcHNldWRvLTEuOC4yL3BzZXVkb19zZXJ2ZXIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBzZXVkby0xLjguMi5vcmlnL3BzZXVkb19zZXJ2ZXIuYwotKysrIHBzZXVkby0xLjguMi9wc2V1ZG9fc2VydmVyLmMKLUBAIC01ODEsNiArNTgxLDcgQEAgcHNldWRvX3NlcnZlcl9sb29wKHZvaWQpIHsKLSAJaW50IHJjOwotIAlpbnQgZmQ7Ci0gCWludCBsb29wX3RpbWVvdXQgPSBwc2V1ZG9fc2VydmVyX3RpbWVvdXQ7CistLS0KKyBwc2V1ZG9fc2VydmVyLmMgfCAxMCArKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3BzZXVkb19zZXJ2ZXIuYyBiL3BzZXVkb19zZXJ2ZXIuYworaW5kZXggZGFjMzI1OC4uMTVhM2U4ZiAxMDA2NDQKKy0tLSBhL3BzZXVkb19zZXJ2ZXIuYworKysrIGIvcHNldWRvX3NlcnZlci5jCitAQCAtODAyLDYgKzgwMiw3IEBAIHBzZXVkb19zZXJ2ZXJfbG9vcCh2b2lkKSB7CisgCXN0cnVjdCBzaWdhY3Rpb24gZWF0X3VzcjIgPSB7CisgCQkuc2FfaGFuZGxlciA9IHNldF9kb19saXN0X2NsaWVudHMKKyAJfTsKICsJaW50IGhpdG1heGZpbGVzOwogIAogIAljbGllbnRzID0gbWFsbG9jKDE2ICogc2l6ZW9mKCpjbGllbnRzKSk7CiAgCi1AQCAtNTk3LDYgKzU5OCw3IEBAIHBzZXVkb19zZXJ2ZXJfbG9vcCh2b2lkKSB7CitAQCAtODIwLDYgKzgyMSw3IEBAIHBzZXVkb19zZXJ2ZXJfbG9vcCh2b2lkKSB7CiAgCWFjdGl2ZV9jbGllbnRzID0gMTsKICAJbWF4X2NsaWVudHMgPSAxNjsKICAJaGlnaGVzdF9jbGllbnQgPSAwOwpAQCAtMzEsOSArNDAsOSBAQAogIAogIAlwc2V1ZG9fZGVidWcoUERCR0ZfU0VSVkVSLCAic2VydmVyIGxvb3Agc3RhcnRlZC5cbiIpOwogIAlpZiAobGlzdGVuX2ZkIDwgMCkgewotQEAgLTY2MywxMCArNjY1LDE1IEBAIHBzZXVkb19zZXJ2ZXJfbG9vcCh2b2lkKSB7Ci0gCQkJCQkJbWVzc2FnZV90aW1lLnR2X3VzZWMgLT0gMTAwMDAwMDsKLSAJCQkJCQkrK21lc3NhZ2VfdGltZS50dl9zZWM7CitAQCAtODc4LDEwICs4ODAsMTUgQEAgcHNldWRvX3NlcnZlcl9sb29wKHZvaWQpIHsKKyAJCQkJCX0gZWxzZSB7CisgCQkJCQkJc2VydmVfY2xpZW50KGkpOwogIAkJCQkJfQogKwkJCQl9IGVsc2UgaWYgKGhpdG1heGZpbGVzKSB7CiArCQkJCQkvKiBPbmx5IGNsb3NlIG9uZSBwZXIgbG9vcCBpdGVyYXRpb24gaW4gdGhlIGludGVyZXN0cyBvZiBjYXV0aW9uICovCkBAIC00NywxMyArNTYsMTYgQEAKICAJCQlpZiAoIWRpZV9mb3JjZWZ1bGx5ICYmIAogIAkJCSAgICAoRkRfSVNTRVQoY2xpZW50c1swXS5mZCwgJmV2ZW50cykgfHwKICAJCQkgICAgIEZEX0lTU0VUKGNsaWVudHNbMF0uZmQsICZyZWFkcykpKSB7Ci1AQCAtNjg4LDYgKzY5OCw5IEBAIHBzZXVkb19zZXJ2ZXJfbG9vcCh2b2lkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc2V1ZG9fc2VydmVyX3RpbWVvdXQgPSBERUZBVUxUX1BTRVVET19TRVJWRVJfVElNRU9VVDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGllX3BlYWNlZnVsbHkgPSAwOworQEAgLTkwMyw2ICs5MTAsOSBAQCBwc2V1ZG9fc2VydmVyX2xvb3Aodm9pZCkgeworIAkJCQkJICovCisgCQkJCQlwc2V1ZG9fc2VydmVyX3RpbWVvdXQgPSBERUZBVUxUX1BTRVVET19TRVJWRVJfVElNRU9VVDsKKyAJCQkJCWRpZV9wZWFjZWZ1bGx5ID0gMDsKICsJCQkJfSBlbHNlIGlmIChlcnJubyA9PSBFTUZJTEUpIHsKICsJCQkJCWhpdG1heGZpbGVzID0gMTsKICsJCQkJCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIsICJIaXQgbWF4IG9wZW4gZmlsZXMsIGRyb3BwaW5nIGEgY2xpZW50LlxuIik7CiAgCQkJCX0KICAJCQl9CiAgCQkJcHNldWRvX2RlYnVnKFBEQkdGX1NFUlZFUiwgInNlcnZlciBsb29wIGNvbXBsZXRlIFslZCBjbGllbnRzIGxlZnRdXG4iLCBhY3RpdmVfY2xpZW50cyk7CistLSAKKzIuMTUuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG8uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvLmluYwppbmRleCAxOGNlOWY5Li5jZGMyYTU4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG8uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkby5pbmMKQEAgLTI2LDcgKzI2LDcgQEAKIE5PMzJMSUJTID8/PSAiMSIKIE5PMzJMSUJTX2NsYXNzLW5hdGl2ZXNkayA9ICIxIgogCi1QU0VVRE9fRVhUUkFfT1BUUyA/PSAiLS1lbmFibGUtZm9yY2UtYXN5bmMgLS13aXRob3V0LXBhc3N3ZC1mYWxsYmFjayIKK1BTRVVET19FWFRSQV9PUFRTID89ICItLWVuYWJsZS1mb3JjZS1hc3luYyAtLXdpdGhvdXQtcGFzc3dkLWZhbGxiYWNrIC0tZW5hYmxlLWVwb2xsIC0tZW5hYmxlLXhhdHRyIgogCiAjIENvbXBpbGUgZm9yIHRoZSBsb2NhbCBtYWNoaW5lIGFyY2guLi4KIGRvX2NvbXBpbGUgKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvXzEuOC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvXzEuOC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2VmNTcyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb18xLjguMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLXJlcXVpcmUgcHNldWRvLmluYwotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9wc2V1ZG8vJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtUHJ1bmUtUElFLWZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZhbGxiYWNrLXBhc3N3ZCBcCi0gICAgICAgICAgIGZpbGU6Ly9mYWxsYmFjay1ncm91cCBcCi0gICAgICAgICAgIGZpbGU6Ly9tb3JlcmV0cmllcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9lZmUwYmUyNzk5MDEwMDZmOTM5Y2QzNTdjY2VlNDdiNjUxYzc4NmRhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2I2YjY4ZGI4OTZmOTk2MzU1ODMzNGFmZjdmY2E2MWFkZGU0ZWMxMGYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZmFzdG9wcmVwbHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdG9vbWFueWZpbGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLWVwb2xsLUFQSS1vbi1MaW51eC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdkNDFlNzIxODhmYmVhMWY2OTZjMzk5YzFhNDM1Njc1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNlYjQ1NmJkNDc3NzBhMzdjYTIwNzg0YTkxZDcxNWM1YTc2MDFlMDdlMjZhYjExYjBjNzdlOTIwM2VkM2QxOTYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvX2dpdC5iYgppbmRleCA0MmM3YjJlLi45MTAzZDQ5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb19naXQuYmIKQEAgLTEsMTUgKzEsMTQgQEAKIHJlcXVpcmUgcHNldWRvLmluYwogCi1TUkNSRVYgPSAiMDIxNjgzMDViMGExOWY5ODFmZmU4NTdmMzZlYjI1NmJhODgxMGI3NyIKLVBWID0gIjEuOC4yK2dpdCR7U1JDUFZ9IgotCi1ERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCi0KIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcHNldWRvIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLVBydW5lLVBJRS1mbGFncy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9mYWxsYmFjay1wYXNzd2QgXAogICAgICAgICAgICBmaWxlOi8vZmFsbGJhY2stZ3JvdXAgXAotICAgICAgICAgICBmaWxlOi8vbW9yZXJldHJpZXMucGF0Y2giCisgICAgICAgICAgIGZpbGU6Ly9tb3JlcmV0cmllcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly90b29tYW55ZmlsZXMucGF0Y2ggXAorICAgICAgICAgICAiCiAKK1NSQ1JFViA9ICJmZGRiZTg1NGM5ZGIwNThkNWEwNTgzMGQzYmNkZDQyMzNkOTVlZTJlIgogUyA9ICIke1dPUktESVJ9L2dpdCIKK1BWID0gIjEuOS4wK2dpdCR7U1JDUFZ9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLUJVRy1maXgtaW5maW5pdGUtbG9vcC13aGVuLWNyZWF0aW5nLW5wLnBhZC1vbi1hbi1lbXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLUJVRy1maXgtaW5maW5pdGUtbG9vcC13aGVuLWNyZWF0aW5nLW5wLnBhZC1vbi1hbi1lbXAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ZTU4NTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1CVUctZml4LWluZmluaXRlLWxvb3Atd2hlbi1jcmVhdGluZy1ucC5wYWQtb24tYW4tZW1wLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSA0MTcwYjk4ZTBkNTg2NGVmNGRiMWM1NzA0YTZlOTQyOGMzYmU5ZmI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSXJ5bmEgU2hjaGVyYmluYSA8aXNoY2hlcmJAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgMjQgQXVnIDIwMTcgMTg6MDE6NDMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gQlVHOiBmaXggaW5maW5pdGUgbG9vcCB3aGVuIGNyZWF0aW5nIG5wLnBhZCBvbiBhbiBlbXB0eSBhcnJheQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbnVtcHkvbnVtcHkvcHVsbC85NTk5L2NvbW1pdHMvNmY5ZWEwYWJiZDMwNWQ1M2Y5MDE3ZGViYWIzYTNhNTkxZmUwZTI0OV0KLUNWRTogQ1ZFLTIwMTctMTI4NTIKLVNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBudW1weS9saWIvYXJyYXlwYWQucHkgICAgICAgICAgICB8IDMgKysrCi0gbnVtcHkvbGliL3Rlc3RzL3Rlc3RfYXJyYXlwYWQucHkgfCA0ICsrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbnVtcHkvbGliL2FycmF5cGFkLnB5IGIvbnVtcHkvbGliL2FycmF5cGFkLnB5Ci1pbmRleCAyZGFkOTljLi4yOTRhNjg5IDEwMDY0NAotLS0tIGEvbnVtcHkvbGliL2FycmF5cGFkLnB5Ci0rKysgYi9udW1weS9saWIvYXJyYXlwYWQucHkKLUBAIC0xNDA2LDYgKzE0MDYsOSBAQCBkZWYgcGFkKGFycmF5LCBwYWRfd2lkdGgsIG1vZGUsICoqa3dhcmdzKToKLSAgICAgICAgICAgICBuZXdtYXQgPSBfYXBwZW5kX21pbihuZXdtYXQsIHBhZF9hZnRlciwgY2h1bmtfYWZ0ZXIsIGF4aXMpCi0gCi0gICAgIGVsaWYgbW9kZSA9PSAncmVmbGVjdCc6Ci0rICAgICAgICBpZiBuYXJyYXkuc2l6ZSA9PSAwOgotKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlRoZXJlIGFyZW4ndCBhbnkgZWxlbWVudHMgdG8gcmVmbGVjdCBpbiBgYXJyYXlgIikKLSsKLSAgICAgICAgIGZvciBheGlzLCAocGFkX2JlZm9yZSwgcGFkX2FmdGVyKSBpbiBlbnVtZXJhdGUocGFkX3dpZHRoKToKLSAgICAgICAgICAgICAjIFJlY3Vyc2l2ZSBwYWRkaW5nIGFsb25nIGFueSBheGlzIHdoZXJlIGBwYWRfYW10YCBpcyB0b28gbGFyZ2UKLSAgICAgICAgICAgICAjIGZvciBpbmRleGluZyB0cmlja3MuIFdlIGNhbiBvbmx5IHNhZmVseSBwYWQgdGhlIG9yaWdpbmFsIGF4aXMKLWRpZmYgLS1naXQgYS9udW1weS9saWIvdGVzdHMvdGVzdF9hcnJheXBhZC5weSBiL251bXB5L2xpYi90ZXN0cy90ZXN0X2FycmF5cGFkLnB5Ci1pbmRleCAwNTZhYTQ1Li4wZjcxZDMyIDEwMDY0NAotLS0tIGEvbnVtcHkvbGliL3Rlc3RzL3Rlc3RfYXJyYXlwYWQucHkKLSsrKyBiL251bXB5L2xpYi90ZXN0cy90ZXN0X2FycmF5cGFkLnB5Ci1AQCAtMTAxNCw2ICsxMDE0LDEwIEBAIGNsYXNzIFZhbHVlRXJyb3IxKFRlc3RDYXNlKToKLSAgICAgICAgIGFzc2VydF9yYWlzZXMoVmFsdWVFcnJvciwgcGFkLCBhcnIsICgoLTIsIDMpLCAoMywgMikpLAotICAgICAgICAgICAgICAgICAgICAgICAqKmt3YXJncykKLSAKLSsgICAgZGVmIHRlc3RfY2hlY2tfZW1wdHlfYXJyYXkoc2VsZik6Ci0rICAgICAgICBhc3NlcnRfcmFpc2VzKFZhbHVlRXJyb3IsIHBhZCwgW10sIDQsIG1vZGU9J3JlZmxlY3QnKQotKyAgICAgICAgYXNzZXJ0X3JhaXNlcyhWYWx1ZUVycm9yLCBwYWQsIG5wLm5kYXJyYXkoMCksIDQsIG1vZGU9J3JlZmxlY3QnKQotKwotIAotIGNsYXNzIFZhbHVlRXJyb3IyKFRlc3RDYXNlKToKLSAgICAgZGVmIHRlc3RfY2hlY2tfbmVnYXRpdmVfcGFkX2Ftb3VudChzZWxmKToKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoCmluZGV4IGZmZDZjZWQuLjUxNmNjZDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtRG9uLXQtc2VhcmNoLXVzci1hbmQtc28tb24tZm9yLWxpYnJhcmllcy1ieS1kZWZhdWx0LS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLURvbi10LXNlYXJjaC11c3ItYW5kLXNvLW9uLWZvci1saWJyYXJpZXMtYnktZGVmYXVsdC0ucGF0Y2gKQEAgLTEsMjMgKzEsMjQgQEAKLUZyb20gY2MyY2U2ZDhiNmEzZTZlMmM4ODc0ODk2YzEwODk3MDM0YTgwY2Q0ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYzhjNjY0OWIyOWEwOGY4MmUxZDY3NjFhNmQ2MmNlNWY2MzIzMTNjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogVGh1LCAxMCBEZWMgMjAxNSAxMzoyMDozMCArMDIwMAotU3ViamVjdDogW1BBVENIXSBEb24ndCBzZWFyY2ggL3VzciBhbmQgc28gb24gZm9yIGxpYnJhcmllcyBieSBkZWZhdWx0IHRvIGF2b2lkCi0gaG9zdCBjb250YW1pbmF0aW9uLgorU3ViamVjdDogW1BBVENIIDEvM10gRG9uJ3Qgc2VhcmNoIC91c3IgYW5kIHNvIG9uIGZvciBsaWJyYXJpZXMgYnkgZGVmYXVsdCB0bworIGF2b2lkIGhvc3QgY29udGFtaW5hdGlvbi4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIChBcyB0aGUgY29kZSBzdGFuZHMsIHRoaXMgaXMgYSBoYWNrKQogU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KICBudW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkgfCA1MCArKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA0NCBkZWxldGlvbnMoLSkKIAotSW5kZXg6IG51bXB5LTEuMTMuMS9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBudW1weS0xLjEzLjEub3JpZy9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKLSsrKyBudW1weS0xLjEzLjEvbnVtcHkvZGlzdHV0aWxzL3N5c3RlbV9pbmZvLnB5Ci1AQCAtMjExLDUxICsyMTEsMTMgQEAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgIGRlZmF1bHRfeDExX2xpYl9kaXJzID0gW10KLSAgICAgZGVmYXVsdF94MTFfaW5jbHVkZV9kaXJzID0gW10KK2RpZmYgLS1naXQgYS9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkgYi9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKK2luZGV4IGJlYTEyMGMuLjU0NGUwNTYgMTAwNjQ0CistLS0gYS9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKKysrKyBiL251bXB5L2Rpc3R1dGlscy9zeXN0ZW1faW5mby5weQorQEAgLTI2Miw1MSArMjYyLDEzIEBAIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAgICAgIGFkZF9zeXN0ZW1fcm9vdChvcy5wYXRoLmpvaW4oY29uZGFfZGlyLCAnTGlicmFyeScpKQorICAgICAgICAgICAgICAgICAgICAgICAgIAogIGVsc2U6CiAtICAgIGRlZmF1bHRfbGliX2RpcnMgPSBsaWJwYXRocyhbJy91c3IvbG9jYWwvbGliJywgJy9vcHQvbGliJywgJy91c3IvbGliJywKIC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL29wdC9sb2NhbC9saWInLCAnL3N3L2xpYiddLCBwbGF0Zm9ybV9iaXRzKQpAQCAtMjksMTAgKzMwLDcgQEAKIC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9vcHQvbG9jYWwvaW5jbHVkZScsICcvc3cvaW5jbHVkZScsCiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvdXNyL2luY2x1ZGUvc3VpdGVzcGFyc2UnXQogLSAgICBkZWZhdWx0X3NyY19kaXJzID0gWycuJywgJy91c3IvbG9jYWwvc3JjJywgJy9vcHQvc3JjJywgJy9zdy9zcmMnXQotKyAgICBkZWZhdWx0X2xpYl9kaXJzID0gbGlicGF0aHMoWycvZGVhZGlyL2xpYiddLCBwbGF0Zm9ybV9iaXRzKQotKyAgICBkZWZhdWx0X2luY2x1ZGVfZGlycyA9IFsnL2RlYWRkaXIvaW5jbHVkZSddCi0rICAgIGRlZmF1bHRfc3JjX2RpcnMgPSBbJy4nLCAnL2RlYWRkaXIvc3JjJ10KLSAKKy0KIC0gICAgZGVmYXVsdF94MTFfbGliX2RpcnMgPSBsaWJwYXRocyhbJy91c3IvWDExUjYvbGliJywgJy91c3IvWDExL2xpYicsCiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvdXNyL2xpYiddLCBwbGF0Zm9ybV9iaXRzKQogLSAgICBkZWZhdWx0X3gxMV9pbmNsdWRlX2RpcnMgPSBbJy91c3IvWDExUjYvaW5jbHVkZScsICcvdXNyL1gxMS9pbmNsdWRlJywKQEAgLTY3LDggKzY1LDE1IEBACiAtICAgIGZpbmFsbHk6CiAtICAgICAgICBpZiB0bXAgaXMgbm90IE5vbmU6CiAtICAgICAgICAgICAgdG1wLmNsb3NlKCkKKysgICAgZGVmYXVsdF9saWJfZGlycyA9IGxpYnBhdGhzKFsnL2RlYWRpci9saWInXSwgcGxhdGZvcm1fYml0cykKKysgICAgZGVmYXVsdF9pbmNsdWRlX2RpcnMgPSBbJy9kZWFkZGlyL2luY2x1ZGUnXQorKyAgICBkZWZhdWx0X3NyY19kaXJzID0gWycuJywgJy9kZWFkZGlyL3NyYyddCisrCiArICAgIGRlZmF1bHRfeDExX2xpYl9kaXJzID0gbGlicGF0aHMoWycvZGVhZGRpci9saWInXSwgcGxhdGZvcm1fYml0cykKICsgICAgZGVmYXVsdF94MTFfaW5jbHVkZV9kaXJzID0gWycvZGVhZGRpci9pbmNsdWRlJ10KICAKICBpZiBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgJ2xpYicpIG5vdCBpbiBkZWZhdWx0X2xpYl9kaXJzOgogICAgICBkZWZhdWx0X2xpYl9kaXJzLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgJ2xpYicpKQorLS0gCisyLjE2LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1ucHlfY3B1LUFkZC1yaXNjdi1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1ucHlfY3B1LUFkZC1yaXNjdi1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmNWM0ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLW5weV9jcHUtQWRkLXJpc2N2LXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSAzMGZiMWJmOTI0NGJiMDc4OWMwMmVjN2M5OGE5MjNhY2M3MjAwMjA2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTYgTWFyIDIwMTggMTk6NTU6MjEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbnB5X2NwdTogQWRkIHJpc2N2IHN1cHBvcnQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9udW1weS9udW1weS9wdWxsLzEwNzYxXQorCisgbnVtcHkvY29yZS9pbmNsdWRlL251bXB5L25weV9jcHUuaCB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9udW1weS9jb3JlL2luY2x1ZGUvbnVtcHkvbnB5X2NwdS5oIGIvbnVtcHkvY29yZS9pbmNsdWRlL251bXB5L25weV9jcHUuaAoraW5kZXggODQ2NTNlYTE4Li45ZTg4ZGI4NzMgMTAwNjQ0CistLS0gYS9udW1weS9jb3JlL2luY2x1ZGUvbnVtcHkvbnB5X2NwdS5oCisrKysgYi9udW1weS9jb3JlL2luY2x1ZGUvbnVtcHkvbnB5X2NwdS5oCitAQCAtNzgsNiArNzgsOCBAQAorICAgICAjZGVmaW5lIE5QWV9DUFVfQUFSQ0g2NAorICNlbGlmIGRlZmluZWQoX19tYzY4MDAwX18pCisgICAgICNkZWZpbmUgTlBZX0NQVV9NNjhLCisrI2VsaWYgZGVmaW5lZChfX3Jpc2N2KQorKyAgICAjZGVmaW5lIE5QWV9DUFVfUklTQ1YKKyAjZWxpZiBkZWZpbmVkKF9fYXJjX18pICYmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOX18pCisgICAgICNkZWZpbmUgTlBZX0NQVV9BUkNFTAorICNlbGlmIGRlZmluZWQoX19hcmNfXykgJiYgZGVmaW5lZChfX0JJR19FTkRJQU5fXykKKy0tIAorMi4xNi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzL3JlbW92ZS1idWlsZC1wYXRoLWluLWNvbW1lbnRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvcmVtb3ZlLWJ1aWxkLXBhdGgtaW4tY29tbWVudHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViOGE3MWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvcmVtb3ZlLWJ1aWxkLXBhdGgtaW4tY29tbWVudHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIGM1NjBhYmZmNzFmOThhMzlhNzQwMWYwOGMyYzEzZGFkOWFlN2YxNWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDI1IEZlYiAyMDE2IDAxOjIzOjMyIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHJlbW92ZSBidWlsZCBwYXRoIGluIGNvbW1lbnRzCi0KLUl0IGhhcyBidWlsZCBwYXRoIGluIGNvbW1lbnRzLCBzbyByZW1vdmUgaXQuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb3BlbmVtYmVkZGVkIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBudW1weS9kaXN0dXRpbHMvbWlzY191dGlsLnB5IHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbnVtcHkvZGlzdHV0aWxzL21pc2NfdXRpbC5weSBiL251bXB5L2Rpc3R1dGlscy9taXNjX3V0aWwucHkKLWluZGV4IDM0NWU2MGYuLmRhZmIwNjggMTAwNjQ0Ci0tLS0gYS9udW1weS9kaXN0dXRpbHMvbWlzY191dGlsLnB5Ci0rKysgYi9udW1weS9kaXN0dXRpbHMvbWlzY191dGlsLnB5Ci1AQCAtMjI1NCw3ICsyMjU0LDcgQEAgZGVmIGdlbmVyYXRlX2NvbmZpZ19weSh0YXJnZXQpOgotICAgICBmcm9tIGRpc3R1dGlscy5kaXJfdXRpbCBpbXBvcnQgbWtwYXRoCi0gICAgIG1rcGF0aChvcy5wYXRoLmRpcm5hbWUodGFyZ2V0KSkKLSAgICAgZiA9IG9wZW4odGFyZ2V0LCAndycpCi0tICAgIGYud3JpdGUoJyMgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSAlc1xuJyAlIChvcy5wYXRoLmFic3BhdGgoc3lzLmFyZ3ZbMF0pKSkKLSsgICAgZi53cml0ZSgnIyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5ICVzXG4nICUgKG9zLnBhdGguYWJzcGF0aChzeXMuYXJndlswXSkucmVwbGFjZShvcy5wYXRoLmFic3BhdGgoJy4uLycpLCcnKSkpCi0gICAgIGYud3JpdGUoJyMgSXQgY29udGFpbnMgc3lzdGVtX2luZm8gcmVzdWx0cyBhdCB0aGUgdGltZSBvZiBidWlsZGluZyB0aGlzIHBhY2thZ2UuXG4nKQotICAgICBmLndyaXRlKCdfX2FsbF9fID0gWyJnZXRfaW5mbyIsInNob3ciXVxuXG4nKQotICAgICBmb3IgaywgaSBpbiBzeXN0ZW1faW5mby5zYXZlZF9yZXN1bHRzLml0ZW1zKCk6Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzL3Jpc2N2NjQvX251bXB5Y29uZmlnLmggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9yaXNjdjY0L19udW1weWNvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwOWRlYjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9yaXNjdjY0L19udW1weWNvbmZpZy5oCkBAIC0wLDAgKzEsMzIgQEAKKyNkZWZpbmUgTlBZX0hBVkVfRU5ESUFOX0ggMQorI2RlZmluZSBOUFlfU0laRU9GX1NIT1JUIFNJWkVPRl9TSE9SVAorI2RlZmluZSBOUFlfU0laRU9GX0lOVCBTSVpFT0ZfSU5UCisjZGVmaW5lIE5QWV9TSVpFT0ZfTE9ORyBTSVpFT0ZfTE9ORworI2RlZmluZSBOUFlfU0laRU9GX0ZMT0FUIDQKKyNkZWZpbmUgTlBZX1NJWkVPRl9DT01QTEVYX0ZMT0FUIDgKKyNkZWZpbmUgTlBZX1NJWkVPRl9ET1VCTEUgOAorI2RlZmluZSBOUFlfU0laRU9GX0NPTVBMRVhfRE9VQkxFIDE2CisjZGVmaW5lIE5QWV9TSVpFT0ZfTE9OR0RPVUJMRSAxNgorI2RlZmluZSBOUFlfU0laRU9GX0NPTVBMRVhfTE9OR0RPVUJMRSAzMgorI2RlZmluZSBOUFlfU0laRU9GX1BZX0lOVFBUUl9UIDgKKyNkZWZpbmUgTlBZX1NJWkVPRl9QWV9MT05HX0xPTkcgOAorI2RlZmluZSBOUFlfU0laRU9GX0xPTkdMT05HIDgKKyNkZWZpbmUgTlBZX1NJWkVPRl9PRkZfVCA4CisjZGVmaW5lIE5QWV9OT19TTVAgMAorI2RlZmluZSBOUFlfSEFWRV9ERUNMX0lTTkFOCisjZGVmaW5lIE5QWV9IQVZFX0RFQ0xfSVNJTkYKKyNkZWZpbmUgTlBZX0hBVkVfREVDTF9JU0ZJTklURQorI2RlZmluZSBOUFlfSEFWRV9ERUNMX1NJR05CSVQKKyNkZWZpbmUgTlBZX1VTRV9DOTlfQ09NUExFWCAxCisjZGVmaW5lIE5QWV9IQVZFX0NPTVBMRVhfRE9VQkxFIDEKKyNkZWZpbmUgTlBZX0hBVkVfQ09NUExFWF9GTE9BVCAxCisjZGVmaW5lIE5QWV9IQVZFX0NPTVBMRVhfTE9OR19ET1VCTEUgMQorI2RlZmluZSBOUFlfRU5BQkxFX1NFUEFSQVRFX0NPTVBJTEFUSU9OIDEKKyNkZWZpbmUgTlBZX1VTRV9DOTlfRk9STUFUUyAxCisjZGVmaW5lIE5QWV9WSVNJQklMSVRZX0hJRERFTiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpCisjZGVmaW5lIE5QWV9BQklfVkVSU0lPTiAweDAxMDAwMDA5CisjZGVmaW5lIE5QWV9BUElfVkVSU0lPTiAweDAwMDAwMDBBCisKKyNpZm5kZWYgX19TVERDX0ZPUk1BVF9NQUNST1MKKyNkZWZpbmUgX19TVERDX0ZPUk1BVF9NQUNST1MgMQorI2VuZGlmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9yaXNjdjY0L2NvbmZpZy5oIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvcmlzY3Y2NC9jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzBiODY4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvcmlzY3Y2NC9jb25maWcuaApAQCAtMCwwICsxLDEzOSBAQAorI2RlZmluZSBIQVZFX0VORElBTl9IIDEKKyNkZWZpbmUgU0laRU9GX1BZX0lOVFBUUl9UIDgKKyNkZWZpbmUgU0laRU9GX1BZX0xPTkdfTE9ORyA4CisjZGVmaW5lIE1BVEhMSUIgbQorI2RlZmluZSBIQVZFX1NJTiAxCisjZGVmaW5lIEhBVkVfQ09TIDEKKyNkZWZpbmUgSEFWRV9UQU4gMQorI2RlZmluZSBIQVZFX1NJTkggMQorI2RlZmluZSBIQVZFX0NPU0ggMQorI2RlZmluZSBIQVZFX1RBTkggMQorI2RlZmluZSBIQVZFX0ZBQlMgMQorI2RlZmluZSBIQVZFX0ZMT09SIDEKKyNkZWZpbmUgSEFWRV9DRUlMIDEKKyNkZWZpbmUgSEFWRV9TUVJUIDEKKyNkZWZpbmUgSEFWRV9MT0cxMCAxCisjZGVmaW5lIEhBVkVfTE9HIDEKKyNkZWZpbmUgSEFWRV9FWFAgMQorI2RlZmluZSBIQVZFX0FTSU4gMQorI2RlZmluZSBIQVZFX0FDT1MgMQorI2RlZmluZSBIQVZFX0FUQU4gMQorI2RlZmluZSBIQVZFX0ZNT0QgMQorI2RlZmluZSBIQVZFX01PREYgMQorI2RlZmluZSBIQVZFX0ZSRVhQIDEKKyNkZWZpbmUgSEFWRV9MREVYUCAxCisjZGVmaW5lIEhBVkVfUklOVCAxCisjZGVmaW5lIEhBVkVfVFJVTkMgMQorI2RlZmluZSBIQVZFX0VYUDIgMQorI2RlZmluZSBIQVZFX0xPRzIgMQorI2RlZmluZSBIQVZFX0FUQU4yIDEKKyNkZWZpbmUgSEFWRV9QT1cgMQorI2RlZmluZSBIQVZFX05FWFRBRlRFUiAxCisjZGVmaW5lIEhBVkVfU0lORiAxCisjZGVmaW5lIEhBVkVfQ09TRiAxCisjZGVmaW5lIEhBVkVfVEFORiAxCisjZGVmaW5lIEhBVkVfU0lOSEYgMQorI2RlZmluZSBIQVZFX0NPU0hGIDEKKyNkZWZpbmUgSEFWRV9UQU5IRiAxCisjZGVmaW5lIEhBVkVfRkFCU0YgMQorI2RlZmluZSBIQVZFX0ZMT09SRiAxCisjZGVmaW5lIEhBVkVfQ0VJTEYgMQorI2RlZmluZSBIQVZFX1JJTlRGIDEKKyNkZWZpbmUgSEFWRV9UUlVOQ0YgMQorI2RlZmluZSBIQVZFX1NRUlRGIDEKKyNkZWZpbmUgSEFWRV9MT0cxMEYgMQorI2RlZmluZSBIQVZFX0xPR0YgMQorI2RlZmluZSBIQVZFX0xPRzFQRiAxCisjZGVmaW5lIEhBVkVfRVhQRiAxCisjZGVmaW5lIEhBVkVfRVhQTTFGIDEKKyNkZWZpbmUgSEFWRV9BU0lORiAxCisjZGVmaW5lIEhBVkVfQUNPU0YgMQorI2RlZmluZSBIQVZFX0FUQU5GIDEKKyNkZWZpbmUgSEFWRV9BU0lOSEYgMQorI2RlZmluZSBIQVZFX0FDT1NIRiAxCisjZGVmaW5lIEhBVkVfQVRBTkhGIDEKKyNkZWZpbmUgSEFWRV9IWVBPVEYgMQorI2RlZmluZSBIQVZFX0FUQU4yRiAxCisjZGVmaW5lIEhBVkVfUE9XRiAxCisjZGVmaW5lIEhBVkVfRk1PREYgMQorI2RlZmluZSBIQVZFX01PREZGIDEKKyNkZWZpbmUgSEFWRV9GUkVYUEYgMQorI2RlZmluZSBIQVZFX0xERVhQRiAxCisjZGVmaW5lIEhBVkVfRVhQMkYgMQorI2RlZmluZSBIQVZFX0xPRzJGIDEKKyNkZWZpbmUgSEFWRV9DT1BZU0lHTkYgMQorI2RlZmluZSBIQVZFX05FWFRBRlRFUkYgMQorI2RlZmluZSBIQVZFX1NJTkwgMQorI2RlZmluZSBIQVZFX0NPU0wgMQorI2RlZmluZSBIQVZFX1RBTkwgMQorI2RlZmluZSBIQVZFX1NJTkhMIDEKKyNkZWZpbmUgSEFWRV9DT1NITCAxCisjZGVmaW5lIEhBVkVfVEFOSEwgMQorI2RlZmluZSBIQVZFX0ZBQlNMIDEKKyNkZWZpbmUgSEFWRV9GTE9PUkwgMQorI2RlZmluZSBIQVZFX0NFSUxMIDEKKyNkZWZpbmUgSEFWRV9SSU5UTCAxCisjZGVmaW5lIEhBVkVfVFJVTkNMIDEKKyNkZWZpbmUgSEFWRV9TUVJUTCAxCisjZGVmaW5lIEhBVkVfTE9HMTBMIDEKKyNkZWZpbmUgSEFWRV9MT0dMIDEKKyNkZWZpbmUgSEFWRV9MT0cxUEwgMQorI2RlZmluZSBIQVZFX0VYUEwgMQorI2RlZmluZSBIQVZFX0VYUE0xTCAxCisjZGVmaW5lIEhBVkVfQVNJTkwgMQorI2RlZmluZSBIQVZFX0FDT1NMIDEKKyNkZWZpbmUgSEFWRV9BVEFOTCAxCisjZGVmaW5lIEhBVkVfQVNJTkhMIDEKKyNkZWZpbmUgSEFWRV9BQ09TSEwgMQorI2RlZmluZSBIQVZFX0FUQU5ITCAxCisjZGVmaW5lIEhBVkVfSFlQT1RMIDEKKyNkZWZpbmUgSEFWRV9BVEFOMkwgMQorI2RlZmluZSBIQVZFX1BPV0wgMQorI2RlZmluZSBIQVZFX0ZNT0RMIDEKKyNkZWZpbmUgSEFWRV9NT0RGTCAxCisjZGVmaW5lIEhBVkVfRlJFWFBMIDEKKyNkZWZpbmUgSEFWRV9MREVYUEwgMQorI2RlZmluZSBIQVZFX0VYUDJMIDEKKyNkZWZpbmUgSEFWRV9MT0cyTCAxCisjZGVmaW5lIEhBVkVfQ09QWVNJR05MIDEKKyNkZWZpbmUgSEFWRV9ORVhUQUZURVJMIDEKKyNkZWZpbmUgSEFWRV9ERUNMX1NJR05CSVQKKyNkZWZpbmUgSEFWRV9DT01QTEVYX0ggMQorI2RlZmluZSBIQVZFX0NSRUFMIDEKKyNkZWZpbmUgSEFWRV9DSU1BRyAxCisjZGVmaW5lIEhBVkVfQ0FCUyAxCisjZGVmaW5lIEhBVkVfQ0FSRyAxCisjZGVmaW5lIEhBVkVfQ0VYUCAxCisjZGVmaW5lIEhBVkVfQ1NRUlQgMQorI2RlZmluZSBIQVZFX0NMT0cgMQorI2RlZmluZSBIQVZFX0NDT1MgMQorI2RlZmluZSBIQVZFX0NTSU4gMQorI2RlZmluZSBIQVZFX0NQT1cgMQorI2RlZmluZSBIQVZFX0NSRUFMRiAxCisjZGVmaW5lIEhBVkVfQ0lNQUdGIDEKKyNkZWZpbmUgSEFWRV9DQUJTRiAxCisjZGVmaW5lIEhBVkVfQ0FSR0YgMQorI2RlZmluZSBIQVZFX0NFWFBGIDEKKyNkZWZpbmUgSEFWRV9DU1FSVEYgMQorI2RlZmluZSBIQVZFX0NMT0dGIDEKKyNkZWZpbmUgSEFWRV9DQ09TRiAxCisjZGVmaW5lIEhBVkVfQ1NJTkYgMQorI2RlZmluZSBIQVZFX0NQT1dGIDEKKyNkZWZpbmUgSEFWRV9DUkVBTEwgMQorI2RlZmluZSBIQVZFX0NJTUFHTCAxCisjZGVmaW5lIEhBVkVfQ0FCU0wgMQorI2RlZmluZSBIQVZFX0NBUkdMIDEKKyNkZWZpbmUgSEFWRV9DRVhQTCAxCisjZGVmaW5lIEhBVkVfQ1NRUlRMIDEKKyNkZWZpbmUgSEFWRV9DTE9HTCAxCisjZGVmaW5lIEhBVkVfQ0NPU0wgMQorI2RlZmluZSBIQVZFX0NTSU5MIDEKKyNkZWZpbmUgSEFWRV9DUE9XTCAxCisjZGVmaW5lIEhBVkVfTERPVUJMRV9JRUVFX1FVQURfTEUgMQorI2lmbmRlZiBfX2NwbHVzcGx1cworLyogI3VuZGVmIGlubGluZSAqLworI2VuZGlmCisKKyNpZm5kZWYgX05QWV9OUFlfQ09ORklHX0hfCisjZXJyb3IgY29uZmlnLmggc2hvdWxkIG5ldmVyIGJlIGluY2x1ZGVkIGRpcmVjdGx5LCBpbmNsdWRlIG5weV9jb25maWcuaCBpbnN0ZWFkCisjZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHkuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4NGYyMTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHkuaW5jCkBAIC0wLDAgKzEsMTE0IEBACitTVU1NQVJZID0gIkEgc29waGlzdGljYXRlZCBOdW1lcmljIFByb2Nlc3NpbmcgUGFja2FnZSBmb3IgUHl0aG9uIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSAmIEJTRC0yLUNsYXVzZSAmIFBTRiAmIEFwYWNoZS0yLjAgJiBCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZmM1M2IzMzMwNDE3MWQxMzIxMjhlYmU4MmVhNGE2NDUiCisKK1NSQ05BTUUgPSAibnVtcHkiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9zaGViYW5nX2YycHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1ucHlfY3B1LUFkZC1yaXNjdi1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgJHtDT05GSUdGSUxFU1VSSX0gIgorU1JDX1VSSVttZDVzdW1dID0gImUzOTg3OGZhZmIxMTgyODk4M2FlZWM1ODNkZGE0YTA2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRkYmNkYTE5NGY0OWUwY2YwNjYzZmE4MTMxY2I5ZDdhM2I4NzZkMTRkZWEwMDQ3ZDNjNWZkZmFmMjBhZGJiNDAiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbnVtcHkvbnVtcHkvcmVsZWFzZXMiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKKworQ09ORklHRklMRVNVUkkgPz0gIiIKKworQ09ORklHRklMRVNVUklfYWFyY2g2NCA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX2FybSA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfYXJtZWIgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX21pcHNhcmNobzMyZWwgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX3g4NiA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfeDg2LTY0ID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfbWlwc2FyY2hvMzJlYiA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX3Bvd2VycGMgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9wb3dlcnBjNjQgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9taXBzYXJjaG42NGViID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfbWlwc2FyY2huNjRlbCA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX21pcHNhcmNobjMyZWIgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9taXBzYXJjaG4zMmVsID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfcmlzY3Y2NCA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKKworUyA9ICIke1dPUktESVJ9L251bXB5LSR7UFZ9IgorCisjIE1ha2UgdGhlIGJ1aWxkIGZhaWwgYW5kIHJlcGxhY2UgKmNvbmZpZy5oIHdpdGggcHJvcGVyIG9uZQorIyBUaGlzIGlzIGEgdWdseSwgdWdseSBoYWNrIC0gS29lbgorZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gc2V0dXAucHkgYnVpbGQgJHtESVNUVVRJTFNfQlVJTERfQVJHU30gfHwgXAorICAgIHRydWUKKyAgICBjcCAke1dPUktESVJ9Lypjb25maWcuaCAke1N9L2J1aWxkLyQobHMgJHtTfS9idWlsZCB8IGdyZXAgc3JjKS9udW1weS9jb3JlL2luY2x1ZGUvbnVtcHkvCit9CisKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vbnVtcHkvY29yZS9saWIvKi5hIgorCisjIGluc3RhbGwgd2hhdCBpcyBuZWVkZWQgZm9yIG51bXB5LnRlc3QoKQorUkRFUEVORFNfJHtQTn0gPSAiJHtQWVRIT05fUE59LXVuaXR0ZXN0IFwKKyAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1kaWZmbGliIFwKKyAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1wcHJpbnQgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXBpY2tsZSBcCisgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW5vc2UgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWRvY3Rlc3QgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKKyAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1kaXN0dXRpbHMgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW1pc2MgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW1tYXAgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCisgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCisgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tcHlkb2MgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXBrZ3V0aWwgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWVtYWlsIFwKKyAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1jb21wcmVzc2lvbiBcCisgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tY3R5cGVzIFwKKyAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorIgorCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHlfMS4xMy4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5XzEuMTMuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTNlOGY0Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHlfMS4xMy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBzb3BoaXN0aWNhdGVkIE51bWVyaWMgUHJvY2Vzc2luZyBQYWNrYWdlIGZvciBQeXRob24iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTEwMDJiMDljZDY1NGZjYWEyZGNjODc1MzVhY2Q5YTk2IgotCi1TUkNOQU1FID0gIm51bXB5IgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke1NSQ05BTUV9LyR7U1JDTkFNRX0vcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9LyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtc2VhcmNoLXVzci1hbmQtc28tb24tZm9yLWxpYnJhcmllcy1ieS1kZWZhdWx0LS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtYnVpbGQtcGF0aC1pbi1jb21tZW50cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfc2hlYmFuZ19mMnB5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQlVHLWZpeC1pbmZpbml0ZS1sb29wLXdoZW4tY3JlYXRpbmctbnAucGFkLW9uLWFuLWVtcC5wYXRjaCBcCi0gICAgICAgICAgICR7Q09ORklHRklMRVNVUkl9ICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjZkNDU5ZTRhMjRmNTAzNWY3MjBkZGEzYzU3NzE2YTkyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRlMDIwZWMwNmYxZTljZTExMTVhNTAxNjFhMzhiZjhkNGMyNTI1Mzc5OTAwZjljYjQ3OGNjNjEzYTFlN2NkOTMiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbnVtcHkvbnVtcHkvcmVsZWFzZXMiCi0KLUNPTkZJR0ZJTEVTVVJJID89ICIiCi0KLUNPTkZJR0ZJTEVTVVJJX2FhcmNoNjQgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9hcm0gPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX2FybWViID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9taXBzYXJjaG8zMmVsID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV94ODYgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX3g4Ni02NCA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX21pcHNhcmNobzMyZWIgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9wb3dlcnBjID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfcG93ZXJwYzY0ID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwc2FyY2huNjRlYiA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX21pcHNhcmNobjY0ZWwgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9taXBzYXJjaG4zMmViID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwc2FyY2huMzJlbCA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L251bXB5LSR7UFZ9IgotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotIyBNYWtlIHRoZSBidWlsZCBmYWlsIGFuZCByZXBsYWNlICpjb25maWcuaCB3aXRoIHByb3BlciBvbmUKLSMgVGhpcyBpcyBhIHVnbHksIHVnbHkgaGFjayAtIEtvZW4KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIHNldHVwLnB5IGJ1aWxkICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9IHx8IFwKLSAgICB0cnVlCi0gICAgY3AgJHtXT1JLRElSfS8qY29uZmlnLmggJHtTfS9idWlsZC8kKGxzICR7U30vYnVpbGQgfCBncmVwIHNyYykvbnVtcHkvY29yZS9pbmNsdWRlL251bXB5LwotfQotCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L251bXB5L2NvcmUvbGliLyouYSIKLQotIyBpbnN0YWxsIHdoYXQgaXMgbmVlZGVkIGZvciBudW1weS50ZXN0KCkKLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbi11bml0dGVzdCBcCi0gICAgICAgICAgICAgICAgICBweXRob24tZGlmZmxpYiBcCi0gICAgICAgICAgICAgICAgICBweXRob24tcHByaW50IFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1waWNrbGUgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXNoZWxsIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1ub3NlIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1kb2N0ZXN0IFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1kYXRldGltZSBcCi0gICAgICAgICAgICAgICAgICBweXRob24tZGlzdHV0aWxzIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1taXNjIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1tbWFwIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1uZXRjbGllbnQgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLW51bWJlcnMgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXB5ZG9jIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1wa2d1dGlsIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1lbWFpbCBcCi0gICAgICAgICAgICAgICAgICBweXRob24tc3VicHJvY2VzcyBcCi0gICAgICAgICAgICAgICAgICBweXRob24tY29tcHJlc3Npb24gXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLWN0eXBlcyBcCi0gICAgICAgICAgICAgICAgICBweXRob24tdGhyZWFkaW5nIFwKLSIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5XzEuMTQuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weV8xLjE0LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTAxMzc4OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weV8xLjE0LjIuYmIKQEAgLTAsMCArMSw2IEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLW51bXB5LmluYworCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXRfYXBwZW5kID0gIiBcCisgICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uMy1udW1weV8xLjEzLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTMuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjk4NzRiOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTMuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi1TVU1NQVJZID0gIkEgc29waGlzdGljYXRlZCBOdW1lcmljIFByb2Nlc3NpbmcgUGFja2FnZSBmb3IgUHl0aG9uIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0xMDAyYjA5Y2Q2NTRmY2FhMmRjYzg3NTM1YWNkOWE5NiIKLQotU1JDTkFNRSA9ICJudW1weSIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtTUkNOQU1FfS8ke1NSQ05BTUV9L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXNlYXJjaC11c3ItYW5kLXNvLW9uLWZvci1saWJyYXJpZXMtYnktZGVmYXVsdC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWJ1aWxkLXBhdGgtaW4tY29tbWVudHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4X3NoZWJhbmdfZjJweS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUJVRy1maXgtaW5maW5pdGUtbG9vcC13aGVuLWNyZWF0aW5nLW5wLnBhZC1vbi1hbi1lbXAucGF0Y2ggXAotICAgICAgICAgICAke0NPTkZJR0ZJTEVTVVJJfSAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNmQ0NTllNGEyNGY1MDM1ZjcyMGRkYTNjNTc3MTZhOTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGUwMjBlYzA2ZjFlOWNlMTExNWE1MDE2MWEzOGJmOGQ0YzI1MjUzNzk5MDBmOWNiNDc4Y2M2MTNhMWU3Y2Q5MyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9udW1weS9udW1weS9yZWxlYXNlcyIKLQotQ09ORklHRklMRVNVUkkgPz0gIiIKLQotQ09ORklHRklMRVNVUklfYWFyY2g2NCA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX2FybSA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfYXJtZWIgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX21pcHNhcmNobzMyZWwgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX3g4NiA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfeDg2LTY0ID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwc2FyY2hvMzJlYiA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX3Bvd2VycGMgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9wb3dlcnBjNjQgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9taXBzYXJjaG42NGViID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwc2FyY2huNjRlbCA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX21pcHNhcmNobjMyZWIgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9taXBzYXJjaG4zMmVsID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotCi1TID0gIiR7V09SS0RJUn0vbnVtcHktJHtQVn0iCi0KLWluaGVyaXQgc2V0dXB0b29sczMKLQotIyBNYWtlIHRoZSBidWlsZCBmYWlsIGFuZCByZXBsYWNlICpjb25maWcuaCB3aXRoIHByb3BlciBvbmUKLSMgVGhpcyBpcyBhIHVnbHksIHVnbHkgaGFjayAtIEtvZW4KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgc2V0dXAucHkgYnVpbGQgJHtESVNUVVRJTFNfQlVJTERfQVJHU30gfHwgXAotICAgIHRydWUKLSAgICBjcCAke1dPUktESVJ9Lypjb25maWcuaCAke1N9L2J1aWxkLyQobHMgJHtTfS9idWlsZCB8IGdyZXAgc3JjKS9udW1weS9jb3JlL2luY2x1ZGUvbnVtcHkvCi19Ci0KLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vbnVtcHkvY29yZS9saWIvKi5hIgotCi0jIGluc3RhbGwgd2hhdCBpcyBuZWVkZWQgZm9yIG51bXB5LnRlc3QoKQotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy11bml0dGVzdCBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLWRpZmZsaWIgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1wcHJpbnQgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1waWNrbGUgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1zaGVsbCBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLW5vc2UgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1kb2N0ZXN0IFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtZGF0ZXRpbWUgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1kaXN0dXRpbHMgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1taXNjIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtbW1hcCBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLW5ldGNsaWVudCBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLW51bWJlcnMgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1weWRvYyBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLXBrZ3V0aWwgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1lbWFpbCBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLXN1YnByb2Nlc3MgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1jb21wcmVzc2lvbiBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLWN0eXBlcyBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLXRocmVhZGluZyBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLXRleHR1dGlscyBcCi0iCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbjMtbnVtcHlfMS4xNC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uMy1udW1weV8xLjE0LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE1ZTZmOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbjMtbnVtcHlfMS4xNC4yLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tbnVtcHkuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tMi43LW1hbmlmZXN0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi0yLjctbWFuaWZlc3QuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2Q0ODM0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi0yLjctbWFuaWZlc3QuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjg3ICswLDAgQEAKLQotIyBXQVJOSU5HOiBUaGlzIGZpbGUgaXMgQVVUTyBHRU5FUkFURUQ6IE1hbnVhbCBlZGl0cyB3aWxsIGJlIGxvc3QgbmV4dCB0aW1lIEkgcmVnZW5lcmF0ZSB0aGUgZmlsZS4KLSMgR2VuZXJhdG9yOiAnLi4vLi4vLi4vc2NyaXB0cy9jb250cmliL3B5dGhvbi9nZW5lcmF0ZS1tYW5pZmVzdC0yLjcucHknIFZlcnNpb24gMjAxMTAyMjIuMiAoQykgMjAwMi0yMDEwIE1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1sYXVlckB2YW5pbGxlLW1lZGlhLmRlPgotCi0gCi0KLVBST1ZJREVTKz0iJHtQTn0tMnRvMyAke1BOfS1hcmdwYXJzZSAke1BOfS1hdWRpbyAke1BOfS1ic2RkYiAke1BOfS1jb2RlY3MgJHtQTn0tY29tcGlsZSAke1BOfS1jb21waWxlciAke1BOfS1jb21wcmVzc2lvbiAke1BOfS1jb250ZXh0bGliICR7UE59LWNvcmUgJHtQTn0tY3J5cHQgJHtQTn0tY3R5cGVzICR7UE59LWN1cnNlcyAke1BOfS1kYXRldGltZSAke1BOfS1kYiAke1BOfS1kZWJ1Z2dlciAke1BOfS1kZXYgJHtQTn0tZGlmZmxpYiAke1BOfS1kaXN0dXRpbHMgJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2RldiAke1BOfS1kb2N0ZXN0ICR7UE59LWVtYWlsICR7UE59LWZjbnRsICR7UE59LWdkYm0gJHtQTn0taG90c2hvdCAke1BOfS1odG1sICR7UE59LWlkbGUgJHtQTn0taW1hZ2UgJHtQTn0taW1wb3J0bGliICR7UE59LWlvICR7UE59LWpzb24gJHtQTn0tbGFuZyAke1BOfS1sb2dnaW5nICR7UE59LW1haWxib3ggJHtQTn0tbWF0aCAke1BOfS1taW1lICR7UE59LW1tYXAgJHtQTn0tbXVsdGlwcm9jZXNzaW5nICR7UE59LW5ldGNsaWVudCAke1BOfS1uZXRzZXJ2ZXIgJHtQTn0tbnVtYmVycyAke1BOfS1waWNrbGUgJHtQTn0tcGtndXRpbCAke1BOfS1wbGlzdGxpYiAke1BOfS1wcHJpbnQgJHtQTn0tcHJvZmlsZSAke1BOfS1weWRvYyAke1BOfS1yZSAke1BOfS1yZWFkbGluZSAke1BOfS1yZXNvdXJjZSAke1BOfS1yb2JvdHBhcnNlciAke1BOfS1zaGVsbCAke1BOfS1zbXRwZCAke1BOfS1zcWxpdGUzICR7UE59LXNxbGl0ZTMtdGVzdHMgJHtQTn0tc3RyaW5nb2xkICR7UE59LXN1YnByb2Nlc3MgJHtQTn0tc3lzbG9nICR7UE59LXRlcm1pbmFsICR7UE59LXRlc3RzICR7UE59LXRleHR1dGlscyAke1BOfS10aHJlYWRpbmcgJHtQTn0tdGtpbnRlciAke1BOfS11bml0dGVzdCAke1BOfS11bml4YWRtaW4gJHtQTn0teG1sICR7UE59LXhtbHJwYyAke1BOfS16bGliICIKLQotUEFDS0FHRVM9IiR7UE59LWRiZyAke1BOfS0ydG8zICR7UE59LWFyZ3BhcnNlICR7UE59LWF1ZGlvICR7UE59LWJzZGRiICR7UE59LWNvZGVjcyAke1BOfS1jb21waWxlICR7UE59LWNvbXBpbGVyICR7UE59LWNvbXByZXNzaW9uICR7UE59LWNvbnRleHRsaWIgJHtQTn0tY29yZSAke1BOfS1jcnlwdCAke1BOfS1jdHlwZXMgJHtQTn0tY3Vyc2VzICR7UE59LWRhdGV0aW1lICR7UE59LWRiICR7UE59LWRlYnVnZ2VyICR7UE59LWRldiAke1BOfS1kaWZmbGliICR7UE59LWRpc3R1dGlscy1zdGF0aWNkZXYgJHtQTn0tZGlzdHV0aWxzICR7UE59LWRvY3Rlc3QgJHtQTn0tZW1haWwgJHtQTn0tZmNudGwgJHtQTn0tZ2RibSAke1BOfS1ob3RzaG90ICR7UE59LWh0bWwgJHtQTn0taWRsZSAke1BOfS1pbWFnZSAke1BOfS1pbXBvcnRsaWIgJHtQTn0taW8gJHtQTn0tanNvbiAke1BOfS1sYW5nICR7UE59LWxvZ2dpbmcgJHtQTn0tbWFpbGJveCAke1BOfS1tYXRoICR7UE59LW1pbWUgJHtQTn0tbW1hcCAke1BOfS1tdWx0aXByb2Nlc3NpbmcgJHtQTn0tbmV0Y2xpZW50ICR7UE59LW5ldHNlcnZlciAke1BOfS1udW1iZXJzICR7UE59LXBpY2tsZSAke1BOfS1wa2d1dGlsICR7UE59LXBsaXN0bGliICR7UE59LXBwcmludCAke1BOfS1wcm9maWxlICR7UE59LXB5ZG9jICR7UE59LXJlICR7UE59LXJlYWRsaW5lICR7UE59LXJlc291cmNlICR7UE59LXJvYm90cGFyc2VyICR7UE59LXNoZWxsICR7UE59LXNtdHBkICR7UE59LXNxbGl0ZTMgJHtQTn0tc3FsaXRlMy10ZXN0cyAke1BOfS1zdHJpbmdvbGQgJHtQTn0tc3VicHJvY2VzcyAke1BOfS1zeXNsb2cgJHtQTn0tdGVybWluYWwgJHtQTn0tdGVzdHMgJHtQTn0tdGV4dHV0aWxzICR7UE59LXRocmVhZGluZyAke1BOfS10a2ludGVyICR7UE59LXVuaXR0ZXN0ICR7UE59LXVuaXhhZG1pbiAke1BOfS14bWwgJHtQTn0teG1scnBjICR7UE59LXpsaWIgJHtQTn0tbW9kdWxlcyIKLQotU1VNTUFSWV8ke1BOfS0ydG8zPSJQeXRob24gYXV0b21hdGVkIFB5dGhvbiAyIHRvIDMgY29kZSB0cmFuc2xhdG9yIgotUkRFUEVORFNfJHtQTn0tMnRvMz0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LTJ0bzM9IiR7YmluZGlyfS8ydG8zICR7bGliZGlyfS9weXRob24yLjcvbGliMnRvMyAiCi0KLVNVTU1BUllfJHtQTn0tYXJncGFyc2U9IlB5dGhvbiBjb21tYW5kIGxpbmUgYXJndW1lbnQgcGFyc2VyIgotUkRFUEVORFNfJHtQTn0tYXJncGFyc2U9IiR7UE59LWNvcmUgJHtQTn0tY29kZWNzICR7UE59LXRleHR1dGlscyIKLUZJTEVTXyR7UE59LWFyZ3BhcnNlPSIke2xpYmRpcn0vcHl0aG9uMi43L2FyZ3BhcnNlLiogIgotCi1TVU1NQVJZXyR7UE59LWF1ZGlvPSJQeXRob24gQXVkaW8gSGFuZGxpbmciCi1SREVQRU5EU18ke1BOfS1hdWRpbz0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWF1ZGlvPSIke2xpYmRpcn0vcHl0aG9uMi43L3dhdmUuKiAke2xpYmRpcn0vcHl0aG9uMi43L2NodW5rLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zbmRoZHIuKiAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL29zc2F1ZGlvZGV2LnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvYXVkaW9vcC5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2F1ZGlvZGV2LiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdW5hdWRpby4qICR7bGliZGlyfS9weXRob24yLjcvc3VuYXUuKiAke2xpYmRpcn0vcHl0aG9uMi43L3RvYWlmZi4qICIKLQotU1VNTUFSWV8ke1BOfS1ic2RkYj0iUHl0aG9uIGJpbmRpbmdzIGZvciB0aGUgQmVya2VsZXkgRGF0YWJhc2UiCi1SREVQRU5EU18ke1BOfS1ic2RkYj0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWJzZGRiPSIke2xpYmRpcn0vcHl0aG9uMi43L2JzZGRiICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2JzZGRiLnNvICIKLQotU1VNTUFSWV8ke1BOfS1jb2RlY3M9IlB5dGhvbiBjb2RlY3MsIGVuY29kaW5ncyAmIGkxOG4gc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LWNvZGVjcz0iJHtQTn0tY29yZSAke1BOfS1sYW5nIgotRklMRVNfJHtQTn0tY29kZWNzPSIke2xpYmRpcn0vcHl0aG9uMi43L2NvZGVjcy4qICR7bGliZGlyfS9weXRob24yLjcvZW5jb2RpbmdzICR7bGliZGlyfS9weXRob24yLjcvZ2V0dGV4dC4qICR7bGliZGlyfS9weXRob24yLjcvbG9jYWxlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fbG9jYWxlLnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2NvZGVjcyogJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fbXVsdGlieXRlY29kZWMuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC91bmljb2RlZGF0YS5zbyAke2xpYmRpcn0vcHl0aG9uMi43L3N0cmluZ3ByZXAuKiAke2xpYmRpcn0vcHl0aG9uMi43L3hkcmxpYi4qICIKLQotU1VNTUFSWV8ke1BOfS1jb21waWxlPSJQeXRob24gYnl0ZWNvZGUgY29tcGlsYXRpb24gc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LWNvbXBpbGU9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1jb21waWxlPSIke2xpYmRpcn0vcHl0aG9uMi43L3B5X2NvbXBpbGUuKiAke2xpYmRpcn0vcHl0aG9uMi43L2NvbXBpbGVhbGwuKiAiCi0KLVNVTU1BUllfJHtQTn0tY29tcGlsZXI9IlB5dGhvbiBjb21waWxlciBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tY29tcGlsZXI9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1jb21waWxlcj0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb21waWxlciAiCi0KLVNVTU1BUllfJHtQTn0tY29tcHJlc3Npb249IlB5dGhvbiBoaWdoLWxldmVsIGNvbXByZXNzaW9uIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1jb21wcmVzc2lvbj0iJHtQTn0tY29yZSAke1BOfS16bGliIgotRklMRVNfJHtQTn0tY29tcHJlc3Npb249IiR7bGliZGlyfS9weXRob24yLjcvZ3ppcC4qICR7bGliZGlyfS9weXRob24yLjcvemlwZmlsZS4qICR7bGliZGlyfS9weXRob24yLjcvdGFyZmlsZS4qICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvYnoyLnNvICIKLQotU1VNTUFSWV8ke1BOfS1jb250ZXh0bGliPSJQeXRob24gdXRpbGl0aWVzIGZvciB3aXRoLXN0YXRlbWVudGNvbnRleHRzLiIKLVJERVBFTkRTXyR7UE59LWNvbnRleHRsaWI9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1jb250ZXh0bGliPSIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb250ZXh0bGliLiogIgotCi1TVU1NQVJZXyR7UE59LWNvcmU9IlB5dGhvbiBpbnRlcnByZXRlciBhbmQgY29yZSBtb2R1bGVzIgotUkRFUEVORFNfJHtQTn0tY29yZT0iJHtQTn0tbGFuZyAke1BOfS1yZSIKLUZJTEVTXyR7UE59LWNvcmU9IiR7bGliZGlyfS9weXRob24yLjcvX19mdXR1cmVfXy4qICR7bGliZGlyfS9weXRob24yLjcvX2FiY29sbC4qICR7bGliZGlyfS9weXRob24yLjcvYWJjLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9hc3QuKiAke2xpYmRpcn0vcHl0aG9uMi43L2NvcHkuKiAke2xpYmRpcn0vcHl0aG9uMi43L2NvcHlfcmVnLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9Db25maWdQYXJzZXIuKiAke2xpYmRpcn0vcHl0aG9uMi43L2dlbmVyaWNwYXRoLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9nZXRvcHQuKiAke2xpYmRpcn0vcHl0aG9uMi43L2xpbmVjYWNoZS4qICR7bGliZGlyfS9weXRob24yLjcvbmV3LiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9vcy4qICR7bGliZGlyfS9weXRob24yLjcvcG9zaXhwYXRoLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdHJ1Y3QuKiAke2xpYmRpcn0vcHl0aG9uMi43L3dhcm5pbmdzLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaXRlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdGF0LiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9Vc2VyRGljdC4qICR7bGliZGlyfS9weXRob24yLjcvVXNlckxpc3QuKiAke2xpYmRpcn0vcHl0aG9uMi43L1VzZXJTdHJpbmcuKiAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2JpbmFzY2lpLnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX3N0cnVjdC5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3RpbWUuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC94cmVhZGxpbmVzLnNvICR7bGliZGlyfS9weXRob24yLjcvdHlwZXMuKiAke2xpYmRpcn0vcHl0aG9uMi43L3BsYXRmb3JtLiogJHtiaW5kaXJ9L3B5dGhvbiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9fd2Vha3JlZnNldC4qICR7bGliZGlyfS9weXRob24yLjcvc3lzY29uZmlnLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9fc3lzY29uZmlnZGF0YS4qICR7aW5jbHVkZWRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9weWNvbmZpZyouaCAke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zaXRlY3VzdG9taXplLnB5ICIKLQotU1VNTUFSWV8ke1BOfS1jcnlwdD0iUHl0aG9uIGJhc2ljIGNyeXB0b2dyYXBoaWMgYW5kIGhhc2hpbmcgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LWNyeXB0PSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tY3J5cHQ9IiR7bGliZGlyfS9weXRob24yLjcvaGFzaGxpYi4qICR7bGliZGlyfS9weXRob24yLjcvbWQ1LiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaGEuKiAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2NyeXB0LnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2hhc2hsaWIuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fc2hhMjU2LnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX3NoYTUxMi5zbyAiCi0KLVNVTU1BUllfJHtQTn0tY3R5cGVzPSJQeXRob24gQyB0eXBlcyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tY3R5cGVzPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tY3R5cGVzPSIke2xpYmRpcn0vcHl0aG9uMi43L2N0eXBlcyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jdHlwZXMuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY3R5cGVzX3Rlc3Quc28gIgotCi1TVU1NQVJZXyR7UE59LWN1cnNlcz0iUHl0aG9uIGN1cnNlcyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tY3Vyc2VzPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tY3Vyc2VzPSIke2xpYmRpcn0vcHl0aG9uMi43L2N1cnNlcyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jdXJzZXMuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY3Vyc2VzX3BhbmVsLnNvICIKLQotU1VNTUFSWV8ke1BOfS1kYXRldGltZT0iUHl0aG9uIGNhbGVuZGFyIGFuZCB0aW1lIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1kYXRldGltZT0iJHtQTn0tY29yZSAke1BOfS1jb2RlY3MiCi1GSUxFU18ke1BOfS1kYXRldGltZT0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9fc3RycHRpbWUuKiAke2xpYmRpcn0vcHl0aG9uMi43L2NhbGVuZGFyLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9kYXRldGltZS5zbyAiCi0KLVNVTU1BUllfJHtQTn0tZGI9IlB5dGhvbiBmaWxlLWJhc2VkIGRhdGFiYXNlIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1kYj0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWRiPSIke2xpYmRpcn0vcHl0aG9uMi43L2FueWRibS4qICR7bGliZGlyfS9weXRob24yLjcvZHVtYmRibS4qICR7bGliZGlyfS9weXRob24yLjcvd2hpY2hkYi4qICIKLQotU1VNTUFSWV8ke1BOfS1kZWJ1Z2dlcj0iUHl0aG9uIGRlYnVnZ2VyIgotUkRFUEVORFNfJHtQTn0tZGVidWdnZXI9IiR7UE59LWNvcmUgJHtQTn0taW8gJHtQTn0tbGFuZyAke1BOfS1yZSAke1BOfS1zdHJpbmdvbGQgJHtQTn0tc2hlbGwgJHtQTn0tcHByaW50IgotRklMRVNfJHtQTn0tZGVidWdnZXI9IiR7bGliZGlyfS9weXRob24yLjcvYmRiLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9wZGIuKiAiCi0KLVNVTU1BUllfJHtQTn0tZGV2PSJQeXRob24gZGV2ZWxvcG1lbnQgcGFja2FnZSIKLVJERVBFTkRTXyR7UE59LWRldj0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWRldj0iJHtpbmNsdWRlZGlyfSAke2xpYmRpcn0vbGliKiR7U09MSUJTREVWfSAke2xpYmRpcn0vKi5sYSAke2xpYmRpcn0vKi5hICR7bGliZGlyfS8qLm8gJHtsaWJkaXJ9L3BrZ2NvbmZpZyAke2Jhc2VfbGliZGlyfS8qLmEgJHtiYXNlX2xpYmRpcn0vKi5vICR7ZGF0YWRpcn0vYWNsb2NhbCAke2RhdGFkaXJ9L3BrZ2NvbmZpZyAke2xpYmRpcn0vcHl0aG9uMi43L2NvbmZpZy9NYWtlZmlsZSAiCi0KLVNVTU1BUllfJHtQTn0tZGlmZmxpYj0iUHl0aG9uIGhlbHBlcnMgZm9yIGNvbXB1dGluZyBkZWx0YXMgYmV0d2VlbiBvYmplY3RzIgotUkRFUEVORFNfJHtQTn0tZGlmZmxpYj0iJHtQTn0tbGFuZyAke1BOfS1yZSIKLUZJTEVTXyR7UE59LWRpZmZsaWI9IiR7bGliZGlyfS9weXRob24yLjcvZGlmZmxpYi4qICIKLQotU1VNTUFSWV8ke1BOfS1kaXN0dXRpbHM9IlB5dGhvbiBEaXN0cmlidXRpb24gVXRpbGl0aWVzIgotUkRFUEVORFNfJHtQTn0tZGlzdHV0aWxzPSIke1BOfS1jb3JlICR7UE59LWVtYWlsIgotRklMRVNfJHtQTn0tZGlzdHV0aWxzPSIke2xpYmRpcn0vcHl0aG9uMi43L2NvbmZpZyAke2xpYmRpcn0vcHl0aG9uMi43L2Rpc3R1dGlscyAiCi0KLVNVTU1BUllfJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2Rldj0iUHl0aG9uIGRpc3RyaWJ1dGlvbiB1dGlsaXRpZXMgKHN0YXRpYyBsaWJyYXJpZXMpIgotUkRFUEVORFNfJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2Rldj0iJHtQTn0tZGlzdHV0aWxzIgotRklMRVNfJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2Rldj0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb25maWcvbGliKi5hICIKLQotU1VNTUFSWV8ke1BOfS1kb2N0ZXN0PSJQeXRob24gZnJhbWV3b3JrIGZvciBydW5uaW5nIGV4YW1wbGVzIGluIGRvY3N0cmluZ3MiCi1SREVQRU5EU18ke1BOfS1kb2N0ZXN0PSIke1BOfS1jb3JlICR7UE59LWxhbmcgJHtQTn0taW8gJHtQTn0tcmUgJHtQTn0tdW5pdHRlc3QgJHtQTn0tZGVidWdnZXIgJHtQTn0tZGlmZmxpYiIKLUZJTEVTXyR7UE59LWRvY3Rlc3Q9IiR7bGliZGlyfS9weXRob24yLjcvZG9jdGVzdC4qICIKLQotU1VNTUFSWV8ke1BOfS1lbWFpbD0iUHl0aG9uIGVtYWlsIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1lbWFpbD0iJHtQTn0tY29yZSAke1BOfS1pbyAke1BOfS1yZSAke1BOfS1taW1lICR7UE59LWF1ZGlvICR7UE59LWltYWdlICR7UE59LW5ldGNsaWVudCIKLUZJTEVTXyR7UE59LWVtYWlsPSIke2xpYmRpcn0vcHl0aG9uMi43L2ltYXBsaWIuKiAke2xpYmRpcn0vcHl0aG9uMi43L2VtYWlsICIKLQotU1VNTUFSWV8ke1BOfS1mY250bD0iUHl0aG9uJ3MgZmNudGwgaW50ZXJmYWNlIgotUkRFUEVORFNfJHtQTn0tZmNudGw9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1mY250bD0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9mY250bC5zbyAiCi0KLVNVTU1BUllfJHtQTn0tZ2RibT0iUHl0aG9uIEdOVSBkYXRhYmFzZSBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tZ2RibT0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWdkYm09IiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvZ2RibS5zbyAiCi0KLVNVTU1BUllfJHtQTn0taG90c2hvdD0iUHl0aG9uIGhvdHNob3QgcGVyZm9ybWFuY2UgcHJvZmlsZXIiCi1SREVQRU5EU18ke1BOfS1ob3RzaG90PSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0taG90c2hvdD0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9ob3RzaG90ICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2hvdHNob3Quc28gIgotCi1TVU1NQVJZXyR7UE59LWh0bWw9IlB5dGhvbiBIVE1MIHByb2Nlc3Npbmcgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LWh0bWw9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1odG1sPSIke2xpYmRpcn0vcHl0aG9uMi43L2Zvcm1hdHRlci4qICR7bGliZGlyfS9weXRob24yLjcvaHRtbGVudGl0eWRlZnMuKiAke2xpYmRpcn0vcHl0aG9uMi43L2h0bWxsaWIuKiAke2xpYmRpcn0vcHl0aG9uMi43L21hcmt1cGJhc2UuKiAke2xpYmRpcn0vcHl0aG9uMi43L3NnbWxsaWIuKiAke2xpYmRpcn0vcHl0aG9uMi43L0hUTUxQYXJzZXIuKiAiCi0KLVNVTU1BUllfJHtQTn0taWRsZT0iUHl0aG9uIEludGVncmF0ZWQgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQiCi1SREVQRU5EU18ke1BOfS1pZGxlPSIke1BOfS1jb3JlICR7UE59LXRraW50ZXIiCi1GSUxFU18ke1BOfS1pZGxlPSIke2JpbmRpcn0vaWRsZSAke2xpYmRpcn0vcHl0aG9uMi43L2lkbGVsaWIgIgotCi1TVU1NQVJZXyR7UE59LWltYWdlPSJQeXRob24gZ3JhcGhpY2FsIGltYWdlIGhhbmRsaW5nIgotUkRFUEVORFNfJHtQTn0taW1hZ2U9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1pbWFnZT0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb2xvcnN5cy4qICR7bGliZGlyfS9weXRob24yLjcvaW1naGRyLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9pbWFnZW9wLnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvcmdiaW1nLnNvICIKLQotU1VNTUFSWV8ke1BOfS1pbXBvcnRsaWI9IlB5dGhvbiBpbXBvcnQgaW1wbGVtZW50YXRpb24gbGlicmFyeSIKLVJERVBFTkRTXyR7UE59LWltcG9ydGxpYj0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWltcG9ydGxpYj0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9pbXBvcnRsaWIgIgotCi1TVU1NQVJZXyR7UE59LWlvPSJQeXRob24gbG93LWxldmVsIEkvTyIKLVJERVBFTkRTXyR7UE59LWlvPSIke1BOfS1jb3JlICR7UE59LW1hdGggJHtQTn0tdGV4dHV0aWxzICR7UE59LW5ldGNsaWVudCAke1BOfS1jb250ZXh0bGliIgotRklMRVNfJHtQTn0taW89IiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX3NvY2tldC5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19pby5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19zc2wuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9zZWxlY3Quc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC90ZXJtaW9zLnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvY1N0cmluZ0lPLnNvICR7bGliZGlyfS9weXRob24yLjcvcGlwZXMuKiAke2xpYmRpcn0vcHl0aG9uMi43L3NvY2tldC4qICR7bGliZGlyfS9weXRob24yLjcvc3NsLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy90ZW1wZmlsZS4qICR7bGliZGlyfS9weXRob24yLjcvU3RyaW5nSU8uKiAke2xpYmRpcn0vcHl0aG9uMi43L2lvLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9fcHlpby4qICIKLQotU1VNTUFSWV8ke1BOfS1qc29uPSJQeXRob24gSlNPTiBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tanNvbj0iJHtQTn0tY29yZSAke1BOfS1tYXRoICR7UE59LXJlICR7UE59LWNvZGVjcyIKLUZJTEVTXyR7UE59LWpzb249IiR7bGliZGlyfS9weXRob24yLjcvanNvbiAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19qc29uLnNvICIKLQotU1VNTUFSWV8ke1BOfS1sYW5nPSJQeXRob24gbG93LWxldmVsIGxhbmd1YWdlIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1sYW5nPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tbGFuZz0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fYmlzZWN0LnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2NvbGxlY3Rpb25zLnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2hlYXBxLnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX3dlYWtyZWYuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fZnVuY3Rvb2xzLnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvYXJyYXkuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9pdGVydG9vbHMuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9vcGVyYXRvci5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3BhcnNlci5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2F0ZXhpdC4qICR7bGliZGlyfS9weXRob24yLjcvYmlzZWN0LiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb2RlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb2Rlb3AuKiAke2xpYmRpcn0vcHl0aG9uMi43L2NvbGxlY3Rpb25zLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9kaXMuKiAke2xpYmRpcn0vcHl0aG9uMi43L2Z1bmN0b29scy4qICR7bGliZGlyfS9weXRob24yLjcvaGVhcHEuKiAke2xpYmRpcn0vcHl0aG9uMi43L2luc3BlY3QuKiAke2xpYmRpcn0vcHl0aG9uMi43L2tleXdvcmQuKiAke2xpYmRpcn0vcHl0aG9uMi43L29wY29kZS4qICR7bGliZGlyfS9weXRob24yLjcvc3ltYm9sLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9yZXByLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy90b2tlbi4qICR7bGliZGlyfS9weXRob24yLjcvdG9rZW5pemUuKiAke2xpYmRpcn0vcHl0aG9uMi43L3RyYWNlYmFjay4qICR7bGliZGlyfS9weXRob24yLjcvd2Vha3JlZi4qICIKLQotU1VNTUFSWV8ke1BOfS1sb2dnaW5nPSJQeXRob24gbG9nZ2luZyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tbG9nZ2luZz0iJHtQTn0tY29yZSAke1BOfS1pbyAke1BOfS1sYW5nICR7UE59LXBpY2tsZSAke1BOfS1zdHJpbmdvbGQiCi1GSUxFU18ke1BOfS1sb2dnaW5nPSIke2xpYmRpcn0vcHl0aG9uMi43L2xvZ2dpbmcgIgotCi1TVU1NQVJZXyR7UE59LW1haWxib3g9IlB5dGhvbiBtYWlsYm94IGZvcm1hdCBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tbWFpbGJveD0iJHtQTn0tY29yZSAke1BOfS1taW1lIgotRklMRVNfJHtQTn0tbWFpbGJveD0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9tYWlsYm94LiogIgotCi1TVU1NQVJZXyR7UE59LW1hdGg9IlB5dGhvbiBtYXRoIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1tYXRoPSIke1BOfS1jb3JlICR7UE59LWNyeXB0IgotRklMRVNfJHtQTn0tbWF0aD0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9jbWF0aC5zbyAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL21hdGguc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fcmFuZG9tLnNvICR7bGliZGlyfS9weXRob24yLjcvcmFuZG9tLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zZXRzLiogIgotCi1TVU1NQVJZXyR7UE59LW1pbWU9IlB5dGhvbiBNSU1FIGhhbmRsaW5nIEFQSXMiCi1SREVQRU5EU18ke1BOfS1taW1lPSIke1BOfS1jb3JlICR7UE59LWlvIgotRklMRVNfJHtQTn0tbWltZT0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9taW1ldG9vbHMuKiAke2xpYmRpcn0vcHl0aG9uMi43L3V1LiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9xdW9wcmkuKiAke2xpYmRpcn0vcHl0aG9uMi43L3JmYzgyMi4qICR7bGliZGlyfS9weXRob24yLjcvTWltZVdyaXRlci4qICIKLQotU1VNTUFSWV8ke1BOfS1tbWFwPSJQeXRob24gbWVtb3J5LW1hcHBlZCBmaWxlIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1tbWFwPSIke1BOfS1jb3JlICR7UE59LWlvIgotRklMRVNfJHtQTn0tbW1hcD0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9tbWFwLnNvICIKLQotU1VNTUFSWV8ke1BOfS1tdWx0aXByb2Nlc3Npbmc9IlB5dGhvbiBtdWx0aXByb2Nlc3Npbmcgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LW11bHRpcHJvY2Vzc2luZz0iJHtQTn0tY29yZSAke1BOfS1pbyAke1BOfS1sYW5nICR7UE59LXBpY2tsZSAke1BOfS10aHJlYWRpbmcgJHtQTn0tY3R5cGVzICR7UE59LW1tYXAiCi1GSUxFU18ke1BOfS1tdWx0aXByb2Nlc3Npbmc9IiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX211bHRpcHJvY2Vzc2luZy5zbyAke2xpYmRpcn0vcHl0aG9uMi43L211bHRpcHJvY2Vzc2luZyAiCi0KLVNVTU1BUllfJHtQTn0tbmV0Y2xpZW50PSJQeXRob24gSW50ZXJuZXQgUHJvdG9jb2wgY2xpZW50cyIKLVJERVBFTkRTXyR7UE59LW5ldGNsaWVudD0iJHtQTn0tY29yZSAke1BOfS1jcnlwdCAke1BOfS1kYXRldGltZSAke1BOfS1pbyAke1BOfS1sYW5nICR7UE59LWxvZ2dpbmcgJHtQTn0tbWltZSIKLUZJTEVTXyR7UE59LW5ldGNsaWVudD0iJHtsaWJkaXJ9L3B5dGhvbjIuNy8qQ29va2llKi4qICR7bGliZGlyfS9weXRob24yLjcvYmFzZTY0LiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb29raWVsaWIuKiAke2xpYmRpcn0vcHl0aG9uMi43L2Z0cGxpYi4qICR7bGliZGlyfS9weXRob24yLjcvZ29waGVybGliLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9obWFjLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9odHRwbGliLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9taW1ldHlwZXMuKiAke2xpYmRpcn0vcHl0aG9uMi43L25udHBsaWIuKiAke2xpYmRpcn0vcHl0aG9uMi43L3BvcGxpYi4qICR7bGliZGlyfS9weXRob24yLjcvc210cGxpYi4qICR7bGliZGlyfS9weXRob24yLjcvdGVsbmV0bGliLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy91cmxsaWIuKiAke2xpYmRpcn0vcHl0aG9uMi43L3VybGxpYjIuKiAke2xpYmRpcn0vcHl0aG9uMi43L3VybHBhcnNlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy91dWlkLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9yZmM4MjIuKiAke2xpYmRpcn0vcHl0aG9uMi43L21pbWV0b29scy4qICIKLQotU1VNTUFSWV8ke1BOfS1uZXRzZXJ2ZXI9IlB5dGhvbiBJbnRlcm5ldCBQcm90b2NvbCBzZXJ2ZXJzIgotUkRFUEVORFNfJHtQTn0tbmV0c2VydmVyPSIke1BOfS1jb3JlICR7UE59LW5ldGNsaWVudCAke1BOfS1zaGVsbCAke1BOfS10aHJlYWRpbmciCi1GSUxFU18ke1BOfS1uZXRzZXJ2ZXI9IiR7bGliZGlyfS9weXRob24yLjcvY2dpLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy8qSFRUUFNlcnZlci4qICR7bGliZGlyfS9weXRob24yLjcvU29ja2V0U2VydmVyLiogIgotCi1TVU1NQVJZXyR7UE59LW51bWJlcnM9IlB5dGhvbiBudW1iZXIgQVBJcyIKLVJERVBFTkRTXyR7UE59LW51bWJlcnM9IiR7UE59LWNvcmUgJHtQTn0tbGFuZyAke1BOfS1yZSIKLUZJTEVTXyR7UE59LW51bWJlcnM9IiR7bGliZGlyfS9weXRob24yLjcvZGVjaW1hbC4qICR7bGliZGlyfS9weXRob24yLjcvZnJhY3Rpb25zLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9udW1iZXJzLiogIgotCi1TVU1NQVJZXyR7UE59LXBpY2tsZT0iUHl0aG9uIHNlcmlhbGlzYXRpb24vcGVyc2lzdGVuY2Ugc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXBpY2tsZT0iJHtQTn0tY29yZSAke1BOfS1jb2RlY3MgJHtQTn0taW8gJHtQTn0tcmUiCi1GSUxFU18ke1BOfS1waWNrbGU9IiR7bGliZGlyfS9weXRob24yLjcvcGlja2xlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaGVsdmUuKiAke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2NQaWNrbGUuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9waWNrbGV0b29scy4qICIKLQotU1VNTUFSWV8ke1BOfS1wa2d1dGlsPSJQeXRob24gcGFja2FnZSBleHRlbnNpb24gdXRpbGl0eSBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tcGtndXRpbD0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LXBrZ3V0aWw9IiR7bGliZGlyfS9weXRob24yLjcvcGtndXRpbC4qICIKLQotU1VNTUFSWV8ke1BOfS1wbGlzdGxpYj0iR2VuZXJhdGUgYW5kIHBhcnNlIE1hYyBPUyBYIC5wbGlzdCBmaWxlcyIKLVJERVBFTkRTXyR7UE59LXBsaXN0bGliPSIke1BOfS1jb3JlICR7UE59LWRhdGV0aW1lICR7UE59LWlvIgotRklMRVNfJHtQTn0tcGxpc3RsaWI9IiR7bGliZGlyfS9weXRob24yLjcvcGxpc3RsaWIuKiAiCi0KLVNVTU1BUllfJHtQTn0tcHByaW50PSJQeXRob24gcHJldHR5LXByaW50IHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1wcHJpbnQ9IiR7UE59LWNvcmUgJHtQTn0taW8iCi1GSUxFU18ke1BOfS1wcHJpbnQ9IiR7bGliZGlyfS9weXRob24yLjcvcHByaW50LiogIgotCi1TVU1NQVJZXyR7UE59LXByb2ZpbGU9IlB5dGhvbiBiYXNpYyBwZXJmb3JtYW5jZSBwcm9maWxpbmcgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXByb2ZpbGU9IiR7UE59LWNvcmUgJHtQTn0tdGV4dHV0aWxzIgotRklMRVNfJHtQTn0tcHJvZmlsZT0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9wcm9maWxlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9wc3RhdHMuKiAke2xpYmRpcn0vcHl0aG9uMi43L2NQcm9maWxlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fbHNwcm9mLnNvICIKLQotU1VNTUFSWV8ke1BOfS1weWRvYz0iUHl0aG9uIGludGVyYWN0aXZlIGhlbHAgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXB5ZG9jPSIke1BOfS1jb3JlICR7UE59LWxhbmcgJHtQTn0tc3RyaW5nb2xkICR7UE59LXJlIgotRklMRVNfJHtQTn0tcHlkb2M9IiR7YmluZGlyfS9weWRvYyAke2xpYmRpcn0vcHl0aG9uMi43L3B5ZG9jLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9weWRvY19kYXRhICIKLQotU1VNTUFSWV8ke1BOfS1yZT0iUHl0aG9uIFJlZ3VsYXIgRXhwcmVzc2lvbiBBUElzIgotUkRFUEVORFNfJHtQTn0tcmU9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1yZT0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9yZS4qICR7bGliZGlyfS9weXRob24yLjcvc3JlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zcmVfY29tcGlsZS4qICR7bGliZGlyfS9weXRob24yLjcvc3JlX2NvbnN0YW50cyogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zcmVfcGFyc2UuKiAiCi0KLVNVTU1BUllfJHtQTn0tcmVhZGxpbmU9IlB5dGhvbiByZWFkbGluZSBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tcmVhZGxpbmU9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1yZWFkbGluZT0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9yZWFkbGluZS5zbyAke2xpYmRpcn0vcHl0aG9uMi43L3JsY29tcGxldGVyLiogIgotCi1TVU1NQVJZXyR7UE59LXJlc291cmNlPSJQeXRob24gcmVzb3VyY2UgY29udHJvbCBpbnRlcmZhY2UiCi1SREVQRU5EU18ke1BOfS1yZXNvdXJjZT0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LXJlc291cmNlPSIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3Jlc291cmNlLnNvICIKLQotU1VNTUFSWV8ke1BOfS1yb2JvdHBhcnNlcj0iUHl0aG9uIHJvYm90cy50eHQgcGFyc2VyIgotUkRFUEVORFNfJHtQTn0tcm9ib3RwYXJzZXI9IiR7UE59LWNvcmUgJHtQTn0tbmV0Y2xpZW50IgotRklMRVNfJHtQTn0tcm9ib3RwYXJzZXI9IiR7bGliZGlyfS9weXRob24yLjcvcm9ib3RwYXJzZXIuKiAiCi0KLVNVTU1BUllfJHtQTn0tc2hlbGw9IlB5dGhvbiBzaGVsbC1saWtlIGZ1bmN0aW9uYWxpdHkiCi1SREVQRU5EU18ke1BOfS1zaGVsbD0iJHtQTn0tY29yZSAke1BOfS1yZSIKLUZJTEVTXyR7UE59LXNoZWxsPSIke2xpYmRpcn0vcHl0aG9uMi43L2NtZC4qICR7bGliZGlyfS9weXRob24yLjcvY29tbWFuZHMuKiAke2xpYmRpcn0vcHl0aG9uMi43L2RpcmNhY2hlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9mbm1hdGNoLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9nbG9iLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9wb3BlbjIuKiAke2xpYmRpcn0vcHl0aG9uMi43L3NobGV4LiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaHV0aWwuKiAiCi0KLVNVTU1BUllfJHtQTn0tc210cGQ9IlB5dGhvbiBTaW1wbGUgTWFpbCBUcmFuc3BvcnQgRGFlbW9uIgotUkRFUEVORFNfJHtQTn0tc210cGQ9IiR7UE59LWNvcmUgJHtQTn0tbmV0c2VydmVyICR7UE59LWVtYWlsICR7UE59LW1pbWUiCi1GSUxFU18ke1BOfS1zbXRwZD0iJHtiaW5kaXJ9L3NtdHBkLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zbXRwZC4qICIKLQotU1VNTUFSWV8ke1BOfS1zcWxpdGUzPSJQeXRob24gU3FsaXRlMyBkYXRhYmFzZSBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tc3FsaXRlMz0iJHtQTn0tY29yZSAke1BOfS1kYXRldGltZSAke1BOfS1sYW5nICR7UE59LWNyeXB0ICR7UE59LWlvICR7UE59LXRocmVhZGluZyAke1BOfS16bGliIgotRklMRVNfJHtQTn0tc3FsaXRlMz0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fc3FsaXRlMy5zbyAke2xpYmRpcn0vcHl0aG9uMi43L3NxbGl0ZTMvZGJhcGkyLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zcWxpdGUzL19faW5pdF9fLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9zcWxpdGUzL2R1bXAuKiAiCi0KLVNVTU1BUllfJHtQTn0tc3FsaXRlMy10ZXN0cz0iUHl0aG9uIFNxbGl0ZTMgZGF0YWJhc2Ugc3VwcG9ydCB0ZXN0cyIKLVJERVBFTkRTXyR7UE59LXNxbGl0ZTMtdGVzdHM9IiR7UE59LWNvcmUgJHtQTn0tc3FsaXRlMyIKLUZJTEVTXyR7UE59LXNxbGl0ZTMtdGVzdHM9IiR7bGliZGlyfS9weXRob24yLjcvc3FsaXRlMy90ZXN0ICIKLQotU1VNTUFSWV8ke1BOfS1zdHJpbmdvbGQ9IlB5dGhvbiBzdHJpbmcgQVBJcyBbZGVwcmVjYXRlZF0iCi1SREVQRU5EU18ke1BOfS1zdHJpbmdvbGQ9IiR7UE59LWNvcmUgJHtQTn0tcmUiCi1GSUxFU18ke1BOfS1zdHJpbmdvbGQ9IiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvc3Ryb3Auc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdHJpbmcuKiAke2xpYmRpcn0vcHl0aG9uMi43L3N0cmluZ29sZC4qICIKLQotU1VNTUFSWV8ke1BOfS1zdWJwcm9jZXNzPSJQeXRob24gc3VicHJvY2VzcyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tc3VicHJvY2Vzcz0iJHtQTn0tY29yZSAke1BOfS1pbyAke1BOfS1yZSAke1BOfS1mY250bCAke1BOfS1waWNrbGUiCi1GSUxFU18ke1BOfS1zdWJwcm9jZXNzPSIke2xpYmRpcn0vcHl0aG9uMi43L3N1YnByb2Nlc3MuKiAiCi0KLVNVTU1BUllfJHtQTn0tc3lzbG9nPSJQeXRob24gc3lzbG9nIGludGVyZmFjZSIKLVJERVBFTkRTXyR7UE59LXN5c2xvZz0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LXN5c2xvZz0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9zeXNsb2cuc28gIgotCi1TVU1NQVJZXyR7UE59LXRlcm1pbmFsPSJQeXRob24gdGVybWluYWwgY29udHJvbGxpbmcgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXRlcm1pbmFsPSIke1BOfS1jb3JlICR7UE59LWlvIgotRklMRVNfJHtQTn0tdGVybWluYWw9IiR7bGliZGlyfS9weXRob24yLjcvcHR5LiogJHtsaWJkaXJ9L3B5dGhvbjIuNy90dHkuKiAiCi0KLVNVTU1BUllfJHtQTn0tdGVzdHM9IlB5dGhvbiB0ZXN0cyIKLVJERVBFTkRTXyR7UE59LXRlc3RzPSIke1BOfS1jb3JlICR7UE59LW1vZHVsZXMiCi1GSUxFU18ke1BOfS10ZXN0cz0iJHtsaWJkaXJ9L3B5dGhvbjIuNy90ZXN0ICIKLQotU1VNTUFSWV8ke1BOfS10ZXh0dXRpbHM9IlB5dGhvbiBvcHRpb24gcGFyc2luZywgdGV4dCB3cmFwcGluZyBhbmQgQ1NWIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS10ZXh0dXRpbHM9IiR7UE59LWNvcmUgJHtQTn0taW8gJHtQTn0tcmUgJHtQTn0tc3RyaW5nb2xkIgotRklMRVNfJHtQTn0tdGV4dHV0aWxzPSIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jc3Yuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9jc3YuKiAke2xpYmRpcn0vcHl0aG9uMi43L29wdHBhcnNlLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy90ZXh0d3JhcC4qICIKLQotU1VNTUFSWV8ke1BOfS10aHJlYWRpbmc9IlB5dGhvbiB0aHJlYWRpbmcgJiBzeW5jaHJvbml6YXRpb24gc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXRocmVhZGluZz0iJHtQTn0tY29yZSAke1BOfS1sYW5nIgotRklMRVNfJHtQTn0tdGhyZWFkaW5nPSIke2xpYmRpcn0vcHl0aG9uMi43L190aHJlYWRpbmdfbG9jYWwuKiAke2xpYmRpcn0vcHl0aG9uMi43L2R1bW15X3RocmVhZC4qICR7bGliZGlyfS9weXRob24yLjcvZHVtbXlfdGhyZWFkaW5nLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9tdXRleC4qICR7bGliZGlyfS9weXRob24yLjcvdGhyZWFkaW5nLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9RdWV1ZS4qICIKLQotU1VNTUFSWV8ke1BOfS10a2ludGVyPSJQeXRob24gVGNsL1RrIGJpbmRpbmdzIgotUkRFUEVORFNfJHtQTn0tdGtpbnRlcj0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LXRraW50ZXI9IiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX3RraW50ZXIuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItdGsgIgotCi1TVU1NQVJZXyR7UE59LXVuaXR0ZXN0PSJQeXRob24gdW5pdCB0ZXN0aW5nIGZyYW1ld29yayIKLVJERVBFTkRTXyR7UE59LXVuaXR0ZXN0PSIke1BOfS1jb3JlICR7UE59LXN0cmluZ29sZCAke1BOfS1sYW5nICR7UE59LWlvICR7UE59LWRpZmZsaWIgJHtQTn0tcHByaW50ICR7UE59LXNoZWxsIgotRklMRVNfJHtQTn0tdW5pdHRlc3Q9IiR7bGliZGlyfS9weXRob24yLjcvdW5pdHRlc3QvICIKLQotU1VNTUFSWV8ke1BOfS11bml4YWRtaW49IlB5dGhvbiBVbml4IGFkbWluaXN0cmF0aW9uIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS11bml4YWRtaW49IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS11bml4YWRtaW49IiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvbmlzLnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvZ3JwLnNvICR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvcHdkLnNvICR7bGliZGlyfS9weXRob24yLjcvZ2V0cGFzcy4qICIKLQotU1VNTUFSWV8ke1BOfS14bWw9IlB5dGhvbiBiYXNpYyBYTUwgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXhtbD0iJHtQTn0tY29yZSAke1BOfS1yZSIKLUZJTEVTXyR7UE59LXhtbD0iJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fZWxlbWVudHRyZWUuc28gJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9weWV4cGF0LnNvICR7bGliZGlyfS9weXRob24yLjcveG1sICR7bGliZGlyfS9weXRob24yLjcveG1sbGliLiogIgotCi1TVU1NQVJZXyR7UE59LXhtbHJwYz0iUHl0aG9uIFhNTC1SUEMgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXhtbHJwYz0iJHtQTn0tY29yZSAke1BOfS14bWwgJHtQTn0tbmV0c2VydmVyICR7UE59LWxhbmciCi1GSUxFU18ke1BOfS14bWxycGM9IiR7bGliZGlyfS9weXRob24yLjcveG1scnBjbGliLiogJHtsaWJkaXJ9L3B5dGhvbjIuNy9TaW1wbGVYTUxSUENTZXJ2ZXIuKiAke2xpYmRpcn0vcHl0aG9uMi43L0RvY1hNTFJQQ1NlcnZlci4qICIKLQotU1VNTUFSWV8ke1BOfS16bGliPSJQeXRob24gemxpYiBjb21wcmVzc2lvbiBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0temxpYj0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LXpsaWI9IiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvemxpYi5zbyAiCi0KLVNVTU1BUllfJHtQTn0tbW9kdWxlcz0iQWxsIFB5dGhvbiBtb2R1bGVzIgotUkRFUEVORFNfJHtQTn0tbW9kdWxlcz0iJHtQTn0tMnRvMyAke1BOfS1hcmdwYXJzZSAke1BOfS1hdWRpbyAke1BOfS1ic2RkYiAke1BOfS1jb2RlY3MgJHtQTn0tY29tcGlsZSAke1BOfS1jb21waWxlciAke1BOfS1jb21wcmVzc2lvbiAke1BOfS1jb250ZXh0bGliICR7UE59LWNvcmUgJHtQTn0tY3J5cHQgJHtQTn0tY3R5cGVzICR7UE59LWN1cnNlcyAke1BOfS1kYXRldGltZSAke1BOfS1kYiAke1BOfS1kZWJ1Z2dlciAke1BOfS1kaWZmbGliICR7UE59LWRpc3R1dGlscyAke1BOfS1kb2N0ZXN0ICR7UE59LWVtYWlsICR7UE59LWZjbnRsICR7UE59LWdkYm0gJHtQTn0taG90c2hvdCAke1BOfS1odG1sICR7UE59LWlkbGUgJHtQTn0taW1hZ2UgJHtQTn0taW1wb3J0bGliICR7UE59LWlvICR7UE59LWpzb24gJHtQTn0tbGFuZyAke1BOfS1sb2dnaW5nICR7UE59LW1haWxib3ggJHtQTn0tbWF0aCAke1BOfS1taW1lICR7UE59LW1tYXAgJHtQTn0tbXVsdGlwcm9jZXNzaW5nICR7UE59LW5ldGNsaWVudCAke1BOfS1uZXRzZXJ2ZXIgJHtQTn0tbnVtYmVycyAke1BOfS1waWNrbGUgJHtQTn0tcGtndXRpbCAke1BOfS1wbGlzdGxpYiAke1BOfS1wcHJpbnQgJHtQTn0tcHJvZmlsZSAke1BOfS1weWRvYyAke1BOfS1yZSAke1BOfS1yZWFkbGluZSAke1BOfS1yZXNvdXJjZSAke1BOfS1yb2JvdHBhcnNlciAke1BOfS1zaGVsbCAke1BOfS1zbXRwZCAke1BOfS1zcWxpdGUzICR7UE59LXNxbGl0ZTMtdGVzdHMgJHtQTn0tc3RyaW5nb2xkICR7UE59LXN1YnByb2Nlc3MgJHtQTn0tc3lzbG9nICR7UE59LXRlcm1pbmFsICR7UE59LXRleHR1dGlscyAke1BOfS10aHJlYWRpbmcgJHtQTn0tdGtpbnRlciAke1BOfS11bml0dGVzdCAke1BOfS11bml4YWRtaW4gJHtQTn0teG1sICR7UE59LXhtbHJwYyAke1BOfS16bGliICAiCi1BTExPV19FTVBUWV8ke1BOfS1tb2R1bGVzID0gIjEiCi0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLTMuNS1tYW5pZmVzdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tMy41LW1hbmlmZXN0LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI2MGU4Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tMy41LW1hbmlmZXN0LmluYworKysgL2Rldi9udWxsCkBAIC0xLDI4MyArMCwwIEBACi0KLSMgV0FSTklORzogVGhpcyBmaWxlIGlzIEFVVE8gR0VORVJBVEVEOiBNYW51YWwgZWRpdHMgd2lsbCBiZSBsb3N0IG5leHQgdGltZSBJIHJlZ2VuZXJhdGUgdGhlIGZpbGUuCi0jIEdlbmVyYXRvcjogJ3NjcmlwdHMvY29udHJpYi9weXRob24vZ2VuZXJhdGUtbWFuaWZlc3QtMy41LnB5JyBWZXJzaW9uIDIwMTQwMTMxIChDKSAyMDAyLTIwMTAgTWljaGFlbCAnTWlja2V5JyBMYXVlciA8bWxhdWVyQHZhbmlsbGUtbWVkaWEuZGU+Ci0KLSAKLQotUFJPVklERVMrPSIke1BOfS0ydG8zICR7UE59LWFyZ3BhcnNlICR7UE59LWFzeW5jaW8gJHtQTn0tYXVkaW8gJHtQTn0tY29kZWNzICR7UE59LWNvbXBpbGUgJHtQTn0tY29tcHJlc3Npb24gJHtQTn0tY29yZSAke1BOfS1jcnlwdCAke1BOfS1jdHlwZXMgJHtQTn0tY3Vyc2VzICR7UE59LWRhdGV0aW1lICR7UE59LWRiICR7UE59LWRlYnVnZ2VyICR7UE59LWRldiAke1BOfS1kaWZmbGliICR7UE59LWRpc3R1dGlscyAke1BOfS1kaXN0dXRpbHMtc3RhdGljZGV2ICR7UE59LWRvY3Rlc3QgJHtQTn0tZW1haWwgJHtQTn0tZW51bSAke1BOfS1mY250bCAke1BOfS1nZGJtICR7UE59LWh0bWwgJHtQTn0taWRsZSAke1BOfS1pbWFnZSAke1BOfS1pbXBvcnRsaWIgJHtQTn0taW8gJHtQTn0tanNvbiAke1BOfS1sYW5nICR7UE59LWxvZ2dpbmcgJHtQTn0tbWFpbGJveCAke1BOfS1tYXRoICR7UE59LW1pbWUgJHtQTn0tbW1hcCAke1BOfS1tdWx0aXByb2Nlc3NpbmcgJHtQTn0tbmV0Y2xpZW50ICR7UE59LW5ldHNlcnZlciAke1BOfS1udW1iZXJzICR7UE59LXBpY2tsZSAke1BOfS1wa2d1dGlsICR7UE59LXBwcmludCAke1BOfS1wcm9maWxlICR7UE59LXB5ZG9jICR7UE59LXJlICR7UE59LXJlYWRsaW5lICR7UE59LXJlcHJsaWIgJHtQTn0tcmVzb3VyY2UgJHtQTn0tc2VsZWN0b3JzICR7UE59LXNoZWxsICR7UE59LXNpZ25hbCAke1BOfS1zbXRwZCAke1BOfS1zcWxpdGUzICR7UE59LXNxbGl0ZTMtdGVzdHMgJHtQTn0tc3RyaW5nb2xkICR7UE59LXN1YnByb2Nlc3MgJHtQTn0tc3lzbG9nICR7UE59LXRlcm1pbmFsICR7UE59LXRlc3RzICR7UE59LXRleHR1dGlscyAke1BOfS10aHJlYWRpbmcgJHtQTn0tdGtpbnRlciAke1BOfS10eXBpbmcgJHtQTn0tdW5pdHRlc3QgJHtQTn0tdW5peGFkbWluICR7UE59LXhtbCAke1BOfS14bWxycGMgIgotCi1QQUNLQUdFUz0iJHtQTn0tZGJnICR7UE59LTJ0bzMgJHtQTn0tYXJncGFyc2UgJHtQTn0tYXN5bmNpbyAke1BOfS1hdWRpbyAke1BOfS1jb2RlY3MgJHtQTn0tY29tcGlsZSAke1BOfS1jb21wcmVzc2lvbiAke1BOfS1jb3JlICR7UE59LWNyeXB0ICR7UE59LWN0eXBlcyAke1BOfS1jdXJzZXMgJHtQTn0tZGF0ZXRpbWUgJHtQTn0tZGIgJHtQTn0tZGVidWdnZXIgJHtQTn0tZGV2ICR7UE59LWRpZmZsaWIgJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2RldiAke1BOfS1kaXN0dXRpbHMgJHtQTn0tZG9jdGVzdCAke1BOfS1lbWFpbCAke1BOfS1lbnVtICR7UE59LWZjbnRsICR7UE59LWdkYm0gJHtQTn0taHRtbCAke1BOfS1pZGxlICR7UE59LWltYWdlICR7UE59LWltcG9ydGxpYiAke1BOfS1pbyAke1BOfS1qc29uICR7UE59LWxhbmcgJHtQTn0tbG9nZ2luZyAke1BOfS1tYWlsYm94ICR7UE59LW1hdGggJHtQTn0tbWltZSAke1BOfS1tbWFwICR7UE59LW11bHRpcHJvY2Vzc2luZyAke1BOfS1uZXRjbGllbnQgJHtQTn0tbmV0c2VydmVyICR7UE59LW51bWJlcnMgJHtQTn0tcGlja2xlICR7UE59LXBrZ3V0aWwgJHtQTn0tcHByaW50ICR7UE59LXByb2ZpbGUgJHtQTn0tcHlkb2MgJHtQTn0tcmUgJHtQTn0tcmVhZGxpbmUgJHtQTn0tcmVwcmxpYiAke1BOfS1yZXNvdXJjZSAke1BOfS1zZWxlY3RvcnMgJHtQTn0tc2hlbGwgJHtQTn0tc2lnbmFsICR7UE59LXNtdHBkICR7UE59LXNxbGl0ZTMgJHtQTn0tc3FsaXRlMy10ZXN0cyAke1BOfS1zdHJpbmdvbGQgJHtQTn0tc3VicHJvY2VzcyAke1BOfS1zeXNsb2cgJHtQTn0tdGVybWluYWwgJHtQTn0tdGVzdHMgJHtQTn0tdGV4dHV0aWxzICR7UE59LXRocmVhZGluZyAke1BOfS10a2ludGVyICR7UE59LXR5cGluZyAke1BOfS11bml0dGVzdCAke1BOfS11bml4YWRtaW4gJHtQTn0teG1sICR7UE59LXhtbHJwYyAke1BOfS1tb2R1bGVzIgotCi1TVU1NQVJZXyR7UE59LTJ0bzM9IlB5dGhvbiBhdXRvbWF0ZWQgUHl0aG9uIDIgdG8gMyBjb2RlIHRyYW5zbGF0b3IiCi1SREVQRU5EU18ke1BOfS0ydG8zPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tMnRvMz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWIydG8zICR7bGliZGlyfS9weXRob24zLjUvbGliMnRvMy9fX3B5Y2FjaGVfXyAiCi0KLVNVTU1BUllfJHtQTn0tYXJncGFyc2U9IlB5dGhvbiBjb21tYW5kIGxpbmUgYXJndW1lbnQgcGFyc2VyIgotUkRFUEVORFNfJHtQTn0tYXJncGFyc2U9IiR7UE59LWNvcmUgJHtQTn0tY29kZWNzICR7UE59LXRleHR1dGlscyIKLUZJTEVTXyR7UE59LWFyZ3BhcnNlPSIke2xpYmRpcn0vcHl0aG9uMy41L2FyZ3BhcnNlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9hcmdwYXJzZS4qICIKLQotU1VNTUFSWV8ke1BOfS1hc3luY2lvPSJQeXRob24gQXN5bmNocm9ub3VzIEkvTywgZXZlbnQgbG9vcCwgY29yb3V0aW5lcyBhbmQgdGFza3MiCi1SREVQRU5EU18ke1BOfS1hc3luY2lvPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tYXN5bmNpbz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9hc3luY2lvICR7bGliZGlyfS9weXRob24zLjUvYXN5bmNpby9fX3B5Y2FjaGVfXyAiCi0KLVNVTU1BUllfJHtQTn0tYXVkaW89IlB5dGhvbiBBdWRpbyBIYW5kbGluZyIKLVJERVBFTkRTXyR7UE59LWF1ZGlvPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tYXVkaW89IiR7bGliZGlyfS9weXRob24zLjUvd2F2ZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vd2F2ZS4qICR7bGliZGlyfS9weXRob24zLjUvY2h1bmsuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NodW5rLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zbmRoZHIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NuZGhkci4qICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvb3NzYXVkaW9kZXYuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL29zc2F1ZGlvZGV2Liouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9hdWRpb29wLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9hdWRpb29wLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9hdWRpb2Rldi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYXVkaW9kZXYuKiAke2xpYmRpcn0vcHl0aG9uMy41L3N1bmF1ZGlvLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zdW5hdWRpby4qICR7bGliZGlyfS9weXRob24zLjUvc3VuYXUuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N1bmF1LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS90b2FpZmYuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3RvYWlmZi4qICIKLQotU1VNTUFSWV8ke1BOfS1jb2RlY3M9IlB5dGhvbiBjb2RlY3MsIGVuY29kaW5ncyAmIGkxOG4gc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LWNvZGVjcz0iJHtQTn0tY29yZSAke1BOfS1sYW5nIgotRklMRVNfJHtQTn0tY29kZWNzPSIke2xpYmRpcn0vcHl0aG9uMy41L2NvZGVjcy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29kZWNzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9lbmNvZGluZ3MgJHtsaWJkaXJ9L3B5dGhvbjMuNS9lbmNvZGluZ3MvX19weWNhY2hlX18gJHtsaWJkaXJ9L3B5dGhvbjMuNS9nZXR0ZXh0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9nZXR0ZXh0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9sb2NhbGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2xvY2FsZS4qICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2xvY2FsZS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX2xvY2FsZS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2NvZGVjcyogJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fY29kZWNzKi9fX3B5Y2FjaGVfXyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19tdWx0aWJ5dGVjb2RlYy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX211bHRpYnl0ZWNvZGVjLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC91bmljb2RlZGF0YS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vdW5pY29kZWRhdGEuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L3N0cmluZ3ByZXAuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N0cmluZ3ByZXAuKiAke2xpYmRpcn0vcHl0aG9uMy41L3hkcmxpYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18veGRybGliLiogIgotCi1TVU1NQVJZXyR7UE59LWNvbXBpbGU9IlB5dGhvbiBieXRlY29kZSBjb21waWxhdGlvbiBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tY29tcGlsZT0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWNvbXBpbGU9IiR7bGliZGlyfS9weXRob24zLjUvcHlfY29tcGlsZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcHlfY29tcGlsZS4qICR7bGliZGlyfS9weXRob24zLjUvY29tcGlsZWFsbC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29tcGlsZWFsbC4qICIKLQotU1VNTUFSWV8ke1BOfS1jb21wcmVzc2lvbj0iUHl0aG9uIGhpZ2gtbGV2ZWwgY29tcHJlc3Npb24gc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LWNvbXByZXNzaW9uPSIke1BOfS1jb3JlICR7UE59LWNvZGVjcyAke1BOfS1pbXBvcnRsaWIgJHtQTn0tdGhyZWFkaW5nICR7UE59LXNoZWxsIgotRklMRVNfJHtQTn0tY29tcHJlc3Npb249IiR7bGliZGlyfS9weXRob24zLjUvZ3ppcC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ3ppcC4qICR7bGliZGlyfS9weXRob24zLjUvemlwZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vemlwZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvdGFyZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdGFyZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvYnoyLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9iejIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3psaWIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3psaWIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2J6Mi5weSAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2J6Mi5weSAke2xpYmRpcn0vcHl0aG9uMy41L2x6bWEucHkgJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9sem1hLnB5ICR7bGliZGlyfS9weXRob24zLjUvX2NvbXByZXNzaW9uLnB5ICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX2NvbXByZXNzaW9uLnB5ICIKLQotU1VNTUFSWV8ke1BOfS1jb3JlPSJQeXRob24gaW50ZXJwcmV0ZXIgYW5kIGNvcmUgbW9kdWxlcyIKLVJERVBFTkRTXyR7UE59LWNvcmU9IiR7UE59LWxhbmcgJHtQTn0tcmUgJHtQTn0tcmVwcmxpYiAke1BOfS1jb2RlY3MgJHtQTn0taW8gJHtQTn0tbWF0aCIKLUZJTEVTXyR7UE59LWNvcmU9IiR7bGliZGlyfS9weXRob24zLjUvX19mdXR1cmVfXy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX19mdXR1cmVfXy4qICR7bGliZGlyfS9weXRob24zLjUvX2FiY29sbC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX2FiY29sbC4qICR7bGliZGlyfS9weXRob24zLjUvYWJjLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9hYmMuKiAke2xpYmRpcn0vcHl0aG9uMy41L2FzdC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYXN0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb3B5LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb3B5LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb3B5cmVnLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb3B5cmVnLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25maWdwYXJzZXIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NvbmZpZ3BhcnNlci4qICR7bGliZGlyfS9weXRob24zLjUvZ2VuZXJpY3BhdGguKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2dlbmVyaWNwYXRoLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9nZXRvcHQuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2dldG9wdC4qICR7bGliZGlyfS9weXRob24zLjUvbGluZWNhY2hlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9saW5lY2FjaGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L25ldy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbmV3LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9vcy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vb3MuKiAke2xpYmRpcn0vcHl0aG9uMy41L3Bvc2l4cGF0aC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcG9zaXhwYXRoLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdHJ1Y3QuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N0cnVjdC4qICR7bGliZGlyfS9weXRob24zLjUvd2FybmluZ3MuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3dhcm5pbmdzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaXRlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zaXRlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdGF0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zdGF0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9Vc2VyRGljdC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vVXNlckRpY3QuKiAke2xpYmRpcn0vcHl0aG9uMy41L1VzZXJMaXN0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9Vc2VyTGlzdC4qICR7bGliZGlyfS9weXRob24zLjUvVXNlclN0cmluZy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vVXNlclN0cmluZy4qICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvYmluYXNjaWkuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL2JpbmFzY2lpLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fc3RydWN0Liouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fc3RydWN0Liouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC90aW1lLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy90aW1lLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC94cmVhZGxpbmVzLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy94cmVhZGxpbmVzLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS90eXBlcy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdHlwZXMuKiAke2xpYmRpcn0vcHl0aG9uMy41L3BsYXRmb3JtLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wbGF0Zm9ybS4qICR7YmluZGlyfS9weXRob24qICR7bGliZGlyfS9weXRob24zLjUvX3dlYWtyZWZzZXQuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL193ZWFrcmVmc2V0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zeXNjb25maWcuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N5c2NvbmZpZy4qICR7bGliZGlyfS9weXRob24zLjUvX3N5c2NvbmZpZ2RhdGEuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19zeXNjb25maWdkYXRhLiogJHtpbmNsdWRlZGlyfS9weXRob24ke1BZVEhPTl9CSU5BQkl9L3B5Y29uZmlnKi5oICR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbGxlY3Rpb25zICR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19jb2xsZWN0aW9uc19hYmMuKiAke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc2l0ZWJ1aWx0aW5zLiogJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2l0ZWN1c3RvbWl6ZS5weSAiCi0KLVNVTU1BUllfJHtQTn0tY3J5cHQ9IlB5dGhvbiBiYXNpYyBjcnlwdG9ncmFwaGljIGFuZCBoYXNoaW5nIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1jcnlwdD0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWNyeXB0PSIke2xpYmRpcn0vcHl0aG9uMy41L2hhc2hsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2hhc2hsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L21kNS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbWQ1LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaGEuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NoYS4qICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvY3J5cHQuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL2NyeXB0Liouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9faGFzaGxpYi4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX2hhc2hsaWIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19zaGEyNTYuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19zaGEyNTYuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19zaGE1MTIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19zaGE1MTIuKi5zbyAiCi0KLVNVTU1BUllfJHtQTn0tY3R5cGVzPSJQeXRob24gQyB0eXBlcyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tY3R5cGVzPSIke1BOfS1jb3JlICR7UE59LXN1YnByb2Nlc3MiCi1GSUxFU18ke1BOfS1jdHlwZXM9IiR7bGliZGlyfS9weXRob24zLjUvY3R5cGVzICR7bGliZGlyfS9weXRob24zLjUvY3R5cGVzL19fcHljYWNoZV9fICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2N0eXBlcy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX2N0eXBlcy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2N0eXBlc190ZXN0Liouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fY3R5cGVzX3Rlc3QuKi5zbyAiCi0KLVNVTU1BUllfJHtQTn0tY3Vyc2VzPSJQeXRob24gY3Vyc2VzIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1jdXJzZXM9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1jdXJzZXM9IiR7bGliZGlyfS9weXRob24zLjUvY3Vyc2VzICR7bGliZGlyfS9weXRob24zLjUvY3Vyc2VzL19fcHljYWNoZV9fICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2N1cnNlcy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX2N1cnNlcy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2N1cnNlc19wYW5lbC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX2N1cnNlc19wYW5lbC4qLnNvICIKLQotU1VNTUFSWV8ke1BOfS1kYXRldGltZT0iUHl0aG9uIGNhbGVuZGFyIGFuZCB0aW1lIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1kYXRldGltZT0iJHtQTn0tY29yZSAke1BOfS1jb2RlY3MiCi1GSUxFU18ke1BOfS1kYXRldGltZT0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9fc3RycHRpbWUuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19zdHJwdGltZS4qICR7bGliZGlyfS9weXRob24zLjUvY2FsZW5kYXIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NhbGVuZGFyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9kYXRldGltZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZGF0ZXRpbWUuKiAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19kYXRldGltZS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX2RhdGV0aW1lLiouc28gIgotCi1TVU1NQVJZXyR7UE59LWRiPSJQeXRob24gZmlsZS1iYXNlZCBkYXRhYmFzZSBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tZGI9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1kYj0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9hbnlkYm0uKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2FueWRibS4qICR7bGliZGlyfS9weXRob24zLjUvZHVtYmRibS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZHVtYmRibS4qICR7bGliZGlyfS9weXRob24zLjUvd2hpY2hkYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vd2hpY2hkYi4qICR7bGliZGlyfS9weXRob24zLjUvZGJtICR7bGliZGlyfS9weXRob24zLjUvZGJtL19fcHljYWNoZV9fICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2RibS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX2RibS4qLnNvICIKLQotU1VNTUFSWV8ke1BOfS1kZWJ1Z2dlcj0iUHl0aG9uIGRlYnVnZ2VyIgotUkRFUEVORFNfJHtQTn0tZGVidWdnZXI9IiR7UE59LWNvcmUgJHtQTn0taW8gJHtQTn0tbGFuZyAke1BOfS1yZSAke1BOfS1zdHJpbmdvbGQgJHtQTn0tc2hlbGwgJHtQTn0tcHByaW50ICR7UE59LWltcG9ydGxpYiAke1BOfS1wa2d1dGlsIgotRklMRVNfJHtQTn0tZGVidWdnZXI9IiR7bGliZGlyfS9weXRob24zLjUvYmRiLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9iZGIuKiAke2xpYmRpcn0vcHl0aG9uMy41L3BkYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcGRiLiogIgotCi1TVU1NQVJZXyR7UE59LWRldj0iUHl0aG9uIGRldmVsb3BtZW50IHBhY2thZ2UiCi1SREVQRU5EU18ke1BOfS1kZXY9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1kZXY9IiR7aW5jbHVkZWRpcn0gJHtsaWJkaXJ9L2xpYioke1NPTElCU0RFVn0gJHtsaWJkaXJ9LyoubGEgJHtsaWJkaXJ9LyouYSAke2xpYmRpcn0vKi5vICR7bGliZGlyfS9wa2djb25maWcgJHtiYXNlX2xpYmRpcn0vKi5hICR7YmFzZV9saWJkaXJ9LyoubyAke2RhdGFkaXJ9L2FjbG9jYWwgJHtkYXRhZGlyfS9wa2djb25maWcgJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25maWcqL01ha2VmaWxlICR7bGliZGlyfS9weXRob24zLjUvY29uZmlnKi9NYWtlZmlsZS9fX3B5Y2FjaGVfXyAiCi0KLVNVTU1BUllfJHtQTn0tZGlmZmxpYj0iUHl0aG9uIGhlbHBlcnMgZm9yIGNvbXB1dGluZyBkZWx0YXMgYmV0d2VlbiBvYmplY3RzIgotUkRFUEVORFNfJHtQTn0tZGlmZmxpYj0iJHtQTn0tbGFuZyAke1BOfS1yZSIKLUZJTEVTXyR7UE59LWRpZmZsaWI9IiR7bGliZGlyfS9weXRob24zLjUvZGlmZmxpYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZGlmZmxpYi4qICIKLQotU1VNTUFSWV8ke1BOfS1kaXN0dXRpbHM9IlB5dGhvbiBEaXN0cmlidXRpb24gVXRpbGl0aWVzIgotUkRFUEVORFNfJHtQTn0tZGlzdHV0aWxzPSIke1BOfS1jb3JlICR7UE59LWVtYWlsIgotRklMRVNfJHtQTn0tZGlzdHV0aWxzPSIke2xpYmRpcn0vcHl0aG9uMy41L2NvbmZpZyAke2xpYmRpcn0vcHl0aG9uMy41L2NvbmZpZy9fX3B5Y2FjaGVfXyAke2xpYmRpcn0vcHl0aG9uMy41L2Rpc3R1dGlscyAke2xpYmRpcn0vcHl0aG9uMy41L2Rpc3R1dGlscy9fX3B5Y2FjaGVfXyAiCi0KLVNVTU1BUllfJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2Rldj0iUHl0aG9uIGRpc3RyaWJ1dGlvbiB1dGlsaXRpZXMgKHN0YXRpYyBsaWJyYXJpZXMpIgotUkRFUEVORFNfJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2Rldj0iJHtQTn0tZGlzdHV0aWxzIgotRklMRVNfJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2Rldj0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25maWcvbGliKi5hICR7bGliZGlyfS9weXRob24zLjUvY29uZmlnL19fcHljYWNoZV9fL2xpYiouYSAiCi0KLVNVTU1BUllfJHtQTn0tZG9jdGVzdD0iUHl0aG9uIGZyYW1ld29yayBmb3IgcnVubmluZyBleGFtcGxlcyBpbiBkb2NzdHJpbmdzIgotUkRFUEVORFNfJHtQTn0tZG9jdGVzdD0iJHtQTn0tY29yZSAke1BOfS1sYW5nICR7UE59LWlvICR7UE59LXJlICR7UE59LXVuaXR0ZXN0ICR7UE59LWRlYnVnZ2VyICR7UE59LWRpZmZsaWIiCi1GSUxFU18ke1BOfS1kb2N0ZXN0PSIke2xpYmRpcn0vcHl0aG9uMy41L2RvY3Rlc3QuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2RvY3Rlc3QuKiAiCi0KLVNVTU1BUllfJHtQTn0tZW1haWw9IlB5dGhvbiBlbWFpbCBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tZW1haWw9IiR7UE59LWNvcmUgJHtQTn0taW8gJHtQTn0tcmUgJHtQTn0tbWltZSAke1BOfS1hdWRpbyAke1BOfS1pbWFnZSAke1BOfS1uZXRjbGllbnQiCi1GSUxFU18ke1BOfS1lbWFpbD0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbWFwbGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9pbWFwbGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9lbWFpbCAke2xpYmRpcn0vcHl0aG9uMy41L2VtYWlsL19fcHljYWNoZV9fICIKLQotU1VNTUFSWV8ke1BOfS1lbnVtPSJQeXRob24gc3VwcG9ydCBmb3IgZW51bWVyYXRpb25zIgotUkRFUEVORFNfJHtQTn0tZW51bT0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWVudW09IiR7bGliZGlyfS9weXRob24zLjUvZW51bS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZW51bS4qICIKLQotU1VNTUFSWV8ke1BOfS1mY250bD0iUHl0aG9uJ3MgZmNudGwgaW50ZXJmYWNlIgotUkRFUEVORFNfJHtQTn0tZmNudGw9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1mY250bD0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9mY250bC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vZmNudGwuKi5zbyAiCi0KLVNVTU1BUllfJHtQTn0tZ2RibT0iUHl0aG9uIEdOVSBkYXRhYmFzZSBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tZ2RibT0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LWdkYm09IiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2dkYm0uKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19nZGJtLiouc28gIgotCi1TVU1NQVJZXyR7UE59LWh0bWw9IlB5dGhvbiBIVE1MIHByb2Nlc3Npbmcgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LWh0bWw9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1odG1sPSIke2xpYmRpcn0vcHl0aG9uMy41L2Zvcm1hdHRlci4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZm9ybWF0dGVyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9odG1sZW50aXR5ZGVmcy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaHRtbGVudGl0eWRlZnMuKiAke2xpYmRpcn0vcHl0aG9uMy41L2h0bWwgJHtsaWJkaXJ9L3B5dGhvbjMuNS9odG1sL19fcHljYWNoZV9fICR7bGliZGlyfS9weXRob24zLjUvaHRtbGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaHRtbGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvbWFya3VwYmFzZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbWFya3VwYmFzZS4qICR7bGliZGlyfS9weXRob24zLjUvc2dtbGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc2dtbGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvSFRNTFBhcnNlci4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vSFRNTFBhcnNlci4qICIKLQotU1VNTUFSWV8ke1BOfS1pZGxlPSJQeXRob24gSW50ZWdyYXRlZCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCIKLVJERVBFTkRTXyR7UE59LWlkbGU9IiR7UE59LWNvcmUgJHtQTn0tdGtpbnRlciIKLUZJTEVTXyR7UE59LWlkbGU9IiR7YmluZGlyfS9pZGxlICR7bGliZGlyfS9weXRob24zLjUvaWRsZWxpYiAke2xpYmRpcn0vcHl0aG9uMy41L2lkbGVsaWIvX19weWNhY2hlX18gIgotCi1TVU1NQVJZXyR7UE59LWltYWdlPSJQeXRob24gZ3JhcGhpY2FsIGltYWdlIGhhbmRsaW5nIgotUkRFUEVORFNfJHtQTn0taW1hZ2U9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1pbWFnZT0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb2xvcnN5cy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29sb3JzeXMuKiAke2xpYmRpcn0vcHl0aG9uMy41L2ltZ2hkci4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaW1naGRyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9pbWFnZW9wLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9pbWFnZW9wLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9yZ2JpbWcuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3JnYmltZy4qLnNvICIKLQotU1VNTUFSWV8ke1BOfS1pbXBvcnRsaWI9IlB5dGhvbiBpbXBvcnQgaW1wbGVtZW50YXRpb24gbGlicmFyeSIKLVJERVBFTkRTXyR7UE59LWltcG9ydGxpYj0iJHtQTn0tY29yZSAke1BOfS1sYW5nIgotRklMRVNfJHtQTn0taW1wb3J0bGliPSIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYiAke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi9fX3B5Y2FjaGVfXyAke2xpYmRpcn0vcHl0aG9uMy41L2ltcC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaW1wLiogIgotCi1TVU1NQVJZXyR7UE59LWlvPSJQeXRob24gbG93LWxldmVsIEkvTyIKLVJERVBFTkRTXyR7UE59LWlvPSIke1BOfS1jb3JlICR7UE59LW1hdGgiCi1GSUxFU18ke1BOfS1pbz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fc29ja2V0Liouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fc29ja2V0Liouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9faW8uKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19pby4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3NzbC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX3NzbC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvc2VsZWN0Liouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9zZWxlY3QuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3Rlcm1pb3MuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3Rlcm1pb3MuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2NTdHJpbmdJTy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vY1N0cmluZ0lPLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9pcGFkZHJlc3MuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2lwYWRkcmVzcy4qICR7bGliZGlyfS9weXRob24zLjUvcGlwZXMuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BpcGVzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zb2NrZXQuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NvY2tldC4qICR7bGliZGlyfS9weXRob24zLjUvc3NsLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zc2wuKiAke2xpYmRpcn0vcHl0aG9uMy41L3RlbXBmaWxlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90ZW1wZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvU3RyaW5nSU8uKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL1N0cmluZ0lPLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9pby4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaW8uKiAke2xpYmRpcn0vcHl0aG9uMy41L19weWlvLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fcHlpby4qICIKLQotU1VNTUFSWV8ke1BOfS1qc29uPSJQeXRob24gSlNPTiBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tanNvbj0iJHtQTn0tY29yZSAke1BOfS1tYXRoICR7UE59LXJlIgotRklMRVNfJHtQTn0tanNvbj0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9qc29uICR7bGliZGlyfS9weXRob24zLjUvanNvbi9fX3B5Y2FjaGVfXyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19qc29uLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fanNvbi4qLnNvICIKLQotU1VNTUFSWV8ke1BOfS1sYW5nPSJQeXRob24gbG93LWxldmVsIGxhbmd1YWdlIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1sYW5nPSIke1BOfS1jb3JlICR7UE59LWltcG9ydGxpYiIKLUZJTEVTXyR7UE59LWxhbmc9IiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2Jpc2VjdC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX2Jpc2VjdC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2NvbGxlY3Rpb25zLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fY29sbGVjdGlvbnMuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19oZWFwcS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX2hlYXBxLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fd2Vha3JlZi4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX3dlYWtyZWYuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19mdW5jdG9vbHMuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19mdW5jdG9vbHMuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2FycmF5Liouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9hcnJheS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvaXRlcnRvb2xzLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9pdGVydG9vbHMuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL29wZXJhdG9yLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9vcGVyYXRvci4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvcGFyc2VyLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9wYXJzZXIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2F0ZXhpdC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYXRleGl0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9iaXNlY3QuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2Jpc2VjdC4qICR7bGliZGlyfS9weXRob24zLjUvY29kZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29kZS4qICR7bGliZGlyfS9weXRob24zLjUvY29kZW9wLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb2Rlb3AuKiAke2xpYmRpcn0vcHl0aG9uMy41L2NvbGxlY3Rpb25zLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb2xsZWN0aW9ucy4qICR7bGliZGlyfS9weXRob24zLjUvX2NvbGxlY3Rpb25zX2FiYy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX2NvbGxlY3Rpb25zX2FiYy4qICR7bGliZGlyfS9weXRob24zLjUvY29udGV4dGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29udGV4dGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvZGlzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kaXMuKiAke2xpYmRpcn0vcHl0aG9uMy41L2Z1bmN0b29scy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZnVuY3Rvb2xzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9oZWFwcS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaGVhcHEuKiAke2xpYmRpcn0vcHl0aG9uMy41L2luc3BlY3QuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2luc3BlY3QuKiAke2xpYmRpcn0vcHl0aG9uMy41L2tleXdvcmQuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2tleXdvcmQuKiAke2xpYmRpcn0vcHl0aG9uMy41L29wY29kZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vb3Bjb2RlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9vcGVyYXRvci4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vb3BlcmF0b3IuKiAke2xpYmRpcn0vcHl0aG9uMy41L3N5bWJvbC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3ltYm9sLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9yZXByLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9yZXByLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS90b2tlbi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdG9rZW4uKiAke2xpYmRpcn0vcHl0aG9uMy41L3Rva2VuaXplLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90b2tlbml6ZS4qICR7bGliZGlyfS9weXRob24zLjUvdHJhY2ViYWNrLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90cmFjZWJhY2suKiAke2xpYmRpcn0vcHl0aG9uMy41L3dlYWtyZWYuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3dlYWtyZWYuKiAiCi0KLVNVTU1BUllfJHtQTn0tbG9nZ2luZz0iUHl0aG9uIGxvZ2dpbmcgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LWxvZ2dpbmc9IiR7UE59LWNvcmUgJHtQTn0taW8gJHtQTn0tbGFuZyAke1BOfS1waWNrbGUgJHtQTn0tc3RyaW5nb2xkIgotRklMRVNfJHtQTn0tbG9nZ2luZz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9sb2dnaW5nICR7bGliZGlyfS9weXRob24zLjUvbG9nZ2luZy9fX3B5Y2FjaGVfXyAiCi0KLVNVTU1BUllfJHtQTn0tbWFpbGJveD0iUHl0aG9uIG1haWxib3ggZm9ybWF0IHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1tYWlsYm94PSIke1BOfS1jb3JlICR7UE59LW1pbWUiCi1GSUxFU18ke1BOfS1tYWlsYm94PSIke2xpYmRpcn0vcHl0aG9uMy41L21haWxib3guKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL21haWxib3guKiAiCi0KLVNVTU1BUllfJHtQTn0tbWF0aD0iUHl0aG9uIG1hdGggc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LW1hdGg9IiR7UE59LWNvcmUgJHtQTn0tY3J5cHQiCi1GSUxFU18ke1BOfS1tYXRoPSIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2NtYXRoLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9jbWF0aC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvbWF0aC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vbWF0aC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3JhbmRvbS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX3JhbmRvbS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvcmFuZG9tLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9yYW5kb20uKiAke2xpYmRpcn0vcHl0aG9uMy41L3NldHMuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NldHMuKiAiCi0KLVNVTU1BUllfJHtQTn0tbWltZT0iUHl0aG9uIE1JTUUgaGFuZGxpbmcgQVBJcyIKLVJERVBFTkRTXyR7UE59LW1pbWU9IiR7UE59LWNvcmUgJHtQTn0taW8iCi1GSUxFU18ke1BOfS1taW1lPSIke2xpYmRpcn0vcHl0aG9uMy41L21pbWV0b29scy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbWltZXRvb2xzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS91dS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdXUuKiAke2xpYmRpcn0vcHl0aG9uMy41L3F1b3ByaS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcXVvcHJpLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9yZmM4MjIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3JmYzgyMi4qICR7bGliZGlyfS9weXRob24zLjUvTWltZVdyaXRlci4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vTWltZVdyaXRlci4qICIKLQotU1VNTUFSWV8ke1BOfS1tbWFwPSJQeXRob24gbWVtb3J5LW1hcHBlZCBmaWxlIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1tbWFwPSIke1BOfS1jb3JlICR7UE59LWlvIgotRklMRVNfJHtQTn0tbW1hcD0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9tbWFwLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9tbWFwLiouc28gIgotCi1TVU1NQVJZXyR7UE59LW11bHRpcHJvY2Vzc2luZz0iUHl0aG9uIG11bHRpcHJvY2Vzc2luZyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tbXVsdGlwcm9jZXNzaW5nPSIke1BOfS1jb3JlICR7UE59LWlvICR7UE59LWxhbmcgJHtQTn0tcGlja2xlICR7UE59LXRocmVhZGluZyAke1BOfS1jdHlwZXMgJHtQTn0tbW1hcCIKLUZJTEVTXyR7UE59LW11bHRpcHJvY2Vzc2luZz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fbXVsdGlwcm9jZXNzaW5nLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fbXVsdGlwcm9jZXNzaW5nLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9tdWx0aXByb2Nlc3NpbmcgJHtsaWJkaXJ9L3B5dGhvbjMuNS9tdWx0aXByb2Nlc3NpbmcvX19weWNhY2hlX18gIgotCi1TVU1NQVJZXyR7UE59LW5ldGNsaWVudD0iUHl0aG9uIEludGVybmV0IFByb3RvY29sIGNsaWVudHMiCi1SREVQRU5EU18ke1BOfS1uZXRjbGllbnQ9IiR7UE59LWFyZ3BhcnNlICR7UE59LWNvcmUgJHtQTn0tY3J5cHQgJHtQTn0tZGF0ZXRpbWUgJHtQTn0taW8gJHtQTn0tbGFuZyAke1BOfS1sb2dnaW5nICR7UE59LW1pbWUgJHtQTn0taHRtbCIKLUZJTEVTXyR7UE59LW5ldGNsaWVudD0iJHtsaWJkaXJ9L3B5dGhvbjMuNS8qQ29va2llKi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vKkNvb2tpZSouKiAke2xpYmRpcn0vcHl0aG9uMy41L2Jhc2U2NC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYmFzZTY0LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb29raWVsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2Nvb2tpZWxpYi4qICR7bGliZGlyfS9weXRob24zLjUvZnRwbGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9mdHBsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L2dvcGhlcmxpYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ29waGVybGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9obWFjLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9obWFjLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9odHRwKiAke2xpYmRpcn0vcHl0aG9uMy41L2h0dHAqL19fcHljYWNoZV9fICR7bGliZGlyfS9weXRob24zLjUvaHR0cGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaHR0cGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvbWltZXR5cGVzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9taW1ldHlwZXMuKiAke2xpYmRpcn0vcHl0aG9uMy41L25udHBsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL25udHBsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L3BvcGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcG9wbGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zbXRwbGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zbXRwbGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS90ZWxuZXRsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3RlbG5ldGxpYi4qICR7bGliZGlyfS9weXRob24zLjUvdXJsbGliICR7bGliZGlyfS9weXRob24zLjUvdXJsbGliL19fcHljYWNoZV9fICR7bGliZGlyfS9weXRob24zLjUvdXVpZC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdXVpZC4qICR7bGliZGlyfS9weXRob24zLjUvcmZjODIyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9yZmM4MjIuKiAke2xpYmRpcn0vcHl0aG9uMy41L21pbWV0b29scy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbWltZXRvb2xzLiogIgotCi1TVU1NQVJZXyR7UE59LW5ldHNlcnZlcj0iUHl0aG9uIEludGVybmV0IFByb3RvY29sIHNlcnZlcnMiCi1SREVQRU5EU18ke1BOfS1uZXRzZXJ2ZXI9IiR7UE59LWNvcmUgJHtQTn0tbmV0Y2xpZW50ICR7UE59LXNoZWxsICR7UE59LXRocmVhZGluZyIKLUZJTEVTXyR7UE59LW5ldHNlcnZlcj0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9jZ2kuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NnaS4qICR7bGliZGlyfS9weXRob24zLjUvc29ja2V0c2VydmVyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zb2NrZXRzZXJ2ZXIuKiAke2xpYmRpcn0vcHl0aG9uMy41LypIVFRQU2VydmVyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy8qSFRUUFNlcnZlci4qICR7bGliZGlyfS9weXRob24zLjUvU29ja2V0U2VydmVyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9Tb2NrZXRTZXJ2ZXIuKiAiCi0KLVNVTU1BUllfJHtQTn0tbnVtYmVycz0iUHl0aG9uIG51bWJlciBBUElzIgotUkRFUEVORFNfJHtQTn0tbnVtYmVycz0iJHtQTn0tY29yZSAke1BOfS1sYW5nICR7UE59LXJlIgotRklMRVNfJHtQTn0tbnVtYmVycz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9kZWNpbWFsLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kZWNpbWFsLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9mcmFjdGlvbnMuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2ZyYWN0aW9ucy4qICR7bGliZGlyfS9weXRob24zLjUvbnVtYmVycy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbnVtYmVycy4qICIKLQotU1VNTUFSWV8ke1BOfS1waWNrbGU9IlB5dGhvbiBzZXJpYWxpc2F0aW9uL3BlcnNpc3RlbmNlIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1waWNrbGU9IiR7UE59LWNvcmUgJHtQTn0tY29kZWNzICR7UE59LWlvICR7UE59LXJlIgotRklMRVNfJHtQTn0tcGlja2xlPSIke2xpYmRpcn0vcHl0aG9uMy41L19jb21wYXRfcGlja2xlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fY29tcGF0X3BpY2tsZS4qICR7bGliZGlyfS9weXRob24zLjUvcGlja2xlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9waWNrbGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L3NoZWx2ZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc2hlbHZlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9jUGlja2xlLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9jUGlja2xlLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9waWNrbGV0b29scy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcGlja2xldG9vbHMuKiAiCi0KLVNVTU1BUllfJHtQTn0tcGtndXRpbD0iUHl0aG9uIHBhY2thZ2UgZXh0ZW5zaW9uIHV0aWxpdHkgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXBrZ3V0aWw9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1wa2d1dGlsPSIke2xpYmRpcn0vcHl0aG9uMy41L3BrZ3V0aWwuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BrZ3V0aWwuKiAiCi0KLVNVTU1BUllfJHtQTn0tcHByaW50PSJQeXRob24gcHJldHR5LXByaW50IHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1wcHJpbnQ9IiR7UE59LWNvcmUgJHtQTn0taW8iCi1GSUxFU18ke1BOfS1wcHJpbnQ9IiR7bGliZGlyfS9weXRob24zLjUvcHByaW50LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wcHJpbnQuKiAiCi0KLVNVTU1BUllfJHtQTn0tcHJvZmlsZT0iUHl0aG9uIGJhc2ljIHBlcmZvcm1hbmNlIHByb2ZpbGluZyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tcHJvZmlsZT0iJHtQTn0tY29yZSAke1BOfS10ZXh0dXRpbHMiCi1GSUxFU18ke1BOfS1wcm9maWxlPSIke2xpYmRpcn0vcHl0aG9uMy41L3Byb2ZpbGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3Byb2ZpbGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L3BzdGF0cy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcHN0YXRzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jUHJvZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY1Byb2ZpbGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19sc3Byb2YuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19sc3Byb2YuKi5zbyAiCi0KLVNVTU1BUllfJHtQTn0tcHlkb2M9IlB5dGhvbiBpbnRlcmFjdGl2ZSBoZWxwIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1weWRvYz0iJHtQTn0tY29yZSAke1BOfS1sYW5nICR7UE59LXN0cmluZ29sZCAke1BOfS1yZSIKLUZJTEVTXyR7UE59LXB5ZG9jPSIke2JpbmRpcn0vcHlkb2MgJHtsaWJkaXJ9L3B5dGhvbjMuNS9weWRvYy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcHlkb2MuKiAke2xpYmRpcn0vcHl0aG9uMy41L3B5ZG9jX2RhdGEgJHtsaWJkaXJ9L3B5dGhvbjMuNS9weWRvY19kYXRhL19fcHljYWNoZV9fICIKLQotU1VNTUFSWV8ke1BOfS1yZT0iUHl0aG9uIFJlZ3VsYXIgRXhwcmVzc2lvbiBBUElzIgotUkRFUEVORFNfJHtQTn0tcmU9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1yZT0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9yZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcmUuKiAke2xpYmRpcn0vcHl0aG9uMy41L3NyZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3JlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcmVfY29tcGlsZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3JlX2NvbXBpbGUuKiAke2xpYmRpcn0vcHl0aG9uMy41L3NyZV9jb25zdGFudHMqICR7bGliZGlyfS9weXRob24zLjUvc3JlX2NvbnN0YW50cyovX19weWNhY2hlX18gJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcmVfcGFyc2UuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NyZV9wYXJzZS4qICIKLQotU1VNTUFSWV8ke1BOfS1yZWFkbGluZT0iUHl0aG9uIHJlYWRsaW5lIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1yZWFkbGluZT0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LXJlYWRsaW5lPSIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3JlYWRsaW5lLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9yZWFkbGluZS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvcmxjb21wbGV0ZXIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3JsY29tcGxldGVyLiogIgotCi1TVU1NQVJZXyR7UE59LXJlcHJsaWI9IlB5dGhvbiBhbHRlcm5hdGUgcmVwcigpIGltcGxlbWVudGF0aW9uIgotUkRFUEVORFNfJHtQTn0tcmVwcmxpYj0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LXJlcHJsaWI9IiR7bGliZGlyfS9weXRob24zLjUvcmVwcmxpYi5weSAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3JlcHJsaWIucHkgIgotCi1TVU1NQVJZXyR7UE59LXJlc291cmNlPSJQeXRob24gcmVzb3VyY2UgY29udHJvbCBpbnRlcmZhY2UiCi1SREVQRU5EU18ke1BOfS1yZXNvdXJjZT0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LXJlc291cmNlPSIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3Jlc291cmNlLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9yZXNvdXJjZS4qLnNvICIKLQotU1VNTUFSWV8ke1BOfS1zZWxlY3RvcnM9IlB5dGhvbiBIaWdoLWxldmVsIEkvTyBtdWx0aXBsZXhpbmciCi1SREVQRU5EU18ke1BOfS1zZWxlY3RvcnM9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1zZWxlY3RvcnM9IiR7bGliZGlyfS9weXRob24zLjUvc2VsZWN0b3JzLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zZWxlY3RvcnMuKiAiCi0KLVNVTU1BUllfJHtQTn0tc2hlbGw9IlB5dGhvbiBzaGVsbC1saWtlIGZ1bmN0aW9uYWxpdHkiCi1SREVQRU5EU18ke1BOfS1zaGVsbD0iJHtQTn0tY29yZSAke1BOfS1yZSAke1BOfS1jb21wcmVzc2lvbiIKLUZJTEVTXyR7UE59LXNoZWxsPSIke2xpYmRpcn0vcHl0aG9uMy41L2NtZC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY21kLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb21tYW5kcy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29tbWFuZHMuKiAke2xpYmRpcn0vcHl0aG9uMy41L2RpcmNhY2hlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kaXJjYWNoZS4qICR7bGliZGlyfS9weXRob24zLjUvZm5tYXRjaC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZm5tYXRjaC4qICR7bGliZGlyfS9weXRob24zLjUvZ2xvYi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ2xvYi4qICR7bGliZGlyfS9weXRob24zLjUvcG9wZW4yLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wb3BlbjIuKiAke2xpYmRpcn0vcHl0aG9uMy41L3NobGV4LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zaGxleC4qICR7bGliZGlyfS9weXRob24zLjUvc2h1dGlsLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zaHV0aWwuKiAiCi0KLVNVTU1BUllfJHtQTn0tc2lnbmFsPSJQeXRob24gc2V0IGhhbmRsZXJzIGZvciBhc3luY2hyb25vdXMgZXZlbnRzIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1zaWduYWw9IiR7UE59LWNvcmUgJHtQTn0tZW51bSIKLUZJTEVTXyR7UE59LXNpZ25hbD0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaWduYWwuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NpZ25hbC4qICIKLQotU1VNTUFSWV8ke1BOfS1zbXRwZD0iUHl0aG9uIFNpbXBsZSBNYWlsIFRyYW5zcG9ydCBEYWVtb24iCi1SREVQRU5EU18ke1BOfS1zbXRwZD0iJHtQTn0tY29yZSAke1BOfS1uZXRzZXJ2ZXIgJHtQTn0tZW1haWwgJHtQTn0tbWltZSIKLUZJTEVTXyR7UE59LXNtdHBkPSIke2JpbmRpcn0vc210cGQuKiAke2xpYmRpcn0vcHl0aG9uMy41L3NtdHBkLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zbXRwZC4qICIKLQotU1VNTUFSWV8ke1BOfS1zcWxpdGUzPSJQeXRob24gU3FsaXRlMyBkYXRhYmFzZSBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0tc3FsaXRlMz0iJHtQTn0tY29yZSAke1BOfS1kYXRldGltZSAke1BOfS1sYW5nICR7UE59LWNyeXB0ICR7UE59LWlvICR7UE59LXRocmVhZGluZyIKLUZJTEVTXyR7UE59LXNxbGl0ZTM9IiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3NxbGl0ZTMuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19zcWxpdGUzLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcWxpdGUzL2RiYXBpMi4qICR7bGliZGlyfS9weXRob24zLjUvc3FsaXRlMy9fX3B5Y2FjaGVfXy9kYmFwaTIuKiAke2xpYmRpcn0vcHl0aG9uMy41L3NxbGl0ZTMvX19pbml0X18uKiAke2xpYmRpcn0vcHl0aG9uMy41L3NxbGl0ZTMvX19weWNhY2hlX18vX19pbml0X18uKiAke2xpYmRpcn0vcHl0aG9uMy41L3NxbGl0ZTMvZHVtcC4qICR7bGliZGlyfS9weXRob24zLjUvc3FsaXRlMy9fX3B5Y2FjaGVfXy9kdW1wLiogIgotCi1TVU1NQVJZXyR7UE59LXNxbGl0ZTMtdGVzdHM9IlB5dGhvbiBTcWxpdGUzIGRhdGFiYXNlIHN1cHBvcnQgdGVzdHMiCi1SREVQRU5EU18ke1BOfS1zcWxpdGUzLXRlc3RzPSIke1BOfS1jb3JlICR7UE59LXNxbGl0ZTMiCi1GSUxFU18ke1BOfS1zcWxpdGUzLXRlc3RzPSIke2xpYmRpcn0vcHl0aG9uMy41L3NxbGl0ZTMvdGVzdCAke2xpYmRpcn0vcHl0aG9uMy41L3NxbGl0ZTMvdGVzdC9fX3B5Y2FjaGVfXyAiCi0KLVNVTU1BUllfJHtQTn0tc3RyaW5nb2xkPSJQeXRob24gc3RyaW5nIEFQSXMgW2RlcHJlY2F0ZWRdIgotUkRFUEVORFNfJHtQTn0tc3RyaW5nb2xkPSIke1BOfS1jb3JlICR7UE59LXJlIgotRklMRVNfJHtQTn0tc3RyaW5nb2xkPSIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3N0cm9wLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9zdHJvcC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvc3RyaW5nLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zdHJpbmcuKiAke2xpYmRpcn0vcHl0aG9uMy41L3N0cmluZ29sZC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3RyaW5nb2xkLiogIgotCi1TVU1NQVJZXyR7UE59LXN1YnByb2Nlc3M9IlB5dGhvbiBzdWJwcm9jZXNzIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS1zdWJwcm9jZXNzPSIke1BOfS1jb3JlICR7UE59LWlvICR7UE59LXJlICR7UE59LWZjbnRsICR7UE59LXBpY2tsZSAke1BOfS10aHJlYWRpbmcgJHtQTn0tc2lnbmFsICR7UE59LXNlbGVjdG9ycyIKLUZJTEVTXyR7UE59LXN1YnByb2Nlc3M9IiR7bGliZGlyfS9weXRob24zLjUvc3VicHJvY2Vzcy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3VicHJvY2Vzcy4qICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3Bvc2l4c3VicHJvY2Vzcy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX3Bvc2l4c3VicHJvY2Vzcy4qLnNvICIKLQotU1VNTUFSWV8ke1BOfS1zeXNsb2c9IlB5dGhvbiBzeXNsb2cgaW50ZXJmYWNlIgotUkRFUEVORFNfJHtQTn0tc3lzbG9nPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tc3lzbG9nPSIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3N5c2xvZy4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vc3lzbG9nLiouc28gIgotCi1TVU1NQVJZXyR7UE59LXRlcm1pbmFsPSJQeXRob24gdGVybWluYWwgY29udHJvbGxpbmcgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXRlcm1pbmFsPSIke1BOfS1jb3JlICR7UE59LWlvIgotRklMRVNfJHtQTn0tdGVybWluYWw9IiR7bGliZGlyfS9weXRob24zLjUvcHR5LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wdHkuKiAke2xpYmRpcn0vcHl0aG9uMy41L3R0eS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdHR5LiogIgotCi1TVU1NQVJZXyR7UE59LXRlc3RzPSJQeXRob24gdGVzdHMiCi1SREVQRU5EU18ke1BOfS10ZXN0cz0iJHtQTn0tY29yZSAke1BOfS1jb21wcmVzc2lvbiIKLUZJTEVTXyR7UE59LXRlc3RzPSIke2xpYmRpcn0vcHl0aG9uMy41L3Rlc3QgJHtsaWJkaXJ9L3B5dGhvbjMuNS90ZXN0L19fcHljYWNoZV9fICIKLQotU1VNTUFSWV8ke1BOfS10ZXh0dXRpbHM9IlB5dGhvbiBvcHRpb24gcGFyc2luZywgdGV4dCB3cmFwcGluZyBhbmQgQ1NWIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS10ZXh0dXRpbHM9IiR7UE59LWNvcmUgJHtQTn0taW8gJHtQTn0tcmUgJHtQTn0tc3RyaW5nb2xkIgotRklMRVNfJHtQTn0tdGV4dHV0aWxzPSIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19jc3YuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19jc3YuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2Nzdi4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY3N2LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9vcHRwYXJzZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vb3B0cGFyc2UuKiAke2xpYmRpcn0vcHl0aG9uMy41L3RleHR3cmFwLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90ZXh0d3JhcC4qICIKLQotU1VNTUFSWV8ke1BOfS10aHJlYWRpbmc9IlB5dGhvbiB0aHJlYWRpbmcgJiBzeW5jaHJvbml6YXRpb24gc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXRocmVhZGluZz0iJHtQTn0tY29yZSAke1BOfS1sYW5nIgotRklMRVNfJHtQTn0tdGhyZWFkaW5nPSIke2xpYmRpcn0vcHl0aG9uMy41L190aHJlYWRpbmdfbG9jYWwuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL190aHJlYWRpbmdfbG9jYWwuKiAke2xpYmRpcn0vcHl0aG9uMy41L2R1bW15X3RocmVhZC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZHVtbXlfdGhyZWFkLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9kdW1teV90aHJlYWRpbmcuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2R1bW15X3RocmVhZGluZy4qICR7bGliZGlyfS9weXRob24zLjUvbXV0ZXguKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL211dGV4LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS90aHJlYWRpbmcuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3RocmVhZGluZy4qICR7bGliZGlyfS9weXRob24zLjUvcXVldWUuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3F1ZXVlLiogIgotCi1TVU1NQVJZXyR7UE59LXRraW50ZXI9IlB5dGhvbiBUY2wvVGsgYmluZGluZ3MiCi1SREVQRU5EU18ke1BOfS10a2ludGVyPSIke1BOfS1jb3JlIgotRklMRVNfJHtQTn0tdGtpbnRlcj0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fdGtpbnRlci4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX3RraW50ZXIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi10ayAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi10ay9fX3B5Y2FjaGVfXyAke2xpYmRpcn0vcHl0aG9uMy41L3RraW50ZXIgJHtsaWJkaXJ9L3B5dGhvbjMuNS90a2ludGVyL19fcHljYWNoZV9fICIKLQotU1VNTUFSWV8ke1BOfS10eXBpbmc9IlB5dGhvbiB0eXBpbmcgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXR5cGluZz0iJHtQTn0tY29yZSIKLUZJTEVTXyR7UE59LXR5cGluZz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS90eXBpbmcuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3R5cGluZy4qICIKLQotU1VNTUFSWV8ke1BOfS11bml0dGVzdD0iUHl0aG9uIHVuaXQgdGVzdGluZyBmcmFtZXdvcmsiCi1SREVQRU5EU18ke1BOfS11bml0dGVzdD0iJHtQTn0tY29yZSAke1BOfS1zdHJpbmdvbGQgJHtQTn0tbGFuZyAke1BOfS1pbyAke1BOfS1kaWZmbGliICR7UE59LXBwcmludCAke1BOfS1zaGVsbCIKLUZJTEVTXyR7UE59LXVuaXR0ZXN0PSIke2xpYmRpcn0vcHl0aG9uMy41L3VuaXR0ZXN0LyAke2xpYmRpcn0vcHl0aG9uMy41L3VuaXR0ZXN0L19fcHljYWNoZV9fICIKLQotU1VNTUFSWV8ke1BOfS11bml4YWRtaW49IlB5dGhvbiBVbml4IGFkbWluaXN0cmF0aW9uIHN1cHBvcnQiCi1SREVQRU5EU18ke1BOfS11bml4YWRtaW49IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS11bml4YWRtaW49IiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvbmlzLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9uaXMuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2dycC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vZ3JwLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9wd2QuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3B3ZC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvZ2V0cGFzcy4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ2V0cGFzcy4qICIKLQotU1VNTUFSWV8ke1BOfS14bWw9IlB5dGhvbiBiYXNpYyBYTUwgc3VwcG9ydCIKLVJERVBFTkRTXyR7UE59LXhtbD0iJHtQTn0tY29yZSAke1BOfS1yZSIKLUZJTEVTXyR7UE59LXhtbD0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fZWxlbWVudHRyZWUuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19lbGVtZW50dHJlZS4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvcHlleHBhdC4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vcHlleHBhdC4qLnNvICR7bGliZGlyfS9weXRob24zLjUveG1sICR7bGliZGlyfS9weXRob24zLjUveG1sL19fcHljYWNoZV9fICR7bGliZGlyfS9weXRob24zLjUveG1sbGliLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy94bWxsaWIuKiAiCi0KLVNVTU1BUllfJHtQTn0teG1scnBjPSJQeXRob24gWE1MLVJQQyBzdXBwb3J0IgotUkRFUEVORFNfJHtQTn0teG1scnBjPSIke1BOfS1jb3JlICR7UE59LXhtbCAke1BOfS1uZXRzZXJ2ZXIgJHtQTn0tbGFuZyAke1BOfS1weWRvYyIKLUZJTEVTXyR7UE59LXhtbHJwYz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS94bWxycGNsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3htbHJwY2xpYi4qICR7bGliZGlyfS9weXRob24zLjUvU2ltcGxlWE1MUlBDU2VydmVyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9TaW1wbGVYTUxSUENTZXJ2ZXIuKiAke2xpYmRpcn0vcHl0aG9uMy41L0RvY1hNTFJQQ1NlcnZlci4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vRG9jWE1MUlBDU2VydmVyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS94bWxycGMgJHtsaWJkaXJ9L3B5dGhvbjMuNS94bWxycGMvX19weWNhY2hlX18gIgotCi1TVU1NQVJZXyR7UE59LW1vZHVsZXM9IkFsbCBQeXRob24gbW9kdWxlcyIKLVJERVBFTkRTXyR7UE59LW1vZHVsZXM9IiR7UE59LTJ0bzMgJHtQTn0tYXJncGFyc2UgJHtQTn0tYXN5bmNpbyAke1BOfS1hdWRpbyAke1BOfS1jb2RlY3MgJHtQTn0tY29tcGlsZSAke1BOfS1jb21wcmVzc2lvbiAke1BOfS1jb3JlICR7UE59LWNyeXB0ICR7UE59LWN0eXBlcyAke1BOfS1jdXJzZXMgJHtQTn0tZGF0ZXRpbWUgJHtQTn0tZGIgJHtQTn0tZGVidWdnZXIgJHtQTn0tZGlmZmxpYiAke1BOfS1kaXN0dXRpbHMgJHtQTn0tZG9jdGVzdCAke1BOfS1lbWFpbCAke1BOfS1lbnVtICR7UE59LWZjbnRsICR7UE59LWdkYm0gJHtQTn0taHRtbCAke1BOfS1pZGxlICR7UE59LWltYWdlICR7UE59LWltcG9ydGxpYiAke1BOfS1pbyAke1BOfS1qc29uICR7UE59LWxhbmcgJHtQTn0tbG9nZ2luZyAke1BOfS1tYWlsYm94ICR7UE59LW1hdGggJHtQTn0tbWltZSAke1BOfS1tbWFwICR7UE59LW11bHRpcHJvY2Vzc2luZyAke1BOfS1uZXRjbGllbnQgJHtQTn0tbmV0c2VydmVyICR7UE59LW51bWJlcnMgJHtQTn0tcGlja2xlICR7UE59LXBrZ3V0aWwgJHtQTn0tcHByaW50ICR7UE59LXByb2ZpbGUgJHtQTn0tcHlkb2MgJHtQTn0tcmUgJHtQTn0tcmVhZGxpbmUgJHtQTn0tcmVwcmxpYiAke1BOfS1yZXNvdXJjZSAke1BOfS1zZWxlY3RvcnMgJHtQTn0tc2hlbGwgJHtQTn0tc2lnbmFsICR7UE59LXNtdHBkICR7UE59LXNxbGl0ZTMgJHtQTn0tc3FsaXRlMy10ZXN0cyAke1BOfS1zdHJpbmdvbGQgJHtQTn0tc3VicHJvY2VzcyAke1BOfS1zeXNsb2cgJHtQTn0tdGVybWluYWwgJHtQTn0tdGV4dHV0aWxzICR7UE59LXRocmVhZGluZyAke1BOfS10a2ludGVyICR7UE59LXR5cGluZyAke1BOfS11bml0dGVzdCAke1BOfS11bml4YWRtaW4gJHtQTn0teG1sICR7UE59LXhtbHJwYyAgIgotQUxMT1dfRU1QVFlfJHtQTn0tbW9kdWxlcyA9ICIxIgotCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3luYy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXN5bmMuaW5jCmluZGV4IDJjNWNiNGQuLjY2NjRhYjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3luYy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzeW5jLmluYwpAQCAtNCwxMiArNCwxMSBAQAogTElDRU5TRSA9ICJCU0QiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztiZWdpbmxpbmU9ODtlbmRsaW5lPTg7bWQ1PTg4ZGY4ZTc4YjllZGZkNzQ0OTUzODYyMTc5ZjJkMTRlIgogCi1TUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2UvYS9hc3luYy9hc3luYy0ke1BWfS50YXIuZ3oiCitpbmhlcml0IHB5cGkKKwogU1JDX1VSSVttZDVzdW1dID0gIjliMDZiNTk5N2RlMjE1NGYzYmMwMjczZjgwYmNlZjZiIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImFjNjg5NGQ4NzZlNDU4NzhmYWFlNDkzYjBjZjYxZDBlMjhlYzQxNzMzNDQ0OGFjMGE2ZWEyMjI5ZDgzNDMwNTEiCiAKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2FzeW5jLyIKLQotUyA9ICIke1dPUktESVJ9L2FzeW5jLSR7UFZ9IgorUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS10aHJlYWRpbmciCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0LmluYwppbmRleCA3Nzc2MDhjLi44ZDM3NjkzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0LmluYwpAQCAtOCwxNCArOCwyNSBAQAogTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04YjhkMjZjMzdjMWQ1YTA0ZjliMDE4NmVkYmViYzE4MyIKIAotU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL0cvR2l0UHl0aG9uL0dpdFB5dGhvbi0ke1BWfS50YXIuZ3oiCitQWVBJX1BBQ0tBR0UgPSAiR2l0UHl0aG9uIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiZGY5NDIxMmIxOWQyNzBhNjI1YjY3YjRjODRhYzlhNDEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWMwMGNiZDI1NmUyYjFkMDM5MzgxZDRmN2Q3MWZjYjdlZTVjYzE5NmNhMTBjMTAxZmY3MTkxYmQ4MmFiNWQ5YyIKK2luaGVyaXQgcHlwaQogCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9HaXRQeXRob24vIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL0dpdFB5dGhvbi8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykiCitTUkNfVVJJW21kNXN1bV0gPSAiN2E5NGVlMWI5MjNmYjc3MmEyYTBjNjY0OTQzMGExN2MiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWQ2MWJjMjVkZWFkYjUzNWIwNDc2ODRkMDZmMzY1NGMwMDFkOTQxNWUxOTcxZTUxYzljMjBmNWI1MTAwNzZlOSIKIAotUyA9ICIke1dPUktESVJ9L0dpdFB5dGhvbi0ke1BWfSIKK0RFUEVORFMgPSAiJHtQWVRIT05fUE59LWdpdGRiIgogCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1naXRkYiBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWlvIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW1hdGggXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS11bml0dGVzdCBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXVuaXhhZG1pbiBcCisgICAgICAgICAgICAgICAgICAgZ2l0IFwKKyIKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdGRiLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXRkYi5pbmMKaW5kZXggMDgxOTNmYi4uMmQ1MjkyZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdGRiLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0ZGIuaW5jCkBAIC00LDEzICs0LDIxIEBACiBMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTU5ZTVlY2IxMzMzOWE5MzZlZWRmODMyODJlYWY0NTI4IgogCi1TUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2UvZy9naXRkYi9naXRkYi0ke1BWfS50YXIuZ3oiCitpbmhlcml0IHB5cGkKIAotU1JDX1VSSVttZDVzdW1dID0gIjQ0ZTQzNjZiOGJkZmQzMDZiMDc1YzNhNTJjOTZhZTFhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEzZWJiYzI3YmUwMzVhMmU4NzRlZDkwNGRmNTE2ZTM1ZjRhMjlhNzc4YTc2NDM4NWRlMDlkZTllMGYxMzk2NTgiCitQWVBJX1BBQ0tBR0UgPSAiZ2l0ZGIyIgogCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9naXRkYi8iCitTUkNfVVJJW21kNXN1bV0gPSAiZDUyMTdlYjk0ZWJkMzZmY2VjNjJiOTI5ZDFmNzJiMDAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjYwZTI5ZDQ1MzNlNWUyNWJiNTBiNzY3OGJiYzE4N2M4ZjZiY2ZmMTM0NGI0ZjI5M2IyYmE1NWM4NTc5NWYwOSIKIAotUyA9ICIke1dPUktESVJ9L2dpdGRiLSR7UFZ9IgorREVQRU5EUyA9ICIke1BZVEhPTl9QTn0tYXN5bmMgJHtQWVRIT05fUE59LXNldHVwdG9vbHMtbmF0aXZlICR7UFlUSE9OX1BOfS1zbW1hcCIKIAorUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1hc3luYyBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWNvbXByZXNzaW9uIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tY3J5cHQgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1pbyBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW1tYXAgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXNtbWFwIFwKKyIKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1ha28uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1ha28uaW5jCmluZGV4IDFjODNhZjYuLmUyNjViZGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYWtvLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFrby5pbmMKQEAgLTQsMTMgKzQsMTggQEAKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MWJiMjFmYTJkMmY3YTUzNGM4ODRiOTkwNDMwYTY4NjMiCiAKLVNSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9NL01ha28vTWFrby0ke1BWfS50YXIuZ3oiCitQWVBJX1BBQ0tBR0UgPSAiTWFrbyIKKworaW5oZXJpdCBweXBpCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI1ODM2Y2M5OTdiMWI3NzNlZjM4OWJmNjYyOWMzMGU2NSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZTAyZmRlNTdiZDRhYmI1ZWM0MDAxODFlNGMzMTRmNTZhYzNlNDliYTRmYjhiMGQ1MGJiYTE4Y2IyN2QyNWFlIgogCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9tYWtvLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9NYWtvLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKSIKK1JERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1odG1sIFwKKyAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisiCiAKLVMgPSAiJHtXT1JLRElSfS9NYWtvLSR7UFZ9IgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKIAorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS0yLjctbWFuaWZlc3QuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS0yLjctbWFuaWZlc3QuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDVhYWUwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUtMi43LW1hbmlmZXN0LmluYworKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotCi0jIFdBUk5JTkc6IFRoaXMgZmlsZSBpcyBBVVRPIEdFTkVSQVRFRDogTWFudWFsIGVkaXRzIHdpbGwgYmUgbG9zdCBuZXh0IHRpbWUgSSByZWdlbmVyYXRlIHRoZSBmaWxlLgotIyBHZW5lcmF0b3I6ICcuLi9zY3JpcHRzL2NvbnRyaWIvcHl0aG9uL2dlbmVyYXRlLW1hbmlmZXN0LTIuNy5weSAtLW5hdGl2ZScgVmVyc2lvbiAyMDExMDIyMi4yIChDKSAyMDAyLTIwMTAgTWljaGFlbCAnTWlja2V5JyBMYXVlciA8bWxhdWVyQHZhbmlsbGUtbWVkaWEuZGU+Ci0KLSAKLQotUlBST1ZJREVTICs9ICJweXRob24tbW9kdWxlcy1uYXRpdmUgcHl0aG9uLTJ0bzMtbmF0aXZlIHB5dGhvbi1hcmdwYXJzZS1uYXRpdmUgcHl0aG9uLWF1ZGlvLW5hdGl2ZSBweXRob24tYnNkZGItbmF0aXZlIHB5dGhvbi1jb2RlY3MtbmF0aXZlIHB5dGhvbi1jb21waWxlLW5hdGl2ZSBweXRob24tY29tcGlsZXItbmF0aXZlIHB5dGhvbi1jb21wcmVzc2lvbi1uYXRpdmUgcHl0aG9uLWNvbnRleHRsaWItbmF0aXZlIHB5dGhvbi1jb3JlLW5hdGl2ZSBweXRob24tY3J5cHQtbmF0aXZlIHB5dGhvbi1jdHlwZXMtbmF0aXZlIHB5dGhvbi1jdXJzZXMtbmF0aXZlIHB5dGhvbi1kYXRldGltZS1uYXRpdmUgcHl0aG9uLWRiLW5hdGl2ZSBweXRob24tZGVidWdnZXItbmF0aXZlIHB5dGhvbi1kZXYtbmF0aXZlIHB5dGhvbi1kaWZmbGliLW5hdGl2ZSBweXRob24tZGlzdHV0aWxzLW5hdGl2ZSBweXRob24tZGlzdHV0aWxzLXN0YXRpY2Rldi1uYXRpdmUgcHl0aG9uLWRvY3Rlc3QtbmF0aXZlIHB5dGhvbi1lbWFpbC1uYXRpdmUgcHl0aG9uLWZjbnRsLW5hdGl2ZSBweXRob24tZ2RibS1uYXRpdmUgcHl0aG9uLWhvdHNob3QtbmF0aXZlIHB5dGhvbi1odG1sLW5hdGl2ZSBweXRob24taWRsZS1uYXRpdmUgcHl0aG9uLWltYWdlLW5hdGl2ZSBweXRob24taW1wb3J0bGliLW5hdGl2ZSBweXRob24taW8tbmF0aXZlIHB5dGhvbi1qc29uLW5hdGl2ZSBweXRob24tbGFuZy1uYXRpdmUgcHl0aG9uLWxvZ2dpbmctbmF0aXZlIHB5dGhvbi1tYWlsYm94LW5hdGl2ZSBweXRob24tbWF0aC1uYXRpdmUgcHl0aG9uLW1pbWUtbmF0aXZlIHB5dGhvbi1tbWFwLW5hdGl2ZSBweXRob24tbXVsdGlwcm9jZXNzaW5nLW5hdGl2ZSBweXRob24tbmV0Y2xpZW50LW5hdGl2ZSBweXRob24tbmV0c2VydmVyLW5hdGl2ZSBweXRob24tbnVtYmVycy1uYXRpdmUgcHl0aG9uLXBpY2tsZS1uYXRpdmUgcHl0aG9uLXBrZ3V0aWwtbmF0aXZlIHB5dGhvbi1wbGlzdGxpYi1uYXRpdmUgcHl0aG9uLXBwcmludC1uYXRpdmUgcHl0aG9uLXByb2ZpbGUtbmF0aXZlIHB5dGhvbi1weWRvYy1uYXRpdmUgcHl0aG9uLXJlLW5hdGl2ZSBweXRob24tcmVhZGxpbmUtbmF0aXZlIHB5dGhvbi1yZXNvdXJjZS1uYXRpdmUgcHl0aG9uLXJvYm90cGFyc2VyLW5hdGl2ZSBweXRob24tc2hlbGwtbmF0aXZlIHB5dGhvbi1zbXRwZC1uYXRpdmUgcHl0aG9uLXNxbGl0ZTMtbmF0aXZlIHB5dGhvbi1zcWxpdGUzLXRlc3RzLW5hdGl2ZSBweXRob24tc3RyaW5nb2xkLW5hdGl2ZSBweXRob24tc3VicHJvY2Vzcy1uYXRpdmUgcHl0aG9uLXN5c2xvZy1uYXRpdmUgcHl0aG9uLXRlcm1pbmFsLW5hdGl2ZSBweXRob24tdGVzdHMtbmF0aXZlIHB5dGhvbi10ZXh0dXRpbHMtbmF0aXZlIHB5dGhvbi10aHJlYWRpbmctbmF0aXZlIHB5dGhvbi10a2ludGVyLW5hdGl2ZSBweXRob24tdW5pdHRlc3QtbmF0aXZlIHB5dGhvbi11bml4YWRtaW4tbmF0aXZlIHB5dGhvbi14bWwtbmF0aXZlIHB5dGhvbi14bWxycGMtbmF0aXZlIHB5dGhvbi16bGliLW5hdGl2ZSIKLQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLTMuNS1tYW5pZmVzdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLTMuNS1tYW5pZmVzdC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxZjczMmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS0zLjUtbWFuaWZlc3QuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotCi0jIFdBUk5JTkc6IFRoaXMgZmlsZSBpcyBBVVRPIEdFTkVSQVRFRDogTWFudWFsIGVkaXRzIHdpbGwgYmUgbG9zdCBuZXh0IHRpbWUgSSByZWdlbmVyYXRlIHRoZSBmaWxlLgotIyBHZW5lcmF0b3I6ICcuLi9zY3JpcHRzL2NvbnRyaWIvcHl0aG9uL2dlbmVyYXRlLW1hbmlmZXN0LTMuNS5weSAtLW5hdGl2ZScgVmVyc2lvbiAyMDE0MDEzMSAoQykgMjAwMi0yMDEwIE1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1sYXVlckB2YW5pbGxlLW1lZGlhLmRlPgotCi0gCi0KLVJQUk9WSURFUyArPSAicHl0aG9uMy1tb2R1bGVzLW5hdGl2ZSBweXRob24zLTJ0bzMtbmF0aXZlIHB5dGhvbjMtYXJncGFyc2UtbmF0aXZlIHB5dGhvbjMtYXN5bmNpby1uYXRpdmUgcHl0aG9uMy1hdWRpby1uYXRpdmUgcHl0aG9uMy1jb2RlY3MtbmF0aXZlIHB5dGhvbjMtY29tcGlsZS1uYXRpdmUgcHl0aG9uMy1jb21wcmVzc2lvbi1uYXRpdmUgcHl0aG9uMy1jb3JlLW5hdGl2ZSBweXRob24zLWNyeXB0LW5hdGl2ZSBweXRob24zLWN0eXBlcy1uYXRpdmUgcHl0aG9uMy1jdXJzZXMtbmF0aXZlIHB5dGhvbjMtZGF0ZXRpbWUtbmF0aXZlIHB5dGhvbjMtZGItbmF0aXZlIHB5dGhvbjMtZGVidWdnZXItbmF0aXZlIHB5dGhvbjMtZGV2LW5hdGl2ZSBweXRob24zLWRpZmZsaWItbmF0aXZlIHB5dGhvbjMtZGlzdHV0aWxzLW5hdGl2ZSBweXRob24zLWRpc3R1dGlscy1zdGF0aWNkZXYtbmF0aXZlIHB5dGhvbjMtZG9jdGVzdC1uYXRpdmUgcHl0aG9uMy1lbWFpbC1uYXRpdmUgcHl0aG9uMy1lbnVtLW5hdGl2ZSBweXRob24zLWZjbnRsLW5hdGl2ZSBweXRob24zLWdkYm0tbmF0aXZlIHB5dGhvbjMtaHRtbC1uYXRpdmUgcHl0aG9uMy1pZGxlLW5hdGl2ZSBweXRob24zLWltYWdlLW5hdGl2ZSBweXRob24zLWltcG9ydGxpYi1uYXRpdmUgcHl0aG9uMy1pby1uYXRpdmUgcHl0aG9uMy1qc29uLW5hdGl2ZSBweXRob24zLWxhbmctbmF0aXZlIHB5dGhvbjMtbG9nZ2luZy1uYXRpdmUgcHl0aG9uMy1tYWlsYm94LW5hdGl2ZSBweXRob24zLW1hdGgtbmF0aXZlIHB5dGhvbjMtbWltZS1uYXRpdmUgcHl0aG9uMy1tbWFwLW5hdGl2ZSBweXRob24zLW11bHRpcHJvY2Vzc2luZy1uYXRpdmUgcHl0aG9uMy1uZXRjbGllbnQtbmF0aXZlIHB5dGhvbjMtbmV0c2VydmVyLW5hdGl2ZSBweXRob24zLW51bWJlcnMtbmF0aXZlIHB5dGhvbjMtcGlja2xlLW5hdGl2ZSBweXRob24zLXBrZ3V0aWwtbmF0aXZlIHB5dGhvbjMtcHByaW50LW5hdGl2ZSBweXRob24zLXByb2ZpbGUtbmF0aXZlIHB5dGhvbjMtcHlkb2MtbmF0aXZlIHB5dGhvbjMtcmUtbmF0aXZlIHB5dGhvbjMtcmVhZGxpbmUtbmF0aXZlIHB5dGhvbjMtcmVwcmxpYi1uYXRpdmUgcHl0aG9uMy1yZXNvdXJjZS1uYXRpdmUgcHl0aG9uMy1zZWxlY3RvcnMtbmF0aXZlIHB5dGhvbjMtc2hlbGwtbmF0aXZlIHB5dGhvbjMtc2lnbmFsLW5hdGl2ZSBweXRob24zLXNtdHBkLW5hdGl2ZSBweXRob24zLXNxbGl0ZTMtbmF0aXZlIHB5dGhvbjMtc3FsaXRlMy10ZXN0cy1uYXRpdmUgcHl0aG9uMy1zdHJpbmdvbGQtbmF0aXZlIHB5dGhvbjMtc3VicHJvY2Vzcy1uYXRpdmUgcHl0aG9uMy1zeXNsb2ctbmF0aXZlIHB5dGhvbjMtdGVybWluYWwtbmF0aXZlIHB5dGhvbjMtdGVzdHMtbmF0aXZlIHB5dGhvbjMtdGV4dHV0aWxzLW5hdGl2ZSBweXRob24zLXRocmVhZGluZy1uYXRpdmUgcHl0aG9uMy10a2ludGVyLW5hdGl2ZSBweXRob24zLXR5cGluZy1uYXRpdmUgcHl0aG9uMy11bml0dGVzdC1uYXRpdmUgcHl0aG9uMy11bml4YWRtaW4tbmF0aXZlIHB5dGhvbjMteG1sLW5hdGl2ZSBweXRob24zLXhtbHJwYy1uYXRpdmUiCi0KLQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL211bHRpbGliLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS9tdWx0aWxpYi5wYXRjaAppbmRleCBhZDQ2MDg1Li5hZjBmMTczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL211bHRpbGliLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvbXVsdGlsaWIucGF0Y2gKQEAgLTEyLDEwICsxMiwxMCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgogCi1JbmRleDogUHl0aG9uLTIuNy4xMy9JbmNsdWRlL3B5dGhvbnJ1bi5oCitJbmRleDogUHl0aG9uLTIuNy4xNC9JbmNsdWRlL3B5dGhvbnJ1bi5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL0luY2x1ZGUvcHl0aG9ucnVuLmgKLSsrKyBQeXRob24tMi43LjEzL0luY2x1ZGUvcHl0aG9ucnVuLmgKKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvSW5jbHVkZS9weXRob25ydW4uaAorKysrIFB5dGhvbi0yLjcuMTQvSW5jbHVkZS9weXRob25ydW4uaAogQEAgLTEwOCw2ICsxMDgsNyBAQCBQeUFQSV9GVU5DKGNoYXIgKikgUHlfR2V0UGF0aCh2b2lkKTsKICAvKiBJbiB0aGVpciBvd24gZmlsZXMgKi8KICBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0VmVyc2lvbih2b2lkKTsKQEAgLTI0LDEwICsyNCwxMCBAQAogIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRDb3B5cmlnaHQodm9pZCk7CiAgUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldENvbXBpbGVyKHZvaWQpOwogIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRCdWlsZEluZm8odm9pZCk7Ci1JbmRleDogUHl0aG9uLTIuNy4xMy9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQorSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKLSsrKyBQeXRob24tMi43LjEzL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CisrKysgUHl0aG9uLTIuNy4xNC9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQogQEAgLTIyLDYgKzIyLDggQEAgZnJvbSBzaXRlIGltcG9ydCBVU0VSX0JBU0UKICBmcm9tIHNpdGUgaW1wb3J0IFVTRVJfU0lURQogIApAQCAtNDYsMTAgKzQ2LDEwIEBACiAgICAgICAgICAnaGVhZGVycyc6ICckYmFzZS9pbmNsdWRlL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0LyRkaXN0X25hbWUnLAogICAgICAgICAgJ3NjcmlwdHMnOiAnJGJhc2UvYmluJywKICAgICAgICAgICdkYXRhJyAgIDogJyRiYXNlJywKLUluZGV4OiBQeXRob24tMi43LjEzL0xpYi9weWRvYy5weQorSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL3B5ZG9jLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL0xpYi9weWRvYy5weQotKysrIFB5dGhvbi0yLjcuMTMvTGliL3B5ZG9jLnB5CistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi9weWRvYy5weQorKysrIFB5dGhvbi0yLjcuMTQvTGliL3B5ZG9jLnB5CiBAQCAtMzc1LDcgKzM3NSw3IEBAIGNsYXNzIERvYzoKICAgICAgZG9jbW9kdWxlID0gZG9jY2xhc3MgPSBkb2Nyb3V0aW5lID0gZG9jb3RoZXIgPSBkb2Nwcm9wZXJ0eSA9IGRvY2RhdGEgPSBmYWlsCiAgCkBAIC01OSwxMCArNTksMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIitzeXMudmVyc2lvblswOjNdKSk6CiAgICAgICAgICAiIiJSZXR1cm4gdGhlIGxvY2F0aW9uIG9mIG1vZHVsZSBkb2NzIG9yIE5vbmUiIiIKICAKLUluZGV4OiBQeXRob24tMi43LjEzL0xpYi9zaXRlLnB5CitJbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvc2l0ZS5weQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9MaWIvc2l0ZS5weQotKysrIFB5dGhvbi0yLjcuMTMvTGliL3NpdGUucHkKKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL3NpdGUucHkKKysrKyBQeXRob24tMi43LjE0L0xpYi9zaXRlLnB5CiBAQCAtMjg4LDEzICsyODgsMTkgQEAgZGVmIGdldHNpdGVwYWNrYWdlcygpOgogICAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnb3MyZW14JywgJ3Jpc2NvcycpOgogICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgIkxpYiIsICJzaXRlLXBhY2thZ2VzIikpCkBAIC04NiwxMCArODYsMTAgQEAKICAgICAgcmV0dXJuIHNpdGVwYWNrYWdlcwogIAogIGRlZiBhZGRzaXRlcGFja2FnZXMoa25vd25fcGF0aHMpOgotSW5kZXg6IFB5dGhvbi0yLjcuMTMvTGliL3Rlc3QvdGVzdF9kbC5weQorSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL3Rlc3QvdGVzdF9kbC5weQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9MaWIvdGVzdC90ZXN0X2RsLnB5Ci0rKysgUHl0aG9uLTIuNy4xMy9MaWIvdGVzdC90ZXN0X2RsLnB5CistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi90ZXN0L3Rlc3RfZGwucHkKKysrKyBQeXRob24tMi43LjE0L0xpYi90ZXN0L3Rlc3RfZGwucHkKIEBAIC00LDEwICs0LDExIEBACiAgaW1wb3J0IHVuaXR0ZXN0CiAgZnJvbSB0ZXN0LnRlc3Rfc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgaW1wb3J0X21vZHVsZQpAQCAtMTA0LDEwICsxMDQsMTAgQEAKICAgICAgKCcvdXNyL2Jpbi9jeWd3aW4xLmRsbCcsICdnZXRwaWQnKSwKICAgICAgKCcvdXNyL2xpYi9saWJjLmR5bGliJywgJ2dldHBpZCcpLAogICAgICBdCi1JbmRleDogUHl0aG9uLTIuNy4xMy9MaWIvdHJhY2UucHkKK0luZGV4OiBQeXRob24tMi43LjE0L0xpYi90cmFjZS5weQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9MaWIvdHJhY2UucHkKLSsrKyBQeXRob24tMi43LjEzL0xpYi90cmFjZS5weQorLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvdHJhY2UucHkKKysrKyBQeXRob24tMi43LjE0L0xpYi90cmFjZS5weQogQEAgLTc1NCwxMCArNzU0LDEwIEBAIGRlZiBtYWluKGFyZ3Y9Tm9uZSk6CiAgICAgICAgICAgICAgICAgICMgc2hvdWxkIEkgYWxzbyBjYWxsIGV4cGFuZHVzZXI/IChhZnRlciBhbGwsIGNvdWxkIHVzZSAkSE9NRSkKICAKQEAgLTEyMSwxMSArMTIxLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKSkKICAgICAgICAgICAgICAgICAgcyA9IG9zLnBhdGgubm9ybXBhdGgocykKICAgICAgICAgICAgICAgICAgaWdub3JlX2RpcnMuYXBwZW5kKHMpCi1JbmRleDogUHl0aG9uLTIuNy4xMy9NYWtlZmlsZS5wcmUuaW4KK0luZGV4OiBQeXRob24tMi43LjE0L01ha2VmaWxlLnByZS5pbgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9NYWtlZmlsZS5wcmUuaW4KLSsrKyBQeXRob24tMi43LjEzL01ha2VmaWxlLnByZS5pbgotQEAgLTkyLDYgKzkyLDcgQEAgUFlfQ0ZMQUdTPQkkKENGTEFHUykgJChDUFBGTEFHUykgJChDRkxBRworLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9NYWtlZmlsZS5wcmUuaW4KKysrKyBQeXRob24tMi43LjE0L01ha2VmaWxlLnByZS5pbgorQEAgLTkxLDYgKzkxLDcgQEAgUFlfQ0ZMQUdTPQkkKENGTEFHUykgJChDUFBGTEFHUykgJChDRkxBRwogIAogICMgTWFjaGluZS1kZXBlbmRlbnQgc3ViZGlyZWN0b3JpZXMKICBNQUNIREVQPQlATUFDSERFUEAKQEAgLTEzMyw3ICsxMzMsNyBAQAogIAogICMgTXVsdGlhcmNoIGRpcmVjdG9yeSAobWF5IGJlIGVtcHR5KQogIE1VTFRJQVJDSD0JQE1VTFRJQVJDSEAKLUBAIC0xMTEsNyArMTEyLDcgQEAgTElCRElSPQkJQGxpYmRpckAKK0BAIC0xMTAsNyArMTExLDcgQEAgTElCRElSPQkJQGxpYmRpckAKICBNQU5ESVI9CQlAbWFuZGlyQAogIElOQ0xVREVESVI9CUBpbmNsdWRlZGlyQAogIENPTkZJTkNMVURFRElSPQkkKGV4ZWNfcHJlZml4KS9pbmNsdWRlCkBAIC0xNDIsNyArMTQyLDcgQEAKICAKICAjIERldGFpbGVkIGRlc3RpbmF0aW9uIGRpcmVjdG9yaWVzCiAgQklOTElCREVTVD0JJChMSUJESVIpL3B5dGhvbiQoVkVSU0lPTikKLUBAIC02NjgsNiArNjY5LDcgQEAgTW9kdWxlcy9nZXRwYXRoLm86ICQoc3JjZGlyKS9Nb2R1bGVzL2dldAorQEAgLTY0NCw2ICs2NDUsNyBAQCBNb2R1bGVzL2dldHBhdGgubzogJChzcmNkaXIpL01vZHVsZXMvZ2V0CiAgCQktREVYRUNfUFJFRklYPSciJChleGVjX3ByZWZpeCkiJyBcCiAgCQktRFZFUlNJT049JyIkKFZFUlNJT04pIicgXAogIAkJLURWUEFUSD0nIiQoVlBBVEgpIicgXApAQCAtMTUwLDggKzE1MCw4IEBACiAgCQktbyAkQCAkKHNyY2RpcikvTW9kdWxlcy9nZXRwYXRoLmMKICAKICBNb2R1bGVzL3B5dGhvbi5vOiAkKHNyY2RpcikvTW9kdWxlcy9weXRob24uYwotQEAgLTcwOCw3ICs3MTAsNyBAQCAkKEFTVF9DKTogJChBU1RfQVNETCkgJChBU0RMR0VOX0ZJTEVTKQotIFB5dGhvbi9jb21waWxlLm8gUHl0aG9uL3N5bXRhYmxlLm8gUHl0aG9uL2FzdC5vOiAkKEdSQU1NQVJfSCkgJChBU1RfSCkKK0BAIC02OTIsNyArNjk0LDcgQEAgcmVnZW4tYXN0OgorIFB5dGhvbi9jb21waWxlLm8gUHl0aG9uL3N5bXRhYmxlLm8gUHl0aG9uL2FzdC5vOiAkKHNyY2RpcikvSW5jbHVkZS9ncmFtaW5pdC5oICQoc3JjZGlyKS9JbmNsdWRlL1B5dGhvbi1hc3QuaAogIAogIFB5dGhvbi9nZXRwbGF0Zm9ybS5vOiAkKHNyY2RpcikvUHl0aG9uL2dldHBsYXRmb3JtLmMKIC0JCSQoQ0MpIC1jICQoUFlfQ0ZMQUdTKSAtRFBMQVRGT1JNPSciJChNQUNIREVQKSInIC1vICRAICQoc3JjZGlyKS9QeXRob24vZ2V0cGxhdGZvcm0uYwpAQCAtMTU5LDEwICsxNTksMTAgQEAKICAKICBQeXRob24vaW1wb3J0ZGwubzogJChzcmNkaXIpL1B5dGhvbi9pbXBvcnRkbC5jCiAgCQkkKENDKSAtYyAkKFBZX0NGTEFHUykgLUkkKERMSU5DTERJUikgLW8gJEAgJChzcmNkaXIpL1B5dGhvbi9pbXBvcnRkbC5jCi1JbmRleDogUHl0aG9uLTIuNy4xMy9Nb2R1bGVzL2dldHBhdGguYworSW5kZXg6IFB5dGhvbi0yLjcuMTQvTW9kdWxlcy9nZXRwYXRoLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvTW9kdWxlcy9nZXRwYXRoLmMKLSsrKyBQeXRob24tMi43LjEzL01vZHVsZXMvZ2V0cGF0aC5jCistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL01vZHVsZXMvZ2V0cGF0aC5jCisrKysgUHl0aG9uLTIuNy4xNC9Nb2R1bGVzL2dldHBhdGguYwogQEAgLTEwMCw2ICsxMDAsMTMgQEAKICAjZXJyb3IgIlBSRUZJWCwgRVhFQ19QUkVGSVgsIFZFUlNJT04sIGFuZCBWUEFUSCBtdXN0IGJlIGNvbnN0YW50IGRlZmluZWQiCiAgI2VuZGlmCkBAIC0xODYsMTAgKzE4NiwxMCBAQAogIAogIHN0YXRpYyB2b2lkCiAgcmVkdWNlKGNoYXIgKmRpcikKLUluZGV4OiBQeXRob24tMi43LjEzL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCitJbmRleDogUHl0aG9uLTIuNy4xNC9QeXRob24vZ2V0cGxhdGZvcm0uYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9QeXRob24vZ2V0cGxhdGZvcm0uYwotKysrIFB5dGhvbi0yLjcuMTMvUHl0aG9uL2dldHBsYXRmb3JtLmMKKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvUHl0aG9uL2dldHBsYXRmb3JtLmMKKysrKyBQeXRob24tMi43LjE0L1B5dGhvbi9nZXRwbGF0Zm9ybS5jCiBAQCAtMTAsMyArMTAsMTMgQEAgUHlfR2V0UGxhdGZvcm0odm9pZCkKICB7CiAgCXJldHVybiBQTEFURk9STTsKQEAgLTIwNCwxMCArMjA0LDEwIEBACiArewogKwlyZXR1cm4gTElCOwogK30KLUluZGV4OiBQeXRob24tMi43LjEzL1B5dGhvbi9zeXNtb2R1bGUuYworSW5kZXg6IFB5dGhvbi0yLjcuMTQvUHl0aG9uL3N5c21vZHVsZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL1B5dGhvbi9zeXNtb2R1bGUuYwotKysrIFB5dGhvbi0yLjcuMTMvUHl0aG9uL3N5c21vZHVsZS5jCistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL1B5dGhvbi9zeXNtb2R1bGUuYworKysrIFB5dGhvbi0yLjcuMTQvUHl0aG9uL3N5c21vZHVsZS5jCiBAQCAtMTQzNyw2ICsxNDM3LDggQEAgX1B5U3lzX0luaXQodm9pZCkKICAgICAgICAgICAgICAgICAgICAgICAgICBQeVN0cmluZ19Gcm9tU3RyaW5nKFB5X0dldENvcHlyaWdodCgpKSk7CiAgICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoInBsYXRmb3JtIiwKQEAgLTIxNywxMSArMjE3LDExIEBACiAgICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImV4ZWN1dGFibGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5U3RyaW5nX0Zyb21TdHJpbmcoUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoKCkpKTsKICAgICAgU0VUX1NZU19GUk9NX1NUUklORygicHJlZml4IiwKLUluZGV4OiBQeXRob24tMi43LjEzL2NvbmZpZ3VyZS5hYworSW5kZXg6IFB5dGhvbi0yLjcuMTQvY29uZmlndXJlLmFjCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIFB5dGhvbi0yLjcuMTMvY29uZmlndXJlLmFjCi1AQCAtNzU5LDYgKzc1OSwxMSBAQCBTdW5PUyopCistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL2NvbmZpZ3VyZS5hYworKysrIFB5dGhvbi0yLjcuMTQvY29uZmlndXJlLmFjCitAQCAtNzU4LDYgKzc1OCwxMSBAQCBTdW5PUyopCiAgICAgIDs7CiAgZXNhYwogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZV8yLjcuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlXzIuNy4xMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VkZjE1My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlXzIuNy4xMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLmluYwotCi1FWFRSQU5BVElWRVBBVEggKz0gImJ6aXAyLW5hdGl2ZSIKLURFUEVORFMgPSAib3BlbnNzbC1uYXRpdmUgYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIHpsaWItbmF0aXZlIHJlYWRsaW5lLW5hdGl2ZSBzcWxpdGUzLW5hdGl2ZSBleHBhdC1uYXRpdmUiCi1QUiA9ICIke0lOQ19QUn0uMSIKLQotU1JDX1VSSSArPSAiXAotICAgICAgICAgICAgZmlsZTovLzA1LWVuYWJsZS1jdHlwZXMtY3Jvc3MtYnVpbGQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzEwLWRpc3R1dGlscy1maXgtc3dpZy1wYXJhbWV0ZXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzExLWRpc3R1dGlscy1uZXZlci1tb2RpZnktc2hlYmFuZy1saW5lLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRpc3R1dGlscy1zZXQtdGhlLXByZWZpeC10by1iZS1pbnNpZGUtc3RhZ2luZy1kaXJlY3QucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2RlYnVnLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly91bml4Y2NvbXBpbGVyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ub2hvc3RsaWJzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9tdWx0aWxpYi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vYWRkLW1kNW1vZHVsZS1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9idWlsZGRpci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcGFyYWxsZWwtbWFrZWluc3QtY3JlYXRlLWJpbmRpci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcmV2ZXJ0X3VzZV9vZl9zeXNjb25maWdkYXRhLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgotCi1GSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS8ke1BOfToiCi0KLWluaGVyaXQgbmF0aXZlCi0KLXJlcXVpcmUgcHl0aG9uLW5hdGl2ZS0ke1BZVEhPTl9NQUpNSU59LW1hbmlmZXN0LmluYwotCi1FWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAtLWJpbmRpcj0ke2JpbmRpcn0vJHtQTn0gLS13aXRoLXN5c3RlbS1leHBhdD0ke1NUQUdJTkdfRElSX0hPU1R9IgotCi1FWFRSQV9PRU1BS0UgPSAnXAotICBMSUJDPSIiIFwKLSAgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IFwKLSAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9IFwKLScKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLQlhdXRvcmVjb25mIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAtLWV4Y2x1ZGU9YXV0b3BvaW50IC4uL1B5dGhvbi0ke1BWfS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LyR7UE59Ci0JaW5zdGFsbCAtbSAwNzU1IFBhcnNlci9wZ2VuICR7RH0ke2JpbmRpcn0vJHtQTn0KLQotCSMgTWFrZSBzdXJlIHdlIHVzZSAvdXNyL2Jpbi9lbnYgcHl0aG9uCi0JZm9yIFBZVEhTQ1JJUFQgaW4gYGdyZXAgLXJJbCAke2JpbmRpcn0vJHtQTn0vcHl0aG9uICR7RH0ke2JpbmRpcn0vJHtQTn1gOyBkbwotCQlzZWQgLWkgLWUgJzFzfF4jIS4qfCMhL3Vzci9iaW4vZW52IHB5dGhvbnwnICRQWVRIU0NSSVBUCi0JZG9uZQotCi0JIyBBZGQgYSBzeW1saW5rIHRvIHRoZSBuYXRpdmUgUHl0aG9uIHNvIHRoYXQgc2NyaXB0cyBjYW4ganVzdCBpbnZva2UKLQkjICJuYXRpdmVweXRob24iIGFuZCBnZXQgdGhlIHJpZ2h0IG9uZSB3aXRob3V0IG5lZWRpbmcgYWJzb2x1dGUgcGF0aHMKLQkjICh0aGVzZSBvZnRlbiBlbmQgdXAgdG9vIGxvbmcgZm9yIHRoZSAjISBwYXJzZXIgaW4gdGhlIGtlcm5lbCBhcyB0aGUKLQkjIGJ1ZmZlciBpcyAxMjggYnl0ZXMgbG9uZykuCi0JbG4gLXMgcHl0aG9uLW5hdGl2ZS9weXRob24gJHtEfSR7YmluZGlyfS9uYXRpdmVweXRob24KLQotCSMgV2UgZG9uJ3Qgd2FudCBtb2R1bGVzIGluIH4vLmxvY2FsIGJlaW5nIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aG9zZQotCSMgaW5zdGFsbGVkIGluIHRoZSBuYXRpdmUgc3lzcm9vdCwgc28gZGlzYWJsZSB1c2VyIHNpdGUgc3VwcG9ydC4KLQlzZWQgLWkgLWUgJ3MsXlwoRU5BQkxFX1VTRVJfU0lURSA9IFwpLiosXDFGYWxzZSwnICR7RH0ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zaXRlLnB5Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlXzIuNy4xNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmVfMi43LjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjNDkxZmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlXzIuNy4xNC5iYgpAQCAtMCwwICsxLDg1IEBACityZXF1aXJlIHB5dGhvbi5pbmMKK0VYVFJBTkFUSVZFUEFUSCArPSAiYnppcDItbmF0aXZlIgorREVQRU5EUyA9ICJvcGVuc3NsLW5hdGl2ZSBiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUgemxpYi1uYXRpdmUgcmVhZGxpbmUtbmF0aXZlIHNxbGl0ZTMtbmF0aXZlIGV4cGF0LW5hdGl2ZSBnZGJtLW5hdGl2ZSBkYi1uYXRpdmUiCitQUiA9ICIke0lOQ19QUn0uMSIKKworU1JDX1VSSSArPSAiXAorICAgICAgICAgICAgZmlsZTovLzA1LWVuYWJsZS1jdHlwZXMtY3Jvc3MtYnVpbGQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzEwLWRpc3R1dGlscy1maXgtc3dpZy1wYXJhbWV0ZXIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzExLWRpc3R1dGlscy1uZXZlci1tb2RpZnktc2hlYmFuZy1saW5lLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRpc3R1dGlscy1zZXQtdGhlLXByZWZpeC10by1iZS1pbnNpZGUtc3RhZ2luZy1kaXJlY3QucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2RlYnVnLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly91bml4Y2NvbXBpbGVyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9ub2hvc3RsaWJzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9tdWx0aWxpYi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vYWRkLW1kNW1vZHVsZS1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9idWlsZGRpci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcGFyYWxsZWwtbWFrZWluc3QtY3JlYXRlLWJpbmRpci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcmV2ZXJ0X3VzZV9vZl9zeXNjb25maWdkYXRhLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgorCitGSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS8ke1BOfToiCisKK2luaGVyaXQgbmF0aXZlCisKK0VYVFJBX09FQ09ORl9hcHBlbmQgPSAiIC0tYmluZGlyPSR7YmluZGlyfS8ke1BOfSAtLXdpdGgtc3lzdGVtLWV4cGF0PSR7U1RBR0lOR19ESVJfSE9TVH0iCisKK0VYVFJBX09FTUFLRSA9ICdcCisgIExJQkM9IiIgXAorICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0gXAorICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSX05BVElWRX0gXAorJworCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworCWF1dG9yZWNvbmYgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlIC0tZXhjbHVkZT1hdXRvcG9pbnQgLi4vUHl0aG9uLSR7UFZ9L01vZHVsZXMvX2N0eXBlcy9saWJmZmkKK30KKworIyBSZWdlbmVyYXRlIGFsbCBvZiB0aGUgZ2VuZXJhdGVkIGZpbGVzCisjIFRoaXMgZW5zdXJlcyB0aGF0IHBnZW4gYW5kIGZyaWVuZHMgZ2V0IGNyZWF0ZWQgZHVyaW5nIHRoZSBjb21waWxlIHBoYXNlCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgb2VfcnVubWFrZSByZWdlbi1hbGwKK30KKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vJHtQTn0KKwlpbnN0YWxsIC1tIDA3NTUgUGFyc2VyL3BnZW4gJHtEfSR7YmluZGlyfS8ke1BOfQorCisJIyBNYWtlIHN1cmUgd2UgdXNlIC91c3IvYmluL2VudiBweXRob24KKwlmb3IgUFlUSFNDUklQVCBpbiBgZ3JlcCAtcklsICR7YmluZGlyfS8ke1BOfS9weXRob24gJHtEfSR7YmluZGlyfS8ke1BOfWA7IGRvCisJCXNlZCAtaSAtZSAnMXN8XiMhLip8IyEvdXNyL2Jpbi9lbnYgcHl0aG9ufCcgJFBZVEhTQ1JJUFQKKwlkb25lCisKKwkjIEFkZCBhIHN5bWxpbmsgdG8gdGhlIG5hdGl2ZSBQeXRob24gc28gdGhhdCBzY3JpcHRzIGNhbiBqdXN0IGludm9rZQorCSMgIm5hdGl2ZXB5dGhvbiIgYW5kIGdldCB0aGUgcmlnaHQgb25lIHdpdGhvdXQgbmVlZGluZyBhYnNvbHV0ZSBwYXRocworCSMgKHRoZXNlIG9mdGVuIGVuZCB1cCB0b28gbG9uZyBmb3IgdGhlICMhIHBhcnNlciBpbiB0aGUga2VybmVsIGFzIHRoZQorCSMgYnVmZmVyIGlzIDEyOCBieXRlcyBsb25nKS4KKwlsbiAtcyBweXRob24tbmF0aXZlL3B5dGhvbiAke0R9JHtiaW5kaXJ9L25hdGl2ZXB5dGhvbgorCisJIyBXZSBkb24ndCB3YW50IG1vZHVsZXMgaW4gfi8ubG9jYWwgYmVpbmcgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRob3NlCisJIyBpbnN0YWxsZWQgaW4gdGhlIG5hdGl2ZSBzeXNyb290LCBzbyBkaXNhYmxlIHVzZXIgc2l0ZSBzdXBwb3J0LgorCXNlZCAtaSAtZSAncyxeXChFTkFCTEVfVVNFUl9TSVRFID0gXCkuKixcMUZhbHNlLCcgJHtEfSR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NpdGUucHkKK30KKworcHl0aG9uKCl7CisKKyAgICAjIFJlYWQgSlNPTiBtYW5pZmVzdAorICAgIGltcG9ydCBqc29uCisgICAgcHl0aG9uZGlyID0gZC5nZXRWYXIoJ1RISVNESVInLFRydWUpCisgICAgd2l0aCBvcGVuKHB5dGhvbmRpcisnL3B5dGhvbi9weXRob24yLW1hbmlmZXN0Lmpzb24nKSBhcyBtYW5pZmVzdF9maWxlOgorICAgICAgICBweXRob25fbWFuaWZlc3Q9anNvbi5sb2FkKG1hbmlmZXN0X2ZpbGUpCisKKyAgICBycHJvdmlkZXMgPSBkLmdldFZhcignUlBST1ZJREVTJykuc3BsaXQoKQorCisgICAgIyBIYXJkY29kZWQgc2luY2UgaXQgY2FudCBiZSBweXRob24tbmF0aXZlLWZvbywgc2hvdWxkIGJlIHB5dGhvbi1mb28tbmF0aXZlCisgICAgcG4gPSAncHl0aG9uJworCisgICAgZm9yIGtleSBpbiBweXRob25fbWFuaWZlc3Q6CisgICAgICAgIHB5cGFja2FnZSA9IHBuICsgJy0nICsga2V5ICsgJy1uYXRpdmUnCisgICAgICAgIGlmIHB5cGFja2FnZSBub3QgaW4gcnByb3ZpZGVzOgorICAgICAgICAgICAgICBycHJvdmlkZXMuYXBwZW5kKHB5cGFja2FnZSkKKworICAgIGQuc2V0VmFyKCdSUFJPVklERVMnLCAnICcuam9pbihycHJvdmlkZXMpKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5vc2UuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5vc2UuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjZWM2OGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbm9zZS5pbmMKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJFeHRlbmRzIFB5dGhvbiB1bml0dGVzdCB0byBtYWtlIHRlc3RpbmcgZWFzaWVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3JlYWR0aGVkb2NzLm9yZy9kb2NzL25vc2UvIgorREVTQ1JJUFRJT04gPSAibm9zZSBleHRlbmRzIHRoZSB0ZXN0IGxvYWRpbmcgYW5kIHJ1bm5pbmcgZmVhdHVyZXMgb2YgdW5pdHRlc3QsIFwKK21ha2luZyBpdCBlYXNpZXIgdG8gd3JpdGUsIGZpbmQgYW5kIHJ1biB0ZXN0cy4iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9sZ3BsLnR4dDttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ZDNhZDBmZjA3YjYxMzczZDJjZWZjODljNWQwYjIwYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmMWJmZmVmOWNiYzgyNjI4ZjZlN2Q3YjQwZDdlMjU1YWVmYWExYWRiNmExYjFkMjZjNjlhOGI3OWU2MjA4YTk4IgorCitpbmhlcml0IHB5cGkKKworUkRFUEVORFNfJHtQTn0gPSAiXAorICAke1BZVEhPTl9QTn0tdW5pdHRlc3QgXAorICAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ub3NlXzEuMy43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5vc2VfMS4zLjcuYmIKaW5kZXggOWIzNTA5Yy4uNmQ2OWQyZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5vc2VfMS4zLjcuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5vc2VfMS4zLjcuYmIKQEAgLTEsMjUgKzEsMiBAQAotU1VNTUFSWSA9ICJFeHRlbmRzIFB5dGhvbiB1bml0dGVzdCB0byBtYWtlIHRlc3RpbmcgZWFzaWVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3JlYWR0aGVkb2NzLm9yZy9kb2NzL25vc2UvIgotREVTQ1JJUFRJT04gPSAibm9zZSBleHRlbmRzIHRoZSB0ZXN0IGxvYWRpbmcgYW5kIHJ1bm5pbmcgZmVhdHVyZXMgb2YgdW5pdHRlc3QsIFwKLW1ha2luZyBpdCBlYXNpZXIgdG8gd3JpdGUsIGZpbmQgYW5kIHJ1biB0ZXN0cy4iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9sZ3BsLnR4dDttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9uL25vc2Uvbm9zZS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZDNhZDBmZjA3YjYxMzczZDJjZWZjODljNWQwYjIwYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmMWJmZmVmOWNiYzgyNjI4ZjZlN2Q3YjQwZDdlMjU1YWVmYWExYWRiNmExYjFkMjZjNjlhOGI3OWU2MjA4YTk4IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9ub3NlLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9ub3NlLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKSIKLQotUyA9ICIke1dPUktESVJ9L25vc2UtJHtQVn0iCi0KIGluaGVyaXQgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gIHB5dGhvbi11bml0dGVzdCBcCi0gICIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorcmVxdWlyZSBweXRob24tbm9zZS5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zY29ucy1uYXRpdmVfMi41LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NvbnMtbmF0aXZlXzMuMC4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NvbnMtbmF0aXZlXzIuNS4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NvbnMtbmF0aXZlXzMuMC4xLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NvbnNfMi41LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NvbnNfMi41LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmNDM4NTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNjb25zXzIuNS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJTb2Z0d2FyZSBDb25zdHJ1Y3Rpb24gdG9vbCAobWFrZS9hdXRvdG9vbHMgcmVwbGFjZW1lbnQpIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0zYTg4NWRmZjZkMTRlNGNkODc2ZDkwMDhhMDlhNDJkZSIKLVNSQ05BTUUgPSAic2NvbnMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9zLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzZWFjODFlNWU4MjA2MzA0YTliNDY4M2M1NzY2NWFhNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjOGRlODVmYzAyZWQxYTY4N2IxZjJhYzc5MWVhYTBjMTcwN2I0MzgyYTIwNGYxN2Q3ODJiNWIxMTFiOWZkZjA3IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9TQ29ucy8iCi0KLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICBweXRob24tZmNudGwgXAotICBweXRob24taW8gXAotICBweXRob24tanNvbiBcCi0gIHB5dGhvbi1zdWJwcm9jZXNzIFwKLSAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNjb25zXzMuMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNjb25zXzMuMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1MDg0YjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NvbnNfMy4wLjEuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJTb2Z0d2FyZSBDb25zdHJ1Y3Rpb24gdG9vbCAobWFrZS9hdXRvdG9vbHMgcmVwbGFjZW1lbnQpIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT00NmRkZjY2MDA0ZTViZTU1NjYzNjdjYjUyNWE2NmZjNiIKKworU1JDX1VSSVttZDVzdW1dID0gImI2YTI5MmUyNTFiMzRiODJjMjAzYjU2Y2ZhMzk2OGIzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI0NDc1ZTM4ZDM5YzE5NjgzYmM4ODA1NDUyNGRmMDE4ZmU2OTQ5ZDcwZmJkNGM2OWUyOThkMzlhMDI2OWYxNzMiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc2NvbnMub3JnL3BhZ2VzL2Rvd25sb2FkLmh0bWwiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKKworUkRFUEVORFNfJHtQTn0gPSAiXAorICBweXRob24tZmNudGwgXAorICBweXRob24taW8gXAorICBweXRob24tanNvbiBcCisgIHB5dGhvbi1zdWJwcm9jZXNzIFwKKyAgcHl0aG9uLXNoZWxsIFwKKyAgcHl0aG9uLXBwcmludCBcCisgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLmluYwppbmRleCBjYTUyMWE5Li43NDcwNmJmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMuaW5jCkBAIC01LDE3ICs1LDQ0IEBACiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7YmVnaW5saW5lPTE7ZW5kbGluZT0xOTttZDU9OWEzMzg5N2YxYmNhMTE2MGQ3YWFkMzgzNTE1MmUxNTgiCiAKLVNSQ05BTUUgPSAic2V0dXB0b29scyIKK1BZUElfUEFDS0FHRV9FWFQgPSAiemlwIgogCi1TUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2Uvcy8ke1NSQ05BTUV9LyR7U1JDTkFNRX0tJHtQVn0uemlwIgoraW5oZXJpdCBweXBpCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJiOWU2YzA0OTYxN2JhYzBmOWU5MDhhNDFhYjRhMjlhYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMGZlNWQ0MzJkOTIyZGY1OTVlOTE4NTc3YzUxNDU4ZDYzZjI0NTExNWQxNDFiMzA5YWMzMmVjZmNhMzI5ZGY1IgorU1JDX1VSSVttZDVzdW1dID0gIjM3OTY0MmE0ZjE3MjE0MDcxZmRjMTg5NDI1NWQ4ZDExIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk0ZGM1NjYyNDdmMzUwMDllZDQyYzBmNDQyMmYyYjRmMGEwMzJmYWIxMzcyYzgzMDhiODY0YzhmMjZkOTMzODgiCiAKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NldHVwdG9vbHMiCitERVBFTkRTICs9ICIke1BZVEhPTl9QTn0iCitERVBFTkRTX2NsYXNzLW5hdGl2ZSArPSAiJHtQWVRIT05fUE59LW5hdGl2ZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlc2RrICs9ICJuYXRpdmVzZGstJHtQWVRIT05fUE59IgogCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKK0RJU1RVVElMU19JTlNUQUxMX0FSR1MgKz0gIi0taW5zdGFsbC1saWI9JHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tc2NyaXB0LWRpcj0ke2JpbmRpcn0iCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICJcCisgICR7UFlUSE9OX1BOfS1kaXN0dXRpbHMgXAorICAke1BZVEhPTl9QTn0tY29tcHJlc3Npb24gXAorIgorUkRFUEVORFNfJHtQTn0gPSAiXAorICAke1BZVEhPTl9QTn0tY29tcGlsZSBcCisgICR7UFlUSE9OX1BOfS1jb21wcmVzc2lvbiBcCisgICR7UFlUSE9OX1BOfS1jdHlwZXMgXAorICAke1BZVEhPTl9QTn0tZGlzdHV0aWxzIFwKKyAgJHtQWVRIT05fUE59LWVtYWlsIFwKKyAgJHtQWVRIT05fUE59LWh0bWwgXAorICAke1BZVEhPTl9QTn0tbmV0c2VydmVyIFwKKyAgJHtQWVRIT05fUE59LW51bWJlcnMgXAorICAke1BZVEhPTl9QTn0tcGtndXRpbCBcCisgICR7UFlUSE9OX1BOfS1wbGlzdGxpYiBcCisgICR7UFlUSE9OX1BOfS1zaGVsbCBcCisgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAorICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyAgJHtQWVRIT05fUE59LXVuaXR0ZXN0IFwKKyAgJHtQWVRIT05fUE59LXhtbCBcCisiCiAKIGRvX2luc3RhbGxfcHJlcGVuZCgpIHsKICAgICBpbnN0YWxsIC1kICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfQogfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29sc18zNi4yLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29sc18zNi4yLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlZmFjYzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHNfMzYuMi43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotcmVxdWlyZSBweXRob24tc2V0dXB0b29scy5pbmMKLQotUFJPVklERVMgPSAicHl0aG9uLWRpc3RyaWJ1dGUiCi0KLURFUEVORFMgKz0gInB5dGhvbiIKLURFUEVORFNfY2xhc3MtbmF0aXZlICs9ICJweXRob24tbmF0aXZlIgotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICBweXRob24tc3RyaW5nb2xkIFwKLSAgcHl0aG9uLWVtYWlsIFwKLSAgcHl0aG9uLXNoZWxsIFwKLSAgcHl0aG9uLWRpc3R1dGlscyBcCi0gIHB5dGhvbi1jb21wcmVzc2lvbiBcCi0gIHB5dGhvbi1wa2d1dGlsIFwKLSAgcHl0aG9uLXBsaXN0bGliIFwKLSAgcHl0aG9uLW51bWJlcnMgXAotICBweXRob24taHRtbCBcCi0gIHB5dGhvbi1uZXRzZXJ2ZXIgXAotICBweXRob24tY3R5cGVzIFwKLSAgcHl0aG9uLXN1YnByb2Nlc3MgXAotICBweXRob24tdW5pdHRlc3QgXAotICBweXRob24tY29tcGlsZSBcCi0iCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICJcCi0gIHB5dGhvbi1kaXN0dXRpbHMgXAotICBweXRob24tY29tcHJlc3Npb24gXAotIgotCi1SUkVQTEFDRVNfJHtQTn0gPSAicHl0aG9uLWRpc3RyaWJ1dGUiCi1SUFJPVklERVNfJHtQTn0gPSAicHl0aG9uLWRpc3RyaWJ1dGUiCi1SQ09ORkxJQ1RTXyR7UE59ID0gInB5dGhvbi1kaXN0cmlidXRlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29sc18zOS4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29sc18zOS4wLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y5NDQwNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzM5LjAuMC5iYgpAQCAtMCwwICsxLDkgQEAKK3JlcXVpcmUgcHl0aG9uLXNldHVwdG9vbHMuaW5jCisKK1BST1ZJREVTID0gInB5dGhvbi1kaXN0cmlidXRlIgorCitpbmhlcml0IHNldHVwdG9vbHMKKworUlJFUExBQ0VTXyR7UE59ID0gInB5dGhvbi1kaXN0cmlidXRlIgorUlBST1ZJREVTXyR7UE59ID0gInB5dGhvbi1kaXN0cmlidXRlIgorUkNPTkZMSUNUU18ke1BOfSA9ICJweXRob24tZGlzdHJpYnV0ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaXguaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeC5pbmMKaW5kZXggYmQxMmZhOS4uYzc3NDk4NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeC5pbmMKQEAgLTIsMTUgKzIsMTMgQEAKIEhPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvc2l4LyIKIFNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02ZjAwZDRhNTA3MTNmYTg1OTg1OGRkOWFiYWEzNWIyMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTM1Y2VjNWJmMDRkZDA4MjBkMGExODUzM2VhN2M3NzRhIgogCi1TUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2Uvcy9zaXgvc2l4LSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIzNGVlZDUwNzU0ODExN2IyYWI1MjNhYjE0YjJmOGI1NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxMDVmOGQ2ODYxNmY4MjQ4ZTI0YmYwZTkzNzJlZjA0ZDNjYzEwMTA0ZjE5ODBmNTRkNTdiMmNlNzNhNWFkNTZhIgorU1JDX1VSSVttZDVzdW1dID0gImQxMjc4OWY5YmFmN2U5ZmIyNTI0YzBjNjRmMTc3M2Y4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcwZThhNzdiZWVkNDU2MmU3ZjE0ZmUyM2E3ODZiNTRmNjI5NmUzNDM0NGMyM2JjNDJmMDdiMTUwMThmZjk4ZTkiCiAKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NpeC8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvc2l4Lyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKSIKK2luaGVyaXQgcHlwaQorCitSREVQRU5EU18ke1BOfSA9ICIke1BZVEhPTl9QTn0taW8iCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotUyA9ICIke1dPUktESVJ9L3NpeC0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbW1hcC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21tYXAuaW5jCmluZGV4IGQ2N2U2YjUuLjU1YWE1MTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbW1hcC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtbWFwLmluYwpAQCAtNywxMyArNywxMiBAQAogTElDRU5TRSA9ICJCU0QiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztiZWdpbmxpbmU9ODtlbmRsaW5lPTg7bWQ1PWU5MTBiMzViMGVmNGUxZjY2NWI5YTc1ZDZhZmI3NzA5IgogCi1TUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2Uvcy9zbW1hcC9zbW1hcC0ke1BWfS50YXIuZ3oiCitpbmhlcml0IHB5cGkKKwogU1JDX1VSSVttZDVzdW1dID0gImQ3OTMyZDVhY2UyMDZiZjRhZTE1MTk4Y2YzNmZiNmFiIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBlMmI2MmI0OTdiZDVmMGFmZWJjMDAyZWRhNGQ5MGRmOWQyMDljMzBlZjI1N2U4NjczYzkwYTZiNWMxMTlkNjIiCiAKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NtbWFwLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9zbW1hcC8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykiCi0KLVMgPSAiJHtXT1JLRElSfS9zbW1hcC0ke1BWfSIKLQorUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1jb2RlY3MgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1tbWFwIFwKKyIKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi5pbmMKaW5kZXggYjQwZjU1MS4uOTc5YjYwMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24uaW5jCkBAIC01LDEyICs1LDEyIEBACiAjIGJ1bXAgdGhpcyBvbiBldmVyeSBjaGFuZ2UgaW4gY29udHJpYi9weXRob24vZ2VuZXJhdGUtbWFuaWZlc3QtMi43LnB5CiBJTkNfUFIgPSAicjEiCiAKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTZiNjAyNTgxMzBlNGVkMTBkMzEwMTUxN2ViNWI5Mzg1IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9Zjc0MWU1MWRlOTFkNGVlZWE1OTMwYjljM2M3ZmE2OWQiCiAKIFNSQ19VUkkgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJHtQVn0vUHl0aG9uLSR7UFZ9LnRhci54eiIKIAotU1JDX1VSSVttZDVzdW1dID0gIjUzYjQzNTM0MTUzYmIyYTAzNjNmMDhiYWU4YjlkOTkwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM1ZDU0Mzk4Njg4MmY3ODI2MWY5Nzc4N2ZkM2UwNjI3NGJmYTZkZjI5ZmFjOWI0YTk0ZjczOTMwZmY5OGY3MzEiCitTUkNfVVJJW21kNXN1bV0gPSAiMWY2ZGI0MWFkOTFkOWViMGE2ZjBjNzY5Yjg2MTNjNWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzFmZmIyNmUwOWU3ODY1MGU0MjQ5MjliMmI0NTdiOWM5MTJhYzIxNjU3NmU2YmQ5ZTdkMjA0ZWQwMzI5NmE2NiIKIAogIyBweXRob24gcmVjaXBlIGlzIGFjdHVhbGx5IHB5dGhvbiAyLngKICMgYWxzbywgZXhjbHVkZSBwcmUtcmVsZWFzZXMgZm9yIGJvdGggcHl0aG9uIDIueCBhbmQgMy54CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDEtdXNlLXByb3Blci10b29scy1mb3ItY3Jvc3MtYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDEtdXNlLXByb3Blci10b29scy1mb3ItY3Jvc3MtYnVpbGQucGF0Y2gKaW5kZXggMzY2Y2UzZS4uZTc5NWE3NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAxLXVzZS1wcm9wZXItdG9vbHMtZm9yLWNyb3NzLWJ1aWxkLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMS11c2UtcHJvcGVyLXRvb2xzLWZvci1jcm9zcy1idWlsZC5wYXRjaApAQCAtOSw2ICs5LDkgQEAKIFJlYmFzZWQgZm9yIHB5dGhvbi0yLjcuOQogU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+CiAKK1JlYmFzZWQgZm9yIHB5dGhvbi0yLjcuMTQKK1NpZ25lZC1vZmYtYnk6IERlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+CisKIEluZGV4OiBQeXRob24tMi43LjEzL01ha2VmaWxlLnByZS5pbgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9NYWtlZmlsZS5wcmUuaW4KQEAgLTMwLDE0ICszMywxNCBAQAogIAogICMgQ3JlYXRlIGJ1aWxkIGRpcmVjdG9yeSBhbmQgZ2VuZXJhdGUgdGhlIHN5c2NvbmZpZyBidWlsZC10aW1lIGRhdGEgdGhlcmUuCiAgIyBweWJ1aWxkZGlyLnR4dCBjb250YWlucyB0aGUgbmFtZSBvZiB0aGUgYnVpbGQgZGlyIGFuZCBpcyB1c2VkIGZvcgotQEAgLTY4MSw3ICs2ODIsNyBAQCBNb2R1bGVzL3B3ZG1vZHVsZS5vOiAkKHNyY2RpcikvTW9kdWxlcy9wCi0gCi0gJChHUkFNTUFSX0gpOiBAR0VORVJBVEVEX0NPTU1FTlRAICQoR1JBTU1BUl9JTlBVVCkgJChQR0VOKQorQEAgLTY2Myw3ICs2NjMsNyBAQAorIAkjIFJlZ2VuZXJhdGUgSW5jbHVkZS9ncmFtaW5pdC5oIGFuZCBQeXRob24vZ3JhbWluaXQuYworIAkjIGZyb20gR3JhbW1hci9HcmFtbWFyIHVzaW5nIHBnZW4KICAJQCQoTUtESVJfUCkgSW5jbHVkZQotLQkkKFBHRU4pICQoR1JBTU1BUl9JTlBVVCkgJChHUkFNTUFSX0gpICQoR1JBTU1BUl9DKQotKwkkKEhPU1RQR0VOKSAkKEdSQU1NQVJfSU5QVVQpICQoR1JBTU1BUl9IKSAkKEdSQU1NQVJfQykKLSAkKEdSQU1NQVJfQyk6IEBHRU5FUkFURURfQ09NTUVOVEAgJChHUkFNTUFSX0gpCi0gCXRvdWNoICQoR1JBTU1BUl9DKQorLQkkKFBHRU4pICQoc3JjZGlyKS9HcmFtbWFyL0dyYW1tYXIgXAorKwkkKEhPU1RQR0VOKSAkKHNyY2RpcikvR3JhbW1hci9HcmFtbWFyIFwKKyAJCSQoc3JjZGlyKS9JbmNsdWRlL2dyYW1pbml0LmggXAorIAkJJChzcmNkaXIpL1B5dGhvbi9ncmFtaW5pdC5jCiAgCiBAQCAtMTEyMSwyNyArMTEyMiwyNyBAQCBsaWJpbnN0YWxsOglidWlsZF9hbGwgJChzcmNkaXIpL0xpYi8kKFBMCiAgCQkJJChERVNURElSKSQoTElCREVTVCkvZGlzdHV0aWxzL3Rlc3RzIDsgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL0Rvbi10LXVzZS1nZXRlbnRyb3B5LW9uLUxpbnV4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL0Rvbi10LXVzZS1nZXRlbnRyb3B5LW9uLUxpbnV4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGU1Mzc3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9Eb24tdC11c2UtZ2V0ZW50cm9weS1vbi1MaW51eC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBPYmVycml0dGVyIDxvYmlAb3BlbmRyZWFtYm94Lm9yZz4KLQotRnJvbSA5MDVkMWIzMGFjN2NiMGUzMWM1N2NlYzA1MzM4MjVjOGYxNzBiOTQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVmljdG9yIFN0aW5uZXIgPHZpY3Rvci5zdGlubmVyQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgOSBKYW4gMjAxNyAxMToxMDo0MSArMDEwMAotU3ViamVjdDogW1BBVENIXSBEb24ndCB1c2UgZ2V0ZW50cm9weSgpIG9uIExpbnV4Ci0KLUlzc3VlICMyOTE4ODogU3VwcG9ydCBnbGliYyAyLjI0IG9uIExpbnV4OiBkb24ndCB1c2UgZ2V0ZW50cm9weSgpIGZ1bmN0aW9uIGJ1dAotcmVhZCBmcm9tIC9kZXYvdXJhbmRvbSB0byBnZXQgcmFuZG9tIGJ5dGVzLCBmb3IgZXhhbXBsZSBpbiBvcy51cmFuZG9tKCkuICBPbgotTGludXgsIGdldGVudHJvcHkoKSBpcyBpbXBsZW1lbnRlZCB3aGljaCBnZXRyYW5kb20oKSBpcyBibG9ja2luZyBtb2RlLCB3aGVyZWFzCi1vcy51cmFuZG9tKCkgc2hvdWxkIG5vdCBibG9jay4KLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMjY4NzQ4Njc1NjcyMWUzOTE2NGZhOWY1OTdlNDY4YzM1ZDQ5NTIyNykKLS0tLQotIFB5dGhvbi9yYW5kb20uYyB8IDExICsrKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL1B5dGhvbi9yYW5kb20uYyBiL1B5dGhvbi9yYW5kb20uYwotaW5kZXggYjRiYzFmMy4uZjNmNWQxNCAxMDA2NDQKLS0tLSBhL1B5dGhvbi9yYW5kb20uYwotKysrIGIvUHl0aG9uL3JhbmRvbS5jCi1AQCAtOTQsOCArOTQsMTUgQEAgd2luMzJfdXJhbmRvbSh1bnNpZ25lZCBjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQotIH0KLSAKLSAvKiBJc3N1ZSAjMjUwMDM6IERvbid0IHVzZSBnZXRlbnRyb3B5KCkgb24gU29sYXJpcyAoYXZhaWxhYmxlIHNpbmNlCi0tICogU29sYXJpcyAxMS4zKSwgaXQgaXMgYmxvY2tpbmcgd2hlcmVhcyBvcy51cmFuZG9tKCkgc2hvdWxkIG5vdCBibG9jay4gKi8KLS0jZWxpZiBkZWZpbmVkKEhBVkVfR0VURU5UUk9QWSkgJiYgIWRlZmluZWQoc3VuKQotKyAgIFNvbGFyaXMgMTEuMyksIGl0IGlzIGJsb2NraW5nIHdoZXJlYXMgb3MudXJhbmRvbSgpIHNob3VsZCBub3QgYmxvY2suCi0rCi0rICAgSXNzdWUgIzI5MTg4OiBEb24ndCB1c2UgZ2V0ZW50cm9weSgpIG9uIExpbnV4IHNpbmNlIHRoZSBnbGliYyAyLjI0Ci0rICAgaW1wbGVtZW50cyBpdCB3aXRoIHRoZSBnZXRyYW5kb20oKSBzeXNjYWxsIHdoaWNoIGNhbiBmYWlsIHdpdGggRU5PU1lTLAotKyAgIGFuZCB0aGlzIGVycm9yIGlzIG5vdCBzdXBwb3J0ZWQgaW4gcHlfZ2V0ZW50cm9weSgpIGFuZCBnZXRyYW5kb20oKSBpcyBjYWxsZWQKLSsgICB3aXRoIGZsYWdzPTAgd2hpY2ggYmxvY2tzIHVudGlsIHN5c3RlbSB1cmFuZG9tIGlzIGluaXRpYWxpemVkLCB3aGljaCBpcyBub3QKLSsgICB0aGUgZGVzaXJlZCBiZWhhdmlvdXIgdG8gc2VlZCB0aGUgUHl0aG9uIGhhc2ggc2VjcmV0IG5vciBmb3Igb3MudXJhbmRvbSgpOgotKyAgIHNlZSB0aGUgUEVQIDUyNCB3aGljaCB3YXMgb25seSBpbXBsZW1lbnRlZCBpbiBQeXRob24gMy42LiAqLwotKyNlbGlmIGRlZmluZWQoSEFWRV9HRVRFTlRST1BZKSAmJiAhZGVmaW5lZChzdW4pICYmICFkZWZpbmVkKGxpbnV4KQotICNkZWZpbmUgUFlfR0VURU5UUk9QWSAxCi0gCi0gLyogRmlsbCBidWZmZXIgd2l0aCBzaXplIHBzZXVkby1yYW5kb20gYnl0ZXMgZ2VuZXJhdGVkIGJ5IGdldGVudHJvcHkoKS4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hZGQtQ1JPU1NQWVRIT05QQVRILWZvci1QWVRIT05fRk9SX0JVSUxELnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2FkZC1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2gKaW5kZXggYTk3ZmY2Yi4uMzI5NzM0MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2FkZC1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2FkZC1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2gKQEAgLTEzLDExICsxMywxMSBAQAogIGNvbmZpZ3VyZS5hYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotSW5kZXg6IFB5dGhvbi0yLjcuMTEvY29uZmlndXJlLmFjCitJbmRleDogUHl0aG9uLTIuNy4xNC9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjExLm9yaWcvY29uZmlndXJlLmFjCi0rKysgUHl0aG9uLTIuNy4xMS9jb25maWd1cmUuYWMKLUBAIC0zMyw3ICszMyw3IEBAIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL2NvbmZpZ3VyZS5hYworKysrIFB5dGhvbi0yLjcuMTQvY29uZmlndXJlLmFjCitAQCAtMzYsNyArMzYsNyBAQCBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgogIAkgICAgQUNfTVNHX0VSUk9SKFtweXRob24kUEFDS0FHRV9WRVJTSU9OIGludGVycHJldGVyIG5vdCBmb3VuZF0pCiAgCWZpCiAgICAgICAgICBBQ19NU0dfUkVTVUxUKCRpbnRlcnApCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaAppbmRleCAzMzQ3MzIxLi4yODcwOTVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2gKQEAgLTcsMTMgKzcsMTYgQEAKIEFsc28gc2ltcGx5IGRpc2FibGUgdGhlIHRrIG1vZHVsZSBzaW5jZSBpdHMgbm90IGluIERFUEVORFMuCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+CiAKLUluZGV4OiBQeXRob24tMi43LjIvc2V0dXAucHkKK0luZGV4OiBQeXRob24tMi43LjEzL3NldHVwLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4yLm9yaWcvc2V0dXAucHkJMjAxMi0wNC0wNSAyMzoxODozOC41MDAxMzY2NDcgKzAzMDAKLSsrKyBQeXRob24tMi43LjIvc2V0dXAucHkJMjAxMi0wNC0wNSAyMzoxOTozNS44ODgxMzQ5NjkgKzAzMDAKLUBAIC0xNjM0LDggKzE2MzQsMTAgQEAKKy0tLSBQeXRob24tMi43LjEzLm9yaWcvc2V0dXAucHkKKysrKyBQeXRob24tMi43LjEzL3NldHVwLnB5CitAQCAtMTc4MywxMCArMTc4MywxMiBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CisgICAgICAgICBzZWxmLmV4dGVuc2lvbnMuZXh0ZW5kKGV4dHMpCisgCiAgICAgICAgICAjIENhbGwgdGhlIG1ldGhvZCBmb3IgZGV0ZWN0aW5nIHdoZXRoZXIgX3RraW50ZXIgY2FuIGJlIGNvbXBpbGVkCi0gICAgICAgICBzZWxmLmRldGVjdF90a2ludGVyKGluY19kaXJzLCBsaWJfZGlycykKKy0gICAgICAgIHNlbGYuZGV0ZWN0X3RraW50ZXIoaW5jX2RpcnMsIGxpYl9kaXJzKQorKyAgICAgICAgIyBzZWxmLmRldGVjdF90a2ludGVyKGluY19kaXJzLCBsaWJfZGlycykKICAKIC0gICAgICAgIGlmICdfdGtpbnRlcicgbm90IGluIFtlLm5hbWUgZm9yIGUgaW4gc2VsZi5leHRlbnNpb25zXToKIC0gICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnX3RraW50ZXInKQpAQCAtMjIsMTggKzI1LDUgQEAKICsgICAgICAgICNpZiAnX3RraW50ZXInIG5vdCBpbiBbZS5uYW1lIGZvciBlIGluIHNlbGYuZXh0ZW5zaW9uc106CiArICAgICAgICAjICAgIG1pc3NpbmcuYXBwZW5kKCdfdGtpbnRlcicpCiAgCi0gICAgICAgICByZXR1cm4gbWlzc2luZwotIAotZGlmZiAtLWdpdCBQeXRob24tMy41LjEub3JpZy9zZXR1cC5weSBQeXRob24tMy41LjEvc2V0dXAucHkKLWluZGV4IGI0NjMzYjkuLmQ3NTg4YzAgMTAwNjQ0Ci0tLS0gUHl0aG9uLTMuNS4xLm9yaWcvc2V0dXAucHkKLSsrKyBQeXRob24tMy41LjEvc2V0dXAucHkKLUBAIC0xNTM2LDcgKzE1MzYsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICBzZWxmLmV4dGVuc2lvbnMuZXh0ZW5kKGV4dHMpCi0gCi0gICAgICAgICAjIENhbGwgdGhlIG1ldGhvZCBmb3IgZGV0ZWN0aW5nIHdoZXRoZXIgX3RraW50ZXIgY2FuIGJlIGNvbXBpbGVkCi0tICAgICAgICBzZWxmLmRldGVjdF90a2ludGVyKGluY19kaXJzLCBsaWJfZGlycykKLSsgICAgICAgICMgc2VsZi5kZXRlY3RfdGtpbnRlcihpbmNfZGlycywgbGliX2RpcnMpCi0gCi0gICAgICAgICAjIHRraW50ZXIgbW9kdWxlIHdpbGwgbm90IGJlIGF2YWxhaWJsZSBhcyB5b2N0bwotICAgICAgICAgIyBkb2Vzbid0IGhhdmUgdGsgaW50ZWdyYXRlZCAoeWV0KQorICMjICAgICAgICAgIyBVbmNvbW1lbnQgdGhlc2UgbGluZXMgaWYgeW91IHdhbnQgdG8gcGxheSB3aXRoIHh4bW9kdWxlLmMKKyAjIyAgICAgICAgIGV4dCA9IEV4dGVuc2lvbigneHgnLCBbJ3h4bW9kdWxlLmMnXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hdm9pZF93YXJuaW5nX2Zvcl9zdW5vc19zcGVjaWZpY19tb2R1bGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYXZvaWRfd2FybmluZ19mb3Jfc3Vub3Nfc3BlY2lmaWNfbW9kdWxlLnBhdGNoCmluZGV4IDMzN2UwZTMuLjhiYTU4MjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hdm9pZF93YXJuaW5nX2Zvcl9zdW5vc19zcGVjaWZpY19tb2R1bGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2F2b2lkX3dhcm5pbmdfZm9yX3N1bm9zX3NwZWNpZmljX21vZHVsZS5wYXRjaApAQCAtNSwxMiArNSwxMiBAQAogCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+CiAKLUluZGV4OiBQeXRob24tMi43LjIvc2V0dXAucHkKK0luZGV4OiBQeXRob24tMi43LjEzL3NldHVwLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4yLm9yaWcvc2V0dXAucHkJMjAxMi0wNC0wNSAyMjoyOToxOC4wNDkxOTY2MDggKzAzMDAKLSsrKyBQeXRob24tMi43LjIvc2V0dXAucHkJMjAxMi0wNC0wNSAyMjoyOTo1Ny41MDUxOTU0NTMgKzAzMDAKLUBAIC0xNTIyLDggKzE1MjIsOSBAQAotICAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ3N1bm9zNSc6CistLS0gUHl0aG9uLTIuNy4xMy5vcmlnL3NldHVwLnB5CisrKysgUHl0aG9uLTIuNy4xMy9zZXR1cC5weQorQEAgLTE2NzEsOCArMTY3MSw5IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKKyAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ3N1bm9zNSc6CiAgICAgICAgICAgICAgIyBTdW5PUyBzcGVjaWZpYyBtb2R1bGVzCiAgICAgICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignc3VuYXVkaW9kZXYnLCBbJ3N1bmF1ZGlvZGV2LmMnXSkgKQogLSAgICAgICAgZWxzZToKQEAgLTE5LDUgKzE5LDUgQEAKICsgICAgICAgICNlbHNlOgogKyAgICAgICAgIyAgICBtaXNzaW5nLmFwcGVuZCgnc3VuYXVkaW9kZXYnKQogIAotICAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgICMgX3NjcHJveHkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9jcmVhdGVfbWFuaWZlc3QyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2NyZWF0ZV9tYW5pZmVzdDIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc0NTA0NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9jcmVhdGVfbWFuaWZlc3QyLnB5CkBAIC0wLDAgKzEsMjc3IEBACisjIFRoaXMgc2NyaXB0IGlzIHVzZWQgYXMgYSBiaXRiYWtlIHRhc2sgdG8gY3JlYXRlIGEgbmV3IHB5dGhvbiBtYW5pZmVzdAorIyAkIGJpdGJha2UgcHl0aG9uIC1jIGNyZWF0ZV9tYW5pZmVzdAorIworIyBPdXIgZ29hbCBpcyB0byBrZWVwIHB5dGhvbi1jb3JlIGFzIHNtYWxsIGFzIHBvc2libGUgYW5kIGFkZCBvdGhlciBweXRob24KKyMgcGFja2FnZXMgb25seSB3aGVuIHRoZSB1c2VyIG5lZWRzIHRoZW0sIGhlbmNlIHdoeSB3ZSBzcGxpdCB1cHN0cmVhbSBweXRob24KKyMgaW50byBzZXZlcmFsIHBhY2thZ2VzLgorIworIyBJbiBhIHZlcnkgc2ltcGxpc3RpYyB3YXkgd2hhdCB0aGlzIGRvZXMgaXM6IAorIyBMYXVuY2ggcHl0aG9uIGFuZCBzZWUgc3BlY2lmaWNhbGx5IHdoYXQgaXMgcmVxdWlyZWQgZm9yIGl0IHRvIHJ1biBhdCBhIG1pbmltdW0KKyMKKyMgR28gdGhyb3VnaCB0aGUgcHl0aG9uLW1hbmlmZXN0IGZpbGUgYW5kIGxhdW5jaCBhIHNlcGFyYXRlIHRhc2sgZm9yIGV2ZXJ5IHNpbmdsZQorIyBvbmUgb2YgdGhlIGZpbGVzIG9uIGVhY2ggcGFja2FnZSwgdGhpcyB0YXNrIHdpbGwgY2hlY2sgd2hhdCB3YXMgcmVxdWlyZWQgZm9yIHRoYXQKKyMgc3BlY2lmaWMgbW9kdWxlIHRvIHJ1biwgdGhlc2UgbW9kdWxlcyB3aWxsIGJlIGNhbGxlZCBkZXBlbmRlbmNpZXMuCisjIFRoZSBvdXRwdXQgb2Ygc3VjaCB0YXNrIHdpbGwgYmUgYSBsaXN0IG9mIHRoZSBtb2R1bGVzIG9yIGRlcGVuZGVuY2llcyB0aGF0IHdlcmUKKyMgZm91bmQgZm9yIHRoYXQgZmlsZS4KKyMKKyMgU3VjaCBvdXRwdXQgd2lsbCBiZSBwYXJzZWQgYnkgdGhpcyBzY3JpcHQsIHdlIHdpbGwgbG9vayBmb3IgZWFjaCBkZXBlbmRlbmN5IG9uIHRoZQorIyBtYW5pZmVzdCBhbmQgaWYgd2UgZmluZCB0aGF0IGFub3RoZXIgcGFja2FnZSBhbHJlYWR5IGluY2x1ZGVzIGl0LCB0aGVuIHdlIHdpbGwgYWRkCisjIHRoYXQgcGFja2FnZSBhcyBhbiBSREVQRU5EUyB0byB0aGUgcGFja2FnZSB3ZSBhcmUgY3VycmVudGx5IGNoZWNraW5nOyBpbiBjYXNlIHdlIGRvbnQKKyMgZmluZCB0aGUgY3VycmVudCBkZXBlbmRlbmN5IG9uIGFueSBvdGhlciBwYWNrYWdlIHdlIHdpbGwgYWRkIGl0IHRvIHRoZSBjdXJyZW50IHBhY2thZ2UKKyMgYXMgcGFydCBvZiBGSUxFUy4KKyMKKyMKKyMgVGhpcyB3YXkgd2Ugd2lsbCBjcmVhdGUgYSBuZXcgbWFuaWZlc3QgZnJvbSB0aGUgZGF0YSBzdHJ1Y3R1cmUgdGhhdCB3YXMgYnVpbHQgZHVyaW5nCisjIHRoaXMgcHJvY2Vzcywgb250IHRoaXMgbmV3IG1hbmlmZXN0IGVhY2ggcGFja2FnZSB3aWxsIGNvbnRhaW4gc3BlY2lmaWNhbGx5IG9ubHkKKyMgd2hhdCBpdCBuZWVkcyB0byBydW4uCisjCisjIFRoZXJlIGFyZSBzb21lIGNhdmVhdHMgd2hpY2ggd2UgdHJ5IHRvIGRlYWwgd2l0aCwgc3VjaCBhcyByZXBlYXRlZCBmaWxlcyBvbiBkaWZmZXJlbnQKKyMgcGFja2FnZXMsIHBhY2thZ2VzIHRoYXQgaW5jbHVkZSBmb2xkZXJzLCB3aWxkY2FyZHMsIGFuZCBzcGVjaWFsIHBhY2thZ2VzLgorIyBJdHMgYWxzbyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHRoaXMgbWV0aG9kIG9ubHkgd29ya3MgZm9yIHB5dGhvbiBmaWxlcywgYW5kIHNoYXJlZAorIyBsaWJyYXJpZXMuIFN0YXRpYyBsaWJyYXJpZXMsIGhlYWRlciBmaWxlcyBhbmQgYmluYXJpZXMgbmVlZCB0byBiZSBkZWFsdCB3aXRoIG1hbnVhbGx5LgorIworIyBBdXRob3I6IEFsZWphbmRybyBFbmVkaW5vIEhlcm5hbmRleiBTYW1hbmllZ28gImFlaHMyOSIgPGFlaHMyOUBnbWFpbC5jb20+CisKKworaW1wb3J0IHN5cworaW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBqc29uCitpbXBvcnQgb3MKKworIyBIYWNrIHRvIGdldCBuYXRpdmUgcHl0aG9uIHNlYXJjaCBwYXRoIChmb3IgZm9sZGVycyksIG5vdCBmb25kIG9mIGl0IGJ1dCBpdCB3b3JrcyBmb3Igbm93CitwaXZvdD0ncmVjaXBlLXN5c3Jvb3QtbmF0aXZlJworZm9yIHAgaW4gc3lzLnBhdGg6CisgIGlmIHBpdm90IGluIHA6CisgICAgbmF0aXZlbGliZm9sZGVyPXBbOnAuZmluZChwaXZvdCkrbGVuKHBpdm90KV0KKworIyBFbXB0eSBkaWN0IHRvIGhvbGQgdGhlIHdob2xlIG1hbmlmZXN0CituZXdfbWFuaWZlc3QgPSB7fQorCisjIENoZWNrIGZvciByZXBlYXRlZCBmaWxlcywgZm9sZGVycyBhbmQgd2lsZGNhcmRzCithbGxmaWxlcz1bXQorcmVwZWF0ZWQ9W10KK3dpbGRjYXJkcz1bXQorCitoYXNmb2xkZXJzPVtdCithbGxmb2xkZXJzPVtdCisKK2RlZiBpc0ZvbGRlcih2YWx1ZSk6CisgIGlmIG9zLnBhdGguaXNkaXIodmFsdWUucmVwbGFjZSgnJHtsaWJkaXJ9JyxuYXRpdmVsaWJmb2xkZXIrJy91c3IvbGliJykpIG9yIG9zLnBhdGguaXNkaXIodmFsdWUucmVwbGFjZSgnJHtsaWJkaXJ9JyxuYXRpdmVsaWJmb2xkZXIrJy91c3IvbGliNjQnKSkgb3Igb3MucGF0aC5pc2Rpcih2YWx1ZS5yZXBsYWNlKCcke2xpYmRpcn0nLG5hdGl2ZWxpYmZvbGRlcisnL3Vzci9saWIzMicpKToKKyAgICByZXR1cm4gVHJ1ZQorICBlbHNlOgorICAgIHJldHVybiBGYWxzZQorCisjIFJlYWQgZXhpc3RpbmcgSlNPTiBtYW5pZmVzdAord2l0aCBvcGVuKCdweXRob24yLW1hbmlmZXN0Lmpzb24nKSBhcyBtYW5pZmVzdDoKKyAgb2xkX21hbmlmZXN0PWpzb24ubG9hZChtYW5pZmVzdCkKKworCisjIEZpcnN0IHBhc3MgdG8gZ2V0IGNvcmUtcGFja2FnZSBmdW5jdGlvbmFsaXR5LCBiZWNhdXNlIHdlIGJhc2UgZXZlcnl0aGluZyBvbiB0aGUgZmFjdCB0aGF0IGNvcmUgaXMgYWN0dWFsbHkgd29ya2luZworIyBOb3QgZXhhY3RseSB0aGUgc2FtZSBzbyBpdCBzaG91bGQgbm90IGJlIGEgZnVuY3Rpb24KK3ByaW50ICgiR2V0dGluZyBkZXBlbmRlbmNpZXMgZm9yIGNvcmUgcGFja2FnZToiKQorCisjIFNwZWNpYWwgY2FsbCB0byBjaGVjayBmb3IgY29yZSBwYWNrYWdlCitvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbc3lzLmV4ZWN1dGFibGUsICdnZXRfbW9kdWxlX2RlcHMyLnB5JywgJ3B5dGhvbi1jb3JlLXBhY2thZ2UnXSkKK2ZvciBpdGVtIGluIG91dHB1dC5zcGxpdCgpOgorICAgICMgV2UgYXBwZW5kIGl0IHNvIGl0IGRvZXNudCBodXJ0IHdoYXQgd2UgY3VycmVudGx5IGhhdmU6CisgICAgaWYgaXRlbSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICAgICAgICMgV2UgdXNlIHRoZSBzYW1lIGRhdGEgc3RydWN0dXJlIHNpbmNlIGl0cyB0aGUgb25lIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjaGVjaworICAgICAgICAjIGRlcGVuZGVuY2llcyBmb3Igb3RoZXIgcGFja2FnZXMKKyAgICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ10uYXBwZW5kKGl0ZW0pCisKK2ZvciB2YWx1ZSBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXToKKyAgIyBJZ25vcmUgZm9sZGVycywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlLCBkaWZmaWN1bHQgdG8gaGFuZGxlIG11bHRpbGliCisgIGlmIGlzRm9sZGVyKHZhbHVlKToKKyAgICAjIFBhc3MgaXQgZGlyZWN0bHkKKyAgICBpZiB2YWx1ZSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCisgICMgSWdub3JlIGJpbmFyaWVzLCBzaW5jZSB3ZSBkb24ndCBpbXBvcnQgdGhvc2UsIGFzc3VtZSBpdCB3YXMgYWRkZWQgY29ycmVjdGx5IChtYW51YWxseSkKKyAgaWYgJyR7YmluZGlyfScgaW4gdmFsdWU6CisgICAgIyBQYXNzIGl0IGRpcmVjdGx5CisgICAgaWYgdmFsdWUgbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgorICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQorICAgIGNvbnRpbnVlCisgICMgSWdub3JlIGVtcHR5IHZhbHVlcworICBpZiB2YWx1ZSA9PSAnJzoKKyAgICBjb250aW51ZQorICBpZiAnJHtpbmNsdWRlZGlyfScgaW4gdmFsdWU6CisgICAgaWYgdmFsdWUgbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgorICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQorICAgIGNvbnRpbnVlCisgICMgR2V0IG1vZHVsZSBuYW1lICwgc2hvdWxkbnQgYmUgYWZmZWN0ZWQgYnkgbGliZGlyL2JpbmRpcgorICB2YWx1ZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShvcy5wYXRoLm5vcm1wYXRoKHZhbHVlKSkpWzBdCisKKworICAjIExhdW5jaCBzZXBhcmF0ZSB0YXNrIGZvciBlYWNoIG1vZHVsZSBmb3IgZGV0ZXJtaW5pc3RpYyBiZWhhdmlvcgorICAjIEVhY2ggbW9kdWxlIHdpbGwgb25seSBpbXBvcnQgd2hhdCBpcyBuZWNlc3NhcnkgZm9yIGl0IHRvIHdvcmsgaW4gc3BlY2lmaWMKKyAgcHJpbnQgKCdHZXR0aW5nIGRlcGVuZGVuY2llcyBmb3IgbW9kdWxlOiAlcycgJSB2YWx1ZSkKKyAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW3N5cy5leGVjdXRhYmxlLCAnZ2V0X21vZHVsZV9kZXBzMi5weScsICclcycgJSB2YWx1ZV0pCisgIGZvciBpdGVtIGluIG91dHB1dC5zcGxpdCgpOgorICAgICMgV2UgYXBwZW5kIGl0IHNvIGl0IGRvZXNudCBodXJ0IHdoYXQgd2UgY3VycmVudGx5IGhhdmU6CisgICAgaWYgaXRlbSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQoaXRlbSkKKworIyBXZSBjaGVjayB3aGljaCBwYWNrYWdlcyBpbmNsdWRlIGZvbGRlcnMKK2ZvciBrZXkgaW4gb2xkX21hbmlmZXN0OgorICAgIGZvciB2YWx1ZSBpbiBvbGRfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKKyAgICAgICAgIyBJZ25vcmUgZm9sZGVycywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlLCBkaWZmaWN1bHQgdG8gaGFuZGxlIG11bHRpbGliCisgICAgICAgIGlmIGlzRm9sZGVyKHZhbHVlKToKKyAgICAgICAgICAgIHByaW50ICgnJXMgaXMgYSBmb2xkZXInICUgdmFsdWUpCisgICAgICAgICAgICBpZiBrZXkgbm90IGluIGhhc2ZvbGRlcnM6CisgICAgICAgICAgICAgICAgaGFzZm9sZGVycy5hcHBlbmQoa2V5KQorICAgICAgICAgICAgaWYgdmFsdWUgbm90IGluIGFsbGZvbGRlcnM6CisgICAgICAgICAgICAgICAgYWxsZm9sZGVycy5hcHBlbmQodmFsdWUpCisKK2ZvciBrZXkgaW4gb2xkX21hbmlmZXN0OgorICAgICMgVXNlIGFuIGVtcHR5IGRpY3QgYXMgZGF0YSBzdHJ1Y3R1cmUgdG8gaG9sZCBkYXRhIGZvciBlYWNoIHBhY2thZ2UgYW5kIGZpbGwgaXQgdXAKKyAgICBuZXdfbWFuaWZlc3Rba2V5XT17fQorICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddPVtdCisgICAgbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ109W10KKyAgICAjIEFsbCBwYWNrYWdlcyBzaG91bGQgZGVwZW5kIG9uIGNvcmUKKyAgICBpZiBrZXkgIT0gJ2NvcmUnOgorICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10uYXBwZW5kKCdjb3JlJykKKyAgICBuZXdfbWFuaWZlc3Rba2V5XVsnc3VtbWFyeSddPW9sZF9tYW5pZmVzdFtrZXldWydzdW1tYXJ5J10KKworICAgICMgSGFuZGxlIHNwZWNpYWwgY2FzZXMsIHdlIGFzc3VtZSB0aGF0IHdoZW4gdGhleSB3ZXJlIG1hbnVhbGx5IGFkZGVkIAorICAgICMgdG8gdGhlIG1hbmlmZXN0IHdlIGtuZXcgd2hhdCB3ZSB3ZXJlIGRvaW5nLgorICAgIHByaW50ICgnSGFuZGxpbmcgcGFja2FnZSAlcycgJSBrZXkpCisgICAgc3BlY2lhbF9wYWNrYWdlcz1bJ21pc2MnLCAnbW9kdWxlcycsICdkZXYnXQorICAgIGlmIGtleSBpbiBzcGVjaWFsX3BhY2thZ2VzIG9yICdzdGF0aWNkZXYnIGluIGtleToKKyAgICAgICAgcHJpbnQoJ1Bhc3NpbmcgJXMgcGFja2FnZSBkaXJlY3RseScgJSBrZXkpCisgICAgICAgIG5ld19tYW5pZmVzdFtrZXldPW9sZF9tYW5pZmVzdFtrZXldCisgICAgICAgIGNvbnRpbnVlCisKKyAgICBmb3IgdmFsdWUgaW4gb2xkX21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106CisgICAgICAgICMgV2UgYWxyZWFkeSBoYW5kbGVkIGNvcmUgb24gdGhlIGZpcnN0IHBhc3MKKyAgICAgICAgaWYga2V5ID09ICdjb3JlJzoKKyAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLmFwcGVuZCh2YWx1ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICMgSWdub3JlIGZvbGRlcnMsIHNpbmNlIHdlIGRvbid0IGltcG9ydCB0aG9zZSwgZGlmZmljdWx0IHRvIGhhbmRsZSBtdWx0aWxpYgorICAgICAgICBpZiBpc0ZvbGRlcih2YWx1ZSk6CisgICAgICAgICAgICAjIFBhc3MgZm9sZGVycyBkaXJlY3RseQorICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQorICAgICAgICAjIElnbm9yZSBiaW5hcmllcywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlCisgICAgICAgIGlmICcke2JpbmRpcn0nIGluIHZhbHVlOgorICAgICAgICAgICAgIyBQYXNzIGl0IGRpcmVjdGx5IHRvIHRoZSBuZXcgbWFuaWZlc3QgZGF0YSBzdHJ1Y3R1cmUKKyAgICAgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKKyAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAjIElnbm9yZSBlbXB0eSB2YWx1ZXMKKyAgICAgICAgaWYgdmFsdWUgPT0gJyc6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiAnJHtpbmNsdWRlZGlyfScgaW4gdmFsdWU6CisgICAgICAgICAgICBpZiB2YWx1ZSBub3QgaW4gbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106CisgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgIyBHZXQgbW9kdWxlIG5hbWUgLCBzaG91bGRudCBiZSBhZmZlY3RlZCBieSBsaWJkaXIvYmluZGlyCisgICAgICAgIHZhbHVlID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKG9zLnBhdGgubm9ybXBhdGgodmFsdWUpKSlbMF0KKworICAgICAgICAjIExhdW5jaCBzZXBhcmF0ZSB0YXNrIGZvciBlYWNoIG1vZHVsZSBmb3IgZGV0ZXJtaW5pc3RpYyBiZWhhdmlvcgorICAgICAgICAjIEVhY2ggbW9kdWxlIHdpbGwgb25seSBpbXBvcnQgd2hhdCBpcyBuZWNlc3NhcnkgZm9yIGl0IHRvIHdvcmsgaW4gc3BlY2lmaWMKKyAgICAgICAgcHJpbnQgKCdHZXR0aW5nIGRlcGVuZGVuY2llcyBmb3IgbW9kdWxlOiAlcycgJSB2YWx1ZSkKKyAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW3N5cy5leGVjdXRhYmxlLCAnZ2V0X21vZHVsZV9kZXBzMi5weScsICclcycgJSB2YWx1ZV0pCisKKyAgICAgICAgIyBXZSBjYW4gcHJpbnQgZGVwZW5kZW5jaWVzIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMKKyAgICAgICAgI3ByaW50IChvdXRwdXQpCisgICAgICAgICMgT3V0cHV0IHdpbGwgaGF2ZSBhbGwgZGVwZW5kZW5jaWVzCisgICAgICAgIGZvciBpdGVtIGluIG91dHB1dC5zcGxpdCgpOgorCisgICAgICAgICAgICAjIFdhcm5pbmc6IFRoaXMgZmlyc3QgcGFydCBpcyB1Z2x5CisgICAgICAgICAgICAjIE9uZSBvZiB0aGUgZGVwZW5kZW5jaWVzIHRoYXQgd2FzIGZvdW5kLCBjb3VsZCBiZSBpbnNpZGUgb2Ygb25lIG9mIHRoZSBmb2xkZXJzIGluY2x1ZGVkIGJ5IGFub3RoZXIgcGFja2FnZQorICAgICAgICAgICAgIyBXZSBuZWVkIHRvIGNoZWNrIGlmIHRoaXMgaGFwcGVucyBzbyB3ZSBjYW4gYWRkIHRoZSBwYWNrYWdlIGNvbnRhaW5pbmcgdGhlIGZvbGRlciBhcyBhbiBSREVQRU5EUworICAgICAgICAgICAgIyBlLmcuIEZvbGRlciBlbmNvZGluZ3MgY29udGFpbmVkIGluIGNvZGVjcworICAgICAgICAgICAgIyBUaGlzIHdvdWxkIGJlIHNvbHZlZCBpZiBubyBwYWNrYWdlcyBpbmNsdWRlZCBhbnkgZm9sZGVycworCisgICAgICAgICAgICAjIFRoaXMgY2FuIGJlIGRvbmUgaW4gdHdvIHdheXM6CisgICAgICAgICAgICAjIDEgLSBXZSBhc3N1bWUgdGhhdCBpZiB3ZSB0YWtlIG91dCB0aGUgZmlsZW5hbWUgZnJvbSB0aGUgcGF0aCB3ZSB3b3VsZCBnZXQKKyAgICAgICAgICAgICMgICB0aGUgZm9sZGVyIHN0cmluZywgdGhlbiB3ZSB3b3VsZCBjaGVjayBpZiBmb2xkZXIgc3RyaW5nIGlzIGluIHRoZSBsaXN0IG9mIGZvbGRlcnMKKyAgICAgICAgICAgICMgICBUaGlzIHdvdWxkIG5vdCB3b3JrIGlmIGEgcGFja2FnZSBjb250YWlucyBhIGZvbGRlciB3aGljaCBjb250YWlucyBhbm90aGVyIGZvbGRlcgorICAgICAgICAgICAgIyAgIGUuZy4gcGF0aC9mb2xkZXIxL2ZvbGRlcjIvZmlsZW5hbWUgIGZvbGRlcl9zdHJpbmc9IHBhdGgvZm9sZGVyMS9mb2xkZXIyCisgICAgICAgICAgICAjICAgZm9sZGVyX3N0cmluZyB3b3VsZCBub3QgbWF0Y2ggYW55IHZhbHVlIGNvbnRhaW5lZCBpbiB0aGUgbGlzdCBvZiBmb2xkZXJzCisgICAgICAgICAgICAjCisgICAgICAgICAgICAjIDIgLSBXZSBkbyBpdCB0aGUgb3RoZXIgd2F5IGFyb3VuZCwgY2hlY2tpbmcgaWYgdGhlIGZvbGRlciBpcyBjb250YWluZWQgaW4gdGhlIHBhdGgKKyAgICAgICAgICAgICMgICBlLmcuIHBhdGgvZm9sZGVyMS9mb2xkZXIyL2ZpbGVuYW1lICBmb2xkZXJfc3RyaW5nPSBwYXRoL2ZvbGRlcjEvZm9sZGVyMgorICAgICAgICAgICAgIyAgIGlzIGZvbGRlcl9zdHJpbmcgaW5zaWRlIHBhdGgvZm9sZGVyMS9mb2xkZXIyL2ZpbGVuYW1lPywgCisgICAgICAgICAgICAjICAgWWVzLCBpdCB3b3JrcywgYnV0IHdlIHdhc3RlIGEgY291cGxlIG9mIG1pbGxpc2Vjb25kcy4KKworICAgICAgICAgICAgaW5Gb2xkZXJzPUZhbHNlCisgICAgICAgICAgICBmb3IgZm9sZGVyIGluIGFsbGZvbGRlcnM6CisgICAgICAgICAgICAgICAgaWYgZm9sZGVyIGluIGl0ZW06CisgICAgICAgICAgICAgICAgICAgIGluRm9sZGVycyA9IFRydWUgIyBEaWQgd2UgZmluZCBhIGZvbGRlcj8KKyAgICAgICAgICAgICAgICAgICAgZm9sZGVyRm91bmQgPSBGYWxzZSAjIFNlY29uZCBmbGFnIHRvIGJyZWFrIGlubmVyIGZvcgorICAgICAgICAgICAgICAgICAgICAjIExvb3Agb25seSB0aHJvdWdoIHBhY2thZ2VzIHdoaWNoIGNvbnRhaW4gZm9sZGVycworICAgICAgICAgICAgICAgICAgICBmb3Iga2V5Zm9sZGVyIGluIGhhc2ZvbGRlcnM6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9sZGVyRm91bmQgPT0gRmFsc2UpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICNwcmludCgiQ2hlY2tpbmcgZm9sZGVyICVzIG9uIHBhY2thZ2UgJXMiICUgKGl0ZW0sa2V5Zm9sZGVyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZmlsZV9mb2xkZXIgaW4gb2xkX21hbmlmZXN0W2tleWZvbGRlcl1bJ2ZpbGVzJ106CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbGVfZm9sZGVyPT1mb2xkZXI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCAoJyVzIGZvdW5kIGluICVzJyAlIChmb2xkZXIsIGtleWZvbGRlcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xkZXJGb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGtleWZvbGRlciBub3QgaW4gbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10gYW5kIGtleWZvbGRlciAhPSBrZXk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10uYXBwZW5kKGtleWZvbGRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgIyBBIGZvbGRlciB3YXMgZm91bmQgc28gd2UncmUgZG9uZSB3aXRoIHRoaXMgaXRlbSwgd2UgY2FuIGdvIG9uCisgICAgICAgICAgICBpZiBpbkZvbGRlcnM6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgIyBXZSBtaWdodCBhbHJlYWR5IGhhdmUgaXQgb24gdGhlIGRpY3Rpb25hcnkgc2luY2UgaXQgY291bGQgZGVwZW5kIG9uIGEgKHByZXZpb3VzbHkgY2hlY2tlZCkgbW9kdWxlCisgICAgICAgICAgICBpZiBpdGVtIG5vdCBpbiBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKKyAgICAgICAgICAgICAgICAjIEhhbmRsZSBjb3JlIGFzIGEgc3BlY2lhbCBwYWNrYWdlLCB3ZSBhbHJlYWR5IGRpZCBpdCBzbyB3ZSBwYXNzIGl0IHRvIE5FVyBkYXRhIHN0cnVjdHVyZSBkaXJlY3RseQorICAgICAgICAgICAgICAgIGlmIGtleT09J2NvcmUnOgorICAgICAgICAgICAgICAgICAgcHJpbnQoJ0FkZGluZyAlcyB0byAlcyBGSUxFUycgJSAoaXRlbSwga2V5KSkKKyAgICAgICAgICAgICAgICAgIGlmIGl0ZW0uZW5kc3dpdGgoJyonKToKKyAgICAgICAgICAgICAgICAgICAgICB3aWxkY2FyZHMuYXBwZW5kKGl0ZW0pCisgICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQoaXRlbSkKKworICAgICAgICAgICAgICAgICAgIyBDaGVjayBmb3IgcmVwZWF0ZWQgZmlsZXMKKyAgICAgICAgICAgICAgICAgIGlmIGl0ZW0gbm90IGluIGFsbGZpbGVzOgorICAgICAgICAgICAgICAgICAgICAgIGFsbGZpbGVzLmFwcGVuZChpdGVtKQorICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICByZXBlYXRlZC5hcHBlbmQoaXRlbSkKKworICAgICAgICAgICAgICAgIGVsc2U6CisKKyAgICAgICAgICAgICAgICAgICAgIyBDaGVjayBpZiB0aGlzIGRlcGVuZGVuY3kgaXMgYWxyZWFkeSBjb250YWluZWQgb24gYW5vdGhlciBwYWNrYWdlLCBzbyB3ZSBhZGQgaXQKKyAgICAgICAgICAgICAgICAgICAgIyBhcyBhbiBSREVQRU5EUywgb3IgaWYgaXRzIG5vdCwgaXQgbWVhbnMgaXQgc2hvdWxkIGJlIGNvbnRhaW5lZCBvbiB0aGUgY3VycmVudAorICAgICAgICAgICAgICAgICAgICAjIHBhY2thZ2UsIHNvIHdlIHNob3VsZCBhZGQgaXQgdG8gRklMRVMKKyAgICAgICAgICAgICAgICAgICAgZm9yIG5ld2tleSBpbiBvbGRfbWFuaWZlc3Q6CisgICAgICAgICAgICAgICAgICAgICAgICAjIERlYnVnCisgICAgICAgICAgICAgICAgICAgICAgICAjcHJpbnQoIkNoZWNraW5nICVzICIgJSBpdGVtICsgIiBpbiAlcyIgJSBuZXdrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBpdGVtIGluIG9sZF9tYW5pZmVzdFtuZXdrZXldWydmaWxlcyddOiAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFNpbmNlIHdlcmUgbmVzdGluZywgd2UgbmVlZCB0byBjaGVjayBpdHMgbm90IHRoZSBzYW1lIGtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihuZXdrZXkhPWtleSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBuZXdrZXkgbm90IGluIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgaXQgdG8gdGhlIG5ldyBtYW5pZmVzdCBkYXRhIHN0cnVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBEZWJ1ZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ0FkZGluZyAlcyB0byAlcyBSREVQRU5EUywgYmVjYXVzZSBpdCBjb250YWlucyAlcycgJSAobmV3a2V5LCBrZXksIGl0ZW0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10uYXBwZW5kKG5ld2tleSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgIyBEZWJ1ZworICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdBZGRpbmcgJXMgdG8gJXMgRklMRVMnICUgKGl0ZW0sIGtleSkpCisgICAgICAgICAgICAgICAgICAgICAgIyBTaW5jZSBpdCB3YXNudCBmb3VuZCBvbiBhbm90aGVyIHBhY2thZ2UsIGl0cyBub3QgYW4gUkRFUCwgc28gYWRkIGl0IHRvIEZJTEVTIGZvciB0aGlzIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQoaXRlbSkKKyAgICAgICAgICAgICAgICAgICAgICBpZiBpdGVtLmVuZHN3aXRoKCcqJyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGRjYXJkcy5hcHBlbmQoaXRlbSkKKyAgICAgICAgICAgICAgICAgICAgICBpZiBpdGVtIG5vdCBpbiBhbGxmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsZmlsZXMuYXBwZW5kKGl0ZW0pCisgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0ZWQuYXBwZW5kKGl0ZW0pCisKK3ByaW50ICgnVGhlIGZvbGxvd2luZyBmaWxlcyBhcmUgcmVwZWF0ZWQgKGNvbnRhaW5lZCBpbiBtb3JlIHRoYW4gb25lIHBhY2thZ2UpLCBwbGVhc2UgY2hlY2sgd2hpY2ggcGFja2FnZSBzaG91bGQgZ2V0IGl0OicpCitwcmludCAocmVwZWF0ZWQpCitwcmludCgnVGhlIGZvbGxvd2luZyBmaWxlcyBjb250YWluIHdpbGRjYXJkcywgcGxlYXNlIGNoZWNrIHRoZXkgYXJlIG5lY2Vzc2FyeScpCitwcmludCh3aWxkY2FyZHMpCitwcmludCgnVGhlIGZvbGxvd2luZyBmaWxlcyBjb250YWluIGZvbGRlcnMsIHBsZWFzZSBjaGVjayB0aGV5IGFyZSBuZWNlc3NhcnknKQorcHJpbnQoaGFzZm9sZGVycykKKworIyBTb3J0IGl0IGp1c3Qgc28gaXQgbG9va3MgbmljZSAKK2ZvciBrZXkgaW4gbmV3X21hbmlmZXN0OgorICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLnNvcnQoKQorICAgIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddLnNvcnQoKQorCisjIENyZWF0ZSB0aGUgbWFuaWZlc3QgZnJvbSB0aGUgZGF0YSBzdHJ1Y3R1cmUgdGhhdCB3YXMgYnVpbHQKK3dpdGggb3BlbigncHl0aG9uMi1tYW5pZmVzdC5qc29uLm5ldycsJ3cnKSBhcyBvdXRmaWxlOgorICAgIGpzb24uZHVtcChuZXdfbWFuaWZlc3Qsb3V0ZmlsZSxzb3J0X2tleXM9VHJ1ZSwgaW5kZW50PTQsIHNlcGFyYXRvcnM9KCcsJywgJzogJykpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vZml4LW1ha2VmaWxlLWZvci1wdGVzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9maXgtbWFrZWZpbGUtZm9yLXB0ZXN0LnBhdGNoCmluZGV4IDY2OTExMmQuLjYwZDc4MmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9maXgtbWFrZWZpbGUtZm9yLXB0ZXN0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9maXgtbWFrZWZpbGUtZm9yLXB0ZXN0LnBhdGNoCkBAIC00LDE4ICs0LDE5IEBACiBTaWduZWQtb2ZmLWJ5OiBUdWRvciBGbG9yZWEgPHR1ZG9yLmZsb3JlYUBlbmVhLmNvbT4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCi1kaWZmIC1ydU4gYS9NYWtlZmlsZS5wcmUuaW4gYi9NYWtlZmlsZS5wcmUuaW4KLS0tLSBhL01ha2VmaWxlLnByZS5pbgkyMDEzLTA2LTI3IDEwOjQ0OjExLjAzMzg0MDUzMiArMDIwMAotKysrIGIvTWFrZWZpbGUucHJlLmluCTIwMTMtMDYtMjcgMTA6NDQ6MzkuNTcyNjM1MjczICswMjAwCi1AQCAtNzA5LDE0ICs3MDksMTkgQEAKLSAjIGdlbmVyYXRlZCBieXRlY29kZS4gIFRoaXMgaXMgc29tZXRpbWVzIGEgdmVyeSBzaHkgYnVnIG5lZWRpbmcgYSBsb3Qgb2YKLSAjIHNhbXBsZSBkYXRhLgorSW5kZXg6IFB5dGhvbi0yLjcuMTQvTWFrZWZpbGUucHJlLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL01ha2VmaWxlLnByZS5pbgorKysrIFB5dGhvbi0yLjcuMTQvTWFrZWZpbGUucHJlLmluCitAQCAtODQ2LDE0ICs4NDYsMTkgQEAgJChMSUJSQVJZX09CSlMpICQoTU9ET0JKUykgTW9kdWxlcy9weXRobworIAorIC5QSE9OWTogdGVzdCB0ZXN0YWxsIHRlc3R1bml2ZXJzYWwgYnVpbGRib3R0ZXN0IHB5dGhvbmluZm8KICAKIC1URVNUT1BUUz0JLWwgJChFWFRSQVRFU1RPUFRTKQogK1RFU1RPUFRTPQktbCAtdiAkKEVYVFJBVEVTVE9QVFMpCiAgVEVTVFBST0c9CSQoc3JjZGlyKS9MaWIvdGVzdC9yZWdydGVzdC5weQogLVRFU1RQWVRIT049CSQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pIC1XZCAtMyAtRSAtdHQgJChURVNUUFlUSE9OT1BUUykKLS10ZXN0OgkJYWxsIHBsYXRmb3JtCistdGVzdDoJCUBERUZfTUFLRV9SVUxFQCBwbGF0Zm9ybQogLQkJLWZpbmQgJChzcmNkaXIpL0xpYiAtbmFtZSAnKi5weVtjb10nIC1wcmludCB8IHhhcmdzIHJtIC1mCiArVEVTVFBZVEhPTj0JJChSVU5TSEFSRUQpICQoQlVJTERQWVRIT04pIC1XZCAtMyAtRSAtdHQgJChURVNUUFlUSE9OT1BUUykKICt0ZXN0OgkJYnVpbGQtdGVzdApAQCAtMjYsOCArMjcsOCBAQAogIAkJLSQoVEVTVFBZVEhPTikgJChURVNUUFJPRykgJChURVNUT1BUUykKICAJCSQoVEVTVFBZVEhPTikgJChURVNUUFJPRykgJChURVNUT1BUUykKICAKLStidWlsZC10ZXN0OglhbGwgcGxhdGZvcm0KKytidWlsZC10ZXN0OglAREVGX01BS0VfUlVMRUAgcGxhdGZvcm0KICsKLSB0ZXN0YWxsOglhbGwgcGxhdGZvcm0KKyB0ZXN0YWxsOglAREVGX01BS0VfUlVMRUAgcGxhdGZvcm0KICAJCS1maW5kICQoc3JjZGlyKS9MaWIgLW5hbWUgJyoucHlbY29dJyAtcHJpbnQgfCB4YXJncyBybSAtZgogIAkJJChURVNUUFlUSE9OKSAkKHNyY2RpcikvTGliL2NvbXBpbGVhbGwucHkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9nZXRfbW9kdWxlX2RlcHMyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2dldF9tb2R1bGVfZGVwczIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNlN2M2ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9nZXRfbW9kdWxlX2RlcHMyLnB5CkBAIC0wLDAgKzEsMTEyIEBACisjIFRoaXMgc2NyaXB0IGlzIGxhdW5jaGVkIG9uIHNlcGFyYXRlIHRhc2sgZm9yIGVhY2ggcHl0aG9uIG1vZHVsZQorIyBJdCBjaGVja3MgZm9yIGRlcGVuZGVuY2llcyBmb3IgdGhhdCBzcGVjaWZpYyBtb2R1bGUgYW5kIHByaW50cyAKKyMgdGhlbSBvdXQsIHRoZSBvdXRwdXQgb2YgdGhpcyBleGVjdXRpb24gd2lsbCBoYXZlIGFsbCBkZXBlbmRlbmNpZXMKKyMgZm9yIGEgc3BlY2lmaWMgbW9kdWxlLCB3aGljaCB3aWxsIGJlIHBhcnNlZCBhbiBkZWFsdCBvbiBjcmVhdGVfbWFuaWZlc3QucHkKKyMKKyMgQXV0aG9yOiBBbGVqYW5kcm8gRW5lZGlubyBIZXJuYW5kZXogU2FtYW5pZWdvICJhZWhzMjkiIDxhZWhzMjlAZ21haWwuY29tPgorCisKKyMgV2UgY2FuIGdldCBhIGxvZyBwZXIgbW9kdWxlLCBmb3IgYWxsIHRoZSBkZXBlbmRlbmNpZXMgdGhhdCB3ZXJlIGZvdW5kLCBidXQgaXRzIG1lc3N5LgorZGVidWc9RmFsc2UKKworaW1wb3J0IHN5cworCisjIFdlIGNhbiBnZXQgYSBsaXN0IG9mIHRoZSBtb2R1bGVzIHdoaWNoIGFyZSBjdXJyZW50bHkgcmVxdWlyZWQgdG8gcnVuIHB5dGhvbgorIyBzbyB3ZSBydW4gcHl0aG9uLWNvcmUgYW5kIGdldCBpdHMgbW9kdWxlcywgd2UgdGhlbiBpbXBvcnQgd2hhdCB3ZSBuZWVkCisjIGFuZCBjaGVjayB3aGF0IG1vZHVsZXMgYXJlIGN1cnJlbnRseSBydW5uaW5nLCBpZiB3ZSBzdWJzdHJhY3QgdGhlbSBmcm9tIHRoZQorIyBtb2R1bGVzIHdlIGhhZCBpbml0aWFsbHksIHdlIGdldCB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgbW9kdWxlIHdlIGltcG9ydGVkLgorCisjIFdlIHVzZSBpbXBvcnRsaWIgdG8gYWNoaWV2ZSB0aGlzLCBzbyB3ZSBhbHNvIG5lZWQgdG8ga25vdyB3aGF0IG1vZHVsZXMgaW1wb3J0bGliIG5lZWRzCitpbXBvcnQgaW1wb3J0bGliCisKK2NvcmVfZGVwcz1zZXQoc3lzLm1vZHVsZXMpCisKK2RlZiBmaXhfcGF0aChkZXBfcGF0aCk6CisgICAgaW1wb3J0IG9zCisgICAgIyBXZSBET05UIHdhbnQgdGhlIHBhdGggb24gb3VyIEhPU1Qgc3lzdGVtCisgICAgcGl2b3Q9J3JlY2lwZS1zeXNyb290LW5hdGl2ZScKKyAgICBkZXBfcGF0aD1kZXBfcGF0aFtkZXBfcGF0aC5maW5kKHBpdm90KStsZW4ocGl2b3QpOl0KKworICAgIGlmICcvdXNyL2JpbicgaW4gZGVwX3BhdGg6CisgICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZSgnL3Vzci9iaW4nJyR7YmluZGlyfScpCisKKyAgICAjIEhhbmRsZSBtdWx0aWxpYiwgaXMgdGhlcmUgYSBiZXR0ZXIgd2F5PworICAgIGlmICcvdXNyL2xpYjMyJyBpbiBkZXBfcGF0aDoKKyAgICAgICAgZGVwX3BhdGggPSBkZXBfcGF0aC5yZXBsYWNlKCcvdXNyL2xpYjMyJywnJHtsaWJkaXJ9JykKKyAgICBpZiAnL3Vzci9saWI2NCcgaW4gZGVwX3BhdGg6CisgICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZSgnL3Vzci9saWI2NCcsJyR7bGliZGlyfScpCisgICAgaWYgJy91c3IvbGliJyBpbiBkZXBfcGF0aDoKKyAgICAgICAgZGVwX3BhdGggPSBkZXBfcGF0aC5yZXBsYWNlKCcvdXNyL2xpYicsJyR7bGliZGlyfScpCisgICAgaWYgJy91c3IvaW5jbHVkZScgaW4gZGVwX3BhdGg6CisgICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZSgnL3Vzci9pbmNsdWRlJywnJHtpbmNsdWRlZGlyfScpCisgICAgaWYgJ19faW5pdF9fLicgaW4gZGVwX3BhdGg6CisgICAgICAgIGRlcF9wYXRoID0gIG9zLnBhdGguc3BsaXQoZGVwX3BhdGgpWzBdCisKKyAgICAjIElmIGEgKi5weWMgZmlsZSB3YXMgaW1wb3J0ZWQsIHdlIHJlcGxhY2UgaXQgd2l0aCAqLnB5IChzaW5jZSB3ZSBkZWFsIHdpdGggUFlDcyBvbiBjcmVhdGVfbWFuaWZlc3QpCisgICAgaWYgJy5weWMnIGluIGRlcF9wYXRoOgorICAgICAgICBkZXBfcGF0aCA9IGRlcF9wYXRoLnJlcGxhY2UoJy5weWMnLCcucHknKQorCisgICAgcmV0dXJuIGRlcF9wYXRoCisKKyMgTW9kdWxlIHRvIGltcG9ydCB3YXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50CitjdXJyZW50X21vZHVsZSA9ICBzdHIoc3lzLmFyZ3ZbMV0pLnJzdHJpcCgpCitpZihkZWJ1Zz09VHJ1ZSk6CisJbG9nID0gb3BlbignbG9nXyVzJyAlIGN1cnJlbnRfbW9kdWxlLCd3JykKKyAgICAgICAgbG9nLndyaXRlKCdNb2R1bGUgJXMgZ2VuZXJhdGVkIHRoZSBmb2xsb3dpbmcgZGVwZW5kZW5jaWVzOlxuJyAlIGN1cnJlbnRfbW9kdWxlKQordHJ5OgorICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCclcycgJSBjdXJyZW50X21vZHVsZSkKK2V4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgorICAgIGlmIChkZWJ1Zz09VHJ1ZSk6CisgICAgICAgIGxvZy53cml0ZSgnTW9kdWxlIHdhcyBub3QgZm91bmQnKQorICAgIHBhc3MKKworCisjIEdldCBjdXJyZW50IG1vZHVsZSBkZXBlbmRlbmNpZXMsIGRpZiB3aWxsIGNvbnRhaW4gYSBsaXN0IG9mIHNwZWNpZmljIGRlcHMgZm9yIHRoaXMgbW9kdWxlCittb2R1bGVfZGVwcz1zZXQoc3lzLm1vZHVsZXMpCisKKyMgV2UgaGFuZGxlIHRoZSBjb3JlIHBhY2thZ2UgKDFzdCBwYXNzIG9uIGNyZWF0ZV9tYW5pZmVzdC5weSkgYXMgYSBzcGVjaWFsIGNhc2UKK2lmIGN1cnJlbnRfbW9kdWxlID09ICdweXRob24tY29yZS1wYWNrYWdlJzoKKyAgICBkaWYgPSBjb3JlX2RlcHMKK2Vsc2U6CisgICAgZGlmID0gbW9kdWxlX2RlcHMtY29yZV9kZXBzCisKKworIyBDaGVjayB3aGVyZSBlYWNoIGRlcGVuZGVuY3kgY2FtZSBmcm9tCitmb3IgaXRlbSBpbiBkaWY6CisgICAgZGVwX3BhdGg9JycKKyAgICB0cnk6CisgICAgICAgIGlmIChkZWJ1Zz09VHJ1ZSk6CisgICAgICAgICAgICBsb2cud3JpdGUoJ0NhbGxpbmc6IHN5cy5tb2R1bGVzWycgKyAnJXMnICUgaXRlbSArICddLl9fZmlsZV9fXG4nKQorICAgICAgICBkZXBfcGF0aCA9IHN5cy5tb2R1bGVzWyclcycgJSBpdGVtXS5fX2ZpbGVfXworICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBlOgorICAgICAgICAjIERlYWxzIHdpdGggdGhyZWFkIChidWlsdGluIG1vZHVsZSkgbm90IGhhdmluZyBfX2ZpbGVfXyBhdHRyaWJ1dGUKKwlpZiBkZWJ1Zz09VHJ1ZToKKyAgICAgICAgICAgIGxvZy53cml0ZShpdGVtICsgJyAnKQorICAgICAgICAgICAgbG9nLndyaXRlKHN0cihlKSkKKwkgICAgbG9nLndyaXRlKCdcbicpCisgICAgICAgICAgICBwYXNzCisgICAgZXhjZXB0IE5hbWVFcnJvciBhcyBlOgorICAgICAgICAjIERlYWxzIHdpdGggTmFtZUVycm9yOiBuYW1lICdkZXBfcGF0aCcgaXMgbm90IGRlZmluZWQKKyAgICAgICAgIyBiZWNhdXNlIG1vZHVsZSBpcyBub3QgZm91bmQgKHdhc24ndCBjb21waWxlZD8pLCBlLmcuIGJkZHNtCisgICAgICAgIGlmIChkZWJ1Zz09VHJ1ZSk6CisgICAgICAgICAgICBsb2cud3JpdGUoaXRlbSsnICcpIAorICAgICAgICAgICAgbG9nLndyaXRlKHN0cihlKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIHBhc3MKKworICAgICMgU2l0ZS1jdXN0b21pemUgaXMgYSBzcGVjaWFsIGNhc2Ugc2luY2Ugd2UgKE9wZW5FbWJlZGRlZCkgcHV0IGl0IHRoZXJlIG1hbnVhbGx5CisgICAgaWYgJ3NpdGVjdXN0b21pemUnIGluIGRlcF9wYXRoOgorICAgICAgICBkZXBfcGF0aCA9ICcke2xpYmRpcn0vcHl0aG9uMi43L3NpdGVjdXN0b21pemUucHknCisgICAgICAgICMgUHJpbnRzIG91dCByZXN1bHQsIHdoaWNoIGlzIHdoYXQgd2lsbCBiZSB1c2VkIGJ5IGNyZWF0ZV9tYW5pZmVzdAorICAgICAgICBwcmludCAoZGVwX3BhdGgpCisgICAgICAgIGNvbnRpbnVlCisKKyAgICBkZXBfcGF0aCA9IGZpeF9wYXRoKGRlcF9wYXRoKQorCisgICAgaWYgKGRlYnVnPT1UcnVlKToKKyAgICAgICAgbG9nLndyaXRlKGRlcF9wYXRoKydcbicpCisKKyAgICAjIFByaW50cyBvdXQgcmVzdWx0LCB3aGljaCBpcyB3aGF0IHdpbGwgYmUgdXNlZCBieSBjcmVhdGVfbWFuaWZlc3QKKyAgICBwcmludCAoZGVwX3BhdGgpCisKK2lmIGRlYnVnPT1UcnVlOgorICAgIGxvZy5jbG9zZSgpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vbXVsdGlsaWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vbXVsdGlsaWIucGF0Y2gKaW5kZXggZjU1NjhkMi4uMTExNmRkNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL211bHRpbGliLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9tdWx0aWxpYi5wYXRjaApAQCAtMSwxMSArMSwxMSBAQAogUmViYXNlZCBmb3IgcHl0aG9uLTIuNy45CiBTaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IFB5dGhvbi0yLjcuMTMvY29uZmlndXJlLmFjCitJbmRleDogUHl0aG9uLTIuNy4xNC9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvY29uZmlndXJlLmFjCi0rKysgUHl0aG9uLTIuNy4xMy9jb25maWd1cmUuYWMKLUBAIC03NTksNiArNzU5LDEwIEBAIFN1bk9TKikKKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvY29uZmlndXJlLmFjCisrKysgUHl0aG9uLTIuNy4xNC9jb25maWd1cmUuYWMKK0BAIC03NTgsNiArNzU4LDEwIEBAIFN1bk9TKikKICAgICAgOzsKICBlc2FjCiAgCkBAIC0xNiwxMCArMTYsMTAgQEAKICAKICBBQ19TVUJTVChMSUJSQVJZKQogIEFDX01TR19DSEVDS0lORyhMSUJSQVJZKQotSW5kZXg6IFB5dGhvbi0yLjcuMTMvSW5jbHVkZS9weXRob25ydW4uaAorSW5kZXg6IFB5dGhvbi0yLjcuMTQvSW5jbHVkZS9weXRob25ydW4uaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9JbmNsdWRlL3B5dGhvbnJ1bi5oCi0rKysgUHl0aG9uLTIuNy4xMy9JbmNsdWRlL3B5dGhvbnJ1bi5oCistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0luY2x1ZGUvcHl0aG9ucnVuLmgKKysrKyBQeXRob24tMi43LjE0L0luY2x1ZGUvcHl0aG9ucnVuLmgKIEBAIC0xMDgsNiArMTA4LDcgQEAgUHlBUElfRlVOQyhjaGFyICopIFB5X0dldFBhdGgodm9pZCk7CiAgLyogSW4gdGhlaXIgb3duIGZpbGVzICovCiAgUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldFZlcnNpb24odm9pZCk7CkBAIC0yOCwxMCArMjgsMTAgQEAKICBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0Q29weXJpZ2h0KHZvaWQpOwogIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRDb21waWxlcih2b2lkKTsKICBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0QnVpbGRJbmZvKHZvaWQpOwotSW5kZXg6IFB5dGhvbi0yLjcuMTMvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKK0luZGV4OiBQeXRob24tMi43LjE0L0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5Ci0rKysgUHl0aG9uLTIuNy4xMy9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQorLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQorKysrIFB5dGhvbi0yLjcuMTQvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKIEBAIC0yMiw2ICsyMiw4IEBAIGZyb20gc2l0ZSBpbXBvcnQgVVNFUl9CQVNFCiAgZnJvbSBzaXRlIGltcG9ydCBVU0VSX1NJVEUKICAKQEAgLTQxLDE5ICs0MSwyMSBAQAogIGlmIHN5cy52ZXJzaW9uIDwgIjIuMiI6CiAgICAgIFdJTkRPV1NfU0NIRU1FID0gewogICAgICAgICAgJ3B1cmVsaWInOiAnJGJhc2UnLAotQEAgLTQyLDcgKzQ0LDcgQEAgZWxzZToKK0BAIC00MSw4ICs0Myw4IEBAIGVsc2U6CisgCiAgSU5TVEFMTF9TQ0hFTUVTID0gewogICAgICAndW5peF9wcmVmaXgnOiB7Ci0gICAgICAgICAncHVyZWxpYic6ICckYmFzZS9saWIvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCistICAgICAgICAncHVyZWxpYic6ICckYmFzZS9saWIvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCiAtICAgICAgICAncGxhdGxpYic6ICckcGxhdGJhc2UvbGliL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0L3NpdGUtcGFja2FnZXMnLAorKyAgICAgICAgJ3B1cmVsaWInOiAnJHBsYXRiYXNlLycrbGlibmFtZSsnL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0L3NpdGUtcGFja2FnZXMnLAogKyAgICAgICAgJ3BsYXRsaWInOiAnJHBsYXRiYXNlLycrbGlibmFtZSsnL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0L3NpdGUtcGFja2FnZXMnLAogICAgICAgICAgJ2hlYWRlcnMnOiAnJGJhc2UvaW5jbHVkZS9weXRob24kcHlfdmVyc2lvbl9zaG9ydC8kZGlzdF9uYW1lJywKICAgICAgICAgICdzY3JpcHRzJzogJyRiYXNlL2JpbicsCiAgICAgICAgICAnZGF0YScgICA6ICckYmFzZScsCi1JbmRleDogUHl0aG9uLTIuNy4xMy9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQorSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKLSsrKyBQeXRob24tMi43LjEzL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CisrKysgUHl0aG9uLTIuNy4xNC9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQogQEAgLTExOSw4ICsxMTksMTEgQEAgZGVmIGdldF9weXRob25fbGliKHBsYXRfc3BlY2lmaWM9MCwgc3RhbgogICAgICAgICAgcHJlZml4ID0gcGxhdF9zcGVjaWZpYyBhbmQgRVhFQ19QUkVGSVggb3IgUFJFRklYCiAgCkBAIC02OCwxMCArNzAsMTAgQEAKICAgICAgICAgIGlmIHN0YW5kYXJkX2xpYjoKICAgICAgICAgICAgICByZXR1cm4gbGlicHl0aG9uCiAgICAgICAgICBlbHNlOgotSW5kZXg6IFB5dGhvbi0yLjcuMTMvTGliL3B5ZG9jLnB5CitJbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvcHlkb2MucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvTGliL3B5ZG9jLnB5Ci0rKysgUHl0aG9uLTIuNy4xMy9MaWIvcHlkb2MucHkKKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL3B5ZG9jLnB5CisrKysgUHl0aG9uLTIuNy4xNC9MaWIvcHlkb2MucHkKIEBAIC0zNzUsNyArMzc1LDcgQEAgY2xhc3MgRG9jOgogICAgICBkb2Ntb2R1bGUgPSBkb2NjbGFzcyA9IGRvY3JvdXRpbmUgPSBkb2NvdGhlciA9IGRvY3Byb3BlcnR5ID0gZG9jZGF0YSA9IGZhaWwKICAKQEAgLTgxLDEwICs4MywxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iK3N5cy52ZXJzaW9uWzA6M10pKToKICAgICAgICAgICIiIlJldHVybiB0aGUgbG9jYXRpb24gb2YgbW9kdWxlIGRvY3Mgb3IgTm9uZSIiIgogIAotSW5kZXg6IFB5dGhvbi0yLjcuMTMvTGliL3NpdGUucHkKK0luZGV4OiBQeXRob24tMi43LjE0L0xpYi9zaXRlLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL0xpYi9zaXRlLnB5Ci0rKysgUHl0aG9uLTIuNy4xMy9MaWIvc2l0ZS5weQorLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvc2l0ZS5weQorKysrIFB5dGhvbi0yLjcuMTQvTGliL3NpdGUucHkKIEBAIC0yODgsMTMgKzI4OCwxOCBAQCBkZWYgZ2V0c2l0ZXBhY2thZ2VzKCk6CiAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gaW4gKCdvczJlbXgnLCAncmlzY29zJyk6CiAgICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCAiTGliIiwgInNpdGUtcGFja2FnZXMiKSkKQEAgLTEwNywxMCArMTA5LDEwIEBACiAgICAgIHJldHVybiBzaXRlcGFja2FnZXMKICAKICBkZWYgYWRkc2l0ZXBhY2thZ2VzKGtub3duX3BhdGhzKToKLUluZGV4OiBQeXRob24tMi43LjEzL0xpYi9zeXNjb25maWcucHkKK0luZGV4OiBQeXRob24tMi43LjE0L0xpYi9zeXNjb25maWcucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvTGliL3N5c2NvbmZpZy5weQotKysrIFB5dGhvbi0yLjcuMTMvTGliL3N5c2NvbmZpZy5weQorLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvc3lzY29uZmlnLnB5CisrKysgUHl0aG9uLTIuNy4xNC9MaWIvc3lzY29uZmlnLnB5CiBAQCAtNywxMCArNywxMCBAQCBmcm9tIG9zLnBhdGggaW1wb3J0IHBhcmRpciwgcmVhbHBhdGgKICAKICBfSU5TVEFMTF9TQ0hFTUVTID0gewpAQCAtMTM5LDEwICsxNDEsMTAgQEAKICAgICAgICAgICdpbmNsdWRlJzogJ3t1c2VyYmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAogICAgICAgICAgJ3NjcmlwdHMnOiAne3VzZXJiYXNlfS9iaW4nLAogICAgICAgICAgJ2RhdGEnICAgOiAne3VzZXJiYXNlfScsCi1JbmRleDogUHl0aG9uLTIuNy4xMy9MaWIvdGVzdC90ZXN0X2RsLnB5CitJbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvdGVzdC90ZXN0X2RsLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL0xpYi90ZXN0L3Rlc3RfZGwucHkKLSsrKyBQeXRob24tMi43LjEzL0xpYi90ZXN0L3Rlc3RfZGwucHkKKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL3Rlc3QvdGVzdF9kbC5weQorKysrIFB5dGhvbi0yLjcuMTQvTGliL3Rlc3QvdGVzdF9kbC5weQogQEAgLTQsMTAgKzQsMTEgQEAKICBpbXBvcnQgdW5pdHRlc3QKICBmcm9tIHRlc3QudGVzdF9zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBpbXBvcnRfbW9kdWxlCkBAIC0xNTcsMTEgKzE1OSwxMSBAQAogICAgICAoJy91c3IvYmluL2N5Z3dpbjEuZGxsJywgJ2dldHBpZCcpLAogICAgICAoJy91c3IvbGliL2xpYmMuZHlsaWInLCAnZ2V0cGlkJyksCiAgICAgIF0KLUluZGV4OiBQeXRob24tMi43LjEzL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQorSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL3Rlc3QvdGVzdF9zaXRlLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQotKysrIFB5dGhvbi0yLjcuMTMvTGliL3Rlc3QvdGVzdF9zaXRlLnB5Ci1AQCAtMjM1LDEyICsyMzUsMTYgQEAgY2xhc3MgSGVscGVyRnVuY3Rpb25zVGVzdHModW5pdHRlc3QuVGVzdAorLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvdGVzdC90ZXN0X3NpdGUucHkKKysrKyBQeXRob24tMi43LjE0L0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQorQEAgLTI1MiwxMiArMjUyLDE2IEBAIGNsYXNzIEhlbHBlckZ1bmN0aW9uc1Rlc3RzKHVuaXR0ZXN0LlRlc3QKICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcnNbMF0sIHdhbnRlZCkKICAgICAgICAgIGVsaWYgb3Muc2VwID09ICcvJzoKICAgICAgICAgICAgICAjIE9TIFgsIExpbnV4LCBGcmVlQlNELCBldGMKQEAgLTE4MSwxMCArMTgzLDEwIEBACiAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICMgb3RoZXIgcGxhdGZvcm1zCiAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlycyksIDIpCi1JbmRleDogUHl0aG9uLTIuNy4xMy9MaWIvdHJhY2UucHkKK0luZGV4OiBQeXRob24tMi43LjE0L0xpYi90cmFjZS5weQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9MaWIvdHJhY2UucHkKLSsrKyBQeXRob24tMi43LjEzL0xpYi90cmFjZS5weQorLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvdHJhY2UucHkKKysrKyBQeXRob24tMi43LjE0L0xpYi90cmFjZS5weQogQEAgLTc1NCwxMCArNzU0LDEwIEBAIGRlZiBtYWluKGFyZ3Y9Tm9uZSk6CiAgICAgICAgICAgICAgICAgICMgc2hvdWxkIEkgYWxzbyBjYWxsIGV4cGFuZHVzZXI/IChhZnRlciBhbGwsIGNvdWxkIHVzZSAkSE9NRSkKICAKQEAgLTE5OCwxMSArMjAwLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKSkKICAgICAgICAgICAgICAgICAgcyA9IG9zLnBhdGgubm9ybXBhdGgocykKICAgICAgICAgICAgICAgICAgaWdub3JlX2RpcnMuYXBwZW5kKHMpCi1JbmRleDogUHl0aG9uLTIuNy4xMy9NYWtlZmlsZS5wcmUuaW4KK0luZGV4OiBQeXRob24tMi43LjE0L01ha2VmaWxlLnByZS5pbgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9NYWtlZmlsZS5wcmUuaW4KLSsrKyBQeXRob24tMi43LjEzL01ha2VmaWxlLnByZS5pbgotQEAgLTkyLDYgKzkyLDcgQEAgUFlfQ0ZMQUdTPQkkKENGTEFHUykgJChDUFBGTEFHUykgJChDRkxBRworLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9NYWtlZmlsZS5wcmUuaW4KKysrKyBQeXRob24tMi43LjE0L01ha2VmaWxlLnByZS5pbgorQEAgLTkxLDYgKzkxLDcgQEAgUFlfQ0ZMQUdTPQkkKENGTEFHUykgJChDUFBGTEFHUykgJChDRkxBRwogIAogICMgTWFjaGluZS1kZXBlbmRlbnQgc3ViZGlyZWN0b3JpZXMKICBNQUNIREVQPQlATUFDSERFUEAKQEAgLTIxMCw3ICsyMTIsNyBAQAogIAogICMgTXVsdGlhcmNoIGRpcmVjdG9yeSAobWF5IGJlIGVtcHR5KQogIE1VTFRJQVJDSD0JQE1VTFRJQVJDSEAKLUBAIC0xMTEsNyArMTEyLDcgQEAgTElCRElSPQkJQGxpYmRpckAKK0BAIC0xMTAsNyArMTExLDcgQEAgTElCRElSPQkJQGxpYmRpckAKICBNQU5ESVI9CQlAbWFuZGlyQAogIElOQ0xVREVESVI9CUBpbmNsdWRlZGlyQAogIENPTkZJTkNMVURFRElSPQkkKGV4ZWNfcHJlZml4KS9pbmNsdWRlCkBAIC0yMTksNyArMjIxLDcgQEAKICAKICAjIERldGFpbGVkIGRlc3RpbmF0aW9uIGRpcmVjdG9yaWVzCiAgQklOTElCREVTVD0JJChMSUJESVIpL3B5dGhvbiQoVkVSU0lPTikKLUBAIC02NjksNiArNjcwLDcgQEAgTW9kdWxlcy9nZXRwYXRoLm86ICQoc3JjZGlyKS9Nb2R1bGVzL2dldAorQEAgLTY0NSw2ICs2NDYsNyBAQCBNb2R1bGVzL2dldHBhdGgubzogJChzcmNkaXIpL01vZHVsZXMvZ2V0CiAgCQktREVYRUNfUFJFRklYPSciJChleGVjX3ByZWZpeCkiJyBcCiAgCQktRFZFUlNJT049JyIkKFZFUlNJT04pIicgXAogIAkJLURWUEFUSD0nIiQoVlBBVEgpIicgXApAQCAtMjI3LDggKzIyOSw4IEBACiAgCQktbyAkQCAkKHNyY2RpcikvTW9kdWxlcy9nZXRwYXRoLmMKICAKICBNb2R1bGVzL3B5dGhvbi5vOiAkKHNyY2RpcikvTW9kdWxlcy9weXRob24uYwotQEAgLTcwOSw3ICs3MTEsNyBAQCAkKEFTVF9DKTogJChBU1RfQVNETCkgJChBU0RMR0VOX0ZJTEVTKQotIFB5dGhvbi9jb21waWxlLm8gUHl0aG9uL3N5bXRhYmxlLm8gUHl0aG9uL2FzdC5vOiAkKEdSQU1NQVJfSCkgJChBU1RfSCkKK0BAIC02OTMsNyArNjk1LDcgQEAgcmVnZW4tYXN0OgorIFB5dGhvbi9jb21waWxlLm8gUHl0aG9uL3N5bXRhYmxlLm8gUHl0aG9uL2FzdC5vOiAkKHNyY2RpcikvSW5jbHVkZS9ncmFtaW5pdC5oICQoc3JjZGlyKS9JbmNsdWRlL1B5dGhvbi1hc3QuaAogIAogIFB5dGhvbi9nZXRwbGF0Zm9ybS5vOiAkKHNyY2RpcikvUHl0aG9uL2dldHBsYXRmb3JtLmMKIC0JCSQoQ0MpIC1jICQoUFlfQ0ZMQUdTKSAtRFBMQVRGT1JNPSciJChNQUNIREVQKSInIC1vICRAICQoc3JjZGlyKS9QeXRob24vZ2V0cGxhdGZvcm0uYwpAQCAtMjM2LDEwICsyMzgsMTAgQEAKICAKICBQeXRob24vaW1wb3J0ZGwubzogJChzcmNkaXIpL1B5dGhvbi9pbXBvcnRkbC5jCiAgCQkkKENDKSAtYyAkKFBZX0NGTEFHUykgLUkkKERMSU5DTERJUikgLW8gJEAgJChzcmNkaXIpL1B5dGhvbi9pbXBvcnRkbC5jCi1JbmRleDogUHl0aG9uLTIuNy4xMy9Nb2R1bGVzL2dldHBhdGguYworSW5kZXg6IFB5dGhvbi0yLjcuMTQvTW9kdWxlcy9nZXRwYXRoLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvTW9kdWxlcy9nZXRwYXRoLmMKLSsrKyBQeXRob24tMi43LjEzL01vZHVsZXMvZ2V0cGF0aC5jCistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL01vZHVsZXMvZ2V0cGF0aC5jCisrKysgUHl0aG9uLTIuNy4xNC9Nb2R1bGVzL2dldHBhdGguYwogQEAgLTEwMCw2ICsxMDAsMTMgQEAKICAjZXJyb3IgIlBSRUZJWCwgRVhFQ19QUkVGSVgsIFZFUlNJT04sIGFuZCBWUEFUSCBtdXN0IGJlIGNvbnN0YW50IGRlZmluZWQiCiAgI2VuZGlmCkBAIC0yNjMsMTAgKzI2NSwxMCBAQAogIAogIHN0YXRpYyB2b2lkCiAgcmVkdWNlKGNoYXIgKmRpcikKLUluZGV4OiBQeXRob24tMi43LjEzL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCitJbmRleDogUHl0aG9uLTIuNy4xNC9QeXRob24vZ2V0cGxhdGZvcm0uYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9QeXRob24vZ2V0cGxhdGZvcm0uYwotKysrIFB5dGhvbi0yLjcuMTMvUHl0aG9uL2dldHBsYXRmb3JtLmMKKy0tLSBQeXRob24tMi43LjE0Lm9yaWcvUHl0aG9uL2dldHBsYXRmb3JtLmMKKysrKyBQeXRob24tMi43LjE0L1B5dGhvbi9nZXRwbGF0Zm9ybS5jCiBAQCAtMTAsMyArMTAsMTMgQEAgUHlfR2V0UGxhdGZvcm0odm9pZCkKICB7CiAgCXJldHVybiBQTEFURk9STTsKQEAgLTI4MSwxMCArMjgzLDEwIEBACiArewogKwlyZXR1cm4gTElCOwogK30KLUluZGV4OiBQeXRob24tMi43LjEzL1B5dGhvbi9zeXNtb2R1bGUuYworSW5kZXg6IFB5dGhvbi0yLjcuMTQvUHl0aG9uL3N5c21vZHVsZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL1B5dGhvbi9zeXNtb2R1bGUuYwotKysrIFB5dGhvbi0yLjcuMTMvUHl0aG9uL3N5c21vZHVsZS5jCistLS0gUHl0aG9uLTIuNy4xNC5vcmlnL1B5dGhvbi9zeXNtb2R1bGUuYworKysrIFB5dGhvbi0yLjcuMTQvUHl0aG9uL3N5c21vZHVsZS5jCiBAQCAtMTQzNyw2ICsxNDM3LDggQEAgX1B5U3lzX0luaXQodm9pZCkKICAgICAgICAgICAgICAgICAgICAgICAgICBQeVN0cmluZ19Gcm9tU3RyaW5nKFB5X0dldENvcHlyaWdodCgpKSk7CiAgICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoInBsYXRmb3JtIiwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9wYXJhbGxlbC1tYWtlaW5zdC1jcmVhdGUtYmluZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3BhcmFsbGVsLW1ha2VpbnN0LWNyZWF0ZS1iaW5kaXIucGF0Y2gKaW5kZXggOTUxY2I0Ni4uYWJhYjQxZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3BhcmFsbGVsLW1ha2VpbnN0LWNyZWF0ZS1iaW5kaXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3BhcmFsbGVsLW1ha2VpbnN0LWNyZWF0ZS1iaW5kaXIucGF0Y2gKQEAgLTgsMTIgKzgsMTIgQEAKIAogLS0tIFB5dGhvbi0yLjcuMy5vcmlnL01ha2VmaWxlLnByZS5pbgogKysrIFB5dGhvbi0yLjcuMy9NYWtlZmlsZS5wcmUuaW4KLUBAIC0xMDA4LDcgKzEwMDgsNyBAQCBMSUJQTD0JCSQoTElCUCkvY29uZmlnCitAQCAtMTE4Nyw3ICsxMTg3LDcgQEAKICBMSUJQQz0JCSQoTElCRElSKS9wa2djb25maWcKLQotIGxpYmFpbnN0YWxsOglhbGwgcHl0aG9uLWNvbmZpZworIAorIGxpYmFpbnN0YWxsOglAREVGX01BS0VfUlVMRUAgcHl0aG9uLWNvbmZpZwogLQlAZm9yIGkgaW4gJChMSUJESVIpICQoTElCUCkgJChMSUJQTCkgJChMSUJQQyk7IFwKICsJQGZvciBpIGluICQoTElCRElSKSAkKExJQlApICQoTElCUEwpICQoTElCUEMpICQoQklORElSKTsgXAotCWRvIFwKLQkJaWYgdGVzdCAhIC1kICQoREVTVERJUikkJGk7IHRoZW4gXAotCQkJZWNobyAiQ3JlYXRpbmcgZGlyZWN0b3J5ICQkaSI7IFwKKyAJZG8gXAorIAkJaWYgdGVzdCAhIC1kICQoREVTVERJUikkJGk7IHRoZW4gXAorIAkJCWVjaG8gIkNyZWF0aW5nIGRpcmVjdG9yeSAkJGkiOyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcHl0aG9uMi1tYW5pZmVzdC5qc29uIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3B5dGhvbjItbWFuaWZlc3QuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjNlNTEzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3B5dGhvbjItbWFuaWZlc3QuanNvbgpAQCAtMCwwICsxLDEwNDcgQEAKK3sKKyAgICAiMnRvMyI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7YmluZGlyfS8ydG8zIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYjJ0bzMiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYXV0b21hdGVkIFB5dGhvbiAyIHRvIDMgY29kZSB0cmFuc2xhdG9yIgorICAgIH0sCisgICAgImFyZ3BhcnNlIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9hcmdwYXJzZS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvZGVjcyIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAibGFuZyIsCisgICAgICAgICAgICAidGV4dHV0aWxzIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gY29tbWFuZCBsaW5lIGFyZ3VtZW50IHBhcnNlciIKKyAgICB9LAorICAgICJhdWRpbyI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYXVkaW9kZXYucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY2h1bmsucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvYXVkaW9vcC5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9vc3NhdWRpb2Rldi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zbmRoZHIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3VuYXUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3VuYXVkaW8ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdG9haWZmLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3dhdmUucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIsCisgICAgICAgICAgICAiZmNudGwiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJtYXRoIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gQXVkaW8gSGFuZGxpbmciCisgICAgfSwKKyAgICAiYnNkZGIiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2JzZGRiIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19ic2RkYi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIEJlcmtlbGV5IERhdGFiYXNlIgorICAgIH0sCisgICAgImNvZGVjcyI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZ2V0dGV4dC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY29kZWNzX2NuLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jb2RlY3NfaGsuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2NvZGVjc19pc28yMDIyLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jb2RlY3NfanAuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2NvZGVjc19rci5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY29kZWNzX3R3LnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19tdWx0aWJ5dGVjb2RlYy5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC91bmljb2RlZGF0YS5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9sb2NhbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3RyaW5ncHJlcC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy94ZHJsaWIucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAibGFuZyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGNvZGVjIgorICAgIH0sCisgICAgImNvbXBpbGUiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvbXBpbGVhbGwucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcHlfY29tcGlsZS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBieXRlY29kZSBjb21waWxhdGlvbiBzdXBwb3J0IgorICAgIH0sCisgICAgImNvbXBpbGVyIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb21waWxlciIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJsYW5nIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gY29tcGlsZXIgc3VwcG9ydCIKKyAgICB9LAorICAgICJjb21wcmVzc2lvbiI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZ3ppcC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9iejIuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdGFyZmlsZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy96aXBmaWxlLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgInNoZWxsIiwKKyAgICAgICAgICAgICJ1bml4YWRtaW4iLAorICAgICAgICAgICAgInpsaWIiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBoaWdoLWxldmVsIGNvbXByZXNzaW9uIHN1cHBvcnQiCisgICAgfSwKKyAgICAiY29udGV4dGxpYiI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29udGV4dGxpYi5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImxhbmciCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB1dGlsaXRpZXMgZm9yIHdpdGgtc3RhdGVtZW50Y29udGV4dHMuIgorICAgIH0sCisgICAgImNvcmUiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2JpbmRpcn0vcHl0aG9uKiIsCisgICAgICAgICAgICAiJHtpbmNsdWRlZGlyfS9weXRob24yLjcvcHljb25maWcqLmgiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvQ29uZmlnUGFyc2VyLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L1VzZXJEaWN0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L1VzZXJMaXN0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L1VzZXJTdHJpbmcucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvX19mdXR1cmVfXy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9fYWJjb2xsLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L19zeXNjb25maWdkYXRhLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L193ZWFrcmVmc2V0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2FiYy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9hc3QucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYXRleGl0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvZGVjcy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb2xsZWN0aW9ucy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb3B5LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvcHlfcmVnLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2VuY29kaW5ncyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9lbmNvZGluZ3MvYWxpYXNlcy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9lbmNvZGluZ3MvdXRmXzgucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZ2VuZXJpY3BhdGgucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZ2V0b3B0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2hlYXBxLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2ltcG9ydGxpYiIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9rZXl3b3JkLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jb2xsZWN0aW9ucy5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9faGVhcHEuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2xvY2FsZS5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fc3RydWN0LnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2JpbmFzY2lpLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2l0ZXJ0b29scy5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9vcGVyYXRvci5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9yZWFkbGluZS5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9zdHJvcC5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC90aW1lLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3hyZWFkbGluZXMuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGluZWNhY2hlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L25ldy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9vcy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9wbGF0Zm9ybS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9wb3NpeHBhdGgucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcmUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcmxjb21wbGV0ZXIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc2l0ZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaXRlY3VzdG9taXplLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NyZV9jb21waWxlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NyZV9jb25zdGFudHMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3JlX3BhcnNlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3N0YXQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3RyaW5nLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3N0cnVjdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zeXNjb25maWcucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdHJhY2ViYWNrLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3R5cGVzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3dhcm5pbmdzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3dlYWtyZWYucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFtdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaW50ZXJwcmV0ZXIgYW5kIGNvcmUgbW9kdWxlcyIKKyAgICB9LAorICAgICJjcnlwdCI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaGFzaGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9faGFzaGxpYi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9jcnlwdC5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9tZDUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc2hhLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGJhc2ljIGNyeXB0b2dyYXBoaWMgYW5kIGhhc2hpbmcgc3VwcG9ydCIKKyAgICB9LAorICAgICJjdHlwZXMiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2N0eXBlcyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY3R5cGVzLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jdHlwZXNfdGVzdC5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBDIHR5cGVzIHN1cHBvcnQiCisgICAgfSwKKyAgICAiY3Vyc2VzIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jdXJzZXMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2N1cnNlcy5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY3Vyc2VzX3BhbmVsLnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGN1cnNlcyBzdXBwb3J0IgorICAgIH0sCisgICAgImRhdGV0aW1lIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9fc3RycHRpbWUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY2FsZW5kYXIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvZGF0ZXRpbWUuc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb2RlY3MiLAorICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImxhbmciCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBjYWxlbmRhciBhbmQgdGltZSBzdXBwb3J0IgorICAgIH0sCisgICAgImRiIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9hbnlkYm0ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZGJoYXNoLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2R1bWJkYm0ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvZGJtLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3doaWNoZGIucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJic2RkYiIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiZ2RibSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGZpbGUtYmFzZWQgZGF0YWJhc2Ugc3VwcG9ydCIKKyAgICB9LAorICAgICJkZWJ1Z2dlciI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYmRiLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3BkYi5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJsYW5nIiwKKyAgICAgICAgICAgICJwcHJpbnQiLAorICAgICAgICAgICAgInNoZWxsIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZGVidWdnZXIiCisgICAgfSwKKyAgICAiZGV2IjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtiYXNlX2xpYmRpcn0vKi5hIiwKKyAgICAgICAgICAgICIke2Jhc2VfbGliZGlyfS8qLm8iLAorICAgICAgICAgICAgIiR7ZGF0YWRpcn0vYWNsb2NhbCIsCisgICAgICAgICAgICAiJHtkYXRhZGlyfS9wa2djb25maWciLAorICAgICAgICAgICAgIiR7aW5jbHVkZWRpcn0iLAorICAgICAgICAgICAgIiR7bGliZGlyfS8qLmEiLAorICAgICAgICAgICAgIiR7bGliZGlyfS8qLmxhIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vKi5vIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vbGliKiR7U09MSUJTREVWfSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3BrZ2NvbmZpZyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb25maWcvTWFrZWZpbGUiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZGV2ZWxvcG1lbnQgcGFja2FnZSIKKyAgICB9LAorICAgICJkaWZmbGliIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9kaWZmbGliLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAibGFuZyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGhlbHBlcnMgZm9yIGNvbXB1dGluZyBkZWx0YXMgYmV0d2VlbiBvYmplY3RzIgorICAgIH0sCisgICAgImRpc3R1dGlscyI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29uZmlnIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2Rpc3R1dGlscyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBEaXN0cmlidXRpb24gVXRpbGl0aWVzIgorICAgIH0sCisgICAgImRpc3R1dGlscy1zdGF0aWNkZXYiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvbmZpZy9saWIqLmEiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJkaXN0dXRpbHMiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBkaXN0cmlidXRpb24gdXRpbGl0aWVzIChzdGF0aWMgbGlicmFyaWVzKSIKKyAgICB9LAorICAgICJkb2N0ZXN0IjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9kb2N0ZXN0LnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiY3J5cHQiLAorICAgICAgICAgICAgImRlYnVnZ2VyIiwKKyAgICAgICAgICAgICJkaWZmbGliIiwKKyAgICAgICAgICAgICJmY250bCIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgImxhbmciLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgInBwcmludCIsCisgICAgICAgICAgICAic2hlbGwiLAorICAgICAgICAgICAgInVuaXR0ZXN0IgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZnJhbWV3b3JrIGZvciBydW5uaW5nIGV4YW1wbGVzIGluIGRvY3N0cmluZ3MiCisgICAgfSwKKyAgICAiZW1haWwiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2VtYWlsIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2ltYXBsaWIucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb250ZXh0bGliIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIsCisgICAgICAgICAgICAiZmNudGwiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJsYW5nIiwKKyAgICAgICAgICAgICJtYXRoIiwKKyAgICAgICAgICAgICJuZXRjbGllbnQiLAorICAgICAgICAgICAgInBpY2tsZSIsCisgICAgICAgICAgICAic3VicHJvY2VzcyIsCisgICAgICAgICAgICAidGV4dHV0aWxzIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZW1haWwgc3VwcG9ydCIKKyAgICB9LAorICAgICJmY250bCI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvZmNudGwuc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24ncyBmY250bCBpbnRlcmZhY2UiCisgICAgfSwKKyAgICAiZ2RibSI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvZ2RibS5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBHTlUgZGF0YWJhc2Ugc3VwcG9ydCIKKyAgICB9LAorICAgICJob3RzaG90IjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9ob3RzaG90IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19ob3RzaG90LnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGhvdHNob3QgcGVyZm9ybWFuY2UgcHJvZmlsZXIiCisgICAgfSwKKyAgICAiaHRtbCI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvSFRNTFBhcnNlci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9mb3JtYXR0ZXIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaHRtbGVudGl0eWRlZnMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaHRtbGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9tYXJrdXBiYXNlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NnbWxsaWIucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gSFRNTCBwcm9jZXNzaW5nIHN1cHBvcnQiCisgICAgfSwKKyAgICAiaWRsZSI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7YmluZGlyfS9pZGxlIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2lkbGVsaWIiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gSW50ZWdyYXRlZCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCIKKyAgICB9LAorICAgICJpbWFnZSI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29sb3JzeXMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaW1naGRyLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGdyYXBoaWNhbCBpbWFnZSBoYW5kbGluZyIKKyAgICB9LAorICAgICJpbyI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvU3RyaW5nSU8ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvX3B5aW8ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaW8ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2lvLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19zb2NrZXQuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX3NzbC5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9jU3RyaW5nSU8uc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvc2VsZWN0LnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3Rlcm1pb3Muc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcGlwZXMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc29ja2V0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NzbC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90ZW1wZmlsZS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvbnRleHRsaWIiLAorICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IiwKKyAgICAgICAgICAgICJmY250bCIsCisgICAgICAgICAgICAibGFuZyIsCisgICAgICAgICAgICAibWF0aCIsCisgICAgICAgICAgICAibmV0Y2xpZW50IiwKKyAgICAgICAgICAgICJ0ZXh0dXRpbHMiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBsb3ctbGV2ZWwgSS9PIgorICAgIH0sCisgICAgImpzb24iOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2pzb24iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2pzb24uc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gSlNPTiBzdXBwb3J0IgorICAgIH0sCisgICAgImxhbmciOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2Jpc2VjdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb2RlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvZGVvcC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9kaXMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZnVuY3Rvb2xzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2luc3BlY3QucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2Jpc2VjdC5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fZnVuY3Rvb2xzLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2FycmF5LnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3BhcnNlci5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9vcGNvZGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcmVwci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zeW1ib2wucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdG9rZW4ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdG9rZW5pemUucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbG93LWxldmVsIGxhbmd1YWdlIHN1cHBvcnQiCisgICAgfSwKKyAgICAibG9nZ2luZyI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbG9nZ2luZyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJ0aHJlYWRpbmciCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBsb2dnaW5nIHN1cHBvcnQiCisgICAgfSwKKyAgICAibWFpbGJveCI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbWFpbGJveC5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvZGVjcyIsCisgICAgICAgICAgICAiY29udGV4dGxpYiIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiY3J5cHQiLAorICAgICAgICAgICAgImRhdGV0aW1lIiwKKyAgICAgICAgICAgICJlbWFpbCIsCisgICAgICAgICAgICAiZmNudGwiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJsYW5nIiwKKyAgICAgICAgICAgICJtYXRoIiwKKyAgICAgICAgICAgICJtaW1lIiwKKyAgICAgICAgICAgICJuZXRjbGllbnQiLAorICAgICAgICAgICAgInRleHR1dGlscyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG1haWxib3ggZm9ybWF0IHN1cHBvcnQiCisgICAgfSwKKyAgICAibWF0aCI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX3JhbmRvbS5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9jbWF0aC5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9tYXRoLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3JhbmRvbS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zZXRzLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiY3J5cHQiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBtYXRoIHN1cHBvcnQiCisgICAgfSwKKyAgICAibWltZSI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvTWltZVdyaXRlci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9taW1ldG9vbHMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbWltZXR5cGVzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3F1b3ByaS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9yZmM4MjIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdXUucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb250ZXh0bGliIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIsCisgICAgICAgICAgICAiZmNudGwiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJsYW5nIiwKKyAgICAgICAgICAgICJtYXRoIiwKKyAgICAgICAgICAgICJuZXRjbGllbnQiLAorICAgICAgICAgICAgInRleHR1dGlscyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIE1JTUUgaGFuZGxpbmcgQVBJcyIKKyAgICB9LAorICAgICJtbWFwIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9tbWFwLnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG1lbW9yeS1tYXBwZWQgZmlsZSBzdXBwb3J0IgorICAgIH0sCisgICAgIm1vZHVsZXMiOiB7CisgICAgICAgICJmaWxlcyI6IFtdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiMnRvMyIsCisgICAgICAgICAgICAiYXJncGFyc2UiLAorICAgICAgICAgICAgImF1ZGlvIiwKKyAgICAgICAgICAgICJic2RkYiIsCisgICAgICAgICAgICAiY29kZWNzIiwKKyAgICAgICAgICAgICJjb21waWxlIiwKKyAgICAgICAgICAgICJjb21waWxlciIsCisgICAgICAgICAgICAiY29tcHJlc3Npb24iLAorICAgICAgICAgICAgImNvbnRleHRsaWIiLAorICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IiwKKyAgICAgICAgICAgICJjdHlwZXMiLAorICAgICAgICAgICAgImN1cnNlcyIsCisgICAgICAgICAgICAiZGF0ZXRpbWUiLAorICAgICAgICAgICAgImRiIiwKKyAgICAgICAgICAgICJkZWJ1Z2dlciIsCisgICAgICAgICAgICAiZGlmZmxpYiIsCisgICAgICAgICAgICAiZGlzdHV0aWxzIiwKKyAgICAgICAgICAgICJkb2N0ZXN0IiwKKyAgICAgICAgICAgICJlbWFpbCIsCisgICAgICAgICAgICAiZmNudGwiLAorICAgICAgICAgICAgImdkYm0iLAorICAgICAgICAgICAgImhvdHNob3QiLAorICAgICAgICAgICAgImh0bWwiLAorICAgICAgICAgICAgImlkbGUiLAorICAgICAgICAgICAgImltYWdlIiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAianNvbiIsCisgICAgICAgICAgICAibGFuZyIsCisgICAgICAgICAgICAibG9nZ2luZyIsCisgICAgICAgICAgICAibWFpbGJveCIsCisgICAgICAgICAgICAibWF0aCIsCisgICAgICAgICAgICAibWltZSIsCisgICAgICAgICAgICAibW1hcCIsCisgICAgICAgICAgICAibXVsdGlwcm9jZXNzaW5nIiwKKyAgICAgICAgICAgICJuZXRjbGllbnQiLAorICAgICAgICAgICAgIm5ldHNlcnZlciIsCisgICAgICAgICAgICAibnVtYmVycyIsCisgICAgICAgICAgICAicGlja2xlIiwKKyAgICAgICAgICAgICJwa2d1dGlsIiwKKyAgICAgICAgICAgICJwbGlzdGxpYiIsCisgICAgICAgICAgICAicHByaW50IiwKKyAgICAgICAgICAgICJwcm9maWxlIiwKKyAgICAgICAgICAgICJweWRvYyIsCisgICAgICAgICAgICAicmUiLAorICAgICAgICAgICAgInJlc291cmNlIiwKKyAgICAgICAgICAgICJyb2JvdHBhcnNlciIsCisgICAgICAgICAgICAicnVucHkiLAorICAgICAgICAgICAgInNoZWxsIiwKKyAgICAgICAgICAgICJzbXRwZCIsCisgICAgICAgICAgICAic3FsaXRlMyIsCisgICAgICAgICAgICAic3FsaXRlMyIsCisgICAgICAgICAgICAic3RyaW5nb2xkIiwKKyAgICAgICAgICAgICJzdWJwcm9jZXNzIiwKKyAgICAgICAgICAgICJzeXNsb2ciLAorICAgICAgICAgICAgInRlcm1pbmFsIiwKKyAgICAgICAgICAgICJ0ZXh0dXRpbHMiLAorICAgICAgICAgICAgInRocmVhZGluZyIsCisgICAgICAgICAgICAidGtpbnRlciIsCisgICAgICAgICAgICAidW5pdHRlc3QiLAorICAgICAgICAgICAgInVuaXhhZG1pbiIsCisgICAgICAgICAgICAieG1sIiwKKyAgICAgICAgICAgICJ4bWxycGMiLAorICAgICAgICAgICAgInpsaWIiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIkFsbCBQeXRob24gbW9kdWxlcyIKKyAgICB9LAorICAgICJtdWx0aXByb2Nlc3NpbmciOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19tdWx0aXByb2Nlc3Npbmcuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbXVsdGlwcm9jZXNzaW5nIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiZmNudGwiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJwaWNrbGUiLAorICAgICAgICAgICAgInN1YnByb2Nlc3MiLAorICAgICAgICAgICAgInRocmVhZGluZyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG11bHRpcHJvY2Vzc2luZyBzdXBwb3J0IgorICAgIH0sCisgICAgIm5ldGNsaWVudCI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvQ29va2llLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L19MV1BDb29raWVKYXIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvX01vemlsbGFDb29raWVKYXIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYmFzZTY0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2Nvb2tpZWxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9mdHBsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaG1hYy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9odHRwbGliLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L25udHBsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcG9wbGliLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NtdHBsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdGVsbmV0bGliLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3VybGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy91cmxsaWIyLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3VybHBhcnNlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3V1aWQucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb2RlY3MiLAorICAgICAgICAgICAgImNvbnRleHRsaWIiLAorICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IiwKKyAgICAgICAgICAgICJjdHlwZXMiLAorICAgICAgICAgICAgImRhdGV0aW1lIiwKKyAgICAgICAgICAgICJlbWFpbCIsCisgICAgICAgICAgICAiZmNudGwiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJsYW5nIiwKKyAgICAgICAgICAgICJtYXRoIiwKKyAgICAgICAgICAgICJtaW1lIiwKKyAgICAgICAgICAgICJwaWNrbGUiLAorICAgICAgICAgICAgInN1YnByb2Nlc3MiLAorICAgICAgICAgICAgInRleHR1dGlscyIsCisgICAgICAgICAgICAidGhyZWFkaW5nIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gSW50ZXJuZXQgUHJvdG9jb2wgY2xpZW50cyIKKyAgICB9LAorICAgICJuZXRzZXJ2ZXIiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L0Jhc2VIVFRQU2VydmVyLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L0NHSUhUVFBTZXJ2ZXIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvU2ltcGxlSFRUUFNlcnZlci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9Tb2NrZXRTZXJ2ZXIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY2dpLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29tcHJlc3Npb24iLAorICAgICAgICAgICAgImNvbnRleHRsaWIiLAorICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IiwKKyAgICAgICAgICAgICJmY250bCIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgImxhbmciLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgIm1pbWUiLAorICAgICAgICAgICAgIm5ldGNsaWVudCIsCisgICAgICAgICAgICAic2hlbGwiLAorICAgICAgICAgICAgInRleHR1dGlscyIsCisgICAgICAgICAgICAidGhyZWFkaW5nIiwKKyAgICAgICAgICAgICJ1bml4YWRtaW4iLAorICAgICAgICAgICAgInpsaWIiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBJbnRlcm5ldCBQcm90b2NvbCBzZXJ2ZXJzIgorICAgIH0sCisgICAgIm51bWJlcnMiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2RlY2ltYWwucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZnJhY3Rpb25zLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L251bWJlcnMucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb2RlY3MiLAorICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImxhbmciLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgInRocmVhZGluZyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG51bWJlciBBUElzIgorICAgIH0sCisgICAgInBpY2tsZSI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvY1BpY2tsZS5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9waWNrbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcGlja2xldG9vbHMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc2hlbHZlLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiaW8iCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBzZXJpYWxpc2F0aW9uL3BlcnNpc3RlbmNlIHN1cHBvcnQiCisgICAgfSwKKyAgICAicGtndXRpbCI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcGtndXRpbC5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBwYWNrYWdlIGV4dGVuc2lvbiB1dGlsaXR5IHN1cHBvcnQiCisgICAgfSwKKyAgICAicGxpc3RsaWIiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3BsaXN0bGliLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiZGF0ZXRpbWUiLAorICAgICAgICAgICAgImlvIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJHZW5lcmF0ZSBhbmQgcGFyc2UgTWFjIE9TIFggLnBsaXN0IGZpbGVzIgorICAgIH0sCisgICAgInBwcmludCI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcHByaW50LnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiaW8iCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBwcmV0dHktcHJpbnQgc3VwcG9ydCIKKyAgICB9LAorICAgICJwcm9maWxlIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jUHJvZmlsZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fbHNwcm9mLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3Byb2ZpbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcHN0YXRzLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29kZWNzIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJsYW5nIiwKKyAgICAgICAgICAgICJyZXNvdXJjZSIsCisgICAgICAgICAgICAidGV4dHV0aWxzIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYmFzaWMgcGVyZm9ybWFuY2UgcHJvZmlsaW5nIHN1cHBvcnQiCisgICAgfSwKKyAgICAicHlkb2MiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2JpbmRpcn0vcHlkb2MiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcHlkb2MucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcHlkb2NfZGF0YSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvZGVjcyIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAibGFuZyIsCisgICAgICAgICAgICAicGtndXRpbCIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGludGVyYWN0aXZlIGhlbHAgc3VwcG9ydCIKKyAgICB9LAorICAgICJyZSI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3JlLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFJlZ3VsYXIgRXhwcmVzc2lvbiBBUElzIgorICAgIH0sCisgICAgInJlc291cmNlIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9yZXNvdXJjZS5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiByZXNvdXJjZSBjb250cm9sIGludGVyZmFjZSIKKyAgICB9LAorICAgICJyb2JvdHBhcnNlciI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcm9ib3RwYXJzZXIucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb250ZXh0bGliIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAibGFuZyIsCisgICAgICAgICAgICAibmV0Y2xpZW50IiwKKyAgICAgICAgICAgICJ0ZXh0dXRpbHMiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiByb2JvdHMudHh0IHBhcnNlciIKKyAgICB9LAorICAgICJydW5weSI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcnVucHkucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJwa2d1dGlsIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaGVscGVyIGZvciBsb2NhdGluZy9leGVjdXRpbmcgc2NyaXB0cyBpbiBtb2R1bGUgbmFtZXNwYWNlIgorICAgIH0sCisgICAgInNoZWxsIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jbWQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29tbWFuZHMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZGlyY2FjaGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZm5tYXRjaC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9nbG9iLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3BvcGVuMi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaGxleC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaHV0aWwucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb21wcmVzc2lvbiIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgInVuaXhhZG1pbiIsCisgICAgICAgICAgICAiemxpYiIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHNoZWxsLWxpa2UgZnVuY3Rpb25hbGl0eSIKKyAgICB9LAorICAgICJzbXRwZCI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7YmluZGlyfS9zbXRwZC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9hc3luY2hhdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9hc3luY29yZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zbXRwZC5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImZjbnRsIiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAibGFuZyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFNpbXBsZSBNYWlsIFRyYW5zcG9ydCBEYWVtb24iCisgICAgfSwKKyAgICAic3FsaXRlMyI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX3NxbGl0ZTMuc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gU3FsaXRlMyBkYXRhYmFzZSBzdXBwb3J0IgorICAgIH0sCisgICAgInNxbGl0ZTMtdGVzdHMiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NxbGl0ZTMvdGVzdCIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgInRlc3RzIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gU3FsaXRlMyBkYXRhYmFzZSBzdXBwb3J0IHRlc3RzIgorICAgIH0sCisgICAgInN0cmluZ29sZCI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3RyaW5nb2xkLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHN0cmluZyBBUElzIFtkZXByZWNhdGVkXSIKKyAgICB9LAorICAgICJzdWJwcm9jZXNzIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdWJwcm9jZXNzLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiZmNudGwiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJwaWNrbGUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBzdWJwcm9jZXNzIHN1cHBvcnQiCisgICAgfSwKKyAgICAic3lzbG9nIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9zeXNsb2cuc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gc3lzbG9nIGludGVyZmFjZSIKKyAgICB9LAorICAgICJ0ZXJtaW5hbCI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcHR5LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3R0eS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImlvIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gdGVybWluYWwgY29udHJvbGxpbmcgc3VwcG9ydCIKKyAgICB9LAorICAgICJ0ZXN0cyI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdGVzdCIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB0ZXN0cyIKKyAgICB9LAorICAgICJ0ZXh0dXRpbHMiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2Nzdi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY3N2LnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L29wdHBhcnNlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3RleHR3cmFwLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29kZWNzIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAibGFuZyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG9wdGlvbiBwYXJzaW4iCisgICAgfSwKKyAgICAidGhyZWFkaW5nIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9RdWV1ZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9fdGhyZWFkaW5nX2xvY2FsLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2R1bW15X3RocmVhZC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9kdW1teV90aHJlYWRpbmcucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbXV0ZXgucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdGhyZWFkaW5nLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHRocmVhZGluZyAmIHN5bmNocm9uaXphdGlvbiBzdXBwb3J0IgorICAgIH0sCisgICAgInRraW50ZXIiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi10ayIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBUY2wvVGsgYmluZGluZ3MiCisgICAgfSwKKyAgICAidW5pdHRlc3QiOiB7CisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3VuaXR0ZXN0IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiZGlmZmxpYiIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgImxhbmciLAorICAgICAgICAgICAgInBwcmludCIsCisgICAgICAgICAgICAic2hlbGwiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB1bml0IHRlc3RpbmcgZnJhbWV3b3JrIgorICAgIH0sCisgICAgInVuaXhhZG1pbiI6IHsKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZ2V0cGFzcy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9ncnAuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvbmlzLnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiaW8iCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBVbml4IGFkbWluaXN0cmF0aW9uIHN1cHBvcnQiCisgICAgfSwKKyAgICAieG1sIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fZWxlbWVudHRyZWUuc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvcHlleHBhdC5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy94bWwiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYmFzaWMgWE1MIHN1cHBvcnQiCisgICAgfSwKKyAgICAieG1scnBjIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9Eb2NYTUxSUENTZXJ2ZXIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvU2ltcGxlWE1MUlBDU2VydmVyLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29kZWNzIiwKKyAgICAgICAgICAgICJjb21wcmVzc2lvbiIsCisgICAgICAgICAgICAiY29udGV4dGxpYiIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiY3J5cHQiLAorICAgICAgICAgICAgImRhdGV0aW1lIiwKKyAgICAgICAgICAgICJmY250bCIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgImxhbmciLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgIm1pbWUiLAorICAgICAgICAgICAgIm5ldGNsaWVudCIsCisgICAgICAgICAgICAibmV0c2VydmVyIiwKKyAgICAgICAgICAgICJwa2d1dGlsIiwKKyAgICAgICAgICAgICJweWRvYyIsCisgICAgICAgICAgICAidGV4dHV0aWxzIiwKKyAgICAgICAgICAgICJ0aHJlYWRpbmciLAorICAgICAgICAgICAgInhtbCIsCisgICAgICAgICAgICAiemxpYiIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFhNTC1SUEMgc3VwcG9ydCIKKyAgICB9LAorICAgICJ6bGliIjogeworICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC96bGliLnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHpsaWIgY29tcHJlc3Npb24gc3VwcG9ydCIKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc2l0ZWN1c3RvbWl6ZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zaXRlY3VzdG9taXplLnB5CmluZGV4IDI3MzkwMTguLjRjOGI1ZTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zaXRlY3VzdG9taXplLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zaXRlY3VzdG9taXplLnB5CkBAIC0yNywxOSArMjcsMTEgQEAKICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgcGFzcwogCi1kZWYgX19lbmFibGVEZWZhdWx0RW5jb2RpbmcoKToKLSAgICBpbXBvcnQgc3lzCi0gICAgdHJ5OgotICAgICAgICBzeXMuc2V0ZGVmYXVsdGVuY29kaW5nKCAidXRmOCIgKQotICAgIGV4Y2VwdCBMb29rdXBFcnJvcjoKLSAgICAgICAgcGFzcwotCiBpbXBvcnQgc3lzCiB0cnk6CiAgICAgaW1wb3J0IHJsY29tcGxldGVyLCByZWFkbGluZQogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIHBhc3MKIGVsc2U6Ci0gICAgX19lbmFibGVEZWZhdWx0RW5jb2RpbmcoKQogICAgIF9fcmVnaXN0ZXJFeGl0SGFuZGxlcigpCiAgICAgX19lbmFibGVSZWFkbGluZVN1cHBvcnQoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hc3luY18wLjYuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXN5bmNfMC42LjIuYmIKaW5kZXggNTRhMzBmNS4uMGRhNWZkZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hc3luY18wLjYuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFzeW5jXzAuNi4yLmJiCkBAIC0xLDYgKzEsMiBAQAotcmVxdWlyZSBweXRob24tYXN5bmMuaW5jCi0KIGluaGVyaXQgc2V0dXB0b29sczMKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtdGhyZWFkaW5nIHB5dGhvbjMtbGFuZyIKLQorcmVxdWlyZSBweXRob24tYXN5bmMuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRidXNfMS4yLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRidXNfMS4yLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlNWEwMWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYnVzXzEuMi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gYmluZGluZ3MgZm9yIHRoZSBEQnVzIGludGVyLXByb2Nlc3MgY29tbXVuaWNhdGlvbiBzeXN0ZW0iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL1NvZnR3YXJlL2RidXMiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTBiODMwNDdjZTllOTQ4YjY3YzBmYWNjNWYyMzM0NzZhIgotREVQRU5EUyA9ICJleHBhdCBkYnVzIGRidXMtZ2xpYiB2aXJ0dWFsL2xpYmludGwiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMtcHl0aG9uL2RidXMtcHl0aG9uLSR7UFZ9LnRhci5neiBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3MzcyYTU4OGM4M2E3MjMyYjRlMDgxNTliZmQ0OGZlNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMmYxZDY4NzFmNzRmYmEyMzY1MmU1MWQxMDg3M2U1NGY3MWFkYWIwNTI1ODMzYzE5YmFkOWU5OWIxYjJmOWNjIgotUyA9ICIke1dPUktESVJ9L2RidXMtcHl0aG9uLSR7UFZ9IgotCi1pbmhlcml0IGRpc3R1dGlsczMtYmFzZSBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiIKLVBBQ0tBR0VDT05GSUdbZG9jc10gPSAiLS1lbmFibGUtaHRtbC1kb2NzLC0tZGlzYWJsZS1odG1sLWRvY3MscHl0aG9uMy1kb2N1dGlscy1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW2FwaS1kb2NzXSA9ICItLWVuYWJsZS1hcGktZG9jcywtLWRpc2FibGUtYXBpLWRvY3MscHl0aG9uMy1kb2N1dGlscy1uYXRpdmUgcHl0aG9uMy1lcHlkb2MtbmF0aXZlIgotCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24zLWlvIHB5dGhvbjMtbG9nZ2luZyBweXRob24zLXN0cmluZ29sZCBweXRob24zLXRocmVhZGluZyBweXRob24zLXhtbCIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcGtnY29uZmlnIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYnVzXzEuMi42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYnVzXzEuMi42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5Y2JhZTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRidXNfMS4yLjYuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJQeXRob24gYmluZGluZ3MgZm9yIHRoZSBEQnVzIGludGVyLXByb2Nlc3MgY29tbXVuaWNhdGlvbiBzeXN0ZW0iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL1NvZnR3YXJlL2RidXMiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIwMzI0MDUxODk5NGRmNmQ4Yzk3NDY3NTY3NWU1Y2E0IgorREVQRU5EUyA9ICJleHBhdCBkYnVzIGRidXMtZ2xpYiB2aXJ0dWFsL2xpYmludGwiCisKK1NSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMtcHl0aG9uL2RidXMtcHl0aG9uLSR7UFZ9LnRhci5neiBcCisiCisKK1JTUkNfVVJJW21kNXN1bV0gPSAiMWNlMWRkZjI1ODIwNjBmOGY5NzE2NTJlYTU0Y2MxN2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzJmMjljMTcxNzJjZGI5Y2I2MWM2OGIxZjFhNzFkZmU3MzUxNTA2ZmM4MzA4NjkwMjljNDc0NDliZDA0ZmFlYiIKK1MgPSAiJHtXT1JLRElSfS9kYnVzLXB5dGhvbi0ke1BWfSIKKworaW5oZXJpdCBkaXN0dXRpbHMzLWJhc2UgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID89ICIiCitQQUNLQUdFQ09ORklHW2RvY3NdID0gIi0tZW5hYmxlLWh0bWwtZG9jcywtLWRpc2FibGUtaHRtbC1kb2NzLHB5dGhvbjMtZG9jdXRpbHMtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1thcGktZG9jc10gPSAiLS1lbmFibGUtYXBpLWRvY3MsLS1kaXNhYmxlLWFwaS1kb2NzLHB5dGhvbjMtZG9jdXRpbHMtbmF0aXZlIHB5dGhvbjMtZXB5ZG9jLW5hdGl2ZSIKKworUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1pbyBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1zdHJpbmdvbGQgcHl0aG9uMy10aHJlYWRpbmcgcHl0aG9uMy14bWwiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3BrZ2NvbmZpZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzIuMS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMi4xLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhYzJhMGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMi4xLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLWdpdC5pbmMKLQotREVQRU5EUyA9ICJweXRob24zLWdpdGRiIgotCi1pbmhlcml0IHNldHVwdG9vbHMzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24zLWdpdGRiIHB5dGhvbjMtbGFuZyBweXRob24zLWlvIHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1tYXRoIHB5dGhvbjMtcmUgcHl0aG9uMy1zdWJwcm9jZXNzIHB5dGhvbjMtc3RyaW5nb2xkIHB5dGhvbjMtdW5peGFkbWluIHB5dGhvbjMtZW51bSBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1kYXRldGltZSBweXRob24zLW5ldGNsaWVudCBweXRob24zLXVuaXR0ZXN0IHB5dGhvbjMtYXJncGFyc2UgZ2l0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMi4xLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8yLjEuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzMyMGZhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMi4xLjguYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi1naXQuaW5jCitpbmhlcml0IHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdGRiXzAuNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRkYl8wLjYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBkOWQ0Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdGRiXzAuNi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1naXRkYi5pbmMKLQotREVQRU5EUyA9ICJweXRob24zLWFzeW5jIHB5dGhvbjMtc21tYXAiCi0KLWluaGVyaXQgZGlzdHV0aWxzMwotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1zbW1hcCBweXRob24zLWFzeW5jIHB5dGhvbjMtbW1hcCBweXRob24zLWxhbmcgcHl0aG9uMy1pbyBweXRob24zLXNoZWxsIHB5dGhvbjMtY3J5cHQgcHl0aG9uMy1jb21wcmVzc2lvbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0ZGJfMi4wLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdGRiXzIuMC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMTU4MzIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdGRiXzIuMC4zLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tZ2l0ZGIuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWluaXBhcnNlXzAuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaW5pcGFyc2VfMC40LmJiCmluZGV4IGY1MWNlNjQuLjRlYmE5ZWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaW5pcGFyc2VfMC40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaW5pcGFyc2VfMC40LmJiCkBAIC00LDE3ICs0LDE0IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLVBTRjttZDU9MWM3OGE1YmIzNTg0YjM1MzQ5NmQ1ZjZmMzRlZGI0YjIgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRTttZDU9NTJmMjgwNjVhZjExZDY5MzgyNjkzYjQ1YjVhOGViNTQiCiAKLVNSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9pL2luaXBhcnNlL2luaXBhcnNlLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1weXRob24tMy1jb21wYXRpYmlsaXR5LnBhdGNoICIKK1NSQ19VUkkgPSAiZmlsZTovLzAwMDEtQWRkLXB5dGhvbi0zLWNvbXBhdGliaWxpdHkucGF0Y2ggIgorCiBTUkNfVVJJW21kNXN1bV0gPSAiNWU1NzNlOWU5NzMzZDk3NjIzODgxY2U5YmJlNWVjYTYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWJjMWVlMTJkMmNmYjI1MDYxMDkwNzJkNmMyMWU0MGI2Yzc1YTNmZTkwYTljOTI0MzI3ZDgwYmMwZDk5YzA1NCIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2luaXBhcnNlLyIKIAotaW5oZXJpdCBkaXN0dXRpbHMzCitpbmhlcml0IHB5cGkgZGlzdHV0aWxzMwogCiBSREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1jb3JlIHB5dGhvbjMtc2l4IgogREVQRU5EUyArPSAicHl0aG9uMy1zaXgiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotUyA9ICIke1dPUktESVJ9L2luaXBhcnNlLSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYWtvXzEuMC43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYWtvXzEuMC43LmJiCmluZGV4IDJiNTBmZmQuLjIyY2VlZWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWFrb18xLjAuNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1ha29fMS4wLjcuYmIKQEAgLTEsMTEgKzEsMiBAQAotcmVxdWlyZSBweXRob24tbWFrby5pbmMKLQogaW5oZXJpdCBzZXR1cHRvb2xzMwotCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24zLXRocmVhZGluZyBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLW5ldGNsaWVudCBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLWh0bWwgXAotIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorcmVxdWlyZSBweXRob24tbWFrby5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmF0aXZlXzMuNS4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uYXRpdmVfMy41LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjZDljODguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uYXRpdmVfMy41LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi5pbmMKLQotUFIgPSAiJHtJTkNfUFJ9LjAiCi1QWVRIT05fTUFKTUlOID0gIjMuNSIKLURJU1RST19TUkNfVVJJID89ICJmaWxlOi8vc2l0ZWN1c3RvbWl6ZS5weSIKLURJU1RST19TUkNfVVJJX2xpbnV4c3RkYmFzZSA9ICIiCi1TUkNfVVJJID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLyR7UFZ9L1B5dGhvbi0ke1BWfS50YXIueHogXAotZmlsZTovLzEyLWRpc3R1dGlscy1wcmVmaXgtaXMtaW5zaWRlLXN0YWdpbmctYXJlYS5wYXRjaCBcCi1maWxlOi8vcHl0aG9uLWNvbmZpZy5wYXRjaCBcCi1maWxlOi8vMDAwMS1jcm9zcy1jb21waWxlLXN1cHBvcnQucGF0Y2ggXAotZmlsZTovLzAzMC1maXh1cC1pbmNsdWRlLWRpcnMucGF0Y2ggXAotZmlsZTovLzA3MC1kb250LWNsZWFuLWlwa2ctaW5zdGFsbC5wYXRjaCBcCi1maWxlOi8vMDgwLWRpc3R1dGlscy1kb250X2FkanVzdF9maWxlcy5wYXRjaCBcCi1maWxlOi8vMTMwLXJlYWRsaW5lLXNldHVwLnBhdGNoIFwKLWZpbGU6Ly8xNTAtZml4LXNldHVwdGVybS5wYXRjaCBcCi1maWxlOi8vcHl0aG9uLTMuMy1tdWx0aWxpYi5wYXRjaCBcCi1maWxlOi8vMDMtZml4LXRraW50ZXItZGV0ZWN0aW9uLnBhdGNoIFwKLWZpbGU6Ly9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2ggXAotZmlsZTovL3NodXRpbC1mb2xsb3ctc3ltbGluay1maXgucGF0Y2ggXAotZmlsZTovLzAwMDEtaDJweS1GaXgtaXNzdWUtMTMwMzItd2hlcmUtaXQtZmFpbHMtd2l0aC1Vbmljb2RlRGVjby5wYXRjaCBcCi1maWxlOi8vc3lzcm9vdC1pbmNsdWRlLWhlYWRlcnMucGF0Y2ggXAotZmlsZTovL3VuaXhjY29tcGlsZXIucGF0Y2ggXAotJHtESVNUUk9fU1JDX1VSSX0gXAotZmlsZTovL3N5c2NvbmZpZy5weS1hZGQtX1BZVEhPTl9QUk9KRUNUX1NSQy5wYXRjaCBcCi1maWxlOi8vc2V0dXAucHktY2hlY2stY3Jvc3NfY29tcGlsaW5nLXdoZW4tZ2V0LUZMQUdTLnBhdGNoIFwKLWZpbGU6Ly8wMDAxLURvLW5vdC11c2UtdGhlLXNoZWxsLXZlcnNpb24tb2YtcHl0aG9uLWNvbmZpZy10aGF0LXcucGF0Y2ggXAotZmlsZTovL3N1cHBvcnRfU09VUkNFX0RBVEVfRVBPQ0hfaW5fcHlfY29tcGlsZS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1N2QxZjhiZmJhYmY0ZjI1MDAyNzNmYjA3MDZlNmYyMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlZWZlMmFkNjU3NTg1NTQyM2FiNjMwZjViNTFhOGVmNmU1NTU2Zjc3NDU4NGMwNmJlYWI0OTI2ZjkzMGRkYmIwIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iNjgwZWQ5OWFhNjBkMzUwYzY1YTY1OTE0NDk0MjA3ZSIKLQotIyBleGNsdWRlIHByZS1yZWxlYXNlcyBmb3IgYm90aCBweXRob24gMi54IGFuZCAzLngKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIltQcF15dGhvbi0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgotCi1TID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgotCi1FWFRSQU5BVElWRVBBVEggKz0gImJ6aXAyLW5hdGl2ZSIKLURFUEVORFMgPSAib3BlbnNzbC1uYXRpdmUgYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIHpsaWItbmF0aXZlIHJlYWRsaW5lLW5hdGl2ZSBzcWxpdGUzLW5hdGl2ZSIKLQotaW5oZXJpdCBuYXRpdmUKLQotcmVxdWlyZSBweXRob24tbmF0aXZlLSR7UFlUSE9OX01BSk1JTn0tbWFuaWZlc3QuaW5jCi0KLSMgdW5pbmF0aXZlIG1heSBiZSB1c2VkIG9uIHByZSBnbGliYyAyLjI1IHN5c3RlbXMgd2hpY2ggZG9uJ3QgaGF2ZSBnZXRlbnRyb3B5Ci1FWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAtLWJpbmRpcj0ke2JpbmRpcn0vJHtQTn0gLS13aXRob3V0LWVuc3VyZXBpcCBhY19jdl9mdW5jX2dldGVudHJvcHk9bm8iCi0KLUVYVFJBX09FTUFLRSA9ICdcCi0gIExJQkM9IiIgXAotICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0gXAotICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSX05BVElWRX0gXAotICBMSUI9JHtiYXNlbGlifSBcCi0gIEFSQ0g9JHtUQVJHRVRfQVJDSH0gXAotJwotCi0jIE5vIGN0eXBlcyBvcHRpb24gZm9yIHB5dGhvbiAzCi1QWVRIT05MU0JPUFRTID0gIiIKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLQlhdXRvcmVjb25mIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAtLWV4Y2x1ZGU9YXV0b3BvaW50IC4uL1B5dGhvbi0ke1BWfS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpCi0Jc2VkIC1pIC1lICdzLCNkZWZpbmUgSEFWRV9HRVRSQU5ET00gMSwvXCogI3VuZGVmIEhBVkVfR0VUUkFORE9NIFwqLywnICR7Qn0vcHljb25maWcuaAotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLQlpZiBbIC1lICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSBdOyB0aGVuCi0JCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfQotCWZpCi0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LyR7UE59Ci0JaW5zdGFsbCAtbSAwNzU1IFBhcnNlci9wZ2VuICR7RH0ke2JpbmRpcn0vJHtQTn0KLQotCSMgTWFrZSBzdXJlIHdlIHVzZSAvdXNyL2Jpbi9lbnYgcHl0aG9uCi0JZm9yIFBZVEhTQ1JJUFQgaW4gYGdyZXAgLXJJbCAke2JpbmRpcn0vJHtQTn0vcHl0aG9uICR7RH0ke2JpbmRpcn0vJHtQTn1gOyBkbwotCQlzZWQgLWkgLWUgJzFzfF4jIS4qfCMhL3Vzci9iaW4vZW52IHB5dGhvbjN8JyAkUFlUSFNDUklQVAotCWRvbmUKLQotCSMgVGVzdHMgYXJlIGxhcmdlIGFuZCB3ZSBkb24ndCBuZWVkIHRoZW0gaW4gdGhlIG5hdGl2ZSBzeXNyb290Ci0Jcm0gJHtEfSR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3Rlc3QgLXJmCi19Ci0KLVJQUk9WSURFUyArPSAicHl0aG9uMy1taXNjLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmF0aXZlXzMuNS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uYXRpdmVfMy41LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA5ODAyNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmF0aXZlXzMuNS41LmJiCkBAIC0wLDAgKzEsMTEyIEBACityZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi5pbmMKKworUFIgPSAiJHtJTkNfUFJ9LjAiCitQWVRIT05fTUFKTUlOID0gIjMuNSIKK0RJU1RST19TUkNfVVJJID89ICJmaWxlOi8vc2l0ZWN1c3RvbWl6ZS5weSIKK0RJU1RST19TUkNfVVJJX2xpbnV4c3RkYmFzZSA9ICIiCitTUkNfVVJJID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLyR7UFZ9L1B5dGhvbi0ke1BWfS50YXIueHogXAorZmlsZTovLzEyLWRpc3R1dGlscy1wcmVmaXgtaXMtaW5zaWRlLXN0YWdpbmctYXJlYS5wYXRjaCBcCitmaWxlOi8vcHl0aG9uLWNvbmZpZy5wYXRjaCBcCitmaWxlOi8vMDAwMS1jcm9zcy1jb21waWxlLXN1cHBvcnQucGF0Y2ggXAorZmlsZTovLzAzMC1maXh1cC1pbmNsdWRlLWRpcnMucGF0Y2ggXAorZmlsZTovLzA3MC1kb250LWNsZWFuLWlwa2ctaW5zdGFsbC5wYXRjaCBcCitmaWxlOi8vMDgwLWRpc3R1dGlscy1kb250X2FkanVzdF9maWxlcy5wYXRjaCBcCitmaWxlOi8vMTMwLXJlYWRsaW5lLXNldHVwLnBhdGNoIFwKK2ZpbGU6Ly8xNTAtZml4LXNldHVwdGVybS5wYXRjaCBcCitmaWxlOi8vcHl0aG9uLTMuMy1tdWx0aWxpYi5wYXRjaCBcCitmaWxlOi8vMDMtZml4LXRraW50ZXItZGV0ZWN0aW9uLnBhdGNoIFwKK2ZpbGU6Ly9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2ggXAorZmlsZTovL3NodXRpbC1mb2xsb3ctc3ltbGluay1maXgucGF0Y2ggXAorZmlsZTovLzAwMDEtaDJweS1GaXgtaXNzdWUtMTMwMzItd2hlcmUtaXQtZmFpbHMtd2l0aC1Vbmljb2RlRGVjby5wYXRjaCBcCitmaWxlOi8vc3lzcm9vdC1pbmNsdWRlLWhlYWRlcnMucGF0Y2ggXAorZmlsZTovL3VuaXhjY29tcGlsZXIucGF0Y2ggXAorJHtESVNUUk9fU1JDX1VSSX0gXAorZmlsZTovL3N5c2NvbmZpZy5weS1hZGQtX1BZVEhPTl9QUk9KRUNUX1NSQy5wYXRjaCBcCitmaWxlOi8vc2V0dXAucHktY2hlY2stY3Jvc3NfY29tcGlsaW5nLXdoZW4tZ2V0LUZMQUdTLnBhdGNoIFwKK2ZpbGU6Ly8wMDAxLURvLW5vdC11c2UtdGhlLXNoZWxsLXZlcnNpb24tb2YtcHl0aG9uLWNvbmZpZy10aGF0LXcucGF0Y2ggXAorZmlsZTovL3N1cHBvcnRfU09VUkNFX0RBVEVfRVBPQ0hfaW5fcHlfY29tcGlsZS5wYXRjaCBcCitmaWxlOi8vcmVnZW4tYWxsLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImYzNzYzZWRmOTgyNGQ1ZDNhMTVmNWY2NDYwODNiNmUwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA2M2QyYzNiMDQwMmQ2MTkxYjkwNzMxZTBmNzM1YzY0ODMwZTc1MjIzNDhhZWI3ZWQzODJhODMxNjVkNDUwMDkiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWI2ZWM1MTViMjI2MThmNTVmYTA3Mjc2Yjg5N2JhY2VhIgorCisjIGV4Y2x1ZGUgcHJlLXJlbGVhc2VzIGZvciBib3RoIHB5dGhvbiAyLnggYW5kIDMueAorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiW1BwXXl0aG9uLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCisKK1MgPSAiJHtXT1JLRElSfS9QeXRob24tJHtQVn0iCisKK0VYVFJBTkFUSVZFUEFUSCArPSAiYnppcDItbmF0aXZlIgorREVQRU5EUyA9ICJvcGVuc3NsLW5hdGl2ZSBiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUgemxpYi1uYXRpdmUgcmVhZGxpbmUtbmF0aXZlIHNxbGl0ZTMtbmF0aXZlIGdkYm0tbmF0aXZlIgorCitpbmhlcml0IG5hdGl2ZQorCitFWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAtLWJpbmRpcj0ke2JpbmRpcn0vJHtQTn0gLS13aXRob3V0LWVuc3VyZXBpcCIKKworRVhUUkFfT0VNQUtFID0gJ1wKKyAgTElCQz0iIiBcCisgIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSBcCisgIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSBcCisgIExJQj0ke2Jhc2VsaWJ9IFwKKyAgQVJDSD0ke1RBUkdFVF9BUkNIfSBcCisnCisKKyMgTm8gY3R5cGVzIG9wdGlvbiBmb3IgcHl0aG9uIDMKK1BZVEhPTkxTQk9QVFMgPSAiIgorCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworCWF1dG9yZWNvbmYgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlIC0tZXhjbHVkZT1hdXRvcG9pbnQgLi4vUHl0aG9uLSR7UFZ9L01vZHVsZXMvX2N0eXBlcy9saWJmZmkKKwlzZWQgLWkgLWUgJ3MsI2RlZmluZSBIQVZFX0dFVFJBTkRPTSAxLC9cKiAjdW5kZWYgSEFWRV9HRVRSQU5ET00gXCovLCcgJHtCfS9weWNvbmZpZy5oCit9CisKKyMgUmVnZW5lcmF0ZSBhbGwgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcworIyBUaGlzIGVuc3VyZXMgdGhhdCBwZ2VuIGFuZCBmcmllbmRzIGdldCBjcmVhdGVkIGR1cmluZyB0aGUgY29tcGlsZSBwaGFzZQorIworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgICMgQXNzdW1pbmcgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUzMzA4MCBoYXMgYmVlbiBhZGRyZXNzZWQgaW4gTWFrZWZpbGUuCisgICAgb2VfcnVubWFrZSByZWdlbi1hbGwKK30KKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnCisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCisJaWYgWyAtZSAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0KKwlmaQorCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8ke1BOfQorCWluc3RhbGwgLW0gMDc1NSBQYXJzZXIvcGdlbiAke0R9JHtiaW5kaXJ9LyR7UE59CisKKwkjIE1ha2Ugc3VyZSB3ZSB1c2UgL3Vzci9iaW4vZW52IHB5dGhvbgorCWZvciBQWVRIU0NSSVBUIGluIGBncmVwIC1ySWwgJHtiaW5kaXJ9LyR7UE59L3B5dGhvbiAke0R9JHtiaW5kaXJ9LyR7UE59YDsgZG8KKwkJc2VkIC1pIC1lICcxc3xeIyEuKnwjIS91c3IvYmluL2VudiBweXRob24zfCcgJFBZVEhTQ1JJUFQKKwlkb25lCisKKyAgICAgICAgIyBBZGQgYSBzeW1saW5rIHRvIHRoZSBuYXRpdmUgUHl0aG9uIHNvIHRoYXQgc2NyaXB0cyBjYW4ganVzdCBpbnZva2UKKyAgICAgICAgIyAibmF0aXZlcHl0aG9uIiBhbmQgZ2V0IHRoZSByaWdodCBvbmUgd2l0aG91dCBuZWVkaW5nIGFic29sdXRlIHBhdGhzCisgICAgICAgICMgKHRoZXNlIG9mdGVuIGVuZCB1cCB0b28gbG9uZyBmb3IgdGhlICMhIHBhcnNlciBpbiB0aGUga2VybmVsIGFzIHRoZQorICAgICAgICAjIGJ1ZmZlciBpcyAxMjggYnl0ZXMgbG9uZykuCisgICAgICAgIGxuIC1zIHB5dGhvbjMtbmF0aXZlL3B5dGhvbjMgJHtEfSR7YmluZGlyfS9uYXRpdmVweXRob24zCit9CisKK3B5dGhvbigpeworCisgICAgIyBSZWFkIEpTT04gbWFuaWZlc3QKKyAgICBpbXBvcnQganNvbgorICAgIHB5dGhvbmRpciA9IGQuZ2V0VmFyKCdUSElTRElSJyxUcnVlKQorICAgIHdpdGggb3BlbihweXRob25kaXIrJy9weXRob24zL3B5dGhvbjMtbWFuaWZlc3QuanNvbicpIGFzIG1hbmlmZXN0X2ZpbGU6CisgICAgICAgIHB5dGhvbl9tYW5pZmVzdD1qc29uLmxvYWQobWFuaWZlc3RfZmlsZSkKKworICAgIHJwcm92aWRlcyA9IGQuZ2V0VmFyKCdSUFJPVklERVMnKS5zcGxpdCgpCisKKyAgICAjIEhhcmRjb2RlZCBzaW5jZSBpdCBjYW50IGJlIHB5dGhvbjMtbmF0aXZlLWZvbywgc2hvdWxkIGJlIHB5dGhvbjMtZm9vLW5hdGl2ZQorICAgIHBuID0gJ3B5dGhvbjMnCisKKyAgICBmb3Iga2V5IGluIHB5dGhvbl9tYW5pZmVzdDoKKyAgICAgICAgcHlwYWNrYWdlID0gcG4gKyAnLScgKyBrZXkgKyAnLW5hdGl2ZScKKyAgICAgICAgaWYgcHlwYWNrYWdlIG5vdCBpbiBycHJvdmlkZXM6CisgICAgICAgICAgICAgIHJwcm92aWRlcy5hcHBlbmQocHlwYWNrYWdlKQorCisgICAgZC5zZXRWYXIoJ1JQUk9WSURFUycsICcgJy5qb2luKHJwcm92aWRlcykpCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5vc2VfMS4zLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5vc2VfMS4zLjcuYmIKaW5kZXggMWUyZmY3NC4uOGJjMWY0OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ub3NlXzEuMy43LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbm9zZV8xLjMuNy5iYgpAQCAtMSwyOCArMSw2IEBACi1TVU1NQVJZID0gIkV4dGVuZHMgUHl0aG9uIHVuaXR0ZXN0IHRvIG1ha2UgdGVzdGluZyBlYXNpZXIiCi1ERVNDUklQVElPTiA9ICJub3NlIGV4dGVuZHMgdGhlIHRlc3QgbG9hZGluZyBhbmQgcnVubmluZyBmZWF0dXJlcyBvZiB1bml0dGVzdCwgXAotbWFraW5nIGl0IGVhc2llciB0byB3cml0ZSwgZmluZCBhbmQgcnVuIHRlc3RzLiIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2xncGwudHh0O21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyIKLQotU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL24vbm9zZS9ub3NlLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRkM2FkMGZmMDdiNjEzNzNkMmNlZmM4OWM1ZDBiMjBiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImYxYmZmZWY5Y2JjODI2MjhmNmU3ZDdiNDBkN2UyNTVhZWZhYTFhZGI2YTFiMWQyNmM2OWE4Yjc5ZTYyMDhhOTgiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL25vc2UvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL25vc2UvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspIgotCi1TID0gIiR7V09SS0RJUn0vbm9zZS0ke1BWfSIKLQogaW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tbm9zZS5pbmMKIAogZG9faW5zdGFsbF9hcHBlbmQoKSB7CiAgICAgbXYgJHtEfSR7YmluZGlyfS9ub3NldGVzdHMgJHtEfSR7YmluZGlyfS9ub3NldGVzdHMzCiB9Ci0KLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICJcCi0gIHB5dGhvbjMtdW5pdHRlc3QgXAotICAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzkuMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfOS4wLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliOTA3YTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfOS4wLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1TVU1NQVJZID0gIlRoZSBQeVBBIHJlY29tbWVuZGVkIHRvb2wgZm9yIGluc3RhbGxpbmcgUHl0aG9uIHBhY2thZ2VzIgotc0hPTUVQQUdFc3NzID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcGlwIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0yNWZiYTQ1MTA5NTY1Zjg3ZGUyMGJhZTg1YmMzOTQ1MiIKLQotU1JDTkFNRSA9ICJwaXAiCi1ERVBFTkRTICs9ICJweXRob24zIHB5dGhvbjMtc2V0dXB0b29scy1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9wLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzNWYwMWRhMzMwMDk3MTk0OTdmMDFhNGJhNjlkNjNjOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwOWYyNDNlMWE3YjQ2MWY2NTRjMjZhNzI1ZmEzNzMyMTFiYjdmZjE3YTkzMDAwNThiMjA1YzYxNjU4Y2E5NDBkIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9waXAiCi0KLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgotCi1pbmhlcml0IGRpc3R1dGlsczMKLQotRElTVFVUSUxTX0lOU1RBTExfQVJHUyArPSAiLS1pbnN0YWxsLWxpYj0ke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCi0KLWRvX2luc3RhbGxfcHJlcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfQotfQotCi0jIFVzZSBzZXR1cHRvb2xzIHNpdGUucHkgaW5zdGVhZCwgYXZvaWQgc2hhcmVkIHN0YXRlIGlzc3VlCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBybSAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2l0ZS5weQotICAgIHJtICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9fX3B5Y2FjaGVfXy9zaXRlLmNweXRob24tKi5weWMKLQotICAgICMgSW5zdGFsbCBhcyBwaXAzIGFuZCBsZWF2ZSBwaXAyIGFzIGRlZmF1bHQKLSAgICBybSAke0R9LyR7YmluZGlyfS9waXAKLQotICAgICMgSW5zdGFsbGVkIGVnZ3MgbmVlZCB0byBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIGludGVycHJldGVyIHZpYSBhIHB0aCBmaWxlCi0gICAgZWNobyAiLi8ke1NSQ05BTUV9LSR7UFZ9LXB5JHtQWVRIT05fQkFTRVZFUlNJT059LmVnZyIgPiAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vJHtTUkNOQU1FfS0ke1BWfS5wdGgKLQotICAgICMgTWFrZSBzdXJlIHdlIHVzZSAvdXNyL2Jpbi9lbnYgcHl0aG9uMwotICAgIGZvciBQWVRIU0NSSVBUIGluIGBncmVwIC1ySWwgJHtiaW5kaXJ9ICR7RH0ke2JpbmRpcn0vcGlwMypgOyBkbwotICAgICAgICBzZWQgLWkgLWUgJzFzfF4jIS4qfCMhL3Vzci9iaW4vZW52IHB5dGhvbjN8JyAkUFlUSFNDUklQVAotICAgIGRvbmUKLX0KLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICBweXRob24zLWNvbXBpbGUgXAotICBweXRob24zLWlvIFwKLSAgcHl0aG9uMy1lbnVtIFwKLSAgcHl0aG9uMy1odG1sIFwKLSAgcHl0aG9uMy1qc29uIFwKLSAgcHl0aG9uMy1uZXRzZXJ2ZXIgXAotICBweXRob24zLXNldHVwdG9vbHMgXAotICBweXRob24zLXVuaXhhZG1pbiBcCi0gIHB5dGhvbjMteG1scnBjIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfOS4wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcF85LjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2ZkNmRjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfOS4wLjIuYmIKQEAgLTAsMCArMSw0OCBAQAorU1VNTUFSWSA9ICJUaGUgUHlQQSByZWNvbW1lbmRlZCB0b29sIGZvciBpbnN0YWxsaW5nIFB5dGhvbiBwYWNrYWdlcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcGlwIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0yNWZiYTQ1MTA5NTY1Zjg3ZGUyMGJhZTg1YmMzOTQ1MiIKKworREVQRU5EUyArPSAicHl0aG9uMyBweXRob24zLXNldHVwdG9vbHMtbmF0aXZlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMmZkZGQ2ODA0MjIzMjZiOWQxZmJmNTYxMTJjZjM0MWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODgxMTBhMjI0ZTlkMzBlNWQ3NjU5MmEwYjIxMzBlZjEwZTdlNjdhNjQyNmU4NjE3YmI5MThmZmZiZmU5MWZlNSIKKworaW5oZXJpdCBweXBpIGRpc3R1dGlsczMKKworRElTVFVUSUxTX0lOU1RBTExfQVJHUyArPSAiLS1pbnN0YWxsLWxpYj0ke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCisKK2RvX2luc3RhbGxfcHJlcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfQorfQorCisjIFVzZSBzZXR1cHRvb2xzIHNpdGUucHkgaW5zdGVhZCwgYXZvaWQgc2hhcmVkIHN0YXRlIGlzc3VlCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBybSAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2l0ZS5weQorICAgIHJtICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9fX3B5Y2FjaGVfXy9zaXRlLmNweXRob24tKi5weWMKKworICAgICMgSW5zdGFsbCBhcyBwaXAzIGFuZCBsZWF2ZSBwaXAyIGFzIGRlZmF1bHQKKyAgICBybSAke0R9LyR7YmluZGlyfS9waXAKKworICAgICMgSW5zdGFsbGVkIGVnZ3MgbmVlZCB0byBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIGludGVycHJldGVyIHZpYSBhIHB0aCBmaWxlCisgICAgZWNobyAiLi8ke1BZUElfUEFDS0FHRX0tJHtQVn0tcHkke1BZVEhPTl9CQVNFVkVSU0lPTn0uZWdnIiA+ICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8ke1BZUElfUEFDS0FHRX0tJHtQVn0ucHRoCisKKyAgICAjIE1ha2Ugc3VyZSB3ZSB1c2UgL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAgICBmb3IgUFlUSFNDUklQVCBpbiBgZ3JlcCAtcklsICR7YmluZGlyfSAke0R9JHtiaW5kaXJ9L3BpcDMqYDsgZG8KKyAgICAgICAgc2VkIC1pIC1lICcxc3xeIyEuKnwjIS91c3IvYmluL2VudiBweXRob24zfCcgJFBZVEhTQ1JJUFQKKyAgICBkb25lCit9CisKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgcHl0aG9uMy1jb21waWxlIFwKKyAgcHl0aG9uMy1pbyBcCisgIHB5dGhvbjMtaHRtbCBcCisgIHB5dGhvbjMtanNvbiBcCisgIHB5dGhvbjMtbmV0c2VydmVyIFwKKyAgcHl0aG9uMy1zZXR1cHRvb2xzIFwKKyAgcHl0aG9uMy11bml4YWRtaW4gXAorICBweXRob24zLXhtbHJwYyBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljYWlyb18xLjEwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y2Fpcm9fMS4xMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjU4YmExLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljYWlyb18xLjEwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIENhaXJvIGNhbnZhcyBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnL3B5Y2Fpcm8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZyIKLVNFQ1RJT04gPSAicHl0aG9uLWRldmVsIgotTElDRU5TRSA9ICJMR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIiCi0KLSMgY2Fpcm8gPj0gMS44LjgKLURFUEVORFMgPSAiY2Fpcm8iCi1QUiA9ICJyMiIKLQotU1JDX1VSSSA9ICJodHRwOi8vY2Fpcm9ncmFwaGljcy5vcmcvcmVsZWFzZXMvcHljYWlyby0ke1BWfS50YXIuYnoyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTZmZDNmMmYxZTZhNzJlMGRiMDg2OGM0OTg1NjY5YzUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWFhNDA3OGU3ZWI1YmU1ODNhZWFiYmU4ZDg3MTcyNzk3NzE3Zjk1ZThjNDMzOGYwZDRhMTdiNjgzYTcyNTNiZSIKLQotUyA9ICIke1dPUktESVJ9L3B5Y2Fpcm8tJHtQVn0iCi0KLWluaGVyaXQgZGlzdHV0aWxzMyBwa2djb25maWcKLQotQ0ZMQUdTICs9ICItZlBJQyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLQlQWVRIT049JHtQWVRIT059IC4vd2FmIGNvbmZpZ3VyZSAtLXByZWZpeD0ke0R9JHtwcmVmaXh9IC0tbGliZGlyPSR7RH0ke2xpYmRpcn0KLX0KLQotZG9fY29tcGlsZSgpIHsKLQkuL3dhZiBidWlsZCAke1BBUkFMTEVMX01BS0V9Ci19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JLi93YWYgaW5zdGFsbAotCXNlZCBcCi0JCS1lICdzOkBwcmVmaXhAOiR7cHJlZml4fTonIFwKLQkJLWUgJ3M6QFZFUlNJT05AOiR7UFZ9OicgXAotCQktZSAnczpAaW5jbHVkZWRpckA6JHtpbmNsdWRlZGlyfTonIFwKLQkJcHkzY2Fpcm8ucGMuaW4gPiBweTNjYWlyby5wYwotCWluc3RhbGwgLW0gMDY0NCBweTNjYWlyby5wYyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy8KLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljYWlyb18xLjE1LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y2Fpcm9fMS4xNS42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjM2UxZTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y2Fpcm9fMS4xNS42LmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIGJpbmRpbmdzIGZvciB0aGUgQ2Fpcm8gY2FudmFzIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vY2Fpcm9ncmFwaGljcy5vcmcvcHljYWlybyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnIgorU0VDVElPTiA9ICJweXRob24tZGV2ZWwiCitMSUNFTlNFID0gIkxHUEx2Mi4xICYgTVBMdjEuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYyZTA3MWFiNzI5Nzg0MzFiMjk0YTBkNjk2MzI3NDIxIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkctTEdQTC0yLjE7bWQ1PWZhZDliMzMzMmJlODk0YmFiOWJjNTAxNTcyODY0YjI5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkctTVBMLTEuMTttZDU9YmZlMWY3NWQ2MDY5MTJhNDExMWM5MDc0M2Q2YzczMjUiCisKKyMgY2Fpcm8gPj0gMS4xNAorREVQRU5EUyA9ICJjYWlybyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vcHlnb2JqZWN0L3B5Y2Fpcm8vcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9L3B5Y2Fpcm8tJHtQVn0udGFyLmd6IgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9weWdvYmplY3QvcHljYWlyby9yZWxlYXNlcy8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzZmYyMTBjMzRlN2IwNTI1OTBlMTVmZDBmYjE0Nzc2NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhZDE1MGVhNjM3ODYwODM2YjY2NzA1ZTA1MTNiOGU1OTQ5NDUzOGYwYjgwNDk3YWQzNDYyMDUxMzY4NzU1MDE2IgorCitTID0gIiR7V09SS0RJUn0vcHljYWlyby0ke1BWfSIKKworaW5oZXJpdCBzZXR1cHRvb2xzMyBwa2djb25maWcKKworQ0ZMQUdTICs9ICItZlBJQyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0vcHljYWlyby8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtEfSR7ZGF0YWRpcn0vaW5jbHVkZS9weWNhaXJvL3B5M2NhaXJvLmggJHtEfSR7aW5jbHVkZWRpcn0vcHljYWlyby8KK30KK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2luY2x1ZGUvcHljYWlyby9weTNjYWlyby5oIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3QvMDAwMS1jb25maWd1cmUuYWMtRG9uLXQtdXNlLWdub21lLWNvbW1vbi1tYWNyb3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdC8wMDAxLWNvbmZpZ3VyZS5hYy1Eb24tdC11c2UtZ25vbWUtY29tbW9uLW1hY3Jvcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWFlZGI1OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdC8wMDAxLWNvbmZpZ3VyZS5hYy1Eb24tdC11c2UtZ25vbWUtY29tbW9uLW1hY3Jvcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gMjA2MzYwNzQ0Y2VkZmYyMGVhZTNjOGZjZmRlOTkzOGZkYWU5OTU5MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBUaHUsIDYgSnVsIDIwMTcgMTE6NDc6MjEgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBEb24ndCB1c2UgZ25vbWUtY29tbW9uIG1hY3JvcwotCi1yZW1vdmUgR05PTUVfQ09NUElMRV9XQVJOSU5HUygpIGNhbGw6IGl0J3MgZnJvbSBnbm9tZS1jb21tb24gd2hpY2gKLWlzIGRlcHJlY2F0ZWQuCi0KLVRoaXMgcGF0Y2ggY2FuIGJlIHJlbW92ZWQgd2hlbiB1cGdyYWRpbmcgdG8gMy4yNS4xOiBhdCB0aGF0IHBvaW50Ci1weWdvYmplY3QgbmVlZHMgYXV0b2NvbmYtYXJjaGl2ZSBpbnN0ZWFkLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW0FscmVhZHkgaGFuZGxlZCB1cHN0cmVhbV0KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAyIC0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDFmMTViM2MuLjVjYjE3MGYgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTIyMSw4ICsyMjEsNiBAQCBBQ19BUkdfV0lUSChjb21tb24sCi0gICAgIHdpdGhfY29tbW9uPXllcykKLSBBTV9DT05ESVRJT05BTChXSVRIX0NPTU1PTiwgdGVzdCAiJHdpdGhfY29tbW9uIiA9ICJ5ZXMiKQotIAotLSMgY29tcGlsZXIgd2FybmluZ3MsIGVycm9ycywgcmVxdWlyZWQgY2ZsYWdzLCBhbmQgY29kZSBjb3ZlcmFnZSBzdXBwb3J0Ci0tR05PTUVfQ09NUElMRV9XQVJOSU5HUyhbbWF4aW11bV0sIFstV25vLWVycm9yPW1pc3NpbmctcHJvdG90eXBlc10pCi0gQUNfTVNHX0NIRUNLSU5HKGZvciBHbm9tZSBjb2RlIGNvdmVyYWdlIHN1cHBvcnQpCi0gbTRfaWZkZWYoW0dOT01FX0NPREVfQ09WRVJBR0VdLAotICAgICAgICAgIFtBQ19NU0dfUkVTVUxUKHllcykKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3QvMDAwMS1jb25maWd1cmUuYWMtYWRkLXN5c3Jvb3QtcGF0aC10by1HSV9EQVRBRElSLWRvbi10LXNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3QvMDAwMS1jb25maWd1cmUuYWMtYWRkLXN5c3Jvb3QtcGF0aC10by1HSV9EQVRBRElSLWRvbi10LXNlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzkxZjdlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnb2JqZWN0LzAwMDEtY29uZmlndXJlLmFjLWFkZC1zeXNyb290LXBhdGgtdG8tR0lfREFUQURJUi1kb24tdC1zZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb20gNWU1MzUwZDczMGY4NTk1N2E0MmM2ZDg0NmQzNDdkMDgwZTdkZDk5NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyMyBPY3QgMjAxNSAxMjo0MDozNCArMDMwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IGFkZCBzeXNyb290IHBhdGggdG8gR0lfREFUQURJUjsgZG9uJ3Qgc2V0Ci0gaW50cm9zcGVjdGlvbiBzY2FubmVyIGFuZCBjb21waWxlciBwYXRocwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW3JldmlldyBvbiBvZS1jb3JlIG1haWxsaXN0XQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCA4ICstLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyYzBjZmJkLi5jZmNiM2JmIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xOTQsNyArMTk0LDcgQEAgUEtHX0NIRUNLX01PRFVMRVMoR0ksCi0gICAgIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAgPj0gaW50cm9zcGVjdGlvbl9yZXF1aXJlZF92ZXJzaW9uCi0gKQotIAotLUdJX0RBVEFESVI9JCgkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdpZGF0YWRpciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wKQotK0dJX0RBVEFESVI9JFBLR19DT05GSUdfU1lTUk9PVF9ESVIkKCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z2lkYXRhZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjApCi0gQUNfU1VCU1QoR0lfREFUQURJUikKLSAKLSBpZiB0ZXN0ICIkZW5hYmxlX2NhaXJvIiAhPSBubzsgdGhlbgotQEAgLTIxOSwxMiArMjE5LDYgQEAgQUNfQVJHX1dJVEgoY29tbW9uLAotICAgICB3aXRoX2NvbW1vbj15ZXMpCi0gQU1fQ09ORElUSU9OQUwoV0lUSF9DT01NT04sIHRlc3QgIiR3aXRoX2NvbW1vbiIgPSAieWVzIikKLSAKLS1JTlRST1NQRUNUSU9OX1NDQU5ORVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9zY2FubmVyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tSU5UUk9TUEVDVElPTl9DT01QSUxFUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX2NvbXBpbGVyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tCi0tQUNfU1VCU1QoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKQotLUFDX1NVQlNUKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpCi0tCi0gIyBjb21waWxlciB3YXJuaW5ncywgZXJyb3JzLCByZXF1aXJlZCBjZmxhZ3MsIGFuZCBjb2RlIGNvdmVyYWdlIHN1cHBvcnQKLSBHTk9NRV9DT01QSUxFX1dBUk5JTkdTKFttYXhpbXVtXSkKLSBBQ19NU0dfQ0hFQ0tJTkcoZm9yIEdub21lIGNvZGUgY292ZXJhZ2Ugc3VwcG9ydCkKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3RfMy4yNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3RfMy4yNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDEwYWYyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnb2JqZWN0XzMuMjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIEdPYmplY3QgYmluZGluZ3MiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdub21lYmFzZSBkaXN0dXRpbHMzLWJhc2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1ERVBFTkRTICs9ICJweXRob24zIGdsaWItMi4wIgotCi1TUkNOQU1FPSJweWdvYmplY3QiCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvJHtTUkNOQU1FfS8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9LyR7U1JDTkFNRX0tJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtYWRkLXN5c3Jvb3QtcGF0aC10by1HSV9EQVRBRElSLWRvbi10LXNlLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtRG9uLXQtdXNlLWdub21lLWNvbW1vbi1tYWNyb3MucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjlhODQzMzExZDBmMDM4NWRmZjM3NmUxMWEyZDgzZDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTYyOGE5NWFhMDkwOWUxM2ZiMDgyMzBiMWI5OGZjNDhhZGVmMTBiMjIwOTMyZjc2ZDYyZjY4MjFiM2ZkYmZmZCIKLQotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCi0KLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnRElTVFJPX0ZFQVRVUkVTJywgWyAnZGlyZWN0ZmInLCAnd2F5bGFuZCcsICd4MTEnIF0sICdjYWlybycsICcnLCBkKX0iCi0KLSMgcHl0aG9uMy1weWNhaXJvIGlzIGNoZWNrZWQgb24gY29uZmlndXJhdGlvbiAtPiBERVBFTkRTCi0jIHdlIGRvbid0IGxpbmsgYWdhaW5zdCBweXRob24zLXB5Y2Fpcm8gLT4gUkRFUEVORFMKLVBBQ0tBR0VDT05GSUdbY2Fpcm9dID0gIi0tZW5hYmxlLWNhaXJvLC0tZGlzYWJsZS1jYWlybyxjYWlybyBweXRob24zLXB5Y2Fpcm8sIHB5dGhvbjMtcHljYWlybyIKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtc2V0dXB0b29scyBweXRob24zLWltcG9ydGxpYiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdF8zLjI4LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdF8zLjI4LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTcyODZmNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnb2JqZWN0XzMuMjguMS5iYgpAQCAtMCwwICsxLDI5IEBACitTVU1NQVJZID0gIlB5dGhvbiBHT2JqZWN0IGJpbmRpbmdzIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzciCisKK2luaGVyaXQgZ25vbWViYXNlIGRpc3R1dGlsczMtYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK0RFUEVORFMgKz0gInB5dGhvbjMgZ2xpYi0yLjAiCisKK1NSQ05BTUU9InB5Z29iamVjdCIKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy8ke1NSQ05BTUV9LyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vJHtTUkNOQU1FfS0ke1BWfS50YXIueHogXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNjEyZTllMjg2M2QxMTdkODEwZTc4NjcyZjdiYzNhZDYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDIzMTJiNGE1MDE1NTcxZmEwYTRmMmQyMDEwMDVkYTQ2YjcxYzI1MWVhMjYyNWJjOTU3MDJkMDcxYzRmZjg5NSIKKworUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ0RJU1RST19GRUFUVVJFUycsIFsgJ2RpcmVjdGZiJywgJ3dheWxhbmQnLCAneDExJyBdLCAnY2Fpcm8nLCAnJywgZCl9IgorCisjIHB5dGhvbjMtcHljYWlybyBpcyBjaGVja2VkIG9uIGNvbmZpZ3VyYXRpb24gLT4gREVQRU5EUworIyB3ZSBkb24ndCBsaW5rIGFnYWluc3QgcHl0aG9uMy1weWNhaXJvIC0+IFJERVBFTkRTCitQQUNLQUdFQ09ORklHW2NhaXJvXSA9ICItLWVuYWJsZS1jYWlybywtLWRpc2FibGUtY2Fpcm8sY2Fpcm8gcHl0aG9uMy1weWNhaXJvLCBweXRob24zLXB5Y2Fpcm8iCisKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24zLXNldHVwdG9vbHMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzM2LjIuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29sc18zNi4yLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3YmNhOTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzM2LjIuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXNldHVwdG9vbHMuaW5jCi0KLURFUEVORFMgKz0gInB5dGhvbjMiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSArPSAicHl0aG9uMy1uYXRpdmUiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZXNkayArPSAibmF0aXZlc2RrLXB5dGhvbjMiCi0KLWluaGVyaXQgc2V0dXB0b29sczMKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgbXYgJHtEfSR7YmluZGlyfS9lYXN5X2luc3RhbGwgJHtEfSR7YmluZGlyfS9lYXN5M19pbnN0YWxsCi19Ci0KLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICJcCi0gIHB5dGhvbjMtZGlzdHV0aWxzIFwKLSAgcHl0aG9uMy1jb21wcmVzc2lvbiBcCi0iCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gIHB5dGhvbjMtY3R5cGVzIFwKLSAgcHl0aG9uMy1kaXN0dXRpbHMgXAotICBweXRob24zLWVtYWlsIFwKLSAgcHl0aG9uMy1pbXBvcnRsaWIgXAotICBweXRob24zLW51bWJlcnMgXAotICBweXRob24zLWNvbXByZXNzaW9uIFwKLSAgcHl0aG9uMy1zaGVsbCBcCi0gIHB5dGhvbjMtc3VicHJvY2VzcyBcCi0gIHB5dGhvbjMtdGV4dHV0aWxzIFwKLSAgcHl0aG9uMy1wa2d1dGlsIFwKLSAgcHl0aG9uMy10aHJlYWRpbmcgXAotICBweXRob24zLW1pc2MgXAotICBweXRob24zLXVuaXR0ZXN0IFwKLSAgcHl0aG9uMy14bWwgXAotIgotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzM5LjAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29sc18zOS4wLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRjMWVkOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29sc18zOS4wLjAuYmIKQEAgLTAsMCArMSw2IEBACityZXF1aXJlIHB5dGhvbi1zZXR1cHRvb2xzLmluYworaW5oZXJpdCBzZXR1cHRvb2xzMworCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBtdiAke0R9JHtiaW5kaXJ9L2Vhc3lfaW5zdGFsbCAke0R9JHtiaW5kaXJ9L2Vhc3kzX2luc3RhbGwKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2l4XzEuMTAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2l4XzEuMTAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzhhNDdiNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNpeF8xLjEwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXNpeC5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtaW8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNpeF8xLjExLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNpeF8xLjExLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc5NTMxMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2l4XzEuMTEuMC5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLXNpeC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc21tYXBfMC45LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNtbWFwXzAuOS4wLmJiCmluZGV4IDlmOGEyNmQuLmU4N2I4ZGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc21tYXBfMC45LjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zbW1hcF8wLjkuMC5iYgpAQCAtMSw1ICsxLDIgQEAKLXJlcXVpcmUgcHl0aG9uLXNtbWFwLmluYwotCiBpbmhlcml0IHNldHVwdG9vbHMzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24zLWNvZGVjcyBweXRob24zLW1tYXAgcHl0aG9uMy1sYW5nIgorcmVxdWlyZSBweXRob24tc21tYXAuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtY3Jvc3MtY29tcGlsZS1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLWNyb3NzLWNvbXBpbGUtc3VwcG9ydC5wYXRjaAppbmRleCAxMThkNzVkLi43Y2Q3ZTNiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtY3Jvc3MtY29tcGlsZS1zdXBwb3J0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1jcm9zcy1jb21waWxlLXN1cHBvcnQucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDYyNGMwMjlhYmNjNzNjNzI0MDIwY2NlYTlhMmI0YjViNWMwMGYyYTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGVjZGUzZWExNzA5OTlhOWVmNzM0ZThhZjRkN2MyNWJlNWJhODE2OTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMzEgTWFyIDIwMTcgMTU6NDI6NDYgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSF0gY3Jvc3MtY29tcGlsZSBzdXBwb3J0CkBAIC04LDYwICs4LDYzIEBACiAKIC1LaGVtCiAKK1JlYmFzZWQgb24gMy41LjQKKwogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW0NvbmZpZ3VyYXRpb24gU3BlY2lmaWNdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IERlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+CiAtLS0KICBNYWtlZmlsZS5wcmUuaW4gfCAxNCArKysrKysrKy0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZS5wcmUuaW4gYi9NYWtlZmlsZS5wcmUuaW4KLWluZGV4IGE4OGI3ZDUuLjdjYjhiYjMgMTAwNjQ0CitpbmRleCAxNDRjMWY4NjI5Li5mMjUyYWMyNDE3IDEwMDY0NAogLS0tIGEvTWFrZWZpbGUucHJlLmluCiArKysgYi9NYWtlZmlsZS5wcmUuaW4KLUBAIC0yMjEsNiArMjIxLDcgQEAgTElCT0JKUz0JQExJQk9CSlNACi0gCitAQCAtMjIzLDYgKzIyMyw3IEBAIExJQk9CSlM9CUBMSUJPQkpTQAorCiAgUFlUSE9OPQkJcHl0aG9uJChFWEUpCiAgQlVJTERQWVRIT049CXB5dGhvbiQoQlVJTERFWEUpCiArSE9TVFBZVEhPTj0gICAgJChCVUlMRFBZVEhPTikKLSAKLSBQWVRIT05fRk9SX0dFTj1AUFlUSE9OX0ZPUl9HRU5ACisKKyBQWVRIT05fRk9SX1JFR0VOPUBQWVRIT05fRk9SX1JFR0VOQAogIFBZVEhPTl9GT1JfQlVJTEQ9QFBZVEhPTl9GT1JfQlVJTERACi1AQCAtMjgwLDYgKzI4MSw3IEBAIExJQkZGSV9JTkNMVURFRElSPQlATElCRkZJX0lOQ0xVREVESVJACitAQCAtMjc3LDYgKzI3OCw3IEBAIExJQkZGSV9JTkNMVURFRElSPQlATElCRkZJX0lOQ0xVREVESVJACiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAjIFBhcnNlcgogIFBHRU49CQlQYXJzZXIvcGdlbiQoRVhFKQogK0hPU1RQR0VOPQkkKFBHRU4pJChFWEUpCi0gCisKICBQU1JDUz0JCVwKICAJCVBhcnNlci9hY2NlbGVyLmMgXAotQEAgLTUxMCw3ICs1MTIsNyBAQCBidWlsZF9hbGxfZ2VuZXJhdGVfcHJvZmlsZToKLSAKK0BAIC00NzgsNyArNDgwLDcgQEAgYnVpbGRfYWxsX2dlbmVyYXRlX3Byb2ZpbGU6CisKICBydW5fcHJvZmlsZV90YXNrOgogIAk6ICMgRklYTUU6IGNhbid0IHJ1biBmb3IgYSBjcm9zcyBidWlsZAogLQkkKExMVk1fUFJPRl9GSUxFKSAkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAkKFBST0ZJTEVfVEFTSykgfHwgdHJ1ZQogKwkkKExMVk1fUFJPRl9GSUxFKSAkKFJVTlNIQVJFRCkgJChIT1NUUFlUSE9OKSAkKFBST0ZJTEVfVEFTSykgfHwgdHJ1ZQotIAorCiAgYnVpbGRfYWxsX21lcmdlX3Byb2ZpbGU6CiAgCSQoTExWTV9QUk9GX01FUkdFUikKLUBAIC03ODcsNyArNzg5LDcgQEAgJChJT19PQkpTKTogJChJT19IKQotIAotICQoR1JBTU1BUl9IKTogQEdFTkVSQVRFRF9DT01NRU5UQCAkKEdSQU1NQVJfSU5QVVQpICQoUEdFTikKK0BAIC03NzIsNyArNzc0LDcgQEAgcmVnZW4tZ3JhbW1hcjogJChQR0VOKQorIAkjIFJlZ2VuZXJhdGUgSW5jbHVkZS9ncmFtaW5pdC5oIGFuZCBQeXRob24vZ3JhbWluaXQuYworIAkjIGZyb20gR3JhbW1hci9HcmFtbWFyIHVzaW5nIHBnZW4KICAJQCQoTUtESVJfUCkgSW5jbHVkZQotLQkkKFBHRU4pICQoR1JBTU1BUl9JTlBVVCkgJChHUkFNTUFSX0gpICQoR1JBTU1BUl9DKQotKwkkKEhPU1RQR0VOKSAkKEdSQU1NQVJfSU5QVVQpICQoR1JBTU1BUl9IKSAkKEdSQU1NQVJfQykKLSAkKEdSQU1NQVJfQyk6IEBHRU5FUkFURURfQ09NTUVOVEAgJChHUkFNTUFSX0gpCi0gCXRvdWNoICQoR1JBTU1BUl9DKQotIAotQEAgLTk3Niw3ICs5NzgsNyBAQCAkKExJQlJBUllfT0JKUykgJChNT0RPQkpTKSBQcm9ncmFtcy9weXRob24ubzogJChQWVRIT05fSEVBREVSUykKKy0JJChQR0VOKSAkKHNyY2RpcikvR3JhbW1hci9HcmFtbWFyIFwKKysJJChIT1NUUEdFTikgJChzcmNkaXIpL0dyYW1tYXIvR3JhbW1hciBcCisgCQkkKHNyY2RpcikvSW5jbHVkZS9ncmFtaW5pdC5oIFwKKyAJCSQoc3JjZGlyKS9QeXRob24vZ3JhbWluaXQuYworCitAQCAtOTc4LDcgKzk4MCw3IEBAICQoTElCUkFSWV9PQkpTKSAkKE1PRE9CSlMpIFByb2dyYW1zL3B5dGhvbi5vOiAkKFBZVEhPTl9IRUFERVJTKQogICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAKKwogIFRFU1RPUFRTPQkkKEVYVFJBVEVTVE9QVFMpCiAtVEVTVFBZVEhPTj0JJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgJChURVNUUFlUSE9OT1BUUykKICtURVNUUFlUSE9OPQkkKFJVTlNIQVJFRCkgJChIT1NUUFlUSE9OKSAkKFRFU1RQWVRIT05PUFRTKQogIFRFU1RSVU5ORVI9CSQoVEVTVFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5CiAgVEVTVFRJTUVPVVQ9CTM2MDAKLSAKLUBAIC0xNDY4LDcgKzE0NzAsNyBAQCBmcmFtZXdvcmtpbnN0YWxsc3RydWN0dXJlOgkkKExETElCUkFSWSkKKworQEAgLTE0NzAsNyArMTQ3Miw3IEBAIGZyYW1ld29ya2luc3RhbGxzdHJ1Y3R1cmU6CSQoTERMSUJSQVJZKQogIAkJZmk7IFwKICAJZG9uZQogIAkkKExOKSAtZnNuIGluY2x1ZGUvcHl0aG9uJChMRFZFUlNJT04pICQoREVTVERJUikkKHByZWZpeCkvSGVhZGVycwpAQCAtNzAsMjQgKzczLDI0IEBACiAgCSQoTE4pIC1mc24gJChWRVJTSU9OKSAkKERFU1RESVIpJChQWVRIT05GUkFNRVdPUktJTlNUQUxMRElSKS9WZXJzaW9ucy9DdXJyZW50CiAgCSQoTE4pIC1mc24gVmVyc2lvbnMvQ3VycmVudC8kKFBZVEhPTkZSQU1FV09SSykgJChERVNURElSKSQoUFlUSE9ORlJBTUVXT1JLSU5TVEFMTERJUikvJChQWVRIT05GUkFNRVdPUkspCiAgCSQoTE4pIC1mc24gVmVyc2lvbnMvQ3VycmVudC9IZWFkZXJzICQoREVTVERJUikkKFBZVEhPTkZSQU1FV09SS0lOU1RBTExESVIpL0hlYWRlcnMKLUBAIC0xNTM0LDcgKzE1MzYsNyBAQCBjb25maWcuc3RhdHVzOgkkKHNyY2RpcikvY29uZmlndXJlCi0gCitAQCAtMTU0Myw3ICsxNTQ1LDcgQEAgUHl0aG9uL2R0b2EubzogUHl0aG9uL2R0b2EuYworCiAgIyBSdW4gcmVpbmRlbnQgb24gdGhlIGxpYnJhcnkKICByZWluZGVudDoKIC0JLi8kKEJVSUxEUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9yZWluZGVudC5weSAtciAkKHNyY2RpcikvTGliCiArCSQoSE9TVFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcmVpbmRlbnQucHkgLXIgJChzcmNkaXIpL0xpYgotIAorCiAgIyBSZXJ1biBjb25maWd1cmUgd2l0aCB0aGUgc2FtZSBvcHRpb25zIGFzIGl0IHdhcyBydW4gbGFzdCB0aW1lLAogICMgcHJvdmlkZWQgdGhlIGNvbmZpZy5zdGF0dXMgc2NyaXB0IGV4aXN0cwotQEAgLTE2NzQsNyArMTY3Niw3IEBAIGZ1bm55OgotIAorQEAgLTE2NzgsNyArMTY4MCw3IEBAIGZ1bm55OgorCiAgIyBQZXJmb3JtIHNvbWUgdmVyaWZpY2F0aW9uIGNoZWNrcyBvbiBhbnkgbW9kaWZpZWQgZmlsZXMuCi0gcGF0Y2hjaGVjazogYWxsCisgcGF0Y2hjaGVjazogQERFRl9NQUtFX1JVTEVACiAtCSQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3BhdGNoY2hlY2sucHkKLSsJJChSVU5TSEFSRUQpIC4vJChIT1NUUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9wYXRjaGNoZWNrLnB5Ci0gCisrCSQoUlVOU0hBUkVEKSAkKEhPU1RQWVRIT04pICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3BhdGNoY2hlY2sucHkKKwogICMgRGVwZW5kZW5jaWVzCi0gCi0tLSAKKworLS0KIDIuMTEuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzA3MC1kb250LWNsZWFuLWlwa2ctaW5zdGFsbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDcwLWRvbnQtY2xlYW4taXBrZy1pbnN0YWxsLnBhdGNoCmluZGV4IDc4OTkyOWIuLmY5OTcxYzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDcwLWRvbnQtY2xlYW4taXBrZy1pbnN0YWxsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDcwLWRvbnQtY2xlYW4taXBrZy1pbnN0YWxsLnBhdGNoCkBAIC04LDkgKzgsMTEgQEAKICBNYWtlZmlsZS5wcmUuaW4gfCAgICA2ICsrKy0tLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKLS0tLSBhL01ha2VmaWxlLnByZS5pbgotKysrIGIvTWFrZWZpbGUucHJlLmluCi1AQCAtMTMwNiw4ICsxMzA2LDggQEAgdG91Y2g6CitJbmRleDogUHl0aG9uLTMuNS4zL01ha2VmaWxlLnByZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFB5dGhvbi0zLjUuMy5vcmlnL01ha2VmaWxlLnByZS5pbgorKysrIFB5dGhvbi0zLjUuMy9NYWtlZmlsZS5wcmUuaW4KK0BAIC0xNTc0LDggKzE1NzQsOCBAQCB0b3VjaDoKICAjIFNhbml0YXRpb24gdGFyZ2V0cyAtLSBjbGVhbiBsZWF2ZXMgbGlicmFyaWVzLCBleGVjdXRhYmxlcyBhbmQgdGFncwogICMgZmlsZXMsIHdoaWNoIGNsb2JiZXIgcmVtb3ZlcyBhcyB3ZWxsCiAgcHljcmVtb3ZhbDoKQEAgLTIxLDcgKzIzLDcgQEAKICAKICBybXRlc3R0dXJkczoKICAJLXJtIC1mICpCQUQgKkdPT0QgKlNLSVBQRUQKLUBAIC0xMzIxLDkgKzEzMjEsOSBAQCBkb2NjbGVhbjoKK0BAIC0xNTg5LDkgKzE1ODksOSBAQCBkb2NjbGVhbjoKICAJLXJtIC1yZiBEb2MvdG9vbHMvc3BoaW54IERvYy90b29scy9weWdtZW50cyBEb2MvdG9vbHMvZG9jdXRpbHMKICAKICBjbGVhbjogcHljcmVtb3ZhbApAQCAtMzIsNSArMzQsNSBAQAogKwlmaW5kIC4gISAtcGF0aCAnLi9pcGtnLWluc3RhbGwvKicgLW5hbWUgJyouc1tvbF0nIC1leGVjIHJtIC1mIHt9ICc7JwogKwlmaW5kIC4gISAtcGF0aCAnLi9pcGtnLWluc3RhbGwvKicgLW5hbWUgJyouc28uWzAtOV0qLlswLTldKicgLWV4ZWMgcm0gLWYge30gJzsnCiAgCWZpbmQgYnVpbGQgLW5hbWUgJ2ZmaWNvbmZpZy5oJyAtZXhlYyBybSAtZiB7fSAnOycgfHwgdHJ1ZQotIAlmaW5kIGJ1aWxkIC1uYW1lICdmZmljb25maWcucHknIC1leGVjIHJtIC1mIHt9ICc7JyB8fCB0cnVlCi0gCS1ybSAtZiBMaWIvbGliMnRvMy8qR3JhbW1hcioucGlja2xlCisgCWZpbmQgYnVpbGQgLW5hbWUgJyoucHknIC1leGVjIHJtIC1mIHt9ICc7JyB8fCB0cnVlCisgCWZpbmQgYnVpbGQgLW5hbWUgJyoucHlbY29dJyAtZXhlYyBybSAtZiB7fSAnOycgfHwgdHJ1ZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9GaXgtMjk1MTktd2Vha3JlZi1zcGV3aW5nLWV4Y2VwdGlvbnMtZHVyaW5nLWludGVycC1mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9GaXgtMjk1MTktd2Vha3JlZi1zcGV3aW5nLWV4Y2VwdGlvbnMtZHVyaW5nLWludGVycC1mLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjE3YzZlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvRml4LTI5NTE5LXdlYWtyZWYtc3Bld2luZy1leGNlcHRpb25zLWR1cmluZy1pbnRlcnAtZi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLUZyb20gNjJkY2YzNDk4N2I2ODBlOTU4NzNlYjk0N2IzZjRkODAyMTk5YzY2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT89QzU9ODF1a2Fzej0yMExhbmdhPz0gPGx1a2FzekBsYW5nYS5wbD4KLURhdGU6IEZyaSwgMTAgRmViIDIwMTcgMDA6MTQ6NTUgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4ICMyOTUxOTogd2Vha3JlZiBzcGV3aW5nIGV4Y2VwdGlvbnMgZHVyaW5nIGludGVycAotIGZpbmFsaXphdGlvbgotCi1jb21taXQgOWNkN2UxNzY0MGE0OTYzNWQxYzFmOGMyOTg5NTc4YThmYzJjMWRlNgotZnJvbSBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBMdWthc3ogTGFuZ2EgPGx1a2FzekBsYW5nYS5wbD4KLS0tLQotIExpYi93ZWFrcmVmLnB5IHwgNCArKy0tCi0gTWlzYy9ORVdTICAgICAgfCAzICsrKwotIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTGliL3dlYWtyZWYucHkgYi9MaWIvd2Vha3JlZi5weQotaW5kZXggYWFlYmQwYy4uNzg3ZTMzYSAxMDA2NDQKLS0tLSBhL0xpYi93ZWFrcmVmLnB5Ci0rKysgYi9MaWIvd2Vha3JlZi5weQotQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGFzcyBXZWFrVmFsdWVEaWN0aW9uYXJ5KGNvbGxlY3Rpb25zLk11dGFibGVNYXBwaW5nKToKLSAgICAgICAgIHNlbGYsICphcmdzID0gYXJncwotICAgICAgICAgaWYgbGVuKGFyZ3MpID4gMToKLSAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2V4cGVjdGVkIGF0IG1vc3QgMSBhcmd1bWVudHMsIGdvdCAlZCcgJSBsZW4oYXJncykpCi0tICAgICAgICBkZWYgcmVtb3ZlKHdyLCBzZWxmcmVmPXJlZihzZWxmKSk6Ci0rICAgICAgICBkZWYgcmVtb3ZlKHdyLCBzZWxmcmVmPXJlZihzZWxmKSwgX2F0b21pY19yZW1vdmFsPV9yZW1vdmVfZGVhZF93ZWFrcmVmKToKLSAgICAgICAgICAgICBzZWxmID0gc2VsZnJlZigpCi0gICAgICAgICAgICAgaWYgc2VsZiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgaWYgc2VsZi5faXRlcmF0aW5nOgotQEAgLTExNCw3ICsxMTQsNyBAQCBjbGFzcyBXZWFrVmFsdWVEaWN0aW9uYXJ5KGNvbGxlY3Rpb25zLk11dGFibGVNYXBwaW5nKToKLSAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICMgQXRvbWljIHJlbW92YWwgaXMgbmVjZXNzYXJ5IHNpbmNlIHRoaXMgZnVuY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICMgY2FuIGJlIGNhbGxlZCBhc3luY2hyb25vdXNseSBieSB0aGUgR0MKLS0gICAgICAgICAgICAgICAgICAgIF9yZW1vdmVfZGVhZF93ZWFrcmVmKGQsIHdyLmtleSkKLSsgICAgICAgICAgICAgICAgICAgIF9hdG9taWNfcmVtb3ZhbChkLCB3ci5rZXkpCi0gICAgICAgICBzZWxmLl9yZW1vdmUgPSByZW1vdmUKLSAgICAgICAgICMgQSBsaXN0IG9mIGtleXMgdG8gYmUgcmVtb3ZlZAotICAgICAgICAgc2VsZi5fcGVuZGluZ19yZW1vdmFscyA9IFtdCi1kaWZmIC0tZ2l0IGEvTWlzYy9ORVdTIGIvTWlzYy9ORVdTCi1pbmRleCA0MWNmZGJhLi42ZDg5ZjUyIDEwMDY0NAotLS0tIGEvTWlzYy9ORVdTCi0rKysgYi9NaXNjL05FV1MKLUBAIC01NzE5LDYgKzU3MTksOSBAQCBDb3JlIGFuZCBCdWlsdGlucwotIExpYnJhcnkKLSAtLS0tLS0tCi0gCi0rLSBJc3N1ZSAjMjk1MTk6IEZpeCB3ZWFrcmVmIHNwZXdpbmcgZXhjZXB0aW9ucyBkdXJpbmcgaW50ZXJwcmV0ZXIgc2h1dGRvd24KLSsgIHdoZW4gdXNlZCB3aXRoIGEgcmFyZSBjb21iaW5hdGlvbiBvZiBtdWx0aXByb2Nlc3NpbmcgYW5kIGN1c3RvbSBjb2RlY3MuCi0rCi0gLSBJc3N1ZSAjMjAxNTQ6IERlYWRsb2NrIGluIGFzeW5jaW8uU3RyZWFtUmVhZGVyLnJlYWRleGFjdGx5KCkuCi0gCi0gLSBJc3N1ZSAjMTYxMTM6IFJlbW92ZSBzaGEzIG1vZHVsZSBhZ2Fpbi4KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaAppbmRleCAzMzQ3MzIxLi5hM2NjNDhjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaApAQCAtNywxMyArNywxNiBAQAogQWxzbyBzaW1wbHkgZGlzYWJsZSB0aGUgdGsgbW9kdWxlIHNpbmNlIGl0cyBub3QgaW4gREVQRU5EUy4KIFNpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KIAotSW5kZXg6IFB5dGhvbi0yLjcuMi9zZXR1cC5weQorSW5kZXg6IFB5dGhvbi0zLjUuMy9zZXR1cC5weQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMi5vcmlnL3NldHVwLnB5CTIwMTItMDQtMDUgMjM6MTg6MzguNTAwMTM2NjQ3ICswMzAwCi0rKysgUHl0aG9uLTIuNy4yL3NldHVwLnB5CTIwMTItMDQtMDUgMjM6MTk6MzUuODg4MTM0OTY5ICswMzAwCi1AQCAtMTYzNCw4ICsxNjM0LDEwIEBACistLS0gUHl0aG9uLTMuNS4zLm9yaWcvc2V0dXAucHkKKysrKyBQeXRob24tMy41LjMvc2V0dXAucHkKK0BAIC0xNTU4LDEwICsxNTU4LDEyIEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKKyAgICAgICAgIHNlbGYuZXh0ZW5zaW9ucy5leHRlbmQoZXh0cykKKyAKICAgICAgICAgICMgQ2FsbCB0aGUgbWV0aG9kIGZvciBkZXRlY3Rpbmcgd2hldGhlciBfdGtpbnRlciBjYW4gYmUgY29tcGlsZWQKLSAgICAgICAgIHNlbGYuZGV0ZWN0X3RraW50ZXIoaW5jX2RpcnMsIGxpYl9kaXJzKQorLSAgICAgICAgc2VsZi5kZXRlY3RfdGtpbnRlcihpbmNfZGlycywgbGliX2RpcnMpCisrICAgICAgICAjIHNlbGYuZGV0ZWN0X3RraW50ZXIoaW5jX2RpcnMsIGxpYl9kaXJzKQogIAogLSAgICAgICAgaWYgJ190a2ludGVyJyBub3QgaW4gW2UubmFtZSBmb3IgZSBpbiBzZWxmLmV4dGVuc2lvbnNdOgogLSAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfdGtpbnRlcicpCkBAIC0yMiwxOCArMjUsNSBAQAogKyAgICAgICAgI2lmICdfdGtpbnRlcicgbm90IGluIFtlLm5hbWUgZm9yIGUgaW4gc2VsZi5leHRlbnNpb25zXToKICsgICAgICAgICMgICAgbWlzc2luZy5hcHBlbmQoJ190a2ludGVyJykKICAKLSAgICAgICAgIHJldHVybiBtaXNzaW5nCi0gCi1kaWZmIC0tZ2l0IFB5dGhvbi0zLjUuMS5vcmlnL3NldHVwLnB5IFB5dGhvbi0zLjUuMS9zZXR1cC5weQotaW5kZXggYjQ2MzNiOS4uZDc1ODhjMCAxMDA2NDQKLS0tLSBQeXRob24tMy41LjEub3JpZy9zZXR1cC5weQotKysrIFB5dGhvbi0zLjUuMS9zZXR1cC5weQotQEAgLTE1MzYsNyArMTUzNiw3IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgIHNlbGYuZXh0ZW5zaW9ucy5leHRlbmQoZXh0cykKLSAKLSAgICAgICAgICMgQ2FsbCB0aGUgbWV0aG9kIGZvciBkZXRlY3Rpbmcgd2hldGhlciBfdGtpbnRlciBjYW4gYmUgY29tcGlsZWQKLS0gICAgICAgIHNlbGYuZGV0ZWN0X3RraW50ZXIoaW5jX2RpcnMsIGxpYl9kaXJzKQotKyAgICAgICAgIyBzZWxmLmRldGVjdF90a2ludGVyKGluY19kaXJzLCBsaWJfZGlycykKLSAKLSAgICAgICAgICMgdGtpbnRlciBtb2R1bGUgd2lsbCBub3QgYmUgYXZhbGFpYmxlIGFzIHlvY3RvCi0gICAgICAgICAjIGRvZXNuJ3QgaGF2ZSB0ayBpbnRlZ3JhdGVkICh5ZXQpCisgIyMgICAgICAgICAjIFVuY29tbWVudCB0aGVzZSBsaW5lcyBpZiB5b3Ugd2FudCB0byBwbGF5IHdpdGggeHhtb2R1bGUuYworICMjICAgICAgICAgZXh0ID0gRXh0ZW5zaW9uKCd4eCcsIFsneHhtb2R1bGUuYyddKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9jcmVhdGVfbWFuaWZlc3QzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9jcmVhdGVfbWFuaWZlc3QzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmOTQ0ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2NyZWF0ZV9tYW5pZmVzdDMucHkKQEAgLTAsMCArMSwzNTQgQEAKKyMgVGhpcyBzY3JpcHQgaXMgdXNlZCBhcyBhIGJpdGJha2UgdGFzayB0byBjcmVhdGUgYSBuZXcgcHl0aG9uIG1hbmlmZXN0CisjICQgYml0YmFrZSBweXRob24gLWMgY3JlYXRlX21hbmlmZXN0CisjCisjIE91ciBnb2FsIGlzIHRvIGtlZXAgcHl0aG9uLWNvcmUgYXMgc21hbGwgYXMgcG9zaWJsZSBhbmQgYWRkIG90aGVyIHB5dGhvbgorIyBwYWNrYWdlcyBvbmx5IHdoZW4gdGhlIHVzZXIgbmVlZHMgdGhlbSwgaGVuY2Ugd2h5IHdlIHNwbGl0IHVwc3RyZWFtIHB5dGhvbgorIyBpbnRvIHNldmVyYWwgcGFja2FnZXMuCisjCisjIEluIGEgdmVyeSBzaW1wbGlzdGljIHdheSB3aGF0IHRoaXMgZG9lcyBpczogCisjIExhdW5jaCBweXRob24gYW5kIHNlZSBzcGVjaWZpY2FsbHkgd2hhdCBpcyByZXF1aXJlZCBmb3IgaXQgdG8gcnVuIGF0IGEgbWluaW11bQorIworIyBHbyB0aHJvdWdoIHRoZSBweXRob24tbWFuaWZlc3QgZmlsZSBhbmQgbGF1bmNoIGEgc2VwYXJhdGUgdGFzayBmb3IgZXZlcnkgc2luZ2xlCisjIG9uZSBvZiB0aGUgZmlsZXMgb24gZWFjaCBwYWNrYWdlLCB0aGlzIHRhc2sgd2lsbCBjaGVjayB3aGF0IHdhcyByZXF1aXJlZCBmb3IgdGhhdAorIyBzcGVjaWZpYyBtb2R1bGUgdG8gcnVuLCB0aGVzZSBtb2R1bGVzIHdpbGwgYmUgY2FsbGVkIGRlcGVuZGVuY2llcy4KKyMgVGhlIG91dHB1dCBvZiBzdWNoIHRhc2sgd2lsbCBiZSBhIGxpc3Qgb2YgdGhlIG1vZHVsZXMgb3IgZGVwZW5kZW5jaWVzIHRoYXQgd2VyZQorIyBmb3VuZCBmb3IgdGhhdCBmaWxlLgorIworIyBTdWNoIG91dHB1dCB3aWxsIGJlIHBhcnNlZCBieSB0aGlzIHNjcmlwdCwgd2Ugd2lsbCBsb29rIGZvciBlYWNoIGRlcGVuZGVuY3kgb24gdGhlCisjIG1hbmlmZXN0IGFuZCBpZiB3ZSBmaW5kIHRoYXQgYW5vdGhlciBwYWNrYWdlIGFscmVhZHkgaW5jbHVkZXMgaXQsIHRoZW4gd2Ugd2lsbCBhZGQKKyMgdGhhdCBwYWNrYWdlIGFzIGFuIFJERVBFTkRTIHRvIHRoZSBwYWNrYWdlIHdlIGFyZSBjdXJyZW50bHkgY2hlY2tpbmc7IGluIGNhc2Ugd2UgZG9udAorIyBmaW5kIHRoZSBjdXJyZW50IGRlcGVuZGVuY3kgb24gYW55IG90aGVyIHBhY2thZ2Ugd2Ugd2lsbCBhZGQgaXQgdG8gdGhlIGN1cnJlbnQgcGFja2FnZQorIyBhcyBwYXJ0IG9mIEZJTEVTLgorIworIworIyBUaGlzIHdheSB3ZSB3aWxsIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdCBmcm9tIHRoZSBkYXRhIHN0cnVjdHVyZSB0aGF0IHdhcyBidWlsdCBkdXJpbmcKKyMgdGhpcyBwcm9jZXNzLCBvbnQgdGhpcyBuZXcgbWFuaWZlc3QgZWFjaCBwYWNrYWdlIHdpbGwgY29udGFpbiBzcGVjaWZpY2FsbHkgb25seQorIyB3aGF0IGl0IG5lZWRzIHRvIHJ1bi4KKyMKKyMgVGhlcmUgYXJlIHNvbWUgY2F2ZWF0cyB3aGljaCB3ZSB0cnkgdG8gZGVhbCB3aXRoLCBzdWNoIGFzIHJlcGVhdGVkIGZpbGVzIG9uIGRpZmZlcmVudAorIyBwYWNrYWdlcywgcGFja2FnZXMgdGhhdCBpbmNsdWRlIGZvbGRlcnMsIHdpbGRjYXJkcywgYW5kIHNwZWNpYWwgcGFja2FnZXMuCisjIEl0cyBhbHNvIGltcG9ydGFudCB0byBub3RlIHRoYXQgdGhpcyBtZXRob2Qgb25seSB3b3JrcyBmb3IgcHl0aG9uIGZpbGVzLCBhbmQgc2hhcmVkCisjIGxpYnJhcmllcy4gU3RhdGljIGxpYnJhcmllcywgaGVhZGVyIGZpbGVzIGFuZCBiaW5hcmllcyBuZWVkIHRvIGJlIGRlYWx0IHdpdGggbWFudWFsbHkuCisjCisjIFRoaXMgc2NyaXB0IGRpZmZlcnMgZnJvbSBpdHMgcHl0aG9uMiB2ZXJzaW9uIG1vc3RseSBvbiBob3cgc2hhcmVkIGxpYnJhcmllcyBhcmUgaGFuZGxlZAorIyBUaGUgbWFuaWZlc3QgZmlsZSBmb3IgcHl0aG9uMyBoYXMgYW4gZXh0cmEgZmllbGQgd2hpY2ggY29udGFpbnMgdGhlIGNhY2hlZCBmaWxlcyBmb3IKKyMgZWFjaCBwYWNrYWdlLgorIyBUaGEgbWV0aG9kIHRvIGhhbmRsZSBjYWNoZWQgZmlsZXMgZG9lcyBub3Qgd29yayB3aGVuIGEgbW9kdWxlIGluY2x1ZGVzIGEgZm9sZGVyIHdoaWNoCisjIGl0c2VsZiBjb250YWlucyB0aGUgcHljYWNoZSBmb2xkZXIsIGdsYWRseSB0aGlzIGlzIGFsbW9zdCBuZXZlciB0aGUgY2FzZS4KKyMKKyMgQXV0aG9yOiBBbGVqYW5kcm8gRW5lZGlubyBIZXJuYW5kZXogU2FtYW5pZWdvICJhZWhzMjkiIDxhZWhzMjlAZ21haWwuY29tPgorCisKK2ltcG9ydCBzeXMKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQganNvbgoraW1wb3J0IG9zCisKKyMgSGFjayB0byBnZXQgbmF0aXZlIHB5dGhvbiBzZWFyY2ggcGF0aCAoZm9yIGZvbGRlcnMpLCBub3QgZm9uZCBvZiBpdCBidXQgaXQgd29ya3MgZm9yIG5vdworcGl2b3Q9J3JlY2lwZS1zeXNyb290LW5hdGl2ZScKK2ZvciBwIGluIHN5cy5wYXRoOgorICBpZiBwaXZvdCBpbiBwOgorICAgIG5hdGl2ZWxpYmZvbGRlcj1wWzpwLmZpbmQocGl2b3QpK2xlbihwaXZvdCldCisKKyMgRW1wdHkgZGljdCB0byBob2xkIHRoZSB3aG9sZSBtYW5pZmVzdAorbmV3X21hbmlmZXN0ID0ge30KKworIyBDaGVjayBmb3IgcmVwZWF0ZWQgZmlsZXMsIGZvbGRlcnMgYW5kIHdpbGRjYXJkcworYWxsZmlsZXM9W10KK3JlcGVhdGVkPVtdCit3aWxkY2FyZHM9W10KKworaGFzZm9sZGVycz1bXQorYWxsZm9sZGVycz1bXQorCitkZWYgaXNGb2xkZXIodmFsdWUpOgorICBpZiBvcy5wYXRoLmlzZGlyKHZhbHVlLnJlcGxhY2UoJyR7bGliZGlyfScsbmF0aXZlbGliZm9sZGVyKycvdXNyL2xpYicpKSBvciBvcy5wYXRoLmlzZGlyKHZhbHVlLnJlcGxhY2UoJyR7bGliZGlyfScsbmF0aXZlbGliZm9sZGVyKycvdXNyL2xpYjY0JykpIG9yIG9zLnBhdGguaXNkaXIodmFsdWUucmVwbGFjZSgnJHtsaWJkaXJ9JyxuYXRpdmVsaWJmb2xkZXIrJy91c3IvbGliMzInKSk6CisgICAgcmV0dXJuIFRydWUKKyAgZWxzZToKKyAgICByZXR1cm4gRmFsc2UKKworZGVmIGlzQ2FjaGVkKGl0ZW0pOgorICBpZiAnX19weWNhY2hlX18nIGluIGl0ZW06CisgICAgcmV0dXJuIFRydWUKKyAgZWxzZToKKyAgICByZXR1cm4gRmFsc2UKKworIyBSZWFkIGV4aXN0aW5nIEpTT04gbWFuaWZlc3QKK3dpdGggb3BlbigncHl0aG9uMy1tYW5pZmVzdC5qc29uJykgYXMgbWFuaWZlc3Q6CisgIG9sZF9tYW5pZmVzdD1qc29uLmxvYWQobWFuaWZlc3QpCisKKworIyBGaXJzdCBwYXNzIHRvIGdldCBjb3JlLXBhY2thZ2UgZnVuY3Rpb25hbGl0eSwgYmVjYXVzZSB3ZSBiYXNlIGV2ZXJ5dGhpbmcgb24gdGhlIGZhY3QgdGhhdCBjb3JlIGlzIGFjdHVhbGx5IHdvcmtpbmcKKyMgTm90IGV4YWN0bHkgdGhlIHNhbWUgc28gaXQgc2hvdWxkIG5vdCBiZSBhIGZ1bmN0aW9uCitwcmludCAoJ0dldHRpbmcgZGVwZW5kZW5jaWVzIGZvciBwYWNrYWdlOiBjb3JlJykKKworIyBTcGVjaWFsIGNhbGwgdG8gY2hlY2sgZm9yIGNvcmUgcGFja2FnZQorb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW3N5cy5leGVjdXRhYmxlLCAnZ2V0X21vZHVsZV9kZXBzMy5weScsICdweXRob24tY29yZS1wYWNrYWdlJ10pLmRlY29kZSgndXRmOCcpCitmb3IgaXRlbSBpbiBvdXRwdXQuc3BsaXQoKToKKyAgICAjIFdlIGFwcGVuZCBpdCBzbyBpdCBkb2VzbnQgaHVydCB3aGF0IHdlIGN1cnJlbnRseSBoYXZlOgorICAgIGlmIGlzQ2FjaGVkKGl0ZW0pOgorICAgICAgICBpZiBpdGVtIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnY2FjaGVkJ106CisgICAgICAgICAgICAjIFdlIHVzZSB0aGUgc2FtZSBkYXRhIHN0cnVjdHVyZSBzaW5jZSBpdHMgdGhlIG9uZSB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sKKyAgICAgICAgICAgICMgZGVwZW5kZW5jaWVzIGZvciBvdGhlciBwYWNrYWdlcworICAgICAgICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2NhY2hlZCddLmFwcGVuZChpdGVtKQorICAgIGVsc2U6CisgICAgICAgIGlmIGl0ZW0gbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgorICAgICAgICAgICAgIyBXZSB1c2UgdGhlIHNhbWUgZGF0YSBzdHJ1Y3R1cmUgc2luY2UgaXRzIHRoZSBvbmUgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNoZWNrCisgICAgICAgICAgICAjIGRlcGVuZGVuY2llcyBmb3Igb3RoZXIgcGFja2FnZXMKKyAgICAgICAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddLmFwcGVuZChpdGVtKQorCitmb3IgdmFsdWUgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICMgSWdub3JlIGZvbGRlcnMsIHNpbmNlIHdlIGRvbid0IGltcG9ydCB0aG9zZSwgZGlmZmljdWx0IHRvIGhhbmRsZSBtdWx0aWxpYgorICBpZiBpc0ZvbGRlcih2YWx1ZSk6CisgICAgIyBQYXNzIGl0IGRpcmVjdGx5CisgICAgaWYgaXNDYWNoZWQodmFsdWUpOgorICAgICAgICBpZiB2YWx1ZSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2NhY2hlZCddOgorICAgICAgICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2NhY2hlZCddLmFwcGVuZCh2YWx1ZSkKKyAgICBlbHNlOgorICAgICAgICBpZiB2YWx1ZSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICAgICAgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCisgICAgY29udGludWUKKyAgIyBJZ25vcmUgYmluYXJpZXMsIHNpbmNlIHdlIGRvbid0IGltcG9ydCB0aG9zZSwgYXNzdW1lIGl0IHdhcyBhZGRlZCBjb3JyZWN0bHkgKG1hbnVhbGx5KQorICBpZiAnJHtiaW5kaXJ9JyBpbiB2YWx1ZToKKyAgICAjIFBhc3MgaXQgZGlyZWN0bHkKKyAgICBpZiB2YWx1ZSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCisgICAgY29udGludWUKKyAgIyBJZ25vcmUgZW1wdHkgdmFsdWVzCisgIGlmIHZhbHVlID09ICcnOgorICAgIGNvbnRpbnVlCisgIGlmICcke2luY2x1ZGVkaXJ9JyBpbiB2YWx1ZToKKyAgICBpZiB2YWx1ZSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCisgICAgY29udGludWUKKyAgIyBHZXQgbW9kdWxlIG5hbWUgLCBzaG91bGRudCBiZSBhZmZlY3RlZCBieSBsaWJkaXIvYmluZGlyCisgIHZhbHVlID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKG9zLnBhdGgubm9ybXBhdGgodmFsdWUpKSlbMF0KKworICAjIExhdW5jaCBzZXBhcmF0ZSB0YXNrIGZvciBlYWNoIG1vZHVsZSBmb3IgZGV0ZXJtaW5pc3RpYyBiZWhhdmlvcgorICAjIEVhY2ggbW9kdWxlIHdpbGwgb25seSBpbXBvcnQgd2hhdCBpcyBuZWNlc3NhcnkgZm9yIGl0IHRvIHdvcmsgaW4gc3BlY2lmaWMKKyAgcHJpbnQgKCdHZXR0aW5nIGRlcGVuZGVuY2llcyBmb3IgbW9kdWxlOiAlcycgJSB2YWx1ZSkKKyAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW3N5cy5leGVjdXRhYmxlLCAnZ2V0X21vZHVsZV9kZXBzMy5weScsICclcycgJSB2YWx1ZV0pLmRlY29kZSgndXRmOCcpCisgIHByaW50ICgnVGhlIGZvbGxvd2luZyBkZXBlbmRlbmNpZXMgd2VyZSBmb3VuZCBmb3IgbW9kdWxlICVzOlxuJyAlIHZhbHVlKQorICBwcmludCAob3V0cHV0KQorICBmb3IgaXRlbSBpbiBvdXRwdXQuc3BsaXQoKToKKyAgICAjIFdlIGFwcGVuZCBpdCBzbyBpdCBkb2VzbnQgaHVydCB3aGF0IHdlIGN1cnJlbnRseSBoYXZlOgorICAgIGlmIGlzQ2FjaGVkKGl0ZW0pOgorICAgICAgICBpZiBpdGVtIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnY2FjaGVkJ106CisgICAgICAgICAgICAjIFdlIHVzZSB0aGUgc2FtZSBkYXRhIHN0cnVjdHVyZSBzaW5jZSBpdHMgdGhlIG9uZSB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sKKyAgICAgICAgICAgICMgZGVwZW5kZW5jaWVzIGZvciBvdGhlciBwYWNrYWdlcworICAgICAgICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2NhY2hlZCddLmFwcGVuZChpdGVtKQorICAgIGVsc2U6CisgICAgICAgIGlmIGl0ZW0gbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgorICAgICAgICAgICAgIyBXZSB1c2UgdGhlIHNhbWUgZGF0YSBzdHJ1Y3R1cmUgc2luY2UgaXRzIHRoZSBvbmUgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNoZWNrCisgICAgICAgICAgICAjIGRlcGVuZGVuY2llcyBmb3Igb3RoZXIgcGFja2FnZXMKKyAgICAgICAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddLmFwcGVuZChpdGVtKQorCisKKyMgV2UgY2hlY2sgd2hpY2ggcGFja2FnZXMgaW5jbHVkZSBmb2xkZXJzCitmb3Iga2V5IGluIG9sZF9tYW5pZmVzdDoKKyAgICBmb3IgdmFsdWUgaW4gb2xkX21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106CisgICAgICAgICMgSWdub3JlIGZvbGRlcnMsIHNpbmNlIHdlIGRvbid0IGltcG9ydCB0aG9zZSwgZGlmZmljdWx0IHRvIGhhbmRsZSBtdWx0aWxpYgorICAgICAgICBpZiBpc0ZvbGRlcih2YWx1ZSk6CisgICAgICAgICAgICBwcmludCAoJyVzIGlzIGEgZm9sZGVyJyAlIHZhbHVlKQorICAgICAgICAgICAgaWYga2V5IG5vdCBpbiBoYXNmb2xkZXJzOgorICAgICAgICAgICAgICAgIGhhc2ZvbGRlcnMuYXBwZW5kKGtleSkKKyAgICAgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBhbGxmb2xkZXJzOgorICAgICAgICAgICAgICAgIGFsbGZvbGRlcnMuYXBwZW5kKHZhbHVlKQorCitmb3Iga2V5IGluIG9sZF9tYW5pZmVzdDoKKyAgICAjIFVzZSBhbiBlbXB0eSBkaWN0IGFzIGRhdGEgc3RydWN0dXJlIHRvIGhvbGQgZGF0YSBmb3IgZWFjaCBwYWNrYWdlIGFuZCBmaWxsIGl0IHVwCisgICAgbmV3X21hbmlmZXN0W2tleV09e30KKyAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXT1bXQorICAgIAorICAgIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddPVtdCisgICAgIyBBbGwgcGFja2FnZXMgc2hvdWxkIGRlcGVuZCBvbiBjb3JlCisgICAgaWYga2V5ICE9ICdjb3JlJzoKKyAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddLmFwcGVuZCgnY29yZScpCisgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnY2FjaGVkJ109W10KKyAgICBlbHNlOgorICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2NhY2hlZCddPW9sZF9tYW5pZmVzdFtrZXldWydjYWNoZWQnXQorICAgIG5ld19tYW5pZmVzdFtrZXldWydzdW1tYXJ5J109b2xkX21hbmlmZXN0W2tleV1bJ3N1bW1hcnknXQorCisgICAgIyBIYW5kbGUgc3BlY2lhbCBjYXNlcywgd2UgYXNzdW1lIHRoYXQgd2hlbiB0aGV5IHdlcmUgbWFudWFsbHkgYWRkZWQgCisgICAgIyB0byB0aGUgbWFuaWZlc3Qgd2Uga25ldyB3aGF0IHdlIHdlcmUgZG9pbmcuCisgICAgcHJpbnQoJ1xuJykKKyAgICBwcmludCgnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nKQorICAgIHByaW50ICgnSGFuZGxpbmcgcGFja2FnZSAlcycgJSBrZXkpCisgICAgcHJpbnQoJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJykKKyAgICBzcGVjaWFsX3BhY2thZ2VzPVsnbWlzYycsICdtb2R1bGVzJywgJ2RldiddCisgICAgaWYga2V5IGluIHNwZWNpYWxfcGFja2FnZXMgb3IgJ3N0YXRpY2RldicgaW4ga2V5OgorICAgICAgICBwcmludCgnUGFzc2luZyAlcyBwYWNrYWdlIGRpcmVjdGx5JyAlIGtleSkKKyAgICAgICAgbmV3X21hbmlmZXN0W2tleV09b2xkX21hbmlmZXN0W2tleV0KKyAgICAgICAgY29udGludWUKKworICAgIGZvciB2YWx1ZSBpbiBvbGRfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKKyAgICAgICAgIyBXZSBhbHJlYWR5IGhhbmRsZWQgY29yZSBvbiB0aGUgZmlyc3QgcGFzcworICAgICAgICBpZiBrZXkgPT0gJ2NvcmUnOgorICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgIyBJZ25vcmUgZm9sZGVycywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlLCBkaWZmaWN1bHQgdG8gaGFuZGxlIG11bHRpbGliCisgICAgICAgIGlmIGlzRm9sZGVyKHZhbHVlKToKKyAgICAgICAgICAgICMgUGFzcyBmb2xkZXJzIGRpcmVjdGx5CisgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCisgICAgICAgICMgSWdub3JlIGJpbmFyaWVzLCBzaW5jZSB3ZSBkb24ndCBpbXBvcnQgdGhvc2UKKyAgICAgICAgaWYgJyR7YmluZGlyfScgaW4gdmFsdWU6CisgICAgICAgICAgICAjIFBhc3MgaXQgZGlyZWN0bHkgdG8gdGhlIG5ldyBtYW5pZmVzdCBkYXRhIHN0cnVjdHVyZQorICAgICAgICAgICAgaWYgdmFsdWUgbm90IGluIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddOgorICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLmFwcGVuZCh2YWx1ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICMgSWdub3JlIGVtcHR5IHZhbHVlcworICAgICAgICBpZiB2YWx1ZSA9PSAnJzoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmICcke2luY2x1ZGVkaXJ9JyBpbiB2YWx1ZToKKyAgICAgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKKyAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICMgR2V0IG1vZHVsZSBuYW1lICwgc2hvdWxkbnQgYmUgYWZmZWN0ZWQgYnkgbGliZGlyL2JpbmRpcgorICAgICAgICAjIFdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGltcG9ydGVkIG1vZHVsZSBjb21lcyBmcm9tIGFub3RoZXIgKGUuZy4gc3FsaXRlMy5kdW1wKQorICAgICAgICBwYXRoLHZhbHVlID0gb3MucGF0aC5zcGxpdCh2YWx1ZSkKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguYmFzZW5hbWUocGF0aCkKKyAgICAgICAgdmFsdWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUodmFsdWUpKVswXQorCisgICAgICAgICMgSWYgdGhpcyBjb25kaXRpb24gaXMgbWV0LCBpdCBtZWFucyB3ZSBuZWVkIHRvIGltcG9ydCBpdCBmcm9tIGFub3RoZXIgbW9kdWxlCisgICAgICAgICMgb3IgaXRzIHRoZSBmb2xkZXIgaXRzZWxmIChlLmcuIHVuaXR0ZXN0KQorICAgICAgICBpZiBwYXRoID09IGtleToKKyAgICAgICAgICBpZiB2YWx1ZToKKyAgICAgICAgICAgIHZhbHVlID0gcGF0aCArICcuJyArIHZhbHVlCisgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHZhbHVlID0gcGF0aAorCisgICAgICAgICMgTGF1bmNoIHNlcGFyYXRlIHRhc2sgZm9yIGVhY2ggbW9kdWxlIGZvciBkZXRlcm1pbmlzdGljIGJlaGF2aW9yCisgICAgICAgICMgRWFjaCBtb2R1bGUgd2lsbCBvbmx5IGltcG9ydCB3aGF0IGlzIG5lY2Vzc2FyeSBmb3IgaXQgdG8gd29yayBpbiBzcGVjaWZpYworICAgICAgICBwcmludCAoJ1xuR2V0dGluZyBkZXBlbmRlbmNpZXMgZm9yIG1vZHVsZTogJXMnICUgdmFsdWUpCisgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtzeXMuZXhlY3V0YWJsZSwgJ2dldF9tb2R1bGVfZGVwczMucHknLCAnJXMnICUgdmFsdWVdKS5kZWNvZGUoJ3V0ZjgnKQorICAgICAgICAjIFdlIGNhbiBwcmludCBkZXBlbmRlbmNpZXMgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcworICAgICAgICBwcmludCAoJ1RoZSBmb2xsb3dpbmcgZGVwZW5kZW5jaWVzIHdlcmUgZm91bmQgZm9yIG1vZHVsZSAlczpcbicgJSB2YWx1ZSkKKyAgICAgICAgcHJpbnQgKG91dHB1dCkKKyAgICAgICAgIyBPdXRwdXQgd2lsbCBoYXZlIGFsbCBkZXBlbmRlbmNpZXMKKworICAgICAgICByZXBvcnRGSUxFUyA9IFtdCisgICAgICAgIHJlcG9ydFJERVBTID0gW10KKworICAgICAgICBmb3IgaXRlbSBpbiBvdXRwdXQuc3BsaXQoKToKKworICAgICAgICAgICAgIyBXYXJuaW5nOiBUaGlzIGZpcnN0IHBhcnQgaXMgdWdseQorICAgICAgICAgICAgIyBPbmUgb2YgdGhlIGRlcGVuZGVuY2llcyB0aGF0IHdhcyBmb3VuZCwgY291bGQgYmUgaW5zaWRlIG9mIG9uZSBvZiB0aGUgZm9sZGVycyBpbmNsdWRlZCBieSBhbm90aGVyIHBhY2thZ2UKKyAgICAgICAgICAgICMgV2UgbmVlZCB0byBjaGVjayBpZiB0aGlzIGhhcHBlbnMgc28gd2UgY2FuIGFkZCB0aGUgcGFja2FnZSBjb250YWluaW5nIHRoZSBmb2xkZXIgYXMgYW4gcmRlcGVuZGVuY3kKKyAgICAgICAgICAgICMgZS5nLiBGb2xkZXIgZW5jb2RpbmdzIGNvbnRhaW5lZCBpbiBjb2RlY3MKKyAgICAgICAgICAgICMgVGhpcyB3b3VsZCBiZSBzb2x2ZWQgaWYgbm8gcGFja2FnZXMgaW5jbHVkZWQgYW55IGZvbGRlcnMKKworICAgICAgICAgICAgIyBUaGlzIGNhbiBiZSBkb25lIGluIHR3byB3YXlzOgorICAgICAgICAgICAgIyAxIC0gV2UgYXNzdW1lIHRoYXQgaWYgd2UgdGFrZSBvdXQgdGhlIGZpbGVuYW1lIGZyb20gdGhlIHBhdGggd2Ugd291bGQgZ2V0CisgICAgICAgICAgICAjICAgdGhlIGZvbGRlciBzdHJpbmcsIHRoZW4gd2Ugd291bGQgY2hlY2sgaWYgZm9sZGVyIHN0cmluZyBpcyBpbiB0aGUgbGlzdCBvZiBmb2xkZXJzCisgICAgICAgICAgICAjICAgVGhpcyB3b3VsZCBub3Qgd29yayBpZiBhIHBhY2thZ2UgY29udGFpbnMgYSBmb2xkZXIgd2hpY2ggY29udGFpbnMgYW5vdGhlciBmb2xkZXIKKyAgICAgICAgICAgICMgICBlLmcuIHBhdGgvZm9sZGVyMS9mb2xkZXIyL2ZpbGVuYW1lICBmb2xkZXJfc3RyaW5nPSBwYXRoL2ZvbGRlcjEvZm9sZGVyMgorICAgICAgICAgICAgIyAgIGZvbGRlcl9zdHJpbmcgd291bGQgbm90IG1hdGNoIGFueSB2YWx1ZSBjb250YWluZWQgaW4gdGhlIGxpc3Qgb2YgZm9sZGVycworICAgICAgICAgICAgIworICAgICAgICAgICAgIyAyIC0gV2UgZG8gaXQgdGhlIG90aGVyIHdheSBhcm91bmQsIGNoZWNraW5nIGlmIHRoZSBmb2xkZXIgaXMgY29udGFpbmVkIGluIHRoZSBwYXRoCisgICAgICAgICAgICAjICAgZS5nLiBwYXRoL2ZvbGRlcjEvZm9sZGVyMi9maWxlbmFtZSAgZm9sZGVyX3N0cmluZz0gcGF0aC9mb2xkZXIxL2ZvbGRlcjIKKyAgICAgICAgICAgICMgICBpcyBmb2xkZXJfc3RyaW5nIGluc2lkZSBwYXRoL2ZvbGRlcjEvZm9sZGVyMi9maWxlbmFtZT8sIAorICAgICAgICAgICAgIyAgIFllcywgaXQgd29ya3MsIGJ1dCB3ZSB3YXN0ZSBhIGNvdXBsZSBvZiBtaWxsaXNlY29uZHMuCisKKyAgICAgICAgICAgIGluRm9sZGVycz1GYWxzZQorICAgICAgICAgICAgZm9yIGZvbGRlciBpbiBhbGxmb2xkZXJzOgorICAgICAgICAgICAgICAgIGlmIGZvbGRlciBpbiBpdGVtOgorICAgICAgICAgICAgICAgICAgICBpbkZvbGRlcnMgPSBUcnVlICMgRGlkIHdlIGZpbmQgYSBmb2xkZXI/CisgICAgICAgICAgICAgICAgICAgIGZvbGRlckZvdW5kID0gRmFsc2UgIyBTZWNvbmQgZmxhZyB0byBicmVhayBpbm5lciBmb3IKKyAgICAgICAgICAgICAgICAgICAgIyBMb29wIG9ubHkgdGhyb3VnaCBwYWNrYWdlcyB3aGljaCBjb250YWluIGZvbGRlcnMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGtleWZvbGRlciBpbiBoYXNmb2xkZXJzOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvbGRlckZvdW5kID09IEZhbHNlKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjcHJpbnQoJ0NoZWNraW5nIGZvbGRlciAlcyBvbiBwYWNrYWdlICVzJyAlIChpdGVtLGtleWZvbGRlcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGZpbGVfZm9sZGVyIGluIG9sZF9tYW5pZmVzdFtrZXlmb2xkZXJdWydmaWxlcyddIG9yIGZpbGVfZm9sZGVyIGluIG9sZF9tYW5pZmVzdFtrZXlmb2xkZXJdWydjYWNoZWQnXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmlsZV9mb2xkZXI9PWZvbGRlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICgnJXMgZm9sZGVyIGZvdW5kIGluICVzJyAlIChmb2xkZXIsIGtleWZvbGRlcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xkZXJGb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGtleWZvbGRlciBub3QgaW4gbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10gYW5kIGtleWZvbGRlciAhPSBrZXk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10uYXBwZW5kKGtleWZvbGRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICAjIEEgZm9sZGVyIHdhcyBmb3VuZCBzbyB3ZSdyZSBkb25lIHdpdGggdGhpcyBpdGVtLCB3ZSBjYW4gZ28gb24KKyAgICAgICAgICAgIGlmIGluRm9sZGVyczoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisKKyAgICAgICAgICAgICMgV2UgbWlnaHQgYWxyZWFkeSBoYXZlIGl0IG9uIHRoZSBkaWN0aW9uYXJ5IHNpbmNlIGl0IGNvdWxkIGRlcGVuZCBvbiBhIChwcmV2aW91c2x5IGNoZWNrZWQpIG1vZHVsZQorICAgICAgICAgICAgaWYgaXRlbSBub3QgaW4gbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10gYW5kIGl0ZW0gbm90IGluIG5ld19tYW5pZmVzdFtrZXldWydjYWNoZWQnXToKKyAgICAgICAgICAgICAgICAjIEhhbmRsZSBjb3JlIGFzIGEgc3BlY2lhbCBwYWNrYWdlLCB3ZSBhbHJlYWR5IGRpZCBpdCBzbyB3ZSBwYXNzIGl0IHRvIE5FVyBkYXRhIHN0cnVjdHVyZSBkaXJlY3RseQorICAgICAgICAgICAgICAgIGlmIGtleT09J2NvcmUnOgorICAgICAgICAgICAgICAgICAgcHJpbnQoJ0FkZGluZyAlcyB0byAlcyBGSUxFUycgJSAoaXRlbSwga2V5KSkKKyAgICAgICAgICAgICAgICAgIGlmIGl0ZW0uZW5kc3dpdGgoJyonKToKKyAgICAgICAgICAgICAgICAgICAgICB3aWxkY2FyZHMuYXBwZW5kKGl0ZW0pCisgICAgICAgICAgICAgICAgICBpZiBpc0NhY2hlZChpdGVtKToKKyAgICAgICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnY2FjaGVkJ10uYXBwZW5kKGl0ZW0pCisgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLmFwcGVuZChpdGVtKQorCisgICAgICAgICAgICAgICAgICAjIENoZWNrIGZvciByZXBlYXRlZCBmaWxlcworICAgICAgICAgICAgICAgICAgaWYgaXRlbSBub3QgaW4gYWxsZmlsZXM6CisgICAgICAgICAgICAgICAgICAgICAgYWxsZmlsZXMuYXBwZW5kKGl0ZW0pCisgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdGVkLmFwcGVuZChpdGVtKQorCisgICAgICAgICAgICAgICAgZWxzZToKKworCisgICAgICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhpcyBkZXBlbmRlbmN5IGlzIGFscmVhZHkgY29udGFpbmVkIG9uIGFub3RoZXIgcGFja2FnZSwgc28gd2UgYWRkIGl0CisgICAgICAgICAgICAgICAgICAgICMgYXMgYW4gUkRFUEVORFMsIG9yIGlmIGl0cyBub3QsIGl0IG1lYW5zIGl0IHNob3VsZCBiZSBjb250YWluZWQgb24gdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICAgICAgIyBwYWNrYWdlLCBzbyB3ZSBzaG91bGQgYWRkIGl0IHRvIEZJTEVTCisgICAgICAgICAgICAgICAgICAgIGZvciBuZXdrZXkgaW4gb2xkX21hbmlmZXN0OgorICAgICAgICAgICAgICAgICAgICAgICAgIyBEZWJ1ZworICAgICAgICAgICAgICAgICAgICAgICAgI3ByaW50KCdDaGVja2luZyAlcyAnICUgaXRlbSArICcgaW4gJXMnICUgbmV3a2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXRlbSBpbiBvbGRfbWFuaWZlc3RbbmV3a2V5XVsnZmlsZXMnXSBvciBpdGVtIGluIG9sZF9tYW5pZmVzdFtuZXdrZXldWydjYWNoZWQnXTogICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTaW5jZSB3ZXJlIG5lc3RpbmcsIHdlIG5lZWQgdG8gY2hlY2sgaXRzIG5vdCB0aGUgc2FtZSBrZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobmV3a2V5IT1rZXkpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmV3a2V5IG5vdCBpbiBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGl0IHRvIHRoZSBuZXcgbWFuaWZlc3QgZGF0YSBzdHJ1Y3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydFJERVBTLmFwcGVuZCgnQWRkaW5nICVzIHRvICVzIFJERVBFTkRTLCBiZWNhdXNlIGl0IGNvbnRhaW5zICVzXG4nICUgKG5ld2tleSwga2V5LCBpdGVtKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddLmFwcGVuZChuZXdrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICMgQSBtb2R1bGUgc2hvdWxkbid0IGNvbnRhaW4gaXRzZWxmICgke2xpYmRpcn0vcHl0aG9uMy9zcWxpdGUzIHNob3VsZG50IGJlIG9uIHNxbGl0ZTMgZmlsZXMpCisgICAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZShpdGVtKSAhPSBrZXk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnRGSUxFUy5hcHBlbmQoKCdBZGRpbmcgJXMgdG8gJXMgRklMRVNcbicgJSAoaXRlbSwga2V5KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAjIFNpbmNlIGl0IHdhc250IGZvdW5kIG9uIGFub3RoZXIgcGFja2FnZSwgaXRzIG5vdCBhbiBSREVQLCBzbyBhZGQgaXQgdG8gRklMRVMgZm9yIHRoaXMgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNDYWNoZWQoaXRlbSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2NhY2hlZCddLmFwcGVuZChpdGVtKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQoaXRlbSkKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXRlbS5lbmRzd2l0aCgnKicpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGRjYXJkcy5hcHBlbmQoaXRlbSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGl0ZW0gbm90IGluIGFsbGZpbGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbGZpbGVzLmFwcGVuZChpdGVtKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBlYXRlZC5hcHBlbmQoaXRlbSkKKworICAgICAgICBwcmludCgnXG4nKQorICAgICAgICBwcmludCgnIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjJykKKyAgICAgICAgcHJpbnQoJ1N1bW1hcnkgZm9yIG1vZHVsZSAlcycgJSB2YWx1ZSkKKyAgICAgICAgcHJpbnQoJ0ZJTEVTIGZvdW5kIGZvciBtb2R1bGUgJXM6JyAlIHZhbHVlKQorICAgICAgICBwcmludCgnJy5qb2luKHJlcG9ydEZJTEVTKSkKKyAgICAgICAgcHJpbnQoJ1JERVBFTkRTIGZvdW5kIGZvciBtb2R1bGUgJXM6JyAlIHZhbHVlKQorICAgICAgICBwcmludCgnJy5qb2luKHJlcG9ydFJERVBTKSkKKyAgICAgICAgcHJpbnQoJyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIycpCisKK3ByaW50ICgnVGhlIGZvbGxvd2luZyBmaWxlcyBhcmUgcmVwZWF0ZWQgKGNvbnRhaW5lZCBpbiBtb3JlIHRoYW4gb25lIHBhY2thZ2UpLCBwbGVhc2UgY2hlY2sgd2hpY2ggcGFja2FnZSBzaG91bGQgZ2V0IGl0OicpCitwcmludCAocmVwZWF0ZWQpCitwcmludCgnVGhlIGZvbGxvd2luZyBmaWxlcyBjb250YWluIHdpbGRjYXJkcywgcGxlYXNlIGNoZWNrIHRoZXkgYXJlIG5lY2Vzc2FyeScpCitwcmludCh3aWxkY2FyZHMpCitwcmludCgnVGhlIGZvbGxvd2luZyBmaWxlcyBjb250YWluIGZvbGRlcnMsIHBsZWFzZSBjaGVjayB0aGV5IGFyZSBuZWNlc3NhcnknKQorcHJpbnQoaGFzZm9sZGVycykKKworIyBTb3J0IGl0IGp1c3Qgc28gaXQgbG9va3MgbmljZXIKK2ZvciBrZXkgaW4gbmV3X21hbmlmZXN0OgorICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLnNvcnQoKQorICAgIG5ld19tYW5pZmVzdFtrZXldWydjYWNoZWQnXS5zb3J0KCkKKyAgICBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXS5zb3J0KCkKKworIyBDcmVhdGUgdGhlIG1hbmlmZXN0IGZyb20gdGhlIGRhdGEgc3RydWN0dXJlIHRoYXQgd2FzIGJ1aWx0Cit3aXRoIG9wZW4oJ3B5dGhvbjMtbWFuaWZlc3QuanNvbi5uZXcnLCd3JykgYXMgb3V0ZmlsZToKKyAgICBqc29uLmR1bXAobmV3X21hbmlmZXN0LG91dGZpbGUsc29ydF9rZXlzPVRydWUsIGluZGVudD00KQorICAgIG91dGZpbGUud3JpdGUoJ1xuJykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvZ2V0X21vZHVsZV9kZXBzMy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvZ2V0X21vZHVsZV9kZXBzMy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDEyYmFhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9nZXRfbW9kdWxlX2RlcHMzLnB5CkBAIC0wLDAgKzEsMTQ2IEBACisjIFRoaXMgc2NyaXB0IGlzIGxhdW5jaGVkIG9uIHNlcGFyYXRlIHRhc2sgZm9yIGVhY2ggcHl0aG9uIG1vZHVsZQorIyBJdCBjaGVja3MgZm9yIGRlcGVuZGVuY2llcyBmb3IgdGhhdCBzcGVjaWZpYyBtb2R1bGUgYW5kIHByaW50cyAKKyMgdGhlbSBvdXQsIHRoZSBvdXRwdXQgb2YgdGhpcyBleGVjdXRpb24gd2lsbCBoYXZlIGFsbCBkZXBlbmRlbmNpZXMKKyMgZm9yIGEgc3BlY2lmaWMgbW9kdWxlLCB3aGljaCB3aWxsIGJlIHBhcnNlZCBhbiBkZWFsdCBvbiBjcmVhdGVfbWFuaWZlc3QucHkKKyMKKyMgQXV0aG9yOiBBbGVqYW5kcm8gRW5lZGlubyBIZXJuYW5kZXogU2FtYW5pZWdvICJhZWhzMjkiIDxhZWhzMjlAZ21haWwuY29tPgorCisjIFdlIGNhbiBnZXQgYSBsb2cgcGVyIG1vZHVsZSwgZm9yIGFsbCB0aGUgZGVwZW5kZW5jaWVzIHRoYXQgd2VyZSBmb3VuZCwgYnV0IGl0cyBtZXNzeS4KK2RlYnVnPUZhbHNlCisKK2ltcG9ydCBzeXMKKworIyBXZSBjYW4gZ2V0IGEgbGlzdCBvZiB0aGUgbW9kdWxlcyB3aGljaCBhcmUgY3VycmVudGx5IHJlcXVpcmVkIHRvIHJ1biBweXRob24KKyMgc28gd2UgcnVuIHB5dGhvbi1jb3JlIGFuZCBnZXQgaXRzIG1vZHVsZXMsIHdlIHRoZW4gaW1wb3J0IHdoYXQgd2UgbmVlZAorIyBhbmQgY2hlY2sgd2hhdCBtb2R1bGVzIGFyZSBjdXJyZW50bHkgcnVubmluZywgaWYgd2Ugc3Vic3RyYWN0IHRoZW0gZnJvbSB0aGUKKyMgbW9kdWxlcyB3ZSBoYWQgaW5pdGlhbGx5LCB3ZSBnZXQgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIG1vZHVsZSB3ZSBpbXBvcnRlZC4KKworIyBXZSB1c2UgaW1wb3J0bGliIHRvIGFjaGlldmUgdGhpcywgc28gd2UgYWxzbyBuZWVkIHRvIGtub3cgd2hhdCBtb2R1bGVzIGltcG9ydGxpYiBuZWVkcworaW1wb3J0IGltcG9ydGxpYgorCitjb3JlX2RlcHM9c2V0KHN5cy5tb2R1bGVzKQorCitkZWYgZml4X3BhdGgoZGVwX3BhdGgpOgorICAgIGltcG9ydCBvcworICAgICMgV2UgRE9OVCB3YW50IHRoZSBwYXRoIG9uIG91ciBIT1NUIHN5c3RlbQorICAgIHBpdm90PSdyZWNpcGUtc3lzcm9vdC1uYXRpdmUnCisgICAgZGVwX3BhdGg9ZGVwX3BhdGhbZGVwX3BhdGguZmluZChwaXZvdCkrbGVuKHBpdm90KTpdCisKKyAgICBpZiAnL3Vzci9iaW4nIGluIGRlcF9wYXRoOgorICAgICAgICBkZXBfcGF0aCA9IGRlcF9wYXRoLnJlcGxhY2UoJy91c3IvYmluJycke2JpbmRpcn0nKQorCisgICAgIyBIYW5kbGUgbXVsdGlsaWIsIGlzIHRoZXJlIGEgYmV0dGVyIHdheT8KKyAgICBpZiAnL3Vzci9saWIzMicgaW4gZGVwX3BhdGg6CisgICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZSgnL3Vzci9saWIzMicsJyR7bGliZGlyfScpCisgICAgaWYgJy91c3IvbGliNjQnIGluIGRlcF9wYXRoOgorICAgICAgICBkZXBfcGF0aCA9IGRlcF9wYXRoLnJlcGxhY2UoJy91c3IvbGliNjQnLCcke2xpYmRpcn0nKQorICAgIGlmICcvdXNyL2xpYicgaW4gZGVwX3BhdGg6CisgICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZSgnL3Vzci9saWInLCcke2xpYmRpcn0nKQorICAgIGlmICcvdXNyL2luY2x1ZGUnIGluIGRlcF9wYXRoOgorICAgICAgICBkZXBfcGF0aCA9IGRlcF9wYXRoLnJlcGxhY2UoJy91c3IvaW5jbHVkZScsJyR7aW5jbHVkZWRpcn0nKQorICAgIGlmICdfX2luaXRfXy4nIGluIGRlcF9wYXRoOgorICAgICAgICBkZXBfcGF0aCA9ICBvcy5wYXRoLnNwbGl0KGRlcF9wYXRoKVswXQorICAgIHJldHVybiBkZXBfcGF0aAorCisKKyMgTW9kdWxlIHRvIGltcG9ydCB3YXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50CitjdXJyZW50X21vZHVsZSA9ICBzdHIoc3lzLmFyZ3ZbMV0pLnJzdHJpcCgpCitpZihkZWJ1Zz09VHJ1ZSk6CisgICAgbG9nID0gb3BlbignbG9nXyVzJyAlIGN1cnJlbnRfbW9kdWxlLCd3JykKKyAgICBsb2cud3JpdGUoJ01vZHVsZSAlcyBnZW5lcmF0ZWQgdGhlIGZvbGxvd2luZyBkZXBlbmRlbmNpZXM6XG4nICUgY3VycmVudF9tb2R1bGUpCit0cnk6IAorICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCclcycgJSBjdXJyZW50X21vZHVsZSkKK2V4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgorICAgIGlmIChkZWJ1Zz09VHJ1ZSk6CisgICAgICAgIGxvZy53cml0ZSgnTW9kdWxlIHdhcyBub3QgZm91bmQnKQorICAgIHBhc3MKKworCisjIEdldCBjdXJyZW50IG1vZHVsZSBkZXBlbmRlbmNpZXMsIGRpZiB3aWxsIGNvbnRhaW4gYSBsaXN0IG9mIHNwZWNpZmljIGRlcHMgZm9yIHRoaXMgbW9kdWxlCittb2R1bGVfZGVwcz1zZXQoc3lzLm1vZHVsZXMpCisKKyMgV2UgaGFuZGxlIHRoZSBjb3JlIHBhY2thZ2UgKDFzdCBwYXNzIG9uIGNyZWF0ZV9tYW5pZmVzdC5weSkgYXMgYSBzcGVjaWFsIGNhc2UKK2lmIGN1cnJlbnRfbW9kdWxlID09ICdweXRob24tY29yZS1wYWNrYWdlJzoKKyAgICBkaWYgPSBjb3JlX2RlcHMKK2Vsc2U6CisgICAgIyBXZSBrbm93IHRoaXMgaXMgbm90IHRoZSBjb3JlIHBhY2thZ2UsIHNvIHRoZXJlIG11c3QgYmUgYSBkaWZmZXJlbmNlLgorICAgIGRpZiA9IG1vZHVsZV9kZXBzLWNvcmVfZGVwcworCisKKyMgQ2hlY2sgd2hlcmUgZWFjaCBkZXBlbmRlbmN5IGNhbWUgZnJvbQorZm9yIGl0ZW0gaW4gZGlmOgorICAgIGRlcF9wYXRoPScnCisgICAgdHJ5OgorICAgICAgICBpZiAoZGVidWc9PVRydWUpOgorICAgICAgICAgICAgbG9nLndyaXRlKCdDYWxsaW5nOiBzeXMubW9kdWxlc1snICsgJyVzJyAlIGl0ZW0gKyAnXS5fX2ZpbGVfX1xuJykKKyAgICAgICAgZGVwX3BhdGggPSBzeXMubW9kdWxlc1snJXMnICUgaXRlbV0uX19maWxlX18KKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZToKKyAgICAgICAgIyBEZWFscyB3aXRoIHRocmVhZCAoYnVpbHRpbiBtb2R1bGUpIG5vdCBoYXZpbmcgX19maWxlX18gYXR0cmlidXRlCisgICAgICAgIGlmIGRlYnVnPT1UcnVlOgorICAgICAgICAgICAgbG9nLndyaXRlKGl0ZW0gKyAnICcpCisgICAgICAgICAgICBsb2cud3JpdGUoc3RyKGUpKQorICAgICAgICAgICAgbG9nLndyaXRlKCdcbicpCisgICAgICAgIHBhc3MKKyAgICBleGNlcHQgTmFtZUVycm9yIGFzIGU6CisgICAgICAgICMgRGVhbHMgd2l0aCBOYW1lRXJyb3I6IG5hbWUgJ2RlcF9wYXRoJyBpcyBub3QgZGVmaW5lZAorICAgICAgICAjIGJlY2F1c2UgbW9kdWxlIGlzIG5vdCBmb3VuZCAod2Fzbid0IGNvbXBpbGVkPyksIGUuZy4gYmRkc20KKyAgICAgICAgaWYgKGRlYnVnPT1UcnVlKToKKyAgICAgICAgICAgIGxvZy53cml0ZShpdGVtKycgJykgCisgICAgICAgICAgICBsb2cud3JpdGUoc3RyKGUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgcGFzcworCisgICAgIyBTaXRlLWN1c3RvbWl6ZSBpcyBhIHNwZWNpYWwgY2FzZSBzaW5jZSB3ZSAoT3BlbkVtYmVkZGVkKSBwdXQgaXQgdGhlcmUgbWFudWFsbHkKKyAgICBpZiAnc2l0ZWN1c3RvbWl6ZScgaW4gZGVwX3BhdGg6CisgICAgICAgIGRlcF9wYXRoID0gJyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NpdGVjdXN0b21pemUucHknCisgICAgICAgICMgUHJpbnRzIG91dCByZXN1bHQsIHdoaWNoIGlzIHdoYXQgd2lsbCBiZSB1c2VkIGJ5IGNyZWF0ZV9tYW5pZmVzdAorICAgICAgICBwcmludCAoZGVwX3BhdGgpCisgICAgICAgIGNvbnRpbnVlCisKKyAgICBkZXBfcGF0aCA9IGZpeF9wYXRoKGRlcF9wYXRoKQorCisgICAgaW1wb3J0IHN5c2NvbmZpZworICAgIHNvYWJpPXN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignU09BQkknKQorICAgICMgQ2hlY2sgaWYgaXRzIGEgc2hhcmVkIGxpYnJhcnkgYW5kIGRlY29uc3RydWN0IGl0CisgICAgaWYgc29hYmkgaW4gZGVwX3BhdGg6CisgICAgICAgIGlmIChkZWJ1Zz09VHJ1ZSk6CisgICAgICAgICAgICBsb2cud3JpdGUoJ1NoYXJlZCBsaWJyYXJ5IGZvdW5kIGluICVzJyAlIGRlcF9wYXRoKQorICAgICAgICBkZXBfcGF0aCA9IGRlcF9wYXRoLnJlcGxhY2Uoc29hYmksJyonKQorICAgICAgICBwcmludCAoZGVwX3BhdGgpCisgICAgICAgIGNvbnRpbnVlCisKKyAgICBpZiAoZGVidWc9PVRydWUpOgorICAgICAgICBsb2cud3JpdGUoZGVwX3BhdGgrJ1xuJykKKyAgICAjIFByaW50cyBvdXQgcmVzdWx0LCB3aGljaCBpcyB3aGF0IHdpbGwgYmUgdXNlZCBieSBjcmVhdGVfbWFuaWZlc3QKKyAgICBwcmludCAoZGVwX3BhdGgpCisKKworICAgIGltcG9ydCBpbXAKKyAgICBjcHl0aG9uX3RhZyA9IGltcC5nZXRfdGFnKCkgCisgICAgY2FjaGVkPScnCisgICAgIyBUaGVyZXMgbm8gbmFpdmUgd2F5IHRvIGZpbmQgKi5weWMgZmlsZXMgb24gcHl0aG9uMworICAgIHRyeToKKyAgICAgICAgaWYgKGRlYnVnPT1UcnVlKToKKyAgICAgICAgICAgIGxvZy53cml0ZSgnQ2FsbGluZzogc3lzLm1vZHVsZXNbJyArICclcycgJSBpdGVtICsgJ10uX19jYWNoZWRfX1xuJykKKyAgICAgICAgY2FjaGVkID0gc3lzLm1vZHVsZXNbJyVzJyAlIGl0ZW1dLl9fY2FjaGVkX18KKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZToKKyAgICAgICAgIyBEZWFscyB3aXRoIHRocmVhZCAoYnVpbHRpbiBtb2R1bGUpIG5vdCBoYXZpbmcgX19jYWNoZWRfXyBhdHRyaWJ1dGUKKyAgICAgICAgaWYgZGVidWc9PVRydWU6CisgICAgICAgICAgICBsb2cud3JpdGUoaXRlbSArICcgJykKKyAgICAgICAgICAgIGxvZy53cml0ZShzdHIoZSkpCisgICAgICAgICAgICBsb2cud3JpdGUoJ1xuJykKKyAgICAgICAgcGFzcworICAgIGV4Y2VwdCBOYW1lRXJyb3IgYXMgZToKKyAgICAgICAgIyBEZWFscyB3aXRoIE5hbWVFcnJvcjogbmFtZSAnY2FjaGVkJyBpcyBub3QgZGVmaW5lZAorICAgICAgICBpZiAoZGVidWc9PVRydWUpOgorICAgICAgICAgICAgbG9nLndyaXRlKGl0ZW0rJyAnKSAKKyAgICAgICAgICAgIGxvZy53cml0ZShzdHIoZSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBwYXNzCisgICAgaWYgY2FjaGVkIGlzIG5vdCBOb25lOgorICAgICAgICBpZiAoZGVidWc9PVRydWUpOgorICAgICAgICAgICAgbG9nLndyaXRlKGNhY2hlZCkKKyAgICAgICAgY2FjaGVkID0gZml4X3BhdGgoY2FjaGVkKQorICAgICAgICBjYWNoZWQgPSBjYWNoZWQucmVwbGFjZShjcHl0aG9uX3RhZywnKicpCisgICAgICAgIHByaW50IChjYWNoZWQpCisKK2lmIGRlYnVnPT1UcnVlOgorICAgIGxvZy5jbG9zZSgpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbi0zLjMtbXVsdGlsaWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbi0zLjMtbXVsdGlsaWIucGF0Y2gKaW5kZXggMDhjNDQwMy4uY2MzNWRjMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24tMy4zLW11bHRpbGliLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uLTMuMy1tdWx0aWxpYi5wYXRjaApAQCAtMjUsMTAgKzI1LDEwIEBACiAgc2V0dXAucHkgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOSArKysrLS0tLS0KICAxMiBmaWxlcyBjaGFuZ2VkLCA5NyBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHl0aG9ucnVuLmggYi9JbmNsdWRlL3B5dGhvbnJ1bi5oCi1pbmRleCA5YzJlODEzLi4yZjc5Y2I2IDEwMDY0NAotLS0tIGEvSW5jbHVkZS9weXRob25ydW4uaAotKysrIGIvSW5jbHVkZS9weXRob25ydW4uaAorSW5kZXg6IFB5dGhvbi0zLjUuNC9JbmNsdWRlL3B5dGhvbnJ1bi5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS40Lm9yaWcvSW5jbHVkZS9weXRob25ydW4uaAorKysrIFB5dGhvbi0zLjUuNC9JbmNsdWRlL3B5dGhvbnJ1bi5oCiBAQCAtMjMsNiArMjMsOSBAQCB0eXBlZGVmIHN0cnVjdCB7CiAgfSBQeUNvbXBpbGVyRmxhZ3M7CiAgI2VuZGlmCkBAIC0zOSwxMCArMzksMTAgQEAKICAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAgUHlBUElfRlVOQyhpbnQpIFB5UnVuX1NpbXBsZVN0cmluZ0ZsYWdzKGNvbnN0IGNoYXIgKiwgUHlDb21waWxlckZsYWdzICopOwogIFB5QVBJX0ZVTkMoaW50KSBQeVJ1bl9BbnlGaWxlRmxhZ3MoRklMRSAqLCBjb25zdCBjaGFyICosIFB5Q29tcGlsZXJGbGFncyAqKTsKLWRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5Ci1pbmRleCA2N2RiMDA3Li5iNDZiNDViIDEwMDY0NAotLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKLSsrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CitJbmRleDogUHl0aG9uLTMuNS40L0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS40Lm9yaWcvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKKysrKyBQeXRob24tMy41LjQvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKIEBAIC0xOSw2ICsxOSw4IEBAIGZyb20gc2l0ZSBpbXBvcnQgVVNFUl9CQVNFCiAgZnJvbSBzaXRlIGltcG9ydCBVU0VSX1NJVEUKICBIQVNfVVNFUl9TSVRFID0gVHJ1ZQpAQCAtNTIsMjAgKzUyLDIyIEBACiAgV0lORE9XU19TQ0hFTUUgPSB7CiAgICAgICdwdXJlbGliJzogJyRiYXNlL0xpYi9zaXRlLXBhY2thZ2VzJywKICAgICAgJ3BsYXRsaWInOiAnJGJhc2UvTGliL3NpdGUtcGFja2FnZXMnLAotQEAgLTMwLDcgKzMyLDcgQEAgV0lORE9XU19TQ0hFTUUgPSB7CitAQCAtMjksOCArMzEsOCBAQCBXSU5ET1dTX1NDSEVNRSA9IHsKKyAKICBJTlNUQUxMX1NDSEVNRVMgPSB7CiAgICAgICd1bml4X3ByZWZpeCc6IHsKLSAgICAgICAgICdwdXJlbGliJzogJyRiYXNlL2xpYi9weXRob24kcHlfdmVyc2lvbl9zaG9ydC9zaXRlLXBhY2thZ2VzJywKKy0gICAgICAgICdwdXJlbGliJzogJyRiYXNlL2xpYi9weXRob24kcHlfdmVyc2lvbl9zaG9ydC9zaXRlLXBhY2thZ2VzJywKIC0gICAgICAgICdwbGF0bGliJzogJyRwbGF0YmFzZS9saWIvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCisrICAgICAgICAncHVyZWxpYic6ICckcGxhdGJhc2UvJytsaWJuYW1lKycvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCiArICAgICAgICAncGxhdGxpYic6ICckcGxhdGJhc2UvJytsaWJuYW1lKycvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICAnaGVhZGVycyc6ICckYmFzZS9pbmNsdWRlL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0JGFiaWZsYWdzLyRkaXN0X25hbWUnLAogICAgICAgICAgJ3NjcmlwdHMnOiAnJGJhc2UvYmluJywKICAgICAgICAgICdkYXRhJyAgIDogJyRiYXNlJywKLWRpZmYgLS1naXQgYS9MaWIvcHlkb2MucHkgYi9MaWIvcHlkb2MucHkKLWluZGV4IDNjYTA4YzkuLjY1Mjg3MzAgMTAwNzU1Ci0tLS0gYS9MaWIvcHlkb2MucHkKLSsrKyBiL0xpYi9weWRvYy5weQotQEAgLTM4NCw3ICszODQsNyBAQCBjbGFzcyBEb2M6CitJbmRleDogUHl0aG9uLTMuNS40L0xpYi9weWRvYy5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFB5dGhvbi0zLjUuNC5vcmlnL0xpYi9weWRvYy5weQorKysrIFB5dGhvbi0zLjUuNC9MaWIvcHlkb2MucHkKK0BAIC0zODksNyArMzg5LDcgQEAgY2xhc3MgRG9jOgogICAgICBkb2Ntb2R1bGUgPSBkb2NjbGFzcyA9IGRvY3JvdXRpbmUgPSBkb2NvdGhlciA9IGRvY3Byb3BlcnR5ID0gZG9jZGF0YSA9IGZhaWwKICAKICAgICAgZGVmIGdldGRvY2xvYyhzZWxmLCBvYmplY3QsCkBAIC03NCwxMCArNzYsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uJWQuJWQiICUgIHN5cy52ZXJzaW9uX2luZm9bOjJdKSk6CiAgICAgICAgICAiIiJSZXR1cm4gdGhlIGxvY2F0aW9uIG9mIG1vZHVsZSBkb2NzIG9yIE5vbmUiIiIKICAKLWRpZmYgLS1naXQgYS9MaWIvc2l0ZS5weSBiL0xpYi9zaXRlLnB5Ci1pbmRleCAzZjc4ZWY1Li41MTE5MzFlIDEwMDY0NAotLS0tIGEvTGliL3NpdGUucHkKLSsrKyBiL0xpYi9zaXRlLnB5CitJbmRleDogUHl0aG9uLTMuNS40L0xpYi9zaXRlLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS40Lm9yaWcvTGliL3NpdGUucHkKKysrKyBQeXRob24tMy41LjQvTGliL3NpdGUucHkKIEBAIC0zMDMsMTIgKzMwMywxMiBAQCBkZWYgZ2V0c2l0ZXBhY2thZ2VzKHByZWZpeGVzPU5vbmUpOgogICAgICAgICAgc2Vlbi5hZGQocHJlZml4KQogIApAQCAtOTMsMjAgKzk1LDIxIEBACiAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gImRhcndpbiI6CiAgICAgICAgICAgICAgIyBmb3IgZnJhbWV3b3JrIGJ1aWxkcyAqb25seSogd2UgYWRkIHRoZSBzdGFuZGFyZCBBcHBsZQogICAgICAgICAgICAgICMgbG9jYXRpb25zLgotZGlmZiAtLWdpdCBhL0xpYi9zeXNjb25maWcucHkgYi9MaWIvc3lzY29uZmlnLnB5Ci1pbmRleCA5YzM0YmUwLi4zZDExODFhIDEwMDY0NAotLS0tIGEvTGliL3N5c2NvbmZpZy5weQotKysrIGIvTGliL3N5c2NvbmZpZy5weQorSW5kZXg6IFB5dGhvbi0zLjUuNC9MaWIvc3lzY29uZmlnLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS40Lm9yaWcvTGliL3N5c2NvbmZpZy5weQorKysrIFB5dGhvbi0zLjUuNC9MaWIvc3lzY29uZmlnLnB5CiBAQCAtMjAsMTAgKzIwLDEwIEBAIF9fYWxsX18gPSBbCiAgCiAgX0lOU1RBTExfU0NIRU1FUyA9IHsKICAgICAgJ3Bvc2l4X3ByZWZpeCc6IHsKIC0gICAgICAgICdzdGRsaWInOiAne2luc3RhbGxlZF9iYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKIC0gICAgICAgICdwbGF0c3RkbGliJzogJ3twbGF0YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCistICAgICAgICAncHVyZWxpYic6ICd7YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKKy0gICAgICAgICdwbGF0bGliJzogJ3twbGF0YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKICsgICAgICAgICdzdGRsaWInOiAne2luc3RhbGxlZF9iYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAogKyAgICAgICAgJ3BsYXRzdGRsaWInOiAne3BsYXRiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotICAgICAgICAgJ3B1cmVsaWInOiAne2Jhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCi0tICAgICAgICAncGxhdGxpYic6ICd7cGxhdGJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCisrICAgICAgICAncHVyZWxpYic6ICd7cGxhdGJhc2V9Lycrc3lzLmxpYisnL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKICsgICAgICAgICdwbGF0bGliJzogJ3twbGF0YmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAogICAgICAgICAgJ2luY2x1ZGUnOgogICAgICAgICAgICAgICd7aW5zdGFsbGVkX2Jhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9e2FiaWZsYWdzfScsCkBAIC0xMTcsMTAgKzEyMCwxMSBAQAogICAgICAncG9zaXhfaG9tZSc6IHsKIC0gICAgICAgICdzdGRsaWInOiAne2luc3RhbGxlZF9iYXNlfS9saWIvcHl0aG9uJywKIC0gICAgICAgICdwbGF0c3RkbGliJzogJ3tiYXNlfS9saWIvcHl0aG9uJywKKy0gICAgICAgICdwdXJlbGliJzogJ3tiYXNlfS9saWIvcHl0aG9uJywKKy0gICAgICAgICdwbGF0bGliJzogJ3tiYXNlfS9saWIvcHl0aG9uJywKICsgICAgICAgICdzdGRsaWInOiAne2luc3RhbGxlZF9iYXNlfS8nK3N5cy5saWIrJy9weXRob24nLAogKyAgICAgICAgJ3BsYXRzdGRsaWInOiAne2Jhc2V9Lycrc3lzLmxpYisnL3B5dGhvbicsCi0gICAgICAgICAncHVyZWxpYic6ICd7YmFzZX0vbGliL3B5dGhvbicsCi0tICAgICAgICAncGxhdGxpYic6ICd7YmFzZX0vbGliL3B5dGhvbicsCisrICAgICAgICAncHVyZWxpYic6ICd7YmFzZX0vJytzeXMubGliKycvcHl0aG9uJywKICsgICAgICAgICdwbGF0bGliJzogJ3tiYXNlfS8nK3N5cy5saWIrJy9weXRob24nLAogICAgICAgICAgJ2luY2x1ZGUnOiAne2luc3RhbGxlZF9iYXNlfS9pbmNsdWRlL3B5dGhvbicsCiAgICAgICAgICAncGxhdGluY2x1ZGUnOiAne2luc3RhbGxlZF9iYXNlfS9pbmNsdWRlL3B5dGhvbicsCkBAIC0xMzEsMTggKzEzNSwxOSBAQAogICAgICAncG9zaXhfdXNlcic6IHsKIC0gICAgICAgICdzdGRsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKIC0gICAgICAgICdwbGF0c3RkbGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCistICAgICAgICAncHVyZWxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCistICAgICAgICAncGxhdGxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCiArICAgICAgICAnc3RkbGliJzogJ3t1c2VyYmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKICsgICAgICAgICdwbGF0c3RkbGliJzogJ3t1c2VyYmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLSAgICAgICAgICdwdXJlbGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKLS0gICAgICAgICdwbGF0bGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKKysgICAgICAgICdwdXJlbGliJzogJ3t1c2VyYmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAogKyAgICAgICAgJ3BsYXRsaWInOiAne3VzZXJiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICAnaW5jbHVkZSc6ICd7dXNlcmJhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKICAgICAgICAgICdzY3JpcHRzJzogJ3t1c2VyYmFzZX0vYmluJywKICAgICAgICAgICdkYXRhJzogJ3t1c2VyYmFzZX0nLAotZGlmZiAtLWdpdCBhL0xpYi90cmFjZS5weSBiL0xpYi90cmFjZS5weQotaW5kZXggZjEwODI2Ni4uN2ZkODNmMiAxMDA3NTUKLS0tLSBhL0xpYi90cmFjZS5weQotKysrIGIvTGliL3RyYWNlLnB5CitJbmRleDogUHl0aG9uLTMuNS40L0xpYi90cmFjZS5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFB5dGhvbi0zLjUuNC5vcmlnL0xpYi90cmFjZS5weQorKysrIFB5dGhvbi0zLjUuNC9MaWIvdHJhY2UucHkKIEBAIC03NDksMTAgKzc0OSwxMCBAQCBkZWYgbWFpbihhcmd2PU5vbmUpOgogICAgICAgICAgICAgICAgICAjIHNob3VsZCBJIGFsc28gY2FsbCBleHBhbmR1c2VyPyAoYWZ0ZXIgYWxsLCBjb3VsZCB1c2UgJEhPTUUpCiAgCkBAIC0xNTYsMTEgKzE2MSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSkpCiAgICAgICAgICAgICAgICAgIHMgPSBvcy5wYXRoLm5vcm1wYXRoKHMpCiAgICAgICAgICAgICAgICAgIGlnbm9yZV9kaXJzLmFwcGVuZChzKQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLnByZS5pbiBiL01ha2VmaWxlLnByZS5pbgotaW5kZXggMTA5ZjQwMi4uNjFhNDFlMiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLnByZS5pbgotKysrIGIvTWFrZWZpbGUucHJlLmluCi1AQCAtMTA2LDYgKzEwNiw4IEBAIFBZX0NPUkVfQ0ZMQUdTPQkkKFBZX0NGTEFHUykgJChQWV9DRkxBR1NfTk9ESVNUKSAkKFBZX0NQUEZMQUdTKSAkKENGTEFHU0ZPUlNIQVJFCitJbmRleDogUHl0aG9uLTMuNS40L01ha2VmaWxlLnByZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFB5dGhvbi0zLjUuNC5vcmlnL01ha2VmaWxlLnByZS5pbgorKysrIFB5dGhvbi0zLjUuNC9NYWtlZmlsZS5wcmUuaW4KK0BAIC0xMDksNiArMTA5LDggQEAgQ0ZMQUdTX0FMSUFTSU5HPUBDRkxBR1NfQUxJQVNJTkdACiAgCiAgIyBNYWNoaW5lLWRlcGVuZGVudCBzdWJkaXJlY3RvcmllcwogIE1BQ0hERVA9CUBNQUNIREVQQApAQCAtMTY5LDcgKzE3NCw3IEBACiAgCiAgIyBNdWx0aWFyY2ggZGlyZWN0b3J5IChtYXkgYmUgZW1wdHkpCiAgTVVMVElBUkNIPQlATVVMVElBUkNIQAotQEAgLTEyNSw3ICsxMjcsNyBAQCBMSUJESVI9CQlAbGliZGlyQAorQEAgLTEyOCw3ICsxMzAsNyBAQCBMSUJESVI9CQlAbGliZGlyQAogIE1BTkRJUj0JCUBtYW5kaXJACiAgSU5DTFVERURJUj0JQGluY2x1ZGVkaXJACiAgQ09ORklOQ0xVREVESVI9CSQoZXhlY19wcmVmaXgpL2luY2x1ZGUKQEAgLTE3OCw3ICsxODMsNyBAQAogIEFCSUZMQUdTPQlAQUJJRkxBR1NACiAgCiAgIyBEZXRhaWxlZCBkZXN0aW5hdGlvbiBkaXJlY3RvcmllcwotQEAgLTc1NSw2ICs3NTcsNyBAQCBNb2R1bGVzL2dldHBhdGgubzogJChzcmNkaXIpL01vZHVsZXMvZ2V0cGF0aC5jIE1ha2VmaWxlCitAQCAtNzMxLDYgKzczMyw3IEBAIE1vZHVsZXMvZ2V0cGF0aC5vOiAkKHNyY2RpcikvTW9kdWxlcy9nZXQKICAJCS1ERVhFQ19QUkVGSVg9JyIkKGV4ZWNfcHJlZml4KSInIFwKICAJCS1EVkVSU0lPTj0nIiQoVkVSU0lPTikiJyBcCiAgCQktRFZQQVRIPSciJChWUEFUSCkiJyBcCkBAIC0xODYsOCArMTkxLDggQEAKICAJCS1vICRAICQoc3JjZGlyKS9Nb2R1bGVzL2dldHBhdGguYwogIAogIFByb2dyYW1zL3B5dGhvbi5vOiAkKHNyY2RpcikvUHJvZ3JhbXMvcHl0aG9uLmMKLUBAIC04MzUsNyArODM4LDcgQEAgJChPUENPREVfSCk6ICQoc3JjZGlyKS9MaWIvb3Bjb2RlLnB5ICQoT1BDT0RFX0hfU0NSSVBUKQotIFB5dGhvbi9jb21waWxlLm8gUHl0aG9uL3N5bXRhYmxlLm8gUHl0aG9uL2FzdC5vOiAkKEdSQU1NQVJfSCkgJChBU1RfSCkKK0BAIC04MTMsNyArODE2LDcgQEAgcmVnZW4tb3Bjb2RlOgorIFB5dGhvbi9jb21waWxlLm8gUHl0aG9uL3N5bXRhYmxlLm8gUHl0aG9uL2FzdC5vOiAkKHNyY2RpcikvSW5jbHVkZS9ncmFtaW5pdC5oICQoc3JjZGlyKS9JbmNsdWRlL1B5dGhvbi1hc3QuaAogIAogIFB5dGhvbi9nZXRwbGF0Zm9ybS5vOiAkKHNyY2RpcikvUHl0aG9uL2dldHBsYXRmb3JtLmMKIC0JCSQoQ0MpIC1jICQoUFlfQ09SRV9DRkxBR1MpIC1EUExBVEZPUk09JyIkKE1BQ0hERVApIicgLW8gJEAgJChzcmNkaXIpL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCkBAIC0xOTUsMTAgKzIwMCwxMCBAQAogIAogIFB5dGhvbi9pbXBvcnRkbC5vOiAkKHNyY2RpcikvUHl0aG9uL2ltcG9ydGRsLmMKICAJCSQoQ0MpIC1jICQoUFlfQ09SRV9DRkxBR1MpIC1JJChETElOQ0xESVIpIC1vICRAICQoc3JjZGlyKS9QeXRob24vaW1wb3J0ZGwuYwotZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2V0cGF0aC5jIGIvTW9kdWxlcy9nZXRwYXRoLmMKLWluZGV4IDE4ZGViNjAuLmEwMWMzZjggMTAwNjQ0Ci0tLS0gYS9Nb2R1bGVzL2dldHBhdGguYwotKysrIGIvTW9kdWxlcy9nZXRwYXRoLmMKK0luZGV4OiBQeXRob24tMy41LjQvTW9kdWxlcy9nZXRwYXRoLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBQeXRob24tMy41LjQub3JpZy9Nb2R1bGVzL2dldHBhdGguYworKysrIFB5dGhvbi0zLjUuNC9Nb2R1bGVzL2dldHBhdGguYwogQEAgLTEwNSw2ICsxMDUsMTMgQEAKICAjZXJyb3IgIlBSRUZJWCwgRVhFQ19QUkVGSVgsIFZFUlNJT04sIGFuZCBWUEFUSCBtdXN0IGJlIGNvbnN0YW50IGRlZmluZWQiCiAgI2VuZGlmCkBAIC0yMzAsMTAgKzIzNSwxMCBAQAogIAogICAgICBpZiAoIV9weXRob25wYXRoIHx8ICFfcHJlZml4IHx8ICFfZXhlY19wcmVmaXggfHwgIWxpYl9weXRob24pIHsKICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoCi1kaWZmIC0tZ2l0IGEvUHl0aG9uL2dldHBsYXRmb3JtLmMgYi9QeXRob24vZ2V0cGxhdGZvcm0uYwotaW5kZXggNjg5OTE0MC4uNjZhNDljNiAxMDA2NDQKLS0tLSBhL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCi0rKysgYi9QeXRob24vZ2V0cGxhdGZvcm0uYworSW5kZXg6IFB5dGhvbi0zLjUuNC9QeXRob24vZ2V0cGxhdGZvcm0uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFB5dGhvbi0zLjUuNC5vcmlnL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCisrKysgUHl0aG9uLTMuNS40L1B5dGhvbi9nZXRwbGF0Zm9ybS5jCiBAQCAtMTAsMyArMTAsMjMgQEAgUHlfR2V0UGxhdGZvcm0odm9pZCkKICB7CiAgCXJldHVybiBQTEFURk9STTsKQEAgLTI1OCwxMSArMjYzLDExIEBACiArewogKwlyZXR1cm4gTElCOwogK30KLWRpZmYgLS1naXQgYS9QeXRob24vc3lzbW9kdWxlLmMgYi9QeXRob24vc3lzbW9kdWxlLmMKLWluZGV4IDhkN2UwNWEuLmQ5ZGVlMGYgMTAwNjQ0Ci0tLS0gYS9QeXRob24vc3lzbW9kdWxlLmMKLSsrKyBiL1B5dGhvbi9zeXNtb2R1bGUuYwotQEAgLTE3OTAsNiArMTc5MCwxMCBAQCBfUHlTeXNfSW5pdCh2b2lkKQorSW5kZXg6IFB5dGhvbi0zLjUuNC9QeXRob24vc3lzbW9kdWxlLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBQeXRob24tMy41LjQub3JpZy9QeXRob24vc3lzbW9kdWxlLmMKKysrKyBQeXRob24tMy41LjQvUHl0aG9uL3N5c21vZHVsZS5jCitAQCAtMTgyNyw2ICsxODI3LDEwIEBAIF9QeVN5c19Jbml0KHZvaWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21TdHJpbmcoUHlfR2V0Q29weXJpZ2h0KCkpKTsKICAgICAgU0VUX1NZU19GUk9NX1NUUklORygicGxhdGZvcm0iLAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tU3RyaW5nKFB5X0dldFBsYXRmb3JtKCkpKTsKQEAgLTI3MywxMSArMjc4LDExIEBACiAgICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImV4ZWN1dGFibGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0dldFByb2dyYW1GdWxsUGF0aCgpLCAtMSkpOwotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNzA3MzI0ZC4uZThkNTlhMyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtODgzLDYgKzg4Myw0MSBAQCBQTEFURElSPXBsYXQtJE1BQ0hERVAKK0luZGV4OiBQeXRob24tMy41LjQvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS40Lm9yaWcvY29uZmlndXJlLmFjCisrKysgUHl0aG9uLTMuNS40L2NvbmZpZ3VyZS5hYworQEAgLTg4NSw2ICs4ODUsNDEgQEAgUExBVERJUj1wbGF0LSRNQUNIREVQCiAgQUNfU1VCU1QoUExBVERJUikKICBBQ19TVUJTVChQTEFURk9STV9UUklQTEVUKQogIApAQCAtMzE5LDExICszMjQsMTEgQEAKICAKICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAtV2wsLS1uby1hcy1uZWVkZWRdKQogIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi1kaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQotaW5kZXggNmQyNmRlYi4uN2IxNDIxNSAxMDA2NDQKLS0tLSBhL3NldHVwLnB5Ci0rKysgYi9zZXR1cC5weQotQEAgLTQ5NSw3ICs0OTUsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CitJbmRleDogUHl0aG9uLTMuNS40L3NldHVwLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS40Lm9yaWcvc2V0dXAucHkKKysrKyBQeXRob24tMy41LjQvc2V0dXAucHkKK0BAIC00OTQsNyArNDk0LDcgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgogICAgICAgICAgIyBkaXJlY3RvcmllcyAoaS5lLiAnLicgYW5kICdJbmNsdWRlJykgbXVzdCBiZSBmaXJzdC4gIFNlZSBpc3N1ZQogICAgICAgICAgIyAxMDUyMC4KICAgICAgICAgIGlmIG5vdCBjcm9zc19jb21waWxpbmc6CkBAIC0zMzIsNyArMzM3LDcgQEAKICAgICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnMsICcvdXNyL2xvY2FsL2luY2x1ZGUnKQogICAgICAgICAgIyBvbmx5IGNoYW5nZSB0aGlzIGZvciBjcm9zcyBidWlsZHMgZm9yIDMuMywgaXNzdWVzIG9uIE1hZ2VpYQogICAgICAgICAgaWYgY3Jvc3NfY29tcGlsaW5nOgotQEAgLTU1Myw4ICs1NTMsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CitAQCAtNTUyLDggKzU1Miw3IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKICAgICAgICAgICMgYmUgYXNzdW1lZCB0aGF0IG5vIGFkZGl0aW9uYWwgLUksLUwgZGlyZWN0aXZlcyBhcmUgbmVlZGVkLgogICAgICAgICAgaWYgbm90IGNyb3NzX2NvbXBpbGluZzoKICAgICAgICAgICAgICBsaWJfZGlycyA9IHNlbGYuY29tcGlsZXIubGlicmFyeV9kaXJzICsgWwpAQCAtMzQyLDcgKzM0Nyw3IEBACiAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICBpbmNfZGlycyA9IHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzICsgWycvdXNyL2luY2x1ZGUnXQogICAgICAgICAgZWxzZToKLUBAIC03NDYsMTEgKzc0NSwxMSBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CitAQCAtNzQ1LDExICs3NDQsMTEgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgogICAgICAgICAgICAgIGVsaWYgY3Vyc2VzX2xpYnJhcnk6CiAgICAgICAgICAgICAgICAgIHJlYWRsaW5lX2xpYnMuYXBwZW5kKGN1cnNlc19saWJyYXJ5KQogICAgICAgICAgICAgIGVsaWYgc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycyArCkBAIC0zNTYsNiArMzYxLDMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2xpbmtfYXJncz1yZWFkbGluZV9leHRyYV9saW5rX2FyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9cmVhZGxpbmVfbGlicykgKQogICAgICAgICAgZWxzZToKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy1tYW5pZmVzdC5qc29uIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLW1hbmlmZXN0Lmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ5MWYzNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy1tYW5pZmVzdC5qc29uCkBAIC0wLDAgKzEsMTE0OSBAQAoreworICAgICIydG8zIjogeworICAgICAgICAiY2FjaGVkIjogW10sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2JpbmRpcn0vMnRvMy0qIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYjJ0bzMiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYXV0b21hdGVkIFB5dGhvbiAyIHRvIDMgY29kZSB0cmFuc2xhdG9yIgorICAgIH0sCisgICAgImFzeW5jaW8iOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvYXN5bmNpbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25jdXJyZW50IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbmN1cnJlbnQvZnV0dXJlcyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvbXByZXNzaW9uIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgImxvZ2dpbmciLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgIm11bHRpcHJvY2Vzc2luZyIsCisgICAgICAgICAgICAibmV0Y2xpZW50IiwKKyAgICAgICAgICAgICJwaWNrbGUiLAorICAgICAgICAgICAgInNoZWxsIiwKKyAgICAgICAgICAgICJzdHJpbmdvbGQiLAorICAgICAgICAgICAgInRocmVhZGluZyIsCisgICAgICAgICAgICAidW5peGFkbWluIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gQXN5bmNocm9ub3VzIEkvIgorICAgIH0sCisgICAgImF1ZGlvIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY2h1bmsuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc25kaGRyLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N1bmF1LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3dhdmUuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NodW5rLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2F1ZGlvb3AuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9vc3NhdWRpb2Rldi4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NuZGhkci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdW5hdS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS93YXZlLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEF1ZGlvIEhhbmRsaW5nIgorICAgIH0sCisgICAgImNvZGVjcyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3hkcmxpYi4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX211bHRpYnl0ZWNvZGVjLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUveGRybGliLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGNvZGVjIgorICAgIH0sCisgICAgImNvbXBpbGUiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb21waWxlYWxsLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3B5X2NvbXBpbGUuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbXBpbGVhbGwucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcHlfY29tcGlsZS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImFzeW5jaW8iLAorICAgICAgICAgICAgImNvbXByZXNzaW9uIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgImxvZ2dpbmciLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgIm11bHRpcHJvY2Vzc2luZyIsCisgICAgICAgICAgICAicGlja2xlIiwKKyAgICAgICAgICAgICJzaGVsbCIsCisgICAgICAgICAgICAic3RyaW5nb2xkIiwKKyAgICAgICAgICAgICJ0aHJlYWRpbmciLAorICAgICAgICAgICAgInVuaXhhZG1pbiIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGJ5dGVjb2RlIGNvbXBpbGF0aW9uIHN1cHBvcnQiCisgICAgfSwKKyAgICAiY29tcHJlc3Npb24iOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fY29tcHJlc3Npb24uKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYnoyLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2d6aXAuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbHptYS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90YXJmaWxlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3ppcGZpbGUuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19jb21wcmVzc2lvbi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9iejIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZ3ppcC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fYnoyLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2x6bWEuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC96bGliLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbHptYS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90YXJmaWxlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3ppcGZpbGUucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJzaGVsbCIsCisgICAgICAgICAgICAidW5peGFkbWluIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaGlnaC1sZXZlbCBjb21wcmVzc2lvbiBzdXBwb3J0IgorICAgIH0sCisgICAgImNvcmUiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fX2Z1dHVyZV9fLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19ib290bG9jYWxlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19jb2xsZWN0aW9uc19hYmMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX21hcmt1cGJhc2UuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX3NpdGVidWlsdGlucy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fc3lzY29uZmlnZGF0YS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fd2Vha3JlZnNldC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9hYmMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYXJncGFyc2UuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYXN0LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2Jpc2VjdC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb2RlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NvZGVjcy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb2Rlb3AuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29uZmlncGFyc2VyLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NvbnRleHRsaWIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29weS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb3B5cmVnLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2Nzdi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kaXMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZW51bS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9mdW5jdG9vbHMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ2VuZXJpY3BhdGguKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ2V0b3B0LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2dldHRleHQuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaGVhcHEuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaW1wLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2luc3BlY3QuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaW8uKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18va2V5d29yZC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9saW5lY2FjaGUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbG9jYWxlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL29wY29kZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9vcGVyYXRvci4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9vcHRwYXJzZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9vcy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wbGF0Zm9ybS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wb3NpeHBhdGguKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcmUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcmVwcmxpYi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9ybGNvbXBsZXRlci4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zZWxlY3RvcnMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc2lnbmFsLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NpdGUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3JlX2NvbXBpbGUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3JlX2NvbnN0YW50cy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zcmVfcGFyc2UuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3RhdC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zdHJpbmdwcmVwLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N0cnVjdC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zdWJwcm9jZXNzLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N5bWJvbC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zeXNjb25maWcuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdGV4dHdyYXAuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdGhyZWFkaW5nLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3Rva2VuLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3Rva2VuaXplLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3RyYWNlYmFjay4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90eXBlcy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy93YXJuaW5ncy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy93ZWFrcmVmLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbGxlY3Rpb25zL19fcHljYWNoZV9fIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbGxlY3Rpb25zL19fcHljYWNoZV9fL2FiYy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9lbmNvZGluZ3MvX19weWNhY2hlX18iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZW5jb2RpbmdzL19fcHljYWNoZV9fL2FsaWFzZXMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZW5jb2RpbmdzL19fcHljYWNoZV9fL2xhdGluXzEuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZW5jb2RpbmdzL19fcHljYWNoZV9fL3V0Zl84LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi9fX3B5Y2FjaGVfXyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbXBvcnRsaWIvX19weWNhY2hlX18vYWJjLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi9fX3B5Y2FjaGVfXy9tYWNoaW5lcnkuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW1wb3J0bGliL19fcHljYWNoZV9fL3V0aWwuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2JpbmRpcn0vcHl0aG9uKlshLWNvbmZpZ10iLAorICAgICAgICAgICAgIiR7aW5jbHVkZWRpcn0vcHl0aG9uJHtQWVRIT05fQklOQUJJfS9weWNvbmZpZyouaCIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX2NvbGxlY3Rpb25zX2FiYy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3NpdGVidWlsdGlucy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29sbGVjdGlvbnMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NpdGVjdXN0b21pemUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvVXNlckRpY3QucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvVXNlckxpc3QucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvVXNlclN0cmluZy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX2Z1dHVyZV9fLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19hYmNvbGwucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX2Jvb3Rsb2NhbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX2NvbGxlY3Rpb25zX2FiYy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fbWFya3VwYmFzZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fc2l0ZWJ1aWx0aW5zLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19zeXNjb25maWdkYXRhLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L193ZWFrcmVmc2V0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2FiYy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9hcmdwYXJzZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9hc3QucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvYmlzZWN0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvZGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29kZWNzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvZGVvcC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb2xsZWN0aW9ucyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb2xsZWN0aW9ucy9hYmMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29uZmlncGFyc2VyLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbnRleHRsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29weS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb3B5cmVnLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2Nzdi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kaXMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZW5jb2RpbmdzIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2VuY29kaW5ncy9hbGlhc2VzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2VuY29kaW5ncy9sYXRpbl8xLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2VuY29kaW5ncy91dGZfOC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9lbnVtLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2Z1bmN0b29scy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9nZW5lcmljcGF0aC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9nZXRvcHQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZ2V0dGV4dC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9oZWFwcS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbXAucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW1wb3J0bGliIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi9hYmMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW1wb3J0bGliL21hY2hpbmVyeS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbXBvcnRsaWIvdXRpbC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbnNwZWN0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2lvLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2tleXdvcmQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vX3N0cnVjdC4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL2JpbmFzY2lpLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vdGltZS4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3hyZWFkbGluZXMuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fYmlzZWN0Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2Nzdi4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19oZWFwcS4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19vcGNvZGUuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fcG9zaXhzdWJwcm9jZXNzLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3N0cnVjdC4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2FycmF5Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvYmluYXNjaWkuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9tYXRoLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvcGFyc2VyLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvcmVhZGxpbmUuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9zZWxlY3QuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC90aW1lLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvdW5pY29kZWRhdGEuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC94cmVhZGxpbmVzLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGluZWNhY2hlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xvY2FsZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9uZXcucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvb3Bjb2RlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L29wZXJhdG9yLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L29wdHBhcnNlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L29zLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3BsYXRmb3JtLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3Bvc2l4cGF0aC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9yZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9yZXBybGliLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3JsY29tcGxldGVyLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NlbGVjdG9ycy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaWduYWwucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc2l0ZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcmVfY29tcGlsZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcmVfY29uc3RhbnRzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NyZV9wYXJzZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdGF0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3N0cmluZ3ByZXAucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3RydWN0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3N1YnByb2Nlc3MucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3ltYm9sLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3N5c2NvbmZpZy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90ZXh0d3JhcC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90aHJlYWRpbmcucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdG9rZW4ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdG9rZW5pemUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdHJhY2ViYWNrLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3R5cGVzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3dhcm5pbmdzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3dlYWtyZWYucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFtdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaW50ZXJwcmV0ZXIgYW5kIGNvcmUgbW9kdWxlcyIKKyAgICB9LAorICAgICJjcnlwdCI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NyeXB0LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2hhc2hsaWIuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NyeXB0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2hhc2hsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2NyeXB0Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2hhc2hsaWIuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fc2hhMjU2Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3NoYTUxMi4qLnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAibWF0aCIsCisgICAgICAgICAgICAic3RyaW5nb2xkIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYmFzaWMgY3J5cHRvZ3JhcGhpYyBhbmQgaGFzaGluZyBzdXBwb3J0IgorICAgIH0sCisgICAgImN0eXBlcyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jdHlwZXMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2N0eXBlcy4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19jdHlwZXNfdGVzdC4qLnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEMgdHlwZXMgc3VwcG9ydCIKKyAgICB9LAorICAgICJjdXJzZXMiOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY3Vyc2VzIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19jdXJzZXMuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fY3Vyc2VzX3BhbmVsLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gY3Vyc2VzIHN1cHBvcnQiCisgICAgfSwKKyAgICAiZGF0ZXRpbWUiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fc3RycHRpbWUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY2FsZW5kYXIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZGF0ZXRpbWUuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19zdHJwdGltZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jYWxlbmRhci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kYXRldGltZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fZGF0ZXRpbWUuKi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBjYWxlbmRhciBhbmQgdGltZSBzdXBwb3J0IgorICAgIH0sCisgICAgImRiIjogeworICAgICAgICAiY2FjaGVkIjogW10sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2RibSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fZGJtLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZmlsZS1iYXNlZCBkYXRhYmFzZSBzdXBwb3J0IgorICAgIH0sCisgICAgImRlYnVnZ2VyIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYmRiLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BkYi4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvYmRiLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3BkYi5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgInBwcmludCIsCisgICAgICAgICAgICAic2hlbGwiLAorICAgICAgICAgICAgInN0cmluZ29sZCIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGRlYnVnZ2VyIgorICAgIH0sCisgICAgImRldiI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtiYXNlX2xpYmRpcn0vKi5hIiwKKyAgICAgICAgICAgICIke2Jhc2VfbGliZGlyfS8qLm8iLAorICAgICAgICAgICAgIiR7YmluZGlyfS9weXRob24qLWNvbmZpZyIsCisgICAgICAgICAgICAiJHtkYXRhZGlyfS9hY2xvY2FsIiwKKyAgICAgICAgICAgICIke2RhdGFkaXJ9L3BrZ2NvbmZpZyIsCisgICAgICAgICAgICAiJHtpbmNsdWRlZGlyfSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9LyouYSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9LyoubGEiLAorICAgICAgICAgICAgIiR7bGliZGlyfS8qLm8iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9saWIqJHtTT0xJQlNERVZ9IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcGtnY29uZmlnIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbmZpZyovTWFrZWZpbGUiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29uZmlnKi9NYWtlZmlsZS9fX3B5Y2FjaGVfXyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBkZXZlbG9wbWVudCBwYWNrYWdlIgorICAgIH0sCisgICAgImRpZmZsaWIiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kaWZmbGliLioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kaWZmbGliLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGhlbHBlcnMgZm9yIGNvbXB1dGluZyBkZWx0YXMgYmV0d2VlbiBvYmplY3RzIgorICAgIH0sCisgICAgImRpc3R1dGlscyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kaXN0dXRpbHMiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gRGlzdHJpYnV0aW9uIFV0aWxpdGllcyIKKyAgICB9LAorICAgICJkaXN0dXRpbHMtc3RhdGljZGV2IjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29uZmlnL19fcHljYWNoZV9fL2xpYiouYSIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29uZmlnL2xpYiouYSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImRpc3R1dGlscyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGRpc3RyaWJ1dGlvbiB1dGlsaXRpZXMgKHN0YXRpYyBsaWJyYXJpZXMpIgorICAgIH0sCisgICAgImRvY3Rlc3QiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kb2N0ZXN0LioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kb2N0ZXN0LnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiZGVidWdnZXIiLAorICAgICAgICAgICAgImRpZmZsaWIiLAorICAgICAgICAgICAgImxvZ2dpbmciLAorICAgICAgICAgICAgInBwcmludCIsCisgICAgICAgICAgICAic2hlbGwiLAorICAgICAgICAgICAgInN0cmluZ29sZCIsCisgICAgICAgICAgICAidW5pdHRlc3QiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBmcmFtZXdvcmsgZm9yIHJ1bm5pbmcgZXhhbXBsZXMgaW4gZG9jc3RyaW5ncyIKKyAgICB9LAorICAgICJlbWFpbCI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2ltYXBsaWIuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2VtYWlsIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltYXBsaWIucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIsCisgICAgICAgICAgICAiZGF0ZXRpbWUiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJtYXRoIiwKKyAgICAgICAgICAgICJuZXRjbGllbnQiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBlbWFpbCBzdXBwb3J0IgorICAgIH0sCisgICAgImZjbnRsIjogeworICAgICAgICAiY2FjaGVkIjogW10sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2ZjbnRsLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24ncyBmY250bCBpbnRlcmZhY2UiCisgICAgfSwKKyAgICAiZ2RibSI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fZ2RibS4qLnNvIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEdOVSBkYXRhYmFzZSBzdXBwb3J0IgorICAgIH0sCisgICAgImh0bWwiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9mb3JtYXR0ZXIuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2Zvcm1hdHRlci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9odG1sIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEhUTUwgcHJvY2Vzc2luZyBzdXBwb3J0IgorICAgIH0sCisgICAgImlkbGUiOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7YmluZGlyfS9pZGxlKiIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pZGxlbGliIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEludGVncmF0ZWQgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQiCisgICAgfSwKKyAgICAiaW1hZ2UiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb2xvcnN5cy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9pbWdoZHIuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbG9yc3lzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltZ2hkci5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBncmFwaGljYWwgaW1hZ2UgaGFuZGxpbmciCisgICAgfSwKKyAgICAiaW8iOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fcHlpby4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9pcGFkZHJlc3MuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcGlwZXMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc29ja2V0LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NzbC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90ZW1wZmlsZS4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX3B5aW8ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaXBhZGRyZXNzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19zb2NrZXQuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fc3NsLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvdGVybWlvcy4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3BpcGVzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NvY2tldC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zc2wucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdGVtcGZpbGUucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb21wcmVzc2lvbiIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAiY3J5cHQiLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgIm5ldGNsaWVudCIsCisgICAgICAgICAgICAic2hlbGwiLAorICAgICAgICAgICAgInVuaXhhZG1pbiIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGxvdy1sZXZlbCBJL08iCisgICAgfSwKKyAgICAianNvbiI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9qc29uIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19qc29uLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gSlNPTiBzdXBwb3J0IgorICAgIH0sCisgICAgImxvZ2dpbmciOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbG9nZ2luZyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgInN0cmluZ29sZCIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGxvZ2dpbmcgc3VwcG9ydCIKKyAgICB9LAorICAgICJtYWlsYm94IjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbWFpbGJveC4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbWFpbGJveC5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IiwKKyAgICAgICAgICAgICJkYXRldGltZSIsCisgICAgICAgICAgICAiZW1haWwiLAorICAgICAgICAgICAgImZjbnRsIiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAibWF0aCIsCisgICAgICAgICAgICAibWltZSIsCisgICAgICAgICAgICAibmV0Y2xpZW50IiwKKyAgICAgICAgICAgICJzdHJpbmdvbGQiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBtYWlsYm94IGZvcm1hdCBzdXBwb3J0IgorICAgIH0sCisgICAgIm1hdGgiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9yYW5kb20uKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19yYW5kb20uKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9jbWF0aC4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3JhbmRvbS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbWF0aCBzdXBwb3J0IgorICAgIH0sCisgICAgIm1pbWUiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9xdW9wcmkuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdXUuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3F1b3ByaS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS91dS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBNSU1FIGhhbmRsaW5nIEFQSXMiCisgICAgfSwKKyAgICAibW1hcCI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9tbWFwLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbWVtb3J5LW1hcHBlZCBmaWxlIHN1cHBvcnQiCisgICAgfSwKKyAgICAibW9kdWxlcyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgIjJ0bzMiLAorICAgICAgICAgICAgImFzeW5jaW8iLAorICAgICAgICAgICAgImF1ZGlvIiwKKyAgICAgICAgICAgICJjb2RlY3MiLAorICAgICAgICAgICAgImNvbXBpbGUiLAorICAgICAgICAgICAgImNvbXByZXNzaW9uIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIsCisgICAgICAgICAgICAiY3R5cGVzIiwKKyAgICAgICAgICAgICJjdXJzZXMiLAorICAgICAgICAgICAgImRhdGV0aW1lIiwKKyAgICAgICAgICAgICJkYiIsCisgICAgICAgICAgICAiZGVidWdnZXIiLAorICAgICAgICAgICAgImRpZmZsaWIiLAorICAgICAgICAgICAgImRpc3R1dGlscyIsCisgICAgICAgICAgICAiZG9jdGVzdCIsCisgICAgICAgICAgICAiZW1haWwiLAorICAgICAgICAgICAgImZjbnRsIiwKKyAgICAgICAgICAgICJodG1sIiwKKyAgICAgICAgICAgICJpZGxlIiwKKyAgICAgICAgICAgICJpbWFnZSIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgImpzb24iLAorICAgICAgICAgICAgImxvZ2dpbmciLAorICAgICAgICAgICAgIm1haWxib3giLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgIm1pbWUiLAorICAgICAgICAgICAgIm1tYXAiLAorICAgICAgICAgICAgIm11bHRpcHJvY2Vzc2luZyIsCisgICAgICAgICAgICAibmV0Y2xpZW50IiwKKyAgICAgICAgICAgICJuZXRzZXJ2ZXIiLAorICAgICAgICAgICAgIm51bWJlcnMiLAorICAgICAgICAgICAgInBpY2tsZSIsCisgICAgICAgICAgICAicGtndXRpbCIsCisgICAgICAgICAgICAicGxpc3RsaWIiLAorICAgICAgICAgICAgInBwcmludCIsCisgICAgICAgICAgICAicHJvZmlsZSIsCisgICAgICAgICAgICAicHlkb2MiLAorICAgICAgICAgICAgInJlc291cmNlIiwKKyAgICAgICAgICAgICJydW5weSIsCisgICAgICAgICAgICAic2hlbGwiLAorICAgICAgICAgICAgInNtdHBkIiwKKyAgICAgICAgICAgICJzcWxpdGUzIiwKKyAgICAgICAgICAgICJzdHJpbmdvbGQiLAorICAgICAgICAgICAgInN5c2xvZyIsCisgICAgICAgICAgICAidGVybWluYWwiLAorICAgICAgICAgICAgInRocmVhZGluZyIsCisgICAgICAgICAgICAidGtpbnRlciIsCisgICAgICAgICAgICAidHlwaW5nIiwKKyAgICAgICAgICAgICJ1bml0dGVzdCIsCisgICAgICAgICAgICAidW5peGFkbWluIiwKKyAgICAgICAgICAgICJ4bWwiLAorICAgICAgICAgICAgInhtbHJwYyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiQWxsIFB5dGhvbiBtb2R1bGVzIgorICAgIH0sCisgICAgIm11bHRpcHJvY2Vzc2luZyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fbXVsdGlwcm9jZXNzaW5nLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbXVsdGlwcm9jZXNzaW5nIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG11bHRpcHJvY2Vzc2luZyBzdXBwb3J0IgorICAgIH0sCisgICAgIm5ldGNsaWVudCI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2Jhc2U2NC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9mdHBsaWIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vaG1hYy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9taW1ldHlwZXMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbm50cGxpYi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wb3BsaWIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc210cGxpYi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90ZWxuZXRsaWIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdXVpZC4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvYmFzZTY0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2Z0cGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9obWFjLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2h0dHAiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaHR0cC9fX3B5Y2FjaGVfXyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9taW1ldHlwZXMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbm50cGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9wb3BsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc210cGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90ZWxuZXRsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdXJsbGliIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3VybGxpYi9fX3B5Y2FjaGVfXyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS91dWlkLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29tcHJlc3Npb24iLAorICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IiwKKyAgICAgICAgICAgICJjdHlwZXMiLAorICAgICAgICAgICAgImRhdGV0aW1lIiwKKyAgICAgICAgICAgICJlbWFpbCIsCisgICAgICAgICAgICAiaW8iLAorICAgICAgICAgICAgIm1hdGgiLAorICAgICAgICAgICAgIm1pbWUiLAorICAgICAgICAgICAgInNoZWxsIiwKKyAgICAgICAgICAgICJzdHJpbmdvbGQiLAorICAgICAgICAgICAgInVuaXhhZG1pbiIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEludGVybmV0IFByb3RvY29sIGNsaWVudHMiCisgICAgfSwKKyAgICAibmV0c2VydmVyIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY2dpLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NvY2tldHNlcnZlci4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY2dpLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NvY2tldHNlcnZlci5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvbXByZXNzaW9uIiwKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjcnlwdCIsCisgICAgICAgICAgICAiZGF0ZXRpbWUiLAorICAgICAgICAgICAgImVtYWlsIiwKKyAgICAgICAgICAgICJodG1sIiwKKyAgICAgICAgICAgICJpbyIsCisgICAgICAgICAgICAibWF0aCIsCisgICAgICAgICAgICAibWltZSIsCisgICAgICAgICAgICAibmV0Y2xpZW50IiwKKyAgICAgICAgICAgICJzaGVsbCIsCisgICAgICAgICAgICAic3RyaW5nb2xkIiwKKyAgICAgICAgICAgICJ1bml4YWRtaW4iCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBJbnRlcm5ldCBQcm90b2NvbCBzZXJ2ZXJzIgorICAgIH0sCisgICAgIm51bWJlcnMiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fcHlkZWNpbWFsLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2RlY2ltYWwuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZnJhY3Rpb25zLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL251bWJlcnMuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19weWRlY2ltYWwucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZGVjaW1hbC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9mcmFjdGlvbnMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2RlY2ltYWwuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9udW1iZXJzLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG51bWJlciBBUElzIgorICAgIH0sCisgICAgInBpY2tsZSI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19jb21wYXRfcGlja2xlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BpY2tsZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9waWNrbGV0b29scy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zaGVsdmUuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19jb21wYXRfcGlja2xlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19waWNrbGUuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9waWNrbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcGlja2xldG9vbHMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc2hlbHZlLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHNlcmlhbGlzYXRpb24vcGVyc2lzdGVuY2Ugc3VwcG9ydCIKKyAgICB9LAorICAgICJwa2d1dGlsIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcGtndXRpbC4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcGtndXRpbC5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBwYWNrYWdlIGV4dGVuc2lvbiB1dGlsaXR5IHN1cHBvcnQiCisgICAgfSwKKyAgICAicGxpc3RsaWIiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wbGlzdGxpYi4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcGxpc3RsaWIucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJkYXRldGltZSIsCisgICAgICAgICAgICAieG1sIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJHZW5lcmF0ZSBhbmQgcGFyc2UgTWFjIE9TIFggLnBsaXN0IGZpbGVzIgorICAgIH0sCisgICAgInBwcmludCI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BwcmludC4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcHByaW50LnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHByZXR0eS1wcmludCBzdXBwb3J0IgorICAgIH0sCisgICAgInByb2ZpbGUiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jUHJvZmlsZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wcm9maWxlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BzdGF0cy4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY1Byb2ZpbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2xzcHJvZi4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3Byb2ZpbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcHN0YXRzLnB5IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGJhc2ljIHBlcmZvcm1hbmNlIHByb2ZpbGluZyBzdXBwb3J0IgorICAgIH0sCisgICAgInB5ZG9jIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcHlkb2MuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2JpbmRpcn0vcHlkb2MqIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3B5ZG9jLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3B5ZG9jX2RhdGEiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJuZXRjbGllbnQiLAorICAgICAgICAgICAgInBrZ3V0aWwiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBpbnRlcmFjdGl2ZSBoZWxwIHN1cHBvcnQiCisgICAgfSwKKyAgICAicmVzb3VyY2UiOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvcmVzb3VyY2UuKi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiByZXNvdXJjZSBjb250cm9sIGludGVyZmFjZSIKKyAgICB9LAorICAgICJydW5weSI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3J1bnB5LioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9ydW5weS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgInBrZ3V0aWwiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBoZWxwZXIgZm9yIGxvY2F0aW5nL2V4ZWN1dGluZyBzY3JpcHRzIGluIG1vZHVsZSBuYW1lc3BhY2UiCisgICAgfSwKKyAgICAic2hlbGwiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jbWQuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZm5tYXRjaC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9nbG9iLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NobGV4LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NodXRpbC4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY21kLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ZubWF0Y2gucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZ2xvYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaGxleC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaHV0aWwucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb21wcmVzc2lvbiIsCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAic3RyaW5nb2xkIiwKKyAgICAgICAgICAgICJ1bml4YWRtaW4iCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBzaGVsbC1saWtlIGZ1bmN0aW9uYWxpdHkiCisgICAgfSwKKyAgICAic210cGQiOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9hc3luY2hhdC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9hc3luY29yZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zbXRwZC4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7YmluZGlyfS9zbXRwZC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9hc3luY2hhdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9hc3luY29yZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zbXRwZC5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImNyeXB0IiwKKyAgICAgICAgICAgICJkYXRldGltZSIsCisgICAgICAgICAgICAiZW1haWwiLAorICAgICAgICAgICAgImlvIiwKKyAgICAgICAgICAgICJtYXRoIiwKKyAgICAgICAgICAgICJtaW1lIiwKKyAgICAgICAgICAgICJuZXRjbGllbnQiLAorICAgICAgICAgICAgInN0cmluZ29sZCIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFNpbXBsZSBNYWlsIFRyYW5zcG9ydCBEYWVtb24iCisgICAgfSwKKyAgICAic3FsaXRlMyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NxbGl0ZTMvX19weWNhY2hlX18iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3FsaXRlMy9fX3B5Y2FjaGVfXy9kYmFwaTIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3FsaXRlMy9fX3B5Y2FjaGVfXy9kdW1wLioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fc3FsaXRlMy4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NxbGl0ZTMvZGJhcGkyLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NxbGl0ZTMvZHVtcC5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImRhdGV0aW1lIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gU3FsaXRlMyBkYXRhYmFzZSBzdXBwb3J0IgorICAgIH0sCisgICAgInNxbGl0ZTMtdGVzdHMiOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3FsaXRlMy90ZXN0IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIsCisgICAgICAgICAgICAidGVzdHMiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBTcWxpdGUzIGRhdGFiYXNlIHN1cHBvcnQgdGVzdHMiCisgICAgfSwKKyAgICAic3RyaW5nb2xkIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3RyaW5nLioucHljIgorICAgICAgICBdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdHJpbmcucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gc3RyaW5nIEFQSXMgW2RlcHJlY2F0ZWRdIgorICAgIH0sCisgICAgInN5c2xvZyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9zeXNsb2cuKi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBzeXNsb2cgaW50ZXJmYWNlIgorICAgIH0sCisgICAgInRlcm1pbmFsIjogeworICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcHR5LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3R0eS4qLnB5YyIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcHR5LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3R0eS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImlvIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gdGVybWluYWwgY29udHJvbGxpbmcgc3VwcG9ydCIKKyAgICB9LAorICAgICJ0ZXN0cyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90ZXN0IgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHRlc3RzIgorICAgIH0sCisgICAgInRocmVhZGluZyI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19kdW1teV90aHJlYWQuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX3RocmVhZGluZ19sb2NhbC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kdW1teV90aHJlYWRpbmcuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcXVldWUuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19kdW1teV90aHJlYWQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX3RocmVhZGluZ19sb2NhbC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kdW1teV90aHJlYWRpbmcucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcXVldWUucHkiCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gdGhyZWFkaW5nICYgc3luY2hyb25pemF0aW9uIHN1cHBvcnQiCisgICAgfSwKKyAgICAidGtpbnRlciI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90a2ludGVyIgorICAgICAgICBdLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29yZSIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFRjbC9UayBiaW5kaW5ncyIKKyAgICB9LAorICAgICJ0eXBpbmciOiB7CisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90eXBpbmcuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3R5cGluZy5weSIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB0eXBpbmcgc3VwcG9ydCIKKyAgICB9LAorICAgICJ1bml0dGVzdCI6IHsKKyAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS91bml0dGVzdCIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS91bml0dGVzdC8iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdW5pdHRlc3QvX19weWNhY2hlX18iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJkaWZmbGliIiwKKyAgICAgICAgICAgICJsb2dnaW5nIiwKKyAgICAgICAgICAgICJwcHJpbnQiLAorICAgICAgICAgICAgInNoZWxsIiwKKyAgICAgICAgICAgICJzdHJpbmdvbGQiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB1bml0IHRlc3RpbmcgZnJhbWV3b3JrIgorICAgIH0sCisgICAgInVuaXhhZG1pbiI6IHsKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2dldHBhc3MuKi5weWMiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2dldHBhc3MucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvZ3JwLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvbmlzLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJpbyIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFVuaXggYWRtaW5pc3RyYXRpb24gc3VwcG9ydCIKKyAgICB9LAorICAgICJ4bWwiOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2VsZW1lbnR0cmVlLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvcHlleHBhdC4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3htbCIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBiYXNpYyBYTUwgc3VwcG9ydCIKKyAgICB9LAorICAgICJ4bWxycGMiOiB7CisgICAgICAgICJjYWNoZWQiOiBbXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUveG1scnBjIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3htbHJwYy9fX3B5Y2FjaGVfXyIKKyAgICAgICAgXSwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgInhtbCIKKyAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFhNTC1SUEMgc3VwcG9ydCIKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLXNldHVwLnB5LW5vLWhvc3QtaGVhZGVycy1saWJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLXNldHVwLnB5LW5vLWhvc3QtaGVhZGVycy1saWJzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYmM4YjhjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy1zZXR1cC5weS1uby1ob3N0LWhlYWRlcnMtbGlicy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gNDMyMzhlMWFjMTNlMzI5ODRkMDE1YzkyYTU4NDFmM2RlMWZlMWQxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDE4IE5vdiAyMDE0IDAwOjA3OjA3IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNldHVwLnB5OiBubyBob3N0IGhlYWRlcnMgbGlicwotCi1XaGVuIHdlIGFyZSBjcm9zcy1jb21waWxpbmcsIHNldHVwLnB5IHNob3VsZCBuZXZlciBsb29rIGluIC91c3IKLW9yIC91c3IvbG9jYWwgdG8gZmluZCBoZWFkZXJzIG9yIGxpYnJhcmllcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtDcm9zcyBjb21waWxlIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gc2V0dXAucHkgfCAzIC0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQotaW5kZXggZjAyMGIyOC4uZTgzMzljZCAxMDA2NDQKLS0tLSBhL3NldHVwLnB5Ci0rKysgYi9zZXR1cC5weQotQEAgLTQ0NCwxMCArNDQ0LDcgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotICAgICAgICAgaWYgbm90IGNyb3NzX2NvbXBpbGluZzoKLSAgICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnMsIG9zLnBhdGguam9pbignL3Vzci9sb2NhbCcsIHN5cy5saWIpKQotICAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycywgJy91c3IvbG9jYWwvaW5jbHVkZScpCi0tICAgICAgICAjIG9ubHkgY2hhbmdlIHRoaXMgZm9yIGNyb3NzIGJ1aWxkcyBmb3IgMy4zLCBpc3N1ZXMgb24gTWFnZWlhCi0tICAgICAgICBpZiBjcm9zc19jb21waWxpbmc6Ci0gICAgICAgICAgICAgc2VsZi5hZGRfZ2NjX3BhdGhzKCkKLS0gICAgICAgIGlmIG5vdCBjcm9zc19jb21waWxpbmc6Ci0gICAgICAgICAgICAgc2VsZi5hZGRfbXVsdGlhcmNoX3BhdGhzKCkKLSAKLSAgICAgICAgICMgQWRkIHBhdGhzIHNwZWNpZmllZCBpbiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIExERkxBR1MgYW5kCi0tLSAKLTIuMC4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy11c2UtQ1JPU1NQWVRIT05QQVRILWZvci1QWVRIT05fRk9SX0JVSUxELnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLXVzZS1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2gKaW5kZXggNzQ0OTBkOS4uYTRmOGJkNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLXVzZS1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLXVzZS1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2gKQEAgLTEwLDExICsxMCwxMSBAQAogIGNvbmZpZ3VyZS5hYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOTg5YmFmOS4uMjg5MGM5NiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNjcsNyArNjcsNyBAQCBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorSW5kZXg6IFB5dGhvbi0zLjUuNC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBQeXRob24tMy41LjQub3JpZy9jb25maWd1cmUuYWMKKysrKyBQeXRob24tMy41LjQvY29uZmlndXJlLmFjCitAQCAtNzMsNyArNzMsNyBAQCBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgogIAkgICAgQUNfTVNHX0VSUk9SKFtweXRob24kUEFDS0FHRV9WRVJTSU9OIGludGVycHJldGVyIG5vdCBmb3VuZF0pCiAgCWZpCiAgICAgICAgICBBQ19NU0dfUkVTVUxUKCRpbnRlcnApCkBAIC0yMyw2ICsyMywzIEBACiAgICAgIGZpCiAgZWxpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IG1heWJlOyB0aGVuCiAgICAgIEFDX01TR19FUlJPUihbQ3Jvc3MgY29tcGlsaW5nIHJlcXVpcmVkIC0taG9zdD1IT1NULVRVUExFIGFuZCAtLWJ1aWxkPUFSQ0hdKQotLS0gCi0yLjAuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3JlZ2VuLWFsbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcmVnZW4tYWxsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2YjlkOWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3JlZ2VuLWFsbC5wYXRjaApAQCAtMCwwICsxLDI1IEBACitweXRob24zLW5hdGl2ZTogcnVuIHJlZ2VuLWltcG9ydGxpYiB0YXJnZXQgY29ycmVjdGx5CisKK3JlZ2VuLWltcG9ydGxpYiBkZXBlbmRzIG9uIG90aGVyIHJlZ2VuLSB0YXJnZXRzLCBzbyB3ZSBtdXN0IGJlIHN1cmUgdG8KK3J1biBpdCBhZnRlciAobW9zdCBvZikgdGhlIG90aGVycy4gIEluIHJlYWxpdHksIHdlIGRvIG5vdCBuZWVkIHRvIHJ1biBpdAorYXQgYWxsIHNpbmNlICJtYWtlIiB3aWxsIGludm9rZSBpdCwgaWYgbmVjZXNzYXJ5LiAgV2UgZG8gbm90IHdhbnQgdG8KK3JlbHkgb24gdGhhdCwgdGhvdWdoLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgorCisKKworLS0tIGEvTWFrZWZpbGUucHJlLmluCisrKysgYi9NYWtlZmlsZS5wcmUuaW4KK0BAIC03MDksNyArNzA5LDggQEAgcmVnZW4taW1wb3J0bGliOiBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydAorICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAjIFJlZ2VuZXJhdGUgYWxsIGdlbmVyYXRlZCBmaWxlcworIAorLXJlZ2VuLWFsbDogcmVnZW4tb3Bjb2RlIHJlZ2VuLW9wY29kZS10YXJnZXRzIHJlZ2VuLXR5cGVzbG90cyByZWdlbi1ncmFtbWFyIHJlZ2VuLWFzdCByZWdlbi1pbXBvcnRsaWIKKytyZWdlbi1hbGw6IHJlZ2VuLW9wY29kZSByZWdlbi1vcGNvZGUtdGFyZ2V0cyByZWdlbi10eXBlc2xvdHMgcmVnZW4tZ3JhbW1hciByZWdlbi1hc3QKKysJJChNQUtFKSByZWdlbi1pbXBvcnRsaWIKKyAKKyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgIyBTcGVjaWFsIHJ1bGVzIGZvciBvYmplY3QgZmlsZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvc2V0dXAucHktZmluZC1saWJyYXJpZXMtaW4tc3RhZ2luZy1kaXJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9zZXR1cC5weS1maW5kLWxpYnJhcmllcy1pbi1zdGFnaW5nLWRpcnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyNmJkMzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9zZXR1cC5weS1maW5kLWxpYnJhcmllcy1pbi1zdGFnaW5nLWRpcnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1QYXRjaCBzZXR1cC5weSBzbyB0aGF0IHRoZSBkZXRlY3RfbW9kdWxlcygpIGZ1bmN0aW9uIGxvb2tzIGZvciByZXF1aXJlZAotbGlicmFyaWVzIGFuZCBoZWFkZXJzIGluIFNUQUdJTkdfTElCRElSIC8gU1RBR0lOR19JTkNESVIuCi0KLVdpdGhvdXQgdGhpcyBwYXRjaCwgc2V2ZXJhbCBleHRlbnNpb24gbW9kdWxlcyBhcmUgbm90IGJ1aWx0LCBldmVuIHRob3VnaAotdGhlaXIgZGVwZW5kZW5jaWVzIGFyZSBwcmVzZW50IGluIHRoZSBjb21waWxlcidzIHNlYXJjaCBwYXRocy4KLVRoZSByZXN1bHQgaXMgdGhlIGZvbGxvd2luZyB3YXJuaW5nLCBhbmQgdWx0aW1hdGVseSBpbmNvbXBsZXRlIHBhY2thZ2VzOgotCi18IFRoZSBuZWNlc3NhcnkgYml0cyB0byBidWlsZCB0aGVzZSBvcHRpb25hbCBtb2R1bGVzIHdlcmUgbm90IGZvdW5kOgotfCBfYnoyICAgICAgICAgICAgICAgICAgX2N1cnNlc19wYW5lbCAgICAgICAgIF9kYm0KLXwgX2dkYm0gICAgICAgICAgICAgICAgIF9sem1hICAgICAgICAgICAgICAgICBfc3FsaXRlMwotfCBuaXMgICAgICAgICAgICAgICAgICAgcmVhZGxpbmUgICAgICAgICAgICAgIHpsaWIKLXwgVG8gZmluZCB0aGUgbmVjZXNzYXJ5IGJpdHMsIGxvb2sgaW4gc2V0dXAucHkgaW4gZGV0ZWN0X21vZHVsZXMoKSBmb3IgdGhlIG1vZHVsZSdzIG5hbWUuCi0KLVVwc3RyZWFtLVN0YXR1czogIEluYXBwcm9wcmlhdGUgW0Nyb3NzIGNvbXBpbGUgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IERvbWluaWMgU2FjcsOpIDxkb21pbmljLnNhY3JlQGdteC5kZT4KLQotSW5kZXg6IFB5dGhvbi0zLjQuMy9zZXR1cC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0zLjQuMy5vcmlnL3NldHVwLnB5Ci0rKysgUHl0aG9uLTMuNC4zL3NldHVwLnB5Ci1AQCAtNTIxLDYgKzUyMSw4IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgbGliX2RpcnMgPSBzZWxmLmNvbXBpbGVyLmxpYnJhcnlfZGlyc1s6XQotICAgICAgICAgICAgIGluY19kaXJzID0gc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnNbOl0KLSsgICAgICAgICAgICBsaWJfZGlycy5hcHBlbmQob3MuZW52aXJvbi5nZXQoJ1NUQUdJTkdfTElCRElSJykpCi0rICAgICAgICAgICAgaW5jX2RpcnMuYXBwZW5kKG9zLmVudmlyb24uZ2V0KCdTVEFHSU5HX0lOQ0RJUicpKQotICAgICAgICAgZXh0cyA9IFtdCi0gICAgICAgICBtaXNzaW5nID0gW10KLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvc3lzY29uZmlnLnB5LWFkZC1fUFlUSE9OX1BST0pFQ1RfU1JDLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9zeXNjb25maWcucHktYWRkLV9QWVRIT05fUFJPSkVDVF9TUkMucGF0Y2gKaW5kZXggZGUwNzY0My4uYzg5ZDlhMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9zeXNjb25maWcucHktYWRkLV9QWVRIT05fUFJPSkVDVF9TUkMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9zeXNjb25maWcucHktYWRkLV9QWVRIT05fUFJPSkVDVF9TUkMucGF0Y2gKQEAgLTE3LDEyICsxNywxMiBAQAogIExpYi9zeXNjb25maWcucHkgICAgICAgICAgIHwgICAgNSArKysrLQogIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotaW5kZXggYTU0NWFiOS4uNzQzMTdkMSAxMDA2NDQKLS0tLSBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci0rKysgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotQEAgLTU1NCw3ICs1NTQsMTAgQEAgZGVmIGdldF9jb25maWdfdmFycygqYXJncyk6Ci0gICAgICAgICBfY29uZmlnX3ZhcnNbJ2V4ZWNfcHJlZml4J10gPSBFWEVDX1BSRUZJWAorSW5kZXg6IFB5dGhvbi0zLjUuMy9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFB5dGhvbi0zLjUuMy5vcmlnL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CisrKysgUHl0aG9uLTMuNS4zL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CitAQCAtNDk4LDcgKzQ5OCwxMCBAQCBkZWYgZ2V0X2NvbmZpZ192YXJzKCphcmdzKToKKyAgICAgICAgICAgICBfY29uZmlnX3ZhcnNbJ1NPJ10gPSBTTwogIAogICAgICAgICAgIyBBbHdheXMgY29udmVydCBzcmNkaXIgdG8gYW4gYWJzb2x1dGUgcGF0aAogLSAgICAgICAgc3JjZGlyID0gX2NvbmZpZ192YXJzLmdldCgnc3JjZGlyJywgcHJvamVjdF9iYXNlKQpAQCAtMzMsMTEgKzMzLDExIEBACiAgICAgICAgICBpZiBvcy5uYW1lID09ICdwb3NpeCc6CiAgICAgICAgICAgICAgaWYgcHl0aG9uX2J1aWxkOgogICAgICAgICAgICAgICAgICAjIElmIHNyY2RpciBpcyBhIHJlbGF0aXZlIHBhdGggKHR5cGljYWxseSAnLicgb3IgJy4uJykKLWRpZmYgLS1naXQgYS9MaWIvc3lzY29uZmlnLnB5IGIvTGliL3N5c2NvbmZpZy5weQotaW5kZXggNzI4N2YxMS4uY2M5Mjk5OCAxMDA2NDQKLS0tLSBhL0xpYi9zeXNjb25maWcucHkKLSsrKyBiL0xpYi9zeXNjb25maWcucHkKLUBAIC01NjIsNyArNTYyLDEwIEBAIGRlZiBnZXRfY29uZmlnX3ZhcnMoKmFyZ3MpOgorSW5kZXg6IFB5dGhvbi0zLjUuMy9MaWIvc3lzY29uZmlnLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gUHl0aG9uLTMuNS4zLm9yaWcvTGliL3N5c2NvbmZpZy5weQorKysrIFB5dGhvbi0zLjUuMy9MaWIvc3lzY29uZmlnLnB5CitAQCAtNTQ0LDcgKzU0NCwxMCBAQCBkZWYgZ2V0X2NvbmZpZ192YXJzKCphcmdzKToKICAgICAgICAgIF9DT05GSUdfVkFSU1sndXNlcmJhc2UnXSA9IF9nZXR1c2VyYmFzZSgpCiAgCiAgICAgICAgICAjIEFsd2F5cyBjb252ZXJ0IHNyY2RpciB0byBhbiBhYnNvbHV0ZSBwYXRoCkBAIC00OSw2ICs0OSwzIEBACiAgICAgICAgICBpZiBvcy5uYW1lID09ICdwb3NpeCc6CiAgICAgICAgICAgICAgaWYgX1BZVEhPTl9CVUlMRDoKICAgICAgICAgICAgICAgICAgIyBJZiBzcmNkaXIgaXMgYSByZWxhdGl2ZSBwYXRoICh0eXBpY2FsbHkgJy4nIG9yICcuLicpCi0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy91cHN0cmVhbS1yYW5kb20tZml4ZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3Vwc3RyZWFtLXJhbmRvbS1maXhlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWI0MGU4YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3Vwc3RyZWFtLXJhbmRvbS1maXhlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcwMyArMCwwIEBACi1Gcm9tIDAzNWJhNWRhM2U1M2U0NWM3MTJiMzlmZTFmNmZiNzQzZTY5N2MwMzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBWaWN0b3IgU3Rpbm5lciA8dmljdG9yLnN0aW5uZXJAZ21haWwuY29tPgotRGF0ZTogTW9uLCA5IEphbiAyMDE3IDExOjE4OjUzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIElzc3VlICMyOTE1NzogUHJlZmVyIGdldHJhbmRvbSgpIG92ZXIgZ2V0ZW50cm9weSgpCi0KLUNvcHkgYW5kIHRoZW4gYWRhcHQgUHl0aG9uL3JhbmRvbS5jIGZyb20gZGVmYXVsdCBicmFuY2guIERpZmZlcmVuY2UgYmV0d2VlbiAzLjUKLWFuZCBkZWZhdWx0IGJyYW5jaGVzOgotCi0qIFB5dGhvbiAzLjUgb25seSB1c2VzIGdldHJhbmRvbSgpIGluIG5vbi1ibG9ja2luZyBtb2RlOiBmbGFncz1HUk5EX05PTkJMT0NLCi0qIElmIGdldHJhbmRvbSgpIGZhaWxzIHdpdGggRUFHQUlOOiBweV9nZXRyYW5kb20oKSBpbW1lZGlhdGVseSBmYWlscyBhbmQKLSAgcmVtZW1iZXJzIHRoYXQgZ2V0cmFuZG9tKCkgZG9lc24ndCB3b3JrLgotKiBQeXRob24gMy41IGhhcyBubyBfUHlPU19VUmFuZG9tTm9uYmxvY2soKSBmdW5jdGlvbjogX1B5T1NfVVJhbmRvbSgpCi0gIHdvcmtzIGluIG5vbi1ibG9ja2luZyBtb2RlIG9uIFB5dGhvbiAzLjUKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2NvbW1pdC8wMzViYTVkYTNlNTNlNDVjNzEyYjM5ZmUxZjZmYjc0M2U2OTdjMDMyXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4KLQotLS0tCi0gUHl0aG9uL3JhbmRvbS5jIHwgNDk0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDI5NCBpbnNlcnRpb25zKCspLCAyMDAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9QeXRob24vcmFuZG9tLmMgYi9QeXRob24vcmFuZG9tLmMKLWluZGV4IGQyMDM5MzkuLjMxZjYxZDAgMTAwNjQ0Ci0tLS0gYS9QeXRob24vcmFuZG9tLmMKLSsrKyBiL1B5dGhvbi9yYW5kb20uYwotQEAgLTEsNiArMSw5IEBACi0gI2luY2x1ZGUgIlB5dGhvbi5oIgotICNpZmRlZiBNU19XSU5ET1dTCi0gIyAgaW5jbHVkZSA8d2luZG93cy5oPgotKy8qIEFsbCBzYW1wbGUgTVNETiB3aW5jcnlwdCBwcm9ncmFtcyBpbmNsdWRlIHRoZSBoZWFkZXIgYmVsb3cuIEl0IGlzIGF0IGxlYXN0Ci0rICogcmVxdWlyZWQgd2l0aCBNaW4gR1cuICovCi0rIyAgaW5jbHVkZSA8d2luY3J5cHQuaD4KLSAjZWxzZQotICMgIGluY2x1ZGUgPGZjbnRsLmg+Ci0gIyAgaWZkZWYgSEFWRV9TWVNfU1RBVF9ICi1AQCAtMzcsMTAgKzQwLDkgQEAgd2luMzJfdXJhbmRvbV9pbml0KGludCByYWlzZSkKLSAgICAgcmV0dXJuIDA7Ci0gCi0gZXJyb3I6Ci0tICAgIGlmIChyYWlzZSkKLSsgICAgaWYgKHJhaXNlKSB7Ci0gICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLS0gICAgZWxzZQotLSAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIGluaXRpYWxpemUgV2luZG93cyByYW5kb20gQVBJIChDcnlwdG9HZW4pIik7Ci0rICAgIH0KLSAgICAgcmV0dXJuIC0xOwotIH0KLSAKLUBAIC01Myw4ICs1NSw5IEBAIHdpbjMyX3VyYW5kb20odW5zaWduZWQgY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKLSAKLSAgICAgaWYgKGhDcnlwdFByb3YgPT0gMCkKLSAgICAgewotLSAgICAgICAgaWYgKHdpbjMyX3VyYW5kb21faW5pdChyYWlzZSkgPT0gLTEpCi0rICAgICAgICBpZiAod2luMzJfdXJhbmRvbV9pbml0KHJhaXNlKSA9PSAtMSkgewotICAgICAgICAgICAgIHJldHVybiAtMTsKLSsgICAgICAgIH0KLSAgICAgfQotIAotICAgICB3aGlsZSAoc2l6ZSA+IDApCi1AQCAtNjMsMTEgKzY2LDkgQEAgd2luMzJfdXJhbmRvbSh1bnNpZ25lZCBjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQotICAgICAgICAgaWYgKCFDcnlwdEdlblJhbmRvbShoQ3J5cHRQcm92LCAoRFdPUkQpY2h1bmssIGJ1ZmZlcikpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgLyogQ3J5cHRHZW5SYW5kb20oKSBmYWlsZWQgKi8KLS0gICAgICAgICAgICBpZiAocmFpc2UpCi0rICAgICAgICAgICAgaWYgKHJhaXNlKSB7Ci0gICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotLSAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIGluaXRpYWxpemVkIHRoZSByYW5kb21pemVkIGhhc2ggIgotLSAgICAgICAgICAgICAgICAgICAgICAgICJzZWNyZXQgdXNpbmcgQ3J5cHRvR2VuKSIpOwotKyAgICAgICAgICAgIH0KLSAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICB9Ci0gICAgICAgICBidWZmZXIgKz0gY2h1bms7Ci1AQCAtNzYsNTggKzc3LDIzIEBAIHdpbjMyX3VyYW5kb20odW5zaWduZWQgY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKLSAgICAgcmV0dXJuIDA7Ci0gfQotIAotLS8qIElzc3VlICMyNTAwMzogRG9uJ3QgdXNlIGdldGVudHJvcHkoKSBvbiBTb2xhcmlzIChhdmFpbGFibGUgc2luY2UKLS0gKiBTb2xhcmlzIDExLjMpLCBpdCBpcyBibG9ja2luZyB3aGVyZWFzIG9zLnVyYW5kb20oKSBzaG91bGQgbm90IGJsb2NrLiAqLwotLSNlbGlmIGRlZmluZWQoSEFWRV9HRVRFTlRST1BZKSAmJiAhZGVmaW5lZChzdW4pCi0tI2RlZmluZSBQWV9HRVRFTlRST1BZIDEKLS0KLS0vKiBGaWxsIGJ1ZmZlciB3aXRoIHNpemUgcHNldWRvLXJhbmRvbSBieXRlcyBnZW5lcmF0ZWQgYnkgZ2V0ZW50cm9weSgpLgotLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIG9yIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLgotLQotLSAgIElmIGZhdGFsIGlzIG5vbnplcm8sIGNhbGwgUHlfRmF0YWxFcnJvcigpIGluc3RlYWQgb2YgcmFpc2luZyBhbiBleGNlcHRpb24KLS0gICBvbiBlcnJvci4gKi8KLS1zdGF0aWMgaW50Ci0tcHlfZ2V0ZW50cm9weSh1bnNpZ25lZCBjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IGZhdGFsKQotLXsKLS0gICAgd2hpbGUgKHNpemUgPiAwKSB7Ci0tICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5X01JTihzaXplLCAyNTYpOwotLSAgICAgICAgaW50IHJlczsKLS0KLS0gICAgICAgIGlmICghZmF0YWwpIHsKLS0gICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0tICAgICAgICAgICAgcmVzID0gZ2V0ZW50cm9weShidWZmZXIsIGxlbik7Ci0tICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLS0KLS0gICAgICAgICAgICBpZiAocmVzIDwgMCkgewotLSAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0tICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLS0gICAgICAgICAgICB9Ci0tICAgICAgICB9Ci0tICAgICAgICBlbHNlIHsKLS0gICAgICAgICAgICByZXMgPSBnZXRlbnRyb3B5KGJ1ZmZlciwgbGVuKTsKLS0gICAgICAgICAgICBpZiAocmVzIDwgMCkKLS0gICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZ2V0ZW50cm9weSgpIGZhaWxlZCIpOwotLSAgICAgICAgfQotLQotLSAgICAgICAgYnVmZmVyICs9IGxlbjsKLS0gICAgICAgIHNpemUgLT0gbGVuOwotLSAgICB9Ci0tICAgIHJldHVybiAwOwotLX0KLS0KLS0jZWxzZQotKyNlbHNlIC8qICFNU19XSU5ET1dTICovCi0gCi0gI2lmIGRlZmluZWQoSEFWRV9HRVRSQU5ET00pIHx8IGRlZmluZWQoSEFWRV9HRVRSQU5ET01fU1lTQ0FMTCkKLSAjZGVmaW5lIFBZX0dFVFJBTkRPTSAxCi0gCi0tLyogQ2FsbCBnZXRyYW5kb20oKQotKy8qIENhbGwgZ2V0cmFuZG9tKCkgdG8gZ2V0IHJhbmRvbSBieXRlczoKLSsKLSAgICAtIFJldHVybiAxIG9uIHN1Y2Nlc3MKLS0gICAtIFJldHVybiAwIGlmIGdldHJhbmRvbSgpIHN5c2NhbGwgaXMgbm90IGF2YWlsYWJsZSAoZmFpbGVkIHdpdGggRU5PU1lTIG9yCi0tICAgICBFUEVSTSkgb3IgaWYgZ2V0cmFuZG9tKEdSTkRfTk9OQkxPQ0spIGZhaWxlZCB3aXRoIEVBR0FJTiAoc3lzdGVtIHVyYW5kb20KLS0gICAgIG5vdCBpbml0aWFsaXplZCB5ZXQpIGFuZCByYWlzZT0wLgotKyAgIC0gUmV0dXJuIDAgaWYgZ2V0cmFuZG9tKCkgaXMgbm90IGF2YWlsYWJsZSAoZmFpbGVkIHdpdGggRU5PU1lTIG9yIEVQRVJNKSwKLSsgICAgIG9yIGlmIGdldHJhbmRvbShHUk5EX05PTkJMT0NLKSBmYWlsZWQgd2l0aCBFQUdBSU4gKHN5c3RlbSB1cmFuZG9tIG5vdAotKyAgICAgaW5pdGlhbGl6ZWQgeWV0KS4KLSAgICAtIFJhaXNlIGFuIGV4Y2VwdGlvbiAoaWYgcmFpc2UgaXMgbm9uLXplcm8pIGFuZCByZXR1cm4gLTEgb24gZXJyb3I6Ci0tICAgICBnZXRyYW5kb20oKSBmYWlsZWQgd2l0aCBFSU5UUiBhbmQgdGhlIFB5dGhvbiBzaWduYWwgaGFuZGxlciByYWlzZWQgYW4KLS0gICAgIGV4Y2VwdGlvbiwgb3IgZ2V0cmFuZG9tKCkgZmFpbGVkIHdpdGggYSBkaWZmZXJlbnQgZXJyb3IuICovCi0rICAgICBpZiBnZXRyYW5kb20oKSBmYWlsZWQgd2l0aCBFSU5UUiwgcmFpc2UgaXMgbm9uLXplcm8gYW5kIHRoZSBQeXRob24gc2lnbmFsCi0rICAgICBoYW5kbGVyIHJhaXNlZCBhbiBleGNlcHRpb24sIG9yIGlmIGdldHJhbmRvbSgpIGZhaWxlZCB3aXRoIGEgZGlmZmVyZW50Ci0rICAgICBlcnJvci4KLSsKLSsgICBnZXRyYW5kb20oKSBpcyByZXRyaWVkIGlmIGl0IGZhaWxlZCB3aXRoIEVJTlRSOiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbC4gKi8KLSBzdGF0aWMgaW50Ci0gcHlfZ2V0cmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCi0gewotQEAgLTE0MiwxNiArMTA4LDE5IEBAIHB5X2dldHJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQotICAgICAgKiBzZWUgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyNjgzOS4gVG8gYXZvaWQgdGhpcywgdXNlIHRoZQotICAgICAgKiBHUk5EX05PTkJMT0NLIGZsYWcuICovCi0gICAgIGNvbnN0IGludCBmbGFncyA9IEdSTkRfTk9OQkxPQ0s7Ci0rICAgIGNoYXIgKmRlc3Q7Ci0gICAgIGxvbmcgbjsKLSAKLSAgICAgaWYgKCFnZXRyYW5kb21fd29ya3MpIHsKLSAgICAgICAgIHJldHVybiAwOwotICAgICB9Ci0gCi0rICAgIGRlc3QgPSBidWZmZXI7Ci0gICAgIHdoaWxlICgwIDwgc2l6ZSkgewotICNpZmRlZiBzdW4KLSAgICAgICAgIC8qIElzc3VlICMyNjczNTogT24gU29sYXJpcywgZ2V0cmFuZG9tKCkgaXMgbGltaXRlZCB0byByZXR1cm5pbmcgdXAKLS0gICAgICAgICAgIHRvIDEwMjQgYnl0ZXMgKi8KLSsgICAgICAgICAgIHRvIDEwMjQgYnl0ZXMuIENhbGwgaXQgbXVsdGlwbGUgdGltZXMgaWYgbW9yZSBieXRlcyBhcmUKLSsgICAgICAgICAgIHJlcXVlc3RlZC4gKi8KLSAgICAgICAgIG4gPSBQeV9NSU4oc2l6ZSwgMTAyNCk7Ci0gI2Vsc2UKLSAgICAgICAgIG4gPSBQeV9NSU4oc2l6ZSwgTE9OR19NQVgpOwotQEAgLTE2MSwzNCArMTMwLDM1IEBAIHB5X2dldHJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQotICNpZmRlZiBIQVZFX0dFVFJBTkRPTQotICAgICAgICAgaWYgKHJhaXNlKSB7Ci0gICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotLSAgICAgICAgICAgIG4gPSBnZXRyYW5kb20oYnVmZmVyLCBuLCBmbGFncyk7Ci0rICAgICAgICAgICAgbiA9IGdldHJhbmRvbShkZXN0LCBuLCBmbGFncyk7Ci0gICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UgewotLSAgICAgICAgICAgIG4gPSBnZXRyYW5kb20oYnVmZmVyLCBuLCBmbGFncyk7Ci0rICAgICAgICAgICAgbiA9IGdldHJhbmRvbShkZXN0LCBuLCBmbGFncyk7Ci0gICAgICAgICB9Ci0gI2Vsc2UKLSAgICAgICAgIC8qIE9uIExpbnV4LCB1c2UgdGhlIHN5c2NhbGwoKSBmdW5jdGlvbiBiZWNhdXNlIHRoZSBHTlUgbGliYyBkb2Vzbid0Ci0tICAgICAgICAgKiBleHBvc2UgdGhlIExpbnV4IGdldHJhbmRvbSgpIHN5c2NhbGwgeWV0LiBTZWU6Ci0tICAgICAgICAgKiBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xNzI1MiAqLwotKyAgICAgICAgICAgZXhwb3NlIHRoZSBMaW51eCBnZXRyYW5kb20oKSBzeXNjYWxsIHlldC4gU2VlOgotKyAgICAgICAgICAgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTcyNTIgKi8KLSAgICAgICAgIGlmIChyYWlzZSkgewotICAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLS0gICAgICAgICAgICBuID0gc3lzY2FsbChTWVNfZ2V0cmFuZG9tLCBidWZmZXIsIG4sIGZsYWdzKTsKLSsgICAgICAgICAgICBuID0gc3lzY2FsbChTWVNfZ2V0cmFuZG9tLCBkZXN0LCBuLCBmbGFncyk7Ci0gICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UgewotLSAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGJ1ZmZlciwgbiwgZmxhZ3MpOwotKyAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGRlc3QsIG4sIGZsYWdzKTsKLSAgICAgICAgIH0KLSAjZW5kaWYKLSAKLSAgICAgICAgIGlmIChuIDwgMCkgewotLSAgICAgICAgICAgIC8qIEVOT1NZUzogZ2V0cmFuZG9tKCkgc3lzY2FsbCBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBrZXJuZWwgKGJ1dAotLSAgICAgICAgICAgICAqIG1heWJlIHN1cHBvcnRlZCBieSB0aGUgaG9zdCB3aGljaCBidWlsdCBQeXRob24pLiBFUEVSTToKLS0gICAgICAgICAgICAgKiBnZXRyYW5kb20oKSBzeXNjYWxsIGJsb2NrZWQgYnkgU0VDQ09NUCBvciBzb21ldGhpbmcgZWxzZS4gKi8KLSsgICAgICAgICAgICAvKiBFTk9TWVM6IHRoZSBzeXNjYWxsIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGtlcm5lbC4KLSsgICAgICAgICAgICAgICBFUEVSTTogdGhlIHN5c2NhbGwgaXMgYmxvY2tlZCBieSBhIHNlY3VyaXR5IHBvbGljeSAoZXg6IFNFQ0NPTVApCi0rICAgICAgICAgICAgICAgb3Igc29tZXRoaW5nIGVsc2UuICovCi0gICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT1NZUyB8fCBlcnJubyA9PSBFUEVSTSkgewotICAgICAgICAgICAgICAgICBnZXRyYW5kb21fd29ya3MgPSAwOwotICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICB9Ci0rCi0gICAgICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTikgewotICAgICAgICAgICAgICAgICAvKiBnZXRyYW5kb20oR1JORF9OT05CTE9DSykgZmFpbHMgd2l0aCBFQUdBSU4gaWYgdGhlIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICB1cmFuZG9tIGlzIG5vdCBpbml0aWFsaWF6ZWQgeWV0LiBJbiB0aGlzIGNhc2UsIGZhbGwgYmFjayBvbgotQEAgLTIwMiwxNjkgKzE3MiwyMjUgQEAgcHlfZ2V0cmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCi0gICAgICAgICAgICAgfQotIAotICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikgewotLSAgICAgICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKLS0gICAgICAgICAgICAgICAgICAgIGlmICghcmFpc2UpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJnZXRyYW5kb20oKSBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCIpOwotKyAgICAgICAgICAgICAgICBpZiAocmFpc2UpIHsKLSsgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgICAgICAgfQotIAotLSAgICAgICAgICAgICAgICAvKiByZXRyeSBnZXRyYW5kb20oKSAqLwotKyAgICAgICAgICAgICAgICAvKiByZXRyeSBnZXRyYW5kb20oKSBpZiBpdCB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKi8KLSAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgfQotIAotICAgICAgICAgICAgIGlmIChyYWlzZSkgewotICAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgICAgICAgICAgfQotLSAgICAgICAgICAgIGVsc2UgewotLSAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJnZXRyYW5kb20oKSBmYWlsZWQiKTsKLS0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgfQotIAotLSAgICAgICAgYnVmZmVyICs9IG47Ci0rICAgICAgICBkZXN0ICs9IG47Ci0gICAgICAgICBzaXplIC09IG47Ci0gICAgIH0KLSAgICAgcmV0dXJuIDE7Ci0gfQotLSNlbmRpZgotIAotLXN0YXRpYyBzdHJ1Y3QgewotLSAgICBpbnQgZmQ7Ci0tICAgIGRldl90IHN0X2RldjsKLS0gICAgaW5vX3Qgc3RfaW5vOwotLX0gdXJhbmRvbV9jYWNoZSA9IHsgLTEgfTsKLSsjZWxpZiBkZWZpbmVkKEhBVkVfR0VURU5UUk9QWSkKLSsjZGVmaW5lIFBZX0dFVEVOVFJPUFkgMQotIAotKy8qIEZpbGwgYnVmZmVyIHdpdGggc2l6ZSBwc2V1ZG8tcmFuZG9tIGJ5dGVzIGdlbmVyYXRlZCBieSBnZXRlbnRyb3B5KCk6Ci0gCi0tLyogUmVhZCAnc2l6ZScgcmFuZG9tIGJ5dGVzIGZyb20gcHlfZ2V0cmFuZG9tKCkuIEZhbGwgYmFjayBvbiByZWFkaW5nIGZyb20KLS0gICAvZGV2L3VyYW5kb20gaWYgZ2V0cmFuZG9tKCkgaXMgbm90IGF2YWlsYWJsZS4KLSsgICAtIFJldHVybiAxIG9uIHN1Y2Nlc3MKLSsgICAtIFJldHVybiAwIGlmIGdldGVudHJvcHkoKSBzeXNjYWxsIGlzIG5vdCBhdmFpbGFibGUgKGZhaWxlZCB3aXRoIEVOT1NZUyBvcgotKyAgICAgRVBFUk0pLgotKyAgIC0gUmFpc2UgYW4gZXhjZXB0aW9uIChpZiByYWlzZSBpcyBub24temVybykgYW5kIHJldHVybiAtMSBvbiBlcnJvcjoKLSsgICAgIGlmIGdldGVudHJvcHkoKSBmYWlsZWQgd2l0aCBFSU5UUiwgcmFpc2UgaXMgbm9uLXplcm8gYW5kIHRoZSBQeXRob24gc2lnbmFsCi0rICAgICBoYW5kbGVyIHJhaXNlZCBhbiBleGNlcHRpb24sIG9yIGlmIGdldGVudHJvcHkoKSBmYWlsZWQgd2l0aCBhIGRpZmZlcmVudAotKyAgICAgZXJyb3IuCi0gCi0tICAgQ2FsbCBQeV9GYXRhbEVycm9yKCkgb24gZXJyb3IuICovCi0tc3RhdGljIHZvaWQKLS1kZXZfdXJhbmRvbV9ub3JhaXNlKHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplKQotKyAgIGdldGVudHJvcHkoKSBpcyByZXRyaWVkIGlmIGl0IGZhaWxlZCB3aXRoIEVJTlRSOiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbC4gKi8KLStzdGF0aWMgaW50Ci0rcHlfZ2V0ZW50cm9weShjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQotIHsKLS0gICAgaW50IGZkOwotLSAgICBQeV9zc2l6ZV90IG47Ci0rICAgIC8qIElzIGdldGVudHJvcHkoKSBzdXBwb3J0ZWQgYnkgdGhlIHJ1bm5pbmcga2VybmVsPyBTZXQgdG8gMCBpZgotKyAgICAgICBnZXRlbnRyb3B5KCkgZmFpbGVkIHdpdGggRU5PU1lTIG9yIEVQRVJNLiAqLwotKyAgICBzdGF0aWMgaW50IGdldGVudHJvcHlfd29ya3MgPSAxOwotIAotLSAgICBhc3NlcnQgKDAgPCBzaXplKTsKLS0KLS0jaWZkZWYgUFlfR0VUUkFORE9NCi0tICAgIGlmIChweV9nZXRyYW5kb20oYnVmZmVyLCBzaXplLCAwKSA9PSAxKSB7Ci0tICAgICAgICByZXR1cm47Ci0rICAgIGlmICghZ2V0ZW50cm9weV93b3JrcykgewotKyAgICAgICAgcmV0dXJuIDA7Ci0gICAgIH0KLS0gICAgLyogZ2V0cmFuZG9tKCkgZmFpbGVkIHdpdGggRU5PU1lTIG9yIEVQRVJNLAotLSAgICAgICBmYWxsIGJhY2sgb24gcmVhZGluZyAvZGV2L3VyYW5kb20gKi8KLS0jZW5kaWYKLSAKLS0gICAgZmQgPSBfUHlfb3Blbl9ub3JhaXNlKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7Ci0tICAgIGlmIChmZCA8IDApIHsKLS0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBvcGVuIC9kZXYvdXJhbmRvbSIpOwotLSAgICB9Ci0rICAgIHdoaWxlIChzaXplID4gMCkgewotKyAgICAgICAgLyogZ2V0ZW50cm9weSgpIGlzIGxpbWl0ZWQgdG8gcmV0dXJuaW5nIHVwIHRvIDI1NiBieXRlcy4gQ2FsbCBpdAotKyAgICAgICAgICAgbXVsdGlwbGUgdGltZXMgaWYgbW9yZSBieXRlcyBhcmUgcmVxdWVzdGVkLiAqLwotKyAgICAgICAgUHlfc3NpemVfdCBsZW4gPSBQeV9NSU4oc2l6ZSwgMjU2KTsKLSsgICAgICAgIGludCByZXM7Ci0gCi0tICAgIHdoaWxlICgwIDwgc2l6ZSkKLS0gICAgewotLSAgICAgICAgZG8gewotLSAgICAgICAgICAgIG4gPSByZWFkKGZkLCBidWZmZXIsIChzaXplX3Qpc2l6ZSk7Ci0tICAgICAgICB9IHdoaWxlIChuIDwgMCAmJiBlcnJubyA9PSBFSU5UUik7Ci0rICAgICAgICBpZiAocmFpc2UpIHsKLSsgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0rICAgICAgICAgICAgcmVzID0gZ2V0ZW50cm9weShidWZmZXIsIGxlbik7Ci0rICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSsgICAgICAgIH0KLSsgICAgICAgIGVsc2UgewotKyAgICAgICAgICAgIHJlcyA9IGdldGVudHJvcHkoYnVmZmVyLCBsZW4pOwotKyAgICAgICAgfQotIAotLSAgICAgICAgaWYgKG4gPD0gMCkgewotLSAgICAgICAgICAgIC8qIHJlYWQoKSBmYWlsZWQgb3IgcmV0dXJuZWQgMCBieXRlcyAqLwotLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byByZWFkIGJ5dGVzIGZyb20gL2Rldi91cmFuZG9tIik7Ci0tICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBpZiAocmVzIDwgMCkgewotKyAgICAgICAgICAgIC8qIEVOT1NZUzogdGhlIHN5c2NhbGwgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgcnVubmluZyBrZXJuZWwuCi0rICAgICAgICAgICAgICAgRVBFUk06IHRoZSBzeXNjYWxsIGlzIGJsb2NrZWQgYnkgYSBzZWN1cml0eSBwb2xpY3kgKGV4OiBTRUNDT01QKQotKyAgICAgICAgICAgICAgIG9yIHNvbWV0aGluZyBlbHNlLiAqLwotKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFTk9TWVMgfHwgZXJybm8gPT0gRVBFUk0pIHsKLSsgICAgICAgICAgICAgICAgZ2V0ZW50cm9weV93b3JrcyA9IDA7Ci0rICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUlOVFIpIHsKLSsgICAgICAgICAgICAgICAgaWYgKHJhaXNlKSB7Ci0rICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0rICAgICAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICAgICAgLyogcmV0cnkgZ2V0ZW50cm9weSgpIGlmIGl0IHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAqLwotKyAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAgICB9Ci0rCi0rICAgICAgICAgICAgaWYgKHJhaXNlKSB7Ci0rICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgfQotLSAgICAgICAgYnVmZmVyICs9IG47Ci0tICAgICAgICBzaXplIC09IG47Ci0rCi0rICAgICAgICBidWZmZXIgKz0gbGVuOwotKyAgICAgICAgc2l6ZSAtPSBsZW47Ci0gICAgIH0KLS0gICAgY2xvc2UoZmQpOwotKyAgICByZXR1cm4gMTsKLSB9Ci0rI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRFTlRST1BZKSAmJiAhZGVmaW5lZChzdW4pICovCi0gCi0tLyogUmVhZCAnc2l6ZScgcmFuZG9tIGJ5dGVzIGZyb20gcHlfZ2V0cmFuZG9tKCkuIEZhbGwgYmFjayBvbiByZWFkaW5nIGZyb20KLS0gICAvZGV2L3VyYW5kb20gaWYgZ2V0cmFuZG9tKCkgaXMgbm90IGF2YWlsYWJsZS4KLSAKLS0gICBSZXR1cm4gMCBvbiBzdWNjZXNzLiBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KLStzdGF0aWMgc3RydWN0IHsKLSsgICAgaW50IGZkOwotKyAgICBkZXZfdCBzdF9kZXY7Ci0rICAgIGlub190IHN0X2lubzsKLSt9IHVyYW5kb21fY2FjaGUgPSB7IC0xIH07Ci0rCi0rLyogUmVhZCByYW5kb20gYnl0ZXMgZnJvbSB0aGUgL2Rldi91cmFuZG9tIGRldmljZToKLSsKLSsgICAtIFJldHVybiAwIG9uIHN1Y2Nlc3MKLSsgICAtIFJhaXNlIGFuIGV4Y2VwdGlvbiAoaWYgcmFpc2UgaXMgbm9uLXplcm8pIGFuZCByZXR1cm4gLTEgb24gZXJyb3IKLSsKLSsgICBQb3NzaWJsZSBjYXVzZXMgb2YgZXJyb3JzOgotKwotKyAgIC0gb3BlbigpIGZhaWxlZCB3aXRoIEVOT0VOVCwgRU5YSU8sIEVOT0RFViwgRUFDQ0VTOiB0aGUgL2Rldi91cmFuZG9tIGRldmljZQotKyAgICAgd2FzIG5vdCBmb3VuZC4gRm9yIGV4YW1wbGUsIGl0IHdhcyByZW1vdmVkIG1hbnVhbGx5IG9yIG5vdCBleHBvc2VkIGluIGEKLSsgICAgIGNocm9vdCBvciBjb250YWluZXIuCi0rICAgLSBvcGVuKCkgZmFpbGVkIHdpdGggYSBkaWZmZXJlbnQgZXJyb3IKLSsgICAtIGZzdGF0KCkgZmFpbGVkCi0rICAgLSByZWFkKCkgZmFpbGVkIG9yIHJldHVybmVkIDAKLSsKLSsgICByZWFkKCkgaXMgcmV0cmllZCBpZiBpdCBmYWlsZWQgd2l0aCBFSU5UUjogaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwuCi0rCi0rICAgVGhlIGZpbGUgZGVzY3JpcHRvciBvZiB0aGUgZGV2aWNlIGlzIGtlcHQgb3BlbiBiZXR3ZWVuIGNhbGxzIHRvIGF2b2lkIHVzaW5nCi0rICAgbWFueSBmaWxlIGRlc2NyaXB0b3JzIHdoZW4gcnVuIGluIHBhcmFsbGVsIGZyb20gbXVsdGlwbGUgdGhyZWFkczoKLSsgICBzZWUgdGhlIGlzc3VlICMxODc1Ni4KLSsKLSsgICBzdF9kZXYgYW5kIHN0X2lubyBmaWVsZHMgb2YgdGhlIGZpbGUgZGVzY3JpcHRvciAoZnJvbSBmc3RhdCgpKSBhcmUgY2FjaGVkIHRvCi0rICAgY2hlY2sgaWYgdGhlIGZpbGUgZGVzY3JpcHRvciB3YXMgcmVwbGFjZWQgYnkgYSBkaWZmZXJlbnQgZmlsZSAod2hpY2ggaXMKLSsgICBsaWtlbHkgYSBidWcgaW4gdGhlIGFwcGxpY2F0aW9uKTogc2VlIHRoZSBpc3N1ZSAjMjEyMDcuCi0rCi0rICAgSWYgdGhlIGZpbGUgZGVzY3JpcHRvciB3YXMgY2xvc2VkIG9yIHJlcGxhY2VkLCBvcGVuIGEgbmV3IGZpbGUgZGVzY3JpcHRvcgotKyAgIGJ1dCBkb24ndCBjbG9zZSB0aGUgb2xkIGZpbGUgZGVzY3JpcHRvcjogaXQgcHJvYmFibHkgcG9pbnRzIHRvIHNvbWV0aGluZwotKyAgIGltcG9ydGFudCBmb3Igc29tZSB0aGlyZC1wYXJ0eSBjb2RlLiAqLwotIHN0YXRpYyBpbnQKLS1kZXZfdXJhbmRvbV9weXRob24oY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCi0rZGV2X3VyYW5kb20oY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKLSB7Ci0gICAgIGludCBmZDsKLSAgICAgUHlfc3NpemVfdCBuOwotLSAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0OwotLSNpZmRlZiBQWV9HRVRSQU5ET00KLS0gICAgaW50IHJlczsKLS0jZW5kaWYKLS0KLS0gICAgaWYgKHNpemUgPD0gMCkKLS0gICAgICAgIHJldHVybiAwOwotIAotLSNpZmRlZiBQWV9HRVRSQU5ET00KLS0gICAgcmVzID0gcHlfZ2V0cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgMSk7Ci0tICAgIGlmIChyZXMgPCAwKSB7Ci0tICAgICAgICByZXR1cm4gLTE7Ci0tICAgIH0KLS0gICAgaWYgKHJlcyA9PSAxKSB7Ci0tICAgICAgICByZXR1cm4gMDsKLS0gICAgfQotLSAgICAvKiBnZXRyYW5kb20oKSBmYWlsZWQgd2l0aCBFTk9TWVMgb3IgRVBFUk0sCi0tICAgICAgIGZhbGwgYmFjayBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSAqLwotLSNlbmRpZgotKyAgICBpZiAocmFpc2UpIHsKLSsgICAgICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3Q7Ci0gCi0tICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApIHsKLS0gICAgICAgIC8qIERvZXMgdGhlIGZkIHBvaW50IHRvIHRoZSBzYW1lIHRoaW5nIGFzIGJlZm9yZT8gKGlzc3VlICMyMTIwNykgKi8KLS0gICAgICAgIGlmIChfUHlfZnN0YXRfbm9yYWlzZSh1cmFuZG9tX2NhY2hlLmZkLCAmc3QpCi0tICAgICAgICAgICAgfHwgc3Quc3RfZGV2ICE9IHVyYW5kb21fY2FjaGUuc3RfZGV2Ci0tICAgICAgICAgICAgfHwgc3Quc3RfaW5vICE9IHVyYW5kb21fY2FjaGUuc3RfaW5vKSB7Ci0tICAgICAgICAgICAgLyogU29tZXRoaW5nIGNoYW5nZWQ6IGZvcmdldCB0aGUgY2FjaGVkIGZkIChidXQgZG9uJ3QgY2xvc2UgaXQsCi0tICAgICAgICAgICAgICAgc2luY2UgaXQgcHJvYmFibHkgcG9pbnRzIHRvIHNvbWV0aGluZyBpbXBvcnRhbnQgZm9yIHNvbWUKLS0gICAgICAgICAgICAgICB0aGlyZC1wYXJ0eSBjb2RlKS4gKi8KLS0gICAgICAgICAgICB1cmFuZG9tX2NhY2hlLmZkID0gLTE7Ci0tICAgICAgICB9Ci0tICAgIH0KLS0gICAgaWYgKHVyYW5kb21fY2FjaGUuZmQgPj0gMCkKLS0gICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKLS0gICAgZWxzZSB7Ci0tICAgICAgICBmZCA9IF9QeV9vcGVuKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7Ci0tICAgICAgICBpZiAoZmQgPCAwKSB7Ci0tICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT0VOVCB8fCBlcnJubyA9PSBFTlhJTyB8fAotLSAgICAgICAgICAgICAgICBlcnJubyA9PSBFTk9ERVYgfHwgZXJybm8gPT0gRUFDQ0VTKQotLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvZGV2L3VyYW5kb20gKG9yIGVxdWl2YWxlbnQpIG5vdCBmb3VuZCIpOwotLSAgICAgICAgICAgIC8qIG90aGVyd2lzZSwga2VlcCB0aGUgT1NFcnJvciBleGNlcHRpb24gcmFpc2VkIGJ5IF9QeV9vcGVuKCkgKi8KLS0gICAgICAgICAgICByZXR1cm4gLTE7Ci0tICAgICAgICB9Ci0gICAgICAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKSB7Ci0tICAgICAgICAgICAgLyogdXJhbmRvbV9mZCB3YXMgaW5pdGlhbGl6ZWQgYnkgYW5vdGhlciB0aHJlYWQgd2hpbGUgd2Ugd2VyZQotLSAgICAgICAgICAgICAgIG5vdCBob2xkaW5nIHRoZSBHSUwsIGtlZXAgaXQuICovCi0tICAgICAgICAgICAgY2xvc2UoZmQpOwotLSAgICAgICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKLSsgICAgICAgICAgICAvKiBEb2VzIHRoZSBmZCBwb2ludCB0byB0aGUgc2FtZSB0aGluZyBhcyBiZWZvcmU/IChpc3N1ZSAjMjEyMDcpICovCi0rICAgICAgICAgICAgaWYgKF9QeV9mc3RhdF9ub3JhaXNlKHVyYW5kb21fY2FjaGUuZmQsICZzdCkKLSsgICAgICAgICAgICAgICAgfHwgc3Quc3RfZGV2ICE9IHVyYW5kb21fY2FjaGUuc3RfZGV2Ci0rICAgICAgICAgICAgICAgIHx8IHN0LnN0X2lubyAhPSB1cmFuZG9tX2NhY2hlLnN0X2lubykgewotKyAgICAgICAgICAgICAgICAvKiBTb21ldGhpbmcgY2hhbmdlZDogZm9yZ2V0IHRoZSBjYWNoZWQgZmQgKGJ1dCBkb24ndCBjbG9zZSBpdCwKLSsgICAgICAgICAgICAgICAgICAgc2luY2UgaXQgcHJvYmFibHkgcG9pbnRzIHRvIHNvbWV0aGluZyBpbXBvcnRhbnQgZm9yIHNvbWUKLSsgICAgICAgICAgICAgICAgICAgdGhpcmQtcGFydHkgY29kZSkuICovCi0rICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuZmQgPSAtMTsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0rICAgICAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKQotKyAgICAgICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKLSAgICAgICAgIGVsc2UgewotLSAgICAgICAgICAgIGlmIChfUHlfZnN0YXQoZmQsICZzdCkpIHsKLS0gICAgICAgICAgICAgICAgY2xvc2UoZmQpOwotKyAgICAgICAgICAgIGZkID0gX1B5X29wZW4oIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKLSsgICAgICAgICAgICBpZiAoZmQgPCAwKSB7Ci0rICAgICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFTk9FTlQgfHwgZXJybm8gPT0gRU5YSU8gfHwKLSsgICAgICAgICAgICAgICAgICAgIGVycm5vID09IEVOT0RFViB8fCBlcnJubyA9PSBFQUNDRVMpIHsKLSsgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvZGV2L3VyYW5kb20gKG9yIGVxdWl2YWxlbnQpIG5vdCBmb3VuZCIpOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIC8qIG90aGVyd2lzZSwga2VlcCB0aGUgT1NFcnJvciBleGNlcHRpb24gcmFpc2VkIGJ5IF9QeV9vcGVuKCkgKi8KLSAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKSB7Ci0rICAgICAgICAgICAgICAgIC8qIHVyYW5kb21fZmQgd2FzIGluaXRpYWxpemVkIGJ5IGFub3RoZXIgdGhyZWFkIHdoaWxlIHdlIHdlcmUKLSsgICAgICAgICAgICAgICAgICAgbm90IGhvbGRpbmcgdGhlIEdJTCwga2VlcCBpdC4gKi8KLSsgICAgICAgICAgICAgICAgY2xvc2UoZmQpOwotKyAgICAgICAgICAgICAgICBmZCA9IHVyYW5kb21fY2FjaGUuZmQ7Ci0rICAgICAgICAgICAgfQotICAgICAgICAgICAgIGVsc2UgewotLSAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLmZkID0gZmQ7Ci0tICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuc3RfZGV2ID0gc3Quc3RfZGV2OwotLSAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLnN0X2lubyA9IHN0LnN0X2lubzsKLSsgICAgICAgICAgICAgICAgaWYgKF9QeV9mc3RhdChmZCwgJnN0KSkgewotKyAgICAgICAgICAgICAgICAgICAgY2xvc2UoZmQpOwotKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIGVsc2UgewotKyAgICAgICAgICAgICAgICAgICAgdXJhbmRvbV9jYWNoZS5mZCA9IGZkOwotKyAgICAgICAgICAgICAgICAgICAgdXJhbmRvbV9jYWNoZS5zdF9kZXYgPSBzdC5zdF9kZXY7Ci0rICAgICAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLnN0X2lubyA9IHN0LnN0X2lubzsKLSsgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLS0gICAgfQotIAotLSAgICBkbyB7Ci0tICAgICAgICBuID0gX1B5X3JlYWQoZmQsIGJ1ZmZlciwgKHNpemVfdClzaXplKTsKLS0gICAgICAgIGlmIChuID09IC0xKSB7Ci0tICAgICAgICAgICAgcmV0dXJuIC0xOwotLSAgICAgICAgfQotLSAgICAgICAgaWYgKG4gPT0gMCkgewotLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsCi0tICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHJlYWQgJXppIGJ5dGVzIGZyb20gL2Rldi91cmFuZG9tIiwKLS0gICAgICAgICAgICAgICAgICAgIHNpemUpOwotKyAgICAgICAgZG8gewotKyAgICAgICAgICAgIG4gPSBfUHlfcmVhZChmZCwgYnVmZmVyLCAoc2l6ZV90KXNpemUpOwotKyAgICAgICAgICAgIGlmIChuID09IC0xKQotKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0rICAgICAgICAgICAgaWYgKG4gPT0gMCkgewotKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAotKyAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gcmVhZCAlemkgYnl0ZXMgZnJvbSAvZGV2L3VyYW5kb20iLAotKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemUpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0rICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgIGJ1ZmZlciArPSBuOwotKyAgICAgICAgICAgIHNpemUgLT0gbjsKLSsgICAgICAgIH0gd2hpbGUgKDAgPCBzaXplKTsKLSsgICAgfQotKyAgICBlbHNlIHsKLSsgICAgICAgIGZkID0gX1B5X29wZW5fbm9yYWlzZSgiL2Rldi91cmFuZG9tIiwgT19SRE9OTFkpOwotKyAgICAgICAgaWYgKGZkIDwgMCkgewotICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgIH0KLSAKLS0gICAgICAgIGJ1ZmZlciArPSBuOwotLSAgICAgICAgc2l6ZSAtPSBuOwotLSAgICB9IHdoaWxlICgwIDwgc2l6ZSk7Ci0rICAgICAgICB3aGlsZSAoMCA8IHNpemUpCi0rICAgICAgICB7Ci0rICAgICAgICAgICAgZG8gewotKyAgICAgICAgICAgICAgICBuID0gcmVhZChmZCwgYnVmZmVyLCAoc2l6ZV90KXNpemUpOwotKyAgICAgICAgICAgIH0gd2hpbGUgKG4gPCAwICYmIGVycm5vID09IEVJTlRSKTsKLSAKLSsgICAgICAgICAgICBpZiAobiA8PSAwKSB7Ci0rICAgICAgICAgICAgICAgIC8qIHN0b3Agb24gZXJyb3Igb3IgaWYgcmVhZChzaXplKSByZXR1cm5lZCAwICovCi0rICAgICAgICAgICAgICAgIGNsb3NlKGZkKTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotKyAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICBidWZmZXIgKz0gbjsKLSsgICAgICAgICAgICBzaXplIC09IG47Ci0rICAgICAgICB9Ci0rICAgICAgICBjbG9zZShmZCk7Ci0rICAgIH0KLSAgICAgcmV0dXJuIDA7Ci0gfQotIAotQEAgLTM3Niw4ICs0MDIsOCBAQCBkZXZfdXJhbmRvbV9jbG9zZSh2b2lkKQotICAgICAgICAgdXJhbmRvbV9jYWNoZS5mZCA9IC0xOwotICAgICB9Ci0gfQotKyNlbmRpZiAvKiAhTVNfV0lORE9XUyAqLwotIAotLSNlbmRpZgotIAotIC8qIEZpbGwgYnVmZmVyIHdpdGggcHNldWRvLXJhbmRvbSBieXRlcyBnZW5lcmF0ZWQgYnkgYSBsaW5lYXIgY29uZ3J1ZW50Ci0gICAgZ2VuZXJhdG9yIChMQ0cpOgotQEAgLTQwMCwzMSArNDI2LDEwMCBAQCBsY2dfdXJhbmRvbSh1bnNpZ25lZCBpbnQgeDAsIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IHNpemUpCi0gICAgIH0KLSB9Ci0gCi0tLyogRmlsbCBidWZmZXIgd2l0aCBzaXplIHBzZXVkby1yYW5kb20gYnl0ZXMgZnJvbSB0aGUgb3BlcmF0aW5nIHN5c3RlbSByYW5kb20KLS0gICBudW1iZXIgZ2VuZXJhdG9yIChSTkcpLiBJdCBpcyBzdWl0YWJsZSBmb3IgbW9zdCBjcnlwdG9ncmFwaGljIHB1cnBvc2VzCi0tICAgZXhjZXB0IGxvbmcgbGl2aW5nIHByaXZhdGUga2V5cyBmb3IgYXN5bW1ldHJpYyBlbmNyeXB0aW9uLgotKy8qIFJlYWQgcmFuZG9tIGJ5dGVzOgotIAotLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLwotLWludAotLV9QeU9TX1VSYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCi0rICAgLSBSZXR1cm4gMCBvbiBzdWNjZXNzCi0rICAgLSBSYWlzZSBhbiBleGNlcHRpb24gKGlmIHJhaXNlIGlzIG5vbi16ZXJvKSBhbmQgcmV0dXJuIC0xIG9uIGVycm9yCi0rCi0rICAgVXNlZCBzb3VyY2VzIG9mIGVudHJvcHkgb3JkZXJlZCBieSBwcmVmZXJlbmNlLCBwcmVmZXJyZWQgc291cmNlIGZpcnN0OgotKwotKyAgIC0gQ3J5cHRHZW5SYW5kb20oKSBvbiBXaW5kb3dzCi0rICAgLSBnZXRyYW5kb20oKSBmdW5jdGlvbiAoZXg6IExpbnV4IGFuZCBTb2xhcmlzKTogY2FsbCBweV9nZXRyYW5kb20oKQotKyAgIC0gZ2V0ZW50cm9weSgpIGZ1bmN0aW9uIChleDogT3BlbkJTRCk6IGNhbGwgcHlfZ2V0ZW50cm9weSgpCi0rICAgLSAvZGV2L3VyYW5kb20gZGV2aWNlCi0rCi0rICAgUmVhZCBmcm9tIHRoZSAvZGV2L3VyYW5kb20gZGV2aWNlIGlmIGdldHJhbmRvbSgpIG9yIGdldGVudHJvcHkoKSBmdW5jdGlvbgotKyAgIGlzIG5vdCBhdmFpbGFibGUgb3IgZG9lcyBub3Qgd29yay4KLSsKLSsgICBQcmVmZXIgZ2V0cmFuZG9tKCkgb3ZlciBnZXRlbnRyb3B5KCkgYmVjYXVzZSBnZXRyYW5kb20oKSBzdXBwb3J0cyBibG9ja2luZwotKyAgIGFuZCBub24tYmxvY2tpbmcgbW9kZSBhbmQgUHl0aG9uIHJlcXVpcmVzIG5vbi1ibG9ja2luZyBSTkcgYXQgc3RhcnR1cCB0bwotKyAgIGluaXRpYWxpemUgaXRzIGhhc2ggc2VjcmV0OiBzZWUgdGhlIFBFUCA1MjQuCi0rCi0rICAgUHJlZmVyIGdldHJhbmRvbSgpIGFuZCBnZXRlbnRyb3B5KCkgb3ZlciByZWFkaW5nIGRpcmVjdGx5IC9kZXYvdXJhbmRvbQotKyAgIGJlY2F1c2UgdGhlc2UgZnVuY3Rpb25zIGRvbid0IG5lZWQgZmlsZSBkZXNjcmlwdG9ycyBhbmQgc28gYXZvaWQgRU5GSUxFIG9yCi0rICAgRU1GSUxFIGVycm9ycyAodG9vIG1hbnkgb3BlbiBmaWxlcyk6IHNlZSB0aGUgaXNzdWUgIzE4NzU2LgotKwotKyAgIE9ubHkgdXNlIFJORyBydW5uaW5nIGluIHRoZSBrZXJuZWwuIFRoZXkgYXJlIG1vcmUgc2VjdXJlIGJlY2F1c2UgaXQgaXMKLSsgICBoYXJkZXIgdG8gZ2V0IHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiBhIFJORyBydW5uaW5nIGluIHRoZSBrZXJuZWwgbGFuZCB0aGFuIGEKLSsgICBSTkcgcnVubmluZyBpbiB0aGUgdXNlciBsYW5kLiBUaGUga2VybmVsIGhhcyBhIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIGhhcmR3YXJlCi0rICAgYW5kIGhhcyBhY2Nlc3MgdG8gaGFyZHdhcmUgUk5HLCB0aGV5IGFyZSB1c2VkIGFzIGVudHJvcHkgc291cmNlcy4KLSsKLSsgICBOb3RlOiB0aGUgT3BlblNTTCBSQU5EX3BzZXVkb19ieXRlcygpIGZ1bmN0aW9uIGRvZXMgbm90IGF1dG9tYXRpY2FsbHkgcmVzZWVkCi0rICAgaXRzIFJORyBvbiBmb3JrKCksIHR3byBjaGlsZCBwcm9jZXNzZXMgKHdpdGggdGhlIHNhbWUgcGlkKSBnZW5lcmF0ZSB0aGUgc2FtZQotKyAgIHJhbmRvbSBudW1iZXJzOiBzZWUgaXNzdWUgIzE4NzQ3LiBLZXJuZWwgUk5HcyBkb24ndCBoYXZlIHRoaXMgaXNzdWUsCi0rICAgdGhleSBoYXZlIGFjY2VzcyB0byBnb29kIHF1YWxpdHkgZW50cm9weSBzb3VyY2VzLgotKwotKyAgIElmIHJhaXNlIGlzIHplcm86Ci0rCi0rICAgLSBEb24ndCByYWlzZSBhbiBleGNlcHRpb24gb24gZXJyb3IKLSsgICAtIERvbid0IGNhbGwgdGhlIFB5dGhvbiBzaWduYWwgaGFuZGxlciAoZG9uJ3QgY2FsbCBQeUVycl9DaGVja1NpZ25hbHMoKSkgaWYKLSsgICAgIGEgZnVuY3Rpb24gZmFpbHMgd2l0aCBFSU5UUjogcmV0cnkgZGlyZWN0bHkgdGhlIGludGVycnVwdGVkIGZ1bmN0aW9uCi0rICAgLSBEb24ndCByZWxlYXNlIHRoZSBHSUwgdG8gY2FsbCBmdW5jdGlvbnMuCi0rKi8KLStzdGF0aWMgaW50Ci0rcHl1cmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCi0gewotKyNpZiBkZWZpbmVkKFBZX0dFVFJBTkRPTSkgfHwgZGVmaW5lZChQWV9HRVRFTlRST1BZKQotKyAgICBpbnQgcmVzOwotKyNlbmRpZgotKwotICAgICBpZiAoc2l6ZSA8IDApIHsKLS0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotLSAgICAgICAgICAgICAgICAgICAgICJuZWdhdGl2ZSBhcmd1bWVudCBub3QgYWxsb3dlZCIpOwotKyAgICAgICAgaWYgKHJhaXNlKSB7Ci0rICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICJuZWdhdGl2ZSBhcmd1bWVudCBub3QgYWxsb3dlZCIpOwotKyAgICAgICAgfQotICAgICAgICAgcmV0dXJuIC0xOwotICAgICB9Ci0tICAgIGlmIChzaXplID09IDApCi0rCi0rICAgIGlmIChzaXplID09IDApIHsKLSAgICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0gCi0gI2lmZGVmIE1TX1dJTkRPV1MKLS0gICAgcmV0dXJuIHdpbjMyX3VyYW5kb20oKHVuc2lnbmVkIGNoYXIgKilidWZmZXIsIHNpemUsIDEpOwotLSNlbGlmIGRlZmluZWQoUFlfR0VURU5UUk9QWSkKLS0gICAgcmV0dXJuIHB5X2dldGVudHJvcHkoYnVmZmVyLCBzaXplLCAwKTsKLSsgICAgcmV0dXJuIHdpbjMyX3VyYW5kb20oKHVuc2lnbmVkIGNoYXIgKilidWZmZXIsIHNpemUsIHJhaXNlKTsKLSsjZWxzZQotKwotKyNpZiBkZWZpbmVkKFBZX0dFVFJBTkRPTSkgfHwgZGVmaW5lZChQWV9HRVRFTlRST1BZKQotKyNpZmRlZiBQWV9HRVRSQU5ET00KLSsgICAgcmVzID0gcHlfZ2V0cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgcmFpc2UpOwotICNlbHNlCi0tICAgIHJldHVybiBkZXZfdXJhbmRvbV9weXRob24oKGNoYXIqKWJ1ZmZlciwgc2l6ZSk7Ci0rICAgIHJlcyA9IHB5X2dldGVudHJvcHkoYnVmZmVyLCBzaXplLCByYWlzZSk7Ci0rI2VuZGlmCi0rICAgIGlmIChyZXMgPCAwKSB7Ci0rICAgICAgICByZXR1cm4gLTE7Ci0rICAgIH0KLSsgICAgaWYgKHJlcyA9PSAxKSB7Ci0rICAgICAgICByZXR1cm4gMDsKLSsgICAgfQotKyAgICAvKiBnZXRyYW5kb20oKSBvciBnZXRlbnRyb3B5KCkgZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZTogZmFpbGVkIHdpdGgKLSsgICAgICAgRU5PU1lTLCBFUEVSTSBvciBFQUdBSU4uIEZhbGwgYmFjayBvbiByZWFkaW5nIGZyb20gL2Rldi91cmFuZG9tLiAqLwotKyNlbmRpZgotKwotKyAgICByZXR1cm4gZGV2X3VyYW5kb20oYnVmZmVyLCBzaXplLCByYWlzZSk7Ci0gI2VuZGlmCi0gfQotIAotKy8qIEZpbGwgYnVmZmVyIHdpdGggc2l6ZSBwc2V1ZG8tcmFuZG9tIGJ5dGVzIGZyb20gdGhlIG9wZXJhdGluZyBzeXN0ZW0gcmFuZG9tCi0rICAgbnVtYmVyIGdlbmVyYXRvciAoUk5HKS4gSXQgaXMgc3VpdGFibGUgZm9yIG1vc3QgY3J5cHRvZ3JhcGhpYyBwdXJwb3NlcwotKyAgIGV4Y2VwdCBsb25nIGxpdmluZyBwcml2YXRlIGtleXMgZm9yIGFzeW1tZXRyaWMgZW5jcnlwdGlvbi4KLSsKLSsgICBSZXR1cm4gMCBvbiBzdWNjZXNzLiBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KLStpbnQKLStfUHlPU19VUmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplKQotK3sKLSsgICAgcmV0dXJuIHB5dXJhbmRvbShidWZmZXIsIHNpemUsIDEpOwotK30KLSsKLSB2b2lkCi0gX1B5UmFuZG9tX0luaXQodm9pZCkKLSB7Ci1AQCAtNDYzLDEzICs1NTgsMTQgQEAgX1B5UmFuZG9tX0luaXQodm9pZCkKLSAgICAgICAgIH0KLSAgICAgfQotICAgICBlbHNlIHsKLS0jaWZkZWYgTVNfV0lORE9XUwotLSAgICAgICAgKHZvaWQpd2luMzJfdXJhbmRvbShzZWNyZXQsIHNlY3JldF9zaXplLCAwKTsKLS0jZWxpZiBkZWZpbmVkKFBZX0dFVEVOVFJPUFkpCi0tICAgICAgICAodm9pZClweV9nZXRlbnRyb3B5KHNlY3JldCwgc2VjcmV0X3NpemUsIDEpOwotLSNlbHNlCi0tICAgICAgICBkZXZfdXJhbmRvbV9ub3JhaXNlKHNlY3JldCwgc2VjcmV0X3NpemUpOwotLSNlbmRpZgotKyAgICAgICAgaW50IHJlczsKLSsKLSsgICAgICAgIC8qIF9QeVJhbmRvbV9Jbml0KCkgaXMgY2FsbGVkIHZlcnkgZWFybHkgaW4gdGhlIFB5dGhvbiBpbml0aWFsaXphdGlvbgotKyAgICAgICAgICAgYW5kIHNvIGV4Y2VwdGlvbnMgY2Fubm90IGJlIHVzZWQgKHVzZSByYWlzZT0wKS4gKi8KLSsgICAgICAgIHJlcyA9IHB5dXJhbmRvbShzZWNyZXQsIHNlY3JldF9zaXplLCAwKTsKLSsgICAgICAgIGlmIChyZXMgPCAwKSB7Ci0rICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZmFpbGVkIHRvIGdldCByYW5kb20gbnVtYmVycyB0byBpbml0aWFsaXplIFB5dGhvbiIpOwotKyAgICAgICAgfQotICAgICB9Ci0gfQotIAotQEAgLTQ4MSw4ICs1NzcsNiBAQCBfUHlSYW5kb21fRmluaSh2b2lkKQotICAgICAgICAgQ3J5cHRSZWxlYXNlQ29udGV4dChoQ3J5cHRQcm92LCAwKTsKLSAgICAgICAgIGhDcnlwdFByb3YgPSAwOwotICAgICB9Ci0tI2VsaWYgZGVmaW5lZChQWV9HRVRFTlRST1BZKQotLSAgICAvKiBub3RoaW5nIHRvIGNsZWFuICovCi0gI2Vsc2UKLSAgICAgZGV2X3VyYW5kb21fY2xvc2UoKTsKLSAjZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zXzMuNS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxM2RmMTJmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMjcgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24uaW5jCi0KLURFUEVORFMgPSAicHl0aG9uMy1uYXRpdmUgbGliZmZpIGJ6aXAyIGRiIGdkYm0gb3BlbnNzbCByZWFkbGluZSBzcWxpdGUzIHpsaWIgdmlydHVhbC9saWJpbnRsIHh6IgotUFIgPSAiJHtJTkNfUFJ9LjAiCi1QWVRIT05fTUFKTUlOID0gIjMuNSIKLVBZVEhPTl9CSU5BQkk9ICIke1BZVEhPTl9NQUpNSU59bSIKLURJU1RST19TUkNfVVJJID89ICJmaWxlOi8vc2l0ZWN1c3RvbWl6ZS5weSIKLURJU1RST19TUkNfVVJJX2xpbnV4c3RkYmFzZSA9ICIiCi1TUkNfVVJJID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLyR7UFZ9L1B5dGhvbi0ke1BWfS50YXIueHogXAotZmlsZTovL3B5dGhvbi1jb25maWcucGF0Y2ggXAotZmlsZTovLzAwMDEtY3Jvc3MtY29tcGlsZS1zdXBwb3J0LnBhdGNoIFwKLWZpbGU6Ly8wMzAtZml4dXAtaW5jbHVkZS1kaXJzLnBhdGNoIFwKLWZpbGU6Ly8wNzAtZG9udC1jbGVhbi1pcGtnLWluc3RhbGwucGF0Y2ggXAotZmlsZTovLzA4MC1kaXN0dXRpbHMtZG9udF9hZGp1c3RfZmlsZXMucGF0Y2ggXAotZmlsZTovLzEzMC1yZWFkbGluZS1zZXR1cC5wYXRjaCBcCi1maWxlOi8vMTUwLWZpeC1zZXR1cHRlcm0ucGF0Y2ggXAotZmlsZTovLzAwMDEtaDJweS1GaXgtaXNzdWUtMTMwMzItd2hlcmUtaXQtZmFpbHMtd2l0aC1Vbmljb2RlRGVjby5wYXRjaCBcCi1maWxlOi8vdHdlYWstTVVMVElBUkNILWZvci1wb3dlcnBjLWxpbnV4LWdudXNwZS5wYXRjaCBcCi1maWxlOi8vc3VwcG9ydF9TT1VSQ0VfREFURV9FUE9DSF9pbl9weV9jb21waWxlLnBhdGNoIFwKLSR7RElTVFJPX1NSQ19VUkl9IFwKLSIKLQotU1JDX1VSSSArPSAiXAotICAgICAgICAgICAgZmlsZTovLzAzLWZpeC10a2ludGVyLWRldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9jZ2lfcHkucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2hvc3RfaW5jbHVkZV9jb250YW1pbmF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9weXRob24tMy4zLW11bHRpbGliLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9zaHV0aWwtZm9sbG93LXN5bWxpbmstZml4LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9zeXNyb290LWluY2x1ZGUtaGVhZGVycy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vdW5peGNjb21waWxlci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vYXZvaWQtbmN1cnNlc3ctaW5jbHVkZS1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9weXRob24zLXVzZS1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3B5dGhvbjMtc2V0dXAucHktbm8taG9zdC1oZWFkZXJzLWxpYnMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3N5c2NvbmZpZy5weS1hZGQtX1BZVEhPTl9QUk9KRUNUX1NSQy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vc2V0dXAucHktY2hlY2stY3Jvc3NfY29tcGlsaW5nLXdoZW4tZ2V0LUZMQUdTLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9zZXR1cC5weS1maW5kLWxpYnJhcmllcy1pbi1zdGFnaW5nLWRpcnMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5hYy1maXgtTElCUEwucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3Vwc3RyZWFtLXJhbmRvbS1maXhlcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1Jc3N1ZS0yMTI3Mi1Vc2UtX3N5c2NvbmZpZ2RhdGEucHktdG8taW5pdGlhbGl6ZS1kaXN0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9GaXgtMjk1MTktd2Vha3JlZi1zcGV3aW5nLWV4Y2VwdGlvbnMtZHVyaW5nLWludGVycC1mLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjU3ZDFmOGJmYmFiZjRmMjUwMDI3M2ZiMDcwNmU2ZjIxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVlZmUyYWQ2NTc1ODU1NDIzYWI2MzBmNWI1MWE4ZWY2ZTU1NTZmNzc0NTg0YzA2YmVhYjQ5MjZmOTMwZGRiYjAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWI2ODBlZDk5YWE2MGQzNTBjNjVhNjU5MTQ0OTQyMDdlIgotCi0jIGV4Y2x1ZGUgcHJlLXJlbGVhc2VzIGZvciBib3RoIHB5dGhvbiAyLnggYW5kIDMueAotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiW1BwXXl0aG9uLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCi0KLVMgPSAiJHtXT1JLRElSfS9QeXRob24tJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIG11bHRpbGliX2hlYWRlciBweXRob24zbmF0aXZlIHBrZ2NvbmZpZwotCi1DT05GSUdVUkVPUFRTICs9ICIgLS13aXRoLXN5c3RlbS1mZmkgIgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyA9ICJhY19jdl9oYXZlX2NoZmxhZ3M9bm8gXAotICAgICAgICAgICAgICAgIGFjX2N2X2hhdmVfbGNoZmxhZ3M9bm8gXAotICAgICAgICAgICAgICAgIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXMgXAotICAgICAgICAgICAgICAgIGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvPW5vIFwKLSAgICAgICAgICAgICAgICBhY19jdl9maWxlX19kZXZfcHRteD15ZXMgXAotICAgICAgICAgICAgICAgIGFjX2N2X2ZpbGVfX2Rldl9wdGM9bm8gXAotIgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiLUROREVCVUcgLWZuby1pbmxpbmUiCi1TREtfQ0NfQVJDSCArPSAiLUROREVCVUcgLWZuby1pbmxpbmUiCi1FWFRSQV9PRU1BS0UgKz0gIkNST1NTX0NPTVBJTEU9eWVzIgotRVhUUkFfT0VDT05GICs9ICJDUk9TU1BZVEhPTlBBVEg9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvIC0td2l0aG91dC1lbnN1cmVwaXAiCi0KLWV4cG9ydCBDUk9TU19DT01QSUxFID0gIiR7VEFSR0VUX1BSRUZJWH0iCi1leHBvcnQgX1BZVEhPTl9QUk9KRUNUX0JBU0UgPSAiJHtCfSIKLWV4cG9ydCBfUFlUSE9OX1BST0pFQ1RfU1JDID0gIiR7U30iCi1leHBvcnQgQ0NTSEFSRUQgPSAiLWZQSUMiCi0KLSMgRml4IGNyb3NzIGNvbXBpbGF0aW9uIG9mIGRpZmZlcmVudCBtb2R1bGVzCi1leHBvcnQgQ1JPU1NQWVRIT05QQVRIID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkLzoke0J9L2J1aWxkL2xpYi5saW51eC0ke1RBUkdFVF9BUkNIfS0ke1BZVEhPTl9NQUpNSU59OiR7U30vTGliOiR7U30vTGliL3BsYXQtbGludXgiCi0KLSMgTm8gY3R5cGVzIG9wdGlvbiBmb3IgcHl0aG9uIDMKLVBZVEhPTkxTQk9QVFMgPSAiIgotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCXJtIC1mICR7U30vTWFrZWZpbGUub3JpZwotCWF1dG9yZWNvbmYgLVdjcm9zcyAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgLS1leGNsdWRlPWF1dG9wb2ludCAuLi9QeXRob24tJHtQVn0vTW9kdWxlcy9fY3R5cGVzL2xpYmZmaQotfQotCi1kb19jb21waWxlKCkgewotICAgICAgICAjIHJlZ2VuZXJhdGUgcGxhdGZvcm0gc3BlY2lmaWMgZmlsZXMsIGJlY2F1c2UgdGhleSBkZXBlbmQgb24gc3lzdGVtIGhlYWRlcnMKLSAgICAgICAgY2QgJHtTfS9MaWIvcGxhdC1saW51eCoKLSAgICAgICAgaW5jbHVkZT0ke1NUQUdJTkdfSU5DRElSfSAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0gICAgICAgICAgICAgICAgJHtTfS9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vZGxmY24uaCBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbGludXgvY2Ryb20uaCBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbmV0aW5ldC9pbi5oIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9zeXMvdHlwZXMuaAotICAgICAgICBzZWQgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgLWkgKi5weQotICAgICAgICBjZCAtCi0KLQotCSMgcmVtb3ZlIGFueSBib2d1cyBMRF9MSUJSQVJZX1BBVEgKLQlzZWQgLWkgLWUgcyxSVU5TSEFSRUQ9LiosUlVOU0hBUkVEPSwgTWFrZWZpbGUKLQotCWlmIFsgISAtZiBNYWtlZmlsZS5vcmlnIF07IHRoZW4KLQkJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlIE1ha2VmaWxlLm9yaWcKLQlmaQotCXNlZCAtaSAtZSAncyxeQ09ORklHVVJFX0xERkxBR1M9LiosQ09ORklHVVJFX0xERkxBR1M9LUwuIC1MJHtTVEFHSU5HX0xJQkRJUn0sZycgXAotCQktZSAncyxsaWJkaXI9JHtsaWJkaXJ9LGxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSxnJyBcCi0JCS1lICdzLGxpYmV4ZWNkaXI9JHtsaWJleGVjZGlyfSxsaWJleGVjZGlyPSR7U1RBR0lOR19ESVJfSE9TVH0ke2xpYmV4ZWNkaXJ9LGcnIFwKLQkJLWUgJ3MsXkxJQkRJUj0uKixMSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0sZycgXAotCQktZSAncyxpbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0saW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCi0JCS1lICdzLF5JTkNMVURFRElSPS4qLElOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQktZSAncyxeQ09ORklOQ0xVREVESVI9LiosQ09ORklOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQlNYWtlZmlsZQotCSMgc2F2ZSBjb3B5IG9mIGl0IG5vdywgYmVjYXVzZSBpZiB3ZSBkbyBpdCBpbiBkb19pbnN0YWxsIGFuZCAKLQkjIHRoZW4gY2FsbCBkb19pbnN0YWxsIHR3aWNlIHdlIGdldCBNYWtlZmlsZS5vcmlnID09IE1ha2VmaWxlLnN5c3Jvb3QKLQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUgTWFrZWZpbGUuc3lzcm9vdAotCi0Jb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcGdlbiBcCi0JCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAotCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0JCUxJQj0ke2Jhc2VsaWJ9IFwKLQkJQVJDSD0ke1RBUkdFVF9BUkNIfSBcCi0JCU9QVD0iJHtDRkxBR1N9IiBsaWJweXRob24zLnNvCi0KLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJTElCPSR7YmFzZWxpYn0gXAotCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKLQkJT1BUPSIke0NGTEFHU30iCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JIyBtYWtlIGluc3RhbGwgbmVlZHMgdGhlIG9yaWdpbmFsIE1ha2VmaWxlLCBvciBvdGhlcndpc2UgdGhlIGluY2x1ZXMgd291bGQKLQkjIGdvIHRvICR7RH0ke1NUQUdJTkcuLi59Ly4uLgotCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5vcmlnIE1ha2VmaWxlCi0KLQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnCi0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnCi0KLQkjIHJlcnVuIHRoZSBidWlsZCBvbmNlIGFnYWluIHdpdGggb3JpZ2luYWwgbWFrZWZpbGUgdGhpcyB0aW1lCi0JIyBydW4gaW5zdGFsbCBpbiBhIHNlcGFyYXRlIHN0ZXAgdG8gYXZvaWQgY29tcGlsZS9pbnN0YWxsIHJhY2UKLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJTElCPSR7YmFzZWxpYn0gXAotCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKLQkJREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0KLQkKLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJTElCPSR7YmFzZWxpYn0gXAotCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKLQkJREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0gaW5zdGFsbAotCi0JIyBhdm9pZCBjb25mbGljdCB3aXRoIDJ0bzMgZnJvbSBQeXRob24gMgotCXJtIC1mICR7RH0vJHtiaW5kaXJ9LzJ0bzMKLQotCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5zeXNyb290ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCi0JaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLnN5c3Jvb3QgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fTUFKTUlOfSR7UFlUSE9OX0FCSX0vTWFrZWZpbGUKLQotCWlmIFsgLWUgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5IF07IHRoZW4KLQkJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59Ci0JZmkKLQotCW9lX211bHRpbGliX2hlYWRlciBweXRob24ke1BZVEhPTl9CSU5BQkl9L3B5Y29uZmlnLmgKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKLQljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0gVEVSTUlORk9fRElSUz0nJHtzeXNjb25mZGlyfS90ZXJtaW5mbzovZXRjL3Rlcm1pbmZvOi91c3Ivc2hhcmUvdGVybWluZm86L3Vzci9zaGFyZS9taXNjL3Rlcm1pbmZvOi9saWIvdGVybWluZm8nCi19Ci0KLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICJNYWtlZmlsZSIKLVBBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAicHlfcGFja2FnZV9wcmVwcm9jZXNzIgotCi1weV9wYWNrYWdlX3ByZXByb2Nlc3MgKCkgewotCSMgY29weSBiYWNrIHRoZSBvbGQgTWFrZWZpbGUgdG8gZml4IHRhcmdldCBwYWNrYWdlCi0JaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vTWFrZWZpbGUub3JpZyAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZQotCWluc3RhbGwgLW0gMDY0NCAke0J9L01ha2VmaWxlLm9yaWcgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fTUFKTUlOfSR7UFlUSE9OX0FCSX0vTWFrZWZpbGUKLQkjIFJlbW92ZSByZWZlcmVuY2VzIHRvIGJ1aWxkbWFjaGluZSBwYXRocyBpbiB0YXJnZXQgTWFrZWZpbGUgYW5kIF9zeXNjb25maWdkYXRhCi0Jc2VkIC1pIC1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIC1lIHM6Jy0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9Jzo6ZyBcCi0JCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlIFwKLQkJJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fTUFKTUlOfSR7UFlUSE9OX0FCSX0vTWFrZWZpbGUgXAotCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5Ci19Ci0KLXJlcXVpcmUgcHl0aG9uLSR7UFlUSE9OX01BSk1JTn0tbWFuaWZlc3QuaW5jCi0KLSMgbWFudWFsIGRlcGVuZGVuY3kgYWRkaXRpb25zCi1SUFJPVklERVNfJHtQTn0tbW9kdWxlcyA9ICIke1BOfSIKLVJSRUNPTU1FTkRTXyR7UE59LWNvcmUgPSAiJHtQTn0tcmVhZGxpbmUiCi1SUkVDT01NRU5EU18ke1BOfS1jcnlwdCA9ICJvcGVuc3NsIgotUlJFQ09NTUVORFNfJHtQTn0tY3J5cHRfY2xhc3MtbmF0aXZlc2RrID0gIm5hdGl2ZXNkay1vcGVuc3NsIgotCi1GSUxFU18ke1BOfS0ydG8zICs9ICIke2JpbmRpcn0vMnRvMy0ke1BZVEhPTl9NQUpNSU59IgotRklMRVNfJHtQTn0tcHlkb2MgKz0gIiR7YmluZGlyfS9weWRvYyR7UFlUSE9OX01BSk1JTn0gJHtiaW5kaXJ9L3B5ZG9jMyIKLUZJTEVTXyR7UE59LWlkbGUgKz0gIiR7YmluZGlyfS9pZGxlMyAke2JpbmRpcn0vaWRsZSR7UFlUSE9OX01BSk1JTn0iCi0KLVBBQ0tBR0VTID0rICIke1BOfS1weXZlbnYiCi1GSUxFU18ke1BOfS1weXZlbnYgKz0gIiR7YmluZGlyfS9weXZlbnYtJHtQWVRIT05fTUFKTUlOfSAke2JpbmRpcn0vcHl2ZW52IgotCi0jIHBhY2thZ2UgbGlicHl0aG9uMwotUEFDS0FHRVMgPSsgImxpYnB5dGhvbjMgbGlicHl0aG9uMy1zdGF0aWNkZXYiCi1GSUxFU19saWJweXRob24zID0gIiR7bGliZGlyfS9saWJweXRob24qLnNvLioiCi1GSUxFU19saWJweXRob24zLXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX0JJTkFCSX0vbGlicHl0aG9uJHtQWVRIT05fQklOQUJJfS5hIgotSU5TQU5FX1NLSVBfJHtQTn0tZGV2ICs9ICJkZXYtZWxmIgotCi0jIGNhdGNoIGFsbCB0aGUgcmVzdCAodW5zb3J0ZWQpCi1QQUNLQUdFUyArPSAiJHtQTn0tbWlzYyIKLVJERVBFTkRTXyR7UE59LW1pc2MgKz0gIiR7UE59LWNvcmUgJHtQTn0tZW1haWwgJHtQTn0tY29kZWNzICR7UE59LXRleHR1dGlscyAke1BOfS1hcmdwYXJzZSIKLVJERVBFTkRTXyR7UE59LW1vZHVsZXMgKz0gIiR7UE59LW1pc2MiCi1GSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IgotCi0jIGNhdGNoIG1hbnBhZ2UKLVBBQ0tBR0VTICs9ICIke1BOfS1tYW4iCi1GSUxFU18ke1BOfS1tYW4gPSAiJHtkYXRhZGlyfS9tYW4iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjUuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg5M2I4NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjUuYmIKQEAgLTAsMCArMSwzMjMgQEAKK3JlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYworCitERVBFTkRTID0gInB5dGhvbjMtbmF0aXZlIGxpYmZmaSBiemlwMiBnZGJtIG9wZW5zc2wgc3FsaXRlMyB6bGliIHZpcnR1YWwvbGliaW50bCB4eiIKKworUFIgPSAiJHtJTkNfUFJ9LjAiCitQWVRIT05fTUFKTUlOID0gIjMuNSIKK1BZVEhPTl9CSU5BQkk9ICIke1BZVEhPTl9NQUpNSU59bSIKK0RJU1RST19TUkNfVVJJID89ICJmaWxlOi8vc2l0ZWN1c3RvbWl6ZS5weSIKK0RJU1RST19TUkNfVVJJX2xpbnV4c3RkYmFzZSA9ICIiCitTUkNfVVJJID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLyR7UFZ9L1B5dGhvbi0ke1BWfS50YXIueHogXAorZmlsZTovL3B5dGhvbi1jb25maWcucGF0Y2ggXAorZmlsZTovLzAwMDEtY3Jvc3MtY29tcGlsZS1zdXBwb3J0LnBhdGNoIFwKK2ZpbGU6Ly8wMzAtZml4dXAtaW5jbHVkZS1kaXJzLnBhdGNoIFwKK2ZpbGU6Ly8wNzAtZG9udC1jbGVhbi1pcGtnLWluc3RhbGwucGF0Y2ggXAorZmlsZTovLzA4MC1kaXN0dXRpbHMtZG9udF9hZGp1c3RfZmlsZXMucGF0Y2ggXAorZmlsZTovLzEzMC1yZWFkbGluZS1zZXR1cC5wYXRjaCBcCitmaWxlOi8vMTUwLWZpeC1zZXR1cHRlcm0ucGF0Y2ggXAorZmlsZTovLzAwMDEtaDJweS1GaXgtaXNzdWUtMTMwMzItd2hlcmUtaXQtZmFpbHMtd2l0aC1Vbmljb2RlRGVjby5wYXRjaCBcCitmaWxlOi8vdHdlYWstTVVMVElBUkNILWZvci1wb3dlcnBjLWxpbnV4LWdudXNwZS5wYXRjaCBcCitmaWxlOi8vc3VwcG9ydF9TT1VSQ0VfREFURV9FUE9DSF9pbl9weV9jb21waWxlLnBhdGNoIFwKKyR7RElTVFJPX1NSQ19VUkl9IFwKKyIKKworU1JDX1VSSSArPSAiXAorICAgICAgICAgICAgZmlsZTovLzAzLWZpeC10a2ludGVyLWRldGVjdGlvbi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9jZ2lfcHkucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2hvc3RfaW5jbHVkZV9jb250YW1pbmF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9weXRob24tMy4zLW11bHRpbGliLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9zaHV0aWwtZm9sbG93LXN5bWxpbmstZml4LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9zeXNyb290LWluY2x1ZGUtaGVhZGVycy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vdW5peGNjb21waWxlci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vYXZvaWQtbmN1cnNlc3ctaW5jbHVkZS1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9weXRob24zLXVzZS1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3N5c2NvbmZpZy5weS1hZGQtX1BZVEhPTl9QUk9KRUNUX1NSQy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vc2V0dXAucHktY2hlY2stY3Jvc3NfY29tcGlsaW5nLXdoZW4tZ2V0LUZMQUdTLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUuYWMtZml4LUxJQlBMLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUlzc3VlLTIxMjcyLVVzZS1fc3lzY29uZmlnZGF0YS5weS10by1pbml0aWFsaXplLWRpc3QucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3Bhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZjM3NjNlZGY5ODI0ZDVkM2ExNWY1ZjY0NjA4M2I2ZTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDYzZDJjM2IwNDAyZDYxOTFiOTA3MzFlMGY3MzVjNjQ4MzBlNzUyMjM0OGFlYjdlZDM4MmE4MzE2NWQ0NTAwOSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjZlYzUxNWIyMjYxOGY1NWZhMDcyNzZiODk3YmFjZWEiCisKKyMgZXhjbHVkZSBwcmUtcmVsZWFzZXMgZm9yIGJvdGggcHl0aG9uIDIueCBhbmQgMy54CitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbUHBdeXRob24tKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKKworUyA9ICIke1dPUktESVJ9L1B5dGhvbi0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgbXVsdGlsaWJfaGVhZGVyIHB5dGhvbjNuYXRpdmUgcGtnY29uZmlnCisKK0NPTkZJR1VSRU9QVFMgKz0gIiAtLXdpdGgtc3lzdGVtLWZmaSAiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTID0gImFjX2N2X2hhdmVfY2hmbGFncz1ubyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfaGF2ZV9sY2hmbGFncz1ubyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PXllcyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm89bm8gXAorICAgICAgICAgICAgICAgIGFjX2N2X2ZpbGVfX2Rldl9wdG14PXllcyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfZmlsZV9fZGV2X3B0Yz1ubyBcCisiCisKK1RBUkdFVF9DQ19BUkNIICs9ICItRE5ERUJVRyAtZm5vLWlubGluZSIKK1NES19DQ19BUkNIICs9ICItRE5ERUJVRyAtZm5vLWlubGluZSIKK0VYVFJBX09FTUFLRSArPSAiQ1JPU1NfQ09NUElMRT15ZXMiCitFWFRSQV9PRUNPTkYgKz0gIkNST1NTUFlUSE9OUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC8gLS13aXRob3V0LWVuc3VyZXBpcCIKKworZXhwb3J0IENST1NTX0NPTVBJTEUgPSAiJHtUQVJHRVRfUFJFRklYfSIKK2V4cG9ydCBfUFlUSE9OX1BST0pFQ1RfQkFTRSA9ICIke0J9IgorZXhwb3J0IF9QWVRIT05fUFJPSkVDVF9TUkMgPSAiJHtTfSIKK2V4cG9ydCBDQ1NIQVJFRCA9ICItZlBJQyIKKworIyBGaXggY3Jvc3MgY29tcGlsYXRpb24gb2YgZGlmZmVyZW50IG1vZHVsZXMKK2V4cG9ydCBDUk9TU1BZVEhPTlBBVEggPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvOiR7Qn0vYnVpbGQvbGliLmxpbnV4LSR7VEFSR0VUX0FSQ0h9LSR7UFlUSE9OX01BSk1JTn06JHtTfS9MaWI6JHtTfS9MaWIvcGxhdC1saW51eCIKKworIyBObyBjdHlwZXMgb3B0aW9uIGZvciBweXRob24gMworUFlUSE9OTFNCT1BUUyA9ICIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJyZWFkbGluZSIKK1BBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIiwscmVhZGxpbmUiCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisJcm0gLWYgJHtTfS9NYWtlZmlsZS5vcmlnCisJYXV0b3JlY29uZiAtV2Nyb3NzIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAtLWV4Y2x1ZGU9YXV0b3BvaW50IC4uL1B5dGhvbi0ke1BWfS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpCit9CisKK2RvX2NvbXBpbGUoKSB7CisgICAgICAgICMgcmVnZW5lcmF0ZSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWxlcywgYmVjYXVzZSB0aGV5IGRlcGVuZCBvbiBzeXN0ZW0gaGVhZGVycworICAgICAgICBjZCAke1N9L0xpYi9wbGF0LWxpbnV4KgorICAgICAgICBpbmNsdWRlPSR7U1RBR0lOR19JTkNESVJ9ICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKyAgICAgICAgICAgICAgICAke1N9L1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIFwKKyAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9kbGZjbi5oIFwKKyAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9saW51eC9jZHJvbS5oIFwKKyAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9uZXRpbmV0L2luLmggXAorICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L3N5cy90eXBlcy5oCisgICAgICAgIHNlZCAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyAtaSAqLnB5CisgICAgICAgIGNkIC0KKworCisJIyByZW1vdmUgYW55IGJvZ3VzIExEX0xJQlJBUllfUEFUSAorCXNlZCAtaSAtZSBzLFJVTlNIQVJFRD0uKixSVU5TSEFSRUQ9LCBNYWtlZmlsZQorCisJaWYgWyAhIC1mIE1ha2VmaWxlLm9yaWcgXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUgTWFrZWZpbGUub3JpZworCWZpCisJc2VkIC1pIC1lICdzLF5DT05GSUdVUkVfTERGTEFHUz0uKixDT05GSUdVUkVfTERGTEFHUz0tTC4gLUwke1NUQUdJTkdfTElCRElSfSxnJyBcCisJCS1lICdzLGxpYmRpcj0ke2xpYmRpcn0sbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9LGcnIFwKKwkJLWUgJ3MsbGliZXhlY2Rpcj0ke2xpYmV4ZWNkaXJ9LGxpYmV4ZWNkaXI9JHtTVEFHSU5HX0RJUl9IT1NUfSR7bGliZXhlY2Rpcn0sZycgXAorCQktZSAncyxeTElCRElSPS4qLExJQkRJUj0ke1NUQUdJTkdfTElCRElSfSxnJyBcCisJCS1lICdzLGluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfSxpbmNsdWRlZGlyPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKKwkJLWUgJ3MsXklOQ0xVREVESVI9LiosSU5DTFVERT0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCisJCS1lICdzLF5DT05GSU5DTFVERURJUj0uKixDT05GSU5DTFVERT0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCisJCU1ha2VmaWxlCisJIyBzYXZlIGNvcHkgb2YgaXQgbm93LCBiZWNhdXNlIGlmIHdlIGRvIGl0IGluIGRvX2luc3RhbGwgYW5kIAorCSMgdGhlbiBjYWxsIGRvX2luc3RhbGwgdHdpY2Ugd2UgZ2V0IE1ha2VmaWxlLm9yaWcgPT0gTWFrZWZpbGUuc3lzcm9vdAorCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZSBNYWtlZmlsZS5zeXNyb290CisKKwlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKKwkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCisJCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKKwkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCisJCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKKwkJTElCPSR7YmFzZWxpYn0gXAorCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKKwkJT1BUPSIke0NGTEFHU30iIGxpYnB5dGhvbjMuc28KKworCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3BnZW4gXAorCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKwkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCisJCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAorCQlMSUI9JHtiYXNlbGlifSBcCisJCUFSQ0g9JHtUQVJHRVRfQVJDSH0gXAorCQlPUFQ9IiR7Q0ZMQUdTfSIKK30KKworZG9faW5zdGFsbCgpIHsKKwkjIG1ha2UgaW5zdGFsbCBuZWVkcyB0aGUgb3JpZ2luYWwgTWFrZWZpbGUsIG9yIG90aGVyd2lzZSB0aGUgaW5jbHVlcyB3b3VsZAorCSMgZ28gdG8gJHtEfSR7U1RBR0lORy4uLn0vLi4uCisJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLm9yaWcgTWFrZWZpbGUKKworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcKKworCSMgcmVydW4gdGhlIGJ1aWxkIG9uY2UgYWdhaW4gd2l0aCBvcmlnaW5hbCBtYWtlZmlsZSB0aGlzIHRpbWUKKwkjIHJ1biBpbnN0YWxsIGluIGEgc2VwYXJhdGUgc3RlcCB0byBhdm9pZCBjb21waWxlL2luc3RhbGwgcmFjZQorCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3BnZW4gXAorCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKwkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCisJCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAorCQlMSUI9JHtiYXNlbGlifSBcCisJCUFSQ0g9JHtUQVJHRVRfQVJDSH0gXAorCQlERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfQorCQorCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3BnZW4gXAorCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKwkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCisJCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAorCQlMSUI9JHtiYXNlbGlifSBcCisJCUFSQ0g9JHtUQVJHRVRfQVJDSH0gXAorCQlERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfSBpbnN0YWxsCisKKwkjIGF2b2lkIGNvbmZsaWN0IHdpdGggMnRvMyBmcm9tIFB5dGhvbiAyCisJcm0gLWYgJHtEfS8ke2JpbmRpcn0vMnRvMworCisJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLnN5c3Jvb3QgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUKKwlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUuc3lzcm9vdCAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59JHtQWVRIT05fQUJJfS9NYWtlZmlsZQorCisJaWYgWyAtZSAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0KKwlmaQorCisJb2VfbXVsdGlsaWJfaGVhZGVyIHB5dGhvbiR7UFlUSE9OX0JJTkFCSX0vcHljb25maWcuaAorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgeworCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfSBURVJNSU5GT19ESVJTPScke3N5c2NvbmZkaXJ9L3Rlcm1pbmZvOi9ldGMvdGVybWluZm86L3Vzci9zaGFyZS90ZXJtaW5mbzovdXNyL3NoYXJlL21pc2MvdGVybWluZm86L2xpYi90ZXJtaW5mbycKK30KKworU1NUQVRFX1NDQU5fRklMRVMgKz0gIk1ha2VmaWxlIgorUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJweV9wYWNrYWdlX3ByZXByb2Nlc3MiCisKK3B5X3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7CisJIyBjb3B5IGJhY2sgdGhlIG9sZCBNYWtlZmlsZSB0byBmaXggdGFyZ2V0IHBhY2thZ2UKKwlpbnN0YWxsIC1tIDA2NDQgJHtCfS9NYWtlZmlsZS5vcmlnICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCisJaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vTWFrZWZpbGUub3JpZyAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59JHtQWVRIT05fQUJJfS9NYWtlZmlsZQorCSMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYnVpbGRtYWNoaW5lIHBhdGhzIGluIHRhcmdldCBNYWtlZmlsZSBhbmQgX3N5c2NvbmZpZ2RhdGEKKwlzZWQgLWkgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgLWUgczonLS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0nOjpnIFwKKwkJLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorCQktZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCQktZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKwkJLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKwkJLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisJCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlIFwKKwkJJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fTUFKTUlOfSR7UFlUSE9OX0FCSX0vTWFrZWZpbGUgXAorCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5IFwKKwkJJHtQS0dEfS8ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fQklOQUJJfS1jb25maWcKKworCSMgUmVjb21waWxlIF9zeXNjb25maWdkYXRhIGFmdGVyIG1vZGlmeWluZyBpdAorCWNkICR7UEtHRH0KKwkke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gXAorCSAgICAgLWMgImZyb20gcHlfY29tcGlsZSBpbXBvcnQgY29tcGlsZTsgY29tcGlsZSgnLi8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weScpIgorCSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBcCisJICAgICAtYyAiZnJvbSBweV9jb21waWxlIGltcG9ydCBjb21waWxlOyBjb21waWxlKCcuLyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5Jywgb3B0aW1pemU9MSkiCisJJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IFwKKwkgICAgIC1jICJmcm9tIHB5X2NvbXBpbGUgaW1wb3J0IGNvbXBpbGU7IGNvbXBpbGUoJy4vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHknLCBvcHRpbWl6ZT0yKSIKKwljZCAtCit9CisKKyMgbWFudWFsIGRlcGVuZGVuY3kgYWRkaXRpb25zCitSUFJPVklERVNfJHtQTn0tbW9kdWxlcyA9ICIke1BOfSIKK1JSRUNPTU1FTkRTXyR7UE59LWNvcmVfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgbmF0aXZlc2RrLXB5dGhvbjMtbW9kdWxlcyIKK1JSRUNPTU1FTkRTXyR7UE59LWNyeXB0ID0gIm9wZW5zc2wiCitSUkVDT01NRU5EU18ke1BOfS1jcnlwdF9jbGFzcy1uYXRpdmVzZGsgPSAibmF0aXZlc2RrLW9wZW5zc2wiCisKK0ZJTEVTXyR7UE59LTJ0bzMgKz0gIiR7YmluZGlyfS8ydG8zLSR7UFlUSE9OX01BSk1JTn0iCitGSUxFU18ke1BOfS1weWRvYyArPSAiJHtiaW5kaXJ9L3B5ZG9jJHtQWVRIT05fTUFKTUlOfSAke2JpbmRpcn0vcHlkb2MzIgorRklMRVNfJHtQTn0taWRsZSArPSAiJHtiaW5kaXJ9L2lkbGUzICR7YmluZGlyfS9pZGxlJHtQWVRIT05fTUFKTUlOfSIKKworUEFDS0FHRVMgPSsgIiR7UE59LXB5dmVudiIKK0ZJTEVTXyR7UE59LXB5dmVudiArPSAiJHtiaW5kaXJ9L3B5dmVudi0ke1BZVEhPTl9NQUpNSU59ICR7YmluZGlyfS9weXZlbnYiCisKKyMgcGFja2FnZSBsaWJweXRob24zCitQQUNLQUdFUyA9KyAibGlicHl0aG9uMyBsaWJweXRob24zLXN0YXRpY2RldiIKK0ZJTEVTX2xpYnB5dGhvbjMgPSAiJHtsaWJkaXJ9L2xpYnB5dGhvbiouc28uKiIKK0ZJTEVTX2xpYnB5dGhvbjMtc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fQklOQUJJfS9saWJweXRob24ke1BZVEhPTl9CSU5BQkl9LmEiCitJTlNBTkVfU0tJUF8ke1BOfS1kZXYgKz0gImRldi1lbGYiCisKKyMgY2F0Y2ggYWxsIHRoZSByZXN0ICh1bnNvcnRlZCkKK1BBQ0tBR0VTICs9ICIke1BOfS1taXNjIgorUkRFUEVORFNfJHtQTn0tbWlzYyArPSAiJHtQTn0tY29yZSAke1BOfS1lbWFpbCAke1BOfS1jb2RlY3MiCitSREVQRU5EU18ke1BOfS1tb2R1bGVzICs9ICIke1BOfS1taXNjIgorRklMRVNfJHtQTn0tbWlzYyA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfSIKKworIyBjYXRjaCBtYW5wYWdlCitQQUNLQUdFUyArPSAiJHtQTn0tbWFuIgorRklMRVNfJHtQTn0tbWFuID0gIiR7ZGF0YWRpcn0vbWFuIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKKworUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1tb2R1bGVzIgorCisjIFdlIHdhbnQgYnl0ZWNvZGUgcHJlY29tcGlsZWQgLnB5IGZpbGVzICgucHljJ3MpIGJ5IGRlZmF1bHQKKyMgYnV0IHRoZSB1c2VyIG1heSBzZXQgaXQgb24gdGhlaXIgb3duIGNvbmYKK0lOQ0xVREVfUFlDUyA/PSAiMSIKKworcHl0aG9uKCl7CisgICAgaW1wb3J0IGpzb24KKworICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdUSElTRElSJyksICdweXRob24zJywgJ3B5dGhvbjMtbWFuaWZlc3QuanNvbicpCisgICAgIyBUaGlzIHB5dGhvbiBjaGFuZ2VzIHRoZSBkYXRhc3RvcmUgYmFzZWQgb24gdGhlIGNvbnRlbnRzIG9mIGEgZmlsZSwgc28gbWFyaworICAgICMgdGhhdCBkZXBlbmRlbmN5LgorICAgIGJiLnBhcnNlLm1hcmtfZGVwZW5kZW5jeShkLCBmaWxlbmFtZSkKKworICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgbWFuaWZlc3RfZmlsZToKKyAgICAgICAgcHl0aG9uX21hbmlmZXN0PWpzb24ubG9hZChtYW5pZmVzdF9maWxlKQorCisgICAgaW5jbHVkZV9weWNzID0gZC5nZXRWYXIoJ0lOQ0xVREVfUFlDUycpCisKKyAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKKyAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCisKKyAgICBuZXdwYWNrYWdlcz1bXQorICAgIGZvciBrZXkgaW4gcHl0aG9uX21hbmlmZXN0OgorICAgICAgICBweXBhY2thZ2U9IHBuICsgJy0nICsga2V5CisKKyAgICAgICAgaWYgcHlwYWNrYWdlIG5vdCBpbiBwYWNrYWdlczoKKyAgICAgICAgICAgICMgV2UgbmVlZCB0byBwcmVwZW5kLCBvdGhlcndpc2UgcHl0aG9uLW1pc2MgZ2V0cyBldmVyeXRoaW5nCisgICAgICAgICAgICAjIHNvIHdlIHVzZSBhIG5ldyB2YXJpYWJsZQorICAgICAgICAgICAgbmV3cGFja2FnZXMuYXBwZW5kKHB5cGFja2FnZSkKKworICAgICAgICAjICJCdWlsZCIgcHl0aG9uJ3MgbWFuaWZlc3QgRklMRVMsIFJERVBFTkRTIGFuZCBTVU1NQVJZCisgICAgICAgIGQuc2V0VmFyKCdGSUxFU18nICsgcHlwYWNrYWdlLCAnJykKKyAgICAgICAgZm9yIHZhbHVlIGluIHB5dGhvbl9tYW5pZmVzdFtrZXldWydmaWxlcyddOgorICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ0ZJTEVTXycgKyBweXBhY2thZ2UsICcgJyArIHZhbHVlKQorCisgICAgCSMgQWRkIGNhY2hlZCBmaWxlcworICAgICAgICBpZiBpbmNsdWRlX3B5Y3MgPT0gJzEnOgorICAgICAgICAgICAgZm9yIHZhbHVlIGluIHB5dGhvbl9tYW5pZmVzdFtrZXldWydjYWNoZWQnXToKKyAgICAgICAgICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ0ZJTEVTXycgKyBweXBhY2thZ2UsICcgJyArIHZhbHVlKQorCisgICAgICAgIGQuc2V0VmFyKCdSREVQRU5EU18nICsgcHlwYWNrYWdlLCAnJykKKyAgICAgICAgZm9yIHZhbHVlIGluIHB5dGhvbl9tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddOgorICAgICAgICAgICAgIyBNYWtlIGl0IHdvcmsgd2l0aCBvciB3aXRob3V0ICRQTgorICAgICAgICAgICAgaWYgJyR7UE59JyBpbiB2YWx1ZToKKyAgICAgICAgICAgICAgICB2YWx1ZT12YWx1ZS5zcGxpdCgnLScpWzFdCisgICAgICAgICAgICBkLmFwcGVuZFZhcignUkRFUEVORFNfJyArIHB5cGFja2FnZSwgJyAnICsgcG4gKyAnLScgKyB2YWx1ZSkKKyAgICAgICAgZC5zZXRWYXIoJ1NVTU1BUllfJyArIHB5cGFja2FnZSwgcHl0aG9uX21hbmlmZXN0W2tleV1bJ3N1bW1hcnknXSkKKworICAgICMgV2UgbmVlZCB0byBlbnN1cmUgc3RhdGljZGV2IHBhY2thZ2VzIG1hdGNoIGZvciBmaWxlcyBmaXJzdCBzbyB3ZSBzb3J0IGluIHJldmVyc2UKKyAgICBuZXdwYWNrYWdlcy5zb3J0KHJldmVyc2U9VHJ1ZSkKKyAgICAjIFByZXBlbmRpbmcgc28gdG8gYXZvaWQgcHl0aG9uLW1pc2MgZ2V0dGluZyBldmVyeXRoaW5nCisgICAgcGFja2FnZXMgPSBuZXdwYWNrYWdlcyArIHBhY2thZ2VzCisgICAgZC5zZXRWYXIoJ1BBQ0tBR0VTJywgJyAnLmpvaW4ocGFja2FnZXMpKQorICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8ke1BOfS1tb2R1bGVzJywgJzEnKQorfQorCisjIEZpbGVzIG5lZWRlZCB0byBjcmVhdGUgYSBuZXcgbWFuaWZlc3QKK1NSQ19VUkkgKz0gImZpbGU6Ly9jcmVhdGVfbWFuaWZlc3QzLnB5IGZpbGU6Ly9nZXRfbW9kdWxlX2RlcHMzLnB5IGZpbGU6Ly9weXRob24zLW1hbmlmZXN0Lmpzb24iCisKK2RvX2NyZWF0ZV9tYW5pZmVzdCgpIHsKKyAgICAjIFRoaXMgdGFzayBzaG91bGQgYmUgcnVuIHdpdGggZXZlcnkgbmV3IHJlbGVhc2Ugb2YgUHl0aG9uLgorICAgICMgV2UgbXVzdCBlbnN1cmUgdGhhdCBQQUNLQUdFQ09ORklHIGVuYWJsZXMgZXZlcnl0aGluZyB3aGVuIGNyZWF0aW5nCisgICAgIyBhIG5ldyBtYW5pZmVzdCwgdGhpcyBpcyB0byBiYXNlIG91ciBuZXcgbWFuaWZlc3Qgb24gYSBjb21wbGV0ZQorICAgICMgbmF0aXZlIHB5dGhvbiBidWlsZCwgY29udGFpbmluZyBhbGwgZGVwZW5kZW5jaWVzLCBvdGhlcndpc2UgdGhlIHRhc2sKKyAgICAjIHdvbnQgYmUgYWJsZSB0byBmaW5kIHRoZSByZXF1aXJlZCBmaWxlcy4KKyAgICAjIGUuZy4gQmVya2VsZXlEQiBpcyBhbiBvcHRpb25hbCBidWlsZCBkZXBlbmRlbmN5IHNvIGl0IG1heSBvciBtYXkgbm90CisgICAgIyBiZSBwcmVzZW50LCB3ZSBtdXN0IGVuc3VyZSBpdCBpcy4KKworICAgIGNkICR7V09SS0RJUn0KKyAgICAjIFRoaXMgbmVlZHMgdG8gYmUgZXhlY3V0ZWQgYnkgcHl0aG9uLW5hdGl2ZSBhbmQgTk9UIGJ5IEhPU1QncyBweXRob24KKyAgICBuYXRpdmVweXRob24zIGNyZWF0ZV9tYW5pZmVzdDMucHkKKyAgICBjcCBweXRob24zLW1hbmlmZXN0Lmpzb24ubmV3ICR7VEhJU0RJUn0vcHl0aG9uMy9weXRob24zLW1hbmlmZXN0Lmpzb24KK30KKworIyBiaXRiYWtlIHB5dGhvbiAtYyBjcmVhdGVfbWFuaWZlc3QKK2FkZHRhc2sgZG9fY3JlYXRlX21hbmlmZXN0CisKKyMgTWFrZSBzdXJlIHdlIGhhdmUgbmF0aXZlIHB5dGhvbiByZWFkeSB3aGVuIHdlIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdAorZG9fY3JlYXRlX21hbmlmZXN0W2RlcGVuZHNdICs9ICJweXRob24zOmRvX3ByZXBhcmVfcmVjaXBlX3N5c3Jvb3QiCitkb19jcmVhdGVfbWFuaWZlc3RbZGVwZW5kc10gKz0gInB5dGhvbjM6ZG9fcGF0Y2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob25fMi43LjEzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uXzIuNy4xMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzU0YzAyOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob25fMi43LjEzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTk1ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLmluYwotREVQRU5EUyA9ICJweXRob24tbmF0aXZlIGxpYmZmaSBiemlwMiBnZGJtIG9wZW5zc2wgcmVhZGxpbmUgc3FsaXRlMyB6bGliIgotUFIgPSAiJHtJTkNfUFJ9IgotCi1ESVNUUk9fU1JDX1VSSSA/PSAiZmlsZTovL3NpdGVjdXN0b21pemUucHkiCi1ESVNUUk9fU1JDX1VSSV9saW51eHN0ZGJhc2UgPSAiIgotU1JDX1VSSSArPSAiXAotICBmaWxlOi8vMDEtdXNlLXByb3Blci10b29scy1mb3ItY3Jvc3MtYnVpbGQucGF0Y2ggXAotICBmaWxlOi8vMDMtZml4LXRraW50ZXItZGV0ZWN0aW9uLnBhdGNoIFwKLSAgZmlsZTovLzA2LWF2b2lkX3Vzcl9saWJfdGVybWNhcF9wYXRoX2luX2xpbmtpbmcucGF0Y2ggXAotICAke0RJU1RST19TUkNfVVJJfSBcCi0gIGZpbGU6Ly9tdWx0aWxpYi5wYXRjaCBcCi0gIGZpbGU6Ly9jZ2lfcHkucGF0Y2ggXAotICBmaWxlOi8vc2V0dXBfcHlfc2tpcF9jcm9zc19pbXBvcnRfY2hlY2sucGF0Y2ggXAotICBmaWxlOi8vYWRkLW1kNW1vZHVsZS1zdXBwb3J0LnBhdGNoIFwKLSAgZmlsZTovL2hvc3RfaW5jbHVkZV9jb250YW1pbmF0aW9uLnBhdGNoIFwKLSAgZmlsZTovL2ZpeF9mb3JfdXNpbmdfZGlmZmVyZW50X2xpYmRpci5wYXRjaCBcCi0gIGZpbGU6Ly9zZXR1cHR3ZWFrcy5wYXRjaCBcCi0gIGZpbGU6Ly9jaGVjay1pZi10YXJnZXQtaXMtNjRiLW5vdC1ob3N0LnBhdGNoIFwKLSAgZmlsZTovL3NlYXJjaF9kYl9oX2luX2luY19kaXJzX2FuZF9hdm9pZF93YXJuaW5nLnBhdGNoIFwKLSAgZmlsZTovL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaCBcCi0gIGZpbGU6Ly9hdm9pZF93YXJuaW5nX2Zvcl9zdW5vc19zcGVjaWZpY19tb2R1bGUucGF0Y2ggXAotICBmaWxlOi8vcHl0aG9uLTIuNy4zLXJlbW92ZS1ic2RiLXJwYXRoLnBhdGNoIFwKLSAgZmlsZTovL2ZpeC1tYWtlZmlsZS1mb3ItcHRlc3QucGF0Y2ggXAotICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgZmlsZTovL3BhcmFsbGVsLW1ha2VpbnN0LWNyZWF0ZS1iaW5kaXIucGF0Y2ggXAotICBmaWxlOi8vdXNlX3N5c3Jvb3RfbmN1cnNlc19pbnN0ZWFkX29mX2hvc3QucGF0Y2ggXAotICBmaWxlOi8vYWRkLUNST1NTUFlUSE9OUEFUSC1mb3ItUFlUSE9OX0ZPUl9CVUlMRC5wYXRjaCBcCi0gIGZpbGU6Ly9Eb24tdC11c2UtZ2V0ZW50cm9weS1vbi1MaW51eC5wYXRjaCBcCi0gIGZpbGU6Ly9wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoIFwKLSAgZmlsZTovL3N1cHBvcnRfU09VUkNFX0RBVEVfRVBPQ0hfaW5fcHlfY29tcGlsZV8yLjcucGF0Y2ggXAotIgotCi1TID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBtdWx0aWxpYl9oZWFkZXIgcHl0aG9uLWRpciBweXRob25uYXRpdmUKLQotQ09ORklHVVJFT1BUUyArPSAiIC0td2l0aC1zeXN0ZW0tZmZpICIKLQotRVhUUkFfT0VDT05GICs9ICJhY19jdl9maWxlX19kZXZfcHRteD15ZXMgYWNfY3ZfZmlsZV9fZGV2X3B0Yz1ubyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImJkYiIKLVBBQ0tBR0VDT05GSUdbYmRiXSA9ICIsLGRiIgotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCXJtIC1mICR7U30vTWFrZWZpbGUub3JpZwotICAgICAgICBhdXRvcmVjb25mIC1XY3Jvc3MgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlIC0tZXhjbHVkZT1hdXRvcG9pbnQgLi4vUHl0aG9uLSR7UFZ9L01vZHVsZXMvX2N0eXBlcy9saWJmZmkKLX0KLQotZG9fY29tcGlsZSgpIHsKLSAgICAgICAgIyByZWdlbmVyYXRlIHBsYXRmb3JtIHNwZWNpZmljIGZpbGVzLCBiZWNhdXNlIHRoZXkgZGVwZW5kIG9uIHN5c3RlbSBoZWFkZXJzCi0gICAgICAgIGNkICR7U30vTGliL3BsYXQtbGludXgyCi0gICAgICAgIGluY2x1ZGU9JHtTVEFHSU5HX0lOQ0RJUn0gJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIFwKLSAgICAgICAgICAgICAgICAke1N9L1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9kbGZjbi5oIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9saW51eC9jZHJvbS5oIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9uZXRpbmV0L2luLmggXAotICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L3N5cy90eXBlcy5oCi0gICAgICAgIHNlZCAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyAtaSAqLnB5Ci0gICAgICAgIGNkIC0KLQotCSMgcmVtb3ZlIGFueSBib2d1cyBMRF9MSUJSQVJZX1BBVEgKLQlzZWQgLWkgLWUgcyxSVU5TSEFSRUQ9LiosUlVOU0hBUkVEPSwgTWFrZWZpbGUKLQotCWlmIFsgISAtZiBNYWtlZmlsZS5vcmlnIF07IHRoZW4KLQkJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlIE1ha2VmaWxlLm9yaWcKLQlmaQotCXNlZCAtaSAtZSAncyNeTERGTEFHUz0uKiNMREZMQUdTPSR7TERGTEFHU30gLUwuIC1MJHtTVEFHSU5HX0xJQkRJUn0jZycgXAotCQktZSAncyxsaWJkaXI9JHtsaWJkaXJ9LGxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSxnJyBcCi0JCS1lICdzLGxpYmV4ZWNkaXI9JHtsaWJleGVjZGlyfSxsaWJleGVjZGlyPSR7U1RBR0lOR19ESVJfSE9TVH0ke2xpYmV4ZWNkaXJ9LGcnIFwKLQkJLWUgJ3MsXkxJQkRJUj0uKixMSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0sZycgXAotCQktZSAncyxpbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0saW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCi0JCS1lICdzLF5JTkNMVURFRElSPS4qLElOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQktZSAncyxeQ09ORklOQ0xVREVESVI9LiosQ09ORklOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQlNYWtlZmlsZQotCSMgc2F2ZSBjb3B5IG9mIGl0IG5vdywgYmVjYXVzZSBpZiB3ZSBkbyBpdCBpbiBkb19pbnN0YWxsIGFuZCAKLQkjIHRoZW4gY2FsbCBkb19pbnN0YWxsIHR3aWNlIHdlIGdldCBNYWtlZmlsZS5vcmlnID09IE1ha2VmaWxlLnN5c3Jvb3QKLQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUgTWFrZWZpbGUuc3lzcm9vdAotCi0JZXhwb3J0IENST1NTX0NPTVBJTEU9IiR7VEFSR0VUX1BSRUZJWH0iCi0JZXhwb3J0IFBZVEhPTkJVSUxERElSPSIke0J9IgotCi0Jb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24gXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLQkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCi0JCU9QVD0iJHtDRkxBR1N9IgotfQotCi1kb19pbnN0YWxsKCkgewotCSMgbWFrZSBpbnN0YWxsIG5lZWRzIHRoZSBvcmlnaW5hbCBNYWtlZmlsZSwgb3Igb3RoZXJ3aXNlIHRoZSBpbmNsdWVzIHdvdWxkCi0JIyBnbyB0byAke0R9JHtTVEFHSU5HLi4ufS8uLi4KLQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUub3JpZyBNYWtlZmlsZQotCi0JZXhwb3J0IENST1NTX0NPTVBJTEU9IiR7VEFSR0VUX1BSRUZJWH0iCi0JZXhwb3J0IFBZVEhPTkJVSUxERElSPSIke0J9IgotCi0JIyBBZnRlciBzd2l6emxpbmcgdGhlIG1ha2VmaWxlLCB3ZSBuZWVkIHRvIHJ1biB0aGUgYnVpbGQgYWdhaW4uCi0JIyBpbnN0YWxsIGNhbiByYWNlIHdpdGggdGhlIGJ1aWxkIHNvIHdlIGhhdmUgdG8gcnVuIHRoaXMgZmlyc3QsIHRoZW4gaW5zdGFsbAotCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcGdlbiBcCi0JCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIFwKLQkJQ1JPU1NQWVRIT05QQVRIPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkLyBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0KLQkKLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3BnZW4gXAotCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiBcCi0JCUNST1NTUFlUSE9OUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC8gXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLQkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCi0JCURFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9IGluc3RhbGwKLQotCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5zeXNyb290ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCi0KLQlpZiBbIC1lICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSBdOyB0aGVuCi0JCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfQotCWZpCi0KLQlvZV9tdWx0aWxpYl9oZWFkZXIgcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9weWNvbmZpZy5oCi0KLSAgICBpZiBbIC16ICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAnYmRiJywgZCl9IiBdOyB0aGVuCi0gICAgICAgIHJtIC1yZiAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2JzZGRiCi0gICAgZmkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKLQljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3B5dGhvbjIuNyBQWVRIT05IT01FPScke3ByZWZpeH0nIFRFUk1JTkZPX0RJUlM9JyR7c3lzY29uZmRpcn0vdGVybWluZm86L2V0Yy90ZXJtaW5mbzovdXNyL3NoYXJlL3Rlcm1pbmZvOi91c3Ivc2hhcmUvbWlzYy90ZXJtaW5mbzovbGliL3Rlcm1pbmZvJwotfQotCi1TU1RBVEVfU0NBTl9GSUxFUyArPSAiTWFrZWZpbGUiCi1QQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInB5X3BhY2thZ2VfcHJlcHJvY2VzcyIKLQotcHlfcGFja2FnZV9wcmVwcm9jZXNzICgpIHsKLQkjIGNvcHkgYmFjayB0aGUgb2xkIE1ha2VmaWxlIHRvIGZpeCB0YXJnZXQgcGFja2FnZQotCWluc3RhbGwgLW0gMDY0NCAke0J9L01ha2VmaWxlLm9yaWcgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUKLQotCSMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYnVpbGRtYWNoaW5lIHBhdGhzIGluIHRhcmdldCBNYWtlZmlsZSBhbmQgX3N5c2NvbmZpZ2RhdGEKLQlzZWQgLWkgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgLWUgczonLS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0nOjpnIFwKLQkJJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUgXAotCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5Ci0gICAgcHl0aG9uIC1tIHB5X2NvbXBpbGUgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weQotfQotCi1yZXF1aXJlIHB5dGhvbi0ke1BZVEhPTl9NQUpNSU59LW1hbmlmZXN0LmluYwotCi0jIG1hbnVhbCBkZXBlbmRlbmN5IGFkZGl0aW9ucwotUlBST1ZJREVTXyR7UE59LWNvcmUgPSAiJHtQTn0iCi1SUkVDT01NRU5EU18ke1BOfS1jb3JlID0gIiR7UE59LXJlYWRsaW5lIgotUlJFQ09NTUVORFNfJHtQTn0tY29yZV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBuYXRpdmVzZGstcHl0aG9uLW1vZHVsZXMiCi1SUkVDT01NRU5EU18ke1BOfS1jcnlwdCA9ICJvcGVuc3NsIgotCi0jIHBhY2thZ2UgbGlicHl0aG9uMgotUEFDS0FHRVMgPSsgImxpYiR7QlBOfTIiCi1GSUxFU19saWIke0JQTn0yID0gIiR7bGliZGlyfS9saWJweXRob24qLnNvLioiCi0KLSMgY2F0Y2ggYWxsIHRoZSByZXN0ICh1bnNvcnRlZCkKLVBBQ0tBR0VTICs9ICIke1BOfS1taXNjIgotRklMRVNfJHtQTn0tbWlzYyA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfSIKLVJERVBFTkRTXyR7UE59LW1vZHVsZXMgKz0gIiR7UE59LW1pc2MiCi0KLSMgcHRlc3QKLVJERVBFTkRTXyR7UE59LXB0ZXN0ID0gIiR7UE59LW1vZHVsZXMgJHtQTn0tdGVzdHMiCi0jaW5oZXJpdCBwdGVzdCBhZnRlciAicmVxdWlyZSBweXRob24tJHtQWVRIT05fTUFKTUlOfS1tYW5pZmVzdC5pbmMiIHNvIFBBQ0tBR0VTIGRvZXNuJ3QgZ2V0IG92ZXJ3cml0dGVuCi1pbmhlcml0IHB0ZXN0Ci0KLSMgVGhpcyBtdXN0IGNvbWUgYWZ0ZXIgaW5oZXJpdCBwdGVzdCBmb3IgdGhlIG92ZXJyaWRlIHRvIHRha2UgZWZmZWN0Ci1kb19pbnN0YWxsX3B0ZXN0KCkgewotCWNwICR7Qn0vTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0KLQlzZWQgLWUgczpMSUJESVIvcHl0aG9uL3B0ZXN0OiR7UFRFU1RfUEFUSH06ZyBcCi0JIC1lIHM6TElCRElSOiR7bGliZGlyfTpnIFwKLQkgLWkgJHtEfSR7UFRFU1RfUEFUSH0vcnVuLXB0ZXN0Ci0KLQkjUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcwotCXNlZCAtaSBcCi0JCS1lICdzOi0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9Jzo6ZyBcCi0JICAgIC1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIFwKLQkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAotCSAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAotCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAotCSAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKLQkke0R9LyR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKLX0KLQotIyBjYXRjaCBtYW5wYWdlCi1QQUNLQUdFUyArPSAiJHtQTn0tbWFuIgotRklMRVNfJHtQTn0tbWFuID0gIiR7ZGF0YWRpcn0vbWFuIgotCi0jIE5hc3R5IGJ1dCBpZiBiZGIgaXNuJ3QgZW5hYmxlZCB0aGUgcGFja2FnZSB3b24ndCBiZSBnZW5lcmF0ZWQKLVJERVBFTkRTXyR7UE59LW1vZHVsZXNfcmVtb3ZlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JkYicsICcnLCAnJHtQTn0tYnNkZGInLCBkKX0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uXzIuNy4xNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbl8yLjcuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGEwOTkyNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbl8yLjcuMTQuYmIKQEAgLTAsMCArMSwyODEgQEAKK3JlcXVpcmUgcHl0aG9uLmluYworCitERVBFTkRTID0gInB5dGhvbi1uYXRpdmUgbGliZmZpIGJ6aXAyIGdkYm0gb3BlbnNzbCByZWFkbGluZSBzcWxpdGUzIHpsaWIiCisKK1BSID0gIiR7SU5DX1BSfSIKKworRElTVFJPX1NSQ19VUkkgPz0gImZpbGU6Ly9zaXRlY3VzdG9taXplLnB5IgorRElTVFJPX1NSQ19VUklfbGludXhzdGRiYXNlID0gIiIKK1NSQ19VUkkgKz0gIlwKKyAgZmlsZTovLzAxLXVzZS1wcm9wZXItdG9vbHMtZm9yLWNyb3NzLWJ1aWxkLnBhdGNoIFwKKyAgZmlsZTovLzAzLWZpeC10a2ludGVyLWRldGVjdGlvbi5wYXRjaCBcCisgIGZpbGU6Ly8wNi1hdm9pZF91c3JfbGliX3Rlcm1jYXBfcGF0aF9pbl9saW5raW5nLnBhdGNoIFwKKyAgJHtESVNUUk9fU1JDX1VSSX0gXAorICBmaWxlOi8vbXVsdGlsaWIucGF0Y2ggXAorICBmaWxlOi8vY2dpX3B5LnBhdGNoIFwKKyAgZmlsZTovL3NldHVwX3B5X3NraXBfY3Jvc3NfaW1wb3J0X2NoZWNrLnBhdGNoIFwKKyAgZmlsZTovL2FkZC1tZDVtb2R1bGUtc3VwcG9ydC5wYXRjaCBcCisgIGZpbGU6Ly9ob3N0X2luY2x1ZGVfY29udGFtaW5hdGlvbi5wYXRjaCBcCisgIGZpbGU6Ly9maXhfZm9yX3VzaW5nX2RpZmZlcmVudF9saWJkaXIucGF0Y2ggXAorICBmaWxlOi8vc2V0dXB0d2Vha3MucGF0Y2ggXAorICBmaWxlOi8vY2hlY2staWYtdGFyZ2V0LWlzLTY0Yi1ub3QtaG9zdC5wYXRjaCBcCisgIGZpbGU6Ly9zZWFyY2hfZGJfaF9pbl9pbmNfZGlyc19hbmRfYXZvaWRfd2FybmluZy5wYXRjaCBcCisgIGZpbGU6Ly9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2ggXAorICBmaWxlOi8vYXZvaWRfd2FybmluZ19mb3Jfc3Vub3Nfc3BlY2lmaWNfbW9kdWxlLnBhdGNoIFwKKyAgZmlsZTovL3B5dGhvbi0yLjcuMy1yZW1vdmUtYnNkYi1ycGF0aC5wYXRjaCBcCisgIGZpbGU6Ly9maXgtbWFrZWZpbGUtZm9yLXB0ZXN0LnBhdGNoIFwKKyAgZmlsZTovL3J1bi1wdGVzdCBcCisgIGZpbGU6Ly9wYXJhbGxlbC1tYWtlaW5zdC1jcmVhdGUtYmluZGlyLnBhdGNoIFwKKyAgZmlsZTovL3VzZV9zeXNyb290X25jdXJzZXNfaW5zdGVhZF9vZl9ob3N0LnBhdGNoIFwKKyAgZmlsZTovL2FkZC1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2ggXAorICBmaWxlOi8vcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaCBcCisgIGZpbGU6Ly9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGVfMi43LnBhdGNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9L1B5dGhvbi0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgbXVsdGlsaWJfaGVhZGVyIHB5dGhvbi1kaXIgcHl0aG9ubmF0aXZlCisKK0NPTkZJR1VSRU9QVFMgKz0gIiAtLXdpdGgtc3lzdGVtLWZmaSAiCisKK0VYVFJBX09FQ09ORiArPSAiYWNfY3ZfZmlsZV9fZGV2X3B0bXg9eWVzIGFjX2N2X2ZpbGVfX2Rldl9wdGM9bm8iCisKK1BBQ0tBR0VDT05GSUcgPz89ICJiZGIiCitQQUNLQUdFQ09ORklHW2JkYl0gPSAiLCxkYiIKKworZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKwlybSAtZiAke1N9L01ha2VmaWxlLm9yaWcKKyAgICAgICAgYXV0b3JlY29uZiAtV2Nyb3NzIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAtLWV4Y2x1ZGU9YXV0b3BvaW50IC4uL1B5dGhvbi0ke1BWfS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpCit9CisKK2RvX2NvbXBpbGUoKSB7CisgICAgICAgICMgcmVnZW5lcmF0ZSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWxlcywgYmVjYXVzZSB0aGV5IGRlcGVuZCBvbiBzeXN0ZW0gaGVhZGVycworICAgICAgICBjZCAke1N9L0xpYi9wbGF0LWxpbnV4MgorICAgICAgICBpbmNsdWRlPSR7U1RBR0lOR19JTkNESVJ9ICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiBcCisgICAgICAgICAgICAgICAgJHtTfS9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyBcCisgICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vZGxmY24uaCBcCisgICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbGludXgvY2Ryb20uaCBcCisgICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbmV0aW5ldC9pbi5oIFwKKyAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9zeXMvdHlwZXMuaAorICAgICAgICBzZWQgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgLWkgKi5weQorICAgICAgICBjZCAtCisKKwkjIHJlbW92ZSBhbnkgYm9ndXMgTERfTElCUkFSWV9QQVRICisJc2VkIC1pIC1lIHMsUlVOU0hBUkVEPS4qLFJVTlNIQVJFRD0sIE1ha2VmaWxlCisKKwlpZiBbICEgLWYgTWFrZWZpbGUub3JpZyBdOyB0aGVuCisJCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZSBNYWtlZmlsZS5vcmlnCisJZmkKKwlzZWQgLWkgLWUgJ3MjXkxERkxBR1M9LiojTERGTEFHUz0ke0xERkxBR1N9IC1MLiAtTCR7U1RBR0lOR19MSUJESVJ9I2cnIFwKKwkJLWUgJ3MsbGliZGlyPSR7bGliZGlyfSxsaWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0sZycgXAorCQktZSAncyxsaWJleGVjZGlyPSR7bGliZXhlY2Rpcn0sbGliZXhlY2Rpcj0ke1NUQUdJTkdfRElSX0hPU1R9JHtsaWJleGVjZGlyfSxnJyBcCisJCS1lICdzLF5MSUJESVI9LiosTElCRElSPSR7U1RBR0lOR19MSUJESVJ9LGcnIFwKKwkJLWUgJ3MsaW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9LGluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAorCQktZSAncyxeSU5DTFVERURJUj0uKixJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKKwkJLWUgJ3MsXkNPTkZJTkNMVURFRElSPS4qLENPTkZJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKKwkJTWFrZWZpbGUKKwkjIHNhdmUgY29weSBvZiBpdCBub3csIGJlY2F1c2UgaWYgd2UgZG8gaXQgaW4gZG9faW5zdGFsbCBhbmQgCisJIyB0aGVuIGNhbGwgZG9faW5zdGFsbCB0d2ljZSB3ZSBnZXQgTWFrZWZpbGUub3JpZyA9PSBNYWtlZmlsZS5zeXNyb290CisJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlIE1ha2VmaWxlLnN5c3Jvb3QKKworCWV4cG9ydCBDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IgorCWV4cG9ydCBQWVRIT05CVUlMRERJUj0iJHtCfSIKKworCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcGdlbiBcCisJCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIFwKKwkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCisJCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAorCQlPUFQ9IiR7Q0ZMQUdTfSIKK30KKworZG9faW5zdGFsbCgpIHsKKwkjIG1ha2UgaW5zdGFsbCBuZWVkcyB0aGUgb3JpZ2luYWwgTWFrZWZpbGUsIG9yIG90aGVyd2lzZSB0aGUgaW5jbHVlcyB3b3VsZAorCSMgZ28gdG8gJHtEfSR7U1RBR0lORy4uLn0vLi4uCisJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLm9yaWcgTWFrZWZpbGUKKworCWV4cG9ydCBDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IgorCWV4cG9ydCBQWVRIT05CVUlMRERJUj0iJHtCfSIKKworCSMgQWZ0ZXIgc3dpenpsaW5nIHRoZSBtYWtlZmlsZSwgd2UgbmVlZCB0byBydW4gdGhlIGJ1aWxkIGFnYWluLgorCSMgaW5zdGFsbCBjYW4gcmFjZSB3aXRoIHRoZSBidWlsZCBzbyB3ZSBoYXZlIHRvIHJ1biB0aGlzIGZpcnN0LCB0aGVuIGluc3RhbGwKKwlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3BnZW4gXAorCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiBcCisJCUNST1NTUFlUSE9OUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC8gXAorCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCisJCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKKwkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCisJCURFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9CisJCisJb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9wZ2VuIFwKKwkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24gXAorCQlDUk9TU1BZVEhPTlBBVEg9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvIFwKKwkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCisJCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAorCQlERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfSBpbnN0YWxsCisKKwlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUuc3lzcm9vdCAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZQorCisJaWYgWyAtZSAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0KKwlmaQorCisJb2VfbXVsdGlsaWJfaGVhZGVyIHB5dGhvbiR7UFlUSE9OX01BSk1JTn0vcHljb25maWcuaAorCisgICAgaWYgWyAteiAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ2JkYicsIGQpfSIgXTsgdGhlbgorICAgICAgICBybSAtcmYgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9ic2RkYgorICAgIGZpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayAoKSB7CisJY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9weXRob24yLjcgUFlUSE9OSE9NRT0nJHtwcmVmaXh9JyBURVJNSU5GT19ESVJTPScke3N5c2NvbmZkaXJ9L3Rlcm1pbmZvOi9ldGMvdGVybWluZm86L3Vzci9zaGFyZS90ZXJtaW5mbzovdXNyL3NoYXJlL21pc2MvdGVybWluZm86L2xpYi90ZXJtaW5mbycKK30KKworU1NUQVRFX1NDQU5fRklMRVMgKz0gIk1ha2VmaWxlIgorUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJweV9wYWNrYWdlX3ByZXByb2Nlc3MiCisKK3B5X3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7CisJIyBjb3B5IGJhY2sgdGhlIG9sZCBNYWtlZmlsZSB0byBmaXggdGFyZ2V0IHBhY2thZ2UKKwlpbnN0YWxsIC1tIDA2NDQgJHtCfS9NYWtlZmlsZS5vcmlnICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCisKKwkjIFJlbW92ZSByZWZlcmVuY2VzIHRvIGJ1aWxkbWFjaGluZSBwYXRocyBpbiB0YXJnZXQgTWFrZWZpbGUgYW5kIF9zeXNjb25maWdkYXRhCisJc2VkIC1pIC1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIC1lIHM6Jy0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9Jzo6ZyBcCisJCS1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkJLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkJLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJCS1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCisJCS1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAorCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZSBcCisJCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHkKKwkoY2QgJHtQS0dEfTsgcHl0aG9uIC1tIHB5X2NvbXBpbGUgLi8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weSkKK30KKworCisjIG1hbnVhbCBkZXBlbmRlbmN5IGFkZGl0aW9ucworUlBST1ZJREVTXyR7UE59LWNvcmUgPSAiJHtQTn0iCitSUkVDT01NRU5EU18ke1BOfS1jb3JlX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIG5hdGl2ZXNkay1weXRob24tbW9kdWxlcyIKK1JSRUNPTU1FTkRTXyR7UE59LWNyeXB0ID0gIm9wZW5zc2wiCisKKyMgcGFja2FnZSBsaWJweXRob24yCitQQUNLQUdFUyA9KyAibGliJHtCUE59MiIKK0ZJTEVTX2xpYiR7QlBOfTIgPSAiJHtsaWJkaXJ9L2xpYnB5dGhvbiouc28uKiIKKworIyBjYXRjaCBhbGwgdGhlIHJlc3QgKHVuc29ydGVkKQorUEFDS0FHRVMgKz0gIiR7UE59LW1pc2MiCitGSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IgorUkRFUEVORFNfJHtQTn0tbW9kdWxlcyArPSAiJHtQTn0tbWlzYyIKKworIyBwdGVzdAorUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiJHtQTn0tbW9kdWxlcyAke1BOfS10ZXN0cyIKKyNpbmhlcml0IHB0ZXN0IGFmdGVyICJyZXF1aXJlIHB5dGhvbi0ke1BZVEhPTl9NQUpNSU59LW1hbmlmZXN0LmluYyIgc28gUEFDS0FHRVMgZG9lc24ndCBnZXQgb3ZlcndyaXR0ZW4KK2luaGVyaXQgcHRlc3QKKworIyBUaGlzIG11c3QgY29tZSBhZnRlciBpbmhlcml0IHB0ZXN0IGZvciB0aGUgb3ZlcnJpZGUgdG8gdGFrZSBlZmZlY3QKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJY3AgJHtCfS9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfQorCXNlZCAtZSBzOkxJQkRJUi9weXRob24vcHRlc3Q6JHtQVEVTVF9QQVRIfTpnIFwKKwkgLWUgczpMSUJESVI6JHtsaWJkaXJ9OmcgXAorCSAtaSAke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QKKworCSNSZW1vdmUgYnVpbGQgaG9zdCByZWZlcmVuY2VzCisJc2VkIC1pIFwKKwkJLWUgJ3M6LS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0nOjpnIFwKKwkgICAgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgXAorCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCisJICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAorCSR7RH0vJHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorfQorCisjIGNhdGNoIG1hbnBhZ2UKK1BBQ0tBR0VTICs9ICIke1BOfS1tYW4iCitGSUxFU18ke1BOfS1tYW4gPSAiJHtkYXRhZGlyfS9tYW4iCisKKyMgTmFzdHkgYnV0IGlmIGJkYiBpc24ndCBlbmFibGVkIHRoZSBwYWNrYWdlIHdvbid0IGJlIGdlbmVyYXRlZAorUkRFUEVORFNfJHtQTn0tbW9kdWxlc19yZW1vdmUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYmRiJywgJycsICcke1BOfS1ic2RkYicsIGQpfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCisKK1JQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tbW9kdWxlcyIKKworIyBXZSB3YW50IGJ5dGVjb2RlIHByZWNvbXBpbGVkIC5weSBmaWxlcyAoLnB5YydzKSBieSBkZWZhdWx0CisjIGJ1dCB0aGUgdXNlciBtYXkgc2V0IGl0IG9uIHRoZWlyIG93biBjb25mCisKK0lOQ0xVREVfUFlDUyA/PSAiMSIKKworcHl0aG9uKCl7CisgICAgaW1wb3J0IGpzb24KKworICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdUSElTRElSJyksICdweXRob24nLCAncHl0aG9uMi1tYW5pZmVzdC5qc29uJykKKyAgICAjIFRoaXMgcHl0aG9uIGNoYW5nZXMgdGhlIGRhdGFzdG9yZSBiYXNlZCBvbiB0aGUgY29udGVudHMgb2YgYSBmaWxlLCBzbyBtYXJrCisgICAgIyB0aGF0IGRlcGVuZGVuY3kuCisgICAgYmIucGFyc2UubWFya19kZXBlbmRlbmN5KGQsIGZpbGVuYW1lKQorCisgICAgd2l0aCBvcGVuKGZpbGVuYW1lKSBhcyBtYW5pZmVzdF9maWxlOgorICAgICAgICBweXRob25fbWFuaWZlc3Q9anNvbi5sb2FkKG1hbmlmZXN0X2ZpbGUpCisKKyAgICBpbmNsdWRlX3B5Y3MgPSBkLmdldFZhcignSU5DTFVERV9QWUNTJykKKworICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJykuc3BsaXQoKQorICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKKworICAgIG5ld3BhY2thZ2VzPVtdCisKKyAgICBmb3Iga2V5IGluIHB5dGhvbl9tYW5pZmVzdDoKKyAgICAgICAgcHlwYWNrYWdlPSBwbiArICctJyArIGtleQorCisgICAgICAgIGlmIHB5cGFja2FnZSBub3QgaW4gcGFja2FnZXM6CisgICAgICAgICAgICAjIFdlIG5lZWQgdG8gcHJlcGVuZCwgb3RoZXJ3aXNlIHB5dGhvbi1taXNjIGdldHMgZXZlcnl0aGluZworICAgICAgICAgICAgIyBzbyB3ZSB1c2UgYSBuZXcgdmFyaWFibGUKKyAgICAgICAgICAgIG5ld3BhY2thZ2VzLmFwcGVuZChweXBhY2thZ2UpCisKKyAgICAgICAgIyAiQnVpbGQiIHB5dGhvbidzIG1hbmlmZXN0IEZJTEVTLCBSREVQRU5EUyBhbmQgU1VNTUFSWQorICAgICAgICBkLnNldFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJycpCisgICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdGSUxFU18nICsgcHlwYWNrYWdlLCAnICcgKyB2YWx1ZSkKKyAgICAgICAgICAgIGlmIGluY2x1ZGVfcHljcyA9PSAnMSc6CisgICAgICAgICAgICAgICAgaWYgdmFsdWUuZW5kc3dpdGgoJy5weScpOgorICAgICAgICAgICAgICAgICAgICBkLmFwcGVuZFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJyAnICsgdmFsdWUgKyAnYycpCisKKyAgICAgICAgZC5zZXRWYXIoJ1JERVBFTkRTXycgKyBweXBhY2thZ2UsICcnKQorICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ106CisgICAgICAgICAgICAjIE1ha2UgaXQgd29yayB3aXRoIG9yIHdpdGhvdXQgJFBOCisgICAgICAgICAgICBpZiAnJHtQTn0nIGluIHZhbHVlOgorICAgICAgICAgICAgICAgIHZhbHVlPXZhbHVlLnNwbGl0KCctJylbMV0KKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcHlwYWNrYWdlLCAnICcgKyBwbiArICctJyArIHZhbHVlKQorICAgICAgICBkLnNldFZhcignU1VNTUFSWV8nICsgcHlwYWNrYWdlLCBweXRob25fbWFuaWZlc3Rba2V5XVsnc3VtbWFyeSddKQorCisgICAgIyBXZSBuZWVkIHRvIGVuc3VyZSBzdGF0aWNkZXYgcGFja2FnZXMgbWF0Y2ggZm9yIGZpbGVzIGZpcnN0IHNvIHdlIHNvcnQgaW4gcmV2ZXJzZQorICAgIG5ld3BhY2thZ2VzLnNvcnQocmV2ZXJzZT1UcnVlKQorICAgICMgUHJlcGVuZGluZyBzbyB0byBhdm9pZCBweXRob24tbWlzYyBnZXR0aW5nIGV2ZXJ5dGhpbmcKKyAgICBwYWNrYWdlcyA9IG5ld3BhY2thZ2VzICsgcGFja2FnZXMKKyAgICBkLnNldFZhcignUEFDS0FHRVMnLCAnICcuam9pbihwYWNrYWdlcykpCisgICAgZC5zZXRWYXIoJ0FMTE9XX0VNUFRZXyR7UE59LW1vZHVsZXMnLCAnMScpCit9CisKKyMgRmlsZXMgbmVlZGVkIHRvIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdAorU1JDX1VSSSArPSAiZmlsZTovL2NyZWF0ZV9tYW5pZmVzdDIucHkgZmlsZTovL2dldF9tb2R1bGVfZGVwczIucHkgZmlsZTovL3B5dGhvbjItbWFuaWZlc3QuanNvbiIKKworZG9fY3JlYXRlX21hbmlmZXN0KCkgeworICAgICMgVGhpcyB0YXNrIHNob3VsZCBiZSBydW4gd2l0aCBldmVyeSBuZXcgcmVsZWFzZSBvZiBQeXRob24uCisgICAgIyBXZSBtdXN0IGVuc3VyZSB0aGF0IFBBQ0tBR0VDT05GSUcgZW5hYmxlcyBldmVyeXRoaW5nIHdoZW4gY3JlYXRpbmcKKyAgICAjIGEgbmV3IG1hbmlmZXN0LCB0aGlzIGlzIHRvIGJhc2Ugb3VyIG5ldyBtYW5pZmVzdCBvbiBhIGNvbXBsZXRlCisgICAgIyBuYXRpdmUgcHl0aG9uIGJ1aWxkLCBjb250YWluaW5nIGFsbCBkZXBlbmRlbmNpZXMsIG90aGVyd2lzZSB0aGUgdGFzaworICAgICMgd29udCBiZSBhYmxlIHRvIGZpbmQgdGhlIHJlcXVpcmVkIGZpbGVzLgorICAgICMgZS5nLiBCZXJrZWxleURCIGlzIGFuIG9wdGlvbmFsIGJ1aWxkIGRlcGVuZGVuY3kgc28gaXQgbWF5IG9yIG1heSBub3QKKyAgICAjIGJlIHByZXNlbnQsIHdlIG11c3QgZW5zdXJlIGl0IGlzLgorCisgICAgY2QgJHtXT1JLRElSfQorICAgICMgVGhpcyBuZWVkcyB0byBiZSBleGVjdXRlZCBieSBweXRob24tbmF0aXZlIGFuZCBOT1QgYnkgSE9TVCdzIHB5dGhvbgorICAgIG5hdGl2ZXB5dGhvbiBjcmVhdGVfbWFuaWZlc3QyLnB5CisgICAgY3AgcHl0aG9uMi1tYW5pZmVzdC5qc29uLm5ldyAke1RISVNESVJ9L3B5dGhvbi9weXRob24yLW1hbmlmZXN0Lmpzb24KK30KKworIyBiaXRiYWtlIHB5dGhvbiAtYyBjcmVhdGVfbWFuaWZlc3QKK2FkZHRhc2sgZG9fY3JlYXRlX21hbmlmZXN0CisKKyMgTWFrZSBzdXJlIHdlIGhhdmUgbmF0aXZlIHB5dGhvbiByZWFkeSB3aGVuIHdlIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdAorZG9fY3JlYXRlX21hbmlmZXN0W2RlcGVuZHNdICs9ICJweXRob246ZG9fcHJlcGFyZV9yZWNpcGVfc3lzcm9vdCIKK2RvX2NyZWF0ZV9tYW5pZmVzdFtkZXBlbmRzXSArPSAicHl0aG9uOmRvX3BhdGNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L25hdGl2ZXNkay1xZW11LWhlbHBlcl8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvbmF0aXZlc2RrLXFlbXUtaGVscGVyXzEuMC5iYgppbmRleCA5NDNjYTVmLi5jZGMyZjUxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvbmF0aXZlc2RrLXFlbXUtaGVscGVyXzEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvbmF0aXZlc2RrLXFlbXUtaGVscGVyXzEuMC5iYgpAQCAtMSw3ICsxLDcgQEAKIFNVTU1BUlkgPSAiUWVtdSBoZWxwZXIgc2NyaXB0cyIKIExJQ0VOU0UgPSAiR1BMdjIiCi1SREVQRU5EU18ke1BOfSA9ICJuYXRpdmVzZGstcWVtdSBuYXRpdmVzZGstcHl0aG9uMy1zdWJwcm9jZXNzIFwKLSAgICAgICAgICAgICAgICAgIG5hdGl2ZXNkay1weXRob24zLXNoZWxsIG5hdGl2ZXNkay1weXRob24zLWZjbnRsIFwKK1JERVBFTkRTXyR7UE59ID0gIm5hdGl2ZXNkay1xZW11IFwKKyAgICAgICAgICAgICAgICAgIG5hdGl2ZXNkay1weXRob24zLXNoZWxsIG5hdGl2ZXNkay1weXRob24zLWZjbnRsIG5hdGl2ZXNkay1weXRob24zLWxvZ2dpbmcgXAogICAgICAgICAgICAgICAgICIKIAogUFIgPSAicjkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMKaW5kZXggMmExZDE0Yi4uZGM3M2RmOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LmluYwpAQCAtMjgsNyArMjgsNyBAQAogICAgIC0tdGFyZ2V0LWxpc3Q9JHtAZ2V0X3FlbXVfdGFyZ2V0X2xpc3QoZCl9IFwKICAgICAtLWV4dHJhLWNmbGFncz0nJHtDRkxBR1N9JyBcCiAgICAgIgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tcHl0aG9uPSR7VVNSQklOUEFUSH0vcHl0aG9uMi43IgorRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tcHl0aG9uPXB5dGhvbjIuNyIKIAogRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIExEPScke0xEfScgQVI9JyR7QVJ9JyBPQkpDT1BZPScke09CSkNPUFl9JyBMREZMQUdTPScke0xERkxBR1N9JyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1Qcm92aWRlLXN1cHBvcnQtZm9yLXRoZS1DVVNFLVRQTS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtUHJvdmlkZS1zdXBwb3J0LWZvci10aGUtQ1VTRS1UUE0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0ZGM2ZjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1Qcm92aWRlLXN1cHBvcnQtZm9yLXRoZS1DVVNFLVRQTS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg3MCArMCwwIEBACi1Gcm9tIDg3MzdlZWYxOGYzOWVkMDg3ZmQ5MTFkMGEwODg2ZTgxNzRkMDQ2OGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTdGVmYW4gQmVyZ2VyIDxzdGVmYW5iQGxpbnV4LnZuZXQuaWJtLmNvbT4KLURhdGU6IFNhdCwgMzEgRGVjIDIwMTYgMTE6MjM6MzIgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzRdIFByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIENVU0UgVFBNCi0KLVJhdGhlciB0aGFuIGludGVncmF0aW5nIFRQTSBmdW5jdGlvbmFsaXR5IGludG8gUUVNVSBkaXJlY3RseQotdXNpbmcgdGhlIFRQTSBlbXVsYXRpb24gb2YgbGlidHBtcywgd2Ugbm93IGludGVncmF0ZSBhbiBleHRlcm5hbAotZW11bGF0ZWQgVFBNIGRldmljZS4gVGhpcyBkZXZpY2UgaXMgZXhwZWN0ZWQgdG8gaW1wbGVtZW50IGEgTGludXgKLUNVU0UgaW50ZXJmYWNlIChDVVNFID0gY2hhcmFjdGVyIGRldmljZSBpbiB1c2Vyc3BhY2UpLgotCi1RRU1VIHRhbGtzIHRvIHRoZSBDVVNFIFRQTSB1c2luZyBtdWNoIGZ1bmN0aW9uYWxpdHkgb2YgdGhlCi1wYXNzdGhyb3VnaCBkcml2ZXIuIEZvciBleGFtcGxlLCB0aGUgVFBNIGNvbW1hbmRzIGFuZCByZXNwb25zZXMKLWFyZSBzZW50IHRvIHRoZSBDVVNFIFRQTSB1c2luZyB0aGUgcmVhZCgpL3dyaXRlKCkgaW50ZXJmYWNlLgotSG93ZXZlciwgc29tZSBvdXQtb2YtYmFuZCBjb250cm9sIG5lZWRzIHRvIGJlIGRvbmUgdXNpbmcgdGhlIENVU0UKLVRQTSdzIGlvY3Rscy4gVGhlIENVU0UgVFBNIGN1cnJlbnRseSBkZWZpbmVzIGFuZCBpbXBsZW1lbnRzIDE1Ci1kaWZmZXJlbnQgaW9jdGxzIGZvciBjb250cm9sbGluZyBjZXJ0YWluIGxpZmUtY3ljbGUgYXNwZWN0cyBvZgotdGhlIGVtdWxhdGVkIFRQTS4gVGhlIGlvY3RscyBjYW4gYmUgcmVnYXJkZWQgYXMgYSByZXBsYWNlbWVudCBmb3IKLWRpcmVjdCBmdW5jdGlvbiBjYWxscyB0byBhIFRQTSBlbXVsYXRvciBpZiB0aGUgVFBNIHdlcmUgdG8gYmUKLWRpcmVjdGx5IGludGVncmF0ZWQgaW50byBRRU1VLgotCi1PbmUgb2YgdGhlIGlvY3RscyBhbGxvd3MgdG8gZ2V0IGEgYml0bWFzayBvZiBzdXBwb3J0ZWQgY2FwYWJpbGl0aWVzLgotRWFjaCByZXR1cm5lZCBiaXQgaW5kaWNhdGVzIHdoaWNoIGNhcGFiaWxpdGllcyBoYXZlIGJlZW4gaW1wbGVtZW50ZWQuCi1BbiBpbmNsdWRlIGZpbGUgZGVmaW5pbmcgdGhlIHZhcmlvdXMgaW9jdGxzIGlzIGFkZGVkIHRvIFFFTVUuCi0KLVRoZSBDVVNFIFRQTSBhbmQgYXNzb2NpYXRlZCB0b29scyBjYW4gYmUgZm91bmQgaGVyZToKLQotaHR0cHM6Ly9naXRodWIuY29tL3N0ZWZhbmJlcmdlci9zd3RwbQotCi0ocGxlYXNlIHVzZSB0aGUgbGF0ZXN0IHZlcnNpb24pCi0KLVRvIHVzZSB0aGUgZXh0ZXJuYWwgQ1VTRSBUUE0sIHRoZSBDVVNFIFRQTSBzaG91bGQgYmUgc3RhcnRlZCBhcyBmb2xsb3dzOgotCi0vdXNyL2Jpbi9zd3RwbV9pb2N0bCAtcyAvZGV2L3Z0cG0tdGVzdAotCi0vdXNyL2Jpbi9zd3RwbV9jdXNlIC1uIHZ0cG0tdGVzdAotCi1RRU1VIGNhbiB0aGVuIGJlIHN0YXJ0ZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOgotCi1xZW11LXN5c3RlbS14ODZfNjQgXAotCVsuLi5dIFwKLSAgICAgICAgLXRwbWRldiBjdXNlLXRwbSxpZD10cG0wLGNhbmNlbC1wYXRoPS9kZXYvbnVsbCxwYXRoPS9kZXYvdnRwbS10ZXN0IFwKLSAgICAgICAgLWRldmljZSB0cG0tdGlzLGlkPXRwbTAsdHBtZGV2PXRwbTAgXAotCVsuLi5dCi0KLVNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBCZXJnZXIgPHN0ZWZhbmJAbGludXgudm5ldC5pYm0uY29tPgotQ2M6IEVyaWMgQmxha2UgPGVibGFrZUByZWRoYXQuY29tPgotCi1Db25mbGljdHM6Ci0JZG9jcy9xbXAtY29tbWFuZHMudHh0Ci0KLVBhdGNoIGNoZXJyeS1waWNrZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vc3RlZmFuYmVyZ2VyL3FlbXUtdHBtLCBicmFuY2ggdjIuOC4wK3RwbSwKLWNvbW1pdCAyN2Q2Y2Q4NTZkNWExNDA2MTk1NWRmN2E5M2VlNDkwNjk3YTdhMTc0LiBBcHBsaWVkIGNsZWFubHkgZXhjZXB0IGZvcgotZG9jcy9xbXAtY29tbWFuZHMudHh0IHdoaWNoIGRpZCBub3QgZXhpc3QgeWV0IGluIHFlbXUgMi43LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2h0dHBzOi8vbGlzdHMubm9uZ251Lm9yZy9hcmNoaXZlL2h0bWwvcWVtdS1kZXZlbC8yMDE2LTA2L21zZzAwMjUyLmh0bWxdCi1TaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+Ci0tLS0KLSBobXAuYyAgICAgICAgICAgICAgICAgICAgfCAgIDYgKysKLSBody90cG0vdHBtX2ludC5oICAgICAgICAgfCAgIDEgKwotIGh3L3RwbS90cG1faW9jdGwuaCAgICAgICB8IDIxNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jIHwgMjc0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCi0gcWFwaS1zY2hlbWEuanNvbiAgICAgICAgIHwgIDE4ICsrKy0KLSBxZW11LW9wdGlvbnMuaHggICAgICAgICAgfCAgMjEgKysrLQotIHRwbS5jICAgICAgICAgICAgICAgICAgICB8ICAxMSArLQotIDcgZmlsZXMgY2hhbmdlZCwgNTI5IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBody90cG0vdHBtX2lvY3RsLmgKLQotZGlmZiAtLWdpdCBhL2htcC5jIGIvaG1wLmMKLWluZGV4IGNjMjA1NmU5ZTIuLjI3N2I0NWVmNWEgMTAwNjQ0Ci0tLS0gYS9obXAuYwotKysrIGIvaG1wLmMKLUBAIC04ODMsNiArODgzLDEyIEBAIHZvaWQgaG1wX2luZm9fdHBtKE1vbml0b3IgKm1vbiwgY29uc3QgUURpY3QgKnFkaWN0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwby0+aGFzX2NhbmNlbF9wYXRoID8gIixjYW5jZWwtcGF0aD0iIDogIiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBvLT5oYXNfY2FuY2VsX3BhdGggPyB0cG8tPmNhbmNlbF9wYXRoIDogIiIpOwotICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBUUE1fVFlQRV9PUFRJT05TX0tJTkRfQ1VTRV9UUE06Ci0rICAgICAgICAgICAgdHBvID0gdGktPm9wdGlvbnMtPnUucGFzc3Rocm91Z2guZGF0YTsKLSsgICAgICAgICAgICBtb25pdG9yX3ByaW50Zihtb24sICIlcyVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG8tPmhhc19wYXRoID8gIixwYXRoPSIgOiAiIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG8tPmhhc19wYXRoID8gdHBvLT5wYXRoIDogIiIpOwotKyAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgY2FzZSBUUE1fVFlQRV9PUFRJT05TX0tJTkRfX01BWDoKLSAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLWRpZmYgLS1naXQgYS9ody90cG0vdHBtX2ludC5oIGIvaHcvdHBtL3RwbV9pbnQuaAotaW5kZXggZjJmMjg1YjNjYy4uNmIyYzljOTUzYSAxMDA2NDQKLS0tLSBhL2h3L3RwbS90cG1faW50LmgKLSsrKyBiL2h3L3RwbS90cG1faW50LmgKLUBAIC02MSw2ICs2MSw3IEBAIHN0cnVjdCB0cG1fcmVzcF9oZHIgewotICNkZWZpbmUgVFBNX1RBR19SU1BfQVVUSDFfQ09NTUFORCAweGM1Ci0gI2RlZmluZSBUUE1fVEFHX1JTUF9BVVRIMl9DT01NQU5EIDB4YzYKLSAKLSsjZGVmaW5lIFRQTV9TVUNDRVNTICAgICAgICAgICAgICAgMAotICNkZWZpbmUgVFBNX0ZBSUwgICAgICAgICAgICAgICAgICA5Ci0gCi0gI2RlZmluZSBUUE1fT1JEX0NvbnRpbnVlU2VsZlRlc3QgIDB4NTMKLWRpZmYgLS1naXQgYS9ody90cG0vdHBtX2lvY3RsLmggYi9ody90cG0vdHBtX2lvY3RsLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi5hMzQxZTE1NzQxCi0tLS0gL2Rldi9udWxsCi0rKysgYi9ody90cG0vdHBtX2lvY3RsLmgKLUBAIC0wLDAgKzEsMjE1IEBACi0rLyoKLSsgKiB0cG1faW9jdGwuaAotKyAqCi0rICogKGMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAxNCwgMjAxNS4KLSsgKgotKyAqIFRoaXMgZmlsZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIDMtY2xhdXNlIEJTRCBsaWNlbnNlCi0rICovCi0rI2lmbmRlZiBfVFBNX0lPQ1RMX0hfCi0rI2RlZmluZSBfVFBNX0lPQ1RMX0hfCi0rCi0rI2luY2x1ZGUgPHN0ZGludC5oPgotKyNpbmNsdWRlIDxzeXMvdWlvLmg+Ci0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSsKLSsvKgotKyAqIEV2ZXJ5IHJlc3BvbnNlIGZyb20gYSBjb21tYW5kIGludm9sdmluZyBhIFRQTSBjb21tYW5kIGV4ZWN1dGlvbiBtdXN0IGhvbGQKLSsgKiB0aGUgcHRtX3JlcyBhcyB0aGUgZmlyc3QgZWxlbWVudC4KLSsgKiBwdG1fcmVzIGNvcnJlc3BvbmRzIHRvIHRoZSBlcnJvciBjb2RlIG9mIGEgY29tbWFuZCBleGVjdXRlZCBieSB0aGUgVFBNLgotKyAqLwotKwotK3R5cGVkZWYgdWludDMyX3QgcHRtX3JlczsKLSsKLSsvKiBQVE1fR0VUX1RQTUVTVEFCTElTSEVEOiBnZXQgdGhlIGVzdGFibGlzaG1lbnQgYml0ICovCi0rc3RydWN0IHB0bV9lc3QgewotKyAgICB1bmlvbiB7Ci0rICAgICAgICBzdHJ1Y3QgewotKyAgICAgICAgICAgIHB0bV9yZXMgdHBtX3Jlc3VsdDsKLSsgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGJpdDsgLyogVFBNIGVzdGFibGlzaGVkIGJpdCAqLwotKyAgICAgICAgfSByZXNwOyAvKiByZXNwb25zZSAqLwotKyAgICB9IHU7Ci0rfTsKLSsKLSsvKiBQVE1fUkVTRVRfVFBNRVNUQUJMSVNIRUQ6IHJlc2V0IGVzdGFibGlzaG1lbnQgYml0ICovCi0rc3RydWN0IHB0bV9yZXNldF9lc3QgewotKyAgICB1bmlvbiB7Ci0rICAgICAgICBzdHJ1Y3QgewotKyAgICAgICAgICAgIHVpbnQ4X3QgbG9jOyAvKiBsb2NhbGl0eSB0byB1c2UgKi8KLSsgICAgICAgIH0gcmVxOyAvKiByZXF1ZXN0ICovCi0rICAgICAgICBzdHJ1Y3QgewotKyAgICAgICAgICAgIHB0bV9yZXMgdHBtX3Jlc3VsdDsKLSsgICAgICAgIH0gcmVzcDsgLyogcmVzcG9uc2UgKi8KLSsgICAgfSB1OwotK307Ci0rCi0rLyogUFRNX0lOSVQgKi8KLStzdHJ1Y3QgcHRtX2luaXQgewotKyAgICB1bmlvbiB7Ci0rICAgICAgICBzdHJ1Y3QgewotKyAgICAgICAgICAgIHVpbnQzMl90IGluaXRfZmxhZ3M7IC8qIHNlZSBkZWZpbml0aW9ucyBiZWxvdyAqLwotKyAgICAgICAgfSByZXE7IC8qIHJlcXVlc3QgKi8KLSsgICAgICAgIHN0cnVjdCB7Ci0rICAgICAgICAgICAgcHRtX3JlcyB0cG1fcmVzdWx0OwotKyAgICAgICAgfSByZXNwOyAvKiByZXNwb25zZSAqLwotKyAgICB9IHU7Ci0rfTsKLSsKLSsvKiBhYm92ZSBpbml0X2ZsYWdzICovCi0rI2RlZmluZSBQVE1fSU5JVF9GTEFHX0RFTEVURV9WT0xBVElMRSAoMSA8PCAwKQotKyAgICAvKiBkZWxldGUgdm9sYXRpbGUgc3RhdGUgZmlsZSBhZnRlciByZWFkaW5nIGl0ICovCi0rCi0rLyogUFRNX1NFVF9MT0NBTElUWSAqLwotK3N0cnVjdCBwdG1fbG9jIHsKLSsgICAgdW5pb24gewotKyAgICAgICAgc3RydWN0IHsKLSsgICAgICAgICAgICB1aW50OF90IGxvYzsgLyogbG9jYWxpdHkgdG8gc2V0ICovCi0rICAgICAgICB9IHJlcTsgLyogcmVxdWVzdCAqLwotKyAgICAgICAgc3RydWN0IHsKLSsgICAgICAgICAgICBwdG1fcmVzIHRwbV9yZXN1bHQ7Ci0rICAgICAgICB9IHJlc3A7IC8qIHJlc3BvbnNlICovCi0rICAgIH0gdTsKLSt9OwotKwotKy8qIFBUTV9IQVNIX0RBVEE6IGhhc2ggZ2l2ZW4gZGF0YSAqLwotK3N0cnVjdCBwdG1faGRhdGEgewotKyAgICB1bmlvbiB7Ci0rICAgICAgICBzdHJ1Y3QgewotKyAgICAgICAgICAgIHVpbnQzMl90IGxlbmd0aDsKLSsgICAgICAgICAgICB1aW50OF90IGRhdGFbNDA5Nl07Ci0rICAgICAgICB9IHJlcTsgLyogcmVxdWVzdCAqLwotKyAgICAgICAgc3RydWN0IHsKLSsgICAgICAgICAgICBwdG1fcmVzIHRwbV9yZXN1bHQ7Ci0rICAgICAgICB9IHJlc3A7IC8qIHJlc3BvbnNlICovCi0rICAgIH0gdTsKLSt9OwotKwotKy8qCi0rICogc2l6ZSBvZiB0aGUgVFBNIHN0YXRlIGJsb2IgdG8gdHJhbnNmZXI7IHg4Nl82NCBjYW4gaGFuZGxlIDhrLAotKyAqIHBwYzY0bGUgb25seSB+N2s7IGtlZXAgdGhlIHJlc3BvbnNlIGJlbG93IGEgNGsgcGFnZSBzaXplCi0rICovCi0rI2RlZmluZSBQVE1fU1RBVEVfQkxPQl9TSVpFICgzICogMTAyNCkKLSsKLSsvKgotKyAqIFRoZSBmb2xsb3dpbmcgaXMgdGhlIGRhdGEgc3RydWN0dXJlIHRvIGdldCBzdGF0ZSBibG9icyBmcm9tIHRoZSBUUE0uCi0rICogSWYgdGhlIHNpemUgb2YgdGhlIHN0YXRlIGJsb2IgZXhjZWVkcyB0aGUgUFRNX1NUQVRFX0JMT0JfU0laRSwgbXVsdGlwbGUgcmVhZHMKLSsgKiB3aXRoIHRoaXMgaW9jdGwgYW5kIHdpdGggYWRqdXN0ZWQgb2Zmc2V0IGFyZSBuZWNlc3NhcnkuIEFsbCBieXRlcwotKyAqIG11c3QgYmUgdHJhbnNmZXJyZWQgYW5kIHRoZSB0cmFuc2ZlciBpcyBkb25lIG9uY2UgdGhlIGxhc3QgYnl0ZSBoYXMgYmVlbgotKyAqIHJldHVybmVkLgotKyAqIEl0IGlzIHBvc3NpYmxlIHRvIHVzZSB0aGUgcmVhZCgpIGludGVyZmFjZSBmb3IgcmVhZGluZyB0aGUgZGF0YTsgaG93ZXZlciwKLSsgKiB0aGUgZmlyc3QgYnl0ZXMgb2YgdGhlIHN0YXRlIGJsb2Igd2lsbCBiZSBwYXJ0IG9mIHRoZSByZXNwb25zZSB0byB0aGUgaW9jdGwoKTsKLSsgKiBhIHN1YnNlcXVlbnQgcmVhZCgpIGlzIG9ubHkgbmVjZXNzYXJ5IGlmIHRoZSB0b3RhbCBsZW5ndGggKHRvdGxlbmd0aCkgZXhjZWVkcwotKyAqIHRoZSBudW1iZXIgb2YgcmVjZWl2ZWQgYnl0ZXMuIHNlZWsoKSBpcyBub3Qgc3VwcG9ydGVkLgotKyAqLwotK3N0cnVjdCBwdG1fZ2V0c3RhdGUgewotKyAgICB1bmlvbiB7Ci0rICAgICAgICBzdHJ1Y3QgewotKyAgICAgICAgICAgIHVpbnQzMl90IHN0YXRlX2ZsYWdzOyAvKiBtYXkgYmU6IFBUTV9TVEFURV9GTEFHX0RFQ1JZUFRFRCAqLwotKyAgICAgICAgICAgIHVpbnQzMl90IHR5cGU7ICAgICAgICAvKiB3aGljaCBibG9iIHRvIHB1bGwgKi8KLSsgICAgICAgICAgICB1aW50MzJfdCBvZmZzZXQ7ICAgICAgLyogb2Zmc2V0IGZyb20gd2hlcmUgdG8gcmVhZCAqLwotKyAgICAgICAgfSByZXE7IC8qIHJlcXVlc3QgKi8KLSsgICAgICAgIHN0cnVjdCB7Ci0rICAgICAgICAgICAgcHRtX3JlcyB0cG1fcmVzdWx0OwotKyAgICAgICAgICAgIHVpbnQzMl90IHN0YXRlX2ZsYWdzOyAvKiBtYXkgYmU6IFBUTV9TVEFURV9GTEFHX0VOQ1JZUFRFRCAqLwotKyAgICAgICAgICAgIHVpbnQzMl90IHRvdGxlbmd0aDsgICAvKiB0b3RhbCBsZW5ndGggdGhhdCB3aWxsIGJlIHRyYW5zZmVycmVkICovCi0rICAgICAgICAgICAgdWludDMyX3QgbGVuZ3RoOyAgICAgIC8qIG51bWJlciBvZiBieXRlcyBpbiBmb2xsb3dpbmcgYnVmZmVyICovCi0rICAgICAgICAgICAgdWludDhfdCAgZGF0YVtQVE1fU1RBVEVfQkxPQl9TSVpFXTsKLSsgICAgICAgIH0gcmVzcDsgLyogcmVzcG9uc2UgKi8KLSsgICAgfSB1OwotK307Ci0rCi0rLyogVFBNIHN0YXRlIGJsb2IgdHlwZXMgKi8KLSsjZGVmaW5lIFBUTV9CTE9CX1RZUEVfUEVSTUFORU5UICAxCi0rI2RlZmluZSBQVE1fQkxPQl9UWVBFX1ZPTEFUSUxFICAgMgotKyNkZWZpbmUgUFRNX0JMT0JfVFlQRV9TQVZFU1RBVEUgIDMKLSsKLSsvKiBzdGF0ZV9mbGFncyBhYm92ZSA6ICovCi0rI2RlZmluZSBQVE1fU1RBVEVfRkxBR19ERUNSWVBURUQgICAgIDEgLyogb24gaW5wdXQ6ICBnZXQgZGVjcnlwdGVkIHN0YXRlICovCi0rI2RlZmluZSBQVE1fU1RBVEVfRkxBR19FTkNSWVBURUQgICAgIDIgLyogb24gb3V0cHV0OiBzdGF0ZSBpcyBlbmNyeXB0ZWQgKi8KLSsKLSsvKgotKyAqIFRoZSBmb2xsb3dpbmcgaXMgdGhlIGRhdGEgc3RydWN0dXJlIHRvIHNldCBzdGF0ZSBibG9icyBpbiB0aGUgVFBNLgotKyAqIElmIHRoZSBzaXplIG9mIHRoZSBzdGF0ZSBibG9iIGV4Y2VlZHMgdGhlIFBUTV9TVEFURV9CTE9CX1NJWkUsIG11bHRpcGxlCi0rICogJ3dyaXRlcycgdXNpbmcgdGhpcyBpb2N0bCBhcmUgbmVjZXNzYXJ5LiBUaGUgbGFzdCBwYWNrZXQgaXMgaW5kaWNhdGVkCi0rICogYnkgdGhlIGxlbmd0aCBiZWluZyBzbWFsbGVyIHRoYW4gdGhlIFBUTV9TVEFURV9CTE9CX1NJWkUuCi0rICogVGhlIHZlcnkgZmlyc3QgcGFja2V0IG1heSBoYXZlIGEgbGVuZ3RoIGluZGljYXRvciBvZiAnMCcgZW5hYmxpbmcKLSsgKiBhIHdyaXRlKCkgd2l0aCBhbGwgdGhlIGJ5dGVzIGZyb20gYSBidWZmZXIuIElmIHRoZSB3cml0ZSgpIGludGVyZmFjZQotKyAqIGlzIHVzZWQsIGEgZmluYWwgaW9jdGwgd2l0aCBhIG5vbi1mdWxsIGJ1ZmZlciBtdXN0IGJlIG1hZGUgdG8gaW5kaWNhdGUKLSsgKiB0aGF0IGFsbCBkYXRhIHdlcmUgdHJhbnNmZXJyZWQgKGEgd3JpdGUgd2l0aCAwIGJ5dGVzIHdvdWxkIG5vdCB3b3JrKS4KLSsgKi8KLStzdHJ1Y3QgcHRtX3NldHN0YXRlIHsKLSsgICAgdW5pb24gewotKyAgICAgICAgc3RydWN0IHsKLSsgICAgICAgICAgICB1aW50MzJfdCBzdGF0ZV9mbGFnczsgLyogbWF5IGJlIFBUTV9TVEFURV9GTEFHX0VOQ1JZUFRFRCAqLwotKyAgICAgICAgICAgIHVpbnQzMl90IHR5cGU7ICAgICAgICAvKiB3aGljaCBibG9iIHRvIHNldCAqLwotKyAgICAgICAgICAgIHVpbnQzMl90IGxlbmd0aDsgICAgICAvKiBsZW5ndGggb2YgdGhlIGRhdGE7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZSAwIG9uIHRoZSBmaXJzdCBwYWNrZXQgdG8KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmZXIgdXNpbmcgd3JpdGUoKSAqLwotKyAgICAgICAgICAgIHVpbnQ4X3QgZGF0YVtQVE1fU1RBVEVfQkxPQl9TSVpFXTsKLSsgICAgICAgIH0gcmVxOyAvKiByZXF1ZXN0ICovCi0rICAgICAgICBzdHJ1Y3QgewotKyAgICAgICAgICAgIHB0bV9yZXMgdHBtX3Jlc3VsdDsKLSsgICAgICAgIH0gcmVzcDsgLyogcmVzcG9uc2UgKi8KLSsgICAgfSB1OwotK307Ci0rCi0rLyoKLSsgKiBQVE1fR0VUX0NPTkZJRzogRGF0YSBzdHJ1Y3R1cmUgdG8gZ2V0IHJ1bnRpbWUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbgotKyAqIHN1Y2ggYXMgd2hpY2gga2V5cyBhcmUgYXBwbGllZC4KLSsgKi8KLStzdHJ1Y3QgcHRtX2dldGNvbmZpZyB7Ci0rICAgIHVuaW9uIHsKLSsgICAgICAgIHN0cnVjdCB7Ci0rICAgICAgICAgICAgcHRtX3JlcyB0cG1fcmVzdWx0OwotKyAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzOwotKyAgICAgICAgfSByZXNwOyAvKiByZXNwb25zZSAqLwotKyAgICB9IHU7Ci0rfTsKLSsKLSsjZGVmaW5lIFBUTV9DT05GSUdfRkxBR19GSUxFX0tFWSAgICAgICAgMHgxCi0rI2RlZmluZSBQVE1fQ09ORklHX0ZMQUdfTUlHUkFUSU9OX0tFWSAgIDB4MgotKwotKwotK3R5cGVkZWYgdWludDY0X3QgcHRtX2NhcDsKLSt0eXBlZGVmIHN0cnVjdCBwdG1fZXN0IHB0bV9lc3Q7Ci0rdHlwZWRlZiBzdHJ1Y3QgcHRtX3Jlc2V0X2VzdCBwdG1fcmVzZXRfZXN0OwotK3R5cGVkZWYgc3RydWN0IHB0bV9sb2MgcHRtX2xvYzsKLSt0eXBlZGVmIHN0cnVjdCBwdG1faGRhdGEgcHRtX2hkYXRhOwotK3R5cGVkZWYgc3RydWN0IHB0bV9pbml0IHB0bV9pbml0OwotK3R5cGVkZWYgc3RydWN0IHB0bV9nZXRzdGF0ZSBwdG1fZ2V0c3RhdGU7Ci0rdHlwZWRlZiBzdHJ1Y3QgcHRtX3NldHN0YXRlIHB0bV9zZXRzdGF0ZTsKLSt0eXBlZGVmIHN0cnVjdCBwdG1fZ2V0Y29uZmlnIHB0bV9nZXRjb25maWc7Ci0rCi0rLyogY2FwYWJpbGl0eSBmbGFncyByZXR1cm5lZCBieSBQVE1fR0VUX0NBUEFCSUxJVFkgKi8KLSsjZGVmaW5lIFBUTV9DQVBfSU5JVCAgICAgICAgICAgICAgICgxKQotKyNkZWZpbmUgUFRNX0NBUF9TSFVURE9XTiAgICAgICAgICAgKDE8PDEpCi0rI2RlZmluZSBQVE1fQ0FQX0dFVF9UUE1FU1RBQkxJU0hFRCAoMTw8MikKLSsjZGVmaW5lIFBUTV9DQVBfU0VUX0xPQ0FMSVRZICAgICAgICgxPDwzKQotKyNkZWZpbmUgUFRNX0NBUF9IQVNISU5HICAgICAgICAgICAgKDE8PDQpCi0rI2RlZmluZSBQVE1fQ0FQX0NBTkNFTF9UUE1fQ01EICAgICAoMTw8NSkKLSsjZGVmaW5lIFBUTV9DQVBfU1RPUkVfVk9MQVRJTEUgICAgICgxPDw2KQotKyNkZWZpbmUgUFRNX0NBUF9SRVNFVF9UUE1FU1RBQkxJU0hFRCAoMTw8NykKLSsjZGVmaW5lIFBUTV9DQVBfR0VUX1NUQVRFQkxPQiAgICAgICgxPDw4KQotKyNkZWZpbmUgUFRNX0NBUF9TRVRfU1RBVEVCTE9CICAgICAgKDE8PDkpCi0rI2RlZmluZSBQVE1fQ0FQX1NUT1AgICAgICAgICAgICAgICAoMTw8MTApCi0rI2RlZmluZSBQVE1fQ0FQX0dFVF9DT05GSUcgICAgICAgICAoMTw8MTEpCi0rCi0rZW51bSB7Ci0rICAgIFBUTV9HRVRfQ0FQQUJJTElUWSAgICAgPSBfSU9SKCdQJywgMCwgcHRtX2NhcCksCi0rICAgIFBUTV9JTklUICAgICAgICAgICAgICAgPSBfSU9XUignUCcsIDEsIHB0bV9pbml0KSwKLSsgICAgUFRNX1NIVVRET1dOICAgICAgICAgICA9IF9JT1IoJ1AnLCAyLCBwdG1fcmVzKSwKLSsgICAgUFRNX0dFVF9UUE1FU1RBQkxJU0hFRCA9IF9JT1IoJ1AnLCAzLCBwdG1fZXN0KSwKLSsgICAgUFRNX1NFVF9MT0NBTElUWSAgICAgICA9IF9JT1dSKCdQJywgNCwgcHRtX2xvYyksCi0rICAgIFBUTV9IQVNIX1NUQVJUICAgICAgICAgPSBfSU9SKCdQJywgNSwgcHRtX3JlcyksCi0rICAgIFBUTV9IQVNIX0RBVEEgICAgICAgICAgPSBfSU9XUignUCcsIDYsIHB0bV9oZGF0YSksCi0rICAgIFBUTV9IQVNIX0VORCAgICAgICAgICAgPSBfSU9SKCdQJywgNywgcHRtX3JlcyksCi0rICAgIFBUTV9DQU5DRUxfVFBNX0NNRCAgICAgPSBfSU9SKCdQJywgOCwgcHRtX3JlcyksCi0rICAgIFBUTV9TVE9SRV9WT0xBVElMRSAgICAgPSBfSU9SKCdQJywgOSwgcHRtX3JlcyksCi0rICAgIFBUTV9SRVNFVF9UUE1FU1RBQkxJU0hFRCA9IF9JT1dSKCdQJywgMTAsIHB0bV9yZXNldF9lc3QpLAotKyAgICBQVE1fR0VUX1NUQVRFQkxPQiAgICAgID0gX0lPV1IoJ1AnLCAxMSwgcHRtX2dldHN0YXRlKSwKLSsgICAgUFRNX1NFVF9TVEFURUJMT0IgICAgICA9IF9JT1dSKCdQJywgMTIsIHB0bV9zZXRzdGF0ZSksCi0rICAgIFBUTV9TVE9QICAgICAgICAgICAgICAgPSBfSU9SKCdQJywgMTMsIHB0bV9yZXMpLAotKyAgICBQVE1fR0VUX0NPTkZJRyAgICAgICAgID0gX0lPUignUCcsIDE0LCBwdG1fZ2V0Y29uZmlnKSwKLSt9OwotKwotKyNlbmRpZiAvKiBfVFBNX0lPQ1RMX0ggKi8KLWRpZmYgLS1naXQgYS9ody90cG0vdHBtX3Bhc3N0aHJvdWdoLmMgYi9ody90cG0vdHBtX3Bhc3N0aHJvdWdoLmMKLWluZGV4IGU4OGMwZDIwYmMuLjA1MGYyYmE4NTAgMTAwNjQ0Ci0tLS0gYS9ody90cG0vdHBtX3Bhc3N0aHJvdWdoLmMKLSsrKyBiL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYwotQEAgLTMzLDYgKzMzLDcgQEAKLSAjaW5jbHVkZSAic3lzZW11L3RwbV9iYWNrZW5kX2ludC5oIgotICNpbmNsdWRlICJ0cG1fdGlzLmgiCi0gI2luY2x1ZGUgInRwbV91dGlsLmgiCi0rI2luY2x1ZGUgInRwbV9pb2N0bC5oIgotIAotICNkZWZpbmUgREVCVUdfVFBNIDAKLSAKLUBAIC00NSw2ICs0Niw3IEBACi0gI2RlZmluZSBUWVBFX1RQTV9QQVNTVEhST1VHSCAidHBtLXBhc3N0aHJvdWdoIgotICNkZWZpbmUgVFBNX1BBU1NUSFJPVUdIKG9iaikgXAotICAgICBPQkpFQ1RfQ0hFQ0soVFBNUGFzc3RocnVTdGF0ZSwgKG9iaiksIFRZUEVfVFBNX1BBU1NUSFJPVUdIKQotKyNkZWZpbmUgVFlQRV9UUE1fQ1VTRSAidHBtLWN1c2UiCi0gCi0gc3RhdGljIGNvbnN0IFRQTURyaXZlck9wcyB0cG1fcGFzc3Rocm91Z2hfZHJpdmVyOwotIAotQEAgLTcxLDEyICs3MywxOCBAQCBzdHJ1Y3QgVFBNUGFzc3RocnVTdGF0ZSB7Ci0gICAgIGJvb2wgaGFkX3N0YXJ0dXBfZXJyb3I7Ci0gCi0gICAgIFRQTVZlcnNpb24gdHBtX3ZlcnNpb247Ci0rICAgIHB0bV9jYXAgY3VzZV9jYXA7IC8qIGNhcGFiaWxpdGllcyBvZiB0aGUgQ1VTRSBUUE0gKi8KLSsgICAgdWludDhfdCBjdXJfbG9jdHlfbnVtYmVyOyAvKiBsYXN0IHNldCBsb2NhbGl0eSAqLwotIH07Ci0gCi0gdHlwZWRlZiBzdHJ1Y3QgVFBNUGFzc3RocnVTdGF0ZSBUUE1QYXNzdGhydVN0YXRlOwotIAotICNkZWZpbmUgVFBNX1BBU1NUSFJPVUdIX0RFRkFVTFRfREVWSUNFICIvZGV2L3RwbTAiCi0gCi0rI2RlZmluZSBUUE1fUEFTU1RIUk9VR0hfVVNFU19DVVNFX1RQTSh0cG1fcHQpICh0cG1fcHQtPmN1c2VfY2FwICE9IDApCi0rCi0rI2RlZmluZSBUUE1fQ1VTRV9JTVBMRU1FTlRTX0FMTChTLCBjYXApICgoKFMpLT5jdXNlX2NhcCAmIChjYXApKSA9PSAoY2FwKSkKLSsKLSAvKiBmdW5jdGlvbnMgKi8KLSAKLSBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfY2FuY2VsX2NtZChUUE1CYWNrZW5kICp0Yik7Ci1AQCAtMTQ4LDcgKzE1NiwyOCBAQCBzdGF0aWMgYm9vbCB0cG1fcGFzc3Rocm91Z2hfaXNfc2VsZnRlc3QoY29uc3QgdWludDhfdCAqaW4sIHVpbnQzMl90IGluX2xlbikKLSAgICAgcmV0dXJuIGZhbHNlOwotIH0KLSAKLStzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9zZXRfbG9jYWxpdHkoVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGxvY3R5X251bWJlcikKLSt7Ci0rICAgIHB0bV9sb2MgbG9jOwotKwotKyAgICBpZiAoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSkgewotKyAgICAgICAgaWYgKHRwbV9wdC0+Y3VyX2xvY3R5X251bWJlciAhPSBsb2N0eV9udW1iZXIpIHsKLSsgICAgICAgICAgICBsb2MudS5yZXEubG9jID0gbG9jdHlfbnVtYmVyOwotKyAgICAgICAgICAgIGlmIChpb2N0bCh0cG1fcHQtPnRwbV9mZCwgUFRNX1NFVF9MT0NBTElUWSwgJmxvYykgPCAwKSB7Ci0rICAgICAgICAgICAgICAgIGVycm9yX3JlcG9ydCgidHBtX2N1c2U6IGNvdWxkIG5vdCBzZXQgbG9jYWxpdHkgb24gIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNVU0UgVFBNOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIHRwbV9wdC0+Y3VyX2xvY3R5X251bWJlciA9IGxvY3R5X251bWJlcjsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0gc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfdW5peF90eF9idWZzKFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBsb2NhbGl0eV9udW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmluLCB1aW50MzJfdCBpbl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dCwgdWludDMyX3Qgb3V0X2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqc2VsZnRlc3RfZG9uZSkKLUBAIC0xNTcsNiArMTg2LDExIEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX3VuaXhfdHhfYnVmcyhUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQsCi0gICAgIGJvb2wgaXNfc2VsZnRlc3Q7Ci0gICAgIGNvbnN0IHN0cnVjdCB0cG1fcmVzcF9oZHIgKmhkcjsKLSAKLSsgICAgcmV0ID0gdHBtX3Bhc3N0aHJvdWdoX3NldF9sb2NhbGl0eSh0cG1fcHQsIGxvY2FsaXR5X251bWJlcik7Ci0rICAgIGlmIChyZXQgPCAwKSB7Ci0rICAgICAgICBnb3RvIGVycl9leGl0OwotKyAgICB9Ci0rCi0gICAgIHRwbV9wdC0+dHBtX29wX2NhbmNlbGVkID0gZmFsc2U7Ci0gICAgIHRwbV9wdC0+dHBtX2V4ZWN1dGluZyA9IHRydWU7Ci0gICAgICpzZWxmdGVzdF9kb25lID0gZmFsc2U7Ci1AQCAtMjA3LDEwICsyNDEsMTIgQEAgZXJyX2V4aXQ6Ci0gfQotIAotIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX3VuaXhfdHJhbnNmZXIoVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBsb2NhbGl0eV9udW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUUE1Mb2NhbGl0eSAqbG9jdHlfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKnNlbGZ0ZXN0X2RvbmUpCi0gewotICAgICByZXR1cm4gdHBtX3Bhc3N0aHJvdWdoX3VuaXhfdHhfYnVmcyh0cG1fcHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsaXR5X251bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jdHlfZGF0YS0+d19idWZmZXIuYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2N0eV9kYXRhLT53X29mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jdHlfZGF0YS0+cl9idWZmZXIuYnVmZmVyLAotQEAgLTIzMSw2ICsyNjcsNyBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfd29ya2VyX3RocmVhZChncG9pbnRlciBkYXRhLAotICAgICBzd2l0Y2ggKGNtZCkgewotICAgICBjYXNlIFRQTV9CQUNLRU5EX0NNRF9QUk9DRVNTX0NNRDoKLSAgICAgICAgIHRwbV9wYXNzdGhyb3VnaF91bml4X3RyYW5zZmVyKHRwbV9wdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocl9wYXJtcy0+dHBtX3N0YXRlLT5sb2N0eV9udW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJfcGFybXMtPnRwbV9zdGF0ZS0+bG9jdHlfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZWxmdGVzdF9kb25lKTsKLSAKLUBAIC0yNDcsNiArMjg0LDkzIEBAIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF93b3JrZXJfdGhyZWFkKGdwb2ludGVyIGRhdGEsCi0gfQotIAotIC8qCi0rICogR3JhY2VmdWxseSBzaHV0IGRvd24gdGhlIGV4dGVybmFsIENVU0UgVFBNCi0rICovCi0rc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX3NodXRkb3duKFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCkKLSt7Ci0rICAgIHB0bV9yZXMgcmVzOwotKwotKyAgICBpZiAoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSkgewotKyAgICAgICAgaWYgKGlvY3RsKHRwbV9wdC0+dHBtX2ZkLCBQVE1fU0hVVERPV04sICZyZXMpIDwgMCkgewotKyAgICAgICAgICAgIGVycm9yX3JlcG9ydCgidHBtX2N1c2U6IENvdWxkIG5vdCBjbGVhbmx5IHNodXQgZG93biAiCi0rICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgQ1VTRSBUUE06ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgIH0KLSsgICAgfQotK30KLSsKLSsvKgotKyAqIFByb2JlIGZvciB0aGUgQ1VTRSBUUE0gYnkgc2VuZGluZyBhbiBpb2N0bCgpIHJlcXVlc3RpbmcgaXRzCi0rICogY2FwYWJpbGl0eSBmbGFncy4KLSsgKi8KLStzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9jdXNlX3Byb2JlKFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCkKLSt7Ci0rICAgIGludCByYyA9IDA7Ci0rCi0rICAgIGlmIChpb2N0bCh0cG1fcHQtPnRwbV9mZCwgUFRNX0dFVF9DQVBBQklMSVRZLCAmdHBtX3B0LT5jdXNlX2NhcCkgPCAwKSB7Ci0rICAgICAgICBlcnJvcl9yZXBvcnQoIkVycm9yOiBDVVNFIFRQTSB3YXMgcmVxdWVzdGVkLCBidXQgcHJvYmluZyBmYWlsZWQiKTsKLSsgICAgICAgIHJjID0gLTE7Ci0rICAgIH0KLSsKLSsgICAgcmV0dXJuIHJjOwotK30KLSsKLStzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9jdXNlX2NoZWNrX2NhcHMoVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0KQotK3sKLSsgICAgaW50IHJjID0gMDsKLSsgICAgcHRtX2NhcCBjYXBzID0gMDsKLSsgICAgY29uc3QgY2hhciAqdHBtID0gTlVMTDsKLSsKLSsgICAgLyogY2hlY2sgZm9yIG1pbi4gcmVxdWlyZWQgY2FwYWJpbGl0aWVzICovCi0rICAgIHN3aXRjaCAodHBtX3B0LT50cG1fdmVyc2lvbikgewotKyAgICBjYXNlIFRQTV9WRVJTSU9OXzFfMjoKLSsgICAgICAgIGNhcHMgPSBQVE1fQ0FQX0lOSVQgfCBQVE1fQ0FQX1NIVVRET1dOIHwgUFRNX0NBUF9HRVRfVFBNRVNUQUJMSVNIRUQgfAotKyAgICAgICAgICAgICAgIFBUTV9DQVBfU0VUX0xPQ0FMSVRZOwotKyAgICAgICAgdHBtID0gIjEuMiI7Ci0rICAgICAgICBicmVhazsKLSsgICAgY2FzZSBUUE1fVkVSU0lPTl8yXzA6Ci0rICAgICAgICBjYXBzID0gUFRNX0NBUF9JTklUIHwgUFRNX0NBUF9TSFVURE9XTiB8IFBUTV9DQVBfR0VUX1RQTUVTVEFCTElTSEVEIHwKLSsgICAgICAgICAgICAgICBQVE1fQ0FQX1NFVF9MT0NBTElUWSB8IFBUTV9DQVBfUkVTRVRfVFBNRVNUQUJMSVNIRUQ7Ci0rICAgICAgICB0cG0gPSAiMiI7Ci0rICAgICAgICBicmVhazsKLSsgICAgY2FzZSBUUE1fVkVSU0lPTl9VTlNQRUM6Ci0rICAgICAgICBlcnJvcl9yZXBvcnQoInRwbV9jdXNlOiAlczogVFBNIHZlcnNpb24gaGFzIG5vdCBiZWVuIHNldCIsCi0rICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18pOwotKyAgICAgICAgcmV0dXJuIC0xOwotKyAgICB9Ci0rCi0rICAgIGlmICghVFBNX0NVU0VfSU1QTEVNRU5UU19BTEwodHBtX3B0LCBjYXBzKSkgewotKyAgICAgICAgZXJyb3JfcmVwb3J0KCJ0cG1fY3VzZTogVFBNIGRvZXMgbm90IGltcGxlbWVudCBtaW5pbXVtIHNldCBvZiByZXF1aXJlZCAiCi0rICAgICAgICAgICAgICAgICAgICAgImNhcGFiaWxpdGllcyBmb3IgVFBNICVzICgweCV4KSIsIHRwbSwgKGludCljYXBzKTsKLSsgICAgICAgIHJjID0gLTE7Ci0rICAgIH0KLSsKLSsgICAgcmV0dXJuIHJjOwotK30KLSsKLSsvKgotKyAqIEluaXRpYWxpemUgdGhlIGV4dGVybmFsIENVU0UgVFBNCi0rICovCi0rc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCkKLSt7Ci0rICAgIGludCByYyA9IDA7Ci0rICAgIHB0bV9pbml0IGluaXQgPSB7Ci0rICAgICAgICAudS5yZXEuaW5pdF9mbGFncyA9IFBUTV9JTklUX0ZMQUdfREVMRVRFX1ZPTEFUSUxFLAotKyAgICB9OwotKwotKyAgICBpZiAoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSkgewotKyAgICAgICAgaWYgKGlvY3RsKHRwbV9wdC0+dHBtX2ZkLCBQVE1fSU5JVCwgJmluaXQpIDwgMCkgewotKyAgICAgICAgICAgIGVycm9yX3JlcG9ydCgidHBtX2N1c2U6IERldGVjdGVkIENVU0UgVFBNIGJ1dCBjb3VsZCBub3QgIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAic2VuZCBJTklUOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7Ci0rICAgICAgICAgICAgcmMgPSAtMTsKLSsgICAgICAgIH0KLSsgICAgfQotKwotKyAgICByZXR1cm4gcmM7Ci0rfQotKwotKy8qCi0gICogU3RhcnQgdGhlIFRQTSAodGhyZWFkKS4gSWYgaXQgaGFkIGJlZW4gc3RhcnRlZCBiZWZvcmUsIHRoZW4gdGVybWluYXRlCi0gICogYW5kIHN0YXJ0IGl0IGFnYWluLgotICAqLwotQEAgLTI2MSw2ICszODUsOCBAQCBzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9zdGFydHVwX3RwbShUUE1CYWNrZW5kICp0YikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG1fcGFzc3Rocm91Z2hfd29ya2VyX3RocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX3B0LT50cG1fdGhyZWFkX3BhcmFtcyk7Ci0gCi0rICAgIHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQodHBtX3B0KTsKLSsKLSAgICAgcmV0dXJuIDA7Ci0gfQotIAotQEAgLTI5MSwxNCArNDE3LDQzIEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2luaXQoVFBNQmFja2VuZCAqdGIsIFRQTVN0YXRlICpzLAotIAotIHN0YXRpYyBib29sIHRwbV9wYXNzdGhyb3VnaF9nZXRfdHBtX2VzdGFibGlzaGVkX2ZsYWcoVFBNQmFja2VuZCAqdGIpCi0gewotKyAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOwotKyAgICBwdG1fZXN0IGVzdDsKLSsKLSsgICAgaWYgKFRQTV9QQVNTVEhST1VHSF9VU0VTX0NVU0VfVFBNKHRwbV9wdCkpIHsKLSsgICAgICAgIGlmIChpb2N0bCh0cG1fcHQtPnRwbV9mZCwgUFRNX0dFVF9UUE1FU1RBQkxJU0hFRCwgJmVzdCkgPCAwKSB7Ci0rICAgICAgICAgICAgZXJyb3JfcmVwb3J0KCJ0cG1fY3VzZTogQ291bGQgbm90IGdldCB0aGUgVFBNIGVzdGFibGlzaGVkICIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgImZsYWcgZnJvbSB0aGUgQ1VTRSBUUE06ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0rICAgICAgICB9Ci0rICAgICAgICByZXR1cm4gKGVzdC51LnJlc3AuYml0ICE9IDApOwotKyAgICB9Ci0gICAgIHJldHVybiBmYWxzZTsKLSB9Ci0gCi0gc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfcmVzZXRfdHBtX2VzdGFibGlzaGVkX2ZsYWcoVFBNQmFja2VuZCAqdGIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBsb2N0eSkKLSB7Ci0rICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7Ci0rICAgIGludCByYyA9IDA7Ci0rICAgIHB0bV9yZXNldF9lc3QgcHRtcmVzZXRfZXN0OwotKwotICAgICAvKiBvbmx5IGEgVFBNIDIuMCB3aWxsIHN1cHBvcnQgdGhpcyAqLwotLSAgICByZXR1cm4gMDsKLSsgICAgaWYgKHRwbV9wdC0+dHBtX3ZlcnNpb24gPT0gVFBNX1ZFUlNJT05fMl8wKSB7Ci0rICAgICAgICBpZiAoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSkgewotKyAgICAgICAgICAgIHB0bXJlc2V0X2VzdC51LnJlcS5sb2MgPSB0cG1fcHQtPmN1cl9sb2N0eV9udW1iZXI7Ci0rCi0rICAgICAgICAgICAgaWYgKGlvY3RsKHRwbV9wdC0+dHBtX2ZkLCBQVE1fUkVTRVRfVFBNRVNUQUJMSVNIRUQsCi0rICAgICAgICAgICAgICAgICAgICAgICZwdG1yZXNldF9lc3QpIDwgMCkgewotKyAgICAgICAgICAgICAgICBlcnJvcl9yZXBvcnQoInRwbV9jdXNlOiBDb3VsZCBub3QgcmVzZXQgdGhlIGVzdGFibGlzaG1lbnQgYml0ICIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQ6ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7Ci0rICAgICAgICAgICAgICAgIHJjID0gLTE7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgfQotKyAgICB9Ci0rICAgIHJldHVybiByYzsKLSB9Ci0gCi0gc3RhdGljIGJvb2wgdHBtX3Bhc3N0aHJvdWdoX2dldF9zdGFydHVwX2Vycm9yKFRQTUJhY2tlbmQgKnRiKQotQEAgLTMyOSw3ICs0ODQsOCBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfZGVsaXZlcl9yZXF1ZXN0KFRQTUJhY2tlbmQgKnRiKQotIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9jYW5jZWxfY21kKFRQTUJhY2tlbmQgKnRiKQotIHsKLSAgICAgVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0ID0gVFBNX1BBU1NUSFJPVUdIKHRiKTsKLS0gICAgaW50IG47Ci0rICAgIHB0bV9yZXMgcmVzOwotKyAgICBzdGF0aWMgYm9vbCBlcnJvcl9wcmludGVkOwotIAotICAgICAvKgotICAgICAgKiBBcyBvZiBMaW51eCAzLjcgdGhlIHRwbV90aXMgZHJpdmVyIGRvZXMgbm90IHByb3Blcmx5IGNhbmNlbAotQEAgLTMzOCwxNyArNDk0LDM0IEBAIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9jYW5jZWxfY21kKFRQTUJhY2tlbmQgKnRiKQotICAgICAgKiBjb21tYW5kLCBlLmcuLCBhIGNvbW1hbmQgZXhlY3V0ZWQgb24gdGhlIGhvc3QuCi0gICAgICAqLwotICAgICBpZiAodHBtX3B0LT50cG1fZXhlY3V0aW5nKSB7Ci0tICAgICAgICBpZiAodHBtX3B0LT5jYW5jZWxfZmQgPj0gMCkgewotLSAgICAgICAgICAgIG4gPSB3cml0ZSh0cG1fcHQtPmNhbmNlbF9mZCwgIi0iLCAxKTsKLS0gICAgICAgICAgICBpZiAobiAhPSAxKSB7Ci0tICAgICAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiQ2FuY2VsaW5nIFRQTSBjb21tYW5kIGZhaWxlZDogJXMiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLS0gICAgICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgICAgICB0cG1fcHQtPnRwbV9vcF9jYW5jZWxlZCA9IHRydWU7Ci0rICAgICAgICBpZiAoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSkgewotKyAgICAgICAgICAgIGlmIChUUE1fQ1VTRV9JTVBMRU1FTlRTX0FMTCh0cG1fcHQsIFBUTV9DQVBfQ0FOQ0VMX1RQTV9DTUQpKSB7Ci0rICAgICAgICAgICAgICAgIGlmIChpb2N0bCh0cG1fcHQtPnRwbV9mZCwgUFRNX0NBTkNFTF9UUE1fQ01ELCAmcmVzKSA8IDApIHsKLSsgICAgICAgICAgICAgICAgICAgIGVycm9yX3JlcG9ydCgidHBtX2N1c2U6IENvdWxkIG5vdCBjYW5jZWwgY29tbWFuZCBvbiAiCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNVU0UgVFBNOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgIT0gVFBNX1NVQ0NFU1MpIHsKLSsgICAgICAgICAgICAgICAgICAgIGlmICghZXJyb3JfcHJpbnRlZCkgewotKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiVFBNIGVycm9yIGNvZGUgZnJvbSBjb21tYW5kICIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbmNlbGxhdGlvbiBvZiBDVVNFIFRQTTogMHgleCIsIHJlcyk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfcHJpbnRlZCA9IHRydWU7Ci0rICAgICAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgICAgICB0cG1fcHQtPnRwbV9vcF9jYW5jZWxlZCA9IHRydWU7Ci0rICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiQ2Fubm90IGNhbmNlbCBUUE0gY29tbWFuZCBkdWUgdG8gbWlzc2luZyAiCi0tICAgICAgICAgICAgICAgICAgICAgICAgICJUUE0gc3lzZnMgY2FuY2VsIGVudHJ5Iik7Ci0rICAgICAgICAgICAgaWYgKHRwbV9wdC0+Y2FuY2VsX2ZkID49IDApIHsKLSsgICAgICAgICAgICAgICAgaWYgKHdyaXRlKHRwbV9wdC0+Y2FuY2VsX2ZkLCAiLSIsIDEpICE9IDEpIHsKLSsgICAgICAgICAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiQ2FuY2VsaW5nIFRQTSBjb21tYW5kIGZhaWxlZDogJXMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7Ci0rICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgICAgICB0cG1fcHQtPnRwbV9vcF9jYW5jZWxlZCA9IHRydWU7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgICAgICBlcnJvcl9yZXBvcnQoIkNhbm5vdCBjYW5jZWwgVFBNIGNvbW1hbmQgZHVlIHRvIG1pc3NpbmcgIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRQTSBzeXNmcyBjYW5jZWwgZW50cnkiKTsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgIH0KLSB9Ci1AQCAtMzc4LDYgKzU1MSwxMSBAQCBzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9vcGVuX3N5c2ZzX2NhbmNlbChUUE1CYWNrZW5kICp0YikKLSAgICAgY2hhciAqZGV2OwotICAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOwotIAotKyAgICBpZiAoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSkgewotKyAgICAgICAgLyogbm90IG5lZWRlZCwgYnV0IHNvIHdlIGhhdmUgYSBmZCAqLwotKyAgICAgICAgcmV0dXJuIHFlbXVfb3BlbigiL2Rldi9udWxsIiwgT19XUk9OTFkpOwotKyAgICB9Ci0rCi0gICAgIGlmICh0Yi0+Y2FuY2VsX3BhdGgpIHsKLSAgICAgICAgIGZkID0gcWVtdV9vcGVuKHRiLT5jYW5jZWxfcGF0aCwgT19XUk9OTFkpOwotICAgICAgICAgaWYgKGZkIDwgMCkgewotQEAgLTQxMiwxMiArNTkwLDIyIEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2hhbmRsZV9kZXZpY2Vfb3B0cyhRZW11T3B0cyAqb3B0cywgVFBNQmFja2VuZCAqdGIpCi0gewotICAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOwotICAgICBjb25zdCBjaGFyICp2YWx1ZTsKLSsgICAgYm9vbCBoYXZlX2N1c2UgPSBmYWxzZTsKLSsKLSsgICAgdmFsdWUgPSBxZW11X29wdF9nZXQob3B0cywgInR5cGUiKTsKLSsgICAgaWYgKHZhbHVlICE9IE5VTEwgJiYgIXN0cmNtcCgiY3VzZS10cG0iLCB2YWx1ZSkpIHsKLSsgICAgICAgIGhhdmVfY3VzZSA9IHRydWU7Ci0rICAgIH0KLSAKLSAgICAgdmFsdWUgPSBxZW11X29wdF9nZXQob3B0cywgImNhbmNlbC1wYXRoIik7Ci0gICAgIHRiLT5jYW5jZWxfcGF0aCA9IGdfc3RyZHVwKHZhbHVlKTsKLSAKLSAgICAgdmFsdWUgPSBxZW11X29wdF9nZXQob3B0cywgInBhdGgiKTsKLSAgICAgaWYgKCF2YWx1ZSkgewotKyAgICAgICAgaWYgKGhhdmVfY3VzZSkgewotKyAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiTWlzc2luZyBwYXRoIHRvIGFjY2VzcyBDVVNFIFRQTSIpOwotKyAgICAgICAgICAgIGdvdG8gZXJyX2ZyZWVfcGFyYW1ldGVyczsKLSsgICAgICAgIH0KLSAgICAgICAgIHZhbHVlID0gVFBNX1BBU1NUSFJPVUdIX0RFRkFVTFRfREVWSUNFOwotICAgICB9Ci0gCi1AQCAtNDMyLDE1ICs2MjAsMzYgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfaGFuZGxlX2RldmljZV9vcHRzKFFlbXVPcHRzICpvcHRzLCBUUE1CYWNrZW5kICp0YikKLSAgICAgICAgIGdvdG8gZXJyX2ZyZWVfcGFyYW1ldGVyczsKLSAgICAgfQotIAotKyAgICB0cG1fcHQtPmN1cl9sb2N0eV9udW1iZXIgPSB+MDsKLSsKLSsgICAgaWYgKGhhdmVfY3VzZSkgewotKyAgICAgICAgaWYgKHRwbV9wYXNzdGhyb3VnaF9jdXNlX3Byb2JlKHRwbV9wdCkpIHsKLSsgICAgICAgICAgICBnb3RvIGVycl9jbG9zZV90cG1kZXY7Ci0rICAgICAgICB9Ci0rICAgICAgICAvKiBpbml0IFRQTSBmb3IgcHJvYmluZyAqLwotKyAgICAgICAgaWYgKHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQodHBtX3B0KSkgewotKyAgICAgICAgICAgIGdvdG8gZXJyX2Nsb3NlX3RwbWRldjsKLSsgICAgICAgIH0KLSsgICAgfQotKwotICAgICBpZiAodHBtX3V0aWxfdGVzdF90cG1kZXYodHBtX3B0LT50cG1fZmQsICZ0cG1fcHQtPnRwbV92ZXJzaW9uKSkgewotICAgICAgICAgZXJyb3JfcmVwb3J0KCInJXMnIGlzIG5vdCBhIFRQTSBkZXZpY2UuIiwKLSAgICAgICAgICAgICAgICAgICAgICB0cG1fcHQtPnRwbV9kZXYpOwotICAgICAgICAgZ290byBlcnJfY2xvc2VfdHBtZGV2OwotICAgICB9Ci0gCi0rICAgIGlmIChoYXZlX2N1c2UpIHsKLSsgICAgICAgIGlmICh0cG1fcGFzc3Rocm91Z2hfY3VzZV9jaGVja19jYXBzKHRwbV9wdCkpIHsKLSsgICAgICAgICAgICBnb3RvIGVycl9jbG9zZV90cG1kZXY7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsKLSsKLSAgICAgcmV0dXJuIDA7Ci0gCi0gIGVycl9jbG9zZV90cG1kZXY6Ci0rICAgIHRwbV9wYXNzdGhyb3VnaF9zaHV0ZG93bih0cG1fcHQpOwotKwotICAgICBxZW11X2Nsb3NlKHRwbV9wdC0+dHBtX2ZkKTsKLSAgICAgdHBtX3B0LT50cG1fZmQgPSAtMTsKLSAKLUBAIC00OTEsNiArNzAwLDggQEAgc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX2Rlc3Ryb3koVFBNQmFja2VuZCAqdGIpCi0gCi0gICAgIHRwbV9iYWNrZW5kX3RocmVhZF9lbmQoJnRwbV9wdC0+dGJ0KTsKLSAKLSsgICAgdHBtX3Bhc3N0aHJvdWdoX3NodXRkb3duKHRwbV9wdCk7Ci0rCi0gICAgIHFlbXVfY2xvc2UodHBtX3B0LT50cG1fZmQpOwotICAgICBxZW11X2Nsb3NlKHRwbV9wdC0+Y2FuY2VsX2ZkKTsKLSAKLUBAIC01NjQsMyArNzc1LDQ0IEBAIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9yZWdpc3Rlcih2b2lkKQotIH0KLSAKLSB0eXBlX2luaXQodHBtX3Bhc3N0aHJvdWdoX3JlZ2lzdGVyKQotKwotKy8qIENVU0UgVFBNICovCi0rc3RhdGljIGNvbnN0IGNoYXIgKnRwbV9wYXNzdGhyb3VnaF9jdXNlX2NyZWF0ZV9kZXNjKHZvaWQpCi0rewotKyAgICByZXR1cm4gIkNVU0UgVFBNIGJhY2tlbmQgZHJpdmVyIjsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IFRQTURyaXZlck9wcyB0cG1fY3VzZV9kcml2ZXIgPSB7Ci0rICAgIC50eXBlICAgICAgICAgICAgICAgICAgICAgPSBUUE1fVFlQRV9DVVNFX1RQTSwKLSsgICAgLm9wdHMgICAgICAgICAgICAgICAgICAgICA9IHRwbV9wYXNzdGhyb3VnaF9jbWRsaW5lX29wdHMsCi0rICAgIC5kZXNjICAgICAgICAgICAgICAgICAgICAgPSB0cG1fcGFzc3Rocm91Z2hfY3VzZV9jcmVhdGVfZGVzYywKLSsgICAgLmNyZWF0ZSAgICAgICAgICAgICAgICAgICA9IHRwbV9wYXNzdGhyb3VnaF9jcmVhdGUsCi0rICAgIC5kZXN0cm95ICAgICAgICAgICAgICAgICAgPSB0cG1fcGFzc3Rocm91Z2hfZGVzdHJveSwKLSsgICAgLmluaXQgICAgICAgICAgICAgICAgICAgICA9IHRwbV9wYXNzdGhyb3VnaF9pbml0LAotKyAgICAuc3RhcnR1cF90cG0gICAgICAgICAgICAgID0gdHBtX3Bhc3N0aHJvdWdoX3N0YXJ0dXBfdHBtLAotKyAgICAucmVhbGxvY19idWZmZXIgICAgICAgICAgID0gdHBtX3Bhc3N0aHJvdWdoX3JlYWxsb2NfYnVmZmVyLAotKyAgICAucmVzZXQgICAgICAgICAgICAgICAgICAgID0gdHBtX3Bhc3N0aHJvdWdoX3Jlc2V0LAotKyAgICAuaGFkX3N0YXJ0dXBfZXJyb3IgICAgICAgID0gdHBtX3Bhc3N0aHJvdWdoX2dldF9zdGFydHVwX2Vycm9yLAotKyAgICAuZGVsaXZlcl9yZXF1ZXN0ICAgICAgICAgID0gdHBtX3Bhc3N0aHJvdWdoX2RlbGl2ZXJfcmVxdWVzdCwKLSsgICAgLmNhbmNlbF9jbWQgICAgICAgICAgICAgICA9IHRwbV9wYXNzdGhyb3VnaF9jYW5jZWxfY21kLAotKyAgICAuZ2V0X3RwbV9lc3RhYmxpc2hlZF9mbGFnID0gdHBtX3Bhc3N0aHJvdWdoX2dldF90cG1fZXN0YWJsaXNoZWRfZmxhZywKLSsgICAgLnJlc2V0X3RwbV9lc3RhYmxpc2hlZF9mbGFnID0gdHBtX3Bhc3N0aHJvdWdoX3Jlc2V0X3RwbV9lc3RhYmxpc2hlZF9mbGFnLAotKyAgICAuZ2V0X3RwbV92ZXJzaW9uICAgICAgICAgID0gdHBtX3Bhc3N0aHJvdWdoX2dldF90cG1fdmVyc2lvbiwKLSt9OwotKwotK3N0YXRpYyBjb25zdCBUeXBlSW5mbyB0cG1fY3VzZV9pbmZvID0gewotKyAgICAubmFtZSA9IFRZUEVfVFBNX0NVU0UsCi0rICAgIC5wYXJlbnQgPSBUWVBFX1RQTV9CQUNLRU5ELAotKyAgICAuaW5zdGFuY2Vfc2l6ZSA9IHNpemVvZihUUE1QYXNzdGhydVN0YXRlKSwKLSsgICAgLmNsYXNzX2luaXQgPSB0cG1fcGFzc3Rocm91Z2hfY2xhc3NfaW5pdCwKLSsgICAgLmluc3RhbmNlX2luaXQgPSB0cG1fcGFzc3Rocm91Z2hfaW5zdF9pbml0LAotKyAgICAuaW5zdGFuY2VfZmluYWxpemUgPSB0cG1fcGFzc3Rocm91Z2hfaW5zdF9maW5hbGl6ZSwKLSt9OwotKwotK3N0YXRpYyB2b2lkIHRwbV9jdXNlX3JlZ2lzdGVyKHZvaWQpCi0rewotKyAgICB0eXBlX3JlZ2lzdGVyX3N0YXRpYygmdHBtX2N1c2VfaW5mbyk7Ci0rICAgIHRwbV9yZWdpc3Rlcl9kcml2ZXIoJnRwbV9jdXNlX2RyaXZlcik7Ci0rfQotKwotK3R5cGVfaW5pdCh0cG1fY3VzZV9yZWdpc3RlcikKLWRpZmYgLS1naXQgYS9xYXBpLXNjaGVtYS5qc29uIGIvcWFwaS1zY2hlbWEuanNvbgotaW5kZXggNTY1ODcyM2IzNy4uNTMxMjBkMGY2MyAxMDA2NDQKLS0tLSBhL3FhcGktc2NoZW1hLmpzb24KLSsrKyBiL3FhcGktc2NoZW1hLmpzb24KLUBAIC0zNTIyLDEwICszNTIyLDEyIEBACi0gIyBBbiBlbnVtZXJhdGlvbiBvZiBUUE0gdHlwZXMKLSAjCi0gIyBAcGFzc3Rocm91Z2g6IFRQTSBwYXNzdGhyb3VnaCB0eXBlCi0rIyBAY3VzZS10cG06IENVU0UgVFBNIHR5cGUKLSsjICAgICAgICAgICAgU2luY2U6IDIuNgotICMKLSAjIFNpbmNlOiAxLjUKLSAjIwotLXsgJ2VudW0nOiAnVHBtVHlwZScsICdkYXRhJzogWyAncGFzc3Rocm91Z2gnIF0gfQotK3sgJ2VudW0nOiAnVHBtVHlwZScsICdkYXRhJzogWyAncGFzc3Rocm91Z2gnLCAnY3VzZS10cG0nIF0gfQotIAotICMjCi0gIyBAcXVlcnktdHBtLXR5cGVzOgotQEAgLTM1NTQsNiArMzU1NiwxNyBAQAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcqY2FuY2VsLXBhdGgnIDogJ3N0cid9IH0KLSAKLSAjIwotKyMgQFRQTUN1c2VPcHRpb25zOgotKyMKLSsjIEluZm9ybWF0aW9uIGFib3V0IHRoZSBDVVNFIFRQTSB0eXBlCi0rIwotKyMgQHBhdGg6IHN0cmluZyBkZXNjcmliaW5nIHRoZSBwYXRoIHVzZWQgZm9yIGFjY2Vzc2luZyB0aGUgVFBNIGRldmljZQotKyMKLSsjIFNpbmNlOiAyLjYKLSsjIwotK3sgJ3N0cnVjdCc6ICdUUE1DdXNlT3B0aW9ucycsICdkYXRhJzogeyAncGF0aCcgOiAnc3RyJ319Ci0rCi0rIyMKLSAjIEBUcG1UeXBlT3B0aW9uczoKLSAjCi0gIyBBIHVuaW9uIHJlZmVyZW5jaW5nIGRpZmZlcmVudCBUUE0gYmFja2VuZCB0eXBlcycgY29uZmlndXJhdGlvbiBvcHRpb25zCi1AQCAtMzU2Myw3ICszNTc2LDggQEAKLSAjIFNpbmNlOiAxLjUKLSAjIwotIHsgJ3VuaW9uJzogJ1RwbVR5cGVPcHRpb25zJywKLS0gICAnZGF0YSc6IHsgJ3Bhc3N0aHJvdWdoJyA6ICdUUE1QYXNzdGhyb3VnaE9wdGlvbnMnIH0gfQotKyAgICdkYXRhJzogeyAncGFzc3Rocm91Z2gnIDogJ1RQTVBhc3N0aHJvdWdoT3B0aW9ucycsCi0rICAgICAgICAgICAgICdjdXNlLXRwbScgOiAnVFBNQ3VzZU9wdGlvbnMnIH0gfQotIAotICMjCi0gIyBAVHBtSW5mbzoKLWRpZmYgLS1naXQgYS9xZW11LW9wdGlvbnMuaHggYi9xZW11LW9wdGlvbnMuaHgKLWluZGV4IGE3MWFhZjhlYTguLmUwZjFkOGU2NzYgMTAwNjQ0Ci0tLS0gYS9xZW11LW9wdGlvbnMuaHgKLSsrKyBiL3FlbXUtb3B0aW9ucy5oeAotQEAgLTI3NjMsNyArMjc2MywxMCBAQCBERUYoInRwbWRldiIsIEhBU19BUkcsIFFFTVVfT1BUSU9OX3RwbWRldiwgXAotICAgICAiLXRwbWRldiBwYXNzdGhyb3VnaCxpZD1pZFsscGF0aD1wYXRoXVssY2FuY2VsLXBhdGg9cGF0aF1cbiIKLSAgICAgIiAgICAgICAgICAgICAgICB1c2UgcGF0aCB0byBwcm92aWRlIHBhdGggdG8gYSBjaGFyYWN0ZXIgZGV2aWNlOyBkZWZhdWx0IGlzIC9kZXYvdHBtMFxuIgotICAgICAiICAgICAgICAgICAgICAgIHVzZSBjYW5jZWwtcGF0aCB0byBwcm92aWRlIHBhdGggdG8gVFBNJ3MgY2FuY2VsIHN5c2ZzIGVudHJ5OyBpZlxuIgotLSAgICAiICAgICAgICAgICAgICAgIG5vdCBwcm92aWRlZCBpdCB3aWxsIGJlIHNlYXJjaGVkIGZvciBpbiAvc3lzL2NsYXNzL21pc2MvdHBtPy9kZXZpY2VcbiIsCi0rICAgICIgICAgICAgICAgICAgICAgbm90IHByb3ZpZGVkIGl0IHdpbGwgYmUgc2VhcmNoZWQgZm9yIGluIC9zeXMvY2xhc3MvbWlzYy90cG0/L2RldmljZVxuIgotKyAgICAiLXRwbWRldiBjdXNlLXRwbSxpZD1pZCxwYXRoPXBhdGhcbiIKLSsgICAgIiAgICAgICAgICAgICAgICB1c2UgcGF0aCB0byBwcm92aWRlIHBhdGggdG8gYSBjaGFyYWN0ZXIgZGV2aWNlIHRvIHRhbGsgdG8gdGhlXG4iCi0rICAgICIgICAgICAgICAgICAgICAgVFBNIGVtdWxhdG9yIHByb3ZpZGluZyBhIENVU0UgaW50ZXJmYWNlXG4iLAotICAgICBRRU1VX0FSQ0hfQUxMKQotIFNURVhJCi0gCi1AQCAtMjc3Miw4ICsyNzc1LDggQEAgVGhlIGdlbmVyYWwgZm9ybSBvZiBhIFRQTSBkZXZpY2Ugb3B0aW9uIGlzOgotIAotIEBpdGVtIC10cG1kZXYgQHZhcntiYWNrZW5kfSAsaWQ9QHZhcntpZH0gWyxAdmFye29wdGlvbnN9XQotIEBmaW5kZXggLXRwbWRldgotLUJhY2tlbmQgdHlwZSBtdXN0IGJlOgotLUBvcHRpb257cGFzc3Rocm91Z2h9LgotK0JhY2tlbmQgdHlwZSBtdXN0IGJlIGVpdGhlciBvbmUgb2YgdGhlIGZvbGxvd2luZzoKLStAb3B0aW9ue3Bhc3N0aHJvdWdofSwgQG9wdGlvbntjdXNlLXRwbX0uCi0gCi0gVGhlIHNwZWNpZmljIGJhY2tlbmQgdHlwZSB3aWxsIGRldGVybWluZSB0aGUgYXBwbGljYWJsZSBvcHRpb25zLgotIFRoZSBAY29kZXstdHBtZGV2fSBvcHRpb24gY3JlYXRlcyB0aGUgVFBNIGJhY2tlbmQgYW5kIHJlcXVpcmVzIGEKLUBAIC0yODIzLDYgKzI4MjYsMTggQEAgVG8gY3JlYXRlIGEgcGFzc3Rocm91Z2ggVFBNIHVzZSB0aGUgZm9sbG93aW5nIHR3byBvcHRpb25zOgotIE5vdGUgdGhhdCB0aGUgQGNvZGV7LXRwbWRldn0gaWQgaXMgQGNvZGV7dHBtMH0gYW5kIGlzIHJlZmVyZW5jZWQgYnkKLSBAY29kZXt0cG1kZXY9dHBtMH0gaW4gdGhlIGRldmljZSBvcHRpb24uCi0gCi0rQGl0ZW0gLXRwbWRldiBjdXNlLXRwbSwgaWQ9QHZhcntpZH0sIHBhdGg9QHZhcntwYXRofQotKwotKyhMaW51eC1ob3N0IG9ubHkpIEVuYWJsZSBhY2Nlc3MgdG8gYSBUUE0gZW11bGF0b3Igd2l0aCBhIENVU0UgaW50ZXJmYWNlLgotKwotK0BvcHRpb257cGF0aH0gc3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBDVVNFIFRQTSBjaGFyYWN0ZXIgZGV2aWNlLgotKwotK1RvIGNyZWF0ZSBhIGJhY2tlbmQgZGV2aWNlIGFjY2Vzc2luZyB0aGUgQ1VTRSBUUE0gZW11bGF0b3IgdXNpbmcgL2Rldi92dHBtCi0rdXNlIHRoZSBmb2xsb3dpbmcgdHdvIG9wdGlvbnM6Ci0rQGV4YW1wbGUKLSstdHBtZGV2IGN1c2UtdHBtLGlkPXRwbTAscGF0aD0vZGV2L3Z0cG0gLWRldmljZSB0cG0tdGlzLHRwbWRldj10cG0wCi0rQGVuZCBleGFtcGxlCi0rCi0gQGVuZCB0YWJsZQotIAotIEVURVhJCi1kaWZmIC0tZ2l0IGEvdHBtLmMgYi90cG0uYwotaW5kZXggOWE3YzcxMTRkMy4uNWVjMjM3MzI4NiAxMDA2NDQKLS0tLSBhL3RwbS5jCi0rKysgYi90cG0uYwotQEAgLTI1LDcgKzI1LDcgQEAgc3RhdGljIFFMSVNUX0hFQUQoLCBUUE1CYWNrZW5kKSB0cG1fYmFja2VuZHMgPQotIAotIAotICNkZWZpbmUgVFBNX01BWF9NT0RFTFMgICAgICAxCi0tI2RlZmluZSBUUE1fTUFYX0RSSVZFUlMgICAgIDEKLSsjZGVmaW5lIFRQTV9NQVhfRFJJVkVSUyAgICAgMgotIAotIHN0YXRpYyBUUE1Ecml2ZXJPcHMgY29uc3QgKmJlX2RyaXZlcnNbVFBNX01BWF9EUklWRVJTXSA9IHsKLSAgICAgTlVMTCwKLUBAIC0yNzIsNiArMjcyLDE1IEBAIHN0YXRpYyBUUE1JbmZvICpxbXBfcXVlcnlfdHBtX2luc3QoVFBNQmFja2VuZCAqZHJ2KQotICAgICAgICAgICAgIHRwby0+aGFzX2NhbmNlbF9wYXRoID0gdHJ1ZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFRQTV9UWVBFX0NVU0VfVFBNOgotKyAgICAgICAgcmVzLT5vcHRpb25zLT50eXBlID0gVFBNX1RZUEVfT1BUSU9OU19LSU5EX0NVU0VfVFBNOwotKyAgICAgICAgdHBvID0gZ19uZXcwKFRQTVBhc3N0aHJvdWdoT3B0aW9ucywgMSk7Ci0rICAgICAgICByZXMtPm9wdGlvbnMtPnUucGFzc3Rocm91Z2guZGF0YSA9IHRwbzsKLSsgICAgICAgIGlmIChkcnYtPnBhdGgpIHsKLSsgICAgICAgICAgICB0cG8tPnBhdGggPSBnX3N0cmR1cChkcnYtPnBhdGgpOwotKyAgICAgICAgICAgIHRwby0+aGFzX3BhdGggPSB0cnVlOwotKyAgICAgICAgfQotKyAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgVFBNX1RZUEVfX01BWDoKLSAgICAgICAgIGJyZWFrOwotICAgICB9Ci0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAxLWFybS10cmFuc2xhdGUtYTY0LXRyZWF0LURJU0FTX1VQREFURS1hcy12YXJpYW50LW9mLUQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAxLWFybS10cmFuc2xhdGUtYTY0LXRyZWF0LURJU0FTX1VQREFURS1hcy12YXJpYW50LW9mLUQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkwY2FlNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtYXJtLXRyYW5zbGF0ZS1hNjQtdHJlYXQtRElTQVNfVVBEQVRFLWFzLXZhcmlhbnQtb2YtRC5wYXRjaApAQCAtMCwwICsxLDY3IEBACitGcm9tIGE3NWE1MmQ2MjQxOGRhZmU0NjJiZTRmZTMwNDg1NTAxZDEwMTBiYjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KK0RhdGU6IEZyaSwgMjMgTWFyIDIwMTggMTg6MjY6NDUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gYXJtL3RyYW5zbGF0ZS1hNjQ6IHRyZWF0IERJU0FTX1VQREFURSBhcyB2YXJpYW50IG9mCisgRElTQVNfRVhJVAorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitJbiBPRSBwcm9qZWN0IDQuMTUgbGludXgga2VybmVsIGJvb3QgaGFuZyB3YXMgb2JzZXJ2ZWQgdW5kZXIKK3NpbmdsZSBjcHUgYWFyY2g2NCBxZW11LiBLZXJuZWwgY29kZSB3YXMgaW4gYSBsb29wIHdhaXRpbmcgZm9yCit2dGltZXIgYXJyaXZhbCwgc3Bpbm5pbmcgaW4gVEMgZ2VuZXJhdGVkIGJsb2Nrcywgd2hpbGUgaW50ZXJydXB0Cit3YXMgcGVuZGluZyB1bnByb2Nlc3NlZC4gVGhpcyBoYXBwZW5lZCBiZWNhdXNlIHdoZW4gcWVtdSB0cmllZCB0bworaGFuZGxlIHZ0aW1lciBpbnRlcnJ1cHQgdGFyZ2V0IGhhZCBpbnRlcnJ1cHRzIGRpc2FibGVkLCBhcworcmVzdWx0IGZsYWcgaW5kaWNhdGluZyBUQ0cgZXhpdCwgY3B1LT5pY291bnRfZGVjci51MTYuaGlnaCwKK3dhcyBjbGVhcmVkIGJ1dCBhcm1fY3B1X2V4ZWNfaW50ZXJydXB0IGZ1bmN0aW9uIGRpZCBub3QgY2FsbAorYXJtX2NwdV9kb19pbnRlcnJ1cHQgdG8gcHJvY2VzcyBpbnRlcnJ1cHQuIExhdGVyIHdoZW4gdGFyZ2V0CityZWVuYWJsZWQgaW50ZXJydXB0cywgaXQgaGFwcGVuZWQgd2l0aG91dCBleGl0IGludG8gbWFpbiBsb29wLCBzbworZm9sbG93aW5nIGNvZGUgdGhhdCB3YWl0ZWQgZm9yIHJlc3VsdCBvZiBpbnRlcnJ1cHQgZXhlY3V0aW9uCitydW4gaW4gaW5maW5pdGUgbG9vcC4KKworVG8gc29sdmUgdGhlIHByb2JsZW0gaW5zdHJ1Y3Rpb25zIHRoYXQgb3BlcmF0ZSBvbiBDUFUgc3lzIHN0YXRlCisoaS5lIGVuYWJsZS9kaXNhYmxlIGludGVycnVwdCksIGFuZCBtYXJrZWQgYXMgRElTQVNfVVBEQVRFLAorc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXMgRElTQVNfRVhJVCB2YXJpYW50LCBhbmQgc2hvdWxkIGJlCitmb3JjZWQgdG8gZXhpdCBiYWNrIHRvIG1haW4gbG9vcCBzbyBxZW11IHdpbGwgaGF2ZSBhIGNoYW5jZQorcHJvY2Vzc2luZyBwZW5kaW5nIENQVSBzdGF0ZSB1cGRhdGVzLCBpbmNsdWRpbmcgcGVuZGluZworaW50ZXJydXB0cy4KKworVGhpcyBjaGFuZ2UgYnJpbmdzIGNvbnNpc3RlbmN5IHdpdGggaG93IERJU0FTX1VQREFURSBpcyB0cmVhdGVkCitpbiBhYXJjaDMyIGNhc2UuCisKK0NDOiBQZXRlciBNYXlkZWxsIDxwZXRlci5tYXlkZWxsQGxpbmFyby5vcmc+CitDQzogQWxleCBCZW5uw6llIDxhbGV4LmJlbm5lZUBsaW5hcm8ub3JnPgorQ0M6IHFlbXUtc3RhYmxlQG5vbmdudS5vcmcKK1N1Z2dlc3RlZC1ieTogUGV0ZXIgTWF5ZGVsbCA8cGV0ZXIubWF5ZGVsbEBsaW5hcm8ub3JnPgorU2lnbmVkLW9mZi1ieTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+CitSZXZpZXdlZC1ieTogUmljaGFyZCBIZW5kZXJzb24gPHJpY2hhcmQuaGVuZGVyc29uQGxpbmFyby5vcmc+CitNZXNzYWdlLWlkOiAxNTIxNTI2MzY4LTE5OTYtMS1naXQtc2VuZC1lbWFpbC1rYW1lbnNreUBjaXNjby5jb20KK1NpZ25lZC1vZmYtYnk6IFBldGVyIE1heWRlbGwgPHBldGVyLm1heWRlbGxAbGluYXJvLm9yZz4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKy0tLQorIHRhcmdldC9hcm0vdHJhbnNsYXRlLWE2NC5jIHwgNiArKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGFyZ2V0L2FybS90cmFuc2xhdGUtYTY0LmMgYi90YXJnZXQvYXJtL3RyYW5zbGF0ZS1hNjQuYworaW5kZXggMzFmZjA0Ny4uMzI3NTEzZSAxMDA2NDQKKy0tLSBhL3RhcmdldC9hcm0vdHJhbnNsYXRlLWE2NC5jCisrKysgYi90YXJnZXQvYXJtL3RyYW5zbGF0ZS1hNjQuYworQEAgLTEzMzc4LDEyICsxMzM3OCwxMiBAQCBzdGF0aWMgdm9pZCBhYXJjaDY0X3RyX3RiX3N0b3AoRGlzYXNDb250ZXh0QmFzZSAqZGNiYXNlLCBDUFVTdGF0ZSAqY3B1KQorICAgICAgICAgY2FzZSBESVNBU19VUERBVEU6CisgICAgICAgICAgICAgZ2VuX2E2NF9zZXRfcGNfaW0oZGMtPnBjKTsKKyAgICAgICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KKy0gICAgICAgIGNhc2UgRElTQVNfSlVNUDoKKy0gICAgICAgICAgICB0Y2dfZ2VuX2xvb2t1cF9hbmRfZ290b19wdHIoKTsKKy0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgIGNhc2UgRElTQVNfRVhJVDoKKyAgICAgICAgICAgICB0Y2dfZ2VuX2V4aXRfdGIoMCk7CisgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICBjYXNlIERJU0FTX0pVTVA6CisrICAgICAgICAgICAgdGNnX2dlbl9sb29rdXBfYW5kX2dvdG9fcHRyKCk7CisrICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICBjYXNlIERJU0FTX05PUkVUVVJOOgorICAgICAgICAgY2FzZSBESVNBU19TV0k6CisgICAgICAgICAgICAgYnJlYWs7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDItSW50cm9kdWNlLWNvbmRpdGlvbi10by1ub3RpZnktd2FpdGVycy1vZi1jb21wbGV0ZWQtYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDItSW50cm9kdWNlLWNvbmRpdGlvbi10by1ub3RpZnktd2FpdGVycy1vZi1jb21wbGV0ZWQtYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg4Yzk4ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAyLUludHJvZHVjZS1jb25kaXRpb24tdG8tbm90aWZ5LXdhaXRlcnMtb2YtY29tcGxldGVkLWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi1Gcm9tIGI1ZmZkM2FhNGU5YmQ0ZWRiMDljYzg0YzQ2Zjc4ZGE3MjY5N2E5NDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTdGVmYW4gQmVyZ2VyIDxzdGVmYW5iQGxpbnV4LnZuZXQuaWJtLmNvbT4KLURhdGU6IFNhdCwgMzEgRGVjIDIwMTYgMTE6MjM6MzIgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzRdIEludHJvZHVjZSBjb25kaXRpb24gdG8gbm90aWZ5IHdhaXRlcnMgb2YgY29tcGxldGVkCi0gY29tbWFuZAotCi1JbnRyb2R1Y2UgYSBsb2NrIGFuZCBhIGNvbmRpdGlvbiB0byBub3RpZnkgYW55b25lIHdhaXRpbmcgZm9yIHRoZSBjb21wbGV0aW9uCi1vZiB0aGUgZXhlY3V0aW9uIG9mIGEgVFBNIGNvbW1hbmQgYnkgdGhlIGJhY2tlbmQgKHRocmVhZCkuIFRoZSBiYWNrZW5kCi11c2VzIHRoZSBjb25kaXRpb24gdG8gc2lnbmFsIGFueW9uZSB3YWl0aW5nIGZvciBjb21tYW5kIGNvbXBsZXRpb24uCi1XZSBuZWVkIHRvIHBsYWNlIHRoZSBjb25kaXRpb24gaW4gdHdvIGxvY2F0aW9uczogb25lIGlzIGludm9rZWQgYnkgdGhlCi1iYWNrZW5kIHRocmVhZCwgdGhlIG90aGVyIGJ5IHRoZSBib3R0b20gaGFsZiB0aHJlYWQuCi1XZSB3aWxsIHVzZSB0aGUgc2lnbmFsbGluZyB0byB3YWl0IGZvciBjb21tYW5kIGNvbXBsZXRpb24gYmVmb3JlIFZNCi1zdXNwZW5kLgotCi1TaWduZWQtb2ZmLWJ5OiBTdGVmYW4gQmVyZ2VyIDxzdGVmYW5iQGxpbnV4LnZuZXQuaWJtLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtodHRwczovL2xpc3RzLm5vbmdudS5vcmcvYXJjaGl2ZS9odG1sL3FlbXUtZGV2ZWwvMjAxNi0wNi9tc2cwMDI1Mi5odG1sXQotU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgotLS0tCi0gaHcvdHBtL3RwbV9pbnQuaCB8ICAzICsrKwotIGh3L3RwbS90cG1fdGlzLmMgfCAxNCArKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvaHcvdHBtL3RwbV9pbnQuaCBiL2h3L3RwbS90cG1faW50LmgKLWluZGV4IDZiMmM5Yzk1M2EuLjcwYmUxYWQ4ZDkgMTAwNjQ0Ci0tLS0gYS9ody90cG0vdHBtX2ludC5oCi0rKysgYi9ody90cG0vdHBtX2ludC5oCi1AQCAtMzAsNiArMzAsOSBAQCBzdHJ1Y3QgVFBNU3RhdGUgewotICAgICBjaGFyICpiYWNrZW5kOwotICAgICBUUE1CYWNrZW5kICpiZV9kcml2ZXI7Ci0gICAgIFRQTVZlcnNpb24gYmVfdHBtX3ZlcnNpb247Ci0rCi0rICAgIFFlbXVNdXRleCBzdGF0ZV9sb2NrOwotKyAgICBRZW11Q29uZCBjbWRfY29tcGxldGU7Ci0gfTsKLSAKLSAjZGVmaW5lIFRQTShvYmopIE9CSkVDVF9DSEVDSyhUUE1TdGF0ZSwgKG9iaiksIFRZUEVfVFBNX1RJUykKLWRpZmYgLS1naXQgYS9ody90cG0vdHBtX3Rpcy5jIGIvaHcvdHBtL3RwbV90aXMuYwotaW5kZXggMzgxZTcyNjZlYS4uMTRkOWU4M2VhMiAxMDA2NDQKLS0tLSBhL2h3L3RwbS90cG1fdGlzLmMKLSsrKyBiL2h3L3RwbS90cG1fdGlzLmMKLUBAIC0zNjgsNiArMzY4LDggQEAgc3RhdGljIHZvaWQgdHBtX3Rpc19yZWNlaXZlX2JoKHZvaWQgKm9wYXF1ZSkKLSAgICAgVFBNVElTRW11U3RhdGUgKnRpcyA9ICZzLT5zLnRpczsKLSAgICAgdWludDhfdCBsb2N0eSA9IHMtPmxvY3R5X251bWJlcjsKLSAKLSsgICAgcWVtdV9tdXRleF9sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKLSsKLSAgICAgdHBtX3Rpc19zdHNfc2V0KCZ0aXMtPmxvY1tsb2N0eV0sCi0gICAgICAgICAgICAgICAgICAgICBUUE1fVElTX1NUU19WQUxJRCB8IFRQTV9USVNfU1RTX0RBVEFfQVZBSUxBQkxFKTsKLSAgICAgdGlzLT5sb2NbbG9jdHldLnN0YXRlID0gVFBNX1RJU19TVEFURV9DT01QTEVUSU9OOwotQEAgLTM4NCw2ICszODYsMTAgQEAgc3RhdGljIHZvaWQgdHBtX3Rpc19yZWNlaXZlX2JoKHZvaWQgKm9wYXF1ZSkKLSAgICAgdHBtX3Rpc19yYWlzZV9pcnEocywgbG9jdHksCi0gICAgICAgICAgICAgICAgICAgICAgIFRQTV9USVNfSU5UX0RBVEFfQVZBSUxBQkxFIHwgVFBNX1RJU19JTlRfU1RTX1ZBTElEKTsKLSAjZW5kaWYKLSsKLSsgICAgLyogbm90aWZ5IG9mIGNvbXBsZXRlZCBjb21tYW5kICovCi0rICAgIHFlbXVfY29uZF9zaWduYWwoJnMtPmNtZF9jb21wbGV0ZSk7Ci0rICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKLSB9Ci0gCi0gLyoKLUBAIC00MDMsNiArNDA5LDExIEBAIHN0YXRpYyB2b2lkIHRwbV90aXNfcmVjZWl2ZV9jYihUUE1TdGF0ZSAqcywgdWludDhfdCBsb2N0eSwKLSAgICAgICAgIH0KLSAgICAgfQotIAotKyAgICBxZW11X211dGV4X2xvY2soJnMtPnN0YXRlX2xvY2spOwotKyAgICAvKiBub3RpZnkgb2YgY29tcGxldGVkIGNvbW1hbmQgKi8KLSsgICAgcWVtdV9jb25kX3NpZ25hbCgmcy0+Y21kX2NvbXBsZXRlKTsKLSsgICAgcWVtdV9tdXRleF91bmxvY2soJnMtPnN0YXRlX2xvY2spOwotKwotICAgICBxZW11X2JoX3NjaGVkdWxlKHRpcy0+YmgpOwotIH0KLSAKLUBAIC0xMDcyLDYgKzEwODMsOSBAQCBzdGF0aWMgdm9pZCB0cG1fdGlzX2luaXRmbihPYmplY3QgKm9iaikKLSAgICAgbWVtb3J5X3JlZ2lvbl9pbml0X2lvKCZzLT5tbWlvLCBPQkpFQ1QocyksICZ0cG1fdGlzX21lbW9yeV9vcHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzLCAidHBtLXRpcy1tbWlvIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTV9USVNfTlVNX0xPQ0FMSVRJRVMgPDwgVFBNX1RJU19MT0NBTElUWV9TSElGVCk7Ci0rCi0rICAgIHFlbXVfbXV0ZXhfaW5pdCgmcy0+c3RhdGVfbG9jayk7Ci0rICAgIHFlbXVfY29uZF9pbml0KCZzLT5jbWRfY29tcGxldGUpOwotIH0KLSAKLSBzdGF0aWMgdm9pZCB0cG1fdGlzX2NsYXNzX2luaXQoT2JqZWN0Q2xhc3MgKmtsYXNzLCB2b2lkICpkYXRhKQotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMy1JbnRyb2R1Y2UtY29uZGl0aW9uLWluLVRQTS1iYWNrZW5kLWZvci1ub3RpZmljYXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAzLUludHJvZHVjZS1jb25kaXRpb24taW4tVFBNLWJhY2tlbmQtZm9yLW5vdGlmaWNhdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU4ZjAxOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAzLUludHJvZHVjZS1jb25kaXRpb24taW4tVFBNLWJhY2tlbmQtZm9yLW5vdGlmaWNhdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLUZyb20gNzMyYThlMDQ2OTQ4ZmQ2MmIzMmNkMWRkNzZhNjc5OGViMWNhZjRkNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFN0ZWZhbiBCZXJnZXIgPHN0ZWZhbmJAbGludXgudm5ldC5pYm0uY29tPgotRGF0ZTogU2F0LCAzMSBEZWMgMjAxNiAxMToyMzozMiAtMDUwMAotU3ViamVjdDogW1BBVENIIDMvNF0gSW50cm9kdWNlIGNvbmRpdGlvbiBpbiBUUE0gYmFja2VuZCBmb3Igbm90aWZpY2F0aW9uCi0KLVRQTSBiYWNrZW5kcyB3aWxsIHN1c3BlbmQgaW5kZXBlbmRlbnRseSBvZiB0aGUgZnJvbnRlbmRzLiBBbHNvCi1oZXJlIHdlIG5lZWQgdG8gYmUgYWJsZSB0byB3YWl0IGZvciB0aGUgVFBNIGNvbW1hbmQgdG8gaGF2ZSBiZWVuCi1jb21wbGV0ZWx5IHByb2Nlc3NlZC4KLQotU2lnbmVkLW9mZi1ieTogU3RlZmFuIEJlcmdlciA8c3RlZmFuYkBsaW51eC52bmV0LmlibS5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbaHR0cHM6Ly9saXN0cy5ub25nbnUub3JnL2FyY2hpdmUvaHRtbC9xZW11LWRldmVsLzIwMTYtMDYvbXNnMDAyNTIuaHRtbF0KLVNpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KLS0tLQotIGh3L3RwbS90cG1fcGFzc3Rocm91Z2guYyB8IDIwICsrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYyBiL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYwotaW5kZXggMDUwZjJiYTg1MC4uNDQ3MzllYmFkMiAxMDA2NDQKLS0tLSBhL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYwotKysrIGIvaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jCi1AQCAtNzUsNiArNzUsMTAgQEAgc3RydWN0IFRQTVBhc3N0aHJ1U3RhdGUgewotICAgICBUUE1WZXJzaW9uIHRwbV92ZXJzaW9uOwotICAgICBwdG1fY2FwIGN1c2VfY2FwOyAvKiBjYXBhYmlsaXRpZXMgb2YgdGhlIENVU0UgVFBNICovCi0gICAgIHVpbnQ4X3QgY3VyX2xvY3R5X251bWJlcjsgLyogbGFzdCBzZXQgbG9jYWxpdHkgKi8KLSsKLSsgICAgUWVtdU11dGV4IHN0YXRlX2xvY2s7Ci0rICAgIFFlbXVDb25kIGNtZF9jb21wbGV0ZTsgIC8qIHNpbmduYWxlZCBvbmNlIHRwbV9idXN5IGlzIGZhbHNlICovCi0rICAgIGJvb2wgdHBtX2J1c3k7Ci0gfTsKLSAKLSB0eXBlZGVmIHN0cnVjdCBUUE1QYXNzdGhydVN0YXRlIFRQTVBhc3N0aHJ1U3RhdGU7Ci1AQCAtMjc0LDYgKzI3OCwxMSBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfd29ya2VyX3RocmVhZChncG9pbnRlciBkYXRhLAotICAgICAgICAgdGhyX3Bhcm1zLT5yZWN2X2RhdGFfY2FsbGJhY2sodGhyX3Bhcm1zLT50cG1fc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJfcGFybXMtPnRwbV9zdGF0ZS0+bG9jdHlfbnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZnRlc3RfZG9uZSk7Ci0rICAgICAgICAvKiByZXN1bHQgZGVsaXZlcmVkICovCi0rICAgICAgICBxZW11X211dGV4X2xvY2soJnRwbV9wdC0+c3RhdGVfbG9jayk7Ci0rICAgICAgICB0cG1fcHQtPnRwbV9idXN5ID0gZmFsc2U7Ci0rICAgICAgICBxZW11X2NvbmRfc2lnbmFsKCZ0cG1fcHQtPmNtZF9jb21wbGV0ZSk7Ci0rICAgICAgICBxZW11X211dGV4X3VubG9jaygmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFRQTV9CQUNLRU5EX0NNRF9JTklUOgotICAgICBjYXNlIFRQTV9CQUNLRU5EX0NNRF9FTkQ6Ci1AQCAtNDAxLDYgKzQxMCw3IEBAIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9yZXNldChUUE1CYWNrZW5kICp0YikKLSAgICAgdHBtX2JhY2tlbmRfdGhyZWFkX2VuZCgmdHBtX3B0LT50YnQpOwotIAotICAgICB0cG1fcHQtPmhhZF9zdGFydHVwX2Vycm9yID0gZmFsc2U7Ci0rICAgIHRwbV9wdC0+dHBtX2J1c3kgPSBmYWxzZTsKLSB9Ci0gCi0gc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfaW5pdChUUE1CYWNrZW5kICp0YiwgVFBNU3RhdGUgKnMsCi1AQCAtNDc4LDYgKzQ4OCwxMSBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfZGVsaXZlcl9yZXF1ZXN0KFRQTUJhY2tlbmQgKnRiKQotIHsKLSAgICAgVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0ID0gVFBNX1BBU1NUSFJPVUdIKHRiKTsKLSAKLSsgICAgLyogVFBNIGNvbnNpZGVyZWQgYnVzeSBvbmNlIFRQTSBSZXF1ZXN0IHNjaGVkdWxlZCBmb3IgcHJvY2Vzc2luZyAqLwotKyAgICBxZW11X211dGV4X2xvY2soJnRwbV9wdC0+c3RhdGVfbG9jayk7Ci0rICAgIHRwbV9wdC0+dHBtX2J1c3kgPSB0cnVlOwotKyAgICBxZW11X211dGV4X3VubG9jaygmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKLSsKLSAgICAgdHBtX2JhY2tlbmRfdGhyZWFkX2RlbGl2ZXJfcmVxdWVzdCgmdHBtX3B0LT50YnQpOwotIH0KLSAKLUBAIC03NDYsNiArNzYxLDExIEBAIHN0YXRpYyBjb25zdCBUUE1Ecml2ZXJPcHMgdHBtX3Bhc3N0aHJvdWdoX2RyaXZlciA9IHsKLSAKLSBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfaW5zdF9pbml0KE9iamVjdCAqb2JqKQotIHsKLSsgICAgVFBNQmFja2VuZCAqdGIgPSBUUE1fQkFDS0VORChvYmopOwotKyAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOwotKwotKyAgICBxZW11X211dGV4X2luaXQoJnRwbV9wdC0+c3RhdGVfbG9jayk7Ci0rICAgIHFlbXVfY29uZF9pbml0KCZ0cG1fcHQtPmNtZF9jb21wbGV0ZSk7Ci0gfQotIAotIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9pbnN0X2ZpbmFsaXplKE9iamVjdCAqb2JqKQotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNC1BZGQtc3VwcG9ydC1mb3ItVk0tc3VzcGVuZC1yZXN1bWUtZm9yLVRQTS1USVMtdjIuOS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDQtQWRkLXN1cHBvcnQtZm9yLVZNLXN1c3BlbmQtcmVzdW1lLWZvci1UUE0tVElTLXYyLjkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxZGJhZmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNC1BZGQtc3VwcG9ydC1mb3ItVk0tc3VzcGVuZC1yZXN1bWUtZm9yLVRQTS1USVMtdjIuOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcxOSArMCwwIEBACi1Gcm9tIDVlOWRkOTA2M2Y1MTQ0NDdlYTRmNTQwNDY3OTNmNGYwMWMyOTdlZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTdGVmYW4gQmVyZ2VyIDxzdGVmYW5iQGxpbnV4LnZuZXQuaWJtLmNvbT4KLURhdGU6IFNhdCwgMzEgRGVjIDIwMTYgMTE6MjM6MzIgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCA0LzRdIEFkZCBzdXBwb3J0IGZvciBWTSBzdXNwZW5kL3Jlc3VtZSBmb3IgVFBNIFRJUwotCi1FeHRlbmQgdGhlIFRQTSBUSVMgY29kZSB0byBzdXBwb3J0IHN1c3BlbmQvcmVzdW1lLiBJbiBjYXNlIGEgY29tbWFuZAotaXMgYmVpbmcgcHJvY2Vzc2VkIGJ5IHRoZSBleHRlcm5hbCBUUE0gd2hlbiBzdXNwZW5kaW5nLCB3YWl0IGZvciB0aGUgY29tbWFuZAotdG8gY29tcGxldGUgdG8gY2F0Y2ggdGhlIHJlc3VsdC4gSW4gY2FzZSB0aGUgYm90dG9tIGhhbGYgZGlkIG5vdCBydW4sCi1ydW4gdGhlIG9uZSBmdW5jdGlvbiB0aGUgYm90dG9tIGhhbGYgaXMgc3VwcG9zZWQgdG8gcnVuLiBUaGlzIHRoZW4KLW1ha2VzIHRoZSByZXN1bWUgb3BlcmF0aW9uIHdvcmsuCi0KLVRoZSBwYXNzdGhyb3VnaCBiYWNrZW5kIGRvZXMgbm90IHN1cHBvcnQgc3VzcGVuZC9yZXN1bWUgb3BlcmF0aW9uCi1hbmQgaXMgdGhlcmVmb3JlIGJsb2NrZWQgZnJvbSBzdXNwZW5kL3Jlc3VtZSBhbmQgbWlncmF0aW9uLgotCi1UaGUgQ1VTRSBUUE0ncyBzdXBwb3J0ZWQgY2FwYWJpbGl0aWVzIGFyZSB0ZXN0ZWQgYW5kIGlmIHN1ZmZpY2llbnQKLWNhcGFiaWxpdGllcyBhcmUgaW1wbGVtZW50ZWQsIHN1c3BlbmQvcmVzdW1lLCBzbmFwc2hvdHRpbmcgYW5kCi1taWdyYXRpb24gYXJlIHN1cHBvcnRlZCBieSB0aGUgQ1VTRSBUUE0uCi0KLVNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBCZXJnZXIgPHN0ZWZhbmJAbGludXgudm5ldC5pYm0uY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2h0dHBzOi8vbGlzdHMubm9uZ251Lm9yZy9hcmNoaXZlL2h0bWwvcWVtdS1kZXZlbC8yMDE2LTA2L21zZzAwMjUyLmh0bWxdCi1TaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+Ci0tLS0KLSBody90cG0vdHBtX3Bhc3N0aHJvdWdoLmMgICAgIHwgMTMwICsrKysrKysrKysrKysrKysrKysrKysrLS0KLSBody90cG0vdHBtX3Rpcy5jICAgICAgICAgICAgIHwgMTM3ICsrKysrKysrKysrKysrKysrKysrKysrKystCi0gaHcvdHBtL3RwbV90aXMuaCAgICAgICAgICAgICB8ICAgMiArCi0gaHcvdHBtL3RwbV91dGlsLmMgICAgICAgICAgICB8IDIyMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gaHcvdHBtL3RwbV91dGlsLmggICAgICAgICAgICB8ICAgNyArKwotIGluY2x1ZGUvc3lzZW11L3RwbV9iYWNrZW5kLmggfCAgMTIgKysrCi0gNiBmaWxlcyBjaGFuZ2VkLCA1MDMgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYyBiL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYwotaW5kZXggNDQ3MzllYmFkMi4uYmM4MDcyZDBiYyAxMDA2NDQKLS0tLSBhL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYwotKysrIGIvaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jCi1AQCAtMzQsNiArMzQsOCBAQAotICNpbmNsdWRlICJ0cG1fdGlzLmgiCi0gI2luY2x1ZGUgInRwbV91dGlsLmgiCi0gI2luY2x1ZGUgInRwbV9pb2N0bC5oIgotKyNpbmNsdWRlICJtaWdyYXRpb24vbWlncmF0aW9uLmgiCi0rI2luY2x1ZGUgInFhcGkvZXJyb3IuaCIKLSAKLSAjZGVmaW5lIERFQlVHX1RQTSAwCi0gCi1AQCAtNDksNiArNTEsNyBAQAotICNkZWZpbmUgVFlQRV9UUE1fQ1VTRSAidHBtLWN1c2UiCi0gCi0gc3RhdGljIGNvbnN0IFRQTURyaXZlck9wcyB0cG1fcGFzc3Rocm91Z2hfZHJpdmVyOwotK3N0YXRpYyBjb25zdCBWTVN0YXRlRGVzY3JpcHRpb24gdm1zdGF0ZV90cG1fY3VzZTsKLSAKLSAvKiBkYXRhIHN0cnVjdHVyZXMgKi8KLSB0eXBlZGVmIHN0cnVjdCBUUE1QYXNzdGhydVRocmVhZFBhcmFtcyB7Ci1AQCAtNzksNiArODIsMTAgQEAgc3RydWN0IFRQTVBhc3N0aHJ1U3RhdGUgewotICAgICBRZW11TXV0ZXggc3RhdGVfbG9jazsKLSAgICAgUWVtdUNvbmQgY21kX2NvbXBsZXRlOyAgLyogc2luZ25hbGVkIG9uY2UgdHBtX2J1c3kgaXMgZmFsc2UgKi8KLSAgICAgYm9vbCB0cG1fYnVzeTsKLSsKLSsgICAgRXJyb3IgKm1pZ3JhdGlvbl9ibG9ja2VyOwotKwotKyAgICBUUE1CbG9iQnVmZmVycyB0cG1fYmxvYnM7Ci0gfTsKLSAKLSB0eXBlZGVmIHN0cnVjdCBUUE1QYXNzdGhydVN0YXRlIFRQTVBhc3N0aHJ1U3RhdGU7Ci1AQCAtMzA2LDYgKzMxMywxMCBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfc2h1dGRvd24oVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0KQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwotICAgICAgICAgfQotICAgICB9Ci0rICAgIGlmICh0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyKSB7Ci0rICAgICAgICBtaWdyYXRlX2RlbF9ibG9ja2VyKHRwbV9wdC0+bWlncmF0aW9uX2Jsb2NrZXIpOwotKyAgICAgICAgZXJyb3JfZnJlZSh0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyKTsKLSsgICAgfQotIH0KLSAKLSAvKgotQEAgLTM2MCwxMiArMzcxLDE0IEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2N1c2VfY2hlY2tfY2FwcyhUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQpCi0gLyoKLSAgKiBJbml0aWFsaXplIHRoZSBleHRlcm5hbCBDVVNFIFRQTQotICAqLwotLXN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2N1c2VfaW5pdChUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQpCi0rc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19yZXN1bWUpCi0gewotICAgICBpbnQgcmMgPSAwOwotLSAgICBwdG1faW5pdCBpbml0ID0gewotLSAgICAgICAgLnUucmVxLmluaXRfZmxhZ3MgPSBQVE1fSU5JVF9GTEFHX0RFTEVURV9WT0xBVElMRSwKLS0gICAgfTsKLSsgICAgcHRtX2luaXQgaW5pdDsKLSsgICAgaWYgKGlzX3Jlc3VtZSkgewotKyAgICAgICAgaW5pdC51LnJlcS5pbml0X2ZsYWdzID0gUFRNX0lOSVRfRkxBR19ERUxFVEVfVk9MQVRJTEU7Ci0rICAgIH0KLSAKLSAgICAgaWYgKFRQTV9QQVNTVEhST1VHSF9VU0VTX0NVU0VfVFBNKHRwbV9wdCkpIHsKLSAgICAgICAgIGlmIChpb2N0bCh0cG1fcHQtPnRwbV9mZCwgUFRNX0lOSVQsICZpbml0KSA8IDApIHsKLUBAIC0zOTQsNyArNDA3LDcgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfc3RhcnR1cF90cG0oVFBNQmFja2VuZCAqdGIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX3Bhc3N0aHJvdWdoX3dvcmtlcl90aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9wdC0+dHBtX3RocmVhZF9wYXJhbXMpOwotIAotLSAgICB0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KHRwbV9wdCk7Ci0rICAgIHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQodHBtX3B0LCBmYWxzZSk7Ci0gCi0gICAgIHJldHVybiAwOwotIH0KLUBAIC00NjYsNiArNDc5LDMyIEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX3Jlc2V0X3RwbV9lc3RhYmxpc2hlZF9mbGFnKFRQTUJhY2tlbmQgKnRiLAotICAgICByZXR1cm4gcmM7Ci0gfQotIAotK3N0YXRpYyBpbnQgdHBtX2N1c2VfZ2V0X3N0YXRlX2Jsb2JzKFRQTUJhY2tlbmQgKnRiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVjcnlwdGVkX2Jsb2JzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTUJsb2JCdWZmZXJzICp0cG1fYmxvYnMpCi0rewotKyAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOwotKwotKyAgICBhc3NlcnQoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSk7Ci0rCi0rICAgIHJldHVybiB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9icyh0cG1fcHQtPnRwbV9mZCwgZGVjcnlwdGVkX2Jsb2JzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX2Jsb2JzKTsKLSt9Ci0rCi0rc3RhdGljIGludCB0cG1fY3VzZV9zZXRfc3RhdGVfYmxvYnMoVFBNQmFja2VuZCAqdGIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNQmxvYkJ1ZmZlcnMgKnRwbV9ibG9icykKLSt7Ci0rICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7Ci0rCi0rICAgIGFzc2VydChUUE1fUEFTU1RIUk9VR0hfVVNFU19DVVNFX1RQTSh0cG1fcHQpKTsKLSsKLSsgICAgaWYgKHRwbV91dGlsX2N1c2Vfc2V0X3N0YXRlX2Jsb2JzKHRwbV9wdC0+dHBtX2ZkLCB0cG1fYmxvYnMpKSB7Ci0rICAgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgICByZXR1cm4gdHBtX3Bhc3N0aHJvdWdoX2N1c2VfaW5pdCh0cG1fcHQsIHRydWUpOwotK30KLSsKLSBzdGF0aWMgYm9vbCB0cG1fcGFzc3Rocm91Z2hfZ2V0X3N0YXJ0dXBfZXJyb3IoVFBNQmFja2VuZCAqdGIpCi0gewotICAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOwotQEAgLTQ4OCw3ICs1MjcsNyBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfZGVsaXZlcl9yZXF1ZXN0KFRQTUJhY2tlbmQgKnRiKQotIHsKLSAgICAgVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0ID0gVFBNX1BBU1NUSFJPVUdIKHRiKTsKLSAKLS0gICAgLyogVFBNIGNvbnNpZGVyZWQgYnVzeSBvbmNlIFRQTSBSZXF1ZXN0IHNjaGVkdWxlZCBmb3IgcHJvY2Vzc2luZyAqLwotKyAgICAvKiBUUE0gY29uc2lkZXJlZCBidXN5IG9uY2UgVFBNIHJlcXVlc3Qgc2NoZWR1bGVkIGZvciBwcm9jZXNzaW5nICovCi0gICAgIHFlbXVfbXV0ZXhfbG9jaygmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKLSAgICAgdHBtX3B0LT50cG1fYnVzeSA9IHRydWU7Ci0gICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZ0cG1fcHQtPnN0YXRlX2xvY2spOwotQEAgLTYwMSw2ICs2NDAsMjUgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfb3Blbl9zeXNmc19jYW5jZWwoVFBNQmFja2VuZCAqdGIpCi0gICAgIHJldHVybiBmZDsKLSB9Ci0gCi0rc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX2Jsb2NrX21pZ3JhdGlvbihUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQpCi0rewotKyAgICBwdG1fY2FwIGNhcHM7Ci0rCi0rICAgIGlmIChUUE1fUEFTU1RIUk9VR0hfVVNFU19DVVNFX1RQTSh0cG1fcHQpKSB7Ci0rICAgICAgICBjYXBzID0gUFRNX0NBUF9HRVRfU1RBVEVCTE9CIHwgUFRNX0NBUF9TRVRfU1RBVEVCTE9CIHwKLSsgICAgICAgICAgICAgICBQVE1fQ0FQX1NUT1A7Ci0rICAgICAgICBpZiAoIVRQTV9DVVNFX0lNUExFTUVOVFNfQUxMKHRwbV9wdCwgY2FwcykpIHsKLSsgICAgICAgICAgICBlcnJvcl9zZXRnKCZ0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyLAotKyAgICAgICAgICAgICAgICAgICAgICAgIk1pZ3JhdGlvbiBkaXNhYmxlZDogQ1VTRSBUUE0gbGFja3MgbmVjZXNzYXJ5IGNhcGFiaWxpdGllcyIpOwotKyAgICAgICAgICAgIG1pZ3JhdGVfYWRkX2Jsb2NrZXIodHBtX3B0LT5taWdyYXRpb25fYmxvY2tlcik7Ci0rICAgICAgICB9Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgICBlcnJvcl9zZXRnKCZ0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyLAotKyAgICAgICAgICAgICAgICAgICAiTWlncmF0aW9uIGRpc2FibGVkOiBQYXNzdGhyb3VnaCBUUE0gZG9lcyBub3Qgc3VwcG9ydCBtaWdyYXRpb24iKTsKLSsgICAgICAgIG1pZ3JhdGVfYWRkX2Jsb2NrZXIodHBtX3B0LT5taWdyYXRpb25fYmxvY2tlcik7Ci0rICAgIH0KLSt9Ci0rCi0gc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfaGFuZGxlX2RldmljZV9vcHRzKFFlbXVPcHRzICpvcHRzLCBUUE1CYWNrZW5kICp0YikKLSB7Ci0gICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7Ci1AQCAtNjQyLDcgKzcwMCw3IEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2hhbmRsZV9kZXZpY2Vfb3B0cyhRZW11T3B0cyAqb3B0cywgVFBNQmFja2VuZCAqdGIpCi0gICAgICAgICAgICAgZ290byBlcnJfY2xvc2VfdHBtZGV2OwotICAgICAgICAgfQotICAgICAgICAgLyogaW5pdCBUUE0gZm9yIHByb2JpbmcgKi8KLS0gICAgICAgIGlmICh0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KHRwbV9wdCkpIHsKLSsgICAgICAgIGlmICh0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KHRwbV9wdCwgZmFsc2UpKSB7Ci0gICAgICAgICAgICAgZ290byBlcnJfY2xvc2VfdHBtZGV2OwotICAgICAgICAgfQotICAgICB9Ci1AQCAtNjU5LDYgKzcxNyw3IEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2hhbmRsZV9kZXZpY2Vfb3B0cyhRZW11T3B0cyAqb3B0cywgVFBNQmFja2VuZCAqdGIpCi0gICAgICAgICB9Ci0gICAgIH0KLSAKLSsgICAgdHBtX3Bhc3N0aHJvdWdoX2Jsb2NrX21pZ3JhdGlvbih0cG1fcHQpOwotIAotICAgICByZXR1cm4gMDsKLSAKLUBAIC03NjYsMTAgKzgyNSwxMyBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfaW5zdF9pbml0KE9iamVjdCAqb2JqKQotIAotICAgICBxZW11X211dGV4X2luaXQoJnRwbV9wdC0+c3RhdGVfbG9jayk7Ci0gICAgIHFlbXVfY29uZF9pbml0KCZ0cG1fcHQtPmNtZF9jb21wbGV0ZSk7Ci0rCi0rICAgIHZtc3RhdGVfcmVnaXN0ZXIoTlVMTCwgLTEsICZ2bXN0YXRlX3RwbV9jdXNlLCBvYmopOwotIH0KLSAKLSBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfaW5zdF9maW5hbGl6ZShPYmplY3QgKm9iaikKLSB7Ci0rICAgIHZtc3RhdGVfdW5yZWdpc3RlcihOVUxMLCAmdm1zdGF0ZV90cG1fY3VzZSwgb2JqKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX2NsYXNzX2luaXQoT2JqZWN0Q2xhc3MgKmtsYXNzLCB2b2lkICpkYXRhKQotQEAgLTgwMiw2ICs4NjQsNjAgQEAgc3RhdGljIGNvbnN0IGNoYXIgKnRwbV9wYXNzdGhyb3VnaF9jdXNlX2NyZWF0ZV9kZXNjKHZvaWQpCi0gICAgIHJldHVybiAiQ1VTRSBUUE0gYmFja2VuZCBkcml2ZXIiOwotIH0KLSAKLStzdGF0aWMgdm9pZCB0cG1fY3VzZV9wcmVfc2F2ZSh2b2lkICpvcGFxdWUpCi0rewotKyAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBvcGFxdWU7Ci0rICAgIFRQTUJhY2tlbmQgKnRiID0gJnRwbV9wdC0+cGFyZW50OwotKwotKyAgICAgcWVtdV9tdXRleF9sb2NrKCZ0cG1fcHQtPnN0YXRlX2xvY2spOwotKyAgICAgLyogd2FpdCBmb3IgVFBNIHRvIGZpbmlzaCBwcm9jZXNzaW5nICovCi0rICAgICBpZiAodHBtX3B0LT50cG1fYnVzeSkgewotKyAgICAgICAgcWVtdV9jb25kX3dhaXQoJnRwbV9wdC0+Y21kX2NvbXBsZXRlLCAmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKLSsgICAgIH0KLSsgICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZ0cG1fcHQtPnN0YXRlX2xvY2spOwotKwotKyAgICAvKiBnZXQgdGhlIGRlY3J5cHRlZCBzdGF0ZSBibG9icyBmcm9tIHRoZSBUUE0gKi8KLSsgICAgdHBtX2N1c2VfZ2V0X3N0YXRlX2Jsb2JzKHRiLCBUUlVFLCAmdHBtX3B0LT50cG1fYmxvYnMpOwotK30KLSsKLStzdGF0aWMgaW50IHRwbV9jdXNlX3Bvc3RfbG9hZCh2b2lkICpvcGFxdWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZlcnNpb25faWQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkpCi0rewotKyAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBvcGFxdWU7Ci0rICAgIFRQTUJhY2tlbmQgKnRiID0gJnRwbV9wdC0+cGFyZW50OwotKwotKyAgICByZXR1cm4gdHBtX2N1c2Vfc2V0X3N0YXRlX2Jsb2JzKHRiLCAmdHBtX3B0LT50cG1fYmxvYnMpOwotK30KLSsKLStzdGF0aWMgY29uc3QgVk1TdGF0ZURlc2NyaXB0aW9uIHZtc3RhdGVfdHBtX2N1c2UgPSB7Ci0rICAgIC5uYW1lID0gImN1c2UtdHBtIiwKLSsgICAgLnZlcnNpb25faWQgPSAxLAotKyAgICAubWluaW11bV92ZXJzaW9uX2lkID0gMCwKLSsgICAgLm1pbmltdW1fdmVyc2lvbl9pZF9vbGQgPSAwLAotKyAgICAucHJlX3NhdmUgID0gdHBtX2N1c2VfcHJlX3NhdmUsCi0rICAgIC5wb3N0X2xvYWQgPSB0cG1fY3VzZV9wb3N0X2xvYWQsCi0rICAgIC5maWVsZHMgPSAoVk1TdGF0ZUZpZWxkW10pIHsKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKHRwbV9ibG9icy5wZXJtYW5lbnRfZmxhZ3MsIFRQTVBhc3N0aHJ1U3RhdGUpLAotKyAgICAgICAgVk1TVEFURV9VSU5UMzIodHBtX2Jsb2JzLnBlcm1hbmVudC5zaXplLCBUUE1QYXNzdGhydVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVkJVRkZFUl9BTExPQ19VSU5UMzIodHBtX2Jsb2JzLnBlcm1hbmVudC5idWZmZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTVBhc3N0aHJ1U3RhdGUsIDEsIE5VTEwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy5wZXJtYW5lbnQuc2l6ZSksCi0rCi0rICAgICAgICBWTVNUQVRFX1VJTlQzMih0cG1fYmxvYnMudm9sYXRpbF9mbGFncywgVFBNUGFzc3RocnVTdGF0ZSksCi0rICAgICAgICBWTVNUQVRFX1VJTlQzMih0cG1fYmxvYnMudm9sYXRpbC5zaXplLCBUUE1QYXNzdGhydVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVkJVRkZFUl9BTExPQ19VSU5UMzIodHBtX2Jsb2JzLnZvbGF0aWwuYnVmZmVyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1QYXNzdGhydVN0YXRlLCAxLCBOVUxMLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG1fYmxvYnMudm9sYXRpbC5zaXplKSwKLSsKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKHRwbV9ibG9icy5zYXZlc3RhdGVfZmxhZ3MsIFRQTVBhc3N0aHJ1U3RhdGUpLAotKyAgICAgICAgVk1TVEFURV9VSU5UMzIodHBtX2Jsb2JzLnNhdmVzdGF0ZS5zaXplLCBUUE1QYXNzdGhydVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVkJVRkZFUl9BTExPQ19VSU5UMzIodHBtX2Jsb2JzLnNhdmVzdGF0ZS5idWZmZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTVBhc3N0aHJ1U3RhdGUsIDEsIE5VTEwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy5zYXZlc3RhdGUuc2l6ZSksCi0rICAgICAgICBWTVNUQVRFX0VORF9PRl9MSVNUKCkKLSsgICAgfQotK307Ci0rCi0gc3RhdGljIGNvbnN0IFRQTURyaXZlck9wcyB0cG1fY3VzZV9kcml2ZXIgPSB7Ci0gICAgIC50eXBlICAgICAgICAgICAgICAgICAgICAgPSBUUE1fVFlQRV9DVVNFX1RQTSwKLSAgICAgLm9wdHMgICAgICAgICAgICAgICAgICAgICA9IHRwbV9wYXNzdGhyb3VnaF9jbWRsaW5lX29wdHMsCi1kaWZmIC0tZ2l0IGEvaHcvdHBtL3RwbV90aXMuYyBiL2h3L3RwbS90cG1fdGlzLmMKLWluZGV4IDE0ZDllODNlYTIuLjliNjYwY2Y3MzcgMTAwNjQ0Ci0tLS0gYS9ody90cG0vdHBtX3Rpcy5jCi0rKysgYi9ody90cG0vdHBtX3Rpcy5jCi1AQCAtMzY4LDYgKzM2OCw4IEBAIHN0YXRpYyB2b2lkIHRwbV90aXNfcmVjZWl2ZV9iaCh2b2lkICpvcGFxdWUpCi0gICAgIFRQTVRJU0VtdVN0YXRlICp0aXMgPSAmcy0+cy50aXM7Ci0gICAgIHVpbnQ4X3QgbG9jdHkgPSBzLT5sb2N0eV9udW1iZXI7Ci0gCi0rICAgIHRpcy0+Ymhfc2NoZWR1bGVkID0gZmFsc2U7Ci0rCi0gICAgIHFlbXVfbXV0ZXhfbG9jaygmcy0+c3RhdGVfbG9jayk7Ci0gCi0gICAgIHRwbV90aXNfc3RzX3NldCgmdGlzLT5sb2NbbG9jdHldLAotQEAgLTQxNSw2ICs0MTcsOCBAQCBzdGF0aWMgdm9pZCB0cG1fdGlzX3JlY2VpdmVfY2IoVFBNU3RhdGUgKnMsIHVpbnQ4X3QgbG9jdHksCi0gICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKLSAKLSAgICAgcWVtdV9iaF9zY2hlZHVsZSh0aXMtPmJoKTsKLSsKLSsgICAgdGlzLT5iaF9zY2hlZHVsZWQgPSB0cnVlOwotIH0KLSAKLSAvKgotQEAgLTEwMzAsOSArMTAzNCwxNDAgQEAgc3RhdGljIHZvaWQgdHBtX3Rpc19yZXNldChEZXZpY2VTdGF0ZSAqZGV2KQotICAgICB0cG1fdGlzX2RvX3N0YXJ0dXBfdHBtKHMpOwotIH0KLSAKLSsKLSsvKiBwZXJzaXN0ZW50IHN0YXRlIGhhbmRsaW5nICovCi0rCi0rc3RhdGljIHZvaWQgdHBtX3Rpc19wcmVfc2F2ZSh2b2lkICpvcGFxdWUpCi0rewotKyAgICBUUE1TdGF0ZSAqcyA9IG9wYXF1ZTsKLSsgICAgVFBNVElTRW11U3RhdGUgKnRpcyA9ICZzLT5zLnRpczsKLSsgICAgdWludDhfdCBsb2N0eSA9IHRpcy0+YWN0aXZlX2xvY3R5OwotKwotKyAgICBEUFJJTlRGKCJ0cG1fdGlzOiBzdXNwZW5kOiBsb2N0eSA9ICVkIDogcl9vZmZzZXQgPSAlZCwgd19vZmZzZXQgPSAlZFxuIiwKLSsgICAgICAgICAgICBsb2N0eSwgdGlzLT5sb2NbMF0ucl9vZmZzZXQsIHRpcy0+bG9jWzBdLndfb2Zmc2V0KTsKLSsjaWZkZWYgREVCVUdfVElTCi0rICAgIHRwbV90aXNfZHVtcF9zdGF0ZShvcGFxdWUsIDApOwotKyNlbmRpZgotKwotKyAgICBxZW11X211dGV4X2xvY2soJnMtPnN0YXRlX2xvY2spOwotKwotKyAgICAvKiB3YWl0IGZvciBvdXRzdGFuZGluZyByZXF1ZXN0IHRvIGNvbXBsZXRlICovCi0rICAgIGlmIChUUE1fVElTX0lTX1ZBTElEX0xPQ1RZKGxvY3R5KSAmJgotKyAgICAgICAgdGlzLT5sb2NbbG9jdHldLnN0YXRlID09IFRQTV9USVNfU1RBVEVfRVhFQ1VUSU9OKSB7Ci0rICAgICAgICAvKgotKyAgICAgICAgICogSWYgd2UgZ2V0IGhlcmUgd2hlbiB0aGUgYmggaXMgc2NoZWR1bGVkIGJ1dCBkaWQgbm90IHJ1biwKLSsgICAgICAgICAqIHdlIHdvbid0IGdldCBub3RpZmllZC4uLgotKyAgICAgICAgICovCi0rICAgICAgICBpZiAoIXRpcy0+Ymhfc2NoZWR1bGVkKSB7Ci0rICAgICAgICAgICAgLyogYmFja2VuZCB0aHJlYWQgdG8gbm90aWZ5IHVzICovCi0rICAgICAgICAgICAgcWVtdV9jb25kX3dhaXQoJnMtPmNtZF9jb21wbGV0ZSwgJnMtPnN0YXRlX2xvY2spOwotKyAgICAgICAgfQotKyAgICAgICAgaWYgKHRpcy0+bG9jW2xvY3R5XS5zdGF0ZSA9PSBUUE1fVElTX1NUQVRFX0VYRUNVVElPTikgewotKyAgICAgICAgICAgIC8qIGJvdHRvbSBoYWxmIGRpZCBub3QgcnVuIC0gcnVuIGl0cyBmdW5jdGlvbiAqLwotKyAgICAgICAgICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKLSsgICAgICAgICAgICB0cG1fdGlzX3JlY2VpdmVfYmgob3BhcXVlKTsKLSsgICAgICAgICAgICBxZW11X211dGV4X2xvY2soJnMtPnN0YXRlX2xvY2spOwotKyAgICAgICAgfQotKyAgICB9Ci0rCi0rICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKLSsKLSsgICAgLyogY29weSBjdXJyZW50IGFjdGl2ZSByZWFkIG9yIHdyaXRlIGJ1ZmZlciBpbnRvIHRoZSBidWZmZXIKLSsgICAgICAgd3JpdHRlbiB0byBkaXNrICovCi0rICAgIGlmIChUUE1fVElTX0lTX1ZBTElEX0xPQ1RZKGxvY3R5KSkgewotKyAgICAgICAgc3dpdGNoICh0aXMtPmxvY1tsb2N0eV0uc3RhdGUpIHsKLSsgICAgICAgIGNhc2UgVFBNX1RJU19TVEFURV9SRUNFUFRJT046Ci0rICAgICAgICAgICAgbWVtY3B5KHRpcy0+YnVmLAotKyAgICAgICAgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ud19idWZmZXIuYnVmZmVyLAotKyAgICAgICAgICAgICAgICAgICBNSU4oc2l6ZW9mKHRpcy0+YnVmKSwKLSsgICAgICAgICAgICAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS53X2J1ZmZlci5zaXplKSk7Ci0rICAgICAgICAgICAgdGlzLT5vZmZzZXQgPSB0aXMtPmxvY1tsb2N0eV0ud19vZmZzZXQ7Ci0rICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgVFBNX1RJU19TVEFURV9DT01QTEVUSU9OOgotKyAgICAgICAgICAgIG1lbWNweSh0aXMtPmJ1ZiwKLSsgICAgICAgICAgICAgICAgICAgdGlzLT5sb2NbbG9jdHldLnJfYnVmZmVyLmJ1ZmZlciwKLSsgICAgICAgICAgICAgICAgICAgTUlOKHNpemVvZih0aXMtPmJ1ZiksCi0rICAgICAgICAgICAgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ucl9idWZmZXIuc2l6ZSkpOwotKyAgICAgICAgICAgIHRpcy0+b2Zmc2V0ID0gdGlzLT5sb2NbbG9jdHldLnJfb2Zmc2V0OwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgICBkZWZhdWx0OgotKyAgICAgICAgICAgIC8qIGxlYWsgbm90aGluZyAqLwotKyAgICAgICAgICAgIG1lbXNldCh0aXMtPmJ1ZiwgMHgwLCBzaXplb2YodGlzLT5idWYpKTsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgICAgfQotKyAgICB9Ci0rfQotKwotK3N0YXRpYyBpbnQgdHBtX3Rpc19wb3N0X2xvYWQodm9pZCAqb3BhcXVlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZlcnNpb25faWQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkpCi0rewotKyAgICBUUE1TdGF0ZSAqcyA9IG9wYXF1ZTsKLSsgICAgVFBNVElTRW11U3RhdGUgKnRpcyA9ICZzLT5zLnRpczsKLSsKLSsgICAgdWludDhfdCBsb2N0eSA9IHRpcy0+YWN0aXZlX2xvY3R5OwotKwotKyAgICBpZiAoVFBNX1RJU19JU19WQUxJRF9MT0NUWShsb2N0eSkpIHsKLSsgICAgICAgIHN3aXRjaCAodGlzLT5sb2NbbG9jdHldLnN0YXRlKSB7Ci0rICAgICAgICBjYXNlIFRQTV9USVNfU1RBVEVfUkVDRVBUSU9OOgotKyAgICAgICAgICAgIG1lbWNweSh0aXMtPmxvY1tsb2N0eV0ud19idWZmZXIuYnVmZmVyLAotKyAgICAgICAgICAgICAgICAgICB0aXMtPmJ1ZiwKLSsgICAgICAgICAgICAgICAgICAgTUlOKHNpemVvZih0aXMtPmJ1ZiksCi0rICAgICAgICAgICAgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ud19idWZmZXIuc2l6ZSkpOwotKyAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS53X29mZnNldCA9IHRpcy0+b2Zmc2V0OwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIFRQTV9USVNfU1RBVEVfQ09NUExFVElPTjoKLSsgICAgICAgICAgICBtZW1jcHkodGlzLT5sb2NbbG9jdHldLnJfYnVmZmVyLmJ1ZmZlciwKLSsgICAgICAgICAgICAgICAgICAgdGlzLT5idWYsCi0rICAgICAgICAgICAgICAgICAgIE1JTihzaXplb2YodGlzLT5idWYpLAotKyAgICAgICAgICAgICAgICAgICAgICAgdGlzLT5sb2NbbG9jdHldLnJfYnVmZmVyLnNpemUpKTsKLSsgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ucl9vZmZzZXQgPSB0aXMtPm9mZnNldDsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgICAgZGVmYXVsdDoKLSsgICAgICAgIGJyZWFrOwotKyAgICAgICAgfQotKyAgICB9Ci0rCi0rICAgIERQUklOVEYoInRwbV90aXM6IHJlc3VtZSA6IGxvY3R5ID0gJWQgOiByX29mZnNldCA9ICVkLCB3X29mZnNldCA9ICVkXG4iLAotKyAgICAgICAgICAgIGxvY3R5LCB0aXMtPmxvY1swXS5yX29mZnNldCwgdGlzLT5sb2NbMF0ud19vZmZzZXQpOwotKwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IFZNU3RhdGVEZXNjcmlwdGlvbiB2bXN0YXRlX2xvY3R5ID0gewotKyAgICAubmFtZSA9ICJsb2MiLAotKyAgICAudmVyc2lvbl9pZCA9IDEsCi0rICAgIC5taW5pbXVtX3ZlcnNpb25faWQgPSAwLAotKyAgICAubWluaW11bV92ZXJzaW9uX2lkX29sZCA9IDAsCi0rICAgIC5maWVsZHMgICAgICA9IChWTVN0YXRlRmllbGRbXSkgewotKyAgICAgICAgVk1TVEFURV9VSU5UMzIoc3RhdGUsIFRQTUxvY2FsaXR5KSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKGludGUsIFRQTUxvY2FsaXR5KSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKGludHMsIFRQTUxvY2FsaXR5KSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDgoYWNjZXNzLCBUUE1Mb2NhbGl0eSksCi0rICAgICAgICBWTVNUQVRFX1VJTlQzMihzdHMsIFRQTUxvY2FsaXR5KSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKGlmYWNlX2lkLCBUUE1Mb2NhbGl0eSksCi0rICAgICAgICBWTVNUQVRFX0VORF9PRl9MSVNUKCksCi0rICAgIH0KLSt9OwotKwotIHN0YXRpYyBjb25zdCBWTVN0YXRlRGVzY3JpcHRpb24gdm1zdGF0ZV90cG1fdGlzID0gewotICAgICAubmFtZSA9ICJ0cG0iLAotLSAgICAudW5taWdyYXRhYmxlID0gMSwKLSsgICAgLnZlcnNpb25faWQgPSAxLAotKyAgICAubWluaW11bV92ZXJzaW9uX2lkID0gMCwKLSsgICAgLm1pbmltdW1fdmVyc2lvbl9pZF9vbGQgPSAwLAotKyAgICAucHJlX3NhdmUgID0gdHBtX3Rpc19wcmVfc2F2ZSwKLSsgICAgLnBvc3RfbG9hZCA9IHRwbV90aXNfcG9zdF9sb2FkLAotKyAgICAuZmllbGRzID0gKFZNU3RhdGVGaWVsZFtdKSB7Ci0rICAgICAgICBWTVNUQVRFX1VJTlQzMihzLnRpcy5vZmZzZXQsIFRQTVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfQlVGRkVSKHMudGlzLmJ1ZiwgVFBNU3RhdGUpLAotKyAgICAgICAgVk1TVEFURV9VSU5UOChzLnRpcy5hY3RpdmVfbG9jdHksIFRQTVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDgocy50aXMuYWJvcnRpbmdfbG9jdHksIFRQTVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDgocy50aXMubmV4dF9sb2N0eSwgVFBNU3RhdGUpLAotKwotKyAgICAgICAgVk1TVEFURV9TVFJVQ1RfQVJSQVkocy50aXMubG9jLCBUUE1TdGF0ZSwgVFBNX1RJU19OVU1fTE9DQUxJVElFUywgMSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtc3RhdGVfbG9jdHksIFRQTUxvY2FsaXR5KSwKLSsKLSsgICAgICAgIFZNU1RBVEVfRU5EX09GX0xJU1QoKQotKyAgICB9Ci0gfTsKLSAKLSBzdGF0aWMgUHJvcGVydHkgdHBtX3Rpc19wcm9wZXJ0aWVzW10gPSB7Ci1kaWZmIC0tZ2l0IGEvaHcvdHBtL3RwbV90aXMuaCBiL2h3L3RwbS90cG1fdGlzLmgKLWluZGV4IGExZGY0MWZhMjEuLmI3ZmMwZWExYTkgMTAwNjQ0Ci0tLS0gYS9ody90cG0vdHBtX3Rpcy5oCi0rKysgYi9ody90cG0vdHBtX3Rpcy5oCi1AQCAtNTQsNiArNTQsOCBAQCB0eXBlZGVmIHN0cnVjdCBUUE1Mb2NhbGl0eSB7Ci0gCi0gdHlwZWRlZiBzdHJ1Y3QgVFBNVElTRW11U3RhdGUgewotICAgICBRRU1VQkggKmJoOwotKyAgICBib29sIGJoX3NjaGVkdWxlZDsgLyogYmggc2NoZWR1bGVkIGJ1dCBkaWQgbm90IHJ1biB5ZXQgKi8KLSsKLSAgICAgdWludDMyX3Qgb2Zmc2V0OwotICAgICB1aW50OF90IGJ1ZltUUE1fVElTX0JVRkZFUl9NQVhdOwotIAotZGlmZiAtLWdpdCBhL2h3L3RwbS90cG1fdXRpbC5jIGIvaHcvdHBtL3RwbV91dGlsLmMKLWluZGV4IDdiMzU0Mjk3MjUuLmI2ZmY3NGQ5NDYgMTAwNjQ0Ci0tLS0gYS9ody90cG0vdHBtX3V0aWwuYwotKysrIGIvaHcvdHBtL3RwbV91dGlsLmMKLUBAIC0yMiw2ICsyMiwxNyBAQAotICNpbmNsdWRlICJxZW11L29zZGVwLmgiCi0gI2luY2x1ZGUgInRwbV91dGlsLmgiCi0gI2luY2x1ZGUgInRwbV9pbnQuaCIKLSsjaW5jbHVkZSAidHBtX2lvY3RsLmgiCi0rI2luY2x1ZGUgInFlbXUvZXJyb3ItcmVwb3J0LmgiCi0rCi0rI2RlZmluZSBERUJVR19UUE0gMAotKwotKyNkZWZpbmUgRFBSSU5URihmbXQsIC4uLikgZG8geyBcCi0rICAgIGlmIChERUJVR19UUE0pIHsgXAotKyAgICAgICAgZnByaW50ZihzdGRlcnIsIGZtdCwgIyMgX19WQV9BUkdTX18pOyBcCi0rICAgIH0gXAotK30gd2hpbGUgKDApCi0rCi0gCi0gLyoKLSAgKiBBIGJhc2ljIHRlc3Qgb2YgYSBUUE0gZGV2aWNlLiBXZSBleHBlY3QgYSB3ZWxsIGZvcm1hdHRlZCByZXNwb25zZSBoZWFkZXIKLUBAIC0xMjUsMyArMTM2LDIxNSBAQCBpbnQgdHBtX3V0aWxfdGVzdF90cG1kZXYoaW50IHRwbV9mZCwgVFBNVmVyc2lvbiAqdHBtX3ZlcnNpb24pCi0gCi0gICAgIHJldHVybiAxOwotIH0KLSsKLStzdGF0aWMgdm9pZCB0cG1fc2l6ZWRfYnVmZmVyX3Jlc2V0KFRQTVNpemVkQnVmZmVyICp0c2IpCi0rewotKyAgICBnX2ZyZWUodHNiLT5idWZmZXIpOwotKyAgICB0c2ItPmJ1ZmZlciA9IE5VTEw7Ci0rICAgIHRzYi0+c2l6ZSA9IDA7Ci0rfQotKwotKy8qCi0rICogVHJhbnNmZXIgYSBUUE0gc3RhdGUgYmxvYiBmcm9tIHRoZSBUUE0gaW50byBhIHByb3ZpZGVkIGJ1ZmZlci4KLSsgKgotKyAqIEBmZDogZmlsZSBkZXNjcmlwdG9yIHRvIHRhbGsgdG8gdGhlIENVU0UgVFBNCi0rICogQHR5cGU6IHRoZSB0eXBlIG9mIGJsb2IgdG8gdHJhbnNmZXIKLSsgKiBAZGVjcnlwdGVkX2Jsb2I6IHdoZXRoZXIgd2UgcmVxdWVzdCB0byByZWNlaXZlIGRlY3J5cHRlZCBibG9icwotKyAqIEB0c2I6IHRoZSBUUE1TaXplQnVmZmVyIHRvIGZpbGwgd2l0aCB0aGUgYmxvYgotKyAqIEBmbGFnczogdGhlIGZsYWdzIHRvIHJldHVybiB0byB0aGUgY2FsbGVyCi0rICovCi0rc3RhdGljIGludCB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9iKGludCBmZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCB0eXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlY3J5cHRlZF9ibG9iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1TaXplZEJ1ZmZlciAqdHNiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqZmxhZ3MpCi0rewotKyAgICBwdG1fZ2V0c3RhdGUgcGdzOwotKyAgICB1aW50MTZfdCBvZmZzZXQgPSAwOwotKyAgICBwdG1fcmVzIHJlczsKLSsgICAgc3NpemVfdCBuOwotKyAgICBzaXplX3QgdG9fcmVhZDsKLSsKLSsgICAgdHBtX3NpemVkX2J1ZmZlcl9yZXNldCh0c2IpOwotKwotKyAgICBwZ3MudS5yZXEuc3RhdGVfZmxhZ3MgPSAoZGVjcnlwdGVkX2Jsb2IpID8gUFRNX1NUQVRFX0ZMQUdfREVDUllQVEVEIDogMDsKLSsgICAgcGdzLnUucmVxLnR5cGUgPSB0eXBlOwotKyAgICBwZ3MudS5yZXEub2Zmc2V0ID0gb2Zmc2V0OwotKwotKyAgICBpZiAoaW9jdGwoZmQsIFBUTV9HRVRfU1RBVEVCTE9CLCAmcGdzKSA8IDApIHsKLSsgICAgICAgIGVycm9yX3JlcG9ydCgiQ1VTRSBUUE0gUFRNX0dFVF9TVEFURUJMT0IgaW9jdGwgZmFpbGVkOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgIGdvdG8gZXJyX2V4aXQ7Ci0rICAgIH0KLSsgICAgcmVzID0gcGdzLnUucmVzcC50cG1fcmVzdWx0OwotKyAgICBpZiAocmVzICE9IDAgJiYgKHJlcyAmIDB4ODAwKSA9PSAwKSB7Ci0rICAgICAgICBlcnJvcl9yZXBvcnQoIkdldHRpbmcgdGhlIHN0YXRlYmxvYiAodHlwZSAlZCkgZmFpbGVkIHdpdGggYSBUUE0gIgotKyAgICAgICAgICAgICAgICAgICAgICJlcnJvciAweCV4IiwgdHlwZSwgcmVzKTsKLSsgICAgICAgIGdvdG8gZXJyX2V4aXQ7Ci0rICAgIH0KLSsKLSsgICAgKmZsYWdzID0gcGdzLnUucmVzcC5zdGF0ZV9mbGFnczsKLSsKLSsgICAgdHNiLT5idWZmZXIgPSBnX21hbGxvYyhwZ3MudS5yZXNwLnRvdGxlbmd0aCk7Ci0rICAgIG1lbWNweSh0c2ItPmJ1ZmZlciwgcGdzLnUucmVzcC5kYXRhLCBwZ3MudS5yZXNwLmxlbmd0aCk7Ci0rICAgIHRzYi0+c2l6ZSA9IHBncy51LnJlc3AubGVuZ3RoOwotKwotKyAgICAvKiBpZiB0aGVyZSBhcmUgYnl0ZXMgbGVmdCB0byBnZXQgdXNlIHJlYWQoKSBpbnRlcmZhY2UgKi8KLSsgICAgd2hpbGUgKHRzYi0+c2l6ZSA8IHBncy51LnJlc3AudG90bGVuZ3RoKSB7Ci0rICAgICAgICB0b19yZWFkID0gcGdzLnUucmVzcC50b3RsZW5ndGggLSB0c2ItPnNpemU7Ci0rICAgICAgICBpZiAodW5saWtlbHkodG9fcmVhZCA+IFNTSVpFX01BWCkpIHsKLSsgICAgICAgICAgICB0b19yZWFkID0gU1NJWkVfTUFYOwotKyAgICAgICAgfQotKwotKyAgICAgICAgbiA9IHJlYWQoZmQsICZ0c2ItPmJ1ZmZlclt0c2ItPnNpemVdLCB0b19yZWFkKTsKLSsgICAgICAgIGlmIChuICE9IHRvX3JlYWQpIHsKLSsgICAgICAgICAgICBlcnJvcl9yZXBvcnQoIkNvdWxkIG5vdCByZWFkIHN0YXRlYmxvYiAodHlwZSAlZCkgOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsIHN0cmVycm9yKGVycm5vKSk7Ci0rICAgICAgICAgICAgZ290byBlcnJfZXhpdDsKLSsgICAgICAgIH0KLSsgICAgICAgIHRzYi0+c2l6ZSArPSB0b19yZWFkOwotKyAgICB9Ci0rCi0rICAgIERQUklOVEYoInRwbV91dGlsOiBnb3Qgc3RhdGUgYmxvYiB0eXBlICVkLCAlZCBieXRlcywgZmxhZ3MgMHglMDh4LCAiCi0rICAgICAgICAgICAgImRlY3J5cHRlZD0lZFxuIiwgdHlwZSwgdHNiLT5zaXplLCAqZmxhZ3MsIGRlY3J5cHRlZF9ibG9iKTsKLSsKLSsgICAgcmV0dXJuIDA7Ci0rCi0rZXJyX2V4aXQ6Ci0rICAgIHJldHVybiAxOwotK30KLSsKLStpbnQgdHBtX3V0aWxfY3VzZV9nZXRfc3RhdGVfYmxvYnMoaW50IHRwbV9mZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNyeXB0ZWRfYmxvYnMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTUJsb2JCdWZmZXJzICp0cG1fYmxvYnMpCi0rewotKyAgICBpZiAodHBtX3V0aWxfY3VzZV9nZXRfc3RhdGVfYmxvYih0cG1fZmQsIFBUTV9CTE9CX1RZUEVfUEVSTUFORU5ULAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNyeXB0ZWRfYmxvYnMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnBlcm1hbmVudCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+cGVybWFuZW50X2ZsYWdzKSB8fAotKyAgICAgICB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9iKHRwbV9mZCwgUFRNX0JMT0JfVFlQRV9WT0xBVElMRSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjcnlwdGVkX2Jsb2JzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT52b2xhdGlsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT52b2xhdGlsX2ZsYWdzKSB8fAotKyAgICAgICB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9iKHRwbV9mZCwgUFRNX0JMT0JfVFlQRV9TQVZFU1RBVEUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY3J5cHRlZF9ibG9icywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+c2F2ZXN0YXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT5zYXZlc3RhdGVfZmxhZ3MpKSB7Ci0rICAgICAgICBnb3RvIGVycl9leGl0OwotKyAgICB9Ci0rCi0rICAgIHJldHVybiAwOwotKwotKyBlcnJfZXhpdDoKLSsgICAgdHBtX3NpemVkX2J1ZmZlcl9yZXNldCgmdHBtX2Jsb2JzLT52b2xhdGlsKTsKLSsgICAgdHBtX3NpemVkX2J1ZmZlcl9yZXNldCgmdHBtX2Jsb2JzLT5wZXJtYW5lbnQpOwotKyAgICB0cG1fc2l6ZWRfYnVmZmVyX3Jlc2V0KCZ0cG1fYmxvYnMtPnNhdmVzdGF0ZSk7Ci0rCi0rICAgIHJldHVybiAxOwotK30KLSsKLStzdGF0aWMgaW50IHRwbV91dGlsX2N1c2VfZG9fc2V0X3N0YXRlYmxvYl9pb2N0bChpbnQgZmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdHlwZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsZW5ndGgpCi0rewotKyAgICBwdG1fc2V0c3RhdGUgcHNzOwotKwotKyAgICBwc3MudS5yZXEuc3RhdGVfZmxhZ3MgPSBmbGFnczsKLSsgICAgcHNzLnUucmVxLnR5cGUgPSB0eXBlOwotKyAgICBwc3MudS5yZXEubGVuZ3RoID0gbGVuZ3RoOwotKwotKyAgICBpZiAoaW9jdGwoZmQsIFBUTV9TRVRfU1RBVEVCTE9CLCAmcHNzKSA8IDApIHsKLSsgICAgICAgIGVycm9yX3JlcG9ydCgiQ1VTRSBUUE0gUFRNX1NFVF9TVEFURUJMT0IgaW9jdGwgZmFpbGVkOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgIHJldHVybiAxOwotKyAgICB9Ci0rCi0rICAgIGlmIChwc3MudS5yZXNwLnRwbV9yZXN1bHQgIT0gMCkgewotKyAgICAgICAgZXJyb3JfcmVwb3J0KCJTZXR0aW5nIHRoZSBzdGF0ZWJsb2IgKHR5cGUgJWQpIGZhaWxlZCB3aXRoIGEgVFBNICIKLSsgICAgICAgICAgICAgICAgICAgICAiZXJyb3IgMHgleCIsIHR5cGUsIHBzcy51LnJlc3AudHBtX3Jlc3VsdCk7Ci0rICAgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rCi0rLyoKLSsgKiBUcmFuc2ZlciBhIFRQTSBzdGF0ZSBibG9iIHRvIHRoZSBDVVNFIFRQTS4KLSsgKgotKyAqIEBmZDogZmlsZSBkZXNjcmlwdG9yIHRvIHRhbGsgdG8gdGhlIENVU0UgVFBNCi0rICogQHR5cGU6IHRoZSB0eXBlIG9mIFRQTSBzdGF0ZSBibG9iIHRvIHRyYW5zZmVyCi0rICogQHRzYjogVFBNU2l6ZUJ1ZmZlciBjb250YWluaW5nIHRoZSBUUE0gc3RhdGUgYmxvYgotKyAqIEBmbGFnczogRmxhZ3MgZGVzY3JpYmluZyB0aGUgKGVuY3J5cHRpb24pIHN0YXRlIG9mIHRoZSBUUE0gc3RhdGUgYmxvYgotKyAqLwotK3N0YXRpYyBpbnQgdHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYihpbnQgZmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHR5cGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTVNpemVkQnVmZmVyICp0c2IsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzKQotK3sKLSsgICAgdWludDMyX3Qgb2Zmc2V0ID0gMDsKLSsgICAgc3NpemVfdCBuOwotKyAgICBzaXplX3QgdG9fd3JpdGU7Ci0rCi0rICAgIC8qIGluaXRpYXRlIHRoZSB0cmFuc2ZlciB0byB0aGUgQ1VTRSBUUE0gKi8KLSsgICAgaWYgKHRwbV91dGlsX2N1c2VfZG9fc2V0X3N0YXRlYmxvYl9pb2N0bChmZCwgZmxhZ3MsIHR5cGUsIDApKSB7Ci0rICAgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgICAvKiB1c2UgdGhlIHdyaXRlKCkgaW50ZXJmYWNlIGZvciB0cmFuc2ZlcnJpbmcgdGhlIHN0YXRlIGJsb2IgKi8KLSsgICAgd2hpbGUgKG9mZnNldCA8IHRzYi0+c2l6ZSkgewotKyAgICAgICAgdG9fd3JpdGUgPSB0c2ItPnNpemUgLSBvZmZzZXQ7Ci0rICAgICAgICBpZiAodW5saWtlbHkodG9fd3JpdGUgPiBTU0laRV9NQVgpKSB7Ci0rICAgICAgICAgICAgdG9fd3JpdGUgPSBTU0laRV9NQVg7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBuID0gd3JpdGUoZmQsICZ0c2ItPmJ1ZmZlcltvZmZzZXRdLCB0b193cml0ZSk7Ci0rICAgICAgICBpZiAobiAhPSB0b193cml0ZSkgewotKyAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiV3JpdGluZyB0aGUgc3RhdGVibG9iICh0eXBlICVkKSBmYWlsZWQ6ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgICAgICBnb3RvIGVycl9leGl0OwotKyAgICAgICAgfQotKyAgICAgICAgb2Zmc2V0ICs9IHRvX3dyaXRlOwotKyAgICB9Ci0rCi0rICAgIC8qIGluaWRpY2F0ZSB0aGF0IHRoZSB0cmFuc2ZlciBpcyBmaW5pc2hlZCAqLwotKyAgICBpZiAodHBtX3V0aWxfY3VzZV9kb19zZXRfc3RhdGVibG9iX2lvY3RsKGZkLCBmbGFncywgdHlwZSwgMCkpIHsKLSsgICAgICAgIGdvdG8gZXJyX2V4aXQ7Ci0rICAgIH0KLSsKLSsgICAgRFBSSU5URigidHBtX3V0aWw6IHNldCB0aGUgc3RhdGUgYmxvYiB0eXBlICVkLCAlZCBieXRlcywgZmxhZ3MgMHglMDh4XG4iLAotKyAgICAgICAgICAgIHR5cGUsIHRzYi0+c2l6ZSwgZmxhZ3MpOwotKwotKyAgICByZXR1cm4gMDsKLSsKLStlcnJfZXhpdDoKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotK2ludCB0cG1fdXRpbF9jdXNlX3NldF9zdGF0ZV9ibG9icyhpbnQgdHBtX2ZkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1CbG9iQnVmZmVycyAqdHBtX2Jsb2JzKQotK3sKLSsgICAgcHRtX3JlcyByZXM7Ci0rCi0rICAgIGlmIChpb2N0bCh0cG1fZmQsIFBUTV9TVE9QLCAmcmVzKSA8IDApIHsKLSsgICAgICAgIGVycm9yX3JlcG9ydCgidHBtX3Bhc3N0aHJvdWdoOiBDb3VsZCBub3Qgc3RvcCAiCi0rICAgICAgICAgICAgICAgICAgICAgInRoZSBDVVNFIFRQTTogJXMgKCVpKSIsCi0rICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pLCBlcnJubyk7Ci0rICAgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgICBpZiAodHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYih0cG1fZmQsIFBUTV9CTE9CX1RZUEVfUEVSTUFORU5ULAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT5wZXJtYW5lbnQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy0+cGVybWFuZW50X2ZsYWdzKSB8fAotKyAgICAgICAgdHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYih0cG1fZmQsIFBUTV9CTE9CX1RZUEVfVk9MQVRJTEUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnZvbGF0aWwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy0+dm9sYXRpbF9mbGFncykgfHwKLSsgICAgICAgIHRwbV91dGlsX2N1c2Vfc2V0X3N0YXRlX2Jsb2IodHBtX2ZkLCBQVE1fQkxPQl9UWVBFX1NBVkVTVEFURSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+c2F2ZXN0YXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG1fYmxvYnMtPnNhdmVzdGF0ZV9mbGFncykpIHsKLSsgICAgICAgIHJldHVybiAxOwotKyAgICB9Ci0rCi0rICAgIHJldHVybiAwOwotK30KLWRpZmYgLS1naXQgYS9ody90cG0vdHBtX3V0aWwuaCBiL2h3L3RwbS90cG1fdXRpbC5oCi1pbmRleCBkZjc2MjQ1ZTZlLi5jMjQwNzFkODEyIDEwMDY0NAotLS0tIGEvaHcvdHBtL3RwbV91dGlsLmgKLSsrKyBiL2h3L3RwbS90cG1fdXRpbC5oCi1AQCAtMjYsNCArMjYsMTEgQEAKLSAKLSBpbnQgdHBtX3V0aWxfdGVzdF90cG1kZXYoaW50IHRwbV9mZCwgVFBNVmVyc2lvbiAqdHBtX3ZlcnNpb24pOwotIAotK2ludCB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9icyhpbnQgdHBtX2ZkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlY3J5cHRlZF9ibG9icywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNQmxvYkJ1ZmZlcnMgKnRwbV9ibG9icyk7Ci0rCi0raW50IHRwbV91dGlsX2N1c2Vfc2V0X3N0YXRlX2Jsb2JzKGludCB0cG1fZmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTUJsb2JCdWZmZXJzICp0cG1fYmxvYnMpOwotKwotICNlbmRpZiAvKiBUUE1fVFBNX1VUSUxfSCAqLwotZGlmZiAtLWdpdCBhL2luY2x1ZGUvc3lzZW11L3RwbV9iYWNrZW5kLmggYi9pbmNsdWRlL3N5c2VtdS90cG1fYmFja2VuZC5oCi1pbmRleCBiNThmNTJkMzlmLi4zNDAzODIxYjlkIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9zeXNlbXUvdHBtX2JhY2tlbmQuaAotKysrIGIvaW5jbHVkZS9zeXNlbXUvdHBtX2JhY2tlbmQuaAotQEAgLTYyLDYgKzYyLDE4IEBAIHR5cGVkZWYgc3RydWN0IFRQTVNpemVkQnVmZmVyIHsKLSAgICAgdWludDhfdCAgKmJ1ZmZlcjsKLSB9IFRQTVNpemVkQnVmZmVyOwotIAotKy8qIGJsb2JzIGZyb20gdGhlIFRQTTsgcGFydCBvZiBWTSBzdGF0ZSB3aGVuIG1pZ3JhdGluZyAqLwotK3R5cGVkZWYgc3RydWN0IFRQTUJsb2JCdWZmZXJzIHsKLSsgICAgdWludDMyX3QgcGVybWFuZW50X2ZsYWdzOwotKyAgICBUUE1TaXplZEJ1ZmZlciBwZXJtYW5lbnQ7Ci0rCi0rICAgIHVpbnQzMl90IHZvbGF0aWxfZmxhZ3M7Ci0rICAgIFRQTVNpemVkQnVmZmVyIHZvbGF0aWw7Ci0rCi0rICAgIHVpbnQzMl90IHNhdmVzdGF0ZV9mbGFnczsKLSsgICAgVFBNU2l6ZWRCdWZmZXIgc2F2ZXN0YXRlOwotK30gVFBNQmxvYkJ1ZmZlcnM7Ci0rCi0gc3RydWN0IFRQTURyaXZlck9wcyB7Ci0gICAgIGVudW0gVHBtVHlwZSB0eXBlOwotICAgICBjb25zdCBRZW11T3B0RGVzYyAqb3B0czsKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTEzNjcyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTM2NzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlMGIxZWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTM2NzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MDQgKzAsMCBAQAotRnJvbSAzZDkwYzYyNTQ4NjM2OTNhNmIxM2Q5MThkMmI4NjgyZTA4YmJjNjgxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDI4IEF1ZyAyMDE3IDE0OjI5OjA2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHZnYTogc3RvcCBwYXNzaW5nIHBvaW50ZXJzIHRvIHZnYV9kcmF3X2xpbmUqIGZ1bmN0aW9ucwotCi1JbnN0ZWFkIHBhc3MgYXJvdW5kIHRoZSBhZGRyZXNzIChha2Egb2Zmc2V0IGludG8gdmdhIG1lbW9yeSkuCi1BZGQgdmdhX3JlYWRfKiBoZWxwZXIgZnVuY3Rpb25zIHdoaWNoIGFwcGx5IHZiZV9zaXplX21hc2sgdG8KLXRoZSBhZGRyZXNzLCB0byBtYWtlIHN1cmUgdGhlIGFkZHJlc3Mgc3RheXMgd2l0aGluIHRoZSB2YWxpZAotcmFuZ2UsIHNpbWlsYXIgdG8gdGhlIGNpcnJ1cyBibGl0dGVyIGZpeGVzIChjb21taXRzIGZmYWY4NTc3NzgKLWFuZCAwMjZhZWZmY2I0KS4KLQotSW1wYWN0OiAgRG9TIGZvciBwcml2aWxlZ2VkIGd1ZXN0IHVzZXJzLiAgcWVtdSBjcmFzaGVzIHdpdGgKLWEgc2VnZmF1bHQsIHdoZW4gaGl0dGluZyB0aGUgZ3VhcmQgcGFnZSBhZnRlciB2Z2EgbWVtb3J5Ci1hbGxvY2F0aW9uLCB3aGlsZSByZWFkaW5nIHZnYSBtZW1vcnkgZm9yIGRpc3BsYXkgdXBkYXRlcy4KLQotRml4ZXM6IENWRS0yMDE3LTEzNjcyCi1DYzogUCBKIFAgPHBwYW5kaXRAcmVkaGF0LmNvbT4KLVJlcG9ydGVkLWJ5OiBEYXZpZCBCdWNoYW5hbiA8ZEB2aWRidWNoYW5hbi5jby51az4KLVNpZ25lZC1vZmYtYnk6IEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPgotTWVzc2FnZS1pZDogMjAxNzA4MjgxMjI5MDYuMTg5OTMtMS1rcmF4ZWxAcmVkaGF0LmNvbQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXQucWVtdS5vcmcvP3A9cWVtdS5naXQ7YT1jb21taXQ7aD0zZDkwYzYyNTQ4NjM2OTNhNmIxM2Q5MThkMmI4NjgyZTA4YmJjNjgxXQotCi1DVkU6IENWRS0yMDE3LTEzNjcyCi0KLVNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGh3L2Rpc3BsYXkvdmdhLWhlbHBlcnMuaCB8IDIwMiArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGh3L2Rpc3BsYXkvdmdhLmMgICAgICAgICB8ICAgNSArLQotIGh3L2Rpc3BsYXkvdmdhX2ludC5oICAgICB8ICAgMSArCi0gMyBmaWxlcyBjaGFuZ2VkLCAxMTQgaW5zZXJ0aW9ucygrKSwgOTQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9ody9kaXNwbGF5L3ZnYS1oZWxwZXJzLmggYi9ody9kaXNwbGF5L3ZnYS1oZWxwZXJzLmgKLWluZGV4IDk0ZjZkZTIuLjVhNzUyYjMgMTAwNjQ0Ci0tLS0gYS9ody9kaXNwbGF5L3ZnYS1oZWxwZXJzLmgKLSsrKyBiL2h3L2Rpc3BsYXkvdmdhLWhlbHBlcnMuaAotQEAgLTk1LDIwICs5NSw0NiBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19nbHlwaDkodWludDhfdCAqZCwgaW50IGxpbmVzaXplLAotICAgICB9IHdoaWxlICgtLWgpOwotIH0KLSAKLStzdGF0aWMgaW5saW5lIHVpbnQ4X3QgdmdhX3JlYWRfYnl0ZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50MzJfdCBhZGRyKQotK3sKLSsgICAgcmV0dXJuIHZnYS0+dnJhbV9wdHJbYWRkciAmIHZnYS0+dmJlX3NpemVfbWFza107Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgdWludDE2X3QgdmdhX3JlYWRfd29yZF9sZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50MzJfdCBhZGRyKQotK3sKLSsgICAgdWludDMyX3Qgb2Zmc2V0ID0gYWRkciAmIHZnYS0+dmJlX3NpemVfbWFzayAmIH4xOwotKyAgICB1aW50MTZfdCAqcHRyID0gKHVpbnQxNl90ICopKHZnYS0+dnJhbV9wdHIgKyBvZmZzZXQpOwotKyAgICByZXR1cm4gbGR1d19sZV9wKHB0cik7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgdWludDE2X3QgdmdhX3JlYWRfd29yZF9iZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50MzJfdCBhZGRyKQotK3sKLSsgICAgdWludDMyX3Qgb2Zmc2V0ID0gYWRkciAmIHZnYS0+dmJlX3NpemVfbWFzayAmIH4xOwotKyAgICB1aW50MTZfdCAqcHRyID0gKHVpbnQxNl90ICopKHZnYS0+dnJhbV9wdHIgKyBvZmZzZXQpOwotKyAgICByZXR1cm4gbGR1d19iZV9wKHB0cik7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgdmdhX3JlYWRfZHdvcmRfbGUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDMyX3QgYWRkcikKLSt7Ci0rICAgIHVpbnQzMl90IG9mZnNldCA9IGFkZHIgJiB2Z2EtPnZiZV9zaXplX21hc2sgJiB+MzsKLSsgICAgdWludDMyX3QgKnB0ciA9ICh1aW50MzJfdCAqKSh2Z2EtPnZyYW1fcHRyICsgb2Zmc2V0KTsKLSsgICAgcmV0dXJuIGxkbF9sZV9wKHB0cik7Ci0rfQotKwotIC8qCi0gICogNCBjb2xvciBtb2RlCi0gICovCi0tc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTIoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKLStzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMihWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKLSB7Ci0gICAgIHVpbnQzMl90IHBsYW5lX21hc2ssICpwYWxldHRlLCBkYXRhLCB2OwotICAgICBpbnQgeDsKLSAKLS0gICAgcGFsZXR0ZSA9IHMxLT5sYXN0X3BhbGV0dGU7Ci0tICAgIHBsYW5lX21hc2sgPSBtYXNrMTZbczEtPmFyW1ZHQV9BVENfUExBTkVfRU5BQkxFXSAmIDB4Zl07Ci0rICAgIHBhbGV0dGUgPSB2Z2EtPmxhc3RfcGFsZXR0ZTsKLSsgICAgcGxhbmVfbWFzayA9IG1hc2sxNlt2Z2EtPmFyW1ZHQV9BVENfUExBTkVfRU5BQkxFXSAmIDB4Zl07Ci0gICAgIHdpZHRoID4+PSAzOwotICAgICBmb3IoeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Ci0tICAgICAgICBkYXRhID0gKCh1aW50MzJfdCAqKXMpWzBdOwotKyAgICAgICAgZGF0YSA9IHZnYV9yZWFkX2R3b3JkX2xlKHZnYSwgYWRkcik7Ci0gICAgICAgICBkYXRhICY9IHBsYW5lX21hc2s7Ci0gICAgICAgICB2ID0gZXhwYW5kMltHRVRfUExBTkUoZGF0YSwgMCldOwotICAgICAgICAgdiB8PSBleHBhbmQyW0dFVF9QTEFORShkYXRhLCAyKV0gPDwgMjsKLUBAIC0xMjQsNyArMTUwLDcgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTIoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzZdID0gcGFsZXR0ZVsodiA+PiA0KSAmIDB4Zl07Ci0gICAgICAgICAoKHVpbnQzMl90ICopZClbN10gPSBwYWxldHRlWyh2ID4+IDApICYgMHhmXTsKLSAgICAgICAgIGQgKz0gMzI7Ci0tICAgICAgICBzICs9IDQ7Ci0rICAgICAgICBhZGRyICs9IDQ7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTM0LDE3ICsxNjAsMTcgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTIoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotIC8qCi0gICogNCBjb2xvciBtb2RlLCBkdXAyIGhvcml6b250YWwKLSAgKi8KLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMmQyKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKLStzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMmQyKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCi0gewotICAgICB1aW50MzJfdCBwbGFuZV9tYXNrLCAqcGFsZXR0ZSwgZGF0YSwgdjsKLSAgICAgaW50IHg7Ci0gCi0tICAgIHBhbGV0dGUgPSBzMS0+bGFzdF9wYWxldHRlOwotLSAgICBwbGFuZV9tYXNrID0gbWFzazE2W3MxLT5hcltWR0FfQVRDX1BMQU5FX0VOQUJMRV0gJiAweGZdOwotKyAgICBwYWxldHRlID0gdmdhLT5sYXN0X3BhbGV0dGU7Ci0rICAgIHBsYW5lX21hc2sgPSBtYXNrMTZbdmdhLT5hcltWR0FfQVRDX1BMQU5FX0VOQUJMRV0gJiAweGZdOwotICAgICB3aWR0aCA+Pj0gMzsKLSAgICAgZm9yKHggPSAwOyB4IDwgd2lkdGg7IHgrKykgewotLSAgICAgICAgZGF0YSA9ICgodWludDMyX3QgKilzKVswXTsKLSsgICAgICAgIGRhdGEgPSB2Z2FfcmVhZF9kd29yZF9sZSh2Z2EsIGFkZHIpOwotICAgICAgICAgZGF0YSAmPSBwbGFuZV9tYXNrOwotICAgICAgICAgdiA9IGV4cGFuZDJbR0VUX1BMQU5FKGRhdGEsIDApXTsKLSAgICAgICAgIHYgfD0gZXhwYW5kMltHRVRfUExBTkUoZGF0YSwgMildIDw8IDI7Ci1AQCAtMTYwLDI0ICsxODYsMjQgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTJkMihWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0gICAgICAgICBQVVRfUElYRUwyKGQsIDYsIHBhbGV0dGVbKHYgPj4gNCkgJiAweGZdKTsKLSAgICAgICAgIFBVVF9QSVhFTDIoZCwgNywgcGFsZXR0ZVsodiA+PiAwKSAmIDB4Zl0pOwotICAgICAgICAgZCArPSA2NDsKLS0gICAgICAgIHMgKz0gNDsKLSsgICAgICAgIGFkZHIgKz0gNDsKLSAgICAgfQotIH0KLSAKLSAvKgotICAqIDE2IGNvbG9yIG1vZGUKLSAgKi8KLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lNChWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQotK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU0KFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQotIHsKLSAgICAgdWludDMyX3QgcGxhbmVfbWFzaywgZGF0YSwgdiwgKnBhbGV0dGU7Ci0gICAgIGludCB4OwotIAotLSAgICBwYWxldHRlID0gczEtPmxhc3RfcGFsZXR0ZTsKLS0gICAgcGxhbmVfbWFzayA9IG1hc2sxNltzMS0+YXJbVkdBX0FUQ19QTEFORV9FTkFCTEVdICYgMHhmXTsKLSsgICAgcGFsZXR0ZSA9IHZnYS0+bGFzdF9wYWxldHRlOwotKyAgICBwbGFuZV9tYXNrID0gbWFzazE2W3ZnYS0+YXJbVkdBX0FUQ19QTEFORV9FTkFCTEVdICYgMHhmXTsKLSAgICAgd2lkdGggPj49IDM7Ci0gICAgIGZvcih4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKLS0gICAgICAgIGRhdGEgPSAoKHVpbnQzMl90ICopcylbMF07Ci0rICAgICAgICBkYXRhID0gdmdhX3JlYWRfZHdvcmRfbGUodmdhLCBhZGRyKTsKLSAgICAgICAgIGRhdGEgJj0gcGxhbmVfbWFzazsKLSAgICAgICAgIHYgPSBleHBhbmQ0W0dFVF9QTEFORShkYXRhLCAwKV07Ci0gICAgICAgICB2IHw9IGV4cGFuZDRbR0VUX1BMQU5FKGRhdGEsIDEpXSA8PCAxOwotQEAgLTE5MiwyNCArMjE4LDI0IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU0KFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLSAgICAgICAgICgodWludDMyX3QgKilkKVs2XSA9IHBhbGV0dGVbKHYgPj4gNCkgJiAweGZdOwotICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzddID0gcGFsZXR0ZVsodiA+PiAwKSAmIDB4Zl07Ci0gICAgICAgICBkICs9IDMyOwotLSAgICAgICAgcyArPSA0OwotKyAgICAgICAgYWRkciArPSA0OwotICAgICB9Ci0gfQotIAotIC8qCi0gICogMTYgY29sb3IgbW9kZSwgZHVwMiBob3Jpem9udGFsCi0gICovCi0tc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTRkMihWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCi0rc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTRkMihWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQotIHsKLSAgICAgdWludDMyX3QgcGxhbmVfbWFzaywgZGF0YSwgdiwgKnBhbGV0dGU7Ci0gICAgIGludCB4OwotIAotLSAgICBwYWxldHRlID0gczEtPmxhc3RfcGFsZXR0ZTsKLS0gICAgcGxhbmVfbWFzayA9IG1hc2sxNltzMS0+YXJbVkdBX0FUQ19QTEFORV9FTkFCTEVdICYgMHhmXTsKLSsgICAgcGFsZXR0ZSA9IHZnYS0+bGFzdF9wYWxldHRlOwotKyAgICBwbGFuZV9tYXNrID0gbWFzazE2W3ZnYS0+YXJbVkdBX0FUQ19QTEFORV9FTkFCTEVdICYgMHhmXTsKLSAgICAgd2lkdGggPj49IDM7Ci0gICAgIGZvcih4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKLS0gICAgICAgIGRhdGEgPSAoKHVpbnQzMl90ICopcylbMF07Ci0rICAgICAgICBkYXRhID0gdmdhX3JlYWRfZHdvcmRfbGUodmdhLCBhZGRyKTsKLSAgICAgICAgIGRhdGEgJj0gcGxhbmVfbWFzazsKLSAgICAgICAgIHYgPSBleHBhbmQ0W0dFVF9QTEFORShkYXRhLCAwKV07Ci0gICAgICAgICB2IHw9IGV4cGFuZDRbR0VUX1BMQU5FKGRhdGEsIDEpXSA8PCAxOwotQEAgLTIyNCw3ICsyNTAsNyBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lNGQyKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLSAgICAgICAgIFBVVF9QSVhFTDIoZCwgNiwgcGFsZXR0ZVsodiA+PiA0KSAmIDB4Zl0pOwotICAgICAgICAgUFVUX1BJWEVMMihkLCA3LCBwYWxldHRlWyh2ID4+IDApICYgMHhmXSk7Ci0gICAgICAgICBkICs9IDY0OwotLSAgICAgICAgcyArPSA0OwotKyAgICAgICAgYWRkciArPSA0OwotICAgICB9Ci0gfQotIAotQEAgLTIzMywyMSArMjU5LDIxIEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU0ZDIoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotICAqCi0gICogWFhYOiBhZGQgcGxhbmVfbWFzayBzdXBwb3J0IChuZXZlciB1c2VkIGluIHN0YW5kYXJkIFZHQSBtb2RlcykKLSAgKi8KLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lOGQyKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKLStzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lOGQyKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCi0gewotICAgICB1aW50MzJfdCAqcGFsZXR0ZTsKLSAgICAgaW50IHg7Ci0gCi0tICAgIHBhbGV0dGUgPSBzMS0+bGFzdF9wYWxldHRlOwotKyAgICBwYWxldHRlID0gdmdhLT5sYXN0X3BhbGV0dGU7Ci0gICAgIHdpZHRoID4+PSAzOwotICAgICBmb3IoeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Ci0tICAgICAgICBQVVRfUElYRUwyKGQsIDAsIHBhbGV0dGVbc1swXV0pOwotLSAgICAgICAgUFVUX1BJWEVMMihkLCAxLCBwYWxldHRlW3NbMV1dKTsKLS0gICAgICAgIFBVVF9QSVhFTDIoZCwgMiwgcGFsZXR0ZVtzWzJdXSk7Ci0tICAgICAgICBQVVRfUElYRUwyKGQsIDMsIHBhbGV0dGVbc1szXV0pOwotKyAgICAgICAgUFVUX1BJWEVMMihkLCAwLCBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMCldKTsKLSsgICAgICAgIFBVVF9QSVhFTDIoZCwgMSwgcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDEpXSk7Ci0rICAgICAgICBQVVRfUElYRUwyKGQsIDIsIHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAyKV0pOwotKyAgICAgICAgUFVUX1BJWEVMMihkLCAzLCBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMyldKTsKLSAgICAgICAgIGQgKz0gMzI7Ci0tICAgICAgICBzICs9IDQ7Ci0rICAgICAgICBhZGRyICs9IDQ7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMjU2LDYzICsyODIsNjMgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZThkMihWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0gICoKLSAgKiBYWFg6IGFkZCBwbGFuZV9tYXNrIHN1cHBvcnQgKG5ldmVyIHVzZWQgaW4gc3RhbmRhcmQgVkdBIG1vZGVzKQotICAqLwotLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU4KFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCi0rc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTgoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCi0gewotICAgICB1aW50MzJfdCAqcGFsZXR0ZTsKLSAgICAgaW50IHg7Ci0gCi0tICAgIHBhbGV0dGUgPSBzMS0+bGFzdF9wYWxldHRlOwotKyAgICBwYWxldHRlID0gdmdhLT5sYXN0X3BhbGV0dGU7Ci0gICAgIHdpZHRoID4+PSAzOwotICAgICBmb3IoeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Ci0tICAgICAgICAoKHVpbnQzMl90ICopZClbMF0gPSBwYWxldHRlW3NbMF1dOwotLSAgICAgICAgKCh1aW50MzJfdCAqKWQpWzFdID0gcGFsZXR0ZVtzWzFdXTsKLS0gICAgICAgICgodWludDMyX3QgKilkKVsyXSA9IHBhbGV0dGVbc1syXV07Ci0tICAgICAgICAoKHVpbnQzMl90ICopZClbM10gPSBwYWxldHRlW3NbM11dOwotLSAgICAgICAgKCh1aW50MzJfdCAqKWQpWzRdID0gcGFsZXR0ZVtzWzRdXTsKLS0gICAgICAgICgodWludDMyX3QgKilkKVs1XSA9IHBhbGV0dGVbc1s1XV07Ci0tICAgICAgICAoKHVpbnQzMl90ICopZClbNl0gPSBwYWxldHRlW3NbNl1dOwotLSAgICAgICAgKCh1aW50MzJfdCAqKWQpWzddID0gcGFsZXR0ZVtzWzddXTsKLSsgICAgICAgICgodWludDMyX3QgKilkKVswXSA9IHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAwKV07Ci0rICAgICAgICAoKHVpbnQzMl90ICopZClbMV0gPSBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMSldOwotKyAgICAgICAgKCh1aW50MzJfdCAqKWQpWzJdID0gcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDIpXTsKLSsgICAgICAgICgodWludDMyX3QgKilkKVszXSA9IHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAzKV07Ci0rICAgICAgICAoKHVpbnQzMl90ICopZClbNF0gPSBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgNCldOwotKyAgICAgICAgKCh1aW50MzJfdCAqKWQpWzVdID0gcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDUpXTsKLSsgICAgICAgICgodWludDMyX3QgKilkKVs2XSA9IHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyA2KV07Ci0rICAgICAgICAoKHVpbnQzMl90ICopZClbN10gPSBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgNyldOwotICAgICAgICAgZCArPSAzMjsKLS0gICAgICAgIHMgKz0gODsKLSsgICAgICAgIGFkZHIgKz0gODsKLSAgICAgfQotIH0KLSAKLSAvKgotICAqIDE1IGJpdCBjb2xvcgotICAqLwotLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUxNV9sZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKLStzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMTVfbGUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQotIHsKLSAgICAgaW50IHc7Ci0gICAgIHVpbnQzMl90IHYsIHIsIGcsIGI7Ci0gCi0gICAgIHcgPSB3aWR0aDsKLSAgICAgZG8gewotLSAgICAgICAgdiA9IGxkdXdfbGVfcCgodm9pZCAqKXMpOwotKyAgICAgICAgdiA9IHZnYV9yZWFkX3dvcmRfbGUodmdhLCBhZGRyKTsKLSAgICAgICAgIHIgPSAodiA+PiA3KSAmIDB4Zjg7Ci0gICAgICAgICBnID0gKHYgPj4gMikgJiAweGY4OwotICAgICAgICAgYiA9ICh2IDw8IDMpICYgMHhmODsKLSAgICAgICAgICgodWludDMyX3QgKilkKVswXSA9IHJnYl90b19waXhlbDMyKHIsIGcsIGIpOwotLSAgICAgICAgcyArPSAyOwotKyAgICAgICAgYWRkciArPSAyOwotICAgICAgICAgZCArPSA0OwotICAgICB9IHdoaWxlICgtLXcgIT0gMCk7Ci0gfQotIAotLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUxNV9iZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKLStzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMTVfYmUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQotIHsKLSAgICAgaW50IHc7Ci0gICAgIHVpbnQzMl90IHYsIHIsIGcsIGI7Ci0gCi0gICAgIHcgPSB3aWR0aDsKLSAgICAgZG8gewotLSAgICAgICAgdiA9IGxkdXdfYmVfcCgodm9pZCAqKXMpOwotKyAgICAgICAgdiA9IHZnYV9yZWFkX3dvcmRfYmUodmdhLCBhZGRyKTsKLSAgICAgICAgIHIgPSAodiA+PiA3KSAmIDB4Zjg7Ci0gICAgICAgICBnID0gKHYgPj4gMikgJiAweGY4OwotICAgICAgICAgYiA9ICh2IDw8IDMpICYgMHhmODsKLSAgICAgICAgICgodWludDMyX3QgKilkKVswXSA9IHJnYl90b19waXhlbDMyKHIsIGcsIGIpOwotLSAgICAgICAgcyArPSAyOwotKyAgICAgICAgYWRkciArPSAyOwotICAgICAgICAgZCArPSA0OwotICAgICB9IHdoaWxlICgtLXcgIT0gMCk7Ci0gfQotQEAgLTMyMCwzOCArMzQ2LDM4IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUxNV9iZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0gLyoKLSAgKiAxNiBiaXQgY29sb3IKLSAgKi8KLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMTZfbGUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCi0rc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTE2X2xlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKLSB7Ci0gICAgIGludCB3OwotICAgICB1aW50MzJfdCB2LCByLCBnLCBiOwotIAotICAgICB3ID0gd2lkdGg7Ci0gICAgIGRvIHsKLS0gICAgICAgIHYgPSBsZHV3X2xlX3AoKHZvaWQgKilzKTsKLSsgICAgICAgIHYgPSB2Z2FfcmVhZF93b3JkX2xlKHZnYSwgYWRkcik7Ci0gICAgICAgICByID0gKHYgPj4gOCkgJiAweGY4OwotICAgICAgICAgZyA9ICh2ID4+IDMpICYgMHhmYzsKLSAgICAgICAgIGIgPSAodiA8PCAzKSAmIDB4Zjg7Ci0gICAgICAgICAoKHVpbnQzMl90ICopZClbMF0gPSByZ2JfdG9fcGl4ZWwzMihyLCBnLCBiKTsKLS0gICAgICAgIHMgKz0gMjsKLSsgICAgICAgIGFkZHIgKz0gMjsKLSAgICAgICAgIGQgKz0gNDsKLSAgICAgfSB3aGlsZSAoLS13ICE9IDApOwotIH0KLSAKLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMTZfYmUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCi0rc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTE2X2JlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKLSB7Ci0gICAgIGludCB3OwotICAgICB1aW50MzJfdCB2LCByLCBnLCBiOwotIAotICAgICB3ID0gd2lkdGg7Ci0gICAgIGRvIHsKLS0gICAgICAgIHYgPSBsZHV3X2JlX3AoKHZvaWQgKilzKTsKLSsgICAgICAgIHYgPSB2Z2FfcmVhZF93b3JkX2JlKHZnYSwgYWRkcik7Ci0gICAgICAgICByID0gKHYgPj4gOCkgJiAweGY4OwotICAgICAgICAgZyA9ICh2ID4+IDMpICYgMHhmYzsKLSAgICAgICAgIGIgPSAodiA8PCAzKSAmIDB4Zjg7Ci0gICAgICAgICAoKHVpbnQzMl90ICopZClbMF0gPSByZ2JfdG9fcGl4ZWwzMihyLCBnLCBiKTsKLS0gICAgICAgIHMgKz0gMjsKLSsgICAgICAgIGFkZHIgKz0gMjsKLSAgICAgICAgIGQgKz0gNDsKLSAgICAgfSB3aGlsZSAoLS13ICE9IDApOwotIH0KLUBAIC0zNTksMzYgKzM4NSwzNiBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMTZfYmUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotIC8qCi0gICogMjQgYml0IGNvbG9yCi0gICovCi0tc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTI0X2xlKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQotK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyNF9sZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCi0gewotICAgICBpbnQgdzsKLSAgICAgdWludDMyX3QgciwgZywgYjsKLSAKLSAgICAgdyA9IHdpZHRoOwotICAgICBkbyB7Ci0tICAgICAgICBiID0gc1swXTsKLS0gICAgICAgIGcgPSBzWzFdOwotLSAgICAgICAgciA9IHNbMl07Ci0rICAgICAgICBiID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAwKTsKLSsgICAgICAgIGcgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDEpOwotKyAgICAgICAgciA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMik7Ci0gICAgICAgICAoKHVpbnQzMl90ICopZClbMF0gPSByZ2JfdG9fcGl4ZWwzMihyLCBnLCBiKTsKLS0gICAgICAgIHMgKz0gMzsKLSsgICAgICAgIGFkZHIgKz0gMzsKLSAgICAgICAgIGQgKz0gNDsKLSAgICAgfSB3aGlsZSAoLS13ICE9IDApOwotIH0KLSAKLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMjRfYmUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCi0rc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTI0X2JlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKLSB7Ci0gICAgIGludCB3OwotICAgICB1aW50MzJfdCByLCBnLCBiOwotIAotICAgICB3ID0gd2lkdGg7Ci0gICAgIGRvIHsKLS0gICAgICAgIHIgPSBzWzBdOwotLSAgICAgICAgZyA9IHNbMV07Ci0tICAgICAgICBiID0gc1syXTsKLSsgICAgICAgIHIgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDApOwotKyAgICAgICAgZyA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMSk7Ci0rICAgICAgICBiID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAyKTsKLSAgICAgICAgICgodWludDMyX3QgKilkKVswXSA9IHJnYl90b19waXhlbDMyKHIsIGcsIGIpOwotLSAgICAgICAgcyArPSAzOwotKyAgICAgICAgYWRkciArPSAzOwotICAgICAgICAgZCArPSA0OwotICAgICB9IHdoaWxlICgtLXcgIT0gMCk7Ci0gfQotQEAgLTM5Niw0NCArNDIyLDM2IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyNF9iZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCi0gLyoKLSAgKiAzMiBiaXQgY29sb3IKLSAgKi8KLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMzJfbGUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCi0rc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTMyX2xlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKLSB7Ci0tI2lmbmRlZiBIT1NUX1dPUkRTX0JJR0VORElBTgotLSAgICBtZW1jcHkoZCwgcywgd2lkdGggKiA0KTsKLS0jZWxzZQotICAgICBpbnQgdzsKLSAgICAgdWludDMyX3QgciwgZywgYjsKLSAKLSAgICAgdyA9IHdpZHRoOwotICAgICBkbyB7Ci0tICAgICAgICBiID0gc1swXTsKLS0gICAgICAgIGcgPSBzWzFdOwotLSAgICAgICAgciA9IHNbMl07Ci0rICAgICAgICBiID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAwKTsKLSsgICAgICAgIGcgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDEpOwotKyAgICAgICAgciA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMik7Ci0gICAgICAgICAoKHVpbnQzMl90ICopZClbMF0gPSByZ2JfdG9fcGl4ZWwzMihyLCBnLCBiKTsKLS0gICAgICAgIHMgKz0gNDsKLSsgICAgICAgIGFkZHIgKz0gNDsKLSAgICAgICAgIGQgKz0gNDsKLSAgICAgfSB3aGlsZSAoLS13ICE9IDApOwotLSNlbmRpZgotIH0KLSAKLS1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMzJfYmUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCi0rc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTMyX2JlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKLSB7Ci0tI2lmZGVmIEhPU1RfV09SRFNfQklHRU5ESUFOCi0tICAgIG1lbWNweShkLCBzLCB3aWR0aCAqIDQpOwotLSNlbHNlCi0gICAgIGludCB3OwotICAgICB1aW50MzJfdCByLCBnLCBiOwotIAotICAgICB3ID0gd2lkdGg7Ci0gICAgIGRvIHsKLS0gICAgICAgIHIgPSBzWzFdOwotLSAgICAgICAgZyA9IHNbMl07Ci0tICAgICAgICBiID0gc1szXTsKLSsgICAgICAgIHIgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDEpOwotKyAgICAgICAgZyA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMik7Ci0rICAgICAgICBiID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAzKTsKLSAgICAgICAgICgodWludDMyX3QgKilkKVswXSA9IHJnYl90b19waXhlbDMyKHIsIGcsIGIpOwotLSAgICAgICAgcyArPSA0OwotKyAgICAgICAgYWRkciArPSA0OwotICAgICAgICAgZCArPSA0OwotICAgICB9IHdoaWxlICgtLXcgIT0gMCk7Ci0tI2VuZGlmCi0gfQotZGlmZiAtLWdpdCBhL2h3L2Rpc3BsYXkvdmdhLmMgYi9ody9kaXNwbGF5L3ZnYS5jCi1pbmRleCBhZDdhNDY1Li42ZmM4Yzg3IDEwMDY0NAotLS0tIGEvaHcvZGlzcGxheS92Z2EuYwotKysrIGIvaHcvZGlzcGxheS92Z2EuYwotQEAgLTEwMDUsNyArMTAwNSw3IEBAIHZvaWQgdmdhX21lbV93cml0ZWIoVkdBQ29tbW9uU3RhdGUgKnMsIGh3YWRkciBhZGRyLCB1aW50MzJfdCB2YWwpCi0gfQotIAotIHR5cGVkZWYgdm9pZCB2Z2FfZHJhd19saW5lX2Z1bmMoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNyY2FkZHIsIGludCB3aWR0aCk7Ci0gCi0gI2luY2x1ZGUgInZnYS1oZWxwZXJzLmgiCi0gCi1AQCAtMTY2Niw3ICsxNjY2LDcgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfZ3JhcGhpYyhWR0FDb21tb25TdGF0ZSAqcywgaW50IGZ1bGxfdXBkYXRlKQotICAgICAgICAgICAgIGlmICh5X3N0YXJ0IDwgMCkKLSAgICAgICAgICAgICAgICAgeV9zdGFydCA9IHk7Ci0gICAgICAgICAgICAgaWYgKCEoaXNfYnVmZmVyX3NoYXJlZChzdXJmYWNlKSkpIHsKLS0gICAgICAgICAgICAgICAgdmdhX2RyYXdfbGluZShzLCBkLCBzLT52cmFtX3B0ciArIGFkZHIsIHdpZHRoKTsKLSsgICAgICAgICAgICAgICAgdmdhX2RyYXdfbGluZShzLCBkLCBhZGRyLCB3aWR0aCk7Ci0gICAgICAgICAgICAgICAgIGlmIChzLT5jdXJzb3JfZHJhd19saW5lKQotICAgICAgICAgICAgICAgICAgICAgcy0+Y3Vyc29yX2RyYXdfbGluZShzLCBkLCB5KTsKLSAgICAgICAgICAgICB9Ci1AQCAtMjE3MCw2ICsyMTcwLDcgQEAgdm9pZCB2Z2FfY29tbW9uX2luaXQoVkdBQ29tbW9uU3RhdGUgKnMsIE9iamVjdCAqb2JqLCBib29sIGdsb2JhbF92bXN0YXRlKQotICAgICBpZiAoIXMtPnZiZV9zaXplKSB7Ci0gICAgICAgICBzLT52YmVfc2l6ZSA9IHMtPnZyYW1fc2l6ZTsKLSAgICAgfQotKyAgICBzLT52YmVfc2l6ZV9tYXNrID0gcy0+dmJlX3NpemUgLSAxOwotIAotICAgICBzLT5pc192YmVfdm1zdGF0ZSA9IDE7Ci0gICAgIG1lbW9yeV9yZWdpb25faW5pdF9yYW1fbm9taWdyYXRlKCZzLT52cmFtLCBvYmosICJ2Z2EudnJhbSIsIHMtPnZyYW1fc2l6ZSwKLWRpZmYgLS1naXQgYS9ody9kaXNwbGF5L3ZnYV9pbnQuaCBiL2h3L2Rpc3BsYXkvdmdhX2ludC5oCi1pbmRleCBkZDZjOTU4Li5hZDM0YTFmIDEwMDY0NAotLS0tIGEvaHcvZGlzcGxheS92Z2FfaW50LmgKLSsrKyBiL2h3L2Rpc3BsYXkvdmdhX2ludC5oCi1AQCAtOTQsNiArOTQsNyBAQCB0eXBlZGVmIHN0cnVjdCBWR0FDb21tb25TdGF0ZSB7Ci0gICAgIHVpbnQzMl90IHZyYW1fc2l6ZTsKLSAgICAgdWludDMyX3QgdnJhbV9zaXplX21iOyAvKiBwcm9wZXJ0eSAqLwotICAgICB1aW50MzJfdCB2YmVfc2l6ZTsKLSsgICAgdWludDMyX3QgdmJlX3NpemVfbWFzazsKLSAgICAgdWludDMyX3QgbGF0Y2g7Ci0gICAgIGJvb2wgaGFzX2NoYWluNF9hbGlhczsKLSAgICAgTWVtb3J5UmVnaW9uIGNoYWluNF9hbGlhczsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTM2NzMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNy0xMzY3My5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2QwNjk1Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNy0xMzY3My5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLUZyb20gZTY1Mjk0MTU3ZDRiNjkzOTNiM2Y4MTljOTlmNGY2NDc0NTJiNDhlMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAyOCBBdWcgMjAxNyAxNDozMzowNyArMDIwMAotU3ViamVjdDogW1BBVENIXSB2Z2E6IGZpeCBkaXNwbGF5IHVwZGF0ZSByZWdpb24gY2FsY3VsYXRpb24gKHNwbGl0IHNjcmVlbikKLQotdmdhIGRpc3BsYXkgdXBkYXRlIG1pcy1jYWxjdWxhdGVkIHRoZSByZWdpb24gZm9yIHRoZSBkaXJ0eSBiaXRtYXAKLXNuYXBzaG90IGluIGNhc2Ugc3BsaXQgc2NyZWVuIG1vZGUgaXMgdXNlZC4gIFRoaXMgY2FuIHRyaWdnZXIgYW4KLWFzc2VydCBpbiBjcHVfcGh5c2ljYWxfbWVtb3J5X3NuYXBzaG90X2dldF9kaXJ0eSgpLgotCi1JbXBhY3Q6ICBEb1MgZm9yIHByaXZpbGVnZWQgZ3Vlc3QgdXNlcnMuCi0KLUZpeGVzOiBDVkUtMjAxNy0xMzY3MwotRml4ZXM6IGZlYzVlOGM5MmJlY2FkMjIzZGY5ZDk3Mjc3MDUyMmY2NGFhZmRiNzIKLUNjOiBQIEogUCA8cHBhbmRpdEByZWRoYXQuY29tPgotUmVwb3J0ZWQtYnk6IERhdmlkIEJ1Y2hhbmFuIDxkQHZpZGJ1Y2hhbmFuLmNvLnVrPgotU2lnbmVkLW9mZi1ieTogR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+Ci1NZXNzYWdlLWlkOiAyMDE3MDgyODEyMzMwNy4xNTM5Mi0xLWtyYXhlbEByZWRoYXQuY29tCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdC5xZW11Lm9yZy8/cD1xZW11LmdpdDthPWNvbW1pdDtoPWU2NTI5NDE1N2Q0YjY5MzkzYjNmODE5Yzk5ZjRmNjQ3NDUyYjQ4ZTNdCi0KLUNWRTogQ1ZFLTIwMTctMTM2NzMKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gaHcvZGlzcGxheS92Z2EuYyB8IDEwICsrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaHcvZGlzcGxheS92Z2EuYyBiL2h3L2Rpc3BsYXkvdmdhLmMKLWluZGV4IDM0MzMxMDIuLmFkN2E0NjUgMTAwNjQ0Ci0tLS0gYS9ody9kaXNwbGF5L3ZnYS5jCi0rKysgYi9ody9kaXNwbGF5L3ZnYS5jCi1AQCAtMTYyOCw5ICsxNjI4LDE1IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2dyYXBoaWMoVkdBQ29tbW9uU3RhdGUgKnMsIGludCBmdWxsX3VwZGF0ZSkKLSAgICAgeTEgPSAwOwotIAotICAgICBpZiAoIWZ1bGxfdXBkYXRlKSB7Ci0rICAgICAgICByYW1fYWRkcl90IHJlZ2lvbl9zdGFydCA9IGFkZHIxOwotKyAgICAgICAgcmFtX2FkZHJfdCByZWdpb25fZW5kID0gYWRkcjEgKyBsaW5lX29mZnNldCAqIGhlaWdodDsKLSAgICAgICAgIHZnYV9zeW5jX2RpcnR5X2JpdG1hcChzKTsKLS0gICAgICAgIHNuYXAgPSBtZW1vcnlfcmVnaW9uX3NuYXBzaG90X2FuZF9jbGVhcl9kaXJ0eSgmcy0+dnJhbSwgYWRkcjEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9vZmZzZXQgKiBoZWlnaHQsCi0rICAgICAgICBpZiAocy0+bGluZV9jb21wYXJlIDwgaGVpZ2h0KSB7Ci0rICAgICAgICAgICAgLyogc3BsaXQgc2NyZWVuIG1vZGUgKi8KLSsgICAgICAgICAgICByZWdpb25fc3RhcnQgPSAwOwotKyAgICAgICAgfQotKyAgICAgICAgc25hcCA9IG1lbW9yeV9yZWdpb25fc25hcHNob3RfYW5kX2NsZWFyX2RpcnR5KCZzLT52cmFtLCByZWdpb25fc3RhcnQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW9uX2VuZCAtIHJlZ2lvbl9zdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBESVJUWV9NRU1PUllfVkdBKTsKLSAgICAgfQotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNy0xMzcxMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTEzNzExLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTJmNzNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTEzNzExLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotRnJvbSAxMjAxZDMwODUxOWYxZTkxNTg2NmQ3NTgzZDUxMzZkMDNjYzFkMzg0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU2FtdWVsIFRoaWJhdWx0IDxzYW11ZWwudGhpYmF1bHRAZW5zLWx5b24ub3JnPgotRGF0ZTogRnJpLCAyNSBBdWcgMjAxNyAwMTozNTo1MyArMDIwMAotU3ViamVjdDogW1BBVENIXSBzbGlycDogZml4IGNsZWFyaW5nIGlmcV9zbyBmcm9tIHBlbmRpbmcgcGFja2V0cwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1UaGUgaWZfZmFzdHEgYW5kIGlmX2JhdGNocSBjb250YWluIG5vdCBvbmx5IHBhY2tldHMsIGJ1dCBxdWV1ZXMgb2YgcGFja2V0cwotZm9yIHRoZSBzYW1lIHNvY2tldC4gV2hlbiBzb2ZyZWUgZnJlZXMgYSBzb2NrZXQsIGl0IHRodXMgaGFzIHRvIGNsZWFyIGlmcV9zbwotZnJvbSBhbGwgdGhlIHBhY2tldHMgZnJvbSB0aGUgcXVldWVzLCBub3Qgb25seSB0aGUgZmlyc3QuCi0KLVNpZ25lZC1vZmYtYnk6IFNhbXVlbCBUaGliYXVsdCA8c2FtdWVsLnRoaWJhdWx0QGVucy1seW9uLm9yZz4KLVJldmlld2VkLWJ5OiBQaGlsaXBwZSBNYXRoaWV1LURhdWTDqSA8ZjRidWdAYW1zYXQub3JnPgotQ2M6IHFlbXUtc3RhYmxlQG5vbmdudS5vcmcKLVNpZ25lZC1vZmYtYnk6IFBldGVyIE1heWRlbGwgPHBldGVyLm1heWRlbGxAbGluYXJvLm9yZz4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vZ2l0LnFlbXUub3JnLz9wPXFlbXUuZ2l0O2E9Y29tbWl0O2g9MTIwMWQzMDg1MTlmMWU5MTU4NjZkNzU4M2Q1MTM2ZDAzY2MxZDM4NF0KLQotQ1ZFOiBDVkUtMjAxNy0xMzcxMQotCi1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzbGlycC9zb2NrZXQuYyB8IDM5ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NsaXJwL3NvY2tldC5jIGIvc2xpcnAvc29ja2V0LmMKLWluZGV4IGVjZWMwMjkuLmNiN2I1YjYgMTAwNjQ0Ci0tLS0gYS9zbGlycC9zb2NrZXQuYwotKysrIGIvc2xpcnAvc29ja2V0LmMKLUBAIC02MCwyOSArNjAsMzYgQEAgc29jcmVhdGUoU2xpcnAgKnNsaXJwKQotIH0KLSAKLSAvKgotKyAqIFJlbW92ZSByZWZlcmVuY2VzIHRvIHNvIGZyb20gdGhlIGdpdmVuIG1lc3NhZ2UgcXVldWUuCi0rICovCi0rc3RhdGljIHZvaWQKLStzb3FmcmVlKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgcXVlaGVhZCAqcWgpCi0rewotKyAgICBzdHJ1Y3QgbWJ1ZiAqaWZxOwotKwotKyAgICBmb3IgKGlmcSA9IChzdHJ1Y3QgbWJ1ZiAqKSBxaC0+cWhfbGluazsKLSsgICAgICAgICAgICAgKHN0cnVjdCBxdWVoZWFkICopIGlmcSAhPSBxaDsKLSsgICAgICAgICAgICAgaWZxID0gaWZxLT5pZnFfbmV4dCkgewotKyAgICAgICAgaWYgKGlmcS0+aWZxX3NvID09IHNvKSB7Ci0rICAgICAgICAgICAgc3RydWN0IG1idWYgKmlmbTsKLSsgICAgICAgICAgICBpZnEtPmlmcV9zbyA9IE5VTEw7Ci0rICAgICAgICAgICAgZm9yIChpZm0gPSBpZnEtPmlmc19uZXh0OyBpZm0gIT0gaWZxOyBpZm0gPSBpZm0tPmlmc19uZXh0KSB7Ci0rICAgICAgICAgICAgICAgIGlmbS0+aWZxX3NvID0gTlVMTDsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICB9Ci0rICAgIH0KLSt9Ci0rCi0rLyoKLSAgKiByZW1xdWUgYW5kIGZyZWUgYSBzb2NrZXQsIGNsb2JiZXIgY2FjaGUKLSAgKi8KLSB2b2lkCi0gc29mcmVlKHN0cnVjdCBzb2NrZXQgKnNvKQotIHsKLSAgIFNsaXJwICpzbGlycCA9IHNvLT5zbGlycDsKLS0gIHN0cnVjdCBtYnVmICppZm07Ci0gCi0tICBmb3IgKGlmbSA9IChzdHJ1Y3QgbWJ1ZiAqKSBzbGlycC0+aWZfZmFzdHEucWhfbGluazsKLS0gICAgICAgKHN0cnVjdCBxdWVoZWFkICopIGlmbSAhPSAmc2xpcnAtPmlmX2Zhc3RxOwotLSAgICAgICBpZm0gPSBpZm0tPmlmcV9uZXh0KSB7Ci0tICAgIGlmIChpZm0tPmlmcV9zbyA9PSBzbykgewotLSAgICAgIGlmbS0+aWZxX3NvID0gTlVMTDsKLS0gICAgfQotLSAgfQotLQotLSAgZm9yIChpZm0gPSAoc3RydWN0IG1idWYgKikgc2xpcnAtPmlmX2JhdGNocS5xaF9saW5rOwotLSAgICAgICAoc3RydWN0IHF1ZWhlYWQgKikgaWZtICE9ICZzbGlycC0+aWZfYmF0Y2hxOwotLSAgICAgICBpZm0gPSBpZm0tPmlmcV9uZXh0KSB7Ci0tICAgIGlmIChpZm0tPmlmcV9zbyA9PSBzbykgewotLSAgICAgIGlmbS0+aWZxX3NvID0gTlVMTDsKLS0gICAgfQotLSAgfQotKyAgc29xZnJlZShzbywgJnNsaXJwLT5pZl9mYXN0cSk7Ci0rICBzb3FmcmVlKHNvLCAmc2xpcnAtPmlmX2JhdGNocSk7Ci0gCi0gICBpZiAoc28tPnNvX2VtdT09RU1VX1JTSCAmJiBzby0+ZXh0cmEpIHsKLSAJc29mcmVlKHNvLT5leHRyYSk7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTE0MTY3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTQxNjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2OWFkODcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTQxNjcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1Gcm9tIGVkNGY4NmU4YjZlZmY4ZTYwMGM2OWFkZWU2OGM3Y2QzNGRkMmNjY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQcmFzYWQgSiBQYW5kaXQgPHBqcEBmZWRvcmFwcm9qZWN0Lm9yZz4KLURhdGU6IFRodSwgNyBTZXAgMjAxNyAxMjowMjo1NiArMDUzMAotU3ViamVjdDogW1BBVENIXSBtdWx0aWJvb3Q6IHZhbGlkYXRlIG11bHRpYm9vdCBoZWFkZXIgYWRkcmVzcyB2YWx1ZXMKLQotV2hpbGUgbG9hZGluZyBrZXJuZWwgdmlhIG11bHRpYm9vdC12MSBpbWFnZSwgKGZsYWdzICYgMHgwMDAxMDAwMCkKLWluZGljYXRlcyB0aGF0IG11bHRpYm9vdCBoZWFkZXIgY29udGFpbnMgdmFsaWQgYWRkcmVzc2VzIHRvIGxvYWQKLXRoZSBrZXJuZWwgaW1hZ2UuIFRoZXNlIGFkZHJlc3NlcyBhcmUgdXNlZCB0byBjb21wdXRlIGtlcm5lbAotc2l6ZSBhbmQga2VybmVsIHRleHQgb2Zmc2V0IGluIHRoZSBPUyBpbWFnZS4gVmFsaWRhdGUgdGhlc2UKLWFkZHJlc3MgdmFsdWVzIHRvIGF2b2lkIGFuIE9PQiBhY2Nlc3MgaXNzdWUuCi0KLVRoaXMgaXMgQ1ZFLTIwMTctMTQxNjcuCi0KLVJlcG9ydGVkLWJ5OiBUaG9tYXMgR2FybmllciA8dGhnYXJuaWVAZ29vZ2xlLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFByYXNhZCBKIFBhbmRpdCA8cGpwQGZlZG9yYXByb2plY3Qub3JnPgotTWVzc2FnZS1JZDogPDIwMTcwOTA3MDYzMjU2Ljc0MTgtMS1wcGFuZGl0QHJlZGhhdC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBQYW9sbyBCb256aW5pIDxwYm9uemluaUByZWRoYXQuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXQucWVtdS5vcmcvP3A9cWVtdS5naXQ7YT1jb21taXQ7aD1lZDRmODZlOGI2ZWZmOGU2MDBjNjlhZGVlNjhjN2NkMzRkZDJjY2NiXQotCi1DVkU6IENWRS0yMDE3LTE0MTY3Ci0KLVNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGh3L2kzODYvbXVsdGlib290LmMgfCAxOSArKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2h3L2kzODYvbXVsdGlib290LmMgYi9ody9pMzg2L211bHRpYm9vdC5jCi1pbmRleCA2MDAxZjRjLi5jN2I3MGM5IDEwMDY0NAotLS0tIGEvaHcvaTM4Ni9tdWx0aWJvb3QuYwotKysrIGIvaHcvaTM4Ni9tdWx0aWJvb3QuYwotQEAgLTIyMSwxNSArMjIxLDM0IEBAIGludCBsb2FkX211bHRpYm9vdChGV0NmZ1N0YXRlICpmd19jZmcsCi0gICAgICAgICB1aW50MzJfdCBtaF9oZWFkZXJfYWRkciA9IGxkbF9wKGhlYWRlcitpKzEyKTsKLSAgICAgICAgIHVpbnQzMl90IG1oX2xvYWRfZW5kX2FkZHIgPSBsZGxfcChoZWFkZXIraSsyMCk7Ci0gICAgICAgICB1aW50MzJfdCBtaF9ic3NfZW5kX2FkZHIgPSBsZGxfcChoZWFkZXIraSsyNCk7Ci0rCi0gICAgICAgICBtaF9sb2FkX2FkZHIgPSBsZGxfcChoZWFkZXIraSsxNik7Ci0rICAgICAgICBpZiAobWhfaGVhZGVyX2FkZHIgPCBtaF9sb2FkX2FkZHIpIHsKLSsgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImludmFsaWQgbWhfbG9hZF9hZGRyIGFkZHJlc3NcbiIpOwotKyAgICAgICAgICAgIGV4aXQoMSk7Ci0rICAgICAgICB9Ci0rCi0gICAgICAgICB1aW50MzJfdCBtYl9rZXJuZWxfdGV4dF9vZmZzZXQgPSBpIC0gKG1oX2hlYWRlcl9hZGRyIC0gbWhfbG9hZF9hZGRyKTsKLSAgICAgICAgIHVpbnQzMl90IG1iX2xvYWRfc2l6ZSA9IDA7Ci0gICAgICAgICBtaF9lbnRyeV9hZGRyID0gbGRsX3AoaGVhZGVyK2krMjgpOwotIAotICAgICAgICAgaWYgKG1oX2xvYWRfZW5kX2FkZHIpIHsKLSsgICAgICAgICAgICBpZiAobWhfYnNzX2VuZF9hZGRyIDwgbWhfbG9hZF9hZGRyKSB7Ci0rICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiaW52YWxpZCBtaF9ic3NfZW5kX2FkZHIgYWRkcmVzc1xuIik7Ci0rICAgICAgICAgICAgICAgIGV4aXQoMSk7Ci0rICAgICAgICAgICAgfQotICAgICAgICAgICAgIG1iX2tlcm5lbF9zaXplID0gbWhfYnNzX2VuZF9hZGRyIC0gbWhfbG9hZF9hZGRyOwotKwotKyAgICAgICAgICAgIGlmIChtaF9sb2FkX2VuZF9hZGRyIDwgbWhfbG9hZF9hZGRyKSB7Ci0rICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiaW52YWxpZCBtaF9sb2FkX2VuZF9hZGRyIGFkZHJlc3NcbiIpOwotKyAgICAgICAgICAgICAgICBleGl0KDEpOwotKyAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBtYl9sb2FkX3NpemUgPSBtaF9sb2FkX2VuZF9hZGRyIC0gbWhfbG9hZF9hZGRyOwotICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICBpZiAoa2VybmVsX2ZpbGVfc2l6ZSA8IG1iX2tlcm5lbF90ZXh0X29mZnNldCkgewotKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImludmFsaWQga2VybmVsX2ZpbGVfc2l6ZVxuIik7Ci0rICAgICAgICAgICAgICAgIGV4aXQoMSk7Ci0rICAgICAgICAgICAgfQotICAgICAgICAgICAgIG1iX2tlcm5lbF9zaXplID0ga2VybmVsX2ZpbGVfc2l6ZSAtIG1iX2tlcm5lbF90ZXh0X29mZnNldDsKLSAgICAgICAgICAgICBtYl9sb2FkX3NpemUgPSBtYl9rZXJuZWxfc2l6ZTsKLSAgICAgICAgIH0KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvYXBpYy1maXh1cC1mYWxsdGhyb3VnaC10by1QSUMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9hcGljLWZpeHVwLWZhbGx0aHJvdWdoLXRvLVBJQy5wYXRjaAppbmRleCA5YmJiYzZmLi5kNmEzNTIyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9hcGljLWZpeHVwLWZhbGx0aHJvdWdoLXRvLVBJQy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9hcGljLWZpeHVwLWZhbGx0aHJvdWdoLXRvLVBJQy5wYXRjaApAQCAtMjgsMTIgKzI4LDEyIEBACiAgaHcvaW50Yy9hcGljLmMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9ody9pbnRjL2FwaWMuYyBiL2h3L2ludGMvYXBpYy5jCi1pbmRleCA0NTg4N2Q5OS4uYzVhZTQwODcgMTAwNjQ0Ci0tLS0gYS9ody9pbnRjL2FwaWMuYwotKysrIGIvaHcvaW50Yy9hcGljLmMKLUBAIC01ODcsNyArNTg3LDcgQEAgaW50IGFwaWNfYWNjZXB0X3BpY19pbnRyKERldmljZVN0YXRlICpkZXYpCi0gICAgIEFQSUNDb21tb25TdGF0ZSAqcyA9IEFQSUNfQ09NTU9OKGRldik7CitJbmRleDogcWVtdS0yLjExLjEvaHcvaW50Yy9hcGljLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBxZW11LTIuMTEuMS5vcmlnL2h3L2ludGMvYXBpYy5jCisrKysgcWVtdS0yLjExLjEvaHcvaW50Yy9hcGljLmMKK0BAIC01OTEsNyArNTkxLDcgQEAgaW50IGFwaWNfYWNjZXB0X3BpY19pbnRyKERldmljZVN0YXRlICpkZQorICAgICBBUElDQ29tbW9uU3RhdGUgKnMgPSBBUElDKGRldik7CiAgICAgIHVpbnQzMl90IGx2dDA7CiAgCiAtICAgIGlmICghcykKQEAgLTQxLDYgKzQxLDMgQEAKICAgICAgICAgIHJldHVybiAtMTsKICAKICAgICAgbHZ0MCA9IHMtPmx2dFtBUElDX0xWVF9MSU5UMF07Ci0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9jaGFyZGV2LWNvbm5lY3Qtc29ja2V0LXRvLWEtc3Bhd25lZC1jb21tYW5kLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvY2hhcmRldi1jb25uZWN0LXNvY2tldC10by1hLXNwYXduZWQtY29tbWFuZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTZiZjk1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvY2hhcmRldi1jb25uZWN0LXNvY2tldC10by1hLXNwYXduZWQtY29tbWFuZC5wYXRjaApAQCAtMCwwICsxLDI0MiBAQAorRnJvbSAzYmIzMTAwYzIyZWIzMDE0NmE2OTY1NjQ4MGJkZmZlZWY4NjYzNTc1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B4aWxpbnguY29tPgorRGF0ZTogVGh1LCAyMSBEZWMgMjAxNyAxMTozNToxNiAtMDgwMAorU3ViamVjdDogW1BBVENIXSBjaGFyZGV2OiBjb25uZWN0IHNvY2tldCB0byBhIHNwYXduZWQgY29tbWFuZAorCitUaGUgY29tbWFuZCBpcyBzdGFydGVkIGluIGEgc2hlbGwgKHNoIC1jKSB3aXRoIHN0ZGluIGNvbm5lY3QgdG8gUUVNVQordmlhIGEgVW5peCBkb21haW4gc3RyZWFtIHNvY2tldC4gUUVNVSB0aGVuIGV4Y2hhbmdlcyBkYXRhIHZpYSBpdHMgb3duCitlbmQgb2YgdGhlIHNvY2tldCwganVzdCBsaWtlIGl0IG5vcm1hbGx5IGRvZXMuCisKKyItY2hhcmRldiBzb2NrZXQiIHN1cHBvcnRzIHNvbWUgd2F5cyBvZiBjb25uZWN0aW5nIHZpYSBwcm90b2NvbHMgbGlrZQordGVsbmV0LCBidXQgdGhhdCBpcyBvbmx5IGEgc3Vic2V0IG9mIHRoZSBmdW5jdGlvbmFsaXR5IHN1cHBvcnRlZCBieQordG9vbHMgc29jYXQuIFRvIHVzZSBzb2NhdCBpbnN0ZWFkLCBmb3IgZXhhbXBsZSB0byBjb25uZWN0IHZpYSBhIHNvY2tzCitwcm94eSwgdXNlOgorCisgIC1jaGFyZGV2ICdzb2NrZXQsaWQ9c29jYXQsY21kPWV4ZWMgc29jYXQgRkQ6MCBTT0NLUzRBOnNvY2tzLXByb3h5LmxvY2FsZG9tYWluOmV4YW1wbGUuY29tOjk5OTksLHNvY2tzdXNlcj1ub2JvZHknIFwKKyAgLWRldmljZSB1c2Itc2VyaWFsLGNoYXJkZXY9c29jYXQKKworQmV3YXJlIHRoYXQgY29tbWFzIGluIHRoZSBjb21tYW5kIG11c3QgYmUgZXNjYXBlZCBhcyBkb3VibGUgY29tbWFzLgorCitPciBpbnRlcmFjdGl2ZWx5IGluIHRoZSBjb25zb2xlOgorICAgKHFlbXUpIGNoYXJkZXYtYWRkIHNvY2tldCxpZD1jYXQsY21kPWNhdAorICAgKHFlbXUpIGRldmljZV9hZGQgdXNiLXNlcmlhbCxjaGFyZGV2PWNhdAorICAgXmFjCisgICAjIGNhdCA+L2Rldi90dHlVU0IwCisgICBoZWxsbworICAgaGVsbG8KKworQW5vdGhlciB1c2FnZSBpcyBzdGFydGluZyBzd3RwbSBmcm9tIGluc2lkZSBRRU1VLiBzd3RwbSB3aWxsCithdXRvbWF0aWNhbGx5IHNodXQgZG93biBvbmNlIGl0IGxvb3NlcyB0aGUgY29ubmVjdGlvbiB0byB0aGUgcGFyZW50CitRRU1VLCBzbyB0aGVyZSBpcyBubyByaXNrIG9mIGxpbmdlcmluZyBwcm9jZXNzZXM6CisKKyAgLWNoYXJkZXYgJ3NvY2tldCxpZD1jaHJ0cG0wLGNtZD1leGVjIHN3dHBtIHNvY2tldCAtLXRlcm1pbmF0ZSAtLWN0cmwgdHlwZT11bml4aW8sLGNsaWVudGZkPTAgLS10cG1zdGF0ZSBkaXI9Li4uIC0tbG9nIGZpbGU9c3d0cG0ubG9nJyBcCisgIC10cG1kZXYgZW11bGF0b3IsaWQ9dHBtMCxjaGFyZGV2PWNocnRwbTAgXAorICAtZGV2aWNlIHRwbS10aXMsdHBtZGV2PXRwbTAKKworVGhlIHBhdGNoIHdhcyBkaXNjdXNzZWQgdXBzdHJlYW0sIGJ1dCBRRU1VIGRldmVsb3BlcnMgYmVsaWV2ZSB0aGF0IHRoZQorY29kZSBjYWxsaW5nIFFFTVUgc2hvdWxkIGJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBhZGRpdGlvbmFsCitwcm9jZXNzZXMuIEluIE9FLWNvcmUsIHRoYXQgd291bGQgaW1wbHkgZW5oYW5jaW5nIHJ1bnFlbXUgYW5kCitvZXFhLiBUaGlzIHBhdGNoIGlzIGEgc2ltcGxlciBzb2x1dGlvbi4KKworQmVjYXVzZSBpdCBpcyBub3QgZ29pbmcgdXBzdHJlYW0sIHRoZSBwYXRjaCB3YXMgd3JpdHRlbiBzbyB0aGF0IGl0IGlzCithcyBzaW1wbGUgYXMgcG9zc2libGUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KKy0tLQorIGNoYXJkZXYvY2hhci1zb2NrZXQuYyB8IDg2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQorIGNoYXJkZXYvY2hhci5jICAgICAgICB8ICAzICsrCisgcWFwaS9jaGFyLmpzb24gICAgICAgIHwgIDUgKysrCisgMyBmaWxlcyBjaGFuZ2VkLCA5MCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY2hhcmRldi9jaGFyLXNvY2tldC5jIGIvY2hhcmRldi9jaGFyLXNvY2tldC5jCitpbmRleCA1M2VkYThlZjAwLi5mNTY2MTA3YzM1IDEwMDY0NAorLS0tIGEvY2hhcmRldi9jaGFyLXNvY2tldC5jCisrKysgYi9jaGFyZGV2L2NoYXItc29ja2V0LmMKK0BAIC04NTIsNiArODUyLDY4IEBAIHN0YXRpYyBnYm9vbGVhbiBzb2NrZXRfcmVjb25uZWN0X3RpbWVvdXQoZ3BvaW50ZXIgb3BhcXVlKQorICAgICByZXR1cm4gZmFsc2U7CisgfQorIAorKyNpZm5kZWYgX1dJTjMyCisrc3RhdGljIHZvaWQgY2hhcmRldl9vcGVuX3NvY2tldF9jbWQoQ2hhcmRldiAqY2hyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNtZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnJvciAqKmVycnApCisreworKyAgICBpbnQgZmRzWzJdID0geyAtMSwgLTEgfTsKKysgICAgUUlPQ2hhbm5lbFNvY2tldCAqc2lvYyA9IE5VTEw7CisrICAgIHBpZF90IHBpZCA9IC0xOworKyAgICBjb25zdCBjaGFyICphcmd2W10gPSB7ICIvYmluL3NoIiwgIi1jIiwgY21kLCBOVUxMIH07CisrCisrICAgIC8qCisrICAgICAqIFdlIG5lZWQgYSBVbml4IGRvbWFpbiBzb2NrZXQgZm9yIGNvbW1hbmRzIGxpa2Ugc3d0cG0gYW5kIGEgc2luZ2xlCisrICAgICAqIGNvbm5lY3Rpb24sIHRoZXJlZm9yZSB3ZSBjYW5ub3QgdXNlIHFpb19jaGFubmVsX2NvbW1hbmRfbmV3X3NwYXduKCkKKysgICAgICogd2l0aG91dCBwYXRjaGluZyBpdCBmaXJzdC4gRHVwbGljYXRpbmcgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgZWFzaWVyLgorKyAgICAgKi8KKysgICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwgU09DS19TVFJFQU18U09DS19DTE9FWEVDLCAwLCBmZHMpKSB7CisrICAgICAgICBlcnJvcl9zZXRnX2Vycm5vKGVycnAsIGVycm5vLCAiRXJyb3IgY3JlYXRpbmcgc29ja2V0cGFpcihBRl9VTklYLCBTT0NLX1NUUkVBTXxTT0NLX0NMT0VYRUMpIik7CisrICAgICAgICBnb3RvIGVycm9yOworKyAgICB9CisrCisrICAgIHBpZCA9IHFlbXVfZm9yayhlcnJwKTsKKysgICAgaWYgKHBpZCA8IDApIHsKKysgICAgICAgIGdvdG8gZXJyb3I7CisrICAgIH0KKysKKysgICAgaWYgKCFwaWQpIHsKKysgICAgICAgIC8qIGNoaWxkICovCisrICAgICAgICBkdXAyKGZkc1sxXSwgU1RESU5fRklMRU5PKTsKKysgICAgICAgIGV4ZWN2KGFyZ3ZbMF0sIChjaGFyICogY29uc3QgKilhcmd2KTsKKysgICAgICAgIF9leGl0KDEpOworKyAgICB9CisrCisrICAgIC8qCisrICAgICAqIEhhbmQgb3ZlciBvdXIgZW5kIG9mIHRoZSBzb2NrZXQgcGFpciB0byB0aGUgcWlvIGNoYW5uZWwuCisrICAgICAqCisrICAgICAqIFdlIGRvbid0IHJlYXAgdGhlIGNoaWxkIGJlY2F1c2UgaXQgaXMgZXhwZWN0ZWQgdG8ga2VlcAorKyAgICAgKiBydW5uaW5nLiBXZSBhbHNvIGRvbid0IHN1cHBvcnQgdGhlICJyZWNvbm5lY3QiIG9wdGlvbiBmb3IgdGhlCisrICAgICAqIHNhbWUgcmVhc29uLgorKyAgICAgKi8KKysgICAgc2lvYyA9IHFpb19jaGFubmVsX3NvY2tldF9uZXdfZmQoZmRzWzBdLCBlcnJwKTsKKysgICAgaWYgKCFzaW9jKSB7CisrICAgICAgICBnb3RvIGVycm9yOworKyAgICB9CisrICAgIGZkc1swXSA9IC0xOworKworKyAgICBnX2ZyZWUoY2hyLT5maWxlbmFtZSk7CisrICAgIGNoci0+ZmlsZW5hbWUgPSBnX3N0cmR1cF9wcmludGYoImNtZDolcyIsIGNtZCk7CisrICAgIHRjcF9jaHJfbmV3X2NsaWVudChjaHIsIHNpb2MpOworKworKyBlcnJvcjoKKysgICAgaWYgKGZkc1swXSA+PSAwKSB7CisrICAgICAgICBjbG9zZShmZHNbMF0pOworKyAgICB9CisrICAgIGlmIChmZHNbMV0gPj0gMCkgeworKyAgICAgICAgY2xvc2UoZmRzWzFdKTsKKysgICAgfQorKyAgICBpZiAoc2lvYykgeworKyAgICAgICAgb2JqZWN0X3VucmVmKE9CSkVDVChzaW9jKSk7CisrICAgIH0KKyt9CisrI2VuZGlmCisrCisgc3RhdGljIHZvaWQgcW1wX2NoYXJkZXZfb3Blbl9zb2NrZXQoQ2hhcmRldiAqY2hyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJkZXZCYWNrZW5kICpiYWNrZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmJlX29wZW5lZCwKK0BAIC04NTksNiArOTIxLDkgQEAKKyB7CisgICAgIFNvY2tldENoYXJkZXYgKnMgPSBTT0NLRVRfQ0hBUkRFVihjaHIpOworICAgICBDaGFyZGV2U29ja2V0ICpzb2NrID0gYmFja2VuZC0+dS5zb2NrZXQuZGF0YTsKKysjaWZuZGVmIF9XSU4zMgorKyAgICBjb25zdCBjaGFyICpjbWQgICAgID0gc29jay0+Y21kOworKyNlbmRpZgorICAgICBib29sIGRvX25vZGVsYXkgICAgID0gc29jay0+aGFzX25vZGVsYXkgPyBzb2NrLT5ub2RlbGF5IDogZmFsc2U7CisgICAgIGJvb2wgaXNfbGlzdGVuICAgICAgPSBzb2NrLT5oYXNfc2VydmVyICA/IHNvY2stPnNlcnZlciAgOiB0cnVlOworICAgICBib29sIGlzX3RlbG5ldCAgICAgID0gc29jay0+aGFzX3RlbG5ldCAgPyBzb2NrLT50ZWxuZXQgIDogZmFsc2U7CitAQCAtOTI1LDcgKzk5MCwxNCBAQAorICAgICB9IGVsc2UgaWYgKHJlY29ubmVjdCA+IDApIHsKKyAgICAgICAgIHMtPnJlY29ubmVjdF90aW1lID0gcmVjb25uZWN0OworICAgICB9CistCisrI2lmbmRlZiBfV0lOMzIKKysgICAgaWYgKGNtZCkgeworKyAgICAgICAgY2hhcmRldl9vcGVuX3NvY2tldF9jbWQoY2hyLCBjbWQsIGVycnApOworKworKyAgICAgICAgLyogZXZlcnl0aGluZyByZWFkeSAob3IgZmFpbGVkIHBlcm1hbmVudGx5KSBiZWZvcmUgd2UgcmV0dXJuICovCisrICAgICAgICAqYmVfb3BlbmVkID0gdHJ1ZTsKKysgICAgfSBlbHNlCisrI2VuZGlmCisgICAgIGlmIChzLT5yZWNvbm5lY3RfdGltZSkgeworICAgICAgICAgc2lvYyA9IHFpb19jaGFubmVsX3NvY2tldF9uZXcoKTsKKyAgICAgICAgIHRjcF9jaHJfc2V0X2NsaWVudF9pb2NfbmFtZShjaHIsIHNpb2MpOworQEAgLTk4NSwxMCArMTA1NywyNiBAQAorICAgICBjb25zdCBjaGFyICpob3N0ID0gcWVtdV9vcHRfZ2V0KG9wdHMsICJob3N0Iik7CisgICAgIGNvbnN0IGNoYXIgKnBvcnQgPSBxZW11X29wdF9nZXQob3B0cywgInBvcnQiKTsKKyAgICAgY29uc3QgY2hhciAqdGxzX2NyZWRzID0gcWVtdV9vcHRfZ2V0KG9wdHMsICJ0bHMtY3JlZHMiKTsKKysjaWZuZGVmIF9XSU4zMgorKyAgICBjb25zdCBjaGFyICpjbWQgPSBxZW11X29wdF9nZXQob3B0cywgImNtZCIpOworKyNlbmRpZgorICAgICBTb2NrZXRBZGRyZXNzTGVnYWN5ICphZGRyOworICAgICBDaGFyZGV2U29ja2V0ICpzb2NrOworIAorICAgICBiYWNrZW5kLT50eXBlID0gQ0hBUkRFVl9CQUNLRU5EX0tJTkRfU09DS0VUOworKyNpZm5kZWYgX1dJTjMyCisrICAgIGlmIChjbWQpIHsKKysgICAgICAgIC8qCisrICAgICAgICAgKiBIZXJlIHdlIGhhdmUgdG8gZW5zdXJlIHRoYXQgbm8gb3B0aW9ucyBhcmUgc2V0IHdoaWNoIGFyZSBpbmNvbXBhdGlibGUgd2l0aAorKyAgICAgICAgICogc3Bhd25pbmcgYSBjb21tYW5kLCBvdGhlcndpc2UgdW5tb2RpZmllZCBjb2RlIHRoYXQgZG9lc24ndCBrbm93IGFib3V0CisrICAgICAgICAgKiBjb21tYW5kIHNwYXduaW5nIChsaWtlIHNvY2tldF9yZWNvbm5lY3RfdGltZW91dCgpKSBtaWdodCBnZXQgY2FsbGVkLgorKyAgICAgICAgICovCisrICAgICAgICBpZiAocGF0aCB8fCBpc19saXN0ZW4gfHwgaXNfdGVsbmV0IHx8IGlzX3RuMzI3MCB8fCByZWNvbm5lY3QgfHwgaG9zdCB8fCBwb3J0IHx8IHRsc19jcmVkcykgeworKyAgICAgICAgICAgIGVycm9yX3NldGcoZXJycCwgImNoYXJkZXY6IHNvY2tldDogY21kIGRvZXMgbm90IHN1cHBvcnQgYW55IGFkZGl0aW9uYWwgb3B0aW9ucyIpOworKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysgICAgfSBlbHNlCisrI2VuZGlmCisgICAgIGlmICghcGF0aCkgeworICAgICAgICAgaWYgKCFob3N0KSB7CisgICAgICAgICAgICAgZXJyb3Jfc2V0ZyhlcnJwLCAiY2hhcmRldjogc29ja2V0OiBubyBob3N0IGdpdmVuIik7CitAQCAtMTAyMSwxMyArMTEwOSwyNCBAQAorICAgICBzb2NrLT5oYXNfcmVjb25uZWN0ID0gdHJ1ZTsKKyAgICAgc29jay0+cmVjb25uZWN0ID0gcmVjb25uZWN0OworICAgICBzb2NrLT50bHNfY3JlZHMgPSBnX3N0cmR1cCh0bHNfY3JlZHMpOworKyNpZm5kZWYgX1dJTjMyCisrICAgIHNvY2stPmNtZCA9IGdfc3RyZHVwKGNtZCk7CisrI2VuZGlmCisgCisgICAgIGFkZHIgPSBnX25ldzAoU29ja2V0QWRkcmVzc0xlZ2FjeSwgMSk7CisrI2lmbmRlZiBfV0lOMzIKKysgICAgaWYgKHBhdGggfHwgY21kKSB7CisrI2Vsc2UKKyAgICAgaWYgKHBhdGgpIHsKKysjZW5kaWYKKyAgICAgICAgIFVuaXhTb2NrZXRBZGRyZXNzICpxX3VuaXg7CisgICAgICAgICBhZGRyLT50eXBlID0gU09DS0VUX0FERFJFU1NfTEVHQUNZX0tJTkRfVU5JWDsKKyAgICAgICAgIHFfdW5peCA9IGFkZHItPnUucV91bml4LmRhdGEgPSBnX25ldzAoVW5peFNvY2tldEFkZHJlc3MsIDEpOworKyNpZm5kZWYgX1dJTjMyCisrICAgICAgICBxX3VuaXgtPnBhdGggPSBjbWQgPyBnX3N0cmR1cF9wcmludGYoImNtZDolcyIsIGNtZCkgOiBnX3N0cmR1cChwYXRoKTsKKysjZWxzZQorICAgICAgICAgcV91bml4LT5wYXRoID0gZ19zdHJkdXAocGF0aCk7CisrI2VuZGlmCisgICAgIH0gZWxzZSB7CisgICAgICAgICBhZGRyLT50eXBlID0gU09DS0VUX0FERFJFU1NfTEVHQUNZX0tJTkRfSU5FVDsKKyAgICAgICAgIGFkZHItPnUuaW5ldC5kYXRhID0gZ19uZXcoSW5ldFNvY2tldEFkZHJlc3MsIDEpOworZGlmZiAtLWdpdCBhL2NoYXJkZXYvY2hhci5jIGIvY2hhcmRldi9jaGFyLmMKK2luZGV4IDJhZTRmNDY1ZWMuLjVkNTJjZDVkZTUgMTAwNjQ0CistLS0gYS9jaGFyZGV2L2NoYXIuYworKysrIGIvY2hhcmRldi9jaGFyLmMKK0BAIC03OTIsNiArNzkyLDkgQEAgUWVtdU9wdHNMaXN0IHFlbXVfY2hhcmRldl9vcHRzID0geworICAgICAgICAgfSx7CisgICAgICAgICAgICAgLm5hbWUgPSAicGF0aCIsCisgICAgICAgICAgICAgLnR5cGUgPSBRRU1VX09QVF9TVFJJTkcsCisrICAgICAgICB9LHsKKysgICAgICAgICAgICAubmFtZSA9ICJjbWQiLAorKyAgICAgICAgICAgIC50eXBlID0gUUVNVV9PUFRfU1RSSU5HLAorICAgICAgICAgfSx7CisgICAgICAgICAgICAgLm5hbWUgPSAiaG9zdCIsCisgICAgICAgICAgICAgLnR5cGUgPSBRRU1VX09QVF9TVFJJTkcsCitkaWZmIC0tZ2l0IGEvcWFwaS9jaGFyLmpzb24gYi9xYXBpL2NoYXIuanNvbgoraW5kZXggYWUxOWRjZDFlZC4uNmRlMGYyOWJjZCAxMDA2NDQKKy0tLSBhL3FhcGkvY2hhci5qc29uCisrKysgYi9xYXBpL2NoYXIuanNvbgorQEAgLTI0MSw2ICsyNDEsMTAgQEAKKyAjCisgIyBAYWRkcjogc29ja2V0IGFkZHJlc3MgdG8gbGlzdGVuIG9uIChzZXJ2ZXI9dHJ1ZSkKKyAjICAgICAgICBvciBjb25uZWN0IHRvIChzZXJ2ZXI9ZmFsc2UpCisrIyBAY21kOiBjb21tYW5kIHRvIHJ1biB2aWEgInNoIC1jIiB3aXRoIHN0ZGluIGFzIG9uZSBlbmQgb2YKKysjICAgICAgIGEgQUZfVU5JWCBTT0NLX0RTVFJFQU0gc29ja2V0IHBhaXIuIFRoZSBvdGhlciBlbmQKKysjICAgICAgIGlzIHVzZWQgYnkgdGhlIGNoYXJkZXYuIEVpdGhlciBhbiBhZGRyIG9yIGEgY21kIGNhbgorKyMgICAgICAgYmUgc3BlY2lmaWVkLCBidXQgbm90IGJvdGguCisgIyBAdGxzLWNyZWRzOiB0aGUgSUQgb2YgdGhlIFRMUyBjcmVkZW50aWFscyBvYmplY3QgKHNpbmNlIDIuNikKKyAjIEBzZXJ2ZXI6IGNyZWF0ZSBzZXJ2ZXIgc29ja2V0IChkZWZhdWx0OiB0cnVlKQorICMgQHdhaXQ6IHdhaXQgZm9yIGluY29taW5nIGNvbm5lY3Rpb24gb24gc2VydmVyCitAQCAtMjU4LDYgKzI2Miw3IEBACisgIyBTaW5jZTogMS40CisgIyMKKyB7ICdzdHJ1Y3QnOiAnQ2hhcmRldlNvY2tldCcsICdkYXRhJzogeyAnYWRkcicgICAgICAgOiAnU29ja2V0QWRkcmVzc0xlZ2FjeScsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcqY21kJyAgICAgICA6ICdzdHInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKnRscy1jcmVkcycgIDogJ3N0cicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcqc2VydmVyJyAgICA6ICdib29sJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyp3YWl0JyAgICAgIDogJ2Jvb2wnLAorLS0gCisyLjE0LjEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2NoZWNrLVBTMlF1ZXVlLXBvaW50ZXJzLWluLXBvc3RfbG9hZC1yb3V0aW5lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvY2hlY2stUFMyUXVldWUtcG9pbnRlcnMtaW4tcG9zdF9sb2FkLXJvdXRpbmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhkN2Y2NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2NoZWNrLVBTMlF1ZXVlLXBvaW50ZXJzLWluLXBvc3RfbG9hZC1yb3V0aW5lLnBhdGNoCkBAIC0wLDAgKzEsNjMgQEAKK0Zyb20gZWU5YTE3ZDBlMTIxNDM5NzFhOTY3NjIyN2NjZTk1M2MwZGJlNTJmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFByYXNhZCBKIFBhbmRpdCA8cGpwQGZlZG9yYXByb2plY3Qub3JnPgorRGF0ZTogVGh1LCAxNiBOb3YgMjAxNyAxMzoyMTo1NSArMDUzMAorU3ViamVjdDogW1BBVENIXSBwczI6IGNoZWNrIFBTMlF1ZXVlIHBvaW50ZXJzIGluIHBvc3RfbG9hZCByb3V0aW5lCisKK0R1cmluZyBRZW11IGd1ZXN0IG1pZ3JhdGlvbiwgYSBkZXN0aW5hdGlvbiBwcm9jZXNzIGludm9rZXMgcHMyCitwb3N0X2xvYWQgZnVuY3Rpb24uIEluIHRoYXQsIGlmICdycHRyJyBhbmQgJ2NvdW50JyB2YWx1ZXMgd2VyZQoraW52YWxpZCwgaXQgY291bGQgbGVhZCB0byBPT0IgYWNjZXNzIG9yIGluZmluaXRlIGxvb3AgaXNzdWUuCitBZGQgY2hlY2sgdG8gYXZvaWQgaXQuCisKK1JlcG9ydGVkLWJ5OiBDeXJpbGxlIENoYXRyYXMgPGN5cmlsbGUuY2hhdHJhc0BvcmFuZ2UuY29tPgorU2lnbmVkLW9mZi1ieTogUHJhc2FkIEogUGFuZGl0IDxwanBAZmVkb3JhcHJvamVjdC5vcmc+CitNZXNzYWdlLWlkOiAyMDE3MTExNjA3NTE1NS4yMjM3OC0xLXBwYW5kaXRAcmVkaGF0LmNvbQorU2lnbmVkLW9mZi1ieTogR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+CisKK0NWRTogQ1ZFLTIwMTctMTY4NDUKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGh3L2lucHV0L3BzMi5jIHwgMjEgKysrKysrKysrLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ody9pbnB1dC9wczIuYyBiL2h3L2lucHV0L3BzMi5jCitpbmRleCBmMzg4YTIzLi5kZTE3MWEyIDEwMDY0NAorLS0tIGEvaHcvaW5wdXQvcHMyLmMKKysrKyBiL2h3L2lucHV0L3BzMi5jCitAQCAtMTIyNSwyNCArMTIyNSwyMSBAQCBzdGF0aWMgdm9pZCBwczJfY29tbW9uX3Jlc2V0KFBTMlN0YXRlICpzKQorIHN0YXRpYyB2b2lkIHBzMl9jb21tb25fcG9zdF9sb2FkKFBTMlN0YXRlICpzKQorIHsKKyAgICAgUFMyUXVldWUgKnEgPSAmcy0+cXVldWU7CistICAgIGludCBzaXplOworLSAgICBpbnQgaTsKKy0gICAgaW50IHRtcF9kYXRhW1BTMl9RVUVVRV9TSVpFXTsKKysgICAgdWludDhfdCBpLCBzaXplOworKyAgICB1aW50OF90IHRtcF9kYXRhW1BTMl9RVUVVRV9TSVpFXTsKKyAKKyAgICAgLyogc2V0IHRoZSB1c2VmdWwgZGF0YSBidWZmZXIgcXVldWUgc2l6ZSwgPCBQUzJfUVVFVUVfU0laRSAqLworLSAgICBzaXplID0gcS0+Y291bnQgPiBQUzJfUVVFVUVfU0laRSA/IDAgOiBxLT5jb3VudDsKKysgICAgc2l6ZSA9IChxLT5jb3VudCA8IDAgfHwgcS0+Y291bnQgPiBQUzJfUVVFVUVfU0laRSkgPyAwIDogcS0+Y291bnQ7CisgCisgICAgIC8qIG1vdmUgdGhlIHF1ZXVlIGVsZW1lbnRzIHRvIHRoZSBzdGFydCBvZiBkYXRhIGFycmF5ICovCistICAgIGlmIChzaXplID4gMCkgeworLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworLSAgICAgICAgICAgIC8qIG1vdmUgdGhlIHF1ZXVlIGVsZW1lbnRzIHRvIHRoZSB0ZW1wb3JhcnkgYnVmZmVyICovCistICAgICAgICAgICAgdG1wX2RhdGFbaV0gPSBxLT5kYXRhW3EtPnJwdHJdOworLSAgICAgICAgICAgIGlmICgrK3EtPnJwdHIgPT0gMjU2KSB7CistICAgICAgICAgICAgICAgIHEtPnJwdHIgPSAwOworLSAgICAgICAgICAgIH0KKysgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworKyAgICAgICAgaWYgKHEtPnJwdHIgPCAwIHx8IHEtPnJwdHIgPj0gc2l6ZW9mKHEtPmRhdGEpKSB7CisrICAgICAgICAgICAgcS0+cnB0ciA9IDA7CisgICAgICAgICB9CistICAgICAgICBtZW1jcHkocS0+ZGF0YSwgdG1wX2RhdGEsIHNpemUpOworKyAgICAgICAgdG1wX2RhdGFbaV0gPSBxLT5kYXRhW3EtPnJwdHIrK107CisgICAgIH0KKysgICAgbWVtY3B5KHEtPmRhdGEsIHRtcF9kYXRhLCBzaXplKTsKKysKKyAgICAgLyogcmVzZXQgcnB0ci93cHRyL2NvdW50ICovCisgICAgIHEtPnJwdHIgPSAwOworICAgICBxLT53cHRyID0gc2l6ZTsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvZGlzYWJsZS1ncmFicy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2Rpc2FibGUtZ3JhYnMucGF0Y2gKaW5kZXggMTIzODMzZi4uNzcxMTc4OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvZGlzYWJsZS1ncmFicy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9kaXNhYmxlLWdyYWJzLnBhdGNoCkBAIC0yNCwxMSArMjQsMTEgQEAKICB1aS9zZGwuYyB8IDEyICsrKysrKysrKystLQogIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvdWkvc2RsLmMgYi91aS9zZGwuYwotaW5kZXggMzlhNDJkNi4uOWI4YWJlNSAxMDA2NDQKLS0tLSBhL3VpL3NkbC5jCi0rKysgYi91aS9zZGwuYwotQEAgLTU5LDYgKzU5LDEwIEBAIHN0YXRpYyBTRExfQ3Vyc29yICpndWVzdF9zcHJpdGUgPSBOVUxMOworSW5kZXg6IHFlbXUtMi4xMS4xL3VpL3NkbC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcWVtdS0yLjExLjEub3JpZy91aS9zZGwuYworKysrIHFlbXUtMi4xMS4xL3VpL3NkbC5jCitAQCAtNjMsNiArNjMsMTAgQEAgc3RhdGljIFNETF9QaXhlbEZvcm1hdCBob3N0X2Zvcm1hdDsKICBzdGF0aWMgaW50IHNjYWxpbmdfYWN0aXZlID0gMDsKICBzdGF0aWMgTm90aWZpZXIgbW91c2VfbW9kZV9ub3RpZmllcjsKICBzdGF0aWMgaW50IGlkbGVfY291bnRlcjsKQEAgLTM3LDEwICszNywxMCBAQAogKyNlbmRpZgogK3N0YXRpYyBkb2luZ19ncmFicyA9IFRydWU7CiAgCi0gc3RhdGljIHZvaWQgc2RsX3VwZGF0ZShEaXNwbGF5Q2hhbmdlTGlzdGVuZXIgKmRjbCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoKQotQEAgLTM4NCwxNCArMzg4LDE2IEBAIHN0YXRpYyB2b2lkIHNkbF9ncmFiX3N0YXJ0KHZvaWQpCi0gICAgICAgICAgICAgfQorICNkZWZpbmUgU0RMX1JFRlJFU0hfSU5URVJWQUxfQlVTWSAxMAorICNkZWZpbmUgU0RMX01BWF9JRExFX0NPVU5UICgyICogR1VJX1JFRlJFU0hfSU5URVJWQUxfREVGQVVMVCBcCitAQCAtNDMxLDE0ICs0MzUsMTYgQEAgc3RhdGljIHZvaWQgc2RsX2dyYWJfc3RhcnQodm9pZCkKKyAgICAgICAgIH0KICAgICAgfSBlbHNlCiAgICAgICAgICBzZGxfaGlkZV9jdXJzb3IoKTsKIC0gICAgU0RMX1dNX0dyYWJJbnB1dChTRExfR1JBQl9PTik7CkBAIC01OCw3ICs1OCw3IEBACiAgICAgIGd1aV9ncmFiID0gMDsKICAgICAgc2RsX3Nob3dfY3Vyc29yKCk7CiAgICAgIHNkbF91cGRhdGVfY2FwdGlvbigpOwotQEAgLTkwOSw2ICs5MTUsOCBAQCB2b2lkIHNkbF9kaXNwbGF5X2luaXQoRGlzcGxheVN0YXRlICpkcywgaW50IGZ1bGxfc2NyZWVuLCBpbnQgbm9fZnJhbWUpCitAQCAtOTg2LDYgKzk5Miw4IEBAIHZvaWQgc2RsX2Rpc3BsYXlfaW5pdChEaXNwbGF5U3RhdGUgKmRzLAogICAgICAgKiBUaGlzIHJlcXVpcmVzIFNETCA+PSAxLjIuMTQuICovCiAgICAgIHNldGVudigiU0RMX0RJU0FCTEVfTE9DS19LRVlTIiwgIjEiLCAxKTsKICAKQEAgLTY3LDYgKzY3LDMgQEAKICAgICAgZmxhZ3MgPSBTRExfSU5JVF9WSURFTyB8IFNETF9JTklUX05PUEFSQUNIVVRFOwogICAgICBpZiAoU0RMX0luaXQgKGZsYWdzKSkgewogICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDb3VsZCBub3QgaW5pdGlhbGl6ZSBTREwoJXMpIC0gZXhpdGluZ1xuIiwKLS0tIAotMS44LjMuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9leGNsdWRlLXNvbWUtYXJtLUVBQkktb2Jzb2xldGUtc3lzY2FsbHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9leGNsdWRlLXNvbWUtYXJtLUVBQkktb2Jzb2xldGUtc3lzY2FsbHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1OTNjZjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvZXhjbHVkZS1zb21lLWFybS1FQUJJLW9ic29sZXRlLXN5c2NhbGxzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotW1BBVENIXSBleGNsdWRlIHNvbWUgYXJtIEVBQkkgb2Jzb2xldGUgc3lzY2FsbHMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLXNvbWUgc3lzY2FsbHMgYXJlIG9ic29sZXRlIGFuZCBubyBsb25nZXIgYXZhaWxhYmxlIGZvciBFQUJJLCBleGNsdWRlIHRoZW0gdG8KLWZpeCB0aGUgYmVsb3cgZXJyb3I6Ci0JSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHFlbXUtc2VjY29tcC5jOjE2OjA6Ci0JcWVtdS1zZWNjb21wLmM6Mjg6NzogZXJyb3I6ICdfX05SX3NlbGVjdCcgdW5kZWNsYXJlZCBoZXJlIChub3QgaW4gYSBmdW5jdGlvbikKLQkgICAgICB7IFNDTVBfU1lTKHNlbGVjdCksIDI1MiB9LAotCSAgICAgICAgXgotCXFlbXUtc2VjY29tcC5jOjM2Ojc6IGVycm9yOiAnX19OUl9tbWFwJyB1bmRlY2xhcmVkIGhlcmUgKG5vdCBpbiBhIGZ1bmN0aW9uKQotCSAgICAgIHsgU0NNUF9TWVMobW1hcCksIDI0NyB9LAotCSAgICAgICAgXgotCXFlbXUtc2VjY29tcC5jOjU3Ojc6IGVycm9yOiAnX19OUl9nZXRybGltaXQnIHVuZGVjbGFyZWQgaGVyZSAobm90IGluIGEgZnVuY3Rpb24pCi0JICAgICAgeyBTQ01QX1NZUyhnZXRybGltaXQpLCAyNDUgfSwKLQkgICAgICAgIF4KLQlxZW11LXNlY2NvbXAuYzo5Njo3OiBlcnJvcjogJ19fTlJfdGltZScgdW5kZWNsYXJlZCBoZXJlIChub3QgaW4gYSBmdW5jdGlvbikKLQkgICAgICB7IFNDTVBfU1lTKHRpbWUpLCAyNDUgfSwKLQkgICAgICAgIF4KLQlxZW11LXNlY2NvbXAuYzoxODU6NzogZXJyb3I6ICdfX05SX2FsYXJtJyB1bmRlY2xhcmVkIGhlcmUgKG5vdCBpbiBhIGZ1bmN0aW9uKQotCSAgICAgIHsgU0NNUF9TWVMoYWxhcm0pLCAyNDEgfSwKLQotcGxlYXNlIHJlZmVyIHNvdXJjZSBmaWxlczoKLQlhcmNoL2FybS9pbmNsdWRlL3VhcGkvYXNtL3VuaXN0ZC5oCi1vciBrZXJuZWwgaGVhZGVyOgotCS91c3IvaW5jbHVkZS9hc20vdW5pc3RkLmgKLQotU2lnbmVkLW9mZi1ieTogUm95LkxpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgotLS0tCi0gcWVtdS1zZWNjb21wLmMgfCAxMyArKysrKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3FlbXUtc2VjY29tcC5jIGIvcWVtdS1zZWNjb21wLmMKLWluZGV4IGRmNzVkOWMuLjBlNTc3ZjggMTAwNjQ0Ci0tLS0gYS9xZW11LXNlY2NvbXAuYwotKysrIGIvcWVtdS1zZWNjb21wLmMKLUBAIC0zNSwxNSArMzUsMjEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBRZW11U2VjY29tcFN5c2NhbGwgc2VjY29tcF93aGl0ZWxpc3RbXSA9IHsKLSAgICAgeyBTQ01QX1NZUyh0aW1lcl9zZXR0aW1lKSwgMjU1IH0sCi0gICAgIHsgU0NNUF9TWVModGltZXJfZ2V0dGltZSksIDI1NCB9LAotICAgICB7IFNDTVBfU1lTKGZ1dGV4KSwgMjUzIH0sCi0rI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykKLSAgICAgeyBTQ01QX1NZUyhzZWxlY3QpLCAyNTIgfSwKLSsgICAgeyBTQ01QX1NZUyh0aW1lKSwgMjQ1IH0sCi0rICAgIHsgU0NNUF9TWVMoYWxhcm0pLCAyNDEgfSwKLSsgICAgeyBTQ01QX1NZUyhnZXRybGltaXQpLCAyNDUgfSwKLSsgICAgeyBTQ01QX1NZUyhtbWFwKSwgMjQ3IH0sCi0rICAgIHsgU0NNUF9TWVMoc29ja2V0Y2FsbCksIDI1MCB9LAotKyAgICB7IFNDTVBfU1lTKGlwYyksIDI0NSB9LAotKyNlbmRpZgotICAgICB7IFNDTVBfU1lTKHJlY3Zmcm9tKSwgMjUxIH0sCi0gICAgIHsgU0NNUF9TWVMoc2VuZHRvKSwgMjUwIH0sCi0tICAgIHsgU0NNUF9TWVMoc29ja2V0Y2FsbCksIDI1MCB9LAotICAgICB7IFNDTVBfU1lTKHJlYWQpLCAyNDkgfSwKLSAgICAgeyBTQ01QX1NZUyhpb19zdWJtaXQpLCAyNDkgfSwKLSAgICAgeyBTQ01QX1NZUyhicmspLCAyNDggfSwKLSAgICAgeyBTQ01QX1NZUyhjbG9uZSksIDI0NyB9LAotLSAgICB7IFNDTVBfU1lTKG1tYXApLCAyNDcgfSwKLSAgICAgeyBTQ01QX1NZUyhtcHJvdGVjdCksIDI0NiB9LAotICAgICB7IFNDTVBfU1lTKGV4ZWN2ZSksIDI0NSB9LAotICAgICB7IFNDTVBfU1lTKG9wZW4pLCAyNDUgfSwKLUBAIC01OCw3ICs2NCw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgUWVtdVNlY2NvbXBTeXNjYWxsIHNlY2NvbXBfd2hpdGVsaXN0W10gPSB7Ci0gICAgIHsgU0NNUF9TWVMoYmluZCksIDI0NSB9LAotICAgICB7IFNDTVBfU1lTKGxpc3RlbiksIDI0NSB9LAotICAgICB7IFNDTVBfU1lTKHNlbWdldCksIDI0NSB9LAotLSAgICB7IFNDTVBfU1lTKGlwYyksIDI0NSB9LAotICAgICB7IFNDTVBfU1lTKGdldHRpbWVvZmRheSksIDI0NSB9LAotICAgICB7IFNDTVBfU1lTKHJlYWRsaW5rKSwgMjQ1IH0sCi0gICAgIHsgU0NNUF9TWVMoYWNjZXNzKSwgMjQ1IH0sCi1AQCAtMTA0LDcgKzEwOSw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgUWVtdVNlY2NvbXBTeXNjYWxsIHNlY2NvbXBfd2hpdGVsaXN0W10gPSB7Ci0gICAgIHsgU0NNUF9TWVModGltZXMpLCAyNDUgfSwKLSAgICAgeyBTQ01QX1NZUyhleGl0KSwgMjQ1IH0sCi0gICAgIHsgU0NNUF9TWVMoY2xvY2tfZ2V0dGltZSksIDI0NSB9LAotLSAgICB7IFNDTVBfU1lTKHRpbWUpLCAyNDUgfSwKLSAgICAgeyBTQ01QX1NZUyhyZXN0YXJ0X3N5c2NhbGwpLCAyNDUgfSwKLSAgICAgeyBTQ01QX1NZUyhwd3JpdGU2NCksIDI0NSB9LAotICAgICB7IFNDTVBfU1lTKG5hbm9zbGVlcCksIDI0NSB9LAotQEAgLTE5NCw3ICsxOTgsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IFFlbXVTZWNjb21wU3lzY2FsbCBzZWNjb21wX3doaXRlbGlzdFtdID0gewotICAgICB7IFNDTVBfU1lTKGxzdGF0NjQpLCAyNDEgfSwKLSAgICAgeyBTQ01QX1NZUyhzZW5kZmlsZTY0KSwgMjQxIH0sCi0gICAgIHsgU0NNUF9TWVModWdldHJsaW1pdCksIDI0MSB9LAotLSAgICB7IFNDTVBfU1lTKGFsYXJtKSwgMjQxIH0sCi0gICAgIHsgU0NNUF9TWVMocnRfc2lnc3VzcGVuZCksIDI0MSB9LAotICAgICB7IFNDTVBfU1lTKHJ0X3NpZ3F1ZXVlaW5mbyksIDI0MSB9LAotICAgICB7IFNDTVBfU1lTKHJ0X3Rnc2lncXVldWVpbmZvKSwgMjQxIH0sCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2dsaWJjLTIuMjUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9nbGliYy0yLjI1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjkwOGJkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2dsaWJjLTIuMjUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi1Gcm9tOiBDaHJpc3RvcGhlciBDb3Zpbmd0b24KLURhdGU6IFdlZCwgMjggRGVjIDIwMTYgMTU6MDQ6MzMgLTA1MDAKLVN1YmplY3Q6IFtRZW11LWRldmVsXSBbUEFUQ0ggdjNdIGJ1aWxkOiBpbmNsdWRlIHN5cy9zeXNtYWNyb3MuaCBmb3IgbWFqb3IoKSBhbmQgbWlub3IoKWEKLQotVGhlIGRlZmluaXRpb24gb2YgdGhlIG1ham9yKCkgYW5kIG1pbm9yKCkgbWFjcm9zIGFyZSBtb3Zpbmcgd2l0aGluIGdsaWJjIHRvCi08c3lzL3N5c21hY3Jvcy5oPi4gSW5jbHVkZSB0aGlzIGhlYWRlciB3aGVuIGl0IGlzIGF2YWlsYWJsZSB0byBhdm9pZCB0aGUKLWZvbGxvd2luZyBzb3J0cyBvZiBidWlsZC1zdG9wcGluZyBtZXNzYWdlczoKLQotcWdhL2NvbW1hbmRzLXBvc2l4LmM6IEluIGZ1bmN0aW9uIOKAmGRldl9tYWpvcl9taW5vcuKAmToKLXFnYS9jb21tYW5kcy1wb3NpeC5jOjY1NjoxMzogZXJyb3I6IEluIHRoZSBHTlUgQyBMaWJyYXJ5LCAibWFqb3IiIGlzIGRlZmluZWQKLSBieSA8c3lzL3N5c21hY3Jvcy5oPi4gRm9yIGhpc3RvcmljYWwgY29tcGF0aWJpbGl0eSwgaXQgaXMKLSBjdXJyZW50bHkgZGVmaW5lZCBieSA8c3lzL3R5cGVzLmg+IGFzIHdlbGwsIGJ1dCB3ZSBwbGFuIHRvCi0gcmVtb3ZlIHRoaXMgc29vbi4gVG8gdXNlICJtYWpvciIsIGluY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSBkaXJlY3RseS4gSWYgeW91IGRpZCBub3QgaW50ZW5kIHRvIHVzZSBhIHN5c3RlbS1kZWZpbmVkIG1hY3JvCi0gIm1ham9yIiwgeW91IHNob3VsZCB1bmRlZmluZSBpdCBhZnRlciBpbmNsdWRpbmcgPHN5cy90eXBlcy5oPi4gWy1XZXJyb3JdCi0gICAgICAgICAqZGV2bWFqb3IgPSBtYWpvcihzdC5zdF9yZGV2KTsKLSAgICAgICAgICAgICBefn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotCi1xZ2EvY29tbWFuZHMtcG9zaXguYzo2NTc6MTM6IGVycm9yOiBJbiB0aGUgR05VIEMgTGlicmFyeSwgIm1pbm9yIiBpcyBkZWZpbmVkCi0gYnkgPHN5cy9zeXNtYWNyb3MuaD4uIEZvciBoaXN0b3JpY2FsIGNvbXBhdGliaWxpdHksIGl0IGlzCi0gY3VycmVudGx5IGRlZmluZWQgYnkgPHN5cy90eXBlcy5oPiBhcyB3ZWxsLCBidXQgd2UgcGxhbiB0bwotIHJlbW92ZSB0aGlzIHNvb24uIFRvIHVzZSAibWlub3IiLCBpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+Ci0gZGlyZWN0bHkuIElmIHlvdSBkaWQgbm90IGludGVuZCB0byB1c2UgYSBzeXN0ZW0tZGVmaW5lZCBtYWNybwotICJtaW5vciIsIHlvdSBzaG91bGQgdW5kZWZpbmUgaXQgYWZ0ZXIgaW5jbHVkaW5nIDxzeXMvdHlwZXMuaD4uIFstV2Vycm9yXQotICAgICAgICAgKmRldm1pbm9yID0gbWlub3Ioc3Quc3RfcmRldik7Ci0gICAgICAgICAgICAgXn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLQotVGhlIGFkZGl0aW9uYWwgaW5jbHVkZSBhbGxvd3MgdGhlIGJ1aWxkIHRvIGNvbXBsZXRlIG9uIEZlZG9yYSAyNiAoUmF3aGlkZSkKLXdpdGggZ2xpYmMgdmVyc2lvbiAyLjI0LjkwLgotCi1TaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBDb3Zpbmd0b24gPGFkZHJlc3NAaGlkZGVuPgotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBodHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL3FlbXUtZGV2ZWwvMjAxNi0xMi9tc2cwMzU0OC5odG1sCi0KLWRpZmYgLXVOciBxZW11LTIuOC4wLm9yaWcvY29uZmlndXJlIHFlbXUtMi44LjAvY29uZmlndXJlCi0tLS0gcWVtdS0yLjguMC5vcmlnL2NvbmZpZ3VyZSAgMjAxNy0wMi0yMSAxOTowNToxMy4xODAwOTQ3MDggKzAxMDAKLSsrKyBxZW11LTIuOC4wL2NvbmZpZ3VyZSAgICAgICAyMDE3LTAyLTIxIDE5OjA4OjUzLjExNDA4NzA4NCArMDEwMAotQEAgLTQ3MjcsNiArNDcyNywyMCBAQAotIHRoZW4KLSBmaQotIAotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgY2hlY2sgZm9yIHN5c21hY3Jvcy5oCi0rCi0raGF2ZV9zeXNtYWNyb3M9bm8KLStjYXQgPiAkVE1QQyA8PCBFT0YKLSsjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotK2ludCBtYWluKHZvaWQpIHsKLSsgICAgcmV0dXJuIG1ha2VkZXYoMCwgMCk7Ci0rfQotK0VPRgotK2lmIGNvbXBpbGVfcHJvZyAiIiAiIiA7IHRoZW4KLSsgICAgaGF2ZV9zeXNtYWNyb3M9eWVzCi0rZmkKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAjIEVuZCBvZiBDQyBjaGVja3MKLSAjIEFmdGVyIGhlcmUsIG5vIG1vcmUgJGNjIG9yICRsZCBydW5zCi0gCi1kaWZmIC11TnIgcWVtdS0yLjguMC5vcmlnL2NvbmZpZ3VyZSBxZW11LTIuOC4wL2NvbmZpZ3VyZQotLS0tIHFlbXUtMi44LjAub3JpZy9jb25maWd1cmUgIDIwMTctMDItMjEgMTk6MDU6MTMuMTgwMDk0NzA4ICswMTAwCi0rKysgcWVtdS0yLjguMC9jb25maWd1cmUgICAgICAgMjAxNy0wMi0yMSAxOTowODo1My4xMTQwODcwODQgKzAxMDAKLUBAIC01Njk1LDYgKzU3MDksMTAgQEAKLSAgIGVjaG8gIkNPTkZJR19BRl9WU09DSz15IiA+PiAkY29uZmlnX2hvc3RfbWFrCi0gZmkKLSAKLStpZiB0ZXN0ICIkaGF2ZV9zeXNtYWNyb3MiID0gInllcyIgOyB0aGVuCi0rICBlY2hvICJDT05GSUdfU1lTTUFDUk9TPXkiID4+ICRjb25maWdfaG9zdF9tYWsKLStmaQotKwotICMgSG9sZCB0d28gdHlwZXMgb2YgZmxhZzoKLSAjICAgQ09ORklHX1RIUkVBRF9TRVROQU1FX0JZVEhSRUFEICAtIHdlJ3ZlIGdvdCBhIHdheSBvZiBzZXR0aW5nIHRoZSBuYW1lIG9uCi0gIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHRocmVhZCB3ZSBoYXZlIGEgaGFuZGxlIHRvCi1kaWZmIC11TnIgcWVtdS0yLjguMC5vcmlnL2luY2x1ZGUvc3lzZW11L29zLXBvc2l4LmggcWVtdS0yLjguMC9pbmNsdWRlL3N5c2VtdS9vcy1wb3NpeC5oCi0tLS0gcWVtdS0yLjguMC5vcmlnL2luY2x1ZGUvc3lzZW11L29zLXBvc2l4LmgJMjAxNi0xMi0yMCAyMToxNjo0OC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBxZW11LTIuOC4wL2luY2x1ZGUvc3lzZW11L29zLXBvc2l4LmgJMjAxNy0wMi0yMSAxOTowNzoxOC4wMDkwOTAzODEgKzAxMDAKLUBAIC0zNCw2ICszNCwxMCBAQAotICNpbmNsdWRlIDxuZXRkYi5oPgotICNpbmNsdWRlIDxzeXMvdW4uaD4KLSAKLSsjaWZkZWYgQ09ORklHX1NZU01BQ1JPUwotKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+Ci0rI2VuZGlmCi0rCi0gdm9pZCBvc19zZXRfbGluZV9idWZmZXJpbmcodm9pZCk7Ci0gdm9pZCBvc19zZXRfcHJvY19uYW1lKGNvbnN0IGNoYXIgKnMpOwotIHZvaWQgb3Nfc2V0dXBfc2lnbmFsX2hhbmRsaW5nKHZvaWQpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvbGludXgtdXNlci1GaXgtd2Via2l0Z3RrLWhhbmdzLW9uLTMyLWJpdC14ODYtdGFyZ2V0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvbGludXgtdXNlci1GaXgtd2Via2l0Z3RrLWhhbmdzLW9uLTMyLWJpdC14ODYtdGFyZ2V0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyYzUyMjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9saW51eC11c2VyLUZpeC13ZWJraXRndGstaGFuZ3Mtb24tMzItYml0LXg4Ni10YXJnZXQucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSA0ZmE0YWFlNDE3NmVmNmQ4ZjRkNGI4MzIzZDA2MWUyNDMzOTE4YTI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B4aWxpbnguY29tPgorRGF0ZTogV2VkLCAxNyBKYW4gMjAxOCAxMDo1MTo0OSAtMDgwMAorU3ViamVjdDogW1BBVENIXSBsaW51eC11c2VyOiBGaXggd2Via2l0Z3RrIGhhbmdzIG9uIDMyLWJpdCB4ODYgdGFyZ2V0CisKK1NpbmNlIGNvbW1pdCAibGludXgtdXNlcjogVGlkeSBhbmQgZW5mb3JjZSByZXNlcnZlZF92YSBpbml0aWFsaXphdGlvbiIKKygxOGU4MGM1NWJiNmVjMTdjMDVlYzBiYTcxN2VjODM5MzNjMmJmYzA3KSB0aGUgWW9jdG8gd2Via2l0Z3RrIGJ1aWxkCitoYW5ncyB3aGVuIGNyb3NzIGNvbXBpbGluZyBmb3IgMzItYml0IHg4NiBvbiBhIDY0LWJpdCB4ODYgbWFjaGluZSB1c2luZworbXVzbC4KKworVG8gZml4IHRoZSBpc3N1ZSByZWR1Y2UgdGhlIE1BWF9SRVNFUlZFRF9WQSBtYWNybyB0byBiZSBhIGNsb3NlciBtYXRjaAordG8gd2hhdCBpdCB3YXMgYmVmb3JlIHRoZSBwcm9ibGVtYXRpYyBjb21taXQuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIGh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9xZW11LWRldmVsLzIwMTgtMDEvbXNnMDQxODUuaHRtbAorU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B4aWxpbnguY29tPgorLS0tCisgbGludXgtdXNlci9tYWluLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saW51eC11c2VyL21haW4uYyBiL2xpbnV4LXVzZXIvbWFpbi5jCitpbmRleCA0NTBlYjNjZTY1Li5jN2NjMGExODRlIDEwMDY0NAorLS0tIGEvbGludXgtdXNlci9tYWluLmMKKysrKyBiL2xpbnV4LXVzZXIvbWFpbi5jCitAQCAtNzcsNyArNzcsNyBAQCBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgKFRBUkdFVF9MT05HX0JJVFMgPT0gMzIgfHwgZGVmaW5lZChUQVJHRVRfQUJJMzIpKQorIC8qIFRoZXJlIGFyZSBhIG51bWJlciBvZiBwbGFjZXMgd2hlcmUgd2UgYXNzaWduIHJlc2VydmVkX3ZhIHRvIGEgdmFyaWFibGUKKyAgICBvZiB0eXBlIGFiaV91bG9uZyBhbmQgZXhwZWN0IGl0IHRvIGZpdC4gIEF2b2lkIHRoZSBsYXN0IHBhZ2UuICAqLworLSMgICBkZWZpbmUgTUFYX1JFU0VSVkVEX1ZBICAoMHhmZmZmZmZmZnVsICYgVEFSR0VUX1BBR0VfTUFTSykKKysjICAgZGVmaW5lIE1BWF9SRVNFUlZFRF9WQSAgKDB4N2ZmZmZmZmZ1bCAmIFRBUkdFVF9QQUdFX01BU0spCisgIyAgZWxzZQorICMgICBkZWZpbmUgTUFYX1JFU0VSVkVEX1ZBICAoMXVsIDw8IFRBUkdFVF9WSVJUX0FERFJfU1BBQ0VfQklUUykKKyAjICBlbmRpZgorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvcHBjX2xvY2tpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9wcGNfbG9ja2luZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmY3MjI0My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9wcGNfbG9ja2luZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi1JJ3ZlIHRyYWNrZWQgZG93biB3aGF0IEkgdGhpbmsgaXMgYSBwcm9ibGVtIGNhdXNpbmcgcWVtdS1zeXN0ZW0tcHBjCi10byBoYW5nIHdoaWxzdCBib290aW5nIGltYWdlcy4KLQotSSBiZWxpZXZlIHRoZSBkZWNyZW1lbnRlciB0aW1lciBzdG9wcyByZWNlaXZpbmcgaW50ZXJydXB0cyBzbwotdGFza3MgaW4gb3VyIGltYWdlcyBoYW5nIGluZGVmaW5pdGVseSBhcyB0aGUgdGltZXIgc3RvcHBlZC4gCi0KLUl0IGNhbiBiZSBzdW1tZWQgdXAgd2l0aCB0aGlzIGxpbmUgb2YgZGVidWc6Ci0KLXBwY19zZXRfaXJxOiAweDU1YjRlMGQ1NjJmMCBuX0lSUSA4IGxldmVsIDEgPT4gcGVuZGluZyAwMDAwMDEwMHJlcSAwMDAwMDAwNAotCi1JdCBzaG91bGQgbm9ybWFsbHkgcmVhZDoKLQotcHBjX3NldF9pcnE6IDB4NTViNGUwZDU2MmYwIG5fSVJRIDggbGV2ZWwgMSA9PiBwZW5kaW5nIDAwMDAwMTAwcmVxIDAwMDAwMDAyCi0KLVRoZSBxdWVzdGlvbiBpcyB3aHkgQ1BVX0lOVEVSUlVQVF9FWElUVEIgZW5kcyB1cCBiZWluZyBzZXQgd2hlbiB0aGUKLWxpbmVzIGFib3ZlIHRoaXMgbG9nIG1lc3NhZ2UgY2xlYXJseSBzZXRzIENQVV9JTlRFUlJVUFRfSEFSRCAodmlhIAotY3B1X2ludGVycnVwdCgpICkuCi0KLUkgbm90ZSBpbiBjcHUuaDoKLQotICAgIC8qIHVwZGF0ZXMgcHJvdGVjdGVkIGJ5IEJRTCAqLwotICAgIHVpbnQzMl90IGludGVycnVwdF9yZXF1ZXN0OwotCi0oZm9yIHN0cnVjdCBDUFVTdGF0ZSkKLQotVGhlIHBwYyBjb2RlIGRvZXMgImNzLT5pbnRlcnJ1cHRfcmVxdWVzdCB8PSBDUFVfSU5URVJSVVBUX0VYSVRUQiIgaW4gNQotcGxhY2VzLCAzIGluIGV4Y3BfaGVscGVyLmMgYW5kIDIgaW4gaGVscGVyX3JlZ3MuaC4gSW4gYWxsIGNhc2VzLCAgCi1nX2Fzc2VydChxZW11X211dGV4X2lvdGhyZWFkX2xvY2tlZCgpKTsgZmFpbHMuIElmIEkgZG8gc29tZXRoaW5nIGxpa2U6Ci0KLWlmICghcWVtdV9tdXRleF9pb3RocmVhZF9sb2NrZWQoKSkgewotICAgIHFlbXVfbXV0ZXhfbG9ja19pb3RocmVhZCgpOwotICAgIGNwdV9pbnRlcnJ1cHQoY3MsIENQVV9JTlRFUlJVUFRfRVhJVFRCKTsKLSAgICBxZW11X211dGV4X3VubG9ja19pb3RocmVhZCgpOwotfSBlbHNlIHsKLSAgICBjcHVfaW50ZXJydXB0KGNzLCBDUFVfSU5URVJSVVBUX0VYSVRUQik7Ci19Ci0KLWluIHRoZXNlIGNhbGwgc2l0ZXMgdGhlbiBJIGNhbiBubyBsb25nZXIgbG9jayBxZW11IHVwIHdpdGggbXkgdGVzdAotY2FzZS4KLQotSSBzdXNwZWN0IHRoZSBfSEFSRCBzZXR0aW5nIGdldHMgb3ZlcndyaXR0ZW4gd2hpY2ggc3RvcHMgdGhlIAotZGVjcmVtZW50ZXIgaW50ZXJydXB0cyBiZWluZyBkZWxpdmVyZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtJc3N1ZSBkaXNjdXNzZWQgb24gcWVtdSBtYWlsaW5nIGxpc3QgMjAxNy8xMS8yMF0KLVJQIDIwMTcvMTEvMjAKLQotSW5kZXg6IHFlbXUtMi4xMC4xL3RhcmdldC9wcGMvZXhjcF9oZWxwZXIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHFlbXUtMi4xMC4xLm9yaWcvdGFyZ2V0L3BwYy9leGNwX2hlbHBlci5jCi0rKysgcWVtdS0yLjEwLjEvdGFyZ2V0L3BwYy9leGNwX2hlbHBlci5jCi1AQCAtMjA3LDcgKzIwNyw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwb3dlcnBjX2V4Y3AoUG93ZXJQQ0MKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRW50ZXJpbmcgY2hlY2tzdG9wIHN0YXRlXG4iKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgY3MtPmhhbHRlZCA9IDE7Ci0tICAgICAgICAgICAgY3MtPmludGVycnVwdF9yZXF1ZXN0IHw9IENQVV9JTlRFUlJVUFRfRVhJVFRCOwotKyAgICAgICAgICAgIHFlbXVfbXV0ZXhfbG9ja19pb3RocmVhZCgpOwotKyAgICAgICAgICAgIGNwdV9pbnRlcnJ1cHQoY3MsIENQVV9JTlRFUlJVUFRfRVhJVFRCKTsKLSsgICAgICAgICAgICBxZW11X211dGV4X3VubG9ja19pb3RocmVhZCgpOwotICAgICAgICAgfQotICAgICAgICAgaWYgKGVudi0+bXNyX21hc2sgJiBNU1JfSFZCKSB7Ci0gICAgICAgICAgICAgLyogSVNBIHNwZWNpZmllcyBIViwgYnV0IGNhbiBiZSBkZWxpdmVyZWQgdG8gZ3Vlc3Qgd2l0aCBIViBjbGVhcgotQEAgLTk0MCw3ICs5NDIsOSBAQCB2b2lkIGhlbHBlcl9zdG9yZV9tc3IoQ1BVUFBDU3RhdGUgKmVudiwKLSAKLSAgICAgaWYgKGV4Y3AgIT0gMCkgewotICAgICAgICAgQ1BVU3RhdGUgKmNzID0gQ1BVKHBwY19lbnZfZ2V0X2NwdShlbnYpKTsKLS0gICAgICAgIGNzLT5pbnRlcnJ1cHRfcmVxdWVzdCB8PSBDUFVfSU5URVJSVVBUX0VYSVRUQjsKLSsgICAgICAgIHFlbXVfbXV0ZXhfbG9ja19pb3RocmVhZCgpOwotKyAgICAgICAgY3B1X2ludGVycnVwdChjcywgQ1BVX0lOVEVSUlVQVF9FWElUVEIpOwotKyAgICAgICAgcWVtdV9tdXRleF91bmxvY2tfaW90aHJlYWQoKTsKLSAgICAgICAgIHJhaXNlX2V4Y2VwdGlvbihlbnYsIGV4Y3ApOwotICAgICB9Ci0gfQotQEAgLTk5NSw3ICs5OTksOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZG9fcmZpKENQVVBQQ1N0YXRlICplCi0gICAgIC8qIE5vIG5lZWQgdG8gcmFpc2UgYW4gZXhjZXB0aW9uIGhlcmUsCi0gICAgICAqIGFzIHJmaSBpcyBhbHdheXMgdGhlIGxhc3QgaW5zbiBvZiBhIFRCCi0gICAgICAqLwotLSAgICBjcy0+aW50ZXJydXB0X3JlcXVlc3QgfD0gQ1BVX0lOVEVSUlVQVF9FWElUVEI7Ci0rICAgIHFlbXVfbXV0ZXhfbG9ja19pb3RocmVhZCgpOwotKyAgICBjcHVfaW50ZXJydXB0KGNzLCBDUFVfSU5URVJSVVBUX0VYSVRUQik7Ci0rICAgIHFlbXVfbXV0ZXhfdW5sb2NrX2lvdGhyZWFkKCk7Ci0gCi0gICAgIC8qIFJlc2V0IHRoZSByZXNlcnZhdGlvbiAqLwotICAgICBlbnYtPnJlc2VydmVfYWRkciA9IC0xOwotSW5kZXg6IHFlbXUtMi4xMC4xL3RhcmdldC9wcGMvaGVscGVyX3JlZ3MuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHFlbXUtMi4xMC4xLm9yaWcvdGFyZ2V0L3BwYy9oZWxwZXJfcmVncy5oCi0rKysgcWVtdS0yLjEwLjEvdGFyZ2V0L3BwYy9oZWxwZXJfcmVncy5oCi1AQCAtMTE0LDExICsxMTQsMTUgQEAgc3RhdGljIGlubGluZSBpbnQgaHJlZ19zdG9yZV9tc3IoQ1BVUFBDUwotICAgICB9Ci0gICAgIGlmICgoKHZhbHVlID4+IE1TUl9JUikgJiAxKSAhPSBtc3JfaXIgfHwKLSAgICAgICAgICgodmFsdWUgPj4gTVNSX0RSKSAmIDEpICE9IG1zcl9kcikgewotLSAgICAgICAgY3MtPmludGVycnVwdF9yZXF1ZXN0IHw9IENQVV9JTlRFUlJVUFRfRVhJVFRCOwotKyAgICAgICAgcWVtdV9tdXRleF9sb2NrX2lvdGhyZWFkKCk7Ci0rICAgICAgICBjcHVfaW50ZXJydXB0KGNzLCBDUFVfSU5URVJSVVBUX0VYSVRUQik7Ci0rICAgICAgICBxZW11X211dGV4X3VubG9ja19pb3RocmVhZCgpOwotICAgICB9Ci0gICAgIGlmICgoZW52LT5tbXVfbW9kZWwgJiBQT1dFUlBDX01NVV9CT09LRSkgJiYKLSAgICAgICAgICgodmFsdWUgPj4gTVNSX0dTKSAmIDEpICE9IG1zcl9ncykgewotLSAgICAgICAgY3MtPmludGVycnVwdF9yZXF1ZXN0IHw9IENQVV9JTlRFUlJVUFRfRVhJVFRCOwotKyAgICAgICAgcWVtdV9tdXRleF9sb2NrX2lvdGhyZWFkKCk7Ci0rICAgICAgICBjcHVfaW50ZXJydXB0KGNzLCBDUFVfSU5URVJSVVBUX0VYSVRUQik7Ci0rICAgICAgICBxZW11X211dGV4X3VubG9ja19pb3RocmVhZCgpOwotICAgICB9Ci0gICAgIGlmICh1bmxpa2VseSgoZW52LT5mbGFncyAmIFBPV0VSUENfRkxBR19UR1BSKSAmJgotICAgICAgICAgICAgICAgICAgKCh2YWx1ZSBeIGVudi0+bXNyKSAmICgxIDw8IE1TUl9UR1BSKSkpKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV8yLjEwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV8yLjEwLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkZjZjMjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfMi4xMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotcmVxdWlyZSBxZW11LmluYwotCi1pbmhlcml0IHB0ZXN0Ci0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ID0gImJhc2ggbWFrZSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDQxYzI4ZDJjZjg2ZTE1YTM3ZmE0N2UxNWE3MmZiYWMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7ZW5kbGluZT0yNDttZDU9YzA0ZGVmN2FlMzg4NTBlN2QzZWY1NDg1ODgxNTk5MTMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3dpa2kucWVtdS1wcm9qZWN0Lm9yZy9kb3dubG9hZC8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3Bvd2VycGNfcm9tLmJpbiBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWdyYWJzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2V4Y2x1ZGUtc29tZS1hcm0tRUFCSS1vYnNvbGV0ZS1zeXNjYWxscy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly93YWNvbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hZGQtcHRlc3QtaW4tbWFrZWZpbGUtdjEwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9xZW11LWVubGFyZ2UtZW52LWVudHJ5LXNpemUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbm8tdmFsZ3JpbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcGF0aGxpbWl0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3FlbXUtMi41LjAtY2ZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dsaWJjLTIuMjUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Qcm92aWRlLXN1cHBvcnQtZm9yLXRoZS1DVVNFLVRQTS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLUludHJvZHVjZS1jb25kaXRpb24tdG8tbm90aWZ5LXdhaXRlcnMtb2YtY29tcGxldGVkLWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1JbnRyb2R1Y2UtY29uZGl0aW9uLWluLVRQTS1iYWNrZW5kLWZvci1ub3RpZmljYXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1BZGQtc3VwcG9ydC1mb3ItVk0tc3VzcGVuZC1yZXN1bWUtZm9yLVRQTS1USVMtdjIuOS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hcGljLWZpeHVwLWZhbGx0aHJvdWdoLXRvLVBJQy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMzcxMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMzY3My5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMzY3Mi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDE2Ny5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wcGNfbG9ja2luZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tZW1mZC5wYXRjaCBcCi0gICAgICAgICAgICIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInFlbXUtKD9QPHB2ZXI+XGQrXC4uKilcLnRhciIKLQotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIFwKLSAgICAgICAgICAgIGZpbGU6Ly9maXgtbGliY2FwLWhlYWRlci1pc3N1ZS1vbi1zb21lLWRpc3Ryby5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vY3B1cy5jLXFlbXVfY3B1X2tpY2tfdGhyZWFkX2RlYnVnZ2luZy5wYXRjaCBcCi0gICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjYTczNDQxZGU3M2E5YjUyYzZjNDljOTcxOTBkMjE4NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZTlmMzllMTMwNmU2ZGNjNTk1NDk0ZTkxYzE0NjRkNGIwM2Y1NWRkZDIwNTMxODNlMGUxYjY5ZjdmNzc2ZDQ4IgotCi1DT01QQVRJQkxFX0hPU1RfbWlwc2FyY2huMzIgPSAibnVsbCIKLUNPTVBBVElCTEVfSE9TVF9taXBzYXJjaG42NCA9ICJudWxsIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIFByZXZlbnQgUUEgd2FybmluZ3MgYWJvdXQgaW5zdGFsbGVkICR7bG9jYWxzdGF0ZWRpcn0vcnVuCi0gICAgaWYgWyAtZCAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4gXTsgdGhlbiBybWRpciAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW47IGZpCi0gICAgaW5zdGFsbCAtRG0gMDc1NSAke1dPUktESVJ9L3Bvd2VycGNfcm9tLmJpbiAke0R9JHtkYXRhZGlyfS9xZW11Ci19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0JbWFrZSBidWlsZHRlc3QtVEVTVFMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQljcCAtckwgJHtCfS90ZXN0cyAke0R9JHtQVEVTVF9QQVRIfQotCWZpbmQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMgLXR5cGUgZiAtbmFtZSAiKi5bU3NoY29kXSIgfCB4YXJncyAtaSBybSAtcmYge30KLQotCWNwICR7U30vdGVzdHMvTWFrZWZpbGUuaW5jbHVkZSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfMi4xMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfMi4xMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiODJjNWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV8yLjExLjEuYmIKQEAgLTAsMCArMSw1OSBAQAorcmVxdWlyZSBxZW11LmluYworCitpbmhlcml0IHB0ZXN0CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gImJhc2ggbWFrZSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDQxYzI4ZDJjZjg2ZTE1YTM3ZmE0N2UxNWE3MmZiYWMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7ZW5kbGluZT0yNDttZDU9YzA0ZGVmN2FlMzg4NTBlN2QzZWY1NDg1ODgxNTk5MTMiCisKK1NSQ19VUkkgPSAiaHR0cDovL3dpa2kucWVtdS1wcm9qZWN0Lm9yZy9kb3dubG9hZC8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3Bvd2VycGNfcm9tLmJpbiBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWdyYWJzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3dhY29tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FkZC1wdGVzdC1pbi1tYWtlZmlsZS12MTAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL3FlbXUtZW5sYXJnZS1lbnYtZW50cnktc2l6ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uby12YWxncmluZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wYXRobGltaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcWVtdS0yLjUuMC1jZmxhZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY2hhcmRldi1jb25uZWN0LXNvY2tldC10by1hLXNwYXduZWQtY29tbWFuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hcGljLWZpeHVwLWZhbGx0aHJvdWdoLXRvLVBJQy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9saW51eC11c2VyLUZpeC13ZWJraXRndGstaGFuZ3Mtb24tMzItYml0LXg4Ni10YXJnZXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWVtZmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hcm0tdHJhbnNsYXRlLWE2NC10cmVhdC1ESVNBU19VUERBVEUtYXMtdmFyaWFudC1vZi1ELnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NoZWNrLVBTMlF1ZXVlLXBvaW50ZXJzLWluLXBvc3RfbG9hZC1yb3V0aW5lLnBhdGNoIFwKKyAgICAgICAgICAgIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicWVtdS0oP1A8cHZlcj5cZCtcLi4qKVwudGFyIgorCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgXAorICAgICAgICAgICAgZmlsZTovL2ZpeC1saWJjYXAtaGVhZGVyLWlzc3VlLW9uLXNvbWUtZGlzdHJvLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9jcHVzLmMtcWVtdV9jcHVfa2lja190aHJlYWRfZGVidWdnaW5nLnBhdGNoIFwKKyAgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjYxY2Y4NjJiNjAwN2ViYTRhYzk4MjQ3Nzc2YWYyZTI3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ5ZGYyMjEzY2VlZDMyZTkxZGFiN2JjOWRkMTljMWFmODNmOTFiYTcyYzdhZWVmNzYwNWRmYWFmODE3MzJjY2IiCisKK0NPTVBBVElCTEVfSE9TVF9taXBzYXJjaG4zMiA9ICJudWxsIgorQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjY0ID0gIm51bGwiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgUHJldmVudCBRQSB3YXJuaW5ncyBhYm91dCBpbnN0YWxsZWQgJHtsb2NhbHN0YXRlZGlyfS9ydW4KKyAgICBpZiBbIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biBdOyB0aGVuIHJtZGlyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bjsgZmkKKyAgICBpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vcG93ZXJwY19yb20uYmluICR7RH0ke2RhdGFkaXJ9L3FlbXUKK30KKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwltYWtlIGJ1aWxkdGVzdC1URVNUUworfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWNwIC1yTCAke0J9L3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9CisJZmluZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cyAtdHlwZSBmIC1uYW1lICIqLltTc2hjb2RdIiB8IHhhcmdzIC1pIHJtIC1yZiB7fQorCisJY3AgJHtTfS90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisJIyBEb24ndCBjaGVjayB0aGUgZmlsZSBnZW5yZWF0ZWQgYnkgY29uZmlndXJlCisJc2VkIC1pIC1lICcvd2lsZGNhcmQgY29uZmlnLWhvc3QubWFrL2QnIFwKKwkgICAgICAgLWUgJyQgey9lbmRpZi9kfScgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUuaW5jbHVkZQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdC9hY2xvY2FsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdC9hY2xvY2FsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWY0NDI5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcXVpbHQvcXVpbHQvYWNsb2NhbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyOCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotQWRkIHRoZSBhY2xvY2FsLm00IGFzIGFjaW5jbHVkZS5tNAotCi1JbmRleDogcXVpbHQtMC40Ny9hY2luY2x1ZGUubTQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBxdWlsdC0wLjQ3L2FjaW5jbHVkZS5tNAkyMDA2LTEwLTEwIDE3OjA1OjU2LjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSwxMTkgQEAKLStkbmwgQWxsb3cgY29uZmlndXJlIHRvIHNwZWNpZnkgYSBzcGVjaWZpYyBiaW5hcnkKLStkbmwgMTogRW52aXJvbm1lbnQgdmFyaWFibGUKLStkbmwgMjogYmluYXJ5IG5hbWUKLStkbmwgMzogb3B0aW9uYWwgbGlzdCBvZiBhbHRlcm5hdGl2ZSBiaW5hcnkgbmFtZXMKLStkbmwgNDogb3B0aW9uYWwgbGlzdCBvZiBhZGRpdGlvbmFsIHNlYXJjaCBkaXJlY3RvcmllcwotK0FDX0RFRlVOKFtRVUlMVF9DT01QQVRfUFJPR19QQVRIXSxbCi0rICBtNF9kZWZpbmUoW2ludGVybmFsXyQyX2NtZF0sW2VzeXNjbWQobHMgY29tcGF0LyQyLmluIDI+L2Rldi9udWxsKV0pCi0rCi0rICBBQ19BUkdfV0lUSCgkMiwgQUNfSEVMUF9TVFJJTkcoCi0rICAgIFstLXdpdGgtJDJdLCBbbmFtZSBvZiB0aGUgJDIgZXhlY3V0YWJsZSB0byB1c2VdCi0rICAgICAgICAgICAgICAgICBtNF9pZihpbnRlcm5hbF8kMl9jbWQsW10sW10sWyAodXNlIC0td2l0aG91dC0kMgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdXNlIGFuIGludGVybmFsIG1lY2hhbmlzbSldKSksCi0rICBbCi0rICAgIGlmIHRlc3QgeCIkd2l0aHZhbCIgPSB4bm9uZTsgdGhlbgotKyAgICAgIEFDX01TR19FUlJPUihbSW52YWxpZCBjb25maWd1cmUgYXJndW1lbnQuICB1c2UgLS13aXRob3V0LSQyXSkKLSsgICAgZmkKLSsgICAgaWYgdGVzdCB4IiR3aXRodmFsIiAhPSB4bm87IHRoZW4KLSsgICAgICBBQ19NU0dfQ0hFQ0tJTkcoZm9yICQyKQotKyAgICAgICQxPSIkd2l0aHZhbCIKLSsgICAgICBpZiB0ZXN0IC1lICIkJDEiOyB0aGVuCi0rCWlmIHRlc3QgISAtZiAiJCQxIiAtYSAhIC1oICIkJDEiIHx8IHRlc3QgISAteCAiJCQxIjsgdGhlbgotKwkgIEFDX01TR19FUlJPUihbJCQxIGlzIG5vdCBhbiBleGVjdXRhYmxlIGZpbGVdKQotKwlmaQotKyAgICAgIGZpCi0rICAgICAgQUNfTVNHX1JFU1VMVChbJCQxXSkKLSsgICAgICBpZiB0ZXN0ICEgLWUgIiQkMSI7IHRoZW4KLSsgICAgICAgIEFDX01TR19XQVJOKFskJDEgZG9lcyBub3QgZXhpc3RdKQotKyAgICAgIGZpCi0rICAgICAgQ09NUEFUX1NZTUxJTktTPSIkQ09NUEFUX1NZTUxJTktTICQyIgotKyAgICBmaQotKyAgXSxbCi0rICAgIG00X2lmKFskM10sW10sWwotKyAgICAgIEFDX1BBVEhfUFJPRygkMSwkMiwsJFBBVEg6JDQpCi0rICAgIF0sWwotKyAgICAgIEFDX1BBVEhfUFJPR1MoJDEsJDMsLCRQQVRIOiQ0KQotKyAgICAgIGlmIHRlc3QgLW4gIiQkMSIgLWEgImBleHByICIkJDEiIDogJy4qL1woW1teL11dKlwpJCdgIiAhPSAiJDIiOyB0aGVuCi0rCUNPTVBBVF9TWU1MSU5LUz0iJENPTVBBVF9TWU1MSU5LUyAkMiIKLSsgICAgICBmaQotKyAgICBdKQotKyAgICBtNF9pZihbJDRdLFtdLFtdLFsKLSsgICAgICBpZiB0ZXN0IC1uICIkJDEiOyB0aGVuCi0rCWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLSsgICAgICAgIGZvciBkaXIgaW4gIiQ0IjsgZG8KLSsgICAgICAgICAgaWYgdGVzdCAiYGRpcm5hbWUgJCQxYCIgPSAiJGRpciI7IHRoZW4KLSsgICAgICAgICAgICBDT01QQVRfU1lNTElOS1M9IiRDT01QQVRfU1lNTElOS1MgJDIiCi0rCSAgICBicmVhawotKwkgIGZpCi0rICAgICAgICBkb25lCi0rCUlGUz0iJGFzX3NhdmVfSUZTIgotKyAgICAgIGZpCi0rICAgIF0pCi0rICBdKQotKyAgaWYgdGVzdCAteiAiJCQxIjsgdGhlbgotKyAgICBtNF9pZihpbnRlcm5hbF8kMl9jbWQsW10sWwotKyAgICAgIEFDX01TR19FUlJPUihbUGxlYXNlIHNwZWNpZnkgdGhlIGxvY2F0aW9uIG9mICQyIHdpdGggdGhlIG9wdGlvbiAnLS13aXRoLSQyJ10pCi0rICAgIF0sWwotKyAgICAgIEFDX01TR19XQVJOKFtVc2luZyBpbnRlcm5hbCAkMiBtZWNoYW5pc20uICBVc2Ugb3B0aW9uICctLXdpdGgtJDInIHRvIG92ZXJyaWRlXSkKLSsgICAgICBDT01QQVRfUFJPR1JBTVM9IiRDT01QQVRfUFJPR1JBTVMgJDIiCi0rICAgICAgJDE9JDIKLSsgICAgICBJTlRFUk5BTF8kMT0xCi0rICAgIF0pCi0rICBmaQotKyAgQUNfU1VCU1QoJDEpCi0rXSkKLSsKLStkbmwgQWxsb3cgY29uZmlndXJlIHRvIHNwZWNpZnkgYSBzcGVjaWZpYyBiaW5hcnkKLStkbmwgVGhpcyB2YXJpYW50IGlzIGZvciBvcHRpb25hbCBiaW5hcmllcy4KLStkbmwgMTogRW52aXJvbm1lbnQgdmFyaWFibGUKLStkbmwgMjogYmluYXJ5IG5hbWUKLStkbmwgMzogb3B0aW9uYWwgbGlzdCBvZiBhbHRlcm5hdGl2ZSBiaW5hcnkgbmFtZXMKLStkbmwgNDogb3B0aW9uYWwgbGlzdCBvZiBhZGRpdGlvbmFsIHNlYXJjaCBkaXJlY3RvcmllcwotK0FDX0RFRlVOKFtRVUlMVF9DT01QQVRfUFJPR19QQVRIX09QVF0sWwotKyAgQUNfQVJHX1dJVEgoJDIsIEFDX0hFTFBfU1RSSU5HKAotKyAgICBbLS13aXRoLSQyXSwgW25hbWUgb2YgdGhlICQyIGV4ZWN1dGFibGUgdG8gdXNlXSksCi0rICBbCi0rICAgIGlmIHRlc3QgeCIkd2l0aHZhbCIgIT0geG5vOyB0aGVuCi0rICAgICAgQUNfTVNHX0NIRUNLSU5HKGZvciAkMikKLSsgICAgICAkMT0iJHdpdGh2YWwiCi0rICAgICAgaWYgdGVzdCAtZSAiJCQxIjsgdGhlbgotKwlpZiB0ZXN0ICEgLWYgIiQkMSIgLWEgISAtaCAiJCQxIiB8fCB0ZXN0ICEgLXggIiQkMSI7IHRoZW4KLSsJICBBQ19NU0dfRVJST1IoWyQkMSBpcyBub3QgYW4gZXhlY3V0YWJsZSBmaWxlXSkKLSsJZmkKLSsgICAgICBmaQotKyAgICAgIEFDX01TR19SRVNVTFQoWyQkMV0pCi0rICAgICAgaWYgdGVzdCAhIC1lICIkJDEiOyB0aGVuCi0rICAgICAgICBBQ19NU0dfV0FSTihbJCQxIGRvZXMgbm90IGV4aXN0XSkKLSsgICAgICBmaQotKyAgICAgIENPTVBBVF9TWU1MSU5LUz0iJENPTVBBVF9TWU1MSU5LUyAkMiIKLSsgICAgZmkKLSsgIF0sWwotKyAgICBtNF9pZihbJDNdLFtdLFsKLSsgICAgICBBQ19QQVRIX1BST0coJDEsJDIsLCRQQVRIOiQ0KQotKyAgICBdLFsKLSsgICAgICBBQ19QQVRIX1BST0dTKCQxLCQzLCwkUEFUSDokNCkKLSsgICAgICBpZiB0ZXN0IC1uICIkJDEiIC1hICJgZXhwciAiJCQxIiA6ICcuKi9cKFtbXi9dXSpcKSQnYCIgIT0gIiQyIjsgdGhlbgotKwlDT01QQVRfU1lNTElOS1M9IiRDT01QQVRfU1lNTElOS1MgJDIiCi0rICAgICAgZmkKLSsgICAgXSkKLSsgICAgbTRfaWYoWyQ0XSxbXSxbXSxbCi0rICAgICAgaWYgdGVzdCAtbiAiJCQxIjsgdGhlbgotKwlhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rICAgICAgICBmb3IgZGlyIGluICIkNCI7IGRvCi0rICAgICAgICAgIGlmIHRlc3QgImBkaXJuYW1lICQkMWAiID0gIiRkaXIiOyB0aGVuCi0rICAgICAgICAgICAgQ09NUEFUX1NZTUxJTktTPSIkQ09NUEFUX1NZTUxJTktTICQyIgotKwkgICAgYnJlYWsKLSsJICBmaQotKyAgICAgICAgZG9uZQotKwlJRlM9IiRhc19zYXZlX0lGUyIKLSsgICAgICBmaQotKyAgICBdKQotKyAgICBpZiB0ZXN0IC16ICIkJDEiOyB0aGVuCi0rICAgICAgQUNfTVNHX1dBUk4oWyQyIG5vdCBmb3VuZCwgc29tZSBvcHRpb25hbCBmdW5jdGlvbmFsaXRpZXMgd2lsbCBiZSBtaXNzaW5nXSkKLSsgICAgZmkKLSsgIF0pCi0rICBpZiB0ZXN0IC16ICIkJDEiOyB0aGVuCi0rICAgICQxPSQyCi0rICBmaQotKyAgQUNfU1VCU1QoJDEpCi0rXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcXVpbHQvcXVpbHRfMC42NS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcXVpbHQvcXVpbHRfMC42NS5iYgppbmRleCAxMjg1OWYwLi41YmY4MThkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3F1aWx0L3F1aWx0XzAuNjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdF8wLjY1LmJiCkBAIC0xLDYgKzEsOCBAQAogcmVxdWlyZSBxdWlsdC5pbmMKIGluaGVyaXQgZ2V0dGV4dAorCitTUkNfVVJJICs9ICJmaWxlOi8vZ251X3BhdGNoX3Rlc3RfZml4X3RhcmdldC5wYXRjaCIKKworRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWFjbG9jYWwiCisKIFJERVBFTkRTXyR7UE59ICs9ICJwYXRjaCBkaWZmc3RhdCBiemlwMiB1dGlsLWxpbnV4IgotU1JDX1VSSSArPSAiZmlsZTovL2FjbG9jYWwucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2dudV9wYXRjaF90ZXN0X2ZpeF90YXJnZXQucGF0Y2ggXAotICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLUFkZC1QWVRIT05fQUJJLXdoZW4tc2VhcmNoaW5nLWZvci1weXRob24tbGlicmFyaWVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1BZGQtUFlUSE9OX0FCSS13aGVuLXNlYXJjaGluZy1mb3ItcHl0aG9uLWxpYnJhcmllcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjgwOTMzMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLUFkZC1QWVRIT05fQUJJLXdoZW4tc2VhcmNoaW5nLWZvci1weXRob24tbGlicmFyaWVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSAzNmNmMGZmMjZlY2U1M2U1MjllOGI0ZjJkMmYwOWFjZDg3OTRiMDU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI0IE1hciAyMDE3IDE1OjM1OjQ3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBQWVRIT05fQUJJIHdoZW4gc2VhcmNoaW5nIGZvciBweXRob24gbGlicmFyaWVzLgotCi1JdCBoYXMgYSB2YWx1ZSBvZiAnbScgd2hlbiB1c2luZyBQeXRob24zLCBhbmQgc28gd2l0aG91dCBpdAotY29uZmlndXJlIHdpbGwgbm90IGZpbmQgdGhlIGxpYnJhcmllcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDljNTg0NjdjMS4uYTUwNmVjODE5IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02NDIsNyArNjQyLDcgQEAgQVNfSUYoW3Rlc3QgIiRlbmFibGVfcHl0aG9uIiA9IHllc10sWwotICAgICAgIF0pCi0gICAgIENQUEZMQUdTPSIkc2F2ZV9DUFBGTEFHUyIKLSAgICAgc2F2ZV9MSUJTPSIkTElCUyIKLS0gICAgQUNfU0VBUkNIX0xJQlMoW1B5X01haW5dLFtweXRob24ke1BZVEhPTl9WRVJTSU9OfSBweXRob25dLFsKLSsgICAgQUNfU0VBUkNIX0xJQlMoW1B5X01haW5dLFtweXRob24ke1BZVEhPTl9WRVJTSU9OfSR7UFlUSE9OX0FCSX0gcHl0aG9uXSxbCi0gICAgICAgV0lUSF9QWVRIT05fTElCPSIkYWNfcmVzIgotICAgICBdLFtBQ19NU0dfRVJST1IoW21pc3NpbmcgcHl0aG9uIGxpYnJhcnldKQotICAgICBdKQotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1Eby1ub3QtaGFyZGNvZGUtbGliLXJwbS1hcy10aGUtaW5zdGFsbGF0aW9uLXBhdGgtZm9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1Eby1ub3QtaGFyZGNvZGUtbGliLXJwbS1hcy10aGUtaW5zdGFsbGF0aW9uLXBhdGgtZm9yLnBhdGNoCmluZGV4IDFmNjFhY2EuLjU2MDRjYjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRG8tbm90LWhhcmRjb2RlLWxpYi1ycG0tYXMtdGhlLWluc3RhbGxhdGlvbi1wYXRoLWZvci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLURvLW5vdC1oYXJkY29kZS1saWItcnBtLWFzLXRoZS1pbnN0YWxsYXRpb24tcGF0aC1mb3IucGF0Y2gKQEAgLTEsMTAgKzEsMTAgQEAKLUZyb20gZDgyNjkxYjhkNTgyMDFkZDAzZTMwNTg1ZGFhY2Q4ZmZkMTU1NmFlMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYzgyYzE5ZGM1ODM4NDNiMWE5NzVmMmUzZjJlMTUxNjU2YTZmMzc3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyNyBGZWIgMjAxNyAwOTo0MzozMCArMDIwMAotU3ViamVjdDogW1BBVENIXSBEbyBub3QgaGFyZGNvZGUgImxpYi9ycG0iIGFzIHRoZSBpbnN0YWxsYXRpb24gcGF0aCBmb3IKK1N1YmplY3Q6IFtQQVRDSCAwNi8xNF0gRG8gbm90IGhhcmRjb2RlICJsaWIvcnBtIiBhcyB0aGUgaW5zdGFsbGF0aW9uIHBhdGggZm9yCiAgZGVmYXVsdCBjb25maWd1cmF0aW9uIGFuZCBtYWNyb3MuCiAKLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtL3B1bGwvMjYzXQorVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9ycG0vcHVsbC8yNjNdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIAogLS0tCkBAIC0xNCwxMCArMTQsMTAgQEAKICAzIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNGYzYmU4NzcwLi45MmZmZDNkNjggMTAwNjQ0CitpbmRleCA3MTU1ZDlmMDAuLjIxYjk1YWU1ZiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtODc1LDcgKzg3NSw3IEBAIGVsc2UKK0BAIC0xMDQ3LDcgKzEwNDcsNyBAQCBlbHNlCiAgICAgIHVzcnByZWZpeD0kcHJlZml4CiAgZmkKICAKQEAgLTI3LDEwICsyNywxMCBAQAogIAogIEFDX1NVQlNUKE9CSkRVTVApCiBkaWZmIC0tZ2l0IGEvbWFjcm9zLmluIGIvbWFjcm9zLmluCi1pbmRleCBjNmQ1YTZiMDMuLjg0YWUyNTI3NSAxMDA2NDQKK2luZGV4IGQwODYyNDg1Ni4uNjhhOTcyZjFlIDEwMDY0NAogLS0tIGEvbWFjcm9zLmluCiArKysgYi9tYWNyb3MuaW4KLUBAIC04NzcsNyArODc3LDcgQEAgcGFja2FnZSBvciB3aGVuIGRlYnVnZ2luZyB0aGlzIHBhY2thZ2UuXAorQEAgLTk1NCw3ICs5NTQsNyBAQCBwYWNrYWdlIG9yIHdoZW4gZGVidWdnaW5nIHRoaXMgcGFja2FnZS5cCiAgJV9zaGFyZWRzdGF0ZWRpcgkle19wcmVmaXh9L2NvbQogICVfbG9jYWxzdGF0ZWRpcgkJJXtfcHJlZml4fS92YXIKICAlX2xpYgkJCWxpYgpAQCAtNDAsNyArNDAsNyBAQAogICVfaW5mb2RpcgkJJXtfZGF0YWRpcn0vaW5mbwogICVfbWFuZGlyCQkle19kYXRhZGlyfS9tYW4KIGRpZmYgLS1naXQgYS9ycG0uYW0gYi9ycG0uYW0KLWluZGV4IDFmNDNhZDhhMC4uNjg1NGZmNmJhIDEwMDY0NAoraW5kZXggNTEyMjU4OTJkLi5lMGM4MzRkMzcgMTAwNjQ0CiAtLS0gYS9ycG0uYW0KICsrKyBiL3JwbS5hbQogQEAgLTEsMTAgKzEsMTAgQEAKQEAgLTU1LDcgKzU1LDcgQEAKICtycG1jb25maWdkaXIgPSAkKGxpYmRpcikvcnBtCiAgCiAgIyBMaWJ0b29sIHZlcnNpb24gKGN1cnJlbnQtcmV2aXNpb24tYWdlKSBmb3IgYWxsIG91ciBsaWJyYXJpZXMKLSBycG1fdmVyc2lvbl9pbmZvID0gNzowOjAKKyBycG1fdmVyc2lvbl9pbmZvID0gODoxOjAKIC0tIAotMi4xMS4wCisyLjE1LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1Eby1ub3QtcmVzZXQtdGhlLVBBVEgtZW52aXJvbm1lbnQtdmFyaWFibGUtYmVmb3JlLXJ1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1Eby1ub3QtcmVzZXQtdGhlLVBBVEgtZW52aXJvbm1lbnQtdmFyaWFibGUtYmVmb3JlLXJ1LnBhdGNoCmluZGV4IGEzODY3NWYuLmJmMjRkNDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRG8tbm90LXJlc2V0LXRoZS1QQVRILWVudmlyb25tZW50LXZhcmlhYmxlLWJlZm9yZS1ydS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLURvLW5vdC1yZXNldC10aGUtUEFUSC1lbnZpcm9ubWVudC12YXJpYWJsZS1iZWZvcmUtcnUucGF0Y2gKQEAgLTYsNiArNiw5IEBACiAKIFdlIGFkZCBsb3RzIG9mIG5hdGl2ZSBzdHVmZiBpbnRvIGl0IGFuZCBzY3JpcHRsZXRzIHJlbHkgb24gdGhhdC4KIAorQWxzbyBuZWVkIHRvIHJlbW92ZSB0aGUgeHggdGVzdCBsYXRlciBpbiB0aGUgZnVuY3Rpb24gc2luY2UgdGhlCit2YWx1ZSBjb3VsZCBub3cgYmUgdXNlZCB1bi1pbml0aWFsaXNlZC4KKwogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAtLS0KQEAgLTI1LDYgKzI4LDEzIEBACiAgCWZyZWUoaXBhdGgpOwogICAgICB9CiAgCi0tLSAKLTIuMTEuMAotCitAQCAtMjA2LDkgKzIwNiw3IEBAIHN0YXRpYyB2b2lkIGRvU2NyaXB0RXhlYyhBUkdWX2NvbnN0X3QgYXIKKyAJLyogWFhYIERvbid0IG10cmFjZSBpbnRvIGNoaWxkcmVuLiAqLworIAl1bnNldGVudigiTUFMTE9DX0NIRUNLXyIpOworIAorLQlpZiAoeHggPT0gMCkgeworIAkgICAgeHggPSBleGVjdihhcmd2WzBdLCBhcmd2KTsKKy0JfQorICAgICB9CisgICAgIF9leGl0KDEyNyk7IC8qIGV4aXQgMTI3IGZvciBjb21wYXRpYmlsaXR5IHdpdGggYmFzaCgxKSAqLworIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRmFjdG9yLW91dC1hbmQtdW5pZnktc2V0dGluZy1DTE9FWEVDLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1GYWN0b3Itb3V0LWFuZC11bmlmeS1zZXR0aW5nLUNMT0VYRUMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmY0NDBjNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRmFjdG9yLW91dC1hbmQtdW5pZnktc2V0dGluZy1DTE9FWEVDLnBhdGNoCkBAIC0wLDAgKzEsMTQ4IEBACitGcm9tIDljM2U1ZGUzMjQwNTU0YzhlYTFiMjlkNTJlZWFkZWU0ODQwZmVmYWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaXIgS29seXNoa2luIDxrb2x5c2hraW5AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyOSBNYXkgMjAxOCAxNzozNzowNSAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvM10gRmFjdG9yIG91dCBhbmQgdW5pZnkgc2V0dGluZyBDTE9FWEVDCisKK0NvbW1pdCA3YTdjMzFmNSAoIlNldCBGRF9DTE9FWEVDIG9uIG9wZW5lZCBmaWxlcyBiZWZvcmUgZXhlYyBmcm9tCitsdWEgc2NyaXB0IGlzIGNhbGxlZCIpIGNvcGllZCB0aGUgY29kZSB0aGF0IHNldHMgQ0xPRVhFQyBmbGFnIG9uIGFsbAorcG9zc2libGUgZmlsZSBkZXNjcmlwdG9ycyBmcm9tIGxpYi9ycG1zY3JpcHQuYyB0byBsdWFleHQvbHBvc2l4LmMsCitlc3NlbnRpYWxseSBjcmVhdGluZyB0d28gY29waWVzIG9mIHRoZSBzYW1lIGNvZGUgKG1vZHVsbyBjb21tZW50cworYW5kIHRoZSB1bnVzZWQgYXNzaWdubWVudCkuCisKK1RoaXMgY29tbWl0IG1vdmVzIHRoZSBmdW5jdGlvbmFsaXR5IGludG8gaXRzIG93biBmdW5jdGlvbiwgd2l0aG91dAorYW55IGNvZGUgbW9kaWZpY2F0aW9ucywgdXNpbmcgdGhlIHZlcnNpb24gZnJvbSBsdWFleHQvbHBvc2l4LmMuCisKK1NpZ25lZC1vZmYtYnk6IEtpciBLb2x5c2hraW4gPGtvbHlzaGtpbkBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtL3B1bGwvNDQ0XQorU2lnbmVkLW9mZi1ieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwZXRlci5ramVsbGVyc3RlZHRAYXhpcy5jb20+CistLS0KKyBsaWIvcnBtc2NyaXB0LmMgICAgICAgIHwgMTggKystLS0tLS0tLS0tLS0tLS0tCisgbHVhZXh0L2xwb3NpeC5jICAgICAgICB8IDEzICsrLS0tLS0tLS0tLS0KKyBycG1pby9ycG1pby5jICAgICAgICAgIHwgMTYgKysrKysrKysrKysrKysrKworIHJwbWlvL3JwbWlvX2ludGVybmFsLmggfCAgNiArKysrKysKKyA0IGZpbGVzIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL3JwbXNjcmlwdC5jIGIvbGliL3JwbXNjcmlwdC5jCitpbmRleCA3NDczODVhNWIuLmI0Y2NkMzI0NiAxMDA2NDQKKy0tLSBhL2xpYi9ycG1zY3JpcHQuYworKysrIGIvbGliL3JwbXNjcmlwdC5jCitAQCAtMyw3ICszLDYgQEAKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPHVuaXN0ZC5oPgorIAorICNpbmNsdWRlIDxycG0vcnBtZmlsZXV0aWwuaD4KKyAjaW5jbHVkZSA8cnBtL3JwbW1hY3JvLmg+CitAQCAtMTQsNiArMTMsNyBAQAorIAorICNpbmNsdWRlICJycG1pby9ycG1sdWEuaCIKKyAjaW5jbHVkZSAibGliL3JwbXNjcmlwdC5oIgorKyNpbmNsdWRlICJycG1pby9ycG1pb19pbnRlcm5hbC5oIgorIAorICNpbmNsdWRlICJsaWIvcnBtcGx1Z2lucy5oIiAgICAgLyogcnBtIHBsdWdpbnMgaG9va3MgKi8KKyAKK0BAIC0xNzAsMjYgKzE3MCwxMiBAQCBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IFNDUklQVF9QQVRIID0gIlBBVEg9L3NiaW46L2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3VzcgorIHN0YXRpYyB2b2lkIGRvU2NyaXB0RXhlYyhBUkdWX2NvbnN0X3QgYXJndiwgQVJHVl9jb25zdF90IHByZWZpeGVzLAorIAkJCUZEX3Qgc2NyaXB0RmQsIEZEX3Qgb3V0KQorIHsKKy0gICAgaW50IGZsYWc7CistICAgIGludCBmZG5vOworICAgICBpbnQgeHg7CistICAgIGludCBvcGVuX21heDsKKyAKKyAgICAgLyogU0lHUElQRSBpcyBpZ25vcmVkIGluIHJwbSwgcmVzZXQgdG8gZGVmYXVsdCBmb3IgdGhlIHNjcmlwdGxldCAqLworICAgICAodm9pZCkgc2lnbmFsKFNJR1BJUEUsIFNJR19ERkwpOworIAorLSAgICAvKiBYWFggRm9yY2UgRkRfQ0xPRVhFQyBvbiBhbGwgaW5oZXJpdGVkIGZkbm8ncy4gKi8KKy0gICAgb3Blbl9tYXggPSBzeXNjb25mKF9TQ19PUEVOX01BWCk7CistICAgIGlmIChvcGVuX21heCA9PSAtMSkgeworLQlvcGVuX21heCA9IDEwMjQ7CistICAgIH0KKy0gICAgZm9yIChmZG5vID0gMzsgZmRubyA8IG9wZW5fbWF4OyBmZG5vKyspIHsKKy0JZmxhZyA9IGZjbnRsKGZkbm8sIEZfR0VURkQpOworLQlpZiAoZmxhZyA9PSAtMSB8fCAoZmxhZyAmIEZEX0NMT0VYRUMpKQorLQkgICAgY29udGludWU7CistCXh4ID0gZmNudGwoZmRubywgRl9TRVRGRCwgRkRfQ0xPRVhFQyk7CistCS8qIFhYWCBXMkRPPyBkZWJ1ZyBtc2cgZm9yIGluaGVpcml0ZWQgZmRubyB3L28gRkRfQ0xPRVhFQyAqLworLSAgICB9CisrICAgIHJwbVNldENsb3NlT25FeGVjKCk7CisgCisgICAgIGlmIChzY3JpcHRGZCAhPSBOVUxMKSB7CisgCWludCBzZmRubyA9IEZpbGVubyhzY3JpcHRGZCk7CitkaWZmIC0tZ2l0IGEvbHVhZXh0L2xwb3NpeC5jIGIvbHVhZXh0L2xwb3NpeC5jCitpbmRleCAwYTdjMjZjNzEuLjVkN2FkM2M4NyAxMDA2NDQKKy0tLSBhL2x1YWV4dC9scG9zaXguYworKysrIGIvbHVhZXh0L2xwb3NpeC5jCitAQCAtMjcsNiArMjcsNyBAQAorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8dXRpbWUuaD4KKyAjaW5jbHVkZSA8cnBtL3JwbXV0aWwuaD4KKysjaW5jbHVkZSAicnBtaW8vcnBtaW9faW50ZXJuYWwuaCIKKyAKKyAjZGVmaW5lIE1ZTkFNRQkJInBvc2l4IgorICNkZWZpbmUgTVlWRVJTSU9OCU1ZTkFNRSAiIGxpYnJhcnkgZm9yICIgTFVBX1ZFUlNJT04gIiAvIE5vdiAyMDAzIgorQEAgLTMzNSwyMSArMzM2LDExIEBAIHN0YXRpYyBpbnQgUGV4ZWMobHVhX1N0YXRlICpMKQkJCS8qKiBleGVjKHBhdGgsW2FyZ3NdKSAqLworIAljb25zdCBjaGFyICpwYXRoID0gbHVhTF9jaGVja3N0cmluZyhMLCAxKTsKKyAJaW50IGksbj1sdWFfZ2V0dG9wKEwpOworIAljaGFyICoqYXJndjsKKy0JaW50IGZsYWcsIGZkbm8sIG9wZW5fbWF4OworIAorIAlpZiAoIWhhdmVfZm9ya2VkKQorIAkgICAgcmV0dXJuIGx1YUxfZXJyb3IoTCwgImV4ZWMgbm90IHBlcm1pdHRlZCBpbiB0aGlzIGNvbnRleHQiKTsKKyAKKy0Jb3Blbl9tYXggPSBzeXNjb25mKF9TQ19PUEVOX01BWCk7CistCWlmIChvcGVuX21heCA9PSAtMSkgeworLQkgICAgb3Blbl9tYXggPSAxMDI0OworLQl9CistCWZvciAoZmRubyA9IDM7IGZkbm8gPCBvcGVuX21heDsgZmRubysrKSB7CistCSAgICBmbGFnID0gZmNudGwoZmRubywgRl9HRVRGRCk7CistCSAgICBpZiAoZmxhZyA9PSAtMSB8fCAoZmxhZyAmIEZEX0NMT0VYRUMpKQorLQkJY29udGludWU7CistCSAgICBmY250bChmZG5vLCBGX1NFVEZELCBGRF9DTE9FWEVDKTsKKy0JfQorKwlycG1TZXRDbG9zZU9uRXhlYygpOworIAorIAlhcmd2ID0gbWFsbG9jKChuKzEpKnNpemVvZihjaGFyKikpOworIAlpZiAoYXJndj09TlVMTCkgcmV0dXJuIGx1YUxfZXJyb3IoTCwibm90IGVub3VnaCBtZW1vcnkiKTsKK2RpZmYgLS1naXQgYS9ycG1pby9ycG1pby5jIGIvcnBtaW8vcnBtaW8uYworaW5kZXggYzdjYmMzMmFhLi5lYTExMWQyZWMgMTAwNjQ0CistLS0gYS9ycG1pby9ycG1pby5jCisrKysgYi9ycG1pby9ycG1pby5jCitAQCAtMTc1OSwzICsxNzU5LDE5IEBAIERJR0VTVF9DVFggZmREdXBEaWdlc3QoRkRfdCBmZCwgaW50IGlkKQorIAorICAgICByZXR1cm4gY3R4OworIH0KKysKKyt2b2lkIHJwbVNldENsb3NlT25FeGVjKHZvaWQpCisreworKwlpbnQgZmxhZywgZmRubywgb3Blbl9tYXg7CisrCisrCW9wZW5fbWF4ID0gc3lzY29uZihfU0NfT1BFTl9NQVgpOworKwlpZiAob3Blbl9tYXggPT0gLTEpIHsKKysJCW9wZW5fbWF4ID0gMTAyNDsKKysJfQorKwlmb3IgKGZkbm8gPSAzOyBmZG5vIDwgb3Blbl9tYXg7IGZkbm8rKykgeworKwkJZmxhZyA9IGZjbnRsKGZkbm8sIEZfR0VURkQpOworKwkJaWYgKGZsYWcgPT0gLTEgfHwgKGZsYWcgJiBGRF9DTE9FWEVDKSkKKysJCQljb250aW51ZTsKKysJCWZjbnRsKGZkbm8sIEZfU0VURkQsIEZEX0NMT0VYRUMpOworKwl9CisrfQorZGlmZiAtLWdpdCBhL3JwbWlvL3JwbWlvX2ludGVybmFsLmggYi9ycG1pby9ycG1pb19pbnRlcm5hbC5oCitpbmRleCBmYmVkMTgzYjAuLjM3MGNiZGM3NSAxMDA2NDQKKy0tLSBhL3JwbWlvL3JwbWlvX2ludGVybmFsLmgKKysrKyBiL3JwbWlvL3JwbWlvX2ludGVybmFsLmgKK0BAIC00MSw2ICs0MSwxMiBAQCBESUdFU1RfQ1RYIGZkRHVwRGlnZXN0KEZEX3QgZmQsIGludCBpZCk7CisgaW50IHJwbWlvU2x1cnAoY29uc3QgY2hhciAqIGZuLAorICAgICAgICAgICAgICAgICB1aW50OF90ICoqIGJwLCBzc2l6ZV90ICogYmxlbnApOworIAorKy8qKgorKyAqIFNldCBjbG9zZS1vbi1leGVjIGZsYWcgZm9yIGFsbCBvcGVuZWQgZmlsZSBkZXNjcmlwdG9ycywgZXhjZXB0CisrICogc3RkaW4vc3Rkb3V0L3N0ZGVyci4KKysgKi8KKyt2b2lkIHJwbVNldENsb3NlT25FeGVjKHZvaWQpOworKworICNpZmRlZiBfX2NwbHVzcGx1cworIH0KKyAjZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1DLWxpYnJhcnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wtQy1saWJyYXJ5LnBhdGNoCmluZGV4IGVkZjllYzAuLjBiMWQ2MjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1DLWxpYnJhcnkucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLUMtbGlicmFyeS5wYXRjaApAQCAtMSwyNCArMSwyMSBAQAotRnJvbSAyMTFjMmQxMTIwMGU2NjU3MTMyYzUyZTdhYzY4ZjhjMTE4MjMxMjYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkMDc2ZGUwMzBkZWI5Y2FmZDliMmU4MmJlNWQ1MDZjZWJkZWZhZDBiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDI3IEZlYiAyMDE3IDE0OjQzOjIxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCB3aXRoIG11c2wgQyBsaWJyYXJ5LgorU3ViamVjdDogW1BBVENIIDEvOV0gRml4IGJ1aWxkIHdpdGggbXVzbCBDIGxpYnJhcnkuCiAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbcHJvYmxlbSBhbHJlYWR5IHNvbHZlZCBpbiBtYXN0ZXIgYnJhbmNoXQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIAotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIC0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgfCAzICsrLQotIG1pc2MvTWFrZWZpbGUuYW0gICAgfCAzICstLQotIG1pc2MvcnBteHByb2duYW1lLmMgfCAzICstLQotIDMgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorIGNvbmZpZ3VyZS5hYyAgICAgICB8IDMgKystCisgcnBtaW8vZGlnZXN0X25zcy5jIHwgMSArCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOTJmZmQzZDY4Li45YzU4NDY3YzEgMTAwNjQ0CitpbmRleCBjMDRhMmU4ZDEuLmM5ZDlhYzE2ZCAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjI5LDYgKzIyOSw3IEBAIEFDX1NFQVJDSF9MSUJTKGRsb3BlbiwgW2RsXSkKK0BAIC0yNTUsNiArMjU1LDcgQEAgQUNfU0VBUkNIX0xJQlMoZGxvcGVuLCBbZGxdKQogICMgQ2hlY2sgZm9yIGxpYmVsZiBsaWJyYXJ5LiBQcmVmZXIgZXh0ZXJuYWwsIG90aGVyd2lzZSBub25lLgogIFdJVEhfTElCRUxGX0xJQj0KICBBQ19DSEVDS19IRUFERVIoW2xpYmVsZi5oXSkKQEAgLTI2LDcgKzIzLDcgQEAKICBBQ19DSEVDS19IRUFERVJTKFtnZWxmLmhdLCBbCiAgCUFDX0NIRUNLX0xJQihlbGYsIGdlbGZfZ2V0dmVybmF1eCwgWwogIAkgICAgQUNfREVGSU5FKEhBVkVfTElCRUxGLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlICdlbGYnIGxpYnJhcnkgKC1sZWxmKS5dKQotQEAgLTIzNyw3ICsyMzgsNyBAQCBBQ19DSEVDS19IRUFERVJTKFtnZWxmLmhdLCBbCitAQCAtMjYzLDcgKzI2NCw3IEBAIEFDX0NIRUNLX0hFQURFUlMoW2dlbGYuaF0sIFsKICAJXSkKICBdKQogIEFDX1NVQlNUKFdJVEhfTElCRUxGX0xJQikKQEAgLTM1LDQwICszMiwxNyBAQAogIAogIEFDX0NIRUNLX0hFQURFUlMoW2R3YXJmLmhdLCBbCiAgICBXSVRIX0xJQkRXQVJGPXllcwotZGlmZiAtLWdpdCBhL21pc2MvTWFrZWZpbGUuYW0gYi9taXNjL01ha2VmaWxlLmFtCi1pbmRleCA4YmYwMDkzZDkuLmI5ZGIzZDMxYSAxMDA2NDQKLS0tLSBhL21pc2MvTWFrZWZpbGUuYW0KLSsrKyBiL21pc2MvTWFrZWZpbGUuYW0KLUBAIC01LDEwICs1LDkgQEAgQU1fQ1BQRkxBR1MgKz0gLUkkKHRvcF9zcmNkaXIpL21pc2MKK2RpZmYgLS1naXQgYS9ycG1pby9kaWdlc3RfbnNzLmMgYi9ycG1pby9kaWdlc3RfbnNzLmMKK2luZGV4IDk5MmQ5YWNmNi4uZTExOTIwZTNlIDEwMDY0NAorLS0tIGEvcnBtaW8vZGlnZXN0X25zcy5jCisrKysgYi9ycG1pby9kaWdlc3RfbnNzLmMKK0BAIC0xLDUgKzEsNiBAQAorICNpbmNsdWRlICJzeXN0ZW0uaCIKICAKLSBFWFRSQV9ESVNUID0gXAotIAlmbm1hdGNoLmMJZm5tYXRjaC5oIFwKLS0JcnBteHByb2duYW1lLmMJcnBteHByb2duYW1lLmggXAotIAlzdHBjcHkuYwlzdHBuY3B5LmMKLSAKLSBub2luc3RfTFRMSUJSQVJJRVMgPSBsaWJtaXNjLmxhCi0gCi0tbGlibWlzY19sYV9TT1VSQ0VTID0gZnRzLmMgZnRzLmgKLStsaWJtaXNjX2xhX1NPVVJDRVMgPSBmdHMuYyBmdHMuaCBycG14cHJvZ25hbWUuYyBycG14cHJvZ25hbWUuaAotIGxpYm1pc2NfbGFfTElCQUREID0gQExUTElCT0JKU0AKLWRpZmYgLS1naXQgYS9taXNjL3JwbXhwcm9nbmFtZS5jIGIvbWlzYy9ycG14cHJvZ25hbWUuYwotaW5kZXggZjg5NjAwNjEzLi5lOTQ2MjVlYTggMTAwNjQ0Ci0tLS0gYS9taXNjL3JwbXhwcm9nbmFtZS5jCi0rKysgYi9taXNjL3JwbXhwcm9nbmFtZS5jCi1AQCAtMTMsNyArMTMsNyBAQCBjaGFyICpfcnBteGdldHByb2duYW1lKHZvaWQpCi0gewotICAgY29uc3QgY2hhciAqZW1wdHkgPSAiIjsKLSAKLS0gIGlmIChfcnBteHByb2duYW0gIT0gTlVMTCkgLyogbmV2ZXIgcmV0dXJuIE5VTEwgc3RyaW5nICovCi0rICBpZiAoX3JwbXhwcm9nbmFtZSAhPSBOVUxMKSAvKiBuZXZlciByZXR1cm4gTlVMTCBzdHJpbmcgKi8KLSAgICAgcmV0dXJuIF9ycG14cHJvZ25hbWU7Ci0gICBlbHNlCi0gICAgIHJldHVybiBlbXB0eTsKLUBAIC0zMCw0ICszMCwzIEBAIHZvaWQgX3JwbXhzZXRwcm9nbmFtZShjb25zdCBjaGFyICpwbikKLSAgIH0KLSB9Ci0gCi0tI2VuZGlmIC8qIF9SUE1YUFJPR05BTUVfSCAqLworKyNpbmNsdWRlIDxzaWduYWwuaD4KKyAjaW5jbHVkZSA8cHRocmVhZC5oPgorICNpbmNsdWRlIDxuc3MuaD4KKyAjaW5jbHVkZSA8c2VjaGFzaC5oPgogLS0gCi0yLjExLjAKKzIuMTQuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLVdoZW4tbmljZS12YWx1ZS1jYW5ub3QtYmUtcmVzZXQtaXNzdWUtYS1ub3RpY2UtaW5zdGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLVdoZW4tbmljZS12YWx1ZS1jYW5ub3QtYmUtcmVzZXQtaXNzdWUtYS1ub3RpY2UtaW5zdGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2NDhjYWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1XaGVuLW5pY2UtdmFsdWUtY2Fubm90LWJlLXJlc2V0LWlzc3VlLWEtbm90aWNlLWluc3RlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSBkNDJlY2U2ZmExNWI5OGQ3ZjkyMjFiOTBiODViNzg2MzFkZjJjMGEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDE0IEZlYiAyMDE3IDEzOjUxOjE5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFdoZW4gbmljZSB2YWx1ZSBjYW5ub3QgYmUgcmVzZXQsIGlzc3VlIGEgbm90aWNlIGluc3RlYWQgb2YgYQotIHdhcm5pbmcKLQotT3RoZXJ3aXNlIGJ1aWxkIGxvZ3Mgb24gdGhlIGF1dG9idWlsZGVyIGdldCB2ZXJ5IGNsdXR0ZXIsIGFzIGl0Ci1kb2Vzbid0IGFsbG93IHRoZSBuaWNlIHZhbHVlIHRvIGJlIHJlc2V0IGZvciBzb21lIHJlYXNvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gbGliL3JwbXNjcmlwdC5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliL3JwbXNjcmlwdC5jIGIvbGliL3JwbXNjcmlwdC5jCi1pbmRleCA1ZTFlOTk5MDYuLjM5NzVhZWFkOCAxMDA2NDQKLS0tLSBhL2xpYi9ycG1zY3JpcHQuYwotKysrIGIvbGliL3JwbXNjcmlwdC5jCi1AQCAtMzQ3LDcgKzM0Nyw3IEBAIHN0YXRpYyBycG1SQyBydW5FeHRTY3JpcHQocnBtUGx1Z2lucyBwbHVnaW5zLCBBUkdWX2NvbnN0X3QgcHJlZml4ZXMsCi0gICAgICAgICBpbnQgcmV0OwotICAgICAgICAgcmV0ID0gc2V0cHJpb3JpdHkoUFJJT19QUk9DRVNTLCAwLCAwKTsKLSAgICAgICAgIGlmIChyZXQgPT0gLTEpIHsKLS0gICAgICAgICAgICBycG1sb2coUlBNTE9HX1dBUk5JTkcsIF8oIlVuYWJsZSB0byByZXNldCBuaWNlIHZhbHVlOiAlcyIpLAotKyAgICAgICAgICAgIHJwbWxvZyhSUE1MT0dfTk9USUNFLCBfKCJVbmFibGUgdG8gcmVzZXQgbmljZSB2YWx1ZTogJXNcbiIpLAotICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwotICAgICAgICAgfQotIAotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1jb25maWd1cmUuYWMtYWRkLW9wdGlvbi1mb3ItZGJ1cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLWFkZC1vcHRpb24tZm9yLWRidXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM3MWQ5YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLWFkZC1vcHRpb24tZm9yLWRidXMucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSBkZmI0MjJjNzQ0ZmRjMTgzOGFmYzQwYjhlMWYxNjFiYjQ2MDkzZDkyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogU3VuLCA4IEFwciAyMDE4IDEyOjA2OjQyICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogYWRkIG9wdGlvbiBmb3IgZGJ1cworCitBZGQgb3B0aW9uIGZvciBkYnVzIHNvIHRoYXQgdXNlcnMgY291bGQgY2hvb3NlIHRvIGJ1aWxkIHdpdGggZGJ1cworb3Igd2l0aCBubyBkYnVzLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMTEgKysrKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA0ZGIxNWM3OTA5Li40OTNmMzkzZDMxIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC05NzYsMTIgKzk3NiwxNSBAQCBBU19JRihbdGVzdCAiJGVuYWJsZV9wbHVnaW5zIiA9IHllc10sWworIF0pCisgQU1fQ09ORElUSU9OQUwoRU5BQkxFX1BMVUdJTlMsW3Rlc3QgIiRlbmFibGVfcGx1Z2lucyIgPSB5ZXNdKQorIAorLXdpdGhfZGJ1cz1ubworLUFTX0lGKFt0ZXN0ICIkZW5hYmxlX3BsdWdpbnMiICE9IG5vXSxbCisrQUNfQVJHX1dJVEgoW2RidXNdLCBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1kYnVzXSwgW2J1aWxkIHdpdGggZGJ1cyBzdXBwb3J0XSldLAorKyAgICAgICAgICAgIFtdLAorKyAgICAgICAgICAgIFt3aXRoX2RidXM9eWVzXSkKKysKKytBU19JRihbdGVzdCAiJHdpdGhfZGJ1cyIgIT0gbm9dLFsKKyAgIFBLR19DSEVDS19NT0RVTEVTKFtEQlVTXSwKKyAgICAgW2RidXMtMSA+PSAxLjNdLAorLSAgICBbQUNfREVGSU5FKERCVVMsIDEsIFtCdWlsZCB3aXRoIGRidXMgc3VwcG9ydD9dKSB3aXRoX2RidXM9eWVzXSwKKy0gICAgW3dpdGhfZGJ1cz1ub10pCisrICAgIFtBQ19ERUZJTkUoREJVUywgMSwgW0J1aWxkIHdpdGggZGJ1cyBzdXBwb3J0P10pXSwKKysgICAgW0FDX01TR19FUlJPUihbZGJ1cyBub3QgcHJlc2VudCAoLS13aXRob3V0LWRidXMgdG8gZGlzYWJsZSldKV0pCisgICBBQ19TVUJTVChEQlVTX0NGTEFHUykKKyAgIEFDX1NVQlNUKERCVVNfTElCUykKKyBdKQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMi1PcHRpbWl6ZS1ycG1TZXRDbG9zZU9uRXhlYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDItT3B0aW1pemUtcnBtU2V0Q2xvc2VPbkV4ZWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI3ZjhlNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDItT3B0aW1pemUtcnBtU2V0Q2xvc2VPbkV4ZWMucGF0Y2gKQEAgLTAsMCArMSwxMDAgQEAKK0Zyb20gNWU2ZjA1Y2Q4ZGFkNmMxZWU2YmQxZTZlNDNmMTc2OTc2YzljMzQxNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtpciBLb2x5c2hraW4gPGtvbHlzaGtpbkBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI5IE1heSAyMDE4IDE3OjUyOjU2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBPcHRpbWl6ZSBycG1TZXRDbG9zZU9uRXhlYworCitJbiBjYXNlIG1heGltdW0gbnVtYmVyIG9mIG9wZW4gZmlsZXMgbGltaXQgaXMgc2V0IHRvbyBoaWdoLCBib3RoCitsdWFleHQvUGV4ZWMoKSBhbmQgbGliL2RvU2NyaXB0RXhlYygpIHNwZW5kIHdheSB0b28gbXVjaCB0aW1lCit0cnlpbmcgdG8gc2V0IEZEX0NMT0VYRUMgZmxhZyBmb3IgYWxsIHRob3NlIGZpbGUgZGVzY3JpcHRvcnMsCityZXN1bHRpbmcgaW4gc2V2ZXJlIGluY3JlYXNlIG9mIHRpbWUgaXQgdGFrZXMgdG8gZXhlY3V0ZSBzYXkKK3JwbSBvciBkbmYuCisKK1RoaXMgYmVjb21lcyBpbmNyZWFzaW5nbHkgbm90aWNlYWJsZSB3aGVuIHJ1bm5pbmcgd2l0aCBlLmcuIHVuZGVyCitEb2NrZXIsIHRoZSByZWFzb24gYmVpbmc6CisKKz4gJCBkb2NrZXIgcnVuIGZlZG9yYSB1bGltaXQgLW4KKz4gMTA0ODU3NgorCitPbmUgb2J2aW91cyBmaXggaXMgdG8gdXNlIHByb2NmcyB0byBnZXQgdGhlIGFjdHVhbCBsaXN0IG9mIG9wZW5lZCBmZHMKK2FuZCBpdGVyYXRlIG92ZXIgaXQuIE15IHF1aWNrLW4tZGlydHkgYmVuY2htYXJrIHNob3dzIHRoZSAvcHJvYyBhcHByb2FjaAoraXMgYWJvdXQgMTB4IGZhc3RlciB0aGFuIGl0ZXJhdGluZyB0aHJvdWdoIGEgbGlzdCBvZiBqdXN0IDEwMjQgZmRzLAorc28gaXQncyBhbiBpbXByb3ZlbWVudCBldmVuIGZvciBkZWZhdWx0IHVsaW1pdCB2YWx1ZXMuCisKK05vdGUgdGhhdCB0aGUgb2xkIG1ldGhvZCBpcyBzdGlsbCB1c2VkIGluIGNhc2UgL3Byb2MgaXMgbm90IGF2YWlsYWJsZS4KKworV2hpbGUgYXQgaXQsCisKKyAxLiBmaXggdGhlIGZ1bmN0aW9uIGJ5IG1ha2luZyBzdXJlIHdlIG1vZGlmeSAocmF0aGVyIHRoYW4gc2V0KQorICAgIHRoZSBleGlzdGluZyBmbGFncy4gQXMgdGhlIG9ubHkga25vd24gZmxhZyBpcyBGRF9DTE9FWEVDLAorICAgIHRoaXMgY2hhbmdlIGlzIGN1cnJlbnRseSBwdXJlbHkgYWVzdGhldGljYWwsIGJ1dCBpbiBjYXNlCisgICAgb3RoZXIgZmxhZ3Mgd2lsbCBhcHBlYXIgaXQgd2lsbCBiZWNvbWUgYSByZWFsIGJ1ZyBmaXguCisKKyAyLiBnZXQgcmlkIG9mIG1hZ2ljIG51bWJlciAzOyB1c2UgU1RERVJSX0ZJTEVOTworCitTaWduZWQtb2ZmLWJ5OiBLaXIgS29seXNoa2luIDxrb2x5c2hraW5AZ21haWwuY29tPgorCitGaXhlcyAjNDQ0CisKK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9ycG0vcHVsbC80NDRdCitTaWduZWQtb2ZmLWJ5OiBQZXRlciBLamVsbGVyc3RlZHQgPHBldGVyLmtqZWxsZXJzdGVkdEBheGlzLmNvbT4KKy0tLQorIHJwbWlvL3JwbWlvLmMgfCA0MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ycG1pby9ycG1pby5jIGIvcnBtaW8vcnBtaW8uYworaW5kZXggZWExMTFkMmVjLi41NTM1MWMyMjEgMTAwNjQ0CistLS0gYS9ycG1pby9ycG1pby5jCisrKysgYi9ycG1pby9ycG1pby5jCitAQCAtMTc2MCwxOCArMTc2MCw0MyBAQCBESUdFU1RfQ1RYIGZkRHVwRGlnZXN0KEZEX3QgZmQsIGludCBpZCkKKyAgICAgcmV0dXJuIGN0eDsKKyB9CisgCisrc3RhdGljIHZvaWQgc2V0X2Nsb2V4ZWMoaW50IGZkKQorK3sKKysJaW50IGZsYWdzID0gZmNudGwoZmQsIEZfR0VURkQpOworKworKwlpZiAoZmxhZ3MgPT0gLTEgfHwgKGZsYWdzICYgRkRfQ0xPRVhFQykpCisrCQlyZXR1cm47CisrCisrCWZjbnRsKGZkLCBGX1NFVEZELCBmbGFncyB8IEZEX0NMT0VYRUMpOworK30KKysKKyB2b2lkIHJwbVNldENsb3NlT25FeGVjKHZvaWQpCisgeworLQlpbnQgZmxhZywgZmRubywgb3Blbl9tYXg7CisrCWNvbnN0IGludCBtaW5fZmQgPSBTVERFUlJfRklMRU5POyAvKiBkb24ndCB0b3VjaCBzdGRpbi9vdXQvZXJyICovCisrCWludCBmZDsKKysKKysJRElSICpkaXIgPSBvcGVuZGlyKCIvcHJvYy9zZWxmL2ZkIik7CisrCWlmIChkaXIgPT0gTlVMTCkgeyAvKiAvcHJvYyBub3QgYXZhaWxhYmxlICovCisrCQkvKiBpdGVyYXRlIG92ZXIgYWxsIHBvc3NpYmxlIGZkcywgbWlnaHQgYmUgc2xvdyAqLworKwkJaW50IG9wZW5fbWF4ID0gc3lzY29uZihfU0NfT1BFTl9NQVgpOworKwkJaWYgKG9wZW5fbWF4ID09IC0xKQorKwkJCW9wZW5fbWF4ID0gMTAyNDsKKyAKKy0Jb3Blbl9tYXggPSBzeXNjb25mKF9TQ19PUEVOX01BWCk7CistCWlmIChvcGVuX21heCA9PSAtMSkgeworLQkJb3Blbl9tYXggPSAxMDI0OworKwkJZm9yIChmZCA9IG1pbl9mZCArIDE7IGZkIDwgb3Blbl9tYXg7IGZkKyspCisrCQkJc2V0X2Nsb2V4ZWMoZmQpOworKworKwkJcmV0dXJuOworIAl9CistCWZvciAoZmRubyA9IDM7IGZkbm8gPCBvcGVuX21heDsgZmRubysrKSB7CistCQlmbGFnID0gZmNudGwoZmRubywgRl9HRVRGRCk7CistCQlpZiAoZmxhZyA9PSAtMSB8fCAoZmxhZyAmIEZEX0NMT0VYRUMpKQorLQkJCWNvbnRpbnVlOworLQkJZmNudGwoZmRubywgRl9TRVRGRCwgRkRfQ0xPRVhFQyk7CisrCisrCS8qIGl0ZXJhdGUgb3ZlciBmZHMgb2J0YWluZWQgZnJvbSAvcHJvYyAqLworKwlzdHJ1Y3QgZGlyZW50ICplbnRyeTsKKysJd2hpbGUgKChlbnRyeSA9IHJlYWRkaXIoZGlyKSkgIT0gTlVMTCkgeworKwkJZmQgPSBhdG9pKGVudHJ5LT5kX25hbWUpOworKwkJaWYgKGZkID4gbWluX2ZkKQorKwkJCXNldF9jbG9leGVjKGZkKTsKKyAJfQorKworKwljbG9zZWRpcihkaXIpOworKworKwlyZXR1cm47CisgfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMy1ycG1TZXRDbG9zZU9uRXhlYy11c2UtZ2V0cmxpbWl0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMy1ycG1TZXRDbG9zZU9uRXhlYy11c2UtZ2V0cmxpbWl0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4OWI0MWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAzLXJwbVNldENsb3NlT25FeGVjLXVzZS1nZXRybGltaXQucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSAzMDdlMjhiNGNiMDhiMDViYzA0NDQ4MjA1OGVlZWJjOWY1OWJiOWE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2lyIEtvbHlzaGtpbiA8a29seXNoa2luQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjkgTWF5IDIwMTggMTg6MDk6MjcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIHJwbVNldENsb3NlT25FeGVjOiB1c2UgZ2V0cmxpbWl0KCkKKworSW4gY2FzZSAvcHJvYyBpcyBub3QgYXZhaWxhYmxlIHRvIGdldCB0aGUgYWN0dWFsIGxpc3Qgb2Ygb3BlbmVkIGZkcywKK3dlIGZhbGwgYmFjayB0byBpdGVyYXRpbmcgdGhyb3VnaCB0aGUgbGlzdCBvZiBhbGwgcG9zc2libGUgZmRzLgorCitJdCBpcyBwb3NzaWJsZSB0aGF0IGR1cmluZyB0aGUgY291cnNlIG9mIHRoZSBwcm9ncmFtIGV4ZWN1dGlvbiB0aGUgbGltaXQKK29uIG51bWJlciBvZiBvcGVuIGZpbGUgZGVzY3JpcHRvcnMgbWlnaHQgYmUgbG93ZXJlZCwgc28gdXNpbmcgdGhlCitjdXJyZW50IGxpbWl0LCBhcyByZXR1cm5lZCBieSBzeXNjb25mKF9TQ19PUEVOX01BWCksIG1pZ2h0IG9taXQgc29tZQorZmRzLiBUaGVyZWZvcmUsIGl0IGlzIGJldHRlciB0byB1c2UgcmxpbV9tYXggZnJvbSB0aGUgc3RydWN0dXJlCitmaWxsZWQgaW4gYnkgZ2VydGxpbWl0KFJMSU1JVF9OT0ZJTEUpIHRvIG1ha2Ugc3VyZSB3ZSdyZSBjaGVja2luZworYWxsIGZkcy4KKworVGhpcyBzbG93cyBkb3duIHRoZSBmdW5jdGlvbiwgYnV0IG9ubHkgaW4gdGhlIGNhc2UgL3Byb2MgaXMgbm90CithdmFpbGFibGUsIHdoaWNoIHNob3VsZCBiZSByYXJlIGluIHByYWN0aWNlLgorCitTaWduZWQtb2ZmLWJ5OiBLaXIgS29seXNoa2luIDxrb2x5c2hraW5AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbS9wdWxsLzQ0NF0KK1NpZ25lZC1vZmYtYnk6IFBldGVyIEtqZWxsZXJzdGVkdCA8cGV0ZXIua2plbGxlcnN0ZWR0QGF4aXMuY29tPgorLS0tCisgcnBtaW8vcnBtaW8uYyB8IDEwICsrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9ycG1pby9ycG1pby5jIGIvcnBtaW8vcnBtaW8uYworaW5kZXggNTUzNTFjMjIxLi5lMDUxYzk4NjMgMTAwNjQ0CistLS0gYS9ycG1pby9ycG1pby5jCisrKysgYi9ycG1pby9ycG1pby5jCitAQCAtMTAsNiArMTAsNyBAQAorICNpbmNsdWRlIDxzeXMvcGVyc29uYWxpdHkuaD4KKyAjZW5kaWYKKyAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KKysjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CisgCisgI2luY2x1ZGUgPHJwbS9ycG1sb2cuaD4KKyAjaW5jbHVkZSA8cnBtL3JwbW1hY3JvLmg+CitAQCAtMTc3OCw3ICsxNzc5LDE0IEBAIHZvaWQgcnBtU2V0Q2xvc2VPbkV4ZWModm9pZCkKKyAJRElSICpkaXIgPSBvcGVuZGlyKCIvcHJvYy9zZWxmL2ZkIik7CisgCWlmIChkaXIgPT0gTlVMTCkgeyAvKiAvcHJvYyBub3QgYXZhaWxhYmxlICovCisgCQkvKiBpdGVyYXRlIG92ZXIgYWxsIHBvc3NpYmxlIGZkcywgbWlnaHQgYmUgc2xvdyAqLworLQkJaW50IG9wZW5fbWF4ID0gc3lzY29uZihfU0NfT1BFTl9NQVgpOworKwkJc3RydWN0IHJsaW1pdCBybDsKKysJCWludCBvcGVuX21heDsKKysKKysJCWlmIChnZXRybGltaXQoUkxJTUlUX05PRklMRSwgJnJsKSA9PSAwICYmIHJsLnJsaW1fbWF4ICE9IFJMSU1fSU5GSU5JVFkpCisrCQkJb3Blbl9tYXggPSBybC5ybGltX21heDsKKysJCWVsc2UKKysJCQlvcGVuX21heCA9IHN5c2NvbmYoX1NDX09QRU5fTUFYKTsKKysKKyAJCWlmIChvcGVuX21heCA9PSAtMSkKKyAJCQlvcGVuX21heCA9IDEwMjQ7CisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDA0LWJ1aWxkLXBhY2suYy1yZW1vdmUtc3RhdGljLWxvY2FsLXZhcmlhYmxlcy1mcm9tLWJ1aWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDA0LWJ1aWxkLXBhY2suYy1yZW1vdmUtc3RhdGljLWxvY2FsLXZhcmlhYmxlcy1mcm9tLWJ1aWwucGF0Y2gKaW5kZXggNjRhNTY1MS4uODk4OWRjZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwNC1idWlsZC1wYWNrLmMtcmVtb3ZlLXN0YXRpYy1sb2NhbC12YXJpYWJsZXMtZnJvbS1idWlsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDQtYnVpbGQtcGFjay5jLXJlbW92ZS1zdGF0aWMtbG9jYWwtdmFyaWFibGVzLWZyb20tYnVpbC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZWMzMDU3OTVhMzAyZDIyNjM0M2U2OTAzMWZmMjAyNGRmY2RlNjljMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOGNlOWZiYWIyOTkwNjA5YmRhY2U0NTdlMTQ2MTYwMzM0ZTkzMWM4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogVGh1LCA4IEp1biAyMDE3IDE3OjA4OjA5ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMy8zXSBidWlsZC9wYWNrLmM6IHJlbW92ZSBzdGF0aWMgbG9jYWwgdmFyaWFibGVzIGZyb20KK1N1YmplY3Q6IFtQQVRDSCAxNC8xNV0gYnVpbGQvcGFjay5jOiByZW1vdmUgc3RhdGljIGxvY2FsIHZhcmlhYmxlcyBmcm9tCiAgYnVpbGRIb3N0KCkgYW5kIGdldEJ1aWxkVGltZSgpCiAKIFRoZWlyIHVzZSBpcyBjYXVzaW5nIGRpZmZpY3VsdCB0byBkaWFnbm96ZSBkYXRhIHJhY2VzIHdoZW4gYnVpbGRpbmcgbXVsdGlwbGUKQEAgLTExLDggKzExLDggQEAKIFVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtL3B1bGwvMjI2XQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAKLQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKIC0tLQogIGJ1aWxkL2J1aWxkLmMgICAgICAgICAgICAgfCA1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KICBidWlsZC9wYWNrLmMgICAgICAgICAgICAgIHwgODQgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIwLDcgKzIwLDcgQEAKICAzIGZpbGVzIGNoYW5nZWQsIDc0IGluc2VydGlvbnMoKyksIDcyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYnVpbGQvYnVpbGQuYyBiL2J1aWxkL2J1aWxkLmMKLWluZGV4IDVmOTljOGRiNy4uMDlhMTMxMWM1IDEwMDY0NAoraW5kZXggODExNTJlNTNlLi42MDAxZjllNTIgMTAwNjQ0CiAtLS0gYS9idWlsZC9idWlsZC5jCiArKysgYi9idWlsZC9idWlsZC5jCiBAQCAtNiw2ICs2LDggQEAKQEAgLTgzLDcgKzgzLDcgQEAKICAvKioKICAgKi8KICBzdGF0aWMgcnBtUkMgZG9SbVNvdXJjZShycG1TcGVjIHNwZWMpCi1AQCAtMjAzLDYgKzI0OSw5IEBAIHN0YXRpYyBycG1SQyBidWlsZFNwZWMoQlRBX3QgYnVpbGRBcmdzLCBycG1TcGVjIHNwZWMsIGludCB3aGF0KQorQEAgLTIwMSw2ICsyNDcsOSBAQCBzdGF0aWMgcnBtUkMgYnVpbGRTcGVjKEJUQV90IGJ1aWxkQXJncywgcnBtU3BlYyBzcGVjLCBpbnQgd2hhdCkKICAgICAgcnBtUkMgcmMgPSBSUE1SQ19PSzsKICAgICAgaW50IHRlc3QgPSAod2hhdCAmIFJQTUJVSUxEX05PQlVJTEQpOwogICAgICBjaGFyICpjb29raWUgPSBidWlsZEFyZ3MtPmNvb2tpZSA/IHhzdHJkdXAoYnVpbGRBcmdzLT5jb29raWUpIDogTlVMTDsKQEAgLTkzLDcgKzkzLDcgQEAKICAKICAgICAgaWYgKHJwbUV4cGFuZE51bWVyaWMoIiV7P3NvdXJjZV9kYXRlX2Vwb2NoX2Zyb21fY2hhbmdlbG9nfSIpICYmCiAgCWdldGVudigiU09VUkNFX0RBVEVfRVBPQ0giKSA9PSBOVUxMKSB7Ci1AQCAtMjcxLDExICszMjAsMTEgQEAgc3RhdGljIHJwbVJDIGJ1aWxkU3BlYyhCVEFfdCBidWlsZEFyZ3MsIHJwbVNwZWMgc3BlYywgaW50IHdoYXQpCitAQCAtMjY5LDExICszMTgsMTEgQEAgc3RhdGljIHJwbVJDIGJ1aWxkU3BlYyhCVEFfdCBidWlsZEFyZ3MsIHJwbVNwZWMgc3BlYywgaW50IHdoYXQpCiAgCQlnb3RvIGV4aXQ7CiAgCiAgCWlmICgoKHdoYXQgJiBSUE1CVUlMRF9QQUNLQUdFU09VUkNFKSAmJiAhdGVzdCkgJiYKQEAgLTEwNyw3ICsxMDcsNyBAQAogIAkJZ290byBleGl0OwogIAkKICAJaWYgKCh3aGF0ICYgUlBNQlVJTERfQ0xFQU4pICYmCi1AQCAtMjk1LDYgKzM0NCw3IEBAIHN0YXRpYyBycG1SQyBidWlsZFNwZWMoQlRBX3QgYnVpbGRBcmdzLCBycG1TcGVjIHNwZWMsIGludCB3aGF0KQorQEAgLTI5Myw2ICszNDIsNyBAQCBzdGF0aWMgcnBtUkMgYnVpbGRTcGVjKEJUQV90IGJ1aWxkQXJncywgcnBtU3BlYyBzcGVjLCBpbnQgd2hhdCkKICAJKHZvaWQpIHVubGluayhzcGVjLT5zcGVjRmlsZSk7CiAgCiAgZXhpdDoKQEAgLTExNiw3ICsxMTYsNyBAQAogICAgICBzcGVjLT5yb290RGlyID0gTlVMTDsKICAgICAgaWYgKHJjICE9IFJQTVJDX09LICYmIHJwbWxvZ0dldE5yZWNzKCkgPiAwKSB7CiBkaWZmIC0tZ2l0IGEvYnVpbGQvcGFjay5jIGIvYnVpbGQvcGFjay5jCi1pbmRleCBlZDViOWFiNGUuLjYyNDI3MDY1YSAxMDA2NDQKK2luZGV4IGRmMTU4NzZmZi4uMTdhNGIwOTA1IDEwMDY0NAogLS0tIGEvYnVpbGQvcGFjay5jCiArKysgYi9idWlsZC9wYWNrLmMKIEBAIC02LDggKzYsNiBAQApAQCAtMTI4LDcgKzEyOCw3IEBACiAgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CiAgCiAgI2luY2x1ZGUgPHJwbS9ycG1saWIuaD4JCQkvKiBSUE1TSUdUQUcqLCBycG1SZWFkUGFja2FnZUZpbGUgKi8KLUBAIC0xNTEsNTcgKzE0OSw2IEBAIGV4aXQ6CitAQCAtMTUyLDU3ICsxNTAsNiBAQCBleGl0OgogICAgICByZXR1cm4gcmM7CiAgfQogIApAQCAtMTg2LDkgKzE4Niw5IEBACiAgc3RhdGljIHJwbVJDIHByb2Nlc3NTY3JpcHRGaWxlcyhycG1TcGVjIHNwZWMsIFBhY2thZ2UgcGtnKQogIHsKICAgICAgc3RydWN0IFRyaWdnZXJGaWxlRW50cnkgKnA7Ci1AQCAtMzA4LDcgKzI1NSw4IEBAIHN0YXRpYyBpbnQgaGF2ZVJpY2hEZXAoUGFja2FnZSBwa2cpCi0gfQotIAorQEAgLTQ3Niw3ICs0MjMsOCBAQCBleGl0OgorICAqIG9yZGVyIHRvIGhvdyB0aGUgUlBNIGZvcm1hdCBpcyBsYWlkIG9uIGRpc2suCisgICovCiAgc3RhdGljIHJwbVJDIHdyaXRlUlBNKFBhY2thZ2UgcGtnLCB1bnNpZ25lZCBjaGFyICoqIHBrZ2lkcCwKIC0JCSAgICAgIGNvbnN0IGNoYXIgKmZpbGVOYW1lLCBjaGFyICoqY29va2llKQogKwkJICAgICAgY29uc3QgY2hhciAqZmlsZU5hbWUsIGNoYXIgKipjb29raWUsCkBAIC0xOTYsNyArMTk2LDcgQEAKICB7CiAgICAgIEZEX3QgZmQgPSBOVUxMOwogICAgICBjaGFyICogcnBtaW9fZmxhZ3MgPSBOVUxMOwotQEAgLTM5Nyw3ICszNDUsNyBAQCBzdGF0aWMgcnBtUkMgd3JpdGVSUE0oUGFja2FnZSBwa2csIHVuc2lnbmVkIGNoYXIgKiogcGtnaWRwLAorQEAgLTUwMCw3ICs0NDgsNyBAQCBzdGF0aWMgcnBtUkMgd3JpdGVSUE0oUGFja2FnZSBwa2csIHVuc2lnbmVkIGNoYXIgKiogcGtnaWRwLAogIAogICAgICAvKiBDcmVhdGUgYW5kIGFkZCB0aGUgY29va2llICovCiAgICAgIGlmIChjb29raWUpIHsKQEAgLTIwNCw4ICsyMDQsOCBAQAogKwlyYXNwcmludGYoY29va2llLCAiJXMgJWQiLCBidWlsZEhvc3QsIGJ1aWxkVGltZSk7CiAgCWhlYWRlclB1dFN0cmluZyhwa2ctPmhlYWRlciwgUlBNVEFHX0NPT0tJRSwgKmNvb2tpZSk7CiAgICAgIH0KLSAgICAgCi1AQCAtNTQ2LDcgKzQ5NCw3IEBAIHN0YXRpYyBycG1SQyBjaGVja1BhY2thZ2VzKGNoYXIgKnBrZ2NoZWNrKQorIAorQEAgLTY0MSw3ICs1ODksNyBAQCBzdGF0aWMgcnBtUkMgY2hlY2tQYWNrYWdlcyhjaGFyICpwa2djaGVjaykKICAgICAgcmV0dXJuIFJQTVJDX09LOwogIH0KICAKQEAgLTIxNCw3ICsyMTQsNyBAQAogIHsKICAJY29uc3QgY2hhciAqZXJyb3JTdHJpbmc7CiAgCXJwbVJDIHJjID0gUlBNUkNfT0s7Ci1AQCAtNTY1LDggKzUxMyw4IEBAIHN0YXRpYyBycG1SQyBwYWNrYWdlQmluYXJ5KHJwbVNwZWMgc3BlYywgUGFja2FnZSBwa2csIGNvbnN0IGNoYXIgKmNvb2tpZSwgaW50IGNoCitAQCAtNjYwLDggKzYwOCw4IEBAIHN0YXRpYyBycG1SQyBwYWNrYWdlQmluYXJ5KHJwbVNwZWMgc3BlYywgUGFja2FnZSBwa2csIGNvbnN0IGNoYXIgKmNvb2tpZSwgaW50IGNoCiAgCWhlYWRlckNvcHlUYWdzKHNwZWMtPnBhY2thZ2VzLT5oZWFkZXIsIHBrZy0+aGVhZGVyLCBjb3B5VGFncyk7CiAgCQogIAloZWFkZXJQdXRTdHJpbmcocGtnLT5oZWFkZXIsIFJQTVRBR19SUE1WRVJTSU9OLCBWRVJTSU9OKTsKQEAgLTIyNSw3ICsyMjUsNyBAQAogIAogIAlpZiAoc3BlYy0+c291cmNlUGtnSWQgIT0gTlVMTCkgewogIAkgICAgaGVhZGVyUHV0QmluKHBrZy0+aGVhZGVyLCBSUE1UQUdfU09VUkNFUEtHSUQsIHNwZWMtPnNvdXJjZVBrZ0lkLDE2KTsKLUBAIC02MDQsNyArNTUyLDcgQEAgc3RhdGljIHJwbVJDIHBhY2thZ2VCaW5hcnkocnBtU3BlYyBzcGVjLCBQYWNrYWdlIHBrZywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2gKK0BAIC02OTksNyArNjQ3LDcgQEAgc3RhdGljIHJwbVJDIHBhY2thZ2VCaW5hcnkocnBtU3BlYyBzcGVjLCBQYWNrYWdlIHBrZywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2gKICAJICAgIGZyZWUoYmluUnBtKTsKICAJfQogIApAQCAtMjM0LDcgKzIzNCw3IEBACiAgCWlmIChyYyA9PSBSUE1SQ19PSykgewogIAkgICAgLyogRG8gY2hlY2sgZWFjaCB3cml0dGVuIHBhY2thZ2UgaWYgZW5hYmxlZCAqLwogIAkgICAgY2hhciAqcGtnY2hlY2sgPSBycG1FeHBhbmQoIiV7P19idWlsZF9wa2djaGVja30gIiwgKmZpbGVuYW1lLCBOVUxMKTsKLUBAIC02MjQsNyArNTcyLDcgQEAgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YQorQEAgLTcxOSw3ICs2NjcsNyBAQCBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhCiAgICAgIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEgKm5leHQ7CiAgfTsKICAKQEAgLTI0Myw3ICsyNDMsNyBAQAogIHsKICAgICAgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSAqdGFza3MgPSBOVUxMOwogICAgICBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhICp0YXNrID0gTlVMTDsKLUBAIC02MzYsNyArNTg0LDcgQEAgc3RhdGljIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEqIHJ1bkJpbmFyeVBhY2thZ2VUYXNrcyhycG1TcGVjIHNwZWMsIGNvbnN0IGMKK0BAIC03MzEsNyArNjc5LDcgQEAgc3RhdGljIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEqIHJ1bkJpbmFyeVBhY2thZ2VUYXNrcyhycG1TcGVjIHNwZWMsIGNvbnN0IGMKICAgICAgICAgIGlmIChwa2cgPT0gc3BlYy0+cGFja2FnZXMpIHsKICAgICAgICAgICAgICAvLyB0aGUgZmlyc3QgcGFja2FnZSBuZWVkcyB0byBiZSBwcm9jZXNzZWQgYWhlYWQgb2Ygb3RoZXJzLCBhcyB0aGV5IGNvcHkKICAgICAgICAgICAgICAvLyBjaGFuZ2Vsb2cgZGF0YSBmcm9tIGl0LCBhbmQgc28gb3RoZXJ3aXNlIGRhdGEgcmFjZXMgd291bGQgaGFwcGVuCkBAIC0yNTIsNyArMjUyLDcgQEAKICAgICAgICAgICAgICBycG1sb2coUlBNTE9HX05PVElDRSwgXygiRmluaXNoZWQgYmluYXJ5IHBhY2thZ2Ugam9iLCByZXN1bHQgJWQsIGZpbGVuYW1lICVzXG4iKSwgdGFzay0+cmVzdWx0LCB0YXNrLT5maWxlbmFtZSk7CiAgICAgICAgICAgICAgdGFza3MgPSB0YXNrOwogICAgICAgICAgfQotQEAgLTY1Myw3ICs2MDEsNyBAQCBzdGF0aWMgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSogcnVuQmluYXJ5UGFja2FnZVRhc2tzKHJwbVNwZWMgc3BlYywgY29uc3QgYworQEAgLTc0OCw3ICs2OTYsNyBAQCBzdGF0aWMgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSogcnVuQmluYXJ5UGFja2FnZVRhc2tzKHJwbVNwZWMgc3BlYywgY29uc3QgYwogICAgICAgICAgaWYgKHRhc2sgIT0gdGFza3MpCiAgICAgICAgICAjcHJhZ21hIG9tcCB0YXNrCiAgICAgICAgICB7CkBAIC0yNjEsNyArMjYxLDcgQEAKICAgICAgICAgICAgICBycG1sb2coUlBNTE9HX05PVElDRSwgXygiRmluaXNoZWQgYmluYXJ5IHBhY2thZ2Ugam9iLCByZXN1bHQgJWQsIGZpbGVuYW1lICVzXG4iKSwgdGFzay0+cmVzdWx0LCB0YXNrLT5maWxlbmFtZSk7CiAgICAgICAgICB9CiAgICAgIH0KLUBAIC02NzEsMTEgKzYxOSwxMSBAQCBzdGF0aWMgdm9pZCBmcmVlQmluYXJ5UGFja2FnZVRhc2tzKHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEqIHRhc2tzKQorQEAgLTc2NiwxMSArNzE0LDExIEBAIHN0YXRpYyB2b2lkIGZyZWVCaW5hcnlQYWNrYWdlVGFza3Moc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSogdGFza3MpCiAgICAgIH0KICB9CiAgCkBAIC0yNzUsNyArMjc1LDcgQEAKICAKICAgICAgZm9yIChzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhICp0YXNrID0gdGFza3M7IHRhc2sgIT0gTlVMTDsgdGFzayA9IHRhc2stPm5leHQpIHsKICAgICAgICAgIGlmICh0YXNrLT5yZXN1bHQgPT0gUlBNUkNfT0spIHsKLUBAIC03MDIsMjIgKzY1MCwyMiBAQCBycG1SQyBwYWNrYWdlQmluYXJpZXMocnBtU3BlYyBzcGVjLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaGVhdGluZykKK0BAIC03OTcsNyArNzQ1LDcgQEAgcnBtUkMgcGFja2FnZUJpbmFyaWVzKHJwbVNwZWMgc3BlYywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2hlYXRpbmcpCiAgICAgIHJldHVybiBSUE1SQ19PSzsKICB9CiAgCkBAIC0yODQsNiArMjg0LDcgQEAKICB7CiAgICAgIFBhY2thZ2Ugc291cmNlUGtnID0gc3BlYy0+c291cmNlUGFja2FnZTsKICAgICAgcnBtUkMgcmM7CitAQCAtODA1LDggKzc1Myw4IEBAIHJwbVJDIHBhY2thZ2VTb3VyY2VzKHJwbVNwZWMgc3BlYywgY2hhciAqKmNvb2tpZSkKICAKICAgICAgLyogQWRkIHNvbWUgY3J1ZnQgKi8KICAgICAgaGVhZGVyUHV0U3RyaW5nKHNvdXJjZVBrZy0+aGVhZGVyLCBSUE1UQUdfUlBNVkVSU0lPTiwgVkVSU0lPTik7CkBAIC0yOTEsOSArMjkyLDEwIEBACiAtICAgIGhlYWRlclB1dFVpbnQzMihzb3VyY2VQa2ctPmhlYWRlciwgUlBNVEFHX0JVSUxEVElNRSwgZ2V0QnVpbGRUaW1lKCksIDEpOwogKyAgICBoZWFkZXJQdXRTdHJpbmcoc291cmNlUGtnLT5oZWFkZXIsIFJQTVRBR19CVUlMREhPU1QsIGJ1aWxkSG9zdCk7CiArICAgIGhlYWRlclB1dFVpbnQzMihzb3VyY2VQa2ctPmhlYWRlciwgUlBNVEFHX0JVSUxEVElNRSwgJmJ1aWxkVGltZSwgMSk7CisgICAgIGhlYWRlclB1dFVpbnQzMihzb3VyY2VQa2ctPmhlYWRlciwgUlBNVEFHX1NPVVJDRVBBQ0tBR0UsICZvbmUsIDEpOwogIAogICAgICAvKiBYWFggdGhpcyBzaG91bGQgYmUgJV9zcnBtZGlyICovCi0gICAgIHsJY2hhciAqZm4gPSBycG1HZXRQYXRoKCIle19zcmNycG1kaXJ9LyIsIHNwZWMtPnNvdXJjZVJwbU5hbWUsTlVMTCk7CitAQCAtODE0LDcgKzc2Miw3IEBAIHJwbVJDIHBhY2thZ2VTb3VyY2VzKHJwbVNwZWMgc3BlYywgY2hhciAqKmNvb2tpZSkKICAJY2hhciAqcGtnY2hlY2sgPSBycG1FeHBhbmQoIiV7P19idWlsZF9wa2djaGVja19zcnBtfSAiLCBmbiwgTlVMTCk7CiAgCiAgCXNwZWMtPnNvdXJjZVBrZ0lkID0gTlVMTDsKQEAgLTMwMywxMCArMzA1LDEwIEBACiAgCS8qIERvIGNoZWNrIFNSUE0gcGFja2FnZSBpZiBlbmFibGVkICovCiAgCWlmIChyYyA9PSBSUE1SQ19PSyAmJiBwa2djaGVja1swXSAhPSAnICcpIHsKIGRpZmYgLS1naXQgYS9idWlsZC9ycG1idWlsZF9pbnRlcm5hbC5oIGIvYnVpbGQvcnBtYnVpbGRfaW50ZXJuYWwuaAotaW5kZXggODM1MWE2YTM0Li43OTczMzdjYTcgMTAwNjQ0CitpbmRleCA0MzliN2QzYjUuLjA3ZTgzMzhhZCAxMDA2NDQKIC0tLSBhL2J1aWxkL3JwbWJ1aWxkX2ludGVybmFsLmgKICsrKyBiL2J1aWxkL3JwbWJ1aWxkX2ludGVybmFsLmgKLUBAIC00MDgsMTkgKzQwOCwyMyBAQCBycG1SQyBwcm9jZXNzU291cmNlRmlsZXMocnBtU3BlYyBzcGVjLCBycG1CdWlsZFBrZ0ZsYWdzIHBrZ0ZsYWdzKTsKK0BAIC00MjcsMTkgKzQyNywyMyBAQCBycG1SQyBwcm9jZXNzU291cmNlRmlsZXMocnBtU3BlYyBzcGVjLCBycG1CdWlsZFBrZ0ZsYWdzIHBrZ0ZsYWdzKTsKICAgKiBAcGFyYW0gc3BlYwkJc3BlYyBmaWxlIGNvbnRyb2wgc3RydWN0dXJlCiAgICogQHBhcmFtIGNvb2tpZQlidWlsZCBpZGVudGlmaWVyICJjb29raWUiIG9yIE5VTEwKICAgKiBAcGFyYW0gY2hlYXRpbmcJd2FzIGJ1aWxkIHNob3J0Y2lyY3VpdGVkPwpAQCAtMzMzLDUgKzMzNSw1IEBACiAgUlBNX0dOVUNfSU5URVJOQUwKICBpbnQgYWRkTGFuZ1RhZyhycG1TcGVjIHNwZWMsIEhlYWRlciBoLCBycG1UYWdWYWwgdGFnLAogLS0gCi0yLjExLjAKKzIuMTQuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDExLURvLW5vdC1yZXF1aXJlLXRoYXQtRUxGLWJpbmFyaWVzLWFyZS1leGVjdXRhYmxlLXRvLWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDExLURvLW5vdC1yZXF1aXJlLXRoYXQtRUxGLWJpbmFyaWVzLWFyZS1leGVjdXRhYmxlLXRvLWIucGF0Y2gKaW5kZXggYzkxMGE0Ny4uNGFjNWMzOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAxMS1Eby1ub3QtcmVxdWlyZS10aGF0LUVMRi1iaW5hcmllcy1hcmUtZXhlY3V0YWJsZS10by1iLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMTEtRG8tbm90LXJlcXVpcmUtdGhhdC1FTEYtYmluYXJpZXMtYXJlLWV4ZWN1dGFibGUtdG8tYi5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZDY1ZDZlODc2MGFmYmQ3ZjcwYjIyYTFmMzI5N2EwMzdiYzQ3NWZlYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNTE0MWQ1MGQ3YjNkM2MyMDlhMjJjNTNkZWVkYjRjZWVmMDE0NDAxZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFBldGVyIEtqZWxsZXJzdGVkdCA8cGtqQGF4aXMuY29tPgogRGF0ZTogTW9uLCAxNSBNYXkgMjAxNyAxMDoyMTowOCArMDIwMAotU3ViamVjdDogW1BBVENIIDExLzEzXSBEbyBub3QgcmVxdWlyZSB0aGF0IEVMRiBiaW5hcmllcyBhcmUgZXhlY3V0YWJsZSB0byBiZQorU3ViamVjdDogW1BBVENIIDA5LzE1XSBEbyBub3QgcmVxdWlyZSB0aGF0IEVMRiBiaW5hcmllcyBhcmUgZXhlY3V0YWJsZSB0byBiZQogIGlkZW50aWZpYWJsZQogCiBUaGVyZSBpcyBub3RoaW5nIHRoYXQgcmVxdWlyZXMsIGUuZy4sIGEgRFNPIHRvIGJlIGV4ZWN1dGFibGUsIGJ1dCBpdApAQCAtMTQsMTkgKzE0LDIwIEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogU2lnbmVkLW9mZi1ieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwZXRlci5ramVsbGVyc3RlZHRAYXhpcy5jb20+CisKIC0tLQogIGZpbGVhdHRycy9lbGYuYXR0ciB8IDEgLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9maWxlYXR0cnMvZWxmLmF0dHIgYi9maWxlYXR0cnMvZWxmLmF0dHIKLWluZGV4IDU5NWIzM2UwOS4uYmFjNTI2NDlkIDEwMDY0NAoraW5kZXggNTgwNWRkMGVlLi4zNTE2ZjMwOWQgMTAwNjQ0CiAtLS0gYS9maWxlYXR0cnMvZWxmLmF0dHIKICsrKyBiL2ZpbGVhdHRycy9lbGYuYXR0cgogQEAgLTEsNCArMSwzIEBACiAgJV9fZWxmX3Byb3ZpZGVzCQkle19ycG1jb25maWdkaXJ9L2VsZmRlcHMgLS1wcm92aWRlcyAlez9fX2ZpbHRlcl9HTElCQ19QUklWQVRFOi0tZmlsdGVyLXByaXZhdGV9CiAgJV9fZWxmX3JlcXVpcmVzCQkle19ycG1jb25maWdkaXJ9L2VsZmRlcHMgLS1yZXF1aXJlcyAlez9fX2ZpbHRlcl9HTElCQ19QUklWQVRFOi0tZmlsdGVyLXByaXZhdGV9Ci0gJV9fZWxmX21hZ2ljCQleKHNldHVpZCApPyhzZXRnaWQgKT8oc3RpY2t5ICk/RUxGICgzMnw2NCktYml0LiokCisgJV9fZWxmX21hZ2ljCQleKHNldHVpZCw/ICk/KHNldGdpZCw/ICk/KHN0aWNreSApP0VMRiAoMzJ8NjQpLWJpdC4qJAogLSVfX2VsZl9mbGFncwkJZXhlb25seQogLS0gCi0yLjEyLjAKKzIuMTQuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDEyLVVzZS1jb25kaXRpb25hbC10by1hY2Nlc3MtX2RvY2Rpci1pbi1tYWNyb3MuaW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDEyLVVzZS1jb25kaXRpb25hbC10by1hY2Nlc3MtX2RvY2Rpci1pbi1tYWNyb3MuaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5NmRhOTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAxMi1Vc2UtY29uZGl0aW9uYWwtdG8tYWNjZXNzLV9kb2NkaXItaW4tbWFjcm9zLmluLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSA3NzgwOGRiNDAzNmRjNGEwMTJjNDdhY2EzNjI1NTU0OWVkNzY0YTZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwa2pAYXhpcy5jb20+Ci1EYXRlOiBUdWUsIDE2IE1heSAyMDE3IDEwOjU4OjE4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMTIvMTNdIFVzZSBjb25kaXRpb25hbCB0byBhY2Nlc3MgJXtfZG9jZGlyfSBpbiBtYWNyb3MuaW4KLQotVGhpcyBhdm9pZHMgdGhlIGZvbGxvd2luZyB3YXJuaW5nOgotCi13YXJuaW5nOiBJZ25vcmluZyBpbnZhbGlkIHJlZ2V4ICV7X2RvY2Rpcn0KLQotd2hlbiBydW5pbmcgYHJwbWRlcHMgLVIgPGZpbGU+YCwgc2luY2UgJXtfZG9jZGlyfSBpcyBvbmx5IGRlZmluZWQgd2hlbgotcGFyc2luZyBhIHNwZWMgZmlsZSAoaW4gcGFyc2VTcGVjKCkpLgotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtL3B1bGwvMjE2XQotU2lnbmVkLW9mZi1ieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwZXRlci5ramVsbGVyc3RlZHRAYXhpcy5jb20+Ci0tLS0KLSBtYWNyb3MuaW4gfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbWFjcm9zLmluIGIvbWFjcm9zLmluCi1pbmRleCA4NGFlMjUyNzUuLmNjYTY3YTUwMCAxMDA2NDQKLS0tLSBhL21hY3Jvcy5pbgotKysrIGIvbWFjcm9zLmluCi1AQCAtMjAwLDggKzIwMCw4IEBAIHBhY2thZ2Ugb3Igd2hlbiBkZWJ1Z2dpbmcgdGhpcyBwYWNrYWdlLlwKLSAjIFRoZWlyIHB1cnBvdXNlIGlzIHRvIHNldCB1cCBnbG9iYWwgZmlsdGVyaW5nIGZvciBhbGwgcGFja2FnZXMuIElmIHlvdSBuZWVkCi0gIyB0byBzZXQgdXAgc3BlY2lmaWMgZmlsdGVyaW5nIGZvciB5b3VyIHBhY2thZ2UgdXNlICVfX3JlcXVpcmVzX2V4Y2x1ZGVfZnJvbQotICMgYW5kICVfX3Byb3ZpZGVzX2V4Y2x1ZGVfZnJvbSBpbnN0ZWFkLgotLSVfX2dsb2JhbF9yZXF1aXJlc19leGNsdWRlX2Zyb20JCSV7X2RvY2Rpcn0KLS0lX19nbG9iYWxfcHJvdmlkZXNfZXhjbHVkZV9mcm9tCQkle19kb2NkaXJ9Ci0rJV9fZ2xvYmFsX3JlcXVpcmVzX2V4Y2x1ZGVfZnJvbQkJJXs/X2RvY2Rpcjole19kb2NkaXJ9fQotKyVfX2dsb2JhbF9wcm92aWRlc19leGNsdWRlX2Zyb20JCSV7P19kb2NkaXI6JXtfZG9jZGlyfX0KLSAKLSAjCVRoZSBwYXRoIHRvIHRoZSBnemlwIGV4ZWN1dGFibGUgKGxlZ2FjeSwgdXNlICV7X19nemlwfSBpbnN0ZWFkKS4KLSAlX2d6aXBiaW4JCSV7X19nemlwfQotLS0gCi0yLjEyLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAxMy1BZGQtYS1uZXctb3B0aW9uLWFsbGRlcHMtdG8tcnBtZGVwcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMTMtQWRkLWEtbmV3LW9wdGlvbi1hbGxkZXBzLXRvLXJwbWRlcHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhYWY2MjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAxMy1BZGQtYS1uZXctb3B0aW9uLWFsbGRlcHMtdG8tcnBtZGVwcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MiArMCwwIEBACi1Gcm9tIDNiZjIwYTYxMTZhZTNlMWE1YTNhNjkwN2JlZTdlODgxYjE3ZWZiMmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQZXRlciBLamVsbGVyc3RlZHQgPHBrakBheGlzLmNvbT4KLURhdGU6IE1vbiwgMTUgTWF5IDIwMTcgMTE6MjM6MjYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxMy8xM10gQWRkIGEgbmV3IG9wdGlvbiAtLWFsbGRlcHMgdG8gcnBtZGVwcwotCi1UaGlzIHdpbGwgc2VuZCB0aGUgb3V0cHV0IGZyb20gcnBtZmNQcmludCgpIHRvIHN0ZG91dC4gVGhpcyBpcyBhbgotYWx0ZXJuYXRpdmUgdG8gdXNpbmcgdGhlIC0tcnBtZmNkZWJ1ZyBvcHRpb24sIHdoaWNoIHdpbGwgc2VuZCB0aGUgc2FtZQotb3V0cHV0IHRvIHN0ZGVyci4gVGhlIHR3byBvcHRpb25zIGhhdmUgdG90YWxseSBkaWZmZXJlbnQgdXNlIGNhc2VzCi10aG91Z2guIFdoaWxlIC0tYWxsZGVwcyBpcyB1c2VkIHdoZW4gdGhlIG91dHB1dCBmcm9tIHJwbWZjUHJpbnQoKSBpcwotd2hhdCBpcyB3YW50ZWQsIC0tcnBtZmNkZWJ1ZyBjYW4gYmUgdXNlZCB0b2dldGhlciB3aXRoIHRoZSBvdGhlcgotb3V0cHV0IG9wdGlvbnMsIGUuZy4sIC0tcmVxdWlyZXMsIHdpdGhvdXQgYWZmZWN0aW5nIHRoZWlyIG91dHB1dC4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9ycG0vcHVsbC8yMjBdCi1TaWduZWQtb2ZmLWJ5OiBQZXRlciBLamVsbGVyc3RlZHQgPHBldGVyLmtqZWxsZXJzdGVkdEBheGlzLmNvbT4KLS0tLQotIGJ1aWxkL3JwbWZjLmMgICB8IDI3ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQotIGJ1aWxkL3JwbWZjLmggICB8ICAxIC0KLSB0b29scy9ycG1kZXBzLmMgfCA0NCArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgMzkgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9idWlsZC9ycG1mYy5jIGIvYnVpbGQvcnBtZmMuYwotaW5kZXggYzhlMmY4NzZhLi40NGYxY2RjOWEgMTAwNjQ0Ci0tLS0gYS9idWlsZC9ycG1mYy5jCi0rKysgYi9idWlsZC9ycG1mYy5jCi1AQCAtNzMyLDcgKzczMiw2IEBAIHN0YXRpYyBycG1fY29sb3JfdCBycG1mY0NvbG9yKGNvbnN0IGNoYXIgKiBmbXN0cikKLSAKLSB2b2lkIHJwbWZjUHJpbnQoY29uc3QgY2hhciAqIG1zZywgcnBtZmMgZmMsIEZJTEUgKiBmcCkKLSB7Ci0tICAgIHJwbV9jb2xvcl90IGZjb2xvcjsKLSAgICAgaW50IG5keDsKLSAgICAgaW50IGR4OwotICAgICBpbnQgZng7Ci1AQCAtNzQ0LDIxICs3NDMsMjMgQEAgdm9pZCBycG1mY1ByaW50KGNvbnN0IGNoYXIgKiBtc2csIHJwbWZjIGZjLCBGSUxFICogZnApCi0gCi0gICAgIGlmIChmYykKLSAgICAgZm9yIChmeCA9IDA7IGZ4IDwgZmMtPm5maWxlczsgZngrKykgewotLQlycG1zaWQgY3ggPSBmYy0+ZmNkaWN0eFtmeF0gKyAxOyAvKiBpZCdzIGFyZSBvbmUgb2ZmICovCi0tCWZjb2xvciA9IGZjLT5mY29sb3JbZnhdOwotLQlBUkdWX3QgZmF0dHJzID0gZmMtPmZhdHRyc1tmeF07Ci0tCi0gCWZwcmludGYoZnAsICIlM2QgJXMiLCBmeCwgZmMtPmZuW2Z4XSk7Ci0tCWlmIChmY29sb3IgIT0gUlBNRkNfQkxBQ0spCi0rCWlmIChfcnBtZmNfZGVidWcpIHsKLSsJICAgIHJwbXNpZCBjeCA9IGZjLT5mY2RpY3R4W2Z4XSArIDE7IC8qIGlkJ3MgYXJlIG9uZSBvZmYgKi8KLSsJICAgIHJwbV9jb2xvcl90IGZjb2xvciA9IGZjLT5mY29sb3JbZnhdOwotKwkgICAgQVJHVl90IGZhdHRycyA9IGZjLT5mYXR0cnNbZnhdOwotKwotKwkgICAgaWYgKGZjb2xvciAhPSBSUE1GQ19CTEFDSykKLSAJCWZwcmludGYoZnAsICJcdDB4JXgiLCBmYy0+ZmNvbG9yW2Z4XSk7Ci0tCWVsc2UKLSsJICAgIGVsc2UKLSAJCWZwcmludGYoZnAsICJcdCVzIiwgcnBtc3RyUG9vbFN0cihmYy0+Y2RpY3QsIGN4KSk7Ci0tCWlmIChmYXR0cnMpIHsKLS0JICAgIGNoYXIgKmF0dHJzID0gYXJndkpvaW4oZmF0dHJzLCAiLCIpOwotLQkgICAgZnByaW50ZihmcCwgIiBbJXNdIiwgYXR0cnMpOwotLQkgICAgZnJlZShhdHRycyk7Ci0tCX0gZWxzZSB7Ci0tCSAgICBmcHJpbnRmKGZwLCAiIFtub25lXSIpOwotKwkgICAgaWYgKGZhdHRycykgewotKwkJY2hhciAqYXR0cnMgPSBhcmd2Sm9pbihmYXR0cnMsICIsIik7Ci0rCQlmcHJpbnRmKGZwLCAiIFslc10iLCBhdHRycyk7Ci0rCQlmcmVlKGF0dHJzKTsKLSsJICAgIH0gZWxzZSB7Ci0rCQlmcHJpbnRmKGZwLCAiIFtub25lXSIpOwotKwkgICAgfQotIAl9Ci0gCWZwcmludGYoZnAsICJcbiIpOwotIAotZGlmZiAtLWdpdCBhL2J1aWxkL3JwbWZjLmggYi9idWlsZC9ycG1mYy5oCi1pbmRleCBkYWU4ZWE1YjEuLjNkODdiMzFjZiAxMDA2NDQKLS0tLSBhL2J1aWxkL3JwbWZjLmgKLSsrKyBiL2J1aWxkL3JwbWZjLmgKLUBAIC00NSw3ICs0NSw2IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IHJwbWZjVG9rZW5zX3MgKiBycG1mY1Rva2VuOwotIAotIC8qKiBcaW5ncm91cCBycG1mYwotICAqIFByaW50IHJlc3VsdHMgb2YgZmlsZSBjbGFzc2lmaWNhdGlvbi4KLS0gKiBAdG9kbyBSZW1vdmUgZGVidWdnaW5nIHJvdXRpbmUuCi0gICogQHBhcmFtIG1zZwkJbWVzc2FnZSBwcmVmaXggKE5VTEwgZm9yIG5vbmUpCi0gICogQHBhcmFtIGZjCQlmaWxlIGNsYXNzaWZpZXIKLSAgKiBAcGFyYW0gZnAJCW91dHB1dCBmaWxlIGhhbmRsZSAoTlVMTCBmb3Igc3RkZXJyKQotZGlmZiAtLWdpdCBhL3Rvb2xzL3JwbWRlcHMuYyBiL3Rvb2xzL3JwbWRlcHMuYwotaW5kZXggYTQxNGI2MzQzLi5mMjYwYTM4YzQgMTAwNjQ0Ci0tLS0gYS90b29scy9ycG1kZXBzLmMKLSsrKyBiL3Rvb2xzL3JwbWRlcHMuYwotQEAgLTIzLDYgKzIzLDggQEAgc3RhdGljIGludCBwcmludF9jb25mbGljdHM7Ci0gCi0gc3RhdGljIGludCBwcmludF9vYnNvbGV0ZXM7Ci0gCi0rc3RhdGljIGludCBwcmludF9hbGxkZXBzOwotKwotIHN0YXRpYyB2b2lkIHJwbWRzUHJpbnQoY29uc3QgY2hhciAqIG1zZywgcnBtZHMgZHMsIEZJTEUgKiBmcCkKLSB7Ci0gICAgIGlmIChmcCA9PSBOVUxMKSBmcCA9IHN0ZGVycjsKLUBAIC01Nyw2ICs1OSw4IEBAIHN0YXRpYyBzdHJ1Y3QgcG9wdE9wdGlvbiBvcHRpb25zVGFibGVbXSA9IHsKLSAgICAgICAgIE5VTEwsIE5VTEwgfSwKLSAgeyAib2Jzb2xldGVzIiwgJ1wwJywgUE9QVF9BUkdfVkFMLCAmcHJpbnRfb2Jzb2xldGVzLCAtMSwKLSAgICAgICAgIE5VTEwsIE5VTEwgfSwKLSsgeyAiYWxsZGVwcyIsICdcMCcsIFBPUFRfQVJHX1ZBTCwgJnByaW50X2FsbGRlcHMsIC0xLAotKyAgICAgICAgTlVMTCwgTlVMTCB9LAotIAotICAgIFBPUFRfQVVUT0FMSUFTCi0gICAgUE9QVF9BVVRPSEVMUAotQEAgLTEwMCwyNSArMTA0LDI3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgICAgaWYgKHJwbWZjQ2xhc3NpZnkoZmMsIGF2LCBOVUxMKSB8fCBycG1mY0FwcGx5KGZjKSkKLSAJZ290byBleGl0OwotIAotLSAgICBpZiAoX3JwbWZjX2RlYnVnKQotLQlycG1mY1ByaW50KGJ1ZiwgZmMsIE5VTEwpOwotLQotLSAgICBpZiAocHJpbnRfcHJvdmlkZXMpCi0tCXJwbWRzUHJpbnQoTlVMTCwgcnBtZmNQcm92aWRlcyhmYyksIHN0ZG91dCk7Ci0tICAgIGlmIChwcmludF9yZXF1aXJlcykKLS0JcnBtZHNQcmludChOVUxMLCBycG1mY1JlcXVpcmVzKGZjKSwgc3Rkb3V0KTsKLS0gICAgaWYgKHByaW50X3JlY29tbWVuZHMpCi0tCXJwbWRzUHJpbnQoTlVMTCwgcnBtZmNSZWNvbW1lbmRzKGZjKSwgc3Rkb3V0KTsKLS0gICAgaWYgKHByaW50X3N1Z2dlc3RzKQotLQlycG1kc1ByaW50KE5VTEwsIHJwbWZjU3VnZ2VzdHMoZmMpLCBzdGRvdXQpOwotLSAgICBpZiAocHJpbnRfc3VwcGxlbWVudHMpCi0tCXJwbWRzUHJpbnQoTlVMTCwgcnBtZmNTdXBwbGVtZW50cyhmYyksIHN0ZG91dCk7Ci0tICAgIGlmIChwcmludF9lbmhhbmNlcykKLS0JcnBtZHNQcmludChOVUxMLCBycG1mY0VuaGFuY2VzKGZjKSwgc3Rkb3V0KTsKLS0gICAgaWYgKHByaW50X2NvbmZsaWN0cykKLS0JcnBtZHNQcmludChOVUxMLCBycG1mY0NvbmZsaWN0cyhmYyksIHN0ZG91dCk7Ci0tICAgIGlmIChwcmludF9vYnNvbGV0ZXMpCi0tCXJwbWRzUHJpbnQoTlVMTCwgcnBtZmNPYnNvbGV0ZXMoZmMpLCBzdGRvdXQpOwotKyAgICBpZiAocHJpbnRfYWxsZGVwcyB8fCBfcnBtZmNfZGVidWcpCi0rCXJwbWZjUHJpbnQoTlVMTCwgZmMsIHByaW50X2FsbGRlcHMgPyBzdGRvdXQgOiBOVUxMKTsKLSsKLSsgICAgaWYgKCFwcmludF9hbGxkZXBzKSB7Ci0rCWlmIChwcmludF9wcm92aWRlcykKLSsJICAgIHJwbWRzUHJpbnQoTlVMTCwgcnBtZmNQcm92aWRlcyhmYyksIHN0ZG91dCk7Ci0rCWlmIChwcmludF9yZXF1aXJlcykKLSsJICAgIHJwbWRzUHJpbnQoTlVMTCwgcnBtZmNSZXF1aXJlcyhmYyksIHN0ZG91dCk7Ci0rCWlmIChwcmludF9yZWNvbW1lbmRzKQotKwkgICAgcnBtZHNQcmludChOVUxMLCBycG1mY1JlY29tbWVuZHMoZmMpLCBzdGRvdXQpOwotKwlpZiAocHJpbnRfc3VnZ2VzdHMpCi0rCSAgICBycG1kc1ByaW50KE5VTEwsIHJwbWZjU3VnZ2VzdHMoZmMpLCBzdGRvdXQpOwotKwlpZiAocHJpbnRfc3VwcGxlbWVudHMpCi0rCSAgICBycG1kc1ByaW50KE5VTEwsIHJwbWZjU3VwcGxlbWVudHMoZmMpLCBzdGRvdXQpOwotKwlpZiAocHJpbnRfZW5oYW5jZXMpCi0rCSAgICBycG1kc1ByaW50KE5VTEwsIHJwbWZjRW5oYW5jZXMoZmMpLCBzdGRvdXQpOwotKwlpZiAocHJpbnRfY29uZmxpY3RzKQotKwkgICAgcnBtZHNQcmludChOVUxMLCBycG1mY0NvbmZsaWN0cyhmYyksIHN0ZG91dCk7Ci0rCWlmIChwcmludF9vYnNvbGV0ZXMpCi0rCSAgICBycG1kc1ByaW50KE5VTEwsIHJwbWZjT2Jzb2xldGVzKGZjKSwgc3Rkb3V0KTsKLSsgICAgfQotIAotICAgICBlYyA9IDA7Ci0gCi0tLSAKLTIuMTIuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fNC4xNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtXzQuMTQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDEyOTIyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtXzQuMTQuMS5iYgpAQCAtMCwwICsxLDEzOCBAQAorU1VNTUFSWSA9ICJUaGUgUlBNIHBhY2thZ2UgbWFuYWdlbWVudCBzeXN0ZW0iCitERVNDUklQVElPTiA9ICJUaGUgUlBNIFBhY2thZ2UgTWFuYWdlciAoUlBNKSBpcyBhIHBvd2VyZnVsIGNvbW1hbmQgbGluZSBkcml2ZW4gXAorcGFja2FnZSBtYW5hZ2VtZW50IHN5c3RlbSBjYXBhYmxlIG9mIGluc3RhbGxpbmcsIHVuaW5zdGFsbGluZywgXAordmVyaWZ5aW5nLCBxdWVyeWluZywgYW5kIHVwZGF0aW5nIHNvZnR3YXJlIHBhY2thZ2VzLiBFYWNoIHNvZnR3YXJlIFwKK3BhY2thZ2UgY29uc2lzdHMgb2YgYW4gYXJjaGl2ZSBvZiBmaWxlcyBhbG9uZyB3aXRoIGluZm9ybWF0aW9uIGFib3V0IFwKK3RoZSBwYWNrYWdlIGxpa2UgaXRzIHZlcnNpb24sIGEgZGVzY3JpcHRpb24sIGV0Yy4iCisKK1NVTU1BUllfJHtQTn0tZGV2ID0gIkRldmVsb3BtZW50IGZpbGVzIGZvciBtYW5pcHVsYXRpbmcgUlBNIHBhY2thZ2VzIgorREVTQ1JJUFRJT05fJHtQTn0tZGV2ID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgUlBNIEMgbGlicmFyeSBhbmQgaGVhZGVyIGZpbGVzLiBUaGVzZSBcCitkZXZlbG9wbWVudCBmaWxlcyB3aWxsIHNpbXBsaWZ5IHRoZSBwcm9jZXNzIG9mIHdyaXRpbmcgcHJvZ3JhbXMgdGhhdCBcCittYW5pcHVsYXRlIFJQTSBwYWNrYWdlcyBhbmQgZGF0YWJhc2VzLiBUaGVzZSBmaWxlcyBhcmUgaW50ZW5kZWQgdG8gXAorc2ltcGxpZnkgdGhlIHByb2Nlc3Mgb2YgY3JlYXRpbmcgZ3JhcGhpY2FsIHBhY2thZ2UgbWFuYWdlcnMgb3IgYW55IFwKK290aGVyIHRvb2xzIHRoYXQgbmVlZCBhbiBpbnRpbWF0ZSBrbm93bGVkZ2Ugb2YgUlBNIHBhY2thZ2VzIGluIG9yZGVyIFwKK3RvIGZ1bmN0aW9uLiIKKworU1VNTUFSWV9weXRob24zLXJwbSA9ICJQeXRob24gYmluZGluZ3MgZm9yIGFwcHMgd2hpY2ggd2lsbCBtYW51cHVsYXRlIFJQTSBwYWNrYWdlcyIKK0RFU0NSSVBUSU9OX3B5dGhvbjMtcnBtID0gIlRoZSBweXRob24zLXJwbSBwYWNrYWdlIGNvbnRhaW5zIGEgbW9kdWxlIHRoYXQgcGVybWl0cyBhcHBsaWNhdGlvbnMgXAord3JpdHRlbiBpbiB0aGUgUHl0aG9uIHByb2dyYW1taW5nIGxhbmd1YWdlIHRvIHVzZSB0aGUgaW50ZXJmYWNlIFwKK3N1cHBsaWVkIGJ5IHRoZSBSUE0gUGFja2FnZSBNYW5hZ2VyIGxpYnJhcmllcy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucnBtLm9yZyIKKworIyBsaWJyYXJpZXMgYXJlIGFsc28gTEdQTCAtIGhvdyB0byBleHByZXNzIHRoaXM/CitMSUNFTlNFID0gIkdQTC0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jMGJmMDE3YzBmZDE5MjBlNjE1OGEzMzNhY2FiZmQ0YSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbTticmFuY2g9cnBtLTQuMTQueCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1hZGQtYW4tdW5zYXRpc2ZpYWJsZS1kZXBlbmRlbmN5LXdoZW4tYnVpbGRpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtcmVhZC1jb25maWctZmlsZXMtZnJvbS1IT01FLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtV2hlbi1jcm9zcy1pbnN0YWxsaW5nLWV4ZWN1dGUtcGFja2FnZS1zY3JpcHRsZXRzLXdpdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1yZXNldC10aGUtUEFUSC1lbnZpcm9ubWVudC12YXJpYWJsZS1iZWZvcmUtcnUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGQtc3VwcG9ydC1mb3ItcHJlZml4aW5nLWV0Yy1mcm9tLVJQTV9FVENDT05GSUdESVItLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWhhcmRjb2RlLWxpYi1ycG0tYXMtdGhlLWluc3RhbGxhdGlvbi1wYXRoLWZvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wtQy1saWJyYXJ5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWEtY29sb3Itc2V0dGluZy1mb3ItbWlwczY0X24zMi1iaW5hcmllcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDExLURvLW5vdC1yZXF1aXJlLXRoYXQtRUxGLWJpbmFyaWVzLWFyZS1leGVjdXRhYmxlLXRvLWIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1TcGxpdC1iaW5hcnktcGFja2FnZS1idWlsZGluZy1pbnRvLWEtc2VwYXJhdGUtZnVuY3RpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItUnVuLWJpbmFyeS1wYWNrYWdlLWNyZWF0aW9uLXZpYS10aHJlYWQtcG9vbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1ycG1zdHJwb29sLmMtbWFrZS1vcGVyYXRpb25zLW92ZXItc3RyaW5nLXBvb2xzLXRocmVhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtYnVpbGQtcGFjay5jLXJlbW92ZS1zdGF0aWMtbG9jYWwtdmFyaWFibGVzLWZyb20tYnVpbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBlcmwtZGlzYWJsZS1hdXRvLXJlcXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtYWRkLW9wdGlvbi1mb3ItZGJ1cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZhY3Rvci1vdXQtYW5kLXVuaWZ5LXNldHRpbmctQ0xPRVhFQy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLU9wdGltaXplLXJwbVNldENsb3NlT25FeGVjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtcnBtU2V0Q2xvc2VPbkV4ZWMtdXNlLWdldHJsaW1pdC5wYXRjaCBcCisgICAgICAgICAgICIKKworUEUgPSAiMSIKK1NSQ1JFViA9ICJiZmVlMTQxMGFmNTFjMWNjOTcyNDc5MWZiOGQ5ODUyNjBhNjIxMDJiIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitERVBFTkRTID0gIm5zcyBsaWJhcmNoaXZlIGRiIGZpbGUgcG9wdCB4eiBiemlwMiBkYnVzIGVsZnV0aWxzIHB5dGhvbjMiCitERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIGJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgcHl0aG9uM25hdGl2ZQorZXhwb3J0IFBZVEhPTl9BQkkKKworIyBPRS1jb3JlIHBhdGNoZXMgYXV0b3JlY29uZiB0byBhZGRpdGlvbmFsbHkgcnVuIGdudS1jb25maWdpemUsIHdoaWNoIGZhaWxzIHdpdGggdGhpcyByZWNpcGUKK0VYVFJBX0FVVE9SRUNPTkZfYXBwZW5kID0gIiAtLWV4Y2x1ZGU9Z251LWNvbmZpZ2l6ZSIKKworRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgLS13aXRob3V0LWx1YSAtLWVuYWJsZS1weXRob24iCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLW5scyIKKworIyAtLXN5c2NvbmZkaXIgcHJldmVudHMgcnBtIGZyb20gYXR0ZW1wdGluZyB0byBhY2Nlc3MgbWFjaGluZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGluIHN5c3Jvb3QvZXRjOyB3ZSBuZWVkIHRvIGhhdmUgaXQgaW4gcm9vdGZzCisjCisjIC0tbG9jYWxzdGF0ZWRpciBwcmV2ZW50cyBycG0gZnJvbSB3cml0aW5nIGl0cyBkYXRhYmFzZSB0byBuYXRpdmUgc3lzcm9vdCB3aGVuIGJ1aWxkaW5nIGltYWdlcworIworIyBEaXNhYmxlIGRidXMgZm9yIG5hdGl2ZSwgc28gdGhhdCBycG0gZG9lc24ndCBhdHRlbXB0IHRvIGluaGliaXQgc2h1dGRvd24gdmlhIHNlc3Npb24gZGJ1cyBldmVuIHdoZW4gcGx1Z2lucyBzdXBwb3J0IGlzIGVuYWJsZWQuCisjIEFsc28gZGlzYWJsZSBwbHVnaW5zIGJ5IGRlZmF1bHQgZm9yIG5hdGl2ZS4KK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLXN5c2NvbmZkaXI9L2V0YyAtLWxvY2Fsc3RhdGVkaXI9L3ZhciAtLXdpdGhvdXQtZGJ1cyAtLWRpc2FibGUtcGx1Z2lucyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tpbWFldm1dID0gIi0td2l0aC1pbWFldm0sLGltYS1ldm0tdXRpbHMiCisKKyMgRGlyZWN0IHJwbS1uYXRpdmUgdG8gcmVhZCBjb25maWd1cmF0aW9uIGZyb20gb3VyIHN5c3Jvb3QsIG5vdCB0aGUgb25lIGl0IHdhcyBjb21waWxlZCBpbgorIyBsaWJtYWdpYyBhbHNvIGhhcyBzeXNyb290IHBhdGggY29udGFtaW5hdGlvbiwgc28gb3ZlcnJpZGUgaXQKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKyAgICAgICAgdG9vbHM9IlwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtMmFyY2hpdmUgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG0yY3BpbyBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JwbWJ1aWxkIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtZGIgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG1ncmFwaCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JwbWtleXMgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG1zaWduIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtc3BlYyBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3JwbS9ycG1kZXBzIFwKKyAgICAgICAgIgorCisgICAgICAgIGZvciB0b29sIGluICR0b29sczsgZG8KKyAgICAgICAgICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9JHRvb2wgXAorICAgICAgICAgICAgICAgICAgICAgICAgUlBNX0NPTkZJR0RJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcnBtIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJQTV9FVENDT05GSUdESVI9JHtTVEFHSU5HX0RJUl9OQVRJVkV9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1BR0lDPSR7U1RBR0lOR19ESVJfTkFUSVZFfSR7ZGF0YWRpcl9uYXRpdmV9L21pc2MvbWFnaWMubWdjIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJQTV9OT19DSFJPT1RfRk9SX1NDUklQVFM9MQorICAgICAgICBkb25lCit9CisKKyMgUnBtJ3MgbWFrZSBpbnN0YWxsIGNyZWF0ZXMgdmFyL3RtcCB3aGljaCBjbGFzaGVzIHdpdGggYmFzZS1maWxlcyBwYWNrYWdpbmcKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICBybSAtcmYgJHtEfS92YXIKK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCXNlZCAtaSAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCSAgICAke0R9LyR7bGliZGlyfS9ycG0vbWFjcm9zCisKKwlzZWQgLWkgLWUgJ3N8L3Vzci9iaW4vcHl0aG9ufCR7VVNSQklOUEFUSH0vZW52ICR7UFlUSE9OX1BOfXwnIFwKKwkgICAgJHtEfSR7bGliZGlyfS9ycG0vcHl0aG9uZGlzdGRlcHMucHkgXAorCSAgICAke0R9JHtsaWJkaXJ9L3JwbS9weXRob24tbWFjcm8taGVscGVyCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vcnBtLXBsdWdpbnMvKi5zbyBcCisgICAgICAgICAgICAgICAiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3JwbS1wbHVnaW5zLyoubGEgXAorICAgICAgICAgICAgICAgICAgICAiCisKK1BBQ0tBR0VTICs9ICJweXRob24zLXJwbSIKK1BST1ZJREVTICs9ICJweXRob24zLXJwbSIKK0ZJTEVTX3B5dGhvbjMtcnBtID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3JwbS8qIgorCisjIHJwbSA1Lnggd2FzIHBhY2thZ2luZyB0aGUgcnBtIGJ1aWxkIHRvb2xzIHNlcGFyYXRlbHkKK1JQUk9WSURFU18ke1BOfSArPSAicnBtLWJ1aWxkIgorCitSREVQRU5EU18ke1BOfSA9ICJiYXNoIHBlcmwgcHl0aG9uMy1jb3JlIgorCitQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInJwbV9wYWNrYWdlX3ByZXByb2Nlc3MiCisKKyMgRG8gbm90IHNwZWNpZnkgYSBzeXNyb290IHdoZW4gY29tcGlsaW5nIG9uIGEgdGFyZ2V0LgorcnBtX3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7CisJc2VkIC1pIC1lICdzOi0tc3lzcm9vdFteIF0qOjpnJyBcCisJICAgICR7UEtHRH0vJHtsaWJkaXJ9L3JwbS9tYWNyb3MKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODY2MzE0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbV9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMzggKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgUlBNIHBhY2thZ2UgbWFuYWdlbWVudCBzeXN0ZW0iCi1ERVNDUklQVElPTiA9ICJUaGUgUlBNIFBhY2thZ2UgTWFuYWdlciAoUlBNKSBpcyBhIHBvd2VyZnVsIGNvbW1hbmQgbGluZSBkcml2ZW4gXAotcGFja2FnZSBtYW5hZ2VtZW50IHN5c3RlbSBjYXBhYmxlIG9mIGluc3RhbGxpbmcsIHVuaW5zdGFsbGluZywgXAotdmVyaWZ5aW5nLCBxdWVyeWluZywgYW5kIHVwZGF0aW5nIHNvZnR3YXJlIHBhY2thZ2VzLiBFYWNoIHNvZnR3YXJlIFwKLXBhY2thZ2UgY29uc2lzdHMgb2YgYW4gYXJjaGl2ZSBvZiBmaWxlcyBhbG9uZyB3aXRoIGluZm9ybWF0aW9uIGFib3V0IFwKLXRoZSBwYWNrYWdlIGxpa2UgaXRzIHZlcnNpb24sIGEgZGVzY3JpcHRpb24sIGV0Yy4iCi0KLVNVTU1BUllfJHtQTn0tZGV2ID0gIkRldmVsb3BtZW50IGZpbGVzIGZvciBtYW5pcHVsYXRpbmcgUlBNIHBhY2thZ2VzIgotREVTQ1JJUFRJT05fJHtQTn0tZGV2ID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgUlBNIEMgbGlicmFyeSBhbmQgaGVhZGVyIGZpbGVzLiBUaGVzZSBcCi1kZXZlbG9wbWVudCBmaWxlcyB3aWxsIHNpbXBsaWZ5IHRoZSBwcm9jZXNzIG9mIHdyaXRpbmcgcHJvZ3JhbXMgdGhhdCBcCi1tYW5pcHVsYXRlIFJQTSBwYWNrYWdlcyBhbmQgZGF0YWJhc2VzLiBUaGVzZSBmaWxlcyBhcmUgaW50ZW5kZWQgdG8gXAotc2ltcGxpZnkgdGhlIHByb2Nlc3Mgb2YgY3JlYXRpbmcgZ3JhcGhpY2FsIHBhY2thZ2UgbWFuYWdlcnMgb3IgYW55IFwKLW90aGVyIHRvb2xzIHRoYXQgbmVlZCBhbiBpbnRpbWF0ZSBrbm93bGVkZ2Ugb2YgUlBNIHBhY2thZ2VzIGluIG9yZGVyIFwKLXRvIGZ1bmN0aW9uLiIKLQotU1VNTUFSWV9weXRob24zLXJwbSA9ICJQeXRob24gYmluZGluZ3MgZm9yIGFwcHMgd2hpY2ggd2lsbCBtYW51cHVsYXRlIFJQTSBwYWNrYWdlcyIKLURFU0NSSVBUSU9OX3B5dGhvbjMtcnBtID0gIlRoZSBweXRob24zLXJwbSBwYWNrYWdlIGNvbnRhaW5zIGEgbW9kdWxlIHRoYXQgcGVybWl0cyBhcHBsaWNhdGlvbnMgXAotd3JpdHRlbiBpbiB0aGUgUHl0aG9uIHByb2dyYW1taW5nIGxhbmd1YWdlIHRvIHVzZSB0aGUgaW50ZXJmYWNlIFwKLXN1cHBsaWVkIGJ5IHRoZSBSUE0gUGFja2FnZSBNYW5hZ2VyIGxpYnJhcmllcy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucnBtLm9yZyIKLQotIyBsaWJyYXJpZXMgYXJlIGFsc28gTEdQTCAtIGhvdyB0byBleHByZXNzIHRoaXM/Ci1MSUNFTlNFID0gIkdQTC0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mNTI1OTE1MWQyNmZmMThlNzgwMjM0NTBhNWFjOGQ5NiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1hZGQtYW4tdW5zYXRpc2ZpYWJsZS1kZXBlbmRlbmN5LXdoZW4tYnVpbGRpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtcmVhZC1jb25maWctZmlsZXMtZnJvbS1IT01FLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtV2hlbi1jcm9zcy1pbnN0YWxsaW5nLWV4ZWN1dGUtcGFja2FnZS1zY3JpcHRsZXRzLXdpdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1yZXNldC10aGUtUEFUSC1lbnZpcm9ubWVudC12YXJpYWJsZS1iZWZvcmUtcnUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGQtc3VwcG9ydC1mb3ItcHJlZml4aW5nLWV0Yy1mcm9tLVJQTV9FVENDT05GSUdESVItLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtV2hlbi1uaWNlLXZhbHVlLWNhbm5vdC1iZS1yZXNldC1pc3N1ZS1hLW5vdGljZS1pbnN0ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1oYXJkY29kZS1saWItcnBtLWFzLXRoZS1pbnN0YWxsYXRpb24tcGF0aC1mb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLUMtbGlicmFyeS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1hLWNvbG9yLXNldHRpbmctZm9yLW1pcHM2NF9uMzItYmluYXJpZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtUFlUSE9OX0FCSS13aGVuLXNlYXJjaGluZy1mb3ItcHl0aG9uLWxpYnJhcmllcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDExLURvLW5vdC1yZXF1aXJlLXRoYXQtRUxGLWJpbmFyaWVzLWFyZS1leGVjdXRhYmxlLXRvLWIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMi1Vc2UtY29uZGl0aW9uYWwtdG8tYWNjZXNzLV9kb2NkaXItaW4tbWFjcm9zLmluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTMtQWRkLWEtbmV3LW9wdGlvbi1hbGxkZXBzLXRvLXJwbWRlcHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1TcGxpdC1iaW5hcnktcGFja2FnZS1idWlsZGluZy1pbnRvLWEtc2VwYXJhdGUtZnVuY3RpLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItUnVuLWJpbmFyeS1wYWNrYWdlLWNyZWF0aW9uLXZpYS10aHJlYWQtcG9vbHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1ycG1zdHJwb29sLmMtbWFrZS1vcGVyYXRpb25zLW92ZXItc3RyaW5nLXBvb2xzLXRocmVhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtYnVpbGQtcGFjay5jLXJlbW92ZS1zdGF0aWMtbG9jYWwtdmFyaWFibGVzLWZyb20tYnVpbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXBlcmwtZGlzYWJsZS1hdXRvLXJlcXMucGF0Y2ggXAotICAgICAgICAgICAiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKLQotUFYgPSAiNC4xMy45MCtnaXQke1NSQ1BWfSIKLVBFID0gIjEiCi1TUkNSRVYgPSAiYThlNTFiM2JiMDVjNmFjYjFkOWIyZTNkMzRmODU5ZGRkYTE2NzdiZSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotREVQRU5EUyA9ICJuc3MgbGliYXJjaGl2ZSBkYiBmaWxlIHBvcHQgeHogYnppcDIgZGJ1cyBlbGZ1dGlscyBweXRob24zIgotREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSBiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIHB5dGhvbjNuYXRpdmUKLWV4cG9ydCBQWVRIT05fQUJJCi0KLSMgT0UtY29yZSBwYXRjaGVzIGF1dG9yZWNvbmYgdG8gYWRkaXRpb25hbGx5IHJ1biBnbnUtY29uZmlnaXplLCB3aGljaCBmYWlscyB3aXRoIHRoaXMgcmVjaXBlCi1FWFRSQV9BVVRPUkVDT05GX2FwcGVuZCA9ICIgLS1leGNsdWRlPWdudS1jb25maWdpemUiCi0KLUVYVFJBX09FQ09ORl9hcHBlbmQgPSAiIC0td2l0aG91dC1sdWEgLS1lbmFibGUtcHl0aG9uIgotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS1ubHMiCi0KLSMgLS1zeXNjb25mZGlyIHByZXZlbnRzIHJwbSBmcm9tIGF0dGVtcHRpbmcgdG8gYWNjZXNzIG1hY2hpbmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpbiBzeXNyb290L2V0Yzsgd2UgbmVlZCB0byBoYXZlIGl0IGluIHJvb3RmcwotIwotIyAtLWxvY2Fsc3RhdGVkaXIgcHJldmVudHMgcnBtIGZyb20gd3JpdGluZyBpdHMgZGF0YWJhc2UgdG8gbmF0aXZlIHN5c3Jvb3Qgd2hlbiBidWlsZGluZyBpbWFnZXMKLSMKLSMgQWxzbyBkaXNhYmxlIHBsdWdpbnMsIHNvIHRoYXQgcnBtIGRvZXNuJ3QgYXR0ZW1wdCB0byBpbmhpYml0IHNodXRkb3duIHZpYSBzZXNzaW9uIGRidXMKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLXN5c2NvbmZkaXI9L2V0YyAtLWxvY2Fsc3RhdGVkaXI9L3ZhciAtLWRpc2FibGUtcGx1Z2lucyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tpbWFldm1dID0gIi0td2l0aC1pbWFldm0sLGltYS1ldm0tdXRpbHMiCi0KLSMgRGlyZWN0IHJwbS1uYXRpdmUgdG8gcmVhZCBjb25maWd1cmF0aW9uIGZyb20gb3VyIHN5c3Jvb3QsIG5vdCB0aGUgb25lIGl0IHdhcyBjb21waWxlZCBpbgotIyBsaWJtYWdpYyBhbHNvIGhhcyBzeXNyb290IHBhdGggY29udGFtaW5hdGlvbiwgc28gb3ZlcnJpZGUgaXQKLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICAgICAgdG9vbHM9IlwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtMmFyY2hpdmUgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG0yY3BpbyBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JwbWJ1aWxkIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtZGIgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG1ncmFwaCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JwbWtleXMgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycG1zaWduIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vcnBtc3BlYyBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3JwbS9ycG1kZXBzIFwKLSAgICAgICAgIgotCi0gICAgICAgIGZvciB0b29sIGluICR0b29sczsgZG8KLSAgICAgICAgICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9JHRvb2wgXAotICAgICAgICAgICAgICAgICAgICAgICAgUlBNX0NPTkZJR0RJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcnBtIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJQTV9FVENDT05GSUdESVI9JHtTVEFHSU5HX0RJUl9OQVRJVkV9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1BR0lDPSR7U1RBR0lOR19ESVJfTkFUSVZFfSR7ZGF0YWRpcl9uYXRpdmV9L21pc2MvbWFnaWMubWdjIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJQTV9OT19DSFJPT1RfRk9SX1NDUklQVFM9MQotICAgICAgICBkb25lCi19Ci0KLSMgUnBtJ3MgbWFrZSBpbnN0YWxsIGNyZWF0ZXMgdmFyL3RtcCB3aGljaCBjbGFzaGVzIHdpdGggYmFzZS1maWxlcyBwYWNrYWdpbmcKLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICBybSAtcmYgJHtEfS92YXIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCXNlZCAtaSAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAotCSAgICAke0R9LyR7bGliZGlyfS9ycG0vbWFjcm9zCi0KLQlzZWQgLWkgLWUgJ3N8L3Vzci9iaW4vcHl0aG9ufCR7VVNSQklOUEFUSH0vZW52ICR7UFlUSE9OX1BOfXwnIFwKLQkgICAgJHtEfSR7bGliZGlyfS9ycG0vcHl0aG9uZGlzdGRlcHMucHkKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9ycG0tcGx1Z2lucy8qLnNvIFwKLSAgICAgICAgICAgICAgICIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcnBtLXBsdWdpbnMvKi5sYSBcCi0gICAgICAgICAgICAgICAgICAgICIKLQotUEFDS0FHRVMgKz0gInB5dGhvbjMtcnBtIgotUFJPVklERVMgKz0gInB5dGhvbjMtcnBtIgotRklMRVNfcHl0aG9uMy1ycG0gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vcnBtLyoiCi0KLSMgcnBtIDUueCB3YXMgcGFja2FnaW5nIHRoZSBycG0gYnVpbGQgdG9vbHMgc2VwYXJhdGVseQotUlBST1ZJREVTXyR7UE59ICs9ICJycG0tYnVpbGQiCi0KLVJERVBFTkRTXyR7UE59ID0gImJhc2ggcGVybCBweXRob24zLWNvcmUiCi0KLVBBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAicnBtX3BhY2thZ2VfcHJlcHJvY2VzcyIKLQotIyBEbyBub3Qgc3BlY2lmeSBhIHN5c3Jvb3Qgd2hlbiBjb21waWxpbmcgb24gYSB0YXJnZXQuCi1ycG1fcGFja2FnZV9wcmVwcm9jZXNzICgpIHsKLQlzZWQgLWkgLWUgJ3M6LS1zeXNyb290W14gXSo6OmcnIFwKLQkgICAgJHtQS0dEfS8ke2xpYmRpcn0vcnBtL21hY3JvcwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yc3luYy9yc3luY18zLjEuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnN5bmMvcnN5bmNfMy4xLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwMzE5ODQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yc3luYy9yc3luY18zLjEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLXJlcXVpcmUgcnN5bmMuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9tYWtlZmlsZS1uby1yZWJ1aWxkLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMGY3NThkN2UwMDBjMGY3ZjdkMzc5MjYxMGZhZDcwY2IiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWNmYTYyYTdmYTNjNGMxOGI5ZWNjZDhjMTZlYWRkZWU0YmQzMDhhNzZlYTUwYjVjMDJhNTg0MGYwOWMwYTFjMiIKLQotIyBHUEx2MisgKDw8IDMuMC4wKSwgR1BMdjMrICg+PSAzLjAuMCkKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJhY2wgYXR0ciBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2FjbF0gPSAiLS1lbmFibGUtYWNsLXN1cHBvcnQsLS1kaXNhYmxlLWFjbC1zdXBwb3J0LGFjbCwiCi1QQUNLQUdFQ09ORklHW2F0dHJdID0gIi0tZW5hYmxlLXhhdHRyLXN1cHBvcnQsLS1kaXNhYmxlLXhhdHRyLXN1cHBvcnQsYXR0ciwiCi0KLSMgQnkgZGVmYXVsdCwgaWYgY3Jvc3Njb21waWxpbmcsIHJzeW5jIGRpc2FibGVzIGEgbnVtYmVyIG9mCi0jIGNhcGFiaWxpdGllcywgaGFyZGxpbmtpbmcgc3ltbGlua3MgYW5kIHNwZWNpYWwgZmlsZXMgKGkuZS4gZGV2aWNlcykKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJyc3luY19jdl9jYW5faGFyZGxpbmtfc3BlY2lhbD15ZXMgcnN5bmNfY3ZfY2FuX2hhcmRsaW5rX3N5bWxpbms9eWVzIgotCi0jIHJzeW5jIDMuMCB1c2VzIGNvbmZpZ3VyZS5zaCBpbnN0ZWFkIG9mIGNvbmZpZ3VyZSwgYW5kCi0jIG1ha2VmaWxlIGNoZWNrcyB0aGUgZXhpc3RlbmNlIG9mIGNvbmZpZ3VyZS5zaAotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCXJtIC1mICR7U30vY29uZmlndXJlICR7U30vY29uZmlndXJlLnNoCi19Ci0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgewotCWNwIC1mICR7U30vY29uZmlndXJlICR7U30vY29uZmlndXJlLnNoCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yc3luYy9yc3luY18zLjEuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnN5bmMvcnN5bmNfMy4xLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRhMDI1OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnN5bmMvcnN5bmNfMy4xLjMuYmIKQEAgLTAsMCArMSwzMiBAQAorcmVxdWlyZSByc3luYy5pbmMKKworU1JDX1VSSSArPSAiZmlsZTovL21ha2VmaWxlLW5vLXJlYnVpbGQucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxNTgxYTU4OGZkZTlkODlmNmJjNjIwMWU4MTI5YWZhZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1NWNjNTU0ZWZlYzVmZGFhZDcwZGU5MjFjZDVhNWVlYjZjMjlhOTU1MjRjNzE1ZjNiYmY4NDkyMzViMDgwMGMwIgorCisjIEdQTHYyKyAoPDwgMy4wLjApLCBHUEx2MysgKD49IDMuMC4wKQorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImFjbCBhdHRyIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICItLWVuYWJsZS1hY2wtc3VwcG9ydCwtLWRpc2FibGUtYWNsLXN1cHBvcnQsYWNsLCIKK1BBQ0tBR0VDT05GSUdbYXR0cl0gPSAiLS1lbmFibGUteGF0dHItc3VwcG9ydCwtLWRpc2FibGUteGF0dHItc3VwcG9ydCxhdHRyLCIKKworIyBCeSBkZWZhdWx0LCBpZiBjcm9zc2NvbXBpbGluZywgcnN5bmMgZGlzYWJsZXMgYSBudW1iZXIgb2YKKyMgY2FwYWJpbGl0aWVzLCBoYXJkbGlua2luZyBzeW1saW5rcyBhbmQgc3BlY2lhbCBmaWxlcyAoaS5lLiBkZXZpY2VzKQorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gInJzeW5jX2N2X2Nhbl9oYXJkbGlua19zcGVjaWFsPXllcyByc3luY19jdl9jYW5faGFyZGxpbmtfc3ltbGluaz15ZXMiCisKKyMgcnN5bmMgMy4wIHVzZXMgY29uZmlndXJlLnNoIGluc3RlYWQgb2YgY29uZmlndXJlLCBhbmQKKyMgbWFrZWZpbGUgY2hlY2tzIHRoZSBleGlzdGVuY2Ugb2YgY29uZmlndXJlLnNoCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJcm0gLWYgJHtTfS9jb25maWd1cmUgJHtTfS9jb25maWd1cmUuc2gKK30KKworZG9fY29uZmlndXJlX2FwcGVuZCAoKSB7CisJY3AgLWYgJHtTfS9jb25maWd1cmUgJHtTfS9jb25maWd1cmUuc2gKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS5pbmMKaW5kZXggZDcxOTg5OC4uZmQzOTExYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LmluYwpAQCAtOCwxMyArOCwxMyBAQAogU0VDVElPTiA9ICJkZXZlbC9ydWJ5IgogTElDRU5TRSA9ICJSdWJ5IHwgQlNEIHwgR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gIlwKLSAgICBmaWxlOi8vQ09QWUlORzttZDU9OGE5NjBiMDhkOTcyZjQzZjkxYWU4NGE2ZjAwZGNiZmIgXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT0zNDA5NDhlMTg4MmU1Nzk3MzE4NDFiZjQ5Y2RjMjJjMSBcCiAgICAgZmlsZTovL0JTREw7bWQ1PTE5YWFmNjVjODhhNDBiNTA4ZDE3YWU0YmU1MzljNGI1XAogICAgIGZpbGU6Ly9HUEw7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzXAotICAgIGZpbGU6Ly9MRUdBTDttZDU9ZGFmMzQ5YWQ1OWRkMTliZDhjOTE5MTcxYmZmM2M1ZDYgXAorICAgIGZpbGU6Ly9MRUdBTDttZDU9OGY4NzFmM2YwMzczMmMwMThhNWZhOWIxODU5NTgyMzEgXAogIgogCi1ERVBFTkRTID0gInJ1YnktbmF0aXZlIHpsaWIgb3BlbnNzbCB0Y2wgbGlieWFtbCBkYiBnZGJtIHJlYWRsaW5lIgorREVQRU5EUyA9ICJydWJ5LW5hdGl2ZSB6bGliIG9wZW5zc2wgdGNsIGxpYnlhbWwgZ2RibSByZWFkbGluZSIKIERFUEVORFNfY2xhc3MtbmF0aXZlID0gIm9wZW5zc2wtbmF0aXZlIGxpYnlhbWwtbmF0aXZlIgogCiBTSFJUX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvMDAwMi1PYmV5LUxERkxBR1MtZm9yLXRoZS1saW5rLW9mLWxpYnJ1YnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS8wMDAyLU9iZXktTERGTEFHUy1mb3ItdGhlLWxpbmstb2YtbGlicnVieS5wYXRjaAppbmRleCBiMDExNGJhLi40Y2Y1NzlmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS8wMDAyLU9iZXktTERGTEFHUy1mb3ItdGhlLWxpbmstb2YtbGlicnVieS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS8wMDAyLU9iZXktTERGTEFHUy1mb3ItdGhlLWxpbmstb2YtbGlicnVieS5wYXRjaApAQCAtMTAsMTkgKzEwLDE2IEBACiAgTWFrZWZpbGUuaW4gfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCi1pbmRleCA3ZGEyNDg4Li41YjRhZWExIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuaW4KLSsrKyBiL01ha2VmaWxlLmluCi1AQCAtNzUsNyArNzUsNyBAQCBFWFRMSUJTID0KLSBMSUJTID0gQExJQlNAICQoRVhUTElCUykKK0luZGV4OiBydWJ5LTIuNS4wL01ha2VmaWxlLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcnVieS0yLjUuMC5vcmlnL01ha2VmaWxlLmluCisrKysgcnVieS0yLjUuMC9NYWtlZmlsZS5pbgorQEAgLTc3LDcgKzc3LDcgQEAgTElCUyA9IEBMSUJTQCAkKEVYVExJQlMpCiAgTUlTU0lORyA9IEBMSUJPQkpTQCBAQUxMT0NBQAorIEVOQUJMRV9TSEFSRUQgPSBARU5BQkxFX1NIQVJFREAKICBMRFNIQVJFRCA9IEBMSUJSVUJZX0xEU0hBUkVEQAogLURMREZMQUdTID0gQExJQlJVQllfRExERkxBR1NAICQoWExERkxBR1MpICQoQVJDSF9GTEFHKQogK0RMREZMQUdTID0gQExJQlJVQllfRExERkxBR1NAIEBMREZMQUdTQCAkKFhMREZMQUdTKSAkKEFSQ0hfRkxBRykKICBTT0xJQlMgPSBAU09MSUJTQAorIEVOQUJMRV9ERUJVR19FTlYgPSBARU5BQkxFX0RFQlVHX0VOVkAKICBNQUlOTElCUyA9IEBNQUlOTElCU0AKLSBBUkNITUlOSU9CSlMgPSBATUlOSU9CSlNACi0tLSAKLTIuOC4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L2V4dG1rLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvZXh0bWsucGF0Y2gKaW5kZXggYTViMjE4NC4uNDA0YjlhZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvZXh0bWsucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvZXh0bWsucGF0Y2gKQEAgLTIsMTMgKzIsMTUgQEAKIGRpZmYgLXJ1IHJ1YnktMS44LjctcDI0OC5vcmlnL2V4dC9leHRtay5yYiBydWJ5LTEuOC43LXAyNDgvZXh0L2V4dG1rLnJiCiAtLS0gcnVieS0xLjguNy1wMjQ4Lm9yaWcvZXh0L2V4dG1rLnJiCTIwMDktMTItMjQgMDM6MDE6NTguMDAwMDAwMDAwIC0wNjAwCiArKysgcnVieS0xLjguNy1wMjQ4L2V4dC9leHRtay5yYgkyMDEwLTAyLTEyIDE1OjU1OjI3LjM3MDA2MTU1OCAtMDYwMAotQEAgLTM1NCw4ICszNTQsOCBAQAotICAgJHJ1YnkgPSAnJCh0b3BkaXIpL21pbmlydWJ5JyArIEVYRUVYVAorQEAgLTQxMyw4ICs0MTMsOCBAQCBkZWYgJG1mbGFncy5kZWZpbmVkPyh2YXIpCiAgZW5kCi0gJHJ1YnkgPDwgIiAtSSckKHRvcGRpciknIgotKyRydWJ5IDw8ICIgLUknJCh0b3Bfc3JjZGlyKS9saWInIgorICRydWJ5ID0gWyRydWJ5XQorICRydWJ5IDw8ICItSSckKHRvcGRpciknIgorKyRydWJ5IDw8ICItSSckKHRvcF9zcmNkaXIpL2xpYiciCiAgdW5sZXNzIENST1NTX0NPTVBJTElORwotLSAgJHJ1YnkgPDwgIiAtSSckKHRvcF9zcmNkaXIpL2xpYiciCi0gICAkcnVieSA8PCAiIC1JJyQoZXh0b3V0KS8kKGFyY2gpJyAtSSckKGV4dG91dCkvY29tbW9uJyIgaWYgJGV4dG91dAotICAgJHJ1YnkgPDwgIiAtSS4vLSAtSSckKHRvcF9zcmNkaXIpL2V4dCcgLXJwdXJlbGliLnJiIgorLSAgJHJ1YnkgPDwgIi1JJyQodG9wX3NyY2RpcikvbGliJyIKKyAgICRydWJ5IDw8ICItSSckKGV4dG91dCkvJChhcmNoKSciIDw8ICItSSckKGV4dG91dCkvY29tbW9uJyIgaWYgJGV4dG91dAogICAgRU5WWyJSVUJZTElCIl0gPSAiLSIKKyBlbmQKKy0tIAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9ydWJ5LUNWRS0yMDE3LTE0MDY0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvcnVieS1DVkUtMjAxNy0xNDA2NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhlNjkzYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9ydWJ5LUNWRS0yMDE3LTE0MDY0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotRnJvbSA4Zjc4MmZkOGUxODFkOWNmZTkzODdkZWQ0M2E1Y2E5NjkyMjY2Yjg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmxvcmlhbiBGcmFuayA8ZmxvcmlAcGluZy5kZT4KLURhdGU6IFRodSwgMiBNYXIgMjAxNyAxMjoxMjozMyArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggYXJiaXRyYXJ5IGhlYXAgZXhwb3N1cmUgcHJvYmxlbQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTE0MDY0Ci0KLVNpZ25lZC1vZmYtYnk6IE92aWRpdSBQYW5haXQgPG92aWRpdS5wYW5haXRAd2luZHJpdmVyLmNvbT4KLS0tLQotIGV4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuYyB8IDEyICsrKysrKy0tLS0tLQotIGV4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaCB8ICAxIC0KLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuYyBiL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuYwotaW5kZXggZWY4NWJiNy4uYzg4ODE4YyAxMDA2NDQKLS0tLSBhL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuYwotKysrIGIvZXh0L2pzb24vZ2VuZXJhdG9yL2dlbmVyYXRvci5jCi1AQCAtMzA4LDcgKzMwOCw3IEBAIHN0YXRpYyBjaGFyICpmc3RybmR1cChjb25zdCBjaGFyICpwdHIsIHVuc2lnbmVkIGxvbmcgbGVuKSB7Ci0gICBjaGFyICpyZXN1bHQ7Ci0gICBpZiAobGVuIDw9IDApIHJldHVybiBOVUxMOwotICAgcmVzdWx0ID0gQUxMT0NfTihjaGFyLCBsZW4pOwotLSAgbWVtY2NweShyZXN1bHQsIHB0ciwgMCwgbGVuKTsKLSsgIG1lbWNweShyZXN1bHQsIHB0ciwgbGVuKTsKLSAgIHJldHVybiByZXN1bHQ7Ci0gfQotIAotQEAgLTEwNjIsNyArMTA2Miw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfaW5kZW50X3NldChWQUxVRSBzZWxmLCBWQUxVRSBpbmRlbnQpCi0gICAgICAgICB9Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgICBpZiAoc3RhdGUtPmluZGVudCkgcnVieV94ZnJlZShzdGF0ZS0+aW5kZW50KTsKLS0gICAgICAgIHN0YXRlLT5pbmRlbnQgPSBzdHJkdXAoUlNUUklOR19QVFIoaW5kZW50KSk7Ci0rICAgICAgICBzdGF0ZS0+aW5kZW50ID0gZnN0cm5kdXAoUlNUUklOR19QVFIoaW5kZW50KSwgbGVuKTsKLSAgICAgICAgIHN0YXRlLT5pbmRlbnRfbGVuID0gbGVuOwotICAgICB9Ci0gICAgIHJldHVybiBRbmlsOwotQEAgLTExMDAsNyArMTEwMCw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfc3BhY2Vfc2V0KFZBTFVFIHNlbGYsIFZBTFVFIHNwYWNlKQotICAgICAgICAgfQotICAgICB9IGVsc2UgewotICAgICAgICAgaWYgKHN0YXRlLT5zcGFjZSkgcnVieV94ZnJlZShzdGF0ZS0+c3BhY2UpOwotLSAgICAgICAgc3RhdGUtPnNwYWNlID0gc3RyZHVwKFJTVFJJTkdfUFRSKHNwYWNlKSk7Ci0rICAgICAgICBzdGF0ZS0+c3BhY2UgPSBmc3RybmR1cChSU1RSSU5HX1BUUihzcGFjZSksIGxlbik7Ci0gICAgICAgICBzdGF0ZS0+c3BhY2VfbGVuID0gbGVuOwotICAgICB9Ci0gICAgIHJldHVybiBRbmlsOwotQEAgLTExMzYsNyArMTEzNiw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfc3BhY2VfYmVmb3JlX3NldChWQUxVRSBzZWxmLCBWQUxVRSBzcGFjZV9iZWZvcmUpCi0gICAgICAgICB9Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgICBpZiAoc3RhdGUtPnNwYWNlX2JlZm9yZSkgcnVieV94ZnJlZShzdGF0ZS0+c3BhY2VfYmVmb3JlKTsKLS0gICAgICAgIHN0YXRlLT5zcGFjZV9iZWZvcmUgPSBzdHJkdXAoUlNUUklOR19QVFIoc3BhY2VfYmVmb3JlKSk7Ci0rICAgICAgICBzdGF0ZS0+c3BhY2VfYmVmb3JlID0gZnN0cm5kdXAoUlNUUklOR19QVFIoc3BhY2VfYmVmb3JlKSwgbGVuKTsKLSAgICAgICAgIHN0YXRlLT5zcGFjZV9iZWZvcmVfbGVuID0gbGVuOwotICAgICB9Ci0gICAgIHJldHVybiBRbmlsOwotQEAgLTExNzMsNyArMTE3Myw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfb2JqZWN0X25sX3NldChWQUxVRSBzZWxmLCBWQUxVRSBvYmplY3RfbmwpCi0gICAgICAgICB9Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgICBpZiAoc3RhdGUtPm9iamVjdF9ubCkgcnVieV94ZnJlZShzdGF0ZS0+b2JqZWN0X25sKTsKLS0gICAgICAgIHN0YXRlLT5vYmplY3RfbmwgPSBzdHJkdXAoUlNUUklOR19QVFIob2JqZWN0X25sKSk7Ci0rICAgICAgICBzdGF0ZS0+b2JqZWN0X25sID0gZnN0cm5kdXAoUlNUUklOR19QVFIob2JqZWN0X25sKSwgbGVuKTsKLSAgICAgICAgIHN0YXRlLT5vYmplY3RfbmxfbGVuID0gbGVuOwotICAgICB9Ci0gICAgIHJldHVybiBRbmlsOwotQEAgLTEyMDgsNyArMTIwOCw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfYXJyYXlfbmxfc2V0KFZBTFVFIHNlbGYsIFZBTFVFIGFycmF5X25sKQotICAgICAgICAgfQotICAgICB9IGVsc2UgewotICAgICAgICAgaWYgKHN0YXRlLT5hcnJheV9ubCkgcnVieV94ZnJlZShzdGF0ZS0+YXJyYXlfbmwpOwotLSAgICAgICAgc3RhdGUtPmFycmF5X25sID0gc3RyZHVwKFJTVFJJTkdfUFRSKGFycmF5X25sKSk7Ci0rICAgICAgICBzdGF0ZS0+YXJyYXlfbmwgPSBmc3RybmR1cChSU1RSSU5HX1BUUihhcnJheV9ubCksIGxlbik7Ci0gICAgICAgICBzdGF0ZS0+YXJyYXlfbmxfbGVuID0gbGVuOwotICAgICB9Ci0gICAgIHJldHVybiBRbmlsOwotZGlmZiAtLWdpdCBhL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaCBiL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaAotaW5kZXggOTAwYjRkNS4uYzM2N2E2MiAxMDA2NDQKLS0tLSBhL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaAotKysrIGIvZXh0L2pzb24vZ2VuZXJhdG9yL2dlbmVyYXRvci5oCi1AQCAtMSw3ICsxLDYgQEAKLSAjaWZuZGVmIF9HRU5FUkFUT1JfSF8KLSAjZGVmaW5lIF9HRU5FUkFUT1JfSF8KLSAKLS0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPG1hdGguaD4KLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctOTIyNC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctOTIyNC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ4MTM5Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9ydWJ5LUNWRS0yMDE3LTkyMjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1Gcm9tIDY5MDMxM2EwNjFmN2E0ZmE2MTRlYzVjYzgzNjhiNGYyMjg0ZTA1OWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiSy5Lb3Nha28iIDxrb3Nha29Ac29mbmVjLmNvLmpwPgotRGF0ZTogVHVlLCAyMyBNYXkgMjAxNyAxMDoyODo1OCArMDkwMAotU3ViamVjdDogW1BBVENIXSBmaXggIzU3IDogREFUQV9FTlNVUkUoKSBjaGVjayBtdXN0IGJlIGJlZm9yZSBkYXRhIGFjY2VzcwotCi0tLS0KLSByZWdleGVjLmMgfCAgICA1IC0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgZGVsZXRpb25zKC0pCi0KLS0tLSBlbmQgb2Ygb3JpZ2luYWwgaGVhZGVyCi0KLUNWRTogQ1ZFLTIwMTctOTIyNAotCi1Db250ZXh0IG1vZGlmaWVkIHNvIHRoYXQgcGF0Y2ggYXBwbGllcyBmb3IgdmVyc2lvbiAyLjQuMS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+Ci0KLQotZGlmZiAtLWdpdCBhL3JlZ2V4ZWMuYyBiL3JlZ2V4ZWMuYwotaW5kZXggMzVmZWYxMS4uZDRlNTc3ZCAxMDA2NDQKLS0tLSBhL3JlZ2V4ZWMuYwotKysrIGIvcmVnZXhlYy5jCi1AQCAtMTQ3MywxNCArMTQ3Myw5IEBAIG1hdGNoX2F0KHJlZ2V4X3QqIHJlZywgY29uc3QgVUNoYXIqIHN0ciwgY29uc3QgVUNoYXIqIGVuZCwKLSAgICAgICBORVhUOwotCi0gICAgIENBU0UoT1BfRVhBQ1QxKSAgTU9QX0lOKE9QX0VYQUNUMSk7Ci0tI2lmIDAKLSAgICAgICBEQVRBX0VOU1VSRSgxKTsKLSAgICAgICBpZiAoKnAgIT0gKnMpIGdvdG8gZmFpbDsKLSAgICAgICBwKys7IHMrKzsKLS0jZW5kaWYKLS0gICAgICBpZiAoKnAgIT0gKnMrKykgZ290byBmYWlsOwotLSAgICAgIERBVEFfRU5TVVJFKDApOwotLSAgICAgIHArKzsKLSAgICAgICBNT1BfT1VUOwotICAgICAgIGJyZWFrOwotIAotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctOTIyNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctOTIyNi5wYXRjaAppbmRleCAwZjJhNDMwLi44OTQzN2JiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9ydWJ5LUNWRS0yMDE3LTkyMjYucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvcnVieS1DVkUtMjAxNy05MjI2LnBhdGNoCkBAIC0yMCwyMiArMjAsMTMgQEAKIAogLS0tIHJ1YnktMi40LjEub3JpZy9yZWdwYXJzZS5jCiArKysgcnVieS0yLjQuMS9yZWdwYXJzZS5jCi1AQCAtMzY0NCw3ICszNjQ0LDcgQEAgZmV0Y2hfdG9rZW4oT25pZ1Rva2VuKiB0b2ssIFVDaGFyKiogc3JjLAotICAgICAgIGlmIChJU19TWU5UQVhfT1Aoc3luLCBPTklHX1NZTl9PUF9FU0NfT0NUQUwzKSkgewotIAlwcmV2ID0gcDsKLSAJbnVtID0gc2Nhbl91bnNpZ25lZF9vY3RhbF9udW1iZXIoJnAsIGVuZCwgKGMgPT0gJzAnID8gMjozKSwgZW5jKTsKLS0JaWYgKG51bSA8IDApIHJldHVybiBPTklHRVJSX1RPT19CSUdfTlVNQkVSOwotKwlpZiAobnVtIDwgMCB8fCAweGZmIDwgbnVtKSByZXR1cm4gT05JR0VSUl9UT09fQklHX05VTUJFUjsKLSAJaWYgKHAgPT0gcHJldikgeyAgLyogY2FuJ3QgcmVhZCBub3RoaW5nLiAqLwotIAkgIG51bSA9IDA7IC8qIGJ1dCwgaXQncyBub3QgZXJyb3IgKi8KLSAJfQogQEAgLTQ0NTAsNiArNDQ1MCw5IEBAIG5leHRfc3RhdGVfdmFsKENDbGFzc05vZGUqIGNjLCBDQ2xhc3NOb2QKICAgIHN3aXRjaCAoKnN0YXRlKSB7CiAgICBjYXNlIENDU19WQUxVRToKICAgICAgaWYgKCp0eXBlID09IENDVl9TQikgewotKyAgICAgIGlmICgqdnMgPiAweGZmKQorKyAgICAgIGlmICgqZnJvbSA+IDB4ZmYpCiArICAgICAgICAgIHJldHVybiBPTklHRVJSX0lOVkFMSURfQ09ERV9QT0lOVF9WQUxVRTsKICsKLSAgICAgICBCSVRTRVRfU0VUX0JJVF9DSEtEVVAoY2MtPmJzLCAoaW50ICkoKnZzKSk7CisgICAgICAgQklUU0VUX1NFVF9CSVRfQ0hLRFVQKGNjLT5icywgKGludCApKCpmcm9tKSk7CiAgICAgICAgaWYgKElTX05PVF9OVUxMKGFzY19jYykpCi0gCUJJVFNFVF9TRVRfQklUKGFzY19jYy0+YnMsIChpbnQgKSgqdnMpKTsKKyAJQklUU0VUX1NFVF9CSVQoYXNjX2NjLT5icywgKGludCApKCpmcm9tKSk7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9ydWJ5LUNWRS0yMDE3LTkyMjcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9ydWJ5LUNWRS0yMDE3LTkyMjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1ZTdjY2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvcnVieS1DVkUtMjAxNy05MjI3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSA5NjkwZDNhYjFmOWJjZDJkYjhjYmUxZmUzZWU0YTVkYTYwNmI4ODE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIksuS29zYWtvIiA8a29zYWtvQHNvZm5lYy5jby5qcD4KLURhdGU6IFR1ZSwgMjMgTWF5IDIwMTcgMTY6MTU6MzUgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gZml4ICM1OCA6IGFjY2VzcyB0byBpbnZhbGlkIGFkZHJlc3MgYnkgcmVnLT5kbWluIHZhbHVlCi0KLS0tLQotIHJlZ2V4ZWMuYyB8ICAgIDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLS0tLSBlbmQgb2Ygb3JpZ2luYWwgaGVhZGVyCi0KLUNWRTogQ1ZFLTIwMTctOTIyNwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW25vdCBhdXRob3JdCi1TaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS9yZWdleGVjLmMgYi9yZWdleGVjLmMKLWluZGV4IGQ0ZTU3N2QuLjJmYTBmM2QgMTAwNjQ0Ci0tLS0gYS9yZWdleGVjLmMKLSsrKyBiL3JlZ2V4ZWMuYwotQEAgLTMxNTQsNiArMzE1NCw4IEBAIGZvcndhcmRfc2VhcmNoX3JhbmdlKHJlZ2V4X3QqIHJlZywgY29uc3QgVUNoYXIqIHN0ciwgY29uc3QgVUNoYXIqIGVuZCwgVUNoYXIqIHMsCi0gICAgIH0KLSAgICAgZWxzZSB7Ci0gICAgICAgVUNoYXIgKnEgPSBwICsgcmVnLT5kbWluOwotKwotKyAgICAgIGlmIChxID49IGVuZCkgcmV0dXJuIDA7IC8qIGZhaWwgKi8KLSAgICAgICB3aGlsZSAocCA8IHEpIHAgKz0gZW5jbGVuKHJlZy0+ZW5jLCBwLCBlbmQpOwotICAgICB9Ci0gICB9Ci0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvcnVieS1DVkUtMjAxNy05MjI5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvcnVieS1DVkUtMjAxNy05MjI5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTc2NWJmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctOTIyOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLUZyb20gYjY5MDM3MWJiZjk3Nzk0YjRhMWQzZjI5NWQ0ZmI5YThiMDVkNDAyZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJLLktvc2FrbyIgPGtvc2Frb0Bzb2ZuZWMuY28uanA+Ci1EYXRlOiBXZWQsIDI0IE1heSAyMDE3IDEwOjI3OjA0ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCAjNTkgOiBhY2Nlc3MgdG8gaW52YWxpZCBhZGRyZXNzIGJ5IHJlZy0+ZG1heCB2YWx1ZQotCi0tLS0KLSByZWdleGVjLmMgfCAgIDI3ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotLS0tIGVuZCBvZiBvcmlnaW5hbCBoZWFkZXIKLQotQ1ZFOiBDVkUtMjAxNy05MjI5Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbm90IGF1dGhvcl0KLVNpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KLQotZGlmZiAtLWdpdCBhL3JlZ2V4ZWMuYyBiL3JlZ2V4ZWMuYwotaW5kZXggNDliY2M1MC4uYzA2MjZlZiAxMDA2NDQKLS0tLSBhL3JlZ2V4ZWMuYwotKysrIGIvcmVnZXhlYy5jCi1AQCAtMzc1NiwxOCArMzc1NiwyNSBAQCBmb3J3YXJkX3NlYXJjaF9yYW5nZShyZWdleF90KiByZWcsIGNvbnN0Ci0gICAgIH0KLSAgICAgZWxzZSB7Ci0gICAgICAgaWYgKHJlZy0+ZG1heCAhPSBPTklHX0lORklOSVRFX0RJU1RBTkNFKSB7Ci0tCSpsb3cgPSBwIC0gcmVnLT5kbWF4OwotLQlpZiAoKmxvdyA+IHMpIHsKLS0JICAqbG93ID0gb25pZ2VuY19nZXRfcmlnaHRfYWRqdXN0X2NoYXJfaGVhZF93aXRoX3ByZXYocmVnLT5lbmMsIHMsCi0tCQkJCQkJCSAgICAgICpsb3csIGVuZCwgKGNvbnN0IFVDaGFyKiogKWxvd19wcmV2KTsKLS0JICBpZiAobG93X3ByZXYgJiYgSVNfTlVMTCgqbG93X3ByZXYpKQotLQkgICAgKmxvd19wcmV2ID0gb25pZ2VuY19nZXRfcHJldl9jaGFyX2hlYWQocmVnLT5lbmMsCi0tCQkJCQkJICAgKHBwcmV2ID8gcHByZXYgOiBzKSwgKmxvdywgZW5kKTsKLSsgICAgICAgIGlmIChwIC0gc3RyIDwgcmVnLT5kbWF4KSB7Ci0rICAgICAgICAgICpsb3cgPSAoVUNoYXIqIClzdHI7Ci0rICAgICAgICAgIGlmIChsb3dfcHJldikKLSsgICAgICAgICAgICAqbG93X3ByZXYgPSBvbmlnZW5jX2dldF9wcmV2X2NoYXJfaGVhZChyZWctPmVuYywgc3RyLCAqbG93LCBlbmQpOwotIAl9Ci0gCWVsc2UgewotLQkgIGlmIChsb3dfcHJldikKLS0JICAgICpsb3dfcHJldiA9IG9uaWdlbmNfZ2V0X3ByZXZfY2hhcl9oZWFkKHJlZy0+ZW5jLAotLQkJCQkJICAgICAgIChwcHJldiA/IHBwcmV2IDogc3RyKSwgKmxvdywgZW5kKTsKLSsgICAgICAgICAgKmxvdyA9IHAgLSByZWctPmRtYXg7Ci0rICAgICAgICAgIGlmICgqbG93ID4gcykgewotKyAgICAgICAgICAgICpsb3cgPSBvbmlnZW5jX2dldF9yaWdodF9hZGp1c3RfY2hhcl9oZWFkX3dpdGhfcHJldihyZWctPmVuYywgcywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmxvdywgZW5kLCAoY29uc3QgVUNoYXIqKiApbG93X3ByZXYpOwotKyAgICAgICAgICAgIGlmIChsb3dfcHJldiAmJiBJU19OVUxMKCpsb3dfcHJldikpCi0rICAgICAgICAgICAgICAqbG93X3ByZXYgPSBvbmlnZW5jX2dldF9wcmV2X2NoYXJfaGVhZChyZWctPmVuYywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcHJldiA/IHBwcmV2IDogcyksICpsb3csIGVuZCk7Ci0rICAgICAgICAgIH0KLSsgICAgICAgICAgZWxzZSB7Ci0rICAgICAgICAgICAgaWYgKGxvd19wcmV2KQotKyAgICAgICAgICAgICAgKmxvd19wcmV2ID0gb25pZ2VuY19nZXRfcHJldl9jaGFyX2hlYWQocmVnLT5lbmMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHByZXYgPyBwcHJldiA6IHN0ciksICpsb3csIGVuZCk7Ci0rICAgICAgICAgIH0KLSAJfQotICAgICAgIH0KLSAgICAgfQotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi40LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkMjdhYzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1yZXF1aXJlIHJ1YnkuaW5jCi0KLVNSQ19VUkkgKz0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydWJ5LUNWRS0yMDE3LTkyMjQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy05MjI2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1YnktQ1ZFLTIwMTctOTIyNy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydWJ5LUNWRS0yMDE3LTkyMjgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy05MjI5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1YnktQ1ZFLTIwMTctMTQwNjQucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3ODJiY2E1NjJlNDc0ZGQyNTk1NmRkMDAxN2Q5MjY3NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhMzMwZTEwZDVjYjVlNTNiM2EwMDc4MzI2YzU3MzE4ODhiYjU1ZTMyYzRhYmZlYjI3ZDllN2Y4ZTVkMDAwMjUwIgotCi0jIGl0J3MgdW5rbm93biB0byBjb25maWd1cmUgc2NyaXB0LCBidXQgdGhlbiBwYXNzZWQgdG8gZXh0Y29uZi5yYgotIyBtYXliZSBpdCdzIG5vdCByZWFsbHkgbmVlZGVkIGFzIHdlJ3JlIGhhcmRjb2RpbmcgdGhlIHJlc3VsdCB3aXRoCi0jIDAwMDEtc29ja2V0LWV4dGNvbmYtaGFyZGNvZGUtd2lkZS1nZXRhZGRyLWluZm8tdGVzdC1vdXRjby5wYXRjaAotVU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUICs9ICItLWVuYWJsZS13aWRlLWdldGFkZHJpbmZvIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJRyArPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS13aXRoLXZhbGdyaW5kPXllcywgLS13aXRoLXZhbGdyaW5kPW5vLCB2YWxncmluZCIKLVBBQ0tBR0VDT05GSUdbZ3BtXSA9ICItLXdpdGgtZ21wPXllcywgLS13aXRoLWdtcD1ubywgZ21wIgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICIsLS1lbmFibGUtd2lkZS1nZXRhZGRyaW5mbywiCi0KLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hY2xvY2FsIgotCi1FWFRSQV9PRUNPTkYgPSAiXAotICAgIC0tZGlzYWJsZS12ZXJzaW9uZWQtcGF0aHMgXAotICAgIC0tZGlzYWJsZS1ycGF0aCBcCi0gICAgLS1kaXNhYmxlLWR0cmFjZSBcCi0gICAgLS1lbmFibGUtc2hhcmVkIFwKLSAgICAtLWVuYWJsZS1sb2FkLXJlbGF0aXZlIFwKLSIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LXJpLWRvY3MgJHtQTn0tcmRvYyIKLQotU1VNTUFSWV8ke1BOfS1yaS1kb2NzID0gInJpIChSdWJ5IEludGVyYWN0aXZlKSBkb2N1bWVudGF0aW9uIGZvciB0aGUgUnVieSBzdGFuZGFyZCBsaWJyYXJ5IgotUkRFUEVORFNfJHtQTn0tcmktZG9jcyA9ICIke1BOfSIKLUZJTEVTXyR7UE59LXJpLWRvY3MgKz0gIiR7ZGF0YWRpcn0vcmkiCi0KLVNVTU1BUllfJHtQTn0tcmRvYyA9ICJSRG9jIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIGZyb20gUnVieSBzb3VyY2UiCi1SREVQRU5EU18ke1BOfS1yZG9jID0gIiR7UE59IgotRklMRVNfJHtQTn0tcmRvYyArPSAiJHtsaWJkaXJ9L3J1YnkvKi9yZG9jICR7YmluZGlyfS9yZG9jIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9ydWJ5Z2VtcyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieV8yLjUuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhYzdmMmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieV8yLjUuMC5iYgpAQCAtMCwwICsxLDQ5IEBACityZXF1aXJlIHJ1YnkuaW5jCisKK1NSQ19VUkkgKz0gIiBcCisgICAgICAgICAgIGZpbGU6Ly9ydWJ5LUNWRS0yMDE3LTkyMjYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy05MjI4LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjQ3MTFmODU2ZmUxNGRlMjIyYjlkYTNkM2I4ZWZhODkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDZlNmYzNjMwZjE4ODhlYjY1M2IxNWZhODExZDc3YjViMWRmNmZkN2EzYWY0MzZiMzQzY2ZlNGY0NTAzZjJhYiIKKworIyBpdCdzIHVua25vd24gdG8gY29uZmlndXJlIHNjcmlwdCwgYnV0IHRoZW4gcGFzc2VkIHRvIGV4dGNvbmYucmIKKyMgbWF5YmUgaXQncyBub3QgcmVhbGx5IG5lZWRlZCBhcyB3ZSdyZSBoYXJkY29kaW5nIHRoZSByZXN1bHQgd2l0aAorIyAwMDAxLXNvY2tldC1leHRjb25mLWhhcmRjb2RlLXdpZGUtZ2V0YWRkci1pbmZvLXRlc3Qtb3V0Y28ucGF0Y2gKK1VOS05PV05fQ09ORklHVVJFX1dISVRFTElTVCArPSAiLS1lbmFibGUtd2lkZS1nZXRhZGRyaW5mbyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUcgKz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZD15ZXMsIC0td2l0aC12YWxncmluZD1ubywgdmFsZ3JpbmQiCitQQUNLQUdFQ09ORklHW2dtcF0gPSAiLS13aXRoLWdtcD15ZXMsIC0td2l0aC1nbXA9bm8sIGdtcCIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLC0tZW5hYmxlLXdpZGUtZ2V0YWRkcmluZm8sIgorCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YWNsb2NhbCIKKworRVhUUkFfT0VDT05GID0gIlwKKyAgICAtLWRpc2FibGUtdmVyc2lvbmVkLXBhdGhzIFwKKyAgICAtLWRpc2FibGUtcnBhdGggXAorICAgIC0tZGlzYWJsZS1kdHJhY2UgXAorICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgLS1lbmFibGUtbG9hZC1yZWxhdGl2ZSBcCisiCisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1yaS1kb2NzICR7UE59LXJkb2MiCisKK1NVTU1BUllfJHtQTn0tcmktZG9jcyA9ICJyaSAoUnVieSBJbnRlcmFjdGl2ZSkgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIFJ1Ynkgc3RhbmRhcmQgbGlicmFyeSIKK1JERVBFTkRTXyR7UE59LXJpLWRvY3MgPSAiJHtQTn0iCitGSUxFU18ke1BOfS1yaS1kb2NzICs9ICIke2RhdGFkaXJ9L3JpIgorCitTVU1NQVJZXyR7UE59LXJkb2MgPSAiUkRvYyBkb2N1bWVudGF0aW9uIGdlbmVyYXRvciBmcm9tIFJ1Ynkgc291cmNlIgorUkRFUEVORFNfJHtQTn0tcmRvYyA9ICIke1BOfSIKK0ZJTEVTXyR7UE59LXJkb2MgKz0gIiR7bGliZGlyfS9ydWJ5LyovcmRvYyAke2JpbmRpcn0vcmRvYyIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vcnVieWdlbXMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMKaW5kZXggNTBjMGExYS4uMzA3ZmViNyAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzCkBAIC00Myw3ICs0Myw3IEBACiAJZmkKIH0KIAotaWYgWyAteiAiJHBpX2RpciIgXTsgdGhlbgoraWYgISBbIC1kICRwaV9kaXIgXTsgdGhlbgogCXJlbW92ZV9yY3NkX2xpbmsKIAlleGl0IDAKIGZpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0c18xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0c18xLjAuYmIKaW5kZXggMzFjOThlYy4uODViM2ZjOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHNfMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzXzEuMC5iYgpAQCAtMSw2ICsxLDYgQEAKIFNVTU1BUlkgPSAiUnVucyBwb3N0aW5zdGFsbCBzY3JpcHRzIG9uIGZpcnN0IGJvb3Qgb2YgdGhlIHRhcmdldCBkZXZpY2UiCiBTRUNUSU9OID0gImRldmVsIgotUFIgPSAicjkiCitQUiA9ICJyMTAiCiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzL2ZpeC1jb21wYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzL2ZpeC1jb21wYXQucGF0Y2gKaW5kZXggZDU0NTE0Ni4uMGNlN2I0ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zcXVhc2hmcy10b29scy9zcXVhc2hmcy10b29scy9maXgtY29tcGF0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHMvZml4LWNvbXBhdC5wYXRjaApAQCAtMjMsNyArMjMsNyBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIHNxdWFzaGZzLXRvb2xzLm9yaWcvbWtzcXVhc2hmcy5jCiArKysgc3F1YXNoZnMtdG9vbHMvbWtzcXVhc2hmcy5jCi1AQCAtMTI4Niw2ICsxMjg2LDEwIEBAIHZvaWQgd3JpdGVfZGlyKHNxdWFzaGZzX2lub2RlICppbm9kZSwgc3QKK0BAIC0xMjYxLDYgKzEyNjEsMTAgQEAgdm9pZCB3cml0ZV9kaXIoc3F1YXNoZnNfaW5vZGUgKmlub2RlLCBzdAogIAkJZGlyX3NpemUgKyAzLCBkaXJlY3RvcnlfYmxvY2ssIGRpcmVjdG9yeV9vZmZzZXQsIE5VTEwsIE5VTEwsCiAgCQlkaXIsIDApOwogIApAQCAtNTAsOSArNTAsOSBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIHNxdWFzaGZzLXRvb2xzLm9yaWcvdW5zcXVhc2hmcy5jCiArKysgc3F1YXNoZnMtdG9vbHMvdW5zcXVhc2hmcy5jCi1AQCAtMzgsNiArMzgsMTAgQEAKLSAjaW5jbHVkZSA8bGltaXRzLmg+Ci0gI2luY2x1ZGUgPGN0eXBlLmg+CitAQCAtNDIsNiArNDIsMTAgQEAKKyAjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgorICNlbmRpZgogIAogKyNpZm5kZWYgRk5NX0VYVE1BVENICiArI2RlZmluZSBGTk1fRVhUTUFUQ0ggMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zcXVhc2hmcy10b29scy9zcXVhc2hmcy10b29sc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzX2dpdC5iYgppbmRleCAwZjk5MTcwLi5hOGJhY2E1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzX2dpdC5iYgpAQCAtMTYsNyArMTYsNyBAQAogICAgICAgICAgICBmaWxlOi8vc3F1YXNoZnMtdG9vbHMtNC4zLXN5c21hY3Jvcy5wYXRjaDtzdHJpcGxldmVsPTIgXAogICAgICAgICAgICBmaWxlOi8vZml4LWNvbXBhdC5wYXRjaCBcCiAiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIFNSQ19VUklbbHptYS5tZDVzdW1dID0gIjI5ZDVmZmQwM2E1YTNlNTFhZWY2YTc0ZTllYWZiNzU5IgogU1JDX1VSSVtsem1hLnNoYTI1NnN1bV0gPSAiYzkzNWZkMDRkZDhlMGU4YzY4OGEzMDc4ZjM2NzVkNjk5Njc5YTkwYmU4MWMxMjY4NjgzN2UwODgwYWEwZmExZSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL01ha2VmaWxlLXB0ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL01ha2VmaWxlLXB0ZXN0LnBhdGNoCmluZGV4IDk3YmNjOTAuLmExMmY0YzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9NYWtlZmlsZS1wdGVzdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvTWFrZWZpbGUtcHRlc3QucGF0Y2gKQEAgLTE0LDIzICsxNCwyMyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA2MWQ2NDI1Li42Mzg3YzI0IDEwMDY0NAoraW5kZXggNWYwYWVjNC4uOGVhYWNjNiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNDEsNyArNDEsNyBAQCBBQ19DT1BZUklHSFQoW0NvcHlyaWdodCAoQykgMTk5OS1dY29weXJpZ2h0X3llYXJbIFRoZSBzdHJhY2UgZGV2ZWxvcGVycy5dKQorQEAgLTQyLDcgKzQyLDcgQEAgQUNfQ09QWVJJR0hUKFtDb3B5cmlnaHQgKGMpIDE5OTktXWNvcHlyaWdodF95ZWFyWyBUaGUgc3RyYWNlIGRldmVsb3BlcnMuXSkKICBBQ19DT05GSUdfU1JDRElSKFtzdHJhY2UuY10pCiAgQUNfQ09ORklHX0FVWF9ESVIoWy5dKQogIEFDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCi0tQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbiBub3N0ZGluYyBkaXN0LXh6IHNpbGVudC1ydWxlcyBwYXJhbGxlbC10ZXN0c10pCi0rQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbiBub3N0ZGluYyBkaXN0LXh6IHNpbGVudC1ydWxlcyBzZXJpYWwtdGVzdHNdKQotIEFNX0VYVFJBX1JFQ1VSU0lWRV9UQVJHRVRTKFtjaGVjay12YWxncmluZF0pCistQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbiBub3N0ZGluYyBkaXN0LXh6IHNpbGVudC1ydWxlcyBwYXJhbGxlbC10ZXN0cyAxLjEzXSkKKytBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduIG5vc3RkaW5jIGRpc3QteHogc2lsZW50LXJ1bGVzIHNlcmlhbC10ZXN0cyAxLjEzXSkKICBBTV9NQUlOVEFJTkVSX01PREUKICBBQ19DQU5PTklDQUxfSE9TVAorIAogZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDVhYTdmODkuLmE1NWEzNTUgMTAwNjQ0CitpbmRleCBiNGJhMjJhLi41ODM2NDM4IDEwMDY0NAogLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KICsrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMzc5LDMgKzM3OSwyMSBAQCBjbGVhbi1sb2NhbC1jaGVjazoKK0BAIC00MDgsMyArNDA4LDIxIEBAIEJVSUxUX1NPVVJDRVMgPSBrc3lzZW50LmgKICBDTEVBTkZJTEVTID0ga3N5c2VudC5oCiAgCiAgaW5jbHVkZSAuLi9zY25vLmFtCkBAIC01Miw2ICs1MiwzIEBACiArCQlzZWQgLWkgLWUgJ3MvJCR7c3JjZGlyPS59Ly4vZycgJChERVNURElSKS8kKFRFU1RESVIpLyQkZmlsZTsgXAogKwlkb25lCiArCWZvciBpIGluIG5ldCBzY21fcmlnaHRzLWZkIHJ0X3NpZ2FjdGlvbjsgZG8gc2VkIC1pIC1lICdzLyQkc3JjZGlyLy4vZycgJChERVNURElSKS8kKFRFU1RESVIpLyQkaS50ZXN0OyBkb25lCi0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNC4xOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZV80LjE4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjI4OTFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZV80LjE4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotU1VNTUFSWSA9ICJTeXN0ZW0gY2FsbCB0cmFjaW5nIHRvb2wiCi1IT01FUEFHRSA9ICJodHRwOi8vc3RyYWNlLnNvdXJjZWZvcmdlLm5ldCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjEzMmI0ZDJhZGZjY2M2M2RhNDEzOWE2MDkzNjc3MTEiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3N0cmFjZS9zdHJhY2UtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtZ2l0LXZlcnNpb24tZ2VuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21vcmUtcm9idXN0LXRlc3QtZm9yLW0zMi1teDMyLWNvbXBpbGUtc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly91cGRhdGUtZ2F3ay1wYXRocy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1wdGVzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2hlbi11c2luZy1ub24tZ2xpYmMtbGliYy1pbXBsZW1lbnRhdGlvbi1vLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21pcHMtU0lHRU1ULnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY2Fwcy1hYmJyZXYuYXdrLWZpeC1nYXdrLXMtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLXNpZ2FjdGlvbi1DaGVjay1mb3ItbWlwcy1hbmQtYWxwaGEtYmVmb3JlLXVzaW4ucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzNTc5YjMyNjZiYjA5NmNlYmFlZmJlMmNkYjFhM2E3OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4OWFkODg3YzFlNjIyNmJkYmNhOGRhMzFkNTg5Y2FkZWE0YmUwNzQ0YjE0MmViNDdiNzY4MDg2YzkzN2ZjYTA4IgotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdCBibHVldG9vdGgKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgY29yZXV0aWxzIGdyZXAgZ2F3ayBzZWQiCi0KLVBBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAiXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbYmx1ZXpdID0gImFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9eWVzLGFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9bm8sJHtCTFVFWn0iCi1QQUNLQUdFQ09ORklHW2xpYnVud2luZF0gPSAiLS13aXRoLWxpYnVud2luZCwtLXdpdGhvdXQtbGlidW53aW5kLGxpYnVud2luZCIKLQotVEVTVERJUiA9ICJ0ZXN0cyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBXZSBkb24ndCBzaGlwIHN0cmFjZS1ncmFwaCBoZXJlIGJlY2F1c2UgaXQgbmVlZHMgcGVybAotCXJtICR7RH0ke2JpbmRpcn0vc3RyYWNlLWdyYXBoCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGJ1aWxkdGVzdC1URVNUUwotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCW9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBpbnN0YWxsLXB0ZXN0IEJVSUxERElSPSR7Qn0gREVTVERJUj0ke0R9JHtQVEVTVF9QQVRIfSBURVNURElSPSR7VEVTVERJUn0KLQlzZWQgLWkgLWUgJy9ec3JjL3Mvc3RyYWNlLipbMS05XS9wdGVzdC8nIFwKLQkgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAotCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCi0JICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCi0JICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAotCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAotCSAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKLQkgICAgLWUgJy9eREVCX0NIQU5HRUxPR1RJTUUvZCcgXAotCSAgICAtZSAnL15SUE1fQ0hBTkdFTE9HVElNRS9kJyBcCi0JJHtEfS8ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi1UT09MQ0hBSU4gPSAiZ2NjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzQuMjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNC4yMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjljMTJmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzQuMjAuYmIKQEAgLTAsMCArMSw1OSBAQAorU1VNTUFSWSA9ICJTeXN0ZW0gY2FsbCB0cmFjaW5nIHRvb2wiCitIT01FUEFHRSA9ICJodHRwOi8vc3RyYWNlLmlvIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMTMyYjRkMmFkZmNjYzYzZGE0MTM5YTYwOTM2NzcxMSIKKworU1JDX1VSSSA9ICJodHRwczovL3N0cmFjZS5pby9maWxlcy8ke1BWfS9zdHJhY2UtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtZ2l0LXZlcnNpb24tZ2VuLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21vcmUtcm9idXN0LXRlc3QtZm9yLW0zMi1teDMyLWNvbXBpbGUtc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly91cGRhdGUtZ2F3ay1wYXRocy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1wdGVzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2hlbi11c2luZy1ub24tZ2xpYmMtbGliYy1pbXBsZW1lbnRhdGlvbi1vLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21pcHMtU0lHRU1ULnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY2Fwcy1hYmJyZXYuYXdrLWZpeC1nYXdrLXMtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLXNpZ2FjdGlvbi1DaGVjay1mb3ItbWlwcy1hbmQtYWxwaGEtYmVmb3JlLXVzaW4ucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmMjI3MWFiMGZhYzQ5ZWJlZTljYmQ3ZjM0NjkyMjdjYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1YmYzMTQ4ZGQxNzMwNmE0MjU2NmY3ZGExNzM2OGZkZDc4MWFmYTE0N2RiMDVlYTYzYTRjYTJiNTBmNThjNTIzIgorCitpbmhlcml0IGF1dG90b29scyBwdGVzdCBibHVldG9vdGgKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgY29yZXV0aWxzIGdyZXAgZ2F3ayBzZWQiCisKK1BBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAiXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCisiCisKK1BBQ0tBR0VDT05GSUdbYmx1ZXpdID0gImFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9eWVzLGFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9bm8sJHtCTFVFWn0iCitQQUNLQUdFQ09ORklHW2xpYnVud2luZF0gPSAiLS13aXRoLWxpYnVud2luZCwtLXdpdGhvdXQtbGlidW53aW5kLGxpYnVud2luZCIKKworVEVTVERJUiA9ICJ0ZXN0cyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBXZSBkb24ndCBzaGlwIHN0cmFjZS1ncmFwaCBoZXJlIGJlY2F1c2UgaXQgbmVlZHMgcGVybAorCXJtICR7RH0ke2JpbmRpcn0vc3RyYWNlLWdyYXBoCit9CisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGJ1aWxkdGVzdC1URVNUUworfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBpbnN0YWxsLXB0ZXN0IEJVSUxERElSPSR7Qn0gREVTVERJUj0ke0R9JHtQVEVTVF9QQVRIfSBURVNURElSPSR7VEVTVERJUn0KKwlzZWQgLWkgLWUgJy9ec3JjL3Mvc3RyYWNlLipbMS05XS9wdGVzdC8nIFwKKwkgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAorCSAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKwkgICAgLWUgJy9eREVCX0NIQU5HRUxPR1RJTUUvZCcgXAorCSAgICAtZSAnL15SUE1fQ0hBTkdFTE9HVElNRS9kJyBcCisJJHtEfS8ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCitUT09MQ0hBSU4gPSAiZ2NjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb24vQ1ZFLTIwMTctOTgwMC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uL0NWRS0yMDE3LTk4MDAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1OTljMmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb24vQ1ZFLTIwMTctOTgwMC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBACi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXIxODA0NjkxIHwgZGFuaWVsc2ggfCAyMDE3LTA4LTEwIDExOjE0OjEzIC0wNzAwIChUaHUsIDEwIEF1ZyAyMDE3KSB8IDE4IGxpbmVzCi0KLUZpeCBDVkUtMjAxNy05ODAwLgotCi1TZWU6IGh0dHBzOi8vc3VidmVyc2lvbi5hcGFjaGUub3JnL3NlY3VyaXR5L0NWRS0yMDE3LTA4MDAtYWR2aXNvcnkudHh0Ci0KLSogc3VidmVyc2lvbi9saWJzdm5fcmFfc3ZuL2NsaWVudC5jCi0gIChzdm5fY3R5cGUuaCk6IEluY2x1ZGUuCi0gIChmaW5kX3R1bm5lbF9hZ2VudCk6IFBhc3MgYSAiLS0iIGVuZC1vZi1vcHRpb25zIGd1YXJkIHRvIHNzaC4KLSAgICBFeHBlY3QgdGhlICdob3N0aW5mbycgcGFyYW1ldGVyIHRvIGJlIFVSSS1kZWNvZGVkLgotICAoaXNfdmFsaWRfaG9zdGluZm8pOiBOZXcuCi0gIChyYV9zdm5fb3Blbik6IFZhbGlkYXRlIHRoZSBob3N0bmFtZSBiZWZvcmUgdXNpbmcgaXQuCi0KLSogc3VidmVyc2lvbi9saWJzdm5fc3Vici9jb25maWdfZmlsZS5jCi0gIChzdm5fY29uZmlnX2Vuc3VyZSk6IFVwZGF0ZSB0aGUgZXhhbXBsZSBjb25maWd1cmF0aW9uIGxpa2V3aXNlLgotCi1QYXRjaCBieTogcGhpbGlwCi1SZXZpZXcgYnk6IGRhbmllbHNoCi0gICAgICAgICAgIHN0c3AKLSAgICAgICAgICAgYXN0aWVnZXIgKGVhcmxpZXIgdmVyc2lvbikKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotaHR0cDovL3N2bi5hcGFjaGUub3JnL3ZpZXd2Yz92aWV3PXJldmlzaW9uJmFtcDtzb3J0Ynk9cmV2JmFtcDtyZXZpc2lvbj0xODA0NjkxCi0KLUNWRTogQ1ZFLTIwMTctOTgwMAotCi1TaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotSW5kZXg6IHN1YnZlcnNpb24vbGlic3ZuX3N1YnIvY29uZmlnX2ZpbGUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHN1YnZlcnNpb24vbGlic3ZuX3N1YnIvY29uZmlnX2ZpbGUuYwkocmV2aXNpb24gMTgwNDY5MCkKLSsrKyBzdWJ2ZXJzaW9uL2xpYnN2bl9zdWJyL2NvbmZpZ19maWxlLmMJKHJldmlzaW9uIDE4MDQ2OTEpCi1AQCAtMTQ0OCwxMiArMTQ0OCwxMiBAQAotICAgICAgICAgIiMjIyBwYXNzZWQgdG8gdGhlIHR1bm5lbCBhZ2VudCBhcyA8dXNlcj5APGhvc3RuYW1lPi4pICBJZiB0aGUiICAgICAgTkwKLSAgICAgICAgICIjIyMgYnVpbHQtaW4gc3NoIHNjaGVtZSB3ZXJlIG5vdCBwcmVkZWZpbmVkLCBpdCBjb3VsZCBiZSBkZWZpbmVkIiAgIE5MCi0gICAgICAgICAiIyMjIGFzOiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTAotLSAgICAgICAgIiMgc3NoID0gJFNWTl9TU0ggc3NoIC1xIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkwKLSsgICAgICAgICIjIHNzaCA9ICRTVk5fU1NIIHNzaCAtcSAtLSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5MCi0gICAgICAgICAiIyMjIElmIHlvdSB3YW50ZWQgdG8gZGVmaW5lIGEgbmV3ICdyc2gnIHNjaGVtZSwgdG8gYmUgdXNlZCB3aXRoIiAgICBOTAotICAgICAgICAgIiMjIyAnc3ZuK3JzaDonIFVSTHMsIHlvdSBjb3VsZCBkbyBzbyBhcyBmb2xsb3dzOiIgICAgICAgICAgICAgICAgICAgTkwKLS0gICAgICAgICIjIHJzaCA9IHJzaCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5MCi0rICAgICAgICAiIyByc2ggPSByc2ggLS0iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTAotICAgICAgICAgIiMjIyBPciwgaWYgeW91IHdhbnRlZCB0byBzcGVjaWZ5IGEgZnVsbCBwYXRoIGFuZCBhcmd1bWVudHM6IiAgICAgICAgTkwKLS0gICAgICAgICIjIHJzaCA9IC9wYXRoL3RvL3JzaCAtbCBteXVzZXJuYW1lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5MCi0rICAgICAgICAiIyByc2ggPSAvcGF0aC90by9yc2ggLWwgbXl1c2VybmFtZSAtLSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTAotICAgICAgICAgIiMjIyBPbiBXaW5kb3dzLCBpZiB5b3UgYXJlIHNwZWNpZnlpbmcgYSBmdWxsIHBhdGggdG8gYSBjb21tYW5kLCIgICAgTkwKLSAgICAgICAgICIjIyMgdXNlIGEgZm9yd2FyZCBzbGFzaCAoLykgb3IgYSBwYWlyZWQgYmFja3NsYXNoIChcXFxcKSBhcyB0aGUiICAgIE5MCi0gICAgICAgICAiIyMjIHBhdGggc2VwYXJhdG9yLiAgQSBzaW5nbGUgYmFja3NsYXNoIHdpbGwgYmUgdHJlYXRlZCBhcyBhbiIgICAgICBOTAotSW5kZXg6IHN1YnZlcnNpb24vbGlic3ZuX3JhX3N2bi9jbGllbnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHN1YnZlcnNpb24vbGlic3ZuX3JhX3N2bi9jbGllbnQuYwkocmV2aXNpb24gMTgwNDY5MCkKLSsrKyBzdWJ2ZXJzaW9uL2xpYnN2bl9yYV9zdm4vY2xpZW50LmMJKHJldmlzaW9uIDE4MDQ2OTEpCi1AQCAtNDYsNiArNDYsNyBAQAotICNpbmNsdWRlICJzdm5fcHJvcHMuaCIKLSAjaW5jbHVkZSAic3ZuX21lcmdlaW5mby5oIgotICNpbmNsdWRlICJzdm5fdmVyc2lvbi5oIgotKyNpbmNsdWRlICJzdm5fY3R5cGUuaCIKLSAKLSAjaW5jbHVkZSAic3ZuX3ByaXZhdGVfY29uZmlnLmgiCi0gCi1AQCAtMzk4LDcgKzM5OSw3IEBACi0gICAgICAgICogdmVyc2lvbnMgaGF2ZSBpdCB0b28uIElmIHRoZSB1c2VyIGlzIHVzaW5nIHNvbWUgb3RoZXIgc3NoCi0gICAgICAgICogaW1wbGVtZW50YXRpb24gdGhhdCBkb2Vzbid0IGFjY2VwdCBpdCwgdGhleSBjYW4gb3ZlcnJpZGUgaXQKLSAgICAgICAgKiBpbiB0aGUgW3R1bm5lbHNdIHNlY3Rpb24gb2YgdGhlIGNvbmZpZy4gKi8KLS0gICAgICB2YWwgPSAiJFNWTl9TU0ggc3NoIC1xIjsKLSsgICAgICB2YWwgPSAiJFNWTl9TU0ggc3NoIC1xIC0tIjsKLSAgICAgfQotIAotICAgaWYgKCF2YWwgfHwgISp2YWwpCi1AQCAtNDQzLDcgKzQ0NCw3IEBACi0gICBmb3IgKG4gPSAwOyBjbWRfYXJndltuXSAhPSBOVUxMOyBuKyspCi0gICAgIGFyZ3Zbbl0gPSBjbWRfYXJndltuXTsKLSAKLS0gIGFyZ3ZbbisrXSA9IHN2bl9wYXRoX3VyaV9kZWNvZGUoaG9zdGluZm8sIHBvb2wpOwotKyAgYXJndltuKytdID0gaG9zdGluZm87Ci0gICBhcmd2W24rK10gPSAic3Zuc2VydmUiOwotICAgYXJndltuKytdID0gIi10IjsKLSAgIGFyZ3Zbbl0gPSBOVUxMOwotQEAgLTgxMSw3ICs4MTIsMzMgQEAKLSB9Ci0gCi0gCi0rLyogQSBzaW1wbGUgd2hpdGVsaXN0IHRvIGVuc3VyZSB0aGUgZm9sbG93aW5nIGFyZSB2YWxpZDoKLSsgKiAgIHVzZXJAc2VydmVyCi0rICogICBbOjoxXToyMgotKyAqICAgc2VydmVyLW5hbWUKLSsgKiAgIHNlcnZlcl9uYW1lCi0rICogICAxMjcuMC4wLjEKLSsgKiB3aXRoIGFuIGV4dHJhIHJlc3RyaWN0aW9uIHRoYXQgYSBsZWFkaW5nICctJyBpcyBpbnZhbGlkLgotKyAqLwotK3N0YXRpYyBzdm5fYm9vbGVhbl90Ci0raXNfdmFsaWRfaG9zdGluZm8oY29uc3QgY2hhciAqaG9zdGluZm8pCi0rewotKyAgY29uc3QgY2hhciAqcCA9IGhvc3RpbmZvOwotIAotKyAgaWYgKHBbMF0gPT0gJy0nKQotKyAgICByZXR1cm4gRkFMU0U7Ci0rCi0rICB3aGlsZSAoKnApCi0rICAgIHsKLSsgICAgICBpZiAoIXN2bl9jdHlwZV9pc2FsbnVtKCpwKSAmJiAhc3RyY2hyKCI6Li1fW11AIiwgKnApKQotKyAgICAgICAgcmV0dXJuIEZBTFNFOwotKwotKyAgICAgICsrcDsKLSsgICAgfQotKwotKyAgcmV0dXJuIFRSVUU7Ci0rfQotKwotIHN0YXRpYyBzdm5fZXJyb3JfdCAqcmFfc3ZuX29wZW4oc3ZuX3JhX3Nlc3Npb25fdCAqc2Vzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKipjb3JyZWN0ZWRfdXJsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXJsLAotQEAgLTg0NCw4ICs4NzEsMTggQEAKLSAgICAgICAgICAgfHwgKGNhbGxiYWNrcy0+Y2hlY2tfdHVubmVsX2Z1bmMgJiYgY2FsbGJhY2tzLT5vcGVuX3R1bm5lbF9mdW5jCi0gICAgICAgICAgICAgICAmJiAhY2FsbGJhY2tzLT5jaGVja190dW5uZWxfZnVuYyhjYWxsYmFja3MtPnR1bm5lbF9iYXRvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1bm5lbCkpKSkKLS0gICAgU1ZOX0VSUihmaW5kX3R1bm5lbF9hZ2VudCh0dW5uZWwsIHVyaS5ob3N0aW5mbywgJnR1bm5lbF9hcmd2LCBjb25maWcsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3Bvb2wpKTsKLSsgICAgewotKyAgICAgIGNvbnN0IGNoYXIgKmRlY29kZWRfaG9zdGluZm87Ci0rCi0rICAgICAgZGVjb2RlZF9ob3N0aW5mbyA9IHN2bl9wYXRoX3VyaV9kZWNvZGUodXJpLmhvc3RpbmZvLCByZXN1bHRfcG9vbCk7Ci0rCi0rICAgICAgaWYgKCFpc192YWxpZF9ob3N0aW5mbyhkZWNvZGVkX2hvc3RpbmZvKSkKLSsgICAgICAgIHJldHVybiBzdm5fZXJyb3JfY3JlYXRlZihTVk5fRVJSX0JBRF9VUkwsIE5VTEwsIF8oIkludmFsaWQgaG9zdCAnJXMnIiksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpLmhvc3RpbmZvKTsKLSsKLSsgICAgICBTVk5fRVJSKGZpbmRfdHVubmVsX2FnZW50KHR1bm5lbCwgZGVjb2RlZF9ob3N0aW5mbywgJnR1bm5lbF9hcmd2LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLCByZXN1bHRfcG9vbCkpOwotKyAgICB9Ci0gICBlbHNlCi0gICAgIHR1bm5lbF9hcmd2ID0gTlVMTDsKLSAKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjkuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzJlZGViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotU1VNTUFSWSA9ICJTdWJ2ZXJzaW9uIChzdm4pIHZlcnNpb24gY29udHJvbCBzeXN0ZW0gY2xpZW50IgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1ERVBFTkRTID0gImFwci11dGlsIHNlcmYgc3FsaXRlMyBmaWxlIgotREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ID0gInNlcmYiCi1MSUNFTlNFID0gIkFwYWNoZS0yIgotSE9NRVBBR0UgPSAiaHR0cDovL3N1YnZlcnNpb24udGlncmlzLm9yZyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLWluaGVyaXQgZ2V0dGV4dCBwa2djb25maWcKLQotU1JDX1VSSSA9ICIke0FQQUNIRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlX21hY29zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NlcmYubTQtUmVnZXgtbW9kaWZpZWQtdG8tYWxsb3ctRC1pbi1wYXRocy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1saWJ0b29sLW5hbWUtaW4tY29uZmlndXJlLmFjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NlcmZtYWNyby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05ODAwLnBhdGNoO3N0cmlwbGV2ZWw9MCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImYyN2UwMDMzOGQ0YTlmN2Y5YWVjOWQ0YTNmOGI0MThiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRiY2JjNTFmYjYzNDA4MmYwMDkxMjFmMmNiNjQzNTBjZTMyMTQ2NjEyNzg3ZmZiMGY3Y2VkMzUxYWFjYWFlMTkiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWFmODFhZTQ5YmEzNTllNzA2MjZjMDVlOWJmMzEzNzA5IgotCi1QQUNLQUdFQ09ORklHW3Nhc2xdID0gIi0td2l0aC1zYXNsLC0td2l0aG91dC1zYXNsLGN5cnVzLXNhc2wiCi1QQUNLQUdFQ09ORklHW2dub21lLWtleXJpbmddID0gIi0td2l0aC1nbm9tZS1rZXlyaW5nLC0td2l0aG91dC1nbm9tZS1rZXlyaW5nLGdsaWItMi4wIGdub21lLWtleXJpbmciCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1iZXJrZWxleS1kYiAtLXdpdGhvdXQtYXB4cyBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXN3aWcgLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWFwci11dGlsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUta2V5Y2hhaW4gXAotICAgICAgICAgICAgICAgIGFjX2N2X3BhdGhfUlVCWT1ub25lIgotCi1pbmhlcml0IGF1dG90b29scwotCi1leHBvcnQgTERGTEFHUyArPSAiIC1MJHtTVEFHSU5HX0xJQkRJUn0gIgotQ1BQRkxBR1MgKz0gIi1QIgotQlVJTERfQ1BQRkxBR1MgKz0gIi1QIgotCi1hY3BhdGhzID0gIi1JIGJ1aWxkLyAtSSBidWlsZC9hYy1tYWNyb3MvIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0Jcm0gLWYgJHtTfS9saWJ0b29sCi0Jcm0gLWYgJHtTfS9idWlsZC9saWJ0b29sLm00ICR7U30vYnVpbGQvbHRtYWluLnNoICR7U30vYnVpbGQvbHRvcHRpb25zLm00ICR7U30vYnVpbGQvbHRzdWdhci5tNCAke1N9L2J1aWxkL2x0dmVyc2lvbi5tNCAke1N9L2J1aWxkL2x0fm9ic29sZXRlLm00Ci0Jcm0gLWYgJHtTfS9hY2xvY2FsLm00Ci0Jc2VkIC1pIC1lICdzOndpdGhfc2FzbD0iL3Vzci9sb2NhbCI6d2l0aF9zYXNsPSIke1NUQUdJTkdfRElSfSI6JyAke1N9L2J1aWxkL2FjLW1hY3Jvcy9zYXNsLm00Ci19Ci0KLSN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfbG9jYWwvbGlic3ZuX3JhX2xvY2FsLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yZXBvcy9saWJzdm5fcmVwb3MtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCAvdXNyL2Jpbi9sZDogY2Fubm90IGZpbmQgLWxzdm5fZGVsdGEtMXwgY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfc3ZuL2xpYnN2bl9yYV9zdm4tMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX3NlcmYvbGlic3ZuX3JhX3NlcmYtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInCi0jfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogZXJyb3I6IHJlbGluayBgbGlic3ZuX3JhX3NlcmYtMS5sYScgd2l0aCB0aGUgYWJvdmUgY29tbWFuZCBiZWZvcmUgaW5zdGFsbGluZyBpdAotI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAuLi8uLi9zdWJ2ZXJzaW9uL2xpYnN2bl9yZXBvcy9saWJzdm5fcmVwb3MtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInCi0jfCAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9zdWJ2ZXJzaW9uLTEuOC45L2J1aWxkLW91dHB1dHMubWs6MTA5MDogcmVjaXBlIGZvciB0YXJnZXQgJ2luc3RhbGwtc2VyZi1saWInIGZhaWxlZAotI3wgbWFrZTogKioqIFtpbnN0YWxsLXNlcmYtbGliXSBFcnJvciAxCi1QQVJBTExFTF9NQUtFSU5TVCA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjkuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3NzM1ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjkuNy5iYgpAQCAtMCwwICsxLDU1IEBACitTVU1NQVJZID0gIlN1YnZlcnNpb24gKHN2bikgdmVyc2lvbiBjb250cm9sIHN5c3RlbSBjbGllbnQiCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0RFUEVORFMgPSAiYXByLXV0aWwgc2VyZiBzcWxpdGUzIGZpbGUiCitERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgorUkRFUEVORFNfJHtQTn0gPSAic2VyZiIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIiCitIT01FUEFHRSA9ICJodHRwOi8vc3VidmVyc2lvbi50aWdyaXMub3JnIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworaW5oZXJpdCBnZXR0ZXh0IHBrZ2NvbmZpZworCitTUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGVfbWFjb3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2VyZi5tNC1SZWdleC1tb2RpZmllZC10by1hbGxvdy1ELWluLXBhdGhzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWxpYnRvb2wtbmFtZS1pbi1jb25maWd1cmUuYWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2VyZm1hY3JvLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDViMGM2Nzc2ODEwNzM5MjBmOTM4YzFmMzIyZTBiZTIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzNiMTE4MzMzY2UxMmU1MDFkNTA5ZTY2YmIwYTQ3YmNjMzRkMDUzOTkwYWNhYjQ1NTU5NDMxYWMzZTQ5MTYyMyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YWY4MWFlNDliYTM1OWU3MDYyNmMwNWU5YmYzMTM3MDkiCisKK1BBQ0tBR0VDT05GSUdbc2FzbF0gPSAiLS13aXRoLXNhc2wsLS13aXRob3V0LXNhc2wsY3lydXMtc2FzbCIKK1BBQ0tBR0VDT05GSUdbZ25vbWUta2V5cmluZ10gPSAiLS13aXRoLWdub21lLWtleXJpbmcsLS13aXRob3V0LWdub21lLWtleXJpbmcsZ2xpYi0yLjAgZ25vbWUta2V5cmluZyIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LWJlcmtlbGV5LWRiIC0td2l0aG91dC1hcHhzIFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc3dpZyAtLXdpdGgtYXByPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtYXByLXV0aWw9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30gXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1rZXljaGFpbiBcCisgICAgICAgICAgICAgICAgYWNfY3ZfcGF0aF9SVUJZPW5vbmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK2V4cG9ydCBMREZMQUdTICs9ICIgLUwke1NUQUdJTkdfTElCRElSfSAiCitDUFBGTEFHUyArPSAiLVAiCitCVUlMRF9DUFBGTEFHUyArPSAiLVAiCisKK2FjcGF0aHMgPSAiLUkgYnVpbGQvIC1JIGJ1aWxkL2FjLW1hY3Jvcy8iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlybSAtZiAke1N9L2xpYnRvb2wKKwlybSAtZiAke1N9L2J1aWxkL2xpYnRvb2wubTQgJHtTfS9idWlsZC9sdG1haW4uc2ggJHtTfS9idWlsZC9sdG9wdGlvbnMubTQgJHtTfS9idWlsZC9sdHN1Z2FyLm00ICR7U30vYnVpbGQvbHR2ZXJzaW9uLm00ICR7U30vYnVpbGQvbHR+b2Jzb2xldGUubTQKKwlybSAtZiAke1N9L2FjbG9jYWwubTQKKwlzZWQgLWkgLWUgJ3M6d2l0aF9zYXNsPSIvdXNyL2xvY2FsIjp3aXRoX3Nhc2w9IiR7U1RBR0lOR19ESVJ9IjonICR7U30vYnVpbGQvYWMtbWFjcm9zL3Nhc2wubTQKK30KKworI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9sb2NhbC9saWJzdm5fcmFfbG9jYWwtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JlcG9zL2xpYnN2bl9yZXBvcy0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IC91c3IvYmluL2xkOiBjYW5ub3QgZmluZCAtbHN2bl9kZWx0YS0xfCBjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1c3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9zdm4vbGlic3ZuX3JhX3N2bi0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfc2VyZi9saWJzdm5fcmFfc2VyZi0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYicKKyN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiBlcnJvcjogcmVsaW5rIGBsaWJzdm5fcmFfc2VyZi0xLmxhJyB3aXRoIHRoZSBhYm92ZSBjb21tYW5kIGJlZm9yZSBpbnN0YWxsaW5nIGl0CisjfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC4uLy4uL3N1YnZlcnNpb24vbGlic3ZuX3JlcG9zL2xpYnN2bl9yZXBvcy0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYicKKyN8IC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL3N1YnZlcnNpb24tMS44LjkvYnVpbGQtb3V0cHV0cy5tazoxMDkwOiByZWNpcGUgZm9yIHRhcmdldCAnaW5zdGFsbC1zZXJmLWxpYicgZmFpbGVkCisjfCBtYWtlOiAqKiogW2luc3RhbGwtc2VyZi1saWJdIEVycm9yIDEKK1BBUkFMTEVMX01BS0VJTlNUID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3dpZy9zd2lnLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3dpZy9zd2lnLmluYwppbmRleCA4Y2I2ZmJkLi5iZjYxYjAyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3aWcvc3dpZy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zd2lnL3N3aWcuaW5jCkBAIC0xMSw3ICsxMSw3IEBACiAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IgogCi1pbmhlcml0IGF1dG90b29scyBweXRob24zbmF0aXZlCitpbmhlcml0IGF1dG90b29scyBweXRob24zbmF0aXZlIHBrZ2NvbmZpZwogCiBFWFRSQV9PRUNPTkYgPSAiIFwKICAgICAtLXdpdGgtcHl0aG9uMz0ke1BZVEhPTn0gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zd2lnL3N3aWcvMDAwMS1BZGQtTm9kZS03LngtYWthLVY4LTUuMi1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zd2lnL3N3aWcvMDAwMS1BZGQtTm9kZS03LngtYWthLVY4LTUuMi1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4NWMzOTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3aWcvc3dpZy8wMDAxLUFkZC1Ob2RlLTcueC1ha2EtVjgtNS4yLXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSwzMzAgQEAKK0Zyb20gMWE1YWFkY2Q2NmU4NWM2M2QyMjhiZmQ4MTFhNTIxZDYxN2MyMmEzOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhdHJpY2sgU2NobmVpZGVyIDxwYXRyaWNrLnNjaG5laWRlckBtZWV0bm93LmV1PgorRGF0ZTogVGh1LCAxMyBBcHIgMjAxNyAxNTowMjo1MyArMDIwMAorU3ViamVjdDogW1BBVENIXSBBZGQgTm9kZSA3LnggYWthIFY4IDUuMisgc3VwcG9ydAorCisqIFVzZSBXZWFrQ2FsbGJhY2tJbmZvIGluc3RlYWQgb2YgV2Vha0NhbGxiYWNrRGF0YQorKiBVc2UgR2V0UHJpdmF0ZSBpbnN0ZWFkIG9mIEdldEhpZGRlblZhbHVlCisqIEFkb3B0ZWQgbmV3IHNpZ25hdHVyZSBmb3IgU2V0V2VhayB0byBzdXBwb3J0IGRlc3RydWN0b3IgY2FsbGluZworKiBTZXRBY2Nlc3NvciBkZXByZWNhdGlvbiBmaXhlZAorKiBQcm9wZXIgdmVyc2lvbiBjaGVja3Mgd2hlcmUgYXBwbGljYWJsZQorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3N3aWcvc3dpZy9wdWxsLzk2OF0KKworU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+CistLS0KKyBMaWIvamF2YXNjcmlwdC92OC9qYXZhc2NyaXB0Y29kZS5zd2cgICAgfCAyNyArKysrKysrKysrKysrKysrKy0tLS0tCisgTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdGhlbHBlcnMuc3dnIHwgMjkgKysrKysrKysrKysrKysrKysrKysrLS0tCisgTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdGluaXQuc3dnICAgIHwgMTYgKysrKysrKysrKystLQorIExpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRydW4uc3dnICAgICB8IDQwICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQorIDQgZmlsZXMgY2hhbmdlZCwgOTUgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9MaWIvamF2YXNjcmlwdC92OC9qYXZhc2NyaXB0Y29kZS5zd2cgYi9MaWIvamF2YXNjcmlwdC92OC9qYXZhc2NyaXB0Y29kZS5zd2cKK2luZGV4IGZiN2Q1NWMuLmI4YzUwODkgMTAwNjQ0CistLS0gYS9MaWIvamF2YXNjcmlwdC92OC9qYXZhc2NyaXB0Y29kZS5zd2cKKysrKyBiL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRjb2RlLnN3ZworQEAgLTEzMywxMCArMTMzLDEzIEBAIHN0YXRpYyB2b2lkICRqc3dyYXBwZXIodjg6Oklzb2xhdGUgKmlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gb2JqZWN0LCB2CisgICBTV0lHVjhfUHJveHkgKnByb3h5ID0gc3RhdGljX2Nhc3Q8U1dJR1Y4X1Byb3h5ICo+KHBhcmFtZXRlcik7CisgI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA0ICYmIChTV0lHX1Y4X1ZFUlNJT04gPCBTV0lHVjhfU0VUV0VBS19WRVJTSU9OKQorIHN0YXRpYyB2b2lkICRqc3dyYXBwZXIodjg6Oklzb2xhdGUgKmlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+ICpvYmplY3QsIFNXSUdWOF9Qcm94eSAqcHJveHkpIHsKKy0jZWxzZQorKyNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorIHN0YXRpYyB2b2lkICRqc3dyYXBwZXIoY29uc3Qgdjg6OldlYWtDYWxsYmFja0RhdGE8djg6Ok9iamVjdCwgU1dJR1Y4X1Byb3h5PiAmZGF0YSkgeworICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IG9iamVjdCA9IGRhdGEuR2V0VmFsdWUoKTsKKyAgIFNXSUdWOF9Qcm94eSAqcHJveHkgPSBkYXRhLkdldFBhcmFtZXRlcigpOworKyNlbHNlCisrICBzdGF0aWMgdm9pZCAkanN3cmFwcGVyKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tJbmZvPFNXSUdWOF9Qcm94eT4gJmRhdGEpIHsKKysgIFNXSUdWOF9Qcm94eSAqcHJveHkgPSBkYXRhLkdldFBhcmFtZXRlcigpOworICNlbmRpZgorIAorICAgaWYocHJveHktPnN3aWdDTWVtT3duICYmIHByb3h5LT5zd2lnQ09iamVjdCkgeworQEAgLTE0Nyw3ICsxNTAsOSBAQCBzdGF0aWMgdm9pZCAkanN3cmFwcGVyKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tEYXRhPHY4OjpPYmplY3QsIFNXSUdWOF9Qcm94eT4gJmRhdAorICAgfQorICAgZGVsZXRlIHByb3h5OworIAorKyNpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDUgfHwgKFY4X01BSk9SX1ZFUlNJT04gPT0gNSAmJiBWOF9NSU5PUl9WRVJTSU9OIDwgMikKKyAgIG9iamVjdC5DbGVhcigpOworKyNlbmRpZgorICAgCisgI2lmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNCAmJiAoU1dJR19WOF9WRVJTSU9OIDwgMHgwMzE3MTApCisgICBvYmplY3QuRGlzcG9zZSgpOworQEAgLTE1NSw3ICsxNjAsNyBAQCBzdGF0aWMgdm9pZCAkanN3cmFwcGVyKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tEYXRhPHY4OjpPYmplY3QsIFNXSUdWOF9Qcm94eT4gJmRhdAorICAgb2JqZWN0LkRpc3Bvc2UoaXNvbGF0ZSk7CisgI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA0ICYmIChTV0lHX1Y4X1ZFUlNJT04gPCAweDAzMjEwMCkKKyAgIG9iamVjdC0+RGlzcG9zZShpc29sYXRlKTsKKy0jZWxzZQorKyNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorICAgb2JqZWN0LT5EaXNwb3NlKCk7CisgI2VuZGlmCisgfQorQEAgLTE3NywxMCArMTgyLDEzIEBAIHN0YXRpYyB2b2lkICRqc3dyYXBwZXIodjg6Oklzb2xhdGUgKmlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gb2JqZWN0LCB2CisgICBTV0lHVjhfUHJveHkgKnByb3h5ID0gc3RhdGljX2Nhc3Q8U1dJR1Y4X1Byb3h5ICo+KHBhcmFtZXRlcik7CisgI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA0ICYmIChTV0lHX1Y4X1ZFUlNJT04gPCBTV0lHVjhfU0VUV0VBS19WRVJTSU9OKQorIHN0YXRpYyB2b2lkICRqc3dyYXBwZXIodjg6Oklzb2xhdGUgKmlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PCB2ODo6T2JqZWN0PiAqb2JqZWN0LCBTV0lHVjhfUHJveHkgKnByb3h5KSB7CistI2Vsc2UKKysjZWxpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDUgfHwgKFY4X01BSk9SX1ZFUlNJT04gPT0gNSAmJiBWOF9NSU5PUl9WRVJTSU9OIDwgMikKKyBzdGF0aWMgdm9pZCAkanN3cmFwcGVyKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tEYXRhPHY4OjpPYmplY3QsIFNXSUdWOF9Qcm94eT4gJmRhdGEpIHsKKyAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvYmplY3QgPSBkYXRhLkdldFZhbHVlKCk7CisgICBTV0lHVjhfUHJveHkgKnByb3h5ID0gZGF0YS5HZXRQYXJhbWV0ZXIoKTsKKysjZWxzZQorK3N0YXRpYyB2b2lkICRqc3dyYXBwZXIoY29uc3Qgdjg6OldlYWtDYWxsYmFja0luZm88U1dJR1Y4X1Byb3h5PiAmZGF0YSkgeworKyAgU1dJR1Y4X1Byb3h5ICpwcm94eSA9IGRhdGEuR2V0UGFyYW1ldGVyKCk7CisgI2VuZGlmCisgCisgICBpZihwcm94eS0+c3dpZ0NNZW1Pd24gJiYgcHJveHktPnN3aWdDT2JqZWN0KSB7CitAQCAtMTk3LDcgKzIwNSw3IEBAIHN0YXRpYyB2b2lkICRqc3dyYXBwZXIoY29uc3Qgdjg6OldlYWtDYWxsYmFja0RhdGE8djg6Ok9iamVjdCwgU1dJR1Y4X1Byb3h5PiAmZGF0CisgICBvYmplY3QtPkRpc3Bvc2UoaXNvbGF0ZSk7CisgI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA0ICYmIChTV0lHX1Y4X1ZFUlNJT04gPCBTV0lHVjhfU0VUV0VBS19WRVJTSU9OKQorICAgb2JqZWN0LT5EaXNwb3NlKCk7CistI2Vsc2UKKysjZWxpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDUgfHwgKFY4X01BSk9SX1ZFUlNJT04gPT0gNSAmJiBWOF9NSU5PUl9WRVJTSU9OIDwgMikKKyAgIG9iamVjdC5DbGVhcigpOworICNlbmRpZgorIH0KK0BAIC0yMTEsNyArMjE5LDExIEBAIHN0YXRpYyB2b2lkICRqc3dyYXBwZXIoY29uc3Qgdjg6OldlYWtDYWxsYmFja0RhdGE8djg6Ok9iamVjdCwgU1dJR1Y4X1Byb3h5PiAmZGF0CisgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAlZnJhZ21lbnQoImpzX2dldHRlciIsICJ0ZW1wbGF0ZXMiKQorICV7CisrI2lmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorIHN0YXRpYyBTd2lnVjhSZXR1cm5WYWx1ZSAkanN3cmFwcGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBwcm9wZXJ0eSwgY29uc3QgU3dpZ1Y4UHJvcGVydHlDYWxsYmFja0luZm8gJmluZm8pIHsKKysjZWxzZQorK3N0YXRpYyBTd2lnVjhSZXR1cm5WYWx1ZSAkanN3cmFwcGVyKHY4OjpMb2NhbDx2ODo6TmFtZT4gcHJvcGVydHksIGNvbnN0IFN3aWdWOFByb3BlcnR5Q2FsbGJhY2tJbmZvICZpbmZvKSB7CisrI2VuZGlmCisgICBTV0lHVjhfSEFORExFU0NPUEUoKTsKKyAgIAorICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGpzcmVzdWx0OworQEAgLTIzMyw4ICsyNDUsMTEgQEAgZmFpbDoKKyAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworICVmcmFnbWVudCgianNfc2V0dGVyIiwgInRlbXBsYXRlcyIpCisgJXsKKy1zdGF0aWMgdm9pZCAkanN3cmFwcGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBwcm9wZXJ0eSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCistICBjb25zdCBTd2lnVjhQcm9wZXJ0eUNhbGxiYWNrSW5mb1ZvaWQgJmluZm8pIHsKKysjaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisrc3RhdGljIHZvaWQgJGpzd3JhcHBlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gcHJvcGVydHksIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCBTd2lnVjhQcm9wZXJ0eUNhbGxiYWNrSW5mb1ZvaWQgJmluZm8pIHsKKysjZWxzZQorK3N0YXRpYyB2b2lkICRqc3dyYXBwZXIodjg6OkxvY2FsPHY4OjpOYW1lPiBwcm9wZXJ0eSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IFN3aWdWOFByb3BlcnR5Q2FsbGJhY2tJbmZvVm9pZCAmaW5mbykgeworKyNlbmRpZgorICAgU1dJR1Y4X0hBTkRMRVNDT1BFKCk7CisgICAKKyAgICRqc2xvY2FscworZGlmZiAtLWdpdCBhL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRoZWxwZXJzLnN3ZyBiL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRoZWxwZXJzLnN3ZworaW5kZXggMDkxNDY3ZC4uNzQ2MTA3OSAxMDA2NDQKKy0tLSBhL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRoZWxwZXJzLnN3ZworKysrIGIvTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdGhlbHBlcnMuc3dnCitAQCAtNiwxMSArNiwxNiBAQCB0eXBlZGVmIHY4OjpJbnZvY2F0aW9uQ2FsbGJhY2sgIFN3aWdWOEZ1bmN0aW9uQ2FsbGJhY2s7CisgdHlwZWRlZiB2ODo6QWNjZXNzb3JHZXR0ZXIgICAgICBTd2lnVjhBY2Nlc3NvckdldHRlckNhbGxiYWNrOworIHR5cGVkZWYgdjg6OkFjY2Vzc29yU2V0dGVyICAgICAgU3dpZ1Y4QWNjZXNzb3JTZXR0ZXJDYWxsYmFjazsKKyB0eXBlZGVmIHY4OjpBY2Nlc3NvckluZm8gICAgICAgIFN3aWdWOFByb3BlcnR5Q2FsbGJhY2tJbmZvVm9pZDsKKy0jZWxzZQorKyNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorIHR5cGVkZWYgdjg6OkZ1bmN0aW9uQ2FsbGJhY2sgICAgICAgICAgICBTd2lnVjhGdW5jdGlvbkNhbGxiYWNrOworIHR5cGVkZWYgdjg6OkFjY2Vzc29yR2V0dGVyQ2FsbGJhY2sgICAgICBTd2lnVjhBY2Nlc3NvckdldHRlckNhbGxiYWNrOworIHR5cGVkZWYgdjg6OkFjY2Vzc29yU2V0dGVyQ2FsbGJhY2sgICAgICBTd2lnVjhBY2Nlc3NvclNldHRlckNhbGxiYWNrOworIHR5cGVkZWYgdjg6OlByb3BlcnR5Q2FsbGJhY2tJbmZvPHZvaWQ+ICBTd2lnVjhQcm9wZXJ0eUNhbGxiYWNrSW5mb1ZvaWQ7CisrI2Vsc2UKKyt0eXBlZGVmIHY4OjpGdW5jdGlvbkNhbGxiYWNrICAgICAgICAgICAgU3dpZ1Y4RnVuY3Rpb25DYWxsYmFjazsKKyt0eXBlZGVmIHY4OjpBY2Nlc3Nvck5hbWVHZXR0ZXJDYWxsYmFjayAgU3dpZ1Y4QWNjZXNzb3JHZXR0ZXJDYWxsYmFjazsKKyt0eXBlZGVmIHY4OjpBY2Nlc3Nvck5hbWVTZXR0ZXJDYWxsYmFjayAgU3dpZ1Y4QWNjZXNzb3JTZXR0ZXJDYWxsYmFjazsKKyt0eXBlZGVmIHY4OjpQcm9wZXJ0eUNhbGxiYWNrSW5mbzx2b2lkPiAgU3dpZ1Y4UHJvcGVydHlDYWxsYmFja0luZm9Wb2lkOworICNlbmRpZgorIAorIC8qKgorQEAgLTY1LDE4ICs3MCwzNiBAQCBTV0lHUlVOVElNRSB2b2lkIFNXSUdWOF9BZGRTdGF0aWNGdW5jdGlvbih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iaiwgY29uc3QgY2hhcgorICAqLworIFNXSUdSVU5USU1FIHZvaWQgU1dJR1Y4X0FkZFN0YXRpY1ZhcmlhYmxlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqLCBjb25zdCBjaGFyKiBzeW1ib2wsCisgICBTd2lnVjhBY2Nlc3NvckdldHRlckNhbGxiYWNrIGdldHRlciwgU3dpZ1Y4QWNjZXNzb3JTZXR0ZXJDYWxsYmFjayBzZXR0ZXIpIHsKKysjaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisgICBvYmotPlNldEFjY2Vzc29yKFNXSUdWOF9TWU1CT0xfTkVXKHN5bWJvbCksIGdldHRlciwgc2V0dGVyKTsKKysjZWxzZQorKyAgb2JqLT5TZXRBY2Nlc3NvcihTV0lHVjhfQ1VSUkVOVF9DT05URVhUKCksIFNXSUdWOF9TWU1CT0xfTkVXKHN5bWJvbCksIGdldHRlciwgc2V0dGVyKTsKKysjZW5kaWYKKyB9CisgCistU1dJR1JVTlRJTUUgdm9pZCBKU192ZXRvX3NldF92YXJpYWJsZSh2ODo6TG9jYWw8djg6OlN0cmluZz4gcHJvcGVydHksIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLAorLSAgY29uc3QgU3dpZ1Y4UHJvcGVydHlDYWxsYmFja0luZm9Wb2lkJiBpbmZvKQorKyNpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDUgfHwgKFY4X01BSk9SX1ZFUlNJT04gPT0gNSAmJiBWOF9NSU5PUl9WRVJTSU9OIDwgMikKKytTV0lHUlVOVElNRSB2b2lkIEpTX3ZldG9fc2V0X3ZhcmlhYmxlKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBwcm9wZXJ0eSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IFN3aWdWOFByb3BlcnR5Q2FsbGJhY2tJbmZvVm9pZCYgaW5mbykKKysjZWxzZQorK1NXSUdSVU5USU1FIHZvaWQgSlNfdmV0b19zZXRfdmFyaWFibGUodjg6OkxvY2FsPHY4OjpOYW1lPiBwcm9wZXJ0eSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IFN3aWdWOFByb3BlcnR5Q2FsbGJhY2tJbmZvVm9pZCYgaW5mbykKKysjZW5kaWYKKyB7CisgICAgIGNoYXIgYnVmZmVyWzI1Nl07CisgICAgIGNoYXIgbXNnWzUxMl07CisgICAgIGludCByZXM7CisgCisrI2lmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorICAgICBwcm9wZXJ0eS0+V3JpdGVVdGY4KGJ1ZmZlciwgMjU2KTsKKyAgICAgcmVzID0gc3ByaW50Zihtc2csICJUcmllZCB0byB3cml0ZSByZWFkLW9ubHkgdmFyaWFibGU6ICVzLiIsIGJ1ZmZlcik7CisrI2Vsc2UKKysgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IHNwcm9wZXJ0eTsKKysgICAgaWYgKHByb3BlcnR5LT5Ub1N0cmluZyhTV0lHVjhfQ1VSUkVOVF9DT05URVhUKCkpLlRvTG9jYWwoJnNwcm9wZXJ0eSkpIHsKKysgICAgICBzcHJvcGVydHktPldyaXRlVXRmOChidWZmZXIsIDI1Nik7CisrICAgICAgcmVzID0gc3ByaW50Zihtc2csICJUcmllZCB0byB3cml0ZSByZWFkLW9ubHkgdmFyaWFibGU6ICVzLiIsIGJ1ZmZlcik7CisrICAgIH0KKysgICAgZWxzZSB7CisrICAgICAgcmVzID0gLTE7CisrICAgIH0KKysjZW5kaWYKKyAKKyAgICAgaWYocmVzPDApIHsKKyAgICAgICBTV0lHX2V4Y2VwdGlvbihTV0lHX0VSUk9SLCAiVHJpZWQgdG8gd3JpdGUgcmVhZC1vbmx5IHZhcmlhYmxlLiIpOworZGlmZiAtLWdpdCBhL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRpbml0LnN3ZyBiL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRpbml0LnN3ZworaW5kZXggMzRiZWZhNy4uODYwMDhkOSAxMDA2NDQKKy0tLSBhL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRpbml0LnN3ZworKysrIGIvTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdGluaXQuc3dnCitAQCAtNywxNSArNywyNyBAQCBTV0lHX1Y4X1NldE1vZHVsZSh2b2lkICosIHN3aWdfbW9kdWxlX2luZm8gKnN3aWdfbW9kdWxlKSB7CisgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZ2xvYmFsX29iaiA9IFNXSUdWOF9DVVJSRU5UX0NPTlRFWFQoKS0+R2xvYmFsKCk7CisgICB2ODo6TG9jYWw8djg6OkV4dGVybmFsPiBtb2QgPSBTV0lHVjhfRVhURVJOQUxfTkVXKHN3aWdfbW9kdWxlKTsKKyAgIGFzc2VydCghbW9kLklzRW1wdHkoKSk7CisrI2lmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorICAgZ2xvYmFsX29iai0+U2V0SGlkZGVuVmFsdWUoU1dJR1Y4X1NUUklOR19ORVcoInN3aWdfbW9kdWxlX2luZm9fZGF0YSIpLCBtb2QpOworKyNlbHNlCisrICB2ODo6TG9jYWw8djg6OlByaXZhdGU+IHByaXZhdGVLZXkgPSB2ODo6UHJpdmF0ZTo6Rm9yQXBpKHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCksIFNXSUdWOF9TVFJJTkdfTkVXKCJzd2lnX21vZHVsZV9pbmZvX2RhdGEiKSk7CisrICBnbG9iYWxfb2JqLT5TZXRQcml2YXRlKFNXSUdWOF9DVVJSRU5UX0NPTlRFWFQoKSwgcHJpdmF0ZUtleSwgbW9kKTsKKysjZW5kaWYKKyB9CisgCisgU1dJR1JVTlRJTUUgc3dpZ19tb2R1bGVfaW5mbyAqCisgU1dJR19WOF9HZXRNb2R1bGUodm9pZCAqKSB7CisgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZ2xvYmFsX29iaiA9IFNXSUdWOF9DVVJSRU5UX0NPTlRFWFQoKS0+R2xvYmFsKCk7CisrI2lmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbW9kdWxlaW5mbyA9IGdsb2JhbF9vYmotPkdldEhpZGRlblZhbHVlKFNXSUdWOF9TVFJJTkdfTkVXKCJzd2lnX21vZHVsZV9pbmZvX2RhdGEiKSk7CisrI2Vsc2UKKysgIHY4OjpMb2NhbDx2ODo6UHJpdmF0ZT4gcHJpdmF0ZUtleSA9IHY4OjpQcml2YXRlOjpGb3JBcGkodjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKSwgU1dJR1Y4X1NUUklOR19ORVcoInN3aWdfbW9kdWxlX2luZm9fZGF0YSIpKTsKKysgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IG1vZHVsZWluZm87CisrICBpZiAoIWdsb2JhbF9vYmotPkdldFByaXZhdGUoU1dJR1Y4X0NVUlJFTlRfQ09OVEVYVCgpLCBwcml2YXRlS2V5KS5Ub0xvY2FsKCZtb2R1bGVpbmZvKSkKKysgICAgcmV0dXJuIDA7CisrI2VuZGlmCisgCistICBpZiAobW9kdWxlaW5mby5Jc0VtcHR5KCkpCisrICBpZiAobW9kdWxlaW5mby5Jc0VtcHR5KCkgfHwgbW9kdWxlaW5mby0+SXNOdWxsKCkgfHwgbW9kdWxlaW5mby0+SXNVbmRlZmluZWQoKSkKKyAgIHsKKyAgICAgLy8gSXQncyBub3QgeWV0IGxvYWRlZAorICAgICByZXR1cm4gMDsKK0BAIC0yMyw3ICszNSw3IEBAIFNXSUdfVjhfR2V0TW9kdWxlKHZvaWQgKikgeworIAorICAgdjg6OkxvY2FsPHY4OjpFeHRlcm5hbD4gbW9kdWxlaW5mb19leHRlcm4gPSB2ODo6TG9jYWw8djg6OkV4dGVybmFsPjo6Q2FzdChtb2R1bGVpbmZvKTsKKyAKKy0gIGlmIChtb2R1bGVpbmZvX2V4dGVybi5Jc0VtcHR5KCkpCisrICBpZiAobW9kdWxlaW5mb19leHRlcm4uSXNFbXB0eSgpIHx8IG1vZHVsZWluZm9fZXh0ZXJuLT5Jc051bGwoKSB8fCBtb2R1bGVpbmZvX2V4dGVybi0+SXNVbmRlZmluZWQoKSkKKyAgIHsKKyAgICAgLy8gU29tZXRoaW5nJ3Mgbm90IHJpZ2h0CisgICAgIHJldHVybiAwOworZGlmZiAtLWdpdCBhL0xpYi9qYXZhc2NyaXB0L3Y4L2phdmFzY3JpcHRydW4uc3dnIGIvTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdHJ1bi5zd2cKK2luZGV4IDVhYzUyYTUuLjMwMDAyYzAgMTAwNjQ0CistLS0gYS9MaWIvamF2YXNjcmlwdC92OC9qYXZhc2NyaXB0cnVuLnN3ZworKysrIGIvTGliL2phdmFzY3JpcHQvdjgvamF2YXNjcmlwdHJ1bi5zd2cKK0BAIC0xOTMsOCArMTkzLDEwIEBAIHB1YmxpYzoKKyAgIHZvaWQgKCpkdG9yKSAodjg6Oklzb2xhdGUgKmlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PCB2ODo6VmFsdWU+IG9iamVjdCwgdm9pZCAqcGFyYW1ldGVyKTsKKyAjZWxpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDQgJiYgKFNXSUdfVjhfVkVSU0lPTiA8IFNXSUdWOF9TRVRXRUFLX1ZFUlNJT04pCisgICB2b2lkICgqZHRvcikgKHY4OjpJc29sYXRlICppc29sYXRlLCB2ODo6UGVyc2lzdGVudDwgdjg6Ok9iamVjdCA+ICpvYmplY3QsIFNXSUdWOF9Qcm94eSAqcHJveHkpOworLSNlbHNlCisrI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisgICB2b2lkICgqZHRvcikgKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tEYXRhPHY4OjpPYmplY3QsIFNXSUdWOF9Qcm94eT4gJmRhdGEpOworKyNlbHNlCisrICB2b2lkICgqZHRvcikgKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tJbmZvPFNXSUdWOF9Qcm94eT4gJmRhdGEpOworICNlbmRpZgorIH07CisgCitAQCAtMjQxLDkgKzI0MywxMiBAQCBTV0lHUlVOVElNRSB2b2lkIFNXSUdWOF9Qcm94eV9EZWZhdWx0RHRvcih2ODo6SXNvbGF0ZSAqLCB2ODo6UGVyc2lzdGVudDwgdjg6OlZhbAorICAgU1dJR1Y4X1Byb3h5ICpwcm94eSA9IHN0YXRpY19jYXN0PFNXSUdWOF9Qcm94eSAqPihwYXJhbWV0ZXIpOworICNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNCAmJiAoU1dJR19WOF9WRVJTSU9OIDwgU1dJR1Y4X1NFVFdFQUtfVkVSU0lPTikKKyBTV0lHUlVOVElNRSB2b2lkIFNXSUdWOF9Qcm94eV9EZWZhdWx0RHRvcih2ODo6SXNvbGF0ZSAqLCB2ODo6UGVyc2lzdGVudDwgdjg6Ok9iamVjdCA+ICpvYmplY3QsIFNXSUdWOF9Qcm94eSAqcHJveHkpIHsKKy0jZWxzZQorKyNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorIFNXSUdSVU5USU1FIHZvaWQgU1dJR1Y4X1Byb3h5X0RlZmF1bHREdG9yKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tEYXRhPHY4OjpPYmplY3QsIFNXSUdWOF9Qcm94eT4gJmRhdGEpIHsKKyAgIFNXSUdWOF9Qcm94eSAqcHJveHkgPSBkYXRhLkdldFBhcmFtZXRlcigpOworKyNlbHNlCisrU1dJR1JVTlRJTUUgdm9pZCBTV0lHVjhfUHJveHlfRGVmYXVsdER0b3IoY29uc3Qgdjg6OldlYWtDYWxsYmFja0luZm88U1dJR1Y4X1Byb3h5PiAmZGF0YSkgeworKyAgU1dJR1Y4X1Byb3h5ICpwcm94eSA9IGRhdGEuR2V0UGFyYW1ldGVyKCk7CisgI2VuZGlmCisgCisgICBkZWxldGUgcHJveHk7CitAQCAtMzEyLDEyICszMTcsMTggQEAgU1dJR1JVTlRJTUUgdm9pZCBTV0lHVjhfU2V0UHJpdmF0ZURhdGEodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmosIHZvaWQgKnB0ciwgc3cKKyAgIH0gZWxzZSB7CisgICAgIGNkYXRhLT5oYW5kbGUuTWFrZVdlYWsoY2RhdGEsIFNXSUdWOF9Qcm94eV9EZWZhdWx0RHRvcik7CisgICB9CistI2Vsc2UKKysjZWxpZmlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorICAgaWYoY2RhdGEtPnN3aWdDTWVtT3duICYmIChTV0lHVjhfQ2xpZW50RGF0YSopaW5mby0+Y2xpZW50ZGF0YSkgeworICAgICBjZGF0YS0+aGFuZGxlLlNldFdlYWsoY2RhdGEsICgoU1dJR1Y4X0NsaWVudERhdGEqKWluZm8tPmNsaWVudGRhdGEpLT5kdG9yKTsKKyAgIH0gZWxzZSB7CisgICAgIGNkYXRhLT5oYW5kbGUuU2V0V2VhayhjZGF0YSwgU1dJR1Y4X1Byb3h5X0RlZmF1bHREdG9yKTsKKyAgIH0KKysjZWxzZQorKyAgaWYoY2RhdGEtPnN3aWdDTWVtT3duICYmIChTV0lHVjhfQ2xpZW50RGF0YSopaW5mby0+Y2xpZW50ZGF0YSkgeworKyAgICBjZGF0YS0+aGFuZGxlLlNldFdlYWsoY2RhdGEsICgoU1dJR1Y4X0NsaWVudERhdGEqKWluZm8tPmNsaWVudGRhdGEpLT5kdG9yLCB2ODo6V2Vha0NhbGxiYWNrVHlwZTo6a1BhcmFtZXRlcik7CisrICB9IGVsc2UgeworKyAgICBjZGF0YS0+aGFuZGxlLlNldFdlYWsoY2RhdGEsIFNXSUdWOF9Qcm94eV9EZWZhdWx0RHRvciwgdjg6OldlYWtDYWxsYmFja1R5cGU6OmtQYXJhbWV0ZXIpOworKyAgfQorICNlbmRpZgorIAorICNpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDQgJiYgKFNXSUdfVjhfVkVSU0lPTiA8IDB4MDMxNzEwKQorQEAgLTQ3MCw3ICs0ODEsMTQgQEAgaW50IFN3aWdWOFBhY2tlZF9DaGVjayh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsUmVmKSB7CisgICAKKyAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqUmVmID0gdmFsUmVmLT5Ub09iamVjdCgpOworICAgaWYob2JqUmVmLT5JbnRlcm5hbEZpZWxkQ291bnQoKSA8IDEpIHJldHVybiBmYWxzZTsKKysjaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZmxhZyA9IG9ialJlZi0+R2V0SGlkZGVuVmFsdWUoU1dJR1Y4X1NUUklOR19ORVcoIl9fc3dpZ19fcGFja2VkX2RhdGFfXyIpKTsKKysjZWxzZQorKyAgdjg6OkxvY2FsPHY4OjpQcml2YXRlPiBwcml2YXRlS2V5ID0gdjg6OlByaXZhdGU6OkZvckFwaSh2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpLCBTV0lHVjhfU1RSSU5HX05FVygiX19zd2lnX19wYWNrZWRfZGF0YV9fIikpOworKyAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZmxhZzsKKysgIGlmICghb2JqUmVmLT5HZXRQcml2YXRlKFNXSUdWOF9DVVJSRU5UX0NPTlRFWFQoKSwgcHJpdmF0ZUtleSkuVG9Mb2NhbCgmZmxhZykpCisrICAgIHJldHVybiBmYWxzZTsKKysjZW5kaWYKKyAgIHJldHVybiAoZmxhZy0+SXNCb29sZWFuKCkgJiYgZmxhZy0+Qm9vbGVhblZhbHVlKCkpOworIH0KKyAKK0BAIC01MTksMTAgKzUzNywxMyBAQCBTV0lHUlVOVElNRSB2b2lkIF93cmFwX1N3aWdWOFBhY2tlZERhdGFfZGVsZXRlKHY4OjpJc29sYXRlICppc29sYXRlLCB2ODo6UGVyc2lzdAorICAgU3dpZ1Y4UGFja2VkRGF0YSAqY2RhdGEgPSBzdGF0aWNfY2FzdDxTd2lnVjhQYWNrZWREYXRhICo+KHBhcmFtZXRlcik7CisgI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA0ICYmIChTV0lHX1Y4X1ZFUlNJT04gPCBTV0lHVjhfU0VUV0VBS19WRVJTSU9OKQorIFNXSUdSVU5USU1FIHZvaWQgX3dyYXBfU3dpZ1Y4UGFja2VkRGF0YV9kZWxldGUodjg6Oklzb2xhdGUgKmlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+ICpvYmplY3QsIFN3aWdWOFBhY2tlZERhdGEgKmNkYXRhKSB7CistI2Vsc2UKKysjZWxpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDUgfHwgKFY4X01BSk9SX1ZFUlNJT04gPT0gNSAmJiBWOF9NSU5PUl9WRVJTSU9OIDwgMikKKyBTV0lHUlVOVElNRSB2b2lkIF93cmFwX1N3aWdWOFBhY2tlZERhdGFfZGVsZXRlKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tEYXRhPHY4OjpPYmplY3QsIFN3aWdWOFBhY2tlZERhdGE+ICZkYXRhKSB7CisgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0ID0gZGF0YS5HZXRWYWx1ZSgpOworICAgU3dpZ1Y4UGFja2VkRGF0YSAqY2RhdGEgPSBkYXRhLkdldFBhcmFtZXRlcigpOworKyNlbHNlCisrU1dJR1JVTlRJTUUgdm9pZCBfd3JhcF9Td2lnVjhQYWNrZWREYXRhX2RlbGV0ZShjb25zdCB2ODo6V2Vha0NhbGxiYWNrSW5mbzxTd2lnVjhQYWNrZWREYXRhPiAmZGF0YSkgeworKyAgU3dpZ1Y4UGFja2VkRGF0YSAqY2RhdGEgPSBkYXRhLkdldFBhcmFtZXRlcigpOworICNlbmRpZgorIAorICAgZGVsZXRlIGNkYXRhOworQEAgLTUzNyw3ICs1NTgsNyBAQCBTV0lHUlVOVElNRSB2b2lkIF93cmFwX1N3aWdWOFBhY2tlZERhdGFfZGVsZXRlKGNvbnN0IHY4OjpXZWFrQ2FsbGJhY2tEYXRhPHY4OjpPYgorICAgb2JqZWN0LT5EaXNwb3NlKGlzb2xhdGUpOworICNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNCAmJiAoU1dJR19WOF9WRVJTSU9OIDwgU1dJR1Y4X1NFVFdFQUtfVkVSU0lPTikKKyAgIG9iamVjdC0+RGlzcG9zZSgpOworLSNlbHNlCisrI2VsaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisgICBvYmplY3QuQ2xlYXIoKTsKKyAjZW5kaWYKKyB9CitAQCAtNTUwLDcgKzU3MSwxMiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU1dJR1Y4X05ld1BhY2tlZE9iaih2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgc3dpZ190eXBlX2luZgorIC8vICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iaiA9IFNXSUdWOF9PQkpFQ1RfTkVXKCk7CisgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqID0gU1dJR1Y4X09CSkVDVF9ORVcoKTsKKyAKKysjaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA1IHx8IChWOF9NQUpPUl9WRVJTSU9OID09IDUgJiYgVjhfTUlOT1JfVkVSU0lPTiA8IDIpCisgICBvYmotPlNldEhpZGRlblZhbHVlKFNXSUdWOF9TVFJJTkdfTkVXKCJfX3N3aWdfX3BhY2tlZF9kYXRhX18iKSwgU1dJR1Y4X0JPT0xFQU5fTkVXKHRydWUpKTsKKysjZWxzZQorKyAgdjg6OkxvY2FsPHY4OjpQcml2YXRlPiBwcml2YXRlS2V5ID0gdjg6OlByaXZhdGU6OkZvckFwaSh2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpLCBTV0lHVjhfU1RSSU5HX05FVygiX19zd2lnX19wYWNrZWRfZGF0YV9fIikpOworKyAgb2JqLT5TZXRQcml2YXRlKFNXSUdWOF9DVVJSRU5UX0NPTlRFWFQoKSwgcHJpdmF0ZUtleSwgU1dJR1Y4X0JPT0xFQU5fTkVXKHRydWUpKTsKKysjZW5kaWYKKyAKKyAjaWYgKFY4X01BSk9SX1ZFUlNJT04tMCkgPCA0ICYmIChTV0lHX1Y4X1ZFUlNJT04gPCAweDAzMTUxMSkKKyAgIG9iai0+U2V0UG9pbnRlckluSW50ZXJuYWxGaWVsZCgwLCBjZGF0YSk7CitAQCAtNTczLDkgKzU5OSwxMSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU1dJR1Y4X05ld1BhY2tlZE9iaih2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgc3dpZ190eXBlX2luZgorICAgY2RhdGEtPmhhbmRsZS5NYWtlV2Vhayh2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpLCBjZGF0YSwgX3dyYXBfU3dpZ1Y4UGFja2VkRGF0YV9kZWxldGUpOworICNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNCAmJiAoU1dJR19WOF9WRVJTSU9OIDwgU1dJR1Y4X1NFVFdFQUtfVkVSU0lPTikKKyAgIGNkYXRhLT5oYW5kbGUuTWFrZVdlYWsoY2RhdGEsIF93cmFwX1N3aWdWOFBhY2tlZERhdGFfZGVsZXRlKTsKKy0jZWxzZQorKyNlbGlmIChWOF9NQUpPUl9WRVJTSU9OLTApIDwgNSB8fCAoVjhfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFY4X01JTk9SX1ZFUlNJT04gPCAyKQorICAgY2RhdGEtPmhhbmRsZS5TZXRXZWFrKGNkYXRhLCBfd3JhcF9Td2lnVjhQYWNrZWREYXRhX2RlbGV0ZSk7CisgLy8gIHY4OjpWODo6U2V0V2VhaygmY2RhdGEtPmhhbmRsZSwgY2RhdGEsIF93cmFwX1N3aWdWOFBhY2tlZERhdGFfZGVsZXRlKTsKKysjZWxzZQorKyAgY2RhdGEtPmhhbmRsZS5TZXRXZWFrKGNkYXRhLCBfd3JhcF9Td2lnVjhQYWNrZWREYXRhX2RlbGV0ZSwgdjg6OldlYWtDYWxsYmFja1R5cGU6OmtQYXJhbWV0ZXIpOworICNlbmRpZgorIAorICNpZiAoVjhfTUFKT1JfVkVSU0lPTi0wKSA8IDQgJiYgKFNXSUdfVjhfVkVSU0lPTiA8IDB4MDMxNzEwKQorLS0gCisyLjkuNQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3aWcvc3dpZ18zLjAuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3aWcvc3dpZ18zLjAuMTIuYmIKaW5kZXggZDVjYWE2Ny4uMTVmNzM0OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zd2lnL3N3aWdfMy4wLjEyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3dpZy9zd2lnXzMuMC4xMi5iYgpAQCAtMiw2ICsyLDcgQEAKIAogU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtVXNlLXByb2Mtc2VsZi1leGUtZm9yLXN3aWctc3dpZ2xpYi1vbi1ub24tV2luMzItcGxhdC5wYXRjaCBcCiAgICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtdXNlLXBrZy1jb25maWctZm9yLXBjcmUtZGV0ZWN0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1Ob2RlLTcueC1ha2EtVjgtNS4yLXN1cHBvcnQucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiODIxMzNkZmE3YmJhNzVmZjlhZDk4YTcwNDZiZTY4N2MiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2NmOWY0NDdhZTdlZDFjNTE3MjJlZmM0NWU3ZjE0NDE4ZDE1ZDdhMWUxNDNhYzlmMDlhNjY4OTk5ZjRmYzk0ZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzbGludXgvc3lzbGludXgvc3lzbGludXgtbGlidXBsb2FkLWRlcGVuZC1saWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c2xpbnV4L3N5c2xpbnV4L3N5c2xpbnV4LWxpYnVwbG9hZC1kZXBlbmQtbGliLnBhdGNoCmluZGV4IGMwNzE0YjUuLjZiYTk2YWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzbGludXgvc3lzbGludXgvc3lzbGludXgtbGlidXBsb2FkLWRlcGVuZC1saWIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXNsaW51eC9zeXNsaW51eC9zeXNsaW51eC1saWJ1cGxvYWQtZGVwZW5kLWxpYi5wYXRjaApAQCAtMjAsMTUgKzIwLDEyIEBACiAgY29tMzIvTWFrZWZpbGUgfCAgICAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAotZGlmZiAtLWdpdCBhL2NvbTMyL01ha2VmaWxlIGIvY29tMzIvTWFrZWZpbGUKLWluZGV4IDlhMTcyMWIuLmYxNzJkYjIgMTAwNjQ0Ci0tLS0gYS9jb20zMi9NYWtlZmlsZQotKysrIGIvY29tMzIvTWFrZWZpbGUKLUBAIC0yMSwzICsyMSw0IEBAIHJvc2g6IGxpYiBsaWJ1dGlsCi0gc2FtcGxlczogbGlidXRpbCBlbGZsaW5rL2xkbGludXgKLSBzeXNkdW1wOiBsaWJ1cGxvYWQgZ3BsbGliCitJbmRleDogc3lzbGludXgtNi4wMy9jb20zMi9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHN5c2xpbnV4LTYuMDMub3JpZy9jb20zMi9NYWtlZmlsZQorKysrIHN5c2xpbnV4LTYuMDMvY29tMzIvTWFrZWZpbGUKK0BAIC0yMiwzICsyMiw0IEBAIHNhbXBsZXM6IGxpYnV0aWwgZWxmbGluay9sZGxpbnV4Cisgc3lzZHVtcDogbGliIGxpYnV0aWwgbGlidXBsb2FkIGdwbGxpYgorIGx1YS9zcmM6IGNtZW51IG1vZHVsZXMKICBncGxsaWI6IGxpYgogK2xpYnVwbG9hZDogbGliCi0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9maWxlcy8wMDAxLXBhcnNlLXV0aWwtRG9uLXQtdXNlLXhsb2NhbGUuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvZmlsZXMvMDAwMS1wYXJzZS11dGlsLURvbi10LXVzZS14bG9jYWxlLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhYTA0NjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9maWxlcy8wMDAxLXBhcnNlLXV0aWwtRG9uLXQtdXNlLXhsb2NhbGUuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gZDM3OTEyNmQ1NmQwYjZlOTM1YjJkOTdjYTcxNTc5ZTZjYzU0ZDFiYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDE4IEp1bCAyMDE3IDEzOjM3OjI3ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHBhcnNlLXV0aWw6IERvbid0IHVzZSB4bG9jYWxlLmgKLQotZ2xpYmMgMi4yNiBubyBsb25nZXIgY29udGFpbnMgdGhlIG5vbi1zdGFuZGFyZCB4bG9jYWxlLmgKLShodHRwOi8vc291cmNld2FyZS5vcmcvZ2xpYmMvd2lraS9SZWxlYXNlLzIuMjYjUmVtb3ZhbF9vZl8uMjd4bG9jYWxlLmguMjcpCi0KLVRoaXMgY2hhbmdlIHNob3VsZG4ndCBicmVhayBhbnl0aGluZyBhcyB4bG9jYWxlLmggd2FzIGEgc3Vic2V0IG9mCi1sb2NhbGUuaC4KLQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kLWJvb3RjaGFydC9wdWxsLzM1XQotLS0tCi0gc3JjL3BhcnNlLXV0aWwuYyB8IDEgLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvcGFyc2UtdXRpbC5jIGIvc3JjL3BhcnNlLXV0aWwuYwotaW5kZXggNTYzNWE2OC4uMWIyMTY5YyAxMDA2NDQKLS0tLSBhL3NyYy9wYXJzZS11dGlsLmMKLSsrKyBiL3NyYy9wYXJzZS11dGlsLmMKLUBAIC0yMSw3ICsyMSw2IEBACi0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPHhsb2NhbGUuaD4KLSAKLSAjaW5jbHVkZSAibWFjcm8uaCIKLSAjaW5jbHVkZSAicGFyc2UtdXRpbC5oIgotLS0gCi0yLjEzLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydC8wMDAxLWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0LzAwMDEtY29tcGFyaXNvbl9mbl90LWlzLWdsaWJjLXNwZWNpZmljLXVzZS1yYXctc2lnbmF0dXJlLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzkyY2VhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydC8wMDAxLWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSA0NWI0MDFhOTQ3YWY5NDRjMjBiM2M0NTFhMzVkZmU1M2JjYTVlZjNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+CitEYXRlOiBUaHUsIDI4IERlYyAyMDE3IDIxOjI0OjU3IC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMS8zXSBjb21wYXJpc29uX2ZuX3QgaXMgZ2xpYmMgc3BlY2lmaWMsIHVzZSByYXcgc2lnbmF0dXJlIGluCisgZnVuY3Rpb24gcG9pbnRlcgorCitNYWtlIGl0IHdvcmsgd2l0aCBtdXNsIHdoZXJlIGNvbXBhcmlzb25fZm5fdCBpcyBub3QgcHJvdmlkZWQKKworUmV1c2UgdGhlIGFwcHJvYWNoIGZyb20gc3lzdGVtZDoKK3N5c3RlbWQvMDAxMy1jb21wYXJpc29uX2ZuX3QtaXMtZ2xpYmMtc3BlY2lmaWMtdXNlLXJhdy1zaWduYXR1cmUtLnBhdGNoCisKK0Jhc2VkIG9uIHdvcmsgYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1NpZ25lZC1vZmYtYnk6IFRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy91dGlsLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdXRpbC5oIGIvc3JjL3V0aWwuaAoraW5kZXggNTYxZjllNy4uZTljZmQ4MSAxMDA2NDQKKy0tLSBhL3NyYy91dGlsLmgKKysrKyBiL3NyYy91dGlsLmgKK0BAIC01Nyw3ICs1Nyw3IEBAIGV4dGVybiBjaGFyICoqc2F2ZWRfYXJndjsKKyAgKiBOb3JtYWwgcXNvcnQgcmVxdWlyZXMgYmFzZSB0byBiZSBub25udWxsLiBIZXJlIHdlcmUgcmVxdWlyZQorICAqIHRoYXQgb25seSBpZiBubWVtYiA+IDAuCisgICovCistc3RhdGljIGlubGluZSB2b2lkIHFzb3J0X3NhZmUodm9pZCAqYmFzZSwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSwgY29tcGFyaXNvbl9mbl90IGNvbXBhcikgeworK3N0YXRpYyBpbmxpbmUgdm9pZCBxc29ydF9zYWZlKHZvaWQgKmJhc2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsIGludCAoKmNvbXBhcikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKSB7CisgICAgICAgICBpZiAobm1lbWIgPD0gMSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuOworIAorLS0gCisyLjEzLjYKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydC8wMDAyLW11c2wtZG9lcy1ub3QtcHJvdmlkZS1wcmludGYtaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnQvMDAwMi1tdXNsLWRvZXMtbm90LXByb3ZpZGUtcHJpbnRmLWgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk2MjcyZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnQvMDAwMi1tdXNsLWRvZXMtbm90LXByb3ZpZGUtcHJpbnRmLWgucGF0Y2gKQEAgLTAsMCArMSw0MjMgQEAKK0Zyb20gNmY5NDU0MTg0YTAyMzEwODAyYjFlZDNlNDAyODc5NThiNTI0YTQ5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPgorRGF0ZTogVGh1LCAyOCBEZWMgMjAxNyAyMTozOTo1MSAtMDgwMAorU3ViamVjdDogW1BBVENIIDIvM10gbXVzbCBkb2VzIG5vdCBwcm92aWRlIHByaW50Zi5oCisKK1JldXNlIHRoZSBhcHByb2FjaCBmcm9tIHN5c3RlbWQ6CitzeXN0ZW1kLzAwMDEtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2gKKworT3JpZ2luYWwgcGF0Y2ggYXV0aG9yOiBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KK0luY2x1ZGVzIHdvcmsgYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1NpZ25lZC1vZmYtYnk6IFRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIE1ha2VmaWxlLmFtICAgICAgICAgICAgICAgfCAgIDQgKworIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgfCAgIDMgKworIHNyYy9sb2cuYyAgICAgICAgICAgICAgICAgfCAgIDEgKworIHNyYy9wYXJzZS1wcmludGYtZm9ybWF0LmMgfCAyNzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIHNyYy9wYXJzZS1wcmludGYtZm9ybWF0LmggfCAgNTcgKysrKysrKysrKworIHNyYy9zdGRpby11dGlsLmggICAgICAgICAgfCAgIDEgLQorIDYgZmlsZXMgY2hhbmdlZCwgMzM4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3BhcnNlLXByaW50Zi1mb3JtYXQuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCA5YmJjOGZhLi5iODg3ZDE2IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMTY5LDYgKzE2OSwxMCBAQCBsaWJ1dGlsc19sYV9TT1VSQ0VTID0gXAorIAlzcmMvdXRpbC5jIFwKKyAJc3JjL3V0aWwuaAorIAorK2lmICFIQVZFX1BSSU5URl9IIAorK2xpYnV0aWxzX2xhX1NPVVJDRVMgKz0gc3JjL3BhcnNlLXByaW50Zi1mb3JtYXQuYworK2VuZGlmCisrCisgbGlidXRpbHNfbGFfQ0ZMQUdTID0gXAorIAkkKEFNX0NGTEFHUykgXAorIAkkKExJQlNZU1RFTURfQ0ZMQUdTKQorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggN2Y3NGJhYy4uMDYyZTMxMCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNzMsNiArNzMsOSBAQCBBU19JRihbdGVzdCAieCR3aXRoX2xpYnN5c3RlbWQiICE9IHhub10sCisgICAgICAgICApXQorICkKKyAKKytBQ19DSEVDS19IRUFERVJTKFtwcmludGYuaF0sIFtdLCBbXSkKKytBTV9DT05ESVRJT05BTChIQVZFX1BSSU5URl9ILCBbdGVzdCAieCRhY19jdl9oZWFkZXJfcHJpbnRfaCIgPSB4eWVzXSkKKysKKyBDQ19DSEVDS19GTEFHU19BUFBFTkQoW3dpdGhfY2ZsYWdzXSwgW0NGTEFHU10sIFtcCisgICAgICAgICAtcGlwZSBcCisgICAgICAgICAtV2FsbCBcCitkaWZmIC0tZ2l0IGEvc3JjL2xvZy5jIGIvc3JjL2xvZy5jCitpbmRleCAxNWRlYzgzLi5hZWNmMjMxIDEwMDY0NAorLS0tIGEvc3JjL2xvZy5jCisrKysgYi9zcmMvbG9nLmMKK0BAIC0yOCw2ICsyOCw3IEBACisgI2luY2x1ZGUgPHN5cy91aW8uaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgCisrI2luY2x1ZGUgInBhcnNlLXByaW50Zi1mb3JtYXQuaCIKKyAjaW5jbHVkZSAic2QtbWVzc2FnZXMuaCIKKyAKKyAjaW5jbHVkZSAiZmQtdXRpbC5oIgorZGlmZiAtLWdpdCBhL3NyYy9wYXJzZS1wcmludGYtZm9ybWF0LmMgYi9zcmMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNDk0MzdlNQorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjL3BhcnNlLXByaW50Zi1mb3JtYXQuYworQEAgLTAsMCArMSwyNzMgQEAKKysvKi0qLSBNb2RlOiBDOyBjLWJhc2ljLW9mZnNldDogODsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLSovCisrCisrLyoqKgorKyAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc3lzdGVtZC4KKysKKysgIENvcHlyaWdodCAyMDE0IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorKworKyAgV2l0aCBwYXJ0cyBmcm9tIHRoZSBtdXNsIEMgbGlicmFyeQorKyAgQ29weXJpZ2h0IDIwMDUtMjAxNCBSaWNoIEZlbGtlciwgZXQgYWwuCisrCisrICBzeXN0ZW1kIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKysgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgIHN5c3RlbWQgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCisrICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqKiovCisrCisrI2luY2x1ZGUgPHN0ZGRlZi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysKKysjaW5jbHVkZSAicGFyc2UtcHJpbnRmLWZvcm1hdC5oIgorKworK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX25vbmFyZyhjb25zdCBjaGFyICpmbXQpCisreworKyAgICAgICAgZG8geworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnXDAnKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7CisrICAgICAgICB9IHdoaWxlICgqZm10KysgIT0gJyUnKTsKKysgICAgICAgIHJldHVybiBmbXQ7CisrfQorKworK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX251bShjb25zdCBjaGFyICpmbXQpCisreworKyAgICAgICAgZm9yICg7KmZtdCA+PSAnMCcgJiYgKmZtdCA8PSAnOSc7IGZtdCsrKQorKyAgICAgICAgICAgICAgICAvKiBkbyBub3RoaW5nICovOworKyAgICAgICAgcmV0dXJuIGZtdDsKKyt9CisrCisrc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfYXJnbihjb25zdCBjaGFyICpmbXQsIHNpemVfdCAqYXJnKQorK3sKKysgICAgICAgIGNvbnN0IGNoYXIgKnAgPSBmbXQ7CisrICAgICAgICBzaXplX3QgdmFsID0gMDsKKysKKysgICAgICAgIGlmICgqcCA8ICcxJyB8fCAqcCA+ICc5JykKKysgICAgICAgICAgICAgICAgcmV0dXJuIGZtdDsKKysgICAgICAgIGRvIHsKKysgICAgICAgICAgICAgICAgdmFsID0gMTAqdmFsICsgKCpwKysgLSAnMCcpOworKyAgICAgICAgfSB3aGlsZSAoKnAgPj0gJzAnICYmICpwIDw9ICc5Jyk7CisrCisrICAgICAgICBpZiAoKnAgIT0gJyQnKQorKyAgICAgICAgICAgICAgICByZXR1cm4gZm10OworKyAgICAgICAgKmFyZyA9IHZhbDsKKysgICAgICAgIHJldHVybiBwKzE7CisrfQorKworK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX2ZsYWdzKGNvbnN0IGNoYXIgKmZtdCkKKyt7CisrICAgICAgICB3aGlsZSAoMSkgeworKyAgICAgICAgICAgICAgICBzd2l0Y2ggKCpmbXQpIHsKKysgICAgICAgICAgICAgICAgY2FzZSAnIyc6CisrICAgICAgICAgICAgICAgIGNhc2UgJzAnOgorKyAgICAgICAgICAgICAgICBjYXNlICctJzoKKysgICAgICAgICAgICAgICAgY2FzZSAnICc6CisrICAgICAgICAgICAgICAgIGNhc2UgJysnOgorKyAgICAgICAgICAgICAgICBjYXNlICdcJyc6CisrICAgICAgICAgICAgICAgIGNhc2UgJ0knOgorKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCsrOworKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7CisrICAgICAgICB9CisrfQorKworK2VudW0gc3RhdGUgeworKyAgICAgICAgQkFSRSwKKysgICAgICAgIExQUkUsCisrICAgICAgICBMTFBSRSwKKysgICAgICAgIEhQUkUsCisrICAgICAgICBISFBSRSwKKysgICAgICAgIEJJR0xQUkUsCisrICAgICAgICBaVFBSRSwKKysgICAgICAgIEpQUkUsCisrICAgICAgICBTVE9QCisrfTsKKysKKytlbnVtIHR5cGUgeworKyAgICAgICAgTk9ORSwKKysgICAgICAgIFBUUiwKKysgICAgICAgIElOVCwKKysgICAgICAgIFVJTlQsCisrICAgICAgICBVTExPTkcsCisrICAgICAgICBMT05HLAorKyAgICAgICAgVUxPTkcsCisrICAgICAgICBTSE9SVCwKKysgICAgICAgIFVTSE9SVCwKKysgICAgICAgIENIQVIsCisrICAgICAgICBVQ0hBUiwKKysgICAgICAgIExMT05HLAorKyAgICAgICAgU0laRVQsCisrICAgICAgICBJTUFYLAorKyAgICAgICAgVU1BWCwKKysgICAgICAgIFBESUZGLAorKyAgICAgICAgVUlQVFIsCisrICAgICAgICBEQkwsCisrICAgICAgICBMREJMLAorKyAgICAgICAgTUFYVFlQRQorK307CisrCisrc3RhdGljIGNvbnN0IHNob3J0IHBhX3R5cGVzW01BWFRZUEVdID0geworKyAgICAgICAgW05PTkVdICAgPSBQQV9JTlQsCisrICAgICAgICBbUFRSXSAgICA9IFBBX1BPSU5URVIsCisrICAgICAgICBbSU5UXSAgICA9IFBBX0lOVCwKKysgICAgICAgIFtVSU5UXSAgID0gUEFfSU5ULAorKyAgICAgICAgW1VMTE9OR10gPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKKysgICAgICAgIFtMT05HXSAgID0gUEFfSU5UIHwgUEFfRkxBR19MT05HLAorKyAgICAgICAgW1VMT05HXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCisrICAgICAgICBbU0hPUlRdICA9IFBBX0lOVCB8IFBBX0ZMQUdfU0hPUlQsCisrICAgICAgICBbVVNIT1JUXSA9IFBBX0lOVCB8IFBBX0ZMQUdfU0hPUlQsCisrICAgICAgICBbQ0hBUl0gICA9IFBBX0NIQVIsCisrICAgICAgICBbVUNIQVJdICA9IFBBX0NIQVIsCisrICAgICAgICBbTExPTkddICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAorKyAgICAgICAgW1NJWkVUXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCisrICAgICAgICBbSU1BWF0gICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAorKyAgICAgICAgW1VNQVhdICAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKKysgICAgICAgIFtQRElGRl0gID0gUEFfSU5UIHwgUEFfRkxBR19MT05HX0xPTkcsCisrICAgICAgICBbVUlQVFJdICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9ORywKKysgICAgICAgIFtEQkxdICAgID0gUEFfRE9VQkxFLAorKyAgICAgICAgW0xEQkxdICAgPSBQQV9ET1VCTEUgfCBQQV9GTEFHX0xPTkdfRE9VQkxFCisrfTsKKysKKysjZGVmaW5lIFMoeCkgWyh4KS0nQSddCisrI2RlZmluZSBFKHgpIChTVE9QICsgKHgpKQorKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHN0YXRlc1tdWyd6Jy0nQScrMV0gPSB7CisrICAgICAgICB7IC8qIDA6IGJhcmUgdHlwZXMgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShJTlQpLCBTKCdpJykgPSBFKElOVCksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVUlOVCksUygndScpID0gRShVSU5UKSxTKCd4JykgPSBFKFVJTlQpLCBTKCdYJykgPSBFKFVJTlQpLAorKyAgICAgICAgICAgICAgICBTKCdlJykgPSBFKERCTCksIFMoJ2YnKSA9IEUoREJMKSwgUygnZycpID0gRShEQkwpLCAgUygnYScpID0gRShEQkwpLAorKyAgICAgICAgICAgICAgICBTKCdFJykgPSBFKERCTCksIFMoJ0YnKSA9IEUoREJMKSwgUygnRycpID0gRShEQkwpLCAgUygnQScpID0gRShEQkwpLAorKyAgICAgICAgICAgICAgICBTKCdjJykgPSBFKENIQVIpLFMoJ0MnKSA9IEUoSU5UKSwKKysgICAgICAgICAgICAgICAgUygncycpID0gRShQVFIpLCBTKCdTJykgPSBFKFBUUiksIFMoJ3AnKSA9IEUoVUlQVFIpLFMoJ24nKSA9IEUoUFRSKSwKKysgICAgICAgICAgICAgICAgUygnbScpID0gRShOT05FKSwKKysgICAgICAgICAgICAgICAgUygnbCcpID0gTFBSRSwgICBTKCdoJykgPSBIUFJFLCBTKCdMJykgPSBCSUdMUFJFLAorKyAgICAgICAgICAgICAgICBTKCd6JykgPSBaVFBSRSwgIFMoJ2onKSA9IEpQUkUsIFMoJ3QnKSA9IFpUUFJFCisrICAgICAgICB9LCB7IC8qIDE6IGwtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShMT05HKSwgUygnaScpID0gRShMT05HKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVTE9ORyksUygndScpID0gRShVTE9ORyksUygneCcpID0gRShVTE9ORyksUygnWCcpID0gRShVTE9ORyksCisrICAgICAgICAgICAgICAgIFMoJ2UnKSA9IEUoREJMKSwgIFMoJ2YnKSA9IEUoREJMKSwgIFMoJ2cnKSA9IEUoREJMKSwgIFMoJ2EnKSA9IEUoREJMKSwKKysgICAgICAgICAgICAgICAgUygnRScpID0gRShEQkwpLCAgUygnRicpID0gRShEQkwpLCAgUygnRycpID0gRShEQkwpLCAgUygnQScpID0gRShEQkwpLAorKyAgICAgICAgICAgICAgICBTKCdjJykgPSBFKElOVCksICBTKCdzJykgPSBFKFBUUiksICBTKCduJykgPSBFKFBUUiksCisrICAgICAgICAgICAgICAgIFMoJ2wnKSA9IExMUFJFCisrICAgICAgICB9LCB7IC8qIDI6IGxsLXByZWZpeGVkICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoTExPTkcpLCBTKCdpJykgPSBFKExMT05HKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVTExPTkcpLFMoJ3UnKSA9IEUoVUxMT05HKSwKKysgICAgICAgICAgICAgICAgUygneCcpID0gRShVTExPTkcpLFMoJ1gnKSA9IEUoVUxMT05HKSwKKysgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCisrICAgICAgICB9LCB7IC8qIDM6IGgtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShTSE9SVCksIFMoJ2knKSA9IEUoU0hPUlQpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVTSE9SVCksUygndScpID0gRShVU0hPUlQpLAorKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVTSE9SVCksUygnWCcpID0gRShVU0hPUlQpLAorKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUiksCisrICAgICAgICAgICAgICAgIFMoJ2gnKSA9IEhIUFJFCisrICAgICAgICB9LCB7IC8qIDQ6IGhoLXByZWZpeGVkICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoQ0hBUiksIFMoJ2knKSA9IEUoQ0hBUiksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVUNIQVIpLFMoJ3UnKSA9IEUoVUNIQVIpLAorKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVDSEFSKSxTKCdYJykgPSBFKFVDSEFSKSwKKysgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCisrICAgICAgICB9LCB7IC8qIDU6IEwtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZScpID0gRShMREJMKSxTKCdmJykgPSBFKExEQkwpLFMoJ2cnKSA9IEUoTERCTCksIFMoJ2EnKSA9IEUoTERCTCksCisrICAgICAgICAgICAgICAgIFMoJ0UnKSA9IEUoTERCTCksUygnRicpID0gRShMREJMKSxTKCdHJykgPSBFKExEQkwpLCBTKCdBJykgPSBFKExEQkwpLAorKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUikKKysgICAgICAgIH0sIHsgLyogNjogei0gb3IgdC1wcmVmaXhlZCAoYXNzdW1lZCB0byBiZSBzYW1lIHNpemUpICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoUERJRkYpLFMoJ2knKSA9IEUoUERJRkYpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFNJWkVUKSxTKCd1JykgPSBFKFNJWkVUKSwKKysgICAgICAgICAgICAgICAgUygneCcpID0gRShTSVpFVCksUygnWCcpID0gRShTSVpFVCksCisrICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQorKyAgICAgICAgfSwgeyAvKiA3OiBqLXByZWZpeGVkICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoSU1BWCksIFMoJ2knKSA9IEUoSU1BWCksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVU1BWCksIFMoJ3UnKSA9IEUoVU1BWCksCisrICAgICAgICAgICAgICAgIFMoJ3gnKSA9IEUoVU1BWCksIFMoJ1gnKSA9IEUoVU1BWCksCisrICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQorKyAgICAgICAgfQorK307CisrCisrc2l6ZV90IHBhcnNlX3ByaW50Zl9mb3JtYXQoY29uc3QgY2hhciAqZm10LCBzaXplX3QgbiwgaW50ICp0eXBlcykKKyt7CisrICAgICAgICBzaXplX3QgaSA9IDA7CisrICAgICAgICBzaXplX3QgbGFzdCA9IDA7CisrCisrICAgICAgICBtZW1zZXQodHlwZXMsIDAsIG4pOworKworKyAgICAgICAgd2hpbGUgKDEpIHsKKysgICAgICAgICAgICAgICAgc2l6ZV90IGFyZzsKKysgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHN0YXRlOworKworKyAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX25vbmFyZyhmbXQpOworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnXDAnKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnJScpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBmbXQrKzsKKysgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBhcmcgPSAwOworKyAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2FyZ24oZm10LCAmYXJnKTsKKysgICAgICAgICAgICAgICAgLyogZmxhZ3MgKi8KKysgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9mbGFncyhmbXQpOworKyAgICAgICAgICAgICAgICAvKiB3aWR0aCAqLworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnKicpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgd2FyZyA9IDA7CisrICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9hcmduKGZtdCsxLCAmd2FyZyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcmcgPSArK2k7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPiBsYXN0KQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHdhcmc7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPD0gbiAmJiB0eXBlc1t3YXJnLTFdID09IE5PTkUpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlc1t3YXJnLTFdID0gSU5UOworKyAgICAgICAgICAgICAgICB9IGVsc2UKKysgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX251bShmbXQpOworKyAgICAgICAgICAgICAgICAvKiBwcmVjaXNpb24gKi8KKysgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJy4nKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJyonKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGFyZyA9IDA7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2FyZ24oZm10KzEsICZwYXJnKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJnID09IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmcgPSArK2k7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZyA+IGxhc3QpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgPSBwYXJnOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmcgPD0gbiAmJiB0eXBlc1twYXJnLTFdID09IE5PTkUpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzW3BhcmctMV0gPSBJTlQ7CisrICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICctJykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX251bShmbXQpOworKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAvKiBsZW5ndGggbW9kaWZpZXIgYW5kIGNvbnZlcnNpb24gc3BlY2lmaWVyICovCisrICAgICAgICAgICAgICAgIHN0YXRlID0gQkFSRTsKKysgICAgICAgICAgICAgICAgZG8geworKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9ICpmbXQrKzsKKysKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA8ICdBJyB8fCBjID4gJ3onKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZXNbc3RhdGVdUyhjKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgICAgICB9IHdoaWxlIChzdGF0ZSA8IFNUT1ApOworKworKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gRShOT05FKSkKKysgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysKKysgICAgICAgICAgICAgICAgaWYgKGFyZyA9PSAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9ICsraTsKKysgICAgICAgICAgICAgICAgaWYgKGFyZyA+IGxhc3QpCisrICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IGFyZzsKKysgICAgICAgICAgICAgICAgaWYgKGFyZyA8PSBuKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzW2FyZy0xXSA9IHN0YXRlIC0gU1RPUDsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmIChsYXN0ID4gbikKKysgICAgICAgICAgICAgICAgbGFzdCA9IG47CisrICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGFzdDsgaSsrKQorKyAgICAgICAgICAgICAgICB0eXBlc1tpXSA9IHBhX3R5cGVzW3R5cGVzW2ldXTsKKysKKysgICAgICAgIHJldHVybiBsYXN0OworK30KK2RpZmYgLS1naXQgYS9zcmMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oIGIvc3JjL3BhcnNlLXByaW50Zi1mb3JtYXQuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjQzNzExNzcKKy0tLSAvZGV2L251bGwKKysrKyBiL3NyYy9wYXJzZS1wcmludGYtZm9ybWF0LmgKK0BAIC0wLDAgKzEsNTcgQEAKKysvKi0qLSBNb2RlOiBDOyBjLWJhc2ljLW9mZnNldDogODsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLSovCisrCisrLyoqKgorKyAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc3lzdGVtZC4KKysKKysgIENvcHlyaWdodCAyMDE0IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorKworKyAgV2l0aCBwYXJ0cyBmcm9tIHRoZSBHTlUgQyBMaWJyYXJ5CisrICBDb3B5cmlnaHQgMTk5MS0yMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgc3lzdGVtZCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisrICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IKKysgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICBzeXN0ZW1kIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorKyAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKioqLworKworKyNwcmFnbWEgb25jZQorKworKyNpbmNsdWRlICJjb25maWcuaCIKKysKKysjaWZkZWYgSEFWRV9QUklOVEZfSAorKyNpbmNsdWRlIDxwcmludGYuaD4KKysjZWxzZQorKworKyNpbmNsdWRlIDxzdGRkZWYuaD4KKysKKytlbnVtIHsJCQkJLyogQyB0eXBlOiAqLworKyAgUEFfSU5ULAkJCS8qIGludCAqLworKyAgUEFfQ0hBUiwJCQkvKiBpbnQsIGNhc3QgdG8gY2hhciAqLworKyAgUEFfV0NIQVIsCQkJLyogd2lkZSBjaGFyICovCisrICBQQV9TVFJJTkcsCQkJLyogY29uc3QgY2hhciAqLCBhICdcMCctdGVybWluYXRlZCBzdHJpbmcgKi8KKysgIFBBX1dTVFJJTkcsCQkJLyogY29uc3Qgd2NoYXJfdCAqLCB3aWRlIGNoYXJhY3RlciBzdHJpbmcgKi8KKysgIFBBX1BPSU5URVIsCQkJLyogdm9pZCAqICovCisrICBQQV9GTE9BVCwJCQkvKiBmbG9hdCAqLworKyAgUEFfRE9VQkxFLAkJCS8qIGRvdWJsZSAqLworKyAgUEFfTEFTVAorK307CisrCisrLyogRmxhZyBiaXRzIHRoYXQgY2FuIGJlIHNldCBpbiBhIHR5cGUgcmV0dXJuZWQgYnkgYHBhcnNlX3ByaW50Zl9mb3JtYXQnLiAgKi8KKysjZGVmaW5lCVBBX0ZMQUdfTUFTSwkJMHhmZjAwCisrI2RlZmluZQlQQV9GTEFHX0xPTkdfTE9ORwkoMSA8PCA4KQorKyNkZWZpbmUJUEFfRkxBR19MT05HX0RPVUJMRQlQQV9GTEFHX0xPTkdfTE9ORworKyNkZWZpbmUJUEFfRkxBR19MT05HCQkoMSA8PCA5KQorKyNkZWZpbmUJUEFfRkxBR19TSE9SVAkJKDEgPDwgMTApCisrI2RlZmluZQlQQV9GTEFHX1BUUgkJKDEgPDwgMTEpCisrCisrc2l6ZV90IHBhcnNlX3ByaW50Zl9mb3JtYXQoY29uc3QgY2hhciAqZm10LCBzaXplX3QgbiwgaW50ICp0eXBlcyk7CisrCisrI2VuZGlmIC8qIEhBVkVfUFJJTlRGX0ggKi8KK2RpZmYgLS1naXQgYS9zcmMvc3RkaW8tdXRpbC5oIGIvc3JjL3N0ZGlvLXV0aWwuaAoraW5kZXggMGE2NzU1Ny4uMjFjYzUxNSAxMDA2NDQKKy0tLSBhL3NyYy9zdGRpby11dGlsLmgKKysrKyBiL3NyYy9zdGRpby11dGlsLmgKK0BAIC0xOSw3ICsxOSw2IEBACisgICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqKiovCisgCistI2luY2x1ZGUgPHByaW50Zi5oPgorICNpbmNsdWRlIDxzdGRhcmcuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistLSAKKzIuMTMuNgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0LzAwMDMtbXVzbC1kb2VzLW5vdC1wcm92aWRlLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0LzAwMDMtbXVzbC1kb2VzLW5vdC1wcm92aWRlLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzY3MGQ5NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnQvMDAwMy1tdXNsLWRvZXMtbm90LXByb3ZpZGUtY2Fub25pY2FsaXplX2ZpbGVfbmFtZS5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDc5Mzk2NDQ5ZDI2NGJkZTU4YjRkYWEzZWY2ZGQ5OWYwZjA2NTI0MjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IFRodSwgMjggRGVjIDIwMTcgMjI6MTA6NTggLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIG11c2wgZG9lcyBub3QgcHJvdmlkZSBjYW5vbmljYWxpemVfZmlsZV9uYW1lCisKK1JldXNlIHRoZSBhcHByb2FjaCBmcm9tIHN5c3RlbWQ6CitzeXN0ZW1kLzAwMDctY2hlY2stZm9yLW1pc3NpbmctY2Fub25pY2FsaXplX2ZpbGVfbmFtZS5wYXRjaAorCitCYXNlZCBvbiB3b3JrIGJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitTaWduZWQtb2ZmLWJ5OiBUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBzcmMvcGF0aC11dGlsLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcGF0aC11dGlsLmMgYi9zcmMvcGF0aC11dGlsLmMKK2luZGV4IDJmYjYzNjYuLjEyZTJlMTcgMTAwNjQ0CistLS0gYS9zcmMvcGF0aC11dGlsLmMKKysrKyBiL3NyYy9wYXRoLXV0aWwuYworQEAgLTYzLDcgKzYzLDcgQEAgY2hhciAqKnBhdGhfc3Rydl9yZXNvbHZlKGNoYXIgKipsLCBjb25zdCBjaGFyICpwcmVmaXgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gKnM7CisgCisgICAgICAgICAgICAgICAgIGVycm5vID0gMDsKKy0gICAgICAgICAgICAgICAgdSA9IGNhbm9uaWNhbGl6ZV9maWxlX25hbWUodCk7CisrICAgICAgICAgICAgICAgIHUgPSByZWFscGF0aCh0LCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgaWYgKCF1KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT0VOVCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWZpeCkgeworLS0gCisyLjEzLjYKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydF8yMzEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRhMDAwZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUxJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuTEdQTDIuMTttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5HUEwyO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC1ib290Y2hhcnQuZ2l0O3Byb3RvY29sPWh0dHBzIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcGFyc2UtdXRpbC1Eb24tdC11c2UteGxvY2FsZS5oLnBhdGNoIFwKLSIKLQotIyBNb2RpZnkgdGhlc2UgYXMgZGVzaXJlZAotUFYgPSAiMjMxK2dpdCR7U1JDUFZ9IgotU1JDUkVWID0gIjllZTJmZmMxZGM2YzgyMDk3MjVlNjI1OTU0YmJkODlmOTZjYjcxMzkiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLURFUEVORFMgPSAic3lzdGVtZCBsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIGludGx0b29sIgotCi1pbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMgc3lzdGVtZCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJzeXN0ZW1kLWJvb3RjaGFydC5zZXJ2aWNlIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAjIGludGx0b29sLm00IGlzIGEgc29mdCBsaW5rIHRvIC91c3Ivc2hhcmUvYWNsb2NhbC9tNCwgZGVsZXRlIGl0IGFuZCB1c2UgdGhlIG9uZSBpbiBvdXIgc3lzcm9vdAotICAgIHJtIC1mICR7U30vbTQvaW50bHRvb2wubTQKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW1kLWJvb3RjaGFydCIKLQotRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcm9vdHByZWZpeD0ke2Jhc2VfcHJlZml4fSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1yb290bGliZGlyPSR7YmFzZV9saWJkaXJ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydF8yMzMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWUyMWIxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydF8yMzMuYmIKQEAgLTAsMCArMSwzNyBAQAorTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5MR1BMMi4xO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLkdQTDI7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kLWJvb3RjaGFydC5naXQ7cHJvdG9jb2w9aHR0cHMgXAorIgorCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIFwKKyAgICBmaWxlOi8vMDAwMS1jb21wYXJpc29uX2ZuX3QtaXMtZ2xpYmMtc3BlY2lmaWMtdXNlLXJhdy1zaWduYXR1cmUtLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1tdXNsLWRvZXMtbm90LXByb3ZpZGUtcHJpbnRmLWgucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAzLW11c2wtZG9lcy1ub3QtcHJvdmlkZS1jYW5vbmljYWxpemVfZmlsZV9uYW1lLnBhdGNoIFwKKyAgICAiCisKKworIyBNb2RpZnkgdGhlc2UgYXMgZGVzaXJlZAorUFYgPSAiMjMzK2dpdCR7U1JDUFZ9IgorU1JDUkVWID0gImZlMWM1ZTQxZTZiZGI3ODA0M2RhZDhmYTg2M2ZjMmRmNjZkMWRhZGYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0RFUEVORFMgPSAic3lzdGVtZCBsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIGludGx0b29sIgorCitpbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMgc3lzdGVtZCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJzeXN0ZW1kLWJvb3RjaGFydC5zZXJ2aWNlIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAjIGludGx0b29sLm00IGlzIGEgc29mdCBsaW5rIHRvIC91c3Ivc2hhcmUvYWNsb2NhbC9tNCwgZGVsZXRlIGl0IGFuZCB1c2UgdGhlIG9uZSBpbiBvdXIgc3lzcm9vdAorICAgIHJtIC1mICR7U30vbTQvaW50bHRvb2wubTQKK30KKworRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW1kLWJvb3RjaGFydCIKKworRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcm9vdHByZWZpeD0ke2Jhc2VfcHJlZml4fSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1yb290bGliZGlyPSR7YmFzZV9saWJkaXJ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50L2ZpeF9yYW5saWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnQvZml4X3JhbmxpYi5wYXRjaAppbmRleCA1ZDcwNDU2Li5iNjZmNDFhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnQvZml4X3JhbmxpYi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnQvZml4X3JhbmxpYi5wYXRjaApAQCAtMSwxNCArMSwxNiBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtwb2t5LXNwZWNpZmljIGZpeF0KIAotLS0tIGEvTWFrZWZpbGUuaW5jCi0rKysgYi9NYWtlZmlsZS5pbmMKLUBAIC01Nyw2ICs1Nyw5IEBACi0gICBpZmVxICgkKE5PX1VVSUQpLCkKLSAgICAgTElCUyArPSAtbHV1aWQKK0luZGV4OiBhZ2VudC9NYWtlZmlsZS5pbmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhZ2VudC5vcmlnL01ha2VmaWxlLmluYworKysrIGFnZW50L01ha2VmaWxlLmluYworQEAgLTg4LDYgKzg4LDkgQEAgaWZuZXEgKCQoT1BTWVMpLFdpbmRvd3MpCisgICBpZm5lcSAoJChDQyksZysrKQorICAgICBPUFRTICs9IC1XbWlzc2luZy1wcm90b3R5cGVzCiAgICBlbmRpZgogKyAgaWZuZXEgKCQoUkFOTElCKSwpCiArICAgIFJBTkxJQiArPSAkQAogKyAgZW5kaWYKICBlbmRpZgogIAotIGlmbmVxICgkKE9QU1lTKSxXaW5kb3dzKQorICMgQ29tcGlsZXIgZmxhZ3MgZGVmaW5pdGlvbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudF9naXQuYmIKaW5kZXggOWRiMjZkYy4uYmExNGM0MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50X2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnRfZ2l0LmJiCkBAIC0xNiw3ICsxNiw2IEBACiAgICAgICAgICAgIGZpbGU6Ly90Y2YtYWdlbnQuaW5pdCBcCiAgICAgICAgICAgIGZpbGU6Ly90Y2YtYWdlbnQuc2VydmljZSBcCiAgICAgICAgICAgIgotVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIERFUEVORFMgPSAidXRpbC1saW51eCBvcGVuc3NsIgogUkRFUEVORFNfJHtQTn0gPSAiYmFzaCIKQEAgLTMxLDcgKzMwLDcgQEAKIElOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDk5IDMgNSAuIHN0b3AgMjAgMCAxIDIgNiAuIgogCiAjIG1hbmdsaW5nIG5lZWRlZCBmb3IgbWFrZQotTUFLRV9BUkNIID0gImBlY2hvICR7VEFSR0VUX0FSQ0h9IHwgc2VkIHMsaS44NixpNjg2LCB8IHNlZCBzLGFhcmNoNjQsYTY0LGAiCitNQUtFX0FSQ0ggPSAiYGVjaG8gJHtUQVJHRVRfQVJDSH0gfCBzZWQgcyxpLjg2LGk2ODYsIHwgc2VkIHMsYWFyY2g2NC4qLGE2NCxgIgogTUFLRV9PUyA9ICJgZWNobyAke1RBUkdFVF9PU30gfCBzZWQgcyxebGludXguKixHTlUvTGludXgsYCIKIAogRVhUUkFfT0VNQUtFID0gIk1BQ0hJTkU9JHtNQUtFX0FSQ0h9IE9QU1lTPSR7TUFLRV9PU30gJ0NDPSR7Q0N9JyAnQVI9JHtBUn0nIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2wvdGNsLWFkZC1zb25hbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC90Y2wtYWRkLXNvbmFtZS5wYXRjaAppbmRleCA5NjI3NmVhLi5kMWZjOWI5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC90Y2wtYWRkLXNvbmFtZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC90Y2wtYWRkLXNvbmFtZS5wYXRjaApAQCAtMTEsNyArMTEsNyBAQAogKwkgICAgIyBmb2xsb3dpbmcgbGluZSBhZGRlZCBieSBDVyBmb3IgRGViaWFuIEdOVS9MaW51eAogKwkgICAgVENMX1NITElCX0xEX0VYVFJBUz0iLVdsLC1zb25hbWUsXCR7VENMX0xJQl9GSUxFfS4wIgogKwotIAkgICAgU0hMSUJfTEQ9JyR7Q0N9IC1zaGFyZWQgJHtDRkxBR1N9ICR7TERGTEFHU30nCisgCSAgICBTSExJQl9MRD0nJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30gLXNoYXJlZCcKICAJICAgIERMX09CSlM9InRjbExvYWREbC5vIgogIAkgICAgRExfTElCUz0iLWxkbCIKIEluZGV4OiB1bml4L3RjbC5tNApAQCAtMjUsNyArMjUsNyBAQAogKwkgICAgIyBmb2xsb3dpbmcgbGluZSBhZGRlZCBieSBDVyBmb3IgRGViaWFuIEdOVS9MaW51eAogKwkgICAgVENMX1NITElCX0xEX0VYVFJBUz0iLVdsLC1zb25hbWUsXCR7VENMX0xJQl9GSUxFfS4wIgogKwotIAkgICAgU0hMSUJfTEQ9JyR7Q0N9IC1zaGFyZWQgJHtDRkxBR1N9ICR7TERGTEFHU30nCisgCSAgICBTSExJQl9MRD0nJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30gLXNoYXJlZCcKICAJICAgIERMX09CSlM9InRjbExvYWREbC5vIgogIAkgICAgRExfTElCUz0iLWxkbCIKIEluZGV4OiB1bml4L01ha2VmaWxlLmluCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbF84LjYuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWM3M2JlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLVNVTU1BUlkgPSAiVG9vbCBDb21tYW5kIExhbmd1YWdlIgotSE9NRVBBR0UgPSAiaHR0cDovL3RjbC5zb3VyY2Vmb3JnZS5uZXQiCi1TRUNUSU9OID0gImRldmVsL3RjbHRrIgotCi0jIGh0dHA6Ly93d3cudGNsLnRrL3NvZnR3YXJlL3RjbHRrL2xpY2Vuc2UuaHRtbAotTElDRU5TRSA9ICJ0Y2wgJiBCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0gICAgZmlsZTovLy4uL2NvbXBhdC9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0gICAgZmlsZTovLy4uL2xpYnJhcnkvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAotICAgIGZpbGU6Ly8uLi9tYWNvc3gvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAotICAgIGZpbGU6Ly8uLi90ZXN0cy9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0gICAgZmlsZTovLy4uL3dpbi9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0iCi0KLURFUEVORFMgPSAidGNsLW5hdGl2ZSB6bGliIgotCi1CQVNFX1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3RjbC8ke0JQTn0ke1BWfS1zcmMudGFyLmd6IFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vdGNsLWFkZC1zb25hbWUucGF0Y2giCi1TUkNfVVJJID0gIiR7QkFTRV9TUkNfVVJJfSBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfbm9uX25hdGl2ZV9idWlsZF9pc3N1ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfaXNzdWVfd2l0aF9vbGRfZGlzdHJvX2dsaWJjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25vX3BhY2thZ2VzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3RjbC1yZW1vdmUtaGFyZGNvZGVkLWluc3RhbGwtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hbHRlci1pbmNsdWRlZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNTY3M2FhZjQ1YjVkZTVkOGRkODBiYjNkYWFlYjg4MzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2M2YjhmODRlMzczMzI0MjNjZmU1YmFlNTAzNDQwZDg4NDUwZGE4Y2MxMjQzNDk2MjQ5ZmFhNTI2ODAyNmJhNSIKLQotU1JDX1VSSV9jbGFzcy1uYXRpdmUgPSAiJHtCQVNFX1NSQ19VUkl9IgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59JHtQVn0vdW5peCIKLQotVkVSID0gIiR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdCBiaW5jb25maWcKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRocmVhZHMgLS1kaXNhYmxlLXJwYXRoIC0tbGliZGlyPSR7bGliZGlyfSIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotCWVjaG8gPiAke1N9Ly4uL2NvbXBhdC9maXhzdHJ0b2QuYwotfQotCi1kb19pbnN0YWxsKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLXByaXZhdGUtaGVhZGVycwotCWxuIC1zZiAuL3RjbHNoJHtWRVJ9ICR7RH0ke2JpbmRpcn0vdGNsc2gKLQlsbiAtc2YgdGNsc2g4LjYgJHtEfSR7YmluZGlyfS90Y2xzaCR7VkVSfQotCXNlZCAtaSAiczstTCR7Qn07LUwke1NUQUdJTkdfTElCRElSfTtnIiB0Y2xDb25maWcuc2gKLQlzZWQgLWkgInM7JyR7V09SS0RJUn07JyR7U1RBR0lOR19JTkNESVJ9O2ciIHRjbENvbmZpZy5zaAotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30KLQlpbnN0YWxsIC1tIDA3NTUgdGNsQ29uZmlnLnNoICR7RH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9Ci0JaW5zdGFsbCAtbSAwNzU1IHRjbENvbmZpZy5zaCAke0R9JHtsaWJkaXJ9Ci0JZm9yIGRpciBpbiBjb21wYXQgZ2VuZXJpYyB1bml4OyBkbwotCQlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyCi0JCWluc3RhbGwgLW0gMDY0NCAke1N9Ly4uLyRkaXIvKi5oICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyLwotCWRvbmUKLX0KLQotU1lTUk9PVF9ESVJTICs9ICIke2JpbmRpcl9jcm9zc3NjcmlwdHN9IgotCi1QQUNLQUdFUyA9KyAidGNsLWxpYiIKLUZJTEVTX3RjbC1saWIgPSAiJHtsaWJkaXJ9L2xpYnRjbDguNi5zby4qIgotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS90Y2wke1ZFUn0gJHtsaWJkaXJ9L3RjbDguNiAke2xpYmRpcn0vdGNsOCIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3RjbENvbmZpZy5zaCAke2xpYmRpcn0vdGNsb29Db25maWcuc2giCi0KLSMgaXNuJ3QgZ2V0dGluZyBwaWNrZWQgdXAgYnkgc2hsaWJzIGNvZGUKLVJERVBFTkRTXyR7UE59ICs9ICJ0Y2wtbGliIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJsaWJnY2MiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIHRjbHRlc3QKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQljcCAke0J9L3RjbHRlc3QgJHtEfSR7UFRFU1RfUEFUSH0KLQljcCAtciAke1N9Ly4uL2xpYnJhcnkgJHtEfSR7UFRFU1RfUEFUSH0KLQljcCAtciAke1N9Ly4uL3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9Ci19Ci0KLSMgRml4IHNvbWUgcGF0aHMgdGhhdCBtaWdodCBiZSB1c2VkIGJ5IFRjbCBleHRlbnNpb25zCi1CSU5DT05GSUdfR0xPQiA9ICIqQ29uZmlnLnNoIgotCi0jIEZpeCB0aGUgcGF0aCBpbiBzc3RhdGUKLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICIqQ29uZmlnLnNoIgotCi0jIENsZWFudXAgaG9zdCBwYXRoIGZyb20gJHtsaWJkaXJ9L3RjbENvbmZpZy5zaCBhbmQgcmVtb3ZlIHRoZQotIyAke2JpbmRpcl9jcm9zc3NjcmlwdHN9L3RjbENvbmZpZy5zaCBmcm9tIHRhcmdldAotUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJ0Y2xfcGFja2FnZV9wcmVwcm9jZXNzIgotdGNsX3BhY2thZ2VfcHJlcHJvY2VzcygpIHsKLQlzZWQgLWkgLWUgInM7JHtERUJVR19QUkVGSVhfTUFQfTs7ZyIgXAotCSAgICAgICAtZSAiczstTCR7U1RBR0lOR19MSUJESVJ9Oy1MJHtsaWJkaXJ9O2ciIFwKLQkgICAgICAgLWUgInM7JHtTVEFHSU5HX0lOQ0RJUn07JHtpbmNsdWRlZGlyfTtnIiBcCi0JICAgICAgIC1lICJzOy0tc3lzcm9vdD0ke1JFQ0lQRV9TWVNST09UfTs7ZyIgXAotCSAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3RjbENvbmZpZy5zaAotCi0Jcm0gLWYgJHtQS0dEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vdGNsQ29uZmlnLnNoCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbF84LjYuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZTJlODkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbF84LjYuOC5iYgpAQCAtMCwwICsxLDEwMSBAQAorU1VNTUFSWSA9ICJUb29sIENvbW1hbmQgTGFuZ3VhZ2UiCitIT01FUEFHRSA9ICJodHRwOi8vdGNsLnNvdXJjZWZvcmdlLm5ldCIKK1NFQ1RJT04gPSAiZGV2ZWwvdGNsdGsiCisKKyMgaHR0cDovL3d3dy50Y2wudGsvc29mdHdhcmUvdGNsdGsvbGljZW5zZS5odG1sCitMSUNFTlNFID0gInRjbCAmIEJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKKyAgICBmaWxlOi8vLi4vY29tcGF0L2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKKyAgICBmaWxlOi8vLi4vbGlicmFyeS9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisgICAgZmlsZTovLy4uL21hY29zeC9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisgICAgZmlsZTovLy4uL3Rlc3RzL2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKKyAgICBmaWxlOi8vLi4vd2luL2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKKyIKKworREVQRU5EUyA9ICJ0Y2wtbmF0aXZlIHpsaWIiCisKK0JBU0VfU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vdGNsLyR7QlBOfSR7UFZ9LXNyYy50YXIuZ3ogXAorICAgICAgICAgICAgICAgIGZpbGU6Ly90Y2wtYWRkLXNvbmFtZS5wYXRjaCIKK1NSQ19VUkkgPSAiJHtCQVNFX1NSQ19VUkl9IFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9ub25fbmF0aXZlX2J1aWxkX2lzc3VlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9pc3N1ZV93aXRoX29sZF9kaXN0cm9fZ2xpYmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbm9fcGFja2FnZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdGNsLXJlbW92ZS1oYXJkY29kZWQtaW5zdGFsbC1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FsdGVyLWluY2x1ZGVkaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MTY1NmQzMzY3YWYwMzJlMGFlNjE1N2VmZjEzNGY4OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjNDNjYjBjMTUxOGNlNDJiMDBlN2M4ZjZlYWRkZDUxOTVjNTNhOThmOTRhZGM3MTcyMzRhNjVjYmNmZDNmOTZhIgorCitTUkNfVVJJX2NsYXNzLW5hdGl2ZSA9ICIke0JBU0VfU1JDX1VSSX0iCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0ke1BWfS91bml4IgorCitWRVIgPSAiJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IGJpbmNvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtdGhyZWFkcyAtLWRpc2FibGUtcnBhdGggLS1saWJkaXI9JHtsaWJkaXJ9IgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJZWNobyA+ICR7U30vLi4vY29tcGF0L2ZpeHN0cnRvZC5jCit9CisKK2RvX2luc3RhbGwoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtcHJpdmF0ZS1oZWFkZXJzCisJbG4gLXNmIC4vdGNsc2gke1ZFUn0gJHtEfSR7YmluZGlyfS90Y2xzaAorCWxuIC1zZiB0Y2xzaDguNiAke0R9JHtiaW5kaXJ9L3RjbHNoJHtWRVJ9CisJc2VkIC1pICJzOy1MJHtCfTstTCR7U1RBR0lOR19MSUJESVJ9O2ciIHRjbENvbmZpZy5zaAorCXNlZCAtaSAiczsnJHtXT1JLRElSfTsnJHtTVEFHSU5HX0lOQ0RJUn07ZyIgdGNsQ29uZmlnLnNoCisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfQorCWluc3RhbGwgLW0gMDc1NSB0Y2xDb25maWcuc2ggJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30KKwlpbnN0YWxsIC1tIDA3NTUgdGNsQ29uZmlnLnNoICR7RH0ke2xpYmRpcn0KKwlmb3IgZGlyIGluIGNvbXBhdCBnZW5lcmljIHVuaXg7IGRvCisJCWluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0vJHtCUE59JHtWRVJ9LyRkaXIKKwkJaW5zdGFsbCAtbSAwNjQ0ICR7U30vLi4vJGRpci8qLmggJHtEfSR7aW5jbHVkZWRpcn0vJHtCUE59JHtWRVJ9LyRkaXIvCisJZG9uZQorfQorCitTWVNST09UX0RJUlMgKz0gIiR7YmluZGlyX2Nyb3Nzc2NyaXB0c30iCisKK1BBQ0tBR0VTID0rICJ0Y2wtbGliIgorRklMRVNfdGNsLWxpYiA9ICIke2xpYmRpcn0vbGlidGNsOC42LnNvLioiCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3RjbCR7VkVSfSAke2xpYmRpcn0vdGNsOC42ICR7bGliZGlyfS90Y2w4IgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vdGNsQ29uZmlnLnNoICR7bGliZGlyfS90Y2xvb0NvbmZpZy5zaCIKKworIyBpc24ndCBnZXR0aW5nIHBpY2tlZCB1cCBieSBzaGxpYnMgY29kZQorUkRFUEVORFNfJHtQTn0gKz0gInRjbC1saWIiCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImxpYmdjYyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgdGNsdGVzdAorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWNwICR7Qn0vdGNsdGVzdCAke0R9JHtQVEVTVF9QQVRIfQorCWNwIC1yICR7U30vLi4vbGlicmFyeSAke0R9JHtQVEVTVF9QQVRIfQorCWNwIC1yICR7U30vLi4vdGVzdHMgJHtEfSR7UFRFU1RfUEFUSH0KK30KKworIyBGaXggc29tZSBwYXRocyB0aGF0IG1pZ2h0IGJlIHVzZWQgYnkgVGNsIGV4dGVuc2lvbnMKK0JJTkNPTkZJR19HTE9CID0gIipDb25maWcuc2giCisKKyMgRml4IHRoZSBwYXRoIGluIHNzdGF0ZQorU1NUQVRFX1NDQU5fRklMRVMgKz0gIipDb25maWcuc2giCisKKyMgQ2xlYW51cCBob3N0IHBhdGggZnJvbSAke2xpYmRpcn0vdGNsQ29uZmlnLnNoIGFuZCByZW1vdmUgdGhlCisjICR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vdGNsQ29uZmlnLnNoIGZyb20gdGFyZ2V0CitQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInRjbF9wYWNrYWdlX3ByZXByb2Nlc3MiCit0Y2xfcGFja2FnZV9wcmVwcm9jZXNzKCkgeworCXNlZCAtaSAtZSAiczske0RFQlVHX1BSRUZJWF9NQVB9OztnIiBcCisJICAgICAgIC1lICJzOy1MJHtTVEFHSU5HX0xJQkRJUn07LUwke2xpYmRpcn07ZyIgXAorCSAgICAgICAtZSAiczske1NUQUdJTkdfSU5DRElSfTske2luY2x1ZGVkaXJ9O2ciIFwKKwkgICAgICAgLWUgInM7LS1zeXNyb290PSR7UkVDSVBFX1NZU1JPT1R9OztnIiBcCisJICAgICAgICR7UEtHRH0ke2xpYmRpcn0vdGNsQ29uZmlnLnNoCisKKwlybSAtZiAke1BLR0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS90Y2xDb25maWcuc2gKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhLmluYwppbmRleCAxMjYxYzAyLi5iMjJmYWFkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGEuaW5jCkBAIC0zNCw2ICszNCw4IEBACiAgICAgICAgIGNobW9kICt4ICR7Qn0vdmFwaWdlbi13cmFwcGVyCiB9CiAKK0VYVFJBX09FQ09ORiArPSAiIC0tZGlzYWJsZS1ncmFwaHZpeiIKKwogIyBWYXBpZ2VuIHdyYXBwZXIgbmVlZHMgdG8gYmUgYXZhaWxhYmxlIHN5c3RlbS13aWRlLCBiZWNhdXNlIGl0IHdpbGwgYmUgdXNlZAogIyB0byBidWlsZCB2YXBpIGZpbGVzIGZyb20gYWxsIG90aGVyIHBhY2thZ2VzIHdpdGggdmFsYSBzdXBwb3J0CiBkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYS8wMDAxLURpc2FibGUtdmFsYWRvYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhLzAwMDEtRGlzYWJsZS12YWxhZG9jLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliMjdiN2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYS8wMDAxLURpc2FibGUtdmFsYWRvYy5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIGI2Y2EzODc2ZTIzM2M3MjRmZDQ2MGMxNTc5YWJjNGFiNjNjOGQwMWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNCBPY3QgMjAxNyAxNToyMzowOCArMDMwMAorU3ViamVjdDogW1BBVENIXSBEaXNhYmxlIHZhbGFkb2MKKworVmFsYWRvYyBpcyBhIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIGZvciBWYWxhIHNvdXJjZXMsIHdoaWNoIHdhcworcmVjZW50bHkgbWVyZ2VkIGludG8gdGhlIG1haW4gdmFsYSBzb3VyY2UgdHJlZS4gVW5zdXJwcmlzaW5nbHksCitpdCdzIGJyb2tlbiBpbiBjcm9zcy1jb21waWxlIGVudmlyb25tZW50IGluIG11bHRpcGxlIHdheXMsCitzbyBsZXQncyBmaXggaXQgc29tZSBvdGhlciB0aW1lLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlLmFtIHwgMiAtLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggZTVkYzBjYy4uODEzYjNmYyAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTEzLDggKzEzLDYgQEAgU1VCRElSUyA9IFwKKyAJZG9jIFwKKyAJZ29iamVjdC1pbnRyb3NwZWN0aW9uIFwKKyAJdmFwaWdlbiBcCistCWxpYnZhbGFkb2MgXAorLQl2YWxhZG9jIFwKKyAJJChOVUxMKQorIAorIGlmIEVOQUJMRV9VTlZFUlNJT05FRAorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGEvZGlzYWJsZS1ncmFwaHZpei5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhL2Rpc2FibGUtZ3JhcGh2aXoucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVkMTg2ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhL2Rpc2FibGUtZ3JhcGh2aXoucGF0Y2gKQEAgLTAsMCArMSwyMjMgQEAKK0Zyb20gZWI3MTZkYzg1NmMyMGIzZGExNDZhNGU4M2U5ODAwYmQxZjUzYzczOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJpY28gVHpzY2hpY2hob2x6IDxyaWNvdHpAdWJ1bnR1LmNvbT4KK0RhdGU6IFdlZCwgNiBTZXAgMjAxNyAxODo1Mjo1NSArMDIwMAorU3ViamVjdDogW1BBVENIXSBsaWJ2YWxhZG9jOiBBbGxvdyBkaXNhYmxpbmcgdGhlIGdyYXBodml6IGRlcGVuZGVuY3kgb2YKKyB2YWxhZG9jCisKK2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03ODczNzUKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2J1Z3ppbGxhIGxpbmsgYWJvdmVdCistLS0KKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjAgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KKyBsaWJ2YWxhZG9jL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgIHwgMjUgKysrKysrKysrKystLS0tCisgbGlidmFsYWRvYy9odG1sL2Jhc2ljZG9jbGV0LnZhbGEgICAgICB8ICA4ICsrKysrCisgbGlidmFsYWRvYy9odG1sL2h0bWxtYXJrdXB3cml0ZXIudmFsYSB8ICA0ICsrKworIDQgZmlsZXMgY2hhbmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGM3M2Q1ZDZiMS4uMjkxZTUwM2Q1IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC05OCwzNCArOTgsMzggQEAgUEtHX0NIRUNLX01PRFVMRVMoR01PRFVMRSwgZ21vZHVsZS0yLjAgPj0gJEdMSUJfUkVRVUlSRUQpCisgQUNfU1VCU1QoR01PRFVMRV9DRkxBR1MpCisgQUNfU1VCU1QoR01PRFVMRV9MSUJTKQorIAorLVBLR19DSEVDS19NT0RVTEVTKExJQkdWQywgbGliZ3ZjID49ICRMSUJHVkNfUkVRVUlSRUQpCistQUNfTVNHX0NIRUNLSU5HKFtmb3IgQ0dSQVBIXSkKKy1jZ3JhcGhfdG1wX0xJQkFERD0iJExJQkFERCIKKy1jZ3JhcGhfdG1wX0NGTEFHUz0iJENGTEFHUyIKKy1MSUJBREQ9IiRMSUJBREQgJExJQkdWQ19MSUJTIgorLUNGTEFHUz0iJENGTEFHUyAkTElCR1ZDX0NGTEFHUyIKKy1BQ19SVU5fSUZFTFNFKAorLQlbQUNfTEFOR19TT1VSQ0UoWworLQkJI2luY2x1ZGUgPGd2Yy5oPgorLQorLQkJaW50IG1haW4odm9pZCkgeworLQkJCSNpZmRlZiBXSVRIX0NHUkFQSAorLQkJCQlyZXR1cm4gMDsKKy0JCQkjZWxzZQorLQkJCQlyZXR1cm4gLTE7CistCQkJI2VuZGlmCistCQl9CistCV0pXSwgWworLQkJQUNfTVNHX1JFU1VMVChbeWVzXSkKKy0JCVZBTEFGTEFHUz0iJFZBTEFGTEFHUyAtRCBXSVRIX0NHUkFQSCIKKy0JCWhhdmVfY2dyYXBoPXllcworLQldLCBbCistCQlBQ19NU0dfUkVTVUxUKFtub10pCistCQloYXZlX2NncmFwaD1ubworLQldCistKQorLUxJQkFERD0iJGNncmFwaF90bXBfTElCQUREIgorLUNGTEFHUz0iJGNncmFwaF90bXBfQ0ZMQUdTIgorK0FDX0FSR19FTkFCTEUoZ3JhcGh2aXosIEFTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtZ3JhcGh2aXpdLCBbRGlzYWJsZSBncmFwaHZpeiB1c2FnZSBmb3IgdmFsYWRvY10pLCBlbmFibGVfZ3JhcGh2aXo9JGVuYWJsZXZhbCwgZW5hYmxlX2dyYXBodml6PXllcykKKytpZiB0ZXN0IHgkZW5hYmxlX2dyYXBodml6ID0geHllczsgdGhlbgorKwlQS0dfQ0hFQ0tfTU9EVUxFUyhMSUJHVkMsIGxpYmd2YyA+PSAkTElCR1ZDX1JFUVVJUkVEKQorKwlBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBDR1JBUEhdKQorKwlWQUxBRkxBR1M9IiRWQUxBRkxBR1MgLUQgSEFWRV9HUkFQSFZJWiIKKysJY2dyYXBoX3RtcF9MSUJBREQ9IiRMSUJBREQiCisrCWNncmFwaF90bXBfQ0ZMQUdTPSIkQ0ZMQUdTIgorKwlMSUJBREQ9IiRMSUJBREQgJExJQkdWQ19MSUJTIgorKwlDRkxBR1M9IiRDRkxBR1MgJExJQkdWQ19DRkxBR1MiCisrCUFDX1JVTl9JRkVMU0UoCisrCQlbQUNfTEFOR19TT1VSQ0UoWworKwkJCSNpbmNsdWRlIDxndmMuaD4KKysJCQlpbnQgbWFpbih2b2lkKSB7CisrCQkJCSNpZmRlZiBXSVRIX0NHUkFQSAorKwkJCQkJcmV0dXJuIDA7CisrCQkJCSNlbHNlCisrCQkJCQlyZXR1cm4gLTE7CisrCQkJCSNlbmRpZgorKwkJCX0KKysJCV0pXSwgWworKwkJCUFDX01TR19SRVNVTFQoW3llc10pCisrCQkJVkFMQUZMQUdTPSIkVkFMQUZMQUdTIC1EIFdJVEhfQ0dSQVBIIgorKwkJCWhhdmVfY2dyYXBoPXllcworKwkJXSwgWworKwkJCUFDX01TR19SRVNVTFQoW25vXSkKKysJCQloYXZlX2NncmFwaD1ubworKwkJXQorKwkpCisrCUxJQkFERD0iJGNncmFwaF90bXBfTElCQUREIgorKwlDRkxBR1M9IiRjZ3JhcGhfdG1wX0NGTEFHUyIKKytmaQorK0FNX0NPTkRJVElPTkFMKEVOQUJMRV9HUkFQSFZJWiwgdGVzdCB4JGVuYWJsZV9ncmFwaHZpeiA9IHh5ZXMpCisgQU1fQ09ORElUSU9OQUwoSEFWRV9DR1JBUEgsIHRlc3QgIiRoYXZlX2NncmFwaCIgPSAieWVzIikKKyAKKyBBQ19QQVRIX1BST0coW1hTTFRQUk9DXSwgW3hzbHRwcm9jXSwgOikKK2RpZmYgLS1naXQgYS9saWJ2YWxhZG9jL01ha2VmaWxlLmFtIGIvbGlidmFsYWRvYy9NYWtlZmlsZS5hbQoraW5kZXggODkyNDVkODZiLi43YzA3NDk4YjkgMTAwNjQ0CistLS0gYS9saWJ2YWxhZG9jL01ha2VmaWxlLmFtCisrKysgYi9saWJ2YWxhZG9jL01ha2VmaWxlLmFtCitAQCAtMTI3LDEwICsxMjcsNiBAQCBsaWJ2YWxhZG9jX2xhX1ZBTEFTT1VSQ0VTID0gXAorIAljb250ZW50L3RhYmxlcm93LnZhbGEgXAorIAljb250ZW50L3RhZ2xldC52YWxhIFwKKyAJY29udGVudC90ZXh0LnZhbGEgXAorLQljaGFydHMvY2hhcnQudmFsYSBcCistCWNoYXJ0cy9jaGFydGZhY3RvcnkudmFsYSBcCistCWNoYXJ0cy9oaWVyYXJjaHljaGFydC52YWxhIFwKKy0JY2hhcnRzL3NpbXBsZWNoYXJ0ZmFjdG9yeS52YWxhIFwKKyAJcGFyc2VyL21hbnlydWxlLnZhbGEgXAorIAlwYXJzZXIvb25lb2ZydWxlLnZhbGEgXAorIAlwYXJzZXIvb3B0aW9uYWxydWxlLnZhbGEgXAorQEAgLTE1OCwxMyArMTU0LDI0IEBAIGxpYnZhbGFkb2NfbGFfVkFMQVNPVVJDRVMgPSBcCisgCWhpZ2hsaWdodGVyL2NvZGV0b2tlbi52YWxhIFwKKyAJaGlnaGxpZ2h0ZXIvaGlnaGxpZ2h0ZXIudmFsYSBcCisgCWh0bWwvYmFzaWNkb2NsZXQudmFsYSBcCistCWh0bWwvaHRtbGNoYXJ0ZmFjdG9yeS52YWxhIFwKKyAJaHRtbC9saW5raGVscGVyLnZhbGEgXAorIAlodG1sL2Nzc2NsYXNzcmVzb2x2ZXIudmFsYSBcCisgCWh0bWwvaHRtbG1hcmt1cHdyaXRlci52YWxhIFwKKyAJaHRtbC9odG1scmVuZGVyZXIudmFsYSBcCisgCSQoTlVMTCkKKyAKKytpZiBFTkFCTEVfR1JBUEhWSVoKKytsaWJ2YWxhZG9jX2xhX1ZBTEFTT1VSQ0VTICs9IFwKKysJY2hhcnRzL2NoYXJ0LnZhbGEgXAorKwljaGFydHMvY2hhcnRmYWN0b3J5LnZhbGEgXAorKwljaGFydHMvaGllcmFyY2h5Y2hhcnQudmFsYSBcCisrCWNoYXJ0cy9zaW1wbGVjaGFydGZhY3RvcnkudmFsYSBcCisrCWh0bWwvaHRtbGNoYXJ0ZmFjdG9yeS52YWxhIFwKKysJJChOVUxMKQorKworK0xJQkdWQ19QS0cgPSAtLXZhcGlkaXIgJCh0b3Bfc3JjZGlyKS92YXBpIC0tcGtnIGxpYmd2YworK2VuZGlmCisrCisgbGlidmFsYWRvY0BQQUNLQUdFX1NVRkZJWEBfbGFfU09VUkNFUyA9IFwKKyAJbGlidmFsYWRvYy52YWxhLnN0YW1wIFwKKyAJJChsaWJ2YWxhZG9jX2xhX1ZBTEFTT1VSQ0VTOi52YWxhPS5jKSBcCitAQCAtMTgyLDggKzE4OSw4IEBAIGxpYnZhbGFkb2MudmFsYS5zdGFtcDogJChsaWJ2YWxhZG9jX2xhX1ZBTEFTT1VSQ0VTKQorIAkJLS1saWJyYXJ5IHZhbGFkb2MgXAorIAkJLS12YXBpIHZhbGFkb2NAUEFDS0FHRV9TVUZGSVhALnZhcGkgXAorIAkJLS12YXBpZGlyICQodG9wX3NyY2RpcikvdmFwaSAtLXBrZyBnbW9kdWxlLTIuMCBcCistCQktLXZhcGlkaXIgJCh0b3Bfc3JjZGlyKS92YXBpIC0tcGtnIGxpYmd2YyBcCisgCQktLXZhcGlkaXIgJCh0b3Bfc3JjZGlyKS9nZWUgLS1wa2cgZ2VlIFwKKysJCSQoTElCR1ZDX1BLRykgXAorIAkJLS1wa2cgY29uZmlnIFwKKyAJCSQoZmlsdGVyICUudmFsYSAlLmMsJF4pCisgCXRvdWNoICRACitAQCAtMjA5LDYgKzIxNiw5IEBAIG5vZGlzdF9wa2djb25maWdfREFUQSA9IHZhbGFkb2NAUEFDS0FHRV9TVUZGSVhALnBjCisgCisgdmFsYWRvY0BQQUNLQUdFX1NVRkZJWEAucGM6IHZhbGFkb2MucGMKKyAJY3AgJDwgJEAKKytpZiAhRU5BQkxFX0dSQVBIVklaCisrCXNlZCAtaSAicy9saWJndmMgLy9nIiAkQAorK2VuZGlmCisgCisgdmFwaWRpciA9ICQoZGF0YWRpcikvdmFsYS92YXBpCisgZGlzdF92YXBpX0RBVEEgPSB2YWxhZG9jQFBBQ0tBR0VfU1VGRklYQC52YXBpCitAQCAtMjE2LDYgKzIyNiw5IEBAIG5vZGlzdF92YXBpX0RBVEEgPSB2YWxhZG9jQFBBQ0tBR0VfU1VGRklYQC5kZXBzCisgCisgdmFsYWRvY0BQQUNLQUdFX1NVRkZJWEAuZGVwczogdmFsYWRvYy5kZXBzCisgCWNwICQ8ICRACisraWYgIUVOQUJMRV9HUkFQSFZJWgorKwlzZWQgLWkgInMvbGliZ3ZjLy9nIiAkQAorK2VuZGlmCisgCisgRVhUUkFfRElTVCA9IFwKKyAJJChsaWJ2YWxhZG9jX2xhX1ZBTEFTT1VSQ0VTKSBcCitkaWZmIC0tZ2l0IGEvbGlidmFsYWRvYy9odG1sL2Jhc2ljZG9jbGV0LnZhbGEgYi9saWJ2YWxhZG9jL2h0bWwvYmFzaWNkb2NsZXQudmFsYQoraW5kZXggY2M5ZWE0ZWQ3Li40MzJjMzgxOGYgMTAwNjQ0CistLS0gYS9saWJ2YWxhZG9jL2h0bWwvYmFzaWNkb2NsZXQudmFsYQorKysrIGIvbGlidmFsYWRvYy9odG1sL2Jhc2ljZG9jbGV0LnZhbGEKK0BAIC00Niw3ICs0NiwxMSBAQCBwdWJsaWMgYWJzdHJhY3QgY2xhc3MgVmFsYWRvYy5IdG1sLkJhc2ljRG9jbGV0IDogQXBpLlZpc2l0b3IsIERvY2xldCB7CisgCXByb3RlY3RlZCBIdG1sUmVuZGVyZXIgX3JlbmRlcmVyOworIAlwcm90ZWN0ZWQgSHRtbC5NYXJrdXBXcml0ZXIgd3JpdGVyOworIAlwcm90ZWN0ZWQgSHRtbC5Dc3NDbGFzc1Jlc29sdmVyIGNzc3Jlc29sdmVyOworKyNpZiBIQVZFX0dSQVBIVklaCisgCXByb3RlY3RlZCBDaGFydHMuRmFjdG9yeSBpbWFnZV9mYWN0b3J5OworKyNlbHNlCisrCXByb3RlY3RlZCB2b2lkKiBpbWFnZV9mYWN0b3J5OworKyNlbmRpZgorIAlwcm90ZWN0ZWQgRXJyb3JSZXBvcnRlciByZXBvcnRlcjsKKyAJcHJvdGVjdGVkIHN0cmluZyBwYWNrYWdlX2xpc3RfbGluayA9ICIuLi9pbmRleC5odG1sIjsKKyAKK0BAIC0xMjAsNyArMTI0LDkgQEAgcHVibGljIGFic3RyYWN0IGNsYXNzIFZhbGFkb2MuSHRtbC5CYXNpY0RvY2xldCA6IEFwaS5WaXNpdG9yLCBEb2NsZXQgeworIAkJdGhpcy5saW5rZXIgPSBuZXcgTGlua0hlbHBlciAoKTsKKyAKKyAJCV9yZW5kZXJlciA9IG5ldyBIdG1sUmVuZGVyZXIgKHNldHRpbmdzLCB0aGlzLmxpbmtlciwgdGhpcy5jc3NyZXNvbHZlcik7CisrI2lmIEhBVkVfR1JBUEhWSVoKKyAJCXRoaXMuaW1hZ2VfZmFjdG9yeSA9IG5ldyBTaW1wbGVDaGFydEZhY3RvcnkgKHNldHRpbmdzLCBsaW5rZXIpOworKyNlbmRpZgorIAl9CisgCisgCitAQCAtMTAyNSw2ICsxMDMxLDcgQEAgcHVibGljIGFic3RyYWN0IGNsYXNzIFZhbGFkb2MuSHRtbC5CYXNpY0RvY2xldCA6IEFwaS5WaXNpdG9yLCBEb2NsZXQgeworIAl9CisgCisgCXByb3RlY3RlZCB2b2lkIHdyaXRlX2ltYWdlX2Jsb2NrIChBcGkuTm9kZSBlbGVtZW50KSB7CisrI2lmIEhBVkVfR1JBUEhWSVoKKyAJCWlmIChlbGVtZW50IGlzIENsYXNzIHx8IGVsZW1lbnQgaXMgSW50ZXJmYWNlIHx8IGVsZW1lbnQgaXMgU3RydWN0KSB7CisgCQkJdW5vd25lZCBzdHJpbmcgZm9ybWF0ID0gKHNldHRpbmdzLnVzZV9zdmdfaW1hZ2VzID8gInN2ZyIgOiAicG5nIik7CisgCQkJdmFyIGNoYXJ0ID0gbmV3IENoYXJ0cy5IaWVyYXJjaHkgKGltYWdlX2ZhY3RvcnksIGVsZW1lbnQpOworQEAgLTEwNDQsNiArMTA1MSw3IEBAIHB1YmxpYyBhYnN0cmFjdCBjbGFzcyBWYWxhZG9jLkh0bWwuQmFzaWNEb2NsZXQgOiBBcGkuVmlzaXRvciwgRG9jbGV0IHsKKyAJCQkJCQkJCQkgICB0aGlzLmdldF9pbWdfcGF0aF9odG1sIChlbGVtZW50LCBmb3JtYXQpfSk7CisgCQkJd3JpdGVyLmFkZF91c2VtYXAgKGNoYXJ0KTsKKyAJCX0KKysjZW5kaWYKKyAJfQorIAorIAlwdWJsaWMgdm9pZCB3cml0ZV9uYW1lc3BhY2VfY29udGVudCAoTmFtZXNwYWNlIG5vZGUsIEFwaS5Ob2RlPyBwYXJlbnQpIHsKK2RpZmYgLS1naXQgYS9saWJ2YWxhZG9jL2h0bWwvaHRtbG1hcmt1cHdyaXRlci52YWxhIGIvbGlidmFsYWRvYy9odG1sL2h0bWxtYXJrdXB3cml0ZXIudmFsYQoraW5kZXggMTVlZDllZmQxLi5mZTBkNzA1ZDQgMTAwNjQ0CistLS0gYS9saWJ2YWxhZG9jL2h0bWwvaHRtbG1hcmt1cHdyaXRlci52YWxhCisrKysgYi9saWJ2YWxhZG9jL2h0bWwvaHRtbG1hcmt1cHdyaXRlci52YWxhCitAQCAtNDMsMTIgKzQzLDE2IEBAIHB1YmxpYyBjbGFzcyBWYWxhZG9jLkh0bWwuTWFya3VwV3JpdGVyIDogVmFsYWRvYy5NYXJrdXBXcml0ZXIgeworIAkJfSwgeG1sX2RlY2xhcmF0aW9uKTsKKyAJfQorIAorKyNpZiBIQVZFX0dSQVBIVklaCisgCXB1YmxpYyBNYXJrdXBXcml0ZXIgYWRkX3VzZW1hcCAoQ2hhcnRzLkNoYXJ0IGNoYXJ0KSB7CisgCQlzdHJpbmc/IGJ1ZiA9IChzdHJpbmc/KSBjaGFydC53cml0ZV9idWZmZXIgKCJjbWFweCIpOworIAkJaWYgKGJ1ZiAhPSBudWxsKSB7CisgCQkJcmF3X3RleHQgKCJcbiIpOworIAkJCXJhd190ZXh0ICgoISkgYnVmKTsKKyAJCX0KKysjZWxzZQorKwlwdWJsaWMgTWFya3VwV3JpdGVyIGFkZF91c2VtYXAgKHZvaWQqIGNoYXJ0KSB7CisrI2VuZGlmCisgCisgCQlyZXR1cm4gdGhpczsKKyAJfQorLS0gCisyLjE0LjEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuMzYuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuMzYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTEwMDBkOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjM2LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLXJlcXVpcmUgJHtCUE59LmluYwotCi1TUkNfVVJJICs9ICIgZmlsZTovLzAwMDEtZ2l0LXZlcnNpb24tZ2VuLWRvbi10LWFwcGVuZC1kaXJ0eS1pZi13ZS1yZS1ub3QtaW4tZy5wYXRjaCBcCi0gICAgICAgICAgICAgZmlsZTovLzAwMDEtdmFwaWdlbi5tNC11c2UtUEtHX0NPTkZJR19TWVNST09UX0RJUi5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzYzE5MDE0MDkzZjFhM2Q5OTUzNTcyNTNiNDYzMDgyYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlOWYyM2NlNzExYzFhNzJjZTY2NGQxMDk0NmZiYzU5NTNmMDFiMGI3ZjJhMzU2MmU3YTAxZTM2MmQ4NmRlMDU5IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC4zOC44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC4zOC44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyYmFmNjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjM4LjguYmIKQEAgLTAsMCArMSwxMCBAQAorcmVxdWlyZSAke0JQTn0uaW5jCisKK1NSQ19VUkkgKz0gIiBmaWxlOi8vMDAwMS1naXQtdmVyc2lvbi1nZW4tZG9uLXQtYXBwZW5kLWRpcnR5LWlmLXdlLXJlLW5vdC1pbi1nLnBhdGNoIFwKKyAgICAgICAgICAgICBmaWxlOi8vMDAwMS12YXBpZ2VuLm00LXVzZS1QS0dfQ09ORklHX1NZU1JPT1RfRElSLnBhdGNoIFwKKwkgICAgIGZpbGU6Ly9kaXNhYmxlLWdyYXBodml6LnBhdGNoIFwKKwkgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtdmFsYWRvYy5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzN2VkZDA0NjdkMDU2ZmQ5ZTM5MzdkMGJiY2VkYTgwYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyZmE3NDZiNTFjZDY2ZTQzNTc3ZDFkYTA2YTgwYjcwOGMyODc1Y2FkYWFmZWU3N2U5NzAwZWEzNWNmMjM4ODJjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAyLXJlbW92ZS1ycGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMi1yZW1vdmUtcnBhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5MTEyZGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAyLXJlbW92ZS1ycGF0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gZjk2Y2YxZjRlYWE3Mjg2MGFiOGI1ZTE4YWQxMGZkYzcwNGQ3OGM1ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVHVlLCAxNSBEZWMgMjAxNSAxNTowMTozNCArMDIwMAotU3ViamVjdDogW1BBVENIIDIvNV0gcmVtb3ZlIHJwYXRoCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgY29uZmlnXQotU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgotLS0tCi0gbm9uZS90ZXN0cy9NYWtlZmlsZS5hbSB8IDMgKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbm9uZS90ZXN0cy9NYWtlZmlsZS5hbSBiL25vbmUvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDU0ZjJhN2UuLjI1YjBmNDkgMTAwNjQ0Ci0tLS0gYS9ub25lL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi9ub25lL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMzI2LDcgKzMyNiw2IEBAIHRocmVhZGVkZXJybm9fQ0ZMQUdTCSs9IC0tc3RkPWM5OQotIGVuZGlmCi0gdGxzX1NPVVJDRVMJCT0gdGxzLmMgdGxzMi5jCi0gdGxzX0RFUEVOREVOQ0lFUwk9IHRscy5zbyB0bHMyLnNvCi0tdGxzX0xERkxBR1MJCT0gLVdsLC1ycGF0aCwkKGFic190b3BfYnVpbGRkaXIpL25vbmUvdGVzdHMKLSB0bHNfTERBREQJCT0gdGxzLnNvIHRsczIuc28gLWxwdGhyZWFkCi0gdGxzX3NvX1NPVVJDRVMJCT0gdGxzX3NvLmMKLSB0bHNfc29fREVQRU5ERU5DSUVTCT0gdGxzMi5zbwotQEAgLTMzNCw3ICszMzMsNyBAQCBpZiBWR0NPTkZfT1NfSVNfREFSV0lOCi0gIHRsc19zb19MREZMQUdTCQk9IC1keW5hbWljIC1keW5hbWljbGliIC1hbGxfbG9hZCAtZnBpYwotICB0bHNfc29fTERBREQJCT0gYHB3ZGAvdGxzMi5zbwotIGVsc2UKLS0gdGxzX3NvX0xERkxBR1MJCT0gLVdsLC1ycGF0aCwkKGFic190b3BfYnVpbGRkaXIpL25vbmUvdGVzdHMgLXNoYXJlZCAtZlBJQwotKyB0bHNfc29fTERGTEFHUwkJPSAtc2hhcmVkIC1mUElDCi0gIHRsc19zb19MREFERAkJPSB0bHMyLnNvCi0gZW5kaWYKLSB0bHNfc29fQ0ZMQUdTCQk9ICQoQU1fQ0ZMQUdTKSAtZlBJQwotLS0gCi0yLjYuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL21hc2stQ1BVSUQtc3VwcG9ydC1pbi1IV0NBUC1vbi1hYXJjaDY0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9tYXNrLUNQVUlELXN1cHBvcnQtaW4tSFdDQVAtb24tYWFyY2g2NC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWE5NWI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9tYXNrLUNQVUlELXN1cHBvcnQtaW4tSFdDQVAtb24tYWFyY2g2NC5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGaXggcnVudGltZSBWYWxncmluZCBmYWlsdXJlCisKK1RoaXMgcGF0Y2ggaXMgZGVyaXZlZCBmcm9tCitodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTE0NjQyMTEKKworQXQgcnVudGltZSBpdCB3aWxsIGZhaWxzIGxpa2UgdGhpczoKKworQVJNNjQgZnJvbnQgZW5kOiBicmFuY2hfZXRjCitkaXNJbnN0cihhcm02NCk6IHVuaGFuZGxlZCBpbnN0cnVjdGlvbiAweEQ1MzgwMDAxCitkaXNJbnN0cihhcm02NCk6IDExMDEnMDEwMSAwMDExJzEwMDAgMDAwMCcwMDAwIDAwMDAnMDAwMSA9PTIwODI9PQordmFsZ3JpbmQ6IFVucmVjb2duaXNlZCBpbnN0cnVjdGlvbiBhdCBhZGRyZXNzIDB4NDAxNGU2NC4KKworVGhpcyBwYXRjaCBpcyBhIHdvcmthcm91bmQgYnkgbWFza2luZyBhbGwgSFdDQVAKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1hbmp1a3VtYXIgTWF0aGEgPG1hbmp1a3VtYXIuaGFydGhpa290ZS1tYXRoYUB4aWxpbnguY29tPgorCitJbmRleDogdmFsZ3JpbmQtMy4xMy4wL2NvcmVncmluZC9tX2luaXRpbWcvaW5pdGltZy1saW51eC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0tLSB2YWxncmluZC0zLjEzLjAub3JpZy9jb3JlZ3JpbmQvbV9pbml0aW1nL2luaXRpbWctbGludXguYyAgIDIwMTgtMDMtMDQgMjI6MjI6MTcuNjk4NTcyNjc1IC0wODAwCisrKysgdmFsZ3JpbmQtMy4xMy4wL2NvcmVncmluZC9tX2luaXRpbWcvaW5pdGltZy1saW51eC5jICAgICAgICAyMDE4LTAzLTA0IDIyOjIzOjI1LjcyNzgxNTYyNCAtMDgwMAorQEAgLTcwMyw2ICs3MDMsMTIgQEAKKyAgICAgICAgICAgICAgICAgICAoYW5kIGFueXRoaW5nIGFib3ZlKSBhcmUgbm90IHN1cHBvcnRlZCBieSBWYWxncmluZC4gKi8KKyAgICAgICAgICAgICAgICBhdXh2LT51LmFfdmFsICY9IFZLSV9IV0NBUF9TMzkwX1RFIC0gMTsKKyAgICAgICAgICAgICB9CisrIyAgICAgICAgICAgZWxpZiBkZWZpbmVkKFZHUF9hcm02NF9saW51eCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgLyogTGludXggNC4xMSBzdGFydGVkIHBvcHVsYXRpbmcgdGhpcyBmb3IgYXJtNjQsIGJ1dCB3ZQorKyAgICAgICAgICAgICAgICAgIGN1cnJlbnRseSBkb24ndCBzdXBwb3J0IGFueS4gKi8KKysgICAgICAgICAgICAgICBhdXh2LT51LmFfdmFsID0gMDsKKysgICAgICAgICAgICB9CisgIyAgICAgICAgICAgZW5kaWYKKyAgICAgICAgICAgICBicmVhazsKKyAjICAgICAgICBpZiBkZWZpbmVkKFZHUF9wcGM2NGJlX2xpbnV4KSB8fCBkZWZpbmVkKFZHUF9wcGM2NGxlX2xpbnV4KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZF8zLjEzLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTMuMC5iYgppbmRleCBiZjNjZmQ3Li5kM2FmMzVlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTMuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTMuMC5iYgpAQCAtMTYsNyArMTYsNiBAQAogICAgICAgICAgICBmaWxlOi8vZml4ZWQtcGVybC1wYXRoLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL0FkZGVkLXN1cHBvcnQtZm9yLVBQQy1pbnN0cnVjdGlvbnMtbWZhdGJ1LW1mYXRibC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1yZW1vdmUtcnBhdGgucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDUtTW9kaWZ5LXZnX3Rlc3Qtd3JhcHBlci10by1zdXBwb3J0LVBURVNULWZvcm1hdHMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtdGVzdHMtdGhhdC1mYWlsLXRvLWJ1aWxkLW9uLXNvbWUtUFBDMzItY29uZmlnLnBhdGNoIFwKQEAgLTM3LDYgKzM2LDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDMtdGVzdHMtc2VnX292ZXJyaWRlLVJlcGxhY2UtX19tb2RpZnlfbGR0LXdpdGgtc3lzY2FsbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9saW5rLWd6LXRlc3RzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3BwYy1oZWFkZXJzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21hc2stQ1BVSUQtc3VwcG9ydC1pbi1IV0NBUC1vbi1hYXJjaDY0LnBhdGNoIFwKICAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gIjgxN2RkMDhmMWU4YTY2MzM2YjlmZjIwNjQwMGE1MzY5IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ3NjY4MGVmMDNmMDBjZDVlOTcwYmJkY2Q0ZTU3ZmIxZjZkZjdkMmUyYzA3MTYzNWVmMmJlNzQ3OTAxOTBjM2IiCkBAIC04Niw2ICs4Niw4IEBACiAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKICAgICBybSAtcmYgJHtTfS9jb25maWcuaAorICAgIHNlZCAtaSAtZSAnczokKGFic190b3BfYnVpbGRkaXIpOiQocGtnbGliZGlyKS9wdGVzdDpnJyAke1N9L25vbmUvdGVzdHMvTWFrZWZpbGUuYW0KKyAgICBzZWQgLWkgLWUgJ3M6JCh0b3BfYnVpbGRkaXIpOiQocGtnbGliZGlyKS9wdGVzdDpnJyAke1N9L21lbWNoZWNrL3Rlc3RzL01ha2VmaWxlLmFtCiB9CiAKIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvemlzb2ZzLXRvb2xzL3ppc29mcy10b29scy1uYXRpdmVfMS4wLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ppc29mcy10b29scy96aXNvZnMtdG9vbHMtbmF0aXZlXzEuMC44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjFjMDU4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvemlzb2ZzLXRvb2xzL3ppc29mcy10b29scy1uYXRpdmVfMS4wLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi0jIHppc29mcy10b29scy1uYXRpdmUgT0UgYnVpbGQgZmlsZQotIyBDb3B5cmlnaHQgKEMpIDE5ODksIDE5OTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi1TVU1NQVJZID0gIlV0aWxpdGllcyBmb3IgY3JlYXRpbmcgY29tcHJlc3NlZCBDRC1ST00gZmlsZXN5c3RlbXMiCi1IT01FUEFHRSA9ICJodHRwOi8vZnJlZWNvZGUuY29tL3Byb2plY3RzL3ppc29mcy10b29scyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLQotREVQRU5EUyA9ICJ6bGliLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vcGtncy5mZWRvcmFwcm9qZWN0Lm9yZy9yZXBvL3BrZ3Mvemlzb2ZzLXRvb2xzL3ppc29mcy10b29scy0ke1BWfS50YXIuYnoyLzJkMGVkOGM5YTFmNjBiNDVmOTQ5YjEzNmY5YmUxZjZjL3ppc29mcy10b29scy0ke1BWfS50YXIuYnoyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmQwZWQ4YzlhMWY2MGI0NWY5NDliMTM2ZjliZTFmNmMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWU0ZTUzZTQ5MTQ5MzRkNDE2NjAyNDhmYjU5ZDNjODc2MWYxZjFmZDE4MGQ1ZWM5OTNjMTdkZGIzYWZkMDRmMyIKLQotaW5oZXJpdCBuYXRpdmUKLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlIGluc3RhbGwgSU5TVEFMTFJPT1Q9JHtEfSBiaW5kaXI9JHtiaW5kaXJ9Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpY2FfMjAxNzAzMDMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpY2FfMjAxNzAzMDMuYmIKaW5kZXggODY4NTA1Yi4uNTFhZTc3YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaWNhXzIwMTcwMzAzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGljYV8yMDE3MDMwMy5iYgpAQCAtMTcsNyArMTcsNiBAQAogREVQRU5EUyA9ICJiaXNvbiBmbGV4IgogCiBTUkNfVVJJID0gImh0dHBzOi8vYWNwaWNhLm9yZy9zaXRlcy9hY3BpY2EvZmlsZXMvYWNwaWNhLXVuaXgyLSR7UFZ9LnRhci5neiBcCi0gICAgZmlsZTovL25vLXdlcnJvci5wYXRjaCBcCiAgICAgZmlsZTovL3JlbmFtZS15eV9zY2FuX3N0cmluZy1tYW51YWxseS5wYXRjaCBcCiAgICAgZmlsZTovL21hbmlwdWxhdGUtZmRzLWluc3RlYWQtb2YtRklMRS5wYXRjaDtzdHJpcGxldmVsPTIgXAogICAgIGZpbGU6Ly8wMDAxLUxpbnV4LWFkZC1zdXBwb3J0LWZvci1YMzItQUJJLWNvbXBpbGF0aW9uLnBhdGNoIFwKQEAgLTQ5LDcgKzQ4LDYgQEAKIFBST1ZJREVTID0gImlhc2wiCiBSUFJPVklERVNfJHtQTn0gKz0gImlhc2wiCiBSUkVQTEFDRVNfJHtQTn0gKz0gImlhc2wiCi1SQ09ORkxJR0hUU18ke1BOfSArPSAiaWFzbCIKK1JDT05GTElDVFNfJHtQTn0gKz0gImlhc2wiCiAKLU5BVElWRV9JTlNUQUxMX1dPUktTID0gIjEiCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2ZpbGVzL25vLXdlcnJvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2ZpbGVzL25vLXdlcnJvci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTZlN2I1NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9maWxlcy9uby13ZXJyb3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1EZXNjcmlwdGlvbjogcmVtb3ZlIC1XZXJyb3IgZmxhZwotRm9yd2FyZGVkOiBub3QtbmVlZGVkCi1BdXRob3I6IEZhdGhpIEJvdWRyYSA8ZmF0aGkuYm91ZHJhQGxpbmFyby5vcmc+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdlbmVyYXRlL3VuaXgvaWFzbC9NYWtlZmlsZSB8ICAgMTIgKysrKysrLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotLS0tIGEvZ2VuZXJhdGUvdW5peC9pYXNsL01ha2VmaWxlCi0rKysgYi9nZW5lcmF0ZS91bml4L2lhc2wvTWFrZWZpbGUKLUBAIC0yNjYsMTkgKzI2NiwxOSBAQCAkKE9CSkRJUikvcHJwYXJzZXIueS5oOiAkKE9CSkRJUikvcHJwYXJzCi0gIyBieSB0aGUgdXRpbGl0aWVzIGFib3ZlIGFuZCB0aGV5IGFyZSBub3QgbmVjZXNzYXJpbHkgQU5TSSBDLCBldGMuCi0gIwotICQoT0JKRElSKS9hc2xjb21waWxlcmxleC5vIDogICAkKE9CSkRJUikvYXNsY29tcGlsZXJsZXguYwotLQkkKENDKSAtYyAkKENGTEFHUykgLVdhbGwgLVdlcnJvciAtbyRAICQ8Ci0rCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtV2FsbCAtbyRAICQ8Ci0gCi0gJChPQkpESVIpL2FzbGNvbXBpbGVycGFyc2UubyA6ICQoT0JKRElSKS9hc2xjb21waWxlcnBhcnNlLmMKLS0JJChDQykgLWMgJChDRkxBR1MpIC1XYWxsIC1XZXJyb3IgLW8kQCAkPAotKwkkKENDKSAtYyAkKENGTEFHUykgLVdhbGwgLW8kQCAkPAotIAotICQoT0JKRElSKS9kdHBhcnNlcmxleC5vIDogICAgICAkKE9CSkRJUikvZHRwYXJzZXJsZXguYwotLQkkKENDKSAtYyAkKENGTEFHUykgLVdhbGwgLVdlcnJvciAtbyRAICQ8Ci0rCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtV2FsbCAtbyRAICQ8Ci0gCi0gJChPQkpESVIpL2R0cGFyc2VycGFyc2UubyA6ICAgICQoT0JKRElSKS9kdHBhcnNlcnBhcnNlLmMKLS0JJChDQykgLWMgJChDRkxBR1MpIC1XYWxsIC1XZXJyb3IgLW8kQCAkPAotKwkkKENDKSAtYyAkKENGTEFHUykgLVdhbGwgLW8kQCAkPAotIAotICQoT0JKRElSKS9wcnBhcnNlcmxleC5vIDogICAgICAkKE9CSkRJUikvcHJwYXJzZXJsZXguYwotLQkkKENDKSAtYyAkKENGTEFHUykgLVdhbGwgLVdlcnJvciAtbyRAICQ8Ci0rCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtV2FsbCAtbyRAICQ8CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0L21ha2VmaWxlLWZpeC1wYXJhbGxlbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXQvbWFrZWZpbGUtZml4LXBhcmFsbGVsLnBhdGNoCmluZGV4IDkzMmE0YzAuLmQ2MDU2ZGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXQvbWFrZWZpbGUtZml4LXBhcmFsbGVsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXQvbWFrZWZpbGUtZml4LXBhcmFsbGVsLnBhdGNoCkBAIC0xNSwxMyArMTUsMTMgQEAKICBNYWtlZmlsZSB8ICAgIDQgKysrLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IDJhOWI5MTguLmFhN2MwNGEgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KLUBAIC03NSw3ICs3NSw5IEBAIGF0OiAkKEFUT0JKRUNUUykKK0luZGV4OiBhdC0zLjEuMjAvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhdC0zLjEuMjAub3JpZy9NYWtlZmlsZS5pbgorKysrIGF0LTMuMS4yMC9NYWtlZmlsZS5pbgorQEAgLTc2LDcgKzc2LDkgQEAgYXQ6ICQoQVRPQkpFQ1RTKQogIGF0ZDogJChSVU5PQkpFQ1RTKQotIAkkKENDKSAkKExERkxBR1MpIC1vIGF0ZCAkKFJVTk9CSkVDVFMpICQoTElCUykgJChQQU1MSUIpCisgCSQoQ0MpICQoTERGTEFHUykgLW8gYXRkICQoUlVOT0JKRUNUUykgJChMSUJTKSAkKFBBTUxJQikgJChTRUxJTlVYTElCKQogIAogLXkudGFiLmMgeS50YWIuaDogcGFyc2V0aW1lLnkKICt5LnRhYi5oOiB5LnRhYi5jCkBAIC0zMCw2ICszMCwzIEBACiAgCSQoWUFDQykgLWQgcGFyc2V0aW1lLnkKICAKICBsZXgueXkuYzogcGFyc2V0aW1lLmwKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0XzMuMS4yMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXRfMy4xLjIwLmJiCmluZGV4IDliNTM3ZWUuLjhmZTNiNDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXRfMy4xLjIwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXRfMy4xLjIwLmJiCkBAIC01LDcgKzUsNyBAQAogU0VDVElPTiA9ICJiYXNlIgogTElDRU5TRSA9ICJHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00MzI1YWZkMzk2ZmViY2I2NTljMzZiNDk1MzMxMzVkNCIKLURFUEVORFMgPSAiZmxleCBmbGV4LW5hdGl2ZSBcCitERVBFTkRTID0gImZsZXggZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIFwKICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKIAogUkRFUEVORFNfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fREVQU30nLCAnJywgZCl9IFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLmluYwppbmRleCBmNGUxZjdhLi45YzJiMDY1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2guaW5jCkBAIC02LDcgKzYsNyBAQAogCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcyBwdGVzdAogCi1FWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YXV0b2hlYWRlciIKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hdXRvaGVhZGVyIC0tZXhjbHVkZT1hY2xvY2FsIgogRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLWpvYi1jb250cm9sIC0td2l0aG91dC1iYXNoLW1hbGxvYyIKIAogIyBJZiBOT05fSU5URVJBQ1RJVkVfTE9HSU5fU0hFTExTIGlzIGRlZmluZWQsIGFsbCBsb2dpbiBzaGVsbHMgcmVhZCB0aGUKQEAgLTI1LDcgKzI1LDcgQEAKIFJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZXNkayA9ICIiCiBSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKIAotREVQRU5EU19hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtbG9jYWxlIgorREVQRU5EU19hcHBlbmRfbGliYy1nbGliYyA9ICIgdmlydHVhbC9saWJjLWxvY2FsZSIKIFJERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBsb2NhbGUtYmFzZS1mci1mciBsb2NhbGUtYmFzZS1kZS1kZSIKIAogVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfS1wdGVzdCIKQEAgLTMzLDEyICszMyw2IEBACiAKIENBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJoZWFkZXJzZGlyPSR7aW5jbHVkZWRpcn0vJHtQTn0iCiAKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlpZiBbICEgLWUgJHtTfS9hY2luY2x1ZGUubTQgXTsgdGhlbgotCQljYXQgJHtTfS9hY2xvY2FsLm00ID4gJHtTfS9hY2luY2x1ZGUubTQKLQlmaQotfQotCiBkb19jb21waWxlX3B0ZXN0ICgpIHsKIAlvZV9ydW5tYWtlIGJ1aWxkdGVzdAogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvZXhlY3V0ZV9jbWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9leGVjdXRlX2NtZC5wYXRjaAppbmRleCA4MWY4ZjBhLi45OTcwYjRkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9leGVjdXRlX2NtZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9leGVjdXRlX2NtZC5wYXRjaApAQCAtMSw4ICsxLDEwIEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQogCi0tLS0gZXhlY3V0ZV9jbWQuYy5vcmlnCUZyaSBKdW4gIDMgMTM6MzQ6NDIgMjAxMQotKysrIGV4ZWN1dGVfY21kLmMJRnJpIEp1biAgMyAxMzozNjo0MSAyMDExCi1AQCAtMjIwMiw3ICsyMjAyLDExIEBACitJbmRleDogZXhlY3V0ZV9jbWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGV4ZWN1dGVfY21kLmMub3JpZworKysrIGV4ZWN1dGVfY21kLmMKK0BAIC0yNDU5LDcgKzI0NTksMTEgQEAgZXhlY3V0ZV9waXBlbGluZSAoY29tbWFuZCwgYXN5bmNocm9ub3VzLAogICAgLyogSWYgdGhlIGBsYXN0cGlwZScgb3B0aW9uIGlzIHNldCB3aXRoIHNob3B0LCBhbmQgam9iIGNvbnRyb2wgaXMgbm90CiAgICAgICBlbmFibGVkLCBleGVjdXRlIHRoZSBsYXN0IGVsZW1lbnQgb2Ygbm9uLWFzeW5jIHBpcGVsaW5lcyBpbiB0aGUKICAgICAgIGN1cnJlbnQgc2hlbGwgZW52aXJvbm1lbnQuICovCkBAIC0xMyw1ICsxNSw1IEBACiArI2VuZGlmCiArCQlhc3luY2hyb25vdXMgPT0gMCAmJiBwaXBlX291dCA9PSBOT19QSVBFICYmIHByZXYgPiAwKQogICAgICB7Ci0gICAgICAgbHN0ZGluID0gbW92ZV90b19oaWdoX2ZkICgwLCAwLCAyNTUpOworICAgICAgIGxzdGRpbiA9IG1vdmVfdG9faGlnaF9mZCAoMCwgMSwgLTEpOwogICAgICAgIGlmIChsc3RkaW4gPiAwKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvcGF0aGV4cC1kZXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9wYXRoZXhwLWRlcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDViYmRhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvcGF0aGV4cC1kZXAucGF0Y2gKQEAgLTAsMCArMSwxMyBAQAorcGF0aGV4cCBpbmNsdWRlcyBsaWJpbnRsLmggYnV0IGRvZXNuJ3QgZGVwZW5kIG9uIGl0LCB0aHVzIGEgYnVpbGQgcmFjZSBjYW4gb2NjdXIuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIChodHRwczovL3NhdmFubmFoLmdudS5vcmcvcGF0Y2gvaW5kZXgucGhwPzk1MDMpCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggYzdiNjJiYzAuLjI0MWNiZjEyIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtMTI4MSwyICsxMjgxLDMgQEAgbm9qb2JzLm86IGJhc2hpbnRsLmggJHtMSUJJTlRMX0h9ICQoQkFTSElOQ0RJUikvZ2V0dGV4dC5oCisgeS50YWIubzogYmFzaGludGwuaCAke0xJQklOVExfSH0gJChCQVNISU5DRElSKS9nZXR0ZXh0LmgKKytwYXRoZXhwLm86IGJhc2hpbnRsLmggJHtMSUJJTlRMX0h9ICQoQkFTSElOQ0RJUikvZ2V0dGV4dC5oCisgcGNvbXBsZXRlLm86IGJhc2hpbnRsLmggJHtMSUJJTlRMX0h9ICQoQkFTSElOQ0RJUikvZ2V0dGV4dC5oCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaF80LjQuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaF80LjQuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM4MmE3NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzQuNC4xMi5iYgpAQCAtMCwwICsxLDI0IEBACityZXF1aXJlIGJhc2guaW5jCisKKyMgR1BMdjIrICg8IDQuMCksIEdQTHYzKyAoPj0gNC4wKQorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2Jhc2gvJHtCUH0udGFyLmd6O25hbWU9dGFyYmFsbCBcCisgICAgICAgICAgIGZpbGU6Ly9leGVjdXRlX2NtZC5wYXRjaDtzdHJpcGxldmVsPTAgXAorICAgICAgICAgICBmaWxlOi8vbWtidWlsdGluc19oYXZlX3N0cmluZ2l6ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9idWlsZC10ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly90ZXN0LW91dHB1dC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcnVuLWNvcHJvYy1ydW4taGVyZWRvYy1ydW4tZXhlY3NjcmlwdC1ydW4tdGVzdC1mLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcnVuLWJ1aWx0aW5zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaGVscC1maXgtcHJpbnRmLWZvcm1hdC1zZWN1cml0eS13YXJuaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Jhc2gtbWVtbGVhay1idWctZml4LWZvci1idWlsdGluLWNvbW1hbmQtcmVhZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wYXRoZXhwLWRlcC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVt0YXJiYWxsLm1kNXN1bV0gPSAiN2MxMTI5NzBjYmRjYWRmYzMzMWUxMGVlYjVmNmFhNDEiCitTUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICI1N2Q4NDMyYmU1NDU0MTUzMWE0OTZmZDQ5MDRmZGMwOGMxMjU0MmY0MzYwNWE5MjAyNTk0ZmE1ZDVmOWYyMzMxIgorCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTQ0ZDA3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzQuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLXJlcXVpcmUgYmFzaC5pbmMKLQotIyBHUEx2MisgKDwgNC4wKSwgR1BMdjMrICg+PSA0LjApCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vYmFzaC8ke0JQfS50YXIuZ3o7bmFtZT10YXJiYWxsIFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAwMTthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDEgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDAyO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwMiBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMDM7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDAzIFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAwNDthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDQgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDA1O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwNSBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMDY7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDA2IFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAwNzthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDcgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDA4O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwOCBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMDk7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDA5IFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAxMDthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMTAgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDExO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAxMSBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMTI7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDEyIFwKLSAgICAgICAgICAgZmlsZTovL2V4ZWN1dGVfY21kLnBhdGNoO3N0cmlwbGV2ZWw9MCBcCi0gICAgICAgICAgIGZpbGU6Ly9ta2J1aWx0aW5zX2hhdmVfc3RyaW5naXplLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2J1aWxkLXRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3Rlc3Qtb3V0cHV0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1ydW4tY29wcm9jLXJ1bi1oZXJlZG9jLXJ1bi1leGVjc2NyaXB0LXJ1bi10ZXN0LWYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1ydW4tYnVpbHRpbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1oZWxwLWZpeC1wcmludGYtZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYmFzaC1tZW1sZWFrLWJ1Zy1maXgtZm9yLWJ1aWx0aW4tY29tbWFuZC1yZWFkLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICIxNDg4ODhhN2M5NWFjMjM3MDU1NTliNmY0NzdkZmUyNSIKLVNSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gImQ4NmIzMzkyYzEyMDJlOGZmNWE0MjNiMzAyZTYyODRkYjdmOGY0MzVlYTlmMzliNWIxYjIwZmQzYWMzNmRmY2IiCi0KLVNSQ19VUklbcGF0Y2gwMDEubWQ1c3VtXSA9ICI4MTdkMDFhNmMwYWY2Zjc5MzA4YThiN2I2NDllNTNkOCIKLVNSQ19VUklbcGF0Y2gwMDEuc2hhMjU2c3VtXSA9ICIzZTI4ZDkxNTMxNzUyZGY5YThjYjE2N2FkMDdjYzU0MmFiYWY5NDRkZTkzNTNmZThjNmE1MzVjOWYxZjE3ZjBmIgotU1JDX1VSSVtwYXRjaDAwMi5tZDVzdW1dID0gIjc2NWUxNGNmZjEyYzcyODQwMDk3NzJlOGUyNGYyZmUwIgotU1JDX1VSSVtwYXRjaDAwMi5zaGEyNTZzdW1dID0gIjcwMjBhMDE4M2UxN2E3MjMzZTY2NWI5NzljNzhjMTg0ZWEzNjljZmFmM2U4YjRiMTFmNTU0N2VjYjdjMTNjNTMiCi1TUkNfVVJJW3BhdGNoMDAzLm1kNXN1bV0gPSAiNDllN2RhOTNiZjA3ZjUxMGEyZWI2YmI0M2FjM2U1YTIiCi1TUkNfVVJJW3BhdGNoMDAzLnNoYTI1NnN1bV0gPSAiNTFkZjVhOTE5MmZkZWZlMGRkY2E0YmRmMjkwOTMyZjc0YmUwM2ZmZDA1MDNhM2QxMTJlNDE5OTkwNWU3MThiMiIKLVNSQ19VUklbcGF0Y2gwMDQubWQ1c3VtXSA9ICI0NTU3ZDY3NGFiNTgzMWE1ZmE5ODA1MmFiMTllZGFmNCIKLVNSQ19VUklbcGF0Y2gwMDQuc2hhMjU2c3VtXSA9ICJhZDA4MGEzMGE0YWM2YzEyNzMzNzM2MTdmMjk2MjhjYzMyMGEzNWM4Y2QwNjkxMzg5NDc5NDI5M2RjNTJjOGIzIgotU1JDX1VSSVtwYXRjaDAwNS5tZDVzdW1dID0gImNjZTk2ZGQ3N2NkZDFkMjkzYmVlYzEwODQ4ZjZjYmI1IgotU1JDX1VSSVtwYXRjaDAwNS5zaGEyNTZzdW1dID0gIjIyMWU0YjcyNWI3NzBhZDBiYjY5MjRkZjNmOGQwNGY4OWVlY2E0NTU4ZjZlNGM3NzdkZmE5M2U5NjcwOTA1MjkiCi1TUkNfVVJJW3BhdGNoMDA2Lm1kNXN1bV0gPSAiZDMzNzlmOGQ4YWJjZTVjNmVlMzM4ZjkzMWFkMDA4ZDUiCi1TUkNfVVJJW3BhdGNoMDA2LnNoYTI1NnN1bV0gPSAiNmE4ZTJlMmE2MTgwZDBmMWNlMzlkY2Q2NTE2MjJmYjZkMmZkMDVkYjdjNDU5ZjY0YWU0MmQ2NjdmMWUzNDRiOCIKLVNSQ19VUklbcGF0Y2gwMDcubWQ1c3VtXSA9ICJlYzM4Yzc2Y2E0MzljYTdmOWMxNzhlOWJhZWRlODRmYyIKLVNSQ19VUklbcGF0Y2gwMDcuc2hhMjU2c3VtXSA9ICJkZTFjY2MwN2I3YmZjOWUyNTI0M2FkODU0ZjNiYmI1ZDNlYmY5MTU1YjA0NzdkZjE2YWFmMDBhN2IwZDVlZGFmIgotU1JDX1VSSVtwYXRjaDAwOC5tZDVzdW1dID0gImUwYmExOGMxZTNiOTRmOTA1ZGE5YjViZjlkMzhiNThiIgotU1JDX1VSSVtwYXRjaDAwOC5zaGEyNTZzdW1dID0gIjg2MTQ0NzAwNDY1OTMzNjM2ZDdiOTQ1ZTg5Yjc3ZGY5NWQzNjIwMDM0NzI1YmUxNjFjYTBjYTVhNDJlMjM5YmEiCi1TUkNfVVJJW3BhdGNoMDA5Lm1kNXN1bV0gPSAiZTk1MmQ0ZjQ0ZTYxMjA0ODkzMGM1NTlkOTBlYjk5YmIiCi1TUkNfVVJJW3BhdGNoMDA5LnNoYTI1NnN1bV0gPSAiMGI2YmRkMWExOGEwZDIwZTMzMGNjM2JjNzFlMDQ4ODY0ZTRhMTM2NTJlMjlkYzBlYmYzOTE4YmVhNzI5MzQzYyIKLVNSQ19VUklbcGF0Y2gwMTAubWQ1c3VtXSA9ICI1N2I1YjM1OTU1ZDY4ZjlhMDlkYmVmNmI4NmQyYzc4MiIKLVNSQ19VUklbcGF0Y2gwMTAuc2hhMjU2c3VtXSA9ICI4NDY1YzZmMmM1NmFmZTU1OTQwMjI2NWIzOWQ5ZTk0MzY4OTU0OTMwZjlhYTdmM2RmYTZkMzZkZDY2ODY4ZTA2IgotU1JDX1VSSVtwYXRjaDAxMS5tZDVzdW1dID0gImNjODk2ZTFmYTY5NmI5M2RlZDU2OGU1NTdlMjM5MmQ1IgotU1JDX1VSSVtwYXRjaDAxMS5zaGEyNTZzdW1dID0gImRkNTY0MjZlZjdkNzI5NWUxMTA3YzBiM2QwNmMxOTJlYjkyOThmNDAyM2MyMDJjYTJiYTYyNjZjNjEzZDE3MGQiCi1TUkNfVVJJW3BhdGNoMDEyLm1kNXN1bV0gPSAiZmE0N2ZiZmE1NmZiN2U5ZTUzNjdmMTlhOWRmNWZjOWUiCi1TUkNfVVJJW3BhdGNoMDEyLnNoYTI1NnN1bV0gPSAiZmFjMjcxZDJiZjYzNzJjOTkwM2UzYjM1M2NiOWVkYTA0NGQ3ZmUzNmI1YWFiNTJmMjFmM2YyMWNkNmEyMDYzZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDAxLWRvbi10LXRyeS10by1ydW4tZ2VuZXJhdGVkLWJpbmFyaWVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvMDAwMS1kb24tdC10cnktdG8tcnVuLWdlbmVyYXRlZC1iaW5hcmllcy5wYXRjaAppbmRleCA1Mzc5ZWI2Li5kYjAxM2NmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDAxLWRvbi10LXRyeS10by1ydW4tZ2VuZXJhdGVkLWJpbmFyaWVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDEtZG9uLXQtdHJ5LXRvLXJ1bi1nZW5lcmF0ZWQtYmluYXJpZXMucGF0Y2gKQEAgLTEwLDEyICsxMCwxMiBAQAogIHBwZGMvTWFrZWZpbGUgfCAgIDMwICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogIDEgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCiAKLUluZGV4OiBjdXBzLTIuMC4wL3BwZGMvTWFrZWZpbGUKK0luZGV4OiBjdXBzLTIuMi42L3BwZGMvTWFrZWZpbGUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjdXBzLTIuMC4wLm9yaWcvcHBkYy9NYWtlZmlsZQotKysrIGN1cHMtMi4wLjAvcHBkYy9NYWtlZmlsZQotQEAgLTI0Miw4ICsyNDIsOCBAQCBnZW5zdHJpbmdzOgkJZ2Vuc3RyaW5ncy5vIGxpYmN1cHNwcGRjLmEKLSAJJChDWFgpICQoQVJDSEZMQUdTKSAkKExERkxBR1MpIC1vIGdlbnN0cmluZ3MgZ2Vuc3RyaW5ncy5vIFwKKy0tLSBjdXBzLTIuMi42Lm9yaWcvcHBkYy9NYWtlZmlsZQorKysrIGN1cHMtMi4yLjYvcHBkYy9NYWtlZmlsZQorQEAgLTIyOCw4ICsyMjgsOCBAQCBnZW5zdHJpbmdzOgkJZ2Vuc3RyaW5ncy5vIGxpYmN1cHNwcGRjLmEKKyAJJChMRF9DWFgpICQoQVJDSEZMQUdTKSAkKExERkxBR1MpIC1vIGdlbnN0cmluZ3MgZ2Vuc3RyaW5ncy5vIFwKICAJCWxpYmN1cHNwcGRjLmEgLi4vY3Vwcy8kKExJQkNVUFNTVEFUSUMpICQoTElCR1NTQVBJKSAkKFNTTExJQlMpIFwKICAJCSQoRE5TU0RMSUJTKSAkKENPTU1PTkxJQlMpICQoTElCWikKIC0JZWNobyBHZW5lcmF0aW5nIGxvY2FsaXphdGlvbiBzdHJpbmdzLi4uCkBAIC0yNSw4ICsyNSw4IEBACiAgCiAgCiAgIwotQEAgLTI2MCw5ICsyNjAsOSBAQCBwcGRjLXN0YXRpYzoJCXBwZGMubyBsaWJjdXBzcHBkYy5hIC4uL2N1Ci0gCSQoQ1hYKSAkKEFSQ0hGTEFHUykgJChMREZMQUdTKSAtbyBwcGRjLXN0YXRpYyBwcGRjLm8gbGliY3Vwc3BwZGMuYSBcCitAQCAtMjQ2LDkgKzI0Niw5IEBAIHBwZGMtc3RhdGljOgkJcHBkYy5vIGxpYmN1cHNwcGRjLmEgLi4vY3UKKyAJJChMRF9DWFgpICQoQVJDSEZMQUdTKSAkKExERkxBR1MpIC1vIHBwZGMtc3RhdGljIHBwZGMubyBsaWJjdXBzcHBkYy5hIFwKICAJCS4uL2N1cHMvJChMSUJDVVBTU1RBVElDKSAkKExJQkdTU0FQSSkgJChTU0xMSUJTKSAkKEROU1NETElCUykgXAogIAkJJChDT01NT05MSUJTKSAkKExJQlopCiAtCWVjaG8gVGVzdGluZyBQUEQgY29tcGlsZXIuLi4KQEAgLTM4LDggKzM4LDggQEAKICAKICAKICAjCi1AQCAtMjg4LDE3ICsyODgsMTcgQEAgcHBkaS1zdGF0aWM6CQlwcGRjLXN0YXRpYyBwcGRpLm8gbGliY3VwcwotIAkkKENYWCkgJChBUkNIRkxBR1MpICQoTERGTEFHUykgLW8gcHBkaS1zdGF0aWMgcHBkaS5vIGxpYmN1cHNwcGRjLmEgXAorQEAgLTI3NCwxNyArMjc0LDE3IEBAIHBwZGktc3RhdGljOgkJcHBkYy1zdGF0aWMgcHBkaS5vIGxpYmN1cHMKKyAJJChMRF9DWFgpICQoQVJDSEZMQUdTKSAkKExERkxBR1MpIC1vIHBwZGktc3RhdGljIHBwZGkubyBsaWJjdXBzcHBkYy5hIFwKICAJCS4uL2N1cHMvJChMSUJDVVBTU1RBVElDKSAkKExJQkdTU0FQSSkgJChTU0xMSUJTKSAkKEROU1NETElCUykgXAogIAkJJChDT01NT05MSUJTKSAkKExJQlopCiAtCWVjaG8gVGVzdGluZyBQUEQgaW1wb3J0ZXIuLi4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkOTRiNjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLXJlcXVpcmUgY3Vwcy5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWYyMTJiNDMzOGRiMGRhOGNiODkyZTk0YmYyOTQ5NDYwIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDI2ZTVhMGE1NzRhNjlmZTFkMDEwNzliMjkzMWZjNDkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTk2ZDRkYjcyNjUxYzMzNTQ2OWFlNWYzN2IwZGE3MmFjOWY5N2Q3M2UzMDgzOGQ3ODcwNjVmNTU5ZGVhOThjYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMi42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2FhOTM0YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMi42LmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBjdXBzLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZjIxMmI0MzM4ZGIwZGE4Y2I4OTJlOTRiZjI5NDk0NjAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlOTFjMjZkOGQ5N2I1YTE2MzBhOTYyZjUzMGYwMjE5MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0MDM4NTc3OGMyYjNiZGY1NTAzMGQxYzk5OTczNGUyMjc3NGM3OWUzNDI1ZDkxMzM5Y2U2Nzc4MjU2MjAxNjliIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy5pbmMKaW5kZXggN2M1YmU1MC4uYzllMzEzMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMuaW5jCkBAIC0xMCwzICsxMCw0IEBACiBBTFRFUk5BVElWRV8ke1BOfSA9ICJkaWZmIGNtcCIKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKIAorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2wvYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaAppbmRleCBiZjY2MjY3Li5kZTM4MTA0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaApAQCAtNSwxMSArNSwxMiBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCiAoZGVmYXVsdCBhdXRvbWFrZSBiZWhhdmlvciBpbmNvbXBhdGlibGUgd2l0aCBwdGVzdCkKIAotZGlmZiAtcnVOIGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi0tLS0gYS9jb25maWd1cmUuYWMJMjAxNC0wNS0yOCAxODoxOToxMy41MTM5ODA5NzcgKzAyMDAKLSsrKyBiL2NvbmZpZ3VyZS5hYwkyMDE0LTA1LTI4IDE4OjE5OjIxLjEyOTY2MDIxNSArMDIwMAotQEAgLTIsNyArMiw3IEBACi0gQUNfSU5JVChldGh0b29sLCAzLjE0LCBuZXRkZXZAdmdlci5rZXJuZWwub3JnKQorSW5kZXg6IGV0aHRvb2wtNC4xMy9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBldGh0b29sLTQuMTMub3JpZy9jb25maWd1cmUuYWMKKysrKyBldGh0b29sLTQuMTMvY29uZmlndXJlLmFjCitAQCAtMiw3ICsyLDcgQEAgZG5sIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcAorIEFDX0lOSVQoZXRodG9vbCwgNC4xMywgbmV0ZGV2QHZnZXIua2VybmVsLm9yZykKICBBQ19QUkVSRVEoMi41MikKICBBQ19DT05GSUdfU1JDRElSKFtldGh0b29sLmNdKQogLUFNX0lOSVRfQVVUT01BS0UoW2dudV0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjExLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNC4xMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVmZTliOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjExLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJEaXNwbGF5IG9yIGNoYW5nZSBldGhlcm5ldCBjYXJkIHNldHRpbmdzIgotREVTQ1JJUFRJT04gPSAiQSBzbWFsbCB1dGlsaXR5IGZvciBleGFtaW5pbmcgYW5kIHR1bmluZyB0aGUgc2V0dGluZ3Mgb2YgeW91ciBldGhlcm5ldC1iYXNlZCBuZXR3b3JrIGludGVyZmFjZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9uZXR3b3JrL2V0aHRvb2wvIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2V0aHRvb2wuYztiZWdpbmxpbmU9NDtlbmRsaW5lPTE3O21kNT1jMTliMzA1NDhjNTgyNTc3ZmM2YjQ0MzYyNmZjMTIxNiIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbC9ldGh0b29sLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4ZjEwNzI2Nzk4ODhjOTMzNWU0OWIxN2VmYjc5OGI0YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhZjJmZDk2OTJmMzE1OWQzYWIxZTQxZTZmOWI3ZDhkYjJhNDY5M2YxY2IyMjM0OGM4OGJhODlmNzBmMGU2NTAzIgotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdAotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UiCi0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICBvZV9ydW5tYWtlIGJ1aWxkdGVzdC1URVNUUwotfQotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLSAgIGNwICR7Qn0vTWFrZWZpbGUgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9Ci0gICBpbnN0YWxsICR7Qn0vdGVzdC1jbWRsaW5lICAgICAgICAke0R9JHtQVEVTVF9QQVRIfQotICAgaW5zdGFsbCAke0J9L3Rlc3QtZmVhdHVyZXMgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KLSAgIGluc3RhbGwgJHtCfS9ldGh0b29sICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2V0aHRvb2wKLSAgIHNlZCAtaSAncy9eTWFrZWZpbGUvX01ha2VmaWxlLycgICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjEzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNC4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODYyYTU3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNC4xMy5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIkRpc3BsYXkgb3IgY2hhbmdlIGV0aGVybmV0IGNhcmQgc2V0dGluZ3MiCitERVNDUklQVElPTiA9ICJBIHNtYWxsIHV0aWxpdHkgZm9yIGV4YW1pbmluZyBhbmQgdHVuaW5nIHRoZSBzZXR0aW5ncyBvZiB5b3VyIGV0aGVybmV0LWJhc2VkIG5ldHdvcmsgaW50ZXJmYWNlcy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbC8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXRodG9vbC5jO2JlZ2lubGluZT00O2VuZGxpbmU9MTc7bWQ1PWMxOWIzMDU0OGM1ODI1NzdmYzZiNDQzNjI2ZmMxMjE2IgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvbmV0d29yay9ldGh0b29sL2V0aHRvb2wtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjJiYTQ0ZWIwY2E5Njc1MjM5MmU5YmY4ZGM4M2JhMzAyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQzMTFjNGI1NTdjNDRjNTI0OGFjNTQzNmI5ZTE5YzM5MWE2MGQ4ZTQ4MzBiNmE3ZjQxYmUxNmQ4OWMwNTU2ZGUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0CitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKyAgIG9lX3J1bm1ha2UgYnVpbGR0ZXN0LVRFU1RTCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworICAgY3AgJHtCfS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KKyAgIGluc3RhbGwgJHtCfS90ZXN0LWNtZGxpbmUgICAgICAgICR7RH0ke1BURVNUX1BBVEh9CisgICBpbnN0YWxsICR7Qn0vdGVzdC1mZWF0dXJlcyAgICAgICAke0R9JHtQVEVTVF9QQVRIfQorICAgaW5zdGFsbCAke0J9L2V0aHRvb2wgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vZXRodG9vbAorICAgc2VkIC1pICdzL15NYWtlZmlsZS9fTWFrZWZpbGUvJyAgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrLTQuMS40L3Rlc3QtYXJyYXlpbmQxLVJlbW92ZS1oYXNoYmFuZy1saW5lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2stNC4xLjQvdGVzdC1hcnJheWluZDEtUmVtb3ZlLWhhc2hiYW5nLWxpbmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0MjYyZWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2stNC4xLjQvdGVzdC1hcnJheWluZDEtUmVtb3ZlLWhhc2hiYW5nLWxpbmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIGEzYTNmMjYwNzgyMjNjNDc4NzFjN2I1M2U1YzAxNWFkMTYzYWUwNDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGYWJpbyBCZXJ0b24gPGZhYmlvLmJlcnRvbkBvc3N5c3RlbXMuY29tLmJyPgotRGF0ZTogVGh1LCAzIE5vdiAyMDE2IDE0OjUwOjUyIC0wMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRlc3QvYXJyYXlpbmQxOiBSZW1vdmUgaGFzaGJhbmcgbGluZQotT3JnYW5pemF0aW9uOiBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KLQotUmVtb3ZlICIjIS91c3IvbG9jYWwvYmluL2F3ayAtZiIgYXMgbm9uZSBvZiB0aGUgb3RoZXIgYXdrIHNjcmlwdHMgaW4gdGhlCi10ZXN0IHN1aXRlIGhhdmUgYSBoYXNoYmFuZy4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgWzFdCi0KLVsxXSBodHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1nYXdrLzIwMTYtMTEvbXNnMDAwMDMuaHRtbAotCi1TaWduZWQtb2ZmLWJ5OiBGYWJpbyBCZXJ0b24gPGZhYmlvLmJlcnRvbkBvc3N5c3RlbXMuY29tLmJyPgotLS0tCi0gdGVzdC9hcnJheWluZDEuYXdrIHwgMSAtCi0gMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3QvYXJyYXlpbmQxLmF3ayBiL3Rlc3QvYXJyYXlpbmQxLmF3awotaW5kZXggNWQ0YTZmMy4uNTllOGI0ZSAxMDA3NTUKLS0tLSBhL3Rlc3QvYXJyYXlpbmQxLmF3awotKysrIGIvdGVzdC9hcnJheWluZDEuYXdrCi1AQCAtMSw0ICsxLDMgQEAKLS0jIS91c3IvbG9jYWwvYmluL2F3ayAtZgotICMgdGhpcyBzY3JpcHQgcmVudW1zIHBlZGlncmVlcyB3aXRoIG1ldGFmb3VuZGVycwotICMgc28gdGhhdCB0aGV5IGFyZSBhZGRlZCAqYmVmb3JlKnJlZ3VsYXIgYW5pbWFscwotICMgbWYgYXJlIGFzY2VydGFpbmVkIGJlY2F1c2UgdGhleSBhcmUgbm90IGluIHRoZSAxc3QgY29sdW1uCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrLTQuMS40L3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrL3J1bi1wdGVzdApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2stNC4xLjQvcnVuLXB0ZXN0CnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dhd2svZ2F3ay9ydW4tcHRlc3QKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrXzQuMS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNC4xLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5NWQzN2QuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNC4xLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIkdOVSBhd2sgdGV4dCBwcm9jZXNzaW5nIHV0aWxpdHkiCi1ERVNDUklQVElPTiA9ICJUaGUgR05VIHZlcnNpb24gb2YgYXdrLCBhIHRleHQgcHJvY2Vzc2luZyB1dGlsaXR5LiBcCi1Bd2sgaW50ZXJwcmV0cyBhIHNwZWNpYWwtcHVycG9zZSBwcm9ncmFtbWluZyBsYW5ndWFnZSB0byBkbyBcCi1xdWljayBhbmQgZWFzeSB0ZXh0IHBhdHRlcm4gbWF0Y2hpbmcgYW5kIHJlZm9ybWF0dGluZyBqb2JzLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ2F3ay8iCi1CVUdUUkFDS0VSICA9ICJidWctZ2F3a0BnbnUub3JnIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi0jIGdhd2sgPD0gMy4xLjU6IEdQTHYyCi0jIGdhd2sgPj0gMy4xLjY6IEdQTHYzCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLURFUEVORFMgKz0gInJlYWRsaW5lIgotCi1QQUNLQUdFQ09ORklHW21wZnJdID0gIi0td2l0aC1tcGZyLC0td2l0aG91dC1tcGZyLCBtcGZyIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ2F3ay9nYXdrLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vdGVzdC1hcnJheWluZDEtUmVtb3ZlLWhhc2hiYW5nLWxpbmUucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjIwYzk0Y2E1MWI2ZWJmYzliZmZiOTBmOTVjOGZmYmIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGMwMzA4MGUyYjVhNTYyNjNlODc4M2Y2ZjFmMzA2Mzk4ZDQ1OTFiZTE4MjU0MDQxZjNmNTQ3ZWZlZjk0NGQzNSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYXdrIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vJHtCUE59LyoubGEiCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImF3ayIKLUFMVEVSTkFUSVZFX1RBUkdFVFthd2tdID0gIiR7YmluZGlyfS9nYXdrIgotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIHJlbW92ZSB0aGUgbGluayBzaW5jZSB3ZSBkb24ndCBwYWNrYWdlIGl0Ci0Jcm0gJHtEfSR7YmluZGlyfS9hd2sKLX0KLQotaW5oZXJpdCBwdGVzdAotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCW1rZGlyICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQlmb3IgaSBpbiBgZ3JlcCAtdkUgIkB8XiR8I3xHdC1kdW1teSIgJHtTfS90ZXN0L01ha2V0ZXN0cyB8YXdrIC1GOiAne3ByaW50ICQxfSdgIE1ha2V0ZXN0cyBpbmNsaWIuYXdrOyBcCi0JICBkbyBjcCAke1N9L3Rlc3QvJGkqICR7RH0ke1BURVNUX1BBVEh9L3Rlc3Q7IFwKLQlkb25lCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrXzQuMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNC4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdmNzlhMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrXzQuMi4wLmJiCkBAIC0wLDAgKzEsNDggQEAKK1NVTU1BUlkgPSAiR05VIGF3ayB0ZXh0IHByb2Nlc3NpbmcgdXRpbGl0eSIKK0RFU0NSSVBUSU9OID0gIlRoZSBHTlUgdmVyc2lvbiBvZiBhd2ssIGEgdGV4dCBwcm9jZXNzaW5nIHV0aWxpdHkuIFwKK0F3ayBpbnRlcnByZXRzIGEgc3BlY2lhbC1wdXJwb3NlIHByb2dyYW1taW5nIGxhbmd1YWdlIHRvIGRvIFwKK3F1aWNrIGFuZCBlYXN5IHRleHQgcGF0dGVybiBtYXRjaGluZyBhbmQgcmVmb3JtYXR0aW5nIGpvYnMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nYXdrLyIKK0JVR1RSQUNLRVIgID0gImJ1Zy1nYXdrQGdudS5vcmciCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKKyMgZ2F3ayA8PSAzLjEuNTogR1BMdjIKKyMgZ2F3ayA+PSAzLjEuNjogR1BMdjMKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworREVQRU5EUyArPSAicmVhZGxpbmUiCisKK1BBQ0tBR0VDT05GSUdbbXBmcl0gPSAiLS13aXRoLW1wZnIsLS13aXRob3V0LW1wZnIsIG1wZnIiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9nYXdrL2dhd2stJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwYjU5OGMzMWJjNzAzZDY2MDgyYmQ5NThkNDE4OTk4MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjODgwNDZjNmU4Mzk2ZWU1NDhiY2I5NDFlMTZkZWY4MDliN2I1NWI2MGExMDQ0YjVkZDI1NDA5NGYzNDdjN2Q5IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcworCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9hd2siCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS8ke0JQTn0vKi5sYSIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiYXdrIgorQUxURVJOQVRJVkVfVEFSR0VUW2F3a10gPSAiJHtiaW5kaXJ9L2dhd2siCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgcmVtb3ZlIHRoZSBsaW5rIHNpbmNlIHdlIGRvbid0IHBhY2thZ2UgaXQKKwlybSAke0R9JHtiaW5kaXJ9L2F3aworfQorCitpbmhlcml0IHB0ZXN0CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJbWtkaXIgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCWZvciBpIGluIGBncmVwIC12RSAiQHxeJHwjfEd0LWR1bW15IiAke1N9L3Rlc3QvTWFrZXRlc3RzIHxhd2sgLUY6ICd7cHJpbnQgJDF9J2AgTWFrZXRlc3RzIGluY2xpYi5hd2s7IFwKKwkgIGRvIGNwICR7U30vdGVzdC8kaSogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdDsgXAorCWRvbmUKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi03OTc3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi03OTc3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2VlZDEyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTYtNzk3Ny5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gOGFiZDIyMDEwZWI0ZGIwZmIxYjEwZTQzMGQ1ZjVkODNlMDE1ZWY3MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzIExpZGRlbGwgPGNocmlzLmxpZGRlbGxAYXJ0aWZleC5jb20+Ci1EYXRlOiBNb24sIDMgT2N0IDIwMTYgMDE6NDY6MjggKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQnVnIDY5NzE2OTogQmUgcmlnb3JvdXMgd2l0aCBTQUZFUiBwZXJtaXNzaW9ucwotCi1PbmNlIHdlJ3ZlIG9wZW5lZCBvdXIgaW5wdXQgZmlsZSBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIGVuZm9yY2UgdGhlIFNBRkVSCi1ydWxlcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNi03OTc3Ci0KLVNpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gcHNpL3pmaWxlLmMgfCAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3BzaS96ZmlsZS5jIGIvcHNpL3pmaWxlLmMKLWluZGV4IGI2Y2FlYTIuLjJjNmM5NTggMTAwNjQ0Ci0tLS0gYS9wc2kvemZpbGUuYwotKysrIGIvcHNpL3pmaWxlLmMKLUBAIC0xMDgxLDYgKzEwODEsOSBAQCBsaWJfZmlsZV9vcGVuKGdzX2ZpbGVfcGF0aF9wdHIgIGxpYl9wYXRoLCBjb25zdCBnc19tZW1vcnlfdCAqbWVtLCBpX2N0eF90ICppX2N0eAotICAgICBnc19tYWluX2luc3RhbmNlICptaW5zdCA9IGdldF9taW5zdF9mcm9tX21lbW9yeShtZW0pOwotICAgICBpbnQgY29kZTsKLSAKLSsgICAgaWYgKGlfY3R4X3AgJiYgc3RhcnRpbmdfYXJnX2ZpbGUpCi0rICAgICAgICBpX2N0eF9wLT5zdGFydGluZ19hcmdfZmlsZSA9IGZhbHNlOwotKwotICAgICAvKiB3aGVuIHN0YXJ0aW5nIGFyZyBmaWxlcyAoQCBmaWxlcykgaW9kZXZfZGVmYXVsdCBpcyBub3QgeWV0IHNldCAqLwotICAgICBpZiAoaW9kZXYgPT0gMCkKLSAgICAgICAgIGlvZGV2ID0gKGd4X2lvX2RldmljZSAqKWd4X2lvX2RldmljZV90YWJsZVswXTsKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4wMi1nZW5hcmNoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjAyLWdlbmFyY2gucGF0Y2gKaW5kZXggZTI4YTk0OS4uYjRjMTRlYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjAyLWdlbmFyY2gucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjAyLWdlbmFyY2gucGF0Y2gKQEAgLTEyLDExICsxMiwxMiBAQAogIyBTdW1tYXJ5OiBHZW5lcmF0ZSBhcmNoLmggZm9yIHBwYzMyCiAjCiAKLWRpZmYgLU5ydSBnaG9zdHNjcmlwdC04LjY0Lm9yaWcvYmFzZS9saWIubWFrIGdob3N0c2NyaXB0LTguNjQvYmFzZS9saWIubWFrCi0tLS0gZ2hvc3RzY3JpcHQtOC42NC5vcmlnL2Jhc2UvbGliLm1hawkyMDEwLTAyLTEwIDEwOjMwOjAyLjAwMDAwMDAwMCArMDgwMAotKysrIGdob3N0c2NyaXB0LTguNjQvYmFzZS9saWIubWFrCTIwMTAtMDItMTAgMTA6NTY6MjEuMDAwMDAwMDAwICswODAwCi1AQCAtNjcsOCArNjcsOCBAQAotIHN0ZHByZV9oPSQoR0xTUkMpc3RkcHJlLmggJChzdGRwbl9oKQorSW5kZXg6IGdob3N0c2NyaXB0LTkuMjEvYmFzZS9saWIubWFrCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2hvc3RzY3JpcHQtOS4yMS5vcmlnL2Jhc2UvbGliLm1haworKysrIGdob3N0c2NyaXB0LTkuMjEvYmFzZS9saWIubWFrCitAQCAtNzMsOCArNzMsOCBAQCBhcmNoX2g9JChHTEdFTilhcmNoLmgKKyBzdGRwcmVfaD0kKEdMU1JDKXN0ZHByZS5oCiAgc3RkaW50X19oPSQoR0xTUkMpc3RkaW50Xy5oICQoc3RkX2gpCiAgCiAtJChHTEdFTilhcmNoLmggOiAkKEdFTkFSQ0hfWEUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0XzkuMjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0XzkuMjEuYmIKaW5kZXggYmY5ODVjNC4uNTBlYzdlMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjIxLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHRfOS4yMS5iYgpAQCAtMzIsNyArMzIsNiBAQAogICAgICAgICAgICBmaWxlOi8vZ2hvc3RzY3JpcHQtOS4wMi1nZW5hcmNoLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL29iamFyY2guaCBcCiAgICAgICAgICAgIGZpbGU6Ly9jdXBzLW5vLWdjcnlwdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi03OTc3LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTcyMDcucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNTk1MS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy03OTc1LnBhdGNoIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ28tZXhhbXBsZXMvZ28taGVsbG93b3JsZF8wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dvLWV4YW1wbGVzL2dvLWhlbGxvd29ybGRfMC4xLmJiCmluZGV4IDIyMmZjOWQuLmFiNzBlYTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ28tZXhhbXBsZXMvZ28taGVsbG93b3JsZF8wLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nby1leGFtcGxlcy9nby1oZWxsb3dvcmxkXzAuMS5iYgpAQCAtNyw2ICs3LDcgQEAKIAogU1JDX1VSSSA9ICJnaXQ6Ly8ke0dPX0lNUE9SVH0iCiBTUkNSRVYgPSAiNDY2OTVkODFkMWZhZTkwNWEyNzBmYjdkYjhhNGQxMWEzMzQ1NjJmZSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogR09fSU1QT1JUID0gImdpdGh1Yi5jb20vZ29sYW5nL2V4YW1wbGUiCiBHT19JTlNUQUxMID0gIiR7R09fSU1QT1JUfS9oZWxsbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3BlcmYvZ3BlcmYuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncGVyZi9ncGVyZi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4Y2UyMzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncGVyZi9ncGVyZi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJHTlUgZ3BlcmYgaXMgYSBwZXJmZWN0IGhhc2ggZnVuY3Rpb24gZ2VuZXJhdG9yIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dwZXJmIgotU1VNTUFSWSAgPSAiR2VuZXJhdGUgYSBwZXJmZWN0IGhhc2ggZnVuY3Rpb24gZnJvbSBhIHNldCBvZiBrZXl3b3JkcyIKLUxJQ0VOU0UgID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9tYWluLmNjO2JlZ2lubGluZT04O2VuZGxpbmU9MTk7bWQ1PWRlYzhmNjExODQ1ZDA0NzM4N2VkNTZiNWI4NWZhOTliIgotCi1TUkNfVVJJICA9ICIke0dOVV9NSVJST1J9L2dwZXJmL2dwZXJmLSR7UFZ9LnRhci5neiIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotIyBhdXRvcmVjb25mIGNvdWxkbid0IGZpbmQgYWNpbmNsdWRlLm00IHdoZW4gc3RlcHBpbmcgaW50byBzdWJkaXJlY3RvcnkuIEluc3RlYWQgb2YKLSMgZHVwbGljYXRpbmcgYWNpbmNsdWRlLm00IGluIGV2ZXJ5IHN1YmRpcmVjdG9yeSwgdXNlIGFic29sdXRlIGluY2x1ZGUgcGF0aCB0byBhY2xvY2FsCi1FWFRSQV9BVVRPUkVDT05GICs9ICIgLUkgJHtTfSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgICAgIGlmIFsgISAtZSAke1N9L2FjaW5jbHVkZS5tNCBdOyB0aGVuCi0gICAgICAgICAgICAgICAgY2F0ICR7U30vYWNsb2NhbC5tNCA+ICR7U30vYWNpbmNsdWRlLm00Ci0gICAgICAgIGZpCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncGVyZi9ncGVyZl8zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dwZXJmL2dwZXJmXzMuMS5iYgppbmRleCA5NDI4MjBiLi5mNjFiMmEzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dwZXJmL2dwZXJmXzMuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dwZXJmL2dwZXJmXzMuMS5iYgpAQCAtMSw1ICsxLDE4IEBACi1yZXF1aXJlIGdwZXJmLmluYworREVTQ1JJUFRJT04gPSAiR05VIGdwZXJmIGlzIGEgcGVyZmVjdCBoYXNoIGZ1bmN0aW9uIGdlbmVyYXRvciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9ncGVyZiIKK1NVTU1BUlkgID0gIkdlbmVyYXRlIGEgcGVyZmVjdCBoYXNoIGZ1bmN0aW9uIGZyb20gYSBzZXQgb2Yga2V5d29yZHMiCitMSUNFTlNFICA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbWFpbi5jYztiZWdpbmxpbmU9ODtlbmRsaW5lPTE5O21kNT1kZWM4ZjYxMTg0NWQwNDczODdlZDU2YjViODVmYTk5YiIKIAotCitTUkNfVVJJICA9ICIke0dOVV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuZ3oiCiBTUkNfVVJJW21kNXN1bV0gPSAiOWUyNTFjMGE2MThhZDA4MjRiNTExMTdkNWQ5ZGI4N2UiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTg4NTQ2Yjk0NWJiYTRiNzBiNmEzYTYxNmU4MGI0YWI0NjZlM2YzMzAyNGEzNTJmYzIxOTgxMTJjZGJiM2FlMiIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworIyBUaGUgbmVzdGVkIGNvbmZpZ3VyZXMgZG9uJ3QgZmluZCB0aGUgcGFyZW50IGFjbG9jYWwubTQgb3V0IG9mIHRoZSBib3gsIHNvIHRlbGwKKyMgaXQgd2hlcmUgdG8gbG9vayBleHBsaWNpdGx5IChtaXJyb3JpbmcgdGhlIGJlaGF2aW91ciBvZiB1cHN0cmVhbSdzIE1ha2VmaWxlLmRldmVsKS4KK0VYVFJBX0FVVE9SRUNPTkYgKz0gIiAtSSAke1N9IC0tZXhjbHVkZT1hY2xvY2FsIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuMS5iYgppbmRleCAwNWI2YjkzLi43MTgxMGRjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcF8zLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXBfMy4xLmJiCkBAIC0xNCw4ICsxNCw2IEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBwa2djb25maWcKIAotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1wZXJsLXJlZ2V4cCIKLQogIyBGaXggIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gbGVuKFRNUERJUikgPSA0MTAKIGFjcGF0aHMgPSAiLUkgLi9tNCIKIApAQCAtMzYsNiArMzQsOSBAQAogCiBpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKIAorUEFDS0FHRUNPTkZJRyA/Pz0gInBjcmUiCitQQUNLQUdFQ09ORklHW3BjcmVdID0gIi0tZW5hYmxlLXBlcmwtcmVnZXhwLC0tZGlzYWJsZS1wZXJsLXJlZ2V4cCxsaWJwY3JlIgorCiBBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCiAKIEFMVEVSTkFUSVZFXyR7UE59ID0gImdyZXAgZWdyZXAgZmdyZXAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZmlsZXMvMDAwMS1nemlwLXBvcnQtemRpZmYtemxlc3MtdG8tQnVzeWJveC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9maWxlcy8wMDAxLWd6aXAtcG9ydC16ZGlmZi16bGVzcy10by1CdXN5Ym94LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGQ1YTE5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9maWxlcy8wMDAxLWd6aXAtcG9ydC16ZGlmZi16bGVzcy10by1CdXN5Ym94LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotRnJvbSA1ZjcxMjYyMTgyOWVkODFhNzU4MDc3NDMxMjI2YTg2ZGYzN2ZiYzNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVueXMgWmFnb3J1aSA8ZGVueXMuemFnb3J1aUBnbG9iYWxsb2dpYy5jb20+Ci1EYXRlOiBUaHUsIDggSnVuIDIwMTcgMTY6MDU6NTAgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gZ3ppcDogcG9ydCB6ZGlmZiwgemxlc3MgdG8gQnVzeWJveAotCi1Qcm9ibGVtIHJlcG9ydGVkIGJ5IERlbnlzIFphZ29ydWkgKEJ1ZyMyNjA4OCkuCi0qIHRlc3RzL3pkaWZmOiBDaGVjayB0aGF0IGRpZmYgdXNlcyBQT1NJWC1mb3JtYXQgb3V0cHV0LgotKiB6bGVzcy5pbiAobGVzc192ZXJzaW9uKTogRG9uJ3QgZXhpdCBtZXJlbHkgYmVjYXVzZSAnbGVzcyAtVicKLWZhaWxzOyBpbnN0ZWFkLCBhc3N1bWUgJ2xlc3MnIGlzIGNvbXBhdGlibGUgd2l0aCBhbiBvbGQgdmVyc2lvbiBvZgotdGhlIG9yaWdpbmFsICdsZXNzJy4gIEJ1c3lib3ggJ2xlc3MgLVYnIGZhaWxzLCBidXQgYXBwYXJlbnRseSBpdHMKLSdsZXNzJyB3b3JrcyBhbnl3YXkgc29tZWhvdy4KLQotU2lnbmVkLW9mZi1ieTogRGVueXMgWmFnb3J1aSA8ZGVueXMuemFnb3J1aUBnbG9iYWxsb2dpYy5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKLS0tLQotIHRlc3RzL3pkaWZmIHwgNCArKystCi0gemxlc3MuaW4gICAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0cy96ZGlmZiBiL3Rlc3RzL3pkaWZmCi1pbmRleCAwYmI3YzdkLi45Y2Q0ZmQ0IDEwMDc1NQotLS0tIGEvdGVzdHMvemRpZmYKLSsrKyBiL3Rlc3RzL3pkaWZmCi1AQCAtMjIsNyArMjIsNiBAQAotIAotIGVjaG8gYSA+IGEgfHwgZnJhbWV3b3JrX2ZhaWx1cmVfCi0gZWNobyBiID4gYiB8fCBmcmFtZXdvcmtfZmFpbHVyZV8KLS1nemlwIGEgYiB8fCBmcmFtZXdvcmtfZmFpbHVyZV8KLSAKLSBjYXQgPDxFT0YgPiBleHAKLSAxYzEKLUBAIC0zMSw3ICszMCwxMCBAQCBjYXQgPDxFT0YgPiBleHAKLSA+IGIKLSBFT0YKLSAKLStkaWZmIGEgYiB8IGRpZmYgZXhwIC0gfHwgc2tpcF8gImRpZmYgb3V0cHV0IGZvcm1hdCBpcyBpbmNvbXBhdGlibGUgd2l0aCBQT1NJWCIKLSsKLSBmYWlsPTAKLStnemlwIGEgYiB8fCBmYWlsPTEKLSB6ZGlmZiBhLmd6IGIuZ3ogPiBvdXQgMj4mMQotIHRlc3QgJD8gPSAxIHx8IGZhaWw9MQotIAotZGlmZiAtLWdpdCBhL3psZXNzLmluIGIvemxlc3MuaW4KLWluZGV4IGU2MzRhZjYuLjk3NTlhZTYgMTAwNjQ0Ci0tLS0gYS96bGVzcy5pbgotKysrIGIvemxlc3MuaW4KLUBAIC00Nyw3ICs0Nyw3IEBAIGlmIHRlc3QgIiR7TEVTU01FVEFDSEFSUytzZXR9IiAhPSBzZXQ7IHRoZW4KLSAgIGV4cG9ydCBMRVNTTUVUQUNIQVJTCi0gZmkKLSAKLS1sZXNzX3ZlcnNpb249YGxlc3MgLVZgIHx8IGV4aXQKLStsZXNzX3ZlcnNpb249YGxlc3MgLVYgMj4vZGV2L251bGxgCi0gY2FzZSAkbGVzc192ZXJzaW9uIGluCi0gbGVzcycgJzQ1WzEtOV0qIHwgXAotIGxlc3MnICc0WzYtOV1bMC05XSogfCBcCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwLTEuOC93cm9uZy1wYXRoLWZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwLTEuOC93cm9uZy1wYXRoLWZpeC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRjMTAwMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcC0xLjgvd3JvbmctcGF0aC1maXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1maXggTWFrZU1ha2VyIGlzc3VlcyB3aXRoIHVzaW5nIHdyb25nIFNIRUxML0dSRVAKLQotQSBzZXQgb2Ygc3Vic3RpdHV0aW9uIGlzIGJlaW5nIHByb2Nlc3NlZCB0byBhbGwgdGFyZ2V0IHNjcmlwdHMgd2l0aCBzZWQgYnkKLXJlcGxhY2luZyBzb21lIGtleSB3b3JkcyB3aXRoIHRoZSBkZXRlY3RlZCB2YWx1ZXMgYXQgY29uZmlndXJlIHRpbWUsIHRoaXMKLWlzIGV4YWN0bHkgbm90IGNvbXBsaWFudCB3aXRoIGNyb3NzIGNvbXBsaW5nLCBhbmQgd2lsbCBjYXVzZSBtaXNzaW5nIHBhdGgKLWVycm9ycyBhdCBydW4gdGltZSBsaWtlOgotIi91c3IvYmluL3pncmVwOiBsaW5lIDIzMDogL3Vzci9iaW4vZ3JlcDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSIKLQotRml4ZWQgYnkgcmVtb3ZpbmcgdW5uZWVkZWQgc3Vic3RpdHV0aW9uIGFuZCB1c2luZyByZWFsIHJ1bnRpbWUgcGF0aHMKLWluc3RlYWQuCi0KLVNpZ25lZC1vZmYtYnk6IE1pbmcgTGl1IDxtaW5nLmxpdUB3aW5kcml2ZXIuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IGd6aXAtMS44L01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3ppcC0xLjgub3JpZy9NYWtlZmlsZS5hbQotKysrIGd6aXAtMS44L01ha2VmaWxlLmFtCi1AQCAtODEsOCArODEsNyBAQCBnemlwLmRvYy5nejogZ3ppcC5kb2MgJChiaW5fUFJPR1JBTVMpCi0gU1VGRklYRVMgPSAuaW4KLSAuaW46Ci0gCSQoQU1fVl9HRU4pc2VkIFwKLS0JCS1lICdzfC9iaW4vc2h8JChTSEVMTCl8ZycgXAotLQkJLWUgJ3N8W0BdR1JFUEB8JChHUkVQKXxnJyBcCi0rCQktZSAnc3xbQF1HUkVQQHwkKGJhc2VfYmluZGlyKS9ncmVwfGcnIFwKLSAJCS1lICdzfFtAXVZFUlNJT05AfCQoVkVSU0lPTil8ZycgXAotIAkJJChzcmNkaXIpLyRALmluID4kQC10IFwKLSAJICAmJiBjaG1vZCBhK3ggJEAtdCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcC0xLjkvd3JvbmctcGF0aC1maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcC0xLjkvd3JvbmctcGF0aC1maXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MzN2JjOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwLTEuOS93cm9uZy1wYXRoLWZpeC5wYXRjaApAQCAtMCwwICsxLDM2IEBACitmaXggTWFrZU1ha2VyIGlzc3VlcyB3aXRoIHVzaW5nIHdyb25nIFNIRUxML0dSRVAKKworQSBzZXQgb2Ygc3Vic3RpdHV0aW9uIGlzIGJlaW5nIHByb2Nlc3NlZCB0byBhbGwgdGFyZ2V0IHNjcmlwdHMgd2l0aCBzZWQgYnkKK3JlcGxhY2luZyBzb21lIGtleSB3b3JkcyB3aXRoIHRoZSBkZXRlY3RlZCB2YWx1ZXMgYXQgY29uZmlndXJlIHRpbWUsIHRoaXMKK2lzIGV4YWN0bHkgbm90IGNvbXBsaWFudCB3aXRoIGNyb3NzIGNvbXBsaW5nLCBhbmQgd2lsbCBjYXVzZSBtaXNzaW5nIHBhdGgKK2Vycm9ycyBhdCBydW4gdGltZSBsaWtlOgorIi91c3IvYmluL3pncmVwOiBsaW5lIDIzMDogL3Vzci9iaW4vZ3JlcDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSIKKworRml4ZWQgYnkgcmVtb3ZpbmcgdW5uZWVkZWQgc3Vic3RpdHV0aW9uIGFuZCB1c2luZyByZWFsIHJ1bnRpbWUgcGF0aHMKK2luc3RlYWQuCisKK1NpZ25lZC1vZmYtYnk6IE1pbmcgTGl1IDxtaW5nLmxpdUB3aW5kcml2ZXIuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworLS0tCisgTWFrZWZpbGUuYW0gfCAzICstLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KK2luZGV4IGQ0ZWNjM2YuLmU0NjU3ZDIgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC04Miw4ICs4Miw3IEBAIFNVRkZJWEVTID0gLmluCisgLmluOgorIAkkKEFNX1ZfR0VOKXJtIC1mICRALXQgJEAgXAorICAgICAgICAgICAmJiBzZWQgXAorLQkJLWUgJ3N8L2Jpbi9zaHwkKFNIRUxMKXxnJyBcCistCQktZSAnc3xbQF1HUkVQQHwkKEdSRVApfGcnIFwKKysJCS1lICdzfFtAXUdSRVBAfCQoYmFzZV9iaW5kaXIpL2dyZXB8ZycgXAorIAkJLWUgJ3N8W0BdVkVSU0lPTkB8JChWRVJTSU9OKXxnJyBcCisgCQkkKHNyY2RpcikvJEAuaW4gPiRALXQgXAorIAkgICYmIGNobW9kIGE9cnggJEAtdCBcCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwXzEuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwXzEuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDA5MzIwNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcF8xLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1yZXF1aXJlIGd6aXAuaW5jCi0KLUxJQ0VOU0UgPSAiR1BMdjMrIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ3ppcC8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtZ3ppcC1wb3J0LXpkaWZmLXpsZXNzLXRvLUJ1c3lib3gucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCIKLVNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZmlsZTovL3dyb25nLXBhdGgtZml4LnBhdGNoIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nemlwLmg7YmVnaW5saW5lPTg7ZW5kbGluZT0yMDttZDU9NmU0N2NhYWE2MzBlMGM4YmY5ZjFiYzhkOTRhOGVkMGUiCi0KLVBST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGd6aXAtcmVwbGFjZW1lbnQtbmF0aXZlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotaW5oZXJpdCBwdGVzdAotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCW1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L3NyYy9idWlsZC1hdXgKLQljcCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfS9zcmMvYnVpbGQtYXV4LwotCW1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L3NyYy90ZXN0cwotCWNwIC1yICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS9zcmMvdGVzdHMKLQlzZWQgLWUgJ3MvXmFic19zcmNkaXIgPSAuLiovYWJzX3NyY2RpciA9IFwuXC4vJyBcCi0gICAgICAgICAgICAtZSAncy9edG9wX3NyY2RpciA9IC4uKi90b3Bfc3JjZGlyID0gXC5cLi8nIFwKLSAgICAgICAgICAgIC1lICdzL15HUkVQID0gLi4qL0dSRVAgPSBncmVwLycgICAgICAgICAgICAgXAotICAgICAgICAgICAgLWUgJ3MvXkFXSyA9IC4uKi9BV0sgPSBhd2svJyAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAtZSAncy9ec3JjZGlyID0gLi4qL3NyY2RpciA9IFwuLycgICAgICAgICAgIFwKLSAgICAgICAgICAgIC1lICdzL15NYWtlZmlsZTogLi4qL01ha2VmaWxlOiAvJyAgICAgICAgICAgXAotICAgICAgICAgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgICBcCi0gICAgICAgICAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCi0gICAgICAgICAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAotICAgICAgICAgICAgJHtCfS90ZXN0cy9NYWtlZmlsZSA+ICR7RH0ke1BURVNUX1BBVEh9L3NyYy90ZXN0cy9NYWtlZmlsZQotfQotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzMyNTUzMTUyODE0YjIyZGMzNWFhMDI2N2RmNTI4NmMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWZmN2FlZGIzZDY2YTBkNzNmNDQyZjYyNjFlNGIzODYwZGY2ZmQ2Yzk0MDI1YzJjYjMxYTIwMmM5YzYwZmUwZSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZWViYTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcF8xLjkuYmIKQEAgLTAsMCArMSwzOCBAQAorcmVxdWlyZSBnemlwLmluYworCitMSUNFTlNFID0gIkdQTHYzKyIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2d6aXAvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGZpbGU6Ly93cm9uZy1wYXRoLWZpeC5wYXRjaCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3ppcC5oO2JlZ2lubGluZT04O2VuZGxpbmU9MjA7bWQ1PTZlNDdjYWFhNjMwZTBjOGJmOWYxYmM4ZDk0YThlZDBlIgorCitQUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBnemlwLXJlcGxhY2VtZW50LW5hdGl2ZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK2luaGVyaXQgcHRlc3QKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfS9zcmMvYnVpbGQtYXV4CisJY3AgJHtTfS9idWlsZC1hdXgvdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0vc3JjL2J1aWxkLWF1eC8KKwlta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfS9zcmMvdGVzdHMKKwljcCAtciAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vc3JjL3Rlc3RzCisJc2VkIC1lICdzL15hYnNfc3JjZGlyID0gLi4qL2Fic19zcmNkaXIgPSBcLlwuLycgXAorICAgICAgICAgICAgLWUgJ3MvXnRvcF9zcmNkaXIgPSAuLiovdG9wX3NyY2RpciA9IFwuXC4vJyBcCisgICAgICAgICAgICAtZSAncy9eR1JFUCA9IC4uKi9HUkVQID0gZ3JlcC8nICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIC1lICdzL15BV0sgPSAuLiovQVdLID0gYXdrLycgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgLWUgJ3MvXnNyY2RpciA9IC4uKi9zcmNkaXIgPSBcLi8nICAgICAgICAgICBcCisgICAgICAgICAgICAtZSAncy9eTWFrZWZpbGU6IC4uKi9NYWtlZmlsZTogLycgICAgICAgICAgIFwKKyAgICAgICAgICAgIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnICAgXAorICAgICAgICAgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorICAgICAgICAgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKyAgICAgICAgICAgICR7Qn0vdGVzdHMvTWFrZWZpbGUgPiAke0R9JHtQVEVTVF9QQVRIfS9zcmMvdGVzdHMvTWFrZWZpbGUKK30KKworU1JDX1VSSVttZDVzdW1dID0gIjkyOWQ2YTZiODMyZjc1YjI4ZTNlZWVhZmIzMGMxZDliIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVkMmQzYTM0MzJlZjMyZjI0Y2RiMDYwZDI3ODgzNDUwN2I0ODFhNzVhZGVjYTE4ODUwYzczNTkyZjc3OGY2YWQiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaGRwYXJtL2hkcGFybS93aXBlci5zaC1maXgtc3RhdC1wYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtL3dpcGVyLnNoLWZpeC1zdGF0LXBhdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFmMWI2MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaGRwYXJtL2hkcGFybS93aXBlci5zaC1maXgtc3RhdC1wYXRoLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gZTIzMzAwNmVlMjEyMTA5ZDJhMTQwMWRhYzM3YTlhODUxY2M0OTNkOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTQgRGVjIDIwMTcgMTU6MjM6NDcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gd2lwZXIuc2g6IGZpeCBzdGF0IHBhdGgKKworRml4IHRoZSBzdGF0IHBhdGggZm9yIE9FLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyB3aXBlci93aXBlci5zaCB8IDMgKy0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvd2lwZXIvd2lwZXIuc2ggYi93aXBlci93aXBlci5zaAoraW5kZXggNzllZGRjOC4uOWVmMjg0MCAxMDA3NTUKKy0tLSBhL3dpcGVyL3dpcGVyLnNoCisrKysgYi93aXBlci93aXBlci5zaAorQEAgLTk3LDcgKzk3LDYgQEAgZnVuY3Rpb24gZmluZF9wcm9nKCl7CisgaGFzaCAtciAgIyMgUmVmcmVzaCBiYXNoJ3MgY2FjaGVkIFBBVEggZW50cmllcworIEhEUEFSTT1gZmluZF9wcm9nIC9zYmluL2hkcGFybWAJfHwgZXhpdCAxCisgRklORD1gZmluZF9wcm9nIC91c3IvYmluL2ZpbmRgCXx8IGV4aXQgMQorLVNUQVQ9YGZpbmRfcHJvZyAvdXNyL2Jpbi9zdGF0YAl8fCBleGl0IDEKKyBHQVdLPWBmaW5kX3Byb2cgL3Vzci9iaW4vZ2F3a2AJfHwgZXhpdCAxCisgQkxLSUQ9YGZpbmRfcHJvZyAvc2Jpbi9ibGtpZGAJfHwgZXhpdCAxCisgR1JFUD1gZmluZF9wcm9nIC9iaW4vZ3JlcGAJfHwgZXhpdCAxCitAQCAtMTA1LDcgKzEwNCw3IEBAIElEPWBmaW5kX3Byb2cgL3Vzci9iaW4vaWRgCXx8IGV4aXQgMQorIExTPWBmaW5kX3Byb2cgL2Jpbi9sc2AJCXx8IGV4aXQgMQorIERGPWBmaW5kX3Byb2cgL2Jpbi9kZmAJCXx8IGV4aXQgMQorIFJNPWBmaW5kX3Byb2cgL2Jpbi9ybWAJCXx8IGV4aXQgMQorLVNUQVQ9YGZpbmRfcHJvZyAvdXNyL2Jpbi9zdGF0YAl8fCBleGl0IDEKKytTVEFUPWBmaW5kX3Byb2cgL2Jpbi9zdGF0YAl8fCBleGl0IDEKKyAKKyBbICR2ZXJib3NlIC1ndCAxIF0gJiYgSERQQVJNPSIkSERQQVJNIC0tdmVyYm9zZSIKKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtXzkuNTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS41Mi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDlmZGM5NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS41Mi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLVNVTU1BUlkgPSAiVXRpbGl0eSBmb3Igdmlld2luZy9tYW5pcHVsYXRpbmcgSURFIGRpc2sgZHJpdmUvZHJpdmVyIHBhcmFtZXRlcnMiCi1IT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2hkcGFybS8iCi1ERVNDUklQVElPTiA9ICJoZHBhcm0gaXMgYSBMaW51eCBzaGVsbCB1dGlsaXR5IGZvciB2aWV3aW5nIFwKLWFuZCBtYW5pcHVsYXRpbmcgdmFyaW91cyBJREUgZHJpdmUgYW5kIGRyaXZlciBwYXJhbWV0ZXJzLiIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotTElDRU5TRSA9ICJCU0QgJiBHUEx2MiIKLUxJQ0VOU0VfJHtQTn0gPSAiQlNEIgotTElDRU5TRV8ke1BOfS1kYmcgPSAiQlNEIgotTElDRU5TRV93aXBlciA9ICJHUEx2MiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5UWFQ7bWQ1PTQ5NWQwM2U1MGRjNmM4OWQ2YTMwMTA3YWIwZGY1YjAzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWE4MmQ3YmEzYWRlOWU4ZWM5MDI3NDlkYjk4YzU5MmYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3dpcGVyL0dQTHYyLnR4dDttZDU9ZmNiMDJkYzU1MmEwNDFkZWUyN2U0Yjg1YzczOTYwNjcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vd2lwZXIvd2lwZXIuc2g7YmVnaW5saW5lPTc7ZW5kbGluZT0zMTttZDU9YjdiYzY0MmFkZGMxNTJlYTMwNzUwNWJmMWEyOTZmMDkiCi0KLQotUEFDS0FHRVMgPSsgIndpcGVyIgotCi1GSUxFU193aXBlciA9ICIke2JpbmRpcn0vd2lwZXIuc2giCi0KLVJERVBFTkRTX3dpcGVyID0gImJhc2ggZ2F3ayBzdGF0IgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9oZHBhcm0vJHtCUH0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDEwNTM5ZDBiZjNjYzI0NzE4MTU5NDU4MWVkYmZiNTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzM0MjljZDQyM2UyNzFmYTU2NWJmNTg0NTk4ZmQ3NTFkZDJlNzczYmI3MTk5YTU5MmIwNmI1YTYxY2VjNGZiNiIKLQotRVhUUkFfT0VNQUtFID0gJ1NUUklQPSJlY2hvIiBMREZMQUdTPSIke0xERkxBR1N9IicKLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImhkcGFybSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtoZHBhcm1dID0gIiR7YmFzZV9zYmluZGlyfS9oZHBhcm0iCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0gJHtEfS8ke21hbmRpcn0vbWFuOCAke0R9LyR7YmluZGlyfQotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgJ3NiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9JyBpbnN0YWxsCi0JY3AgJHtTfS93aXBlci93aXBlci5zaCAke0R9LyR7YmluZGlyfQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtXzkuNTMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS41My5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzNlYzVjNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaGRwYXJtL2hkcGFybV85LjUzLmJiCkBAIC0wLDAgKzEsNDMgQEAKK1NVTU1BUlkgPSAiVXRpbGl0eSBmb3Igdmlld2luZy9tYW5pcHVsYXRpbmcgSURFIGRpc2sgZHJpdmUvZHJpdmVyIHBhcmFtZXRlcnMiCitIT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2hkcGFybS8iCitERVNDUklQVElPTiA9ICJoZHBhcm0gaXMgYSBMaW51eCBzaGVsbCB1dGlsaXR5IGZvciB2aWV3aW5nIFwKK2FuZCBtYW5pcHVsYXRpbmcgdmFyaW91cyBJREUgZHJpdmUgYW5kIGRyaXZlciBwYXJhbWV0ZXJzLiIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworTElDRU5TRSA9ICJCU0QgJiBHUEx2MiIKK0xJQ0VOU0VfJHtQTn0gPSAiQlNEIgorTElDRU5TRV8ke1BOfS1kYmcgPSAiQlNEIgorTElDRU5TRV93aXBlciA9ICJHUEx2MiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5UWFQ7bWQ1PTQ5NWQwM2U1MGRjNmM4OWQ2YTMwMTA3YWIwZGY1YjAzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWE4MmQ3YmEzYWRlOWU4ZWM5MDI3NDlkYjk4YzU5MmYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3dpcGVyL0dQTHYyLnR4dDttZDU9ZmNiMDJkYzU1MmEwNDFkZWUyN2U0Yjg1YzczOTYwNjcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vd2lwZXIvd2lwZXIuc2g7YmVnaW5saW5lPTc7ZW5kbGluZT0zMTttZDU9YjdiYzY0MmFkZGMxNTJlYTMwNzUwNWJmMWEyOTZmMDkiCisKKworUEFDS0FHRVMgPSsgIndpcGVyIgorCitGSUxFU193aXBlciA9ICIke2JpbmRpcn0vd2lwZXIuc2giCisKK1JERVBFTkRTX3dpcGVyID0gImJhc2ggZ2F3ayBjb3JldXRpbHMiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2hkcGFybS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vd2lwZXIuc2gtZml4LXN0YXQtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMWU1NGI1MmUwYzhjYjc5Mzg5ZDRkNDdlYWNiYTQxMWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjY3M2Y1OTFkZjY5MTZjNmExZmFlYzA3MDY5YTdlYjFjYjhlZTMwNzYxNWE2MTVkODA4MTkyZmIwYzAyNjVlNSIKKworRVhUUkFfT0VNQUtFID0gJ1NUUklQPSJlY2hvIiBMREZMQUdTPSIke0xERkxBR1N9IicKKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImhkcGFybSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtoZHBhcm1dID0gIiR7YmFzZV9zYmluZGlyfS9oZHBhcm0iCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLWQgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0gJHtEfS8ke21hbmRpcn0vbWFuOCAke0R9LyR7YmluZGlyfQorCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgJ3NiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9JyBpbnN0YWxsCisJY3AgJHtTfS93aXBlci93aXBlci5zaCAke0R9LyR7YmluZGlyfQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlcy8wMDAxLWZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzLzAwMDEtZml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjFmODVhNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzLzAwMDEtZml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLVtQQVRDSF0gZml4IGJ1aWxkIHdpdGggbXVzbAotCi1EZWZpbmUgYWRkaXRpb25hbCBUQ09QVFMgaWYgbm90IHRoZXJlCi11X2luaXRYIHR5cGVzIGFyZSBpbiBzeXMvdHlwZXMuaCBiZSBleHBsaWNpdCBhYm91dCBpdAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgotLS0tCi1kaWZmIC1OYXVyIGlwdGFibGVzLTEuNi4wLW9yaWdpbi9leHRlbnNpb25zL2xpYnh0X1RDUE9QVFNUUklQLmMgaXB0YWJsZXMtMS42LjAvZXh0ZW5zaW9ucy9saWJ4dF9UQ1BPUFRTVFJJUC5jCi0tLS0gaXB0YWJsZXMtMS42LjAtb3JpZ2luL2V4dGVuc2lvbnMvbGlieHRfVENQT1BUU1RSSVAuYwkyMDE1LTEyLTA5IDE0OjU1OjA2LjAwMDAwMDAwMCArMDIwMAotKysrIGlwdGFibGVzLTEuNi4wL2V4dGVuc2lvbnMvbGlieHRfVENQT1BUU1RSSVAuYwkyMDE1LTEyLTI5IDE0OjQ0OjMyLjU4NTMyNzA3NyArMDIwMAotQEAgLTEyLDYgKzEyLDIxIEBACi0gI2lmbmRlZiBUQ1BPUFRfTUQ1U0lHCi0gIwlkZWZpbmUgVENQT1BUX01ENVNJRyAxOQotICNlbmRpZgotKyNpZm5kZWYgVENQT1BUX01BWFNFRwotKyNkZWZpbmUgVENQT1BUX01BWFNFRyAyCi0rI2VuZGlmCi0rI2lmbmRlZiBUQ1BPUFRfV0lORE9XCi0rI2RlZmluZSBUQ1BPUFRfV0lORE9XIDMKLSsjZW5kaWYKLSsjaWZuZGVmIFRDUE9QVF9TQUNLX1BFUk1JVFRFRAotKyNkZWZpbmUgVENQT1BUX1NBQ0tfUEVSTUlUVEVEIDQKLSsjZW5kaWYKLSsjaWZuZGVmIFRDUE9QVF9TQUNLCi0rI2RlZmluZSBUQ1BPUFRfU0FDSyA1Ci0rI2VuZGlmCi0rI2lmbmRlZiBUQ1BPUFRfVElNRVNUQU1QCi0rI2RlZmluZSBUQ1BPUFRfVElNRVNUQU1QIDgKLSsjZW5kaWYKLSAKLSBlbnVtIHsKLSAJT19TVFJJUF9PUFRJT04gPSAwLAotZGlmZiAtTmF1ciBpcHRhYmxlcy0xLjYuMC1vcmlnaW4vaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2NC9pcF90YWJsZXMuaCBpcHRhYmxlcy0xLjYuMC9pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY0L2lwX3RhYmxlcy5oCi0tLS0gaXB0YWJsZXMtMS42LjAtb3JpZ2luL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjQvaXBfdGFibGVzLmgJMjAxNS0xMi0wOSAxNDo1NTowNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBpcHRhYmxlcy0xLjYuMC9pbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9pcHY0L2lwX3RhYmxlcy5oCTIwMTUtMTItMjkgMTQ6NDA6MjEuMjUwNDY5MTk1ICswMjAwCi1AQCAtMTUsNiArMTUsNyBAQAotICNpZm5kZWYgX0lQVEFCTEVTX0gKLSAjZGVmaW5lIF9JUFRBQkxFU19ICi0gCi0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotIAotICNpbmNsdWRlIDxsaW51eC9uZXRmaWx0ZXJfaXB2NC5oPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlcy90eXBlcy5oLWFkZC1kZWZpbmVzLXRoYXQtYXJlLXJlcXVpcmVkLWZvci1pZl9wYWNrZXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzL3R5cGVzLmgtYWRkLWRlZmluZXMtdGhhdC1hcmUtcmVxdWlyZWQtZm9yLWlmX3BhY2tldC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjRlZTI5ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzL3R5cGVzLmgtYWRkLWRlZmluZXMtdGhhdC1hcmUtcmVxdWlyZWQtZm9yLWlmX3BhY2tldC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZyb20gMTk1OTM0OTFmNDNiNzBjMWE3MWMzYjliOGY0ZmY0ZmQxNDUwMDAxNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAyMyBNYXIgMjAxMiAxNDoyNzoyMCAtMDQwMAotU3ViamVjdDogW1BBVENIXSB0eXBlcy5oOiBhZGQgZGVmaW5lcyB0aGF0IGFyZSByZXF1aXJlZCBmb3IgaWZfcGFja2V0LmgKLQotVGhlIGlwdGFibGVzIGxvY2FsIGxpbnV4L3R5cGVzLmggb3ZlcnJpZGVzIHRoZSBrZXJuZWwvc3lzcm9vdAotdHlwZXMuaC4gQXMgc3VjaCwgd2UgbmVlZCB0byBwcm92aWRlIHNvbWUgZGVmaW5lcyB0aGF0IGFyZSByZXF1aXJlZAotdG8gYnVpbGQgYWdhaW5zdCAzLjIrIGtlcm5lbCBoZWFkZXJzLgotCi1pZm5kZWYgcHJvdGVjdGlvbiBpcyBwcm92aWRlZCBmb3IgdGhlIGRlZmluZXMgdG8gZW5zdXJlIHRoYXQKLWNvbmZpZ3VyYXRpb24gdGhhdCBhbHJlYWR5IGhhdmUgdGhlc2UgZGVmaW5lcyBhcmUgc3RpbGwgYnVpbGRhYmxlLgotCi1UaGlzIGNvbW1pdCBpcyB0ZW1wb3JhcnkgdW50aWwgYSBuZXcgdmVyc2lvbiBvZiBpcHRhYmxlcyBjYW4gYmUKLXVzZWQgdGhhdCBjb250YWlucyB0aGUgZGVmaW5lcy4KLQotVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBjb21taXQgaW4gdGhlIGlwdGFibGVzIGdpdCByZXBvc2l0b3J5OgotCi0gIGh0dHBzOi8vZ2l0Lm5ldGZpbHRlci5vcmcvY2dpLWJpbi9naXR3ZWIuY2dpP3A9aXB0YWJsZXMuZ2l0O2E9Y29tbWl0O2g9ZGJlNzdjYzk3NGNlZTY1NmVhZTM3ZTc1MDM5ZGQxYTQxMGE0NTM1YgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IEJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPgotLS0tCi0gaW5jbHVkZS9saW51eC90eXBlcy5oIHwgICAxMCArKysrKysrKysrCi0gMSBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC90eXBlcy5oIGIvaW5jbHVkZS9saW51eC90eXBlcy5oCi1pbmRleCA4YjQ4M2M4Li5lYmY2NDMyIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9saW51eC90eXBlcy5oCi0rKysgYi9pbmNsdWRlL2xpbnV4L3R5cGVzLmgKLUBAIC0zNCw1ICszNCwxNSBAQCB0eXBlZGVmIF9fdTY0IF9fYml0d2lzZSBfX2JlNjQ7Ci0gdHlwZWRlZiBfX3UxNiBfX2JpdHdpc2UgX19zdW0xNjsKLSB0eXBlZGVmIF9fdTMyIF9fYml0d2lzZSBfX3dzdW07Ci0gCi0rI2lmbmRlZiBfX2FsaWduZWRfdTY0Ci0rI2RlZmluZSBfX2FsaWduZWRfdTY0IF9fdTY0IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKQotKyNlbmRpZgotKyNpZm5kZWYgX19hbGlnbmVkX2JlNjQKLSsjZGVmaW5lIF9fYWxpZ25lZF9iZTY0IF9fYmU2NCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSkKLSsjZW5kaWYKLSsjaWZuZGVmIF9fYWxpZ25lZF9sZTY0Ci0rI2RlZmluZSBfX2FsaWduZWRfbGU2NCBfX2xlNjQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpCi0rI2VuZGlmCi0rCi0gI2VuZGlmIC8qICBfX0FTU0VNQkxZX18gKi8KLSAjZW5kaWYgLyogX0xJTlVYX1RZUEVTX0ggKi8KLS0tIAotMS43LjAuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzXzEuNi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM3YzU1YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzXzEuNi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotU1VNTUFSWSA9ICJUb29scyBmb3IgbWFuYWdpbmcga2VybmVsIHBhY2tldCBmaWx0ZXJpbmcgY2FwYWJpbGl0aWVzIgotREVTQ1JJUFRJT04gPSAiaXB0YWJsZXMgaXMgdGhlIHVzZXJzcGFjZSBjb21tYW5kIGxpbmUgcHJvZ3JhbSB1c2VkIHRvIGNvbmZpZ3VyZSBhbmQgY29udHJvbCBuZXR3b3JrIHBhY2tldCBcCi1maWx0ZXJpbmcgY29kZSBpbiBMaW51eC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5ldGZpbHRlci5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEubmV0ZmlsdGVyLm9yZy8iCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaXB0YWJsZXMvaXB0YWJsZXMuYztiZWdpbmxpbmU9MTM7ZW5kbGluZT0yNTttZDU9YzVjZmZkMDk5NzQ1NThjZjI3ZDBmNzYzZGYyYTEyZGMiCi0KLVJSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUteC10YWJsZXMgXAotICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1pcC10YWJsZXMgXAotICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1pcHRhYmxlLWZpbHRlciBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWlwdGFibGUtbmF0IFwKLSAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtbmYtZGVmcmFnLWlwdjQgXAotICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1uZi1jb25udHJhY2sgXAotICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1uZi1jb25udHJhY2staXB2NCBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLW5mLW5hdCBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWlwdC1tYXNxdWVyYWRlIgotRklMRVNfJHtQTn0gPSsgIiR7bGliZGlyfS94dGFibGVzLyAke2RhdGFkaXJ9L3h0YWJsZXMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL25ldGZpbHRlci5vcmcvcHJvamVjdHMvaXB0YWJsZXMvZmlsZXMvaXB0YWJsZXMtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly90eXBlcy5oLWFkZC1kZWZpbmVzLXRoYXQtYXJlLXJlcXVpcmVkLWZvci1pZl9wYWNrZXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQWRkLW9wdGlvbi10by1lbmFibGUtZGlzYWJsZS1saWJuZm5ldGxpbmsucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUuYWMtb25seS1jaGVjay1jb25udHJhY2std2hlbi1saWJuZm5ldGxpbmstZW5hYmxlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYWIzOGEzMzgwNmI2MTgyYzZmNTNkNmFmYjQ2MTlhZGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGZjMmQ3YmQ1ZDdiZTExMzExNzI2NDY2Nzg5ZDRjNjVmYjRjOGUwOTZjOTE4MmI1NmNlOTc0NDA4NjRmMGNmNSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgta2VybmVsPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgICAgICAgICIKLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0KLSMgbGlibmZuZXRsaW5rIHJlY2lwZSBpcyBpbiBtZXRhLW5ldHdvcmtpbmcgbGF5ZXIKLVBBQ0tBR0VDT05GSUdbbGlibmZuZXRsaW5rXSA9ICItLWVuYWJsZS1saWJuZm5ldGxpbmssLS1kaXNhYmxlLWxpYm5mbmV0bGluayxsaWJuZm5ldGxpbmsgbGlibmV0ZmlsdGVyLWNvbm50cmFjayIKLQotIyBsaWJuZnRubCByZWNpcGUgaXMgaW4gbWV0YS1uZXR3b3JraW5nIGxheWVyKHByZXZpb3VzbHkga25vd24gYXMgbGlibmZ0YWJsZXMpCi1QQUNLQUdFQ09ORklHW2xpYm5mdG5sXSA9ICItLWVuYWJsZS1uZnRhYmxlcywtLWRpc2FibGUtbmZ0YWJsZXMsbGlibmZ0bmwiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCSMgUmVtb3ZlIHNvbWUgbGlidG9vbCBtNCBmaWxlcwotCSMgS2VlcCBheF9jaGVja19saW5rZXJfZmxhZ3MubTQgd2hpY2ggYmVsb25ncyB0byBhdXRvY29uZi1hcmNoaXZlLgotCXJtIC1mIGxpYnRvb2wubTQgbHR+b2Jzb2xldGUubTQgbHRvcHRpb25zLm00IGx0c3VnYXIubTQgbHR2ZXJzaW9uLm00Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzXzEuNi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGE4M2QyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjYuMi5iYgpAQCAtMCwwICsxLDQ3IEBACitTVU1NQVJZID0gIlRvb2xzIGZvciBtYW5hZ2luZyBrZXJuZWwgcGFja2V0IGZpbHRlcmluZyBjYXBhYmlsaXRpZXMiCitERVNDUklQVElPTiA9ICJpcHRhYmxlcyBpcyB0aGUgdXNlcnNwYWNlIGNvbW1hbmQgbGluZSBwcm9ncmFtIHVzZWQgdG8gY29uZmlndXJlIGFuZCBjb250cm9sIG5ldHdvcmsgcGFja2V0IFwKK2ZpbHRlcmluZyBjb2RlIGluIExpbnV4LiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubmV0ZmlsdGVyLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5uZXRmaWx0ZXIub3JnLyIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjNcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pcHRhYmxlcy9pcHRhYmxlcy5jO2JlZ2lubGluZT0xMztlbmRsaW5lPTI1O21kNT1jNWNmZmQwOTk3NDU1OGNmMjdkMGY3NjNkZjJhMTJkYyIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS14LXRhYmxlcyBcCisgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWlwLXRhYmxlcyBcCisgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWlwdGFibGUtZmlsdGVyIFwKKyAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtaXB0YWJsZS1uYXQgXAorICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1uZi1kZWZyYWctaXB2NCBcCisgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLW5mLWNvbm50cmFjayBcCisgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLW5mLWNvbm50cmFjay1pcHY0IFwKKyAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtbmYtbmF0IFwKKyAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtaXB0LW1hc3F1ZXJhZGUiCitGSUxFU18ke1BOfSA9KyAiJHtsaWJkaXJ9L3h0YWJsZXMvICR7ZGF0YWRpcn0veHRhYmxlcyIKKworU1JDX1VSSSA9ICJodHRwOi8vbmV0ZmlsdGVyLm9yZy9wcm9qZWN0cy9pcHRhYmxlcy9maWxlcy9pcHRhYmxlcy0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLUFkZC1vcHRpb24tdG8tZW5hYmxlLWRpc2FibGUtbGlibmZuZXRsaW5rLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLmFjLW9ubHktY2hlY2stY29ubnRyYWNrLXdoZW4tbGlibmZuZXRsaW5rLWVuYWJsZWQucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiN2QyYjc4NDdlNGFhODgzMmExODQzN2I4YTRjMTg3M2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTVkMDJkZmE0NjI2MzM0M2E0MDFmMjk3ZDQ0MTkwZjJhM2U1MTEzYzg5MzM5NDZmMDk0ZWQ0MDIzNzA1MzczMyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgta2VybmVsPSR7U1RBR0lOR19JTkNESVJ9IFwKKyAgICAgICAgICAgICAgICIKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCisKKyMgbGlibmZuZXRsaW5rIHJlY2lwZSBpcyBpbiBtZXRhLW5ldHdvcmtpbmcgbGF5ZXIKK1BBQ0tBR0VDT05GSUdbbGlibmZuZXRsaW5rXSA9ICItLWVuYWJsZS1saWJuZm5ldGxpbmssLS1kaXNhYmxlLWxpYm5mbmV0bGluayxsaWJuZm5ldGxpbmsgbGlibmV0ZmlsdGVyLWNvbm50cmFjayIKKworIyBsaWJuZnRubCByZWNpcGUgaXMgaW4gbWV0YS1uZXR3b3JraW5nIGxheWVyKHByZXZpb3VzbHkga25vd24gYXMgbGlibmZ0YWJsZXMpCitQQUNLQUdFQ09ORklHW2xpYm5mdG5sXSA9ICItLWVuYWJsZS1uZnRhYmxlcywtLWRpc2FibGUtbmZ0YWJsZXMsbGlibmZ0bmwiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCSMgUmVtb3ZlIHNvbWUgbGlidG9vbCBtNCBmaWxlcworCSMgS2VlcCBheF9jaGVja19saW5rZXJfZmxhZ3MubTQgd2hpY2ggYmVsb25ncyB0byBhdXRvY29uZi1hcmNoaXZlLgorCXJtIC1mIGxpYnRvb2wubTQgbHR+b2Jzb2xldGUubTQgbHRvcHRpb25zLm00IGx0c3VnYXIubTQgbHR2ZXJzaW9uLm00Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvMDAwMS1GaXgtYnVpbGQtb24tTVVTTC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy8wMDAxLUZpeC1idWlsZC1vbi1NVVNMLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlOGNmZWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvMDAwMS1GaXgtYnVpbGQtb24tTVVTTC5wYXRjaApAQCAtMCwwICsxLDk1IEBACitGcm9tIGM2YzU5NjZkOWZhZTI3YmMyZjBhMzRhYjU5Yjk5OTU1NTExMWJkMmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBcmljIEJlbHNpdG8gPGxsdWl4aGlAZ21haWwuY29tPgorRGF0ZTogU3VuLCAyOSBPY3QgMjAxNyAyMzoxNzowMyArMDEwMAorU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgb24gTVVTTAorCitBZGQgbWlzc2luZyBBSV9JRE4gYW5kIE5JX0lETiBkZWNsYXJhdGlvbnMuCisKK0J1ZzogaHR0cHM6Ly9idWdzLmdlbnRvby5vcmcvNTAzOTE0CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBhcnBpbmcuYyAgICAgIHwgIDcgKysrKysrKworIHBpbmcuaCAgICAgICAgfCAxMSArKysrKysrKysrKworIHRyYWNlcGF0aC5jICAgfCAgOCArKysrKysrKworIHRyYWNlcm91dGU2LmMgfCAgNCArKysrCisgNCBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9hcnBpbmcuYyBiL2FycGluZy5jCitpbmRleCAxYTNmNDBiLi41MzFkMjlkIDEwMDY0NAorLS0tIGEvYXJwaW5nLmMKKysrKyBiL2FycGluZy5jCitAQCAtNDUsNiArNDUsMTMgQEAgc3RydWN0IHN5c2ZzX2RldmF0dHJfdmFsdWVzOworICNpZmRlZiBVU0VfSUROCisgI2luY2x1ZGUgPGlkbmEuaD4KKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisrCisrI2lmbmRlZiBBSV9JRE4KKysjZGVmaW5lIEFJX0lETiAweDAwNDAKKysjZW5kaWYKKysjaWZuZGVmIEFJX0NBTk9OSUROCisrI2RlZmluZSBBSV9DQU5PTklETiAweDAwODAKKysjZW5kaWYKKyAjZW5kaWYKKyAKKyAjaW5jbHVkZSAiU05BUFNIT1QuaCIKK2RpZmYgLS1naXQgYS9waW5nLmggYi9waW5nLmgKK2luZGV4IDc0OWYzZmYuLjIyNzMxNWYgMTAwNjQ0CistLS0gYS9waW5nLmgKKysrKyBiL3BpbmcuaAorQEAgLTM4LDYgKzM4LDE3IEBACisgI2luY2x1ZGUgPGxvY2FsZS5oPgorICNpbmNsdWRlIDxpZG5hLmg+CisgI2luY2x1ZGUgPHN0cmluZ3ByZXAuaD4KKysKKysjaWZuZGVmIEFJX0lETgorKyNkZWZpbmUgQUlfSUROIDB4MDA0MAorKyNlbmRpZgorKyNpZm5kZWYgQUlfQ0FOT05JRE4KKysjZGVmaW5lIEFJX0NBTk9OSUROIDB4MDA4MAorKyNlbmRpZgorKyNpZm5kZWYgTklfSUROCisrI2RlZmluZSBOSV9JRE4gMzIKKysjZW5kaWYKKysKKyAjZGVmaW5lIGdldGFkZHJpbmZvX2ZsYWdzIChBSV9DQU5PTk5BTUUgfCBBSV9JRE4gfCBBSV9DQU5PTklETikKKyAjZGVmaW5lIGdldG5hbWVpbmZvX2ZsYWdzIE5JX0lETgorICNlbHNlCitkaWZmIC0tZ2l0IGEvdHJhY2VwYXRoLmMgYi90cmFjZXBhdGguYworaW5kZXggNzRhODI5ZC4uZGNlYzViOSAxMDA2NDQKKy0tLSBhL3RyYWNlcGF0aC5jCisrKysgYi90cmFjZXBhdGguYworQEAgLTMwLDYgKzMwLDE0IEBACisgI2lmZGVmIFVTRV9JRE4KKyAjaW5jbHVkZSA8aWRuYS5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKysKKysjaWZuZGVmIEFJX0lETgorKyNkZWZpbmUgQUlfSUROIDB4MDA0MAorKyNlbmRpZgorKyNpZm5kZWYgTklfSUROCisrI2RlZmluZSBOSV9JRE4gMzIKKysjZW5kaWYKKysKKyAjZGVmaW5lIGdldG5hbWVpbmZvX2ZsYWdzCU5JX0lETgorICNlbHNlCisgI2RlZmluZSBnZXRuYW1laW5mb19mbGFncwkwCitkaWZmIC0tZ2l0IGEvdHJhY2Vyb3V0ZTYuYyBiL3RyYWNlcm91dGU2LmMKK2luZGV4IDQ4ZmM1YzUuLjhkMWVlYmYgMTAwNjQ0CistLS0gYS90cmFjZXJvdXRlNi5jCisrKysgYi90cmFjZXJvdXRlNi5jCitAQCAtMjUxLDYgKzI1MSwxMCBAQAorICNpbmNsdWRlIDxpZG5hLmg+CisgI2luY2x1ZGUgPGxvY2FsZS5oPgorIAorKyNpZm5kZWYgTklfSUROCisrI2RlZmluZSBOSV9JRE4gMzIKKysjZW5kaWYKKysKKyAjZGVmaW5lIGdldG5hbWVpbmZvX2ZsYWdzCU5JX0lETgorICNlbHNlCisgI2RlZmluZSBnZXRuYW1laW5mb19mbGFncwkwCistLSAKKzIuMTUuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvMDAwMS1GaXgtaGVhZGVyLWluY2x1c2lvbi1mb3ItbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy8wMDAxLUZpeC1oZWFkZXItaW5jbHVzaW9uLWZvci1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGVmMDdlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy8wMDAxLUZpeC1oZWFkZXItaW5jbHVzaW9uLWZvci1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotRnJvbSBiZTBiYjgxZDcyZmVhNGQyMGRhNzRmNGYyMjM2YWExNDU2ODRmMzMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgNiBKYW4gMjAxNiAxNDoxNDoyMiAtMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXggaGVhZGVyIGluY2x1c2lvbiBmb3IgbXVzbAotCi1GaXggZXJyb3JzIGUuZy4KLQotSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHRyYWNlcGF0aC5jOjE3OjA6Ci0vdXNyL2luY2x1ZGUvbGludXgvZXJycXVldWUuaDozMzoxODoKLWVycm9yOiBhcnJheSB0eXBlIGhhcyBpbmNvbXBsZXRlIGVsZW1lbnQgdHlwZSAnc3RydWN0IHRpbWVzcGVjJwotICBzdHJ1Y3QgdGltZXNwZWMgdHNbM107Ci0gICAgICAgICAgICAgICAgICBeCi10cmFjZXBhdGguYzogSW4gZnVuY3Rpb24gJ21haW4nOgotdHJhY2VwYXRoLmM6MzI5OjE2OiBlcnJvcjogJ0lOVF9NQVgnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzCi1mdW5jdGlvbikKLSAgICAgIG92ZXJoZWFkLCBJTlRfTUFYKTsKLSAgICAgICAgICAgICAgICBeCi10cmFjZXBhdGguYzozMjk6MTY6IG5vdGU6IGVhY2ggdW5kZWNsYXJlZCBpZGVudGlmaWVyIGlzIHJlcG9ydGVkIG9ubHkKLW9uY2UgZm9yIGVhY2ggZnVuY3Rpb24gaXQgYXBwZWFycyBpbgotTWFrZWZpbGU6MTMxOiByZWNpcGUgZm9yIHRhcmdldCAndHJhY2VwYXRoLm8nIGZhaWxlZAotbWFrZTogKioqIFt0cmFjZXBhdGgub10gRXJyb3IgMQotCi1waW5nX2NvbW1vbi5jOiBJbiBmdW5jdGlvbiAnbWFpbl9sb29wJzoKLXBpbmdfY29tbW9uLmM6NzU2OjE1OiBlcnJvcjogJ0haJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcwotZnVuY3Rpb24pCi0gICAgaWYgKDEwMDAgJSBIWiA9PSAwID8gbmV4dCA8PSAxMDAwIC8gSFogOiAobmV4dCA8IElOVF9NQVggLyBIWiAmJgotbmV4dCAqIEhaIDw9IDEwMDApKSB7Ci0KLXByb3RvY29scy90aW1lZC5oIGlzIG5vdCBuZWVkZWQgYW5kIGlzIGFic2VudCBpbiBtdXNsCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gY2xvY2tkaWZmLmMgICB8IDEgLQotIHBpbmdfY29tbW9uLmMgfCAxICsKLSB0cmFjZXBhdGguYyAgIHwgMiArKwotIHRyYWNlcGF0aDYuYyAgfCAxICsKLSA0IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY2xvY2tkaWZmLmMgYi9jbG9ja2RpZmYuYwotaW5kZXggN2MxZWExYi4uMWQ2MzQxZSAxMDA2NDQKLS0tLSBhL2Nsb2NrZGlmZi5jCi0rKysgYi9jbG9ja2RpZmYuYwotQEAgLTE0LDcgKzE0LDYgQEAKLSAjaW5jbHVkZSA8bmV0aW5ldC9pcC5oPgotICNpbmNsdWRlIDxuZXRpbmV0L2lwX2ljbXAuaD4KLSAjZGVmaW5lIFRTUFRZUEVTCi0tI2luY2x1ZGUgPHByb3RvY29scy90aW1lZC5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxuZXRkYi5oPgotICNpbmNsdWRlIDxhcnBhL2luZXQuaD4KLWRpZmYgLS1naXQgYS9waW5nX2NvbW1vbi5jIGIvcGluZ19jb21tb24uYwotaW5kZXggN2Y4Mjg1MS4uM2NlNjk5ZCAxMDA2NDQKLS0tLSBhL3BpbmdfY29tbW9uLmMKLSsrKyBiL3BpbmdfY29tbW9uLmMKLUBAIC0yLDYgKzIsNyBAQAotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDxzY2hlZC5oPgotICNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPGFzbS1nZW5lcmljL3BhcmFtLmg+Ci0gCi0gaW50IG9wdGlvbnM7Ci0gCi1kaWZmIC0tZ2l0IGEvdHJhY2VwYXRoLmMgYi90cmFjZXBhdGguYwotaW5kZXggODllNmQxNi4uYzlkNmRkZCAxMDA2NDQKLS0tLSBhL3RyYWNlcGF0aC5jCi0rKysgYi90cmFjZXBhdGguYwotQEAgLTEyLDYgKzEyLDggQEAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSsjaW5jbHVkZSA8dGltZS5oPgotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0gI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2VycnF1ZXVlLmg+Ci1kaWZmIC0tZ2l0IGEvdHJhY2VwYXRoNi5jIGIvdHJhY2VwYXRoNi5jCi1pbmRleCAxMjZmYWRmLi45ZDU3NDVjIDEwMDY0NAotLS0tIGEvdHJhY2VwYXRoNi5jCi0rKysgYi90cmFjZXBhdGg2LmMKLUBAIC0xMiw2ICsxMiw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotICNpbmNsdWRlIDxuZXRpbmV0L2ljbXA2Lmg+Ci0tLSAKLTIuNi40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy8wMDAxLUludGlhbGl6ZS1zdHJ1Y3QtZWxlbWVudHMtYnktbmFtZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy8wMDAxLUludGlhbGl6ZS1zdHJ1Y3QtZWxlbWVudHMtYnktbmFtZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRhMDFkYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvMDAwMS1JbnRpYWxpemUtc3RydWN0LWVsZW1lbnRzLWJ5LW5hbWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1Gcm9tIDAwMDYyOWY3NDkwOGEyYTk1ZjYxMDQ0NDRjNzdhZDkzY2Y0MGQ2MmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxMyBKYW4gMjAxNiAwODo1MDo1MCArMDAwMAotU3ViamVjdDogW1BBVENIXSBJbnRpYWxpemUgc3RydWN0IGVsZW1lbnRzIGJ5IG5hbWUKLQotbWFrZXMgaXQgcG9ydGFibGUgYWNyb3NzIGdsaWJjIGFuZCBtdXNsCi0KLUZpeGVzIGVycm9ycwotCi18IHBpbmcuYzogSW4gZnVuY3Rpb24gJ3NlbmRfcHJvYmUnOgotfCBwaW5nLmM6NzM1OjE5OiB3YXJuaW5nOiBpbml0aWFsaXphdGlvbiBtYWtlcyBpbnRlZ2VyIGZyb20gcG9pbnRlcgotd2l0aG91dCBhIGNhc3QgWy1XaW50LWNvbnZlcnNpb25dCi18ICAgICAgICAgICAmaW92LCAxLCAmY21zZywgMCwgMCB9OwotfCAgICAgICAgICAgICAgICAgICAgXgotfCBwaW5nLmM6NzM1OjE5OiBub3RlOiAobmVhciBpbml0aWFsaXphdGlvbiBmb3IgJ20uX19wYWQxJykKLXwgcGluZy5jOjczNToxOTogZXJyb3I6IGluaXRpYWxpemVyIGVsZW1lbnQgaXMgbm90IGNvbXB1dGFibGUgYXQgbG9hZAotdGltZQotfCBwaW5nLmM6NzM1OjE5OiBub3RlOiAobmVhciBpbml0aWFsaXphdGlvbiBmb3IgJ20uX19wYWQxJykKLXwgbWFrZTogKioqIFtwaW5nLm9dIEVycm9yIDEKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBwaW5nLmMgfCAxMSArKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9waW5nLmMgYi9waW5nLmMKLWluZGV4IDQ5ODk3NjAuLmU2N2YzODEgMTAwNjQ0Ci0tLS0gYS9waW5nLmMKLSsrKyBiL3BpbmcuYwotQEAgLTczMSw4ICs3MzEsMTUgQEAgaW50IHNlbmRfcHJvYmUoKQotIAotIAlkbyB7Ci0gCQlzdGF0aWMgc3RydWN0IGlvdmVjIGlvdiA9IHtvdXRwYWNrLCAwfTsKLS0JCXN0YXRpYyBzdHJ1Y3QgbXNnaGRyIG0gPSB7ICZ3aGVyZXRvLCBzaXplb2Yod2hlcmV0byksCi0tCQkJCQkJICAgJmlvdiwgMSwgJmNtc2csIDAsIDAgfTsKLSsJCXN0YXRpYyBzdHJ1Y3QgbXNnaGRyIG0gPSB7Ci0rCQkJLm1zZ19uYW1lID0gJndoZXJldG8sCi0rCQkJLm1zZ19uYW1lbGVuID0gc2l6ZW9mKHdoZXJldG8pLAotKwkJCS5tc2dfaW92ID0gJmlvdiwKLSsJCQkubXNnX2lvdmxlbiA9IDEsCi0rCQkJLm1zZ19jb250cm9sID0gJmNtc2csCi0rCQkJLm1zZ19jb250cm9sbGVuID0gMCwKLSsJCQkubXNnX2ZsYWdzPSAwLAotKwkJfTsKLSAJCW0ubXNnX2NvbnRyb2xsZW4gPSBjbXNnX2xlbjsKLSAJCWlvdi5pb3ZfbGVuID0gY2M7Ci0gCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9hcnBpbmctZml4LWFycGluZy1oYW5nLWlmLVNJR0FMUk0taXMtYmxvY2tlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9hcnBpbmctZml4LWFycGluZy1oYW5nLWlmLVNJR0FMUk0taXMtYmxvY2tlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I1NjI3Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvYXJwaW5nLWZpeC1hcnBpbmctaGFuZy1pZi1TSUdBTFJNLWlzLWJsb2NrZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1hcnBpbmc6IGZpeCBhcnBpbmcgaGFuZyBpZiBTSUdBTFJNIGlzIGJsb2NrZWQKLQotVW5ibG9jayBTSUdBTFJNIHNvIHRoYXQgdGhlIHByZXZpb3VzbHkgY2FsbGVkIGFsYXJtKCkgY2FuIHByZXZlbnQKLXJlY3Zmcm9tKCkgZnJvbSBibG9ja2luZyBmb3JldmVyIGluIGNhc2UgdGhlIGluaGVyaXRlZCBwcm9jbWFzayBpcwotYmxvY2tpbmcgU0lHQUxSTSBhbmQgbm8gcGFja2V0IGlzIHJlY2VpdmVkLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVJlcG9ydGVkLWJ5OiBSdWkgUHJpb3IgPHJwcmlvckBkY2MuZmMudXAucHQ+Ci1SSC1CdWd6aWxsYTogIzEwODU5NzEKLVNpZ25lZC1vZmYtYnk6IEphbiBTeW5hY2VrIDxqc3luYWNla0ByZWRoYXQuY29tPgotU2lnbmVkLW9mZi1ieTogWmhlbmJvIEdhbyA8emhlbmJvLmdhb0B3aW5kcml2ZXIuY29tPgotCi1kaWZmIC0tZ2l0IGEvYXJwaW5nLmMub3JpZyBiL2FycGluZy5jCi1pbmRleCAzNTQwOGMxLi4yMDk4MTU5IDEwMDY0NAotLS0tIGEvYXJwaW5nLmMub3JpZwotKysrIGIvYXJwaW5nLmMKLUBAIC0xMjE1LDE2ICsxMjE1LDIyIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJc29ja2xlbl90IGFsZW4gPSBzaXplb2YoZnJvbSk7Ci0gCQlpbnQgY2M7Ci0gCi0rCQlzaWdlbXB0eXNldCgmc3NldCk7Ci0rCQlzaWdhZGRzZXQoJnNzZXQsIFNJR0FMUk0pOwotKwkJc2lnYWRkc2V0KCZzc2V0LCBTSUdJTlQpOwotKwkJLyogVW5ibG9jayBTSUdBTFJNIHNvIHRoYXQgdGhlIHByZXZpb3VzbHkgY2FsbGVkIGFsYXJtKCkKLSsJCSAqIGNhbiBwcmV2ZW50IHJlY3Zmcm9tIGZyb20gYmxvY2tpbmcgZm9yZXZlciBpbiBjYXNlIHRoZQotKwkJICogaW5oZXJpdGVkIHByb2NtYXNrIGlzIGJsb2NraW5nIFNJR0FMUk0gYW5kIG5vIHBhY2tldAotKwkJICogaXMgcmVjZWl2ZWQuICovCi0rCQlzaWdwcm9jbWFzayhTSUdfVU5CTE9DSywgJnNzZXQsICZvc3NldCk7Ci0rCi0gCQlpZiAoKGNjID0gcmVjdmZyb20ocywgcGFja2V0LCBzaXplb2YocGFja2V0KSwgMCwKLSAJCQkJICAgKHN0cnVjdCBzb2NrYWRkciAqKSZmcm9tLCAmYWxlbikpIDwgMCkgewotIAkJCXBlcnJvcigiYXJwaW5nOiByZWN2ZnJvbSIpOwotIAkJCWNvbnRpbnVlOwotIAkJfQotIAotLQkJc2lnZW1wdHlzZXQoJnNzZXQpOwotLQkJc2lnYWRkc2V0KCZzc2V0LCBTSUdBTFJNKTsKLS0JCXNpZ2FkZHNldCgmc3NldCwgU0lHSU5UKTsKLS0JCXNpZ3Byb2NtYXNrKFNJR19CTE9DSywgJnNzZXQsICZvc3NldCk7Ci0rCQlzaWdwcm9jbWFzayhTSUdfQkxPQ0ssICZzc2V0LCBOVUxMKTsKLSAJCXJlY3ZfcGFjayhwYWNrZXQsIGNjLCAoc3RydWN0IHNvY2thZGRyX2xsICopJmZyb20pOwotIAkJc2lncHJvY21hc2soU0lHX1NFVE1BU0ssICZvc3NldCwgTlVMTCk7Ci0gCX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9kZWJpYW4vdGFyZ2V0cy5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzL2RlYmlhbi90YXJnZXRzLmRpZmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjYjU1NzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzL2RlYmlhbi90YXJnZXRzLmRpZmYKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Rpc2FibGUgZmVhdHVyZV0KLQotSW5kZXg6IGlwdXRpbHMtczIwMTIxMjIxL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gaXB1dGlscy1zMjAxMjEyMjEub3JpZy9NYWtlZmlsZQotKysrIGlwdXRpbHMtczIwMTIxMjIxL01ha2VmaWxlCi1AQCAtMTA2LDcgKzEwNiw3IEBAIGVuZGlmCi0gZW5kaWYKLSAKLSAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS1JUFY0X1RBUkdFVFM9dHJhY2VwYXRoIHBpbmcgY2xvY2tkaWZmIHJkaXNjIGFycGluZyB0ZnRwZCByYXJwZAotK0lQVjRfVEFSR0VUUz10cmFjZXBhdGggcGluZyBjbG9ja2RpZmYgYXJwaW5nCi0gSVBWNl9UQVJHRVRTPXRyYWNlcGF0aDYgdHJhY2Vyb3V0ZTYgcGluZzYKLSBUQVJHRVRTPSQoSVBWNF9UQVJHRVRTKSAkKElQVjZfVEFSR0VUUykKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9kZWJpYW4vdXNlX2dldGhvc3RieW5hbWUyLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvZGViaWFuL3VzZV9nZXRob3N0YnluYW1lMi5kaWZmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2IxODg2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9kZWJpYW4vdXNlX2dldGhvc3RieW5hbWUyLmRpZmYKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2Zyb20gb3RoZXIgZGlzdHJvIERlYmlhbl0KLQotSW5kZXg6IGlwdXRpbHMtczIwMTIxMjIxL3RyYWNlcGF0aC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gaXB1dGlscy1zMjAxMjEyMjEub3JpZy90cmFjZXBhdGguYwotKysrIGlwdXRpbHMtczIwMTIxMjIxL3RyYWNlcGF0aC5jCi1AQCAtMzcwLDkgKzM3MCw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAl9Ci0gI2VuZGlmCi0gCi0tCWhlID0gZ2V0aG9zdGJ5bmFtZShwKTsKLSsJaGUgPSBnZXRob3N0YnluYW1lMihhcmd2WzBdLCBBRl9JTkVUKTsKLSAJaWYgKGhlID09IE5VTEwpIHsKLS0JCWhlcnJvcigiZ2V0aG9zdGJ5bmFtZSIpOwotKwkJaGVycm9yKCJnZXRob3N0YnluYW1lMiIpOwotIAkJZXhpdCgxKTsKLSAJfQotIAotSW5kZXg6IGlwdXRpbHMtczIwMTIxMjIxL3BpbmcuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGlwdXRpbHMtczIwMTIxMjIxLm9yaWcvcGluZy5jCi0rKysgaXB1dGlscy1zMjAxMjEyMjEvcGluZy5jCi1AQCAtMjc5LDcgKzI3OSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICNlbHNlCi0gCQkJaWRuID0gdGFyZ2V0OwotICNlbmRpZgotLQkJCWhwID0gZ2V0aG9zdGJ5bmFtZShpZG4pOwotKwkJCWhwID0gZ2V0aG9zdGJ5bmFtZTIoaWRuLCBBRl9JTkVUKTsKLSAJCQlpZiAoIWhwKSB7Ci0gCQkJCWZwcmludGYoc3RkZXJyLCAicGluZzogdW5rbm93biBob3N0ICVzXG4iLCB0YXJnZXQpOwotIAkJCQlleGl0KDIpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzL25zZ21scy1wYXRoLWZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9uc2dtbHMtcGF0aC1maXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyYmY5NDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzL25zZ21scy1wYXRoLWZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLUZpeCBuc2dtbHMgcGF0aCBpc3N1ZQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogWmhhaSBFZHdpbiA8ZWR3aW4uemhhaUBpbnRlbC5jb20+Ci0KLUluZGV4OiBpcHV0aWxzLXMyMDEwMTAwNi9kb2MvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBpcHV0aWxzLXMyMDEwMTAwNi5vcmlnL2RvYy9NYWtlZmlsZQkyMDExLTA5LTEzIDIwOjQyOjI3LjAwMDAwMDAwMCArMDgwMAotKysrIGlwdXRpbHMtczIwMTAxMDA2L2RvYy9NYWtlZmlsZQkyMDExLTA5LTEzIDIxOjAxOjUyLjAwMDAwMDAwMCArMDgwMAotQEAgLTI3LDEwICsyNywxNSBAQAotICMgZG9jYm9vazJtYW4gcHJvZHVjZXMgdXR0ZXJseSB1Z2x5IG91dHB1dCBhbmQgSSBkaWQgbm90IGZpbmQKLSAjIGFueSB3YXkgdG8gY3VzdG9taXplIHRoaXMgYnV0IGhhY2tpbmcgYmFja2VuZCBwZXJsIHNjcmlwdCBhIGxpdHRsZS4KLSAjIFdlbGwsIGhlbmNlLi4uCi0rIyBuc2dtbHMgc2VlbXMgYXBwZW5kIHBhdGggdG8gc2VhcmNoIGRpcmVjdG9yeSBhY2NvcmRpbmcgdG8gdGhlIHN5c2lkIHBhdGguCi0rIyBlLmcuIGlmIGlucHV0IC4uL2luZGV4LmRiLCBpdCB3b3VsZCBzZWFyY2ggJHNlYXJjaF9kaXJlY3RvcnkvLi4vIHJhdGhlciB0aGFuCi0rIyAkc2VhcmNoX2RpcmVjdG9yeSwgd2hpY2ggbGVhZHMgc2VhcmNoaW5nIGZhaWx1cmUuIEZpeGluZyBuc2dtbHMgcHJvYmFibHkKLSsjIGludHJvZHVjZSBzb21lIHNpZGUgZWZmZWN0cywgc28gdXNlIHRoaXMgdWdseSBoYWNrOiBydW5uaW5nIG5zZ21scyBpbiBjdXJyZW50Ci0rIyBkaXJlY3RvcnksIGFuZCBydW5uaW5nIGRvY2Jvb2sybWFuIGluIHRtcCBkaXJlY3RvcnkuCi0gCi0gJChNQU5GSUxFUyk6IGluZGV4LmRiCi0gCUAtbWtkaXIgdG1wLmRiMm1hbgotLQlAc2V0IC1lOyBjZCB0bXAuZGIybWFuOyBuc2dtbHMgLi4vJDwgfCBzZ21sc3BsIC4uL2RvY2Jvb2sybWFuLXNwZWMucGwgOwltdiAkQCAuLgotKwlAc2V0IC1lOyBuc2dtbHMgJDwgPnRtcC5kYjJtYW4vb3V0cHV0OyBjZCB0bXAuZGIybWFuOyBjYXQgb3V0cHV0IHwgc2dtbHNwbCAuLi9kb2Nib29rMm1hbi1zcGVjLnBsIDsJbXYgJEAgLi4KLSAJQC1ybSAtcmYgdG1wLmRiMm1hbgotIAotIGNsZWFuOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTUxMjE4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTUxMjE4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmRlNmZjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE1MTIxOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLVNVTU1BUlkgPSAiTmV0d29yayBtb25pdG9yaW5nIHRvb2xzIgotREVTQ1JJUFRJT04gPSAiVXRpbGl0aWVzIGZvciB0aGUgSVAgcHJvdG9jb2wsIGluY2x1ZGluZyB0cmFjZXJvdXRlNiwgXAotdHJhY2VwYXRoLCB0cmFjZXBhdGg2LCBwaW5nLCBwaW5nNiBhbmQgYXJwaW5nLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuc2tidWZmLm5ldC9pcHV0aWxzIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi0KLUxJQ0VOU0UgPSAiQlNEICYgR1BMdjIrIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9waW5nLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0zNTttZDU9ZjljZWIyMDE3MzNlOWE2Y2Y4ZjAwNzY2ZGQyNzhkODIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdHJhY2VwYXRoLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xMDttZDU9MGVjZWEyYmY2MGJmZjJmM2Q4NDAwOTZkODc2NDdmM2QgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXJwaW5nLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xMTttZDU9ZmU4NDMwMWI1YzI2NTVjOTUwZjhiOTJhMDU3ZmFmYTYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGZ0cGQuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTMyO21kNT0yODgzNGJmOGE5MWE1YjhhOTI3NTVkYmVlNzA5ZWY5NiAiCi0KLURFUEVORFMgPSAiZ251dGxzIGxpYmNhcCBsaWJnY3J5cHQiCi0KLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnNrYnVmZi5uZXQvaXB1dGlscy8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vdXNlX2dldGhvc3RieW5hbWUyLmRpZmYgXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL3RhcmdldHMuZGlmZiBcCi0gICAgICAgICAgIGZpbGU6Ly9uc2dtbHMtcGF0aC1maXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtaGVhZGVyLWluY2x1c2lvbi1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUludGlhbGl6ZS1zdHJ1Y3QtZWxlbWVudHMtYnktbmFtZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hcnBpbmctZml4LWFycGluZy1oYW5nLWlmLVNJR0FMUk0taXMtYmxvY2tlZC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOGFhYTczOTVmMjdkZmY5ZjU3YWUwMTZkNGJjNzUzY2UiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTQ5ZjU4ZDcxOTUxZTUyYjQ2NTk1ODI5MTM0ZDRlMzMwNjQyZjUyMmY1MDAyNjkxN2ZhZGMzNDlhNTQ4MjVhMSIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiaXB1dGlscy0oP1A8cHZlcj5zXGQrKS50YXIiCi0KLUVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgotCi1kb19jb21waWxlICgpIHsKLQlvZV9ydW5tYWtlICdDQz0ke0NDfSAtRF9HTlVfU09VUkNFJyBWUEFUSD0iJHtTVEFHSU5HX0xJQkRJUn06JHtTVEFHSU5HX0RJUl9IT1NUfS8ke2Jhc2VfbGliZGlyfSIgYWxsCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLQkjIFNVSUQgcm9vdCBwcm9ncmFtcwotCWluc3RhbGwgLW0gNDU1NSBwaW5nICR7RH0ke2Jhc2VfYmluZGlyfS9waW5nCi0JaW5zdGFsbCAtbSA0NTU1IHBpbmc2ICR7RH0ke2Jhc2VfYmluZGlyfS9waW5nNgotCWluc3RhbGwgLW0gNDU1NSB0cmFjZXJvdXRlNiAke0R9JHtiYXNlX2JpbmRpcn0vCi0JaW5zdGFsbCAtbSA0NTU1IGNsb2NrZGlmZiAke0R9JHtiYXNlX2JpbmRpcn0vCi0JIyBPdGhlciBwcm9ncmFtZ3MKLQlmb3IgaSBpbiBhcnBpbmcgdHJhY2VwYXRoIHRyYWNlcGF0aDY7IGRvCi0JICBpbnN0YWxsIC1tIDA3NTUgJGkgJHtEfSR7YmFzZV9iaW5kaXJ9LwotCWRvbmUKLX0KLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotQUxURVJOQVRJVkVfJHtQTn0tcGluZyA9ICJwaW5nIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3BpbmddID0gIiR7YmFzZV9iaW5kaXJ9L3BpbmciCi0KLUFMVEVSTkFUSVZFXyR7UE59LXBpbmc2ID0gInBpbmc2IgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Bpbmc2XSA9ICIke2Jhc2VfYmluZGlyfS9waW5nNiIKLQotUEFDS0FHRVMgKz0gIiR7UE59LXBpbmcgJHtQTn0tcGluZzYgJHtQTn0tYXJwaW5nICR7UE59LXRyYWNlcGF0aCAke1BOfS10cmFjZXBhdGg2ICR7UE59LXRyYWNlcm91dGU2ICR7UE59LWNsb2NrZGlmZiIKLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1waW5nICR7UE59LXBpbmc2ICR7UE59LWFycGluZyAke1BOfS10cmFjZXBhdGggJHtQTn0tdHJhY2VwYXRoNiAke1BOfS10cmFjZXJvdXRlNiAke1BOfS1jbG9ja2RpZmYiCi0KLUZJTEVTXyR7UE59CT0gIiIKLUZJTEVTXyR7UE59LXBpbmcgPSAiJHtiYXNlX2JpbmRpcn0vcGluZy4ke0JQTn0iCi1GSUxFU18ke1BOfS1waW5nNiA9ICIke2Jhc2VfYmluZGlyfS9waW5nNi4ke0JQTn0iCi1GSUxFU18ke1BOfS1hcnBpbmcgPSAiJHtiYXNlX2JpbmRpcn0vYXJwaW5nIgotRklMRVNfJHtQTn0tdHJhY2VwYXRoID0gIiR7YmFzZV9iaW5kaXJ9L3RyYWNlcGF0aCIKLUZJTEVTXyR7UE59LXRyYWNlcGF0aDYgPSAiJHtiYXNlX2JpbmRpcn0vdHJhY2VwYXRoNiIKLUZJTEVTXyR7UE59LXRyYWNlcm91dGU2CT0gIiR7YmFzZV9iaW5kaXJ9L3RyYWNlcm91dGU2IgotRklMRVNfJHtQTn0tY2xvY2tkaWZmID0gIiR7YmFzZV9iaW5kaXJ9L2Nsb2NrZGlmZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE2MTEwNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE2MTEwNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTI1NzM5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTYxMTA1LmJiCkBAIC0wLDAgKzEsNjIgQEAKK1NVTU1BUlkgPSAiTmV0d29yayBtb25pdG9yaW5nIHRvb2xzIgorREVTQ1JJUFRJT04gPSAiVXRpbGl0aWVzIGZvciB0aGUgSVAgcHJvdG9jb2wsIGluY2x1ZGluZyB0cmFjZXJvdXRlNiwgXAordHJhY2VwYXRoLCB0cmFjZXBhdGg2LCBwaW5nLCBwaW5nNiBhbmQgYXJwaW5nLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pcHV0aWxzL2lwdXRpbHMiCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKKworTElDRU5TRSA9ICJCU0QgJiBHUEx2MisiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BpbmcuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTM1O21kNT1mOWNlYjIwMTczM2U5YTZjZjhmMDA3NjZkZDI3OGQ4MiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90cmFjZXBhdGguYztiZWdpbmxpbmU9MTtlbmRsaW5lPTEwO21kNT0wZWNlYTJiZjYwYmZmMmYzZDg0MDA5NmQ4NzY0N2YzZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hcnBpbmcuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTExO21kNT1mZTg0MzAxYjVjMjY1NWM5NTBmOGI5MmEwNTdmYWZhNiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZnRwZC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MzI7bWQ1PTI4ODM0YmY4YTkxYTViOGE5Mjc1NWRiZWU3MDllZjk2ICIKKworREVQRU5EUyA9ICJnbnV0bHMgbGliY2FwIGxpYmdjcnlwdCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2lwdXRpbHMvaXB1dGlscyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1vbi1NVVNMLnBhdGNoIFwKKyAgICAgICAgICAgIgorUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ1JFViA9ICJiZmZjMGU5NTdiOThkNjI2YWI0Y2VhMjE4Yzg5MjUxMjAxNDI1NDQyIgorCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5zXGQrKSIKKworRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCisKK1BBQ0tBR0VDT05GSUcgPz0gIiIKK1BBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICJVU0VfSUROPXllcyxVU0VfSUROPW5vLGxpYmlkbiIKKworZG9fY29tcGlsZSAoKSB7CisJb2VfcnVubWFrZSAnQ0M9JHtDQ30gLURfR05VX1NPVVJDRScgVlBBVEg9IiR7U1RBR0lOR19MSUJESVJ9OiR7U1RBR0lOR19ESVJfSE9TVH0vJHtiYXNlX2xpYmRpcn0iICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gYWxsCit9CisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKwkjIFNVSUQgcm9vdCBwcm9ncmFtcworCWluc3RhbGwgLW0gNDU1NSBwaW5nICR7RH0ke2Jhc2VfYmluZGlyfS9waW5nCisJaW5zdGFsbCAtbSA0NTU1IHRyYWNlcm91dGU2ICR7RH0ke2Jhc2VfYmluZGlyfS8KKwlpbnN0YWxsIC1tIDQ1NTUgY2xvY2tkaWZmICR7RH0ke2Jhc2VfYmluZGlyfS8KKwkjIE90aGVyIHByb2dyYW1ncworCWZvciBpIGluIGFycGluZyB0cmFjZXBhdGg7IGRvCisJICBpbnN0YWxsIC1tIDA3NTUgJGkgJHtEfSR7YmFzZV9iaW5kaXJ9LworCWRvbmUKK30KKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQUxURVJOQVRJVkVfJHtQTn0tcGluZyA9ICJwaW5nIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3BpbmddID0gIiR7YmFzZV9iaW5kaXJ9L3BpbmciCisKK1BBQ0tBR0VTICs9ICIke1BOfS1waW5nICR7UE59LWFycGluZyAke1BOfS10cmFjZXBhdGggJHtQTn0tdHJhY2Vyb3V0ZTYgJHtQTn0tY2xvY2tkaWZmIgorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXBpbmcgJHtQTn0tYXJwaW5nICR7UE59LXRyYWNlcGF0aCAke1BOfS10cmFjZXJvdXRlNiAke1BOfS1jbG9ja2RpZmYiCisKK0ZJTEVTXyR7UE59CT0gIiIKK0ZJTEVTXyR7UE59LXBpbmcgPSAiJHtiYXNlX2JpbmRpcn0vcGluZy4ke0JQTn0iCitGSUxFU18ke1BOfS1hcnBpbmcgPSAiJHtiYXNlX2JpbmRpcn0vYXJwaW5nIgorRklMRVNfJHtQTn0tdHJhY2VwYXRoID0gIiR7YmFzZV9iaW5kaXJ9L3RyYWNlcGF0aCIKK0ZJTEVTXyR7UE59LXRyYWNlcm91dGU2CT0gIiR7YmFzZV9iaW5kaXJ9L3RyYWNlcm91dGU2IgorRklMRVNfJHtQTn0tY2xvY2tkaWZmID0gIiR7YmFzZV9iaW5kaXJ9L2Nsb2NrZGlmZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGVzcy9sZXNzXzQ4Ny5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGVzcy9sZXNzXzQ4Ny5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNhZTQ4NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xlc3MvbGVzc180ODcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1TVU1NQVJZID0gIlRleHQgZmlsZSB2aWV3ZXIgc2ltaWxhciB0byBtb3JlIgotREVTQ1JJUFRJT04gPSAiTGVzcyBpcyBhIHByb2dyYW0gc2ltaWxhciB0byBtb3JlLCBpLmUuIGEgdGVybWluYWwgXAotYmFzZWQgcHJvZ3JhbSBmb3Igdmlld2luZyB0ZXh0IGZpbGVzIGFuZCB0aGUgb3V0cHV0IGZyb20gb3RoZXIgXAotcHJvZ3JhbXMuIExlc3Mgb2ZmZXJzIG1hbnkgZmVhdHVyZXMgYmV5b25kIHRob3NlIHRoYXQgbW9yZSBkb2VzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3JlZW53b29kc29mdHdhcmUuY29tLyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotIyAoR1BMdjIrICg8PCA0MTgpLCBHUEx2MysgKD49IDQxOCkpIHwgbGVzcwotIyBJbmNsdWRpbmcgZW1haWwgYXV0aG9yIGdpdmluZyBwZXJtaXNzaW5nIHRvIHVzZSBCU0QKLSMKLSMgRnJvbTogTWFyayBOdWRlbG1hbiA8bWFya25AZ3JlZW53b29kc29mdHdhcmUuY29tPgotIyBUbzogRWxpemFiZXRoIEZsYW5hZ2FuIDxlbGl6YWJldGguZmxhbmFnYW5AaW50ZWwuY29tCi0jIERhdGU6IDEyLzE5LzExCi0jCi0jIEhpIEVsaXphYmV0aCwKLSMgVXNpbmcgYSBnZW5lcmljIEJTRCBsaWNlbnNlIGZvciBsZXNzIGlzIGZpbmUgd2l0aCBtZS4KLSMgVGhhbmtzLAotIwotIyAtLU1hcmsKLSMKLQotTElDRU5TRSA9ICJHUEx2MysgfCBCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFO21kNT0yZWYzZTRiOGRhZmM4NTYxMmJjNTI1NGI4MDgxZTIzNCIKLURFUEVORFMgPSAibmN1cnNlcyIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmdyZWVud29vZHNvZnR3YXJlLmNvbS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCi0JICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkY2M4YmYxODNhODNiMzYyZDM3ZmU5ZWY4ZGYxZmI2MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmM2RjODQ1NWNiMGIyYjY2ZTBjNmI4MTZjMDAxOTdhNzFiZjZkMTc4NzA3OGFkZWVlMGJjZjJhZWE0YjEyNzA2IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5ncmVlbndvb2Rzb2Z0d2FyZS5jb20vbGVzcy9kb3dubG9hZC5odG1sIgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLWRvX2luc3RhbGwgKCkgewotICAgICAgICBvZV9ydW5tYWtlICdiaW5kaXI9JHtEfSR7YmluZGlyfScgJ21hbmRpcj0ke0R9JHttYW5kaXJ9JyBpbnN0YWxsCi19Ci0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImxlc3MiCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xlc3MvbGVzc181MjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xlc3MvbGVzc181MjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg2Zjc1NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGVzcy9sZXNzXzUyOS5iYgpAQCAtMCwwICsxLDQyIEBACitTVU1NQVJZID0gIlRleHQgZmlsZSB2aWV3ZXIgc2ltaWxhciB0byBtb3JlIgorREVTQ1JJUFRJT04gPSAiTGVzcyBpcyBhIHByb2dyYW0gc2ltaWxhciB0byBtb3JlLCBpLmUuIGEgdGVybWluYWwgXAorYmFzZWQgcHJvZ3JhbSBmb3Igdmlld2luZyB0ZXh0IGZpbGVzIGFuZCB0aGUgb3V0cHV0IGZyb20gb3RoZXIgXAorcHJvZ3JhbXMuIExlc3Mgb2ZmZXJzIG1hbnkgZmVhdHVyZXMgYmV5b25kIHRob3NlIHRoYXQgbW9yZSBkb2VzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3JlZW53b29kc29mdHdhcmUuY29tLyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworIyAoR1BMdjIrICg8PCA0MTgpLCBHUEx2MysgKD49IDQxOCkpIHwgbGVzcworIyBJbmNsdWRpbmcgZW1haWwgYXV0aG9yIGdpdmluZyBwZXJtaXNzaW5nIHRvIHVzZSBCU0QKKyMKKyMgRnJvbTogTWFyayBOdWRlbG1hbiA8bWFya25AZ3JlZW53b29kc29mdHdhcmUuY29tPgorIyBUbzogRWxpemFiZXRoIEZsYW5hZ2FuIDxlbGl6YWJldGguZmxhbmFnYW5AaW50ZWwuY29tCisjIERhdGU6IDEyLzE5LzExCisjCisjIEhpIEVsaXphYmV0aCwKKyMgVXNpbmcgYSBnZW5lcmljIEJTRCBsaWNlbnNlIGZvciBsZXNzIGlzIGZpbmUgd2l0aCBtZS4KKyMgVGhhbmtzLAorIworIyAtLU1hcmsKKyMKKworTElDRU5TRSA9ICJHUEx2MysgfCBCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFO21kNT0yZWYzZTRiOGRhZmM4NTYxMmJjNTI1NGI4MDgxZTIzNCIKK0RFUEVORFMgPSAibmN1cnNlcyIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmdyZWVud29vZHNvZnR3YXJlLmNvbS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCisJICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzMjAxOGI1M2ExZjczMTlhYjU0MzQ5YmFmODBlNmFhOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkYmE0MmNkNGMzODE3NGI3YmQwZDQyNmQ4YTM5ZGYyYmU2YmNjMWVjMTg5NDZhNDY0MjcxMzI5MGY2YmY5YTBiIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5ncmVlbndvb2Rzb2Z0d2FyZS5jb20vbGVzcy9kb3dubG9hZC5odG1sIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK2RvX2luc3RhbGwgKCkgeworICAgICAgICBvZV9ydW5tYWtlICdiaW5kaXI9JHtEfSR7YmluZGlyfScgJ21hbmRpcj0ke0R9JHttYW5kaXJ9JyBpbnN0YWxsCit9CisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImxlc3MiCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFpby9saWJhaW8vZGVzdGRpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpby9kZXN0ZGlyLnBhdGNoCmluZGV4IGRhZDk2MDEuLjBmOTA0MDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpby9kZXN0ZGlyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpby9kZXN0ZGlyLnBhdGNoCkBAIC0yLDE2ICsyLDE2IEBACiAKIGZyb20gb3BlbmVtYmVkZGVkLCBhZGRlZCBieSBRaW5nIEhlIDxxaW5nLmhlQGludGVsLmNvbT4KIAotSW5kZXg6IGxpYmFpby0wLjMuMTA2L01ha2VmaWxlCitJbmRleDogbGliYWlvLTAuMy4xMTAvTWFrZWZpbGUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJhaW8tMC4zLjEwNi5vcmlnL01ha2VmaWxlCTIwMDQtMDItMjYgMDc6MjU6MTAuMDAwMDAwMDAwIC0wODAwCi0rKysgbGliYWlvLTAuMy4xMDYvTWFrZWZpbGUJMjAwNi0xMC0xNCAwOToxOTowNy4wMDAwMDAwMDAgLTA3MDAKLUBAIC0xNSw3ICsxNSw3IEBACistLS0gbGliYWlvLTAuMy4xMTAub3JpZy9NYWtlZmlsZQorKysrIGxpYmFpby0wLjMuMTEwL01ha2VmaWxlCitAQCAtMTUsNyArMTUsNyBAQCBhbGw6CiAgCUAkKE1BS0UpIC1DIHNyYwogIAogIGluc3RhbGw6CiAtCUAkKE1BS0UpIC1DIHNyYyBpbnN0YWxsIHByZWZpeD0kKHByZWZpeCkgaW5jbHVkZWRpcj0kKGluY2x1ZGVkaXIpIGxpYmRpcj0kKGxpYmRpcikKICsJQCQoTUFLRSkgLUMgc3JjIGluc3RhbGwgcHJlZml4PSQoREVTVERJUikkKHByZWZpeCkgaW5jbHVkZWRpcj0kKERFU1RESVIpJChpbmNsdWRlZGlyKSBsaWJkaXI9JChERVNURElSKSQobGliZGlyKQogIAotIAotIGNsZWFuOgorIGNoZWNrOgorIAlAJChNQUtFKSAtQyBoYXJuZXNzIGNoZWNrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vbGliaWRuX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9saWJpZG5fZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCmluZGV4IDU2ODNkM2MuLmRiOTEzMTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9saWJpZG5fZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9saWJpZG5fZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCkBAIC05LDEyICs5LDEyIEBACiBTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgogMjAxMi8wNS8wMwogCi1JbmRleDogbGliaWRuLTEuMjQvY29uZmlndXJlLmFjCitJbmRleDogbGliaWRuLTEuMzMvY29uZmlndXJlLmFjCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliaWRuLTEuMjQub3JpZy9jb25maWd1cmUuYWMKLSsrKyBsaWJpZG4tMS4yNC9jb25maWd1cmUuYWMKLUBAIC0zNCw2ICszNCwxMCBAQCBBQ19TVUJTVChMVF9DVVJSRU5ULCAxNykKLSBBQ19TVUJTVChMVF9SRVZJU0lPTiwgNykKKy0tLSBsaWJpZG4tMS4zMy5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGxpYmlkbi0xLjMzL2NvbmZpZ3VyZS5hYworQEAgLTMzLDYgKzMzLDEwIEBAIEFDX1NVQlNUKExUX0NVUlJFTlQsIDE3KQorIEFDX1NVQlNUKExUX1JFVklTSU9OLCAxNikKICBBQ19TVUJTVChMVF9BR0UsIDYpCiAgCiArIyBhdXRvbWFrZSAxLjEyIHNlZW1zIHRvIHJlcXVpcmUgdGhpcywgYnV0IGF1dG9tYWtlIDEuMTEgZG9lc24ndCByZWNvZ25pemUgaXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibW5sL2xpYm1ubF8xLjAuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibW5sL2xpYm1ubF8xLjAuNC5iYgppbmRleCBiNDU4Nzk5Li4yMzI2MmU4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm1ubC9saWJtbmxfMS4wLjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJtbmwvbGlibW5sXzEuMC40LmJiCkBAIC0xMSwzICsxMSw1IEBACiBTUkNfVVJJW3Rhci5zaGEyNTZzdW1dID0gIjE3MWY4OTY5OWYyODZhNTg1NGI3MmI5MWQwNmU4ZjhlMzY4MzA2NGM1OTAxZmIwOWQ5NTRhOWFiNmY1NTFmODEiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlicGlwZWxpbmUvbGlicGlwZWxpbmVfMS41LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnBpcGVsaW5lL2xpYnBpcGVsaW5lXzEuNS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0Y2M5ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnBpcGVsaW5lL2xpYnBpcGVsaW5lXzEuNS4wLmJiCkBAIC0wLDAgKzEsMTQgQEAKK1NVTU1BUlkgPSAicGlwZWxpbmUgbWFuaXB1bGF0aW9uIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJUaGlzIGlzIGEgQyBsaWJyYXJ5IGZvciBzZXR0aW5nIHVwIGFuZCBydW5uaW5nIHBpcGVsaW5lcyBvZiBwcm9jZXNzZXMsIFwKK3dpdGhvdXQgbmVlZGluZyB0byBpbnZvbHZlIHNoZWxsIGNvbW1hbmQtbGluZSBwYXJzaW5nIHdoaWNoIGlzIG9mdGVuIFwKK2Vycm9yLXByb25lIGFuZCBpbnNlY3VyZS4iCitIT01FUEFHRSA9ICJodHRwOi8vbGlicGlwZWxpbmUubm9uZ251Lm9yZy8iCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1NSQ19VUkkgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS9saWJwaXBlbGluZS9saWJwaXBlbGluZS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiYjc0MzdhNTAyMDE5MGNmYTg0ZjA5YzQxMmRiMzg5MDIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGQ3MmUxMmU0ZjJhZmZmNjdmZDdiOWRmMGEyNGQ3YmE0MmI1YTdjOTIxMWFjNWIzZGNjY2M1Y2Q4YjI4NmYyYiIKKworaW5oZXJpdCBwa2djb25maWcgYXV0b3Rvb2xzCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2LzAwMDEtQWRkLWZhbGxiYWNrLWZvcGVuY29va2llLWltcGxlbWVudGF0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHYvMDAwMS1BZGQtZmFsbGJhY2stZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2gKaW5kZXggYTU3NWQwZS4uZTVjYjYwZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHYvMDAwMS1BZGQtZmFsbGJhY2stZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHYvMDAwMS1BZGQtZmFsbGJhY2stZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDRkOWI2ZWMzMGI3OGQwMGVhZDBhMjJlYjVkMDQ3ZGNkYmEzN2U5OWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDQ3YzZmMWI0MzMyYTllNDkzNWM0OGNjYTgyNjc4NmE2YjhmZTZmNTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiA9P1VURi04P3E/TmVhbD0yMEdvbXBhPTIwPTI4PUUzPTgzPThCPUUzPTgzPUJDPUUzPTgzPUFCPUUzPTgzPUJCPz0KICA9P1VURi04P3E/PUUzPTgyPUIzPUUzPTgyPTk5PUUzPTgzPUIzPUUzPTgzPThGPUUzPTgyPTlBPTI5Pz0KICA8bmdvbXBhMTNAZ21haWwuY29tPgpAQCAtMTMsNiArMTMsNyBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYvcHVsbC8xMTJdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCiAgZXh0L0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgfCAgIDcgKysKICBleHQvc29sdl94Zm9wZW4uYyAgICAgICAgICAgICAgICAgICAgICB8ICAxMCArLS0KQEAgLTIzLDcgKzI0LDcgQEAKICBjcmVhdGUgbW9kZSAxMDA2NDQgZXh0L3NvbHZfeGZvcGVuX2ZhbGxiYWNrX2ZvcGVuY29va2llLmgKIAogZGlmZiAtLWdpdCBhL2V4dC9DTWFrZUxpc3RzLnR4dCBiL2V4dC9DTWFrZUxpc3RzLnR4dAotaW5kZXggNTg2ZWRhOC4uNDc3YTJlZiAxMDA2NDQKK2luZGV4IGI4OTE3YTIuLmZhYzZjMzIgMTAwNjQ0CiAtLS0gYS9leHQvQ01ha2VMaXN0cy50eHQKICsrKyBiL2V4dC9DTWFrZUxpc3RzLnR4dAogQEAgLTQsNiArNCwxMyBAQCBTRVQgKGxpYnNvbHZleHRfU1JDUwpAQCAtNDEsMTEgKzQyLDExIEBACiAgICAgIFNFVCAobGlic29sdmV4dF9TUkNTICR7bGlic29sdmV4dF9TUkNTfQogICAgICAgICAgcG9vbF9maWxlY29uZmxpY3RzLmMgcmVwb19ycG1kYi5jKQogZGlmZiAtLWdpdCBhL2V4dC9zb2x2X3hmb3Blbi5jIGIvZXh0L3NvbHZfeGZvcGVuLmMKLWluZGV4IGIwNDIxYmYuLjMxMzQ1ZGQgMTAwNjQ0CitpbmRleCAyYzY0YmI2Li5lYjNhM2FkIDEwMDY0NAogLS0tIGEvZXh0L3NvbHZfeGZvcGVuLmMKICsrKyBiL2V4dC9zb2x2X3hmb3Blbi5jCi1AQCAtMTMsNiArMTMsMTAgQEAKLSAjaW5jbHVkZSA8emxpYi5oPgorQEAgLTEyLDYgKzEyLDEwIEBACisgI2luY2x1ZGUgPHN0cmluZy5oPgogICNpbmNsdWRlIDxmY250bC5oPgogIAogKyNpZiAhZGVmaW5lZChIQVZFX0ZVTk9QRU4pICYmICFkZWZpbmVkKEhBVkVfRk9QRU5DT09LSUUpCkBAIC01NSw3ICs1Niw3IEBACiAgI2luY2x1ZGUgInNvbHZfeGZvcGVuLmgiCiAgI2luY2x1ZGUgInV0aWwuaCIKICAKLUBAIC0zOSw3ICs0Myw3IEBAIHN0YXRpYyBGSUxFICpjb29raWVvcGVuKHZvaWQgKmNvb2tpZSwgY29uc3QgY2hhciAqbW9kZSwKK0BAIC0yMSw3ICsyNSw3IEBAIHN0YXRpYyBGSUxFICpjb29raWVvcGVuKHZvaWQgKmNvb2tpZSwgY29uc3QgY2hhciAqbW9kZSwKICAJc3NpemVfdCAoKmN3cml0ZSkodm9pZCAqLCBjb25zdCBjaGFyICosIHNpemVfdCksCiAgCWludCAoKmNjbG9zZSkodm9pZCAqKSkKICB7CkBAIC02NCw3ICs2NSw3IEBACiAgICBpZiAoIWNvb2tpZSkKICAgICAgcmV0dXJuIDA7CiAgICByZXR1cm4gZnVub3Blbihjb29raWUsCi1AQCAtNDgsNyArNTIsNyBAQCBzdGF0aWMgRklMRSAqY29va2llb3Blbih2b2lkICpjb29raWUsIGNvbnN0IGNoYXIgKm1vZGUsCitAQCAtMzAsNyArMzQsNyBAQCBzdGF0aWMgRklMRSAqY29va2llb3Blbih2b2lkICpjb29raWUsIGNvbnN0IGNoYXIgKm1vZGUsCiAgICAgICAgKGZwb3NfdCAoKikodm9pZCAqLCBmcG9zX3QsIGludCkpTlVMTCwJCQkJCS8qIHNlZWtmbiAqLwogICAgICAgIGNjbG9zZQogICAgICAgICk7CkBAIC03Myw3ICs3NCw3IEBACiAgICBjb29raWVfaW9fZnVuY3Rpb25zX3QgY2lvOwogIAogICAgaWYgKCFjb29raWUpCi1AQCAtNjAsOCArNjQsNiBAQCBzdGF0aWMgRklMRSAqY29va2llb3Blbih2b2lkICpjb29raWUsIGNvbnN0IGNoYXIgKm1vZGUsCitAQCAtNDIsOCArNDYsNiBAQCBzdGF0aWMgRklMRSAqY29va2llb3Blbih2b2lkICpjb29raWUsIGNvbnN0IGNoYXIgKm1vZGUsCiAgICAgIGNpby53cml0ZSA9IGN3cml0ZTsKICAgIGNpby5jbG9zZSA9IGNjbG9zZTsKICAgIHJldHVybiAgZm9wZW5jb29raWUoY29va2llLCAqbW9kZSA9PSAndycgPyAidyIgOiAiciIsIGNpbyk7CkBAIC0yNDYsNSArMjQ3LDUgQEAKICsKICsjZW5kaWYKIC0tIAotMi4xMS4wCisyLjQuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdi8wMDAxLXJlcG9fcnBtZGIuYy1pbmNyZWFzZS1NQVhfSERSX0NOVC1hbmQtTUFYX0hEUl9EU0laRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2LzAwMDEtcmVwb19ycG1kYi5jLWluY3JlYXNlLU1BWF9IRFJfQ05ULWFuZC1NQVhfSERSX0RTSVpFLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTRlNWNiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2LzAwMDEtcmVwb19ycG1kYi5jLWluY3JlYXNlLU1BWF9IRFJfQ05ULWFuZC1NQVhfSERSX0RTSVpFLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSAxYzRjOTM1Y2I3M2FjMWNjYjk2OTNkZjFhNTFiYTIxOGEyMmU4Y2E4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWluZyBMaXUgPGxpdS5taW5nNTBAZ21haWwuY29tPgotRGF0ZTogU2F0LCAzMCBTZXAgMjAxNyAxMToxNToxNiArMDgwMAotU3ViamVjdDogW1BBVENIXSByZXBvX3JwbWRiLmM6IGluY3JlYXNlIE1BWF9IRFJfQ05UIGFuZCBNQVhfSERSX0RTSVpFCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdi9wdWxsLzIzMF0KLQotV2UgZW5jb3VudGVyZWQgJ2NvcnJ1cHQgcnBtJyBpc3N1ZXMgd2hlbiBpbnN0YWxsaW5nIGV4dHJlbWUgYmlnIFJQTQotcGFja2FnZXMgbGlrZSB0aGUga2VybmVsLWRldnNyYyBwYWNrYWdlIG9mIFlvY3RvIHByb2plY3QuCi0KLUl0IGNhbiBiZSBmaXhlZCBieSBpbmNyZWFzaW5nIE1BWF9IRFJfQ05UIGFuZCBNQVhfSERSX0RTSVpFIHBlciB0ZXN0LgotCi1TaWduZWQtb2ZmLWJ5OiBNaW5nIExpdSA8bGl1Lm1pbmc1MEBnbWFpbC5jb20+Ci0tLS0KLSBleHQvcmVwb19ycG1kYi5jIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2V4dC9yZXBvX3JwbWRiLmMgYi9leHQvcmVwb19ycG1kYi5jCi1pbmRleCBjNzAwMGE5Li43MDAwODM1IDEwMDY0NAotLS0tIGEvZXh0L3JlcG9fcnBtZGIuYwotKysrIGIvZXh0L3JlcG9fcnBtZGIuYwotQEAgLTE3MCw4ICsxNzAsOCBAQAotICNkZWZpbmUgTUFYX1NJR19DTlQJCTB4MTAwMDAwCi0gI2RlZmluZSBNQVhfU0lHX0RTSVpFCQkweDEwMDAwMAotIAotLSNkZWZpbmUgTUFYX0hEUl9DTlQJCTB4MTAwMDAwCi0tI2RlZmluZSBNQVhfSERSX0RTSVpFCQkweDIwMDAwMDAKLSsjZGVmaW5lIE1BWF9IRFJfQ05UCQkweDIwMDAwMAotKyNkZWZpbmUgTUFYX0hEUl9EU0laRQkJMHg0MDAwMDAwCi0gCi0gdHlwZWRlZiBzdHJ1Y3QgcnBtaGVhZCB7Ci0gICBpbnQgY250OwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdi8wMDAyLUZpeGVzLXRvLWludGVybmFsLWZvcGVuY29va2llLWltcGxlbWVudGF0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHYvMDAwMi1GaXhlcy10by1pbnRlcm5hbC1mb3BlbmNvb2tpZS1pbXBsZW1lbnRhdGlvbi5wYXRjaAppbmRleCBlZmI0ZTNhLi45M2I4Y2M5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdi8wMDAyLUZpeGVzLXRvLWludGVybmFsLWZvcGVuY29va2llLWltcGxlbWVudGF0aW9uLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2LzAwMDItRml4ZXMtdG8taW50ZXJuYWwtZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDk5YjEwY2RmNmEwZjhhMjRlMTY3MGMxODEzYjFkOTU2M2FlM2Y1YjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDg0ZTEyYmY3ZWNlNDkwNzNjNTU5ZGZkNTgwMDUxMzJhNjA5OWE5NjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiA9P1VURi04P3E/TmVhbD0yMEdvbXBhPTIwPTI4PUUzPTgzPThCPUUzPTgzPUJDPUUzPTgzPUFCPUUzPTgzPUJCPz0KICA9P1VURi04P3E/PUUzPTgyPUIzPUUzPTgyPTk5PUUzPTgzPUIzPUUzPTgzPThGPUUzPTgyPTlBPTI5Pz0KICA8bmdvbXBhMTNAZ21haWwuY29tPgpAQCAtMTEsNiArMTEsNyBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYvcHVsbC8xMTJdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCiAgZXh0L3NvbHZfeGZvcGVuX2ZhbGxiYWNrX2ZvcGVuY29va2llLmMgfCAxOSArKysrKysrKysrLS0tLS0tLS0tCiAgZXh0L3NvbHZfeGZvcGVuX2ZhbGxiYWNrX2ZvcGVuY29va2llLmggfCAxMCArKysrKy0tLS0tCkBAIC0xMDAsNSArMTAxLDUgQEAKICAKICAjaWZuZGVmIFNPTFZfWEZPUEVOX0ZBTExCQUNLX0ZPUEVOQ09PS0lFX0gKIC0tIAotMi4xMS4wCisyLjQuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjYuMjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjYuMjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjOGY3ZmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHZfMC42LjI4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBzb2x2aW5nIHBhY2thZ2VzIGFuZCByZWFkaW5nIHJlcG9zaXRvcmllcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2IgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdi9pc3N1ZXMiCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLkJTRDttZDU9NjIyNzJiZDExYzk3Mzk2ZDRhYWYxYzQxYmMxMWY3ZDgiCi0KLURFUEVORFMgPSAiZXhwYXQgemxpYiBycG0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2LmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXJlcG9fcnBtZGIuYy1pbmNyZWFzZS1NQVhfSERSX0NOVC1hbmQtTUFYX0hEUl9EU0laRS5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwMS1BZGQtZmFsbGJhY2stZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXhlcy10by1pbnRlcm5hbC1mb3BlbmNvb2tpZS1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLVNSQ1JFViA9ICJiOGE5ZGRkODhlYjRlMGFiMzUxZWI1NWE1MzE4NmI1ZGM1YWMwODI1IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlCi0KLUVYVFJBX09FQ01BS0UgPSAiLURMSUI9JHtiYXNlbGlifSAtRE1VTFRJX1NFTUFOVElDUz1PTiAtREVOQUJMRV9SUE1NRD1PTiAtREVOQUJMRV9SUE1EQj1PTiAtREVOQUJMRV9DT01QTEVYX0RFUFM9T04iCi0KLVBBQ0tBR0VTID0rICIke1BOfS10b29scyAke1BOfWV4dCIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NtYWtlL01vZHVsZXMvRmluZExpYlNvbHYuY21ha2UiCi1GSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKLUZJTEVTXyR7UE59ZXh0ID0gIiR7bGliZGlyfS8ke1BOfWV4dC5zby4qIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjYuMzMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjYuMzMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQwMWNlZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNi4zMy5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIkxpYnJhcnkgZm9yIHNvbHZpbmcgcGFja2FnZXMgYW5kIHJlYWRpbmcgcmVwb3NpdG9yaWVzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2L2lzc3VlcyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuQlNEO21kNT02MjI3MmJkMTFjOTczOTZkNGFhZjFjNDFiYzExZjdkOCIKKworREVQRU5EUyA9ICJleHBhdCB6bGliIHJwbSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYuZ2l0IFwKKyAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDAxLUFkZC1mYWxsYmFjay1mb3BlbmNvb2tpZS1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpeGVzLXRvLWludGVybmFsLWZvcGVuY29va2llLWltcGxlbWVudGF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIKKworU1JDUkVWID0gIjY5ZjE4MDM5NzhiYTdhNDZhNTc5MjhmYTRiZTY0MzA3OTI0MTllNGUiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UKKworRVhUUkFfT0VDTUFLRSA9ICItRExJQj0ke2Jhc2VsaWJ9IC1ETVVMVElfU0VNQU5USUNTPU9OIC1ERU5BQkxFX1JQTU1EPU9OIC1ERU5BQkxFX1JQTURCPU9OIC1ERU5BQkxFX0NPTVBMRVhfREVQUz1PTiIKKworUEFDS0FHRVMgPSsgIiR7UE59LXRvb2xzICR7UE59ZXh0IgorCitGSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKK0ZJTEVTXyR7UE59ZXh0ID0gIiR7bGliZGlyfS8ke1BOfWV4dC5zby4qIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnVzZXIvbGlidXNlcl8wLjYyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ1c2VyL2xpYnVzZXJfMC42Mi5iYgppbmRleCAxNzY1MzQ2Li43ZWM1NGViIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnVzZXIvbGlidXNlcl8wLjYyLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidXNlci9saWJ1c2VyXzAuNjIuYmIKQEAgLTIyLDYgKzIyLDkgQEAKIAogREVQRU5EUyA9ICJwb3B0IGxpYnBhbSBnbGliLTIuMCBweXRob24zIgogCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjaworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInBhbSIKKwogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBweXRob24zbmF0aXZlIHB5dGhvbjMtZGlyIHBrZ2NvbmZpZyBndGstZG9jCiAKIEVYVFJBX09FTUFLRSA9ICJQWVRIT05fQ1BQRkxBR1M9LUkke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9JHtQWVRIT05fQUJJfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGQvMDAwMS1Vc2UtcGtnLWNvbmZpZy1mb3ItcGNyZS1kZXBlbmRlbmN5LWluc3RlYWQtb2YtY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZC8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1wY3JlLWRlcGVuZGVuY3ktaW5zdGVhZC1vZi1jb25maWcucGF0Y2gKaW5kZXggYjhjN2YzNy4uZjE3YmRjZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZC8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1wY3JlLWRlcGVuZGVuY3ktaW5zdGVhZC1vZi1jb25maWcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZC8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1wY3JlLWRlcGVuZGVuY3ktaW5zdGVhZC1vZi1jb25maWcucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGU3YThjOTI1YjkzMTZhNzJiZGM4ZjMyNzg5ZmZlNTZmZGE1YzQ3ODggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDIyYWZjNWQ5YWFhMjE1YzNjODdiYTIxYzc3ZDQ3ZGE0NGFiM2IxMTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMjYgQXVnIDIwMTYgMTg6MjA6MzIgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSF0gVXNlIHBrZy1jb25maWcgZm9yIHBjcmUgZGVwZW5kZW5jeSBpbnN0ZWFkIG9mIC1jb25maWcgc2NyaXB0LgpAQCAtNywzMSArNywzNiBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIC0tLQotIGNvbmZpZ3VyZS5hYyB8IDExICsrKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKyBjb25maWd1cmUuYWMgfCAxNiArKysrKysrKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDFkMTcyYTEuLmE5MjM2ZGEgMTAwNjQ0CitpbmRleCA1MzgzY2VjLi5jMjlhOTAyIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0zODAsMTEgKzM4MCwxMiBAQCBpZiB0ZXN0ICIkV0lUSF9QQ1JFIiAhPSAibm8iOyB0aGVuCi0gCQkJUENSRV9MSUI9Ii1MJFdJVEhfUENSRS9saWIgLWxwY3JlIgotIAkJCUNQUEZMQUdTPSIkQ1BQRkxBR1MgLUkkV0lUSF9QQ1JFL2luY2x1ZGUiCi0gCQllbHNlCi0tCQkJQUNfUEFUSF9QUk9HKFBDUkVDT05GSUcsIHBjcmUtY29uZmlnKQotLQkJCWlmIHRlc3QgeCIkUENSRUNPTkZJRyIgIT0geDsgdGhlbgotLQkJCQlQQ1JFX0xJQj1gJFBDUkVDT05GSUcgLS1saWJzYAotLQkJCQlDUFBGTEFHUz0iJENQUEZMQUdTIGAkUENSRUNPTkZJRyAtLWNmbGFnc2AiCi0tCQkJZmkKLSsJCQlQS0dfQ0hFQ0tfTU9EVUxFUyhQQ1JFUEtHLCBbbGlicGNyZV0sIFsKK0BAIC02NTEsMTAgKzY1MSwxOCBAQCBBQ19BUkdfV0lUSChbcGNyZV0sCisgKQorIEFDX01TR19SRVNVTFQoWyRXSVRIX1BDUkVdKQorIAorLWlmIHRlc3QgIiRXSVRIX1BDUkUiICE9IG5vOyB0aGVuCistICBpZiB0ZXN0ICIkV0lUSF9QQ1JFIiAhPSB5ZXM7IHRoZW4KKy0gICAgUENSRV9MSUI9Ii1MJFdJVEhfUENSRS9saWIgLWxwY3JlIgorLSAgICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JJFdJVEhfUENSRS9pbmNsdWRlIgorK2lmIHRlc3QgIiRXSVRIX1BDUkUiICE9ICJubyI7IHRoZW4KKysgIFBLR19DSEVDS19NT0RVTEVTKFBDUkVQS0csIFtsaWJwY3JlXSwgWwogKwkJCQlQQ1JFX0xJQj0ke1BDUkVQS0dfTElCU30KICsJCQkJQ1BQRkxBR1M9IiRDUFBGTEFHUyAke1BDUkVQS0dfQ0ZMQUdTfSIKLSsJCQldLCBbCisrICBdLCBbCiArCQkJCUFDX01TR19FUlJPUihbcGNyZSBwa2djb25maWcgbm90IGZvdW5kLCBpbnN0YWxsIHRoZSBwY3JlLWRldmVsIHBhY2thZ2Ugb3IgYnVpbGQgd2l0aCAtLXdpdGhvdXQtcGNyZV0pCi0rCQkJXSkKLSAJCWZpCi0gCi0gICBpZiB0ZXN0IHgiJFBDUkVfTElCIiAhPSB4OyB0aGVuCisrICBdKQorKworKyAgaWYgdGVzdCB4IiRQQ1JFX0xJQiIgIT0geDsgdGhlbgorKyAgICBBQ19ERUZJTkUoW0hBVkVfTElCUENSRV0sIFsxXSwgW2xpYnBjcmVdKQorKyAgICBBQ19ERUZJTkUoW0hBVkVfUENSRV9IXSwgWzFdLCBbcGNyZS5oXSkKKysgICAgQUNfU1VCU1QoUENSRV9MSUIpCisgICBlbHNlCisgICAgIEFDX1BBVEhfUFJPRyhbUENSRUNPTkZJR10sIFtwY3JlLWNvbmZpZ10pCisgICAgIGlmIHRlc3QgLW4gIiRQQ1JFQ09ORklHIjsgdGhlbgogLS0gCi0yLjkuMworMi4xNS4wCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGRfMS40LjQ1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNDUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4ZGRhMzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNDUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi1TVU1NQVJZID0gIkxpZ2h0d2VpZ2h0IGhpZ2gtcGVyZm9ybWFuY2Ugd2ViIHNlcnZlciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGlnaHR0cGQubmV0LyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3JlZG1pbmUubGlnaHR0cGQubmV0L3Byb2plY3RzL2xpZ2h0dHBkL2lzc3VlcyIKLQotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNGRhYzVjNmFiMTY5YWEyMTJmZWI1MDI4ODUzYTU3OSIKLQotU0VDVElPTiA9ICJuZXQiCi1SREVQRU5EU18ke1BOfSA9ICJsaWdodHRwZC1tb2R1bGUtZGlybGlzdGluZyBcCi0gICAgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtaW5kZXhmaWxlIFwKLSAgICAgICAgICAgICAgICAgIGxpZ2h0dHBkLW1vZHVsZS1zdGF0aWNmaWxlIgotUlJFQ09NTUVORFNfJHtQTn0gPSAibGlnaHR0cGQtbW9kdWxlLWFjY2VzcyBcCi0gICAgICAgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtYWNjZXNzbG9nIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5saWdodHRwZC5uZXQvbGlnaHR0cGQvcmVsZWFzZXMtMS40LngvbGlnaHR0cGQtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgZmlsZTovL2luZGV4Lmh0bWwubGlnaHR0cGQgXAotICAgICAgICBmaWxlOi8vbGlnaHR0cGQuY29uZiBcCi0gICAgICAgIGZpbGU6Ly9saWdodHRwZCBcCi0gICAgICAgIGZpbGU6Ly9saWdodHRwZC5zZXJ2aWNlIFwKLSAgICAgICAgZmlsZTovLzAwMDEtVXNlLXBrZy1jb25maWctZm9yLXBjcmUtZGVwZW5kZW5jeS1pbnN0ZWFkLW9mLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImExMjhlMWVkYTc2ODk5Y2UzZmQxMTVlZmFlNWZlNjMxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFjOTcyMjVkZWVhMzNlZWZiYTZkNDE1OGMyY2VmMjc5MTNkNDc1NTMyNjM1MTZiYmU5ZDJlMjc2MGZjNDNhM2YiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJvcGVuc3NsIHBjcmUgemxpYiBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4YXR0cicsICdhdHRyJywgJycsIGQpfSBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiIKLVBBQ0tBR0VDT05GSUdbbW1hcF0gPSAiLS1lbmFibGUtbW1hcCwtLWRpc2FibGUtbW1hcCIKLVBBQ0tBR0VDT05GSUdbbGliZXZdID0gIi0td2l0aC1saWJldiwtLXdpdGhvdXQtbGliZXYsbGliZXYiCi1QQUNLQUdFQ09ORklHW215c3FsXSA9ICItLXdpdGgtbXlzcWwsLS13aXRob3V0LW15c3FsLG1hcmlhZGIiCi1QQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwLC0td2l0aG91dC1sZGFwLG9wZW5sZGFwIgotUEFDS0FHRUNPTkZJR1thdHRyXSA9ICItLXdpdGgtYXR0ciwtLXdpdGhvdXQtYXR0cixhdHRyIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS13aXRoLXZhbGdyaW5kLC0td2l0aG91dC12YWxncmluZCx2YWxncmluZCIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wsLS13aXRob3V0LW9wZW5zc2wsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdba3JiNV0gPSAiLS13aXRoLWtyYjUsLS13aXRob3V0LWtyYjUsa3JiNSIKLVBBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS13aXRoLXBjcmUsLS13aXRob3V0LXBjcmUsbGlicGNyZSIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWIsLS13aXRob3V0LXpsaWIsemxpYiIKLVBBQ0tBR0VDT05GSUdbYnppcDJdID0gIi0td2l0aC1iemlwMiwtLXdpdGhvdXQtYnppcDIsYnppcDIiCi1QQUNLQUdFQ09ORklHW2ZhbV0gPSAiLS13aXRoLWZhbSwtLXdpdGhvdXQtZmFtLGdhbWluIgotUEFDS0FHRUNPTkZJR1t3ZWJkYXYtcHJvcHNdID0gIi0td2l0aC13ZWJkYXYtcHJvcHMsLS13aXRob3V0LXdlYmRhdi1wcm9wcyxsaWJ4bWwyIHNxbGl0ZTMiCi1QQUNLQUdFQ09ORklHW3dlYmRhdi1sb2Nrc10gPSAiLS13aXRoLXdlYmRhdi1sb2NrcywtLXdpdGhvdXQtd2ViZGF2LWxvY2tzLHV0aWwtbGludXgiCi1QQUNLQUdFQ09ORklHW2dkYm1dID0gIi0td2l0aC1nZGJtLC0td2l0aG91dC1nZGJtLGdkYm0iCi1QQUNLQUdFQ09ORklHW21lbWNhY2hlXSA9ICItLXdpdGgtbWVtY2FjaGVkLC0td2l0aG91dC1tZW1jYWNoZWQsbGlibWVtY2FjaGVkIgotUEFDS0FHRUNPTkZJR1tsdWFdID0gIi0td2l0aC1sdWEsLS13aXRob3V0LWx1YSxsdWE1LjEiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtbGZzIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLXJjLmQgZ2V0dGV4dCBzeXN0ZW1kCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJsaWdodHRwZCIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIDcwIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibGlnaHR0cGQuc2VydmljZSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQgJHtEfSR7c3lzY29uZmRpcn0vbGlnaHR0cGQuZCAke0R9L3d3dy9wYWdlcy9kYXYKLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9saWdodHRwZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9saWdodHRwZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9Ci0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaW5kZXguaHRtbC5saWdodHRwZCAke0R9L3d3dy9wYWdlcy9pbmRleC5odG1sCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbGlnaHR0cGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCXNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCi0JCS1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKLQkJLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCi0JCSR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2xpZ2h0dHBkLnNlcnZpY2UKLQkjRm9yIEZIUyBjb21wbGlhbmNlLCBjcmVhdGUgc3ltYm9saWMgbGlua3MgdG8gL3Zhci9sb2cgYW5kIC92YXIvdG1wIGZvciBsb2dzIGFuZCB0ZW1wb3JhcnkgZGF0YQotCWxuIC1zZiAke2xvY2Fsc3RhdGVkaXJ9L2xvZyAke0R9L3d3dy9sb2dzCi0JbG4gLXNmICR7bG9jYWxzdGF0ZWRpcn0vdG1wICR7RH0vd3d3L3ZhcgotfQotCi1GSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfSAvd3d3IgotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9saWdodHRwZC5jb25mIgotCi1QQUNLQUdFU19EWU5BTUlDICs9ICJebGlnaHR0cGQtbW9kdWxlLS4qIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgbGlnaHR0cGRfbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfScpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGlnaHR0cGRfbGliZGlyLCAnXm1vZF8oLiopXC5zbyQnLCAnbGlnaHR0cGQtbW9kdWxlLSVzJywgJ0xpZ2h0dHBkIG1vZHVsZSBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnKQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNDguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC40OC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzQ0NDRjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNDguYmIKQEAgLTAsMCArMSw4NSBAQAorU1VNTUFSWSA9ICJMaWdodHdlaWdodCBoaWdoLXBlcmZvcm1hbmNlIHdlYiBzZXJ2ZXIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpZ2h0dHBkLm5ldC8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9yZWRtaW5lLmxpZ2h0dHBkLm5ldC9wcm9qZWN0cy9saWdodHRwZC9pc3N1ZXMiCisKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTRkYWM1YzZhYjE2OWFhMjEyZmViNTAyODg1M2E1NzkiCisKK1NFQ1RJT04gPSAibmV0IgorUkRFUEVORFNfJHtQTn0gPSAibGlnaHR0cGQtbW9kdWxlLWRpcmxpc3RpbmcgXAorICAgICAgICAgICAgICAgICAgbGlnaHR0cGQtbW9kdWxlLWluZGV4ZmlsZSBcCisgICAgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtc3RhdGljZmlsZSIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImxpZ2h0dHBkLW1vZHVsZS1hY2Nlc3MgXAorICAgICAgICAgICAgICAgICAgICAgbGlnaHR0cGQtbW9kdWxlLWFjY2Vzc2xvZyIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQubGlnaHR0cGQubmV0L2xpZ2h0dHBkL3JlbGVhc2VzLTEuNC54L2xpZ2h0dHBkLSR7UFZ9LnRhci54eiBcCisgICAgICAgIGZpbGU6Ly9pbmRleC5odG1sLmxpZ2h0dHBkIFwKKyAgICAgICAgZmlsZTovL2xpZ2h0dHBkLmNvbmYgXAorICAgICAgICBmaWxlOi8vbGlnaHR0cGQgXAorICAgICAgICBmaWxlOi8vbGlnaHR0cGQuc2VydmljZSBcCisgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1wY3JlLWRlcGVuZGVuY3ktaW5zdGVhZC1vZi1jb25maWcucGF0Y2ggXAorICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxZTNhOWViNTA3OGY0ODFlM2E4YTFkMGFhYWM4YzNjOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwZjhhZDVhYWM3NTI5ZDdiOTQ4YjlkN2U4Y2QwYjRhOWUxNzczMDlkODVkNmJmNjUxNmUyOGU2ZTQwZDc0ZjM2IgorCitQQUNLQUdFQ09ORklHID8/PSAib3BlbnNzbCBwY3JlIHpsaWIgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneGF0dHInLCAnYXR0cicsICcnLCBkKX0gXAorIgorCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYiCitQQUNLQUdFQ09ORklHW21tYXBdID0gIi0tZW5hYmxlLW1tYXAsLS1kaXNhYmxlLW1tYXAiCitQQUNLQUdFQ09ORklHW2xpYmV2XSA9ICItLXdpdGgtbGliZXYsLS13aXRob3V0LWxpYmV2LGxpYmV2IgorUEFDS0FHRUNPTkZJR1tteXNxbF0gPSAiLS13aXRoLW15c3FsLC0td2l0aG91dC1teXNxbCxtYXJpYWRiIgorUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLXdpdGgtbGRhcCwtLXdpdGhvdXQtbGRhcCxvcGVubGRhcCIKK1BBQ0tBR0VDT05GSUdbYXR0cl0gPSAiLS13aXRoLWF0dHIsLS13aXRob3V0LWF0dHIsYXR0ciIKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZCwtLXdpdGhvdXQtdmFsZ3JpbmQsdmFsZ3JpbmQiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLC0td2l0aG91dC1vcGVuc3NsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW2tyYjVdID0gIi0td2l0aC1rcmI1LC0td2l0aG91dC1rcmI1LGtyYjUiCitQQUNLQUdFQ09ORklHW3BjcmVdID0gIi0td2l0aC1wY3JlLC0td2l0aG91dC1wY3JlLGxpYnBjcmUiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIiCitQQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnppcDIsLS13aXRob3V0LWJ6aXAyLGJ6aXAyIgorUEFDS0FHRUNPTkZJR1tmYW1dID0gIi0td2l0aC1mYW0sLS13aXRob3V0LWZhbSxnYW1pbiIKK1BBQ0tBR0VDT05GSUdbd2ViZGF2LXByb3BzXSA9ICItLXdpdGgtd2ViZGF2LXByb3BzLC0td2l0aG91dC13ZWJkYXYtcHJvcHMsbGlieG1sMiBzcWxpdGUzIgorUEFDS0FHRUNPTkZJR1t3ZWJkYXYtbG9ja3NdID0gIi0td2l0aC13ZWJkYXYtbG9ja3MsLS13aXRob3V0LXdlYmRhdi1sb2Nrcyx1dGlsLWxpbnV4IgorUEFDS0FHRUNPTkZJR1tnZGJtXSA9ICItLXdpdGgtZ2RibSwtLXdpdGhvdXQtZ2RibSxnZGJtIgorUEFDS0FHRUNPTkZJR1ttZW1jYWNoZV0gPSAiLS13aXRoLW1lbWNhY2hlZCwtLXdpdGhvdXQtbWVtY2FjaGVkLGxpYm1lbWNhY2hlZCIKK1BBQ0tBR0VDT05GSUdbbHVhXSA9ICItLXdpdGgtbHVhLC0td2l0aG91dC1sdWEsbHVhNS4xIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWxmcyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwZGF0ZS1yYy5kIGdldHRleHQgc3lzdGVtZAorCitJTklUU0NSSVBUX05BTUUgPSAibGlnaHR0cGQiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyA3MCIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImxpZ2h0dHBkLnNlcnZpY2UiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kICR7RH0ke3N5c2NvbmZkaXJ9L2xpZ2h0dHBkLmQgJHtEfS93d3cvcGFnZXMvZGF2CisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbGlnaHR0cGQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbGlnaHR0cGQuY29uZiAke0R9JHtzeXNjb25mZGlyfQorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2luZGV4Lmh0bWwubGlnaHR0cGQgJHtEfS93d3cvcGFnZXMvaW5kZXguaHRtbAorCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2xpZ2h0dHBkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorCQktZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCisJCS1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAorCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9saWdodHRwZC5zZXJ2aWNlCisJI0ZvciBGSFMgY29tcGxpYW5jZSwgY3JlYXRlIHN5bWJvbGljIGxpbmtzIHRvIC92YXIvbG9nIGFuZCAvdmFyL3RtcCBmb3IgbG9ncyBhbmQgdGVtcG9yYXJ5IGRhdGEKKwlsbiAtc2YgJHtsb2NhbHN0YXRlZGlyfS9sb2cgJHtEfS93d3cvbG9ncworCWxuIC1zZiAke2xvY2Fsc3RhdGVkaXJ9L3RtcCAke0R9L3d3dy92YXIKK30KKworRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0gL3d3dyIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vbGlnaHR0cGQuY29uZiIKKworUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpZ2h0dHBkLW1vZHVsZS0uKiIKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgIGxpZ2h0dHBkX2xpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0nKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpZ2h0dHBkX2xpYmRpciwgJ15tb2RfKC4qKVwuc28kJywgJ2xpZ2h0dHBkLW1vZHVsZS0lcycsICdMaWdodHRwZCBtb2R1bGUgZm9yICVzJywgZXh0cmFfZGVwZW5kcz0nJykKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjEyLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGVfMy4xMi4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjBiMjA4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjEyLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi1TVU1NQVJZID0gIlJvdGF0ZXMsIGNvbXByZXNzZXMsIHJlbW92ZXMgYW5kIG1haWxzIHN5c3RlbSBsb2cgZmlsZXMiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbG9ncm90YXRlL2xvZ3JvdGF0ZS9pc3N1ZXMiCi1MSUNFTlNFID0gIkdQTHYyIgotCi0jIFRPRE86IERvY3VtZW50IGNvcmV1dGlscyBkZXBlbmRlbmN5LiBXaHkgbm90IFJERVBFTkRTPyBXaHkgbm90IGJ1c3lib3g/Ci0KLURFUEVORFM9ImNvcmV1dGlscyBwb3B0IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotIyBXaGVuIHVwZGF0aW5nIGxvZ3JvdGF0ZSB0byBsYXRlc3QgdXBzdHJlYW0sIFNSQ19VUkkgc2hvdWxkIHBvaW50IHRvCi0jIGEgcHJvcGVyIHJlbGVhc2UgdGFyYmFsbCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sb2dyb3RhdGUvbG9ncm90YXRlL3JlbGVhc2VzCi0jIGFuZCB3ZSBoYXZlIHRvIHRha2UgdGhlIHNuYXBzaG90IGZvciBub3cgYmVjYXVzZSB0aGVyZSBpcyBubyBzdWNoCi0jIHRhcmJhbGwgYXZhaWxhYmxlIGZvciAzLjkuMS4KLQotUyA9ICIke1dPUktESVJ9LyR7QlBOfS0ke1BWfSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibG9ncm90YXRlLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgIGZpbGU6Ly9hY3QtYXMtbXYtd2hlbi1yb3RhdGUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3VwZGF0ZS10aGUtbWFudWFsLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWNoZWNrLWRpZmZlcmVudC1maWxlc3lzdGVtcy5wYXRjaCBcCi0gICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhNTYwYzU3ZmFjODdjNDViMmZjMTc0MDZjZGY3OTI4OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyZTZhNDAxY2FjOTAyNGRiMjI4ODI5N2UzYmUxYThhYjYwZTc0MDFiYThlOTEyMjUyMThhYWY0YTI3ZTgyYTA3IgotCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wgc2VsaW51eCcsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1thY2xdID0gIiwsYWNsIgotUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICIsLGxpYnNlbGludXgiCi0KLUNPTkZGSUxFU18ke1BOfSArPSAiJHtsb2NhbHN0YXRlZGlyfS9saWIvbG9ncm90YXRlLnN0YXR1cyBcCi0JCSAgICAke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5jb25mIgotCi0jIElmIFJQTV9PUFRfRkxBR1MgaXMgdW5zZXQsIGl0IGFkZHMgLWcgaXRzZWxmIHJhdGhlciB0aGFuIG9iZXlpbmcgb3VyCi0jIG9wdGltaXphdGlvbiB2YXJpYWJsZXMsIHNvIHVzZSBpdCByYXRoZXIgdGhhbiBFWFRSQV9DRkxBR1MuCi1FWFRSQV9PRU1BS0UgPSAiXAotICAgIExGUz0gXAotICAgIE9TX05BTUU9JyR7T1NfTkFNRX0nIFwKLSAgICAnQ0M9JHtDQ30nIFwKLSAgICAnUlBNX09QVF9GTEFHUz0ke0NGTEFHU30nIFwKLSAgICAnRVhUUkFfTERGTEFHUz0ke0xERkxBR1N9JyBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYWNsJywgJ1dJVEhfQUNMPXllcycsICcnLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlbGludXgnLCAnV0lUSF9TRUxJTlVYPXllcycsICcnLCBkKX0gXAotIgotCi0jIE9TX05BTUUgaW4gdGhlIG1ha2VmaWxlIGRlZmF1bHRzIHRvIGB1bmFtZSAtc2AuIFRoZSBiZWhhdmlvciBmb3IKLSMgZnJlZWJzZC9uZXRic2QgaXMgcXVlc3Rpb25hYmxlLCBzbyBsZWF2ZSBpdCBhcyBMaW51eCwgd2hpY2ggb25seSBzZXRzCi0jIElOU1RBTEw9aW5zdGFsbCBhbmQgQkFTRURJUj0vdXNyLgotT1NfTkFNRSA9ICJMaW51eCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZAotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiXAotICAgICR7QlBOfS5zZXJ2aWNlIFwKLSAgICAke0JQTn0udGltZXIgXAotIgotCi1MT0dST1RBVEVfU1lTVEVNRF9USU1FUl9CQVNJUyA/PSAiZGFpbHkiCi1MT0dST1RBVEVfU1lTVEVNRF9USU1FUl9BQ0NVUkFDWSA/PSAiMTJoIgotCi1kb19pbnN0YWxsKCl7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBQUkVGSVg9JHtEfSBNQU5ESVI9JHttYW5kaXJ9Ci0gICAgbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vbG9ncm90YXRlLmQKLSAgICBta2RpciAtcCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIKLSAgICBpbnN0YWxsIC1wIC1tIDY0NCAke1N9L2V4YW1wbGVzL2xvZ3JvdGF0ZS1kZWZhdWx0ICR7RH0ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5jb25mCi0gICAgdG91Y2ggJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2xvZ3JvdGF0ZS5zdGF0dXMKLQotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZXhhbXBsZXMvbG9ncm90YXRlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9ncm90YXRlLnNlcnZpY2UKLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZXhhbXBsZXMvbG9ncm90YXRlLnRpbWVyICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2xvZ3JvdGF0ZS50aW1lcgotICAgICAgICBzZWQgLWkgLWUgJ3MsT25DYWxlbmRhcj0uKiQsT25DYWxlbmRhcj0ke0xPR1JPVEFURV9TWVNURU1EX1RJTUVSX0JBU0lTfSxnJyAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2dyb3RhdGUudGltZXIKLSAgICAgICAgc2VkIC1pIC1lICdzLEFjY3VyYWN5U2VjPS4qJCxBY2N1cmFjeVNlYz0ke0xPR1JPVEFURV9TWVNURU1EX1RJTUVSX0FDQ1VSQUNZfSxnJyAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2dyb3RhdGUudGltZXIKLSAgICBmaQotCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkKLSAgICAgICAgaW5zdGFsbCAtcCAtbSAwNzU1ICR7U30vZXhhbXBsZXMvbG9ncm90YXRlLmNyb24gJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kYWlseS9sb2dyb3RhdGUKLSAgICBmaQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlXzMuMTMuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjEzLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTkwY2Y5MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjEzLjAuYmIKQEAgLTAsMCArMSw4NSBAQAorU1VNTUFSWSA9ICJSb3RhdGVzLCBjb21wcmVzc2VzLCByZW1vdmVzIGFuZCBtYWlscyBzeXN0ZW0gbG9nIGZpbGVzIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xvZ3JvdGF0ZS9sb2dyb3RhdGUvaXNzdWVzIgorTElDRU5TRSA9ICJHUEx2MiIKKworIyBUT0RPOiBEb2N1bWVudCBjb3JldXRpbHMgZGVwZW5kZW5jeS4gV2h5IG5vdCBSREVQRU5EUz8gV2h5IG5vdCBidXN5Ym94PworCitERVBFTkRTPSJjb3JldXRpbHMgcG9wdCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKKyMgV2hlbiB1cGRhdGluZyBsb2dyb3RhdGUgdG8gbGF0ZXN0IHVwc3RyZWFtLCBTUkNfVVJJIHNob3VsZCBwb2ludCB0bworIyBhIHByb3BlciByZWxlYXNlIHRhcmJhbGwgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbG9ncm90YXRlL2xvZ3JvdGF0ZS9yZWxlYXNlcworIyBhbmQgd2UgaGF2ZSB0byB0YWtlIHRoZSBzbmFwc2hvdCBmb3Igbm93IGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaAorIyB0YXJiYWxsIGF2YWlsYWJsZSBmb3IgMy45LjEuCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0tJHtQVn0iCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxvZ3JvdGF0ZS0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgICBmaWxlOi8vYWN0LWFzLW12LXdoZW4tcm90YXRlLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly91cGRhdGUtdGhlLW1hbnVhbC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1jaGVjay1kaWZmZXJlbnQtZmlsZXN5c3RlbXMucGF0Y2ggXAorICAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzhlZjI0ZDZmZGRjYzRkZjhlNDEyZGQ3NWM1NTFiNGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzIyMmNhMDMyZjk5YmU4ZDdhNGE4YzZhZDY5ZjNkY2M0OWI5NTExYmZlMzg0YmQ1YTI3MWViY2Q5YmQzZTUyYyIKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsIHNlbGludXgnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICIsLGFjbCIKK1BBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLCxsaWJzZWxpbnV4IgorCitDT05GRklMRVNfJHtQTn0gKz0gIiR7bG9jYWxzdGF0ZWRpcn0vbGliL2xvZ3JvdGF0ZS5zdGF0dXMgXAorCQkgICAgJHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuY29uZiIKKworIyBJZiBSUE1fT1BUX0ZMQUdTIGlzIHVuc2V0LCBpdCBhZGRzIC1nIGl0c2VsZiByYXRoZXIgdGhhbiBvYmV5aW5nIG91cgorIyBvcHRpbWl6YXRpb24gdmFyaWFibGVzLCBzbyB1c2UgaXQgcmF0aGVyIHRoYW4gRVhUUkFfQ0ZMQUdTLgorRVhUUkFfT0VNQUtFID0gIlwKKyAgICBMRlM9IFwKKyAgICBPU19OQU1FPScke09TX05BTUV9JyBcCisgICAgJ0NDPSR7Q0N9JyBcCisgICAgJ1JQTV9PUFRfRkxBR1M9JHtDRkxBR1N9JyBcCisgICAgJ0VYVFJBX0xERkxBR1M9JHtMREZMQUdTfScgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2FjbCcsICdXSVRIX0FDTD15ZXMnLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZWxpbnV4JywgJ1dJVEhfU0VMSU5VWD15ZXMnLCAnJywgZCl9IFwKKyIKKworIyBPU19OQU1FIGluIHRoZSBtYWtlZmlsZSBkZWZhdWx0cyB0byBgdW5hbWUgLXNgLiBUaGUgYmVoYXZpb3IgZm9yCisjIGZyZWVic2QvbmV0YnNkIGlzIHF1ZXN0aW9uYWJsZSwgc28gbGVhdmUgaXQgYXMgTGludXgsIHdoaWNoIG9ubHkgc2V0cworIyBJTlNUQUxMPWluc3RhbGwgYW5kIEJBU0VESVI9L3Vzci4KK09TX05BTUUgPSAiTGludXgiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIlwKKyAgICAke0JQTn0uc2VydmljZSBcCisgICAgJHtCUE59LnRpbWVyIFwKKyIKKworTE9HUk9UQVRFX1NZU1RFTURfVElNRVJfQkFTSVMgPz0gImRhaWx5IgorTE9HUk9UQVRFX1NZU1RFTURfVElNRVJfQUNDVVJBQ1kgPz0gIjEyaCIKKworZG9faW5zdGFsbCgpeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gUFJFRklYPSR7RH0gTUFORElSPSR7bWFuZGlyfQorICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5kCisgICAgbWtkaXIgLXAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliCisgICAgaW5zdGFsbCAtcCAtbSA2NDQgJHtTfS9leGFtcGxlcy9sb2dyb3RhdGUtZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuY29uZgorICAgIHRvdWNoICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9sb2dyb3RhdGUuc3RhdHVzCisKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2V4YW1wbGVzL2xvZ3JvdGF0ZS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2xvZ3JvdGF0ZS5zZXJ2aWNlCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2V4YW1wbGVzL2xvZ3JvdGF0ZS50aW1lciAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2dyb3RhdGUudGltZXIKKyAgICAgICAgc2VkIC1pIC1lICdzLE9uQ2FsZW5kYXI9LiokLE9uQ2FsZW5kYXI9JHtMT0dST1RBVEVfU1lTVEVNRF9USU1FUl9CQVNJU30sZycgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9ncm90YXRlLnRpbWVyCisgICAgICAgIHNlZCAtaSAtZSAncyxBY2N1cmFjeVNlYz0uKiQsQWNjdXJhY3lTZWM9JHtMT0dST1RBVEVfU1lTVEVNRF9USU1FUl9BQ0NVUkFDWX0sZycgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9ncm90YXRlLnRpbWVyCisgICAgZmkKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmRhaWx5CisgICAgICAgIGluc3RhbGwgLXAgLW0gMDc1NSAke1N9L2V4YW1wbGVzL2xvZ3JvdGF0ZS5jcm9uICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkvbG9ncm90YXRlCisgICAgZmkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYl80LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2JfNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzg1NjEwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYl80LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMzUgKzAsMCBAQAotU1VNTUFSWSA9ICJMU0Igc3VwcG9ydCBmb3IgT3BlbkVtYmVkZGVkIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotSE9NRVBBR0UgPSAiaHR0cDovL3ByZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9sc2IiCi1MSUNFTlNFID0gIkdQTHYyKyIKLVBSID0gInIyIgotCi1MU0JfQ09SRSA9ICJsc2ItY29yZS0ke1RBUkdFVF9BUkNIfSIKLUxTQl9DT1JFX3g4NiA9ICJsc2ItY29yZS1pYTMyIgotTFNCX0NPUkVfeDg2LTY0ID0gImxzYi1jb3JlLWFtZDY0IgotUlBST1ZJREVTXyR7UE59ICs9ICIke0xTQl9DT1JFfSIKLQotIyBsc2JfcmVsZWFzZSBuZWVkcyBnZXRvcHQsIGxzYmluaXRzY3JpcHRzCi1SREVQRU5EU18ke1BOfSArPSAiJHtWSVJUVUFMLVJVTlRJTUVfZ2V0b3B0fSBsc2Jpbml0c2NyaXB0cyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT0xMmRhNTQ0YjFhM2E1YTE3OTVhMjExNjBiNDk0NzFjZiIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC9sc2IvbHNiX3JlbGVhc2UvMS40L2xzYi1yZWxlYXNlLTEuNC50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtbHNiX3JlbGVhc2UtdG8td29yay13aXRoLWJ1c3lib3gtaGVhZC1hbmQtZmluZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9pbml0LWZ1bmN0aW9ucyBcCi0gICAgICAgICAgIGZpbGU6Ly9sc2Jfa2lsbHByb2MgXAotICAgICAgICAgICBmaWxlOi8vbHNiX2xvZ19tZXNzYWdlIFwKLSAgICAgICAgICAgZmlsZTovL2xzYl9waWRvZnByb2MgXAotICAgICAgICAgICBmaWxlOi8vbHNiX3N0YXJ0X2RhZW1vbiBcCi0gICAgICAgICAgICIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzA1MzdlZjVhMDFlMGNhOTRiN2I4ZWI2YTM2YmIxZTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTkzMjEyODhmOGQ2MmU3YTFkNDg1YjdjNmJkY2NmMDY3NjZmYjhjYTYwM2M2MTk1ODA2ZTQ0NTdmZGYxNzE3MiIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbHNiL2ZpbGVzL2xzYl9yZWxlYXNlLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9sc2JfcmVsZWFzZS8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgotCi1TID0gIiR7V09SS0RJUn0vbHNiLXJlbGVhc2UtMS40IgotCi1DTEVBTkJST0tFTiA9ICIxIgotCi1kb19pbnN0YWxsKCkgewotCW9lX3J1bm1ha2UgaW5zdGFsbCBwcmVmaXg9JHtEfSR7YmFzZV9wcmVmaXh9IG1hbmRpcj0ke0R9JHtkYXRhZGlyfS9tYW4vIERFU1RESVI9JHtEfQotCi0JIyB0aGVzZSB0d28gZGlycyBhcmUgbmVlZGVkIGJ5IHBhY2thZ2UgbHNiLWRpc3QtY2hlY2tlcgotCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L29wdAotCW1rZGlyIC1wICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L29wdAotCi0JbWtkaXIgLXAgJHtEfSR7YmFzZV9saWJkaXJ9Ci0JbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZAotCXByaW50ZiAiTFNCX1ZFUlNJT049XCJjb3JlLTQuMS1ub2FyY2g6IiA+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCi0KLQlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTU4NiIgXSB8fCBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTY4NiIgXTsgdGhlbgotCQlwcmludGYgImNvcmUtNC4xLWlhMzIiID4+ICAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQotCWVsc2UKLQkJcHJpbnRmICJjb3JlLTQuMS0ke1RBUkdFVF9BUkNIfSIgPj4gICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCi0JZmkKLQllY2hvICJcIiIgPj4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKLQllY2hvICJESVNUUklCX0lEPSR7RElTVFJPfSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKLQllY2hvICJESVNUUklCX1JFTEVBU0U9JHtESVNUUk9fVkVSU0lPTn0iID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCi0JaWYgWyAtbiAiJHtESVNUUk9fQ09ERU5BTUV9IiBdOyB0aGVuCi0JCWVjaG8gIkRJU1RSSUJfQ09ERU5BTUU9JHtESVNUUk9fQ09ERU5BTUV9IiA+PiAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQotCWZpCi0JZWNobyAiRElTVFJJQl9ERVNDUklQVElPTj1cIiR7RElTVFJPX05BTUV9ICR7RElTVFJPX1ZFUlNJT059XCIiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCi0KLQlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTU4NiIgXSB8fCBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTY4NiIgXTsgdGhlbgotCQlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tbm9hcmNoCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1ub2FyY2gKLQkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9ncmFwaGljcy0ke1BWfS1pYTMyCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1pYTMyCi0JZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiBdOyB0aGVuCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tbm9hcmNoCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tYW1kNjQKLQkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9kZXNrdG9wLSR7UFZ9LWFtZDY0Ci0JZmkKLQlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgotCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LW5vYXJjaAotCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LXBwYzMyCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1wcGMzMgotCWVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgotCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LW5vYXJjaAotCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LXBwYzY0Ci0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1wcGM2NAotCWZpCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vY29yZS1sc2IKLSAgICAgICBmb3IgaSBpbiBsc2Jfa2lsbHByb2MgbHNiX2xvZ19tZXNzYWdlIGxzYl9waWRvZnByb2MgbHNiX3N0YXJ0X2RhZW1vbgotICAgICAgIGRvCi0gICAgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9LyRpICR7RH0ke3N5c2NvbmZkaXJ9L2NvcmUtbHNiCi0gICAgICAgZG9uZQotCi0gICAgICAgaW5zdGFsbCAtZCAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9sc2IKLSAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0LWZ1bmN0aW9ucyAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9sc2IKLQotICAgICAgICMgY3JlYXRlIGxpbmtzIGZvciBMU0IgdGVzdAotICAgICAgIGlmIFsgLWUgJHtzYmluZGlyfS9jaGtjb25maWcgXTsgdGhlbgotICAgICAgICAgICAgICAgaWYgWyAiJHtub25hcmNoX2Jhc2VfbGliZGlyfSIgIT0gIiR7bm9uYXJjaF9saWJkaXJ9IiBdIDsgdGhlbgotICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke25vbmFyY2hfbGliZGlyfS9sc2IKLSAgICAgICAgICAgICAgIGZpCi0gICAgICAgICAgICAgICBsbiAtc2YgJHtzYmluZGlyfS9jaGtjb25maWcgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2xzYi9pbnN0YWxsX2luaXRkCi0gICAgICAgICAgICAgICBsbiAtc2YgJHtzYmluZGlyfS9jaGtjb25maWcgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2xzYi9yZW1vdmVfaW5pdGQKLSAgICAgICBmaQotCi0gICAgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgXTsgdGhlbgotICAgICAgICAgICAgICAgaWYgWyAiJHtiYXNlX2xpYmRpcn0iICE9ICIke2Jhc2VfcHJlZml4fS9saWI2NCIgXTsgdGhlbgotICAgICAgICAgICAgICAgICAgIGxuciAke0R9JHtiYXNlX2xpYmRpcn0gJHtEfSR7YmFzZV9wcmVmaXh9L2xpYjY0Ci0gICAgICAgICAgICAgICBmaQotCSAgICAgICBjZCAke0R9JHtiYXNlX2xpYmRpcn0KLSAgICAgICAgICAgICAgIGxuIC1zZiBsZC1saW51eC14ODYtNjQuc28uMiBsZC1sc2IteDg2LTY0LnNvLjIKLSAgICAgICAgICAgICAgIGxuIC1zZiBsZC1saW51eC14ODYtNjQuc28uMiBsZC1sc2IteDg2LTY0LnNvLjMKLSAgICAgICBmaQotICAgICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNTg2IiBdIHx8IFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNjg2IiBdOyB0aGVuCi0JICAgICAgIGNkICR7RH0ke2Jhc2VfbGliZGlyfQotICAgICAgICAgICAgICAgbG4gLXNmIGxkLWxpbnV4LnNvLjIgbGQtbHNiLnNvLjIKLSAgICAgICAgICAgICAgIGxuIC1zZiBsZC1saW51eC5zby4yIGxkLWxzYi5zby4zCi0gICAgICAgZmkKLQotICAgICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07IHRoZW4KLSAgICAgICAgICAgICAgIGlmIFsgIiR7YmFzZV9saWJkaXJ9IiAhPSAiJHtiYXNlX3ByZWZpeH0vbGliNjQiIF07IHRoZW4KLSAgICAgICAgICAgICAgICAgICBsbnIgJHtEfSR7YmFzZV9saWJkaXJ9ICR7RH0ke2Jhc2VfcHJlZml4fS9saWI2NAotICAgICAgICAgICAgICAgZmkKLSAgICAgICAgICAgICAgIGNkICR7RH0ke2Jhc2VfbGliZGlyfQotICAgICAgICAgICAgICAgbG4gLXNmIGxkNjQuc28uMSBsZC1sc2ItcHBjNjQuc28uMgotICAgICAgICAgICAgICAgbG4gLXNmIGxkNjQuc28uMSBsZC1sc2ItcHBjNjQuc28uMwotICAgICAgIGZpCi0gICAgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KLQkgICAgICAgY2QgJHtEfSR7YmFzZV9saWJkaXJ9Ci0gICAgICAgICAgICAgICBsbiAtc2YgbGQuc28uMSBsZC1sc2ItcHBjMzIuc28uMgotICAgICAgICAgICAgICAgbG4gLXNmIGxkLnNvLjEgbGQtbHNiLXBwYzMyLnNvLjMKLSAgICAgICBmaQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtAJyR7YmFzZV9wcmVmaXh9L2xpYjY0JyBpZiBkLmdldFZhcignVEFSR0VUX0FSQ0gnKSA9PSAoJ3g4Nl82NCcgb3IgJ3Bvd2VycGM2NCcpIGFuZCAnJHtiYXNlX2xpYmRpcn0nICE9ICcke2Jhc2VfcHJlZml4fS9saWI2NCcgZWxzZSAnJ30gXAotICAgICAgICAgICAgICAgICR7YmFzZV9saWJkaXJ9IFwKLSAgICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS9sc2IgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbHNiLyogXAotICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYl81LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2JfNS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmNDgxMmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2JfNS4wLmJiCkBAIC0wLDAgKzEsMTM0IEBACitTVU1NQVJZID0gIkxTQiBzdXBwb3J0IGZvciBPcGVuRW1iZWRkZWQiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitIT01FUEFHRSA9ICJodHRwOi8vcHJkb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L2xzYiIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorCitMU0JfQ09SRSA9ICJsc2ItY29yZS0ke1RBUkdFVF9BUkNIfSIKK0xTQl9DT1JFX3g4NiA9ICJsc2ItY29yZS1pYTMyIgorTFNCX0NPUkVfeDg2LTY0ID0gImxzYi1jb3JlLWFtZDY0IgorUlBST1ZJREVTXyR7UE59ICs9ICIke0xTQl9DT1JFfSIKKworIyBsc2JfcmVsZWFzZSBuZWVkcyBnZXRvcHQsIGxzYmluaXRzY3JpcHRzCitSREVQRU5EU18ke1BOfSArPSAiJHtWSVJUVUFMLVJVTlRJTUVfZ2V0b3B0fSBsc2Jpbml0c2NyaXB0cyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT0xMmRhNTQ0YjFhM2E1YTE3OTVhMjExNjBiNDk0NzFjZiIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC9sc2IvbHNiX3JlbGVhc2UvMS40L2xzYi1yZWxlYXNlLTEuNC50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtbHNiX3JlbGVhc2UtdG8td29yay13aXRoLWJ1c3lib3gtaGVhZC1hbmQtZmluZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0LWZ1bmN0aW9ucyBcCisgICAgICAgICAgIGZpbGU6Ly9sc2Jfa2lsbHByb2MgXAorICAgICAgICAgICBmaWxlOi8vbHNiX2xvZ19tZXNzYWdlIFwKKyAgICAgICAgICAgZmlsZTovL2xzYl9waWRvZnByb2MgXAorICAgICAgICAgICBmaWxlOi8vbHNiX3N0YXJ0X2RhZW1vbiBcCisgICAgICAgICAgICIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzA1MzdlZjVhMDFlMGNhOTRiN2I4ZWI2YTM2YmIxZTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTkzMjEyODhmOGQ2MmU3YTFkNDg1YjdjNmJkY2NmMDY3NjZmYjhjYTYwM2M2MTk1ODA2ZTQ0NTdmZGYxNzE3MiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbHNiL2ZpbGVzL2xzYl9yZWxlYXNlLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9sc2JfcmVsZWFzZS8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgorCitTID0gIiR7V09SS0RJUn0vbHNiLXJlbGVhc2UtMS40IgorCitDTEVBTkJST0tFTiA9ICIxIgorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgaW5zdGFsbCBwcmVmaXg9JHtEfSR7YmFzZV9wcmVmaXh9IG1hbmRpcj0ke0R9JHtkYXRhZGlyfS9tYW4vIERFU1RESVI9JHtEfQorCisJIyB0aGVzZSB0d28gZGlycyBhcmUgbmVlZGVkIGJ5IHBhY2thZ2UgbHNiLWRpc3QtY2hlY2tlcgorCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L29wdAorCW1rZGlyIC1wICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L29wdAorCisJbWtkaXIgLXAgJHtEfSR7YmFzZV9saWJkaXJ9CisJbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZAorCXByaW50ZiAiTFNCX1ZFUlNJT049XCJjb3JlLTUuMC1ub2FyY2g6IiA+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCisKKwlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTU4NiIgXSB8fCBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTY4NiIgXTsgdGhlbgorCQlwcmludGYgImNvcmUtNS4wLWlhMzIiID4+ICAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQorCWVsc2UKKwkJcHJpbnRmICJjb3JlLTUuMC0ke1RBUkdFVF9BUkNIfSIgPj4gICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCisJZmkKKwllY2hvICJcIiIgPj4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKKwllY2hvICJESVNUUklCX0lEPSR7RElTVFJPfSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKKwllY2hvICJESVNUUklCX1JFTEVBU0U9JHtESVNUUk9fVkVSU0lPTn0iID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCisJaWYgWyAtbiAiJHtESVNUUk9fQ09ERU5BTUV9IiBdOyB0aGVuCisJCWVjaG8gIkRJU1RSSUJfQ09ERU5BTUU9JHtESVNUUk9fQ09ERU5BTUV9IiA+PiAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQorCWZpCisJZWNobyAiRElTVFJJQl9ERVNDUklQVElPTj1cIiR7RElTVFJPX05BTUV9ICR7RElTVFJPX1ZFUlNJT059XCIiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCisKKwlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTU4NiIgXSB8fCBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTY4NiIgXTsgdGhlbgorCQlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kCisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tbm9hcmNoCisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1ub2FyY2gKKwkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9ncmFwaGljcy0ke1BWfS1pYTMyCisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1pYTMyCisJZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiBdOyB0aGVuCisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tbm9hcmNoCisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tYW1kNjQKKwkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9kZXNrdG9wLSR7UFZ9LWFtZDY0CisJZmkKKwlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgorCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LW5vYXJjaAorCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LXBwYzMyCisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1wcGMzMgorCWVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgorCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LW5vYXJjaAorCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LXBwYzY0CisJCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZGVza3RvcC0ke1BWfS1wcGM2NAorCWZpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vY29yZS1sc2IKKyAgICAgICBmb3IgaSBpbiBsc2Jfa2lsbHByb2MgbHNiX2xvZ19tZXNzYWdlIGxzYl9waWRvZnByb2MgbHNiX3N0YXJ0X2RhZW1vbgorICAgICAgIGRvCisgICAgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9LyRpICR7RH0ke3N5c2NvbmZkaXJ9L2NvcmUtbHNiCisgICAgICAgZG9uZQorCisgICAgICAgaW5zdGFsbCAtZCAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9sc2IKKyAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0LWZ1bmN0aW9ucyAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9sc2IKKworICAgICAgICMgY3JlYXRlIGxpbmtzIGZvciBMU0IgdGVzdAorICAgICAgIGlmIFsgLWUgJHtzYmluZGlyfS9jaGtjb25maWcgXTsgdGhlbgorICAgICAgICAgICAgICAgaWYgWyAiJHtub25hcmNoX2Jhc2VfbGliZGlyfSIgIT0gIiR7bm9uYXJjaF9saWJkaXJ9IiBdIDsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke25vbmFyY2hfbGliZGlyfS9sc2IKKyAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICBsbiAtc2YgJHtzYmluZGlyfS9jaGtjb25maWcgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2xzYi9pbnN0YWxsX2luaXRkCisgICAgICAgICAgICAgICBsbiAtc2YgJHtzYmluZGlyfS9jaGtjb25maWcgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2xzYi9yZW1vdmVfaW5pdGQKKyAgICAgICBmaQorCisgICAgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgXTsgdGhlbgorICAgICAgICAgICAgICAgaWYgWyAiJHtiYXNlX2xpYmRpcn0iICE9ICIke2Jhc2VfcHJlZml4fS9saWI2NCIgXTsgdGhlbgorICAgICAgICAgICAgICAgICAgIGxuciAke0R9JHtiYXNlX2xpYmRpcn0gJHtEfSR7YmFzZV9wcmVmaXh9L2xpYjY0CisgICAgICAgICAgICAgICBmaQorCSAgICAgICBjZCAke0R9JHtiYXNlX2xpYmRpcn0KKyAgICAgICAgICAgICAgIGxuIC1zZiBsZC1saW51eC14ODYtNjQuc28uMiBsZC1sc2IteDg2LTY0LnNvLjIKKyAgICAgICAgICAgICAgIGxuIC1zZiBsZC1saW51eC14ODYtNjQuc28uMiBsZC1sc2IteDg2LTY0LnNvLjMKKyAgICAgICBmaQorICAgICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNTg2IiBdIHx8IFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNjg2IiBdOyB0aGVuCisJICAgICAgIGNkICR7RH0ke2Jhc2VfbGliZGlyfQorICAgICAgICAgICAgICAgbG4gLXNmIGxkLWxpbnV4LnNvLjIgbGQtbHNiLnNvLjIKKyAgICAgICAgICAgICAgIGxuIC1zZiBsZC1saW51eC5zby4yIGxkLWxzYi5zby4zCisgICAgICAgZmkKKworICAgICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07IHRoZW4KKyAgICAgICAgICAgICAgIGlmIFsgIiR7YmFzZV9saWJkaXJ9IiAhPSAiJHtiYXNlX3ByZWZpeH0vbGliNjQiIF07IHRoZW4KKyAgICAgICAgICAgICAgICAgICBsbnIgJHtEfSR7YmFzZV9saWJkaXJ9ICR7RH0ke2Jhc2VfcHJlZml4fS9saWI2NAorICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgIGNkICR7RH0ke2Jhc2VfbGliZGlyfQorICAgICAgICAgICAgICAgbG4gLXNmIGxkNjQuc28uMSBsZC1sc2ItcHBjNjQuc28uMgorICAgICAgICAgICAgICAgbG4gLXNmIGxkNjQuc28uMSBsZC1sc2ItcHBjNjQuc28uMworICAgICAgIGZpCisgICAgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KKwkgICAgICAgY2QgJHtEfSR7YmFzZV9saWJkaXJ9CisgICAgICAgICAgICAgICBsbiAtc2YgbGQuc28uMSBsZC1sc2ItcHBjMzIuc28uMgorICAgICAgICAgICAgICAgbG4gLXNmIGxkLnNvLjEgbGQtbHNiLXBwYzMyLnNvLjMKKyAgICAgICBmaQorfQorCitGSUxFU18ke1BOfSArPSAiJHtAJyR7YmFzZV9wcmVmaXh9L2xpYjY0JyBpZiBkLmdldFZhcignVEFSR0VUX0FSQ0gnKSA9PSAoJ3g4Nl82NCcgb3IgJ3Bvd2VycGM2NCcpIGFuZCAnJHtiYXNlX2xpYmRpcn0nICE9ICcke2Jhc2VfcHJlZml4fS9saWI2NCcgZWxzZSAnJ30gXAorICAgICAgICAgICAgICAgICR7YmFzZV9saWJkaXJ9IFwKKyAgICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS9sc2IgXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbHNiLyogXAorICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzLzAwMDEtZnVuY3Rpb25zLWF2b2lkLWV4aXQtMS13aGljaC1jYXVzZXMtaW5pdC1zY3JpcHRzLXRvLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzLzAwMDEtZnVuY3Rpb25zLWF2b2lkLWV4aXQtMS13aGljaC1jYXVzZXMtaW5pdC1zY3JpcHRzLXRvLS5wYXRjaAppbmRleCAxN2M5MDAyLi5jMDA3NjQ1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0cy8wMDAxLWZ1bmN0aW9ucy1hdm9pZC1leGl0LTEtd2hpY2gtY2F1c2VzLWluaXQtc2NyaXB0cy10by0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHMvMDAwMS1mdW5jdGlvbnMtYXZvaWQtZXhpdC0xLXdoaWNoLWNhdXNlcy1pbml0LXNjcmlwdHMtdG8tLnBhdGNoCkBAIC03LDE4ICs3LDE1IEBACiAgcmMuZC9pbml0LmQvZnVuY3Rpb25zIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvcmMuZC9pbml0LmQvZnVuY3Rpb25zIGIvcmMuZC9pbml0LmQvZnVuY3Rpb25zCi1pbmRleCA2ODUwMDQ2Li4xMTIyM2Y3IDEwMDY0NAotLS0tIGEvcmMuZC9pbml0LmQvZnVuY3Rpb25zCi0rKysgYi9yYy5kL2luaXQuZC9mdW5jdGlvbnMKLUBAIC01OTcsNiArNTk3LDYgQEAgaWYgWyAiJF91c2Vfc3lzdGVtY3RsIiA9ICIxIiBdOyB0aGVuCi0gCWZpCitJbmRleDogaW5pdHNjcmlwdHMtOS43Mi9yYy5kL2luaXQuZC9mdW5jdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBpbml0c2NyaXB0cy05LjcyLm9yaWcvcmMuZC9pbml0LmQvZnVuY3Rpb25zCisrKysgaW5pdHNjcmlwdHMtOS43Mi9yYy5kL2luaXQuZC9mdW5jdGlvbnMKK0BAIC02ODYsNiArNjg2LDYgQEAgaWYgWyAiJF91c2Vfc3lzdGVtY3RsIiA9ICIxIiBdOyB0aGVuCisgICAgIGZpCiAgZmkKICAKIC1zdHJzdHIgIiQoY2F0IC9wcm9jL2NtZGxpbmUpIiAicmMuZGVidWciICYmIHNldCAteAogK3N0cnN0ciAiJChjYXQgL3Byb2MvY21kbGluZSkiICJyYy5kZWJ1ZyIgJiYgc2V0IC14IHx8IHRydWUKICByZXR1cm4gMAotCi0tLSAKLTIuMS4wCi0KKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzL2Z1bmN0aW9ucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzL2Z1bmN0aW9ucy5wYXRjaAppbmRleCA5YzU4ZDkwLi5lOTEyZGFhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0cy9mdW5jdGlvbnMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHMvZnVuY3Rpb25zLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA1NzQ2OGM1ZjRlMzY0YmRhZDU1NjYwNGRjYTA5MDQ2ZTFhZmNhOTI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlNDZiMDU2MjgyYzg0MjBmMDk2ZDVjMzRkNzhjMDBmODE2Nzg4Nzg0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogRmFuIFhpbiA8ZmFuLnhpbkBqcC5mdWppdHN1LmNvbT4KIERhdGU6IE1vbiwgNSBKdW4gMjAxNyAxNjoyNjo0NyArMDkwMAotU3ViamVjdDogW1BBVENIXSBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCiAKIFNpZ25lZC1vZmYtYnk6IFhpYW9mZW5nIFlhbiA8eGlhb2ZlbmcueWFuQHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+CkBAIC0xMCwyMyArMTAsMjQgQEAKIAogU2lnbmVkLW9mZi1ieTogRmFuIFhpbiA8ZmFuLnhpbkBqcC5mdWppdHN1LmNvbT4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZworCiAtLS0KLSBpbml0c2NyaXB0cy05LjcyL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucyB8IDIgKy0KKyByYy5kL2luaXQuZC9mdW5jdGlvbnMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9pbml0c2NyaXB0cy05LjcyL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucyBiL2luaXRzY3JpcHRzLTkuNzIvcmMuZC9pbml0LmQvZnVuY3Rpb25zCi1pbmRleCAwZjYyN2YxLi5hNmFhMDkyIDEwMDY0NAotLS0tIGEvaW5pdHNjcmlwdHMtOS43Mi9yYy5kL2luaXQuZC9mdW5jdGlvbnMKLSsrKyBiL2luaXRzY3JpcHRzLTkuNzIvcmMuZC9pbml0LmQvZnVuY3Rpb25zCitkaWZmIC0tZ2l0IGEvcmMuZC9pbml0LmQvZnVuY3Rpb25zIGIvcmMuZC9pbml0LmQvZnVuY3Rpb25zCitpbmRleCAyZTNkYTk2NC4uMWEyMDRkZWMgMTAwNjQ0CistLS0gYS9yYy5kL2luaXQuZC9mdW5jdGlvbnMKKysrKyBiL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucwogQEAgLTU5LDcgKzU5LDcgQEAgc3lzdGVtY3RsX3JlZGlyZWN0ICgpIHsKICBbIC16ICIke0NPTFVNTlM6LX0iIF0gJiYgQ09MVU1OUz04MAogIAogIGlmIFsgLXogIiR7Q09OU09MRVRZUEU6LX0iIF07IHRoZW4KLS0gICAgaWYgWyAtYyAiL2Rldi9zdGRlcnIiIC1hIC1yICIvZGV2L3N0ZGVyciIgXTsgdGhlbgotKyAgICBpZiBbIC1jICIvZGV2L3N0ZGVyciIgLWEgLXIgIi9kZXYvc3RkZXJyIiAtYSAtZSAvc2Jpbi9jb25zb2xldHlwZSBdOyB0aGVuCistICAgIGlmIFsgLWMgIi9kZXYvc3RkZXJyIiBdICYmIFsgLXIgIi9kZXYvc3RkZXJyIiBdOyB0aGVuCisrICAgIGlmIFsgLWMgIi9kZXYvc3RkZXJyIiBdICYmIFsgLXIgIi9kZXYvc3RkZXJyIiBdICYmIFsgLWUgL3NiaW4vY29uc29sZXR5cGUgXTsgdGhlbgogICAgICAgICAgQ09OU09MRVRZUEU9IiQoL3NiaW4vY29uc29sZXR5cGUgPCAvZGV2L3N0ZGVyciAyPi9kZXYvbnVsbCkiCiAgICAgIGVsc2UKICAgICAgICAgIENPTlNPTEVUWVBFPSJzZXJpYWwiCiAtLSAKLTEuOS4xCisyLjE1LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHNfOS43Mi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzXzkuNzIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkNzRhNmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHNfOS43Mi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVNVTU1BUlkgPSAiU3lzViBpbml0IHNjcmlwdHMgd2hpY2ggYXJlIG9ubHkgdXNlZCBpbiBhbiBMU0IgaW1hZ2UiCi1IT01FUEFHRSA9ICJodHRwczovL3dpa2kuZGViaWFuLm9yZy9MU0JJbml0U2NyaXB0cyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1ERVBFTkRTID0gInBvcHQgZ2xpYi0yLjAiCi0KLVJQUk9WSURFU18ke1BOfSArPSAiaW5pdGQtZnVuY3Rpb25zIgotUkRFUEVORFNfJHtQTn0gKz0gInV0aWwtbGludXgiCi1SQ09ORkxJQ1RTXyR7UE59ID0gImluaXRzY3JpcHRzLWZ1bmN0aW9ucyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWJmNGU4YjQ5NzgwYWIxODdkNTFiZDI2YWFhMDIyYzYiCi0KLVM9IiR7V09SS0RJUn0vaW5pdHNjcmlwdHMtJHtQVn0iCi1TUkNfVVJJID0gImh0dHA6Ly9wa2dzLmZlZG9yYXByb2plY3Qub3JnL3JlcG8vcGtncy9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0ke1BWfS50YXIuZ3ovc2hhNTEyL2I2ZWQzOGY5NTc2ZTkyMjdjMmVjZjA0N2UyZDYwZTFlODcyZjQwZDUxZDEzODYxYjBjOTFkZGRiMjgyZjEwZjdlNmI3OTcwNmE0ZDE0MzVkN2E1N2ExNGEwYjczYTFiNzE1NDFjZmU0NGMwMGU4ZTAzZWY5NmIwOGRlMTllYzMyL2luaXRzY3JpcHRzLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9mdW5jdGlvbnMucGF0Y2g7c3RyaXBsZXZlbD0yIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZnVuY3Rpb25zLWF2b2lkLWV4aXQtMS13aGljaC1jYXVzZXMtaW5pdC1zY3JpcHRzLXRvLS5wYXRjaCBcCi0gICAgICAgICAgIiAKLQotU1JDX1VSSVttZDVzdW1dID0gImQ2Yzc5OGY0MGRjZWIxMTdlMTIxMjZkOTRjYjI1YTlhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE3OTM2NzdiZGQxZjdlZTRjYjAwODc4Y2U0MzM0NjE5NjM3NGY4NDhhNGM4ZTQ1NTllMDg2MDQwZmM3NDg3ZGIiCi0KLSMgU2luY2Ugd2UgYXJlIG9ubHkgdGFraW5nIHRoZSBwYXRjaGVkIHZlcnNpb24gb2YgZnVuY3Rpb25zLCBubyBuZWVkIHRvCi0jIGNvbmZpZ3VyZSBvciBjb21waWxlIGFueXRoaW5nIHNvIGRvIG5vdCBleGVjdXRlIHRoZXNlCi1kb19jb25maWd1cmVbbm9leGVjXSA9ICIxIiAKLWRvX2NvbXBpbGVbbm9leGVjXSA9ICIxIiAKLQotZG9faW5zdGFsbCgpewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLwotCWluc3RhbGwgLW0gMDY0NCAke1N9L3JjLmQvaW5pdC5kL2Z1bmN0aW9ucyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvZnVuY3Rpb25zCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0c185Ljc5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHNfOS43OS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmVkZWVkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHNfOS43OS5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIlN5c1YgaW5pdCBzY3JpcHRzIHdoaWNoIGFyZSBvbmx5IHVzZWQgaW4gYW4gTFNCIGltYWdlIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmRlYmlhbi5vcmcvTFNCSW5pdFNjcmlwdHMiCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYyIgorREVQRU5EUyA9ICJwb3B0IGdsaWItMi4wIgorCitSUFJPVklERVNfJHtQTn0gKz0gImluaXRkLWZ1bmN0aW9ucyIKK1JERVBFTkRTXyR7UE59ICs9ICJ1dGlsLWxpbnV4IgorUkNPTkZMSUNUU18ke1BOfSA9ICJpbml0c2NyaXB0cy1mdW5jdGlvbnMiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWViZjRlOGI0OTc4MGFiMTg3ZDUxYmQyNmFhYTAyMmM2IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ZlZG9yYS1zeXN2L2luaXRzY3JpcHRzIFwKKyAgICAgICAgICAgZmlsZTovL2Z1bmN0aW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZ1bmN0aW9ucy1hdm9pZC1leGl0LTEtd2hpY2gtY2F1c2VzLWluaXQtc2NyaXB0cy10by0ucGF0Y2ggXAorICAgICAgICAgICIgCitTUkNSRVYgPSAiYTUxYzFiNGY3ZGNmNTViNTY4YjJlZTRjMmIxODA3ODg0OTk0MzQ2OSIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIl4oP1A8cHZlcj5cZCsoXC5cZCspKykiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkNmM3OThmNDBkY2ViMTE3ZTEyMTI2ZDk0Y2IyNWE5YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxNzkzNjc3YmRkMWY3ZWU0Y2IwMDg3OGNlNDMzNDYxOTYzNzRmODQ4YTRjOGU0NTU5ZTA4NjA0MGZjNzQ4N2RiIgorCisjIFNpbmNlIHdlIGFyZSBvbmx5IHRha2luZyB0aGUgcGF0Y2hlZCB2ZXJzaW9uIG9mIGZ1bmN0aW9ucywgbm8gbmVlZCB0bworIyBjb25maWd1cmUgb3IgY29tcGlsZSBhbnl0aGluZyBzbyBkbyBub3QgZXhlY3V0ZSB0aGVzZQorZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIgCitkb19jb21waWxlW25vZXhlY10gPSAiMSIgCisKK2RvX2luc3RhbGwoKXsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9yYy5kL2luaXQuZC9mdW5jdGlvbnMgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2Z1bmN0aW9ucworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9MU0JfVGVzdC5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3QvTFNCX1Rlc3Quc2gKaW5kZXggMGViMjc5My4uMDczZTI0NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9MU0JfVGVzdC5zaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L0xTQl9UZXN0LnNoCkBAIC02MCw3ICs2MCw3IEBACiAKIFBBQ0tBR0VTX0RJUj0iL3Zhci9vcHQvbHNiL3Rlc3QvbWFuYWdlci9wYWNrYWdlcy9mdHAubGludXhmb3VuZGF0aW9uLm9yZy9wdWIvbHNiIgogCi1CQVNFX1BBQ0tBR0VTX0RJUj0iJHtQQUNLQUdFU19ESVJ9L2Jhc2UvJHtMU0JfUkVMRUFTRX0vYmluYXJ5IgorQkFTRV9QQUNLQUdFU19ESVI9IiR7UEFDS0FHRVNfRElSfS9iYXNlL3JlbGVhc2VkLWFsbC9iaW5hcnkiCiBSVU5USU1FX0JBU0VfUEFDS0FHRVNfRElSPSIke1BBQ0tBR0VTX0RJUn0vdGVzdF9zdWl0ZXMvcmVsZWFzZWQtYWxsL2JpbmFyeS9ydW50aW1lIgogUlVOVElNRV9QQUNLQUdFU19ESVI9IiR7UEFDS0FHRVNfRElSfS90ZXN0X3N1aXRlcy8ke0xTQl9SRUxFQVNFfS9iaW5hcnkvcnVudGltZSIKIEFQUF9QQUNLQUdFU19ESVI9IiR7UEFDS0FHRVNfRElSfS9hcHAtYmF0dGVyeS8ke0xTQl9SRUxFQVNFfS8ke0xTQl9BUkNIfSIKQEAgLTk4LDcgKzk4LDcgQEAKIGZpCiAKICMgT2ZmaWNpYWwgZG93bmxvYWQgc2VydmVyIGxpc3QuIFlvdSBjYW4gcmVwbGFjZSB0aGVtIHdpdGggeW91ciBvd24gc2VydmVyLgotU0VSVkVSX0lQQUREUj0iMTQwLjIxMS4xNjkuMjMiCitTRVJWRVJfSVBBRERSPSIxNDAuMjExLjE2OS4yOCIKIFNFUlZFUl9OQU1FPSJmdHAubGludXhmb3VuZGF0aW9uLm9yZyIKIAogaWYgISBgZ3JlcCAtRiAtcSAiJHtTRVJWRVJfTkFNRX0iIC9ldGMvaG9zdHNgOyB0aGVuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L3BhY2thZ2VzX2xpc3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L3BhY2thZ2VzX2xpc3QKaW5kZXggOTU5ZjkzMS4uMWE2YzExNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9wYWNrYWdlc19saXN0CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3QvcGFja2FnZXNfbGlzdApAQCAtMSw3ICsxLDcgQEAKIExTQl9SRUxFQVNFPSJyZWxlYXNlZC01LjAiCiBMU0JfQVJDSD0ibHNiYXJjaCIKIAotQkFTRV9QQUNLQUdFU19MSVNUPSJsc2Itc2V0dXAtNC4xLjAtMS5ub2FyY2gucnBtIgorQkFTRV9QQUNLQUdFU19MSVNUPSJsc2Itc2V0dXAtNS4wLjAtMi5ub2FyY2gucnBtIgogCiBSVU5USU1FX0JBU0VfUEFDS0FHRVNfTElTVD0ibHNiLWRpc3QtY2hlY2tlci01LjAuMC4xLTEudGFyZ2V0YXJjaC5ycG0gXAogCWxzYi10ZXQzLWxpdGUtMy43LTI3LmxzYjUudGFyZ2V0YXJjaC5ycG0gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9zZXNzaW9uIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9zZXNzaW9uCmluZGV4IDNhYmNjYTcuLjRkNDdlNDAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3Qvc2Vzc2lvbgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L3Nlc3Npb24KQEAgLTIsNyArMiw3IEBACiBWRVJCT1NFX0xFVkVMOiAgIDEKIEFSQ0hJVEVDVFVSRTogICAgdGFyZ2V0YXJjaAogVVNFX0lOVEVSTkVUOiAgICAxCi1TVERfVkVSU0lPTjogICAgIExTQiA0LjEKK1NURF9WRVJTSU9OOiAgICAgTFNCIDUuMAogU1REX1BST0ZJTEU6ICAgICBubwogW2NtZGNoa10KIFJVTjogMQpAQCAtMTI2LDE1ICsxMjYsNiBAQAogQVVUT1JFUExZX1RFU1RTVUlURV9ESVI6IC9vcHQvbHNiL3Rlc3QvcHl0aG9uCiBBVVRPUkVQTFlfUkVTVUxUU19ESVI6IC9vcHQvbHNiL3Rlc3QvcHl0aG9uL3Jlc3VsdHMKIAotW3F0NC1hem92XQotUlVOOiAxCi1WRVJTSU9OOiBsb2NhbHwqCi0KLVtxdDQtYXpvdnxsb2NhbHwqXQotQVVUT1JFUExZX1RFU1RTVUlURV9ESVI6IC9vcHQvbHNiL3Rlc3QvcXQ0LWF6b3YKLUFVVE9SRVBMWV9YMTFfRk9OVF9QQVRIOiBbZGVmYXVsdF0KLUFVVE9SRVBMWV9SRVNVTFRTX0RJUjogL29wdC9sc2IvdGVzdC9xdDQtYXpvdi9yZXN1bHRzCi0KIFt4bWwyLWF6b3ZdCiBSVU46IDEKIFZFUlNJT046IGxvY2FsfCoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3RfMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdF8xLjAuYmIKaW5kZXggMzZmNTJmZC4uYTkwYzAyMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdF8xLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdF8xLjAuYmIKQEAgLTEwLDE0ICsxMCwxMyBAQAogCQkgICBmaWxlOi8vcGFja2FnZXNfbGlzdCBcCiAJCSAgIGZpbGU6Ly9zZXNzaW9uIFwKIAkJICAgIgotUkRFUEVORFNfJHtQTn0gPSAicnBtIgorUkRFUEVORFNfJHtQTn0gPSAibHNiIHJwbSIKIAogUyA9ICIke1dPUktESVJ9IgogCiBkb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWluc3RhbGwgLW0gMDc1NSAke1N9L0xTQl9UZXN0LnNoICR7RH0ke2JpbmRpcn0KIAlpbnN0YWxsIC1kICAke0R9L29wdC9sc2ItdGVzdAorCWluc3RhbGwgLW0gMDc1NSAke1N9L0xTQl9UZXN0LnNoICR7RH0vb3B0L2xzYi10ZXN0L0xTQl9UZXN0LnNoCiAJaW5zdGFsbCAtbSAwNjQ0ICR7U30vcGFja2FnZXNfbGlzdCAke0R9L29wdC9sc2ItdGVzdC9wYWNrYWdlc19saXN0CiAJaW5zdGFsbCAtbSAwNjQ0ICR7U30vc2Vzc2lvbiAke0R9L29wdC9sc2ItdGVzdC9zZXNzaW9uCiAJaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gImk1ODYiIF0gfHwgWyAiJHtUQVJHRVRfQVJDSH0iID0gImk2ODYiIF07dGhlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtYWRkLV9HTlVfU09VUkNFLXRvLXBlY19saXN0ZW5lci5jLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtYWRkLV9HTlVfU09VUkNFLXRvLXBlY19saXN0ZW5lci5jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWM2NmY4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLWFkZC1fR05VX1NPVVJDRS10by1wZWNfbGlzdGVuZXIuYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gYWUxMDI0NWMxNWE2MTdiZDU3MzM3OTgxYmI0MmViMzY2MjlmOWI1OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDggRmViIDIwMTcgMTU6NTM6MzEgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwMS8yNl0gYWRkIF9HTlVfU09VUkNFIHRvIHBlY19saXN0ZW5lci5jCi0KLUluIHByZXZpb3VzIHBhdGNoIDAwMDctcmVwbGFjZS1TSUdDTEQtd2l0aC1TSUdDSExELnBhdGNoIG1hZGUgYnkgS2hlbSBSYWoKLWNvbnRhaW5zIHR3byBhc3BlY3RzOgotCi0JMS4gcmVwbGFjZSBTSUdDTEQgd2l0aCBTSUdDSExECi0JMi4gYWRkIF9HTlVfU09VUkNFIHRvIHBlY19saXN0ZW5lci5jCi0KLVRoZSByZXBsYWNlIFNJR0NMRCB3aXRoIFNJR0NITEQgaGF2ZSBiZWVuIGludGVncmF0ZWQgdXBzdHJlYW0sIHNvIG1ha2UgYQotYW5vdGhlciBwYXRjaCB0byBhZGQgX0dOVV9TT1VSQ0UgdG8gcGVjX2xpc3RlbmVyLmMgY29tcGx5IHdpdGggS2hlbSBSYWoncwotcHJldmlvdXMgcGF0Y2guCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSUlIG9yaWdpbmFsIHBhdGNoOiAwMDAxLWFkZC1fR05VX1NPVVJDRS10by1wZWNfbGlzdGVuZXIuYy5wYXRjaAotLS0tCi0gdGVzdGNhc2VzL2tlcm5lbC9jb25uZWN0b3JzL3BlYy9wZWNfbGlzdGVuZXIuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9jb25uZWN0b3JzL3BlYy9wZWNfbGlzdGVuZXIuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvY29ubmVjdG9ycy9wZWMvcGVjX2xpc3RlbmVyLmMKLWluZGV4IGQxMWU0ZGMuLmI4YjVlMGQgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL2Nvbm5lY3RvcnMvcGVjL3BlY19saXN0ZW5lci5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL2Nvbm5lY3RvcnMvcGVjL3BlY19saXN0ZW5lci5jCi1AQCAtMjAsNiArMjAsNyBAQAotIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSAKLSsjZGVmaW5lIF9HTlVfU09VUkNFCi0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSAjaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLWNvbmZpZ3VyZS1GaXgtZGVmYXVsdC12YWx1ZS1vZi13aXRob3V0LW51bWEtc3dpdGNoLWkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jb25maWd1cmUtRml4LWRlZmF1bHQtdmFsdWUtb2Ytd2l0aG91dC1udW1hLXN3aXRjaC1pLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhNjI2ODcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jb25maWd1cmUtRml4LWRlZmF1bHQtdmFsdWUtb2Ytd2l0aG91dC1udW1hLXN3aXRjaC1pLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gNGFjZTY4YTZiYTUwMTkwN2EwNzQxZGJhNWY1ZjE1NWUwNmE3NGMzNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBldHIgVm9yZWwgPHB2b3JlbEBzdXNlLmN6PgorRGF0ZTogV2VkLCA3IEZlYiAyMDE4IDExOjA5OjQ5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogRml4IGRlZmF1bHQgdmFsdWUgb2YgLS13aXRob3V0LW51bWEgc3dpdGNoIGluIGhlbHAKKworVGhlIGRlZmF1bHQgdmFsdWUgaXMgbm8uCisKK0ZpeGVzOiAzOWE4NWExZjEgKCJjb25maWd1cmU6IGFkZCBrbm9iIHRvIGNvbnRyb2wgbnVtYSBzdXBwb3J0IikKKworU2lnbmVkLW9mZi1ieTogUGV0ciBWb3JlbCA8cHZvcmVsQHN1c2UuY3o+CitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCistLS0KKyBjb25maWd1cmUuYWMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGIzOWEzMWQuLmQ2NmVhMDAgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTg2LDcgKzg2LDcgQEAgZmkKKyAjIE51bWEKKyBBQ19BUkdfV0lUSChbbnVtYV0sCisgICBBQ19IRUxQX1NUUklORyhbLS13aXRob3V0LW51bWFdLAorLSAgICBbd2l0aG91dCBudW1hIHN1cHBvcnQgKGRlZmF1bHQ9eWVzKV0pLAorKyAgICBbd2l0aG91dCBudW1hIHN1cHBvcnQgKGRlZmF1bHQ9bm8pXSksCisgICBbd2l0aF9udW1hPW5vXSwKKyAgIFt3aXRoX251bWE9eWVzXQorICkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtY29uZmlndXJlLWFkZC1rbm9iLXRvLWNvbnRyb2wtbnVtYS1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtY29uZmlndXJlLWFkZC1rbm9iLXRvLWNvbnRyb2wtbnVtYS1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhYWEyODcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jb25maWd1cmUtYWRkLWtub2ItdG8tY29udHJvbC1udW1hLXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSw1MCBAQAorRnJvbSAzOWE4NWExZjFlNjYyNGY1NTQyMTViYTRiNjg0M2QzNjg5YTg0MTVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kZXJzIFJveGVsbCA8YW5kZXJzLnJveGVsbEBsaW5hcm8ub3JnPgorRGF0ZTogTW9uLCA1IEZlYiAyMDE4IDExOjU2OjA0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogYWRkIGtub2IgdG8gY29udHJvbCBudW1hIHN1cHBvcnQKKworQWxsb3cgdG8gZGlzYWJsZSBudW1hIGZyb20gdGhlIHRvcCBsZXZlbC4KKworQmFzZWQgb24gcGF0Y2g6CitodHRwOi8vY2dpdC5vcGVuZW1iZWRkZWQub3JnL29wZW5lbWJlZGRlZC1jb3JlL2NvbW1pdC9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwP2lkPTRjNzg3MzU1MmUxM2RmZGJhOTZhZmNhNzU2MmMzOThkMjk2NmNhNzEKKworUmVwb3J0ZWQtYnk6IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFuZGVycyBSb3hlbGwgPGFuZGVycy5yb3hlbGxAbGluYXJvLm9yZz4KK1NpZ25lZC1vZmYtYnk6IFBldHIgVm9yZWwgPHB2b3JlbEBzdXNlLmN6PgorVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZAorLS0tCisgY29uZmlndXJlLmFjIHwgMTAgKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDVjOGQ0ZWEuLmIzOWEzMWQgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTgzLDYgKzgzLDE0IEBAIGVsc2UKKyAgICAgQUNfU1VCU1QoW1dJVEhfRVhQRUNUXSxbIm5vIl0pCisgZmkKKyAKKysjIE51bWEKKytBQ19BUkdfV0lUSChbbnVtYV0sCisrICBBQ19IRUxQX1NUUklORyhbLS13aXRob3V0LW51bWFdLAorKyAgICBbd2l0aG91dCBudW1hIHN1cHBvcnQgKGRlZmF1bHQ9eWVzKV0pLAorKyAgW3dpdGhfbnVtYT1ub10sCisrICBbd2l0aF9udW1hPXllc10KKyspCisrCisgIyBQZXJsCisgQUNfQVJHX1dJVEgoW3BlcmxdLAorICAgW0FDX0hFTFBfU1RSSU5HKFstLXdpdGgtcGVybF0sCitAQCAtMTU3LDcgKzE2NSw5IEBAIExUUF9DSEVDS19TRUxJTlVYCisgTFRQX0NIRUNLX1NJR05BTAorIExUUF9DSEVDS19TWVNDQUxMX0VWRU5URkQKKyBMVFBfQ0hFQ0tfU1lTQ0FMTF9NT0RJRllfTERUCisraWYgdGVzdCAieCR3aXRoX251bWEiID0geHllczsgdGhlbgorIExUUF9DSEVDS19TWVNDQUxMX05VTUEKKytmaQorIExUUF9DSEVDS19TWVNDQUxMX1FVT1RBQ1RMCisgTFRQX0NIRUNLX1NZU0NBTExfU0lHTkFMRkQKKyBMVFBfQ0hFQ0tfU1lTQ0FMTF9VTlNIQVJFCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAyLUFkZC1rbm9iLXRvLWNvbnRyb2wtd2hldGhlci1udW1hLXN1cHBvcnQtc2hvdWxkLWJlLWMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMi1BZGQta25vYi10by1jb250cm9sLXdoZXRoZXItbnVtYS1zdXBwb3J0LXNob3VsZC1iZS1jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODY1MDIwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAyLUFkZC1rbm9iLXRvLWNvbnRyb2wtd2hldGhlci1udW1hLXN1cHBvcnQtc2hvdWxkLWJlLWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIDg2N2FkNWQ1ZDY0YjliMjdlZTMyMTQ4MDI3NTMyZGIwYTAwZjY0MzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiUm95LkxpIiA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgNyBKYW4gMjAxNiAxNzozMzoyNiArMDAwMAotU3ViamVjdDogW1BBVENIIDAyLzMyXSBBZGQga25vYiB0byBjb250cm9sIHdoZXRoZXIgbnVtYSBzdXBwb3J0IHNob3VsZCBiZQotIGNoZWNrZWQKLQotb3RoZXJ3aXNlIHVuZGV0ZXJtaW5pc3RpYyBkZXBlbmRlbmN5IHdpbGwgYmUgZ2VuZXJhdGVkCi1kdXJpbmcgYnVpbGQgZGVwZW5kaW5nIHVwb25nIG51bWEgYmVpbmcgc3RhZ2VkIG9yIG5vdAotCi1TaWduZWQtb2ZmLWJ5OiBSb3kuTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBtNC9sdHAtbnVtYS5tNCB8IDEwICsrKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9tNC9sdHAtbnVtYS5tNCBiL200L2x0cC1udW1hLm00Ci1pbmRleCA2MGFlMDdiLi5lZDcwNzhkIDEwMDY0NAotLS0tIGEvbTQvbHRwLW51bWEubTQKLSsrKyBiL200L2x0cC1udW1hLm00Ci1AQCAtMjQsNyArMjQsMTMgQEAgZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBkbmwKLSBBQ19ERUZVTihbTFRQX0NIRUNLX1NZU0NBTExfTlVNQV0sCi0gW2RubAotLUFDX0NIRUNLX0hFQURFUlMoW2xpbnV4L21lbXBvbGljeS5oIG51bWEuaCBudW1haWYuaF0sWwotK0FDX01TR19DSEVDS0lORyhbZm9yIG51bWFdKQotK0FDX0FSR19XSVRIKAotKwlbbnVtYV0sCi0rCUFDX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtbnVtYV0sCi0rCVt3aXRob3V0IG51bWEgc3VwcG9ydF0pLAotKwlbXSwKLSsJW0FDX0NIRUNLX0hFQURFUlMoW2xpbnV4L21lbXBvbGljeS5oIG51bWEuaCBudW1haWYuaF0sWwotIAlMVFBfU1lTQ0FMTF9OVU1BX0hFQURFUlM9eWVzCi0gCUFDX0NIRUNLX0xJQihudW1hLG51bWFfYWxsb2Nfb25ub2RlLFtoYXZlX251bWFfYWxsb2Nfb25ub2RlPSJ5ZXMiXSkKLSAJaWYgIHRlc3QgIngkaGF2ZV9udW1hX2FsbG9jX29ubm9kZSIgPSAieHllcyI7IHRoZW4KLUBAIC00OCwzICs1NCw1IEBAIGlmIHRlc3QgIngkaGF2ZV9tcG9sX2NvbnN0YW50cyIgPSAieHllcyI7IHRoZW4KLSAJQUNfREVGSU5FKEhBVkVfTVBPTF9DT05TVEFOVFMsMSxbZGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgYWxsIGNvbnN0YW50cyByZXF1aXJlZCB0byB1c2UgbWJpbmQgdGVzdHNdKQotIGZpCi0gKV0pCi0rQUNfTVNHX1JFU1VMVChbJHdpdGhfbnVtYV0pCi0rXSkKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDQtYnVpbGQtQWRkLW9wdGlvbi10by1zZWxlY3QtbGliYy1pbXBsZW1lbnRhdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA0LWJ1aWxkLUFkZC1vcHRpb24tdG8tc2VsZWN0LWxpYmMtaW1wbGVtZW50YXRpb24ucGF0Y2gKaW5kZXggY2Y3NDQ2My4uODRhYjM3ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDQtYnVpbGQtQWRkLW9wdGlvbi10by1zZWxlY3QtbGliYy1pbXBsZW1lbnRhdGlvbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNC1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoCkBAIC0yMiwxMCArMjIsMTAgQEAKICB0ZXN0Y2FzZXMvcmVhbHRpbWUvc3RyZXNzL3BpLXRlc3RzL01ha2VmaWxlIHwgNSArKysrKwogIDggZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDI5N2Y4ZTcuLjkwNmIyODAgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZQotKysrIGIvTWFrZWZpbGUKK0luZGV4OiBnaXQvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9NYWtlZmlsZQorKysrIGdpdC9NYWtlZmlsZQogQEAgLTQ5LDYgKzQ5LDExIEBAIFNLSVBfSURDSEVDSwkJPz0gMAogIFVDTElOVVgJCQk/PSAwCiAgZXhwb3J0IFVDTElOVVgKQEAgLTM4LDExICszOCwxMSBAQAogICMgQ0xFQU5fVEFSR0VUUzoJVGFyZ2V0cyB3aGljaCBleGlzdCBzb2xlbHkgaW4gY2xlYW4uCiAgIyBDT01NT05fVEFSR0VUUzoJVGFyZ2V0cyB3aGljaCBleGlzdCBpbiBhbGwsIGNsZWFuLCBhbmQgaW5zdGFsbC4KICAjIElOU1RBTExfVEFSR0VUUzoJVGFyZ2V0cyB3aGljaCBleGlzdCBpbiBjbGVhbiBhbmQgaW5zdGFsbCAoY29udGFpbnMKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL01ha2VmaWxlIGIvdGVzdGNhc2VzL2tlcm5lbC9NYWtlZmlsZQotaW5kZXggNTBhMTJmYS4uNGYxOTg3ZiAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvTWFrZWZpbGUKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvTWFrZWZpbGUKLUBAIC00NywxMyArNDcsMTYgQEAgU1VCRElSUwkJCSs9IGNvbm5lY3RvcnMgXAorSW5kZXg6IGdpdC90ZXN0Y2FzZXMva2VybmVsL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL2tlcm5lbC9NYWtlZmlsZQorKysrIGdpdC90ZXN0Y2FzZXMva2VybmVsL01ha2VmaWxlCitAQCAtNDgsMTMgKzQ4LDE2IEBAIFNVQkRJUlMJCQkrPSBjb25uZWN0b3JzIFwKICAJCQkgICBsb2dnaW5nIFwKICAJCQkgICBtZW0gXAogIAkJCSAgIG51bWEgXApAQCAtNjAsMTAgKzYwLDEwIEBACiAgaWZlcSAoJChXSVRIX1BPV0VSX01BTkFHRU1FTlRfVEVTVFNVSVRFKSx5ZXMpCiAgU1VCRElSUwkJCSs9IHBvd2VyX21hbmFnZW1lbnQKICBlbmRpZgotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc2NoZWQvTWFrZWZpbGUgYi90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCi1pbmRleCA2MjQ1ZWQwLi5hYTRlYjdmIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zY2hlZC9NYWtlZmlsZQotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zY2hlZC9NYWtlZmlsZQorSW5kZXg6IGdpdC90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL2tlcm5lbC9zY2hlZC9NYWtlZmlsZQorKysrIGdpdC90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCiBAQCAtMjMsNSArMjMsNyBAQAogIHRvcF9zcmNkaXIJCT89IC4uLy4uLy4uCiAgCkBAIC03MywxMSArNzMsMTEgQEAKICsJRklMVEVSX09VVF9ESVJTICs9IHByb2Nlc3Nfc3RyZXNzCiArZW5kaWYKICBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9nZW5lcmljX3RydW5rX3RhcmdldC5tawotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvTWFrZWZpbGUgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlCi1pbmRleCA4YWNiMzk1Li5iNzQ5MTI2IDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQotQEAgLTI4LDUgKzI4LDEwIEBAIGlmZXEgKCQoVUNMSU5VWCksMSkKK0luZGV4OiBnaXQvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvTWFrZWZpbGUKKysrKyBnaXQvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQorQEAgLTI4LDYgKzI4LDExIEBAIGlmZXEgKCQoVUNMSU5VWCksMSkKICBGSUxURVJfT1VUX0RJUlMJKz0gY2FwZ2V0IGNhcHNldCBjaG1vZCBjaG93biBjbG9uZSBmb3JrIGdldGNvbnRleHQgbGxzZWVrIFwKICAJCSAgIG1pbmNvcmUgbXByb3RlY3QgbmZ0dyBwcm9maWwgcmVtYXBfZmlsZV9wYWdlcyBzYnJrCiAgZW5kaWYKQEAgLTg3LDEyICs4NywxMyBAQAogKwkJICAgdXN0YXQKICtlbmRpZgogIAotIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2dlbmVyaWNfdHJ1bmtfdGFyZ2V0Lm1rCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL01ha2VmaWxlIGIvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL01ha2VmaWxlCi1pbmRleCA4YmM3OGMyLi5jMzZjZjUwIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL01ha2VmaWxlCi0rKysgYi90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvTWFrZWZpbGUKLUBAIC0yNiw0ICsyNiw4IEBAIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2Vudl9wcmUubWsKKyBpZmVxICgkKFVDTElCQyksMSkKKyBGSUxURVJfT1VUX0RJUlMJKz0gcHJvZmlsCitJbmRleDogZ2l0L3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9NYWtlZmlsZQorKysrIGdpdC90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvTWFrZWZpbGUKK0BAIC0yNiw0ICsyNiw4IEBAIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2Vudl9wcmUKICAKICBMRExJQlMJCQkrPSAkKEFDTF9MSUJTKQogIApAQCAtMTAxLDEwICsxMDIsMTAgQEAKICtlbmRpZgogKwogIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2dlbmVyaWNfbGVhZl90YXJnZXQubWsKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUgYi90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUKLWluZGV4IDMxNjA4MTMuLjliZGY1ZDAgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUKLSsrKyBiL3Rlc3RjYXNlcy9uZXR3b3JrL3JwYy9iYXNpY190ZXN0cy9NYWtlZmlsZQorSW5kZXg6IGdpdC90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUKKysrKyBnaXQvdGVzdGNhc2VzL25ldHdvcmsvcnBjL2Jhc2ljX3Rlc3RzL01ha2VmaWxlCiBAQCAtMjMsNCArMjMsOSBAQAogIHRvcF9zcmNkaXIJCT89IC4uLy4uLy4uLy4uCiAgCkBAIC0xMTUsMTEgKzExNiwxMSBAQAogK2VuZGlmCiArCiAgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZ2VuZXJpY190cnVua190YXJnZXQubWsKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL01ha2VmaWxlCi1pbmRleCA3YTdhNTdhLi41ODA4ODY2IDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvTWFrZWZpbGUKLSsrKyBiL3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL01ha2VmaWxlCi1AQCAtMjcsNSArMjcsOSBAQCBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9lbnZfcHJlLm1rCitJbmRleDogZ2l0L3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvTWFrZWZpbGUKKysrKyBnaXQvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvTWFrZWZpbGUKK0BAIC0yNyw1ICsyNyw5IEBAIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2Vudl9wcmUKICBpbmNsdWRlICQoYWJzX3NyY2RpcikvLi4vLi4vY29uZmlnLm1rCiAgCiAgTUFLRV9UQVJHRVRTCQk6PSB0ZXN0cGktMCB0ZXN0cGktMSB0ZXN0cGktMiB0ZXN0cGktNCB0ZXN0cGktNSB0ZXN0cGktNiB0ZXN0cGktNyBzYnJrX211dGV4CkBAIC0xMjksMTAgKzEzMCwxMCBAQAogKwogIAogIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2dlbmVyaWNfbGVhZl90YXJnZXQubWsKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvcmVhbHRpbWUvc3RyZXNzL3BpLXRlc3RzL01ha2VmaWxlIGIvdGVzdGNhc2VzL3JlYWx0aW1lL3N0cmVzcy9waS10ZXN0cy9NYWtlZmlsZQotaW5kZXggNWVkYzNiNC4uYWE1OTg3YSAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9yZWFsdGltZS9zdHJlc3MvcGktdGVzdHMvTWFrZWZpbGUKLSsrKyBiL3Rlc3RjYXNlcy9yZWFsdGltZS9zdHJlc3MvcGktdGVzdHMvTWFrZWZpbGUKK0luZGV4OiBnaXQvdGVzdGNhc2VzL3JlYWx0aW1lL3N0cmVzcy9waS10ZXN0cy9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3Rlc3RjYXNlcy9yZWFsdGltZS9zdHJlc3MvcGktdGVzdHMvTWFrZWZpbGUKKysrKyBnaXQvdGVzdGNhc2VzL3JlYWx0aW1lL3N0cmVzcy9waS10ZXN0cy9NYWtlZmlsZQogQEAgLTI0LDQgKzI0LDkgQEAgdG9wX3NyY2RpcgkJPz0gLi4vLi4vLi4vLi4KICAKICBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9lbnZfcHJlLm1rCkBAIC0xNDMsNiArMTQ0LDMgQEAKICtlbmRpZgogKwogIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2dlbmVyaWNfbGVhZl90YXJnZXQubWsKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTEtUmVuYW1lLXNpZ3NldC12YXJpYWJsZS10by1zaWdzZXQxLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTEtUmVuYW1lLXNpZ3NldC12YXJpYWJsZS10by1zaWdzZXQxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNWY2YmE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDExLVJlbmFtZS1zaWdzZXQtdmFyaWFibGUtdG8tc2lnc2V0MS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBACi1Gcm9tIGRjMTkwNWI2ZDk3MmY5MTc2YjQwZGEyNzBjODNkOGZiNGQxNzUxYjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCA4IEZlYiAyMDE3IDE2OjEyOjM0ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMi81XSBSZW5hbWUgc2lnc2V0IHZhcmlhYmxlIHRvIHNpZ3NldDEKLQotc2lnc2V0IEFQSSBmcm9tIHNpZ25hbC5oIGlzIHNoYWRvd2VkIGJ5IHRoaXMgbmFtZSBjb25mbGljdAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL21lbS9zaG10L3NobXQwNC5jICAgICAgICAgICAgICAgICAgICB8IDEwICsrKysrLS0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL21lbS9zaG10L3NobXQwNi5jICAgICAgICAgICAgICAgICAgICB8IDEwICsrKysrLS0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3Byb2NtYXNrL3NpZ3Byb2NtYXNrMDEuYyB8IDEwICsrKysrLS0tLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9tZW0vc2htdC9zaG10MDQuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvbWVtL3NobXQvc2htdDA0LmMKLWluZGV4IGIyNjgyZGEuLjNmMzVmYWQgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL21lbS9zaG10L3NobXQwNC5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL21lbS9zaG10L3NobXQwNC5jCi1AQCAtNTYsNyArNTYsNyBAQCBpbnQgVFNUX1RPVEFMID0gMjsJCS8qIFRvdGFsIG51bWJlciBvZiB0ZXN0IGNhc2VzLiAqLwotIC8qKioqKioqKioqKioqKi8KLSAKLSBrZXlfdCBrZXk7Ci0tc2lnc2V0X3Qgc2V0OwotK3NpZ3NldF90IHNldDE7Ci0gCi0gI2RlZmluZSAgU0laRSAgMTYqMTAyNAotIAotQEAgLTcxLDkgKzcxLDkgQEAgaW50IG1haW4odm9pZCkKLSAKLSAJa2V5ID0gKGtleV90KSBnZXRwaWQoKTsKLSAKLS0Jc2lnZW1wdHlzZXQoJnNldCk7Ci0tCXNpZ2FkZHNldCgmc2V0LCBTSUdVU1IxKTsKLS0Jc2lncHJvY21hc2soU0lHX0JMT0NLLCAmc2V0LCBOVUxMKTsKLSsJc2lnZW1wdHlzZXQoJnNldDEpOwotKwlzaWdhZGRzZXQoJnNldDEsIFNJR1VTUjEpOwotKwlzaWdwcm9jbWFzayhTSUdfQkxPQ0ssICZzZXQxLCBOVUxMKTsKLSAKLSAJcGlkID0gZm9yaygpOwotIAlzd2l0Y2ggKHBpZCkgewotQEAgLTE0OCw3ICsxNDgsNyBAQCBpbnQgY2hpbGQodm9pZCkKLSAJY2hhciAqY3A7Ci0gCWludCBzaWc7Ci0gCi0tCXNpZ3dhaXQoJnNldCwgJnNpZyk7Ci0rCXNpZ3dhaXQoJnNldDEsICZzaWcpOwotIAljaGxkX3BpZCA9IGdldHBpZCgpOwotIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotIAotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvbWVtL3NobXQvc2htdDA2LmMgYi90ZXN0Y2FzZXMva2VybmVsL21lbS9zaG10L3NobXQwNi5jCi1pbmRleCBkZDY5ZGU3Li41NmZiMWRhIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9tZW0vc2htdC9zaG10MDYuYwotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9tZW0vc2htdC9zaG10MDYuYwotQEAgLTU3LDcgKzU3LDcgQEAgaW50IFRTVF9UT1RBTCA9IDI7CQkvKiBUb3RhbCBudW1iZXIgb2YgdGVzdCBjYXNlcy4gKi8KLSAvKioqKioqKioqKioqKiovCi0gCi0ga2V5X3Qga2V5OwotLXNpZ3NldF90IHNldDsKLStzaWdzZXRfdCBzZXQxOwotIAotIGludCBjaGlsZCgpOwotIHN0YXRpYyBpbnQgcm1fc2htKGludCk7Ci1AQCAtNzAsOSArNzAsOSBAQCBpbnQgbWFpbih2b2lkKQotIAotIAlrZXkgPSAoa2V5X3QpIGdldHBpZCgpOwotIAotLQlzaWdlbXB0eXNldCgmc2V0KTsKLS0Jc2lnYWRkc2V0KCZzZXQsIFNJR1VTUjEpOwotLQlzaWdwcm9jbWFzayhTSUdfQkxPQ0ssICZzZXQsIE5VTEwpOwotKwlzaWdlbXB0eXNldCgmc2V0MSk7Ci0rCXNpZ2FkZHNldCgmc2V0MSwgU0lHVVNSMSk7Ci0rCXNpZ3Byb2NtYXNrKFNJR19CTE9DSywgJnNldDEsIE5VTEwpOwotIAotIAlwaWQgPSBmb3JrKCk7Ci0gCXN3aXRjaCAocGlkKSB7Ci1AQCAtMTQ3LDcgKzE0Nyw3IEBAIGludCBjaGlsZCh2b2lkKQotIAljaGFyICpjcDsKLSAJaW50IHNpZzsKLSAKLS0Jc2lnd2FpdCgmc2V0LCAmc2lnKTsKLSsJc2lnd2FpdCgmc2V0MSwgJnNpZyk7Ci0gCWNobGRfcGlkID0gZ2V0cGlkKCk7Ci0gCi0gCWlmICgoc2htaWQgPSBzaG1nZXQoa2V5LCBTSVpFLCAwKSkgPCAwKSB7Ci1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9zaWdwcm9jbWFzay9zaWdwcm9jbWFzazAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3Byb2NtYXNrL3NpZ3Byb2NtYXNrMDEuYwotaW5kZXggMjMyZDI1YS4uMDZkOTAyZiAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc2lncHJvY21hc2svc2lncHJvY21hc2swMS5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3Byb2NtYXNrL3NpZ3Byb2NtYXNrMDEuYwotQEAgLTkxLDcgKzkxLDcgQEAgaW50IFRTVF9UT1RBTCA9IDE7Ci0gaW50IHNpZ19jYXRjaCA9IDA7CQkvKiB2YXJpYWJsZSB0byBibG9ja2VkL3VuYmxvY2tlZCBzaWduYWxzICovCi0gCi0gc3RydWN0IHNpZ2FjdGlvbiBzYV9uZXc7CS8qIHN0cnVjdCB0byBob2xkIHNpZ25hbCBpbmZvICovCi0tc2lnc2V0X3Qgc2V0OwkJLyogc2lnbmFsIHNldCB0byBob2xkIHNpZ25hbCBsaXN0cyAqLwotK3NpZ3NldF90IHNldDE7CQkvKiBzaWduYWwgc2V0IHRvIGhvbGQgc2lnbmFsIGxpc3RzICovCi0gc2lnc2V0X3Qgc2lnc2V0MjsKLSAKLSBpbnQgbWFpbihpbnQgYWMsIGNoYXIgKiphdikKLUBAIC0xMTIsNyArMTEyLDcgQEAgaW50IG1haW4oaW50IGFjLCBjaGFyICoqYXYpCi0gCQkgKiBzbyB0aGF0LCBzaWduYWwgd2lsbCBub3QgYmUgZGVsaXZlcmVkIHRvCi0gCQkgKiB0aGUgdGVzdCBwcm9jZXNzLgotIAkJICovCi0tCQlURVNUKHNpZ3Byb2NtYXNrKFNJR19CTE9DSywgJnNldCwgMCkpOwotKwkJVEVTVChzaWdwcm9jbWFzayhTSUdfQkxPQ0ssICZzZXQxLCAwKSk7Ci0gCi0gCQkvKiBHZXQgdGhlIHByb2Nlc3MgaWQgb2YgdGVzdCBwcm9jZXNzICovCi0gCQlteV9waWQgPSBnZXRwaWQoKTsKLUBAIC0xNjUsNyArMTY1LDcgQEAgaW50IG1haW4oaW50IGFjLCBjaGFyICoqYXYpCi0gCQkJCSAqLwotIAkJCQllcnJubyA9IDA7Ci0gCQkJCWlmIChzaWdwcm9jbWFzayhTSUdfVU5CTE9DSywKLS0JCQkJCQkmc2V0LCAwKSA9PSAtMSkgewotKwkJCQkJCSZzZXQxLCAwKSA9PSAtMSkgewotIAkJCQkJdHN0X2Jya20oVEZBSUwsIGNsZWFudXAsCi0gCQkJCQkJICJzaWdwcm9jbWFzaygpIGZhaWxlZCAiCi0gCQkJCQkJICJ0byB1bmJsb2NrIHNpZ25hbCwgIgotQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIHNldHVwKHZvaWQpCi0gCSAqIEluaXRpYWxpc2UgdGhlIHNpZ25hbCBzZXRzIHdpdGggdGhlIGxpc3QgdGhhdAotIAkgKiBleGNsdWRlcy9pbmNsdWRlcyAgYWxsIHN5c3RlbS1kZWZpbmVkIHNpZ25hbHMuCi0gCSAqLwotLQlpZiAoc2lnZW1wdHlzZXQoJnNldCkgPT0gLTEpIHsKLSsJaWYgKHNpZ2VtcHR5c2V0KCZzZXQxKSA9PSAtMSkgewotIAkJdHN0X2Jya20oVEZBSUwsIGNsZWFudXAsCi0gCQkJICJzaWdlbXB0eXNldCgpIGZhaWxlZCwgZXJybm89JWQgOiAlcyIsCi0gCQkJIGVycm5vLCBzdHJlcnJvcihlcnJubykpOwotQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIHNldHVwKHZvaWQpCi0gCSAqIEFkZCBzcGVjaWZpZWQgc2lnbmFsIChTSUdJTlQpIHRvIHRoZSBzaWduYWwgc2V0Ci0gCSAqIHdoaWNoIGV4Y2x1ZGVzIHN5c3RlbS1kZWZpbmVkIHNpZ25hbHMuCi0gCSAqLwotLQlpZiAoc2lnYWRkc2V0KCZzZXQsIFNJR0lOVCkgPT0gLTEpIHsKLSsJaWYgKHNpZ2FkZHNldCgmc2V0MSwgU0lHSU5UKSA9PSAtMSkgewotIAkJdHN0X2Jya20oVEZBSUwsIGNsZWFudXAsCi0gCQkJICJzaWdhZGRzZXQoKSBmYWlsZWQsIGVycm5vPSVkIDogJXMiLAotIAkJCSBlcnJubywgc3RyZXJyb3IoZXJybm8pKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjEtRGVmaW5lLV9HTlVfU09VUkNFLWZvci1NUkVNQVBfTUFZTU9WRS1kZWZpbml0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjEtRGVmaW5lLV9HTlVfU09VUkNFLWZvci1NUkVNQVBfTUFZTU9WRS1kZWZpbml0aW9uLnBhdGNoCmluZGV4IDNlNzljOWYuLjQ2Mjk3NmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDIxLURlZmluZS1fR05VX1NPVVJDRS1mb3ItTVJFTUFQX01BWU1PVkUtZGVmaW5pdGlvbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyMS1EZWZpbmUtX0dOVV9TT1VSQ0UtZm9yLU1SRU1BUF9NQVlNT1ZFLWRlZmluaXRpb24ucGF0Y2gKQEAgLTE4LDEwICsxOCwxMCBAQAogIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAzLmMgfCAyICsrCiAgMyBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMS5jCi1pbmRleCBkNjNkMWU0Li4yNGNhMTc0IDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDEuYwotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDEuYworSW5kZXg6IGdpdC90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDEuYworKysrIGdpdC90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMS5jCiBAQCAtNzYsMTAgKzc2LDEyIEBACiAgICovCiAgI2luY2x1ZGUgPHVuaXN0ZC5oPgpAQCAtMzUsMTEgKzM1LDExIEBACiArI3VuZGVmIF9HTlVfU09VUkNFCiAgCiAgI2luY2x1ZGUgInRlc3QuaCIKLSAKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMi5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDIuYwotaW5kZXggNWE1MWI5YS4uYTUzMGE2YiAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAyLmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAyLmMKKyAjaW5jbHVkZSAic2FmZV9tYWNyb3MuaCIKK0luZGV4OiBnaXQvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDIuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAyLmMKKysrKyBnaXQvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDIuYwogQEAgLTc1LDkgKzc1LDExIEBACiAgI2luY2x1ZGUgPGVycm5vLmg+CiAgI2luY2x1ZGUgPHVuaXN0ZC5oPgpAQCAtNTIsMTAgKzUyLDEwIEBACiAgCiAgI2luY2x1ZGUgInRlc3QuaCIKICAKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMy5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDMuYwotaW5kZXggMTJlMzgyOS4uOWIzOWY4YiAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAzLmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAzLmMKK0luZGV4OiBnaXQvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAzLmMKKysrKyBnaXQvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDMuYwogQEAgLTc2LDkgKzc2LDExIEBACiAgI2luY2x1ZGUgPGVycm5vLmg+CiAgI2luY2x1ZGUgPHVuaXN0ZC5oPgpAQCAtNjgsNiArNjgsMyBAQAogIAogICNpbmNsdWRlICJ0ZXN0LmgiCiAgCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI1LW1jX2dldGhvc3QtaW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI1LW1jX2dldGhvc3QtaW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZjYmE2My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNS1tY19nZXRob3N0LWluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIDlkMTRlZGZjMTJlZWZhYzkwMGRkNTQ3MjlhODhiM2NjZjkxYzFjNDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCA4IEphbiAyMDE2IDA3OjE4OjE1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjUvMzJdIG1jX2dldGhvc3Q6IGluY2x1ZGUgc3lzL3R5cGVzLmgKLQotRml4IGJ1aWxkIG9uIG11c2wKLWVycm9yOiB1bmtub3duIHR5cGUgbmFtZSAndV9jaGFyJwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIHRlc3RjYXNlcy9uZXR3b3JrL211bHRpY2FzdC9tY19nZXRob3N0L21jX2dldGhvc3QuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL25ldHdvcmsvbXVsdGljYXN0L21jX2dldGhvc3QvbWNfZ2V0aG9zdC5jIGIvdGVzdGNhc2VzL25ldHdvcmsvbXVsdGljYXN0L21jX2dldGhvc3QvbWNfZ2V0aG9zdC5jCi1pbmRleCA1YjlhNzkwLi5jNzk5ZTJhIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvbXVsdGljYXN0L21jX2dldGhvc3QvbWNfZ2V0aG9zdC5jCi0rKysgYi90ZXN0Y2FzZXMvbmV0d29yay9tdWx0aWNhc3QvbWNfZ2V0aG9zdC9tY19nZXRob3N0LmMKLUBAIC02LDYgKzYsNyBAQAotIAotICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotICNpbmNsdWRlIDxhcnBhL2luZXQuaD4KLSAjaW5jbHVkZSA8YXJwYS9uYW1lc2VyLmg+Ci0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI3LXN5c2NvbmYwMS1Vc2UtX1NDXzJfQ19WRVJTSU9OLWNvbmRpdGlvbmFsbHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNy1zeXNjb25mMDEtVXNlLV9TQ18yX0NfVkVSU0lPTi1jb25kaXRpb25hbGx5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGY2ZjI3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI3LXN5c2NvbmYwMS1Vc2UtX1NDXzJfQ19WRVJTSU9OLWNvbmRpdGlvbmFsbHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIDE0NzEwMTIxNjRiYThmMjYwNDZkNGIxY2U1NTMxYTBkOTI4MDVlZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCA4IEZlYiAyMDE3IDE2OjIxOjE2ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggNC81XSBzeXNjb25mMDE6IFVzZSBfU0NfMl9DX1ZFUlNJT04gY29uZGl0aW9uYWxseQotCi1fU0NfMl9DX1ZFUlNJT04gaXMgbm90IGF2YWlsYWJsZSBvbiBtdXNsCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc3lzY29uZi9zeXNjb25mMDEuYyB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3N5c2NvbmYvc3lzY29uZjAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3N5c2NvbmYvc3lzY29uZjAxLmMKLWluZGV4IDU4M2RlZWYuLmRlOTM2OTUgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3N5c2NvbmYvc3lzY29uZjAxLmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc3lzY29uZi9zeXNjb25mMDEuYwotQEAgLTEwMyw3ICsxMDMsOSBAQCBpbnQgbWFpbih2b2lkKQotIAl0ZXN0X3N5c2NvbmYoX1NDXzJfQ19CSU5EKTsKLSAJdGVzdF9zeXNjb25mKF9TQ18yX0NfREVWKTsKLSAjaWZkZWYgX1NDXzJfQ19WRVJTSU9OCi0rI2lmZGVmIF9fR0xJQkNfXwotIAl0ZXN0X3N5c2NvbmYoX1NDXzJfQ19WRVJTSU9OKTsKLSsjZW5kaWYKLSAjZWxzZQotIAl0c3RfcmVzbShUQ09ORiwgIl9TQ18yX0NfVkVSU0lPTiBub3QgZGVmaW5lZCIpOwotICNlbmRpZgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzMC1saWItVXNlLVBUSFJFQURfTVVURVhfUkVDVVJTSVZFLWluLXBsYWNlLW9mLVBUSFJFQURfLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzAtbGliLVVzZS1QVEhSRUFEX01VVEVYX1JFQ1VSU0lWRS1pbi1wbGFjZS1vZi1QVEhSRUFEXy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZhNmQwNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzMC1saWItVXNlLVBUSFJFQURfTVVURVhfUkVDVVJTSVZFLWluLXBsYWNlLW9mLVBUSFJFQURfLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSAwMGJhN2NkZDA2MDhiMTUwNzAyNzQyOGY5Zjg3YjFjYjk3NDczNzJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgOSBGZWIgMjAxNyAxNTo1NDo1MyArMDgwMAotU3ViamVjdDogW1BBVENIXSBsaWI6IFVzZSBQVEhSRUFEX01VVEVYX1JFQ1VSU0lWRSBpbiBwbGFjZSBvZgotIFBUSFJFQURfUkVDVVJTSVZFX01VVEVYX0lOSVRJQUxJWkVSX05QIGZvciBub24tZ2xpYmMKLQotZS5nLiBtdXNsIGRvZXMgbm90IGltcGxlbWVudCB0aGUgX05QIG11dGV4IHR5cGVzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGxpYi90c3RfcmVzLmMgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWIvdHN0X3Jlcy5jIGIvbGliL3RzdF9yZXMuYwotaW5kZXggNjFkYWFlYi4uNDM1MjI0ZiAxMDA2NDQKLS0tLSBhL2xpYi90c3RfcmVzLmMKLSsrKyBiL2xpYi90c3RfcmVzLmMKLUBAIC03OSw3ICs3OSwxMSBAQCBpbnQgVEVTVF9FUlJOTzsKLSAJYXNzZXJ0KHN0cmxlbihidWYpID4gMCk7CQlcCi0gfSB3aGlsZSAoMCkKLSAKLSsjaWZkZWYgX19HTElCQ19fCi0gc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCB0bXV0ZXggPSBQVEhSRUFEX1JFQ1VSU0lWRV9NVVRFWF9JTklUSUFMSVpFUl9OUDsKLSsjZWxzZQotK3N0YXRpYyBwdGhyZWFkX211dGV4X3QgdG11dGV4ID0geyAgUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUgfTsKLSsjZW5kaWYKLSAKLSBzdGF0aWMgdm9pZCBjaGVja19lbnYodm9pZCk7Ci0gc3RhdGljIHZvaWQgdHN0X2NvbmRlbnNlKGludCB0bnVtLCBpbnQgdHR5cGUsIGNvbnN0IGNoYXIgKnRtZXNnKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzMtc2htYXQxLUNvdmVyLUdOVS1zcGVjaWZpYy1jb2RlLXVuZGVyLV9fVVNFX0dOVS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDMzLXNobWF0MS1Db3Zlci1HTlUtc3BlY2lmaWMtY29kZS11bmRlci1fX1VTRV9HTlUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2OGUxY2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzMtc2htYXQxLUNvdmVyLUdOVS1zcGVjaWZpYy1jb2RlLXVuZGVyLV9fVVNFX0dOVS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb20gNWUzZGVhNjY5ZTViMGI3NjlmMzIyZDU0YTNiYjlmMzIwYjUzMjdkYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDIyIE1hciAyMDE2IDE1OjQ3OjE0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjYvMjZdIHNobWF0MTogQ292ZXIgR05VIHNwZWNpZmljIGNvZGUgdW5kZXIgX19VU0VfR05VCi0KLW9uIHg4Niwgd2UgdXNlIHVjX21jb250ZXh0IGVsZW1lbnQgZnJvbSBzaWdjb250ZXh0Ci13aGljaCBpcyBtYXJrZWQgZ251LXNwZWNpZmljIGluIGdsaWJjLCB0aGlzIHBhdGNoCi1hZGRzIHRoaXMgY29uZGl0aW9uIGFyb3VuZCB0aGUgY29kZQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHRlc3RjYXNlcy9rZXJuZWwvbWVtL210ZXN0MDYvc2htYXQxLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9tZW0vbXRlc3QwNi9zaG1hdDEuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvbWVtL210ZXN0MDYvc2htYXQxLmMKLWluZGV4IDBkNmQ3YTQuLmJlZTY5ZjYgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL21lbS9tdGVzdDA2L3NobWF0MS5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL21lbS9tdGVzdDA2L3NobWF0MS5jCi1AQCAtMTExLDcgKzExMSw3IEBAIGludCBkb25lX3NobWF0ID0gMDsJCS8qIGRpc2FsbG93IHJlYWQgYW5kIHdyaXRlcyBiZWZvcmUgc2htYXQgICAgICAqLwotIHN0YXRpYyB2b2lkIHNpZ19oYW5kbGVyKGludCBzaWduYWwsCS8qIHNpZ25hbCBudW1iZXIsIHNldCB0byBoYW5kbGUgU0lHQUxSTSAgICAgICAqLwotIAkJCWludCBjb2RlLCBzdHJ1Y3QgdWNvbnRleHQgKnV0KQotIHsJCQkJLyogY29udGFpbnMgcG9pbnRlciB0byBzaWdjb250ZXh0IHN0cnVjdHVyZSAgICovCi0tI2lmZGVmIF9faTM4Nl9fCi0rI2lmIGRlZmluZWQoX19pMzg2X18pICYmIGRlZmluZWQoX19VU0VfR05VKQotIAl1bnNpZ25lZCBsb25nIGV4Y2VwdDsJLyogZXhjZXB0aW9uIHR5cGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gCWludCByZXQgPSAwOwkJLyogZXhpdCBjb2RlIGZyb20gc2lnbmFsIGhhbmRsZXIuICAgICAgICAgICAgICovCi0gCXN0cnVjdCBzaWdjb250ZXh0ICpzY3AgPQkvKiBwb2ludGVyIHRvIHNpZ2NvbnRleHQgc3RydWN0dXJlICAgICAgICAgICAgKi8KLUBAIC0xMjIsNyArMTIyLDcgQEAgc3RhdGljIHZvaWQgc2lnX2hhbmRsZXIoaW50IHNpZ25hbCwJLyogc2lnbmFsIG51bWJlciwgc2V0IHRvIGhhbmRsZSBTSUdBTFJNCi0gCQlmcHJpbnRmKHN0ZG91dCwgIlRlc3QgZW5kZWQsIHN1Y2Nlc3NcbiIpOwotIAkJZXhpdCgwKTsKLSAJfQotLSNpZmRlZiBfX2kzODZfXwotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSAmJiBkZWZpbmVkKF9fVVNFX0dOVSkKLSAJZWxzZSB7Ci0gCQlleGNlcHQgPSBzY3AtPnRyYXBubzsKLSAJCWZwcmludGYoc3RkZXJyLCAic2lnbmFsIGNhdWdodCAtIFslZF0gIiwgc2lnbmFsKTsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzctbHRwLWZpeC1QQUdFX1NJWkUtcmVkZWZpbml0aW9uLWFuZC1PX0NSRUFULXVuZGVjbGVhci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDM3LWx0cC1maXgtUEFHRV9TSVpFLXJlZGVmaW5pdGlvbi1hbmQtT19DUkVBVC11bmRlY2xlYXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4NzM4YWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzctbHRwLWZpeC1QQUdFX1NJWkUtcmVkZWZpbml0aW9uLWFuZC1PX0NSRUFULXVuZGVjbGVhci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi1Gcm9tIGE5ZDU1OTVkMmZhMmFiMjUyZjFjYWJmNjNmNGI2NWMzZWZiYWZlYjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAxMCBBdWcgMjAxNyAxNToyNzowMyArMDgwMAotU3ViamVjdDogW1BBVENIXSBsdHA6IGZpeCBQQUdFX1NJWkUgcmVkZWZpbml0aW9uIGFuZCBPX0NSRUFUIHVuZGVjbGVhciB3aGVuCi0gYnVpbGQgd2l0aCBtdXNsCi0KLWVycm9yIDE6Ci0KLXxzdGFja19jbGFzaC5jOjUwOjIyOiBlcnJvcjogZXhwZWN0ZWQgaWRlbnRpZmllciBvciAnKCcgYmVmb3JlIG51bWVyaWMgY29uc3RhbnQKLXwgc3RhdGljIHVuc2lnbmVkIGxvbmcgUEFHRV9TSVpFOwotCi1UaGlzIGlzIGJlY2F1c2UgdGhlIG11c2wgbGliYyBhbHJlYWR5IGNvbnRhaW4gUEFHRV9TSVpFIGRlZmluaXRpb24gaW4gbGltaXRzLmMsCi13ZSBjYW4gY2hlY2sgaXQgaGVyZToKLQotICAgIGh0dHBzOi8vZ2l0Lm11c2wtbGliYy5vcmcvY2dpdC9tdXNsL3RyZWUvaW5jbHVkZS9saW1pdHMuaCNuNDMKLQotZXJyb3IgMjoKLQotfGNrMDEuYzoxNTc6MjI6IGVycm9yOiAnT19DUkVBVCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4gJ1NfSVJFQUQnPwotfCAgIGZkID0gb3BlbihmaWxlbmFtZSwgT19DUkVBVCB8IE9fVFJVTkMgfCBPX1JEV1IsIDA2NDQpOwotfCAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fgotfCAgICAgICAgICAgICAgICAgICAgICAgU19JUkVBRAotCi1UaGlzIGlzIGJlY2F1c2UgdGhlIG11c2wgbGliYyBwdXQgdGhvc2UgaW4gZmNudGwuaCwgc28gd2Ugc2hvdWxkIGluY2x1ZGUgdGhhdAotZmlsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgWyBodHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9wdWxsLzE5NCBdCi0KLVNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0Y2FzZXMvY3ZlL3N0YWNrX2NsYXNoLmMgICAgICAgICAgICAgICB8IDEyICsrKysrKy0tLS0tLQotIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMS5jIHwgIDEgKwotIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMi5jIHwgIDEgKwotIDMgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2N2ZS9zdGFja19jbGFzaC5jIGIvdGVzdGNhc2VzL2N2ZS9zdGFja19jbGFzaC5jCi1pbmRleCAyZWYxYTgyLi43YzQ1OTkxIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2N2ZS9zdGFja19jbGFzaC5jCi0rKysgYi90ZXN0Y2FzZXMvY3ZlL3N0YWNrX2NsYXNoLmMKLUBAIC00Nyw3ICs0Nyw3IEBACi0gI2luY2x1ZGUgInRzdF90ZXN0LmgiCi0gI2luY2x1ZGUgInRzdF9zYWZlX3N0ZGlvLmgiCi0gCi0tc3RhdGljIHVuc2lnbmVkIGxvbmcgUEFHRV9TSVpFOwotK3N0YXRpYyB1bnNpZ25lZCBsb25nIFBBR0VfU0laRV90c3Q7Ci0gc3RhdGljIHVuc2lnbmVkIGxvbmcgUEFHRV9NQVNLOwotIHN0YXRpYyB1bnNpZ25lZCBsb25nIEdBUF9QQUdFUyA9IDI1NjsKLSBzdGF0aWMgdW5zaWduZWQgbG9uZyBUSFJFU0hPTEQ7Ci1AQCAtNjYsNyArNjYsNyBAQCB2b2lkIGV4aGF1c3Rfc3RhY2tfaW50b19zaWdzZWd2KHZvaWQpCi0gCWV4aGF1c3Rfc3RhY2tfaW50b19zaWdzZWd2KCk7Ci0gfQotIAotLSNkZWZpbmUgTUFQUEVEX0xFTiBQQUdFX1NJWkUKLSsjZGVmaW5lIE1BUFBFRF9MRU4gUEFHRV9TSVpFX3RzdAotIHN0YXRpYyB1bnNpZ25lZCBsb25nIG1hcHBlZF9hZGRyOwotIAotIHZvaWQgc2Vndl9oYW5kbGVyKGludCBzaWcsIHNpZ2luZm9fdCAqaW5mbywgdm9pZCAqZGF0YSBMVFBfQVRUUklCVVRFX1VOVVNFRCkKLUBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBkb19jaGlsZCh2b2lkKQotIAlzdGFja190IHNpZ25hbF9zdGFjazsKLSAJc3RydWN0IHNpZ2FjdGlvbiBzZWd2X3NpZyA9IHsuc2Ffc2lnYWN0aW9uID0gc2Vndl9oYW5kbGVyLCAuc2FfZmxhZ3MgPSBTQV9PTlNUQUNLfFNBX1NJR0lORk99OwotIAl2b2lkICptYXA7Ci0tCXVuc2lnbmVkIGxvbmcgZ2FwID0gR0FQX1BBR0VTICogUEFHRV9TSVpFOwotKwl1bnNpZ25lZCBsb25nIGdhcCA9IEdBUF9QQUdFUyAqIFBBR0VfU0laRV90c3Q7Ci0gCXN0cnVjdCBybGltaXQgcmxpbWl0OwotIAotIAlybGltaXQucmxpbV9jdXIgPSBybGltaXQucmxpbV9tYXggPSBSTElNX0lORklOSVRZOwotQEAgLTIwMCw4ICsyMDAsOCBAQCB2b2lkIHNldHVwKHZvaWQpCi0gewotIAljaGFyIGJ1Zls0MDk2XSwgKnA7Ci0gCi0tCVBBR0VfU0laRSA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKLS0JUEFHRV9NQVNLID0gfihQQUdFX1NJWkUgLSAxKTsKLSsJUEFHRV9TSVpFX3RzdCA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKLSsJUEFHRV9NQVNLID0gfihQQUdFX1NJWkVfdHN0IC0gMSk7Ci0gCi0gCWJ1Zls0MDk1XSA9ICdcMCc7Ci0gCVNBRkVfRklMRV9TQ0FORigiL3Byb2MvY21kbGluZSIsICIlNDA5NVteXG5dIiwgYnVmKTsKLUBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBzZXR1cCh2b2lkKQotIAkJdHN0X3JlcyhUSU5GTywgInN0YWNrX2d1YXJkX2dhcCA9ICVsZCIsIEdBUF9QQUdFUyk7Ci0gCX0KLSAKLS0JVEhSRVNIT0xEID0gKEdBUF9QQUdFUyAtIDEpICogUEFHRV9TSVpFOwotKwlUSFJFU0hPTEQgPSAoR0FQX1BBR0VTIC0gMSkgKiBQQUdFX1NJWkVfdHN0OwotIAotIAl7Ci0gCQl2b2xhdGlsZSBpbnQgKmEgPSBhbGxvY2EoMTI4KTsKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Zsb2NrL2Zsb2NrMDEuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMS5jCi1pbmRleCAzZTE3YmU0Li4wNmQ4OWUzIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mbG9jay9mbG9jazAxLmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMS5jCi1AQCAtNjksNiArNjksNyBAQAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzeXMvd2FpdC5oPgotICNpbmNsdWRlIDxzeXMvZmlsZS5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlICJ0ZXN0LmgiCi0gCi0gdm9pZCBzZXR1cCh2b2lkKTsKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Zsb2NrL2Zsb2NrMDIuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMi5jCi1pbmRleCA0MTRkZjY4Li45ZGRmNzI5IDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mbG9jay9mbG9jazAyLmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMi5jCi1AQCAtNzUsNiArNzUsNyBAQAotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL2ZpbGUuaD4KLSAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSAidGVzdC5oIgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzOC1jb21tYW5kcy1nZGIwMS1yZXBsYWNlLXN0ZGluLXdpdGgtZGV2LW51bGwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzOC1jb21tYW5kcy1nZGIwMS1yZXBsYWNlLXN0ZGluLXdpdGgtZGV2LW51bGwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3YzBhNGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzgtY29tbWFuZHMtZ2RiMDEtcmVwbGFjZS1zdGRpbi13aXRoLWRldi1udWxsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSAyZjZhYjhmNjk0YjI2YjdmMjU2NjYyNGY2ZDFmMjM3ODhkNmFiOGEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDExIFNlcCAyMDE3IDEyOjU3OjU4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbW1hbmRzL2dkYjAxOiByZXBsYWNlIHN0ZGluIHdpdGggL2Rldi9udWxsCi0KLUlmIHRoaXMgdGVzdGNhc2UgcnVucyBhcyBiYWNrZ3JvdW5kIHByb2Nlc3MsIGdkYiBjYW4gcmVjZWl2ZQotU0lHVFRPVSBhbmQgdGhlbiB0ZXN0Y2FzZSBnZXRzIHN0dWNrLgotCi1TaWduZWQtb2ZmLWJ5OiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwL2NvbW1pdC8yZjZhYjhmNjk0YjI2YjdmMjU2NjYyNGY2ZDFmMjM3ODhkNmFiOGEwXQotCi1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0Y2FzZXMvY29tbWFuZHMvZ2RiL2dkYjAxLnNoIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2NvbW1hbmRzL2dkYi9nZGIwMS5zaCBiL3Rlc3RjYXNlcy9jb21tYW5kcy9nZGIvZ2RiMDEuc2gKLWluZGV4IDA3YWUzNmYuLmUzYTViNTEgMTAwNzU1Ci0tLS0gYS90ZXN0Y2FzZXMvY29tbWFuZHMvZ2RiL2dkYjAxLnNoCi0rKysgYi90ZXN0Y2FzZXMvY29tbWFuZHMvZ2RiL2dkYjAxLnNoCi1AQCAtMjksNyArMjksNyBAQCBUU1RfTkVFRFNfQ01EUz0iZ2RiIC9iaW4vY2F0IgotIAotIHNpbXBsZV90ZXN0KCkKLSB7Ci0tCWdkYiAvYmluL2NhdCAtZXggInJ1biAvZXRjL3Bhc3N3ZCIgLWV4IHF1aXQKLSsJZ2RiIC9iaW4vY2F0IC1leCAicnVuIC9ldGMvcGFzc3dkIiAtZXggcXVpdCA8IC9kZXYvbnVsbAotIAlSQz0kPwotIAlpZiBbICRSQyAtZXEgMCBdIDsgdGhlbgotIAkJdHN0X3JlcyBUUEFTUyAiZ2RiIGF0dGFjaGVkIHRvIHByb2Nlc3MgYW5kIGNvbXBsZXRlZCBydW4iCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDM5LWNvbW1hbmRzLWFyMDEtRml4LWZvci10ZXN0LWluLWRldGVybWluaXN0aWMtbW9kZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDM5LWNvbW1hbmRzLWFyMDEtRml4LWZvci10ZXN0LWluLWRldGVybWluaXN0aWMtbW9kZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2M5MjdlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzktY29tbWFuZHMtYXIwMS1GaXgtZm9yLXRlc3QtaW4tZGV0ZXJtaW5pc3RpYy1tb2RlLnBhdGNoCkBAIC0wLDAgKzEsMjUyIEBACitGcm9tIDA0ZGE5NDc4ODg3ZTcwNWVhMzhlNGYwOTc0OTJkYTIwZTY1MTY4NmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBHdWFuZ3dlbiBGZW5nIDxmZW5nZ3ctZm5zdEBjbi5mdWppdHN1LmNvbT4KK0RhdGU6IFdlZCwgMTMgU2VwIDIwMTcgMTU6NDg6NDIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gY29tbWFuZHMvYXIwMTogRml4IGZvciB0ZXN0IGluIGRldGVybWluaXN0aWMgbW9kZQorCitJZiBiaW51dGlscyB3YXMgY29uZmlndXJlZCB3aXRoIC0tZW5hYmxlLWRldGVybWluaXN0aWMtYXJjaGl2ZXMsCithciB3aWxsIHJ1biBpbiBkZXRlcm1pbmlzdGljIG1vZGUgYnkgZGVmYXVsdCwgYW5kIHVzZSB6ZXJvIGZvcgordGltZXN0YW1wcyBhbmQgdWlkcy9naWRzLCB3aGljaCBtYWtlcyB0aGUgdGVzdCBjYXNlIGFibm9ybWFsLgorCitGaXggdGhpcyBieSBhZGQgdGhlICJVIiBtb2RpZmllciB3aGVuIGRldGVybWluaXN0aWMgbW9kZSBpcyBkZWZhdWx0LgorCitTaWduZWQtb2ZmLWJ5OiBHdWFuZ3dlbiBGZW5nIDxmZW5nZ3ctZm5zdEBjbi5mdWppdHN1LmNvbT4KK1NpZ25lZC1vZmYtYnk6IEZlaSBKaWUgPGZlaWouZm5zdEBjbi5mdWppdHN1LmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHA6Ly9saXN0cy5saW51eC5pdC9waXBlcm1haWwvbHRwLzIwMTctU2VwdGVtYmVyLzAwNTY2OC5odG1sXQorCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyB0ZXN0Y2FzZXMvY29tbWFuZHMvYXIvYXIwMSB8IDkyICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNTIgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMvY29tbWFuZHMvYXIvYXIwMSBiL3Rlc3RjYXNlcy9jb21tYW5kcy9hci9hcjAxCitpbmRleCBkZGFiMmUwLi5kNjg4Zjc2IDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL2NvbW1hbmRzL2FyL2FyMDEKKysrKyBiL3Rlc3RjYXNlcy9jb21tYW5kcy9hci9hcjAxCitAQCAtMjMsMTQgKzIzLDI2IEBACisgIyBUaGlzIGlzIGEgYmFzaWMgYXIgY29tbWFuZCB0ZXN0LgorICMKKyBUU1RfQ05UPTE3CisrVFNUX1NFVFVQPXNldHVwCisgVFNUX1RFU1RGVU5DPXRlc3QKKyBUU1RfTkVFRFNfVE1QRElSPTEKKyAuIHRzdF90ZXN0LnNoCisgCisrc2V0dXAoKQorK3sKKysJYXIgLS1oZWxwIHwgZ3JlcCAidXNlIHplcm8gZm9yIHRpbWVzdGFtcHMgYW5kIHVpZHMvZ2lkcyAoZGVmYXVsdCkiIFwKKysJCT4vZGV2L251bGwKKysJaWYgWyAkPyAtZXEgMCBdOyB0aGVuCisrCQlNT0Q9IlUiCisrCWVsc2UKKysJCU1PRD0iIgorKwlmaQorK30KKysKKyB0ZXN0MSgpCisgeworLQlST0QgYXIgLWNyIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMy5pbgorLQlST0QgYXIgLXJhIGZpbGUxLmluIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKysJUk9EIGFyIC1jciIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTMuaW4KKysJUk9EIGFyIC1yYSIkTU9EIiBmaWxlMS5pbiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUyLmluCisgCVJPRCBhciAtdCBsaWIuYSBcPiBhci5vdXQKKyAKKyAJcHJpbnRmICJmaWxlMS5pblxuZmlsZTIuaW5cbmZpbGUzLmluXG4iID4gYXIuZXhwCitAQCAtNDcsOSArNTksOSBAQCB0ZXN0MSgpCisgCisgdGVzdDIoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTIuaW4gXAorLQkJICAgICAgICAgJFRTVF9EQVRBUk9PVC9maWxlMy5pbiAkVFNUX0RBVEFST09UL2ZpbGU0LmluCistCVJPRCBhciAtbWEgZmlsZTEuaW4gbGliLmEgZmlsZTQuaW4KKysJUk9EIGFyIC1jciIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTIuaW4gXAorKwkJCSAgICAgICAkVFNUX0RBVEFST09UL2ZpbGUzLmluICRUU1RfREFUQVJPT1QvZmlsZTQuaW4KKysJUk9EIGFyIC1tYSIkTU9EIiBmaWxlMS5pbiBsaWIuYSBmaWxlNC5pbgorIAlST0QgYXIgLXQgbGliLmEgXD4gYXIub3V0CisgCisgCXByaW50ZiAiZmlsZTEuaW5cbmZpbGU0LmluXG5maWxlMi5pblxuZmlsZTMuaW5cbiIgPiBhci5leHAKK0BAIC02Niw4ICs3OCw4IEBAIHRlc3QyKCkKKyAKKyB0ZXN0MygpCisgeworLQlST0QgYXIgLWNyIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMy5pbgorLQlST0QgYXIgLXJiIGZpbGUzLmluIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKysJUk9EIGFyIC1jciIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTMuaW4KKysJUk9EIGFyIC1yYiIkTU9EIiBmaWxlMy5pbiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUyLmluCisgCVJPRCBhciAtdCBsaWIuYSBcPiBhci5vdXQKKyAKKyAJcHJpbnRmICJmaWxlMS5pblxuZmlsZTIuaW5cbmZpbGUzLmluXG4iID4gYXIuZXhwCitAQCAtODQsOSArOTYsOSBAQCB0ZXN0MygpCisgCisgdGVzdDQoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTMuaW4gXAorLQkgICAgICAgICAgICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKy0JUk9EIGFyIC1tYiBmaWxlMy5pbiBsaWIuYSBmaWxlMi5pbgorKwlST0QgYXIgLWNyIiRNT0QiIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMy5pbiBcCisrCQkJICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKysJUk9EIGFyIC1tYiIkTU9EIiBmaWxlMy5pbiBsaWIuYSBmaWxlMi5pbgorIAlST0QgYXIgLXQgbGliLmEgXD4gYXIub3V0CisgCisgCXByaW50ZiAiZmlsZTEuaW5cbmZpbGUyLmluXG5maWxlMy5pblxuIiA+IGFyLmV4cAorQEAgLTEwMyw3ICsxMTUsNyBAQCB0ZXN0NCgpCisgCisgdGVzdDUoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluIFw+IGFyLm91dAorKwlST0QgYXIgLWNyIiRNT0QiIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gXD4gYXIub3V0CisgCisgCWlmIFsgLXMgYXIub3V0IF07IHRoZW4KKyAJCXRzdF9yZXMgVEZBSUwgImFyIHByb2R1Y2VkIG91dHB1dCB1bmV4cGVjdGVkbHkgKC1jKSIKK0BAIC0xMTcsNyArMTI5LDcgQEAgdGVzdDUoKQorIAorIHRlc3Q2KCkKKyB7CistCVJPRCBhciAtcWMgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiBcPiBhci5vdXQKKysJUk9EIGFyIC1xYyIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluIFw+IGFyLm91dAorIAorIAlpZiBbIC1zIGFyLm91dCBdOyB0aGVuCisgCQl0c3RfcmVzIFRGQUlMICJhciBwcm9kdWNlZCBvdXRwdXQgdW5leHBlY3RlZGx5ICgtcWMpIgorQEAgLTEzMSw5ICsxNDMsOSBAQCB0ZXN0NigpCisgCisgdGVzdDcoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTIuaW4gXAorLQkgICAgICAgICAgICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTMuaW4KKy0JUk9EIGFyIC1kIGxpYi5hIGZpbGUxLmluIGZpbGUyLmluCisrCVJPRCBhciAtY3IiJE1PRCIgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiAkVFNUX0RBVEFST09UL2ZpbGUyLmluIFwKKysJCQkgICAgICAgJFRTVF9EQVRBUk9PVC9maWxlMy5pbgorKwlST0QgYXIgLWQiJE1PRCIgbGliLmEgZmlsZTEuaW4gZmlsZTIuaW4KKyAJUk9EIGFyIC10IGxpYi5hIFw+IGFyLm91dAorIAorIAlwcmludGYgImZpbGUzLmluXG4iID4gYXIuZXhwCitAQCAtMTUwLDkgKzE2Miw5IEBAIHRlc3Q3KCkKKyAKKyB0ZXN0OCgpCisgeworLQlST0QgYXIgLWNyIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMi5pbiBcCistCSAgICAgICAgICAgICAgICAgJFRTVF9EQVRBUk9PVC9maWxlMy5pbgorLQlST0QgYXIgLWQgbGliLmEKKysJUk9EIGFyIC1jciIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTIuaW4gXAorKwkJCSAgICAgICAkVFNUX0RBVEFST09UL2ZpbGUzLmluCisrCVJPRCBhciAtZCIkTU9EIiBsaWIuYQorIAlST0QgYXIgLXQgbGliLmEgXD4gYXIub3V0CisgCisgCXByaW50ZiAiZmlsZTEuaW5cbmZpbGUyLmluXG5maWxlMy5pblxuIiA+IGFyLmV4cAorQEAgLTE2OSw4ICsxODEsOCBAQCB0ZXN0OCgpCisgCisgdGVzdDkoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTMuaW4KKy0JUk9EIGFyIC1yaSBmaWxlMy5pbiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUyLmluCisrCVJPRCBhciAtY3IiJE1PRCIgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiAkVFNUX0RBVEFST09UL2ZpbGUzLmluCisrCVJPRCBhciAtcmkiJE1PRCIgZmlsZTMuaW4gbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMi5pbgorIAlST0QgYXIgLXQgbGliLmEgXD4gYXIub3V0CisgCisgCXByaW50ZiAiZmlsZTEuaW5cbmZpbGUyLmluXG5maWxlMy5pblxuIiA+IGFyLmV4cAorQEAgLTE4Nyw5ICsxOTksOSBAQCB0ZXN0OSgpCisgCisgdGVzdDEwKCkKKyB7CistCVJPRCBhciAtY3IgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiAkVFNUX0RBVEFST09UL2ZpbGUzLmluIFwKKy0JICAgICAgICAgICAgICAgICAkVFNUX0RBVEFST09UL2ZpbGUyLmluCistCVJPRCBhciAtbWkgZmlsZTMuaW4gbGliLmEgZmlsZTIuaW4KKysJUk9EIGFyIC1jciIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTMuaW4gXAorKwkJCSAgICAgICAkVFNUX0RBVEFST09UL2ZpbGUyLmluCisrCVJPRCBhciAtbWkiJE1PRCIgZmlsZTMuaW4gbGliLmEgZmlsZTIuaW4KKyAJUk9EIGFyIC10IGxpYi5hIFw+IGFyLm91dAorIAorIAlwcmludGYgImZpbGUxLmluXG5maWxlMi5pblxuZmlsZTMuaW5cbiIgPiBhci5leHAKK0BAIC0yMDYsOSArMjE4LDkgQEAgdGVzdDEwKCkKKyAKKyB0ZXN0MTEoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTMuaW4gXAorLQkgICAgICAgICAgICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKy0JUk9EIGFyIC1tIGxpYi5hIGZpbGUzLmluCisrCVJPRCBhciAtY3IiJE1PRCIgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiAkVFNUX0RBVEFST09UL2ZpbGUzLmluIFwKKysJCQkgICAgICAgJFRTVF9EQVRBUk9PVC9maWxlMi5pbgorKwlST0QgYXIgLW0iJE1PRCIgbGliLmEgZmlsZTMuaW4KKyAJUk9EIGFyIC10IGxpYi5hIFw+IGFyLm91dAorIAorIAlwcmludGYgImZpbGUxLmluXG5maWxlMi5pblxuZmlsZTMuaW5cbiIgPiBhci5leHAKK0BAIC0yMjUsOSArMjM3LDkgQEAgdGVzdDExKCkKKyAKKyB0ZXN0MTIoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTIuaW4gXAorLQkgICAgICAgICAgICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTMuaW4KKy0JUk9EIGFyIC1wIGxpYi5hIFw+IGFyLm91dAorKwlST0QgYXIgLWNyIiRNT0QiIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMi5pbiBcCisrCQkJICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTMuaW4KKysJUk9EIGFyIC1wIiRNT0QiIGxpYi5hIFw+IGFyLm91dAorIAorIAlwcmludGYgIlRoaXMgaXMgZmlsZSBvbmVcblRoaXMgaXMgZmlsZSB0d29cblRoaXMgaXMgZmlsZSB0aHJlZVxuIiA+IGFyLmV4cAorIAorQEAgLTI0NCw5ICsyNTYsOSBAQCB0ZXN0MTIoKQorIHRlc3QxMygpCisgeworIAorLQlST0QgYXIgLWNyIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMi5pbiBcCistCSAgICAgICAgICAgICAgICAgJFRTVF9EQVRBUk9PVC9maWxlMy5pbgorLQlST0QgYXIgLXEgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlNC5pbgorKwlST0QgYXIgLWNyIiRNT0QiIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTEuaW4gJFRTVF9EQVRBUk9PVC9maWxlMi5pbiBcCisrCQkJICAgICAgICRUU1RfREFUQVJPT1QvZmlsZTMuaW4KKysJUk9EIGFyIC1xIiRNT0QiIGxpYi5hICRUU1RfREFUQVJPT1QvZmlsZTQuaW4KKyAJUk9EIGFyIC10IGxpYi5hIFw+IGFyLm91dAorIAorIAlwcmludGYgImZpbGUxLmluXG5maWxlMi5pblxuZmlsZTMuaW5cbmZpbGU0LmluXG4iID4gYXIuZXhwCitAQCAtMjY0LDE0ICsyNzYsMTQgQEAgdGVzdDEzKCkKKyB0ZXN0MTQoKQorIHsKKyAJUk9EIHRvdWNoIGZpbGUwLmluCistCVJPRCBhciAtY3IgbGliLmEgZmlsZTAuaW4gJFRTVF9EQVRBUk9PVC9maWxlMS5pbgorKwlST0QgYXIgLWNyIiRNT0QiIGxpYi5hIGZpbGUwLmluICRUU1RfREFUQVJPT1QvZmlsZTEuaW4KKyAKKyAJZmlsZTBfbXRpbWUxPSQoYXIgLXR2IGxpYi5hIHwgZ3JlcCBmaWxlMC5pbikKKyAJZmlsZTFfbXRpbWUxPSQoYXIgLXR2IGxpYi5hIHwgZ3JlcCBmaWxlMS5pbikKKyAKKyAJdG91Y2ggLWMgLXQgJChkYXRlIC0tZGF0ZT0nbmV4dCBkYXknICsiJVklbSVkJUglTSIpIGZpbGUwLmluCisgCistCVJPRCBhciAtcnUgbGliLmEgZmlsZTAuaW4gJFRTVF9EQVRBUk9PVC9maWxlMS5pbgorKwlST0QgYXIgLXJ1IiRNT0QiIGxpYi5hIGZpbGUwLmluICRUU1RfREFUQVJPT1QvZmlsZTEuaW4KKyAKKyAJZmlsZTBfbXRpbWUyPSQoYXIgLXR2IGxpYi5hIHwgZ3JlcCBmaWxlMC5pbikKKyAJZmlsZTFfbXRpbWUyPSQoYXIgLXR2IGxpYi5hIHwgZ3JlcCBmaWxlMS5pbikKK0BAIC0yOTMsNyArMzA1LDcgQEAgdGVzdDE0KCkKKyAKKyB0ZXN0MTUoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluCisrCVJPRCBhciAtY3IiJE1PRCIgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbgorIAlST0QgYXIgLXR2IGxpYi5hIFw+IGFyLm91dAorIAorIAlpZiBncmVwIC1xICdbcnd4LV1cezlcfSBbMC05XS4qL1swLTldLipccypbMC05XS4qLipmaWxlMS5pbicgYXIub3V0OyB0aGVuCitAQCAtMzA4LDkgKzMyMCw5IEBAIHRlc3QxNSgpCisgCisgdGVzdDE2KCkKKyB7CistCVJPRCBhciAtY3IgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiAkVFNUX0RBVEFST09UL2ZpbGUyLmluIFwKKy0JICAgICAgICAgICAgICAgICAkVFNUX0RBVEFST09UL2ZpbGUzLmluCistCVJPRCBhciAteHYgbGliLmEgXD4gYXIub3V0CisrCVJPRCBhciAtY3IiJE1PRCIgbGliLmEgJFRTVF9EQVRBUk9PVC9maWxlMS5pbiAkVFNUX0RBVEFST09UL2ZpbGUyLmluIFwKKysJCQkgICAgICAgJFRTVF9EQVRBUk9PVC9maWxlMy5pbgorKwlST0QgYXIgLXh2IiRNT0QiIGxpYi5hIFw+IGFyLm91dAorIAorIAlwcmludGYgInggLSBmaWxlMS5pblxueCAtIGZpbGUyLmluXG54IC0gZmlsZTMuaW5cbiIgPiBhci5leHAKKyAKK0BAIC0zMzIsOCArMzQ0LDggQEAgdGVzdDE2KCkKKyAKKyB0ZXN0MTcoKQorIHsKKy0JUk9EIGFyIC1jciBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKy0JUk9EIGFyIC14diBsaWIuYSBmaWxlMi5pbiBcPiBhci5vdXQKKysJUk9EIGFyIC1jciIkTU9EIiBsaWIuYSAkVFNUX0RBVEFST09UL2ZpbGUxLmluICRUU1RfREFUQVJPT1QvZmlsZTIuaW4KKysJUk9EIGFyIC14diIkTU9EIiBsaWIuYSBmaWxlMi5pbiBcPiBhci5vdXQKKyAKKyAJcHJpbnRmICJ4IC0gZmlsZTIuaW5cbiIgPiBhci5leHAKKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwNDAtc2FmZV9tYWNyb3MtbWFrZS1pc19mdXNlLXJldHVybi16ZXJvLWlmLWZzX3R5cGUtaXMtTi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDQwLXNhZmVfbWFjcm9zLW1ha2UtaXNfZnVzZS1yZXR1cm4temVyby1pZi1mc190eXBlLWlzLU4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA5NmE4NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDQwLXNhZmVfbWFjcm9zLW1ha2UtaXNfZnVzZS1yZXR1cm4temVyby1pZi1mc190eXBlLWlzLU4ucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSA2N2FmN2RiZThiZGYyOWY5ZWQ5ODBkOGQyOWZlZWFlMzJhMGE3YTFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTGkgV2FuZyA8bGl3YW5nQHJlZGhhdC5jb20+CitEYXRlOiBUdWUsIDIzIEphbiAyMDE4IDE3OjQ2OjM1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHNhZmVfbWFjcm9zOiBtYWtlIGlzX2Z1c2UoKSByZXR1cm4gemVybyBpZiBmc190eXBlIGlzIE5VTEwKKworVGhpcyBjb21tbWl0IDI4NTA3ZTUxNGMoc2FmZV9tb3VudDogRG8gbm90IHRyeSBtb3VudCgpIHN5c2NhbGwgZm9yIEZVU0UgZnMpCitpbnZvbHZlcyBGVVNFIGZzIGNoZWNrIGluIHNhZmVfbW91bnQoKSwgYnV0IHdlJ2QgYmV0dGVyIGd1YXJhbnRlZSB0aGUgImZzX3R5cGUiCitpcyBsZWdhbCB0byBjaGVjayBpbiBpc19mdXNlKCkgZnVuY3Rpb24gb3RoZXJ3aXNlIHN5c3RlbSB3aWxsIGtpbGwgdGhlIHByb2dyYW0uCisKKyAgY21kbGluZT0iZmFub3RpZnkwNiIKKyAgY29udGFjdHM9IiIKKyAgYW5hbHlzaXM9ZXhpdAorICA8PDx0ZXN0X291dHB1dD4+PgorICB0c3RfdGVzdC5jOjk4MDogSU5GTzogVGltZW91dCBwZXIgcnVuIGlzIDBoIDEwbSAwMHMKKyAgdHN0X3Rlc3QuYzoxMDI1OiBCUk9LOiBUZXN0IGtpbGxlZCBieSBTSUdTRUdWIQorCitTaWduZWQtb2ZmLWJ5OiBMaSBXYW5nIDxsaXdhbmdAcmVkaGF0LmNvbT4KK0Fja2VkLWJ5OiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwL2NvbW1pdC82N2FmN2RiZThiZGYyOWY5ZWQ5ODBkOGQyOWZlZWFlMzJhMGE3YTFkXQorLS0tCisgbGliL3NhZmVfbWFjcm9zLmMgfCAzICsrKworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYi9zYWZlX21hY3Jvcy5jIGIvbGliL3NhZmVfbWFjcm9zLmMKK2luZGV4IGM0OGU0MzZkYy4uYWJkZWNhMDEzIDEwMDY0NAorLS0tIGEvbGliL3NhZmVfbWFjcm9zLmMKKysrKyBiL2xpYi9zYWZlX21hY3Jvcy5jCitAQCAtNzA4LDYgKzcwOCw5IEBAIHN0YXRpYyBpbnQgaXNfZnVzZShjb25zdCBjaGFyICpmc190eXBlKQorIHsKKyAJdW5zaWduZWQgaW50IGk7CisgCisrCWlmICghZnNfdHlwZSkKKysJCXJldHVybiAwOworKworIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShmdXNlX2ZzX3R5cGVzKTsgaSsrKSB7CisgCQlpZiAoIXN0cmNtcChmdXNlX2ZzX3R5cGVzW2ldLCBmc190eXBlKSkKKyAJCQlyZXR1cm4gMTsKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE3MDUxNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE3MDUxNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjUzY2JmZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxNzA1MTYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJMaW51eCBUZXN0IFByb2plY3QiCi1ERVNDUklQVElPTiA9ICJUaGUgTGludXggVGVzdCBQcm9qZWN0IGlzIGEgam9pbnQgcHJvamVjdCB3aXRoIFNHSSwgSUJNLCBPU0RMLCBhbmQgQnVsbCB3aXRoIGEgZ29hbCB0byBkZWxpdmVyIHRlc3Qgc3VpdGVzIHRvIHRoZSBvcGVuIHNvdXJjZSBjb21tdW5pdHkgdGhhdCB2YWxpZGF0ZSB0aGUgcmVsaWFiaWxpdHksIHJvYnVzdG5lc3MsIGFuZCBzdGFiaWxpdHkgb2YgTGludXguIFRoZSBMaW51eCBUZXN0IFByb2plY3QgaXMgYSBjb2xsZWN0aW9uIG9mIHRvb2xzIGZvciB0ZXN0aW5nIHRoZSBMaW51eCBrZXJuZWwgYW5kIHJlbGF0ZWQgZmVhdHVyZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2x0cC5zb3VyY2Vmb3JnZS5uZXQiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyICYgR1BMdjIrICYgTEdQTHYyKyAmIExHUEx2Mi4xKyAmIEJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9ydW5fZnJlZXplci5zaDtiZWdpbmxpbmU9NTtlbmRsaW5lPTE3O21kNT04NmE2MWQyYzA0MmQ1OTgzNmZmYjM1M2EyMTQ1NjQ5OCBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9tZW1vcnlfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9jcHVfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9DT1BZSU5HO21kNT00OGIxYzVlYzYzM2UzZTMwZWMyY2Y4ODRhZTY5OTk0NyBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9yZWFsdGltZS9DT1BZSU5HO21kNT0xMmY4ODRkMmFlMWZmODdjMDllNWI3Y2NjMmM0Y2E3ZSBcCi0gICAgZmlsZTovL3Rvb2xzL3BvdW5kZXIyMS9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgZmlsZTovL3V0aWxzL2JlbmNobWFyay9rZXJuYmVuY2gtMC40Mi9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgZmlsZTovL3V0aWxzL2Zmc2ItNi4wLXJjMi9DT1BZSU5HO21kNT1jNDYwODIxNjdhMzE0ZDc4NWQwMTJhMjQ0NzQ4ZDgwMyBcCi0iCi0KLURFUEVORFMgPSAiYXR0ciBsaWJhaW8gbGliY2FwIGFjbCBvcGVuc3NsIHppcC1uYXRpdmUiCi1ERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGZ0cyAiCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2xpYmMtbXVzbCA9ICIgTElCQz1tdXNsICIKLUNGTEFHU19hcHBlbmRfcG93ZXJwYzY0ID0gIiAtRF9fU0FORV9VU0VSU1BBQ0VfVFlQRVNfXyIKLUNGTEFHU19hcHBlbmRfbWlwc2FyY2huNjQgPSAiIC1EX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fIgotU1JDUkVWID0gIjE4OTE2YTJlNmQ4Yzk5N2I3YjI5ZGNmYTk1NTBkNWExNWIyMmVkMjIiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWFkZC1fR05VX1NPVVJDRS10by1wZWNfbGlzdGVuZXIuYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1rbm9iLXRvLWNvbnRyb2wtd2hldGhlci1udW1hLXN1cHBvcnQtc2hvdWxkLWJlLWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1BZGQta25vYi10by1jb250cm9sLXRpcnBjLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUta2VybmVsLWNvbnRyb2xsZXJzLUxpbmstd2l0aC1saWJmdHMtZXhwbGljaXRseS1vbi1tdS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LWZpeC1fX1dPUkRTSVpFLXVuZGVjbGFyZWQtd2hlbi1idWlsZGluZy13aXRoLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA5LWZpeC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LW1zZ2J1Zi1lcnJvci1idWlsZGluZy13aXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1yZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtUmVuYW1lLXNpZ3NldC12YXJpYWJsZS10by1zaWdzZXQxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTgtZ3VhcmQtbWFsbG9jb3B0LXdpdGgtX19HTElCQ19fLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjAtZ2V0ZGVudHMtZGVmaW5lLWdldGRlbnRzLWdldGRlbnRzNjQtb25seS1mb3ItZ2xpYmMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMS1EZWZpbmUtX0dOVV9TT1VSQ0UtZm9yLU1SRU1BUF9NQVlNT1ZFLWRlZmluaXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMy1wdHJhY2UtVXNlLWludC1pbnN0ZWFkLW9mLWVudW0tX19wdHJhY2VfcmVxdWVzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI0LXJ0X3NpZ2FjdGlvbi1ydF9zaWdwcm9jbWFyay1EZWZpbmUtX0dOVV9TT1VSQ0UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNS1tY19nZXRob3N0LWluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNi1jcmFzaDAxLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI3LXN5c2NvbmYwMS1Vc2UtX1NDXzJfQ19WRVJTSU9OLWNvbmRpdGlvbmFsbHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyOC1ydF9zaWdhY3Rpb24uaC1Vc2Utc2lnaGFuZGxlcl90LWluc3RlYWQtb2YtX19zaWdoYW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzAtbGliLVVzZS1QVEhSRUFEX01VVEVYX1JFQ1VSU0lWRS1pbi1wbGFjZS1vZi1QVEhSRUFEXy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMzLXNobWF0MS1Db3Zlci1HTlUtc3BlY2lmaWMtY29kZS11bmRlci1fX1VTRV9HTlUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNC1wZXJpb2RpY19vdXRwdXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNS1maXgtdGVzdF9wcm9jX2tpbGwtaGFuZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM2LXRlc3RjYXNlcy1uZXR3b3JrLW5mc3Y0LWFjbC1hY2wxLmMtU2VjdXJpdHktZml4LW9uLXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNy1sdHAtZml4LVBBR0VfU0laRS1yZWRlZmluaXRpb24tYW5kLU9fQ1JFQVQtdW5kZWNsZWFyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzgtY29tbWFuZHMtZ2RiMDEtcmVwbGFjZS1zdGRpbi13aXRoLWRldi1udWxsLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLWV4cG9ydCBwcmVmaXggPSAiL29wdC9sdHAiCi1leHBvcnQgZXhlY19wcmVmaXggPSAiL29wdC9sdHAiCi0KLVBBQ0tBR0VDT05GSUdbbnVtYV0gPSAiLS13aXRoLW51bWEsIC0td2l0aG91dC1udW1hLCBudW1hY3RsLCIKLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vdGVzdGNhc2VzL3JlYWx0aW1lL200IgotRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcG93ZXItbWFuYWdlbWVudC10ZXN0c3VpdGUgLS13aXRoLXJlYWx0aW1lLXRlc3RzdWl0ZSAiCi0jIGx0cCBuZXR3b3JrL3JwYyB0ZXN0IGNhc2VzIGZ0YmZzIHdoZW4gbGlidGlycGMgaXMgZm91bmQKLUVYVFJBX09FQ09ORiArPSAiIC0td2l0aG91dC10aXJwYyAiCi0KLWRvX2luc3RhbGwoKXsKLSAgICBpbnN0YWxsIC1kICR7RH0vb3B0L2x0cC8KLSAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBTS0lQX0lEQ0hFQ0s9MSBpbnN0YWxsCi0KLSAgICAjIGZpeHVwIG5vdCBkZXBsb3kgU1RQZmFpbHVyZV9yZXBvcnQucGwgdG8gYXZvaWQgY29uZnVzaW5nIGFib3V0IGl0IGZhaWxzIHRvIHJ1bgotICAgICMgYXMgaXQgbGFja3MgZGVwZW5kZW5jeSBvbiBzb21lIHBlcmwgbW91ZGxlIHN1Y2ggYXMgTFdQOjpTaW1wbGUKLSAgICAjIEFuZCB0aGlzIHNjcmlwdCBwcmV2aW91c2x5IHdvcmtzIGFzIGEgdG9vbCBmb3IgYW5hbHl6aW5nIGZhaWx1cmVzIGZyb20gTFRQCi0gICAgIyBydW5zIG9uIHRoZSBPU0RMJ3MgU2NhbGVhYmxlIFRlc3QgUGxhdGZvcm0gKFNUUCkgYW5kIGl0IG1haW5seSBhY2Nlc3NlcwotICAgICMgaHR0cDovL2toYWNrLm9zZGwub3JnIHRvIHJldHJpZXZlIGx0cCB0ZXN0IHJlc3VsdHMgcnVuIG9uCi0gICAgIyBPU0RMJ3MgU2NhbGVhYmxlIFRlc3QgUGxhdGZvcm0sIGJ1dCBub3cgaHR0cDovL2toYWNrLm9zZGwub3JnIHVuYWNjZXNzaWJsZQotICAgIHJtIC1yZiAke0R9L29wdC9sdHAvYmluL1NUUGZhaWx1cmVfcmVwb3J0LnBsCi0KLSAgICAjIENvcHkgUE9TSVggdGVzdCBzdWl0ZSBpbnRvICR7RH0vb3B0L2x0cC90ZXN0Y2FzZXMgYnkgbWFudWFsCi0gICAgY3AgLXIgdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlICR7RH0vb3B0L2x0cC90ZXN0Y2FzZXMKLX0KLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgIGFjbCBcCi0gICAgYXQgXAotICAgIGF0dHIgXAotICAgIGJhc2ggXAotICAgIGNwaW8gXAotICAgIGNyb25pZSBcCi0gICAgY3VybCBcCi0gICAgZTJmc3Byb2dzLW1rZTJmcyBcCi0gICAgZXhwZWN0IFwKLSAgICBnYXdrIFwKLSAgICBnemlwIFwKLSAgICBpcHJvdXRlMiBcCi0gICAgbGRkIFwKLSAgICBsaWJhaW8gXAotICAgIGxvZ3JvdGF0ZSBcCi0gICAgcGVybCBcCi0gICAgcHl0aG9uLWNvcmUgXAotICAgIHVuemlwIFwKLSAgICB1dGlsLWxpbnV4IFwKLSAgICB3aGljaCBcCi0iCi0KLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiL29wdC9sdHAvbGliL2xpYm1lbS5hIC9vcHQvbHRwL3Rlc3RjYXNlcy9kYXRhL25tMDEvbGliLmEiCi0KLUZJTEVTXyR7UE59ICs9ICIvb3B0L2x0cC8qIC9vcHQvbHRwL3J1bnRlc3QvKiAvb3B0L2x0cC9zY2VuYXJpb19ncm91cHMvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvYmluLyogL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi8qL2Jpbi8qIC9vcHQvbHRwL3Rlc3RzY3JpcHRzLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2NvbmZvcm1hbmNlLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL0RvY3VtZW50YXRpb24vKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvZnVuY3Rpb25hbC8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9pbmNsdWRlLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL3NjcmlwdHMvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvc3RyZXNzLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL3Rvb2xzLyoiCi0KLSMgQXZvaWQgZ2VuZXJhdGVkIGJpbmFyaWVzIHN0cmlwcGluZy4gT3RoZXJ3aXNlIHNvbWUgb2YgdGhlIGx0cCB0ZXN0cyBzdWNoIGFzIGxkZDAxICYgbm0wMSBmYWlscwotSU5ISUJJVF9QQUNLQUdFX1NUUklQID0gIjEiCi1JTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQgPSAiMSIKLSMgSG93ZXZlciwgdGVzdF9hcmNoX3N0cmlwcGVkIGlzIGFscmVhZHkgc3RyaXBwZWQsIHNvLi4uCi1JTlNBTkVfU0tJUF8ke1BOfSArPSAiYWxyZWFkeS1zdHJpcHBlZCIKLQotIyBBdm9pZCBmaWxlIGRlcGVuZGVuY3kgc2NhbnMsIGFzIExUUCBjaGVja3MgZm9yIHRoaW5ncyB0aGF0IG1heSBvciBtYXkgbm90Ci0jIGV4aXN0IG9uIHRoZSBydW5uaW5nIHN5c3RlbS4gIEZvciBpbnN0YW5jZSBpdCBoYXMgc3BlY2lmaWMgY2hlY2tzIGZvcgotIyBjc2ggYW5kIGtzaCB3aGljaCBhcmUgbm90IHR5cGljYWxseSBwYXJ0IG9mIE9wZW5FbWJlZGRlZCBzeXN0ZW1zIChidXQKLSMgY2FuIGJlIGFkZGVkIHZpYSBhZGRpdGlvbmFsIGxheWVycy4pCi1TS0lQX0ZJTEVERVBTXyR7UE59ID0gJzEnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxODAxMTguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxODAxMTguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRmYjQxYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE4MDExOC5iYgpAQCAtMCwwICsxLDExNiBAQAorU1VNTUFSWSA9ICJMaW51eCBUZXN0IFByb2plY3QiCitERVNDUklQVElPTiA9ICJUaGUgTGludXggVGVzdCBQcm9qZWN0IGlzIGEgam9pbnQgcHJvamVjdCB3aXRoIFNHSSwgSUJNLCBPU0RMLCBhbmQgQnVsbCB3aXRoIGEgZ29hbCB0byBkZWxpdmVyIHRlc3Qgc3VpdGVzIHRvIHRoZSBvcGVuIHNvdXJjZSBjb21tdW5pdHkgdGhhdCB2YWxpZGF0ZSB0aGUgcmVsaWFiaWxpdHksIHJvYnVzdG5lc3MsIGFuZCBzdGFiaWxpdHkgb2YgTGludXguIFRoZSBMaW51eCBUZXN0IFByb2plY3QgaXMgYSBjb2xsZWN0aW9uIG9mIHRvb2xzIGZvciB0ZXN0aW5nIHRoZSBMaW51eCBrZXJuZWwgYW5kIHJlbGF0ZWQgZmVhdHVyZXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL2x0cC5zb3VyY2Vmb3JnZS5uZXQiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyICYgR1BMdjIrICYgTEdQTHYyKyAmIExHUEx2Mi4xKyAmIEJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9ydW5fZnJlZXplci5zaDtiZWdpbmxpbmU9NTtlbmRsaW5lPTE3O21kNT04NmE2MWQyYzA0MmQ1OTgzNmZmYjM1M2EyMTQ1NjQ5OCBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9tZW1vcnlfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9jcHVfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9DT1BZSU5HO21kNT00OGIxYzVlYzYzM2UzZTMwZWMyY2Y4ODRhZTY5OTk0NyBcCisgICAgZmlsZTovL3Rlc3RjYXNlcy9yZWFsdGltZS9DT1BZSU5HO21kNT0xMmY4ODRkMmFlMWZmODdjMDllNWI3Y2NjMmM0Y2E3ZSBcCisgICAgZmlsZTovL3Rvb2xzL3BvdW5kZXIyMS9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgZmlsZTovL3V0aWxzL2JlbmNobWFyay9rZXJuYmVuY2gtMC40Mi9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgZmlsZTovL3V0aWxzL2Zmc2ItNi4wLXJjMi9DT1BZSU5HO21kNT1jNDYwODIxNjdhMzE0ZDc4NWQwMTJhMjQ0NzQ4ZDgwMyBcCisiCisKK0RFUEVORFMgPSAiYXR0ciBsaWJhaW8gbGliY2FwIGFjbCBvcGVuc3NsIHppcC1uYXRpdmUiCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGZ0cyAiCitFWFRSQV9PRU1BS0VfYXBwZW5kX2xpYmMtbXVzbCA9ICIgTElCQz1tdXNsICIKK0NGTEFHU19hcHBlbmRfcG93ZXJwYzY0ID0gIiAtRF9fU0FORV9VU0VSU1BBQ0VfVFlQRVNfXyIKK0NGTEFHU19hcHBlbmRfbWlwc2FyY2huNjQgPSAiIC1EX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fIgorU1JDUkVWID0gIjczMWNkMzRlNjgyZDI5N2IyMDc2NjhiZThiMWQxNTMyMGE5YWMxYjEiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1hZGQta25vYi10by1jb250cm9sLW51bWEtc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1GaXgtZGVmYXVsdC12YWx1ZS1vZi13aXRob3V0LW51bWEtc3dpdGNoLWkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1BZGQta25vYi10by1jb250cm9sLXRpcnBjLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUta2VybmVsLWNvbnRyb2xsZXJzLUxpbmstd2l0aC1saWJmdHMtZXhwbGljaXRseS1vbi1tdS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LWZpeC1fX1dPUkRTSVpFLXVuZGVjbGFyZWQtd2hlbi1idWlsZGluZy13aXRoLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA5LWZpeC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LW1zZ2J1Zi1lcnJvci1idWlsZGluZy13aXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMC1yZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTgtZ3VhcmQtbWFsbG9jb3B0LXdpdGgtX19HTElCQ19fLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjAtZ2V0ZGVudHMtZGVmaW5lLWdldGRlbnRzLWdldGRlbnRzNjQtb25seS1mb3ItZ2xpYmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMS1EZWZpbmUtX0dOVV9TT1VSQ0UtZm9yLU1SRU1BUF9NQVlNT1ZFLWRlZmluaXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMy1wdHJhY2UtVXNlLWludC1pbnN0ZWFkLW9mLWVudW0tX19wdHJhY2VfcmVxdWVzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI0LXJ0X3NpZ2FjdGlvbi1ydF9zaWdwcm9jbWFyay1EZWZpbmUtX0dOVV9TT1VSQ0UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNi1jcmFzaDAxLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI4LXJ0X3NpZ2FjdGlvbi5oLVVzZS1zaWdoYW5kbGVyX3QtaW5zdGVhZC1vZi1fX3NpZ2hhbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNC1wZXJpb2RpY19vdXRwdXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNS1maXgtdGVzdF9wcm9jX2tpbGwtaGFuZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM2LXRlc3RjYXNlcy1uZXR3b3JrLW5mc3Y0LWFjbC1hY2wxLmMtU2VjdXJpdHktZml4LW9uLXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzOS1jb21tYW5kcy1hcjAxLUZpeC1mb3ItdGVzdC1pbi1kZXRlcm1pbmlzdGljLW1vZGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA0MC1zYWZlX21hY3Jvcy1tYWtlLWlzX2Z1c2UtcmV0dXJuLXplcm8taWYtZnNfdHlwZS1pcy1OLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKKworVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCisKK2V4cG9ydCBwcmVmaXggPSAiL29wdC9sdHAiCitleHBvcnQgZXhlY19wcmVmaXggPSAiL29wdC9sdHAiCisKK1BBQ0tBR0VDT05GSUdbbnVtYV0gPSAiLS13aXRoLW51bWEsIC0td2l0aG91dC1udW1hLCBudW1hY3RsLCIKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vdGVzdGNhc2VzL3JlYWx0aW1lL200IgorRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcG93ZXItbWFuYWdlbWVudC10ZXN0c3VpdGUgLS13aXRoLXJlYWx0aW1lLXRlc3RzdWl0ZSAiCisjIGx0cCBuZXR3b3JrL3JwYyB0ZXN0IGNhc2VzIGZ0YmZzIHdoZW4gbGlidGlycGMgaXMgZm91bmQKK0VYVFJBX09FQ09ORiArPSAiIC0td2l0aG91dC10aXJwYyAiCisKK2RvX2luc3RhbGwoKXsKKyAgICBpbnN0YWxsIC1kICR7RH0vb3B0L2x0cC8KKyAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBTS0lQX0lEQ0hFQ0s9MSBpbnN0YWxsCisKKyAgICAjIGZpeHVwIG5vdCBkZXBsb3kgU1RQZmFpbHVyZV9yZXBvcnQucGwgdG8gYXZvaWQgY29uZnVzaW5nIGFib3V0IGl0IGZhaWxzIHRvIHJ1bgorICAgICMgYXMgaXQgbGFja3MgZGVwZW5kZW5jeSBvbiBzb21lIHBlcmwgbW91ZGxlIHN1Y2ggYXMgTFdQOjpTaW1wbGUKKyAgICAjIEFuZCB0aGlzIHNjcmlwdCBwcmV2aW91c2x5IHdvcmtzIGFzIGEgdG9vbCBmb3IgYW5hbHl6aW5nIGZhaWx1cmVzIGZyb20gTFRQCisgICAgIyBydW5zIG9uIHRoZSBPU0RMJ3MgU2NhbGVhYmxlIFRlc3QgUGxhdGZvcm0gKFNUUCkgYW5kIGl0IG1haW5seSBhY2Nlc3NlcworICAgICMgaHR0cDovL2toYWNrLm9zZGwub3JnIHRvIHJldHJpZXZlIGx0cCB0ZXN0IHJlc3VsdHMgcnVuIG9uCisgICAgIyBPU0RMJ3MgU2NhbGVhYmxlIFRlc3QgUGxhdGZvcm0sIGJ1dCBub3cgaHR0cDovL2toYWNrLm9zZGwub3JnIHVuYWNjZXNzaWJsZQorICAgIHJtIC1yZiAke0R9L29wdC9sdHAvYmluL1NUUGZhaWx1cmVfcmVwb3J0LnBsCisKKyAgICAjIENvcHkgUE9TSVggdGVzdCBzdWl0ZSBpbnRvICR7RH0vb3B0L2x0cC90ZXN0Y2FzZXMgYnkgbWFudWFsCisgICAgY3AgLXIgdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlICR7RH0vb3B0L2x0cC90ZXN0Y2FzZXMKK30KKworUkRFUEVORFNfJHtQTn0gPSAiXAorICAgIGFjbCBcCisgICAgYXQgXAorICAgIGF0dHIgXAorICAgIGJhc2ggXAorICAgIGNwaW8gXAorICAgIGNyb25pZSBcCisgICAgY3VybCBcCisgICAgZTJmc3Byb2dzLW1rZTJmcyBcCisgICAgZXhwZWN0IFwKKyAgICBnYXdrIFwKKyAgICBnemlwIFwKKyAgICBpcHJvdXRlMiBcCisgICAgbGRkIFwKKyAgICBsaWJhaW8gXAorICAgIGxvZ3JvdGF0ZSBcCisgICAgcGVybCBcCisgICAgcHl0aG9uLWNvcmUgXAorICAgIHByb2NwcyBcCisgICAgdW56aXAgXAorICAgIHV0aWwtbGludXggXAorICAgIHdoaWNoIFwKKyAgICB0YXIgXAorIgorCitGSUxFU18ke1BOfSArPSAiL29wdC9sdHAvKiAvb3B0L2x0cC9ydW50ZXN0LyogL29wdC9sdHAvc2NlbmFyaW9fZ3JvdXBzLyogL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9iaW4vKi9iaW4vKiAvb3B0L2x0cC90ZXN0c2NyaXB0cy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9Eb2N1bWVudGF0aW9uLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2Z1bmN0aW9uYWwvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvaW5jbHVkZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9zY3JpcHRzLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL3N0cmVzcy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS90b29scy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9kYXRhL25tMDEvbGliLmEgL29wdC9sdHAvbGliL2xpYm1lbS5hIgorCisjIEF2b2lkIHN0cmlwcGluZyBzb21lIGdlbmVyYXRlZCBiaW5hcmllcyBvdGhlcndpc2Ugc29tZSBvZiB0aGUgbHRwIHRlc3RzIHN1Y2ggYXMgbGRkMDEgJiBubTAxIGZhaWwKK0lOSElCSVRfUEFDS0FHRV9TVFJJUF9GSUxFUyA9ICIvb3B0L2x0cC90ZXN0Y2FzZXMvYmluL25tMDEgL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi9sZGQwMSIKK0lOU0FORV9TS0lQXyR7UE59ICs9ICJhbHJlYWR5LXN0cmlwcGVkIHN0YXRpY2RldiIKKworIyBBdm9pZCBmaWxlIGRlcGVuZGVuY3kgc2NhbnMsIGFzIExUUCBjaGVja3MgZm9yIHRoaW5ncyB0aGF0IG1heSBvciBtYXkgbm90CisjIGV4aXN0IG9uIHRoZSBydW5uaW5nIHN5c3RlbS4gIEZvciBpbnN0YW5jZSBpdCBoYXMgc3BlY2lmaWMgY2hlY2tzIGZvcgorIyBjc2ggYW5kIGtzaCB3aGljaCBhcmUgbm90IHR5cGljYWxseSBwYXJ0IG9mIE9wZW5FbWJlZGRlZCBzeXN0ZW1zIChidXQKKyMgY2FuIGJlIGFkZGVkIHZpYSBhZGRpdGlvbmFsIGxheWVycy4pCitTS0lQX0ZJTEVERVBTXyR7UE59ID0gJzEnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9tYW4tZGJfMi44LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9tYW4tZGJfMi44LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMyOGE2NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLWRiL21hbi1kYl8yLjguMS5iYgpAQCAtMCwwICsxLDQzIEBACitTVU1NQVJZID0gIkFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzdGFuZGFyZCBVbml4IGRvY3VtZW50YXRpb24gc3lzdGVtIGFjY2Vzc2VkIHVzaW5nIHRoZSBtYW4gY29tbWFuZCIKK0hPTUVQQUdFID0gImh0dHA6Ly9tYW4tZGIubm9uZ251Lm9yZy8iCitMSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2NzL0NPUFlJTkcuTElCO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2NzL0NPUFlJTkc7bWQ1PWViNzIzYjYxNTM5ZmVlZjAxM2RlNDc2ZTY4YjVjNTBhIgorCitTUkNfVVJJID0gIiR7U0FWQU5OQUhfTk9OR05VX01JUlJPUn0vbWFuLWRiL21hbi1kYi0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiNTE4NDI5NzhlMDY2ODYyODY0MjFmOTQ5OGQxMDA5YjciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTZhZWM2NDFjYTNkOTk0MmIwNTRjYzBlOWMzZjA1Y2I0NmEzYTk5MmJjMDAwNjc5NTc1NWUyZmVkMTM1N2YzZSIKKworREVQRU5EUyA9ICJsaWJwaXBlbGluZSBnZGJtIGdyb2ZmLW5hdGl2ZSIKKworIyB8IC91c3Ivc3JjL2RlYnVnL21hbi1kYi8yLjguMC1yMC9tYW4tZGItMi44LjAvc3JjL3doYXRpcy5jOjkzOTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX25sX21zZ19jYXRfY250cicKK1VTRV9OTFNfbGliYy1tdXNsID0gIm5vIgorCitpbmhlcml0IGdldHRleHQgcGtnY29uZmlnIGF1dG90b29scworCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXBhZ2VyPWxlc3MgLS1kaXNhYmxlLWNhY2hlLW93bmVyIgorCitkb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2woKSB7CisgICAgICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vY2hhcnNldC5hbGlhcworfQorCitGSUxFU18ke1BOfSArPSAiJHtwcmVmaXh9L2xpYi90bXBmaWxlcy5kIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9tYW4tZGIvbGlibWFuLnNvICR7bGliZGlyfS8ke0JQTn0vbGlibWFuZGIuc28iCisKK1JERVBFTkRTXyR7UE59ICs9ICJncm9mZiIKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJsZXNzIgorUlBST1ZJREVTXyR7UE59ICs9ICIgbWFuIgorCitkZWYgY29tcHJlc3NfcGtnKGQpOgorICAgIGlmIGJiLnV0aWxzLmNvbnRhaW5zKCJJTkhFUklUIiwgImNvbXByZXNzX2RvYyIsIFRydWUsIEZhbHNlLCBkKToKKyAgICAgICAgIGNvbXByZXNzID0gZC5nZXRWYXIoIkRPQ19DT01QUkVTUyIpCisgICAgICAgICBpZiBjb21wcmVzcyA9PSAiZ3oiOgorICAgICAgICAgICAgIHJldHVybiAiZ3ppcCIKKyAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gImJ6MiI6CisgICAgICAgICAgICAgcmV0dXJuICJiemlwMiIKKyAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gInh6IjoKKyAgICAgICAgICAgICByZXR1cm4gInh6IgorICAgIHJldHVybiAiIgorCitSREVQRU5EU18ke1BOfSArPSAiJHtAY29tcHJlc3NfcGtnKGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLXBhZ2VzL21hbi1wYWdlc180LjExLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMTEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzMDc3YTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIkxpbnV4IG1hbi1wYWdlcyIKLURFU0NSSVBUSU9OID0gIlRoZSBMaW51eCBtYW4tcGFnZXMgcHJvamVjdCBkb2N1bWVudHMgdGhlIExpbnV4IGtlcm5lbCBhbmQgQyBsaWJyYXJ5IGludGVyZmFjZXMgdGhhdCBhcmUgZW1wbG95ZWQgYnkgdXNlciBwcm9ncmFtcyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvZG9jcy9tYW4tcGFnZXMiCi1MSUNFTlNFID0gIkdQTHYyKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT04ZjJhM2Q0MzA1N2Q0NThlNTA2NjcxNDk4MDU2N2E2MCIKLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9kb2NzLyR7QlBOfS9BcmNoaXZlLyR7QlB9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQwODMwMGVkMDlkMWFkNTkzODA3MDE1OGIyMWRhMWQxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU2ZGI5MWEyNGU2OGM3Yzc2NWI3YjhlNjBmMTU5MWVkMTA0OWJjMmRjMzE0M2RiNzc5ZWFlNDgzOGI4OWQxOTUiCi0KLVJERVBFTkRTXyR7UE59ID0gIm1hbiIKLQotZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKLWRvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgotCi1kb19pbnN0YWxsKCkgewotICAgICAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Ci19Ci0KLSMgT25seSBkZWxpdmVyZXMgbWFuLXBhZ2VzIHNvIEZJTEVTXyR7UE59IGdldHMgZXZlcnl0aGluZwotRklMRVNfJHtQTn0tZG9jID0gIiIKLUZJTEVTXyR7UE59ID0gIiR7bWFuZGlyfS8qIgotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotQUxURVJOQVRJVkVfJHtQTn0gPSAicGFzc3dkLjUgZ2V0c3BuYW0uMyIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtwYXNzd2QuNV0gPSAiJHttYW5kaXJ9L21hbjUvcGFzc3dkLjUiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZ2V0c3BuYW0uM10gPSAiJHttYW5kaXJ9L21hbjMvZ2V0c3BuYW0uMyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLXBhZ2VzL21hbi1wYWdlc180LjE0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhiZDA5MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLXBhZ2VzL21hbi1wYWdlc180LjE0LmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiTGludXggbWFuLXBhZ2VzIgorREVTQ1JJUFRJT04gPSAiVGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0IGRvY3VtZW50cyB0aGUgTGludXgga2VybmVsIGFuZCBDIGxpYnJhcnkgaW50ZXJmYWNlcyB0aGF0IGFyZSBlbXBsb3llZCBieSB1c2VyIHByb2dyYW1zIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC9kb2NzL21hbi1wYWdlcyIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7bWQ1PTc5NGY3MDE2MTdjYzAzZmU1MGM1MzI1NzY2MGQ4ZWM0IgorU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2RvY3MvJHtCUE59L0FyY2hpdmUvJHtCUH0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiODJiZDJkMDVjNGQwZGJhNWU3YTkwZDM5Yzk1NTUxOTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWVlYmM2YjA5YTExZTdmN2JiYzk4ZjM5ODRmZThiOGIyYmRlOWQyZjVmOWRjYmQ0MzQ4YTllMGQ5MzcwNDIzOCIKKworUkRFUEVORFNfJHtQTn0gPSAibWFuIgorCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgorZG9fY29tcGlsZVtub2V4ZWNdID0gIjEiCisKK2RvX2luc3RhbGwoKSB7CisgICAgICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KK30KKworIyBPbmx5IGRlbGl2ZXJlcyBtYW4tcGFnZXMgc28gRklMRVNfJHtQTn0gZ2V0cyBldmVyeXRoaW5nCitGSUxFU18ke1BOfS1kb2MgPSAiIgorRklMRVNfJHtQTn0gPSAiJHttYW5kaXJ9LyoiCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJwYXNzd2QuNSBnZXRzcG5hbS4zIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Bhc3N3ZC41XSA9ICIke21hbmRpcn0vbWFuNS9wYXNzd2QuNSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtnZXRzcG5hbS4zXSA9ICIke21hbmRpcn0vbWFuMy9nZXRzcG5hbS4zIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL2NvbmZpZ3VyZV9zZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vY29uZmlndXJlX3NlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ5ZTY4My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vY29uZmlndXJlX3NlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLW1hbjogcmVwbGFjZSAnLCcgd2l0aCAnIycKLQotU29tZXRpbWVzLCB0aGUgcGFyYW1ldGVycyBvZiBDQy9CVUlMRF9DQyBjb250YWlucyB0aGUgJywnLCB3aGljaAotY2F1c2UgdGhlIHNlZCBjb21tYW5kIGZhaWxlZCwgc28gcmVwbGFjZSB0aGUgJywnIHdpdGggJyMnCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBZdWUgVGFvIDxZdWUuVGFvQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZSB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IDlmNjJjZjkuLjlhNTY1YWUgMTAwNzU1Ci0tLS0gYS9jb25maWd1cmUKLSsrKyBiL2NvbmZpZ3VyZQotQEAgLTEzMjEsOSArMTMyMSw5IEBAIGRvCi0gICBlY2hvICJDcmVhdGluZyAkaW5maWxlIGZyb20gJGluZmlsZS5pbiIKLSAgIHNlZCAtZSAnCi0gcyxAdmVyc2lvbkAsJHZlcnNpb24sCi0tcyxAQ0NALCRDQywKLStzI0BDQ0AjJENDIwotIHMsQEVYRUVYVEAsJEVYRUVYVCwKLS1zLEBCVUlMRF9DQ0AsJEJVSUxEX0NDLAotK3MjQEJVSUxEX0NDQCMkQlVJTERfQ0MjCi0gcyxASU5TVEFMTEAsJElOU1RBTEwsCi0gcyxAREVGU0AsJERFRlMsCi0gcyxATElCU0AsJExJQlMsCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41Zy1ub25yb290YnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWctbm9ucm9vdGJ1aWxkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjgzNGJkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41Zy1ub25yb290YnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLWRpZmYgLXUgLXIgbWFuLTEuNWcub2xkL2NvbmZpZ3VyZSBtYW4tMS41Zy9jb25maWd1cmUKLS0tLSBtYW4tMS41Zy5vbGQvY29uZmlndXJlCVdlZCBBcHIgIDcgMDQ6MTY6MDUgMTk5OQotKysrIG1hbi0xLjVnL2NvbmZpZ3VyZQlNb24gTWF5IDE1IDE1OjIyOjQ0IDIwMDAKLUBAIC03OTEsNyArNzkxLDcgQEAKLSAgICAgcmVhZCBtb2RlCi0gICAgIGlmIHRlc3QgIiRtb2RlIiAhPSAiIjsgdGhlbiBtYW5fbW9kZT0kbW9kZTsgZmkKLSAgIGZpCi0tICBtYW5faW5zdGFsbF9mbGFncz0iLW0gJG1hbl9tb2RlIC1vICRtYW5fdXNlciAtZyAkbWFuX2dyb3VwIgotKyAgbWFuX2luc3RhbGxfZmxhZ3M9IiIKLSBmaQotIAotICMgV2hhdCBzZWN0aW9ucyBkbyB3ZSBhbnRpY2lwYXRlPwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVoMS1nZW5jYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWgxLWdlbmNhdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQ0YjE0Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWgxLWdlbmNhdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotLS0tIGdlbmNhdC9nZW5saWIuYwkyMDA2LTA4LTAyIDIwOjExOjQ0LjAwMDAwMDAwMCArMDIwMAotKysrIGdlbmNhdC9nZW5saWIuYy5vZGVuCTIwMDgtMTItMjEgMTk6MTg6NTAuMDAwMDAwMDAwICswMTAwCi1AQCAtNDcsNiArNDcsNyBAQCB1cC10by1kYXRlLiAgTWFueSB0aGFua3MuCi0gMDEvMTQvOTEgICA0IG5hemd1bAlPZmYgYnkgb25lIG9uIG51bWJlciBzcGVjaWZpZWQgZW50cmllcwotICovCi0gCi0rI3VuZGVmIF9HTlVfU09VUkNFCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpZmRlZiBTWVNWCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWgxLW1ha2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWgxLW1ha2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2MzFlYjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVoMS1tYWtlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotCi0tLS0gbWFuLTEuNWcvbWFuL01ha2VmaWxlLmluLm1pa2UJRnJpIEFwciAgOSAxMzozNTo1NCAxOTk5Ci0rKysgbWFuLTEuNWcvbWFuL01ha2VmaWxlLmluCUZyaSBBcHIgIDkgMTM6MzY6NDUgMTk5OQotQEAgLTEsOCArMSw4IEBACi0gIyBvbmx5IGV4ZWN1dGVkIGZyb20gYSBzdWJkaXIKLSBNQU4xID0gbWFuIHdoYXRpcyBhcHJvcG9zCi0tTUFONSA9IG1hbi5jb25mCi0rTUFONSA9IG1hbi5jb25maWcKLSBNQU44ID0gbWFrZXdoYXRpcwotLUFMTCA9IG1hbi4xIHdoYXRpcy4xIGFwcm9wb3MuMSBtYW4uY29uZi41Ci0rQUxMID0gbWFuLjEgd2hhdGlzLjEgYXByb3Bvcy4xIG1hbi5jb25maWcuNQotIE1BWUJFOCA9IG1ha2V3aGF0aXMKLSAKLSAuU1VGRklYRVM6IC5tYW4gLjEgLjUgLjgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41aTItaW5pdGlhbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41aTItaW5pdGlhbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU1NmMwNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWkyLWluaXRpYWwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLS0tLSBtYW4tMS41aTIvc3JjL21ha2V3aGF0aXMuc2guaW5pdGlhbAlUdWUgSnVsICAzIDE1OjM4OjM5IDIwMDEKLSsrKyBtYW4tMS41aTIvc3JjL21ha2V3aGF0aXMuc2gJVHVlIEp1bCAgMyAxNTozOTozOSAyMDAxCi1AQCAtODEsOCArODEsMTAgQEAKLSAJY29udGludWU7OwotICAgICAtcykgc2V0c2VjdGlvbnM9MQotIAljb250aW51ZTs7Ci0tICAgIC11KSBmaW5kYXJnPSItbmV3ZXIgL3Zhci9jYWNoZS9tYW4vd2hhdGlzIgotLQl1cGRhdGU9MQotKyAgICAtdSkgaWYgWyAtZSAvdmFyL2NhY2hlL21hbi93aGF0aXMgXTsgdGhlbgotKwkgIGZpbmRhcmc9Ii1uZXdlciAvdmFyL2NhY2hlL21hbi93aGF0aXMiCi0rCSAgdXBkYXRlPTEKLSsJZmkKLSAJY29udGludWU7OwotICAgICAtdikgdmVyYm9zZT0xCi0gCWNvbnRpbnVlOzsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41aTItbmV3bGluZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41aTItbmV3bGluZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjExZGY1ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWkyLW5ld2xpbmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLS0tLSBzcmMvbWFuLmMJMjAwOC0xMi0yMSAxOToxNzozMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBzcmMvbWFuLmMub2RlbgkyMDA4LTEyLTIxIDE5OjE3OjM4LjAwMDAwMDAwMCArMDEwMAotQEAgLTM5MSw3ICszOTEsNyBAQCBhZ2FpbjoKLSAJICBiZWcrKzsKLSAKLSAgICAgIGVuZCA9IGJlZzsKLS0gICAgIHdoaWxlICgqZW5kICE9ICcgJyAmJiAqZW5kICE9ICdcdCcgJiYgKmVuZCAhPSAnXG4nICYmICplbmQgIT0gJ1wwJykKLSsgICAgIHdoaWxlICgqZW5kICE9ICcgJyAmJiAqZW5kICE9ICdcdCcgJiYgKmVuZCAhPSAnXG4nICYmICplbmQgIT0gJ1wwJyAmJiAoZW5kLWJ1Zik8QlVGU0laRSkKLSAJICBlbmQrKzsJCS8qIG5vdGUgdGhhdCBidWYgaXMgTlVMLXRlcm1pbmF0ZWQgKi8KLSAgICAgICplbmQgPSAnXDAnOwotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVpMi1vdmVyZmxvdy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41aTItb3ZlcmZsb3cucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyZDI4ODEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVpMi1vdmVyZmxvdy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotLS0tIG1hbi0xLjVpMi9zcmMvbWFuLmMub3ZlcmZsb3cJTW9uIEp1biAyNSAwMDowMTo0NSAyMDAxCi0rKysgbWFuLTEuNWkyL3NyYy9tYW4uYwlNb24gSnVuIDI1IDAwOjAxOjQ1IDIwMDEKLUBAIC0zODEsNiArMzgxLDkgQEAKLSAJICBzdHJjYXQobmFtZSwgIi8iKTsKLSAJICBzdHJjYXQobmFtZSwgYmVnKTsKLSAgICAgIH0KLSsgICAgIC8qIElmIHRoaXMgaXMgdG9vIGxvbmcsIGJhZCB0aGluZ3MgaGF2ZSBhbHJlYWR5IGhhcHBlbmVkLiAqCi0rICAgICAgKiB3ZSBzaG91bGQgcXVpdCBJTU1FRElBVEVMWS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSsgICAgIGlmKHN0cmxlbihuYW1lKT5zaXplb2YodWx0bmFtZSkpIF9leGl0KDEpOwotIAotICAgICAgZ290byBhZ2FpbjsKLSB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWotaTE4bi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ai1pMThuLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWUwOWMwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ai1pMThuLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotCi0tLS0gbWFuLTEuNWovbXNncy9pbnN0LnNoLmkxOG4JV2VkIEFwciAyNSAxMDo0MDo1MCAyMDAxCi0rKysgbWFuLTEuNWovbXNncy9pbnN0LnNoCVdlZCBBcHIgMjUgMTA6NDE6MTcgMjAwMQotQEAgLTI3LDggKzI3LDcgQEAKLSBmb3IgaiBpbiAkTTsgZG8KLSAgIGlmIFsgLWYgJGogXTsgdGhlbgotICAgICBpPWBlY2hvICRqIHwgc2VkIC1lICdzL21lc3MuLy87IHMvLmNhdC8vJ2AKLS0gICAgZGVzdD1gZWNobyAkbG9jZGlyIHwgc2VkIC1lICJzLyVOL21hbi87IHMvJUwvJGkvImAKLS0gICAgZGVzdD0ke1BSRUZJWH0kZGVzdAotKyAgICBkZXN0PSR7UFJFRklYfS9gZWNobyAkbG9jZGlyIHwgc2VkIC1lICJzLyVOL21hbi87IHMvJUwvJGkvImAKLSAgICAgZWNobyAibWtkaXIgLXAgYGRpcm5hbWUgJGRlc3RgIgotICAgICBta2RpciAtcCBgZGlybmFtZSAkZGVzdGA7Ci0gICAgIGVjaG8gImluc3RhbGwgLWMgLW0gNjQ0ICRqICRkZXN0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVqLW5vY2FjaGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWotbm9jYWNoZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzUxZGRkZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWotbm9jYWNoZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotLS0tIG1hbi0xLjVqL3NyYy9tYW4uY29uZi5pbi5ub2NhY2hlCVRodSBOb3YgMjIgMTU6MDc6MTIgMjAwMQotKysrIG1hbi0xLjVqL3NyYy9tYW4uY29uZi5pbglUaHUgTm92IDIyIDE1OjA3OjEyIDIwMDEKLUBAIC04MSw2ICs4MSw5IEBACi0gIyAKLSAjTk9DQUNIRQotICMKLSsjIE5PQ0FDSEUga2VlcHMgbWFuIGZyb20gY3JlYXRpbmcgY2FjaGUgcGFnZXMKLStOT0NBQ0hFCi0rIwotICMgVXNlZnVsIHBhdGhzIC0gbm90ZSB0aGF0IENPTCBzaG91bGQgbm90IGJlIGRlZmluZWQgd2hlbgotICMgTlJPRkYgaXMgZGVmaW5lZCBhcyAiZ3JvZmYgLVRhc2NpaSIgb3IgImdyb2ZmIC1UbGF0aW4xIjsKLSAjIG5vdCBvbmx5IGlzIGl0IHN1cGVyZmx1b3VzLCBidXQgaXQgYWN0dWFsbHkgZGFtYWdlcyB0aGUgb3V0cHV0LgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVqLXV0ZjgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWotdXRmOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzNkM2U0Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWotdXRmOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotLS0tIG1hbi0xLjVqL2NvbmZpZ3VyZS51dGY4CVRodSBOb3YgMjIgMTU6MDI6MzUgMjAwMQotKysrIG1hbi0xLjVqL2NvbmZpZ3VyZQlUaHUgTm92IDIyIDE1OjAzOjE1IDIwMDEKLUBAIC00MDgsOSArNDA4LDkgQEAKLSAgIEZnYXdrPS9iaW4vZ2F3awotICAgRmF3az0vYmluL2dhd2sKLSAgIEZtYXdrPW1pc3NpbmcKLS0gIHRyb2ZmPSIiCi0tICBucm9mZj0iIgotLSAgam5yb2ZmPSIiCi0rICB0cm9mZj0vdXNyL2Jpbi90cm9mZgotKyAgbnJvZmY9L3Vzci9iaW4vbnJvZmYKLSsgIGpucm9mZj0vdXNyL2Jpbi9ucm9mZgotICAgZXFuPSIiCi0gICBuZXFuPSIiCi0gICBqbmVxbj0iIgotQEAgLTQ1Myw2ICs0NTMsOCBAQAotICAgICBkb25lCi0gICBkb25lCi0gICBGZ3JvZmY9L3Vzci9iaW4vZ3JvZmYKLSsgIEZucm9mZj0vdXNyL2Jpbi9ucm9mZgotKyAgRmpucm9mZj0vdXNyL2Jpbi9ucm9mZgotICAgRmdlcW49L3Vzci9iaW4vZ2VxbgotICAgRmd0Ymw9L3Vzci9iaW4vZ3RibAotICAgRmNvbD0vdXNyL2Jpbi9jb2wKLUBAIC00ODUsMjUgKzQ4NywyNSBAQAotICAgdGhlbgotICAgICBpZiB0ZXN0ICRGbnJvZmYgPSAibWlzc2luZyIKLSAgICAgdGhlbgotLSAgICAgIG5yb2ZmPSJucm9mZiAtVGxhdGluMSAtbWFuZG9jIgotKyAgICAgIG5yb2ZmPSJucm9mZiAtVHV0ZjggLW1hbmRvYyIKLSAgICAgZWxzZQotLSAgICAgIG5yb2ZmPSIkRm5yb2ZmIC1UbGF0aW4xIC1tYW5kb2MiCi0rICAgICAgbnJvZmY9IiRGbnJvZmYgLVR1dGY4IC1tYW5kb2MiCi0gICAgIGZpCi0gICAgIHRyb2ZmPSJ0cm9mZiAtbWFuZG9jIgotICAgICBlY2hvICJXYXJuaW5nOiBjb3VsZCBub3QgZmluZCBncm9mZiIKLSAgIGVsc2UKLSAgICAgaWYgdGVzdCAkRm5yb2ZmID0gIm1pc3NpbmciCi0gICAgIHRoZW4KLS0gICAgICBucm9mZj0iJEZncm9mZiAtVGxhdGluMSAtbWFuZG9jIgotKyAgICAgIG5yb2ZmPSIkRmdyb2ZmIC1UdXRmOCAtbWFuZG9jIgotICAgICBlbHNlCi0tICAgICAgbnJvZmY9IiRGbnJvZmYgLVRsYXRpbjEgLW1hbmRvYyIKLSsgICAgICBucm9mZj0iJEZucm9mZiAtVHV0ZjggLW1hbmRvYyIKLSAgICAgZmkKLSAgICAgdHJvZmY9IiRGZ3JvZmYgLVRwcyAtbWFuZG9jIgotLSAgICBqbnJvZmY9IiRGZ3JvZmYgLVRuaXBwb24gLW1hbmRvY2oiCi0rICAgIGpucm9mZj0iJEZqbnJvZmYgLVR1dGY4IC1tYW5kb2NqIgotICAgZmkKLSAgIGVxbj0iJEZnZXFuIC1UcHMiCi0tICBuZXFuPSIkRmdlcW4gLVRsYXRpbjEiCi0tICBqbmVxbj0iJEZnZXFuIC1UbmlwcG9uIgotKyAgbmVxbj0iJEZnZXFuIC1UdXRmOCIKLSsgIGpuZXFuPSIkRmdlcW4gLVR1dGY4IgotICAgdGJsPSIkRmd0YmwiCi0gICBjb2w9IiRGY29sIgotICAgdmdyaW5kPSIkRnZncmluZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ay1jb25mcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ay1jb25mcGF0aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU3NDZjMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWstY29uZnBhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLS0tLSBjb25maWd1cmUJMjAwNi0wNS0wMSAxOTo1NjoxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjb25maWd1cmUub2RlbgkyMDA4LTEyLTIxIDE5OjE2OjUwLjAwMDAwMDAwMCArMDEwMAotQEAgLTE5OCw3ICsxOTgsNyBAQAotICAgICBjb25mZGlyPSIke2NvbmZwcmVmaXh9L3NoYXJlL21pc2MiCi0gICBmaQotIGZpCi0tY29uZmZpbGVuYW1lPSJtYW4uY29uZiIKLStjb25mZmlsZW5hbWU9Im1hbi5jb25maWciCi0gCi0gaWYgdGVzdCAiJFJBTkRPTSIgPSAiJFJBTkRPTSI7IHRoZW4KLSAgICMgUGxhaW4gb2xkIEJvdXJuZSBzaGVsbC4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ay1ub25hc2NpaS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ay1ub25hc2NpaS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY2MmQ5Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNWstbm9uYXNjaWkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLS0tLSAuL3NyYy9hcHJvcG9zLnNoLm5vbmFzY2lpCTIwMDEtMTEtMjMgMDA6MzA6NDIuMDAwMDAwMDAwICswMTAwCi0rKysgLi9zcmMvYXByb3Bvcy5zaAkyMDAyLTA4LTEzIDE1OjQ0OjUzLjAwMDAwMDAwMCArMDIwMAotQEAgLTE4LDkgKzE4LDkgQEAKLSAKLSAjIFdoZW4gbWFuIHBhZ2VzIGluIHlvdXIgZmF2b3JpdGUgbG9jYWxlIGxvb2sgdG8gZ3JlcCBsaWtlIGJpbmFyeSBmaWxlcwotICMgKGFuZCB5b3UgdXNlIEdOVSBncmVwKSB5b3UgbWF5IHdhbnQgdG8gYWRkIHRoZSAnYScgb3B0aW9uIHRvICpncmVwb3B0MS4KLS1hcHJvcG9zZ3JlcG9wdDE9J2knCi0rYXByb3Bvc2dyZXBvcHQxPSdpYScKLSBhcHJvcG9zZ3JlcG9wdDI9JycKLS13aGF0aXNncmVwb3B0MT0naXcnCi0rd2hhdGlzZ3JlcG9wdDE9J2l3YScKLSB3aGF0aXNncmVwb3B0Mj0nXicKLSBncmVwb3B0MT0kJWFwcm9wb3Nfb3Jfd2hhdGlzJWdyZXBvcHQxCi0gZ3JlcG9wdDI9JCVhcHJvcG9zX29yX3doYXRpcyVncmVwb3B0MgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVrLXNvZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVrLXNvZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MGI5MjUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41ay1zb2ZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotLS0tIG1hbi0xLjVqL3NyYy9tYW4uYy5zb2ZpeAlUaHUgTm92IDIyIDE0OjUxOjQ0IDIwMDEKLSsrKyBtYW4tMS41ai9zcmMvbWFuLmMJVGh1IE5vdiAyMiAxNDo1Mjo0NCAyMDAxCi1AQCAtMzAwLDcgKzMwMCw3IEBACi0gCi0gICAgICBpZiAoc3RybGVuKG5hbWUwKSA+PSBzaXplb2YodWx0bmFtZSkpCi0gCSAgICAgcmV0dXJuIG5hbWUwOwotLSAgICAgc3RyY3B5KHVsdG5hbWUsIG5hbWUwKTsKLSsgICAgIHN0cm5jcHkodWx0bmFtZSwgbmFtZTAsIEJVRlNJWkUtMzIpOwotICAgICAgbmFtZSA9IHVsdG5hbWU7Ci0gCi0gYWdhaW46Ci1AQCAtMzMyLDcgKzMzMiw3IEBACi0gCSAgICogLnNvIGZpbGVzIC0gd2UgY291bGQgZ2xvYiBmb3IgYWxsIHBvc3NpYmxlIGV4dGVuc2lvbnMsCi0gCSAgICogZm9yIG5vdzogb25seSB0cnkgLmd6Ci0gCSAgICovCi0tCSAgZWxzZSBpZiAoZnAgPT0gTlVMTCAmJiBnZXRfZXhwYW5kZXIoIi5neiIpICYmCi0rCSAgaWYgKGZwID09IE5VTEwgJiYgZ2V0X2V4cGFuZGVyKCIuZ3oiKSAmJgotIAkJICAgc3RybGVuKG5hbWUpK3N0cmxlbigiLmd6IikgPCBCVUZTSVpFKSB7Ci0gCSAgICAgICBzdHJjYXQobmFtZSwgIi5neiIpOwotIAkgICAgICAgZnAgPSBmb3BlbiAobmFtZSwgInIiKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItYnVnMTE2MjEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNW0yLWJ1ZzExNjIxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNTEyOTk5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItYnVnMTE2MjEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLS0tLSAuL2NvbmZpZ3VyZS5hZAkyMDAzLTEyLTExIDE5OjE3OjEwLjAwMDAwMDAwMCArMDEwMAotKysrIC4vY29uZmlndXJlCTIwMDMtMTItMTEgMTk6MTc6MjcuMDAwMDAwMDAwICswMTAwCi1AQCAtMjYsNyArMjYsNyBAQAotICMgKEluZGVlZCwgLXIgbWF5IGNhdXNlIHRoZSB0ZXJtaW5hbCB0byBnZXQgaW50byBmdW5ueSBzdGF0ZXMuCi0gIyBWZXJ5IGluY29udmVuaWVudC4gRm9yIHZpZXdpbmcgcGFnZXMgaW4gc3RyYW5nZSBsb2NhbGVzLCBzZXQgTENfKi4pCi0gIwotLURFRkFVTFRMRVNTT1BUPSItaXMiCi0rREVGQVVMVExFU1NPUFQ9Ii1pc3IiCi0gIwotICMgTm90ZSB0aGF0IG5vdCBjcmVhdGluZyBhbnkgY2F0IGRpcmVjdG9yaWVzICgvdmFyL2NhY2hlL21hbiBvciBzbykKLSAjIGFuZCBub3QgbWFraW5nIG1hbiBzdWlkIG9yIHNnaWQgaXMgcmVjb21tZW5kZWQuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNW0yLWJ1aWxkcm9vdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItYnVpbGRyb290LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzk3ZjU2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItYnVpbGRyb290LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotCi0tLS0gLi9jb25maWd1cmUubGVzcwkyMDAzLTEyLTExIDE5OjE4OjE1LjAwMDAwMDAwMCArMDEwMAotKysrIC4vY29uZmlndXJlCTIwMDMtMTItMTEgMTk6MjA6MDMuMDAwMDAwMDAwICswMTAwCi1AQCAtNDAxLDE4ICs0MDEsMTMgQEAKLSAKLSBpZiB0ZXN0ICIkYW5zIiA9ICJmYWxzZSIKLSB0aGVuCi0tICBmb3IgaSBpbiBtb3JlIGxlc3MgY21wIGNhdCBhd2sgZ2F3ayBtYXdrCi0tICBkbwotLSAgICBldmFsIEYkaT0ibWlzc2luZyIKLS0gICAgZm9yIGogaW4gJERFRlBBVEgKLS0gICAgZG8KLS0gICAgICBpZiB0ZXN0IC1mICRqLyRpCi0tICAgICAgdGhlbgotLQlldmFsIEYkaT0kai8kaQotLQlicmVhawotLSAgICAgIGZpCi0tICAgIGRvbmUKLS0gIGRvbmUKLSsgIEZtb3JlPS9iaW4vbW9yZQotKyAgRmxlc3M9L3Vzci9iaW4vbGVzcwotKyAgRmNtcD0vdXNyL2Jpbi9jbXAKLSsgIEZjYXQ9L2Jpbi9jYXQKLSsgIEZnYXdrPS9iaW4vZ2F3awotKyAgRmF3az0vYmluL2dhd2sKLSsgIEZtYXdrPW1pc3NpbmcKLSAgIHRyb2ZmPSIiCi0gICBucm9mZj0iIgotICAgam5yb2ZmPSIiCi1AQCAtNDU3LDYgKzQ1MiwxOSBAQAotICAgICAgIGZpCi0gICAgIGRvbmUKLSAgIGRvbmUKLSsgIEZncm9mZj0vdXNyL2Jpbi9ncm9mZgotKyAgRmdlcW49L3Vzci9iaW4vZ2VxbgotKyAgRmd0Ymw9L3Vzci9iaW4vZ3RibAotKyAgRmNvbD0vdXNyL2Jpbi9jb2wKLSsgIEZncmVmZXI9L3Vzci9iaW4vZ3JlZmVyCi0rICBGZ3BpYz0vdXNyL2Jpbi9ncGljCi0rICBGbW9yZT0vYmluL21vcmUKLSsgIEZsZXNzPS91c3IvYmluL2xlc3MKLSsgIEZjbXA9L3Vzci9iaW4vY21wCi0rICBGY2F0PS9iaW4vY2F0Ci0rICBGZ2F3az0vYmluL2dhd2sKLSsKLSsKLSAgIGZvciBpIGluIGVxbiB0YmwgcmVmZXIgcGljCi0gICBkbwotICAgICBpZiB0ZXN0IGBldmFsIGVjaG8gXFwkRmckaWAgPSAibWlzc2luZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItbm8tY29sb3ItZm9yLXByaW50aW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVtMi1uby1jb2xvci1mb3ItcHJpbnRpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4NWZmMWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjVtMi1uby1jb2xvci1mb3ItcHJpbnRpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLS0tLSBtYW4tMS41bTIvY29uZmlndXJlLmNvbG9yCTIwMDYtMDktMTYgMTg6Mjc6MzcuMDAwMDAwMDAwICswMjAwCi0rKysgbWFuLTEuNW0yL2NvbmZpZ3VyZQkyMDA2LTA5LTE2IDE4OjI4OjQ0LjAwMDAwMDAwMCArMDIwMAotQEAgLTUzOSw2ICs1MzksOCBAQAotICAgICB0cm9mZj0iJHRyb2ZmIC1jIgotICAgICBucm9mZj0iJG5yb2ZmIC1jIgotICAgICBqbnJvZmY9IiRqbnJvZmYgLWMiCi0rZWxzZQotKyAgICB0cm9mZj0iJHRyb2ZmIC1jIgotIGZpCi0gCi0gaWYgWyB4JGRlZmF1bHQgPSB4IF07IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItc2lncGlwZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS41bTItc2lncGlwZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFmNzhlYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNW0yLXNpZ3BpcGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLS0tLSBtYW4tMS41bTIvc3JjL3V0aWwuY19zaWdwaXBlCTIwMDYtMTItMDkgMTM6NDM6MjEuMDAwMDAwMDAwICswMTAwCi0rKysgbWFuLTEuNW0yL3NyYy91dGlsLmMJMjAwNi0xMi0wOSAxMzo1MzoxMy4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMTYsMTEgKzExNiwxNCBAQAotIHN0YXRpYyBpbnQKLSBzeXN0ZW0xIChjb25zdCBjaGFyICpjb21tYW5kKSB7Ci0gCXZvaWQgKCpwcmV2X2hhbmRsZXIpKGludCkgPSBzaWduYWwgKFNJR0lOVCxjYXRjaF9pbnQpOwotKwlzaWduYWwgKFNJR1BJUEUsU0lHX0lHTik7Ci0gCWludCByZXQgPSBzeXN0ZW0oY29tbWFuZCk7Ci0gCi0gCS8qIGNoaWxkIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWw/ICovCi0gCWlmIChXSUZTSUdOQUxFRChyZXQpICYmCi0tCSAgICAoV1RFUk1TSUcocmV0KSA9PSBTSUdJTlQgfHwgV1RFUk1TSUcocmV0KSA9PSBTSUdRVUlUKSkKLSsJICAgIChXVEVSTVNJRyhyZXQpID09IFNJR0lOVCB8fAotKwkJIFdURVJNU0lHKHJldCkgPT0gU0lHUElQRSB8fAotKwkJIFdURVJNU0lHKHJldCkgPT0gU0lHUVVJVCkpCi0gCQlleGl0KDEpOwotIAotIAkvKiBvciB3ZSBjYXVnaHQgYW4gaW50ZXJydXB0PyAqLwotQEAgLTEyOCw2ICsxMzEsNyBAQAotIAkJZXhpdCgxKTsKLSAKLSAJc2lnbmFsKFNJR0lOVCxwcmV2X2hhbmRsZXIpOwotKwlzaWduYWwoU0lHUElQRSxTSUdfREZMKTsKLSAJcmV0dXJuIHJldDsKLSB9Ci0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtaTE4bl93aGF0aXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtaTE4bl93aGF0aXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzMjEzMjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLWkxOG5fd2hhdGlzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotZGlmZiAtTmF1ciBtYW4tMS42ZS5vcmlnL3NyYy9hcHJvcG9zLnNoIG1hbi0xLjZlL3NyYy9hcHJvcG9zLnNoCi0tLS0gbWFuLTEuNmUub3JpZy9zcmMvYXByb3Bvcy5zaAkyMDA3LTA1LTE4IDEzOjQ5OjMxLjAwMDAwMDAwMCAtMDMwMAotKysrIG1hbi0xLjZlL3NyYy9hcHJvcG9zLnNoCTIwMDctMDUtMTggMTQ6MjQ6MzMuMDAwMDAwMDAwIC0wMzAwCi1AQCAtNjAsMTYgKzYwLDU2IEBACi0gICAgIGVzYWMKLSBkb25lCi0gCi0rIyBsaXN0IG9mIGxhbmd1YWdlcyB0byBsb29rIGZvcgotK0xBTkdfTElTVD1gZWNobyAkTEFOR1VBR0U6JExDX0FMTDokTENfTUVTU0FHRVM6JExBTkcgfCB0ciAnOicgJyAnYAotK0RJUl9MSVNUPSIiCi0rZm9yIGQgaW4gL3Zhci9jYWNoZS9tYW4gJG1hbnBhdGggL3Vzci9saWIKLStkbwotKyAgICBmb3IgbCBpbiAkTEFOR19MSVNUCi0rICAgIGRvCi0rICAgICAgICBpZiBbIC1kICRkLyRsIF0KLSsgICAgICAgIHRoZW4KLSsgICAgICAgICAgICAjIGNoZWNrIHRoYXQgdGhlIHBhdGggaXMgbm90IGFscmVhZHkgaW4gdGhlIGxpc3QKLSsgICAgICAgICAgICBpZiAhIGVjaG8gIiRESVJfTElTVCIgfCBncmVwICIgJGQvJGxcYiIgPiAvZGV2L251bGwKLSsgICAgICAgICAgICB0aGVuCi0rICAgICAgICAgICAgICAgIERJUl9MSVNUPSIkRElSX0xJU1QgJGQvJGwiCi0rICAgICAgICAgICAgZmkKLSsgICAgICAgIGZpCi0rICAgIGRvbmUKLSsgICAgRElSX0xJU1Q9IiRESVJfTElTVCAkZCIKLSsgICAgIyBjaGVjayB0aGF0IHRoZSBwYXRoIGlzIG5vdCBhbHJlYWR5IGluIHRoZSBsaXN0Ci0rICAgIGlmICEgZWNobyAiJERJUl9MSVNUIiB8IGdyZXAgIiAkZFxiIiA+IC9kZXYvbnVsbAotKyAgICB0aGVuCi0rICAgICAgICBESVJfTElTVD0iJERJUl9MSVNUICRkLyRsIgotKyAgICBmaQotK2RvbmUKLSsKLSB3aGlsZSBbICIkMSIgIT0gIiIgXQotIGRvCi0gICAgIGZvdW5kPTAKLS0gICAgZm9yIGQgaW4gL3Zhci9jYWNoZS9tYW4gJG1hbnBhdGggL3Vzci9saWIKLSsgICAgIyBpbiBvcmRlciBub3QgdG8gZGlzcGxheSBsaW5lcyBpbiBtb3JlIHRoYW4gb25lIGxhbmd1YWdlIGZvcgotKyAgICAjIGEgc2FtZSBtYW4gcGFnZTsgd2UgY2hlY2sgdGhhdCBhIGdpdmVuIG1hbiBwYWdlIG5hbWUKLSsgICAgIyBoYXNuJ3QgYWxyZWFkeSBiZWVuIGRpc3BsYXllZAotKyAgICBCQVo9IiIKLSsgICAgZm9yIGQgaW4gJERJUl9MSVNUCi0gICAgIGRvCi0gICAgICAgICBpZiBbIC1mICRkL3doYXRpcyBdCi0gICAgICAgICB0aGVuCi0tICAgICAgICAgICAgaWYgZ3JlcCAtIiRncmVwb3B0MSIgIiRncmVwb3B0MiIiJDEiICRkL3doYXRpcwotKyAgICAgICAgICAgIGlmIEZPTz1gZ3JlcCAtIiRncmVwb3B0MSIgIiRncmVwb3B0MiIiJDEiICRkL3doYXRpc2AKLSAgICAgICAgICAgICB0aGVuCi0tICAgICAgICAgICAgICAgIGZvdW5kPTEKLSsgICAgICAgICAgICAgICAgIyB0aGUgTENfQUxMPUMgaXMgbmVlZGVkIGluIGNhc2UgdGhlIHRleHQgaXMKLSsgICAgICAgICAgICAgICAgIyBpbiBhIGRpZmZlcmVudCBlbmNvZGluZyB0aGFuIHRoZSBsb2NhbGUKLSsgICAgICAgICAgICAgICAgQkFSPWBlY2hvIC1lICIkRk9PIiB8IExDX0FMTD1DIHNlZCAncy8gLSAuKiQvLycgfCB0ciAnIFtdJyAnXycgfCBzb3J0IC11YAotKyAgICAgICAgICAgICAgICBmb3IgaSBpbiAkQkFSCi0rICAgICAgICAgICAgICAgIGRvCi0rICAgICAgICAgICAgICAgICAgICBpZiAhIGVjaG8gIiRCQVoiIHwgZ3JlcCAiJGkiID4gL2Rldi9udWxsCi0rICAgICAgICAgICAgICAgICAgICB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgQkFaPSIkQkFaICRpIgotKyAgICAgICAgICAgICAgICAgICAgICAgIGk9Il5gZWNobyAkaSB8IHNlZCAnczpfXCs6XFxcKFxbXyBcXVxcXHxcXFxbXFxcfFxcXF1cXFwpXFxcKzpnJ2AiCi0rICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAtZSAiJEZPTyIgfCBncmVwICIkaSIKLSsgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZD0xCi0rICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICBkb25lCi0gIyBTb21lIHBlb3BsZSBhcmUgc2F0aXNmaWVkIHdpdGggYSBzaW5nbGUgb2NjdXJyZW5jZQotICMgQnV0IGl0IGlzIGJldHRlciB0byBnaXZlIGFsbAotICMgICAgICAgICAgICAgICBicmVhawotZGlmZiAtTmF1ciBtYW4tMS42ZS5vcmlnL3NyYy9tYWtld2hhdGlzLnNoIG1hbi0xLjZlL3NyYy9tYWtld2hhdGlzLnNoCi0tLS0gbWFuLTEuNmUub3JpZy9zcmMvbWFrZXdoYXRpcy5zaAkyMDA3LTA1LTE4IDEzOjQ5OjMxLjAwMDAwMDAwMCAtMDMwMAotKysrIG1hbi0xLjZlL3NyYy9tYWtld2hhdGlzLnNoCTIwMDctMDUtMTggMTM6NTA6MDcuMDAwMDAwMDAwIC0wMzAwCi1AQCAtNDEsMTIgKzQxLDMyIEBACi0gCi0gcHJvZ3JhbT1gYmFzZW5hbWUgJDBgCi0gCi0rIyB0aGlzIGFsbG93cyB0byBkZWZpbmUgbGFuZ3VhZ2Ugc3BlY2lmaWMgdmFsdWVzIGZybyBOQU1FLCBERVNDUklQVElPTgotKyMgaWYgbm90IGRlZmluZWQsIHVzaW5nIHRob3NlIGRlZmF1bHQgdmFsdWVzCi0raWYgWyAteiAiJE1BTl9OQU1FIiBdCi0rdGhlbgotKwlNQU5fTkFNRT0i0JjQnNCVfE5PTXxKTcOJTk98TkFWTnzOn86dzp/OnM6RfE5PTUJSRXxOSU1FfElaRU5BfE5JTUl8SU1FfFwKLStOw4lWfE5PTUV85ZCN5YmNfOydtOumhHxOQUFNfE5BWldBfE5VTUV80JjQnNCvfE1FTk980J3QkNCX0JLQkHzlkI3np7B85ZCN56ixIgotK2ZpCi0raWYgWyAteiAiJE1BTl9ERVNDUklQVElPTiIgXQotK3RoZW4KLSsJTUFOX0RFU0NSSVBUSU9OPSLQntCf0JjQodCQ0J3QmNCVfERFU0NSSVBDScOTfFBPUElTfEJFU0tSSVZFTFNFfEJFU0NIUkVJQlVOR3xcCi0rzqDOlc6hzpnOk86hzpHOps6XfERFU0NSSVBDScOTTnxLSVJKRUxEVVN8QVpBTFBFTkF8S1VWQVVTfE9QSVN8TEXDjVLDgVN8REVTQ1JJWklPTkV8XAotK+iqrOaYjnzshKTrqoV8QkVTQ0hSSUpWSU5HfERFU0NSScOHw4NPfERFU0NSSUVSRXzQntCf0JjQoXzmj4/ov7AiCi0rZmkKLSsjIG1ha2UgdGhlbSBpbnRvIGF3ayByZWdleHAKLStNQU5fTkFNRT0iXigke01BTl9OQU1FfSkiOwotK01BTl9ERVNDUklQVElPTj0iXigke01BTl9ERVNDUklQVElPTn0pIjsKLSsKLSAjIEluIGNhc2UgYm90aCAvdXNyL21hbiBhbmQgL3Vzci9zaGFyZS9tYW4gZXhpc3QsIHRoZSBmb3JtZXIgaXMgbG9jYWwKLSAjIGFuZCBzaG91bGQgYmUgZmlyc3QuCi0gIyBJdCBpcyBhIGJ1ZyB0byBhZGQgL3Zhci9jYWNoZS9tYW4gdG8gREVGQ0FUUEFUSC4KLSBkbT0KLSBmb3IgZCBpbiAvdXNyL3NoYXJlL21hbiAvdXNyL21hbiAvdXNyL1gxMVI2L21hbiAvdXNyL2xvY2FsL21hbgotIGRvCi0rICAgIGlmIFsgLW4gIiRMQU5HIiAtYSAtZCAiJGQvJExBTkciIF07IHRoZW4KLSsJaWYgWyB4JGRtID0geCBdOyB0aGVuIGRtPSIkZC8kTEFORyI7IGVsc2UgZG09JGRtOiIkZC8kTEFORyI7IGZpCi0rICAgIGZpCi0gICAgIGlmIFsgLWQgJGQgXTsgdGhlbgotIAlpZiBbIHgkZG0gPSB4IF07IHRoZW4gZG09JGQ7IGVsc2UgZG09JGRtOiRkOyBmaQotICAgICBmaQotQEAgLTU1LDYgKzc1LDkgQEAKLSBkYz0KLSBmb3IgZCBpbiAvdmFyL2NhY2hlL21hbiAvdXNyL3NoYXJlL21hbi9wcmVmb3JtYXQgL3Vzci9tYW4vcHJlZm9ybWF0IC91c3Ivc2hhcmUvbWFuIC91c3IvbWFuCi0gZG8KLSsgICAgaWYgWyAtbiAiJExBTkciIC1hIC1kICIkZC8kTEFORyIgXTsgdGhlbgotKwlpZiBbIHgkZGMgPSB4IF07IHRoZW4gZG09IiRkLyRMQU5HIjsgZWxzZSBkbT0kZGM6IiRkLyRMQU5HIjsgZmkKLSsgICAgZmkKLSAgICAgaWYgWyAtZCAkZCBdOyB0aGVuCi0gCWlmIFsgeCRkYyA9IHggXTsgdGhlbiBkYz0kZDsgZWxzZSBkYz0kZGM6JGQ7IGZpCi0gICAgIGZpCi1AQCAtMTk0LDcgKzIxNyw3IEBACi0gCSAgICBzZWN0aW9uPSRpCi0gCSAgICBjdXJkaXI9JG1hbmRpci8ke3BhZ2VzfSRpCi0gCSAgICBleHBvcnQgc2VjdGlvbiB2ZXJib3NlIGN1cmRpcgotLQkgICAgZmluZCAkbWFuZGlyLyR7cGFnZXN9JGkvLiAtbmFtZSAnKicgJGZpbmRhcmcwICRmaW5kYXJnIC1wcmludCB8ICRBV0sgJwotKwkgICAgZmluZCAkbWFuZGlyLyR7cGFnZXN9JGkvLiAtbmFtZSAnKicgJGZpbmRhcmcwICRmaW5kYXJnIC1wcmludCB8IExDX0FMTD1DICRBV0sgLXYgTUFOX05BTUU9IiRNQU5fTkFNRSIgLXYgTUFOX0RFU0NSSVBUSU9OPSIkTUFOX0RFU0NSSVBUSU9OIiAnCi0gCi0gCSAgICBmdW5jdGlvbiByZWFkbGluZSgpIHsKLSAJICAgICAgaWYgKHVzZV96Y2F0IHx8IHVzZV9iemNhdCkgewotQEAgLTI2MSwxMyArMjg0LDcgQEAKLSAJCWdzdWIoLy5cYi8sICIiKTsKLSAJCWlmICgoJDEgfiAvXlwuW1NzXVtIaF0vICYmCi0gCQkgICgkMiB+IC9bTm5dW0FhXVtNbV1bRWVdLyB8fAotLQkJICAgJDIgfiAvXkpNyU5PLyB8fCAkMiB+IC9eTkFWTi8gfHwgJDIgfiAvXk5VTUUvIHx8Ci0tCQkgICAkMiB+IC9eQkVaRUlDSE5VTkcvIHx8ICQyIH4gL15OT01CUkUvIHx8Ci0tCQkgICAkMiB+IC9eTklNSS8gfHwgJDIgfiAvXk5PTS8gfHwgJDIgfiAvXklNRS8gfHwKLS0JCSAgICQyIH4gL15OW8lFXVYvIHx8ICQyIH4gL15OQU1BLyB8fCAkMiB+IC9ezL7BsC8gfHwKLS0JCSAgICQyIH4gL17Mvr7OLyB8fCAkMiB+IC9ewMy4py8gfHwgJDIgfiAvXk5BWldBLyB8fAotLQkJICAgJDIgfiAvXu7h+vfh7unlLyB8fCAkMiB+IC9ew/uzxi8gfHwgJDIgfiAvXqZXutkvIHx8Ci0tCQkgICAkMiB+IC9eTk9NRS8gfHwgJDIgfiAvXk5BQU0vIHx8ICQyIH4gL17IzMUvKSkgfHwKLSsJCSAgICQyIH4gTUFOX05BTUUgKSkgfHwKLSAJCSAgKHBhZ2VzID09ICJjYXQiICYmICQxIH4gL15OQU1FLykpIHsKLSAJCSAgICBpZiAoIWluc2gpIHsKLSAJCSAgICAgIGluc2ggPSAxOwotQEAgLTI3OCw2ICsyOTUsNyBAQAotIAkJICBpZiAoJDEgfiAvXlwuW1NzXVtIaFlTXS8gfHwKLSAJCSAgICAocGFnZXMgPT0gImNhdCIgJiYKLSAJCSAgICAoJDEgfiAvXlNbeVllRV0vIHx8ICQxIH4gL15ERVNDUklQVElPTi8gfHwKLSsJCSAgICAgJDEgfiBNQU5fREVTQ1JJUFRJT04gfHwKLSAJCSAgICAgJDEgfiAvXkNPTU1BTkQvIHx8ICQxIH4gL15PVkVSVklFVy8gfHwKLSAJCSAgICAgJDEgfiAvXlNUUlVDVFVSRVMvIHx8ICQxIH4gL15JTlRST0RVQ1RJT04vIHx8Ci0gCQkgICAgICQwIH4gL15bXiBdLykpKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtbWFuZGlycy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS1tYW5kaXJzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjQwMDY0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS1tYW5kaXJzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotCi0tLS0gbWFuLTEuNmUub3JpZy9zcmMvbWFuLmNvbmYuaW4JMjAwNS0wOC0yMCAyMDoyNjowNi4wMDAwMDAwMDAgLTAzMDAKLSsrKyBtYW4tMS42ZS9zcmMvbWFuLmNvbmYuaW4JMjAwNy0wNS0xOCAxMDozMDoyOS4wMDAwMDAwMDAgLTAzMDAKLUBAIC0zNiwxMSArMzYsMTIgQEAKLSAjCi0gIyBFdmVyeSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBNQU5QQVRIIGluY2x1ZGVzIHRoZXNlIGZpZWxkcwotICMKLS1NQU5QQVRICS91c3IvbWFuCi0gTUFOUEFUSAkvdXNyL3NoYXJlL21hbgotK01BTlBBVEgJL3Vzci9YMTFSNi9tYW4KLSBNQU5QQVRICS91c3IvbG9jYWwvbWFuCi0gTUFOUEFUSAkvdXNyL2xvY2FsL3NoYXJlL21hbgotLU1BTlBBVEgJL3Vzci9YMTFSNi9tYW4KLStNQU5QQVRICS91c3Iva2VyYmVyb3MvbWFuCi0rTUFOUEFUSAkvdXNyL21hbgotICMKLSAjIFVuY29tbWVudCBpZiB5b3Ugd2FudCB0byBpbmNsdWRlIG9uZSBvZiB0aGVzZSBieSBkZWZhdWx0Ci0gIwotQEAgLTY3LDYgKzY4LDkgQEAKLSBNQU5QQVRIX01BUAkvdXNyL1gxMVI2L2JpbgkJL3Vzci9YMTFSNi9tYW4KLSBNQU5QQVRIX01BUAkvdXNyL2Jpbi9YMTEJCS91c3IvWDExUjYvbWFuCi0gTUFOUEFUSF9NQVAJL3Vzci9iaW4vbWgJCS91c3Ivc2hhcmUvbWFuCi0rTUFOUEFUSF9NQVAJL3Vzci9rZXJiZXJvcy9iaW4JCS91c3Iva2VyYmVyb3MvbWFuCi0rTUFOUEFUSF9NQVAJL3Vzci9rZXJiZXJvcy9zYmluCQkvdXNyL2tlcmJlcm9zL21hbgotKwotICMKLSAjIE5PQVVUT1BBVEgga2VlcHMgbWFuIGZyb20gYXV0b21hdGljYWxseSBhZGRpbmcgZGlyZWN0b3JpZXMgdGhhdCBsb29rIGxpa2UKLSAjIG1hbnVhbCBwYWdlIGRpcmVjdG9yaWVzIHRvIHRoZSBwYXRoLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLW5ld19zZWN0aW9ucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS1uZXdfc2VjdGlvbnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiOTc3M2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLW5ld19zZWN0aW9ucy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotLS0tIG1hbi0xLjZlLm9yaWcvY29uZmlndXJlCTIwMDYtMDUtMDEgMTQ6NTY6MTQuMDAwMDAwMDAwIC0wMzAwCi0rKysgbWFuLTEuNmUvY29uZmlndXJlCTIwMDctMDUtMTggMTQ6MzU6NDMuMDAwMDAwMDAwIC0wMzAwCi1AQCAtOTYwLDcgKzk2MCw3IEBACi0gCi0gIyBXaGF0IHNlY3Rpb25zIGRvIHdlIGFudGljaXBhdGU/Ci0gCi0tdG1wc2VjdGlvbnM9IjEgMXAgOCAyIDMgM3AgNCA1IDYgNyA5IDBwIHRjbCBuIGwgcCBvIgotK3RtcHNlY3Rpb25zPSIxIDFwIDggMiAzIDNwIDNwbSA0IDUgNiA3IDkgMHAgdGNsIG4gbCBwIG8iCi0gCi0gaWYgWyB4JGRlZmF1bHQgPSB4IF07IHRoZW4KLSAgIGVjaG8gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS1yb191c3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtcm9fdXNyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDFjYjBjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS1yb191c3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLUluZGV4OiBtYW4tMS42Zi9zcmMvbWFrZXdoYXRpcy5zaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG1hbi0xLjZmLm9yaWcvc3JjL21ha2V3aGF0aXMuc2gJMjAxMC0xMi0yOSAxMzo0MjozNC4wMDAwMDAwMDAgLTA4MDAKLSsrKyBtYW4tMS42Zi9zcmMvbWFrZXdoYXRpcy5zaAkyMDEwLTEyLTI5IDEzOjQyOjM1LjY2NzQyODM0NyAtMDgwMAotQEAgLTEyNCw3ICsxMjQsNyBAQAotIAljb250aW51ZTs7Ci0gICAgIC1zKSBzZXRzZWN0aW9ucz0xCi0gCWNvbnRpbnVlOzsKLS0gICAgLXUpIGZpbmRhcmc9Ii1jdGltZSAwIgotKyAgICAtdSkgZmluZGFyZz0iLW5ld2VyIC92YXIvY2FjaGUvbWFuL3doYXRpcyIKLSAJdXBkYXRlPTEKLSAJY29udGludWU7OwotICAgICAtdikgdmVyYm9zZT0xCi1AQCAtMTY1LDE0ICsxNjUsNyBAQAotICMgZmlyc3QgdHJ1bmNhdGUgYWxsIHRoZSB3aGF0aXMgZmlsZXMgdGhhdCB3aWxsIGJlIGNyZWF0ZWQgbmV3LAotICMgdGhlbiBvbmx5IHVwZGF0ZSAtIHdlIG1pZ2h0IHZpc2l0IHRoZSBzYW1lIGRpcmVjdG9yeSB0d2ljZQotIGlmIFsgeCR1cGRhdGUgPSB4IF07IHRoZW4KLS0gICBmb3IgcGFnZXMgaW4gbWFuIGNhdAotLSAgIGRvCi0tICAgICAgZXZhbCBwYXRoPSJcJCRwYWdlcyJwYXRoCi0tICAgICAgZm9yIG1hbmRpciBpbiAkcGF0aAotLSAgICAgIGRvCi0tCSBjcCAvZGV2L251bGwgJG1hbmRpci93aGF0aXMKLS0gICAgICBkb25lCi0tICAgZG9uZQotKyAgIGNwIC9kZXYvbnVsbCAvdmFyL2NhY2hlL21hbi93aGF0aXMKLSBmaQotIAotIGZvciBwYWdlcyBpbiBtYW4gY2F0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtc2VjdXJpdHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtc2VjdXJpdHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxMmE4ODIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLXNlY3VyaXR5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotCi1kaWZmIC1OYXVyIG1hbi0xLjZlLm9yaWcvc3JjL21ha2V3aGF0aXMuc2ggbWFuLTEuNmUvc3JjL21ha2V3aGF0aXMuc2gKLS0tLSBtYW4tMS42ZS5vcmlnL3NyYy9tYWtld2hhdGlzLnNoCTIwMDYtMDctMTkgMDE6NTg6MDguMDAwMDAwMDAwIC0wMzAwCi0rKysgbWFuLTEuNmUvc3JjL21ha2V3aGF0aXMuc2gJMjAwNy0wNS0xOCAxMDoxODozMS4wMDAwMDAwMDAgLTAzMDAKLUBAIC00NSw3ICs0NSw3IEBACi0gIyBhbmQgc2hvdWxkIGJlIGZpcnN0LgotICMgSXQgaXMgYSBidWcgdG8gYWRkIC92YXIvY2FjaGUvbWFuIHRvIERFRkNBVFBBVEguCi0gZG09Ci0tZm9yIGQgaW4gL3Vzci9tYW4gL3Vzci9zaGFyZS9tYW4gL3Vzci9YMTFSNi9tYW4gL3Vzci9sb2NhbC9tYW4KLStmb3IgZCBpbiAvdXNyL3NoYXJlL21hbiAvdXNyL21hbiAvdXNyL1gxMVI2L21hbiAvdXNyL2xvY2FsL21hbgotIGRvCi0gICAgIGlmIFsgLWQgJGQgXTsgdGhlbgotIAlpZiBbIHgkZG0gPSB4IF07IHRoZW4gZG09JGQ7IGVsc2UgZG09JGRtOiRkOyBmaQotQEAgLTUzLDcgKzUzLDcgQEAKLSBkb25lCi0gREVGTUFOUEFUSD0kZG0KLSBkYz0KLS1mb3IgZCBpbiAvdXNyL21hbi9wcmVmb3JtYXQgL3Vzci9tYW4gL3Vzci9zaGFyZS9tYW4vcHJlZm9ybWF0IC91c3Ivc2hhcmUvbWFuCi0rZm9yIGQgaW4gL3Zhci9jYWNoZS9tYW4gL3Vzci9zaGFyZS9tYW4vcHJlZm9ybWF0IC91c3IvbWFuL3ByZWZvcm1hdCAvdXNyL3NoYXJlL21hbiAvdXNyL21hbgotIGRvCi0gICAgIGlmIFsgLWQgJGQgXTsgdGhlbgotIAlpZiBbIHgkZGMgPSB4IF07IHRoZW4gZGM9JGQ7IGVsc2UgZGM9JGRjOiRkOyBmaQotQEAgLTc2LDEyICs3NiwxMiBAQAotICMgV2UgdHJ5IGhlcmUgdG8gYmUgY2FyZWZ1bCAoYW5kIGF2b2lkIHByZWNvbnN0cnVjdGVkIHN5bWxpbmtzKQotICMgaW4gY2FzZSBtYWtld2hhdGlzIGlzIHJ1biBhcyByb290LCBieSBjcmVhdGluZyBhIHN1YmRpcmVjdG9yeSBvZiAvdG1wLgotIAotLVRNUEZJTEVESVI9L3RtcC93aGF0aXMudG1wLmRpci4kJAotLXJtIC1yZiAkVE1QRklMRURJUgotLWlmICEgbWtkaXIgLW0gMDcwMCAkVE1QRklMRURJUjsgdGhlbgotLSAgICBlY2hvIENvdWxkIG5vdCBjcmVhdGUgJFRNUEZJTEVESVIKLS0gICAgZXhpdCAxOwotK1RNUEZJTEVESVI9YG1rdGVtcCAtZCAvdG1wL21ha2V3aGF0aXNYWFhYWFhgCi0raWYgWyAkPyAtbmUgMCBdOyB0aGVuCi0rICAgZWNobyAiJDA6IENhbid0IGNyZWF0ZSB0ZW1wIGZpbGUsIGV4aXRpbmcuLi4iCi0rICAgZXhpdCAxCi0gZmkKLStjaG1vZCAwNzAwICRUTVBGSUxFRElSCi0gVE1QRklMRT0kVE1QRklMRURJUi93Ci0gCi0gIyBtYWtlIHN1cmUgVE1QRklMRURJUiBpcyBkZWxldGVkIGlmIHByb2dyYW0gaXMga2lsbGVkIG9yIHRlcm1pbmF0ZXMKLWRpZmYgLU5hdXIgbWFuLTEuNmUub3JpZy9zcmMvbWFuLmMgbWFuLTEuNmUvc3JjL21hbi5jCi0tLS0gbWFuLTEuNmUub3JpZy9zcmMvbWFuLmMJMjAwNi0wNS0wMSAxNzozNDoyMi4wMDAwMDAwMDAgLTAzMDAKLSsrKyBtYW4tMS42ZS9zcmMvbWFuLmMJMjAwNy0wNS0xOCAxMDoxMTozMy4wMDAwMDAwMDAgLTAzMDAKLUBAIC0xMjM0LDcgKzEyMzQsNiBAQAotICNlbmRpZgotIAotIAotLSNpZiAwCi0gICAgICB7Ci0gCS8qIFRoZXJlIGFyZSBubyBrbm93biBjYXNlcyBvZiBidWZmZXIgb3ZlcmZsb3cgY2F1c2VkIGJ5Ci0gCSAgIGV4Y2Vzc2l2ZWx5IGxvbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzLiBJbiBjYXNlIHlvdSBmaW5kIG9uZSwKLUBAIC0xMjU3LDcgKzEyNTYsNiBAQAotIAkgICBNQU5fSUNPTlZfUEFUSCwgTUFOX0lDT05WX09QVCwgTUFOX0lDT05WX0lOUFVUX0NIQVJTRVQsCi0gCSAgIE1BTl9JQ09OVl9PVVRQVVRfQ0hBUlNFVCwgTkxTUEFUSCwgUEFUSCAqLwotICAgICAgfQotLSNlbmRpZgotIAotIAotICNpZm5kZWYgX19GcmVlQlNEX18gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtdXNlX2kxOG5fdmFyc19pbl9hX3N0ZF93YXkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmUtdXNlX2kxOG5fdmFyc19pbl9hX3N0ZF93YXkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2OGY3NDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLXVzZV9pMThuX3ZhcnNfaW5fYV9zdGRfd2F5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYwICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLQotZGlmZiAtTmF1ciBtYW4tMS42ZS5vcmlnL2NhdG9wZW4vY2F0b3Blbi5jIG1hbi0xLjZlL2NhdG9wZW4vY2F0b3Blbi5jCi0tLS0gbWFuLTEuNmUub3JpZy9jYXRvcGVuL2NhdG9wZW4uYwkyMDA1LTA4LTIwIDIwOjI2OjA2LjAwMDAwMDAwMCAtMDMwMAotKysrIG1hbi0xLjZlL2NhdG9wZW4vY2F0b3Blbi5jCTIwMDctMDUtMTggMTE6MzE6MDUuMDAwMDAwMDAwIC0wMzAwCi1AQCAtOSwyMiArOSw2MyBAQAotIGV4dGVybiBjaGFyICppbmRleCAoY29uc3QgY2hhciAqLCBpbnQpOyAgICAgICAgIC8qIG5vdCBhbHdheXMgaW4gPHN0cmluZy5oPiAqLwotIGV4dGVybiBjaGFyICpteV9tYWxsb2MoaW50KTsJLyogaW4gdXRpbC5jICovCi0gCi0rLyogaWYgdGhlIHByb2dyYW0gaGFzIHNnaWQvc3VpZCBwcml2aWxlZ2VzIHRoZW4gZ2V0ZW52IGRvZXNuJ3QgcmV0dXJuCi0rICogTkxTUEFUSDsgc28gd2Ugc2V0IGhlcmUgYSBnb29kIGRlZmF1bHQgdmFsdWUuCi0rICovCi0gI2lmbmRlZiBERUZBVUxUX05MU1BBVEgKLSAjIGlmIF9fR0xJQkNfXyA+PSAyCi0tIyAgZGVmaW5lIERFRkFVTFRfTkxTUEFUSCAiL3Vzci9zaGFyZS9sb2NhbGUvJUwvJU4iCi0rIyAgZGVmaW5lIERFRkFVTFRfTkxTUEFUSCAiL3Vzci9zaGFyZS9sb2NhbGUvJUwvJU46L3Vzci9zaGFyZS9sb2NhbGUvJWxfJXQvJU46L3Vzci9zaGFyZS9sb2NhbGUvJWwvJU4iCi0gIyBlbHNlCi0gIyAgZGVmaW5lIERFRkFVTFRfTkxTUEFUSCAiL3Vzci9saWIvbG9jYWxlLyVOLyVMIgotICMgZW5kaWYKLSAjZW5kaWYKLSAKLS1zdGF0aWMgbmxfY2F0ZCBteV9jYXRvcGVucGF0aChjaGFyICpuYW1lLCBjaGFyICpwYXRoKTsKLStzdGF0aWMgbmxfY2F0ZCBteV9jYXRvcGVucGF0aChjaGFyICpuYW1lLCBjaGFyICpwYXRoLCBjaGFyICpsYW5nKTsKLSAKLSBzdGF0aWMJCQkJLyogdGhpcyBzb3VyY2UgaW5jbHVkZWQgaW4gZ3JpcGVzLmMgKi8KLSBubF9jYXRkCi0gbXlfY2F0b3BlbihjaGFyICpuYW1lLCBpbnQgb2ZsYWcpIHsKLS0gIG5sX2NhdGQgZmQ7Ci0rICBubF9jYXRkIGZkID0gKG5sX2NhdGQpIC0xOwotKwotKyAgLyogdXNpbmcgZmlyc3QgdGhlIG15X2NhdG9wZW5wYXRoLCB3aGljaCBsb29rcyB3aXRoIExBTkdVQUdFCi0rICAgKiBhbmQgb25seSBpZiBpdCBmYWlscyByZXNzb3J0IHRvIGNhdG9wZW4sIGl0IGdpdmVzIGJldHRlciBpMThuCi0rICAgKi8KLSsgIHsKLSsgICAgY2hhciAqbmxzcGF0aCwgKmxhbmcsICpzOwotIAotLSAgZmQgPSBjYXRvcGVuKG5hbWUsIG9mbGFnKTsKLSsgICAgLyoKLSsgICAgICogIklmIE5MU1BBVEggZG9lcyBub3QgZXhpc3QgaW4gdGhlIGVudmlyb25tZW50LCBvciBpZiBhCi0rICAgICAqIG1lc3NhZ2UgY2F0YWxvZyBjYW5ub3QgYmUgb3BlbmVkIGluIGFueSBvZiB0aGUgcGF0aHMgc3BlY2lmaWVkCi0rICAgICAqIGJ5IE5MU1BBVEgsIHRoZW4gYW4gaW1wbGVtZW50YXRpb24gZGVmaW5lZCBkZWZhdWx0IHBhdGggaXMgdXNlZCIKLSsgICAgICovCi0rICAgIG5sc3BhdGggPSBnZXRlbnYoIk5MU1BBVEgiKTsKLSsgICAgaWYgKCFubHNwYXRoKQotKyAgICAgIG5sc3BhdGggPSBERUZBVUxUX05MU1BBVEg7Ci0rIAotKyAgICBsYW5nID0gZ2V0ZW52KCJMQU5HVUFHRSIpOwotKyAgICBpZiAoIWxhbmcpCi0rICAgICAgbGFuZyA9IGdldGVudigiTENfQUxMIik7Ci0rICAgIGlmICghbGFuZykKLSsgICAgICBsYW5nID0gZ2V0ZW52KCJMQ19NRVNTQUdFUyIpOwotKyAgICBpZiAoIWxhbmcpCi0rICAgICAgbGFuZyA9IGdldGVudigiTEFORyIpOwotKyAgICBpZiAoIWxhbmcpCi0rICAgICAgbGFuZyA9ICIiOwotKyAKLSsgICAgd2hpbGUoKmxhbmcgJiYgKGZkID09IChubF9jYXRkKSAtMSkpIHsKLSsgICAgICBzID0gaW5kZXgobGFuZywgJzonKTsKLSsgICAgICBpZiAocykgKnMgPSAwOwotKyAgICAgICAgZmQgPSBteV9jYXRvcGVucGF0aChuYW1lLCBubHNwYXRoLCBsYW5nKTsKLSsgICAgICBpZiAocykgbGFuZz1zKzE7Ci0rICAgICAgZWxzZSBsYW5nID0gIiI7Ci0rICAgIH0KLSsgICAgaWYgKGZkID09IChubF9jYXRkKSAtMSkKLSsgICAgICBmZCA9IG15X2NhdG9wZW5wYXRoKG5hbWUsIG5sc3BhdGgsICJlbiIpOwotKyAgfQotKwotKyAgLyogc3RpbGwgbm90IGZvdW5kLCB1c2UgdGhlIHN5c3RlbSBjYXRvcGVuICovCi0rICBpZiAoZmQgPT0gKG5sX2NhdGQpIC0xKQotKyAgICBmZCA9IGNhdG9wZW4obmFtZSwgb2ZsYWcpOwotIAotICAgaWYgKGZkID09IChubF9jYXRkKSAtMSAmJiBvZmxhZykgewotICAgICBvZmxhZyA9IDA7Ci1AQCAtMzIsOCArNzMsNiBAQAotICAgfQotIAotICAgaWYgKGZkID09IChubF9jYXRkKSAtMSkgewotLSAgICBjaGFyICpubHNwYXRoOwotLQotICAgICAvKiBUaGUgbGliYyBjYXRvcGVuIGZhaWxzIC0gbGV0IHVzIHNlZSBpZiB3ZSBjYW4gZG8gYmV0dGVyICovCi0gICAgIC8qIFRoZSBxdW90ZXMgYmVsb3cgYXJlIGZyb20gWC9PcGVuLCBYUEcgMTk4NywgVm9sLiAzLiAqLwotIAotQEAgLTU4LDE3ICs5Nyw2IEBACi0gI2VuZGlmCi0gICAgIH0KLSAKLS0gICAgLyoKLS0gICAgICogIklmIE5MU1BBVEggZG9lcyBub3QgZXhpc3QgaW4gdGhlIGVudmlyb25tZW50LCBvciBpZiBhCi0tICAgICAqIG1lc3NhZ2UgY2F0YWxvZyBjYW5ub3QgYmUgb3BlbmVkIGluIGFueSBvZiB0aGUgcGF0aHMgc3BlY2lmaWVkCi0tICAgICAqIGJ5IE5MU1BBVEgsIHRoZW4gYW4gaW1wbGVtZW50YXRpb24gZGVmaW5lZCBkZWZhdWx0IHBhdGggaXMgdXNlZCIKLS0gICAgICovCi0tCi0tICAgIG5sc3BhdGggPSBnZXRlbnYoIk5MU1BBVEgiKTsKLS0gICAgaWYgKG5sc3BhdGgpCi0tICAgICAgZmQgPSBteV9jYXRvcGVucGF0aChuYW1lLCBubHNwYXRoKTsKLS0gICAgaWYgKGZkID09IChubF9jYXRkKSAtMSkKLS0gICAgICBmZCA9IG15X2NhdG9wZW5wYXRoKG5hbWUsIERFRkFVTFRfTkxTUEFUSCk7Ci0gICB9Ci0gICByZXR1cm4gZmQ7Ci0gfQotQEAgLTkwLDE1ICsxMTgsMTMgQEAKLSAgKgotICAqLwotIHN0YXRpYyBubF9jYXRkCi0tbXlfY2F0b3BlbnBhdGgoY2hhciAqbmFtZSwgY2hhciAqbmxzcGF0aCkgewotLSAgaW50IGZkOwotK215X2NhdG9wZW5wYXRoKGNoYXIgKm5hbWUsIGNoYXIgKm5sc3BhdGgsIGNoYXIgKmxhbmcpIHsKLSAgIG5sX2NhdGQgY2ZkID0gKG5sX2NhdGQpIC0xOwotLSAgY2hhciAqcGF0aDAsICpwYXRoLCAqcywgKmZpbGUsICpsYW5nLCAqbGFuZ19sLCAqbGFuZ190LCAqbGFuZ19jOwotKyAgY2hhciAqcGF0aDAsICpwYXRoLCAqcywgKmZpbGUsICpsYW5nX2wsICpsYW5nX3QsICpsYW5nX2M7Ci0gICBpbnQgbGFuZ3N6LCBuYW1lc3osIHN6LCBsYW5nX2xfc3osIGxhbmdfdF9zeiwgbGFuZ19jX3N6OwotIAotICAgbmFtZXN6ID0gc3RybGVuKG5hbWUpOwotIAotLSAgbGFuZyA9IGdldGVudigiTEFORyIpOwotICAgaWYgKCFsYW5nKQotICAgICBsYW5nID0gIiI7Ci0gICBsYW5nc3ogPSBzdHJsZW4obGFuZyk7Ci1AQCAtMTk0LDE0ICsyMjAsOSBAQAotICAgICAgIHBhdGggPSBzKzE7Ci0gICAgIH0gZWxzZQotICAgICAgIHBhdGggPSAwOwotLSAgICBmZCA9IG9wZW4oZmlsZSwgT19SRE9OTFkpOwotLSAgICBpZiAoZmQgIT0gLTEpIHsKLS0gICAgICAvKiB3ZSBmb3VuZCB0aGUgcmlnaHQgY2F0YWxvZyAtIGJ1dCB3ZSBkb24ndCBrbm93IHRoZQotLQkgdHlwZSBvZiBubF9jYXRkLCBzbyBjbG9zZSBpdCBhZ2FpbiBhbmQgYXNrIGxpYmMgKi8KLS0gICAgICBjbG9zZShmZCk7Ci0tICAgICAgY2ZkID0gY2F0b3BlbihmaWxlLCAwKTsKLS0gICAgICBicmVhazsKLS0gICAgfQotKwljZmQgPSBjYXRvcGVuKGZpbGUsIDApOwotKwlpZiAoY2ZkICE9IChubF9jYXRkKSAtMSkKLSsJCQlicmVhazsKLSAgIH0KLSAKLSAgIGZyZWUocGF0aDApOwotZGlmZiAtTmF1ciBtYW4tMS42ZS5vcmlnL3NyYy9tYW5wYXRoLmMgbWFuLTEuNmUvc3JjL21hbnBhdGguYwotLS0tIG1hbi0xLjZlLm9yaWcvc3JjL21hbnBhdGguYwkyMDA2LTA4LTAzIDE4OjE4OjMzLjAwMDAwMDAwMCAtMDMwMAotKysrIG1hbi0xLjZlL3NyYy9tYW5wYXRoLmMJMjAwNy0wNS0xOCAxMTowMjo0OC4wMDAwMDAwMDAgLTAzMDAKLUBAIC0yODIsMTMgKzI4MiwxNCBAQAotIAkJLyogV2UgY2Fubm90IHVzZSAibGFuZyA9IHNldGxvY2FsZShMQ19NRVNTQUdFUywgTlVMTCkiIG9yIHNvOgotIAkJICAgdGhlIHJldHVybiB2YWx1ZSBvZiBzZXRsb2NhbGUgaXMgYW4gb3BhcXVlIHN0cmluZy4gKi8KLSAJCS8qIFBPU0lYIHByZXNjcmliZXMgdGhlIG9yZGVyOiBMQ19BTEwsIExDX01FU1NBR0VTLCBMQU5HICovCi0tCQlpZigobGFuZyA9IGdldGVudigiTENfQUxMIikpICE9IE5VTEwpCi0rCSAgICAgICAgLyogTEFOR1VBR0UgaXMgR05VL0xpbnV4IGFuZCBvdmVycnVsZXMgYWxsICovCi0rCQlpZigobGFuZyA9IGdldGVudigiTEFOR1VBR0UiKSkgIT0gTlVMTCkKLSAJCQlzcGxpdDIoZGlyLCBsYW5nLCBhZGRfdG9fbWFuZGlybGlzdF94LCBwZXJycyk7Ci0tCQlpZigobGFuZyA9IGdldGVudigiTENfTUVTU0FHRVMiKSkgIT0gTlVMTCkKLSsJCWVsc2UgaWYoKGxhbmcgPSBnZXRlbnYoIkxDX0FMTCIpKSAhPSBOVUxMKQotIAkJCXNwbGl0MihkaXIsIGxhbmcsIGFkZF90b19tYW5kaXJsaXN0X3gsIHBlcnJzKTsKLS0JCWlmKChsYW5nID0gZ2V0ZW52KCJMQU5HIikpICE9IE5VTEwpCi0rCQllbHNlIGlmKChsYW5nID0gZ2V0ZW52KCJMQ19NRVNTQUdFUyIpKSAhPSBOVUxMKQotIAkJCXNwbGl0MihkaXIsIGxhbmcsIGFkZF90b19tYW5kaXJsaXN0X3gsIHBlcnJzKTsKLS0JCWlmKChsYW5nID0gZ2V0ZW52KCJMQU5HVUFHRSIpKSAhPSBOVUxMKQotKwkJZWxzZSBpZigobGFuZyA9IGdldGVudigiTEFORyIpKSAhPSBOVUxMKQotIAkJCXNwbGl0MihkaXIsIGxhbmcsIGFkZF90b19tYW5kaXJsaXN0X3gsIHBlcnJzKTsKLSAJCWFkZF90b19tYW5kaXJsaXN0X3goZGlyLCAwLCBwZXJycyk7Ci0gCX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42ZS13aGF0aXMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLXdoYXRpczIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjNGVkMzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZlLXdoYXRpczIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci0KLUluZGV4OiBtYW4tMS42Zi9zcmMvbWFrZXdoYXRpcy5zaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG1hbi0xLjZmLm9yaWcvc3JjL21ha2V3aGF0aXMuc2gJMjAxMC0xMi0yOSAxMzo1MTo0NS4wMDAwMDAwMDAgLTA4MDAKLSsrKyBtYW4tMS42Zi9zcmMvbWFrZXdoYXRpcy5zaAkyMDEwLTEyLTI5IDEzOjU5OjM1LjM5OTc5OTQxMiAtMDgwMAotQEAgLTE2NCwxMCArMTY0LDE1IEBACi0gZmkKLSBjYXRwYXRoPWBlY2hvICR7Y2F0cGF0aH0gfCB0ciA6ICcgJ2AKLSAKLSsjV0hBVElTX0RJUj0kREVTVERJUi92YXIvY2FjaGUvbWFuL2BlY2hvICRoZXJlfHNlZCAtZSAncyEuKi9tYW4vISFnJ2AKLStXSEFUSVNfRElSPSRERVNURElSL3Zhci9jYWNoZS9tYW4vJExBTkcKLStbWyAtZCAkV0hBVElTX0RJUiBdXSB8fCBta2RpciAtcCAkV0hBVElTX0RJUi8KLSsKLSAjIGZpcnN0IHRydW5jYXRlIGFsbCB0aGUgd2hhdGlzIGZpbGVzIHRoYXQgd2lsbCBiZSBjcmVhdGVkIG5ldywKLSAjIHRoZW4gb25seSB1cGRhdGUgLSB3ZSBtaWdodCB2aXNpdCB0aGUgc2FtZSBkaXJlY3RvcnkgdHdpY2UKLSBpZiBbIHgkdXBkYXRlID0geCBdOyB0aGVuCi0tICAgY3AgL2Rldi9udWxsIC92YXIvY2FjaGUvbWFuL3doYXRpcwotKyAgIG1rZGlyIC1wICRXSEFUSVNfRElSLwotKyAgIC9iaW4vZWNobyAtbiA+ICRXSEFUSVNfRElSL3doYXRpcwotIGZpCi0gCi0gZm9yIHBhZ2VzIGluIG1hbiBjYXQKLUBAIC0xODAsMTMgKzE4NSw3IEBACi0gCWVjaG8gImFib3V0IHRvIGVudGVyICRtYW5kaXIiID4gL2Rldi9zdGRlcnIKLSAgICAgIGZpCi0gCi0tICAgICAjIGtsdWRnZSBmb3IgU2xhY2t3YXJlJ3MgL3Vzci9tYW4vcHJlZm9ybWF0Ci0tICAgICBpZiBbICRtYW5kaXIgPSAvdXNyL21hbi9wcmVmb3JtYXQgXQotLSAgICAgdGhlbgotLQltYW5kaXIxPS91c3IvbWFuCi0tICAgICBlbHNlCi0tCW1hbmRpcjE9JG1hbmRpcgotLSAgICAgZmkKLSsgICAgIG1hbmRpcjE9JFdIQVRJU19ESVIKLSAKLSAgICAgICMgaWYgJG1hbmRpciBpcyBvbiBhIHJlYWRvbmx5IHBhcnRpdGlvbiwgYW5kIHRoZSB3aGF0aXMgZmlsZQotICAgICAgIyBpcyBub3QgYSBzeW1saW5rLCB0aGVuIGxldCdzIHNraXAgdHJ5aW5nIHRvIHVwZGF0ZSBpdAotQEAgLTIwNywxMSArMjA2LDYgQEAKLSAJZmkKLSAgICAgIGZpCi0gCi0tICAgICBpZiBbIC1zICR7bWFuZGlyfS93aGF0aXMgLWEgJHBhZ2VzID0gbWFuIC1hIHgkdXBkYXRlID0geCBdOyB0aGVuCi0tCWlmIFsgeCR2ZXJib3NlICE9IHggXTsgdGhlbgotLQkgICBlY2hvIHNraXBwaW5nICRtYW5kaXIgLSB3ZSBkaWQgaXQgYWxyZWFkeSA+IC9kZXYvc3RkZXJyCi0tCWZpCi0tICAgICBlbHNlICAgICAgCi0gICAgICAgIGhlcmU9YHB3ZGAKLSAgICAgICAgY2QgJG1hbmRpcgotICAgICAgICBmb3IgaSBpbiAkc2VjdGlvbnMKLUBAIC00NDcsNyArNDQ3LDYgQEAKLQotICAgICAgICBjaG1vZCA2NDQgJHttYW5kaXIxfS93aGF0aXMKLSAgICAgICAgcm0gJFRNUEZJTEUKLS0gICAgIGZpCi0gICAgZG9uZQotIGRvbmUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42Zy1jb21waWxlLXdhcm5pbmdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZnLWNvbXBpbGUtd2FybmluZ3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2MzFkMmQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZnLWNvbXBpbGUtd2FybmluZ3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotRml4IGEgYnVpbGQgZXJyb3Igd2hlbiBidWlsZGluZyBtYW4uY29uZmlnLjUgKGEgcmVtbmFudCBvZiBhIGxvbmcKLWFnbyBwcmV2aW91cyBwYXRjaCkuIE9wdGltaXplZCB0aGUgbWFucGFnZXMgTWFrZWZpbGUgZm9yIHBhcmFsbGVsCi1idWlsZHMuIEFsc28sIGZpeCBjb21waWxlIHdhcm5pbmdzIGluIGEgY291cGxlIG90aGVyIGZpbGVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQmlsbCBSYW5kbGUgPHdpbGxpYW0uYy5yYW5kbGVAaW50ZWwuY29tPgotCi0tLS0gbWFuLTEuNmcvbWFuL01ha2VmaWxlLmluLm9yaWcJMjAxNi0wMy0yOCAxNzozMTowOC43MjM5NDkxODAgLTA3MDAKLSsrKyBtYW4tMS42Zy9tYW4vTWFrZWZpbGUuaW4JMjAxNi0wMy0yOCAxNzo0NjoxMi44NjY5MTAzODYgLTA3MDAKLUBAIC01LDYgKzUsMTMgQEAKLSBBTEwgPSBtYW4uMSB3aGF0aXMuMSBhcHJvcG9zLjEgbWFuLmNvbmZpZy41Ci0gTUFZQkU4ID0gbWFrZXdoYXRpcwotIAotK1NVQkRJUlMgOj0gJChzaGVsbCBlY2hvIEBsYW5ndWFnZXNAKQotKwotKy5QSE9OWTogc3ViZGlycyAkKFNVQkRJUlMpCi0rCi0rbWFuLmNvbmZpZy5tYW46IG1hbi5jb25mLm1hbgotKwlAY3AgJDwgJEAKLSsKLSAuU1VGRklYRVM6IC5tYW4gLjEgLjUgLjgKLSAKLSAubWFuLjE6Ci1AQCAtMTksMTEgKzI2LDExIEBACi0gSU5TVEFMTCA9IEBJTlNUQUxMQCAtYyAtbSA2NDQKLSAKLSAjIFdoZXJlIHRvIHB1dCB0aGUgbWFudWFsIHBhZ2VzLgotLW1hbmRpciA9ICQoREVTVERJUikkKFBSRUZJWClAbWFuZGlyQCQoU0xBTkcpCi0rbWFuZGlyIDo9ICQoREVTVERJUikkKFBSRUZJWClAbWFuZGlyQCQoU0xBTkcpCi0gCi0gYWxsOgkkKEFMTCkKLSAJZm9yIGkgaW4gJChNQVlCRTgpOyBcCi0tCQlkbyBpZiB0ZXN0IC1mICQkaS5tYW47IHRoZW4gbWFrZSAtZiAuLi9NYWtlZmlsZSAkJGkuODsgZmk7IGRvbmUKLSsJCWRvIGlmIHRlc3QgLWYgJCRpLm1hbjsgdGhlbiAkKE1BS0UpIC1mIC4uL01ha2VmaWxlICQkaS44OyBmaTsgZG9uZQotIAotIGluc3RhbGw6ICQoQUxMKQotIAlta2RpciAtcCAkKG1hbmRpcikvbWFuMSAkKG1hbmRpcikvbWFuNSAkKG1hbmRpcikvbWFuOAotQEAgLTM4LDI0ICs0NSwyNyBAQAotIAlybSAtZiBjb3JlICouaW4gKi5AbWFuMWV4dEAgKi5AbWFuNWV4dEAgKi5AbWFuOGV4dEAgKn4KLSAKLSBzcG90bGVzczoKLSsJcm0gLWYgbWFuLmNvbmZpZy5tYW4KLSAKLSBzdWJkaXJzOgotLQlAZm9yIGkgaW4gQGxhbmd1YWdlc0A7IGRvIGlmIHRlc3QgLWQgJCRpOyB0aGVuIGVjaG87IFwKLS0JCWVjaG8gIj09PT0gTWFraW5nIHRoZSBgY2F0ICQkaS50eHRgIG1hbiBwYWdlcy4gPT09PSI7IFwKLS0JCWNkICQkaTsgbWFrZSAtZiAuLi9NYWtlZmlsZTsgY2QgLi47IFwKLS0JCWVsc2UgZWNobyAiPT09PSBObyAkJGkgbWFuIHBhZ2VzIGZvdW5kLiA9PT09IjsgZmk7IGRvbmUKLStzdWJkaXJzOiAkKFNVQkRJUlMpCi0rJChTVUJESVJTKToKLSsJaWYgdGVzdCAtZCAkQDsgdGhlbiBlY2hvOyBcCi0rCQllY2hvICI9PT09IE1ha2luZyB0aGUgYGNhdCAkQC50eHRgIG1hbiBwYWdlcy4gPT09PSI7IFwKLSsJCSQoTUFLRSkgLUMgJEAgLWYgLi4vTWFrZWZpbGUgYWxsOyBcCi0rCQllbHNlIGVjaG8gIj09PT0gTm8gJEAgbWFuIHBhZ2VzIGZvdW5kLiA9PT09IjsgZmkKLSAKLSBpbnN0YWxsc3ViZGlyczoKLSAJQGZvciBpIGluIEBsYW5ndWFnZXNAOyBkbyBpZiB0ZXN0IC1kICQkaTsgdGhlbiBlY2hvOyBcCi0gCQllY2hvICI9PT09IEluc3RhbGxpbmcgdGhlIGBjYXQgJCRpLnR4dGAgbWFuIHBhZ2VzLiA9PT09IjsgXAotIAkJY2QgJCRpOyBTTEFORz0vJCRpOyBpZiB0ZXN0ICQkU0xBTkcgPSAvZW47IHRoZW4gU0xBTkc9IDsgZmk7IFwKLS0JCWV4cG9ydCBTTEFORzsgbWFrZSAtZiAuLi9NYWtlZmlsZSBpbnN0YWxsOyBjZCAuLjsgXAotKwkJZXhwb3J0IFNMQU5HOyAkKE1BS0UpIC1mIC4uL01ha2VmaWxlIGluc3RhbGw7IGNkIC4uOyBcCi0gCQllbHNlIGVjaG8gIj09PT0gTm8gJCRpIG1hbiBwYWdlcyBmb3VuZC4gPT09PSI7IGZpOyBkb25lCi0gCi0gY2xlYW5zdWJkaXJzOgotLQlAZm9yIGkgaW4gPz87IGRvIGNkICQkaTsgbWFrZSAtZiAuLi9NYWtlZmlsZSBjbGVhbjsgY2QgLi47IGRvbmUKLSsJQGZvciBpIGluID8/OyBkbyAkKE1BS0UpIC1DICQkaSAtZiAuLi9NYWtlZmlsZSBjbGVhbjsgZG9uZQotIAlybSAtZiBjb3JlICp+Ci0gCi0gc3BvdGxlc3NzdWJkaXJzOgotLQlmb3IgaSBpbiA/PzsgZG8gY2QgJCRpOyBtYWtlIC1mIC4uL01ha2VmaWxlIHNwb3RsZXNzOyBjZCAuLjsgZG9uZQotKwlmb3IgaSBpbiA/PzsgZG8gJChNQUtFKSAtQyAkJGkgLWYgLi4vTWFrZWZpbGUgc3BvdGxlc3M7IGRvbmUKLSAJcm0gLWYgTWFrZWZpbGUKLQotLS0tIG1hbi0xLjZnL3NyYy9ncmlwZXMuYy5vcmlnCTIwMDYtMTEtMjEgMTE6NTM6NDQuMDAwMDAwMDAwIC0wODAwCi0rKysgbWFuLTEuNmcvc3JjL2dyaXBlcy5jCTIwMTYtMDMtMzAgMTY6MzI6MzEuNjAxMTAzNDg3IC0wNzAwCi1AQCAtNyw4ICs3LDYgQEAKLSAKLSBleHRlcm4gY2hhciAqbXNnW107Ci0gCi0tc3RhdGljIGNoYXIgKm1hbnRleHRzID0gIm1hbiI7CQkvKiBlLmcuIC91c3IvbGliL2xvY2FsZS8lTC9tYW4uY2F0ICovCi0tCi0gI2lmZGVmIE5PTkxTCi0gCi0gc3RhdGljIGNoYXIgKgotQEAgLTMwLDYgKzI4LDggQEAKLSAjaW5jbHVkZSA8bmxfdHlwZXMuaD4KLSAjaW5jbHVkZSAiLi4vY2F0b3Blbi9jYXRvcGVuLmMiCi0gCi0rc3RhdGljIGNoYXIgKm1hbnRleHRzID0gIm1hbiI7CQkvKiBlLmcuIC91c3IvbGliL2xvY2FsZS8lTC9tYW4uY2F0ICovCi0rCi0gbmxfY2F0ZCBjYXRmZCA9IChubF9jYXRkKSAtMTsKLSBpbnQgY2F0X2lzX29wZW4gPSAwOwotIAotLS0tIG1hbi0xLjZnL3NyYy9tYW5maWxlLmMub3JpZwkyMDA1LTA4LTIwIDE2OjI2OjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIG1hbi0xLjZnL3NyYy9tYW5maWxlLmMJMjAxNi0wMy0yOSAwOToxMDoyMS41Mjc4NDEyODUgLTA3MDAKLUBAIC0yOTksNyArMjk5LDcgQEAKLSAJY29uc3QgY2hhciAqKCgqdG9jYXQpKGNvbnN0IGNoYXIgKm1hbl9maWxlbmFtZSwgY29uc3QgY2hhciAqZXh0LAotIAkJCSAgICAgIGludCBmbGFncykpKSB7Ci0gICAgICBjaGFyICoqc2w7Ci0tICAgICBzdHJ1Y3QgbWFucGFnZSAqcmVzOwotKyAgICAgc3RydWN0IG1hbnBhZ2UgKnJlcyA9IDA7Ci0gCi0gICAgICBzdGFuZGFyZHMgPSAoZmxhZ3MgJiAoRkhTIHwgRlNTVE5EIHwgRE9fSFAgfCBET19JUklYKSk7Ci0gICAgICB0b19jYXRfZmlsZW5hbWUgPSB0b2NhdDsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42Zy1jb25maWd1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLTEuNmctY29uZmlndXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDZjYzk4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42Zy1jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1Vc2UgQlVJTERfQ0MgYW5kIHRhcmdldCBpbmNsdWRlIGZpbGVzIGZvciBjb25maWd1cmF0aW9uIHRlc3RzLgotSWYgY3Jvc3MtY29tcGlsaW5nLCBmb3JjZSBwYXRobmFtZXMgZm9yIGhlbHBlciBwcm9ncmFtcywgc2luY2UKLWF1dG9kaXNjb3ZlcnkgYnkgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgd2lsbCBub3Qgd29yay4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEJpbGwgUmFuZGxlIDx3aWxsaWFtLmMucmFuZGxlIGF0IGludGVsLmNvbT4KLQotLS0tIG1hbi0xLjZnL2NvbmZpZ3VyZS5vcmlnCTIwMTYtMDMtMjggMTc6NDY6MTIuNzM0OTEwOTc2IC0wNzAwCi0rKysgbWFuLTEuNmcvY29uZmlndXJlCTIwMTYtMDMtMzAgMjE6NDc6NDUuMTEwNTcyOTA4IC0wNzAwCi1AQCAtMjE2LDcgKzIxNiw4IEBACi0gSU5DTFVERURJUj0ke0lOQ0xVREVESVItL3Vzci9pbmNsdWRlfQotIAotIHJtIC1mIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMKLS1jb21waWxlPSIkQ0MgJERFRlMgY29uZnRlc3QuYyAtbyBjb25mdGVzdCAkTElCUyA+L2Rldi9udWxsIDI+JjEiCi0rIyBzaW5jZSB3ZSBhcmUgaW50ZXJlc3RlZCBpbiB0YXJnZXQgZmVhdHVyZSBzdXBwb3J0LCB1c2UgdGhhdCBzeXNyb290Ci0rY29tcGlsZT0iJEJVSUxEX0NDIC1pc3lzdGVtLyR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0vdXNyL2luY2x1ZGUgJERFRlMgY29uZnRlc3QuYyAtbyBjb25mdGVzdCAkTElCUyA+L2Rldi9udWxsIDI+JjEiCi0gCi0gIyBDaGVjayBmb3IgdmFyaW91cyBoZWFkZXIgZmlsZXMuCi0gCi1AQCAtNDU1LDE5ICs0NTYsMjMgQEAKLSAgICAgICBmaQotICAgICBkb25lCi0gICBkb25lCi0tICBGZ3JvZmY9L3Vzci9iaW4vZ3JvZmYKLS0gIEZucm9mZj0vdXNyL2Jpbi9ucm9mZgotLSAgRmpucm9mZj0vdXNyL2Jpbi9ucm9mZgotLSAgRmdlcW49L3Vzci9iaW4vZ2VxbgotLSAgRmd0Ymw9L3Vzci9iaW4vZ3RibAotLSAgRmNvbD0vdXNyL2Jpbi9jb2wKLS0gIEZncmVmZXI9L3Vzci9iaW4vZ3JlZmVyCi0tICBGZ3BpYz0vdXNyL2Jpbi9ncGljCi0tICBGbW9yZT0vYmluL21vcmUKLS0gIEZsZXNzPS91c3IvYmluL2xlc3MKLS0gIEZjbXA9L3Vzci9iaW4vY21wCi0tICBGY2F0PS9iaW4vY2F0Ci0tICBGZ2F3az0vYmluL2dhd2sKLSsgIGlmIFsgJEJVSUxEX0NDICE9ICRDQyBdOyB0aGVuCi0rICAgICMgY3Jvc3MgY29tcGlsaW5nID0+IHRhcmdldCBmcyBub3QgYXZhaWxhYmxlLCBzbyBmb3JjZSBkZWZhdWx0cwotKyAgICBGZ3JvZmY9L3Vzci9iaW4vZ3JvZmYKLSsgICAgRm5yb2ZmPS91c3IvYmluL25yb2ZmCi0rICAgIEZqbnJvZmY9L3Vzci9iaW4vbnJvZmYKLSsgICAgRmdlcW49L3Vzci9iaW4vZXFuCi0rICAgIEZnbmVxbj0vdXNyL2Jpbi9uZXFuCi0rICAgIEZndGJsPS91c3IvYmluL3RibAotKyAgICBGY29sPS91c3IvYmluL2NvbAotKyAgICBGZ3JlZmVyPS91c3IvYmluL3JlZmVyCi0rICAgIEZncGljPS91c3IvYmluL3BpYwotKyAgICBGbW9yZT0vYmluL21vcmUKLSsgICAgRmxlc3M9L3Vzci9iaW4vbGVzcwotKyAgICBGY21wPS91c3IvYmluL2NtcAotKyAgICBGY2F0PS9iaW4vY2F0Ci0rICAgIEZnYXdrPS91c3IvYmluL2dhd2sKLSsgIGZpCi0gCi0gCi0gICBmb3IgaSBpbiBlcW4gdGJsIHJlZmVyIHBpYwotQEAgLTUwNyw4ICs1MTIsOCBAQAotICAgICBqbnJvZmY9IiRGam5yb2ZmIC1UdXRmOCAtbWFuZG9jaiIKLSAgIGZpCi0gICBlcW49IiRGZ2VxbiAtVHBzIgotLSAgbmVxbj0iJEZnZXFuIC1UdXRmOCIKLS0gIGpuZXFuPSIkRmdlcW4gLVR1dGY4IgotKyAgbmVxbj0iJEZnbmVxbiAtVHV0ZjgiCi0rICBqbmVxbj0iJEZnbmVxbiAtVHV0ZjgiCi0gICB0Ymw9IiRGZ3RibCIKLSAgIGNvbD0iJEZjb2wiCi0gICB2Z3JpbmQ9IiRGdmdyaW5kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZnLXBhcmFsbGVsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZnLXBhcmFsbGVsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MmE4OGI4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42Zy1wYXJhbGxlbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVRoZSBNYWtlZmlsZSBmb3IgbWFuIGhhcyBhIHJ1bGUgdG8gY3JlYXRlIHR3byBnZW5lcmF0ZWQgdGFyZ2V0cyB3aXRoCi1hIHByb2dyYW0gcnVuIGZyb20gdGhlIHNoZWxsLiBCZWNhdXNlIHRoZSBydWxlIHdhcyBydW4gdHdpY2UsIHdpdGgKLXBhcmFsbGVsIG1ha2UsIHRoZSBnZW5lcmF0ZWQgZmlsZXMgd2VyZSBiZWluZyBvdmVyd3JpdHRlbiBhdCB0aGUgc2FtZQotdGltZSB0aGV5IHdlcmUgYmVpbmcgY29tcGlsZWQuIFRoaXMgcGF0Y2ggZm9yY2VzIHRoZSBydWxlIHRvIGJlIHJ1bgotb25seSBvbmNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQmlsbCBSYW5kbGUgPHdpbGxpYW0uYy5yYW5kbGUgYXQgaW50ZWwuY29tPgotCi0tLS0gbWFuLTEuNmcvc3JjL01ha2VmaWxlLmluLm9yaWcJMjAxMC0xMi0zMSAxMjoyODo0Ni4wMDAwMDAwMDAgLTA4MDAKLSsrKyBtYW4tMS42Zy9zcmMvTWFrZWZpbGUuaW4JMjAxNi0wMy0yOCAwOTowOToxNi44NDU0NTg3OTggLTA3MDAKLUBAIC00Myw4ICs0MywxMCBAQAotIG1ha2Vtc2c6Ci0gCSQoQlVJTERfQ0MpIC1vIG1ha2Vtc2cgbWFrZW1zZy5jCi0gCi0tbXNnLmMgZ3JpcGVkZWZzLmg6IC4uL21zZ3MvbWVzcy5lbiBtYWtlbXNnCi0rbXNnLmMgZ3JpcGVkZWZzLmg6IGdlbmZpbGVzLXN0YW1wCi0rZ2VuZmlsZXMtc3RhbXA6IC4uL21zZ3MvbWVzcy5lbiBtYWtlbXNnCi0gCS4vbWFrZW1zZyAuLi9tc2dzL21lc3MuZW4gZ3JpcGVkZWZzLmggbXNnLmMKLSsJdG91Y2ggZ2VuZmlsZXMtc3RhbXAKLSAKLSAjIGdsb2IuYyBkb2VzIG5vdCBoYXZlIHByb3RvdHlwZXMKLSBnbG9iLm86IGdsb2IuYyBuZGlyLmgKLUBAIC0xMTcsNCArMTE5LDQgQEAKLSAKLSBzcG90bGVzczogY2xlYW4KLSAJcm0gLWYgTWFrZWZpbGUgY29uZmlnLnN0YXR1cyBwYXRocy5oIHZlcnNpb24uaCBtYW4uY29uZgotLQlybSAtZiBncmlwZWRlZnMuaCBtc2cuYyBtZXNzLiouY2F0Ci0rCXJtIC1mIGdyaXBlZGVmcy5oIG1zZy5jIG1lc3MuKi5jYXQgZ2VuZmlsZXMtc3RhbXAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4tMS42Zy13aGF0aXMzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZnLXdoYXRpczMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzMzQ0NTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi0xLjZnLXdoYXRpczMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1EbyBub3QgdXNlIGFic29sdXRlIHBhdGggZm9yIGF3ayB3aGlsZSBnZXR0aW5nIHRoZSBwYXRoIG9mIGF3awotd2hlbiBydW5uaW5nIG1ha2V3aGF0aXMuCi1UaGlzIGNhbiBhdm9pZCBlcnJvcnMgaWYgcGF0aCBvZiBhd2sgY2hhbmdlcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW21hbi0xLjZnXQotCi1TaWduZWQtb2ZmLWJ5OiBKaWFuIExpdSA8amlhbi5saXVAd2luZHJpdmVyLmNvbT4KLQotZGlmZiAtTnVyIG1hbi0xLjZnLm9yaWcvc3JjL21ha2V3aGF0aXMuc2ggbWFuLTEuNmcvc3JjL21ha2V3aGF0aXMuc2gKLS0tLSBtYW4tMS42Zy5vcmlnL3NyYy9tYWtld2hhdGlzLnNoCTIwMTUtMDItMjUgMTY6MTM6MTIuNjU3NjExNDE5ICswODAwCi0rKysgbWFuLTEuNmcvc3JjL21ha2V3aGF0aXMuc2gJMjAxNS0wMi0yNSAxNjoxNDo0OS4zMzQ2OTQ4MTUgKzA4MDAKLUBAIC02Nyw3ICs2Nyw3IEBACi0gIyBidXQgdGhhdCBsZWFkcyB0byBwcm9ibGVtcyBhbmQgYnVncy4KLQotICMgQVdLPS91c3IvYmluL2dhd2sKLS1BV0s9QGF3a0AKLStBV0s9YHdoaWNoIGF3a2AKLQotICMgRmluZCBhIHBsYWNlIGZvciBvdXIgdGVtcG9yYXJ5IGZpbGVzLiBJZiBzZWN1cml0eSBpcyBub3QgYSBjb25jZXJuLCB1c2UKLSAjCVRNUEZJTEU9L3RtcC93aGF0aXMkJDsgVE1QRklMRURJUj1ub25lCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLjEuZ3ogYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLjEuZ3oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzNjgwNDUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi4xLmd6CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi43Lmd6IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbi43Lmd6CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODVhZjgyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4uNy5negorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4uY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuL21hbi9tYW4uY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmMxMGJlMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFuLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotIwotIyBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBmcm9tIG1hbi5jb25mLmluIGJ5IHRoZQotIyBjb25maWd1cmUgc2NyaXB0LgotIwotIyBtYW4uY29uZiBmcm9tIG1hbi0xLjVwCi0jCi0jIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgZmlsZSwgc2VlIHRoZSBtYW4gcGFnZXMgbWFuKDEpCi0jIGFuZCBtYW4uY29uZig1KS4KLSMKLSMgVGhpcyBmaWxlIGlzIHJlYWQgYnkgbWFuIHRvIGNvbmZpZ3VyZSB0aGUgZGVmYXVsdCBtYW5wYXRoIChhbHNvIHVzZWQKLSMgd2hlbiBNQU5QQVRIIGNvbnRhaW5zIGFuIGVtcHR5IHN1YnN0cmluZyksIHRvIGZpbmQgb3V0IHdoZXJlIHRoZSBjYXQKLSMgcGFnZXMgY29ycmVzcG9uZGluZyB0byBnaXZlbiBtYW4gcGFnZXMgc2hvdWxkIGJlIHN0b3JlZCwKLSMgYW5kIHRvIG1hcCBlYWNoIFBBVEggZWxlbWVudCB0byBhIG1hbnBhdGggZWxlbWVudC4KLSMgSXQgbWF5IGFsc28gcmVjb3JkIHRoZSBwYXRobmFtZSBvZiB0aGUgbWFuIGJpbmFyeS4gW1RoaXMgaXMgdW51c2VkLl0KLSMgVGhlIGZvcm1hdCBpczoKLSMKLSMgTUFOQklOCQlwYXRobmFtZQotIyBNQU5QQVRICQltYW5wYXRoX2VsZW1lbnQJW2NvcnJlc3BvbmRpbmdfY2F0ZGlyXQotIyBNQU5QQVRIX01BUAkJcGF0aF9lbGVtZW50CW1hbnBhdGhfZWxlbWVudAotIwotIyBJZiBubyBjYXRkaXIgaXMgZ2l2ZW4sIGl0IGlzIGFzc3VtZWQgdG8gYmUgZXF1YWwgdG8gdGhlIG1hbmRpcgotIyAoc28gdGhhdCB0aGlzIGRpciBoYXMgYm90aCBtYW4xIGV0Yy4gYW5kIGNhdDEgZXRjLiBzdWJkaXJzKS4KLSMgVGhpcyBpcyB0aGUgdHJhZGl0aW9uYWwgVW5peCBzZXR1cC4KLSMgQ2VydGFpbiB2ZXJzaW9ucyBvZiB0aGUgRlNTVE5EIHJlY29tbWVuZCBwdXR0aW5nIGZvcm1hdHRlZCB2ZXJzaW9ucwotIyBvZiAvdXNyLy4uLi9tYW4vbWFueC9wYWdlLnggaW50byAvdmFyL2NhdG1hbi8uLi4vY2F0eC9wYWdlLnguCi0jIFRoZSBrZXl3b3JkIEZTU1RORCB3aWxsIGNhdXNlIHRoaXMgYmVoYXZpb3VyLgotIyBDZXJ0YWluIHZlcnNpb25zIG9mIHRoZSBGSFMgcmVjb21tZW5kIHB1dHRpbmcgZm9ybWF0dGVkIHZlcnNpb25zIG9mCi0jIC91c3IvLi4uL3NoYXJlL21hbi9bbG9jYWxlL11tYW54L3BhZ2UueCBpbnRvCi0jIC92YXIvY2FjaGUvbWFuLy4uLi9bbG9jYWxlL11jYXR4L3BhZ2UueC4KLSMgVGhlIGtleXdvcmQgRkhTIHdpbGwgY2F1c2UgdGhpcyBiZWhhdmlvdXIgKGFuZCBvdmVycmlkZXMgRlNTVE5EKS4KLSMgRXhwbGljaXRseSBnaXZlbiBjYXRkaXJzIG92ZXJyaWRlLgotIwotIyBGU1NUTkQKLUZIUwotIwotIyBUaGlzIGZpbGUgaXMgYWxzbyByZWFkIGJ5IG1hbiBpbiBvcmRlciB0byBmaW5kIGhvdyB0byBjYWxsIG5yb2ZmLCBsZXNzLCBldGMuLAotIyBhbmQgdG8gZGV0ZXJtaW5lIHRoZSBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIGV4dGVuc2lvbnMgYW5kIGRlY29tcHJlc3NvcnMuCi0jCi0jIE1BTkJJTgkJL3Vzci9sb2NhbC9iaW4vbWFuCi0jCi0jIEV2ZXJ5IGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIE1BTlBBVEggaW5jbHVkZXMgdGhlc2UgZmllbGRzCi0jCi1NQU5QQVRICS91c3IvbWFuCi1NQU5QQVRICS91c3Ivc2hhcmUvbWFuCi1NQU5QQVRICS91c3IvbG9jYWwvbWFuCi1NQU5QQVRICS91c3IvbG9jYWwvc2hhcmUvbWFuCi1NQU5QQVRICS91c3IvWDExUjYvbWFuCi0jCi0jIFVuY29tbWVudCBpZiB5b3Ugd2FudCB0byBpbmNsdWRlIG9uZSBvZiB0aGVzZSBieSBkZWZhdWx0Ci0jCi0jIE1BTlBBVEgJL29wdC8qL21hbgotIyBNQU5QQVRICS91c3IvbGliLyovbWFuCi0jIE1BTlBBVEgJL3Vzci9zaGFyZS8qL21hbgotIyBNQU5QQVRICS91c3Iva2VyYmVyb3MvbWFuCi0jCi0jIFNldCB1cCBQQVRIIHRvIE1BTlBBVEggbWFwcGluZwotIwotIyBJZiBwZW9wbGUgYXNrIGZvciAibWFuIGZvbyIgYW5kIGhhdmUgIi9kaXIvYmluL2ZvbyIgaW4gdGhlaXIgUEFUSAotIyBhbmQgdGhlIGRvY3MgYXJlIGZvdW5kIGluICIvZGlyL21hbiIsIHRoZW4gbm8gbWFwcGluZyBpcyByZXF1aXJlZC4KLSMKLSMgVGhlIGJlbG93IG1hcHBpbmdzIGFyZSBzdXBlcmZsdW91cyB3aGVuIHRoZSByaWdodCBoYW5kIHNpZGUgaXMKLSMgaW4gdGhlIG1hbmRhdG9yeSBtYW5wYXRoIGFscmVhZHksIGJ1dCB3aWxsIGtlZXAgbWFuIGZyb20gc3RhdHRpbmcKLSMgbG90cyBvZiBvdGhlciBuZWFyYnkgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLgotIwotTUFOUEFUSF9NQVAJL2JpbgkJCS91c3Ivc2hhcmUvbWFuCi1NQU5QQVRIX01BUAkvc2JpbgkJCS91c3Ivc2hhcmUvbWFuCi1NQU5QQVRIX01BUAkvdXNyL2JpbgkJL3Vzci9zaGFyZS9tYW4KLU1BTlBBVEhfTUFQCS91c3Ivc2JpbgkJL3Vzci9zaGFyZS9tYW4KLU1BTlBBVEhfTUFQCS91c3IvbG9jYWwvYmluCQkvdXNyL2xvY2FsL3NoYXJlL21hbgotTUFOUEFUSF9NQVAJL3Vzci9sb2NhbC9zYmluCQkvdXNyL2xvY2FsL3NoYXJlL21hbgotTUFOUEFUSF9NQVAJL3Vzci9YMTFSNi9iaW4JCS91c3IvWDExUjYvbWFuCi1NQU5QQVRIX01BUAkvdXNyL2Jpbi9YMTEJCS91c3IvWDExUjYvbWFuCi1NQU5QQVRIX01BUAkvdXNyL2Jpbi9taAkJL3Vzci9zaGFyZS9tYW4KLSMKLSMgTk9BVVRPUEFUSCBrZWVwcyBtYW4gZnJvbSBhdXRvbWF0aWNhbGx5IGFkZGluZyBkaXJlY3RvcmllcyB0aGF0IGxvb2sgbGlrZQotIyBtYW51YWwgcGFnZSBkaXJlY3RvcmllcyB0byB0aGUgcGF0aC4KLSMKLSNOT0FVVE9QQVRICi0jCi0jIE5PQ0FDSEUga2VlcHMgbWFuIGZyb20gY3JlYXRpbmcgY2FjaGUgcGFnZXMgKCJjYXQgcGFnZXMiKQotIyAoZ2VuZXJhbGx5IG9uZSBlbmFibGVzL2Rpc2FibGUgY2F0IHBhZ2UgY3JlYXRpb24gYnkgY3JlYXRpbmcvZGVsZXRpbmcKLSMgdGhlIGRpcmVjdG9yeSB0aGV5IHdvdWxkIGxpdmUgaW4gLSBtYW4gbmV2ZXIgZG9lcyBta2RpcikKLSMgCi0jTk9DQUNIRQotIwotIyBVc2VmdWwgcGF0aHMgLSBub3RlIHRoYXQgQ09MIHNob3VsZCBub3QgYmUgZGVmaW5lZCB3aGVuCi0jIE5ST0ZGIGlzIGRlZmluZWQgYXMgImdyb2ZmIC1UYXNjaWkiIG9yICJncm9mZiAtVGxhdGluMSI7Ci0jIG5vdCBvbmx5IGlzIGl0IHN1cGVyZmx1b3VzLCBidXQgaXQgYWN0dWFsbHkgZGFtYWdlcyB0aGUgb3V0cHV0LgotIyBGb3IgdXNlIHdpdGggdXRmLTgsIE5ST0ZGIHNob3VsZCBiZSAibnJvZmYgLW1hbmRvYyIgd2l0aG91dCAtVCBvcHRpb24uCi0jIChNYXliZSAtIGJ1dCB0b2RheSBJIG5lZWQgLVRsYXRpbjEgdG8gcHJldmVudCBkb3VibGUgY29udmVyc2lvbiB0byB1dGY4LikKLSMKLSMgSWYgeW91IGhhdmUgYSBuZXcgdHJvZmYgKHZlcnNpb24gMS4xOC4xPykgYW5kIGl0cyBjb2xvcmVkIG91dHB1dAotIyBjYXVzZXMgcHJvYmxlbXMsIGFkZCB0aGUgLWMgb3B0aW9uIHRvIFRST0ZGLCBOUk9GRiwgSk5ST0ZGLgotIwotVFJPRkYJCS91c3IvYmluL2dyb2ZmIC1UcHMgLW1hbmRvYwotTlJPRkYJCS91c3IvYmluL25yb2ZmIC1UbGF0aW4xIC1tYW5kb2MKLUpOUk9GRgkJL3Vzci9iaW4vZ3JvZmYgLVRuaXBwb24gLW1hbmRvY2oKLUVRTgkJL3Vzci9iaW4vZXFuIC1UcHMKLU5FUU4JCS91c3IvYmluL2VxbiAtVGxhdGluMQotSk5FUU4JCS91c3IvYmluL2VxbiAtVG5pcHBvbgotVEJMCQkvdXNyL2Jpbi90YmwKLSMgQ09MCQkvdXNyL2Jpbi9jb2wKLVJFRkVSCQkvdXNyL2Jpbi9yZWZlcgotUElDCQkvdXNyL2Jpbi9waWMKLVZHUklORAkJCi1HUkFQCQkKLVBBR0VSCQkvdXNyL2Jpbi9sZXNzIC1pc1IKLUNBVAkJL2Jpbi9jYXQKLSMKLSMgVGhlIGNvbW1hbmQgIm1hbiAtYSB4eXp6eSIgd2lsbCBzaG93IGFsbCBtYW4gcGFnZXMgZm9yIHh5enp5LgotIyBXaGVuIENNUCBpcyBkZWZpbmVkIG1hbiB3aWxsIHRyeSB0byBhdm9pZCBzaG93aW5nIHRoZSBzYW1lCi0jIHRleHQgdHdpY2UuIChCdXQgY29tcHJlc3NlZCBwYWdlcyBjb21wYXJlIHVuZXF1YWwuKQotIwotQ01QCQkvdXNyL2Jpbi9jbXAgLXMKLSMKLSMgQ29tcHJlc3MgY2F0IHBhZ2VzCi0jCi1DT01QUkVTUwkvYmluL2J6aXAyCi1DT01QUkVTU19FWFQJLmJ6MgotIwotIyBEZWZhdWx0IG1hbnVhbCBzZWN0aW9ucyAoYW5kIG9yZGVyKSB0byBzZWFyY2ggaWYgLVMgaXMgbm90IHNwZWNpZmllZAotIyBhbmQgdGhlIE1BTlNFQ1QgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldC4KLSMKLU1BTlNFQ1QJCTE6MXA6ODoyOjM6M3A6NDo1OjY6Nzo5OjBwOnRjbDpuOmw6cDpvCi0jCi0jIERlZmF1bHQgb3B0aW9ucyB0byB1c2Ugd2hlbiBtYW4gaXMgaW52b2tlZCB3aXRob3V0IG9wdGlvbnMKLSMgVGhpcyBpcyBtYWlubHkgZm9yIHRoZSBiZW5lZml0IG9mIHRob3NlIHRoYXQgdGhpbmsgLWEgc2hvdWxkIGJlIHRoZSBkZWZhdWx0Ci0jIE5vdGUgdGhhdCBzb21lIHN5c3RlbXMgaGF2ZSAvdXNyL21hbi9hbGxtYW4sIGNhdXNpbmcgcGFnZXMgdG8gYmUgc2hvd24gdHdpY2UuCi0jCi0jTUFOREVGT1BUSU9OUwktYQotIwotIyBEZWNvbXByZXNzIHdpdGggZ2l2ZW4gZGVjb21wcmVzc29yIHdoZW4gaW5wdXQgZmlsZSBoYXMgZ2l2ZW4gZXh0ZW5zaW9uCi0jIFRoZSBjb21tYW5kIGdpdmVuIG11c3QgYWN0IGFzIGEgZmlsdGVyLgotIwotLmd6CQkvYmluL2d1bnppcCAtYwotLmJ6MgkJL3Vzci9iaW4vYnVuemlwMiAtYwotLnh6CQkvdXNyL2Jpbi91bnh6IC1jCi0uegkJCi0uWgkJL2Jpbi96Y2F0Ci0uRgkJCi0uWQkJCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFucGF0aC41Lmd6IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuL21hbnBhdGguNS5negpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzAxMmZmOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW4vbWFucGF0aC41Lmd6CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4vbWFuXzEuNmcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW5fMS42Zy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY2MDNmOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi9tYW5fMS42Zy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLVNVTU1BUlkgPSAiT25saW5lIGRvY3VtZW50YXRpb24gdG9vbHMiCi1ERVNDUklQVElPTiA9ICJBIHNldCBvZiBkb2N1bWVudGF0aW9uIHRvb2xzOiBtYW4sIGFwcm9wb3MgYW5kIHdoYXRpcyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUhPTUVQQUdFID0gImh0dHA6Ly9wcmltYXRlcy54aW1pYW4uY29tL35mbHVjaWZyZWRpL21hbiIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Y2E0M2NiYzg0MmMyMzM2ZTgzNTkyNmMyMTY2YzI4YiIKLQotUFIgPSAicjEiCi0KLURFUEVORFMgPSAiZ3JvZmYgbGVzcyIKLQotZGVmIGNvbXByZXNzX3BrZyhkKToKLSAgICBpZiAiY29tcHJlc3NfZG9jIiBpbiAoZC5nZXRWYXIoIklOSEVSSVQiKSBvciAiIikuc3BsaXQoKToKLSAgICAgICAgIGNvbXByZXNzID0gZC5nZXRWYXIoIkRPQ19DT01QUkVTUyIpCi0gICAgICAgICBpZiBjb21wcmVzcyA9PSAiZ3oiOgotICAgICAgICAgICAgIHJldHVybiAiZ3ppcCIKLSAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gImJ6MiI6Ci0gICAgICAgICAgICAgcmV0dXJuICJiemlwMiIKLSAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gInh6IjoKLSAgICAgICAgICAgICByZXR1cm4gInh6IgotICAgIHJldHVybiAiIgotCi1SREVQRU5EU18ke1BOfSArPSAiJHtAY29tcHJlc3NfcGtnKGQpfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vcGtncy5mZWRvcmFwcm9qZWN0Lm9yZy9sb29rYXNpZGUvcGtncy9tYW4yaHRtbC8ke0JQfS50YXIuZ3ovYmExNTRkNTc5NjkyOGI4NDFjOWM2OWYwYWUzNzY2NjAvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjVrLWNvbmZwYXRoLnBhdGNoO3N0cmlwbGV2ZWw9MCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41aDEtbWFrZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41ay1ub25hc2NpaS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS42ZS1zZWN1cml0eS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS42ZS1tYW5kaXJzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjVtMi1idWcxMTYyMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41ay1zb2ZpeC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41bTItYnVpbGRyb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjZlLXJvX3Vzci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41aTItbmV3bGluZS5wYXRjaDtzdHJpcGxldmVsPTAgXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNWotdXRmOC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41aTItb3ZlcmZsb3cucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNWotbm9jYWNoZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41aTItaW5pdGlhbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41aDEtZ2VuY2F0LnBhdGNoO3N0cmlwbGV2ZWw9MCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS41Zy1ub25yb290YnVpbGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNWotaTE4bi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS42ZS13aGF0aXMyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjZlLXVzZV9pMThuX3ZhcnNfaW5fYV9zdGRfd2F5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi0xLjVtMi1uby1jb2xvci1mb3ItcHJpbnRpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNW0yLXNpZ3BpcGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNmUtaTE4bl93aGF0aXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNmUtbmV3X3NlY3Rpb25zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi4xLmd6O3VucGFjaz1mYWxzZSBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4uNy5nejt1bnBhY2s9ZmFsc2UgXAotICAgICAgICAgICBmaWxlOi8vbWFuLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vbWFucGF0aC41Lmd6O3VucGFjaz1mYWxzZSBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS42Zy13aGF0aXMzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZV9zZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNmctcGFyYWxsZWwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFuLTEuNmctY29tcGlsZS13YXJuaW5ncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW4tMS42Zy1jb25maWd1cmUucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYmExNTRkNTc5NjkyOGI4NDFjOWM2OWYwYWUzNzY2NjAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2NkY2I4YzNmNGUwMDgwOTIzZDdlODE4ZjBlNGEyMDJkYjI2YzQ2NDE1ZWFlZjM2MTM4N2MyMDk5NWI4OTU5ZiIKLQotQ0ZMQUdTICs9ICItRFNZU1YiCi0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0gICAgICAgICR7U30vY29uZmlndXJlIC1kZWZhdWx0IC1jb25mZGlyIC9ldGMgK3NnaWQgK2ZocyArbGFuZyBhbGwKLX0KLQotCi1kb19pbnN0YWxsKCkgewotICAgICAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCl7Ci0JbWtkaXIgLXAgICR7RH0ke3N5c2NvbmZkaXJ9Ci0gICAgICAgIG1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9L21hbi9tYW41Ci0gICAgICAgIG1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9L21hbi9tYW43Ci0JY3AgJHtXT1JLRElSfS9tYW4uY29uZiAke0R9JHtzeXNjb25mZGlyfS9tYW4uY29uZmlnCi0gICAgICAgIGNwICR7V09SS0RJUn0vbWFuLjEuZ3ogJHtEfSR7ZGF0YWRpcn0vbWFuL21hbjEvCi0gICAgICAgIGNwICR7V09SS0RJUn0vbWFuLjcuZ3ogJHtEfSR7ZGF0YWRpcn0vbWFuL21hbjcvCi0gICAgICAgIGNwICR7V09SS0RJUn0vbWFucGF0aC41Lmd6ICR7RH0ke2RhdGFkaXJ9L21hbi9tYW41LwotfQotCi0KLVJERVBFTkRTXyR7UE59ID0gImxlc3MgZ3JvZmYiCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9sb2NhbGUgJHtzeXNjb25mZGlyfS9tYW4uY29uZmlnIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9maWxlcy8wMDAyLVRpY2tldC0zNjk3LXR0eV9pbml0LXVuaWZ5LWN1cnNlcy1pbml0aWFsaXphdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvZmlsZXMvMDAwMi1UaWNrZXQtMzY5Ny10dHlfaW5pdC11bmlmeS1jdXJzZXMtaW5pdGlhbGl6YXRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1NGQ0ZDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9maWxlcy8wMDAyLVRpY2tldC0zNjk3LXR0eV9pbml0LXVuaWZ5LWN1cnNlcy1pbml0aWFsaXphdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLUZyb20gNGQ0NmExMDg2MjliZWI2NmEyOTM2NzJkYjdiNDRmODYzYjY1OThiYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRob21hcyBEaWNrZXkgPGRpY2tleUBoaXMuY29tPgotRGF0ZTogRnJpLCAxNCBBcHIgMjAxNyAxNDowNjoxMyArMDMwMAotU3ViamVjdDogW1BBVENIXSBUaWNrZXQgIzM2OTc6ICh0dHlfaW5pdCk6IHVuaWZ5IGN1cnNlcyBpbml0aWFsaXphdGlvbgotCi0uLi5mb3IgdmFyaW91cyBjdXJzZXMgaW1wbGVtZW50YXRpb25zLgotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQm9yb2RpbiA8YWJvcm9kaW5Adm1haWwucnU+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9NaWRuaWdodENvbW1hbmRlci9tYy5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLQotLS0tCi0gbGliL3R0eS90dHktbmN1cnNlcy5jIHwgMjYgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYi90dHkvdHR5LW5jdXJzZXMuYyBiL2xpYi90dHkvdHR5LW5jdXJzZXMuYwotaW5kZXggYTdhMTFmMy4uOGU2OWIzOSAxMDA2NDQKLS0tLSBhL2xpYi90dHkvdHR5LW5jdXJzZXMuYwotKysrIGIvbGliL3R0eS90dHktbmN1cnNlcy5jCi1AQCAtMTc5LDYgKzE3OSw4IEBAIG1jX3R0eV9ub3JtYWxpemVfbGluZXNfY2hhciAoY29uc3QgY2hhciAqY2gpCi0gdm9pZAotIHR0eV9pbml0IChnYm9vbGVhbiBtb3VzZV9lbmFibGUsIGdib29sZWFuIGlzX3h0ZXJtKQotIHsKLSsgICAgc3RydWN0IHRlcm1pb3MgbW9kZTsKLSsKLSAgICAgaW5pdHNjciAoKTsKLSAKLSAjaWZkZWYgSEFWRV9FU0NERUxBWQotQEAgLTE5NCwyNSArMTk2LDE1IEBAIHR0eV9pbml0IChnYm9vbGVhbiBtb3VzZV9lbmFibGUsIGdib29sZWFuIGlzX3h0ZXJtKQotICAgICBFU0NERUxBWSA9IDIwMDsKLSAjZW5kaWYgLyogSEFWRV9FU0NERUxBWSAqLwotIAotLSNpZmRlZiBOQ1VSU0VTX1ZFUlNJT04KLSsgICAgdGNnZXRhdHRyIChTVERJTl9GSUxFTk8sICZtb2RlKTsKLSAgICAgLyogdXNlIEN0cmwtZyB0byBnZW5lcmF0ZSBTSUdJTlQgKi8KLS0gICAgY3VyX3Rlcm0tPk50dHliLmNfY2NbVklOVFJdID0gQ1RSTCAoJ2cnKTsgICAvKiBeZyAqLwotKyAgICBtb2RlLmNfY2NbVklOVFJdID0gQ1RSTCAoJ2cnKTsgIC8qIF5nICovCi0gICAgIC8qIGRpc2FibGUgU0lHUVVJVCB0byBhbGxvdyB1c2UgQ3RybC1cIGtleSAqLwotLSAgICBjdXJfdGVybS0+TnR0eWIuY19jY1tWUVVJVF0gPSBOVUxMX1ZBTFVFOwotLSAgICB0Y3NldGF0dHIgKGN1cl90ZXJtLT5GaWxlZGVzLCBUQ1NBTk9XLCAmY3VyX3Rlcm0tPk50dHliKTsKLS0jZWxzZQotLSAgICAvKiBvdGhlciBjdXJzZXMgaW1wbGVtZW50YXRpb24gKGJzZCBjdXJzZXMsIC4uLikgKi8KLS0gICAgewotLSAgICAgICAgc3RydWN0IHRlcm1pb3MgbW9kZTsKLS0KLS0gICAgICAgIHRjZ2V0YXR0ciAoU1RESU5fRklMRU5PLCAmbW9kZSk7Ci0tICAgICAgICAvKiB1c2UgQ3RybC1nIHRvIGdlbmVyYXRlIFNJR0lOVCAqLwotLSAgICAgICAgbW9kZS5jX2NjW1ZJTlRSXSA9IENUUkwgKCdnJyk7ICAvKiBeZyAqLwotLSAgICAgICAgLyogZGlzYWJsZSBTSUdRVUlUIHRvIGFsbG93IHVzZSBDdHJsLVwga2V5ICovCi0tICAgICAgICBtb2RlLmNfY2NbVlFVSVRdID0gTlVMTF9WQUxVRTsKLS0gICAgICAgIHRjc2V0YXR0ciAoU1RESU5fRklMRU5PLCBUQ1NBTk9XLCAmbW9kZSk7Ci0tICAgIH0KLS0jZW5kaWYgLyogTkNVUlNFU19WRVJTSU9OICovCi0rICAgIG1vZGUuY19jY1tWUVVJVF0gPSBOVUxMX1ZBTFVFOwotKyAgICB0Y3NldGF0dHIgKFNURElOX0ZJTEVOTywgVENTQU5PVywgJm1vZGUpOwotKwotKyAgICAvKiBjdXJzZXMgcmVtZW1iZXJzIHRoZSAiaW4tcHJvZ3JhbSIgbW9kZXMgYWZ0ZXIgdGhpcyBjYWxsICovCi0rICAgIGRlZl9wcm9nX21vZGUgKCk7Ci0gCi0gICAgIHR0eV9zdGFydF9pbnRlcnJ1cHRfa2V5ICgpOwotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuOC4xOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC44LjE5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2ExNTZjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC44LjE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotU1VNTUFSWSA9ICJNaWRuaWdodCBDb21tYW5kZXIgaXMgYW4gbmN1cnNlcyBiYXNlZCBmaWxlIG1hbmFnZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1pZG5pZ2h0LWNvbW1hbmRlci5vcmcvIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI3MGJiYWZlMzYwZTczZjk4NDBiZDc5ODE2MjFmOWMyIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotREVQRU5EUyA9ICJuY3Vyc2VzIGdsaWItMi4wIHV0aWwtbGludXgiCi1SREVQRU5EU18ke1BOfSA9ICJuY3Vyc2VzLXRlcm1pbmZvIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cubWlkbmlnaHQtY29tbWFuZGVyLm9yZy9kb3dubG9hZHMvJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tYy1yZXBsYWNlLXBlcmwtdy13aXRoLXVzZS13YXJuaW5ncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLVRpY2tldC0zNjk3LXR0eV9pbml0LXVuaWZ5LWN1cnNlcy1pbml0aWFsaXphdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlZjQyM2Y1YjZmODBhMWE1YTVmYzUzYjgzMjRjYWI3MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkMGRkZGZhZTcxNDlmYWM5MDNmNzRlZjU1Y2ZjYjJhMTk4ZTBmNzAwNDM0NmM3YmRlZDQzNjY5ZDYxYmE0MzZmIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZwotCi0jCi0jIEJvdGggU2FtYmEgKHNtYikgYW5kIHNmdHAgcmVxdWlyZSBwYWNrYWdlIGRlbGl2ZXJlZCBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkCi0jCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tzbWJdID0gIi0tZW5hYmxlLXZmcy1zbWIsLS1kaXNhYmxlLXZmcy1zbWIsc2FtYmEsIgotUEFDS0FHRUNPTkZJR1tzZnRwXSA9ICItLWVuYWJsZS12ZnMtc2Z0cCwtLWRpc2FibGUtdmZzLXNmdHAsbGlic3NoMiwiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtc2NyZWVuPW5jdXJzZXMgLS13aXRob3V0LWdwbS1tb3VzZSAtLXdpdGhvdXQteCIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEVSTD0nL3Vzci9iaW4vZW52IHBlcmwnIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0Jc2VkIC1pIC1lICcxcywjIS4qcGVybCwjISR7YmluZGlyfS9lbnYgcGVybCwnICR7RH0ke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvKgotICAgICAgICAKLSAgICAgICAgcm0gJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9zMysgJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91YzE1NDEKLX0KLQotUEFDS0FHRVMgPSsgIiR7QlBOfS1oZWxwZXJzLXBlcmwgJHtCUE59LWhlbHBlcnMgJHtCUE59LWZpc2giCi0KLVNVTU1BUllfJHtCUE59LWhlbHBlcnMtcGVybCA9ICJNaWRuaWdodCBDb21tYW5kZXIgUGVybC1iYXNlZCBoZWxwZXIgc2NyaXB0cyIKLUZJTEVTXyR7QlBOfS1oZWxwZXJzLXBlcmwgPSAiJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2ErICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9hcHQrIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2RlYiAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZGViYSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kZWJkICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kcGtnKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9tYWlsZnMgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3BhdGNoZnMgXCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3JwbXMrICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91bGliIFwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91emlwIgotUkRFUEVORFNfJHtCUE59LWhlbHBlcnMtcGVybCA9ICJwZXJsIgotCi1TVU1NQVJZXyR7QlBOfS1oZWxwZXJzID0gIk1pZG5pZ2h0IENvbW1hbmRlciBzaGVsbCBoZWxwZXIgc2NyaXB0cyIKLUZJTEVTXyR7QlBOfS1oZWxwZXJzID0gIiR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC8qICR7bGliZXhlY2Rpcn0vbWMvZXh0LmQvKiIKLQotU1VNTUFSWV8ke0JQTn0tZmlzaCA9ICJNaWRuaWdodCBDb21tYW5kZXIgRmlzaCBzY3JpcHRzIgotRklMRVNfJHtCUE59LWZpc2ggPSAiJHtsaWJleGVjZGlyfS9tYy9maXNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuOC4yMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGQxYjVlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMjAuYmIKQEAgLTAsMCArMSw0OSBAQAorU1VNTUFSWSA9ICJNaWRuaWdodCBDb21tYW5kZXIgaXMgYW4gbmN1cnNlcyBiYXNlZCBmaWxlIG1hbmFnZXIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1pZG5pZ2h0LWNvbW1hbmRlci5vcmcvIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI3MGJiYWZlMzYwZTczZjk4NDBiZDc5ODE2MjFmOWMyIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorREVQRU5EUyA9ICJuY3Vyc2VzIGdsaWItMi4wIHV0aWwtbGludXgiCitSREVQRU5EU18ke1BOfSA9ICJuY3Vyc2VzLXRlcm1pbmZvIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cubWlkbmlnaHQtY29tbWFuZGVyLm9yZy9kb3dubG9hZHMvJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tYy1yZXBsYWNlLXBlcmwtdy13aXRoLXVzZS13YXJuaW5ncy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkY2ZjN2FhNjEzYzYyMjkxYTBmNzFmNmI2OThkODI2NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyZDg1ZGFhYTZhYjI2ZTUyNDk0NmRmNDgyM2FjMmY2OTgwMmJjMTZiYzk2Nzc4MWI1ZTI4ZDViODZmYzNiOTc5IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZworCisjCisjIEJvdGggU2FtYmEgKHNtYikgYW5kIHNmdHAgcmVxdWlyZSBwYWNrYWdlIGRlbGl2ZXJlZCBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkCisjCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tzbWJdID0gIi0tZW5hYmxlLXZmcy1zbWIsLS1kaXNhYmxlLXZmcy1zbWIsc2FtYmEsIgorUEFDS0FHRUNPTkZJR1tzZnRwXSA9ICItLWVuYWJsZS12ZnMtc2Z0cCwtLWRpc2FibGUtdmZzLXNmdHAsbGlic3NoMiwiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtc2NyZWVuPW5jdXJzZXMgLS13aXRob3V0LWdwbS1tb3VzZSAtLXdpdGhvdXQteCIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEVSTD0nL3Vzci9iaW4vZW52IHBlcmwnIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJc2VkIC1pIC1lICcxcywjIS4qcGVybCwjISR7YmluZGlyfS9lbnYgcGVybCwnICR7RH0ke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvKgorICAgICAgICAKKyAgICAgICAgcm0gJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9zMysgJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91YzE1NDEKK30KKworUEFDS0FHRVMgPSsgIiR7QlBOfS1oZWxwZXJzLXBlcmwgJHtCUE59LWhlbHBlcnMgJHtCUE59LWZpc2giCisKK1NVTU1BUllfJHtCUE59LWhlbHBlcnMtcGVybCA9ICJNaWRuaWdodCBDb21tYW5kZXIgUGVybC1iYXNlZCBoZWxwZXIgc2NyaXB0cyIKK0ZJTEVTXyR7QlBOfS1oZWxwZXJzLXBlcmwgPSAiJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2ErICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9hcHQrIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2RlYiAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZGViYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kZWJkICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kcGtnKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9tYWlsZnMgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3BhdGNoZnMgXCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3JwbXMrICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91bGliIFwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91emlwIgorUkRFUEVORFNfJHtCUE59LWhlbHBlcnMtcGVybCA9ICJwZXJsIgorCitTVU1NQVJZXyR7QlBOfS1oZWxwZXJzID0gIk1pZG5pZ2h0IENvbW1hbmRlciBzaGVsbCBoZWxwZXIgc2NyaXB0cyIKK0ZJTEVTXyR7QlBOfS1oZWxwZXJzID0gIiR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC8qICR7bGliZXhlY2Rpcn0vbWMvZXh0LmQvKiIKKworU1VNTUFSWV8ke0JQTn0tZmlzaCA9ICJNaWRuaWdodCBDb21tYW5kZXIgRmlzaCBzY3JpcHRzIgorRklMRVNfJHtCUE59LWZpc2ggPSAiJHtsaWJleGVjZGlyfS9tYy9maXNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy9nY2MtNC45LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy9nY2MtNC45LnBhdGNoCmluZGV4IDU0YmYxZDcuLmRmMjEzOTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvZ2NjLTQuOS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzL2djYy00LjkucGF0Y2gKQEAgLTcsMTMgKzcsMTMgQEAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAotSW5kZXg6IG1kYWRtLTMuMy9zdXBlci1pbnRlbC5jCitJbmRleDogbWRhZG0tNC4wL3N1cGVyLWludGVsLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBtZGFkbS0zLjMub3JpZy9zdXBlci1pbnRlbC5jCTIwMTQtMDUtMDIgMTU6MDg6MjEuMTU0MzE5NjUxIC0wNzAwCi0rKysgbWRhZG0tMy4zL3N1cGVyLWludGVsLmMJMjAxNC0wNS0wMiAxNTowOTozMS40NzA5ODU3OTQgLTA3MDAKLUBAIC01MDYwLDcgKzUwNjAsNyBAQAotIAlzcGFyZS0+Y2FjaGVfc2l6ZSA9IG1wYi0+Y2FjaGVfc2l6ZSwKLSAJc3BhcmUtPnB3cl9jeWNsZV9jb3VudCA9IF9fY3B1X3RvX2xlMzIoMSksCistLS0gbWRhZG0tNC4wLm9yaWcvc3VwZXItaW50ZWwuYworKysrIG1kYWRtLTQuMC9zdXBlci1pbnRlbC5jCitAQCAtNTcyNSw3ICs1NzI1LDcgQEAgc3RhdGljIGludCB3cml0ZV9zdXBlcl9pbXNtX3NwYXJlcyhzdHJ1YworIAlzcGFyZS0+Y2FjaGVfc2l6ZSA9IG1wYi0+Y2FjaGVfc2l6ZTsKKyAJc3BhcmUtPnB3cl9jeWNsZV9jb3VudCA9IF9fY3B1X3RvX2xlMzIoMSk7CiAgCiAtCXNucHJpbnRmKChjaGFyICopIHNwYXJlLT5zaWcsIE1BWF9TSUdOQVRVUkVfTEVOR1RILAogKwkodm9pZClzbnByaW50ZigoY2hhciAqKSBzcGFyZS0+c2lnLCBNQVhfU0lHTkFUVVJFX0xFTkdUSCwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvbWRhZG0tMy4zLjJfeDMyX2FiaV90aW1lX3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzL21kYWRtLTMuMy4yX3gzMl9hYmlfdGltZV90LnBhdGNoCmluZGV4IGM2NTZkMDcuLjAwZTY2NTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvbWRhZG0tMy4zLjJfeDMyX2FiaV90aW1lX3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy9tZGFkbS0zLjMuMl94MzJfYWJpX3RpbWVfdC5wYXRjaApAQCAtNSwxMyArNSwxMyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4KIAotSW5kZXg6IG1kYWRtLTMuMy40L21vbml0b3IuYworSW5kZXg6IG1kYWRtLTQuMC9tb25pdG9yLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBtZGFkbS0zLjMuNC5vcmlnL21vbml0b3IuYwotKysrIG1kYWRtLTMuMy40L21vbml0b3IuYwotQEAgLTI1Nyw5ICsyNTcsMTIgQEAgc3RhdGljIGludCByZWFkX2FuZF9hY3Qoc3RydWN0IGFjdGl2ZV9hcgotIAkJCW1kaS0+Y3Vycl9zdGF0ZSA9IHJlYWRfZGV2X3N0YXRlKG1kaS0+c3RhdGVfZmQpOwotIAkJfQorLS0tIG1kYWRtLTQuMC5vcmlnL21vbml0b3IuYworKysrIG1kYWRtLTQuMC9tb25pdG9yLmMKK0BAIC00NDUsOSArNDQ1LDEyIEBAIHN0YXRpYyBpbnQgcmVhZF9hbmRfYWN0KHN0cnVjdCBhY3RpdmVfYXIKKyAJCWlmIChGRF9JU1NFVChtZGktPmJiX2ZkLCBmZHMpKQorIAkJCWNoZWNrX2Zvcl9jbGVhcmVkX2JiKGEsIG1kaSk7CiAgCX0KIC0KICAJZ2V0dGltZW9mZGF5KCZ0diwgTlVMTCk7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21pbmljb20vbWluaWNvbV8yLjcuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluaWNvbS9taW5pY29tXzIuNy4xLmJiCmluZGV4IDFhMzFhODcuLmU2YWZlMmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluaWNvbS9taW5pY29tXzIuNy4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluaWNvbS9taW5pY29tXzIuNy4xLmJiCkBAIC0yNywzICsyNyw0IEBACiAJZm9yIGQgaW4gZG9jIGV4dHJhcyBtYW4gbGliIHNyYzsgZG8gbWFrZSAtQyAkZCBERVNURElSPSR7RH0gaW5zdGFsbDsgZG9uZQogfQogCitSUkVDT01NRU5EU18ke1BOfSArPSAibHJ6c3oiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ldC10b29scy9uZXQtdG9vbHMvbmV0LXRvb2xzLTEuNjAtc2N0cDEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ldC10b29scy9uZXQtdG9vbHMvbmV0LXRvb2xzLTEuNjAtc2N0cDEucGF0Y2gKaW5kZXggMTJlZWQxNy4uNzhkYWY2YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXQtdG9vbHMvbmV0LXRvb2xzL25ldC10b29scy0xLjYwLXNjdHAxLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV0LXRvb2xzL25ldC10b29scy9uZXQtdG9vbHMtMS42MC1zY3RwMS5wYXRjaApAQCAtMTEsMTAgKzExLDEwIEBACiAgc3RhdGlzdGljcy5jIHwgIDY4ICsrKysrKysrKy0KICAyIGZpbGVzIGNoYW5nZWQsIDQ2NSBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL25ldHN0YXQuYyBiL25ldHN0YXQuYwotaW5kZXggMWZiOWUwYy4uNWQxYTRhMSAxMDA2NDQKLS0tLSBhL25ldHN0YXQuYwotKysrIGIvbmV0c3RhdC5jCitJbmRleDogbmV0LXRvb2xzLTEuNjAvbmV0c3RhdC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmV0LXRvb2xzLTEuNjAub3JpZy9uZXRzdGF0LmMKKysrKyBuZXQtdG9vbHMtMS42MC9uZXRzdGF0LmMKIEBAIC01OCw2ICs1OCw3IEBACiAgICoKICAgKjk5MDQyMCB7MS4zOH0gVHVhbiBIb2FuZyAgICAgICAgICAgICAgcmVtb3ZlZCBhIHVzZWxlc3MgYXNzaWdubWVudCBmcm9tIGlnbXBfZG9fb25lKCkKQEAgLTIzLDcgKzIzLDcgQEAKICAgKgogICAqICAgICAgICAgICAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKICAgKiAgICAgICAgICAgICAgYW5kL29yICBtb2RpZnkgaXQgdW5kZXIgIHRoZSB0ZXJtcyBvZiAgdGhlIEdOVSBHZW5lcmFsCi1AQCAtMTA1LDcgKzEwNiw3IEBACitAQCAtMTA2LDcgKzEwNyw3IEBACiAgI2VuZGlmCiAgCiAgLyogcHJvdG90eXBlcyBmb3Igc3RhdGlzdGljcy5jICovCkBAIC0zMiw3ICszMiw3IEBACiAgdm9pZCBpbml0dGFiKHZvaWQpOwogIHZvaWQgcGFyc2Vzbm1wNihpbnQsIGludCwgaW50KTsKICB2b2lkIGluaXR0YWI2KHZvaWQpOwotQEAgLTExOCw2ICsxMTksMjggQEAgdHlwZWRlZiBlbnVtIHsKK0BAIC0xMTksNiArMTIwLDI4IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgIFNTX0RJU0NPTk5FQ1RJTkcJCS8qIGluIHByb2Nlc3Mgb2YgZGlzY29ubmVjdGluZyAgKi8KICB9IHNvY2tldF9zdGF0ZTsKICAKQEAgLTYxLDcgKzYxLDcgQEAKICAjZGVmaW5lIFNPX0FDQ0VQVENPTiAgICAoMTw8MTYpCS8qIHBlcmZvcm1lZCBhIGxpc3RlbiAgICAgICAgICAgKi8KICAjZGVmaW5lIFNPX1dBSVREQVRBICAgICAoMTw8MTcpCS8qIHdhaXQgZGF0YSB0byByZWFkICAgICAgICAgICAgKi8KICAjZGVmaW5lIFNPX05PU1BBQ0UgICAgICAoMTw8MTgpCS8qIG5vIHNwYWNlIHRvIHdyaXRlICAgICAgICAgICAgKi8KLUBAIC0xNDgsNiArMTcxLDcgQEAgaW50IGZsYWdfb3B0ID0gMDsKK0BAIC0xNDksNiArMTcyLDcgQEAgaW50IGZsYWdfb3B0ID0gMDsKICBpbnQgZmxhZ19yYXcgPSAwOwogIGludCBmbGFnX3RjcCA9IDA7CiAgaW50IGZsYWdfdWRwID0gMDsKQEAgLTY5LDcgKzY5LDcgQEAKICBpbnQgZmxhZ19pZ21wPSAwOwogIGludCBmbGFnX3JvbSA9IDA7CiAgaW50IGZsYWdfZXhwID0gMTsKLUBAIC05OTAsNiArMTAxNCwzNjUgQEAgc3RhdGljIGludCB1ZHBfaW5mbyh2b2lkKQorQEAgLTk5NSw2ICsxMDE5LDM2NSBAQCBzdGF0aWMgaW50IHVkcF9pbmZvKHZvaWQpCiAgCSAgICAgICB1ZHBfZG9fb25lKTsKICB9CiAgCkBAIC00MzUsNyArNDM1LDcgQEAKICBzdGF0aWMgdm9pZCByYXdfZG9fb25lKGludCBsbnIsIGNvbnN0IGNoYXIgKmxpbmUpCiAgewogICAgICBjaGFyIGJ1ZmZlcls4MTkyXSwgbG9jYWxfYWRkcls2NF0sIHJlbV9hZGRyWzY0XTsKLUBAIC0xNTQ5LDcgKzE5MzIsNyBAQCBzdGF0aWMgdm9pZCB1c2FnZSh2b2lkKQorQEAgLTE1NTgsNyArMTk0MSw3IEBAIHN0YXRpYyB2b2lkIHVzYWdlKHZvaWQpCiAgICAgIGZwcmludGYoc3RkZXJyLCBfKCIgICAgICAgIC1GLCAtLWZpYiAgICAgICAgICAgICAgICBkaXNwbGF5IEZvcndhcmRpbmcgSW5mb3JtYXRpb24gQmFzZSAoZGVmYXVsdClcbiIpKTsKICAgICAgZnByaW50ZihzdGRlcnIsIF8oIiAgICAgICAgLUMsIC0tY2FjaGUgICAgICAgICAgICAgIGRpc3BsYXkgcm91dGluZyBjYWNoZSBpbnN0ZWFkIG9mIEZJQlxuXG4iKSk7CiAgCkBAIC00NDQsNyArNDQ0LDcgQEAKICAgICAgZnByaW50ZihzdGRlcnIsIF8oIiAgPEFGPj1Vc2UgJy02fC00JyBvciAnLUEgPGFmPicgb3IgJy0tPGFmPic7IGRlZmF1bHQ6ICVzXG4iKSwgREZMVF9BRik7CiAgICAgIGZwcmludGYoc3RkZXJyLCBfKCIgIExpc3Qgb2YgcG9zc2libGUgYWRkcmVzcyBmYW1pbGllcyAod2hpY2ggc3VwcG9ydCByb3V0aW5nKTpcbiIpKTsKICAgICAgcHJpbnRfYWZsaXN0KDEpOyAvKiAxID0gcm91dGVhYmxlICovCi1AQCAtMTU3NCw2ICsxOTU3LDcgQEAgaW50IG1haW4KK0BAIC0xNTgzLDYgKzE5NjYsNyBAQCBpbnQgbWFpbgogIAl7InByb3RvY29sIiwgMSwgMCwgJ0EnfSwKICAJeyJ0Y3AiLCAwLCAwLCAndCd9LAogIAl7InVkcCIsIDAsIDAsICd1J30sCkBAIC00NTIsNyArNDUyLDcgQEAKICAJeyJyYXciLCAwLCAwLCAndyd9LAogIAl7InVuaXgiLCAwLCAwLCAneCd9LAogIAl7Imxpc3RlbmluZyIsIDAsIDAsICdsJ30sCi1AQCAtMTYwNCw3ICsxOTg4LDcgQEAgaW50IG1haW4KK0BAIC0xNjEzLDcgKzE5OTcsNyBAQCBpbnQgbWFpbgogICAgICBnZXRyb3V0ZV9pbml0KCk7CQkvKiBTZXQgdXAgQUYgcm91dGluZyBzdXBwb3J0ICovCiAgCiAgICAgIGFmbmFtZVswXSA9ICdcMCc7CkBAIC00NjEsNyArNDYxLDcgQEAKICAJc3dpdGNoIChpKSB7CiAgCWNhc2UgLTE6CiAgCSAgICBicmVhazsKLUBAIC0xNjk2LDEwICsyMDgwLDEyIEBAIGludCBtYWluCitAQCAtMTcwNSwxMCArMjA4OSwxMiBAQCBpbnQgbWFpbgogIAljYXNlICd0JzoKICAJICAgIGZsYWdfdGNwKys7CiAgCSAgICBicmVhazsKQEAgLTQ3NSw3ICs0NzUsNyBAQAogIAljYXNlICd3JzoKICAJICAgIGZsYWdfcmF3Kys7CiAgCSAgICBicmVhazsKLUBAIC0xNzE3LDEzICsyMTAzLDEzIEBAIGludCBtYWluCitAQCAtMTcyNiwxMyArMjExMiwxMyBAQCBpbnQgbWFpbgogICAgICBpZiAoZmxhZ19pbnQgKyBmbGFnX3JvdSArIGZsYWdfbWFzICsgZmxhZ19zdGEgPiAxKQogIAl1c2FnZSgpOwogIApAQCAtNDkzLDcgKzQ5Myw3IEBACiAgCSsgZmxhZ19heDI1ICsgZmxhZ19uZXRyb20gKyBmbGFnX2lnbXAgKyBmbGFnX3gyNTsKICAKICAgICAgaWYgKGZsYWdfbWFzKSB7Ci1AQCAtMTc1MSw3ICsyMTM3LDcgQEAgaW50IG1haW4KK0BAIC0xNzYwLDcgKzIxNDYsNyBAQCBpbnQgbWFpbgogICAgICAgICAgY2hhciBidWZbMjU2XTsKICAgICAgICAgIGlmICghYWZuYW1lWzBdKSB7CiAgICAgICAgICAgICAgaW5pdHRhYigpOwpAQCAtNTAyLDcgKzUwMiw3IEBACiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHNhZmVfc3RybmNweShidWYsIGFmbmFtZSwgc2l6ZW9mKGJ1ZikpOwogICAgICAgICAgICAgIHRtcDEgPSBidWY7Ci1AQCAtMTgwNCw3ICsyMTkwLDcgQEAgaW50IG1haW4KK0BAIC0xODE1LDcgKzIyMDEsNyBAQCBpbnQgbWFpbgogIAlyZXR1cm4gKGkpOwogICAgICB9CiAgICAgIGZvciAoOzspIHsKQEAgLTUxMSw3ICs1MTEsNyBAQAogICNpZiBIQVZFX0FGSU5FVAogIAkgICAgcHJnX2NhY2hlX2xvYWQoKTsKICAJICAgIHByaW50ZihfKCJBY3RpdmUgSW50ZXJuZXQgY29ubmVjdGlvbnMgIikpOwkvKiB4eHggKi8KLUBAIC0xODQzLDYgKzIyMjksMTEgQEAgaW50IG1haW4KK0BAIC0xODU0LDYgKzIyNDAsMTEgQEAgaW50IG1haW4KICAJICAgIGlmIChpKQogIAkJcmV0dXJuIChpKTsKICAJfQpAQCAtNTIzLDEwICs1MjMsMTAgQEAKICAJaWYgKCFmbGFnX2FyZyB8fCBmbGFnX3JhdykgewogIAkgICAgaSA9IHJhd19pbmZvKCk7CiAgCSAgICBpZiAoaSkKLWRpZmYgLS1naXQgYS9zdGF0aXN0aWNzLmMgYi9zdGF0aXN0aWNzLmMKLWluZGV4IDAzNjAwZDcuLmViOGQ3ZGMgMTAwNjQ0Ci0tLS0gYS9zdGF0aXN0aWNzLmMKLSsrKyBiL3N0YXRpc3RpY3MuYworSW5kZXg6IG5ldC10b29scy0xLjYwL3N0YXRpc3RpY3MuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5ldC10b29scy0xLjYwLm9yaWcvc3RhdGlzdGljcy5jCisrKysgbmV0LXRvb2xzLTEuNjAvc3RhdGlzdGljcy5jCiBAQCAtMjEsNyArMjEsNyBAQAogICNkZWZpbmUgVUZXQVJOKHgpCiAgI2VuZGlmCkBAIC01MzcsNyArNTM3LDcgQEAKICBlbnVtIFN0YXRlIHsKICAgICAgbnVtYmVyID0gMCwgb3B0X251bWJlciwgaV9mb3J3YXJkLCBpX2lucF9pY21wLCBpX291dHBfaWNtcCwgaV9ydG9fYWxnLAogQEAgLTI5Nyw2ICsyOTcsMjcgQEAgc3RydWN0IGVudHJ5IFRjcGV4dHRhYltdID0KLSAgICAgeyAiVENQUmVub1JlY292ZXJ5RmFpbCIsIE5fKCIldSBjbGFzc2ljIFJlbm8gZmFzdCByZXRyYW5zbWl0cyBmYWlsZWQiKSwgb3B0X251bWJlciB9LAorICAgICB7ICJUQ1BSZW5vUmVjb3ZlcnlGYWlsIiwgTl8oIiVsbHUgY2xhc3NpYyBSZW5vIGZhc3QgcmV0cmFuc21pdHMgZmFpbGVkIiksIG9wdF9udW1iZXIgfSwKICB9OwogIAogK3N0cnVjdCBlbnRyeSBTY3RwdGFiW10gPQpAQCAtNjE2LDcgKzYxNiw3IEBACiAgICAgIGYgPSBwcm9jX2ZvcGVuKCIvcHJvYy9uZXQvc25tcCIpOwogICAgICBpZiAoIWYpIHsKICAJcGVycm9yKF8oImNhbm5vdCBvcGVuIC9wcm9jL25ldC9zbm1wIikpOwotQEAgLTUzMCw2ICs1ODAsMTYgQEAgdm9pZCBwYXJzZXNubXAoaW50IGZsYWdfcmF3LCBpbnQgZmxhZ190Y3AsIGludCBmbGFnX3VkcCkKK0BAIC01MzAsNiArNTgwLDE2IEBAIHZvaWQgcGFyc2Vzbm1wKGludCBmbGFnX3JhdywgaW50IGZsYWdfdGMKICAgICAgCiAgICAgICAgICBmY2xvc2UoZik7CiAgICAgIH0KQEAgLTYzMyw2ICs2MzMsMyBAQAogICAgICByZXR1cm47CiAgfQogICAgICAKLS0tIAotMS44LjUuMi4yMzMuZzkzMmY3ZTQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2ZpbGVzL2Nyb3NzX2FyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2ZpbGVzL2Nyb3NzX2FyLnBhdGNoCmluZGV4IDAzMDA3YWEuLjg2Y2MwYmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9maWxlcy9jcm9zc19hci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvZmlsZXMvY3Jvc3NfYXIucGF0Y2gKQEAgLTE4LDE4ICsxOCwxOSBAQAogIGNvbmZpZ3VyZS5hYyB8IDQgKysrKwogIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCi0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KK0luZGV4OiBuZXd0LTAuNTIuMjAvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBuZXd0LTAuNTIuMjAub3JpZy9NYWtlZmlsZS5pbgorKysrIG5ld3QtMC41Mi4yMC9NYWtlZmlsZS5pbgogQEAgLTcsNiArNyw3IEBAIENGTEFHUyA9IEBDRkxBR1NACiAgTERGTEFHUyA9IEBMREZMQUdTQAotIENQUEZMQUdTID0gLURfR05VX1NPVVJDRSBAQ1BQRkxBR1NAIAorIENQUEZMQUdTID0gLURfR05VX1NPVVJDRSBAQ1BQRkxBR1NACiAgR05VX0xEID0gQEdOVV9MREAKICtBUiA9IEBBUkAKICAKICBWRVJTSU9OID0gQFZFUlNJT05ACiAgVEFHID0gciQoc3Vic3QgLiwtLCQoVkVSU0lPTikpCi1AQCAtMTA5LDcgKzExMCw3IEBAIHdoaXB0Y2wuJChTT0VYVCk6ICQoV0hJUFRDTE9CSlMpICQoTElCTkVXVFNIKQorQEAgLTEwOSw3ICsxMTAsNyBAQCB3aGlwdGNsLiQoU09FWFQpOiAkKFdISVBUQ0xPQkpTKSAkKExJQk5FCiAgCSQoQ0MpIC1zaGFyZWQgJChTSENGTEFHUykgJChMREZMQUdTKSAtbyB3aGlwdGNsLiQoU09FWFQpICQoV0hJUFRDTE9CSlMpIC1MLiAtbG5ld3QgICQoTElCVENMKSAtbHBvcHQgJChMSUJTKQogIAogICQoTElCTkVXVCk6ICQoTElCT0JKUykKQEAgLTM4LDEwICszOSwxMCBAQAogIAogIG5ld3QubyAkKFNIQVJFRERJUikvbmV3dC5vOiBuZXd0LmMgTWFrZWZpbGUKICAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDkyZTZkYTguLmNkODNkNTcgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYworSW5kZXg6IG5ld3QtMC41Mi4yMC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBuZXd0LTAuNTIuMjAub3JpZy9jb25maWd1cmUuYWMKKysrKyBuZXd0LTAuNTIuMjAvY29uZmlndXJlLmFjCiBAQCAtMTUsNiArMTUsMTAgQEAgQUNfUFJPR19JTlNUQUxMCiAgQUNfUFJPR19MTl9TCiAgQUNfUFJPR19HUkVQCkBAIC01MSw4ICs1Miw1IEBACiArQUNfREVGVU4oW0FDX1BST0dfQVJdLCBbQUNfQ0hFQ0tfVE9PTChBUiwgYXIsIDopXSkKICtBQ19QUk9HX0FSCiAgCi0gIyBBcmUgd2UgdXNpbmcgR05VIGxkPwotIEFDX01TR19DSEVDS0lORyhbZm9yIEdOVSBsZF0pCi0tLSAKLTEuOC4xLjIKLQorIEFDX0NIRUNLX1NJWkVPRihbbG9uZ10pCisgQUNfQ0hFQ0tfU0laRU9GKFtsb25nIGxvbmddKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUuYmIKaW5kZXggZmRlZGU1OS4uOTAwMmZiYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lLmJiCkBAIC04OSw3ICs4OSw2IEBACiAgICAgbWt0ZW1wIFwKICAgICBuY3Vyc2VzIFwKICAgICBuZXQtdG9vbHMgXAotICAgIHBheCBcCiAgICAgcG9wdCBcCiAgICAgcHJvY3BzIFwKICAgICBwc21pc2MgXApAQCAtMTQwLDE5ICsxMzksMTMgQEAKICAgICBiemlwMiBcCiAgICAgY3JvbmllIFwKICAgICBkYnVzIFwKLSAgICBkYnVzLWdsaWIgXAogICAgIGVsZnV0aWxzIFwKICAgICBnemlwIFwKICAgICBsZXNzIFwKLSAgICBsaWJjYXAgXAotICAgIGxpYmV2ZW50IFwKICAgICBsb2dyb3RhdGUgXAogICAgIG5mcy11dGlscyBcCiAgICAgcGNpdXRpbHMgXAotICAgIGxpYnBjcmUgXAogICAgIHJwY2JpbmQgXAotICAgIHN5c2ZzdXRpbHMgXAogICAgIHRjcC13cmFwcGVycyBcCiAgICAgdHpkYXRhIFwKICAgICAiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1sc2IuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtbHNiLmJiCmluZGV4IDViYWFmMzUuLjUzZDEwMGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1sc2IuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWxzYi5iYgpAQCAtMTQsMTIgKzE0LDE1IEBACiAjIGxpYmdsdSBuZWVkcyB2aXJ0dWFsL2xpYmdsLCB3aGljaCByZXF1aXJlcyBvcGVuZ2wgaW4gRElTVFJPX0ZFQVRVUkVTCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgKz0gIm9wZW5nbCIKIAorIyBsaWJwYW0sIHBhbS1wbHVnaW4td2hlZWwgcmVxdWlyZXMgcGFtIGluIERJU1RST19GRUFUVVJFUworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTICs9ICJwYW0iCisKICMKICMgV2Ugd2lsbCBza2lwIHBhcnNpbmcgdGhpcyBwYWNrYWdlZ2VvdXAgZm9yIG5vbi1nbGliYyBzeXN0ZW1zCiAjCiBweXRob24gX19hbm9ueW1vdXMgKCkgewogICAgIGlmIGQuZ2V0VmFyKCdUQ0xJQkMnKSAhPSAiZ2xpYmMiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiaW5jb21wYXRpYmxlIHdpdGggJXMgQyBsaWJyYXJ5IiAlCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoImluY29tcGF0aWJsZSB3aXRoICVzIEMgbGlicmFyeSIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmdldFZhcignVENMSUJDJykpCiB9CiAKQEAgLTY4LDcgKzcxLDYgQEAKICAgICBtYy1oZWxwZXJzLXBlcmwgXAogICAgIG1kYWRtIFwKICAgICBtaW5pY29tIFwKLSAgICBuZW9uIFwKICAgICBwYXJ0ZWQgXAogICAgIHF1b3RhIFwKICAgICBzY3JlZW4gXApAQCAtMTU5LDcgKzE2MSw2IEBACiAgICAgbWt0ZW1wIFwKICAgICBtc210cCBcCiAgICAgcGF0Y2ggXAotICAgIHBheCBcCiAgICAgcHJvY3BzIFwKICAgICBwc21pc2MgXAogICAgIHNlZCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vbGlicGFtLXh0ZXN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9saWJwYW0teHRlc3RzLnBhdGNoCmluZGV4IGJlNjg3NDUuLjdlZGY2NmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9saWJwYW0teHRlc3RzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9saWJwYW0teHRlc3RzLnBhdGNoCkBAIC0zLDE4ICszLDIwIEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogS2FuZyBLYWkgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0gTGludXgtUEFNLTEuMS40L3h0ZXN0cy9NYWtlZmlsZS5hbS5vcmlnCTIwMTEtMDctMTkgMTc6MDA6MDkuNjE5OTgwMDAxICswODAwCi0rKysgTGludXgtUEFNLTEuMS40L3h0ZXN0cy9NYWtlZmlsZS5hbQkyMDExLTA3LTE5IDE2OjU0OjAwLjIyOTk3OTk5OCArMDgwMAotQEAgLTcsNyArNyw3IEBACi0gQU1fTERGTEFHUyA9IC1MJCh0b3BfYnVpbGRkaXIpL2xpYnBhbSAtbHBhbSBcCi0gCS1MJCh0b3BfYnVpbGRkaXIpL2xpYnBhbV9taXNjIC1scGFtX21pc2MKK0luZGV4OiBMaW51eC1QQU0tMS4zLjAveHRlc3RzL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gTGludXgtUEFNLTEuMy4wLm9yaWcveHRlc3RzL01ha2VmaWxlLmFtCisrKysgTGludXgtUEFNLTEuMy4wL3h0ZXN0cy9NYWtlZmlsZS5hbQorQEAgLTcsNyArNyw3IEBAIEFNX0NGTEFHUyA9IC1ETElCUEFNX0NPTVBJTEUgLUkkKHRvcF9zcmMKKyBMREFERCA9ICQodG9wX2J1aWxkZGlyKS9saWJwYW0vbGlicGFtLmxhIFwKKyAJJCh0b3BfYnVpbGRkaXIpL2xpYnBhbV9taXNjL2xpYnBhbV9taXNjLmxhCiAgCiAtQ0xFQU5GSUxFUyA9ICp+ICQoWFRFU1RTKQogK0NMRUFORklMRVMgPSAqfgogIAogIEVYVFJBX0RJU1QgPSBydW4teHRlc3RzLnNoIHRzdC1wYW1fZGlzcGF0Y2gxLnBhbWQgdHN0LXBhbV9kaXNwYXRjaDIucGFtZCBcCiAgCXRzdC1wYW1fZGlzcGF0Y2gzLnBhbWQgdHN0LXBhbV9kaXNwYXRjaDQucGFtZCBcCi1AQCAtNTEsMyArNTEsMTggQEAKK0BAIC01MSwzICs1MSwxOCBAQCBFWFRSQV9QUk9HUkFNUyA9ICQoWFRFU1RTKQogIAogIHh0ZXN0czogJChYVEVTVFMpIHJ1bi14dGVzdHMuc2gKICAJIiQoc3JjZGlyKSIvcnVuLXh0ZXN0cy5zaCAiJChzcmNkaXIpIiAke1hURVNUU30gJHtOT1NSQ1RFU1RTfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL3BhbS1zZWN1cml0eS1hYnN0cmFjdC1zZWN1cmV0dHktaGFuZGxpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vcGFtLXNlY3VyaXR5LWFic3RyYWN0LXNlY3VyZXR0eS1oYW5kbGluZy5wYXRjaAppbmRleCBmMTgzNGY2Li45YjhkNGMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vcGFtLXNlY3VyaXR5LWFic3RyYWN0LXNlY3VyZXR0eS1oYW5kbGluZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vcGFtLXNlY3VyaXR5LWFic3RyYWN0LXNlY3VyZXR0eS1oYW5kbGluZy5wYXRjaApAQCAtNSwxMiArNSwxMyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBNaW5nIExpdSA8bWluZy5saXVAd2luZHJpdmVyLmNvbT4KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLWRpZmYgLXVycE4gYS9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvTWFrZWZpbGUuYW0gYi9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvTWFrZWZpbGUuYW0KLS0tLSBhL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9NYWtlZmlsZS5hbQkyMDEzLTA3LTA1IDExOjA4OjIzLjIyNDQ4MzIzNyArMDgwMAotKysrIGIvbW9kdWxlcy9wYW1fc2VjdXJldHR5L01ha2VmaWxlLmFtCTIwMTMtMDctMDUgMTE6MTU6MjEuMzA0NDg2NDU2ICswODAwCitJbmRleDogTGludXgtUEFNLTEuMy4wL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIExpbnV4LVBBTS0xLjMuMC5vcmlnL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9NYWtlZmlsZS5hbQorKysrIExpbnV4LVBBTS0xLjMuMC9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvTWFrZWZpbGUuYW0KIEBAIC0yNCw2ICsyNCwxMCBAQCBlbmRpZgogIHNlY3VyZWxpYl9MVExJQlJBUklFUyA9IHBhbV9zZWN1cmV0dHkubGEKLSBwYW1fc2VjdXJldHR5X2xhX0xJQkFERCA9IC1MJCh0b3BfYnVpbGRkaXIpL2xpYnBhbSAtbHBhbQorIHBhbV9zZWN1cmV0dHlfbGFfTElCQUREID0gJCh0b3BfYnVpbGRkaXIpL2xpYnBhbS9saWJwYW0ubGEKICAKICtwYW1fc2VjdXJldHR5X2xhX1NPVVJDRVMgPQlcCiArCXBhbV9zZWN1cmV0dHkuYwkJXApAQCAtMTksOSArMjAsMTAgQEAKICBpZiBFTkFCTEVfUkVHRU5FUkFURV9NQU4KICBub2luc3RfREFUQSA9IFJFQURNRQogIFJFQURNRTogcGFtX3NlY3VyZXR0eS44LnhtbAotZGlmZiAtdXJwTiBhL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9wYW1fc2VjdXJldHR5LmMgYi9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvcGFtX3NlY3VyZXR0eS5jCi0tLS0gYS9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvcGFtX3NlY3VyZXR0eS5jCTIwMTMtMDctMDUgMTE6MDc6NTAuMDY0NDgzNTY4ICswODAwCi0rKysgYi9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvcGFtX3NlY3VyZXR0eS5jCTIwMTMtMDctMDUgMTE6MTI6MjMuOTk0NDgzMzQ0ICswODAwCitJbmRleDogTGludXgtUEFNLTEuMy4wL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9wYW1fc2VjdXJldHR5LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBMaW51eC1QQU0tMS4zLjAub3JpZy9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvcGFtX3NlY3VyZXR0eS5jCisrKysgTGludXgtUEFNLTEuMy4wL21vZHVsZXMvcGFtX3NlY3VyZXR0eS9wYW1fc2VjdXJldHR5LmMKIEBAIC0xLDcgKzEsNSBAQAogIC8qIHBhbV9zZWN1cmV0dHkgbW9kdWxlICovCiAgCkBAIC0xMDQsOSArMTA2LDEwIEBACiAgCiAgICAgIGlmIChyZXR2YWwgJiYgIShjdHJsICYgUEFNX05PQ09OU09MRV9BUkcpKSB7CiAgICAgICAgICBGSUxFICpjbWRsaW5lZmlsZTsKLWRpZmYgLXVycE4gYS9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvdHR5X3NlY3VyZS5jIGIvbW9kdWxlcy9wYW1fc2VjdXJldHR5L3R0eV9zZWN1cmUuYwotLS0tIGEvbW9kdWxlcy9wYW1fc2VjdXJldHR5L3R0eV9zZWN1cmUuYwkxOTcwLTAxLTAxIDA4OjMwOjAwLjAwMDAwMDAwMCArMDgzMAotKysrIGIvbW9kdWxlcy9wYW1fc2VjdXJldHR5L3R0eV9zZWN1cmUuYwkyMDEzLTA3LTA1IDExOjE0OjIxLjUzNDQ4MjkwMCArMDgwMAorSW5kZXg6IExpbnV4LVBBTS0xLjMuMC9tb2R1bGVzL3BhbV9zZWN1cmV0dHkvdHR5X3NlY3VyZS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCisrKysgTGludXgtUEFNLTEuMy4wL21vZHVsZXMvcGFtX3NlY3VyZXR0eS90dHlfc2VjdXJlLmMKIEBAIC0wLDAgKzEsOTAgQEAKICsvKgogKyAqIEEgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGlmIGEgcGFydGljdWxhciBsaW5lIGlzIGluIC9ldGMvc2VjdXJldHR5CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW1fMS4zLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW1fMS4zLjAuYmIKaW5kZXggOGY3NzUzZC4uOTJhYjcyYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtXzEuMy4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbV8xLjMuMC5iYgpAQCAtMTUxLDExICsxNTEsOCBAQAogCWZpCiB9CiAKLXB5dGhvbiBkb19wYW1fc2FuaXR5ICgpIHsKLSAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBUcnVlLCBGYWxzZSwgZCk6Ci0gICAgICAgIGJiLndhcm4oIkJ1aWxkaW5nIGxpYnBhbSBidXQgJ3BhbScgaXNuJ3QgaW4gRElTVFJPX0ZFQVRVUkVTLCBQQU0gd29uJ3Qgd29yayBjb3JyZWN0bHkiKQotfQotYWRkdGFzayBwYW1fc2FuaXR5IGJlZm9yZSBkb19jb25maWd1cmUKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAicGFtIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayBuYXRpdmUiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL25vX2NoZWNrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvbm9fY2hlY2sucGF0Y2gKaW5kZXggNThkOGRiNC4uZTZhMjZkMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvbm9fY2hlY2sucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvbm9fY2hlY2sucGF0Y2gKQEAgLTUsMTIgKzUsMTIgQEAKIAogUlAgLSA0LzExLzA4CiAKLUluZGV4OiBwYXJ0ZWQtMS45LjAvY29uZmlndXJlLmFjCitJbmRleDogcGFydGVkLTMuMi9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwYXJ0ZWQtMS45LjAub3JpZy9jb25maWd1cmUuYWMJMjAwOS0wNy0yMyAxODo1MjowOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBwYXJ0ZWQtMS45LjAvY29uZmlndXJlLmFjCTIwMTAtMDItMDIgMTQ6MTM6NTYuMDEzOTA1MDkzICswMDAwCi1AQCAtNDc3LDcgKzQ3Nyw3IEBACi0gQU1fQ09ORElUSU9OQUwoW0JVSUxEX0xJTlVYXSwgW3Rlc3QgIiRPUyIgPSBsaW51eF0pCistLS0gcGFydGVkLTMuMi5vcmlnL2NvbmZpZ3VyZS5hYworKysrIHBhcnRlZC0zLjIvY29uZmlndXJlLmFjCitAQCAtNTU1LDcgKzU1NSw3IEBAIEFDX0NIRUNLX0hFQURFUihbZXhlY2luZm8uaF0sIFsKKyBBTV9DT05ESVRJT05BTChbQ09NUElMRV9GT1JfUzM5MF0sIFt0ZXN0ICIkaG9zdF9jcHUiID0gczM5MCB8fCB0ZXN0ICIkaG9zdF9jcHUiID0gczM5MHhdKQogIAogIGRubCBjaGVjayBmb3IgImNoZWNrIiwgdW5pdCB0ZXN0aW5nIGxpYnJhcnkvaGVhZGVyCiAtUEtHX0NIRUNLX01PRFVMRVMoW0NIRUNLXSwgW2NoZWNrID49IDAuOS4zXSwgaGF2ZV9jaGVjaz15ZXMsIGhhdmVfY2hlY2s9bm8pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9zeXNjYWxscy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL3N5c2NhbGxzLnBhdGNoCmluZGV4IGU5YmJlOWEuLjkzMjA1YTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL3N5c2NhbGxzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL3N5c2NhbGxzLnBhdGNoCkBAIC00LDEwICs0LDEwIEBACiAgbGlicGFydGVkL2FyY2gvbGludXguYyB8ICAgMTMgKysrKysrKysrKysrKwogIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspCiAKLUluZGV4OiBwYXJ0ZWQtMS45LjAvbGlicGFydGVkL2FyY2gvbGludXguYworSW5kZXg6IHBhcnRlZC0zLjIvbGlicGFydGVkL2FyY2gvbGludXguYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBhcnRlZC0xLjkuMC5vcmlnL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMJMjAwOS0wNy0yMyAxODo1MjowOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBwYXJ0ZWQtMS45LjAvbGlicGFydGVkL2FyY2gvbGludXguYwkyMDEwLTAyLTAyIDE0OjE0OjE2LjUyMzkwNDc2OCArMDAwMAorLS0tIHBhcnRlZC0zLjIub3JpZy9saWJwYXJ0ZWQvYXJjaC9saW51eC5jCisrKysgcGFydGVkLTMuMi9saWJwYXJ0ZWQvYXJjaC9saW51eC5jCiBAQCAtMTcsNiArMTcsOCBAQAogIAogICNkZWZpbmUgUFJPQ19ERVZJQ0VTX0JVRlNJWiAxNjM4NApAQCAtMTYsOCArMTYsOCBAQAogKwogICNpbmNsdWRlIDxjb25maWcuaD4KICAjaW5jbHVkZSA8YXJjaC9saW51eC5oPgotIAotQEAgLTE0NzcsMTIgKzE0NzksMTQgQEAKKyAjaW5jbHVkZSA8bGludXgvYmxrcGcuaD4KK0BAIC0xNjk2LDEyICsxNjk4LDE0IEBAIGxpbnV4X3JlZnJlc2hfY2xvc2UgKFBlZERldmljZSogZGV2KQogIAogICNpZiBTSVpFT0ZfT0ZGX1QgPCA4CiAgCkBAIC0zMiw3ICszMiw3IEBACiAgCiAgbG9mZl90CiAgbGxzZWVrICh1bnNpZ25lZCBpbnQgZmQsIGxvZmZfdCBvZmZzZXQsIHVuc2lnbmVkIGludCB3aGVuY2UpCi1AQCAtMTQ5MCwxMSArMTQ5NCwyMCBAQAorQEAgLTE3MDksMTEgKzE3MTMsMjAgQEAgbGxzZWVrICh1bnNpZ25lZCBpbnQgZmQsIGxvZmZfdCBvZmZzZXQsCiAgICAgICAgICBsb2ZmX3QgcmVzdWx0OwogICAgICAgICAgaW50IHJldHZhbDsKICAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC8wMDAxLUFkZC1hLWNvbW1lbnQtZm9yLWZhbGx0aHJvdWdoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtQWRkLWEtY29tbWVudC1mb3ItZmFsbHRocm91Z2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3NmY4NWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtQWRkLWEtY29tbWVudC1mb3ItZmFsbHRocm91Z2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIGU2N2JiM2RlYmU1ODJmMGU3Nzc3MGI3MTRiZDAxMmJiMTA4MmZjNDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOSBBcHIgMjAxNyAxMTozMjowMCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBBZGQgYSBjb21tZW50IGZvciBmYWxsdGhyb3VnaAotCi1GaXhlcyB3YXJuaW5ncyB3aXRoIGdjYzcgZS5nLgotCi0uLi8uLi8uLi8uLi8uLi8uLi8uLi93b3Jrc3BhY2Uvc291cmNlcy9wYXgvc3JjL29wdGlvbnMuYzogSW4gZnVuY3Rpb24gJ3Rhcl9vcHRpb25zJzoKLS4uLy4uLy4uLy4uLy4uLy4uLy4uL3dvcmtzcGFjZS9zb3VyY2VzL3BheC9zcmMvb3B0aW9ucy5jOjcyNTo3OiBlcnJvcjogdGhpcyBzdGF0ZW1lbnQgbWF5IGZhbGwgdGhyb3VnaCBbLVdlcnJvcj1pbXBsaWNpdC1mYWxsdGhyb3VnaD1dCi0gICAgaWYgKG9wdF9hZGQgKCJ3cml0ZV9vcHQ9bm9kaXIiKSA8IDApCi0gICAgICAgXgotLi4vLi4vLi4vLi4vLi4vLi4vLi4vd29ya3NwYWNlL3NvdXJjZXMvcGF4L3NyYy9vcHRpb25zLmM6NzMwOjI6IG5vdGU6IGhlcmUKLSAgY2FzZSAnTyc6Ci0gIF5+fn4KLWNjMTogYWxsIHdhcm5pbmdzIGJlaW5nIHRyZWF0ZWQgYXMgZXJyb3JzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL29wdGlvbnMuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL29wdGlvbnMuYyBiL3NyYy9vcHRpb25zLmMKLWluZGV4IGM2NjNiNGUuLmI4MDgxOWEgMTAwNjQ0Ci0tLS0gYS9zcmMvb3B0aW9ucy5jCi0rKysgYi9zcmMvb3B0aW9ucy5jCi1AQCAtNzI0LDYgKzcyNCw3IEBAIHRhcl9vcHRpb25zIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCWNhc2UgJ28nOgotIAkgIGlmIChvcHRfYWRkICgid3JpdGVfb3B0PW5vZGlyIikgPCAwKQotIAkgICAgdGFyX3VzYWdlICgpOwotKwkgIC8qIGZhbGx0aHJ1ICovCi0gCWNhc2UgJ08nOgotIAkgIE9mbGFnID0gMTsKLSAJICBicmVhazsKLS0tIAotMi4xMi4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXgvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWJmMmRlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjg3ICswLDAgQEAKLUZyb20gNDdjNGRiOGQzNzI0OGQ5NjhmYWM3ZWU0YTcxY2E2NDM5ODg5MDcyMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDYgSmFuIDIwMTYgMTE6NTc6MjEgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGggbXVzbAotCi1SZW1vdmUgQlNEaXNtcwotUmVtb3ZlIGZ0cywgYW5kIGxpbmsgdG8gbGliZnRzIHRoYXRzIHByb3ZpZGVkIGV4dGVybmFsbHkKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW211c2wgc3BlY2lmaWNdCi0KLSBsaWIvTWFrZWZpbGUuYW0gfCAgICA0ICstCi0gbGliL2Z0cy5jICAgICAgIHwgMTAyNSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gbGliL2Z0cy5oICAgICAgIHwgIDEzMSAtLS0tLS0tCi0gbGliL3Zpcy5oICAgICAgIHwgICAxMyArLQotIHNyYy9NYWtlZmlsZS5hbSB8ICAgIDIgKy0KLSBzcmMvZXh0ZXJuLmggICAgfCAgICAyIC0KLSBzcmMvZmlsZV9zdWJzLmMgfCAgICAyICstCi0gc3JjL3RhYmxlcy5jICAgIHwgICAgMiArLQotIDggZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMTE2NyBkZWxldGlvbnMoLSkKLSBkZWxldGUgbW9kZSAxMDA2NDQgbGliL2Z0cy5jCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IGxpYi9mdHMuaAotCi1kaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLmFtIGIvbGliL01ha2VmaWxlLmFtCi1pbmRleCA1NmQwODU5Li43ZjUwNDVhIDEwMDY0NAotLS0tIGEvbGliL01ha2VmaWxlLmFtCi0rKysgYi9saWIvTWFrZWZpbGUuYW0KLUBAIC04LDggKzgsOCBAQCBBVVRPTUFLRV9PUFRJT05TID0gMS43IGduaXRzCi0gQ0xFQU5GSUxFUyA9ICp+Ci0gCi0gbm9pbnN0X0xJQlJBUklFUyA9IGxpYmJzZGZ1bmMuYQotLW5vaW5zdF9IRUFERVJTID0gdmlzLmggYnNkZnVuYy5oIGZ0cy5oCi0rbm9pbnN0X0hFQURFUlMgPSB2aXMuaCBic2RmdW5jLmgKLSAKLSBBTV9DRkxBR1MgPSBARVhUUkFfQ0ZMQUdTQAotIAotLWxpYmJzZGZ1bmNfYV9TT1VSQ0VTID0gdmlzLmMgc3RybGNweS5jIHN0cm1vZGUuYyBmdHMuYwotK2xpYmJzZGZ1bmNfYV9TT1VSQ0VTID0gdmlzLmMgc3RybGNweS5jIHN0cm1vZGUuYwotZGlmZiAtLWdpdCBhL2xpYi9mdHMuYyBiL2xpYi9mdHMuYwotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA0NWU5MGNhLi4wMDAwMDAwCi0tLS0gYS9saWIvZnRzLmMKLSsrKyAvZGV2L251bGwKLUBAIC0xLDEwMjUgKzAsMCBAQAotLS8qLQotLSAqIENvcHlyaWdodCAoYykgMTk5MCwgMTk5MywgMTk5NAotLSAqICAgICAgVGhlIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0tICoKLS0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLS0gKiBhcmUgbWV0OgotLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0tICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0tICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0tICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLS0gKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLS0gKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS0gKgotLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFJFR0VOVFMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0tICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0tICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLS0gKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBSRUdFTlRTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLS0gKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0tICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0tICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLS0gKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0tICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotLSAqIFNVQ0ggREFNQUdFLgotLSAqLwotLQotLSNpZmRlZiBIQVZFX0NPTkZJR19ICi0tI2luY2x1ZGUgPGNvbmZpZy5oPgotLSNlbmRpZgotLQotLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotLSNpbmNsdWRlIDxmY250bC5oPgotLSNpbmNsdWRlIDxkaXJlbnQuaD4KLS0jaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZnRzLmg+Ci0tI2luY2x1ZGUgPHN0ZGxpYi5oPgotLSNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0tCi0tLyogTGFyZ2VzdCBhbGlnbm1lbnQgc2l6ZSBuZWVkZWQsIG1pbnVzIG9uZS4KLS0gICBVc3VhbGx5IGxvbmcgZG91YmxlIGlzIHRoZSB3b3JzdCBjYXNlLiAgKi8KLS0jaWZuZGVmIEFMSUdOQllURVMKLS0jZGVmaW5lIEFMSUdOQllURVMJKF9fYWxpZ25vZl9fIChsb25nIGRvdWJsZSkgLSAxKQotLSNlbmRpZgotLS8qIEFsaWduIFAgdG8gdGhhdCBzaXplLiAgKi8KLS0jaWZuZGVmIEFMSUdOCi0tI2RlZmluZQlBTElHTihwKQkoKCh1bnNpZ25lZCBsb25nIGludCkgKHApICsgQUxJR05CWVRFUykgJiB+QUxJR05CWVRFUykKLS0jZW5kaWYKLS0KLS0KLS1zdGF0aWMgRlRTRU5UCSpmdHNfYWxsb2MgKEZUUyAqLCBjb25zdCBjaGFyICosIGludCk7Ci0tc3RhdGljIEZUU0VOVAkqZnRzX2J1aWxkIChGVFMgKiwgaW50KTsKLS1zdGF0aWMgdm9pZAkgZnRzX2xmcmVlIChGVFNFTlQgKik7Ci0tc3RhdGljIHZvaWQJIGZ0c19sb2FkIChGVFMgKiwgRlRTRU5UICopOwotLXN0YXRpYyBzaXplX3QJIGZ0c19tYXhhcmdsZW4gKGNoYXIgKiBjb25zdCAqKTsKLS1zdGF0aWMgdm9pZAkgZnRzX3BhZGp1c3QgKEZUUyAqLCBGVFNFTlQgKik7Ci0tc3RhdGljIGludAkgZnRzX3BhbGxvYyAoRlRTICosIHNpemVfdCk7Ci0tc3RhdGljIEZUU0VOVAkqZnRzX3NvcnQgKEZUUyAqLCBGVFNFTlQgKiwgaW50KTsKLS1zdGF0aWMgdV9zaG9ydAkgZnRzX3N0YXQgKEZUUyAqLCBGVFNFTlQgKiwgaW50KTsKLS1zdGF0aWMgaW50ICAgICAgZnRzX3NhZmVfY2hhbmdlZGlyIChGVFMgKiwgRlRTRU5UICosIGludCwgY29uc3QgY2hhciAqKTsKLS0KLS0jaWZuZGVmIE1BWAotLSNkZWZpbmUgTUFYKGEsIGIpCShhID4gYiA/IGEgOiBiKQotLSNlbmRpZgotLQotLSNkZWZpbmUJSVNET1QoYSkJKGFbMF0gPT0gJy4nICYmICghYVsxXSB8fCAoYVsxXSA9PSAnLicgJiYgIWFbMl0pKSkKLS0KLS0jZGVmaW5lIENMUihvcHQpCShzcC0+ZnRzX29wdGlvbnMgJj0gfihvcHQpKQotLSNkZWZpbmUJSVNTRVQob3B0KQkoc3AtPmZ0c19vcHRpb25zICYgKG9wdCkpCi0tI2RlZmluZQlTRVQob3B0KQkoc3AtPmZ0c19vcHRpb25zIHw9IChvcHQpKQotLQotLSNkZWZpbmUJRkNIRElSKHNwLCBmZCkJKCFJU1NFVChGVFNfTk9DSERJUikgJiYgZmNoZGlyKGZkKSkKLS0KLS0jZGVmaW5lCUJSRUFECQkzCQkvKiBmdHNfcmVhZCAqLwotLQotLUZUUyAqCi0tZnRzX29wZW4oYXJndiwga29wdGlvbnMsIGNvbXBhcikKLS0JY2hhciAqIGNvbnN0ICphcmd2OwotLQlyZWdpc3RlciBpbnQga29wdGlvbnM7Ci0tCWludCAoKmNvbXBhcikgKGNvbnN0IEZUU0VOVCAqKiwgY29uc3QgRlRTRU5UICoqKTsKLS17Ci0tCXJlZ2lzdGVyIEZUUyAqc3A7Ci0tCXJlZ2lzdGVyIEZUU0VOVCAqcCwgKnJvb3Q7Ci0tCXJlZ2lzdGVyIGludCBuaXRlbXM7Ci0tCUZUU0VOVCAqcGFyZW50LCAqdG1wOwotLQlpbnQgbGVuOwotLQotLXRtcCA9IE5VTEw7CS8qIHN0b3AgY29tcGlsZXIgd2hpbmdpbmcgKi8KLS0JLyogT3B0aW9ucyBjaGVjay4gKi8KLS0JaWYgKGtvcHRpb25zICYgfkZUU19PUFRJT05NQVNLKSB7Ci0tCQllcnJubyA9IEVJTlZBTDsKLS0JCXJldHVybiAoTlVMTCk7Ci0tCX0KLS0KLS0JLyogQWxsb2NhdGUvaW5pdGlhbGl6ZSB0aGUgc3RyZWFtICovCi0tCWlmICgoc3AgPSBtYWxsb2MoKHVfaW50KXNpemVvZihGVFMpKSkgPT0gTlVMTCkKLS0JCXJldHVybiAoTlVMTCk7Ci0tCW1lbXNldChzcCwgMCwgc2l6ZW9mKEZUUykpOwotLQlzcC0+ZnRzX2NvbXBhciA9IChpbnQgKCopIChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpIGNvbXBhcjsKLS0Jc3AtPmZ0c19vcHRpb25zID0ga29wdGlvbnM7Ci0tCi0tCS8qIExvZ2ljYWwgd2Fsa3MgdHVybiBvbiBOT0NIRElSOyBzeW1ib2xpYyBsaW5rcyBhcmUgdG9vIGhhcmQuICovCi0tCWlmIChJU1NFVChGVFNfTE9HSUNBTCkpCi0tCQlTRVQoRlRTX05PQ0hESVIpOwotLQotLQkvKgotLQkgKiBTdGFydCBvdXQgd2l0aCAxSyBvZiBwYXRoIHNwYWNlLCBhbmQgZW5vdWdoLCBpbiBhbnkgY2FzZSwKLS0JICogdG8gaG9sZCB0aGUgdXNlcidzIHBhdGhzLgotLQkgKi8KLS0jaWZuZGVmIE1BWFBBVEhMRU4KLS0jZGVmaW5lIE1BWFBBVEhMRU4gMTAyNAotLSNlbmRpZgotLQlpZiAoZnRzX3BhbGxvYyhzcCwgTUFYKGZ0c19tYXhhcmdsZW4oYXJndiksIE1BWFBBVEhMRU4pKSkKLS0JCWdvdG8gbWVtMTsKLS0KLS0JLyogQWxsb2NhdGUvaW5pdGlhbGl6ZSByb290J3MgcGFyZW50LiAqLwotLQlpZiAoKHBhcmVudCA9IGZ0c19hbGxvYyhzcCwgIiIsIDApKSA9PSBOVUxMKQotLQkJZ290byBtZW0yOwotLQlwYXJlbnQtPmZ0c19sZXZlbCA9IEZUU19ST09UUEFSRU5UTEVWRUw7Ci0tCi0tCS8qIEFsbG9jYXRlL2luaXRpYWxpemUgcm9vdChzKS4gKi8KLS0JZm9yIChyb290ID0gTlVMTCwgbml0ZW1zID0gMDsgKmFyZ3YgIT0gTlVMTDsgKythcmd2LCArK25pdGVtcykgewotLQkJLyogRG9uJ3QgYWxsb3cgemVyby1sZW5ndGggcGF0aHMuICovCi0tCQlpZiAoKGxlbiA9IHN0cmxlbigqYXJndikpID09IDApIHsKLS0JCQllcnJubyA9IEVOT0VOVDsKLS0JCQlnb3RvIG1lbTM7Ci0tCQl9Ci0tCi0tCQlwID0gZnRzX2FsbG9jKHNwLCAqYXJndiwgbGVuKTsKLS0JCXAtPmZ0c19sZXZlbCA9IEZUU19ST09UTEVWRUw7Ci0tCQlwLT5mdHNfcGFyZW50ID0gcGFyZW50OwotLQkJcC0+ZnRzX2FjY3BhdGggPSBwLT5mdHNfbmFtZTsKLS0JCXAtPmZ0c19pbmZvID0gZnRzX3N0YXQoc3AsIHAsIElTU0VUKEZUU19DT01GT0xMT1cpKTsKLS0KLS0JCS8qIENvbW1hbmQtbGluZSAiLiIgYW5kICIuLiIgYXJlIHJlYWwgZGlyZWN0b3JpZXMuICovCi0tCQlpZiAocC0+ZnRzX2luZm8gPT0gRlRTX0RPVCkKLS0JCQlwLT5mdHNfaW5mbyA9IEZUU19EOwotLQotLQkJLyoKLS0JCSAqIElmIGNvbXBhcmlzb24gcm91dGluZSBzdXBwbGllZCwgdHJhdmVyc2UgaW4gc29ydGVkCi0tCQkgKiBvcmRlcjsgb3RoZXJ3aXNlIHRyYXZlcnNlIGluIHRoZSBvcmRlciBzcGVjaWZpZWQuCi0tCQkgKi8KLS0JCWlmIChjb21wYXIpIHsKLS0JCQlwLT5mdHNfbGluayA9IHJvb3Q7Ci0tCQkJcm9vdCA9IHA7Ci0tCQl9IGVsc2UgewotLQkJCXAtPmZ0c19saW5rID0gTlVMTDsKLS0JCQlpZiAocm9vdCA9PSBOVUxMKQotLQkJCQl0bXAgPSByb290ID0gcDsKLS0JCQllbHNlIHsKLS0JCQkJdG1wLT5mdHNfbGluayA9IHA7Ci0tCQkJCXRtcCA9IHA7Ci0tCQkJfQotLQkJfQotLQl9Ci0tCWlmIChjb21wYXIgJiYgbml0ZW1zID4gMSkKLS0JCXJvb3QgPSBmdHNfc29ydChzcCwgcm9vdCwgbml0ZW1zKTsKLS0KLS0JLyoKLS0JICogQWxsb2NhdGUgYSBkdW1teSBwb2ludGVyIGFuZCBtYWtlIGZ0c19yZWFkIHRoaW5rIHRoYXQgd2UndmUganVzdAotLQkgKiBmaW5pc2hlZCB0aGUgbm9kZSBiZWZvcmUgdGhlIHJvb3Qocyk7IHNldCBwLT5mdHNfaW5mbyB0byBGVFNfSU5JVAotLQkgKiBzbyB0aGF0IGV2ZXJ5dGhpbmcgYWJvdXQgdGhlICJjdXJyZW50IiBub2RlIGlzIGlnbm9yZWQuCi0tCSAqLwotLQlpZiAoKHNwLT5mdHNfY3VyID0gZnRzX2FsbG9jKHNwLCAiIiwgMCkpID09IE5VTEwpCi0tCQlnb3RvIG1lbTM7Ci0tCXNwLT5mdHNfY3VyLT5mdHNfbGluayA9IHJvb3Q7Ci0tCXNwLT5mdHNfY3VyLT5mdHNfaW5mbyA9IEZUU19JTklUOwotLQotLQkvKgotLQkgKiBJZiB1c2luZyBjaGRpcigyKSwgZ3JhYiBhIGZpbGUgZGVzY3JpcHRvciBwb2ludGluZyB0byBkb3QgdG8gZW5zdXJlCi0tCSAqIHRoYXQgd2UgY2FuIGdldCBiYWNrIGhlcmU7IHRoaXMgY291bGQgYmUgYXZvaWRlZCBmb3Igc29tZSBwYXRocywKLS0JICogYnV0IGFsbW9zdCBjZXJ0YWlubHkgbm90IHdvcnRoIHRoZSBlZmZvcnQuICBTbGFzaGVzLCBzeW1ib2xpYyBsaW5rcywKLS0JICogYW5kICIuLiIgYXJlIGFsbCBmYWlybHkgbmFzdHkgcHJvYmxlbXMuICBOb3RlLCBpZiB3ZSBjYW4ndCBnZXQgdGhlCi0tCSAqIGRlc2NyaXB0b3Igd2UgcnVuIGFueXdheSwganVzdCBtb3JlIHNsb3dseS4KLS0JICovCi0tCWlmICghSVNTRVQoRlRTX05PQ0hESVIpCi0tCSAgICAmJiAoc3AtPmZ0c19yZmQgPSBvcGVuKCIuIiwgT19SRE9OTFksIDApKSA8IDApCi0tCQlTRVQoRlRTX05PQ0hESVIpOwotLQotLQlyZXR1cm4gKHNwKTsKLS0KLS1tZW0zOglmdHNfbGZyZWUocm9vdCk7Ci0tCWZyZWUocGFyZW50KTsKLS1tZW0yOglmcmVlKHNwLT5mdHNfcGF0aCk7Ci0tbWVtMToJZnJlZShzcCk7Ci0tCXJldHVybiAoTlVMTCk7Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tZnRzX2xvYWQoc3AsIHApCi0tCUZUUyAqc3A7Ci0tCXJlZ2lzdGVyIEZUU0VOVCAqcDsKLS17Ci0tCXJlZ2lzdGVyIGludCBsZW47Ci0tCXJlZ2lzdGVyIGNoYXIgKmNwOwotLQotLQkvKgotLQkgKiBMb2FkIHRoZSBzdHJlYW0gc3RydWN0dXJlIGZvciB0aGUgbmV4dCB0cmF2ZXJzYWwuICBTaW5jZSB3ZSBkb24ndAotLQkgKiBhY3R1YWxseSBlbnRlciB0aGUgZGlyZWN0b3J5IHVudGlsIGFmdGVyIHRoZSBwcmVvcmRlciB2aXNpdCwgc2V0Ci0tCSAqIHRoZSBmdHNfYWNjcGF0aCBmaWVsZCBzcGVjaWFsbHkgc28gdGhlIGNoZGlyIGdldHMgZG9uZSB0byB0aGUgcmlnaHQKLS0JICogcGxhY2UgYW5kIHRoZSB1c2VyIGNhbiBhY2Nlc3MgdGhlIGZpcnN0IG5vZGUuICBGcm9tIGZ0c19vcGVuIGl0J3MKLS0JICoga25vd24gdGhhdCB0aGUgcGF0aCB3aWxsIGZpdC4KLS0JICovCi0tCWxlbiA9IHAtPmZ0c19wYXRobGVuID0gcC0+ZnRzX25hbWVsZW47Ci0tCW1lbW1vdmUoc3AtPmZ0c19wYXRoLCBwLT5mdHNfbmFtZSwgbGVuICsgMSk7Ci0tCWlmICgoY3AgPSBzdHJyY2hyKHAtPmZ0c19uYW1lLCAnLycpKSAmJiAoY3AgIT0gcC0+ZnRzX25hbWUgfHwgY3BbMV0pKSB7Ci0tCQlsZW4gPSBzdHJsZW4oKytjcCk7Ci0tCQltZW1tb3ZlKHAtPmZ0c19uYW1lLCBjcCwgbGVuICsgMSk7Ci0tCQlwLT5mdHNfbmFtZWxlbiA9IGxlbjsKLS0JfQotLQlwLT5mdHNfYWNjcGF0aCA9IHAtPmZ0c19wYXRoID0gc3AtPmZ0c19wYXRoOwotLQlzcC0+ZnRzX2RldiA9IHAtPmZ0c19kZXY7Ci0tfQotLQotLWludAotLWZ0c19jbG9zZShzcCkKLS0JRlRTICpzcDsKLS17Ci0tCXJlZ2lzdGVyIEZUU0VOVCAqZnJlZXAsICpwOwotLQlpbnQgc2F2ZWRfZXJybm87Ci0tCi0tCS8qCi0tCSAqIFRoaXMgc3RpbGwgd29ya3MgaWYgd2UgaGF2ZW4ndCByZWFkIGFueXRoaW5nIC0tIHRoZSBkdW1teSBzdHJ1Y3R1cmUKLS0JICogcG9pbnRzIHRvIHRoZSByb290IGxpc3QsIHNvIHdlIHN0ZXAgdGhyb3VnaCB0byB0aGUgZW5kIG9mIHRoZSByb290Ci0tCSAqIGxpc3Qgd2hpY2ggaGFzIGEgdmFsaWQgcGFyZW50IHBvaW50ZXIuCi0tCSAqLwotLQlpZiAoc3AtPmZ0c19jdXIpIHsKLS0JCWZvciAocCA9IHNwLT5mdHNfY3VyOyBwLT5mdHNfbGV2ZWwgPj0gRlRTX1JPT1RMRVZFTDspIHsKLS0JCQlmcmVlcCA9IHA7Ci0tCQkJcCA9IHAtPmZ0c19saW5rICE9IE5VTEwgPyBwLT5mdHNfbGluayA6IHAtPmZ0c19wYXJlbnQ7Ci0tCQkJZnJlZShmcmVlcCk7Ci0tCQl9Ci0tCQlmcmVlKHApOwotLQl9Ci0tCi0tCS8qIEZyZWUgdXAgY2hpbGQgbGlua2VkIGxpc3QsIHNvcnQgYXJyYXksIHBhdGggYnVmZmVyLiAqLwotLQlpZiAoc3AtPmZ0c19jaGlsZCkKLS0JCWZ0c19sZnJlZShzcC0+ZnRzX2NoaWxkKTsKLS0JaWYgKHNwLT5mdHNfYXJyYXkpCi0tCQlmcmVlKHNwLT5mdHNfYXJyYXkpOwotLQlmcmVlKHNwLT5mdHNfcGF0aCk7Ci0tCi0tCS8qIFJldHVybiB0byBvcmlnaW5hbCBkaXJlY3RvcnksIHNhdmUgZXJybm8gaWYgbmVjZXNzYXJ5LiAqLwotLQlpZiAoIUlTU0VUKEZUU19OT0NIRElSKSkgewotLQkJc2F2ZWRfZXJybm8gPSBmY2hkaXIoc3AtPmZ0c19yZmQpID8gZXJybm8gOiAwOwotLQkJKHZvaWQpY2xvc2Uoc3AtPmZ0c19yZmQpOwotLQotLQkJLyogU2V0IGVycm5vIGFuZCByZXR1cm4uICovCi0tCQlpZiAoc2F2ZWRfZXJybm8gIT0gMCkgewotLQkJCS8qIEZyZWUgdXAgdGhlIHN0cmVhbSBwb2ludGVyLiAqLwotLQkJCWZyZWUoc3ApOwotLQkJCWVycm5vID0gc2F2ZWRfZXJybm87Ci0tCQkJcmV0dXJuICgtMSk7Ci0tCQl9Ci0tCX0KLS0KLS0JLyogRnJlZSB1cCB0aGUgc3RyZWFtIHBvaW50ZXIuICovCi0tCWZyZWUoc3ApOwotLQlyZXR1cm4gKDApOwotLX0KLS0KLS0vKgotLSAqIFNwZWNpYWwgY2FzZSBvZiAiLyIgYXQgdGhlIGVuZCBvZiB0aGUgcGF0aCBzbyB0aGF0IHNsYXNoZXMgYXJlbid0Ci0tICogYXBwZW5kZWQgd2hpY2ggd291bGQgY2F1c2UgcGF0aHMgdG8gYmUgd3JpdHRlbiBhcyAiLi4uLi8vZm9vIi4KLS0gKi8KLS0jZGVmaW5lCU5BUFBFTkQocCkJCQkJCQkJXAotLQkocC0+ZnRzX3BhdGhbcC0+ZnRzX3BhdGhsZW4gLSAxXSA9PSAnLycJCQkJXAotLQkgICAgPyBwLT5mdHNfcGF0aGxlbiAtIDEgOiBwLT5mdHNfcGF0aGxlbikKLS0KLS1GVFNFTlQgKgotLWZ0c19yZWFkKHNwKQotLQlyZWdpc3RlciBGVFMgKnNwOwotLXsKLS0JcmVnaXN0ZXIgRlRTRU5UICpwLCAqdG1wOwotLQlyZWdpc3RlciBpbnQgaW5zdHI7Ci0tCXJlZ2lzdGVyIGNoYXIgKnQ7Ci0tCWludCBzYXZlZF9lcnJubzsKLS0KLS0JLyogSWYgZmluaXNoZWQgb3IgdW5yZWNvdmVyYWJsZSBlcnJvciwgcmV0dXJuIE5VTEwuICovCi0tCWlmIChzcC0+ZnRzX2N1ciA9PSBOVUxMIHx8IElTU0VUKEZUU19TVE9QKSkKLS0JCXJldHVybiAoTlVMTCk7Ci0tCi0tCS8qIFNldCBjdXJyZW50IG5vZGUgcG9pbnRlci4gKi8KLS0JcCA9IHNwLT5mdHNfY3VyOwotLQotLQkvKiBTYXZlIGFuZCB6ZXJvIG91dCB1c2VyIGluc3RydWN0aW9ucy4gKi8KLS0JaW5zdHIgPSBwLT5mdHNfaW5zdHI7Ci0tCXAtPmZ0c19pbnN0ciA9IEZUU19OT0lOU1RSOwotLQotLQkvKiBBbnkgdHlwZSBvZiBmaWxlIG1heSBiZSByZS12aXNpdGVkOyByZS1zdGF0IGFuZCByZS10dXJuLiAqLwotLQlpZiAoaW5zdHIgPT0gRlRTX0FHQUlOKSB7Ci0tCQlwLT5mdHNfaW5mbyA9IGZ0c19zdGF0KHNwLCBwLCAwKTsKLS0JCXJldHVybiAocCk7Ci0tCX0KLS0KLS0JLyoKLS0JICogRm9sbG93aW5nIGEgc3ltbGluayAtLSBTTE5PTkUgdGVzdCBhbGxvd3MgYXBwbGljYXRpb24gdG8gc2VlCi0tCSAqIFNMTk9ORSBhbmQgcmVjb3Zlci4gIElmIGluZGlyZWN0aW5nIHRocm91Z2ggYSBzeW1saW5rLCBoYXZlCi0tCSAqIGtlZXAgYSBwb2ludGVyIHRvIGN1cnJlbnQgbG9jYXRpb24uICBJZiB1bmFibGUgdG8gZ2V0IHRoYXQKLS0JICogcG9pbnRlciwgZm9sbG93IGZhaWxzLgotLQkgKi8KLS0JaWYgKGluc3RyID09IEZUU19GT0xMT1cgJiYKLS0JICAgIChwLT5mdHNfaW5mbyA9PSBGVFNfU0wgfHwgcC0+ZnRzX2luZm8gPT0gRlRTX1NMTk9ORSkpIHsKLS0JCXAtPmZ0c19pbmZvID0gZnRzX3N0YXQoc3AsIHAsIDEpOwotLQkJaWYgKHAtPmZ0c19pbmZvID09IEZUU19EICYmICFJU1NFVChGVFNfTk9DSERJUikpIHsKLS0JCQlpZiAoKHAtPmZ0c19zeW1mZCA9IG9wZW4oIi4iLCBPX1JET05MWSwgMCkpIDwgMCkgewotLQkJCQlwLT5mdHNfZXJybm8gPSBlcnJubzsKLS0JCQkJcC0+ZnRzX2luZm8gPSBGVFNfRVJSOwotLQkJCX0gZWxzZQotLQkJCQlwLT5mdHNfZmxhZ3MgfD0gRlRTX1NZTUZPTExPVzsKLS0JCX0KLS0JCXJldHVybiAocCk7Ci0tCX0KLS0KLS0JLyogRGlyZWN0b3J5IGluIHByZS1vcmRlci4gKi8KLS0JaWYgKHAtPmZ0c19pbmZvID09IEZUU19EKSB7Ci0tCQkvKiBJZiBza2lwcGVkIG9yIGNyb3NzZWQgbW91bnQgcG9pbnQsIGRvIHBvc3Qtb3JkZXIgdmlzaXQuICovCi0tCQlpZiAoaW5zdHIgPT0gRlRTX1NLSVAgfHwKLS0JCSAgICAoSVNTRVQoRlRTX1hERVYpICYmIHAtPmZ0c19kZXYgIT0gc3AtPmZ0c19kZXYpKSB7Ci0tCQkJaWYgKHAtPmZ0c19mbGFncyAmIEZUU19TWU1GT0xMT1cpCi0tCQkJCSh2b2lkKWNsb3NlKHAtPmZ0c19zeW1mZCk7Ci0tCQkJaWYgKHNwLT5mdHNfY2hpbGQpIHsKLS0JCQkJZnRzX2xmcmVlKHNwLT5mdHNfY2hpbGQpOwotLQkJCQlzcC0+ZnRzX2NoaWxkID0gTlVMTDsKLS0JCQl9Ci0tCQkJcC0+ZnRzX2luZm8gPSBGVFNfRFA7Ci0tCQkJcmV0dXJuIChwKTsKLS0JCX0KLS0KLS0JCS8qIFJlYnVpbGQgaWYgb25seSByZWFkIHRoZSBuYW1lcyBhbmQgbm93IHRyYXZlcnNpbmcuICovCi0tCQlpZiAoc3AtPmZ0c19jaGlsZCAhPSBOVUxMICYmIElTU0VUKEZUU19OQU1FT05MWSkpIHsKLS0JCQlDTFIoRlRTX05BTUVPTkxZKTsKLS0JCQlmdHNfbGZyZWUoc3AtPmZ0c19jaGlsZCk7Ci0tCQkJc3AtPmZ0c19jaGlsZCA9IE5VTEw7Ci0tCQl9Ci0tCi0tCQkvKgotLQkJICogQ2QgdG8gdGhlIHN1YmRpcmVjdG9yeS4KLS0JCSAqCi0tCQkgKiBJZiBoYXZlIGFscmVhZHkgcmVhZCBhbmQgbm93IGZhaWwgdG8gY2hkaXIsIHdoYWNrIHRoZSBsaXN0Ci0tCQkgKiB0byBtYWtlIHRoZSBuYW1lcyBjb21lIG91dCByaWdodCwgYW5kIHNldCB0aGUgcGFyZW50IGVycm5vCi0tCQkgKiBzbyB0aGUgYXBwbGljYXRpb24gd2lsbCBldmVudHVhbGx5IGdldCBhbiBlcnJvciBjb25kaXRpb24uCi0tCQkgKiBTZXQgdGhlIEZUU19ET05UQ0hESVIgZmxhZyBzbyB0aGF0IHdoZW4gd2UgbG9naWNhbGx5IGNoYW5nZQotLQkJICogZGlyZWN0b3JpZXMgYmFjayB0byB0aGUgcGFyZW50IHdlIGRvbid0IGRvIGEgY2hkaXIuCi0tCQkgKgotLQkJICogSWYgaGF2ZW4ndCByZWFkIGRvIHNvLiAgSWYgdGhlIHJlYWQgZmFpbHMsIGZ0c19idWlsZCBzZXRzCi0tCQkgKiBGVFNfU1RPUCBvciB0aGUgZnRzX2luZm8gZmllbGQgb2YgdGhlIG5vZGUuCi0tCQkgKi8KLS0JCWlmIChzcC0+ZnRzX2NoaWxkICE9IE5VTEwpIHsKLS0JCQlpZiAoZnRzX3NhZmVfY2hhbmdlZGlyKHNwLCBwLCAtMSwgcC0+ZnRzX2FjY3BhdGgpKSB7Ci0tCQkJCXAtPmZ0c19lcnJubyA9IGVycm5vOwotLQkJCQlwLT5mdHNfZmxhZ3MgfD0gRlRTX0RPTlRDSERJUjsKLS0JCQkJZm9yIChwID0gc3AtPmZ0c19jaGlsZDsgcCAhPSBOVUxMOwotLQkJCQkgICAgIHAgPSBwLT5mdHNfbGluaykKLS0JCQkJCXAtPmZ0c19hY2NwYXRoID0KLS0JCQkJCSAgICBwLT5mdHNfcGFyZW50LT5mdHNfYWNjcGF0aDsKLS0JCQl9Ci0tCQl9IGVsc2UgaWYgKChzcC0+ZnRzX2NoaWxkID0gZnRzX2J1aWxkKHNwLCBCUkVBRCkpID09IE5VTEwpIHsKLS0JCQlpZiAoSVNTRVQoRlRTX1NUT1ApKQotLQkJCQlyZXR1cm4gKE5VTEwpOwotLQkJCXJldHVybiAocCk7Ci0tCQl9Ci0tCQlwID0gc3AtPmZ0c19jaGlsZDsKLS0JCXNwLT5mdHNfY2hpbGQgPSBOVUxMOwotLQkJZ290byBuYW1lOwotLQl9Ci0tCi0tCS8qIE1vdmUgdG8gdGhlIG5leHQgbm9kZSBvbiB0aGlzIGxldmVsLiAqLwotLW5leHQ6CXRtcCA9IHA7Ci0tCWlmICgocCA9IHAtPmZ0c19saW5rKSAhPSBOVUxMKSB7Ci0tCQlmcmVlKHRtcCk7Ci0tCi0tCQkvKgotLQkJICogSWYgcmVhY2hlZCB0aGUgdG9wLCByZXR1cm4gdG8gdGhlIG9yaWdpbmFsIGRpcmVjdG9yeSAob3IKLS0JCSAqIHRoZSByb290IG9mIHRoZSB0cmVlKSwgYW5kIGxvYWQgdGhlIHBhdGhzIGZvciB0aGUgbmV4dCByb290LgotLQkJICovCi0tCQlpZiAocC0+ZnRzX2xldmVsID09IEZUU19ST09UTEVWRUwpIHsKLS0JCQlpZiAoRkNIRElSKHNwLCBzcC0+ZnRzX3JmZCkpIHsKLS0JCQkJU0VUKEZUU19TVE9QKTsKLS0JCQkJcmV0dXJuIChOVUxMKTsKLS0JCQl9Ci0tCQkJZnRzX2xvYWQoc3AsIHApOwotLQkJCXJldHVybiAoc3AtPmZ0c19jdXIgPSBwKTsKLS0JCX0KLS0KLS0JCS8qCi0tCQkgKiBVc2VyIG1heSBoYXZlIGNhbGxlZCBmdHNfc2V0IG9uIHRoZSBub2RlLiAgSWYgc2tpcHBlZCwKLS0JCSAqIGlnbm9yZS4gIElmIGZvbGxvd2VkLCBnZXQgYSBmaWxlIGRlc2NyaXB0b3Igc28gd2UgY2FuCi0tCQkgKiBnZXQgYmFjayBpZiBuZWNlc3NhcnkuCi0tCQkgKi8KLS0JCWlmIChwLT5mdHNfaW5zdHIgPT0gRlRTX1NLSVApCi0tCQkJZ290byBuZXh0OwotLQkJaWYgKHAtPmZ0c19pbnN0ciA9PSBGVFNfRk9MTE9XKSB7Ci0tCQkJcC0+ZnRzX2luZm8gPSBmdHNfc3RhdChzcCwgcCwgMSk7Ci0tCQkJaWYgKHAtPmZ0c19pbmZvID09IEZUU19EICYmICFJU1NFVChGVFNfTk9DSERJUikpIHsKLS0JCQkJaWYgKChwLT5mdHNfc3ltZmQgPQotLQkJCQkgICAgb3BlbigiLiIsIE9fUkRPTkxZLCAwKSkgPCAwKSB7Ci0tCQkJCQlwLT5mdHNfZXJybm8gPSBlcnJubzsKLS0JCQkJCXAtPmZ0c19pbmZvID0gRlRTX0VSUjsKLS0JCQkJfSBlbHNlCi0tCQkJCQlwLT5mdHNfZmxhZ3MgfD0gRlRTX1NZTUZPTExPVzsKLS0JCQl9Ci0tCQkJcC0+ZnRzX2luc3RyID0gRlRTX05PSU5TVFI7Ci0tCQl9Ci0tCi0tbmFtZToJCXQgPSBzcC0+ZnRzX3BhdGggKyBOQVBQRU5EKHAtPmZ0c19wYXJlbnQpOwotLQkJKnQrKyA9ICcvJzsKLS0JCW1lbW1vdmUodCwgcC0+ZnRzX25hbWUsIHAtPmZ0c19uYW1lbGVuICsgMSk7Ci0tCQlyZXR1cm4gKHNwLT5mdHNfY3VyID0gcCk7Ci0tCX0KLS0KLS0JLyogTW92ZSB1cCB0byB0aGUgcGFyZW50IG5vZGUuICovCi0tCXAgPSB0bXAtPmZ0c19wYXJlbnQ7Ci0tCWZyZWUodG1wKTsKLS0KLS0JaWYgKHAtPmZ0c19sZXZlbCA9PSBGVFNfUk9PVFBBUkVOVExFVkVMKSB7Ci0tCQkvKgotLQkJICogRG9uZTsgZnJlZSBldmVyeXRoaW5nIHVwIGFuZCBzZXQgZXJybm8gdG8gMCBzbyB0aGUgdXNlcgotLQkJICogY2FuIGRpc3Rpbmd1aXNoIGJldHdlZW4gZXJyb3IgYW5kIEVPRi4KLS0JCSAqLwotLQkJZnJlZShwKTsKLS0JCWVycm5vID0gMDsKLS0JCXJldHVybiAoc3AtPmZ0c19jdXIgPSBOVUxMKTsKLS0JfQotLQotLQkvKiBOVUwgdGVybWluYXRlIHRoZSBwYXRobmFtZS4gKi8KLS0Jc3AtPmZ0c19wYXRoW3AtPmZ0c19wYXRobGVuXSA9ICdcMCc7Ci0tCi0tCS8qCi0tCSAqIFJldHVybiB0byB0aGUgcGFyZW50IGRpcmVjdG9yeS4gIElmIGF0IGEgcm9vdCBub2RlIG9yIGNhbWUgdGhyb3VnaAotLQkgKiBhIHN5bWxpbmssIGdvIGJhY2sgdGhyb3VnaCB0aGUgZmlsZSBkZXNjcmlwdG9yLiAgT3RoZXJ3aXNlLCBjZCB1cAotLQkgKiBvbmUgZGlyZWN0b3J5LgotLQkgKi8KLS0JaWYgKHAtPmZ0c19sZXZlbCA9PSBGVFNfUk9PVExFVkVMKSB7Ci0tCQlpZiAoRkNIRElSKHNwLCBzcC0+ZnRzX3JmZCkpIHsKLS0JCQlTRVQoRlRTX1NUT1ApOwotLQkJCXJldHVybiAoTlVMTCk7Ci0tCQl9Ci0tCX0gZWxzZSBpZiAocC0+ZnRzX2ZsYWdzICYgRlRTX1NZTUZPTExPVykgewotLQkJaWYgKEZDSERJUihzcCwgcC0+ZnRzX3N5bWZkKSkgewotLQkJCXNhdmVkX2Vycm5vID0gZXJybm87Ci0tCQkJKHZvaWQpY2xvc2UocC0+ZnRzX3N5bWZkKTsKLS0JCQllcnJubyA9IHNhdmVkX2Vycm5vOwotLQkJCVNFVChGVFNfU1RPUCk7Ci0tCQkJcmV0dXJuIChOVUxMKTsKLS0JCX0KLS0JCSh2b2lkKWNsb3NlKHAtPmZ0c19zeW1mZCk7Ci0tCX0gZWxzZSBpZiAoIShwLT5mdHNfZmxhZ3MgJiBGVFNfRE9OVENIRElSKSAmJgotLQkJICAgZnRzX3NhZmVfY2hhbmdlZGlyKHNwLCBwLT5mdHNfcGFyZW50LCAtMSwgIi4uIikpIHsKLS0JCVNFVChGVFNfU1RPUCk7Ci0tCQlyZXR1cm4gKE5VTEwpOwotLQl9Ci0tCXAtPmZ0c19pbmZvID0gcC0+ZnRzX2Vycm5vID8gRlRTX0VSUiA6IEZUU19EUDsKLS0JcmV0dXJuIChzcC0+ZnRzX2N1ciA9IHApOwotLX0KLS0KLS0vKgotLSAqIEZ0c19zZXQgdGFrZXMgdGhlIHN0cmVhbSBhcyBhbiBhcmd1bWVudCBhbHRob3VnaCBpdCdzIG5vdCB1c2VkIGluIHRoaXMKLS0gKiBpbXBsZW1lbnRhdGlvbjsgaXQgd291bGQgYmUgbmVjZXNzYXJ5IGlmIGFueW9uZSB3YW50ZWQgdG8gYWRkIGdsb2JhbAotLSAqIHNlbWFudGljcyB0byBmdHMgdXNpbmcgZnRzX3NldC4gIEFuIGVycm9yIHJldHVybiBpcyBhbGxvd2VkIGZvciBzaW1pbGFyCi0tICogcmVhc29ucy4KLS0gKi8KLS0vKiBBUkdTVVNFRCAqLwotLWludAotLWZ0c19zZXQoc3AsIHAsIGluc3RyKQotLQlGVFMgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpICpzcDsKLS0JRlRTRU5UICpwOwotLQlpbnQgaW5zdHI7Ci0tewotLXNwID0gTlVMTDsJLyogc3RvcCBjb21waWxlciB3aGluZ2luZyAqLwotLQlpZiAoaW5zdHIgIT0gMCAmJiBpbnN0ciAhPSBGVFNfQUdBSU4gJiYgaW5zdHIgIT0gRlRTX0ZPTExPVyAmJgotLQkgICAgaW5zdHIgIT0gRlRTX05PSU5TVFIgJiYgaW5zdHIgIT0gRlRTX1NLSVApIHsKLS0JCWVycm5vID0gRUlOVkFMOwotLQkJcmV0dXJuICgxKTsKLS0JfQotLQlwLT5mdHNfaW5zdHIgPSBpbnN0cjsKLS0JcmV0dXJuICgwKTsKLS19Ci0tCi0tLyoKLS0gKiBUaGlzIGlzIHRoZSB0cmlja3kgcGFydCAtLSBkbyBub3QgY2FzdWFsbHkgY2hhbmdlICphbnl0aGluZyogaW4gaGVyZS4gIFRoZQotLSAqIGlkZWEgaXMgdG8gYnVpbGQgdGhlIGxpbmtlZCBsaXN0IG9mIGVudHJpZXMgdGhhdCBhcmUgdXNlZCBieSBmdHNfY2hpbGRyZW4KLS0gKiBhbmQgZnRzX3JlYWQuICBUaGVyZSBhcmUgbG90cyBvZiBzcGVjaWFsIGNhc2VzLgotLSAqCi0tICogVGhlIHJlYWwgc2xvd2Rvd24gaW4gd2Fsa2luZyB0aGUgdHJlZSBpcyB0aGUgc3RhdCBjYWxscy4gIElmIEZUU19OT1NUQVQgaXMKLS0gKiBzZXQgYW5kIGl0J3MgYSBwaHlzaWNhbCB3YWxrIChzbyB0aGF0IHN5bWJvbGljIGxpbmtzIGNhbid0IGJlIGRpcmVjdG9yaWVzKSwKLS0gKiB3ZSBjYW4gZG8gdGhpbmdzIHF1aWNrbHkuICBGaXJzdCwgaWYgaXQncyBhIDQuNEJTRCBmaWxlIHN5c3RlbSwgdGhlIHR5cGUKLS0gKiBvZiB0aGUgZmlsZSBpcyBpbiB0aGUgZGlyZWN0b3J5IGVudHJ5LiAgT3RoZXJ3aXNlLCB3ZSBhc3N1bWUgdGhhdCB0aGUgbnVtYmVyCi0tICogb2Ygc3ViZGlyZWN0b3JpZXMgaW4gYSBub2RlIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgbGlua3MgdG8gdGhlIHBhcmVudC4KLS0gKiBUaGUgZm9ybWVyIHNraXBzIGFsbCBzdGF0IGNhbGxzLiAgVGhlIGxhdHRlciBza2lwcyBzdGF0IGNhbGxzIGluIGFueSBsZWFmCi0tICogZGlyZWN0b3JpZXMgYW5kIGZvciBhbnkgZmlsZXMgYWZ0ZXIgdGhlIHN1YmRpcmVjdG9yaWVzIGluIHRoZSBkaXJlY3RvcnkgaGF2ZQotLSAqIGJlZW4gZm91bmQsIGN1dHRpbmcgdGhlIHN0YXQgY2FsbHMgYnkgYWJvdXQgMi8zLgotLSAqLwotLXN0YXRpYyBGVFNFTlQgKgotLWZ0c19idWlsZChzcCwgdHlwZSkKLS0JcmVnaXN0ZXIgRlRTICpzcDsKLS0JaW50IHR5cGU7Ci0tewotLQlyZWdpc3RlciBzdHJ1Y3QgZGlyZW50ICpkcDsKLS0JcmVnaXN0ZXIgRlRTRU5UICpwLCAqaGVhZDsKLS0JcmVnaXN0ZXIgaW50IG5pdGVtczsKLS0JRlRTRU5UICpjdXIsICp0YWlsOwotLQlESVIgKmRpcnA7Ci0tCXZvaWQgKm9sZGFkZHI7Ci0tCWludCBjZGVycm5vLCBkZXNjZW5kLCBsZW4sIGxldmVsLCBubGlua3MsIHNhdmVkX2Vycm5vLAotLQkgICAgbm9zdGF0LCBkb2FkanVzdDsKLS0Jc2l6ZV90IG1heGxlbjsKLS0JY2hhciAqY3A7Ci0tCi0tCS8qIFNldCBjdXJyZW50IG5vZGUgcG9pbnRlci4gKi8KLS0JY3VyID0gc3AtPmZ0c19jdXI7Ci0tCi0tCS8qCi0tCSAqIE9wZW4gdGhlIGRpcmVjdG9yeSBmb3IgcmVhZGluZy4gIElmIHRoaXMgZmFpbHMsIHdlJ3JlIGRvbmUuCi0tCSAqIElmIGJlaW5nIGNhbGxlZCBmcm9tIGZ0c19yZWFkLCBzZXQgdGhlIGZ0c19pbmZvIGZpZWxkLgotLQkgKi8KLS0gICAgICAgaWYgKChkaXJwID0gb3BlbmRpcihjdXItPmZ0c19hY2NwYXRoKSkgPT0gTlVMTCkgewotLQkJaWYgKHR5cGUgPT0gQlJFQUQpIHsKLS0JCQljdXItPmZ0c19pbmZvID0gRlRTX0ROUjsKLS0JCQljdXItPmZ0c19lcnJubyA9IGVycm5vOwotLQkJfQotLQkJcmV0dXJuIChOVUxMKTsKLS0JfQotLQotLQkvKgotLQkgKiBObGlua3MgaXMgdGhlIG51bWJlciBvZiBwb3NzaWJsZSBlbnRyaWVzIG9mIHR5cGUgZGlyZWN0b3J5IGluIHRoZQotLQkgKiBkaXJlY3RvcnkgaWYgd2UncmUgY2hlYXRpbmcgb24gc3RhdCBjYWxscywgMCBpZiB3ZSdyZSBub3QgZG9pbmcKLS0JICogYW55IHN0YXQgY2FsbHMgYXQgYWxsLCAtMSBpZiB3ZSdyZSBkb2luZyBzdGF0cyBvbiBldmVyeXRoaW5nLgotLQkgKi8KLS0JbmxpbmtzID0gLTE7Ci0tCW5vc3RhdCA9IDA7Ci0tCi0tCS8qCi0tCSAqIElmIHdlJ3JlIGdvaW5nIHRvIG5lZWQgdG8gc3RhdCBhbnl0aGluZyBvciB3ZSB3YW50IHRvIGRlc2NlbmQKLS0JICogYW5kIHN0YXkgaW4gdGhlIGRpcmVjdG9yeSwgY2hkaXIuICBJZiB0aGlzIGZhaWxzIHdlIGtlZXAgZ29pbmcsCi0tCSAqIGJ1dCBzZXQgYSBmbGFnIHNvIHdlIGRvbid0IGNoZGlyIGFmdGVyIHRoZSBwb3N0LW9yZGVyIHZpc2l0LgotLQkgKiBXZSB3b24ndCBiZSBhYmxlIHRvIHN0YXQgYW55dGhpbmcsIGJ1dCB3ZSBjYW4gc3RpbGwgcmV0dXJuIHRoZQotLQkgKiBuYW1lcyB0aGVtc2VsdmVzLiAgTm90ZSwgdGhhdCBzaW5jZSBmdHNfcmVhZCB3b24ndCBiZSBhYmxlIHRvCi0tCSAqIGNoZGlyIGludG8gdGhlIGRpcmVjdG9yeSwgaXQgd2lsbCBoYXZlIHRvIHJldHVybiBkaWZmZXJlbnQgcGF0aAotLQkgKiBuYW1lcyB0aGFuIGJlZm9yZSwgaS5lLiAiYS9iIiBpbnN0ZWFkIG9mICJiIi4gIFNpbmNlIHRoZSBub2RlCi0tCSAqIGhhcyBhbHJlYWR5IGJlZW4gdmlzaXRlZCBpbiBwcmUtb3JkZXIsIGhhdmUgdG8gd2FpdCB1bnRpbCB0aGUKLS0JICogcG9zdC1vcmRlciB2aXNpdCB0byByZXR1cm4gdGhlIGVycm9yLiAgVGhlcmUgaXMgYSBzcGVjaWFsIGNhc2UKLS0JICogaGVyZSwgaWYgdGhlcmUgd2FzIG5vdGhpbmcgdG8gc3RhdCB0aGVuIGl0J3Mgbm90IGFuIGVycm9yIHRvCi0tCSAqIG5vdCBiZSBhYmxlIHRvIHN0YXQuICBUaGlzIGlzIGFsbCBmYWlybHkgbmFzdHkuICBJZiBhIHByb2dyYW0KLS0JICogbmVlZGVkIHNvcnRlZCBlbnRyaWVzIG9yIHN0YXQgaW5mb3JtYXRpb24sIHRoZXkgaGFkIGJldHRlciBiZQotLQkgKiBjaGVja2luZyBGVFNfTlMgb24gdGhlIHJldHVybmVkIG5vZGVzLgotLQkgKi8KLS0JY2RlcnJubyA9IDA7Ci0tCWlmIChubGlua3MgfHwgdHlwZSA9PSBCUkVBRCkgewotLQkJaWYgKGZ0c19zYWZlX2NoYW5nZWRpcihzcCwgY3VyLCBkaXJmZChkaXJwKSwgTlVMTCkpIHsKLS0JCQlpZiAobmxpbmtzICYmIHR5cGUgPT0gQlJFQUQpCi0tCQkJCWN1ci0+ZnRzX2Vycm5vID0gZXJybm87Ci0tCQkJY3VyLT5mdHNfZmxhZ3MgfD0gRlRTX0RPTlRDSERJUjsKLS0JCQlkZXNjZW5kID0gMDsKLS0JCQljZGVycm5vID0gZXJybm87Ci0tCQkJKHZvaWQpY2xvc2VkaXIoZGlycCk7Ci0tCQkJZGlycCA9IE5VTEw7Ci0tCQl9IGVsc2UKLS0JCQlkZXNjZW5kID0gMTsKLS0JfSBlbHNlCi0tCQlkZXNjZW5kID0gMDsKLS0KLS0JLyoKLS0JICogRmlndXJlIG91dCB0aGUgbWF4IGZpbGUgbmFtZSBsZW5ndGggdGhhdCBjYW4gYmUgc3RvcmVkIGluIHRoZQotLQkgKiBjdXJyZW50IHBhdGggLS0gdGhlIGlubmVyIGxvb3AgYWxsb2NhdGVzIG1vcmUgcGF0aCBhcyBuZWNlc3NhcnkuCi0tCSAqIFdlIHJlYWxseSB3b3VsZG4ndCBoYXZlIHRvIGRvIHRoZSBtYXhsZW4gY2FsY3VsYXRpb25zIGhlcmUsIHdlCi0tCSAqIGNvdWxkIGRvIHRoZW0gaW4gZnRzX3JlYWQgYmVmb3JlIHJldHVybmluZyB0aGUgcGF0aCwgYnV0IGl0J3MgYQotLQkgKiBsb3QgZWFzaWVyIGhlcmUgc2luY2UgdGhlIGxlbmd0aCBpcyBwYXJ0IG9mIHRoZSBkaXJlbnQgc3RydWN0dXJlLgotLQkgKgotLQkgKiBJZiBub3QgY2hhbmdpbmcgZGlyZWN0b3JpZXMgc2V0IGEgcG9pbnRlciBzbyB0aGF0IGNhbiBqdXN0IGFwcGVuZAotLQkgKiBlYWNoIG5ldyBuYW1lIGludG8gdGhlIHBhdGguCi0tCSAqLwotLQlsZW4gPSBOQVBQRU5EKGN1cik7Ci0tCWlmIChJU1NFVChGVFNfTk9DSERJUikpIHsKLS0JCWNwID0gc3AtPmZ0c19wYXRoICsgbGVuOwotLQkJKmNwKysgPSAnLyc7Ci0tCX0gZWxzZSB7Ci0tCQkvKiBHQ0MsIHlvdSdyZSB0b28gdmVyYm9zZS4gKi8KLS0JCWNwID0gTlVMTDsKLS0JfQotLQlsZW4rKzsKLS0JbWF4bGVuID0gc3AtPmZ0c19wYXRobGVuIC0gbGVuOwotLQotLQlsZXZlbCA9IGN1ci0+ZnRzX2xldmVsICsgMTsKLS0KLS0JLyogUmVhZCB0aGUgZGlyZWN0b3J5LCBhdHRhY2hpbmcgZWFjaCBlbnRyeSB0byB0aGUgYGxpbmsnIHBvaW50ZXIuICovCi0tCWRvYWRqdXN0ID0gMDsKLS0JZm9yIChoZWFkID0gdGFpbCA9IE5VTEwsIG5pdGVtcyA9IDA7IGRpcnAgJiYgKGRwID0gcmVhZGRpcihkaXJwKSk7KSB7Ci0tCQlpZiAoIUlTU0VUKEZUU19TRUVET1QpICYmIElTRE9UKGRwLT5kX25hbWUpKQotLQkJCWNvbnRpbnVlOwotLQotLQkJaWYgKChwID0gZnRzX2FsbG9jKHNwLCBkcC0+ZF9uYW1lLCAoaW50KV9EX0VYQUNUX05BTUxFTiAoZHApKSkgPT0gTlVMTCkKLS0JCQlnb3RvIG1lbTE7Ci0tCQlpZiAoX0RfRVhBQ1RfTkFNTEVOIChkcCkgPj0gbWF4bGVuKSB7LyogaW5jbHVkZSBzcGFjZSBmb3IgTlVMICovCi0tCQkJb2xkYWRkciA9IHNwLT5mdHNfcGF0aDsKLS0JCQlpZiAoZnRzX3BhbGxvYyhzcCwgX0RfRVhBQ1RfTkFNTEVOIChkcCkgKyBsZW4gKyAxKSkgewotLQkJCQkvKgotLQkJCQkgKiBObyBtb3JlIG1lbW9yeSBmb3IgcGF0aCBvciBzdHJ1Y3R1cmVzLiAgU2F2ZQotLQkJCQkgKiBlcnJubywgZnJlZSB1cCB0aGUgY3VycmVudCBzdHJ1Y3R1cmUgYW5kIHRoZQotLQkJCQkgKiBzdHJ1Y3R1cmVzIGFscmVhZHkgYWxsb2NhdGVkLgotLQkJCQkgKi8KLS1tZW0xOgkJCQlzYXZlZF9lcnJubyA9IGVycm5vOwotLQkJCQlpZiAocCkKLS0JCQkJCWZyZWUocCk7Ci0tCQkJCWZ0c19sZnJlZShoZWFkKTsKLS0JCQkJKHZvaWQpY2xvc2VkaXIoZGlycCk7Ci0tCQkJCWN1ci0+ZnRzX2luZm8gPSBGVFNfRVJSOwotLQkJCQlTRVQoRlRTX1NUT1ApOwotLQkJCQllcnJubyA9IHNhdmVkX2Vycm5vOwotLQkJCQlyZXR1cm4gKE5VTEwpOwotLQkJCX0KLS0JCQkvKiBEaWQgcmVhbGxvYygpIGNoYW5nZSB0aGUgcG9pbnRlcj8gKi8KLS0JCQlpZiAob2xkYWRkciAhPSBzcC0+ZnRzX3BhdGgpIHsKLS0JCQkJZG9hZGp1c3QgPSAxOwotLQkJCQlpZiAoSVNTRVQoRlRTX05PQ0hESVIpKQotLQkJCQkJY3AgPSBzcC0+ZnRzX3BhdGggKyBsZW47Ci0tCQkJfQotLQkJCW1heGxlbiA9IHNwLT5mdHNfcGF0aGxlbiAtIGxlbjsKLS0JCX0KLS0KLS0JCWlmIChsZW4gKyBfRF9FWEFDVF9OQU1MRU4gKGRwKSA+PSAweDEwMDAwKSB7Ci0tCQkJLyoKLS0JCQkgKiBJbiBhbiBGVFNFTlQsIGZ0c19wYXRobGVuIGlzIGEgdV9zaG9ydCBzbyBpdCBpcwotLQkJCSAqIHBvc3NpYmxlIHRvIHdyYXBhcm91bmQgaGVyZS4gIElmIHdlIGRvLCBmcmVlIHVwCi0tCQkJICogdGhlIGN1cnJlbnQgc3RydWN0dXJlIGFuZCB0aGUgc3RydWN0dXJlcyBhbHJlYWR5Ci0tCQkJICogYWxsb2NhdGVkLCB0aGVuIGVycm9yIG91dCB3aXRoIEVOQU1FVE9PTE9ORy4KLS0JCQkgKi8KLS0JCQlmcmVlKHApOwotLQkJCWZ0c19sZnJlZShoZWFkKTsKLS0JCQkodm9pZCljbG9zZWRpcihkaXJwKTsKLS0JCQljdXItPmZ0c19pbmZvID0gRlRTX0VSUjsKLS0JCQlTRVQoRlRTX1NUT1ApOwotLQkJCWVycm5vID0gRU5BTUVUT09MT05HOwotLQkJCXJldHVybiAoTlVMTCk7Ci0tCQl9Ci0tCQlwLT5mdHNfbGV2ZWwgPSBsZXZlbDsKLS0JCXAtPmZ0c19wYXJlbnQgPSBzcC0+ZnRzX2N1cjsKLS0JCXAtPmZ0c19wYXRobGVuID0gbGVuICsgX0RfRVhBQ1RfTkFNTEVOIChkcCk7Ci0tCi0tI2lmIGRlZmluZWQgRlRTX1dISVRFT1VUICYmIDAKLS0JCWlmIChkcC0+ZF90eXBlID09IERUX1dIVCkKLS0JCQlwLT5mdHNfZmxhZ3MgfD0gRlRTX0lTVzsKLS0jZW5kaWYKLS0KLS0JCWlmIChjZGVycm5vKSB7Ci0tCQkJaWYgKG5saW5rcykgewotLQkJCQlwLT5mdHNfaW5mbyA9IEZUU19OUzsKLS0JCQkJcC0+ZnRzX2Vycm5vID0gY2RlcnJubzsKLS0JCQl9IGVsc2UKLS0JCQkJcC0+ZnRzX2luZm8gPSBGVFNfTlNPSzsKLS0JCQlwLT5mdHNfYWNjcGF0aCA9IGN1ci0+ZnRzX2FjY3BhdGg7Ci0tCQl9IGVsc2UgaWYgKG5saW5rcyA9PSAwCi0tI2lmIGRlZmluZWQgRFRfRElSICYmIGRlZmluZWQgX0RJUkVOVF9IQVZFX0RfVFlQRQotLQkJCSAgIHx8IChub3N0YXQgJiYKLS0JCQkgICAgICAgZHAtPmRfdHlwZSAhPSBEVF9ESVIgJiYgZHAtPmRfdHlwZSAhPSBEVF9VTktOT1dOKQotLSNlbmRpZgotLQkJICAgICkgewotLQkJCXAtPmZ0c19hY2NwYXRoID0KLS0JCQkgICAgSVNTRVQoRlRTX05PQ0hESVIpID8gcC0+ZnRzX3BhdGggOiBwLT5mdHNfbmFtZTsKLS0JCQlwLT5mdHNfaW5mbyA9IEZUU19OU09LOwotLQkJfSBlbHNlIHsKLS0JCQkvKiBCdWlsZCBhIGZpbGUgbmFtZSBmb3IgZnRzX3N0YXQgdG8gc3RhdC4gKi8KLS0JCQlpZiAoSVNTRVQoRlRTX05PQ0hESVIpKSB7Ci0tCQkJCXAtPmZ0c19hY2NwYXRoID0gcC0+ZnRzX3BhdGg7Ci0tCQkJCW1lbW1vdmUoY3AsIHAtPmZ0c19uYW1lLCBwLT5mdHNfbmFtZWxlbiArIDEpOwotLQkJCX0gZWxzZQotLQkJCQlwLT5mdHNfYWNjcGF0aCA9IHAtPmZ0c19uYW1lOwotLQkJCS8qIFN0YXQgaXQuICovCi0tCQkJcC0+ZnRzX2luZm8gPSBmdHNfc3RhdChzcCwgcCwgMCk7Ci0tCi0tCQkJLyogRGVjcmVtZW50IGxpbmsgY291bnQgaWYgYXBwbGljYWJsZS4gKi8KLS0JCQlpZiAobmxpbmtzID4gMCAmJiAocC0+ZnRzX2luZm8gPT0gRlRTX0QgfHwKLS0JCQkgICAgcC0+ZnRzX2luZm8gPT0gRlRTX0RDIHx8IHAtPmZ0c19pbmZvID09IEZUU19ET1QpKQotLQkJCQktLW5saW5rczsKLS0JCX0KLS0KLS0JCS8qIFdlIHdhbGsgaW4gZGlyZWN0b3J5IG9yZGVyIHNvICJscyAtZiIgZG9lc24ndCBnZXQgdXBzZXQuICovCi0tCQlwLT5mdHNfbGluayA9IE5VTEw7Ci0tCQlpZiAoaGVhZCA9PSBOVUxMKQotLQkJCWhlYWQgPSB0YWlsID0gcDsKLS0JCWVsc2UgewotLQkJCXRhaWwtPmZ0c19saW5rID0gcDsKLS0JCQl0YWlsID0gcDsKLS0JCX0KLS0JCSsrbml0ZW1zOwotLQl9Ci0tCWlmIChkaXJwKQotLQkJKHZvaWQpY2xvc2VkaXIoZGlycCk7Ci0tCi0tCS8qCi0tCSAqIElmIHJlYWxsb2MoKSBjaGFuZ2VkIHRoZSBhZGRyZXNzIG9mIHRoZSBwYXRoLCBhZGp1c3QgdGhlCi0tCSAqIGFkZHJlc3NlcyBmb3IgdGhlIHJlc3Qgb2YgdGhlIHRyZWUgYW5kIHRoZSBkaXIgbGlzdC4KLS0JICovCi0tCWlmIChkb2FkanVzdCkKLS0JCWZ0c19wYWRqdXN0KHNwLCBoZWFkKTsKLS0KLS0JLyoKLS0JICogSWYgbm90IGNoYW5naW5nIGRpcmVjdG9yaWVzLCByZXNldCB0aGUgcGF0aCBiYWNrIHRvIG9yaWdpbmFsCi0tCSAqIHN0YXRlLgotLQkgKi8KLS0JaWYgKElTU0VUKEZUU19OT0NIRElSKSkgewotLQkJaWYgKGxlbiA9PSBzcC0+ZnRzX3BhdGhsZW4gfHwgbml0ZW1zID09IDApCi0tCQkJLS1jcDsKLS0JCSpjcCA9ICdcMCc7Ci0tCX0KLS0KLS0JLyoKLS0JICogSWYgZGVzY2VuZGVkIGFmdGVyIGNhbGxlZCBmcm9tIGZ0c19jaGlsZHJlbiBvciBhZnRlciBjYWxsZWQgZnJvbQotLQkgKiBmdHNfcmVhZCBhbmQgbm90aGluZyBmb3VuZCwgZ2V0IGJhY2suICBBdCB0aGUgcm9vdCBsZXZlbCB3ZSB1c2UKLS0JICogdGhlIHNhdmVkIGZkOyBpZiBvbmUgb2YgZnRzX29wZW4oKSdzIGFyZ3VtZW50cyBpcyBhIHJlbGF0aXZlIHBhdGgKLS0JICogdG8gYW4gZW1wdHkgZGlyZWN0b3J5LCB3ZSB3aW5kIHVwIGhlcmUgd2l0aCBubyBvdGhlciB3YXkgYmFjay4gIElmCi0tCSAqIGNhbid0IGdldCBiYWNrLCB3ZSdyZSBkb25lLgotLQkgKi8KLS0JaWYgKGRlc2NlbmQgJiYgbml0ZW1zID09IDAgJiYKLS0JICAgIChjdXItPmZ0c19sZXZlbCA9PSBGVFNfUk9PVExFVkVMID8KLS0JICAgICBGQ0hESVIoc3AsIHNwLT5mdHNfcmZkKSA6Ci0tCSAgICAgZnRzX3NhZmVfY2hhbmdlZGlyKHNwLCBjdXItPmZ0c19wYXJlbnQsIC0xLCAiLi4iKSkpIHsKLS0JCWN1ci0+ZnRzX2luZm8gPSBGVFNfRVJSOwotLQkJU0VUKEZUU19TVE9QKTsKLS0JCXJldHVybiAoTlVMTCk7Ci0tCX0KLS0KLS0JLyogSWYgZGlkbid0IGZpbmQgYW55dGhpbmcsIHJldHVybiBOVUxMLiAqLwotLQlpZiAoIW5pdGVtcykgewotLQkJaWYgKHR5cGUgPT0gQlJFQUQpCi0tCQkJY3VyLT5mdHNfaW5mbyA9IEZUU19EUDsKLS0JCXJldHVybiAoTlVMTCk7Ci0tCX0KLS0KLS0JLyogU29ydCB0aGUgZW50cmllcy4gKi8KLS0JaWYgKHNwLT5mdHNfY29tcGFyICYmIG5pdGVtcyA+IDEpCi0tCQloZWFkID0gZnRzX3NvcnQoc3AsIGhlYWQsIG5pdGVtcyk7Ci0tCXJldHVybiAoaGVhZCk7Ci0tfQotLQotLXN0YXRpYyB1X3Nob3J0Ci0tZnRzX3N0YXQoc3AsIHAsIGZvbGxvdykKLS0JRlRTICpzcDsKLS0JcmVnaXN0ZXIgRlRTRU5UICpwOwotLQlpbnQgZm9sbG93OwotLXsKLS0JcmVnaXN0ZXIgRlRTRU5UICp0OwotLQlyZWdpc3RlciBkZXZfdCBkZXY7Ci0tCXJlZ2lzdGVyIGlub190IGlubzsKLS0Jc3RydWN0IHN0YXQgKnNicDsKLS0JaW50IHNhdmVkX2Vycm5vOwotLQotLQkvKiBJZiB1c2VyIG5lZWRzIHN0YXQgaW5mbywgc3RhdCBidWZmZXIgYWxyZWFkeSBhbGxvY2F0ZWQuICovCi0tCXNicCA9IHAtPmZ0c19zdGF0cDsKLS0KLS0jaWYgZGVmaW5lZCBGVFNfV0hJVEVPVVQgJiYgMAotLQkvKiBjaGVjayBmb3Igd2hpdGVvdXQgKi8KLS0JaWYgKHAtPmZ0c19mbGFncyAmIEZUU19JU1cpIHsKLS0JCWlmIChzYnAgIT0gJnNiKSB7Ci0tCQkJbWVtc2V0KHNicCwgJ1wwJywgc2l6ZW9mICgqc2JwKSk7Ci0tCQkJc2JwLT5zdF9tb2RlID0gU19JRldIVDsKLS0JCX0KLS0JCXJldHVybiAoRlRTX1cpOwotLSAgICAgICB9Ci0tI2VuZGlmCi0tCi0tCS8qCi0tCSAqIElmIGRvaW5nIGEgbG9naWNhbCB3YWxrLCBvciBhcHBsaWNhdGlvbiByZXF1ZXN0ZWQgRlRTX0ZPTExPVywgZG8KLS0JICogYSBzdGF0KDIpLiAgSWYgdGhhdCBmYWlscywgY2hlY2sgZm9yIGEgbm9uLWV4aXN0ZW50IHN5bWxpbmsuICBJZgotLQkgKiBmYWlsLCBzZXQgdGhlIGVycm5vIGZyb20gdGhlIHN0YXQgY2FsbC4KLS0JICovCi0tCWlmIChJU1NFVChGVFNfTE9HSUNBTCkgfHwgZm9sbG93KSB7Ci0tCQlpZiAoc3RhdChwLT5mdHNfYWNjcGF0aCwgc2JwKSkgewotLQkJCXNhdmVkX2Vycm5vID0gZXJybm87Ci0tCQkJaWYgKCFsc3RhdChwLT5mdHNfYWNjcGF0aCwgc2JwKSkgewotLQkJCQllcnJubyA9IDA7Ci0tCQkJCXJldHVybiAoRlRTX1NMTk9ORSk7Ci0tCQkJfQotLQkJCXAtPmZ0c19lcnJubyA9IHNhdmVkX2Vycm5vOwotLQkJCWdvdG8gZXJyOwotLQkJfQotLQl9IGVsc2UgaWYgKGxzdGF0KHAtPmZ0c19hY2NwYXRoLCBzYnApKSB7Ci0tCQlwLT5mdHNfZXJybm8gPSBlcnJubzsKLS1lcnI6CQltZW1zZXQoc2JwLCAwLCBzaXplb2Yoc3RydWN0IHN0YXQpKTsKLS0JCXJldHVybiAoRlRTX05TKTsKLS0JfQotLQotLQlpZiAoU19JU0RJUihzYnAtPnN0X21vZGUpKSB7Ci0tCQkvKgotLQkJICogU2V0IHRoZSBkZXZpY2UvaW5vZGUuICBVc2VkIHRvIGZpbmQgY3ljbGVzIGFuZCBjaGVjayBmb3IKLS0JCSAqIGNyb3NzaW5nIG1vdW50IHBvaW50cy4gIEFsc28gcmVtZW1iZXIgdGhlIGxpbmsgY291bnQsIHVzZWQKLS0JCSAqIGluIGZ0c19idWlsZCB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIHN0YXQgY2FsbHMuICBJdCBpcwotLQkJICogdW5kZXJzdG9vZCB0aGF0IHRoZXNlIGZpZWxkcyBhcmUgb25seSByZWZlcmVuY2VkIGlmIGZ0c19pbmZvCi0tCQkgKiBpcyBzZXQgdG8gRlRTX0QuCi0tCQkgKi8KLS0JCWRldiA9IHAtPmZ0c19kZXYgPSBzYnAtPnN0X2RldjsKLS0JCWlubyA9IHAtPmZ0c19pbm8gPSBzYnAtPnN0X2lubzsKLS0JCXAtPmZ0c19ubGluayA9IHNicC0+c3Rfbmxpbms7Ci0tCi0tCQlpZiAoSVNET1QocC0+ZnRzX25hbWUpKQotLQkJCXJldHVybiAoRlRTX0RPVCk7Ci0tCi0tCQkvKgotLQkJICogQ3ljbGUgZGV0ZWN0aW9uIGlzIGRvbmUgYnkgYnJ1dGUgZm9yY2Ugd2hlbiB0aGUgZGlyZWN0b3J5Ci0tCQkgKiBpcyBmaXJzdCBlbmNvdW50ZXJlZC4gIElmIHRoZSB0cmVlIGdldHMgZGVlcCBlbm91Z2ggb3IgdGhlCi0tCQkgKiBudW1iZXIgb2Ygc3ltYm9saWMgbGlua3MgdG8gZGlyZWN0b3JpZXMgaXMgaGlnaCBlbm91Z2gsCi0tCQkgKiBzb21ldGhpbmcgZmFzdGVyIG1pZ2h0IGJlIHdvcnRod2hpbGUuCi0tCQkgKi8KLS0JCWZvciAodCA9IHAtPmZ0c19wYXJlbnQ7Ci0tCQkgICAgdC0+ZnRzX2xldmVsID49IEZUU19ST09UTEVWRUw7IHQgPSB0LT5mdHNfcGFyZW50KQotLQkJCWlmIChpbm8gPT0gdC0+ZnRzX2lubyAmJiBkZXYgPT0gdC0+ZnRzX2RldikgewotLQkJCQlwLT5mdHNfY3ljbGUgPSB0OwotLQkJCQlyZXR1cm4gKEZUU19EQyk7Ci0tCQkJfQotLQkJcmV0dXJuIChGVFNfRCk7Ci0tCX0KLS0JaWYgKFNfSVNMTksoc2JwLT5zdF9tb2RlKSkKLS0JCXJldHVybiAoRlRTX1NMKTsKLS0JaWYgKFNfSVNSRUcoc2JwLT5zdF9tb2RlKSkKLS0JCXJldHVybiAoRlRTX0YpOwotLQlyZXR1cm4gKEZUU19ERUZBVUxUKTsKLS19Ci0tCi0tc3RhdGljIEZUU0VOVCAqCi0tZnRzX3NvcnQoc3AsIGhlYWQsIG5pdGVtcykKLS0JRlRTICpzcDsKLS0JRlRTRU5UICpoZWFkOwotLQlyZWdpc3RlciBpbnQgbml0ZW1zOwotLXsKLS0JcmVnaXN0ZXIgRlRTRU5UICoqYXAsICpwOwotLQotLQkvKgotLQkgKiBDb25zdHJ1Y3QgYW4gYXJyYXkgb2YgcG9pbnRlcnMgdG8gdGhlIHN0cnVjdHVyZXMgYW5kIGNhbGwgcXNvcnQoMykuCi0tCSAqIFJlYXNzZW1ibGUgdGhlIGFycmF5IGluIHRoZSBvcmRlciByZXR1cm5lZCBieSBxc29ydC4gIElmIHVuYWJsZSB0bwotLQkgKiBzb3J0IGZvciBtZW1vcnkgcmVhc29ucywgcmV0dXJuIHRoZSBkaXJlY3RvcnkgZW50cmllcyBpbiB0aGVpcgotLQkgKiBjdXJyZW50IG9yZGVyLiAgQWxsb2NhdGUgZW5vdWdoIHNwYWNlIGZvciB0aGUgY3VycmVudCBuZWVkcyBwbHVzCi0tCSAqIDQwIHNvIGRvbid0IHJlYWxsb2Mgb25lIGVudHJ5IGF0IGEgdGltZS4KLS0JICovCi0tCWlmIChuaXRlbXMgPiBzcC0+ZnRzX25pdGVtcykgewotLQkJc3RydWN0IF9mdHNlbnQgKiphOwotLQotLQkJc3AtPmZ0c19uaXRlbXMgPSBuaXRlbXMgKyA0MDsKLS0JCWlmICgoYSA9IHJlYWxsb2Moc3AtPmZ0c19hcnJheSwKLS0gCQkgICAgKHNpemVfdCkoc3AtPmZ0c19uaXRlbXMgKiBzaXplb2YoRlRTRU5UICopKSkpID09IE5VTEwpIHsKLS0JCQlmcmVlKHNwLT5mdHNfYXJyYXkpOwotLQkJCXNwLT5mdHNfYXJyYXkgPSBOVUxMOwotLQkJCXNwLT5mdHNfbml0ZW1zID0gMDsKLS0JCQlyZXR1cm4gKGhlYWQpOwotLQkJfQotLQkJc3AtPmZ0c19hcnJheSA9IGE7Ci0tCX0KLS0JZm9yIChhcCA9IHNwLT5mdHNfYXJyYXksIHAgPSBoZWFkOyBwOyBwID0gcC0+ZnRzX2xpbmspCi0tCQkqYXArKyA9IHA7Ci0tCXFzb3J0KCh2b2lkICopc3AtPmZ0c19hcnJheSwgbml0ZW1zLCBzaXplb2YoRlRTRU5UICopLCBzcC0+ZnRzX2NvbXBhcik7Ci0tCWZvciAoaGVhZCA9ICooYXAgPSBzcC0+ZnRzX2FycmF5KTsgLS1uaXRlbXM7ICsrYXApCi0tCQlhcFswXS0+ZnRzX2xpbmsgPSBhcFsxXTsKLS0JYXBbMF0tPmZ0c19saW5rID0gTlVMTDsKLS0JcmV0dXJuIChoZWFkKTsKLS19Ci0tCi0tc3RhdGljIEZUU0VOVCAqCi0tZnRzX2FsbG9jKHNwLCBuYW1lLCBuYW1lbGVuKQotLQlGVFMgKnNwOwotLQljb25zdCBjaGFyICpuYW1lOwotLQlyZWdpc3RlciBpbnQgbmFtZWxlbjsKLS17Ci0tCXJlZ2lzdGVyIEZUU0VOVCAqcDsKLS0Jc2l6ZV90IGxlbjsKLS0KLS0JLyoKLS0JICogVGhlIGZpbGUgbmFtZSBpcyBhIHZhcmlhYmxlIGxlbmd0aCBhcnJheSBhbmQgbm8gc3RhdCBzdHJ1Y3R1cmUgaXMKLS0JICogbmVjZXNzYXJ5IGlmIHRoZSB1c2VyIGhhcyBzZXQgdGhlIG5vc3RhdCBiaXQuICBBbGxvY2F0ZSB0aGUgRlRTRU5UCi0tCSAqIHN0cnVjdHVyZSwgdGhlIGZpbGUgbmFtZSBhbmQgdGhlIHN0YXQgc3RydWN0dXJlIGluIG9uZSBjaHVuaywgYnV0Ci0tCSAqIGJlIGNhcmVmdWwgdGhhdCB0aGUgc3RhdCBzdHJ1Y3R1cmUgaXMgcmVhc29uYWJseSBhbGlnbmVkLiAgU2luY2UgdGhlCi0tCSAqIGZ0c19uYW1lIGZpZWxkIGlzIGRlY2xhcmVkIHRvIGJlIG9mIHNpemUgMSwgdGhlIGZ0c19uYW1lIHBvaW50ZXIgaXMKLS0JICogbmFtZWxlbiArIDIgYmVmb3JlIHRoZSBmaXJzdCBwb3NzaWJsZSBhZGRyZXNzIG9mIHRoZSBzdGF0IHN0cnVjdHVyZS4KLS0JICovCi0tCWxlbiA9IHNpemVvZihGVFNFTlQpICsgbmFtZWxlbjsKLS0JbGVuICs9IHNpemVvZihzdHJ1Y3Qgc3RhdCkgKyBBTElHTkJZVEVTOwotLQlpZiAoKHAgPSBtYWxsb2MobGVuKSkgPT0gTlVMTCkKLS0JCXJldHVybiAoTlVMTCk7Ci0tCi0tCS8qIENvcHkgdGhlIG5hbWUgYW5kIGd1YXJhbnRlZSBOVUwgdGVybWluYXRpb24uICovCi0tCW1lbW1vdmUocC0+ZnRzX25hbWUsIG5hbWUsIG5hbWVsZW4pOwotLQlwLT5mdHNfbmFtZVtuYW1lbGVuXSA9ICdcMCc7Ci0tCi0tCXAtPmZ0c19zdGF0cCA9IChzdHJ1Y3Qgc3RhdCAqKUFMSUdOKHAtPmZ0c19uYW1lICsgbmFtZWxlbiArIDIpOwotLQlwLT5mdHNfbmFtZWxlbiA9IG5hbWVsZW47Ci0tCXAtPmZ0c19wYXRoID0gc3AtPmZ0c19wYXRoOwotLQlwLT5mdHNfZXJybm8gPSAwOwotLQlwLT5mdHNfZmxhZ3MgPSAwOwotLQlwLT5mdHNfaW5zdHIgPSBGVFNfTk9JTlNUUjsKLS0JcC0+ZnRzX251bWJlciA9IDA7Ci0tCXAtPmZ0c19wb2ludGVyID0gTlVMTDsKLS0JcmV0dXJuIChwKTsKLS19Ci0tCi0tc3RhdGljIHZvaWQKLS1mdHNfbGZyZWUoaGVhZCkKLS0JcmVnaXN0ZXIgRlRTRU5UICpoZWFkOwotLXsKLS0JcmVnaXN0ZXIgRlRTRU5UICpwOwotLQotLQkvKiBGcmVlIGEgbGlua2VkIGxpc3Qgb2Ygc3RydWN0dXJlcy4gKi8KLS0Jd2hpbGUgKChwID0gaGVhZCkpIHsKLS0JCWhlYWQgPSBoZWFkLT5mdHNfbGluazsKLS0JCWZyZWUocCk7Ci0tCX0KLS19Ci0tCi0tLyoKLS0gKiBBbGxvdyBlc3NlbnRpYWxseSB1bmxpbWl0ZWQgcGF0aHM7IGZpbmQsIHJtLCBscyBzaG91bGQgYWxsIHdvcmsgb24gYW55IHRyZWUuCi0tICogTW9zdCBzeXN0ZW1zIHdpbGwgYWxsb3cgY3JlYXRpb24gb2YgcGF0aHMgbXVjaCBsb25nZXIgdGhhbiBNQVhQQVRITEVOLCBldmVuCi0tICogdGhvdWdoIHRoZSBrZXJuZWwgd29uJ3QgcmVzb2x2ZSB0aGVtLiAgQWRkIHRoZSBzaXplIChub3QganVzdCB3aGF0J3MgbmVlZGVkKQotLSAqIHBsdXMgMjU2IGJ5dGVzIHNvIGRvbid0IHJlYWxsb2MgdGhlIHBhdGggMiBieXRlcyBhdCBhIHRpbWUuCi0tICovCi0tc3RhdGljIGludAotLWZ0c19wYWxsb2Moc3AsIG1vcmUpCi0tCUZUUyAqc3A7Ci0tCXNpemVfdCBtb3JlOwotLXsKLS0JY2hhciAqcDsKLS0KLS0Jc3AtPmZ0c19wYXRobGVuICs9IG1vcmUgKyAyNTY7Ci0tCS8qCi0tCSAqIENoZWNrIGZvciBwb3NzaWJsZSB3cmFwYXJvdW5kLiAgSW4gYW4gRlRTLCBmdHNfcGF0aGxlbiBpcwotLQkgKiBhIHNpZ25lZCBpbnQgYnV0IGluIGFuIEZUU0VOVCBpdCBpcyBhbiB1bnNpZ25lZCBzaG9ydC4KLS0JICogV2UgbGltaXQgZnRzX3BhdGhsZW4gdG8gVVNIUlRfTUFYIHRvIGJlIHNhZmUgaW4gYm90aCBjYXNlcy4KLS0JICovCi0tCWlmIChzcC0+ZnRzX3BhdGhsZW4gPCAwIHx8IHNwLT5mdHNfcGF0aGxlbiA+PSAweDEwMDAwKSB7Ci0tCQlpZiAoc3AtPmZ0c19wYXRoKSB7Ci0tCQkJZnJlZShzcC0+ZnRzX3BhdGgpOwotLQkJCXNwLT5mdHNfcGF0aCA9IE5VTEw7Ci0tCQl9Ci0tCQlzcC0+ZnRzX3BhdGggPSBOVUxMOwotLQkJZXJybm8gPSBFTkFNRVRPT0xPTkc7Ci0tCQlyZXR1cm4gKDEpOwotLQl9Ci0tCXAgPSByZWFsbG9jKHNwLT5mdHNfcGF0aCwgc3AtPmZ0c19wYXRobGVuKTsKLS0JaWYgKHAgPT0gTlVMTCkgewotLQkJZnJlZShzcC0+ZnRzX3BhdGgpOwotLQkJc3AtPmZ0c19wYXRoID0gTlVMTDsKLS0JCXJldHVybiAxOwotLQl9Ci0tCXNwLT5mdHNfcGF0aCA9IHA7Ci0tCXJldHVybiAwOwotLX0KLS0KLS0vKgotLSAqIFdoZW4gdGhlIHBhdGggaXMgcmVhbGxvYydkLCBoYXZlIHRvIGZpeCBhbGwgb2YgdGhlIHBvaW50ZXJzIGluIHN0cnVjdHVyZXMKLS0gKiBhbHJlYWR5IHJldHVybmVkLgotLSAqLwotLXN0YXRpYyB2b2lkCi0tZnRzX3BhZGp1c3Qoc3AsIGhlYWQpCi0tCUZUUyAqc3A7Ci0tCUZUU0VOVCAqaGVhZDsKLS17Ci0tCUZUU0VOVCAqcDsKLS0JY2hhciAqYWRkciA9IHNwLT5mdHNfcGF0aDsKLS0KLS0jZGVmaW5lCUFESlVTVChwKSBkbyB7CQkJCQkJCVwKLS0JaWYgKChwKS0+ZnRzX2FjY3BhdGggIT0gKHApLT5mdHNfbmFtZSkgewkJCVwKLS0JCShwKS0+ZnRzX2FjY3BhdGggPQkJCQkJXAotLQkJICAgIChjaGFyICopYWRkciArICgocCktPmZ0c19hY2NwYXRoIC0gKHApLT5mdHNfcGF0aCk7CVwKLS0JfQkJCQkJCQkJXAotLQkocCktPmZ0c19wYXRoID0gYWRkcjsJCQkJCQlcCi0tfSB3aGlsZSAoMCkKLS0JLyogQWRqdXN0IHRoZSBjdXJyZW50IHNldCBvZiBjaGlsZHJlbi4gKi8KLS0JZm9yIChwID0gc3AtPmZ0c19jaGlsZDsgcDsgcCA9IHAtPmZ0c19saW5rKQotLQkJQURKVVNUKHApOwotLQotLQkvKiBBZGp1c3QgdGhlIHJlc3Qgb2YgdGhlIHRyZWUsIGluY2x1ZGluZyB0aGUgY3VycmVudCBsZXZlbC4gKi8KLS0JZm9yIChwID0gaGVhZDsgcC0+ZnRzX2xldmVsID49IEZUU19ST09UTEVWRUw7KSB7Ci0tCQlBREpVU1QocCk7Ci0tCQlwID0gcC0+ZnRzX2xpbmsgPyBwLT5mdHNfbGluayA6IHAtPmZ0c19wYXJlbnQ7Ci0tCX0KLS19Ci0tCi0tc3RhdGljIHNpemVfdAotLWZ0c19tYXhhcmdsZW4oYXJndikKLS0JY2hhciAqIGNvbnN0ICphcmd2OwotLXsKLS0Jc2l6ZV90IGxlbiwgbWF4OwotLQotLQlmb3IgKG1heCA9IDA7ICphcmd2OyArK2FyZ3YpCi0tCQlpZiAoKGxlbiA9IHN0cmxlbigqYXJndikpID4gbWF4KQotLQkJCW1heCA9IGxlbjsKLS0JcmV0dXJuIChtYXggKyAxKTsKLS19Ci0tCi0tLyoKLS0gKiBDaGFuZ2UgdG8gZGlyIHNwZWNpZmllZCBieSBmZCBvciBwLT5mdHNfYWNjcGF0aCB3aXRob3V0IGdldHRpbmcKLS0gKiB0cmlja2VkIGJ5IHNvbWVvbmUgY2hhbmdpbmcgdGhlIHdvcmxkIG91dCBmcm9tIHVuZGVybmVhdGggdXMuCi0tICogQXNzdW1lcyBwLT5mdHNfZGV2IGFuZCBwLT5mdHNfaW5vIGFyZSBmaWxsZWQgaW4uCi0tICovCi0tc3RhdGljIGludAotLWZ0c19zYWZlX2NoYW5nZWRpcihzcCwgcCwgZmQsIHBhdGgpCi0tCUZUUyAqc3A7Ci0tCUZUU0VOVCAqcDsKLS0JaW50IGZkOwotLQljb25zdCBjaGFyICpwYXRoOwotLXsKLS0JaW50IHJldCwgb2Vycm5vLCBuZXdmZDsKLS0Jc3RydWN0IHN0YXQgc2I7Ci0tCi0tCW5ld2ZkID0gZmQ7Ci0tCWlmIChJU1NFVChGVFNfTk9DSERJUikpCi0tCQlyZXR1cm4gKDApOwotLQlpZiAoZmQgPCAwICYmIChuZXdmZCA9IG9wZW4ocGF0aCwgT19SRE9OTFksIDApKSA8IDApCi0tCQlyZXR1cm4gKC0xKTsKLS0JaWYgKGZzdGF0KG5ld2ZkLCAmc2IpKSB7Ci0tCQlyZXQgPSAtMTsKLS0JCWdvdG8gYmFpbDsKLS0JfQotLQlpZiAocC0+ZnRzX2RldiAhPSBzYi5zdF9kZXYgfHwgcC0+ZnRzX2lubyAhPSBzYi5zdF9pbm8pIHsKLS0JCWVycm5vID0gRU5PRU5UOwkJLyogZGlzaW5mb3JtYXRpb24gKi8KLS0JCXJldCA9IC0xOwotLQkJZ290byBiYWlsOwotLQl9Ci0tCXJldCA9IGZjaGRpcihuZXdmZCk7Ci0tYmFpbDoKLS0Jb2Vycm5vID0gZXJybm87Ci0tCWlmIChmZCA8IDApCi0tCQkodm9pZCljbG9zZShuZXdmZCk7Ci0tCWVycm5vID0gb2Vycm5vOwotLQlyZXR1cm4gKHJldCk7Ci0tfQotZGlmZiAtLWdpdCBhL2xpYi9mdHMuaCBiL2xpYi9mdHMuaAotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA1ODg0NmI5Li4wMDAwMDAwCi0tLS0gYS9saWIvZnRzLmgKLSsrKyAvZGV2L251bGwKLUBAIC0xLDEzMSArMCwwIEBACi0tLyoKLS0gKiBDb3B5cmlnaHQgKGMpIDE5ODksIDE5OTMKLS0gKglUaGUgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS0gKgotLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotLSAqIGFyZSBtZXQ6Ci0tICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0tICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0tICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLS0gKiA0LiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotLSAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLSAqCi0tICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUkVHRU5UUyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLS0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLS0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotLSAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFJFR0VOVFMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotLSAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0tICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLS0gKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLS0gKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotLSAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLS0gKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0tICogU1VDSCBEQU1BR0UuCi0tICoKLS0gKglAKCMpZnRzLmgJOC4zIChCZXJrZWxleSkgOC8xNC85NAotLSAqLwotLQotLSNpZm5kZWYJX0ZUU19ICi0tI2RlZmluZQlfRlRTX0ggMQotLQotLSNpbmNsdWRlIDxmZWF0dXJlcy5oPgotLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0KLS10eXBlZGVmIHN0cnVjdCB7Ci0tCXN0cnVjdCBfZnRzZW50ICpmdHNfY3VyOwkvKiBjdXJyZW50IG5vZGUgKi8KLS0Jc3RydWN0IF9mdHNlbnQgKmZ0c19jaGlsZDsJLyogbGlua2VkIGxpc3Qgb2YgY2hpbGRyZW4gKi8KLS0Jc3RydWN0IF9mdHNlbnQgKipmdHNfYXJyYXk7CS8qIHNvcnQgYXJyYXkgKi8KLS0JZGV2X3QgZnRzX2RldjsJCQkvKiBzdGFydGluZyBkZXZpY2UgIyAqLwotLQljaGFyICpmdHNfcGF0aDsJCQkvKiBwYXRoIGZvciB0aGlzIGRlc2NlbnQgKi8KLS0JaW50IGZ0c19yZmQ7CQkJLyogZmQgZm9yIHJvb3QgKi8KLS0JaW50IGZ0c19wYXRobGVuOwkJLyogc2l6ZW9mKHBhdGgpICovCi0tCWludCBmdHNfbml0ZW1zOwkJCS8qIGVsZW1lbnRzIGluIHRoZSBzb3J0IGFycmF5ICovCi0tCWludCAoKmZ0c19jb21wYXIpIChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKik7IC8qIGNvbXBhcmUgZm4gKi8KLS0KLS0jZGVmaW5lCUZUU19DT01GT0xMT1cJMHgwMDAxCQkvKiBmb2xsb3cgY29tbWFuZCBsaW5lIHN5bWxpbmtzICovCi0tI2RlZmluZQlGVFNfTE9HSUNBTAkweDAwMDIJCS8qIGxvZ2ljYWwgd2FsayAqLwotLSNkZWZpbmUJRlRTX05PQ0hESVIJMHgwMDA0CQkvKiBkb24ndCBjaGFuZ2UgZGlyZWN0b3JpZXMgKi8KLS0jZGVmaW5lCUZUU19OT1NUQVQJMHgwMDA4CQkvKiBkb24ndCBnZXQgc3RhdCBpbmZvICovCi0tI2RlZmluZQlGVFNfUEhZU0lDQUwJMHgwMDEwCQkvKiBwaHlzaWNhbCB3YWxrICovCi0tI2RlZmluZQlGVFNfU0VFRE9UCTB4MDAyMAkJLyogcmV0dXJuIGRvdCBhbmQgZG90LWRvdCAqLwotLSNkZWZpbmUJRlRTX1hERVYJMHgwMDQwCQkvKiBkb24ndCBjcm9zcyBkZXZpY2VzICovCi0tI2RlZmluZSBGVFNfV0hJVEVPVVQJMHgwMDgwCQkvKiByZXR1cm4gd2hpdGVvdXQgaW5mb3JtYXRpb24gKi8KLS0jZGVmaW5lCUZUU19PUFRJT05NQVNLCTB4MDBmZgkJLyogdmFsaWQgdXNlciBvcHRpb24gbWFzayAqLwotLQotLSNkZWZpbmUJRlRTX05BTUVPTkxZCTB4MDEwMAkJLyogKHByaXZhdGUpIGNoaWxkIG5hbWVzIG9ubHkgKi8KLS0jZGVmaW5lCUZUU19TVE9QCTB4MDIwMAkJLyogKHByaXZhdGUpIHVucmVjb3ZlcmFibGUgZXJyb3IgKi8KLS0JaW50IGZ0c19vcHRpb25zOwkJLyogZnRzX29wZW4gb3B0aW9ucywgZ2xvYmFsIGZsYWdzICovCi0tfSBGVFM7Ci0tCi0tdHlwZWRlZiBzdHJ1Y3QgX2Z0c2VudCB7Ci0tCXN0cnVjdCBfZnRzZW50ICpmdHNfY3ljbGU7CS8qIGN5Y2xlIG5vZGUgKi8KLS0Jc3RydWN0IF9mdHNlbnQgKmZ0c19wYXJlbnQ7CS8qIHBhcmVudCBkaXJlY3RvcnkgKi8KLS0Jc3RydWN0IF9mdHNlbnQgKmZ0c19saW5rOwkvKiBuZXh0IGZpbGUgaW4gZGlyZWN0b3J5ICovCi0tCWxvbmcgZnRzX251bWJlcjsJICAgICAgICAvKiBsb2NhbCBudW1lcmljIHZhbHVlICovCi0tCXZvaWQgKmZ0c19wb2ludGVyOwkgICAgICAgIC8qIGxvY2FsIGFkZHJlc3MgdmFsdWUgKi8KLS0JY2hhciAqZnRzX2FjY3BhdGg7CQkvKiBhY2Nlc3MgcGF0aCAqLwotLQljaGFyICpmdHNfcGF0aDsJCQkvKiByb290IHBhdGggKi8KLS0JaW50IGZ0c19lcnJubzsJCQkvKiBlcnJubyBmb3IgdGhpcyBub2RlICovCi0tCWludCBmdHNfc3ltZmQ7CQkJLyogZmQgZm9yIHN5bWxpbmsgKi8KLS0JdV9zaG9ydCBmdHNfcGF0aGxlbjsJCS8qIHN0cmxlbihmdHNfcGF0aCkgKi8KLS0JdV9zaG9ydCBmdHNfbmFtZWxlbjsJCS8qIHN0cmxlbihmdHNfbmFtZSkgKi8KLS0KLS0JaW5vX3QgZnRzX2lubzsJCQkvKiBpbm9kZSAqLwotLQlkZXZfdCBmdHNfZGV2OwkJCS8qIGRldmljZSAqLwotLQlubGlua190IGZ0c19ubGluazsJCS8qIGxpbmsgY291bnQgKi8KLS0KLS0jZGVmaW5lCUZUU19ST09UUEFSRU5UTEVWRUwJLTEKLS0jZGVmaW5lCUZUU19ST09UTEVWRUwJCSAwCi0tCXNob3J0IGZ0c19sZXZlbDsJCS8qIGRlcHRoICgtMSB0byBOKSAqLwotLQotLSNkZWZpbmUJRlRTX0QJCSAxCQkvKiBwcmVvcmRlciBkaXJlY3RvcnkgKi8KLS0jZGVmaW5lCUZUU19EQwkJIDIJCS8qIGRpcmVjdG9yeSB0aGF0IGNhdXNlcyBjeWNsZXMgKi8KLS0jZGVmaW5lCUZUU19ERUZBVUxUCSAzCQkvKiBub25lIG9mIHRoZSBhYm92ZSAqLwotLSNkZWZpbmUJRlRTX0ROUgkJIDQJCS8qIHVucmVhZGFibGUgZGlyZWN0b3J5ICovCi0tI2RlZmluZQlGVFNfRE9UCQkgNQkJLyogZG90IG9yIGRvdC1kb3QgKi8KLS0jZGVmaW5lCUZUU19EUAkJIDYJCS8qIHBvc3RvcmRlciBkaXJlY3RvcnkgKi8KLS0jZGVmaW5lCUZUU19FUlIJCSA3CQkvKiBlcnJvcjsgZXJybm8gaXMgc2V0ICovCi0tI2RlZmluZQlGVFNfRgkJIDgJCS8qIHJlZ3VsYXIgZmlsZSAqLwotLSNkZWZpbmUJRlRTX0lOSVQJIDkJCS8qIGluaXRpYWxpemVkIG9ubHkgKi8KLS0jZGVmaW5lCUZUU19OUwkJMTAJCS8qIHN0YXQoMikgZmFpbGVkICovCi0tI2RlZmluZQlGVFNfTlNPSwkxMQkJLyogbm8gc3RhdCgyKSByZXF1ZXN0ZWQgKi8KLS0jZGVmaW5lCUZUU19TTAkJMTIJCS8qIHN5bWJvbGljIGxpbmsgKi8KLS0jZGVmaW5lCUZUU19TTE5PTkUJMTMJCS8qIHN5bWJvbGljIGxpbmsgd2l0aG91dCB0YXJnZXQgKi8KLS0jZGVmaW5lIEZUU19XCQkxNAkJLyogd2hpdGVvdXQgb2JqZWN0ICovCi0tCXVfc2hvcnQgZnRzX2luZm87CQkvKiB1c2VyIGZsYWdzIGZvciBGVFNFTlQgc3RydWN0dXJlICovCi0tCi0tI2RlZmluZQlGVFNfRE9OVENIRElSCSAweDAxCQkvKiBkb24ndCBjaGRpciAuLiB0byB0aGUgcGFyZW50ICovCi0tI2RlZmluZQlGVFNfU1lNRk9MTE9XCSAweDAyCQkvKiBmb2xsb3dlZCBhIHN5bWxpbmsgdG8gZ2V0IGhlcmUgKi8KLS0JdV9zaG9ydCBmdHNfZmxhZ3M7CQkvKiBwcml2YXRlIGZsYWdzIGZvciBGVFNFTlQgc3RydWN0dXJlICovCi0tCi0tI2RlZmluZQlGVFNfQUdBSU4JIDEJCS8qIHJlYWQgbm9kZSBhZ2FpbiAqLwotLSNkZWZpbmUJRlRTX0ZPTExPVwkgMgkJLyogZm9sbG93IHN5bWJvbGljIGxpbmsgKi8KLS0jZGVmaW5lCUZUU19OT0lOU1RSCSAzCQkvKiBubyBpbnN0cnVjdGlvbnMgKi8KLS0jZGVmaW5lCUZUU19TS0lQCSA0CQkvKiBkaXNjYXJkIG5vZGUgKi8KLS0JdV9zaG9ydCBmdHNfaW5zdHI7CQkvKiBmdHNfc2V0KCkgaW5zdHJ1Y3Rpb25zICovCi0tCi0tCXN0cnVjdCBzdGF0ICpmdHNfc3RhdHA7CQkvKiBzdGF0KDIpIGluZm9ybWF0aW9uICovCi0tCWNoYXIgZnRzX25hbWVbMV07CQkvKiBmaWxlIG5hbWUgKi8KLS19IEZUU0VOVDsKLS0KLS1fX0JFR0lOX0RFQ0xTCi0tCi0tI2RlZmluZSBmdHNfY2hpbGRyZW4gcGF4X2Z0c19jaGlsZHJlbgotLSNkZWZpbmUgZnRzX2Nsb3NlIHBheF9mdHNfY2xvc2UKLS0jZGVmaW5lIGZ0c19vcGVuIHBheF9mdHNfb3BlbgotLSNkZWZpbmUgZnRzX3JlYWQgcGF4X2Z0c19yZWFkCi0tI2RlZmluZSBmdHNfc2V0IHBheF9mdHNfc2V0Ci0tCi0tRlRTRU5UCSpmdHNfY2hpbGRyZW4gKEZUUyAqLCBpbnQpOwotLWludAkgZnRzX2Nsb3NlIChGVFMgKik7Ci0tRlRTCSpmdHNfb3BlbiAoY2hhciAqIGNvbnN0ICosIGludCwKLS0JCSAgIGludCAoKikoY29uc3QgRlRTRU5UICoqLCBjb25zdCBGVFNFTlQgKiopKTsKLS1GVFNFTlQJKmZ0c19yZWFkIChGVFMgKik7Ci0taW50CSBmdHNfc2V0IChGVFMgKiwgRlRTRU5UICosIGludCkgX19USFJPVzsKLS1fX0VORF9ERUNMUwotLQotLSNlbmRpZiAvKiBmdHMuaCAqLwotZGlmZiAtLWdpdCBhL2xpYi92aXMuaCBiL2xpYi92aXMuaAotaW5kZXggZDM0ZDM0Mi4uNzFmYTVmNCAxMDA2NDQKLS0tLSBhL2xpYi92aXMuaAotKysrIGIvbGliL3Zpcy5oCi1AQCAtNzMsMTQgKzczLDE5IEBACi0gICovCi0gI2RlZmluZQlVTlZJU19FTkQJMQkvKiBubyBtb3JlIGNoYXJhY3RlcnMgKi8KLSAKLS0jaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci0rI2lmbmRlZiBfX1AKLSsjZGVmaW5lIF9fUCh4KSB4Ci0rI2VuZGlmCi0gCi0tX19CRUdJTl9ERUNMUwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotIGNoYXIJKnZpcyBfX1AoKGNoYXIgKiwgaW50LCBpbnQsIGludCkpOwotIGludAlzdHJ2aXMgX19QKChjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KSk7Ci0gaW50CXN0cnZpc3ggX19QKChjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBpbnQpKTsKLSBpbnQJc3RydW52aXMgX19QKChjaGFyICosIGNvbnN0IGNoYXIgKikpOwotIGludAl1bnZpcyBfX1AoKGNoYXIgKiwgY2hhciwgaW50ICosIGludCkpOwotLV9fRU5EX0RFQ0xTCi0tCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotICNlbmRpZiAvKiAhX1ZJU19IXyAqLwotZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQotaW5kZXggNWVmNTJhMy4uMjI3Y2RlZiAxMDA2NDQKLS0tLSBhL3NyYy9NYWtlZmlsZS5hbQotKysrIGIvc3JjL01ha2VmaWxlLmFtCi1AQCAtMjIsNCArMjIsNCBAQCBwYXhfU09VUkNFUyA9IGFyX2lvLmMgYXJfc3Vicy5jIGJ1Zl9zdWJzLmMgY2FjaGUuYyBjcGlvLmNcCi0gCWZpbGVfc3Vicy5jIGZ0cmVlLmMgZ2VuX3N1YnMuYyBnZXRvbGRvcHQuYyBvcHRpb25zLmNcCi0gCXBhdF9yZXAuYyBwYXguYyBzZWxfc3Vicy5jIHRhYmxlcy5jIHRhci5jIHR0eV9zdWJzLmMKLSAKLS1wYXhfTERBREQgPSAkKHRvcF9idWlsZGRpcikvbGliL2xpYmJzZGZ1bmMuYQotK3BheF9MREFERCA9ICQodG9wX2J1aWxkZGlyKS9saWIvbGliYnNkZnVuYy5hIC1sZnRzCi1kaWZmIC0tZ2l0IGEvc3JjL2V4dGVybi5oIGIvc3JjL2V4dGVybi5oCi1pbmRleCAzNjFmYTgxLi4zZWQzNjVkIDEwMDY0NAotLS0tIGEvc3JjL2V4dGVybi5oCi0rKysgYi9zcmMvZXh0ZXJuLmgKLUBAIC0zNyw4ICszNyw2IEBACi0gICogRXh0ZXJuYWwgcmVmZXJlbmNlcyBmcm9tIGVhY2ggc291cmNlIGZpbGUKLSAgKi8KLSAKLS0jaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci0tCi0gLyoKLSAgKiBhcl9pby5jCi0gICovCi1kaWZmIC0tZ2l0IGEvc3JjL2ZpbGVfc3Vicy5jIGIvc3JjL2ZpbGVfc3Vicy5jCi1pbmRleCA1NTkwZmYxLi4xNWJjMzM5IDEwMDY0NAotLS0tIGEvc3JjL2ZpbGVfc3Vicy5jCi0rKysgYi9zcmMvZmlsZV9zdWJzLmMKLUBAIC01Miw3ICs1Miw3IEBACi0gI2luY2x1ZGUgImV4dGVybi5oIgotIAotIHN0YXRpYyBpbnQKLS1ta19saW5rIF9fUCgocmVnaXN0ZXIgY2hhciAqLHJlZ2lzdGVyIHN0cnVjdCBzdGF0ICoscmVnaXN0ZXIgY2hhciAqLCBpbnQpKTsKLStta19saW5rIChyZWdpc3RlciBjaGFyICoscmVnaXN0ZXIgc3RydWN0IHN0YXQgKixyZWdpc3RlciBjaGFyICosIGludCk7Ci0gCi0gLyoKLSAgKiByb3V0aW5lcyB0aGF0IGRlYWwgd2l0aCBmaWxlIG9wZXJhdGlvbnMgc3VjaCBhczogY3JlYXRpbmcsIHJlbW92aW5nOwotZGlmZiAtLWdpdCBhL3NyYy90YWJsZXMuYyBiL3NyYy90YWJsZXMuYwotaW5kZXggMjI3NWJmNy4uOGZkZGNhNCAxMDA2NDQKLS0tLSBhL3NyYy90YWJsZXMuYwotKysrIGIvc3JjL3RhYmxlcy5jCi1AQCAtMzksNyArMzksNyBAQAotICNpbmNsdWRlIDxzeXMvdGltZS5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLS0jaW5jbHVkZSA8c3lzL2ZjbnRsLmg+Ci0rI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLS0tIAotMi42LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLWRlZmluaXRpb25zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLWRlZmluaXRpb25zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDk2OWJjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC8wMDAxLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci1kZWZpbml0aW9ucy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLUZyb20gN2Y0ZjM3OWY4MzQzYzBjZTkyYWEzMGYzZjkwMzcyODhhMDg5YTkwMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDE4IERlYyAyMDE2IDA4OjI0OjU2ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4gZm9yIG1ham9yL21pbm9yIGRlZmluaXRpb25zCi0KLWdsaWJjIDIuMjUgd2lsbCBlcnJvciBvdXQgaWYgdGhlIGFwcGxpY2F0aW9ucyBhcmUgZXhwZWN0aW5nCi10aGlzIHRvIGNvbWUgZnJvbSBzeXMvdHlwZXMuaCwgaXQgaXMgYmVpbmcgcmVtb3ZlZCBmcm9tCi10aGVyZS4KLQotRml4ZXMKLQotZXJyb3I6IEluIHRoZSBHTlUgQyBMaWJyYXJ5LCAibWlub3IiIGlzIGRlZmluZWQKLXwgIGJ5IDxzeXMvc3lzbWFjcm9zLmg+LiBGb3IgaGlzdG9yaWNhbCBjb21wYXRpYmlsaXR5LCBpdCBpcwotfCAgY3VycmVudGx5IGRlZmluZWQgYnkgPHN5cy90eXBlcy5oPiBhcyB3ZWxsLCBidXQgd2UgcGxhbiB0bwotfCAgcmVtb3ZlIHRoaXMgc29vbi4gVG8gdXNlICJtaW5vciIsIGluY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLXwgIGRpcmVjdGx5LiBJZiB5b3UgZGlkIG5vdCBpbnRlbmQgdG8gdXNlIGEgc3lzdGVtLWRlZmluZWQgbWFjcm8KLXwgICJtaW5vciIsIHlvdSBzaG91bGQgdW5kZWZpbmUgaXQgYWZ0ZXIgaW5jbHVkaW5nIDxzeXMvdHlwZXMuaD4uIFstV2Vycm9yXQotfCAgICAgICAgdWxfb2N0ICgodV9sb25nKSBNSU5PUiAoYXJjbi0+c2Iuc3RfcmRldiksIGhkLT5kZXZtaW5vciwKLXwgICAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gc3JjL2NwaW8uYyAgICAgfCAyICstCi0gc3JjL2dlbl9zdWJzLmMgfCAyICstCi0gc3JjL3Rhci5jICAgICAgfCAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBwYXgtMy40L3NyYy9jcGlvLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwYXgtMy40Lm9yaWcvc3JjL2NwaW8uYwotKysrIHBheC0zLjQvc3JjL2NwaW8uYwotQEAgLTM2LDYgKzM2LDcgQEAKLSAjaW5jbHVkZSAiY29uZmlnLmgiCi0gI2VuZGlmCi0gCi0rI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci1JbmRleDogcGF4LTMuNC9zcmMvZ2VuX3N1YnMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBheC0zLjQub3JpZy9zcmMvZ2VuX3N1YnMuYwotKysrIHBheC0zLjQvc3JjL2dlbl9zdWJzLmMKLUBAIC0zNyw2ICszNyw3IEBACi0gI2luY2x1ZGUgImNvbmZpZy5oIgotICNlbmRpZgotIAotKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvdGltZS5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotSW5kZXg6IHBheC0zLjQvc3JjL3Rhci5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGF4LTMuNC5vcmlnL3NyYy90YXIuYwotKysrIHBheC0zLjQvc3JjL3Rhci5jCi1AQCAtMzcsNiArMzcsNyBAQAotICNpbmNsdWRlICJjb25maWcuaCIKLSAjZW5kaWYKLSAKLSsjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC8wMDAxLXVzZS1zdHJ0b2xsLWluc3RlYWQtb2Ytc3RydG9xLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtdXNlLXN0cnRvbGwtaW5zdGVhZC1vZi1zdHJ0b3EucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4YWM5Y2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtdXNlLXN0cnRvbGwtaW5zdGVhZC1vZi1zdHJ0b3EucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIGIxZjUwMzIwMzMyYzljOTBmYTMzYWIxMzZlZjBlYzJkMTJjZGE0NjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCA2IEphbiAyMDE2IDEyOjMwOjUyIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHVzZSBzdHJ0b2xsIGluc3RlYWQgb2Ygc3RydG9xCi0KLVVzZSBMTE9OR19NQVggaW5zdGVhZCBvZiBMT05HX0xPTkdfTUFYCi1MT05HX0xPTkdfTUFYIGlzIEdOVSBzcGVjaWZpYwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHNyYy9vcHRpb25zLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL29wdGlvbnMuYyBiL3NyYy9vcHRpb25zLmMKLWluZGV4IGRhOGI0Y2YuLmM2NjNiNGUgMTAwNjQ0Ci0tLS0gYS9zcmMvb3B0aW9ucy5jCi0rKysgYi9zcmMvb3B0aW9ucy5jCi1AQCAtMTU0Nyw4ICsxNTQ3LDggQEAgc3RyX29mZnQgKGNoYXIgKnZhbCkKLSAKLSAjaWYgKFNJWkVPRl9MT05HID09IDQgJiYgU0laRU9GX09GRl9UID09IDgpIFwKLSAgICAgfHwgKGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQotLSAgbnVtID0gc3RydG9xICh2YWwsICZleHByLCAwKTsKLS0gIGlmICgobnVtID09IExPTkdfTE9OR19NQVgpIHx8IChudW0gPD0gMCkgfHwgKGV4cHIgPT0gdmFsKSkKLSsgIG51bSA9IHN0cnRvbGwgKHZhbCwgJmV4cHIsIDApOwotKyAgaWYgKChudW0gPT0gTExPTkdfTUFYKSB8fCAobnVtIDw9IDApIHx8IChleHByID09IHZhbCkpCi0gI2Vsc2UKLSAgIG51bSA9IHN0cnRvbCAodmFsLCAmZXhwciwgMCk7Ci0gICBpZiAoKG51bSA9PSBMT05HX01BWCkgfHwgKG51bSA8PSAwKSB8fCAoZXhwciA9PSB2YWwpKQotLS0gCi0yLjYuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXgvZml4X2Zvcl9jb21waWxlX3dpdGhfZ2NjLTQuNi4wLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4L2ZpeF9mb3JfY29tcGlsZV93aXRoX2djYy00LjYuMC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg3NzljMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXgvZml4X2Zvcl9jb21waWxlX3dpdGhfZ2NjLTQuNi4wLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBjb21waWxlciBlcnJvciB3aXRoIGdjYyA0LjYuMAotCi1OaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPiAyMDExLzA1LzA4Ci0KLXwgZnRzLmM6IEluIGZ1bmN0aW9uICdwYXhfZnRzX3NldCc6Ci18IGZ0cy5jOjQ2OTo3OiBlcnJvcjogcGFyYW1ldGVyICdzcCcgc2V0IGJ1dCBub3QgdXNlZCBbLVdlcnJvcj11bnVzZWQtYnV0LXNldC1wYXJhbWV0ZXJdCi18IGNjMTogYWxsIHdhcm5pbmdzIGJlaW5nIHRyZWF0ZWQgYXMgZXJyb3JzCi18IAotfCBtYWtlWzJdOiAqKiogW2Z0cy5vXSBFcnJvciAxCi0KLUluZGV4OiBwYXgtMy40L2xpYi9mdHMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBheC0zLjQub3JpZy9saWIvZnRzLmMKLSsrKyBwYXgtMy40L2xpYi9mdHMuYwotQEAgLTQ2Niw3ICs0NjYsNyBAQCBuYW1lOgkJdCA9IHNwLT5mdHNfcGF0aCArIE5BUFBFTkQocC0+ZnRzCi0gLyogQVJHU1VTRUQgKi8KLSBpbnQKLSBmdHNfc2V0KHNwLCBwLCBpbnN0cikKLS0JRlRTICpzcDsKLSsJRlRTIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSAqc3A7Ci0gCUZUU0VOVCAqcDsKLSAJaW50IGluc3RyOwotIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC9wYXgtMy40X2ZpeF9mb3JfeDMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4L3BheC0zLjRfZml4X2Zvcl94MzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhZGJkMDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4L3BheC0zLjRfZml4X2Zvcl94MzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxODUgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUF1dGhvcjogSC5KLiBMdSA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KLURhdGU6ICAgVHVlIERlYyA2IDEwOjM0OjUzIDIwMTEgLTA4MDAKLQotICAgIEZpeCBwYXgtMy40IGJ1aWxkIGZvciB4MzIKLSAgICAKLSAgICBvZmZfdCBpcyA4Ynl0ZSBmb3IgeDMyLiAgV2UgbmVlZCB0byBjaGVjayBib3RoIF9GSUxFX09GRlNFVF9CSVRTIGFuZAotICAgIHNpemUgb2Ygb2ZmX3QgdG8gc2VlIGlmIGZpbGUgb2Zmc2V0IGlzIDY0Yml0LiAgVGhpcyBwYXRjaCBhZGRzCi0gICAgQUNfQ0hFQ0tfU0laRU9GKG9mZl90KSBhbmQgY2hlY2tzIFNJWkVPRl9PRkZfVCA9PSA4LgotCi1TaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPiAyMDExLzEyLzA2Ci0KLUluZGV4OiBwYXgtMy40L2NvbmZpZ3VyZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBheC0zLjQub3JpZy9jb25maWd1cmUuaW4KLSsrKyBwYXgtMy40L2NvbmZpZ3VyZS5pbgotQEAgLTMzLDQgKzMzLDcgQEAgZG5sIENoZWNrcyBmb3IgaGVhZGVyIGZpbGVzLgotIGRubCBDaGVja3MgZm9yIHR5cGVkZWZzLCBzdHJ1Y3R1cmVzLCBhbmQgY29tcGlsZXIgY2hhcmFjdGVyaXN0aWNzLgotIEFDX0NfQ09OU1QKLSAKLStBQ19DSEVDS19TSVpFT0Yob2ZmX3QpCi0rQUNfQ0hFQ0tfU0laRU9GKGxvbmcpCi0rCi0gQUNfT1VUUFVUKFtNYWtlZmlsZSBsaWIvTWFrZWZpbGUgc3JjL01ha2VmaWxlXSkKLUluZGV4OiBwYXgtMy40L3NyYy9hcl9pby5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGF4LTMuNC5vcmlnL3NyYy9hcl9pby5jCi0rKysgcGF4LTMuNC9zcmMvYXJfaW8uYwotQEAgLTM3OCw3ICszNzgsOCBAQCBhcl9jbG9zZSh2b2lkKQotIAkgKiBjb3VsZCBoYXZlIHdyaXR0ZW4gYW55dGhpbmcgeWV0LgotIAkgKi8KLSAJaWYgKGZybXQgPT0gTlVMTCkgewotLSNpZiBkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NAotKyNpZiAoU0laRU9GX0xPTkcgPT0gNCAmJiBTSVpFT0ZfT0ZGX1QgPT0gOCkgXAotKyAgICB8fCAoZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQpCi0gCQkodm9pZClmcHJpbnRmKGxpc3RmLCAiJXM6IHVua25vd24gZm9ybWF0LCAlcXUgYnl0ZXMgc2tpcHBlZC5cbiIsCi0gI2Vsc2UKLSAJCSh2b2lkKWZwcmludGYobGlzdGYsICIlczogdW5rbm93biBmb3JtYXQsICVsdSBieXRlcyBza2lwcGVkLlxuIiwKLUBAIC0zOTEsNyArMzkyLDggQEAgYXJfY2xvc2Uodm9pZCkKLSAKLSAJaWYgKHN0cmNtcChOTV9DUElPLCBhcmd2MCkgPT0gMCkKLSAJCSh2b2lkKWZwcmludGYobGlzdGYsCi0tI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0Ci0rI2lmIChTSVpFT0ZfTE9ORyA9PSA0ICYmIFNJWkVPRl9PRkZfVCA9PSA4KSBcCi0rICAgIHx8IChkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKLSAJCSAgICAiJXF1IGJsb2Nrc1xuIiwKLSAjZWxzZQotIAkJICAgICIlbHUgYmxvY2tzXG4iLAotQEAgLTM5OSw3ICs0MDEsOCBAQCBhcl9jbG9zZSh2b2lkKQotIAkJCShyZGNudCA/IHJkY250IDogd3JjbnQpIC8gNTEyMCk7Ci0gCWVsc2UgaWYgKHN0cmNtcChOTV9UQVIsIGFyZ3YwKSAhPSAwKQotIAkJKHZvaWQpZnByaW50ZihsaXN0ZiwKLS0jaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQKLSsjaWYgKFNJWkVPRl9MT05HID09IDQgJiYgU0laRU9GX09GRl9UID09IDgpIFwKLSsgICAgfHwgKGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQotIAkJICAgICIlczogJXMgdm9sICVkLCAlbHUgZmlsZXMsICVxdSBieXRlcyByZWFkLCAlcXUgYnl0ZXMgd3JpdHRlbi5cbiIsCi0gI2Vsc2UKLSAJCSAgICAiJXM6ICVzIHZvbCAlZCwgJWx1IGZpbGVzLCAlbHUgYnl0ZXMgcmVhZCwgJWx1IGJ5dGVzIHdyaXR0ZW4uXG4iLAotSW5kZXg6IHBheC0zLjQvc3JjL2NwaW8uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBheC0zLjQub3JpZy9zcmMvY3Bpby5jCi0rKysgcGF4LTMuNC9zcmMvY3Bpby5jCi1AQCAtMjE4LDcgKzIxOCw4IEBAIHJkX2xuX25tIChBUkNIRCAqYXJjbikKLSAJICovCi0gCWlmICgoYXJjbi0+c2Iuc3Rfc2l6ZSA9PSAwKSB8fAotIAkgICAgKGFyY24tPnNiLnN0X3NpemUgPj0gKG9mZl90KSBzaXplb2YoYXJjbi0+bG5fbmFtZSkpKSB7Ci0tI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0Ci0rI2lmIChTSVpFT0ZfTE9ORyA9PSA0ICYmIFNJWkVPRl9PRkZfVCA9PSA4KSBcCi0rICAgIHx8IChkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKLSAJCXBheHdhcm4gKDEsICJDcGlvIGxpbmsgbmFtZSBsZW5ndGggaXMgaW52YWxpZDogJXF1IiwKLSAJCQkgYXJjbi0+c2Iuc3Rfc2l6ZSk7Ci0gI2Vsc2UKLUluZGV4OiBwYXgtMy40L3NyYy9nZW5fc3Vicy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGF4LTMuNC5vcmlnL3NyYy9nZW5fc3Vicy5jCi0rKysgcGF4LTMuNC9zcmMvZ2VuX3N1YnMuYwotQEAgLTEzMyw3ICsxMzMsOCBAQCBsc19saXN0IChBUkNIRCAqYXJjbiwgdGltZV90IG5vdywgRklMRSAqCi0gICAgKiBwcmludCBkZXZpY2UgaWQncyBmb3IgZGV2aWNlcywgb3Igc2l6ZXMgZm9yIG90aGVyIG5vZGVzCi0gICAgKi8KLSAgIGlmICgoYXJjbi0+dHlwZSA9PSBQQVhfQ0hSKSB8fCAoYXJjbi0+dHlwZSA9PSBQQVhfQkxLKSkKLS0jaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQKLSsjaWYgKFNJWkVPRl9MT05HID09IDQgJiYgU0laRU9GX09GRl9UID09IDgpIFwKLSsgICAgfHwgKGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQotICAgICAodm9pZCkgZnByaW50ZiAoZnAsICIlNGx1LCU0bHUgIiwgKHVuc2lnbmVkIGxvbmcpIE1BSk9SIChzYnAtPnN0X3JkZXYpLAotIAkJICAgICh1bnNpZ25lZCBsb25nKSBNSU5PUiAoc2JwLT5zdF9yZGV2KSk7Ci0gI2Vsc2UKLUBAIC0xNDIsNyArMTQzLDggQEAgbHNfbGlzdCAoQVJDSEQgKmFyY24sIHRpbWVfdCBub3csIEZJTEUgKgotICNlbmRpZgotICAgZWxzZQotICAgICB7Ci0tI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0Ci0rI2lmIChTSVpFT0ZfTE9ORyA9PSA0ICYmIFNJWkVPRl9PRkZfVCA9PSA4KSBcCi0rICAgIHx8IChkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKLSAgICAgICAodm9pZCkgZnByaW50ZiAoZnAsICIlOXF1ICIsIHNicC0+c3Rfc2l6ZSk7Ci0gI2Vsc2UKLSAgICAgICAodm9pZCkgZnByaW50ZiAoZnAsICIlOWx1ICIsIHNicC0+c3Rfc2l6ZSk7Ci1AQCAtMzM0LDcgKzMzNiw4IEBAIHVsX2FzYyAodV9sb25nIHZhbCwgY2hhciAqc3RyLCBpbnQgbGVuLCAKLSAgIHJldHVybiAoMCk7Ci0gfQotIAotLSNpZiBkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NAotKyNpZiAoU0laRU9GX0xPTkcgPT0gNCAmJiBTSVpFT0ZfT0ZGX1QgPT0gOCkgXAotKyAgICB8fCAoZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQpCi0gLyoKLSAgKiBhc2NfdXFkKCkKLSAgKgljb252ZXJ0IGhleC9vY3RhbCBjaGFyYWN0ZXIgc3RyaW5nIGludG8gYSB1X3F1YWRfdC4gV2UgZG8gbm90IGhhdmUgdG8KLUluZGV4OiBwYXgtMy40L3NyYy9vcHRpb25zLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwYXgtMy40Lm9yaWcvc3JjL29wdGlvbnMuYwotKysrIHBheC0zLjQvc3JjL29wdGlvbnMuYwotQEAgLTE1NDUsNyArMTU0NSw4IEBAIHN0cl9vZmZ0IChjaGFyICp2YWwpCi0gICBjaGFyICpleHByOwotICAgb2ZmX3QgbnVtLCB0OwotIAotLSNpZiBkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NAotKyNpZiAoU0laRU9GX0xPTkcgPT0gNCAmJiBTSVpFT0ZfT0ZGX1QgPT0gOCkgXAotKyAgICB8fCAoZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQpCi0gICBudW0gPSBzdHJ0b3EgKHZhbCwgJmV4cHIsIDApOwotICAgaWYgKChudW0gPT0gTE9OR19MT05HX01BWCkgfHwgKG51bSA8PSAwKSB8fCAoZXhwciA9PSB2YWwpKQotICNlbHNlCi1JbmRleDogcGF4LTMuNC9zcmMvdGFyLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwYXgtMy40Lm9yaWcvc3JjL3Rhci5jCi0rKysgcGF4LTMuNC9zcmMvdGFyLmMKLUBAIC01OCw3ICs1OCw4IEBACi0gc3RhdGljIHVuc2lnbmVkIGxvbmcgdGFyX2Noa3NtIChjaGFyICosIGludCk7Ci0gc3RhdGljIGNoYXIgKm5hbWVfc3BsaXQgKGNoYXIgKiwgaW50KTsKLSBzdGF0aWMgaW50IHVsX29jdCAodV9sb25nLCBjaGFyICosIGludCwgaW50KTsKLS0jaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQKLSsjaWYgKFNJWkVPRl9MT05HID09IDQgJiYgU0laRU9GX09GRl9UID09IDgpIFwKLSsgICAgfHwgKGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQotIHN0YXRpYyBpbnQgdXFkX29jdCAodV9xdWFkX3QsIGNoYXIgKiwgaW50LCBpbnQpOwotICNlbmRpZgotIAotQEAgLTE5Niw3ICsxOTcsOCBAQCB1bF9vY3QgKHVfbG9uZyB2YWwsIHJlZ2lzdGVyIGNoYXIgKnN0ciwgCi0gICByZXR1cm4gKDApOwotIH0KLSAKLS0jaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQKLSsjaWYgKFNJWkVPRl9MT05HID09IDQgJiYgU0laRU9GX09GRl9UID09IDgpIFwKLSsgICAgfHwgKGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQotIC8qCi0gICogdXFkX29jdCgpCi0gICoJY29udmVydCBhbiB1X3F1YWRfdCB0byBhbiBvY3RhbCBzdHJpbmcuIG9uZSBvZiBtYW55IG9kZGJhbGwgZmllbGQKLUBAIC00MjcsNyArNDI5LDggQEAgdGFyX3JkIChBUkNIRCAqYXJjbiwgY2hhciAqYnVmKQotIAkJCSAgICAgICAweGZmZik7Ci0gICBhcmNuLT5zYi5zdF91aWQgPSAodWlkX3QpIGFzY191bCAoaGQtPnVpZCwgc2l6ZW9mIChoZC0+dWlkKSwgT0NUKTsKLSAgIGFyY24tPnNiLnN0X2dpZCA9IChnaWRfdCkgYXNjX3VsIChoZC0+Z2lkLCBzaXplb2YgKGhkLT5naWQpLCBPQ1QpOwotLSNpZiBkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NAotKyNpZiAoU0laRU9GX0xPTkcgPT0gNCAmJiBTSVpFT0ZfT0ZGX1QgPT0gOCkgXAotKyAgICB8fCAoZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQpCi0gICBhcmNuLT5zYi5zdF9zaXplID0gKG9mZl90KSBhc2NfdXFkIChoZC0+c2l6ZSwgc2l6ZW9mIChoZC0+c2l6ZSksIE9DVCk7Ci0gI2Vsc2UKLSAgIGFyY24tPnNiLnN0X3NpemUgPSAob2ZmX3QpIGFzY191bCAoaGQtPnNpemUsIHNpemVvZiAoaGQtPnNpemUpLCBPQ1QpOwotQEAgLTY1OSw3ICs2NjIsOCBAQCB0YXJfd3IgKHJlZ2lzdGVyIEFSQ0hEICogYXJjbikKLSAgICAgICAgKiBkYXRhIGZvbGxvd3MgdGhpcyBmaWxlLCBzbyBzZXQgdGhlIHBhZAotICAgICAgICAqLwotICAgICAgIGhkLT5saW5rZmxhZyA9IEFSRUdUWVBFOwotLSNpZiBkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NAotKyNpZiAoU0laRU9GX0xPTkcgPT0gNCAmJiBTSVpFT0ZfT0ZGX1QgPT0gOCkgXAotKyAgICB8fCAoZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgX0ZJTEVfT0ZGU0VUX0JJVFMgPT0gNjQpCi0gICAgICAgaWYgKHVxZF9vY3QgKCh1X3F1YWRfdCkgYXJjbi0+c2Iuc3Rfc2l6ZSwgaGQtPnNpemUsCi0gCQkgICBzaXplb2YgKGhkLT5zaXplKSwgMSkpCi0gI2Vsc2UKLUBAIC04MzQsNyArODM4LDggQEAgdXN0YXJfcmQgKEFSQ0hEICphcmNuLCBjaGFyICpidWYpCi0gICAgKi8KLSAgIGFyY24tPnNiLnN0X21vZGUgPSAobW9kZV90KSAoYXNjX3VsIChoZC0+bW9kZSwgc2l6ZW9mIChoZC0+bW9kZSksIE9DVCkgJgotIAkJCSAgICAgICAweGZmZik7Ci0tI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0Ci0rI2lmIChTSVpFT0ZfTE9ORyA9PSA0ICYmIFNJWkVPRl9PRkZfVCA9PSA4KSBcCi0rICAgIHx8IChkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKLSAgIGFyY24tPnNiLnN0X3NpemUgPSAob2ZmX3QpIGFzY191cWQgKGhkLT5zaXplLCBzaXplb2YgKGhkLT5zaXplKSwgT0NUKTsKLSAjZWxzZQotICAgYXJjbi0+c2Iuc3Rfc2l6ZSA9IChvZmZfdCkgYXNjX3VsIChoZC0+c2l6ZSwgc2l6ZW9mIChoZC0+c2l6ZSksIE9DVCk7Ci1AQCAtMTA4MSw3ICsxMDg2LDggQEAgdXN0YXJfd3IgKHJlZ2lzdGVyIEFSQ0hEICogYXJjbikKLSAgICAgICBlbHNlCi0gCWhkLT50eXBlZmxhZyA9IFJFR1RZUEU7Ci0gICAgICAgYXJjbi0+cGFkID0gVEFSX1BBRCAoYXJjbi0+c2Iuc3Rfc2l6ZSk7Ci0tI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIF9GSUxFX09GRlNFVF9CSVRTID09IDY0Ci0rI2lmIChTSVpFT0ZfTE9ORyA9PSA0ICYmIFNJWkVPRl9PRkZfVCA9PSA4KSBcCi0rICAgIHx8IChkZWZpbmVkKF9GSUxFX09GRlNFVF9CSVRTKSAmJiBfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKLSAgICAgICBpZiAodXFkX29jdCAoKHVfcXVhZF90KSBhcmNuLT5zYi5zdF9zaXplLCBoZC0+c2l6ZSwKLSAJCSAgIHNpemVvZiAoaGQtPnNpemUpLCAzKSkKLSAJewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4XzMuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheF8zLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZjlhODEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4XzMuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiUG9ydGFibGUgQXJjaGl2ZSBlWGNoYW5nZSIKLURFU0NSSVBUSU9OID0gInBheCAoUG9ydGFibGUgQXJjaGl2ZSBlWGNoYW5nZSkgaXMgdGhlIFBPU0lYIHN0YW5kYXJkIGFyY2hpdmUgdG9vbCIKLUhPTUVQQUdFID0gImh0dHA6Ly9jdnN3ZWIub3BlbmJzZC5vcmcvY2dpLWJpbi9jdnN3ZWIvc3JjL2Jpbi9wYXgvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3Lm9wZW5ic2Qub3JnL3F1ZXJ5LXByLmh0bWwiCi0KLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGIwYjY3NGRmZGM1NmRhYTM4MzJkNDA2OWI4MjBlYTAgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3BheC5oO2VuZGxpbmU9NDA7bWQ1PTMwOWQzZTI0MWMxZDgyMDY5MjI4ZTVhNTFlOWI4ZDYwIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9jcGlvLmg7ZW5kbGluZT00MDttZDU9YzNiNGJiZmY2MTMzYTgzMzg3OTY4NjE3YmJhZThhYzQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3Zpcy5oO2VuZGxpbmU9NDA7bWQ1PWIyODNmNzU5YWJkNGE1YWQ3ZTAxNGI4MGY1MWZjMDUzIgotCi1TRUNUSU9OID0gImJhc2UiCi1QUiA9ICJyMiIKLQotREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBmdHMgIgotCi1TUkNfVVJJID0gImh0dHA6Ly9wa2dzLmZlZG9yYXByb2plY3Qub3JnL3JlcG8vcGtncy8ke0JQTn0vJHtCUH0udGFyLmJ6Mi9mYmQ5MDIzYjU5MGI0NWFjM2FkZTk1ODcwNzAyYTBkNi8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeF9mb3JfY29tcGlsZV93aXRoX2djYy00LjYuMC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wYXgtMy40X2ZpeF9mb3JfeDMyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLWRlZmluaXRpb25zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWEtY29tbWVudC1mb3ItZmFsbHRocm91Z2gucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXVzZS1zdHJ0b2xsLWluc3RlYWQtb2Ytc3RydG9xLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImZiZDkwMjNiNTkwYjQ1YWMzYWRlOTU4NzA3MDJhMGQ2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFjM2MwNjA0OGUwMjgyODA3N2NmNzc1N2QzZDE0MjI0MTQyOTIzODg5M2I5MWQ1MjlhZjI5YTJlOGNjNTYyM2IiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGliY29udmVydC1hc24xLXBlcmxfMC4yNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJjb252ZXJ0LWFzbjEtcGVybF8wLjI3LmJiCmluZGV4IDE3MGU3ZWMuLjY0NGQ4MjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJjb252ZXJ0LWFzbjEtcGVybF8wLjI3LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJjb252ZXJ0LWFzbjEtcGVybF8wLjI3LmJiCkBAIC0xMCw3ICsxMCw3IEBACiAKIFMgPSAiJHtXT1JLRElSfS9Db252ZXJ0LUFTTjEtJHtQVn0iCiAKLWluaGVyaXQgY3BhbgoraW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKIAogRVhUUkFfUEVSTEZMQUdTID0gIi1JICR7UEVSTEhPU1RMSUJ9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlidGltZWRhdGUtcGVybF8yLjMwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnRpbWVkYXRlLXBlcmxfMi4zMC5iYgppbmRleCA0Mjc2MTNjLi44ZTE0NjFjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlidGltZWRhdGUtcGVybF8yLjMwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ0aW1lZGF0ZS1wZXJsXzIuMzAuYmIKQEAgLTksNyArOSw3IEBACiAKIFMgPSAiJHtXT1JLRElSfS9UaW1lRGF0ZS0ke1BWfSIKIAotaW5oZXJpdCBjcGFuCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1uYW1lc3BhY2VzdXBwb3J0LXBlcmxfMS4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtbmFtZXNwYWNlc3VwcG9ydC1wZXJsXzEuMTIuYmIKaW5kZXggMzQ5OGEyOC4uZmE5Zjk5NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1uYW1lc3BhY2VzdXBwb3J0LXBlcmxfMS4xMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLW5hbWVzcGFjZXN1cHBvcnQtcGVybF8xLjEyLmJiCkBAIC02LDE4ICs2LDIyIEBACiAKIFNFQ1RJT04gPSAibGlicyIKIExJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1QUiA9ICJyMyIKIAotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTUVUQS55bWw7YmVnaW5saW5lPTIyO2VuZGxpbmU9MjI7bWQ1PTljYTFhNGE5NDE0OTZlN2ZlZWRhYzcyYzRmYjhiMTM3IgorU1JDTkFNRSA9ICJYTUwtTmFtZXNwYWNlU3VwcG9ydCIKIAotU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9QL1BFL1BFUklHUklOL1hNTC1OYW1lc3BhY2VTdXBwb3J0LSR7UFZ9LnRhci5neiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWM5ZDhhMTE3ZTc2MjBiNWFkZjhkNjljMjk2MTNjZWFiIgorCitTUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvUC9QRS9QRVJJR1JJTi8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiIKIFNSQ19VUklbbWQ1c3VtXSA9ICJhODkxNmM2ZDA5NWJjZjA3M2UxMTA4YWYwMmU3OGM5NyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI0N2U5OTU4NTlmOGRkMDQxM2FhM2YyMmQzNTBjNGE2MmRhNjUyZTg1NDI2N2FhMDU4NmFlNTQ0YWUyYmFlNWVmIgogCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJYTUxcLU5hbWVzcGFjZVN1cHBvcnRcLSg/UDxwdmVyPihcZCtcLlxkKykpKD8hX1xkKykudGFyIgogCi1TID0gIiR7V09SS0RJUn0vWE1MLU5hbWVzcGFjZVN1cHBvcnQtJHtQVn0iCitTID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKIAotaW5oZXJpdCBjcGFuCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAicGVybC1tb2R1bGUtdGVzdC1tb3JlIgogCiBCQkNMQVNTRVhURU5EPSJuYXRpdmUiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LWJhc2UtcGVybF8xLjA5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtYmFzZS1wZXJsXzEuMDkuYmIKaW5kZXggY2QzYTU4MC4uYjNlMDFlOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtYmFzZS1wZXJsXzEuMDkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtYmFzZS1wZXJsXzEuMDkuYmIKQEAgLTE5LDYgKzE5LDYgQEAKIAogUyA9ICIke1dPUktESVJ9L1hNTC1TQVgtQmFzZS0ke1BWfSIKIAotaW5oZXJpdCBjcGFuCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LXBlcmxfMC45OS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LXBlcmxfMC45OS5iYgppbmRleCBhZDMxYjljLi5jZGNiZWJmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLXNheC1wZXJsXzAuOTkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtcGVybF8wLjk5LmJiCkBAIC0yMyw2ICsyMywxMSBAQAogCiBTID0gIiR7V09SS0RJUn0vWE1MLVNBWC0ke1BWfSIKIAotaW5oZXJpdCBjcGFuCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWNwIC1yICR7Qn0vdGVzdGZpbGVzICR7RH0ke1BURVNUX1BBVEh9CisJY2hvd24gLVIgcm9vdDpyb290ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RmaWxlcworfQogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGlnei9waWd6LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGlnei9waWd6LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTc4ZjkwNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BpZ3ovcGlnei5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1TVU1NQVJZID0gIkEgcGFyYWxsZWwgaW1wbGVtZW50YXRpb24gb2YgZ3ppcCIKLURFU0NSSVBUSU9OID0gInBpZ3osIHdoaWNoIHN0YW5kcyBmb3IgcGFyYWxsZWwgaW1wbGVtZW50YXRpb24gb2YgZ3ppcCwgaXMgYSBcCi1mdWxseSBmdW5jdGlvbmFsIHJlcGxhY2VtZW50IGZvciBnemlwIHRoYXQgZXhwbG9pdHMgbXVsdGlwbGUgcHJvY2Vzc29ycyBhbmQgXAotbXVsdGlwbGUgY29yZXMgdG8gdGhlIGhpbHQgd2hlbiBjb21wcmVzc2luZyBkYXRhLiBwaWd6IHdhcyB3cml0dGVuIGJ5IE1hcmsgXAotQWRsZXIsIGFuZCB1c2VzIHRoZSB6bGliIGFuZCBwdGhyZWFkIGxpYnJhcmllcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vemxpYi5uZXQvcGlnei8iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIlpsaWIgJiBBcGFjaGUtMi4wIgotCi1QUk9WSURFU19jbGFzcy1uYXRpdmUgKz0gImd6aXAtbmF0aXZlIgotCi1ERVBFTkRTID0gInpsaWIiCi0KLUVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotZG9faW5zdGFsbF9jbGFzcy10YXJnZXQoKSB7Ci0JIyBJbnN0YWxsIGZpbGVzIGludG8gL2JpbiAoRkhTKSwgd2hpY2ggaXMgdHlwaWNhbCBwbGFjZSBmb3IgZ3ppcAotCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9Ci0JaW5zdGFsbCAke0J9L3BpZ3ogJHtEfSR7YmFzZV9iaW5kaXJ9L3BpZ3oKLQlsbiAtbnNmIHBpZ3ogJHtEfSR7YmFzZV9iaW5kaXJ9L3VucGlnegotCWxuIC1uc2YgcGlneiAke0R9JHtiYXNlX2JpbmRpcn0vcGlnemNhdAotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWluc3RhbGwgJHtCfS9waWd6ICR7RH0ke2JpbmRpcn0vZ3ppcAotCWxuIC1uc2YgZ3ppcCAke0R9JHtiaW5kaXJ9L2d1bnppcAotCWxuIC1uc2YgZ3ppcCAke0R9JHtiaW5kaXJ9L3pjYXQKLX0KLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiODAiCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJndW56aXAgZ3ppcCB6Y2F0IgotQUxURVJOQVRJVkVfJHtQTn1fY2xhc3MtbmF0aXZlc2RrID0gIiIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtndW56aXBdID0gIiR7YmFzZV9iaW5kaXJ9L2d1bnppcCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtnemlwXSA9ICIke2Jhc2VfYmluZGlyfS9nemlwIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3pjYXRdID0gIiR7YmFzZV9iaW5kaXJ9L3pjYXQiCi1BTFRFUk5BVElWRV9UQVJHRVQgPSAiJHtiYXNlX2JpbmRpcn0vcGlneiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGlnei9waWd6XzIuMy40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9waWd6L3BpZ3pfMi4zLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0ODMyZGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9waWd6L3BpZ3pfMi4zLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIHBpZ3ouaW5jCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9waWd6LmM7YmVnaW5saW5lPTc7ZW5kbGluZT0yMTttZDU9YTIxZDQwNzVjYjAwYWI0Y2ExN2ZjZTVlNzUzNGNhOTUiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vemxpYi5uZXQvJHtCUE59LyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInBpZ3otKD9QPHB2ZXI+LiopXC50YXIiCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9tYWRsZXIvcGlnei9hcmNoaXZlL3Yke1BWfS50YXIuZ3o7ZG93bmxvYWRmaWxlbmFtZT0ke0JQfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiYzEwOTA1NzA1MGIxNWVkZjNlYjliYjRkMDgwNTIzNWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzYzZjJmZGIyMDNhYTBiN2I2NDBlNjMzODVlMzhlNWRkNGU1YWFhMDQxYmM4ZTQyYWE5NmYyZWYxNTZiMDZlOCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BpZ3ovcGlnel8yLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BpZ3ovcGlnel8yLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU2ZGE5YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGlnei9waWd6XzIuNC5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIkEgcGFyYWxsZWwgaW1wbGVtZW50YXRpb24gb2YgZ3ppcCIKK0RFU0NSSVBUSU9OID0gInBpZ3osIHdoaWNoIHN0YW5kcyBmb3IgcGFyYWxsZWwgaW1wbGVtZW50YXRpb24gb2YgZ3ppcCwgaXMgYSBcCitmdWxseSBmdW5jdGlvbmFsIHJlcGxhY2VtZW50IGZvciBnemlwIHRoYXQgZXhwbG9pdHMgbXVsdGlwbGUgcHJvY2Vzc29ycyBhbmQgXAorbXVsdGlwbGUgY29yZXMgdG8gdGhlIGhpbHQgd2hlbiBjb21wcmVzc2luZyBkYXRhLiBwaWd6IHdhcyB3cml0dGVuIGJ5IE1hcmsgXAorQWRsZXIsIGFuZCB1c2VzIHRoZSB6bGliIGFuZCBwdGhyZWFkIGxpYnJhcmllcy4iCitIT01FUEFHRSA9ICJodHRwOi8vemxpYi5uZXQvcGlnei8iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIlpsaWIgJiBBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcGlnei5jO21kNT05YWU2ZGVlOGNlYmE5NjEwNTk2ZWQwYWRhNDkzZDE0MjtiZWdpbmxpbmU9NztlbmRsaW5lPTIxIgorCitTUkNfVVJJID0gImh0dHA6Ly96bGliLm5ldC8ke0JQTn0vZm9zc2lscy8ke0JQfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiZGVmMmY2ZTE5ZDlkODIzMTQ0NWFkYzEzNDlkMzQ2ZGYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTRmODE2MjIyYTdiNDI2OWJkMjMyNjgwNTkwYjU3OWNjYzcyNTkxZjFiYjVhZGFmY2Q3MjA4Y2E3N2UxNGY3MyIKKyMgUG9pbnQgdGhpcyBhdCB0aGUgaG9tZXBhZ2UgaW4gY2FzZSAvZm9zc2lscy8gaXNuJ3QgdXBkYXRlZAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly96bGliLm5ldC8ke0JQTn0vIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicGlnei0oP1A8cHZlcj4uKilcLnRhciIKKworREVQRU5EUyA9ICJ6bGliIgorCitFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKKworZG9faW5zdGFsbCgpIHsKKwkjIEluc3RhbGwgZmlsZXMgaW50byAvYmluIChGSFMpLCB3aGljaCBpcyB0eXBpY2FsIHBsYWNlIGZvciBnemlwCisJaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKwlpbnN0YWxsICR7Qn0vcGlneiAke0R9JHtiYXNlX2JpbmRpcn0vcGlnegorCWxuIC1uc2YgcGlneiAke0R9JHtiYXNlX2JpbmRpcn0vdW5waWd6CisJbG4gLW5zZiBwaWd6ICR7RH0ke2Jhc2VfYmluZGlyfS9waWd6Y2F0Cit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwc18zLjMuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHNfMy4zLjEyLmJiCmluZGV4IGFkYWJkNzUuLmVjZjIxNWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwc18zLjMuMTIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzXzMuMy4xMi5iYgpAQCAtMSw3ICsxLDcgQEAKIFNVTU1BUlkgPSAiU3lzdGVtIGFuZCBwcm9jZXNzIG1vbml0b3JpbmcgdXRpbGl0aWVzIgogREVTQ1JJUFRJT04gPSAiUHJvY3BzIGNvbnRhaW5zIGEgc2V0IG9mIHN5c3RlbSB1dGlsaXRpZXMgdGhhdCBwcm92aWRlIHN5c3RlbSBpbmZvcm1hdGlvbiBhYm91dCBwcm9jZXNzZXMgdXNpbmcgXAogdGhlIC9wcm9jIGZpbGVzeXN0ZW0uIFRoZSBwYWNrYWdlIGluY2x1ZGVzIHRoZSBwcm9ncmFtcyBwcywgdG9wLCB2bXN0YXQsIHcsIGtpbGwsIGFuZCBza2lsbC4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdG9yaW91cy5vcmcvcHJvY3BzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRsYWIuY29tL3Byb2Nwcy1uZy9wcm9jcHMiCiBTRUNUSU9OID0gImJhc2UiCiBMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNPSJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXApAQCAtMjMsOCArMjMsNiBAQAogCiBFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2tpbGwgLS1kaXNhYmxlLW1vZGVybi10b3AiCiAKLUNQUEZMQUdTICs9ICItSSR7U30iCi0KIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKIAlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQogCVsgIiR7YmluZGlyfSIgIT0gIiR7YmFzZV9iaW5kaXJ9IiBdICYmIGZvciBpIGluICR7YmFzZV9iaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke2Jhc2VfYmluZGlyfS8kaTsgZG9uZQpAQCAtNDQsNyArNDIsNyBAQAogCiBDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9zeXNjdGwuY29uZiIKIAotYmluZGlyX3Byb2dzID0gImZyZWUgcGtpbGwgcG1hcCBwZ3JlcCBwd2R4IHNraWxsIHNuaWNlIHRvcCB1cHRpbWUiCitiaW5kaXJfcHJvZ3MgPSAiZnJlZSBwa2lsbCBwbWFwIHBncmVwIHB3ZHggc2tpbGwgc25pY2UgdG9wIHVwdGltZSB3IgogYmFzZV9iaW5kaXJfcHJvZ3MgKz0gImtpbGwgcGlkb2YgcHMgd2F0Y2giCiBiYXNlX3NiaW5kaXJfcHJvZ3MgKz0gInN5c2N0bCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvZmlsZXMvMDAwMS1UeXBvLWluLWZ1c2VyLW1ha2VzLU0tb24tYWxsLXRoZS10aW1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvZmlsZXMvMDAwMS1UeXBvLWluLWZ1c2VyLW1ha2VzLU0tb24tYWxsLXRoZS10aW1lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTdkNjBmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL2ZpbGVzLzAwMDEtVHlwby1pbi1mdXNlci1tYWtlcy1NLW9uLWFsbC10aGUtdGltZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gMzYzOGNjNTViNGQwODg1MWZhYmE0NjYzNWQ3MzdiMjRkMDE2NjY1YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJyYWQgSm9yc2NoIDxhbm9taWVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogRnJpLCAyOCBGZWIgMjAxNCAyMTo1NTowMiArMTEwMAotU3ViamVjdDogW1BBVENIXSBUeXBvIGluIGZ1c2VyIG1ha2VzIC1NIG9uIGFsbCB0aGUgdGltZQotCi1CcmFkIGZvdW5kIHRoYXQgZnVzZXIgaGFkIHRoZSAtTSBvcHRpb24gb24gYWxsIHRoZSB0aW1lLgotQSBzaW1wbGUgYnV0IHNpZ25pZmljYW50IHR5cG8gY2F1c2VkIHRoaXMsIHRoYW5rcyB0aGUgdGhlIHBhdGNoLgotCi1CdWctRGViaWFuOiBodHRwOi8vYnVncy5kZWJpYW4ub3JnLzc0MDI3NQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENyYWlnIFNtYWxsIDxjc21hbGxAZW5jLmNvbS5hdT4KLS0tLQotIENoYW5nZUxvZyAgIHwgNCArKysrCi0gc3JjL2Z1c2VyLmMgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwotaW5kZXggZmQxY2NjZi4uZTVmNzg0YyAxMDA2NDQKLS0tLSBhL0NoYW5nZUxvZwotKysrIGIvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDcgQEAKLStDaGFuZ2VzIGluIDIyLjIyCi0rPT09PT09PT09PT09PT09PQotKwkqIEZpeGVkIHR5cG8gaW4gZnVzZXIgd2hpY2ggaGFzIC1NIG9uIERlYmlhbiAjNzQwMjc1Ci0rCi0gQ2hhbmdlcyBpbiAyMi4yMQotID09PT09PT09PT09PT09PT0KLSAJKiBNaXNzaW5nIGNvbW1hIGluIGZ1c2VyKDEpIGFkZGVkIERlYmlhbiAjNzAyMzkxCi1kaWZmIC0tZ2l0IGEvc3JjL2Z1c2VyLmMgYi9zcmMvZnVzZXIuYwotaW5kZXggYjQ4NWY2NS4uMzg5YjMwMiAxMDA2NDQKLS0tLSBhL3NyYy9mdXNlci5jCi0rKysgYi9zcmMvZnVzZXIuYwotQEAgLTExNzQsNyArMTE3NCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCQl1c2FnZShfKCJObyBwcm9jZXNzIHNwZWNpZmljYXRpb24gZ2l2ZW4iKSk7Ci0gCi0gCS8qIENoZWNrIGlmIC1NIGZsYWcgd2FzIHVzZWQgYW5kIGlmIHNvIGNoZWNrIG1vdW50cyAqLwotLQlpZiAob3B0cyAqIE9QVF9JU01PVU5UUE9JTlQpIHsKLSsJaWYgKG9wdHMgJiBPUFRfSVNNT1VOVFBPSU5UKSB7Ci0gCSAgICBjaGVja19tb3VudHBvaW50cygmbW91bnRzLCAmbmFtZXNfaGVhZCwgJm5hbWVzX3RhaWwpOwotIAl9Ci0gCi0tLSAKLTEuOC40LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvZmlsZXMvMDAwMi1JbmNsdWRlLWxpbWl0cy5oLWZvci1QQVRIX01BWC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL2ZpbGVzLzAwMDItSW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4YWZjYWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvZmlsZXMvMDAwMi1JbmNsdWRlLWxpbWl0cy5oLWZvci1QQVRIX01BWC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gYWE2NmFmZWNkOGJhOWNjNDEzOWYyNWFiMTVlYzMxNTE3MzQxM2E3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdWwgQmFya2VyIDxwYXVsQHBhdWxiYXJrZXIubWUudWs+Ci1EYXRlOiBXZWQsIDIwIEF1ZyAyMDE0IDEwOjMxOjM3ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIEluY2x1ZGUgPGxpbWl0cy5oPiBmb3IgUEFUSF9NQVgKLQotV2hlbiBidWlsZGluZyBhZ2FpbnN0IG11c2wgbGliYywgUEFUSF9NQVggaXMgZGVmaW5lZCBpbiA8bGltaXRzLmg+LgotCi1TaWduZWQtb2ZmLWJ5OiBQYXVsIEJhcmtlciA8cGF1bEBwYXVsYmFya2VyLm1lLnVrPgotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIChTaG91bGQgYmUgaW4gbmV4dCByZWxlYXNlIGFmdGVyIDIyLjIxKQotLS0tCi0gc3JjL3BzdHJlZS5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvcHN0cmVlLmMgYi9zcmMvcHN0cmVlLmMKLWluZGV4IDA3MWU2YzQuLjBkMjgyNjAgMTAwNjQ0Ci0tLS0gYS9zcmMvcHN0cmVlLmMKLSsrKyBiL3NyYy9wc3RyZWUuYwotQEAgLTQxLDYgKzQxLDcgQEAKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSAKLSAjaW5jbHVkZSAiaTE4bi5oIgotICNpbmNsdWRlICJjb21tLmgiCi0tLSAKLTIuMC40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2MuaW5jCmluZGV4IDY2YTc4NGIuLjgyZWY5NDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLmluYwpAQCAtMTYsNiArMTYsMTUgQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dAogCisjIFVwc3RyZWFtIGhhcyBhIGN1c3RvbSBhdXRvZ2VuLnNoIHdoaWNoIGludm9rZXMgcG8vdXBkYXRlLXBvdGZpbGVzIGFzIHRoZXkgCisjIGRvbid0IHNoaXAgYSBwby9QT1RGSUxFUy5pbiAod2hpY2ggaXMgc2lsbHkpLiAgV2l0aG91dCB0aGF0IGZpbGUgZ2V0dGV4dCAKKyMgZG9lc24ndCBiZWxpZXZlIHBvLyBpcyBhIGdldHRleHQgZGlyZWN0b3J5IGFuZCB3b24ndCBnZW5lcmF0ZSBwby9NYWtlZmlsZS4KK0VYVFJBX0FVVE9SRUNPTkZfcmVtb3ZlID0gIi0tZXhjbHVkZT1hdXRvcG9pbnQiCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAoIGNkICR7U30gJiYgcG8vdXBkYXRlLXBvdGZpbGVzICkKK30KKworCiBQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKIFBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy8wMDAxLU1ha2VmaWxlLmFtLWNyZWF0ZS1zcmMtZGlyZWN0b3J5LWJlZm9yZS1hdHRlbXB0aW5nLXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2MvMDAwMS1NYWtlZmlsZS5hbS1jcmVhdGUtc3JjLWRpcmVjdG9yeS1iZWZvcmUtYXR0ZW1wdGluZy10LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNDQ0OTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2MvMDAwMS1NYWtlZmlsZS5hbS1jcmVhdGUtc3JjLWRpcmVjdG9yeS1iZWZvcmUtYXR0ZW1wdGluZy10LnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gMjg1ODc3Yjc3NjFkNzQ3MzZhY2EyNjg3ZWQ5YmVmMmY3OGI4MmMzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCAyIE5vdiAyMDE3IDE2OjIxOjIyICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLmFtOiBjcmVhdGUgc3JjIGRpcmVjdG9yeSBiZWZvcmUgYXR0ZW1wdGluZyB0byB3cml0ZQorIHRoZXJlCisKK090aGVyd2lzZSBvdXQgb2YgdHJlZSBidWlsZHMgd2lsbCBmYWlsLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCA5ZjYxYWI0Li5iNGNlZDdmIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtNzksNyArNzksNyBAQCBFWFRSQV9ESVNUID0gc3JjL3NpZ25hbWVzLmMgUkVBRE1FLm1kCisgQ0xFQU5GSUxFUyA9IHNyYy9zaWduYW1lcy5oCisgCisgc3JjL3NpZ25hbWVzLmg6IHNyYy9zaWduYW1lcy5jIE1ha2VmaWxlCistCQlleHBvcnQgTENfQUxMPUMgOyBcCisrCQlleHBvcnQgTENfQUxMPUMgOyBta2RpciAtcCBzcmMgOyBcCisgCQlAQ1BQQCAtZE0gJDwgfFwKKyAJCXRyIC1zICdcdCAnICcgJyB8IHNvcnQgLW4gLWsgMyB8IHNlZCBcCisgCSdzOiNkZWZpbmUgU0lHXChbQS1aXVtBLVpdKlswLTldKlwpIFwoWzAtOV1bMC05XSpcKS4qJFw6e1wgXDIsIlwxIiB9LDpwO2QnIHwgXAorLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIyLjIxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIyLjIxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzY0NzNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzY18yMi4yMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLXJlcXVpcmUgcHNtaXNjLmluYwotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTM1YzBmZDZlYjIwODI4ODI2MmIzODVmYTY1NmYxYmYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTczMjNjYWQ2MTkyMTA4NDViNjk2ZDdkNzIyYzM4Mzg1MmIyYWNiNWM0OWI1YjA4NTJjNGYyOWM3N2E4MTQ1YSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHNtaXNjL3BzbWlzYy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1UeXBvLWluLWZ1c2VyLW1ha2VzLU0tb24tYWxsLXRoZS10aW1lLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItSW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtVUlOVFBUUl9NQVgtaW5zdGVhZC1vZi1fX1dPUkRTSVpFLnBhdGNoIFwKLSAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIzLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2NfMjMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjA3ZjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIzLjAuYmIKQEAgLTAsMCArMSwxMCBAQAorcmVxdWlyZSBwc21pc2MuaW5jCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0bGFiLmNvbS9wc21pc2MvcHNtaXNjLmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1VSU5UUFRSX01BWC1pbnN0ZWFkLW9mLV9fV09SRFNJWkUucGF0Y2ggXAorCSAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLWNyZWF0ZS1zcmMtZGlyZWN0b3J5LWJlZm9yZS1hdHRlbXB0aW5nLXQucGF0Y2jCoFwKKyAgICAgICAgICAgIgorU1JDUkVWID0gIjY3YjFkYTI2OGY0YzBjZTY4NTk5ODBlM2RmY2ZhZWM1YjI0NDhlODAiCitTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDAxLURvLW5vdC1hY2NpZGVudGFseS1vdmVycmlkZS1jb21tYW5kbGluZS1wYXNzZWQtQ0ZMQUcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDEtRG8tbm90LWFjY2lkZW50YWx5LW92ZXJyaWRlLWNvbW1hbmRsaW5lLXBhc3NlZC1DRkxBRy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmFkZDQ3MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDEtRG8tbm90LWFjY2lkZW50YWx5LW92ZXJyaWRlLWNvbW1hbmRsaW5lLXBhc3NlZC1DRkxBRy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gNzc2NzU3YTIzZTk5MzA1ODg5NTBjN2ZjYmM3ODI3ZWM3YTNlNTFjNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9Ub209QzM9QTE9QzU9QTE9MjBDaHY9QzM9QTF0YWw/PSA8dGNodmF0YWxAc3VzZS5jb20+Ci1EYXRlOiBNb24sIDQgSmFuIDIwMTYgMTU6NDg6MTkgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGFjY2lkZW50YWx5IG92ZXJyaWRlIGNvbW1hbmRsaW5lIHBhc3NlZCBDRkxBR1MuCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogVG9tw6HFoSBDaHbDoXRhbCA8dGNodmF0YWxAc3VzZS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBKYW4gS2FyYSA8amFja0BzdXNlLmN6PgotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDNiYTEzODYuLjE1NTJjMTUgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTUzLDcgKzUzLDcgQEAgQVNfSUYoW3Rlc3QgIngke3ByZWZpeH0iID0gInhOT05FIl0sIFsKLSAjID09PT09PT09PT09PT09PT0KLSAjIENoZWNrIGZvciBjZmxhZ3MKLSAjID09PT09PT09PT09PT09PT0KLS1DRkxBR1M9Ii1EX0dOVV9TT1VSQ0UgLVdhbGwgLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCi0rQ0ZMQUdTPSIkQ0ZMQUdTIC1EX0dOVV9TT1VSQ0UgLVdhbGwgLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCi0gQUNfQVJHX0VOQUJMRShbd2Vycm9yXSwKLSAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS13ZXJyb3JdLCBbVHJlYXQgYWxsIHdhcm5pbmdzIGFzIGVycm9ycywgdXNlZnVsIGZvciBkZXZlbG9wbWVudF0pXSwKLSAgICAgW2VuYWJsZV93ZXJyb3I9IiRlbmFibGV2YWwiXSwKLS0tIAotMi40LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDAxLUZpeC1idWlsZC13aXRoLWRpc2FibGVkLWxkYXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDEtRml4LWJ1aWxkLXdpdGgtZGlzYWJsZWQtbGRhcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc5ZTQ3Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDEtRml4LWJ1aWxkLXdpdGgtZGlzYWJsZWQtbGRhcC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLUZyb20gMzlmZDMwY2U1N2UzYzM0YzM2NDk4NjZiZjkzNDVhNzFmMGI3ODY2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+Ci1EYXRlOiBNb24sIDQgSmFuIDIwMTYgMTU6MTA6NTMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGggZGlzYWJsZWQgbGRhcAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVJlcG9ydGVkLWJ5OiBUb21hcyBDaHZhdGFsIDx0Y2h2YXRhbEBzdXNlLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+Ci1TaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLS0tLQotIHdhcm5xdW90YS5jIHwgMzYgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvd2FybnF1b3RhLmMgYi93YXJucXVvdGEuYwotaW5kZXggMzczNGYwZS4uZTk4NjhjMSAxMDA2NDQKLS0tLSBhL3dhcm5xdW90YS5jCi0rKysgYi93YXJucXVvdGEuYwotQEAgLTEwOSwxMyArMTA5LDEzIEBAIHN0cnVjdCBjb25maWdwYXJhbXMgewotIAljaGFyICp1c2VyX3NpZ25hdHVyZTsKLSAJY2hhciAqZ3JvdXBfbWVzc2FnZTsKLSAJY2hhciAqZ3JvdXBfc2lnbmF0dXJlOwotKwl0aW1lX3QgY2NfYmVmb3JlOwotKyNpZmRlZiBVU0VfTERBUF9NQUlMX0xPT0tVUAotIAlpbnQgdXNlX2xkYXBfbWFpbDsgLyogMCAqLwotKwlpbnQgbGRhcF9pc19zZXR1cDsgLyogMCAqLwotIAlpbnQgbGRhcF9zdGFydHRsczsgLyogMCAqLwotIAlpbnQgbGRhcF90bHM7IC8qIExEQVBfT1BUX1hfVExTX05FVkVSICovCi0gCWludCBsZGFwX3ZlcnM7IC8qIExEQVBfVkVSU0lPTjMgKi8KLS0JdGltZV90IGNjX2JlZm9yZTsKLS0jaWZkZWYgVVNFX0xEQVBfTUFJTF9MT09LVVAKLS0JaW50IGxkYXBfaXNfc2V0dXA7IC8qIDAgKi8KLSAJY2hhciBsZGFwX2hvc3RbQ05GX0JVRkZFUl07Ci0gCWludCBsZGFwX3BvcnQ7Ci0gCWNoYXIgbGRhcF91cmlbQ05GX0JVRkZFUl07Ci1AQCAtNzI5LDEzICs3MjksMTMgQEAgc3RhdGljIGludCByZWFkY29uZmlnZmlsZShjb25zdCBjaGFyICpmaWxlbmFtZSwgc3RydWN0IGNvbmZpZ3BhcmFtcyAqY29uZmlnKQotIAl9Ci0gCW1haWxkZXZbMF0gPSAwOwotIAljb25maWctPnVzZXJfc2lnbmF0dXJlID0gY29uZmlnLT51c2VyX21lc3NhZ2UgPSBjb25maWctPmdyb3VwX3NpZ25hdHVyZSA9IGNvbmZpZy0+Z3JvdXBfbWVzc2FnZSA9IE5VTEw7Ci0rCWNvbmZpZy0+Y2NfYmVmb3JlID0gLTE7Ci0rCi0rI2lmZGVmIFVTRV9MREFQX01BSUxfTE9PS1VQCi0gCWNvbmZpZy0+dXNlX2xkYXBfbWFpbCA9IDA7Ci0gCWNvbmZpZy0+bGRhcF9zdGFydHRscyA9IDA7Ci0gCWNvbmZpZy0+bGRhcF90bHMgPSBMREFQX09QVF9YX1RMU19ORVZFUjsKLSAJY29uZmlnLT5sZGFwX3ZlcnMgPSBMREFQX1ZFUlNJT04zOwotLQljb25maWctPmNjX2JlZm9yZSA9IC0xOwotLQotLSNpZmRlZiBVU0VfTERBUF9NQUlMX0xPT0tVUAotIAljb25maWctPmxkYXBfcG9ydCA9IGNvbmZpZy0+bGRhcF9pc19zZXR1cCA9IDA7Ci0gCWNvbmZpZy0+bGRhcF9ob3N0WzBdID0gMDsKLSAJY29uZmlnLT5sZGFwX3VyaVswXSA9IDA7Ci1AQCAtODIwLDYgKzgyMCwxOCBAQCBzdGF0aWMgaW50IHJlYWRjb25maWdmaWxlKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzdHJ1Y3QgY29uZmlncGFyYW1zICpjb25maWcpCi0gCQkJCWNyZWF0ZV9lb2xuKGNvbmZpZy0+Z3JvdXBfc2lnbmF0dXJlKTsKLSAJCQkJdmVyaWZ5X2Zvcm1hdChjb25maWctPmdyb3VwX3NpZ25hdHVyZSwgIkdST1VQX1NJR05BVFVSRSIpOwotIAkJCX0KLSsJCQllbHNlIGlmICghc3RyY21wKHZhciwgIkNDX0JFRk9SRSIpKSB7Ci0rCQkJCWludCBudW07Ci0rCQkJCWNoYXIgdW5pdFsxMF07Ci0rCi0rCQkJCWlmIChzc2NhbmYodmFsdWUsICIlZCVzIiwgJm51bSwgdW5pdCkgIT0gMikKLSsJCQkJCWdvdG8gY2NfcGFyc2VfZXJyOwotKwkJCQlpZiAoc3RyMnRpbWV1bml0cyhudW0sIHVuaXQsICZjb25maWctPmNjX2JlZm9yZSkgPCAwKSB7Ci0rY2NfcGFyc2VfZXJyOgotKwkJCQkJZGllKDEsIF8oIkNhbm5vdCBwYXJzZSB0aW1lIGF0IENDX0JFRk9SRSB2YXJpYWJsZSAobGluZSAlZCkuXG4iKSwgbGluZSk7Ci0rCQkJCX0KLSsJCQl9Ci0rI2lmZGVmIFVTRV9MREFQX01BSUxfTE9PS1VQCi0gCQkJZWxzZSBpZiAoIXN0cmNtcCh2YXIsICJMREFQX01BSUwiKSkgewotIAkJCQlpZihzdHJjYXNlY21wKHZhbHVlLCAidHJ1ZSIpID09IDApIAotIAkJCQkJY29uZmlnLT51c2VfbGRhcF9tYWlsID0gMTsKLUBAIC04NDYsMTggKzg1OCw2IEBAIHN0YXRpYyBpbnQgcmVhZGNvbmZpZ2ZpbGUoY29uc3QgY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBjb25maWdwYXJhbXMgKmNvbmZpZykKLSAJCQkJZWxzZQotIAkJCQkJY29uZmlnLT5sZGFwX3N0YXJ0dGxzID0gMDsKLSAJCQl9Ci0tCQkJZWxzZSBpZiAoIXN0cmNtcCh2YXIsICJDQ19CRUZPUkUiKSkgewotLQkJCQlpbnQgbnVtOwotLQkJCQljaGFyIHVuaXRbMTBdOwotLQotLQkJCQlpZiAoc3NjYW5mKHZhbHVlLCAiJWQlcyIsICZudW0sIHVuaXQpICE9IDIpCi0tCQkJCQlnb3RvIGNjX3BhcnNlX2VycjsKLS0JCQkJaWYgKHN0cjJ0aW1ldW5pdHMobnVtLCB1bml0LCAmY29uZmlnLT5jY19iZWZvcmUpIDwgMCkgewotLWNjX3BhcnNlX2VycjoKLS0JCQkJCWRpZSgxLCBfKCJDYW5ub3QgcGFyc2UgdGltZSBhdCBDQ19CRUZPUkUgdmFyaWFibGUgKGxpbmUgJWQpLlxuIiksIGxpbmUpOwotLQkJCQl9Ci0tCQkJfQotLSNpZmRlZiBVU0VfTERBUF9NQUlMX0xPT0tVUAotIAkJCWVsc2UgaWYgKCFzdHJjbXAodmFyLCAiTERBUF9IT1NUIikpCi0gCQkJCXNzdHJuY3B5KGNvbmZpZy0+bGRhcF9ob3N0LCB2YWx1ZSwgQ05GX0JVRkZFUik7Ci0gCQkJZWxzZSBpZiAoIXN0cmNtcCh2YXIsICJMREFQX1BPUlQiKSkKLS0tIAotMi40LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDAxLVVzZS1OR1JPVVBTX01BWC1pbnN0ZWFkLW9mLU5HUk9VUFMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDEtVXNlLU5HUk9VUFNfTUFYLWluc3RlYWQtb2YtTkdST1VQUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmZiMmRhZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDEtVXNlLU5HUk9VUFNfTUFYLWluc3RlYWQtb2YtTkdST1VQUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLUZyb20gZmVjYTZkMmU1NWQ5OTJiYmUxNzZlZThmYWE3MzRjMTA1ZWIxYjJlMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+Ci1EYXRlOiBUdWUsIDI5IE1hciAyMDE2IDIwOjQ4OjA1IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVzZSBOR1JPVVBTX01BWCBpbnN0ZWFkIG9mIE5HUk9VUFMKLQotTkdSUk9VUFNfTUFYIGlzIHdoYXQgaXMgZGVmaW5lZCBieSBTdVN2MzsgTkdST1VQUyBpcyBub3QgZ3VhcmFudGVlZCBieQotYW55IHN0YW5kYXJkLCBidXQgaXMganVzdCBhbiBhbmNpZW50IEJTRCdpc20uICBTaW5jZSBBbmRyb2lkJ3MgYmlvbmljCi1saWJjIGhhcyB0aGUgZm9ybWVyIGJ1dCBub3QgdGhlIGxhdHRlciwgbGV0J3MgdXNlIE5HUk9VUFNfTUFYIGluc3RlYWQuCi0KLVNpZ25lZC1vZmYtYnk6IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+Ci1TaWduZWQtb2ZmLWJ5OiBKYW4gS2FyYSA8amFja0BzdXNlLmN6PgotLS0tCi0gcXVvdGEuYyAgICB8IDUgKysrLS0KLSBxdW90YW9wcy5jIHwgNSArKystLQotIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvcXVvdGEuYyBiL3F1b3RhLmMKLWluZGV4IDA0OWRhYzQuLmUxOTVlYWQgMTAwNjQ0Ci0tLS0gYS9xdW90YS5jCi0rKysgYi9xdW90YS5jCi1AQCAtNDgsNiArNDgsNyBAQAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPGxpbWl0cy5oPgotICNpZmRlZiBSUEMKLSAjaW5jbHVkZSA8cnBjL3JwYy5oPgotICNpbmNsdWRlICJycXVvdGEuaCIKLUBAIC0yOTYsNyArMjk3LDcgQEAgc3RhdGljIGludCBzaG93cXVvdGFzKGludCB0eXBlLCBxaWRfdCBpZCwgaW50IG1udGNudCwgY2hhciAqKm1udCkKLSBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gewotIAlpbnQgbmdyb3VwczsKLS0JZ2lkX3QgZ2lkc2V0W05HUk9VUFNdLCAqZ2lkc2V0cDsKLSsJZ2lkX3QgZ2lkc2V0W05HUk9VUFNfTUFYXSwgKmdpZHNldHA7Ci0gCWludCBpLCByZXQ7Ci0gCXN0cnVjdCBvcHRpb24gbG9uZ19vcHRzW10gPSB7Ci0gCQl7ICJoZWxwIiwgMCwgTlVMTCwgJ2gnIH0sCi1AQCAtNDA1LDcgKzQwNiw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCQlyZXQgfD0gc2hvd3F1b3RhcyhVU1JRVU9UQSwgZ2V0dWlkKCksIGFyZ2MsIGFyZ3YpOwotIAkJaWYgKGZsYWdzICYgRkxfR1JPVVApIHsKLSAJCQluZ3JvdXBzID0gc3lzY29uZihfU0NfTkdST1VQU19NQVgpOwotLQkJCWlmIChuZ3JvdXBzID4gTkdST1VQUykgewotKwkJCWlmIChuZ3JvdXBzID4gTkdST1VQU19NQVgpIHsKLSAJCQkJZ2lkc2V0cCA9IG1hbGxvYyhuZ3JvdXBzICogc2l6ZW9mKGdpZF90KSk7Ci0gCQkJCWlmICghZ2lkc2V0cCkKLSAJCQkJCWRpZSgxLCBfKCJHaWQgc2V0IGFsbG9jYXRpb24gKCVkKTogJXNcbiIpLCBuZ3JvdXBzLCBzdHJlcnJvcihlcnJubykpOwotZGlmZiAtLWdpdCBhL3F1b3Rhb3BzLmMgYi9xdW90YW9wcy5jCi1pbmRleCAxMzZhZWMzLi41OTBkYzFiIDEwMDY0NAotLS0tIGEvcXVvdGFvcHMuYwotKysrIGIvcXVvdGFvcHMuYwotQEAgLTUxLDYgKzUxLDcgQEAKLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPHRpbWUuaD4KLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0gCi0gI2lmIGRlZmluZWQoUlBDKQotICNpbmNsdWRlICJycXVvdGEuaCIKLUBAIC05Nyw3ICs5OCw3IEBAIHN0cnVjdCBkcXVvdCAqZ2V0cHJpdnMocWlkX3QgaWQsIHN0cnVjdCBxdW90YV9oYW5kbGUgKipoYW5kbGVzLCBpbnQgcXVpZXQpCi0gI2lmIGRlZmluZWQoQlNEX0JFSEFWSU9VUikKLSAJaW50IGosIG5ncm91cHM7Ci0gCXVpZF90IGV1aWQ7Ci0tCWdpZF90IGdpZHNldFtOR1JPVVBTXSwgKmdpZHNldHA7Ci0rCWdpZF90IGdpZHNldFtOR1JPVVBTX01BWF0sICpnaWRzZXRwOwotICNlbmRpZgotIAotIAlmb3IgKGkgPSAwOyBoYW5kbGVzW2ldOyBpKyspIHsKLUBAIC0xMTUsNyArMTE2LDcgQEAgc3RydWN0IGRxdW90ICpnZXRwcml2cyhxaWRfdCBpZCwgc3RydWN0IHF1b3RhX2hhbmRsZSAqKmhhbmRsZXMsIGludCBxdWlldCkKLSAJCQkJaWYgKGdldGV1aWQoKSA9PSAwKQotIAkJCQkJYnJlYWs7Ci0gCQkJCW5ncm91cHMgPSBzeXNjb25mKF9TQ19OR1JPVVBTX01BWCk7Ci0tCQkJCWlmIChuZ3JvdXBzID4gTkdST1VQUykgewotKwkJCQlpZiAobmdyb3VwcyA+IE5HUk9VUFNfTUFYKSB7Ci0gCQkJCQlnaWRzZXRwID0gbWFsbG9jKG5ncm91cHMgKiBzaXplb2YoZ2lkX3QpKTsKLSAJCQkJCWlmICghZ2lkc2V0cCkgewotIAkJCQkJCWdpZDJncm91cChpZCwgbmFtZSk7Ci0tLSAKLTIuNi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvMDAwMi1BbGxvdy1idWlsZGluZy1vbi1zeXN0ZW1zLXRoYXQtZG8tbm90LWhhdmUtcnBjLWhlYWRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDAyLUFsbG93LWJ1aWxkaW5nLW9uLXN5c3RlbXMtdGhhdC1kby1ub3QtaGF2ZS1ycGMtaGVhZGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjZWE1NDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDAyLUFsbG93LWJ1aWxkaW5nLW9uLXN5c3RlbXMtdGhhdC1kby1ub3QtaGF2ZS1ycGMtaGVhZGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNTMgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotRnJvbSBmMzBlMWFkYTgzMjY0NjNjYzBhZjA0OGFmYTA1OGJjMmYxZGM5MzcwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KLURhdGU6IFR1ZSwgMjkgTWFyIDIwMTYgMjA6NDg6MDQgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gQWxsb3cgYnVpbGRpbmcgb24gc3lzdGVtcyB0aGF0IGRvIG5vdCBoYXZlIHJwYyBoZWFkZXIgZmlsZXMKLQotQW5kcm9pZCdzIGJpb25pYyBDIGxpYnJhcnkgZG9lc24ndCBoYXZlIFN1biBSUEMgc3VwcG9ydC4KLQotU2lnbmVkLW9mZi1ieTogVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KLVNpZ25lZC1vZmYtYnk6IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+Ci0tLS0KLSBNYWtlZmlsZS5hbSB8IDMwICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQotIHF1b3Rhb3BzLmMgIHwgIDIgKysKLSBzZXRxdW90YS5jICB8ICAyICsrCi0gMyBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDZkN2VhMGUuLjgyZGI5OWYgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0xLDcgKzEsNSBAQAotIEFDTE9DQUxfQU1GTEFHUyA9IC1JIG00Ci0gCi0tQlVJTFRfU09VUkNFUyA9IHJxdW90YS5oIHJxdW90YS5jIHJxdW90YV9jbG50LmMKLS0KLSBkb2NkaXIgPSAkKGRhdGFkaXIpL2RvYy9AUEFDS0FHRUAKLSBkb2NfREFUQSA9IFwKLSAJUkVBRE1FLm1haWxzZXJ2ZXIgXAotQEAgLTEyLDExICsxMCw2IEBAIGRvY19EQVRBID0gXAotIAlkb2MvcXVvdGFzLnByZWZvcm1hdGVkIFwKLSAJZG9jL3F1b3Rhcy0xLmVwcwotIAotLXJwY3N2Y2RpciA9ICQoaW5jbHVkZWRpcikvcnBjc3ZjCi0tcnBjc3ZjX0RBVEEgPSBcCi0tCXJxdW90YS5oIFwKLS0JcnF1b3RhLngKLS0KLSBzeXNjb25mX0RBVEEgPSBcCi0gCXdhcm5xdW90YS5jb25mIFwKLSAJcXVvdGF0YWIgXAotQEAgLTM1LDE1ICsyOCwxMiBAQCBtYW5fTUFOUyA9IFwKLSAJcXVvdGEuMSBcCi0gCXF1b3QuOCBcCi0gCXJlcHF1b3RhLjggXAotLQlycGMucnF1b3RhZC44IFwKLSAJcnF1b3RhLjMgXAotIAlzZXRxdW90YS44IFwKLSAJd2FybnF1b3RhLmNvbmYuNSBcCi0gCXdhcm5xdW90YS44IFwKLSAJeHFtc3RhdHMuOAotIAotLUNMRUFORklMRVMgPSBycXVvdGEuYyBycXVvdGEuaCBycXVvdGFfY2xudC5jCi0tCi0gU1VCRElSUyA9IHBvCi0gCi0gRVhUUkFfRElTVCA9IFwKLUBAIC01NSw5ICs0NSwxNSBAQCBFWFRSQV9ESVNUID0gXAotIAlDaGFuZ2Vsb2cgXAotIAlsZGFwLXNjcmlwdHMKLSAKLS1ub2luc3RfTElCUkFSSUVTID0gXAotLQlsaWJxdW90YS5hIFwKLS0JbGlicnBjY2xpZW50LmEKLStub2luc3RfTElCUkFSSUVTID0gbGlicXVvdGEuYQotKwotK2lmIFdJVEhfUlBDCi0rcnBjc3ZjZGlyID0gJChpbmNsdWRlZGlyKS9ycGNzdmMKLStycGNzdmNfREFUQSA9IFwKLSsJcnF1b3RhLmggXAotKwlycXVvdGEueAotKwotK25vaW5zdF9MSUJSQVJJRVMgKz0gbGlicnBjY2xpZW50LmEKLSAKLSBsaWJycGNjbGllbnRfYV9TT1VSQ0VTID0gXAotIAlycXVvdGEuYyBcCi1AQCAtNjcsOCArNjMsMTAgQEAgbGlicnBjY2xpZW50X2FfU09VUkNFUyA9IFwKLSAJcnF1b3RhX2NsbnQuYwotIGxpYnJwY2NsaWVudF9hX0NGTEFHUyA9IC1Xbm8tdW51c2VkCi0gCi0taWYgV0lUSF9SUEMKLSBSUENMSUJTID0gbGlicnBjY2xpZW50LmEKLStCVUlMVF9TT1VSQ0VTID0gcnF1b3RhLmggcnF1b3RhLmMgcnF1b3RhX2NsbnQuYwotK0NMRUFORklMRVMgPSBycXVvdGEuYyBycXVvdGEuaCBycXVvdGFfY2xudC5jCi0rbWFuX01BTlMgKz0gcnBjLnJxdW90YWQuOAotIGVuZGlmCi0gCi0gbGlicXVvdGFfYV9TT1VSQ0VTID0gXAotQEAgLTIxNyw2ICsyMTUsNyBAQCBjb252ZXJ0cXVvdGFfTERBREQgPSBcCi0gCWxpYnF1b3RhLmEgXAotIAkkKFJQQ0xJQlMpCi0gCi0raWYgV0lUSF9SUEMKLSBycGNfcnF1b3RhZF9TT1VSQ0VTID0gXAotIAlycXVvdGFfc2VydmVyLmMgXAotIAlycXVvdGFfc3ZjLmMgXAotQEAgLTIyNSw2ICsyMjQsNyBAQCBycGNfcnF1b3RhZF9MREFERCA9IFwKLSAJbGlicXVvdGEuYSBcCi0gCSQoV1JBUF9MSUJTKSBcCi0gCSQoUlBDTElCUykKLStlbmRpZgotIAotIHF1b3RhX25sZF9TT1VSQ0VTID0gcXVvdGFfbmxkLmMKLSBxdW90YV9ubGRfQ0ZMQUdTID0gXAotQEAgLTIzNiw2ICsyMzYsNyBAQCBxdW90YV9ubGRfTERBREQgPSBcCi0gCSQoREJVU19MSUJTKSBcCi0gCSQoTElCTkwzX0xJQlMpCi0gCi0raWYgV0lUSF9SUEMKLSAjIC0tLS0tLS0tLS0tLS0tLS0tLQotICMgUnBjZ2VuIGNvbnZlcnNpb25zCi0gIyAtLS0tLS0tLS0tLS0tLS0tLS0KLUBAIC0yNTAsNiArMjUxLDcgQEAgcXVvdGFfbmxkX0xEQUREID0gXAotIHJxdW90YV9jbG50LmM6IHJxdW90YS54Ci0gCUBybSAtZiAkQAotIAlAJChSUENHRU4pIC1sIC1vICRAICQ8Ci0rZW5kaWYKLSAKLSAjIC0tLS0tLS0tCi0gIyBRdW90YW9mZgotZGlmZiAtLWdpdCBhL3F1b3Rhb3BzLmMgYi9xdW90YW9wcy5jCi1pbmRleCA0N2VmOWE3Li4xMzZhZWMzIDEwMDY0NAotLS0tIGEvcXVvdGFvcHMuYwotKysrIGIvcXVvdGFvcHMuYwotQEAgLTM0LDcgKzM0LDkgQEAKLSAKLSAjaW5jbHVkZSAiY29uZmlnLmgiCi0gCi0rI2lmIGRlZmluZWQoUlBDKQotICNpbmNsdWRlIDxycGMvcnBjLmg+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotICNpbmNsdWRlIDxzeXMvZmlsZS5oPgotZGlmZiAtLWdpdCBhL3NldHF1b3RhLmMgYi9zZXRxdW90YS5jCi1pbmRleCA1MWQ3YjNjLi44ZWNkOWMzIDEwMDY0NAotLS0tIGEvc2V0cXVvdGEuYwotKysrIGIvc2V0cXVvdGEuYwotQEAgLTcsNyArNyw5IEBACi0gCi0gI2luY2x1ZGUgImNvbmZpZy5oIgotIAotKyNpZiBkZWZpbmVkKFJQQykKLSAjaW5jbHVkZSA8cnBjL3JwYy5oPgotKyNlbmRpZgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLS0tIAotMi42LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDAzLURvbi10LWJ1aWxkLXJwYy5ycXVvdGFkLXdoZW4tZGlzYWJsZS1ycGMtd2FzLXJlcXVlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDMtRG9uLXQtYnVpbGQtcnBjLnJxdW90YWQtd2hlbi1kaXNhYmxlLXJwYy13YXMtcmVxdWVzdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQ1NTM4NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhLzAwMDMtRG9uLXQtYnVpbGQtcnBjLnJxdW90YWQtd2hlbi1kaXNhYmxlLXJwYy13YXMtcmVxdWVzdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLUZyb20gYzdhNzYyMzdlN2E1MWE2OWQwMjM2ZWJmYzE5MWU0NjJmODA1Y2Y0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IExhcnMgV2VuZGxlciA8cG9seW5vbWlhbC1jQGdlbnRvby5vcmc+Ci1EYXRlOiBNb24sIDE1IEZlYiAyMDE2IDE0OjQyOjE0ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvbid0IGJ1aWxkIHJwYy5ycXVvdGFkIHdoZW4gLS1kaXNhYmxlLXJwYyB3YXMgcmVxdWVzdGVkLgotCi1UaGlzIGZpeGVzIGEgYnVjaCBvZiB1bmRlZmluZWQgcmVmZXJlbmNlczoKLQoteDg2XzY0LXBjLWxpbnV4LWdudS1nY2MgIC1tYXJjaD1uYXRpdmUgLW10dW5lPW5hdGl2ZSAtTzIgLXBpcGUgLURfR05VX1NPVVJDRSAtV2EKLWxsIC1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1mUElDIC1waWUgLVdsLC1PMSAtV2wsLS1oYXNoLXN0Ci15bGU9Z251IC1XbCwtLXNvcnQtY29tbW9uIC1XbCwtLWFzLW5lZWRlZCAtbyBycGMucnF1b3RhZCBycXVvdGFfc2VydmVyLm8gcnF1b3RhXwotc3ZjLm8gc3ZjX3NvY2tldC5vIGxpYnF1b3RhLmEKLXJxdW90YV9zdmMubzogSW4gZnVuY3Rpb24gYHJxdW90YXByb2dfMic6Ci1ycXVvdGFfc3ZjLmM6KC50ZXh0KzB4MWQzKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgeGRyX3NldHF1b3RhX3JzbHQnCi1ycXVvdGFfc3ZjLmM6KC50ZXh0KzB4MWRhKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgeGRyX2V4dF9zZXRxdW90YV9hcmdzJwotcnF1b3RhX3N2Yy5jOigudGV4dCsweDJiMik6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHhkcl9zZXRxdW90YV9yc2x0JwotcnF1b3RhX3N2Yy5jOigudGV4dCsweDJiOSk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHhkcl9leHRfc2V0cXVvdGFfYXJncycKLXJxdW90YV9zdmMuYzooLnRleHQrMHgyZmYpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfZ2V0cXVvdGFfcnNsdCcKLXJxdW90YV9zdmMuYzooLnRleHQrMHgzMDYpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfZXh0X2dldHF1b3RhX2FyZ3MnCi1ycXVvdGFfc3ZjLmM6KC50ZXh0KzB4MzFhKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgeGRyX2dldHF1b3RhX3JzbHQnCi1ycXVvdGFfc3ZjLmM6KC50ZXh0KzB4MzIxKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgeGRyX2V4dF9nZXRxdW90YV9hcmdzJwotcnF1b3RhX3N2Yy5vOiBJbiBmdW5jdGlvbiBgcnF1b3RhcHJvZ18xJzoKLXJxdW90YV9zdmMuYzooLnRleHQrMHgzZjMpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfc2V0cXVvdGFfcnNsdCcKLXJxdW90YV9zdmMuYzooLnRleHQrMHgzZmEpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfc2V0cXVvdGFfYXJncycKLXJxdW90YV9zdmMuYzooLnRleHQrMHg0ZDIpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfc2V0cXVvdGFfcnNsdCcKLXJxdW90YV9zdmMuYzooLnRleHQrMHg0ZDkpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfc2V0cXVvdGFfYXJncycKLXJxdW90YV9zdmMuYzooLnRleHQrMHg1MWYpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfZ2V0cXVvdGFfcnNsdCcKLXJxdW90YV9zdmMuYzooLnRleHQrMHg1MjYpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfZ2V0cXVvdGFfYXJncycKLXJxdW90YV9zdmMuYzooLnRleHQrMHg1M2EpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfZ2V0cXVvdGFfcnNsdCcKLXJxdW90YV9zdmMuYzooLnRleHQrMHg1NDEpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB4ZHJfZ2V0cXVvdGFfYXJncycKLWNvbGxlY3QyOiBlcnJvcjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwotTWFrZWZpbGU6OTAxOiByZWNpcGUgZm9yIHRhcmdldCAncnBjLnJxdW90YWQnIGZhaWxlZAotCi1TaWduZWQtb2ZmLWJ5OiBMYXJzIFdlbmRsZXIgPHBvbHlub21pYWwtY0BnZW50b28ub3JnPgotU2lnbmVkLW9mZi1ieTogSmFuIEthcmEgPGphY2tAc3VzZS5jej4KLS0tLQotIE1ha2VmaWxlLmFtIHwgNSArKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDc3Zjg0MDAuLjZkN2VhMGUgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0xMTYsOCArMTE2LDExIEBAIHNiaW5fUFJPR1JBTVMgPSBcCi0gCXhxbXN0YXRzIFwKLSAJZWRxdW90YSBcCi0gCXNldHF1b3RhIFwKLS0JY29udmVydHF1b3RhIFwKLSsJY29udmVydHF1b3RhCi0raWYgV0lUSF9SUEMKLStzYmluX1BST0dSQU1TICs9IFwKLSAJcnBjLnJxdW90YWQKLStlbmRpZgotIGlmIFdJVEhfTkVUTElOSwotIHNiaW5fUFJPR1JBTVMgKz0gXAotIAlxdW90YV9ubGQKLS0tIAotMi42LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDA0LUZpeC13YXJuaW5ncy1kdWUtdG8tbWlzc2luZy1zdGRsaWIuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvMDAwNC1GaXgtd2FybmluZ3MtZHVlLXRvLW1pc3Npbmctc3RkbGliLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkYjRjZWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS8wMDA0LUZpeC13YXJuaW5ncy1kdWUtdG8tbWlzc2luZy1zdGRsaWIuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLUZyb20gYzRiNTZlZTU4YjliNzZkMjU5ODUzNWNmNjEwOWEyN2IyMmU2MGFiZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+Ci1EYXRlOiBXZWQsIDMwIE1hciAyMDE2IDEwOjIxOjEzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCB3YXJuaW5ncyBkdWUgdG8gbWlzc2luZyBzdGRsaWIuaAotCi1XaGVuIGNvbXBpbGluZyB3aXRob3V0IFJQQywgd2UgZG8gbm90IGdldCBzdGRsaWIuaCBhdXRvbWF0aWNhbGx5Ci1pbmNsdWRlZCB2aWEgb3RoZXIgaW5jbHVkZXMgYW5kIHRodXMgbWlzcyBzb21lIGZ1bmN0aW9uIGRlZmluaXRpb25zLgotSW5jbHVkZSBzdGRsaWIuaCBleHBsaWNpdGVseS4KLQotU2lnbmVkLW9mZi1ieTogSmFuIEthcmEgPGphY2tAc3VzZS5jej4KLS0tLQotIHF1b3Rhb3BzLmMgfCAxICsKLSBzZXRxdW90YS5jIHwgMSArCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3F1b3Rhb3BzLmMgYi9xdW90YW9wcy5jCi1pbmRleCA1OTBkYzFiLi41NmNmNjIyIDEwMDY0NAotLS0tIGEvcXVvdGFvcHMuYwotKysrIGIvcXVvdGFvcHMuYwotQEAgLTUyLDYgKzUyLDcgQEAKLSAjaW5jbHVkZSA8dGltZS5oPgotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDxsaW1pdHMuaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0gCi0gI2lmIGRlZmluZWQoUlBDKQotICNpbmNsdWRlICJycXVvdGEuaCIKLWRpZmYgLS1naXQgYS9zZXRxdW90YS5jIGIvc2V0cXVvdGEuYwotaW5kZXggOGVjZDljMy4uNDIxNjMxZSAxMDA2NDQKLS0tLSBhL3NldHF1b3RhLmMKLSsrKyBiL3NldHF1b3RhLmMKLUBAIC0xNyw2ICsxNyw3IEBACi0gI2luY2x1ZGUgPGdldG9wdC5oPgotICNpbmNsdWRlIDx0aW1lLmg+Ci0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotIAotICNpZiBkZWZpbmVkKFJQQykKLSAjaW5jbHVkZSAicnF1b3RhLmgiCi0tLSAKLTIuNi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGEvcmVwbGFjZV9nZXRycGNieW51bWJlcl9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS9yZXBsYWNlX2dldHJwY2J5bnVtYmVyX3IucGF0Y2gKaW5kZXggOWNhMmZmYy4uNDY4N2NhMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS9yZXBsYWNlX2dldHJwY2J5bnVtYmVyX3IucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YS9yZXBsYWNlX2dldHJwY2J5bnVtYmVyX3IucGF0Y2gKQEAgLTEsMjAgKzEsMzIgQEAKLVJlcGxhY2UgZ2V0cnBjYnludW1iZXJfciB3aXRoIGdldHJwY2J5bnVtYmVyCitGcm9tIGEzODA4ZmQxNjU4NDcyOThkMDI1OTcxZWIzYzdiZTdkMTFjYWJhOWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiTWF4aW4gQi4gSm9obiIgPG1heGluLmpvaG5AaW50ZWwuY29tPgorRGF0ZTogV2VkLCA4IE5vdiAyMDE3IDExOjU2OjU1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlcGxhY2UgZ2V0cnBjYnludW1iZXJfciB3aXRoIGdldHJwY2J5bnVtYmVyCisKIG11c2wgYW5kIHVjbGliYyBkb250IGltcGxlbWVudCBpdAogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLUluZGV4OiBxdW90YS10b29scy9zdmNfc29ja2V0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBxdW90YS10b29scy5vcmlnL3N2Y19zb2NrZXQuYwotKysrIHF1b3RhLXRvb2xzL3N2Y19zb2NrZXQuYwotQEAgLTU1LDcgKzU1LDggQEAgc3RhdGljIGludCBzdmNfc29ja2V0ICh1X2xvbmcgbnVtYmVyLCBpbgotIAlhZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOworU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+CistLS0KKyBzdmNfc29ja2V0LmMgfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3N2Y19zb2NrZXQuYyBiL3N2Y19zb2NrZXQuYworaW5kZXggOGE0NDYwNC4uNWJkYWFhMCAxMDA2NDQKKy0tLSBhL3N2Y19zb2NrZXQuYworKysrIGIvc3ZjX3NvY2tldC5jCitAQCAtMzYsNyArMzYsOCBAQCBzdGF0aWMgaW50IGdldF9zZXJ2aWNlX3BvcnQodV9sb25nIG51bWJlciwgY29uc3QgY2hhciAqcHJvdG8pCisgCXN0cnVjdCBzZXJ2ZW50IHNlcnZidWYsICpzZXJ2cCA9IE5VTEw7CisgCWludCByZXQ7CiAgCi0gCWlmICghcG9ydCkgewotLQkJcmV0ID0gZ2V0cnBjYnludW1iZXJfcihudW1iZXIsICZycGNidWYsIHJwY2RhdGEsIHNpemVvZihycGNkYXRhKSwgJnJwY3ApOwotKwkJcnBjcCA9IGdldHJwY2J5bnVtYmVyKG51bWJlcik7Ci0rCQlyZXQgPSAwOwotIAkJaWYgKHJldCA9PSAwICYmIHJwY3AgIT0gTlVMTCkgewotIAkJCS8qIEZpcnN0IHRyeSBuYW1lICovCi0gCQkJcmV0ID0gZ2V0c2VydmJ5bmFtZV9yKHJwY3AtPnJfbmFtZSwgcHJvdG8sICZzZXJ2YnVmLCBzZXJ2ZGF0YSwKKy0JcmV0ID0gZ2V0cnBjYnludW1iZXJfcihudW1iZXIsICZycGNidWYsIHJwY2RhdGEsIHNpemVvZihycGNkYXRhKSwgJnJwY3ApOworKyAgICBycGNwID0gZ2V0cnBjYnludW1iZXIobnVtYmVyKTsKKysgICAgcmV0ID0gMDsKKyAJaWYgKHJldCA9PSAwICYmIHJwY3AgIT0gTlVMTCkgeworIAkJLyogRmlyc3QgdHJ5IG5hbWUgKi8KKyAJCXJldCA9IGdldHNlcnZieW5hbWVfcihycGNwLT5yX25hbWUsIHByb3RvLCAmc2VydmJ1Ziwgc2VydmRhdGEsCistLSAKKzIuNC4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGFfNC4wMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGFfNC4wMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjhiMzg1NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3F1b3RhL3F1b3RhXzQuMDMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1TVU1NQVJZID0gIlRvb2xzIGZvciBtb25pdG9yaW5nICYgbGltaXRpbmcgdXNlciBkaXNrIHVzYWdlIHBlciBmaWxlc3lzdGVtIgotU0VDVElPTiA9ICJiYXNlIgotSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saW51eHF1b3RhLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD0xODEzNiZhdGlkPTExODEzNiIKLUxJQ0VOU0UgPSAiQlNEICYgR1BMdjIrICYgTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcXVvdGEuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTMzO21kNT0zMzFjN2Q3Nzc0NGJmZTBhZDI0MDI3ZjA2NTEwMjhlYyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ycXVvdGFfc2VydmVyLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9ZmU3ZTBkN2UxMWM2ZjgyMGY4ZmE2MmE1YWY3MTIzMGYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3ZjX3NvY2tldC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MTc7bWQ1PTI0ZDVhODc5MmRhNDU5MTA3ODZlZWFjNzUwYmU4Y2ViIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2xpbnV4cXVvdGEvcXVvdGEtdG9vbHMvJHtQVn0vcXVvdGEtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtZGlzYWJsZWQtbGRhcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1hY2NpZGVudGFseS1vdmVycmlkZS1jb21tYW5kbGluZS1wYXNzZWQtQ0ZMQUcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZmNudGwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlX25vbl9wb3NpeF90eXBlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1OR1JPVVBTX01BWC1pbnN0ZWFkLW9mLU5HUk9VUFMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1BbGxvdy1idWlsZGluZy1vbi1zeXN0ZW1zLXRoYXQtZG8tbm90LWhhdmUtcnBjLWhlYWRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtRG9uLXQtYnVpbGQtcnBjLnJxdW90YWQtd2hlbi1kaXNhYmxlLXJwYy13YXMtcmVxdWVzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LUZpeC13YXJuaW5ncy1kdWUtdG8tbWlzc2luZy1zdGRsaWIuaC5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vcmVwbGFjZV9nZXRycGNieW51bWJlcl9yLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmIwOWY5YzkzNTE1YzI1YTUyOGJlNTc1NGNkZmI2ZjUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWM2YzRkOWFlN2JmMzA1MDZkZDJhYTNkODA1NmM0ZmYyZjhkMDg3OTMwZDdjNzIxNjE2ZjVjMDkzYmRjNjc0YiIKLQotQ1ZFX1BST0RVQ1QgPSAibGludXhfZGlza3F1b3RhIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saW51eHF1b3RhL2ZpbGVzL3F1b3RhLXRvb2xzLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9xdW90YS10b29scy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgotCi1ERVBFTkRTID0gImdldHRleHQtbmF0aXZlIGUyZnNwcm9ncyBsaWJubCBkYnVzIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgZ2V0dGV4dCBwa2djb25maWcKLQotQ0ZMQUdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdycGMnLCAnLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYycsICcnLCBkKX0iCi1MREZMQUdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdycGMnLCAnLWx0aXJwYycsICcnLCBkKX0iCi1BU05FRURFRCA9ICIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJ0Y3Atd3JhcHBlcnMgcnBjIGJzZCIKLVBBQ0tBR0VDT05GSUdfbGliYy1tdXNsID0gInRjcC13cmFwcGVycyBycGMiCi0KLVBBQ0tBR0VDT05GSUdbdGNwLXdyYXBwZXJzXSA9ICItLWVuYWJsZS1saWJ3cmFwLC0tZGlzYWJsZS1saWJ3cmFwLHRjcC13cmFwcGVycyIKLVBBQ0tBR0VDT05GSUdbcnBjXSA9ICItLWVuYWJsZS1ycGMsLS1kaXNhYmxlLXJwYyxsaWJ0aXJwYyIKLVBBQ0tBR0VDT05GSUdbYnNkXSA9ICItLWVuYWJsZS1ic2RfYmVoYXZpb3VyPXllcywtLWVuYWJsZS1ic2RfYmVoYXZpb3VyPW5vLCIKLVBBQ0tBR0VDT05GSUdbbGRhcG1haWxdID0gIi0tZW5hYmxlLWxkYXBtYWlsLC0tZGlzYWJsZS1sZGFwbWFpbCxvcGVubGRhcCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGFfNC4wNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcXVvdGEvcXVvdGFfNC4wNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45M2YzNzYyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9xdW90YS9xdW90YV80LjA0LmJiCkBAIC0wLDAgKzEsMzggQEAKK1NVTU1BUlkgPSAiVG9vbHMgZm9yIG1vbml0b3JpbmcgJiBsaW1pdGluZyB1c2VyIGRpc2sgdXNhZ2UgcGVyIGZpbGVzeXN0ZW0iCitTRUNUSU9OID0gImJhc2UiCitIT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpbnV4cXVvdGEvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2dyb3VwX2lkPTE4MTM2JmF0aWQ9MTE4MTM2IgorTElDRU5TRSA9ICJCU0QgJiBHUEx2MisgJiBMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9xdW90YS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MzM7bWQ1PTMzMWM3ZDc3NzQ0YmZlMGFkMjQwMjdmMDY1MTAyOGVjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3JxdW90YV9zZXJ2ZXIuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1mZTdlMGQ3ZTExYzZmODIwZjhmYTYyYTVhZjcxMjMwZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zdmNfc29ja2V0LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xNzttZDU9MjRkNWE4NzkyZGE0NTkxMDc4NmVlYWM3NTBiZThjZWIiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvbGludXhxdW90YS9xdW90YS10b29scy8ke1BWfS9xdW90YS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZmNudGwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlX25vbl9wb3NpeF90eXBlcy5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vcmVwbGFjZV9nZXRycGNieW51bWJlcl9yLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjQ2ZjNiMGI1MTQxZjAzMmYyNTY4NDAwNWRhYzQ5ZDMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzM1YmUxODg3ZTdmNTFmNTQxNjVlNzc4YWU0M2ZjODU5YzA0ZTQ0ZDg4ODM0ZWNiMmY0NzBlOTFkNGVmOGVkZiIKKworQ1ZFX1BST0RVQ1QgPSAibGludXhfZGlza3F1b3RhIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saW51eHF1b3RhL2ZpbGVzL3F1b3RhLXRvb2xzLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9xdW90YS10b29scy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgorCitERVBFTkRTID0gImdldHRleHQtbmF0aXZlIGUyZnNwcm9ncyBsaWJubCBkYnVzIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgZ2V0dGV4dCBwa2djb25maWcKKworQ0ZMQUdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdycGMnLCAnLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYycsICcnLCBkKX0iCitMREZMQUdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdycGMnLCAnLWx0aXJwYycsICcnLCBkKX0iCitBU05FRURFRCA9ICIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJ0Y3Atd3JhcHBlcnMgcnBjIGJzZCIKK1BBQ0tBR0VDT05GSUdfbGliYy1tdXNsID0gInRjcC13cmFwcGVycyBycGMiCisKK1BBQ0tBR0VDT05GSUdbdGNwLXdyYXBwZXJzXSA9ICItLWVuYWJsZS1saWJ3cmFwLC0tZGlzYWJsZS1saWJ3cmFwLHRjcC13cmFwcGVycyIKK1BBQ0tBR0VDT05GSUdbcnBjXSA9ICItLWVuYWJsZS1ycGMsLS1kaXNhYmxlLXJwYyxsaWJ0aXJwYyIKK1BBQ0tBR0VDT05GSUdbYnNkXSA9ICItLWVuYWJsZS1ic2RfYmVoYXZpb3VyPXllcywtLWVuYWJsZS1ic2RfYmVoYXZpb3VyPW5vLCIKK1BBQ0tBR0VDT05GSUdbbGRhcG1haWxdID0gIi0tZW5hYmxlLWxkYXBtYWlsLC0tZGlzYWJsZS1sZGFwbWFpbCxvcGVubGRhcCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3BtYXBwcm9jX2R1bXAtRml4ZWQtdHlwby1pbi1tZW1vcnktbGVhay1wYXRjaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3BtYXBwcm9jX2R1bXAtRml4ZWQtdHlwby1pbi1tZW1vcnktbGVhay1wYXRjaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzIzZWUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcG1hcHByb2NfZHVtcC1GaXhlZC10eXBvLWluLW1lbW9yeS1sZWFrLXBhdGNoLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gYzQ5YTdlYTYzOWViNzAwODIzZTE3NGZkNjA1YmJiZTE4M2UyMjlhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFN0ZXZlIERpY2tzb24gPHN0ZXZlZEByZWRoYXQuY29tPgorRGF0ZTogV2VkLCAxNyBNYXkgMjAxNyAxMDo1MjoyNSAtMDQwMAorU3ViamVjdDogW1BBVENIXSBwbWFwcHJvY19kdW1wOiBGaXhlZCB0eXBvIGluIG1lbW9yeSBsZWFrIHBhdGNoCisKK2NvbW1pdCA3ZWEzNmVlZSBpbnRyb2R1Y2UgYSB0eXBvIHRoYXQgY2F1c2VkCitOSVMgKGFrYSB5cGJpbmQpIHRvIGZhaWwuCisKK1NpZ25lZC1vZmYtYnk6IFN0ZXZlIERpY2tzb24gPHN0ZXZlZEByZWRoYXQuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvcG1hcF9zdmMuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworSW5kZXg6IHJwY2JpbmQtMC4yLjQvc3JjL3BtYXBfc3ZjLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBycGNiaW5kLTAuMi40Lm9yaWcvc3JjL3BtYXBfc3ZjLmMKKysrKyBycGNiaW5kLTAuMi40L3NyYy9wbWFwX3N2Yy5jCitAQCAtMzg0LDcgKzM4NCw3IEBAIHBtYXBwcm9jX2R1bXAoc3RydWN0IHN2Y19yZXEgKnJxc3RwIC8qX18KKyAJfQorIAorIGRvbmU6CistCWlmICghc3ZjX2ZyZWVhcmdzKHhwcnQsICh4ZHJwcm9jX3QpIHhkcl9wbWFwLCAoY2hhciAqKU5VTEwpKSB7CisrCWlmICghc3ZjX2ZyZWVhcmdzKHhwcnQsICh4ZHJwcm9jX3QpIHhkcl92b2lkLCAoY2hhciAqKU5VTEwpKSB7CisgCQlpZiAoZGVidWdnaW5nKSB7CisgCQkJLyoodm9pZCkgeGxvZyhMT0dfREVCVUcsICJ1bmFibGUgdG8gZnJlZSBhcmd1bWVudHNcbiIpOyovCisgCQkJaWYgKGRvYWJvcnQpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2Jwcm9jX2NhbGxpdF9jb20tU3RvcC1mcmVlaW5nLWEtc3RhdGljLXBvaW50ZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9ycGNicHJvY19jYWxsaXRfY29tLVN0b3AtZnJlZWluZy1hLXN0YXRpYy1wb2ludGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMDAwZDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9ycGNicHJvY19jYWxsaXRfY29tLVN0b3AtZnJlZWluZy1hLXN0YXRpYy1wb2ludGVyLnBhdGNoCkBAIC0wLDAgKzEsMTAwIEBACitGcm9tIDdjNzU5MGFkNTM2YzBlMjRiZWY3OTBjYjFlNjU3MDJmYzU0ZGI1NjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTdGV2ZSBEaWNrc29uIDxzdGV2ZWRAcmVkaGF0LmNvbT4KK0RhdGU6IFR1ZSwgMzAgTWF5IDIwMTcgMTE6Mjc6MjIgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gcnBjYnByb2NfY2FsbGl0X2NvbTogU3RvcCBmcmVlaW5nIGEgc3RhdGljIHBvaW50ZXIKKworY29tbWl0IDdlYTM2ZWUgaW50cm9kdWNlZCBhIHN2Y19mcmVlYXJncygpIGNhbGwKK3RoYXQgZW5kZWQgdXAgZnJlZWluZyBzdGF0aWMgcG9pbnRlci4KKworSXQgdHVybnMgb3V0IHRoZSBhbGxvY2F0aW9ucyBmb3IgdGhlIHJtdF9hcmdzCitpcyBub3QgbmVjZXNzYXJ5IC4gVGhlIHhkciByb3V0aW5lcyAoeGRyX2J5dGVzKSB3aWxsCitoYW5kbGUgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCB0aGUgbGFyZ2VzdAorcG9zc2libGUgbWVzc2FnZSBzaXplIGlzIFVEUE1TR1NJWkUgKGR1ZSB0byBVRFAgb25seSkKK3doaWNoIGlzIHNtYWxsZXIgdGhhbiBSUENfQlVGX01BWAorCitTaWduZWQtb2ZmLWJ5OiBTdGV2ZSBEaWNrc29uIDxzdGV2ZWRAcmVkaGF0LmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL3JwY2Jfc3ZjX2NvbS5jIHwgMzkgKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcnBjYl9zdmNfY29tLmMgYi9zcmMvcnBjYl9zdmNfY29tLmMKK2luZGV4IGNiNjNhZmQuLjFmYzIyMjkgMTAwNjQ0CistLS0gYS9zcmMvcnBjYl9zdmNfY29tLmMKKysrKyBiL3NyYy9ycGNiX3N2Y19jb20uYworQEAgLTYxMiw5ICs2MTIsOSBAQCBycGNicHJvY19jYWxsaXRfY29tKHN0cnVjdCBzdmNfcmVxICpycXN0cCwgU1ZDWFBSVCAqdHJhbnNwLAorIAlzdHJ1Y3QgbmV0Y29uZmlnICpuY29uZjsKKyAJc3RydWN0IG5ldGJ1ZiAqY2FsbGVyOworIAlzdHJ1Y3Qgcl9ybXRjYWxsX2FyZ3MgYTsKKy0JY2hhciAqYnVmX2FsbG9jID0gTlVMTCwgKm91dGJ1ZnA7CisrCWNoYXIgKm91dGJ1ZnA7CisgCWNoYXIgKm91dGJ1Zl9hbGxvYyA9IE5VTEw7CistCWNoYXIgYnVmW1JQQ19CVUZfTUFYXSwgb3V0YnVmW1JQQ19CVUZfTUFYXTsKKysJY2hhciAgb3V0YnVmW1JQQ19CVUZfTUFYXTsKKyAJc3RydWN0IG5ldGJ1ZiAqbmEgPSAoc3RydWN0IG5ldGJ1ZiAqKSBOVUxMOworIAlzdHJ1Y3QgcnBjX21zZyBjYWxsX21zZzsKKyAJaW50IG91dGxlbjsKK0BAIC02MzUsMzYgKzYzNSwxMCBAQCBycGNicHJvY19jYWxsaXRfY29tKHN0cnVjdCBzdmNfcmVxICpycXN0cCwgU1ZDWFBSVCAqdHJhbnNwLAorIAl9CisgCWlmIChzaS5zaV9zb2NrdHlwZSAhPSBTT0NLX0RHUkFNKQorIAkJcmV0dXJuOwkvKiBPbmx5IGRhdGFncmFtIHR5cGUgYWNjZXB0ZWQgKi8KKy0Jc2VuZHN6ID0gX19ycGNfZ2V0X3Rfc2l6ZShzaS5zaV9hZiwgc2kuc2lfcHJvdG8sIFVEUE1TR1NJWkUpOworLQlpZiAoc2VuZHN6ID09IDApIHsJLyogZGF0YSB0cmFuc2ZlciBub3Qgc3VwcG9ydGVkICovCistCQlpZiAocmVwbHlfdHlwZSA9PSBSUENCUFJPQ19JTkRJUkVDVCkKKy0JCQlzdmNlcnJfc3lzdGVtZXJyKHRyYW5zcCk7CistCQlyZXR1cm47CistCX0KKy0JLyoKKy0JICogU2hvdWxkIGJlIG11bHRpcGxlIG9mIDQgZm9yIFhEUi4KKy0JICovCistCXNlbmRzeiA9ICgoc2VuZHN6ICsgMykgLyA0KSAqIDQ7CistCWlmIChzZW5kc3ogPiBSUENfQlVGX01BWCkgeworLSNpZmRlZglub3R5ZXQKKy0JCWJ1Zl9hbGxvYyA9IGFsbG9jYShzZW5kc3opOwkJLyogbm90IGluIElEUjI/ICovCistI2Vsc2UKKy0JCWJ1Zl9hbGxvYyA9IG1hbGxvYyhzZW5kc3opOworLSNlbmRpZgkvKiBub3R5ZXQgKi8KKy0JCWlmIChidWZfYWxsb2MgPT0gTlVMTCkgeworLQkJCWlmIChkZWJ1Z2dpbmcpCistCQkJCXhsb2coTE9HX0RFQlVHLAorLQkJCQkJInJwY2Jwcm9jX2NhbGxpdF9jb206ICBObyBNZW1vcnkhXG4iKTsKKy0JCQlpZiAocmVwbHlfdHlwZSA9PSBSUENCUFJPQ19JTkRJUkVDVCkKKy0JCQkJc3ZjZXJyX3N5c3RlbWVycih0cmFuc3ApOworLQkJCXJldHVybjsKKy0JCX0KKy0JCWEucm10X2FyZ3MuYXJncyA9IGJ1Zl9hbGxvYzsKKy0JfSBlbHNlIHsKKy0JCWEucm10X2FyZ3MuYXJncyA9IGJ1ZjsKKy0JfQorKwlzZW5kc3ogPSBVRFBNU0dTSVpFOworIAorIAljYWxsX21zZy5ybV94aWQgPSAwOwkvKiBGb3IgZXJyb3IgY2hlY2tpbmcgcHVycG9zZXMgKi8KKysJbWVtc2V0KCZhLCAwLCBzaXplb2YoYSkpOyAvKiBaZXJvIG91dCB0aGUgaW5wdXQgYnVmZmVyICovCisgCWlmICghc3ZjX2dldGFyZ3ModHJhbnNwLCAoeGRycHJvY190KSB4ZHJfcm10Y2FsbF9hcmdzLCAoY2hhciAqKSAmYSkpIHsKKyAJCWlmIChyZXBseV90eXBlID09IFJQQ0JQUk9DX0lORElSRUNUKQorIAkJCXN2Y2Vycl9kZWNvZGUodHJhbnNwKTsKK0BAIC03MDQsNyArNjc4LDggQEAgcnBjYnByb2NfY2FsbGl0X2NvbShzdHJ1Y3Qgc3ZjX3JlcSAqcnFzdHAsIFNWQ1hQUlQgKnRyYW5zcCwKKyAJaWYgKHJibCA9PSAocnBjYmxpc3RfcHRyKU5VTEwpIHsKKyAjaWZkZWYgUlBDQklORF9ERUJVRworIAkJaWYgKGRlYnVnZ2luZykKKy0JCQl4bG9nKExPR19ERUJVRywgIm5vdCBmb3VuZFxuIik7CisrCQkJeGxvZyhMT0dfREVCVUcsICJwcm9nICVsdSB2ZXJzICVsdTogbm90IGZvdW5kXG4iLCAKKysJCQkJYS5ybXRfcHJvZywgYS5ybXRfdmVycyk7CisgI2VuZGlmCisgCQlpZiAocmVwbHlfdHlwZSA9PSBSUENCUFJPQ19JTkRJUkVDVCkKKyAJCQlzdmNlcnJfbm9wcm9nKHRyYW5zcCk7CitAQCAtOTM3LDggKzkxMiw2IEBAIG91dDoKKyAJfQorIAlpZiAobG9jYWxfdWFkZHIpCisgCQlmcmVlKGxvY2FsX3VhZGRyKTsKKy0JaWYgKGJ1Zl9hbGxvYykKKy0JCWZyZWUoYnVmX2FsbG9jKTsKKyAJaWYgKG91dGJ1Zl9hbGxvYykKKyAJCWZyZWUob3V0YnVmX2FsbG9jKTsKKyAJaWYgKG5hKSB7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kXzAuMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmRfMC4yLjQuYmIKaW5kZXggNjBlNDZlZC4uZGNkZWU2YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmRfMC4yLjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmRfMC4yLjQuYmIKQEAgLTE2LDYgKzE2LDggQEAKICAgICAgICAgICAgZmlsZTovL3JwY2JpbmQuc29ja2V0IFwKICAgICAgICAgICAgZmlsZTovL3JwY2JpbmQuc2VydmljZSBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJwY2JpbmQtcGFpci1hbGwtc3ZjX2dldGFyZ3MtY2FsbHMtd2l0aC1zdmNfZnJlZWFyZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcG1hcHByb2NfZHVtcC1GaXhlZC10eXBvLWluLW1lbW9yeS1sZWFrLXBhdGNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JwY2Jwcm9jX2NhbGxpdF9jb20tU3RvcC1mcmVlaW5nLWEtc3RhdGljLXBvaW50ZXIucGF0Y2ggXAogICAgICAgICAgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICJjZjEwY2Q0MWVkODIyOGZjNTRjMzE2MTkxYzFmMDdmZSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNzRhOWE1MzBkYzdjMTFlMGQ5MDVhYTU5YmNiMDg0N2MwMDkzMTNmMDJlOThkM2Q3OThhYTk1NjhmNDE0YzY2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuLzAwMDEtY29uZmlndXJlLmFjLWZpeC1jb25maWd1cmUtZmFpbGVkLXdoaWxlLWJ1aWxkLWRpci1oYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbi8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtY29uZmlndXJlLWZhaWxlZC13aGlsZS1idWlsZC1kaXItaGEucGF0Y2gKaW5kZXggZThkYjEyYy4uMTI3NGIyNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuLzAwMDEtY29uZmlndXJlLmFjLWZpeC1jb25maWd1cmUtZmFpbGVkLXdoaWxlLWJ1aWxkLWRpci1oYS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vMDAwMS1jb25maWd1cmUuYWMtZml4LWNvbmZpZ3VyZS1mYWlsZWQtd2hpbGUtYnVpbGQtZGlyLWhhLnBhdGNoCkBAIC05LDcgKzksOCBAQAogV2UgcmFyZWx5IHVzZSAieWVzOyIgdG8gbmFtZSBidWlsZCBkaXIsIHNvIHMveWVzL3llczsvZwogY291bGQgZml4IHRoZSBpc3N1ZQogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKK2h0dHBzOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9zY3JlZW4uZ2l0L2NvbW1pdC8/aD1zY3JlZW4tdjQmaWQ9OGMyYjQwNjFkMTY3NTZlZTJlZDM3ZjA4ZGIwNjNiODIxNTY1Njk0MwogCiBTaWduZWQtb2ZmLWJ5OiBKaWFuIEthbmcgPGppYW4ua2FuZ0B3aW5kcml2ZXIuY29tPgogLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vMDAwMi1jb21tLmgtbm93LWRlcGVuZHMtb24tdGVybS5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuLzAwMDItY29tbS5oLW5vdy1kZXBlbmRzLW9uLXRlcm0uaC5wYXRjaAppbmRleCBiNWQ3MWNjLi5hMDFkYzI0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vMDAwMi1jb21tLmgtbm93LWRlcGVuZHMtb24tdGVybS5oLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbi8wMDAyLWNvbW0uaC1ub3ctZGVwZW5kcy1vbi10ZXJtLmgucGF0Y2gKQEAgLTE1LDE5ICsxNSwxNiBAQAogIHNyYy9NYWtlZmlsZS5pbiB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5pbiBiL3NyYy9NYWtlZmlsZS5pbgotaW5kZXggZTc5MWU3OS4uZDRmN2MwYiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTExMyw3ICsxMTMsNyBAQCB0ZXJtLmg6IHRlcm0uYyB0ZXJtLnNoCi0gCi0ga21hcGRlZi5jOiB0ZXJtLmgKK0luZGV4OiBzY3JlZW4tNC42LjEvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzY3JlZW4tNC42LjEub3JpZy9NYWtlZmlsZS5pbgorKysrIHNjcmVlbi00LjYuMS9NYWtlZmlsZS5pbgorQEAgLTEzMyw3ICsxMzMsNyBAQCBrbWFwZGVmLmM6IHRlcm0uaAorIHR0eS5jOgl0dHkuc2ggCisgCXNoICQoc3JjZGlyKS90dHkuc2ggdHR5LmMKICAKIC1jb21tLmg6IGNvbW0uYyBjb21tLnNoIGNvbmZpZy5oCiArY29tbS5oOiBjb21tLmMgY29tbS5zaCBjb25maWcuaCB0ZXJtLmgKICAJQVdLPSQoQVdLKSBDQz0iJChDQykgJChDRkxBR1MpIiBzcmNkaXI9JHtzcmNkaXJ9IHNoICQoc3JjZGlyKS9jb21tLnNoCiAgCi0gZG9jczoKLS0tIAotMi40LjEKLQorIG9zZGVmLmg6IG9zZGVmLnNoIGNvbmZpZy5oIG9zZGVmLmguaW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjYuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNkODNhMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC42LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1TVU1NQVJZID0gIk11bHRpcGxleGluZyB0ZXJtaW5hbCBtYW5hZ2VyIgotREVTQ1JJUFRJT04gPSAiU2NyZWVuIGlzIGEgZnVsbC1zY3JlZW4gd2luZG93IG1hbmFnZXIgXAotdGhhdCBtdWx0aXBsZXhlcyBhIHBoeXNpY2FsIHRlcm1pbmFsIGJldHdlZW4gc2V2ZXJhbCBcCi1wcm9jZXNzZXMsIHR5cGljYWxseSBpbnRlcmFjdGl2ZSBzaGVsbHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3NjcmVlbi8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz9mdW5jPWFkZGl0ZW0mZ3JvdXA9c2NyZWVuIgotCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc2NyZWVuLmg7ZW5kbGluZT0yNjttZDU9Mzk3MTE0Mjk4OTI4OWE4MTk4YTU0NDIyMDcwM2MyYmYiCi0KLURFUEVORFMgPSAibmN1cnNlcyBcCi0gICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKLVJERVBFTkRTXyR7UE59ID0gImJhc2UtZmlsZXMiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9zY3JlZW4vc2NyZWVuLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2ZpbGU6Ly9zY3JlZW4ucGFtJywgJycsIGQpfSBcCi0gICAgICAgICAgIGZpbGU6Ly9SZW1vdmUtcmVkdW5kYW50LWNvbXBpbGVyLXNhbml0eS1jaGVja3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vUHJvdmlkZS1jcm9zcy1jb21waWxlLWFsdGVybmF0aXZlcy1mb3ItQUNfVFJZX1JVTi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9Ta2lwLWhvc3QtZmlsZS1zeXN0ZW0tY2hlY2tzLXdoZW4tY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0F2b2lkLW1pcy1pZGVudGlmeWluZy1zeXN0ZW1zLWFzLVNWUjQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1jb21tLmgtbm93LWRlcGVuZHMtb24tdGVybS5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWZvci1tdWx0aWpvYi1idWlsZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtY29uZmlndXJlLWZhaWxlZC13aGlsZS1idWlsZC1kaXItaGEucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjEzMmM4OTNhYWJmYWYyMDIwMDc0NzkwMjE1YzhjYWNkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFiYTlhZjY2Y2I2MjYxNTVkNmFiY2U0NzAzZjQ1Y2NlMGUzMGE1MTE0YTM2OGJkNjM4N2M5NjZjYmJiYjdjNjQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbdXRlbXB0ZXJdID0gImFjX2N2X2hlYWRlcl91dGVtcHRlcl9oPXllcyxhY19jdl9oZWFkZXJfdXRlbXB0ZXJfaD1ubyxsaWJ1dGVtcHRlciwiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtcHR5LW1vZGU9MDYyMCAtLXdpdGgtcHR5LWdyb3VwPTUgXAotICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS1lbmFibGUtcGFtJywgJy0tZGlzYWJsZS1wYW0nLCBkKX0iCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iIF07IHRoZW4KLQkJaW5zdGFsbCAtRCAtbSA2NDQgJHtXT1JLRElSfS9zY3JlZW4ucGFtICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9zY3JlZW4KLQlmaQotfQotCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotCWdyZXAgLXEgIl4ke2JpbmRpcn0vc2NyZWVuJCIgJEQke3N5c2NvbmZkaXJ9L3NoZWxscyB8fCBlY2hvICR7YmluZGlyfS9zY3JlZW4gPj4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscwotfQotCi1wa2dfcG9zdHJtXyR7UE59ICgpIHsKLQlwcmludGYgIiQoZ3JlcCAtdiAiXiR7YmluZGlyfS9zY3JlZW4kIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzKVxuIiA+ICREJHtzeXNjb25mZGlyfS9zaGVsbHMKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjYuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTMzYzMxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuNi4yLmJiCkBAIC0wLDAgKzEsNTIgQEAKK1NVTU1BUlkgPSAiTXVsdGlwbGV4aW5nIHRlcm1pbmFsIG1hbmFnZXIiCitERVNDUklQVElPTiA9ICJTY3JlZW4gaXMgYSBmdWxsLXNjcmVlbiB3aW5kb3cgbWFuYWdlciBcCit0aGF0IG11bHRpcGxleGVzIGEgcGh5c2ljYWwgdGVybWluYWwgYmV0d2VlbiBzZXZlcmFsIFwKK3Byb2Nlc3NlcywgdHlwaWNhbGx5IGludGVyYWN0aXZlIHNoZWxscy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvc2NyZWVuLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvP2Z1bmM9YWRkaXRlbSZncm91cD1zY3JlZW4iCisKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zY3JlZW4uaDtlbmRsaW5lPTI2O21kNT0zOTcxMTQyOTg5Mjg5YTgxOThhNTQ0MjIwNzAzYzJiZiIKKworREVQRU5EUyA9ICJuY3Vyc2VzIFwKKyAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgorUkRFUEVORFNfJHtQTn0gPSAiYmFzZS1maWxlcyIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3NjcmVlbi9zY3JlZW4tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnZmlsZTovL3NjcmVlbi5wYW0nLCAnJywgZCl9IFwKKyAgICAgICAgICAgZmlsZTovL1JlbW92ZS1yZWR1bmRhbnQtY29tcGlsZXItc2FuaXR5LWNoZWNrcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9Qcm92aWRlLWNyb3NzLWNvbXBpbGUtYWx0ZXJuYXRpdmVzLWZvci1BQ19UUllfUlVOLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL1NraXAtaG9zdC1maWxlLXN5c3RlbS1jaGVja3Mtd2hlbi1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQXZvaWQtbWlzLWlkZW50aWZ5aW5nLXN5c3RlbXMtYXMtU1ZSNC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbW0uaC1ub3ctZGVwZW5kcy1vbi10ZXJtLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtZm9yLW11bHRpam9iLWJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWZpeC1jb25maWd1cmUtZmFpbGVkLXdoaWxlLWJ1aWxkLWRpci1oYS5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYTBmNTI5ZDMzMzNiMTI4ZGZhYTMyNGQ5NzhiYTczYTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWI2OTIyNTIwZTZhMGNlNWUyODc2OGQ2MjBiMGY2NDBhNjYzMTM5N2Y5NWNjYjA0M2I3MGI5MWJiNTAzZmEzYSIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbworCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1t1dGVtcHRlcl0gPSAiYWNfY3ZfaGVhZGVyX3V0ZW1wdGVyX2g9eWVzLGFjX2N2X2hlYWRlcl91dGVtcHRlcl9oPW5vLGxpYnV0ZW1wdGVyLCIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1wdHktbW9kZT0wNjIwIC0td2l0aC1wdHktZ3JvdXA9NSBcCisgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLWVuYWJsZS1wYW0nLCAnLS1kaXNhYmxlLXBhbScsIGQpfSIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3NjcmVlbi5wYW0gJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kL3NjcmVlbgorCWZpCit9CisKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisJZ3JlcCAtcSAiXiR7YmluZGlyfS9zY3JlZW4kIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzIHx8IGVjaG8gJHtiaW5kaXJ9L3NjcmVlbiA+PiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzCit9CisKK3BrZ19wb3N0cm1fJHtQTn0gKCkgeworCXByaW50ZiAiJChncmVwIC12ICJeJHtiaW5kaXJ9L3NjcmVlbiQiICREJHtzeXNjb25mZGlyfS9zaGVsbHMpXG4iID4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkXzQuMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkXzQuMi4yLmJiCmluZGV4IGUzMWJlYzIuLmYxMGUzNjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZF80LjIuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWRfNC4yLjIuYmIKQEAgLTQyLDYgKzQyLDEyIEBACiAKIGRvX2luc3RhbGxfcHRlc3QoKSB7CiAJb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGluc3RhbGwtcHRlc3QgQlVJTERESVI9JHtCfSBERVNURElSPSR7RH0ke1BURVNUX1BBVEh9IFRFU1RESVI9JHtURVNURElSfQorCXNlZCAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAorCSAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCiB9CiAKIFJQUk9WSURFU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd1c3JtZXJnZScsICcvYmluL3NlZCcsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3cuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93LmluYwppbmRleCBjYzE4OTY0Li42NzMyMDdmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3cuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy5pbmMKQEAgLTYsOCArNiw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lZDgwZmYxYzJiNDA4NDNjZjU3NjhlNTIyOWNmMTZlNSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvcGFzc3dkLmM7YmVnaW5saW5lPTg7ZW5kbGluZT0zMDttZDU9ZDgzODg4ZWExNGFlNjE5NTE5ODJkNzcxMjU5NDc2NjEiCiAKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gIiIKLURFUEVORFNfY2xhc3MtbmF0aXZlc2RrID0gIiIKK0RFUEVORFMgPSAidmlydHVhbC9jcnlwdCIKIAogU1JDX1VSSSA9ICJodHRwOi8vcGtnLXNoYWRvdy5hbGlvdGguZGViaWFuLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKICAgICAgICAgICAgZmlsZTovL3NoYWRvdy00LjEuMy1kb3RzLWluLXVzZXJuYW1lcy5wYXRjaCBcCkBAIC0xOTAsNyArMTg5LDcgQEAKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtub2xvZ2luLjhdID0gIiR7bWFuZGlyfS9tYW44L25vbG9naW4uOCIKIAogUEFDS0FHRV9XUklURV9ERVBTICs9ICJzaGFkb3ctbmF0aXZlIgotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKK3BrZ19wb3N0aW5zdF8ke1BOfV9jbGFzcy10YXJnZXQgKCkgewogCWlmIFsgIngkRCIgIT0gIngiIF07IHRoZW4KIAkgIHJvb3Rhcmc9Ii0tcm9vdCAkRCIKIAllbHNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nXzIuMy4xYS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmdfMi4zLjFhLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNTg1YzE0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmdfMi4zLjFhLmJiCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgc2hhcmVkIGxpYnJhcnkgZm9yIHRoZSBTLUxhbmcgZXh0ZW5zaW9uIGxhbmd1YWdlIgotCi1ERVNDUklQVElPTiA9ICJTLUxhbmcgaXMgYW4gaW50ZXJwcmV0ZWQgbGFuZ3VhZ2UgYW5kIGEgcHJvZ3JhbW1pbmcgbGlicmFyeS4gIFRoZSBcCi1TLUxhbmcgbGFuZ3VhZ2Ugd2FzIGRlc2lnbmVkIHNvIHRoYXQgaXQgY2FuIGJlIGVhc2lseSBlbWJlZGRlZCBpbnRvIFwKLWEgcHJvZ3JhbSB0byBwcm92aWRlIHRoZSBwcm9ncmFtIHdpdGggYSBwb3dlcmZ1bCBleHRlbnNpb24gbGFuZ3VhZ2UuIFwKLVRoZSBTLUxhbmcgbGlicmFyeSwgcHJvdmlkZWQgaW4gdGhpcyBwYWNrYWdlLCBwcm92aWRlcyB0aGUgUy1MYW5nIFwKLWV4dGVuc2lvbiBsYW5ndWFnZS4gIFMtTGFuZydzIHN5bnRheCByZXNlbWJsZXMgQywgd2hpY2ggbWFrZXMgaXQgZWFzeSBcCi10byByZWNvZGUgUy1MYW5nIHByb2NlZHVyZXMgaW4gQyBpZiB5b3UgbmVlZCB0by4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuamVkc29mdC5vcmcvc2xhbmcvIgotU0VDVElPTiA9ICJsaWJzIgotREVQRU5EUyA9ICJuY3Vyc2VzIHZpcnR1YWwvbGliaWNvbnYiCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNTJhMThhNDcyZDRmN2U0NTQ3OWIwNjU2MzcxN2MwMiIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmplZHNvZnQub3JnL3JlbGVhc2VzLyR7QlBOfS8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL25vLXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZG9udC1saW5rLXRvLWhvc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdGVzdC1hZGQtb3V0cHV0LWluLXRoZS1mb3JtYXQtcmVzdWx0LXRlc3RuYW1lLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3Rlcm1pbmZvX2ZpeGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzUyMzUzMTMwNDJlZDBlNzFlYzcwOGY3Yjg1ZWMyNDEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTRmMGMzMDA3ZmRlOTE4MDM5YzA1ODk2NWRmZmRmZDZjNWFlYzBiYWQwZjQyMjcxOTJjYzQ4NjAyMWYwOGMzNiIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuamVkc29mdC5vcmcvcmVsZWFzZXMvc2xhbmcvIgotUFJFTUlSUk9SU19hcHBlbmQgPSAiXG4gaHR0cDovL3d3dy5qZWRzb2Z0Lm9yZy9yZWxlYXNlcy9zbGFuZy8uKiBodHRwOi8vd3d3LmplZHNvZnQub3JnL3JlbGVhc2VzL3NsYW5nL29sZC8gXG4iCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAotQ0xFQU5CUk9LRU4gPSAiMSIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1vbmlnIgotIyBUaGVyZSdzIG5vIHdheSB0byB0dXJuIG9mZiBycGF0aHMgYW5kIHNsYW5nIHdpbGwgLXJwYXRoIHRvIHRoZSBkZWZhdWx0IHNlYXJjaAotIyBwYXRoLiBVbnNldCBSUEFUSCB0byBzdG9wIHRoaXMuCi1FWFRSQV9PRU1BS0UgPSAiUlBBVEg9JyciCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJwY3JlIgotUEFDS0FHRUNPTkZJR1twY3JlXSA9ICItLXdpdGgtcGNyZT0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC1wY3JlLHBjcmUiCi1QQUNLQUdFQ09ORklHW3BuZ10gPSAiLS13aXRoLXBuZz0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC1wbmcsbGlicG5nIgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtej0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC16LHpsaWIiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIGNkICR7U30vYXV0b2NvbmYKLSAgICAjIHNsYW5nIGtlZXBzIGNvbmZpZ3VyZS5hYyBhbmQgcmVzdCBvZiBhdXRvY29uZiBmaWxlcyBpbiBhdXRvY29uZi8gZGlyZWN0b3J5Ci0gICAgIyB3ZSBoYXZlIHRvIGdvIHRoZXJlIHRvIGJlIGFibGUgdG8gcnVuIGdudS1jb25maWdpemUgY2F1c2UgaXQgZXhwZWN0cyBjb25maWd1cmUue2luLGFjfQotICAgICMgdG8gYmUgcHJlc2VudC4gUmVzdWx0aW5nIGZpbGVzIGxhbmQgaW4gYXV0b2NvbmYvYXV0b2NvbmYvIHNvIHdlIG5lZWQgdG8gbW92ZSB0aGVtLgotICAgIGdudS1jb25maWdpemUgLS1mb3JjZSAmJiBtdiBhdXRvY29uZi9jb25maWcuKiAuCi0gICAgIyBGb3IgdGhlIHNhbWUgcmVhc29uIHdlIGFsc28gbmVlZCB0byBydW4gYXV0b2NvbmYgbWFudWFsbHkuCi0gICAgYXV0b2NvbmYgJiYgbXYgY29uZmlndXJlIC4uCi0gICAgY2QgJHtCfQotfQotCi1kb19jb21waWxlX3B0ZXN0KCkgewotCW9lX3J1bm1ha2UgLUMgc3JjIHN0YXRpYwotCW9lX3J1bm1ha2UgLUMgc3JjL3Rlc3Qgc2x0ZXN0Ci19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JbWtkaXIgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotCWZvciBmIGluIE1ha2VmaWxlIHNsdGVzdCBydW50ZXN0cy5zaCAqLnNsICouaW5jOyBkbwotCQljcCAke1N9L3NyYy90ZXN0LyRmICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvCi0JZG9uZQotCXNlZCAtZSAncy9cIFwkKFRFU1RfUEdNKVwuY1wgYXNzb2NcLmNcIGxpc3RcLmNcIFwkKFNMQU5HTElCKVwvbGlic2xhbmdcLmEvLycgXAotCSAgICAtZSAnL1wkKENDKS4qKFRFU1RfUEdNKS9kJyBcCi0JICAgIC1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvTWFrZWZpbGUKLQotCWNwICR7U30vc2xzaC9saWIvcmVxdWlyZS5zbCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0LwotCXNlZCAtaSAncy9cLlwuXC9cLlwuXC9zbHNoXC9saWJcL3JlcXVpcmVcLnNsL3JlcXVpcmVcLnNsLycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC9yZXEuc2wKLQotCWNwICR7U30vZG9jL3RleHQvc2xhbmdmdW4udHh0ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvCi0Jc2VkIC1pICdzL1wuXC5cL1wuXC5cL2RvY1wvdGV4dFwvc2xhbmdmdW5cLnR4dC9zbGFuZ2Z1blwudHh0LycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC9kb2NmdW4uc2wKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8ke0JQTn0vdjIvbW9kdWxlcy8gJHtkYXRhZGlyfS9zbHNoLyIKLQotUEFSQUxMRUxfTUFLRSA9ICIiCi1QQVJBTExFTF9NQUtFSU5TVCA9ICIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZ18yLjMuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmdfMi4zLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdmZDQxYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmdfMi4zLjIuYmIKQEAgLTAsMCArMSw4MSBAQAorU1VNTUFSWSA9ICJUaGUgc2hhcmVkIGxpYnJhcnkgZm9yIHRoZSBTLUxhbmcgZXh0ZW5zaW9uIGxhbmd1YWdlIgorCitERVNDUklQVElPTiA9ICJTLUxhbmcgaXMgYW4gaW50ZXJwcmV0ZWQgbGFuZ3VhZ2UgYW5kIGEgcHJvZ3JhbW1pbmcgbGlicmFyeS4gIFRoZSBcCitTLUxhbmcgbGFuZ3VhZ2Ugd2FzIGRlc2lnbmVkIHNvIHRoYXQgaXQgY2FuIGJlIGVhc2lseSBlbWJlZGRlZCBpbnRvIFwKK2EgcHJvZ3JhbSB0byBwcm92aWRlIHRoZSBwcm9ncmFtIHdpdGggYSBwb3dlcmZ1bCBleHRlbnNpb24gbGFuZ3VhZ2UuIFwKK1RoZSBTLUxhbmcgbGlicmFyeSwgcHJvdmlkZWQgaW4gdGhpcyBwYWNrYWdlLCBwcm92aWRlcyB0aGUgUy1MYW5nIFwKK2V4dGVuc2lvbiBsYW5ndWFnZS4gIFMtTGFuZydzIHN5bnRheCByZXNlbWJsZXMgQywgd2hpY2ggbWFrZXMgaXQgZWFzeSBcCit0byByZWNvZGUgUy1MYW5nIHByb2NlZHVyZXMgaW4gQyBpZiB5b3UgbmVlZCB0by4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuamVkc29mdC5vcmcvc2xhbmcvIgorU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyA9ICJuY3Vyc2VzIHZpcnR1YWwvbGliaWNvbnYiCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNTJhMThhNDcyZDRmN2U0NTQ3OWIwNjU2MzcxN2MwMiIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmplZHNvZnQub3JnL3JlbGVhc2VzLyR7QlBOfS8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL25vLXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZG9udC1saW5rLXRvLWhvc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdGVzdC1hZGQtb3V0cHV0LWluLXRoZS1mb3JtYXQtcmVzdWx0LXRlc3RuYW1lLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3Rlcm1pbmZvX2ZpeGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzJkNWE3YWEwMjQ2NjI3ZGE0OTBiZTRlMzk5Yzg3Y2IiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmM5ZTNiMGZjNGY2N2MzYzFmNmQ0M2M5MGMxNmE1YzQyZDExN2I4ZTI4NDU3YzViNDY4MzFiOGI1ZDNhZTMxYSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuamVkc29mdC5vcmcvcmVsZWFzZXMvc2xhbmcvIgorUFJFTUlSUk9SU19hcHBlbmQgPSAiXG4gaHR0cDovL3d3dy5qZWRzb2Z0Lm9yZy9yZWxlYXNlcy9zbGFuZy8uKiBodHRwOi8vd3d3LmplZHNvZnQub3JnL3JlbGVhc2VzL3NsYW5nL29sZC8gXG4iCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAorQ0xFQU5CUk9LRU4gPSAiMSIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1vbmlnIgorIyBUaGVyZSdzIG5vIHdheSB0byB0dXJuIG9mZiBycGF0aHMgYW5kIHNsYW5nIHdpbGwgLXJwYXRoIHRvIHRoZSBkZWZhdWx0IHNlYXJjaAorIyBwYXRoLiBVbnNldCBSUEFUSCB0byBzdG9wIHRoaXMuCitFWFRSQV9PRU1BS0UgPSAiUlBBVEg9JyciCisKK1BBQ0tBR0VDT05GSUcgPz89ICJwY3JlIgorUEFDS0FHRUNPTkZJR1twY3JlXSA9ICItLXdpdGgtcGNyZT0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC1wY3JlLHBjcmUiCitQQUNLQUdFQ09ORklHW3BuZ10gPSAiLS13aXRoLXBuZz0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC1wbmcsbGlicG5nIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtej0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC16LHpsaWIiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIGNkICR7U30vYXV0b2NvbmYKKyAgICAjIHNsYW5nIGtlZXBzIGNvbmZpZ3VyZS5hYyBhbmQgcmVzdCBvZiBhdXRvY29uZiBmaWxlcyBpbiBhdXRvY29uZi8gZGlyZWN0b3J5CisgICAgIyB3ZSBoYXZlIHRvIGdvIHRoZXJlIHRvIGJlIGFibGUgdG8gcnVuIGdudS1jb25maWdpemUgY2F1c2UgaXQgZXhwZWN0cyBjb25maWd1cmUue2luLGFjfQorICAgICMgdG8gYmUgcHJlc2VudC4gUmVzdWx0aW5nIGZpbGVzIGxhbmQgaW4gYXV0b2NvbmYvYXV0b2NvbmYvIHNvIHdlIG5lZWQgdG8gbW92ZSB0aGVtLgorICAgIGdudS1jb25maWdpemUgLS1mb3JjZSAmJiBtdiBhdXRvY29uZi9jb25maWcuKiAuCisgICAgIyBGb3IgdGhlIHNhbWUgcmVhc29uIHdlIGFsc28gbmVlZCB0byBydW4gYXV0b2NvbmYgbWFudWFsbHkuCisgICAgYXV0b2NvbmYgJiYgbXYgY29uZmlndXJlIC4uCisgICAgY2QgJHtCfQorfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgLUMgc3JjIHN0YXRpYworCW9lX3J1bm1ha2UgLUMgc3JjL3Rlc3Qgc2x0ZXN0Cit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJbWtkaXIgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCWZvciBmIGluIE1ha2VmaWxlIHNsdGVzdCBydW50ZXN0cy5zaCAqLnNsICouaW5jOyBkbworCQljcCAke1N9L3NyYy90ZXN0LyRmICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvCisJZG9uZQorCXNlZCAtZSAncy9cIFwkKFRFU1RfUEdNKVwuY1wgYXNzb2NcLmNcIGxpc3RcLmNcIFwkKFNMQU5HTElCKVwvbGlic2xhbmdcLmEvLycgXAorCSAgICAtZSAnL1wkKENDKS4qKFRFU1RfUEdNKS9kJyBcCisJICAgIC1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvTWFrZWZpbGUKKworCWNwICR7U30vc2xzaC9saWIvcmVxdWlyZS5zbCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0LworCXNlZCAtaSAncy9cLlwuXC9cLlwuXC9zbHNoXC9saWJcL3JlcXVpcmVcLnNsL3JlcXVpcmVcLnNsLycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC9yZXEuc2wKKworCWNwICR7U30vZG9jL3RleHQvc2xhbmdmdW4udHh0ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvCisJc2VkIC1pICdzL1wuXC5cL1wuXC5cL2RvY1wvdGV4dFwvc2xhbmdmdW5cLnR4dC9zbGFuZ2Z1blwudHh0LycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC9kb2NmdW4uc2wKK30KKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8ke0JQTn0vdjIvbW9kdWxlcy8gJHtkYXRhZGlyfS9zbHNoLyIKKworUEFSQUxMRUxfTUFLRSA9ICIiCitQQVJBTExFTF9NQUtFSU5TVCA9ICIiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdGF0L3N0YXQtMy4zL2ZpeC1lcnJvci1yZXR1cm4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdC0zLjMvZml4LWVycm9yLXJldHVybi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDMyOTk1ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdC0zLjMvZml4LWVycm9yLXJldHVybi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVRoaXMgcGF0Y2ggZml4aWVzIHRoZSB3cm9uZyByZXR1cm4gY29kZSBvZiBzdGF0IC1oLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IFpoYW5nbGUgWWFuZyA8emhhbmdsZS55YW5nQHdpbmRyaXZlci5jb20+Ci0KLS0tLSBzdGF0LTMuMy9zdGF0LmMub3JpZwkyMDEzLTA4LTIyIDEwOjQ5OjQ1LjAwMDAwMDAwMCArMDgwMAotKysrIHN0YXQtMy4zL3N0YXQuYwkyMDEzLTA4LTIyIDEwOjUwOjMxLjAwMDAwMDAwMCArMDgwMAotQEAgLTg0NSw3ICs4NDUsNyBAQAotICAgICBmcHJpbnRmKHN0ZGVyciwgIlx0XHQlJVMgLSBTZWN1cml0eSBJRCBpbiBTRS1MaW51eFxuIik7Ci0gICAgIGZwcmludGYoc3RkZXJyLCAiXHRcdCUlQyAtIFNlY3VyaXR5IGNvbnRleHQgaW4gU0UtTGludXhcbiIpOwotICAgICBmcHJpbnRmKHN0ZGVyciwgIlx0XHQlJWQgLSBGcmVlIGZpbGUgbm9kZXMgaW4gZmlsZSBzeXN0ZW1cbiIpOwotLSAgICBleGl0KDEpOwotKyAgICBleGl0KDApOwotIH0KLSAgIAotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdGF0L3N0YXQtMy4zL2ZpeC1zZWN1cml0eS1mb3JtYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdC0zLjMvZml4LXNlY3VyaXR5LWZvcm1hdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGMwMWVkMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdC0zLjMvZml4LXNlY3VyaXR5LWZvcm1hdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLXN0YXQ6IEZpeGluZyBzZWN1cml0eSBmb3JtYXR0aW5nIGlzc3VlcwotCi1GaXggc2VjdXJpdHkgZm9ybWF0dGluZyBpc3N1ZXMgcmVsYXRlZCB0byBwcmludGYgd2l0aG91dCBOVUxMIGFyZ3VtZW50IAotCi1zdGF0LmM6IEluIGZ1bmN0aW9uICdwcmludF9odW1hbl9hY2Nlc3MnOgotc3RhdC5jOjI5MjoxMzogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi0gICAgIHByaW50ZiAoYWNjZXNzKTsKLSAgICAgICAgICAgICBeCi1zdGF0LmM6IEluIGZ1bmN0aW9uICdwcmludF9odW1hbl90aW1lJzoKLXN0YXQuYzoyOTk6NTc6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotICAgaWYgKHN0cmZ0aW1lKHN0ciwgNDAsICIlYyIsIGxvY2FsdGltZSh0KSkgPiAwKSBwcmludGYoc3RyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KLXN0YXQuYzogSW4gZnVuY3Rpb24gJ3ByaW50X2l0JzoKLXN0YXQuYzo2MTM6NjogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi0gICAgICBwcmludGYoYik7Ci0gICAgICBeCi1zdGF0LmM6NjQyOjY6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotICAgICAgcHJpbnRmKGIpOwotICAgICAgXgotCi1bWU9DVE8gIzk1NTBdCi1baHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD05NTUwXQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogRWR3aW4gUGxhdWNodSA8ZWR3aW4ucGxhdWNodS5jYW1hY2hvQGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL3N0YXQuYyBiL3N0YXQuYwotaW5kZXggMWVkMDdhOS4uMmJlNmY2MiAxMDA2NDQKLS0tLSBhL3N0YXQuYwotKysrIGIvc3RhdC5jCi1AQCAtMjg5LDE1ICsyODksMTUgQEAgdm9pZCBwcmludF9odW1hbl9hY2Nlc3Moc3RydWN0IHN0YXQgKnN0YXRidWYpCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgYWNjZXNzWzBdID0gJz8nOwotICAgICB9Ci0tICAgIHByaW50ZiAoYWNjZXNzKTsKLSsgICAgZnB1dHMoYWNjZXNzLHN0ZG91dCk7Ci0gfQotIAotIHZvaWQgcHJpbnRfaHVtYW5fdGltZSh0aW1lX3QgKnQpCi0gewotICAgY2hhciBzdHJbNDBdOwotICAgCi0tICBpZiAoc3RyZnRpbWUoc3RyLCA0MCwgIiVjIiwgbG9jYWx0aW1lKHQpKSA+IDApIHByaW50ZihzdHIpOwotLSAgZWxzZSBwcmludGYoIkNhbm5vdCBjYWxjdWxhdGUgaHVtYW4gcmVhZGFibGUgdGltZSwgc29ycnkiKTsKLSsgIGlmIChzdHJmdGltZShzdHIsIDQwLCAiJWMiLCBsb2NhbHRpbWUodCkpID4gMCkgZnB1dHMoc3RyLHN0ZG91dCk7Ci0rICBlbHNlIGZwdXRzKCJDYW5ub3QgY2FsY3VsYXRlIGh1bWFuIHJlYWRhYmxlIHRpbWUsIHNvcnJ5IixzdGRvdXQpOwotIH0KLSAKLSAvKiBwcmludCBzdGF0ZnMgaW5mbyAqLwotQEAgLTYxMCw3ICs2MTAsNyBAQCB2b2lkIHByaW50X2l0KGNoYXIgKm1hc3RlcmZvcm1hdCwgY2hhciAqZmlsZW5hbWUsCi0gCXsKLSAJICAgIHN0cmNweSAocGZvcm1hdCwgIiUiKTsKLSAJICAgICptKysgPSAnXDAnOwotLQkgICAgcHJpbnRmKGIpOwotKwkgICAgZnB1dHMoYixzdGRvdXQpOwotIAotIAkgICAgLyogY29weSBhbGwgZm9ybWF0IHNwZWNpZmllcnMgdG8gb3VyIGZvcm1hdCBzdHJpbmcgKi8KLSAJICAgIHdoaWxlIChpc2RpZ2l0KCptKSB8fCBzdHJjaHIoIiMwLSsuIEkiLCAqbSkpCi1AQCAtNjM5LDcgKzYzOSw3IEBAIHZvaWQgcHJpbnRfaXQoY2hhciAqbWFzdGVyZm9ybWF0LCBjaGFyICpmaWxlbmFtZSwKLSAJfQotIAllbHNlCi0gCXsKLS0JICAgIHByaW50ZihiKTsKLSsJICAgIGZwdXRzKGIsc3Rkb3V0KTsKLSAJICAgIGIgPSBOVUxMOwotIAl9Ci0gICAgIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RhdC9zdGF0XzMuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RhdC9zdGF0XzMuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFjOGU4OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdF8zLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1TVU1NQVJZID0gIkNvbW1hbmQgbGluZSBmaWxlIHN0YXR1cyBkaXNwbGF5IHV0aWxpdHkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmliaWJsaW8ub3JnL3B1Yi9MaW51eC91dGlscy9maWxlLyIKLURFU0NSSVBUSU9OID0gIkRpc3BsYXlzIGFsbCBpbmZvcm1hdGlvbiBhYm91dCBhIGZpbGUgdGhhdCB0aGUgc3RhdCgpIGNhbGwgcHJvdmlkZXMgYW5kIGFsbCBpbmZvcm1hdGlvbiBhYm91dCBhIGZpbGVzeXN0ZW0gdGhhdCBzdGF0ZnMoKSBwcm92aWRlcy4iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0zOTg4NmIwNzdmZDA3MmU4NzZlNWM0YzE2MzEwYjYzMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9HUEw7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuaWJpYmxpby5vcmcvcHViL0xpbnV4L3V0aWxzL2ZpbGUvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1zZWN1cml0eS1mb3JtYXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWVycm9yLXJldHVybi5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjM3ZTI0N2U4ZTQwMGFkOTIwNWYxYjA1MDBiNzI4ZmQzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcwNzFmMDM4NGE0MjNhOTM4ZGQ1NDJjMWYwODU0N2EwMjgyNGY2MzU5YWNkM2VmM2Y5NDRiMmM0YzJkMWVlMDkiCi0KLUVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9ICR7RH0ke21hbmRpcn0vbWFuMQotCWluc3RhbGwgLW0gNzU1IHN0YXQgJHtEfSR7YmFzZV9iaW5kaXJ9L3N0YXQuc3RhdAotCWluc3RhbGwgLW0gNjQ0IHN0YXQuMSAke0R9JHttYW5kaXJ9L21hbjEKLX0KLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gInN0YXQiCi1BTFRFUk5BVElWRV9QUklPUklUWVtzdGF0XSA9ICIyMDAiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc3RhdF0gPSAiJHtiYXNlX2JpbmRpcn0vc3RhdCIKLUFMVEVSTkFUSVZFX1RBUkdFVFtzdGF0XSA9ICIke2Jhc2VfYmluZGlyfS9zdGF0LnN0YXQiCi0KLUFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJzdGF0LjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc3RhdC4xXSA9ICIke21hbmRpcn0vbWFuMS9zdGF0LjEiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby5pbmMKaW5kZXggODBlYzBhZS4uMzYyYmQzYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvLmluYwpAQCAtNCw4ICs0LDggQEAKIEJVR1RSQUNLRVIgPSAiaHR0cDovL3d3dy5zdWRvLndzL2J1Z3MvIgogU0VDVElPTiA9ICJhZG1pbiIKIExJQ0VOU0UgPSAiSVNDICYgQlNEICYgWmxpYiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9MSUNFTlNFO21kNT02NTJmYjQzMzRjMTNiNTExNTk3ZDc5NDBlZjhiMzMyMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9wbHVnaW5zL3N1ZG9lcnMvcmVkYmxhY2suYztiZWdpbmxpbmU9MTtlbmRsaW5lPTQxO21kNT1jZmU0MTExMmY5NmMxOWEwNzQ5MzRkMTI4ZjQ1YzY5MyBcCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvTElDRU5TRTttZDU9Nzc2NWEzZDc4N2NiNGZlZDNjY2MzYzljZWUwMzBhZjkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcGx1Z2lucy9zdWRvZXJzL3JlZGJsYWNrLmM7YmVnaW5saW5lPTE7ZW5kbGluZT00MTttZDU9ODA1NzgyYTg0NjY5NzU3MTZmODM3NmIyYmU5YWVkZGUgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvcmVhbGxvY2FycmF5LmM7YmVnaW5saW5lPTM7ZW5kbGluZT0xNjttZDU9ODViMDkwNWI3OTVkNGQ1OGJmMmUwMDYzNTY0OWVlYzYgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvZm5tYXRjaC5jO2JlZ2lubGluZT0zO2VuZGxpbmU9Mjc7bWQ1PTY3ZjgzZWU5YmQ0NTY1NTczOTcwODJmOGYxYmUwZWZkIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2dldGN3ZC5jO2JlZ2lubGluZT01O2VuZGxpbmU9Mjc7bWQ1PTQ0OWFmNGNjNTdmYzdkNDZmNDIwOTA2MDhiYTNlNjgxIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvXzEuOC4yMHAyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjIwcDIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmMjRiM2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjIwcDIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1yZXF1aXJlIHN1ZG8uaW5jCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5zdWRvLndzL3N1ZG8vZGlzdC9zdWRvLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLWlkX3QtZGVmaW5pdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotUEFNX1NSQ19VUkkgPSAiZmlsZTovL3N1ZG8ucGFtIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDNkYThlNzExY2FjYTZmZDkzZTU3NzUxYmZiNzRhZGMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmQ0MmFlMTA1OWU5MzVmNzk1YzY5ZWE5N2IzZGUwOWZlOTQxMGE1OGE3NGI1ZDVlNjgzNmViNTA2N2E0NDVkOSIKLQotREVQRU5EUyArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCi1SREVQRU5EU18ke1BOfSArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbS1wbHVnaW4tbGltaXRzIHBhbS1wbHVnaW4ta2V5aW5pdCcsICcnLCBkKX0iCi0KLUVYVFJBX09FQ09ORiArPSAiIFwKLSAgICAgICAgICAgICBhY19jdl90eXBlX3JzaXplX3Q9bm8gXAotICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0td2l0aC1wYW0nLCAnLS13aXRob3V0LXBhbScsIGQpfSBcCi0gICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJy0tZW5hYmxlLXRtcGZpbGVzLmQ9JHtsaWJkaXJ9L3RtcGZpbGVzLmQnLCAnLS1kaXNhYmxlLXRtcGZpbGVzLmQnLCBkKX0gXAotICAgICAgICAgICAgICIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgotCQlpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3N1ZG8ucGFtICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9zdWRvCi0JZmkKLQotCWNobW9kIDQxMTEgJHtEfSR7YmluZGlyfS9zdWRvCi0JY2htb2QgMDQ0MCAke0R9JHtzeXNjb25mZGlyfS9zdWRvZXJzCi0KLQkjIEV4cGxpY2l0bHkgcmVtb3ZlIHRoZSAke2xvY2Fsc3RhdGVkaXJ9L3J1biBkaXJlY3RvcnkgdG8gYXZvaWQgUUEgZXJyb3IKLQlybWRpciAtcCAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3VkbwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3RtcGZpbGVzLmQiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZXhlY2Rpcn0vJHtCUE59L2xpYioke1NPTElCU0RFVn0gJHtsaWJleGVjZGlyfS8ke0JQTn0vKi5sYSBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbGliKiR7U09MSUJTREVWfSAke2xpYmV4ZWNkaXJ9LyoubGEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE1MDE3OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvXzEuOC4yMi5iYgpAQCAtMCwwICsxLDM2IEBACityZXF1aXJlIHN1ZG8uaW5jCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5zdWRvLndzL3N1ZG8vZGlzdC9zdWRvLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLWlkX3QtZGVmaW5pdGlvbi5wYXRjaCBcCisgICAgICAgICAgICIKKworUEFNX1NSQ19VUkkgPSAiZmlsZTovL3N1ZG8ucGFtIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjRhYmRlYTQ4ZGI0YzVhYmNkNDEwMTY3YzgwMWNjOGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzI1NmNiMjdjMjA4ODNiMTQzNjBlZGRiZDE3Zjk4OTIyMDczZDEwNGIyMTRjZjY1YWVhY2YxZDljOWI5ZmQwMiIKKworREVQRU5EUyArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCitSREVQRU5EU18ke1BOfSArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbS1wbHVnaW4tbGltaXRzIHBhbS1wbHVnaW4ta2V5aW5pdCcsICcnLCBkKX0iCisKK0VYVFJBX09FQ09ORiArPSAiIFwKKyAgICAgICAgICAgICBhY19jdl90eXBlX3JzaXplX3Q9bm8gXAorICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0td2l0aC1wYW0nLCAnLS13aXRob3V0LXBhbScsIGQpfSBcCisgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJy0tZW5hYmxlLXRtcGZpbGVzLmQ9JHtsaWJkaXJ9L3RtcGZpbGVzLmQnLCAnLS1kaXNhYmxlLXRtcGZpbGVzLmQnLCBkKX0gXAorICAgICAgICAgICAgICIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3N1ZG8ucGFtICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9zdWRvCisJZmkKKworCWNobW9kIDQxMTEgJHtEfSR7YmluZGlyfS9zdWRvCisJY2htb2QgMDQ0MCAke0R9JHtzeXNjb25mZGlyfS9zdWRvZXJzCisKKwkjIEV4cGxpY2l0bHkgcmVtb3ZlIHRoZSAke2xvY2Fsc3RhdGVkaXJ9L3J1biBkaXJlY3RvcnkgdG8gYXZvaWQgUUEgZXJyb3IKKwlybWRpciAtcCAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3VkbworfQorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3RtcGZpbGVzLmQiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZXhlY2Rpcn0vJHtCUE59L2xpYioke1NPTElCU0RFVn0gJHtsaWJleGVjZGlyfS8ke0JQTn0vKi5sYSBcCisgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbGliKiR7U09MSUJTREVWfSAke2xpYmV4ZWNkaXJ9LyoubGEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL25vLXN0cmlwLWluc3RhbGwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL25vLXN0cmlwLWluc3RhbGwucGF0Y2gKaW5kZXggMDBmYmE3MS4uZDQyNmM4MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy9uby1zdHJpcC1pbnN0YWxsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvbm8tc3RyaXAtaW5zdGFsbC5wYXRjaApAQCAtMSwxMCArMSwxMCBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQogCi1JbmRleDogc3lza2xvZ2QtMS41L01ha2VmaWxlCitJbmRleDogc3lza2xvZ2QtMS41LjEvTWFrZWZpbGUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzeXNrbG9nZC0xLjUub3JpZy9NYWtlZmlsZQkyMDA5LTA2LTA5IDEzOjAyOjQxLjAwMDAwMDAwMCArMDIwMAotKysrIHN5c2tsb2dkLTEuNS9NYWtlZmlsZQkyMDA5LTA2LTA5IDEzOjAzOjA2LjAwMDAwMDAwMCArMDIwMAotQEAgLTEyNyw4ICsxMjcsOCBAQAorLS0tIHN5c2tsb2dkLTEuNS4xLm9yaWcvTWFrZWZpbGUKKysrKyBzeXNrbG9nZC0xLjUuMS9NYWtlZmlsZQorQEAgLTEyNyw4ICsxMjcsOCBAQCBjbG9iYmVyOiBjbGVhbgogIAlybSAtZiBzeXNsb2dkIGtsb2dkIGtzeW0gc3lzbG9nX3RzdCBvb3BzX3Rlc3QgVEFHUyB0c3lzbG9nZCB0a2xvZ2QKICAKICBpbnN0YWxsX2V4ZWM6IHN5c2xvZ2Qga2xvZ2QKQEAgLTE0LDQgKzE0LDQgQEAKICsJJHtJTlNUQUxMfSAtbSA1MDAga2xvZ2QgJHtCSU5ESVJ9L2tsb2dkCiAgCiAgaW5zdGFsbF9tYW46Ci0gCSR7SU5TVEFMTH0gLW0gJHtNQU5fUEVSTVN9IHN5c2tsb2dkLjggJHtNQU5ESVJ9L21hbjgvc3lza2xvZ2QuOAorIAkke0lOU1RBTEx9IC1vICR7TUFOX1VTRVJ9IC1nICR7TUFOX0dST1VQfSAtbSAke01BTl9QRVJNU30gc3lza2xvZ2QuOCAke01BTkRJUn0vbWFuOC9zeXNrbG9nZC44CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC8wMDAxLUluY2x1ZGUtbmVlZGVkLWhlYWRlcnMtZXhwbGljaXRseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LzAwMDEtSW5jbHVkZS1uZWVkZWQtaGVhZGVycy1leHBsaWNpdGx5LnBhdGNoCmluZGV4IGMxMjY1MjMuLjFiNjMyOTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LzAwMDEtSW5jbHVkZS1uZWVkZWQtaGVhZGVycy1leHBsaWNpdGx5LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LzAwMDEtSW5jbHVkZS1uZWVkZWQtaGVhZGVycy1leHBsaWNpdGx5LnBhdGNoCkBAIC0yMSwxMCArMjEsMTAgQEAKICBzYV9jb21tb24uYyB8IDEgKwogIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCiAKLWRpZmYgLS1naXQgYS9jb21tb24uYyBiL2NvbW1vbi5jCi1pbmRleCBhMjMxNTViLi5hZDg2NDQ2IDEwMDY0NAotLS0tIGEvY29tbW9uLmMKLSsrKyBiL2NvbW1vbi5jCitJbmRleDogc3lzc3RhdC0xMS43LjEvY29tbW9uLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzeXNzdGF0LTExLjcuMS5vcmlnL2NvbW1vbi5jCisrKysgc3lzc3RhdC0xMS43LjEvY29tbW9uLmMKIEBAIC0yMCw2ICsyMCw3IEBACiAgICovCiAgCkBAIC0zMiwxMSArMzIsMTEgQEAKICsjaW5jbHVkZSA8bGltaXRzLmg+CiAgI2luY2x1ZGUgPHN0cmluZy5oPgogICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8dGltZS5oPgotZGlmZiAtLWdpdCBhL2lvY29uZi5jIGIvaW9jb25mLmMKLWluZGV4IDdkODhjNWQuLjZkNjc2OTEgMTAwNjQ0Ci0tLS0gYS9pb2NvbmYuYwotKysrIGIvaW9jb25mLmMKKyAjaW5jbHVkZSA8c3RkYXJnLmg+CitJbmRleDogc3lzc3RhdC0xMS43LjEvaW9jb25mLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzeXNzdGF0LTExLjcuMS5vcmlnL2lvY29uZi5jCisrKysgc3lzc3RhdC0xMS43LjEvaW9jb25mLmMKIEBAIC0yNyw2ICsyNyw3IEBACiAgI2luY2x1ZGUgPGVycm5vLmg+CiAgI2luY2x1ZGUgPGRpcmVudC5oPgpAQCAtNDUsMTAgKzQ1LDEwIEBACiAgCiAgI2luY2x1ZGUgImlvY29uZi5oIgogICNpbmNsdWRlICJjb21tb24uaCIKLWRpZmYgLS1naXQgYS9zYV9jb21tb24uYyBiL3NhX2NvbW1vbi5jCi1pbmRleCBiNzM1MWQ5Li5jOWUzMjk5IDEwMDY0NAotLS0tIGEvc2FfY29tbW9uLmMKLSsrKyBiL3NhX2NvbW1vbi5jCitJbmRleDogc3lzc3RhdC0xMS43LjEvc2FfY29tbW9uLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzeXNzdGF0LTExLjcuMS5vcmlnL3NhX2NvbW1vbi5jCisrKysgc3lzc3RhdC0xMS43LjEvc2FfY29tbW9uLmMKIEBAIC0yMCw2ICsyMCw3IEBACiAgICovCiAgCkBAIC01Niw3ICs1Niw0IEBACiArI2luY2x1ZGUgPGxpbWl0cy5oPgogICNpbmNsdWRlIDxzdHJpbmcuaD4KICAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHRpbWUuaD4KLS0tIAotMi41LjIKLQorICNpbmNsdWRlIDxzdGRpbnQuaD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzExLjUuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzExLjUuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzJhZjkzMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMS41LjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLXJlcXVpcmUgc3lzc3RhdC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTIzYTc0YjNmNGNhZjk2MTYyMzA3ODlkOTQyMTdhY2IiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLUluY2x1ZGUtbmVlZGVkLWhlYWRlcnMtZXhwbGljaXRseS5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjhmNGE1ZDBkZTI5ZjEwNTYxNTNlMjVlN2E5YzUxOGQyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRhMzhlZmFhMGNhODVlZTU0ODRkMDQ2YmQ0MjcwMTI5NzkyNjRmZWYxN2YwN2ZkNzg1NTg2MGU1OTI4MTk0ODIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMS43LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMS43LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY3MzhlNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzExLjcuMS5iYgpAQCAtMCwwICsxLDggQEAKK3JlcXVpcmUgc3lzc3RhdC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTIzYTc0YjNmNGNhZjk2MTYyMzA3ODlkOTQyMTdhY2IiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLUluY2x1ZGUtbmVlZGVkLWhlYWRlcnMtZXhwbGljaXRseS5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gImJkY2RhN2M5MDQ4YzdjMjJmYjFmMzBmNzUyODVkMTNkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMwM2E1OTViMWFmMDMzMGIxODNhMGYxZmViZmNjZjg5ZjE4M2I5NTc1YWUwNTYyYjkxZmRiODc2ZjNlZjFmZWIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXIvQ1ZFLTIwMTYtNjMyMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhci9DVkUtMjAxNi02MzIxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDM1YmNjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhci9DVkUtMjAxNi02MzIxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotRnJvbSA3MzQwZjY3Yjk4NjBlYTA1MzFjMTQ1MGU1YWEyNjFjNTBmNjcxNjVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF1bCBFZ2dlcnQgPGVnZ2VydEBQZW5ndWluLkNTLlVDTEEuRURVPgotRGF0ZTogU2F0LCAyOSBPY3QgMjAxNiAyMTowNDo0MCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBXaGVuIGV4dHJhY3RpbmcsIHNraXAgIi4uIiBtZW1iZXJzCi0KLSogTkVXUzogRG9jdW1lbnQgdGhpcy4KLSogc3JjL2V4dHJhY3QuYyAoZXh0cmFjdF9hcmNoaXZlKTogU2tpcCBtZW1iZXJzIHdob3NlIG5hbWVzCi1jb250YWluICIuLiIuCi0KLUNWRTogQ1ZFLTIwMTYtNjMyMQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1DaGVycnkgcGlja2VkIGZyb20gY29tbWl0OiA3MzQwZjY3IFdoZW4gZXh0cmFjdGluZywgc2tpcCAiLi4iIG1lbWJlcnMKLQotU2lnbmVkLW9mZi1ieTogU29uYSBTYXJtYWRpIDxzb25hLnNhcm1hZGlAZW5lYS5jb20+Ci0tLS0KLSBORVdTICAgICAgICAgIHwgOCArKysrKysrLQotIHNyYy9leHRyYWN0LmMgfCA4ICsrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9ORVdTIGIvTkVXUwotaW5kZXggNTAxMTY0YS4uZmM5N2NmYyAxMDA2NDQKLS0tLSBhL05FV1MKLSsrKyBiL05FV1MKLUBAIC0xLDYgKzEsMTIgQEAKLS1HTlUgdGFyIE5FV1MgLSBVc2VyIHZpc2libGUgY2hhbmdlcy4gMjAxNi0wNS0xNgotK0dOVSB0YXIgTkVXUyAtIFVzZXIgdmlzaWJsZSBjaGFuZ2VzLiAyMDE2LTEwLTI5Ci0gUGxlYXNlIHNlbmQgR05VIHRhciBidWcgcmVwb3J0cyB0byA8YnVnLXRhckBnbnUub3JnPgotIAotKyogTWVtYmVyIG5hbWVzIGNvbnRhaW5pbmcgJy4uJyBjb21wb25lbnRzIGFyZSBub3cgc2tpcHBlZCB3aGVuIGV4dHJhY3RpbmcuCi0rCi0rVGhpcyBmaXhlcyB0YXIncyBiZWhhdmlvciB0byBtYXRjaCBpdHMgZG9jdW1lbnRhdGlvbiwgYW5kIGlzIGEgYml0Ci0rc2FmZXIgd2hlbiBleHRyYWN0aW5nIHVudHJ1c3RlZCBhcmNoaXZlcyBvdmVyIG9sZCBmaWxlcyAoYW4gdW5zYWZlCi0rcHJhY3RpY2UgdGhhdCB0aGUgdGFyIG1hbnVhbCBoYXMgbG9uZyByZWNvbW1lbmRlZCBhZ2FpbnN0KS4KLSsKLSAMCi0gdmVyc2lvbiAxLjI5IC0gU2VyZ2V5IFBvem55YWtvZmYsIDIwMTYtMDUtMTYKLSAKLWRpZmYgLS1naXQgYS9zcmMvZXh0cmFjdC5jIGIvc3JjL2V4dHJhY3QuYwotaW5kZXggZjk4MjQzMy4uNzkwNDE0OCAxMDA2NDQKLS0tLSBhL3NyYy9leHRyYWN0LmMKLSsrKyBiL3NyYy9leHRyYWN0LmMKLUBAIC0xNjI5LDEyICsxNjI5LDIwIEBAIGV4dHJhY3RfYXJjaGl2ZSAodm9pZCkKLSB7Ci0gICBjaGFyIHR5cGVmbGFnOwotICAgdGFyX2V4dHJhY3Rvcl90IGZ1bjsKLSsgIGJvb2wgc2tpcF9kb3Rkb3RfbmFtZTsKLSAKLSAgIGZhdGFsX2V4aXRfaG9vayA9IGV4dHJhY3RfZmluaXNoOwotIAotICAgc2V0X25leHRfYmxvY2tfYWZ0ZXIgKGN1cnJlbnRfaGVhZGVyKTsKLSAKLSsgIHNraXBfZG90ZG90X25hbWUgPSAoIWFic29sdXRlX25hbWVzX29wdGlvbgotKwkJICAgICAgJiYgY29udGFpbnNfZG90X2RvdCAoY3VycmVudF9zdGF0X2luZm8ub3JpZ19maWxlX25hbWUpKTsKLSsgIGlmIChza2lwX2RvdGRvdF9uYW1lKQotKyAgICBFUlJPUiAoKDAsIDAsIF8oIiVzOiBNZW1iZXIgbmFtZSBjb250YWlucyAnLi4nIiksCi0rCSAgICBxdW90ZWFyZ19jb2xvbiAoY3VycmVudF9zdGF0X2luZm8ub3JpZ19maWxlX25hbWUpKSk7Ci0rCi0gICBpZiAoIWN1cnJlbnRfc3RhdF9pbmZvLmZpbGVfbmFtZVswXQotKyAgICAgIHx8IHNraXBfZG90ZG90X25hbWUKLSAgICAgICB8fCAoaW50ZXJhY3RpdmVfb3B0aW9uCi0gCSAgJiYgIWNvbmZpcm0gKCJleHRyYWN0IiwgY3VycmVudF9zdGF0X2luZm8uZmlsZV9uYW1lKSkpCi0gICAgIHsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyL211c2xfZGlyZW50LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyL211c2xfZGlyZW50LnBhdGNoCmluZGV4IGIwZGMxNmMuLjJkOThlZDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhci9tdXNsX2RpcmVudC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXIvbXVzbF9kaXJlbnQucGF0Y2gKQEAgLTE0LDYgKzE0LDYgQEAKIC0gICAgICAgICAgICAgIGxpbnV4Ki1nbnUqKSBnbF9jdl9zdHJ1Y3RfZGlyZW50X2RfaW5vPSJndWVzc2luZyB5ZXMiIDs7CiArICAgICAgICAgICAgICBsaW51eCotZ251KnxsaW51eCotbXVzbCopCiArICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfY3Zfc3RydWN0X2RpcmVudF9kX2lubz0iZ3Vlc3NpbmcgeWVzIiA7OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgR3Vlc3Mgbm8gb24gbmF0aXZlIFdpbmRvd3MuCisgICAgICAgICAgICAgICBtaW5ndyopICAgICAgZ2xfY3Zfc3RydWN0X2RpcmVudF9kX2lubz0iZ3Vlc3Npbmcgbm8iIDs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiB3ZSBkb24ndCBrbm93LCBhc3N1bWUgdGhlIHdvcnN0LgotICAgICAgICAgICAgICAgKikgICAgICAgICAgIGdsX2N2X3N0cnVjdF9kaXJlbnRfZF9pbm89Imd1ZXNzaW5nIG5vIiA7OwotICAgICAgICAgICAgIGVzYWMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhcl8xLjI5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyMmQ5YzkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1yZXF1aXJlIHRhci5pbmMKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbYWNsXSA9ICItLXdpdGgtcG9zaXgtYWNscywgLS13aXRob3V0LXBvc2l4LWFjbHMsIGFjbCwiCi0KLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotU1JDX1VSSSArPSAiZmlsZTovL3JlbW92ZS1nZXRzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9tdXNsX2RpcmVudC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtNjMyMS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5NTVjZDUzMzk1NWFjYjE4MDRiODNmZDcwMjE4ZGE1MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMzZiMTExOTBjMGEzYTY4ODViZGI4ZDYxNDI0ZjJiMzZhNTg3Mjg2OWFhM2Y3ZjY5NWRlYTRiNDg0M2FlMmYyIgotCi1kb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2woKSB7Ci0Jcm0gLWYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCi0Jcm1kaXIgJHtEfSR7bGliZGlyfQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMzAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXJfMS4zMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzQzYTZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMzAuYmIKQEAgLTAsMCArMSwxOCBAQAorcmVxdWlyZSB0YXIuaW5jCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLS13aXRoLXBvc2l4LWFjbHMsIC0td2l0aG91dC1wb3NpeC1hY2xzLCBhY2wsIgorCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9yZW1vdmUtZ2V0cy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vbXVzbF9kaXJlbnQucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiODQwNGU0YzFmYzVhMzAwMDIyOGFiMmI4YWQ2NzRhNjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODc1OTJiODZjYjAzN2M1NTQzNzVmNTg2OGJkZDNjYzU3NzQ4YWVmMzhkNmNiNzQxYzgxMDY1ZjBiZWFjNjNiNyIKKworZG9faW5zdGFsbF9hcHBlbmRfbGliYy1tdXNsKCkgeworCXJtIC1mICR7RH0ke2xpYmRpcn0vY2hhcnNldC5hbGlhcworCXJtZGlyICR7RH0ke2xpYmRpcn0KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDFlMDVkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLnBhdGNoCkBAIC0wLDAgKzEsNjUgQEAKK0Zyb20gN2Y4ODc4YWMxYWFmNGExOTk5MmQzOTM3OTc5N2MxNTEzMDFiZWRiMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9sZWtzaXkgT2JpdG90c2t5eSA8b29iaXRvdHNAY2lzY28uY29tPgorRGF0ZTogTW9uLCA1IEZlYiAyMDE4IDA4OjI5OjEwIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCB3aXRoIGNsYW5nCisKK0ZpeCAiZXJyb3I6IG5vbi12b2lkIGZ1bmN0aW9uICdmaXhfb3B0aW9ucycgc2hvdWxkIHJldHVybiBhIHZhbHVlIi4KK0FkZCBmdW5jdGlvbiBwcm90b3R5cGUgdG8gdGNwZC5jIGFuZCBtaXNjZC5jLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogT2xla3NpeSBPYml0b3Rza3l5IDxvb2JpdG90c0BjaXNjby5jb20+CistLS0KKyB2MiAtIGFkZCBmdW5jdGlvbiBwcm90b3R5cGVzCisKKyBmaXhfb3B0aW9ucy5jIHwgMiArLQorIG1pc2NkLmMgICAgICAgfCA0ICsrKysKKyB0Y3BkLmMgICAgICAgIHwgNCArKysrCisgMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2ZpeF9vcHRpb25zLmMgYi9maXhfb3B0aW9ucy5jCitpbmRleCBiNWU4MWI4Li45OTU4ZmY0IDEwMDY0NAorLS0tIGEvZml4X29wdGlvbnMuYworKysrIGIvZml4X29wdGlvbnMuYworQEAgLTI5LDcgKzI5LDcgQEAgc3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKSBmaXhfb3B0aW9ucy5jIDEuNiA5Ny8wNC8wOCAwMjoyOToxOSI7CisgCisgLyogZml4X29wdGlvbnMgLSBnZXQgcmlkIG9mIElQLWxldmVsIHNvY2tldCBvcHRpb25zICovCisgCistZml4X29wdGlvbnMocmVxdWVzdCkKKyt2b2lkIGZpeF9vcHRpb25zKHJlcXVlc3QpCisgc3RydWN0IHJlcXVlc3RfaW5mbyAqcmVxdWVzdDsKKyB7CisgI2lmZGVmIElQX09QVElPTlMKK2RpZmYgLS1naXQgYS9taXNjZC5jIGIvbWlzY2QuYworaW5kZXggMWFiODM1Yy4uNzIzYjgzYSAxMDA2NDQKKy0tLSBhL21pc2NkLmMKKysrKyBiL21pc2NkLmMKK0BAIC00MCw2ICs0MCwxMCBAQCBzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJAKCMpIG1pc2NkLmMgMS4xMCA5Ni8wMi8xMSAxNzowMTozMCI7CisgI2luY2x1ZGUgInBhdGNobGV2ZWwuaCIKKyAjaW5jbHVkZSAidGNwZC5oIgorIAorKyNpZmRlZiBLSUxMX0lQX09QVElPTlMKKyt2b2lkIGZpeF9vcHRpb25zKHN0cnVjdCByZXF1ZXN0X2luZm8gKik7CisrI2VuZGlmCisrCisgaW50ICAgICBhbGxvd19zZXZlcml0eSA9IFNFVkVSSVRZOwkvKiBydW4tdGltZSBhZGp1c3RhYmxlICovCisgaW50ICAgICBkZW55X3NldmVyaXR5ID0gTE9HX1dBUk5JTkc7CS8qIGRpdHRvICovCisgCitkaWZmIC0tZ2l0IGEvdGNwZC5jIGIvdGNwZC5jCitpbmRleCBkODY1YjljLi5hMTc5ODkxIDEwMDY0NAorLS0tIGEvdGNwZC5jCisrKysgYi90Y3BkLmMKK0BAIC0zOCw2ICszOCwxMCBAQCBzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJAKCMpIHRjcGQuYyAxLjEwIDk2LzAyLzExIDE3OjAxOjMyIjsKKyAjaW5jbHVkZSAicGF0Y2hsZXZlbC5oIgorICNpbmNsdWRlICJ0Y3BkLmgiCisgCisrI2lmZGVmIEtJTExfSVBfT1BUSU9OUworK3ZvaWQgZml4X29wdGlvbnMoc3RydWN0IHJlcXVlc3RfaW5mbyAqKTsKKysjZW5kaWYKKysKKyBpbnQgICAgIGFsbG93X3NldmVyaXR5ID0gU0VWRVJJVFk7CS8qIHJ1bi10aW1lIGFkanVzdGFibGUgKi8KKyBpbnQgICAgIGRlbnlfc2V2ZXJpdHkgPSBMT0dfV0FSTklORzsJLyogZGl0dG8gKi8KKyAKKy0tIAorMi4xMC4zLmRpcnR5CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMTJfbWFrZWZpbGVfY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8xMl9tYWtlZmlsZV9jb25maWcucGF0Y2gKaW5kZXggZTgyODllNC4uZDQ3M2ZiNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8xMl9tYWtlZmlsZV9jb25maWcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8xMl9tYWtlZmlsZV9jb25maWcucGF0Y2gKQEAgLTEsOSArMSwxMCBAQAogVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAogCi1kaWZmIC1ydU4gdGNwX3dyYXBwZXJzXzcuNi5vcmlnL01ha2VmaWxlIHRjcF93cmFwcGVyc183LjYvTWFrZWZpbGUKLS0tLSB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvTWFrZWZpbGUJMjAwMy0wOC0yMSAwMTo0MzozOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyB0Y3Bfd3JhcHBlcnNfNy42L01ha2VmaWxlCTIwMDMtMDgtMjEgMDE6NDM6MzUuMDAwMDAwMDAwICswMjAwCi1AQCAtNDUsNyArNDUsNyBAQAorSW5kZXg6IHRjcF93cmFwcGVyc183LjYvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB0Y3Bfd3JhcHBlcnNfNy42Lm9yaWcvTWFrZWZpbGUKKysrKyB0Y3Bfd3JhcHBlcnNfNy42L01ha2VmaWxlCitAQCAtNDUsNyArNDUsNyBAQCB3aGF0OgogICMKICAjIFN5c1YuNCBTb2xhcmlzIDIueCBPU0YgQUlYCiAgI1JFQUxfREFFTU9OX0RJUj0vdXNyL3NiaW4KQEAgLTEyLDcgKzEzLDcgQEAKICAjIEJTRCA0LjQKICAjUkVBTF9EQUVNT05fRElSPS91c3IvbGliZXhlYwogICMKLUBAIC01MTIsNiArNTE5LDcgQEAKK0BAIC01MTMsNiArNTEzLDcgQEAgVlNZU0xPRwk9IC1EdnN5c2xvZz1teXZzeXNsb2cKICAjIChleGFtcGxlczogYWxsb3csIGRlbnksIGJhbm5lcnMsIHR3aXN0IGFuZCBzcGF3bikuCiAgIyAKICAjU1RZTEUJPSAtRFBST0NFU1NfT1BUSU9OUwkjIEVuYWJsZSBsYW5ndWFnZSBleHRlbnNpb25zLgpAQCAtMjAsNyArMjEsNyBAQAogIAogICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAjIE9wdGlvbmFsOiBDaGFuZ2luZyB0aGUgZGVmYXVsdCBkaXNwb3NpdGlvbiBvZiBsb2dmaWxlIHJlY29yZHMKLUBAIC01MzUsNiArNTQzLDcgQEAKK0BAIC01MzYsNiArNTM3LDcgQEAgVlNZU0xPRwk9IC1EdnN5c2xvZz1teXZzeXNsb2cKICAjIFRoZSBMT0dfWFhYIG5hbWVzIGJlbG93IGFyZSB0YWtlbiBmcm9tIHRoZSAvdXNyL2luY2x1ZGUvc3lzbG9nLmggZmlsZS4KICAKICBGQUNJTElUWT0gTE9HX01BSUwJIyBMT0dfTUFJTCBpcyB3aGF0IG1vc3Qgc2VuZG1haWwgZGFlbW9ucyB1c2UKQEAgLTI4LDcgKzI5LDcgQEAKICAKICAjIFRoZSBzeXNsb2cgcHJpb3JpdHkgYXQgd2hpY2ggc3VjY2Vzc2Z1bCBjb25uZWN0aW9ucyBhcmUgbG9nZ2VkLgogIAotQEAgLTYzMSw2ICs2NDAsNyBAQAorQEAgLTYzMiw2ICs2MzQsNyBAQCBUQUJMRVMJPSAtREhPU1RTX0RFTlk9XCIvZXRjL2hvc3RzLmRlbnlcCiAgIyBsb29rdXBzIGFsdG9nZXRoZXIsIHNlZSB0aGUgbmV4dCBzZWN0aW9uLgogIAogIFBBUkFOT0lEPSAtRFBBUkFOT0lECkBAIC0zNiw3ICszNyw3IEBACiAgCiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICMgT3B0aW9uYWw6IHR1cm5pbmcgb2ZmIGhvc3RuYW1lIGxvb2t1cHMKLUBAIC02NDQsNiArNjU0LDcgQEAKK0BAIC02NDUsNiArNjQ4LDcgQEAgUEFSQU5PSUQ9IC1EUEFSQU5PSUQKICAjIG1vZGUgKHNlZSBwcmV2aW91cyBzZWN0aW9uKSBhbmQgY29tbWVudCBvdXQgdGhlIGZvbGxvd2luZyBkZWZpbml0aW9uLgogIAogIEhPU1ROQU1FPSAtREFMV0FZU19IT1NUTkFNRQpAQCAtNDQsNyArNDUsNyBAQAogIAogICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICMgT3B0aW9uYWw6IFR1cm5pbmcgb24gaG9zdCBBRERSRVNTIGNoZWNraW5nCi1AQCAtNjcwLDYgKzY4MSw3IEBACitAQCAtNjcxLDYgKzY3NSw3IEBAIEhPU1ROQU1FPSAtREFMV0FZU19IT1NUTkFNRQogICMgU29sYXJpcyAyLngsIGFuZCBMaW51eC4gU2VlIHlvdXIgc3lzdGVtIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuCiAgIwogICMgS0lMTF9PUFQ9IC1ES0lMTF9JUF9PUFRJT05TCkBAIC01Miw3ICs1Myw3IEBACiAgCiAgIyMgRW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucwogICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLUBAIC02NzcsOSArNjg5LDEwIEBACitAQCAtNjc4LDkgKzY4MywxMCBAQCBIT1NUTkFNRT0gLURBTFdBWVNfSE9TVE5BTUUKICAjIFByb3RlY3Rpb24gYWdhaW5zdCB3ZWlyZCBzaGVsbHMgb3Igd2VpcmQgbWFrZSBwcm9ncmFtcy4KICAKICBTSEVMTAk9IC9iaW4vc2gKQEAgLTY1LDcgKzY2LDcgQEAKICAJJChCVUdTKSAkKFNZU1RZUEUpICQoQVVUSCkgJChVTUFTSykgXAogIAktRFJFQUxfREFFTU9OX0RJUj1cIiQoUkVBTF9EQUVNT05fRElSKVwiICQoU1RZTEUpICQoS0lMTF9PUFQpIFwKICAJLURTRVZFUklUWT0kKFNFVkVSSVRZKSAtRFJGQzkzMV9USU1FT1VUPSQoUkZDOTMxX1RJTUVPVVQpIFwKLUBAIC03MTIsMTAgKzcyNSwxMSBAQAorQEAgLTcxMywxMSArNzE5LDEyIEBAIGFsbCBvdGhlcjogY29uZmlnLWNoZWNrIHRjcGQgdGNwZG1hdGNoIHQKICAKICBjb25maWctY2hlY2s6CiAgCUBzZXQgK2U7IHRlc3QgLW4gIiQoUkVBTF9EQUVNT05fRElSKSIgfHwgeyBtYWtlOyBleGl0IDE7IH0KQEAgLTgxLDMgKzgyLDQgQEAKICsJQGlmIFsgISAtZCBzaGFyZWQgXTsgdGhlbiBta2RpciBzaGFyZWQ7IGZpCiAgCiAgJChMSUIpOgkkKExJQl9PQkopCisgCXJtIC1mICQoTElCKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzXzcuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVyc183LjYuYmIKaW5kZXggMWVmZmVmMS4uM2VjZThjMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzXzcuNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnNfNy42LmJiCkBAIC00NSw2ICs0NSw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9zYWZlX2Zpbmdlci44IFwKICAgICAgICAgICAgZmlsZTovL21ha2VmaWxlLWZpeC1wYXJhbGxlbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9tdXNsLWRlY2xzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmcucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJlNmZhMjVmNzEyMjZkMDkwZjM0ZGUzZjZiMTIyZmI1YSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU4ZGY5Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mb182LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi1TVU1NQVJZID0gIkRvY3VtZW50YXRpb24gc3lzdGVtIGZvciBvbi1saW5lIGluZm9ybWF0aW9uIGFuZCBwcmludGVkIG91dHB1dCIKLURFU0NSSVBUSU9OID0gIlRleGluZm8gaXMgYSBkb2N1bWVudGF0aW9uIHN5c3RlbSB0aGF0IGNhbiBwcm9kdWNlIGJvdGggXAotb25saW5lIGluZm9ybWF0aW9uIGFuZCBwcmludGVkIG91dHB1dCBmcm9tIGEgc2luZ2xlIHNvdXJjZSBmaWxlLiBUaGUgXAotR05VIFByb2plY3QgdXNlcyB0aGUgVGV4aW5mbyBmaWxlIGZvcm1hdCBmb3IgbW9zdCBvZiBpdHMgZG9jdW1lbnRhdGlvbi4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvdGV4aW5mby8iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1QUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiB0ZXhpbmZvLXJlcGxhY2VtZW50LW5hdGl2ZSIKLQotZGVmIGNvbXByZXNzX3BrZyhkKToKLSAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjb21wcmVzc19kb2MnLCBkKToKLSAgICAgICAgIGNvbXByZXNzID0gZC5nZXRWYXIoIkRPQ19DT01QUkVTUyIpCi0gICAgICAgICBpZiBjb21wcmVzcyA9PSAiZ3oiOgotICAgICAgICAgICAgIHJldHVybiAiZ3ppcCIKLSAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gImJ6MiI6Ci0gICAgICAgICAgICAgcmV0dXJuICJiemlwMiIKLSAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gInh6IjoKLSAgICAgICAgICAgICByZXR1cm4gInh6IgotICAgIHJldHVybiAiIgotCi1SREVQRU5EU19pbmZvICs9ICIke0Bjb21wcmVzc19wa2coZCl9IgotCi1ERVBFTkRTID0gInpsaWIgbmN1cnNlcyB0ZXhpbmZvLXJlcGxhY2VtZW50LW5hdGl2ZSIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gInpsaWItbmF0aXZlIG5jdXJzZXMtbmF0aXZlIgotCi1UQVJHRVRfUEFUQ0ggPSAiZmlsZTovL3VzZV9ob3N0X21ha2Vkb2MucGF0Y2giCi1UQVJHRVRfUEFUQ0hfY2xhc3MtbmF0aXZlID0gIiIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3RleGluZm8vJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3RleGluZm8tNC4xMi16bGliLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtbmF0aXZlLXRvb2xzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpbmstemlwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAotICAgICAgICAgICAke1RBUkdFVF9QQVRDSH0gXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjliMDhkYWNhOWJmOGVjY2FlOWIwZjg4NGFiYTQxZjllIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMwMGE2YmE0OTU4YzJkZDRhNmQ1Y2U2MGYwYTMzNWRhZjdlMzc5ZjUzNzRmMjc2ZjZiYTMxYTIyMWYwMmY2MDYiCi0KLXRleF90ZXhpbmZvID0gInRleG1mL3RleC90ZXhpbmZvIgotCi1pbmhlcml0IGdldHRleHQgYXV0b3Rvb2xzCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQkjIGF1dG90b29sc19kb19jb25maWd1cmUgdXBkYXRlcyBwby9NYWtlZmlsZS5pbi5pbiwgd2UgYWxzbyBuZWVkCi0JIyB1cGRhdGUgcG9fZG9jdW1lbnQuCi0JY3AgLWYgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nZXR0ZXh0L3BvL01ha2VmaWxlLmluLmluICR7U30vcG9fZG9jdW1lbnQvCi19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLQlpZiBbIC1kIHRvb2xzIF07dGhlbgotCQlvZV9ydW5tYWtlIC1DIHRvb2xzL2dudWxpYi9saWIKLQlmaQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlta2RpciAtcCAke0R9JHtkYXRhZGlyfS8ke3RleF90ZXhpbmZvfQotCWluc3RhbGwgLXAgLW02NDQgJHtTfS9kb2MvdGV4aW5mby50ZXggJHtTfS9kb2MvdHhpLT8/LnRleCAke0R9JHtkYXRhZGlyfS8ke3RleF90ZXhpbmZvfQotCXNlZCAtaSAtZSAnMXMsIyEuKnBlcmwsIyEgJHtVU1JCSU5QQVRIfS9lbnYgcGVybCwnICR7RH0ke2JpbmRpcn0vdGV4aTJhbnkgJHtEfSR7YmluZGlyfS9wb2QydGV4aQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0JaW5zdGFsbCAtbSA3NTUgaW5mby9tYWtlZG9jICR7RH0ke2JpbmRpcn0KLX0KLQotUEFDS0FHRVMgKz0gImluZm8gaW5mby1kb2MiCi0KLUZJTEVTX2luZm8gPSAiJHtiaW5kaXJ9L2luZm8gJHtiaW5kaXJ9L2luZm9rZXkgJHtiaW5kaXJ9L2luc3RhbGwtaW5mbyIKLUZJTEVTX2luZm8tZG9jID0gIiR7aW5mb2Rpcn0vaW5mby5pbmZvKiAke2luZm9kaXJ9L2RpciAke2luZm9kaXJ9L2luZm8tKi5pbmZvKiBcCi0gICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9pbmZvLjEqICR7bWFuZGlyfS9tYW41L2luZm8uNSogXAotICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEvaW5mb2tleS4xKiAke21hbmRpcn0vbWFuMS9pbnN0YWxsLWluZm8uMSoiCi0KLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9tYWtlaW5mbyAke2JpbmRpcn0vdGV4aSogJHtiaW5kaXJ9L3BkZnRleGkyZHZpICR7YmluZGlyfS9wb2QydGV4aSAke2RhdGFkaXJ9L3RleGluZm8iCi1SREVQRU5EU18ke1BOfSA9ICJwZXJsIgotRklMRVNfJHtQTn0tZG9jID0gIiR7aW5mb2Rpcn0vdGV4aW5mbyogXAotICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHt0ZXhfdGV4aW5mb30gXAotICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xICR7bWFuZGlyfS9tYW41IgotCi0jIExpZSBhYm91dCBwcm92aWRpbmcgdGhlIExvY2FsZTo6Z2V0dGV4dF94cyBtb2R1bGUuIEl0IGlzIG5vdCBhY3R1YWxseSBidWlsdCwKLSMgYnV0IHRoZSBjb2RlIHdpbGwgdGVzdCBmb3IgaXQgYW5kIGlmIG5vdCBmb3VuZCB1c2UgTG9jYWxlOjpnZXR0ZXh0X3BwIGluc3RlYWQuCi0jIEhvd2V2ZXIsIHRoaXMgY2F1c2VzIGEgZmlsZSBkZXBlbmRlbmN5IG9uIHBlcmwoTG9jYWxlOjpnZXR0ZXh0X3hzKSB0byBiZQotIyBnZW5lcmF0ZWQsIHdoaWNoIG11c3QgYmUgc2F0aXNmaWVkLgotUlBST1ZJREVTXyR7UE59ICs9ICJwZXJsKExvY2FsZTo6Z2V0dGV4dF94cykiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTY2NDU3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm9fNi41LmJiCkBAIC0wLDAgKzEsOTAgQEAKK1NVTU1BUlkgPSAiRG9jdW1lbnRhdGlvbiBzeXN0ZW0gZm9yIG9uLWxpbmUgaW5mb3JtYXRpb24gYW5kIHByaW50ZWQgb3V0cHV0IgorREVTQ1JJUFRJT04gPSAiVGV4aW5mbyBpcyBhIGRvY3VtZW50YXRpb24gc3lzdGVtIHRoYXQgY2FuIHByb2R1Y2UgYm90aCBcCitvbmxpbmUgaW5mb3JtYXRpb24gYW5kIHByaW50ZWQgb3V0cHV0IGZyb20gYSBzaW5nbGUgc291cmNlIGZpbGUuIFRoZSBcCitHTlUgUHJvamVjdCB1c2VzIHRoZSBUZXhpbmZvIGZpbGUgZm9ybWF0IGZvciBtb3N0IG9mIGl0cyBkb2N1bWVudGF0aW9uLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS90ZXhpbmZvLyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1BST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIHRleGluZm8tcmVwbGFjZW1lbnQtbmF0aXZlIgorCitkZWYgY29tcHJlc3NfcGtnKGQpOgorICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2NvbXByZXNzX2RvYycsIGQpOgorICAgICAgICAgY29tcHJlc3MgPSBkLmdldFZhcigiRE9DX0NPTVBSRVNTIikKKyAgICAgICAgIGlmIGNvbXByZXNzID09ICJneiI6CisgICAgICAgICAgICAgcmV0dXJuICJnemlwIgorICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAiYnoyIjoKKyAgICAgICAgICAgICByZXR1cm4gImJ6aXAyIgorICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAieHoiOgorICAgICAgICAgICAgIHJldHVybiAieHoiCisgICAgcmV0dXJuICIiCisKK1JERVBFTkRTX2luZm8gKz0gIiR7QGNvbXByZXNzX3BrZyhkKX0iCisKK0RFUEVORFMgPSAiemxpYiBuY3Vyc2VzIHRleGluZm8tcmVwbGFjZW1lbnQtbmF0aXZlIgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiemxpYi1uYXRpdmUgbmN1cnNlcy1uYXRpdmUiCisKK1RBUkdFVF9QQVRDSCA9ICJmaWxlOi8vdXNlX2hvc3RfbWFrZWRvYy5wYXRjaCIKK1RBUkdFVF9QQVRDSF9jbGFzcy1uYXRpdmUgPSAiIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vdGV4aW5mby8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vdGV4aW5mby00LjEyLXpsaWIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1uYXRpdmUtdG9vbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGluay16aXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCisgICAgICAgICAgICR7VEFSR0VUX1BBVENIfSBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTRlOGY3MTQ5ODc2NzkzMDMwZTU1MThkZDhkNmU5NTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDM0MjcyZTQwNDJjNDYxODZkZGNkNjZiZDVkOTgwYzBjYTE0ZmY3MzQ0NDQ2ODZjY2Y4MTMxZjZlYzhiMTQyNyIKKwordGV4X3RleGluZm8gPSAidGV4bWYvdGV4L3RleGluZm8iCisKK2luaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMKKworRVhUUkFfQVVUT1JFQ09ORiArPSAiLUkgJHtTfS9nbnVsaWIvbTQiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIGF1dG90b29sc19kb19jb25maWd1cmUgdXBkYXRlcyBwby9NYWtlZmlsZS5pbi5pbiwgd2UgYWxzbyBuZWVkCisJIyB1cGRhdGUgcG9fZG9jdW1lbnQuCisJY3AgLWYgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nZXR0ZXh0L3BvL01ha2VmaWxlLmluLmluICR7U30vcG9fZG9jdW1lbnQvCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKwlpZiBbIC1kIHRvb2xzIF07dGhlbgorCQlvZV9ydW5tYWtlIC1DIHRvb2xzL2dudWxpYi9saWIKKwlmaQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlta2RpciAtcCAke0R9JHtkYXRhZGlyfS8ke3RleF90ZXhpbmZvfQorCWluc3RhbGwgLXAgLW02NDQgJHtTfS9kb2MvdGV4aW5mby50ZXggJHtTfS9kb2MvdHhpLT8/LnRleCAke0R9JHtkYXRhZGlyfS8ke3RleF90ZXhpbmZvfQorCXNlZCAtaSAtZSAnMXMsIyEuKnBlcmwsIyEgJHtVU1JCSU5QQVRIfS9lbnYgcGVybCwnICR7RH0ke2JpbmRpcn0vdGV4aTJhbnkgJHtEfSR7YmluZGlyfS9wb2QydGV4aQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJaW5zdGFsbCAtbSA3NTUgaW5mby9tYWtlZG9jICR7RH0ke2JpbmRpcn0KK30KKworUEFDS0FHRVMgKz0gImluZm8gaW5mby1kb2MiCisKK0ZJTEVTX2luZm8gPSAiJHtiaW5kaXJ9L2luZm8gJHtiaW5kaXJ9L2luZm9rZXkgJHtiaW5kaXJ9L2luc3RhbGwtaW5mbyIKK0ZJTEVTX2luZm8tZG9jID0gIiR7aW5mb2Rpcn0vaW5mby5pbmZvKiAke2luZm9kaXJ9L2RpciAke2luZm9kaXJ9L2luZm8tKi5pbmZvKiBcCisgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9pbmZvLjEqICR7bWFuZGlyfS9tYW41L2luZm8uNSogXAorICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEvaW5mb2tleS4xKiAke21hbmRpcn0vbWFuMS9pbnN0YWxsLWluZm8uMSoiCisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9tYWtlaW5mbyAke2JpbmRpcn0vdGV4aSogJHtiaW5kaXJ9L3BkZnRleGkyZHZpICR7YmluZGlyfS9wb2QydGV4aSAke2RhdGFkaXJ9L3RleGluZm8iCitSREVQRU5EU18ke1BOfSA9ICJwZXJsIgorRklMRVNfJHtQTn0tZG9jID0gIiR7aW5mb2Rpcn0vdGV4aW5mbyogXAorICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHt0ZXhfdGV4aW5mb30gXAorICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xICR7bWFuZGlyfS9tYW41IgorCisjIExpZSBhYm91dCBwcm92aWRpbmcgdGhlIExvY2FsZTo6Z2V0dGV4dF94cyBtb2R1bGUuIEl0IGlzIG5vdCBhY3R1YWxseSBidWlsdCwKKyMgYnV0IHRoZSBjb2RlIHdpbGwgdGVzdCBmb3IgaXQgYW5kIGlmIG5vdCBmb3VuZCB1c2UgTG9jYWxlOjpnZXR0ZXh0X3BwIGluc3RlYWQuCisjIEhvd2V2ZXIsIHRoaXMgY2F1c2VzIGEgZmlsZSBkZXBlbmRlbmN5IG9uIHBlcmwoTG9jYWxlOjpnZXR0ZXh0X3hzKSB0byBiZQorIyBnZW5lcmF0ZWQsIHdoaWNoIG11c3QgYmUgc2F0aXNmaWVkLgorUlBST1ZJREVTXyR7UE59ICs9ICJwZXJsKExvY2FsZTo6Z2V0dGV4dF94cykiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lLTEuNy9kZWJpYW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWUvdGltZS0xLjcvZGViaWFuLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2VhMGUzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lLTEuNy9kZWJpYW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAxICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotLS0tIHRpbWUtMS43Lm9yaWcvY29uZmlndXJlLmluCi0rKysgdGltZS0xLjcvY29uZmlndXJlLmluCi1AQCAtMSwxMSArMSw4IEBACi0gZG5sIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVjZSBhIGNvbmZpZ3VyZSBzY3JpcHQuCi0gQUNfSU5JVCh0aW1lLmMpCi0tVkVSU0lPTj0xLjcKLS1BQ19TVUJTVChWRVJTSU9OKQotLVBBQ0tBR0U9dGltZQotLUFDX1NVQlNUKFBBQ0tBR0UpCi0rQU1fSU5JVF9BVVRPTUFLRSh0aW1lLCAxLjcpCi0gCi0tQUNfQVJHX1BST0dSQU0KLStBTV9NQUlOVEFJTkVSX01PREUKLSAKLSBkbmwgQ2hlY2tzIGZvciBwcm9ncmFtcy4KLSBBQ19QUk9HX0NDCi1AQCAtMTUsNyArMTIsNyBAQAotIGRubCBDaGVja3MgZm9yIGhlYWRlciBmaWxlcy4KLSBBQ19IRUFERVJfU1REQwotIEFDX0hFQURFUl9TWVNfV0FJVAotLUFDX0NIRUNLX0hFQURFUlModW5pc3RkLmggc3RyaW5nLmggc3lzL3J1c2FnZS5oKQotK0FDX0NIRUNLX0hFQURFUlModW5pc3RkLmggc3RyaW5nLmggc3lzL3J1c2FnZS5oIHN5cy9yZXNvdXJjZS5oKQotIAotIGRubCBDaGVja3MgZm9yIHR5cGVkZWZzLCBzdHJ1Y3R1cmVzLCBhbmQgY29tcGlsZXIgY2hhcmFjdGVyaXN0aWNzLgotIEFDX0NfQ09OU1QKLS0tLSB0aW1lLTEuNy5vcmlnL3ZlcnNpb24udGV4aQotKysrIHRpbWUtMS43L3ZlcnNpb24udGV4aQotQEAgLTEsMyArMSwzIEBACi0tQHNldCBVUERBVEVEIDEyIEp1bmUgMTk5NgotK0BzZXQgVVBEQVRFRCA5IE1heSAyMDAyCi0gQHNldCBFRElUSU9OIDEuNwotIEBzZXQgVkVSU0lPTiAxLjcKLS0tLSB0aW1lLTEuNy5vcmlnL3RpbWUuYwotKysrIHRpbWUtMS43L3RpbWUuYwotQEAgLTE0Nyw2ICsxNDcsMTAgQEAKLSAgIE5VTEwKLSB9OwotIAwKLSsKLSsvKiBJZiB0cnVlLCBkbyBub3Qgc2hvdyB0aGUgZXhpdCBtZXNzYWdlICovCi0rc3RhdGljIGJvb2xlYW4gcXVpZXQ7Ci0rCi0gLyogSWYgdHJ1ZSwgc2hvdyBhbiBFbmdsaXNoIGRlc2NyaXB0aW9uIG5leHQgdG8gZWFjaCBzdGF0aXN0aWMuICAqLwotIHN0YXRpYyBib29sZWFuIHZlcmJvc2U7Ci0gCi1AQCAtMTcyLDYgKzE3Niw3IEBACi0gICB7ImhlbHAiLCBub19hcmd1bWVudCwgTlVMTCwgJ2gnfSwKLSAgIHsib3V0cHV0LWZpbGUiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ28nfSwKLSAgIHsicG9ydGFiaWxpdHkiLCBub19hcmd1bWVudCwgTlVMTCwgJ3AnfSwKLSsgIHsicXVpZXQiLCBub19hcmd1bWVudCxOVUxMLCAncSd9LAotICAgeyJ2ZXJib3NlIiwgbm9fYXJndW1lbnQsIE5VTEwsICd2J30sCi0gICB7InZlcnNpb24iLCBub19hcmd1bWVudCwgTlVMTCwgJ1YnfSwKLSAgIHtOVUxMLCBub19hcmd1bWVudCwgTlVMTCwgMH0KLUBAIC0zMzMsNyArMzM4LDggQEAKLSAgIGVsc2UgaWYgKFdJRlNJR05BTEVEIChyZXNwLT53YWl0c3RhdHVzKSkKLSAgICAgZnByaW50ZiAoZnAsICJDb21tYW5kIHRlcm1pbmF0ZWQgYnkgc2lnbmFsICVkXG4iLAotIAkgICAgIFdURVJNU0lHIChyZXNwLT53YWl0c3RhdHVzKSk7Ci0tICBlbHNlIGlmIChXSUZFWElURUQgKHJlc3AtPndhaXRzdGF0dXMpICYmIFdFWElUU1RBVFVTIChyZXNwLT53YWl0c3RhdHVzKSkKLSsgIGVsc2UgaWYgKFdJRkVYSVRFRCAocmVzcC0+d2FpdHN0YXR1cykgJiYgV0VYSVRTVEFUVVMgKHJlc3AtPndhaXRzdGF0dXMpCi0rCSAgICYmICFxdWlldCkKLSAgICAgZnByaW50ZiAoZnAsICJDb21tYW5kIGV4aXRlZCB3aXRoIG5vbi16ZXJvIHN0YXR1cyAlZFxuIiwKLSAJICAgICBXRVhJVFNUQVRVUyAocmVzcC0+d2FpdHN0YXR1cykpOwotIAotQEAgLTUyMyw2ICs1MjksNyBAQAotICAgY2hhciAqZm9ybWF0OwkJCS8qIEZvcm1hdCBmb3VuZCBpbiBlbnZpcm9ubWVudC4gICovCi0gCi0gICAvKiBJbml0aWFsaXplIHRoZSBvcHRpb24gZmxhZ3MuICAqLwotKyAgcXVpZXQgPSBmYWxzZTsKLSAgIHZlcmJvc2UgPSBmYWxzZTsKLSAgIG91dGZpbGUgPSBOVUxMOwotICAgb3V0ZnAgPSBzdGRlcnI7Ci1AQCAtNTM2LDcgKzU0Myw3IEBACi0gICBpZiAoZm9ybWF0KQotICAgICBvdXRwdXRfZm9ybWF0ID0gZm9ybWF0OwotIAotLSAgd2hpbGUgKChvcHRjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsICIrYWY6bzpwdlYiLCBsb25nb3B0cywgKGludCAqKSAwKSkKLSsgIHdoaWxlICgob3B0YyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiK2FmOm86cHF2ViIsIGxvbmdvcHRzLCAoaW50ICopIDApKQotIAkgIT0gRU9GKQotICAgICB7Ci0gICAgICAgc3dpdGNoIChvcHRjKQotQEAgLTU1NSw2ICs1NjIsOSBAQAotIAljYXNlICdwJzoKLSAJICBvdXRwdXRfZm9ybWF0ID0gcG9zaXhfZm9ybWF0OwotIAkgIGJyZWFrOwotKwljYXNlICdxJzoKLSsJICBxdWlldCA9IHRydWU7Ci0rCSAgYnJlYWs7Ci0gCWNhc2UgJ3YnOgotIAkgIHZlcmJvc2UgPSB0cnVlOwotIAkgIGJyZWFrOwotQEAgLTY0Miw5ICs2NTIsOSBAQAotICAgZmZsdXNoIChvdXRmcCk7Ci0gCi0gICBpZiAoV0lGU1RPUFBFRCAocmVzLndhaXRzdGF0dXMpKQotLSAgICBleGl0IChXU1RPUFNJRyAocmVzLndhaXRzdGF0dXMpKTsKLSsgICAgZXhpdCAoV1NUT1BTSUcgKHJlcy53YWl0c3RhdHVzKSArIDEyOCk7Ci0gICBlbHNlIGlmIChXSUZTSUdOQUxFRCAocmVzLndhaXRzdGF0dXMpKQotLSAgICBleGl0IChXVEVSTVNJRyAocmVzLndhaXRzdGF0dXMpKTsKLSsgICAgZXhpdCAoV1RFUk1TSUcgKHJlcy53YWl0c3RhdHVzKSArIDEyOCk7Ci0gICBlbHNlIGlmIChXSUZFWElURUQgKHJlcy53YWl0c3RhdHVzKSkKLSAgICAgZXhpdCAoV0VYSVRTVEFUVVMgKHJlcy53YWl0c3RhdHVzKSk7Ci0gfQotQEAgLTY1Nyw3ICs2NjcsNyBAQAotICAgZnByaW50ZiAoc3RyZWFtLCAiXAotIFVzYWdlOiAlcyBbLWFwdlZdIFstZiBmb3JtYXRdIFstbyBmaWxlXSBbLS1hcHBlbmRdIFstLXZlcmJvc2VdXG5cCi0gICAgICAgIFstLXBvcnRhYmlsaXR5XSBbLS1mb3JtYXQ9Zm9ybWF0XSBbLS1vdXRwdXQ9ZmlsZV0gWy0tdmVyc2lvbl1cblwKLS0gICAgICAgWy0taGVscF0gY29tbWFuZCBbYXJnLi4uXVxuIiwKLSsgICAgICAgWy0tcXVpZXRdIFstLWhlbHBdIGNvbW1hbmQgW2FyZy4uLl1cbiIsCi0gCSAgIHByb2dyYW1fbmFtZSk7Ci0gICBleGl0IChzdGF0dXMpOwotIH0KLS0tLSB0aW1lLTEuNy5vcmlnL3Jlc3VzZS5oCi0rKysgdGltZS0xLjcvcmVzdXNlLmgKLUBAIC0zNiwxOSArMzYsOCBAQAotICMgaW5jbHVkZSA8c3lzL3J1c2FnZS5oPgotICNlbHNlCi0gIyBkZWZpbmUgVFZfTVNFQyB0dl91c2VjIC8gMTAwMAotLSMgaWYgSEFWRV9XQUlUMwotKyMgaWYgSEFWRV9TWVNfUkVTT1VSQ0VfSAotICMgIGluY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgotLSMgZWxzZQotLS8qIFByb2Nlc3MgcmVzb3VyY2UgdXNhZ2Ugc3RydWN0dXJlLiAgKi8KLS1zdHJ1Y3QgcnVzYWdlCi0tewotLSAgc3RydWN0IHRpbWV2YWwgcnVfdXRpbWU7CS8qIFVzZXIgdGltZSB1c2VkLiAgKi8KLS0gIHN0cnVjdCB0aW1ldmFsIHJ1X3N0aW1lOwkvKiBTeXN0ZW0gdGltZSB1c2VkLiAgKi8KLS0gIGludCBydV9tYXhyc3MsIHJ1X2l4cnNzLCBydV9pZHJzcywgcnVfaXNyc3MsCi0tICBydV9taW5mbHQsIHJ1X21hamZsdCwgcnVfbnN3YXAsIHJ1X2luYmxvY2ssIAotLSAgcnVfb3VibG9jaywgcnVfbXNnc25kLCBydV9tc2dyY3YsIHJ1X25zaWduYWxzLAotLSAgcnVfbnZjc3csIHJ1X25pdmNzdzsKLS19OwotICMgZW5kaWYKLSAjZW5kaWYKLSAKLS0tLSB0aW1lLTEuNy5vcmlnL3RpbWUudGV4aQotKysrIHRpbWUtMS43L3RpbWUudGV4aQotQEAgLTExLDYgKzExLDEyIEBACi0gQGZpbmFsb3V0Ci0gQGVuZCBpZnRleAotIAotK0BkaXJjYXRlZ29yeSBJbmRpdmlkdWFsIHV0aWxpdGllcwotK0BkaXJlbnRyeQotKyogdGltZTogKHRpbWUpLiAgICAgICAgICAgICAgICAgICAgIFJ1biBwcm9ncmFtcyBhbmQgc3VtbWFyaXplCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHJlc291cmNlIHVzYWdlLgotK0BlbmQgZGlyZW50cnkKLSsKLSBAaWZpbmZvCi0gVGhpcyBmaWxlIGRvY3VtZW50cyB0aGUgdGhlIEdOVSBAY29kZXt0aW1lfSBjb21tYW5kIGZvciBydW5uaW5nIHByb2dyYW1zCi0gYW5kIHN1bW1hcml6aW5nIHRoZSBzeXN0ZW0gcmVzb3VyY2VzIHRoZXkgdXNlLgotQEAgLTE4NSw2ICsxOTEsMTAgQEAKLSBzeXMgJVMKLSBAZW5kIGV4YW1wbGUKLSAKLStAaXRlbSAtcQotK0BpdGVteCAtLXF1aWV0Ci0rU3VwcHJlc3Mgbm9uLXplcm8gZXJyb3IgY29kZSBmcm9tIHRoZSBleGVjdXRlZCBwcm9ncmFtLgotKwotIEBpdGVtIC12Ci0gQGl0ZW14IC0tdmVyYm9zZQotIEBjaW5kZXggZm9ybWF0Ci0tLS0gdGltZS0xLjcub3JpZy90aW1lLmluZm8KLSsrKyB0aW1lLTEuNy90aW1lLmluZm8KLUBAIC0xLDUgKzEsMTAgQEAKLS1UaGlzIGlzIEluZm8gZmlsZSAuL3RpbWUuaW5mbywgcHJvZHVjZWQgYnkgTWFrZWluZm8tMS41NSBmcm9tIHRoZSBpbnB1dAotLWZpbGUgdGltZS50ZXhpLgotK1RoaXMgaXMgdGltZS5pbmZvLCBwcm9kdWNlZCBieSBtYWtlaW5mbyB2ZXJzaW9uIDQuMSBmcm9tIHRpbWUudGV4aS4KLSsKLStJTkZPLURJUi1TRUNUSU9OIEluZGl2aWR1YWwgdXRpbGl0aWVzCi0rU1RBUlQtSU5GTy1ESVItRU5UUlkKLSsqIHRpbWU6ICh0aW1lKS4gICAgICAgICAgICAgICAgICAgICBSdW4gcHJvZ3JhbXMgYW5kIHN1bW1hcml6ZQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSByZXNvdXJjZSB1c2FnZS4KLStFTkQtSU5GTy1ESVItRU5UUlkKLSAKLSAgICBUaGlzIGZpbGUgZG9jdW1lbnRzIHRoZSB0aGUgR05VIGB0aW1lJyBjb21tYW5kIGZvciBydW5uaW5nIHByb2dyYW1zCi0gYW5kIHN1bW1hcml6aW5nIHRoZSBzeXN0ZW0gcmVzb3VyY2VzIHRoZXkgdXNlLgotQEAgLTMxLDcgKzM2LDcgQEAKLSAKLSAqIFJlc291cmNlIE1lYXN1cmVtZW50OjogIE1lYXN1cmluZyBwcm9ncmFtIHJlc291cmNlIHVzZS4KLSAKLS0gLS0gVGhlIERldGFpbGVkIE5vZGUgTGlzdGluZyAtLQotKyAtLS0gVGhlIERldGFpbGVkIE5vZGUgTGlzdGluZyAtLS0KLSAKLSBNZWFzdXJpbmcgUHJvZ3JhbSBSZXNvdXJjZSBVc2UKLSAKLUBAIC01OCwxNCArNjMsMTQgQEAKLSAgICBUaGUgYHRpbWUnIGNvbW1hbmQgcnVucyBhbm90aGVyIHByb2dyYW0sIHRoZW4gZGlzcGxheXMgaW5mb3JtYXRpb24KLSBhYm91dCB0aGUgcmVzb3VyY2VzIHVzZWQgYnkgdGhhdCBwcm9ncmFtLCBjb2xsZWN0ZWQgYnkgdGhlIHN5c3RlbSB3aGlsZQotIHRoZSBwcm9ncmFtIHdhcyBydW5uaW5nLiAgWW91IGNhbiBzZWxlY3Qgd2hpY2ggaW5mb3JtYXRpb24gaXMgcmVwb3J0ZWQKLS1hbmQgdGhlIGZvcm1hdCBpbiB3aGljaCBpdCBpcyBzaG93biAoKm5vdGUgU2V0dGluZyBGb3JtYXQ6Oi4pLCBvciBoYXZlCi0rYW5kIHRoZSBmb3JtYXQgaW4gd2hpY2ggaXQgaXMgc2hvd24gKCpub3RlIFNldHRpbmcgRm9ybWF0OjopLCBvciBoYXZlCi0gYHRpbWUnIHNhdmUgdGhlIGluZm9ybWF0aW9uIGluIGEgZmlsZSBpbnN0ZWFkIG9mIGRpc3BsYXlpbmcgaXQgb24gdGhlCi0tc2NyZWVuICgqbm90ZSBSZWRpcmVjdGluZzo6LikuCi0rc2NyZWVuICgqbm90ZSBSZWRpcmVjdGluZzo6KS4KLSAKLSAgICBUaGUgcmVzb3VyY2VzIHRoYXQgYHRpbWUnIGNhbiByZXBvcnQgb24gZmFsbCBpbnRvIHRoZSBnZW5lcmFsCi0gY2F0ZWdvcmllcyBvZiB0aW1lLCBtZW1vcnksIGFuZCBJL08gYW5kIElQQyBjYWxscy4gIFNvbWUgc3lzdGVtcyBkbyBub3QKLSBwcm92aWRlIG11Y2ggaW5mb3JtYXRpb24gYWJvdXQgcHJvZ3JhbSByZXNvdXJjZSB1c2U7IGB0aW1lJyByZXBvcnRzCi0tdW5hdmFpbGFibGUgaW5mb3JtYXRpb24gYXMgemVybyB2YWx1ZXMgKCpub3RlIEFjY3VyYWN5OjouKS4KLSt1bmF2YWlsYWJsZSBpbmZvcm1hdGlvbiBhcyB6ZXJvIHZhbHVlcyAoKm5vdGUgQWNjdXJhY3k6OikuCi0gCi0gICAgVGhlIGZvcm1hdCBvZiB0aGUgYHRpbWUnIGNvbW1hbmQgaXM6Ci0gCi1AQCAtMTMyLDYgKzEzNywxMCBAQAotICAgICAgICAgICB1c2VyICVVCi0gICAgICAgICAgIHN5cyAlUwotIAotK2AtcScKLStgLS1xdWlldCcKLSsgICAgIFN1cHByZXNzIG5vbi16ZXJvIGVycm9yIGNvZGUgZnJvbSB0aGUgZXhlY3V0ZWQgcHJvZ3JhbS4KLSsKLSBgLXYnCi0gYC0tdmVyYm9zZScKLSAgICAgIFVzZSB0aGUgYnVpbHQtaW4gdmVyYm9zZSBmb3JtYXQsIHdoaWNoIGRpc3BsYXlzIGVhY2ggYXZhaWxhYmxlCi1AQCAtMTc0LDcgKzE4Myw3IEBACi0gICAgVGhlIHJlc291cmNlIHNwZWNpZmllcnMsIHdoaWNoIGFyZSBhIHN1cGVyc2V0IG9mIHRob3NlIHJlY29nbml6ZWQgYnkKLSB0aGUgYHRjc2gnIGJ1aWx0aW4gYHRpbWUnIGNvbW1hbmQsIGFyZSBsaXN0ZWQgYmVsb3cuICBOb3QgYWxsIHJlc291cmNlcwotIGFyZSBtZWFzdXJlZCBieSBhbGwgdmVyc2lvbnMgb2YgVW5peCwgc28gc29tZSBvZiB0aGUgdmFsdWVzIG1pZ2h0IGJlCi0tcmVwb3J0ZWQgYXMgemVybyAoKm5vdGUgQWNjdXJhY3k6Oi4pLgotK3JlcG9ydGVkIGFzIHplcm8gKCpub3RlIEFjY3VyYWN5OjopLgotIAotICogTWVudToKLSAKLUBAIC0zMDgsMTEgKzMxNywxMSBAQAotIGAtbyBGSUxFJwotIGAtLW91dHB1dD1GSUxFJwotICAgICAgV3JpdGUgdGhlIHJlc291cmNlIHVzZSBzdGF0aXN0aWNzIHRvIEZJTEUuICBCeSBkZWZhdWx0LCB0aGlzCi0tICAgICAqb3ZlcndyaXRlcyogdGhlIGZpbGUsIGRlc3Ryb3lpbmcgdGhlIGZpbGUncyBwcmV2aW91cyBjb250ZW50cy4KLSsgICAgIF9vdmVyd3JpdGVzXyB0aGUgZmlsZSwgZGVzdHJveWluZyB0aGUgZmlsZSdzIHByZXZpb3VzIGNvbnRlbnRzLgotIAotIGAtYScKLSBgLS1hcHBlbmQnCi0tICAgICAqQXBwZW5kKiB0aGUgcmVzb3VyY2UgdXNlIGluZm9ybWF0aW9uIHRvIHRoZSBvdXRwdXQgZmlsZSBpbnN0ZWFkCi0rICAgICBfQXBwZW5kXyB0aGUgcmVzb3VyY2UgdXNlIGluZm9ybWF0aW9uIHRvIHRoZSBvdXRwdXQgZmlsZSBpbnN0ZWFkCi0gICAgICBvZiBvdmVyd3JpdGluZyBpdC4gIFRoaXMgb3B0aW9uIGlzIG9ubHkgdXNlZnVsIHdpdGggdGhlIGAtbycgb3IKLSAgICAgIGAtLW91dHB1dCcgb3B0aW9uLgotIAotQEAgLTQzNyw3ICs0NDYsNyBAQAotIAotIGAtYScKLSBgLS1hcHBlbmQnCi0tICAgICAqQXBwZW5kKiB0aGUgcmVzb3VyY2UgdXNlIGluZm9ybWF0aW9uIHRvIHRoZSBvdXRwdXQgZmlsZSBpbnN0ZWFkCi0rICAgICBfQXBwZW5kXyB0aGUgcmVzb3VyY2UgdXNlIGluZm9ybWF0aW9uIHRvIHRoZSBvdXRwdXQgZmlsZSBpbnN0ZWFkCi0gICAgICBvZiBvdmVyd3JpdGluZyBpdC4KLSAKLSBgLWYgRk9STUFUJwotQEAgLTQ2MiwxNyArNDcxLDE3IEBACi0gCi0gHwotIFRhZyBUYWJsZToKLS1Ob2RlOiBUb3B/OTM0Ci0tTm9kZTogUmVzb3VyY2UgTWVhc3VyZW1lbnR/MTcyNQotLU5vZGU6IFNldHRpbmcgRm9ybWF0fzM2NzgKLS1Ob2RlOiBGb3JtYXQgU3RyaW5nfzQ5MDcKLS1Ob2RlOiBUaW1lIFJlc291cmNlc382MjE0Ci0tTm9kZTogTWVtb3J5IFJlc291cmNlc382ODQ0Ci0tTm9kZTogSS9PIFJlc291cmNlc383NTQ5Ci0tTm9kZTogQ29tbWFuZCBJbmZvfzg3NDcKLS1Ob2RlOiBSZWRpcmVjdGluZ384OTY0Ci0tTm9kZTogRXhhbXBsZXN/OTc1NAotLU5vZGU6IEFjY3VyYWN5fzEyMDY0Ci0tTm9kZTogSW52b2tpbmcgdGltZX8xMzU4NgotK05vZGU6IFRvcH8xMTE1Ci0rTm9kZTogUmVzb3VyY2UgTWVhc3VyZW1lbnR/MTkwOAotK05vZGU6IFNldHRpbmcgRm9ybWF0fzM4NTgKLStOb2RlOiBGb3JtYXQgU3RyaW5nfzUxNjQKLStOb2RlOiBUaW1lIFJlc291cmNlc382NDcwCi0rTm9kZTogTWVtb3J5IFJlc291cmNlc383MTAwCi0rTm9kZTogSS9PIFJlc291cmNlc383ODA1Ci0rTm9kZTogQ29tbWFuZCBJbmZvfzkwMDMKLStOb2RlOiBSZWRpcmVjdGluZ385MjIwCi0rTm9kZTogRXhhbXBsZXN/MTAwMTAKLStOb2RlOiBBY2N1cmFjeX8xMjMyMAotK05vZGU6IEludm9raW5nIHRpbWV/MTM4NDIKLSAfCi0gRW5kIFRhZyBUYWJsZQotLS0tIHRpbWUtMS43Lm9yaWcvdGltZS5odG1sCi0rKysgdGltZS0xLjcvdGltZS5odG1sCi1AQCAtMCwwICsxLDEwMjEgQEAKLSs8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIgotKyAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQwL2xvb3NlLmR0ZCI+Ci0rPEhUTUw+Ci0rPCEtLSBDcmVhdGVkIG9uIFNlcHRlbWJlciwgMSAyMDAzIGJ5IHRleGkyaHRtbCAxLjY2IC0tPgotKzwhLS0KLStXcml0dGVuIGJ5OiBMaW9uZWwgQ29ucyA8TGlvbmVsLkNvbnNAY2Vybi5jaD4gKG9yaWdpbmFsIGF1dGhvcikKLSsgICAgICAgICAgICBLYXJsIEJlcnJ5ICA8a2FybEBmcmVlZnJpZW5kcy5vcmc+Ci0rICAgICAgICAgICAgT2xhZiBCYWNobWFubiA8b2JhY2htYW5AbWF0aGVtYXRpay51bmkta2wuZGU+Ci0rICAgICAgICAgICAgYW5kIG1hbnkgb3RoZXJzLgotK01haW50YWluZWQgYnk6IE1hbnkgY3JlYXRpdmUgcGVvcGxlIDxkZXZAdGV4aTJodG1sLmN2c2hvbWUub3JnPgotK1NlbmQgYnVncyBhbmQgc3VnZ2VzdGlvbnMgdG8gPHVzZXJzQHRleGkyaHRtbC5jdnNob21lLm9yZz4KLSsKLSstLT4KLSs8SEVBRD4KLSs8VElUTEU+TWVhc3VyaW5nIFByb2dyYW0gUmVzb3VyY2UgVXNlPC9USVRMRT4KLSsKLSs8TUVUQSBOQU1FPSJkZXNjcmlwdGlvbiIgQ09OVEVOVD0iTWVhc3VyaW5nIFByb2dyYW0gUmVzb3VyY2UgVXNlIj4KLSs8TUVUQSBOQU1FPSJrZXl3b3JkcyIgQ09OVEVOVD0iTWVhc3VyaW5nIFByb2dyYW0gUmVzb3VyY2UgVXNlIj4KLSs8TUVUQSBOQU1FPSJyZXNvdXJjZS10eXBlIiBDT05URU5UPSJkb2N1bWVudCI+Ci0rPE1FVEEgTkFNRT0iZGlzdHJpYnV0aW9uIiBDT05URU5UPSJnbG9iYWwiPgotKzxNRVRBIE5BTUU9IkdlbmVyYXRvciIgQ09OVEVOVD0idGV4aTJodG1sIDEuNjYiPgotKwotKzwvSEVBRD4KLSsKLSs8Qk9EWSBMQU5HPSJlbiIgQkdDT0xPUj0iI0ZGRkZGRiIgVEVYVD0iIzAwMDAwMCIgTElOSz0iIzAwMDBGRiIgVkxJTks9IiM4MDAwODAiIEFMSU5LPSIjRkYwMDAwIj4KLSsKLSs8QSBOQU1FPSJTRUNfVG9wIj48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+Ci0rPC9UUj48L1RBQkxFPgotKzxIMT5NZWFzdXJpbmcgUHJvZ3JhbSBSZXNvdXJjZSBVc2U8L0gxPgotKwotKzxQPgotKwotK1RoaXMgZmlsZSBkb2N1bWVudHMgdGhlIHRoZSBHTlUgPENPREU+dGltZTwvQ09ERT4gY29tbWFuZCBmb3IgcnVubmluZyBwcm9ncmFtcwotK2FuZCBzdW1tYXJpemluZyB0aGUgc3lzdGVtIHJlc291cmNlcyB0aGV5IHVzZS4KLStUaGlzIGlzIGVkaXRpb24gMS43LCBmb3IgdmVyc2lvbiAxLjcuCi0rPC9QPgotKzxQPgotKwotKzwvUD4KLSs8VEFCTEUgQk9SREVSPSIwIiBDRUxMU1BBQ0lORz0iMCI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4xLiBNZWFzdXJpbmcgUHJvZ3JhbSBSZXNvdXJjZSBVc2U8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5NZWFzdXJpbmcgcHJvZ3JhbSByZXNvdXJjZSB1c2UuPC9URD48L1RSPgotKzxUUj48VEggQ09MU1BBTj0iMyIgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj4KLSs8L1RIPjwvVFI+Ci0rPFRSPjxUSCBDT0xTUEFOPSIzIiBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPiAtLSBUaGUgRGV0YWlsZWQgTm9kZSBMaXN0aW5nIC0tLQotKzwvVEg+PC9UUj4KLSs8VFI+PFRIIENPTFNQQU49IjMiIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+Ci0rPC9USD48L1RSPgotKzxUUj48VEggQ09MU1BBTj0iMyIgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5NZWFzdXJpbmcgUHJvZ3JhbSBSZXNvdXJjZSBVc2UKLSs8L1RIPjwvVFI+Ci0rPFRSPjxUSCBDT0xTUEFOPSIzIiBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPgotKzwvVEg+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzIiPjEuMSBTZXR0aW5nIHRoZSBPdXRwdXQgRm9ybWF0PC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+U2VsZWN0aW5nIHRoZSBpbmZvcm1hdGlvbiByZXBvcnRlZCBieSA8Q09ERT50aW1lPC9DT0RFPi48L1REPjwvVFI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUMzIj4xLjIgVGhlIEZvcm1hdCBTdHJpbmc8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5UaGUgaW5mb3JtYXRpb24gPENPREU+dGltZTwvQ09ERT4gY2FuIHJlcG9ydC48L1REPjwvVFI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUM4Ij4xLjMgUmVkaXJlY3RpbmcgT3V0cHV0PC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+V3JpdGluZyB0aGUgaW5mb3JtYXRpb24gdG8gYSBmaWxlLjwvVEQ+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzkiPjEuNCBFeGFtcGxlczwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPkV4YW1wbGVzIG9mIHVzaW5nIDxDT0RFPnRpbWU8L0NPREU+LjwvVEQ+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzEwIj4xLjUgQWNjdXJhY3k8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5MaW1pdGF0aW9ucyBvbiB0aGUgYWNjdXJhY3kgb2YgPENPREU+dGltZTwvQ09ERT4gb3V0cHV0LjwvVEQ+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzExIj4xLjYgUnVubmluZyB0aGUgPENPREU+dGltZTwvQ09ERT4gQ29tbWFuZDwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPlN1bW1hcnkgb2YgdGhlIG9wdGlvbnMgdG8gdGhlIDxDT0RFPnRpbWU8L0NPREU+IGNvbW1hbmQuPC9URD48L1RSPgotKzxUUj48VEggQ09MU1BBTj0iMyIgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj4KLSs8L1RIPjwvVFI+Ci0rPFRSPjxUSCBDT0xTUEFOPSIzIiBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPlRoZSBGb3JtYXQgU3RyaW5nCi0rPC9USD48L1RSPgotKzxUUj48VEggQ09MU1BBTj0iMyIgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj4KLSs8L1RIPjwvVFI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUM0Ij4xLjIuMSBUaW1lIFJlc291cmNlczwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjwvVEQ+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzUiPjEuMi4yIE1lbW9yeSBSZXNvdXJjZXM8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48L1REPjwvVFI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUM2Ij4xLjIuMyBJL08gUmVzb3VyY2VzPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PC9URD48L1RSPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNyI+MS4yLjQgQ29tbWFuZCBJbmZvPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PC9URD48L1RSPgotKzwvVEFCTEU+Ci0rPFA+Ci0rCi0rPEhSIFNJWkU9MT4KLSs8QSBOQU1FPSJTRUMxIj48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj4gJmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMyIj4gJmd0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZsdDsmbHQ7IF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+IFVwIDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsmZ3Q7IF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+Ci0rPC9UUj48L1RBQkxFPgotKzxBIE5BTUU9IlJlc291cmNlIE1lYXN1cmVtZW50Ij48L0E+Ci0rPEgxPiAxLiBNZWFzdXJpbmcgUHJvZ3JhbSBSZXNvdXJjZSBVc2UgPC9IMT4KLSs8IS0tZG9jaWQ6OlNFQzE6Oi0tPgotKzxQPgotKwotK1RoZSA8Q09ERT50aW1lPC9DT0RFPiBjb21tYW5kIHJ1bnMgYW5vdGhlciBwcm9ncmFtLCB0aGVuIGRpc3BsYXlzIGluZm9ybWF0aW9uCi0rYWJvdXQgdGhlIHJlc291cmNlcyB1c2VkIGJ5IHRoYXQgcHJvZ3JhbSwgY29sbGVjdGVkIGJ5IHRoZSBzeXN0ZW0gd2hpbGUKLSt0aGUgcHJvZ3JhbSB3YXMgcnVubmluZy4gIFlvdSBjYW4gc2VsZWN0IHdoaWNoIGluZm9ybWF0aW9uIGlzIHJlcG9ydGVkCi0rYW5kIHRoZSBmb3JtYXQgaW4gd2hpY2ggaXQgaXMgc2hvd24gKHNlZSBzZWN0aW9uIDxBIEhSRUY9InRpbWUuaHRtbCNTRUMyIj4xLjEgU2V0dGluZyB0aGUgT3V0cHV0IEZvcm1hdDwvQT4pLCBvciBoYXZlCi0rPENPREU+dGltZTwvQ09ERT4gc2F2ZSB0aGUgaW5mb3JtYXRpb24gaW4gYSBmaWxlIGluc3RlYWQgb2YgZGlzcGxheWluZyBpdCBvbiB0aGUKLStzY3JlZW4gKHNlZSBzZWN0aW9uIDxBIEhSRUY9InRpbWUuaHRtbCNTRUM4Ij4xLjMgUmVkaXJlY3RpbmcgT3V0cHV0PC9BPikuCi0rPC9QPgotKzxQPgotKwotK1RoZSByZXNvdXJjZXMgdGhhdCA8Q09ERT50aW1lPC9DT0RFPiBjYW4gcmVwb3J0IG9uIGZhbGwgaW50byB0aGUgZ2VuZXJhbAotK2NhdGVnb3JpZXMgb2YgdGltZSwgbWVtb3J5LCBhbmQgSS9PIGFuZCBJUEMgY2FsbHMuICBTb21lIHN5c3RlbXMgZG8gbm90Ci0rcHJvdmlkZSBtdWNoIGluZm9ybWF0aW9uIGFib3V0IHByb2dyYW0gcmVzb3VyY2UgdXNlOyA8Q09ERT50aW1lPC9DT0RFPgotK3JlcG9ydHMgdW5hdmFpbGFibGUgaW5mb3JtYXRpb24gYXMgemVybyB2YWx1ZXMgKHNlZSBzZWN0aW9uIDxBIEhSRUY9InRpbWUuaHRtbCNTRUMxMCI+MS41IEFjY3VyYWN5PC9BPikuCi0rPC9QPgotKzxQPgotKwotK1RoZSBmb3JtYXQgb2YgdGhlIDxDT0RFPnRpbWU8L0NPREU+IGNvbW1hbmQgaXM6Ci0rPC9QPgotKzxQPgotKwotKzxUQUJMRT48dHI+PHRkPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPWV4YW1wbGU+PHByZT50aW1lIFtvcHRpb248c21hbGw+Li4uPC9zbWFsbD5dIDxWQVI+Y29tbWFuZDwvVkFSPiBbPFZBUj5hcmc8L1ZBUj48c21hbGw+Li4uPC9zbWFsbD5dCi0rPC9wcmU+PC90ZD48L3RyPjwvdGFibGU+PFA+Ci0rCi0rPEEgTkFNRT0iSURYMSI+PC9BPgotKzxDT0RFPnRpbWU8L0NPREU+IHJ1bnMgdGhlIHByb2dyYW0gPFZBUj5jb21tYW5kPC9WQVI+LCB3aXRoIGFueSBnaXZlbiBhcmd1bWVudHMKLSs8VkFSPmFyZzwvVkFSPjxzbWFsbD4uLi48L3NtYWxsPi4gIFdoZW4gPFZBUj5jb21tYW5kPC9WQVI+IGZpbmlzaGVzLCA8Q09ERT50aW1lPC9DT0RFPiBkaXNwbGF5cwotK2luZm9ybWF0aW9uIGFib3V0IHJlc291cmNlcyB1c2VkIGJ5IDxWQVI+Y29tbWFuZDwvVkFSPi4KLSs8L1A+Ci0rPFA+Ci0rCi0rSGVyZSBpcyBhbiBleGFtcGxlIG9mIHVzaW5nIDxDT0RFPnRpbWU8L0NPREU+IHRvIG1lYXN1cmUgdGhlIHRpbWUgYW5kIG90aGVyCi0rcmVzb3VyY2VzIHVzZWQgYnkgcnVubmluZyB0aGUgcHJvZ3JhbSA8Q09ERT5ncmVwPC9DT0RFPjoKLSs8L1A+Ci0rPFA+Ci0rCi0rPFRBQkxFPjx0cj48dGQ+Jm5ic3A7PC90ZD48dGQgY2xhc3M9ZXhhbXBsZT48cHJlPmVnJCB0aW1lIGdyZXAgbm9ib2R5IC9ldGMvYWxpYXNlcwotK25vYm9keTovZGV2L251bGwKLStldGMtZmlsZXM6bm9ib2R5Ci0rbWlzYy1ncm91cDpub2JvZHkKLSswLjA3dXNlciAwLjUwc3lzdGVtIDA6MDYuNjllbGFwc2VkIDglQ1BVICgwYXZndGV4dCs0ODlhdmdkYXRhIDMyNG1heHJlc2lkZW50KWsKLSs0NmlucHV0cys3b3V0cHV0cyAoNDNtYWpvcisyNTFtaW5vcilwYWdlZmF1bHRzIDBzd2FwcwotKzwvcHJlPjwvdGQ+PC90cj48L3RhYmxlPjxQPgotKwotK01haWwgc3VnZ2VzdGlvbnMgYW5kIGJ1ZyByZXBvcnRzIGZvciBHTlUgPENPREU+dGltZTwvQ09ERT4gdG8KLSs8Q09ERT5idWctZ251LXV0aWxzQHByZXAuYWkubWl0LmVkdTwvQ09ERT4uICBQbGVhc2UgaW5jbHVkZSB0aGUgdmVyc2lvbiBvZgotKzxDT0RFPnRpbWU8L0NPREU+LCB3aGljaCB5b3UgY2FuIGdldCBieSBydW5uaW5nIGA8U0FNUD50aW1lIC0tdmVyc2lvbjwvU0FNUD4nLCBhbmQgdGhlCi0rb3BlcmF0aW5nIHN5c3RlbSBhbmQgQyBjb21waWxlciB5b3UgdXNlZC4KLSs8L1A+Ci0rPFA+Ci0rCi0rPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFNQQUNJTkc9IjAiPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMiI+MS4xIFNldHRpbmcgdGhlIE91dHB1dCBGb3JtYXQ8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5TZWxlY3RpbmcgdGhlIGluZm9ybWF0aW9uIHJlcG9ydGVkIGJ5IDxDT0RFPnRpbWU8L0NPREU+LjwvVEQ+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzMiPjEuMiBUaGUgRm9ybWF0IFN0cmluZzwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPlRoZSBpbmZvcm1hdGlvbiA8Q09ERT50aW1lPC9DT0RFPiBjYW4gcmVwb3J0LjwvVEQ+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzgiPjEuMyBSZWRpcmVjdGluZyBPdXRwdXQ8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj5Xcml0aW5nIHRoZSBpbmZvcm1hdGlvbiB0byBhIGZpbGUuPC9URD48L1RSPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDOSI+MS40IEV4YW1wbGVzPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+RXhhbXBsZXMgb2YgdXNpbmcgPENPREU+dGltZTwvQ09ERT4uPC9URD48L1RSPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMTAiPjEuNSBBY2N1cmFjeTwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPkxpbWl0YXRpb25zIG9uIHRoZSBhY2N1cmFjeSBvZiA8Q09ERT50aW1lPC9DT0RFPiBvdXRwdXQuPC9URD48L1RSPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMTEiPjEuNiBSdW5uaW5nIHRoZSA8Q09ERT50aW1lPC9DT0RFPiBDb21tYW5kPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+U3VtbWFyeSBvZiB0aGUgb3B0aW9ucyB0byB0aGUgPENPREU+dGltZTwvQ09ERT4gY29tbWFuZC48L1REPjwvVFI+Ci0rPC9UQUJMRT4KLSs8UD4KLSsKLSs8QSBOQU1FPSJTZXR0aW5nIEZvcm1hdCI+PC9BPgotKzxIUiBTSVpFPSI2Ij4KLSs8QSBOQU1FPSJTRUMyIj48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4gJmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMzIj4gJmd0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzEiPiAmbHQ7Jmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj4gVXAgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPlsgJmd0OyZndDsgXTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPlRvcDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Db250ZW50cyI+Q29udGVudHM8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+W0luZGV4XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQWJvdXQiPiA/IDwvQT5dPC9URD4KLSs8L1RSPjwvVEFCTEU+Ci0rPEgyPiAxLjEgU2V0dGluZyB0aGUgT3V0cHV0IEZvcm1hdCA8L0gyPgotKzwhLS1kb2NpZDo6U0VDMjo6LS0+Ci0rPFA+Ci0rCi0rPENPREU+dGltZTwvQ09ERT4gdXNlcyBhIDxFTT5mb3JtYXQgc3RyaW5nPC9FTT4gdG8gZGV0ZXJtaW5lIHdoaWNoIGluZm9ybWF0aW9uIHRvCi0rZGlzcGxheSBhYm91dCB0aGUgcmVzb3VyY2VzIHVzZWQgYnkgdGhlIGNvbW1hbmQgaXQgcnVucy4gIFNlZSBzZWN0aW9uIDxBIEhSRUY9InRpbWUuaHRtbCNTRUMzIj4xLjIgVGhlIEZvcm1hdCBTdHJpbmc8L0E+LCBmb3IgdGhlIGludGVycHJldGF0aW9uIG9mIHRoZSBmb3JtYXQgc3RyaW5nIGNvbnRlbnRzLgotKzwvUD4KLSs8UD4KLSsKLStZb3UgY2FuIHNwZWNpZnkgYSBmb3JtYXQgc3RyaW5nIHdpdGggdGhlIGNvbW1hbmQgbGluZSBvcHRpb25zIGxpc3RlZAotK2JlbG93LiAgSWYgbm8gZm9ybWF0IGlzIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLCBidXQgdGhlCi0rPENPREU+VElNRTwvQ09ERT4gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0LCBpdHMgdmFsdWUgaXMgdXNlZCBhcyB0aGUgZm9ybWF0Ci0rc3RyaW5nLiAgT3RoZXJ3aXNlLCB0aGUgZGVmYXVsdCBmb3JtYXQgYnVpbHQgaW50byA8Q09ERT50aW1lPC9DT0RFPiBpcyB1c2VkOgotKzwvUD4KLSs8UD4KLSsKLSs8VEFCTEU+PHRyPjx0ZD4mbmJzcDs8L3RkPjx0ZCBjbGFzcz1leGFtcGxlPjxwcmU+JVV1c2VyICVTc3lzdGVtICVFZWxhcHNlZCAlUENQVSAoJVh0ZXh0KyVEZGF0YSAlTW1heClrCi0rJUlpbnB1dHMrJU9vdXRwdXRzICglRm1ham9yKyVSbWlub3IpcGFnZWZhdWx0cyAlV3N3YXBzCi0rPC9wcmU+PC90ZD48L3RyPjwvdGFibGU+PFA+Ci0rCi0rVGhlIGNvbW1hbmQgbGluZSBvcHRpb25zIHRvIHNldCB0aGUgZm9ybWF0IGFyZToKLSs8L1A+Ci0rPFA+Ci0rCi0rPC9QPgotKzxETCBDT01QQUNUPgotKzxEVD48Q09ERT4tZiA8VkFSPmZvcm1hdDwvVkFSPjwvQ09ERT4KLSs8REQ+PERUPjxDT0RFPi0tZm9ybWF0PTxWQVI+Zm9ybWF0PC9WQVI+PC9DT0RFPgotKzxERD5Vc2UgPFZBUj5mb3JtYXQ8L1ZBUj4gYXMgdGhlIGZvcm1hdCBzdHJpbmcuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT4tcDwvQ09ERT4KLSs8REQ+PERUPjxDT0RFPi0tcG9ydGFiaWxpdHk8L0NPREU+Ci0rPEREPlVzZSB0aGUgZm9sbG93aW5nIGZvcm1hdCBzdHJpbmcsIGZvciBjb25mb3JtYW5jZSB3aXRoIFBPU0lYIHN0YW5kYXJkCi0rMTAwMy4yOgotKzxQPgotKwotKzxUQUJMRT48dHI+PHRkPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPWV4YW1wbGU+PHByZT5yZWFsICVlCi0rdXNlciAlVQotK3N5cyAlUwotKzwvcHJlPjwvdGQ+PC90cj48L3RhYmxlPjxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+LXE8L0NPREU+Ci0rPEREPjxEVD48Q09ERT4tLXF1aWV0PC9DT0RFPgotKzxERD5TdXBwcmVzcyBub24temVybyBlcnJvciBjb2RlIGZyb20gdGhlIGV4ZWN1dGVkIHByb2dyYW0uCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT4tdjwvQ09ERT4KLSs8REQ+PERUPjxDT0RFPi0tdmVyYm9zZTwvQ09ERT4KLSs8REQ+PEEgTkFNRT0iSURYMiI+PC9BPgotK1VzZSB0aGUgYnVpbHQtaW4gdmVyYm9zZSBmb3JtYXQsIHdoaWNoIGRpc3BsYXlzIGVhY2ggYXZhaWxhYmxlIHBpZWNlIG9mCi0raW5mb3JtYXRpb24gb24gdGhlIHByb2dyYW0ncyByZXNvdXJjZSB1c2Ugb24gaXRzIG93biBsaW5lLCB3aXRoIGFuCi0rRW5nbGlzaCBkZXNjcmlwdGlvbiBvZiBpdHMgbWVhbmluZy4KLSs8L0RMPgotKzxQPgotKwotKzxBIE5BTUU9IkZvcm1hdCBTdHJpbmciPjwvQT4KLSs8SFIgU0laRT0iNiI+Ci0rPEEgTkFNRT0iU0VDMyI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMiI+ICZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNCI+ICZndDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4gJmx0OyZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+IFVwIDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsmZ3Q7IF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+Ci0rPC9UUj48L1RBQkxFPgotKzxIMj4gMS4yIFRoZSBGb3JtYXQgU3RyaW5nIDwvSDI+Ci0rPCEtLWRvY2lkOjpTRUMzOjotLT4KLSs8UD4KLSsKLSs8QSBOQU1FPSJJRFgzIj48L0E+Ci0rPEEgTkFNRT0iSURYNCI+PC9BPgotK1RoZSA8RU0+Zm9ybWF0IHN0cmluZzwvRU0+IGNvbnRyb2xzIHRoZSBjb250ZW50cyBvZiB0aGUgPENPREU+dGltZTwvQ09ERT4gb3V0cHV0LgotK0l0IGNvbnNpc3RzIG9mIDxFTT5yZXNvdXJjZSBzcGVjaWZpZXJzPC9FTT4gYW5kIDxFTT5lc2NhcGVzPC9FTT4sIGludGVyc3BlcnNlZAotK3dpdGggcGxhaW4gdGV4dC4KLSs8L1A+Ci0rPFA+Ci0rCi0rQSBiYWNrc2xhc2ggaW50cm9kdWNlcyBhbiA8RU0+ZXNjYXBlPC9FTT4sIHdoaWNoIGlzIHRyYW5zbGF0ZWQKLStpbnRvIGEgc2luZ2xlIHByaW50aW5nIGNoYXJhY3RlciB1cG9uIG91dHB1dC4gIFRoZSB2YWxpZCBlc2NhcGVzIGFyZQotK2xpc3RlZCBiZWxvdy4gIEFuIGludmFsaWQgZXNjYXBlIGlzIG91dHB1dCBhcyBhIHF1ZXN0aW9uIG1hcmsgZm9sbG93ZWQKLStieSBhIGJhY2tzbGFzaC4KLSs8L1A+Ci0rPFA+Ci0rCi0rPC9QPgotKzxETCBDT01QQUNUPgotKzxEVD48Q09ERT5cdDwvQ09ERT4KLSs8REQ+YSB0YWIgY2hhcmFjdGVyCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5cbjwvQ09ERT4KLSs8REQ+YSBuZXdsaW5lCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5cXDwvQ09ERT4KLSs8REQ+YSBsaXRlcmFsIGJhY2tzbGFzaAotKzwvREw+Ci0rPFA+Ci0rCi0rPENPREU+dGltZTwvQ09ERT4gYWx3YXlzIHByaW50cyBhIG5ld2xpbmUgYWZ0ZXIgcHJpbnRpbmcgdGhlIHJlc291cmNlIHVzZQotK2luZm9ybWF0aW9uLCBzbyBub3JtYWxseSBmb3JtYXQgc3RyaW5ncyBkbyBub3QgZW5kIHdpdGggYSBuZXdsaW5lCi0rY2hhcmFjdGVyIChvciBgPFNBTVA+XG48L1NBTVA+JykuCi0rPC9QPgotKzxQPgotKwotK0EgcmVzb3VyY2Ugc3BlY2lmaWVyIGNvbnNpc3RzIG9mIGEgcGVyY2VudCBzaWduIGZvbGxvd2VkIGJ5IGFub3RoZXIKLStjaGFyYWN0ZXIuICBBbiBpbnZhbGlkIHJlc291cmNlIHNwZWNpZmllciBpcyBvdXRwdXQgYXMgYSBxdWVzdGlvbiBtYXJrCi0rZm9sbG93ZWQgYnkgdGhlIGludmFsaWQgY2hhcmFjdGVyLiAgVXNlIGA8U0FNUD4lJTwvU0FNUD4nIHRvIG91dHB1dCBhIGxpdGVyYWwKLStwZXJjZW50IHNpZ24uCi0rPC9QPgotKzxQPgotKwotK1RoZSByZXNvdXJjZSBzcGVjaWZpZXJzLCB3aGljaCBhcmUgYSBzdXBlcnNldCBvZiB0aG9zZSByZWNvZ25pemVkIGJ5IHRoZQotKzxDT0RFPnRjc2g8L0NPREU+IGJ1aWx0aW4gPENPREU+dGltZTwvQ09ERT4gY29tbWFuZCwgYXJlIGxpc3RlZCBiZWxvdy4gIE5vdCBhbGwKLStyZXNvdXJjZXMgYXJlIG1lYXN1cmVkIGJ5IGFsbCB2ZXJzaW9ucyBvZiBVbml4LCBzbyBzb21lIG9mIHRoZSB2YWx1ZXMKLSttaWdodCBiZSByZXBvcnRlZCBhcyB6ZXJvIChzZWUgc2VjdGlvbiA8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMTAiPjEuNSBBY2N1cmFjeTwvQT4pLgotKzwvUD4KLSs8UD4KLSsKLSs8VEFCTEUgQk9SREVSPSIwIiBDRUxMU1BBQ0lORz0iMCI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUM0Ij4xLjIuMSBUaW1lIFJlc291cmNlczwvQT48L1REPjxURD4mbmJzcDsmbmJzcDs8L1REPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjwvVEQ+PC9UUj4KLSs8VFI+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PEEgSFJFRj0idGltZS5odG1sI1NFQzUiPjEuMi4yIE1lbW9yeSBSZXNvdXJjZXM8L0E+PC9URD48VEQ+Jm5ic3A7Jm5ic3A7PC9URD48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48L1REPjwvVFI+Ci0rPFRSPjxURCBBTElHTj0ibGVmdCIgVkFMSUdOPSJUT1AiPjxBIEhSRUY9InRpbWUuaHRtbCNTRUM2Ij4xLjIuMyBJL08gUmVzb3VyY2VzPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PC9URD48L1RSPgotKzxUUj48VEQgQUxJR049ImxlZnQiIFZBTElHTj0iVE9QIj48QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNyI+MS4yLjQgQ29tbWFuZCBJbmZvPC9BPjwvVEQ+PFREPiZuYnNwOyZuYnNwOzwvVEQ+PFREIEFMSUdOPSJsZWZ0IiBWQUxJR049IlRPUCI+PC9URD48L1RSPgotKzwvVEFCTEU+Ci0rPFA+Ci0rCi0rPEEgTkFNRT0iVGltZSBSZXNvdXJjZXMiPjwvQT4KLSs8SFIgU0laRT0iNiI+Ci0rPEEgTkFNRT0iU0VDNCI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMyI+ICZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNSI+ICZndDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4gJmx0OyZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+IFVwIDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsmZ3Q7IF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+Ci0rPC9UUj48L1RBQkxFPgotKzxIMz4gMS4yLjEgVGltZSBSZXNvdXJjZXMgPC9IMz4KLSs8IS0tZG9jaWQ6OlNFQzQ6Oi0tPgotKzxQPgotKwotKzwvUD4KLSs8REwgQ09NUEFDVD4KLSs8RFQ+PENPREU+RTwvQ09ERT4KLSs8REQ+RWxhcHNlZCByZWFsICh3YWxsIGNsb2NrKSB0aW1lIHVzZWQgYnkgdGhlIHByb2Nlc3MsIGluCi0rW2hvdXJzOl1taW51dGVzOnNlY29uZHMuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5lPC9DT0RFPgotKzxERD5FbGFwc2VkIHJlYWwgKHdhbGwgY2xvY2spIHRpbWUgdXNlZCBieSB0aGUgcHJvY2VzcywgaW4KLStzZWNvbmRzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+UzwvQ09ERT4KLSs8REQ+VG90YWwgbnVtYmVyIG9mIENQVS1zZWNvbmRzIHVzZWQgYnkgdGhlIHN5c3RlbSBvbiBiZWhhbGYgb2YgdGhlIHByb2Nlc3MKLSsoaW4ga2VybmVsIG1vZGUpLCBpbiBzZWNvbmRzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+VTwvQ09ERT4KLSs8REQ+VG90YWwgbnVtYmVyIG9mIENQVS1zZWNvbmRzIHRoYXQgdGhlIHByb2Nlc3MgdXNlZCBkaXJlY3RseSAoaW4gdXNlcgotK21vZGUpLCBpbiBzZWNvbmRzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+UDwvQ09ERT4KLSs8REQ+UGVyY2VudGFnZSBvZiB0aGUgQ1BVIHRoYXQgdGhpcyBqb2IgZ290LiAgVGhpcyBpcyBqdXN0IHVzZXIgKyBzeXN0ZW0KLSt0aW1lcyBkaXZpZWQgYnkgdGhlIHRvdGFsIHJ1bm5pbmcgdGltZS4KLSs8L0RMPgotKzxQPgotKwotKzxBIE5BTUU9Ik1lbW9yeSBSZXNvdXJjZXMiPjwvQT4KLSs8SFIgU0laRT0iNiI+Ci0rPEEgTkFNRT0iU0VDNSI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNCI+ICZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNiI+ICZndDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4gJmx0OyZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+IFVwIDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsmZ3Q7IF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+Ci0rPC9UUj48L1RBQkxFPgotKzxIMz4gMS4yLjIgTWVtb3J5IFJlc291cmNlcyA8L0gzPgotKzwhLS1kb2NpZDo6U0VDNTo6LS0+Ci0rPFA+Ci0rCi0rPC9QPgotKzxETCBDT01QQUNUPgotKzxEVD48Q09ERT5NPC9DT0RFPgotKzxERD5NYXhpbXVtIHJlc2lkZW50IHNldCBzaXplIG9mIHRoZSBwcm9jZXNzIGR1cmluZyBpdHMgbGlmZXRpbWUsIGluCi0rS2lsb2J5dGVzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+dDwvQ09ERT4KLSs8REQ+QXZlcmFnZSByZXNpZGVudCBzZXQgc2l6ZSBvZiB0aGUgcHJvY2VzcywgaW4gS2lsb2J5dGVzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+SzwvQ09ERT4KLSs8REQ+QXZlcmFnZSB0b3RhbCAoZGF0YStzdGFjayt0ZXh0KSBtZW1vcnkgdXNlIG9mIHRoZSBwcm9jZXNzLCBpbiBLaWxvYnl0ZXMuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5EPC9DT0RFPgotKzxERD5BdmVyYWdlIHNpemUgb2YgdGhlIHByb2Nlc3MncyB1bnNoYXJlZCBkYXRhIGFyZWEsIGluIEtpbG9ieXRlcy4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPnA8L0NPREU+Ci0rPEREPkF2ZXJhZ2Ugc2l6ZSBvZiB0aGUgcHJvY2VzcydzIHVuc2hhcmVkIHN0YWNrLCBpbiBLaWxvYnl0ZXMuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5YPC9DT0RFPgotKzxERD5BdmVyYWdlIHNpemUgb2YgdGhlIHByb2Nlc3MncyBzaGFyZWQgdGV4dCwgaW4gS2lsb2J5dGVzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+WjwvQ09ERT4KLSs8REQ+U3lzdGVtJ3MgcGFnZSBzaXplLCBpbiBieXRlcy4gIFRoaXMgaXMgYSBwZXItc3lzdGVtIGNvbnN0YW50LCBidXQKLSt2YXJpZXMgYmV0d2VlbiBzeXN0ZW1zLgotKzwvREw+Ci0rPFA+Ci0rCi0rPEEgTkFNRT0iSS9PIFJlc291cmNlcyI+PC9BPgotKzxIUiBTSVpFPSI2Ij4KLSs8QSBOQU1FPSJTRUM2Ij48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUM1Ij4gJmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUM3Ij4gJmd0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzEiPiAmbHQ7Jmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj4gVXAgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPlsgJmd0OyZndDsgXTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPlRvcDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Db250ZW50cyI+Q29udGVudHM8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+W0luZGV4XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQWJvdXQiPiA/IDwvQT5dPC9URD4KLSs8L1RSPjwvVEFCTEU+Ci0rPEgzPiAxLjIuMyBJL08gUmVzb3VyY2VzIDwvSDM+Ci0rPCEtLWRvY2lkOjpTRUM2OjotLT4KLSs8UD4KLSsKLSs8L1A+Ci0rPERMIENPTVBBQ1Q+Ci0rPERUPjxDT0RFPkY8L0NPREU+Ci0rPEREPk51bWJlciBvZiBtYWpvciwgb3IgSS9PLXJlcXVpcmluZywgcGFnZSBmYXVsdHMgdGhhdCBvY2N1cnJlZCB3aGlsZSB0aGUKLStwcm9jZXNzIHdhcyBydW5uaW5nLiAgVGhlc2UgYXJlIGZhdWx0cyB3aGVyZSB0aGUgcGFnZSBoYXMgYWN0dWFsbHkKLSttaWdyYXRlZCBvdXQgb2YgcHJpbWFyeSBtZW1vcnkuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5SPC9DT0RFPgotKzxERD5OdW1iZXIgb2YgbWlub3IsIG9yIHJlY292ZXJhYmxlLCBwYWdlIGZhdWx0cy4gIFRoZXNlIGFyZSBwYWdlcyB0aGF0IGFyZQotK25vdCB2YWxpZCAoc28gdGhleSBmYXVsdCkgYnV0IHdoaWNoIGhhdmUgbm90IHlldCBiZWVuIGNsYWltZWQgYnkgb3RoZXIKLSt2aXJ0dWFsIHBhZ2VzLiAgVGh1cyB0aGUgZGF0YSBpbiB0aGUgcGFnZSBpcyBzdGlsbCB2YWxpZCBidXQgdGhlIHN5c3RlbQotK3RhYmxlcyBtdXN0IGJlIHVwZGF0ZWQuCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT5XPC9DT0RFPgotKzxERD5OdW1iZXIgb2YgdGltZXMgdGhlIHByb2Nlc3Mgd2FzIHN3YXBwZWQgb3V0IG9mIG1haW4gbWVtb3J5LgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+YzwvQ09ERT4KLSs8REQ+TnVtYmVyIG9mIHRpbWVzIHRoZSBwcm9jZXNzIHdhcyBjb250ZXh0LXN3aXRjaGVkIGludm9sdW50YXJpbHkgKGJlY2F1c2UKLSt0aGUgdGltZSBzbGljZSBleHBpcmVkKS4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPnc8L0NPREU+Ci0rPEREPk51bWJlciBvZiB0aW1lcyB0aGF0IHRoZSBwcm9ncmFtIHdhcyBjb250ZXh0LXN3aXRjaGVkIHZvbHVudGFyaWx5LCBmb3IKLStpbnN0YW5jZSB3aGlsZSB3YWl0aW5nIGZvciBhbiBJL08gb3BlcmF0aW9uIHRvIGNvbXBsZXRlLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+STwvQ09ERT4KLSs8REQ+TnVtYmVyIG9mIGZpbGUgc3lzdGVtIGlucHV0cyBieSB0aGUgcHJvY2Vzcy4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPk88L0NPREU+Ci0rPEREPk51bWJlciBvZiBmaWxlIHN5c3RlbSBvdXRwdXRzIGJ5IHRoZSBwcm9jZXNzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+cjwvQ09ERT4KLSs8REQ+TnVtYmVyIG9mIHNvY2tldCBtZXNzYWdlcyByZWNlaXZlZCBieSB0aGUgcHJvY2Vzcy4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPnM8L0NPREU+Ci0rPEREPk51bWJlciBvZiBzb2NrZXQgbWVzc2FnZXMgc2VudCBieSB0aGUgcHJvY2Vzcy4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPms8L0NPREU+Ci0rPEREPk51bWJlciBvZiBzaWduYWxzIGRlbGl2ZXJlZCB0byB0aGUgcHJvY2Vzcy4KLSs8L0RMPgotKzxQPgotKwotKzxBIE5BTUU9IkNvbW1hbmQgSW5mbyI+PC9BPgotKzxIUiBTSVpFPSI2Ij4KLSs8QSBOQU1FPSJTRUM3Ij48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUM2Ij4gJmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUM4Ij4gJmd0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzEiPiAmbHQ7Jmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj4gVXAgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPlsgJmd0OyZndDsgXTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPlRvcDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Db250ZW50cyI+Q29udGVudHM8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+W0luZGV4XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQWJvdXQiPiA/IDwvQT5dPC9URD4KLSs8L1RSPjwvVEFCTEU+Ci0rPEgzPiAxLjIuNCBDb21tYW5kIEluZm8gPC9IMz4KLSs8IS0tZG9jaWQ6OlNFQzc6Oi0tPgotKzxQPgotKwotKzwvUD4KLSs8REwgQ09NUEFDVD4KLSs8RFQ+PENPREU+QzwvQ09ERT4KLSs8REQ+TmFtZSBhbmQgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBvZiB0aGUgY29tbWFuZCBiZWluZyB0aW1lZC4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPng8L0NPREU+Ci0rPEREPkV4aXQgc3RhdHVzIG9mIHRoZSBjb21tYW5kLgotKzwvREw+Ci0rPFA+Ci0rCi0rPEEgTkFNRT0iUmVkaXJlY3RpbmciPjwvQT4KLSs8SFIgU0laRT0iNiI+Ci0rPEEgTkFNRT0iU0VDOCI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDNyI+ICZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDOSI+ICZndDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4gJmx0OyZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+IFVwIDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsmZ3Q7IF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+Ci0rPC9UUj48L1RBQkxFPgotKzxIMj4gMS4zIFJlZGlyZWN0aW5nIE91dHB1dCA8L0gyPgotKzwhLS1kb2NpZDo6U0VDODo6LS0+Ci0rPFA+Ci0rCi0rQnkgZGVmYXVsdCwgPENPREU+dGltZTwvQ09ERT4gd3JpdGVzIHRoZSByZXNvdXJjZSB1c2Ugc3RhdGlzdGljcyB0byB0aGUKLStzdGFuZGFyZCBlcnJvciBzdHJlYW0uICBUaGUgb3B0aW9ucyBiZWxvdyBtYWtlIGl0IHdyaXRlIHRoZSBzdGF0aXN0aWNzCi0rdG8gYSBmaWxlIGluc3RlYWQuICBEb2luZyB0aGlzIGNhbiBiZSB1c2VmdWwgaWYgdGhlIHByb2dyYW0geW91J3JlCi0rcnVubmluZyB3cml0ZXMgdG8gdGhlIHN0YW5kYXJkIGVycm9yIG9yIHlvdSdyZSBydW5uaW5nIDxDT0RFPnRpbWU8L0NPREU+Ci0rbm9uaW50ZXJhY3RpdmVseSBvciBpbiB0aGUgYmFja2dyb3VuZC4KLSs8L1A+Ci0rPFA+Ci0rCi0rPC9QPgotKzxETCBDT01QQUNUPgotKzxEVD48Q09ERT4tbyA8VkFSPmZpbGU8L1ZBUj48L0NPREU+Ci0rPEREPjxEVD48Q09ERT4tLW91dHB1dD08VkFSPmZpbGU8L1ZBUj48L0NPREU+Ci0rPEREPldyaXRlIHRoZSByZXNvdXJjZSB1c2Ugc3RhdGlzdGljcyB0byA8VkFSPmZpbGU8L1ZBUj4uICBCeSBkZWZhdWx0LCB0aGlzCi0rPEVNPm92ZXJ3cml0ZXM8L0VNPiB0aGUgZmlsZSwgZGVzdHJveWluZyB0aGUgZmlsZSdzIHByZXZpb3VzIGNvbnRlbnRzLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+LWE8L0NPREU+Ci0rPEREPjxEVD48Q09ERT4tLWFwcGVuZDwvQ09ERT4KLSs8REQ+PEVNPkFwcGVuZDwvRU0+IHRoZSByZXNvdXJjZSB1c2UgaW5mb3JtYXRpb24gdG8gdGhlIG91dHB1dCBmaWxlIGluc3RlYWQKLStvZiBvdmVyd3JpdGluZyBpdC4gIFRoaXMgb3B0aW9uIGlzIG9ubHkgdXNlZnVsIHdpdGggdGhlIGA8U0FNUD4tbzwvU0FNUD4nIG9yCi0rYDxTQU1QPi0tb3V0cHV0PC9TQU1QPicgb3B0aW9uLgotKzwvREw+Ci0rPFA+Ci0rCi0rPEEgTkFNRT0iRXhhbXBsZXMiPjwvQT4KLSs8SFIgU0laRT0iNiI+Ci0rPEEgTkFNRT0iU0VDOSI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDOCI+ICZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMTAiPiAmZ3Q7IDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMSI+ICZsdDsmbHQ7IDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPiBVcCA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WyAmZ3Q7Jmd0OyBdPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+VG9wPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0NvbnRlbnRzIj5Db250ZW50czwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bSW5kZXhdPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19BYm91dCI+ID8gPC9BPl08L1REPgotKzwvVFI+PC9UQUJMRT4KLSs8SDI+IDEuNCBFeGFtcGxlcyA8L0gyPgotKzwhLS1kb2NpZDo6U0VDOTo6LS0+Ci0rPFA+Ci0rCi0rUnVuIHRoZSBjb21tYW5kIGA8U0FNUD53YyAvZXRjL2hvc3RzPC9TQU1QPicgYW5kIHNob3cgdGhlIGRlZmF1bHQgaW5mb3JtYXRpb246Ci0rPC9QPgotKzxQPgotKwotKzxUQUJMRT48dHI+PHRkPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPWV4YW1wbGU+PHByZT5lZyQgdGltZSB3YyAvZXRjL2hvc3RzCi0rICAgICAgMzUgICAgIDExMSAgICAxMTM0IC9ldGMvaG9zdHMKLSswLjAwdXNlciAwLjAxc3lzdGVtIDA6MDAuMDRlbGFwc2VkIDI1JUNQVSAoMGF2Z3RleHQrMGF2Z2RhdGEgMG1heHJlc2lkZW50KWsKLSsxaW5wdXRzKzFvdXRwdXRzICgwbWFqb3IrMG1pbm9yKXBhZ2VmYXVsdHMgMHN3YXBzCi0rPC9wcmU+PC90ZD48L3RyPjwvdGFibGU+PFA+Ci0rCi0rUnVuIHRoZSBjb21tYW5kIGA8U0FNUD5scyAtRnM8L1NBTVA+JyBhbmQgc2hvdyBqdXN0IHRoZSB1c2VyLCBzeXN0ZW0sIGFuZAotK3dhbGwtY2xvY2sgdGltZToKLSs8L1A+Ci0rPFA+Ci0rCi0rPFRBQkxFPjx0cj48dGQ+Jm5ic3A7PC90ZD48dGQgY2xhc3M9ZXhhbXBsZT48cHJlPmVnJCB0aW1lIC1mICZxdW90O1x0JUUgcmVhbCxcdCVVIHVzZXIsXHQlUyBzeXMmcXVvdDsgbHMgLUZzCi0rdG90YWwgMTYKLSsxIGFjY291bnQvICAgICAgMSBkYi8gICAgICAgICAgIDEgbWFpbC8gICAgICAgICAxIHJ1bi8KLSsxIGJhY2t1cHMvICAgICAgMSBlbWFjcy8gICAgICAgIDEgbXNncy8gICAgICAgICAxIHJ3aG8vCi0rMSBjcmFzaC8gICAgICAgIDEgZ2FtZXMvICAgICAgICAxIHByZXNlcnZlLyAgICAgMSBzcG9vbC8KLSsxIGNyb24vICAgICAgICAgMSBsb2cvICAgICAgICAgIDEgcXVvdGFzLyAgICAgICAxIHRtcC8KLSsgICAgICAgIDA6MDAuMDMgcmVhbCwgICAwLjAwIHVzZXIsICAgICAgMC4wMSBzeXMKLSs8L3ByZT48L3RkPjwvdHI+PC90YWJsZT48UD4KLSsKLStFZGl0IHRoZSBmaWxlIGA8VFQ+LmJhc2hyYzwvVFQ+JyBhbmQgaGF2ZSA8Q09ERT50aW1lPC9DT0RFPiBhcHBlbmQgdGhlIGVsYXBzZWQgdGltZQotK2FuZCBudW1iZXIgb2Ygc2lnbmFscyB0byB0aGUgZmlsZSBgPFRUPmxvZzwvVFQ+JywgcmVhZGluZyB0aGUgZm9ybWF0IHN0cmluZwotK2Zyb20gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIDxDT0RFPlRJTUU8L0NPREU+OgotKzwvUD4KLSs8UD4KLSsKLSs8VEFCTEU+PHRyPjx0ZD4mbmJzcDs8L3RkPjx0ZCBjbGFzcz1leGFtcGxlPjxwcmU+ZWckIGV4cG9ydCBUSU1FPSZxdW90O1x0JUUsXHQlayZxdW90OyAjIElmIHVzaW5nIGJhc2ggb3Iga3NoCi0rZWckIHNldGVudiBUSU1FICZxdW90O1x0JUUsXHQlayZxdW90OyAjIElmIHVzaW5nIGNzaCBvciB0Y3NoCi0rZWckIHRpbWUgLWEgLW8gbG9nIGVtYWNzIC5iYXNocmMKLStlZyQgY2F0IGxvZwotKyAgICAgICAgMDoxNi41NSwgICAgICAgIDcyNgotKzwvcHJlPjwvdGQ+PC90cj48L3RhYmxlPjxQPgotKwotK1J1biB0aGUgY29tbWFuZCBgPFNBTVA+c2xlZXAgNDwvU0FNUD4nIGFuZCBzaG93IGFsbCBvZiB0aGUgaW5mb3JtYXRpb24gYWJvdXQgaXQKLSt2ZXJib3NlbHk6Ci0rPC9QPgotKzxQPgotKwotKzxUQUJMRT48dHI+PHRkPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPWV4YW1wbGU+PHByZT5lZyQgdGltZSAtdiBzbGVlcCA0Ci0rICAgICAgICBDb21tYW5kIGJlaW5nIHRpbWVkOiAmcXVvdDtzbGVlcCA0JnF1b3Q7Ci0rICAgICAgICBVc2VyIHRpbWUgKHNlY29uZHMpOiAwLjAwCi0rICAgICAgICBTeXN0ZW0gdGltZSAoc2Vjb25kcyk6IDAuMDUKLSsgICAgICAgIFBlcmNlbnQgb2YgQ1BVIHRoaXMgam9iIGdvdDogMSUKLSsgICAgICAgIEVsYXBzZWQgKHdhbGwgY2xvY2spIHRpbWUgKGg6bW06c3Mgb3IgbTpzcyk6IDA6MDQuMjYKLSsgICAgICAgIEF2ZXJhZ2Ugc2hhcmVkIHRleHQgc2l6ZSAoa2J5dGVzKTogMzYKLSsgICAgICAgIEF2ZXJhZ2UgdW5zaGFyZWQgZGF0YSBzaXplIChrYnl0ZXMpOiAyNAotKyAgICAgICAgQXZlcmFnZSBzdGFjayBzaXplIChrYnl0ZXMpOiAwCi0rICAgICAgICBBdmVyYWdlIHRvdGFsIHNpemUgKGtieXRlcyk6IDYwCi0rICAgICAgICBNYXhpbXVtIHJlc2lkZW50IHNldCBzaXplIChrYnl0ZXMpOiAzMgotKyAgICAgICAgQXZlcmFnZSByZXNpZGVudCBzZXQgc2l6ZSAoa2J5dGVzKTogMjQKLSsgICAgICAgIE1ham9yIChyZXF1aXJpbmcgSS9PKSBwYWdlIGZhdWx0czogMwotKyAgICAgICAgTWlub3IgKHJlY2xhaW1pbmcgYSBmcmFtZSkgcGFnZSBmYXVsdHM6IDAKLSsgICAgICAgIFZvbHVudGFyeSBjb250ZXh0IHN3aXRjaGVzOiAxMQotKyAgICAgICAgSW52b2x1bnRhcnkgY29udGV4dCBzd2l0Y2hlczogMAotKyAgICAgICAgU3dhcHM6IDAKLSsgICAgICAgIEZpbGUgc3lzdGVtIGlucHV0czogMwotKyAgICAgICAgRmlsZSBzeXN0ZW0gb3V0cHV0czogMQotKyAgICAgICAgU29ja2V0IG1lc3NhZ2VzIHNlbnQ6IDAKLSsgICAgICAgIFNvY2tldCBtZXNzYWdlcyByZWNlaXZlZDogMAotKyAgICAgICAgU2lnbmFscyBkZWxpdmVyZWQ6IDEKLSsgICAgICAgIFBhZ2Ugc2l6ZSAoYnl0ZXMpOiA0MDk2Ci0rICAgICAgICBFeGl0IHN0YXR1czogMAotKzwvcHJlPjwvdGQ+PC90cj48L3RhYmxlPjxQPgotKwotKzxBIE5BTUU9IkFjY3VyYWN5Ij48L0E+Ci0rPEhSIFNJWkU9IjYiPgotKzxBIE5BTUU9IlNFQzEwIj48L0E+Ci0rPFRBQkxFIENFTExQQURESU5HPTEgQ0VMTFNQQUNJTkc9MSBCT1JERVI9MD4KLSs8VFI+PFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUM5Ij4gJmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxMSI+ICZndDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4gJmx0OyZsdDsgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+IFVwIDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsmZ3Q7IF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj5Ub3A8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQ29udGVudHMiPkNvbnRlbnRzPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPltJbmRleF08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0Fib3V0Ij4gPyA8L0E+XTwvVEQ+Ci0rPC9UUj48L1RBQkxFPgotKzxIMj4gMS41IEFjY3VyYWN5IDwvSDI+Ci0rPCEtLWRvY2lkOjpTRUMxMDo6LS0+Ci0rPFA+Ci0rCi0rVGhlIGVsYXBzZWQgdGltZSBpcyBub3QgY29sbGVjdGVkIGF0b21pY2FsbHkgd2l0aCB0aGUgZXhlY3V0aW9uIG9mIHRoZQotK3Byb2dyYW07IGFzIGEgcmVzdWx0LCBpbiBiaXphcnJlIGNpcmN1bXN0YW5jZXMgKGlmIHRoZSA8Q09ERT50aW1lPC9DT0RFPgotK2NvbW1hbmQgZ2V0cyBzdG9wcGVkIG9yIHN3YXBwZWQgb3V0IGluIGJldHdlZW4gd2hlbiB0aGUgcHJvZ3JhbSBiZWluZwotK3RpbWVkIGV4aXRzIGFuZCB3aGVuIDxDT0RFPnRpbWU8L0NPREU+IGNhbGN1bGF0ZXMgaG93IGxvbmcgaXQgdG9vayB0byBydW4pLCBpdAotK2NvdWxkIGJlIG11Y2ggbGFyZ2VyIHRoYW4gdGhlIGFjdHVhbCBleGVjdXRpb24gdGltZS4KLSs8L1A+Ci0rPFA+Ci0rCi0rV2hlbiB0aGUgcnVubmluZyB0aW1lIG9mIGEgY29tbWFuZCBpcyB2ZXJ5IG5lYXJseSB6ZXJvLCBzb21lIHZhbHVlcwotKyhlLmcuLCB0aGUgcGVyY2VudGFnZSBvZiBDUFUgdXNlZCkgbWF5IGJlIHJlcG9ydGVkIGFzIGVpdGhlciB6ZXJvICh3aGljaAotK2lzIHdyb25nKSBvciBhIHF1ZXN0aW9uIG1hcmsuCi0rPC9QPgotKzxQPgotKwotK01vc3QgaW5mb3JtYXRpb24gc2hvd24gYnkgPENPREU+dGltZTwvQ09ERT4gaXMgZGVyaXZlZCBmcm9tIHRoZSA8Q09ERT53YWl0MzwvQ09ERT4KLStzeXN0ZW0gY2FsbC4gIFRoZSBudW1iZXJzIGFyZSBvbmx5IGFzIGdvb2QgYXMgdGhvc2UgcmV0dXJuZWQgYnkKLSs8Q09ERT53YWl0MzwvQ09ERT4uICBNYW55IHN5c3RlbXMgZG8gbm90IG1lYXN1cmUgYWxsIG9mIHRoZSByZXNvdXJjZXMgdGhhdAotKzxDT0RFPnRpbWU8L0NPREU+IGNhbiByZXBvcnQgb247IHRob3NlIHJlc291cmNlcyBhcmUgcmVwb3J0ZWQgYXMgemVyby4gIFRoZQotK3N5c3RlbXMgdGhhdCBtZWFzdXJlIG1vc3Qgb3IgYWxsIG9mIHRoZSByZXNvdXJjZXMgYXJlIGJhc2VkIG9uIDQuMiBvcgotKzQuM0JTRC4gIExhdGVyIEJTRCByZWxlYXNlcyB1c2UgZGlmZmVyZW50IG1lbW9yeSBtYW5hZ2VtZW50IGNvZGUgdGhhdAotK21lYXN1cmVzIGZld2VyIHJlc291cmNlcy4KLSs8L1A+Ci0rPFA+Ci0rCi0rT24gc3lzdGVtcyB0aGF0IGRvIG5vdCBoYXZlIGEgPENPREU+d2FpdDM8L0NPREU+IGNhbGwgdGhhdCByZXR1cm5zIHN0YXR1cwotK2luZm9ybWF0aW9uLCB0aGUgPENPREU+dGltZXM8L0NPREU+IHN5c3RlbSBjYWxsIGlzIHVzZWQgaW5zdGVhZC4gIEl0IHByb3ZpZGVzCi0rbXVjaCBsZXNzIGluZm9ybWF0aW9uIHRoYW4gPENPREU+d2FpdDM8L0NPREU+LCBzbyBvbiB0aG9zZSBzeXN0ZW1zIDxDT0RFPnRpbWU8L0NPREU+Ci0rcmVwb3J0cyBtb3N0IG9mIHRoZSByZXNvdXJjZXMgYXMgemVyby4KLSs8L1A+Ci0rPFA+Ci0rCi0rVGhlIGA8U0FNUD4lSTwvU0FNUD4nIGFuZCBgPFNBTVA+JU88L1NBTVA+JyB2YWx1ZXMgYXJlIGFsbGVnZWRseSBvbmx5ICZxdW90O3JlYWwmcXVvdDsgaW5wdXQKLSthbmQgb3V0cHV0IGFuZCBkbyBub3QgaW5jbHVkZSB0aG9zZSBzdXBwbGllZCBieSBjYWNoaW5nIGRldmljZXMuICBUaGUKLSttZWFuaW5nIG9mICZxdW90O3JlYWwmcXVvdDsgSS9PIHJlcG9ydGVkIGJ5IGA8U0FNUD4lSTwvU0FNUD4nIGFuZCBgPFNBTVA+JU88L1NBTVA+JyBtYXkgYmUKLSttdWRkbGVkIGZvciB3b3Jrc3RhdGlvbnMsIGVzcGVjaWFsbHkgZGlza2xlc3Mgb25lcy4KLSs8L1A+Ci0rPFA+Ci0rCi0rPEEgTkFNRT0iSW52b2tpbmcgdGltZSI+PC9BPgotKzxIUiBTSVpFPSI2Ij4KLSs8QSBOQU1FPSJTRUMxMSI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDMTAiPiAmbHQ7IDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bICZndDsgXTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQzEiPiAmbHQ7Jmx0OyA8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfVG9wIj4gVXAgPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPlsgJmd0OyZndDsgXTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj4gJm5ic3A7IDxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPiAmbmJzcDsgPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+ICZuYnNwOyA8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Ub3AiPlRvcDwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19Db250ZW50cyI+Q29udGVudHM8L0E+XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+W0luZGV4XTwvVEQ+Ci0rPFREIFZBTElHTj0iTUlERExFIiBBTElHTj0iTEVGVCI+WzxBIEhSRUY9InRpbWUuaHRtbCNTRUNfQWJvdXQiPiA/IDwvQT5dPC9URD4KLSs8L1RSPjwvVEFCTEU+Ci0rPEgyPiAxLjYgUnVubmluZyB0aGUgPENPREU+dGltZTwvQ09ERT4gQ29tbWFuZCA8L0gyPgotKzwhLS1kb2NpZDo6U0VDMTE6Oi0tPgotKzxQPgotKwotK1RoZSBmb3JtYXQgb2YgdGhlIDxDT0RFPnRpbWU8L0NPREU+IGNvbW1hbmQgaXM6Ci0rPC9QPgotKzxQPgotKwotKzxUQUJMRT48dHI+PHRkPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPWV4YW1wbGU+PHByZT50aW1lIFtvcHRpb248c21hbGw+Li4uPC9zbWFsbD5dIDxWQVI+Y29tbWFuZDwvVkFSPiBbPFZBUj5hcmc8L1ZBUj48c21hbGw+Li4uPC9zbWFsbD5dCi0rPC9wcmU+PC90ZD48L3RyPjwvdGFibGU+PFA+Ci0rCi0rPEEgTkFNRT0iSURYNSI+PC9BPgotKzxDT0RFPnRpbWU8L0NPREU+IHJ1bnMgdGhlIHByb2dyYW0gPFZBUj5jb21tYW5kPC9WQVI+LCB3aXRoIGFueSBnaXZlbiBhcmd1bWVudHMKLSs8VkFSPmFyZzwvVkFSPjxzbWFsbD4uLi48L3NtYWxsPi4gIFdoZW4gPFZBUj5jb21tYW5kPC9WQVI+IGZpbmlzaGVzLCA8Q09ERT50aW1lPC9DT0RFPiBkaXNwbGF5cwotK2luZm9ybWF0aW9uIGFib3V0IHJlc291cmNlcyB1c2VkIGJ5IDxWQVI+Y29tbWFuZDwvVkFSPiAob24gdGhlIHN0YW5kYXJkIGVycm9yCi0rb3V0cHV0LCBieSBkZWZhdWx0KS4gIElmIDxWQVI+Y29tbWFuZDwvVkFSPiBleGl0cyB3aXRoIG5vbi16ZXJvIHN0YXR1cyBvciBpcwotK3Rlcm1pbmF0ZWQgYnkgYSBzaWduYWwsIDxDT0RFPnRpbWU8L0NPREU+IGRpc3BsYXlzIGEgd2FybmluZyBtZXNzYWdlIGFuZCB0aGUKLStleGl0IHN0YXR1cyBvciBzaWduYWwgbnVtYmVyLgotKzwvUD4KLSs8UD4KLSsKLStPcHRpb25zIHRvIDxDT0RFPnRpbWU8L0NPREU+IG11c3QgYXBwZWFyIG9uIHRoZSBjb21tYW5kIGxpbmUgYmVmb3JlCi0rPFZBUj5jb21tYW5kPC9WQVI+LiAgQW55dGhpbmcgb24gdGhlIGNvbW1hbmQgbGluZSBhZnRlciA8VkFSPmNvbW1hbmQ8L1ZBUj4gaXMKLStwYXNzZWQgYXMgYXJndW1lbnRzIHRvIDxWQVI+Y29tbWFuZDwvVkFSPi4KLSs8L1A+Ci0rPFA+Ci0rCi0rPC9QPgotKzxETCBDT01QQUNUPgotKzxEVD48Q09ERT4tbyA8VkFSPmZpbGU8L1ZBUj48L0NPREU+Ci0rPEREPjxEVD48Q09ERT4tLW91dHB1dD08VkFSPmZpbGU8L1ZBUj48L0NPREU+Ci0rPEREPldyaXRlIHRoZSByZXNvdXJjZSB1c2Ugc3RhdGlzdGljcyB0byA8VkFSPmZpbGU8L1ZBUj4uCi0rPFA+Ci0rCi0rPC9QPgotKzxEVD48Q09ERT4tYTwvQ09ERT4KLSs8REQ+PERUPjxDT0RFPi0tYXBwZW5kPC9DT0RFPgotKzxERD48RU0+QXBwZW5kPC9FTT4gdGhlIHJlc291cmNlIHVzZSBpbmZvcm1hdGlvbiB0byB0aGUgb3V0cHV0IGZpbGUgaW5zdGVhZAotK29mIG92ZXJ3cml0aW5nIGl0LgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+LWYgPFZBUj5mb3JtYXQ8L1ZBUj48L0NPREU+Ci0rPEREPjxEVD48Q09ERT4tLWZvcm1hdD08VkFSPmZvcm1hdDwvVkFSPjwvQ09ERT4KLSs8REQ+VXNlIDxWQVI+Zm9ybWF0PC9WQVI+IGFzIHRoZSBmb3JtYXQgc3RyaW5nLgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+LS1oZWxwPC9DT0RFPgotKzxERD5QcmludCBhIHN1bW1hcnkgb2YgdGhlIGNvbW1hbmQgbGluZSBvcHRpb25zIHRvIDxDT0RFPnRpbWU8L0NPREU+IGFuZCBleGl0LgotKzxQPgotKwotKzwvUD4KLSs8RFQ+PENPREU+LXA8L0NPREU+Ci0rPEREPjxEVD48Q09ERT4tLXBvcnRhYmlsaXR5PC9DT0RFPgotKzxERD5Vc2UgdGhlIFBPU0lYIGZvcm1hdC4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPi12PC9DT0RFPgotKzxERD48RFQ+PENPREU+LS12ZXJib3NlPC9DT0RFPgotKzxERD48QSBOQU1FPSJJRFg2Ij48L0E+Ci0rVXNlIHRoZSBidWlsdC1pbiB2ZXJib3NlIGZvcm1hdC4KLSs8UD4KLSsKLSs8L1A+Ci0rPERUPjxDT0RFPi1WPC9DT0RFPgotKzxERD48RFQ+PENPREU+LS12ZXJzaW9uPC9DT0RFPgotKzxERD48QSBOQU1FPSJJRFg3Ij48L0E+Ci0rUHJpbnQgdGhlIHZlcnNpb24gbnVtYmVyIG9mIDxDT0RFPnRpbWU8L0NPREU+IGFuZCBleGl0LgotKzwvREw+Ci0rPFA+Ci0rCi0rPEhSIFNJWkU9IjYiPgotKzxBIE5BTUU9IlNFQ19Db250ZW50cyI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+VG9wPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0NvbnRlbnRzIj5Db250ZW50czwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bSW5kZXhdPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19BYm91dCI+ID8gPC9BPl08L1REPgotKzwvVFI+PC9UQUJMRT4KLSs8SDE+VGFibGUgb2YgQ29udGVudHM8L0gxPgotKzxCTE9DS1FVT1RFPgotKzxBIE5BTUU9IlRPQzEiIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4xLiBNZWFzdXJpbmcgUHJvZ3JhbSBSZXNvdXJjZSBVc2U8L0E+Ci0rPEJSPgotKzxCTE9DS1FVT1RFPgotKzxBIE5BTUU9IlRPQzIiIEhSRUY9InRpbWUuaHRtbCNTRUMyIj4xLjEgU2V0dGluZyB0aGUgT3V0cHV0IEZvcm1hdDwvQT4KLSs8QlI+Ci0rPEEgTkFNRT0iVE9DMyIgSFJFRj0idGltZS5odG1sI1NFQzMiPjEuMiBUaGUgRm9ybWF0IFN0cmluZzwvQT4KLSs8QlI+Ci0rPEJMT0NLUVVPVEU+Ci0rPEEgTkFNRT0iVE9DNCIgSFJFRj0idGltZS5odG1sI1NFQzQiPjEuMi4xIFRpbWUgUmVzb3VyY2VzPC9BPgotKzxCUj4KLSs8QSBOQU1FPSJUT0M1IiBIUkVGPSJ0aW1lLmh0bWwjU0VDNSI+MS4yLjIgTWVtb3J5IFJlc291cmNlczwvQT4KLSs8QlI+Ci0rPEEgTkFNRT0iVE9DNiIgSFJFRj0idGltZS5odG1sI1NFQzYiPjEuMi4zIEkvTyBSZXNvdXJjZXM8L0E+Ci0rPEJSPgotKzxBIE5BTUU9IlRPQzciIEhSRUY9InRpbWUuaHRtbCNTRUM3Ij4xLjIuNCBDb21tYW5kIEluZm88L0E+Ci0rPEJSPgotKzwvQkxPQ0tRVU9URT4KLSs8QSBOQU1FPSJUT0M4IiBIUkVGPSJ0aW1lLmh0bWwjU0VDOCI+MS4zIFJlZGlyZWN0aW5nIE91dHB1dDwvQT4KLSs8QlI+Ci0rPEEgTkFNRT0iVE9DOSIgSFJFRj0idGltZS5odG1sI1NFQzkiPjEuNCBFeGFtcGxlczwvQT4KLSs8QlI+Ci0rPEEgTkFNRT0iVE9DMTAiIEhSRUY9InRpbWUuaHRtbCNTRUMxMCI+MS41IEFjY3VyYWN5PC9BPgotKzxCUj4KLSs8QSBOQU1FPSJUT0MxMSIgSFJFRj0idGltZS5odG1sI1NFQzExIj4xLjYgUnVubmluZyB0aGUgPENPREU+dGltZTwvQ09ERT4gQ29tbWFuZDwvQT4KLSs8QlI+Ci0rPC9CTE9DS1FVT1RFPgotKzwvQkxPQ0tRVU9URT4KLSs8SFIgU0laRT0xPgotKzxBIE5BTUU9IlNFQ19PVkVSVklFVyI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+VG9wPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0NvbnRlbnRzIj5Db250ZW50czwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bSW5kZXhdPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19BYm91dCI+ID8gPC9BPl08L1REPgotKzwvVFI+PC9UQUJMRT4KLSs8SDE+U2hvcnQgVGFibGUgb2YgQ29udGVudHM8L0gxPgotKzxCTE9DS1FVT1RFPgotKzxBIE5BTUU9IlRPQzEiIEhSRUY9InRpbWUuaHRtbCNTRUMxIj4xLiBNZWFzdXJpbmcgUHJvZ3JhbSBSZXNvdXJjZSBVc2U8L0E+Ci0rPEJSPgotKwotKzwvQkxPQ0tRVU9URT4KLSs8SFIgU0laRT0xPgotKzxBIE5BTUU9IlNFQ19BYm91dCI+PC9BPgotKzxUQUJMRSBDRUxMUEFERElORz0xIENFTExTUEFDSU5HPTEgQk9SREVSPTA+Ci0rPFRSPjxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX1RvcCI+VG9wPC9BPl08L1REPgotKzxURCBWQUxJR049Ik1JRERMRSIgQUxJR049IkxFRlQiPls8QSBIUkVGPSJ0aW1lLmh0bWwjU0VDX0NvbnRlbnRzIj5Db250ZW50czwvQT5dPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bSW5kZXhdPC9URD4KLSs8VEQgVkFMSUdOPSJNSURETEUiIEFMSUdOPSJMRUZUIj5bPEEgSFJFRj0idGltZS5odG1sI1NFQ19BYm91dCI+ID8gPC9BPl08L1REPgotKzwvVFI+PC9UQUJMRT4KLSs8SDE+QWJvdXQgdGhpcyBkb2N1bWVudDwvSDE+Ci0rVGhpcyBkb2N1bWVudCB3YXMgZ2VuZXJhdGVkCi0rYnkgCi0rdXNpbmcgPEEgSFJFRj0iaHR0cDovL3RleGkyaHRtbC5jdnNob21lLm9yZyI+PEk+dGV4aTJodG1sPC9JPjwvQT4KLSs8UD48L1A+Ci0rVGhlIGJ1dHRvbnMgaW4gdGhlIG5hdmlnYXRpb24gcGFuZWxzIGhhdmUgdGhlIGZvbGxvd2luZyBtZWFuaW5nOgotKzxQPjwvUD4KLSs8dGFibGUgYm9yZGVyID0gIjEiPgotKzxUUj4KLSs8VEg+IEJ1dHRvbiA8L1RIPgotKzxUSD4gTmFtZSA8L1RIPgotKzxUSD4gR28gdG8gPC9USD4KLSs8VEg+IEZyb20gMS4yLjMgZ28gdG88L1RIPgotKzwvVFI+Ci0rPFRSPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLSsgWyAmbHQ7IF0gPC9URD4KLSs8VEQgQUxJR049IkNFTlRFUiI+Ci0rQmFjawotKzwvVEQ+Ci0rPFREPgotK3ByZXZpb3VzIHNlY3Rpb24gaW4gcmVhZGluZyBvcmRlcgotKzwvVEQ+Ci0rPFREPgotKzEuMi4yCi0rPC9URD4KLSs8L1RSPgotKzxUUj4KLSs8VEQgQUxJR049IkNFTlRFUiI+Ci0rIFsgJmd0OyBdIDwvVEQ+Ci0rPFREIEFMSUdOPSJDRU5URVIiPgotK0ZvcndhcmQKLSs8L1REPgotKzxURD4KLStuZXh0IHNlY3Rpb24gaW4gcmVhZGluZyBvcmRlcgotKzwvVEQ+Ci0rPFREPgotKzEuMi40Ci0rPC9URD4KLSs8L1RSPgotKzxUUj4KLSs8VEQgQUxJR049IkNFTlRFUiI+Ci0rIFsgJmx0OyZsdDsgXSA8L1REPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLStGYXN0QmFjawotKzwvVEQ+Ci0rPFREPgotK2JlZ2lubmluZyBvZiB0aGlzIGNoYXB0ZXIgb3IgcHJldmlvdXMgY2hhcHRlcgotKzwvVEQ+Ci0rPFREPgotKzEKLSs8L1REPgotKzwvVFI+Ci0rPFRSPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLSsgWyBVcCBdIDwvVEQ+Ci0rPFREIEFMSUdOPSJDRU5URVIiPgotK1VwCi0rPC9URD4KLSs8VEQ+Ci0rdXAgc2VjdGlvbgotKzwvVEQ+Ci0rPFREPgotKzEuMgotKzwvVEQ+Ci0rPC9UUj4KLSs8VFI+Ci0rPFREIEFMSUdOPSJDRU5URVIiPgotKyBbICZndDsmZ3Q7IF0gPC9URD4KLSs8VEQgQUxJR049IkNFTlRFUiI+Ci0rRmFzdEZvcndhcmQKLSs8L1REPgotKzxURD4KLStuZXh0IGNoYXB0ZXIKLSs8L1REPgotKzxURD4KLSsyCi0rPC9URD4KLSs8L1RSPgotKzxUUj4KLSs8VEQgQUxJR049IkNFTlRFUiI+Ci0rIFtUb3BdIDwvVEQ+Ci0rPFREIEFMSUdOPSJDRU5URVIiPgotK1RvcAotKzwvVEQ+Ci0rPFREPgotK2NvdmVyICh0b3ApIG9mIGRvY3VtZW50Ci0rPC9URD4KLSs8VEQ+Ci0rICZuYnNwOyAKLSs8L1REPgotKzwvVFI+Ci0rPFRSPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLSsgW0NvbnRlbnRzXSA8L1REPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLStDb250ZW50cwotKzwvVEQ+Ci0rPFREPgotK3RhYmxlIG9mIGNvbnRlbnRzCi0rPC9URD4KLSs8VEQ+Ci0rICZuYnNwOyAKLSs8L1REPgotKzwvVFI+Ci0rPFRSPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLSsgW0luZGV4XSA8L1REPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLStJbmRleAotKzwvVEQ+Ci0rPFREPgotK2NvbmNlcHQgaW5kZXgKLSs8L1REPgotKzxURD4KLSsgJm5ic3A7IAotKzwvVEQ+Ci0rPC9UUj4KLSs8VFI+Ci0rPFREIEFMSUdOPSJDRU5URVIiPgotKyBbID8gXSA8L1REPgotKzxURCBBTElHTj0iQ0VOVEVSIj4KLStBYm91dAotKzwvVEQ+Ci0rPFREPgotK3RoaXMgcGFnZQotKzwvVEQ+Ci0rPFREPgotKyAmbmJzcDsgCi0rPC9URD4KLSs8L1RSPgotKzwvVEFCTEU+Ci0rICAgIDxQPgotKyAgICAgIHdoZXJlIHRoZSA8U1RST05HPiBFeGFtcGxlIDwvU1RST05HPiBhc3N1bWVzIHRoYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24KLSsgICAgICBpcyBhdCA8U1RST05HPiBTdWJzdWJzZWN0aW9uIE9uZS1Ud28tVGhyZWUgPC9TVFJPTkc+IG9mIGEgZG9jdW1lbnQgb2YKLSsgICAgICB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTo8L1A+Ci0rICAgIDxVTD4KLSsgICAgICA8TEk+IDEuIFNlY3Rpb24gT25lCi0rICAgICAgICA8VUw+Ci0rICAgICAgICAgIDxMST4xLjEgU3Vic2VjdGlvbiBPbmUtT25lCi0rICAgICAgICAgICAgPFVMPgotKyAgICAgICAgICAgICAgPExJPi4uLjwvTEk+Ci0rICAgICAgICAgICAgPC9VTD4KLSsgICAgICAgICAgPExJPjEuMiBTdWJzZWN0aW9uIE9uZS1Ud28KLSsgICAgICAgICAgICA8VUw+Ci0rICAgICAgICAgICAgICA8TEk+MS4yLjEgU3Vic3Vic2VjdGlvbiBPbmUtVHdvLU9uZTwvTEk+Ci0rICAgICAgICAgICAgICA8TEk+MS4yLjIgU3Vic3Vic2VjdGlvbiBPbmUtVHdvLVR3bzwvTEk+Ci0rICAgICAgICAgICAgICA8TEk+MS4yLjMgU3Vic3Vic2VjdGlvbiBPbmUtVHdvLVRocmVlICZuYnNwOyAmbmJzcDsKLSsgICAgICAgICAgICAgICAgPFNUUk9ORz4mbHQ7PT0gQ3VycmVudCBQb3NpdGlvbiA8L1NUUk9ORz48L0xJPgotKyAgICAgICAgICAgICAgPExJPjEuMi40IFN1YnN1YnNlY3Rpb24gT25lLVR3by1Gb3VyPC9MST4KLSsgICAgICAgICAgICA8L1VMPgotKyAgICAgICAgICA8L0xJPgotKyAgICAgICAgICA8TEk+MS4zIFN1YnNlY3Rpb24gT25lLVRocmVlCi0rICAgICAgICAgICAgPFVMPgotKyAgICAgICAgICAgICAgPExJPi4uLjwvTEk+Ci0rICAgICAgICAgICAgPC9VTD4KLSsgICAgICAgICAgPC9MST4KLSsgICAgICAgICAgPExJPjEuNCBTdWJzZWN0aW9uIE9uZS1Gb3VyPC9MST4KLSsgICAgICAgIDwvVUw+Ci0rICAgICAgPC9MST4KLSsgICAgPC9VTD4KLSsKLSs8SFIgU0laRT0xPgotKzxCUj4KLSs8Rk9OVCBTSVpFPSItMSI+Ci0rVGhpcyBkb2N1bWVudCB3YXMgZ2VuZXJhdGVkCi0rYnkgPEk+cm9vdDwvST4gb24gPEk+U2VwdGVtYmVyLCAxIDIwMDM8L0k+Ci0rdXNpbmcgPEEgSFJFRj0iaHR0cDovL3RleGkyaHRtbC5jdnNob21lLm9yZyI+PEk+dGV4aTJodG1sPC9JPjwvQT4KLSs8L0ZPTlQ+Ci0rCi0rPC9CT0RZPgotKzwvSFRNTD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmIyMGQ3Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWUvdGltZS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1TVU1NQVJZID0gIlRvb2wgdGhhdCBtZWFzdXJlcyBDUFUgcmVzb3VyY2VzIgotREVTQ1JJUFRJT04gPSAidGltZSBtZWFzdXJlcyBtYW55IG9mIHRoZSBDUFUgcmVzb3VyY2VzLCBzdWNoIGFzIHRpbWUgYW5kIFwKLW1lbW9yeSwgdGhhdCBvdGhlciBwcm9ncmFtcyB1c2UuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3RpbWUvIgotU0VDVElPTiA9ICJ1dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGNhNDNjYmM4NDJjMjMzNmU4MzU5MjZjMjE2NmMyOGIiCi0KLWluaGVyaXQgdGV4aW5mbyB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gInRpbWUiCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lXzEuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lXzEuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJjNTM1My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWUvdGltZV8xLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIHRpbWUuaW5jCi0KLVBSID0gInIyIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vdGltZS90aW1lLSR7UFZ9LnRhci5neiBcCi0JICAgZmlsZTovL2RlYmlhbi5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gImUzOGQyYjhiMzRiMWNhMjU5Y2Y3YjA1M2NhYWMzMmIzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImUzN2VhNzlhMjUzYmY4NWE4NWFkYTJmN2M2MzJjMTRlNDgxYTVmZDI2MmEzNjJmNmY0ZmQ1OGU2ODYwMTQ5NmQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWUvdGltZV8xLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWUvdGltZV8xLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmIzMTQ3YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lXzEuOC5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIlRvb2wgdGhhdCBtZWFzdXJlcyBDUFUgcmVzb3VyY2VzIgorREVTQ1JJUFRJT04gPSAidGltZSBtZWFzdXJlcyBtYW55IG9mIHRoZSBDUFUgcmVzb3VyY2VzLCBzdWNoIGFzIHRpbWUgYW5kIFwKK21lbW9yeSwgdGhhdCBvdGhlciBwcm9ncmFtcyB1c2UuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3RpbWUvIgorU0VDVElPTiA9ICJ1dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworaW5oZXJpdCB0ZXhpbmZvIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfJHtQTn0gPSAidGltZSIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vdGltZS90aW1lLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjRlMDBkY2I4YzNhYjExYzdjZjVhMGQ2OTg4MjhhYzk2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhhMmY1NDAxNTU5NjFhMzViYTliODRhZWM1ZTc3ZTNhZTM2Yzc0Y2VjYjQ0ODRkYjQ1NTk2MDYwMWI3YTJlMWIiCisKK2luaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS9maWxlcy8wMDAxLUZpeC1NYWtlZmlsZS1xdW90aW5nLWJ1Zy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL2ZpbGVzLzAwMDEtRml4LU1ha2VmaWxlLXF1b3RpbmctYnVnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDlmYTA5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL2ZpbGVzLzAwMDEtRml4LU1ha2VmaWxlLXF1b3RpbmctYnVnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTc0ICswLDAgQEAKLUZyb20gYjUyMGQyMGI4MTIyYTc4M2Y5OWYwODg3NThiNzhkOTI4ZjcwZWUzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdWwgRWdnZXJ0IDxlZ2dlcnRAY3MudWNsYS5lZHU+Ci1EYXRlOiBNb24sIDIzIE9jdCAyMDE3IDExOjQyOjQ1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBNYWtlZmlsZSBxdW90aW5nIGJ1ZwotCi1Qcm9ibGVtIHdpdGggSU5TVEFMTEFSR1MgcmVwb3J0ZWQgYnkgWmVmcmFtIGluOgotaHR0cHM6Ly9tbS5pY2Fubi5vcmcvcGlwZXJtYWlsL3R6LzIwMTctT2N0b2Jlci8wMjUzNjAuaHRtbAotRml4IHNpbWlsYXIgcHJvYmxlbXMgdG9vLgotKiBNYWtlZmlsZSAoWklDX0lOU1RBTEwsIFZBTElEQVRFX0VOViwgQ0MsIGluc3RhbGwpCi0oSU5TVEFMTCwgdmVyc2lvbiwgSU5TVEFMTEFSR1MsIHJpZ2h0X3Bvc2l4LCBwb3NpeF9yaWdodCkKLShjaGVja19wdWJsaWMpOiBVc2UgYXBvc3Ryb3BoZXMgdG8gcHJldmVudCB1bmRlc2lyYWJsZQotaW50ZXJwcmV0YXRpb24gb2YgbmFtZXMgYnkgdGhlIHNoZWxsLiAgV2Ugc3RpbGwgZG8gbm90IHN1cHBvcnQKLWRpcmVjdG9yeSBuYW1lcyBjb250YWluaW5nIGFwb3N0cm9waGVzIG9yIG5ld2xpbmVzLCBidXQgdGhpcyBpcwotZ29vZCBlbm91Z2guCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0qIE5FV1M6IE1lbnRpb24gdGhpcy4KLS0tLQotIE1ha2VmaWxlIHwgNjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIE5FV1MgICAgIHwgIDggKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggYzkyZWRjMC4uOTc2NDljYSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTMxMyw3ICszMTMsNyBAQCBaRkxBR1M9Ci0gCi0gIyBIb3cgdG8gdXNlIHppYyB0byBpbnN0YWxsIHR6IGJpbmFyeSBmaWxlcy4KLSAKLS1aSUNfSU5TVEFMTD0JJChaSUMpIC1kICQoREVTVERJUikkKFRaRElSKSAkKExFQVBTRUNPTkRTKQotK1pJQ19JTlNUQUxMPQkkKFpJQykgLWQgJyQoREVTVERJUikkKFRaRElSKScgJChMRUFQU0VDT05EUykKLSAKLSAjIFRoZSBuYW1lIG9mIGEgUG9zaXgtY29tcGxpYW50ICdhd2snIG9uIHlvdXIgc3lzdGVtLgotIEFXSz0JCWF3awotQEAgLTM0MSw4ICszNDEsOCBAQCBTR01MX0NBVEFMT0dfRklMRVM9IFwKLSBWQUxJREFURSA9IG5zZ21scwotIFZBTElEQVRFX0ZMQUdTID0gLXMgLUIgLXdhbGwgLXduby11bnVzZWQtcGFyYW0KLSBWQUxJREFURV9FTlYgPSBcCi0tICBTR01MX0NBVEFMT0dfRklMRVM9JChTR01MX0NBVEFMT0dfRklMRVMpIFwKLS0gIFNHTUxfU0VBUkNIX1BBVEg9JChTR01MX1NFQVJDSF9QQVRIKSBcCi0rICBTR01MX0NBVEFMT0dfRklMRVM9JyQoU0dNTF9DQVRBTE9HX0ZJTEVTKScgXAotKyAgU0dNTF9TRUFSQ0hfUEFUSD0nJChTR01MX1NFQVJDSF9QQVRIKScgXAotICAgU1BfQ0hBUlNFVF9GSVhFRD1ZRVMgXAotICAgU1BfRU5DT0RJTkc9VVRGLTgKLSAKLUBAIC0zOTYsNyArMzk2LDcgQEAgR1pJUEZMQUdTPQktOW4KLSAjTUFLRT0JCW1ha2UKLSAKLSBjYz0JCWNjCi0tQ0M9CQkkKGNjKSAtRFRaRElSPVwiJChUWkRJUilcIgotK0NDPQkJJChjYykgLURUWkRJUj0nIiQoVFpESVIpIicKLSAKLSBBUj0JCWFyCi0gCi1AQCAtNDczLDI5ICs0NzMsMjkgQEAgYWxsOgkJdHpzZWxlY3QgeWVhcmlzdHlwZSB6aWMgemR1bXAgbGlidHouYSAkKFRBQkRBVEEpCi0gQUxMOgkJYWxsIGRhdGUgJChFTkNISUxBREEpCi0gCi0gaW5zdGFsbDoJYWxsICQoREFUQSkgJChSRURPKSAkKE1BTlMpCi0tCQlta2RpciAtcCAkKERFU1RESVIpJChFVENESVIpICQoREVTVERJUikkKFRaRElSKSBcCi0tCQkJJChERVNURElSKSQoTElCRElSKSBcCi0tCQkJJChERVNURElSKSQoTUFORElSKS9tYW4zICQoREVTVERJUikkKE1BTkRJUikvbWFuNSBcCi0tCQkJJChERVNURElSKSQoTUFORElSKS9tYW44Ci0rCQlta2RpciAtcCAnJChERVNURElSKSQoRVRDRElSKScgJyQoREVTVERJUikkKFRaRElSKScgXAotKwkJCSckKERFU1RESVIpJChMSUJESVIpJyBcCi0rCQkJJyQoREVTVERJUikkKE1BTkRJUikvbWFuMycgJyQoREVTVERJUikkKE1BTkRJUikvbWFuNScgXAotKwkJCSckKERFU1RESVIpJChNQU5ESVIpL21hbjgnCi0gCQkkKFpJQ19JTlNUQUxMKSAtbCAkKExPQ0FMVElNRSkgLXAgJChQT1NJWFJVTEVTKQotLQkJY3AgLWYgJChUQUJEQVRBKSAkKERFU1RESVIpJChUWkRJUikvLgotLQkJY3AgdHpzZWxlY3QgemljIHpkdW1wICQoREVTVERJUikkKEVUQ0RJUikvLgotLQkJY3AgbGlidHouYSAkKERFU1RESVIpJChMSUJESVIpLy4KLS0JCSQoUkFOTElCKSAkKERFU1RESVIpJChMSUJESVIpL2xpYnR6LmEKLS0JCWNwIC1mIG5ld2N0aW1lLjMgbmV3dHpzZXQuMyAkKERFU1RESVIpJChNQU5ESVIpL21hbjMvLgotLQkJY3AgLWYgdHpmaWxlLjUgJChERVNURElSKSQoTUFORElSKS9tYW41Ly4KLS0JCWNwIC1mIHR6c2VsZWN0LjggemR1bXAuOCB6aWMuOCAkKERFU1RESVIpJChNQU5ESVIpL21hbjgvLgotKwkJY3AgLWYgJChUQUJEQVRBKSAnJChERVNURElSKSQoVFpESVIpLy4nCi0rCQljcCB0enNlbGVjdCB6aWMgemR1bXAgJyQoREVTVERJUikkKEVUQ0RJUikvLicKLSsJCWNwIGxpYnR6LmEgJyQoREVTVERJUikkKExJQkRJUikvLicKLSsJCSQoUkFOTElCKSAnJChERVNURElSKSQoTElCRElSKS9saWJ0ei5hJwotKwkJY3AgLWYgbmV3Y3RpbWUuMyBuZXd0enNldC4zICckKERFU1RESVIpJChNQU5ESVIpL21hbjMvLicKLSsJCWNwIC1mIHR6ZmlsZS41ICckKERFU1RESVIpJChNQU5ESVIpL21hbjUvLicKLSsJCWNwIC1mIHR6c2VsZWN0LjggemR1bXAuOCB6aWMuOCAnJChERVNURElSKSQoTUFORElSKS9tYW44Ly4nCi0gCi0gSU5TVEFMTDoJQUxMIGluc3RhbGwgZGF0ZS4xCi0tCQlta2RpciAtcCAkKERFU1RESVIpJChCSU5ESVIpICQoREVTVERJUikkKE1BTkRJUikvbWFuMQotLQkJY3AgZGF0ZSAkKERFU1RESVIpJChCSU5ESVIpLy4KLS0JCWNwIC1mIGRhdGUuMSAkKERFU1RESVIpJChNQU5ESVIpL21hbjEvLgotKwkJbWtkaXIgLXAgJyQoREVTVERJUikkKEJJTkRJUiknICckKERFU1RESVIpJChNQU5ESVIpL21hbjEnCi0rCQljcCBkYXRlICckKERFU1RESVIpJChCSU5ESVIpLy4nCi0rCQljcCAtZiBkYXRlLjEgJyQoREVTVERJUikkKE1BTkRJUikvbWFuMS8uJwotIAotIHZlcnNpb246CSQoVkVSU0lPTl9ERVBTKQotIAkJeyAodHlwZSBnaXQpID4vZGV2L251bGwgMj4mMSAmJiBcCi0gCQkgIFY9YGdpdCBkZXNjcmliZSAtLW1hdGNoICdbMC05XVswLTldWzAtOV1bMC05XVthLXpdKicgXAotIAkJCQktLWFiYnJldj03IC0tZGlydHlgIHx8IFwKLS0JCSAgVj0kKFZFUlNJT04pOyB9ICYmIFwKLSsJCSAgVj0nJChWRVJTSU9OKSc7IH0gJiYgXAotIAkJcHJpbnRmICclc1xuJyAiJCRWIiA+JEAub3V0Ci0gCQltdiAkQC5vdXQgJEAKLSAKLUBAIC01MjksMTIgKzUyOSwxMiBAQCBsZWFwc2Vjb25kczoJJChMRUFQX0RFUFMpCi0gIyBBcmd1bWVudHMgdG8gcGFzcyB0byBzdWJtYWtlcyBvZiBpbnN0YWxsX2RhdGEuCi0gIyBUaGV5IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGxhdGVyIHN1Ym1ha2UgYXJndW1lbnRzLgotIElOU1RBTExBUkdTID0gXAotLSBCQUNLV0FSRD0kKEJBQ0tXQVJEKSBcCi0tIERFU1RESVI9JChERVNURElSKSBcCi0rIEJBQ0tXQVJEPSckKEJBQ0tXQVJEKScgXAotKyBERVNURElSPSckKERFU1RESVIpJyBcCi0gIExFQVBTRUNPTkRTPSckKExFQVBTRUNPTkRTKScgXAotICBQQUNLUkFUREFUQT0nJChQQUNLUkFUREFUQSknIFwKLS0gVFpESVI9JChUWkRJUikgXAotLSBZRUFSSVNUWVBFPSQoWUVBUklTVFlQRSkgXAotKyBUWkRJUj0nJChUWkRJUiknIFwKLSsgWUVBUklTVFlQRT0nJChZRUFSSVNUWVBFKScgXAotICBaSUM9JyQoWklDKScKLSAKLSAjICdtYWtlIGluc3RhbGxfZGF0YScgaW5zdGFsbHMgb25lIHNldCBvZiB0eiBiaW5hcnkgZmlsZXMuCi1AQCAtNTU4LDE2ICs1NTgsMTYgQEAgcmlnaHRfb25seToKLSAjIFlvdSBtdXN0IHJlcGxhY2UgYWxsIG9mICQoVFpESVIpIHRvIHN3aXRjaCBmcm9tIG5vdCB1c2luZyBsZWFwIHNlY29uZHMKLSAjIHRvIHVzaW5nIHRoZW0sIG9yIHZpY2UgdmVyc2EuCi0gcmlnaHRfcG9zaXg6CXJpZ2h0X29ubHkKLS0JCXJtIC1mciAkKERFU1RESVIpJChUWkRJUiktbGVhcHMKLS0JCWxuIC1zICQoVFpESVJfQkFTRU5BTUUpICQoREVTVERJUikkKFRaRElSKS1sZWFwcyB8fCBcCi0tCQkgICQoTUFLRSkgJChJTlNUQUxMQVJHUykgVFpESVI9JChUWkRJUiktbGVhcHMgcmlnaHRfb25seQotLQkJJChNQUtFKSAkKElOU1RBTExBUkdTKSBUWkRJUj0kKFRaRElSKS1wb3NpeCBwb3NpeF9vbmx5Ci0rCQlybSAtZnIgJyQoREVTVERJUikkKFRaRElSKS1sZWFwcycKLSsJCWxuIC1zICckKFRaRElSX0JBU0VOQU1FKScgJyQoREVTVERJUikkKFRaRElSKS1sZWFwcycgfHwgXAotKwkJICAkKE1BS0UpICQoSU5TVEFMTEFSR1MpIFRaRElSPSckKFRaRElSKS1sZWFwcycgcmlnaHRfb25seQotKwkJJChNQUtFKSAkKElOU1RBTExBUkdTKSBUWkRJUj0nJChUWkRJUiktcG9zaXgnIHBvc2l4X29ubHkKLSAKLSBwb3NpeF9yaWdodDoJcG9zaXhfb25seQotLQkJcm0gLWZyICQoREVTVERJUikkKFRaRElSKS1wb3NpeAotLQkJbG4gLXMgJChUWkRJUl9CQVNFTkFNRSkgJChERVNURElSKSQoVFpESVIpLXBvc2l4IHx8IFwKLS0JCSAgJChNQUtFKSAkKElOU1RBTExBUkdTKSBUWkRJUj0kKFRaRElSKS1wb3NpeCBwb3NpeF9vbmx5Ci0tCQkkKE1BS0UpICQoSU5TVEFMTEFSR1MpIFRaRElSPSQoVFpESVIpLWxlYXBzIHJpZ2h0X29ubHkKLSsJCXJtIC1mciAnJChERVNURElSKSQoVFpESVIpLXBvc2l4JwotKwkJbG4gLXMgJyQoVFpESVJfQkFTRU5BTUUpJyAnJChERVNURElSKSQoVFpESVIpLXBvc2l4JyB8fCBcCi0rCQkgICQoTUFLRSkgJChJTlNUQUxMQVJHUykgVFpESVI9JyQoVFpESVIpLXBvc2l4JyBwb3NpeF9vbmx5Ci0rCQkkKE1BS0UpICQoSU5TVEFMTEFSR1MpIFRaRElSPSckKFRaRElSKS1sZWFwcycgcmlnaHRfb25seQotIAotICMgVGhpcyBvYnNvbGVzY2VudCBydWxlIGlzIHByZXNlbnQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGgKLSAjIHR6IHJlbGVhc2VzIDIwMTRnIHRocm91Z2ggMjAxNWcuICBJdCBzaG91bGQgZ28gYXdheSBldmVudHVhbGx5LgotQEAgLTc2NCw3ICs3NjQsNyBAQCBzZXQtdGltZXN0YW1wcy5vdXQ6ICQoRU5DSElMQURBKQotIAotIGNoZWNrX3B1YmxpYzoKLSAJCSQoTUFLRSkgbWFpbnRhaW5lci1jbGVhbgotLQkJJChNQUtFKSAiQ0ZMQUdTPSQoR0NDX0RFQlVHX0ZMQUdTKSIgQUxMCi0rCQkkKE1BS0UpIENGTEFHUz0nJChHQ0NfREVCVUdfRkxBR1MpJyBBTEwKLSAJCW1rZGlyIC1wIHB1YmxpYy5kaXIKLSAJCWZvciBpIGluICQoVERBVEEpIHR6ZGF0YS56aTsgZG8gXAotIAkJICAkKHppYykgLXYgLWQgcHVibGljLmRpciAkJGkgMj4mMSB8fCBleGl0OyBcCi1kaWZmIC0tZ2l0IGEvTkVXUyBiL05FV1MKLWluZGV4IGJkMmJlYzIuLjc1YWIwOTUgMTAwNjQ0Ci0tLS0gYS9ORVdTCi0rKysgYi9ORVdTCi1AQCAtMSw1ICsxLDEzIEBACi0gTmV3cyBmb3IgdGhlIHR6IGRhdGFiYXNlCi0gCi0rVW5yZWxlYXNlZCwgZXhwZXJpbWVudGFsIGNoYW5nZXMKLSsKLSsgIENoYW5nZXMgdG8gYnVpbGQgcHJvY2VkdXJlCi0rCi0rICAgIFRoZSBNYWtlZmlsZSBub3cgcXVvdGVzIHZhbHVlcyBsaWtlIEJBQ0tXQVJEIG1vcmUgY2FyZWZ1bGx5IHdoZW4KLSsgICAgcGFzc2luZyB0aGVtIHRvIHRoZSBzaGVsbC4gIChQcm9ibGVtIHJlcG9ydGVkIGJ5IFplZnJhbS4pCi0rCi0rCi0gUmVsZWFzZSAyMDE3YyAtIDIwMTctMTAtMjAgMTQ6NDk6MzQgLTA3MDAKLSAKLSAgIEJyaWVmbHk6Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL2ZpbGVzLzAwMDItUG9ydC16ZHVtcC10by1DOTAtc25wcmludGYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS9maWxlcy8wMDAyLVBvcnQtemR1bXAtdG8tQzkwLXNucHJpbnRmLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2FmZTQ3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL2ZpbGVzLzAwMDItUG9ydC16ZHVtcC10by1DOTAtc25wcmludGYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotRnJvbSBlMjMxZGE0ZmIyYmViMTdjNjBiNGIxYTVjMjc2MzY2ZDZhNmU0MzNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF1bCBFZ2dlcnQgPGVnZ2VydEBjcy51Y2xhLmVkdT4KLURhdGU6IE1vbiwgMjMgT2N0IDIwMTcgMTc6NTg6MzYgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gUG9ydCB6ZHVtcCB0byBDOTAgKyBzbnByaW50ZgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1Qcm9ibGVtIHJlcG9ydGVkIGJ5IEpvbiBTa2VldCBpbjoKLWh0dHBzOi8vbW0uaWNhbm4ub3JnL3BpcGVybWFpbC90ei8yMDE3LU9jdG9iZXIvMDI1MzYyLmh0bWwKLSogTkVXUzogTWVudGlvbiB0aGlzLgotKiB6ZHVtcC5jIChteV9zbnByaW50Zik6IE5ldyBtYWNybyBvciBmdW5jdGlvbi4gIElmIGEgbWFjcm8sIGl0IGlzCi1qdXN0IHNucHJpbnRmLiAgSWYgYSBmdW5jdGlvbiwgaXQgaXMgdGhlIHNhbWUgYXMgdGhlIG9sZCBzbnByaW50Zgotc3RhdGljIGZ1bmN0aW9uLCB3aXRoIGFuIEFUVFJJQlVURV9GT1JNQVQgdG8gcGFjaWZ5IG1vZGVybiBHQ0MuCi1BbGwgdXNlcyBvZiBzbnByaW50ZiBjaGFuZ2VkIHRvIHVzZSBteV9zbnByaW50Zi4gIFRoaXMgd2F5LAotaW5zdGFsbGVycyBkb27igJl0IG5lZWQgdG8gc3BlY2lmeSAtREhBVkVfU05QUklOVEYgaWYgdGhleSBhcmUgdXNpbmcKLWEgcHJlLUM5OSBjb21waWxlciB3aXRoIGEgbGlicmFyeSB0aGF0IGhhcyBzbnByaW50Zi4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIE5FV1MgICAgfCAgNCArKysrCi0gemR1bXAuYyB8IDI5ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL05FV1MgYi9ORVdTCi1pbmRleCA3NWFiMDk1Li5kZWEwOGI4IDEwMDY0NAotLS0tIGEvTkVXUwotKysrIGIvTkVXUwotQEAgLTcsNiArNywxMCBAQCBVbnJlbGVhc2VkLCBleHBlcmltZW50YWwgY2hhbmdlcwotICAgICBUaGUgTWFrZWZpbGUgbm93IHF1b3RlcyB2YWx1ZXMgbGlrZSBCQUNLV0FSRCBtb3JlIGNhcmVmdWxseSB3aGVuCi0gICAgIHBhc3NpbmcgdGhlbSB0byB0aGUgc2hlbGwuICAoUHJvYmxlbSByZXBvcnRlZCBieSBaZWZyYW0uKQotIAotKyAgICBCdWlsZGVycyBubyBsb25nZXIgbmVlZCB0byBzcGVjaWZ5IC1ESEFWRV9TTlBSSU5URiBvbiBwbGF0Zm9ybXMKLSsgICAgdGhhdCBoYXZlIHNucHJpbnRmIGFuZCB1c2UgcHJlLUM5OSBjb21waWxlcnMuICAoUHJvYmxlbSByZXBvcnRlZAotKyAgICBieSBKb24gU2tlZXQuKQotKwotIAotIFJlbGVhc2UgMjAxN2MgLSAyMDE3LTEwLTIwIDE0OjQ5OjM0IC0wNzAwCi0gCi1kaWZmIC0tZ2l0IGEvemR1bXAuYyBiL3pkdW1wLmMKLWluZGV4IDhlM2JmM2UuLmQ0ZTYwODQgMTAwNjQ0Ci0tLS0gYS96ZHVtcC5jCi0rKysgYi96ZHVtcC5jCi1AQCAtNzk1LDEyICs3OTUsMTQgQEAgc2hvdyh0aW1lem9uZV90IHR6LCBjaGFyICp6b25lLCB0aW1lX3QgdCwgYm9vbCB2KQotIAkJYWJicm9rKGFiYnIodG1wKSwgem9uZSk7Ci0gfQotIAotLSNpZiAhSEFWRV9TTlBSSU5URgotKyNpZiBIQVZFX1NOUFJJTlRGCi0rIyBkZWZpbmUgbXlfc25wcmludGYgc25wcmludGYKLSsjZWxzZQotICMgaW5jbHVkZSA8c3RkYXJnLmg+Ci0gCi0gLyogQSBzdWJzdGl0dXRlIGZvciBzbnByaW50ZiB0aGF0IGlzIGdvb2QgZW5vdWdoIGZvciB6ZHVtcC4gICovCi0tc3RhdGljIGludAotLXNucHJpbnRmKGNoYXIgKnMsIHNpemVfdCBzaXplLCBjaGFyIGNvbnN0ICpmb3JtYXQsIC4uLikKLStzdGF0aWMgaW50IEFUVFJJQlVURV9GT1JNQVQoKHByaW50ZiwgMywgNCkpCi0rbXlfc25wcmludGYoY2hhciAqcywgc2l6ZV90IHNpemUsIGNoYXIgY29uc3QgKmZvcm1hdCwgLi4uKQotIHsKLSAgIGludCBuOwotICAgdmFfbGlzdCBhcmdzOwotQEAgLTgzOSwxMCArODQxLDEwIEBAIGZvcm1hdF9sb2NhbF90aW1lKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIHN0cnVjdCB0bSBjb25zdCAqdG0pCi0gewotICAgaW50IHNzID0gdG0tPnRtX3NlYywgbW0gPSB0bS0+dG1fbWluLCBoaCA9IHRtLT50bV9ob3VyOwotICAgcmV0dXJuIChzcwotLQkgID8gc25wcmludGYoYnVmLCBzaXplLCAiJTAyZDolMDJkOiUwMmQiLCBoaCwgbW0sIHNzKQotKwkgID8gbXlfc25wcmludGYoYnVmLCBzaXplLCAiJTAyZDolMDJkOiUwMmQiLCBoaCwgbW0sIHNzKQotIAkgIDogbW0KLS0JICA/IHNucHJpbnRmKGJ1Ziwgc2l6ZSwgIiUwMmQ6JTAyZCIsIGhoLCBtbSkKLS0JICA6IHNucHJpbnRmKGJ1Ziwgc2l6ZSwgIiUwMmQiLCBoaCkpOwotKwkgID8gbXlfc25wcmludGYoYnVmLCBzaXplLCAiJTAyZDolMDJkIiwgaGgsIG1tKQotKwkgIDogbXlfc25wcmludGYoYnVmLCBzaXplLCAiJTAyZCIsIGhoKSk7Ci0gfQotIAotIC8qIFN0b3JlIGludG8gQlVGLCBvZiBzaXplIFNJWkUsIGEgZm9ybWF0dGVkIFVUQyBvZmZzZXQgZm9yIHRoZQotQEAgLTg3NywxMCArODc5LDEwIEBAIGZvcm1hdF91dGNfb2Zmc2V0KGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIHN0cnVjdCB0bSBjb25zdCAqdG0sIHRpbWVfdCB0KQotICAgbW0gPSBvZmYgLyA2MCAlIDYwOwotICAgaGggPSBvZmYgLyA2MCAvIDYwOwotICAgcmV0dXJuIChzcyB8fCAxMDAgPD0gaGgKLS0JICA/IHNucHJpbnRmKGJ1Ziwgc2l6ZSwgIiVjJTAybGQlMDJkJTAyZCIsIHNpZ24sIGhoLCBtbSwgc3MpCi0rCSAgPyBteV9zbnByaW50ZihidWYsIHNpemUsICIlYyUwMmxkJTAyZCUwMmQiLCBzaWduLCBoaCwgbW0sIHNzKQotIAkgIDogbW0KLS0JICA/IHNucHJpbnRmKGJ1Ziwgc2l6ZSwgIiVjJTAybGQlMDJkIiwgc2lnbiwgaGgsIG1tKQotLQkgIDogc25wcmludGYoYnVmLCBzaXplLCAiJWMlMDJsZCIsIHNpZ24sIGhoKSk7Ci0rCSAgPyBteV9zbnByaW50ZihidWYsIHNpemUsICIlYyUwMmxkJTAyZCIsIHNpZ24sIGhoLCBtbSkKLSsJICA6IG15X3NucHJpbnRmKGJ1Ziwgc2l6ZSwgIiVjJTAybGQiLCBzaWduLCBoaCkpOwotIH0KLSAKLSAvKiBTdG9yZSBpbnRvIEJVRiAob2Ygc2l6ZSBTSVpFKSBhIHF1b3RlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgUC4KLUBAIC05ODMsMTUgKzk4NSwxNiBAQCBpc3RyZnRpbWUoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgY2hhciBjb25zdCAqdGltZV9mbXQsCi0gCSAgICBmb3IgKGFicCA9IGFiOyBpc19hbHBoYSgqYWJwKTsgYWJwKyspCi0gCSAgICAgIGNvbnRpbnVlOwotIAkgICAgbGVuID0gKCEqYWJwICYmICphYgotLQkJICAgPyBzbnByaW50ZihiLCBzLCAiJXMiLCBhYikKLSsJCSAgID8gbXlfc25wcmludGYoYiwgcywgIiVzIiwgYWIpCi0gCQkgICA6IGZvcm1hdF9xdW90ZWRfc3RyaW5nKGIsIHMsIGFiKSk7Ci0gCSAgICBpZiAocyA8PSBsZW4pCi0gCSAgICAgIHJldHVybiBmYWxzZTsKLSAJICAgIGIgKz0gbGVuLCBzIC09IGxlbjsKLSAJICB9Ci0tCSAgZm9ybWF0dGVkX2xlbiA9ICh0bS0+dG1faXNkc3QKLS0JCQkgICA/IHNucHJpbnRmKGIsIHMsICYiXHRcdCVkIltzaG93X2FiYnJdLCB0bS0+dG1faXNkc3QpCi0tCQkJICAgOiAwKTsKLSsJICBmb3JtYXR0ZWRfbGVuCi0rCSAgICA9ICh0bS0+dG1faXNkc3QKLSsJICAgICAgID8gbXlfc25wcmludGYoYiwgcywgJiJcdFx0JWQiW3Nob3dfYWJicl0sIHRtLT50bV9pc2RzdCkKLSsJICAgICAgIDogMCk7Ci0gCX0KLSAJYnJlYWs7Ci0gICAgICAgfQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS90emNvZGUtbmF0aXZlXzIwMThjLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvdHpjb2RlLW5hdGl2ZV8yMDE4Yy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODVlOWI3MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS90emNvZGUtbmF0aXZlXzIwMThjLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotIyBub3RlIHRoYXQgd2UgYWxsb3cgZm9yIHVzIHRvIHVzZSBkYXRhIGxhdGVyIHRoYW4gb3VyIGNvZGUgdmVyc2lvbgotIwotU1VNTUFSWSA9ICJ0emNvZGUsIHRpbWV6b25lIHpvbmVpbmZvIHV0aWxzIC0tIHppYywgemR1bXAsIHR6c2VsZWN0IgotTElDRU5TRSA9ICJQRCAmIEJTRCAmIEJTRC0zLUNsYXVzZSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzY3OWM5ZDZiMDJiYzI3NTdiM2VhZjhmNTNjNDNmYmEiCi0KLVNSQ19VUkkgPSIgaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpjb2RlJHtQVn0udGFyLmd6O25hbWU9dHpjb2RlIFwKLSAgICAgICAgICAgaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpkYXRhJHtQVn0udGFyLmd6O25hbWU9dHpkYXRhIFwKLSAgICAgICAgICAgIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzIgotCi1TUkNfVVJJW3R6Y29kZS5tZDVzdW1dID0gImU2ZTBkNGIyY2UzZmE2OTA2ZjMwMzE1N2JlZDI2MTJlIgotU1JDX1VSSVt0emNvZGUuc2hhMjU2c3VtXSA9ICIzMWZhN2ZjMGY5NGE2ZmYyZDZiYzg3OGMwYTM1ZThhYjhiNWFhMGU4YjAxNDQ1YTFkNGE4ZjE0Nzc3ZDBlNjY1IgotU1JDX1VSSVt0emRhdGEubWQ1c3VtXSA9ICJjNDEyYjE1MzFhZGVmMWJlN2E2NDVhYjczNGY4NmFjYyIKLVNSQ19VUklbdHpkYXRhLnNoYTI1NnN1bV0gPSAiMjgyNWMzZTRiN2VmNTIwZjI0ZDM5M2JjYzAyOTQyZjk3NjJmZmQzZTdmYzliMjM4NTA3ODllZDhmMjI5MzNmNiIKLQotUyA9ICIke1dPUktESVJ9IgotCi1pbmhlcml0IG5hdGl2ZQotCi1FWFRSQV9PRU1BS0UgKz0gImNjPScke0NDfSciCi0KLWRvX2luc3RhbGwgKCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgLW0gNzU1IHppYyAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsIC1tIDc1NSB6ZHVtcCAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsIC1tIDc1NSB0enNlbGVjdCAke0R9JHtiaW5kaXJ9LwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvdHpjb2RlLW5hdGl2ZV8yMDE4ZC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxOGQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzkzM2E1ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxOGQuYmIKQEAgLTAsMCArMSwzMCBAQAorIyBub3RlIHRoYXQgd2UgYWxsb3cgZm9yIHVzIHRvIHVzZSBkYXRhIGxhdGVyIHRoYW4gb3VyIGNvZGUgdmVyc2lvbgorIworU1VNTUFSWSA9ICJ0emNvZGUsIHRpbWV6b25lIHpvbmVpbmZvIHV0aWxzIC0tIHppYywgemR1bXAsIHR6c2VsZWN0IgorTElDRU5TRSA9ICJQRCAmIEJTRCAmIEJTRC0zLUNsYXVzZSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzY3OWM5ZDZiMDJiYzI3NTdiM2VhZjhmNTNjNDNmYmEiCisKK1NSQ19VUkkgPSIgaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpjb2RlJHtQVn0udGFyLmd6O25hbWU9dHpjb2RlIFwKKyAgICAgICAgICAgaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpkYXRhJHtQVn0udGFyLmd6O25hbWU9dHpkYXRhIFwKKyAgICAgICAgICAgIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzIgorCitTUkNfVVJJW3R6Y29kZS5tZDVzdW1dID0gIjk2NjEyYjRmNWQ3ZTg4MDRmZDlhMDk4MWMwMjFiZTkwIgorU1JDX1VSSVt0emNvZGUuc2hhMjU2c3VtXSA9ICI3ZGU0NGU4NWJhYWQ3NDhkMjE3ZTNmZDYwNzA2ZjU5OWY5YWVjNjhiY2U2MzU2YjE2M2Y1MmIwZGJkNDBhOGQ5IgorU1JDX1VSSVt0emRhdGEubWQ1c3VtXSA9ICI4NzFhN2VmODA4ZWI0MmViYzU1MWFjZGIzZDY2MTU1NCIKK1NSQ19VUklbdHpkYXRhLnNoYTI1NnN1bV0gPSAiNTEwNmVkZGNlYjVmMWFlM2E5MWRiZDM5NjBlMWI4YjExYmEwZGMwODU3OWEzMWNmMDcyNGE3NjkxYjEwYzA1NCIKKworUyA9ICIke1dPUktESVJ9IgorCitpbmhlcml0IG5hdGl2ZQorCitFWFRSQV9PRU1BS0UgKz0gImNjPScke0NDfSciCisKK2RvX2luc3RhbGwgKCkgeworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgLW0gNzU1IHppYyAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsIC1tIDc1NSB6ZHVtcCAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsIC1tIDc1NSB0enNlbGVjdCAke0R9JHtiaW5kaXJ9LworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMThjLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMThjLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjVlYzFjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpkYXRhL3R6ZGF0YV8yMDE4Yy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxNSArMCwwIEBACi1TVU1NQVJZID0gIlRpbWV6b25lIGRhdGEiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMiCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIlBEICYgQlNEICYgQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzY3OWM5ZDZiMDJiYzI3NTdiM2VhZjhmNTNjNDNmYmEiCi0KLURFUEVORFMgPSAidHpjb2RlLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMvcmVwb3NpdG9yeS9yZWxlYXNlcy90emRhdGEke1BWfS50YXIuZ3o7bmFtZT10emRhdGEiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzIgotCi1TUkNfVVJJW3R6ZGF0YS5tZDVzdW1dID0gImM0MTJiMTUzMWFkZWYxYmU3YTY0NWFiNzM0Zjg2YWNjIgotU1JDX1VSSVt0emRhdGEuc2hhMjU2c3VtXSA9ICIyODI1YzNlNGI3ZWY1MjBmMjRkMzkzYmNjMDI5NDJmOTc2MmZmZDNlN2ZjOWIyMzg1MDc4OWVkOGYyMjkzM2Y2IgotCi1pbmhlcml0IGFsbGFyY2gKLQotUkNPTkZMSUNUU18ke1BOfSA9ICJ0aW1lem9uZXMgdGltZXpvbmUtYWZyaWNhIHRpbWV6b25lLWFtZXJpY2EgdGltZXpvbmUtYW50YXJjdGljYSBcCi0gICAgICAgICAgICAgdGltZXpvbmUtYXJjdGljIHRpbWV6b25lLWFzaWEgdGltZXpvbmUtYXRsYW50aWMgXAotICAgICAgICAgICAgIHRpbWV6b25lLWF1c3RyYWxpYSB0aW1lem9uZS1ldXJvcGUgdGltZXpvbmUtaW5kaWFuIFwKLSAgICAgICAgICAgICB0aW1lem9uZS1pc28zMTY2LnRhYiB0aW1lem9uZS1wYWNpZmljIHRpbWV6b25lLXpvbmUudGFiIgotCi1TID0gIiR7V09SS0RJUn0iCi0KLURFRkFVTFRfVElNRVpPTkUgPz0gIlVuaXZlcnNhbCIKLUlOU1RBTExfVElNRVpPTkVfRklMRSA/PSAiMSIKLQotVFpPTkVTPSAiYWZyaWNhIGFudGFyY3RpY2EgYXNpYSBhdXN0cmFsYXNpYSBldXJvcGUgbm9ydGhhbWVyaWNhIHNvdXRoYW1lcmljYSAgXAotICAgICAgICAgZmFjdG9yeSBldGNldGVyYSBiYWNrd2FyZCBzeXN0ZW12IFwKLSAgICAgICAgIgotIyBwYWNpZmljbmV3IAotCi1kb19jb21waWxlICgpIHsKLSAgICAgICAgZm9yIHpvbmUgaW4gJHtUWk9ORVN9OyBkbyBcCi0gICAgICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vemljIC1kICR7V09SS0RJUn0ke2RhdGFkaXJ9L3pvbmVpbmZvIC1MIC9kZXYvbnVsbCBcCi0gICAgICAgICAgICAgICAgLXkgJHtTfS95ZWFyaXN0eXBlLnNoICR7U30vJHt6b25lfSA7IFwKLSAgICAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS96aWMgLWQgJHtXT1JLRElSfSR7ZGF0YWRpcn0vem9uZWluZm8vcG9zaXggLUwgL2Rldi9udWxsIFwKLSAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAotICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3ppYyAtZCAke1dPUktESVJ9JHtkYXRhZGlyfS96b25laW5mby9yaWdodCAtTCAke1N9L2xlYXBzZWNvbmRzIFwKLSAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAotICAgICAgICBkb25lCi19Ci0KLWRvX2luc3RhbGwgKCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0vJGV4ZWNfcHJlZml4ICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCi0gICAgICAgIGNwIC1wUFIgJHtTfS8kZXhlY19wcmVmaXggJHtEfS8KLSAgICAgICAgIyBsaWJjIGlzIHJlbW92aW5nIHpvbmVpbmZvIGZpbGVzIGZyb20gcGFja2FnZQotICAgICAgICBjcCAtcFAgIiR7U30vem9uZS50YWIiICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCi0gICAgICAgIGNwIC1wUCAiJHtTfS96b25lMTk3MC50YWIiICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCi0gICAgICAgIGNwIC1wUCAiJHtTfS9pc28zMTY2LnRhYiIgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KLQotICAgICAgICAjIEluc3RhbGwgZGVmYXVsdCB0aW1lem9uZQotICAgICAgICBpZiBbIC1lICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvLyR7REVGQVVMVF9USU1FWk9ORX0gXTsgdGhlbgotICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQotICAgICAgICAgICAgaWYgWyAiJHtJTlNUQUxMX1RJTUVaT05FX0ZJTEV9IiA9ICIxIiBdOyB0aGVuCi0gICAgICAgICAgICAgICAgZWNobyAke0RFRkFVTFRfVElNRVpPTkV9ID4gJHtEfSR7c3lzY29uZmRpcn0vdGltZXpvbmUKLSAgICAgICAgICAgIGZpCi0gICAgICAgICAgICBsbiAtcyAke2RhdGFkaXJ9L3pvbmVpbmZvLyR7REVGQVVMVF9USU1FWk9ORX0gJHtEfSR7c3lzY29uZmRpcn0vbG9jYWx0aW1lCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJiZXJyb3IgIkRFRkFVTFRfVElNRVpPTkUgaXMgc2V0IHRvIGFuIGludmFsaWQgdmFsdWUuIgotICAgICAgICAgICAgZXhpdCAxCi0gICAgICAgIGZpCi0KLSAgICAgICAgY2hvd24gLVIgcm9vdDpyb290ICR7RH0KLX0KLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLQlldGNfbHQ9IiREJHtzeXNjb25mZGlyfS9sb2NhbHRpbWUiCi0Jc3JjPSIkRCR7c3lzY29uZmRpcn0vdGltZXpvbmUiCi0KLQlpZiBbIC1lICR7c3JjfSBdIDsgdGhlbgotCQl0ej0kKHNlZCAtZSAnczojLio6OicgLWUgJ3M6W1s6c3BhY2U6XV0qOjpnJyAtZSAnL14kL2QnICIke3NyY30iKQotCWZpCi0JCi0JaWYgWyAteiAiJHt0en0iIF0gOyB0aGVuCi0JCWV4aXQgMAotCWZpCi0JCi0JaWYgWyAhIC1lICIkRCR7ZGF0YWRpcn0vem9uZWluZm8vJHt0en0iIF0gOyB0aGVuCi0JCWVjaG8gIllvdSBoYXZlIGFuIGludmFsaWQgVElNRVpPTkUgc2V0dGluZyBpbiAke3NyY30iCi0JCWVjaG8gIllvdXIgJHtldGNfbHR9IGhhcyBiZWVuIHJlc2V0IHRvIFVuaXZlcnNhbDsgZW5qb3khIgotCQl0ej0iVW5pdmVyc2FsIgotCQllY2hvICJVcGRhdGluZyAke2V0Y19sdH0gd2l0aCAkRCR7ZGF0YWRpcn0vem9uZWluZm8vJHt0en0iCi0JCWlmIFsgLUwgJHtldGNfbHR9IF0gOyB0aGVuCi0JCQlybSAtZiAiJHtldGNfbHR9IgotCQlmaQotCQlsbiAtcyAiJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIgIiR7ZXRjX2x0fSIKLQlmaQotfQotCi0jIFBhY2thZ2VzIHByaW1hcmlseSBvcmdhbml6ZWQgYnkgZGlyZWN0b3J5IHdpdGggYSBtYWpvciBjaXR5Ci0jIGluIG1vc3QgdGltZSB6b25lcyBpbiB0aGUgYmFzZSBwYWNrYWdlCi0KLVBBQ0tBR0VTID0gInR6ZGF0YSB0emRhdGEtbWlzYyB0emRhdGEtcG9zaXggdHpkYXRhLXJpZ2h0IHR6ZGF0YS1hZnJpY2EgXAotICAgIHR6ZGF0YS1hbWVyaWNhcyB0emRhdGEtYW50YXJjdGljYSB0emRhdGEtYXJjdGljIHR6ZGF0YS1hc2lhIFwKLSAgICB0emRhdGEtYXRsYW50aWMgdHpkYXRhLWF1c3RyYWxpYSB0emRhdGEtZXVyb3BlIHR6ZGF0YS1wYWNpZmljIgotCi1GSUxFU190emRhdGEtYWZyaWNhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FmcmljYS8qIgotUlBST1ZJREVTX3R6ZGF0YS1hZnJpY2EgPSAidHpkYXRhLWFmcmljYSIKLQotRklMRVNfdHpkYXRhLWFtZXJpY2FzICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvKiAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVVMvKiAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9CcmF6aWwvKiAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NhbmFkYS8qICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTWV4aWNvLyogICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DaGlsZS8qIgotUlBST1ZJREVTX3R6ZGF0YS1hbWVyaWNhcyA9ICJ0emRhdGEtYW1lcmljYXMiCi0KLUZJTEVTX3R6ZGF0YS1hbnRhcmN0aWNhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FudGFyY3RpY2EvKiIKLVJQUk9WSURFU190emRhdGEtYW50YXJjdGljYSA9ICJ0emRhdGEtYW50YXJjdGljYSIKLQotRklMRVNfdHpkYXRhLWFyY3RpYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9BcmN0aWMvKiIKLVJQUk9WSURFU190emRhdGEtYXJjdGljID0gInR6ZGF0YS1hcmN0aWMiCi0KLUZJTEVTX3R6ZGF0YS1hc2lhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvKiAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSW5kaWFuLyogICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NaWRlYXN0LyoiCi1SUFJPVklERVNfdHpkYXRhLWFzaWEgPSAidHpkYXRhLWFzaWEiCi0KLUZJTEVTX3R6ZGF0YS1hdGxhbnRpYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9BdGxhbnRpYy8qIgotUlBST1ZJREVTX3R6ZGF0YS1hdGxhbnRpYyA9ICJ0emRhdGEtYXRsYW50aWMiCi0KLUZJTEVTX3R6ZGF0YS1hdXN0cmFsaWEgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQXVzdHJhbGlhLyoiCi1SUFJPVklERVNfdHpkYXRhLWF1c3RyYWxpYSA9ICJ0emRhdGEtYXVzdHJhbGlhIgotCi1GSUxFU190emRhdGEtZXVyb3BlICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS8qIgotUlBST1ZJREVTX3R6ZGF0YS1ldXJvcGUgPSAidHpkYXRhLWV1cm9wZSIKLQotRklMRVNfdHpkYXRhLXBhY2lmaWMgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vUGFjaWZpYy8qIgotUlBST1ZJREVTX3R6ZGF0YS1wYWNpZmljID0gInR6ZGF0YS1wYWNpZmljIgotCi1GSUxFU190emRhdGEtcG9zaXggKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vcG9zaXgvKiIKLVJQUk9WSURFU190emRhdGEtcG9zaXggPSAidHpkYXRhLXBvc2l4IgotCi1GSUxFU190emRhdGEtcmlnaHQgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vcmlnaHQvKiIKLVJQUk9WSURFU190emRhdGEtcmlnaHQgPSAidHpkYXRhLXJpZ2h0IgotCi0KLUZJTEVTX3R6ZGF0YS1taXNjICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0N1YmEgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VneXB0ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VpcmUgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0ZhY3RvcnkgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dCLUVpcmUgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0hvbmdrb25nICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0ljZWxhbmQgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0lyYW4gICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0lzcmFlbCAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0phbWFpY2EgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0phcGFuICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0t3YWphbGVpbiAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0xpYnlhICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05hdmFqbyAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BvbGFuZCAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BvcnR1Z2FsICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1NpbmdhcG9yZSAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1R1cmtleSIKLVJQUk9WSURFU190emRhdGEtbWlzYyA9ICJ0emRhdGEtbWlzYyIKLQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS96b25laW5mby9QYWNpZmljL0hvbm9sdWx1ICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0FuY2hvcmFnZSAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0xvc19BbmdlbGVzICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0RlbnZlciAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0NoaWNhZ28gICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL05ld19Zb3JrICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0NhcmFjYXMgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL1Nhb19QYXVsbyAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvTG9uZG9uICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvUGFyaXMgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BZnJpY2EvQ2Fpcm8gICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvTW9zY293ICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0R1YmFpICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0thcmFjaGkgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0RoYWthICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0JhbmtvayAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0hvbmdfS29uZyAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL1Rva3lvICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvRGFyd2luICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvQWRlbGFpZGUgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvQnJpc2JhbmUgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvU3lkbmV5ICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9QYWNpZmljL05vdW1lYSAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DRVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DU1Q2Q0RUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FRVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FU1QgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FU1Q1RURUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HQiAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQrMCAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQtMCAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQwICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HcmVlbndpY2ggICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9IU1QgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NRVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NU1QgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NU1Q3TURUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9OWiAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9OWi1DSEFUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9QUkMgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9QU1Q4UERUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9ST0MgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9ST0sgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9VQ1QgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9VVEMgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Vbml2ZXJzYWwgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9XLVNVICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9XRVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9adWx1ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby96b25lLnRhYiAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby96b25lMTk3MC50YWIgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9pc28zMTY2LnRhYiAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdGMvKiIKLQotQ09ORkZJTEVTXyR7UE59ICs9ICIke0AgIiR7c3lzY29uZmRpcn0vdGltZXpvbmUiIGlmIGJiLnV0aWxzLnRvX2Jvb2xlYW4oZC5nZXRWYXIoJ0lOU1RBTExfVElNRVpPTkVfRklMRScpKSBlbHNlICIiIH0iCi1DT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vbG9jYWx0aW1lIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMThkLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMThkLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3ZmNlODAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6ZGF0YS90emRhdGFfMjAxOGQuYmIKQEAgLTAsMCArMSwyMTUgQEAKK1NVTU1BUlkgPSAiVGltZXpvbmUgZGF0YSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiUEQgJiBCU0QgJiBCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNjc5YzlkNmIwMmJjMjc1N2IzZWFmOGY1M2M0M2ZiYSIKKworREVQRU5EUyA9ICJ0emNvZGUtbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcy9yZXBvc2l0b3J5L3JlbGVhc2VzL3R6ZGF0YSR7UFZ9LnRhci5nejtuYW1lPXR6ZGF0YSIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMiCisKK1NSQ19VUklbdHpkYXRhLm1kNXN1bV0gPSAiODcxYTdlZjgwOGViNDJlYmM1NTFhY2RiM2Q2NjE1NTQiCitTUkNfVVJJW3R6ZGF0YS5zaGEyNTZzdW1dID0gIjUxMDZlZGRjZWI1ZjFhZTNhOTFkYmQzOTYwZTFiOGIxMWJhMGRjMDg1NzlhMzFjZjA3MjRhNzY5MWIxMGMwNTQiCisKK2luaGVyaXQgYWxsYXJjaAorCitSQ09ORkxJQ1RTXyR7UE59ID0gInRpbWV6b25lcyB0aW1lem9uZS1hZnJpY2EgdGltZXpvbmUtYW1lcmljYSB0aW1lem9uZS1hbnRhcmN0aWNhIFwKKyAgICAgICAgICAgICB0aW1lem9uZS1hcmN0aWMgdGltZXpvbmUtYXNpYSB0aW1lem9uZS1hdGxhbnRpYyBcCisgICAgICAgICAgICAgdGltZXpvbmUtYXVzdHJhbGlhIHRpbWV6b25lLWV1cm9wZSB0aW1lem9uZS1pbmRpYW4gXAorICAgICAgICAgICAgIHRpbWV6b25lLWlzbzMxNjYudGFiIHRpbWV6b25lLXBhY2lmaWMgdGltZXpvbmUtem9uZS50YWIiCisKK1MgPSAiJHtXT1JLRElSfSIKKworREVGQVVMVF9USU1FWk9ORSA/PSAiVW5pdmVyc2FsIgorSU5TVEFMTF9USU1FWk9ORV9GSUxFID89ICIxIgorCitUWk9ORVM9ICJhZnJpY2EgYW50YXJjdGljYSBhc2lhIGF1c3RyYWxhc2lhIGV1cm9wZSBub3J0aGFtZXJpY2Egc291dGhhbWVyaWNhICBcCisgICAgICAgICBmYWN0b3J5IGV0Y2V0ZXJhIGJhY2t3YXJkIHN5c3RlbXYgXAorICAgICAgICAiCisjIHBhY2lmaWNuZXcgCisKK2RvX2NvbXBpbGUgKCkgeworICAgICAgICBmb3Igem9uZSBpbiAke1RaT05FU307IGRvIFwKKyAgICAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS96aWMgLWQgJHtXT1JLRElSfSR7ZGF0YWRpcn0vem9uZWluZm8gLUwgL2Rldi9udWxsIFwKKyAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAorICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3ppYyAtZCAke1dPUktESVJ9JHtkYXRhZGlyfS96b25laW5mby9wb3NpeCAtTCAvZGV2L251bGwgXAorICAgICAgICAgICAgICAgIC15ICR7U30veWVhcmlzdHlwZS5zaCAke1N9LyR7em9uZX0gOyBcCisgICAgICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vemljIC1kICR7V09SS0RJUn0ke2RhdGFkaXJ9L3pvbmVpbmZvL3JpZ2h0IC1MICR7U30vbGVhcHNlY29uZHMgXAorICAgICAgICAgICAgICAgIC15ICR7U30veWVhcmlzdHlwZS5zaCAke1N9LyR7em9uZX0gOyBcCisgICAgICAgIGRvbmUKK30KKworZG9faW5zdGFsbCAoKSB7CisgICAgICAgIGluc3RhbGwgLWQgJHtEfS8kZXhlY19wcmVmaXggJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KKyAgICAgICAgY3AgLXBQUiAke1N9LyRleGVjX3ByZWZpeCAke0R9LworICAgICAgICAjIGxpYmMgaXMgcmVtb3Zpbmcgem9uZWluZm8gZmlsZXMgZnJvbSBwYWNrYWdlCisgICAgICAgIGNwIC1wUCAiJHtTfS96b25lLnRhYiIgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KKyAgICAgICAgY3AgLXBQICIke1N9L3pvbmUxOTcwLnRhYiIgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KKyAgICAgICAgY3AgLXBQICIke1N9L2lzbzMxNjYudGFiIiAke0R9JHtkYXRhZGlyfS96b25laW5mbworCisgICAgICAgICMgSW5zdGFsbCBkZWZhdWx0IHRpbWV6b25lCisgICAgICAgIGlmIFsgLWUgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8vJHtERUZBVUxUX1RJTUVaT05FfSBdOyB0aGVuCisgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9CisgICAgICAgICAgICBpZiBbICIke0lOU1RBTExfVElNRVpPTkVfRklMRX0iID0gIjEiIF07IHRoZW4KKyAgICAgICAgICAgICAgICBlY2hvICR7REVGQVVMVF9USU1FWk9ORX0gPiAke0R9JHtzeXNjb25mZGlyfS90aW1lem9uZQorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGxuIC1zICR7ZGF0YWRpcn0vem9uZWluZm8vJHtERUZBVUxUX1RJTUVaT05FfSAke0R9JHtzeXNjb25mZGlyfS9sb2NhbHRpbWUKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYmJlcnJvciAiREVGQVVMVF9USU1FWk9ORSBpcyBzZXQgdG8gYW4gaW52YWxpZCB2YWx1ZS4iCisgICAgICAgICAgICBleGl0IDEKKyAgICAgICAgZmkKKworICAgICAgICBjaG93biAtUiByb290OnJvb3QgJHtEfQorfQorCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworCWV0Y19sdD0iJEQke3N5c2NvbmZkaXJ9L2xvY2FsdGltZSIKKwlzcmM9IiREJHtzeXNjb25mZGlyfS90aW1lem9uZSIKKworCWlmIFsgLWUgJHtzcmN9IF0gOyB0aGVuCisJCXR6PSQoc2VkIC1lICdzOiMuKjo6JyAtZSAnczpbWzpzcGFjZTpdXSo6OmcnIC1lICcvXiQvZCcgIiR7c3JjfSIpCisJZmkKKwkKKwlpZiBbIC16ICIke3R6fSIgXSA7IHRoZW4KKwkJZXhpdCAwCisJZmkKKwkKKwlpZiBbICEgLWUgIiREJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIgXSA7IHRoZW4KKwkJZWNobyAiWW91IGhhdmUgYW4gaW52YWxpZCBUSU1FWk9ORSBzZXR0aW5nIGluICR7c3JjfSIKKwkJZWNobyAiWW91ciAke2V0Y19sdH0gaGFzIGJlZW4gcmVzZXQgdG8gVW5pdmVyc2FsOyBlbmpveSEiCisJCXR6PSJVbml2ZXJzYWwiCisJCWVjaG8gIlVwZGF0aW5nICR7ZXRjX2x0fSB3aXRoICREJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIKKwkJaWYgWyAtTCAke2V0Y19sdH0gXSA7IHRoZW4KKwkJCXJtIC1mICIke2V0Y19sdH0iCisJCWZpCisJCWxuIC1zICIke2RhdGFkaXJ9L3pvbmVpbmZvLyR7dHp9IiAiJHtldGNfbHR9IgorCWZpCit9CisKKyMgUGFja2FnZXMgcHJpbWFyaWx5IG9yZ2FuaXplZCBieSBkaXJlY3Rvcnkgd2l0aCBhIG1ham9yIGNpdHkKKyMgaW4gbW9zdCB0aW1lIHpvbmVzIGluIHRoZSBiYXNlIHBhY2thZ2UKKworUEFDS0FHRVMgPSAidHpkYXRhIHR6ZGF0YS1taXNjIHR6ZGF0YS1wb3NpeCB0emRhdGEtcmlnaHQgdHpkYXRhLWFmcmljYSBcCisgICAgdHpkYXRhLWFtZXJpY2FzIHR6ZGF0YS1hbnRhcmN0aWNhIHR6ZGF0YS1hcmN0aWMgdHpkYXRhLWFzaWEgXAorICAgIHR6ZGF0YS1hdGxhbnRpYyB0emRhdGEtYXVzdHJhbGlhIHR6ZGF0YS1ldXJvcGUgdHpkYXRhLXBhY2lmaWMiCisKK0ZJTEVTX3R6ZGF0YS1hZnJpY2EgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQWZyaWNhLyoiCitSUFJPVklERVNfdHpkYXRhLWFmcmljYSA9ICJ0emRhdGEtYWZyaWNhIgorCitGSUxFU190emRhdGEtYW1lcmljYXMgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS8qICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9VUy8qICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0JyYXppbC8qICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQ2FuYWRhLyogICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NZXhpY28vKiAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NoaWxlLyoiCitSUFJPVklERVNfdHpkYXRhLWFtZXJpY2FzID0gInR6ZGF0YS1hbWVyaWNhcyIKKworRklMRVNfdHpkYXRhLWFudGFyY3RpY2EgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQW50YXJjdGljYS8qIgorUlBST1ZJREVTX3R6ZGF0YS1hbnRhcmN0aWNhID0gInR6ZGF0YS1hbnRhcmN0aWNhIgorCitGSUxFU190emRhdGEtYXJjdGljICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FyY3RpYy8qIgorUlBST1ZJREVTX3R6ZGF0YS1hcmN0aWMgPSAidHpkYXRhLWFyY3RpYyIKKworRklMRVNfdHpkYXRhLWFzaWEgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS8qICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9JbmRpYW4vKiAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01pZGVhc3QvKiIKK1JQUk9WSURFU190emRhdGEtYXNpYSA9ICJ0emRhdGEtYXNpYSIKKworRklMRVNfdHpkYXRhLWF0bGFudGljICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0F0bGFudGljLyoiCitSUFJPVklERVNfdHpkYXRhLWF0bGFudGljID0gInR6ZGF0YS1hdGxhbnRpYyIKKworRklMRVNfdHpkYXRhLWF1c3RyYWxpYSArPSAiJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvKiIKK1JQUk9WSURFU190emRhdGEtYXVzdHJhbGlhID0gInR6ZGF0YS1hdXN0cmFsaWEiCisKK0ZJTEVTX3R6ZGF0YS1ldXJvcGUgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vRXVyb3BlLyoiCitSUFJPVklERVNfdHpkYXRhLWV1cm9wZSA9ICJ0emRhdGEtZXVyb3BlIgorCitGSUxFU190emRhdGEtcGFjaWZpYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9QYWNpZmljLyoiCitSUFJPVklERVNfdHpkYXRhLXBhY2lmaWMgPSAidHpkYXRhLXBhY2lmaWMiCisKK0ZJTEVTX3R6ZGF0YS1wb3NpeCArPSAiJHtkYXRhZGlyfS96b25laW5mby9wb3NpeC8qIgorUlBST1ZJREVTX3R6ZGF0YS1wb3NpeCA9ICJ0emRhdGEtcG9zaXgiCisKK0ZJTEVTX3R6ZGF0YS1yaWdodCArPSAiJHtkYXRhZGlyfS96b25laW5mby9yaWdodC8qIgorUlBST1ZJREVTX3R6ZGF0YS1yaWdodCA9ICJ0emRhdGEtcmlnaHQiCisKKworRklMRVNfdHpkYXRhLW1pc2MgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQ3ViYSAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRWd5cHQgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRWlyZSAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRmFjdG9yeSAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR0ItRWlyZSAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSG9uZ2tvbmcgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSWNlbGFuZCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSXJhbiAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSXNyYWVsICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSmFtYWljYSAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSmFwYW4gICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vS3dhamFsZWluICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTGlieWEgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTmF2YWpvICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUG9sYW5kICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUG9ydHVnYWwgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vU2luZ2Fwb3JlICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVHVya2V5IgorUlBST1ZJREVTX3R6ZGF0YS1taXNjID0gInR6ZGF0YS1taXNjIgorCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL1BhY2lmaWMvSG9ub2x1bHUgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQW5jaG9yYWdlICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvTG9zX0FuZ2VsZXMgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvRGVudmVyICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQ2hpY2FnbyAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvTmV3X1lvcmsgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQ2FyYWNhcyAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvU2FvX1BhdWxvICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9Mb25kb24gICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9QYXJpcyAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FmcmljYS9DYWlybyAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9Nb3Njb3cgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvRHViYWkgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvS2FyYWNoaSAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvRGhha2EgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvQmFuZ2tvayAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvSG9uZ19Lb25nICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvVG9reW8gICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9EYXJ3aW4gICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9BZGVsYWlkZSAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9CcmlzYmFuZSAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9TeWRuZXkgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BhY2lmaWMvTm91bWVhICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NFVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NTVDZDRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VFVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VTVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VTVDVFRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dCICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVCswICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVC0wICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVDAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dyZWVud2ljaCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0hTVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01FVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01TVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01TVDdNRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05aICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05aLUNIQVQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BSQyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BTVDhQRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1JPQyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1JPSyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VDVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VUQyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VuaXZlcnNhbCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1ctU1UgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1dFVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1p1bHUgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL3pvbmUudGFiICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL3pvbmUxOTcwLnRhYiAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL2lzbzMxNjYudGFiICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V0Yy8qIgorCitDT05GRklMRVNfJHtQTn0gKz0gIiR7QCAiJHtzeXNjb25mZGlyfS90aW1lem9uZSIgaWYgYmIudXRpbHMudG9fYm9vbGVhbihkLmdldFZhcignSU5TVEFMTF9USU1FWk9ORV9GSUxFJykpIGVsc2UgIiIgfSIKK0NPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9sb2NhbHRpbWUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3VuemlwL3VuemlwLzEwLWN2ZS0yMDE0LTgxNDAtdGVzdC1jb21wci1lYi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdW56aXAvdW56aXAvMTAtY3ZlLTIwMTQtODE0MC10ZXN0LWNvbXByLWViLnBhdGNoCmluZGV4IGM5ODlkZjEuLmNhNGFhYWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdW56aXAvdW56aXAvMTAtY3ZlLTIwMTQtODE0MC10ZXN0LWNvbXByLWViLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdW56aXAvdW56aXAvMTAtY3ZlLTIwMTQtODE0MC10ZXN0LWNvbXByLWViLnBhdGNoCkBAIC05LDkgKzksMTEgQEAKIAogU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgogCi0tLS0gYS9leHRyYWN0LmMKLSsrKyBiL2V4dHJhY3QuYwotQEAgLTIyMzIsMTAgKzIyMzIsMTcgQEAKK0luZGV4OiB1bnppcDYwL2V4dHJhY3QuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHVuemlwNjAub3JpZy9leHRyYWN0LmMKKysrKyB1bnppcDYwL2V4dHJhY3QuYworQEAgLTIyMzMsMTAgKzIyMzMsMTcgQEAgc3RhdGljIGludCB0ZXN0X2NvbXByX2ViKF9fR19fIGViLCBlYl9zaQogICAgICBpZiAoY29tcHJfb2Zmc2V0IDwgNCkgICAgICAgICAgICAgICAgLyogZmllbGQgaXMgbm90IGNvbXByZXNzZWQ6ICovCiAgICAgICAgICByZXR1cm4gUEtfT0s7ICAgICAgICAgICAgICAgICAgICAvKiBkbyBub3RoaW5nIGFuZCBzaWduYWwgT0sgKi8KICAKQEAgLTMwLDUgKzMyLDUgQEAKICsgICAgICgoZWJfdWNzaXplID4gMEwpICYmIChlYl9zaXplIDw9IChjb21wcl9vZmZzZXQgKyBFQl9DTVBSSEVBRExFTikpKSkKICsgICAgICAgIHJldHVybiBJWl9FRl9UUlVOQzsgICAgICAgICAgICAgLyogbm8vYmFkIGNvbXByZXNzZWQgZGF0YSEgKi8KICAKLSAgICAgaWYgKAotICNpZmRlZiBJTlRfMTZCSVQKKyAgICAgbWV0aG9kID0gbWFrZXdvcmQoZWIgKyAoRUJfSEVBRFNJWkUgKyBjb21wcl9vZmZzZXQpKTsKKyAgICAgaWYgKChtZXRob2QgPT0gU1RPUkVEKSAmJgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy8wMDAxLXdhdGNoZG9nLXJlbW92ZS1pbnRlcmRlcGVuZGVuY2llcy1vZi13YXRjaGRvZy1hbmQtd2QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nLzAwMDEtd2F0Y2hkb2ctcmVtb3ZlLWludGVyZGVwZW5kZW5jaWVzLW9mLXdhdGNoZG9nLWFuZC13ZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzhlMGNkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy8wMDAxLXdhdGNoZG9nLXJlbW92ZS1pbnRlcmRlcGVuZGVuY2llcy1vZi13YXRjaGRvZy1hbmQtd2QucGF0Y2gKQEAgLTAsMCArMSw2OCBAQAorRnJvbSBjMWZlMTRmYTViZDE2ODI5MmNjNDY3MDAzNGJjNDhiOTU0ZTlkYWM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIk1heGluIEIuIEpvaG4iIDxtYXhpbi5qb2huQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMTMgTWFyIDIwMTggMTQ6NDk6NTUgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gd2F0Y2hkb2c6IHJlbW92ZSBpbnRlcmRlcGVuZGVuY2llcyBvZiB3YXRjaGRvZyBhbmQKKyB3ZF9rZWVwYWxpdmUgc2VydmljZXMKKworU2luY2Ugd2F0Y2hkb2cgYW5kIHdhdGNoZG9nLWtlZXBhbGl2ZSBwYWNrYWdlcyBjYW4ndCBiZSBpbnN0YWxsZWQKK3RvZ2V0aGVyLCByZW1vdmUgdGhlIGludGVyLWRlcGVuZGVuY2llcyBvZiB3YXRjaGRvZyBhbmQgd2Rfa2VlcGFsaXZlCitzZXJ2aWNlcworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KKy0tLQorIGRlYmlhbi93YXRjaGRvZy5zZXJ2aWNlICAgICB8ICA5ICsrKy0tLS0tLQorIGRlYmlhbi93ZF9rZWVwYWxpdmUuc2VydmljZSB8IDEwICsrKysrLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9kZWJpYW4vd2F0Y2hkb2cuc2VydmljZSBiL2RlYmlhbi93YXRjaGRvZy5zZXJ2aWNlCitpbmRleCA3YTJmYzM2Li5mMzFkMWZlIDEwMDY0NAorLS0tIGEvZGViaWFuL3dhdGNoZG9nLnNlcnZpY2UKKysrKyBiL2RlYmlhbi93YXRjaGRvZy5zZXJ2aWNlCitAQCAtMSwxNiArMSwxMyBAQAorIFtVbml0XQorIERlc2NyaXB0aW9uPXdhdGNoZG9nIGRhZW1vbgorLUNvbmZsaWN0cz13ZF9rZWVwYWxpdmUuc2VydmljZQorIEFmdGVyPW11bHRpLXVzZXIudGFyZ2V0CistT25GYWlsdXJlPXdkX2tlZXBhbGl2ZS5zZXJ2aWNlCisgCisgW1NlcnZpY2VdCisgVHlwZT1mb3JraW5nCisgRW52aXJvbm1lbnRGaWxlPS9ldGMvZGVmYXVsdC93YXRjaGRvZworIEV4ZWNTdGFydFByZT0vYmluL3NoIC1jICdbIC16ICIke3dhdGNoZG9nX21vZHVsZX0iIF0gfHwgWyAiJHt3YXRjaGRvZ19tb2R1bGV9IiA9ICJub25lIiBdIHx8IC9zYmluL21vZHByb2JlICR3YXRjaGRvZ19tb2R1bGUnCistRXhlY1N0YXJ0PS9iaW4vc2ggLWMgJ1sgJHJ1bl93YXRjaGRvZyAhPSAxIF0gfHwgZXhlYyAvdXNyL3NiaW4vd2F0Y2hkb2cgJHdhdGNoZG9nX29wdGlvbnMnCistRXhlY1N0b3BQb3N0PS9iaW4vc2ggLWMgJ1sgJHJ1bl93ZF9rZWVwYWxpdmUgIT0gMSBdIHx8IGZhbHNlJworK0V4ZWNTdGFydD0vYmluL3NoIC1jICdbIHgkcnVuX3dhdGNoZG9nICE9IHgxIF0gfHwgZXhlYyAvdXNyL3NiaW4vd2F0Y2hkb2cgJHdhdGNoZG9nX29wdGlvbnMnCisrUElERmlsZT0vdmFyL3J1bi93YXRjaGRvZy5waWQKKyAKKyBbSW5zdGFsbF0KKy1XYW50ZWRCeT1kZWZhdWx0LnRhcmdldAorLQorK1dhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CitkaWZmIC0tZ2l0IGEvZGViaWFuL3dkX2tlZXBhbGl2ZS5zZXJ2aWNlIGIvZGViaWFuL3dkX2tlZXBhbGl2ZS5zZXJ2aWNlCitpbmRleCA0NWIwMThlLi43ZjhiMWRjIDEwMDY0NAorLS0tIGEvZGViaWFuL3dkX2tlZXBhbGl2ZS5zZXJ2aWNlCisrKysgYi9kZWJpYW4vd2Rfa2VlcGFsaXZlLnNlcnZpY2UKK0BAIC0xLDEzICsxLDEzIEBACisgW1VuaXRdCisgRGVzY3JpcHRpb249d2F0Y2hkb2cga2VlcGFsaXZlIGRhZW1vbgorLUJlZm9yZT13YXRjaGRvZy5zZXJ2aWNlIHNodXRkb3duLnRhcmdldAorLUNvbmZsaWN0cz13YXRjaGRvZy5zZXJ2aWNlIHNodXRkb3duLnRhcmdldAorK0FmdGVyPW11bHRpLXVzZXIudGFyZ2V0CisgCisgW1NlcnZpY2VdCisgVHlwZT1mb3JraW5nCisgRW52aXJvbm1lbnRGaWxlPS9ldGMvZGVmYXVsdC93YXRjaGRvZworIEV4ZWNTdGFydFByZT0vYmluL3NoIC1jICdbIC16ICIke3dhdGNoZG9nX21vZHVsZX0iIF0gfHwgWyAiJHt3YXRjaGRvZ19tb2R1bGV9IiA9ICJub25lIiBdIHx8IC9zYmluL21vZHByb2JlICR3YXRjaGRvZ19tb2R1bGUnCistRXhlY1N0YXJ0UHJlPS0vYmluL3N5c3RlbWN0bCByZXNldC1mYWlsZWQgd2F0Y2hkb2cuc2VydmljZQorIEV4ZWNTdGFydD0vdXNyL3NiaW4vd2Rfa2VlcGFsaXZlICR3YXRjaGRvZ19vcHRpb25zCistRXhlY1N0YXJ0UG9zdD0vYmluL3NoIC1jICdsbiAtcyAvdmFyL3J1bi93ZF9rZWVwYWxpdmUucGlkIC9ydW4vc2VuZHNpZ3Mub21pdC5kL3dkX2tlZXBhbGl2ZS5waWQnCistRXhlY1N0b3BQb3N0PS9iaW4vc2ggLWMgJ3JtIC1mIC9ydW4vc2VuZHNpZ3Mub21pdC5kL3dkX2tlZXBhbGl2ZS5waWQnCisrUElERmlsZT0vdmFyL3J1bi93ZF9rZWVwYWxpdmUucGlkCisrCisrW0luc3RhbGxdCisrV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy93YXRjaGRvZy1jb25mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy93YXRjaGRvZy1jb25mLnBhdGNoCmluZGV4IGU2OGFkNTQuLmVjNDRjODAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2cvd2F0Y2hkb2ctY29uZi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nL3dhdGNoZG9nLWNvbmYucGF0Y2gKQEAgLTEsMTQgKzEsMTYgQEAKIFNpZ25lZC1vZmYtYnk6IERpZWdvIFJvbmRpbmkgPGRpZWdvLm1sQHpvaG8uY29tPgogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCiAKLS0tLSB3YXRjaGRvZy01LjEzLm9yaWcvd2F0Y2hkb2cuY29uZgkyMDEzLTAyLTAxIDEyOjE1OjQ0LjAwMDAwMDAwMCArMDEwMAotKysrIHdhdGNoZG9nLTUuMTMvd2F0Y2hkb2cuY29uZgkyMDE0LTExLTEzIDEwOjU5OjQzLjIzMzk0MzAwMCArMDEwMAotQEAgLTIwLDcgKzIwLDcgQEAKLSAjdGVzdC1iaW5hcnkJCT0gCi0gI3Rlc3QtdGltZW91dAkJPSAKK0luZGV4OiB3YXRjaGRvZy01LjE1L3dhdGNoZG9nLmNvbmYKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB3YXRjaGRvZy01LjE1Lm9yaWcvd2F0Y2hkb2cuY29uZgorKysrIHdhdGNoZG9nLTUuMTUvd2F0Y2hkb2cuY29uZgorQEAgLTI4LDcgKzI4LDcgQEAKKyAjcmV0cnktdGltZW91dAkJPSA2MAorICNyZXBhaXItbWF4aW11bQkJPSAxCiAgCiAtI3dhdGNoZG9nLWRldmljZQk9IC9kZXYvd2F0Y2hkb2cKICt3YXRjaGRvZy1kZXZpY2UJPSAvZGV2L3dhdGNoZG9nCiAgCiAgIyBEZWZhdWx0cyBjb21waWxlZCBpbnRvIHRoZSBiaW5hcnkKLSAjdGVtcGVyYXR1cmUtZGV2aWNlCT0KKyAjdGVtcGVyYXR1cmUtc2Vuc29yCT0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2dfNS4xNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2dfNS4xNS5iYgppbmRleCAzZDBiNzJlLi4zN2IzN2FlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nXzUuMTUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZ181LjE1LmJiCkBAIC0xMCw2ICsxMCw3IEBACiAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3dhdGNoZG9nL3dhdGNoZG9nLSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtbGludXgtcGFyYW0uaC1mb3ItRVhFQ19QQUdFU0laRS1kZWZpbml0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtd2F0Y2hkb2ctcmVtb3ZlLWludGVyZGVwZW5kZW5jaWVzLW9mLXdhdGNoZG9nLWFuZC13ZC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly93YXRjaGRvZy1pbml0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3dhdGNoZG9nLWNvbmYucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vd2Rfa2VlcGFsaXZlLmluaXQgXApAQCAtMzYsNyArMzcsOSBAQAogSU5JVFNDUklQVF9OQU1FXyR7UE59LWtlZXBhbGl2ZSA9ICJ3ZF9rZWVwYWxpdmUiCiBJTklUU0NSSVBUX1BBUkFNU18ke1BOfS1rZWVwYWxpdmUgPSAic3RhcnQgMTUgMSAyIDMgNCA1IC4gc3RvcCA4NSAwIDYgLiIKIAotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIndhdGNoZG9nLnNlcnZpY2Ugd2Rfa2VlcGFsaXZlLnNlcnZpY2UiCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWtlZXBhbGl2ZSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJ3YXRjaGRvZy5zZXJ2aWNlIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LWtlZXBhbGl2ZSA9ICJ3ZF9rZWVwYWxpdmUuc2VydmljZSIKIAogZG9faW5zdGFsbF9hcHBlbmQoKSB7CiAJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQpAQCAtNTQsNiArNTcsNyBAQAogCiBGSUxFU18ke1BOfS1rZWVwYWxpdmUgPSAiIFwKICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC93ZF9rZWVwYWxpdmUgXAorICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vd2Rfa2VlcGFsaXZlLnNlcnZpY2UgXAogICAgICR7c2JpbmRpcn0vd2Rfa2VlcGFsaXZlIFwKICIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXQuaW5jCmluZGV4IDEyOTllZGIuLjNjZmY2NTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldC5pbmMKQEAgLTIsNyArMiw3IEBACiBIT01FUEFHRSA9ICJodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3dnZXQvIgogU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCiBMSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNjc4OTU3YjBjOGU5NjRhYTZjNzBmZDc3NjQxYTcxZSIKIERFUEVORFMgPSAiZ251dGxzIHpsaWIgbGlicGNyZSIKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcGtnY29uZmlnCkBAIC0xMCw2ICsxMCw5IEBACiBFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXNzbD1nbnV0bHMgLS1kaXNhYmxlLXJwYXRoIC0tZGlzYWJsZS1pcmkgXAogICAgICAgICAgICAgICAgIC0td2l0aG91dC1saWJnbnV0bHMtcHJlZml4IGFjX2N2X2hlYWRlcl91dWlkX3V1aWRfaD1ubyIKIAorRVhUUkFfT0VNQUtFICs9ICdUT09MQ0hBSU5fT1BUSU9OUz0iJHtUT09MQ0hBSU5fT1BUSU9OU30iIFwKKyAgICAgICAgICAgICAgICAgREVCVUdfUFJFRklYX01BUD0iJHtERUJVR19QUkVGSVhfTUFQfSInCisKIEFMVEVSTkFUSVZFXyR7UE59ID0gIndnZXQiCiBBTFRFUk5BVElWRV8ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAiIgogQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXQvMDAwMi1pbXByb3ZlLXJlcHJvZHVjaWJpbGl0eS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0LzAwMDItaW1wcm92ZS1yZXByb2R1Y2liaWxpdHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc4MWRmMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0LzAwMDItaW1wcm92ZS1yZXByb2R1Y2liaWxpdHkucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAorRnJvbSA3ZjEzNTc1MjlkMjNiMzU2YjQ1ZmJiMGRkNzM4ODU4ODE2MmU0Y2I4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxMCBKYW4gMjAxOCAxNDo0MzoyMCArMDgwMAorU3ViamVjdDogW1BBVENIXSBzcmMvTWFrZWZpbGUuYW06IGltcHJvdmUgcmVwcm9kdWNpYmlsaXR5CisKK1JlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMgZnJvbSB0aGUgaW50ZXJuYWxseQorZ2VuZXJhdGVkIGZpbGUgdmVyc2lvbi5jLiBUaGUgcmVmZXJlbmNlcyBnZXQgY29tcGlsZWQgaW50bworZXhlY3V0YWJsZXMsIHdoaWNoIGxlYWRzIHRvIG5vbi1yZXByb2R1Y2libGUgYnVpbGRzLgorVGhlIHJlbW92ZWQgcmVmZXJlbmNlcyAoLS1zeXNyb290LCAtZmRlYnVnLXByZWZpeC1tYXApIHdlcmUKK29ubHkgdXNlZCBhcyBwYXJ0IG9mIHRoZSBgd2dldCAtLXZlcnNpb24nIHdoaWNoIGRvIG5vdCBoYXZlCitzaWRlIGVmZmVjdC4KKworLi4uCiskIHdnZXQgLS12ZXJzaW9uCitHTlUgV2dldCAxLjE0IGJ1aWx0IG9uIGxpbnV4LWdudS4KKworK2RpZ2VzdCAraHR0cHMgK2lwdjYgK2lyaSArbGFyZ2UtZmlsZSArbmxzICtudGxtICtvcGllICtzc2wvb3BlbnNzbAorCitXZ2V0cmM6CisgICAgL2V0Yy93Z2V0cmMgKHN5c3RlbSkKK0xvY2FsZTogL3Vzci9zaGFyZS9sb2NhbGUKK0NvbXBpbGU6IGdjYyAtREhBVkVfQ09ORklHX0ggLURTWVNURU1fV0dFVFJDPSIvZXRjL3dnZXRyYyIKKyAgICAtRExPQ0FMRURJUj0iL3Vzci9zaGFyZS9sb2NhbGUiIC1JLiAtSS4uL2xpYiAtSS4uL2xpYiAtTzIgLWcgLXBpcGUKKyAgICAtV2FsbCAtV3AsLURfRk9SVElGWV9TT1VSQ0U9MiAtZmV4Y2VwdGlvbnMgLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nCisgICAgLS1wYXJhbT1zc3AtYnVmZmVyLXNpemU9NCAtZ3JlY29yZC1nY2Mtc3dpdGNoZXMgLW02NCAtbXR1bmU9Z2VuZXJpYworTGluazogZ2NjIC1PMiAtZyAtcGlwZSAtV2FsbCAtV3AsLURfRk9SVElGWV9TT1VSQ0U9MiAtZmV4Y2VwdGlvbnMKKyAgICAtZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcgLS1wYXJhbT1zc3AtYnVmZmVyLXNpemU9NAorICAgIC1ncmVjb3JkLWdjYy1zd2l0Y2hlcyAtbTY0IC1tdHVuZT1nZW5lcmljIC1sc3NsIC1sY3J5cHRvCisgICAgL3Vzci9saWI2NC9saWJzc2wuc28gL3Vzci9saWI2NC9saWJjcnlwdG8uc28gL3Vzci9saWI2NC9saWJ6LnNvCisgICAgLWxkbCAtbHogLWx6IC1saWRuIC1sdXVpZCAtbHBjcmUgZnRwLW9waWUubyBvcGVuc3NsLm8gaHR0cC1udGxtLm8KKyAgICAuLi9saWIvbGliZ251LmEKKy4uLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9NYWtlZmlsZS5hbSB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggMjhjMGJlMi4uNDQwODRhMyAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtODcsOSArODcsMTMgQEAgdmVyc2lvbi5jOiAgJCh3Z2V0X1NPVVJDRVMpIC4uL2xpYi9saWJnbnUuYQorIAllY2hvICcjaW5jbHVkZSAidmVyc2lvbi5oIicgPj4gJEAKKyAJZWNobyAnY29uc3QgY2hhciAqdmVyc2lvbl9zdHJpbmcgPSAiQFZFUlNJT05AIjsnID4+ICRACisgCWVjaG8gJ2NvbnN0IGNoYXIgKmNvbXBpbGF0aW9uX3N0cmluZyA9ICInJChDT01QSUxFKSciOycgXAorKwkgICAgfCBzZWQgLWUgInMsJChUT09MQ0hBSU5fT1BUSU9OUyksLGciIFwKKysJICAgICAgICAgIC1lICJzLCQoREVCVUdfUFJFRklYX01BUCksLGciIFwKKyAJICAgIHwgJChFU0NBUEVRVU9URSkgPj4gJEAKKyAJZWNobyAnY29uc3QgY2hhciAqbGlua19zdHJpbmcgPSAiJyQoQ0NMRCkgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSBcCisgCSQoQU1fTERGTEFHUykgJChMREZMQUdTKSAkKExJQlMpICQod2dldF9MREFERCknIjsnIFwKKysJICAgIHwgc2VkIC1lICJzLCQoVE9PTENIQUlOX09QVElPTlMpLCxnIiBcCisrCSAgICAgICAgICAtZSAicywkKERFQlVHX1BSRUZJWF9NQVApLCxnIiBcCisgCSAgICB8ICQoRVNDQVBFUVVPVEUpID4+ICRACisgCisgY3NzLmM6ICQoc3JjZGlyKS9jc3MubAorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0L0NWRS0yMDE3LTY1MDgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldC9DVkUtMjAxNy02NTA4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWMyOTBmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0L0NWRS0yMDE3LTY1MDgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIDRkNzI5ZTMyMmZhZTM1OWExYWVmYWFmZWMxMTQ0NzY0YTU0ZThhZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/VGltPTIwUj1DMz1CQ2hzZW4/PSA8dGltLnJ1ZWhzZW5AZ214LmRlPgotRGF0ZTogTW9uLCA2IE1hciAyMDE3IDEwOjA0OjIyICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBDUkxGIGluamVjdGlvbiBpbiBXZ2V0IGhvc3QgcGFydAotCi0qIHNyYy91cmwuYyAodXJsX3BhcnNlKTogUmVqZWN0IGNvbnRyb2wgY2hhcmFjdGVycyBpbiBob3N0IHBhcnQgb2YgVVJMCi0KLVJlcG9ydGVkLWJ5OiBPcmFuZ2UgVHNhaQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvd2dldC5naXQvY29tbWl0Lz9pZD00ZDcyOWUzMjJmYWUzNTlhMWFlZmFhZmVjMTE0NDc2NGE1NGU4YWQ0XQotCi1DVkU6IENWRS0yMDE3LTY1MDgKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL3VybC5jIHwgMTEgKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3VybC5jIGIvc3JjL3VybC5jCi1pbmRleCA4ZjhmZjBiLi43ZDM2YjI3IDEwMDY0NAotLS0tIGEvc3JjL3VybC5jCi0rKysgYi9zcmMvdXJsLmMKLUBAIC05MjUsNiArOTI1LDE3IEBAIHVybF9wYXJzZSAoY29uc3QgY2hhciAqdXJsLCBpbnQgKmVycm9yLCBzdHJ1Y3QgaXJpICppcmksIGJvb2wgcGVyY2VudF9lbmNvZGUpCi0gICAgICAgdXJsX3VuZXNjYXBlICh1LT5ob3N0KTsKLSAgICAgICBob3N0X21vZGlmaWVkID0gdHJ1ZTsKLSAKLSsgICAgICAvKiBjaGVjayBmb3IgaW52YWxpZCBjb250cm9sIGNoYXJhY3RlcnMgaW4gaG9zdCBuYW1lICovCi0rICAgICAgZm9yIChwID0gdS0+aG9zdDsgKnA7IHArKykKLSsgICAgICAgIHsKLSsgICAgICAgICAgaWYgKGNfaXNjbnRybCgqcCkpCi0rICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgdXJsX2ZyZWUodSk7Ci0rICAgICAgICAgICAgICBlcnJvcl9jb2RlID0gUEVfSU5WQUxJRF9IT1NUX05BTUU7Ci0rICAgICAgICAgICAgICBnb3RvIGVycm9yOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsKLSAgICAgICAvKiBBcHBseSBJRE5BIHJlZ2FyZGxlc3Mgb2YgaXJpLT51dGY4X2VuY29kZSBzdGF0dXMgKi8KLSAgICAgICBpZiAob3B0LmVuYWJsZV9pcmkgJiYgaXJpKQotICAgICAgICAgewotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldF8xLjE5LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dnZXQvd2dldF8xLjE5LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4YmRlOTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXRfMS4xOS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vd2dldC93Z2V0LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTY1MDgucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg3Y2VhMzZiNzE2MWZkNDNlM2ZkNTFhNGU4Yjg5Njg5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjllNGYxMmRhMzhjYzYxNjdkMDc1MmQ5MzRhYmUyN2M3YjE1OTlhOWFmMjk0ZTczODI5YmU3YWM3YjViNGRhNDAiCi0KLXJlcXVpcmUgd2dldC5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0XzEuMTkuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2dldC93Z2V0XzEuMTkuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzdkOGM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93Z2V0L3dnZXRfMS4xOS41LmJiCkBAIC0wLDAgKzEsOSBAQAorU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3dnZXQvd2dldC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWltcHJvdmUtcmVwcm9kdWNpYmlsaXR5LnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZGI2ZjAzZDY1NTA0MWY4MmViNjRiOGM4YTFmYTdkYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiMzkyMTJhYmUxYTczZjJiMjhmNGM2Y2IyMjNjNzM4NTU5Y2FhYzkxZDZlNDE2YTZkOTFkNGI5ZDU1YzlmYWVlIgorCityZXF1aXJlIHdnZXQuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0ZjhkMTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ZGctdXRpbHMveGRnLXV0aWxzXzEuMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotU1VNTUFSWSA9ICJCYXNpYyBkZXNrdG9wIGludGVncmF0aW9uIGZ1bmN0aW9ucyIKLUhPTUVQQUdFID0gImh0dHBzOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL3hkZy11dGlscy8iCi1ERVNDUklQVElPTiA9ICJUaGUgeGRnLXV0aWxzIHBhY2thZ2UgaXMgYSBzZXQgb2Ygc2ltcGxlIHNjcmlwdHMgdGhhdCBwcm92aWRlIGJhc2ljIFwKLWRlc2t0b3AgaW50ZWdyYXRpb24gZnVuY3Rpb25zIGZvciBhbnkgRnJlZSBEZXNrdG9wLCBzdWNoIGFzIExpbnV4LiBcCi1UaGV5IGFyZSBpbnRlbmRlZCB0byBwcm92aWRlIGEgc2V0IG9mIGRlZmFjdG8gc3RhbmRhcmRzLiBcCi1UaGUgZm9sbG93aW5nIHNjcmlwdHMgYXJlIHByb3ZpZGVkIGF0IHRoaXMgdGltZTogXAoteGRnLWRlc2t0b3AtaWNvbiBcCi14ZGctZGVza3RvcC1tZW51IFwKLXhkZy1lbWFpbCBcCi14ZGctaWNvbi1yZXNvdXJjZSBcCi14ZGctbWltZSBcCi14ZGctb3BlbiBcCi14ZGctc2NyZWVuc2F2ZXIgXAoteGRnLXRlcm1pbmFsIFwKLSIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hNTM2N2E5MDkzNDA5OGQ2YjA1YWYzYjc0NjQwNTAxNCIKLQotU1JDX1VSSSA9ICJodHRwOi8vcG9ydGxhbmQuZnJlZWRlc2t0b3Aub3JnL2Rvd25sb2FkLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZWluc3RhdGUteGRnLXRlcm1pbmFsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtYnVpbGQtdGhlLWluLXNjcmlwdC1tYW51YWwucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjJkMGFlYzYwMzc3NjlhNWYxMzhmZjQwNGIxYmI0YjE1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImIwZGQ2M2EyNTc2ZTBiYjE2ZjFhYTc4ZDZkZGY3ZDY3ODQ3ODRhMDk4ZDRkZjE3MTYxY2Q2YTE3YzdiYzQxMjUiCi0KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInhkZy11dGlscy0oP1A8cHZlcj4oKFxkK1tcLlwtX10qKSspKChyY3xhbHBoYXxiZXRhKVxkKyk/KVwuKHRhclwuZ3p8dGd6KSIKLQotIyBOZWVkcyBicm9rZW5zZXAgYXMgdGhpcyBkb2Vzbid0IHVzZSBhdXRvbWFrZQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi0jIFRoZSB4cHJvcCByZXF1aXJlcyB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1ERVBFTkRTID0gInhtbHRvLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ICs9ICJ4cHJvcCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGRnLXV0aWxzL3hkZy11dGlsc18xLjEuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGRnLXV0aWxzL3hkZy11dGlsc18xLjEuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzM5Mjg5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ZGctdXRpbHMveGRnLXV0aWxzXzEuMS4yLmJiCkBAIC0wLDAgKzEsMzcgQEAKK1NVTU1BUlkgPSAiQmFzaWMgZGVza3RvcCBpbnRlZ3JhdGlvbiBmdW5jdGlvbnMiCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS94ZGctdXRpbHMvIgorREVTQ1JJUFRJT04gPSAiVGhlIHhkZy11dGlscyBwYWNrYWdlIGlzIGEgc2V0IG9mIHNpbXBsZSBzY3JpcHRzIHRoYXQgcHJvdmlkZSBiYXNpYyBcCitkZXNrdG9wIGludGVncmF0aW9uIGZ1bmN0aW9ucyBmb3IgYW55IEZyZWUgRGVza3RvcCwgc3VjaCBhcyBMaW51eC4gXAorVGhleSBhcmUgaW50ZW5kZWQgdG8gcHJvdmlkZSBhIHNldCBvZiBkZWZhY3RvIHN0YW5kYXJkcy4gXAorVGhlIGZvbGxvd2luZyBzY3JpcHRzIGFyZSBwcm92aWRlZCBhdCB0aGlzIHRpbWU6IFwKK3hkZy1kZXNrdG9wLWljb24gXAoreGRnLWRlc2t0b3AtbWVudSBcCit4ZGctZW1haWwgXAoreGRnLWljb24tcmVzb3VyY2UgXAoreGRnLW1pbWUgXAoreGRnLW9wZW4gXAoreGRnLXNjcmVlbnNhdmVyIFwKK3hkZy10ZXJtaW5hbCBcCisiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTUzNjdhOTA5MzQwOThkNmIwNWFmM2I3NDY0MDUwMTQiCisKK1NSQ19VUkkgPSAiaHR0cDovL3BvcnRsYW5kLmZyZWVkZXNrdG9wLm9yZy9kb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVpbnN0YXRlLXhkZy10ZXJtaW5hbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LWJ1aWxkLXRoZS1pbi1zY3JpcHQtbWFudWFsLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzNjFlNzVlYjc2Yzk0ZDE5ZjZmNGYzMzBkOGVlNjI2YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NTE5NTJlMmM2YmIyMTIxNGUwYmI1NGUwZGZmYTA1N2QzMGY1NTYzMzAwMjI1YzI0YzE2ZmJhODQ2MjU4YmNjIgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJ4ZGctdXRpbHMtKD9QPHB2ZXI+KChcZCtbXC5cLV9dKikrKSgocmN8YWxwaGF8YmV0YSlcZCspPylcLih0YXJcLmd6fHRneikiCisKKyMgTmVlZHMgYnJva2Vuc2VwIGFzIHRoaXMgZG9lc24ndCB1c2UgYXV0b21ha2UKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworIyBUaGUgeHByb3AgcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworREVQRU5EUyA9ICJ4bWx0by1uYXRpdmUgbGlieHNsdC1uYXRpdmUiCitSREVQRU5EU18ke1BOfSArPSAieHByb3AiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMjQuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZXBpcGhhbnlfMy4yNC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTA3ZDIzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZXBpcGhhbnlfMy4yNC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotU1VNTUFSWSA9ICJXZWJLaXQgYmFzZWQgd2ViIGJyb3dzZXIgZm9yIEdOT01FIgotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotREVQRU5EUyA9ICJsaWJzb3VwLTIuNCB3ZWJraXRndGsgZ3RrKzMgaXNvLWNvZGVzIGF2YWhpIGxpYm5vdGlmeSBnY3IgXAotCSAgIGdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgZ25vbWUtZGVza3RvcDMgbGlieG1sMi1uYXRpdmUgXAotCSAgIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBqc29uLWdsaWIiCi0KLWluaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdldHRleHQKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLXllbHAubTQtZHJvcC10aGUtY2hlY2stZm9yLWl0c3Rvb2wucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtYm9va21hcmtzLUNoZWNrLWZvci1yZXR1cm4tdmFsdWUtb2YtZnJlYWQucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJjMDIyMWFlYzZhMDg5MzVlNjg1NGVhYTlkZTk0NTFlZiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImZlZjUxNjc2MzEwZDlmMzdlMThjOWIyZDc3ODI1NDIzMmViMTdjY2NkOTg4YzJkMWVjZjQyYzdiMjk2M2ExNTQiCi0KLUVYVFJBX09FQ09ORiArPSAiIC0td2l0aC1kaXN0cmlidXRvci1uYW1lPSR7RElTVFJPfSAtLWVuYWJsZS1kZWJ1Zz1ubyIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lIHM6aGVscDo6ZyAke1N9L01ha2VmaWxlLmFtCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMSAke2RhdGFkaXJ9L2dub21lLXNoZWxsL3NlYXJjaC1wcm92aWRlcnMiCi1SREVQRU5EU18ke1BOfSA9ICJpc28tY29kZXMgYWR3YWl0YS1pY29uLXRoZW1lIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9lcGlwaGFueV8zLjI2LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMjYuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjUwZjc2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9lcGlwaGFueV8zLjI2LjYuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJXZWJLaXQgYmFzZWQgd2ViIGJyb3dzZXIgZm9yIEdOT01FIgorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworREVQRU5EUyA9ICJsaWJzb3VwLTIuNCB3ZWJraXRndGsgZ3RrKzMgaXNvLWNvZGVzIGF2YWhpIGxpYm5vdGlmeSBnY3IgXAorCSAgIGdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgZ25vbWUtZGVza3RvcDMgbGlieG1sMi1uYXRpdmUgXAorCSAgIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBqc29uLWdsaWIiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitpbmhlcml0IGdub21lYmFzZSBnc2V0dGluZ3MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnZXR0ZXh0CitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0dOT01FQk59LyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vJHtHTk9NRUJOfS0ke1BWfS50YXIuJHtHTk9NRV9DT01QUkVTU19UWVBFfTtuYW1lPWFyY2hpdmUgXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1oZWxwLW1lc29uLmJ1aWxkLWRpc2FibGUtdGhlLXVzZS1vZi15ZWxwLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiODQ0OTk2ODM2NmE2ZjlhYWZmM2FjMjI4ZGRmYzdjNjYiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIwMWIxNmFhNTVkMzEyYWUwZjE3ZDMxMzZmOTBkOGM2OGFjNzQ4NzE1ZjExOTQxMmZiMTkxNzAyM2M2ZjYzMGE4IgorCitFWFRSQV9PRU1FU09OICs9ICIgLURkaXN0cmlidXRvcl9uYW1lPSR7RElTVFJPfSIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xICR7ZGF0YWRpcn0vZ25vbWUtc2hlbGwvc2VhcmNoLXByb3ZpZGVycyIKK1JERVBFTkRTXyR7UE59ID0gImlzby1jb2RlcyBhZHdhaXRhLWljb24tdGhlbWUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2ZpbGVzLzAwMDEtYm9va21hcmtzLUNoZWNrLWZvci1yZXR1cm4tdmFsdWUtb2YtZnJlYWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2ZpbGVzLzAwMDEtYm9va21hcmtzLUNoZWNrLWZvci1yZXR1cm4tdmFsdWUtb2YtZnJlYWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkY2QzOTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9maWxlcy8wMDAxLWJvb2ttYXJrcy1DaGVjay1mb3ItcmV0dXJuLXZhbHVlLW9mLWZyZWFkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSBhYTIxNzZiZTMyZWVkMjU3OGRhODJmMzRkMzExNDhmOTM0YzExYzM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjggSnVuIDIwMTcgMTc6MDM6NDUgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gYm9va21hcmtzOiBDaGVjayBmb3IgcmV0dXJuIHZhbHVlIG9mIGZyZWFkKCkKLQotRml4ZXMgYmVsb3cgY29tcGlsZXIgZXJyb3IKLWlnbm9yaW5nIHJldHVybiB2YWx1ZSBvZiAnZnJlYWQnLCBkZWNsYXJlZCB3aXRoIGF0dHJpYnV0ZSB3YXJuX3VudXNlZF9yZXN1bHQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvYm9va21hcmtzL2VwaHktYm9va21hcmsuYyB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jvb2ttYXJrcy9lcGh5LWJvb2ttYXJrLmMgYi9zcmMvYm9va21hcmtzL2VwaHktYm9va21hcmsuYwotaW5kZXggZmYwMjM5Yi4uODYzM2NlNCAxMDA2NDQKLS0tLSBhL3NyYy9ib29rbWFya3MvZXBoeS1ib29rbWFyay5jCi0rKysgYi9zcmMvYm9va21hcmtzL2VwaHktYm9va21hcmsuYwotQEAgLTIxNyw3ICsyMTcsOCBAQCBlcGh5X2Jvb2ttYXJrX2luaXQgKEVwaHlCb29rbWFyayAqc2VsZikKLSAgIGJ5dGVzID0gZ19tYWxsb2MgKG51bV9ieXRlcyk7Ci0gCi0gICBmcCA9IGZvcGVuICgiL2Rldi91cmFuZG9tIiwgInIiKTsKLS0gIGZyZWFkIChieXRlcywgc2l6ZW9mIChndWludDgpLCBudW1fYnl0ZXMsIGZwKTsKLSsgIGlmIChmcmVhZCAoYnl0ZXMsIHNpemVvZiAoZ3VpbnQ4KSwgbnVtX2J5dGVzLCBmcCkgIT0gbnVtX2J5dGVzKQotKyAgICBnX3dhcm5pbmcoIlVuYWJsZSB0byByZWFkIGRhdGEgZnJvbSAvZGV2L3VyYW5kb21cbiIpOwotIAotICAgc2VsZi0+aWQgPSBnX21hbGxvYzAgKElEX0xFTiArIDEpOwotICAgZm9yIChnc2l6ZSBpID0gMDsgaSA8IG51bV9ieXRlczsgaSsrKSB7Ci0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2ZpbGVzLzAwMDEteWVscC5tNC1kcm9wLXRoZS1jaGVjay1mb3ItaXRzdG9vbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZmlsZXMvMDAwMS15ZWxwLm00LWRyb3AtdGhlLWNoZWNrLWZvci1pdHN0b29sLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTg1ZDdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZmlsZXMvMDAwMS15ZWxwLm00LWRyb3AtdGhlLWNoZWNrLWZvci1pdHN0b29sLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSAzMGYwM2EyNTZlZmUzNzVhNGQ1YzNhMjRiZjQxNjhlYmYzODBlM2FiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDMwIEp1bCAyMDE1IDE1OjEzOjIzICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHllbHAubTQ6IGRyb3AgdGhlIGNoZWNrIGZvciBpdHN0b29sCi0KLUl0IGlzbid0IHVzZWQgZm9yIGFueXRoaW5nIGR1cmluZyBidWlsZCwgc28gdGhlcmUncyBubyBuZWVkIHRvIHByb3ZpZGUKLWl0IGFzIGEgcmVjaXBlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3RhcmJhbGwtc3BlY2lmaWMgaXNzdWVdCi0tLS0KLSBtNC95ZWxwLm00IHwgNiAtLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL200L3llbHAubTQgYi9tNC95ZWxwLm00Ci1pbmRleCA1ZGI4NDdmLi4xYjZlZGU0IDEwMDY0NAotLS0tIGEvbTQveWVscC5tNAotKysrIGIvbTQveWVscC5tNAotQEAgLTI3LDEyICsyNyw2IEBAIEFDX0FSR19XSVRIKFtoZWxwLWRpcl0sCi0gSEVMUF9ESVI9IiR3aXRoX2hlbHBfZGlyIgotIEFDX1NVQlNUKEhFTFBfRElSKQotIAotLUFDX0FSR19WQVIoW0lUU1RPT0xdLCBbUGF0aCB0byB0aGUgYGl0c3Rvb2xgIGNvbW1hbmRdKQotLUFDX0NIRUNLX1BST0coW0lUU1RPT0xdLCBbaXRzdG9vbF0sIFtpdHN0b29sXSkKLS1pZiB0ZXN0IHgiJElUU1RPT0wiID0geDsgdGhlbgotLSAgQUNfTVNHX0VSUk9SKFtpdHN0b29sIG5vdCBmb3VuZF0pCi0tZmkKLS0KLSBBQ19BUkdfVkFSKFtYTUxMSU5UXSwgW1BhdGggdG8gdGhlIGB4bWxsaW50YCBjb21tYW5kXSkKLSBBQ19DSEVDS19QUk9HKFtYTUxMSU5UXSwgW3htbGxpbnRdLCBbeG1sbGludF0pCi0gaWYgdGVzdCB4IiRYTUxMSU5UIiA9IHg7IHRoZW4KLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9maWxlcy8wMDAyLWhlbHAtbWVzb24uYnVpbGQtZGlzYWJsZS10aGUtdXNlLW9mLXllbHAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2ZpbGVzLzAwMDItaGVscC1tZXNvbi5idWlsZC1kaXNhYmxlLXRoZS11c2Utb2YteWVscC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDk1MTdkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9maWxlcy8wMDAyLWhlbHAtbWVzb24uYnVpbGQtZGlzYWJsZS10aGUtdXNlLW9mLXllbHAucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSBmYzMxNGZjM2E2NmM5MmZlNzNlMWEwY2VhNGY0OWQxMWIyOWUxZjQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDMxIEphbiAyMDE4IDE1OjUwOjM4ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBoZWxwL21lc29uLmJ1aWxkOiBkaXNhYmxlIHRoZSB1c2Ugb2YgeWVscAorCitJbiBwYXJ0aWN1bGFyIHRoaXMgYXZvaWRzIGNhbGxpbmcgaXRzdG9vbCB3aGljaCBvZS1jb3JlIGRvZXNuJ3QgcHJvdmlkZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBoZWxwL21lc29uLmJ1aWxkIHwgMTAgKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9oZWxwL21lc29uLmJ1aWxkIGIvaGVscC9tZXNvbi5idWlsZAoraW5kZXggZjcyMGFkZC4uY2JmZWIxZSAxMDA2NDQKKy0tLSBhL2hlbHAvbWVzb24uYnVpbGQKKysrKyBiL2hlbHAvbWVzb24uYnVpbGQKK0BAIC00Niw4ICs0Niw4IEBAIGhlbHBfbGluZ3VhcyA9IFsKKyAgICdzdicKKyBdCisgCistZ25vbWUueWVscChtZXNvbi5wcm9qZWN0X25hbWUoKSwKKy0gIHNvdXJjZXM6IGhlbHBfZmlsZXMsCistICBtZWRpYTogaGVscF9tZWRpYSwKKy0gIGxhbmd1YWdlczogaGVscF9saW5ndWFzLAorLSkKKysjZ25vbWUueWVscChtZXNvbi5wcm9qZWN0X25hbWUoKSwKKysjICBzb3VyY2VzOiBoZWxwX2ZpbGVzLAorKyMgIG1lZGlhOiBoZWxwX21lZGlhLAorKyMgIGxhbmd1YWdlczogaGVscF9saW5ndWFzLAorKyMpCistLSAKKzIuMTUuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2djci9nY3JfMy4yMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nY3IvZ2NyXzMuMjAuMC5iYgppbmRleCA0NDUwZTE1Li5hNjhlMGY2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2djci9nY3JfMy4yMC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2NyL2djcl8zLjIwLjAuYmIKQEAgLTgsNyArOCw3IEBACiBERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSBndGsrMyBwMTEta2l0IGdsaWItMi4wIGxpYmdjcnlwdCBcCiAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICdsaWJ4c2x0LW5hdGl2ZScsICcnLCBkKX0iCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGdub21lYmFzZSBndGstaWNvbi1jYWNoZSBndGstZG9jIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24KK2luaGVyaXQgZ25vbWViYXNlIGd0ay1pY29uLWNhY2hlIGd0ay1kb2MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiB2YWxhIGdvYmplY3QtaW50cm9zcGVjdGlvbgogIyBkZXBlbmRzIG9uIGd0ayszLCBidXQgYWxzbyB4MTEgdGhyb3VnaCBndGsrLXgxMQogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWYvMDAwMS1GaXgtd2l0aG91dC1saWJ0aWZmLW5vdC1oYXZpbmctYW4tZWZmZWN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWYvMDAwMS1GaXgtd2l0aG91dC1saWJ0aWZmLW5vdC1oYXZpbmctYW4tZWZmZWN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhNTRkOGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zi8wMDAxLUZpeC13aXRob3V0LWxpYnRpZmYtbm90LWhhdmluZy1hbi1lZmZlY3QucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSA0NjBiZWZjOTkyYWRiMzI0MzRiMDQwOGI0NTNiZTM5YTY4NjZjY2Y4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDEwIE9jdCAyMDE3IDE0OjMzOjE4ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCAtLXdpdGhvdXQtbGlidGlmZiBub3QgaGF2aW5nIGFuIGVmZmVjdC4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03ODg3NzBdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMzE1ZTBjYy4uOThlNzgwYyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNjc2LDcgKzY3Niw3IEBAIGlmIHRlc3QgeCRnaW9fY2FuX3NuaWZmID0geDsgdGhlbgorICAgQUNfREVGSU5FKEdES19QSVhCVUZfVVNFX0dJT19NSU1FLCAxLCBbRGVmaW5lIGlmIGdpbyBjYW4gc25pZmYgaW1hZ2UgZGF0YV0pCisgZmkKKyAKKy1BTV9DT05ESVRJT05BTChIQVZFX1RJRkYsIHRlc3QgIngkbGlidGlmZl9mb3VuZCIgIT0geCkKKytBTV9DT05ESVRJT05BTChIQVZFX1RJRkYsIHRlc3QgIngkbGlidGlmZl9mb3VuZCIgIT0geG5vKQorIEFNX0NPTkRJVElPTkFMKEhBVkVfUE5HLCB0ZXN0ICJ4JExJQlBORyIgIT0geCkKKyBBTV9DT05ESVRJT05BTChIQVZFX0pQRUcsIHRlc3QgIngkTElCSlBFRyIgIT0geCkKKyBBTV9DT05ESVRJT05BTChIQVZFX0pBU1BFUiwgdGVzdCAieCRMSUJKQVNQRVIiICE9IHgpCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zi8wMDAxLXF1ZXJ5bG9hZGVycy1NYWtlLW91dHB1dC1tb3JlLXJlcHJvZHVjaWJsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmLzAwMDEtcXVlcnlsb2FkZXJzLU1ha2Utb3V0cHV0LW1vcmUtcmVwcm9kdWNpYmxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTIxNDE5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmLzAwMDEtcXVlcnlsb2FkZXJzLU1ha2Utb3V0cHV0LW1vcmUtcmVwcm9kdWNpYmxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSAxMDQ5ZmJkODg3ZTUyZjk0YWZlYjAzZmM3OTQyYzAxYzE0M2ViZGZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IEZyaSwgOSBKdW4gMjAxNyAxMjowMToyNSArMDMwMAotU3ViamVjdDogW1BBVENIXSBxdWVyeWxvYWRlcnM6IE1ha2Ugb3V0cHV0IG1vcmUgcmVwcm9kdWNpYmxlCi0KLVJlcHJvZHVjaWJsZSBidWlsZHMgYXJlIGdvb2Q6IFNvcnQgdGhlIG91dHB1dCBieSBtb2R1bGUgbmFtZSBzbyB0aGF0Ci1zYW1lIGlucHV0IGFsd2F5cyBsZWFkcyB0byBzYW1lIG91dHB1dC4KLQotVGhpcyBzaG91bGQgYWxzbyBtYWtlIGdkay1waXhidWYtcHJpbnQtbWltZS10eXBlcyBvdXRwdXQgYW5kCi1nZGstcGl4YnVmLXRodW1ibmFpbGVyLnRodW1ibmFpbGVyIHJlcHJvZHVjaWJsZS4KLQotaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc4MzU5MgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLS0tLQotIGdkay1waXhidWYvcXVlcnlsb2FkZXJzLmMgfCAxMiArKysrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dkay1waXhidWYvcXVlcnlsb2FkZXJzLmMgYi9nZGstcGl4YnVmL3F1ZXJ5bG9hZGVycy5jCi1pbmRleCAzOTU2NzRhLi40YWM5YjI4IDEwMDY0NAotLS0tIGEvZ2RrLXBpeGJ1Zi9xdWVyeWxvYWRlcnMuYwotKysrIGIvZ2RrLXBpeGJ1Zi9xdWVyeWxvYWRlcnMuYwotQEAgLTM0Niw2ICszNDYsNyBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICNpZmRlZiBVU0VfR01PRFVMRQotICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRoOwotICAgICAgICAgICAgICAgICBHRGlyICpkaXI7Ci0rICAgICAgICAgICAgICAgIEdMaXN0ICpsLCAqbW9kdWxlcyA9IE5VTEw7Ci0gCi0gICAgICAgICAgICAgICAgIHBhdGggPSBnX2dldGVudiAoIkdES19QSVhCVUZfTU9EVUxFRElSIik7Ci0gI2lmZGVmIEdfT1NfV0lOMzIKLUBAIC0zNjUsMTIgKzM2NiwxOSBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCBsZW4gPSBzdHJsZW4gKGRlbnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiA+IFNPRVhUX0xFTiAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNtcCAoZGVudCArIGxlbiAtIFNPRVhUX0xFTiwgU09FWFQpID09IDApIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlcyA9IGdfbGlzdF9wcmVwZW5kIChtb2R1bGVzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfc3RyZHVwIChkZW50KSk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcXVlcnlfbW9kdWxlIChjb250ZW50cywgcGF0aCwgZGVudCkpCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IEZBTFNFOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICBnX2Rpcl9jbG9zZSAoZGlyKTsKLSAgICAgICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgICAgICBtb2R1bGVzID0gZ19saXN0X3NvcnQgKG1vZHVsZXMsIChHQ29tcGFyZUZ1bmMpc3RyY21wKTsKLSsgICAgICAgICAgICAgICAgZm9yIChsID0gbW9kdWxlczsgbCAhPSBOVUxMOyBsID0gbC0+bmV4dCkKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXF1ZXJ5X21vZHVsZSAoY29udGVudHMsIHBhdGgsIGwtPmRhdGEpKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IEZBTFNFOwotKwotKyAgICAgICAgICAgICAgICBnX2xpc3RfZnJlZV9mdWxsIChtb2R1bGVzLCBnX2ZyZWUpOwotICNlbHNlCi0gICAgICAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYgKGNvbnRlbnRzLCAiIyBkeW5hbWljIGxvYWRpbmcgb2YgbW9kdWxlcyBub3Qgc3VwcG9ydGVkXG4iKTsKLSAjZW5kaWYKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWYvZmF0YWwtbG9hZGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWYvZmF0YWwtbG9hZGVyLnBhdGNoCmluZGV4IDcwMTQ2YzYuLjdkMGQ1NGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmL2ZhdGFsLWxvYWRlci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zi9mYXRhbC1sb2FkZXIucGF0Y2gKQEAgLTEsMTEgKzEsMjAgQEAKK0Zyb20gYjZhN2IzMDUyMjQ1NWNhYjM5YTBiOWVhODQ2MzMxMzM4MDE0NmU3MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBUdWUsIDEgQXByIDIwMTQgMTc6MjM6MzYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzRdIGdkay1waXhidWY6IGFkZCBhbiBvcHRpb24gc28gdGhhdCBsb2FkZXIgZXJyb3JzIGFyZSBmYXRhbAorCiBJZiBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzcGVjaWZpZWQgc2V0IHRoZSByZXR1cm4gdmFsdWUgZnJvbSBtYWluKCkgdG8KIG5vbi16ZXJvIGlmIHRoZSBsb2FkZXIgaGFkIGVycm9ycyAobWlzc2luZyBsaWJyYXJpZXMsIGdlbmVyYWxseSkuCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIAorLS0tCisgZ2RrLXBpeGJ1Zi9xdWVyeWxvYWRlcnMuYyB8IDE5ICsrKysrKysrKysrKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKwogZGlmZiAtLWdpdCBhL2dkay1waXhidWYvcXVlcnlsb2FkZXJzLmMgYi9nZGstcGl4YnVmL3F1ZXJ5bG9hZGVycy5jCi1pbmRleCBhOWNhMDE1Li4zOTU2NzRhIDEwMDY0NAoraW5kZXggYTgxYzgwNC4uMzUwYmVjOCAxMDA2NDQKIC0tLSBhL2dkay1waXhidWYvcXVlcnlsb2FkZXJzLmMKICsrKyBiL2dkay1waXhidWYvcXVlcnlsb2FkZXJzLmMKIEBAIC0xNDYsNyArMTQ2LDcgQEAgd3JpdGVfbG9hZGVyX2luZm8gKEdTdHJpbmcgKmNvbnRlbnRzLCBjb25zdCBjaGFyICpwYXRoLCBHZGtQaXhidWZGb3JtYXQgKmluZm8pCkBAIC00NywxNyArNTYsMTggQEAKICAKICAjaWZkZWYgR19PU19XSU4zMgogICAgICAgICAgZ2NoYXIgKmxpYmRpcjsKLUBAIC0zNjAsNyArMzY1LDggQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgbGVuID0gc3RybGVuIChkZW50KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gPiBTT0VYVF9MRU4gJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjbXAgKGRlbnQgKyBsZW4gLSBTT0VYVF9MRU4sIFNPRVhUKSA9PSAwKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5X21vZHVsZSAoY29udGVudHMsIHBhdGgsIGRlbnQpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXF1ZXJ5X21vZHVsZSAoY29udGVudHMsIHBhdGgsIGRlbnQpKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBGQUxTRTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgZ19kaXJfY2xvc2UgKGRpcik7Ci1AQCAtMzc4LDcgKzM4NCw4IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitAQCAtMzcwLDcgKzM3NSw5IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgbW9kdWxlcyA9IGdfbGlzdF9zb3J0IChtb2R1bGVzLCAoR0NvbXBhcmVGdW5jKXN0cmNtcCk7CisgICAgICAgICAgICAgICAgIGZvciAobCA9IG1vZHVsZXM7IGwgIT0gTlVMTDsgbCA9IGwtPm5leHQpCistICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlfbW9kdWxlIChjb250ZW50cywgcGF0aCwgbC0+ZGF0YSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFxdWVyeV9tb2R1bGUgKGNvbnRlbnRzLCBwYXRoLCBsLT5kYXRhKSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBGQUxTRTsKKysKKyAgICAgICAgICAgICAgICAgZ19saXN0X2ZyZWVfZnVsbCAobW9kdWxlcywgZ19mcmVlKTsKKyAjZWxzZQorICAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmIChjb250ZW50cywgIiMgZHluYW1pYyBsb2FkaW5nIG9mIG1vZHVsZXMgbm90IHN1cHBvcnRlZFxuIik7CitAQCAtMzg1LDcgKzM5Miw4IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5maWxlbmFtZSA9IGdfbG9jYWxlX3RvX3V0ZjggKGluZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCBOVUxMLCBOVUxMLCBOVUxMKTsKICAjZW5kaWYKQEAgLTY3LDcgKzc3LDcgQEAKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBnX2ZyZWUgKGN3ZCk7CiAgICAgICAgICB9Ci1AQCAtMzk0LDUgKzQwMSw4IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitAQCAtNDAxLDUgKzQwOSw4IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgIGdfcHJpbnQgKCIlc1xuIiwgY29udGVudHMtPnN0cik7CiAgCkBAIC03NywzICs4Nyw2IEBACiArICAgICAgICBlbHNlCiArICAgICAgICAgICAgICAgIHJldHVybiAwOwogIH0KKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzYuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zl8yLjM2LjExLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5Yzg0YzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zl8yLjM2LjExLmJiCkBAIC0wLDAgKzEsMTAyIEBACitTVU1NQVJZID0gIkltYWdlIGxvYWRpbmcgbGlicmFyeSBmb3IgR1RLKyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3RrLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKKworTElDRU5TRSA9ICJMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGstcGl4YnVmL2dkay1waXhidWYuaDtlbmRsaW5lPTI2O21kNT03MmIzOWRhN2NiZGRlMmU2NjUzMjlmZWY2MThlMWQ2YiIKKworU0VDVElPTiA9ICJsaWJzIgorCitERVBFTkRTID0gImdsaWItMi4wIGdkay1waXhidWYtbmF0aXZlIHNoYXJlZC1taW1lLWluZm8iCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9oYXJkY29kZWRfbGlidG9vbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9leHRlbmRpbmctbGliaW5zdGFsbC1kZXBlbmRlbmNpZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2ZhdGFsLWxvYWRlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVdvcmstYXJvdW5kLXRodW1ibmFpbGVyLWNyb3NzLWNvbXBpbGUtZmFpbHVyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC13aXRob3V0LWxpYnRpZmYtbm90LWhhdmluZy1hbi1lZmZlY3QucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2ZTg0ZTU0ODVjMTdjZTdjMjVkZjc3ZmU3NmViMmQ2YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhZTYyYWI4NzI1MDQxMzE1NmVkNzJlZjc1NjM0N2IxMDIwOGMwMGU3NmIyMjJkODJkOWVkMzYxZWQ5ZGRlMmYzIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBwaXhidWZjYWNoZSBwdGVzdC1nbm9tZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MgbGliX3BhY2thZ2UKKworTElCViA9ICIyLjEwLjAiCisKK0dES19QSVhCVUZfTE9BREVSUyA/PSAicG5nIGpwZWciCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0dES19QSVhCVUZfTE9BREVSU30iCitQQUNLQUdFQ09ORklHX2xpbnV4c3RkYmFzZSA9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0gJHtHREtfUElYQlVGX0xPQURFUlN9IgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiJHtHREtfUElYQlVGX0xPQURFUlN9IgorCitQQUNLQUdFQ09ORklHW3BuZ10gPSAiLS13aXRoLWxpYnBuZywtLXdpdGhvdXQtbGlicG5nLGxpYnBuZyIKK1BBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS13aXRoLWxpYmpwZWcsLS13aXRob3V0LWxpYmpwZWcsanBlZyIKK1BBQ0tBR0VDT05GSUdbdGlmZl0gPSAiLS13aXRoLWxpYnRpZmYsLS13aXRob3V0LWxpYnRpZmYsdGlmZiIKK1BBQ0tBR0VDT05GSUdbanBlZzIwMDBdID0gIi0td2l0aC1saWJqYXNwZXIsLS13aXRob3V0LWxpYmphc3BlcixqYXNwZXIiCisKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteDExLC0td2l0aG91dC14MTEsdmlydHVhbC9saWJ4MTEiCisKK1BBQ0tBR0VTID0rICIke1BOfS14bGliIgorCisjIEZvciBHSU8gaW1hZ2UgdHlwZSBzbmlmZmluZworUkRFUEVORFNfJHtQTn0gPSAic2hhcmVkLW1pbWUtaW5mbyIKKworRklMRVNfJHtQTn0teGxpYiA9ICIke2xpYmRpcn0vKnBpeGJ1Zl94bGliKiR7U09MSUJTfSIKK0FMTE9XX0VNUFRZXyR7UE59LXhsaWIgPSAiMSIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMiCisKK0ZJTEVTXyR7UE59LWJpbiArPSAiJHtkYXRhZGlyfS90aHVtYm5haWxlcnMvZ2RrLXBpeGJ1Zi10aHVtYm5haWxlci50aHVtYm5haWxlciIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIgXAorCSR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAorCSR7YmluZGlyfS9nZGstcGl4YnVmLXBpeGRhdGEgXAorICAgICAgICAke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKKwkke2luY2x1ZGVkaXJ9LyogXAorCSR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMvKi5sYSBcCisiCisKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl5nZGstcGl4YnVmLWxvYWRlci0uKiIKK1BBQ0tBR0VTX0RZTkFNSUNfY2xhc3MtbmF0aXZlID0gIiIKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgIHBvc3RpbnN0X3BpeGJ1ZmxvYWRlciA9IGQuZ2V0VmFyKCJwb3N0aW5zdF9waXhidWZsb2FkZXIiKQorCisgICAgbG9hZGVyc19yb290ID0gZC5leHBhbmQoJyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMnKQorCisgICAgcGFja2FnZXMgPSAnICcuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBsb2FkZXJzX3Jvb3QsICdebGlicGl4YnVmbG9hZGVyLSguKilcLnNvJCcsICdnZGstcGl4YnVmLWxvYWRlci0lcycsICdHREsgcGl4YnVmIGxvYWRlciBmb3IgJXMnKSkKKyAgICBkLnNldFZhcignUElYQlVGX1BBQ0tBR0VTJywgcGFja2FnZXMpCisKKyAgICAjIFRoZSB0ZXN0IHN1aXRlIGV4ZXJjaXNlcyBhbGwgdGhlIGxvYWRlcnMsIHNvIGVuc3VyZSB0aGV5IGFyZSBhbGwKKyAgICAjIGRlcGVuZGVuY2llcyBvZiB0aGUgcHRlc3QgcGFja2FnZS4KKyAgICBkLmFwcGVuZFZhcigiUkRFUEVORFNfJXMtcHRlc3QiICUgZC5nZXRWYXIoJ1BOJyksICIgIiArIHBhY2thZ2VzKQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIE1vdmUgZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIGludG8gbGliZGlyIHNvIGl0IGlzIGFsd2F5cyBhdmFpbGFibGUKKwkjIGluIG11bHRpbGliIGJ1aWxkcy4KKwltdiAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgJHtEfS8ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwlmaW5kICR7RH0ke2xpYmRpcn0gLW5hbWUgImxpYnBpeGJ1ZmxvYWRlci0qLmxhIiAtZXhlYyBybSBce1x9IFw7CisKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAorCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUKKworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtcGl4ZGF0YSBcCisJCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZQorCisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlCisKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgXAorCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUgXAorCQlHREtfUElYQlVGX01PRFVMRURJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzCit9CitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzYuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzYuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGMzNTkwNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zl8yLjM2LjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotU1VNTUFSWSA9ICJJbWFnZSBsb2FkaW5nIGxpYnJhcnkgZm9yIEdUSysiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmd0ay5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi0KLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmLmg7ZW5kbGluZT0yNjttZDU9NzJiMzlkYTdjYmRkZTJlNjY1MzI5ZmVmNjE4ZTFkNmIiCi0KLVNFQ1RJT04gPSAibGlicyIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBnZGstcGl4YnVmLW5hdGl2ZSBzaGFyZWQtbWltZS1pbmZvIgotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vaGFyZGNvZGVkX2xpYnRvb2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZXh0ZW5kaW5nLWxpYmluc3RhbGwtZGVwZW5kZW5jaWVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9mYXRhbC1sb2FkZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Xb3JrLWFyb3VuZC10aHVtYm5haWxlci1jcm9zcy1jb21waWxlLWZhaWx1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1xdWVyeWxvYWRlcnMtTWFrZS1vdXRwdXQtbW9yZS1yZXByb2R1Y2libGUucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlMGFhYTAwNjFlYjEyNjY3YjMyYjI3NDcyMjMwYjk2MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZDY4ZTUyODNjZGMwYmY5YmRhOTljM2U2YTFkNTJhZDA3YTAzMzY0ZmExODZiNmMyNmNmYzg2ZmNkMzk2YTE5IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBwaXhidWZjYWNoZSBwdGVzdC1nbm9tZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MgbGliX3BhY2thZ2UKLQotTElCViA9ICIyLjEwLjAiCi0KLUdES19QSVhCVUZfTE9BREVSUyA/PSAicG5nIGpwZWciCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0dES19QSVhCVUZfTE9BREVSU30iCi1QQUNLQUdFQ09ORklHX2xpbnV4c3RkYmFzZSA9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0gJHtHREtfUElYQlVGX0xPQURFUlN9IgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiJHtHREtfUElYQlVGX0xPQURFUlN9IgotCi1QQUNLQUdFQ09ORklHW3BuZ10gPSAiLS13aXRoLWxpYnBuZywtLXdpdGhvdXQtbGlicG5nLGxpYnBuZyIKLVBBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS13aXRoLWxpYmpwZWcsLS13aXRob3V0LWxpYmpwZWcsanBlZyIKLVBBQ0tBR0VDT05GSUdbdGlmZl0gPSAiLS13aXRoLWxpYnRpZmYsLS13aXRob3V0LWxpYnRpZmYsdGlmZiIKLVBBQ0tBR0VDT05GSUdbanBlZzIwMDBdID0gIi0td2l0aC1saWJqYXNwZXIsLS13aXRob3V0LWxpYmphc3BlcixqYXNwZXIiCi0KLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteDExLC0td2l0aG91dC14MTEsdmlydHVhbC9saWJ4MTEiCi0KLVBBQ0tBR0VTID0rICIke1BOfS14bGliIgotCi0jIEZvciBHSU8gaW1hZ2UgdHlwZSBzbmlmZmluZwotUkRFUEVORFNfJHtQTn0gPSAic2hhcmVkLW1pbWUtaW5mbyIKLQotRklMRVNfJHtQTn0teGxpYiA9ICIke2xpYmRpcn0vKnBpeGJ1Zl94bGliKiR7U09MSUJTfSIKLUFMTE9XX0VNUFRZXyR7UE59LXhsaWIgPSAiMSIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMiCi0KLUZJTEVTXyR7UE59LWJpbiArPSAiJHtkYXRhZGlyfS90aHVtYm5haWxlcnMvZ2RrLXBpeGJ1Zi10aHVtYm5haWxlci50aHVtYm5haWxlciIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIgXAotCSR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAotCSR7YmluZGlyfS9nZGstcGl4YnVmLXBpeGRhdGEgXAotICAgICAgICAke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKLQkke2luY2x1ZGVkaXJ9LyogXAotCSR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMvKi5sYSBcCi0iCi0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5nZGstcGl4YnVmLWxvYWRlci0uKiIKLVBBQ0tBR0VTX0RZTkFNSUNfY2xhc3MtbmF0aXZlID0gIiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIHBvc3RpbnN0X3BpeGJ1ZmxvYWRlciA9IGQuZ2V0VmFyKCJwb3N0aW5zdF9waXhidWZsb2FkZXIiKQotCi0gICAgbG9hZGVyc19yb290ID0gZC5leHBhbmQoJyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMnKQotCi0gICAgcGFja2FnZXMgPSAnICcuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBsb2FkZXJzX3Jvb3QsICdebGlicGl4YnVmbG9hZGVyLSguKilcLnNvJCcsICdnZGstcGl4YnVmLWxvYWRlci0lcycsICdHREsgcGl4YnVmIGxvYWRlciBmb3IgJXMnKSkKLSAgICBkLnNldFZhcignUElYQlVGX1BBQ0tBR0VTJywgcGFja2FnZXMpCi0KLSAgICAjIFRoZSB0ZXN0IHN1aXRlIGV4ZXJjaXNlcyBhbGwgdGhlIGxvYWRlcnMsIHNvIGVuc3VyZSB0aGV5IGFyZSBhbGwKLSAgICAjIGRlcGVuZGVuY2llcyBvZiB0aGUgcHRlc3QgcGFja2FnZS4KLSAgICBkLmFwcGVuZFZhcigiUkRFUEVORFNfJXMtcHRlc3QiICUgZC5nZXRWYXIoJ1BOJyksICIgIiArIHBhY2thZ2VzKQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIE1vdmUgZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIGludG8gbGliZGlyIHNvIGl0IGlzIGFsd2F5cyBhdmFpbGFibGUKLQkjIGluIG11bHRpbGliIGJ1aWxkcy4KLQltdiAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgJHtEfS8ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQlmaW5kICR7RH0ke2xpYmRpcn0gLW5hbWUgImxpYnBpeGJ1ZmxvYWRlci0qLmxhIiAtZXhlYyBybSBce1x9IFw7Ci0KLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAotCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUKLQotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtcGl4ZGF0YSBcCi0JCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZQotCi0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlCi0KLQljcmVhdGVfd3JhcHBlciAke0R9LyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgXAotCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUgXAotCQlHREtfUElYQlVGX01PRFVMRURJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzCi19Ci1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLzAwMDEtRGlzYWJsZS1saWJzZWNjb21wLXN5Y2FsbC1maWx0ZXJpbmctbWVjaGFuaXNtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AvMDAwMS1EaXNhYmxlLWxpYnNlY2NvbXAtc3ljYWxsLWZpbHRlcmluZy1tZWNoYW5pc20ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBiMDc0MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLzAwMDEtRGlzYWJsZS1saWJzZWNjb21wLXN5Y2FsbC1maWx0ZXJpbmctbWVjaGFuaXNtLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gOWRmYWRhMDZmOGQyZTAyZDdhMDRmNzkzYmE2ZTFkNGEyYWE1ZmZiNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCA1IE9jdCAyMDE3IDE0OjU0OjE3ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIERpc2FibGUgbGlic2VjY29tcCAoc3ljYWxsIGZpbHRlcmluZyBtZWNoYW5pc20pCisKK1Vwc3RyZWFtIGZvcmdvdCB0byBtYWtlIGl0IG9wdGlvbmFsLCBhbmQgaXQgaXMgbm90IGN1cnJlbnRseSB1c2VkIGluIFlvY3RvCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMTEgLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDg2YmNmMWYuLjg5MTFmMTkgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE1NywxNyArMTU3LDYgQEAgZWxzZQorIGZpCisgCisgU0VDQ09NUF9QS0c9IiIKKy1kbmwgQ2hlY2sgZm9yIGJ1YmJsZXdyYXAgY29tcGF0aWJsZSBwbGF0Zm9ybQorLWNhc2UgJGhvc3Rfb3MgaW4KKy0gIGxpbnV4KikKKy0gICAgUEtHX0NIRUNLX01PRFVMRVMoTElCU0VDQ09NUCwgW2xpYnNlY2NvbXBdKQorLSAgICBTRUNDT01QX1BLRz0ibGlic2VjY29tcCIKKy0gICAgQUNfREVGSU5FX1VOUVVPVEVEKF9HTlVfU09VUkNFLCAxLCBbRGVmaW5lIHRvIGluY2x1ZGUgR05VIGV4dGVuc2lvbnNdKQorLSAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9CV1JBUCwgMSwgW0RlZmluZSB0byAxIGlmIEJ1YmJsZXdyYXAgc3VwcG9ydCBpcyBhdmFpbGFibGVdKQorLSAgICBBQ19ERUZJTkUoW0VOQUJMRV9TRUNDT01QXSwgWzFdLCBbRGVmaW5lIGlmIHVzaW5nIHNlY2NvbXBdKQorLSAgICBBQ19ERUZJTkVfVU5RVU9URUQoSU5TVEFMTF9QUkVGSVgsICIkcHJlZml4IiwgW1BhdGggdG8gbGlicmFyeSBpbnN0YWxsIHByZWZpeF0pCistICAgIDs7CistZXNhYworIAorIGRubCBwa2ctY29uZmlnIGRlcGVuZGVuY3kgY2hlY2tzCisgCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC1kb24tdC1hc3N1bWUtdGltZV90LWlzLWxvbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC1kb24tdC1hc3N1bWUtdGltZV90LWlzLWxvbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNjMTUyZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLWRvbi10LWFzc3VtZS10aW1lX3QtaXMtbG9uZy5wYXRjaApAQCAtMCwwICsxLDYxIEBACitGcm9tIDkwNDg5MzliNzZiM2JkMTA3ODNhZGI3OWVkMGFhZjZjZDEzODk1Y2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgorRGF0ZTogVHVlLCAxMyBEZWMgMjAxNiAyMDozOTo1MSAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvMl0gZ25vbWUtZGVza3RvcC10aHVtYm5haWw6IGRvbid0IGNvbnZlcnQgdGltZV90IHRvIGxvbmcKKworRXhwbGljaXRseSB1c2Ugc3RyZnRpbWUrc3RycHRpbWUgcmF0aGVyIHRoYW4gc25wcmludGYrYXRvbC4gVGhpcyBmaXhlcyB0aGUKK2J1aWxkIGZvciBYMzIsIHdoZXJlIGxvbmcncyBzaXplIGRvZXNuJ3QgbWF0Y2ggdGhhdCBvZiB0aW1lX3QuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KKworCitNb2RpZnkgcGF0Y2ggZGVzY3JpYmVkIGFib3ZlIHRvIGVsaW1pbmF0ZSByZXBsYWNlbWVudCBvZgorCitnX3NucHJpbnRmIChtdGltZV9zdHIsIDIxLCAiJSIgR19HSU5UNjRfRk9STUFULCAoZ2ludDY0KSBtdGltZSkKKword2hpY2ggaXMgbm90IG5lY2Vzc2FyeS4gIFJldGFpbiByZXBsYWNlbWVudCBvZiBhdG9sKCkuCisKK1NpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KKworLS0tCisgbGliZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC5jIHwgMTYgKysrKysrKysrKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC5jIGIvbGliZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC5jCitpbmRleCBlNTZjM2Q3Li41ZDk2YmYzIDEwMDY0NAorLS0tIGEvbGliZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC5jCisrKysgYi9saWJnbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLmMKK0BAIC0xMjAsNiArMTIwLDggQEAKKyAgKiBTaW5jZTogMi4yCisgICovCisgCisrI2RlZmluZSBfWE9QRU5fU09VUkNFCisrCisgI2luY2x1ZGUgPGNvbmZpZy5oPgorIAorICNpbmNsdWRlIDxnbGliLmg+CitAQCAtMTMxOSw2ICsxMzI2LDcgQEAgZ25vbWVfZGVza3RvcF90aHVtYm5haWxfaXNfdmFsaWQgKEdka1BpeGJ1ZiAgICAgICAgICAqcGl4YnVmLAorIHsKKyAgIGNvbnN0IGNoYXIgKnRodW1iX3VyaSwgKnRodW1iX210aW1lX3N0cjsKKyAgIHRpbWVfdCB0aHVtYl9tdGltZTsKKysgIHN0cnVjdCB0bSB0bXBfbXRpbWU7CisgCisgICB0aHVtYl91cmkgPSBnZGtfcGl4YnVmX2dldF9vcHRpb24gKHBpeGJ1ZiwgInRFWHQ6OlRodW1iOjpVUkkiKTsKKyAgIGlmIChnX3N0cmNtcDAgKHVyaSwgdGh1bWJfdXJpKSAhPSAwKQorQEAgLTEzMjcsNyArMTMzNSwxMSBAQCBnbm9tZV9kZXNrdG9wX3RodW1ibmFpbF9pc192YWxpZCAoR2RrUGl4YnVmICAgICAgICAgICpwaXhidWYsCisgICB0aHVtYl9tdGltZV9zdHIgPSBnZGtfcGl4YnVmX2dldF9vcHRpb24gKHBpeGJ1ZiwgInRFWHQ6OlRodW1iOjpNVGltZSIpOworICAgaWYgKCF0aHVtYl9tdGltZV9zdHIpCisgICAgIHJldHVybiBGQUxTRTsKKy0gIHRodW1iX210aW1lID0gYXRvbCAodGh1bWJfbXRpbWVfc3RyKTsKKysgIGlmICghc3RycHRpbWUgKHRodW1iX210aW1lX3N0ciwgIiVzIiwgJnRtcF9tdGltZSkpCisrICAgIHJldHVybiBGQUxTRTsKKysgIHRodW1iX210aW1lID0gbWt0aW1lICgmdG1wX210aW1lKTsKKysgIGlmICghdGh1bWJfbXRpbWUpCisrICAgIHJldHVybiBGQUxTRTsKKyAgIGlmIChtdGltZSAhPSB0aHVtYl9tdGltZSkKKyAgICAgcmV0dXJuIEZBTFNFOworIAorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC10aHVtYm5haWwtZG9uLXQtY29udmVydC10aW1lX3QtdG8tbG9uZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLWRvbi10LWNvbnZlcnQtdGltZV90LXRvLWxvbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4YTA2OWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC10aHVtYm5haWwtZG9uLXQtY29udmVydC10aW1lX3QtdG8tbG9uZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLUZyb20gYWRmYTBjOGY5ZmVjMWZhYWM0YmVhNmE5NGQ5NDdlYTMyZTU4NTkyMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+Ci1EYXRlOiBUdWUsIDEzIERlYyAyMDE2IDIwOjM5OjUxIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdub21lLWRlc2t0b3AtdGh1bWJuYWlsOiBkb24ndCBjb252ZXJ0IHRpbWVfdCB0byBsb25nCi0KLUV4cGxpY2l0bHkgdXNlIHN0cmZ0aW1lK3N0cnB0aW1lIHJhdGhlciB0aGFuIHNucHJpbnRmK2F0b2wuIFRoaXMgZml4ZXMgdGhlCi1idWlsZCBmb3IgWDMyLCB3aGVyZSBsb25nJ3Mgc2l6ZSBkb2Vzbid0IG1hdGNoIHRoYXQgb2YgdGltZV90LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+Ci0tLS0KLSBsaWJnbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLmMgfCAxNiArKysrKysrKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJnbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLmMgYi9saWJnbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLmMKLWluZGV4IDM5NDYzMDkuLmI3NTYzMzMgMTAwNjQ0Ci0tLS0gYS9saWJnbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLmMKLSsrKyBiL2xpYmdub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC10aHVtYm5haWwuYwotQEAgLTEyNiw2ICsxMjYsOCBAQAotICAqIFNpbmNlOiAyLjIKLSAgKi8KLSAKLSsjZGVmaW5lIF9YT1BFTl9TT1VSQ0UKLSsKLSAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotQEAgLTE0ODMsNiArMTQ4NSw3IEBAIHNhdmVfdGh1bWJuYWlsIChHZGtQaXhidWYgICpwaXhidWYsCi0gICBjaGFyICp0bXBfcGF0aCA9IE5VTEw7Ci0gICBpbnQgdG1wX2ZkOwotICAgY2hhciBtdGltZV9zdHJbMjFdOwotKyAgc3RydWN0IHRtICp0bXBfbXRpbWUgPSBOVUxMOwotICAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7Ci0gICBHRXJyb3IgKmVycm9yID0gTlVMTDsKLSAgIGNvbnN0IGNoYXIgKndpZHRoLCAqaGVpZ2h0OwotQEAgLTE1MDIsNyArMTUwNSwxMSBAQCBzYXZlX3RodW1ibmFpbCAoR2RrUGl4YnVmICAqcGl4YnVmLAotICAgICBnb3RvIG91dDsKLSAgIGNsb3NlICh0bXBfZmQpOwotIAotLSAgZ19zbnByaW50ZiAobXRpbWVfc3RyLCAyMSwgIiVsZCIsICBtdGltZSk7Ci0rICB0bXBfbXRpbWUgPSBsb2NhbHRpbWUgKCZtdGltZSk7Ci0rICBpZiAoIXRtcF9tdGltZSkKLSsgICAgZ290byBvdXQ7Ci0rICBzdHJmdGltZSAobXRpbWVfc3RyLCAyMSwgIiVzIiwgdG1wX210aW1lKTsKLSsgIGZyZWUgKHRtcF9tdGltZSk7Ci0gICB3aWR0aCA9IGdka19waXhidWZfZ2V0X29wdGlvbiAocGl4YnVmLCAidEVYdDo6VGh1bWI6OkltYWdlOjpXaWR0aCIpOwotICAgaGVpZ2h0ID0gZ2RrX3BpeGJ1Zl9nZXRfb3B0aW9uIChwaXhidWYsICJ0RVh0OjpUaHVtYjo6SW1hZ2U6OkhlaWdodCIpOwotIAotQEAgLTE2OTUsNiArMTcwMiw3IEBAIGdub21lX2Rlc2t0b3BfdGh1bWJuYWlsX2lzX3ZhbGlkIChHZGtQaXhidWYgICAgICAgICAgKnBpeGJ1ZiwKLSB7Ci0gICBjb25zdCBjaGFyICp0aHVtYl91cmksICp0aHVtYl9tdGltZV9zdHI7Ci0gICB0aW1lX3QgdGh1bWJfbXRpbWU7Ci0rICBzdHJ1Y3QgdG0gdG1wX210aW1lOwotICAgCi0gICB0aHVtYl91cmkgPSBnZGtfcGl4YnVmX2dldF9vcHRpb24gKHBpeGJ1ZiwgInRFWHQ6OlRodW1iOjpVUkkiKTsKLSAgIGlmICghdGh1bWJfdXJpKQotQEAgLTE3MDUsNyArMTcxMywxMSBAQCBnbm9tZV9kZXNrdG9wX3RodW1ibmFpbF9pc192YWxpZCAoR2RrUGl4YnVmICAgICAgICAgICpwaXhidWYsCi0gICB0aHVtYl9tdGltZV9zdHIgPSBnZGtfcGl4YnVmX2dldF9vcHRpb24gKHBpeGJ1ZiwgInRFWHQ6OlRodW1iOjpNVGltZSIpOwotICAgaWYgKCF0aHVtYl9tdGltZV9zdHIpCi0gICAgIHJldHVybiBGQUxTRTsKLS0gIHRodW1iX210aW1lID0gYXRvbCAodGh1bWJfbXRpbWVfc3RyKTsKLSsgIGlmICghc3RycHRpbWUgKHRodW1iX210aW1lX3N0ciwgIiVzIiwgJnRtcF9tdGltZSkpCi0rICAgIHJldHVybiBGQUxTRTsKLSsgIHRodW1iX210aW1lID0gbWt0aW1lICgmdG1wX210aW1lKTsKLSsgIGlmICghdGh1bWJfbXRpbWUpCi0rICAgIHJldHVybiBGQUxTRTsKLSAgIGlmIChtdGltZSAhPSB0aHVtYl9tdGltZSkKLSAgICAgcmV0dXJuIEZBTFNFOwotICAgCi0tLSAKLTIuOC4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wM18zLjI0LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4yNC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzFjMjEzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wM18zLjI0LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gIkdOT01FIGxpYnJhcnkgZm9yIHJlYWRpbmcgLmRlc2t0b3AgZmlsZXMiCi1TRUNUSU9OID0gIngxMS9nbm9tZSIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCi0KLUJQTiA9ICJnbm9tZS1kZXNrdG9wIgotCi1pbmhlcml0IGdub21lIHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJhZjdjNmEyNDNkZjdhMzM1YTAxMGJkYzA1YjM0Y2E5MyIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjhmYTFkZTY2YTZhNzU5NjNiZmZjNzliMDFhNjA0MzRjNzEyMzdkNDRjNTFiZWNhMDljMGY3MTRhMDMyZDc4NWUiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC1kb24tdC1jb252ZXJ0LXRpbWVfdC10by1sb25nLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1SZW1vdmUtZ25vbWUtY29tbW9uLW1hY3JvLWNhbGxzLnBhdGNoIFwKLSIKLQotREVQRU5EUyArPSAiaW50bHRvb2wtbmF0aXZlIGdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgZ2NvbmYgdmlydHVhbC9saWJ4MTEgZ3RrKzMgZ2xpYi0yLjAgc3RhcnR1cC1ub3RpZmljYXRpb24geGtleWJvYXJkLWNvbmZpZyBpc28tY29kZXMgdWRldiIKLQotaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgZ3RrLWRvYwotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kZXNrdG9wLWRvY3MiCi0KLVBBQ0tBR0VTID0rICJsaWJnbm9tZS1kZXNrdG9wMyIKLUZJTEVTX2xpYmdub21lLWRlc2t0b3AzID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9ICR7ZGF0YWRpcn0vbGliZ25vbWUtZGVza3RvcCovcG5wLmlkcyAke2RhdGFkaXJ9L2dub21lLyp4bWwiCi0KLVJSRUNPTU1FTkRTX2xpYmdub21lLWRlc2t0b3AzICs9ICJnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AzXzMuMjYuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wM18zLjI2LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc5ZGM5YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wM18zLjI2LjIuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJHTk9NRSBsaWJyYXJ5IGZvciByZWFkaW5nIC5kZXNrdG9wIGZpbGVzIgorU0VDVElPTiA9ICJ4MTEvZ25vbWUiCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgorCitCUE4gPSAiZ25vbWUtZGVza3RvcCIKKworaW5oZXJpdCBnbm9tZSBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNmNlZTJlY2Q2NzdkODdlYWEwZWI1ZWJmYTdiNDVmYjMiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJmNzU2MWE3YTMxM2ZjNDc0YjJjMzkwY2Q5Njk2ZGYxZjVjMWUxNTU2MDgwZTQzZjRhZmUwNDJiMTA2MGU1ZjJhIgorCitTUkNfVVJJICs9ICIgXAorICAgICAgICAgICBmaWxlOi8vZ25vbWUtZGVza3RvcC10aHVtYm5haWwtZG9uLXQtYXNzdW1lLXRpbWVfdC1pcy1sb25nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLVJlbW92ZS1nbm9tZS1jb21tb24tbWFjcm8tY2FsbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLWxpYnNlY2NvbXAtc3ljYWxsLWZpbHRlcmluZy1tZWNoYW5pc20ucGF0Y2ggXAorICAgICAgICAgICAiCisKK0RFUEVORFMgKz0gImludGx0b29sLW5hdGl2ZSBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIGdjb25mIHZpcnR1YWwvbGlieDExIGd0ayszIGdsaWItMi4wIHN0YXJ0dXAtbm90aWZpY2F0aW9uIHhrZXlib2FyZC1jb25maWcgaXNvLWNvZGVzIHVkZXYiCisKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGd0ay1kb2MKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZGVza3RvcC1kb2NzIgorCitQQUNLQUdFUyA9KyAibGliZ25vbWUtZGVza3RvcDMiCitGSUxFU19saWJnbm9tZS1kZXNrdG9wMyA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSAke2RhdGFkaXJ9L2xpYmdub21lLWRlc2t0b3AqL3BucC5pZHMgJHtkYXRhZGlyfS9nbm9tZS8qeG1sIgorCitSUkVDT01NRU5EU19saWJnbm9tZS1kZXNrdG9wMyArPSAiZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lLzAwMDEtRG9uLXQtdXNlLUFDX0NBTk9OSUNBTF9IT1NULnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWUvMDAwMS1Eb24tdC11c2UtQUNfQ0FOT05JQ0FMX0hPU1QucGF0Y2gKaW5kZXggZTdhYzk3Yi4uOTZlYzk2YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWUvMDAwMS1Eb24tdC11c2UtQUNfQ0FOT05JQ0FMX0hPU1QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWUvMDAwMS1Eb24tdC11c2UtQUNfQ0FOT05JQ0FMX0hPU1QucGF0Y2gKQEAgLTEsMjkgKzEsMjcgQEAKLUZyb20gZDJiOWFkOGE4MGJmOTMyMGZlMzVjOWFlZThmNTJlNTVlYmQ0MGUwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gODhlZDk5NmNjOWUyYjI5NmNhY2ZkYmVlY2U0YmUyOGE5MGJhYjUxMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CiBEYXRlOiBUdWUsIDMwIE1heSAyMDE3IDE0OjU1OjQ5ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvbid0IHVzZSBBQ19DQU5PTklDQUxfSE9TVAorU3ViamVjdDogW1BBVENIIDEvMl0gRG9uJ3QgdXNlIEFDX0NBTk9OSUNBTF9IT1NUCiAKIFRoaXMgd29uJ3Qgd29yayB3aGVuIGJ1aWxkaW5nIGFsbGFyY2ggKGFuZCBpcyBvbmx5IHVzZWQgdG8gZmluZCBvdXQgaWYKIHRhcmdldCBpcyB3aW5kb3dzKS4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CisKIC0tLQogIGNvbmZpZ3VyZS5hYyB8IDEgLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGQ4NTViN2EuLjY5MDhmNTkgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYworSW5kZXg6IGFkd2FpdGEtaWNvbi10aGVtZS0zLjI2LjEvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYWR3YWl0YS1pY29uLXRoZW1lLTMuMjYuMS5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGFkd2FpdGEtaWNvbi10aGVtZS0zLjI2LjEvY29uZmlndXJlLmFjCiBAQCAtMyw3ICszLDYgQEAgQUNfUFJFUkVRKDIuNTMpCiAgCi0gQUNfSU5JVChbYWR3YWl0YS1pY29uLXRoZW1lXSwgWzMuMjQuMF0sCisgQUNfSU5JVChbYWR3YWl0YS1pY29uLXRoZW1lXSwgWzMuMjYuMV0sCiAgICAgICAgICBbaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9YWR3YWl0YS1pY29uLXRoZW1lXSkKIC1BQ19DQU5PTklDQUxfSE9TVAogIEFDX0NPTkZJR19NQUNST19ESVIoW200XSkKICBBQ19DT05GSUdfU1JDRElSKFtpbmRleC50aGVtZS5pbl0pCiAgCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMjQuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM0MDUzNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjI0LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1TVU1NQVJZID0gIkdUSysgaWNvbiB0aGVtZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2Fkd2FpdGEtaWNvbi10aGVtZS8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLVNFQ1RJT04gPSAieDExL2dub21lIgotCi1MSUNFTlNFID0gIkxHUEwtMy4wIHwgQ0MtQlktU0EtMy4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Yzg0Y2FjODhlNDZmYzA3NjQ3ZWEwN2U2YzI0ZWViN2MiCi0KLWluaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgZ3RrLWljb24tY2FjaGUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLQotTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJ1bi1pbnN0YWxsYXRpb24tY29tbWFuZHMtYXMtc2hlbGwtam9icy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNjY2FjMGQ2MDBmZmM5MzZkMmFkZmI4MGU5MjQ1YmM1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNjZjc5ZmYzYmQzNDAyNTQ3MzdjZTRkMjhiODdmMGNjZWU0YjMzNThjZDNjZDVjZDExZGM3YjQyZjQxYjI3MmEiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgQnVpbGQgdXNlcyBndGstZW5jb2RlLXN5bWJvbGljLXN2ZyB0byBjcmVhdGUgcG5nIHZlcnNpb25zOgotICAgICAgICAjIG5vIG5lZWQgdG8gc3RvcmUgdGhlIHN2Z3MgYW55bW9yZS4KLQlybSAtZiAke0R9JHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvc2NhbGFibGUvKi8qLXN5bWJvbGljLnN2ZyBcCi0JICAgICAgJHtEfSR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhL3NjYWxhYmxlLyovKi1zeW1ib2xpYy1ydGwuc3ZnCi19Ci0KLVBBQ0tBR0VTID0gIiR7UE59LWN1cnNvcnMgJHtQTn0tc3ltYm9saWMtaGlyZXMgJHtQTn0tc3ltYm9saWMgJHtQTn0taGlyZXMgJHtQTn0iCi0KLVJSRVBMQUNFU18ke1BOfSA9ICJnbm9tZS1pY29uLXRoZW1lIgotUkNPTkZMSUNUU18ke1BOfSA9ICJnbm9tZS1pY29uLXRoZW1lIgotUlBST1ZJREVTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCi0KLUZJTEVTXyR7UE59LWN1cnNvcnMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvY3Vyc29ycy8iCi1GSUxFU18ke1BOfS1zeW1ib2xpYy1oaXJlcyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS85Nng5Ni8qLyouc3ltYm9saWMucG5nIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzY0eDY0LyovKi5zeW1ib2xpYy5wbmcgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNDh4NDgvKi8qLnN5bWJvbGljLnBuZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8zMngzMi8qLyouc3ltYm9saWMucG5nIgotRklMRVNfJHtQTn0tc3ltYm9saWMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMTZ4MTYvKi8qLnN5bWJvbGljLnBuZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8yNHgyNC8qLyouc3ltYm9saWMucG5nIgotRklMRVNfJHtQTn0taGlyZXMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMjU2eDI1Ni8gXAotICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNTEyeDUxMi8iCi1GSUxFU18ke1BOfSA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8gXAotICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL3BrZ2NvbmZpZy9hZHdhaXRhLWljb24tdGhlbWUucGMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjI2LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjI2LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQzN2Q1ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMjYuMS5iYgpAQCAtMCwwICsxLDQ0IEBACitTVU1NQVJZID0gIkdUSysgaWNvbiB0aGVtZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2Fkd2FpdGEtaWNvbi10aGVtZS8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKK1NFQ1RJT04gPSAieDExL2dub21lIgorCitMSUNFTlNFID0gIkxHUEwtMy4wIHwgQ0MtQlktU0EtMy4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Yzg0Y2FjODhlNDZmYzA3NjQ3ZWEwN2U2YzI0ZWViN2MiCisKK2luaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgZ3RrLWljb24tY2FjaGUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKKworTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJ1bi1pbnN0YWxsYXRpb24tY29tbWFuZHMtYXMtc2hlbGwtam9icy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjNlZjg3ZTc4OTcxMWU1MTMwNzkyZDRiNTM2NmMwMDVkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI4YmE3MzkyYzc3NjE5OTZlZmQ3ODA3NzkxNjdlYTZjOTQwZWVkZmIxYmYzN2NmZTliY2NiNzAyMWY1NGQ3OWQiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgQnVpbGQgdXNlcyBndGstZW5jb2RlLXN5bWJvbGljLXN2ZyB0byBjcmVhdGUgcG5nIHZlcnNpb25zOgorICAgICAgICAjIG5vIG5lZWQgdG8gc3RvcmUgdGhlIHN2Z3MgYW55bW9yZS4KKwlybSAtZiAke0R9JHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvc2NhbGFibGUvKi8qLXN5bWJvbGljLnN2ZyBcCisJICAgICAgJHtEfSR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhL3NjYWxhYmxlLyovKi1zeW1ib2xpYy1ydGwuc3ZnCit9CisKK1BBQ0tBR0VTID0gIiR7UE59LWN1cnNvcnMgJHtQTn0tc3ltYm9saWMtaGlyZXMgJHtQTn0tc3ltYm9saWMgJHtQTn0taGlyZXMgJHtQTn0iCisKK1JSRVBMQUNFU18ke1BOfSA9ICJnbm9tZS1pY29uLXRoZW1lIgorUkNPTkZMSUNUU18ke1BOfSA9ICJnbm9tZS1pY29uLXRoZW1lIgorUlBST1ZJREVTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCisKK0ZJTEVTXyR7UE59LWN1cnNvcnMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvY3Vyc29ycy8iCitGSUxFU18ke1BOfS1zeW1ib2xpYy1oaXJlcyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS85Nng5Ni8qLyouc3ltYm9saWMucG5nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzY0eDY0LyovKi5zeW1ib2xpYy5wbmcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNDh4NDgvKi8qLnN5bWJvbGljLnBuZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8zMngzMi8qLyouc3ltYm9saWMucG5nIgorRklMRVNfJHtQTn0tc3ltYm9saWMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMTZ4MTYvKi8qLnN5bWJvbGljLnBuZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8yNHgyNC8qLyouc3ltYm9saWMucG5nIgorRklMRVNfJHtQTn0taGlyZXMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMjU2eDI1Ni8gXAorICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNTEyeDUxMi8iCitGSUxFU18ke1BOfSA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8gXAorICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL3BrZ2NvbmZpZy9hZHdhaXRhLWljb24tdGhlbWUucGMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2djb25mL2NyZWF0ZV9jb25maWdfZGlyZWN0b3J5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nY29uZi9jcmVhdGVfY29uZmlnX2RpcmVjdG9yeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDcyZTczCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nY29uZi9jcmVhdGVfY29uZmlnX2RpcmVjdG9yeS5wYXRjaApAQCAtMCwwICsxLDI4IEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworSW4gc29tZSBjaXJjdW1zdGFuY2VzLCBnY29uZiBpc24ndCBhYmxlIHRvIHNhdmUgY29uZmlndXJhdGlvbnMKK2JlY2F1c2Ugfi8uY29uZmlnIGZvbGRlciBha2Egcm9vdF9kaXIgZG9lc24ndCBleGlzdC4KK1RoaXMgaXNzdWUgd2FzIG5vdCBzZWVuIGJlZm9yZSBiZWNhdXNlIH4vLmNvbmZpZyBkaXJlY3RvcnkgaXMgc2hhcmVkCitiZXR3ZWVuIHNldmVyYWwgcGFja2FnZXMgYW5kIG9uZSBvZiB0aG9zZSBwYWNrYWdlcyB1c3VhbGx5IGNyZWF0ZXMgaXQKK2J5IHRoZSB0aW1lIGdjb25mIHdhbnRzIHRvIHVzZSBpdC4KKworVGhpcyBwYXRjaCBtYWtlcyBzdXJlIHRoYXQgZ2NvbmYgY3JlYXRlcyB0aGUgLmNvbmZpZyBkaXJlY3RvcnkgaWYgaXQKK2RvZXNuJ3QgZXhpc3QsIGFsb25nIHdpdGggdGhlIGdjb25mIGRpcmVjdG9yeSBpbnNpZGUgaXQuCisKK1NpZ25lZC1vZmYtYnk6IEphZXdvbiBMZWUgPGphZXdvbi5sZWVAeGlsaW54LmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyQHhpbGlueC5jb20+CisKKworSW5kZXg6IEdDb25mLTMuMi42L2JhY2tlbmRzL21hcmt1cC1iYWNrZW5kLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBHQ29uZi0zLjIuNi5vcmlnL2JhY2tlbmRzL21hcmt1cC1iYWNrZW5kLmMKKysrKyBHQ29uZi0zLjIuNi9iYWNrZW5kcy9tYXJrdXAtYmFja2VuZC5jCitAQCAtMjc2LDcgKzI3Niw3IEBAIHJlc29sdmVfYWRkcmVzcyAoY29uc3QgY2hhciAqYWRkcmVzcywKKyAgICAgICAvKiBkaXJfbW9kZSB3aXRob3V0IHNlYXJjaCBiaXRzICovCisgICAgICAgZmlsZV9tb2RlID0gZGlyX21vZGUgJiAofjAxMTEpOworICAgICB9CistICBlbHNlIGlmIChnX21rZGlyIChyb290X2RpciwgZGlyX21vZGUpIDwgMCkKKysgIGVsc2UgaWYgKGdfbWtkaXJfd2l0aF9wYXJlbnRzIChyb290X2RpciwgZGlyX21vZGUpIDwgMCkKKyAgICAgeworICAgICAgIC8qIEVycm9yIG91dCBldmVuIG9uIEVFWElTVCAtIHNob3VsZG4ndCBoYXBwZW4gYW55d2F5ICovCisgICAgICAgZ2NvbmZfc2V0X2Vycm9yIChlcnIsIEdDT05GX0VSUk9SX0ZBSUxFRCwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ2NvbmZfMy4yLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2djb25mXzMuMi42LmJiCmluZGV4IDkyZmQxMmMuLjEyMGFlM2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ2NvbmZfMy4yLjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nY29uZl8zLjIuNi5iYgpAQCAtMTEsNiArMTEsNyBAQAogU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vR0NvbmYvJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS9HQ29uZi0ke1BWfS50YXIueHo7bmFtZT1hcmNoaXZlIFwKICAgICAgICAgICAgZmlsZTovL3JlbW92ZV9wbHVzX2Zyb21faW52YWxpZF9jaGFyYWN0ZXJzX2xpc3QucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vdW5hYmxlLWNvbm5lY3QtZGJ1cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jcmVhdGVfY29uZmlnX2RpcmVjdG9yeS5wYXRjaCBcCiAiCiAKIFNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjJiMTY5OTZkMGU0YjExMjg1NmVlNWM1OTEzMGU4MjJjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtZ2lzY2FubmVyLWFkZC1hLWxpYi1kaXJzLWVudnZhci1vcHRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1naXNjYW5uZXItYWRkLWEtbGliLWRpcnMtZW52dmFyLW9wdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWM1MjdkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtZ2lzY2FubmVyLWFkZC1hLWxpYi1kaXJzLWVudnZhci1vcHRpb24ucGF0Y2gKQEAgLTAsMCArMSw3MyBAQAorRnJvbSBlNDhmMWUxOGY1ZWE0MTY1NmYwYmExMGZlNjFkNjlkMjYwNGIwMDY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDMgSmFuIDIwMTggMTc6MDI6MDEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gZ2lzY2FubmVyOiBhZGQgYSAtLWxpYi1kaXJzLWVudnZhciBvcHRpb24KKworQnkgZGVmYXVsdCBMRF9MSUJSQVJZX1BBVEggaXMgc2V0IHRvIHRoZSBsaXN0IG9mIHRhcmdldCBsaWJyYXJ5IHBhdGhzOwordGhpcyBicmVha3MgZG93biBpbiBjcm9zcy1jb21waWxhdGlvbiBlbnZpcm9ubWVudCwgYXMgd2UgbmVlZCB0byBydW4gYQorbmF0aXZlIGVtdWxhdGlvbiB3cmFwcGVyIHJhdGhlciB0aGFuIHRoZSB0YXJnZXQgYmluYXJ5IGl0c2VsZi4gVGhpcyBwYXRjaAorYWxsb3dzIGV4cG9ydGluZyB0aG9zZSBwYXRocyB0byBhIGRpZmZlcmVudCBlbnZpcm9ubWVudCB2YXJpYWJsZQord2hpY2ggY2FuIGJlIHBpY2tlZCB1cCBhbmQgdXNlZCBieSB0aGUgd3JhcHBlci4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKworLS0tCisgZ2lzY2FubmVyL2Njb21waWxlci5weSAgIHwgNCArKy0tCisgZ2lzY2FubmVyL2R1bXBlci5weSAgICAgIHwgMyArKy0KKyBnaXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkgfCAzICsrKworIDMgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2lzY2FubmVyL2Njb21waWxlci5weSBiL2dpc2Nhbm5lci9jY29tcGlsZXIucHkKK2luZGV4IDI5ZGUwZWUuLjkyOGVhZTggMTAwNjQ0CistLS0gYS9naXNjYW5uZXIvY2NvbXBpbGVyLnB5CisrKysgYi9naXNjYW5uZXIvY2NvbXBpbGVyLnB5CitAQCAtMTA5LDcgKzEwOSw3IEBAIGNsYXNzIENDb21waWxlcihvYmplY3QpOgorIAorICAgICAgICAgICAgIHNlbGYuX2NmbGFnc19ub19kZXByZWNhdGlvbl93YXJuaW5ncyA9ICItV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgorIAorLSAgICBkZWYgZ2V0X2ludGVybmFsX2xpbmtfZmxhZ3Moc2VsZiwgYXJncywgbGlidG9vbCwgbGlicmFyaWVzLCBleHRyYV9saWJyYXJpZXMsIGxpYnBhdGhzKToKKysgICAgZGVmIGdldF9pbnRlcm5hbF9saW5rX2ZsYWdzKHNlbGYsIGFyZ3MsIGxpYnRvb2wsIGxpYnJhcmllcywgZXh0cmFfbGlicmFyaWVzLCBsaWJwYXRocywgbGliX2RpcnNfZW52dmFyKToKKyAgICAgICAgICMgQW4gImludGVybmFsIiBsaW5rIGlzIHdoZXJlIHRoZSBsaWJyYXJ5IHRvIGJlIGludHJvc3BlY3RlZAorICAgICAgICAgIyBpcyBiZWluZyBidWlsdCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisgCitAQCAtMTE5LDcgKzExOSw3IEBAIGNsYXNzIENDb21waWxlcihvYmplY3QpOgorICAgICAgICAgaWYgc2VsZi5jaGVja19pc19tc3ZjKCk6CisgICAgICAgICAgICAgcnVudGltZV9wYXRoX2VudnZhciA9IFsnTElCJywgJ1BBVEgnXQorICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICBydW50aW1lX3BhdGhfZW52dmFyID0gWydMRF9MSUJSQVJZX1BBVEgnXQorKyAgICAgICAgICAgIHJ1bnRpbWVfcGF0aF9lbnZ2YXIgPSBbJ0xEX0xJQlJBUllfUEFUSCddIGlmIG5vdCBsaWJfZGlyc19lbnZ2YXIgZWxzZSBbbGliX2RpcnNfZW52dmFyXQorICAgICAgICAgICAgICMgU2VhcmNoIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBmaXJzdAorICAgICAgICAgICAgICMgKFRoaXMgZmxhZyBpcyBub3Qgc3VwcG9ydGVkIG5vciBuZWVkZWQgZm9yIFZpc3VhbCBDKyspCisgICAgICAgICAgICAgYXJncy5hcHBlbmQoJy1MLicpCitkaWZmIC0tZ2l0IGEvZ2lzY2FubmVyL2R1bXBlci5weSBiL2dpc2Nhbm5lci9kdW1wZXIucHkKK2luZGV4IDdmNzdiZDIuLmRiOTZkZjYgMTAwNjQ0CistLS0gYS9naXNjYW5uZXIvZHVtcGVyLnB5CisrKysgYi9naXNjYW5uZXIvZHVtcGVyLnB5CitAQCAtMjU5LDcgKzI1OSw4IEBAIGNsYXNzIER1bXBDb21waWxlcihvYmplY3QpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnRvb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5saWJyYXJpZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5leHRyYV9saWJyYXJpZXMsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5saWJyYXJ5X3BhdGhzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMubGlicmFyeV9wYXRocywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmxpYl9kaXJzX2VudnZhcikKKyAgICAgICAgICAgICBhcmdzLmV4dGVuZChwa2dfY29uZmlnX2xpYnMpCisgCisgICAgICAgICBlbHNlOgorZGlmZiAtLWdpdCBhL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weSBiL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weQoraW5kZXggMzhhNDVjMS4uYjYwMzg1MCAxMDA3NTUKKy0tLSBhL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weQorKysrIGIvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5CitAQCAtMTMwLDYgKzEzMCw5IEBAIGRlZiBfZ2V0X29wdGlvbl9wYXJzZXIoKToKKyAgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXVzZS1sZGQtd3JhcHBlciIsCisgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJsZGRfd3JhcHBlciIsIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0id3JhcHBlciB0byB1c2UgaW5zdGVhZCBvZiBsZGQgKHVzZWZ1bCB3aGVuIGNyb3NzLWNvbXBpbGluZykiKQorKyAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tbGliLWRpcnMtZW52dmFyIiwKKysgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9ImxpYl9kaXJzX2VudnZhciIsIGRlZmF1bHQ9Tm9uZSwKKysgICAgICAgICAgICAgICAgICAgICAgaGVscD0iZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gd3JpdGUgYSBsaXN0IG9mIGxpYnJhcnkgZGlyZWN0b3JpZXMgdG8gKGZvciBydW5uaW5nIHRoZSB0cmFuc2llbnQgYmluYXJ5KSwgaW5zdGVhZCBvZiBzdGFuZGFyZCBMRF9MSUJSQVJZX1BBVEgiKQorICAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tcHJvZ3JhbS1hcmciLAorICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249ImFwcGVuZCIsIGRlc3Q9InByb2dyYW1fYXJncyIsIGRlZmF1bHQ9W10sCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImV4dHJhIGFyZ3VtZW50cyB0byBwcm9ncmFtIikKKy0tIAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAyLWNvbmZpZ3VyZS5hYy1hZGQtaG9zdC1naS1naS1jcm9zcy13cmFwcGVyLWdpLWxkZC13cmEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMi1jb25maWd1cmUuYWMtYWRkLWhvc3QtZ2ktZ2ktY3Jvc3Mtd3JhcHBlci1naS1sZGQtd3JhLnBhdGNoCmluZGV4IDQ4YTBjODUuLmM2ODJiNDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAyLWNvbmZpZ3VyZS5hYy1hZGQtaG9zdC1naS1naS1jcm9zcy13cmFwcGVyLWdpLWxkZC13cmEucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDItY29uZmlndXJlLmFjLWFkZC1ob3N0LWdpLWdpLWNyb3NzLXdyYXBwZXItZ2ktbGRkLXdyYS5wYXRjaApAQCAtMzIsMTAgKzMyLDEwIEBACiAgdGVzdHMvTWFrZWZpbGUuYW0gfCAgNSArKysrLQogIDQgZmlsZXMgY2hhbmdlZCwgODcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggYjA4MGE4OS4uY2U4ZDI5YiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQorSW5kZXg6IGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjUyLjEvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xLm9yaWcvTWFrZWZpbGUuYW0KKysrKyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xL01ha2VmaWxlLmFtCiBAQCAtMjEsNyArMjEsOSBAQCBpbmNsdWRlIE1ha2VmaWxlLWNtcGguYW0KICBpbmNsdWRlIE1ha2VmaWxlLWdpcmVwb3NpdG9yeS5hbQogIGluY2x1ZGUgTWFrZWZpbGUtZ2lzY2FubmVyLmFtCkBAIC00NiwxMCArNDYsMTAgQEAKICBpbmNsdWRlIE1ha2VmaWxlLXRvb2xzLmFtCiAgaW5jbHVkZSBNYWtlZmlsZS1tc3ZjcHJvai5hbQogIAotZGlmZiAtLWdpdCBhL2NvbW1vbi5tayBiL2NvbW1vbi5tawotaW5kZXggZTI2YzYzNy4uOWYzYTY1ZiAxMDA2NDQKLS0tLSBhL2NvbW1vbi5tawotKysrIGIvY29tbW9uLm1rCitJbmRleDogZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuNTIuMS9jb21tb24ubWsKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xLm9yaWcvY29tbW9uLm1rCisrKysgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuNTIuMS9jb21tb24ubWsKIEBAIC02LDYgKzYsMTUgQEAKICAjIG1vZHVsZSBpdHNlbGYuCiAgIwpAQCAtMTMwLDEzICsxMzAsMTMgQEAKICAKICBJTlRST1NQRUNUSU9OX0RPQ1RPT0xfQVJHUyA9IFwKICAgICAgLS1hZGQtaW5jbHVkZS1wYXRoPSQoc3JjZGlyKSBcCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA2YzkxZmE1Li4yMTM0MGE1IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zNjAsNiArMzYwLDQ4IEBAIGZpCi0gCi0gQUNfU1VCU1QoRVhUUkFfTElOS19GTEFHUykKK0luZGV4OiBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjUyLjEub3JpZy9jb25maWd1cmUuYWMKKysrKyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xL2NvbmZpZ3VyZS5hYworQEAgLTM2Niw2ICszNjYsNDggQEAgZG5sCisgQU1fQ09ORElUSU9OQUwoTVNWQ19CQVNFX05PX1RPT0xTRVRfU0VULCBbdGVzdCB4JE1TVkNfQkFTRV9UT09MU0VUID0geF0pCisgQU1fQ09ORElUSU9OQUwoTVNWQ19OT19UT09MU0VUX1NFVCwgW3Rlc3QgeCRNU1ZDX1RPT0xTRVQgPSB4XSkKICAKICtBQ19BUkdfRU5BQkxFKFtob3N0LWdpXSwKICtbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWhvc3QtZ2ldLFtVc2UgZ29iamVjdCBpbnRyb3NwZWN0aW9uIHRvb2xzIGluc3RhbGxlZCBpbiB0aGUgaG9zdCBzeXN0ZW0gKHVzZWZ1bCB3aGVuIGNyb3NzLWNvbXBpbGluZyldKV0sCkBAIC0xODMsMTAgKzE4MywxMCBAQAogIEFDX0NPTkZJR19GSUxFUyhbCiAgTWFrZWZpbGUKICB0ZXN0cy9NYWtlZmlsZQotZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IGJkZDBmYTcuLjc1ZGQzYzkgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KK0luZGV4OiBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xL3Rlc3RzL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuNTIuMS5vcmlnL3Rlc3RzL01ha2VmaWxlLmFtCisrKysgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuNTIuMS90ZXN0cy9NYWtlZmlsZS5hbQogQEAgLTEsNiArMSw5IEBACiAgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2NvbW1vbi5tawogIApAQCAtMTk4LDYgKzE5OCwzIEBACiAgCiAgRVhUUkFfRElTVD0KICBCVUlMVF9TT1VSQ0VTPQotLS0gCi0yLjcuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS41Mi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNTIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ZlNzFhMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS41Mi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTg4ICswLDAgQEAKLVNVTU1BUlkgPSAiTWlkZGxld2FyZSBsYXllciBiZXR3ZWVuIEdPYmplY3QtdXNpbmcgQyBsaWJyYXJpZXMgYW5kIGxhbmd1YWdlIGJpbmRpbmdzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9hY3Rpb24vc2hvdy9Qcm9qZWN0cy9HT2JqZWN0SW50cm9zcGVjdGlvbiIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjIrICYgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTBkNTc3NTM1YTM4OThlMWFlNWRiZjBhZTM1MDlhOGMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdG9vbHMvY29tcGlsZXIuYztlbmRsaW5lPTIwO21kNT1mYzUwMDdmYzIwMDIyNzIwZTZjMGIwY2RkZTQxZmFiZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9naXNjYW5uZXIvc291cmNlc2Nhbm5lci5jO2VuZGxpbmU9MjI7bWQ1PTE5NGQ2ZTBjMWQwMDY2MmYzMmQwMzBjZTQ0ZGU4ZDM5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dpcmVwb3NpdG9yeS9naXJlZ2lzdGVyZWR0eXBlaW5mby5jO2VuZGxpbmU9MjE7bWQ1PTY2MTg0NzYxMWFlNjk3OTQ2NTQxNWYzMWE3NTliYTI3IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vMS41Mi8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUmV2ZXJ0LWFuLWluY29tcGxldGUtdXBzdHJlYW0tYXR0ZW1wdC1hdC1jcm9zcy1jb21waS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbmZpZ3VyZS5hYy1hZGQtaG9zdC1naS1naS1jcm9zcy13cmFwcGVyLWdpLWxkZC13cmEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1naXNjYW5uZXItYWRkLXVzZS1iaW5hcnktd3JhcHBlci1vcHRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1naXNjYW5uZXItYWRkLWEtdXNlLWxkZC13cmFwcGVyLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LVByZWZpeC1wa2ctY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTkZJR19TWVNST09UX0RJUi0ucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMzQxNTcwNzM5OTFmOWVlYjBlZDk1MzM1MWI2NWViNjEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmVkMGMzOGQ1MmZlMWFhNmZjNGRlZjBjODY4ZmU0ODFjYjg3YjUzMmZjNjk0NzU2YjI2ZDZjZmFiMjlmYWZmNCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MgcHl0aG9uM25hdGl2ZSBxZW11IGdvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLSMgbmVlZGVkIGZvciB3cml0aW5nIG91dCB0aGUgcWVtdSB3cmFwcGVyIHNjcmlwdAotZXhwb3J0IFNUQUdJTkdfRElSX0hPU1QKLWV4cG9ydCBCCi0KLURFUEVORFNfYXBwZW5kID0gIiBsaWJmZmkgemxpYiBnbGliLTIuMCBweXRob24zIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSIKLQotIyB0YXJnZXQgYnVpbGQgbmVlZHMgcWVtdSB0byBydW4gdGVtcG9yYXJ5IGludHJvc3BlY3Rpb24gYmluYXJpZXMgY3JlYXRlZAotIyBvbiB0aGUgZmx5IGJ5IGctaXItc2Nhbm5lciBhbmQgYSBuYXRpdmUgdmVyc2lvbiBvZiBpdHNlbGYgdG8gcnVuCi0jIG5hdGl2ZSB2ZXJzaW9ucyBvZiBpdHMgb3duIHRvb2xzIGR1cmluZyBidWlsZC4KLSMgQWxzbyBwcmVsaW5rLXJ0bGQgaXMgdXNlZCB0byBmaW5kIG91dCBsaWJyYXJ5IGRlcGVuZGVuY2llcyBvZiBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzCi0jIChzdGFuZGFyZCBsZGQgZG9lc24ndCB3b3JrIHdoZW4gY3Jvc3MtY29tcGlsaW5nKS4KLURFUEVORFNfY2xhc3MtdGFyZ2V0X2FwcGVuZCA9ICIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLW5hdGl2ZSBxZW11LW5hdGl2ZSBwcmVsaW5rLW5hdGl2ZSIKLQotU1NUQVRFX1NDQU5fRklMRVMgKz0gImctaXItc2Nhbm5lci1xZW11d3JhcHBlciBnLWlyLXNjYW5uZXItd3JhcHBlciBnLWlyLWNvbXBpbGVyLXdyYXBwZXIgZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgR2lvLTIuMC5naXIgcG9zdGluc3QtbGRzb2NvbmYtJHtQTn0iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICAgICAgIyBUd2VhayB0aGUgbmF0aXZlIHB5dGhvbiBzY3JpcHRzIHNvIHRoYXQgdGhleSBkb24ndCByZWZlciB0byB0aGUKLSAgICAgICAgIyBmdWxsIHBhdGggb2YgbmF0aXZlIHB5dGhvbiBiaW5hcnkgKHRoZSBzb2x1dGlvbiBpcyB0YWtlbiBmcm9tIGdsaWItMi4wIHJlY2lwZSkKLSAgICAgICAgIyBUaGlzIHJlbW92ZXMgdGhlIHJpc2sgb2YgZXhjZWVkaW5nIExpbnV4IGtlcm5lbCdzIHNoZWJhbmcgbGluZSBsaW1pdCAoMTI4IGJ5dGVzKQotICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24zLCcgJHtTfS90b29scy9nLWlyLXRvb2wtdGVtcGxhdGUuaW4KLX0KLQotZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICAgICAjIFdyaXRlIG91dCBhIHFlbXUgd3JhcHBlciB0aGF0IHdpbGwgYmUgZ2l2ZW4gdG8gZ2ktc2Nhbm5lciBzbyB0aGF0IGl0Ci0gICAgICAgICMgY2FuIHJ1biB0YXJnZXQgaGVscGVyIGJpbmFyaWVzIHRocm91Z2ggdGhhdC4KLSAgICAgICAgcWVtdV9iaW5hcnk9IiR7QHFlbXVfd3JhcHBlcl9jbWRsaW5lKGQsICckU1RBR0lOR19ESVJfSE9TVCcsIFsnXCRHSVJfRVhUUkFfTElCU19QQVRIJywnLmxpYnMnLCckU1RBR0lOR19ESVJfSE9TVC8ke2xpYmRpcn0nLCckU1RBR0lOR19ESVJfSE9TVC8ke2Jhc2VfbGliZGlyfSddKX0iCi0gICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi0jIFVzZSBhIG1vZHVsZXMgZGlyZWN0b3J5IHdoaWNoIGRvZXNuJ3QgZXhpc3Qgc28gd2UgZG9uJ3QgbG9hZCByYW5kb20gdGhpbmdzCi0jIHdoaWNoIG1heSB0aGVuIGdldCBkZWxldGVkIChvciB0aGVpciBkZXBlbmRlbmNpZXMpIGFuZCBwb3RlbnRpYWxseSBzZWdmYXVsdAotZXhwb3J0IEdJT19NT0RVTEVfRElSPSR7U1RBR0lOR19MSUJESVJ9L2dpby9tb2R1bGVzLWR1bW15Ci0KLSRxZW11X2JpbmFyeSAiXCRAIgotaWYgWyBcJD8gLW5lIDAgXTsgdGhlbgotICAgIGVjaG8gIklmIHRoZSBhYm92ZSBlcnJvciBtZXNzYWdlIGlzIGFib3V0IG1pc3NpbmcgLnNvIGxpYnJhcmllcywgdGhlbiBzZXR0aW5nIHVwIEdJUl9FWFRSQV9MSUJTX1BBVEggaW4gdGhlIHJlY2lwZSBzaG91bGQgaGVscC4iCi0gICAgZWNobyAiKHR5cGljYWxseSBsaWtlIHRoaXM6IEdJUl9FWFRSQV9MSUJTX1BBVEg9XCIkIiJ7Qn0vc29tZXRoaW5nLy5saWJzXCIgKSIKLSAgICBleGl0IDEKLWZpCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIKLQotICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgZm9yIGctaXItc2Nhbm5lciBpdHNlbGYsIHdoaWNoIHdpbGwgYmUgdXNlZCB3aGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMKLSAgICAgICAgIyBmb3IgZ2xpYi1iYXNlZCBwYWNrYWdlcy4gVGhpcyB3cmFwcGVyIGNhbGxzIHRoZSBuYXRpdmUgdmVyc2lvbiBvZiB0aGUgc2Nhbm5lciwgYW5kIHRlbGxzIGl0IHRvIHVzZQotICAgICAgICAjIGEgcWVtdSB3cmFwcGVyIGZvciBydW5uaW5nIHRyYW5zaWVudCB0YXJnZXQgYmluYXJpZXMgcHJvZHVjZWQgYnkgdGhlIHNjYW5uZXIsIGFuZCBhbiBpbmNsdWRlIGRpcmVjdG9yeSAKLSAgICAgICAgIyBmcm9tIHRoZSB0YXJnZXQgc3lzcm9vdC4KLSAgICAgICAgY2F0ID4gJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlciA8PCBFT0YKLSMhL2Jpbi9zaAotIyBUaGlzIHByZXZlbnRzIGctaXItc2Nhbm5lciBmcm9tIHdyaXRpbmcgY2FjaGUgZGF0YSB0byAkSE9NRQotZXhwb3J0IEdJX1NDQU5ORVJfRElTQUJMRV9DQUNIRT0xCi0KLWctaXItc2Nhbm5lciAtLXVzZS1iaW5hcnktd3JhcHBlcj0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgLS11c2UtbGRkLXdyYXBwZXI9JHtTVEFHSU5HX0JJTkRJUn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgLS1hZGQtaW5jbHVkZS1wYXRoPSR7U1RBR0lOR19EQVRBRElSfS9naXItMS4wICJcJEAiCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlcgotCi0gICAgICAgICMgV3JpdGUgb3V0IGEgd3JhcHBlciBmb3IgZy1pci1jb21waWxlciwgd2hpY2ggcnVucyB0aGUgdGFyZ2V0IHZlcnNpb24gb2YgaXQgdGhyb3VnaCBxZW11LgotICAgICAgICAjIGctaXItY29tcGlsZXIgd3JpdGVzIG91dCB0aGUgcmF3IGNvbnRlbnQgb2YgYSBDIHN0cnVjdCB0byBkaXNrLCBhbmQgdGhlcmVmb3JlIGlzIGFyY2hpdGVjdHVyZSBkZXBlbmRlbnQuCi0gICAgICAgIGNhdCA+ICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgJHtTVEFHSU5HX0JJTkRJUn0vZy1pci1jb21waWxlciAiXCRAIgotRU9GCi0gICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyCi0KLSAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIHRvIHVzZSBpbnN0ZWFkIG9mIGxkZCwgd2hpY2ggZG9lcyBub3Qgd29yayB3aGVuIGEgYmluYXJ5IGlzIGJ1aWx0Ci0gICAgICAgICMgZm9yIGEgZGlmZmVyZW50IGFyY2hpdGVjdHVyZQotICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi1wcmVsaW5rLXJ0bGQgLS1yb290PSRTVEFHSU5HX0RJUl9IT1NUICJcJEAiCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlcgotCi0gICAgICAgICMgQWxzbyB0d2VhayB0aGUgdGFyZ2V0IHB5dGhvbiBzY3JpcHRzIHNvIHRoYXQgdGhleSBkb24ndCByZWZlciB0byB0aGUKLSAgICAgICAgIyBuYXRpdmUgdmVyc2lvbiBvZiBweXRob24gYmluYXJ5ICh0aGUgc29sdXRpb24gaXMgdGFrZW4gZnJvbSBnbGliLTIuMCByZWNpcGUpCi0gICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsJyAke1N9L3Rvb2xzL2ctaXItdG9vbC10ZW1wbGF0ZS5pbgotfQotCi0jIENvbmZpZ3VyZSB0YXJnZXQgYnVpbGQgdG8gdXNlIG5hdGl2ZSB0b29scyBvZiBpdHNlbGYgYW5kIHRvIHVzZSBhIHFlbXUgd3JhcHBlcgotIyBhbmQgb3B0aW9uYWxseSB0byBnZW5lcmF0ZSBpbnRyb3NwZWN0aW9uIGRhdGEKLUVYVFJBX09FQ09ORl9jbGFzcy10YXJnZXQgKz0gIi0tZW5hYmxlLWhvc3QtZ2kgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXN0YXRpYyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1naS1jcm9zcy13cmFwcGVyPSR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWdpLWxkZC13cmFwcGVyPSR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy0tZW5hYmxlLWludHJvc3BlY3Rpb24tZGF0YScsICctLWRpc2FibGUtaW50cm9zcGVjdGlvbi1kYXRhJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1QQUNLQUdFQ09ORklHID89ICIiCi1QQUNLQUdFQ09ORklHW2RvY3Rvb2xdID0gIi0tZW5hYmxlLWRvY3Rvb2wsLS1kaXNhYmxlLWRvY3Rvb2wscHl0aG9uMy1tYWtvLCIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICAgICAjIFRoaXMgcHJldmVudHMgZy1pci1zY2FubmVyIGZyb20gd3JpdGluZyBjYWNoZSBkYXRhIHRvICRIT01FCi0gICAgICAgIGV4cG9ydCBHSV9TQ0FOTkVSX0RJU0FCTEVfQ0FDSEU9MQotCi0gICAgICAgICMgTmVlZGVkIHRvIHJ1biBnLWlyIHVuaXQgdGVzdHMsIHdoaWNoIHdvbid0IGJlIGFibGUgdG8gZmluZCB0aGUgYnVpbHQgbGlicmFyaWVzIG90aGVyd2lzZQotICAgICAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0kQi8ubGlicwotfQotCi0jIE91ciB3cmFwcGVycyBuZWVkIHRvIGJlIGF2YWlsYWJsZSBzeXN0ZW0td2lkZSwgYmVjYXVzZSB0aGV5IHdpbGwgYmUgdXNlZCAKLSMgdG8gYnVpbGQgaW50cm9zcGVjdGlvbiBmaWxlcyBmb3IgYWxsIG90aGVyIGdvYmplY3QtYmFzZWQgcGFja2FnZXMKLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlciAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciAke0R9JHtiaW5kaXJ9LwotfQotCi0jIC50eXBlbGliIGZpbGVzIGFyZSBuZWVkZWQgYXQgcnVudGltZSBhbmQgc28gdGhleSBnbyB0byB0aGUgbWFpbiBwYWNrYWdlCi1GSUxFU18ke1BOfV9hcHBlbmQgPSAiICR7bGliZGlyfS9naXJlcG9zaXRvcnktKi8qLnR5cGVsaWIiCi0KLSMgLmdpciBmaWxlcyBnbyB0byBkZXYgcGFja2FnZSwgYXMgdGhleSdyZSBuZWVkZWQgZm9yIGRldmVsb3BpbmcgKGJ1dCBub3QgZm9yIHJ1bm5pbmcpCi0jIHRoaW5ncyB0aGF0IGRlcGVuZHMgb24gaW50cm9zcGVjdGlvbi4KLUZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ2lyLSovKi5naXIiCi0KLSMgVGhlc2UgYXJlIHVzZWQgYnkgZ29iamVjdC1iYXNlZCBwYWNrYWdlcwotIyB0byBnZW5lcmF0ZSB0cmFuc2llbnQgaW50cm9zcGVjdGlvbiBiaW5hcmllcwotRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL2dkdW1wLmMgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL01ha2VmaWxlLmludHJvc3BlY3Rpb24iCi0KLSMgVGhlc2UgYXJlIHVzZWQgYnkgZGVwZW5kZW50IHBhY2thZ2VzIChlLmcuIHB5Z29iamVjdCkgdG8gYnVpbGQgdGhlaXIKLSMgdGVzdHN1aXRlcy4KLUZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC90ZXN0cy8qLmMgXAotICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC90ZXN0cy8qLmgiCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi9naXNjYW5uZXIvLmRlYnVnLyIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi9naXNjYW5uZXIvKi5hIgotCi0jIHdlIG5lZWQgdGFyZ2V0IHZlcnNpb25zIG9mIGludHJvc3BlY3Rpb24gdG9vbHMgaW4gc3lzcm9vdCBzbyB0aGF0IHRoZXkgY2FuIGJlIHJ1biB2aWEgcWVtdQotIyB3aGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMgaW4gb3RoZXIgcGFja2FnZXMKLVNZU1JPT1RfRElSU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke2JpbmRpcn0iCi0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBnaV9iaW5hcmllc19zeXNyb290X3ByZXByb2Nlc3MiCi1naV9iaW5hcmllc19zeXNyb290X3ByZXByb2Nlc3MoKSB7Ci0gICAgICAgICMgVHdlYWsgdGhlIGJpbmFyeSBuYW1lcyBpbiB0aGUgaW50cm9zcGVjdGlvbiBwa2djb25maWcgZmlsZSwgc28gdGhhdCBpdAotICAgICAgICAjIHBpY2tzIHVwIG91ciB3cmFwcGVycyB3aGljaCBkbyB0aGUgY3Jvc3MtY29tcGlsZSBhbmQgcWVtdSBtYWdpYy4KLSAgICAgICAgc2VkIC1pIFwKLSAgICAgICAgICAgLWUgInN8Z19pcl9zY2FubmVyPS4qfGdfaXJfc2Nhbm5lcj0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXdyYXBwZXJ8IiBcCi0gICAgICAgICAgIC1lICJzfGdfaXJfY29tcGlsZXI9Lip8Z19pcl9jb21waWxlcj0ke2JpbmRpcn0vZy1pci1jb21waWxlci13cmFwcGVyfCIgXAotICAgICAgICAgICAke1NZU1JPT1RfREVTVERJUn0ke2xpYmRpcn0vcGtnY29uZmlnL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAucGMKLX0KLQotIyBOZWVkIHRvIGVuc3VyZSBsZC5zby5jb25mIGV4aXN0cyBzbyBwcmVsaW5rLW5hdGl2ZSB3b3JrcwotIyBib3RoIGJlZm9yZSB3ZSBidWlsZCBhbmQgaWYgd2UgaW5zdGFsbCBmcm9tIHNzdGF0ZQotZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiZ29iamVjdF9pbnRyb3NwZWN0aW9uX3ByZWNvbmZpZ3VyZSIKLXB5dGhvbiBnb2JqZWN0X2ludHJvc3BlY3Rpb25fcHJlY29uZmlndXJlICgpIHsKLSAgICBvZS51dGlscy53cml0ZV9sZF9zb19jb25mKGQpCi19Ci0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmQgPSAiIGdpX2xkc29jb25mX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLWdpX2xkc29jb25mX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7Ci0JbWtkaXIgLXAgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9Ci0JZGVzdD0ke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0vcG9zdGluc3QtbGRzb2NvbmYtJHtQTn0KLQllY2hvICIjIS9iaW4vc2giID4gJGRlc3QKLQllY2hvICJta2RpciAtcCAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9IiA+PiAkZGVzdAotCWVjaG8gImVjaG8gJHtiYXNlX2xpYmRpcn0gPj4gJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfS9sZC5zby5jb25mIiA+PiAkZGVzdAotCWVjaG8gImVjaG8gJHtsaWJkaXJ9ID4+ICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0vbGQuc28uY29uZiIgPj4gJGRlc3QKLQljaG1vZCA3NTUgJGRlc3QKLX0KLQotIyBSZW1vdmUgd3JhcHBlciBmaWxlcyBmcm9tIHRoZSBwYWNrYWdlLCBvbmx5IHVzZWQgZm9yIGNyb3NzLWNvbXBpbGluZwotUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJnaV9wYWNrYWdlX3ByZXByb2Nlc3MiCi1naV9wYWNrYWdlX3ByZXByb2Nlc3MoKSB7Ci0Jcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIKLQlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci13cmFwcGVyCi0Jcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIKLQlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS41NC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNTQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWM4MDAxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNTQuMS5iYgpAQCAtMCwwICsxLDE5MCBAQAorU1VNTUFSWSA9ICJNaWRkbGV3YXJlIGxheWVyIGJldHdlZW4gR09iamVjdC11c2luZyBDIGxpYnJhcmllcyBhbmQgbGFuZ3VhZ2UgYmluZGluZ3MiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL2FjdGlvbi9zaG93L1Byb2plY3RzL0dPYmplY3RJbnRyb3NwZWN0aW9uIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2MisgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05MGQ1Nzc1MzVhMzg5OGUxYWU1ZGJmMGFlMzUwOWE4YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90b29scy9jb21waWxlci5jO2VuZGxpbmU9MjA7bWQ1PWZjNTAwN2ZjMjAwMjI3MjBlNmMwYjBjZGRlNDFmYWJkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dpc2Nhbm5lci9zb3VyY2VzY2FubmVyLmM7ZW5kbGluZT0yMjttZDU9MTk0ZDZlMGMxZDAwNjYyZjMyZDAzMGNlNDRkZThkMzkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2lyZXBvc2l0b3J5L2dpcmVnaXN0ZXJlZHR5cGVpbmZvLmM7ZW5kbGluZT0yMTttZDU9NjYxODQ3NjExYWU2OTc5NDY1NDE1ZjMxYTc1OWJhMjciCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8xLjU0LyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZXZlcnQtYW4taW5jb21wbGV0ZS11cHN0cmVhbS1hdHRlbXB0LWF0LWNyb3NzLWNvbXBpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLmFjLWFkZC1ob3N0LWdpLWdpLWNyb3NzLXdyYXBwZXItZ2ktbGRkLXdyYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWdpc2Nhbm5lci1hZGQtdXNlLWJpbmFyeS13cmFwcGVyLW9wdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LWdpc2Nhbm5lci1hZGQtYS11c2UtbGRkLXdyYXBwZXItb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtUHJlZml4LXBrZy1jb25maWctcGF0aHMtd2l0aC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdpc2Nhbm5lci1hZGQtYS1saWItZGlycy1lbnZ2YXItb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjEyNmMyOWU0ZDU0YWRiZWQyZWQ0ZTJiMDQ0ODNkZTQxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI4OGRlZDVlNWYwNjRhYjU4YTkzYWFkZWNkNmQ1OGRiMmVjOWQ5NzA2NDg1MzRjNjM4MDdkNGY5YTdiYjg3N2UiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIHB5dGhvbjNuYXRpdmUgcWVtdSBnb2JqZWN0LWludHJvc3BlY3Rpb24tZGF0YSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCisjIG5lZWRlZCBmb3Igd3JpdGluZyBvdXQgdGhlIHFlbXUgd3JhcHBlciBzY3JpcHQKK2V4cG9ydCBTVEFHSU5HX0RJUl9IT1NUCitleHBvcnQgQgorCitERVBFTkRTX2FwcGVuZCA9ICIgbGliZmZpIHpsaWIgZ2xpYi0yLjAgcHl0aG9uMyBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUiCisKKyMgdGFyZ2V0IGJ1aWxkIG5lZWRzIHFlbXUgdG8gcnVuIHRlbXBvcmFyeSBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzIGNyZWF0ZWQKKyMgb24gdGhlIGZseSBieSBnLWlyLXNjYW5uZXIgYW5kIGEgbmF0aXZlIHZlcnNpb24gb2YgaXRzZWxmIHRvIHJ1bgorIyBuYXRpdmUgdmVyc2lvbnMgb2YgaXRzIG93biB0b29scyBkdXJpbmcgYnVpbGQuCisjIEFsc28gcHJlbGluay1ydGxkIGlzIHVzZWQgdG8gZmluZCBvdXQgbGlicmFyeSBkZXBlbmRlbmNpZXMgb2YgaW50cm9zcGVjdGlvbiBiaW5hcmllcworIyAoc3RhbmRhcmQgbGRkIGRvZXNuJ3Qgd29yayB3aGVuIGNyb3NzLWNvbXBpbGluZykuCitERVBFTkRTX2NsYXNzLXRhcmdldF9hcHBlbmQgPSAiIGdvYmplY3QtaW50cm9zcGVjdGlvbi1uYXRpdmUgcWVtdS1uYXRpdmUgcHJlbGluay1uYXRpdmUiCisKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICJnLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgZy1pci1zY2FubmVyLXdyYXBwZXIgZy1pci1jb21waWxlci13cmFwcGVyIGctaXItc2Nhbm5lci1sZGR3cmFwcGVyIEdpby0yLjAuZ2lyIHBvc3RpbnN0LWxkc29jb25mLSR7UE59IgorCitkb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgICAgICMgVHdlYWsgdGhlIG5hdGl2ZSBweXRob24gc2NyaXB0cyBzbyB0aGF0IHRoZXkgZG9uJ3QgcmVmZXIgdG8gdGhlCisgICAgICAgICMgZnVsbCBwYXRoIG9mIG5hdGl2ZSBweXRob24gYmluYXJ5ICh0aGUgc29sdXRpb24gaXMgdGFrZW4gZnJvbSBnbGliLTIuMCByZWNpcGUpCisgICAgICAgICMgVGhpcyByZW1vdmVzIHRoZSByaXNrIG9mIGV4Y2VlZGluZyBMaW51eCBrZXJuZWwncyBzaGViYW5nIGxpbmUgbGltaXQgKDEyOCBieXRlcykKKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywnICR7U30vdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluCit9CisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAgICAgIyBXcml0ZSBvdXQgYSBxZW11IHdyYXBwZXIgdGhhdCB3aWxsIGJlIGdpdmVuIHRvIGdpLXNjYW5uZXIgc28gdGhhdCBpdAorICAgICAgICAjIGNhbiBydW4gdGFyZ2V0IGhlbHBlciBiaW5hcmllcyB0aHJvdWdoIHRoYXQuCisgICAgICAgIHFlbXVfYmluYXJ5PSIke0BxZW11X3dyYXBwZXJfY21kbGluZShkLCAnJFNUQUdJTkdfRElSX0hPU1QnLCBbJ1wkR0lSX0VYVFJBX0xJQlNfUEFUSCcsJy5saWJzJywnJFNUQUdJTkdfRElSX0hPU1QvJHtsaWJkaXJ9JywnJFNUQUdJTkdfRElSX0hPU1QvJHtiYXNlX2xpYmRpcn0nXSl9IgorICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciA8PCBFT0YKKyMhL2Jpbi9zaAorIyBVc2UgYSBtb2R1bGVzIGRpcmVjdG9yeSB3aGljaCBkb2Vzbid0IGV4aXN0IHNvIHdlIGRvbid0IGxvYWQgcmFuZG9tIHRoaW5ncworIyB3aGljaCBtYXkgdGhlbiBnZXQgZGVsZXRlZCAob3IgdGhlaXIgZGVwZW5kZW5jaWVzKSBhbmQgcG90ZW50aWFsbHkgc2VnZmF1bHQKK2V4cG9ydCBHSU9fTU9EVUxFX0RJUj0ke1NUQUdJTkdfTElCRElSfS9naW8vbW9kdWxlcy1kdW1teQorCiskcWVtdV9iaW5hcnkgIlwkQCIKK2lmIFsgXCQ/IC1uZSAwIF07IHRoZW4KKyAgICBlY2hvICJJZiB0aGUgYWJvdmUgZXJyb3IgbWVzc2FnZSBpcyBhYm91dCBtaXNzaW5nIC5zbyBsaWJyYXJpZXMsIHRoZW4gc2V0dGluZyB1cCBHSVJfRVhUUkFfTElCU19QQVRIIGluIHRoZSByZWNpcGUgc2hvdWxkIGhlbHAuIgorICAgIGVjaG8gIih0eXBpY2FsbHkgbGlrZSB0aGlzOiBHSVJfRVhUUkFfTElCU19QQVRIPVwiJCIie0J9L3NvbWV0aGluZy8ubGlic1wiICkiCisgICAgZXhpdCAxCitmaQorRU9GCisgICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyCisKKyAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIGZvciBnLWlyLXNjYW5uZXIgaXRzZWxmLCB3aGljaCB3aWxsIGJlIHVzZWQgd2hlbiBidWlsZGluZyBpbnRyb3NwZWN0aW9uIGZpbGVzCisgICAgICAgICMgZm9yIGdsaWItYmFzZWQgcGFja2FnZXMuIFRoaXMgd3JhcHBlciBjYWxscyB0aGUgbmF0aXZlIHZlcnNpb24gb2YgdGhlIHNjYW5uZXIsIGFuZCB0ZWxscyBpdCB0byB1c2UKKyAgICAgICAgIyBhIHFlbXUgd3JhcHBlciBmb3IgcnVubmluZyB0cmFuc2llbnQgdGFyZ2V0IGJpbmFyaWVzIHByb2R1Y2VkIGJ5IHRoZSBzY2FubmVyLCBhbmQgYW4gaW5jbHVkZSBkaXJlY3RvcnkgCisgICAgICAgICMgZnJvbSB0aGUgdGFyZ2V0IHN5c3Jvb3QuCisgICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLXdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKKyMgVGhpcyBwcmV2ZW50cyBnLWlyLXNjYW5uZXIgZnJvbSB3cml0aW5nIGNhY2hlIGRhdGEgdG8gJEhPTUUKK2V4cG9ydCBHSV9TQ0FOTkVSX0RJU0FCTEVfQ0FDSEU9MQorCitnLWlyLXNjYW5uZXIgLS1saWItZGlycy1lbnZ2YXI9R0lSX0VYVFJBX0xJQlNfUEFUSCAtLXVzZS1iaW5hcnktd3JhcHBlcj0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgLS11c2UtbGRkLXdyYXBwZXI9JHtTVEFHSU5HX0JJTkRJUn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgLS1hZGQtaW5jbHVkZS1wYXRoPSR7U1RBR0lOR19EQVRBRElSfS9naXItMS4wICJcJEAiCitFT0YKKyAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlcgorCisgICAgICAgICMgV3JpdGUgb3V0IGEgd3JhcHBlciBmb3IgZy1pci1jb21waWxlciwgd2hpY2ggcnVucyB0aGUgdGFyZ2V0IHZlcnNpb24gb2YgaXQgdGhyb3VnaCBxZW11LgorICAgICAgICAjIGctaXItY29tcGlsZXIgd3JpdGVzIG91dCB0aGUgcmF3IGNvbnRlbnQgb2YgYSBDIHN0cnVjdCB0byBkaXNrLCBhbmQgdGhlcmVmb3JlIGlzIGFyY2hpdGVjdHVyZSBkZXBlbmRlbnQuCisgICAgICAgIGNhdCA+ICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyIDw8IEVPRgorIyEvYmluL3NoCiske1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgJHtTVEFHSU5HX0JJTkRJUn0vZy1pci1jb21waWxlciAiXCRAIgorRU9GCisgICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyCisKKyAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIHRvIHVzZSBpbnN0ZWFkIG9mIGxkZCwgd2hpY2ggZG9lcyBub3Qgd29yayB3aGVuIGEgYmluYXJ5IGlzIGJ1aWx0CisgICAgICAgICMgZm9yIGEgZGlmZmVyZW50IGFyY2hpdGVjdHVyZQorICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIDw8IEVPRgorIyEvYmluL3NoCitwcmVsaW5rLXJ0bGQgLS1yb290PSRTVEFHSU5HX0RJUl9IT1NUICJcJEAiCitFT0YKKyAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlcgorCisgICAgICAgICMgQWxzbyB0d2VhayB0aGUgdGFyZ2V0IHB5dGhvbiBzY3JpcHRzIHNvIHRoYXQgdGhleSBkb24ndCByZWZlciB0byB0aGUKKyAgICAgICAgIyBuYXRpdmUgdmVyc2lvbiBvZiBweXRob24gYmluYXJ5ICh0aGUgc29sdXRpb24gaXMgdGFrZW4gZnJvbSBnbGliLTIuMCByZWNpcGUpCisgICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsJyAke1N9L3Rvb2xzL2ctaXItdG9vbC10ZW1wbGF0ZS5pbgorfQorCisjIENvbmZpZ3VyZSB0YXJnZXQgYnVpbGQgdG8gdXNlIG5hdGl2ZSB0b29scyBvZiBpdHNlbGYgYW5kIHRvIHVzZSBhIHFlbXUgd3JhcHBlcgorIyBhbmQgb3B0aW9uYWxseSB0byBnZW5lcmF0ZSBpbnRyb3NwZWN0aW9uIGRhdGEKK0VYVFJBX09FQ09ORl9jbGFzcy10YXJnZXQgKz0gIi0tZW5hYmxlLWhvc3QtZ2kgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXN0YXRpYyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1naS1jcm9zcy13cmFwcGVyPSR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWdpLWxkZC13cmFwcGVyPSR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy0tZW5hYmxlLWludHJvc3BlY3Rpb24tZGF0YScsICctLWRpc2FibGUtaW50cm9zcGVjdGlvbi1kYXRhJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorCitQQUNLQUdFQ09ORklHID89ICIiCitQQUNLQUdFQ09ORklHW2RvY3Rvb2xdID0gIi0tZW5hYmxlLWRvY3Rvb2wsLS1kaXNhYmxlLWRvY3Rvb2wscHl0aG9uMy1tYWtvLCIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgICAgICAjIFRoaXMgcHJldmVudHMgZy1pci1zY2FubmVyIGZyb20gd3JpdGluZyBjYWNoZSBkYXRhIHRvICRIT01FCisgICAgICAgIGV4cG9ydCBHSV9TQ0FOTkVSX0RJU0FCTEVfQ0FDSEU9MQorCisgICAgICAgICMgTmVlZGVkIHRvIHJ1biBnLWlyIHVuaXQgdGVzdHMsIHdoaWNoIHdvbid0IGJlIGFibGUgdG8gZmluZCB0aGUgYnVpbHQgbGlicmFyaWVzIG90aGVyd2lzZQorICAgICAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0kQi8ubGlicworfQorCisjIE91ciB3cmFwcGVycyBuZWVkIHRvIGJlIGF2YWlsYWJsZSBzeXN0ZW0td2lkZSwgYmVjYXVzZSB0aGV5IHdpbGwgYmUgdXNlZCAKKyMgdG8gYnVpbGQgaW50cm9zcGVjdGlvbiBmaWxlcyBmb3IgYWxsIG90aGVyIGdvYmplY3QtYmFzZWQgcGFja2FnZXMKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlciAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciAke0R9JHtiaW5kaXJ9LworfQorCisjIC50eXBlbGliIGZpbGVzIGFyZSBuZWVkZWQgYXQgcnVudGltZSBhbmQgc28gdGhleSBnbyB0byB0aGUgbWFpbiBwYWNrYWdlCitGSUxFU18ke1BOfV9hcHBlbmQgPSAiICR7bGliZGlyfS9naXJlcG9zaXRvcnktKi8qLnR5cGVsaWIiCisKKyMgLmdpciBmaWxlcyBnbyB0byBkZXYgcGFja2FnZSwgYXMgdGhleSdyZSBuZWVkZWQgZm9yIGRldmVsb3BpbmcgKGJ1dCBub3QgZm9yIHJ1bm5pbmcpCisjIHRoaW5ncyB0aGF0IGRlcGVuZHMgb24gaW50cm9zcGVjdGlvbi4KK0ZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ2lyLSovKi5naXIiCitGSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dpci0qLyoucm5jIgorCisjIFRoZXNlIGFyZSB1c2VkIGJ5IGdvYmplY3QtYmFzZWQgcGFja2FnZXMKKyMgdG8gZ2VuZXJhdGUgdHJhbnNpZW50IGludHJvc3BlY3Rpb24gYmluYXJpZXMKK0ZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9nZHVtcC5jIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9NYWtlZmlsZS5pbnRyb3NwZWN0aW9uIgorCisjIFRoZXNlIGFyZSB1c2VkIGJ5IGRlcGVuZGVudCBwYWNrYWdlcyAoZS5nLiBweWdvYmplY3QpIHRvIGJ1aWxkIHRoZWlyCisjIHRlc3RzdWl0ZXMuCitGSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvdGVzdHMvKi5jIFwKKyAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvdGVzdHMvKi5oIgorCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ2lzY2FubmVyLy5kZWJ1Zy8iCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ2lzY2FubmVyLyouYSIKKworIyB3ZSBuZWVkIHRhcmdldCB2ZXJzaW9ucyBvZiBpbnRyb3NwZWN0aW9uIHRvb2xzIGluIHN5c3Jvb3Qgc28gdGhhdCB0aGV5IGNhbiBiZSBydW4gdmlhIHFlbXUKKyMgd2hlbiBidWlsZGluZyBpbnRyb3NwZWN0aW9uIGZpbGVzIGluIG90aGVyIHBhY2thZ2VzCitTWVNST09UX0RJUlNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtiaW5kaXJ9IgorCitTWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZ2lfYmluYXJpZXNfc3lzcm9vdF9wcmVwcm9jZXNzIgorZ2lfYmluYXJpZXNfc3lzcm9vdF9wcmVwcm9jZXNzKCkgeworICAgICAgICAjIFR3ZWFrIHRoZSBiaW5hcnkgbmFtZXMgaW4gdGhlIGludHJvc3BlY3Rpb24gcGtnY29uZmlnIGZpbGUsIHNvIHRoYXQgaXQKKyAgICAgICAgIyBwaWNrcyB1cCBvdXIgd3JhcHBlcnMgd2hpY2ggZG8gdGhlIGNyb3NzLWNvbXBpbGUgYW5kIHFlbXUgbWFnaWMuCisgICAgICAgIHNlZCAtaSBcCisgICAgICAgICAgIC1lICJzfGdfaXJfc2Nhbm5lcj0uKnxnX2lyX3NjYW5uZXI9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci13cmFwcGVyfCIgXAorICAgICAgICAgICAtZSAic3xnX2lyX2NvbXBpbGVyPS4qfGdfaXJfY29tcGlsZXI9JHtiaW5kaXJ9L2ctaXItY29tcGlsZXItd3JhcHBlcnwiIFwKKyAgICAgICAgICAgJHtTWVNST09UX0RFU1RESVJ9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wLnBjCit9CisKKyMgTmVlZCB0byBlbnN1cmUgbGQuc28uY29uZiBleGlzdHMgc28gcHJlbGluay1uYXRpdmUgd29ya3MKKyMgYm90aCBiZWZvcmUgd2UgYnVpbGQgYW5kIGlmIHdlIGluc3RhbGwgZnJvbSBzc3RhdGUKK2RvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gImdvYmplY3RfaW50cm9zcGVjdGlvbl9wcmVjb25maWd1cmUiCitweXRob24gZ29iamVjdF9pbnRyb3NwZWN0aW9uX3ByZWNvbmZpZ3VyZSAoKSB7CisgICAgb2UudXRpbHMud3JpdGVfbGRfc29fY29uZihkKQorfQorCitTWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kID0gIiBnaV9sZHNvY29uZl9zeXNyb290X3ByZXByb2Nlc3MiCitnaV9sZHNvY29uZl9zeXNyb290X3ByZXByb2Nlc3MgKCkgeworCW1rZGlyIC1wICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfQorCWRlc3Q9JHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9L3Bvc3RpbnN0LWxkc29jb25mLSR7UE59CisJZWNobyAiIyEvYmluL3NoIiA+ICRkZXN0CisJZWNobyAibWtkaXIgLXAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfSIgPj4gJGRlc3QKKwllY2hvICJlY2hvICR7YmFzZV9saWJkaXJ9ID4+ICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0vbGQuc28uY29uZiIgPj4gJGRlc3QKKwllY2hvICJlY2hvICR7bGliZGlyfSA+PiAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9L2xkLnNvLmNvbmYiID4+ICRkZXN0CisJY2htb2QgNzU1ICRkZXN0Cit9CisKKyMgUmVtb3ZlIHdyYXBwZXIgZmlsZXMgZnJvbSB0aGUgcGFja2FnZSwgb25seSB1c2VkIGZvciBjcm9zcy1jb21waWxpbmcKK1BBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAiZ2lfcGFja2FnZV9wcmVwcm9jZXNzIgorZ2lfcGFja2FnZV9wcmVwcm9jZXNzKCkgeworCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyCisJcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLXNjYW5uZXItd3JhcHBlcgorCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1jb21waWxlci13cmFwcGVyCisJcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlcgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXNfMy4yMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXNfMy4yMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODRhNGYzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzXzMuMjIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVNVTU1BUlkgPSAiR05PTUUgZGVza3RvcC13aWRlIEdTZXR0aW5ncyBzY2hlbWFzIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGludGx0b29sLW5hdGl2ZSIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ3NldHRpbmdzIGdldHRleHQgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI1YjkwNTZhYjZlZmY0MmEwMTE3ZjI5MTJlZGZmNWYyMCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjBmMDZjN2JhMzRjM2E5OWU0ZDU4YjEwODg5NDk2MTMzYzlhYWFkNjY5OGVhMmQ4NDA1ZDQ4MWM3ZjFhN2VhZTEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hc18zLjI0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hc18zLjI0LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYxZmQyNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzXzMuMjQuMS5iYgpAQCAtMCwwICsxLDEzIEBACitTVU1NQVJZID0gIkdOT01FIGRlc2t0b3Atd2lkZSBHU2V0dGluZ3Mgc2NoZW1hcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9saXZlLmdub21lLm9yZy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworREVQRU5EUyA9ICJnbGliLTIuMCBpbnRsdG9vbC1uYXRpdmUiCisKK2luaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnZXR0ZXh0IGdvYmplY3QtaW50cm9zcGVjdGlvbiB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNzk2YjZhYzFlZmY0NTAyNjFlZGQ1MjFiNzJlN2ZlNmQiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI3NmEzZmEzMDlmOWRlNjA3NGQ2Njg0ODk4NzIxNGYwYjEyODEyNGJhNzE4NGM5NThjMTVhYzc4YThhYzdlZWE3IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0aysvaGFyZGNvZGVkX2xpYnRvb2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKy9oYXJkY29kZWRfbGlidG9vbC5wYXRjaAppbmRleCAxYWU3MjhlLi45ZWI3ZjZiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKy9oYXJkY29kZWRfbGlidG9vbC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKy9oYXJkY29kZWRfbGlidG9vbC5wYXRjaApAQCAtMywxOSArMywyMCBAQAogVXBkYXRlZCB0byBhcHBseSB0byBndGsrLTIuMjQuMTUKIAogU2lnbmVkLW9mZi1ieTogTWFya28gTGluZHF2aXN0IDxjYXpmaTc0QGdtYWlsLmNvbT4KLWRpZmYgLU51cmQgZ3RrKy0yLjI0LjE1L2NvbmZpZ3VyZS5hYyBndGsrLTIuMjQuMTUvY29uZmlndXJlLmFjCi0tLS0gZ3RrKy0yLjI0LjE1L2NvbmZpZ3VyZS5hYwkyMDEzLTAxLTEyIDIwOjUyOjU0LjAwMDAwMDAwMCArMDIwMAotKysrIGd0aystMi4yNC4xNS9jb25maWd1cmUuYWMJMjAxMy0wMi0xMiAyMTozMzozMC42ODk5MjU5NjcgKzAyMDAKLUBAIC00MTUsNyArNDE1LDcgQEAKK0luZGV4OiBndGsrLTIuMjQuMzEvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3RrKy0yLjI0LjMxLm9yaWcvY29uZmlndXJlLmFjCisrKysgZ3RrKy0yLjI0LjMxL2NvbmZpZ3VyZS5hYworQEAgLTQxNSw3ICs0MTUsNyBAQCBBQ19NU0dfQ0hFQ0tJTkcoW1doZXRoZXIgdG8gd3JpdGUgZGVwZW5kCiAgY2FzZSAkZW5hYmxlX2V4cGxpY2l0X2RlcHMgaW4KICAgIGF1dG8pCiAgICAgIGV4cG9ydCBTRUQKIC0gICAgZGVwbGlic19jaGVja19tZXRob2Q9YCguL2xpYnRvb2wgLS1jb25maWc7IGVjaG8gJ2V2YWwgZWNobyBcIiRkZXBsaWJzX2NoZWNrX21ldGhvZFwiJykgfCBzaGAKICsgICAgZGVwbGlic19jaGVja19tZXRob2Q9YCguLyRob3N0X2FsaWFzLWxpYnRvb2wgLS1jb25maWc7IGVjaG8gJ2V2YWwgZWNobyBcIiRkZXBsaWJzX2NoZWNrX21ldGhvZFwiJykgfCBzaGAKICAgICAgaWYgdGVzdCAieCRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJyE9JyB4cGFzc19hbGwgfHwgdGVzdCAieCRlbmFibGVfc3RhdGljIiA9IHh5ZXMgOyB0aGVuCi0gICAgICAgZW5hYmxlX2V4cGxpY2l0X2RlcHM9eWVzCisgICAgICAgZW5hYmxlX2V4cGxpY2l0X2RlcHM9eWVzICAKICAgICAgZWxzZQotQEAgLTc3NCw3ICs3NzQsNyBAQAorQEAgLTc3Miw3ICs3NzIsNyBAQCBlbHNlCiAgICAgIGRubCBOb3cgd2UgY2hlY2sgdG8gc2VlIGlmIG91ciBsaWJ0b29sIHN1cHBvcnRzIHNoYXJlZCBsaWIgZGVwcwogICAgICBkbmwgKGluIGEgcmF0aGVyIHVnbHkgd2F5IGV2ZW4pCiAgICAgIGlmICRkeW53b3JrczsgdGhlbgpAQCAtMjQsNyArMjUsNyBAQAogICAgICAgICAgbW9kdWxlX2RlcGxpYnNfY2hlY2s9YCRtb2R1bGVfbGlidG9vbF9jb25maWcgfCBcCiAgICAgICAgICAgICAgZ3JlcCAnXltbYS16X11dKmNoZWNrW1thLXpfXV0qX21ldGhvZD1bWydcJyciXV0nIHwgXAogICAgICAgICAgICAgIHNlZCAncy8uKltbJ1wnJyJdXVwoLipcKVtbJ1wnJyJdXSQvXDEvJ2AKLUBAIC0xNTc0LDcgKzE1NzQsNyBAQAorQEAgLTE1NzksNyArMTU3OSw3IEBAIGZpCiAgIyBXZSBhcmUgdXNpbmcgZ21vZHVsZS1uby1leHBvcnQgbm93LCBidXQgSSdtIGxlYXZpbmcgdGhlIHN0cmlwcGluZwogICMgY29kZSBpbiBwbGFjZSBmb3Igbm93LCBzaW5jZSBwYW5nbyBhbmQgYXRrIHN0aWxsIHJlcXVpcmUgZ21vZHVsZS4KICBleHBvcnQgU0VECmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLmluYwppbmRleCAwYTM1N2RiLi40MjBlYWQyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy5pbmMKQEAgLTM1LDcgKzM1LDYgQEAKICAgICAgICAgICAgICAgICAgLS1lbmFibGUtbW9kdWxlcyBcCiAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1jdXBzIFwKICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWNvbG9yZCBcCi0gICAgICAgICAgICAgICAgIFdBWUxBTkRfUFJPVE9DT0xTX1NZU1JPT1RfRElSPSR7UkVDSVBFX1NZU1JPT1R9IFwKICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJ4MTEiLCAiIiwgIi0tZGlzYWJsZS1ndGstZG9jIiwgZCl9IFwKICAgICAgICAgICAgICAgICAgIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwMi1Eby1ub3QtdHJ5LXRvLWluaXRpYWxpemUtR0wtd2l0aG91dC1saWJHTC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoCmluZGV4IGFiN2I2NTkuLmNjN2VkZjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyZDIzNjFmMjRiZTFlNTEyMDEwNjNkYmJkYTU3MGRlYmU4NzAyYjZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAyM2E1NjMxNTU0MDY5ODBkZmM4Y2Y2ZjdjMmRhNmNjZTBhYzMxMGYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIERhdGU6IEZyaSwgMTYgT2N0IDIwMTUgMTY6MzU6MTYgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSCAyLzRdIERvIG5vdCB0cnkgdG8gaW5pdGlhbGl6ZSBHTCB3aXRob3V0IGxpYkdMCkBAIC0xNSwyOSArMTUsMjkgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQKIFNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CisKIC0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgIHwgNyArKysrKysrCisgY29uZmlndXJlLmFjICAgICAgICAgICAgfCA2ICsrKysrKwogIGdkay94MTEvZ2RrdmlzdWFsLXgxMS5jIHwgNSArKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQorIDIgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBmNDNhYzA5Li45NjVlZWM5IDEwMDY0NAoraW5kZXggNzU3ZmQ3Yy4uMGE0ODg3NSAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzQ2LDYgKzM0NiwxMyBAQCBBQ19BUkdfRU5BQkxFKG1pci1iYWNrZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGUgdGhlIE1pciBnZGsgYmFja2VuZF0pXSwKLSAJCQkgICAgICBbYmFja2VuZF9zZXQ9eWVzXSkKLSAKK0BAIC0zNTEsNiArMzUxLDEyIEBAIEFDX0FSR19FTkFCTEUoY2xvdWRwcm92aWRlcnMsCisgICAgICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWNsb3VkcHJvdmlkZXJzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlIGxpYmNsb3VkcHJvdmlkZXJzIGludGVncmF0aW9uXSldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbG91ZHByb3ZpZGVyc19zZXQ9eWVzXSkKICtBQ19BUkdfRU5BQkxFKGdseCwKICsgICAgICAgICAgICAgIFtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtZ2x4XSwKICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbV2hlbiBlbmFibGVkIEdkayB3aWxsIHRyeSB0byBpbml0aWFsaXplIEdMWF0pXSkKICtBU19JRihbdGVzdCAieCRlbmFibGVfZ2x4IiAhPSAieG5vIl0sIFsKICsgIEFDX0RFRklORShbSEFWRV9HTFhdLCBbXSwgW0dMWCB3aWxsIGJlIGF2YWlsYWJsZSBhdCBydW50aW1lXSkKICtdKQotKworIAogIGlmIHRlc3QgLXogIiRiYWNrZW5kX3NldCI7IHRoZW4KICAgIGlmIHRlc3QgIiRwbGF0Zm9ybV93aW4zMiIgPSB5ZXM7IHRoZW4KLSAgICAgZW5hYmxlX3dpbjMyX2JhY2tlbmQ9eWVzCiBkaWZmIC0tZ2l0IGEvZ2RrL3gxMS9nZGt2aXN1YWwteDExLmMgYi9nZGsveDExL2dka3Zpc3VhbC14MTEuYwogaW5kZXggODE0NzlkOC4uM2M4YzVjMCAxMDA2NDQKIC0tLSBhL2dkay94MTEvZ2RrdmlzdWFsLXgxMS5jCkBAIC01Niw1ICs1Niw1IEBACiAgCiAgZ2ludAogLS0gCi0yLjEyLjAKKzIuMTQuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwMy1BZGQtZGlzYWJsZS1vcGVuZ2wtY29uZmlndXJlLW9wdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoCmluZGV4IDljZGVlMGUuLmQyZjEyZGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBhMmU2YjdjYmJkNmQ3NDFmZWQzOGQ5MWIzNzQyYWE0YTA4Mzk1YWJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkZTM2ZGY3MGQ4N2JhMzQ1M2VkNGYyYjkyZTk5MDAyMWM2NzIzOGY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIERhdGU6IFR1ZSwgMjEgSnVuIDIwMTYgMTU6MTE6MzkgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSCAzLzRdIEFkZCAtLWRpc2FibGUtb3BlbmdsIGNvbmZpZ3VyZSBvcHRpb24KQEAgLTE5LDQxICsxOSw0MCBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW0V2aWwgZXllIGV4cGVjdGVkIGZyb20gdXBzdHJlYW1dCiBTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorCiAtLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgfCAxMyArKysrKysrLS0KLSBkZW1vcy9ndGstZGVtby9nbGFyZWEuYyAgICAgICAgICAgfCAxNCArKysrKysrKysKLSBkb2NzL3Rvb2xzL01ha2VmaWxlLmFtICAgICAgICAgICAgfCAgOSArKysrLS0KLSBkb2NzL3Rvb2xzL3dpZGdldHMuYyAgICAgICAgICAgICAgfCAgNCArKy0KLSBnZGsvZ2RrZGlzcGxheS5jICAgICAgICAgICAgICAgICAgfCAgNCArKy0KLSBnZGsvZ2RrZ2wuYyAgICAgICAgICAgICAgICAgICAgICAgfCAxMCArKysrKysrCi0gZ2RrL2dka2dsY29udGV4dC5jICAgICAgICAgICAgICAgIHwgIDYgKysrKwotIGdkay9nZGt3aW5kb3cuYyAgICAgICAgICAgICAgICAgICB8IDEzICsrKysrKysrKwotIGdkay94MTEvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICB8IDMwICsrKysrKysrKysrKysrKysrLS0tCi0gZ2RrL3gxMS9nZGtkaXNwbGF5LXgxMS5jICAgICAgICAgIHwgIDYgKysrLQotIGdkay94MTEvZ2Rrc2NyZWVuLXgxMS5jICAgICAgICAgICB8ICA1ICsrKysKLSBnZGsveDExL2dka3dpbmRvdy14MTEuYyAgICAgICAgICAgfCAgNCArKysKLSBnZGsveDExL2dka3gtYXV0b2NsZWFudXBzLmggICAgICAgfCAgMiArKwotIGdkay94MTEvZ2RreC13aXRoLWdsLWNvbnRleHQuaCAgICB8IDU5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gZ2RrL3gxMS9nZGt4LXdpdGhvdXQtZ2wtY29udGV4dC5oIHwgNTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGdkay94MTEvZ2RreC5oICAgICAgICAgICAgICAgICAgICB8IDYwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGd0ay9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICB8ICAzICstCi0gZ3RrL2d0a2dsYXJlYS5jICAgICAgICAgICAgICAgICAgIHwgMjAgKysrKysrKysrKysrLQotIGd0ay9pbnNwZWN0b3IvZ2VuZXJhbC5jICAgICAgICAgICB8ICA2ICsrKysKLSB0ZXN0cy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgfCAxMCArKysrKy0tCi0gdGVzdHN1aXRlL2d0ay9vYmplY3RzLWZpbmFsaXplLmMgIHwgIDIgKysKLSAyMSBmaWxlcyBjaGFuZ2VkLCAyNjEgaW5zZXJ0aW9ucygrKSwgNzcgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdkay94MTEvZ2RreC13aXRoLWdsLWNvbnRleHQuaAorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEzICsrKysrLS0KKyBkZW1vcy9ndGstZGVtby9nbGFyZWEuYyAgICAgICAgICAgICAgICAgICAgfCAxNCArKysrKysrKworIGRvY3MvdG9vbHMvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICB8ICA5ICsrKy0tCisgZG9jcy90b29scy93aWRnZXRzLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKystCisgZ2RrL2dka2Rpc3BsYXkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKystCisgZ2RrL2dka2dsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKysrCisgZ2RrL2dka2dsY29udGV4dC5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKysrKworIGdkay9nZGt3aW5kb3cuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEzICsrKysrKysKKyBnZGsveDExL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgfCAzMCArKysrKysrKysrKysrLS0tCisgZ2RrL3gxMS9nZGtkaXNwbGF5LXgxMS5jICAgICAgICAgICAgICAgICAgIHwgIDYgKysrLQorIGdkay94MTEvZ2Rrc2NyZWVuLXgxMS5jICAgICAgICAgICAgICAgICAgICB8ICA1ICsrKworIGdkay94MTEvZ2Rrd2luZG93LXgxMS5jICAgICAgICAgICAgICAgICAgICB8ICA0ICsrKworIGdkay94MTEvZ2RreC1hdXRvY2xlYW51cHMuaCAgICAgICAgICAgICAgICB8ICAyICsrCisgZ2RrL3gxMS97Z2RreC5oID0+IGdka3gtd2l0aC1nbC1jb250ZXh0Lmh9IHwgIDEgLQorIGdkay94MTEvZ2RreC13aXRob3V0LWdsLWNvbnRleHQuaCAgICAgICAgICB8IDU4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGd0ay9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzICstCisgZ3RrL2d0a2dsYXJlYS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAgKysrKysrKysrKy0KKyBndGsvaW5zcGVjdG9yL2dlbmVyYWwuYyAgICAgICAgICAgICAgICAgICAgfCAgNiArKysrCisgdGVzdHMvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKy0tCisgdGVzdHN1aXRlL2d0ay9vYmplY3RzLWZpbmFsaXplLmMgICAgICAgICAgIHwgIDIgKysKKyAyMCBmaWxlcyBjaGFuZ2VkLCAyMDIgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCisgcmVuYW1lIGdkay94MTEve2dka3guaCA9PiBnZGt4LXdpdGgtZ2wtY29udGV4dC5ofSAoOTglKQogIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGsveDExL2dka3gtd2l0aG91dC1nbC1jb250ZXh0LmgKLSBkZWxldGUgbW9kZSAxMDA2NDQgZ2RrL3gxMS9nZGt4LmgKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOTY1ZWVjOS4uMDBiZjU0NCAxMDA2NDQKK2luZGV4IDBhNDg4NzUuLjZmMGEzYTYgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTM0Niw2ICszNDYsMTUgQEAgQUNfQVJHX0VOQUJMRShtaXItYmFja2VuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlIHRoZSBNaXIgZ2RrIGJhY2tlbmRdKV0sCi0gCQkJICAgICAgW2JhY2tlbmRfc2V0PXllc10pCi0gCitAQCAtMzUxLDYgKzM1MSwxNSBAQCBBQ19BUkdfRU5BQkxFKGNsb3VkcHJvdmlkZXJzLAorICAgICAgICAgICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1jbG91ZHByb3ZpZGVyc10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZSBsaWJjbG91ZHByb3ZpZGVycyBpbnRlZ3JhdGlvbl0pXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xvdWRwcm92aWRlcnNfc2V0PXllc10pCiArQUNfQVJHX0VOQUJMRShvcGVuZ2wsCiArICAgICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLW9wZW5nbF0sCiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1doZW4gZW5hYmxlZCwgR3RrKyB3aWxsIHVzZSBsaWJlcG94eSBhbmQgZXhwb3NlcyBHdGtHTEFyZWEgd2lkZ2V0IF0pXSkKQEAgLTY2LDE2ICs2NSwxNiBAQAogIEFDX0FSR19FTkFCTEUoZ2x4LAogICAgICAgICAgICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1nbHhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtXaGVuIGVuYWJsZWQgR2RrIHdpbGwgdHJ5IHRvIGluaXRpYWxpemUgR0xYXSldKQotQEAgLTEzNTIsNyArMTM2MSw3IEBAIENGTEFHUz0iJHNhdmVkX2NmbGFncyIKK0BAIC0xMzcyLDcgKzEzODEsNyBAQCBDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCiAgTERGTEFHUz0iJHNhdmVkX2xkZmxhZ3MiCiAgCiAgR0RLX1BBQ0tBR0VTPSIkUEFOR09fUEFDS0FHRVMgZ2RrLXBpeGJ1Zi0yLjAgPj0gZ2RrX3BpeGJ1Zl9yZXF1aXJlZF92ZXJzaW9uIGNhaXJvID49IGNhaXJvX3JlcXVpcmVkX3ZlcnNpb24gY2Fpcm8tZ29iamVjdCA+PSBjYWlyb19yZXF1aXJlZF92ZXJzaW9uIgotLUdES19QUklWQVRFX1BBQ0tBR0VTPSIkR0RLX0dJT19QQUNLQUdFICRYX1BBQ0tBR0VTICRXQVlMQU5EX1BBQ0tBR0VTICRNSVJfUEFDS0FHRVMgJGNhaXJvX2JhY2tlbmRzIGVwb3h5ID49IGVwb3h5X3JlcXVpcmVkX3ZlcnNpb24iCi0rR0RLX1BSSVZBVEVfUEFDS0FHRVM9IiRHREtfR0lPX1BBQ0tBR0UgJFhfUEFDS0FHRVMgJFdBWUxBTkRfUEFDS0FHRVMgJE1JUl9QQUNLQUdFUyAkY2Fpcm9fYmFja2VuZHMgJEVQT1hZX1BBQ0tBR0VTIgorLUdES19QUklWQVRFX1BBQ0tBR0VTPSIkR0RLX0dJT19QQUNLQUdFICRYX1BBQ0tBR0VTICRXQVlMQU5EX1BBQ0tBR0VTICRNSVJfUEFDS0FHRVMgJGNhaXJvX2JhY2tlbmRzIGVwb3h5ID49IGVwb3h5X3JlcXVpcmVkX3ZlcnNpb24gJENMT1VEUFJPVklERVJfUEFDS0FHRVMiCisrR0RLX1BSSVZBVEVfUEFDS0FHRVM9IiRHREtfR0lPX1BBQ0tBR0UgJFhfUEFDS0FHRVMgJFdBWUxBTkRfUEFDS0FHRVMgJE1JUl9QQUNLQUdFUyAkY2Fpcm9fYmFja2VuZHMgJEVQT1hZX1BBQ0tBR0VTICRDTE9VRFBST1ZJREVSX1BBQ0tBR0VTIgogIAogIFBLR19DSEVDS19NT0RVTEVTKEdES19ERVAsICRHREtfUEFDS0FHRVMgJEdES19QUklWQVRFX1BBQ0tBR0VTKQogIEdES19ERVBfTElCUz0iJEdES19FWFRSQV9MSUJTICRHREtfREVQX0xJQlMgJE1BVEhfTElCIgotQEAgLTEzODYsNyArMTM5NSw3IEBAIGZpCitAQCAtMTQwNiw3ICsxNDE1LDcgQEAgZmkKICBQS0dfQ0hFQ0tfTU9EVUxFUyhBVEssICRBVEtfUEFDS0FHRVMpCiAgCiAgR1RLX1BBQ0tBR0VTPSJhdGsgPj0gYXRrX3JlcXVpcmVkX3ZlcnNpb24gY2Fpcm8gPj0gY2Fpcm9fcmVxdWlyZWRfdmVyc2lvbiBjYWlyby1nb2JqZWN0ID49IGNhaXJvX3JlcXVpcmVkX3ZlcnNpb24gZ2RrLXBpeGJ1Zi0yLjAgPj0gZ2RrX3BpeGJ1Zl9yZXF1aXJlZF92ZXJzaW9uIGdpby0yLjAgPj0gZ2xpYl9yZXF1aXJlZF92ZXJzaW9uIgpAQCAtMjEwLDEwICsyMDksMTAgQEAKICAKICAgIHJldHVybiBpbmZvOwogZGlmZiAtLWdpdCBhL2dkay9nZGtkaXNwbGF5LmMgYi9nZGsvZ2RrZGlzcGxheS5jCi1pbmRleCA2YjAxMmNhLi4zMTFjN2Y3IDEwMDY0NAoraW5kZXggNDAyMjVlOS4uYzU1ZTFkZSAxMDA2NDQKIC0tLSBhL2dkay9nZGtkaXNwbGF5LmMKICsrKyBiL2dkay9nZGtkaXNwbGF5LmMKLUBAIC0yNDA5LDcgKzI0MDksOSBAQCBnYm9vbGVhbgorQEAgLTI0MDYsNyArMjQwNiw5IEBAIGdib29sZWFuCiAgZ2RrX2Rpc3BsYXlfbWFrZV9nbF9jb250ZXh0X2N1cnJlbnQgKEdka0Rpc3BsYXkgICAqZGlzcGxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrR0xDb250ZXh0ICpjb250ZXh0KQogIHsKQEAgLTM0Nyw3ICszNDYsNyBAQAogIAogIC8qKgogZGlmZiAtLWdpdCBhL2dkay9nZGt3aW5kb3cuYyBiL2dkay9nZGt3aW5kb3cuYwotaW5kZXggNjg5ZDY2Ni4uZmI4NDI1NiAxMDA2NDQKK2luZGV4IGMwZTBhN2QuLjQzN2FiMDMgMTAwNjQ0CiAtLS0gYS9nZGsvZ2Rrd2luZG93LmMKICsrKyBiL2dkay9nZGt3aW5kb3cuYwogQEAgLTQ1LDcgKzQ1LDkgQEAKQEAgLTM2MCw3ICszNTksNyBAQAogIAogIC8qIGZvciB0aGUgdXNlIG9mIHJvdW5kKCkgKi8KICAjaW5jbHVkZSAiZmFsbGJhY2stYzg5LmMiCi1AQCAtMjgxOSw2ICsyODIxLDEzIEBAIGdka193aW5kb3dfZ2V0X3BhaW50X2dsX2NvbnRleHQgKEdka1dpbmRvdyAgKndpbmRvdywKK0BAIC0yODIyLDYgKzI4MjQsMTMgQEAgZ2RrX3dpbmRvd19nZXRfcGFpbnRfZ2xfY29udGV4dCAoR2RrV2luZG93ICAqd2luZG93LAogIHsKICAgIEdFcnJvciAqaW50ZXJuYWxfZXJyb3IgPSBOVUxMOwogIApAQCAtMzc0LDcgKzM3Myw3IEBACiAgICBpZiAoX2dka19nbF9mbGFncyAmIEdES19HTF9ESVNBQkxFKQogICAgICB7CiAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbCAoZXJyb3IsIEdES19HTF9FUlJPUiwKLUBAIC0yOTU0LDYgKzI5NjMsNyBAQCBnZGtfd2luZG93X2JlZ2luX3BhaW50X2ludGVybmFsIChHZGtXaW5kb3cgICAgICAgICAgICAqd2luZG93LAorQEAgLTI5NTcsNiArMjk2Niw3IEBAIGdka193aW5kb3dfYmVnaW5fcGFpbnRfaW50ZXJuYWwgKEdka1dpbmRvdyAgICAgICAgICAgICp3aW5kb3csCiAgICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgICAgewpAQCAtMzgyLDcgKzM4MSw3IEBACiAgCSAgZ2RrX2dsX2NvbnRleHRfbWFrZV9jdXJyZW50IChjb250ZXh0KTsKICAgICAgICAgICAgLyogV2l0aCBnbCB3ZSBhbHdheXMgbmVlZCBhIHN1cmZhY2UgdG8gY29tYmluZSB0aGUgZ2wKICAgICAgICAgICAgICAgZHJhd2luZyB3aXRoIHRoZSBuYXRpdmUgZHJhd2luZy4gKi8KLUBAIC0yOTY4LDYgKzI5NzgsNyBAQCBnZGtfd2luZG93X2JlZ2luX3BhaW50X2ludGVybmFsIChHZGtXaW5kb3cgICAgICAgICAgICAqd2luZG93LAorQEAgLTI5NzEsNiArMjk4MSw3IEBAIGdka193aW5kb3dfYmVnaW5fcGFpbnRfaW50ZXJuYWwgKEdka1dpbmRvdyAgICAgICAgICAgICp3aW5kb3csCiAgICAgICAgICAgIGdsQmxlbmRGdW5jIChHTF9PTkUsIEdMX09ORV9NSU5VU19TUkNfQUxQSEEpOwogIAogICAgICAgICAgICBnbFZpZXdwb3J0ICgwLCAwLCB3dywgd2gpOwpAQCAtMzkwLDcgKzM4OSw3IEBACiAgICAgICAgICB9CiAgICAgIH0KICAKLUBAIC0zMDMxLDYgKzMwNDIsNyBAQCBnZGtfd2luZG93X2VuZF9wYWludF9pbnRlcm5hbCAoR2RrV2luZG93ICp3aW5kb3cpCitAQCAtMzAzNCw2ICszMDQ1LDcgQEAgZ2RrX3dpbmRvd19lbmRfcGFpbnRfaW50ZXJuYWwgKEdka1dpbmRvdyAqd2luZG93KQogIAogICAgICAgICAgICBnZGtfZ2xfY29udGV4dF9tYWtlX2N1cnJlbnQgKHdpbmRvdy0+Z2xfcGFpbnRfY29udGV4dCk7CiAgCkBAIC0zOTgsNyArMzk3LDcgQEAKICAgICAgICAgICAgaWYgKCFjYWlyb19yZWdpb25faXNfZW1wdHkgKG9wYXF1ZV9yZWdpb24pKQogICAgICAgICAgICAgIGdka19nbF90ZXh0dXJlX2Zyb21fc3VyZmFjZSAod2luZG93LT5jdXJyZW50X3BhaW50LnN1cmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFxdWVfcmVnaW9uKTsKLUBAIC0zMDQxLDYgKzMwNTMsNyBAQCBnZGtfd2luZG93X2VuZF9wYWludF9pbnRlcm5hbCAoR2RrV2luZG93ICp3aW5kb3cpCitAQCAtMzA0NCw2ICszMDU2LDcgQEAgZ2RrX3dpbmRvd19lbmRfcGFpbnRfaW50ZXJuYWwgKEdka1dpbmRvdyAqd2luZG93KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3ctPmN1cnJlbnRfcGFpbnQubmVlZF9ibGVuZF9yZWdpb24pOwogICAgICAgICAgICAgICAgZ2xEaXNhYmxlKEdMX0JMRU5EKTsKICAgICAgICAgICAgICB9CkBAIC00NzksNyArNDc4LDcgQEAKICsKICAtaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2dpdC5tawogZGlmZiAtLWdpdCBhL2dkay94MTEvZ2RrZGlzcGxheS14MTEuYyBiL2dkay94MTEvZ2RrZGlzcGxheS14MTEuYwotaW5kZXggYWQ2NWUyOS4uOTEzNDVlZSAxMDA2NDQKK2luZGV4IGU5YTI2M2YuLjI4MjlhMzEgMTAwNjQ0CiAtLS0gYS9nZGsveDExL2dka2Rpc3BsYXkteDExLmMKICsrKyBiL2dkay94MTEvZ2RrZGlzcGxheS14MTEuYwogQEAgLTM3LDcgKzM3LDkgQEAKQEAgLTQ5Miw3ICs0OTEsNyBAQAogICNpbmNsdWRlICJnZGstcHJpdmF0ZS5oIgogIAogICNpbmNsdWRlIDxnbGliLmg+Ci1AQCAtMjk5NCw3ICsyOTk2LDkgQEAgZ2RrX3gxMV9kaXNwbGF5X2NsYXNzX2luaXQgKEdka1gxMURpc3BsYXlDbGFzcyAqIGNsYXNzKQorQEAgLTMxNjksNyArMzE3MSw5IEBAIGdka194MTFfZGlzcGxheV9jbGFzc19pbml0IChHZGtYMTFEaXNwbGF5Q2xhc3MgKiBjbGFzcykKICAgIGRpc3BsYXlfY2xhc3MtPnRleHRfcHJvcGVydHlfdG9fdXRmOF9saXN0ID0gX2dka194MTFfZGlzcGxheV90ZXh0X3Byb3BlcnR5X3RvX3V0ZjhfbGlzdDsKICAgIGRpc3BsYXlfY2xhc3MtPnV0ZjhfdG9fc3RyaW5nX3RhcmdldCA9IF9nZGtfeDExX2Rpc3BsYXlfdXRmOF90b19zdHJpbmdfdGFyZ2V0OwogIApAQCAtNTU0LDcxICs1NTMsMjEgQEAKICBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyhHZGtYMTFLZXltYXAsIGdfb2JqZWN0X3VucmVmKQogIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DKEdka1gxMVNjcmVlbiwgZ19vYmplY3RfdW5yZWYpCiAgR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMoR2RrWDExVmlzdWFsLCBnX29iamVjdF91bnJlZikKLWRpZmYgLS1naXQgYS9nZGsveDExL2dka3gtd2l0aC1nbC1jb250ZXh0LmggYi9nZGsveDExL2dka3gtd2l0aC1nbC1jb250ZXh0LmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hZTA1ZmE2Ci0tLS0gL2Rldi9udWxsCitkaWZmIC0tZ2l0IGEvZ2RrL3gxMS9nZGt4LmggYi9nZGsveDExL2dka3gtd2l0aC1nbC1jb250ZXh0LmgKK3NpbWlsYXJpdHkgaW5kZXggOTglCityZW5hbWUgZnJvbSBnZGsveDExL2dka3guaAorcmVuYW1lIHRvIGdkay94MTEvZ2RreC13aXRoLWdsLWNvbnRleHQuaAoraW5kZXggMWY2NGJjYy4uYWUwNWZhNiAxMDA2NDQKKy0tLSBhL2dkay94MTEvZ2RreC5oCiArKysgYi9nZGsveDExL2dka3gtd2l0aC1nbC1jb250ZXh0LmgKLUBAIC0wLDAgKzEsNTkgQEAKLSsvKiBHREsgLSBUaGUgR0lNUCBEcmF3aW5nIEtpdAotKyAqIENvcHlyaWdodCAoQykgMTk5NS0xOTk3IFBldGVyIE1hdHRpcywgU3BlbmNlciBLaW1iYWxsIGFuZCBKb3NoIE1hY0RvbmFsZAotKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rICoKLSsgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgKgotKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5LiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rICovCi0rCi0rLyoKLSsgKiBNb2RpZmllZCBieSB0aGUgR1RLKyBUZWFtIGFuZCBvdGhlcnMgMTk5Ny0yMDAwLiAgU2VlIHRoZSBBVVRIT1JTCi0rICogZmlsZSBmb3IgYSBsaXN0IG9mIHBlb3BsZSBvbiB0aGUgR1RLKyBUZWFtLiAgU2VlIHRoZSBDaGFuZ2VMb2cKLSsgKiBmaWxlcyBmb3IgYSBsaXN0IG9mIGNoYW5nZXMuICBUaGVzZSBmaWxlcyBhcmUgZGlzdHJpYnV0ZWQgd2l0aAotKyAqIEdUSysgYXQgZnRwOi8vZnRwLmd0ay5vcmcvcHViL2d0ay8uCi0rICovCi0rCi0rI2lmbmRlZiBfX0dES19YX0hfXwotKyNkZWZpbmUgX19HREtfWF9IX18KLSsKLSsjaW5jbHVkZSA8Z2RrL2dkay5oPgotKwotKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgotKyNpbmNsdWRlIDxYMTEvWHV0aWwuaD4KLSsKLSsjZGVmaW5lIF9fR0RLWF9IX0lOU0lERV9fCi0rCi0rI2luY2x1ZGUgPGdkay94MTEvZ2RreDExYXBwbGF1bmNoY29udGV4dC5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWN1cnNvci5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRldmljZS5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRldmljZS1jb3JlLmg+Ci0rI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGV2aWNlLXhpMi5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRldmljZW1hbmFnZXIuaD4KLSsjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkZXZpY2VtYW5hZ2VyLWNvcmUuaD4KLSsjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkZXZpY2VtYW5hZ2VyLXhpMi5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRpc3BsYXkuaD4KLSsjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkaXNwbGF5bWFuYWdlci5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRuZC5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWdsY29udGV4dC5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMWtleXMuaD4KLSsjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFwcm9wZXJ0eS5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMXNjcmVlbi5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMXNlbGVjdGlvbi5oPgotKyNpbmNsdWRlIDxnZGsveDExL2dka3gxMXV0aWxzLmg+Ci0rI2luY2x1ZGUgPGdkay94MTEvZ2RreDExdmlzdWFsLmg+Ci0rI2luY2x1ZGUgPGdkay94MTEvZ2RreDExd2luZG93Lmg+Ci0rCi0rI2luY2x1ZGUgPGdkay94MTEvZ2RreC1hdXRvY2xlYW51cHMuaD4KLSsKLSsjdW5kZWYgX19HREtYX0hfSU5TSURFX18KLSsKLSsjZW5kaWYgLyogX19HREtfWF9IX18gKi8KK0BAIC00NSw3ICs0NSw2IEBACisgI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZG5kLmg+CisgI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZ2xjb250ZXh0Lmg+CisgI2luY2x1ZGUgPGdkay94MTEvZ2RreDExa2V5cy5oPgorLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMW1vbml0b3IuaD4KKyAjaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFwcm9wZXJ0eS5oPgorICNpbmNsdWRlIDxnZGsveDExL2dka3gxMXNjcmVlbi5oPgorICNpbmNsdWRlIDxnZGsveDExL2dka3gxMXNlbGVjdGlvbi5oPgogZGlmZiAtLWdpdCBhL2dkay94MTEvZ2RreC13aXRob3V0LWdsLWNvbnRleHQuaCBiL2dkay94MTEvZ2RreC13aXRob3V0LWdsLWNvbnRleHQuaAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAuLmM5ZTI2MTcKQEAgLTY4Myw3NyArNjMyLDExIEBACiArI3VuZGVmIF9fR0RLWF9IX0lOU0lERV9fCiArCiArI2VuZGlmIC8qIF9fR0RLX1hfSF9fICovCi1kaWZmIC0tZ2l0IGEvZ2RrL3gxMS9nZGt4LmggYi9nZGsveDExL2dka3guaAotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAxZjY0YmNjLi4wMDAwMDAwCi0tLS0gYS9nZGsveDExL2dka3guaAotKysrIC9kZXYvbnVsbAotQEAgLTEsNjAgKzAsMCBAQAotLS8qIEdESyAtIFRoZSBHSU1QIERyYXdpbmcgS2l0Ci0tICogQ29weXJpZ2h0IChDKSAxOTk1LTE5OTcgUGV0ZXIgTWF0dGlzLCBTcGVuY2VyIEtpbWJhbGwgYW5kIEpvc2ggTWFjRG9uYWxkCi0tICoKLS0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0tICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0gKgotLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLS0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLSAqCi0tICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnkuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLS0gKi8KLS0KLS0vKgotLSAqIE1vZGlmaWVkIGJ5IHRoZSBHVEsrIFRlYW0gYW5kIG90aGVycyAxOTk3LTIwMDAuICBTZWUgdGhlIEFVVEhPUlMKLS0gKiBmaWxlIGZvciBhIGxpc3Qgb2YgcGVvcGxlIG9uIHRoZSBHVEsrIFRlYW0uICBTZWUgdGhlIENoYW5nZUxvZwotLSAqIGZpbGVzIGZvciBhIGxpc3Qgb2YgY2hhbmdlcy4gIFRoZXNlIGZpbGVzIGFyZSBkaXN0cmlidXRlZCB3aXRoCi0tICogR1RLKyBhdCBmdHA6Ly9mdHAuZ3RrLm9yZy9wdWIvZ3RrLy4KLS0gKi8KLS0KLS0jaWZuZGVmIF9fR0RLX1hfSF9fCi0tI2RlZmluZSBfX0dES19YX0hfXwotLQotLSNpbmNsdWRlIDxnZGsvZ2RrLmg+Ci0tCi0tI2luY2x1ZGUgPFgxMS9YbGliLmg+Ci0tI2luY2x1ZGUgPFgxMS9YdXRpbC5oPgotLQotLSNkZWZpbmUgX19HREtYX0hfSU5TSURFX18KLS0KLS0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFhcHBsYXVuY2hjb250ZXh0Lmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExY3Vyc29yLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGV2aWNlLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGV2aWNlLWNvcmUuaD4KLS0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFkZXZpY2UteGkyLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGV2aWNlbWFuYWdlci5oPgotLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRldmljZW1hbmFnZXItY29yZS5oPgotLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRldmljZW1hbmFnZXIteGkyLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZGlzcGxheS5oPgotLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMWRpc3BsYXltYW5hZ2VyLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZG5kLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExZ2xjb250ZXh0Lmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExa2V5cy5oPgotLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMW1vbml0b3IuaD4KLS0jaW5jbHVkZSA8Z2RrL3gxMS9nZGt4MTFwcm9wZXJ0eS5oPgotLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMXNjcmVlbi5oPgotLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMXNlbGVjdGlvbi5oPgotLSNpbmNsdWRlIDxnZGsveDExL2dka3gxMXV0aWxzLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExdmlzdWFsLmg+Ci0tI2luY2x1ZGUgPGdkay94MTEvZ2RreDExd2luZG93Lmg+Ci0tCi0tI2luY2x1ZGUgPGdkay94MTEvZ2RreC1hdXRvY2xlYW51cHMuaD4KLS0KLS0jdW5kZWYgX19HREtYX0hfSU5TSURFX18KLS0KLS0jZW5kaWYgLyogX19HREtfWF9IX18gKi8KIGRpZmYgLS1naXQgYS9ndGsvTWFrZWZpbGUuYW0gYi9ndGsvTWFrZWZpbGUuYW0KLWluZGV4IDQ1ZmI3YzIuLmNlODEwMTEgMTAwNjQ0CitpbmRleCA4NDJjMmY5Li4wOTIxYmM3IDEwMDY0NAogLS0tIGEvZ3RrL01ha2VmaWxlLmFtCiArKysgYi9ndGsvTWFrZWZpbGUuYW0KLUBAIC0xNDExLDE0ICsxNDExLDEzIEBAIGd0a3ByaXZhdGV0eXBlYnVpbHRpbnMuYzogJChndGtfcHJpdmF0ZV90eXBlX2hfc291cmNlcykgIGd0a3ByaXZhdGV0eXBlYnVpbHRpbnMuCitAQCAtMTQxNiwxNCArMTQxNiwxMyBAQCBndGtwcml2YXRldHlwZWJ1aWx0aW5zLmM6ICQoZ3RrX3ByaXZhdGVfdHlwZV9oX3NvdXJjZXMpICBndGtwcml2YXRldHlwZWJ1aWx0aW5zLgogIAkmJiBjcCB4Z2VuLWdwdGJjIGd0a3ByaXZhdGV0eXBlYnVpbHRpbnMuYyAgXAogIAkmJiBybSAtZiB4Z2VuLWdwdGJjCiAgCkBAIC05MTMsNyArNzk2LDcgQEAKICAgIGlmIChHREtfSVNfV0FZTEFORF9ESVNQTEFZIChnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCAoKSkpCiAgICAgIHsKIGRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCBmODZjMTY2Li5iYTFhY2FkIDEwMDY0NAoraW5kZXggZTJkYjZlNC4uZTUxY2YzNCAxMDA2NDQKIC0tLSBhL3Rlc3RzL01ha2VmaWxlLmFtCiArKysgYi90ZXN0cy9NYWtlZmlsZS5hbQogQEAgLTgwLDggKzgwLDYgQEAgbm9pbnN0X1BST0dSQU1TID0gICQoVEVTVF9QUk9HUykJXApAQCAtOTQ5LDE3ICs4MzIsMTYgQEAKIGluZGV4IDBiM2E1MTkuLjA3YjA5NmYgMTAwNjQ0CiAtLS0gYS90ZXN0c3VpdGUvZ3RrL29iamVjdHMtZmluYWxpemUuYwogKysrIGIvdGVzdHN1aXRlL2d0ay9vYmplY3RzLWZpbmFsaXplLmMKLUBAIC0xMTUsOCArMTE1LDEwIEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKK0BAIC0xMTUsNyArMTE1LDkgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogIAkgIGFsbF90eXBlc1tpXSAhPSBHREtfVFlQRV9YMTFfREVWSUNFX01BTkFHRVJfQ09SRSAmJgogIAkgIGFsbF90eXBlc1tpXSAhPSBHREtfVFlQRV9YMTFfREVWSUNFX01BTkFHRVJfWEkyICYmCiAgCSAgYWxsX3R5cGVzW2ldICE9IEdES19UWVBFX1gxMV9ESVNQTEFZX01BTkFHRVIgJiYKICsjaWZkZWYgSEFWRV9PUEVOR0wKICAJICBhbGxfdHlwZXNbaV0gIT0gR0RLX1RZUEVfWDExX0dMX0NPTlRFWFQgJiYKLSAjZW5kaWYKICsjZW5kaWYKKyAjZW5kaWYKICAJICAvKiBOb3QgYWxsb3dlZCB0byBmaW5hbGl6ZSBhIEdka1BpeGJ1ZkxvYWRlciB3aXRob3V0IGNhbGxpbmcgZ2RrX3BpeGJ1Zl9sb2FkZXJfY2xvc2UoKSAqLwogIAkgIGFsbF90eXBlc1tpXSAhPSBHREtfVFlQRV9QSVhCVUZfTE9BREVSICYmCi0gCSAgYWxsX3R5cGVzW2ldICE9IEdES19UWVBFX0RSQVdJTkdfQ09OVEVYVCAmJgogLS0gCi0yLjEyLjAKKzIuMTQuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwNC1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtcHJvdG9jb2xzLXBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwNC1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtcHJvdG9jb2xzLXBhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjYTU1Y2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDQtY29uZmlndXJlLmFjLUZpeC13YXlsYW5kLXByb3RvY29scy1wYXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSAzNGY0ZDM5MjhlODIwNmE4OWIwYTYwMWJkZjc5ZDYxOTRiM2NjNzdlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IFRodSwgOSBKdW4gMjAxNiAxMToyMTozNiArMDMwMAotU3ViamVjdDogW1BBVENIIDQvNF0gY29uZmlndXJlLmFjOiBGaXggd2F5bGFuZC1wcm90b2NvbHMgcGF0aAotCi1UaGUgd2F5bGFuZC1wcm90b2NvbHMgZGlyZWN0b3J5IGlzIHVzZWQgZHVyaW5nIGJ1aWxkOiBGaXggdGhlIHBhdGgKLXRvIHBvaW50IHRvIHN5c3Jvb3Qgc3BlY2lmaWVkIGluIHJlY2lwZS4KLQotTm9ybWFsbHkgUEtHX0NPTkZJR19TWVNST09UX0RJUiBjb3VsZCBiZSB1c2VkIGluIGNvbmZpZ3VyZS5hYyBidXQgdGhhdAotYnJlYWtzIG11bHRpbGliIGd0aysgYXMgaXQgd291bGQgcG9pbnQgdG8gbXVsdGlsaWIgc3lzcm9vdCB3aGVuIHRoZQotKGFsbGFyY2gpIHdheWxhbmQtcHJvdG9jb2xzIGlzIGFjdHVhbGx5IGluIHRoZSBtYWNoaW5lIHN5c3Jvb3QuCi0KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAwMGJmNTQ0Li41NTE1OTE1IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC00NjUsNyArNDY1LDcgQEAgZmkKLSBpZiB0ZXN0ICIkZW5hYmxlX3dheWxhbmRfYmFja2VuZCIgPSAieWVzIjsgdGhlbgotICAgIyBGb3IgdGhlIGNhaXJvIGltYWdlIGJhY2tlbmQKLSAgIGNhaXJvX2JhY2tlbmRzPSIkY2Fpcm9fYmFja2VuZHMgY2Fpcm8iCi0tICBBQ19TVUJTVChXQVlMQU5EX1BST1RPQ09MU19EQVRBRElSLCBgJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYCkKLSsgIEFDX1NVQlNUKFdBWUxBTkRfUFJPVE9DT0xTX0RBVEFESVIsICR7V0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVJ9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9cGtnZGF0YWRpciB3YXlsYW5kLXByb3RvY29sc2ApCi0gICBHREtfQkFDS0VORFM9IiRHREtfQkFDS0VORFMgd2F5bGFuZCIKLSAgIEdES19XSU5ET1dJTkc9IiRHREtfV0lORE9XSU5HCi0gI2RlZmluZSBHREtfV0lORE9XSU5HX1dBWUxBTkQiCi0tLSAKLTIuMTIuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzNfMy4yMi4xNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjIyLjE3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmE1NDYzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjIyLjE3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotcmVxdWlyZSBndGsrMy5pbmMKLQotTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9nbm9tZS9zb3VyY2VzL2d0aysvJHtNQUpfVkVSfS9ndGsrLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUhhcmRjb2RlZC1saWJ0b29sLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItRG8tbm90LXRyeS10by1pbml0aWFsaXplLUdMLXdpdGhvdXQtbGliR0wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1BZGQtZGlzYWJsZS1vcGVuZ2wtY29uZmlndXJlLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWNvbmZpZ3VyZS5hYy1GaXgtd2F5bGFuZC1wcm90b2NvbHMtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjI5Zjg1NDMwY2Y3Y2ZhOGNhOGQwNzAzYmE2NWRiZTExIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImE2YzFmYjhmMjI5YzYyNmEzZDljMGUxY2U2ZWExMzhkZTdmNjRhNWE2YmM3OTlkNDVmYTI4NmZlNDYxYzM0MzciCi0KLVMgPSAiJHtXT1JLRElSfS9ndGsrLSR7UFZ9IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ndGsvZ3RrLmg7ZW5kbGluZT0yNTttZDU9MWQ4ZGMwZmNjZGJmYTI2Mjg3YTI3MWRjZTg4YWY3MzcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RrL2dkay5oO2VuZGxpbmU9MjU7bWQ1PWM5MjBjZTM5ZGM4OGM2ZjA2ZDNlN2M1MGUwODA4NmYyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL3Rlc3RndGsuYztlbmRsaW5lPTI1O21kNT1jYjczMmRhZWUxZDgyYWY3YTJiZjk1M2NmM2NmMjZmMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjIyLjI4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMjIuMjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY0ZTgyNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjIyLjI4LmJiCkBAIC0wLDAgKzEsMTggQEAKK3JlcXVpcmUgZ3RrKzMuaW5jCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLyR7TUFKX1ZFUn0vZ3RrKy0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1IYXJkY29kZWQtbGlidG9vbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4YzFmNWFiOTg3ZGRjN2RhYjNlNTk2NjBmODlkY2Q5YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMjk5NjEyYjAxOGNmZWQ3YjJjNjg5MTY4YWI1MmI2NjgwMjM3MDhlMTdjMzM1ZWI1OTIyNjBkMTg2ZjE1ZTFmIgorCitTID0gIiR7V09SS0RJUn0vZ3RrKy0ke1BWfSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3RrL2d0ay5oO2VuZGxpbmU9MjU7bWQ1PTFkOGRjMGZjY2RiZmEyNjI4N2EyNzFkY2U4OGFmNzM3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay9nZGsuaDtlbmRsaW5lPTI1O21kNT1jOTIwY2UzOWRjODhjNmYwNmQzZTdjNTBlMDgwODZmMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy90ZXN0Z3RrLmM7ZW5kbGluZT0yNTttZDU9Y2I3MzJkYWVlMWQ4MmFmN2EyYmY5NTNjZjNjZjI2ZjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrK18yLjI0LjMxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0aytfMi4yNC4zMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MzMWJhYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrK18yLjI0LjMxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotcmVxdWlyZSBndGsrLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ndGsvZ3RrLmg7ZW5kbGluZT0yNzttZDU9YzU5ZTBiNDQ5MGRkMTM1YTU3MjZlYmY4NTFmOWIxN2YgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RrL2dkay5oO2VuZGxpbmU9Mjc7bWQ1PTA3ZGIyODVlYzIwOGZiM2UwYmY3ZDg2MWIwNjE0MjAyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL3Rlc3RndGsuYztlbmRsaW5lPTI3O21kNT0yNjJkYjVkYjVmNzc2Zjk4NjNlNTZkZjMxNDIzZTI0YyIKLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL2dub21lL3NvdXJjZXMvZ3RrKy8yLjI0L2d0aystJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3hzZXR0aW5ncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9oYXJkY29kZWRfbGlidG9vbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly90b2dnbGUtZm9udC5kaWZmO3N0cmlwbGV2ZWw9MCBcCi0gICAgICAgICAgIGZpbGU6Ly9kb2MtZml4ZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc3RyaWN0LXByb3RvdHlwZXMucGF0Y2ggXAotCSAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTI2YTEwMDg1ODYwOTRhMmNiYjQ1OTJmZDNmOWVlMTAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjhjMTkyMjczMmM3ZWZjMDhkZjQ2NTZhNTM2NmRjYzNhZmRjODc5MTUxMzQwMGRhYzI3NjAwOWI0MDk1NDY1OCIKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXhrYiAtLWRpc2FibGUtZ2xpYnRlc3QgLS1kaXNhYmxlLWN1cHMgLS1kaXNhYmxlLXhpbmVyYW1hIgotCi1MSUJWID0gIjIuMTAuMCIKLQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXmd0ay1pbW1vZHVsZS0uKiBeZ3RrLXByaW50YmFja2VuZC0uKiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGd0a19saWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2d0ay0yLjAvJHtMSUJWfScpCi0gICAgaW1tb2R1bGVzX3Jvb3QgPSBvcy5wYXRoLmpvaW4oZ3RrX2xpYmRpciwgJ2ltbW9kdWxlcycpCi0gICAgcHJpbnRtb2R1bGVzX3Jvb3QgPSBvcy5wYXRoLmpvaW4oZ3RrX2xpYmRpciwgJ3ByaW50YmFja2VuZHMnKTsKLQotICAgIGQuc2V0VmFyKCdHVEtJTU1PRFVMRVNfUEFDS0FHRVMnLCAnICcuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBpbW1vZHVsZXNfcm9vdCwgJ15pbS0oLiopXC5zbyQnLCAnZ3RrLWltbW9kdWxlLSVzJywgJ0dUSyBpbnB1dCBtb2R1bGUgZm9yICVzJykpKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHByaW50bW9kdWxlc19yb290LCAnXmxpYnByaW50YmFja2VuZC0oLiopXC5zbyQnLCAnZ3RrLXByaW50YmFja2VuZC0lcycsICdHVEsgcHJpbnRiYWNrZW5kIG1vZHVsZSBmb3IgJXMnKQotCi0gICAgaWYgKGQuZ2V0VmFyKCdERUJJQU5fTkFNRVMnKSk6Ci0gICAgICAgIGQuc2V0VmFyKGQuZXhwYW5kKCdQS0dfJHtQTn0nKSwgJyR7TUxQUkVGSVh9bGliZ3RrLTIuMCcpCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrK18yLjI0LjMyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0aytfMi4yNC4zMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDcwMzU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0aytfMi4yNC4zMi5iYgpAQCAtMCwwICsxLDM0IEBACityZXF1aXJlIGd0aysuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2d0ay9ndGsuaDtlbmRsaW5lPTI3O21kNT1jNTllMGI0NDkwZGQxMzVhNTcyNmViZjg1MWY5YjE3ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGsvZ2RrLmg7ZW5kbGluZT0yNzttZDU9MDdkYjI4NWVjMjA4ZmIzZTBiZjdkODYxYjA2MTQyMDIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvdGVzdGd0ay5jO2VuZGxpbmU9Mjc7bWQ1PTI2MmRiNWRiNWY3NzZmOTg2M2U1NmRmMzE0MjNlMjRjIgorU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLzIuMjQvZ3RrKy0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8veHNldHRpbmdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2hhcmRjb2RlZF9saWJ0b29sLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3RvZ2dsZS1mb250LmRpZmY7c3RyaXBsZXZlbD0wIFwKKyAgICAgICAgICAgZmlsZTovL2RvYy1maXhlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zdHJpY3QtcHJvdG90eXBlcy5wYXRjaCBcCisJICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkNTc0MmFhNDIyNzUyMDNhNDk5YjU5YjRjMzgyYTc4NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiNmM4YTkzZGRkYTVlYWJlM2JmZWUxZWIzOTYzNmM5YTAzZDJhNTZjN2I2MjgyOGIzNTliZjE5Nzk0M2M1ODJlIgorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUteGtiIC0tZGlzYWJsZS1nbGlidGVzdCAtLWRpc2FibGUtY3VwcyAtLWRpc2FibGUteGluZXJhbWEiCisKK0xJQlYgPSAiMi4xMC4wIgorCitQQUNLQUdFU19EWU5BTUlDICs9ICJeZ3RrLWltbW9kdWxlLS4qIF5ndGstcHJpbnRiYWNrZW5kLS4qIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgZ3RrX2xpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vZ3RrLTIuMC8ke0xJQlZ9JykKKyAgICBpbW1vZHVsZXNfcm9vdCA9IG9zLnBhdGguam9pbihndGtfbGliZGlyLCAnaW1tb2R1bGVzJykKKyAgICBwcmludG1vZHVsZXNfcm9vdCA9IG9zLnBhdGguam9pbihndGtfbGliZGlyLCAncHJpbnRiYWNrZW5kcycpOworCisgICAgZC5zZXRWYXIoJ0dUS0lNTU9EVUxFU19QQUNLQUdFUycsICcgJy5qb2luKGRvX3NwbGl0X3BhY2thZ2VzKGQsIGltbW9kdWxlc19yb290LCAnXmltLSguKilcLnNvJCcsICdndGstaW1tb2R1bGUtJXMnLCAnR1RLIGlucHV0IG1vZHVsZSBmb3IgJXMnKSkpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcHJpbnRtb2R1bGVzX3Jvb3QsICdebGlicHJpbnRiYWNrZW5kLSguKilcLnNvJCcsICdndGstcHJpbnRiYWNrZW5kLSVzJywgJ0dUSyBwcmludGJhY2tlbmQgbW9kdWxlIGZvciAlcycpCisKKyAgICBpZiAoZC5nZXRWYXIoJ0RFQklBTl9OQU1FUycpKToKKyAgICAgICAgZC5zZXRWYXIoZC5leHBhbmQoJ1BLR18ke1BOfScpLCAnJHtNTFBSRUZJWH1saWJndGstMi4wJykKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGstaWNvbi11dGlscy1uYXRpdmVfMy4yMi4xNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGstaWNvbi11dGlscy1uYXRpdmVfMy4yMi4xNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDMyZDgyZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrLWljb24tdXRpbHMtbmF0aXZlXzMuMjIuMTcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi1TVU1NQVJZID0gIk5hdGl2ZSBpY29uIHV0aWxzIGZvciBHVEsrIgotREVTQ1JJUFRJT04gPSAiZ3RrLXVwZGF0ZS1pY29uLWNhY2hlIGFuZCBndGstZW5jb2RlLXN5bWJvbGljLXN2ZyBidWlsdCBmcm9tIEdUSysgbmF0aXZlbHksIGZvciBidWlsZCB0aW1lIGFuZCBvbi1ob3N0IHBvc3RpbnN0IHNjcmlwdCBleGVjdXRpb24uIgotU0VDVElPTiA9ICJsaWJzIgotCi1ERVBFTkRTID0gImdsaWItMi4wLW5hdGl2ZSBnZGstcGl4YnVmLW5hdGl2ZSBsaWJyc3ZnLW5hdGl2ZSIKLQotTElDRU5TRSA9ICJMR1BMdjIgJiBMR1BMdjIrICYgTEdQTHYyLjErIgotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL2dub21lL3NvdXJjZXMvZ3RrKy8ke01BSl9WRVJ9L2d0aystJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICBmaWxlOi8vUmVtb3ZlLUdkay1kZXBlbmRlbmN5LWZyb20tZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiMjlmODU0MzBjZjdjZmE4Y2E4ZDA3MDNiYTY1ZGJlMTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTZjMWZiOGYyMjljNjI2YTNkOWMwZTFjZTZlYTEzOGRlN2Y2NGE1YTZiYzc5OWQ0NWZhMjg2ZmU0NjFjMzQzNyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3RrL2d0ay5oO2VuZGxpbmU9MjU7bWQ1PTFkOGRjMGZjY2RiZmEyNjI4N2EyNzFkY2U4OGFmNzM3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay9nZGsuaDtlbmRsaW5lPTI1O21kNT1jOTIwY2UzOWRjODhjNmYwNmQzZTdjNTBlMDgwODZmMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy90ZXN0Z3RrLmM7ZW5kbGluZT0yNTttZDU9Y2I3MzJkYWVlMWQ4MmFmN2EyYmY5NTNjZjNjZjI2ZjEiCi0KLVMgPSAiJHtXT1JLRElSfS9ndGsrLSR7UFZ9IgotCi1pbmhlcml0IHBrZ2NvbmZpZyBuYXRpdmUKLQotIyB2ZXJzaW9ucyA+PSAzLjkwIGFyZSBkZXZlbG9wbWVudCB2ZXJzaW9ucywgb3RoZXJ3aXNlIGxpa2UgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbXlxkXC5dKD9QPHB2ZXI+M1wuKFsxLThdP1swMjQ2OF0pKyhcLlxkKykrKVwudGFyIgotCi1QS0dfQ09ORklHX0ZPUl9CVUlMRCA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vcGtnLWNvbmZpZy1uYXRpdmUiCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLQkjIFF1aXRlIHVnbHkgYnV0IGRlZmluZXMgZW5vdWdoIHRvIGNvbXBpbGUgdGhlIHRvb2xzLgotCWlmICEgdGVzdCAtZiBndGsvY29uZmlnLmg7IHRoZW4KLQkJZWNobyAiI2RlZmluZSBHRVRURVhUX1BBQ0tBR0UgXCJndGszMFwiIiA+PiBndGsvY29uZmlnLmgKLQkJZWNobyAiI2RlZmluZSBIQVZFX1VOSVNURF9IIDEiID4+IGd0ay9jb25maWcuaAotCQllY2hvICIjZGVmaW5lIEhBVkVfRlRXX0ggMSIgPj4gZ3RrL2NvbmZpZy5oCi0JZmkKLQlpZiAhIHRlc3QgLWYgZ2RrL2NvbmZpZy5oOyB0aGVuCi0JCXRvdWNoIGdkay9jb25maWcuaAotCWZpCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0JJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAotCQkke1N9L2d0ay91cGRhdGVpY29uY2FjaGUuYyBcCi0JCSQoJHtQS0dfQ09ORklHX0ZPUl9CVUlMRH0gLS1jZmxhZ3MgLS1saWJzIGdkay1waXhidWYtMi4wKSBcCi0JCS1vIGd0ay11cGRhdGUtaWNvbi1jYWNoZQotCi0JJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAotCQkke1N9L2d0ay9lbmNvZGVzeW1ib2xpYy5jIFwKLQkJJCgke1BLR19DT05GSUdfRk9SX0JVSUxEfSAtLWNmbGFncyAtLWxpYnMgZ2lvLTIuMCBnZGstcGl4YnVmLTIuMCkgXAotCQktbyBndGstZW5jb2RlLXN5bWJvbGljLXN2ZwotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWluc3RhbGwgLW0gMDc1NSAke0J9L2d0ay11cGRhdGUtaWNvbi1jYWNoZSAke0R9JHtiaW5kaXJ9Ci0JaW5zdGFsbCAtbSAwNzU1ICR7Qn0vZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcgJHtEfSR7YmluZGlyfQotCi0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ3RrLXVwZGF0ZS1pY29uLWNhY2hlIFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvMi4xMC4wL2xvYWRlcnMuY2FjaGUKLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9ndGstZW5jb2RlLXN5bWJvbGljLXN2ZyBcCi0JCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLzIuMTAuMC9sb2FkZXJzLmNhY2hlCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrLWljb24tdXRpbHMtbmF0aXZlXzMuMjIuMjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrLWljb24tdXRpbHMtbmF0aXZlXzMuMjIuMjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQyYzA0NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGstaWNvbi11dGlscy1uYXRpdmVfMy4yMi4yOC5iYgpAQCAtMCwwICsxLDYzIEBACitTVU1NQVJZID0gIk5hdGl2ZSBpY29uIHV0aWxzIGZvciBHVEsrIgorREVTQ1JJUFRJT04gPSAiZ3RrLXVwZGF0ZS1pY29uLWNhY2hlIGFuZCBndGstZW5jb2RlLXN5bWJvbGljLXN2ZyBidWlsdCBmcm9tIEdUSysgbmF0aXZlbHksIGZvciBidWlsZCB0aW1lIGFuZCBvbi1ob3N0IHBvc3RpbnN0IHNjcmlwdCBleGVjdXRpb24uIgorU0VDVElPTiA9ICJsaWJzIgorCitERVBFTkRTID0gImdsaWItMi4wLW5hdGl2ZSBnZGstcGl4YnVmLW5hdGl2ZSBsaWJyc3ZnLW5hdGl2ZSIKKworTElDRU5TRSA9ICJMR1BMdjIgJiBMR1BMdjIrICYgTEdQTHYyLjErIgorCitNQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL2dub21lL3NvdXJjZXMvZ3RrKy8ke01BSl9WRVJ9L2d0aystJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICBmaWxlOi8vUmVtb3ZlLUdkay1kZXBlbmRlbmN5LWZyb20tZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcucGF0Y2giCitTUkNfVVJJW21kNXN1bV0gPSAiOGMxZjVhYjk4N2RkYzdkYWIzZTU5NjYwZjg5ZGNkOWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDI5OTYxMmIwMThjZmVkN2IyYzY4OTE2OGFiNTJiNjY4MDIzNzA4ZTE3YzMzNWViNTkyMjYwZDE4NmYxNWUxZiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3RrL2d0ay5oO2VuZGxpbmU9MjU7bWQ1PTFkOGRjMGZjY2RiZmEyNjI4N2EyNzFkY2U4OGFmNzM3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay9nZGsuaDtlbmRsaW5lPTI1O21kNT1jOTIwY2UzOWRjODhjNmYwNmQzZTdjNTBlMDgwODZmMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy90ZXN0Z3RrLmM7ZW5kbGluZT0yNTttZDU9Y2I3MzJkYWVlMWQ4MmFmN2EyYmY5NTNjZjNjZjI2ZjEiCisKK1MgPSAiJHtXT1JLRElSfS9ndGsrLSR7UFZ9IgorCitpbmhlcml0IHBrZ2NvbmZpZyBuYXRpdmUKKworIyB2ZXJzaW9ucyA+PSAzLjkwIGFyZSBkZXZlbG9wbWVudCB2ZXJzaW9ucywgb3RoZXJ3aXNlIGxpa2UgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbXlxkXC5dKD9QPHB2ZXI+M1wuKFsxLThdP1swMjQ2OF0pKyhcLlxkKykrKVwudGFyIgorCitQS0dfQ09ORklHX0ZPUl9CVUlMRCA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vcGtnLWNvbmZpZy1uYXRpdmUiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKwkjIFF1aXRlIHVnbHkgYnV0IGRlZmluZXMgZW5vdWdoIHRvIGNvbXBpbGUgdGhlIHRvb2xzLgorCWlmICEgdGVzdCAtZiBndGsvY29uZmlnLmg7IHRoZW4KKwkJZWNobyAiI2RlZmluZSBHRVRURVhUX1BBQ0tBR0UgXCJndGszMFwiIiA+PiBndGsvY29uZmlnLmgKKwkJZWNobyAiI2RlZmluZSBIQVZFX1VOSVNURF9IIDEiID4+IGd0ay9jb25maWcuaAorCQllY2hvICIjZGVmaW5lIEhBVkVfRlRXX0ggMSIgPj4gZ3RrL2NvbmZpZy5oCisJZmkKKwlpZiAhIHRlc3QgLWYgZ2RrL2NvbmZpZy5oOyB0aGVuCisJCXRvdWNoIGdkay9jb25maWcuaAorCWZpCit9CisKK2RvX2NvbXBpbGUoKSB7CisJJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAorCQkke1N9L2d0ay91cGRhdGVpY29uY2FjaGUuYyBcCisJCSQoJHtQS0dfQ09ORklHX0ZPUl9CVUlMRH0gLS1jZmxhZ3MgLS1saWJzIGdkay1waXhidWYtMi4wKSBcCisJCS1vIGd0ay11cGRhdGUtaWNvbi1jYWNoZQorCisJJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAorCQkke1N9L2d0ay9lbmNvZGVzeW1ib2xpYy5jIFwKKwkJJCgke1BLR19DT05GSUdfRk9SX0JVSUxEfSAtLWNmbGFncyAtLWxpYnMgZ2lvLTIuMCBnZGstcGl4YnVmLTIuMCkgXAorCQktbyBndGstZW5jb2RlLXN5bWJvbGljLXN2ZworfQorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWluc3RhbGwgLW0gMDc1NSAke0J9L2d0ay11cGRhdGUtaWNvbi1jYWNoZSAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcgJHtEfSR7YmluZGlyfQorCisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ3RrLXVwZGF0ZS1pY29uLWNhY2hlIFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvMi4xMC4wL2xvYWRlcnMuY2FjaGUKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9ndGstZW5jb2RlLXN5bWJvbGljLXN2ZyBcCisJCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLzIuMTAuMC9sb2FkZXJzLmNhY2hlCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvMDAwMS1Eby1ub3QtZXJyb3Itb3V0LWlmLXBlcmwtaXMtbm90LWZvdW5kLW9yLWl0cy12ZXJzaW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzLzAwMDEtRG8tbm90LWVycm9yLW91dC1pZi1wZXJsLWlzLW5vdC1mb3VuZC1vci1pdHMtdmVyc2lvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE5MDI4Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvMDAwMS1Eby1ub3QtZXJyb3Itb3V0LWlmLXBlcmwtaXMtbm90LWZvdW5kLW9yLWl0cy12ZXJzaW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSBlNzMzMjQxZmI1ODBmMDMyZWZiYmU2ODRlYzM1ZDRjOWQyN2YxNTk1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDggU2VwIDIwMTYgMTM6Mzg6MzkgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGVycm9yIG91dCBpZiBwZXJsIGlzIG5vdCBmb3VuZCBvciBpdHMgdmVyc2lvbiBpcyB0b28KLSBvbGQuCi0KLVRoaXMgYWxsb3dzIHVzZSB0byBhdm9pZCBkZXBlbmRpbmcgb24gcGVybC1uYXRpdmUgaWYgd2UncmUgbm90IGdvaW5nCi10byB1c2UgaXQgKHdoZW4gYXBpLWRvY3MgYXJlIGRpc2FibGVkKS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyYTYxZDZlLi4yOTQxNWJkIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zNiw3ICszNiw3IEBAIGRubCBDaGVjayBmb3IgUGVybC4KLSBkbmwKLSBBQ19QQVRIX1BST0coW1BFUkxdLCBbcGVybF0pCi0gaWYgdGVzdCAteiAiJFBFUkwiOyB0aGVuCi0tCUFDX01TR19FUlJPUihbcGVybCBub3QgZm91bmRdKQotKwlBQ19NU0dfV0FSTihbcGVybCBub3QgZm91bmRdKQotIGZpCi0gCi0gQUNfTVNHX0NIRUNLSU5HKFtpZiBQZXJsIHZlcnNpb24gPj0gNS4xOC4wXSkKLUBAIC00NCw3ICs0NCw3IEBAIGlmICIkUEVSTCIgLWUgInJlcXVpcmUgdjUuMTguMCI7IHRoZW4KLSAJQUNfTVNHX1JFU1VMVChbeWVzXSkKLSBlbHNlCi0gCUFDX01TR19SRVNVTFQoW25vXSkKLS0JQUNfTVNHX0VSUk9SKFtwZXJsID49IDUuMTguMCBpcyByZXF1aXJlZCBmb3IgZ3RrLWRvY10pCi0rCUFDX01TR19XQVJOKFtwZXJsID49IDUuMTguMCBpcyByZXF1aXJlZCBmb3IgZ3RrLWRvY10pCi0gZmkKLSAKLSBkbmwKLS0tIAotMi45LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzLzAwMDEtRG8tbm90LWhhcmRvY29kZS1wYXRocy10by1wZXJsLXB5dGhvbi1pbi1zY3JpcHRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzLzAwMDEtRG8tbm90LWhhcmRvY29kZS1wYXRocy10by1wZXJsLXB5dGhvbi1pbi1zY3JpcHRzLnBhdGNoCmluZGV4IDQ3N2ZjOWEuLjJmZTNhYjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy8wMDAxLURvLW5vdC1oYXJkb2NvZGUtcGF0aHMtdG8tcGVybC1weXRob24taW4tc2NyaXB0cy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvMDAwMS1Eby1ub3QtaGFyZG9jb2RlLXBhdGhzLXRvLXBlcmwtcHl0aG9uLWluLXNjcmlwdHMucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDZmYWI4MmI5M2M3YmQzMDFlYjQyNDQ4NTE1YjAyZjdjYjMzMDY4OTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDkyODEwMjg3NGJjMjMzOWExZDU3YzZiMTc4ODc3ZTBjNjAwMmNiM2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMzEgQXVnIDIwMTYgMTY6NDQ6NDYgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGhhcmRvY29kZSBwYXRocyB0byBwZXJsL3B5dGhvbiBpbiBzY3JpcHRzLgorU3ViamVjdDogW1BBVENIIDEvM10gRG8gbm90IGhhcmRvY29kZSBwYXRocyB0byBwZXJsL3B5dGhvbiBpbiBzY3JpcHRzLgogCiBEb2luZyBzbyB3aGVuIHRoZSBpbnRlcnByZXRlcnMgYXJlIHNvbWV3aGVyZSBkZWVwIGluIGEgc3lzcm9vdCBkaXJlY3RvcnkKIGNhbiByZWFjaCB0aGUgc2hlYmFuZyBsaW5lIGxpbWl0LCBhbmQgcmVzdWx0aW5nIHNjcmlwdHMgd291bGRuJ3Qgd29yawpAQCAtOSwxMzEgKzksMTM0IEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KLSBndGtkb2MtY2hlY2suaW4gICAgIHwgMiArLQotIGd0a2RvYy1jb21tb24ucGwuaW4gfCAyICstCi0gZ3RrZG9jLWRlcHNjYW4uaW4gICB8IDIgKy0KLSBndGtkb2MtZml4eHJlZi5pbiAgIHwgMiArLQotIGd0a2RvYy1ta2RiLmluICAgICAgfCAyICstCi0gZ3RrZG9jLW1rdG1wbC5pbiAgICB8IDIgKy0KLSBndGtkb2MtcmViYXNlLmluICAgIHwgMiArLQotIGd0a2RvYy1zY2FuLmluICAgICAgfCAyICstCi0gZ3RrZG9jLXNjYW5nb2JqLmluICB8IDIgKy0KLSB0ZXN0cy90b29scy5zaC5pbiAgIHwgNCArKy0tCi0gMTAgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCisgZ3RrZG9jLWNoZWNrLmluICAgIHwgMiArLQorIGd0a2RvYy1kZXBzY2FuLmluICB8IDIgKy0KKyBndGtkb2MtZml4eHJlZi5pbiAgfCAyICstCisgZ3RrZG9jLW1rZGIuaW4gICAgIHwgMiArLQorIGd0a2RvYy1ta2h0bWwuaW4gICB8IDIgKy0KKyBndGtkb2MtbWttYW4uaW4gICAgfCAyICstCisgZ3RrZG9jLW1rcGRmLmluICAgIHwgMiArLQorIGd0a2RvYy1yZWJhc2UuaW4gICB8IDIgKy0KKyBndGtkb2Mtc2Nhbi5pbiAgICAgfCAyICstCisgZ3RrZG9jLXNjYW5nb2JqLmluIHwgMiArLQorIHRlc3RzL3Rvb2xzLnNoLmluICB8IDIgKy0KKyAxMSBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2d0a2RvYy1jaGVjay5pbiBiL2d0a2RvYy1jaGVjay5pbgotaW5kZXggNTYwZDY5Yi4uYjYwODU3ZiAxMDA3NTUKK2luZGV4IDhjOGU5MTcuLmY2YTI1ZjYgMTAwNzU1CiAtLS0gYS9ndGtkb2MtY2hlY2suaW4KICsrKyBiL2d0a2RvYy1jaGVjay5pbgogQEAgLTEsNCArMSw0IEBACi0tIyFAUEVSTEAgLXcKLSsjIS91c3IvYmluL2VudiBwZXJsCi0gIyAtKi0gY3BlcmwgLSotCi0gIwotICMgZ3RrLWRvYyAtIEdUSyBEb2NCb29rIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yLgotZGlmZiAtLWdpdCBhL2d0a2RvYy1jb21tb24ucGwuaW4gYi9ndGtkb2MtY29tbW9uLnBsLmluCi1pbmRleCA0NzQ3Mzk2Li5jZmFkYjc4IDEwMDY0NAotLS0tIGEvZ3RrZG9jLWNvbW1vbi5wbC5pbgotKysrIGIvZ3RrZG9jLWNvbW1vbi5wbC5pbgotQEAgLTEsNCArMSw0IEBACi0tIyFAUEVSTEAgLXcKLSsjIS91c3IvYmluL2VudiBwZXJsCi0gIyAtKi0gY3BlcmwgLSotCistIyFAUFlUSE9OQAorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIC0qLSBweXRob247IGNvZGluZzogdXRmLTggLSotCiAgIwogICMgZ3RrLWRvYyAtIEdUSyBEb2NCb29rIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yLgogZGlmZiAtLWdpdCBhL2d0a2RvYy1kZXBzY2FuLmluIGIvZ3RrZG9jLWRlcHNjYW4uaW4KLWluZGV4IDgzYWYwMWIuLjkxN2UyNDcgMTAwNjQ0CitpbmRleCA5YmZhZjMwLi5hYWRjOTUyIDEwMDY0NAogLS0tIGEvZ3RrZG9jLWRlcHNjYW4uaW4KICsrKyBiL2d0a2RvYy1kZXBzY2FuLmluCiBAQCAtMSw0ICsxLDQgQEAKIC0jIUBQWVRIT05ACi0rIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwogIAotIGltcG9ydCBnemlwLCBvcy5wYXRoLCByZQorIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KICAKIGRpZmYgLS1naXQgYS9ndGtkb2MtZml4eHJlZi5pbiBiL2d0a2RvYy1maXh4cmVmLmluCi1pbmRleCAzZDllOGQwLi5kNTUxOTBiIDEwMDc1NQoraW5kZXggMGVhMDJkNC4uYmRkNDQzYSAxMDA3NTUKIC0tLSBhL2d0a2RvYy1maXh4cmVmLmluCiArKysgYi9ndGtkb2MtZml4eHJlZi5pbgogQEAgLTEsNCArMSw0IEBACi0tIyFAUEVSTEAgLXcKLSsjIS91c3IvYmluL2VudiBwZXJsCi0gIyAtKi0gY3BlcmwgLSotCistIyFAUFlUSE9OQAorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIC0qLSBweXRob24gLSotCiAgIwogICMgZ3RrLWRvYyAtIEdUSyBEb2NCb29rIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yLgogZGlmZiAtLWdpdCBhL2d0a2RvYy1ta2RiLmluIGIvZ3RrZG9jLW1rZGIuaW4KLWluZGV4IDhkZDZkNWUuLmQ4MDg3NTAgMTAwNzU1CitpbmRleCA0MmQ1NzMxLi4zYTU2ZDU2IDEwMDc1NQogLS0tIGEvZ3RrZG9jLW1rZGIuaW4KICsrKyBiL2d0a2RvYy1ta2RiLmluCiBAQCAtMSw0ICsxLDQgQEAKLS0jIUBQRVJMQCAtdwotKyMhL3Vzci9iaW4vZW52IHBlcmwKLSAjIC0qLSBjcGVybCAtKi0KKy0jIUBQWVRIT05ACisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgLSotIHB5dGhvbjsgY29kaW5nOiB1dGYtOCAtKi0KICAjCiAgIyBndGstZG9jIC0gR1RLIERvY0Jvb2sgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IuCi1kaWZmIC0tZ2l0IGEvZ3RrZG9jLW1rdG1wbC5pbiBiL2d0a2RvYy1ta3RtcGwuaW4KLWluZGV4IGM2NGRmZDMuLjJmNDZjMTggMTAwNzU1Ci0tLS0gYS9ndGtkb2MtbWt0bXBsLmluCi0rKysgYi9ndGtkb2MtbWt0bXBsLmluCitkaWZmIC0tZ2l0IGEvZ3RrZG9jLW1raHRtbC5pbiBiL2d0a2RvYy1ta2h0bWwuaW4KK2luZGV4IDBkMGExNWQuLjkxNGZmNTUgMTAwNjQ0CistLS0gYS9ndGtkb2MtbWtodG1sLmluCisrKysgYi9ndGtkb2MtbWtodG1sLmluCiBAQCAtMSw0ICsxLDQgQEAKLS0jIUBQRVJMQCAtdwotKyMhL3Vzci9iaW4vZW52IHBlcmwKLSAjIC0qLSBjcGVybCAtKi0KKy0jIUBQWVRIT05ACisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgLSotIHB5dGhvbjsgY29kaW5nOiB1dGYtOCAtKi0KKyAjCisgIyBndGstZG9jIC0gR1RLIERvY0Jvb2sgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IuCitkaWZmIC0tZ2l0IGEvZ3RrZG9jLW1rbWFuLmluIGIvZ3RrZG9jLW1rbWFuLmluCitpbmRleCBjNTQ0NWNkLi42NWRiNzFhIDEwMDY0NAorLS0tIGEvZ3RrZG9jLW1rbWFuLmluCisrKysgYi9ndGtkb2MtbWttYW4uaW4KK0BAIC0xLDQgKzEsNCBAQAorLSMhQFBZVEhPTkAKKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyAtKi0gcHl0aG9uOyBjb2Rpbmc6IHV0Zi04IC0qLQorICMKKyAjIGd0ay1kb2MgLSBHVEsgRG9jQm9vayBkb2N1bWVudGF0aW9uIGdlbmVyYXRvci4KK2RpZmYgLS1naXQgYS9ndGtkb2MtbWtwZGYuaW4gYi9ndGtkb2MtbWtwZGYuaW4KK2luZGV4IGU4YzBjMDMuLmY4MDcyMzYgMTAwNzU1CistLS0gYS9ndGtkb2MtbWtwZGYuaW4KKysrKyBiL2d0a2RvYy1ta3BkZi5pbgorQEAgLTEsNCArMSw0IEBACistIyFAUFlUSE9OQAorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIC0qLSBweXRob247IGNvZGluZzogdXRmLTggLSotCiAgIwogICMgZ3RrLWRvYyAtIEdUSyBEb2NCb29rIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yLgogZGlmZiAtLWdpdCBhL2d0a2RvYy1yZWJhc2UuaW4gYi9ndGtkb2MtcmViYXNlLmluCi1pbmRleCAzNzU0ODJkLi5jZjA1YjQ1IDEwMDY0NAoraW5kZXggMTdhNzFjMi4uZWMzZmQyOCAxMDA3NTUKIC0tLSBhL2d0a2RvYy1yZWJhc2UuaW4KICsrKyBiL2d0a2RvYy1yZWJhc2UuaW4KIEBAIC0xLDQgKzEsNCBAQAotLSMhQFBFUkxAIC13Ci0rIyEvdXNyL2Jpbi9lbnYgcGVybAotICMgLSotIGNwZXJsIC0qLQorLSMhQFBZVEhPTkAKKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyAtKi0gcHl0aG9uIC0qLQogICMKICAjIGd0ay1kb2MgLSBHVEsgRG9jQm9vayBkb2N1bWVudGF0aW9uIGdlbmVyYXRvci4KIGRpZmYgLS1naXQgYS9ndGtkb2Mtc2Nhbi5pbiBiL2d0a2RvYy1zY2FuLmluCi1pbmRleCAwNDhlNWM5Li43OGM2MTM2IDEwMDc1NQoraW5kZXggOTU0YzgxMS4uZjQ2MTUwNCAxMDA3NTUKIC0tLSBhL2d0a2RvYy1zY2FuLmluCiArKysgYi9ndGtkb2Mtc2Nhbi5pbgogQEAgLTEsNCArMSw0IEBACi0tIyFAUEVSTEAgLXcKLSsjIS91c3IvYmluL2VudiBwZXJsCi0gIyAtKi0gY3BlcmwgLSotCistIyFAUFlUSE9OQAorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIC0qLSBweXRob24gLSotCiAgIwogICMgZ3RrLWRvYyAtIEdUSyBEb2NCb29rIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yLgogZGlmZiAtLWdpdCBhL2d0a2RvYy1zY2FuZ29iai5pbiBiL2d0a2RvYy1zY2FuZ29iai5pbgotaW5kZXggZmI2NmI3Ni4uNjdlZThmNyAxMDA2NDQKK2luZGV4IDRjYmUxMzAuLjUyYzJjMjQgMTAwNjQ0CiAtLS0gYS9ndGtkb2Mtc2NhbmdvYmouaW4KICsrKyBiL2d0a2RvYy1zY2FuZ29iai5pbgogQEAgLTEsNCArMSw0IEBACi0tIyFAUEVSTEAgLXcKLSsjIS91c3IvYmluL2VudiBwZXJsCi0gIyAtKi0gY3BlcmwgLSotCistIyFAUFlUSE9OQAorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIC0qLSBweXRob24gLSotCiAgIwogICMgZ3RrLWRvYyAtIEdUSyBEb2NCb29rIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yLgogZGlmZiAtLWdpdCBhL3Rlc3RzL3Rvb2xzLnNoLmluIGIvdGVzdHMvdG9vbHMuc2guaW4KLWluZGV4IGExMTRhNDIuLjcwNzM4ODMgMTAwNjQ0CitpbmRleCA0ZDMwMWQwLi41NjVmYzFlIDEwMDY0NAogLS0tIGEvdGVzdHMvdG9vbHMuc2guaW4KICsrKyBiL3Rlc3RzL3Rvb2xzLnNoLmluCi1AQCAtMTEsNyArMTEsNyBAQCBlY2hvICJSdW5uaW5nIHN1aXRlKHMpOiBndGstZG9jLSRzdWl0ZSI7Ci0gCi0gIyB0ZXN0IHBlcmwgc2NyaXB0cwotIGZvciBmaWxlIGluIGd0a2RvYy1jaGVjayBndGtkb2MtZml4eHJlZiBndGtkb2MtbWtkYiBndGtkb2MtbWt0bXBsIGd0a2RvYy1yZWJhc2UgZ3RrZG9jLXNjYW4gZ3RrZG9jLXNjYW5nb2JqIDsgZG8KLS0gIEBQRVJMQCAtY3dUIGB3aGljaCAkZmlsZWAKLSsgIHBlcmwgLWN3VCBgd2hpY2ggJGZpbGVgCi0gICBpZiB0ZXN0ICQ/ID0gMSA7IHRoZW4gZmFpbGVkPWBleHByICRmYWlsZWQgKyAxYDsgZmkKLSAgIHRlc3RlZD1gZXhwciAkdGVzdGVkICsgMWAKK0BAIC0zMSw3ICszMSw3IEBAIGRvbmUKKyAjIFRPRE86IHRlc3QgcHl0aG9uIDIgYW5kIDMgKHB5dGhvbjMgLW1jb21waWxlYWxsIGd0a2RvYy8qLnB5KQorIGZvciBmaWxlIGluIGd0a2RvYy1jaGVjayBndGtkb2MtZGVwc2NhbiBndGtkb2MtZml4eHJlZiBndGtkb2MtbWtkYiBndGtkb2MtbWtodG1sIGd0a2RvYy1ta21hbiBndGtkb2MtbWtwZGYgZ3RrZG9jLXJlYmFzZSBndGtkb2Mtc2NhbmdvYmo7IGRvCisgICAgIGZ1bGxmaWxlPWB3aGljaCAkZmlsZWAKKy0gICAgQFBZVEhPTkAgLW0gcHlfY29tcGlsZSAkZnVsbGZpbGUKKysgICAgcHl0aG9uMyAtbSBweV9jb21waWxlICRmdWxsZmlsZQorICAgICBpZiB0ZXN0ICQ/ICE9IDAgOyB0aGVuIGZhaWxlZD1gZXhwciAkZmFpbGVkICsgMWA7IGZpCisgICAgIHRlc3RlZD1gZXhwciAkdGVzdGVkICsgMWAKICBkb25lCi1AQCAtMzQsNyArMzQsNyBAQCBkb25lCi0gCi0gCi0gIyB0ZXN0IHB5dGhvbiBzY3JpcHRzCi0tQFBZVEhPTkAgLW0gcHlfY29tcGlsZSBgd2hpY2ggZ3RrZG9jLWRlcHNjYW5gCi0rcHl0aG9uIC1tIHB5X2NvbXBpbGUgYHdoaWNoIGd0a2RvYy1kZXBzY2FuYAotIGlmIHRlc3QgJD8gIT0gMCA7IHRoZW4gZmFpbGVkPWBleHByICRmYWlsZWQgKyAxYDsgZmkKLSB0ZXN0ZWQ9YGV4cHIgJHRlc3RlZCArIDFgCi0gCiAtLSAKLTIuOS4zCisyLjE0LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzL2NvbmRpdGlvbmFsdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvY29uZGl0aW9uYWx0ZXN0cy5wYXRjaAppbmRleCAwYzE4MGYyLi4yMWMyZGI3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvY29uZGl0aW9uYWx0ZXN0cy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvY29uZGl0aW9uYWx0ZXN0cy5wYXRjaApAQCAtMSwxNCArMSwyMyBAQAorRnJvbSA3OGJiZjE4NTkzNDE0N2E2OWNlYjRiNjE3ZDQyNGUxMmU3MDk5N2JmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CitEYXRlOiBUdWUsIDI3IEp1biAyMDE3IDIxOjAwOjU4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBndGstZG9jOiBIYW5kbGUgZmxvYXRpbmcgZ3RrLWRvYyBkZXBlbmRlbmN5CisKIEFsbG93IHRoZSB0ZXN0cyB0byBiZSBleHBsaWNpdGx5IGRpc2FibGVkIHRvIGF2b2lkIGZsb2F0aW5nIGRlcGVuZG5lY3kKIGlzc3Vlcy4gVGhpcyBpcyBub3QgcmVhbGx5IGFuIGlzc3VlIHdpdGggUlNTIGJ1dCBpcyBvbiBwcmV2aW91cyByZWxlYXNlcy4KIAogUlAgMjAxNy82LzI3CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAotSW5kZXg6IGd0ay1kb2MtMS4yNS9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBndGstZG9jLTEuMjUub3JpZy9jb25maWd1cmUuYWMKLSsrKyBndGstZG9jLTEuMjUvY29uZmlndXJlLmFjCi1AQCAtMTYxLDYgKzE2MSwxMSBAQCBpZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyI7IHRoZW4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDEwICsrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA2ODRlMmQxLi5lNWUzYWFiIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xNDYsNiArMTQ2LDExIEBAIGlmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIjsgdGhlbgogIAlmaQogIGZpCiAgCkBAIC0yMCw3ICsyOSw3IEBACiAgZG5sIGlmIGdsaWIgaXMgYXZhaWxhYmxlIHdlIGNhbiBlbmFibGUgdGhlIHRlc3RzCiAgUEtHX0NIRUNLX01PRFVMRVMoVEVTVF9ERVBTLCBbZ2xpYi0yLjAgPj0gMi42LjAgZ29iamVjdC0yLjAgPj0gMi42LjBdLAogIAlbCWdsaWJfcHJlZml4PSJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1wcmVmaXggZ2xpYi0yLjBgIgotQEAgLTE3MSw2ICsxNzYsMTEgQEAgUEtHX0NIRUNLX01PRFVMRVMoVEVTVF9ERVBTLCBbZ2xpYi0yLjAgPgorQEAgLTE1Niw2ICsxNjEsMTEgQEAgUEtHX0NIRUNLX01PRFVMRVMoVEVTVF9ERVBTLCBbZ2xpYi0yLjAgPj0gMi42LjAgZ29iamVjdC0yLjAgPj0gMi42LjBdLAogIAkJYnVpbGRfdGVzdHM9Im5vIgogIAldCiAgKQpAQCAtMzAsNSArMzksOCBAQAogK2ZpCiArCiAgQU1fQ09ORElUSU9OQUwoR1RLX0RPQ19VU0VfTElCVE9PTCwgdGVzdCAtbiAiJExJQlRPT0wiIC1hIHgkZ3RrX2RvY191c2VfbGlidG9vbCA9IHh5ZXMgKQotIGRubCB0aGlzIGVuYWJsZSB0aGUgcnVsZSBpbiB0ZXN0L01ha2VmaWxlLmFtCisgZG5sIHRoaXMgZW5hYmxlcyB0aGUgcnVsZSBpbiB0ZXN0L01ha2VmaWxlLmFtCiAgQU1fQ09ORElUSU9OQUwoQlVJTERfVEVTVFMsIHRlc3QgeCRidWlsZF90ZXN0cyA9IHh5ZXMpCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvbm8tY2xvYmJlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy9uby1jbG9iYmVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmYTIyYjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvbm8tY2xvYmJlci5wYXRjaApAQCAtMCwwICsxLDI3IEBACitJbiBvdXQtb2YtdHJlZSBidWlsZHMgZ3RrLWRvYydzIHNldHVwLWJ1aWxkIHRhcmdldCBjb3BpZXMgYWxsIHRoZSBjb250ZW50IGZyb20gJHNyY2RpciB0byAkYnVpbGRkaXIuCisKK0hvd2V2ZXIsIGlmIHNvbWUgb2YgdGhpcyBjb250ZW50IGlzIHJlZ2VuZXJhdGVkIGF0IGNvbmZpZ3VyZSB0aW1lIHRoaXMgY2FuIGhhcHBlbjoKKworMSkgY29uZmlndXJlIHdyaXRlcyBuZXcgYnVpbGQvdmVyc2lvbi54bWwKKzIpIG1ha2UgY29tcGlsZSBjb3BpZXMgY29udGVudCwgaW5jbHVkaW5nIHRoZSB0YXJiYWxsJ3Mgc3JjL3ZlcnNpb24ueG1sCisgICB0byBidWlsZC92ZXJzaW9uLnhtbCwgYW5kIGdlbmVyYXRlcyBndGstZG9jLgorMykgbWFrZSBpbnN0YWxsIG5vdGljZXMgYnVpbGQvdmVyc2lvbi54bWwgaXMgb2xkZXIgdGhhbiBjb25maWd1cmUuc3RhdHVzLAorICAgc28gcmVnZW5lcmF0ZXMgZ3RrLWRvYy4KKworZ3RrLWRvYyBnZW5lcmF0aW9uIGlzIGEgc2xvdyBwcm9jZXNzIGF0IHRoZSBiZXN0IG9mIHRpbWVzLCBzbyBkb2luZyBpdCB0d2ljZSBpc24ndCBnb29kLgorCitTb2x2ZSB0aGlzIGJ5IGNoYW5naW5nIGNwIC0tZm9yY2UgdG8gY3AgLS1uby1jbG9iYmVyLCBzbyBzZXR1cC1idWlsZCBvbmx5IGNvcGllcworZmlsZXMgd2hpY2ggZG9uJ3QgYWxyZWFkeSBleGlzdC4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03OTQ1NzFdCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvZ3RrLWRvYy5tYWtlIGIvZ3RrLWRvYy5tYWtlCitpbmRleCBmODdlYWFiLi4yNDZmM2MwIDEwMDY0NAorLS0tIGEvZ3RrLWRvYy5tYWtlCisrKysgYi9ndGstZG9jLm1ha2UKK0BAIC0xMTMsMyArMTEzLDMgQEAgc2V0dXAtYnVpbGQuc3RhbXA6CisgCSAgICAgIHRlc3QgLWYgJChhYnNfc3JjZGlyKS8kJGZpbGUgJiYgXAorLQkgICAgICAgIGNwIC1wZiAkKGFic19zcmNkaXIpLyQkZmlsZSAkKGFic19idWlsZGRpcikvJCRmaWxlIHx8IHRydWU7IFwKKysJICAgICAgICBjcCAtcG4gJChhYnNfc3JjZGlyKS8kJGZpbGUgJChhYnNfYnVpbGRkaXIpLyQkZmlsZSB8fCB0cnVlOyBcCisgCSAgICBkb25lOyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvcGtnLWNvbmZpZy1uYXRpdmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvcGtnLWNvbmZpZy1uYXRpdmUucGF0Y2gKaW5kZXggYzc2ODg3MC4uYmZiYzc3NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzL3BrZy1jb25maWctbmF0aXZlLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy9wa2ctY29uZmlnLW5hdGl2ZS5wYXRjaApAQCAtMSwyNCArMSwzMiBAQAotVXNlIG5hdGl2ZSBwa2ctY29uZmlnIHdoZW4gbG9va2luZyBmb3IgZ3RrLWRvYy4KK0Zyb20gNWYxNDU2MjFiNDc4MGNmZDZhNTYzMmZjYzk3YzQ1ZjU3MjkzOGVmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBNb24sIDUgU2VwIDIwMTYgMjI6MjU6NDQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCA1LzVdIFVzZSBuYXRpdmUgcGtnLWNvbmZpZyB3aGVuIGxvb2tpbmcgZm9yIGd0ay1kb2MuCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIAotZGlmZiAtLWdpdCBhL2d0ay1kb2MubTQgYi9ndGstZG9jLm00Ci1pbmRleCAzNjc1NTQzLi45NDg4MWFlIDEwMDY0NAotLS0tIGEvZ3RrLWRvYy5tNAotKysrIGIvZ3RrLWRvYy5tNAotQEAgLTEsNiArMSw2IEBACi0gZG5sIC0qLSBtb2RlOiBhdXRvY29uZiAtKi0KKy0tLQorIGd0ay1kb2MubTQgfCA3ICsrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKK0luZGV4OiBndGstZG9jLTEuMjcvZ3RrLWRvYy5tNAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGd0ay1kb2MtMS4yNy5vcmlnL2d0ay1kb2MubTQKKysrKyBndGstZG9jLTEuMjcvZ3RrLWRvYy5tNAorQEAgLTI1LDcgKzI1LDcgQEAKKyAjIE1hY3JvIGFwcGVhciBpbiB0aGVtLiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgZG9lcyBnb3Zlcm4KKyAjIGFsbCBvdGhlciB1c2Ugb2YgdGhlIG1hdGVyaWFsIHRoYXQgY29uc3RpdHV0ZXMgdGhlIEF1dG9jb25mIE1hY3JvLgorIAogLSMgc2VyaWFsIDIKICsjIHNlcmlhbCAyLjEKLQorIAogIGRubCBVc2FnZToKICBkbmwgICBHVEtfRE9DX0NIRUNLKFttaW5pbXVtLWd0ay1kb2MtdmVyc2lvbl0pCi1AQCAtMTAsMTEgKzEwLDE2IEBAIEFDX0RFRlVOKFtHVEtfRE9DX0NIRUNLXSwKK0BAIC0zNSwxMSArMzUsMTYgQEAgQUNfREVGVU4oW0dUS19ET0NfQ0hFQ0tdLAogICAgQUNfQkVGT1JFKFtBQ19QUk9HX0xJQlRPT0xdLFskMF0pZG5sIHNldHVwIGxpYnRvb2wgZmlyc3QKICAgIEFDX0JFRk9SRShbQU1fUFJPR19MSUJUT09MXSxbJDBdKWRubCBzZXR1cCBsaWJ0b29sIGZpcnN0Ci0KKyAKICsgIGd0a2RvY19wa2djb25maWdfc2F2ZT0kUEtHX0NPTkZJRwogKyAgUEtHX0NPTkZJRz1wa2ctY29uZmlnLW5hdGl2ZQogKwpAQCAtMjYsNyArMzQsNyBAQAogICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgZ3RrLWRvY10pCiAgICBQS0dfQ0hFQ0tfRVhJU1RTKFskZ3RrX2RvY19yZXF1aXJlc10sW2hhdmVfZ3RrX2RvYz15ZXNdLFtoYXZlX2d0a19kb2M9bm9dKQogICAgQUNfTVNHX1JFU1VMVCgkaGF2ZV9ndGtfZG9jKQotCisgCiArICBQS0dfQ09ORklHPSRndGtkb2NfcGtnY29uZmlnX3NhdmUKICsKICAgIGlmIHRlc3QgIiRoYXZlX2d0a19kb2MiID0gIm5vIjsgdGhlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4yNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9ndGstZG9jXzEuMjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwZWI5OTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4yNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLVNVTU1BUlkgPSAiRG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IgZm9yIGdsaWItYmFzZWQgc29mdHdhcmUiCi1ERVNDUklQVElPTiA9ICJHdGstZG9jIGlzIGEgc2V0IG9mIHNjcmlwdHMgdGhhdCBleHRyYWN0IHNwZWNpYWxseSBmb3JtYXR0ZWQgY29tbWVudHMgXAotICAgICAgICAgICAgICAgZnJvbSBnbGliLWJhc2VkIHNvZnR3YXJlIGFuZCBwcm9kdWNlIGEgc2V0IG9mIGh0bWwgZG9jdW1lbnRhdGlvbiBmaWxlcyBmcm9tIHRoZW0iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmd0ay5vcmcvZ3RrLWRvYy8iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi0KLWluaGVyaXQgZ25vbWViYXNlCi0KLSMgQ29uZmlndXJlIHRoZSBzY3JpcHRzIGNvcnJlY3RseSAoYW5kIGJ1aWxkIHRoZWlyIGRlcGVuZGVuY2llcykgb25seSBpZiB0aGV5IGFyZSBhY3R1YWxseQotIyBnb2luZyB0byBiZSB1c2VkOyBvdGhlcml3c2Ugd2UgbmVlZCBvbmx5IHRoZSBtNC9tYWtlZmlsZSBpbmNsdWRlcyBmcm9tIHRoZSBndGstZG9jIHRhcmJhbGwuCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJhcGktZG9jdW1lbnRhdGlvbiIsICJ3b3JraW5nLXNjcmlwdHMiLCAiIiwgZCl9IgotCi0jIFRoaXMgd2lsbCBjYXVzZSB0YXJnZXQgZ3RrLWRvYyB0byBoYXJkY29kZSBwYXRocyBvZiBuYXRpdmUgZGVwZW5kZW5jaWVzCi0jIGludG8gaXRzIHNjcmlwdHMuIFRoaXMgbWVhbnMgdGhhdCB0YXJnZXQgZ3RrLWRvYyBwYWNrYWdlIGlzIGJyb2tlbjsKLSMgaG9wZWZ1bGx5IG5vIG9uZSBtaW5kcyBiZWNhdXNlIGl0cyBzY3JpcHRzIGFyZSBub3QgdXNlZCBmb3IgYW55dGhpbmcgZHVyaW5nIGJ1aWxkCi0jIGFuZCBzaG91bGRuJ3QgYmUgdXNlZCBvbiB0YXJnZXRzLgotUEFDS0FHRUNPTkZJR1t3b3JraW5nLXNjcmlwdHNdID0gIi0td2l0aC1oaWdobGlnaHQ9c291cmNlLWhpZ2hsaWdodCwtLXdpdGgtaGlnaGxpZ2h0PW5vLGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSBzb3VyY2UtaGlnaGxpZ2h0LW5hdGl2ZSBwZXJsLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbdGVzdHNdID0gIi0tZW5hYmxlLXRlc3RzLC0tZGlzYWJsZS10ZXN0cyxnbGliLTIuMCIKLQotIyBXZSBjYW5ub3QgdXNlIGhvc3QgcGVybCwgYmVjYXVzZSBpdCBtYXkgYmUgdG9vIG9sZCBmb3IgZ3RrLWRvYwotRVhUUkFOQVRJVkVQQVRIICs9ICJwZXJsLW5hdGl2ZSIKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRG8tbm90LWhhcmRvY29kZS1wYXRocy10by1wZXJsLXB5dGhvbi1pbi1zY3JpcHRzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1lcnJvci1vdXQtaWYteHNsdHByb2MtaXMtbm90LWZvdW5kLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1lcnJvci1vdXQtaWYtcGVybC1pcy1ub3QtZm91bmQtb3ItaXRzLXZlcnNpb24ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2NvbmRpdGlvbmFsdGVzdHMucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9wa2ctY29uZmlnLW5hdGl2ZS5wYXRjaCIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMGRjNjU3MDk1MzExMmE0NjRhNDA5ZmI5OTI1OGNjYmMiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIxZWE0NmVkNDAwZTY1MDFmOTc1YWNhYWZlYTMxNDc5Y2VhOGYzMmY5MTFkY2E0ZGZmMDM2ZjU5ZTY0NjRmZDQyIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLSMgRG8gbm90IGNoZWNrIGZvciBYTUwgY2F0YWxvZ3Mgd2hlbiBidWlsZGluZyBiZWNhdXNlIHRoYXQKLSMgaW5mb3JtYXRpb24gaXMgbm90IHVzZWQgZm9yIGFueXRoaW5nIGR1cmluZyBidWlsZC4gUmVjaXBlCi0jIGRlcGVuZGVuY2llcyBtYWtlIHN1cmUgd2UgaGF2ZSBhbGwgdGhlIHJpZ2h0IGJpdHMuCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAgICAgc2VkIC1pIC1lICdzLF5KSF9DSEVDS19YTUxfQ0FUQUxPRy4qLCwnICR7U30vY29uZmlndXJlLmFjCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3NnbWwiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKLUZJTEVTXyR7UE59LWRvYyA9ICIiCi0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBndGtkb2NfbWFrZWZpbGVzX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLWd0a2RvY19tYWtlZmlsZXNfc3lzcm9vdF9wcmVwcm9jZXNzKCkgewotICAgICAgICAjIFBhdGNoIHRoZSBndGstZG9jIG1ha2VmaWxlcyBzbyB0aGF0IHRoZSBxZW11IHdyYXBwZXIgaXMgdXNlZCB0byBydW4gdHJhbnNpZW50IGJpbmFyaWVzCi0gICAgICAgICMgaW5zdGVhZCBvZiBsaWJ0b29sIHdyYXBwZXIgb3IgcnVubmluZyB0aGVtIGRpcmVjdGx5Ci0gICAgICAgIHNlZCAtaSBcCi0gICAgICAgICAgIC1lICJzfEdUS0RPQ19SVU4gPS4qfEdUS0RPQ19SVU4gPSBcJCh0b3BfYnVpbGRkaXIpL2d0a2RvYy1xZW11d3JhcHBlcnwiIFwKLSAgICAgICAgICAgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS9ndGstZG9jL2RhdGEvZ3RrLWRvYyptYWtlCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZ3RrLWRvY18xLjI3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4yNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTUyODExCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4yNy5iYgpAQCAtMCwwICsxLDUwIEBACitTVU1NQVJZID0gIkRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIGZvciBnbGliLWJhc2VkIHNvZnR3YXJlIgorREVTQ1JJUFRJT04gPSAiR3RrLWRvYyBpcyBhIHNldCBvZiBzY3JpcHRzIHRoYXQgZXh0cmFjdCBzcGVjaWFsbHkgZm9ybWF0dGVkIGNvbW1lbnRzIFwKKyAgICAgICAgICAgICAgIGZyb20gZ2xpYi1iYXNlZCBzb2Z0d2FyZSBhbmQgcHJvZHVjZSBhIHNldCBvZiBodG1sIGRvY3VtZW50YXRpb24gZmlsZXMgZnJvbSB0aGVtIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ndGsub3JnL2d0ay1kb2MvIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgorCitpbmhlcml0IGdub21lYmFzZQorCisjIENvbmZpZ3VyZSB0aGUgc2NyaXB0cyBjb3JyZWN0bHkgKGFuZCBidWlsZCB0aGVpciBkZXBlbmRlbmNpZXMpIG9ubHkgaWYgdGhleSBhcmUgYWN0dWFsbHkKKyMgZ29pbmcgdG8gYmUgdXNlZDsgb3RoZXJpd3NlIHdlIG5lZWQgb25seSB0aGUgbTQvbWFrZWZpbGUgaW5jbHVkZXMgZnJvbSB0aGUgZ3RrLWRvYyB0YXJiYWxsLgorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAiYXBpLWRvY3VtZW50YXRpb24iLCAid29ya2luZy1zY3JpcHRzIiwgIiIsIGQpfSIKKworIyBUaGlzIHdpbGwgY2F1c2UgdGFyZ2V0IGd0ay1kb2MgdG8gaGFyZGNvZGUgcGF0aHMgb2YgbmF0aXZlIGRlcGVuZGVuY2llcworIyBpbnRvIGl0cyBzY3JpcHRzLiBUaGlzIG1lYW5zIHRoYXQgdGFyZ2V0IGd0ay1kb2MgcGFja2FnZSBpcyBicm9rZW47CisjIGhvcGVmdWxseSBubyBvbmUgbWluZHMgYmVjYXVzZSBpdHMgc2NyaXB0cyBhcmUgbm90IHVzZWQgZm9yIGFueXRoaW5nIGR1cmluZyBidWlsZAorIyBhbmQgc2hvdWxkbid0IGJlIHVzZWQgb24gdGFyZ2V0cy4KK1BBQ0tBR0VDT05GSUdbd29ya2luZy1zY3JpcHRzXSA9ICItLXdpdGgtaGlnaGxpZ2h0PXNvdXJjZS1oaWdobGlnaHQsLS13aXRoLWhpZ2hsaWdodD1ubyxsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUgc291cmNlLWhpZ2hsaWdodC1uYXRpdmUgcHl0aG9uMy1zaXgiCitQQUNLQUdFQ09ORklHW3Rlc3RzXSA9ICItLWVuYWJsZS10ZXN0cywtLWRpc2FibGUtdGVzdHMsZ2xpYi0yLjAiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImIyOTk0OWUwOTY0NzYyZTQ3NGI3MDZjZTIyMTcxNjAyIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZTI2YmQzZjcwODBjNzQ5YjFjYjY2YzQ2YzZiZjgyMzllMmYzMjBhOTQ5OTY0ZmI5YzZkNTZlMWIwYzZkOWE2ZiIKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLURvLW5vdC1oYXJkb2NvZGUtcGF0aHMtdG8tcGVybC1weXRob24taW4tc2NyaXB0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1lcnJvci1vdXQtaWYteHNsdHByb2MtaXMtbm90LWZvdW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NvbmRpdGlvbmFsdGVzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbm8tY2xvYmJlci5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL3BrZy1jb25maWctbmF0aXZlLnBhdGNoIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKKyMgRG8gbm90IGNoZWNrIGZvciBYTUwgY2F0YWxvZ3Mgd2hlbiBidWlsZGluZyBiZWNhdXNlIHRoYXQKKyMgaW5mb3JtYXRpb24gaXMgbm90IHVzZWQgZm9yIGFueXRoaW5nIGR1cmluZyBidWlsZC4gUmVjaXBlCisjIGRlcGVuZGVuY2llcyBtYWtlIHN1cmUgd2UgaGF2ZSBhbGwgdGhlIHJpZ2h0IGJpdHMuCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAgICAgc2VkIC1pIC1lICdzLF5KSF9DSEVDS19YTUxfQ0FUQUxPRy4qLCwnICR7U30vY29uZmlndXJlLmFjCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3NnbWwiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKK0ZJTEVTXyR7UE59LWRvYyA9ICIiCisKK1NZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBndGtkb2NfbWFrZWZpbGVzX3N5c3Jvb3RfcHJlcHJvY2VzcyIKK2d0a2RvY19tYWtlZmlsZXNfc3lzcm9vdF9wcmVwcm9jZXNzKCkgeworICAgICAgICAjIFBhdGNoIHRoZSBndGstZG9jIG1ha2VmaWxlcyBzbyB0aGF0IHRoZSBxZW11IHdyYXBwZXIgaXMgdXNlZCB0byBydW4gdHJhbnNpZW50IGJpbmFyaWVzCisgICAgICAgICMgaW5zdGVhZCBvZiBsaWJ0b29sIHdyYXBwZXIgb3IgcnVubmluZyB0aGVtIGRpcmVjdGx5CisgICAgICAgIHNlZCAtaSBcCisgICAgICAgICAgIC1lICJzfEdUS0RPQ19SVU4gPS4qfEdUS0RPQ19SVU4gPSBcJCh0b3BfYnVpbGRkaXIpL2d0a2RvYy1xZW11d3JhcHBlcnwiIFwKKyAgICAgICAgICAgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS9ndGstZG9jL2RhdGEvZ3RrLWRvYyptYWtlCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2hpY29sb3ItaWNvbi10aGVtZS9oaWNvbG9yLWljb24tdGhlbWVfMC4xNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvaGljb2xvci1pY29uLXRoZW1lL2hpY29sb3ItaWNvbi10aGVtZV8wLjE1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzA0NjMyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvaGljb2xvci1pY29uLXRoZW1lL2hpY29sb3ItaWNvbi10aGVtZV8wLjE1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJEZWZhdWx0IGljb24gdGhlbWUgdGhhdCBhbGwgaWNvbiB0aGVtZXMgYXV0b21hdGljYWxseSBpbmhlcml0IGZyb20iCi1IT01FUEFHRSA9ICJodHRwOi8vaWNvbi10aGVtZS5mcmVlZGVza3RvcC5vcmcvd2lraS9IaWNvbG9yVGhlbWUiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjA4YTQ0NjgwOTkxM2ZjOWIzYzcxOGYwZWFlYTA0MjYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2ljb24tdGhlbWUuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiNmFhMmIzOTkzYTg4M2Q4NTAxN2M3Y2MwY2ZjMGZiNzMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWNjNDVhYzMzMThjMzEyMTJlYTJkOGNiOTllNjQwMjA3MzIzOTNlZTc2MzBmYTZjMTgxMGFmNWY5ODcwMzNjYyIKLQotaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scwotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvaGljb2xvci1pY29uLXRoZW1lL2hpY29sb3ItaWNvbi10aGVtZV8wLjE3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9oaWNvbG9yLWljb24tdGhlbWUvaGljb2xvci1pY29uLXRoZW1lXzAuMTcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzA2NGIxOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvaGljb2xvci1pY29uLXRoZW1lL2hpY29sb3ItaWNvbi10aGVtZV8wLjE3LmJiCkBAIC0wLDAgKzEsMTQgQEAKK1NVTU1BUlkgPSAiRGVmYXVsdCBpY29uIHRoZW1lIHRoYXQgYWxsIGljb24gdGhlbWVzIGF1dG9tYXRpY2FsbHkgaW5oZXJpdCBmcm9tIgorSE9NRVBBR0UgPSAiaHR0cDovL2ljb24tdGhlbWUuZnJlZWRlc2t0b3Aub3JnL3dpa2kvSGljb2xvclRoZW1lIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnLyIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYwOGE0NDY4MDk5MTNmYzliM2M3MThmMGVhZWEwNDI2IgorCitTUkNfVVJJID0gImh0dHA6Ly9pY29uLXRoZW1lLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjg0ZWVjOGQ2ZjgxMDI0MGEwNjljNzMxZjE4NzBiNDc0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMxNzQ4NDM1MjI3MWQxOGNiYmNmYWMzODY4ZWFiNzk4ZDY3ZmZmMWI4NDAyZTc0MGJhYTZmZjQxZDU4OGE5ZDgiCisKK2luaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vaWNvbnMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2pzb24tZ2xpYi9qc29uLWdsaWJfMS4yLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2pzb24tZ2xpYi9qc29uLWdsaWJfMS4yLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjNWQzODEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9qc29uLWdsaWIvanNvbi1nbGliXzEuMi44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJKU09OLUdMaWIgaW1wbGVtZW50cyBhIGZ1bGwgSlNPTiBwYXJzZXIgdXNpbmcgR0xpYiBhbmQgR09iamVjdCIKLURFU0NSSVBUSU9OID0gIlVzZSBKU09OLUdMaWIgaXQgaXMgcG9zc2libGUgdG8gcGFyc2UgYW5kIGdlbmVyYXRlIHZhbGlkIEpTT05cCi0gZGF0YSBzdHJ1Y3R1cmVzLCB1c2luZyBhIERPTS1saWtlIEFQSS4gSlNPTi1HTGliIGFsc28gb2ZmZXJzIEdPYmplY3QgXAotaW50ZWdyYXRpb24sIHByb3ZpZGluZyB0aGUgYWJpbGl0eSB0byBzZXJpYWxpemUgYW5kIGRlc2VyaWFsaXplIEdPYmplY3QgXAotaW5zdGFuY2VzIHRvIGFuZCBmcm9tIEpTT04gZGF0YSB0eXBlcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vbGl2ZS5nbm9tZS5vcmcvSnNvbkdsaWIiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCIKLQotREVQRU5EUyA9ICJnbGliLTIuMCIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZmYzMWU3ZDA1OTRkZjQ0MzE4ZTEyZmFjZGEzZDA4NmUiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJmZDU1YTkwMzdkMzllN2ExMGYwZGI2NDMwOWY1ZjAyNjVmYTMyZWM5NjJiZjg1MDY2MDg3YjgzYTI4MDdmNDBhIgotCi1pbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IGxpYl9wYWNrYWdlIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIG1hbnBhZ2VzCi0KLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbiAtLXdpdGgteG1sLWNhdGFsb2c9JHtTVEFHSU5HX0VUQ0RJUl9OQVRJVkV9L3htbC9jYXRhbG9nLnhtbCwgLS1kaXNhYmxlLW1hbiwgbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2pzb24tZ2xpYi9qc29uLWdsaWJfMS40LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2pzb24tZ2xpYi9qc29uLWdsaWJfMS40LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlmZTNjYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvanNvbi1nbGliL2pzb24tZ2xpYl8xLjQuMi5iYgpAQCAtMCwwICsxLDQwIEBACitTVU1NQVJZID0gIkpTT04tR0xpYiBpbXBsZW1lbnRzIGEgZnVsbCBKU09OIHBhcnNlciB1c2luZyBHTGliIGFuZCBHT2JqZWN0IgorREVTQ1JJUFRJT04gPSAiVXNlIEpTT04tR0xpYiBpdCBpcyBwb3NzaWJsZSB0byBwYXJzZSBhbmQgZ2VuZXJhdGUgdmFsaWQgSlNPTlwKKyBkYXRhIHN0cnVjdHVyZXMsIHVzaW5nIGEgRE9NLWxpa2UgQVBJLiBKU09OLUdMaWIgYWxzbyBvZmZlcnMgR09iamVjdCBcCitpbnRlZ3JhdGlvbiwgcHJvdmlkaW5nIHRoZSBhYmlsaXR5IHRvIHNlcmlhbGl6ZSBhbmQgZGVzZXJpYWxpemUgR09iamVjdCBcCitpbnN0YW5jZXMgdG8gYW5kIGZyb20gSlNPTiBkYXRhIHR5cGVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9saXZlLmdub21lLm9yZy9Kc29uR2xpYiIKKworTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IgorCitERVBFTkRTID0gImdsaWItMi4wIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIzNTEwN2UyM2E3YmJiYzcwZjMxYzM0ZjdiOWFkZjFjMyIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjJkNzcwOWE0NDc0OWM3MzE4NTk5YTY4MjkzMjJlMDgxOTE1YmRjNzNmNWJlNTA0NTg4MmVkMTIwYmI2ODZkYzgiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitpbmhlcml0IGdub21lYmFzZSBsaWJfcGFja2FnZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyBnZXR0ZXh0CisKKyMgVGhpcyBidWlsZHMgYm90aCBBUEkgZG9jcyAodmlhIGd0ay1kb2MpIGFuZCBtYW5wYWdlcworR1RLRE9DX0VOQUJMRV9GTEFHID0gIi1EZG9jcz10cnVlIgorR1RLRE9DX0RJU0FCTEVfRkxBRyA9ICItRGRvY3M9ZmFsc2UiCisKK0dJX0VOQUJMRV9GTEFHID0gIi1EaW50cm9zcGVjdGlvbj10cnVlIgorR0lfRElTQUJMRV9GTEFHID0gIi1EaW50cm9zcGVjdGlvbj1mYWxzZSIKKworRVhUUkFfT0VNRVNPTl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygnR1RLRE9DX0VOQUJMRUQnLCAnVHJ1ZScsICcke0dUS0RPQ19FTkFCTEVfRkxBR30nLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJHtHVEtET0NfRElTQUJMRV9GTEFHfScsIGQpfSAiCitFWFRSQV9PRU1FU09OX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICcke0dJX0VOQUJMRV9GTEFHfScsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke0dJX0RJU0FCTEVfRkxBR30nLCBkKX0gIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIEZJWE1FOiB0aGVzZSBuZWVkIHRvIGJlIHByb3ZpZGVkIHZpYSBwdGVzdAorICAgIHJtIC1yZiAke0R9JHtkYXRhZGlyfS9pbnN0YWxsZWQtdGVzdHMgJHtEfSR7bGliZXhlY2Rpcn0KK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCisjIEN1cnJlbnRseSBpdCdzIG5vdCBwb3NzaWJsZSB0byBkaXNhYmxlIGdldHRleHQgaW4gTWVzb24sIHNvIHdlIG5lZWQgdG8gZm9yY2UKKyMgdGhpcyBiYWNrIG9uLgorVVNFX05MU19jbGFzcy1uYXRpdmUgPSAieWVzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJndWRldi9saWJndWRldl8yMzEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYmd1ZGV2L2xpYmd1ZGV2XzIzMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQ2NzkyNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYmd1ZGV2L2xpYmd1ZGV2XzIzMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiR09iamVjdCB3cmFwcGVyIGZvciBsaWJ1ZGV2IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9saWJndWRldiIKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjkxNmMxMGM1MWVjNjExMzFlMjQ0YzM5MzZiYmIyZTBjIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiM2IxZWY5OWQ0YTg5ODRjMzUwNDQxMDNkOGRkZmMzY2M1MmM4MDAzNWMzNmFiYWIyYmNjNWUzNTMyZTA2M2Y5NiIKLQotREVQRU5EUyA9ICJnbGliLTIuMCB1ZGV2IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXVtb2NrZGV2IgotCi1SQ09ORkxJQ1RTXyR7UE59ID0gInN5c3RlbWQgKDw9IDIyMCkiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2xpYmd1ZGV2LyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPihcZCspKSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGliZ3VkZXYvbGliZ3VkZXZfMjMyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJndWRldi9saWJndWRldl8yMzIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlmZTk2MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGliZ3VkZXYvbGliZ3VkZXZfMjMyLmJiCkBAIC0wLDAgKzEsMTggQEAKK1NVTU1BUlkgPSAiR09iamVjdCB3cmFwcGVyIGZvciBsaWJ1ZGV2IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9saWJndWRldiIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImVlNGNiMmI5YzU3M2NkZjM1NGY2ZWQ3NDRmMDFiMTExZDRiNWJlZDM1MDNmZmE5NTZjZWZmZjUwNDg5Yzc4NjAiCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI2OTE0ODUyMzc3MTU2NjY1NTY3YWJmOGEzOGQ4OTIzNiIKKworREVQRU5EUyA9ICJnbGliLTIuMCB1ZGV2IgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXVtb2NrZGV2IgorCitSQ09ORkxJQ1RTXyR7UE59ID0gInN5c3RlbWQgKDw9IDIyMCkiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2xpYmd1ZGV2LyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPihcZCspKSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMTguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnJzdmcvbGlicnN2Z18yLjQwLjE4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMWEwZGMyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMTguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIHJlbmRlcmluZyBTVkcgZmlsZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9saWJyc3ZnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotCi1MSUNFTlNFID0gIkxHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9yc3ZnLmg7YmVnaW5saW5lPTM7ZW5kbGluZT0yNDttZDU9MjBiNDExM2M0OTA5YmJmMGQ2N2UwMDY3NzgzMDJiYzYiCi0KLVNFQ1RJT04gPSAieDExL3V0aWxzIgotREVQRU5EUyA9ICJjYWlybyBnZGstcGl4YnVmIGdsaWItMi4wIGxpYmNyb2NvIGxpYnhtbDIgcGFuZ28iCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdub21lYmFzZSBndGstZG9jIHBpeGJ1ZmNhY2hlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotU1JDX1VSSSArPSAiZmlsZTovL2d0ay1vcHRpb24ucGF0Y2giCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImVhYTVjOGE4YmJlMjYwMGFiNTE5NGMwZDNiMWI2MjFiIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYmZjOGM0ODhjODljMWU3MjEyYzQ3OGJlYjk1YzQxYjQ0NzAxNjM2MTI1YTNlNmRhYjQxMTg3ZjE0ODViNTY0YyIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYWNfY3ZfcGF0aF9HREtfUElYQlVGX1FVRVJZTE9BREVSUz0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIgotCi0jIFRoZSBvbGRlciBsZCAoMi4yMikgb24gdGhlIGhvc3QgKENlbnRvcyA2LjUpIGRvZXNuJ3QgaGF2ZSB0aGUKLSMgLUJzeW1ib2xpYy1mdW5jdGlvbnMgb3B0aW9uLCB3ZSBjYW4gZGlzYWJsZSBpdCBmb3IgbmF0aXZlLgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tZW5hYmxlLUJzeW1ib2xpYz1hdXRvIgotCi1QQUNLQUdFQ09ORklHID8/PSAiZ2RrcGl4YnVmIgotIyBUaGUgZ2RrLXBpeGJ1ZiBsb2FkZXIKLVBBQ0tBR0VDT05GSUdbZ2RrcGl4YnVmXSA9ICItLWVuYWJsZS1waXhidWYtbG9hZGVyLC0tZGlzYWJsZS1waXhidWYtbG9hZGVyLGdkay1waXhidWYtbmF0aXZlIgotIyBHVEsrIHRlc3QgYXBwbGljYXRpb24gKHJzdmctdmlldykKLVBBQ0tBR0VDT05GSUdbZ3RrXSA9ICItLXdpdGgtZ3RrMywtLXdpdGhvdXQtZ3RrMyxndGsrMyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBMb2FkYWJsZSBtb2R1bGVzIGRvbid0IG5lZWQgLmEgb3IgLmxhIG9uIExpbnV4Ci0Jcm0gLWYgJHtEfSR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8qL2xvYWRlcnMvKi5hICR7RH0ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvKi9sb2FkZXJzLyoubGEKLX0KLQotUEFDS0FHRVMgPSsgImxpYnJzdmctZ3RrIHJzdmciCi1GSUxFU19yc3ZnID0gIiR7YmluZGlyfS9yc3ZnKiBcCi0JICAgICAgJHtkYXRhZGlyfS9waXhtYXBzL3N2Zy12aWV3ZXIuc3ZnIFwKLQkgICAgICAke2RhdGFkaXJ9L3RoZW1lcyIKLUZJTEVTX2xpYnJzdmctZ3RrID0gIiR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8qLyovKi5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3RodW1ibmFpbGVycy9saWJyc3ZnLnRodW1ibmFpbGVyIgotCi1QSVhCVUZfUEFDS0FHRVMgPSAibGlicnN2Zy1ndGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnJzdmcvbGlicnN2Z18yLjQwLjIwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJyc3ZnL2xpYnJzdmdfMi40MC4yMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzc2ZDUyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJyc3ZnL2xpYnJzdmdfMi40MC4yMC5iYgpAQCAtMCwwICsxLDQ3IEBACitTVU1NQVJZID0gIkxpYnJhcnkgZm9yIHJlbmRlcmluZyBTVkcgZmlsZXMiCitIT01FUEFHRSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9saWJyc3ZnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgorCitSRUNJUEVfTk9fVVBEQVRFX1JFQVNPTiA9ICJWZXJzaW9ucyBmcm9tIDIuNDEuMCByZXF1aXJlcyBSdXN0IGNvbXBpbGVyIHRvIGJ1aWxkIGl0IgorCitMSUNFTlNFID0gIkxHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9yc3ZnLmg7YmVnaW5saW5lPTM7ZW5kbGluZT0yNDttZDU9MjBiNDExM2M0OTA5YmJmMGQ2N2UwMDY3NzgzMDJiYzYiCisKK1NFQ1RJT04gPSAieDExL3V0aWxzIgorREVQRU5EUyA9ICJjYWlybyBnZGstcGl4YnVmIGdsaWItMi4wIGxpYmNyb2NvIGxpYnhtbDIgcGFuZ28iCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBwaXhidWZjYWNoZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9ndGstb3B0aW9uLnBhdGNoIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI0OTQ5ZDMxM2IwYzVkOTE2MWE1YzI1OTEwNGFmNTU2OCIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImNmZjRkZDNjM2I3OGJmZTk5ZDhmY2ZhZDNiOGJhMWVlZTMyODlhMDgyM2MwZTExOGQ3ODEwNmJlNmI4NGM5MmIiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTID0gImFjX2N2X3BhdGhfR0RLX1BJWEJVRl9RVUVSWUxPQURFUlM9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wL2dkay1waXhidWYtcXVlcnktbG9hZGVycyIKKworIyBUaGUgb2xkZXIgbGQgKDIuMjIpIG9uIHRoZSBob3N0IChDZW50b3MgNi41KSBkb2Vzbid0IGhhdmUgdGhlCisjIC1Cc3ltYm9saWMtZnVuY3Rpb25zIG9wdGlvbiwgd2UgY2FuIGRpc2FibGUgaXQgZm9yIG5hdGl2ZS4KK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLWVuYWJsZS1Cc3ltYm9saWM9YXV0byIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImdka3BpeGJ1ZiIKKyMgVGhlIGdkay1waXhidWYgbG9hZGVyCitQQUNLQUdFQ09ORklHW2dka3BpeGJ1Zl0gPSAiLS1lbmFibGUtcGl4YnVmLWxvYWRlciwtLWRpc2FibGUtcGl4YnVmLWxvYWRlcixnZGstcGl4YnVmLW5hdGl2ZSIKKyMgR1RLKyB0ZXN0IGFwcGxpY2F0aW9uIChyc3ZnLXZpZXcpCitQQUNLQUdFQ09ORklHW2d0a10gPSAiLS13aXRoLWd0azMsLS13aXRob3V0LWd0azMsZ3RrKzMiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgTG9hZGFibGUgbW9kdWxlcyBkb24ndCBuZWVkIC5hIG9yIC5sYSBvbiBMaW51eAorCXJtIC1mICR7RH0ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvKi9sb2FkZXJzLyouYSAke0R9JHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyovbG9hZGVycy8qLmxhCit9CisKK1BBQ0tBR0VTID0rICJsaWJyc3ZnLWd0ayByc3ZnIgorRklMRVNfcnN2ZyA9ICIke2JpbmRpcn0vcnN2ZyogXAorCSAgICAgICR7ZGF0YWRpcn0vcGl4bWFwcy9zdmctdmlld2VyLnN2ZyBcCisJICAgICAgJHtkYXRhZGlyfS90aGVtZXMiCitGSUxFU19saWJyc3ZnLWd0ayA9ICIke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvKi8qLyouc28gXAorICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS90aHVtYm5haWxlcnMvbGlicnN2Zy50aHVtYm5haWxlciIKK1JSRUNPTU1FTkRTX2xpYnJzdmctZ3RrID0gImdkay1waXhidWYtYmluIgorCitQSVhCVUZfUEFDS0FHRVMgPSAibGlicnN2Zy1ndGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvXzEuMTQuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvXzEuMTQuMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjZGRkYzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyb18xLjE0LjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotcmVxdWlyZSBjYWlyby5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTczZTk5OWUwYzcyYjVhYzkwMTI0MjRmYTE1N2FkNzciCi0KLVNSQ19VUkkgPSAiaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnL3JlbGVhc2VzL2NhaXJvLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9jYWlyby1nZXRfYml0bWFwX3N1cmZhY2UtYnNjMTAzNjc4OS1DVkUtMjAxNy03NDc1LmRpZmYgXCAKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY2Fpcm8tRml4LUNWRS0yMDE3LTk4MTQucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjE0NmY1ZjRkMGI0NDM5ZmMzNzkyZmQzNDUyYjdiMTJhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdlODc4Nzg2NThmMmM5OTUxYTE0ZmM2NDExNGQ0OTU4YzBlNjVhYzQ3NTMwYjhhYzMwNzhiMmNlNDFiNjZhMDkiCi0KLVBBQ0tBR0VTID0rICJjYWlyby1nb2JqZWN0IGNhaXJvLXNjcmlwdC1pbnRlcnByZXRlciBjYWlyby1wZXJmLXV0aWxzIgotCi1TVU1NQVJZXyR7UE59ID0gIlRoZSBDYWlybyAyRCB2ZWN0b3IgZ3JhcGhpY3MgbGlicmFyeSIKLURFU0NSSVBUSU9OXyR7UE59ID0gIkNhaXJvIGlzIGEgbXVsdGktcGxhdGZvcm0gbGlicmFyeSBwcm92aWRpbmcgYW50aS1hbGlhc2VkIFwKLXZlY3Rvci1iYXNlZCByZW5kZXJpbmcgZm9yIG11bHRpcGxlIHRhcmdldCBiYWNrZW5kcy4gUGF0aHMgY29uc2lzdCBcCi1vZiBsaW5lIHNlZ21lbnRzIGFuZCBjdWJpYyBzcGxpbmVzIGFuZCBjYW4gYmUgcmVuZGVyZWQgYXQgYW55IHdpZHRoIFwKLXdpdGggdmFyaW91cyBqb2luIGFuZCBjYXAgc3R5bGVzLiBBbGwgY29sb3JzIG1heSBiZSBzcGVjaWZpZWQgd2l0aCBcCi1vcHRpb25hbCB0cmFuc2x1Y2VuY2UgKG9wYWNpdHkvYWxwaGEpIGFuZCBjb21iaW5lZCB1c2luZyB0aGUgXAotZXh0ZW5kZWQgUG9ydGVyL0R1ZmYgY29tcG9zaXRpbmcgYWxnZWJyYSBhcyBmb3VuZCBpbiB0aGUgWCBSZW5kZXIgXAotRXh0ZW5zaW9uLiIKLQotU1VNTUFSWV9jYWlyby1nb2JqZWN0ID0gIlRoZSBDYWlybyBsaWJyYXJ5IEdPYmplY3Qgd3JhcHBlciBsaWJyYXJ5IgotREVTQ1JJUFRJT05fY2Fpcm8tZ29iamVjdCA9ICJBIEdPYmplY3Qgd3JhcHBlciBsaWJyYXJ5IGZvciB0aGUgQ2Fpcm8gQVBJLiIKLQotU1VNTUFSWV9jYWlyby1zY3JpcHQtaW50ZXJwcmV0ZXIgPSAiVGhlIENhaXJvIGxpYnJhcnkgc2NyaXB0IGludGVycHJldGVyIgotREVTQ1JJUFRJT05fY2Fpcm8tc2NyaXB0LWludGVycHJldGVyID0gIlRoZSBDYWlybyBzY3JpcHQgaW50ZXJwcmV0ZXIgaW1wbGVtZW50cyBcCi1DYWlyb1NjcmlwdC4gIENhaXJvU2NyaXB0IGlzIHVzZWQgYnkgdHJhY2luZyB1dGlsaXRpZXMgdG8gZW5hYmxlIHRoZSBhYmlsaXR5IFwKLXRvIHJlcGxheSByZW5kZXJpbmcuIgotCi1ERVNDUklQVElPTl9jYWlyby1wZXJmLXV0aWxzID0gIlRoZSBDYWlybyBsaWJyYXJ5IHBlcmZvcm1hbmNlIHV0aWxpdGllcyIKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYmNhaXJvLnNvLioiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jYWlyby8qLnNvIgotRklMRVNfJHtQTn0tZ29iamVjdCA9ICIke2xpYmRpcn0vbGliY2Fpcm8tZ29iamVjdC5zby4qIgotRklMRVNfJHtQTn0tc2NyaXB0LWludGVycHJldGVyID0gIiR7bGliZGlyfS9saWJjYWlyby1zY3JpcHQtaW50ZXJwcmV0ZXIuc28uKiIKLUZJTEVTXyR7UE59LXBlcmYtdXRpbHMgPSAiJHtiaW5kaXJ9L2NhaXJvLXRyYWNlICR7bGliZGlyfS9jYWlyby8qLmxhICR7bGliZGlyfS9jYWlyby9saWJjYWlyby10cmFjZS5zby4qIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0Jcm0gLXJmICR7RH0ke2JpbmRpcn0vY2Fpcm8tc3BoaW54Ci0Jcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vY2Fpcm8tZmRyKgotCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvL2NhaXJvLXNwaGlueCoKLQlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby8uZGVidWcvY2Fpcm8tZmRyKgotCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvLy5kZWJ1Zy9jYWlyby1zcGhpbngqCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvXzEuMTQuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvXzEuMTQuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDc1Y2ExZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm9fMS4xNC4xMi5iYgpAQCAtMCwwICsxLDQ2IEBACityZXF1aXJlIGNhaXJvLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNzNlOTk5ZTBjNzJiNWFjOTAxMjQyNGZhMTU3YWQ3NyIKKworU1JDX1VSSSA9ICJodHRwOi8vY2Fpcm9ncmFwaGljcy5vcmcvcmVsZWFzZXMvY2Fpcm8tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2NhaXJvLWdldF9iaXRtYXBfc3VyZmFjZS1ic2MxMDM2Nzg5LUNWRS0yMDE3LTc0NzUuZGlmZiBcIAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jYWlyby1GaXgtQ1ZFLTIwMTctOTgxNC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOWYwZGI5ZGJmY2EwOTY2YmU4YWNkNjgyZTYzNmQxNjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGM5MGYwMGM1MDBiMjI5OWMwYTMyM2RkOWJlZWFkMmEwMDM1Mzc1MmIyMDkyZWFkNTU4MTM5YmQ2N2Y3YmYxNiIKKworUEFDS0FHRVMgPSsgImNhaXJvLWdvYmplY3QgY2Fpcm8tc2NyaXB0LWludGVycHJldGVyIGNhaXJvLXBlcmYtdXRpbHMiCisKK1NVTU1BUllfJHtQTn0gPSAiVGhlIENhaXJvIDJEIHZlY3RvciBncmFwaGljcyBsaWJyYXJ5IgorREVTQ1JJUFRJT05fJHtQTn0gPSAiQ2Fpcm8gaXMgYSBtdWx0aS1wbGF0Zm9ybSBsaWJyYXJ5IHByb3ZpZGluZyBhbnRpLWFsaWFzZWQgXAordmVjdG9yLWJhc2VkIHJlbmRlcmluZyBmb3IgbXVsdGlwbGUgdGFyZ2V0IGJhY2tlbmRzLiBQYXRocyBjb25zaXN0IFwKK29mIGxpbmUgc2VnbWVudHMgYW5kIGN1YmljIHNwbGluZXMgYW5kIGNhbiBiZSByZW5kZXJlZCBhdCBhbnkgd2lkdGggXAord2l0aCB2YXJpb3VzIGpvaW4gYW5kIGNhcCBzdHlsZXMuIEFsbCBjb2xvcnMgbWF5IGJlIHNwZWNpZmllZCB3aXRoIFwKK29wdGlvbmFsIHRyYW5zbHVjZW5jZSAob3BhY2l0eS9hbHBoYSkgYW5kIGNvbWJpbmVkIHVzaW5nIHRoZSBcCitleHRlbmRlZCBQb3J0ZXIvRHVmZiBjb21wb3NpdGluZyBhbGdlYnJhIGFzIGZvdW5kIGluIHRoZSBYIFJlbmRlciBcCitFeHRlbnNpb24uIgorCitTVU1NQVJZX2NhaXJvLWdvYmplY3QgPSAiVGhlIENhaXJvIGxpYnJhcnkgR09iamVjdCB3cmFwcGVyIGxpYnJhcnkiCitERVNDUklQVElPTl9jYWlyby1nb2JqZWN0ID0gIkEgR09iamVjdCB3cmFwcGVyIGxpYnJhcnkgZm9yIHRoZSBDYWlybyBBUEkuIgorCitTVU1NQVJZX2NhaXJvLXNjcmlwdC1pbnRlcnByZXRlciA9ICJUaGUgQ2Fpcm8gbGlicmFyeSBzY3JpcHQgaW50ZXJwcmV0ZXIiCitERVNDUklQVElPTl9jYWlyby1zY3JpcHQtaW50ZXJwcmV0ZXIgPSAiVGhlIENhaXJvIHNjcmlwdCBpbnRlcnByZXRlciBpbXBsZW1lbnRzIFwKK0NhaXJvU2NyaXB0LiAgQ2Fpcm9TY3JpcHQgaXMgdXNlZCBieSB0cmFjaW5nIHV0aWxpdGllcyB0byBlbmFibGUgdGhlIGFiaWxpdHkgXAordG8gcmVwbGF5IHJlbmRlcmluZy4iCisKK0RFU0NSSVBUSU9OX2NhaXJvLXBlcmYtdXRpbHMgPSAiVGhlIENhaXJvIGxpYnJhcnkgcGVyZm9ybWFuY2UgdXRpbGl0aWVzIgorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliY2Fpcm8uc28uKiIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NhaXJvLyouc28iCitGSUxFU18ke1BOfS1nb2JqZWN0ID0gIiR7bGliZGlyfS9saWJjYWlyby1nb2JqZWN0LnNvLioiCitGSUxFU18ke1BOfS1zY3JpcHQtaW50ZXJwcmV0ZXIgPSAiJHtsaWJkaXJ9L2xpYmNhaXJvLXNjcmlwdC1pbnRlcnByZXRlci5zby4qIgorRklMRVNfJHtQTn0tcGVyZi11dGlscyA9ICIke2JpbmRpcn0vY2Fpcm8tdHJhY2UgJHtsaWJkaXJ9L2NhaXJvLyoubGEgJHtsaWJkaXJ9L2NhaXJvL2xpYmNhaXJvLXRyYWNlLnNvLioiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlybSAtcmYgJHtEfSR7YmluZGlyfS9jYWlyby1zcGhpbngKKwlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby9jYWlyby1mZHIqCisJcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vY2Fpcm8tc3BoaW54KgorCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvLy5kZWJ1Zy9jYWlyby1mZHIqCisJcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vLmRlYnVnL2NhaXJvLXNwaGlueCoKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLTEuMC9pbnN0YWxsLWV4YW1wbGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wL2luc3RhbGwtZXhhbXBsZXMucGF0Y2gKaW5kZXggM2I2YTcwZS4uY2U5YWIzYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wL2luc3RhbGwtZXhhbXBsZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wL2luc3RhbGwtZXhhbXBsZXMucGF0Y2gKQEAgLTMsMTEgKzMsMTEgQEAKIFNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKIAotZGlmZiAtLWdpdCBhL2V4YW1wbGVzL01ha2VmaWxlLmFtIGIvZXhhbXBsZXMvTWFrZWZpbGUuYW0KLWluZGV4IDRiOWI0NDkuLjIzMmNkMTkgMTAwNjQ0Ci0tLS0gYS9leGFtcGxlcy9NYWtlZmlsZS5hbQotKysrIGIvZXhhbXBsZXMvTWFrZWZpbGUuYW0KLUBAIC0zOCw2ICszOCw3IEBAIEFNX0NQUEZMQUdTID0gXAorSW5kZXg6IGNsdXR0ZXItMS4yNi4yL2V4YW1wbGVzL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gY2x1dHRlci0xLjI2LjIub3JpZy9leGFtcGxlcy9NYWtlZmlsZS5hbQorKysrIGNsdXR0ZXItMS4yNi4yL2V4YW1wbGVzL01ha2VmaWxlLmFtCitAQCAtMzMsNyArMzMsOCBAQCBBTV9DUFBGTEFHUyA9IFwKICAJLUkkKHRvcF9zcmNkaXIpL2NsdXR0ZXIgXAogIAktSSQodG9wX2J1aWxkZGlyKS9jbHV0dGVyCiAgCkBAIC0xNiwzICsxNiw0IEBACiArZXhhbXBsZV9QUk9HUkFNUyA9ICQoYWxsX2V4YW1wbGVzKQogIAogIEVYVFJBX0RJU1QgPSByZWRoYW5kLnBuZworIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3N0LTMuMC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1nc3QtMy4wLmluYwppbmRleCAyNmFlOTFjLi40Yzg3Nzk4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1nc3QtMy4wLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1nc3QtMy4wLmluYwpAQCAtMTUsNyArMTUsMyBAQAogRklMRVNfJHtQTn0gICAgICAgICAgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wL2xpYiouc28iCiBGSUxFU18ke1BOfS1kZXYgICAgICArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5sYSIKIEZJTEVTXyR7UE59LWV4YW1wbGVzICA9ICIke2JpbmRpcn0vdmlkZW8tcGxheWVyICR7YmluZGlyfS92aWRlby1zaW5rIgotCi0jIE5lZWRzIHRvIGJlIGRpc2FibGUgZHVlIHRvIGEgZGVwZW5kZW5jeSBvbiBnc3RyZWFtZXItcGx1Z2lucyBpbnRyb3NwZWN0aW9uIGZpbGVzCi1FWFRSQV9PRUNPTkZfYXBwZW5kX21pcHM2NCA9ICIgLS1kaXNhYmxlLWludHJvc3BlY3Rpb24gIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1ndGstMS4wXzEuOC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3RrLTEuMF8xLjguMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzgwNTBkZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1ndGstMS4wXzEuOC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1yZXF1aXJlIGNsdXR0ZXItZ3RrLTEuMC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjY2OTgyMDdlZTZlM2Q1YTFjMGZmYzBhMjM0NDRlMTJmIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZGEyN2Q0ODYzMjU0OTBhZDNmNjVkMmFiZjk0MTNhZWI4YjRhOGY3YjU1OWU0YjJmNzM1NjdhNTM0NGEyNmI5NCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWd0ay0xLjBfMS44LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1ndGstMS4wXzEuOC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMzAwYzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1ndGstMS4wXzEuOC40LmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBjbHV0dGVyLWd0ay0xLjAuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJiMzYzYWM5ODc4ZTIzMzdiZTg4N2I4ZWU5ZTFkYTAwZSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjUyMTQ5M2VjMDM4OTczYzc3ZWRjYjhiYzVlYWMyM2VlZDQxNjQ1MTE3ODk0YWFlZTczMDBiMjQ4N2NiNDJiMDYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm0vMDAwMS1jb25maWd1cmUuYWMtQWxsb3ctZXhwbGljaXQtZW5hYmxpbmctb2YtY3VuaXQtdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm0vMDAwMS1jb25maWd1cmUuYWMtQWxsb3ctZXhwbGljaXQtZW5hYmxpbmctb2YtY3VuaXQtdGVzdHMucGF0Y2gKaW5kZXggYmY1MjYzNy4uNDBiZWJjMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtLzAwMDEtY29uZmlndXJlLmFjLUFsbG93LWV4cGxpY2l0LWVuYWJsaW5nLW9mLWN1bml0LXRlc3RzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybS8wMDAxLWNvbmZpZ3VyZS5hYy1BbGxvdy1leHBsaWNpdC1lbmFibGluZy1vZi1jdW5pdC10ZXN0cy5wYXRjaApAQCAtMTIsMTEgKzEyLDExIEBACiAgY29uZmlndXJlLmFjIHwgMTQgKysrKysrKysrKysrLS0KICAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggZTMwNDhjNy4uOTE4ZDIxZCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTM3LDYgKzEzNywxMiBAQCBBQ19BUkdfRU5BQkxFKGluc3RhbGwtdGVzdC1wcm9ncmFtcywKK0luZGV4OiBsaWJkcm0tMi40LjkxL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYmRybS0yLjQuOTEub3JpZy9jb25maWd1cmUuYWMKKysrKyBsaWJkcm0tMi40LjkxL2NvbmZpZ3VyZS5hYworQEAgLTE2Myw2ICsxNjMsMTIgQEAgQUNfQVJHX0VOQUJMRShpbnN0YWxsLXRlc3QtcHJvZ3JhbXMsCiAgCQkgIFtJbnN0YWxsIHRlc3QgcHJvZ3JhbXMgKGRlZmF1bHQ6IG5vKV0pLAogIAkJICBbSU5TVEFMTF9URVNUUz0kZW5hYmxldmFsXSwgW0lOU1RBTExfVEVTVFM9bm9dKQogIApAQCAtMjksOCArMjksOCBAQAogIGRubCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBkbmwgY2hlY2sgY29tcGlsZXIgZmxhZ3MKICBBQ19ERUZVTihbTElCRFJNX0NDX1RSWV9GTEFHXSwgWwotQEAgLTM3Miw3ICszNzgsNyBAQCBpZiB0ZXN0ICJ4JFJBREVPTiIgPSB4eWVzOyB0aGVuCi0gCUFDX0RFRklORShIQVZFX1JBREVPTiwgMSwgW0hhdmUgcmFkZW9uIHN1cHBvcnRdKQorQEAgLTQxMSw3ICs0MTcsNyBAQCBlbHNlCisgCUFDX0RFRklORShIQVZFX1JBREVPTiwgMCkKICBmaQogIAogLWlmIHRlc3QgIngkQU1ER1BVIiAhPSB4bm87IHRoZW4KQEAgLTM4LDggKzM4LDggQEAKICAJIyBEZXRlY3QgY3VuaXQgbGlicmFyeQogIAlQS0dfQ0hFQ0tfTU9EVUxFUyhbQ1VOSVRdLCBbY3VuaXQgPj0gMi4xXSwgW2hhdmVfY3VuaXQ9eWVzXSwgW2hhdmVfY3VuaXQ9bm9dKQogIAkjIElmIHBrZy1jb25maWcgZG9lcyBub3QgZmluZCBjdW5pdCwgY2hlY2sgaXQgdXNpbmcgQUNfQ0hFQ0tfTElCLiAgV2UKLUBAIC0zOTksNyArNDA2LDExIEBAIGlmIHRlc3QgIngkQU1ER1BVIiA9IHh5ZXM7IHRoZW4KLSAJQUNfREVGSU5FKEhBVkVfQ1VOSVQsIFt0ZXN0ICJ4JGhhdmVfY3VuaXQiICE9ICJ4bm8iXSwgW0VuYWJsZSBDVU5JVCBIYXZlIGFtZGdwdSBzdXBwb3J0XSkKK0BAIC00MzYsNyArNDQyLDExIEBAIGlmIHRlc3QgIngkQU1ER1BVIiA9IHh5ZXM7IHRoZW4KKyAJQUNfREVGSU5FKEhBVkVfQU1ER1BVLCAxLCBbSGF2ZSBhbWRncHUgc3VwcG9ydF0pCiAgCiAgCWlmIHRlc3QgIngkaGF2ZV9jdW5pdCIgPSAieG5vIjsgdGhlbgogLQkJQUNfTVNHX1dBUk4oW0NvdWxkIG5vdCBmaW5kIGN1bml0IGxpYnJhcnkuIERpc2FibGluZyBhbWRncHUgdGVzdHNdKQpAQCAtNDksOCArNDksNSBAQAogKwkJCUFDX01TR19XQVJOKFtDb3VsZCBub3QgZmluZCBjdW5pdCBsaWJyYXJ5LiBEaXNhYmxpbmcgYW1kZ3B1IHRlc3RzXSkKICsJCWZpCiAgCWZpCi0gZmkKLSAKLS0tIAotMi4xLjQKLQorIGVsc2UKKyAJQUNfREVGSU5FKEhBVkVfQU1ER1BVLCAwKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtXzIuNC44My5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuODMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1Y2I3NWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtXzIuNC44My5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLVNVTU1BUlkgPSAiVXNlcnNwYWNlIGludGVyZmFjZSB0byB0aGUga2VybmVsIERSTSBzZXJ2aWNlcyIKLURFU0NSSVBUSU9OID0gIlRoZSBydW50aW1lIGxpYnJhcnkgZm9yIGFjY2Vzc2luZyB0aGUga2VybmVsIERSTSBzZXJ2aWNlcy4gIERSTSBcCi1zdGFuZHMgZm9yIFwiRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyXCIsIHdoaWNoIGlzIHRoZSBrZXJuZWwgcG9ydGlvbiBvZiB0aGUgXAotXCJEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJlXCIgKERSSSkuICBEUkkgaXMgcmVxdWlyZWQgZm9yIG1hbnkgaGFyZHdhcmUgXAotYWNjZWxlcmF0ZWQgT3BlbkdMIGRyaXZlcnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmciCi1TRUNUSU9OID0gIngxMS9iYXNlIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly94Zjg2ZHJtLmM7YmVnaW5saW5lPTk7ZW5kbGluZT0zMjttZDU9YzhhM2I5NjFhZjc2NjdjNTMwODE2NzYxZTk0OWRjNzEiCi1QUk9WSURFUyA9ICJkcm0iCi1ERVBFTkRTID0gImxpYnB0aHJlYWQtc3R1YnMgbGlicGNpYWNjZXNzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kcmkuZnJlZWRlc2t0b3Aub3JnL2xpYmRybS8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2luc3RhbGx0ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfT19DTE9FWEVDX3VuZGVjbGFyZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtQWxsb3ctZXhwbGljaXQtZW5hYmxpbmctb2YtY3VuaXQtdGVzdHMucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjIzODAwOTUzZWQ3NTY0OTg4ODcyZTFlOGM2MWZkZTMxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAzYTUyNjY5ZGE2MGVhZDYyNTQ4YTM1YmM0MzBhYWZiNmMyZDhkZDIxZWM5ZGJhM2E5MGY5NmVmZjVmZTM2ZDYiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBtYW5wYWdlcwotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1jYWlyby10ZXN0cyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aG91dC1jdW5pdCBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLW9tYXAtZXhwZXJpbWVudGFsLWFwaSBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLWV0bmF2aXYtZXhwZXJpbWVudGFsLWFwaSBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtdGVzdC1wcm9ncmFtcyBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS12YWxncmluZCBcCi0gICAgICAgICAgICAgICAgIgotUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFucGFnZXMsIC0tZGlzYWJsZS1tYW5wYWdlcywgbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgotCi1BTExPV19FTVBUWV8ke1BOfS1kcml2ZXJzID0gIjEiCi1QQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMgJHtQTn0tZHJpdmVycyAke1BOfS1yYWRlb24gJHtQTn0tbm91dmVhdSAke1BOfS1vbWFwIFwKLSAgICAgICAgICAgICAke1BOfS1pbnRlbCAke1BOfS1leHlub3MgJHtQTn0ta21zICR7UE59LWZyZWVkcmVubyAke1BOfS1hbWRncHUgXAotICAgICAgICAgICAgICR7UE59LWV0bmF2aXYiCi0KLVJSRUNPTU1FTkRTXyR7UE59LWRyaXZlcnMgPSAiJHtQTn0tcmFkZW9uICR7UE59LW5vdXZlYXUgJHtQTn0tb21hcCAke1BOfS1pbnRlbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWV4eW5vcyAke1BOfS1mcmVlZHJlbm8gJHtQTn0tYW1kZ3B1IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXRuYXZpdiIKLQotRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU18ke1BOfS1yYWRlb24gPSAiJHtsaWJkaXJ9L2xpYmRybV9yYWRlb24uc28uKiIKLUZJTEVTXyR7UE59LW5vdXZlYXUgPSAiJHtsaWJkaXJ9L2xpYmRybV9ub3V2ZWF1LnNvLioiCi1GSUxFU18ke1BOfS1vbWFwID0gIiR7bGliZGlyfS9saWJkcm1fb21hcC5zby4qIgotRklMRVNfJHtQTn0taW50ZWwgPSAiJHtsaWJkaXJ9L2xpYmRybV9pbnRlbC5zby4qIgotRklMRVNfJHtQTn0tZXh5bm9zID0gIiR7bGliZGlyfS9saWJkcm1fZXh5bm9zLnNvLioiCi1GSUxFU18ke1BOfS1rbXMgPSAiJHtsaWJkaXJ9L2xpYmttcyouc28uKiIKLUZJTEVTXyR7UE59LWZyZWVkcmVubyA9ICIke2xpYmRpcn0vbGliZHJtX2ZyZWVkcmVuby5zby4qIgotRklMRVNfJHtQTn0tYW1kZ3B1ID0gIiR7bGliZGlyfS9saWJkcm1fYW1kZ3B1LnNvLioiCi1GSUxFU18ke1BOfS1ldG5hdml2ID0gIiR7bGliZGlyfS9saWJkcm1fZXRuYXZpdi5zby4qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtXzIuNC45MS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuOTEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ5MDI4NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuOTEuYmIKQEAgLTAsMCArMSw1MSBAQAorU1VNTUFSWSA9ICJVc2Vyc3BhY2UgaW50ZXJmYWNlIHRvIHRoZSBrZXJuZWwgRFJNIHNlcnZpY2VzIgorREVTQ1JJUFRJT04gPSAiVGhlIHJ1bnRpbWUgbGlicmFyeSBmb3IgYWNjZXNzaW5nIHRoZSBrZXJuZWwgRFJNIHNlcnZpY2VzLiAgRFJNIFwKK3N0YW5kcyBmb3IgXCJEaXJlY3QgUmVuZGVyaW5nIE1hbmFnZXJcIiwgd2hpY2ggaXMgdGhlIGtlcm5lbCBwb3J0aW9uIG9mIHRoZSBcCitcIkRpcmVjdCBSZW5kZXJpbmcgSW5mcmFzdHJ1Y3R1cmVcIiAoRFJJKS4gIERSSSBpcyByZXF1aXJlZCBmb3IgbWFueSBoYXJkd2FyZSBcCithY2NlbGVyYXRlZCBPcGVuR0wgZHJpdmVycy4iCitIT01FUEFHRSA9ICJodHRwOi8vZHJpLmZyZWVkZXNrdG9wLm9yZyIKK1NFQ1RJT04gPSAieDExL2Jhc2UiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3hmODZkcm0uYztiZWdpbmxpbmU9OTtlbmRsaW5lPTMyO21kNT1jOGEzYjk2MWFmNzY2N2M1MzA4MTY3NjFlOTQ5ZGM3MSIKK1BST1ZJREVTID0gImRybSIKK0RFUEVORFMgPSAibGlicHRocmVhZC1zdHVicyBsaWJwY2lhY2Nlc3MiCisKK1NSQ19VUkkgPSAiaHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmcvbGliZHJtLyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vaW5zdGFsbHRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9PX0NMT0VYRUNfdW5kZWNsYXJlZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1BbGxvdy1leHBsaWNpdC1lbmFibGluZy1vZi1jdW5pdC10ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjNkODdjZGE5MjcwMGI3MTBhMzdkOWI4ZWRhYTlmNTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjM0YTBlZDBjYzFlZmYwNmY0ODY3NGIxZGE4MWFhZmE2NjFhOWYwMDFlN2E0ZjQzZGRlODEwNzY4ODZkYzgwMCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIG1hbnBhZ2VzCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWNhaXJvLXRlc3RzIFwKKyAgICAgICAgICAgICAgICAgLS13aXRob3V0LWN1bml0IFwKKyAgICAgICAgICAgICAgICAgLS1lbmFibGUtb21hcC1leHBlcmltZW50YWwtYXBpIFwKKyAgICAgICAgICAgICAgICAgLS1lbmFibGUtZXRuYXZpdi1leHBlcmltZW50YWwtYXBpIFwKKyAgICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC10ZXN0LXByb2dyYW1zIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXZhbGdyaW5kIFwKKyAgICAgICAgICAgICAgICAiCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW5wYWdlcywgLS1kaXNhYmxlLW1hbnBhZ2VzLCBsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUiCisKK0FMTE9XX0VNUFRZXyR7UE59LWRyaXZlcnMgPSAiMSIKK1BBQ0tBR0VTID0rICIke1BOfS10ZXN0cyAke1BOfS1kcml2ZXJzICR7UE59LXJhZGVvbiAke1BOfS1ub3V2ZWF1ICR7UE59LW9tYXAgXAorICAgICAgICAgICAgICR7UE59LWludGVsICR7UE59LWV4eW5vcyAke1BOfS1rbXMgJHtQTn0tZnJlZWRyZW5vICR7UE59LWFtZGdwdSBcCisgICAgICAgICAgICAgJHtQTn0tZXRuYXZpdiIKKworUlJFQ09NTUVORFNfJHtQTn0tZHJpdmVycyA9ICIke1BOfS1yYWRlb24gJHtQTn0tbm91dmVhdSAke1BOfS1vbWFwICR7UE59LWludGVsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh5bm9zICR7UE59LWZyZWVkcmVubyAke1BOfS1hbWRncHUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1ldG5hdml2IgorCitGSUxFU18ke1BOfS10ZXN0cyA9ICIke2JpbmRpcn0vKiIKK0ZJTEVTXyR7UE59LXJhZGVvbiA9ICIke2xpYmRpcn0vbGliZHJtX3JhZGVvbi5zby4qIgorRklMRVNfJHtQTn0tbm91dmVhdSA9ICIke2xpYmRpcn0vbGliZHJtX25vdXZlYXUuc28uKiIKK0ZJTEVTXyR7UE59LW9tYXAgPSAiJHtsaWJkaXJ9L2xpYmRybV9vbWFwLnNvLioiCitGSUxFU18ke1BOfS1pbnRlbCA9ICIke2xpYmRpcn0vbGliZHJtX2ludGVsLnNvLioiCitGSUxFU18ke1BOfS1leHlub3MgPSAiJHtsaWJkaXJ9L2xpYmRybV9leHlub3Muc28uKiIKK0ZJTEVTXyR7UE59LWttcyA9ICIke2xpYmRpcn0vbGlia21zKi5zby4qIgorRklMRVNfJHtQTn0tZnJlZWRyZW5vID0gIiR7bGliZGlyfS9saWJkcm1fZnJlZWRyZW5vLnNvLioiCitGSUxFU18ke1BOfS1hbWRncHUgPSAiJHtsaWJkaXJ9L2xpYmRybV9hbWRncHUuc28uKiIKK0ZJTEVTXyR7UE59LWV0bmF2aXYgPSAiJHtsaWJkaXJ9L2xpYmRybV9ldG5hdml2LnNvLioiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRjb25maWcvZm9udGNvbmZpZy8wMDAxLXNyYy1mY3htbC5jLWF2b2lkLWRvdWJsZS1mcmVlLW9mLWZpbGVuYW1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWcvMDAwMS1zcmMtZmN4bWwuYy1hdm9pZC1kb3VibGUtZnJlZS1vZi1maWxlbmFtZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2E5ZmRlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWcvMDAwMS1zcmMtZmN4bWwuYy1hdm9pZC1kb3VibGUtZnJlZS1vZi1maWxlbmFtZS5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIGExNjNjODFhYzQzMGNkYzI5MmFkZDIwMGYzZTZhMGMwNDhiZTRkN2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTEgT2N0IDIwMTcgMTc6NDA6MDkgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gc3JjL2ZjeG1sLmM6IGF2b2lkIGRvdWJsZSBmcmVlKCkgb2YgZmlsZW5hbWUKKworSXQncyBhbHNvIGZyZWVkIGFmdGVyIGJhaWwxLCBzbyBubyBuZWVkIHRvIGRvIGl0IGhlcmUuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMyMjFdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9mY3htbC5jIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9mY3htbC5jIGIvc3JjL2ZjeG1sLmMKK2luZGV4IDE5Y2U5NmEuLmVkYjYwNTQgMTAwNjQ0CistLS0gYS9zcmMvZmN4bWwuYworKysrIGIvc3JjL2ZjeG1sLmMKK0BAIC0zMzk4LDcgKzMzOTgsNiBAQCBGY0NvbmZpZ1BhcnNlQW5kTG9hZCAoRmNDb25maWcJICAgICpjb25maWcsCisgCisgICAgIGZkID0gRmNPcGVuICgoY2hhciAqKSBmaWxlbmFtZSwgT19SRE9OTFkpOworICAgICBpZiAoZmQgPT0gLTEpIHsKKy0JRmNTdHJGcmVlIChmaWxlbmFtZSk7CisgCWdvdG8gYmFpbDE7CisgICAgIH0KKyAKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGNvbmZpZy9mb250Y29uZmlnXzIuMTIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGNvbmZpZy9mb250Y29uZmlnXzIuMTIuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA1OGIzNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRjb25maWcvZm9udGNvbmZpZ18yLjEyLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1TVU1NQVJZID0gIkdlbmVyaWMgZm9udCBjb25maWd1cmF0aW9uIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJGb250Y29uZmlnIGlzIGEgZm9udCBjb25maWd1cmF0aW9uIGFuZCBjdXN0b21pemF0aW9uIGxpYnJhcnksIHdoaWNoIFwKLWRvZXMgbm90IGRlcGVuZCBvbiB0aGUgWCBXaW5kb3cgU3lzdGVtLiBJdCBpcyBkZXNpZ25lZCB0byBsb2NhdGUgXAotZm9udHMgd2l0aGluIHRoZSBzeXN0ZW0gYW5kIHNlbGVjdCB0aGVtIGFjY29yZGluZyB0byByZXF1aXJlbWVudHMgXAotc3BlY2lmaWVkIGJ5IGFwcGxpY2F0aW9ucy4gXAotRm9udGNvbmZpZyBpcyBub3QgYSByYXN0ZXJpemF0aW9uIGxpYnJhcnksIG5vciBkb2VzIGl0IGltcG9zZSBhIFwKLXBhcnRpY3VsYXIgcmFzdGVyaXphdGlvbiBsaWJyYXJ5IG9uIHRoZSBhcHBsaWNhdGlvbi4gVGhlIFgtc3BlY2lmaWMgXAotbGlicmFyeSAnWGZ0JyB1c2VzIGZvbnRjb25maWcgYWxvbmcgd2l0aCBmcmVldHlwZSB0byBzcGVjaWZ5IGFuZCBcCi1yYXN0ZXJpemUgZm9udHMuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZvbnRjb25maWcub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1mb250Y29uZmlnIgotCi1MSUNFTlNFID0gIk1JVC1zdHlsZSAmIE1JVCAmIFBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2EwNDQ5ZTliYzUzNzA0MDJhOTRjMDAyMDRiZWNhM2QgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2ZjZnJlZXR5cGUuYztlbmRsaW5lPTQ1O21kNT01ZDk1MTNlMzE5NmExZmJmZGZhOTQwNTFjMDlkZmM4NCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZmNjYWNoZS5jO2JlZ2lubGluZT0xMzY3O2VuZGxpbmU9MTM4MjttZDU9MDMyNmNmZWI0YTczMzNkZDRkZDI1ZmJiYzRiOWYyN2YiCi0KLVNFQ1RJT04gPSAibGlicyIKLQotREVQRU5EUyA9ICJleHBhdCBmcmVldHlwZSB6bGliIGdwZXJmLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZm9udGNvbmZpZy5vcmcvcmVsZWFzZS9mb250Y29uZmlnLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9yZXZlcnQtc3RhdGljLXBrZ2NvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZmIwMWZjM2Y0MTc2MGM0MWM2OWUzN2NjNzg0YjY1OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmZDVhNmE2NjNmNGM0YTAwZTE5NjUyMzkwMjYyNjY1NGRkMGM0YTc4Njg2Y2JjNmU0NzJmMzM4ZTUwZmRmODA2IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAjIHdvcmsgYXJvdW5kIGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTI4MAotICAgIHJtIC1mICR7U30vc3JjL2Zjb2Jqc2hhc2guaCAke1N9L3NyYy9mY29ianNoYXNoLmdwZXJmCi19Ci0KLVBBQ0tBR0VTID0rICJmb250Y29uZmlnLXV0aWxzIgotRklMRVNfJHtQTn0gPSsgIiR7ZGF0YWRpcn0veG1sLyoiCi1GSUxFU19mb250Y29uZmlnLXV0aWxzID0gIiR7YmluZGlyfS8qIgotCi0jIFdvcmsgYXJvdW5kIHBhc3QgYnJlYWthZ2UgaW4gZGViaWFuLmJiY2xhc3MKLVJQUk9WSURFU19mb250Y29uZmlnLXV0aWxzID0gImxpYmZvbnRjb25maWctdXRpbHMiCi1SUkVQTEFDRVNfZm9udGNvbmZpZy11dGlscyA9ICJsaWJmb250Y29uZmlnLXV0aWxzIgotUkNPTkZMSUNUU19mb250Y29uZmlnLXV0aWxzID0gImxpYmZvbnRjb25maWctdXRpbHMiCi1ERUJJQU5fTk9BVVRPTkFNRV9mb250Y29uZmlnLXV0aWxzID0gIjEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyByZWxhdGl2ZV9zeW1saW5rcwotCi1GT05UQ09ORklHX0NBQ0hFX0RJUiA/PSAiJHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9mb250Y29uZmlnIgotCi0jIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGFkZGl0aW9uYWwgZGlyZWN0b3JpZXMKLSMgL3Vzci9zaGFyZS9mb250cyBpcyBhbHJlYWR5IGluY2x1ZGVkIGJ5IGRlZmF1bHQgKHlvdSBjYW4gY2hhbmdlIGl0IHdpdGggLS13aXRoLWRlZmF1bHQtZm9udHMpCi1GT05UQ09ORklHX0ZPTlRfRElSUyA/PSAibm8iCi0KLUVYVFJBX09FQ09ORiA9ICIgLS1kaXNhYmxlLWRvY3MgLS13aXRoLWRlZmF1bHQtZm9udHM9JHtkYXRhZGlyfS9mb250cyAtLXdpdGgtY2FjaGUtZGlyPSR7Rk9OVENPTkZJR19DQUNIRV9ESVJ9IC0td2l0aC1hZGQtZm9udHM9JHtGT05UQ09ORklHX0ZPTlRfRElSU30iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWdfMi4xMi42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWdfMi4xMi42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0Y2JjZTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRjb25maWcvZm9udGNvbmZpZ18yLjEyLjYuYmIKQEAgLTAsMCArMSw1OCBAQAorU1VNTUFSWSA9ICJHZW5lcmljIGZvbnQgY29uZmlndXJhdGlvbiBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiRm9udGNvbmZpZyBpcyBhIGZvbnQgY29uZmlndXJhdGlvbiBhbmQgY3VzdG9taXphdGlvbiBsaWJyYXJ5LCB3aGljaCBcCitkb2VzIG5vdCBkZXBlbmQgb24gdGhlIFggV2luZG93IFN5c3RlbS4gSXQgaXMgZGVzaWduZWQgdG8gbG9jYXRlIFwKK2ZvbnRzIHdpdGhpbiB0aGUgc3lzdGVtIGFuZCBzZWxlY3QgdGhlbSBhY2NvcmRpbmcgdG8gcmVxdWlyZW1lbnRzIFwKK3NwZWNpZmllZCBieSBhcHBsaWNhdGlvbnMuIFwKK0ZvbnRjb25maWcgaXMgbm90IGEgcmFzdGVyaXphdGlvbiBsaWJyYXJ5LCBub3IgZG9lcyBpdCBpbXBvc2UgYSBcCitwYXJ0aWN1bGFyIHJhc3Rlcml6YXRpb24gbGlicmFyeSBvbiB0aGUgYXBwbGljYXRpb24uIFRoZSBYLXNwZWNpZmljIFwKK2xpYnJhcnkgJ1hmdCcgdXNlcyBmb250Y29uZmlnIGFsb25nIHdpdGggZnJlZXR5cGUgdG8gc3BlY2lmeSBhbmQgXAorcmFzdGVyaXplIGZvbnRzLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mb250Y29uZmlnLm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9Zm9udGNvbmZpZyIKKworTElDRU5TRSA9ICJNSVQtc3R5bGUgJiBNSVQgJiBQRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdhMDQ0OWU5YmM1MzcwNDAyYTk0YzAwMjA0YmVjYTNkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9mY2ZyZWV0eXBlLmM7ZW5kbGluZT00NTttZDU9NWQ5NTEzZTMxOTZhMWZiZmRmYTk0MDUxYzA5ZGZjODQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2ZjY2FjaGUuYztiZWdpbmxpbmU9MTM2NztlbmRsaW5lPTEzODI7bWQ1PTAzMjZjZmViNGE3MzMzZGQ0ZGQyNWZiYmM0YjlmMjdmIgorCitTRUNUSU9OID0gImxpYnMiCisKK0RFUEVORFMgPSAiZXhwYXQgZnJlZXR5cGUgemxpYiBncGVyZi1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL2ZvbnRjb25maWcub3JnL3JlbGVhc2UvZm9udGNvbmZpZy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcmV2ZXJ0LXN0YXRpYy1wa2djb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zcmMtZmN4bWwuYy1hdm9pZC1kb3VibGUtZnJlZS1vZi1maWxlbmFtZS5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjAwZTc0OGM2N2ZhZDExZTcwNTdhNzFlZDM4NWU4YmRiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA2NGI5ZWJmMDYwYzllNzcwMTE3MzNhYzlkYzBlMmNlOTI4NzBiNTc0Y2NhMjQwNWUxMWY1MzUzYTY4M2MzMzQiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImZvbnRjb25maWctKD9QPHB2ZXI+XGQrXC5cZCtcLig/ITlcZCspXGQrKSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgIyB3b3JrIGFyb3VuZCBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDEyODAKKyAgICBybSAtZiAke1N9L3NyYy9mY29ianNoYXNoLmggJHtTfS9zcmMvZmNvYmpzaGFzaC5ncGVyZgorfQorCitQQUNLQUdFUyA9KyAiZm9udGNvbmZpZy11dGlscyIKK0ZJTEVTXyR7UE59ID0rICIke2RhdGFkaXJ9L3htbC8qIgorRklMRVNfZm9udGNvbmZpZy11dGlscyA9ICIke2JpbmRpcn0vKiIKKworIyBXb3JrIGFyb3VuZCBwYXN0IGJyZWFrYWdlIGluIGRlYmlhbi5iYmNsYXNzCitSUFJPVklERVNfZm9udGNvbmZpZy11dGlscyA9ICJsaWJmb250Y29uZmlnLXV0aWxzIgorUlJFUExBQ0VTX2ZvbnRjb25maWctdXRpbHMgPSAibGliZm9udGNvbmZpZy11dGlscyIKK1JDT05GTElDVFNfZm9udGNvbmZpZy11dGlscyA9ICJsaWJmb250Y29uZmlnLXV0aWxzIgorREVCSUFOX05PQVVUT05BTUVfZm9udGNvbmZpZy11dGlscyA9ICIxIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcmVsYXRpdmVfc3ltbGlua3MKKworRk9OVENPTkZJR19DQUNIRV9ESVIgPz0gIiR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvZm9udGNvbmZpZyIKKworIyBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBhZGRpdGlvbmFsIGRpcmVjdG9yaWVzCisjIC91c3Ivc2hhcmUvZm9udHMgaXMgYWxyZWFkeSBpbmNsdWRlZCBieSBkZWZhdWx0ICh5b3UgY2FuIGNoYW5nZSBpdCB3aXRoIC0td2l0aC1kZWZhdWx0LWZvbnRzKQorRk9OVENPTkZJR19GT05UX0RJUlMgPz0gIm5vIgorCitFWFRSQV9PRUNPTkYgPSAiIC0tZGlzYWJsZS1kb2NzIC0td2l0aC1kZWZhdWx0LWZvbnRzPSR7ZGF0YWRpcn0vZm9udHMgLS13aXRoLWNhY2hlLWRpcj0ke0ZPTlRDT05GSUdfQ0FDSEVfRElSfSAtLXdpdGgtYWRkLWZvbnRzPSR7Rk9OVENPTkZJR19GT05UX0RJUlN9IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mcmVldHlwZS9mcmVldHlwZV8yLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlODhlODQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mcmVldHlwZS9mcmVldHlwZV8yLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIkZyZWV0eXBlIGZvbnQgcmVuZGVyaW5nIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJGcmVlVHlwZSBpcyBhIHNvZnR3YXJlIGZvbnQgZW5naW5lIHRoYXQgaXMgZGVzaWduZWQgdG8gYmUgc21hbGwsIGVmZmljaWVudCwgXAotaGlnaGx5IGN1c3RvbWl6YWJsZSwgYW5kIHBvcnRhYmxlIHdoaWxlIGNhcGFibGUgb2YgcHJvZHVjaW5nIGhpZ2gtcXVhbGl0eSBvdXRwdXQgKGdseXBoIFwKLWltYWdlcykuIEl0IGNhbiBiZSB1c2VkIGluIGdyYXBoaWNzIGxpYnJhcmllcywgZGlzcGxheSBzZXJ2ZXJzLCBmb250IGNvbnZlcnNpb24gdG9vbHMsIHRleHQgXAotaW1hZ2UgZ2VuZXJhdGlvbiB0b29scywgYW5kIG1hbnkgb3RoZXIgcHJvZHVjdHMgYXMgd2VsbC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWV0eXBlLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vc2F2YW5uYWgubm9uZ251Lm9yZy9idWdzLz9ncm91cD1mcmVldHlwZSIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJGcmVlVHlwZSB8IEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvTElDRU5TRS5UWFQ7bWQ1PTRhZjYyMjE1MDZmMjAyNzc0ZWY3NGY2NDkzMjg3OGExIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvRlRMLlRYVDttZDU9MTNiMjU0MTMyNzRjOWIzYjA5YjYzZTQwMjgyMTZmZjQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jcy9HUEx2Mi5UWFQ7bWQ1PThlZjM4MDQ3NmY2NDJjMjBlYmY0MGZlY2IwYWRkMmVjIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9mcmVldHlwZS9mcmVldHlwZS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3VzZS1yaWdodC1saWJ0b29sLnBhdGNoIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9mcmVldHlwZS9maWxlcy9mcmVldHlwZTIvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjQxM2FjM2VhZjUwOGFkYTAxOWM2Mzk1OWVhODFhOTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTNjNjAzZWQ4NGMzYzI0OTVmOWM5MzMxZmU2YmJhM2JiMGVlNjVlMDZlYzMzMWUwYTBmYjUyMTU4MjkxYjQwYiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZy1kaXNhYmxlZCBtdWx0aWxpYl9oZWFkZXIKLQotIyBBZGFwdCBhdXRvdG9vbHMgdG8gd29yayB3aXRoIHRoZSBtaW5pbWFsIGF1dG9jb25mIHVzYWdlIGluIGZyZWV0eXBlCi1BVVRPVE9PTFNfU0NSSVBUX1BBVEggPSAiJHtTfS9idWlsZHMvdW5peCIKLUNPTkZJR1VSRV9TQ1JJUFQgPSAiJHtTfS9jb25maWd1cmUiCi1FWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YXV0b2hlYWRlciAtLWV4Y2x1ZGU9YXV0b21ha2UiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJ6bGliIgotCi1QQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnppcDIsLS13aXRob3V0LWJ6aXAyLGJ6aXAyIgotIyBoYXJmYnV6eiByZXN1bHRzIGluIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBzbyBlbmFibGluZyBpcyBub24tdHJpdmlhbAotUEFDS0FHRUNPTkZJR1toYXJmYnV6el0gPSAiLS13aXRoLWhhcmZidXp6LC0td2l0aG91dC1oYXJmYnV6eixoYXJmYnV6eiIKLVBBQ0tBR0VDT05GSUdbcGl4bWFwXSA9ICItLXdpdGgtcG5nLC0td2l0aG91dC1wbmcsbGlicG5nIgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliIgotCi1FWFRSQV9PRUNPTkYgPSAiQ0NfQlVJTEQ9JyR7QlVJTERfQ0N9JyIKLQotVEFSR0VUX0NQUEZMQUdTICs9ICItRF9GSUxFX09GRlNFVF9CSVRTPTY0IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlvZV9tdWx0aWxpYl9oZWFkZXIgZnJlZXR5cGUyL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oCi19Ci0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vZnJlZXR5cGUtY29uZmlnIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhMDU5MTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuOS5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIkZyZWV0eXBlIGZvbnQgcmVuZGVyaW5nIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJGcmVlVHlwZSBpcyBhIHNvZnR3YXJlIGZvbnQgZW5naW5lIHRoYXQgaXMgZGVzaWduZWQgdG8gYmUgc21hbGwsIGVmZmljaWVudCwgXAoraGlnaGx5IGN1c3RvbWl6YWJsZSwgYW5kIHBvcnRhYmxlIHdoaWxlIGNhcGFibGUgb2YgcHJvZHVjaW5nIGhpZ2gtcXVhbGl0eSBvdXRwdXQgKGdseXBoIFwKK2ltYWdlcykuIEl0IGNhbiBiZSB1c2VkIGluIGdyYXBoaWNzIGxpYnJhcmllcywgZGlzcGxheSBzZXJ2ZXJzLCBmb250IGNvbnZlcnNpb24gdG9vbHMsIHRleHQgXAoraW1hZ2UgZ2VuZXJhdGlvbiB0b29scywgYW5kIG1hbnkgb3RoZXIgcHJvZHVjdHMgYXMgd2VsbC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWV0eXBlLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vc2F2YW5uYWgubm9uZ251Lm9yZy9idWdzLz9ncm91cD1mcmVldHlwZSIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJGcmVlVHlwZSB8IEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvTElDRU5TRS5UWFQ7bWQ1PTRhZjYyMjE1MDZmMjAyNzc0ZWY3NGY2NDkzMjg3OGExIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvRlRMLlRYVDttZDU9OWYzN2I0ZTZhZmEzZmVmOWRiYTg5MzJiMTZiZDNmOTcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jcy9HUEx2Mi5UWFQ7bWQ1PThlZjM4MDQ3NmY2NDJjMjBlYmY0MGZlY2IwYWRkMmVjIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9mcmVldHlwZS9mcmVldHlwZS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3VzZS1yaWdodC1saWJ0b29sLnBhdGNoIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9mcmVldHlwZS9maWxlcy9mcmVldHlwZTIvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiZnJlZXR5cGUtKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTEzYzQwM2MxMTAwMTZmZGM3ZTUzNzIxNmE2NDJiMWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTZmZmJhM2M4Y2VmOTNmNTU3ZDFmNzY3ZDdiYzNkZWU4NjBhYzdhM2FhZmY1ODhhNTIxZTA4MWJjMzZmNGM4YSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZy1kaXNhYmxlZCBtdWx0aWxpYl9oZWFkZXIKKworIyBBZGFwdCBhdXRvdG9vbHMgdG8gd29yayB3aXRoIHRoZSBtaW5pbWFsIGF1dG9jb25mIHVzYWdlIGluIGZyZWV0eXBlCitBVVRPVE9PTFNfU0NSSVBUX1BBVEggPSAiJHtTfS9idWlsZHMvdW5peCIKK0NPTkZJR1VSRV9TQ1JJUFQgPSAiJHtTfS9jb25maWd1cmUiCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YXV0b2hlYWRlciAtLWV4Y2x1ZGU9YXV0b21ha2UiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJ6bGliIgorCitQQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnppcDIsLS13aXRob3V0LWJ6aXAyLGJ6aXAyIgorIyBoYXJmYnV6eiByZXN1bHRzIGluIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBzbyBlbmFibGluZyBpcyBub24tdHJpdmlhbAorUEFDS0FHRUNPTkZJR1toYXJmYnV6el0gPSAiLS13aXRoLWhhcmZidXp6LC0td2l0aG91dC1oYXJmYnV6eixoYXJmYnV6eiIKK1BBQ0tBR0VDT05GSUdbcGl4bWFwXSA9ICItLXdpdGgtcG5nLC0td2l0aG91dC1wbmcsbGlicG5nIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliIgorCitFWFRSQV9PRUNPTkYgPSAiQ0NfQlVJTEQ9JyR7QlVJTERfQ0N9JyIKKworVEFSR0VUX0NQUEZMQUdTICs9ICItRF9GSUxFX09GRlNFVF9CSVRTPTY0IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlvZV9tdWx0aWxpYl9oZWFkZXIgZnJlZXR5cGUyL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oCit9CisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vZnJlZXR5cGUtY29uZmlnIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZzdGVzdHMvZnN0ZXN0c19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZzdGVzdHMvZnN0ZXN0c19naXQuYmIKaW5kZXggOWUwOWNkMi4uNjlmMjE3OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mc3Rlc3RzL2ZzdGVzdHNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnN0ZXN0cy9mc3Rlc3RzX2dpdC5iYgpAQCAtOCw3ICs4LDcgQEAKIFBWID0gIjAuMStnaXQke1NSQ1BWfSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy8ke0JQTn0iCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vdGVzdC1wYW5nby1nZGsuYztlbmRsaW5lPTI0O21kNT0xZWU3NGVjODUxZWNkYTU3ZWI3YWM2Y2MxODBmNzY1NSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9nbGV3L2dsZXdfMi4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJhYjc1Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLVNVTU1BUlkgPSAiT3BlbkdMIGV4dGVuc2lvbiBsb2FkaW5nIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJUaGUgT3BlbkdMIEV4dGVuc2lvbiBXcmFuZ2xlciBMaWJyYXJ5IChHTEVXKSBpcyBhIGNyb3NzLXBsYXRmb3JtIG9wZW4tc291cmNlIEMvQysrIGV4dGVuc2lvbiBsb2FkaW5nIGxpYnJhcnkuIgotSE9NRVBBR0UgPSAiaHR0cDovL2dsZXcuc291cmNlZm9yZ2UubmV0LyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD02NzU4NiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTJhYzI1MTU1OGRlNjg1YzZiOTQ3OGQ4OWJlMzE0OWMyIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2dsZXcvZ2xldy8ke1BWfS9nbGV3LSR7UFZ9LnRneiBcCi0gICAgICAgICAgIGZpbGU6Ly9uby1zdHJpcC5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjJhMmNkN2M5OGYxMzg1NGQyZmNkZGFlMGQyYjIwNDExIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM1NzJjMzBhNGU2NDY4OWMzNDJiYTE2MjQxMzBhYzk4OTM2ZDdhZjkwYzMxMDNmOWNlMTJiOGEwYzU3MzY3NjQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2dsZXcvZmlsZXMvZ2xldyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9nbGV3Lyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCi0KLWluaGVyaXQgbGliX3BhY2thZ2UgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgotCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdvcGVuZ2wnLCAnZWdsLWdsZXMyJywgZCl9IgotCi0jIFRoZSBvcGVuZ2wgYW5kIGVnbC1YWFggb3B0aW9ucyBhcmUgZXhjbHVzaXZlLCBlbmFibGUgb25seSBvbmUuCi1QQUNLQUdFQ09ORklHW29wZW5nbF0gPSAiU1lTVEVNPSdsaW51eCcsLHZpcnR1YWwvbGlieDExIHZpcnR1YWwvbGliZ2wgbGliZ2x1IGxpYnhleHQgbGlieGkgbGlieG11IgotUEFDS0FHRUNPTkZJR1tlZ2wtZ2xlczJdID0gIlNZU1RFTT0nbGludXgtZWdsJyBHTEVXX05PX0dMVT0nLURHTEVXX05PX0dMVScgTERGTEFHUy5HTD0nLWxFR0wgLWxHTEVTdjInLCx2aXJ0dWFsL2VnbCB2aXJ0dWFsL2xpYmdsZXMyIgotCi1DRkxBR1MgKz0gIi1EX0dOVV9TT1VSQ0UiCi0jIE92ZXJyaWRlIFNZU1RFTSAodmlhIFBBQ0tBR0VDT05GSUdfQ09ORkFSR1MpIHRvIGF2b2lkIGNhbGxpbmcgY29uZmlnLmd1ZXNzLAotIyB3ZSdyZSBjcm9zcy1jb21waWxpbmcuIFBhc3Mgb3VyIENGTEFHUyB2aWEgUE9QVCBhcyB0aGF0J3MgdGhlIG9wdGltaXNhdGlvbgotIyB2YXJpYWJsZSBhbmQgc2FmZWx5IG92ZXJ3cml0dGVuLgotRVhUUkFfT0VNQUtFID0gIiR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gXAotICAgICAgICAgICAgICAgIENDPScke0NDfScgTEQ9JyR7Q0N9JyBTVFJJUD0nJyBcCi0gICAgICAgICAgICAgICAgTERGTEFHUy5FWFRSQT0nJHtMREZMQUdTfScgXAotICAgICAgICAgICAgICAgIFBPUFQ9JyR7Q0ZMQUdTfScgXAotICAgICAgICAgICAgICAgIEdMRVdfUFJFRklYPScke3ByZWZpeH0nIEJJTkRJUj0nJHtiaW5kaXJ9JyBcCi0gICAgICAgICAgICAgICAgTElCRElSPScke2xpYmRpcn0nIElOQ0RJUj0nJHtpbmNsdWRlZGlyfS9HTCcgUEtHRElSPScke2xpYmRpcn0vcGtnY29uZmlnJyIKLQotZG9fY29tcGlsZSgpIHsKLQlvZV9ydW5tYWtlCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLmFsbAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9nbGV3L2dsZXdfMi4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTcyNWUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9nbGV3L2dsZXdfMi4xLjAuYmIKQEAgLTAsMCArMSw0NCBAQAorU1VNTUFSWSA9ICJPcGVuR0wgZXh0ZW5zaW9uIGxvYWRpbmcgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIlRoZSBPcGVuR0wgRXh0ZW5zaW9uIFdyYW5nbGVyIExpYnJhcnkgKEdMRVcpIGlzIGEgY3Jvc3MtcGxhdGZvcm0gb3Blbi1zb3VyY2UgQy9DKysgZXh0ZW5zaW9uIGxvYWRpbmcgbGlicmFyeS4iCitIT01FUEFHRSA9ICJodHRwOi8vZ2xldy5zb3VyY2Vmb3JnZS5uZXQvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2dyb3VwX2lkPTY3NTg2IgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MmFjMjUxNTU4ZGU2ODVjNmI5NDc4ZDg5YmUzMTQ5YzIiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvZ2xldy9nbGV3LyR7UFZ9L2dsZXctJHtQVn0udGd6IFwKKyAgICAgICAgICAgZmlsZTovL25vLXN0cmlwLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYjJhYjEyMzMxMDMzZGRmYWE1MGRjMzkzNDUzNDM5ODAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDRkZTkxZTdlNjc2MzAzOWJjMTE5NDAwOTVjZDljN2Y4ODBiYWJhODIxOTZhNzc2NWY3MjdhYzA1YTk5M2M5NSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZ2xldy9maWxlcy9nbGV3IgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2dsZXcvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspLyIKKworaW5oZXJpdCBsaWJfcGFja2FnZSBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ29wZW5nbCcsICdlZ2wtZ2xlczInLCBkKX0iCisKKyMgVGhlIG9wZW5nbCBhbmQgZWdsLVhYWCBvcHRpb25zIGFyZSBleGNsdXNpdmUsIGVuYWJsZSBvbmx5IG9uZS4KK1BBQ0tBR0VDT05GSUdbb3BlbmdsXSA9ICJTWVNURU09J2xpbnV4JywsdmlydHVhbC9saWJ4MTEgdmlydHVhbC9saWJnbCBsaWJnbHUgbGlieGV4dCBsaWJ4aSBsaWJ4bXUiCitQQUNLQUdFQ09ORklHW2VnbC1nbGVzMl0gPSAiU1lTVEVNPSdsaW51eC1lZ2wnIEdMRVdfTk9fR0xVPSctREdMRVdfTk9fR0xVJyBMREZMQUdTLkdMPSctbEVHTCAtbEdMRVN2MicsLHZpcnR1YWwvZWdsIHZpcnR1YWwvbGliZ2xlczIiCisKK0NGTEFHUyArPSAiLURfR05VX1NPVVJDRSIKKyMgT3ZlcnJpZGUgU1lTVEVNICh2aWEgUEFDS0FHRUNPTkZJR19DT05GQVJHUykgdG8gYXZvaWQgY2FsbGluZyBjb25maWcuZ3Vlc3MsCisjIHdlJ3JlIGNyb3NzLWNvbXBpbGluZy4gUGFzcyBvdXIgQ0ZMQUdTIHZpYSBQT1BUIGFzIHRoYXQncyB0aGUgb3B0aW1pc2F0aW9uCisjIHZhcmlhYmxlIGFuZCBzYWZlbHkgb3ZlcndyaXR0ZW4uCitFWFRSQV9PRU1BS0UgPSAiJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBcCisgICAgICAgICAgICAgICAgQ0M9JyR7Q0N9JyBMRD0nJHtDQ30nIFNUUklQPScnIFwKKyAgICAgICAgICAgICAgICBMREZMQUdTLkVYVFJBPScke0xERkxBR1N9JyBcCisgICAgICAgICAgICAgICAgUE9QVD0nJHtDRkxBR1N9JyBcCisgICAgICAgICAgICAgICAgR0xFV19QUkVGSVg9JyR7cHJlZml4fScgQklORElSPScke2JpbmRpcn0nIFwKKyAgICAgICAgICAgICAgICBMSUJESVI9JyR7bGliZGlyfScgSU5DRElSPScke2luY2x1ZGVkaXJ9L0dMJyBQS0dESVI9JyR7bGliZGlyfS9wa2djb25maWcnIgorCitkb19jb21waWxlKCkgeworCW9lX3J1bm1ha2UKK30KKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwuYWxsCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2hhcmZidXp6L2hhcmZidXp6XzEuNC44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9oYXJmYnV6ei9oYXJmYnV6el8xLjQuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY1ZTVhMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2hhcmZidXp6L2hhcmZidXp6XzEuNC44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotU1VNTUFSWSA9ICJUZXh0IHNoYXBpbmcgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIkhhcmZCdXp6IGlzIGFuIE9wZW5UeXBlIHRleHQgc2hhcGluZyBlbmdpbmUuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9IYXJmQnV6eiIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9SGFyZkJ1enoiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWUwMjFkZDZkZGE2ZmYxZTZiMTA0NDAwMmZjNjYyYjliIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9oYi11Y2RuL0NPUFlJTkc7bWQ1PTk5NGJhMGYxMjk1ZjE1YjRiZGE0OTk5YTViYmVkZGVmIFwKLSIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBjYWlybyBmb250Y29uZmlnIGZyZWV0eXBlIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL2hhcmZidXp6L3JlbGVhc2UvJHtCUH0udGFyLmJ6MiIKLQotU1JDX1VSSVttZDVzdW1dID0gImQxYWE0NDZlMWU2NTcxNzMxMWMxNWQ5YWMwY2YzMWVlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNjZWM0OTMwZmYwYmIyZDBjNDBhZWUyMDMwNzU0NDc5NTRiNjRhOGMyNjk1MjAyNDEzY2M1ZTQyOGM5MDcxMzEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBsaWJfcGFja2FnZSBndGstZG9jCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJpY3UiCi1QQUNLQUdFQ09ORklHW2ljdV0gPSAiLS13aXRoLWljdSwtLXdpdGhvdXQtaWN1LGljdSIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS13aXRoLWNhaXJvIFwKLSAgICAtLXdpdGgtZm9udGNvbmZpZyBcCi0gICAgLS13aXRoLWZyZWV0eXBlIFwKLSAgICAtLXdpdGgtZ2xpYiBcCi0gICAgLS13aXRob3V0LWdyYXBoaXRlMiBcCi0iCi0KLVBBQ0tBR0VTID0rICIke1BOfS1pY3UgJHtQTn0taWN1LWRldiIKLQotRklMRVNfJHtQTn0taWN1ID0gIiR7bGliZGlyfS9saWJoYXJmYnV6ei1pY3Uuc28uKiIKLUZJTEVTXyR7UE59LWljdS1kZXYgPSAiJHtsaWJkaXJ9L2xpYmhhcmZidXp6LWljdS5sYSBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJoYXJmYnV6ei1pY3Uuc28gXAotICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnL2hhcmZidXp6LWljdS5wYyBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9oYXJmYnV6ei9oYXJmYnV6el8xLjcuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaGFyZmJ1enovaGFyZmJ1enpfMS43LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGE5YjAyOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaGFyZmJ1enovaGFyZmJ1enpfMS43LjUuYmIKQEAgLTAsMCArMSwzOSBAQAorU1VNTUFSWSA9ICJUZXh0IHNoYXBpbmcgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIkhhcmZCdXp6IGlzIGFuIE9wZW5UeXBlIHRleHQgc2hhcGluZyBlbmdpbmUuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9IYXJmQnV6eiIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9SGFyZkJ1enoiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWUwMjFkZDZkZGE2ZmYxZTZiMTA0NDAwMmZjNjYyYjliIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9oYi11Y2RuL0NPUFlJTkc7bWQ1PTk5NGJhMGYxMjk1ZjE1YjRiZGE0OTk5YTViYmVkZGVmIFwKKyIKKworREVQRU5EUyA9ICJnbGliLTIuMCBjYWlybyBmb250Y29uZmlnIGZyZWV0eXBlIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL2hhcmZidXp6L3JlbGVhc2UvJHtCUH0udGFyLmJ6MiIKKworU1JDX1VSSVttZDVzdW1dID0gIjE0NjZhYjUxZmM1YWFhNmFmNDA2NTkzNjkzOWNlYzYyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg0NTc0ZTFiMWY2NWNhNjk0Y2I4ZmI2OTA1MzA5NjY1YzAzNjhhZjE4YTMxMjM1N2Y4ZmY4ODZlZTJmMjk1NjMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBsaWJfcGFja2FnZSBndGstZG9jCisKK1BBQ0tBR0VDT05GSUcgPz89ICJpY3UiCitQQUNLQUdFQ09ORklHW2ljdV0gPSAiLS13aXRoLWljdSwtLXdpdGhvdXQtaWN1LGljdSIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS13aXRoLWNhaXJvIFwKKyAgICAtLXdpdGgtZm9udGNvbmZpZyBcCisgICAgLS13aXRoLWZyZWV0eXBlIFwKKyAgICAtLXdpdGgtZ2xpYiBcCisgICAgLS13aXRob3V0LWdyYXBoaXRlMiBcCisiCisKK1BBQ0tBR0VTID0rICIke1BOfS1pY3UgJHtQTn0taWN1LWRldiIKKworRklMRVNfJHtQTn0taWN1ID0gIiR7bGliZGlyfS9saWJoYXJmYnV6ei1pY3Uuc28uKiIKK0ZJTEVTXyR7UE59LWljdS1kZXYgPSAiJHtsaWJkaXJ9L2xpYmhhcmZidXp6LWljdS5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJoYXJmYnV6ei1pY3Uuc28gXAorICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnL2hhcmZidXp6LWljdS5wYyBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMS41LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18xLjUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTg2NDZkMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18xLjUuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLVNVTU1BUlkgPSAiSGFyZHdhcmUgYWNjZWxlcmF0ZWQgSlBFRyBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJsaWJqcGVnLXR1cmJvIGlzIGEgZGVyaXZhdGl2ZSBvZiBsaWJqcGVnIHRoYXQgdXNlcyBTSU1EIGluc3RydWN0aW9ucyAoTU1YLCBTU0UyLCBORU9OKSB0byBhY2NlbGVyYXRlIGJhc2VsaW5lIEpQRUcgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24iCi1IT01FUEFHRSA9ICJodHRwOi8vbGlianBlZy10dXJiby5vcmcvIgotCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2NkanBlZy5oO2VuZGxpbmU9MTM7bWQ1PTA1YmFiN2M3YWQ4OTlkODViZmJhNjBkYTFhMTI3MWYyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2pwZWdsaWIuaDtlbmRsaW5lPTE2O21kNT1mNjdkNzBlNTQ3YTI2NjJjMDc5NzgxYzcyZjg3N2Y3MiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kanBlZy5jO2VuZGxpbmU9MTE7bWQ1PWI5MGI2ZDJiNDExOWY5ZTU4MDdjZDI3M2Y1MjVkMmFmIFwKLSIKLURFUEVORFNfYXBwZW5kX3g4Ni02NF9jbGFzcy10YXJnZXQgPSAiIG5hc20tbmF0aXZlIgotREVQRU5EU19hcHBlbmRfeDg2X2NsYXNzLXRhcmdldCAgICA9ICIgbmFzbS1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmI0OTIzZTI5N2E3ZWFhMjU1ZjA4NTExMDE3YTg4MTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTA5ODk0M2IyNzAzODg3MjdhZTYxZGU4MmFkZWM3M2NmOWYwZGJiMjQwYjNiYzhiMTcyNTk1ZWJmNDA1YjUyOCIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYmpwZWctdHVyYm8vZmlsZXMvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2xpYmpwZWctdHVyYm8vZmlsZXMvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspLyIKLQotUEU9ICIxIgotCi0jIERyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIGpwZWcKLVBST1ZJREVTID0gImpwZWciCi1SUFJPVklERVNfJHtQTn0gKz0gImpwZWciCi1SUkVQTEFDRVNfJHtQTn0gKz0gImpwZWciCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICJqcGVnIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotIyBBZGQgbmFzbS1uYXRpdmUgZGVwZW5kZW5jeSBjb25zaXN0ZW50bHkgZm9yIGFsbCBidWlsZCBhcmNoZXMgaXMgaGFyZAotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0td2l0aG91dC1zaW1kIgotCi0jIFdvcmsgYXJvdW5kIG1pc3NpbmcgeDMyIEFCSSBzdXBwb3J0Ci1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICItLXdpdGhvdXQtc2ltZCIsICIiLCBkKX0iCi0KLSMgV29yayBhcm91bmQgbWlzc2luZyBub24tZmxvYXRpbmcgcG9pbnQgQUJJIHN1cHBvcnQgaW4gTUlQUwotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNSVBTUEtHU0ZYX0ZQVSIsICItbmYiLCAiLS13aXRob3V0LXNpbWQiLCAiIiwgZCl9IgotCi0jIFByb3ZpZGUgYSB3b3JrYXJvdW5kIGlmIEFsdGl2ZWMgdW5pdCBpcyBub3QgcHJlc2VudCBpbiBQUEMKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0X3Bvd2VycGMgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImFsdGl2ZWMiLCAiIiwgIi0td2l0aG91dC1zaW1kIiwgZCl9IgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXRfcG93ZXJwYzY0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJhbHRpdmVjIiwgIiIsICItLXdpdGhvdXQtc2ltZCIsIGQpfSIKLQotUEFDS0FHRVMgPSsgImpwZWctdG9vbHMgbGlidHVyYm9qcGVnIgotCi1ERVNDUklQVElPTl9qcGVnLXRvb2xzID0gIlRoZSBqcGVnLXRvb2xzIHBhY2thZ2UgaW5jbHVkZXMgY2xpZW50IHByb2dyYW1zIHRvIGFjY2VzcyBsaWJqcGVnIGZ1bmN0aW9uYWxpdHkuICBUaGVzZSB0b29scyBhbGxvdyBmb3IgdGhlIGNvbXByZXNzaW9uLCBkZWNvbXByZXNzaW9uLCB0cmFuc2Zvcm1hdGlvbiBhbmQgZGlzcGxheSBvZiBKUEVHIGZpbGVzIGFuZCBiZW5jaG1hcmtpbmcgb2YgdGhlIGxpYmpwZWcgbGlicmFyeS4iCi1GSUxFU19qcGVnLXRvb2xzID0gIiR7YmluZGlyfS8qIgotCi1ERVNDUklQVElPTl9saWJ0dXJib2pwZWcgPSAiQSBTSU1ELWFjY2VsZXJhdGVkIEpQRUcgY29kZWMgd2hpY2ggcHJvdmlkZXMgb25seSBUdXJib0pQRUcgQVBJcyIKLUZJTEVTX2xpYnR1cmJvanBlZyA9ICIke2xpYmRpcn0vbGlidHVyYm9qcGVnLnNvLioiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMS41LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18xLjUuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGE1YWUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMS41LjMuYmIKQEAgLTAsMCArMSw1OSBAQAorU1VNTUFSWSA9ICJIYXJkd2FyZSBhY2NlbGVyYXRlZCBKUEVHIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gImxpYmpwZWctdHVyYm8gaXMgYSBkZXJpdmF0aXZlIG9mIGxpYmpwZWcgdGhhdCB1c2VzIFNJTUQgaW5zdHJ1Y3Rpb25zIChNTVgsIFNTRTIsIE5FT04pIHRvIGFjY2VsZXJhdGUgYmFzZWxpbmUgSlBFRyBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly9saWJqcGVnLXR1cmJvLm9yZy8iCisKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vY2RqcGVnLmg7ZW5kbGluZT0xMzttZDU9ODE4NGJjYzdjNGFjN2I5ZWRjNmE3YmMwMGYyMzFkMGIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vanBlZ2xpYi5oO2VuZGxpbmU9MTY7bWQ1PWY2N2Q3MGU1NDdhMjY2MmMwNzk3ODFjNzJmODc3ZjcyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RqcGVnLmM7ZW5kbGluZT0xMTttZDU9YzU5ZTE5ODExYzAwNmNiMzhmODJkNjQ3NzEzNGQzMTQgXAorIgorREVQRU5EU19hcHBlbmRfeDg2LTY0X2NsYXNzLXRhcmdldCA9ICIgbmFzbS1uYXRpdmUiCitERVBFTkRTX2FwcGVuZF94ODZfY2xhc3MtdGFyZ2V0ICAgID0gIiBuYXNtLW5hdGl2ZSIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3YzgyZjBmNmEzMTMwZWMwNmI4YTRkMGIzMjFjYmNhMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiMjQ4OTBlMmJiNDZlMTJlNzJhNzlmN2U5NjVmNDA5ZjRlMTY0NjZkMDBlMWRkMTVkOTNkNzNlZTZiNTkyNTIzIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGlianBlZy10dXJiby9maWxlcy8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvbGlianBlZy10dXJiby9maWxlcy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgorCitQRT0gIjEiCisKKyMgRHJvcC1pbiByZXBsYWNlbWVudCBmb3IganBlZworUFJPVklERVMgPSAianBlZyIKK1JQUk9WSURFU18ke1BOfSArPSAianBlZyIKK1JSRVBMQUNFU18ke1BOfSArPSAianBlZyIKK1JDT05GTElDVFNfJHtQTn0gKz0gImpwZWciCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCisjIEFkZCBuYXNtLW5hdGl2ZSBkZXBlbmRlbmN5IGNvbnNpc3RlbnRseSBmb3IgYWxsIGJ1aWxkIGFyY2hlcyBpcyBoYXJkCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS13aXRob3V0LXNpbWQiCisKKyMgV29yayBhcm91bmQgbWlzc2luZyB4MzIgQUJJIHN1cHBvcnQKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJteDMyIiwgIi0td2l0aG91dC1zaW1kIiwgIiIsIGQpfSIKKworIyBXb3JrIGFyb3VuZCBtaXNzaW5nIG5vbi1mbG9hdGluZyBwb2ludCBBQkkgc3VwcG9ydCBpbiBNSVBTCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIk1JUFNQS0dTRlhfRlBVIiwgIi1uZiIsICItLXdpdGhvdXQtc2ltZCIsICIiLCBkKX0iCisKKyMgUHJvdmlkZSBhIHdvcmthcm91bmQgaWYgQWx0aXZlYyB1bml0IGlzIG5vdCBwcmVzZW50IGluIFBQQworRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXRfcG93ZXJwYyA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYWx0aXZlYyIsICIiLCAiLS13aXRob3V0LXNpbWQiLCBkKX0iCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldF9wb3dlcnBjNjQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImFsdGl2ZWMiLCAiIiwgIi0td2l0aG91dC1zaW1kIiwgZCl9IgorCitkZWYgZ2V0X2J1aWxkX3RpbWUoZCk6CisgICAgaWYgZC5nZXRWYXIoJ1NPVVJDRV9EQVRFX0VQT0NIJykgIT0gTm9uZToKKyAgICAgICAgaW1wb3J0IGRhdGV0aW1lCisgICAgICAgIHJldHVybiAiIC0td2l0aC1idWlsZC1kYXRlPSIrIGRhdGV0aW1lLmRhdGV0aW1lLmZyb210aW1lc3RhbXAoZmxvYXQoZC5nZXRWYXIoJ1NPVVJDRV9EQVRFX0VQT0NIJykpKS5zdHJmdGltZSgiJVklbSVkIikKKyAgICByZXR1cm4gIiIKKworRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiJHtAZ2V0X2J1aWxkX3RpbWUoZCl9IgorCitQQUNLQUdFUyA9KyAianBlZy10b29scyBsaWJ0dXJib2pwZWciCisKK0RFU0NSSVBUSU9OX2pwZWctdG9vbHMgPSAiVGhlIGpwZWctdG9vbHMgcGFja2FnZSBpbmNsdWRlcyBjbGllbnQgcHJvZ3JhbXMgdG8gYWNjZXNzIGxpYmpwZWcgZnVuY3Rpb25hbGl0eS4gIFRoZXNlIHRvb2xzIGFsbG93IGZvciB0aGUgY29tcHJlc3Npb24sIGRlY29tcHJlc3Npb24sIHRyYW5zZm9ybWF0aW9uIGFuZCBkaXNwbGF5IG9mIEpQRUcgZmlsZXMgYW5kIGJlbmNobWFya2luZyBvZiB0aGUgbGlianBlZyBsaWJyYXJ5LiIKK0ZJTEVTX2pwZWctdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCisKK0RFU0NSSVBUSU9OX2xpYnR1cmJvanBlZyA9ICJBIFNJTUQtYWNjZWxlcmF0ZWQgSlBFRyBjb2RlYyB3aGljaCBwcm92aWRlcyBvbmx5IFR1cmJvSlBFRyBBUElzIgorRklMRVNfbGlidHVyYm9qcGVnID0gIiR7bGliZGlyfS9saWJ0dXJib2pwZWcuc28uKiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZS9kZXRlY3QtZ3N0X2JvX21hcC1fdW5tYXAtYW5kLXVzZS1pdC1vci1hdm9pZC1pdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mva21zY3ViZS9rbXNjdWJlL2RldGVjdC1nc3RfYm9fbWFwLV91bm1hcC1hbmQtdXNlLWl0LW9yLWF2b2lkLWl0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MDU0NDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZS9kZXRlY3QtZ3N0X2JvX21hcC1fdW5tYXAtYW5kLXVzZS1pdC1vci1hdm9pZC1pdC5wYXRjaApAQCAtMCwwICsxLDExNiBAQAorRnJvbSA3NjFiZjk5M2NhNTUwOTVmNDYzODBjMDIzODU4Mzc5MWMxNzk3Mjk1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0RhbmllbD0yMEQ9QzM9QURhej89IDxkYW5pZWwuZGlhekBsaW5hcm8ub3JnPgorRGF0ZTogVHVlLCAxMSBKdWwgMjAxNyAxNDo1MDozNyAtMDUwMAorU3ViamVjdDogW1BBVENIIGttc2N1YmVdIERldGVjdCBnc3RfYm9fbWFwL191bm1hcCBhbmQgdXNlIGl0IChvciBhdm9pZCBpdCkKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworVGhvc2UgZnVuY3Rpb25zIGFyZSBub3QgYXZhaWxhYmxlIG9uIGxpYk1hbGksIHRodXMgYnJlYWtpbmcKK2J1aWxkcyBhbmQgY3JlYXRpbmcgaGF2b2MuCisKK1JlbW92aW5nIHRoZSBzcGVjaWZpYyBwYXJ0cyBvZiB0aGUgY29kZSB0aGF0IGRlYWwgd2l0aAorZ2JtX2JvX21hcCgpIGFuZCBnYm1fYm9fdW5tYXAoKSByZW5kZXJzIHRoZSBrbXNjdWJlIHV0aWxpdHkKK2EgbGl0dGxlIGxlc3MgdXNlZnVsLCBidXQgc3RpbGwgdmFsdWFibGUuCisKK1NpZ25lZC1vZmYtYnk6IERhbmllbCBEw61heiA8ZGFuaWVsLmRpYXpAbGluYXJvLm9yZz4KK0NjOiBSb2IgQ2xhcmsgPHJvYmRjbGFya0BnbWFpbC5jb20+CitSZXZpZXdlZC1ieTogRXJpYyBFbmdlc3Ryb20gPGVyaWMuZW5nZXN0cm9tQGltZ3RlYy5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy9tZXNhLWRldi8yMDE3LUp1bHkvMTYzMDIwLmh0bWxdCistLS0KKyBNYWtlZmlsZS5hbSAgIHwgNSArKysrLQorIGNvbmZpZ3VyZS5hYyAgfCAzICsrKworIGdzdC1kZWNvZGVyLmMgfCA3ICsrKysrKy0KKyBrbXNjdWJlLmMgICAgIHwgNCArKysrCisgNCBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggYTM2MDg3ZC4uYWI0YWRiZiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTQzLDcgKzQzLDYgQEAga21zY3ViZV9TT1VSQ0VTID0gXAorIAljb21tb24uYyBcCisgCWNvbW1vbi5oIFwKKyAJY3ViZS1zbW9vdGguYyBcCistCWN1YmUtdGV4LmMgXAorIAlkcm0tYXRvbWljLmMgXAorIAlkcm0tY29tbW9uLmMgXAorIAlkcm0tY29tbW9uLmggXAorQEAgLTU5LDMgKzU4LDcgQEAga21zY3ViZV9MREFERCArPSAkKEdTVF9MSUJTKQorIGttc2N1YmVfQ0ZMQUdTICs9ICQoR1NUX0NGTEFHUykKKyBrbXNjdWJlX1NPVVJDRVMgKz0gY3ViZS12aWRlby5jIGdzdC1kZWNvZGVyLmMKKyBlbmRpZgorKworK2lmIEVOQUJMRV9HQk1fTUFQCisra21zY3ViZV9TT1VSQ0VTICs9IGN1YmUtdGV4LmMKKytlbmRpZgorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggODM5N2Y3Yi4uYzdmMWY0ZCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNjUsNSArNjUsOCBAQCBpZiB0ZXN0ICJ4JGVuYWJsZV9nYm1fbW9kaWZpZXJzIiA9IHh5ZXM7IHRoZW4KKyAJQUNfREVGSU5FKEhBVkVfR0JNX01PRElGSUVSUywgMSwgW0RlZmluZSBpZiB5b3UgY2FuIHVzZSBHQk0gcHJvcGVydGllcy5dKQorIGZpCisgCisrQUNfQ0hFQ0tfTElCKFtnYm1dLCBbZ2JtX2JvX21hcF0sIFtIQVZFX0dCTV9CT19NQVA9eWVzXSwgW10pCisrQU1fQ09ORElUSU9OQUwoRU5BQkxFX0dCTV9NQVAsIFt0ZXN0ICJ4JEhBVkVfR0JNX0JPX01BUCIgPSAieHllcyJdKQorKworIEFDX0NPTkZJR19GSUxFUyhbTWFrZWZpbGVdKQorIEFDX09VVFBVVAorZGlmZiAtLWdpdCBhL2dzdC1kZWNvZGVyLmMgYi9nc3QtZGVjb2Rlci5jCitpbmRleCAyZDZkNTgxLi5iODQ5ODBlIDEwMDY0NAorLS0tIGEvZ3N0LWRlY29kZXIuYworKysrIGIvZ3N0LWRlY29kZXIuYworQEAgLTMzMiw2ICszMzIsNyBAQCBzZXRfbGFzdF9mcmFtZShzdHJ1Y3QgZGVjb2RlciAqZGVjLCBFR0xJbWFnZSBmcmFtZSwgR3N0U2FtcGxlICpzYW1wKQorIAlkZWMtPmxhc3Rfc2FtcCA9IHNhbXA7CisgfQorIAorKyNpZiBIQVZFX0dCTV9CT19NQVAKKyAvLyBUT0RPIHRoaXMgY291bGQgcHJvYmFibHkgYmUgYSBoZWxwZXIgcmUtdXNlZCBieSBjdWJlLXRleDoKKyBzdGF0aWMgaW50CisgYnVmX3RvX2ZkKGNvbnN0IHN0cnVjdCBnYm0gKmdibSwgaW50IHNpemUsIHZvaWQgKnB0cikKK0BAIC0zNTcsNiArMzU4LDcgQEAgYnVmX3RvX2ZkKGNvbnN0IHN0cnVjdCBnYm0gKmdibSwgaW50IHNpemUsIHZvaWQgKnB0cikKKyAKKyAJcmV0dXJuIGZkOworIH0KKysjZW5kaWYKKyAKKyBzdGF0aWMgRUdMSW1hZ2UKKyBidWZmZXJfdG9faW1hZ2Uoc3RydWN0IGRlY29kZXIgKmRlYywgR3N0QnVmZmVyICpidWYpCitAQCAtNDEwLDEyICs0MTIsMTUgQEAgYnVmZmVyX3RvX2ltYWdlKHN0cnVjdCBkZWNvZGVyICpkZWMsIEdzdEJ1ZmZlciAqYnVmKQorIAorIAlpZiAoaXNfZG1hYnVmX21lbSkgeworIAkJZG1hYnVmX2ZkID0gZHVwKGdzdF9kbWFidWZfbWVtb3J5X2dldF9mZChtZW0pKTsKKy0JfSBlbHNlIHsKKysJfQorKyNpZiBIQVZFX0dCTV9CT19NQVAKKysJZWxzZSB7CisgCQlHc3RNYXBJbmZvIG1hcF9pbmZvOworIAkJZ3N0X2J1ZmZlcl9tYXAoYnVmLCAmbWFwX2luZm8sIEdTVF9NQVBfUkVBRCk7CisgCQlkbWFidWZfZmQgPSBidWZfdG9fZmQoZGVjLT5nYm0sIG1hcF9pbmZvLnNpemUsIG1hcF9pbmZvLmRhdGEpOworIAkJZ3N0X2J1ZmZlcl91bm1hcChidWYsICZtYXBfaW5mbyk7CisgCX0KKysjZW5kaWYKKyAKKyAJaWYgKGRtYWJ1Zl9mZCA8IDApIHsKKyAJCUdTVF9FUlJPUigiY291bGQgbm90IG9idGFpbiBETUFCVUYgRkQiKTsKK2RpZmYgLS1naXQgYS9rbXNjdWJlLmMgYi9rbXNjdWJlLmMKK2luZGV4IDNhMmM0ZGQuLjI3NmRjNTUgMTAwNjQ0CistLS0gYS9rbXNjdWJlLmMKKysrKyBiL2ttc2N1YmUuYworQEAgLTE0Miw3ICsxNDIsMTEgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJZWxzZSBpZiAobW9kZSA9PSBWSURFTykKKyAJCWVnbCA9IGluaXRfY3ViZV92aWRlbyhnYm0sIHZpZGVvKTsKKyAJZWxzZQorKyNpZiBIQVZFX0dCTV9CT19NQVAKKyAJCWVnbCA9IGluaXRfY3ViZV90ZXgoZ2JtLCBtb2RlKTsKKysjZWxzZQorKwkJcHJpbnRmKCJnYm1fYm9fbWFwKCkgc3VwcG9ydCBtaXNzaW5nXG4iKTsKKysjZW5kaWYKKyAKKyAJaWYgKCFlZ2wpIHsKKyAJCXByaW50ZigiZmFpbGVkIHRvIGluaXRpYWxpemUgRUdMXG4iKTsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9rbXNjdWJlL2ttc2N1YmVfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9rbXNjdWJlL2ttc2N1YmVfZ2l0LmJiCmluZGV4IGNhYjY4ZmYuLjViNjRlZDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mva21zY3ViZS9rbXNjdWJlX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZV9naXQuYmIKQEAgLTcsOCArNyw5IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9rbXNjdWJlLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMzttZDU9OGIzMDlkNGVlNjdiNzMxNWZmNzM4MTI3MGRkNjMxZmIiCiAKIFNSQ1JFViA9ICIwZDhkZTRjZTNhMDNmMzZhZjE4MTdmOWIwNTg2ZDEzMmFkMmM1ZDJlIgotU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9tZXNhL2ttc2N1YmU7YnJhbmNoPW1hc3Rlcjtwcm90b2NvbD1naXQiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1NSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvbWVzYS9rbXNjdWJlO2JyYW5jaD1tYXN0ZXI7cHJvdG9jb2w9Z2l0IFwKKyAgICBmaWxlOi8vZGV0ZWN0LWdzdF9ib19tYXAtX3VubWFwLWFuZC11c2UtaXQtb3ItYXZvaWQtaXQucGF0Y2giCitVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHkvQWRkLWZhbGxiYWNrLWRlZmluaXRpb24tZm9yLUVHTC1DQVNULnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eS9BZGQtZmFsbGJhY2stZGVmaW5pdGlvbi1mb3ItRUdMLUNBU1QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5Mjk3MjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eS9BZGQtZmFsbGJhY2stZGVmaW5pdGlvbi1mb3ItRUdMLUNBU1QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1BZGQgZmFsbGJhY2sgZGVmaW5pdGlvbiBmb3IgRUdMX0NBU1QKLQotVGhlIEVHTCBBUEkgdXBkYXRlIGZyb20gZDExMTA0ZiBpbnRyb2R1Y2VkIGEgZGVwZW5kZW5jeSBvbiB0aGUKLUVHTF9DQVNUKCkgbWFjcm8sIHByb3ZpZGVkIGJ5IGFuIHVwZGF0ZWQgZWdscGxhdGZvcm0uaC4gR2l2ZW4gdGhhdCB3ZQotZG9uJ3QgcHJvdmlkZSBlZ2xwbGF0Zm9ybS5oLCBhZGQgYSBmYWxsYmFjayBkZWZpbml0aW9uIGZvciBpZiB3ZSdyZQotYnVpbGRpbmcgYWdhaW5zdCBNZXNhIDE3LjAueCBvciBzaW1pbGFyLgotCi1odHRwczovL2J1Z3MuZ2VudG9vLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIzOTI2Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvbGliZXBveHkvY29tbWl0L2ViZTNhNTNkYjFjMGJiMzRlMWNhOTYzYjk1ZDFmMjIyMTE1ZjkzZjhdCi0KLVNpZ25lZC1vZmYtYnk6IFRvbSBIb2Noc3RlaW4gPHRvbS5ob2Noc3RlaW5AbnhwLmNvbT4KLQotSW5kZXg6IGxpYmVwb3h5LTEuNC4zL3NyYy9nZW5fZGlzcGF0Y2gucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJlcG94eS0xLjQuMy5vcmlnL3NyYy9nZW5fZGlzcGF0Y2gucHkJMjAxNy0wNi0wNiAwNDoyNDoxMy4wMDAwMDAwMDAgLTA1MDAKLSsrKyBsaWJlcG94eS0xLjQuMy9zcmMvZ2VuX2Rpc3BhdGNoLnB5CTIwMTctMTEtMDYgMTI6NDU6NDMuNTk0OTY2NDczIC0wNjAwCi1AQCAtNDkxLDYgKzQ5MSwxNSBAQAotICAgICAgICAgICAgIHNlbGYub3V0bG4oJyNpbmNsdWRlICJlcG94eS9nbC5oIicpCi0gICAgICAgICAgICAgaWYgc2VsZi50YXJnZXQgPT0gImVnbCI6Ci0gICAgICAgICAgICAgICAgIHNlbGYub3V0bG4oJyNpbmNsdWRlICJFR0wvZWdscGxhdGZvcm0uaCInKQotKyAgICAgICAgICAgICAgICAjIEFjY291bnQgZm9yIG9sZGVyIGVnbHBsYXRmb3JtLmgsIHdoaWNoIGRvZXNuJ3QgZGVmaW5lCi0rICAgICAgICAgICAgICAgICMgdGhlIEVHTF9DQVNUIG1hY3JvLgotKyAgICAgICAgICAgICAgICBzZWxmLm91dGxuKCcjaWZuZGVmIEVHTF9DQVNUJykKLSsgICAgICAgICAgICAgICAgc2VsZi5vdXRsbignI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpJykKLSsgICAgICAgICAgICAgICAgc2VsZi5vdXRsbignI2RlZmluZSBFR0xfQ0FTVCh0eXBlLCB2YWx1ZSkgKHN0YXRpY19jYXN0PHR5cGU+KHZhbHVlKSknKQotKyAgICAgICAgICAgICAgICBzZWxmLm91dGxuKCcjZWxzZScpCi0rICAgICAgICAgICAgICAgIHNlbGYub3V0bG4oJyNkZWZpbmUgRUdMX0NBU1QodHlwZSwgdmFsdWUpICgodHlwZSkgKHZhbHVlKSknKQotKyAgICAgICAgICAgICAgICBzZWxmLm91dGxuKCcjZW5kaWYnKQotKyAgICAgICAgICAgICAgICBzZWxmLm91dGxuKCcjZW5kaWYnKQotICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAjIEFkZCBzb21lIHJpZGljdWxvdXMgaW50dHlwZXMuaCByZWRlZmluaXRpb25zIHRoYXQgYXJlCi0gICAgICAgICAgICAgIyBmcm9tIGtocnBsYXRmb3JtLmggYW5kIG5vdCBpbmNsdWRlZCBpbiB0aGUgWE1MLiAgV2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHkvbm8tdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5L25vLXRlc3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyYjZjMWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5L25vLXRlc3RzLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0FkZCBvcHRpb24gdG8gZGlzYWJsZSB0ZXN0cy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvbGliZXBveHkvcHVsbC8xNTgpCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggYjJlYmFlZi4uOTYzMmM3YSAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTI0Miw3ICsyNDIsMTAgQEAgbGliZXBveHlfaW5jID0gWworIAorIHN1YmRpcignaW5jbHVkZS9lcG94eScpCisgc3ViZGlyKCdzcmMnKQorLXN1YmRpcigndGVzdCcpCisrCisraWYgZ2V0X29wdGlvbigndGVzdHMnKQorKyAgc3ViZGlyKCd0ZXN0JykKKytlbmRpZgorIAorIGlmIGdldF9vcHRpb24oJ2RvY3MnKQorICAgZG94eWdlbiA9IGZpbmRfcHJvZ3JhbSgnZG94eWdlbicsIHJlcXVpcmVkOiBmYWxzZSkKK2RpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29uX29wdGlvbnMudHh0CitpbmRleCBiNWQ3Yzk4Li5kYzMwZTY4IDEwMDY0NAorLS0tIGEvbWVzb25fb3B0aW9ucy50eHQKKysrKyBiL21lc29uX29wdGlvbnMudHh0CitAQCAtMTUsMyArMTUsNyBAQCBvcHRpb24oJ3gxMScsCisgICAgICAgIHR5cGU6ICdib29sZWFuJywKKyAgICAgICAgdmFsdWU6IHRydWUsCisgICAgICAgIGRlc2NyaXB0aW9uOiAnRW5hYmxlIFgxMSBzdXBwb3J0IChHTFggb3IgRUdMLVgxMSknKQorK29wdGlvbigndGVzdHMnLAorKyAgICAgICB0eXBlOiAnYm9vbGVhbicsCisrICAgICAgIHZhbHVlOiB0cnVlLAorKyAgICAgICBkZXNjcmlwdGlvbjogJ0J1aWxkIHRoZSB0ZXN0IHN1aXRlJykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS40LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTcyMzIyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS40LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIk9wZW5HTCBmdW5jdGlvbiBwb2ludGVyIG1hbmFnZW1lbnQgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvbGliZXBveHkvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU4ZWY0YzgwZDQwMWUwN2JkOWVlOGI2YjU4Y2Y0NjRiIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9BZGQtZmFsbGJhY2stZGVmaW5pdGlvbi1mb3ItRUdMLUNBU1QucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiYWY0YzNjZTBmYjExNDNiZGM0ZTQzZjg1Njk1YTliZWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGI4MDhhMDZjOTY4NWE2MmZjYTM0YjY4MGFiYjhiYzdmYjJmZGEwNzQ0NzhlMzI5YjA2M2MxZjg3MmI4MjZmNiIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0L2xpYmVwb3h5L3JlbGVhc2VzIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCi0KLURFUEVORFMgPSAidXRpbC1tYWNyb3MiCi0KLVBBQ0tBR0VDT05GSUdbZWdsXSA9ICItLWVuYWJsZS1lZ2wsIC0tZGlzYWJsZS1lZ2wsIHZpcnR1YWwvZWdsIgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLWdseCwgLS1kaXNhYmxlLWdseCwgdmlydHVhbC9saWJ4MTEiCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IGVnbCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS41LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjYTA4NjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNS4wLmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgPSAiT3BlbkdMIGZ1bmN0aW9uIHBvaW50ZXIgbWFuYWdlbWVudCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC9saWJlcG94eS8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NThlZjRjODBkNDAxZTA3YmQ5ZWU4YjZiNThjZjQ2NGIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL25vLXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjYzZmUzODQ3Nzg5MjU4MjU0ZGNkN2UzZmRiOWU3ZjVlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRjOTQ5OTUzOThhNmViZjY5MTYwMGRkYTJlOTY4NWEwY2FjMjYxNDE0MTc1YzJhZGY0NjQ1Y2RmYWI0MmE1ZDUiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC9saWJlcG94eS9yZWxlYXNlcyIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCisKK1BBQ0tBR0VDT05GSUdbZWdsXSA9ICItRGVnbD15ZXMsIC1EZWdsPW5vLCB2aXJ0dWFsL2VnbCIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItRGdseD15ZXMsIC1EZ2x4PW5vLCB2aXJ0dWFsL2xpYngxMSB2aXJ0dWFsL2xpYmdsIgorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSBlZ2wiCisKK0VYVFJBX09FTUVTT04gKz0gIi1EdGVzdHM9ZmFsc2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi8wMDAxLXByZXBlbmQtb3VyLXN5c3Jvb3QtcGF0aC1zby10aGF0LW1ha2UtZmluZHMtb3VyLXdheWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi8wMDAxLXByZXBlbmQtb3VyLXN5c3Jvb3QtcGF0aC1zby10aGF0LW1ha2UtZmluZHMtb3VyLXdheWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmYzg0MTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvMDAwMS1wcmVwZW5kLW91ci1zeXNyb290LXBhdGgtc28tdGhhdC1tYWtlLWZpbmRzLW91ci13YXlsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSBiNDQ4MDhlNDMxMzBkY2QxM2I0M2U1Yjk3OGI5YjI0YWViNGMxMzRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotRGF0ZTogVGh1LCAyMCBPY3QgMjAxNiAxNDo1Nzo1MSArMDIwMAotU3ViamVjdDogW1BBVENIXSBwcmVwZW5kIG91ciBzeXNyb290IHBhdGggc28gdGhhdCBtYWtlIGZpbmRzIG91cgotIHdheWxhbmQtcHJvdG9jb2wgZmlsZXMKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmluIHwgNCArLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDcyNmRlZDMuLjMzNzY2MDAgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTEyMDYsNyArMTIwNiw3IEBAIEFDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS12aWRlby13YXlsYW5kLXF0LXRvdWNoXSwgW1F0V2F5bGFuZCBzZXJ2ZXIgc3VwcG9ydCBmb3IKLSAgICAgICAgICAgICAgICAgV0FZTEFORF9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzIHdheWxhbmQtY2xpZW50IHdheWxhbmQtZWdsIHdheWxhbmQtY3Vyc29yIHhrYmNvbW1vbmAKLSAgICAgICAgICAgICAgICAgV0FZTEFORF9MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgd2F5bGFuZC1jbGllbnQgd2F5bGFuZC1lZ2wgd2F5bGFuZC1jdXJzb3IgeGtiY29tbW9uYAotICAgICAgICAgICAgICAgICBXQVlMQU5EX1NDQU5ORVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9d2F5bGFuZF9zY2FubmVyIHdheWxhbmQtc2Nhbm5lcmAKLS0gICAgICAgICAgICAgICAgV0FZTEFORF9DT1JFX1BST1RPQ09MX0RJUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtY2xpZW50YAotLSAgICAgICAgICAgICAgICBXQVlMQU5EX1BST1RPQ09MU19ESVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9cGtnZGF0YWRpciB3YXlsYW5kLXByb3RvY29sc2AKLSsgICAgICAgICAgICAgICAgV0FZTEFORF9DT1JFX1BST1RPQ09MX0RJUj0ke1dBWUxBTkRfUFJPVE9DT0xTX1NZU1JPT1RfRElSfWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1jbGllbnRgCi0rICAgICAgICAgICAgICAgIFdBWUxBTkRfUFJPVE9DT0xTX0RJUj0ke1dBWUxBTkRfUFJPVE9DT0xTX1NZU1JPT1RfRElSfWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1wcm90b2NvbHNgCi0gICAgICAgICAgICAgICAgIHZpZGVvX3dheWxhbmQ9eWVzCi0gICAgICAgICAgICAgZmkKLSAgICAgICAgIGZpCi0tLSAKLTIuNS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyLzAwMDItQXZvaWQtZmluZGluZy1idWlsZC1ob3N0LXMtd2F5bGFuZC1zY2FubmVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvMDAwMi1Bdm9pZC1maW5kaW5nLWJ1aWxkLWhvc3Qtcy13YXlsYW5kLXNjYW5uZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4MzczMTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvMDAwMi1Bdm9pZC1maW5kaW5nLWJ1aWxkLWhvc3Qtcy13YXlsYW5kLXNjYW5uZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIGFlODc5MDkxY2Y2NWNiNzAyOTNiMzc1ZWM3ZTYxZWQxMmE5NmQ4YTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIgRGVjIDIwMTYgMDk6Mzk6MjUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQXZvaWQgZmluZGluZyBidWlsZCBob3N0J3Mgd2F5bGFuZC1zY2FubmVyCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5pbiB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggMzM3NjYwMC4uMmFhNmVkNCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtMTIwNCw3ICsxMjA0LDcgQEAgQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXZpZGVvLXdheWxhbmQtcXQtdG91Y2hdLCBbUXRXYXlsYW5kIHNlcnZlciBzdXBwb3J0IGZvcgotICAgICAgICAgICAgIGlmICRQS0dfQ09ORklHIC0tZXhpc3RzIHdheWxhbmQtY2xpZW50IHdheWxhbmQtc2Nhbm5lciB3YXlsYW5kLXByb3RvY29scyB3YXlsYW5kLWVnbCB3YXlsYW5kLWN1cnNvciBlZ2wgeGtiY29tbW9uIDsgdGhlbgotICAgICAgICAgICAgICAgICBXQVlMQU5EX0NGTEFHUz1gJFBLR19DT05GSUcgLS1jZmxhZ3Mgd2F5bGFuZC1jbGllbnQgd2F5bGFuZC1lZ2wgd2F5bGFuZC1jdXJzb3IgeGtiY29tbW9uYAotICAgICAgICAgICAgICAgICBXQVlMQU5EX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyB3YXlsYW5kLWNsaWVudCB3YXlsYW5kLWVnbCB3YXlsYW5kLWN1cnNvciB4a2Jjb21tb25gCi0tICAgICAgICAgICAgICAgIFdBWUxBTkRfU0NBTk5FUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT13YXlsYW5kX3NjYW5uZXIgd2F5bGFuZC1zY2FubmVyYAotKyAgICAgICAgICAgICAgICBBQ19QQVRIX1BST0coW1dBWUxBTkRfU0NBTk5FUl0sIFt3YXlsYW5kLXNjYW5uZXJdKQotICAgICAgICAgICAgICAgICBXQVlMQU5EX0NPUkVfUFJPVE9DT0xfRElSPSR7V0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVJ9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9cGtnZGF0YWRpciB3YXlsYW5kLWNsaWVudGAKLSAgICAgICAgICAgICAgICAgV0FZTEFORF9QUk9UT0NPTFNfRElSPSR7V0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVJ9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9cGtnZGF0YWRpciB3YXlsYW5kLXByb3RvY29sc2AKLSAgICAgICAgICAgICAgICAgdmlkZW9fd2F5bGFuZD15ZXMKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvZml4LWJ1aWxkLWZhaWx1cmUtb24tcHBjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvZml4LWJ1aWxkLWZhaWx1cmUtb24tcHBjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTIwYmNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyL2ZpeC1idWlsZC1mYWlsdXJlLW9uLXBwYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vaGcubGlic2RsLm9yZy9TREwvcmV2LzUxODQxODZkNDM2Nl0KLQotQmFja3BvcnQgcGF0Y2ggZnJvbSB1cHN0cmVhbSB0byBmaXggYnVpbGQgZmFpbHVyZXMgb24gcHBjIGFuZCBwcGM2NC4KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSMgSEcgY2hhbmdlc2V0IHBhdGNoCi0jIFVzZXIgU2FtIExhbnRpbmdhIDxzbG91a2VuQGxpYnNkbC5vcmc+Ci0jIERhdGUgMTQ3NzE1OTMxNSAyNTIwMAotIyBOb2RlIElEIDUxODQxODZkNDM2NjE2OTYxN2I0MzRmNWI3MWM2MThhNzAzNWNkZTQKLSMgUGFyZW50ICA3MWQ0MTQ4ZTMyZGU1MDg4YzRiYzJmMDRjMWU1ZGVkNjQ3YTJiZjgyCi1GaXhlZCBidWcgMzQ2NiAtIENhbid0IGJ1aWxkIDIuMC41IG9uIHBwYzY0Ci0KLS9ob21lL2ZlZG9yYS9TREwyLTIuMC41L3NyYy92aWRlby9TRExfYmxpdF9OLmM6IEluIGZ1bmN0aW9uICdjYWxjX3N3aXp6bGUzMic6Ci0vaG9tZS9mZWRvcmEvU0RMMi0yLjAuNS9zcmMvdmlkZW8vU0RMX2JsaXRfTi5jOjEyNzo1OiBlcnJvcjogSVNPIEM5MCBmb3JiaWRzIG1peGVkIGRlY2xhcmF0aW9ucyBhbmQgY29kZSBbLVdlcnJvcj1kZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnRdCi0gICAgIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIHBsdXMgPSBWRUNVSU5UOF9MSVRFUkFMKDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0gICAgIF4KLQotZGlmZiAtciA3MWQ0MTQ4ZTMyZGUgLXIgNTE4NDE4NmQ0MzY2IHNyYy92aWRlby9TRExfYmxpdF9OLmMKLS0tLSBhL3NyYy92aWRlby9TRExfYmxpdF9OLmMJV2VkIE9jdCAxOSAyMToyMjo0MiAyMDE2IC0wNzAwCi0rKysgYi9zcmMvdmlkZW8vU0RMX2JsaXRfTi5jCVNhdCBPY3QgMjIgMTE6MDE6NTUgMjAxNiAtMDcwMAotQEAgLTExOCwxMiArMTE4LDYgQEAKLSAgICAgICAgIDE2LCA4LCAwLCAyNCwKLSAgICAgICAgIDAsIE5VTEwKLSAgICAgfTsKLS0gICAgaWYgKCFzcmNmbXQpIHsKLS0gICAgICAgIHNyY2ZtdCA9ICZkZWZhdWx0X3BpeGVsX2Zvcm1hdDsKLS0gICAgfQotLSAgICBpZiAoIWRzdGZtdCkgewotLSAgICAgICAgZHN0Zm10ID0gJmRlZmF1bHRfcGl4ZWxfZm9ybWF0OwotLSAgICB9Ci0gICAgIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIHBsdXMgPSBWRUNVSU5UOF9MSVRFUkFMKDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDQsIDB4MDQsIDB4MDQsIDB4MDQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDgsIDB4MDgsIDB4MDgsIDB4MDgsCi1AQCAtMTM2LDYgKzEzMCwxNCBAQAotICAgICBVaW50MzIgZ21hc2sgPSBSRVNISUZUKHNyY2ZtdC0+R3NoaWZ0KSA8PCAoZHN0Zm10LT5Hc2hpZnQpOwotICAgICBVaW50MzIgYm1hc2sgPSBSRVNISUZUKHNyY2ZtdC0+QnNoaWZ0KSA8PCAoZHN0Zm10LT5Cc2hpZnQpOwotICAgICBVaW50MzIgYW1hc2s7Ci0rCi0rICAgIGlmICghc3JjZm10KSB7Ci0rICAgICAgICBzcmNmbXQgPSAmZGVmYXVsdF9waXhlbF9mb3JtYXQ7Ci0rICAgIH0KLSsgICAgaWYgKCFkc3RmbXQpIHsKLSsgICAgICAgIGRzdGZtdCA9ICZkZWZhdWx0X3BpeGVsX2Zvcm1hdDsKLSsgICAgfQotKwotICAgICAvKiBVc2UgemVybyBmb3IgYWxwaGEgaWYgZWl0aGVyIHN1cmZhY2UgZG9lc24ndCBoYXZlIGFscGhhICovCi0gICAgIGlmIChkc3RmbXQtPkFtYXNrKSB7Ci0gICAgICAgICBhbWFzayA9Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyL2xpbmthZ2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi9saW5rYWdlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDE4NWIxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyL2xpbmthZ2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1XaGVuIGJ1aWxkaW5nIHVzZSB0aGUgbGlidG9vbCBpbnRlcm1lZGlhdGUgLmxvIGZpbGVzIGluc3RlYWQgb2YgZXhwbGljaXRseSB1c2luZwotdGhlIC5vIGZpbGVzLiBVbmRlciBsaWJ0b29sIGZvby5sbyBpcyB0aGUgbGlidG9vbCBpbnRlcm1lZGlhdGUgd3JhcHBlciwgZm9vLm8gaXMKLWEgc3RhdGljIGJ1aWxkLCBhbmQgLmxpYnMvZm9vLm8gaXMgYSBzaGFyZWQgYnVpbGQuCi0KLUlmIHN0YXRpYyBsaWJyYXJpZXMgaGF2ZSBiZWVuIGRpc2FibGVkIGdsb2JhbGx5IHRoZW4gbGlidG9vbCB3b24ndCBnZW5lcmF0ZSB0aGVtCi1hbmQgZXhwbGljaXQgcmVmZXJlbmNlcyB0byBmb28ubyB3b24ndCBiZSBzYXRpc2ZpZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotUlAKLTIwMTYvMS8xNgotCi0KLUluZGV4OiBTREwyLTIuMC40L2NvbmZpZ3VyZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFNETDItMi4wLjQub3JpZy9jb25maWd1cmUuaW4KLSsrKyBTREwyLTIuMC40L2NvbmZpZ3VyZS5pbgotQEAgLTM0NjQsMjMgKzM0NjQsMjMgQEAgZG9uZQotIAotIFZFUlNJT05fT0JKRUNUUz1gZWNobyAkVkVSU0lPTl9TT1VSQ0VTYAotIFZFUlNJT05fREVQRU5EUz1gZWNobyAkVkVSU0lPTl9TT1VSQ0VTYAotLVZFUlNJT05fT0JKRUNUUz1gZWNobyAiJFZFUlNJT05fT0JKRUNUUyIgfCBzZWQgJ3MsW1teIF1dKi9cKFtbXiBdXSpcKVwucmMsJChvYmplY3RzKS9cMS5vLGcnYAotK1ZFUlNJT05fT0JKRUNUUz1gZWNobyAiJFZFUlNJT05fT0JKRUNUUyIgfCBzZWQgJ3MsW1teIF1dKi9cKFtbXiBdXSpcKVwucmMsJChvYmplY3RzKS9cMS5sbyxnJ2AKLSBWRVJTSU9OX0RFUEVORFM9YGVjaG8gIiRWRVJTSU9OX0RFUEVORFMiIHwgc2VkICJzLFxcKFtbXiBdXSpcXCkvXFwoW1teIF1dKlxcKVxcLnJjLFxcXFwKLS1cXCQob2JqZWN0cykvXFwyLm86IFxcMS9cXDIucmNcXFxcCi0rXFwkKG9iamVjdHMpL1xcMi5sbzogXFwxL1xcMi5yY1xcXFwKLSAJXFwkKFdJTkRSRVMpIFxcJDwgXFwkQCxnImAKLSAKLSBTRExNQUlOX09CSkVDVFM9YGVjaG8gJFNETE1BSU5fU09VUkNFU2AKLSBTRExNQUlOX0RFUEVORFM9YGVjaG8gJFNETE1BSU5fU09VUkNFU2AKLS1TRExNQUlOX09CSkVDVFM9YGVjaG8gIiRTRExNQUlOX09CSkVDVFMiIHwgc2VkICdzLFtbXiBdXSovXChbW14gXV0qXClcLmMsJChvYmplY3RzKS9cMS5vLGcnYAotK1NETE1BSU5fT0JKRUNUUz1gZWNobyAiJFNETE1BSU5fT0JKRUNUUyIgfCBzZWQgJ3MsW1teIF1dKi9cKFtbXiBdXSpcKVwuYywkKG9iamVjdHMpL1wxLmxvLGcnYAotIFNETE1BSU5fREVQRU5EUz1gZWNobyAiJFNETE1BSU5fREVQRU5EUyIgfCBzZWQgInMsXFwoW1teIF1dKlxcKS9cXChbW14gXV0qXFwpXFwuYyxcXFxcCi0tXFwkKG9iamVjdHMpL1xcMi5vOiBcXDEvXFwyLmNcXFxcCi0rXFwkKG9iamVjdHMpL1xcMi5sbzogXFwxL1xcMi5jXFxcXAotIAlcXCQoUlVOX0NNRF9DQylcXCQoTElCVE9PTCkgLS10YWc9Q0MgLS1tb2RlPWNvbXBpbGUgXFwkKENDKSBcXCQoQ0ZMQUdTKSBcXCQoRVhUUkFfQ0ZMQUdTKSAkREVQRU5ERU5DWV9UUkFDS0lOR19PUFRJT05TIC1jIFxcJDwgLW8gXFwkQCxnImAKLSAKLSBTRExURVNUX09CSkVDVFM9YGVjaG8gJFNETFRFU1RfU09VUkNFU2AKLSBTRExURVNUX0RFUEVORFM9YGVjaG8gJFNETFRFU1RfU09VUkNFU2AKLS1TRExURVNUX09CSkVDVFM9YGVjaG8gIiRTRExURVNUX09CSkVDVFMiIHwgc2VkICdzLFtbXiBdXSovXChbW14gXV0qXClcLmMsJChvYmplY3RzKS9cMS5vLGcnYAotK1NETFRFU1RfT0JKRUNUUz1gZWNobyAiJFNETFRFU1RfT0JKRUNUUyIgfCBzZWQgJ3MsW1teIF1dKi9cKFtbXiBdXSpcKVwuYywkKG9iamVjdHMpL1wxLmxvLGcnYAotIFNETFRFU1RfREVQRU5EUz1gZWNobyAiJFNETFRFU1RfREVQRU5EUyIgfCBzZWQgInMsXFwoW1teIF1dKlxcKS9cXChbW14gXV0qXFwpXFwuYyxcXFxcCi0tXFwkKG9iamVjdHMpL1xcMi5vOiBcXDEvXFwyLmNcXFxcCi0rXFwkKG9iamVjdHMpL1xcMi5sbzogXFwxL1xcMi5jXFxcXAotIAlcXCQoUlVOX0NNRF9DQylcXCQoTElCVE9PTCkgLS10YWc9Q0MgLS1tb2RlPWNvbXBpbGUgXFwkKENDKSBcXCQoQ0ZMQUdTKSBcXCQoRVhUUkFfQ0ZMQUdTKSAkREVQRU5ERU5DWV9UUkFDS0lOR19PUFRJT05TIC1jIFxcJDwgLW8gXFwkQCxnImAKLSAKLSAjIFNldCBydW50aW1lIHNoYXJlZCBsaWJyYXJ5IHBhdGhzIGFzIG5lZWRlZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDJfMi4wLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMl8yLjAuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTJkM2FhZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMl8yLjAuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLVNVTU1BUlkgPSAiU2ltcGxlIERpcmVjdE1lZGlhIExheWVyIgotREVTQ1JJUFRJT04gPSAiU2ltcGxlIERpcmVjdE1lZGlhIExheWVyIGlzIGEgY3Jvc3MtcGxhdGZvcm0gbXVsdGltZWRpYSBcCi1saWJyYXJ5IGRlc2lnbmVkIHRvIHByb3ZpZGUgbG93IGxldmVsIGFjY2VzcyB0byBhdWRpbywga2V5Ym9hcmQsIG1vdXNlLCBcCi1qb3lzdGljaywgM0QgaGFyZHdhcmUgdmlhIE9wZW5HTCwgYW5kIDJEIHZpZGVvIGZyYW1lYnVmZmVyLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGlic2RsLm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmxpYnNkbC5vcmcvIgotCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiWmxpYiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT1iMjMwNGFkN2U5MTcxMTAyNzU5MGQzZjEwMmE3NTRiNyIKLQotUFJPVklERVMgPSAidmlydHVhbC9saWJzZGwyIgotCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZXNkayA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd2aXJ0dWFsL25hdGl2ZXNkay1saWJ4MTEgbmF0aXZlc2RrLWxpYnhyYW5kciBuYXRpdmVzZGstbGlieHJlbmRlciBuYXRpdmVzZGstbGlieGV4dCcsICcnLCBkKX0iCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vd3d3LmxpYnNkbC5vcmcvcmVsZWFzZS9TREwyLSR7UFZ9LnRhci5neiBcCi0gICAgZmlsZTovL2xpbmthZ2UucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLXByZXBlbmQtb3VyLXN5c3Jvb3QtcGF0aC1zby10aGF0LW1ha2UtZmluZHMtb3VyLXdheWwucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLUF2b2lkLWZpbmRpbmctYnVpbGQtaG9zdC1zLXdheWxhbmQtc2Nhbm5lci5wYXRjaCBcCi0gICAgZmlsZTovL2ZpeC1idWlsZC1mYWlsdXJlLW9uLXBwYy5wYXRjaCBcCi0iCi0KLVMgPSAiJHtXT1JLRElSfS9TREwyLSR7UFZ9IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDQwNTU0MjRkNTU2YjRhOTA4YWE3NmZhZDYzYWJkM2MiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDQyMDM4Y2Y1NTk2NTk2OWYyZmYwNmQ5NzYwMzE4MTNkZTY0M2FmOWM5ZWRjOWUzMzFiZDc2MWMyNDJlODc4NSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgYmluY29uZmlnIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLW9zcyAtLWRpc2FibGUtZXNkIC0tZGlzYWJsZS1hcnRzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtZGlza2F1ZGlvIC0tZGlzYWJsZS1uYXMgLS1kaXNhYmxlLWVzZC1zaGFyZWQgLS1kaXNhYmxlLWVzZHRlc3QgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS12aWRlby1kdW1teSBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtcHRocmVhZHMgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXNkbC1kbG9wZW4gXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aCBcCi0gICAgICAgICAgICAgICAgV0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVI9JHtSRUNJUEVfU1lTUk9PVH0iCi0KLSMgb3BlbmdsIHBhY2thZ2Vjb25maWcgZmFjdG9yZWQgb3V0IHRvIG1ha2UgaXQgZWFzeSBmb3IgZGlzdHJvcwotIyBhbmQgQlNQIGxheWVycyB0byBwaWNrIGVpdGhlciAoZGVza3RvcCkgb3BlbmdsLCBnbGVzMiwgb3Igbm8gR0wKLVBBQ0tBR0VDT05GSUdfR0wgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsIGQpfSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCi0gICAgJHtQQUNLQUdFQ09ORklHX0dMfSBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWxzYSBkaXJlY3RmYiBwdWxzZWF1ZGlvIHgxMScsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ3dheWxhbmQgZ2xlczInLCAnJywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbYWxzYV0gICAgICAgPSAiLS1lbmFibGUtYWxzYSAtLWRpc2FibGUtYWxzYXRlc3QsLS1kaXNhYmxlLWFsc2EsYWxzYS1saWIsIgotUEFDS0FHRUNPTkZJR1tkaXJlY3RmYl0gICA9ICItLWVuYWJsZS12aWRlby1kaXJlY3RmYiwtLWRpc2FibGUtdmlkZW8tZGlyZWN0ZmIsZGlyZWN0ZmIiCi1QQUNLQUdFQ09ORklHW2dsZXMyXSAgICAgID0gIi0tZW5hYmxlLXZpZGVvLW9wZW5nbGVzLC0tZGlzYWJsZS12aWRlby1vcGVuZ2xlcyx2aXJ0dWFsL2xpYmdsZXMyIgotUEFDS0FHRUNPTkZJR1tvcGVuZ2xdICAgICA9ICItLWVuYWJsZS12aWRlby1vcGVuZ2wsLS1kaXNhYmxlLXZpZGVvLW9wZW5nbCx2aXJ0dWFsL2xpYmdsIgotUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItLWVuYWJsZS1wdWxzZWF1ZGlvLC0tZGlzYWJsZS1wdWxzZWF1ZGlvLHB1bHNlYXVkaW8iCi1QQUNLQUdFQ09ORklHW3RzbGliXSAgICAgID0gIi0tZW5hYmxlLWlucHV0LXRzbGliLC0tZGlzYWJsZS1pbnB1dC10c2xpYix0c2xpYiIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gICAgPSAiLS1lbmFibGUtdmlkZW8td2F5bGFuZCwtLWRpc2FibGUtdmlkZW8td2F5bGFuZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIGxpYnhrYmNvbW1vbiIKLVBBQ0tBR0VDT05GSUdbeDExXSAgICAgICAgPSAiLS1lbmFibGUtdmlkZW8teDExLC0tZGlzYWJsZS12aWRlby14MTEsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4cmFuZHIgbGlieHJlbmRlciIKLQotRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1pbmNsdWRlPWFjaW5jbHVkZSAtLWV4Y2x1ZGU9YXV0b2hlYWRlciIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgICAgICMgUmVtb3ZlIG9sZCBsaWJ0b29sIG1hY3Jvcy4KLSAgICAgICAgTUFDUk9TPSJsaWJ0b29sLm00IGx0fm9ic29sZXRlLm00IGx0b3B0aW9ucy5tNCBsdHN1Z2FyLm00IGx0dmVyc2lvbi5tNCIKLSAgICAgICAgZm9yIGkgaW4gJHtNQUNST1N9OyBkbwotICAgICAgICAgICAgICAgcm0gLWYgJHtTfS9hY2luY2x1ZGUvJGkKLSAgICAgICAgZG9uZQotICAgICAgICBleHBvcnQgU1lTUk9PVD0kUEtHX0NPTkZJR19TWVNST09UX0RJUgotfQotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyXzIuMC44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDJfMi4wLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBjZjcwZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyXzIuMC44LmJiCkBAIC0wLDAgKzEsNjUgQEAKK1NVTU1BUlkgPSAiU2ltcGxlIERpcmVjdE1lZGlhIExheWVyIgorREVTQ1JJUFRJT04gPSAiU2ltcGxlIERpcmVjdE1lZGlhIExheWVyIGlzIGEgY3Jvc3MtcGxhdGZvcm0gbXVsdGltZWRpYSBcCitsaWJyYXJ5IGRlc2lnbmVkIHRvIHByb3ZpZGUgbG93IGxldmVsIGFjY2VzcyB0byBhdWRpbywga2V5Ym9hcmQsIG1vdXNlLCBcCitqb3lzdGljaywgM0QgaGFyZHdhcmUgdmlhIE9wZW5HTCwgYW5kIDJEIHZpZGVvIGZyYW1lYnVmZmVyLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGlic2RsLm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmxpYnNkbC5vcmcvIgorCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiWmxpYiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT0wMmVlMjY4MTRkZDA0NGJkNzgzOGFlMjRlMDViODgwZiIKKworUFJPVklERVMgPSAidmlydHVhbC9saWJzZGwyIgorCitERVBFTkRTX2NsYXNzLW5hdGl2ZXNkayA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd2aXJ0dWFsL25hdGl2ZXNkay1saWJ4MTEgbmF0aXZlc2RrLWxpYnhyYW5kciBuYXRpdmVzZGstbGlieHJlbmRlciBuYXRpdmVzZGstbGlieGV4dCcsICcnLCBkKX0iCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vd3d3LmxpYnNkbC5vcmcvcmVsZWFzZS9TREwyLSR7UFZ9LnRhci5neiBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9TREwyLSR7UFZ9IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzgwMGQ3MDVjZWY3NDJjNmE2MzRmMjAyYzM3ZjI2M2YiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWRjNzdjNTczMDg2NjFkNTc2ZTg0MzM0NGQ4NjM4ZTAyNWE3ODE4YmZmNzNmOGZiZmFiMDljM2M1ZmQwOTJlYyIKKworaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgYmluY29uZmlnIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLW9zcyAtLWRpc2FibGUtZXNkIC0tZGlzYWJsZS1hcnRzIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtZGlza2F1ZGlvIC0tZGlzYWJsZS1uYXMgLS1kaXNhYmxlLWVzZC1zaGFyZWQgLS1kaXNhYmxlLWVzZHRlc3QgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS12aWRlby1kdW1teSBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtcHRocmVhZHMgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXNkbC1kbG9wZW4gXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aCBcCisgICAgICAgICAgICAgICAgIgorCisjIG9wZW5nbCBwYWNrYWdlY29uZmlnIGZhY3RvcmVkIG91dCB0byBtYWtlIGl0IGVhc3kgZm9yIGRpc3Ryb3MKKyMgYW5kIEJTUCBsYXllcnMgdG8gcGljayBlaXRoZXIgKGRlc2t0b3ApIG9wZW5nbCwgZ2xlczIsIG9yIG5vIEdMCitQQUNLQUdFQ09ORklHX0dMID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgICR7UEFDS0FHRUNPTkZJR19HTH0gXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2Fsc2EgZGlyZWN0ZmIgcHVsc2VhdWRpbyB4MTEnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICd3YXlsYW5kIGdsZXMyJywgJycsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW2Fsc2FdICAgICAgID0gIi0tZW5hYmxlLWFsc2EgLS1kaXNhYmxlLWFsc2F0ZXN0LC0tZGlzYWJsZS1hbHNhLGFsc2EtbGliLCIKK1BBQ0tBR0VDT05GSUdbZGlyZWN0ZmJdICAgPSAiLS1lbmFibGUtdmlkZW8tZGlyZWN0ZmIsLS1kaXNhYmxlLXZpZGVvLWRpcmVjdGZiLGRpcmVjdGZiIgorUEFDS0FHRUNPTkZJR1tnbGVzMl0gICAgICA9ICItLWVuYWJsZS12aWRlby1vcGVuZ2xlcywtLWRpc2FibGUtdmlkZW8tb3BlbmdsZXMsdmlydHVhbC9saWJnbGVzMiIKK1BBQ0tBR0VDT05GSUdbb3BlbmdsXSAgICAgPSAiLS1lbmFibGUtdmlkZW8tb3BlbmdsLC0tZGlzYWJsZS12aWRlby1vcGVuZ2wsdmlydHVhbC9saWJnbCIKK1BBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2VhdWRpbywtLWRpc2FibGUtcHVsc2VhdWRpbyxwdWxzZWF1ZGlvIgorUEFDS0FHRUNPTkZJR1t0c2xpYl0gICAgICA9ICItLWVuYWJsZS1pbnB1dC10c2xpYiwtLWRpc2FibGUtaW5wdXQtdHNsaWIsdHNsaWIiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdICAgID0gIi0tZW5hYmxlLXZpZGVvLXdheWxhbmQsLS1kaXNhYmxlLXZpZGVvLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyBsaWJ4a2Jjb21tb24iCitQQUNLQUdFQ09ORklHW3gxMV0gICAgICAgID0gIi0tZW5hYmxlLXZpZGVvLXgxMSwtLWRpc2FibGUtdmlkZW8teDExLHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieHJhbmRyIGxpYnhyZW5kZXIiCisKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi0taW5jbHVkZT1hY2luY2x1ZGUgLS1leGNsdWRlPWF1dG9oZWFkZXIiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICAgICAjIFJlbW92ZSBvbGQgbGlidG9vbCBtYWNyb3MuCisgICAgICAgIE1BQ1JPUz0ibGlidG9vbC5tNCBsdH5vYnNvbGV0ZS5tNCBsdG9wdGlvbnMubTQgbHRzdWdhci5tNCBsdHZlcnNpb24ubTQiCisgICAgICAgIGZvciBpIGluICR7TUFDUk9TfTsgZG8KKyAgICAgICAgICAgICAgIHJtIC1mICR7U30vYWNpbmNsdWRlLyRpCisgICAgICAgIGRvbmUKKyAgICAgICAgZXhwb3J0IFNZU1JPT1Q9JFBLR19DT05GSUdfU1lTUk9PVF9ESVIKK30KKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzEuOC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlsc18xLjguMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzA4MmMxOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzEuOC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotU1VNTUFSWSA9ICJsaWJ2YS11dGlscyBpcyBhIGNvbGxlY3Rpb24gb2YgdXRpbGl0aWVzIGZyb20gbGlidmEgcHJvamVjdCIKLQotREVTQ1JJUFRJT04gPSAibGlidmEtdXRpbHMgaXMgYSBjb2xsZWN0aW9uIG9mIHV0aWxpdGllcyBcCi1hbmQgZXhhbXBsZXMgdG8gZXhlcmNpc2UgVkEtQVBJIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgbGlidmEgXAotcHJvamVjdC5WQS1BUEkgaXMgYW4gb3Blbi1zb3VyY2UgbGlicmFyeSBhbmQgQVBJIHNwZWNpZmljYXRpb24sIFwKLXdoaWNoIHByb3ZpZGVzIGFjY2VzcyB0byBncmFwaGljcyBoYXJkd2FyZSBhY2NlbGVyYXRpb24gY2FwYWJpbGl0aWVzIFwKLWZvciB2aWRlbyBwcm9jZXNzaW5nLiBJdCBjb25zaXN0cyBvZiBhIG1haW4gbGlicmFyeSBhbmQgZHJpdmVyLXNwZWNpZmljIFwKLWFjY2VsZXJhdGlvbiBiYWNrZW5kcyBmb3IgZWFjaCBzdXBwb3J0ZWQgaGFyZHdhcmUgdmVuZG9yIgotCi1IT01FUEFHRSA9ICJodHRwczovLzAxLm9yZy9saW51eG1lZGlhL3ZhYXBpIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vMDFvcmcvbGlidmEtdXRpbHMvaXNzdWVzIgotCi1TRUNUSU9OID0gIngxMSIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjE0OGZjOGFkZjE5ZGM5YWVjMTdjZjljZDI5YTlhNWUiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS8wMW9yZy9saWJ2YS11dGlscy5naXQ7YnJhbmNoPXYxLjgtYnJhbmNoIgotU1JDUkVWID0gIjAxMWM3MDliOThiNTJkYjNiMTBhZWIzNjFkZmVhOWRhNDM5MzAzNjQiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLzAxb3JnL2xpYnZhLXV0aWxzL3JlbGVhc2VzIgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+KFxkKyhcLlxkKykrKSkiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLURFUEVORFMgPSAibGlidmEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotIyBkZXBlbmRzIG9uIGxpYnZhIHdoaWNoIHJlcXVpcmVzIG9wZW5nbAotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieGZpeGVzIgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzIuMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlsc18yLjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODAxOGVhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlsc18yLjEuMC5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gImxpYnZhLXV0aWxzIGlzIGEgY29sbGVjdGlvbiBvZiB1dGlsaXRpZXMgZnJvbSBsaWJ2YSBwcm9qZWN0IgorCitERVNDUklQVElPTiA9ICJsaWJ2YS11dGlscyBpcyBhIGNvbGxlY3Rpb24gb2YgdXRpbGl0aWVzIFwKK2FuZCBleGFtcGxlcyB0byBleGVyY2lzZSBWQS1BUEkgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBsaWJ2YSBcCitwcm9qZWN0LlZBLUFQSSBpcyBhbiBvcGVuLXNvdXJjZSBsaWJyYXJ5IGFuZCBBUEkgc3BlY2lmaWNhdGlvbiwgXAord2hpY2ggcHJvdmlkZXMgYWNjZXNzIHRvIGdyYXBoaWNzIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBjYXBhYmlsaXRpZXMgXAorZm9yIHZpZGVvIHByb2Nlc3NpbmcuIEl0IGNvbnNpc3RzIG9mIGEgbWFpbiBsaWJyYXJ5IGFuZCBkcml2ZXItc3BlY2lmaWMgXAorYWNjZWxlcmF0aW9uIGJhY2tlbmRzIGZvciBlYWNoIHN1cHBvcnRlZCBoYXJkd2FyZSB2ZW5kb3IiCisKK0hPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL2xpbnV4bWVkaWEvdmFhcGkiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS11dGlscy9pc3N1ZXMiCisKK1NFQ1RJT04gPSAieDExIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMTQ4ZmM4YWRmMTlkYzlhZWMxN2NmOWNkMjlhOWE1ZSIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiNjY0OWJlNzAzOTA2MDY2NTFjYjYzNjMyMGJmZDQzYzYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjZhNzc5MGMzZGNjNTY1MzczNzJjOTBhODMwMzZhMzEzNjE5NGE4YjM5N2U4NGU5N2JmOWNjOTI1NGZhMmM1MSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS11dGlscy9yZWxlYXNlcyIKKworREVQRU5EUyA9ICJsaWJ2YSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCisjIGRlcGVuZHMgb24gbGlidmEgd2hpY2ggcmVxdWlyZXMgb3BlbmdsCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4Zml4ZXMiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQsLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMS44LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhXzEuOC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWVkYTg0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMS44LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1TVU1NQVJZID0gIlZpZGVvIEFjY2VsZXJhdGlvbiAoVkEpIEFQSSBmb3IgTGludXgiCi1ERVNDUklQVElPTiA9ICJWaWRlbyBBY2NlbGVyYXRpb24gQVBJIChWQSBBUEkpIGlzIGEgbGlicmFyeSAobGliVkEpIFwKLWFuZCBBUEkgc3BlY2lmaWNhdGlvbiB3aGljaCBlbmFibGVzIGFuZCBwcm92aWRlcyBhY2Nlc3MgdG8gZ3JhcGhpY3MgXAotaGFyZHdhcmUgKEdQVSkgYWNjZWxlcmF0aW9uIGZvciB2aWRlbyBwcm9jZXNzaW5nIG9uIExpbnV4IGFuZCBVTklYIFwKLWJhc2VkIG9wZXJhdGluZyBzeXN0ZW1zLiBBY2NlbGVyYXRlZCBwcm9jZXNzaW5nIGluY2x1ZGVzIHZpZGVvIFwKLWRlY29kaW5nLCB2aWRlbyBlbmNvZGluZywgc3VicGljdHVyZSBibGVuZGluZyBhbmQgcmVuZGVyaW5nLiBUaGUgXAotc3BlY2lmaWNhdGlvbiB3YXMgb3JpZ2luYWxseSBkZXNpZ25lZCBieSBJbnRlbCBmb3IgaXRzIEdNQSAoR3JhcGhpY3MgXAotTWVkaWEgQWNjZWxlcmF0b3IpIHNlcmllcyBvZiBHUFUgaGFyZHdhcmUsIHRoZSBBUEkgaXMgaG93ZXZlciBub3QgXAotbGltaXRlZCB0byBHUFVzIG9yIEludGVsIHNwZWNpZmljIGhhcmR3YXJlLCBhcyBvdGhlciBoYXJkd2FyZSBhbmQgXAotbWFudWZhY3R1cmVycyBjYW4gYWxzbyBmcmVlbHkgdXNlIHRoaXMgQVBJIGZvciBoYXJkd2FyZSBhY2NlbGVyYXRlZCBcCi12aWRlbyBkZWNvZGluZy4iCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL2xpbnV4bWVkaWEvdmFhcGkiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS8wMW9yZy9saWJ2YS9pc3N1ZXMiCi0KLVNFQ1RJT04gPSAieDExIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZTQ4OTQwZjk0YWNiMGFmNTgyZTVlZjAzNTM3ODAwZiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tLzAxb3JnL2xpYnZhLmdpdDtwcm90b2NvbD1odHRwO2JyYW5jaD12MS44LWJyYW5jaCAiCi1TUkNSRVYgPSAiNDU3NDcwOTg3Y2M5ZGY1OTc2Y2U4YzcyZmZkNGJmYmQ5YmFhZjBmOSIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIl4oP1A8cHZlcj4oXGQrKFwuXGQrKSspKSQiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLURFUEVORFMgPSAibGliZHJtIHZpcnR1YWwvbWVzYSB2aXJ0dWFsL2xpYmdsZXMxIHZpcnR1YWwvbGliZ2xlczIgdmlydHVhbC9lZ2wiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKLQotRVhUUkFfT0VDT05GID0gImFjX2N2X3Byb2dfV0FZTEFORF9TQ0FOTkVSPXdheWxhbmQtc2Nhbm5lciIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieGZpeGVzIgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQiCi0KLVBBQ0tBR0VTID0rICIke1BOfS14MTEgJHtQTn0tdHBpICR7UE59LWdseCAke1BOfS1lZ2wgJHtQTn0td2F5bGFuZCIKLQotUkRFUEVORFNfJHtQTn0tdHBpID0rICIke1BOfSIKLVJERVBFTkRTXyR7UE59LXgxMSA9KyAiJHtQTn0iCi1SREVQRU5EU18ke1BOfS1nbHggPSsgIiR7UE59LXgxMSIKLVJERVBFTkRTXyR7UE59LWVnbCA9KyAiJHtQTn0teDExIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9kcmkvLmRlYnVnIgotCi1GSUxFU18ke1BOfS14MTEgPSsgIiR7bGliZGlyfS9saWJ2YS14MTEqJHtTT0xJQlN9IgotRklMRVNfJHtQTn0tdHBpID0rICIke2xpYmRpcn0vbGlidmEtdHBpKiR7U09MSUJTfSIKLUZJTEVTXyR7UE59LWdseCA9KyAiJHtsaWJkaXJ9L2xpYnZhLWdseCoke1NPTElCU30iCi1GSUxFU18ke1BOfS1lZ2wgPSsgIiR7bGliZGlyfS9saWJ2YS1lZ2wqJHtTT0xJQlN9IgotRklMRVNfJHtQTn0td2F5bGFuZCA9KyAiJHtsaWJkaXJ9L2xpYnZhLXdheWxhbmQqJHtTT0xJQlN9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8yLjEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMi4xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNjZjYzMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMi4xLjAuYmIKQEAgLTAsMCArMSw0NiBAQAorU1VNTUFSWSA9ICJWaWRlbyBBY2NlbGVyYXRpb24gKFZBKSBBUEkgZm9yIExpbnV4IgorREVTQ1JJUFRJT04gPSAiVmlkZW8gQWNjZWxlcmF0aW9uIEFQSSAoVkEgQVBJKSBpcyBhIGxpYnJhcnkgKGxpYlZBKSBcCithbmQgQVBJIHNwZWNpZmljYXRpb24gd2hpY2ggZW5hYmxlcyBhbmQgcHJvdmlkZXMgYWNjZXNzIHRvIGdyYXBoaWNzIFwKK2hhcmR3YXJlIChHUFUpIGFjY2VsZXJhdGlvbiBmb3IgdmlkZW8gcHJvY2Vzc2luZyBvbiBMaW51eCBhbmQgVU5JWCBcCitiYXNlZCBvcGVyYXRpbmcgc3lzdGVtcy4gQWNjZWxlcmF0ZWQgcHJvY2Vzc2luZyBpbmNsdWRlcyB2aWRlbyBcCitkZWNvZGluZywgdmlkZW8gZW5jb2RpbmcsIHN1YnBpY3R1cmUgYmxlbmRpbmcgYW5kIHJlbmRlcmluZy4gVGhlIFwKK3NwZWNpZmljYXRpb24gd2FzIG9yaWdpbmFsbHkgZGVzaWduZWQgYnkgSW50ZWwgZm9yIGl0cyBHTUEgKEdyYXBoaWNzIFwKK01lZGlhIEFjY2VsZXJhdG9yKSBzZXJpZXMgb2YgR1BVIGhhcmR3YXJlLCB0aGUgQVBJIGlzIGhvd2V2ZXIgbm90IFwKK2xpbWl0ZWQgdG8gR1BVcyBvciBJbnRlbCBzcGVjaWZpYyBoYXJkd2FyZSwgYXMgb3RoZXIgaGFyZHdhcmUgYW5kIFwKK21hbnVmYWN0dXJlcnMgY2FuIGFsc28gZnJlZWx5IHVzZSB0aGlzIEFQSSBmb3IgaGFyZHdhcmUgYWNjZWxlcmF0ZWQgXAordmlkZW8gZGVjb2RpbmcuIgorCitIT01FUEFHRSA9ICJodHRwczovLzAxLm9yZy9saW51eG1lZGlhL3ZhYXBpIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEvaXNzdWVzIgorCitTRUNUSU9OID0gIngxMSIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmU0ODk0MGY5NGFjYjBhZjU4MmU1ZWYwMzUzNzgwMGYiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsLyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIuYnoyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOWQ2ZTRmMWQzNmM0MDc1NjYzNDNlOWRkZTVhOTcyYjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjNmYTk1M2ExMWQzMjEwYzNhNGVlNzkwMzFhYmRiZTA4NjNkNWNlMTNkOWIzZjkzZjMxNWYxZWVjNjBhNGIwZiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS9yZWxlYXNlcyIKKworREVQRU5EUyA9ICJsaWJkcm0gdmlydHVhbC9tZXNhIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCisKK0VYVFJBX09FQ09ORiA9ICJhY19jdl9wcm9nX1dBWUxBTkRfU0NBTk5FUj13YXlsYW5kLXNjYW5uZXIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEsLS1kaXNhYmxlLXgxMSx2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnhmaXhlcyIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIgorCitQQUNLQUdFUyA9KyAiJHtQTn0teDExICR7UE59LWdseCAke1BOfS13YXlsYW5kIgorCitSREVQRU5EU18ke1BOfS14MTEgPSsgIiR7UE59IgorUkRFUEVORFNfJHtQTn0tZ2x4ID0rICIke1BOfS14MTEiCisKK0ZJTEVTXyR7UE59LXgxMSA9KyAiJHtsaWJkaXJ9L2xpYnZhLXgxMSoke1NPTElCU30iCitGSUxFU18ke1BOfS1nbHggPSsgIiR7bGliZGlyfS9saWJ2YS1nbHgqJHtTT0xJQlN9IgorRklMRVNfJHtQTn0td2F5bGFuZCA9KyAiJHtsaWJkaXJ9L2xpYnZhLXdheWxhbmQqJHtTT0xJQlN9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtTWFrZWZpbGUudnVsa2FuLmFtLWV4cGxpY3RseS1hZGQtbGliLWV4cGF0LXRvLWludGVsLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLU1ha2VmaWxlLnZ1bGthbi5hbS1leHBsaWN0bHktYWRkLWxpYi1leHBhdC10by1pbnRlbC0ucGF0Y2gKaW5kZXggYmQxZTg2My4uZjkwOGQ0NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtTWFrZWZpbGUudnVsa2FuLmFtLWV4cGxpY3RseS1hZGQtbGliLWV4cGF0LXRvLWludGVsLS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1NYWtlZmlsZS52dWxrYW4uYW0tZXhwbGljdGx5LWFkZC1saWItZXhwYXQtdG8taW50ZWwtLnBhdGNoCkBAIC0yMCwxNyArMjAsMTggQEAKIAogZXhwbGljdGx5IGFkZCBFWFBBVF9MSUJTIHRvIGludGVsJ3MgVlVMS0FOX0xJQl9ERVBTCiAKLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFttZXNhLWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmddCitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCitodHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL21lc2EvbWVzYS9jb21taXQvP2lkPTA1ZmM2MmQ4OWY1OWNlMTlhMThiZmQ0ZTYzYTA5NjI0OTEwZDZjYWYKIAogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogLS0tCiAgc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbSB8IDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCi1kaWZmIC0tZ2l0IGEvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbSBiL3NyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0KLWluZGV4IDI3MWIwYTUuLjhmYmUyYzggMTAwNjQ0Ci0tLS0gYS9zcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtCi0rKysgYi9zcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtCitJbmRleDogbWVzYS0xNy4zLjYvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG1lc2EtMTcuMy42Lm9yaWcvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbQorKysrIG1lc2EtMTcuMy42L3NyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0KIEBAIC0xNDQsNiArMTQ0LDcgQEAgVlVMS0FOX0xJQl9ERVBTID0gXAogIAkkKExJQkRSTV9MSUJTKSBcCiAgCSQoUFRIUkVBRF9MSUJTKSBcCkBAIC0zOCw3ICszOSw0IEBACiArCSQoRVhQQVRfTElCUykgXAogIAktbG0KICAKLSBpZiBIQVZFX1BMQVRGT1JNX1gxMQotLS0gCi0yLjcuNAotCisgaWYgSEFWRV9QTEFURk9STV9BTkRST0lECmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLXRoZS1wYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtVXNlLXdheWxhbmQtc2Nhbm5lci1pbi10aGUtcGF0aC5wYXRjaAppbmRleCBlYjZmZjRmLi4yNDQ0YjI4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLXRoZS1wYXRoLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLVVzZS13YXlsYW5kLXNjYW5uZXItaW4tdGhlLXBhdGgucGF0Y2gKQEAgLTE0LDEyICsxNCwxMiBAQAogIGNvbmZpZ3VyZS5hYyB8IDcgKy0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNiBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMmM3ZTYzNmZhYy4uZDJiMjM1MDczOSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjE3NCwxMiArMjE3NCw3IEBAIGlmIHRlc3QgIngkd2l0aF9wbGF0Zm9ybXMiICE9IHhhdXRvOyB0aGVuCi0gICAgIHdpdGhfZWdsX3BsYXRmb3Jtcz0kd2l0aF9wbGF0Zm9ybXMKK0luZGV4OiBtZXNhLTE3LjMuNi9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBtZXNhLTE3LjMuNi5vcmlnL2NvbmZpZ3VyZS5hYworKysrIG1lc2EtMTcuMy42L2NvbmZpZ3VyZS5hYworQEAgLTE2OTQsMTIgKzE2OTQsNyBAQCBpZiB0ZXN0ICJ4JHdpdGhfcGxhdGZvcm1zIiA9IHhhdXRvOyB0aGVuCisgICAgIHdpdGhfcGxhdGZvcm1zPSR3aXRoX2VnbF9wbGF0Zm9ybXMKICBmaQogIAogLVBLR19DSEVDS19NT0RVTEVTKFtXQVlMQU5EX1NDQU5ORVJdLCBbd2F5bGFuZC1zY2FubmVyXSwKQEAgLTMwLDggKzMwLDUgQEAKIC1maQogK0FDX1BBVEhfUFJPRyhbV0FZTEFORF9TQ0FOTkVSXSwgW3dheWxhbmQtc2Nhbm5lcl0pCiAgCi0gIyBEbyBwZXItRUdMIHBsYXRmb3JtIHNldHVwcyBhbmQgY2hlY2tzCi0gZWdsX3BsYXRmb3Jtcz1gSUZTPScsICc7IGVjaG8gJHdpdGhfZWdsX3BsYXRmb3Jtc2AKLS0tIAotMi4xMy4wCi0KKyBQS0dfQ0hFQ0tfRVhJU1RTKFt3YXlsYW5kLXByb3RvY29scyA+PSAkV0FZTEFORF9QUk9UT0NPTFNfUkVRVUlSRURdLCBbaGF2ZV93YXlsYW5kX3Byb3RvY29scz15ZXNdLCBbaGF2ZV93YXlsYW5kX3Byb3RvY29scz1ub10pCisgaWYgdGVzdCAieCRoYXZlX3dheWxhbmRfcHJvdG9jb2xzIiA9IHh5ZXM7IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLWFjLWZpeC1idWlsZC1hZnRlci1MTFZNLTUuMC1TVk4tcjMwMDcxOC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLWFjLWZpeC1idWlsZC1hZnRlci1MTFZNLTUuMC1TVk4tcjMwMDcxOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI3YTNiYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1hYy1maXgtYnVpbGQtYWZ0ZXItTExWTS01LjAtU1ZOLXIzMDA3MTgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDk4NjE0MzdlNThmZGQwZGUwMTE5M2ExMDI2MDhkMzRlNTk1Mjk1M2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaHJpc3RvcGggSGFhZyA8aGFhZ2NoK21lc2FkZXZAZnJpY2tlbC5jbHViPgotRGF0ZTogVGh1LCAyMCBBcHIgMjAxNyAxMDozNDoxOCArMDIwMAotU3ViamVjdDogW1BBVENIIDEvMl0gYWM6IGZpeCBidWlsZCBhZnRlciBMTFZNIDUuMCBTVk4gcjMwMDcxOAotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi12MjogcHJldmlvdXNseSBnZXRXaXRoRGVyZWZlcmVuY2VhYmxlQnl0ZXMoKSBleGlzdHMsIGJ1dCBhZGRBdHRyKCkgZG9lc24ndCB0YWtlIHRoYXQgdHlwZQotCi1TaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGggSGFhZyA8aGFhZ2NoK21lc2FkZXZAZnJpY2tlbC5jbHViPgotUmV2aWV3ZWQtYnk6IE5pY29sYWkgSMOkaG5sZSA8bmljb2xhaS5oYWVobmxlQGFtZC5jb20+Ci1UZXN0ZWQtYW5kLXJldmlld2VkLWJ5OiBNaWtlIExvdGhpYW4gPG1pa2VAZmlyZWJ1cm4uY28udWs+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotIHNyYy9hbWQvY29tbW9uL2FjX2xsdm1faGVscGVyLmNwcCB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9hbWQvY29tbW9uL2FjX2xsdm1faGVscGVyLmNwcCBiL3NyYy9hbWQvY29tbW9uL2FjX2xsdm1faGVscGVyLmNwcAotaW5kZXggZDllYTRiMS4uMTFmYTgwOSAxMDA2NDQKLS0tLSBhL3NyYy9hbWQvY29tbW9uL2FjX2xsdm1faGVscGVyLmNwcAotKysrIGIvc3JjL2FtZC9jb21tb24vYWNfbGx2bV9oZWxwZXIuY3BwCi1AQCAtNDQsOSArNDQsMTMgQEAgdHlwZWRlZiBBdHRyaWJ1dGVTZXQgQXR0cmlidXRlTGlzdDsKLSB2b2lkIGFjX2FkZF9hdHRyX2RlcmVmZXJlbmNlYWJsZShMTFZNVmFsdWVSZWYgdmFsLCB1aW50NjRfdCBieXRlcykKLSB7Ci0gICAgbGx2bTo6QXJndW1lbnQgKkEgPSBsbHZtOjp1bndyYXA8bGx2bTo6QXJndW1lbnQ+KHZhbCk7Ci0rI2lmIEhBVkVfTExWTSA8IDB4MDUwMAotICAgIGxsdm06OkF0dHJCdWlsZGVyIEI7Ci0gICAgQi5hZGREZXJlZmVyZW5jZWFibGVBdHRyKGJ5dGVzKTsKLSAgICBBLT5hZGRBdHRyKGxsdm06OkF0dHJpYnV0ZUxpc3Q6OmdldChBLT5nZXRDb250ZXh0KCksIEEtPmdldEFyZ05vKCkgKyAxLCAgQikpOwotKyNlbHNlCi0rICAgQS0+YWRkQXR0cihsbHZtOjpBdHRyaWJ1dGU6OmdldFdpdGhEZXJlZmVyZW5jZWFibGVCeXRlcyhBLT5nZXRDb250ZXh0KCksIGJ5dGVzKSk7Ci0rI2VuZGlmCi0gfQotIAotIGJvb2wgYWNfaXNfc2dwcl9wYXJhbShMTFZNVmFsdWVSZWYgYXJnKQotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLUFsd2F5cy1jaGVjay1mb3ItZXhwYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1jb25maWd1cmUuYWMtQWx3YXlzLWNoZWNrLWZvci1leHBhdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc1M2M0OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1jb25maWd1cmUuYWMtQWx3YXlzLWNoZWNrLWZvci1leHBhdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLUZyb20gMWY3ZDc1MjE5M2YwMmQxNWQ1OTIzY2VlOTkyZThmNDZkNGM2ZGYxYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBNb24sIDI4IEF1ZyAyMDE3IDEzOjUxOjQ5ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogQWx3YXlzIGNoZWNrIGZvciBleHBhdAotCi1leHBhdCB3YXMgbm90IGNoZWNrZWQgaWYgZHJpIHdhcyBub3QgYnVpbHQgbGVhZGluZyB0byBidWlsZCBmYWlsdXJlCi1pbiB2dWxrYW4gZHJpdmVyOiBiYWNrcG9ydCBhIGZpeCAoYSBjb21iaW5hdGlvbiBvZiBtdWx0aXBsZSBjb21taXRzCi10aGF0IHNob3VsZCBlbmQgdXAgaW4gMTcuMykuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAxNSArKysrKystLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBmZDM0NmM4YWEyLi42NjJmYWVjZWZhIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xNzc3LDYgKzE3NzcsMTIgQEAgaWYgdGVzdCAieCR3aXRoX2RyaV9kcml2ZXJzIiA9IHhubzsgdGhlbgotICAgICB3aXRoX2RyaV9kcml2ZXJzPScnCi0gZmkKLSAKLSsjIENoZWNrIGZvciBleHBhdAotK1BLR19DSEVDS19NT0RVTEVTKFtFWFBBVF0sIFtleHBhdF0pCi0rUEtHX0NIRUNLX01PRFVMRVMoW0VYUEFUXSwgW2V4cGF0XSwsCi0rICAgIFtQS0dfQ0hFQ0tfTU9EVUxFUyhbRVhQQVRdLCBbZXhwYXQyMV0pXQotKykKLSsKLSBkbmwgSWYgJHdpdGhfZHJpX2RyaXZlcnMgaXMgeWVzLCBkcml2ZXJzIHdpbGwgYmUgYWRkZWQgdGhyb3VnaAotIGRubCBwbGF0Zm9ybSBjaGVja3MuIFNldCBERUZJTkVTIGFuZCBMSUJfREVQUwotIGlmIHRlc3QgIngkZW5hYmxlX2RyaSIgPSB4eWVzOyB0aGVuCi1AQCAtMTgxMCwxNSArMTgxNiw2IEBAIGlmIHRlc3QgIngkZW5hYmxlX2RyaSIgPSB4eWVzOyB0aGVuCi0gICAgICAgICB3aXRoX2RyaV9kcml2ZXJzPSJpOTE1IGk5NjUgbm91dmVhdSByMjAwIHJhZGVvbiBzd3Jhc3QiCi0gICAgIGZpCi0gCi0tICAgICMgQ2hlY2sgZm9yIGV4cGF0Ci0tICAgIFBLR19DSEVDS19NT0RVTEVTKFtFWFBBVF0sIFtleHBhdF0sIFtdLAotLSAgICAgICAgIyBleHBhdCB2ZXJzaW9uIDIuMCBhbmQgZWFybGllciBkbyBub3QgcHJvdmlkZSBleHBhdC5wYwotLSAgICAgICAgW0FDX0NIRUNLX0hFQURFUihbZXhwYXQuaF0sW10sCi0tICAgICAgICAgICAgICAgICAgICAgICAgIFtBQ19NU0dfRVJST1IoW0V4cGF0IGhlYWRlcnMgcmVxdWlyZWQgZm9yIERSSSBub3QgZm91bmRdKV0pCi0tICAgICAgICAgQUNfQ0hFQ0tfTElCKFtleHBhdF0sW1hNTF9QYXJzZXJDcmVhdGVdLFtdLAotLSAgICAgICAgICAgICAgICAgICAgIFtBQ19NU0dfRVJST1IoW0V4cGF0IGxpYnJhcnkgcmVxdWlyZWQgZm9yIERSSSBub3QgZm91bmRdKV0pCi0tICAgICAgICAgRVhQQVRfTElCUz0iLWxleHBhdCJdKQotLQotICAgICAjIHB1dCBhbGwgdGhlIG5lY2Vzc2FyeSBsaWJzIHRvZ2V0aGVyCi0gICAgIERSSV9MSUJfREVQUz0iJERSSV9MSUJfREVQUyAkU0VMSU5VWF9MSUJTICRMSUJEUk1fTElCUyAkRVhQQVRfTElCUyAtbG0gJFBUSFJFQURfTElCUyAkRExPUEVOX0xJQlMiCi0gZmkKLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLXN0LWRyaS1Jbml0aWFsaXNlLW1vZGlmaWVyLXRvLUlOVkFMSUQtZm9yLURSSTIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1zdC1kcmktSW5pdGlhbGlzZS1tb2RpZmllci10by1JTlZBTElELWZvci1EUkkyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhYmE3ODUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1zdC1kcmktSW5pdGlhbGlzZS1tb2RpZmllci10by1JTlZBTElELWZvci1EUkkyLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gNGNiZWNiNjE2ODJhMGVlNDI2ZmFhYTAzZDgyNGZjOGZkN2FlZjgyNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERhbmllbCBTdG9uZSA8ZGFuaWVsc0Bjb2xsYWJvcmEuY29tPgorRGF0ZTogTW9uLCAyIEFwciAyMDE4IDEzOjIwOjM0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHN0L2RyaTogSW5pdGlhbGlzZSBtb2RpZmllciB0byBJTlZBTElEIGZvciBEUkkyCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1doZW4gYWxsb2NhdGluZyBhIGJ1ZmZlciBmb3IgRFJJMiwgc2V0IHRoZSBtb2RpZmllciB0byBJTlZBTElEIHRvIGluZm9ybQordGhlIGJhY2tlbmQgdGhhdCB3ZSBoYXZlIG5vIHN1cHBsaWVkIG1vZGlmaWVycyBhbmQgaXQgc2hvdWxkIGRvIGl0cyBvd24KK3RoaW5nLiBUaGUgbWlzc2VkIGluaXRpYWxpc2F0aW9uIGZvcmNlZCBsaW5lYXIsIGV2ZW4gaWYgdGhlCitpbXBsZW1lbnRhdGlvbiBoYWQgbWFkZSBvdGhlciBkZWNpc2lvbnMuCisKK1RoaXMgcmVzdWx0ZWQgaW4gVkM0IERSSTIgY2xpZW50cyBmYWlsaW5nIHdpdGg6CisgIE1vZGlmaWVyIDB4MCB2cy4gdGlsaW5nICgweDcwMDAwMDAwMDAwMDAwMSkgbWlzbWF0Y2gKKworU2lnbmVkLW9mZi1ieTogRGFuaWVsIFN0b25lIDxkYW5pZWxzQGNvbGxhYm9yYS5jb20+CitSZXBvcnRlZC1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KK1Jldmlld2VkLWJ5OiBFcmljIEFuaG9sdCA8ZXJpY0BhbmhvbHQubmV0PgorRml4ZXM6IDNmODUxMzE3MmZmNiAoImdhbGxpdW0vd2luc3lzL2RybTogaW50cm9kdWNlIG1vZGlmaWVyIGZpZWxkIHRvIHdpbnN5c19oYW5kbGUiKQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFsxXQorCitbMV0gaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9tZXNhL21lc2EvY29tbWl0Lz9pZD00Y2JlY2I2MTY4MmEwZWU0MjZmYWFhMDNkODI0ZmM4ZmQ3YWVmODI2CistLS0KKyBzcmMvZ2FsbGl1bS9zdGF0ZV90cmFja2Vycy9kcmkvZHJpMi5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zcmMvZ2FsbGl1bS9zdGF0ZV90cmFja2Vycy9kcmkvZHJpMi5jIGIvc3JjL2dhbGxpdW0vc3RhdGVfdHJhY2tlcnMvZHJpL2RyaTIuYworaW5kZXggMzFkMTdkNDZjMi4uNThhNjc1N2YwMyAxMDA2NDQKKy0tLSBhL3NyYy9nYWxsaXVtL3N0YXRlX3RyYWNrZXJzL2RyaS9kcmkyLmMKKysrKyBiL3NyYy9nYWxsaXVtL3N0YXRlX3RyYWNrZXJzL2RyaS9kcmkyLmMKK0BAIC04MDYsNiArODA2LDcgQEAgZHJpMl9hbGxvY2F0ZV90ZXh0dXJlcyhzdHJ1Y3QgZHJpX2NvbnRleHQgKmN0eCwKKyAgICAgICAgICB3aGFuZGxlLmhhbmRsZSA9IGJ1Zi0+bmFtZTsKKyAgICAgICAgICB3aGFuZGxlLnN0cmlkZSA9IGJ1Zi0+cGl0Y2g7CisgICAgICAgICAgd2hhbmRsZS5vZmZzZXQgPSAwOworKyAgICAgICAgIHdoYW5kbGUubW9kaWZpZXIgPSBEUk1fRk9STUFUX01PRF9JTlZBTElEOworICAgICAgICAgIGlmIChzY3JlZW4tPmNhbl9zaGFyZV9idWZmZXIpCisgICAgICAgICAgICAgd2hhbmRsZS50eXBlID0gRFJNX0FQSV9IQU5ETEVfVFlQRV9TSEFSRUQ7CisgICAgICAgICAgZWxzZQorLS0gCisyLjE0LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDItZ2FsbGl2bS1GaXgtYnVpbGQtYWdhaW5zdC1MTFZNLVNWTi1yMzAyNTg5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDItZ2FsbGl2bS1GaXgtYnVpbGQtYWdhaW5zdC1MTFZNLVNWTi1yMzAyNTg5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzhjYWVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAyLWdhbGxpdm0tRml4LWJ1aWxkLWFnYWluc3QtTExWTS1TVk4tcjMwMjU4OS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZyb20gYTAyYTBkZmRhMjcxMmQzMGFkNjJiOGYwNDIxZWM3YjgyNDRiYTJjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9NaWNoZWw9MjBEPUMzPUE0bnplcj89IDxtaWNoZWwuZGFlbnplckBhbWQuY29tPgotRGF0ZTogV2VkLCAxMCBNYXkgMjAxNyAxNzoyNjowNyArMDkwMAotU3ViamVjdDogW1BBVENIIDIvMl0gZ2FsbGl2bTogRml4IGJ1aWxkIGFnYWluc3QgTExWTSBTVk4gPj0gcjMwMjU4OQotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1kZXJlZ2lzdGVyRUhGcmFtZXMgZG9lc24ndCB0YWtlIGFueSBwYXJhbWV0ZXJzIGFueW1vcmUuCi0KLVJldmlld2VkLWJ5OiBWZWRyYW4gTWlsZXRpxIcgPHZlZHJhbkBtaWxldGljLm5ldD4KLVJldmlld2VkLWJ5OiBNYXJlayBPbMWhw6FrIDxtYXJlay5vbHNha0BhbWQuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSBzcmMvZ2FsbGl1bS9hdXhpbGlhcnkvZ2FsbGl2bS9scF9ibGRfbWlzYy5jcHAgfCAxMiArKysrKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2dhbGxpdW0vYXV4aWxpYXJ5L2dhbGxpdm0vbHBfYmxkX21pc2MuY3BwIGIvc3JjL2dhbGxpdW0vYXV4aWxpYXJ5L2dhbGxpdm0vbHBfYmxkX21pc2MuY3BwCi1pbmRleCAyYTM4OGNiLi4wZTRhNTMxIDEwMDY0NAotLS0tIGEvc3JjL2dhbGxpdW0vYXV4aWxpYXJ5L2dhbGxpdm0vbHBfYmxkX21pc2MuY3BwCi0rKysgYi9zcmMvZ2FsbGl1bS9hdXhpbGlhcnkvZ2FsbGl2bS9scF9ibGRfbWlzYy5jcHAKLUBAIC0zNDIsMTQgKzM0MiwyMCBAQCBjbGFzcyBEZWxlZ2F0aW5nSklUTWVtb3J5TWFuYWdlciA6IHB1YmxpYyBCYXNlTWVtb3J5TWFuYWdlciB7Ci0gICAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRUhGcmFtZXModWludDhfdCAqQWRkciwgdWludDY0X3QgTG9hZEFkZHIsIHNpemVfdCBTaXplKSB7Ci0gICAgICAgICAgbWdyKCktPnJlZ2lzdGVyRUhGcmFtZXMoQWRkciwgTG9hZEFkZHIsIFNpemUpOwotICAgICAgIH0KLS0gICAgICB2aXJ0dWFsIHZvaWQgZGVyZWdpc3RlckVIRnJhbWVzKHVpbnQ4X3QgKkFkZHIsIHVpbnQ2NF90IExvYWRBZGRyLCBzaXplX3QgU2l6ZSkgewotLSAgICAgICAgIG1ncigpLT5kZXJlZ2lzdGVyRUhGcmFtZXMoQWRkciwgTG9hZEFkZHIsIFNpemUpOwotLSAgICAgIH0KLSAjZWxzZQotICAgICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckVIRnJhbWVzKGxsdm06OlN0cmluZ1JlZiBTZWN0aW9uRGF0YSkgewotICAgICAgICAgIG1ncigpLT5yZWdpc3RlckVIRnJhbWVzKFNlY3Rpb25EYXRhKTsKLSAgICAgICB9Ci0gI2VuZGlmCi0rI2lmIEhBVkVfTExWTSA+PSAweDA1MDAKLSsgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWdpc3RlckVIRnJhbWVzKCkgewotKyAgICAgICAgIG1ncigpLT5kZXJlZ2lzdGVyRUhGcmFtZXMoKTsKLSsgICAgICB9Ci0rI2VsaWYgSEFWRV9MTFZNID49IDB4MDMwNAotKyAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZ2lzdGVyRUhGcmFtZXModWludDhfdCAqQWRkciwgdWludDY0X3QgTG9hZEFkZHIsIHNpemVfdCBTaXplKSB7Ci0rICAgICAgICAgbWdyKCktPmRlcmVnaXN0ZXJFSEZyYW1lcyhBZGRyLCBMb2FkQWRkciwgU2l6ZSk7Ci0rICAgICAgfQotKyNlbmRpZgotICAgICAgIHZpcnR1YWwgdm9pZCAqZ2V0UG9pbnRlclRvTmFtZWRGdW5jdGlvbihjb25zdCBzdGQ6OnN0cmluZyAmTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBBYm9ydE9uRmFpbHVyZT10cnVlKSB7Ci0gICAgICAgICAgcmV0dXJuIG1ncigpLT5nZXRQb2ludGVyVG9OYW1lZEZ1bmN0aW9uKE5hbWUsIEFib3J0T25GYWlsdXJlKTsKLS0tIAotMi4xMy4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy9Vc2UtUHl0aG9uLTMtdG8tZXhlY3V0ZS10aGUtc2NyaXB0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy9Vc2UtUHl0aG9uLTMtdG8tZXhlY3V0ZS10aGUtc2NyaXB0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjRhYWJmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL1VzZS1QeXRob24tMy10by1leGVjdXRlLXRoZS1zY3JpcHRzLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gMThjM2U2ODRhODI1OWEwNjQ0MjE0Zjg4YzdlYWQ3ZmEzMTU3M2ZkOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CitEYXRlOiBGcmksIDI5IERlYyAyMDE3IDEwOjI3OjU5IC0wMjAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBQeXRob24gMyB0byBleGVjdXRlIHRoZSBzY3JpcHRzCitPcmdhbml6YXRpb246IE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgorCitUaGUgTUVTQSBidWlsZCBzeXN0ZW0gdXNlcyBQeXRob24gMiBidXQgYXMgT0UtQ29yZSBoYXMgbW92ZWQgYXdheSBmcm9tCitpdCwgd2UgY2hhbmdlIGl0IHRvIHVzZSBQeXRob24gMyBpbnN0ZWFkLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWyBjb25maWd1cmF0aW9uIF0KKworU2lnbmVkLW9mZi1ieTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYjEwN2YwNGMyZS4uMDU1NTQ2MTQyZCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTE0LDcgKzExNCw3IEBAIEFDX1BST0dfQ1hYCisgQU1fUFJPR19DQ19DX08KKyBBTV9QUk9HX0FTCisgQVhfQ0hFQ0tfR05VX01BS0UKKy1BQ19DSEVDS19QUk9HUyhbUFlUSE9OMl0sIFtweXRob24yLjcgcHl0aG9uMiBweXRob25dKQorK0FDX0NIRUNLX1BST0dTKFtQWVRIT04yXSwgW3B5dGhvbjMuNSBweXRob24zIHB5dGhvbl0pCisgQUNfUFJPR19TRUQKKyBBQ19QUk9HX01LRElSX1AKKyAKKy0tIAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy9sbHZtLWNvbmZpZy12ZXJzaW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL2xsdm0tY29uZmlnLXZlcnNpb24ucGF0Y2gKaW5kZXggYWEzM2ExZS4uZmQ3OTk5MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL2xsdm0tY29uZmlnLXZlcnNpb24ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL2xsdm0tY29uZmlnLXZlcnNpb24ucGF0Y2gKQEAgLTEsMTggKzEsMjQgQEAKLVdoZW4gYnVpbGRpbmcgbGx2bSBmcm9tIGdpdCBvciBzdm4gaXQgZW1iZWRzIHRoZSBzdm4vZ2l0IHJldmlzaW9uIGludG8gaW50ZXJuYWwgdmVyc2lvbiBzdHJpbmcKK0Zyb206IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CitTdWJqZWN0OiBbUEFUQ0hdIFByb3Blcmx5IGdldCBMTFZNIHZlcnNpb24gd2hlbiB1c2luZyBMTFZNIEdpdCByZWxlYXNlcwogCi0kIC9tbnQvYS9vZS9idWlsZC90bXAvd29yay9jb3JlaTctNjQtYmVjLWxpbnV4L21lc2EvMl8xNy4xLjUtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2xpYi9sbHZtNS4wL2xsdm0tY29uZmlnLWhvc3QgLS12ZXJzaW9uCiskIGxsdm0tY29uZmlnLWhvc3QgLS12ZXJzaW9uCiA1LjAuMGdpdC05YTVjMzMzMzg4YwogCi1XZSBuZWVkIHRvIGlnbm9yZSBldmVyeXRoaW5nIGFmdGVyIDUuMC4wIHdoaWNoIGlzIHdoYXQgdGhlIGN1dCBjbWQgaXMgZG9pbmcKK1dlIG5lZWQgdG8gaWdub3JlIGV2ZXJ5dGhpbmcgYWZ0ZXIgNS4wLjAgd2hpY2ggaXMgd2hhdCB0aGUgY3V0IGNtZCBpcworZG9pbmcKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKLUluZGV4OiBtZXNhLTE3LjEuNS9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBtZXNhLTE3LjEuNS5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIG1lc2EtMTcuMS41L2NvbmZpZ3VyZS5hYwotQEAgLTk2Nyw3ICs5NjcsNyBAQCBzdHJpcF91bndhbnRlZF9sbHZtX2ZsYWdzKCkgeworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYTAyMTczZjI0NC4uYjEwN2YwNGMyZSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtOTk1LDcgKzk5NSw3IEBAIHN0cmlwX3Vud2FudGVkX2xsdm1fZmxhZ3MoKSB7CiAgCiAgbGx2bV9zZXRfZW52aXJvbm1lbnRfdmFyaWFibGVzKCkgewogICAgICBpZiB0ZXN0ICJ4JExMVk1fQ09ORklHIiAhPSB4bm87IHRoZW4KQEAgLTIxLDEyICsyNywxNSBAQAogICAgICAgICAgTExWTV9DUFBGTEFHUz1gc3RyaXBfdW53YW50ZWRfbGx2bV9mbGFncyAiJExMVk1fQ09ORklHIC0tY3BwZmxhZ3MiYAogICAgICAgICAgTExWTV9JTkNMVURFRElSPWAkTExWTV9DT05GSUcgLS1pbmNsdWRlZGlyYAogICAgICAgICAgTExWTV9MSUJESVI9YCRMTFZNX0NPTkZJRyAtLWxpYmRpcmAKLUBAIC0yNTYwLDcgKzI1NjAsNyBAQCBpZiB0ZXN0ICJ4JGVuYWJsZV9sbHZtIiA9IHh5ZXM7IHRoZW4KK0BAIC0yNjQ0LDcgKzI2NDQsNyBAQCBkZXRlY3Rfb2xkX2J1Z2d5X2xsdm0oKSB7CisgICAgIGRubCBvdXJzZWx2ZXMuCiAgICAgIGRubCAoU2VlIGh0dHBzOi8vbGx2bS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9NjgyMykKLSAgICAgaWYgdGVzdCAieCRlbmFibGVfbGx2bV9zaGFyZWRfbGlicyIgPSB4eWVzOyB0aGVuCi0gICAgICAgICBkbmwgV2UgY2FuJ3QgdXNlICRMTFZNX1ZFUlNJT04gYmVjYXVzZSBpdCBoYXMgJ3N2bicgc3RyaXBwZWQgb3V0LAotLSAgICAgICAgTExWTV9TT19OQU1FPUxMVk0tYCRMTFZNX0NPTkZJRyAtLXZlcnNpb25gCi0rICAgICAgICBMTFZNX1NPX05BTUU9TExWTS1gJExMVk1fQ09ORklHIC0tdmVyc2lvbnxjdXQgLWMxLTVgCi0gICAgICAgICBBU19JRihbdGVzdCAtZiAiJExMVk1fTElCRElSL2xpYiRMTFZNX1NPX05BTUUuJElNUF9MSUJfRVhUIl0sIFtsbHZtX2hhdmVfb25lX3NvPXllc10pCisgICAgIGRubCBXZSBjYW4ndCB1c2UgJExMVk1fVkVSU0lPTiBiZWNhdXNlIGl0IGhhcyAnc3ZuJyBzdHJpcHBlZCBvdXQsCistICAgIExMVk1fU09fTkFNRT1MTFZNLWAkTExWTV9DT05GSUcgLS12ZXJzaW9uYAorKyAgICBMTFZNX1NPX05BTUU9TExWTS1gJExMVk1fQ09ORklHIC0tdmVyc2lvbiB8IGN1dCAtYzEtNWAKKyAgICAgQVNfSUYoW3Rlc3QgLWYgIiRMTFZNX0xJQkRJUi9saWIkTExWTV9TT19OQU1FLiRJTVBfTElCX0VYVCJdLCBbbGx2bV9oYXZlX29uZV9zbz15ZXNdKQogIAotICAgICAgICAgaWYgdGVzdCAieCRsbHZtX2hhdmVfb25lX3NvIiA9IHh5ZXM7IHRoZW4KKyAgICAgaWYgdGVzdCAieCRsbHZtX2hhdmVfb25lX3NvIiA9IHh5ZXM7IHRoZW4KKy0tIAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy9yZXBsYWNlX2dsaWJjX2NoZWNrX3dpdGhfbGludXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvcmVwbGFjZV9nbGliY19jaGVja193aXRoX2xpbnV4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjgwZWU4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy9yZXBsYWNlX2dsaWJjX2NoZWNrX3dpdGhfbGludXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1lbmRpYW5uZXNzIGNoZWNrIGlzIE9TIHdpZGUgYW5kIG5vdCBzcGVjaWZpYyB0byBsaWJjCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLS0tLQotIHNyYy91dGlsL3VfZW5kaWFuLmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvdXRpbC91X2VuZGlhbi5oIGIvc3JjL3V0aWwvdV9lbmRpYW4uaAotaW5kZXggYjlkNTYzZC4uMmQ1ZWFiOSAxMDA2NDQKLS0tLSBhL3NyYy91dGlsL3VfZW5kaWFuLmgKLSsrKyBiL3NyYy91dGlsL3VfZW5kaWFuLmgKLUBAIC0yNyw3ICsyNyw3IEBACi0gI2lmbmRlZiBVX0VORElBTl9ICi0gI2RlZmluZSBVX0VORElBTl9ICi0gCi0tI2lmIGRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKEFORFJPSUQpCi0rI2lmIGRlZmluZWQoX19saW51eF9fKQotICNpbmNsdWRlIDxlbmRpYW4uaD4KLSAKLSAjaWYgX19CWVRFX09SREVSID09IF9fTElUVExFX0VORElBTgotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvdnVsa2FuLW1rZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL3Z1bGthbi1ta2Rpci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTVlZTVlZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvdnVsa2FuLW1rZGlyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gYzc4OTc5ZmQ5NWExYzRmNzMyZjdlNmVkZjBmMzJjNTI0ZTU5NTViOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDEyIEp1bCAyMDE3IDE3OjEwOjA3ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW06IGNyZWF0ZSB0YXJnZXQgZGlyZWN0b3JpZXMgd2hlbgotIHJlcXVpcmVkCi0KLUluIG91dC1vZi10cmVlIGJ1aWxkcyBzcmMvaW50ZWwvdnVsa2FuIHdvbid0IGV4aXN0LCBzbyBhbHdheXMgY3JlYXRlIGl0IGJlZm9yZQotd3JpdGluZyBpbnRvIGl0LgotCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotLS0tCi0gc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbSB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtIGIvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbQotaW5kZXggMzg1N2E1ZGM2Mi4uMjZlOWNkNDEwYyAxMDA2NDQKLS0tLSBhL3NyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0KLSsrKyBiL3NyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0KLUBAIC00NCwxMSArNDQsMTMgQEAgRVhUUkFfRElTVCArPSBcCi0gCXZ1bGthbi9UT0RPCi0gCi0gdnVsa2FuL2Rldl9pY2QuanNvbiA6IHZ1bGthbi9kZXZfaWNkLmpzb24uaW4KLSsJJChNS0RJUl9HRU4pCi0gCSQoQU1fVl9HRU4pICQoU0VEKSBcCi0gCQktZSAicyNAYnVpbGRfbGliZGlyQCMke2Fic190b3BfYnVpbGRkaXJ9LyR7TElCX0RJUn0jIiBcCi0gCQk8ICQoc3JjZGlyKS92dWxrYW4vZGV2X2ljZC5qc29uLmluID4gJEAKLSAKLSB2dWxrYW4vaW50ZWxfaWNkLkBob3N0X2NwdUAuanNvbiA6IHZ1bGthbi9pbnRlbF9pY2QuanNvbi5pbgotKwkkKE1LRElSX0dFTikKLSAJJChBTV9WX0dFTikgJChTRUQpIFwKLSAJCS1lICJzI0BpbnN0YWxsX2xpYmRpckAjJHtsaWJkaXJ9IyIgXAotIAkJPCAkKHNyY2RpcikvdnVsa2FuL2ludGVsX2ljZC5qc29uLmluID4gJEAKLS0tIAotMi4xMS4wCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8xNy4xLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8xNy4zLjguYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzE3LjEuNy5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZ2xfMTcuMy44LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS5pbmMKaW5kZXggNGYzMWVkMi4uYjUwMWI3ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLmluYwpAQCAtMTYsOSArMTYsMTUgQEAKIAogREVQRU5EUyA9ICJleHBhdCBtYWtlZGVwZW5kLW5hdGl2ZSBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUgbGlieG1sMi1uYXRpdmUgemxpYiBjaHJwYXRoLXJlcGxhY2VtZW50LW5hdGl2ZSIKIEVYVFJBTkFUSVZFUEFUSCArPSAiY2hycGF0aC1uYXRpdmUiCi1QUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmdsIHZpcnR1YWwvbGliZ2xlczEgdmlydHVhbC9saWJnbGVzMiB2aXJ0dWFsL2VnbCB2aXJ0dWFsL21lc2EiCitQUk9WSURFUyA9ICIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ29wZW5nbCcsICd2aXJ0dWFsL2xpYmdsJywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ2xlcycsICd2aXJ0dWFsL2xpYmdsZXMxIHZpcnR1YWwvbGliZ2xlczInLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdlZ2wnLCAndmlydHVhbC9lZ2wnLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdnYm0nLCAndmlydHVhbC9saWJnYm0nLCAnJywgZCl9IFwKKyAgICB2aXJ0dWFsL21lc2EgXAorICAgICIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHl0aG9uM25hdGl2ZSBnZXR0ZXh0IGRpc3Ryb19mZWF0dXJlc19jaGVjawogCiBBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCB2dWxrYW4iCiAKQEAgLTM0LDcgKzQwLDcgQEAKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgdnVsa2FuJywgZCl9IFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICdvcGVuZ2wgZWdsIGdsZXMgZ2JtIGRyaScsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIG9wZW5nbCcsICd4MTEnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSBvcGVuZ2wnLCAneDExIGRyaTMnLCAnJywgZCl9IFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSB2dWxrYW4nLCAnZHJpMycsICcnLCBkKX0gXAogCQkgICAiCiAKQEAgLTQ1LDcgKzUxLDcgQEAKICMgIngxMSIgcmVxdWlyZXMgIm9wZW5nbCIKIFBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS1nbHgtdGxzLC0tZGlzYWJsZS1nbHgsJHtYMTFfREVQU30iCiBQQUNLQUdFQ09ORklHW3h2bWNdID0gIi0tZW5hYmxlLXh2bWMsLS1kaXNhYmxlLXh2bWMsbGlieHZtYyIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIGxpYmRybSIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIGxpYmRybSB3YXlsYW5kLXByb3RvY29scyIKIAogRFJJRFJJVkVSUyA9ICJzd3Jhc3QiCiBEUklEUklWRVJTX2FwcGVuZF94ODYgPSAiLHJhZGVvbixyMjAwLG5vdXZlYXUsaTk2NSxpOTE1IgpAQCAtNTksNyArNjUsNyBAQAogVlVMS0FOX0RSSVZFUlMgPSAiIgogVlVMS0FOX0RSSVZFUlNfYXBwZW5kX3g4NiA9ICIsaW50ZWwiCiBWVUxLQU5fRFJJVkVSU19hcHBlbmRfeDg2LTY0ID0gIixpbnRlbCIKLVBBQ0tBR0VDT05GSUdbdnVsa2FuXSA9ICItLXdpdGgtdnVsa2FuLWRyaXZlcnM9JHtWVUxLQU5fRFJJVkVSU30sIC0td2l0aG91dC12dWxrYW4tZHJpdmVycyIKK1BBQ0tBR0VDT05GSUdbdnVsa2FuXSA9ICItLXdpdGgtdnVsa2FuLWRyaXZlcnM9JHtWVUxLQU5fRFJJVkVSU30sIC0td2l0aG91dC12dWxrYW4tZHJpdmVycywgcHl0aG9uMy1tYWtvLW5hdGl2ZSIKIAogUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIi0tZW5hYmxlLW9wZW5nbCwgLS1kaXNhYmxlLW9wZW5nbCIKIApAQCAtNzcsMTMgKzgzLDEzIEBACiBHQUxMSVVNRFJJVkVSU19hcHBlbmQgPSIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdpbXgnLCAnLGlteCcsICcnLCBkKX0iCiBHQUxMSVVNRFJJVkVSU19MTFZNMzMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncjYwMCcsICdyYWRlb25zaSxyNjAwJywgJycsIGQpfSIKIFBBQ0tBR0VDT05GSUdbcjYwMF0gPSAiIgotR0FMTElVTURSSVZFUlNfTExWTTMzX0VOQUJMRUQgPSAiJHtAYmFzZV92ZXJzaW9uX2xlc3Nfb3JfZXF1YWwoJ01FU0FfTExWTV9SRUxFQVNFJywgJzMuMicsIEZhbHNlLCBsZW4oJyR7R0FMTElVTURSSVZFUlNfTExWTTMzfScpID4gMCwgZCl9IgorR0FMTElVTURSSVZFUlNfTExWTTMzX0VOQUJMRUQgPSAiJHtAb2UudXRpbHMudmVyc2lvbl9sZXNzX29yX2VxdWFsKCdNRVNBX0xMVk1fUkVMRUFTRScsICczLjInLCBGYWxzZSwgbGVuKCcke0dBTExJVU1EUklWRVJTX0xMVk0zM30nKSA+IDAsIGQpfSIKIEdBTExJVU1EUklWRVJTX0xMVk0gPSAicjMwMCxzdmdhLG5vdXZlYXUke0AnLCR7R0FMTElVTURSSVZFUlNfTExWTTMzfScgaWYgJHtHQUxMSVVNRFJJVkVSU19MTFZNMzNfRU5BQkxFRH0gZWxzZSAnJ30iCiBHQUxMSVVNRFJJVkVSU19hcHBlbmRfeDg2ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dhbGxpdW0tbGx2bScsICcsJHtHQUxMSVVNRFJJVkVSU19MTFZNfScsICcnLCBkKX0iCiBHQUxMSVVNRFJJVkVSU19hcHBlbmRfeDg2LTY0ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dhbGxpdW0tbGx2bScsICcsJHtHQUxMSVVNRFJJVkVSU19MTFZNfScsICcnLCBkKX0iCiAjIGtlZXAgLS13aXRoLWdhbGxpdW0tZHJpdmVycyBzZXBhcmF0ZSwgYmVjYXVzZSB3aGVuIG9ubHkgb25lIG9mIGdhbGxpdW0gdmVyc2lvbnMgaXMgZW5hYmxlZCwgb3RoZXIgMiB3ZXJlIGFkZGluZyAtLXdpdGhvdXQtZ2FsbGl1bS1kcml2ZXJzCiBQQUNLQUdFQ09ORklHW2dhbGxpdW1dICAgICAgPSAiLS1lbmFibGUtdGV4dHVyZS1mbG9hdCAtLXdpdGgtZ2FsbGl1bS1kcml2ZXJzPSR7R0FMTElVTURSSVZFUlN9LCAtLXdpdGhvdXQtZ2FsbGl1bS1kcml2ZXJzIgotTUVTQV9MTFZNX1JFTEVBU0UgPz0gIjUuMCIKK01FU0FfTExWTV9SRUxFQVNFID89ICI2LjAiCiBQQUNLQUdFQ09ORklHW2dhbGxpdW0tbGx2bV0gPSAiLS1lbmFibGUtbGx2bSAtLWVuYWJsZS1sbHZtLXNoYXJlZC1saWJzLCAtLWRpc2FibGUtbGx2bSwgbGx2bSR7TUVTQV9MTFZNX1JFTEVBU0V9IGxsdm0tbmF0aXZlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0AnZWxmdXRpbHMnIGlmICR7R0FMTElVTURSSVZFUlNfTExWTTMzX0VOQUJMRUR9IGVsc2UgJyd9IgogZXhwb3J0IFdBTlRfTExWTV9SRUxFQVNFID0gIiR7TUVTQV9MTFZNX1JFTEVBU0V9IgpAQCAtOTksOSArMTA1LDYgQEAKIAogQ0ZMQUdTX2FwcGVuZF9hcm12NSA9ICIgLURNSVNTSU5HXzY0QklUX0FUT01JQ1MiCiAKLSMgTXVsdGlwbGUgdmlydHVhbC9nbCBwcm92aWRlcnMgYmVpbmcgYnVpbHQgYnJlYWtzIHN0YWdpbmcKLUVYQ0xVREVfRlJPTV9XT1JMRCA9ICIxIgotCiAjIFJlbW92ZSB0aGUgbWVzYSBkZXBlbmRlbmN5IG9uIG1lc2EtZGV2LCBhcyBtZXNhIGlzIGVtcHR5CiBSREVQRU5EU18ke1BOfS1kZXYgPSAiIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8xNy4xLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8xNy4xLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5Y2ZjZTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMTcuMS43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotcmVxdWlyZSAke0JQTn0uaW5jCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9tZXNhLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlL21lc2EtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3JlcGxhY2VfZ2xpYmNfY2hlY2tfd2l0aF9saW51eC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWFzbS1vbi1ub24tZ2NjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXdheWxhbmQtc2Nhbm5lci1pbi10aGUtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWhhcmR3YXJlLWdsb2F0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3Z1bGthbi1ta2Rpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9sbHZtLWNvbmZpZy12ZXJzaW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYWMtZml4LWJ1aWxkLWFmdGVyLUxMVk0tNS4wLVNWTi1yMzAwNzE4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItZ2FsbGl2bS1GaXgtYnVpbGQtYWdhaW5zdC1MTFZNLVNWTi1yMzAyNTg5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtd2luc3lzLXN2Z2EtZHJtLUluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtQWx3YXlzLWNoZWNrLWZvci1leHBhdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLnZ1bGthbi5hbS1leHBsaWN0bHktYWRkLWxpYi1leHBhdC10by1pbnRlbC0ucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiZTQwYmI0MjhhMjYzYmQyOGNiZjY0NzhkYWU0NWIyMDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjlmNDcyYTg3NGIxMTIyNDA0ZmEwYmQxM2UyZDZiZjg3ZWIzYjlhZDljMjFkMmYzOTg3MmE5NmQ4M2Q5ZTVmNSIKLQotI2JlY2F1c2Ugd2UgY2Fubm90IHJlbHkgb24gdGhlIGZhY3QgdGhhdCBhbGwgYXBwcyB3aWxsIHVzZSBwa2djb25maWcsCi0jbWFrZSBlZ2xwbGF0Zm9ybS5oIGluZGVwZW5kZW50IG9mIE1FU0FfRUdMX05PX1gxMV9IRUFERVIKLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2VnbCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIHNlZCAtaSAtZSAncy9eI2lmIGRlZmluZWQoTUVTQV9FR0xfTk9fWDExX0hFQURFUlMpJC8jaWYgZGVmaW5lZChNRVNBX0VHTF9OT19YMTFfSEVBREVSUykgfHwgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneDExJywgJzAnLCAnMScsIGQpfS8nICR7RH0ke2luY2x1ZGVkaXJ9L0VHTC9lZ2xwbGF0Zm9ybS5oCi0gICAgZmkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzE3LjMuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzE3LjMuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDNmZDNjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMTcuMy44LmJiCkBAIC0wLDAgKzEsMjMgQEAKK3JlcXVpcmUgJHtCUE59LmluYworCitTUkNfVVJJID0gImh0dHBzOi8vbWVzYS5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZS9tZXNhLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWFzbS1vbi1ub24tZ2NjLnBhdGNoIFwKKwkgICBmaWxlOi8vVXNlLVB5dGhvbi0zLXRvLWV4ZWN1dGUtdGhlLXNjcmlwdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLXRoZS1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItaGFyZHdhcmUtZ2xvYXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGx2bS1jb25maWctdmVyc2lvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXdpbnN5cy1zdmdhLWRybS1JbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUudnVsa2FuLmFtLWV4cGxpY3RseS1hZGQtbGliLWV4cGF0LXRvLWludGVsLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN0LWRyaS1Jbml0aWFsaXNlLW1vZGlmaWVyLXRvLUlOVkFMSUQtZm9yLURSSTIucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMDNkMWE3OTE1NmFiNjkyNmYyZDI1M2IzNzdlOWQ5ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZjlkOWJmMjgxYzQ4ZTRhOGY1MjI4ODE2NTc3MjYzYjRjNjU1MjQ4ZGM3NjY2ZTc1MDM0YWI0MjI5NTFhNmIxIgorCisjYmVjYXVzZSB3ZSBjYW5ub3QgcmVseSBvbiB0aGUgZmFjdCB0aGF0IGFsbCBhcHBzIHdpbGwgdXNlIHBrZ2NvbmZpZywKKyNtYWtlIGVnbHBsYXRmb3JtLmggaW5kZXBlbmRlbnQgb2YgTUVTQV9FR0xfTk9fWDExX0hFQURFUgorZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZWdsJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgc2VkIC1pIC1lICdzL14jaWYgZGVmaW5lZChNRVNBX0VHTF9OT19YMTFfSEVBREVSUykkLyNpZiBkZWZpbmVkKE1FU0FfRUdMX05PX1gxMV9IRUFERVJTKSB8fCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4MTEnLCAnMCcsICcxJywgZCl9LycgJHtEfSR7aW5jbHVkZWRpcn0vRUdML2VnbHBsYXRmb3JtLmgKKyAgICBmaQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nby8wMDAxLURyb3AtaW50cm9zcGVjdGlvbi1tYWNyb3MtZnJvbS1hY2luY2x1ZGUubTQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvLzAwMDEtRHJvcC1pbnRyb3NwZWN0aW9uLW1hY3Jvcy1mcm9tLWFjaW5jbHVkZS5tNC5wYXRjaAppbmRleCA4MTJkYTIxLi45ZTE2MjZlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvLzAwMDEtRHJvcC1pbnRyb3NwZWN0aW9uLW1hY3Jvcy1mcm9tLWFjaW5jbHVkZS5tNC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvLzAwMDEtRHJvcC1pbnRyb3NwZWN0aW9uLW1hY3Jvcy1mcm9tLWFjaW5jbHVkZS5tNC5wYXRjaApAQCAtNiw3ICs2LDcgQEAKIFRoZXkgdGFrZSBwcmVjZW5kZW5jZSBvdmVyIG91ciBjdXN0b21pemVkIG1hY3JvcywgYW5kIHNvCiBpbnRyb3NwZWN0aW9uIGRvZXNuJ3Qgd29yayBjb3JyZWN0bHkuCiAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IG9uIG9lLWNvcmUgbGlzdF0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW3Vwc3RyZWFtIDVjY2ZlMF0KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogLS0tCiAgYWNpbmNsdWRlLm00IHwgOTYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMTgsNCArMTE4LDMgQEAKIC1dKQogLS0gCiAyLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDAuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDAuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JkOWM2NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40MC4xNC5iYgpAQCAtMCwwICsxLDUwIEBACitTVU1NQVJZID0gIkZyYW1ld29yayBmb3IgbGF5b3V0IGFuZCByZW5kZXJpbmcgb2YgaW50ZXJuYXRpb25hbGl6ZWQgdGV4dCIKK0RFU0NSSVBUSU9OID0gIlBhbmdvIGlzIGEgbGlicmFyeSBmb3IgbGF5aW5nIG91dCBhbmQgcmVuZGVyaW5nIG9mIHRleHQsIFwKK3dpdGggYW4gZW1waGFzaXMgb24gaW50ZXJuYXRpb25hbGl6YXRpb24uIFBhbmdvIGNhbiBiZSB1c2VkIGFueXdoZXJlIFwKK3RoYXQgdGV4dCBsYXlvdXQgaXMgbmVlZGVkLCB0aG91Z2ggbW9zdCBvZiB0aGUgd29yayBvbiBQYW5nbyBzbyBmYXIgaGFzIFwKK2JlZW4gZG9uZSBpbiB0aGUgY29udGV4dCBvZiB0aGUgR1RLKyB3aWRnZXQgdG9vbGtpdC4gUGFuZ28gZm9ybXMgdGhlIFwKK2NvcmUgb2YgdGV4dCBhbmQgZm9udCBoYW5kbGluZyBmb3IgR1RLKy0yLnguIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wYW5nby5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMdjIuMCsiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IgorCitpbmhlcml0IGdub21lYmFzZSBndGstZG9jIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworU1JDX1VSSSArPSAiZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1Ecm9wLWludHJvc3BlY3Rpb24tbWFjcm9zLWZyb20tYWNpbmNsdWRlLm00LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUVuZm9yY2UtcmVjcmVhdGlvbi1vZi1kb2NzLXBhbmdvLnR5cGVzLWl0LWlzLWJ1aWxkLWMucGF0Y2ggXAorIgorU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMThkN2ViOGQ1MmU3ZTQ0NWU3MzNjMTA5ZGRhYTdiNzgiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI5MGFmMWJlYWE3YmY5ZTRjNTJkYjI5ZWMyNTFlYzRmZDBhOGYyY2MxODVkNTIxYWQxZjg4ZDAxYjNhNmExN2UzIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBmb250Y29uZmlnIGZyZWV0eXBlIHZpcnR1YWwvbGliaWNvbnYgY2Fpcm8gaGFyZmJ1enoiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXhmdCwtLXdpdGhvdXQteGZ0LHZpcnR1YWwvbGlieDExIGxpYnhmdCIKKworRVhUUkFfT0VDT05GID0gIiBcCisJICAgICAgICAtLWRpc2FibGUtZGVidWcgXAorCSAgICAgICAgIgorCitMRUFEX1NPTkFNRSA9ICJsaWJwYW5nby0xLjAqIgorTElCViA9ICIxLjguMCIKKworIyBUaGlzIGJpbmFyeSBuZWVkcyB0byBiZSBjb21waWxlZCBmb3IgdGhlIGhvc3QgYXJjaGl0ZWN0dXJlLiAgVGhpcyBpc24ndCBwcmV0dHkhCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B0ZXN0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJbWFrZSBDQz0iJHtCVUlMRF9DQ30iIENGTEFHUz0iIiBMREZMQUdTPSIke0JVSUxEX0xERkxBR1N9IiBBTV9DUFBGTEFHUz0iJChwa2ctY29uZmlnLW5hdGl2ZSAtLWNmbGFncyBnbGliLTIuMCkiIGdlbl9hbGxfdW5pY29kZV9MREFERD0iJChwa2ctY29uZmlnLW5hdGl2ZSAtLWxpYnMgZ2xpYi0yLjApIiAtQyAke0J9L3Rlc3RzIGdlbi1hbGwtdW5pY29kZQorCWZpCit9CisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS8qICR7bGliZGlyfS9saWJwYW5nbyoke1NPTElCU30iCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9wYW5nby8ke0xJQlZ9L21vZHVsZXMvKi5sYSIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImxpYmVyYXRpb24tZm9udHMgY2FudGFyZWxsLWZvbnRzIgorCitSUFJPVklERVNfJHtQTn0gKz0gInBhbmdvLW1vZHVsZXMgcGFuZ28tbW9kdWxlLWluZGljLWxhbmcgXAorICAgICAgICAgICAgICAgICAgICBwYW5nby1tb2R1bGUtYmFzaWMtZmMgcGFuZ28tbW9kdWxlLWFyYWJpYy1sYW5nIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40MC42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQwLjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxYzNkMmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQwLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1TVU1NQVJZID0gIkZyYW1ld29yayBmb3IgbGF5b3V0IGFuZCByZW5kZXJpbmcgb2YgaW50ZXJuYXRpb25hbGl6ZWQgdGV4dCIKLURFU0NSSVBUSU9OID0gIlBhbmdvIGlzIGEgbGlicmFyeSBmb3IgbGF5aW5nIG91dCBhbmQgcmVuZGVyaW5nIG9mIHRleHQsIFwKLXdpdGggYW4gZW1waGFzaXMgb24gaW50ZXJuYXRpb25hbGl6YXRpb24uIFBhbmdvIGNhbiBiZSB1c2VkIGFueXdoZXJlIFwKLXRoYXQgdGV4dCBsYXlvdXQgaXMgbmVlZGVkLCB0aG91Z2ggbW9zdCBvZiB0aGUgd29yayBvbiBQYW5nbyBzbyBmYXIgaGFzIFwKLWJlZW4gZG9uZSBpbiB0aGUgY29udGV4dCBvZiB0aGUgR1RLKyB3aWRnZXQgdG9vbGtpdC4gUGFuZ28gZm9ybXMgdGhlIFwKLWNvcmUgb2YgdGV4dCBhbmQgZm9udCBoYW5kbGluZyBmb3IgR1RLKy0yLnguIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wYW5nby5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjIuMCsiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IgotCi1pbmhlcml0IGdub21lYmFzZSBndGstZG9jIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotU1JDX1VSSSArPSAiZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1Ecm9wLWludHJvc3BlY3Rpb24tbWFjcm9zLWZyb20tYWNpbmNsdWRlLm00LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUVuZm9yY2UtcmVjcmVhdGlvbi1vZi1kb2NzLXBhbmdvLnR5cGVzLWl0LWlzLWJ1aWxkLWMucGF0Y2ggXAotIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNTA3YzY3NDZmYmY1M2ZjOWQ0OGM1NzdmMWUyNjVkZTMiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJjYTE1MmI3MzgzYTFlOWY3ZmQ3NGFlOTYwMjNkYzY3NzBkYzUwNDM0MTQ3OTNiZmU3NjhmZjA2YjY3NTllNTczIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBmb250Y29uZmlnIGZyZWV0eXBlIHZpcnR1YWwvbGliaWNvbnYgY2Fpcm8gaGFyZmJ1enoiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXhmdCwtLXdpdGhvdXQteGZ0LHZpcnR1YWwvbGlieDExIGxpYnhmdCIKLQotRVhUUkFfQVVUT1JFQ09ORiA9ICIiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotCSAgICAgICAgLS1kaXNhYmxlLWRlYnVnIFwKLQkgICAgICAgICIKLQotTEVBRF9TT05BTUUgPSAibGlicGFuZ28tMS4wKiIKLUxJQlYgPSAiMS44LjAiCi0KLSMgVGhpcyBiaW5hcnkgbmVlZHMgdG8gYmUgY29tcGlsZWQgZm9yIHRoZSBob3N0IGFyY2hpdGVjdHVyZS4gIFRoaXMgaXNuJ3QgcHJldHR5IQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7Ci0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCW1ha2UgQ0M9IiR7QlVJTERfQ0N9IiBDRkxBR1M9IiIgTERGTEFHUz0iJHtCVUlMRF9MREZMQUdTfSIgQU1fQ1BQRkxBR1M9IiQocGtnLWNvbmZpZy1uYXRpdmUgLS1jZmxhZ3MgZ2xpYi0yLjApIiBnZW5fYWxsX3VuaWNvZGVfTERBREQ9IiQocGtnLWNvbmZpZy1uYXRpdmUgLS1saWJzIGdsaWItMi4wKSIgLUMgJHtCfS90ZXN0cyBnZW4tYWxsLXVuaWNvZGUKLQlmaQotfQotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vKiAke2xpYmRpcn0vbGlicGFuZ28qJHtTT0xJQlN9IgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcGFuZ28vJHtMSUJWfS9tb2R1bGVzLyoubGEiCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJsaWJlcmF0aW9uLWZvbnRzIGNhbnRhcmVsbC1mb250cyIKLQotUlBST1ZJREVTXyR7UE59ICs9ICJwYW5nby1tb2R1bGVzIHBhbmdvLW1vZHVsZS1pbmRpYy1sYW5nIFwKLSAgICAgICAgICAgICAgICAgICAgcGFuZ28tbW9kdWxlLWJhc2ljLWZjIHBhbmdvLW1vZHVsZS1hcmFiaWMtbGFuZyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXRfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0X2dpdC5iYgppbmRleCBkMjc0YThmLi5iOTM2YWQ4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXRfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdF9naXQuYmIKQEAgLTYsMTAgKzYsMTAgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtY21ha2UtaW5zdGFsbC1iYXNoLWNvbXBsZXRpb25zLWluLXRoZS1yaWdodC1wbGFjZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLVVzZS1GRV9VUFdBUkQtb25seS1pZi1pdHMtZGVmaW5lZC1pbi1mZW52LmgucGF0Y2ggXAogICAgICAgICAgICAiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAotIyBGcm9tIDIwMTctMDctMDMKLVNSQ1JFViA9ICJjOGY0ZmQ5ZWViMjk4YTJlZjA4NTU5MjdmMjI2MzRmNzk0ZWYzZWZmIgorIyBGcm9tIDIwMTgtMDItMjYKK1NSQ1JFViA9ICI0Y2UwODg3ZTJmN2Y4NDhkMmJlMmU0MzVhMmQwZjNjODBlNDRlYTNiIgogIyAod2hlbiBQViBnb2VzIGFib3ZlIDEuMCByZW1vdmUgdGhlIHRyYWlsaW5nIHIpCiBQViA9ICIxLjArZ2l0ciR7U1JDUFZ9IgogCkBAIC00MCwxNCArNDAsMTIgQEAKICAgIGZpCiB9CiAKLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSAtQyAke0J9ICdERVNURElSPSR7RH0nIGluc3RhbGwvc3RyaXAKLX0KK09FQ01BS0VfVEFSR0VUX0lOU1RBTEwgPSAiaW5zdGFsbC9zdHJpcCIKIAogUkRFUEVORFNfJHtQTn0gPSAid2FmZmxlIHB5dGhvbjMgcHl0aG9uMy1tYWtvIHB5dGhvbjMtanNvbiBcCi0JcHl0aG9uMy1zdWJwcm9jZXNzIHB5dGhvbjMtbWlzYyBweXRob24zLWltcG9ydGxpYiBcCisJcHl0aG9uMy1taXNjIFwKIAlweXRob24zLXVuaXhhZG1pbiBweXRob24zLXhtbCBweXRob24zLW11bHRpcHJvY2Vzc2luZyBcCi0JcHl0aG9uMy1zaXggcHl0aG9uMy1zaGVsbCBweXRob24zLWlvIHB5dGhvbjMtYXJncGFyc2UgXAorCXB5dGhvbjMtc2l4IHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1pbyBcCiAJcHl0aG9uMy1uZXRzZXJ2ZXIgbWVzYS1kZW1vcyBiYXNoIFwKIAkiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdHRmLWZvbnRzL3R0Zi1iaXRzdHJlYW0tdmVyYV8xLjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvdHRmLWJpdHN0cmVhbS12ZXJhXzEuMTAuYmIKaW5kZXggYjJlNGNlZi4uNzBiMzJjZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvdHRmLWJpdHN0cmVhbS12ZXJhXzEuMTAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvdHRmLWJpdHN0cmVhbS12ZXJhXzEuMTAuYmIKQEAgLTEzLDI2ICsxMywyMCBAQAogCiBGT05UX1BBQ0tBR0VTID0gIiR7UE59IgogCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS90dGYtYml0c3RyZWFtLXZlcmEvMS4xMC90dGYtYml0c3RyZWFtLXZlcmEtJHtQVn0udGFyLmJ6MiIgCi0KLWRvX2luc3RhbGwgKCkgeyAKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtwcmVmaXh9L3NoYXJlL2ZvbnRzL3R0Zi8gCi0gICAgICAgIGZvciBpIGluICoudHRmOyBkbyAKLSAgICAgICAgICAgICAgICBpbnN0YWxsIC1tIDY0NCAkaSAke0R9JHtwcmVmaXh9L3NoYXJlL2ZvbnRzL3R0Zi8ke2l9IAotICAgICAgICBkb25lIAotCi0JIyBmb250Y29uZmlnIHNoaXBzIHRoaXMgdG9vLiAgbm90IHN1cmUgd2hhdCB0byBkbyBhYm91dCBpdC4KLSAgICAgICAgI2luc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZm9udHMgCi0gICAgICAgICNpbnN0YWxsIC1tIDY0NCBsb2NhbC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L2ZvbnRzL2xvY2FsLmNvbmYgCi0KLQotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3ByZWZpeH0vc2hhcmUvZG9jLyR7QlBOfS8KLSAgICAgICAgZm9yIGkgaW4gKi5UWFQ7IGRvIAotICAgICAgICAgICAgICAgIGluc3RhbGwgLW0gNjQ0ICRpICR7RH0ke3ByZWZpeH0vc2hhcmUvZG9jLyR7QlBOfS8kaQotICAgICAgICBkb25lIAotfSAKLQotRklMRVNfJHtQTn0gPSAiL2V0YyAke2RhdGFkaXJ9L2ZvbnRzIgotCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS90dGYtYml0c3RyZWFtLXZlcmEvMS4xMC90dGYtYml0c3RyZWFtLXZlcmEtJHtQVn0udGFyLmJ6MiIKIFNSQ19VUklbbWQ1c3VtXSA9ICJiYjIyYmQ1YjQ2NzVmNWRiZTE3YzY5NjNkOGMwMGVkNiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJkYjViMjdkZjdiYmIzMTgwMzZlYmRiNzVhY2QzZTk4ZjFiZDZlYjY2MDhmYjcwYTY3ZDQ3OGNkMjQzZDE3OGRjIgorCitkb19pbnN0YWxsICgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9mb250cy90dGYKKyAgICAgICAgZm9yIGkgaW4gKi50dGY7IGRvCisgICAgICAgICAgICAgICAgaW5zdGFsbCAtbSA2NDQgJGkgJHtEfSR7ZGF0YWRpcn0vZm9udHMvdHRmCisgICAgICAgIGRvbmUKKworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2RvY2Rpcn0vJHtCUE59CisgICAgICAgIGZvciBpIGluICouVFhUOyBkbworICAgICAgICAgICAgICAgIGluc3RhbGwgLW0gNjQ0ICRpICR7RH0ke2RvY2Rpcn0vJHtCUE59CisgICAgICAgIGRvbmUKK30KKworRklMRVNfJHtQTn0gPSAiJHtkYXRhZGlyfS9mb250cyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcF80LjAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcF80LjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2E5NmE0Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi9hc3NpbXBfNC4wLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJPcGVuIEFzc2V0IEltcG9ydCBMaWJyYXJ5IGlzIGEgcG9ydGFibGUgT3BlbiBTb3VyY2UgbGlicmFyeSB0byBpbXBvcnQgXAotICAgICAgICAgICAgICAgdmFyaW91cyB3ZWxsLWtub3duIDNEIG1vZGVsIGZvcm1hdHMgaW4gYSB1bmlmb3JtIG1hbm5lci4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmFzc2ltcC5vcmcvIgotU0VDVElPTiA9ICJkZXZlbCIKLQotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yMTE5ZWRlZjA5MTZiMGJkNTExY2IzYzczMTA3NjI3MSIKLQotREVQRU5EUyA9ICJ6bGliIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYXNzaW1wL2Fzc2ltcC5naXQiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+KFxkKyhcLlxkKykrKSkiCi0KLVNSQ1JFViA9ICI1MmM4ZDA2ZjVkNjQ5OGFmZDY2ZGY5ODNkYTM0OGE2YjExMmYxMzE0IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlCi0KLUVYVFJBX09FQ01BS0UgPSAiLURBU1NJTVBfQlVJTERfQVNTSU1QX1RPT0xTPU9GRiAtREFTU0lNUF9CVUlMRF9URVNUUz1PRkYgLURBU1NJTVBfTElCX0lOU1RBTExfRElSPSR7YmFzZWxpYn0iCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlLyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcF80LjEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcF80LjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTRjYmUzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wXzQuMS4wLmJiCkBAIC0wLDAgKzEsMjAgQEAKK0RFU0NSSVBUSU9OID0gIk9wZW4gQXNzZXQgSW1wb3J0IExpYnJhcnkgaXMgYSBwb3J0YWJsZSBPcGVuIFNvdXJjZSBsaWJyYXJ5IHRvIGltcG9ydCBcCisgICAgICAgICAgICAgICB2YXJpb3VzIHdlbGwta25vd24gM0QgbW9kZWwgZm9ybWF0cyBpbiBhIHVuaWZvcm0gbWFubmVyLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYXNzaW1wLm9yZy8iCitTRUNUSU9OID0gImRldmVsIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTIxMTllZGVmMDkxNmIwYmQ1MTFjYjNjNzMxMDc2MjcxIgorCitERVBFTkRTID0gInpsaWIiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9hc3NpbXAvYXNzaW1wLmdpdCIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKKworU1JDUkVWID0gIjgwNzk5YmRiZjkwY2U2MjY0NzU2MzU4MTVlZTE4NTM3NzE4YTA1YjEiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UKKworRVhUUkFfT0VDTUFLRSA9ICItREFTU0lNUF9CVUlMRF9BU1NJTVBfVE9PTFM9T0ZGIC1EQVNTSU1QX0JVSUxEX1RFU1RTPU9GRiAtREFTU0lNUF9MSUJfSU5TVEFMTF9ESVI9JHtiYXNlbGlifSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3NfZ2l0LmJiCmluZGV4IDBiODk0MzUuLjVmYzljMmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zX2dpdC5iYgpAQCAtMTAsNyArMTAsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1idWlsZC1kZW1vcy13aXRoLXF1ZXN0aW9uYWJseS1saWNlbnNlZC1kYXRhLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLW9uLXg4Ni5wYXRjaCBcCiAiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIFNSQ1JFViA9ICIxOGRmMDBjN2I0Njc3YjA4ODk0ODZlMTY5Nzc4NTdhYTk4Nzk0N2UyIgogVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiVGhlc2UgYXJlIG5vdCB0aGUgcmVsZWFzZXMgeW91J3JlIGxvb2tpbmcgZm9yIgogUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi9kZW1vcy1Eb24tdC1idWlsZC10cmktb3ItY3ViZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi9kZW1vcy1Eb24tdC1idWlsZC10cmktb3ItY3ViZS5wYXRjaAppbmRleCAzY2YyNDFkLi5iY2Y4NGE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4vZGVtb3MtRG9uLXQtYnVpbGQtdHJpLW9yLWN1YmUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuL2RlbW9zLURvbi10LWJ1aWxkLXRyaS1vci1jdWJlLnBhdGNoCkBAIC0xMSw5ICsxMSwxMSBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQogU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIAotLS0tIGEvZGVtb3MvQ01ha2VMaXN0cy50eHQKLSsrKyBiL2RlbW9zL0NNYWtlTGlzdHMudHh0Ci1AQCAtNjEsNDYgKzYxLDYgQEAKK0luZGV4OiBnaXQvZGVtb3MvQ01ha2VMaXN0cy50eHQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9kZW1vcy9DTWFrZUxpc3RzLnR4dAorKysrIGdpdC9kZW1vcy9DTWFrZUxpc3RzLnR4dAorQEAgLTYzLDQ2ICs2Myw2IEBAIGVsc2VpZihVTklYKQogIGVsc2UoKQogIGVuZGlmKCkKICAKQEAgLTYwLDcgKzYyLDcgQEAKICAKICBpZihXSU4zMikKICAgICAgaW5jbHVkZV9kaXJlY3RvcmllcyAoCi1AQCAtMTE0LDQzICs3NCw2IEBACitAQCAtMTE2LDQzICs3Niw2IEBAIGVuZGlmKCkKICBhZGRfZXhlY3V0YWJsZSgke0FQSV9MT1dFUkNBU0V9aW5mbyB2dWxrYW5pbmZvLmMpCiAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7QVBJX0xPV0VSQ0FTRX1pbmZvICR7TElCUkFSSUVTfSkKICAKQEAgLTEwMyw0ICsxMDUsNCBAQAogLWVuZGlmKCkKICAKICBpZihVTklYKQotICAgICBpbnN0YWxsKFRBUkdFVFMgJHtBUElfTE9XRVJDQVNFfWluZm8gREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0JJTkRJUn0pCisgICAgIGlmKElOU1RBTExfTFZMX0ZJTEVTKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuXzEuMC41MS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuXzEuMC41MS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZGUzOWJjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbl8xLjAuNTEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLVNVTU1BUlkgPSAiM0QgZ3JhcGhpY3MgYW5kIGNvbXB1dGUgQVBJIGNvbW1vbiBsb2FkZXIiCi1ERVNDUklQVElPTiA9ICJWdWxrYW4gaXMgYSBuZXcgZ2VuZXJhdGlvbiBncmFwaGljcyBhbmQgY29tcHV0ZSBBUEkgXAotdGhhdCBwcm92aWRlcyBlZmZpY2llbnQgYWNjZXNzIHRvIG1vZGVybiBHUFVzLiBUaGVzZSBwYWNrYWdlcyBcCi1wcm92aWRlIG9ubHkgdGhlIGNvbW1vbiB2ZW5kb3ItYWdub3N0aWMgbGlicmFyeSBsb2FkZXIsIGhlYWRlcnMgYW5kIFwKLXRoZSB2dWxrYW5pbmZvIHV0aWxpdHkuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvdnVsa2FuLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tTG9hZGVyQW5kVmFsaWRhdGlvbkxheWVycyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTk5YzY0N2NhM2Q0ZjZhNGI5ZDg2MjhmNzU3YWFkMTU2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xvYWRlci9sb2FkZXIuYztlbmRsaW5lPTI1O21kNT1hODdjZDU0NDIyOTFjMjNkMWZjZTRlZWNlNGNmZGU5ZCIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLUxvYWRlckFuZFZhbGlkYXRpb25MYXllcnMuZ2l0O2JyYW5jaD1zZGstMS4wLjUxIFwKLSAgICAgICAgICAgZmlsZTovL2RlbW9zLURvbi10LWJ1aWxkLXRyaS1vci1jdWJlLnBhdGNoIFwKLSIKLVNSQ1JFViA9ICI4ZDAyMWU0ZDVhOWY5MTQzNmY0NDYyZGYxZGFmYjIyMjkwOGUyOTZkIgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAic2RrLSg/UDxwdmVyPlxkKyhcLlxkKykrKSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInZ1bGthbiIKLQotaW5oZXJpdCBjbWFrZSBweXRob24zbmF0aXZlIGxpYl9wYWNrYWdlIGRpc3Ryb19mZWF0dXJlc19jaGVjawotQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEgd2F5bGFuZCIKLQotRVhUUkFfT0VDTUFLRSA9ICItREJVSUxEX1dTSV9NSVJfU1VQUE9SVD1PRkYgXAotICAgICAgICAgICAgICAgICAtREJVSUxEX0xBWUVSUz1PRkYgXAotICAgICAgICAgICAgICAgICAtREJVSUxEX1RFU1RTPU9GRiIKLQotIyBtdXN0IGNob29zZSB4MTEgb3Igd2F5bGFuZCBvciBib3RoCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJycgLGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ3dheWxhbmQnLCAnJyAsZCl9IgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EQlVJTERfV1NJX1hMSUJfU1VQUE9SVD1PTiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PTiAtRERFTU9TX1dTSV9TRUxFQ1RJT049WENCLCAtREJVSUxEX1dTSV9YTElCX1NVUFBPUlQ9T0ZGIC1EQlVJTERfV1NJX1hDQl9TVVBQT1JUPU9GRiAtRERFTU9TX1dTSV9TRUxFQ1RJT049V0FZTEFORCwgbGlieGNiIGxpYngxMSBsaWJ4cmFuZHIiCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi1EQlVJTERfV1NJX1dBWUxBTkRfU1VQUE9SVD1PTiwgLURCVUlMRF9XU0lfV0FZTEFORF9TVVBQT1JUPU9GRiwgd2F5bGFuZCIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAibWVzYS12dWxrYW4tZHJpdmVycyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbl8xLjAuNjUuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbl8xLjAuNjUuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzhhODk1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuXzEuMC42NS4yLmJiCkBAIC0wLDAgKzEsMzYgQEAKK1NVTU1BUlkgPSAiM0QgZ3JhcGhpY3MgYW5kIGNvbXB1dGUgQVBJIGNvbW1vbiBsb2FkZXIiCitERVNDUklQVElPTiA9ICJWdWxrYW4gaXMgYSBuZXcgZ2VuZXJhdGlvbiBncmFwaGljcyBhbmQgY29tcHV0ZSBBUEkgXAordGhhdCBwcm92aWRlcyBlZmZpY2llbnQgYWNjZXNzIHRvIG1vZGVybiBHUFVzLiBUaGVzZSBwYWNrYWdlcyBcCitwcm92aWRlIG9ubHkgdGhlIGNvbW1vbiB2ZW5kb3ItYWdub3N0aWMgbGlicmFyeSBsb2FkZXIsIGhlYWRlcnMgYW5kIFwKK3RoZSB2dWxrYW5pbmZvIHV0aWxpdHkuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvdnVsa2FuLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tTG9hZGVyQW5kVmFsaWRhdGlvbkxheWVycyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTk5YzY0N2NhM2Q0ZjZhNGI5ZDg2MjhmNzU3YWFkMTU2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xvYWRlci9sb2FkZXIuYztlbmRsaW5lPTI1O21kNT1hODdjZDU0NDIyOTFjMjNkMWZjZTRlZWNlNGNmZGU5ZCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLUxvYWRlckFuZFZhbGlkYXRpb25MYXllcnMuZ2l0O2JyYW5jaD1zZGstMS4wLjY1IFwKKyAgICAgICAgICAgZmlsZTovL2RlbW9zLURvbi10LWJ1aWxkLXRyaS1vci1jdWJlLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDUkVWID0gIjczNDg2YTFhMTY5ZDg2MmQ1MjEwZTJhZDUyMGQ5NTMxOWEyMzgzZmEiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJzZGstKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAidnVsa2FuIgorCitpbmhlcml0IGNtYWtlIHB5dGhvbjNuYXRpdmUgbGliX3BhY2thZ2UgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIngxMSB3YXlsYW5kIgorCitFWFRSQV9PRUNNQUtFID0gIi1EQlVJTERfV1NJX01JUl9TVVBQT1JUPU9GRiBcCisgICAgICAgICAgICAgICAgIC1EQlVJTERfTEFZRVJTPU9GRiBcCisgICAgICAgICAgICAgICAgIC1EQlVJTERfVEVTVFM9T0ZGIgorCisjIG11c3QgY2hvb3NlIHgxMSBvciB3YXlsYW5kIG9yIGJvdGgKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnJyAsZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCcsICcnICxkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLURCVUlMRF9XU0lfWExJQl9TVVBQT1JUPU9OIC1EQlVJTERfV1NJX1hDQl9TVVBQT1JUPU9OIC1EREVNT1NfV1NJX1NFTEVDVElPTj1YQ0IsIC1EQlVJTERfV1NJX1hMSUJfU1VQUE9SVD1PRkYgLURCVUlMRF9XU0lfWENCX1NVUFBPUlQ9T0ZGIC1EREVNT1NfV1NJX1NFTEVDVElPTj1XQVlMQU5ELCBsaWJ4Y2IgbGlieDExIGxpYnhyYW5kciIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLURCVUlMRF9XU0lfV0FZTEFORF9TVVBQT1JUPU9OLCAtREJVSUxEX1dTSV9XQVlMQU5EX1NVUFBPUlQ9T0ZGLCB3YXlsYW5kIgorCitSUkVDT01NRU5EU18ke1BOfSA9ICJtZXNhLXZ1bGthbi1kcml2ZXJzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YWZmbGUvd2FmZmxlXzEuNS4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YWZmbGUvd2FmZmxlXzEuNS4yLmJiCmluZGV4IGE1MTc5ZGIuLjQzYzNlZGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2FmZmxlL3dhZmZsZV8xLjUuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dhZmZsZS93YWZmbGVfMS41LjIuYmIKQEAgLTM1LDYgKzM1LDMgQEAKIAogIyBJIHNheSB2aXJ0dWFsL2xpYmdsLCBhY3R1YWxseSB3YW50cyBlZ2wucGMKIFBBQ0tBR0VDT05GSUdbeDExLWVnbF0gPSAiLUR3YWZmbGVfaGFzX3gxMV9lZ2w9MSwtRHdhZmZsZV9oYXNfeDExX2VnbD0wLHZpcnR1YWwvJHtNTFBSRUZJWH1saWJnbCBsaWJ4Y2IiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jbWFrZS9Nb2R1bGVzL0ZpbmRXYWZmbGUuY21ha2UgXAotICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vY21ha2UvV2FmZmxlLyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dC8wMDAxLXRvb2xzLUZpeC1yYWNlLWluLWF1dG90b29scy1pbnN0YWxsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0LzAwMDEtdG9vbHMtRml4LXJhY2UtaW4tYXV0b3Rvb2xzLWluc3RhbGwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2Njc1MzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0LzAwMDEtdG9vbHMtRml4LXJhY2UtaW4tYXV0b3Rvb2xzLWluc3RhbGwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIDVlODg2NGM1YjdhMmUyNThlZWEwNDFiMGVmNjZkYWM3ZmNhYjliN2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogV2VkLCA5IEF1ZyAyMDE3IDA5OjQ3OjE0ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRvb2xzOiBGaXggcmFjZSBpbiAoYXV0b3Rvb2xzKSBpbnN0YWxsCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLWV4ZWMvZGF0YSBkaXN0aW5jdGlvbiBpcyBkb25lIGJhc2VkIG9uIGluc3RhbGwgZGlyIHNvIGNvbXBhdCBzY3JpcHRzCi1tdXN0IGJlIG1vdmVkIGluIGV4ZWMgaG9vay4KLQotVGhpcyBzaG91bGQgZml4IHRoaXMgb2NjYXNpb25hbCBmYWlsdXJlOgotfMKgaW5zdGFsbDogY2Fubm90IGNoYW5nZSBwZXJtaXNzaW9ucyBvZgotfMKg4oCYL3Vzci9iaW4vbGliaW5wdXQtZGVidWctZXZlbnRzLmNvbXBhdOKAmTogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLS0tLQotIHRvb2xzL01ha2VmaWxlLmFtIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdG9vbHMvTWFrZWZpbGUuYW0gYi90b29scy9NYWtlZmlsZS5hbQotaW5kZXggMmM4NjYwYi4uN2VlOGI5MCAxMDA2NDQKLS0tLSBhL3Rvb2xzL01ha2VmaWxlLmFtCi0rKysgYi90b29scy9NYWtlZmlsZS5hbQotQEAgLTYzLDcgKzYzLDcgQEAgZW5kaWYKLSAKLSBFWFRSQV9ESVNUID0gbWFrZS1wdHJhY2NlbC1ncmFwaHMuc2ggaW5zdGFsbC1jb21wYXQtc2NyaXB0cy5zaCAkKGJpbl9TQ1JJUFRTKQotIAotLWluc3RhbGwtZGF0YS1ob29rOgotK2luc3RhbGwtZXhlYy1ob29rOgotIAkoY2QgJChERVNURElSKSQoYmluZGlyKSAmJiBtdiBsaWJpbnB1dC1saXN0LWRldmljZXMuY29tcGF0IGxpYmlucHV0LWxpc3QtZGV2aWNlcykKLSAJKGNkICQoREVTVERJUikkKGJpbmRpcikgJiYgbXYgbGliaW5wdXQtZGVidWctZXZlbnRzLmNvbXBhdCBsaWJpbnB1dC1kZWJ1Zy1ldmVudHMpCi0gCi0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS44LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS44LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyMWJhYmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0XzEuOC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IHRvIGhhbmRsZSBpbnB1dCBkZXZpY2VzIGluIFdheWxhbmQgY29tcG9zaXRvcnMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL2xpYmlucHV0LyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yMTg0YWVmMzhmZjEzN2VkMzNjZTlhNjNiOWQxZWI4ZiIKLQotREVQRU5EUyA9ICJsaWJldmRldiB1ZGV2IG10ZGV2IgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlLyR7QlBOfS8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS10b29scy1GaXgtcmFjZS1pbi1hdXRvdG9vbHMtaW5zdGFsbC5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4MjQ3ZjBiYjY3MDUyZmZiMjcyYzUwYzNjYjljNTk5OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMzU5MGE5MDM3ZTU2MWE1NzkxYzhiZDNiMzRiZmQzMGZhZDVjYWNkOGNiZWZjMGQ3NWZhZmUzYTQxZDA3MTQ3IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgbGliX3BhY2thZ2UKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbbGlidW53aW5kXSA9ICItLXdpdGgtbGlidW53aW5kLC0td2l0aG91dC1saWJ1bndpbmQsbGlidW53aW5kIgotUEFDS0FHRUNPTkZJR1tsaWJ3YWNvbV0gPSAiLS1lbmFibGUtbGlid2Fjb20sLS1kaXNhYmxlLWxpYndhY29tLGxpYndhY29tIgotUEFDS0FHRUNPTkZJR1tndWldID0gIi0tZW5hYmxlLWRlYnVnLWd1aSwtLWRpc2FibGUtZGVidWctZ3VpLGNhaXJvIGd0ayszIgotCi1VREVWRElSID0gImBwa2ctY29uZmlnIC0tdmFyaWFibGU9dWRldmRpciB1ZGV2YCIKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtdWRldi1kaXI9JHtVREVWRElSfSAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiAtLWRpc2FibGUtdGVzdHMiCi0KLSMgcGFja2FnZSBuYW1lIGNoYW5nZWQgaW4gMS44LjEgdXBncmFkZTogbWFrZSBzdXJlIHBhY2thZ2UgdXBncmFkZXMgd29yawotUlBST1ZJREVTXyR7UE59ID0gImxpYmlucHV0IgotUlJFUExBQ0VTXyR7UE59ID0gImxpYmlucHV0IgotUkNPTkZMSUNUU18ke1BOfSA9ICJsaWJpbnB1dCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjkuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjkuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2E0OWRmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0XzEuOS40LmJiCkBAIC0wLDAgKzEsMjkgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSB0byBoYW5kbGUgaW5wdXQgZGV2aWNlcyBpbiBXYXlsYW5kIGNvbXBvc2l0b3JzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9saWJpbnB1dC8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjE4NGFlZjM4ZmYxMzdlZDMzY2U5YTYzYjlkMWViOGYiCisKK0RFUEVORFMgPSAibGliZXZkZXYgdWRldiBtdGRldiIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS8ke0JQTn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjhiNDNkMDdkMTY5OGZiMjA3YTA0OTJmYzY3NTU0ZDRmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBiY2RiZDRjNGUzYzJhMmRiMzIyZmJkZjJlZjMyODRmMmU2ZDZmYjdiZTNhZjgwZTZkOGRlNzc4M2Y2NzUxOTAiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxpYmlucHV0LSg/UDxwdmVyPlxkK1wuXGQrXC4oPyE5XGQrKVxkKykiCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBsaWJfcGFja2FnZQorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tsaWJ3YWNvbV0gPSAiLURsaWJ3YWNvbT10cnVlLC1EbGlid2Fjb209ZmFsc2UsbGlid2Fjb20iCitQQUNLQUdFQ09ORklHW2d1aV0gPSAiLURkZWJ1Zy1ndWk9dHJ1ZSwtRGRlYnVnLWd1aT1mYWxzZSxjYWlybyBndGsrMyIKKworVURFVkRJUiA9ICJgcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAiCisKK0VYVFJBX09FTUVTT04gKz0gIi1EdWRldi1kaXI9JHtVREVWRElSfSAtRGRvY3VtZW50YXRpb249ZmFsc2UgLUR0ZXN0cz1mYWxzZSIKKworIyBwYWNrYWdlIG5hbWUgY2hhbmdlZCBpbiAxLjguMSB1cGdyYWRlOiBtYWtlIHN1cmUgcGFja2FnZSB1cGdyYWRlcyB3b3JrCitSUFJPVklERVNfJHtQTn0gPSAibGliaW5wdXQiCitSUkVQTEFDRVNfJHtQTn0gPSAibGliaW5wdXQiCitSQ09ORkxJQ1RTXyR7UE59ID0gImxpYmlucHV0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY5ZTlmMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiQ29sbGVjdGlvbiBvZiBhZGRpdGlvbmFsIFdheWxhbmQgcHJvdG9jb2xzIgotREVTQ1JJUFRJT04gPSAiV2F5bGFuZCBwcm90b2NvbHMgdGhhdCBhZGQgZnVuY3Rpb25hbGl0eSBub3QgXAotYXZhaWxhYmxlIGluIHRoZSBXYXlsYW5kIGNvcmUgcHJvdG9jb2wuIFN1Y2ggcHJvdG9jb2xzIGVpdGhlciBhZGQgXAotY29tcGxldGVseSBuZXcgZnVuY3Rpb25hbGl0eSwgb3IgZXh0ZW5kIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHNvbWUgb3RoZXIgXAotcHJvdG9jb2wgZWl0aGVyIGluIFdheWxhbmQgY29yZSwgb3Igc29tZSBvdGhlciBwcm90b2NvbCBpbiBcCi13YXlsYW5kLXByb3RvY29scy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmciCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM3YjEyYjY3MDJkYTM4Y2EwMjhhY2U1NGFhZTNkNDg0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3N0YWJsZS9wcmVzZW50YXRpb24tdGltZS9wcmVzZW50YXRpb24tdGltZS54bWw7ZW5kbGluZT0yNjttZDU9NDY0NmNkN2Q5ZWRjOWZhNTVkYjk0MWYyZDNhN2RjNTMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjg0YTc4NDZjMmI2YTZhM2UyNjVmYzliZTM2NDUzZTYwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU3MTljNTFkNzM1NDg2NDk4MzE3MWM1MDgzZTkzYTcyYWM5OTIyOWUyYjQ2MGM0YmIxMDUxM2RlMDg4MzljMGEiCi0KLWluaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VTID0gIiR7UE59IgotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vcGtnY29uZmlnL3dheWxhbmQtcHJvdG9jb2xzLnBjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWYxZWUxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuMTMuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJDb2xsZWN0aW9uIG9mIGFkZGl0aW9uYWwgV2F5bGFuZCBwcm90b2NvbHMiCitERVNDUklQVElPTiA9ICJXYXlsYW5kIHByb3RvY29scyB0aGF0IGFkZCBmdW5jdGlvbmFsaXR5IG5vdCBcCithdmFpbGFibGUgaW4gdGhlIFdheWxhbmQgY29yZSBwcm90b2NvbC4gU3VjaCBwcm90b2NvbHMgZWl0aGVyIGFkZCBcCitjb21wbGV0ZWx5IG5ldyBmdW5jdGlvbmFsaXR5LCBvciBleHRlbmQgdGhlIGZ1bmN0aW9uYWxpdHkgb2Ygc29tZSBvdGhlciBcCitwcm90b2NvbCBlaXRoZXIgaW4gV2F5bGFuZCBjb3JlLCBvciBzb21lIG90aGVyIHByb3RvY29sIGluIFwKK3dheWxhbmQtcHJvdG9jb2xzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzdiMTJiNjcwMmRhMzhjYTAyOGFjZTU0YWFlM2Q0ODQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3RhYmxlL3ByZXNlbnRhdGlvbi10aW1lL3ByZXNlbnRhdGlvbi10aW1lLnhtbDtlbmRsaW5lPTI2O21kNT00NjQ2Y2Q3ZDllZGM5ZmE1NWRiOTQxZjJkM2E3ZGM1MyIKKworU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMjkzMTIxNDlkYWZjZDRhMGU3MzliYTk0OTk1YTU3NGQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDc1OGJjODAwOGQ1MzMyZjQzMWIyYTg0ZmVhN2RlNjRkOTcxY2UyNzBlZDIwODIwNmEwOThmZjJlYmM2OGYzOCIKKworaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRVMgPSAiJHtQTn0iCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9wa2djb25maWcvd2F5bGFuZC1wcm90b2NvbHMucGMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC9maXhwYXRoaW5wY2ZpbGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvZml4cGF0aGlucGNmaWxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDM1MjZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvZml4cGF0aGlucGNmaWxlcy5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGaXggd2F5bGFuZC1jbGllbnQgYW5kIHdheWxhbmQtc2Nhbm5lciBwYyBmaWxlcworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogRmFiaWVuIExhaG91ZGVyZSA8ZmFiaWVuLmxhaG91ZGVyZUBjb2xsYWJvcmEuY28udWs+CisKK0luZGV4OiB3YXlsYW5kLTEuMTQuMC9zcmMvd2F5bGFuZC1jbGllbnQucGMuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB3YXlsYW5kLTEuMTQuMC5vcmlnL3NyYy93YXlsYW5kLWNsaWVudC5wYy5pbgorKysrIHdheWxhbmQtMS4xNC4wL3NyYy93YXlsYW5kLWNsaWVudC5wYy5pbgorQEAgLTEsNyArMSw3IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorIGRhdGFyb290ZGlyPUBkYXRhcm9vdGRpckAKKy1wa2dkYXRhZGlyPUBkYXRhZGlyQC9AUEFDS0FHRUAKKytwa2dkYXRhZGlyPSR7cGNfc3lzcm9vdGRpcn1AZGF0YWRpckAvQFBBQ0tBR0VACisgbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAKK0luZGV4OiB3YXlsYW5kLTEuMTQuMC9zcmMvd2F5bGFuZC1zY2FubmVyLnBjLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gd2F5bGFuZC0xLjE0LjAub3JpZy9zcmMvd2F5bGFuZC1zY2FubmVyLnBjLmluCisrKysgd2F5bGFuZC0xLjE0LjAvc3JjL3dheWxhbmQtc2Nhbm5lci5wYy5pbgorQEAgLTIsNyArMiw3IEBAIHByZWZpeD1AcHJlZml4QAorIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKyBkYXRhcm9vdGRpcj1AZGF0YXJvb3RkaXJACisgcGtnZGF0YWRpcj1AZGF0YWRpckAvQFBBQ0tBR0VACistd2F5bGFuZF9zY2FubmVyPUBiaW5kaXJAL3dheWxhbmQtc2Nhbm5lcgorK3dheWxhbmRfc2Nhbm5lcj13YXlsYW5kLXNjYW5uZXIKKyAKKyBOYW1lOiBXYXlsYW5kIFNjYW5uZXIKKyBEZXNjcmlwdGlvbjogV2F5bGFuZCBzY2FubmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8xLjEzLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8xLjEzLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5Mzk2YjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmRfMS4xMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotU1VNTUFSWSA9ICJXYXlsYW5kLCBhIHByb3RvY29sIGJldHdlZW4gYSBjb21wb3NpdG9yIGFuZCBjbGllbnRzIgotREVTQ1JJUFRJT04gPSAiV2F5bGFuZCBpcyBhIHByb3RvY29sIGZvciBhIGNvbXBvc2l0b3IgdG8gdGFsayB0byBpdHMgY2xpZW50cyBcCi1hcyB3ZWxsIGFzIGEgQyBsaWJyYXJ5IGltcGxlbWVudGF0aW9uIG9mIHRoYXQgcHJvdG9jb2wuIFRoZSBjb21wb3NpdG9yIGNhbiBiZSBcCi1hIHN0YW5kYWxvbmUgZGlzcGxheSBzZXJ2ZXIgcnVubmluZyBvbiBMaW51eCBrZXJuZWwgbW9kZXNldHRpbmcgYW5kIGV2ZGV2IFwKLWlucHV0IGRldmljZXMsIGFuIFggYXBwbGljYXRpb24sIG9yIGEgd2F5bGFuZCBjbGllbnQgaXRzZWxmLiBUaGUgY2xpZW50cyBjYW4gXAotYmUgdHJhZGl0aW9uYWwgYXBwbGljYXRpb25zLCBYIHNlcnZlcnMgKHJvb3RsZXNzIG9yIGZ1bGxzY3JlZW4pIG9yIG90aGVyIFwKLWRpc3BsYXkgc2VydmVycy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmciCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIzMWQ4ZjUzYjZhYWYyYjQ5ODVkN2RkNzgxMGE3MGQxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy93YXlsYW5kLXNlcnZlci5jO2VuZGxpbmU9MjQ7bWQ1PWI4ZTA0NjE2NGE3NjZiYjFlZGU4YmEzOGU5ZGNkN2NlIgotCi1ERVBFTkRTID0gImV4cGF0IGxpYnhtbDIgbGliZmZpIHdheWxhbmQtbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjYWUxNTJlZDk1NmRhNmRlNTNmOTcyN2JjMWM0NTAzOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2OWIwNTJjMDMxYTYxZTg5YWY3Y2M4NzgwODkzZDBkYTFlMzAxNDkyMzUyYWE0NDlkZWU5MzQ1MDQzZTZmZTUxIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIC0td2l0aC1ob3N0LXNjYW5uZXIiCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIC0tZGlzYWJsZS1saWJyYXJpZXMiCi0KLSMgV2F5bGFuZCBpbnN0YWxscyBhIE00IG1hY3JvIGZvciBvdGhlciBwcm9qZWN0cyB0byB1c2UsIHdoaWNoIHVzZXMgdGhlIHRhcmdldAotIyBwa2ctY29uZmlnIHRvIGZpbmQgZmlsZXMuICBSZXBsYWNlIHBrZy1jb25maWcgd2l0aCBwa2ctY29uZmlnLW5hdGl2ZS4KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgc2VkIC1lICdzLFBLR19DSEVDS19NT0RVTEVTKC4qKSwsZycgXAotICAgICAgLWUgJ3MsJFBLR19DT05GSUcscGtnLWNvbmZpZy1uYXRpdmUsZycgXAotICAgICAgLWkgJHtEfS8ke2RhdGFkaXJ9L2FjbG9jYWwvd2F5bGFuZC1zY2FubmVyLm00Ci19Ci0KLXN5c3Jvb3Rfc3RhZ2VfYWxsX2FwcGVuZF9jbGFzcy10YXJnZXQgKCkgewotCXJtICR7U1lTUk9PVF9ERVNURElSfS8ke2RhdGFkaXJ9L2FjbG9jYWwvd2F5bGFuZC1zY2FubmVyLm00Ci0JY3AgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9hY2xvY2FsL3dheWxhbmQtc2Nhbm5lci5tNCAke1NZU1JPT1RfREVTVERJUn0vJHtkYXRhZGlyfS9hY2xvY2FsLwotfQotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vKiR7U09MSUJTfSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9ICR7ZGF0YWRpcn0vd2F5bGFuZCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmRfMS4xNC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmRfMS4xNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhOWZmOTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8xLjE0LjAuYmIKQEAgLTAsMCArMSw0MiBAQAorU1VNTUFSWSA9ICJXYXlsYW5kLCBhIHByb3RvY29sIGJldHdlZW4gYSBjb21wb3NpdG9yIGFuZCBjbGllbnRzIgorREVTQ1JJUFRJT04gPSAiV2F5bGFuZCBpcyBhIHByb3RvY29sIGZvciBhIGNvbXBvc2l0b3IgdG8gdGFsayB0byBpdHMgY2xpZW50cyBcCithcyB3ZWxsIGFzIGEgQyBsaWJyYXJ5IGltcGxlbWVudGF0aW9uIG9mIHRoYXQgcHJvdG9jb2wuIFRoZSBjb21wb3NpdG9yIGNhbiBiZSBcCithIHN0YW5kYWxvbmUgZGlzcGxheSBzZXJ2ZXIgcnVubmluZyBvbiBMaW51eCBrZXJuZWwgbW9kZXNldHRpbmcgYW5kIGV2ZGV2IFwKK2lucHV0IGRldmljZXMsIGFuIFggYXBwbGljYXRpb24sIG9yIGEgd2F5bGFuZCBjbGllbnQgaXRzZWxmLiBUaGUgY2xpZW50cyBjYW4gXAorYmUgdHJhZGl0aW9uYWwgYXBwbGljYXRpb25zLCBYIHNlcnZlcnMgKHJvb3RsZXNzIG9yIGZ1bGxzY3JlZW4pIG9yIG90aGVyIFwKK2Rpc3BsYXkgc2VydmVycy4iCitIT01FUEFHRSA9ICJodHRwOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmciCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIzMWQ4ZjUzYjZhYWYyYjQ5ODVkN2RkNzgxMGE3MGQxIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy93YXlsYW5kLXNlcnZlci5jO2VuZGxpbmU9MjQ7bWQ1PWI4ZTA0NjE2NGE3NjZiYjFlZGU4YmEzOGU5ZGNkN2NlIgorCitERVBFTkRTID0gImV4cGF0IGxpYnhtbDIgbGliZmZpIHdheWxhbmQtbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCisJICAgZmlsZTovL2ZpeHBhdGhpbnBjZmlsZXMucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMDIzNWY2MDc1YzMyYzNiZTYxY2ZmOTRmYTBiOWYxMDgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWQ4MGNhYmMwOTYxYTc1OWE0MjA5MmUyYzM5YWFiZmMxZWM5YTEzYzg2Yzk4YmJlMmI4MTJmMDA4ZGEyN2FiOCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZG9jdW1lbnRhdGlvbiAtLXdpdGgtaG9zdC1zY2FubmVyIgorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLWRpc2FibGUtZG9jdW1lbnRhdGlvbiAtLWRpc2FibGUtbGlicmFyaWVzIgorCisjIFdheWxhbmQgaW5zdGFsbHMgYSBNNCBtYWNybyBmb3Igb3RoZXIgcHJvamVjdHMgdG8gdXNlLCB3aGljaCB1c2VzIHRoZSB0YXJnZXQKKyMgcGtnLWNvbmZpZyB0byBmaW5kIGZpbGVzLiAgUmVwbGFjZSBwa2ctY29uZmlnIHdpdGggcGtnLWNvbmZpZy1uYXRpdmUuCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgIHNlZCAtZSAncyxQS0dfQ0hFQ0tfTU9EVUxFUyguKiksLGcnIFwKKyAgICAgIC1lICdzLCRQS0dfQ09ORklHLHBrZy1jb25maWctbmF0aXZlLGcnIFwKKyAgICAgIC1pICR7RH0vJHtkYXRhZGlyfS9hY2xvY2FsL3dheWxhbmQtc2Nhbm5lci5tNAorfQorCitzeXNyb290X3N0YWdlX2FsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKKwlybSAke1NZU1JPT1RfREVTVERJUn0vJHtkYXRhZGlyfS9hY2xvY2FsL3dheWxhbmQtc2Nhbm5lci5tNAorCWNwICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vYWNsb2NhbC93YXlsYW5kLXNjYW5uZXIubTQgJHtTWVNST09UX0RFU1RESVJ9LyR7ZGF0YWRpcn0vYWNsb2NhbC8KK30KKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9Lyoke1NPTElCU30iCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfSAke2RhdGFkaXJ9L3dheWxhbmQiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtcHJvdG9jb2xzLXBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtY29uZmlndXJlLmFjLUZpeC13YXlsYW5kLXByb3RvY29scy1wYXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjRkNzljLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtcHJvdG9jb2xzLXBhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDFjZmMxNDM0YTVkMzg1YTc0ZGU1OTNlYzc2MDE2NzRkYmEzOWUyZmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogV2VkLCAxMSBNYXkgMjAxNiAxNjoxNjozMCArMDMwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IEZpeCB3YXlsYW5kLXByb3RvY29scyBwYXRoCi0KLVRoZSB3YXlsYW5kLXByb3RvY29scyBkaXJlY3RvcnkgaXMgdXNlZCBkdXJpbmcgYnVpbGQ6IEZpeCB0aGUgcGF0aAotdG8gcG9pbnQgdG8gc3lzcm9vdCBzcGVjaWZpZWQgaW4gcmVjaXBlLgotCi1Ob3JtYWxseSBQS0dfQ09ORklHX1NZU1JPT1RfRElSIGNvdWxkIGJlIHVzZWQgaW4gY29uZmlndXJlLmFjIGJ1dCB0aGF0Ci1icmVha3MgbXVsdGlsaWIgd2VzdG9uIGFzIGl0IHdvdWxkIHBvaW50IHRvIG11bHRpbGliIHN5c3Jvb3Qgd2hlbiB0aGUKLShhbGxhcmNoKSB3YXlsYW5kLXByb3RvY29scyBpcyBhY3R1YWxseSBpbiB0aGUgbWFjaGluZSBzeXNyb290LgotCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLS0tLQotIGNvbmZpZ3VyZS5hYyB8ICAgIDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xODcsNyArMTg3LDcgQEAgUEtHX0NIRUNLX01PRFVMRVMoTElCSU5QVVRfQkFDS0VORCwgW2xpYgotIFBLR19DSEVDS19NT0RVTEVTKENPTVBPU0lUT1IsIFskQ09NUE9TSVRPUl9NT0RVTEVTXSkKLSAKLSBQS0dfQ0hFQ0tfTU9EVUxFUyhXQVlMQU5EX1BST1RPQ09MUywgW3dheWxhbmQtcHJvdG9jb2xzID49IDEuN10sCi0tCQkgIFthY193YXlsYW5kX3Byb3RvY29sc19wa2dkYXRhZGlyPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1wcm90b2NvbHNgXSkKLSsJCSAgW2FjX3dheWxhbmRfcHJvdG9jb2xzX3BrZ2RhdGFkaXI9JHtXQVlMQU5EX1BST1RPQ09MU19TWVNST09UX0RJUn1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYF0pCi0gQUNfU1VCU1QoV0FZTEFORF9QUk9UT0NPTFNfREFUQURJUiwgJGFjX3dheWxhbmRfcHJvdG9jb2xzX3BrZ2RhdGFkaXIpCi0gCi0gQUNfQVJHX0VOQUJMRSh3YXlsYW5kLWNvbXBvc2l0b3IsIFsgIC0tZW5hYmxlLXdheWxhbmQtY29tcG9zaXRvcl0sLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi8wMDAxLW1ha2UtZXJyb3ItcG9ydGFibGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtbWFrZS1lcnJvci1wb3J0YWJsZS5wYXRjaAppbmRleCBlMjIxM2FjLi4wNjcxYTQ1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtbWFrZS1lcnJvci1wb3J0YWJsZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtbWFrZS1lcnJvci1wb3J0YWJsZS5wYXRjaApAQCAtMTYsOSArMTYsMTEgQEAKICAzIGZpbGVzIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKICBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3dlc3Rvbi1lcnJvci5oCiAKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNjAsNiArNjAsOCBAQCBBQ19DSEVDS19ERUNMKENMT0NLX01PTk9UT05JQyxbXSwKK0luZGV4OiB3ZXN0b24tMy4wLjAvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gd2VzdG9uLTMuMC4wLm9yaWcvY29uZmlndXJlLmFjCisrKysgd2VzdG9uLTMuMC4wL2NvbmZpZ3VyZS5hYworQEAgLTEwMyw2ICsxMDMsOCBAQCBBQ19DSEVDS19ERUNMKENMT0NLX01PTk9UT05JQyxbXSwKICAJICAgICAgW1sjaW5jbHVkZSA8dGltZS5oPl1dKQogIEFDX0NIRUNLX0hFQURFUlMoW2V4ZWNpbmZvLmhdKQogIApAQCAtMjYsOSArMjgsMTEgQEAKICsKICBBQ19DSEVDS19GVU5DUyhbbWtvc3RlbXAgc3RyY2hybnVsIGluaXRncm91cHMgcG9zaXhfZmFsbG9jYXRlXSkKICAKLSBDT01QT1NJVE9SX01PRFVMRVM9IndheWxhbmQtc2VydmVyID49ICRXQVlMQU5EX1BSRVJFUV9WRVJTSU9OIHBpeG1hbi0xID49IDAuMjUuMiIKKyAjIGNoZWNrIGZvciBsaWJkcm0gYXMgYSBidWlsZC10aW1lIGRlcGVuZGVuY3kgb25seQorSW5kZXg6IHdlc3Rvbi0zLjAuMC9saWJ3ZXN0b24vd2VzdG9uLWVycm9yLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwKLSsrKyBiL2xpYndlc3Rvbi93ZXN0b24tZXJyb3IuaAorKysrIHdlc3Rvbi0zLjAuMC9saWJ3ZXN0b24vd2VzdG9uLWVycm9yLmgKIEBAIC0wLDAgKzEsMjAgQEAKICsjaWZuZGVmIF9XRVNUT05fRVJST1JfSAogKyNkZWZpbmUgX1dFU1RPTl9FUlJPUl9ICkBAIC01MCw4ICs1NCwxMCBAQAogKwogKyNlbmRpZgogKwotLS0tIGEvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYwotKysrIGIvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYworSW5kZXg6IHdlc3Rvbi0zLjAuMC9saWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gd2VzdG9uLTMuMC4wLm9yaWcvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYworKysrIHdlc3Rvbi0zLjAuMC9saWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jCiBAQCAtMzMsNyArMzMsNiBAQAogICNpbmNsdWRlIDxwb2xsLmg+CiAgI2luY2x1ZGUgPGVycm5vLmg+CkBAIC02MCw3ICs2Niw3IEBACiAgI2luY2x1ZGUgPGdldG9wdC5oPgogIAogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLUBAIC01OSw2ICs1OCw3IEBACitAQCAtNjAsNiArNTksNyBAQAogICNlbmRpZgogIAogICNpbmNsdWRlICJ3ZXN0b24tbGF1bmNoLmgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL2ZpeC1taXNzaW5nLWhlYWRlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vZml4LW1pc3NpbmctaGVhZGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YzBkNGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL2ZpeC1taXNzaW5nLWhlYWRlci5wYXRjaApAQCAtMCwwICsxLDMwIEBACitPbiB0aGUgbXVzbCBDIGxpYnJhcnksIHRlc3RzL3RpbWVzcGVjLXRleHQuYyBkb2VzIG5vdCBidWlsZCwgd2l0aCB0aGUKK2ZvbGxvd2luZyBlcnJvcjoKKworICAgIEluIGZpbGUgaW5jbHVkZWQgZnJvbSB0ZXN0cy90aW1lc3BlYy10ZXN0LmM6MzY6MDoKKyAgICAuL3NoYXJlZC90aW1lc3BlYy11dGlsLmg6NDE6MjE6IHdhcm5pbmc6IOKAmHN0cnVjdCB0aW1lc3BlY+KAmSBkZWNsYXJlZAorICAgIGluc2lkZSBwYXJhbWV0ZXIgbGlzdCB3aWxsIG5vdCBiZSB2aXNpYmxlIG91dHNpZGUgb2YgdGhpcyBkZWZpbml0aW9uCisgICAgb3IgZGVjbGFyYXRpb24KKyAgICAgdGltZXNwZWNfc3ViKHN0cnVjdCB0aW1lc3BlYyAqciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fgorICAgWy4uLl0KKworSW5kZWVkLCBzdHJ1Y3QgdGltZXNwZWMgaXMgZGVmaW5lZCBpbiB0aW1lLmgsIHNvIHdlIG11c3QgaW5jbHVkZSBpdC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZmE0MWJkZmJjMGI5NjJmZDczYjg5ZjAxYWFiMWE1MzcwYzljMjhlYl0KKworU2lnbmVkLW9mZi1ieTogIllhbm4gRS4gTU9SSU4iIDx5YW5uLm1vcmluLjE5OThAZnJlZS5mcj4KK1Jldmlld2VkLWJ5OiBQZWtrYSBQYWFsYW5lbiA8cGVra2EucGFhbGFuZW5AY29sbGFib3JhLmNvLnVrPgorCitJbmRleDogd2VzdG9uLTMuMC4wL3NoYXJlZC90aW1lc3BlYy11dGlsLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB3ZXN0b24tMy4wLjAub3JpZy9zaGFyZWQvdGltZXNwZWMtdXRpbC5oCisrKysgd2VzdG9uLTMuMC4wL3NoYXJlZC90aW1lc3BlYy11dGlsLmgKK0BAIC0yOCw2ICsyOCw3IEBACisgCisgI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxhc3NlcnQuaD4KKysjaW5jbHVkZSA8dGltZS5oPgorIAorICNkZWZpbmUgTlNFQ19QRVJfU0VDIDEwMDAwMDAwMDAKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vd2VzdG9uLWdsLXJlbmRlcmVyLVNldC1waXRjaC1jb3JyZWN0bHktZm9yLXN1YnNhbXBsZWQtdGV4dHVyZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL3dlc3Rvbi1nbC1yZW5kZXJlci1TZXQtcGl0Y2gtY29ycmVjdGx5LWZvci1zdWJzYW1wbGVkLXRleHR1cmVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzZTFkMDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL3dlc3Rvbi1nbC1yZW5kZXJlci1TZXQtcGl0Y2gtY29ycmVjdGx5LWZvci1zdWJzYW1wbGVkLXRleHR1cmVzLnBhdGNoCkBAIC0wLDAgKzEsNTUgQEAKK011bHRpLXBsYW5lIHN1Yi1zYW1wbGVkIHRleHR1cmVzIGhhdmUgcGFydGlhbCB3aWR0aC9oZWlnaHQsIGUuZy4KK1lVVjQyMC9JNDIwIGhhcyBhIGZ1bGwtc2l6ZSBZIHBsYW5lLCBmb2xsb3dlZCBieSBhIGhhbGYtd2lkdGgvaGVpZ2h0IFUKK3BsYW5lLCBhbmQgYSBoYWxmLXdpZHRoL2hlaWdodCBWIHBsYW5lLgorCit6d3BfbGludXhfZG1hYnVmX3YxIGFsbG93cyBjbGllbnRzIHRvIHBhc3MgYW4gZXhwbGljaXQgcGl0Y2ggZm9yIGVhY2gKK3BsYW5lLCBidXQgZm9yIHdsX3NobSB0aGlzIG11c3QgYmUgaW5mZXJyZWQuIGdsLXJlbmRlcmVyIHdhcyBjb3JyZWN0bHkKK2FjY291bnRpbmcgZm9yIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IHdoZW4gc3Vic2FtcGxpbmcsIGJ1dCB0aGUgcGl0Y2ggd2FzCitiZWluZyB0YWtlbiBhcyB0aGUgcGl0Y2ggZm9yIHRoZSBmaXJzdCBwbGFuZS4KKworVGhpcyBkb2VzIG5vdCBtYXRjaCB0aGUgcmVxdWlyZW1lbnRzIGZvciBHU3RyZWFtZXIncyB3YXlsYW5kc2luaywgaW4KK3BhcnRpY3VsYXIsIGFzIHdlbGwgYXMgb3RoZXIgY2xpZW50cy4gRml4IHRoZSBTSE0gdXBsb2FkIHBhdGggdG8KK2NvcnJlY3RseSBzZXQgdGhlIHBpdGNoIGZvciBlYWNoIHBsYW5lLCBhY2NvcmRpbmcgdG8gc3Vic2FtcGxpbmcuCisKK1Rlc3RlZCB3aXRoOgorICAkIGdzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyAhIHdheWxhbmRzaW5rCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC8xODA3NjcvXQorCitTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgU3RvbmUgPGRhbmllbHNAY29sbGFib3JhLmNvbT4KK0ZpeGVzOiBmZGVlZmU0MjQxOCAoImdsLXJlbmRlcmVyOiBhZGQgc3VwcG9ydCBvZiBXTF9TSE1fRk9STUFUX1lVVjQyMCIpCitSZXBvcnRlZC1ieTogRmFiaWVuIExhaG91ZGVyZSA8ZmFiaWVuLmxhaG91ZGVyZUBjb2xsYWJvcmEuY28udWs+CitCdWd6aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMDYzCisKKy0tLQorIGxpYndlc3Rvbi9nbC1yZW5kZXJlci5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYndlc3Rvbi9nbC1yZW5kZXJlci5jIGIvbGlid2VzdG9uL2dsLXJlbmRlcmVyLmMKK2luZGV4IDI0NGNlMzA5Li40MGJmMGJiNiAxMDA2NDQKKy0tLSBhL2xpYndlc3Rvbi9nbC1yZW5kZXJlci5jCisrKysgYi9saWJ3ZXN0b24vZ2wtcmVuZGVyZXIuYworQEAgLTE0NDUsMTQgKzE0NDUsMTMgQEAgZ2xfcmVuZGVyZXJfZmx1c2hfZGFtYWdlKHN0cnVjdCB3ZXN0b25fc3VyZmFjZSAqc3VyZmFjZSkKKyAJCWdvdG8gZG9uZTsKKyAJfQorIAorLQlnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19ST1dfTEVOR1RIX0VYVCwgZ3MtPnBpdGNoKTsKKy0KKyAJaWYgKGdzLT5uZWVkc19mdWxsX3VwbG9hZCkgeworIAkJZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9QSVhFTFNfRVhULCAwKTsKKyAJCWdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUk9XU19FWFQsIDApOworIAkJd2xfc2htX2J1ZmZlcl9iZWdpbl9hY2Nlc3MoYnVmZmVyLT5zaG1fYnVmZmVyKTsKKyAJCWZvciAoaiA9IDA7IGogPCBncy0+bnVtX3RleHR1cmVzOyBqKyspIHsKKyAJCQlnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIGdzLT50ZXh0dXJlc1tqXSk7CisrCQkJZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdUSF9FWFQsIGdzLT5waXRjaCAvIGdzLT5oc3ViW2pdKTsKKyAJCQlnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwKKyAJCQkJICAgICBncy0+Z2xfZm9ybWF0W2pdLAorIAkJCQkgICAgIGdzLT5waXRjaCAvIGdzLT5oc3ViW2pdLAorQEAgLTE0NzcsNiArMTQ3Niw3IEBAIGdsX3JlbmRlcmVyX2ZsdXNoX2RhbWFnZShzdHJ1Y3Qgd2VzdG9uX3N1cmZhY2UgKnN1cmZhY2UpCisgCQlnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1JPV1NfRVhULCByLnkxKTsKKyAJCWZvciAoaiA9IDA7IGogPCBncy0+bnVtX3RleHR1cmVzOyBqKyspIHsKKyAJCQlnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIGdzLT50ZXh0dXJlc1tqXSk7CisrCQkJZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdUSF9FWFQsIGdzLT5waXRjaCAvIGdzLT5oc3ViW2pdKTsKKyAJCQlnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwKKyAJCQkJCXIueDEgLyBncy0+aHN1YltqXSwKKyAJCQkJCXIueTEgLyBncy0+dnN1YltqXSwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fMi4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzIuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NGIwN2JkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fMi4wLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJXZXN0b24sIGEgV2F5bGFuZCBjb21wb3NpdG9yIgotREVTQ1JJUFRJT04gPSAiV2VzdG9uIGlzIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgYSBXYXlsYW5kIGNvbXBvc2l0b3IiCi1IT01FUEFHRSA9ICJodHRwOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmciCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ3OWVlOWU2NmJiMGY5NWQzMzg2YTdhY2FlNzgwYjcwIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYndlc3Rvbi9jb21wb3NpdG9yLmM7ZW5kbGluZT0yNjttZDU9ZTM0MmRmNzQ5MTc0YThlZTExMDY1NTgzMTU3YzdhMzgiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3dlc3Rvbi5wbmcgXAotICAgICAgICAgICBmaWxlOi8vd2VzdG9uLmRlc2t0b3AgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWtlLWVycm9yLXBvcnRhYmxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLUZpeC13YXlsYW5kLXByb3RvY29scy1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3h3YXlsYW5kLndlc3Rvbi1zdGFydCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXdlc3Rvbi1sYXVuY2gtUHJvdmlkZS1hLWRlZmF1bHQtdmVyc2lvbi10aGF0LWRvZXNuLXQucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjE1ZjM4OTQ1OTQyYmYyYTkxZmUyNjg3MTQ1ZmI0YzdkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI0ZTQ0NmFjMjdmMTE4MTk2ZjE2MDlkYWI4OWJiM2NiM2U4MTY1MmQ5ODE0MTRhZDg2MGU3MzNiMzU1MzY1ZDgiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1c2VyYWRkIGRpc3Ryb19mZWF0dXJlc19jaGVjawotIyBkZXBlbmRzIG9uIHZpcnR1YWwvZWdsCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgotCi1ERVBFTkRTID0gImxpYnhrYmNvbW1vbiBnZGstcGl4YnVmIHBpeG1hbiBjYWlybyBnbGliLTIuMCBqcGVnIgotREVQRU5EUyArPSAid2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyBsaWJpbnB1dCB2aXJ0dWFsL2VnbCBwYW5nbyB3YXlsYW5kLW5hdGl2ZSIKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNldHVpZC1pbnN0YWxsIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtcmRwLWNvbXBvc2l0b3IgXAotICAgICAgICAgICAgICAgIFdBWUxBTkRfUFJPVE9DT0xTX1NZU1JPT1RfRElSPSR7UkVDSVBFX1NZU1JPT1R9IFwKLSAgICAgICAgICAgICAgICAiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX3FlbXV4ODYgPSAiXAotCQlXRVNUT05fTkFUSVZFX0JBQ0tFTkQ9ZmJkZXYtYmFja2VuZC5zbyBcCi0JCSIKLUVYVFJBX09FQ09ORl9hcHBlbmRfcWVtdXg4Ni02NCA9ICJcCi0JCVdFU1RPTl9OQVRJVkVfQkFDS0VORD1mYmRldi1iYWNrZW5kLnNvIFwKLQkJIgotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICdrbXMgZmJkZXYgd2F5bGFuZCBlZ2wnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSB3YXlsYW5kJywgJ3h3YXlsYW5kJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtIHN5c3RlbWQgeDExJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICBjbGllbnRzIGxhdW5jaCIKLSMKLSMgQ29tcG9zaXRvciBjaG9pY2VzCi0jCi0jIFdlc3RvbiBvbiBLTVMKLVBBQ0tBR0VDT05GSUdba21zXSA9ICItLWVuYWJsZS1kcm0tY29tcG9zaXRvciwtLWRpc2FibGUtZHJtLWNvbXBvc2l0b3IsZHJtIHVkZXYgdmlydHVhbC9tZXNhIG10ZGV2IgotIyBXZXN0b24gb24gV2F5bGFuZCAobmVzdGVkIFdlc3RvbikKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZC1jb21wb3NpdG9yLC0tZGlzYWJsZS13YXlsYW5kLWNvbXBvc2l0b3IsdmlydHVhbC9tZXNhIgotIyBXZXN0b24gb24gWDExCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLWNvbXBvc2l0b3IsLS1kaXNhYmxlLXgxMS1jb21wb3NpdG9yLHZpcnR1YWwvbGlieDExIGxpYnhjYiBsaWJ4Y2IgbGlieGN1cnNvciBjYWlybyIKLSMgSGVhZGxlc3MgV2VzdG9uCi1QQUNLQUdFQ09ORklHW2hlYWRsZXNzXSA9ICItLWVuYWJsZS1oZWFkbGVzcy1jb21wb3NpdG9yLC0tZGlzYWJsZS1oZWFkbGVzcy1jb21wb3NpdG9yIgotIyBXZXN0b24gb24gZnJhbWVidWZmZXIKLVBBQ0tBR0VDT05GSUdbZmJkZXZdID0gIi0tZW5hYmxlLWZiZGV2LWNvbXBvc2l0b3IsLS1kaXNhYmxlLWZiZGV2LWNvbXBvc2l0b3IsdWRldiBtdGRldiIKLSMgd2VzdG9uLWxhdW5jaAotUEFDS0FHRUNPTkZJR1tsYXVuY2hdID0gIi0tZW5hYmxlLXdlc3Rvbi1sYXVuY2gsLS1kaXNhYmxlLXdlc3Rvbi1sYXVuY2gsZHJtIgotIyBWQS1BUEkgZGVza3RvcCByZWNvcmRlcgotUEFDS0FHRUNPTkZJR1t2YWFwaV0gPSAiLS1lbmFibGUtdmFhcGktcmVjb3JkZXIsLS1kaXNhYmxlLXZhYXBpLXJlY29yZGVyLGxpYnZhIgotIyBXZXN0b24gd2l0aCBFR0wgc3VwcG9ydAotUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbCAtLWVuYWJsZS1zaW1wbGUtZWdsLWNsaWVudHMsLS1kaXNhYmxlLWVnbCAtLWRpc2FibGUtc2ltcGxlLWVnbC1jbGllbnRzLHZpcnR1YWwvZWdsIgotIyBXZXN0b24gd2l0aCBjYWlybyBnbGVzdjIgc3VwcG9ydAotUEFDS0FHRUNPTkZJR1tjYWlyby1nbGVzdjJdID0gIi0td2l0aC1jYWlyby1nbGVzdjIsLS13aXRoLWNhaXJvPWltYWdlLGNhaXJvIgotIyBXZXN0b24gd2l0aCBsY21zIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbbGNtc10gPSAiLS1lbmFibGUtbGNtcywtLWRpc2FibGUtbGNtcyxsY21zIgotIyBXZXN0b24gd2l0aCB3ZWJwIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbd2VicF0gPSAiLS13aXRoLXdlYnAsLS13aXRob3V0LXdlYnAsbGlid2VicCIKLSMgV2VzdG9uIHdpdGggdW53aW5kaW5nIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbbGlidW53aW5kXSA9ICItLWVuYWJsZS1saWJ1bndpbmQsLS1kaXNhYmxlLWxpYnVud2luZCxsaWJ1bndpbmQiCi0jIFdlc3RvbiB3aXRoIHN5c3RlbWQtbG9naW4gc3VwcG9ydAotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kLWxvZ2luLC0tZGlzYWJsZS1zeXN0ZW1kLWxvZ2luLHN5c3RlbWQgZGJ1cyIKLSMgV2VzdG9uIHdpdGggWHdheWxhbmQgc3VwcG9ydCAocmVxdWlyZXMgWDExIGFuZCBXYXlsYW5kKQotUEFDS0FHRUNPTkZJR1t4d2F5bGFuZF0gPSAiLS1lbmFibGUteHdheWxhbmQsLS1kaXNhYmxlLXh3YXlsYW5kIgotIyBjb2xvcmQgQ01TIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbY29sb3JkXSA9ICItLWVuYWJsZS1jb2xvcmQsLS1kaXNhYmxlLWNvbG9yZCxjb2xvcmQiCi0jIENsaWVudHMgc3VwcG9ydAotUEFDS0FHRUNPTkZJR1tjbGllbnRzXSA9ICItLWVuYWJsZS1jbGllbnRzIC0tZW5hYmxlLXNpbXBsZS1jbGllbnRzIC0tZW5hYmxlLWRlbW8tY2xpZW50cy1pbnN0YWxsLC0tZGlzYWJsZS1jbGllbnRzIC0tZGlzYWJsZS1zaW1wbGUtY2xpZW50cyIKLSMgV2VzdG9uIHdpdGggUEFNIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbcGFtXSA9ICItLXdpdGgtcGFtLC0td2l0aG91dC1wYW0sbGlicGFtIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIFdlc3RvbiBkb2Vzbid0IG5lZWQgdGhlIC5sYSBmaWxlcyB0byBsb2FkIG1vZHVsZXMsIHNvIHdpcGUgdGhlbQotCXJtIC1mICR7RH0vJHtsaWJkaXJ9L2xpYndlc3Rvbi0yLyoubGEKLQotCSMgSWYgWDExLCBzaGlwIGEgZGVza3RvcCBmaWxlIHRvIGxhdW5jaCBpdAotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIgXTsgdGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucwotCQlpbnN0YWxsICR7V09SS0RJUn0vd2VzdG9uLmRlc2t0b3AgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zCi0KLQkJaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzQ4eDQ4L2FwcHMKLQkJaW5zdGFsbCAke1dPUktESVJ9L3dlc3Rvbi5wbmcgJHtEfSR7ZGF0YWRpcn0vaWNvbnMvaGljb2xvci80OHg0OC9hcHBzCi0JZmkKLQotCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3h3YXlsYW5kJywgJ3llcycsICdubycsIGQpfSIgPSAieWVzIiBdOyB0aGVuCi0JCWluc3RhbGwgLURtIDY0NCAke1dPUktESVJ9L3h3YXlsYW5kLndlc3Rvbi1zdGFydCAke0R9JHtkYXRhZGlyfS93ZXN0b24tc3RhcnQveHdheWxhbmQKLQlmaQotfQotCi1QQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneHdheWxhbmQnLCAnJHtQTn0teHdheWxhbmQnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICBsaWJ3ZXN0b24tMiAke1BOfS1leGFtcGxlcyIKLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L3dlc3RvbiAke2JpbmRpcn0vd2VzdG9uLXRlcm1pbmFsICR7YmluZGlyfS93ZXN0b24taW5mbyAke2JpbmRpcn0vd2VzdG9uLWxhdW5jaCAke2JpbmRpcn0vd2NhcC1kZWNvZGUgJHtsaWJleGVjZGlyfSAke2xpYmRpcn0vJHtCUE59Lyouc28gJHtkYXRhZGlyfSIKLQotRklMRVNfbGlid2VzdG9uLTIgPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30gJHtsaWJkaXJ9L2xpYndlc3Rvbi0yLyouc28iCi1TVU1NQVJZX2xpYndlc3Rvbi0yID0gIkhlbHBlciBsaWJyYXJ5IGZvciBpbXBsZW1lbnRpbmcgJ3dheWxhbmQgd2luZG93IG1hbmFnZXJzJy4iCi0KLUZJTEVTXyR7UE59LWV4YW1wbGVzID0gIiR7YmluZGlyfS8qIgotCi1GSUxFU18ke1BOfS14d2F5bGFuZCA9ICIke2xpYmRpcn0vbGlid2VzdG9uLTIveHdheWxhbmQuc28iCi1SREVQRU5EU18ke1BOfS14d2F5bGFuZCArPSAieHNlcnZlci14b3JnLXh3YXlsYW5kIgotCi1SREVQRU5EU18ke1BOfSArPSAieGtleWJvYXJkLWNvbmZpZyIKLVJSRUNPTU1FTkRTXyR7UE59ID0gImxpYmVyYXRpb24tZm9udHMiCi1SUkVDT01NRU5EU18ke1BOfS1kZXYgKz0gIndheWxhbmQtcHJvdG9jb2xzIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gd2VzdG9uLWxhdW5jaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fMy4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzMuMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkMGNkYzIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzMuMC4wLmJiCkBAIC0wLDAgKzEsMTE0IEBACitTVU1NQVJZID0gIldlc3RvbiwgYSBXYXlsYW5kIGNvbXBvc2l0b3IiCitERVNDUklQVElPTiA9ICJXZXN0b24gaXMgdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiBhIFdheWxhbmQgY29tcG9zaXRvciIKK0hPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDc5ZWU5ZTY2YmIwZjk1ZDMzODZhN2FjYWU3ODBiNzAgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGlid2VzdG9uL2NvbXBvc2l0b3IuYztlbmRsaW5lPTI2O21kNT1lMzQyZGY3NDkxNzRhOGVlMTEwNjU1ODMxNTdjN2EzOCIKKworU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vd2VzdG9uLnBuZyBcCisgICAgICAgICAgIGZpbGU6Ly93ZXN0b24uZGVza3RvcCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1ha2UtZXJyb3ItcG9ydGFibGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8veHdheWxhbmQud2VzdG9uLXN0YXJ0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtd2VzdG9uLWxhdW5jaC1Qcm92aWRlLWEtZGVmYXVsdC12ZXJzaW9uLXRoYXQtZG9lc24tdC5wYXRjaCBcCisJICAgZmlsZTovL3dlc3Rvbi1nbC1yZW5kZXJlci1TZXQtcGl0Y2gtY29ycmVjdGx5LWZvci1zdWJzYW1wbGVkLXRleHR1cmVzLnBhdGNoIFwKKwkgICBmaWxlOi8vZml4LW1pc3NpbmctaGVhZGVyLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5YzQyYTRjNTFhMWI5ZjM1ZDA0MGZhOWQ0NWFkYTM2ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjZGUxZDU1ZThkZDcwYzNjYmIzZDFlYzcyZjYwZTYwMDAwMDQxNTc5Y2FhMWQ2YTI2MmJkOWMzNWU5MzcyM2E1IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXNlcmFkZCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKyMgZGVwZW5kcyBvbiB2aXJ0dWFsL2VnbAorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKKworREVQRU5EUyA9ICJsaWJ4a2Jjb21tb24gZ2RrLXBpeGJ1ZiBwaXhtYW4gY2Fpcm8gZ2xpYi0yLjAganBlZyIKK0RFUEVORFMgKz0gIndheWxhbmQgd2F5bGFuZC1wcm90b2NvbHMgbGliaW5wdXQgdmlydHVhbC9lZ2wgcGFuZ28gd2F5bGFuZC1uYXRpdmUiCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1zZXR1aWQtaW5zdGFsbCBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJkcC1jb21wb3NpdG9yIFwKKyAgICAgICAgICAgICAgICAiCitFWFRSQV9PRUNPTkZfYXBwZW5kX3FlbXV4ODYgPSAiXAorCQlXRVNUT05fTkFUSVZFX0JBQ0tFTkQ9ZmJkZXYtYmFja2VuZC5zbyBcCisJCSIKK0VYVFJBX09FQ09ORl9hcHBlbmRfcWVtdXg4Ni02NCA9ICJcCisJCVdFU1RPTl9OQVRJVkVfQkFDS0VORD1mYmRldi1iYWNrZW5kLnNvIFwKKwkJIgorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICdrbXMgZmJkZXYgd2F5bGFuZCBlZ2wnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSB3YXlsYW5kJywgJ3h3YXlsYW5kJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtIHN5c3RlbWQgeDExJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICBjbGllbnRzIGxhdW5jaCIKKyMKKyMgQ29tcG9zaXRvciBjaG9pY2VzCisjCisjIFdlc3RvbiBvbiBLTVMKK1BBQ0tBR0VDT05GSUdba21zXSA9ICItLWVuYWJsZS1kcm0tY29tcG9zaXRvciwtLWRpc2FibGUtZHJtLWNvbXBvc2l0b3IsZHJtIHVkZXYgdmlydHVhbC9tZXNhIG10ZGV2IgorIyBXZXN0b24gb24gV2F5bGFuZCAobmVzdGVkIFdlc3RvbikKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZC1jb21wb3NpdG9yLC0tZGlzYWJsZS13YXlsYW5kLWNvbXBvc2l0b3IsdmlydHVhbC9tZXNhIgorIyBXZXN0b24gb24gWDExCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLWNvbXBvc2l0b3IsLS1kaXNhYmxlLXgxMS1jb21wb3NpdG9yLHZpcnR1YWwvbGlieDExIGxpYnhjYiBsaWJ4Y2IgbGlieGN1cnNvciBjYWlybyIKKyMgSGVhZGxlc3MgV2VzdG9uCitQQUNLQUdFQ09ORklHW2hlYWRsZXNzXSA9ICItLWVuYWJsZS1oZWFkbGVzcy1jb21wb3NpdG9yLC0tZGlzYWJsZS1oZWFkbGVzcy1jb21wb3NpdG9yIgorIyBXZXN0b24gb24gZnJhbWVidWZmZXIKK1BBQ0tBR0VDT05GSUdbZmJkZXZdID0gIi0tZW5hYmxlLWZiZGV2LWNvbXBvc2l0b3IsLS1kaXNhYmxlLWZiZGV2LWNvbXBvc2l0b3IsdWRldiBtdGRldiIKKyMgd2VzdG9uLWxhdW5jaAorUEFDS0FHRUNPTkZJR1tsYXVuY2hdID0gIi0tZW5hYmxlLXdlc3Rvbi1sYXVuY2gsLS1kaXNhYmxlLXdlc3Rvbi1sYXVuY2gsZHJtIgorIyBWQS1BUEkgZGVza3RvcCByZWNvcmRlcgorUEFDS0FHRUNPTkZJR1t2YWFwaV0gPSAiLS1lbmFibGUtdmFhcGktcmVjb3JkZXIsLS1kaXNhYmxlLXZhYXBpLXJlY29yZGVyLGxpYnZhIgorIyBXZXN0b24gd2l0aCBFR0wgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbCAtLWVuYWJsZS1zaW1wbGUtZWdsLWNsaWVudHMsLS1kaXNhYmxlLWVnbCAtLWRpc2FibGUtc2ltcGxlLWVnbC1jbGllbnRzLHZpcnR1YWwvZWdsIgorIyBXZXN0b24gd2l0aCBjYWlybyBnbGVzdjIgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tjYWlyby1nbGVzdjJdID0gIi0td2l0aC1jYWlyby1nbGVzdjIsLS13aXRoLWNhaXJvPWltYWdlLGNhaXJvIgorIyBXZXN0b24gd2l0aCBsY21zIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbbGNtc10gPSAiLS1lbmFibGUtbGNtcywtLWRpc2FibGUtbGNtcyxsY21zIgorIyBXZXN0b24gd2l0aCB3ZWJwIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbd2VicF0gPSAiLS13aXRoLXdlYnAsLS13aXRob3V0LXdlYnAsbGlid2VicCIKKyMgV2VzdG9uIHdpdGggdW53aW5kaW5nIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbbGlidW53aW5kXSA9ICItLWVuYWJsZS1saWJ1bndpbmQsLS1kaXNhYmxlLWxpYnVud2luZCxsaWJ1bndpbmQiCisjIFdlc3RvbiB3aXRoIHN5c3RlbWQtbG9naW4gc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kLWxvZ2luLC0tZGlzYWJsZS1zeXN0ZW1kLWxvZ2luLHN5c3RlbWQgZGJ1cyIKKyMgV2VzdG9uIHdpdGggWHdheWxhbmQgc3VwcG9ydCAocmVxdWlyZXMgWDExIGFuZCBXYXlsYW5kKQorUEFDS0FHRUNPTkZJR1t4d2F5bGFuZF0gPSAiLS1lbmFibGUteHdheWxhbmQsLS1kaXNhYmxlLXh3YXlsYW5kIgorIyBjb2xvcmQgQ01TIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbY29sb3JkXSA9ICItLWVuYWJsZS1jb2xvcmQsLS1kaXNhYmxlLWNvbG9yZCxjb2xvcmQiCisjIENsaWVudHMgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tjbGllbnRzXSA9ICItLWVuYWJsZS1jbGllbnRzIC0tZW5hYmxlLXNpbXBsZS1jbGllbnRzIC0tZW5hYmxlLWRlbW8tY2xpZW50cy1pbnN0YWxsLC0tZGlzYWJsZS1jbGllbnRzIC0tZGlzYWJsZS1zaW1wbGUtY2xpZW50cyIKKyMgV2VzdG9uIHdpdGggUEFNIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbcGFtXSA9ICItLXdpdGgtcGFtLC0td2l0aG91dC1wYW0sbGlicGFtIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIFdlc3RvbiBkb2Vzbid0IG5lZWQgdGhlIC5sYSBmaWxlcyB0byBsb2FkIG1vZHVsZXMsIHNvIHdpcGUgdGhlbQorCXJtIC1mICR7RH0vJHtsaWJkaXJ9L2xpYndlc3Rvbi0zLyoubGEKKworCSMgSWYgWDExLCBzaGlwIGEgZGVza3RvcCBmaWxlIHRvIGxhdW5jaCBpdAorCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucworCQlpbnN0YWxsICR7V09SS0RJUn0vd2VzdG9uLmRlc2t0b3AgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zCisKKwkJaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzQ4eDQ4L2FwcHMKKwkJaW5zdGFsbCAke1dPUktESVJ9L3dlc3Rvbi5wbmcgJHtEfSR7ZGF0YWRpcn0vaWNvbnMvaGljb2xvci80OHg0OC9hcHBzCisJZmkKKworCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3h3YXlsYW5kJywgJ3llcycsICdubycsIGQpfSIgPSAieWVzIiBdOyB0aGVuCisJCWluc3RhbGwgLURtIDY0NCAke1dPUktESVJ9L3h3YXlsYW5kLndlc3Rvbi1zdGFydCAke0R9JHtkYXRhZGlyfS93ZXN0b24tc3RhcnQveHdheWxhbmQKKwlmaQorfQorCitQQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneHdheWxhbmQnLCAnJHtQTn0teHdheWxhbmQnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICBsaWJ3ZXN0b24tMyAke1BOfS1leGFtcGxlcyIKKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L3dlc3RvbiAke2JpbmRpcn0vd2VzdG9uLXRlcm1pbmFsICR7YmluZGlyfS93ZXN0b24taW5mbyAke2JpbmRpcn0vd2VzdG9uLWxhdW5jaCAke2JpbmRpcn0vd2NhcC1kZWNvZGUgJHtsaWJleGVjZGlyfSAke2xpYmRpcn0vJHtCUE59Lyouc28gJHtkYXRhZGlyfSIKKworRklMRVNfbGlid2VzdG9uLTMgPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30gJHtsaWJkaXJ9L2xpYndlc3Rvbi0zLyouc28iCitTVU1NQVJZX2xpYndlc3Rvbi0zID0gIkhlbHBlciBsaWJyYXJ5IGZvciBpbXBsZW1lbnRpbmcgJ3dheWxhbmQgd2luZG93IG1hbmFnZXJzJy4iCisKK0ZJTEVTXyR7UE59LWV4YW1wbGVzID0gIiR7YmluZGlyfS8qIgorCitGSUxFU18ke1BOfS14d2F5bGFuZCA9ICIke2xpYmRpcn0vbGlid2VzdG9uLTMveHdheWxhbmQuc28iCitSREVQRU5EU18ke1BOfS14d2F5bGFuZCArPSAieHNlcnZlci14b3JnLXh3YXlsYW5kIgorCitSREVQRU5EU18ke1BOfSArPSAieGtleWJvYXJkLWNvbmZpZyIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImxpYmVyYXRpb24tZm9udHMiCitSUkVDT01NRU5EU18ke1BOfS1kZXYgKz0gIndheWxhbmQtcHJvdG9jb2xzIgorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gd2VzdG9uLWxhdW5jaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdC94c2VydmVyLW5vZG0uc2VydmljZS5pbiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdC94c2VydmVyLW5vZG0uc2VydmljZS5pbgppbmRleCAzMjRhMjZmLi44N2RjNGY4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXQveHNlcnZlci1ub2RtLnNlcnZpY2UuaW4KKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0L3hzZXJ2ZXItbm9kbS5zZXJ2aWNlLmluCkBAIC01LDYgKzUsNyBAQAogRW52aXJvbm1lbnRGaWxlPS9ldGMvZGVmYXVsdC94c2VydmVyLW5vZG0KIFVzZXI9QFVTRVJACiBFeGVjU3RhcnQ9L2V0Yy94c2VydmVyLW5vZG0vWHNlcnZlcgorUmVzdGFydD1hbHdheXMKIAogW0luc3RhbGxdCiBBbGlhcz1kaXNwbGF5LW1hbmFnZXIuc2VydmljZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0XzMuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdF8zLjAuYmIKaW5kZXggMzQ1YjU4OS4uYTc3YzU2NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0XzMuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXRfMy4wLmJiCkBAIC02MCw3ICs2MCw3IEBACiAgICAgZmkKIH0KIAotUkRFUEVORFNfJHtQTn0gPSAieGluaXQgJHtAYmFzZV9jb25kaXRpb25hbCgnUk9PVExFU1NfWCcsICcxJywgJ3h1c2VyLWFjY291bnQnLCAnJywgZCl9IgorUkRFUEVORFNfJHtQTn0gPSAieGluaXQgJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ1JPT1RMRVNTX1gnLCAnMScsICd4dXNlci1hY2NvdW50JywgJycsIGQpfSIKIAogSU5JVFNDUklQVF9OQU1FID0gInhzZXJ2ZXItbm9kbSIKIElOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDkgNSAuIHN0b3AgMjAgMCAxIDIgMyA2IC4iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUveGN1cnNvci10cmFuc3BhcmVudC10aGVtZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUveGN1cnNvci10cmFuc3BhcmVudC10aGVtZV9naXQuYmIKaW5kZXggNzMzZWJjZS4uYTRhYjdmNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lL3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWVfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveGN1cnNvci10cmFuc3BhcmVudC10aGVtZS94Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lX2dpdC5iYgpAQCAtMTEsNyArMTEsNyBAQAogUFYgPSAiMC4xLjErZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvJHtCUE59O2JyYW5jaD1tYXN0ZXIiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94c2V0L2Rpc2FibGUteGtiLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94c2V0L2Rpc2FibGUteGtiLnBhdGNoCmluZGV4IDk3ZDEzYTMuLmE5N2M3YjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHNldC9kaXNhYmxlLXhrYi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hzZXQvZGlzYWJsZS14a2IucGF0Y2gKQEAgLTQsMTEgKzQsMTEgQEAKIAogUmViYXNlIGZvciAxLjIuMSBieTogWXUgS2UgPGtlLnl1QGludGVsLmNvbT4KIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggODFjM2FlNC4uMjY2MDFiZiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNTIsMTEgKzUyLDE1IEBAIFBLR19DSEVDS19NT0RVTEVTKFNFVF9YRVhULCB4ZXh0LAorSW5kZXg6IHhzZXQtMS4yLjMvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0geHNldC0xLjIuMy5vcmlnL2NvbmZpZ3VyZS5hYworKysrIHhzZXQtMS4yLjMvY29uZmlndXJlLmFjCitAQCAtNTMsMTEgKzUzLDE1IEBAIFBLR19DSEVDS19NT0RVTEVTKFNFVF9YRVhULCB4ZXh0LAogIAlBQ19DSEVDS19IRUFERVJTKFtYMTEvZXh0ZW5zaW9ucy9kcG1zLmggWDExL2V4dGVuc2lvbnMvTUlUTWlzYy5oXSwsLFsjaW5jbHVkZSA8WDExL1hsaWIuaD5dKQogIAlDUFBGTEFHUz0iJFNBVkVfQ1BQRkxBR1MiXSxbZWNobyAibm90IGZvdW5kIl0pCiAgCkBAIC0yMiw1ICsyMiw1IEBACiAgCUNQUEZMQUdTPSIkU0FWRV9DUFBGTEFHUyJdLFtlY2hvICJub3QgZm91bmQiXSkKICtmaQogIAotIEFDX0FSR19XSVRIKHhmODZtaXNjLCBBQ19IRUxQX1NUUklORyhbLS13aXRob3V0LXhmODZtaXNjXSxbRGlzYWJsZSB4Zjg2bWlzYyBzdXBwb3J0Ll0pLAorIEFDX0FSR19XSVRIKHhmODZtaXNjLCBBU19IRUxQX1NUUklORyhbLS13aXRob3V0LXhmODZtaXNjXSxbRGlzYWJsZSB4Zjg2bWlzYyBzdXBwb3J0Ll0pLAogICAgICAgICAgICAgICAgICBbVVNFX1hGODZNSVNDPSIkd2l0aHZhbCJdLCBbVVNFX1hGODZNSVNDPSJ5ZXMiXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI1LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtbGliaW5wdXRfMC4yNS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjNlYTE2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI1LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIHhvcmctZHJpdmVyLWlucHV0LmluYwotCi1TVU1NQVJZID0gIkdlbmVyaWMgaW5wdXQgZHJpdmVyIGZvciB0aGUgWC5Pcmcgc2VydmVyIGJhc2VkIG9uIGxpYmlucHV0IgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWU2YjIwZWEyZWY5NGE5OTgxNDVmMGVhM2Y3ODhlZTAiCi0KLURFUEVORFMgKz0gImxpYmlucHV0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTQwMDMxMzk2MTRiMjVjYzc2YzlhNGNhZDA1OWRmODkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDg5ZjdkNTkxYzllZjA4NDYzZDQ5NjZlNjFmN2M2ZWE0MzNmNWZjYmI5ZjUzNzBmYjYyMWRhNjM5YTg0YzdlMCIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vWDExL3hvcmcuY29uZi5kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LWxpYmlucHV0XzAuMjYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRjMzNkNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI2LjAuYmIKQEAgLTAsMCArMSwxMSBAQAorcmVxdWlyZSB4b3JnLWRyaXZlci1pbnB1dC5pbmMKKworU1VNTUFSWSA9ICJHZW5lcmljIGlucHV0IGRyaXZlciBmb3IgdGhlIFguT3JnIHNlcnZlciBiYXNlZCBvbiBsaWJpbnB1dCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVlNmIyMGVhMmVmOTRhOTk4MTQ1ZjBlYTNmNzg4ZWUwIgorCitERVBFTkRTICs9ICJsaWJpbnB1dCIKKworU1JDX1VSSVttZDVzdW1dID0gImRhNDdlZjYyZWFiMWQwZTkyMmE4ZmE5MjlmZjgxNzU4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFiY2E1NThmYzIyMjZmMjk1NjkxZjFjZjM0MTJkNGMwZWRlYWE0MzlmNjc3Y2EyNWI1YzlmYWIzMTBkMjM4N2IiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L1gxMS94b3JnLmNvbmYuZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC8wMDAxLUFkZC1Db2ZmZWVsYWtlLVBDSS1JRHMtZm9yLVMtU2t1cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC8wMDAxLUFkZC1Db2ZmZWVsYWtlLVBDSS1JRHMtZm9yLVMtU2t1cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmVmMTA1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsLzAwMDEtQWRkLUNvZmZlZWxha2UtUENJLUlEcy1mb3ItUy1Ta3VzLnBhdGNoCkBAIC0wLDAgKzEsMTE2IEBACitGcm9tIDk2ZDRlOGU3YjhhNjk5ZjBlZjc3ZmE3YjIxMGQ0ZGU1ZjFjNzAzZDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMaXdlaSBTb25nIDxsaXdlaS5zb25nQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDIyIE5vdiAyMDE3IDA4OjU5OjAzICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBDb2ZmZWVsYWtlIFBDSSBJRHMgZm9yIFMgU2t1cworCitBZGQgdGhlIENvZmZlZWxha2UgUENJIElEcyBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIGtlcm5lbCBwYXRjaGVzOgorCitjb21taXQgYjA1NmY4ZjNkNmI5MDBlOGFmZDE5ZjMxMjcxOTE2MDM0NmQyNjNiNAorQXV0aG9yOiBBbnVzaGEgU3JpdmF0c2EgPGFudXNoYS5zcml2YXRzYUBpbnRlbC5jb20+CitEYXRlOiAgIFRodSBKdW4gOCAxNjo0MTowNSAyMDE3IC0wNzAwCisKKyAgICBkcm0vaTkxNS9jZmw6IEFkZCBDb2ZmZWUgTGFrZSBQQ0kgSURzIGZvciBTIFNrdXMuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3BhdGNoLzEwMTM5OTA1XQorCitTaWduZWQtb2ZmLWJ5OiBMaXdlaSBTb25nIDxsaXdlaS5zb25nQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvaTkxNV9wY2lpZHMuaCAgICAgfCAgNyArKysrKysrCisgc3JjL2ludGVsX21vZHVsZS5jICAgIHwgMTMgKysrKysrKysrKysrKworIHNyYy9zbmEvZ2VuOV9yZW5kZXIuYyB8IDEyICsrKysrKysrKysrKworIDMgZmlsZXMgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2k5MTVfcGNpaWRzLmggYi9zcmMvaTkxNV9wY2lpZHMuaAoraW5kZXggMDM3MGY4MzBjNTQxLi4xMWNjZmE5YzA0N2EgMTAwNjQ0CistLS0gYS9zcmMvaTkxNV9wY2lpZHMuaAorKysrIGIvc3JjL2k5MTVfcGNpaWRzLmgKK0BAIC0zNDAsNCArMzQwLDExIEBACisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzMTg0LCBpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MzE4NSwgaW5mbykKKyAKKysjZGVmaW5lIElOVEVMX0NGTF9TX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRTkwLCBpbmZvKSwgLyogU1JWIEdUMSAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRTkzLCBpbmZvKSwgLyogU1JWIEdUMSAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRTkxLCBpbmZvKSwgLyogU1JWIEdUMiAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRTkyLCBpbmZvKSwgLyogU1JWIEdUMiAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRTk2LCBpbmZvKSAgLyogU1JWIEdUMiAqLworKworICNlbmRpZiAvKiBfSTkxNV9QQ0lJRFNfSCAqLworZGlmZiAtLWdpdCBhL3NyYy9pbnRlbF9tb2R1bGUuYyBiL3NyYy9pbnRlbF9tb2R1bGUuYworaW5kZXggNmIwNDg1N2UyODUzLi40ODI3YTY3MjU1ZjAgMTAwNjQ0CistLS0gYS9zcmMvaW50ZWxfbW9kdWxlLmMKKysrKyBiL3NyYy9pbnRlbF9tb2R1bGUuYworQEAgLTEzOCw2ICsxMzgsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9nZW1pbmlsYWtlX2luZm8gPSB7CisgCS5nZW4gPSAwMTEzLAorIH07CisgCisrc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9jb2ZmZWVsYWtlX2luZm8gPSB7CisrCS5nZW4gPSAwMTE0LAorK307CisrCisgc3RhdGljIGNvbnN0IFN5bVRhYlJlYyBpbnRlbF9jaGlwc2V0c1tdID0geworIAl7UENJX0NISVBfSTgxMCwJCQkJImk4MTAifSwKKyAJe1BDSV9DSElQX0k4MTBfREMxMDAsCQkJImk4MTAtZGMxMDAifSwKK0BAIC0zMDMsNiArMzA3LDEzIEBAIHN0YXRpYyBjb25zdCBTeW1UYWJSZWMgaW50ZWxfY2hpcHNldHNbXSA9IHsKKyAJezB4NTkxNiwgIkhEIEdyYXBoaWNzIDYyMCJ9LAorIAl7MHg1OTFFLCAiSEQgR3JhcGhpY3MgNjE1In0sCisgCisrCS8qQ29mZmVlbGFrZSovCisrCXsweDNFOTAsICJIRCBHcmFwaGljcyJ9LAorKwl7MHgzRTkzLCAiSEQgR3JhcGhpY3MifSwKKysJezB4M0U5MSwgIkhEIEdyYXBoaWNzIn0sCisrCXsweDNFOTIsICJIRCBHcmFwaGljcyJ9LAorKwl7MHgzRTk2LCAiSEQgR3JhcGhpY3MifSwKKysKKyAJLyogV2hlbiBhZGRpbmcgbmV3IGlkZW50aWZpZXJzLCBhbHNvIHVwZGF0ZToKKyAJICogMS4gaW50ZWxfaWRlbnRpZnkoKQorIAkgKiAyLiBtYW4vaW50ZWwubWFuCitAQCAtMzY4LDYgKzM3OSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2lkX21hdGNoIGludGVsX2RldmljZV9tYXRjaFtdID0geworIAorIAlJTlRFTF9HTEtfSURTKCZpbnRlbF9nZW1pbmlsYWtlX2luZm8pLAorIAorKwlJTlRFTF9DRkxfU19JRFMoJmludGVsX2NvZmZlZWxha2VfaW5mbyksCisrCisgCUlOVEVMX1ZHQV9ERVZJQ0UoUENJX01BVENIX0FOWSwgJmludGVsX2dlbmVyaWNfaW5mbyksCisgI2VuZGlmCisgCitkaWZmIC0tZ2l0IGEvc3JjL3NuYS9nZW45X3JlbmRlci5jIGIvc3JjL3NuYS9nZW45X3JlbmRlci5jCitpbmRleCBlNWYxMmM3MjM5NTYuLjdmNDkwNTJjNWVjMSAxMDA2NDQKKy0tLSBhL3NyYy9zbmEvZ2VuOV9yZW5kZXIuYworKysrIGIvc3JjL3NuYS9nZW45X3JlbmRlci5jCitAQCAtMjQ1LDYgKzI0NSwxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGd0X2luZm8gZ2xrX2d0X2luZm8gPSB7CisgCS51cmIgPSB7IC5tYXhfdnNfZW50cmllcyA9IDMyMCB9LAorIH07CisgCisrc3RhdGljIGNvbnN0IHN0cnVjdCBndF9pbmZvIGNmbF9ndF9pbmZvID0geworKwkubmFtZSA9ICJDb2ZmZWVsYWtlIChnZW45KSIsCisrCS51cmIgPSB7IC5tYXhfdnNfZW50cmllcyA9IDk2MCB9LAorK307CisrCisgc3RhdGljIGJvb2wgaXNfc2tsKHN0cnVjdCBzbmEgKnNuYSkKKyB7CisgCXJldHVybiBzbmEtPmtnZW0uZ2VuID09IDAxMTA7CitAQCAtMjY1LDYgKzI3MCwxMSBAQCBzdGF0aWMgYm9vbCBpc19nbGsoc3RydWN0IHNuYSAqc25hKQorIAlyZXR1cm4gc25hLT5rZ2VtLmdlbiA9PSAwMTEzOworIH0KKyAKKytzdGF0aWMgYm9vbCBpc19jZmwoc3RydWN0IHNuYSAqc25hKQorK3sKKysJcmV0dXJuIHNuYS0+a2dlbS5nZW4gPT0gMDExNDsKKyt9CisrCisgCisgc3RhdGljIGlubGluZSBib29sIHRvb19sYXJnZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCisgeworQEAgLTQwNDAsNiArNDA1MCw4IEBAIHN0YXRpYyBib29sIGdlbjlfcmVuZGVyX3NldHVwKHN0cnVjdCBzbmEgKnNuYSkKKyAJCXN0YXRlLT5pbmZvID0gJmtibF9ndF9pbmZvOworIAlpZiAoaXNfZ2xrKHNuYSkpCisgCQlzdGF0ZS0+aW5mbyA9ICZnbGtfZ3RfaW5mbzsKKysJaWYgKGlzX2NmbChzbmEpKQorKwkJc3RhdGUtPmluZm8gPSAmY2ZsX2d0X2luZm87CisgCisgCXNuYV9zdGF0aWNfc3RyZWFtX2luaXQoJmdlbmVyYWwpOworIAorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbF9naXQuYmIKaW5kZXggMTM4ZGZkZC4uMjYyM2NiMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWxfZ2l0LmJiCkBAIC0xNiw2ICsxNiw3IEBACiBTUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL3hvcmcvZHJpdmVyL3hmODYtdmlkZW8taW50ZWwgXAogICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS14MTEtZHJpMy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9hbHdheXNfaW5jbHVkZV94b3JnX3NlcnZlci5oLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLUNvZmZlZWxha2UtUENJLUlEcy1mb3ItUy1Ta3VzLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiZmExOTZhNjZlNTJjMGM2MjRmZTVkMzUwYWY3YTVlN2IiCkBAIC0zNyw3ICszOCw3IEBACiBQQUNLQUdFQ09ORklHW3Rvb2xzXSA9ICItLWVuYWJsZS10b29scywtLWRpc2FibGUtdG9vbHMsbGlieGluZXJhbWEgbGlieHJhbmRyIGxpYnhkYW1hZ2UgbGlieGZpeGVzIGxpYnhjdXJzb3IgbGlieHRzdCBsaWJ4ZXh0IGxpYnhyZW5kZXIiCiAKICMgLS1lbmFibGUta21zLW9ubHkgb3B0aW9uIGlzIHJlcXVpcmVkIGJ5IFJPT1RMRVNTX1gKLUVYVFJBX09FQ09ORiArPSAnJHtAYmFzZV9jb25kaXRpb25hbCggIlJPT1RMRVNTX1giLCAiMSIsICIgLS1lbmFibGUta21zLW9ubHkiLCAiIiwgZCApfScKK0VYVFJBX09FQ09ORiArPSAnJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoICJST09UTEVTU19YIiwgIjEiLCAiIC0tZW5hYmxlLWttcy1vbmx5IiwgIiIsIGQgKX0nCiAKIENPTVBBVElCTEVfSE9TVCA9ICcoaS44Nnx4ODZfNjQpLiotbGludXgnCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1vbWFwXzAuNC41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBfMC40LjUuYmIKaW5kZXggZTY1MjM5NC4uYmVmMzYzNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBfMC40LjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBfMC40LjUuYmIKQEAgLTM2LDYgKzM2LDYgQEAKIAogcHl0aG9uICgpIHsKICAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMgKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgVHJ1ZSwgRmFsc2UsIGQpOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiJ29wZW5nbCcgbm90IGluIERJU1RST19GRUFUVVJFUyIpCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIidvcGVuZ2wnIG5vdCBpbiBESVNUUk9fRkVBVFVSRVMiKQogfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLWNvbW1vbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLWNvbW1vbi5pbmMKaW5kZXggZmU0MmYxMS4uYmNhMGFhZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94b3JnLWRyaXZlci1jb21tb24uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveG9yZy1kcml2ZXItY29tbW9uLmluYwpAQCAtMzgsMyArMzgsNSBAQAogCiAgICAgcG4gPSBkLmdldFZhcigiUE4iKQogICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcG4sICcgJyArIGFiaSkKKworU0VDVVJJVFlfTERGTEFHUyA9ICIke1NFQ1VSSVRZX1hfTERGTEFHU30iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzc18wLjEzLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzc18wLjEzLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzYjY4MmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwY2lhY2Nlc3NfMC4xMy41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJHZW5lcmljIFBDSSBhY2Nlc3MgbGlicmFyeSBmb3IgWCIKLQotREVTQ1JJUFRJT04gPSAibGlicGNpYWNjZXNzIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgZm9yIFggdG8gYWNjZXNzIHRoZSBcCi1QQ0kgYnVzIGFuZCBkZXZpY2VzIGluIGEgcGxhdGZvcm0taW5kZXBlbmRlbnQgd2F5LiIKLQotcmVxdWlyZSB4b3JnLWxpYi1jb21tb24uaW5jCi0KLVNSQ19VUkkgKz0gIlwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA0LURvbi10LWluY2x1ZGUtc3lzLWlvLmgtb24tYXJtLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ4MTBhYjE3ZTI0YzE0MThkZWRmNzIwN2ZiMjg0MWQ0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc1MmM1NGU5YjNjMzExYjQzNDdjYjUwYWVhODU2NmZhNDhlYWIyNzQzNDZlYThhMDZmN2YxNWRlMzI0MGI5OTkiCi0KLUxJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Mjc3YWFkYTUyMjJiOWEyMmZiZjM0NzFmZjM2ODcwNjgiCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzc18wLjE0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwY2lhY2Nlc3NfMC4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDRhNWM4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwY2lhY2Nlc3NfMC4xNC5iYgpAQCAtMCwwICsxLDE4IEBACitTVU1NQVJZID0gIkdlbmVyaWMgUENJIGFjY2VzcyBsaWJyYXJ5IGZvciBYIgorCitERVNDUklQVElPTiA9ICJsaWJwY2lhY2Nlc3MgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3IgWCB0byBhY2Nlc3MgdGhlIFwKK1BDSSBidXMgYW5kIGRldmljZXMgaW4gYSBwbGF0Zm9ybS1pbmRlcGVuZGVudCB3YXkuIgorCityZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKKworU1JDX1VSSSArPSAiXAorICAgICAgICAgICAgZmlsZTovLzAwMDQtRG9uLXQtaW5jbHVkZS1zeXMtaW8uaC1vbi1hcm0ucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOGY0MzZlMTUxZDUxMDZhOWNmYWE3MTg1N2EwNjZkMzMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2RmNTQzZTEyYWZkNDFmZWE4ZWFjODE3ZTQ4Y2JmZGU1YWVkODgxN2I4MTY3MGE0ZTllNDkzYmIyZjViZjJhNCIKKworTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yNzdhYWRhNTIyMmI5YTIyZmJmMzQ3MWZmMzY4NzA2OCIKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicHRocmVhZC1zdHVic18wLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnB0aHJlYWQtc3R1YnNfMC40LmJiCmluZGV4IGE2OTk4NDEuLmZmYTFjODUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicHRocmVhZC1zdHVic18wLjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwdGhyZWFkLXN0dWJzXzAuNC5iYgpAQCAtNywxNyArNywxMSBAQAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02ZWRjMWZlYTAzZDk1OWYwYzJkNzQzZmU1Y2E3NDZhZCIKIAotI0RFUEVORFMgPSAieGNiLXByb3RvIHhwcm90byBsaWJ4YXUgbGlieHNsdC1uYXRpdmUiCi0jIERFUEVORFMgKz0gInhzbHRwcm9jLW5hdGl2ZSBncGVyZi1uYXRpdmUiCi0KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3hjYi5mcmVlZGVza3RvcC5vcmcvZGlzdC9saWJwdGhyZWFkLXN0dWJzLSR7UFZ9LnRhci5iejIiCi0KK1NSQ19VUkkgPSAiaHR0cDovL3hjYi5mcmVlZGVza3RvcC5vcmcvZGlzdC8ke0JQfS50YXIuYnoyIgogU1JDX1VSSVttZDVzdW1dID0gIjQ4YzE1NDQ4NTRhOTRkYjBlNTE0OTljYzNhZmQ3OTdmIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImU0ZDA1OTExYTMxNjVkM2IxODMyMWNjMDY3ZmRkMmYwMjNmMDY0MzZlMzkxYzZhMjhkZmY2MThhNzhkMmU3MzMiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworaW5oZXJpdCBhdXRvdG9vbHMKIAogUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKIFJSRUNPTU1FTkRTXyR7UE59LWRiZyA9ICIke1BOfS1kZXYgKD0gJHtFWFRFTkRQS0dWfSkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS5pbmMKaW5kZXggYjA0ZWFmYi4uNGFmNDBhYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExLmluYwpAQCAtMzUsNyArMzUsMyBAQAogRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vWDExL1hLZXlzeW1EQiAke2RhdGFkaXJ9L1gxMS9YRXJyb3JEQiAke2RhdGFkaXJ9L1gxMS9YY21zLnR4dCIKIEZJTEVTXyR7UE59LXhjYiArPSAiJHtsaWJkaXJ9L2xpYlgxMS14Y2Iuc28uKiIKIEZJTEVTXyR7UE59LWxvY2FsZSArPSAiJHtkYXRhZGlyfS9YMTEvbG9jYWxlICR7bGliZGlyfS9YMTEvbG9jYWxlIgotCi0jIE11bHRpcGxlIGxpYngxMSBkZXJpdmF0aXZlcyBmcm9tIGZyb20gdGhpcyBmaWxlIGFuZCBhcmUgc2VsZWN0ZWQgYnkgdmlydHVhbC9saWJ4MTEKLSMgQSB3b3JsZCBidWlsZCBzaG91bGQgb25seSBidWlsZCB0aGUgY29ycmVjdCB2ZXJzaW9uLCBub3QgYWxsIG9mIHRoZW0uCi1FWENMVURFX0ZST01fV09STEQgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNhbGlicmF0ZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjYWxpYnJhdGVfZ2l0LmJiCmluZGV4IDdjN2ZhM2QuLjBmZTY1MzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNhbGlicmF0ZV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2FsaWJyYXRlX2dpdC5iYgpAQCAtMTYsNyArMTYsNyBAQAogCiBTUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2dpdC94b3JnL2xpYi9saWJYQ2FsaWJyYXRlIFwKICAgICAgICAgICAgZmlsZTovL2ZpeC14Y2IucGF0Y2giCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2IvZGlzYWJsZS1jaGVjay5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNiL2Rpc2FibGUtY2hlY2sucGF0Y2gKaW5kZXggNTY0MWMwZi4uYzBlZmJkYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2IvZGlzYWJsZS1jaGVjay5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjYi9kaXNhYmxlLWNoZWNrLnBhdGNoCkBAIC05LDE3ICs5LDE3IEBACiBTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogCiAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDZkN2M5YTUuLjIyY2NlYjkgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTIxLDcgKzIxLDggQEAgQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCi0gCi0gQU1fUEFUSF9QWVRIT04oWzIuNl0pCitJbmRleDogbGlieGNiLTEuMTIvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGlieGNiLTEuMTIub3JpZy9jb25maWd1cmUuYWMKKysrKyBsaWJ4Y2ItMS4xMi9jb25maWd1cmUuYWMKK0BAIC0zNiw3ICszNiw4IEBAIGlmIHRlc3QgeCIkSEFWRV9ET1QiID0geG5vOyB0aGVuCisgICAgIEFDX01TR19XQVJOKFtkb3Qgbm90IGZvdW5kIC0gZG94eWdlbiB0YXJnZXRzIHdpbGwgYmUgc2tpcHBlZF0pCisgZmkKICAKIC1QS0dfQ0hFQ0tfTU9EVUxFUyhDSEVDSywgW2NoZWNrID49IDAuOS40XSwgW0hBVkVfQ0hFQ0s9eWVzXSwgW0hBVkVfQ0hFQ0s9bm9dKQogK2RubCBQS0dfQ0hFQ0tfTU9EVUxFUyhDSEVDSywgW2NoZWNrID49IDAuOS40XSwgW0hBVkVfQ0hFQ0s9eWVzXSwgW0hBVkVfQ0hFQ0s9bm9dKQogK0hBVkVfQ0hFQ0s9bm8KICBBTV9DT05ESVRJT05BTChIQVZFX0NIRUNLLCB0ZXN0IHgkSEFWRV9DSEVDSyA9IHh5ZXMpCiAgCi0gQUNfQ09ORklHX0hFQURFUlMoW3NyYy9jb25maWcuaF0pCisgWFNMVFBST0M9bm8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGN1cnNvcl8xLjEuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjdXJzb3JfMS4xLjE0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzYyOTA0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGN1cnNvcl8xLjEuMTQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIlhjdXJzb3I6IFggQ3Vyc29yIG1hbmFnZW1lbnQgbGlicmFyeSIKLQotREVTQ1JJUFRJT04gPSAiWGN1cnNvciBpcyBhIHNpbXBsZSBsaWJyYXJ5IGRlc2lnbmVkIHRvIGhlbHAgbG9jYXRlIGFuZCBcCi1sb2FkIGN1cnNvcnMuIEN1cnNvcnMgY2FuIGJlIGxvYWRlZCBmcm9tIGZpbGVzIG9yIG1lbW9yeS4gQSBsaWJyYXJ5IG9mIFwKLWNvbW1vbiBjdXJzb3JzIGV4aXN0cyB3aGljaCBtYXAgdG8gdGhlIHN0YW5kYXJkIFggY3Vyc29yIG5hbWVzLiBDdXJzb3JzIFwKLWNhbiBleGlzdCBpbiBzZXZlcmFsIHNpemVzIGFuZCB0aGUgbGlicmFyeSBhdXRvbWF0aWNhbGx5IHBpY2tzIHRoZSBiZXN0IFwKLXNpemUuIgotCi1yZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKLQotTElDRU5TRSA9ICJNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04OTAyZTY2NDNmN2JjZDc3OTNiMjNkY2Q1ZDgwMzFhNCIKLQotREVQRU5EUyArPSAibGlieHJlbmRlciBsaWJ4Zml4ZXMiCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVBFID0gIjEiCi0KLVhPUkdfUE4gPSAibGliWGN1cnNvciIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFlN2MxN2FmYmJjZTgzZTIyMTU5MTcwNDdjNTdkMWIzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjliYzZhY2IyMWNhMTRkYTUxYmRhNWJjOTEyYzg5NTViYzZlNWU0MzNmMGFiMDBjNWU4YmVmODQyNTk2YzMzZGYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjdXJzb3JfMS4xLjE1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y3Vyc29yXzEuMS4xNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzlhZjIzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y3Vyc29yXzEuMS4xNS5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIlhjdXJzb3I6IFggQ3Vyc29yIG1hbmFnZW1lbnQgbGlicmFyeSIKKworREVTQ1JJUFRJT04gPSAiWGN1cnNvciBpcyBhIHNpbXBsZSBsaWJyYXJ5IGRlc2lnbmVkIHRvIGhlbHAgbG9jYXRlIGFuZCBcCitsb2FkIGN1cnNvcnMuIEN1cnNvcnMgY2FuIGJlIGxvYWRlZCBmcm9tIGZpbGVzIG9yIG1lbW9yeS4gQSBsaWJyYXJ5IG9mIFwKK2NvbW1vbiBjdXJzb3JzIGV4aXN0cyB3aGljaCBtYXAgdG8gdGhlIHN0YW5kYXJkIFggY3Vyc29yIG5hbWVzLiBDdXJzb3JzIFwKK2NhbiBleGlzdCBpbiBzZXZlcmFsIHNpemVzIGFuZCB0aGUgbGlicmFyeSBhdXRvbWF0aWNhbGx5IHBpY2tzIHRoZSBiZXN0IFwKK3NpemUuIgorCityZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKKworTElDRU5TRSA9ICJNSVQtc3R5bGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04OTAyZTY2NDNmN2JjZDc3OTNiMjNkY2Q1ZDgwMzFhNCIKKworREVQRU5EUyArPSAibGlieHJlbmRlciBsaWJ4Zml4ZXMiCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1BFID0gIjEiCisKK1hPUkdfUE4gPSAibGliWGN1cnNvciIKKworU1JDX1VSSVttZDVzdW1dID0gIjU4ZmUzNTE0ZTFlNzEzNWNmMzY0MTAxZTcxNGQxYTE0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI5NGU2NzBkZDM3Y2QyMzk5NWU2OWFhZTYyNjYyOWQ0YTJkZmU1NzA4ODUxYmJjMTNkMDMyNDAxYjdhM2RmNmIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmb250Ml8yLjAuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnQyXzIuMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmZiMjkwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnQyXzIuMC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJYRm9udDI6IFggRm9udCByYXN0ZXJpc2F0aW9uIGxpYnJhcnkiCi0KLURFU0NSSVBUSU9OID0gImxpYlhmb250MiBwcm92aWRlcyB2YXJpb3VzIHNlcnZpY2VzIGZvciBYIHNlcnZlcnMsIG1vc3QgXAotbm90YWJseSBmb250IHNlbGVjdGlvbiBhbmQgcmFzdGVyaXNhdGlvbiAodGhyb3VnaCBleHRlcm5hbCBsaWJyYXJpZXMgXAotc3VjaCBhcyBmcmVldHlwZSkuIgotCi1yZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKLQotTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNDZjODA0MGYyZjczN2JjZDBjNDM1ZmViMmFiMWMyYyIKLQotREVQRU5EUyArPSAiZnJlZXR5cGUgeHRyYW5zIGZvbnRzcHJvdG8gbGliZm9udGVuYyB6bGliIgotCi1YT1JHX1BOID0gImxpYlhmb250MiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwZDlmNmRkOWMyM2JmNGJjYmZiMDA1MDRiNTY2YmFmNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlOWZiYmI0NzVkZGQxNzFiM2E2YTU0Yjk4OWNiYWRlMWY2Zjg3NGZjMzVkNTA1ZWJjNWJlNDI2YmM2ZTRkYjdlIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmb250Ml8yLjAuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnQyXzIuMC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmMjdhNTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmb250Ml8yLjAuMy5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIlhGb250MjogWCBGb250IHJhc3RlcmlzYXRpb24gbGlicmFyeSIKKworREVTQ1JJUFRJT04gPSAibGliWGZvbnQyIHByb3ZpZGVzIHZhcmlvdXMgc2VydmljZXMgZm9yIFggc2VydmVycywgbW9zdCBcCitub3RhYmx5IGZvbnQgc2VsZWN0aW9uIGFuZCByYXN0ZXJpc2F0aW9uICh0aHJvdWdoIGV4dGVybmFsIGxpYnJhcmllcyBcCitzdWNoIGFzIGZyZWV0eXBlKS4iCisKK3JlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYworCitMSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSAmIEJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE0NmM4MDQwZjJmNzM3YmNkMGM0MzVmZWIyYWIxYzJjIgorCitERVBFTkRTICs9ICJmcmVldHlwZSB4dHJhbnMgZm9udHNwcm90byBsaWJmb250ZW5jIHpsaWIiCisKK1hPUkdfUE4gPSAibGliWGZvbnQyIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworU1JDX1VSSVttZDVzdW1dID0gImI3Y2E4N2RmYWZlYjUyMDViMjhhMWU5MWFjM2VmZTg1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBlOGFiN2ZkNzM3Y2NkZmU4N2UxZjAyYjU1ZjIyMWYwYmQ0NTAzYTFjNWYyOGJlNGVkNmE1NDU4NmJhYzljNGUiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnRfMS41LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmb250XzEuNS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTFkZGE1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnRfMS41LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIlhGb250OiBYIEZvbnQgcmFzdGVyaXNhdGlvbiBsaWJyYXJ5IgotCi1ERVNDUklQVElPTiA9ICJsaWJYZm9udCBwcm92aWRlcyB2YXJpb3VzIHNlcnZpY2VzIGZvciBYIHNlcnZlcnMsIG1vc3QgXAotbm90YWJseSBmb250IHNlbGVjdGlvbiBhbmQgcmFzdGVyaXNhdGlvbiAodGhyb3VnaCBleHRlcm5hbCBsaWJyYXJpZXMgXAotc3VjaCBhcyBmcmVldHlwZSkuIgotCi1yZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKLQotTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNDZjODA0MGYyZjczN2JjZDBjNDM1ZmViMmFiMWMyYyIKLQotREVQRU5EUyArPSAiZnJlZXR5cGUgeHRyYW5zIGZvbnRzcHJvdG8gbGliZm9udGVuYyB6bGliIgotUFJPVklERVMgPSAieGZvbnQiCi0KLVBFID0gIjEiCi0KLVhPUkdfUE4gPSAibGliWGZvbnQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjU0ZWU0MmJkMTc4ZDE4ZWJjN2E3M2FhY2ZkZTdmNzkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDI5NDVlYTY4ZGE0NDcxMDJmM2U2YzJiODk2YzFkMjA2MWZkMTE1ZGU5OTQwNGZhY2MyYWNhM2FkNzAxMGQ3MSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Zm9udF8xLjUuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnRfMS41LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzlmNzdmYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnRfMS41LjQuYmIKQEAgLTAsMCArMSwyNSBAQAorU1VNTUFSWSA9ICJYRm9udDogWCBGb250IHJhc3RlcmlzYXRpb24gbGlicmFyeSIKKworREVTQ1JJUFRJT04gPSAibGliWGZvbnQgcHJvdmlkZXMgdmFyaW91cyBzZXJ2aWNlcyBmb3IgWCBzZXJ2ZXJzLCBtb3N0IFwKK25vdGFibHkgZm9udCBzZWxlY3Rpb24gYW5kIHJhc3RlcmlzYXRpb24gKHRocm91Z2ggZXh0ZXJuYWwgbGlicmFyaWVzIFwKK3N1Y2ggYXMgZnJlZXR5cGUpLiIKKworcmVxdWlyZSB4b3JnLWxpYi1jb21tb24uaW5jCisKK0xJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlICYgQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTQ2YzgwNDBmMmY3MzdiY2QwYzQzNWZlYjJhYjFjMmMiCisKK0RFUEVORFMgKz0gImZyZWV0eXBlIHh0cmFucyBmb250c3Byb3RvIGxpYmZvbnRlbmMgemxpYiIKK1BST1ZJREVTID0gInhmb250IgorCitQRSA9ICIxIgorCitYT1JHX1BOID0gImxpYlhmb250IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjE2ZWFmMTU2ZWRkNzliNjgwMzhiNmE3YzQ0YWE5ZTliIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFhN2Y3NDkwNzc0Yzg3ZjIwNTJkMTQ2ZDFlMGU2NDUxOGQzMmU2ODQ4MTg0YTE4NjU0ZThkMGJiNTc4ODMyNDIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiY29tbW9uXzAuNy4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4a2Jjb21tb25fMC43LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxZGYxZGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4a2Jjb21tb25fMC43LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIkdlbmVyaWMgWEtCIGtleW1hcCBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAibGlieGtiY29tbW9uIGlzIGEga2V5bWFwIGNvbXBpbGVyIGFuZCBzdXBwb3J0IGxpYnJhcnkgd2hpY2ggXAotcHJvY2Vzc2VzIGEgcmVkdWNlZCBzdWJzZXQgb2Yga2V5bWFwcyBhcyBkZWZpbmVkIGJ5IHRoZSBYS0Igc3BlY2lmaWNhdGlvbi4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnhrYmNvbW1vbi5vcmciCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNTI1ZWQ5ODA5ZTFmOGEwN2NmNGJjZThiMDllOGI4NyIKLUxJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgotCi1ERVBFTkRTID0gInV0aWwtbWFjcm9zIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8veGtiY29tbW9uLm9yZy9kb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTQ3YmE2MDljYjAyMzliOTQ2MjEyN2Q1Y2Y4OTA4ZWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmE1OTMwNWQyZTE5ZTQ3YzI3ZWEwNjVjMmUwZGY5NmViYWM2YTNjNmU5N2UyOGFlNTYyMDA3M2I2MDg0ZTY4YiIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly94a2Jjb21tb24ub3JnLyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZG9jcyIKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLGxpYnhjYiB4a2V5Ym9hcmQtY29uZmlnLCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiY29tbW9uXzAuOC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4a2Jjb21tb25fMC44LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDUwZDBiNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiY29tbW9uXzAuOC4wLmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiR2VuZXJpYyBYS0Iga2V5bWFwIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJsaWJ4a2Jjb21tb24gaXMgYSBrZXltYXAgY29tcGlsZXIgYW5kIHN1cHBvcnQgbGlicmFyeSB3aGljaCBcCitwcm9jZXNzZXMgYSByZWR1Y2VkIHN1YnNldCBvZiBrZXltYXBzIGFzIGRlZmluZWQgYnkgdGhlIFhLQiBzcGVjaWZpY2F0aW9uLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cueGtiY29tbW9uLm9yZyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU1MjVlZDk4MDllMWY4YTA3Y2Y0YmNlOGIwOWU4Yjg3IgorTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCisKK0RFUEVORFMgPSAidXRpbC1tYWNyb3MgZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHA6Ly94a2Jjb21tb24ub3JnL2Rvd25sb2FkLyR7QlBOfS0ke1BWfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3ZDBlNGM0YTEzN2QwYWM0NWJmNmIzMjhjODRjM2E4MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlODI5MjY1ZGIwNGUwYWViZmIwNTkxYjZkYzMzNzdiNjQ1OTk1NTgxNjc4NDZjM2Y1ZWU1YzVlNTM2NDFmZTZkIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3hrYmNvbW1vbi5vcmcvIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kb2NzIgorCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsbGlieGNiIHhrZXlib2FyZC1jb25maWcsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cmVzXzEuMC43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cmVzXzEuMC43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzA0YzQ0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHJlc18xLjAuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiWFJlczogWCBSZXNvdXJjZSBleHRlbnNpb24gbGlicmFyeSIKLQotREVTQ1JJUFRJT04gPSAibGliWFJlcyBwcm92aWRlcyBhbiBYIFdpbmRvdyBTeXN0ZW0gY2xpZW50IGludGVyZmFjZSB0byBcCi10aGUgUmVzb3VyY2UgZXh0ZW5zaW9uIHRvIHRoZSBYIHByb3RvY29sLiAgVGhlIFJlc291cmNlIGV4dGVuc2lvbiBhbGxvd3MgXAotZm9yIFggY2xpZW50cyB0byBzZWUgYW5kIG1vbml0b3IgdGhlIFggcmVzb3VyY2UgdXNhZ2Ugb2YgdmFyaW91cyBjbGllbnRzIFwKLShwaXhtYXBzLCBldCBhbCkuIgotCi1yZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Yzg5NDQxYThkZjI2MWJkYzU2NTg3NDY1ZTEzYzdmYSIKLQotREVQRU5EUyArPSAibGlieGV4dCByZXNvdXJjZXByb3RvIgotCi1QRSA9ICIxIgotCi1YT1JHX1BOID0gImxpYlhyZXMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0NWVmMjkyMDZhNmI1ODI1NGM4MWJlYTI4ZWM2Yzk1ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyNjg5OTA1NGFhODdmODFiMTdiZWNjNjhlODY0NWIyNDBmMTQwNDY0Y2Y5MGM0MjYxNmViYjI2M2VjNWZhMGU1IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cmVzXzEuMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cmVzXzEuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMzRlNDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhyZXNfMS4yLjAuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJYUmVzOiBYIFJlc291cmNlIGV4dGVuc2lvbiBsaWJyYXJ5IgorCitERVNDUklQVElPTiA9ICJsaWJYUmVzIHByb3ZpZGVzIGFuIFggV2luZG93IFN5c3RlbSBjbGllbnQgaW50ZXJmYWNlIHRvIFwKK3RoZSBSZXNvdXJjZSBleHRlbnNpb24gdG8gdGhlIFggcHJvdG9jb2wuICBUaGUgUmVzb3VyY2UgZXh0ZW5zaW9uIGFsbG93cyBcCitmb3IgWCBjbGllbnRzIHRvIHNlZSBhbmQgbW9uaXRvciB0aGUgWCByZXNvdXJjZSB1c2FnZSBvZiB2YXJpb3VzIGNsaWVudHMgXAorKHBpeG1hcHMsIGV0IGFsKS4iCisKK3JlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYworCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PThjODk0NDFhOGRmMjYxYmRjNTY1ODc0NjVlMTNjN2ZhIgorCitERVBFTkRTICs9ICJsaWJ4ZXh0IHJlc291cmNlcHJvdG8iCisKK1BFID0gIjEiCisKK1hPUkdfUE4gPSAibGliWHJlcyIKKworU1JDX1VSSVttZDVzdW1dID0gIjVkNmQ0NDNkMWFiYzhlMWY2ZmMxYzU3ZmIyNzcyOWJiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZmNzVjMTY0MzQ4OGU2NGE3Y2ZiY2VkMjc0ODZmMGY5NDQ4MDEzMTljODRjMThkM2JkM2RhNmJmMjhjODEyZDQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhzaG1mZW5jZS9leHRlbnNpb25zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4c2htZmVuY2UvZXh0ZW5zaW9ucy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2M5ZTA1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4c2htZmVuY2UvZXh0ZW5zaW9ucy5wYXRjaApAQCAtMCwwICsxLDE3IEBACitXaXRoIGdsaWJjIDIuMjcgbWVtZmRfY3JlYXRlIGlzIGJlaGluZCBhIF9HTlVfU09VUkNFIGd1YXJkLCBzbyBjYWxsCitBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMgdG8gZ2V0IHRoYXQgZGVmaW5lZC4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDBjOTg4NzUuLmViZjRkZWUgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTI5LDQgKzI5LDYgQEAgQUNfQ09ORklHX1NSQ0RJUihbTWFrZWZpbGUuYW1dKQorIEFDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCisgCisrQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCisrCisgIyBJbml0aWFsaXplIEF1dG9tYWtlCisgQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbiBkaXN0LWJ6aXAyXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNobWZlbmNlXzEuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNobWZlbmNlXzEuMi5iYgppbmRleCBhZTM0YjFmLi4xZGYwNjhkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhzaG1mZW5jZV8xLjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4c2htZmVuY2VfMS4yLmJiCkBAIC0xMyw1ICsxMyw3IEBACiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIAorU1JDX1VSSSArPSAiZmlsZTovL2V4dGVuc2lvbnMucGF0Y2giCisKIFNSQ19VUklbbWQ1c3VtXSA9ICI2NjY2MmU3Njg5OTExMmMwZjk5ZTIyZjJmYzc3NWE3ZSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJkMjFiMmQxZmQ3OGMxZWZiZTFmMmMxNmRhZTFjYjIzZjhmZDIzMWRjZjg5MTQ2NWI4ZGViZTYzNmE5MDU0YjBjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94a2V5Ym9hcmQtY29uZmlnXzIuMjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDFhNTFhZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiS2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBmb3IgWCBXaW5kb3ciCi0KLURFU0NSSVBUSU9OID0gIlRoZSBub24tYXJjaCBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGFiYXNlIGZvciBYIFwKLVdpbmRvdy4gIFRoZSBnb2FsIGlzIHRvIHByb3ZpZGUgdGhlIGNvbnNpc3RlbnQsIHdlbGwtc3RydWN0dXJlZCwgXAotZnJlcXVlbnRseSByZWxlYXNlZCBvcGVuIHNvdXJjZSBvZiBYIGtleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YSBmb3IgWCBcCi1XaW5kb3cgU3lzdGVtIGltcGxlbWVudGF0aW9ucy4gIFRoZSBwcm9qZWN0IGlzIHRhcmdldGVkIHRvIFhLQi1iYXNlZCBcCi1zeXN0ZW1zLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL1hLZXlib2FyZENvbmZpZyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9eGtleWJvYXJkLWNvbmZpZyIKLQotTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wZTdmMjFjYTdkYjk3NWM2MzQ2N2QyZTc2MjRhMTJmOSIKLQotU1JDX1VSSSA9ICIke1hPUkdfTUlSUk9SfS9pbmRpdmlkdWFsL2RhdGEveGtleWJvYXJkLWNvbmZpZy8ke0JQTn0tJHtQVn0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhZjk0OThlODk1NDkwN2QwYTQ3ZjBmN2IzZDIxZTFlZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMGMxNzA0OWZhZTEyOWZjMTQ4NzU2NTZkYTlhYTMwOTllMzAzMWQ2Y2UwZWUxZDc3YWFlMTkwZmQ5ZWRjZWM1IgotCi1TRUNUSU9OID0gIngxMS9saWJzIgotREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgdXRpbC1tYWNyb3MgbGlieHNsdC1uYXRpdmUiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgteGtiLXJ1bGVzLXN5bWxpbms9eG9yZyAtLWRpc2FibGUtcnVudGltZS1kZXBzIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9YMTEveGtiIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL2NvbXBpbGVkCi0gICAgY2QgJHtEfSR7ZGF0YWRpcn0vWDExL3hrYi9ydWxlcyAmJiBsbiAtc2YgYmFzZSB4b3JnCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveGtleWJvYXJkLWNvbmZpZ18yLjIyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmZDg5NGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yMi5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIktleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YWJhc2UgZm9yIFggV2luZG93IgorCitERVNDUklQVElPTiA9ICJUaGUgbm9uLWFyY2gga2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBmb3IgWCBcCitXaW5kb3cuICBUaGUgZ29hbCBpcyB0byBwcm92aWRlIHRoZSBjb25zaXN0ZW50LCB3ZWxsLXN0cnVjdHVyZWQsIFwKK2ZyZXF1ZW50bHkgcmVsZWFzZWQgb3BlbiBzb3VyY2Ugb2YgWCBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGEgZm9yIFggXAorV2luZG93IFN5c3RlbSBpbXBsZW1lbnRhdGlvbnMuICBUaGUgcHJvamVjdCBpcyB0YXJnZXRlZCB0byBYS0ItYmFzZWQgXAorc3lzdGVtcy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9YS2V5Ym9hcmRDb25maWciCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PXhrZXlib2FyZC1jb25maWciCisKK0xJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGU3ZjIxY2E3ZGI5NzVjNjM0NjdkMmU3NjI0YTEyZjkiCisKK1NSQ19VUkkgPSAiJHtYT1JHX01JUlJPUn0vaW5kaXZpZHVhbC9kYXRhL3hrZXlib2FyZC1jb25maWcvJHtCUE59LSR7UFZ9LnRhci5iejIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlYjYxZmIzZmQ0MTllODE3ZGY1NzJiMGM4ZDk0YTg4MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkZWFlYzk5ODlmYmM0NDMzNThiNDM4NjQ0MzdiN2I2ZDM5Y2FmZjA3ODkwYTRhODA1NTEwNWNlOWZjYWE1OWJkIgorCitTRUNUSU9OID0gIngxMS9saWJzIgorREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgdXRpbC1tYWNyb3MgbGlieHNsdC1uYXRpdmUiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgteGtiLXJ1bGVzLXN5bWxpbms9eG9yZyAtLWRpc2FibGUtcnVudGltZS1kZXBzIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9YMTEveGtiIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL2NvbXBpbGVkCisgICAgY2QgJHtEfSR7ZGF0YWRpcn0vWDExL3hrYi9ydWxlcyAmJiBsbiAtc2YgYmFzZSB4b3JnCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vY2FsaWJyYXRlcHJvdG9fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2NhbGlicmF0ZXByb3RvX2dpdC5iYgppbmRleCAzYTk4OTI2Li5lYjRiNDIyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vY2FsaWJyYXRlcHJvdG9fZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9jYWxpYnJhdGVwcm90b19naXQuYmIKQEAgLTE3LDUgKzE3LDUgQEAKIFNSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZ2l0L3hvcmcvcHJvdG8vY2FsaWJyYXRlcHJvdG8gXAogICAgICAgICAgICBmaWxlOi8vZml4LnBhdGNoO2FwcGx5PXllcyIKIFMgPSAiJHtXT1JLRElSfS9naXQiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90by9uby1weXRob24tbmF0aXZlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90by9uby1weXRob24tbmF0aXZlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWI2MDg4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG8vbm8tcHl0aG9uLW5hdGl2ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLVVwc3RyZWFtIHVzZXMgQU1fUEFUSF9QWVRIT04gdG8gZmluZCBhIHB5dGhvbiBiaW5hcnkgYW5kIGFzayBpdCB3aGVyZSB0byBpbnN0YWxsCi1saWJyYXJpZXMuICBUaGlzIG1lYW5zIHdlIGVpdGhlciBuZWVkIHRvIGRlcGVuZCBvbiBweXRob24tbmF0aXZlIChsYXJnZSBidWlsZAotZGVwZW5kZW5jeSwgZWFybHkgaW4gdGhlIGJ1aWxkKSBvciB1c2UgdGhlIGhvc3QgcHl0aG9uIChweXRob25kaXIgcmVmbGVjdHMgdGhlCi1ob3N0IGFuZCBub3QgdGhlIHRhcmdldCwgYnJlYWtzIGJ1aWxkcykuCi0KLVRoZSB0aGlyZCBvcHRpb24gaXMgdG8ganVzdCBoYXJkY29kZSB0aGUgcGF0aCB3aGVyZSB0aGUgbW9kdWxlIGdvZXMsIGFzIG1vc3QKLWNhbGxlcnMgb2YgdGhlIGNvZGUgdXNlIHBrZy1jb25maWcgdG8gZmluZCB3aGVyZSBpdCB3YXMgaW5zdGFsbGVkIGFueXdheS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBkMTQwYmZlLi5jN2I2OGRhIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xNCw3ICsxNCwxMCBAQCBpZiB0ZXN0ICIkWE1MTElOVCIgPSAibm8iOyB0aGVuCi0gICAgQUNfTVNHX1dBUk4oW3htbGxpbnQgbm90IGZvdW5kOyB1bmFibGUgdG8gdmFsaWRhdGUgYWdhaW5zdCBzY2hlbWEuXSkKLSBmaQotCi0tQU1fUEFUSF9QWVRIT04oWzIuNV0pCi0rcHl0aG9uZGlyPSIke2xpYmRpcn0veGNiLXByb3RvIgotK0FDX1NVQlNUKHB5dGhvbmRpcikKLStQWVRIT049InB5dGhvbjMiCi0rQUNfU1VCU1QoUFlUSE9OKQotCi0geGNiaW5jbHVkZWRpcj0nJHtkYXRhZGlyfS94Y2InCi0gQUNfU1VCU1QoeGNiaW5jbHVkZWRpcikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG9fMS4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG9fMS4xMi5iYgppbmRleCBiYzA0YmM0Li4yNWE4MzczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGNiLXByb3RvXzEuMTIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90b18xLjEyLmJiCkBAIC0xMSw4ICsxMSw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNzYzYjA4MWNiMTBjMjIzNDM1YjAxZTAwZGMwYWJhNyBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZHJpMi54bWw7YmVnaW5saW5lPTI7ZW5kbGluZT0yODttZDU9Zjg3NjNiMTNmZjQzMmU4NTk3ZTBkNjEwY2Y1OThlNjUiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3hjYi5mcmVlZGVza3RvcC5vcmcvZGlzdC94Y2ItcHJvdG8tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9uby1weXRob24tbmF0aXZlLnBhdGNoIFwKK1NSQ19VUkkgPSAiaHR0cDovL3hjYi5mcmVlZGVza3RvcC5vcmcvZGlzdC8ke0JQfS50YXIuYnoyIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZS13aGl0ZXNwYWNlLXVzZS1jb25zaXN0ZW50LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItcHJpbnQtaXMtYS1mdW5jdGlvbi1hbmQtbmVlZHMtcGFyZW50aGVzZXMucGF0Y2ggXAogICAgICAgICAgICAiCkBAIC0yMSw2ICsyMCwxMCBAQAogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKIAorIyBGb3JjZSB0aGUgdXNlIG9mIFB5dGhvbiAzIGFuZCBhIHNwZWNpZmljIGxpYnJhcnkgcGF0aCBzbyB3ZSBkb24ndCBuZWVkIHRvCisjIGRlcGVuZCBvbiBweXRob24zLW5hdGl2ZQorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gIlBZVEhPTj1weXRob24zIGFtX2N2X3B5dGhvbl9weXRob25kaXI9JHtsaWJkaXJ9L3hjYi1wcm90byIKKwogUEFDS0FHRVMgKz0gInB5dGhvbi14Y2JnZW4iCiAKIEZJTEVTXyR7UE59ID0gIiIKQEAgLTMyLDkgKzM1LDE5IEBACiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIAotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBNYWtlZmlsZSdzIGRvX2luc3RhbGwgY3JlYXRlcyAucHljIGZpbGVzIGZvciBweXRob24zLCBub3cgYWxzbyBjcmVhdGUKLSAgICAjIHRoZW0gZm9yIHB5dGhvbjIgc28gdGhhdCB0aGV5IHdpbGwgYmUgcmVjb3JkZWQgYnkgbWFuaWZlc3QsIGFuZCBjYW4gYmUKLSAgICAjIGNsZWFuZWQgY29ycmVjdGx5LgotICAgIHB5dGhvbiAtbSBweV9jb21waWxlICR7RH0ke2xpYmRpcn0veGNiLXByb3RvL3hjYmdlbi8qLnB5CisjIE5lZWQgdG8gZG8gdGhpcyBkYW5jZSBiZWNhdXNlIHdlJ3JlIGZvcmNpbmcgdGhlIHVzZSBvZiBob3N0IFB5dGhvbiBhYm92ZSBhbmQKKyMgaWYgeGNiLXByb3RvIGlzIGJ1aWx0IHdpdGggUHkzLjUgYW5kIHRoZW4gcmUtdXNlZCBmcm9tIHNzdGF0ZSBvbiBhIGhvc3Qgd2l0aAorIyBQeTMuNiB0aGUgc2Vjb25kIGJ1aWxkIHdpbGwgd3JpdGUgbmV3IGNhY2hlIGZpbGVzIGludG8gdGhlIHN5c3Jvb3Qgd2hpY2ggd29uJ3QKKyMgYmUgbGlzdGVkIGluIHRoZSBtYW5pZmVzdCBzbyB3b24ndCBiZSBkZWxldGVkLCByZXN1bHRpbmcgaW4gYW4gZXJyb3Igb24KKyMgcmVidWlsZHMuICBTb2x2ZSB0aGlzIGJ5IGRlbGV0aW5nIHRoZSBlbnRpcmUgY2FjaGUgZGlyZWN0b3J5IHdoZW4gdGhpcyBwYWNrYWdlCisjIGlzIHJlbW92ZWQgZnJvbSB0aGUgc3lzcm9vdC4KK1NTVEFURVBPU1RJTlNURlVOQ1MgKz0gInhjYl9zc3RhdGVfcG9zdGluc3QiCit4Y2Jfc3N0YXRlX3Bvc3RpbnN0KCkgeworCWlmIFsgIiR7QkJfQ1VSUkVOVFRBU0t9IiA9ICJwb3B1bGF0ZV9zeXNyb290IiAtbyAiJHtCQl9DVVJSRU5UVEFTS30iID0gInBvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUiIF0KKwl0aGVuCisJCWNhdCA8PEVPRiA+JHtTU1RBVEVfSU5TVF9QT1NUUk19CisjIS9iaW4vc2gKK3JtIC1yZiAke2xpYmRpcn0veGNiLXByb3RvL3hjYmdlbi9fX3B5Y2FjaGVfXworRU9GCisJZmkKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94cHJvdG8veHByb3RvX2ZpeF9mb3JfeDMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hwcm90by94cHJvdG9fZml4X2Zvcl94MzIucGF0Y2gKaW5kZXggOGE1ZmY1OC4uNGY5ZWQ5OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hwcm90by94cHJvdG9fZml4X2Zvcl94MzIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hwcm90by94cHJvdG9fZml4X2Zvcl94MzIucGF0Y2gKQEAgLTEwLDEzICsxMCwxNSBAQAogUmVjZWl2ZWQgdGhpcyBwYXRjaCBmcm9tIEguSi4gTHUgPGhqbC50b29sc0BnbWFpbC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPiAyMDExLzEyLzEKIAotLS0tIHhwcm90by03LjAuMjIvWG1kLmgueDMyCTIwMDktMDctMTEgMDQ6MTk6NTAuMDAwMDAwMDAwIC0wNzAwCi0rKysgeHByb3RvLTcuMC4yMi9YbWQuaAkyMDExLTExLTMwIDE3OjE0OjE5LjI5MDM5NTg5MyAtMDgwMAorSW5kZXg6IHhwcm90by03LjAuMzEvWG1kLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB4cHJvdG8tNy4wLjMxLm9yaWcvWG1kLmgKKysrKyB4cHJvdG8tNy4wLjMxL1htZC5oCiBAQCAtNjIsNyArNjIsNiBAQCBTT0ZUV0FSRS4KICAgICAgIGRlZmluZWQoX19pYTY0X18pIHx8IGRlZmluZWQoaWE2NCkgfHwgXAogICAgICAgZGVmaW5lZChfX3NwYXJjNjRfXykgfHwgXAogICAgICAgZGVmaW5lZChfX3MzOTB4X18pIHx8IFwKIC0gICAgIGRlZmluZWQoX19hbWQ2NF9fKSB8fCBkZWZpbmVkKGFtZDY0KSB8fCBcCiAgICAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gIyAgZGVmaW5lIExPTkc2NAkJCQkvKiAzMi82NC1iaXQgYXJjaGl0ZWN0dXJlICovCi0gIyBlbmRpZgorICMgIGlmICFkZWZpbmVkKF9fSUxQMzJfXykgLyogYW1kNjQteDMyIGlzIDMyYml0ICovCisgIyAgIGRlZmluZSBMT05HNjQJCQkJLyogMzIvNjQtYml0IGFyY2hpdGVjdHVyZSAqLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZ18wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnXzAuMS5iYgppbmRleCA0YzQ0MmJjLi41NDIwYjdkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnXzAuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnXzAuMS5iYgpAQCAtMTAsNyArMTAsNiBAQAogUyA9ICIke1dPUktESVJ9IgogCiBDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9YMTEveG9yZy5jb25mIgotQ09ORkZJTEVTXyR7UE59X2FwcGVuZF9saWJjLW11c2wgPSAiICR7c3lzY29uZmRpcn0vWDExL3hvcmcuY29uZi5kLzEwLXByZWxvYWQtbW9kdWxlcy5jb25mIgogCiBQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgogQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcuaW5jCmluZGV4IDg2M2Q4MGMuLmNmMjI4NmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLmluYwpAQCAtMTE3LDcgKzExNyw2IEBACiAgICAgICAgICAgICAgICAgIC0tc3lzY29uZmRpcj0vZXRjL1gxMSBcCiAgICAgICAgICAgICAgICAgIC0tbG9jYWxzdGF0ZWRpcj0vdmFyIFwKICAgICAgICAgICAgICAgICAgLS13aXRoLXhrYi1vdXRwdXQ9L3Zhci9saWIveGtiIFwKLSAgICAgICAgICAgICAgICAgV0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVI9JHtSRUNJUEVfU1lTUk9PVH0gXAogIgogCiBPUEVOR0xfUEtHQ09ORklHUyA9ICJkcmkgZ2x4IGdsYW1vciBkcmkzIHhzaG1mZW5jZSIKQEAgLTEzMyw3ICsxMzIsNyBAQAogIyBEUkkzIHJlcXVpcmVzIHhzaG1mZW5jZSB0byBhbHNvIGJlIGVuYWJsZWQKIFBBQ0tBR0VDT05GSUdbZHJpM10gPSAiLS1lbmFibGUtZHJpMywtLWRpc2FibGUtZHJpMyxkcmkzcHJvdG8iCiBQQUNLQUdFQ09ORklHW2dseF0gPSAiLS1lbmFibGUtZ2x4LC0tZGlzYWJsZS1nbHgsZ2xwcm90byB2aXJ0dWFsL2xpYmdsIHZpcnR1YWwvbGlieDExIgotUEFDS0FHRUNPTkZJR1tnbGFtb3JdID0gIi0tZW5hYmxlLWdsYW1vciwtLWRpc2FibGUtZ2xhbW9yLGxpYmVwb3h5LGxpYmVnbCIKK1BBQ0tBR0VDT05GSUdbZ2xhbW9yXSA9ICItLWVuYWJsZS1nbGFtb3IsLS1kaXNhYmxlLWdsYW1vcixsaWJlcG94eSB2aXJ0dWFsL2xpYmdibSxsaWJlZ2wiCiBQQUNLQUdFQ09ORklHW3Vud2luZF0gPSAiLS1lbmFibGUtbGlidW53aW5kLC0tZGlzYWJsZS1saWJ1bndpbmQsbGlidW53aW5kIgogUEFDS0FHRUNPTkZJR1t4c2htZmVuY2VdID0gIi0tZW5hYmxlLXhzaG1mZW5jZSwtLWRpc2FibGUteHNobWZlbmNlLGxpYnhzaG1mZW5jZSIKIFBBQ0tBR0VDT05GSUdbeG1sdG9dID0gIi0td2l0aC14bWx0bywgLS13aXRob3V0LXhtbHRvLCB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDEteGY4NnBjaUJ1cy5jLXVzZS1JbnRlbC1kZHgtb25seS1mb3ItcHJlLWdlbjQtaGFyZHdhci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy8wMDAxLXhmODZwY2lCdXMuYy11c2UtSW50ZWwtZGR4LW9ubHktZm9yLXByZS1nZW40LWhhcmR3YXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA1ZWVjNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy8wMDAxLXhmODZwY2lCdXMuYy11c2UtSW50ZWwtZGR4LW9ubHktZm9yLXByZS1nZW40LWhhcmR3YXIucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSBkNzdjZGM1ZTFlZWUyNjgyMWFiOThjOTQ3YWJlYTUzZmI3YjE4ZmU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2FsaWZvcm5pYSBTdWxsaXZhbiA8Y2FsaWZvcm5pYS5sLnN1bGxpdmFuQGludGVsLmNvbT4KK0RhdGU6IEZyaSwgMTYgTWFyIDIwMTggMTc6MjM6MTEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0geGY4NnBjaUJ1cy5jOiB1c2UgSW50ZWwgZGR4IG9ubHkgZm9yIHByZS1nZW40IGhhcmR3YXJlCisKK1VzZSBpbnRlbCBkZHggb25seSBvbiBwcmUtZ2VuNCBodywgbmV3ZXIgb25lcyB3aWxsIGZhbGwgYmFjayB0byBtb2Rlc2V0dGluZworQXV0aG9yOiBUaW1vIEFhbHRvbmVuIDx0amFhbHRvbkBkZWJpYW4ub3JnPgorCitJbnN0ZWFkIG9mIGRlZmF1bHRpbmcgdG8gdGhlIEludGVsIGRyaXZlciBmb3IgYWxsIEludGVsIGhhcmR3YXJlLCBvbmx5CitkZWZhdWx0IGl0IGZvciBvbGRlciBoYXJkd2FyZSBmb3Igd2hpY2ggaXQgaGFzIHNob3duIHRvIGJlIGJldHRlciBmb3IuCisKK090aGVycyBmYWxsIHRocm91Z2ggdG8gdGhlIC1tb2Rlc2V0dGluZyBkZWZhdWx0LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW0RlYmlhbi9GZWRvcmEgcGF0Y2gKK2h0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMveG9yZy14MTEtc2VydmVyL2MvZWU1MTVlNDRiMDdlMzc2ODlhYmY0OGNmMmZmZmI0MTU3OGYzYmMxZF0KKworU2lnbmVkLW9mZi1ieTogQ2FsaWZvcm5pYSBTdWxsaXZhbiA8Y2FsaWZvcm5pYS5sLnN1bGxpdmFuQGludGVsLmNvbT4KKy0tLQorIGh3L3hmcmVlODYvY29tbW9uL3hmODZwY2lCdXMuYyB8IDE4ICsrKysrKysrKysrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9ody94ZnJlZTg2L2NvbW1vbi94Zjg2cGNpQnVzLmMgYi9ody94ZnJlZTg2L2NvbW1vbi94Zjg2cGNpQnVzLmMKK2luZGV4IGU2MWFlMGNkNC4uZDcwYzk5MTk3IDEwMDY0NAorLS0tIGEvaHcveGZyZWU4Ni9jb21tb24veGY4NnBjaUJ1cy5jCisrKysgYi9ody94ZnJlZTg2L2NvbW1vbi94Zjg2cGNpQnVzLmMKK0BAIC0xMTczLDcgKzExNzMsMjMgQEAgeGY4NlZpZGVvUHRyVG9Ecml2ZXJMaXN0KHN0cnVjdCBwY2lfZGV2aWNlICpkZXYsCisgCQljYXNlIDB4MGJlZjoKKyAJCQkvKiBVc2UgZmJkZXYvdmVzYSBkcml2ZXIgb24gT2FrdHJhaWwsIE1lZGZpZWxkLCBDRFYgKi8KKyAJCQlicmVhazsKKy0JCWRlZmF1bHQ6CisrCQkvKiBEZWZhdWx0IHRvIGludGVsIG9ubHkgb24gcHJlLWdlbjQgY2hpcHMgKi8KKysJCWNhc2UgMHgzNTc3OgorKwkJY2FzZSAweDI1NjI6CisrCQljYXNlIDB4MzU4MjoKKysJCWNhc2UgMHgzNThlOgorKwkJY2FzZSAweDI1NzI6CisrCQljYXNlIDB4MjU4MjoKKysJCWNhc2UgMHgyNThhOgorKwkJY2FzZSAweDI1OTI6CisrCQljYXNlIDB4Mjc3MjoKKysJCWNhc2UgMHgyN2EyOgorKwkJY2FzZSAweDI3YWU6CisrCQljYXNlIDB4MjliMjoKKysJCWNhc2UgMHgyOWMyOgorKwkJY2FzZSAweDI5ZDI6CisrCQljYXNlIDB4YTAwMToKKysJCWNhc2UgMHhhMDExOgorIAkJCWRyaXZlckxpc3RbMF0gPSAiaW50ZWwiOworIAkJCWJyZWFrOworICAgICAgICAgfQorLS0gCisyLjE0LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDItY29uZmlndXJlLmFjLUZpeC13YXlsYW5kLXNjYW5uZXItYW5kLXByb3RvY29scy1sb2NhdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy8wMDAyLWNvbmZpZ3VyZS5hYy1GaXgtd2F5bGFuZC1zY2FubmVyLWFuZC1wcm90b2NvbHMtbG9jYXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhZmQwN2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDItY29uZmlndXJlLmFjLUZpeC13YXlsYW5kLXNjYW5uZXItYW5kLXByb3RvY29scy1sb2NhdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gOTYzNDI4ZjkxNGM0MjI3MGQzMzEyZDRmMGMwODQwNTY1NTIxNTM0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDE2IE5vdiAyMDE2IDAwOjQxOjUxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBjb25maWd1cmUuYWM6IEZpeCB3YXlsYW5kLXNjYW5uZXIgYW5kIHByb3RvY29scyBsb2NhdGlvbnMKLQotV2Ugd2FudCB0byB1c2UgdGhlIHdheWxhbmQtc2Nhbm5lciBpbiBwYXRoIChuYXRpdmUgc3lzcm9vdCkKLWluc3RlYWQgb2YgdXNpbmcgcGtnLWNvbmZpZyB3aGljaCBnaXZlcyB1cyB0YXJnZXQgcGF0aHMuCi0KLVRoZSBwcm90b2NvbHMgcGF0aHMgb24gdGhlIG90aGVyIGhhbmQgbmVlZCB0byBiZSBwcmVmaXhlZCB3aXRoIHRoZQotKGFsbGFyY2gpIHN5c3Jvb3QgYmVjYXVzZSwgYWdhaW4sIHBrZy1jb25maWcgZ2l2ZXMgdXMgdGFyZ2V0IHBhdGhzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDYgKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNThmMTU2Ny4uMzgzYTdkZiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjUyNSwxMSArMjUyNSw5IEBAIGlmIHRlc3QgIngkWFdBWUxBTkQiID0geHllczsgdGhlbgotIAkJQUNfTVNHX0VSUk9SKFtYd2F5bGFuZCByZXF1aXJlcyBDTE9DS19NT05PVE9OSUMgc3VwcG9ydC5dKQotIAlmaQotIAotLQlXQVlMQU5EX1BSRUZJWD1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1wcmVmaXggd2F5bGFuZC1jbGllbnRgCi0tCUFDX1BBVEhfUFJPRyhbV0FZTEFORF9TQ0FOTkVSXSwgW3dheWxhbmQtc2Nhbm5lcl0sLAotLQkJICAgICBbJHtXQVlMQU5EX1BSRUZJWH0vYmluJFBBVEhfU0VQQVJBVE9SJFBBVEhdKQotKwlBQ19QQVRIX1BST0coW1dBWUxBTkRfU0NBTk5FUl0sIFt3YXlsYW5kLXNjYW5uZXJdKQotIAotLQlBQ19TVUJTVChXQVlMQU5EX1BST1RPQ09MU19EQVRBRElSLCBgJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYCkKLSsJQUNfU1VCU1QoV0FZTEFORF9QUk9UT0NPTFNfREFUQURJUiwgJHtXQVlMQU5EX1BST1RPQ09MU19TWVNST09UX0RJUn1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYCkKLSBmaQotIAotIAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvQ1ZFLTIwMTctMTA5NzEtMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9DVkUtMjAxNy0xMDk3MS0xLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2M4MDQ5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9DVkUtMjAxNy0xMDk3MS0xLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotRnJvbSAyMTVmODk0OTY1ZGY1ZmIwYmI0NWIxMDdkODQ1MjRlNzAwZDIwNzNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFsIFNyYiA8bXNyYkBzdXNlLmNvbT4KLURhdGU6IFdlZCwgMjQgTWF5IDIwMTcgMTU6NTQ6NDAgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gZGl4OiBEaXNhbGxvdyBHZW5lcmljRXZlbnQgaW4gU2VuZEV2ZW50IHJlcXVlc3QuCi0KLVRoZSBTZW5kRXZlbnQgcmVxdWVzdCBob2xkcyB4RXZlbnQgd2hpY2ggaXMgZXhhY3RseSAzMiBieXRlcyBsb25nLCBubyBtb3JlLAotbm8gbGVzcy4gQm90aCBQcm9jU2VuZEV2ZW50IGFuZCBTUHJvY1NlbmRFdmVudCB2ZXJpZnkgdGhhdCB0aGUgcmVjZWl2ZWQgZGF0YQotZXhhY3RseSBtYXRjaCB0aGUgcmVxdWVzdCBzaXplLiBIb3dldmVyIG5vdGhpbmcgc3RvcHMgdGhlIGNsaWVudCBmcm9tIHBhc3NpbmcKLWluIGV2ZW50IHdpdGggeEV2ZW50Ojp0eXBlID0gR2VuZXJpY0V2ZW50IGFuZCBhbnkgdmFsdWUgb2YKLXhHZW5lcmljRXZlbnQ6Omxlbmd0aC4KLQotSW4gdGhlIGNhc2Ugb2YgUHJvY1NlbmRFdmVudCwgdGhlIGV2ZW50IHdpbGwgYmUgZXZlbnR1YWxseSBwYXNzZWQgdG8KLVdyaXRlRXZlbnRzVG9DbGllbnQgd2hpY2ggd2lsbCBzZWUgdGhhdCBpdCBpcyBHZW5lcmljIGV2ZW50IGFuZCBjb3B5IHRoZQotYXJiaXRyYXJ5IGxlbmd0aCBmcm9tIHRoZSByZWNlaXZlIGJ1ZmZlciAoYW5kIHBvc3NpYmx5IHBhc3QgaXQpIGFuZCBzZW5kIGl0IHRvCi10aGUgb3RoZXIgY2xpZW50LiBUaGlzIGFsbG93cyBjbGllbnRzIHRvIGNvcHkgdW5pdGlhbGl6ZWQgaGVhcCBtZW1vcnkgb3V0IG9mIFgKLXNlcnZlciBvciB0byBjcmFzaCBpdC4KLQotSW4gY2FzZSBvZiBTUHJvY1NlbmRFdmVudCwgaXQgd2lsbCBhdHRlbXB0IHRvIHN3YXAgdGhlIGluY29taW5nIGV2ZW50IGJ5Ci1jYWxsaW5nIGEgc3dhcHBpbmcgZnVuY3Rpb24gZnJvbSB0aGUgRXZlbnRTd2FwVmVjdG9yIGFycmF5LiBUaGUgc3dhcHBlZCBldmVudAotaXMgd3JpdHRlbiB0byB0YXJnZXQgYnVmZmVyLCB3aGljaCBpbiB0aGlzIGNhc2UgaXMgbG9jYWwgeEV2ZW50IHZhcmlhYmxlLiBUaGUKLXhFdmVudCB2YXJpYWJsZSBpcyAzMiBieXRlcyBsb25nLCBidXQgdGhlIHN3YXBwaW5nIGZ1bmN0aW9ucyBmb3IgR2VuZXJpY0V2ZW50cwotZXhwZWN0IHRoYXQgdGhlIHRhcmdldCBidWZmZXIgaGFzIHNpemUgbWF0Y2hpbmcgdGhlIHNpemUgb2YgdGhlIHNvdXJjZQotR2VuZXJpY0V2ZW50LiBUaGlzIGFsbG93cyBjbGllbnRzIHRvIGNhdXNlIHN0YWNrIGJ1ZmZlciBvdmVyZmxvd3MuCi0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTcmIgPG1zcmJAc3VzZS5jb20+Ci1SZXZpZXdlZC1ieTogUGV0ZXIgSHV0dGVyZXIgPHBldGVyLmh1dHRlcmVyQHdoby10Lm5ldD4KLVNpZ25lZC1vZmYtYnk6IFBldGVyIEh1dHRlcmVyIDxwZXRlci5odXR0ZXJlckB3aG8tdC5uZXQ+Ci0KLUNWRTogQ1ZFLTIwMTctMTA5NzEKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy94b3JnL3hzZXJ2ZXIvY29tbWl0Lz9pZD0yMTVmODk0OTY1ZGY1ZmIwYmI0NWIxMDdkODQ1MjRlNzAwZDIwNzNjXQotCi1TaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gZGl4L2V2ZW50cy5jICB8ICAgIDYgKysrKysrCi0gZGl4L3N3YXByZXEuYyB8ICAgIDcgKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZGl4L2V2ZW50cy5jIGIvZGl4L2V2ZW50cy5jCi1pbmRleCAzZTNhMDFlLi5kM2EzM2VhIDEwMDY0NAotLS0tIGEvZGl4L2V2ZW50cy5jCi0rKysgYi9kaXgvZXZlbnRzLmMKLUBAIC01MzY2LDYgKzUzNjYsMTIgQEAgUHJvY1NlbmRFdmVudChDbGllbnRQdHIgY2xpZW50KQotICAgICAgICAgY2xpZW50LT5lcnJvclZhbHVlID0gc3R1ZmYtPmV2ZW50LnUudS50eXBlOwotICAgICAgICAgcmV0dXJuIEJhZFZhbHVlOwotICAgICB9Ci0rICAgIC8qIEdlbmVyaWMgZXZlbnRzIGNhbiBoYXZlIHZhcmlhYmxlIHNpemUsIGJ1dCBTZW5kRXZlbnQgcmVxdWVzdCBob2xkcwotKyAgICAgICBleGFjdGx5IDMyQiBvZiBldmVudCBkYXRhLiAqLwotKyAgICBpZiAoc3R1ZmYtPmV2ZW50LnUudS50eXBlID09IEdlbmVyaWNFdmVudCkgewotKyAgICAgICAgY2xpZW50LT5lcnJvclZhbHVlID0gc3R1ZmYtPmV2ZW50LnUudS50eXBlOwotKyAgICAgICAgcmV0dXJuIEJhZFZhbHVlOwotKyAgICB9Ci0gICAgIGlmIChzdHVmZi0+ZXZlbnQudS51LnR5cGUgPT0gQ2xpZW50TWVzc2FnZSAmJgotICAgICAgICAgc3R1ZmYtPmV2ZW50LnUudS5kZXRhaWwgIT0gOCAmJgotICAgICAgICAgc3R1ZmYtPmV2ZW50LnUudS5kZXRhaWwgIT0gMTYgJiYgc3R1ZmYtPmV2ZW50LnUudS5kZXRhaWwgIT0gMzIpIHsKLWRpZmYgLS1naXQgYS9kaXgvc3dhcHJlcS5jIGIvZGl4L3N3YXByZXEuYwotaW5kZXggNzE5ZTliOC4uNjc4NTA1OSAxMDA2NDQKLS0tLSBhL2RpeC9zd2FwcmVxLmMKLSsrKyBiL2RpeC9zd2FwcmVxLmMKLUBAIC0yOTIsNiArMjkyLDEzIEBAIFNQcm9jU2VuZEV2ZW50KENsaWVudFB0ciBjbGllbnQpCi0gICAgIHN3YXBsKCZzdHVmZi0+ZGVzdGluYXRpb24pOwotICAgICBzd2FwbCgmc3R1ZmYtPmV2ZW50TWFzayk7Ci0gCi0rICAgIC8qIEdlbmVyaWMgZXZlbnRzIGNhbiBoYXZlIHZhcmlhYmxlIHNpemUsIGJ1dCBTZW5kRXZlbnQgcmVxdWVzdCBob2xkcwotKyAgICAgICBleGFjdGx5IDMyQiBvZiBldmVudCBkYXRhLiAqLwotKyAgICBpZiAoc3R1ZmYtPmV2ZW50LnUudS50eXBlID09IEdlbmVyaWNFdmVudCkgewotKyAgICAgICAgY2xpZW50LT5lcnJvclZhbHVlID0gc3R1ZmYtPmV2ZW50LnUudS50eXBlOwotKyAgICAgICAgcmV0dXJuIEJhZFZhbHVlOwotKyAgICB9Ci0rCi0gICAgIC8qIFN3YXAgZXZlbnQgKi8KLSAgICAgcHJvYyA9IEV2ZW50U3dhcFZlY3RvcltzdHVmZi0+ZXZlbnQudS51LnR5cGUgJiAwMTc3XTsKLSAgICAgaWYgKCFwcm9jIHx8IHByb2MgPT0gTm90SW1wbGVtZW50ZWQpICAgICAgICAvKiBubyBzd2FwcGluZyBwcm9jOyBpbnZhbGlkIGV2ZW50IHR5cGU/ICovCi0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnL0NWRS0yMDE3LTEwOTcxLTIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvQ1ZFLTIwMTctMTA5NzEtMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWM5ODg3YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvQ1ZFLTIwMTctMTA5NzEtMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLUZyb20gOGNhZWQ0ZGYzNmIxZjgwMmI0OTkyZWRjZmQyODJjYmVlZWMzNWQ5ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhbCBTcmIgPG1zcmJAc3VzZS5jb20+Ci1EYXRlOiBXZWQsIDI0IE1heSAyMDE3IDE1OjU0OjQxICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFhpOiBWZXJpZnkgYWxsIGV2ZW50cyBpbiBQcm9jWFNlbmRFeHRlbnNpb25FdmVudC4KLQotVGhlIHJlcXVpcmVtZW50IGlzIHRoYXQgZXZlbnRzIGhhdmUgdHlwZSBpbiByYW5nZQotRVhURU5TSU9OX0VWRU5UX0JBU0UuLmxhc3RFdmVudCwgYnV0IGl0IHdhcyB0ZXN0ZWQKLW9ubHkgZm9yIGZpcnN0IGV2ZW50IG9mIGFsbC4KLQotU2lnbmVkLW9mZi1ieTogTWljaGFsIFNyYiA8bXNyYkBzdXNlLmNvbT4KLVJldmlld2VkLWJ5OiBQZXRlciBIdXR0ZXJlciA8cGV0ZXIuaHV0dGVyZXJAd2hvLXQubmV0PgotU2lnbmVkLW9mZi1ieTogUGV0ZXIgSHV0dGVyZXIgPHBldGVyLmh1dHRlcmVyQHdoby10Lm5ldD4KLQotQ1ZFOiBDVkUtMjAxNy0xMDk3MQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL3hvcmcveHNlcnZlci9jb21taXQvP2lkPThjYWVkNGRmMzZiMWY4MDJiNDk5MmVkY2ZkMjgyY2JlZWVjMzVkOWRdCi0KLVNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBYaS9zZW5kZXhldi5jIHwgICAxMiArKysrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvWGkvc2VuZGV4ZXYuYyBiL1hpL3NlbmRleGV2LmMKLWluZGV4IDFjZjExOGEuLjVlNjNiZmMgMTAwNjQ0Ci0tLS0gYS9YaS9zZW5kZXhldi5jCi0rKysgYi9YaS9zZW5kZXhldi5jCi1AQCAtMTE3LDcgKzExNyw3IEBAIFNQcm9jWFNlbmRFeHRlbnNpb25FdmVudChDbGllbnRQdHIgY2xpZW50KQotIGludAotIFByb2NYU2VuZEV4dGVuc2lvbkV2ZW50KENsaWVudFB0ciBjbGllbnQpCi0gewotLSAgICBpbnQgcmV0OwotKyAgICBpbnQgcmV0LCBpOwotICAgICBEZXZpY2VJbnRQdHIgZGV2OwotICAgICB4RXZlbnQgKmZpcnN0OwotICAgICBYRXZlbnRDbGFzcyAqbGlzdDsKLUBAIC0xNDEsMTAgKzE0MSwxMiBAQCBQcm9jWFNlbmRFeHRlbnNpb25FdmVudChDbGllbnRQdHIgY2xpZW50KQotICAgICAvKiBUaGUgY2xpZW50J3MgZXZlbnQgdHlwZSBtdXN0IGJlIG9uZSBkZWZpbmVkIGJ5IGFuIGV4dGVuc2lvbi4gKi8KLSAKLSAgICAgZmlyc3QgPSAoKHhFdmVudCAqKSAmc3R1ZmZbMV0pOwotLSAgICBpZiAoISgoRVhURU5TSU9OX0VWRU5UX0JBU0UgPD0gZmlyc3QtPnUudS50eXBlKSAmJgotLSAgICAgICAgICAoZmlyc3QtPnUudS50eXBlIDwgbGFzdEV2ZW50KSkpIHsKLS0gICAgICAgIGNsaWVudC0+ZXJyb3JWYWx1ZSA9IGZpcnN0LT51LnUudHlwZTsKLS0gICAgICAgIHJldHVybiBCYWRWYWx1ZTsKLSsgICAgZm9yIChpID0gMDsgaSA8IHN0dWZmLT5udW1fZXZlbnRzOyBpKyspIHsKLSsgICAgICAgIGlmICghKChFWFRFTlNJT05fRVZFTlRfQkFTRSA8PSBmaXJzdFtpXS51LnUudHlwZSkgJiYKLSsgICAgICAgICAgICAoZmlyc3RbaV0udS51LnR5cGUgPCBsYXN0RXZlbnQpKSkgewotKyAgICAgICAgICAgIGNsaWVudC0+ZXJyb3JWYWx1ZSA9IGZpcnN0W2ldLnUudS50eXBlOwotKyAgICAgICAgICAgIHJldHVybiBCYWRWYWx1ZTsKLSsgICAgICAgIH0KLSAgICAgfQotIAotICAgICBsaXN0ID0gKFhFdmVudENsYXNzICopIChmaXJzdCArIHN0dWZmLT5udW1fZXZlbnRzKTsKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvQ1ZFLTIwMTctMTA5NzEtMy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9DVkUtMjAxNy0xMDk3MS0zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NGJhNDgxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9DVkUtMjAxNy0xMDk3MS0zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSBiYTMzNmIyNDA1MjEyMmIxMzY0ODY5NjFjODJkZWFjNzZiYmRlNDU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFsIFNyYiA8bXNyYkBzdXNlLmNvbT4KLURhdGU6IFdlZCwgMjQgTWF5IDIwMTcgMTU6NTQ6NDIgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gWGk6IERvIG5vdCB0cnkgdG8gc3dhcCBHZW5lcmljRXZlbnQuCi0KLVRoZSBTUHJvY1hTZW5kRXh0ZW5zaW9uRXZlbnQgbXVzdCBub3QgYXR0ZW1wdCB0byBzd2FwIEdlbmVyaWNFdmVudCBiZWNhdXNlCi1pdCBpcyBhc3N1bWluZyB0aGF0IHRoZSBldmVudCBoYXMgZml4ZWQgc2l6ZSBhbmQgZ2l2ZXMgdGhlIHN3YXBwaW5nIGZ1bmN0aW9uCi14RXZlbnQtc2l6ZWQgYnVmZmVyLgotCi1BIEdlbmVyaWNFdmVudCB3b3VsZCBiZSBsYXRlciByZWplY3RlZCBieSBQcm9jWFNlbmRFeHRlbnNpb25FdmVudCBhbnl3YXkuCi0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTcmIgPG1zcmJAc3VzZS5jb20+Ci1SZXZpZXdlZC1ieTogUGV0ZXIgSHV0dGVyZXIgPHBldGVyLmh1dHRlcmVyQHdoby10Lm5ldD4KLVNpZ25lZC1vZmYtYnk6IFBldGVyIEh1dHRlcmVyIDxwZXRlci5odXR0ZXJlckB3aG8tdC5uZXQ+Ci0KLUNWRTogQ1ZFLTIwMTctMTA5NzEKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy94b3JnL3hzZXJ2ZXIvY29tbWl0Lz9pZD1iYTMzNmIyNDA1MjEyMmIxMzY0ODY5NjFjODJkZWFjNzZiYmRlNDU1XQotCi1TaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gWGkvc2VuZGV4ZXYuYyB8ICAgMTAgKysrKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL1hpL3NlbmRleGV2LmMgYi9YaS9zZW5kZXhldi5jCi1pbmRleCA1ZTYzYmZjLi41YzJlMGZjIDEwMDY0NAotLS0tIGEvWGkvc2VuZGV4ZXYuYwotKysrIGIvWGkvc2VuZGV4ZXYuYwotQEAgLTk1LDkgKzk1LDE3IEBAIFNQcm9jWFNlbmRFeHRlbnNpb25FdmVudChDbGllbnRQdHIgY2xpZW50KQotIAotICAgICBldmVudFAgPSAoeEV2ZW50ICopICZzdHVmZlsxXTsKLSAgICAgZm9yIChpID0gMDsgaSA8IHN0dWZmLT5udW1fZXZlbnRzOyBpKyssIGV2ZW50UCsrKSB7Ci0rICAgICAgICBpZiAoZXZlbnRQLT51LnUudHlwZSA9PSBHZW5lcmljRXZlbnQpIHsKLSsgICAgICAgICAgICBjbGllbnQtPmVycm9yVmFsdWUgPSBldmVudFAtPnUudS50eXBlOwotKyAgICAgICAgICAgIHJldHVybiBCYWRWYWx1ZTsKLSsgICAgICAgIH0KLSsKLSAgICAgICAgIHByb2MgPSBFdmVudFN3YXBWZWN0b3JbZXZlbnRQLT51LnUudHlwZSAmIDAxNzddOwotLSAgICAgICAgaWYgKHByb2MgPT0gTm90SW1wbGVtZW50ZWQpICAgICAvKiBubyBzd2FwcGluZyBwcm9jOyBpbnZhbGlkIGV2ZW50IHR5cGU/ICovCi0rICAgICAgICAvKiBubyBzd2FwcGluZyBwcm9jOyBpbnZhbGlkIGV2ZW50IHR5cGU/ICovCi0rICAgICAgICBpZiAocHJvYyA9PSBOb3RJbXBsZW1lbnRlZCkgewotKyAgICAgICAgICAgIGNsaWVudC0+ZXJyb3JWYWx1ZSA9IGV2ZW50UC0+dS51LnR5cGU7Ci0gICAgICAgICAgICAgcmV0dXJuIEJhZFZhbHVlOwotKyAgICAgICAgfQotICAgICAgICAgKCpwcm9jKSAoZXZlbnRQLCAmZXZlbnRUKTsKLSAgICAgICAgICpldmVudFAgPSBldmVudFQ7Ci0gICAgIH0KLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvbWFjcm9fdHdlYWsucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvbWFjcm9fdHdlYWsucGF0Y2gKaW5kZXggZWMwZWVhNi4uYzM2ZTRlNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnL21hY3JvX3R3ZWFrLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9tYWNyb190d2Vhay5wYXRjaApAQCAtNSwxMyArNSwxMyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBZdSBLZSA8a2UueXVAaW50ZWwuY29tPgogCi1kaWZmIC0tZ2l0IGEveG9yZy1zZXJ2ZXIubTQgYi94b3JnLXNlcnZlci5tNAotaW5kZXggYmRlY2Y2Mi4uMDQwZmRiOCAxMDA2NDQKLS0tLSBhL3hvcmctc2VydmVyLm00Ci0rKysgYi94b3JnLXNlcnZlci5tNAorSW5kZXg6IHhvcmctc2VydmVyLTEuMTkuNi94b3JnLXNlcnZlci5tNAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHhvcmctc2VydmVyLTEuMTkuNi5vcmlnL3hvcmctc2VydmVyLm00CisrKysgeG9yZy1zZXJ2ZXItMS4xOS42L3hvcmctc2VydmVyLm00CiBAQCAtMjgsMTAgKzI4LDEyIEBAIGRubAotICMgQ2hlY2tzIGZvciB0aGUgJDEgZGVmaW5lIGluIHhvcmctc2VydmVyLmggKGZyb20gdGhlIHNkaykuICBJZiBpdAotICMgaXMgZGVmaW5lZCwgdGhlbiBhZGQgJDEgdG8gJFJFUVVJUkVEX01PRFVMRVMuCisgIyBDaGVja3MgZm9yIHRoZSBNQUNSTyBkZWZpbmUgaW4geG9yZy1zZXJ2ZXIuaCAoZnJvbSB0aGUgc2RrKS4gIElmIGl0CisgIyBpcyBkZWZpbmVkLCB0aGVuIGFkZCB0aGUgZ2l2ZW4gUFJPVE8gdG8gJFJFUVVJUkVEX01PRFVMRVMuCiAgCiArbTRfcGF0dGVybl9hbGxvdyhQS0dfQ09ORklHX1NZU1JPT1RfRElSKQogKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMTkuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjE5LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ZWY2YzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMTkuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLXJlcXVpcmUgeHNlcnZlci14b3JnLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vbXVzbC1hcm0taW5iLW91dGIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLUZpeC1jaGVjay1mb3ItQ0xPQ0tfTU9OT1RPTklDLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbmZpZ3VyZS5hYy1GaXgtd2F5bGFuZC1zY2FubmVyLWFuZC1wcm90b2NvbHMtbG9jYXQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDMtbW9kZXNldHRpbmctRml4LTE2LWJpdC1kZXB0aC1icHAtbW9kZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMy1SZW1vdmUtY2hlY2stZm9yLXVzZVNJR0lPLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTA5NzEtMS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTA5NzEtMi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTA5NzEtMy5wYXRjaCBcCi0gICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMDE1ZDJmYzRiOWYyYmZlN2E2MjZlZGI2M2E2MmM2NWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjc3YTgxNjZlMDM0NzQ3MTkyMzhkZmUzOTZjZTY3M2M0MjM0NzM1NDY0ZDZkYWRmMjk1OWI2MDBkMjBlNWE5OCIKLQotIyBUaGVzZSBleHRlbnNpb25zIGFyZSBub3cgaW50ZWdyYXRlZCBpbnRvIHRoZSBzZXJ2ZXIsIHNvIGRlY2xhcmUgdGhlIG1pZ3JhdGlvbgotIyBwYXRoIGZvciBpbi1wbGFjZSB1cGdyYWRlcy4KLQotUlJFUExBQ0VTXyR7UE59ID0gICIke1BOfS1leHRlbnNpb24tZHJpIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAotICAgICAgICAgICAgICAgICAgICIKLVJQUk9WSURFU18ke1BOfSA9ICAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKLSAgICAgICAgICAgICAgICAgICAiCi1SQ09ORkxJQ1RTXyR7UE59ID0gIiR7UE59LWV4dGVuc2lvbi1kcmkgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCi0gICAgICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMTkuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjE5LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4MGNmOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjE5LjYuYmIKQEAgLTAsMCArMSwzMiBAQAorcmVxdWlyZSB4c2VydmVyLXhvcmcuaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9tdXNsLWFybS1pbmItb3V0Yi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtRml4LWNoZWNrLWZvci1DTE9DS19NT05PVE9OSUMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDMtbW9kZXNldHRpbmctRml4LTE2LWJpdC1kZXB0aC1icHAtbW9kZS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMy1SZW1vdmUtY2hlY2stZm9yLXVzZVNJR0lPLW9wdGlvbi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS14Zjg2cGNpQnVzLmMtdXNlLUludGVsLWRkeC1vbmx5LWZvci1wcmUtZ2VuNC1oYXJkd2FyLnBhdGNoIFwKKyAgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzZTQ3Nzc3ZmYwMzRhMzMxYWVkMjMyMmIwNzg2OTRhOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhNzMyNTAyZjFkYjAwMGNmMzZhMzc2Y2QwYzAxMGZmZGJmMzJlY2RkN2YxZmEwOGJhN2Y1YmRmOTYwMWNjMTk3IgorCisjIFRoZXNlIGV4dGVuc2lvbnMgYXJlIG5vdyBpbnRlZ3JhdGVkIGludG8gdGhlIHNlcnZlciwgc28gZGVjbGFyZSB0aGUgbWlncmF0aW9uCisjIHBhdGggZm9yIGluLXBsYWNlIHVwZ3JhZGVzLgorCitSUkVQTEFDRVNfJHtQTn0gPSAgIiR7UE59LWV4dGVuc2lvbi1kcmkgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCisgICAgICAgICAgICAgICAgICAgIgorUlBST1ZJREVTXyR7UE59ID0gICIke1BOfS1leHRlbnNpb24tZHJpIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAorICAgICAgICAgICAgICAgICAgICIKK1JDT05GTElDVFNfJHtQTn0gPSAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKKyAgICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3h2aWRlby10ZXN0cy94dmlkZW8tdGVzdHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94dmlkZW8tdGVzdHMveHZpZGVvLXRlc3RzX2dpdC5iYgppbmRleCAyNjY3ZGQ4Li4xZDI3NWEwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3h2aWRlby10ZXN0cy94dmlkZW8tdGVzdHNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveHZpZGVvLXRlc3RzL3h2aWRlby10ZXN0c19naXQuYmIKQEAgLTgsNyArOCw3IEBACiBQViA9ICIwLjErZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvdGVzdC14dmlkZW8iCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2UvMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci1kZXZfdC1kZWZpbml0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2UvMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci1kZXZfdC1kZWZpbml0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGI3MTU3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlLzAwMDEtaW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItZGV2X3QtZGVmaW5pdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gNmI1YmJkZmFhYzdmMjE2ZmU4YTAyYzRjZjI5ZTVlYjJhZWU1YTQwOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDE1IFNlcCAyMDE1IDAwOjAxOjAwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgc3lzL3R5cGVzLmggZm9yIGRldl90IGRlZmluaXRpb24KLQotQXZvaWRzIHRoZSBidWlsZCBmYWlsdXJlcyB3aGVuIHN5cy90eXBlcy5oIGRvZXMgbm90IGdldCBpbmNsdWRlZAotaW5kaXJlY3RseSB0aHJvdWdoIG90aGVyIGhlYWRlcnMuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLSBibGt0cmFjZS5oIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9ibGt0cmFjZS5oIGIvYmxrdHJhY2UuaAotaW5kZXggMzgwYWVjNy4uOTQ0ZmMwOCAxMDA2NDQKLS0tLSBhL2Jsa3RyYWNlLmgKLSsrKyBiL2Jsa3RyYWNlLmgKLUBAIC01LDYgKzUsNyBAQAotICNpbmNsdWRlIDxsaW1pdHMuaD4KLSAjaW5jbHVkZSA8Ynl0ZXN3YXAuaD4KLSAjaW5jbHVkZSA8ZW5kaWFuLmg+Ci0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotIAotICNpbmNsdWRlICJibGt0cmFjZV9hcGkuaCIKLSAjaW5jbHVkZSAicmJ0cmVlLmgiCi0tLSAKLTIuNS4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlL2xkZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9ibGt0cmFjZS9ibGt0cmFjZS9sZGZsYWdzLnBhdGNoCmluZGV4IGRlYTFhYTIuLmFiOTA1Y2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlL2xkZmxhZ3MucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2UvbGRmbGFncy5wYXRjaApAQCAtMTAsNiArMTAsOCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBGYWhhZCBVc21hbiA8ZmFoYWRfdXNtYW5AbWVudG9yLmNvbT4KIAorSW5kZXg6IGdpdC9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGdpdC5vcmlnL01ha2VmaWxlCiArKysgZ2l0L01ha2VmaWxlCiBAQCAtMSw1ICsxLDYgQEAKQEAgLTE5LDcgKzIxLDcgQEAKICBBTExfQ0ZMQUdTID0gJChDRkxBR1MpIC1EX0dOVV9TT1VSQ0UgLURfTEFSR0VGSUxFX1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0CiAgUFJPR1MJPSBibGtwYXJzZSBibGt0cmFjZSB2ZXJpZnlfYmxrcGFyc2UgYmxrcmF3dmVyaWZ5IGJsa2lvbW9uCiAgTElCUwk9IC1scHRocmVhZAotQEAgLTIzLDE5ICsyNCwxOSBAQCBidHJlcGxheS9idHJlcGxheToKK0BAIC0yNiwxOSArMjcsMTkgQEAgYnRyZXBsYXkvYnRyZXBsYXk6CiAgCSQoQ0MpIC1vICQqLm8gLWMgJChBTExfQ0ZMQUdTKSAkPAogIAogIGJsa3BhcnNlOiBibGtwYXJzZS5vIGJsa3BhcnNlX2ZtdC5vIHJidHJlZS5vIGFjdF9tYXNrLm8KQEAgLTQ0LDYgKzQ2LDggQEAKICAKICAkKFBST0dTKTogfCBkZXBlbmQKICAKK0luZGV4OiBnaXQvYnRyZXBsYXkvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBnaXQub3JpZy9idHJlcGxheS9NYWtlZmlsZQogKysrIGdpdC9idHJlcGxheS9NYWtlZmlsZQogQEAgLTcsNiArNyw3IEBACkBAIC01NSw4ICs1OSw4IEBACiAgT0NGTEFHUwk9IC1VQ09VTlRfSU9TIC1VREVCVUcgLUROREVCVUcKICBYQ0ZMQUdTCT0gLURfR05VX1NPVVJDRSAtRF9MQVJHRUZJTEVfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQKIEBAIC0zMiwxMCArMzMsMTAgQEAgY2xlYW46IGRvY3NjbGVhbgotCSQoQ0MpICQoQ0ZMQUdTKSAtYyAtbyAkKi5vICQ8Ci0KKyAJJChDQykgJChDRkxBR1MpIC1jIC1vICQqLm8gJDwKKyAKICBidHJlY29yZDogYnRyZWNvcmQubwogLQkkKENDKSAkKENGTEFHUykgLW8gJEAgJChmaWx0ZXIgJS5vLCReKQogKwkkKENDKSAkKENGTEFHUykgLW8gJEAgJChmaWx0ZXIgJS5vLCReKSAkKExERkxBR1MpCkBAIC02Nyw2ICs3MSw4IEBACiAgCiAgZGVwZW5kOgogIAlAJChDQykgLU1NICQoQ0ZMQUdTKSAqLmMgMT4gLmRlcGVuZAorSW5kZXg6IGdpdC9idHQvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBnaXQub3JpZy9idHQvTWFrZWZpbGUKICsrKyBnaXQvYnR0L01ha2VmaWxlCiBAQCAtNyw2ICs3LDcgQEAKQEAgLTg2LDExICs5MiwxMyBAQAogIAogIGlmbmVxICgkKHdpbGRjYXJkIC5kZXBlbmQpLCkKICBpbmNsdWRlIC5kZXBlbmQKK0luZGV4OiBnaXQvaW93YXRjaGVyL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gZ2l0Lm9yaWcvaW93YXRjaGVyL01ha2VmaWxlCiArKysgZ2l0L2lvd2F0Y2hlci9NYWtlZmlsZQogQEAgLTEsNSArMSw2IEBACi0gQyAgICAgID0gZ2NjCi0gQ0ZMQUdTICA9IC1XYWxsIC1PMCAtZyAtVworIENDICAgICAgPSBnY2MKKyBDRkxBR1MgID0gLVdhbGwgLU8yIC1nIC1XIC1XdW51c2VkLXJlc3VsdAogK0xERkxBR1MgPQogIEFMTF9DRkxBR1MgPSAkKENGTEFHUykgLURfR05VX1NPVVJDRSAtRF9MQVJHRUZJTEVfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQKICAKQEAgLTk5LDggKzEwNyw4IEBACiAgCSQoQ0MpIC1vICQqLm8gLWMgJChBTExfQ0ZMQUdTKSAkPAogIAogIGlvd2F0Y2hlcjogYmxrcGFyc2UubyBwbG90Lm8gbWFpbi5vIHRyYWNlcnMubyBtcHN0YXQubyBmaW8ubwotLQkkKENDKSAkKEFMTF9DRkxBR1MpIC1vICRAICQoZmlsdGVyICUubywkXikgLWxtCi0rCSQoQ0MpICQoQUxMX0NGTEFHUykgLW8gJEAgJChmaWx0ZXIgJS5vLCReKSAtbG0gJChMREZMQUdTKQorLQkkKENDKSAkKEFMTF9DRkxBR1MpIC1vICRAICQoZmlsdGVyICUubywkXikgLWxtIC1scnQKKysJJChDQykgJChBTExfQ0ZMQUdTKSAtbyAkQCAkKGZpbHRlciAlLm8sJF4pIC1sbSAkKExERkxBR1MpIC1scnQKICAKICBkZXBlbmQ6CiAgCUAkKENDKSAtTU0gJChBTExfQ0ZMQUdTKSAqLmMgMT4gLmRlcGVuZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2VfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2VfZ2l0LmJiCmluZGV4IDc3MDU3NWYuLjY2M2RlMmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9ibGt0cmFjZS9ibGt0cmFjZV9naXQuYmIKQEAgLTUsMTMgKzUsMTIgQEAKIAogREVQRU5EUyA9ICJsaWJhaW8iCiAKLVNSQ1JFViA9ICI0M2ZjODcwY2UwNGU5NjNkZWY0NWRmYzBkMWVkNGVhMjFlZjEwZDRiIgorU1JDUkVWID0gImNjYTExM2YyZmUwNzU5YjkxZmQ2YTBlMTBmZGNkYTJjMjhmMThhN2UiCiAKLVBWID0gIjEuMS4wK2dpdCR7U1JDUFZ9IgorUFYgPSAiMS4yLjArZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5kay9ibGt0cmFjZS5naXQgXAogICAgICAgICAgICBmaWxlOi8vbGRmbGFncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLWRldl90LWRlZmluaXRpb24ucGF0Y2ggXAogIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi1tb2R1bGVfMS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi1tb2R1bGVfMS45LmJiCmluZGV4IDU1MmViNmEuLmVkNmQwZWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtbW9kdWxlXzEuOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LW1vZHVsZV8xLjkuYmIKQEAgLTksNiArOSw3IEBACiAKIFNSQ19VUkkgKz0gIiBcCiBmaWxlOi8vMDAwMS1EaXNhYmxlLWluc3RhbGxpbmctaGVhZGVyLWZpbGUtcHJvdmlkZWQtYnktYW5vdGhlci1wLnBhdGNoIFwKK2ZpbGU6Ly8wMDAxLWlvY3RsLmMtRml4LWJ1aWxkLXdpdGgtbGludXgtNC4xMy5wYXRjaCBcCiAiCiAKIEVYVFJBX09FTUFLRT0nS0VSTkVMX0RJUj0iJHtTVEFHSU5HX0tFUk5FTF9ESVJ9IiBQUkVGSVg9IiR7RH0iJwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LmluYwppbmRleCA1MDM2NmU3Li5hYjE1YmMxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LmluYwpAQCAtMywxMSArMyw5IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCiAKLVNSQ19VUkkgPSAiaHR0cDovL253bC5jYy9wdWIvY3J5cHRvZGV2LWxpbnV4L2NyeXB0b2Rldi1saW51eC0ke1BWfS50YXIuZ3oiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vY3J5cHRvZGV2LWxpbnV4L2NyeXB0b2Rldi1saW51eCIKK1NSQ1JFViA9ICI4N2Q5NTlkOWEyNzljMDU1YjM2MWRlOGU3MzBmYWI2YTcxNDRlZGQ3IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiY2I0ZTBlZDllNTkzNzcxNmM3YzhhN2JlODQ4OTViNmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWY0YzBiNDliMzBlMjY3ZDc3NmY3OTQ1NWQwOWM3MGNjOWMxMmM4NmVlZTQwMGEwZDBhMGNkMWQ4ZTQ2Nzk1MCIKLQotUyA9ICIke1dPUktESVJ9L2NyeXB0b2Rldi1saW51eC0ke1BWfSIKK1MgPSAiJHtXT1JLRElSfS9naXQiCiAKIENMRUFOQlJPS0VOID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMS1BZGQtdGhlLWNvbXBpbGUtYW5kLWluc3RhbGwtcnVsZXMtZm9yLWNyeXB0b2Rldi10ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtQWRkLXRoZS1jb21waWxlLWFuZC1pbnN0YWxsLXJ1bGVzLWZvci1jcnlwdG9kZXYtdGVzdC5wYXRjaAppbmRleCAzZjAyOThiLi44NGZkMjdlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMS1BZGQtdGhlLWNvbXBpbGUtYW5kLWluc3RhbGwtcnVsZXMtZm9yLWNyeXB0b2Rldi10ZXN0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAxLUFkZC10aGUtY29tcGlsZS1hbmQtaW5zdGFsbC1ydWxlcy1mb3ItY3J5cHRvZGV2LXRlc3QucGF0Y2gKQEAgLTE0LDM3ICsxNCwzNyBAQAogIHRlc3RzL01ha2VmaWxlIHwgICAgOCArKysrKysrKwogIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDMxYzRiM2YuLjJlY2YyYTkgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZQotKysrIGIvTWFrZWZpbGUKLUBAIC0zNCw2ICszNCw5IEBAIG1vZHVsZXNfaW5zdGFsbDoKLSAJQGVjaG8gIkluc3RhbGxpbmcgY3J5cHRvZGV2LmggaW4gJChQUkVGSVgpL3Vzci9pbmNsdWRlL2NyeXB0byAuLi4iCi0gCUBpbnN0YWxsIC1EIGNyeXB0by9jcnlwdG9kZXYuaCAkKFBSRUZJWCkvdXNyL2luY2x1ZGUvY3J5cHRvL2NyeXB0b2Rldi5oCitJbmRleDogZ2l0L01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvTWFrZWZpbGUKKysrKyBnaXQvTWFrZWZpbGUKK0BAIC0zNSw2ICszNSw5IEBAIG1vZHVsZXNfaW5zdGFsbDoKKyAJJChNQUtFKSAkKEtFUk5FTF9NQUtFX09QVFMpIG1vZHVsZXNfaW5zdGFsbAorIAlpbnN0YWxsIC1tIDY0NCAtRCBjcnlwdG8vY3J5cHRvZGV2LmggJChERVNURElSKS8kKGluY2x1ZGVkaXIpL2NyeXB0by9jcnlwdG9kZXYuaAogIAogK2luc3RhbGxfdGVzdHM6CiArCW1ha2UgLUMgdGVzdHMgaW5zdGFsbCBERVNURElSPSQoUFJFRklYKQogKwogIGNsZWFuOgotIAltYWtlIC1DICQoS0VSTkVMX0RJUikgU1VCRElSUz1gcHdkYCBjbGVhbgorIAkkKE1BS0UpICQoS0VSTkVMX01BS0VfT1BUUykgY2xlYW4KICAJcm0gLWYgJChob3N0cHJvZ3MpICp+Ci1AQCAtNDIsNiArNDUsOSBAQCBjbGVhbjoKK0BAIC00Myw2ICs0Niw5IEBAIGNsZWFuOgogIGNoZWNrOgotIAlDRkxBR1M9JChDUllQVE9ERVZfQ0ZMQUdTKSBLRVJORUxfRElSPSQoS0VSTkVMX0RJUikgbWFrZSAtQyB0ZXN0cyBjaGVjaworIAlDRkxBR1M9JChDUllQVE9ERVZfQ0ZMQUdTKSBLRVJORUxfRElSPSQoS0VSTkVMX0RJUikgJChNQUtFKSAtQyB0ZXN0cyBjaGVjawogIAogK3Rlc3Rwcm9nczoKICsJS0VSTkVMX0RJUj0kKEtFUk5FTF9ESVIpIG1ha2UgLUMgdGVzdHMgdGVzdHByb2dzCiArCiAgQ1BPUFRTID0KLSBpZm5lcSAoJHtTSE9XX1RZUEVTfSwpCisgaWZuZXEgKCQoU0hPV19UWVBFUyksKQogIENQT1BUUyArPSAtLXNob3ctdHlwZXMKLWRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZSBiL3Rlc3RzL01ha2VmaWxlCi1pbmRleCBjOWYwNGU4Li5jZDIwMmFmIDEwMDY0NAotLS0tIGEvdGVzdHMvTWFrZWZpbGUKLSsrKyBiL3Rlc3RzL01ha2VmaWxlCi1AQCAtMTksNiArMTksMTIgQEAgZXhhbXBsZS1hc3luYy1obWFjLW9ianMgOj0gYXN5bmNfaG1hYy5vCi0gZXhhbXBsZS1hc3luYy1zcGVlZC1vYmpzIDo9IGFzeW5jX3NwZWVkLm8KLSBleGFtcGxlLWhhc2hjcnlwdC1zcGVlZC1vYmpzIDo9IGhhc2hjcnlwdF9zcGVlZC5jCitJbmRleDogZ2l0L3Rlc3RzL01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvdGVzdHMvTWFrZWZpbGUKKysrKyBnaXQvdGVzdHMvTWFrZWZpbGUKK0BAIC0yMyw2ICsyMywxMiBAQCBiaW5kaXIgPSAkKGV4ZWNwcmVmaXgpL2JpbgorIAorIGFsbDogJChob3N0cHJvZ3MpCiAgCiAraW5zdGFsbDoKICsJaW5zdGFsbCAtZCAgJChERVNURElSKS91c3IvYmluL3Rlc3RzX2NyeXB0b2RldgpAQCAtNTUsOSArNTUsOSBAQAogIGNoZWNrOiAkKGhvc3Rwcm9ncykKICAJLi9jaXBoZXIKICAJLi9obWFjCi1AQCAtMjgsNiArMzQsOCBAQCBjaGVjazogJChob3N0cHJvZ3MpCi0gCS4vY2lwaGVyLWdjbQotIAkuL2NpcGhlci1hZWFkCitAQCAtMzgsNiArNDQsOCBAQCBpbnN0YWxsOgorIAkJaW5zdGFsbCAtbSA3NTUgJCRwcm9nICQoREVTVERJUikvJChiaW5kaXIpOyBcCisgCWRvbmUKICAKICt0ZXN0cHJvZ3M6ICQoaG9zdHByb2dzKQogKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtaW9jdGwuYy1GaXgtYnVpbGQtd2l0aC1saW51eC00LjEzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtaW9jdGwuYy1GaXgtYnVpbGQtd2l0aC1saW51eC00LjEzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0MWVmYWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMS1pb2N0bC5jLUZpeC1idWlsZC13aXRoLWxpbnV4LTQuMTMucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorRnJvbSBmMGQ2OTc3NGFmYjI3ZmZjNjJiZjM1MzQ2NWZiYTE0NWU3MGNiODVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDQgU2VwIDIwMTcgMTE6MDU6MDggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gaW9jdGwuYzogRml4IGJ1aWxkIHdpdGggbGludXggNC4xMworCitnaXQvaW9jdGwuYzoxMTI3OjM6IGVycm9yOiBwb3NpdGlvbmFsIGluaXRpYWxpemF0aW9uIG9mIGZpZWxkIGluICdzdHJ1Y3QnIGRlY2xhcmVkIHdpdGggJ2Rlc2lnbmF0ZWRfaW5pdCcgYXR0cmlidXRlIFstV2Vycm9yPWRlc2lnbmF0ZWQtaW5pdF0KKyAgIHswLCB9LAorICAgIF4KK25vdGU6IChuZWFyIGluaXRpYWxpemF0aW9uIGZvciAndmVyYm9zaXR5X2N0bF9kaXJbMV0nKQorZ2l0L2lvY3RsLmM6MTEzNjozOiBlcnJvcjogcG9zaXRpb25hbCBpbml0aWFsaXphdGlvbiBvZiBmaWVsZCBpbiAnc3RydWN0JyBkZWNsYXJlZCB3aXRoICdkZXNpZ25hdGVkX2luaXQnIGF0dHJpYnV0ZSBbLVdlcnJvcj1kZXNpZ25hdGVkLWluaXRdCisgICB7MCwgfSwKKyAgICBeCisKK0xpbnV4IGtlcm5lbCBoYXMgYWRkZWQgLVdlcnJvcj1kZXNpZ25hdGVkLWluaXQgYXJvdW5kIDQuMTEgKGM4MzRmMGU4YThiKQordHJpZ2dlcmluZyBidWlsZCBlcnJvcnMgd2l0aCBnY2MgNSBhbmQgNiAoYnV0IG5vdCB3aXRoIGdjYyA0KQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ3Jpc3RpYW4gU3RvaWNhIDxjcmlzdGlhbi5zdG9pY2FAbnhwLmNvbT4KKy0tLQorIGlvY3RsLmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaW9jdGwuYyBiL2lvY3RsLmMKK2luZGV4IDAzODUyMDMuLjhkNGExNjIgMTAwNjQ0CistLS0gYS9pb2N0bC5jCisrKysgYi9pb2N0bC5jCitAQCAtMTEyNCw3ICsxMTI0LDcgQEAgc3RhdGljIHN0cnVjdCBjdGxfdGFibGUgdmVyYm9zaXR5X2N0bF9kaXJbXSA9IHsKKyAJCS5tb2RlICAgICAgICAgICA9IDA2NDQsCisgCQkucHJvY19oYW5kbGVyICAgPSBwcm9jX2RvaW50dmVjLAorIAl9LAorLQl7MCwgfSwKKysJe30sCisgfTsKKyAKKyBzdGF0aWMgc3RydWN0IGN0bF90YWJsZSB2ZXJib3NpdHlfY3RsX3Jvb3RbXSA9IHsKK0BAIC0xMTMzLDcgKzExMzMsNyBAQCBzdGF0aWMgc3RydWN0IGN0bF90YWJsZSB2ZXJib3NpdHlfY3RsX3Jvb3RbXSA9IHsKKyAJCS5tb2RlICAgICAgICAgICA9IDA1NTUsCisgCQkuY2hpbGQgICAgICAgICAgPSB2ZXJib3NpdHlfY3RsX2RpciwKKyAJfSwKKy0JezAsIH0sCisrCXt9LAorIH07Cisgc3RhdGljIHN0cnVjdCBjdGxfdGFibGVfaGVhZGVyICp2ZXJib3NpdHlfc3lzY3RsX2hlYWRlcjsKKyBzdGF0aWMgaW50IF9faW5pdCBpbml0X2NyeXB0b2Rldih2b2lkKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMuaW5jCmluZGV4IGQ3NTk5NDYuLjlhOTBkNDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMuaW5jCkBAIC03LDkgKzcsMTEgQEAKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL3V0aWxzL2R0Yy9kdGMuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL21ha2VfaW5zdGFsbC5wYXRjaCBcCi0JICAiCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNoZWNrcy1Vc2UtcHJvcGVyLWZvcm1hdC1tb2RpZmllci1mb3Itc2l6ZV90LnBhdGNoIFwKKyAgICAgICAgICAgIgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPlxkKyhcLlxkKykrKSIKIAotRVhUUkFfT0VNQUtFPSdQUkVGSVg9IiR7cHJlZml4fSIgTElCRElSPSIke2xpYmRpcn0iIERFU1RESVI9IiR7RH0iJworRVhUUkFfT0VNQUtFPSdOT19QWVRIT049MSBQUkVGSVg9IiR7cHJlZml4fSIgTElCRElSPSIke2xpYmRpcn0iIERFU1RESVI9IiR7RH0iJwogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCkBAIC0yMCw0ICsyMiw0IEBACiBQQUNLQUdFUyA9KyAiJHtQTn0tbWlzYyIKIEZJTEVTXyR7UE59LW1pc2MgPSAiJHtiaW5kaXJ9L2NvbnZlcnQtZHRzdjAgJHtiaW5kaXJ9L2Z0ZHVtcCAke2JpbmRpcn0vZHRkaWZmIgogCi1SREVQRU5EU18ke1BOfS1taXNjICs9ICJiYXNoIgorUkRFUEVORFNfJHtQTn0tbWlzYyArPSAiYmFzaCBkaWZmdXRpbHMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjLzAwMDEtY2hlY2tzLVVzZS1wcm9wZXItZm9ybWF0LW1vZGlmaWVyLWZvci1zaXplX3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjLzAwMDEtY2hlY2tzLVVzZS1wcm9wZXItZm9ybWF0LW1vZGlmaWVyLWZvci1zaXplX3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FiMzg0ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMvMDAwMS1jaGVja3MtVXNlLXByb3Blci1mb3JtYXQtbW9kaWZpZXItZm9yLXNpemVfdC5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIGM3YTRjMzgxNzc5NjEwN2JiODI0YTFmMTczZmFmOTBmYWU0NTM5NmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUaGllcnJ5IFJlZGluZyA8dHJlZGluZ0BudmlkaWEuY29tPgorRGF0ZTogV2VkLCAyNyBTZXAgMjAxNyAxNTowNDowOSArMDIwMAorU3ViamVjdDogW1BBVENIXSBjaGVja3M6IFVzZSBwcm9wZXIgZm9ybWF0IG1vZGlmaWVyIGZvciBzaXplX3QKKworVGhlIHNpemUgb2Ygc2l6ZV90IGNhbiB2YXJ5IGJldHdlZW4gYXJjaGl0ZWN0dXJlcywgc28gdXNpbmcgJWxkIGlzbid0Citnb2luZyB0byB3b3JrIG9uIDMyLWJpdCBidWlsZHMuIFVzZSB0aGUgJXp1IG1vZGlmaWVyIHRvIG1ha2Ugc3VyZSBpdCBpcworYWx3YXlzIGNvcnJlY3QuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFRoaWVycnkgUmVkaW5nIDx0cmVkaW5nQG52aWRpYS5jb20+CitBY2tlZC1ieTogUm9iIEhlcnJpbmcgPHJvYmhAa2VybmVsLm9yZz4KK1NpZ25lZC1vZmYtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBjaGVja3MuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jaGVja3MuYyBiL2NoZWNrcy5jCitpbmRleCA5MDJmMmUzLi4wOGEzYTI5IDEwMDY0NAorLS0tIGEvY2hlY2tzLmMKKysrKyBiL2NoZWNrcy5jCitAQCAtOTcyLDcgKzk3Miw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrX3Byb3BlcnR5X3BoYW5kbGVfYXJncyhzdHJ1Y3QgY2hlY2sgKmMsCisgCWludCBjZWxsLCBjZWxsc2l6ZSA9IDA7CisgCisgCWlmIChwcm9wLT52YWwubGVuICUgc2l6ZW9mKGNlbGxfdCkpIHsKKy0JCUZBSUwoYywgZHRpLCAicHJvcGVydHkgJyVzJyBzaXplICglZCkgaXMgaW52YWxpZCwgZXhwZWN0ZWQgbXVsdGlwbGUgb2YgJWxkIGluIG5vZGUgJXMiLAorKwkJRkFJTChjLCBkdGksICJwcm9wZXJ0eSAnJXMnIHNpemUgKCVkKSBpcyBpbnZhbGlkLCBleHBlY3RlZCBtdWx0aXBsZSBvZiAlenUgaW4gbm9kZSAlcyIsCisgCQkgICAgIHByb3AtPm5hbWUsIHByb3AtPnZhbC5sZW4sIHNpemVvZihjZWxsX3QpLCBub2RlLT5mdWxscGF0aCk7CisgCQlyZXR1cm47CisgCX0KK0BAIC0xMTYzLDcgKzExNjMsNyBAQCBzdGF0aWMgdm9pZCBjaGVja19pbnRlcnJ1cHRzX3Byb3BlcnR5KHN0cnVjdCBjaGVjayAqYywKKyAJCXJldHVybjsKKyAKKyAJaWYgKGlycV9wcm9wLT52YWwubGVuICUgc2l6ZW9mKGNlbGxfdCkpCistCQlGQUlMKGMsIGR0aSwgInByb3BlcnR5ICclcycgc2l6ZSAoJWQpIGlzIGludmFsaWQsIGV4cGVjdGVkIG11bHRpcGxlIG9mICVsZCBpbiBub2RlICVzIiwKKysJCUZBSUwoYywgZHRpLCAicHJvcGVydHkgJyVzJyBzaXplICglZCkgaXMgaW52YWxpZCwgZXhwZWN0ZWQgbXVsdGlwbGUgb2YgJXp1IGluIG5vZGUgJXMiLAorIAkJICAgICBpcnFfcHJvcC0+bmFtZSwgaXJxX3Byb3AtPnZhbC5sZW4sIHNpemVvZihjZWxsX3QpLAorIAkJICAgICBub2RlLT5mdWxscGF0aCk7CisgCistLSAKKzIuMTUuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjL21ha2VfaW5zdGFsbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMvbWFrZV9pbnN0YWxsLnBhdGNoCmluZGV4IDExMjA2MTcuLmNjZjE3YjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMvbWFrZV9pbnN0YWxsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMvbWFrZV9pbnN0YWxsLnBhdGNoCkBAIC0yLDExICsyLDExIEBACiAKIEluZGV4OiBnaXQvTWFrZWZpbGUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9NYWtlZmlsZQkyMDExLTExLTAyIDE0OjUyOjE3LjI0MzEwNDc3OSAtMDcwMAotKysrIGdpdC9NYWtlZmlsZQkyMDExLTExLTAyIDE1OjA2OjAxLjU1NTEwNDk4MiAtMDcwMAotQEAgLTE2MSw4ICsxNjEsOCBAQAotIAkkKElOU1RBTEwpIC1kICQoREVTVERJUikkKEJJTkRJUikKLSAJJChJTlNUQUxMKSAkKEJJTikgJChTQ1JJUFRTKSAkKERFU1RESVIpJChCSU5ESVIpCistLS0gZ2l0Lm9yaWcvTWFrZWZpbGUKKysrKyBnaXQvTWFrZWZpbGUKK0BAIC0xNjgsOCArMTY4LDggQEAgaW5zdGFsbC1iaW46IGFsbCAkKFNDUklQVFMpCisgaW5zdGFsbC1saWI6IGFsbAorIAlAJChWRUNITykgSU5TVEFMTC1MSUIKICAJJChJTlNUQUxMKSAtZCAkKERFU1RESVIpJChMSUJESVIpCiAtCSQoSU5TVEFMTCkgJChMSUJGRFRfbGliKSAkKERFU1RESVIpJChMSUJESVIpCiAtCWxuIC1zZiAkKG5vdGRpciAkKExJQkZEVF9saWIpKSAkKERFU1RESVIpJChMSUJESVIpLyQoTElCRkRUX3NvbmFtZSkKQEAgLTE0LDQgKzE0LDQgQEAKICsJbG4gLXNmICQoTElCRkRUX3NvbmFtZSkgJChERVNURElSKSQoTElCRElSKS8kKG5vdGRpciAkKExJQkZEVF9saWIpKQogIAlsbiAtc2YgJChMSUJGRFRfc29uYW1lKSAkKERFU1RESVIpJChMSUJESVIpL2xpYmZkdC4kKFNIQVJFRExJQl9FWFQpCiAgCSQoSU5TVEFMTCkgLW0gNjQ0ICQoTElCRkRUX2FyY2hpdmUpICQoREVTVERJUikkKExJQkRJUikKLSAJJChJTlNUQUxMKSAtZCAkKERFU1RESVIpJChJTkNMVURFRElSKQorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjQuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGNfMS40LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhZGI3YmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjQuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLXJlcXVpcmUgZHRjLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9HUEw7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLQkJICAgIGZpbGU6Ly9saWJmZHQvbGliZmR0Lmg7YmVnaW5saW5lPTM7ZW5kbGluZT01MjttZDU9ZmIzNjA5NjMxNTFmOGVjMmQ2YzA2YjA1NWJjYmI2OGMiCi0KLVNSQ1JFViA9ICI1NThjZDgxYmRkNDMyNzY5YjU5YmZmMDEyNDBjNDRmODJjZmIxYTlkIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjXzEuNC41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjQuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTQ2Y2ZiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjQuNS5iYgpAQCAtMCwwICsxLDEwIEBACityZXF1aXJlIGR0Yy5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vR1BMO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisJCSAgICBmaWxlOi8vbGliZmR0L2xpYmZkdC5oO2JlZ2lubGluZT0zO2VuZGxpbmU9NTI7bWQ1PWZiMzYwOTYzMTUxZjhlYzJkNmMwNmIwNTViY2JiNjhjIgorCitTUkNSRVYgPSAiMjJhNjVjNTMzMWMyMjk3OWQ0MTY3MzhlYjc1NmI5NTQxNjcyZTAwZCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2Vybi10b29scy9rZXJuLXRvb2xzLW5hdGl2ZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYgppbmRleCAzYTM5OTJhLi44Y2NkOGNlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYgpAQCAtMTIsNiArMTIsNyBAQAogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC10b29scy5naXQiCiBTID0gIiR7V09SS0RJUn0iCitVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCiAKIGRvX2NvbXBpbGUoKSB7IAogCToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY4OWJlYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1TVU1NQVJZID0gIktleGVjIGZhc3QgcmVib290IHRvb2xzIgotREVTQ1JJUFRJT04gPSAiS2V4ZWMgaXMgYSBmYXN0IHJlYm9vdCBmZWF0dXJlIHRoYXQgbGV0cyB5b3UgcmVib290IHRvIGEgbmV3IExpbnV4IGtlcm5lbCIKLUFVVEhPUiA9ICJFcmljIEJpZWRlcm1hbiIKLUhPTUVQQUdFID0gImh0dHA6Ly9rZXJuZWwub3JnL3B1Yi9saW51eC91dGlscy9rZXJuZWwva2V4ZWMvIgotU0VDVElPTiA9ICJrZXJuZWwvdXNlcmxhbmQiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWE1YmVkMmY2MGQzNTc2MThjYTE2MWFkNTM5ZjdjMGEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8va2V4ZWMva2V4ZWMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1hZjEwZjZhZTRhODcxNTk2NWU2NDhhYTY4N2FkM2UwOSIKLURFUEVORFMgPSAiemxpYiB4eiIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL2tlcm5lbC9rZXhlYy9rZXhlYy10b29scy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8va2R1bXAgXAotICAgICAgICAgICBmaWxlOi8va2R1bXAuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9rZHVtcC5zZXJ2aWNlIFwKLSIKLQotUFIgPSAicjEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUNPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0Lip8aS44Ni4qfGFybS4qfGFhcmNoNjQuKnxwb3dlcnBjLip8bWlwcy4qKS0obGludXh8ZnJlZWJzZC4qKScKLQotSU5TQU5FX1NLSVBfJHtQTn0gPSAiYXJjaCIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICMgUmVtb3ZlIHRoZSBwcmVwYWNrYWdlZCBjb25maWcuaCBmcm9tIHRoZSBzb3VyY2UgdHJlZSBhcyBpdCBvdmVycmlkZXMKLSAgICAjIHRoZSBzYW1lIGZpbGUgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZSBhbmQgcGxhY2VkIGluIHRoZSBidWlsZCB0cmVlCi0gICAgcm0gLWYgJHtTfS9pbmNsdWRlL2NvbmZpZy5oCi0KLSAgICAjIFJlbW92ZSB0aGUgJyouZCcgZmlsZSB0byBtYWtlIHN1cmUgdGhlIHJlY29tcGlsZSBpcyBPSwotICAgIGZvciBkZXAgaW4gYGZpbmQgJHtCfSAtdHlwZSBmIC1uYW1lICcqLmQnYDsgZG8KLSAgICAgICAgZGVwX25vX2Q9ImBlY2hvICRkZXAgfCBzZWQgJ3MjLmQkIyMnYCIKLSAgICAgICAgIyBSZW1vdmUgZmlsZS5kIHdoZW4gdGhlcmUgaXMgYSBmaWxlLm8KLSAgICAgICAgaWYgWyAtZiAiJGRlcF9ub19kLm8iIF07IHRoZW4KLSAgICAgICAgICAgIHJtIC1mICRkZXAKLSAgICAgICAgZmkKLSAgICBkb25lCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLWFybTY0LURpc2FibGUtUElDLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMS1hcm02NC1EaXNhYmxlLVBJQy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODRlOTRkNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLWFybTY0LURpc2FibGUtUElDLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSAzYmI3M2U1ZTU2NDliNDU1ZTE1ZDVjYTNhN2FkMWE5MGM0OTYwOTcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMTAgSnVuIDIwMTcgMTE6NTQ6MzYgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gYXJtNjQ6IERpc2FibGUgUElDCi0KLUZpeAotfCBjYzE6IHNvcnJ5LCB1bmltcGxlbWVudGVkOiBjb2RlIG1vZGVsICdsYXJnZScgd2l0aCAtZlBJQwotfCBtYWtlOiAqKiogW01ha2VmaWxlOjExODogcHVyZ2F0b3J5L2FyY2gvYXJtNjQvZW50cnkub10gRXJyb3IgMQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHB1cmdhdG9yeS9hcmNoL2FybTY0L01ha2VmaWxlIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9wdXJnYXRvcnkvYXJjaC9hcm02NC9NYWtlZmlsZSBiL3B1cmdhdG9yeS9hcmNoL2FybTY0L01ha2VmaWxlCi1pbmRleCA2MzZhYmVhLi44MDA2OGNhIDEwMDY0NAotLS0tIGEvcHVyZ2F0b3J5L2FyY2gvYXJtNjQvTWFrZWZpbGUKLSsrKyBiL3B1cmdhdG9yeS9hcmNoL2FybTY0L01ha2VmaWxlCi1AQCAtMSw2ICsxLDcgQEAKLSAKLSBhcm02NF9QVVJHQVRPUllfRVhUUkFfQ0ZMQUdTID0gXAotIAktbWNtb2RlbD1sYXJnZSBcCi0rCS1mbm8tUElDIFwKLSAJLWZuby1zdGFjay1wcm90ZWN0b3IgXAotIAktZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIFwKLSAJLVd1bmRlZiBcCi0tLSAKLTIuMTMuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLWtleGVjLWV4bnRlbmQtdGhlLXNlbWFudGljcy1vZi1rZXhlY19pb21lbV9mb3JfZWFjaF8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLWtleGVjLWV4bnRlbmQtdGhlLXNlbWFudGljcy1vZi1rZXhlY19pb21lbV9mb3JfZWFjaF8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMmYyOGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMS1rZXhlYy1leG50ZW5kLXRoZS1zZW1hbnRpY3Mtb2Yta2V4ZWNfaW9tZW1fZm9yX2VhY2hfLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotRnJvbSAwMmVlZDBmOGYyNzQ4ZmQ3NTc5ZjY5ZTUzNzM0NDViNTJiMmI4NzU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQUtBU0hJIFRha2FoaXJvIDx0YWthaGlyby5ha2FzaGlAbGluYXJvLm9yZz4KLURhdGU6IE1vbiwgMTcgT2N0IDIwMTYgMTM6NTY6NTggKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzldIGtleGVjOiBleG50ZW5kIHRoZSBzZW1hbnRpY3Mgb2Yga2V4ZWNfaW9tZW1fZm9yX2VhY2hfbGluZQotCi1UaGUgY3VycmVudCBrZXhlY19pb21lbV9mb3JfZWFjaF9saW5lKCkgY291bnRzIHVwIGFsbCB0aGUgbGluZXMgZm9yIHdoaWNoCi1hIGNhbGxiYWNrIGZ1bmN0aW9uIHJldHVybnMgemVybygwKSBvciBwb3NpdGl2ZSwgYW5kIG90aGVyd2lzZSBpdCBzdG9wcwotZnVydGhlciBzY2FubmluZy4KLVRoaXMgYmVoYXZpb3IgaXMgaW5jb3ZlbmllbnQgaW4gc29tZSBjYXNlcy4gRm9yIGluc3RhbmNlLCBvbiBhcm02NCwgd2Ugd2FudAotdG8gY291bnQgdXAgIlN5c3RlbSBSQU0iIGVudHJpZXMsIGJ1dCBuZWVkIHRvIHNraXAgInJlc2VydmVkIiBlbnRyaWVzLgotCi1TbyB0aGlzIHBhdGNoIGV4dGVuZHMgdGhlIHNlbWFudGljcyBzbyB0aGF0IHdlIHdpbGwgY29udGludWUgdG8gc2Nhbgotc3VjY2VlZGluZyBlbnRyaWVzIGJ1dCBub3QgY291bnQgbGluZXMgZm9yIHdoaWNoIGEgY2FsbGJhY2sgZnVuY3Rpb24KLXJldHVybnMgcG9zaXRpdmUuCi0KLVRoZSBjdXJyZW50IHVzZXJzIG9mIGtleGVjX2lvbWVtX2Zvcl9lYWNoX2xpbmUoKSwgYXJtLCBzaCBhbmQgeDg2LCB3aWxsIG5vdAotYmUgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UgYmVjYXVzZQotKiBhcm0KLSAgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIG9ubHkgcmV0dXJucyAtMSBvciAwLCBhbmQgdGhlIHJldHVybiB2YWx1ZSBvZgotICBrZXhlY19pb21lbV9mb3JfZWFjaF9saW5lKCkgd2lsbCBuZXZlciBiZSB1c2VkLgotKiBzaCwgeDg2Ci0gIFRoZSBjYWxsYmFjayBmdW5jdGlvbiBtYXkgcmV0dXJuICgtMSBmb3Igc2gsKSAwIG9yIDEsIGJ1dCBhbHdheXMgcmV0dXJucwotICAxIG9uY2Ugd2UgaGF2ZSByZWFjaGVkIHRoZSBtYXhpbXVtIG51bWJlciBvZiBlbnRyaWVzIGFsbG93ZWQuCi0gIEV2ZW4gc28gdGhlIGN1cnJlbnQga2V4ZWNfaW9tZW1fZm9yX2VhY2hfbGluZSgpIGNvdW50cyB0aGVtIHVwLgotICBUaGlzIGNoYW5nZSBhY3R1YWxseSBmaXhlcyB0aGlzIGJ1Zy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQubGluYXJvLm9yZy9wZW9wbGUvdGFrYWhpcm8uYWthc2hpL2tleGVjLXRvb2xzLmdpdF0KLQotU2lnbmVkLW9mZi1ieTogQUtBU0hJIFRha2FoaXJvIDx0YWthaGlyby5ha2FzaGlAbGluYXJvLm9yZz4KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBrZXhlYy9rZXhlYy1pb21lbS5jIHwgMTUgKysrKysrKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9rZXhlYy9rZXhlYy1pb21lbS5jIGIva2V4ZWMva2V4ZWMtaW9tZW0uYwotaW5kZXggNDg1YTJlOC4uMGEwMjc3YSAxMDA2NDQKLS0tLSBhL2tleGVjL2tleGVjLWlvbWVtLmMKLSsrKyBiL2tleGVjL2tleGVjLWlvbWVtLmMKLUBAIC0xOCw2ICsxOCw5IEBACi0gICogSXRlcmF0ZSBvdmVyIGVhY2ggbGluZSBpbiB0aGUgZmlsZSByZXR1cm5lZCBieSBwcm9jX2lvbWVtKCkuIElmIG1hdGNoIGlzCi0gICogTlVMTCBvciBpZiB0aGUgbGluZSBtYXRjaGVzIHdpdGggb3VyIG1hdGNoLXBhdHRlcm4gdGhlbiBjYWxsIHRoZQotICAqIGNhbGxiYWNrIGlmIG5vbi1OVUxMLgotKyAqIElmIG1hdGNoIGlzIE5VTEwsIGNhbGxiYWNrIHNob3VsZCByZXR1cm4gYSBuZWdhdGl2ZSBpZiBlcnJvci4KLSsgKiBPdGhlcndpc2UgdGhlIGludGVyYXRpb24gZ29lcyBvbiwgaW5jcmVtZW50aW5nIG5yIGJ1dCBvbmx5IGlmIGNhbGxiYWNrCi0rICogcmV0dXJucyAwIChtYXRjaGVkKS4KLSAgKgotICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIGxpbmVzIG1hdGNoZWQuCi0gICovCi1AQCAtMzcsNyArNDAsNyBAQCBpbnQga2V4ZWNfaW9tZW1fZm9yX2VhY2hfbGluZShjaGFyICptYXRjaCwKLSAJY2hhciAqc3RyOwotIAlpbnQgY29uc3VtZWQ7Ci0gCWludCBjb3VudDsKLS0JaW50IG5yID0gMDsKLSsJaW50IG5yID0gMCwgcmV0OwotIAotIAlmcCA9IGZvcGVuKGlvbWVtLCAiciIpOwotIAlpZiAoIWZwKQotQEAgLTUwLDExICs1MywxMyBAQCBpbnQga2V4ZWNfaW9tZW1fZm9yX2VhY2hfbGluZShjaGFyICptYXRjaCwKLSAJCXN0ciA9IGxpbmUgKyBjb25zdW1lZDsKLSAJCXNpemUgPSBlbmQgLSBzdGFydCArIDE7Ci0gCQlpZiAoIW1hdGNoIHx8IG1lbWNtcChzdHIsIG1hdGNoLCBzdHJsZW4obWF0Y2gpKSA9PSAwKSB7Ci0tCQkJaWYgKGNhbGxiYWNrCi0tCQkJICAgICYmIGNhbGxiYWNrKGRhdGEsIG5yLCBzdHIsIHN0YXJ0LCBzaXplKSA8IDApIHsKLS0JCQkJYnJlYWs7Ci0rCQkJaWYgKGNhbGxiYWNrKSB7Ci0rCQkJCXJldCA9IGNhbGxiYWNrKGRhdGEsIG5yLCBzdHIsIHN0YXJ0LCBzaXplKTsKLSsJCQkJaWYgKHJldCA8IDApCi0rCQkJCQlicmVhazsKLSsJCQkJZWxzZSBpZiAocmV0ID09IDApCi0rCQkJCQlucisrOwotIAkJCX0KLS0JCQlucisrOwotIAkJfQotIAl9Ci0gCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDEtdm1jb3JlLWRtZXNnLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDEtdm1jb3JlLWRtZXNnLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBjMmY2ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLXZtY29yZS1kbWVzZy1EZWZpbmUtX0dOVV9TT1VSQ0UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIGQ4MTE4NzVhNDFiNDYyODA0MGFiYWFkYTNkYTI5YjdiOTU5MmU3NTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCA5IEphbiAyMDE2IDE3OjE2OjE2IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHZtY29yZS1kbWVzZzogRGVmaW5lIF9HTlVfU09VUkNFCi0KLWxvZmZfdCBpcyBndWFyZGVkIHdpdGggX0dOVV9TT1VSQ0Ugb24gc29tZSBDIGxpYnJhcnkgaW1wbGVtZW50YXRpb25zCi1lLmcuIG11c2wgc2luY2UgdGhpcyB0eXBlIGlzIG5vdCBkZWZpbmVkIGJ5IFBPU0lYLiBEZWZpbmUgX0dOVV9TT1VSQ0UgdG8KLWluY2x1ZGUgdGhpcyBkZWZpbmUsIGl0IHNob3VsZCBoZWxwIGNvbXBpbGluZyBvbiBtdXNsIHdoaWxlIG5vdGhpbmcKLWNoYW5nZXMgZm9yIGdsaWJjIGJhc2VkIHN5c3RlbXMgc2luY2UgdGhlcmUgX0dOVV9TT1VSQ0UgaXMgYWxyZWFkeQotZGVmaW5lZAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi0gdm1jb3JlLWRtZXNnL3ZtY29yZS1kbWVzZy5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS92bWNvcmUtZG1lc2cvdm1jb3JlLWRtZXNnLmMgYi92bWNvcmUtZG1lc2cvdm1jb3JlLWRtZXNnLmMKLWluZGV4IDAzNjQ2MzYuLmE4ZjU2ZGYgMTAwNjQ0Ci0tLS0gYS92bWNvcmUtZG1lc2cvdm1jb3JlLWRtZXNnLmMKLSsrKyBiL3ZtY29yZS1kbWVzZy92bWNvcmUtZG1lc2cuYwotQEAgLTEsNCArMSw1IEBACi0gI2RlZmluZSBfWE9QRU5fU09VUkNFIDYwMAotKyNkZWZpbmUgX0dOVV9TT1VSQ0UKLSAjZGVmaW5lIF9MQVJHRUZJTEVfU09VUkNFIDEKLSAjZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTIDY0Ci0gI2luY2x1ZGUgPGVuZGlhbi5oPgotLS0gCi0yLjcuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLXg4Ni14ODZfNjQtRml4LWZvcm1hdC13YXJuaW5nLXdpdGgtZGllLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMS14ODYteDg2XzY0LUZpeC1mb3JtYXQtd2FybmluZy13aXRoLWRpZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTYwMWY1Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLXg4Ni14ODZfNjQtRml4LWZvcm1hdC13YXJuaW5nLXdpdGgtZGllLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLQotCi1Gcm9tIDE1NTBmODFiZjE4ODZhYTA1MjBkYTBiNjE4MWNkNjFjMWE3NWQ0YWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQcmF0eXVzaCBBbmFuZCA8cGFuYW5kQHJlZGhhdC5jb20+Ci1EYXRlOiBUdWUsIDE0IE1hciAyMDE3IDE3OjU5OjIyICswNTMwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSB4ODYveDg2XzY0OiBGaXggZm9ybWF0IHdhcm5pbmcgd2l0aCBkaWUoKQotCi1GZWRvcmEga29qaSB1c2VzIGdjYyB2ZXJzaW9uIDcuMC4xLTAuMTIuZmMyNywgYW5kIGl0IGdlbmVyYXRlcyBhIGJ1aWxkCi13YXJuaW5nCi0KLSAgIGtleGVjL2FyY2gvaTM4Ni9rZXhlYy1lbGYteDg2LmM6Mjk5OjM6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nCi0gICBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLSAgICAgICBkaWUoZXJyb3JfbXNnKTsKLSAgICAgICBefn4KLSAgICBjYzE6IHNvbWUgd2FybmluZ3MgYmVpbmcgdHJlYXRlZCBhcyBlcnJvcnMKLQotZXJyb3JfbXNnIGNhbiBoYXZlIGEgZm9ybWF0IHNwZWNpZmllciBhcyB3ZWxsIGluIHN0cmluZy4gSW4gc3VjaCBjYXNlcywKLWlmIHRoZXJlIGlzIG5vIG90aGVyIGFyZ3VtZW50cyBmb3IgdGhlIGZvcm1hdCB2YXJpYWJsZSB0aGVuIGNvZGUgd2lsbAotdHJ5IHRvIGFjY2VzcyBhIG5vbiBleGlzdGluZyBhcmd1bWVudC4gVGhlcmVmb3JlLCB1c2UgMXN0IGFyZ3VtZW50IGFzCi1mb3JtYXQgc3BlY2lmaWVyIGZvciBzdHJpbmcgcHJpbnQgYW5kIHBhc3MgZXJyb3JfbXNnIGFzIHRoZSBzdHJpbmcgdG8gYmUKLXByaW50ZWQuCi0KLVdoaWxlIGRvaW5nIHRoYXQsYWxzbyB1c2UgY29uc3QgcXVhbGlmaWVyIGJlZm9yZSAiY2hhciAqZXJyb3JfbXNnIi4KLQotU2lnbmVkLW9mZi1ieTogUHJhdHl1c2ggQW5hbmQgPHBhbmFuZEByZWRoYXQuY29tPgotU2lnbmVkLW9mZi1ieTogU2ltb24gSG9ybWFuIDxob3Jtc0B2ZXJnZS5uZXQuYXU+Ci0tLS0KLSBrZXhlYy9hcmNoL2kzODYva2V4ZWMtZWxmLXg4Ni5jICAgICAgfCA0ICsrLS0KLSBrZXhlYy9hcmNoL3g4Nl82NC9rZXhlYy1lbGYteDg2XzY0LmMgfCA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvaTM4Ni9rZXhlYy1lbGYteDg2LmMgYi9rZXhlYy9hcmNoL2kzODYva2V4ZWMtZWxmLXg4Ni5jCi1pbmRleCBkZTAwZGNiLi5mZWRmMDMxIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC9pMzg2L2tleGVjLWVsZi14ODYuYwotKysrIGIva2V4ZWMvYXJjaC9pMzg2L2tleGVjLWVsZi14ODYuYwotQEAgLTkxLDcgKzkxLDcgQEAgaW50IGVsZl94ODZfbG9hZChpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKmJ1Ziwgb2ZmX3QgbGVuLAotIAljaGFyICpjb21tYW5kX2xpbmUgPSBOVUxMLCAqbW9kaWZpZWRfY21kbGluZSA9IE5VTEw7Ci0gCWNvbnN0IGNoYXIgKmFwcGVuZCA9IE5VTEw7Ci0gCWNoYXIgKnRtcF9jbWRsaW5lID0gTlVMTDsKLS0JY2hhciAqZXJyb3JfbXNnID0gTlVMTDsKLSsJY29uc3QgY2hhciAqZXJyb3JfbXNnID0gTlVMTDsKLSAJaW50IHJlc3VsdDsKLSAJaW50IGNvbW1hbmRfbGluZV9sZW47Ci0gCWNvbnN0IGNoYXIgKnJhbWRpc2s7Ci1AQCAtMjk2LDYgKzI5Niw2IEBAIG91dDoKLSAJZnJlZShjb21tYW5kX2xpbmUpOwotIAlmcmVlKG1vZGlmaWVkX2NtZGxpbmUpOwotIAlpZiAoZXJyb3JfbXNnKQotLQkJZGllKGVycm9yX21zZyk7Ci0rCQlkaWUoIiVzIiwgZXJyb3JfbXNnKTsKLSAJcmV0dXJuIHJlc3VsdDsKLSB9Ci1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC94ODZfNjQva2V4ZWMtZWxmLXg4Nl82NC5jIGIva2V4ZWMvYXJjaC94ODZfNjQva2V4ZWMtZWxmLXg4Nl82NC5jCi1pbmRleCBhZTY1NjkyLi5hZDIyMzExIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC94ODZfNjQva2V4ZWMtZWxmLXg4Nl82NC5jCi0rKysgYi9rZXhlYy9hcmNoL3g4Nl82NC9rZXhlYy1lbGYteDg2XzY0LmMKLUBAIC05OSw3ICs5OSw3IEBAIGludCBlbGZfeDg2XzY0X2xvYWQoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpidWYsIG9mZl90IGxlbiwKLSAjZGVmaW5lIEFSR19TVFlMRV9OT05FICAyCi0gCWludCBvcHQ7Ci0gCWludCByZXN1bHQgPSAwOwotLQljaGFyICplcnJvcl9tc2cgPSBOVUxMOwotKwljb25zdCBjaGFyICplcnJvcl9tc2cgPSBOVUxMOwotIAotIAkvKiBTZWUgb3B0aW9ucy5oIGFuZCBhZGQgYW55IG5ldyBvcHRpb25zIHRoZXJlIHRvbyEgKi8KLSAJc3RhdGljIGNvbnN0IHN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0gewotQEAgLTI3Niw2ICsyNzYsNiBAQCBvdXQ6Ci0gCWZyZWUoY29tbWFuZF9saW5lKTsKLSAJZnJlZShtb2RpZmllZF9jbWRsaW5lKTsKLSAJaWYgKGVycm9yX21zZykKLS0JCWRpZShlcnJvcl9tc2cpOwotKwkJZGllKCIlcyIsIGVycm9yX21zZyk7Ci0gCXJldHVybiByZXN1bHQ7Ci0gfQotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMi1rZXhlYy1nZW5lcmFsaXplLWFuZC1yZW5hbWUtZ2V0X2tlcm5lbF9zdGV4dF9zeW0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAyLWtleGVjLWdlbmVyYWxpemUtYW5kLXJlbmFtZS1nZXRfa2VybmVsX3N0ZXh0X3N5bS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTUzZjEzYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAyLWtleGVjLWdlbmVyYWxpemUtYW5kLXJlbmFtZS1nZXRfa2VybmVsX3N0ZXh0X3N5bS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5NCArMCwwIEBACi1Gcm9tIGQyOWYzN2JiNmU5MTE0YWJhOTZjNjA2MTAzYjExMGY1MTFiZWU5YTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQcmF0eXVzaCBBbmFuZCA8cGFuYW5kQHJlZGhhdC5jb20+Ci1EYXRlOiBXZWQsIDIgTm92IDIwMTYgMTU6MDU6MjUgKzA1MzAKLVN1YmplY3Q6IFtQQVRDSCAyLzldIGtleGVjOiBnZW5lcmFsaXplIGFuZCByZW5hbWUgZ2V0X2tlcm5lbF9zdGV4dF9zeW0oKQotCi1nZXRfa2VybmVsX3N0ZXh0X3N5bSgpIGhhcyBiZWVuIGRlZmluZWQgZm9yIGJvdGggYXJtIGFuZCBpMzg2LiBPdGhlcgotYXJjaGl0ZWN0dXJlIG1pZ2h0IG5lZWQgc29tZSBvdGhlciBrZXJuZWwgc3ltYm9sIGFkZHJlc3MuIFRoZXJlZm9yZSByZXdyaXRlCi10aGlzIGZ1bmN0aW9uIGFzIGdlbmVyaWMgZnVuY3Rpb24gdG8gZ2V0IGFueSBrZXJuZWwgc3ltYm9sIGFkZHJlc3MuCi0KLU1vcmUgb3Zlciwga2FsbHN5bXMgaXMgbm90IGFyY2ggc3BlY2lmaWMgcmVwcmVzZW50YXRpb24sIHRoZXJlZm9yZSBoYXZlCi1jb21tb24gZnVuY3Rpb24gZm9yIGFsbCBhcmNoZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmxpbmFyby5vcmcvcGVvcGxlL3Rha2FoaXJvLmFrYXNoaS9rZXhlYy10b29scy5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IFByYXR5dXNoIEFuYW5kIDxwYW5hbmRAcmVkaGF0LmNvbT4KLVtjcmVhdGVkIHN5bWJvbHMuY10KLVNpZ25lZC1vZmYtYnk6IEFLQVNISSBUYWthaGlybyA8dGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotLS0tCi0ga2V4ZWMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICB8ICAxICsKLSBrZXhlYy9hcmNoL2FybS9jcmFzaGR1bXAtYXJtLmMgIHwgNDAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGtleGVjL2FyY2gvaTM4Ni9jcmFzaGR1bXAteDg2LmMgfCAyOSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGtleGVjL2tleGVjLmggICAgICAgICAgICAgICAgICAgfCAgMiArKwotIGtleGVjL3N5bWJvbHMuYyAgICAgICAgICAgICAgICAgfCA0MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDUgZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwgNjggZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGtleGVjL3N5bWJvbHMuYwotCi1kaWZmIC0tZ2l0IGEva2V4ZWMvTWFrZWZpbGUgYi9rZXhlYy9NYWtlZmlsZQotaW5kZXggMzlmMzY1Zi4uMmI0ZmIzZCAxMDA2NDQKLS0tLSBhL2tleGVjL01ha2VmaWxlCi0rKysgYi9rZXhlYy9NYWtlZmlsZQotQEAgLTI2LDYgKzI2LDcgQEAgS0VYRUNfU1JDU19iYXNlICs9IGtleGVjL2tlcm5lbF92ZXJzaW9uLmMKLSBLRVhFQ19TUkNTX2Jhc2UgKz0ga2V4ZWMvbHptYS5jCi0gS0VYRUNfU1JDU19iYXNlICs9IGtleGVjL3psaWIuYwotIEtFWEVDX1NSQ1NfYmFzZSArPSBrZXhlYy9rZXhlYy14ZW4uYwotK0tFWEVDX1NSQ1NfYmFzZSArPSBrZXhlYy9zeW1ib2xzLmMKLSAKLSBLRVhFQ19HRU5FUkFURURfU1JDUyArPSAkKFBVUkdBVE9SWV9IRVhfQykKLSAKLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybS9jcmFzaGR1bXAtYXJtLmMgYi9rZXhlYy9hcmNoL2FybS9jcmFzaGR1bXAtYXJtLmMKLWluZGV4IDRhODliNWUuLjI0NWMyMWEgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybS9jcmFzaGR1bXAtYXJtLmMKLSsrKyBiL2tleGVjL2FyY2gvYXJtL2NyYXNoZHVtcC1hcm0uYwotQEAgLTczLDQ4ICs3MywxMCBAQCBzdGF0aWMgc3RydWN0IGNyYXNoX2VsZl9pbmZvIGVsZl9pbmZvID0gewotIAotIGV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgdXNlcl9wYWdlX29mZnNldDsKLSAKLS0vKiBSZXRyaWV2ZSBrZXJuZWwgX3N0ZXh0IHN5bWJvbCB2aXJ0dWFsIGFkZHJlc3MgZnJvbSAvcHJvYy9rYWxsc3ltcyAqLwotLXN0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgZ2V0X2tlcm5lbF9zdGV4dF9zeW0odm9pZCkKLS17Ci0tCWNvbnN0IGNoYXIgKmthbGxzeW1zID0gIi9wcm9jL2thbGxzeW1zIjsKLS0JY29uc3QgY2hhciAqc3RleHQgPSAiX3N0ZXh0IjsKLS0JY2hhciBzeW1bMTI4XTsKLS0JY2hhciBsaW5lWzEyOF07Ci0tCUZJTEUgKmZwOwotLQl1bnNpZ25lZCBsb25nIGxvbmcgdmFkZHIgPSAwOwotLQljaGFyIHR5cGU7Ci0tCi0tCWZwID0gZm9wZW4oa2FsbHN5bXMsICJyIik7Ci0tCWlmICghZnApIHsKLS0JCWZwcmludGYoc3RkZXJyLCAiQ2Fubm90IG9wZW4gJXNcbiIsIGthbGxzeW1zKTsKLS0JCXJldHVybiAwOwotLQl9Ci0tCi0tCXdoaWxlKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgZnApICE9IE5VTEwpIHsKLS0JCXVuc2lnbmVkIGxvbmcgbG9uZyBhZGRyOwotLQotLQkJaWYgKHNzY2FuZihsaW5lLCAiJUx4ICVjICVzIiwgJmFkZHIsICZ0eXBlLCBzeW0pICE9IDMpCi0tCQkJY29udGludWU7Ci0tCi0tCQlpZiAoc3RyY21wKHN5bSwgc3RleHQpID09IDApIHsKLS0JCQlkYmdwcmludGYoImtlcm5lbCBzeW1ib2wgJXMgdmFkZHIgPSAlI2xseFxuIiwgc3RleHQsIGFkZHIpOwotLQkJCXZhZGRyID0gYWRkcjsKLS0JCQlicmVhazsKLS0JCX0KLS0JfQotLQotLQlmY2xvc2UoZnApOwotLQotLQlpZiAodmFkZHIgPT0gMCkKLS0JCWZwcmludGYoc3RkZXJyLCAiQ2Fubm90IGdldCBrZXJuZWwgJXMgc3ltYm9sIGFkZHJlc3NcbiIsIHN0ZXh0KTsKLS0KLS0JcmV0dXJuIHZhZGRyOwotLX0KLS0KLSBzdGF0aWMgaW50IGdldF9rZXJuZWxfcGFnZV9vZmZzZXQoc3RydWN0IGtleGVjX2luZm8gKmluZm8sCi0gCQlzdHJ1Y3QgY3Jhc2hfZWxmX2luZm8gKmVsZl9pbmZvKQotIHsKLS0JdW5zaWduZWQgbG9uZyBsb25nIHN0ZXh0X3N5bV9hZGRyID0gZ2V0X2tlcm5lbF9zdGV4dF9zeW0oKTsKLSsJdW5zaWduZWQgbG9uZyBsb25nIHN0ZXh0X3N5bV9hZGRyID0gZ2V0X2tlcm5lbF9zeW0oIl9zdGV4dCIpOwotIAlpZiAoc3RleHRfc3ltX2FkZHIgPT0gMCkgewotIAkJaWYgKHVzZXJfcGFnZV9vZmZzZXQgIT0gKC0xVUxMKSkgewotIAkJCWVsZl9pbmZvLT5wYWdlX29mZnNldCA9IHVzZXJfcGFnZV9vZmZzZXQ7Ci1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9pMzg2L2NyYXNoZHVtcC14ODYuYyBiL2tleGVjL2FyY2gvaTM4Ni9jcmFzaGR1bXAteDg2LmMKLWluZGV4IGFiODMzZDQuLmFiZjgyYTUgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2kzODYvY3Jhc2hkdW1wLXg4Ni5jCi0rKysgYi9rZXhlYy9hcmNoL2kzODYvY3Jhc2hkdW1wLXg4Ni5jCi1AQCAtMTAyLDM1ICsxMDIsNiBAQCBzdGF0aWMgaW50IGdldF9rZXJuZWxfcGFkZHIoc3RydWN0IGtleGVjX2luZm8gKlVOVVNFRChpbmZvKSwKLSAJcmV0dXJuIC0xOwotIH0KLSAKLS0vKiBSZXRyaWV2ZSBrZXJuZWwgc3ltYm9sIHZpcnR1YWwgYWRkcmVzcyBmcm9tIC9wcm9jL2thbGxzeW1zICovCi0tc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBnZXRfa2VybmVsX3N5bShjb25zdCBjaGFyICpzeW1ib2wpCi0tewotLQljb25zdCBjaGFyICprYWxsc3ltcyA9ICIvcHJvYy9rYWxsc3ltcyI7Ci0tCWNoYXIgc3ltWzEyOF07Ci0tCWNoYXIgbGluZVsxMjhdOwotLQlGSUxFICpmcDsKLS0JdW5zaWduZWQgbG9uZyBsb25nIHZhZGRyOwotLQljaGFyIHR5cGU7Ci0tCi0tCWZwID0gZm9wZW4oa2FsbHN5bXMsICJyIik7Ci0tCWlmICghZnApIHsKLS0JCWZwcmludGYoc3RkZXJyLCAiQ2Fubm90IG9wZW4gJXNcbiIsIGthbGxzeW1zKTsKLS0JCXJldHVybiAwOwotLQl9Ci0tCi0tCXdoaWxlKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgZnApICE9IE5VTEwpIHsKLS0JCWlmIChzc2NhbmYobGluZSwgIiVMeCAlYyAlcyIsICZ2YWRkciwgJnR5cGUsIHN5bSkgIT0gMykKLS0JCQljb250aW51ZTsKLS0JCWlmIChzdHJjbXAoc3ltLCBzeW1ib2wpID09IDApIHsKLS0JCQlkYmdwcmludGYoImtlcm5lbCBzeW1ib2wgJXMgdmFkZHIgPSAlMTZsbHhcbiIsIHN5bWJvbCwgdmFkZHIpOwotLQkJCXJldHVybiB2YWRkcjsKLS0JCX0KLS0JfQotLQotLQlmcHJpbnRmKHN0ZGVyciwgIkNhbm5vdCBnZXQga2VybmVsICVzIHN5bWJvbCBhZGRyZXNzXG4iLCBzeW1ib2wpOwotLQlyZXR1cm4gMDsKLS19Ci0tCi0gLyogUmV0cmlldmUgaW5mbyByZWdhcmRpbmcgdmlydHVhbCBhZGRyZXNzIGtlcm5lbCBoYXMgYmVlbiBjb21waWxlZCBmb3IgYW5kCi0gICogc2l6ZSBvZiB0aGUga2VybmVsIGZyb20gL3Byb2Mva2NvcmUuIEN1cnJlbnQgL3Byb2Mva2NvcmUgcGFyc2luZyBmcm9tCi0gICogZnJvbSBrZXhlYy10b29scyBmYWlscyBiZWNhdXNlIG9mIG1hbGZvcm1lZCBlbGYgbm90ZXMuIEEga2VybmVsIHBhdGNoIGhhcwotZGlmZiAtLWdpdCBhL2tleGVjL2tleGVjLmggYi9rZXhlYy9rZXhlYy5oCi1pbmRleCA5MTk0ZjFjLi5iNGZhZmFkIDEwMDY0NAotLS0tIGEva2V4ZWMva2V4ZWMuaAotKysrIGIva2V4ZWMva2V4ZWMuaAotQEAgLTMxMiw0ICszMTIsNiBAQCBpbnQgeGVuX2tleGVjX2xvYWQoc3RydWN0IGtleGVjX2luZm8gKmluZm8pOwotIGludCB4ZW5fa2V4ZWNfdW5sb2FkKHVpbnQ2NF90IGtleGVjX2ZsYWdzKTsKLSB2b2lkIHhlbl9rZXhlY19leGVjKHZvaWQpOwotIAotK2V4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgZ2V0X2tlcm5lbF9zeW0oY29uc3QgY2hhciAqdGV4dCk7Ci0rCi0gI2VuZGlmIC8qIEtFWEVDX0ggKi8KLWRpZmYgLS1naXQgYS9rZXhlYy9zeW1ib2xzLmMgYi9rZXhlYy9zeW1ib2xzLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lYTZlMzI3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9rZXhlYy9zeW1ib2xzLmMKLUBAIC0wLDAgKzEsNDEgQEAKLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgImtleGVjLmgiCi0rCi0rLyogUmV0cmlldmUga2VybmVsIHN5bWJvbCB2aXJ0dWFsIGFkZHJlc3MgZnJvbSAvcHJvYy9rYWxsc3ltcyAqLwotK3Vuc2lnbmVkIGxvbmcgbG9uZyBnZXRfa2VybmVsX3N5bShjb25zdCBjaGFyICp0ZXh0KQotK3sKLSsJY29uc3QgY2hhciAqa2FsbHN5bXMgPSAiL3Byb2Mva2FsbHN5bXMiOwotKwljaGFyIHN5bVsxMjhdOwotKwljaGFyIGxpbmVbMTI4XTsKLSsJRklMRSAqZnA7Ci0rCXVuc2lnbmVkIGxvbmcgbG9uZyB2YWRkciA9IDA7Ci0rCWNoYXIgdHlwZTsKLSsKLSsJZnAgPSBmb3BlbihrYWxsc3ltcywgInIiKTsKLSsJaWYgKCFmcCkgewotKwkJZnByaW50ZihzdGRlcnIsICJDYW5ub3Qgb3BlbiAlc1xuIiwga2FsbHN5bXMpOwotKwkJcmV0dXJuIDA7Ci0rCX0KLSsKLSsJd2hpbGUgKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgZnApICE9IE5VTEwpIHsKLSsJCXVuc2lnbmVkIGxvbmcgbG9uZyBhZGRyOwotKwotKwkJaWYgKHNzY2FuZihsaW5lLCAiJUx4ICVjICVzIiwgJmFkZHIsICZ0eXBlLCBzeW0pICE9IDMpCi0rCQkJY29udGludWU7Ci0rCi0rCQlpZiAoc3RyY21wKHN5bSwgdGV4dCkgPT0gMCkgewotKwkJCWRiZ3ByaW50Zigia2VybmVsIHN5bWJvbCAlcyB2YWRkciA9ICUjbGx4XG4iLAotKwkJCQkJCQkJdGV4dCwgYWRkcik7Ci0rCQkJdmFkZHIgPSBhZGRyOwotKwkJCWJyZWFrOwotKwkJfQotKwl9Ci0rCi0rCWZjbG9zZShmcCk7Ci0rCi0rCWlmICh2YWRkciA9PSAwKQotKwkJZnByaW50ZihzdGRlcnIsICJDYW5ub3QgZ2V0IGtlcm5lbCAlcyBzeW1ib2wgYWRkcmVzc1xuIiwgdGV4dCk7Ci0rCi0rCXJldHVybiB2YWRkcjsKLSt9Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDItcHBjLUZpeC1mb3JtYXQtd2FybmluZy13aXRoLWRpZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDItcHBjLUZpeC1mb3JtYXQtd2FybmluZy13aXRoLWRpZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmExYzA2ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAyLXBwYy1GaXgtZm9ybWF0LXdhcm5pbmctd2l0aC1kaWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIDFjOTU2ZmM4YzZiNjMyNGQ4ZDM4YmJhNWY5ZTYwYTAxODA1MWM2ZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogVGh1LCAxNiBNYXIgMjAxNyAxNTozOTowNiArMDIwMAotU3ViamVjdDogW1BBVENIIDIvMl0gcHBjOiBGaXggZm9ybWF0IHdhcm5pbmcgd2l0aCBkaWUoKQotCi1FbmFibGUgY29tcGlsaW5nIGtleGVjLXRvb2xzIGZvciBwcGMgd2l0aCAtV2Vycm9yPWZvcm1hdC1zZWN1cml0eS4KLQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtNYWlsaW5nIGxpc3RdCi0tLS0KLSBrZXhlYy9hcmNoL3BwYy9rZXhlYy1lbGYtcHBjLmMgICAgfCAyICstCi0ga2V4ZWMvYXJjaC9wcGMva2V4ZWMtdUltYWdlLXBwYy5jIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9wcGMva2V4ZWMtZWxmLXBwYy5jIGIva2V4ZWMvYXJjaC9wcGMva2V4ZWMtZWxmLXBwYy5jCi1pbmRleCAyOTFmMDZkLi5hZDQzYWQxIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC9wcGMva2V4ZWMtZWxmLXBwYy5jCi0rKysgYi9rZXhlYy9hcmNoL3BwYy9rZXhlYy1lbGYtcHBjLmMKLUBAIC00NTMsNyArNDUzLDcgQEAgb3V0OgotIAlpZiAoIXRtcF9jbWRsaW5lKQotIAkJZnJlZShjb21tYW5kX2xpbmUpOwotIAlpZiAoZXJyb3JfbXNnKQotLQkJZGllKGVycm9yX21zZyk7Ci0rCQlkaWUoIiVzIiwgZXJyb3JfbXNnKTsKLSAKLSAJcmV0dXJuIHJlc3VsdDsKLSB9Ci1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9wcGMva2V4ZWMtdUltYWdlLXBwYy5jIGIva2V4ZWMvYXJjaC9wcGMva2V4ZWMtdUltYWdlLXBwYy5jCi1pbmRleCA1ZWVjNmU0Li5lOGY3YWRjIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC9wcGMva2V4ZWMtdUltYWdlLXBwYy5jCi0rKysgYi9rZXhlYy9hcmNoL3BwYy9rZXhlYy11SW1hZ2UtcHBjLmMKLUBAIC0zMDYsNyArMzA2LDcgQEAgb3V0OgotIAlpZiAoIXRtcF9jbWRsaW5lKQotIAkJZnJlZShjb21tYW5kX2xpbmUpOwotIAlpZiAoZXJyb3JfbXNnKQotLQkJZGllKGVycm9yX21zZyk7Ci0rCQlkaWUoIiVzIiwgZXJyb3JfbXNnKTsKLSAJcmV0dXJuIHJldDsKLSB9Ci0gCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAzLWFybTY0LWlkZW50aWZ5LVBIWVNfT0ZGU0VULWNvcnJlY3RseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDMtYXJtNjQtaWRlbnRpZnktUEhZU19PRkZTRVQtY29ycmVjdGx5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTFjMzE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDMtYXJtNjQtaWRlbnRpZnktUEhZU19PRkZTRVQtY29ycmVjdGx5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotRnJvbSAxNmRmMTcwYWQ0ODA4ZDEyYWNkNWU5MTlhYzRmNmU3ZjMzYTI0N2IzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQUtBU0hJIFRha2FoaXJvIDx0YWthaGlyby5ha2FzaGlAbGluYXJvLm9yZz4KLURhdGU6IFRodSwgMSBTZXAgMjAxNiAxMDo1Nzo0MiArMDkwMAotU3ViamVjdDogW1BBVENIIDMvOV0gYXJtNjQ6IGlkZW50aWZ5IFBIWVNfT0ZGU0VUIGNvcnJlY3RseQotCi1EdWUgdG8gdGhlIGtlcm5lbCBwYXRjaCwgY29tbWl0IGU3Y2QxOTAzODVkMSAoImFybTY0OiBtYXJrIHJlc2VydmVkCi1tZW1ibG9jayByZWdpb25zIGV4cGxpY2l0bHkgaW4gaW9tZW0iKSwgdGhlIGN1cnJlbnQgY29kZSB3aWxsIG5vdCBiZSBhYmxlCi10byBpZGVudGlmeSB0aGUgY29ycmVjdCB2YWx1ZSBvZiBQSFlTX09GRlNFVCBpZiBzb21lICJyZXNlcnZlZCIgbWVtb3J5Ci1yZWdpb24sIHdoaWNoIGlzIGxpa2VseSB0byBiZSBVRUZJIHJ1bnRpbWUgc2VydmljZXMgY29kZS9kYXRhLCBleGlzdHMgYXQKLWFuIGFkZHJlc3MgYmVsb3cgdGhlIGZpcnN0ICJTeXN0ZW0gUkFNIiByZWdpb25zLgotCi1UaGlzIHBhdGNoIGZpeGVzIHRoaXMgaXNzdWUuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmxpbmFyby5vcmcvcGVvcGxlL3Rha2FoaXJvLmFrYXNoaS9rZXhlYy10b29scy5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IEFLQVNISSBUYWthaGlybyA8dGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotLS0tCi0ga2V4ZWMvYXJjaC9hcm02NC9pb21lbS5oICAgICAgIHwgIDcgKysrKysrKwotIGtleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYyB8IDEyICsrKysrKysrKystLQotIDIgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQga2V4ZWMvYXJjaC9hcm02NC9pb21lbS5oCi0KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2lvbWVtLmggYi9rZXhlYy9hcmNoL2FybTY0L2lvbWVtLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi43ZmQ2NmViCi0tLS0gL2Rldi9udWxsCi0rKysgYi9rZXhlYy9hcmNoL2FybTY0L2lvbWVtLmgKLUBAIC0wLDAgKzEsNyBAQAotKyNpZm5kZWYgSU9NRU1fSAotKyNkZWZpbmUgSU9NRU1fSAotKwotKyNkZWZpbmUgU1lTVEVNX1JBTQkJIlN5c3RlbSBSQU1cbiIKLSsjZGVmaW5lIElPTUVNX1JFU0VSVkVECQkicmVzZXJ2ZWRcbiIKLSsKLSsjZW5kaWYKLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKLWluZGV4IDJlODgzOWEuLjhhYzgxMWQgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYwotQEAgLTIxLDYgKzIxLDcgQEAKLSAjaW5jbHVkZSAiY3Jhc2hkdW1wLWFybTY0LmgiCi0gI2luY2x1ZGUgImR0LW9wcy5oIgotICNpbmNsdWRlICJmczJkdC5oIgotKyNpbmNsdWRlICJpb21lbS5oIgotICNpbmNsdWRlICJrZXhlYy1zeXNjYWxsLmgiCi0gI2luY2x1ZGUgImFyY2gvb3B0aW9ucy5oIgotIAotQEAgLTQ3NSw3ICs0NzYsMTQgQEAgc3RhdGljIGludCBnZXRfbWVtb3J5X3Jhbmdlc19pb21lbV9jYih2b2lkICpkYXRhLCBpbnQgbnIsIGNoYXIgKnN0ciwKLSAJCXJldHVybiAtMTsKLSAKLSAJciA9IChzdHJ1Y3QgbWVtb3J5X3JhbmdlICopZGF0YSArIG5yOwotLQlyLT50eXBlID0gUkFOR0VfUkFNOwotKwotKwlpZiAoIXN0cm5jbXAoc3RyLCBTWVNURU1fUkFNLCBzdHJsZW4oU1lTVEVNX1JBTSkpKQotKwkJci0+dHlwZSA9IFJBTkdFX1JBTTsKLSsJZWxzZSBpZiAoIXN0cm5jbXAoc3RyLCBJT01FTV9SRVNFUlZFRCwgc3RybGVuKElPTUVNX1JFU0VSVkVEKSkpCi0rCQlyLT50eXBlID0gUkFOR0VfUkVTRVJWRUQ7Ci0rCWVsc2UKLSsJCXJldHVybiAxOwotKwotIAlyLT5zdGFydCA9IGJhc2U7Ci0gCXItPmVuZCA9IGJhc2UgKyBsZW5ndGggLSAxOwotIAotQEAgLTQ5NCw3ICs1MDIsNyBAQCBzdGF0aWMgaW50IGdldF9tZW1vcnlfcmFuZ2VzX2lvbWVtX2NiKHZvaWQgKmRhdGEsIGludCBuciwgY2hhciAqc3RyLAotIHN0YXRpYyBpbnQgZ2V0X21lbW9yeV9yYW5nZXNfaW9tZW0oc3RydWN0IG1lbW9yeV9yYW5nZSAqYXJyYXksCi0gCXVuc2lnbmVkIGludCAqY291bnQpCi0gewotLQkqY291bnQgPSBrZXhlY19pb21lbV9mb3JfZWFjaF9saW5lKCJTeXN0ZW0gUkFNXG4iLAotKwkqY291bnQgPSBrZXhlY19pb21lbV9mb3JfZWFjaF9saW5lKE5VTEwsCi0gCQlnZXRfbWVtb3J5X3Jhbmdlc19pb21lbV9jYiwgYXJyYXkpOwotIAotIAlpZiAoISpjb3VudCkgewotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA0LWFybTY0LWtkdW1wLWlkZW50aWZ5LW1lbW9yeS1yZWdpb25zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwNC1hcm02NC1rZHVtcC1pZGVudGlmeS1tZW1vcnktcmVnaW9ucy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjY2MDBmMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA0LWFybTY0LWtkdW1wLWlkZW50aWZ5LW1lbW9yeS1yZWdpb25zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjAyICswLDAgQEAKLUZyb20gNDhhNGM3ODc0ZDgyNjRkZGJmYWVjMmU5ODU4ZDc4NjZhMmQyZWI2MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFLQVNISSBUYWthaGlybyA8dGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc+Ci1EYXRlOiBXZWQsIDUgQXVnIDIwMTUgMTM6MTY6MzAgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCA0LzldIGFybTY0OiBrZHVtcDogaWRlbnRpZnkgbWVtb3J5IHJlZ2lvbnMKLQotVGhlIGZvbGxvd2luZyByZWdpb25zIG5lZWQgdG8gYmUgaWRlbnRpZmllZCBmb3IgbGF0ZXIgdXNlOgotIGEpIG1lbW9yeSByZWdpb25zIHdoaWNoIGJlbG9uZyB0byB0aGUgMXN0IGtlcm5lbAotIGIpIHVzYWJsZSBtZW1vcnkgcmVzZXJ2ZWQgZm9yIGNyYXNoIGR1bXAga2VybmVsCi0KLVdlIGdvIHRocm91Z2ggL3Byb2MvaW9tZW0gdG8gZmluZCBvdXQgYSkgYW5kIGIpIHdoaWNoIGFyZSBtYXJrZWQKLWFzICJTeXN0ZW0gUkFNIiBhbmQgIkNyYXNoIGtlcm5lbCIsIHJlc3BlY3RpdmVseS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQubGluYXJvLm9yZy9wZW9wbGUvdGFrYWhpcm8uYWthc2hpL2tleGVjLXRvb2xzLmdpdF0KLQotU2lnbmVkLW9mZi1ieTogQUtBU0hJIFRha2FoaXJvIDx0YWthaGlyby5ha2FzaGlAbGluYXJvLm9yZz4KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBrZXhlYy9hcmNoL2FybTY0L01ha2VmaWxlICAgICAgICAgIHwgICAyICsKLSBrZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jIHwgMTAwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KLSBrZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5oIHwgIDE0ICsrKysrLQotIGtleGVjL2FyY2gvYXJtNjQvaW9tZW0uaCAgICAgICAgICAgfCAgIDEgKwotIDQgZmlsZXMgY2hhbmdlZCwgMTE0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L01ha2VmaWxlIGIva2V4ZWMvYXJjaC9hcm02NC9NYWtlZmlsZQotaW5kZXggNzRiNjc3Zi4uMmQ0YWUwZSAxMDA2NDQKLS0tLSBhL2tleGVjL2FyY2gvYXJtNjQvTWFrZWZpbGUKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQvTWFrZWZpbGUKLUBAIC02LDYgKzYsOCBAQCBhcm02NF9GUzJEVF9JTkNMVURFICs9IFwKLSAKLSBhcm02NF9EVF9PUFMgKz0ga2V4ZWMvZHQtb3BzLmMKLSAKLSthcm02NF9NRU1fUkVHSU9OUyA9IGtleGVjL21lbV9yZWdpb25zLmMKLSsKLSBhcm02NF9DUFBGTEFHUyArPSAtSSAkKHNyY2Rpcikva2V4ZWMvCi0gCi0gYXJtNjRfS0VYRUNfU1JDUyArPSBcCi1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYyBiL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmMKLWluZGV4IGQyMjcyYzguLmRjYWNhNDMgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jCi0rKysgYi9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jCi1AQCAtMSw1ICsxLDEzIEBACi0gLyoKLSAgKiBBUk02NCBjcmFzaGR1bXAuCi0rICogICAgIHBhcnRseSBkZXJpdmVkIGZyb20gYXJtIGltcGxlbWVudGF0aW9uCi0rICoKLSsgKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBMaW5hcm8gTGltaXRlZAotKyAqIEF1dGhvcjogQUtBU0hJIFRha2FoaXJvIDx0YWthaGlyby5ha2FzaGlAbGluYXJvLm9yZz4KLSsgKgotKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKLSsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSAgKi8KLSAKLSAjZGVmaW5lIF9HTlVfU09VUkNFCi1AQCAtMTAsMTIgKzE4LDEwMiBAQAotICNpbmNsdWRlICJrZXhlYy5oIgotICNpbmNsdWRlICJjcmFzaGR1bXAuaCIKLSAjaW5jbHVkZSAiY3Jhc2hkdW1wLWFybTY0LmgiCi0rI2luY2x1ZGUgImlvbWVtLmgiCi0gI2luY2x1ZGUgImtleGVjLWFybTY0LmgiCi0gI2luY2x1ZGUgImtleGVjLWVsZi5oIgotKyNpbmNsdWRlICJtZW1fcmVnaW9ucy5oIgotIAotLXN0cnVjdCBtZW1vcnlfcmFuZ2VzIHVzYWJsZW1lbV9yZ25zID0ge307Ci0rLyogbWVtb3J5IHJhbmdlcyBvbiBjcmFzaGVkIGtlcm5lbCAqLwotK3N0YXRpYyBzdHJ1Y3QgbWVtb3J5X3JhbmdlIGNyYXNoX21lbW9yeV9yYW5nZXNbQ1JBU0hfTUFYX01FTU9SWV9SQU5HRVNdOwotK3N0YXRpYyBzdHJ1Y3QgbWVtb3J5X3JhbmdlcyBjcmFzaF9tZW1vcnlfcmducyA9IHsKLSsJLnNpemUgPSAwLAotKwkubWF4X3NpemUgPSBDUkFTSF9NQVhfTUVNT1JZX1JBTkdFUywKLSsJLnJhbmdlcyA9IGNyYXNoX21lbW9yeV9yYW5nZXMsCi0rfTsKLSsKLSsvKiBtZW1vcnkgcmFuZ2UgcmVzZXJ2ZWQgZm9yIGNyYXNoa2VybmVsICovCi0rc3RydWN0IG1lbW9yeV9yYW5nZSBjcmFzaF9yZXNlcnZlZF9tZW07Ci0rc3RydWN0IG1lbW9yeV9yYW5nZXMgdXNhYmxlbWVtX3JnbnMgPSB7Ci0rCS5zaXplID0gMCwKLSsJLm1heF9zaXplID0gMSwKLSsJLnJhbmdlcyA9ICZjcmFzaF9yZXNlcnZlZF9tZW0sCi0rfTsKLSsKLSsvKgotKyAqIGlvbWVtX3JhbmdlX2NhbGxiYWNrKCkgLSBjYWxsYmFjayBjYWxsZWQgZm9yIGVhY2ggaW9tZW0gcmVnaW9uCi0rICogQGRhdGE6IG5vdCB1c2VkCi0rICogQG5yOiBub3QgdXNlZAotKyAqIEBzdHI6IG5hbWUgb2YgdGhlIG1lbW9yeSByZWdpb24KLSsgKiBAYmFzZTogc3RhcnQgYWRkcmVzcyBvZiB0aGUgbWVtb3J5IHJlZ2lvbgotKyAqIEBsZW5ndGg6IHNpemUgb2YgdGhlIG1lbW9yeSByZWdpb24KLSsgKgotKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9uY2UgZm9yIGVhY2ggbWVtb3J5IHJlZ2lvbiBmb3VuZCBpbiAvcHJvYy9pb21lbS4KLSsgKiBJdCBsb2NhdGVzIHN5c3RlbSBSQU0gYW5kIGNyYXNoa2VybmVsIHJlc2VydmVkIG1lbW9yeSBhbmQgcGxhY2VzIHRoZXNlIHRvCi0rICogdmFyaWFibGVzLCByZXNwZWN0aXZlbHksIGNyYXNoX21lbW9yeV9yYW5nZXMgYW5kIGNyYXNoX3Jlc2VydmVkX21lbS4KLSsgKi8KLSsKLStzdGF0aWMgaW50IGlvbWVtX3JhbmdlX2NhbGxiYWNrKHZvaWQgKlVOVVNFRChkYXRhKSwgaW50IFVOVVNFRChuciksCi0rCQkJCWNoYXIgKnN0ciwgdW5zaWduZWQgbG9uZyBsb25nIGJhc2UsCi0rCQkJCXVuc2lnbmVkIGxvbmcgbG9uZyBsZW5ndGgpCi0rewotKwlpZiAoc3RybmNtcChzdHIsIENSQVNIX0tFUk5FTCwgc3RybGVuKENSQVNIX0tFUk5FTCkpID09IDApCi0rCQlyZXR1cm4gbWVtX3JlZ2lvbnNfYWRkKCZ1c2FibGVtZW1fcmducywKLSsJCQkJICAgICAgIGJhc2UsIGxlbmd0aCwgUkFOR0VfUkFNKTsKLSsJZWxzZSBpZiAoc3RybmNtcChzdHIsIFNZU1RFTV9SQU0sIHN0cmxlbihTWVNURU1fUkFNKSkgPT0gMCkKLSsJCXJldHVybiBtZW1fcmVnaW9uc19hZGQoJmNyYXNoX21lbW9yeV9yZ25zLAotKwkJCQkgICAgICAgYmFzZSwgbGVuZ3RoLCBSQU5HRV9SQU0pOwotKwotKwlyZXR1cm4gMDsKLSt9Ci0gCi0gaW50IGlzX2NyYXNoa2VybmVsX21lbV9yZXNlcnZlZCh2b2lkKQotIHsKLSsJaWYgKCFjcmFzaF9yZXNlcnZlZF9tZW0uZW5kKQotKwkJa2V4ZWNfaW9tZW1fZm9yX2VhY2hfbGluZShOVUxMLCBpb21lbV9yYW5nZV9jYWxsYmFjaywgTlVMTCk7Ci0rCi0rCXJldHVybiBjcmFzaF9yZXNlcnZlZF9tZW0uc3RhcnQgIT0gY3Jhc2hfcmVzZXJ2ZWRfbWVtLmVuZDsKLSt9Ci0rCi0rLyoKLSsgKiBjcmFzaF9nZXRfbWVtb3J5X3JhbmdlcygpIC0gcmVhZCBzeXN0ZW0gcGh5c2ljYWwgbWVtb3J5Ci0rICoKLSsgKiBGdW5jdGlvbiByZWFkcyB0aHJvdWdoIHN5c3RlbSBwaHlzaWNhbCBtZW1vcnkgYW5kIHN0b3JlcyBmb3VuZCBtZW1vcnkKLSsgKiByZWdpb25zIGluIGNyYXNoX21lbW9yeV9yYW5nZXMuCi0rICogUmVnaW9ucyBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlci4KLSsgKgotKyAqIFJldHVybnMgMCBpbiBjYXNlIG9mIHN1Y2Nlc3MgYW5kIC0xIG90aGVyd2lzZSAoZXJybm8gaXMgc2V0KS4KLSsgKi8KLStzdGF0aWMgaW50IGNyYXNoX2dldF9tZW1vcnlfcmFuZ2VzKHZvaWQpCi0rewotKwkvKgotKwkgKiBGaXJzdCByZWFkIGFsbCBtZW1vcnkgcmVnaW9ucyB0aGF0IGNhbiBiZSBjb25zaWRlcmVkIGFzCi0rCSAqIHN5c3RlbSBtZW1vcnkgaW5jbHVkaW5nIHRoZSBjcmFzaCBhcmVhLgotKwkgKi8KLSsJaWYgKCF1c2FibGVtZW1fcmducy5zaXplKQotKwkJa2V4ZWNfaW9tZW1fZm9yX2VhY2hfbGluZShOVUxMLCBpb21lbV9yYW5nZV9jYWxsYmFjaywgTlVMTCk7Ci0rCi0rCS8qIGFsbG93IG9ubHkgYSBzaW5nbGUgcmVnaW9uIGZvciBjcmFzaCBkdW1wIGtlcm5lbCAqLwotKwlpZiAodXNhYmxlbWVtX3JnbnMuc2l6ZSAhPSAxKSB7Ci0rCQllcnJubyA9IEVJTlZBTDsKLSsJCXJldHVybiAtMTsKLSsJfQotKwotKwlkYmdwcmludF9tZW1fcmFuZ2UoIlJlc2VydmVkIG1lbW9yeSByYW5nZSIsICZjcmFzaF9yZXNlcnZlZF9tZW0sIDEpOwotKwotKwlpZiAobWVtX3JlZ2lvbnNfZXhjbHVkZSgmY3Jhc2hfbWVtb3J5X3JnbnMsICZjcmFzaF9yZXNlcnZlZF9tZW0pKSB7Ci0rCQlmcHJpbnRmKHN0ZGVyciwKLSsJCQkiRXJyb3I6IE51bWJlciBvZiBjcmFzaCBtZW1vcnkgcmFuZ2VzIGV4Y2VkZWVkIHRoZSBtYXggbGltaXRcbiIpOwotKwkJZXJybm8gPSBFTk9NRU07Ci0rCQlyZXR1cm4gLTE7Ci0rCX0KLSsKLSsJLyoKLSsJICogTWFrZSBzdXJlIHRoYXQgdGhlIG1lbW9yeSByZWdpb25zIGFyZSBzb3J0ZWQuCi0rCSAqLwotKwltZW1fcmVnaW9uc19zb3J0KCZjcmFzaF9tZW1vcnlfcmducyk7Ci0rCi0rCWRiZ3ByaW50X21lbV9yYW5nZSgiQ29yZWR1bXAgbWVtb3J5IHJhbmdlcyIsCi0rCQkJICAgY3Jhc2hfbWVtb3J5X3JnbnMucmFuZ2VzLCBjcmFzaF9tZW1vcnlfcmducy5zaXplKTsKLSsKLSAJcmV0dXJuIDA7Ci0gfQotZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmggYi9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5oCi1pbmRleCBmMzNjN2EyLi4wN2EwZWQwIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuaAotKysrIGIva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuaAotQEAgLTEsMTIgKzEsMjIgQEAKLSAvKgotICAqIEFSTTY0IGNyYXNoZHVtcC4KLSsgKgotKyAqIENvcHlyaWdodCAoYykgMjAxNC0yMDE2IExpbmFybyBMaW1pdGVkCi0rICogQXV0aG9yOiBBS0FTSEkgVGFrYWhpcm8gPHRha2FoaXJvLmFrYXNoaUBsaW5hcm8ub3JnPgotKyAqCi0rICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwotKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotICAqLwotIAotLSNpZiAhZGVmaW5lZChDUkFTSERVTVBfQVJNNjRfSCkKLSsjaWZuZGVmIENSQVNIRFVNUF9BUk02NF9ICi0gI2RlZmluZSBDUkFTSERVTVBfQVJNNjRfSAotIAotICNpbmNsdWRlICJrZXhlYy5oIgotIAotKyNkZWZpbmUgQ1JBU0hfTUFYX01FTU9SWV9SQU5HRVMJMzIKLSsKLSBleHRlcm4gc3RydWN0IG1lbW9yeV9yYW5nZXMgdXNhYmxlbWVtX3JnbnM7Ci0rZXh0ZXJuIHN0cnVjdCBtZW1vcnlfcmFuZ2UgY3Jhc2hfcmVzZXJ2ZWRfbWVtOwotIAotLSNlbmRpZgotKyNlbmRpZiAvKiBDUkFTSERVTVBfQVJNNjRfSCAqLwotZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvYXJtNjQvaW9tZW0uaCBiL2tleGVjL2FyY2gvYXJtNjQvaW9tZW0uaAotaW5kZXggN2ZkNjZlYi4uMjBjZGE4NyAxMDA2NDQKLS0tLSBhL2tleGVjL2FyY2gvYXJtNjQvaW9tZW0uaAotKysrIGIva2V4ZWMvYXJjaC9hcm02NC9pb21lbS5oCi1AQCAtMiw2ICsyLDcgQEAKLSAjZGVmaW5lIElPTUVNX0gKLSAKLSAjZGVmaW5lIFNZU1RFTV9SQU0JCSJTeXN0ZW0gUkFNXG4iCi0rI2RlZmluZSBDUkFTSF9LRVJORUwJCSJDcmFzaCBrZXJuZWxcbiIKLSAjZGVmaW5lIElPTUVNX1JFU0VSVkVECQkicmVzZXJ2ZWRcbiIKLSAKLSAjZW5kaWYKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwNS1hcm02NC1rZHVtcC1hZGQtZWxmLWNvcmUtaGVhZGVyLXNlZ21lbnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA1LWFybTY0LWtkdW1wLWFkZC1lbGYtY29yZS1oZWFkZXItc2VnbWVudC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU1MzViNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA1LWFybTY0LWtkdW1wLWFkZC1lbGYtY29yZS1oZWFkZXItc2VnbWVudC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5MSArMCwwIEBACi1Gcm9tIDc2OWRhMjU2MjdjZWJiMmE1M2NhZWU1ZDViZTc4YTMyZDM3NmFkYzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBS0FTSEkgVGFrYWhpcm8gPHRha2FoaXJvLmFrYXNoaUBsaW5hcm8ub3JnPgotRGF0ZTogV2VkLCA1IEF1ZyAyMDE1IDEzOjQ1OjE1ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggNS85XSBhcm02NDoga2R1bXA6IGFkZCBlbGYgY29yZSBoZWFkZXIgc2VnbWVudAotCi1FbGYgY29yZSBoZWFkZXIgY29udGFpbnMgdGhlIGluZm9ybWF0aW9uIG5lY2Vzc2FyeSBmb3IgdGhlIGNvcmVkdW1wIG9mCi10aGUgMXN0IGtlcm5lbCwgaW5jbHVkaW5nIGl0cyBwaHlzY2FsIG1lbW9yeSBsYXlvdXQgYXMgd2VsbCBhcyBjcHUgcmVnaXN0ZXIKLXN0YXRlcyBhdCB0aGUgcGFuaWMuCi1UaGUgc2VnbWVudCBpcyBhbGxvY2F0ZWQgaW5zaWRlIHRoZSByZXNlcnZlZCBtZW1vcnkgb2YgY3Jhc2ggZHVtcCBrZXJuZWwuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmxpbmFyby5vcmcvcGVvcGxlL3Rha2FoaXJvLmFrYXNoaS9rZXhlYy10b29scy5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IEFLQVNISSBUYWthaGlybyA8dGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotLS0tCi0ga2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYyB8IDk2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0ga2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuaCB8ICAzICsrCi0ga2V4ZWMvYXJjaC9hcm02NC9pb21lbS5oICAgICAgICAgICB8ICAyICsKLSBrZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jIHwgMTAgKysrKwotIDQgZmlsZXMgY2hhbmdlZCwgMTExIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmMgYi9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jCi1pbmRleCBkY2FjYTQzLi44MzQ2MTMxIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYwotKysrIGIva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYwotQEAgLTM5LDYgKzM5LDM5IEBAIHN0cnVjdCBtZW1vcnlfcmFuZ2VzIHVzYWJsZW1lbV9yZ25zID0gewotIAkucmFuZ2VzID0gJmNyYXNoX3Jlc2VydmVkX21lbSwKLSB9OwotIAotK3N0cnVjdCBtZW1vcnlfcmFuZ2UgZWxmY29yZWhkcl9tZW07Ci0rCi0rc3RhdGljIHN0cnVjdCBjcmFzaF9lbGZfaW5mbyBlbGZfaW5mbyA9IHsKLSsJLmNsYXNzCQk9IEVMRkNMQVNTNjQsCi0rI2lmIChfX0JZVEVfT1JERVIgPT0gX19MSVRUTEVfRU5ESUFOKQotKwkuZGF0YQkJPSBFTEZEQVRBMkxTQiwKLSsjZWxzZQotKwkuZGF0YQkJPSBFTEZEQVRBMk1TQiwKLSsjZW5kaWYKLSsJLm1hY2hpbmUJPSBFTV9BQVJDSDY0LAotK307Ci0rCi0rLyoKLSsgKiBOb3RlOiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgY29ycmVjdCBvbmx5IGlmICFDT05GSUdfUkFORE9NSVpFX0JBU0UuCi0rICovCi0rc3RhdGljIHVpbnQ2NF90IGdldF9rZXJuZWxfcGFnZV9vZmZzZXQodm9pZCkKLSt7Ci0rCWludCBpOwotKwotKwlpZiAoZWxmX2luZm8ua2Vybl92YWRkcl9zdGFydCA9PSBVSU5UNjRfTUFYKQotKwkJcmV0dXJuIFVJTlQ2NF9NQVg7Ci0rCi0rCS8qIEN1cnJlbnQgbWF4IHZpcnR1YWwgbWVtb3J5IHJhbmdlIGlzIDQ4LWJpdHMuICovCi0rCWZvciAoaSA9IDQ4OyBpID4gMDsgaS0tKQotKwkJaWYgKCEoZWxmX2luZm8ua2Vybl92YWRkcl9zdGFydCAmICgxVUwgPDwgaSkpKQotKwkJCWJyZWFrOwotKwotKwlpZiAoaSA8PSAwKQotKwkJcmV0dXJuIFVJTlQ2NF9NQVg7Ci0rCWVsc2UKLSsJCXJldHVybiBVSU5UNjRfTUFYIDw8IGk7Ci0rfQotKwotIC8qCi0gICogaW9tZW1fcmFuZ2VfY2FsbGJhY2soKSAtIGNhbGxiYWNrIGNhbGxlZCBmb3IgZWFjaCBpb21lbSByZWdpb24KLSAgKiBAZGF0YTogbm90IHVzZWQKLUBAIC02Miw2ICs5NSwxMCBAQCBzdGF0aWMgaW50IGlvbWVtX3JhbmdlX2NhbGxiYWNrKHZvaWQgKlVOVVNFRChkYXRhKSwgaW50IFVOVVNFRChuciksCi0gCWVsc2UgaWYgKHN0cm5jbXAoc3RyLCBTWVNURU1fUkFNLCBzdHJsZW4oU1lTVEVNX1JBTSkpID09IDApCi0gCQlyZXR1cm4gbWVtX3JlZ2lvbnNfYWRkKCZjcmFzaF9tZW1vcnlfcmducywKLSAJCQkJICAgICAgIGJhc2UsIGxlbmd0aCwgUkFOR0VfUkFNKTsKLSsJZWxzZSBpZiAoc3RybmNtcChzdHIsIEtFUk5FTF9DT0RFLCBzdHJsZW4oS0VSTkVMX0NPREUpKSA9PSAwKQotKwkJZWxmX2luZm8ua2Vybl9wYWRkcl9zdGFydCA9IGJhc2U7Ci0rCWVsc2UgaWYgKHN0cm5jbXAoc3RyLCBLRVJORUxfREFUQSwgc3RybGVuKEtFUk5FTF9EQVRBKSkgPT0gMCkKLSsJCWVsZl9pbmZvLmtlcm5fc2l6ZSA9IGJhc2UgKyBsZW5ndGggLSBlbGZfaW5mby5rZXJuX3BhZGRyX3N0YXJ0OwotIAotIAlyZXR1cm4gMDsKLSB9Ci1AQCAtMTE1LDUgKzE1Miw2NCBAQCBzdGF0aWMgaW50IGNyYXNoX2dldF9tZW1vcnlfcmFuZ2VzKHZvaWQpCi0gCWRiZ3ByaW50X21lbV9yYW5nZSgiQ29yZWR1bXAgbWVtb3J5IHJhbmdlcyIsCi0gCQkJICAgY3Jhc2hfbWVtb3J5X3JnbnMucmFuZ2VzLCBjcmFzaF9tZW1vcnlfcmducy5zaXplKTsKLSAKLSsJLyoKLSsJICogRm9yIGFkZGl0aW9uYWwga2VybmVsIGNvZGUvZGF0YSBzZWdtZW50LgotKwkgKiBrZXJuX3BhZGRyX3N0YXJ0L2tlcm5fc2l6ZSBhcmUgZGV0ZXJtaW5lZCBpbiBpb21lbV9yYW5nZV9jYWxsYmFjawotKwkgKi8KLSsJZWxmX2luZm8ua2Vybl92YWRkcl9zdGFydCA9IGdldF9rZXJuZWxfc3ltKCJfdGV4dCIpOwotKwlpZiAoIWVsZl9pbmZvLmtlcm5fdmFkZHJfc3RhcnQpCi0rCQllbGZfaW5mby5rZXJuX3ZhZGRyX3N0YXJ0ID0gVUlOVDY0X01BWDsKLSsKLSsJcmV0dXJuIDA7Ci0rfQotKwotKy8qCi0rICogbG9hZF9jcmFzaGR1bXBfc2VnbWVudHMoKSAtIGxvYWQgdGhlIGVsZiBjb3JlIGhlYWRlcgotKyAqIEBpbmZvOiBrZXhlYyBpbmZvIHN0cnVjdHVyZQotKyAqCi0rICogVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGFuZCBsb2FkcyBhbiBhZGRpdGlvbmFsIHNlZ21lbnQgb2YgZWxmIGNvcmUgaGVhZGVyCi0rIDogd2hpY2ggaXMgdXNlZCB0byBjb25zdHJ1Y3QgL3Byb2Mvdm1jb3JlIG9uIGNyYXNoIGR1bXAga2VybmVsLgotKyAqCi0rICogUmV0dXJuIDAgaW4gY2FzZSBvZiBzdWNjZXNzIGFuZCAtMSBpbiBjYXNlIG9mIGVycm9yLgotKyAqLwotKwotK2ludCBsb2FkX2NyYXNoZHVtcF9zZWdtZW50cyhzdHJ1Y3Qga2V4ZWNfaW5mbyAqaW5mbykKLSt7Ci0rCXVuc2lnbmVkIGxvbmcgZWxmY29yZWhkcjsKLSsJdW5zaWduZWQgbG9uZyBidWZzejsKLSsJdm9pZCAqYnVmOwotKwlpbnQgZXJyOwotKwotKwkvKgotKwkgKiBGaXJzdCBmZXRjaCBhbGwgdGhlIG1lbW9yeSAoUkFNKSByYW5nZXMgdGhhdCB3ZSBhcmUgZ29pbmcgdG8KLSsJICogcGFzcyB0byB0aGUgY3Jhc2ggZHVtcCBrZXJuZWwgZHVyaW5nIHBhbmljLgotKwkgKi8KLSsKLSsJZXJyID0gY3Jhc2hfZ2V0X21lbW9yeV9yYW5nZXMoKTsKLSsKLSsJaWYgKGVycikKLSsJCXJldHVybiBlcnI7Ci0rCi0rCWVsZl9pbmZvLnBhZ2Vfb2Zmc2V0ID0gZ2V0X2tlcm5lbF9wYWdlX29mZnNldCgpOwotKwlkYmdwcmludGYoIiVzOiBwYWdlX29mZnNldDogICAlMDE2bGx4XG4iLCBfX2Z1bmNfXywKLSsJCQllbGZfaW5mby5wYWdlX29mZnNldCk7Ci0rCi0rCWVyciA9IGNyYXNoX2NyZWF0ZV9lbGY2NF9oZWFkZXJzKGluZm8sICZlbGZfaW5mbywKLSsJCQljcmFzaF9tZW1vcnlfcmducy5yYW5nZXMsIGNyYXNoX21lbW9yeV9yZ25zLnNpemUsCi0rCQkJJmJ1ZiwgJmJ1ZnN6LCBFTEZfQ09SRV9IRUFERVJfQUxJR04pOwotKwotKwlpZiAoZXJyKQotKwkJcmV0dXJuIGVycjsKLSsKLSsJZWxmY29yZWhkciA9IGFkZF9idWZmZXJfcGh5c192aXJ0KGluZm8sIGJ1ZiwgYnVmc3osIGJ1ZnN6LCAwLAotKwkJY3Jhc2hfcmVzZXJ2ZWRfbWVtLnN0YXJ0LCBjcmFzaF9yZXNlcnZlZF9tZW0uZW5kLAotKwkJLTEsIDApOwotKwotKwllbGZjb3JlaGRyX21lbS5zdGFydCA9IGVsZmNvcmVoZHI7Ci0rCWVsZmNvcmVoZHJfbWVtLmVuZCA9IGVsZmNvcmVoZHIgKyBidWZzeiAtIDE7Ci0rCi0rCWRiZ3ByaW50ZigiJXM6IGVsZmNvcmVoZHIgMHglbGx4LTB4JWxseFxuIiwgX19mdW5jX18sCi0rCQkJZWxmY29yZWhkcl9tZW0uc3RhcnQsIGVsZmNvcmVoZHJfbWVtLmVuZCk7Ci0rCi0gCXJldHVybiAwOwotIH0KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5oIGIva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuaAotaW5kZXggMDdhMGVkMC4uZGE3NWEyZCAxMDA2NDQKLS0tLSBhL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmgKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmgKLUBAIC0xOCw1ICsxOCw4IEBACi0gCi0gZXh0ZXJuIHN0cnVjdCBtZW1vcnlfcmFuZ2VzIHVzYWJsZW1lbV9yZ25zOwotIGV4dGVybiBzdHJ1Y3QgbWVtb3J5X3JhbmdlIGNyYXNoX3Jlc2VydmVkX21lbTsKLStleHRlcm4gc3RydWN0IG1lbW9yeV9yYW5nZSBlbGZjb3JlaGRyX21lbTsKLSsKLStleHRlcm4gaW50IGxvYWRfY3Jhc2hkdW1wX3NlZ21lbnRzKHN0cnVjdCBrZXhlY19pbmZvICppbmZvKTsKLSAKLSAjZW5kaWYgLyogQ1JBU0hEVU1QX0FSTTY0X0ggKi8KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2lvbWVtLmggYi9rZXhlYy9hcmNoL2FybTY0L2lvbWVtLmgKLWluZGV4IDIwY2RhODcuLmQ0ODY0YmIgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2lvbWVtLmgKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQvaW9tZW0uaAotQEAgLTIsNiArMiw4IEBACi0gI2RlZmluZSBJT01FTV9ICi0gCi0gI2RlZmluZSBTWVNURU1fUkFNCQkiU3lzdGVtIFJBTVxuIgotKyNkZWZpbmUgS0VSTkVMX0NPREUJCSJLZXJuZWwgY29kZVxuIgotKyNkZWZpbmUgS0VSTkVMX0RBVEEJCSJLZXJuZWwgZGF0YVxuIgotICNkZWZpbmUgQ1JBU0hfS0VSTkVMCQkiQ3Jhc2gga2VybmVsXG4iCi0gI2RlZmluZSBJT01FTV9SRVNFUlZFRAkJInJlc2VydmVkXG4iCi0gCi1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1lbGYtYXJtNjQuYyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtZWxmLWFybTY0LmMKLWluZGV4IGRhZjhiZjAuLmM3MGEzN2EgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jCi0rKysgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jCi1AQCAtMTE5LDYgKzExOSwxNiBAQCBpbnQgZWxmX2FybTY0X2xvYWQoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICprZXJuZWxfYnVmLAotIAlkYmdwcmludGYoIiVzOiBQRSBmb3JtYXQ6ICAgICAgJXNcbiIsIF9fZnVuY19fLAotIAkJKGFybTY0X2hlYWRlcl9jaGVja19wZV9zaWcoaGVhZGVyKSA/ICJ5ZXMiIDogIm5vIikpOwotIAotKwlpZiAoaW5mby0+a2V4ZWNfZmxhZ3MgJiBLRVhFQ19PTl9DUkFTSCkgewotKwkJLyogY3JlYXRlIGFuZCBpbml0aWFsaXplIGVsZiBjb3JlIGhlYWRlciBzZWdtZW50ICovCi0rCQlyZXN1bHQgPSBsb2FkX2NyYXNoZHVtcF9zZWdtZW50cyhpbmZvKTsKLSsJCWlmIChyZXN1bHQpIHsKLSsJCQlkYmdwcmludGYoIiVzOiBDcmVhdGluZyBlZmxjb3JlaGRyIGZhaWxlZC5cbiIsCi0rCQkJCQkJCQlfX2Z1bmNfXyk7Ci0rCQkJZ290byBleGl0OwotKwkJfQotKwl9Ci0rCi0gCS8qIGxvYWQgdGhlIGtlcm5lbCAqLwotIAlyZXN1bHQgPSBlbGZfZXhlY19sb2FkKCZlaGRyLCBpbmZvKTsKLSAKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwNi1hcm02NC1rZHVtcC1zZXQtdXAta2VybmVsLWltYWdlLXNlZ21lbnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA2LWFybTY0LWtkdW1wLXNldC11cC1rZXJuZWwtaW1hZ2Utc2VnbWVudC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDE0OTU1MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA2LWFybTY0LWtkdW1wLXNldC11cC1rZXJuZWwtaW1hZ2Utc2VnbWVudC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNyArMCwwIEBACi1Gcm9tIDQwNzljOTNhYzU0NTNlZjVmNzg4OWFiNjQ5MjBjMWU5NDI3NjkwZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBS0FTSEkgVGFrYWhpcm8gPHRha2FoaXJvLmFrYXNoaUBsaW5hcm8ub3JnPgotRGF0ZTogVHVlLCAxNyBGZWIgMjAxNSAxNjowNjo1NSArMDkwMAotU3ViamVjdDogW1BBVENIIDYvOV0gYXJtNjQ6IGtkdW1wOiBzZXQgdXAga2VybmVsIGltYWdlIHNlZ21lbnQKLQotT24gYXJtNjQsIHdlIGNhbiB1c2UgdGhlIHNhbWUga2VybmVsIGltYWdlIGFzIDFzdCBrZXJuZWwsIGJ1dAotd2UgaGF2ZSB0byBtb2RpZnkgdGhlIGVudHJ5IHBvaW50IGFzIHdlbGwgYXMgc2VnbWVudHMnIGFkZHJlc3NlcwotaW4gdGhlIGtlcm5lbCdzIGVsZiBoZWFkZXIgaW4gb3JkZXIgdG8gbG9hZCB0aGVtIGludG8gY29ycmVjdCBwbGFjZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmxpbmFyby5vcmcvcGVvcGxlL3Rha2FoaXJvLmFrYXNoaS9rZXhlYy10b29scy5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IEFLQVNISSBUYWthaGlybyA8dGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotLS0tCi0ga2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYyB8IDIzICsrKysrKysrKysrKysrKysrKysrKysrCi0ga2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuaCB8ICAxICsKLSBrZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMgICAgIHwgMjUgKysrKysrKysrKysrKysrKysrKystLS0tLQotIGtleGVjL2FyY2gvYXJtNjQva2V4ZWMtZWxmLWFybTY0LmMgfCAxMCArKysrKysrKystCi0gNCBmaWxlcyBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYyBiL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmMKLWluZGV4IDgzNDYxMzEuLjk1MTczMjkgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jCi0rKysgYi9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jCi1AQCAtMjEzLDMgKzIxMywyNiBAQCBpbnQgbG9hZF9jcmFzaGR1bXBfc2VnbWVudHMoc3RydWN0IGtleGVjX2luZm8gKmluZm8pCi0gCi0gCXJldHVybiAwOwotIH0KLSsKLSsvKgotKyAqIGVfZW50cnkgYW5kIHBfcGFkZHIgYXJlIGFjdHVhbGx5IGluIHZpcnR1YWwgYWRkcmVzcyBzcGFjZS4KLSsgKiBUaG9zZSB2YWx1ZXMgd2lsbCBiZSB0cmFuc2xhdGVkIHRvIHBoeXNjYWwgYWRkcmVzc2VzIGJ5Ci0rICogdXNpbmcgdmlydF90b19waHlzKCkuCi0rICogU28gbGV0J3MgZ2V0IHJlYWR5IGZvciBsYXRlciB1c2Ugc28gdGhlIG1lbW9yeSBiYXNlIChwaHlzX29mZnNldCkKLSsgKiB3aWxsIGJlIGNvcnJlY3RseSByZXBsYWNlZCB3aXRoIGNyYXNoX3Jlc2VydmVkX21lbS5zdGFydC4KLSsgKi8KLSt2b2lkIG1vZGlmeV9laGRyX2Zvcl9jcmFzaGR1bXAoc3RydWN0IG1lbV9laGRyICplaGRyKQotK3sKLSsJc3RydWN0IG1lbV9waGRyICpwaGRyOwotKwlpbnQgaTsKLSsKLSsJZWhkci0+ZV9lbnRyeSArPSAtIGFybTY0X21lbS5waHlzX29mZnNldCArIGNyYXNoX3Jlc2VydmVkX21lbS5zdGFydDsKLSsKLSsJZm9yIChpID0gMDsgaSA8IGVoZHItPmVfcGhudW07IGkrKykgewotKwkJcGhkciA9ICZlaGRyLT5lX3BoZHJbaV07Ci0rCQlpZiAocGhkci0+cF90eXBlICE9IFBUX0xPQUQpCi0rCQkJY29udGludWU7Ci0rCQlwaGRyLT5wX3BhZGRyICs9Ci0rCQkJKC1hcm02NF9tZW0ucGh5c19vZmZzZXQgKyBjcmFzaF9yZXNlcnZlZF9tZW0uc3RhcnQpOwotKwl9Ci0rfQotZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmggYi9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5oCi1pbmRleCBkYTc1YTJkLi4zODJmNTcxIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuaAotKysrIGIva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuaAotQEAgLTIxLDUgKzIxLDYgQEAgZXh0ZXJuIHN0cnVjdCBtZW1vcnlfcmFuZ2UgY3Jhc2hfcmVzZXJ2ZWRfbWVtOwotIGV4dGVybiBzdHJ1Y3QgbWVtb3J5X3JhbmdlIGVsZmNvcmVoZHJfbWVtOwotIAotIGV4dGVybiBpbnQgbG9hZF9jcmFzaGR1bXBfc2VnbWVudHMoc3RydWN0IGtleGVjX2luZm8gKmluZm8pOwotK2V4dGVybiB2b2lkIG1vZGlmeV9laGRyX2Zvcl9jcmFzaGR1bXAoc3RydWN0IG1lbV9laGRyICplaGRyKTsKLSAKLSAjZW5kaWYgLyogQ1JBU0hEVU1QX0FSTTY0X0ggKi8KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKLWluZGV4IDhhYzgxMWQuLmNlYzRlNDEgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYwotQEAgLTMwNywxMiArMzA3LDI3IEBAIHVuc2lnbmVkIGxvbmcgYXJtNjRfbG9jYXRlX2tlcm5lbF9zZWdtZW50KHN0cnVjdCBrZXhlY19pbmZvICppbmZvKQotIHsKLSAJdW5zaWduZWQgbG9uZyBob2xlOwotIAotLQlob2xlID0gbG9jYXRlX2hvbGUoaW5mbywKLS0JCWFybTY0X21lbS50ZXh0X29mZnNldCArIGFybTY0X21lbS5pbWFnZV9zaXplLAotLQkJTWlCKDIpLCAwLCBVTE9OR19NQVgsIDEpOwotKwlpZiAoaW5mby0+a2V4ZWNfZmxhZ3MgJiBLRVhFQ19PTl9DUkFTSCkgewotKwkJdW5zaWduZWQgbG9uZyBob2xlX2VuZDsKLSsKLSsJCWhvbGUgPSAoY3Jhc2hfcmVzZXJ2ZWRfbWVtLnN0YXJ0IDwgbWVtX21pbiA/Ci0rCQkJCW1lbV9taW4gOiBjcmFzaF9yZXNlcnZlZF9tZW0uc3RhcnQpOwotKwkJaG9sZSA9IF9BTElHTl9VUChob2xlLCBNaUIoMikpOwotKwkJaG9sZV9lbmQgPSBob2xlICsgYXJtNjRfbWVtLnRleHRfb2Zmc2V0ICsgYXJtNjRfbWVtLmltYWdlX3NpemU7Ci0rCi0rCQlpZiAoKGhvbGVfZW5kID4gbWVtX21heCkgfHwKLSsJCSAgICAoaG9sZV9lbmQgPiBjcmFzaF9yZXNlcnZlZF9tZW0uZW5kKSkgewotKwkJCWRiZ3ByaW50ZigiJXM6IENyYXNoIGtlcm5lbCBvdXQgb2YgcmFuZ2VcbiIsIF9fZnVuY19fKTsKLSsJCQlob2xlID0gVUxPTkdfTUFYOwotKwkJfQotKwl9IGVsc2UgewotKwkJaG9sZSA9IGxvY2F0ZV9ob2xlKGluZm8sCi0rCQkJYXJtNjRfbWVtLnRleHRfb2Zmc2V0ICsgYXJtNjRfbWVtLmltYWdlX3NpemUsCi0rCQkJTWlCKDIpLCAwLCBVTE9OR19NQVgsIDEpOwotIAotLQlpZiAoaG9sZSA9PSBVTE9OR19NQVgpCi0tCQlkYmdwcmludGYoIiVzOiBsb2NhdGVfaG9sZSBmYWlsZWRcbiIsIF9fZnVuY19fKTsKLSsJCWlmIChob2xlID09IFVMT05HX01BWCkKLSsJCQlkYmdwcmludGYoIiVzOiBsb2NhdGVfaG9sZSBmYWlsZWRcbiIsIF9fZnVuY19fKTsKLSsJfQotIAotIAlyZXR1cm4gaG9sZTsKLSB9Ci1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1lbGYtYXJtNjQuYyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtZWxmLWFybTY0LmMKLWluZGV4IGM3MGEzN2EuLjg0MmNlMjEgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jCi0rKysgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jCi1AQCAtOSw2ICs5LDcgQEAKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2VsZi5oPgotIAotKyNpbmNsdWRlICJjcmFzaGR1bXAtYXJtNjQuaCIKLSAjaW5jbHVkZSAia2V4ZWMtYXJtNjQuaCIKLSAjaW5jbHVkZSAia2V4ZWMtZWxmLmgiCi0gI2luY2x1ZGUgImtleGVjLXN5c2NhbGwuaCIKLUBAIC0xMDUsNyArMTA2LDggQEAgaW50IGVsZl9hcm02NF9sb2FkKGludCBhcmdjLCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqa2VybmVsX2J1ZiwKLSAJfQotIAotIAlhcm02NF9tZW0udnBfb2Zmc2V0ID0gX0FMSUdOX0RPV04oZWhkci5lX2VudHJ5LCBNaUIoMikpOwotLQlhcm02NF9tZW0udnBfb2Zmc2V0IC09IGtlcm5lbF9zZWdtZW50IC0gZ2V0X3BoeXNfb2Zmc2V0KCk7Ci0rCWlmICghKGluZm8tPmtleGVjX2ZsYWdzICYgS0VYRUNfT05fQ1JBU0gpKQotKwkJYXJtNjRfbWVtLnZwX29mZnNldCAtPSBrZXJuZWxfc2VnbWVudCAtIGdldF9waHlzX29mZnNldCgpOwotIAotIAlkYmdwcmludGYoIiVzOiBrZXJuZWxfc2VnbWVudDogJTAxNmx4XG4iLCBfX2Z1bmNfXywga2VybmVsX3NlZ21lbnQpOwotIAlkYmdwcmludGYoIiVzOiB0ZXh0X29mZnNldDogICAgJTAxNmx4XG4iLCBfX2Z1bmNfXywKLUBAIC0xMjcsNiArMTI5LDEyIEBAIGludCBlbGZfYXJtNjRfbG9hZChpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKmtlcm5lbF9idWYsCi0gCQkJCQkJCQlfX2Z1bmNfXyk7Ci0gCQkJZ290byBleGl0OwotIAkJfQotKwotKwkJLyoKLSsJCSAqIG9mZnNldCBhZGRyZXNzZXMgaW4gb3JkZXIgdG8gZml0IHZtbGludXgKLSsJCSAqIChlbGZfZXhlYykgaW50byBjcmFzaCBrZXJuZWwncyBtZW1vcnkKLSsJCSAqLwotKwkJbW9kaWZ5X2VoZHJfZm9yX2NyYXNoZHVtcCgmZWhkcik7Ci0gCX0KLSAKLSAJLyogbG9hZCB0aGUga2VybmVsICovCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDctYXJtNjQta2R1bXAtc2V0LXVwLW90aGVyLXNlZ21lbnRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwNy1hcm02NC1rZHVtcC1zZXQtdXAtb3RoZXItc2VnbWVudHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3NDU0NjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwNy1hcm02NC1rZHVtcC1zZXQtdXAtb3RoZXItc2VnbWVudHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDA3YWQxNGUxMjY2NTIyMWQ3NTRmZGU4ZTQ3YzMyYWMxOGMyNDU4NmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBS0FTSEkgVGFrYWhpcm8gPHRha2FoaXJvLmFrYXNoaUBsaW5hcm8ub3JnPgotRGF0ZTogRnJpLCAzMSBKdWwgMjAxNSAyMDowMTozOSArMDkwMAotU3ViamVjdDogW1BBVENIIDcvOV0gYXJtNjQ6IGtkdW1wOiBzZXQgdXAgb3RoZXIgc2VnbWVudHMKLQotV2UgbWFrZSBzdXJlIHRoYXQgYWxsIHRoZSBvdGhlciBzZWdtZW50cywgaW5pdHJkIGFuZCBkZXZpY2UtdHJlZSBibG9iLAotYWxzbyBiZSBsb2FkZWQgaW50byB0aGUgcmVzZXJ2ZWQgbWVtb3J5IG9mIGNyYXNoIGR1bXAga2VybmVsLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5saW5hcm8ub3JnL3Blb3BsZS90YWthaGlyby5ha2FzaGkva2V4ZWMtdG9vbHMuZ2l0XQotCi1TaWduZWQtb2ZmLWJ5OiBBS0FTSEkgVGFrYWhpcm8gPHRha2FoaXJvLmFrYXNoaUBsaW5hcm8ub3JnPgotU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGtleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYyB8IDUgKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKLWluZGV4IGNlYzRlNDEuLjc4YTAwMzUgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYwotQEAgLTM3NCw3ICszNzQsMTAgQEAgaW50IGFybTY0X2xvYWRfb3RoZXJfc2VnbWVudHMoc3RydWN0IGtleGVjX2luZm8gKmluZm8sCi0gCS8qIFB1dCB0aGUgb3RoZXIgc2VnbWVudHMgYWZ0ZXIgdGhlIGltYWdlLiAqLwotIAotIAlob2xlX21pbiA9IGltYWdlX2Jhc2UgKyBhcm02NF9tZW0uaW1hZ2Vfc2l6ZTsKLS0JaG9sZV9tYXggPSBVTE9OR19NQVg7Ci0rCWlmIChpbmZvLT5rZXhlY19mbGFncyAmIEtFWEVDX09OX0NSQVNIKQotKwkJaG9sZV9tYXggPSBjcmFzaF9yZXNlcnZlZF9tZW0uZW5kOwotKwllbHNlCi0rCQlob2xlX21heCA9IFVMT05HX01BWDsKLSAKLSAJaWYgKGFybTY0X29wdHMuaW5pdHJkKSB7Ci0gCQlpbml0cmRfYnVmID0gc2x1cnBfZmlsZShhcm02NF9vcHRzLmluaXRyZCwgJmluaXRyZF9zaXplKTsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwOC1hcm02NC1rZHVtcC1hZGQtRFQtcHJvcGVydGllcy10by1jcmFzaC1kdW1wLWtlcm5lbC1zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwOC1hcm02NC1rZHVtcC1hZGQtRFQtcHJvcGVydGllcy10by1jcmFzaC1kdW1wLWtlcm5lbC1zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWMzZDg1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDgtYXJtNjQta2R1bXAtYWRkLURULXByb3BlcnRpZXMtdG8tY3Jhc2gtZHVtcC1rZXJuZWwtcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MCArMCwwIEBACi1Gcm9tIDIzYmY3YWMxODljYzNiODdjZWI5ZDFkM2I2OWI1YzQ4MTUzNTRhZGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBS0FTSEkgVGFrYWhpcm8gPHRha2FoaXJvLmFrYXNoaUBsaW5hcm8ub3JnPgotRGF0ZTogV2VkLCAyNyBKYW4gMjAxNiAxMzozODozOSArMDkwMAotU3ViamVjdDogW1BBVENIIDgvOV0gYXJtNjQ6IGtkdW1wOiBhZGQgRFQgcHJvcGVydGllcyB0byBjcmFzaCBkdW1wIGtlcm5lbCdzCi0gZHRiCi0KLVdlIHBhc3MgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIHRvIGNyYXNoIGR1bXAga2VybmVsOgotbGludXgsZWxmY29yZWhkcjogZWxmIGNvcmUgaGVhZGVyIHNlZ21lbnQsCi0JCSAgc2FtZSBhcyAiZWxmY29yZWhkcj0iIGtlcm5lbCBwYXJhbWV0ZXIgb24gb3RoZXIgYXJjaHMKLWxpbnV4LHVzYWJsZS1tZW1vcnktcmFuZ2U6IHVzYWJsZSBtZW1vcnkgcmVzZXJ2ZWQgZm9yIGNyYXNoIGR1bXAga2VybmVsCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmxpbmFyby5vcmcvcGVvcGxlL3Rha2FoaXJvLmFrYXNoaS9rZXhlYy10b29scy5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IEFLQVNISSBUYWthaGlybyA8dGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotLS0tCi0ga2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5jICAgICB8IDc2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCi0ga2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1lbGYtYXJtNjQuYyB8ICA1IC0tLQotIDIgZmlsZXMgY2hhbmdlZCwgNzEgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKLWluZGV4IDc4YTAwMzUuLmE4ZmI2NGYgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKLSsrKyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYwotQEAgLTEyOCw5ICsxMjgsNiBAQCBpbnQgYXJjaF9wcm9jZXNzX29wdGlvbnMoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJY2FzZSBPUFRfSU5JVFJEOgotIAkJCWFybTY0X29wdHMuaW5pdHJkID0gb3B0YXJnOwotIAkJCWJyZWFrOwotLQkJY2FzZSBPUFRfUEFOSUM6Ci0tCQkJZGllKCJsb2FkLXBhbmljICgtcCkgbm90IHN1cHBvcnRlZCIpOwotLQkJCWJyZWFrOwotIAkJZGVmYXVsdDoKLSAJCQlicmVhazsgLyogSWdub3JlIGNvcmUgYW5kIHVua25vd24gb3B0aW9ucy4gKi8KLSAJCX0KLUBAIC0yODUsOCArMjgyLDEyIEBAIG9uX3N1Y2Nlc3M6Ci0gICogc2V0dXBfMm5kX2R0YiAtIFNldHVwIHRoZSAybmQgc3RhZ2Uga2VybmVsJ3MgZHRiLgotICAqLwotIAotLXN0YXRpYyBpbnQgc2V0dXBfMm5kX2R0YihzdHJ1Y3QgZHRiICpkdGIsIGNoYXIgKmNvbW1hbmRfbGluZSkKLStzdGF0aWMgaW50IHNldHVwXzJuZF9kdGIoc3RydWN0IGR0YiAqZHRiLCBjaGFyICpjb21tYW5kX2xpbmUsIGludCBvbl9jcmFzaCkKLSB7Ci0rCWNoYXIgKm5ld19idWY7Ci0rCWludCBuZXdfc2l6ZTsKLSsJaW50IG5vZGVvZmZzZXQ7Ci0rCXVpbnQ2NF90IHJhbmdlWzJdOwotIAlpbnQgcmVzdWx0OwotIAotIAlyZXN1bHQgPSBmZHRfY2hlY2tfaGVhZGVyKGR0Yi0+YnVmKTsKLUBAIC0yOTgsOCArMjk5LDcyIEBAIHN0YXRpYyBpbnQgc2V0dXBfMm5kX2R0YihzdHJ1Y3QgZHRiICpkdGIsIGNoYXIgKmNvbW1hbmRfbGluZSkKLSAKLSAJcmVzdWx0ID0gc2V0X2Jvb3RhcmdzKGR0YiwgY29tbWFuZF9saW5lKTsKLSAKLSsJLyogcmVtb3ZlIHRob3NlIGFueXdheSAqLwotKwlub2Rlb2Zmc2V0ID0gZmR0X3BhdGhfb2Zmc2V0KGR0Yi0+YnVmLCAiL2Nob3NlbiIpOwotKwlmZHRfZGVscHJvcChkdGItPmJ1Ziwgbm9kZW9mZnNldCwgImxpbnV4LGNyYXNoa2VybmVsLWJhc2UiKTsKLSsJZmR0X2RlbHByb3AoZHRiLT5idWYsIG5vZGVvZmZzZXQsICJsaW51eCxjcmFzaGtlcm5lbC1zaXplIik7Ci0rCi0rCWlmIChvbl9jcmFzaCkgewotKwkJbm9kZW9mZnNldCA9IGZkdF9wYXRoX29mZnNldChkdGItPmJ1ZiwgIi9jaG9zZW4iKTsKLSsJCWZkdF9kZWxwcm9wKGR0Yi0+YnVmLCBub2Rlb2Zmc2V0LCAibGludXgsZWxmY29yZWhkciIpOwotKwkJZmR0X2RlbHByb3AoZHRiLT5idWYsIG5vZGVvZmZzZXQsICJsaW51eCx1c2FibGUtbWVtb3J5LXJhbmdlIik7Ci0rCQluZXdfc2l6ZSA9IGZkdF90b3RhbHNpemUoZHRiLT5idWYpCi0rCQkJKyAyICogKHNpemVvZihzdHJ1Y3QgZmR0X3Byb3BlcnR5KQotKwkJCQkJKyBGRFRfVEFHQUxJR04oc2l6ZW9mKHJhbmdlKSkpCi0rCQkJKyBzdHJsZW4oImxpbnV4LGVsZmNvcmVoZHIiKSArIDEKLSsJCQkrIHN0cmxlbigibGludXgsdXNhYmxlLW1lbW9yeS1yYW5nZSIpICsgMTsKLSsKLSsJCW5ld19idWYgPSB4bWFsbG9jKG5ld19zaXplKTsKLSsJCXJlc3VsdCA9IGZkdF9vcGVuX2ludG8oZHRiLT5idWYsIG5ld19idWYsIG5ld19zaXplKTsKLSsJCWlmIChyZXN1bHQpIHsKLSsJCQlkYmdwcmludGYoIiVzOiBmZHRfb3Blbl9pbnRvIGZhaWxlZDogJXNcbiIsIF9fZnVuY19fLAotKwkJCQlmZHRfc3RyZXJyb3IocmVzdWx0KSk7Ci0rCQkJcmVzdWx0ID0gLUVOT1NQQzsKLSsJCQlnb3RvIG9uX2Vycm9yOwotKwkJfQotKwotKwkJcmFuZ2VbMF0gPSBjcHVfdG9fYmU2NChlbGZjb3JlaGRyX21lbS5zdGFydCk7Ci0rCQlyYW5nZVsxXSA9IGNwdV90b19iZTY0KGVsZmNvcmVoZHJfbWVtLmVuZAotKwkJCQktIGVsZmNvcmVoZHJfbWVtLnN0YXJ0ICsgMSk7Ci0rCQlub2Rlb2Zmc2V0ID0gZmR0X3BhdGhfb2Zmc2V0KG5ld19idWYsICIvY2hvc2VuIik7Ci0rCQlyZXN1bHQgPSBmZHRfc2V0cHJvcChuZXdfYnVmLCBub2Rlb2Zmc2V0LCAibGludXgsZWxmY29yZWhkciIsCi0rCQkJCSh2b2lkICopcmFuZ2UsIHNpemVvZihyYW5nZSkpOwotKwkJaWYgKHJlc3VsdCkgewotKwkJCWRiZ3ByaW50ZigiJXM6IGZkdF9zZXRwcm9wIGZhaWxlZDogJXNcbiIsIF9fZnVuY19fLAotKwkJCQlmZHRfc3RyZXJyb3IocmVzdWx0KSk7Ci0rCQkJcmVzdWx0ID0gLUVJTlZBTDsKLSsJCQlnb3RvIG9uX2Vycm9yOwotKwkJfQotKwotKwkJcmFuZ2VbMF0gPSBjcHVfdG9fYmU2NChjcmFzaF9yZXNlcnZlZF9tZW0uc3RhcnQpOwotKwkJcmFuZ2VbMV0gPSBjcHVfdG9fYmU2NChjcmFzaF9yZXNlcnZlZF9tZW0uZW5kCi0rCQkJCS0gY3Jhc2hfcmVzZXJ2ZWRfbWVtLnN0YXJ0ICsgMSk7Ci0rCQlub2Rlb2Zmc2V0ID0gZmR0X3BhdGhfb2Zmc2V0KG5ld19idWYsICIvY2hvc2VuIik7Ci0rCQlyZXN1bHQgPSBmZHRfc2V0cHJvcChuZXdfYnVmLCBub2Rlb2Zmc2V0LAotKwkJCQkibGludXgsdXNhYmxlLW1lbW9yeS1yYW5nZSIsCi0rCQkJCSh2b2lkICopcmFuZ2UsIHNpemVvZihyYW5nZSkpOwotKwkJaWYgKHJlc3VsdCkgewotKwkJCWRiZ3ByaW50ZigiJXM6IGZkdF9zZXRwcm9wIGZhaWxlZDogJXNcbiIsIF9fZnVuY19fLAotKwkJCQlmZHRfc3RyZXJyb3IocmVzdWx0KSk7Ci0rCQkJcmVzdWx0ID0gLUVJTlZBTDsKLSsJCQlnb3RvIG9uX2Vycm9yOwotKwkJfQotKwotKwkJZmR0X3BhY2sobmV3X2J1Zik7Ci0rCQlkdGItPmJ1ZiA9IG5ld19idWY7Ci0rCQlkdGItPnNpemUgPSBmZHRfdG90YWxzaXplKG5ld19idWYpOwotKwl9Ci0rCi0gCWR1bXBfcmVzZXJ2ZW1hcChkdGIpOwotIAotKwotKwlyZXR1cm4gcmVzdWx0OwotKwotK29uX2Vycm9yOgotKwlmcHJpbnRmKHN0ZGVyciwgImtleGVjOiAlcyBmYWlsZWQuXG4iLCBfX2Z1bmNfXyk7Ci0rCWlmIChuZXdfYnVmKQotKwkJZnJlZShuZXdfYnVmKTsKLSsKLSAJcmV0dXJuIHJlc3VsdDsKLSB9Ci0gCi1AQCAtMzY2LDcgKzQzMSw4IEBAIGludCBhcm02NF9sb2FkX290aGVyX3NlZ21lbnRzKHN0cnVjdCBrZXhlY19pbmZvICppbmZvLAotIAkJfQotIAl9Ci0gCi0tCXJlc3VsdCA9IHNldHVwXzJuZF9kdGIoJmR0YiwgY29tbWFuZF9saW5lKTsKLSsJcmVzdWx0ID0gc2V0dXBfMm5kX2R0YigmZHRiLCBjb21tYW5kX2xpbmUsCi0rCQkJaW5mby0+a2V4ZWNfZmxhZ3MgJiBLRVhFQ19PTl9DUkFTSCk7Ci0gCi0gCWlmIChyZXN1bHQpCi0gCQlyZXR1cm4gLUVGQUlMRUQ7Ci1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1lbGYtYXJtNjQuYyBiL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtZWxmLWFybTY0LmMKLWluZGV4IDg0MmNlMjEuLmIxN2EzMWEgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jCi0rKysgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jCi1AQCAtNDcsMTEgKzQ3LDYgQEAgaW50IGVsZl9hcm02NF9sb2FkKGludCBhcmdjLCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqa2VybmVsX2J1ZiwKLSAJaW50IHJlc3VsdDsKLSAJaW50IGk7Ci0gCi0tCWlmIChpbmZvLT5rZXhlY19mbGFncyAmIEtFWEVDX09OX0NSQVNIKSB7Ci0tCQlmcHJpbnRmKHN0ZGVyciwgImtleGVjOiBrZHVtcCBub3QgeWV0IHN1cHBvcnRlZCBvbiBhcm02NFxuIik7Ci0tCQlyZXR1cm4gLUVGQUlMRUQ7Ci0tCX0KLS0KLSAJcmVzdWx0ID0gYnVpbGRfZWxmX2V4ZWNfaW5mbyhrZXJuZWxfYnVmLCBrZXJuZWxfc2l6ZSwgJmVoZHIsIDApOwotIAotIAlpZiAocmVzdWx0IDwgMCkgewotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA5LWFybTY0LWtkdW1wLUFkZC1zdXBwb3J0LWZvci1iaW5hcnktaW1hZ2UtZmlsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA5LWFybTY0LWtkdW1wLUFkZC1zdXBwb3J0LWZvci1iaW5hcnktaW1hZ2UtZmlsZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiMWMwMTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwOS1hcm02NC1rZHVtcC1BZGQtc3VwcG9ydC1mb3ItYmluYXJ5LWltYWdlLWZpbGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotRnJvbSA1YTQ5NThmMDFhNzkzYzNlN2Y0NDBmNWJhZTc1NjY2YTQzNDljYzUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUHJhdHl1c2ggQW5hbmQgPHBhbmFuZEByZWRoYXQuY29tPgotRGF0ZTogVGh1LCAxNCBNYXkgMjAxNSAxMToyNTozNyArMDUzMAotU3ViamVjdDogW1BBVENIIDkvOV0gYXJtNjQ6IGtkdW1wOiBBZGQgc3VwcG9ydCBmb3IgYmluYXJ5IGltYWdlIGZpbGVzCi0KLVRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IHRvIHVzZSBiaW5hcnkgaW1hZ2UgaWUgYXJjaC9hcm02NC9ib290L0ltYWdlIHdpdGgKLWtkdW1wLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5saW5hcm8ub3JnL3Blb3BsZS90YWthaGlyby5ha2FzaGkva2V4ZWMtdG9vbHMuZ2l0XQotCi1TaWduZWQtb2ZmLWJ5OiBQcmF0eXVzaCBBbmFuZCA8cGFuYW5kQHJlZGhhdC5jb20+Ci1bdGFrYWhpcm8uYWthc2hpQGxpbmFyby5vcmc6IGEgYml0IHJld29ya2VkXQotU2lnbmVkLW9mZi1ieTogQUtBU0hJIFRha2FoaXJvIDx0YWthaGlyby5ha2FzaGlAbGluYXJvLm9yZz4KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBrZXhlYy9hcmNoL2FybTY0L2tleGVjLWltYWdlLWFybTY0LmMgfCAxMiArKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1pbWFnZS1hcm02NC5jIGIva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1pbWFnZS1hcm02NC5jCi1pbmRleCA5NjBlZDk2Li45ODJlNDMxIDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1pbWFnZS1hcm02NC5jCi0rKysgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWltYWdlLWFybTY0LmMKLUBAIC00LDcgKzQsOSBAQAotIAotICNkZWZpbmUgX0dOVV9TT1VSQ0UKLSAKLSsjaW5jbHVkZSAiY3Jhc2hkdW1wLWFybTY0LmgiCi0gI2luY2x1ZGUgImtleGVjLWFybTY0LmgiCi0rI2luY2x1ZGUgImtleGVjLXN5c2NhbGwuaCIKLSAjaW5jbHVkZSA8bGltaXRzLmg+Ci0gCi0gaW50IGltYWdlX2FybTY0X3Byb2JlKGNvbnN0IGNoYXIgKmtlcm5lbF9idWYsIG9mZl90IGtlcm5lbF9zaXplKQotQEAgLTU4LDYgKzYwLDE2IEBAIGludCBpbWFnZV9hcm02NF9sb2FkKGludCBhcmdjLCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqa2VybmVsX2J1ZiwKLSAJZGJncHJpbnRmKCIlczogUEUgZm9ybWF0OiAgICAgICVzXG4iLCBfX2Z1bmNfXywKLSAJCShhcm02NF9oZWFkZXJfY2hlY2tfcGVfc2lnKGhlYWRlcikgPyAieWVzIiA6ICJubyIpKTsKLSAKLSsJaWYgKGluZm8tPmtleGVjX2ZsYWdzICYgS0VYRUNfT05fQ1JBU0gpIHsKLSsJCS8qIGNyZWF0ZSBhbmQgaW5pdGlhbGl6ZSBlbGYgY29yZSBoZWFkZXIgc2VnbWVudCAqLwotKwkJcmVzdWx0ID0gbG9hZF9jcmFzaGR1bXBfc2VnbWVudHMoaW5mbyk7Ci0rCQlpZiAocmVzdWx0KSB7Ci0rCQkJZGJncHJpbnRmKCIlczogQ3JlYXRpbmcgZWZsY29yZWhkciBmYWlsZWQuXG4iLAotKwkJCQkJCQkJX19mdW5jX18pOwotKwkJCWdvdG8gZXhpdDsKLSsJCX0KLSsJfQotKwotIAkvKiBsb2FkIHRoZSBrZXJuZWwgKi8KLSAJYWRkX3NlZ21lbnRfcGh5c192aXJ0KGluZm8sIGtlcm5lbF9idWYsIGtlcm5lbF9zaXplLAotIAkJCWtlcm5lbF9zZWdtZW50ICsgYXJtNjRfbWVtLnRleHRfb2Zmc2V0LAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy9rZXhlYy1hYXJjaDY0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMva2V4ZWMtYWFyY2g2NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjAzZjU4Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy9rZXhlYy1hYXJjaDY0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODAxICswLDAgQEAKLUZyb206IEdlb2ZmIExldmFuZCA8Z2VvZmZAaW5mcmFkZWFkLm9yZz4KLURhdGU6IE1vbiwgMTUgSnVsIDIwMTMgMjM6MzI6MzYgKzAwMDAgKC0wNzAwKQotU3ViamVjdDogQWRkIGFybTY0IHN1cHBvcnQKLVgtR2l0LVVybDogaHR0cHM6Ly9naXQubGluYXJvLm9yZy9naXR3ZWI/cD1wZW9wbGUlMkZnZW9mZiUyRmtleGVjLXRvb2xzLmdpdDthPWNvbW1pdGRpZmZfcGxhaW47aD1mYmY1YWM2YzJjNzBlYzBmNmRhMmI5ZmY1NjNlNTczOTk5NzUyYzAxCi0KLUFkZCBhcm02NCBzdXBwb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IEdlb2ZmIExldmFuZCA8Z2VvZmZAaW5mcmFkZWFkLm9yZz4KLQotR2V0IHBhdGNoIGZyb206Ci1odHRwczovL2ZlZG9yYXBlb3BsZS5vcmcvfmhydy9hYXJjaDY0L2Zvci1mZWRvcmEva2V4ZWMtYWFyY2g2NC5wYXRjaAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLQotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyAKLSBrZXhlYy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxIAotIGtleGVjL2FyY2gvYXJtNjQvTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAgMTMgKwotIGtleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmMgICAgICB8ICAzMDUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBrZXhlYy9hcmNoL2FybTY0L2luY2x1ZGUvYXJjaC9vcHRpb25zLmggfCAgIDI2ICsrCi0ga2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5jICAgICAgICAgIHwgIDE3NyArKysrKysrKysrKysrKysrKysKLSBrZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmggICAgICAgICAgfCAgIDIwICsrCi0ga2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1lbGYtYXJtNjQuYyAgICAgIHwgIDExNCArKysrKysrKysrKwotIGtleGVjL2tleGVjLXN5c2NhbGwuaCAgICAgICAgICAgICAgICAgICB8ICAgIDkgCi0ga2V4ZWMva2V4ZWMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiAKLSBwdXJnYXRvcnkvYXJjaC9hcm02NC9NYWtlZmlsZSAgICAgICAgICAgfCAgICA3IAotIDExIGZpbGVzIGNoYW5nZWQsIDY3NSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1JbmRleDoga2V4ZWMtdG9vbHMtMi4wLjEwL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGtleGVjLXRvb2xzLTIuMC4xMC5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGtleGVjLXRvb2xzLTIuMC4xMC9jb25maWd1cmUuYWMKLUBAIC0zNiw2ICszNiw5IEBAIGNhc2UgJHRhcmdldF9jcHUgaW4KLSAJCUFSQ0g9InBwYzY0IgotIAkJU1VCQVJDSD0iTEUiCi0gCQk7OwotKwlhYXJjaDY0KiApCi0rCQlBUkNIPSJhcm02NCIKLSsJCTs7Ci0gCWFybSogKQotIAkJQVJDSD0iYXJtIgotIAkJOzsKLUluZGV4OiBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBrZXhlYy10b29scy0yLjAuMTAub3JpZy9rZXhlYy9NYWtlZmlsZQotKysrIGtleGVjLXRvb2xzLTIuMC4xMC9rZXhlYy9NYWtlZmlsZQotQEAgLTcxLDYgKzcxLDcgQEAgS0VYRUNfU1JDUwkJCSs9ICQoJChBUkNIKV9GUzJEVCkKLSAKLSBpbmNsdWRlICQoc3JjZGlyKS9rZXhlYy9hcmNoL2FscGhhL01ha2VmaWxlCi0gaW5jbHVkZSAkKHNyY2Rpcikva2V4ZWMvYXJjaC9hcm0vTWFrZWZpbGUKLStpbmNsdWRlICQoc3JjZGlyKS9rZXhlYy9hcmNoL2FybTY0L01ha2VmaWxlCi0gaW5jbHVkZSAkKHNyY2Rpcikva2V4ZWMvYXJjaC9pMzg2L01ha2VmaWxlCi0gaW5jbHVkZSAkKHNyY2Rpcikva2V4ZWMvYXJjaC9pYTY0L01ha2VmaWxlCi0gaW5jbHVkZSAkKHNyY2Rpcikva2V4ZWMvYXJjaC9tNjhrL01ha2VmaWxlCi1JbmRleDoga2V4ZWMtdG9vbHMtMi4wLjEwL2tleGVjL2FyY2gvYXJtNjQvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvYXJjaC9hcm02NC9NYWtlZmlsZQotQEAgLTAsMCArMSwxMyBAQAotKwotK2FybTY0X0tFWEVDX1NSQ1MgKz0gXAotKwlrZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMgXAotKwlrZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jIFwKLSsJa2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYwotKwotK2FybTY0X0FSQ0hfUkVVU0VfSU5JVFJEID0KLSthcm02NF9BRERfU0VHTUVOVCA9Ci0rYXJtNjRfVklSVF9UT19QSFlTID0KLSsKLStkaXN0ICs9ICQoYXJtNjRfS0VYRUNfU1JDUykgXAotKwlrZXhlYy9hcmNoL2FybTY0L01ha2VmaWxlIFwKLSsJa2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5oCi1JbmRleDoga2V4ZWMtdG9vbHMtMi4wLjEwL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYwotQEAgLTAsMCArMSwzMDUgQEAKLSsvKgotKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uICh2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UpLgotKyAqLwotKwotKyNpbmNsdWRlICIuLi8uLi9rZXhlYy5oIgotKyNpbmNsdWRlICIuLi8uLi9rZXhlYy1lbGYuaCIKLSsjaW5jbHVkZSAiLi4vLi4vY3Jhc2hkdW1wLmgiCi0rCi0raW50IGlzX2NyYXNoa2VybmVsX21lbV9yZXNlcnZlZCh2b2lkKQotK3sKLSsJcmV0dXJuIDA7Ci0rfQotKwotKyNpZiAwCi0rLyoKLSsgKiBVc2VkIHRvIHNhdmUgdmFyaW91cyBtZW1vcnkgcmFuZ2VzL3JlZ2lvbnMgbmVlZGVkIGZvciB0aGUgY2FwdHVyZWQKLSsgKiBrZXJuZWwgdG8gYm9vdC4gKGxpbWUgbWVtbWFwPSBvcHRpb24gaW4gb3RoZXIgYXJjaHMpCi0rICovCi0rc3RhdGljIHN0cnVjdCBtZW1vcnlfcmFuZ2UgY3Jhc2hfbWVtb3J5X3Jhbmdlc1tDUkFTSF9NQVhfTUVNT1JZX1JBTkdFU107Ci0rc3RydWN0IG1lbW9yeV9yYW5nZXMgdXNhYmxlbWVtX3JnbnMgPSB7Ci0rICAgIC5zaXplID0gMCwKLSsgICAgLnJhbmdlcyA9IGNyYXNoX21lbW9yeV9yYW5nZXMsCi0rfTsKLSsKLSsvKiBtZW1vcnkgcmFuZ2UgcmVzZXJ2ZWQgZm9yIGNyYXNoa2VybmVsICovCi0rc3RhdGljIHN0cnVjdCBtZW1vcnlfcmFuZ2UgY3Jhc2hfcmVzZXJ2ZWRfbWVtOwotKwotK3N0YXRpYyBzdHJ1Y3QgY3Jhc2hfZWxmX2luZm8gZWxmX2luZm8gPSB7Ci0rCS5jbGFzcwkJPSBFTEZDTEFTUzMyLAotKwkuZGF0YQkJPSBFTEZEQVRBMkxTQiwKLSsJLm1hY2hpbmUJPSBFTV9BUk0sCi0rCS5wYWdlX29mZnNldAk9IFBBR0VfT0ZGU0VULAotK307Ci0rCi0rdW5zaWduZWQgbG9uZyBwaHlzX29mZnNldDsKLSsKLSsvKioKLSsgKiBjcmFzaF9yYW5nZV9jYWxsYmFjaygpIC0gY2FsbGJhY2sgY2FsbGVkIGZvciBlYWNoIGlvbWVtIHJlZ2lvbgotKyAqIEBkYXRhOiBub3QgdXNlZAotKyAqIEBucjogbm90IHVzZWQKLSsgKiBAc3RyOiBuYW1lIG9mIHRoZSBtZW1vcnkgcmVnaW9uCi0rICogQGJhc2U6IHN0YXJ0IGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSByZWdpb24KLSsgKiBAbGVuZ3RoOiBzaXplIG9mIHRoZSBtZW1vcnkgcmVnaW9uCi0rICoKLSsgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmNlIGZvciBlYWNoIG1lbW9yeSByZWdpb24gZm91bmQgaW4gL3Byb2MvaW9tZW0uIEl0Ci0rICogbG9jYXRlcyBzeXN0ZW0gUkFNIGFuZCBjcmFzaGtlcm5lbCByZXNlcnZlZCBtZW1vcnkgYW5kIHBsYWNlcyB0aGVzZSB0bwotKyAqIHZhcmlhYmxlczogQGNyYXNoX21lbW9yeV9yYW5nZXMgYW5kIEBjcmFzaF9yZXNlcnZlZF9tZW0uIE51bWJlciBvZiBtZW1vcnkKLSsgKiByZWdpb25zIGlzIHBsYWNlZCBpbiBAY3Jhc2hfbWVtb3J5X25yX3Jhbmdlcy4KLSsgKi8KLStzdGF0aWMgaW50IGNyYXNoX3JhbmdlX2NhbGxiYWNrKHZvaWQgKlVOVVNFRChkYXRhKSwgaW50IFVOVVNFRChuciksCi0rCQkJCWNoYXIgKnN0ciwgdW5zaWduZWQgbG9uZyBiYXNlLAotKwkJCQl1bnNpZ25lZCBsb25nIGxlbmd0aCkKLSt7Ci0rCXN0cnVjdCBtZW1vcnlfcmFuZ2UgKnJhbmdlOwotKwotKwlpZiAodXNhYmxlbWVtX3JnbnMuc2l6ZSA+PSBDUkFTSF9NQVhfTUVNT1JZX1JBTkdFUykKLSsJCXJldHVybiAxOwotKwotKwlyYW5nZSA9IHVzYWJsZW1lbV9yZ25zLnJhbmdlcyArIHVzYWJsZW1lbV9yZ25zLnNpemU7Ci0rCi0rCWlmIChzdHJuY21wKHN0ciwgIlN5c3RlbSBSQU1cbiIsIDExKSA9PSAwKSB7Ci0rCQlyYW5nZS0+c3RhcnQgPSBiYXNlOwotKwkJcmFuZ2UtPmVuZCA9IGJhc2UgKyBsZW5ndGggLSAxOwotKwkJcmFuZ2UtPnR5cGUgPSBSQU5HRV9SQU07Ci0rCQl1c2FibGVtZW1fcmducy5zaXplKys7Ci0rCX0gZWxzZSBpZiAoc3RybmNtcChzdHIsICJDcmFzaCBrZXJuZWxcbiIsIDEzKSA9PSAwKSB7Ci0rCQljcmFzaF9yZXNlcnZlZF9tZW0uc3RhcnQgPSBiYXNlOwotKwkJY3Jhc2hfcmVzZXJ2ZWRfbWVtLmVuZCA9IGJhc2UgKyBsZW5ndGggLSAxOwotKwkJY3Jhc2hfcmVzZXJ2ZWRfbWVtLnR5cGUgPSBSQU5HRV9SQU07Ci0rCX0KLSsKLSsJcmV0dXJuIDA7Ci0rfQotKwotKy8qKgotKyAqIGNyYXNoX2V4Y2x1ZGVfcmFuZ2UoKSAtIGV4Y2x1ZGVzIG1lbW9yeSByZWdpb24gcmVzZXJ2ZWQgZm9yIGNyYXNoa2VybmVsCi0rICoKLSsgKiBGdW5jdGlvbiBsb2NhdGVzIHdoZXJlIGNyYXNoa2VybmVsIHJlc2VydmVkIG1lbW9yeSBpcyBhbmQgcmVtb3ZlcyB0aGF0IHJlZ2lvbgotKyAqIGZyb20gdGhlIGF2YWlsYWJsZSBtZW1vcnkgcmVnaW9ucy4KLSsgKi8KLStzdGF0aWMgdm9pZCBjcmFzaF9leGNsdWRlX3JhbmdlKHZvaWQpCi0rewotKwljb25zdCBzdHJ1Y3QgbWVtb3J5X3JhbmdlICpyYW5nZSA9ICZjcmFzaF9yZXNlcnZlZF9tZW07Ci0rCWludCBpOwotKwotKwlmb3IgKGkgPSAwOyBpIDwgdXNhYmxlbWVtX3JnbnMuc2l6ZTsgaSsrKSB7Ci0rCQlzdHJ1Y3QgbWVtb3J5X3JhbmdlICpyID0gdXNhYmxlbWVtX3JnbnMucmFuZ2VzICsgaTsKLSsKLSsJCS8qCi0rCQkgKiBXZSBhc3N1bWUgdGhhdCBjcmFzaCBhcmVhIGlzIGZ1bGx5IGNvbnRhaW5lZCBpbgotKwkJICogc29tZSBsYXJnZXIgbWVtb3J5IGFyZWEuCi0rCQkgKi8KLSsJCWlmIChyLT5zdGFydCA8PSByYW5nZS0+c3RhcnQgJiYgci0+ZW5kID49IHJhbmdlLT5lbmQpIHsKLSsJCQlzdHJ1Y3QgbWVtb3J5X3JhbmdlICpuZXc7Ci0rCQkJLyoKLSsJCQkgKiBMZXQncyBzcGxpdCB0aGlzIGFyZWEgaW50byAyIHNtYWxsZXIgb25lcyBhbmQKLSsJCQkgKiByZW1vdmUgZXhjbHVkZWQgcmFuZ2UgZnJvbSBiZXR3ZWVuLiBGaXJzdCBjcmVhdGUKLSsJCQkgKiBuZXcgZW50cnkgZm9yIHRoZSByZW1haW5pbmcgYXJlYS4KLSsJCQkgKi8KLSsJCQluZXcgPSB1c2FibGVtZW1fcmducy5yYW5nZXMgKyB1c2FibGVtZW1fcmducy5zaXplOwotKwkJCW5ldy0+c3RhcnQgPSByYW5nZS0+ZW5kICsgMTsKLSsJCQluZXctPmVuZCA9IHItPmVuZDsKLSsJCQl1c2FibGVtZW1fcmducy5zaXplKys7Ci0rCQkJLyoKLSsJCQkgKiBOZXh0IHVwZGF0ZSB0aGlzIGFyZWEgdG8gZW5kIGJlZm9yZSBleGNsdWRlZCByYW5nZS4KLSsJCQkgKi8KLSsJCQlyLT5lbmQgPSByYW5nZS0+c3RhcnQgLSAxOwotKwkJCWJyZWFrOwotKwkJfQotKwl9Ci0rfQotKwotK3N0YXRpYyBpbnQgcmFuZ2VfY21wKGNvbnN0IHZvaWQgKmExLCBjb25zdCB2b2lkICphMikKLSt7Ci0rCWNvbnN0IHN0cnVjdCBtZW1vcnlfcmFuZ2UgKnIxID0gYTE7Ci0rCWNvbnN0IHN0cnVjdCBtZW1vcnlfcmFuZ2UgKnIyID0gYTI7Ci0rCi0rCWlmIChyMS0+c3RhcnQgPiByMi0+c3RhcnQpCi0rCQlyZXR1cm4gMTsKLSsJaWYgKHIxLT5zdGFydCA8IHIyLT5zdGFydCkKLSsJCXJldHVybiAtMTsKLSsKLSsJcmV0dXJuIDA7Ci0rfQotKwotKy8qKgotKyAqIGNyYXNoX2dldF9tZW1vcnlfcmFuZ2VzKCkgLSByZWFkIHN5c3RlbSBwaHlzaWNhbCBtZW1vcnkKLSsgKgotKyAqIEZ1bmN0aW9uIHJlYWRzIHRocm91Z2ggc3lzdGVtIHBoeXNpY2FsIG1lbW9yeSBhbmQgc3RvcmVzIGZvdW5kIG1lbW9yeSByZWdpb25zCi0rICogaW4gQGNyYXNoX21lbW9yeV9yYW5nZXMuIE51bWJlciBvZiBtZW1vcnkgcmVnaW9ucyBmb3VuZCBpcyBwbGFjZWQgaW4KLSsgKiBAY3Jhc2hfbWVtb3J5X25yX3Jhbmdlcy4gUmVnaW9ucyBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlci4KLSsgKgotKyAqIFJldHVybnMgJTAgaW4gY2FzZSBvZiBzdWNjZXNzIGFuZCAlLTEgb3RoZXJ3aXNlIChlcnJubyBpcyBzZXQpLgotKyAqLwotK3N0YXRpYyBpbnQgY3Jhc2hfZ2V0X21lbW9yeV9yYW5nZXModm9pZCkKLSt7Ci0rCS8qCi0rCSAqIEZpcnN0IHJlYWQgYWxsIG1lbW9yeSByZWdpb25zIHRoYXQgY2FuIGJlIGNvbnNpZGVyZWQgYXMKLSsJICogc3lzdGVtIG1lbW9yeSBpbmNsdWRpbmcgdGhlIGNyYXNoIGFyZWEuCi0rCSAqLwotKwlrZXhlY19pb21lbV9mb3JfZWFjaF9saW5lKE5VTEwsIGNyYXNoX3JhbmdlX2NhbGxiYWNrLCBOVUxMKTsKLSsKLSsJaWYgKHVzYWJsZW1lbV9yZ25zLnNpemUgPCAxKSB7Ci0rCQllcnJubyA9IEVJTlZBTDsKLSsJCXJldHVybiAtMTsKLSsJfQotKwotKwkvKgotKwkgKiBFeGNsdWRlIG1lbW9yeSByZXNlcnZlZCBmb3IgY3Jhc2hrZXJuZWwgKHRoaXMgbWF5IHJlc3VsdCBhIHNwbGl0IG1lbW9yeQotKwkgKiByZWdpb24pLgotKwkgKi8KLSsJY3Jhc2hfZXhjbHVkZV9yYW5nZSgpOwotKwotKwkvKgotKwkgKiBNYWtlIHN1cmUgdGhhdCB0aGUgbWVtb3J5IHJlZ2lvbnMgYXJlIHNvcnRlZC4KLSsJICovCi0rCXFzb3J0KHVzYWJsZW1lbV9yZ25zLnJhbmdlcywgdXNhYmxlbWVtX3JnbnMuc2l6ZSwKLSsJICAgICAgc2l6ZW9mKCp1c2FibGVtZW1fcmducy5yYW5nZXMpLCByYW5nZV9jbXApOwotKwotKwlyZXR1cm4gMDsKLSt9Ci0rCi0rLyoqCi0rICogY21kbGluZV9hZGRfZWxmY29yZWhkcigpIC0gYWRkcyBlbGZjb3JlaGRyPSB0byBAY21kbGluZQotKyAqIEBjbWRsaW5lOiBidWZmZXIgd2hlcmUgcGFyYW1ldGVyIGlzIHBsYWNlZAotKyAqIEBlbGZjb3JlaGRyOiBwaHlzaWNhbCBhZGRyZXNzIG9mIGVsZmNvcmVoZHIKLSsgKgotKyAqIEZ1bmN0aW9uIGFwcGVuZHMgJ2VsZmNvcmVoZHI9c3RhcnQnIGF0IHRoZSBlbmQgb2YgdGhlIGNvbW1hbmQgbGluZSBnaXZlbiBpbgotKyAqIEBjbWRsaW5lLiBOb3RlIHRoYXQgQGNtZGxpbmUgbXVzdCBiZSBhdCBsZWFzdCAlQ09NTUFORF9MSU5FX1NJWkUgYnl0ZXMgbG9uZwotKyAqIChpbmNsdW5kaW5nICVOVUwpLgotKyAqLwotK3N0YXRpYyB2b2lkIGNtZGxpbmVfYWRkX2VsZmNvcmVoZHIoY2hhciAqY21kbGluZSwgdW5zaWduZWQgbG9uZyBlbGZjb3JlaGRyKQotK3sKLSsJY2hhciBidWZbQ09NTUFORF9MSU5FX1NJWkVdOwotKwlpbnQgYnVmbGVuOwotKwotKwlidWZsZW4gPSBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJXMgZWxmY29yZWhkcj0lI2x4IiwKLSsJCQkgIGNtZGxpbmUsIGVsZmNvcmVoZHIpOwotKwlpZiAoYnVmbGVuIDwgMCkKLSsJCWRpZSgiRmFpbGVkIHRvIGNvbnN0cnVjdCBlbGZjb3JlaGRyPSBjb21tYW5kIGxpbmUgcGFyYW1ldGVyXG4iKTsKLSsJaWYgKGJ1ZmxlbiA+PSBzaXplb2YoYnVmKSkKLSsJCWRpZSgiQ29tbWFuZCBsaW5lIG92ZXJmbG93XG4iKTsKLSsKLSsJKHZvaWQpIHN0cm5jcHkoY21kbGluZSwgYnVmLCBDT01NQU5EX0xJTkVfU0laRSk7Ci0rCWNtZGxpbmVbQ09NTUFORF9MSU5FX1NJWkUgLSAxXSA9ICdcMCc7Ci0rfQotKwotKy8qKgotKyAqIGNtZGxpbmVfYWRkX21lbSgpIC0gYWRkcyBtZW09IHBhcmFtZXRlciB0byBrZXJuZWwgY29tbWFuZCBsaW5lCi0rICogQGNtZGxpbmU6IGJ1ZmZlciB3aGVyZSBwYXJhbWV0ZXIgaXMgcGxhY2VkCi0rICogQHNpemU6IHNpemUgb2YgdGhlIGtlcm5lbCByZXNlcnZlZCBtZW1vcnkgKGluIGJ5dGVzKQotKyAqCi0rICogVGhpcyBmdW5jdGlvbiBhcHBlbmRzICdtZW09c2l6ZScgYXQgdGhlIGVuZCBvZiB0aGUgY29tbWFuZCBsaW5lIGdpdmVuIGluCi0rICogQGNtZGxpbmUuIE5vdGUgdGhhdCBAY21kbGluZSBtdXN0IGJlIGF0IGxlYXN0ICVDT01NQU5EX0xJTkVfU0laRSBieXRlcyBsb25nCi0rICogKGluY2x1ZGluZyAlTlVMKS4KLSsgKi8KLStzdGF0aWMgdm9pZCBjbWRsaW5lX2FkZF9tZW0oY2hhciAqY21kbGluZSwgdW5zaWduZWQgbG9uZyBzaXplKQotK3sKLSsJY2hhciBidWZbQ09NTUFORF9MSU5FX1NJWkVdOwotKwlpbnQgYnVmbGVuOwotKwotKwlidWZsZW4gPSBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJXMgbWVtPSVsZEsiLCBjbWRsaW5lLCBzaXplID4+IDEwKTsKLSsJaWYgKGJ1ZmxlbiA8IDApCi0rCQlkaWUoIkZhaWxlZCB0byBjb25zdHJ1Y3QgbWVtPSBjb21tYW5kIGxpbmUgcGFyYW1ldGVyXG4iKTsKLSsJaWYgKGJ1ZmxlbiA+PSBzaXplb2YoYnVmKSkKLSsJCWRpZSgiQ29tbWFuZCBsaW5lIG92ZXJmbG93XG4iKTsKLSsKLSsJKHZvaWQpIHN0cm5jcHkoY21kbGluZSwgYnVmLCBDT01NQU5EX0xJTkVfU0laRSk7Ci0rCWNtZGxpbmVbQ09NTUFORF9MSU5FX1NJWkUgLSAxXSA9ICdcMCc7Ci0rfQotKwotK3N0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgcmFuZ2Vfc2l6ZShjb25zdCBzdHJ1Y3QgbWVtb3J5X3JhbmdlICpyKQotK3sKLSsJcmV0dXJuIHItPmVuZCAtIHItPnN0YXJ0ICsgMTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQgZHVtcF9tZW1vcnlfcmFuZ2VzKHZvaWQpCi0rewotKwlpbnQgaTsKLSsKLSsJaWYgKCFrZXhlY19kZWJ1ZykKLSsJCXJldHVybjsKLSsKLSsJZGJncHJpbnRmKCJjcmFzaGtlcm5lbDogWyUjbGx4IC0gJSNsbHhdICglbGRNKVxuIiwKLSsJCSAgY3Jhc2hfcmVzZXJ2ZWRfbWVtLnN0YXJ0LCBjcmFzaF9yZXNlcnZlZF9tZW0uZW5kLAotKwkJICAodW5zaWduZWQgbG9uZylyYW5nZV9zaXplKCZjcmFzaF9yZXNlcnZlZF9tZW0pID4+IDIwKTsKLSsKLSsJZm9yIChpID0gMDsgaSA8IHVzYWJsZW1lbV9yZ25zLnNpemU7IGkrKykgewotKwkJc3RydWN0IG1lbW9yeV9yYW5nZSAqciA9IHVzYWJsZW1lbV9yZ25zLnJhbmdlcyArIGk7Ci0rCQlkYmdwcmludGYoIm1lbW9yeSByYW5nZTogWyUjbGx4IC0gJSNsbHhdICglbGRNKVxuIiwKLSsJCQkgIHItPnN0YXJ0LCByLT5lbmQsICh1bnNpZ25lZCBsb25nKXJhbmdlX3NpemUocikgPj4gMjApOwotKwl9Ci0rfQotKwotKy8qKgotKyAqIGxvYWRfY3Jhc2hkdW1wX3NlZ21lbnRzKCkgLSBsb2FkcyBhZGRpdGlvbmFsIHNlZ21lbnRzIG5lZWRlZCBmb3Iga2R1bXAKLSsgKiBAaW5mbzoga2V4ZWMgaW5mbyBzdHJ1Y3R1cmUKLSsgKiBAbW9kX2NtZGxpbmU6IGtlcm5lbCBjb21tYW5kIGxpbmUKLSsgKgotKyAqIFRoaXMgZnVuY3Rpb24gbG9hZHMgYWRkaXRpb25hbCBzZWdtZW50cyB3aGljaCBhcmUgbmVlZGVkIGZvciB0aGUgZHVtcCBjYXB0dXJlCi0rICoga2VybmVsLiBJdCBhbHNvIHVwZGF0ZXMga2VybmVsIGNvbW1hbmQgbGluZSBwYXNzZWQgaW4gQG1vZF9jbWRsaW5lIHRvIGhhdmUKLSsgKiByaWdodCBwYXJhbWV0ZXJzIGZvciB0aGUgZHVtcCBjYXB0dXJlIGtlcm5lbC4KLSsgKgotKyAqIFJldHVybiAlMCBpbiBjYXNlIG9mIHN1Y2Nlc3MgYW5kICUtMSBpbiBjYXNlIG9mIGVycm9yLgotKyAqLwotK2ludCBsb2FkX2NyYXNoZHVtcF9zZWdtZW50cyhzdHJ1Y3Qga2V4ZWNfaW5mbyAqaW5mbywgY2hhciAqbW9kX2NtZGxpbmUpCi0rewotKwl1bnNpZ25lZCBsb25nIGVsZmNvcmVoZHI7Ci0rCXVuc2lnbmVkIGxvbmcgYnVmc3o7Ci0rCXZvaWQgKmJ1ZjsKLSsJaW50IGVycjsKLSsKLSsJLyoKLSsJICogRmlyc3QgZmV0Y2ggYWxsIHRoZSBtZW1vcnkgKFJBTSkgcmFuZ2VzIHRoYXQgd2UgYXJlIGdvaW5nIHRvIHBhc3MgdG8KLSsJICogdGhlIGNyYXNoZHVtcCBrZXJuZWwgZHVyaW5nIHBhbmljLgotKwkgKi8KLSsJZXJyID0gY3Jhc2hfZ2V0X21lbW9yeV9yYW5nZXMoKTsKLSsJaWYgKGVycikKLSsJCXJldHVybiBlcnI7Ci0rCi0rCS8qCi0rCSAqIE5vdyB0aGF0IHdlIGhhdmUgbWVtb3J5IHJlZ2lvbnMgc29ydGVkLCB3ZSBjYW4gdXNlIGZpcnN0IG1lbW9yeQotKwkgKiByZWdpb24gYXMgUEhZU19PRkZTRVQuCi0rCSAqLwotKwlwaHlzX29mZnNldCA9IHVzYWJsZW1lbV9yZ25zLnJhbmdlcy0+c3RhcnQ7Ci0rCWRiZ3ByaW50ZigicGh5c19vZmZzZXQ6ICUjbHhcbiIsIHBoeXNfb2Zmc2V0KTsKLSsKLSsJZXJyID0gY3Jhc2hfY3JlYXRlX2VsZjMyX2hlYWRlcnMoaW5mbywgJmVsZl9pbmZvLAotKwkJCQkJIHVzYWJsZW1lbV9yZ25zLnJhbmdlcywKLSsJCQkJCSB1c2FibGVtZW1fcmducy5zaXplLCAmYnVmLCAmYnVmc3osCi0rCQkJCQkgRUxGX0NPUkVfSEVBREVSX0FMSUdOKTsKLSsJaWYgKGVycikKLSsJCXJldHVybiBlcnI7Ci0rCi0rCS8qCi0rCSAqIFdlIGFsbG9jYXRlIEVMRiBjb3JlIGhlYWRlciBmcm9tIHRoZSBlbmQgb2YgdGhlIG1lbW9yeSBhcmVhIHJlc2VydmVkCi0rCSAqIGZvciB0aGUgY3Jhc2hrZXJuZWwuIFdlIGFsaWduIHRoZSBoZWFkZXIgdG8gU0VDVElPTl9TSVpFICh3aGljaCBpcwotKwkgKiAxTUIpIHNvIHRoYXQgYXZhaWxhYmxlIG1lbW9yeSBwYXNzZWQgaW4ga2VybmVsIGNvbW1hbmQgbGluZSB3aWxsIGJlCi0rCSAqIGFsaWduZWQgdG8gMU1CLiBUaGlzIGlzIGJlY2F1c2Uga2VybmVsIGNyZWF0ZV9tYXBwaW5nKCkgd2FudHMgbWVtb3J5Ci0rCSAqIHJlZ2lvbnMgdG8gYmUgYWxpZ25lZCB0byBTRUNUSU9OX1NJWkUuCi0rCSAqLwotKwllbGZjb3JlaGRyID0gYWRkX2J1ZmZlcl9waHlzX3ZpcnQoaW5mbywgYnVmLCBidWZzeiwgYnVmc3osIDEgPDwgMjAsCi0rCQkJCQkgIGNyYXNoX3Jlc2VydmVkX21lbS5zdGFydCwKLSsJCQkJCSAgY3Jhc2hfcmVzZXJ2ZWRfbWVtLmVuZCwgLTEsIDApOwotKwotKwlkYmdwcmludGYoImVsZmNvcmVoZHI6ICUjbHhcbiIsIGVsZmNvcmVoZHIpOwotKwljbWRsaW5lX2FkZF9lbGZjb3JlaGRyKG1vZF9jbWRsaW5lLCBlbGZjb3JlaGRyKTsKLSsKLSsJLyoKLSsJICogQWRkICdtZW09c2l6ZScgcGFyYW1ldGVyIHRvIGR1bXAgY2FwdHVyZSBrZXJuZWwgY29tbWFuZCBsaW5lLiBUaGlzCi0rCSAqIHByZXZlbnRzIHRoZSBkdW1wIGNhcHR1cmUga2VybmVsIGZyb20gdXNpbmcgYW55IG90aGVyIG1lbW9yeSByZWdpb25zCi0rCSAqIHdoaWNoIGJlbG9uZyB0byB0aGUgcHJpbWFyeSBrZXJuZWwuCi0rCSAqLwotKwljbWRsaW5lX2FkZF9tZW0obW9kX2NtZGxpbmUsIGVsZmNvcmVoZHIgLSBjcmFzaF9yZXNlcnZlZF9tZW0uc3RhcnQpOwotKwotKwlkdW1wX21lbW9yeV9yYW5nZXMoKTsKLSsJZGJncHJpbnRmKCJrZXJuZWwgY29tbWFuZCBsaW5lOiBcIiVzXCJcbiIsIG1vZF9jbWRsaW5lKTsKLSsKLSsJcmV0dXJuIDA7Ci0rfQotKwotKyNlbmRpZgotKwotSW5kZXg6IGtleGVjLXRvb2xzLTIuMC4xMC9rZXhlYy9hcmNoL2FybTY0L2luY2x1ZGUvYXJjaC9vcHRpb25zLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvYXJjaC9hcm02NC9pbmNsdWRlL2FyY2gvb3B0aW9ucy5oCi1AQCAtMCwwICsxLDI2IEBACi0rI2lmbmRlZiBLRVhFQ19BUkNIX0FSTTY0X09QVElPTlNfSAotKyNkZWZpbmUgS0VYRUNfQVJDSF9BUk02NF9PUFRJT05TX0gKLSsKLSsvLyNkZWZpbmUgT1BUX0FSQ0hfTUFYCSgoT1BUX01BWCkrMCkKLSsKLSsjZGVmaW5lIE9QVF9BUFBFTkQJKChPUFRfTUFYKSswKQotKyNkZWZpbmUgT1BUX1JBTURJU0sJKChPUFRfTUFYKSsxKQotKyNkZWZpbmUgT1BUX0RUQgkJKChPUFRfTUFYKSsyKQotKwotKyNkZWZpbmUgT1BUX0FSQ0hfTUFYCSgoT1BUX01BWCkrMykKLSsKLSsKLSsjZGVmaW5lIEtFWEVDX0FSQ0hfT1BUSU9OUyBcCi0rCUtFWEVDX09QVElPTlMgXAotKwl7ICJhcHBlbmQiLCAgICAgICAxLCBOVUxMLCBPUFRfQVBQRU5EIH0sIFwKLSsJeyAiY29tbWFuZC1saW5lIiwgMSwgTlVMTCwgT1BUX0FQUEVORCB9LCBcCi0rCXsgImR0YiIsICAgICAgICAgIDEsIE5VTEwsIE9QVF9EVEIgfSwgXAotKwl7ICJpbml0cmQiLCAgICAgICAxLCBOVUxMLCBPUFRfUkFNRElTSyB9LCBcCi0rCXsgInJhbWRpc2siLCAgICAgIDEsIE5VTEwsIE9QVF9SQU1ESVNLIH0sIFwKLSsKLSsjZGVmaW5lIEtFWEVDX0FSQ0hfT1BUX1NUUiBLRVhFQ19PUFRfU1RSIC8qIE9ubHkgYWNjZXB0IGxvbmcgYXJjaCBvcHRpb25zLiAqLwotKwotKyNkZWZpbmUgS0VYRUNfQUxMX09QVElPTlMgS0VYRUNfQVJDSF9PUFRJT05TCi0rI2RlZmluZSBLRVhFQ19BTExfT1BUX1NUUiBLRVhFQ19BUkNIX09QVF9TVFIKLSsKLSsjZW5kaWYgLyogS0VYRUNfQVJDSF9BUk02NF9PUFRJT05TX0ggKi8KLUluZGV4OiBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysga2V4ZWMtdG9vbHMtMi4wLjEwL2tleGVjL2FyY2gvYXJtNjQva2V4ZWMtYXJtNjQuYwotQEAgLTAsMCArMSwxNzcgQEAKLSsvKgotKyAqIEFSTTY0IGtleGVjIHN1cHBvcnQuCi0rICovCi0rCi0rI2RlZmluZSBfR05VX1NPVVJDRQotKwotKyNpbmNsdWRlIDxlcnJuby5oPgotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsKLSsvLyNpbmNsdWRlIDxsaW51eC9rZXhlYy5oPgotKwotKyNpbmNsdWRlICIuLi8uLi9rZXhlYy5oIgotKyNpbmNsdWRlICIuLi8uLi9rZXhlYy1zeXNjYWxsLmgiCi0rI2luY2x1ZGUgImtleGVjLWFybTY0LmgiCi0rCi0rCi0rdm9pZCBhcmNoX3VzYWdlKHZvaWQpCi0rewotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiAtPlxuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSsKLSsJcHJpbnRmKAotKyIgICAgIC0tYXBwZW5kPVNUUklORyAgICAgICBTZXQgdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgdG8gU1RSSU5HLlxuIgotKyIgICAgIC0tY29tbWFuZC1saW5lPVNUUklORyBTZXQgdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgdG8gU1RSSU5HLlxuIgotKyIgICAgIC0tZHRiPUZJTEUgICAgICAgICAgICBVc2UgRklMRSBhcyB0aGUgZGV2aWNlIHRyZWUgYmxvYi5cbiIKLSsiICAgICAtLWluaXRyZD1GSUxFICAgICAgICAgVXNlIEZJTEUgYXMgdGhlIGtlcm5lbCBpbml0aWFsIHJhbWRpc2suXG4iCi0rIiAgICAgLS1yYW1kaXNrPUZJTEUgICAgICAgIFVzZSBGSUxFIGFzIHRoZSBrZXJuZWwgaW5pdGlhbCByYW1kaXNrLlxuIik7Ci0rCi0rCWZwcmludGYoc3RkZXJyLCAiJXM6JWQ6IDwtXG4iLCBfX2Z1bmNfXywgX19MSU5FX18pOwotK30KLSsKLStpbnQgYXJjaF9wcm9jZXNzX29wdGlvbnMoaW50IFVOVVNFRChhcmdjKSwgY2hhciAqKlVOVVNFRChhcmd2KSkKLSt7Ci0rCWZwcmludGYoc3RkZXJyLCAiJXM6JWQ6IGRvXG4iLCBfX2Z1bmNfXywgX19MSU5FX18pOwotKwlyZXR1cm4gMDsKLSt9Ci0rCi0rY29uc3Qgc3RydWN0IGFyY2hfbWFwX2VudHJ5IGFyY2hlc1tdID0gewotKwl7ICJhYXJjaDY0IiwgS0VYRUNfQVJDSF9BUk02NCB9LAotKwl7IE5VTEwsIDAgfSwKLSt9OwotKwotK3ZvaWQgYXJjaF91cGRhdGVfcHVyZ2F0b3J5KHN0cnVjdCBrZXhlY19pbmZvICpVTlVTRUQoaW5mbykpCi0rewotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiBkb1xuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSt9Ci0rCi0rdW5zaWduZWQgbG9uZyB2aXJ0X3RvX3BoeXModW5zaWduZWQgbG9uZyBhZGRyKQotK3sKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogJTAxNmx4IC0+ICUwMTZseFxuIiwgX19mdW5jX18sIF9fTElORV9fLCBhZGRyLAotKwkJYWRkciArIDB4MDgwMDAwMDAwVUwpOwotKwlyZXR1cm4gYWRkciArIDB4MDgwMDAwMDAwVUw7Ci0rfQotKwotK3ZvaWQgYWRkX3NlZ21lbnQoc3RydWN0IGtleGVjX2luZm8gKmluZm8sIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGJ1ZnN6LAotKwl1bnNpZ25lZCBsb25nIGJhc2UsIHNpemVfdCBtZW1zeikKLSt7Ci0rCWZwcmludGYoc3RkZXJyLCAiJXM6JWQ6IC0+XG4iLCBfX2Z1bmNfXywgX19MSU5FX18pOwotKwlhZGRfc2VnbWVudF9waHlzX3ZpcnQoaW5mbywgYnVmLCBidWZzeiwgYmFzZSwgbWVtc3osIDEpOwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiA8LVxuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSt9Ci0rCi0rc3RhdGljIGludCBnZXRfbWVtb3J5X3Jhbmdlc18xKHN0cnVjdCBtZW1vcnlfcmFuZ2UgKipyYW5nZSwgaW50ICpyYW5nZXMsCi0rCQkJdW5zaWduZWQgbG9uZyBrZXhlY19mbGFncykKLSt7Ci0rCXN0YXRpYyBzdHJ1Y3QgbWVtb3J5X3JhbmdlIG1lbW9yeV9yYW5nZVtLRVhFQ19TRUdNRU5UX01BWF07Ci0rCWNvbnN0IGNoYXIgKmlvbWVtOwotKwlpbnQgcmFuZ2VfY291bnQgPSAwOwotKwljaGFyIGxpbmVbTUFYX0xJTkVdOwotKwlGSUxFICpmcDsKLSsKLSsJaW9tZW0gPSBwcm9jX2lvbWVtKCk7Ci0rCWZwID0gZm9wZW4oaW9tZW0sICJyIik7Ci0rCi0rCWlmICghZnApIHsKLSsJCWZwcmludGYoc3RkZXJyLCAiQ2Fubm90IG9wZW4gJXM6ICVzXG4iLAotKwkJCWlvbWVtLCBzdHJlcnJvcihlcnJubykpOwotKwkJcmV0dXJuIC0xOwotKwl9Ci0rCi0rCWRiZ3ByaW50ZigibWVtb3J5IHJhbmdlczpcbiIpOwotKwotKwl3aGlsZShmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGZwKSAhPSAwKSB7Ci0rCQlzdHJ1Y3QgbWVtb3J5X3JhbmdlIHI7Ci0rCQljaGFyICpzdHI7Ci0rCQlpbnQgY29uc3VtZWQ7Ci0rCi0rCQlpZiAocmFuZ2VfY291bnQgPj0gS0VYRUNfU0VHTUVOVF9NQVgpCi0rCQkJYnJlYWs7Ci0rCi0rCQlpZiAoc3NjYW5mKGxpbmUsICIlTHgtJUx4IDogJW4iLCAmci5zdGFydCwgJnIuZW5kLCAmY29uc3VtZWQpCi0rCQkJIT0gMikKLSsJCQljb250aW51ZTsKLSsKLSsJCXN0ciA9IGxpbmUgKyBjb25zdW1lZDsKLSsJCXIuZW5kKys7Ci0rCi0rCQlpZiAobWVtY21wKHN0ciwgIlN5c3RlbSBSQU1cbiIsIDExKSkgewotKwkJCWRiZ3ByaW50ZigiIFNraXA6ICUwMTZMeCAtICUwMTZMeCA6ICVzIiwgci5zdGFydCwgci5lbmQsCi0rCQkJCXN0cik7Ci0rCQkJY29udGludWU7Ci0rCQl9Ci0rCi0rCQlyLnR5cGUgPSBSQU5HRV9SQU07Ci0rCQltZW1vcnlfcmFuZ2VbcmFuZ2VfY291bnRdID0gcjsKLSsJCXJhbmdlX2NvdW50Kys7Ci0rCi0rCQlkYmdwcmludGYoIiBBZGQ6ICAlMDE2THggLSAlMDE2THggOiAlcyIsIHIuc3RhcnQsIHIuZW5kLCBzdHIpOwotKwl9Ci0rCi0rCWZjbG9zZShmcCk7Ci0rCSpyYW5nZSA9IG1lbW9yeV9yYW5nZTsKLSsJKnJhbmdlcyA9IHJhbmdlX2NvdW50OwotKwotKwlyZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIGludCBnZXRfbWVtb3J5X3Jhbmdlc18yKHN0cnVjdCBtZW1vcnlfcmFuZ2UgKipyYW5nZSwgaW50ICpyYW5nZXMsCi0rCQkgICAgICB1bnNpZ25lZCBsb25nIFVOVVNFRChrZXhlY19mbGFncykpCi0rewotKwlzdGF0aWMgc3RydWN0IG1lbW9yeV9yYW5nZSBtZW1vcnlfcmFuZ2VbMl07Ci0rCi0rCW1lbW9yeV9yYW5nZVswXS5zdGFydCA9IDB4MDgwMDAwMDAwOwotKwltZW1vcnlfcmFuZ2VbMF0uZW5kICAgPSAweDEwMDAwMDAwMDsKLSsJbWVtb3J5X3JhbmdlWzBdLnR5cGUgPSBSQU5HRV9SQU07Ci0rCi0rCW1lbW9yeV9yYW5nZVsxXS5zdGFydCA9IDB4OTAwMDAwMDAwOwotKwltZW1vcnlfcmFuZ2VbMV0uZW5kICAgPSAweDg4MDAwMDAwMDsKLSsJbWVtb3J5X3JhbmdlWzFdLnR5cGUgPSBSQU5HRV9SQU07Ci0rCi0rCSpyYW5nZSA9IG1lbW9yeV9yYW5nZTsKLSsJKnJhbmdlcyA9IHNpemVvZihtZW1vcnlfcmFuZ2UpIC8gc2l6ZW9mKG1lbW9yeV9yYW5nZVswXSk7Ci0rCi0rCXJldHVybiAwOwotK30KLSsKLStpbnQgZ2V0X21lbW9yeV9yYW5nZXMoc3RydWN0IG1lbW9yeV9yYW5nZSAqKnJhbmdlLCBpbnQgKnJhbmdlcywKLSsJCQl1bnNpZ25lZCBsb25nIGtleGVjX2ZsYWdzKQotK3sKLSsJLyogRklYTUU6IFNob3VsZCBnZXQgdGhpcyBpbmZvIGZyb20gZGV2aWNlIHRyZWUuICovCi0rCQotKwlyZXR1cm4gZ2V0X21lbW9yeV9yYW5nZXNfMShyYW5nZSwgcmFuZ2VzLCBrZXhlY19mbGFncyk7Ci0rfQotKwotK3N0cnVjdCBmaWxlX3R5cGUgZmlsZV90eXBlW10gPSB7Ci0rCXsgImVsZi1hcm02NCIsIGVsZl9hcm02NF9wcm9iZSwgZWxmX2FybTY0X2xvYWQsIGVsZl9hcm02NF91c2FnZSB9LAotK307Ci0rCi0raW50IGZpbGVfdHlwZXMgPSBzaXplb2YoZmlsZV90eXBlKSAvIHNpemVvZihmaWxlX3R5cGVbMF0pOwotKwotK2ludCBhcmNoX2NvbXBhdF90cmFtcG9saW5lKHN0cnVjdCBrZXhlY19pbmZvICppbmZvKQotK3sKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogZG9cbiIsIF9fZnVuY19fLCBfX0xJTkVfXyk7Ci0rCXJldHVybiAwOwotK30KLSsKLSt2b2lkIGFyY2hfcmV1c2VfaW5pdHJkKHZvaWQpCi0rewotK30KLSsKLStpbnQgbWFjaGluZV92ZXJpZnlfZWxmX3JlbChzdHJ1Y3QgbWVtX2VoZHIgKmVoZHIpCi0rewotKwkodm9pZCllaGRyOwotKwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiBkb1xuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSsJcmV0dXJuIDA7Ci0rfQotKwotK3ZvaWQgbWFjaGluZV9hcHBseV9lbGZfcmVsKHN0cnVjdCBtZW1fZWhkciAqZWhkciwgdW5zaWduZWQgbG9uZyByX3R5cGUsCi0rCXZvaWQgKmxvY2F0aW9uLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgdmFsdWUpCi0rewotKwkodm9pZCllaGRyOwotKwkodm9pZClyX3R5cGU7Ci0rCSh2b2lkKWxvY2F0aW9uOwotKwkodm9pZClhZGRyZXNzOwotKwkodm9pZCl2YWx1ZTsKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogZG9cbiIsIF9fZnVuY19fLCBfX0xJTkVfXyk7Ci0rfQotSW5kZXg6IGtleGVjLXRvb2xzLTIuMC4xMC9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5oCi1AQCAtMCwwICsxLDIwIEBACi0rLyoKLSsgKiBBUk02NCBrZXhlYyBzdXBwb3J0LgotKyAqLwotKwotKyNpZiAhZGVmaW5lZChLRVhFQ19BUk02NF9IKQotKyNkZWZpbmUgS0VYRUNfQVJNNjRfSAotKwotKy8qICNpbmNsdWRlIDxsaW51eC9rZXhlYy5oPiBGSVhNRTogdGhpcyBpcyBicm9rZW4gKi8KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rCi0rI2luY2x1ZGUgIi4uLy4uL2tleGVjLmgiCi0rCi0rI2RlZmluZSBLRVhFQ19TRUdNRU5UX01BWCAxNiAvKiBGSVhNRTogdGhpcyBzaG91bGQgY29tZSBmcm9tIDxsaW51eC9rZXhlYy5oPiAqLwotKwotK2ludCBlbGZfYXJtNjRfcHJvYmUoY29uc3QgY2hhciAqYnVmLCBvZmZfdCBsZW4pOwotK2ludCBlbGZfYXJtNjRfbG9hZChpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKmJ1Ziwgb2ZmX3QgbGVuLAotKwlzdHJ1Y3Qga2V4ZWNfaW5mbyAqaW5mbyk7Ci0rdm9pZCBlbGZfYXJtNjRfdXNhZ2Uodm9pZCk7Ci0rCi0rI2VuZGlmCi1cIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLUluZGV4OiBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1lbGYtYXJtNjQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGtleGVjLXRvb2xzLTIuMC4xMC9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWVsZi1hcm02NC5jCi1AQCAtMCwwICsxLDExNCBAQAotKy8qCi0rICogQVJNNjQga2V4ZWMgc3VwcG9ydC4KLSsgKi8KLSsKLSsjZGVmaW5lIF9HTlVfU09VUkNFCi0rCi0rI2luY2x1ZGUgPGVsZi5oPgotKyNpbmNsdWRlIDxnZXRvcHQuaD4KLSsKLSsjaW5jbHVkZSAiLi4vLi4va2V4ZWMtc3lzY2FsbC5oIgotKwotKyNpbmNsdWRlICJrZXhlYy1hcm02NC5oIgotKyNpbmNsdWRlICJhcmNoL29wdGlvbnMuaCIKLSsKLSsjaWYgIWRlZmluZWQoRU1fQUFSQ0g2NCkKLSsjIGRlZmluZSBFTV9BQVJDSDY0IDE4MwotKyNlbmRpZgotKwotK2ludCBlbGZfYXJtNjRfcHJvYmUoY29uc3QgY2hhciAqYnVmLCBvZmZfdCBsZW4pCi0rewotKwlpbnQgcmVzdWx0OwotKwlzdHJ1Y3QgbWVtX2VoZHIgZWhkcjsKLSsKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogLT5cbiIsIF9fZnVuY19fLCBfX0xJTkVfXyk7Ci0rCQotKwlyZXN1bHQgPSBidWlsZF9lbGZfZXhlY19pbmZvKGJ1ZiwgbGVuLCAmZWhkciwgMCk7Ci0rCi0rCWlmIChyZXN1bHQgPCAwKSB7Ci0rCQlkYmdwcmludGYoIk5vdCBhbiBFTEYgZXhlY3V0YWJsZVxuIik7Ci0rCQlnb3RvIG91dDsKLSsJfQotKwotKwlpZiAoZWhkci5lX21hY2hpbmUgIT0gRU1fQUFSQ0g2NCkgewotKwkJZGJncHJpbnRmKCJOb3QgYW4gQUFSQ0g2NCBleGVjdXRhYmxlXG4iKTsKLSsJCXJlc3VsdCA9IC0xOwotKwkJZ290byBvdXQ7Ci0rCX0KLSsKLSsJcmVzdWx0ID0gMDsKLSsKLStvdXQ6Ci0rCWZyZWVfZWxmX2luZm8oJmVoZHIpOwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiA8LVxuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSsJcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0raW50IGVsZl9hcm02NF9sb2FkKGludCBhcmdjLCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqYnVmLCBvZmZfdCBsZW4sCi0rCQkJc3RydWN0IGtleGVjX2luZm8gKmluZm8pCi0rewotKwlzdGF0aWMgY29uc3Qgc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7Ci0rCQlLRVhFQ19BUkNIX09QVElPTlMKLSsJCXsgMCB9Ci0rCX07Ci0rCXN0YXRpYyBjb25zdCBjaGFyIHNob3J0X29wdGlvbnNbXSA9IEtFWEVDX09QVF9TVFIgIiI7Ci0rCWNvbnN0IGNoYXIgKmNvbW1hbmRfbGluZSA9IE5VTEw7Ci0rCXVuc2lnbmVkIGludCBjb21tYW5kX2xpbmVfbGVuID0gMDsKLSsJY29uc3QgY2hhciAqcmFtZGlzayA9IE5VTEw7Ci0rCWNvbnN0IGNoYXIgKmR0YiA9IE5VTEw7Ci0rCWludCBvcHQ7Ci0rCXN0cnVjdCBtZW1fZWhkciBlaGRyOwotKwlpbnQgcmVzdWx0OwotKwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiAtPlxuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSsKLSsJd2hpbGUgKChvcHQgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCBzaG9ydF9vcHRpb25zLCBvcHRpb25zLCAwKSkKLSsJCSE9IC0xKSB7Ci0rCQlzd2l0Y2ggKG9wdCkgewotKwkJZGVmYXVsdDoKLSsJCQlpZiAob3B0IDwgT1BUX01BWCkgLyogSWdub3JlIGNvcmUgb3B0aW9ucyAqLwotKwkJCQlicmVhazsKLSsJCWNhc2UgT1BUX0FQUEVORDoKLSsJCQljb21tYW5kX2xpbmUgPSBvcHRhcmc7Ci0rCQkJY29tbWFuZF9saW5lX2xlbiA9IHN0cmxlbihjb21tYW5kX2xpbmUpICsgMTsKLSsJCQlicmVhazsKLSsJCWNhc2UgT1BUX1JBTURJU0s6Ci0rCQkJcmFtZGlzayA9IG9wdGFyZzsKLSsJCQlicmVhazsKLSsJCWNhc2UgT1BUX0RUQjoKLSsJCQlkdGIgPSBvcHRhcmc7Ci0rCQkJYnJlYWs7Ci0rCQl9Ci0rCX0KLSsKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogY29tbWFuZF9saW5lOiAlc1xuIiwgX19mdW5jX18sIF9fTElORV9fLCBjb21tYW5kX2xpbmUpOwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiByYW1kaXNrOiAlc1xuIiwgX19mdW5jX18sIF9fTElORV9fLCByYW1kaXNrKTsKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogZHRiOiAlc1xuIiwgX19mdW5jX18sIF9fTElORV9fLCBkdGIpOwotKwotKwlpZiAoaW5mby0+a2V4ZWNfZmxhZ3MgJiBLRVhFQ19PTl9DUkFTSCkgewotKwkJZnByaW50ZihzdGRlcnIsICJrZXhlYzoga2R1bXAgbm90IHlldCBzdXBwb3J0ZWQgb24gYXJtNjRcbiIpOwotKwkJcmV0dXJuIC0xOwotKwl9Ci0rCi0rCXJlc3VsdCA9IGJ1aWxkX2VsZl9leGVjX2luZm8oYnVmLCBsZW4sICZlaGRyLCAwKTsKLSsKLSsJaWYgKHJlc3VsdCA8IDApIHsKLSsJCWZyZWVfZWxmX2luZm8oJmVoZHIpOwotKwkJZnByaW50ZihzdGRlcnIsICIlczolZDogZnJlZV9lbGZfaW5mbyBmYWlsZWRcbiIsIF9fZnVuY19fLAotKwkJCV9fTElORV9fKTsKLSsJCXJldHVybiByZXN1bHQ7Ci0rCX0KLSsKLSsJZWxmX2V4ZWNfYnVpbGRfbG9hZChpbmZvLCAmZWhkciwgYnVmLCBsZW4sIDApOwotKwotKwlpbmZvLT5lbnRyeSA9ICh2b2lkKikweDgwMDgwMDAwVUw7ICAvLyBGSVhNRQotKwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiA8LVxuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSsJcmV0dXJuIDA7Ci0rfQotKwotK3ZvaWQgZWxmX2FybTY0X3VzYWdlKHZvaWQpCi0rewotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiVkOiAtPlxuIiwgX19mdW5jX18sIF9fTElORV9fKTsKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogPC1cbiIsIF9fZnVuY19fLCBfX0xJTkVfXyk7Ci0rfQotSW5kZXg6IGtleGVjLXRvb2xzLTIuMC4xMC9rZXhlYy9rZXhlYy1zeXNjYWxsLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBrZXhlYy10b29scy0yLjAuMTAub3JpZy9rZXhlYy9rZXhlYy1zeXNjYWxsLmgKLSsrKyBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMva2V4ZWMtc3lzY2FsbC5oCi1AQCAtMzksOCArMzksOCBAQAotICNpZmRlZiBfX3MzOTBfXwotICNkZWZpbmUgX19OUl9rZXhlY19sb2FkCQkyNzcKLSAjZW5kaWYKLS0jaWZkZWYgX19hcm1fXwotLSNkZWZpbmUgX19OUl9rZXhlY19sb2FkCQlfX05SX1NZU0NBTExfQkFTRSArIDM0NyAgCi0rI2lmIGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX2FybTY0X18pCi0rI2RlZmluZSBfX05SX2tleGVjX2xvYWQJCV9fTlJfU1lTQ0FMTF9CQVNFICsgMzQ3Ci0gI2VuZGlmCi0gI2lmIGRlZmluZWQoX19taXBzX18pCi0gI2RlZmluZSBfX05SX2tleGVjX2xvYWQgICAgICAgICAgICAgICAgNDMxMQotQEAgLTEwOCw2ICsxMDgsOCBAQCBzdGF0aWMgaW5saW5lIGxvbmcga2V4ZWNfZmlsZV9sb2FkKGludCBrCi0gI2RlZmluZSBLRVhFQ19BUkNIX1BQQzY0ICAgKDIxIDw8IDE2KQotICNkZWZpbmUgS0VYRUNfQVJDSF9JQV82NCAgICg1MCA8PCAxNikKLSAjZGVmaW5lIEtFWEVDX0FSQ0hfQVJNICAgICAoNDAgPDwgMTYpCi0rI2RlZmluZSBLRVhFQ19BUkNIX0FSTTY0ICAgKDE4MyA8PCAxNikKLSsvKiAjZGVmaW5lIEtFWEVDX0FSQ0hfQUFSQ0g2NCAoMTgzIDw8IDE2KSAqLwotICNkZWZpbmUgS0VYRUNfQVJDSF9TMzkwICAgICgyMiA8PCAxNikKLSAjZGVmaW5lIEtFWEVDX0FSQ0hfU0ggICAgICAoNDIgPDwgMTYpCi0gI2RlZmluZSBLRVhFQ19BUkNIX01JUFNfTEUgKDEwIDw8IDE2KQotQEAgLTE1Myw1ICsxNTUsOCBAQCBzdGF0aWMgaW5saW5lIGxvbmcga2V4ZWNfZmlsZV9sb2FkKGludCBrCi0gI2lmZGVmIF9fbTY4a19fCi0gI2RlZmluZSBLRVhFQ19BUkNIX05BVElWRQlLRVhFQ19BUkNIXzY4SwotICNlbmRpZgotKyNpZiBkZWZpbmVkKF9fYXJtNjRfXykKLSsjZGVmaW5lIEtFWEVDX0FSQ0hfTkFUSVZFCUtFWEVDX0FSQ0hfQVJNNjQKLSsjZW5kaWYKLSAKLSAjZW5kaWYgLyogS0VYRUNfU1lTQ0FMTF9IICovCi1JbmRleDoga2V4ZWMtdG9vbHMtMi4wLjEwL2tleGVjL2tleGVjLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBrZXhlYy10b29scy0yLjAuMTAub3JpZy9rZXhlYy9rZXhlYy5jCi0rKysga2V4ZWMtdG9vbHMtMi4wLjEwL2tleGVjL2tleGVjLmMKLUBAIC02NjQsNiArNjY0LDggQEAgc3RhdGljIGludCBteV9sb2FkKGNvbnN0IGNoYXIgKnR5cGUsIGludAotIAltZW1zZXQoJmluZm8sIDAsIHNpemVvZihpbmZvKSk7Ci0gCWluZm8ua2V4ZWNfZmxhZ3MgPSBrZXhlY19mbGFnczsKLSAKLSsJZnByaW50ZihzdGRlcnIsICIlczolZDogZG9cbiIsIF9fZnVuY19fLCBfX0xJTkVfXyk7Ci0rCi0gCXJlc3VsdCA9IDA7Ci0gCWlmIChhcmdjIC0gZmlsZWluZCA8PSAwKSB7Ci0gCQlmcHJpbnRmKHN0ZGVyciwgIk5vIGtlcm5lbCBzcGVjaWZpZWRcbiIpOwotSW5kZXg6IGtleGVjLXRvb2xzLTIuMC4xMC9wdXJnYXRvcnkvYXJjaC9hcm02NC9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGtleGVjLXRvb2xzLTIuMC4xMC9wdXJnYXRvcnkvYXJjaC9hcm02NC9NYWtlZmlsZQotQEAgLTAsMCArMSw3IEBACi0rIwotKyMgUHVyZ2F0b3J5IGFybTY0Ci0rIwotKwotK2FybTY0X1BVUkdBVE9SWV9TUkNTID0KLSsKLStkaXN0ICs9IHB1cmdhdG9yeS9hcmNoL2FybTY0L01ha2VmaWxlICQoYXJtNjRfUFVSR0FUT1JZX1NSQ1MpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29sc18yLjAuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29sc18yLjAuMTQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmNjM5OGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjE0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotcmVxdWlyZSBrZXhlYy10b29scy5pbmMKLWV4cG9ydCBMREZMQUdTID0gIi1MJHtTVEFHSU5HX0xJQkRJUn0iCi1FWFRSQV9PRUNPTkYgPSAiIC0td2l0aC16bGliPXllcyIKLQotU1JDX1VSSSArPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy9rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAyLXBvd2VycGMtY2hhbmdlLXRoZS1tZW1vcnktc2l6ZS1saW1pdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1wdXJnYXRvcnktUGFzcy1yLWRpcmVjdGx5LXRvLWxpbmtlci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS12bWNvcmUtZG1lc2ctRGVmaW5lLV9HTlVfU09VUkNFLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWtleGVjLWV4bnRlbmQtdGhlLXNlbWFudGljcy1vZi1rZXhlY19pb21lbV9mb3JfZWFjaF8ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDIta2V4ZWMtZ2VuZXJhbGl6ZS1hbmQtcmVuYW1lLWdldF9rZXJuZWxfc3RleHRfc3ltLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAzLWFybTY0LWlkZW50aWZ5LVBIWVNfT0ZGU0VULWNvcnJlY3RseS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwNC1hcm02NC1rZHVtcC1pZGVudGlmeS1tZW1vcnktcmVnaW9ucy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwNS1hcm02NC1rZHVtcC1hZGQtZWxmLWNvcmUtaGVhZGVyLXNlZ21lbnQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDYtYXJtNjQta2R1bXAtc2V0LXVwLWtlcm5lbC1pbWFnZS1zZWdtZW50LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA3LWFybTY0LWtkdW1wLXNldC11cC1vdGhlci1zZWdtZW50cy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwOC1hcm02NC1rZHVtcC1hZGQtRFQtcHJvcGVydGllcy10by1jcmFzaC1kdW1wLWtlcm5lbC1zLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA5LWFybTY0LWtkdW1wLUFkZC1zdXBwb3J0LWZvci1iaW5hcnktaW1hZ2UtZmlsZXMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMTAta2V4ZWMtQVJNLUZpeC1hZGRfYnVmZmVyX3BoeXNfdmlydC1hbGlnbi1pc3N1ZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS14ODYteDg2XzY0LUZpeC1mb3JtYXQtd2FybmluZy13aXRoLWRpZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMi1wcGMtRml4LWZvcm1hdC13YXJuaW5nLXdpdGgtZGllLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9rZXhlYy14MzIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS1QSUUtZHVyaW5nLWxpbmsucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtYXJtNjQtRGlzYWJsZS1QSUMucGF0Y2ggXAotICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjJiMmM1ZTZiMjlkNDY3ZDZlOTlkNTg3ZmI2YjdjZjUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjNlNjk1MTlkMmFjY2VkMjU2ODQzYjFlOGYxZWNmYTAwZDliNTRmYTA3NDQ5ZWQ3OGYwNWI5MTkzZjIzOTM3MCIKLQotU0VDVVJJVFlfUElFX0NGTEFHU19yZW1vdmUgPSAiLWZQSUUgLXBpZSIKLQotUEFDS0FHRVMgPSsgImtleGVjIGtkdW1wIHZtY29yZS1kbWVzZyIKLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLVJSRUNPTU1FTkRTXyR7UE59ID0gImtleGVjIGtkdW1wIHZtY29yZS1kbWVzZyIKLQotRklMRVNfa2V4ZWMgPSAiJHtzYmluZGlyfS9rZXhlYyIKLUZJTEVTX2tkdW1wID0gIiR7c2JpbmRpcn0va2R1bXAgXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXNjb25maWcva2R1bXAuY29uZiBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9rZHVtcCBcCi0gICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L2tkdW1wLWhlbHBlciBcCi0gICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2tkdW1wLnNlcnZpY2UgXAotIgotCi1GSUxFU192bWNvcmUtZG1lc2cgPSAiJHtzYmluZGlyfS92bWNvcmUtZG1lc2ciCi0KLWluaGVyaXQgdXBkYXRlLXJjLmQgc3lzdGVtZAotCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gImtkdW1wIgotSU5JVFNDUklQVF9OQU1FX2tkdW1wID0gImtkdW1wIgotSU5JVFNDUklQVF9QQVJBTVNfa2R1bXAgPSAic3RhcnQgNTYgMiAzIDQgNSAuIHN0b3AgNTYgMCAxIDYgLiIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZwotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9rZHVtcC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZwotCi0gICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICAgICAgICAgIGluc3RhbGwgLUQgLW0gMDc1NSAke1dPUktESVJ9L2tkdW1wICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9rZHVtcAotICAgICAgICBmaQotCi0gICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0va2R1bXAgJHtEfSR7bGliZXhlY2Rpcn0va2R1bXAtaGVscGVyCi0gICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0va2R1bXAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9rZHVtcC5zZXJ2aWNlCi0gICAgICAgICAgICAgICAgc2VkIC1pIC1lICdzLEBMSUJFWEVDRElSQCwke2xpYmV4ZWNkaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2tkdW1wLnNlcnZpY2UKLSAgICAgICAgZmkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4xNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4xNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmI0ODMyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjE2LmJiCkBAIC0wLDAgKzEsODYgQEAKKworU1VNTUFSWSA9ICJLZXhlYyBmYXN0IHJlYm9vdCB0b29scyIKK0RFU0NSSVBUSU9OID0gIktleGVjIGlzIGEgZmFzdCByZWJvb3QgZmVhdHVyZSB0aGF0IGxldHMgeW91IHJlYm9vdCB0byBhIG5ldyBMaW51eCBrZXJuZWwiCitBVVRIT1IgPSAiRXJpYyBCaWVkZXJtYW4iCitIT01FUEFHRSA9ICJodHRwOi8va2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMva2VybmVsL2tleGVjLyIKK1NFQ1RJT04gPSAia2VybmVsL3VzZXJsYW5kIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVhNWJlZDJmNjBkMzU3NjE4Y2ExNjFhZDUzOWY3YzBhIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2tleGVjL2tleGVjLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9YWYxMGY2YWU0YTg3MTU5NjVlNjQ4YWE2ODdhZDNlMDkiCitERVBFTkRTID0gInpsaWIgeHoiCisKK1BSID0gInIxIgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMva2VybmVsL2tleGVjL2tleGVjLXRvb2xzLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9rZHVtcCBcCisgICAgICAgICAgIGZpbGU6Ly9rZHVtcC5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2tkdW1wLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1wb3dlcnBjLWNoYW5nZS10aGUtbWVtb3J5LXNpemUtbGltaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wdXJnYXRvcnktUGFzcy1yLWRpcmVjdGx5LXRvLWxpbmtlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLWtleGVjLUFSTS1GaXgtYWRkX2J1ZmZlcl9waHlzX3ZpcnQtYWxpZ24taXNzdWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8va2V4ZWMteDMyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS1QSUUtZHVyaW5nLWxpbmsucGF0Y2ggXAorICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTE5ODk2OGRlNzliNWRlZDk2Zjk3ZjNjMmVhOTYzN2IiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2YxN2ZjOTliZjc3YzliMzlmMDZlZTg4YWMwZTg2ZDAzNDljNGEwYzNmODIxNGEzY2M3OGVlY2U4NzJmNmYzYSIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZAorCitleHBvcnQgTERGTEFHUyA9ICItTCR7U1RBR0lOR19MSUJESVJ9IgorRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtemxpYj15ZXMiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICAjIFJlbW92ZSB0aGUgcHJlcGFja2FnZWQgY29uZmlnLmggZnJvbSB0aGUgc291cmNlIHRyZWUgYXMgaXQgb3ZlcnJpZGVzCisgICAgIyB0aGUgc2FtZSBmaWxlIGdlbmVyYXRlZCBieSBjb25maWd1cmUgYW5kIHBsYWNlZCBpbiB0aGUgYnVpbGQgdHJlZQorICAgIHJtIC1mICR7U30vaW5jbHVkZS9jb25maWcuaAorCisgICAgIyBSZW1vdmUgdGhlICcqLmQnIGZpbGUgdG8gbWFrZSBzdXJlIHRoZSByZWNvbXBpbGUgaXMgT0sKKyAgICBmb3IgZGVwIGluIGBmaW5kICR7Qn0gLXR5cGUgZiAtbmFtZSAnKi5kJ2A7IGRvCisgICAgICAgIGRlcF9ub19kPSJgZWNobyAkZGVwIHwgc2VkICdzIy5kJCMjJ2AiCisgICAgICAgICMgUmVtb3ZlIGZpbGUuZCB3aGVuIHRoZXJlIGlzIGEgZmlsZS5vCisgICAgICAgIGlmIFsgLWYgIiRkZXBfbm9fZC5vIiBdOyB0aGVuCisgICAgICAgICAgICBybSAtZiAkZGVwCisgICAgICAgIGZpCisgICAgZG9uZQorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2tkdW1wLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCisKKyAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0va2R1bXAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wCisgICAgICAgIGZpCisKKyAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtXT1JLRElSfS9rZHVtcCAke0R9JHtsaWJleGVjZGlyfS9rZHVtcC1oZWxwZXIKKyAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS9rZHVtcC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2tkdW1wLnNlcnZpY2UKKyAgICAgICAgICAgICAgICBzZWQgLWkgLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZQorICAgICAgICBmaQorfQorCitQQUNLQUdFUyA9KyAia2V4ZWMga2R1bXAgdm1jb3JlLWRtZXNnIgorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorUlJFQ09NTUVORFNfJHtQTn0gPSAia2V4ZWMga2R1bXAgdm1jb3JlLWRtZXNnIgorCitGSUxFU19rZXhlYyA9ICIke3NiaW5kaXJ9L2tleGVjIgorRklMRVNfa2R1bXAgPSAiJHtzYmluZGlyfS9rZHVtcCBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9rZHVtcC5jb25mIFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wIFwKKyAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0va2R1bXAtaGVscGVyIFwKKyAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZSBcCisiCisKK0ZJTEVTX3ZtY29yZS1kbWVzZyA9ICIke3NiaW5kaXJ9L3ZtY29yZS1kbWVzZyIKKworSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJrZHVtcCIKK0lOSVRTQ1JJUFRfTkFNRV9rZHVtcCA9ICJrZHVtcCIKK0lOSVRTQ1JJUFRfUEFSQU1TX2tkdW1wID0gInN0YXJ0IDU2IDIgMyA0IDUgLiBzdG9wIDU2IDAgMSA2IC4iCisKK1NFQ1VSSVRZX1BJRV9DRkxBR1NfcmVtb3ZlID0gIi1mUElFIC1waWUiCisKK0NPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0Lip8aS44Ni4qfGFybS4qfGFhcmNoNjQuKnxwb3dlcnBjLip8bWlwcy4qKS0obGludXh8ZnJlZWJzZC4qKScKKworSU5TQU5FX1NLSVBfJHtQTn0gPSAiYXJjaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2QvZGVwbW9kd3JhcHBlci1jcm9zc18xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2RlcG1vZHdyYXBwZXItY3Jvc3NfMS4wLmJiCmluZGV4IDQ0ZDAxM2YuLjlhMTcyNjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2QvZGVwbW9kd3JhcHBlci1jcm9zc18xLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9kZXBtb2R3cmFwcGVyLWNyb3NzXzEuMC5iYgpAQCAtMTEsNiArMTEsNyBAQAogU1NUQVRFX1NDQU5fRklMRVMgKz0gImRlcG1vZHdyYXBwZXIiCiBFWFRSQV9TVEFHSU5HX0ZJWE1FUyArPSAiUEtHREFUQV9ESVIiCiAKK0RFUEVORFMgKz0gImttb2QtbmF0aXZlIgogZG9fcG9wdWxhdGVfc3lzcm9vdFtkZXBlbmRzXSA9ICIiCiAKIGRvX2luc3RhbGwoKSB7CkBAIC0yMywxNyArMjQsMTMgQEAKICAgICBlY2hvICJVc2FnZTogZGVwbW9kd3JhcHBlciAtYSAtYiByb290ZnMgS0VSTkVMX1ZFUlNJT04iID4mMgogICAgIGV4aXQgMQogZmkKLWlmIFsgISAtciAke1BLR0RBVEFfRElSfS9rZXJuZWwtZGVwbW9kL2tlcm5lbC1hYml2ZXJzaW9uIF07IHRoZW4KLSAgICBlY2hvICJVbmFibGUgdG8gcmVhZDogJHtQS0dEQVRBX0RJUn0va2VybmVsLWRlcG1vZC9rZXJuZWwtYWJpdmVyc2lvbiIgPiYyCi1lbHNlCi0gICAga2VybmVsYWJpPVwkKGNhdCAke1BLR0RBVEFfRElSfS9rZXJuZWwtZGVwbW9kL2tlcm5lbC1hYml2ZXJzaW9uKQotICAgIGlmIFsgIlwka2VybmVsYWJpIiAhPSAiXCQ0IiBdOyB0aGVuCi0gICAgICAgIGVjaG8gIkVycm9yOiBLZXJuZWwgdmVyc2lvbiBcJDQgZG9lcyBub3QgbWF0Y2gga2VybmVsLWFiaXZlcnNpb24gKFwka2VybmVsYWJpKSIgPiYyCi0gICAgICAgIGV4aXQgMQotICAgIGZpCisKK2tlcm5lbGFiaT0iIgoraWYgWyAtciAiJHtQS0dEQVRBX0RJUn0va2VybmVsLWRlcG1vZC9rZXJuZWwtYWJpdmVyc2lvbiIgXTsgdGhlbgorICAgIGtlcm5lbGFiaT1cJChjYXQgIiR7UEtHREFUQV9ESVJ9L2tlcm5lbC1kZXBtb2Qva2VybmVsLWFiaXZlcnNpb24iKQogZmkKIAotaWYgWyAhIC1yICR7UEtHREFUQV9ESVJ9L2tlcm5lbC1kZXBtb2QvU3lzdGVtLm1hcC1cJDQgXTsgdGhlbgoraWYgWyAhIC1yICR7UEtHREFUQV9ESVJ9L2tlcm5lbC1kZXBtb2QvU3lzdGVtLm1hcC1cJDQgXSB8fCBbICJcJGtlcm5lbGFiaSIgIT0gIlwkNCIgXTsgdGhlbgogICAgIGVjaG8gIlVuYWJsZSB0byByZWFkOiAke1BLR0RBVEFfRElSfS9rZXJuZWwtZGVwbW9kL1N5c3RlbS5tYXAtXCQ0IiA+JjIKICAgICBleGVjIGVudiBkZXBtb2QgIlwkMSIgIlwkMiIgIlwkMyIgIlwkNCIKIGVsc2UKQEAgLTQ1LDQgKzQyLDUgQEAKIAogU1lTUk9PVF9ESVJTICs9ICIke2JpbmRpcl9jcm9zc3NjcmlwdHN9IgogCitQQUNLQUdFUyA9ICIiCiBpbmhlcml0IG5vcGFja2FnZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2ttb2QuaW5jCmluZGV4IDdmYjEwYjUuLjI5ODg1ZmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kLmluYwpAQCAtMTQsOSArMTQsOSBAQAogICAgICAgICAgICAgICAgICAgICIKIGluaGVyaXQgYXV0b3Rvb2xzIGd0ay1kb2MgcGtnY29uZmlnIG1hbnBhZ2VzCiAKLVNSQ1JFViA9ICJlZjQyNTdiNTljNDMwN2I4YzYyN2Q4OWYzYzdmMWZlZWRiMzI1ODJmIgorU1JDUkVWID0gImFjYTRlY2ExMDNkNjY5OTU0M2Y3ZWQ2NjMzMzVjMjhjMmU5OTA4YmIiCiAjIExvb2tvdXQgZm9yIFBWIGJ1bXAgdG9vIHdoZW4gU1JDUkVWIGlzIGNoYW5nZWQKLVBWID0gIjI0K2dpdCR7U1JDUFZ9IgorUFYgPSAiMjUrZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS91dGlscy9rZXJuZWwva21vZC9rbW9kLmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly9kZXBtb2Qtc2VhcmNoLmNvbmYgXApAQCAtMzUsOSArMzUsNyBAQAogUEFDS0FHRUNPTkZJR1tsb2dnaW5nXSA9ICIgLS1lbmFibGUtbG9nZ2luZywtLWRpc2FibGUtbG9nZ2luZyIKIFBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbnBhZ2VzLCAtLWRpc2FibGUtbWFucGFnZXMsIGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKIAotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAgICAgICBndGtkb2NpemUgLS1kb2NkaXIgJHtTfS9saWJrbW9kL2RvY3MgLS1zcmNkaXIgJHtTfQotfQorR1RLRE9DX0RPQ0RJUiA9ICIke1N9L2xpYmttb2QvZG9jcyIKIAogZG9fY29uZmlndXJlX2FwcGVuZCAoKSB7CiAJc2VkIC1pICdzI31saWJ0b29sI30ke1RBUkdFVF9TWVN9LWxpYnRvb2wjJyAke0J9L2RvbHRsaWJ0b29sCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2ttb2QvYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2ttb2QvYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2gKaW5kZXggZmVhZmNiOS4uNWY0NWZjZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaApAQCAtMTEsMTAgKzExLDEwIEBACiAgY29uZmlndXJlLmFjIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBlYjBmOWQxLi5hNTM5OTY4IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKK0luZGV4OiBnaXQvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvY29uZmlndXJlLmFjCisrKysgZ2l0L2NvbmZpZ3VyZS5hYwogQEAgLTE0LDcgKzE0LDcgQEAgQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCiAgQUNfU1lTX0xBUkdFRklMRQogIEFDX1BSRUZJWF9ERUZBVUxUKFsvdXNyXSkKQEAgLTIzLDcgKzIzLDQgQEAKICtBTV9JTklUX0FVVE9NQUtFKFtjaGVjay1uZXdzIGZvcmVpZ24gMS4xMSBzaWxlbnQtcnVsZXMgdGFyLXBheCBuby1kaXN0LWd6aXAgZGlzdC14eiBzdWJkaXItb2JqZWN0cyBjb2xvci10ZXN0cyBzZXJpYWwtdGVzdHNdKQogIEFNX1NJTEVOVF9SVUxFUyhbeWVzXSkKICBMVF9JTklUKFtkaXNhYmxlLXN0YXRpYyBwaWMtb25seV0pCi0gCi0tLSAKLTEuOS4xCi0KKyBET0xUCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2ttb2QvZml4LU9fQ0xPRVhFQy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC9maXgtT19DTE9FWEVDLnBhdGNoCmluZGV4IDgxNjFkNjEuLjVkOWQ0MGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC9maXgtT19DTE9FWEVDLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC9maXgtT19DTE9FWEVDLnBhdGNoCkBAIC0xOCwxMiArMTgsMTIgQEAKICBsaWJrbW9kL2xpYmttb2QtaW50ZXJuYWwuaCB8ICAgIDQgKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKIAotZGlmZiAtLWdpdCBhL2xpYmttb2QvbGlia21vZC1pbnRlcm5hbC5oIGIvbGlia21vZC9saWJrbW9kLWludGVybmFsLmgKLWluZGV4IDAxODAxMjQuLjEwMGI0MGYgMTAwNjQ0Ci0tLS0gYS9saWJrbW9kL2xpYmttb2QtaW50ZXJuYWwuaAotKysrIGIvbGlia21vZC9saWJrbW9kLWludGVybmFsLmgKLUBAIC05LDYgKzksMTAgQEAKLSAjaW5jbHVkZSAibWFjcm8uaCIKK0luZGV4OiBnaXQvbGlia21vZC9saWJrbW9kLWludGVybmFsLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9saWJrbW9kL2xpYmttb2QtaW50ZXJuYWwuaAorKysrIGdpdC9saWJrbW9kL2xpYmttb2QtaW50ZXJuYWwuaAorQEAgLTEwLDYgKzEwLDEwIEBACisgCiAgI2luY2x1ZGUgImxpYmttb2QuaCIKICAKICsjaWZuZGVmIE9fQ0xPRVhFQwpAQCAtMzMsNiArMzMsMyBAQAogIHN0YXRpYyBfYWx3YXlzX2lubGluZV8gX3ByaW50Zl9mb3JtYXRfKDIsIDMpIHZvaWQKICAJa21vZF9sb2dfbnVsbChzdHJ1Y3Qga21vZF9jdHggKmN0eCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pIHt9CiAgCi0tLSAKLTEuNy4xMC40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC0wLjUvMDAwMS1SZWN0aWZ5LXRoZS1mdW5jdGlvbi1zaWduYXR1cmVzLXRvLWZpeC1wcm90b3R5cGUtbWlzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wLTAuNS8wMDAxLVJlY3RpZnktdGhlLWZ1bmN0aW9uLXNpZ25hdHVyZXMtdG8tZml4LXByb3RvdHlwZS1taXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyNDgxMzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wLTAuNS8wMDAxLVJlY3RpZnktdGhlLWZ1bmN0aW9uLXNpZ25hdHVyZXMtdG8tZml4LXByb3RvdHlwZS1taXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi1Gcm9tIGRiMTEyNzM5ZGM0ZjYwOGE5NjhiODEwNGIzODI5NTVkYzNkOTZjYTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCA3IFNlcCAyMDE1IDA3OjQwOjEwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlY3RpZnkgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZXMgdG8gZml4IHByb3RvdHlwZSBtaXNtYXRjaGVzCi0KLWNsYW5nIGlzIGxlc3MgZm9yZ2l2aW5nIHdoZW4gaXQgY29tZXMgdG8gY29kaW5nIHN0YW5kYXJkcywgY29ycmVjdCB0aGUKLWZ1bmN0aW9uIHNpZ25hdHVyZXMgdG8gcmVmbGVjdCB0aGUgZnVuY3Rpb24gbG9naWMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBmc3luYy5jICAgICAgfCA3ICsrKystLS0KLSBsYXRlbmN5dG9wLmggfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9mc3luYy5jIGIvZnN5bmMuYwotaW5kZXggODJkZmYwZS4uNWNlZmJhOSAxMDA2NDQKLS0tLSBhL2ZzeW5jLmMKLSsrKyBiL2ZzeW5jLmMKLUBAIC01MSw3ICs1MSw3IEBAIHN0cnVjdCBmc3luY19maWxlcyB7Ci0gc3RhdGljIEdMaXN0ICpmc3luY19kYXRhOwotIAotIAotLXN0YXRpYyBjaGFpbl9maWxlKHN0cnVjdCBmc3luY19wcm9jZXNzICpwcm9jLCBjaGFyICpmaWxlbmFtZSkKLStzdGF0aWMgdm9pZCBjaGFpbl9maWxlKHN0cnVjdCBmc3luY19wcm9jZXNzICpwcm9jLCBjaGFyICpmaWxlbmFtZSkKLSB7Ci0gCXN0cnVjdCBmc3luY19maWxlcyAqZmlsZTsKLSAJR0xpc3QgKml0ZW07Ci1AQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgY2hhaW5fZmlsZShzdHJ1Y3QgZnN5bmNfcHJvY2VzcyAqcHJvYywgY2hhciAqZmlsZW5hbWUpCi0gCXByb2MtPmZpbGVzID0gZ19saXN0X2FwcGVuZChwcm9jLT5maWxlcywgZmlsZSk7Ci0gfQotIAotLXN0YXRpYyByZXBvcnRfZmlsZShjaGFyICpwcm9jZXNzLCBjaGFyICpmaWxlKQotK3N0YXRpYyB2b2lkIHJlcG9ydF9maWxlKGNoYXIgKnByb2Nlc3MsIGNoYXIgKmZpbGUpCi0gewotIAlzdHJ1Y3QgZnN5bmNfcHJvY2VzcyAqcHJvYzsKLSAJR0xpc3QgKml0ZW07Ci1AQCAtMTU3LDkgKzE1NywxMCBAQCBpbnQgZW5hYmxlX2ZzeW5jX3RyYWNlcih2b2lkKQotIAl3cml0ZV90b19maWxlKCIvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2N1cnJlbnRfdHJhY2VyIiwgImZzeW5jIik7CQotIAl3cml0ZV90b19maWxlKCIvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2l0ZXJfY3RybCIsICJmdHJhY2VfcHJpbnRrIik7CQotIAl3cml0ZV90b19maWxlKCIvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL3RyYWNpbmdfb24iLCAiMSIpOwotKwlyZXR1cm4gcmV0OwotIH0KLSAKLS1pbnQgZGlzYWJsZV9mc3luY190cmFjZXIodm9pZCkKLSt2b2lkIGRpc2FibGVfZnN5bmNfdHJhY2VyKHZvaWQpCi0gewotIAl3cml0ZV90b19maWxlKCIvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL3RyYWNpbmdfb24iLCAiMCIpOwotIH0KLWRpZmYgLS1naXQgYS9sYXRlbmN5dG9wLmggYi9sYXRlbmN5dG9wLmgKLWluZGV4IDUzOTRkNzMuLjlkMTA3YTggMTAwNjQ0Ci0tLS0gYS9sYXRlbmN5dG9wLmgKLSsrKyBiL2xhdGVuY3l0b3AuaAotQEAgLTU0LDUgKzU0LDUgQEAgZXh0ZXJuIGNoYXIgKnRyYW5zbGF0ZShjaGFyICpsaW5lKTsKLSBleHRlcm4gdm9pZCBpbml0X3RyYW5zbGF0aW9ucyhjaGFyICpmaWxlbmFtZSk7Ci0gZXh0ZXJuIGludCBmc3luY19kaXNwbGF5KGludCBkdXJhdGlvbik7Ci0gZXh0ZXJuIGludCBlbmFibGVfZnN5bmNfdHJhY2VyKHZvaWQpOwotLWV4dGVybiBpbnQgZGlzYWJsZV9mc3luY190cmFjZXIodm9pZCk7Ci0rZXh0ZXJuIHZvaWQgZGlzYWJsZV9mc3luY190cmFjZXIodm9pZCk7Ci0gZXh0ZXJuIHZvaWQgdXBkYXRlX2xpc3Qodm9pZCk7Ci0tLSAKLTIuNS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC0wLjUvbGF0ZW5jeXRvcC1mc3luYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC0wLjUvbGF0ZW5jeXRvcC1mc3luYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzg0OGNjZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sYXRlbmN5dG9wL2xhdGVuY3l0b3AtMC41L2xhdGVuY3l0b3AtZnN5bmMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1saW51eDogc3lzZnM6IHVzZSB0cmFjaW5nX29uIGFzIHRyYWNpbmdfZW5hYmxlZCBpcyBkZXByZWNhdGVkCi0KLXRyYWNpbmdfZW5hYmxlZCB1c2UgaW4gdGhlIGtlcm5lbCBpcyBiZWluZyBkZXByZWNhdGVkIGFzIHBlciBjb21taXQKLTY3NTJhYjRhOWMzMCBbdHJhY2luZzogRGVwcmVjYXRlIHRyYWNpbmdfZW5hYmxlZCBmb3IgdHJhY2luZ19vbl0gaW4KLXRoZSBsaW51eCBtYWlubGluZSBrZXJuZWwuIHRyYWNpbmdfZW5hYmxlZCB1c2Ugd2lsbCBnZW5lcmF0ZSBhIHdhcm5pbmcKLWFuZCBtYXkgbm8gbG9uZ2VyIGZ1bmN0aW9uIGFzIGV4cGVjdGVkLCB0aGVyZWZvcmUgbW92ZSB0byB1c2UgdHJhY2luZ19vbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IERlbm5pcyBIYWxsIDxkZW5uaXMuaGFsbEB3aW5kcml2ZXIuY29tPgotCi1JbmRleDogbGF0ZW5jeXRvcC0wLjUvZnN5bmMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxhdGVuY3l0b3AtMC41Lm9yaWcvZnN5bmMuYwkyMDEyLTA4LTAzIDEwOjQ1OjQ5LjAwMDAwMDAwMCAtMDQwMAotKysrIGxhdGVuY3l0b3AtMC41L2ZzeW5jLmMJMjAxMi0wOC0wMyAxMDo0ODozOS4wMDAwMDAwMDAgLTA0MDAKLUBAIC0xNDksMTkgKzE0OSwxOSBAQAotICAqIGNkIC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcKLSAgKiBlY2hvIGZzeW5jID4gY3VycmVudF90cmFjZXIKLSAgKiBlY2hvIGZ0cmFjZV9wcmludGsgPiBpdGVyX2N0cmwgCi0tICogZWNobyAxID4gdHJhY2luZ19lbmFibGVkCi0rICogZWNobyAxID4gdHJhY2luZ19vbgotICAqLwotIAlyZXQgPSBzeXN0ZW0oIi9iaW4vbW91bnQgLXQgZGVidWdmcyBub25lIC9zeXMva2VybmVsL2RlYnVnLyIpOwotIAlpZiAoIXJldCkgCi0gCQlyZXR1cm4gLTE7Ci0gCXdyaXRlX3RvX2ZpbGUoIi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvY3VycmVudF90cmFjZXIiLCAiZnN5bmMiKTsJCi0gCXdyaXRlX3RvX2ZpbGUoIi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvaXRlcl9jdHJsIiwgImZ0cmFjZV9wcmludGsiKTsJCi0tCXdyaXRlX3RvX2ZpbGUoIi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvdHJhY2luZ19lbmFibGVkIiwgIjEiKTsKLSsJd3JpdGVfdG9fZmlsZSgiL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy90cmFjaW5nX29uIiwgIjEiKTsKLSB9Ci0gCi0gaW50IGRpc2FibGVfZnN5bmNfdHJhY2VyKHZvaWQpCi0gewotLQl3cml0ZV90b19maWxlKCIvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL3RyYWNpbmdfZW5hYmxlZCIsICIwIik7Ci0rCXdyaXRlX3RvX2ZpbGUoIi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvdHJhY2luZ19vbiIsICIwIik7Ci0gfQotIAotIAotQEAgLTMzOSw4ICszMzksOCBAQAotIAkJaWYgKGN1cmR1cmF0aW9uID4gNSkKLSAJCQljdXJkdXJhdGlvbiA9IDU7Ci0gCQkvKiBjbGVhciB0aGUgZnRyYWNlIGJ1ZmZlciAqLwotLQkJd3JpdGVfdG9fZmlsZSgiL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy90cmFjaW5nX2VuYWJsZWQiLCAiMCIpOwotLQkJd3JpdGVfdG9fZmlsZSgiL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy90cmFjaW5nX2VuYWJsZWQiLCAiMSIpOwotKwkJd3JpdGVfdG9fZmlsZSgiL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy90cmFjaW5nX29uIiwgIjAiKTsKLSsJCXdyaXRlX3RvX2ZpbGUoIi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvdHJhY2luZ19vbiIsICIxIik7Ci0gCQlrZXkgPSBzZWxlY3QoMSwgJnJmZHMsIE5VTEwsIE5VTEwsICZlbmQpOwotIAkJcGFyc2VfZnRyYWNlKCk7Ci0gCQlwcmludF9nbG9iYWxfbGlzdCgpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wLTAuNS9sYXRlbmN5dG9wLW1ha2VmaWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wLTAuNS9sYXRlbmN5dG9wLW1ha2VmaWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTQ3ZmRhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC0wLjUvbGF0ZW5jeXRvcC1tYWtlZmlsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLQotU2lnbmVkLW9mZi1ieTogSmFjayBNaXRjaGVsbCA8amFjay5taXRjaGVsbEBkYmJyb2FkY2FzdC5jby51az4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUub3JpZyBiL01ha2VmaWxlCi1pbmRleCAxNmEyMzY5Li5mYTc5N2EyIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUub3JpZwotKysrIGIvTWFrZWZpbGUKLUBAIC0xLDEwICsxLDExIEBACi0tIyBGSVhNRTogVXNlIGF1dG9jb25mID8KLS1IQVNfR1RLX0dVSSA9IDEKLSsjCi0rIwotIAotIERFU1RESVIgPQotIFNCSU5ESVIgPSAvdXNyL3NiaW4KLSBYQ0ZMQUdTID0gLVcgIC1nIGBwa2ctY29uZmlnIC0tY2ZsYWdzIGdsaWItMi4wYCAtRF9GT1JUSUZZX1NPVVJDRT0yIC1Xbm8tc2lnbi1jb21wYXJlCi0tTERGID0gLVdsLC0tYXMtbmVlZGVkIGBwa2ctY29uZmlnIC0tbGlicyBnbGliLTIuMGAgICAtbG5jdXJzZXN3IAotK0xERiA9IC1XbCwtLWFzLW5lZWRlZCBgcGtnLWNvbmZpZyAtLWxpYnMgZ2xpYi0yLjBgICAgLWxuY3Vyc2VzICQoTERGTEFHUykKLStDQyA/PSBnY2MKLSAKLSBPQkpTPSBsYXRlbmN5dG9wLm8gdGV4dF9kaXNwbGF5Lm8gdHJhbnNsYXRlLm8gZnN5bmMubwotIAotQEAgLTI2LDE2ICsyNywxNyBAQCBlbmRpZgotIAotICMgV2Ugd3JpdGUgZXhwbGljaXR5IHRoaXMgImltcGxpY2l0IHJ1bGUiCi0gJS5vIDogJS5jCi0tCWdjYyAtYyAkKENGTEFHUykgJChYQ0ZMQUdTKSAkPCAtbyAkQAotKwkkKENDKSAtYyAkKENGTEFHUykgJChYQ0ZMQUdTKSAkPCAtbyAkQAotIAotIGxhdGVuY3l0b3A6ICAkKE9CSlMpIGxhdGVuY3l0b3AuaCBNYWtlZmlsZQotLQlnY2MgJChDRkxBR1MpICQoT0JKUykgJChMREYpIC1vIGxhdGVuY3l0b3AgCi0rCSQoQ0MpICQoQ0ZMQUdTKSAkKE9CSlMpICQoTERGKSAtbyBsYXRlbmN5dG9wCi0gCi0gY2xlYW46Ci0gCXJtIC1mICp+IGxhdGVuY3l0b3AgREVBREpPRSAqLm8KLSAKLSBpbnN0YWxsOiBsYXRlbmN5dG9wCi0gCW1rZGlyIC1wICQoREVTVERJUikvdXNyL3NoYXJlL2xhdGVuY3l0b3AKLSsJbWtkaXIgLXAgJChERVNURElSKS8kKFNCSU5ESVIpCi0gCWluc3RhbGwgLW0gMDY0NCBsYXRlbmN5dG9wLnRyYW5zICQoREVTVERJUikvdXNyL3NoYXJlL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC50cmFucwotIAlpbnN0YWxsIC1tIDA2NDQgKi5wbmcgJChERVNURElSKS91c3Ivc2hhcmUvbGF0ZW5jeXRvcC8KLSAJaW5zdGFsbCAtbSAwNzU1IGxhdGVuY3l0b3AgJChERVNURElSKSQoU0JJTkRJUikvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sYXRlbmN5dG9wL2xhdGVuY3l0b3BfMC41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wXzAuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWIxOTQ3MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sYXRlbmN5dG9wL2xhdGVuY3l0b3BfMC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJMaW51eCB0b29sIGZvciBtZWFzdXJpbmcgYW5kIGZpeGluZyBsYXRlbmN5IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5sYXRlbmN5dG9wLm9yZy8iCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9sYXRlbmN5dG9wLmM7ZW5kbGluZT0yMzttZDU9ZWU5ZWE5YjE0MTUzNTZlNTczNGFkYWQ0YTg3ZGM3ZmEiCi0KLWluaGVyaXQgcGtnY29uZmlnCi0KLURFUEVORFMgPSAidmlydHVhbC9saWJpbnRsIG5jdXJzZXMgZ2xpYi0yLjAiCi0KLVBSID0gInIzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9wa2dzLmZlZG9yYXByb2plY3Qub3JnL3JlcG8vcGtncy8ke0JQTn0vJHtCUH0udGFyLmd6LzczYmIzMzcxYzZlZTBiMGU2OGUyNTI4OTAyN2U4NjVjLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgICBmaWxlOi8vbGF0ZW5jeXRvcC1tYWtlZmlsZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vbGF0ZW5jeXRvcC1mc3luYy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1SZWN0aWZ5LXRoZS1mdW5jdGlvbi1zaWduYXR1cmVzLXRvLWZpeC1wcm90b3R5cGUtbWlzLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjczYmIzMzcxYzZlZTBiMGU2OGUyNTI4OTAyN2U4NjVjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjllN2Y3MmZiZWE3YmQ5MThlNzEyMTJhMWVhYmFhZDg0ODhkMmM2MDIyMDVkMmUzYzk1ZDYyY2Q1N2U5MjAzZWYiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbeDExXSA9ICIsLGd0aysiCi0KLUVYVFJBX09FTUFLRV9YID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3gxMScsICdIQVNfR1RLX0dVST0xJywgJycsIGQpfSIKLQotI0NGTEFHUyArPSAiJHtMREZMQUdTfSIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9ICR7RVhUUkFfT0VNQUtFX1h9Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saWJwZm0vZmlsZXMvMDAwMS1NYWtlZmlsZS1BZGQtTERGTEFHUy12YXJpYWJsZS10by1TTERGTEFHUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpYnBmbS9maWxlcy8wMDAxLU1ha2VmaWxlLUFkZC1MREZMQUdTLXZhcmlhYmxlLXRvLVNMREZMQUdTLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTlhN2Y3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpYnBmbS9maWxlcy8wMDAxLU1ha2VmaWxlLUFkZC1MREZMQUdTLXZhcmlhYmxlLXRvLVNMREZMQUdTLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSAyNzJhOGEwNjlhOGY1ZjA2YTFlNWRmYTBlZjEyZjVmOTI5ODQ3MjhiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTm9vciA8bm9vcl9haHNhbkBtZW50b3IuY29tPgotRGF0ZTogV2VkLCAxMiBBdWcgMjAxNSAyMDo1NDowMCArMDUwMAotU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZTogQWRkIExERkxBR1MgdmFyaWFibGUgdG8gU0xERkxBR1MuCi0KLSogQWRkIExERkxBR1MgdmFyaWFibGUgdG8gU0xERkxBR1Mgc28gdGhhdCBleHRyYSBsaW5rZXIKLSAgZmxhZ3MgY2FuIGJlIHNlbnQgdmlhIHRoaXMgdmFyaWFibGUuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtwZXJmbW9uMi1saWJwZm00LWNvbW1pdHNAbGlzdHMuc291cmNlZm9yZ2UubmV0XQotCi1TaWduZWQtb2ZmLWJ5OiBOb29yIEFoc2FuIDxub29yX2Foc2FuQG1lbnRvci5jb20+Ci0tLS0KLSBsaWIvTWFrZWZpbGUgfCAgICAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGUKLWluZGV4IDFjYzg3NjUuLjRiZDkyZWYgMTAwNjQ0Ci0tLS0gYS9saWIvTWFrZWZpbGUKLSsrKyBiL2xpYi9NYWtlZmlsZQotQEAgLTE4Nyw3ICsxODcsNyBAQCBDRkxBR1MgKz0gLURDT05GSUdfUEZNTElCX0NFTEwKLSBlbmRpZgotIAotIGlmZXEgKCQoU1lTKSxMaW51eCkKLS1TTERGTEFHUz0tc2hhcmVkIC1XbCwtc29uYW1lIC1XbCwkKFZMSUJQRk0pCi0rU0xERkxBR1M9JChMREZMQUdTKSAtc2hhcmVkIC1XbCwtc29uYW1lIC1XbCwkKFZMSUJQRk0pCi0gU0xJQlBGTT1saWJwZm0uc28uJChWRVJTSU9OKS4kKFJFVklTSU9OKS4kKEFHRSkKLSBWTElCUEZNPWxpYnBmbS5zby4kKFZFUlNJT04pCi0gU09MSUJFWFQ9c28KLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saWJwZm0vZmlsZXMvZml4LW1pc2xlYWRpbmctaW5kZW50YXRpb24tZXJyb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saWJwZm0vZmlsZXMvZml4LW1pc2xlYWRpbmctaW5kZW50YXRpb24tZXJyb3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1ZDQ3ZWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGlicGZtL2ZpbGVzL2ZpeC1taXNsZWFkaW5nLWluZGVudGF0aW9uLWVycm9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUZpeCBjb21waWxlIGVycm9yOgotCi18IHN5c3RfY291bnQuYzozNDY6MzogZXJyb3I6IHRoaXMgJ2ZvcicgY2xhdXNlIGRvZXMgbm90IGd1YXJkLi4uIFstV2Vycm9yPW1pc2xlYWRpbmctaW5kZW50YXRpb25dIAotfCAgICBmb3IoYz1jbWluIDsgYyA8IGNtYXg7IGMrKykgCi18ICAgICAgIF5+fiAKLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLWRpZmYgLS1naXQgYS9wZXJmX2V4YW1wbGVzL3N5c3RfY291bnQuYyBiL3BlcmZfZXhhbXBsZXMvc3lzdF9jb3VudC5jCi1pbmRleCAwZDUzMDc4Li4yZGZiOWI5IDEwMDY0NAotLS0tIGEvcGVyZl9leGFtcGxlcy9zeXN0X2NvdW50LmMKLSsrKyBiL3BlcmZfZXhhbXBsZXMvc3lzdF9jb3VudC5jCi1AQCAtMzQzLDggKzM0Myw5IEBAIG1lYXN1cmUodm9pZCkKLSAKLSAJCWZvciAoZGVsYXkgPSAxIDsgZGVsYXkgPD0gb3B0aW9ucy5kZWxheTsgZGVsYXkrKykgewotIAotLQkJZm9yKGM9Y21pbiA7IGMgPCBjbWF4OyBjKyspCi0tCQkJc3RhcnRfY3B1KGMpOwotKwkJCWZvcihjPWNtaW4gOyBjIDwgY21heDsgYysrKSB7Ci0rCQkJCXN0YXJ0X2NwdShjKTsKLSsJCQl9Ci0gCi0gCQkJaWYgKDApIHsKLSAJCQkJdHYudHZfc2VjID0gMDsKLUBAIC0zNTMsOCArMzU0LDkgQEAgbWVhc3VyZSh2b2lkKQotIAkJCX0gZWxzZQotIAkJCQlzbGVlcCgxKTsKLSAKLS0JCWZvcihjPWNtaW4gOyBjIDwgY21heDsgYysrKQotLQkJCXN0b3BfY3B1KGMpOwotKwkJCWZvcihjPWNtaW4gOyBjIDwgY21heDsgYysrKSB7Ci0rCQkJCXN0b3BfY3B1KGMpOwotKwkJCX0KLSAKLSAJCQlmb3IoYyA9IGNtaW47IGMgPCBjbWF4OyBjKyspIHsKLSAJCQkJcHJpbnRmKCIjICUnZHMgLS0tLS1cbiIsIGRlbGF5KTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpYnBmbS9saWJwZm00XzQuNi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGlicGZtL2xpYnBmbTRfNC42LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxMzZlYWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGlicGZtL2xpYnBmbTRfNC42LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIk1vbml0b3JpbmcgdG9vbHMgZXhwbG9pdGluZyB0aGUgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyBldmVudHMiCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgYSBsaWJyYXJ5LCBjYWxsZWQgbGlicGZtNCB3aGljaCBpcyB1c2VkIHRvIGRldmVsb3AgXAotbW9uaXRvcmluZyB0b29scyBleHBsb2l0aW5nIHRoZSBwZXJmb3JtYW5jZSBtb25pdG9yaW5nIGV2ZW50cyBzdWNoIGFzIHRob3NlIFwKLXByb3ZpZGVkIGJ5IHRoZSBQZXJmb3JtYW5jZSBNb25pdG9yaW5nIFVuaXQgKFBNVSkgb2YgbW9kZXJuIHByb2Nlc3NvcnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3BlcmZtb24yLnNvdXJjZWZvcmdlLm5ldC8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9MTQ0ODIyJmF0aWQ9NzU5OTUzJnNvdXJjZT1uYXZiYXIiCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGRlNDg4ZjNiZDQ0MjRlMzA4ZTJlMzk5Y2I5OWM3ODgiCi0KLVNFQ1RJT04gPSAiZGV2ZWwiCi0KLUNPTVBBVElCTEVfSE9TVCA9ICJwb3dlcnBjNjQiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9wZXJmbW9uMi8ke0JQTn0vbGlicGZtLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLUFkZC1MREZMQUdTLXZhcmlhYmxlLXRvLVNMREZMQUdTLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1taXNsZWFkaW5nLWluZGVudGF0aW9uLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1MDc3YjkwMjI0NDBlNDk1MWQ5NmYyZDBlNzNiZDQ4NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1YWIxZTViMDQ3MjU1MGY5MDM3YTg4MDA4MzRmNmJjM2I5Mjc2OTAwNzBmNjlmYWMwYjY3Mjg0YjRiMDVmZDVmIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9wZXJmbW9uMi9maWxlcy9saWJwZm00LyIKLQotRVhUUkFfT0VNQUtFID0gIkRFU1RESVI9XCIke0R9XCIgUFJFRklYPVwiJHtwcmVmaXh9XCIgTElCRElSPVwiJHtsaWJkaXJ9XCIgTERDT05GSUc9XCJ0cnVlXCIiCi1FWFRSQV9PRU1BS0VfYXBwZW5kX3Bvd2VycGMgPSAiIEFSQ0g9XCJwb3dlcnBjXCIiCi1FWFRSQV9PRU1BS0VfYXBwZW5kX3Bvd2VycGM2NCA9ICIgQVJDSD1cInBvd2VycGNcIiBCSVRNT0RFPVwiNjRcIiIKLQotUyA9ICIke1dPUktESVJ9L2xpYnBmbS0ke1BWfSIKLQotZG9faW5zdGFsbCAoKSB7Ci0Jb2VfcnVubWFrZSBpbnN0YWxsCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV9naXQuYmIKaW5kZXggOTA1NGIzMy4uOGQ2ZjJmMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlX2dpdC5iYgpAQCAtMzcsNiArMzcsNyBAQAogICAgICYgRmlybXdhcmUtYXRoOWstaHRjIFwKICAgICAmIEZpcm13YXJlLXBoYW5mdyBcCiAgICAgJiBGaXJtd2FyZS1xYXQgXAorICAgICYgRmlybXdhcmUtcWNvbSBcCiAgICAgJiBGaXJtd2FyZS1xbGExMjgwIFwKICAgICAmIEZpcm13YXJlLXFsYTJ4eHggXAogICAgICYgRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hcjNrIFwKQEAgLTkwLDEyICs5MSwxMyBAQAogICAgIGZpbGU6Ly9MSUNFTkNFLk1hcnZlbGw7bWQ1PTlkZGVhMTczNGE0YmFmM2M3OGQ4NDUxNTFmNDJhMzdhIFwKICAgICBmaWxlOi8vTElDRU5DRS5tb3hhO21kNT0xMDg2NjE0NzY3ZDhjY2Y3NDRhOTIzMjg5ZDNkNDI2MSBcCiAgICAgZmlsZTovL0xJQ0VOQ0UubXlyaTEwZ2VfZmlybXdhcmU7bWQ1PTQyZTMyZmI4OWY2Yjk1OWNhMjIyZTI1YWM4ZGY4ZmVkIFwKLSAgICBmaWxlOi8vTElDRU5DRS5OZXRyb25vbWU7bWQ1PWNkMmEzZTZlZmZlM2NkZjQyNzMxNTc1YjhlOTQ3N2VkIFwKKyAgICBmaWxlOi8vTElDRU5DRS5OZXRyb25vbWU7bWQ1PTRhZGQwOGYyNTc3MDg2ZDQ0NDQ3OTk2NTAzY2RkZjVmIFwKICAgICBmaWxlOi8vTElDRU5DRS5udmlkaWE7bWQ1PTQ0MjhhOTIyZWQzYmEyY2VlYzk1ZjA3NmE0ODhjZTA3IFwKICAgICBmaWxlOi8vTElDRU5DRS5PTFBDO21kNT01YjkxN2Y5ZDhjMDYxOTkxYmU0ZjZmNWYxMDg3MTljZCBcCiAgICAgZmlsZTovL0xJQ0VOQ0Uub3Blbi1hdGg5ay1odGMtZmlybXdhcmU7bWQ1PTFiMzNjOWY0ZDE3YmM0ZDQ1N2JkYjIzNzI3MDQ2ODM3IFwKICAgICBmaWxlOi8vTElDRU5DRS5waGFuZnc7bWQ1PTk1NGRjZWMwZTA1MWY5NDA5ODEyYjU2MWVhNzQzYmZhIFwKICAgICBmaWxlOi8vTElDRU5DRS5xYXRfZmlybXdhcmU7bWQ1PTllN2Q4YmVhNzc2MTJkN2NjN2Q5ZTliNTRiNjIzMDYyIFwKKyAgICBmaWxlOi8vTElDRU5TRS5xY29tO21kNT0xNjRlMzM2MmE1MzhlYjExZDNhYzUxZThlMTM0Mjk0YiBcCiAgICAgZmlsZTovL0xJQ0VOQ0UucWxhMTI4MDttZDU9ZDY4OTU3MzJlNjIyZDk1MDYwOTA5MzIyM2EyYzRmNWQgXAogICAgIGZpbGU6Ly9MSUNFTkNFLnFsYTJ4eHg7bWQ1PTUwNTg1NWU5MjFiNzVmMWJlNGE0MzdhZDliNzlkZmYwIFwKICAgICBmaWxlOi8vTElDRU5TRS5RdWFsY29tbUF0aGVyb3NfYXIzazttZDU9YjVmZTI0NGZiMmI1MzIzMTFkZTE0NzJhM2JjMDZkYTUgXApAQCAtMTE2LDcgKzExOCw3IEBACiAgICAgZmlsZTovL0xJQ0VOQ0UueGM0MDAwO21kNT0wZmY1MWQyZGM0OWZjZTA0ODE0YzkxNTUwODEwOTJmMCBcCiAgICAgZmlsZTovL0xJQ0VOQ0UueGM1MDAwO21kNT0xZTE3MGMxMzE3NTMyM2MzMmM3ZjRkMDk5OGQ1M2Y2NiBcCiAgICAgZmlsZTovL0xJQ0VOQ0UueGM1MDAwYzttZDU9MTJiMDJlZmEzMDQ5ZGI2NWQ1MjRhZWI0MThkZDg3Y2EgXAotICAgIGZpbGU6Ly9XSEVOQ0U7bWQ1PTAzOGVkYmM5ZTc0NDE3MWQ4YjYyMzVlMDIyNDAyOGJhIFwKKyAgICBmaWxlOi8vV0hFTkNFO21kNT02ZjQ2OTg2ZjRlOTEzZWYxNmI3NjVjMjMxOWNjNTE0MSBcCiAiCiAKICMgVGhlc2UgYXJlIG5vdCBjb21tb24gbGljZW5zZXMsIHNldCBOT19HRU5FUklDX0xJQ0VOU0UgZm9yIHRoZW0KQEAgLTE1Niw2ICsxNTgsNyBAQAogTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWF0aDlrLWh0Y10gPSAiTElDRU5DRS5vcGVuLWF0aDlrLWh0Yy1maXJtd2FyZSIKIE5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1waGFuZnddID0gIkxJQ0VOQ0UucGhhbmZ3IgogTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXFhdF0gPSAiTElDRU5DRS5xYXRfZmlybXdhcmUiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcWNvbV0gPSAiTElDRU5TRS5xY29tIgogTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXFsYTEyODBdID0gIkxJQ0VOQ0UucWxhMTI4MCIKIE5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1xbGEyeHh4XSA9ICJMSUNFTkNFLnFsYTJ4eHgiCiBOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hcjNrXSA9ICJMSUNFTlNFLlF1YWxjb21tQXRoZXJvc19hcjNrIgpAQCAtMTc4LDEzICsxODEsMTMgQEAKIE5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS14YzUwMDBjXSA9ICJMSUNFTkNFLnhjNTAwMGMiCiBOT19HRU5FUklDX0xJQ0VOU0VbV0hFTkNFXSA9ICJXSEVOQ0UiCiAKLVNSQ1JFViA9ICJiZjA0MjkxMzA5ZDMxNjljMGFkM2I4ZGI1MjU2NDIzNWJiZDA4ZTMwIgorU1JDUkVWID0gIjhmYzJkNGU1NTY4NWJmNzNiNmY3NzUyMzgzZGE5MDY3NDA0YTc0YmIiCiBQRSA9ICIxIgogUFYgPSAiMC4wK2dpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9maXJtd2FyZS9saW51eC1maXJtd2FyZS5naXQiCiAKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCkBAIC0yNDksMTQgKzI1MiwxOSBAQAogICAgICAgICAgICAgICR7UE59LWl3bHdpZmktNzI2MCBcCiAgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS03MjY1IFwKICAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTcyNjVkICR7UE59LWl3bHdpZmktODAwMGMgJHtQTn0taXdsd2lmaS04MjY1IFwKKyAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTkwMDAgXAogICAgICAgICAgICAgICR7UE59LWl3bHdpZmktbWlzYyBcCiAgICAgICAgICAgICAgJHtQTn0taWJ0LWxpY2Vuc2UgJHtQTn0taWJ0ICR7UE59LWlidC1taXNjIFwKICAgICAgICAgICAgICAke1BOfS1pYnQtMTEtNSAke1BOfS1pYnQtMTItMTYgJHtQTn0taWJ0LWh3LTM3LTcgJHtQTn0taWJ0LWh3LTM3LTggXAorICAgICAgICAgICAgICR7UE59LWlidC0xNyBcCiAgICAgICAgICAgICAgJHtQTn0taTkxNS1saWNlbnNlICR7UE59LWk5MTUgXAogICAgICAgICAgICAgICR7UE59LWFkc3Atc3N0LWxpY2Vuc2UgJHtQTn0tYWRzcC1zc3QgXAogICAgICAgICAgICAgICR7UE59LWJueDItbWlwcyBcCiAgICAgICAgICAgICAgJHtQTn0tbmV0cm9ub21lLWxpY2Vuc2UgJHtQTn0tbmV0cm9ub21lIFwKICAgICAgICAgICAgICAke1BOfS1xYXQgJHtQTn0tcWF0LWxpY2Vuc2UgXAorICAgICAgICAgICAgICR7UE59LXFjb20tbGljZW5zZSBcCisgICAgICAgICAgICAgJHtQTn0tcWNvbS12ZW51cy0xLjggJHtQTn0tcWNvbS12ZW51cy00LjIgXAorICAgICAgICAgICAgICR7UE59LXFjb20tYWRyZW5vLWEzeHggJHtQTn0tcWNvbS1hZHJlbm8tYTUzMCBcCiAgICAgICAgICAgICAgJHtQTn0td2hlbmNlLWxpY2Vuc2UgXAogICAgICAgICAgICAgICR7UE59LWxpY2Vuc2UgXAogICAgICAgICAgICAgICIKQEAgLTU5Niw2ICs2MDQsNyBAQAogTElDRU5TRV8ke1BOfS1pd2x3aWZpLTcyNjVkICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgogTElDRU5TRV8ke1BOfS1pd2x3aWZpLTgwMDBjICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgogTElDRU5TRV8ke1BOfS1pd2x3aWZpLTgyNjUgICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTkwMDAgICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgogTElDRU5TRV8ke1BOfS1pd2x3aWZpLW1pc2MgICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgogTElDRU5TRV8ke1BOfS1pd2x3aWZpLWxpY2Vuc2UgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgogCkBAIC02MjIsNiArNjMxLDcgQEAKIEZJTEVTXyR7UE59LWl3bHdpZmktNzI2NWQgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNzI2NUQtKi51Y29kZSIKIEZJTEVTXyR7UE59LWl3bHdpZmktODAwMGMgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktODAwMEMtKi51Y29kZSIKIEZJTEVTXyR7UE59LWl3bHdpZmktODI2NSAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS04MjY1LSoudWNvZGUiCitGSUxFU18ke1BOfS1pd2x3aWZpLTkwMDAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktOTAwMC0qLnVjb2RlIgogRklMRVNfJHtQTn0taXdsd2lmaS1taXNjICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLSoudWNvZGUiCiAKIFJERVBFTkRTXyR7UE59LWl3bHdpZmktMTM1LTYgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKQEAgLTY0NSw2ICs2NTUsNyBAQAogUkRFUEVORFNfJHtQTn0taXdsd2lmaS03MjY1ZCAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgogUkRFUEVORFNfJHtQTn0taXdsd2lmaS04MDAwYyAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgogUkRFUEVORFNfJHtQTn0taXdsd2lmaS04MjY1ICAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS05MDAwICAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgogUkRFUEVORFNfJHtQTn0taXdsd2lmaS1taXNjICAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgogCiAjIC1pd2x3aWZpLW1pc2MgaXMgYSAiY2F0Y2ggYWxsIiBwYWNrYWdlIHRoYXQgaW5jbHVkZXMgYWxsIHRoZSBpd2x3aWZpCkBAIC02NzAsNiArNjgxLDcgQEAKIExJQ0VOU0VfJHtQTn0taWJ0LWh3LTM3LTggPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgogTElDRU5TRV8ke1BOfS1pYnQtMTEtNSAgICA9ICJGaXJtd2FyZS1pYnRfZmlybXdhcmUiCiBMSUNFTlNFXyR7UE59LWlidC0xMi0xNiAgID0gIkZpcm13YXJlLWlidF9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taWJ0LTE3ID0gIkZpcm13YXJlLWlidF9maXJtd2FyZSIKIExJQ0VOU0VfJHtQTn0taWJ0LW1pc2MgICAgPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgogCiBGSUxFU18ke1BOfS1pYnQtbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UuaWJ0X2Zpcm13YXJlIgpAQCAtNjc3LDEyICs2ODksMTQgQEAKIEZJTEVTXyR7UE59LWlidC1ody0zNy04ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LWh3LTM3LjgqLmJzZXEiCiBGSUxFU18ke1BOfS1pYnQtMTEtNSAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xMS01LnNmaSAvbGliL2Zpcm13YXJlL2ludGVsL2lidC0xMS01LmRkYyIKIEZJTEVTXyR7UE59LWlidC0xMi0xNiAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTEyLTE2LnNmaSAvbGliL2Zpcm13YXJlL2ludGVsL2lidC0xMi0xNi5kZGMiCitGSUxFU18ke1BOfS1pYnQtMTcgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtMTctKi5zZmkgL2xpYi9maXJtd2FyZS9pbnRlbC9pYnQtMTctKi5kZGMiCiBGSUxFU18ke1BOfS1pYnQtbWlzYyAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2lidC0qIgogCiBSREVQRU5EU18ke1BOfS1pYnQtaHctMzctNyA9ICIke1BOfS1pYnQtbGljZW5zZSIKIFJERVBFTkRTXyR7UE59LWlidC1ody0zNy44ID0gIiR7UE59LWlidC1saWNlbnNlIgogUkRFUEVORFNfJHtQTn0taWJ0LTExLTUgICAgPSAiJHtQTn0taWJ0LWxpY2Vuc2UiCiBSREVQRU5EU18ke1BOfS1pYnQtMTItMTYgICA9ICIke1BOfS1pYnQtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWlidC0xNyA9ICIke1BOfS1pYnQtbGljZW5zZSIKIFJERVBFTkRTXyR7UE59LWlidC1taXNjICAgID0gIiR7UE59LWlidC1saWNlbnNlIgogCiBBTExPV19FTVBUWV8ke1BOfS1pYnQ9ICIxIgpAQCAtNzA3LDYgKzcyMSwxOCBAQAogRklMRVNfJHtQTn0tcWF0ICAgICAgICAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3FhdCouYmluIgogUkRFUEVORFNfJHtQTn0tcWF0ICAgICAgICA9ICIke1BOfS1xYXQtbGljZW5zZSIKIAorIyBGb3IgUUNPTSBWUFUvR1BVCitMSUNFTlNFXyR7UE59LXFjb20tbGljZW5zZSA9ICJGaXJtd2FyZS1xY29tIgorRklMRVNfJHtQTn0tcWNvbS1saWNlbnNlICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTlNFLnFjb20gJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY29tL05PVElDRS50eHQiCitGSUxFU18ke1BOfS1xY29tLXZlbnVzLTEuOCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3Fjb20vdmVudXMtMS44LyoiCitGSUxFU18ke1BOfS1xY29tLXZlbnVzLTQuMiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3Fjb20vdmVudXMtNC4yLyoiCitGSUxFU18ke1BOfS1xY29tLWFkcmVuby1hM3h4ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS9hMzAwXyouZncgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9hMzAwXyouZnciCitGSUxFU18ke1BOfS1xY29tLWFkcmVuby1hNTMwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS9hNTMwKi4qIgorUkRFUEVORFNfJHtQTn0tcWNvbS12ZW51cy0xLjggPSAiJHtQTn0tcWNvbS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcWNvbS12ZW51cy00LjIgPSAiJHtQTn0tcWNvbS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcWNvbS1hZHJlbm8tYTN4eCA9ICIke1BOfS1xY29tLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1xY29tLWFkcmVuby1hNTMwID0gIiR7UE59LXFjb20tbGljZW5zZSIKKwogIyBGb3Igb3RoZXIgZmlybXdhcmVzCiAjIE1heWJlIHNwbGl0IG91dCB0byBzZXBhcmF0ZSBwYWNrYWdlcyB3aGVuIG5lZWRlZC4KIExJQ0VOU0VfJHtQTn0gPSAiXApAQCAtNzM3LDYgKzc2Myw3IEBACiAgICAgJiBGaXJtd2FyZS1hdGg5ay1odGMgXAogICAgICYgRmlybXdhcmUtcGhhbmZ3IFwKICAgICAmIEZpcm13YXJlLXFhdCBcCisgICAgJiBGaXJtd2FyZS1xY29tIFwKICAgICAmIEZpcm13YXJlLXFsYTEyODAgXAogICAgICYgRmlybXdhcmUtcWxhMnh4eCBcCiAgICAgJiBGaXJtd2FyZS1yOGE3Nzl4X3VzYjMgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLmluYwppbmRleCAxNjU3ZGY2Li45OTAzYzA2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLmluYwpAQCAtNzgsNyArNzgsNyBAQAogfQogCiBkb19pbnN0YWxsX2FybW11bHRpbGliICgpIHsKLQlvZV9tdWx0aWxpYl9oZWFkZXIgYXNtL2F1eHZlYy5oIGFzbS9iaXRzcGVybG9uZy5oIGFzbS9ieXRlb3JkZXIuaCBhc20vZmNudGwuaCBhc20vaHdjYXAuaCBhc20vaW9jdGxzLmggYXNtL2t2bS5oIGFzbS9tbWFuLmggYXNtL3BhcmFtLmggYXNtL3BlcmZfcmVncy5oCisJb2VfbXVsdGlsaWJfaGVhZGVyIGFzbS9hdXh2ZWMuaCBhc20vYml0c3BlcmxvbmcuaCBhc20vYnl0ZW9yZGVyLmggYXNtL2ZjbnRsLmggYXNtL2h3Y2FwLmggYXNtL2lvY3Rscy5oIGFzbS9rdm0uaCBhc20va3ZtX3BhcmEuaCBhc20vbW1hbi5oIGFzbS9wYXJhbS5oIGFzbS9wZXJmX3JlZ3MuaCBhc20vYnBmX3BlcmZfZXZlbnQuaAogCW9lX211bHRpbGliX2hlYWRlciBhc20vcG9zaXhfdHlwZXMuaCBhc20vcHRyYWNlLmggIGFzbS9zZXR1cC5oICBhc20vc2lnY29udGV4dC5oIGFzbS9zaWdpbmZvLmggYXNtL3NpZ25hbC5oIGFzbS9zdGF0LmggIGFzbS9zdGF0ZnMuaCBhc20vc3dhYi5oICBhc20vdHlwZXMuaCBhc20vdW5pc3RkLmgKIH0KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAxLWlmX2V0aGVyLW1vdmUtbXVzbGMtZXRoaGRyLXByb3RlY3Rpb24tdG8tdWFwaS1maWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAxLWlmX2V0aGVyLW1vdmUtbXVzbGMtZXRoaGRyLXByb3RlY3Rpb24tdG8tdWFwaS1maWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4YjI0NDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDEtaWZfZXRoZXItbW92ZS1tdXNsYy1ldGhoZHItcHJvdGVjdGlvbi10by11YXBpLWZpbGUucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSA4OTc3MzYxNjZmZDcwOTkwNmE1ZmRmMTZlYjIzZjhmZGRmZjc3MGI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDEgTWFyIDIwMTggMTg6MzE6MDEgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gaWZfZXRoZXI6IG1vdmUgbXVzbGMgZXRoaGRyIHByb3RlY3Rpb24gdG8gdWFwaSBmaWxlCisKK1NpZ25lZC1vZmYtYnk6IEJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBpbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaCB8IDYgKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX2V0aGVyLmggYi9pbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaAoraW5kZXggMTUzYzljMi4uN2I2OWI3MyAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oCisrKysgYi9pbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaAorQEAgLTE0OSw2ICsxNDksMTIgQEAKKyAgKglUaGlzIGlzIGFuIEV0aGVybmV0IGZyYW1lIGhlYWRlci4KKyAgKi8KKyAKKysjaWZkZWYgX05FVElORVRfSUZfRVRIRVJfSCAvKiBtdXNsICovCisrI2RlZmluZSBfX1VBUElfREVGX0VUSEhEUiAwCisrI2Vsc2UgLyogZ2xpYmMgdXNlcyBfX05FVElORVRfSUZfRVRIRVJfSCwgYW5kIGluY2x1ZGVzIHRoZSBrZXJuZWwgaGVhZGVyLiAqLworKyNkZWZpbmUgX19VQVBJX0RFRl9FVEhIRFIgMQorKyNlbmRpZgorKworIC8qIGFsbG93IGxpYmNzIGxpa2UgbXVzbCB0byBkZWFjdGl2YXRlIHRoaXMsIGdsaWJjIGRvZXMgbm90IGltcGxlbWVudCB0aGlzLiAqLworICNpZm5kZWYgX19VQVBJX0RFRl9FVEhIRFIKKyAjZGVmaW5lIF9fVUFQSV9ERUZfRVRISERSCQkxCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMS1saWJjLWNvbXBhdC5oLWZpeC1zb21lLWlzc3Vlcy1hcmlzaW5nLWZyb20taW42LmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDEtbGliYy1jb21wYXQuaC1maXgtc29tZS1pc3N1ZXMtYXJpc2luZy1mcm9tLWluNi5oLnBhdGNoCmluZGV4IDhiYjc3NWMuLjA2NGEzOTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMS1saWJjLWNvbXBhdC5oLWZpeC1zb21lLWlzc3Vlcy1hcmlzaW5nLWZyb20taW42LmgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAxLWxpYmMtY29tcGF0LmgtZml4LXNvbWUtaXNzdWVzLWFyaXNpbmctZnJvbS1pbjYuaC5wYXRjaApAQCAtMTEsMTEgKzExLDExIEBACiAgaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmggfCAyNSArKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCiAKLUluZGV4OiBsaW51eC00LjgtcmM0L2luY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oCitJbmRleDogbGludXgtNC4xNS9pbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpbnV4LTQuOC1yYzQub3JpZy9pbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaAotKysrIGxpbnV4LTQuOC1yYzQvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgKLUBAIC00OCwxMyArNDgsMTIgQEAKKy0tLSBsaW51eC00LjE1Lm9yaWcvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgJMjAxOC0wMi0wNSAxNzozNzo0NC43MjQzMTQzNzkgLTA1MDAKKysrKyBsaW51eC00LjE1L2luY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oCTIwMTgtMDItMDUgMTc6Mzg6MDIuMTQ4OTEzODIwIC0wNTAwCitAQCAtNDksMTMgKzQ5LDEyIEBACiAgI2lmbmRlZiBfVUFQSV9MSUJDX0NPTVBBVF9ICiAgI2RlZmluZSBfVUFQSV9MSUJDX0NPTVBBVF9ICiAgCkBAIC0zMyw3ICszMyw3IEBACiAgICogdGhhdCB3b3VsZCBhbHJlYWR5IGJlIGRlZmluZWQuICovCiAgCiAgI2RlZmluZSBfX1VBUElfREVGX0lGX0lGQ09ORiAwCi1AQCAtOTgsMTUgKzk3LDcgQEAKK0BAIC05OSwxNSArOTgsNyBAQAogICNkZWZpbmUgX19VQVBJX0RFRl9JTl9DTEFTUwkJMAogIAogICNkZWZpbmUgX19VQVBJX0RFRl9JTjZfQUREUgkJMApAQCAtNDksNyArNDksNyBAQAogICNkZWZpbmUgX19VQVBJX0RFRl9TT0NLQUREUl9JTjYJCTAKICAjZGVmaW5lIF9fVUFQSV9ERUZfSVBWNl9NUkVRCQkwCiAgI2RlZmluZSBfX1VBUElfREVGX0lQUFJPVE9fVjYJCTAKLUBAIC0xMTQsMTAgKzEwNSwxMCBAQAorQEAgLTExNSwxMCArMTA2LDEwIEBACiAgI2RlZmluZSBfX1VBUElfREVGX0lONl9QS1RJTkZPCQkwCiAgI2RlZmluZSBfX1VBUElfREVGX0lQNl9NVFVJTkZPCQkwCiAgCkBAIC02Miw3ICs2Miw3IEBACiAgICogX19VQVBJX0RFRl8qIGRlZmluZXMgYW5kIGFkanVzdCBhcHByb3ByaWF0ZWx5LiAqLwogICNkZWZpbmUgX19VQVBJX0RFRl9JTl9BRERSCQkxCiAgI2RlZmluZSBfX1VBUElfREVGX0lOX0lQUFJPVE8JCTEKLUBAIC0xMjcsNyArMTE4LDcgQEAKK0BAIC0xMjgsNyArMTE5LDcgQEAKICAjZGVmaW5lIF9fVUFQSV9ERUZfSU5fQ0xBU1MJCTEKICAKICAjZGVmaW5lIF9fVUFQSV9ERUZfSU42X0FERFIJCTEKQEAgLTcxLDE4ICs3MSwxOCBAQAogICAqIGNvb3JkaW5hdGUuICovCiAgI2RlZmluZSBfX1VBUElfREVGX0lONl9BRERSX0FMVAkJMQogICNkZWZpbmUgX19VQVBJX0RFRl9TT0NLQUREUl9JTjYJCTEKLUBAIC0xNDksNyArMTQwLDcgQEAKLSAvKiBJZiB3ZSBkaWQgbm90IHNlZSBhbnkgaGVhZGVycyBmcm9tIGFueSBzdXBwb3J0ZWQgQyBsaWJyYXJpZXMsCitAQCAtMTcwLDcgKzE2MSw3IEBACiAgICogb3Igd2UgYXJlIGJlaW5nIGluY2x1ZGVkIGluIHRoZSBrZXJuZWwsIHRoZW4gZGVmaW5lIGV2ZXJ5dGhpbmcKLSAgKiB0aGF0IHdlIG5lZWQuICovCisgICogdGhhdCB3ZSBuZWVkLiBDaGVjayBmb3IgcHJldmlvdXMgX19VQVBJXyogZGVmaW5pdGlvbnMgdG8gZ2l2ZQorICAqIHVuc3VwcG9ydGVkIEMgbGlicmFyaWVzIGEgd2F5IHRvIG9wdCBvdXQgb2YgYW55IGtlcm5lbCBkZWZpbml0aW9uLiAqLwogLSNlbHNlIC8qICFkZWZpbmVkKF9fR0xJQkNfXykgKi8KICsjZWxzZSAvKiBfX0tFUk5FTF9fICovCiAgCiAgLyogRGVmaW5pdGlvbnMgZm9yIGlmLmggKi8KLSAjZGVmaW5lIF9fVUFQSV9ERUZfSUZfSUZDT05GIDEKLUBAIC0xODIsNiArMTczLDYgQEAKLSAvKiBEZWZpbml0aW9ucyBmb3IgeGF0dHIuaCAqLworICNpZm5kZWYgX19VQVBJX0RFRl9JRl9JRkNPTkYKK0BAIC0yNjIsNiArMjUzLDYgQEAKICAjZGVmaW5lIF9fVUFQSV9ERUZfWEFUVFIJCTEKKyAjZW5kaWYKICAKIC0jZW5kaWYgLyogX19HTElCQ19fICovCiArI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMi1saWJjLWNvbXBhdC5oLXByZXZlbnQtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1ldGhoZHIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDItbGliYy1jb21wYXQuaC1wcmV2ZW50LXJlZGVmaW5pdGlvbi1vZi1zdHJ1Y3QtZXRoaGRyLnBhdGNoCmluZGV4IDhkYzFlZGMuLmZiN2UxZGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMi1saWJjLWNvbXBhdC5oLXByZXZlbnQtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1ldGhoZHIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAyLWxpYmMtY29tcGF0LmgtcHJldmVudC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LWV0aGhkci5wYXRjaApAQCAtMTEsMzcgKzExLDExIEBACiAgaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmggfCA2ICsrKysrKwogIDIgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKLUluZGV4OiBsaW51eC00LjgtcmM0L2luY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oCitJbmRleDogbGludXgtNC4xNS9pbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpbnV4LTQuOC1yYzQub3JpZy9pbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaAotKysrIGxpbnV4LTQuOC1yYzQvaW5jbHVkZS91YXBpL2xpbnV4L2lmX2V0aGVyLmgKLUBAIC0yMiw2ICsyMiw3IEBACi0gI2RlZmluZSBfVUFQSV9MSU5VWF9JRl9FVEhFUl9ICi0gCi0gI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0rI2luY2x1ZGUgPGxpbnV4L2xpYmMtY29tcGF0Lmg+Ci0gCi0gLyoKLSAgKglJRUVFIDgwMi4zIEV0aGVybmV0IG1hZ2ljIGNvbnN0YW50cy4gIFRoZSBmcmFtZSBzaXplcyBvbWl0IHRoZSBwcmVhbWJsZQotQEAgLTEzOCwxMSArMTM5LDEyIEBACi0gICoJVGhpcyBpcyBhbiBFdGhlcm5ldCBmcmFtZSBoZWFkZXIuCi0gICovCi0gCi0rI2lmIF9fVUFQSV9ERUZfRVRISERSCi0gc3RydWN0IGV0aGhkciB7Ci0gCXVuc2lnbmVkIGNoYXIJaF9kZXN0W0VUSF9BTEVOXTsJLyogZGVzdGluYXRpb24gZXRoIGFkZHIJKi8KLSAJdW5zaWduZWQgY2hhcgloX3NvdXJjZVtFVEhfQUxFTl07CS8qIHNvdXJjZSBldGhlciBhZGRyCSovCi0gCV9fYmUxNgkJaF9wcm90bzsJCS8qIHBhY2tldCB0eXBlIElEIGZpZWxkCSovCi0gfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKLS0KLSsjZW5kaWYKLSAKLSAjZW5kaWYgLyogX1VBUElfTElOVVhfSUZfRVRIRVJfSCAqLwotSW5kZXg6IGxpbnV4LTQuOC1yYzQvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaW51eC00LjgtcmM0Lm9yaWcvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgKLSsrKyBsaW51eC00LjgtcmM0L2luY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oCi1AQCAtNTAsNiArNTAsMTIgQEAKKy0tLSBsaW51eC00LjE1Lm9yaWcvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgJMjAxOC0wMi0wNSAxNzo0MDo0Mi4zMzgzNzA3MzEgLTA1MDAKKysrKyBsaW51eC00LjE1L2luY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oCTIwMTgtMDItMDUgMTc6NDA6NDIuMzM0MzcwNjAzIC0wNTAwCitAQCAtNTEsNiArNTEsMTIgQEAKICAKICAjaWZuZGVmIF9fS0VSTkVMX18gLyogd2UncmUgdXNlZCBmcm9tIHVzZXJzcGFjZSAqLwogIApAQCAtNTIsNSArMjYsNSBAQAogKyNlbmRpZgogKwogIC8qIENvb3JkaW5hdGUgd2l0aCBsaWJjIG5ldC9pZi5oIGhlYWRlci4gKi8KLSAjaWYgZGVmaW5lZChfTkVUX0lGX0gpICYmIGRlZmluZWQoX19VU0VfTUlTQykKKyAjaWYgZGVmaW5lZChfTkVUX0lGX0gpCiAgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzQuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzQuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwZDBhYmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVyc180LjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotcmVxdWlyZSBsaW51eC1saWJjLWhlYWRlcnMuaW5jCi0KLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCi0gICAgZmlsZTovLzAwMDEtbGliYy1jb21wYXQuaC1maXgtc29tZS1pc3N1ZXMtYXJpc2luZy1mcm9tLWluNi5oLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1saWJjLWNvbXBhdC5oLXByZXZlbnQtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1ldGhoZHIucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLXJlbW92ZS1pbmNsdXNpb24tb2Ytc3lzaW5mby5oLWluLWtlcm5lbC5oLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLW11c2wtX2RvZXNfLWRlZmluZS1JRkZfTE9XRVJfVVAtRE9STUFOLnBhdGNoIFwKLSAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImZjNDU0MTU3ZTJkMDI0ZDQwMWE2MDkwNWQ2NDgxYzZiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImE0NWMzYmVjZDRkMDhjZTQxMWMxNDYyOGE5NDlkMDhlMjQzM2Q4Y2RlY2E5MjAzNmM3MDEzOTgwZTkzODU4YWIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzQuMTUuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNC4xNS43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3ZGI0YzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzQuMTUuNy5iYgpAQCAtMCwwICsxLDEzIEBACityZXF1aXJlIGxpbnV4LWxpYmMtaGVhZGVycy5pbmMKKworU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIlwKKyAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLWZpeC1zb21lLWlzc3Vlcy1hcmlzaW5nLWZyb20taW42LmgucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLWxpYmMtY29tcGF0LmgtcHJldmVudC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LWV0aGhkci5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtcmVtb3ZlLWluY2x1c2lvbi1vZi1zeXNpbmZvLmgtaW4ta2VybmVsLmgucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWxpYmMtY29tcGF0LmgtbXVzbC1fZG9lc18tZGVmaW5lLUlGRl9MT1dFUl9VUC1ET1JNQU4ucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWlmX2V0aGVyLW1vdmUtbXVzbGMtZXRoaGRyLXByb3RlY3Rpb24tdG8tdWFwaS1maWxlLnBhdGNoIFwKKyAgICIKKworCitTUkNfVVJJW21kNXN1bV0gPSAiODE4NmNlNjNjNDg5MTk5YjU4YjZhNThhZDJhMjRhOTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2Q0NGRmNGIyM2EzZTBlZGMxNGJlNjNkZjk1ZDc2OGI5NjAwYjMxYzM1YmUwNWZiODlmOTMyMjY5MDdmYzhjNiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtZGV2c3JjLmJiCmluZGV4IGMxYjViNzcuLjhiYmZhMjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWRldnNyYy5iYgpAQCAtNjksNiArNjksMTMgQEAKICAgICAgICAgICAgICAgICBjcCAke0J9L2FyY2gvcG93ZXJwYy9saWIvY3J0c2F2cmVzLm8gJGtlcm5lbGRpci9hcmNoL3Bvd2VycGMvbGliL2NydHNhdnJlcy5vCiAgICAgICAgIGZpCiAKKyAgICAgICAgIyBSZW1vdmUgZml4ZGVwL29ianRvb2wgYXMgdGhleSB3b24ndCBiZSB0YXJnZXQgYmluYXJpZXMKKyAgICAgICAgZm9yIGkgaW4gZml4ZGVwIG9ianRvb2w7IGRvCisgICAgICAgICAgICAgICAgaWYgWyAtZSAka2VybmVsZGlyL3Rvb2xzL29ianRvb2wvJGkgXTsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgcm0gLXJmICRrZXJuZWxkaXIvdG9vbHMvb2JqdG9vbC8kaQorICAgICAgICAgICAgICAgIGZpCisgICAgICAgIGRvbmUKKwogICAgICAgICBjaG93biAtUiByb290OnJvb3QgJHtEfQogfQogIyBFbnN1cmUgd2UgZG9uJ3QgcmFjZSBhZ2FpbnN0ICJtYWtlIHNjcmlwdHMiIGR1cmluZyBjcGlvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmIKaW5kZXggNTg1MmI0Mi4uNDIwMWZhZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYgpAQCAtMjgsMTAgKzI4LDEzIEBACiBTUkNSRVZfbWFjaGluZSA/PSAnJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCIsICJsaW51eC15b2N0by1kZXYiLCAiJHtBVVRPUkVWfSIsICIyOTU5NDQwNGQ3ZmU3M2NkODBlYWE0ZWU4YzQzZGNjNTM5NzBjNjBlIiwgZCl9JwogU1JDUkVWX21ldGEgPz0gJyR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiLCAibGludXgteW9jdG8tZGV2IiwgIiR7QVVUT1JFVn0iLCAiMjk1OTQ0MDRkN2ZlNzNjZDgwZWFhNGVlOGM0M2RjYzUzOTcwYzYwZSIsIGQpfScKIAotTElOVVhfVkVSU0lPTiA/PSAiNC4xMi1yYysiCitMSU5VWF9WRVJTSU9OID89ICI0LjE2LXJjKyIKIExJTlVYX1ZFUlNJT05fRVhURU5TSU9OID89ICIteW9jdG9kZXYtJHtMSU5VWF9LRVJORUxfVFlQRX0iCiBQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgogCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKK0RFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgorCiBDT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXVhcm18cWVtdXg4NnxxZW11cHBjfHFlbXVtaXBzfHFlbXVtaXBzNjR8cWVtdXg4Ni02NCkiCiAKIEtFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm0gPSAidmVyc2F0aWxlLXBiLmR0YiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDMxYmY5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1LQlJBTkNIID89ICJzdGFuZGFyZC9wcmVlbXB0LXJ0L2Jhc2UiCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLSMgU2tpcCBwcm9jZXNzaW5nIG9mIHRoaXMgcmVjaXBlIGlmIGl0IGlzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZCBhcyB0aGUKLSMgUFJFRkVSUkVEX1BST1ZJREVSIGZvciB2aXJ0dWFsL2tlcm5lbC4gVGhpcyBhdm9pZHMgZXJyb3JzIHdoZW4gdHJ5aW5nCi0jIHRvIGJ1aWxkIG11bHRpcGxlIHZpcnR1YWwva2VybmVsIHByb3ZpZGVycywgZS5nLiBhcyBkZXBlbmRlbmN5IG9mCi0jIGNvcmUtaW1hZ2UtcnQtc2RrLCBjb3JlLWltYWdlLXJ0LgotcHl0aG9uICgpIHsKLSAgICBpZiBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gImxpbnV4LXlvY3RvLXJ0IjoKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKLX0KLQotU1JDUkVWX21hY2hpbmUgPz0gImMxZDhjNDQwOGI4YWVkZDg4ZWViNmNjYzg5Y2U4MzRkZDQxYjNmMDkiCi1TUkNSRVZfbWV0YSA/PSAiMWQ5YTgyMDAxODRhZjIyZjg5ODFmYTI0YjBlODJhZjQ5Yzc5ODhkZCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjEwLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTA7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotTElOVVhfVkVSU0lPTiA/PSAiNC4xMC4xNyIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotTElOVVhfS0VSTkVMX1RZUEUgPSAicHJlZW1wdC1ydCIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11cHBjfHFlbXVtaXBzKSIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MgZmVhdHVyZXMvdGFza3N0YXRzL3Rhc2tzdGF0cy5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTIuYmIKaW5kZXggNjRiMWRhMS4uNWVkYzBmYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjEyLmJiCkBAIC03LDE3ICs3LDE3IEBACiAjIHRvIGJ1aWxkIG11bHRpcGxlIHZpcnR1YWwva2VybmVsIHByb3ZpZGVycywgZS5nLiBhcyBkZXBlbmRlbmN5IG9mCiAjIGNvcmUtaW1hZ2UtcnQtc2RrLCBjb3JlLWltYWdlLXJ0LgogcHl0aG9uICgpIHsKLSAgICBpZiBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gImxpbnV4LXlvY3RvLXJ0IjoKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKKyAgICBpZiBkLmdldFZhcigiS0VSTkVMX1BBQ0tBR0VfTkFNRSIpID09ICJrZXJuZWwiIGFuZCBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gImxpbnV4LXlvY3RvLXJ0IjoKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQogfQogCi1TUkNSRVZfbWFjaGluZSA/PSAiZGE3NzVhYTlhYWI0MWU4YTJiNGU5YjQ0ZmZlMjY4NDQ2YzUxNzU5ZiIKLVNSQ1JFVl9tZXRhID89ICI0ZjgyNWVlYjc4M2EyNzkyMTZlZTQ1ZWQzYjlhNjNkZDY4MzdmN2Q3IgorU1JDUkVWX21hY2hpbmUgPz0gIjcwNWQwMzUwN2EwYzEwZGNiZjljYWQzZmY3MGY1ZDYwYjcwZjJkOTkiCitTUkNSRVZfbWV0YSA/PSAiNDYxNzFkZTE5MjIwYzQ5ZDY3MDU0NDAxN2NmYmVmZmMxZWM3MGU4MCIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjEyLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAogICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTI7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKIAotTElOVVhfVkVSU0lPTiA/PSAiNC4xMi4yMCIKK0xJTlVYX1ZFUlNJT04gPz0gIjQuMTIuMjQiCiAKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxMzA2YTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjE0LmJiCkBAIC0wLDAgKzEsNDEgQEAKK0tCUkFOQ0ggPz0gInY0LjE0L3N0YW5kYXJkL3ByZWVtcHQtcnQvYmFzZSIKKworcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKKworIyBTa2lwIHByb2Nlc3Npbmcgb2YgdGhpcyByZWNpcGUgaWYgaXQgaXMgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGFzIHRoZQorIyBQUkVGRVJSRURfUFJPVklERVIgZm9yIHZpcnR1YWwva2VybmVsLiBUaGlzIGF2b2lkcyBlcnJvcnMgd2hlbiB0cnlpbmcKKyMgdG8gYnVpbGQgbXVsdGlwbGUgdmlydHVhbC9rZXJuZWwgcHJvdmlkZXJzLCBlLmcuIGFzIGRlcGVuZGVuY3kgb2YKKyMgY29yZS1pbWFnZS1ydC1zZGssIGNvcmUtaW1hZ2UtcnQuCitweXRob24gKCkgeworICAgIGlmIGQuZ2V0VmFyKCJLRVJORUxfUEFDS0FHRV9OQU1FIikgPT0gImtlcm5lbCIgYW5kIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSAibGludXgteW9jdG8tcnQiOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJTZXQgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIHRvIGxpbnV4LXlvY3RvLXJ0IHRvIGVuYWJsZSBpdCIpCit9CisKK1NSQ1JFVl9tYWNoaW5lID89ICI3MjcyZTkxMzJmZGFhZjBkZDc4YmM5NGU5ZjI5N2FhZjczNDUyOTgyIgorU1JDUkVWX21ldGEgPz0gImVhOTMzMDg5NGVlYTcyN2JkMTY1NTU2OWIxNmYzMzg5NzZiNzI1NjMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCisgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xNDtkZXN0c3VmZml4PSR7S01FVEF9IgorCitMSU5VWF9WRVJTSU9OID89ICI0LjE0LjMwIgorCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKK0RFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgorCitQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgorCitLTUVUQSA9ICJrZXJuZWwtbWV0YSIKK0tDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgorCitMSU5VWF9LRVJORUxfVFlQRSA9ICJwcmVlbXB0LXJ0IgorCitDT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXV4ODZ8cWVtdXg4Ni02NHxxZW11YXJtfHFlbXVwcGN8cWVtdW1pcHMpIgorCitLRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCisKKyMgRnVuY3Rpb25hbGl0eSBmbGFncworS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyBmZWF0dXJlcy90YXNrc3RhdHMvdGFza3N0YXRzLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjE1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWQzZWUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xNS5iYgpAQCAtMCwwICsxLDQxIEBACitLQlJBTkNIID89ICJ2NC4xNS9zdGFuZGFyZC9wcmVlbXB0LXJ0L2Jhc2UiCisKK3JlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisKKyMgU2tpcCBwcm9jZXNzaW5nIG9mIHRoaXMgcmVjaXBlIGlmIGl0IGlzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZCBhcyB0aGUKKyMgUFJFRkVSUkVEX1BST1ZJREVSIGZvciB2aXJ0dWFsL2tlcm5lbC4gVGhpcyBhdm9pZHMgZXJyb3JzIHdoZW4gdHJ5aW5nCisjIHRvIGJ1aWxkIG11bHRpcGxlIHZpcnR1YWwva2VybmVsIHByb3ZpZGVycywgZS5nLiBhcyBkZXBlbmRlbmN5IG9mCisjIGNvcmUtaW1hZ2UtcnQtc2RrLCBjb3JlLWltYWdlLXJ0LgorcHl0aG9uICgpIHsKKyAgICBpZiBkLmdldFZhcigiS0VSTkVMX1BBQ0tBR0VfTkFNRSIpID09ICJrZXJuZWwiIGFuZCBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gImxpbnV4LXlvY3RvLXJ0IjoKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQorfQorCitTUkNSRVZfbWFjaGluZSA/PSAiOTEwODRkMDMwYmM4NDFjNDgzYzMxZTg2NjQyODljNzk0MGFhNTUwNiIKK1NSQ1JFVl9tZXRhID89ICI5MzlkOTM1YjBjOTkyYzZmMWU1MWE3YTFjOWU0ZmJlNmVmM2MzMTc0IgorCitTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAorICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTU7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKKworTElOVVhfVkVSU0lPTiA/PSAiNC4xNS4xMyIKKworREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCitERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKKworUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKKworS01FVEEgPSAia2VybmVsLW1ldGEiCitLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKKworTElOVVhfS0VSTkVMX1RZUEUgPSAicHJlZW1wdC1ydCIKKworQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11cHBjfHFlbXVtaXBzKSIKKworS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgorCisjIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKK0tFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MgZmVhdHVyZXMvdGFza3N0YXRzL3Rhc2tzdGF0cy5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzUzOGUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUtCUkFOQ0ggPz0gInN0YW5kYXJkL3ByZWVtcHQtcnQvYmFzZSIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotIyBTa2lwIHByb2Nlc3Npbmcgb2YgdGhpcyByZWNpcGUgaWYgaXQgaXMgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGFzIHRoZQotIyBQUkVGRVJSRURfUFJPVklERVIgZm9yIHZpcnR1YWwva2VybmVsLiBUaGlzIGF2b2lkcyBlcnJvcnMgd2hlbiB0cnlpbmcKLSMgdG8gYnVpbGQgbXVsdGlwbGUgdmlydHVhbC9rZXJuZWwgcHJvdmlkZXJzLCBlLmcuIGFzIGRlcGVuZGVuY3kgb2YKLSMgY29yZS1pbWFnZS1ydC1zZGssIGNvcmUtaW1hZ2UtcnQuCi1weXRob24gKCkgewotICAgIGlmIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSAibGludXgteW9jdG8tcnQiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQotfQotCi1TUkNSRVZfbWFjaGluZSA/PSAiZDVlZmVlZWI5MjhhMDExMWZjMTg3ZmQxZThkMDNkMmU0ZTM1ZDRhMCIKLVNSQ1JFVl9tZXRhID89ICJiMTQ5ZDE0Y2NhZTgzNDlhYjMzZTEwMWY2YWYyMzNhMTJmNGIxN2JhIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuNC5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjQ7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotTElOVVhfVkVSU0lPTiA/PSAiNC40LjExMyIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotTElOVVhfS0VSTkVMX1RZUEUgPSAicHJlZW1wdC1ydCIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11cHBjfHFlbXVtaXBzKSIKLQotIyBGdW5jdGlvbmFsaXR5IGZsYWdzCi1LRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIGZlYXR1cmVzL3Rhc2tzdGF0cy90YXNrc3RhdHMuc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWMwMTZlZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1LQlJBTkNIID89ICJzdGFuZGFyZC9wcmVlbXB0LXJ0L2Jhc2UiCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLSMgU2tpcCBwcm9jZXNzaW5nIG9mIHRoaXMgcmVjaXBlIGlmIGl0IGlzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZCBhcyB0aGUKLSMgUFJFRkVSUkVEX1BST1ZJREVSIGZvciB2aXJ0dWFsL2tlcm5lbC4gVGhpcyBhdm9pZHMgZXJyb3JzIHdoZW4gdHJ5aW5nCi0jIHRvIGJ1aWxkIG11bHRpcGxlIHZpcnR1YWwva2VybmVsIHByb3ZpZGVycywgZS5nLiBhcyBkZXBlbmRlbmN5IG9mCi0jIGNvcmUtaW1hZ2UtcnQtc2RrLCBjb3JlLWltYWdlLXJ0LgotcHl0aG9uICgpIHsKLSAgICBpZiBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gImxpbnV4LXlvY3RvLXJ0IjoKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKLX0KLQotU1JDUkVWX21hY2hpbmUgPz0gIjkwZDFmZmEzNmNiZDM2NzIyNjM4Yzk3YzFiYjQ2YTU4NzRkYmUyOGUiCi1TUkNSRVZfbWV0YSA/PSAiMDc3NGVhY2VhMmE3ZDNhMTUwNTk0NTMzYjhjODBkMGMwYmZkZmRlZCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjkuZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC45O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCi0KLUxJTlVYX1ZFUlNJT04gPz0gIjQuOS44MiIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotTElOVVhfS0VSTkVMX1RZUEUgPSAicHJlZW1wdC1ydCIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11cHBjfHFlbXVtaXBzKSIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MgZmVhdHVyZXMvdGFza3N0YXRzL3Rhc2tzdGF0cy5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjIzNDk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUtCUkFOQ0ggPz0gInN0YW5kYXJkL3RpbnkvY29tbW9uLXBjIgotTElOVVhfS0VSTkVMX1RZUEUgPSAidGlueSIKLUtDT05GSUdfTU9ERSA9ICItLWFsbG5vY29uZmlnIgotCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi1MSU5VWF9WRVJTSU9OID89ICI0LjEwLjE3IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1TUkNSRVZfbWFjaGluZSA/PSAiYzFkOGM0NDA4YjhhZWRkODhlZWI2Y2NjODljZTgzNGRkNDFiM2YwOSIKLVNSQ1JFVl9tZXRhID89ICIxZDlhODIwMDE4NGFmMjJmODk4MWZhMjRiMGU4MmFmNDljNzk4OGRkIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMTAuZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xMDtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdXg4NnxxZW11eDg2LTY0IgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9GRUFUVVJFUyA9ICIiCi0KLUtFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm0gPSAidmVyc2F0aWxlLXBiLmR0YiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYgppbmRleCAwYmJkOGUyLi4zMTMwN2E2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiCkBAIC00LDEzICs0LDEzIEBACiAKIHJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCiAKLUxJTlVYX1ZFUlNJT04gPz0gIjQuMTIuMjAiCitMSU5VWF9WRVJTSU9OID89ICI0LjEyLjI0IgogCiBLTUVUQSA9ICJrZXJuZWwtbWV0YSIKIEtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgogCi1TUkNSRVZfbWFjaGluZSA/PSAiNjBiNjQ5OTcxOTQwNzM3ZGM3ZTNhN2YyNDdjNjJmZmJkN2M4MmU0YyIKLVNSQ1JFVl9tZXRhID89ICI0ZjgyNWVlYjc4M2EyNzkyMTZlZTQ1ZWQzYjlhNjNkZDY4MzdmN2Q3IgorU1JDUkVWX21hY2hpbmUgPz0gImY5ZDY3Nzc3YjA3YWM5Nzk2NjE4NmMxYjU2ZGI3OGFmZTJhMTZmOTIiCitTUkNSRVZfbWV0YSA/PSAiNDYxNzFkZTE5MjIwYzQ5ZDY3MDU0NDAxN2NmYmVmZmMxZWM3MGU4MCIKIAogUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjE0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0YmVlMDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTQuYmIKQEAgLTAsMCArMSwyOCBAQAorS0JSQU5DSCA/PSAidjQuMTQvc3RhbmRhcmQvdGlueS9jb21tb24tcGMiCitMSU5VWF9LRVJORUxfVFlQRSA9ICJ0aW55IgorS0NPTkZJR19NT0RFID0gIi0tYWxsbm9jb25maWciCisKK3JlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisKK0xJTlVYX1ZFUlNJT04gPz0gIjQuMTQuMzAiCisKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgorREVQRU5EUyArPSAib3BlbnNzbC1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUiCisKK0tNRVRBID0gImtlcm5lbC1tZXRhIgorS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCisKK1NSQ1JFVl9tYWNoaW5lID89ICJhZDMxODk2NjMwZjhiZjZhNDU5MTY0MjYzYWRjMGE4ZmFmOTg0ZDllIgorU1JDUkVWX21ldGEgPz0gImVhOTMzMDg5NGVlYTcyN2JkMTY1NTU2OWIxNmYzMzg5NzZiNzI1NjMiCisKK1BWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCisgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xNDtkZXN0c3VmZml4PSR7S01FVEF9IgorCitDT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdXg4NnxxZW11eDg2LTY0IgorCisjIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKK0tFUk5FTF9GRUFUVVJFUyA9ICIiCisKK0tFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm0gPSAidmVyc2F0aWxlLXBiLmR0YiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWI5Y2EzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjE1LmJiCkBAIC0wLDAgKzEsMjUgQEAKK0tCUkFOQ0ggPz0gInY0LjE1L3N0YW5kYXJkL3RpbnkvY29tbW9uLXBjIgorTElOVVhfS0VSTkVMX1RZUEUgPSAidGlueSIKK0tDT05GSUdfTU9ERSA9ICItLWFsbG5vY29uZmlnIgorCityZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYworCitMSU5VWF9WRVJTSU9OID89ICI0LjE1LjEzIgorCitLTUVUQSA9ICJrZXJuZWwtbWV0YSIKK0tDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgorCitTUkNSRVZfbWFjaGluZSA/PSAiOTEwODRkMDMwYmM4NDFjNDgzYzMxZTg2NjQyODljNzk0MGFhNTUwNiIKK1NSQ1JFVl9tZXRhID89ICI5MzlkOTM1YjBjOTkyYzZmMWU1MWE3YTFjOWU0ZmJlNmVmM2MzMTc0IgorCitQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgorCitTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAorICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTU7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKKworQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXV4ODZ8cWVtdXg4Ni02NCIKKworIyBGdW5jdGlvbmFsaXR5IGZsYWdzCitLRVJORUxfRkVBVFVSRVMgPSAiIgorCitLRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTk4MTg5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotS0JSQU5DSCA/PSAic3RhbmRhcmQvdGlueS9jb21tb24tcGMiCi1MSU5VWF9LRVJORUxfVFlQRSA9ICJ0aW55IgotS0NPTkZJR19NT0RFID0gIi0tYWxsbm9jb25maWciCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLUxJTlVYX1ZFUlNJT04gPz0gIjQuNC4xMTMiCi0KLUtNRVRBID0gImtlcm5lbC1tZXRhIgotS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCi0KLVNSQ1JFVl9tYWNoaW5lID89ICI0ZDMxYThiNzY2MTUwOWZmMTA0NGFiY2Y5MDUwNzUwY2MyNDc4ZTIwIgotU1JDUkVWX21ldGEgPz0gImIxNDlkMTRjY2FlODM0OWFiMzNlMTAxZjZhZjIzM2ExMmY0YjE3YmEiCi0KLVBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC40LmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuNDtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdXg4NnxxZW11eDg2LTY0IgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9GRUFUVVJFUyA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDQ2ODAyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotS0JSQU5DSCA/PSAic3RhbmRhcmQvdGlueS9jb21tb24tcGMiCi1MSU5VWF9LRVJORUxfVFlQRSA9ICJ0aW55IgotS0NPTkZJR19NT0RFID0gIi0tYWxsbm9jb25maWciCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLUxJTlVYX1ZFUlNJT04gPz0gIjQuOS44MiIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotU1JDUkVWX21hY2hpbmUgPz0gImViM2IyMDc5ZWE0M2I0NTFlMDZiZTQ0M2Y4YmMxNDY3MzZmOWM0YmMiCi1TUkNSRVZfbWV0YSA/PSAiMDc3NGVhY2VhMmE3ZDNhMTUwNTk0NTMzYjhjODBkMGMwYmZkZmRlZCIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjkuZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC45O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICJxZW11eDg2fHFlbXV4ODYtNjQiCi0KLSMgRnVuY3Rpb25hbGl0eSBmbGFncwotS0VSTkVMX0ZFQVRVUkVTID0gIiIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCmluZGV4IDljMWY2MWIuLjNiYjg3MmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKQEAgLTEyLDkgKzEyLDkgQEAKICMgUFJFRkVSUkVEX1BST1ZJREVSIGZvciB2aXJ0dWFsL2tlcm5lbC4gVGhpcyBhdm9pZHMgbmV0d29yayBhY2Nlc3MgcmVxdWlyZWQKICMgYnkgdGhlIHVzZSBvZiBBVVRPUkVWIFNSQ1JFVnMsIHdoaWNoIGFyZSB0aGUgZGVmYXVsdCBmb3IgdGhpcyByZWNpcGUuCiBweXRob24gKCkgewotICAgIGlmIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSBkLmdldFZhcigiUE4iKToKKyAgICBpZiBkLmdldFZhcigiS0VSTkVMX1BBQ0tBR0VfTkFNRSIpID09ICJrZXJuZWwiIGFuZCBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gZC5nZXRWYXIoIlBOIik6CiAgICAgICAgIGQuZGVsVmFyKCJCQl9ET05UX0NBQ0hFIikKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gJXMgdG8gZW5hYmxlIGl0IiAlIChkLmdldFZhcigiUE4iKSkpCisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gJXMgdG8gZW5hYmxlIGl0IiAlIChkLmdldFZhcigiUE4iKSkpCiB9CiAKIERFUEVORFMgKz0gInh6LW5hdGl2ZSBiYy1uYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWZlM2NjYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotS0JSQU5DSCA/PSAic3RhbmRhcmQvYmFzZSIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotIyBib2FyZCBzcGVjaWZpYyBicmFuY2hlcwotS0JSQU5DSF9xZW11YXJtICA/PSAic3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiCi1LQlJBTkNIX3FlbXVhcm02NCA/PSAic3RhbmRhcmQvcWVtdWFybTY0IgotS0JSQU5DSF9xZW11bWlwcyA/PSAic3RhbmRhcmQvbXRpLW1hbHRhMzIiCi1LQlJBTkNIX3FlbXVwcGMgID89ICJzdGFuZGFyZC9xZW11cHBjIgotS0JSQU5DSF9xZW11eDg2ICA/PSAic3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdXg4Ni02NCA/PSAic3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdW1pcHM2NCA/PSAic3RhbmRhcmQvbXRpLW1hbHRhNjQiCi0KLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gImFlMTJlMTljZWNjMTlhZjY2ZjY0YTUwNTM4OTA5Y2IxY2FkMTg1ZjkiCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtNjQgPz0gImMxZDhjNDQwOGI4YWVkZDg4ZWViNmNjYzg5Y2U4MzRkZDQxYjNmMDkiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwcyA/PSAiYjcxYjgwZmQ2NzlhMTdkZmI0ZjczYjM1MjI2M2M0OTI3M2Y3MjFkNCIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVwcGMgPz0gImMxZDhjNDQwOGI4YWVkZDg4ZWViNmNjYzg5Y2U4MzRkZDQxYjNmMDkiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICJjMWQ4YzQ0MDhiOGFlZGQ4OGVlYjZjY2M4OWNlODM0ZGQ0MWIzZjA5IgotU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiYzFkOGM0NDA4YjhhZWRkODhlZWI2Y2NjODljZTgzNGRkNDFiM2YwOSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gIjhiYjEzNWU3MTAzN2M0NjE3NWJiY2M3YWNmMzg3MzA5YjJlMTcxMzMiCi1TUkNSRVZfbWFjaGluZSA/PSAiYzFkOGM0NDA4YjhhZWRkODhlZWI2Y2NjODljZTgzNGRkNDFiM2YwOSIKLVNSQ1JFVl9tZXRhID89ICIxZDlhODIwMDE4NGFmMjJmODk4MWZhMjRiMGU4MmFmNDljNzk4OGRkIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMTAuZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTA7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotTElOVVhfVkVSU0lPTiA/PSAiNC4xMC4xNyIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdWFybXxxZW11YXJtNjR8cWVtdXg4NnxxZW11cHBjfHFlbXVtaXBzfHFlbXVtaXBzNjR8cWVtdXg4Ni02NCIKLQotIyBGdW5jdGlvbmFsaXR5IGZsYWdzCi1LRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiIGNmZy94MzIuc2NjIiwgIiIgLGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiCmluZGV4IGZhYmYwZjUuLjhkNTYwMTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYgpAQCAtMTEsMjAgKzExLDIyIEBACiBLQlJBTkNIX3FlbXV4ODYtNjQgPz0gInN0YW5kYXJkL2Jhc2UiCiBLQlJBTkNIX3FlbXVtaXBzNjQgPz0gInN0YW5kYXJkL210aS1tYWx0YTY0IgogCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICI0MmNmNGQ2YTFiYzg0YjkwNjgxY2I4MmFkOTVjMTI5Mzg3ZDc2YjRiIgotU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICI2MGI2NDk5NzE5NDA3MzdkYzdlM2E3ZjI0N2M2MmZmYmQ3YzgyZTRjIgotU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gIjU3MTMxNWE1NTI2YjllMjIyNjJjZjk5YmFlN2MwZGQ2ZTViZDIwNGMiCi1TUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICI2MGI2NDk5NzE5NDA3MzdkYzdlM2E3ZjI0N2M2MmZmYmQ3YzgyZTRjIgotU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiNjBiNjQ5OTcxOTQwNzM3ZGM3ZTNhN2YyNDdjNjJmZmJkN2M4MmU0YyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gIjYwYjY0OTk3MTk0MDczN2RjN2UzYTdmMjQ3YzYyZmZiZDdjODJlNGMiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICJlNzg4OWJhMThmMDYwMzY4ZDRhYjM1ZTcwYjA3NjcyOGQ3M2JhNjIyIgotU1JDUkVWX21hY2hpbmUgPz0gIjYwYjY0OTk3MTk0MDczN2RjN2UzYTdmMjQ3YzYyZmZiZDdjODJlNGMiCi1TUkNSRVZfbWV0YSA/PSAiNGY4MjVlZWI3ODNhMjc5MjE2ZWU0NWVkM2I5YTYzZGQ2ODM3ZjdkNyIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gIjQ1ODI0YzYwY2EzN2Y0MTRhNWFjNTc4M2U5NzAzMzhkYjlhNWEyYWYiCitTUkNSRVZfbWFjaGluZV9xZW11YXJtNjQgPz0gImY5ZDY3Nzc3YjA3YWM5Nzk2NjE4NmMxYjU2ZGI3OGFmZTJhMTZmOTIiCitTUkNSRVZfbWFjaGluZV9xZW11bWlwcyA/PSAiNjZmNzQxYjBiM2QwOTNlNmI2ZGYwZjQ0MTIwOTEzZWYzYTI1OWUyMyIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVwcGMgPz0gImY5ZDY3Nzc3YjA3YWM5Nzk2NjE4NmMxYjU2ZGI3OGFmZTJhMTZmOTIiCitTUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICJmOWQ2Nzc3N2IwN2FjOTc5NjYxODZjMWI1NmRiNzhhZmUyYTE2ZjkyIgorU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiZjlkNjc3NzdiMDdhYzk3OTY2MTg2YzFiNTZkYjc4YWZlMmExNmY5MiIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gImM1ZDgzOGM5ZTI2YmQ2NTdiNDlkZmUyOGIxMTVlNWJjNGI1ODA4NTAiCitTUkNSRVZfbWFjaGluZSA/PSAiZjlkNjc3NzdiMDdhYzk3OTY2MTg2YzFiNTZkYjc4YWZlMmExNmY5MiIKK1NSQ1JFVl9tZXRhID89ICI0NjE3MWRlMTkyMjBjNDlkNjcwNTQ0MDE3Y2ZiZWZmYzFlYzcwZTgwIgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMTIuZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAogICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTI7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKIAotTElOVVhfVkVSU0lPTiA/PSAiNC4xMi4yMCIKK0RFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgorCitMSU5VWF9WRVJTSU9OID89ICI0LjEyLjI0IgogCiBQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjE0MmY4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xNC5iYgpAQCAtMCwwICsxLDQ3IEBACitLQlJBTkNIID89ICJ2NC4xNC9zdGFuZGFyZC9iYXNlIgorCityZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYworCisjIGJvYXJkIHNwZWNpZmljIGJyYW5jaGVzCitLQlJBTkNIX3FlbXVhcm0gID89ICJ2NC4xNC9zdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIKK0tCUkFOQ0hfcWVtdWFybTY0ID89ICJ2NC4xNC9zdGFuZGFyZC9xZW11YXJtNjQiCitLQlJBTkNIX3FlbXVtaXBzID89ICJ2NC4xNC9zdGFuZGFyZC9tdGktbWFsdGEzMiIKK0tCUkFOQ0hfcWVtdXBwYyAgPz0gInY0LjE0L3N0YW5kYXJkL3FlbXVwcGMiCitLQlJBTkNIX3FlbXV4ODYgID89ICJ2NC4xNC9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9xZW11eDg2LTY0ID89ICJ2NC4xNC9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9xZW11bWlwczY0ID89ICJ2NC4xNC9zdGFuZGFyZC9tdGktbWFsdGE2NCIKKworU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiZDYyNjhmYzM0NjBkMzkwNGZkNDkwODdmN2E4MjJlZmJhYWI5YmZlOCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiYzk0MTg5ODQzYjhhZDYyY2FmZTlhMzA3ZTdmN2Q2MDc0MTY5MDUwNSIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICI0YWZkOTIzNDdiMmIzNWRjOGUwMDA2NzEyZjhmYTAwYWM1N2YyYTM2IgorU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiZThhZjVjOWI2NWM1MTg3ZDE0OGVjZDExYmQ3OTc5NDg5NDYwY2E2NCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXV4ODYgPz0gIjc0ZjZjZDJiNjk3NmUzNzQ5MTc3OWZjYjFiYzQ5NjZkM2E2MTQ5MmMiCitTUkNSRVZfbWFjaGluZV9xZW11eDg2LTY0ID89ICI3NGY2Y2QyYjY5NzZlMzc0OTE3NzlmY2IxYmM0OTY2ZDNhNjE0OTJjIgorU1JDUkVWX21hY2hpbmVfcWVtdW1pcHM2NCA/PSAiOTg2M2IzMjdlNzcwYjQyYjhjMThkYTNlMGNmYWYwNmU4Zjk5YWU5NyIKK1NSQ1JFVl9tYWNoaW5lID89ICI3NGY2Y2QyYjY5NzZlMzc0OTE3NzlmY2IxYmM0OTY2ZDNhNjE0OTJjIgorU1JDUkVWX21ldGEgPz0gImVhOTMzMDg5NGVlYTcyN2JkMTY1NTU2OWIxNmYzMzg5NzZiNzI1NjMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAorICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTQ7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKKworTElOVVhfVkVSU0lPTiA/PSAiNC4xNC4zMCIKKworREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCitERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKKworUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKKworS01FVEEgPSAia2VybmVsLW1ldGEiCitLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKKworS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgorCitDT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdWFybXxxZW11YXJtNjR8cWVtdXg4NnxxZW11cHBjfHFlbXVtaXBzfHFlbXVtaXBzNjR8cWVtdXg4Ni02NCIKKworIyBGdW5jdGlvbmFsaXR5IGZsYWdzCitLRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiIGNmZy94MzIuc2NjIiwgIiIgLGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwYmQ3MTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE1LmJiCkBAIC0wLDAgKzEsNDcgQEAKK0tCUkFOQ0ggPz0gInY0LjE1L3N0YW5kYXJkL2Jhc2UiCisKK3JlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisKKyMgYm9hcmQgc3BlY2lmaWMgYnJhbmNoZXMKK0tCUkFOQ0hfcWVtdWFybSAgPz0gInY0LjE1L3N0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIgorS0JSQU5DSF9xZW11YXJtNjQgPz0gInY0LjE1L3N0YW5kYXJkL3FlbXVhcm02NCIKK0tCUkFOQ0hfcWVtdW1pcHMgPz0gInY0LjE1L3N0YW5kYXJkL210aS1tYWx0YTMyIgorS0JSQU5DSF9xZW11cHBjICA/PSAidjQuMTUvc3RhbmRhcmQvcWVtdXBwYyIKK0tCUkFOQ0hfcWVtdXg4NiAgPz0gInY0LjE1L3N0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX3FlbXV4ODYtNjQgPz0gInY0LjE1L3N0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX3FlbXVtaXBzNjQgPz0gInY0LjE1L3N0YW5kYXJkL210aS1tYWx0YTY0IgorCitTUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICI0YjY5MDJiNDJmNDc1OTM5MjgxMTdiMmZmMDkwMGNkOTY1Y2Y2NDQzIgorU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICI5MTA4NGQwMzBiYzg0MWM0ODNjMzFlODY2NDI4OWM3OTQwYWE1NTA2IgorU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gIjE5YmEyZDg0Mzc1MGZmNjVkOGZlNTkwYWNkZmM5OWFlYTYxNTM5NDUiCitTUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICI5MTA4NGQwMzBiYzg0MWM0ODNjMzFlODY2NDI4OWM3OTQwYWE1NTA2IgorU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiOTEwODRkMDMwYmM4NDFjNDgzYzMxZTg2NjQyODljNzk0MGFhNTUwNiIKK1NSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gIjkxMDg0ZDAzMGJjODQxYzQ4M2MzMWU4NjY0Mjg5Yzc5NDBhYTU1MDYiCitTUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICI5NzAwMGMzZjQ2NjQ2NDNiYWM3ODI4YmJkYzA0OGY3ZWMyMTZjYzMxIgorU1JDUkVWX21hY2hpbmUgPz0gIjkxMDg0ZDAzMGJjODQxYzQ4M2MzMWU4NjY0Mjg5Yzc5NDBhYTU1MDYiCitTUkNSRVZfbWV0YSA/PSAiOTM5ZDkzNWIwYzk5MmM2ZjFlNTFhN2ExYzllNGZiZTZlZjNjMzE3NCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by5naXQ7bmFtZT1tYWNoaW5lO2JyYW5jaD0ke0tCUkFOQ0h9OyBcCisgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xNTtkZXN0c3VmZml4PSR7S01FVEF9IgorCitMSU5VWF9WRVJTSU9OID89ICI0LjE1LjEzIgorCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKK0RFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgorCitQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgorCitLTUVUQSA9ICJrZXJuZWwtbWV0YSIKK0tDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgorCitLRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCisKK0NPTVBBVElCTEVfTUFDSElORSA9ICJxZW11YXJtfHFlbXVhcm02NHxxZW11eDg2fHFlbXVwcGN8cWVtdW1pcHN8cWVtdW1pcHM2NHxxZW11eDg2LTY0IgorCisjIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKK0tFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICIgY2ZnL3gzMi5zY2MiLCAiIiAsZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2MxNmQ1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUtCUkFOQ0ggPz0gInN0YW5kYXJkL2Jhc2UiCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLSMgYm9hcmQgc3BlY2lmaWMgYnJhbmNoZXMKLUtCUkFOQ0hfcWVtdWFybSAgPz0gInN0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIgotS0JSQU5DSF9xZW11YXJtNjQgPz0gInN0YW5kYXJkL3FlbXVhcm02NCIKLUtCUkFOQ0hfcWVtdW1pcHMgPz0gInN0YW5kYXJkL210aS1tYWx0YTMyIgotS0JSQU5DSF9xZW11cHBjICA/PSAic3RhbmRhcmQvcWVtdXBwYyIKLUtCUkFOQ0hfcWVtdXg4NiAgPz0gInN0YW5kYXJkL2Jhc2UiCi1LQlJBTkNIX3FlbXV4ODYtNjQgPz0gInN0YW5kYXJkL2Jhc2UiCi1LQlJBTkNIX3FlbXVtaXBzNjQgPz0gInN0YW5kYXJkL210aS1tYWx0YTY0IgotCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICI0MDBjMGYzOWI5NTRjZDhmZmZkZjUzZTZlYzk3ODUyYjczZmVhN2FmIgotU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICI0ZDMxYThiNzY2MTUwOWZmMTA0NGFiY2Y5MDUwNzUwY2MyNDc4ZTIwIgotU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gImZiMDNhOTQ3MjM2N2I2YzE3NzcyOWFjNjMxMzI2YWFmZDVkMTdjOTIiCi1TUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICI0ZDMxYThiNzY2MTUwOWZmMTA0NGFiY2Y5MDUwNzUwY2MyNDc4ZTIwIgotU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiNGQzMWE4Yjc2NjE1MDlmZjEwNDRhYmNmOTA1MDc1MGNjMjQ3OGUyMCIKLVNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gIjRkMzFhOGI3NjYxNTA5ZmYxMDQ0YWJjZjkwNTA3NTBjYzI0NzhlMjAiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICIyNmI4YmExODZhNmQzOTcyOGZjMTUxMGJkMjI2NDExMGM3NTg0MmY1IgotU1JDUkVWX21hY2hpbmUgPz0gIjRkMzFhOGI3NjYxNTA5ZmYxMDQ0YWJjZjkwNTA3NTBjYzI0NzhlMjAiCi1TUkNSRVZfbWV0YSA/PSAiYjE0OWQxNGNjYWU4MzQ5YWIzM2UxMDFmNmFmMjMzYTEyZjRiMTdiYSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjQuZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuNDtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1MSU5VWF9WRVJTSU9OID89ICI0LjQuMTEzIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdWFybXxxZW11YXJtNjR8cWVtdXg4NnxxZW11cHBjfHFlbXVtaXBzfHFlbXVtaXBzNjR8cWVtdXg4Ni02NCIKLQotIyBGdW5jdGlvbmFsaXR5IGZsYWdzCi1LRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiIGNmZy94MzIuc2NjIiwgIiIgLGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTVhMTY1Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1LQlJBTkNIID89ICJzdGFuZGFyZC9iYXNlIgotCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi0jIGJvYXJkIHNwZWNpZmljIGJyYW5jaGVzCi1LQlJBTkNIX3FlbXVhcm0gID89ICJzdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIKLUtCUkFOQ0hfcWVtdWFybTY0ID89ICJzdGFuZGFyZC9xZW11YXJtNjQiCi1LQlJBTkNIX3FlbXVtaXBzID89ICJzdGFuZGFyZC9tdGktbWFsdGEzMiIKLUtCUkFOQ0hfcWVtdXBwYyAgPz0gInN0YW5kYXJkL3FlbXVwcGMiCi1LQlJBTkNIX3FlbXV4ODYgID89ICJzdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9xZW11eDg2LTY0ID89ICJzdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9xZW11bWlwczY0ID89ICJzdGFuZGFyZC9tdGktbWFsdGE2NCIKLQotU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiMjMzNjllYjdlMDdjODM5ZmE3M2E4YzFlODVhYmEzN2EwN2JmMTRjMSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiZWIzYjIwNzllYTQzYjQ1MWUwNmJlNDQzZjhiYzE0NjczNmY5YzRiYyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICJjYWI5ZTA1OTQ0Nzg3OGY1MzgzZjkxYTA1ZGIxMjgxM2Y2OWNiZmMxIgotU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiZWIzYjIwNzllYTQzYjQ1MWUwNmJlNDQzZjhiYzE0NjczNmY5YzRiYyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYgPz0gImViM2IyMDc5ZWE0M2I0NTFlMDZiZTQ0M2Y4YmMxNDY3MzZmOWM0YmMiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2LTY0ID89ICJlYjNiMjA3OWVhNDNiNDUxZTA2YmU0NDNmOGJjMTQ2NzM2ZjljNGJjIgotU1JDUkVWX21hY2hpbmVfcWVtdW1pcHM2NCA/PSAiYzJlNWVmODNiNjEyZDUwZjUwZmFmZWVkOTkzMGRiZWEzMDJmYmU4YyIKLVNSQ1JFVl9tYWNoaW5lID89ICJlYjNiMjA3OWVhNDNiNDUxZTA2YmU0NDNmOGJjMTQ2NzM2ZjljNGJjIgotU1JDUkVWX21ldGEgPz0gIjA3NzRlYWNlYTJhN2QzYTE1MDU5NDUzM2I4YzgwZDBjMGJmZGZkZWQiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC45LmdpdDtuYW1lPW1hY2hpbmU7YnJhbmNoPSR7S0JSQU5DSH07IFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00Ljk7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotTElOVVhfVkVSU0lPTiA/PSAiNC45LjgyIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1LRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICJxZW11YXJtfHFlbXVhcm02NHxxZW11eDg2fHFlbXVwcGN8cWVtdW1pcHN8cWVtdW1pcHM2NHxxZW11eDg2LTY0IgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICIgY2ZnL3gzMi5zY2MiLCAiIiAsZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkODFkYTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiQmFiZWx0cmFjZSAtIFRyYWNlIEZvcm1hdCBCYWJlbCBUb3dlciIKLURFU0NSSVBUSU9OID0gIkJhYmVsdHJhY2UgcHJvdmlkZXMgdHJhY2UgcmVhZCBhbmQgd3JpdGUgbGlicmFyaWVzIGluIGhvc3Qgc2lkZSwgYXMgd2VsbCBhcyBhIHRyYWNlIGNvbnZlcnRlciwgd2hpY2ggdXNlZCB0byBjb252ZXJ0IExUVG5nIDIuMCB0cmFjZXMgaW50byBodW1hbi1yZWFkYWJsZSBsb2cuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5lZmZpY2lvcy5jb20vYmFiZWx0cmFjZS8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5sdHRuZy5vcmcvcHJvamVjdHMvYmFiZWx0cmFjZSIKLQotTElDRU5TRSA9ICJNSVQgJiBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTc2YmExNWRkNzZhMjQ4ZTFkZDUyNmJjYTBlMjEyNWZhIgotCi1ERVBFTkRTID0gImdsaWItMi4wIHV0aWwtbGludXggcG9wdCBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZWZmaWNpb3MuY29tL2ZpbGVzL2JhYmVsdHJhY2UvYmFiZWx0cmFjZS0ke1BWfS50YXIuYnoyIFwKLSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kZWJ1Zy1pbmZvIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMGNlYzI3NDVhYzMxNjY0OTc5MWM0M2Y0MTZkNzFlYTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjI0OWZlZTViZWJhNjU3NzMxZjVkNmE4NGM1Mjk2YzY1MTdmNTQ0YmZiZTc1NzFiZDFmZDdhZjIzNzI2MTM3YyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyOTQwMmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS40LmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiQmFiZWx0cmFjZSAtIFRyYWNlIEZvcm1hdCBCYWJlbCBUb3dlciIKK0RFU0NSSVBUSU9OID0gIkJhYmVsdHJhY2UgcHJvdmlkZXMgdHJhY2UgcmVhZCBhbmQgd3JpdGUgbGlicmFyaWVzIGluIGhvc3Qgc2lkZSwgYXMgd2VsbCBhcyBhIHRyYWNlIGNvbnZlcnRlciwgd2hpY2ggdXNlZCB0byBjb252ZXJ0IExUVG5nIDIuMCB0cmFjZXMgaW50byBodW1hbi1yZWFkYWJsZSBsb2cuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5lZmZpY2lvcy5jb20vYmFiZWx0cmFjZS8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5sdHRuZy5vcmcvcHJvamVjdHMvYmFiZWx0cmFjZSIKKworTElDRU5TRSA9ICJNSVQgJiBHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTc2YmExNWRkNzZhMjQ4ZTFkZDUyNmJjYTBlMjEyNWZhIgorCitERVBFTkRTID0gImdsaWItMi4wIHV0aWwtbGludXggcG9wdCBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZWZmaWNpb3MuY29tL2ZpbGVzL2JhYmVsdHJhY2UvYmFiZWx0cmFjZS0ke1BWfS50YXIuYnoyIFwKKyIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kZWJ1Zy1pbmZvIgorCitTUkNfVVJJW21kNXN1bV0gPSAiM2U4Y2RhZmVjM2FjMDM0NmEzODk4NzBlODdiZjEzNDQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTY0MzAzOTkyM2EwYWJjNzVhMjViM2Q1OTRjZWUwMDE3NDIzYjU3ZjEwZDJiNjI1ZTk2ZWQxZThkNDg5MWZjMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzXzIuOS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi45LjUuYmIKaW5kZXggNmU5MmMyMi4uOTM2MjZkZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi45LjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi45LjUuYmIKQEAgLTI1LDYgKzI1LDcgQEAKIFBBQ0tBR0VDT05GSUdba21vZF0gPSAiLS1lbmFibGUta21vZCwgLS1kaXNhYmxlLWttb2QsIGttb2QiCiBQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW4tcGFnZXMsIC0tZGlzYWJsZS1tYW4tcGFnZXMsIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUgbGlieHNsdC1uYXRpdmUiCiBQQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAibHR0bmctdXN0IgorUEFDS0FHRUNPTkZJR19yZW1vdmVfcmlzY3Y2NCA9ICJsdHRuZy11c3QiCiAKIFNSQ19VUkkgPSAiaHR0cHM6Ly9sdHRuZy5vcmcvZmlsZXMvbHR0bmctdG9vbHMvbHR0bmctdG9vbHMtJHtQVn0udGFyLmJ6MiBcCiAgICAgICAgICAgIGZpbGU6Ly94MzIucGF0Y2ggXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0L2x0dG5nLXVzdC1kb2MtZXhhbXBsZXMtZGlzYWJsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdC9sdHRuZy11c3QtZG9jLWV4YW1wbGVzLWRpc2FibGUucGF0Y2gKaW5kZXggMGYxOGM1ZC4uYmZmODUyNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0L2x0dG5nLXVzdC1kb2MtZXhhbXBsZXMtZGlzYWJsZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy11c3QvbHR0bmctdXN0LWRvYy1leGFtcGxlcy1kaXNhYmxlLnBhdGNoCkBAIC02LDEzICs2LDEyIEBACiAKIFNpZ25lZC1vZmYtYnk6IFRvbSBaYW51c3NpIDx0b20uemFudXNzaUBpbnRlbC5jb20+CiAKLUluZGV4OiBkb2MvTWFrZWZpbGUuYW0KK0luZGV4OiBsdHRuZy11c3QtMi45LjEvZG9jL01ha2VmaWxlLmFtCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYS9kb2MvTWFrZWZpbGUuYW0KLSsrKyBiL2RvYy9NYWtlZmlsZS5hbQotQEAgLTEsNCArMSw0IEBACistLS0gbHR0bmctdXN0LTIuOS4xLm9yaWcvZG9jL01ha2VmaWxlLmFtCisrKysgbHR0bmctdXN0LTIuOS4xL2RvYy9NYWtlZmlsZS5hbQorQEAgLTEsMyArMSwzIEBACiAtU1VCRElSUyA9IC4gbWFuIGV4YW1wbGVzCiArU1VCRElSUyA9IC4gbWFuCiAgCi0gZGlzdF9tYW5fTUFOUyA9IG1hbi9sdHRuZy1nZW4tdHAuMSBcCi0gCW1hbi9sdHRuZy11c3QuMyBcCisgZGlzdF9kb2NfREFUQSA9IGphdmEtYWdlbnQudHh0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9tYWtlLW1vZC1zY3JpcHRzL21ha2UtbW9kLXNjcmlwdHNfMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbWFrZS1tb2Qtc2NyaXB0cy9tYWtlLW1vZC1zY3JpcHRzXzEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2M1OGM1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbWFrZS1tb2Qtc2NyaXB0cy9tYWtlLW1vZC1zY3JpcHRzXzEuMC5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIkJ1aWxkIHRvb2xzIG5lZWRlZCBieSBleHRlcm5hbCBtb2R1bGVzIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL0dQTC0yLjA7bWQ1PTgwMWY4MDk4MGQxNzFkZDY0MjU2MTA4MzNhMjJkYmU2IgorCitpbmhlcml0IGtlcm5lbC1hcmNoCitpbmhlcml0IHBrZ2NvbmZpZworCitQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgorCitTID0gIiR7V09SS0RJUn0iCisKK2RvX2NvbmZpZ3VyZVtkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fc2hhcmVkX3dvcmtkaXIgb3BlbnNzbC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKK2RvX2NvbXBpbGVbZGVwZW5kc10gKz0gInZpcnR1YWwva2VybmVsOmRvX2NvbXBpbGVfa2VybmVsbW9kdWxlcyIKKworREVQRU5EUyArPSAiYmMtbmF0aXZlIgorCitFWFRSQV9PRU1BS0UgPSAiIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIEhPU1RDUFA9IiR7QlVJTERfQ1BQfSIiCisKKyMgQnVpbGQgc29tZSBob3N0IHRvb2xzIHVuZGVyIHdvcmstc2hhcmVkLiAgQ0MsIExELCBhbmQgQVIgYXJlIHByb2JhYmx5CisjIG5vdCB1c2VkLCBidXQgdGhpcyBpcyB0aGUgaGlzdG9yaWNhbCB3YXkgb2YgaW52b2tpbmcgIm1ha2Ugc2NyaXB0cyIuCisjCitkb19jb25maWd1cmUoKSB7CisJdW5zZXQgQ0ZMQUdTIENQUEZMQUdTIENYWEZMQUdTIExERkxBR1MKKwlvZV9ydW5tYWtlIENDPSIke0tFUk5FTF9DQ30iIExEPSIke0tFUk5FTF9MRH0iIEFSPSIke0tFUk5FTF9BUn0iIFwKKwkgICAgICAgICAgIC1DICR7U1RBR0lOR19LRVJORUxfRElSfSBPPSR7U1RBR0lOR19LRVJORUxfQlVJTERESVJ9IHNjcmlwdHMgcHJlcGFyZQorCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiMDE2NTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotU1VNTUFSWSA9ICJTeXN0ZW0tV2lkZSBQcm9maWxlciIKLURFU0NSSVBUSU9OID0gIk9Qcm9maWxlIGlzIGEgc3lzdGVtLXdpZGUgcHJvZmlsZXIgZm9yIExpbnV4IHN5c3RlbXMsIGNhcGFibGUgXAotb2YgcHJvZmlsaW5nIGFsbCBydW5uaW5nIGNvZGUgYXQgbG93IG92ZXJoZWFkLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9vcHJvZmlsZS5zb3VyY2Vmb3JnZS5uZXQvbmV3cy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9MTYxOTEmYXRpZD0xMTYxOTEiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjErICYgR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJvcGFnZW50L29wYWdlbnQuaDtiZWdpbmxpbmU9NTtlbmRsaW5lPTI2O21kNT00ZjE2ZjcyYzdhNDkzZDhhNDcwNGFhMThkMDNkMTVjNiBcCi0gICAgICAgICAgICAgICAgICAgIgotU0VDVElPTiA9ICJkZXZlbCIKLQotREVQRU5EUyA9ICJwb3B0IGJpbnV0aWxzIgotUkRFUEVORFNfJHtQTn0gPSAiYmludXRpbHMtc3ltbGlua3MiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtdm1saW51eCIKLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9ICR7bGliZGlyfS8ke0JQTn0vbGliKiR7U09MSUJTfSAke2RhdGFkaXJ9LyR7QlBOfSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9LyR7QlBOfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZGlyfS8ke0JQTn0vbGliKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9LyR7QlBOfS9saWIqLmEiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2FjaW5jbHVkZS5tNCBcCi0gICAgICAgICAgIGZpbGU6Ly9hdXRvbWFrZS1mb3JlaWduLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wcm9maWxlLWNyb3NzLWNvbXBpbGUtdGVzdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL3Jvb3QtaG9tZS1kaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtcm1iLWRlZmluaXRpb24tZm9yLU5JT1MyLWFyY2hpdGVjdHVyZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1GVEJGUy1wcm9ibGVtLXdpdGgtR0NDLTYucGF0Y2ggXAotIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAib3Byb2ZpbGUtKD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9vcHJvZmlsZS9maWxlcy9vcHJvZmlsZS8iCi0KLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovL211c2wucGF0Y2giCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwdGVzdAotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWtlcm5lbD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IC0td2l0aG91dC14IGFjX2N2X3Byb2dfWFNMVFBST0M9IgotZG9fY29uZmlndXJlICgpIHsKLQljcCAke1dPUktESVJ9L2FjaW5jbHVkZS5tNCAke1N9LwotCWF1dG90b29sc19kb19jb25maWd1cmUKLX0KLQotRVhUUkFfT0VNQUtFID0gIlNSQ0RJUj0ke1BURVNUX1BBVEh9L2xpYnV0aWwrKy90ZXN0cyIKLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSBjaGVjawotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCXN1YmRpcnM9ImxpYmRiL3Rlc3RzIGxpYnV0aWwrKy90ZXN0cyBsaWJyZWdleC90ZXN0cyBsaWJ1dGlsL3Rlc3RzIGxpYm9wL3Rlc3RzIGxpYmRiL3Rlc3RzICIKLQlmb3IgdG9vbHRlc3QgaW4gJHtzdWJkaXJzfQotCWRvCi0JCWZpbmQgJHt0b29sdGVzdH0gLXBlcm0gL3U9eCAtdHlwZSBmfCBjcGlvIC1wdmR1ICR7RH0ke1BURVNUX1BBVEh9Ci0JZG9uZQotCi0JIyBuZWVkZWQgYnkgc29tZSBsaWJvcCB0ZXN0cwotCWNwIC1yIGV2ZW50cyAke0R9JHtQVEVTVF9QQVRIfQotCi0JIyBuZWVkZWQgYnkgbGlicmVnZXggcmVnZXhfdGVzdAotCWNwIGxpYnJlZ2V4L3N0bC5wYXQgJHtEfSR7UFRFU1RfUEFUSH0vbGlicmVnZXgKLQljcCBsaWJyZWdleC90ZXN0cy9tYW5nbGVkLW5hbWUgJHtEfSR7UFRFU1RfUEFUSH0vbGlicmVnZXgvdGVzdHMKLQotCSMgbmVlZGVkIGJ5IGxpdHV0aWwrKyBmaWxlX21hbmlwX3Rlc3RzCi0JY3AgJHtTfS9saWJ1dGlsKysvdGVzdHMvZmlsZV9tYW5pcF90ZXN0cy5jcHAgXAotCQlsaWJ1dGlsKysvdGVzdHMvZmlsZV9tYW5pcF90ZXN0cy5vICR7RH0ke1BURVNUX1BBVEh9L2xpYnV0aWwrKy90ZXN0cwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvMDAwMS1BZGQtcm1iLWRlZmluaXRpb24tZm9yLU5JT1MyLWFyY2hpdGVjdHVyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLzAwMDEtQWRkLXJtYi1kZWZpbml0aW9uLWZvci1OSU9TMi1hcmNoaXRlY3R1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlODU2MmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvMDAwMS1BZGQtcm1iLWRlZmluaXRpb24tZm9yLU5JT1MyLWFyY2hpdGVjdHVyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gMzRiMGQ5YjFhMzJmYjQwNGEzMDMyN2E3YWU4OTMxYzdjNzU1ODNiZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgotRGF0ZTogVHVlLCA5IEZlYiAyMDE2IDAyOjAwOjI5ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBybWIoKSBkZWZpbml0aW9uIGZvciBOSU9TMiBhcmNoaXRlY3R1cmUKLQotU2lnbmVkLW9mZi1ieTogTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+Ci1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbIGh0dHA6Ly9tYXJjLmluZm8vP2w9b3Byb2ZpbGUtbGlzdCZtPTE0NTUwMTkxNTkzMTg3NCZ3PTIgXQotLS0tCi0gbGlicGVyZl9ldmVudHMvb3BlcmZfdXRpbHMuaCB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJwZXJmX2V2ZW50cy9vcGVyZl91dGlscy5oIGIvbGlicGVyZl9ldmVudHMvb3BlcmZfdXRpbHMuaAotaW5kZXggMzI5NTRjYy4uODI3MGU1MyAxMDA2NDQKLS0tLSBhL2xpYnBlcmZfZXZlbnRzL29wZXJmX3V0aWxzLmgKLSsrKyBiL2xpYnBlcmZfZXZlbnRzL29wZXJmX3V0aWxzLmgKLUBAIC0xNzgsNiArMTc4LDExIEBAIHZvaWQgb3BfcmVsZWFzZV9yZXNvdXJjZXModm9pZCk7Ci0gI2RlZmluZSBjcHVfcmVsYXgoKQlhc20gdm9sYXRpbGUoIiIgOjo6ICJtZW1vcnkiKQotICNlbmRpZgotIAotKyNpZmRlZiBfX25pb3MyX18KLSsjZGVmaW5lIHJtYigpCQlhc20gdm9sYXRpbGUoIiIgOjo6ICJtZW1vcnkiKQotKyNkZWZpbmUgY3B1X3JlbGF4KCkJYXNtIHZvbGF0aWxlKCIiIDo6OiAibWVtb3J5IikKLSsjZW5kaWYKLSsKLSAjaWZkZWYgX190aWxlX18KLSAjaW5jbHVkZSA8YXNtL3VuaXN0ZC5oPgotICNkZWZpbmUgcm1iKCkJCV9faW5zbl9tZigpCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLzAwMDEtRml4LUZUQkZTLXByb2JsZW0td2l0aC1HQ0MtNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLzAwMDEtRml4LUZUQkZTLXByb2JsZW0td2l0aC1HQ0MtNi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM3MmZkNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS8wMDAxLUZpeC1GVEJGUy1wcm9ibGVtLXdpdGgtR0NDLTYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIDM5ZDRkNDZhMGJkNTA0YWM3MDhmZmU3MmRmODdiZjc0Y2QxMmFkMzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBXaWxsaWFtIENvaGVuIDx3Y29oZW5AcmVkaGF0LmNvbT4KLURhdGU6IEZyaSwgNSBGZWIgMjAxNiAxNzozMDoxOSAtMDUwMAotU3ViamVjdDogW1BBVENIXSBGaXggRlRCRlMgcHJvYmxlbSB3aXRoIEdDQy02Ci0KLUdDQy02IGlzIHBpY2tpZXIgYWJvdXQgc29tZSBvZiB0aGUgdHlwZSBjb252ZXJzaW9ucyBjYXVzaW5nIHRoZSBGZWRvcmEKLTI0IG1hc3MgcmVidWlsZCB0aGUgYnVpbGQgb2Ygb3Byb2ZpbGUgZmFpbGVkIHdpdGg6Ci0KLW1ha2VbM106IEVudGVyaW5nIGRpcmVjdG9yeSAnL2J1aWxkZGlyL2J1aWxkL0JVSUxEL29wcm9maWxlLTEuMS4wL2xpYnV0aWwrKycKLWcrKyAtREhBVkVfQ09ORklHX0ggLUkuIC1JLi4gIC1JIC4uL2xpYnV0aWwgLUkgLi4vbGlib3AgLUkgLi4vbGlicHAgICAtVyAtV2FsbCAtZm5vLWNvbW1vbiAtZnRlbXBsYXRlLWRlcHRoLTUwIC1PMiAtZyAtcGlwZSAtV2FsbCAtV2Vycm9yPWZvcm1hdC1zZWN1cml0eSAtV3AsLURfRk9SVElGWV9TT1VSQ0U9MiAtZmV4Y2VwdGlvbnMgLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIC0tcGFyYW09c3NwLWJ1ZmZlci1zaXplPTQgLWdyZWNvcmQtZ2NjLXN3aXRjaGVzIC1zcGVjcz0vdXNyL2xpYi9ycG0vcmVkaGF0L3JlZGhhdC1oYXJkZW5lZC1jYzEgLW0zMiAtbWFyY2g9aTY4NiAtbXR1bmU9YXRvbSAtZmFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIC1jIC1vIG9wX2JmZC5vIG9wX2JmZC5jcHAKLW9wX2JmZC5jcHA6IEluIG1lbWJlciBmdW5jdGlvbiAndm9pZCBvcF9iZmQ6OmdldF9zeW1ib2xfcmFuZ2Uoc3ltYm9sX2luZGV4X3QsIGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQmLCBsb25nIGxvbmcgdW5zaWduZWQgaW50JikgY29uc3QnOgotb3BfYmZkLmNwcDo1Mzg6NDc6IGVycm9yOiBjYW5ub3QgY29udmVydCAnc3RkOjpvc3RyZWFtIHtha2Egc3RkOjpiYXNpY19vc3RyZWFtPGNoYXI+fScgdG8gJ2NvbnN0IGJvb2wnIGluIGluaXRpYWxpemF0aW9uCi0gIGJvb2wgY29uc3QgdmVyYm9zZSA9IGN2ZXJiIDw8ICh2YmZkICYgdmxldmVsMSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KLW9wX2JmZC5jcHA6NTQ2Ojc6IGVycm9yOiBpbiBhcmd1bWVudCB0byB1bmFyeSAhCi0gIGlmICghdmVyYm9zZSkKLSAgICAgICBefn5+fn5+Ci0KLUF2b2lkIHRoZSBpbnRlcm1lZGlhdGUgYm9vbCB0eXBlIHRvIG1ha2UgR0NDLTYgaGFwcHkuCi0KLVNpZ25lZC1vZmYtYnk6IFdpbGxpYW0gQ29oZW4gPHdjb2hlbkByZWRoYXQuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSBsaWJ1dGlsKysvb3BfYmZkLmNwcCB8IDQgKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYnV0aWwrKy9vcF9iZmQuY3BwIGIvbGlidXRpbCsrL29wX2JmZC5jcHAKLWluZGV4IDM4OWM5MjAuLmYyZWI0MmIgMTAwNjQ0Ci0tLS0gYS9saWJ1dGlsKysvb3BfYmZkLmNwcAotKysrIGIvbGlidXRpbCsrL29wX2JmZC5jcHAKLUBAIC01MzUsMTUgKzUzNSwxMyBAQCB2b2lkIG9wX2JmZDo6Z2V0X3N5bWJvbF9yYW5nZShzeW1ib2xfaW5kZXhfdCBzeW1faWR4LAotIHsKLSAJb3BfYmZkX3N5bWJvbCBjb25zdCAmIHN5bSA9IHN5bXNbc3ltX2lkeF07Ci0gCi0tCWJvb2wgY29uc3QgdmVyYm9zZSA9IGN2ZXJiIDw8ICh2YmZkICYgdmxldmVsMSk7Ci0tCi0gCWlmIChhbm9uX29iaikKLSAJCXN0YXJ0ID0gc3ltLnZtYSgpOwotIAllbHNlCi0gCQlzdGFydCA9IHN5bS5maWxlcG9zKCk7Ci0gCWVuZCA9IHN0YXJ0ICsgc3ltLnNpemUoKTsKLSAKLS0JaWYgKCF2ZXJib3NlKQotKwlpZiAoIShjdmVyYiA8PCAodmJmZCAmIHZsZXZlbDEpKSkKLSAJCXJldHVybjsKLSAKLSAJaW9fc3RhdGUgc3RhdGUoY3ZlcmIgPDwgKHZiZmQgJiB2bGV2ZWwxKSk7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL2FjaW5jbHVkZS5tNCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL2FjaW5jbHVkZS5tNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVlY2Q5MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9hY2luY2x1ZGUubTQKKysrIC9kZXYvbnVsbApAQCAtMSw1ODEgKzAsMCBAQAotZG5sIEFYX0tFUk5FTF9PUFRJT04ob3B0aW9uLCBhY3Rpb24taWYtZm91bmQsIGFjdGlvbi1pZi1ub3QtZm91bmQpCi1kbmwgc2VlIGlmIGF1dG9jb25mLmggZGVmaW5lcyB0aGUgb3B0aW9uCi1BQ19ERUZVTihbQVhfS0VSTkVMX09QVElPTl0sIFsKLVNBVkVfQ0ZMQUdTPSRDRkxBR1MKLUNGTEFHUz0iLUkkS0lOQyAtTzIgLURfX0tFUk5FTF9fIgotQUNfVFJZX0NPTVBJTEUoIFsjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+XSwKLVsKLSNpZm5kZWYgJDEKLWJyZWFrX21lX2hhcmQoXFxcKTsKLSNlbmRpZgotXSxbJDJdLFskM10sKQotQ0ZMQUdTPSRTQVZFX0NGTEFHUwotXSkKLQotZG5sIEhhbmRsZSB0aGUgMi40IG1vZHVsZSBpbnNpZGUgbW9kdWxlLwotQUNfREVGVU4oW0FYX0NPTkZJR19NT0RVTEVdLAotWwotaWYgdGVzdCAhIC1mICRLSU5DL2xpbnV4L2F1dG9jb25mLmg7IHRoZW4KLQlBQ19NU0dfRVJST1IoW25vIHN1aXRhYmx5IGNvbmZpZ3VyZWQga2VybmVsIGluY2x1ZGUgdHJlZSBmb3VuZF0pCi1maQotCi1kbmwgIC0tLSBHZXQgTGludXgga2VybmVsIHZlcnNpb24gYW5kIGNvbXBpbGUgcGFyYW1ldGVycyAtLS0KLQotQUNfU1VCU1QoS1ZFUlMpCi1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciBrZXJuZWwgdmVyc2lvbl0pCi1kbmwgaXQncyBsaWtlIHRoaXMgdG8gaGFuZGxlIG1hbmRyYWtlJ3MgZnViYXIgdmVyc2lvbi5oIC0gYnVnICM0NzE0NDgKLWV2YWwgS1ZFUlM9YGdjYyAtSSRLSU5DIC1FIC1kTSAkS0lOQy9saW51eC92ZXJzaW9uLmggfCBncmVwIC13IFVUU19SRUxFQVNFIHwgYXdrICd7cHJpbnQgJFtdM30nYAotQUNfTVNHX1JFU1VMVChbJEtWRVJTXSkKLWNhc2UgIiRLVkVSUyIgaW4KLTIuMi4qfDIuNC4qKSA7OwotKikgQUNfTVNHX0VSUk9SKFtVbnN1cHBvcnRlZCBrZXJuZWwgdmVyc2lvbl0pCi1lc2FjCi0KLWRubCBDaGVjayBmb3IgdGhlIG1pbmltYWwga2VybmVsIHZlcnNpb24gc3VwcG9ydGVkCi1BQ19NU0dfQ0hFQ0tJTkcoW2tlcm5lbCB2ZXJzaW9uXSkKLUFYX0tFUk5FTF9WRVJTSU9OKDIsIDIsIDEwLCA8PSwgQUNfTVNHX1JFU1VMVChbb2tdKSwgQUNfTVNHX0VSUk9SKFtjaGVjayBodG1sIGRvY3VtZW50YXRpb24gaW5zdGFsbCBzZWN0aW9uXSkpCi0KLWRubCBsaW51eC9zcGlubG9jay5oIGFkZGVkIGF0IHNvbWUgcG9pbnQgaW4gcGFzdAotQUNfTVNHX0NIRUNLSU5HKFtmb3IgJEtJTkMvbGludXgvc3BpbmxvY2suaF0pCi1pZiB0ZXN0IC1mICRLSU5DL2xpbnV4L3NwaW5sb2NrLmg7IHRoZW4KLQlFWFRSQV9DRkxBR1NfTU9EVUxFPSIkRVhUUkFfQ0ZMQUdTX01PRFVMRSAtREhBVkVfTElOVVhfU1BJTkxPQ0tfSEVBREVSIgotCUFDX01TR19SRVNVTFQoW3llc10pCi1lbHNlCi0JQUNfTVNHX1JFU1VMVChbbm9dKQotZmkKLQotQUNfTVNHX0NIRUNLSU5HKFtmb3IgcnRjX2xvY2tdKQotZ2NjIC1JJEtJTkMgLUUgJEtJTkMvbGludXgvbWMxNDY4MThydGMuaCB8IGdyZXAgcnRjX2xvY2sgPi9kZXYvbnVsbAotaWYgdGVzdCAiJD8iIC1lcSAwOyB0aGVuCi0JRVhUUkFfQ0ZMQUdTX01PRFVMRT0iJEVYVFJBX0NGTEFHU19NT0RVTEUgLURSVENfTE9DSyIKLQlBQ19NU0dfUkVTVUxUKFt5ZXNdKQotZWxzZQotCUFDX01TR19SRVNVTFQoW25vXSkKLWZpCi0JIAotYXJjaD0idW5rbm93biIKLUFDX01TR19DSEVDS0lORyhmb3IgeDg2LTY0IGFyY2hpdGVjdHVyZSkKLUFYX0tFUk5FTF9PUFRJT04oQ09ORklHX1g4Nl82NCwgeDg2NjQ9MSwgeDg2NjQ9MCkKLUFYX01TR19SRVNVTFRfWU4oJHg4NjY0KQotQlVJTERfSEFNTUVSPW5vCi1pZiB0ZXN0ICIkeDg2NjQiIC1lcSAxOyB0aGVuCi0JYXJjaD0ieDg2IgotCUJVSUxEX0hBTU1FUj15ZXMKLWVsc2UKLQlBQ19NU0dfQ0hFQ0tJTkcoZm9yIHg4NiBhcmNoaXRlY3R1cmUpCi0JQVhfS0VSTkVMX09QVElPTihDT05GSUdfWDg2LCB4ODY9MSwgeDg2PTApCi0JQVhfS0VSTkVMX09QVElPTihDT05GSUdfWDg2X1dQX1dPUktTX09LLCB4ODY9MSwgeDg2PSR4ODYpCi0JQVhfTVNHX1JFU1VMVF9ZTigkeDg2KQotCXRlc3QgIiR4ODYiID0gMSAmJiBhcmNoPSJ4ODYiCi0JCi0JaWYgdGVzdCAiJGFyY2giID0gInVua25vd24iOyB0aGVuCi0gIAkJQUNfTVNHX0NIRUNLSU5HKGZvciBpYTY0IGFyY2hpdGVjdHVyZSkKLSAgCQlBWF9LRVJORUxfT1BUSU9OKENPTkZJR19JQTY0LCBpYTY0PTEsIGlhNjQ9MCkKLSAgCQlBWF9NU0dfUkVTVUxUX1lOKCRpYTY0KQotICAJCXRlc3QgIiRpYTY0IiA9IDEgJiYgYXJjaD0iaWE2NCIKLQlmaQotCi1maQotQUNfU1VCU1QoQlVJTERfSEFNTUVSKQotCi10ZXN0ICIkYXJjaCIgPSAidW5rbm93biIgJiYgQUNfTVNHX0VSUk9SKFVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSkKLQotZG5sIGNoZWNrIHRvIHNlZSBpZiBrZXJuZWwgdmVyaW9uIGFwcHJvcHJpYXRlIGZvciBhcmNoCi1BQ19NU0dfQ0hFQ0tJTkcoYXJjaC9rZXJuZWwgdmVyc2lvbiBjb21iaW5hdGlvbikKLWNhc2UgIiRhcmNoIiBpbgotaWE2NCkKLQlBWF9LRVJORUxfVkVSU0lPTigyLCA0LCAxOCwgPCwgQUNfTVNHX1JFU1VMVChbb2tdKSwKLQkJQUNfTVNHX0VSUk9SKFt1bnN1cHBvcnRlZCBhcmNoL2tlcm5lbF0pKSA7OwotKikgQUNfTVNHX1JFU1VMVChbb2tdKQotZXNhYwotCi1kbmwgZm9yIG5vdyB3ZSBkbyBub3Qgc3VwcG9ydCBQUkVFTVBUIHBhdGNoCi1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciBwcmVlbXB0IHBhdGNoXSkKLUFYX0tFUk5FTF9PUFRJT04oQ09ORklHX1BSRUVNUFQscHJlZW1wdD0xLHByZWVtcHQ9MCkKLUFYX01TR19SRVNVTFRfWU4oWyRwcmVlbXB0XSkKLXRlc3QgIiRwcmVlbXB0IiA9IDAgfHwgQUNfTVNHX0VSUk9SKFt1bnN1cHBvcnRlZCBrZXJuZWwgY29uZmlndXJhdGlvbiA6IENPTkZJR19QUkVFTVBUXSkKLQotQUNfU1VCU1QoS0lOQykKLQotTU9ESU5TVEFMTERJUj0vbGliL21vZHVsZXMvJEtWRVJTCi0gCi1PUFJPRklMRV9NT0RVTEVfQVJDSD0kYXJjaAotQUNfU1VCU1QoT1BST0ZJTEVfTU9EVUxFX0FSQ0gpCi1dCi0pCi0KLWRubCBBWF9NU0dfUkVTVUxUX1lOKGEpCi1kbmwgcmVzdWx0cyAieWVzIiBpZmYgYT09MSwgIm5vIiBlbHNlCi1BQ19ERUZVTihbQVhfTVNHX1JFU1VMVF9ZTl0sIFt4PW5vCi10ZXN0ICJ4JDEiID0gIngxIiAmJiB4PXllcwotQUNfTVNHX1JFU1VMVCgkeCldKQotCi1kbmwgQVhfTUFMTE9DX0FUVFJJQlVURSAtIHNlZSBpZiBnY2Mgd2lsbCB0YWtlIF9fYXR0cmlidXRlX18oKG1hbGxvYykpCi1BQ19ERUZVTihbQVhfTUFMTE9DX0FUVFJJQlVURV0sCi1bCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgbWFsbG9jIGF0dHJpYnV0ZSBpcyB1bmRlcnN0b29kXSkKLVNBVkVfQ0ZMQUdTPSRDRkxBR1MKLUNGTEFHUz0iLVdlcnJvciAkQ0ZMQUdTIgotQUNfVFJZX0NPTVBJTEUoLFsKLXZvaWQgbW9ua2V5KCkgX19hdHRyaWJ1dGVfXygobWFsbG9jKSk7Ci1dLEFDX01TR19SRVNVTFQoW3llc10pOyBBQ19ERUZJTkUoTUFMTE9DX0FUVFJJQlVURV9PSywgMSwgW3doZXRoZXIgbWFsbG9jIGF0dHJpYnV0ZSBpcyB1bmRlcnN0b29kXSksIEFDX01TR19SRVNVTFQoW25vXSkpCi1DRkxBR1M9JFNBVkVfQ0ZMQUdTIAotXQotKQotCi1kbmwgYnVpbHRpbl9leHBlY3QgaXMgdXNlZCBpbiBtb2R1bGUgd2UgY2FuJ3QgYWRkIHRoYXQgaW4gY29uZmlnLmgKLUFDX0RFRlVOKFtBWF9CVUlMVElOX0VYUEVDVF0sCi1bCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgX19idWlsdGluX2V4cGVjdCBpcyB1bmRlcnN0b29kXSkKLVNBVkVfQ0ZMQUdTPSRDRkxBR1MKLUNGTEFHUz0iLVdlcnJvciAkQ0ZMQUdTIgotQUNfVFJZX0xJTksoLFsKLWludCBpOwotaWYgKF9fYnVpbHRpbl9leHBlY3QoaSwgMCkpIHsgfQotXSwKLUFDX01TR19SRVNVTFQoW3llc10pOyBFWFRSQV9DRkxBR1NfTU9EVUxFPSIkRVhUUkFfQ0ZMQUdTX01PRFVMRSAtREVYUEVDVF9PSyIsCi1BQ19NU0dfUkVTVUxUKFtub10pOykKLUNGTEFHUz0kU0FWRV9DRkxBR1MgCi1dCi0pIAotCi1kbmwgQVhfRVhUUkFfRElSUyAtIExldCB1c2VyIHNwZWNpZnkgZXh0cmEgZGlycyBmb3IgaW5jbHVkZS9saWJzCi1BQ19ERUZVTihbQVhfRVhUUkFfRElSU10sCi1bCi1BQ19BUkdfV0lUSChleHRyYS1pbmNsdWRlcywKLVsgIC0td2l0aC1leHRyYS1pbmNsdWRlcz1ESVIgICAgYWRkIGV4dHJhIGluY2x1ZGUgcGF0aHNdLAotICB1c2VfZXh0cmFfaW5jbHVkZXM9IiR3aXRodmFsIiwKLSAgdXNlX2V4dHJhX2luY2x1ZGVzPU5PCi0pCi1pZiB0ZXN0IC1uICIkdXNlX2V4dHJhX2luY2x1ZGVzIiAmJiBcCi0gICAgICAgIHRlc3QgIiR1c2VfZXh0cmFfaW5jbHVkZXMiICE9ICJOTyI7IHRoZW4KLSAgYWNfc2F2ZV9pZnM9JElGUwotICBJRlM9JzonCi0gIGZvciBkaXIgaW4gJHVzZV9leHRyYV9pbmNsdWRlczsgZG8KLSAgICBleHRyYV9pbmNsdWRlcz0iJGV4dHJhX2luY2x1ZGVzIC1JJGRpciIKLSAgZG9uZQotICBJRlM9JGFjX3NhdmVfaWZzCi0gIENQUEZMQUdTPSIkQ1BQRkxBR1MgJGV4dHJhX2luY2x1ZGVzIgotZmkKLQotQUNfQVJHX1dJVEgoZXh0cmEtbGlicywKLVsgIC0td2l0aC1leHRyYS1saWJzPURJUiAgICAgICAgYWRkIGV4dHJhIGxpYnJhcnkgcGF0aHNdLAotICB1c2VfZXh0cmFfbGlicz0kd2l0aHZhbCwKLSAgdXNlX2V4dHJhX2xpYnM9Tk8KLSkKLWlmIHRlc3QgLW4gIiR1c2VfZXh0cmFfbGlicyIgJiYgXAotICAgICAgICB0ZXN0ICIkdXNlX2V4dHJhX2xpYnMiICE9ICJOTyI7IHRoZW4KLSAgIGFjX3NhdmVfaWZzPSRJRlMKLSAgIElGUz0nOicKLSAgIGZvciBkaXIgaW4gJHVzZV9leHRyYV9saWJzOyBkbwotICAgICBleHRyYV9saWJyYXJpZXM9IiRleHRyYV9saWJyYXJpZXMgLUwkZGlyIgotICAgZG9uZQotICAgSUZTPSRhY19zYXZlX2lmcwotICAgTERGTEFHUz0iJExERkxBR1MgJGV4dHJhX2xpYnJhcmllcyIKLWZpCi1dCi0pCi0KLWRubCBBWF9QT1BUX0NPTlNUIC0gY2hlY2sgcG9wdCBwcm90b3R5cGUKLUFDX0RFRlVOKFtBWF9QT1BUX0NPTlNUXSwKLVsKLUFDX01TR19DSEVDS0lORyhbcG9wdCBwcm90b3R5cGVdKQotU0FWRV9DWFhGTEFHUz0kQ1hYRkxBR1MKLUNYWEZMQUdTPSItV2Vycm9yICRDWFhGTEFHUyIKLUFDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8cG9wdC5oPl0sCi1bCi1pbnQgYzsgY2hhciAqKnY7Ci1wb3B0R2V0Q29udGV4dCgwLCBjLCB2LCAwLCAwKTsKLV0sCi1BQ19NU0dfUkVTVUxUKFt0YWtlcyBjaGFyICoqXSk7LAotQUNfTVNHX1JFU1VMVChbdGFrZXMgY29uc3QgY2hhciAqKl0pOyBBQ19ERUZJTkUoQ09OU1RfUE9QVCwgMSwgW3doZXRoZXIgcG9wdCBwcm90b3R5cGUgdGFrZXMgYSBjb25zdCBjaGFyICoqXSkpCi1DWFhGTEFHUz0iJFNBVkVfQ1hYRkxBR1MiCi1dCi0pCi0KLWRubCBBWF9DSEVDS19TU1RSRUFNIC0gY2hlY2sgaWYgbG9jYWwgc3N0cmVhbSBpcyBuZWVkZWQgdG8gY29tcGlsZSBPSwotQUNfREVGVU4oW0FYX0NIRUNLX1NTVFJFQU1dLAotWwotQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIHVzZSBpbmNsdWRlZCBzc3RyZWFtXSkKLUFDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8c3N0cmVhbT5dLCBbXSwgCi1BQ19NU0dfUkVTVUxUKFtub10pOywKLUFDX01TR19SRVNVTFQoW3llc10pOyBPUF9DWFhGTEFHUz0iJE9QX0NYWEZMQUdTIC1JXCR7dG9wX3NyY2Rpcn0vaW5jbHVkZSIpCi1dCi0pCi0KLWRubCBBWF9DSEVDS19UWVBFREVGKHR5cGVkZWZfbmFtZSwgdHlwZSwgYWN0aW9uLWlmLXRydWUsIGFjdGlvbi1pZi1mYWxzZSkKLWRubCBleGVjIGFjdGlvbi1pZi10cnVlIGlmIHR5cGVkZWZfbmFtZSBpcyBhIHR5cGVkZWYgdG8gdHlwZSBlbHNlIGV4ZWMgCi1kbmwgYWN0aW9uLWlmLWZhbHNlCi1kbmwgY3VycmVudGx5IHdvcmsgb25seSB3aXRoIHR5cGUgdHlwZWRlZidlZCBpbiBzdGRkZWYuaAotQUNfREVGVU4oW0FYX0NIRUNLX1RZUEVERUZdLCBbCi1kbmwgQUNfTEFOR19QVVNIKEMpIG5vdCBpbiBhdXRvY29uZiAyLjEzCi1BQ19MQU5HX1NBVkUKLUFDX0xBTkdfQwotU0FWRV9DRkxBR1M9JENGTEFHUwotQ0ZMQUdTPSItV2Vycm9yICRDRkxBR1MiCi0KLUFDX1RSWV9DT01QSUxFKAotICBbCi0gICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAgXSwKLSAgWwotICB0eXBlZGVmIHZvaWQgKCpmY3QxKSgkMSk7Ci0gIHR5cGVkZWYgdm9pZCAoKmZjdDIpKCQyKTsKLSAgZmN0MSBmMSA9IDA7Ci0gIGZjdDIgZjIgPSAwOwotICBpZiAoZjEgPT0gZjIpIHt9Ci0gIF0sCi1bJDNdLFskNF0pCi0KLUNGTEFHUz0kU0FWRV9DRkxBR1MKLUFDX0xBTkdfUkVTVE9SRQotXSkKLQotCi1kbmwgQVhfVFlQRURFRkVEX05BTUUodHlwZWRlZl9uYW1lLCBjYW5kaWRhdGVfbGlzdCwgdmFyX25hbWUpCi1kbmwgc2V0IHZhcl9uYW1lIHRvIHRoZSB0eXBlZGVmIG5hbWUgb2YgJDEgd2hpY2ggbXVzdCBiZSBpbiBjYW5kaXRhdGVfbGlzdAotZG5sIGVsc2UgcHJvZHVjZSBhIGZhdGFsIGVycm9yCi1BQ19ERUZVTihbQVhfVFlQRURFRkVEX05BTUVdLCBbCi0JQUNfTVNHX0NIRUNLSU5HKFt0eXBlIG9mICQxXSkKLQlmb3IgZiBpbiAkMjsgZG8KLQkJQVhfQ0hFQ0tfVFlQRURFRigkMSwgJGYsICQzPSIkZiIsICQzPSIiKQotCQlpZiB0ZXN0IC1uICIkeyQzfSI7IHRoZW4KLQkJCWJyZWFrCi0JCWZpCi0JZG9uZQotCWlmIHRlc3QgLW4gIiR7JDN9IjsgdGhlbgotCQlBQ19NU0dfUkVTVUxUKFskeyQzfV0pCi0JZWxzZQotCQlBQ19NU0dfRVJST1IoW25vdCBmb3VuZF0pCi0JZmkKLV0pCi0KLWRubCBmaW5kIGEgYmluYXJ5IGluIHRoZSBwYXRoCi1BQ19ERUZVTihbUVRfRklORF9QQVRIXSwKLVsKLQlBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkMV0pCi0JQUNfQ0FDSEVfVkFMKHF0X2N2X3BhdGhfJDEsCi0JWwotCQlxdF9jdl9wYXRoXyQxPSJOT05FIgotCQlpZiB0ZXN0IC1uICIkJDIiOyB0aGVuCi0JCQlxdF9jdl9wYXRoXyQxPSIkJDIiOwotCQllbHNlCi0JCQlkaXJzPSIkMyIKLQkJCXF0X3NhdmVfSUZTPSRJRlMKLQkJCUlGUz0nOicKLQkJCWZvciBkaXIgaW4gJFBBVEg7IGRvCi0JCQkJZGlycz0iJGRpcnMgJGRpciIKLQkJCWRvbmUKLQkJCUlGUz0kcXRfc2F2ZV9JRlMKLSAKLQkJCWZvciBkaXIgaW4gJGRpcnM7IGRvCi0JCQkJaWYgdGVzdCAteCAiJGRpci8kMSI7IHRoZW4KLQkJCQkJaWYgdGVzdCAtbiAiJDUiOyB0aGVuCi0JCQkJCQlldmFsc3RyPSIkZGlyLyQxICQ1IDI+JjEgIgotCQkJCQkJaWYgZXZhbCAkZXZhbHN0cjsgdGhlbgotCQkJCQkJCXF0X2N2X3BhdGhfJDE9IiRkaXIvJDEiCi0JCQkJCQkJYnJlYWsKLQkJCQkJCWZpCi0JCQkJCWVsc2UKLQkJCQkJCXF0X2N2X3BhdGhfJDE9IiRkaXIvJDEiCi0JCQkJCQlicmVhawotCQkJCQlmaQotCQkJCWZpCi0JCQlkb25lCi0JCWZpCi0JXSkKLSAKLQlpZiB0ZXN0IC16ICIkcXRfY3ZfcGF0aF8kMSIgfHwgdGVzdCAiJHF0X2N2X3BhdGhfJDEiID0gIk5PTkUiOyB0aGVuCi0JCUFDX01TR19SRVNVTFQobm90IGZvdW5kKQotCQkkNAotCWVsc2UKLQkJQUNfTVNHX1JFU1VMVCgkcXRfY3ZfcGF0aF8kMSkKLQkJJDI9JHF0X2N2X3BhdGhfJDEKLQlmaQotXSkKLQotZG5sIEZpbmQgdGhlIHVpYyBjb21waWxlciBvbiB0aGUgcGF0aCBvciBpbiBxdF9jdl9kaXIKLUFDX0RFRlVOKFtRVF9GSU5EX1VJQ10sCi1bCi0JUVRfRklORF9QQVRIKHVpYywgYWNfdWljLCAkcXRfY3ZfZGlyL2JpbikKLQlpZiB0ZXN0IC16ICIkYWNfdWljIiAtYSAiJEZBVEFMIiA9IDE7IHRoZW4KLQkJQUNfTVNHX0VSUk9SKFt1aWMgYmluYXJ5IG5vdCBmb3VuZCBpbiBcJFBBVEggb3IgJHF0X2N2X2Rpci9iaW4gIV0pCi0JZmkKLV0pCi0gCi1kbmwgRmluZCB0aGUgcmlnaHQgbW9jIGluIHBhdGgvcXRfY3ZfZGlyCi1BQ19ERUZVTihbUVRfRklORF9NT0NdLAotWwotCVFUX0ZJTkRfUEFUSChtb2MyLCBhY19tb2MyLCAkcXRfY3ZfZGlyL2JpbikKLQlRVF9GSU5EX1BBVEgobW9jLCBhY19tb2MxLCAkcXRfY3ZfZGlyL2JpbikKLQotCWlmIHRlc3QgLW4gIiRhY19tb2MxIiAtYSAtbiAiJGFjX21vYzIiOyB0aGVuCi0JCWRubCBmb3VuZCBib3RoLiBQcmVmZXIgUXQzJ3MgaWYgaXQgZXhpc3RzIGVsc2UgbW9jMgotCQkkYWNfbW9jMSAtdiAyPiYxIHwgZ3JlcCAiUXQgMyIgPi9kZXYvbnVsbAotCQlpZiB0ZXN0ICIkPyIgPSAwOyB0aGVuCi0JCQlhY19tb2M9JGFjX21vYzE7Ci0JCWVsc2UKLQkJCWFjX21vYz0kYWNfbW9jMjsKLQkJZmkKLQllbHNlCi0JCWlmIHRlc3QgLW4gIiRhY19tb2MxIjsgdGhlbgotCQkJYWNfbW9jPSRhY19tb2MxOwotCQllbHNlCi0JCQlhY19tb2M9JGFjX21vYzI7Ci0JCWZpCi0JZmkKLQotCWlmIHRlc3QgLXogIiRhY19tb2MiICAtYSAiJEZBVEFMIiA9IDE7IHRoZW4KLQkJQUNfTVNHX0VSUk9SKFttb2MgYmluYXJ5IG5vdCBmb3VuZCBpbiBcJFBBVEggb3IgJHF0X2N2X2Rpci9iaW4gIV0pCi0JZmkKLV0pCi0KLWRubCBjaGVjayBhIHBhcnRpY3VsYXIgbGlibmFtZQotQUNfREVGVU4oW1FUX1RSWV9MSU5LXSwKLVsKLQlTQVZFX0xJQlM9IiRMSUJTIgotCUxJQlM9IiRMSUJTICQxIgotCUFDX1RSWV9MSU5LKFsKLQkjaW5jbHVkZSA8cWdsb2JhbC5oPgotCSNpbmNsdWRlIDxxc3RyaW5nLmg+Ci0JCV0sCi0JWwotCVFTdHJpbmcgcygibWFuZ2xlX2ZhaWx1cmUiKTsKLQkjaWYgKFFUX1ZFUlNJT04gPCAyMjEpCi0JYnJlYWtfbWVfKFxcXCk7Ci0JI2VuZGlmCi0JXSwKLQlxdF9jdl9saWJuYW1lPSQxLAotCSkKLQlMSUJTPSIkU0FWRV9MSUJTIgotXSkKLSAKLWRubCBjaGVjayB3ZSBjYW4gZG8gYSBjb21waWxlCi1BQ19ERUZVTihbUVRfQ0hFQ0tfQ09NUElMRV0sCi1bCi0JQUNfTVNHX0NIRUNLSU5HKFtmb3IgUXQgbGlicmFyeSBuYW1lXSkKLSAKLQlBQ19DQUNIRV9WQUwocXRfY3ZfbGlibmFtZSwKLQlbCi0JCUFDX0xBTkdfQ1BMVVNQTFVTCi0JCVNBVkVfQ1hYRkxBR1M9JENYWEZMQUdTCi0JCUNYWEZMQUdTPSIkQ1hYRkxBR1MgJFFUX0lOQ0xVREVTICRRVF9MREZMQUdTIiAKLQotCQlmb3IgbGlibmFtZSBpbiAtbHF0LW10IC1scXQzIC1scXQyIC1scXQ7Ci0JCWRvCi0JCQlRVF9UUllfTElOSygkbGlibmFtZSkKLQkJCWlmIHRlc3QgLW4gIiRxdF9jdl9saWJuYW1lIjsgdGhlbgotCQkJCWJyZWFrOwotCQkJZmkKLQkJZG9uZQotCi0JCUNYWEZMQUdTPSRTQVZFX0NYWEZMQUdTCi0JXSkKLQotCWlmIHRlc3QgLXogIiRxdF9jdl9saWJuYW1lIjsgdGhlbgotCQlBQ19NU0dfUkVTVUxUKFtmYWlsZWRdKSAKLQkJaWYgdGVzdCAiJEZBVEFMIiA9IDEgOyB0aGVuCi0JCQlBQ19NU0dfRVJST1IoW0Nhbm5vdCBjb21waWxlIGEgc2ltcGxlIFF0IGV4ZWN1dGFibGUuIENoZWNrIHlvdSBoYXZlIHRoZSByaWdodCBcJFFURElSICFdKQotCQlmaQotCWVsc2UKLQkJQUNfTVNHX1JFU1VMVChbJHF0X2N2X2xpYm5hbWVdKQotCWZpCi1dKQotCi1kbmwgZ2V0IFF0IHZlcnNpb24gd2UncmUgdXNpbmcKLUFDX0RFRlVOKFtRVF9HRVRfVkVSU0lPTl0sCi1bCi0JQUNfQ0FDSEVfQ0hFQ0soW1F0IHZlcnNpb25dLGx5eF9jdl9xdHZlcnNpb24sCi0JWwotCQlBQ19MQU5HX0NQTFVTUExVUwotCQlTQVZFX0NQUEZMQUdTPSRDUFBGTEFHUwotCQlDUFBGTEFHUz0iJENQUEZMQUdTICRRVF9JTkNMVURFUyIKLQotCQljYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSBfX29saW5lX18gImNvbmZpZ3VyZSIKLSNpbmNsdWRlICJjb25mZGVmcy5oIgotI2luY2x1ZGUgPHFnbG9iYWwuaD4KLSIlJSUiUVRfVkVSU0lPTl9TVFIiJSUlIgotRU9GCi0JCWx5eF9jdl9xdHZlcnNpb249YChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwgXAotCQkJZ3JlcCAnXiIlJSUiJyAgMj4vZGV2L251bGwgfCBcCi0JCQlzZWQgLWUgJ3MvIiUlJSIvL2cnIC1lICdzLyIvL2cnYAotCQlybSAtZiBjb25mdGVzdC4kYWNfZXh0Ci0JCUNQUEZMQUdTPSRTQVZFX0NQUEZMQUdTCi0JXSkKLSAKLQlRVF9WRVJTSU9OPSRseXhfY3ZfcXR2ZXJzaW9uCi0JQUNfU1VCU1QoUVRfVkVSU0lPTikKLV0pCi0gCi1kbmwgc3RhcnQgaGVyZSAKLUFDX0RFRlVOKFtRVF9ET19JVF9BTExdLAotWwotCWRubCBQbGVhc2UgbGVhdmUgdGhpcyBhbG9uZS4gSSB1c2UgdGhpcyBmaWxlIGluCi0JZG5sIG9wcm9maWxlLgotCUZBVEFMPTAKLQotCUFDX0FSR19XSVRIKHF0LWRpciwgWyAgLS13aXRoLXF0LWRpciAgICAgICAgICAgd2hlcmUgdGhlIHJvb3Qgb2YgUXQgaXMgaW5zdGFsbGVkIF0sCi0JCVsgcXRfY3ZfZGlyPWBldmFsIGVjaG8gIiR3aXRodmFsIi9gIF0pCi0JIAotCUFDX0FSR19XSVRIKHF0LWluY2x1ZGVzLCBbICAtLXdpdGgtcXQtaW5jbHVkZXMgICAgICB3aGVyZSB0aGUgUXQgaW5jbHVkZXMgYXJlLiBdLAotCQlbIHF0X2N2X2luY2x1ZGVzPWBldmFsIGVjaG8gIiR3aXRodmFsImAgXSkKLSAKLQlBQ19BUkdfV0lUSChxdC1saWJyYXJpZXMsIFsgIC0td2l0aC1xdC1saWJyYXJpZXMgICAgIHdoZXJlIHRoZSBRdCBsaWJyYXJ5IGlzIGluc3RhbGxlZC5dLAotCQlbICBxdF9jdl9saWJyYXJpZXM9YGV2YWwgZWNobyAiJHdpdGh2YWwiYCBdKQotCi0JZG5sIHBheSBhdHRlbnRpb24gdG8gJFFURElSIHVubGVzcyBvdmVycmlkZGVuCi0JaWYgdGVzdCAteiAiJHF0X2N2X2RpciI7IHRoZW4KLQkJcXRfY3ZfZGlyPSRRVERJUgotCWZpCi0gCi0JZG5sIGRlcml2ZSBpbmMvbGliIGlmIG5lZWRlZAotCWlmIHRlc3QgLW4gIiRxdF9jdl9kaXIiOyB0aGVuCi0JCWlmIHRlc3QgLXogIiRxdF9jdl9pbmNsdWRlcyI7IHRoZW4KLQkJCXF0X2N2X2luY2x1ZGVzPSRxdF9jdl9kaXIvaW5jbHVkZQotCQlmaQotCQlpZiB0ZXN0IC16ICIkcXRfY3ZfbGlicmFyaWVzIjsgdGhlbgotCQkJcXRfY3ZfbGlicmFyaWVzPSRxdF9jdl9kaXIvbGliCi0JCWZpCi0JZmkKLQotCWRubCBmbGFncyBmb3IgY29tcGlsYXRpb24KLQlRVF9JTkNMVURFUz0KLQlRVF9MREZMQUdTPQotCWlmIHRlc3QgLW4gIiRxdF9jdl9pbmNsdWRlcyI7IHRoZW4KLQkJUVRfSU5DTFVERVM9Ii1JJHF0X2N2X2luY2x1ZGVzIgotCWZpCi0JaWYgdGVzdCAtbiAiJHF0X2N2X2xpYnJhcmllcyI7IHRoZW4KLQkJUVRfTERGTEFHUz0iLUwkcXRfY3ZfbGlicmFyaWVzIgotCWZpCi0JQUNfU1VCU1QoUVRfSU5DTFVERVMpCi0JQUNfU1VCU1QoUVRfTERGTEFHUykKLSAKLQlRVF9GSU5EX01PQwotCU1PQz0kYWNfbW9jCi0JQUNfU1VCU1QoTU9DKQotCVFUX0ZJTkRfVUlDCi0JVUlDPSRhY191aWMKLQlBQ19TVUJTVChVSUMpCi0KLQlRVF9DSEVDS19DT01QSUxFCi0gCi0JUVRfTElCPSRxdF9jdl9saWJuYW1lOwotCUFDX1NVQlNUKFFUX0xJQikKLQotCWlmIHRlc3QgLW4gIiRxdF9jdl9saWJuYW1lIjsgdGhlbgotCQlRVF9HRVRfVkVSU0lPTgotCWZpCi1dKQotCi1kbmwgQVhfQ1hYRkxBR1NfT1BUSU9OUyh2YXItbmFtZSwgb3B0aW9uKQotZG5sIGFkZCBvcHRpb24gdG8gdmFyLW5hbWUgaWYgJENYWCBzdXBwb3J0IGl0LgotQUNfREVGVU4oW0FYX0NIRUNLX1BSRUNPTVBJTEVEX0hFQURFUl0sIFsKLUFDX01TR19DSEVDS0lORyhbd2hldGhlciAke0NYWH0gc3VwcG9ydCBwcmVjb21waWxlZCBoZWFkZXJdKQotQUNfTEFOR19TQVZFCi1BQ19MQU5HX0NQTFVTUExVUwotU0FWRV9DWFhGTEFHUz0kQ1hYRkxBR1MKLWRubCB3ZSBjb25zaWRlciB0aGFuIGlmIC1XaW52YWxpZC1wY2ggaXMgYWNjZXB0ZWQgcGNoIHdpbGwgd29ya3MgLi4uCi1DWFhGTEFHUz0tV2ludmFsaWQtcGNoCi1kbmwgYnV0IHdlIGRvbid0IHdhbnQgLVdpbnZhbGlkLXBjaCBlbHNlIGNvbXBpbGF0aW9uIHdpbGwgZmFpbCBkdWUgLVdlcnJvciBhbmQKLWRubCB0aGUgZmFjdCB0aGFuIHNvbWUgcGNoIHdpbGwgYmUgaW52YWxpZCBmb3IgdGhlIGdpdmVuIGNvbXBpbGF0aW9uIG9wdGlvbgotQUNfVFJZX0NPTVBJTEUoLFs7XSxBQ19NU0dfUkVTVUxUKFt5ZXNdKTsgJDE9IiR7JDF9IC1pbmNsdWRlIGJpdHMvc3RkYysrLmgiLCBBQ19NU0dfUkVTVUxUKFtub10pKQotQ1hYRkxBR1M9JFNBVkVfQ1hYRkxBR1MKLUFDX0xBTkdfUkVTVE9SRQotXSkKLQotZG5sIEFYX0NIRUNLX0RPQ0JPT0sKLUFDX0RFRlVOKFtBWF9DSEVDS19ET0NCT09LXSwgWwotIyBJdCdzIGp1c3QgcnVkZSB0byBnbyBvdmVyIHRoZSBuZXQgdG8gYnVpbGQKLVhTTFRQUk9DX0ZMQUdTPS0tbm9uZXQKLURPQ0JPT0tfUk9PVD0KLWlmIHRlc3QgISAtZiAvZXRjL3htbC9jYXRhbG9nOyB0aGVuCi0JZm9yIGkgaW4gL3Vzci9zaGFyZS9zZ21sL2RvY2Jvb2svc3R5bGVzaGVldC94c2wvbndhbHNoIC91c3Ivc2hhcmUvc2dtbC9kb2Nib29rL3hzbC1zdHlsZXNoZWV0cy87Ci0JZG8KLQkJaWYgdGVzdCAtZCAiJGkiOyB0aGVuCi0JCQlET0NCT09LX1JPT1Q9JGkKLQkJZmkKLQlkb25lCi0KLQkjIExhc3QgcmVzb3J0IC0gdHJ5IG5ldAotCWlmIHRlc3QgLXogIiRET0NCT09LX1JPT1QiOyB0aGVuCi0JCVhTTFRQUk9DX0ZMQUdTPQotCWZpCi1lbHNlCi0JWE1MX0NBVEFMT0c9L2V0Yy94bWwvY2F0YWxvZwotCUNBVF9FTlRSWV9TVEFSVD0nPCEtLScKLQlDQVRfRU5UUllfRU5EPSctLT4nCi1maQotCi1BQ19DSEVDS19QUk9HKFhTTFRQUk9DLHhzbHRwcm9jLHhzbHRwcm9jLCkKLVhTTFRQUk9DX1dPUktTPW5vCi1pZiB0ZXN0IC1uICIkWFNMVFBST0MiOyB0aGVuCi0JQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHhzbHRwcm9jIHdvcmtzXSkKLQotCWlmIHRlc3QgLW4gIiRYTUxfQ0FUQUxPRyI7IHRoZW4KLQkJREJfRklMRT0iaHR0cDovL2RvY2Jvb2suc291cmNlZm9yZ2UubmV0L3JlbGVhc2UveHNsL2N1cnJlbnQveGh0bWwvZG9jYm9vay54c2wiCi0JZWxzZQotCQlEQl9GSUxFPSIkRE9DQk9PS19ST09UL2RvY2Jvb2sueHNsIgotCWZpCi0KLQkkWFNMVFBST0MgJFhTTFRQUk9DX0ZMQUdTICREQl9GSUxFID4vZGV2L251bGwgMj4mMSA8PCBFTkQKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9J0lTTy04ODU5LTEnPz4KLTwhRE9DVFlQRSBib29rIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4xLjIvL0VOIiAiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjEuMi9kb2Nib29reC5kdGQiPgotPGJvb2sgaWQ9InRlc3QiPgotPC9ib29rPgotRU5ECi0JaWYgdGVzdCAiJD8iID0gMDsgdGhlbgotCQlYU0xUUFJPQ19XT1JLUz15ZXMKLQlmaQotCUFDX01TR19SRVNVTFQoJFhTTFRQUk9DX1dPUktTKQotZmkKLUFNX0NPTkRJVElPTkFMKGhhdmVfeHNsdHByb2MsIHRlc3QgIiRYU0xUUFJPQ19XT1JLUyIgPSAieWVzIikKLQotQUNfU1VCU1QoWE1MX0NBVEFMT0cpCi1BQ19TVUJTVChYU0xUUFJPQ19GTEFHUykKLUFDX1NVQlNUKERPQ0JPT0tfUk9PVCkKLUFDX1NVQlNUKENBVF9FTlRSWV9TVEFSVCkKLUFDX1NVQlNUKENBVF9FTlRSWV9FTkQpCi1dKQotCi1kbmwgQVhfQ0ZMQUdTX09QVElPTlModmFyLW5hbWUsIG9wdGlvbikKLWRubCBhZGQgb3B0aW9uIHRvIHZhci1uYW1lIGlmICRDQyBzdXBwb3J0IGl0LgotQUNfREVGVU4oW0FYX0NGTEFHU19PUFRJT05dLCBbCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgJHtDQ30gJDIgaXMgdW5kZXJzdG9vZF0pCi1BQ19MQU5HX1NBVkUKLUFDX0xBTkdfQwotU0FWRV9DRkxBR1M9JENGTEFHUwotQ0ZMQUdTPSQyCi1BQ19UUllfQ09NUElMRSgsWztdLEFDX01TR19SRVNVTFQoW3llc10pOyAkMT0iJHskMX0gJDIiLEFDX01TR19SRVNVTFQoW25vXSkpCi1DRkxBR1M9JFNBVkVfQ0ZMQUdTCi1BQ19MQU5HX1JFU1RPUkUKLV0pCi0KLQotZG5sIEFYX0NYWEZMQUdTX09QVElPTlModmFyLW5hbWUsIG9wdGlvbikKLWRubCBhZGQgb3B0aW9uIHRvIHZhci1uYW1lIGlmICRDWFggc3VwcG9ydCBpdC4KLUFDX0RFRlVOKFtBWF9DWFhGTEFHU19PUFRJT05dLCBbCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgJHtDWFh9ICQyIGlzIHVuZGVyc3Rvb2RdKQotQUNfTEFOR19TQVZFCi1BQ19MQU5HX0NQTFVTUExVUwotU0FWRV9DWFhGTEFHUz0kQ1hYRkxBR1MKLUNYWEZMQUdTPSQyCi1BQ19UUllfQ09NUElMRSgsWztdLEFDX01TR19SRVNVTFQoW3llc10pOyAkMT0iJHskMX0gJDIiLEFDX01TR19SRVNVTFQoW25vXSkpCi1DWFhGTEFHUz0kU0FWRV9DWFhGTEFHUwotQUNfTEFOR19SRVNUT1JFCi1dKQotCi1kbmwgQVhfQ09QWV9JRl9DSEFOR0Uoc291cmNlLCBkZXN0KQotZG5sIGNvcHkgc291cmNlIHRvIGRlc3QgaWYgdGhleSBkb24ndCBjb21wYXJlIGVxdWFsbHkgb3IgaWYgZGVzdCBkb2Vzbid0IGV4aXN0Ci1BQ19ERUZVTihbQVhfQ09QWV9JRl9DSEFOR0VdLCBbCi1pZiB0ZXN0IC1yICQyOyB0aGVuCi0JaWYgY21wICQxICQyID4gL2Rldi9udWxsOyB0aGVuCi0JCWVjaG8gJDIgaXMgdW5jaGFuZ2VkCi0JZWxzZQotCQljcCAtZiAkMSAkMgotCWZpCi1lbHNlCi0JY3AgLWYgJDEgJDIKLWZpCi1dKQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9hdXRvbWFrZS1mb3JlaWduLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvYXV0b21ha2UtZm9yZWlnbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjliYjZjNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9hdXRvbWFrZS1mb3JlaWduLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotb3Byb2ZpbGUgZG9lc24ndCB3YW50IEdOVS1sZXZlbHMgb2YgYXV0b21ha2Ugc3RyaWN0bmVzcyBzbyB0ZWxsIGl0IHRvIGJlICJmb3JlaWduIi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA1NzQwNTg1Li5jZjZjMzE2IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xNiArMTYgQEAgQUNfQ09ORklHX1NSQ0RJUihbbGlib3Avb3BfY29uZmlnLmhdKQotLUFNX0lOSVRfQVVUT01BS0UKLStBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL211c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWRiNDA4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL211c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1GaXggZ2xpYmMtaXNtcyBzbyB0aGF0IG9wcm9maWxlIGJ1aWxkcyB3aXRoIG11c2wuCi0KLVBhdGNoIHRha2VuIGZyb20gb3BlbndydCAoaHR0cHM6Ly9naXRodWIuY29tL29wZW53cnQtbWlycm9yL29wZW53cnQvYmxvYi9tYXN0ZXIvcGFja2FnZS9kZXZlbC9vcHJvZmlsZS9wYXRjaGVzLzEwMC1tdXNsLnBhdGNoKQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLS0tLSBhL3BlX3Byb2ZpbGluZy9vcGVyZi5jcHAKLSsrKyBiL3BlX3Byb2ZpbGluZy9vcGVyZi5jcHAKLUBAIC04NTcsMTEgKzg1NywxNCBAQCBzdGF0aWMgaW50IF9fZGVsZXRlX29sZF9wcmV2aW91c19zYW1wbGVfCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGZsYWcgIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IEZUVyAqZnR3YnVmIF9fYXR0cmlidXRlX18oKHVudXNlZCkpKQotIHsKLSsJaW50IGVycjsKLSsKLSAJaWYgKHJlbW92ZShmcGF0aCkpIHsKLSsJCWVyciA9IGVycm5vOwotIAkJcGVycm9yKCJzYW1wbGUgZGF0YSByZW1vdmFsIGVycm9yIik7Ci0tCQlyZXR1cm4gRlRXX1NUT1A7Ci0rCQlyZXR1cm4gZXJyOwotIAl9IGVsc2UgewotLQkJcmV0dXJuIEZUV19DT05USU5VRTsKLSsJCXJldHVybiAwOwotIAl9Ci0gfQotIAotQEAgLTg5Niw3ICs4OTksNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0X3NhbXBsZV9kYXRhKHZvaWQpCi0gCQlyZXR1cm47Ci0gCi0gCWlmICghb3BlcmZfb3B0aW9uczo6YXBwZW5kKSB7Ci0tICAgICAgICAgICAgICAgIGludCBmbGFncyA9IEZUV19ERVBUSCB8IEZUV19BQ1RJT05SRVRWQUw7Ci0rICAgICAgICAgICAgICAgIGludCBmbGFncyA9IEZUV19ERVBUSDsKLSAJCWVycm5vID0gMDsKLSAJCWlmIChuZnR3KHByZXZpb3VzX3NhbXBsZWRpci5jX3N0cigpLCBfX2RlbGV0ZV9vbGRfcHJldmlvdXNfc2FtcGxlX2RhdGEsIDMyLCBmbGFncykgIT0wICYmCi0gCQkJCWVycm5vICE9IEVOT0VOVCkgewotLS0tIGEvbGlib3Avb3BfZXZlbnRzLmMKLSsrKyBiL2xpYm9wL29wX2V2ZW50cy5jCi1AQCAtODMsNyArODMsNyBAQCBzdGF0aWMgaW50IHBhcnNlX2hleChjaGFyIGNvbnN0ICogc3RyKQotIHN0YXRpYyB1NjQgcGFyc2VfbG9uZ19oZXgoY2hhciBjb25zdCAqIHN0cikKLSB7Ci0gCXU2NCB2YWx1ZTsKLS0JaWYgKHNzY2FuZihzdHIsICIlTHgiLCAmdmFsdWUpICE9IDEpCi0rCWlmIChzc2NhbmYoc3RyLCAiMHglbGx4IiwgJnZhbHVlKSAhPSAxKQotIAkJcGFyc2VfZXJyb3IoImV4cGVjdGVkIGxvbmcgaGV4YWRlY2ltYWwgdmFsdWUiKTsKLSAKLSAJZmZsdXNoKHN0ZGVycik7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9vcHJvZmlsZS1jcm9zcy1jb21waWxlLXRlc3RzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvb3Byb2ZpbGUtY3Jvc3MtY29tcGlsZS10ZXN0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVmYTk1NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9vcHJvZmlsZS1jcm9zcy1jb21waWxlLXRlc3RzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotUHJldmVudCBydW5uaW5nIGNoZWNrIHRlc3RzIG9uIGhvc3QgaWYgY3Jvc3MgY29tcGlsaW5nCi0KLVRoaXMgcGF0Y2ggZW5hYmxlcyBydW5uaW5nIHRoZSAnbWFrZSBjaGVjaycgdGVzdHMgb24gdGhlIHRhcmdldAotaW4gYSBjcm9zcy1jb21waWxlZCBlbnZpcm9ubWVudC4gSWYgbm90IGNyb3NzLWNvbXBpbGluZywgdGhlbiAnbWFrZQotIGNoZWNrJyBidWlsZHMgYW5kIGV4ZWN1dGVzIHRoZSB0ZXN0czsgbm8gY2hhbmdlIGZyb20gdGhpcyBwYXRjaC4KLUluIGEgY3Jvc3MtY29tcGlsaW5nIGVudmlyb25tZW50LCB0aGUgbWFrZSB2YXJpYWJsZSBDUk9TU19DT01QSUxFIGlzCi1zZXQgd2hpY2ggYnlwYXNzZXMgYXNzaWdpbmcgdGVzdHMgdG8gdGhlIG1ha2VrZmlsZSB2YXJpYWJsZSBURVNUUy4KLVNpbmNlIFRFU1RTIGlzIGVtcHR5LCB0aGUgJ21ha2UgY2hlY2snIHByb2Nlc3MgbmV2ZXIgdHJpZXMgdG8gcnVuIHRoZQotdGVzdHMgb24gdGhlIGhvc3RzLiAgT24gdGhlIHRhcmdldCwgdGhlIHRlc3RzIG11c3QgYmUgcnVuIG1hbnVhbGx5LgotCi1BbHNvLCBpbiB0aGUgbGlidXRpbCsrIHRlc3RzLCBhIG1ha2VmaWxlIHZhcmlhYmxlIFNSQ0RJUiBpcyBwYXNzZWQgaW50bwotdGhlIGNvbXBpbGF0aW9uIHBoYXNlLCBwb2ludGluZyB0byB0aGUgcnVudGltZSBsb2NhdGlvbiBvZiB0aGUgdGVzdAotJ2ZpbGUtbWFuaXAtdGVzdHMnLiAgVGhlIG1lY2hhbmlzbSB1c2VkIGZvciBhIGhvc3QgdGVzdCwgYmFzZWQgb24KLSd0b3BkaXInIGRvZXNuJ3Qgd29yay4gIEluc3RlYWQsIGlmIENST1NTX0NPTVBJTEUgaXMgc2V0LCB0aGUKLW1ha2VmaWxlIHRha2VzIHRoZSBwYXRoIG9mIFNSQ0RJUiBmcm9tIHRoZSBidWlsZCBlbnZpcm9ubWVudCBhbmQgbm90Ci1mcm9tIGFuIGV4cHJlc3Npb24gYmFzZWQgb24gdGhlIGhvc3QgcGF0aCAndG9wZGlyJy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IERhdmUgTGVybmVyIDxkYXZlLmxlcm5lckB3aW5kcml2ZXIuY29tPgotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA0MWVjZTY0Li5jZTVhMTZmIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zOTIsNiArMzkyLDcgQEAgQUNfQVJHX0VOQUJMRShhY2NvdW50LWNoZWNrLAotIAllbmFibGVfYWNjb3VudF9jaGVjaz0kZW5hYmxldmFsLCBlbmFibGVfYWNjb3VudF9jaGVjaz15ZXMpCi0gCi0gQU1fQ09ORElUSU9OQUwoQ0hFQ0tfQUNDT1VOVCwgdGVzdCAieCRlbmFibGVfYWNjb3VudF9jaGVjayIgPSAieHllcyIpCi0rQU1fQ09ORElUSU9OQUwoQ1JPU1NfQ09NUElMRSwgdGVzdCAieCRjcm9zc19jb21waWxpbmciID0gInh5ZXMiKQotIAotIEFDX1NVQlNUKE9QX0NGTEFHUykKLSBBQ19TVUJTVChPUF9DWFhGTEFHUykKLWRpZmYgLS1naXQgYS9saWJkYi90ZXN0cy9NYWtlZmlsZS5hbSBiL2xpYmRiL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCA4YTY5MDAzLi5kODIwMDkwIDEwMDY0NAotLS0tIGEvbGliZGIvdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBiL2xpYmRiL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMTMsNCArMTMsNiBAQCBjaGVja19QUk9HUkFNUyA9IGRiX3Rlc3QKLSBkYl90ZXN0X1NPVVJDRVMgPSBkYl90ZXN0LmMKLSBkYl90ZXN0X0xEQUREID0gLi4vbGlib2RiLmEgLi4vLi4vbGlidXRpbC9saWJ1dGlsLmEKLSAKLStpZiAhIENST1NTX0NPTVBJTEUKLSBURVNUUyA9ICR7Y2hlY2tfUFJPR1JBTVN9Ci0rZW5kaWYKLWRpZmYgLS1naXQgYS9saWJvcC90ZXN0cy9NYWtlZmlsZS5hbSBiL2xpYm9wL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCA4YTc5ZWI1Li42ZDQxN2M0IDEwMDY0NAotLS0tIGEvbGlib3AvdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBiL2xpYm9wL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMzMsNCArMzMsNiBAQCBsb2FkX2V2ZW50c19maWxlc190ZXN0c19MREFERCA9ICR7Q09NTU9OX0xJQlN9Ci0gbWFuZ2xlX3Rlc3RzX1NPVVJDRVMgPSBtYW5nbGVfdGVzdHMuYwotIG1hbmdsZV90ZXN0c19MREFERCA9ICR7Q09NTU9OX0xJQlN9Ci0gCi0raWYgISBDUk9TU19DT01QSUxFCi0gVEVTVFMgPSAke2NoZWNrX1BST0dSQU1TfSB1dGY4X2NoZWNrZXIuc2gKLStlbmRpZgotZGlmZiAtLWdpdCBhL2xpYnJlZ2V4L3Rlc3RzL01ha2VmaWxlLmFtIGIvbGlicmVnZXgvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDZmMTk4MzguLjFkMTc2ZjkgMTAwNjQ0Ci0tLS0gYS9saWJyZWdleC90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGIvbGlicmVnZXgvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC0xOCw0ICsxOCw2IEBAIGphdmFfdGVzdF9MREFERCA9IFwKLSAKLSBFWFRSQV9ESVNUID0gbWFuZ2xlZC1uYW1lLmluCi0gCi0raWYgISBDUk9TU19DT01QSUxFCi0gVEVTVFMgPSAke2NoZWNrX1BST0dSQU1TfQotK2VuZGlmCi1kaWZmIC0tZ2l0IGEvbGlidXRpbCsrL3Rlc3RzL01ha2VmaWxlLmFtIGIvbGlidXRpbCsrL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCA1MWFmMDMxLi5hMDFlYTJkIDEwMDY0NAotLS0tIGEvbGlidXRpbCsrL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi9saWJ1dGlsKysvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC0xLDcgKzEsOSBAQAotIAotIFJFQUxQQVRIPSByZWFkbGluayAtZgotIAotK2lmICEgQ1JPU1NfQ09NUElMRQotIFNSQ0RJUiA6PSAkKHNoZWxsICQoUkVBTFBBVEgpICQodG9wZGlyKS9saWJ1dGlsKysvdGVzdHMvICkKLStlbmRpZgotIAotIEFNX0NQUEZMQUdTID0gXAotIAktSSAke3RvcF9zcmNkaXJ9L2xpYnV0aWwrKyAtRCBTUkNESVI9IlwiJChTUkNESVIpL1wiIiBAT1BfQ1BQRkxBR1NACi1AQCAtNDYsNCArNDgsNiBAQCBjYWNoZWRfdmFsdWVfdGVzdHNfTERBREQgPSAke0NPTU1PTl9MSUJTfQotIHV0aWxpdHlfdGVzdHNfU09VUkNFUyA9IHV0aWxpdHlfdGVzdHMuY3BwCi0gdXRpbGl0eV90ZXN0c19MREFERCA9ICR7Q09NTU9OX0xJQlN9Ci0gCi0raWYgISBDUk9TU19DT01QSUxFCi0gVEVTVFMgPSAke2NoZWNrX1BST0dSQU1TfQotK2VuZGlmCi1kaWZmIC0tZ2l0IGEvbGlidXRpbC90ZXN0cy9NYWtlZmlsZS5hbSBiL2xpYnV0aWwvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IGRmY2Q2ZWMuLmU4ODMxYjUgMTAwNjQ0Ci0tLS0gYS9saWJ1dGlsL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi9saWJ1dGlsL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMTIsNCArMTIsNiBAQCBmaWxlX3Rlc3RzX0xEQUREID0gLi4vbGlidXRpbC5hCi0gc3RyaW5nX3Rlc3RzX1NPVVJDRVMgPSBzdHJpbmdfdGVzdHMuYwotIHN0cmluZ190ZXN0c19MREFERCA9IC4uL2xpYnV0aWwuYQotIAotK2lmICEgQ1JPU1NfQ09NUElMRQotIFRFU1RTID0gJHtjaGVja19QUk9HUkFNU30KLStlbmRpZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvcm9vdC1ob21lLWRpci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL3Jvb3QtaG9tZS1kaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlYWY2YTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvcm9vdC1ob21lLWRpci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLW9wcm9maWxlOiBEZXRlcm1pbmUgdGhlIHJvb3QgaG9tZSBkaXJlY3RvcnkgZHluYW1pY2FsbHkKLQotVGhpcyBjb21taXQgZGV0ZWN0cyB0aGUgcm9vdCBob21lIGRpcmVjdG9yeSBkeW5hbWljYWxseSB3aXRoIGNoYW5nZXMgdG8KLXRoZSBvcHJvZmlsZSBndWkgYXBwIHNvdXJjZS4KLQotVGhlIGNvbW1pdCByZXBsYWNlcyBhbiBlYXJsaWVyIGZpeCB0aGF0IGRldGVjdGVkIGFuZCBhZGp1c3RlZCBhCi0nbm9uLXN0YW5kYXJkJyByb290IGhvbWUgZGlyZWN0b3J5IGF0IGJ1aWxkIHRpbWUuICBUaGUgYWR2YW50YWdlIG9mIHRoaXMKLXBhdGNoIGlzIHRoYXQgdGhlIG9wcm9maWxlIHRvb2xzIGFyZSBhZGp1c3RlZCB0byB0aGUgY3VycmVudCBydW4tdGltZQotcGF0aCB0byB+cm9vdCwgbm90IHRoZSBidWlsZCB0aW1lIHBhdGguCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IERhdmUgTGVybmVyIDxkYXZlLmxlcm5lckB3aW5kcml2ZXIuY29tPgotCi1JbmRleDogb3Byb2ZpbGUtMS4wLjAvZG9jL29wcm9maWxlLmh0bWwKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcHJvZmlsZS0xLjAuMC5vcmlnL2RvYy9vcHJvZmlsZS5odG1sCTIwMTQtMTEtMDMgMTc6NTU6MzEuNTExMDM0ODU3ICswMDAwCi0rKysgb3Byb2ZpbGUtMS4wLjAvZG9jL29wcm9maWxlLmh0bWwJMjAxNC0xMS0wMyAxNzo1NzoyNi40MTUwMzc5ODggKzAwMDAKLUBAIC0xNTYzLDggKzE1NjMsOCBAQAotIAkJPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+bXVzdDwvZW0+PC9zcGFuPiBzdG9wIGl0IGluIGEgY29udHJvbGxlZCBtYW5uZXIgaW4gb3JkZXIgdG8gcHJvY2VzcwotIAkJdGhlIHByb2ZpbGUgZGF0YSBpdCBoYXMgY29sbGVjdGVkLiAgVXNlIDxjb2RlIGNsYXNzPSJjb2RlIj5raWxsIC1TSUdJTlQgJmx0O29wZXJmLVBJRCZndDs8L2NvZGU+Ci0gCQlmb3IgdGhpcyBwdXJwb3NlLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHdoZW4gcnVubmluZyA8c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5vcGVyZjwvc3Ryb25nPjwvc3Bhbj4KLS0JCXdpdGggdGhpcyBvcHRpb24sIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBzaG91bGQgYmUgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vcm9vdDwvY29kZT4gb3IgYSBzdWJkaXJlY3RvcnkKLS0JCW9mIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+L3Jvb3Q8L2NvZGU+IHRvIGF2b2lkIHN0b3Jpbmcgc2FtcGxlIGRhdGEgZmlsZXMgaW4gbG9jYXRpb25zIGFjY2Vzc2libGUgYnkgcmVndWxhciB1c2Vycy4KLSsJCXdpdGggdGhpcyBvcHRpb24sIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBzaG91bGQgYmUgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5+cm9vdDwvY29kZT4gb3IgYSBzdWJkaXJlY3RvcnkKLSsJCW9mIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+fnJvb3Q8L2NvZGU+IHRvIGF2b2lkIHN0b3Jpbmcgc2FtcGxlIGRhdGEgZmlsZXMgaW4gbG9jYXRpb25zIGFjY2Vzc2libGUgYnkgcmVndWxhciB1c2Vycy4KLSAJCTwvcD4KLSAgICAgICAgICAgICAgIDwvZGQ+Ci0gICAgICAgICAgICAgICA8ZHQ+Ci1JbmRleDogb3Byb2ZpbGUtMS4wLjAvZG9jL29wcm9maWxlLnhtbAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wcm9maWxlLTEuMC4wLm9yaWcvZG9jL29wcm9maWxlLnhtbAkyMDE0LTExLTAzIDE3OjU1OjMxLjUxNTAzNDg1NyArMDAwMAotKysrIG9wcm9maWxlLTEuMC4wL2RvYy9vcHJvZmlsZS54bWwJMjAxNC0xMS0wMyAxNzo1ODowMy43MTkwMzkwMDUgKzAwMDAKLUBAIC02NTQsOCArNjU0LDggQEAKLSAJCTxlbXBoYXNpcz5tdXN0PC9lbXBoYXNpcz4gc3RvcCBpdCBpbiBhIGNvbnRyb2xsZWQgbWFubmVyIGluIG9yZGVyIHRvIHByb2Nlc3MKLSAJCXRoZSBwcm9maWxlIGRhdGEgaXQgaGFzIGNvbGxlY3RlZC4gIFVzZSA8Y29kZT5raWxsIC1TSUdJTlQgJmx0O29wZXJmLVBJRCZndDs8L2NvZGU+Ci0gCQlmb3IgdGhpcyBwdXJwb3NlLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHdoZW4gcnVubmluZyA8Y29tbWFuZD5vcGVyZjwvY29tbWFuZD4KLS0JCXdpdGggdGhpcyBvcHRpb24sIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBzaG91bGQgYmUgPGZpbGVuYW1lPi9yb290PC9maWxlbmFtZT4gb3IgYSBzdWJkaXJlY3RvcnkKLS0JCW9mIDxmaWxlbmFtZT4vcm9vdDwvZmlsZW5hbWU+IHRvIGF2b2lkIHN0b3Jpbmcgc2FtcGxlIGRhdGEgZmlsZXMgaW4gbG9jYXRpb25zIGFjY2Vzc2libGUgYnkgcmVndWxhciB1c2Vycy4KLSsJCXdpdGggdGhpcyBvcHRpb24sIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBzaG91bGQgYmUgPGZpbGVuYW1lPn5yb290PC9maWxlbmFtZT4gb3IgYSBzdWJkaXJlY3RvcnkKLSsJCW9mIDxmaWxlbmFtZT5+cm9vdDwvZmlsZW5hbWU+IHRvIGF2b2lkIHN0b3Jpbmcgc2FtcGxlIGRhdGEgZmlsZXMgaW4gbG9jYXRpb25zIGFjY2Vzc2libGUgYnkgcmVndWxhciB1c2Vycy4KLSAJCTwvcGFyYT48L2xpc3RpdGVtPgotIAk8L3Zhcmxpc3RlbnRyeT4KLSAJPHZhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlL3J1bi1wdGVzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDgxNGJlNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS9ydW4tcHRlc3QKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0jIS9iaW4vc2gKLQotc2F2ZWRfZGlyPSRQV0QKLWZvciBkaXIgaW4gKi90ZXN0cyA7IGRvCi0JY2QgJGRpcgotCWZvciBhdGVzdCBpbiAqIDsgZG8KLQkJaWYgWyBcKCAteCAkYXRlc3QgXCkgLWEgXCggLWYgJGF0ZXN0IFwpIF0gOyB0aGVuCi0JCQkuLyRhdGVzdCA+ICR7YXRlc3R9LnN0ZG91dCAyPiAke2F0ZXN0fS5zdGRlcnIKLQkJCWlmIFsgJD8gPSAwIF0gOyB0aGVuCi0JCQkJZWNobyAiUEFTUzogJGRpciAkYXRlc3QiCi0JCQkJcm0gJHthdGVzdH0uc3Rkb3V0ICR7YXRlc3R9LnN0ZGVycgotCQkJZWxzZQotCQkJCWVjaG8gIkZBSUw6ICR7ZGlyfS8ke2F0ZXN0fSIKLQkJCWZpCi0JCWZpCi0JZG9uZQotCWNkICRzYXZlZF9kaXIKLWRvbmUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGVfMS4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZV8xLjEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJhOTRhZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZV8xLjEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLXJlcXVpcmUgb3Byb2ZpbGUuaW5jCi0KLURFUEVORFMgKz0gInZpcnR1YWwva2VybmVsIgotREVQRU5EU19hcHBlbmRfcG93ZXJwYzY0ID0gIiBsaWJwZm00IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjQ4YzRjMDY5Zjk0NzZmNDI3ZmE3MTk1NTYzZjk4NjciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2Y3NTlhNmRlMWE2MDMzZDVkZmM5M2JkYTEyOWE5ZjJlMTI4YWVjYzQyMzhjYzY1N2ZlYjA4MDFkMWIwMzY2YyIKLQotUyA9ICIke1dPUktESVJ9L29wcm9maWxlLSR7UFZ9IgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wZXJmL3BlcmYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wZXJmL3BlcmYuYmIKaW5kZXggYjc5Yjk3My4uNTFmNTU5NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcGVyZi9wZXJmLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3BlcmYvcGVyZi5iYgpAQCAtMjIsMTEgKzIyLDE0IEBACiBQQUNLQUdFQ09ORklHW3N5c3RlbXRhcF0gPSAiLE5PX1NEVD0xLHN5c3RlbXRhcCIKIFBBQ0tBR0VDT05GSUdbanZtdGldID0gIixOT19KVk1UST0xIgogCisjIGxpYmF1ZGl0IHN1cHBvcnQgd291bGQgbmVlZCBzY3JpcHRpbmcgdG8gYmUgZW5hYmxlZAorUEFDS0FHRUNPTkZJR1thdWRpdF0gPSAiLE5PX0xJQkFVRElUPTEsYXVkaXQiCisKIERFUEVORFMgPSAiIFwKICAgICB2aXJ0dWFsLyR7TUxQUkVGSVh9bGliYyBcCiAgICAgJHtNTFBSRUZJWH1lbGZ1dGlscyBcCiAgICAgJHtNTFBSRUZJWH1iaW51dGlscyBcCi0gICAgYmlzb24gZmxleCB4eiBcCisgICAgYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlIHh6IFwKICAgICB4bWx0by1uYXRpdmUgXAogICAgIGFzY2lpZG9jLW5hdGl2ZSBcCiAiCkBAIC0zNSw5ICszOCwxMCBAQAogCiBQUk9WSURFUyA9ICJ2aXJ0dWFsL3BlcmYiCiAKLWluaGVyaXQgbGludXgta2VybmVsLWJhc2Uga2VybmVsLWFyY2ggcHl0aG9ubmF0aXZlCitpbmhlcml0IGxpbnV4LWtlcm5lbC1iYXNlIGtlcm5lbC1hcmNoCiAKICMgbmVlZGVkIGZvciBidWlsZGluZyB0aGUgdG9vbHMvcGVyZiBQeXRob24gYmluZGluZ3MKK2luaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2NyaXB0aW5nJywgJ3B5dGhvbm5hdGl2ZScsICcnLCBkKX0KIGluaGVyaXQgcHl0aG9uLWRpcgogZXhwb3J0IFBZVEhPTl9TSVRFUEFDS0FHRVNfRElSCiAKQEAgLTQ3LDcgKzUxLDggQEAKIGRvX3BvcHVsYXRlX2xpY1tkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fcGF0Y2giCiAKICMgbmVlZGVkIGZvciBidWlsZGluZyB0aGUgdG9vbHMvcGVyZiBQZXJsIGJpbmRpbmcKLWluaGVyaXQgcGVybG5hdGl2ZSBjcGFuLWJhc2UKK2luaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2NyaXB0aW5nJywgJ3BlcmxuYXRpdmUnLCAnJywgZCl9Citpbmhlcml0IGNwYW4tYmFzZQogIyBFbnYgdmFyIHdoaWNoIHRlbGxzIHBlcmwgaWYgaXQgc2hvdWxkIHVzZSBob3N0IChubykgb3IgdGFyZ2V0ICh5ZXMpIHNldHRpbmdzCiBleHBvcnQgUEVSTENPTkZJR1RBUkdFVCA9ICIke0Bpc190YXJnZXQoZCl9IgogZXhwb3J0IFBFUkxfSU5DID0gIiR7U1RBR0lOR19MSUJESVJ9JHtQRVJMX09XTl9ESVJ9L3BlcmwvJHtAZ2V0X3BlcmxfdmVyc2lvbihkKX0vQ09SRSIKQEAgLTU2LDcgKzYxLDcgQEAKIAogaW5oZXJpdCBrZXJuZWxzcmMKIAotQiA9ICIke1dPUktESVJ9LyR7QlBOfS0ke1BWfSIKK1MgPSAiJHtXT1JLRElSfS8ke0JQfSIKIFNQRFhfUyA9ICIke1N9L3Rvb2xzL3BlcmYiCiAKICMgVGhlIExERkxBR1MgaXMgcmVxdWlyZWQgb3Igc29tZSBvbGQga2VybmVscyBmYWlscyBkdWUgbWlzc2luZwpAQCAtOTIsNiArOTcsMTcgQEAKICAgICAnaW5mb2Rpcj0ke0Bvcy5wYXRoLnJlbHBhdGgoaW5mb2RpciwgcHJlZml4KX0nIFwKICIKIAorUEVSRl9TUkMgPz0gIk1ha2VmaWxlIFwKKyAgICAgICAgICAgICBpbmNsdWRlIFwKKyAgICAgICAgICAgICB0b29scy9hcmNoIFwKKyAgICAgICAgICAgICB0b29scy9idWlsZCBcCisgICAgICAgICAgICAgdG9vbHMvaW5jbHVkZSBcCisgICAgICAgICAgICAgdG9vbHMvbGliIFwKKyAgICAgICAgICAgICB0b29scy9NYWtlZmlsZSBcCisgICAgICAgICAgICAgdG9vbHMvcGVyZiBcCisgICAgICAgICAgICAgdG9vbHMvc2NyaXB0cyBcCisiCisKIFBFUkZfRVhUUkFfTERGTEFHUyA9ICIiCiAKICMgTUlQUyBOMzIKQEAgLTExNCwxMSArMTMwLDIyIEBACiAJZmkKIH0KIAotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAgICMgRml4IGZvciByZWJ1aWxkaW5nCi0gICAgcm0gLXJmICR7Qn0vCi0gICAgbWtkaXIgLXAgJHtCfS8KK2RvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gImNvcHlfcGVyZl9zb3VyY2VfZnJvbV9rZXJuZWwiCitweXRob24gY29weV9wZXJmX3NvdXJjZV9mcm9tX2tlcm5lbCgpIHsKKyAgICBzb3VyY2VzID0gKGQuZ2V0VmFyKCJQRVJGX1NSQyIpIG9yICIiKS5zcGxpdCgpCisgICAgc3JjX2RpciA9IGQuZ2V0VmFyKCJTVEFHSU5HX0tFUk5FTF9ESVIiKQorICAgIGRlc3RfZGlyID0gZC5nZXRWYXIoIlMiKQorICAgIGJiLnV0aWxzLm1rZGlyaGllcihkZXN0X2RpcikKKyAgICBmb3IgcyBpbiBzb3VyY2VzOgorICAgICAgICBzcmMgPSBvZS5wYXRoLmpvaW4oc3JjX2RpciwgcykKKyAgICAgICAgZGVzdCA9IG9lLnBhdGguam9pbihkZXN0X2RpciwgcykKKyAgICAgICAgaWYgb3MucGF0aC5pc2RpcihzcmMpOgorICAgICAgICAgICAgb2UucGF0aC5jb3B5aGFyZGxpbmt0cmVlKHNyYywgZGVzdCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJiLnV0aWxzLmNvcHlmaWxlKHNyYywgZGVzdCkKK30KIAorZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewogICAgICMgSWYgYnVpbGRpbmcgYSBtdWx0bGliIGJhc2VkIHBlcmYsIHRoZSBpbmNvcnJlY3QgbGlicmFyeSBwYXRoIHdpbGwgYmUKICAgICAjIGRldGVjdGVkIGJ5IHBlcmYsIHNpbmNlIGl0IHRyaWdnZXJzIHZpYTogaWZlcSAoJChBUkNIKSx4ODZfNjQpLiBJbiBhIDMyIGJpdAogICAgICMgYnVpbGQsIHdpdGggYSA2NCBiaXQgbXVsdGlsaWIsIHRoZSBhcmNoIHdvbid0IG1hdGNoIGFuZCB0aGUgZGV0ZWN0aW9uIG9mIGEgCkBAIC0yMTQsMjAgKzI0MSwyMSBAQAogUkRFUEVORFNfJHtQTn0gKz0gImVsZnV0aWxzIGJhc2giCiBSREVQRU5EU18ke1BOfS1kb2MgKz0gIm1hbiIKIFJERVBFTkRTXyR7UE59LWFyY2hpdmUgPSsgImJhc2giCi1SREVQRU5EU18ke1BOfS1weXRob24gPSsgImJhc2ggcHl0aG9uIHB5dGhvbi1tb2R1bGVzIgorUkRFUEVORFNfJHtQTn0tcHl0aG9uID0rICJiYXNoIHB5dGhvbiBweXRob24tbW9kdWxlcyAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdhdWRpdCcsICdhdWRpdC1weXRob24nLCAnJywgZCl9IgogUkRFUEVORFNfJHtQTn0tcGVybCA9KyAiYmFzaCBwZXJsIHBlcmwtbW9kdWxlcyIKIFJERVBFTkRTXyR7UE59LXRlc3RzID0rICJweXRob24iCiAKIFJTVUdHRVNUU19TQ1JJUFRJTkcgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2NyaXB0aW5nJywgJyR7UE59LXBlcmwgJHtQTn0tcHl0aG9uJywgJycsZCl9IgogUlNVR0dFU1RTXyR7UE59ICs9ICIke1BOfS1hcmNoaXZlICR7UE59LXRlc3RzICR7UlNVR0dFU1RTX1NDUklQVElOR30iCiAKLSNGSUxFU18ke1BOfSArPSAiJHtsaWJleGVjZGlyfS9wZXJmLWNvcmUgJHtleGVjX3ByZWZpeH0vbGliZXhlYy9wZXJmLWNvcmUgL3Vzci9saWI2NC90cmFjZWV2ZW50ICR7bGliZGlyfS90cmFjZWV2ZW50IgogRklMRVNfJHtQTn0gKz0gIiR7bGliZXhlY2Rpcn0vcGVyZi1jb3JlICR7ZXhlY19wcmVmaXh9L2xpYmV4ZWMvcGVyZi1jb3JlICR7bGliZGlyfS90cmFjZWV2ZW50IgogRklMRVNfJHtQTn0tYXJjaGl2ZSA9ICIke2xpYmRpcn0vcGVyZi9wZXJmLWNvcmUvcGVyZi1hcmNoaXZlIgogRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtsaWJkaXJ9L3BlcmYvcGVyZi1jb3JlL3Rlc3RzICR7bGliZXhlY2Rpcn0vcGVyZi1jb3JlL3Rlc3RzIgotRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7bGliZGlyfS9wZXJmL3BlcmYtY29yZS9zY3JpcHRzL3B5dGhvbiAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKLUZJTEVTXyR7UE59LXB5dGhvbiArPSAiJHtsaWJleGVjZGlyfS9wZXJmLWNvcmUvc2NyaXB0cy9weXRob24vKiIKLUZJTEVTXyR7UE59LXBlcmwgPSAiJHtsaWJkaXJ9L3BlcmYvcGVyZi1jb3JlL3NjcmlwdHMvcGVybCIKK0ZJTEVTXyR7UE59LXB5dGhvbiA9ICIgXAorICAgICAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCisgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vcGVyZi1jb3JlL3NjcmlwdHMvcHl0aG9uIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIgorRklMRVNfJHtQTn0tcGVybCA9ICIke2xpYmV4ZWNkaXJ9L3BlcmYtY29yZS9zY3JpcHRzL3BlcmwiCiAKIAogSU5ISUJJVF9QQUNLQUdFX0RFQlVHX1NQTElUPSIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3AvMDAwMS1pbmNsdWRlLXJxdWlyZWQtaGVhZGVycy1mb3ItdHlwZWRlZnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wb3dlcnRvcC9wb3dlcnRvcC8wMDAxLWluY2x1ZGUtcnF1aXJlZC1oZWFkZXJzLWZvci10eXBlZGVmcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZkNjMxMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wb3dlcnRvcC9wb3dlcnRvcC8wMDAxLWluY2x1ZGUtcnF1aXJlZC1oZWFkZXJzLWZvci10eXBlZGVmcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gMDg1NmQ4MTQ1ZDE4N2E3ZTVhNDk2MjUyNDdhYmU0M2ExM2Y5NWFjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDE1IFNlcCAyMDE1IDE5OjM2OjI4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgcnF1aXJlZCBoZWFkZXJzIGZvciB0eXBlZGVmcwotCi10aW1ldmFsIHN0cnVjdCBuZWVkcyB0byBpbmNsdWRlIHN5cy90aW1lLmggYW5kIHNwcmludGYoKSB1c2FnZSByZXF1aXJlcwotdG8gaW5jbHVkZSBzdGRpby5oIGhlYWRlcnMgZnJvbSBzeXN0ZW0KLQotRml4ZXMKLXNyYy9wZXJmL3BlcmZfYnVuZGxlLmNwcDoxNDE6MjogZXJyb3I6IHVzZSBvZiB1bmRlY2xhcmVkIGlkZW50aWZpZXIgJ3NwcmludGYnOyBkaWQgeW91IG1lYW4gJ3Zzd3ByaW50Zic/Ci1zcmMvZGV2aWNlcy9kZXZmcmVxLmg6MzU6MTg6IGVycm9yOiBmaWVsZCBoYXMgaW5jb21wbGV0ZSB0eXBlICdzdHJ1Y3QgdGltZXZhbCcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBzcmMvZGV2aWNlcy9kZXZmcmVxLmggICAgfCAxICsKLSBzcmMvcGVyZi9wZXJmX2J1bmRsZS5jcHAgfCAxICsKLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2RldmljZXMvZGV2ZnJlcS5oIGIvc3JjL2RldmljZXMvZGV2ZnJlcS5oCi1pbmRleCAxNmE2MGZiLi40YmVkZTdjIDEwMDY0NAotLS0tIGEvc3JjL2RldmljZXMvZGV2ZnJlcS5oCi0rKysgYi9zcmMvZGV2aWNlcy9kZXZmcmVxLmgKLUBAIC0yNSw2ICsyNSw3IEBACi0gI2lmbmRlZiBfSU5DTFVERV9HVUFSRF9ERVZGUkVRX0gKLSAjZGVmaW5lIF9JTkNMVURFX0dVQVJEX0RFVkZSRVFfSAotIAotKyNpbmNsdWRlIDxzeXMvdGltZS5oPgotICNpbmNsdWRlICJkZXZpY2UuaCIKLSAjaW5jbHVkZSAiLi4vcGFyYW1ldGVycy9wYXJhbWV0ZXJzLmgiCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL3BlcmYvcGVyZl9idW5kbGUuY3BwIGIvc3JjL3BlcmYvcGVyZl9idW5kbGUuY3BwCi1pbmRleCBjZjFhZTExLi4yMzJmODk0IDEwMDY0NAotLS0tIGEvc3JjL3BlcmYvcGVyZl9idW5kbGUuY3BwCi0rKysgYi9zcmMvcGVyZi9wZXJmX2J1bmRsZS5jcHAKLUBAIC0yNyw2ICsyNyw3IEBACi0gI2luY2x1ZGUgPGFsZ29yaXRobT4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN0ZGludC5oPgotKyNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLS0tIAotMi41LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3BfMi44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3BfMi44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDdhM2U3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3Bvd2VydG9wL3Bvd2VydG9wXzIuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiUG93ZXIgdXNhZ2UgdG9vbCIKLURFU0NSSVBUSU9OID0gIkxpbnV4IHRvb2wgdG8gZGlhZ25vc2UgaXNzdWVzIHdpdGggcG93ZXIgY29uc3VtcHRpb24gYW5kIHBvd2VyIG1hbmFnZW1lbnQuIgotSE9NRVBBR0UgPSAiaHR0cDovLzAxLm9yZy9wb3dlcnRvcC8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5sZXNzd2F0dHMub3JnLyIKLURFUEVORFMgPSAibmN1cnNlcyBsaWJubCBwY2l1dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMmY4ODRkMmFlMWZmODdjMDllNWI3Y2NjMmM0Y2E3ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vMDEub3JnL3NpdGVzL2RlZmF1bHQvZmlsZXMvZG93bmxvYWRzL3Bvd2VydG9wL3Bvd2VydG9wLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtcnF1aXJlZC1oZWFkZXJzLWZvci10eXBlZGVmcy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjNTVmZWRiNjkyMDNlNDgwODAxYjE4YmQ3Yjg4NjI0MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhODdiNTYzZjczMTA2YmFiZmEzZTc0ZGNmOTJmMjUyOTM4YzA2MWUzMDlhY2UyMGEzNjEzNThiYmZhNTc5YzVhIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly8wMS5vcmcvcG93ZXJ0b3AvZG93bmxvYWRzIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZwotCi0jIHdlIGRvIG5vdCB3YW50IGxpYm5jdXJzZXN3IGlmIHdlIGNhbgotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgIyBjb25maWd1cmUuYWMgY2hlY2tzIGZvciBkZWx3aW4oKSBpbiAibmN1cnNlc3cgbmN1cnNlcyIgc28gbGV0J3MgZHJvcCBmaXJzdCBvbmUKLSAgICBzZWQgLWkgLWUgInMvbmN1cnNlc3cvL2ciICR7U30vY29uZmlndXJlLmFjCi0gICAgbWtkaXIgLXAgJHtCfS9zcmMvdHVuaW5nLwotfQotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLUFMVEVSTkFUSVZFXyR7UE59ID0gInBvd2VydG9wIgotQUxURVJOQVRJVkVfVEFSR0VUW3Bvd2VydG9wXSA9ICIke3NiaW5kaXJ9L3Bvd2VydG9wIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Bvd2VydG9wXSA9ICIke3NiaW5kaXJ9L3Bvd2VydG9wIgotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3BfMi45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3BfMi45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmZTU0NDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wb3dlcnRvcC9wb3dlcnRvcF8yLjkuYmIKQEAgLTAsMCArMSwzMyBAQAorU1VNTUFSWSA9ICJQb3dlciB1c2FnZSB0b29sIgorREVTQ1JJUFRJT04gPSAiTGludXggdG9vbCB0byBkaWFnbm9zZSBpc3N1ZXMgd2l0aCBwb3dlciBjb25zdW1wdGlvbiBhbmQgcG93ZXIgbWFuYWdlbWVudC4iCitIT01FUEFHRSA9ICJodHRwOi8vMDEub3JnL3Bvd2VydG9wLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmxlc3N3YXR0cy5vcmcvIgorREVQRU5EUyA9ICJuY3Vyc2VzIGxpYm5sIHBjaXV0aWxzIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEyZjg4NGQyYWUxZmY4N2MwOWU1YjdjY2MyYzRjYTdlIgorCitTUkNfVVJJID0gImh0dHA6Ly8wMS5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy9kb3dubG9hZHMvcG93ZXJ0b3AvcG93ZXJ0b3AtdiR7UFZ9LnRhci5neiBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1ODM1MThjNWM0NDM0YzZlOWI5YzU4YzM5MjA5NTBiNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhYTdmYjdkOGU5YTAwZjA1ZTdkOGE3YTI4NjZkODU5Mjk3NDFlMGQwM2E1YmY0MGNhYjIyZDIwMjFjOTU5MjUwIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly8wMS5vcmcvcG93ZXJ0b3AvZG93bmxvYWRzIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicG93ZXJ0b3AtW3ZdPyg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZworCitTID0gIiR7V09SS0RJUn0vJHtCUE59LXYke1BWfSIKKworIyB3ZSBkbyBub3Qgd2FudCBsaWJuY3Vyc2VzdyBpZiB3ZSBjYW4KK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICMgY29uZmlndXJlLmFjIGNoZWNrcyBmb3IgZGVsd2luKCkgaW4gIm5jdXJzZXN3IG5jdXJzZXMiIHNvIGxldCdzIGRyb3AgZmlyc3Qgb25lCisgICAgc2VkIC1pIC1lICJzL25jdXJzZXN3Ly9nIiAke1N9L2NvbmZpZ3VyZS5hYworICAgIG1rZGlyIC1wICR7Qn0vc3JjL3R1bmluZy8KK30KKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCitBTFRFUk5BVElWRV8ke1BOfSA9ICJwb3dlcnRvcCIKK0FMVEVSTkFUSVZFX1RBUkdFVFtwb3dlcnRvcF0gPSAiJHtzYmluZGlyfS9wb3dlcnRvcCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwb3dlcnRvcF0gPSAiJHtzYmluZGlyfS9wb3dlcnRvcCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1Bdm9pZC1idWlsZGluZy1kb2NzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLUF2b2lkLWJ1aWxkaW5nLWRvY3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMmYzNTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLUF2b2lkLWJ1aWxkaW5nLWRvY3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIDI3ZGY1MjFjNjhlN2M4YjViMDUwZGFiMTVmNDBhYTE1ZmQwMzYyM2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogV2VkLCA0IE1heSAyMDE2IDE0OjU4OjI0ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEF2b2lkIGJ1aWxkaW5nIGRvY3MKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gTWFrZWZpbGUuYW0gfCAyICstCi0gbTQveWVscC5tNCAgfCA2IC0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCBiOTE5YTNmLi4zYTM4NTFkIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMSw0ICsxLDQgQEAKLS1TVUJESVJTID0gZGFlbW9uIGRhdGEgaGVscCBsaWIgcG8gc3JjIHRvb2xzIHRlc3RzCi0rU1VCRElSUyA9IGRhZW1vbiBkYXRhIGxpYiBwbyBzcmMgdG9vbHMgdGVzdHMKLSAKLSBFWFRSQV9ESVNUID0gQVVUSE9SUyB0YXAtdGVzdCBDT1BZSU5HLmdwbC0yCi0gCi1kaWZmIC0tZ2l0IGEvbTQveWVscC5tNCBiL200L3llbHAubTQKLWluZGV4IDVkYjg0N2YuLjFiNmVkZTQgMTAwNjQ0Ci0tLS0gYS9tNC95ZWxwLm00Ci0rKysgYi9tNC95ZWxwLm00Ci1AQCAtMjcsMTIgKzI3LDYgQEAgQUNfQVJHX1dJVEgoW2hlbHAtZGlyXSwKLSBIRUxQX0RJUj0iJHdpdGhfaGVscF9kaXIiCi0gQUNfU1VCU1QoSEVMUF9ESVIpCi0gCi0tQUNfQVJHX1ZBUihbSVRTVE9PTF0sIFtQYXRoIHRvIHRoZSBgaXRzdG9vbGAgY29tbWFuZF0pCi0tQUNfQ0hFQ0tfUFJPRyhbSVRTVE9PTF0sIFtpdHN0b29sXSwgW2l0c3Rvb2xdKQotLWlmIHRlc3QgeCIkSVRTVE9PTCIgPSB4OyB0aGVuCi0tICBBQ19NU0dfRVJST1IoW2l0c3Rvb2wgbm90IGZvdW5kXSkKLS1maQotLQotIEFDX0FSR19WQVIoW1hNTExJTlRdLCBbUGF0aCB0byB0aGUgYHhtbGxpbnRgIGNvbW1hbmRdKQotIEFDX0NIRUNLX1BST0coW1hNTExJTlRdLCBbeG1sbGludF0sIFt4bWxsaW50XSkKLSBpZiB0ZXN0IHgiJFhNTExJTlQiID0geDsgdGhlbgotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzLzAwMDEtRGlzYWJsZS1jaGVjay1mb3ItcG9sa2l0LWZvci1VSS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1EaXNhYmxlLWNoZWNrLWZvci1wb2xraXQtZm9yLVVJLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDg1MjMyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1EaXNhYmxlLWNoZWNrLWZvci1wb2xraXQtZm9yLVVJLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSA3NjVkNTc4MTQ1ZTMxZGRjOTQ5NWFkZmFiODAzN2FkZTMzYzZhOWNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IFdlZCwgNCBNYXkgMjAxNiAxMDo1OTozNiArMDMwMAotU3ViamVjdDogW1BBVENIXSBEaXNhYmxlIGNoZWNrIGZvciBwb2xraXQgZm9yIFVJCi0KLVRoZSBjaGVjayBpcyBub3QgdGVjaG5pY2FsbHkgcmVxdWlyZWQ6IHN5c3Byb2YganVzdCBuZWVkcwotdG8gYmUgYWJsZSB0byBhY2Nlc3Mgc3lzdGVtIHBlcmYgY291bnRlcnMgYXQgcnVudGltZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggODU1OTU5Ny4uZWNmOTNhZCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTMxLDggKzEzMSw4IEBAIEFTX0lGKFt0ZXN0ICIkZW5hYmxlX2d0ayIgPSBhdXRvXSxbCi0gCUFTX0lGKFt0ZXN0ICIkaGF2ZV9ndGsiID0gInllcyIgJiYgdGVzdCAiJGhhdmVfcG9sa2l0IiA9ICJ5ZXMiXSxbZW5hYmxlX2d0az15ZXNdLFtlbmFibGVfZ3RrPW5vXSkKLSBdKQotIEFTX0lGKFt0ZXN0ICIkZW5hYmxlX2d0ayIgPSAieWVzIl0sWwotLQlBU19JRihbdGVzdCAiJGhhdmVfZ3RrIiA9ICJ5ZXMiICYmIHRlc3QgIiRoYXZlX3BvbGtpdCIgPSAieWVzIl0sW10sWwotLQkJQUNfTVNHX0VSUk9SKFstLWVuYWJsZS1ndGsgcmVxdWlyZXMgZ3RrKy0zLjAgPj0gZ3RrX3JlcXVpcmVkX3ZlcnNpb24gYW5kIHBvbGtpdC1nb2JqZWN0LTFdKQotKwlBU19JRihbdGVzdCAiJGhhdmVfZ3RrIiA9ICJ5ZXMiXSxbXSxbCi0rCQlBQ19NU0dfRVJST1IoWy0tZW5hYmxlLWd0ayByZXF1aXJlcyBndGsrLTMuMCA+PSBndGtfcmVxdWlyZWRfdmVyc2lvbl0pCi0gCV0pCi0gXSkKLSBBTV9DT05ESVRJT05BTChFTkFCTEVfR1RLLCB0ZXN0ICIkZW5hYmxlX2d0ayIgPSAieWVzIikKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLURvLW5vdC1idWlsZC1hbnl0aGluZy1pbi1oZWxwLWFzLWl0LXJlcXVpcmVzLWl0c3Rvb2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzLzAwMDEtRG8tbm90LWJ1aWxkLWFueXRoaW5nLWluLWhlbHAtYXMtaXQtcmVxdWlyZXMtaXRzdG9vbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjhmZGNhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLURvLW5vdC1idWlsZC1hbnl0aGluZy1pbi1oZWxwLWFzLWl0LXJlcXVpcmVzLWl0c3Rvb2wucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSBjMjQ5NWE0YzA0MmU2YTY3NWRhNjliYWIyMGNjMzY2OTM5MWU4ZTJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIzIEF1ZyAyMDE3IDE4OjM4OjI2ICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBEbyBub3QgYnVpbGQgYW55dGhpbmcgaW4gaGVscC8gYXMgaXQgcmVxdWlyZXMgaXRzdG9vbC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBtZXNvbi5idWlsZCB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCA0YWMzOTM0Li44YzQzNjlhIDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtMTE2LDcgKzExNiw2IEBAIHN1YmRpcigndG9vbHMnKQorIHN1YmRpcigndGVzdHMnKQorIAorIHN1YmRpcignZGF0YScpCistc3ViZGlyKCdoZWxwJykKKyBzdWJkaXIoJ3BvJykKKyAKKyBtZXNvbi5hZGRfaW5zdGFsbF9zY3JpcHQoJ2J1aWxkLWF1eC9tZXNvbl9wb3N0X2luc3RhbGwuc2gnKQorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLWNvbmZpZ3VyZS1BZGQtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLXBvbGtpdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1jb25maWd1cmUtQWRkLW9wdGlvbi10by1lbmFibGUtZGlzYWJsZS1wb2xraXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1OGQ5OTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLWNvbmZpZ3VyZS1BZGQtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLXBvbGtpdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb20gMmI0MDA1ZDcyZDMzOTM5MzNhNzkxNGJlMTAyZWE2NTUwNWM1MzZjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJNYXhpbiBCLiBKb2huIiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci1EYXRlOiBUaHUsIDIxIEp1bCAyMDE2IDExOjUzOjMxICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogQWRkIG9wdGlvbiB0byBlbmFibGUvZGlzYWJsZSBwb2xraXQKLQotQ2hhbmdlcyB0aGUgY29uZmlndXJlIGJlaGF2aW91ciBmcm9tIGF1dG9kZXRlY3RpbmcgdGhlIHBvbGtpdCBieSBkZWZhdWx0Ci10byBoYXZpbmcgYW4gb3B0aW9uIHRvIGRpc2FibGUgaXQgZXhwbGljaXRseQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCA4ICsrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyMjQ2ZDVhLi4zZDNmZTBmIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMDQsMTAgKzEwNCwxOCBAQCBQS0dfQ0hFQ0tfTU9EVUxFUyhHVEssCi0gICAgICAgICAgICAgICAgICAgW2d0aystMy4wID49IGd0a19yZXF1aXJlZF92ZXJzaW9uXSwKLSAgICAgICAgICAgICAgICAgICBbaGF2ZV9ndGs9eWVzXSwKLSAgICAgICAgICAgICAgICAgICBbaGF2ZV9ndGs9bm9dKQotK0FDX0FSR19FTkFCTEUoW3BvbGtpdF0sCi0rICAgICAgICAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtcG9sa2l0XSwgW0RvIG5vdCB1c2UgUG9sa2l0XSksCi0rICAgICAgICAgICAgICAgICAgIFtlbmFibGVfcG9sa2l0PSIkZW5hYmxldmFsIl0sIFtlbmFibGVfcG9sa2l0PSJ5ZXMiXSkKLSsKLStBU19JRihbdGVzdCAieCRlbmFibGVfcG9sa2l0IiA9ICJ4eWVzIl0sIFsKLSBQS0dfQ0hFQ0tfTU9EVUxFUyhQT0xLSVQsCi0gICAgICAgICAgICAgICAgICAgW3BvbGtpdC1nb2JqZWN0LTFdLAotICAgICAgICAgICAgICAgICAgIFtoYXZlX3BvbGtpdD15ZXNdLAotICAgICAgICAgICAgICAgICAgIFtoYXZlX3BvbGtpdD1ub10pCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQotK0FNX0NPTkRJVElPTkFMKFtIQVZFX1BPTEtJVF0sIFt0ZXN0ICJ4JGVuYWJsZV9wb2xraXQiID0gInh5ZXMiXSkKLSsKLSBQS0dfQ0hFQ0tfTU9EVUxFUyhTWVNURU1ELAotICAgICAgICAgICAgICAgICAgIFtsaWJzeXN0ZW1kID49IHN5c3RlbWRfcmVxdWlyZWRfdmVyc2lvbl0sCi0gICAgICAgICAgICAgICAgICAgW2hhdmVfc3lzdGVtZD15ZXNdLAotLS0gCi0yLjQuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4yNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9zeXNwcm9mXzMuMjQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzlhMjdiZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4yNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotU1VNTUFSWSA9ICJTeXN0ZW0td2lkZSBQZXJmb3JtYW5jZSBQcm9maWxlciBmb3IgTGludXgiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnN5c3Byb2YuY29tIgotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc3AtYXBwbGljYXRpb24uYztlbmRsaW5lPTE3O21kNT00MGU1NTU3N2VmMTIyYzg4ZmUyMDA1MmFjZGE2NDg3NSIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ2V0dGV4dCBzeXN0ZW1kIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1ERVBFTkRTID0gImdsaWItMi4wIGxpYnhtbDItbmF0aXZlIGdsaWItMi4wLW5hdGl2ZSIKLQotU1JDX1VSSSArPSAiIFwKLSAgICAgICAgICAgZmlsZTovL2RlZmluZS1OVF9HTlVfQlVJTERfSUQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQWRkLW9wdGlvbi10by1lbmFibGUtZGlzYWJsZS1wb2xraXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLWNoZWNrLWZvci1wb2xraXQtZm9yLVVJLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQXZvaWQtYnVpbGRpbmctZG9jcy5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMmI0NGFlMWQ4Y2Q4OTk0MTcyOTRhOWM0NTA5ZDc4NzAiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIwNTRlZWJlMmFmYjZmZTNjMDZhYzhjNDZiYzA0NWM0MmY2NzVkNGZkNjRlNmYxNmNiYzYwMmQ1YzdjZTI3YmVjIgotCi1BVVRPVE9PTFNfQVVYRElSID0gIiR7U30vYnVpbGQtYXV4IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtY29tcGlsZS13YXJuaW5ncyIKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdESVNUUk9fRkVBVFVSRVMnLCAnJHtHVEszRElTVFJPRkVBVFVSRVN9JywgJ2d0aycsICcnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2d0a10gPSAiLS1lbmFibGUtZ3RrLC0tZGlzYWJsZS1ndGssZ3RrKzMiCi1QQUNLQUdFQ09ORklHW3BvbGtpdF0gPSAiLS1lbmFibGUtcG9sa2l0LC0tZGlzYWJsZS1wb2xraXQscG9sa2l0IGRidXMiCi0KLVNPTElCUyA9ICIuc28iCi1GSUxFU19TT0xJQlNERVYgPSAiIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncG9sa2l0JywgJ3N5c3Byb2YyLnNlcnZpY2UnLCAnJywgZCl9IgotCi0jIFdlIGRvIG5vdCB5ZXQgd29yayBmb3IgYWFyY2g2NC4KLUNPTVBBVElCTEVfSE9TVCA9ICJeKD8hYWFyY2g2NCkuKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2Yvc3lzcHJvZl8zLjI2LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4yNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5ODliNTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4yNi4xLmJiCkBAIC0wLDAgKzEsMzQgQEAKK1NVTU1BUlkgPSAiU3lzdGVtLXdpZGUgUGVyZm9ybWFuY2UgUHJvZmlsZXIgZm9yIExpbnV4IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zeXNwcm9mLmNvbSIKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3NwLWFwcGxpY2F0aW9uLmM7ZW5kbGluZT0xNzttZDU9NDBlNTU1NzdlZjEyMmM4OGZlMjAwNTJhY2RhNjQ4NzUiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitpbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHN5c3RlbWQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgbGlieG1sMi1uYXRpdmUgZ2xpYi0yLjAtbmF0aXZlIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI2ZjlmOTQ3OTYwYmE3OWJiMTI2OWQ4ZWU0OWI3ZGI3OCIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImQ4YjlkNWMyMjQ2Njk2ZTRhMzc3NmEzMTI3MzFkYzdjMDE0ZmJkMzM0NzhiYjE0ZDU1MTJjNmYxZjM1YTNiMTEiCitTUkNfVVJJICs9ICIgXAorICAgICAgICAgICBmaWxlOi8vZGVmaW5lLU5UX0dOVV9CVUlMRF9JRC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1idWlsZC1hbnl0aGluZy1pbi1oZWxwLWFzLWl0LXJlcXVpcmVzLWl0c3Rvb2wucGF0Y2ggXAorICAgICAgICAgICAiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnRElTVFJPX0ZFQVRVUkVTJywgJyR7R1RLM0RJU1RST0ZFQVRVUkVTfScsICdndGsnLCAnJywgZCl9IgorUEFDS0FHRUNPTkZJR1tndGtdID0gIi1EZW5hYmxlX2d0az10cnVlLC1EZW5hYmxlX2d0az1mYWxzZSxndGsrMyIKK1BBQ0tBR0VDT05GSUdbc3lzcHJvZmRdID0gIi1Ed2l0aF9zeXNwcm9mZD1idW5kbGVkLC1Ed2l0aF9zeXNwcm9mZD1ub25lLHBvbGtpdCIKKworU09MSUJTID0gIi5zbyIKK0ZJTEVTX1NPTElCU0RFViA9ICIiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzeXNwcm9mZCcsICdzeXNwcm9mMi5zZXJ2aWNlJywgJycsIGQpfSIKKworIyBXZSBkbyBub3QgeWV0IHdvcmsgZm9yIGFhcmNoNjQuCitDT01QQVRJQkxFX0hPU1QgPSAiXig/IWFhcmNoNjQpLioiCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kIFwKKyAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1BZGRlZC1hLWNvdXBsZS1vZi1zbWFsbC1zeXNyb290LWZpeGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLUFkZGVkLWEtY291cGxlLW9mLXNtYWxsLXN5c3Jvb3QtZml4ZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBjZWI1YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1BZGRlZC1hLWNvdXBsZS1vZi1zbWFsbC1zeXNyb290LWZpeGVzLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gYTcxNDY1ODcyNzIwNmQyYTk4YTcxOTRiN2U2ZDI5ZGJkM2UyN2I4ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERhdmlkIFNtaXRoIDxkc21pdGhAcmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgMTkgTWFyIDIwMTggMTY6NTA6MDUgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkZWQgYSBjb3VwbGUgb2Ygc21hbGwgc3lzcm9vdCBmaXhlcy4KKworKiB0YXBzZXRzLmN4eCAoZHdhcmZfYnVpbGRlcjo6YnVpbGQpOiBGaXggY29tbWl0IDRmZmVjZGRmNS4KKyAgKHBhdGhfcmVtb3ZlX3N5c3Jvb3QpOiBGaXggZXh0cmEgJy8nIHByZXNlbnQgYXQgc3RhcnQgb2YgcGF0aHMuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorLS0tCisgdGFwc2V0cy5jeHggfCAxMCArKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworSW5kZXg6IGdpdC90YXBzZXRzLmN4eAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3RhcHNldHMuY3h4CisrKysgZ2l0L3RhcHNldHMuY3h4CitAQCAtMTM5NSw3ICsxMzk1LDggQEAgc3RyaW5nIHBhdGhfcmVtb3ZlX3N5c3Jvb3QoY29uc3Qgc3lzdGVtdAorICAgc3RyaW5nIHJldHZhbCA9IHBhdGg7CisgICBpZiAoIXNlc3Muc3lzcm9vdC5lbXB0eSgpICYmCisgICAgICAgKHBvcyA9IHJldHZhbC5maW5kKHNlc3Muc3lzcm9vdCkpICE9IHN0cmluZzo6bnBvcykKKy0gICAgcmV0dmFsLnJlcGxhY2UocG9zLCBzZXNzLnN5c3Jvb3QubGVuZ3RoKCksICIvIik7CisrICAgIHJldHZhbC5yZXBsYWNlKHBvcywgc2Vzcy5zeXNyb290Lmxlbmd0aCgpLAorKwkJICAgKHNlc3Muc3lzcm9vdC5iYWNrKCkgPT0gJy8nID8gIi8iOiAiIikpOworICAgcmV0dXJuIHJldHZhbDsKKyB9CisgCitAQCAtODQxMiw4ICs4NDEzLDExIEBAIGR3YXJmX2J1aWxkZXI6OmJ1aWxkKHN5c3RlbXRhcF9zZXNzaW9uICYKKyAKKyAgICAgICAvLyBQUjEzMzM4OiB1bnF1b3RlIGdsb2IgcmVzdWx0cworICAgICAgIG1vZHVsZV9uYW1lID0gdW5lc2NhcGVfZ2xvYl9jaGFycyAobW9kdWxlX25hbWUpOworLSAgICAgIHVzZXJfcGF0aCA9IGZpbmRfZXhlY3V0YWJsZSAobW9kdWxlX25hbWUsICIiLCBzZXNzLnN5c2Vudik7IC8vIGNhbm9uaWNhbGl6ZSBpdAorLSAgICAgIGlmICghaXNfZnVsbHlfcmVzb2x2ZWQodXNlcl9wYXRoLCBzZXNzLnN5c3Jvb3QsIHNlc3Muc3lzZW52KSkKKysgICAgICB1c2VyX3BhdGggPSBmaW5kX2V4ZWN1dGFibGUgKG1vZHVsZV9uYW1lLCBzZXNzLnN5c3Jvb3QsIHNlc3Muc3lzZW52KTsgLy8gY2Fub25pY2FsaXplIGl0CisrICAgICAgLy8gTm90ZSB3ZSBkb24ndCBuZWVkIHRvIHBhc3MgdGhlIHN5c3Jvb3QgdG8KKysgICAgICAvLyBpc19mdWxseV9yZXNvbHZlZCgpLCBzaW5jZSB3ZSBqdXN0IHBhc3NlZCBpdCB0bworKyAgICAgIC8vIGZpbmRfZXhlY3V0YWJsZSgpLgorKyAgICAgIGlmICghaXNfZnVsbHlfcmVzb2x2ZWQodXNlcl9wYXRoLCAiIiwgc2Vzcy5zeXNlbnYpKQorICAgICAgICAgdGhyb3cgU0VNQU5USUNfRVJST1IoX0YoImNhbm5vdCBmaW5kIGV4ZWN1dGFibGUgJyVzJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX3BhdGgudG9fc3RyaW5nKCkuY19zdHIoKSkpOworIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLURlbGF5LWFkZGluZy1zeXNyb290LXBhdGgtdG8tbW9kdWxlLW5hbWUtaW4tY2FzZS1vZi0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtRGVsYXktYWRkaW5nLXN5c3Jvb3QtcGF0aC10by1tb2R1bGUtbmFtZS1pbi1jYXNlLW9mLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTk1MWEyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLURlbGF5LWFkZGluZy1zeXNyb290LXBhdGgtdG8tbW9kdWxlLW5hbWUtaW4tY2FzZS1vZi0ucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAorRnJvbSA0ZmZlY2RkZjU0MzNkNjVhNmYwMTI0MTk5MGM5ZDUxNjU4NmIxYzc5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+CitEYXRlOiBNb24sIDE5IE1hciAyMDE4IDA4OjUzOjUxIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIERlbGF5IGFkZGluZyBzeXNyb290IHBhdGggdG8gbW9kdWxlIG5hbWUgaW4gY2FzZSBvZiBub24KKyBhYnNvbHV0ZSBleGVjdXRhYmxlCisKK0N1cnJlbnQgc3RhcCBjb2RlIGFkZHMgc3lzcm9vdCBwcmVtYXR1cmVseSBmb3IgcHJvYmVzIHRoYXQgc3BlY2lmeSBub24KK2Fic29sdXRlIHBhdGggbmFtZSwgaS5lIGxpa2UgImZvbyIsIHNvIHdoZW4gZmluZF9leGVjdXRhYmxlIGNhbGxlZCBpdAorcmVjZWl2ZXMgZnVsbCBwYXRoIGFzIDxzeXNyb290Pi9mb28gYW5kIGZpbmRfZXhlY3V0YWJsZSBkb2VzIG5vdCBzZWFyY2gKK1BBVEggd2hpbGUgYXBwbHlpbmcgc3lzcm9vdC4KKworRml4IGRlbGF5cyBhZGRpbmcgc3lzcm9vdCB0aWxsIHBhdGggaW5zaWRlIG9mIHN5c3Jvb3QgaXMgc2VhcmNoZWQgZmlyc3QuCisKK0Fsc28gZml4IG1pc3Npbmcgc3lzcm9vdCBhZGRpdGlvbiBpbiBnbG9iIGV4cGFuc2lvbiBjYXNlLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KKy0tLQorIHRhcHNldHMuY3h4IHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK0luZGV4OiBnaXQvdGFwc2V0cy5jeHgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy90YXBzZXRzLmN4eAorKysrIGdpdC90YXBzZXRzLmN4eAorQEAgLTc0Niw3ICs3NDYsNyBAQCBiYXNlX3F1ZXJ5OjpiYXNlX3F1ZXJ5KGR3ZmxwcCAmIGR3LCBsaXRlCisgICAgICAgICAgICAgICBwaWRfdmFsID0gMDsKKyAgICAgICAgICAgICAgIGdldF9zdHJpbmdfcGFyYW0ocGFyYW1zLCBUT0tfUFJPQ0VTUywgbW9kdWxlX3ZhbCk7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICBtb2R1bGVfdmFsID0gZmluZF9leGVjdXRhYmxlIChtb2R1bGVfdmFsLCAiIiwgc2Vzcy5zeXNlbnYpOworKyAgICAgICAgICBtb2R1bGVfdmFsID0gZmluZF9leGVjdXRhYmxlIChtb2R1bGVfdmFsLCBzZXNzLnN5c3Jvb3QsIHNlc3Muc3lzZW52KTsKKyAgICAgICAgICAgaWYgKCFpc19mdWxseV9yZXNvbHZlZChtb2R1bGVfdmFsLCAiIiwgc2Vzcy5zeXNlbnYpKQorICAgICAgICAgICAgIHRocm93IFNFTUFOVElDX0VSUk9SKF9GKCJjYW5ub3QgZmluZCBleGVjdXRhYmxlICclcyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV92YWwudG9fc3RyaW5nKCkuY19zdHIoKSkpOworQEAgLTgyODcsNyArODI4Nyw2IEBAIGR3YXJmX2J1aWxkZXI6OmJ1aWxkKHN5c3RlbXRhcF9zZXNzaW9uICYKKyAgICAgICAgICAgICB9CisgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICB7CistICAgICAgICAgICAgICBtb2R1bGVfbmFtZSA9IChzdHJpbmcpc2Vzcy5zeXNyb290ICsgKHN0cmluZyltb2R1bGVfbmFtZTsKKyAgICAgICAgICAgICAgIGZpbGxlZF9wYXJhbWV0ZXJzW1RPS19QUk9DRVNTXSA9IG5ldyBsaXRlcmFsX3N0cmluZyhtb2R1bGVfbmFtZSk7CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorQEAgLTgzMjEsNyArODMyMCw4IEBAIGR3YXJmX2J1aWxkZXI6OmJ1aWxkKHN5c3RlbXRhcF9zZXNzaW9uICYKKyAgICAgICAgICAgYXNzZXJ0IChsaXQpOworIAorICAgICAgICAgICAvLyBFdmFsdWF0ZSBnbG9iIGhlcmUsIGFuZCBjYWxsIGRlcml2ZV9wcm9iZXMgcmVjdXJzaXZlbHkgd2l0aCBlYWNoIG1hdGNoLgorLSAgICAgICAgICBjb25zdCBhdXRvJiBnbG9icyA9IGdsb2JfZXhlY3V0YWJsZSAobW9kdWxlX25hbWUpOworKyAgICAgICAgICBjb25zdCBhdXRvJiBnbG9icyA9IGdsb2JfZXhlY3V0YWJsZSAoc2Vzcy5zeXNyb290CisrCQkJCQkgICAgICAgKyBzdHJpbmcobW9kdWxlX25hbWUpKTsKKyAgICAgICAgICAgdW5zaWduZWQgcmVzdWx0c19wcmUgPSBmaW5pc2hlZF9yZXN1bHRzLnNpemUoKTsKKyAgICAgICAgICAgZm9yIChhdXRvIGl0ID0gZ2xvYnMuYmVnaW4oKTsgaXQgIT0gZ2xvYnMuZW5kKCk7ICsraXQpCisgICAgICAgICAgICAgeworQEAgLTg0MTMsNyArODQxMyw3IEBAIGR3YXJmX2J1aWxkZXI6OmJ1aWxkKHN5c3RlbXRhcF9zZXNzaW9uICYKKyAgICAgICAvLyBQUjEzMzM4OiB1bnF1b3RlIGdsb2IgcmVzdWx0cworICAgICAgIG1vZHVsZV9uYW1lID0gdW5lc2NhcGVfZ2xvYl9jaGFycyAobW9kdWxlX25hbWUpOworICAgICAgIHVzZXJfcGF0aCA9IGZpbmRfZXhlY3V0YWJsZSAobW9kdWxlX25hbWUsICIiLCBzZXNzLnN5c2Vudik7IC8vIGNhbm9uaWNhbGl6ZSBpdAorLSAgICAgIGlmICghaXNfZnVsbHlfcmVzb2x2ZWQodXNlcl9wYXRoLCAiIiwgc2Vzcy5zeXNlbnYpKQorKyAgICAgIGlmICghaXNfZnVsbHlfcmVzb2x2ZWQodXNlcl9wYXRoLCBzZXNzLnN5c3Jvb3QsIHNlc3Muc3lzZW52KSkKKyAgICAgICAgIHRocm93IFNFTUFOVElDX0VSUk9SKF9GKCJjYW5ub3QgZmluZCBleGVjdXRhYmxlICclcyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9wYXRoLnRvX3N0cmluZygpLmNfc3RyKCkpKTsKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1GaXgtUFIyMjU1MS1ieS11cGRhdGluZy10aGUtdXNlLW9mLXRpbWVycy1mb3ItdGhlLTQuLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLUZpeC1QUjIyNTUxLWJ5LXVwZGF0aW5nLXRoZS11c2Utb2YtdGltZXJzLWZvci10aGUtNC4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYwYzNiNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1GaXgtUFIyMjU1MS1ieS11cGRhdGluZy10aGUtdXNlLW9mLXRpbWVycy1mb3ItdGhlLTQuLnBhdGNoCkBAIC0wLDAgKzEsMjc3IEBACitGcm9tIGZiYjI2ZTE3YTRjMDI2ZjA1YTQ5N2ZjNWQ1ODQ1MTZiYWQzYjY5NTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEYXZpZCBTbWl0aCA8ZHNtaXRoQHJlZGhhdC5jb20+CitEYXRlOiBXZWQsIDYgRGVjIDIwMTcgMTQ6Mzc6NDIgLTA2MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IFBSMjI1NTEgYnkgdXBkYXRpbmcgdGhlIHVzZSBvZiB0aW1lcnMgZm9yIHRoZSA0LjE1Cisga2VybmVsLgorCisqIHJ1bnRpbWUvbGludXgvdGltZXJfY29tcGF0aWJpbGl0eS5oOiBOZXcgZmlsZS4KKyogcnVudGltZS90aW1lLmM6IFVwZGF0ZSB0aW1lciBjYWxsYmFjayBmdW5jdGlvbiBwYXJhbWV0ZXIgdHlwZS4gVXBkYXRlCisgIHRpbWVyIGluaXRpYWxpemF0aW9uLgorKiBydW50aW1lL3RyYW5zcG9ydC9yZWxheV92Mi5jOiBEaXR0by4KKyogcnVudGltZS90cmFuc3BvcnQvdHJhbnNwb3J0LmM6IERpdHRvLgorKiB0YXBzZXQtdGltZXJzLmN4eCAodGltZXJfZGVyaXZlZF9wcm9iZV9ncm91cDo6ZW1pdF9tb2R1bGVfZGVjbHMpOgorICBEaXR0by4gSGFuZGxlIG9sZCBhbmQgbmV3IHRpbWVyIGNhbGxiYWNrIGludGVyZmFjZS4KKyogcnVudGltZS9saW51eC9ydW50aW1lLmg6IEluY2x1ZGUgdGltZXJfY29tcGF0aWJpbGl0eS5oIGluc3RlYWQgb2YgdGltZXIuaC4KKyogdGFwc2V0L2xpbnV4L3Njc2kuc3RwOiBEaXR0by4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+CisKKy0tLQorIHJ1bnRpbWUvbGludXgvcnVudGltZS5oICAgICAgICAgICAgIHwgIDIgKy0KKyBydW50aW1lL2xpbnV4L3RpbWVyX2NvbXBhdGliaWxpdHkuaCB8IDc2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBydW50aW1lL3RpbWUuYyAgICAgICAgICAgICAgICAgICAgICB8ICA3ICsrLS0KKyBydW50aW1lL3RyYW5zcG9ydC9yZWxheV92Mi5jICAgICAgICB8ICA4ICsrLS0KKyBydW50aW1lL3RyYW5zcG9ydC90cmFuc3BvcnQuYyAgICAgICB8IDEzICsrKy0tLS0KKyB0YXBzZXQtdGltZXJzLmN4eCAgICAgICAgICAgICAgICAgICB8IDE0ICsrKysrLS0KKyB0YXBzZXQvbGludXgvc2NzaS5zdHAgICAgICAgICAgICAgICB8ICAyICstCisgNyBmaWxlcyBjaGFuZ2VkLCAxMDAgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1bnRpbWUvbGludXgvdGltZXJfY29tcGF0aWJpbGl0eS5oCisKK2RpZmYgLS1naXQgYS9ydW50aW1lL2xpbnV4L3J1bnRpbWUuaCBiL3J1bnRpbWUvbGludXgvcnVudGltZS5oCitpbmRleCA5YzU4NWEyLi5kZjliNzRjIDEwMDY0NAorLS0tIGEvcnVudGltZS9saW51eC9ydW50aW1lLmgKKysrKyBiL3J1bnRpbWUvbGludXgvcnVudGltZS5oCitAQCAtMzQsNyArMzQsNyBAQAorICNpbmNsdWRlIDxsaW51eC9jb21wYXQuaD4KKyAjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KKyAjaW5jbHVkZSA8bGludXgvbW0uaD4KKy0jaW5jbHVkZSA8bGludXgvdGltZXIuaD4KKysjaW5jbHVkZSAidGltZXJfY29tcGF0aWJpbGl0eS5oIgorICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorICNpbmNsdWRlIDxsaW51eC9wcm9maWxlLmg+CisgI2luY2x1ZGUgPGxpbnV4L3JjdXBkYXRlLmg+CitkaWZmIC0tZ2l0IGEvcnVudGltZS9saW51eC90aW1lcl9jb21wYXRpYmlsaXR5LmggYi9ydW50aW1lL2xpbnV4L3RpbWVyX2NvbXBhdGliaWxpdHkuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmFjMDNkZTkKKy0tLSAvZGV2L251bGwKKysrKyBiL3J1bnRpbWUvbGludXgvdGltZXJfY29tcGF0aWJpbGl0eS5oCitAQCAtMCwwICsxLDc2IEBACisrLyoKKysgKiBsaW51eC90aW1lci5oIGNvbXBhdGliaWxpdHkgZGVmaW5lcyBhbmQgaW5saW5lcworKyAqIENvcHlyaWdodCAoQykgMjAxNyBSZWQgSGF0IEluYy4KKysgKgorKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHN5c3RlbXRhcCwgYW5kIGlzIGZyZWUgc29mdHdhcmUuICBZb3UgY2FuCisrICogcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbAorKyAqIFB1YmxpYyBMaWNlbnNlIChHUEwpOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pIGFueQorKyAqIGxhdGVyIHZlcnNpb24uCisrICovCisrCisrI2lmbmRlZiBfVElNRVJfQ09NUEFUSUJJTElUWV9IXworKyNkZWZpbmUgX1RJTUVSX0NPTVBBVElCSUxJVFlfSF8KKysKKysjaW5jbHVkZSA8bGludXgvdGltZXIuaD4KKysKKysvKgorKyAqIFN0YXJ0aW5nIHdpdGggdGhlIDQuMTUga2VybmVsLCB0aGUgdGltZXIgaW50ZXJmYWNlCisrICogY2hhbmdlZC4gT3JpZ2luYWxseSwgeW91J2QgZG8gc29tZXRoaW5nIGxpa2U6CisrICoKKysgKiAgIHN0YXRpYyB2b2lkIHRpbWVyX2Z1bmModW5zaWduZWQgbG9uZyB2YWwpOworKyAqCisrICogICBpbml0X3RpbWVyKCZ0aW1lcik7CisrICogICB0aW1lci5leHBpcmVzID0gamlmZmllcyArIFNUUF9SRUxBWV9USU1FUl9JTlRFUlZBTDsKKysgKiAgIHRpbWVyLmZ1bmN0aW9uID0gdGltZXJfZnVuYzsKKysgKiAgIHRpbWVyLmRhdGEgPSAwOworKyAqICAgYWRkX3RpbWVyKCZ0aW1lcik7CisrICoKKysgKiBUaGUgJ2RhdGEnIHBhcmFtZXRlciB3b3VsZCBnZXQgcGFzc2VkIHRvIHRoZSBjYWxsYmFjaworKyAqIGZ1bmN0aW9uLiBTdGFydGluZyB3aXRoIDQuMTUsIHlvdSdkIGRvIHNvbWV0aGluZyBsaWtlIHRoaXM6CisrICoKKysgKiAgIHN0YXRpYyB2b2lkIHRpbWVyX2Z1bmMoc3RydWN0IHRpbWVyX2xpc3QgKnZhbCk7CisrICoKKysgKiAgIHRpbWVyX3NldHVwKCZ0aW1lciwgdGltZXJfZnVuYywgMCk7CisrICogICB0aW1lci5leHBpcmVzID0gamlmZmllcyArIFNUUF9SRUxBWV9USU1FUl9JTlRFUlZBTDsKKysgKiAgIGFkZF90aW1lcigmdGltZXIpOworKyAqICAgCisrICogV2l0aCB0aGUgbmV3IGNvZGUsIHRoZSB0aW1lciB0aGF0IGNhdXNlZCB0aGUgY2FsbGJhY2sgZ2V0cyBwYXNzZWQKKysgKiB0byB0aGUgdGltZXIgY2FsbGJhY2sgZnVuY3Rpb24uIFRoZSAnZGF0YScgZmllbGQgaGFzIGJlZW4gcmVtb3ZlZC4KKysgKgorKyAqIFNvLCB3ZSdyZSBnb2luZyB0byB1c2UgdGhlIG5ldyBpbnRlcmZhY2UuIFRvIGhpZGUgdGhlIGRpZmZlcmVuY2VzCisrICogYmV0d2VlbiB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gcGFyYW1ldGVyIHR5cGUsIHdlJ2xsIGRlZmluZSBhIG5ldworKyAqIHR5cGUsICdzdHBfdGltZXJfY2FsbGJhY2tfcGFyYW1ldGVyX3QnLgorKyAqCisrICogSWYgY29kZSBuZWVkcyB0byBmaWd1cmUgb3V0IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIG9sZCBhbmQgbmV3CisrICogaW50ZXJmYWNlLCBpdCBzaG91bGQgdGVzdCB0aGUgVElNRVJfVFJBQ0VfRkxBR01BU0sgZGVmaW5lICh3aGljaAorKyAqIG9ubHkgZXhpc3RzIGluIHRoZSBuZXcgaW50ZXJmYWNlKS4KKysgKi8KKysKKysjaWYgZGVmaW5lZChUSU1FUl9UUkFDRV9GTEFHTUFTSykgCisrLyogVGhpcyBpcyB0aGUgPj0gNC4xNSBrZXJuZWwgaW50ZXJmYWNlLiAqLworKworK3R5cGVkZWYgc3RydWN0IHRpbWVyX2xpc3QgKiBzdHBfdGltZXJfY2FsbGJhY2tfcGFyYW1ldGVyX3Q7CisrCisrI2Vsc2UKKysvKiBUaGlzIGlzIHRoZSA8IDQuMTUga2VybmVsIGludGVyZmFjZS4gKi8KKysKKyt0eXBlZGVmIHVuc2lnbmVkIGxvbmcgc3RwX3RpbWVyX2NhbGxiYWNrX3BhcmFtZXRlcl90OworKworKy8qKgorKyAqIHRpbWVyX3NldHVwIC0gcHJlcGFyZSBhIHRpbWVyIGZvciBmaXJzdCB1c2UKKysgKiBAdGltZXI6IHRoZSB0aW1lciBpbiBxdWVzdGlvbgorKyAqIEBjYWxsYmFjazogdGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aW1lciBleHBpcmVzCisrICogQGZsYWdzOiBhbnkgVElNRVJfKiBmbGFncyAobm90ZSB0aGF0IGFueXRoaW5nIG90aGVyIHRoYW4gMCBpcyBhbgorKyAqIAkgICBlcnJvciwgc2luY2UgdGhpcyBjb21wYXRpYmlsaXR5IGZ1bmN0aW9uIGNhbid0IHN1cHBvcnQgYW55CisrICoJICAgb2YgdGhlIFRJTUVSXyogZmxhZ3MpCisrICovCisrI2RlZmluZSB0aW1lcl9zZXR1cCh0aW1lciwgY2FsbGJhY2ssIGZsYWdzKQkJCVwKKysJewkJCQkJCQlcCisrCQlpbml0X3RpbWVyKCh0aW1lcikpOwkJCQlcCisrCQkodGltZXIpLT5mdW5jdGlvbiA9IGNhbGxiYWNrOwkJCVwKKysJCSh0aW1lciktPmRhdGEgPSAwOwkJCQlcCisrCQlCVUlMRF9CVUdfT05fWkVSTygoZmxhZ3MpICE9IDApOwkJXAorKwl9CisrI2VuZGlmCisrCisrI2VuZGlmIC8qIF9USU1FUl9DT01QQVRJQklMSVRZX0hfICovCitkaWZmIC0tZ2l0IGEvcnVudGltZS90aW1lLmMgYi9ydW50aW1lL3RpbWUuYworaW5kZXggMmU2NjZkNS4uOTFjZWFmYSAxMDA2NDQKKy0tLSBhL3J1bnRpbWUvdGltZS5jCisrKysgYi9ydW50aW1lL3RpbWUuYworQEAgLTE2OCwxMCArMTY4LDEwIEBAIF9fc3RwX3RpbWVfc21wX2NhbGxiYWNrKHZvaWQgKnZhbCkKKyAKKyAvKiBUaGUgdGltZXIgY2FsbGJhY2sgaXMgaW4gYSBzb2Z0SVJRIC0tIGludGVycnVwdHMgZW5hYmxlZC4gKi8KKyBzdGF0aWMgdm9pZAorLV9fc3RwX3RpbWVfdGltZXJfY2FsbGJhY2sodW5zaWduZWQgbG9uZyB2YWwpCisrX19zdHBfdGltZV90aW1lcl9jYWxsYmFjayhzdHBfdGltZXJfY2FsbGJhY2tfcGFyYW1ldGVyX3QgdW51c2VkKQorIHsKKyAgICAgc3RwX3RpbWVfdCAqdGltZSA9X19zdHBfdGltZV9sb2NhbF91cGRhdGUoKTsKKy0gICAgKHZvaWQpIHZhbDsKKysgICAgKHZvaWQpIHVudXNlZDsKKyAKKyAgICAgLyogUFI2NDgxOiBtYWtlIHN1cmUgSVJRcyBhcmUgZW5hYmxlZCBiZWZvcmUgcmVzZXR0aW5nIHRoZSB0aW1lcgorICAgICAgICAoSVJRcyBhcmUgZGlzYWJsZWQgYW5kIHRoZW4gcmVlbmFibGVkIGluCitAQCAtMjAwLDkgKzIwMCw4IEBAIF9fc3RwX2luaXRfdGltZSh2b2lkICppbmZvKQorICAgICB0aW1lLT5mcmVxID0gX19zdHBfZ2V0X2ZyZXEoKTsKKyAgICAgX19zdHBfdGltZV9sb2NhbF91cGRhdGUoKTsKKyAKKy0gICAgaW5pdF90aW1lcigmdGltZS0+dGltZXIpOworKyAgICB0aW1lcl9zZXR1cCgmdGltZS0+dGltZXIsIF9fc3RwX3RpbWVfdGltZXJfY2FsbGJhY2ssIDApOworICAgICB0aW1lLT50aW1lci5leHBpcmVzID0gamlmZmllcyArIFNUUF9USU1FX1NZTkNfSU5URVJWQUw7CistICAgIHRpbWUtPnRpbWVyLmZ1bmN0aW9uID0gX19zdHBfdGltZV90aW1lcl9jYWxsYmFjazsKKyAKKyAjaWZuZGVmIFNUQVBDT05GX0FERF9USU1FUl9PTgorICAgICBhZGRfdGltZXIoJnRpbWUtPnRpbWVyKTsKK2RpZmYgLS1naXQgYS9ydW50aW1lL3RyYW5zcG9ydC9yZWxheV92Mi5jIGIvcnVudGltZS90cmFuc3BvcnQvcmVsYXlfdjIuYworaW5kZXggZjgxZDc1ZC4uMTM1OTUxYSAxMDA2NDQKKy0tLSBhL3J1bnRpbWUvdHJhbnNwb3J0L3JlbGF5X3YyLmMKKysrKyBiL3J1bnRpbWUvdHJhbnNwb3J0L3JlbGF5X3YyLmMKK0BAIC0zMCw3ICszMCw3IEBACisgI2luY2x1ZGUgPGxpbnV4L2RlYnVnZnMuaD4KKyAjaW5jbHVkZSA8bGludXgvbW0uaD4KKyAjaW5jbHVkZSA8bGludXgvcmVsYXkuaD4KKy0jaW5jbHVkZSA8bGludXgvdGltZXIuaD4KKysjaW5jbHVkZSAiLi4vbGludXgvdGltZXJfY29tcGF0aWJpbGl0eS5oIgorICNpbmNsdWRlICIuLi91aWRnaWRfY29tcGF0aWJpbGl0eS5oIgorICNpbmNsdWRlICJyZWxheV9jb21wYXQuaCIKKyAKK0BAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIHZvaWQgX19zdHBfcmVsYXlfd2FrZXVwX3JlYWRlcnMoc3RydWN0IHJjaGFuX2J1ZiAqYnVmKQorIAkJd2FrZV91cF9pbnRlcnJ1cHRpYmxlKCZidWYtPnJlYWRfd2FpdCk7CisgfQorIAorLXN0YXRpYyB2b2lkIF9fc3RwX3JlbGF5X3dha2V1cF90aW1lcih1bnNpZ25lZCBsb25nIHZhbCkKKytzdGF0aWMgdm9pZCBfX3N0cF9yZWxheV93YWtldXBfdGltZXIoc3RwX3RpbWVyX2NhbGxiYWNrX3BhcmFtZXRlcl90IHVudXNlZCkKKyB7CisgI2lmZGVmIFNUUF9CVUxLTU9ERQorIAlpbnQgaTsKK0BAIC0xNTEsMTAgKzE1MSw4IEBAIHN0YXRpYyB2b2lkIF9fc3RwX3JlbGF5X3dha2V1cF90aW1lcih1bnNpZ25lZCBsb25nIHZhbCkKKyBzdGF0aWMgdm9pZCBfX3N0cF9yZWxheV90aW1lcl9pbml0KHZvaWQpCisgeworIAlhdG9taWNfc2V0KCZfc3RwX3JlbGF5X2RhdGEud2FrZXVwLCAwKTsKKy0JaW5pdF90aW1lcigmX3N0cF9yZWxheV9kYXRhLnRpbWVyKTsKKysJdGltZXJfc2V0dXAoJl9zdHBfcmVsYXlfZGF0YS50aW1lciwgX19zdHBfcmVsYXlfd2FrZXVwX3RpbWVyLCAwKTsKKyAJX3N0cF9yZWxheV9kYXRhLnRpbWVyLmV4cGlyZXMgPSBqaWZmaWVzICsgU1RQX1JFTEFZX1RJTUVSX0lOVEVSVkFMOworLQlfc3RwX3JlbGF5X2RhdGEudGltZXIuZnVuY3Rpb24gPSBfX3N0cF9yZWxheV93YWtldXBfdGltZXI7CistCV9zdHBfcmVsYXlfZGF0YS50aW1lci5kYXRhID0gMDsKKyAJYWRkX3RpbWVyKCZfc3RwX3JlbGF5X2RhdGEudGltZXIpOworIAlzbXBfbWIoKTsKKyB9CitkaWZmIC0tZ2l0IGEvcnVudGltZS90cmFuc3BvcnQvdHJhbnNwb3J0LmMgYi9ydW50aW1lL3RyYW5zcG9ydC90cmFuc3BvcnQuYworaW5kZXggMzQwMGYyMi4uMzIwZmQxOCAxMDA2NDQKKy0tLSBhL3J1bnRpbWUvdHJhbnNwb3J0L3RyYW5zcG9ydC5jCisrKysgYi9ydW50aW1lL3RyYW5zcG9ydC90cmFuc3BvcnQuYworQEAgLTMxMSw3ICszMTEsNyBAQCBzdGF0aWMgdm9pZCBfc3RwX2RldGFjaCh2b2lkKQorIH0KKyAKKyAKKy1zdGF0aWMgdm9pZCBfc3RwX2N0bF93b3JrX2NhbGxiYWNrKHVuc2lnbmVkIGxvbmcgdmFsKTsKKytzdGF0aWMgdm9pZCBfc3RwX2N0bF93b3JrX2NhbGxiYWNrKHN0cF90aW1lcl9jYWxsYmFja19wYXJhbWV0ZXJfdCB1bnVzZWQpOworIAorIC8qCisgICogQ2FsbGVkIHdoZW4gc3RhcGlvIG9wZW5zIHRoZSBjb250cm9sIGNoYW5uZWwuCitAQCAtMzIwLDEzICszMjAsMTIgQEAgc3RhdGljIHZvaWQgX3N0cF9hdHRhY2godm9pZCkKKyB7CisgCWRidWdfdHJhbnMoMSwgImF0dGFjaFxuIik7CisgCV9zdHBfcGlkID0gY3VycmVudC0+cGlkOworLSAgaWYgKF9zdHBfbmFtZXNwYWNlc19waWQgPCAxKQorLSAgICBfc3RwX25hbWVzcGFjZXNfcGlkID0gX3N0cF9waWQ7CisrCWlmIChfc3RwX25hbWVzcGFjZXNfcGlkIDwgMSkKKysJCV9zdHBfbmFtZXNwYWNlc19waWQgPSBfc3RwX3BpZDsKKyAJX3N0cF90cmFuc3BvcnRfZGF0YV9mc19vdmVyd3JpdGUoMCk7CistCWluaXRfdGltZXIoJl9zdHBfY3RsX3dvcmtfdGltZXIpOworKworKwl0aW1lcl9zZXR1cCgmX3N0cF9jdGxfd29ya190aW1lciwgX3N0cF9jdGxfd29ya19jYWxsYmFjaywgMCk7CisgCV9zdHBfY3RsX3dvcmtfdGltZXIuZXhwaXJlcyA9IGppZmZpZXMgKyBTVFBfQ1RMX1RJTUVSX0lOVEVSVkFMOworLQlfc3RwX2N0bF93b3JrX3RpbWVyLmZ1bmN0aW9uID0gX3N0cF9jdGxfd29ya19jYWxsYmFjazsKKy0JX3N0cF9jdGxfd29ya190aW1lci5kYXRhPSAwOworIAlhZGRfdGltZXIoJl9zdHBfY3RsX3dvcmtfdGltZXIpOworIH0KKyAKK0BAIC0zNDEsNyArMzQwLDcgQEAgc3RhdGljIHZvaWQgX3N0cF9hdHRhY2godm9pZCkKKyAgKglub3RpZmllZC4gUmVzY2hlZHVsZXMgaXRzZWxmIGlmIHNvbWVvbmUgaXMgc3RpbGwgYXR0YWNoZWQKKyAgKgl0byB0aGUgY21kIGNoYW5uZWwuCisgICovCistc3RhdGljIHZvaWQgX3N0cF9jdGxfd29ya19jYWxsYmFjayh1bnNpZ25lZCBsb25nIHZhbCkKKytzdGF0aWMgdm9pZCBfc3RwX2N0bF93b3JrX2NhbGxiYWNrKHN0cF90aW1lcl9jYWxsYmFja19wYXJhbWV0ZXJfdCB1bnVzZWQpCisgeworIAlpbnQgZG9faW8gPSAwOworIAl1bnNpZ25lZCBsb25nIGZsYWdzOworZGlmZiAtLWdpdCBhL3RhcHNldC10aW1lcnMuY3h4IGIvdGFwc2V0LXRpbWVycy5jeHgKK2luZGV4IDFhNDBiY2QuLjBhYjRkNjkgMTAwNjQ0CistLS0gYS90YXBzZXQtdGltZXJzLmN4eAorKysrIGIvdGFwc2V0LXRpbWVycy5jeHgKK0BAIC0xMjIsOSArMTIyLDEzIEBAIHRpbWVyX2Rlcml2ZWRfcHJvYmVfZ3JvdXA6OmVtaXRfbW9kdWxlX2RlY2xzIChzeXN0ZW10YXBfc2Vzc2lvbiYgcykKKyAgIHMub3AtPm5ld2xpbmUoLTEpIDw8ICJ9OyI7CisgICBzLm9wLT5uZXdsaW5lKCk7CisgCistICBzLm9wLT5uZXdsaW5lKCkgPDwgInN0YXRpYyB2b2lkIGVudGVyX3RpbWVyX3Byb2JlICh1bnNpZ25lZCBsb25nIHZhbCkgeyI7CisrICBzLm9wLT5uZXdsaW5lKCkgPDwgInN0YXRpYyB2b2lkIGVudGVyX3RpbWVyX3Byb2JlIChzdHBfdGltZXJfY2FsbGJhY2tfcGFyYW1ldGVyX3QgdmFsKSB7IjsKKysgIHMub3AtPm5ld2xpbmUoKSA8PCAiI2lmIGRlZmluZWQoVElNRVJfVFJBQ0VfRkxBR01BU0spIjsKKysgIHMub3AtPm5ld2xpbmUoMSkgPDwgInN0cnVjdCBzdGFwX3RpbWVyX3Byb2JlKiBzdHAgPSBjb250YWluZXJfb2YodmFsLCBzdHJ1Y3Qgc3RhcF90aW1lcl9wcm9iZSwgdGltZXJfbGlzdCk7IjsKKysgIHMub3AtPm5ld2xpbmUoLTEpIDw8ICIjZWxzZSI7CisgICBzLm9wLT5uZXdsaW5lKDEpIDw8ICJzdHJ1Y3Qgc3RhcF90aW1lcl9wcm9iZSogc3RwID0gJiBzdGFwX3RpbWVyX3Byb2JlcyBbdmFsXTsiOworLSAgcy5vcC0+bmV3bGluZSgpIDw8ICJpZiAoKGF0b21pY19yZWFkIChzZXNzaW9uX3N0YXRlKCkpID09IFNUQVBfU0VTU0lPTl9TVEFSVElORykgfHwiOworKyAgcy5vcC0+bmV3bGluZSgtMSkgPDwgIiNlbmRpZiI7CisrICBzLm9wLT5uZXdsaW5lKDEpIDw8ICJpZiAoKGF0b21pY19yZWFkIChzZXNzaW9uX3N0YXRlKCkpID09IFNUQVBfU0VTU0lPTl9TVEFSVElORykgfHwiOworICAgcy5vcC0+bmV3bGluZSgpIDw8ICIgICAgKGF0b21pY19yZWFkIChzZXNzaW9uX3N0YXRlKCkpID09IFNUQVBfU0VTU0lPTl9SVU5OSU5HKSkiOworICAgcy5vcC0+bmV3bGluZSgxKSA8PCAibW9kX3RpbWVyICgmIHN0cC0+dGltZXJfbGlzdCwgamlmZmllcyArICI7CisgICBlbWl0X2ludGVydmFsIChzLm9wKTsKK0BAIC0xNDgsOSArMTUyLDExIEBAIHRpbWVyX2Rlcml2ZWRfcHJvYmVfZ3JvdXA6OmVtaXRfbW9kdWxlX2luaXQgKHN5c3RlbXRhcF9zZXNzaW9uJiBzKQorICAgcy5vcC0+bmV3bGluZSgpIDw8ICJmb3IgKGk9MDsgaTwiIDw8IHByb2Jlcy5zaXplKCkgPDwgIjsgaSsrKSB7IjsKKyAgIHMub3AtPm5ld2xpbmUoMSkgPDwgInN0cnVjdCBzdGFwX3RpbWVyX3Byb2JlKiBzdHAgPSAmIHN0YXBfdGltZXJfcHJvYmVzIFtpXTsiOworICAgcy5vcC0+bmV3bGluZSgpIDw8ICJwcm9iZV9wb2ludCA9IHN0cC0+cHJvYmUtPnBwOyI7CistICBzLm9wLT5uZXdsaW5lKCkgPDwgImluaXRfdGltZXIgKCYgc3RwLT50aW1lcl9saXN0KTsiOworLSAgcy5vcC0+bmV3bGluZSgpIDw8ICJzdHAtPnRpbWVyX2xpc3QuZnVuY3Rpb24gPSAmIGVudGVyX3RpbWVyX3Byb2JlOyI7CisrCisrICBzLm9wLT5uZXdsaW5lKCkgPDwgInRpbWVyX3NldHVwICgmIHN0cC0+dGltZXJfbGlzdCwgZW50ZXJfdGltZXJfcHJvYmUsIDApOyI7CisrICBzLm9wLT5uZXdsaW5lKCkgPDwgIiNpZiAhZGVmaW5lZChUSU1FUl9UUkFDRV9GTEFHTUFTSykiOworICAgcy5vcC0+bmV3bGluZSgpIDw8ICJzdHAtPnRpbWVyX2xpc3QuZGF0YSA9IGk7IjsgLy8gTkI6IGltcG9ydGFudCEKKysgIHMub3AtPm5ld2xpbmUoKSA8PCAiI2VuZGlmIjsKKyAgIC8vIGNvcHkgdGltZXIgcmVuZXcgY2FsY3VsYXRpb25zIGZyb20gYWJvdmUgOi0oCisgICBzLm9wLT5uZXdsaW5lKCkgPDwgInN0cC0+dGltZXJfbGlzdC5leHBpcmVzID0gamlmZmllcyArICI7CisgICBlbWl0X2ludGVydmFsIChzLm9wKTsKK2RpZmYgLS1naXQgYS90YXBzZXQvbGludXgvc2NzaS5zdHAgYi90YXBzZXQvbGludXgvc2NzaS5zdHAKK2luZGV4IDQ0ZjY4NmMuLjM1Nzc5NDIgMTAwNjQ0CistLS0gYS90YXBzZXQvbGludXgvc2NzaS5zdHAKKysrKyBiL3RhcHNldC9saW51eC9zY3NpLnN0cAorQEAgLTE0LDcgKzE0LDcgQEAKKyAjaW5jbHVkZSA8c2NzaS9zY3NpX2NtbmQuaD4KKyAjaW5jbHVkZSA8c2NzaS9zY3NpX2RldmljZS5oPgorICNpbmNsdWRlIDxzY3NpL3Njc2lfaG9zdC5oPgorLSNpbmNsdWRlIDxsaW51eC90aW1lci5oPgorKyNpbmNsdWRlICJsaW51eC90aW1lcl9jb21wYXRpYmlsaXR5LmgiCisgI2luY2x1ZGUgPGxpbnV4L2Jsa2Rldi5oPgorICV9CisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1GaXhlcy1mb3ItZ2NjLTgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtRml4ZXMtZm9yLWdjYy04LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExYjBiZmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtRml4ZXMtZm9yLWdjYy04LnBhdGNoCkBAIC0wLDAgKzEsMjE1IEBACitGcm9tIDRmZmUwMGYxZDllYWMzMzJkOTI4ZjdkYzAxZmUyNTBkYzMyYjFiYjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTdGFuIENveCA8c2NveEByZWRoYXQuY29tPgorRGF0ZTogVHVlLCAxMyBGZWIgMjAxOCAyMjozODowMyAtMDUwMAorU3ViamVjdDogW1BBVENIXSBGaXhlcyBmb3IgZ2NjIDgKKworKiBpbmNsdWRlcy9zeXMvc2R0LmggKF9fU0RUX0NPTkRfU0lHTkVEKTogIEFkZCBDVCwgY2FzdCB0eXBlIGFyZ3VtZW50CisKK0F1dGhvcjogV2lsbCBDb2hlbiA8d2NvaGVuLnJlZGhhdC5jb20+CisKKyogc3RhcC1zZXJ2ZXJkLmN4eCAoZ2VuZXJhdGVfbW9rLCBoYW5kbGVSZXF1ZXN0LCBoYW5kbGVfY29ubmVjdGlvbik6CisgIENhdGNoIGZvcm1hdCBvdmVyZmxvdworCisqIHRyYW5zbGF0ZS5jeHggKHRyYW5zbGF0ZV9wYXNzKTogVXNlIHJlZiBpbiBjYXRjaC4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworIGluY2x1ZGVzL3N5cy9zZHQuaCB8IDIwICsrKysrKysrLS0tLS0tLS0KKyBzdGFwLXNlcnZlcmQuY3h4ICAgfCA2NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KKyB0cmFuc2xhdGUuY3h4ICAgICAgfCAgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgNzAgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9pbmNsdWRlcy9zeXMvc2R0LmggYi9pbmNsdWRlcy9zeXMvc2R0LmgKK2luZGV4IDk0MGY3NDQ4My4uYzBjNWE0OTJjIDEwMDY0NAorLS0tIGEvaW5jbHVkZXMvc3lzL3NkdC5oCisrKysgYi9pbmNsdWRlcy9zeXMvc2R0LmgKK0BAIC0xMTksOCArMTE5LDggQEAgc3RydWN0IF9fc2R0X3R5cGUKKyAgIAorICNkZWZpbmUgX19TRFRfQUxXQVlTX1NJR05FRChUKSBcCisgdGVtcGxhdGU8PiBzdHJ1Y3QgX19zZHRfdHlwZTxUPiB7IHN0YXRpYyBjb25zdCBib29sIF9fc2R0X3NpZ25lZCA9IHRydWU7IH07CistI2RlZmluZSBfX1NEVF9DT05EX1NJR05FRChUKSBcCistdGVtcGxhdGU8PiBzdHJ1Y3QgX19zZHRfdHlwZTxUPiB7IHN0YXRpYyBjb25zdCBib29sIF9fc2R0X3NpZ25lZCA9ICgoVCkoLTEpIDwgMSk7IH07CisrI2RlZmluZSBfX1NEVF9DT05EX1NJR05FRChULENUKQkJCQkJCVwKKyt0ZW1wbGF0ZTw+IHN0cnVjdCBfX3NkdF90eXBlPFQ+IHsgc3RhdGljIGNvbnN0IGJvb2wgX19zZHRfc2lnbmVkID0gKChDVCkoLTEpIDwgMSk7IH07CisgX19TRFRfQUxXQVlTX1NJR05FRChzaWduZWQgY2hhcikKKyBfX1NEVF9BTFdBWVNfU0lHTkVEKHNob3J0KQorIF9fU0RUX0FMV0FZU19TSUdORUQoaW50KQorQEAgLTE0MSwxNCArMTQxLDE0IEBAIF9fU0RUX0FMV0FZU19TSUdORUQoY29uc3Qgdm9sYXRpbGUgc2hvcnQpCisgX19TRFRfQUxXQVlTX1NJR05FRChjb25zdCB2b2xhdGlsZSBpbnQpCisgX19TRFRfQUxXQVlTX1NJR05FRChjb25zdCB2b2xhdGlsZSBsb25nKQorIF9fU0RUX0FMV0FZU19TSUdORUQoY29uc3Qgdm9sYXRpbGUgbG9uZyBsb25nKQorLV9fU0RUX0NPTkRfU0lHTkVEKGNoYXIpCistX19TRFRfQ09ORF9TSUdORUQod2NoYXJfdCkKKy1fX1NEVF9DT05EX1NJR05FRCh2b2xhdGlsZSBjaGFyKQorLV9fU0RUX0NPTkRfU0lHTkVEKHZvbGF0aWxlIHdjaGFyX3QpCistX19TRFRfQ09ORF9TSUdORUQoY29uc3QgY2hhcikKKy1fX1NEVF9DT05EX1NJR05FRChjb25zdCB3Y2hhcl90KQorLV9fU0RUX0NPTkRfU0lHTkVEKGNvbnN0IHZvbGF0aWxlIGNoYXIpCistX19TRFRfQ09ORF9TSUdORUQoY29uc3Qgdm9sYXRpbGUgd2NoYXJfdCkKKytfX1NEVF9DT05EX1NJR05FRChjaGFyLCBjaGFyKQorK19fU0RUX0NPTkRfU0lHTkVEKHdjaGFyX3QsIHdjaGFyX3QpCisrX19TRFRfQ09ORF9TSUdORUQodm9sYXRpbGUgY2hhciwgY2hhcikKKytfX1NEVF9DT05EX1NJR05FRCh2b2xhdGlsZSB3Y2hhcl90LCB3Y2hhcl90KQorK19fU0RUX0NPTkRfU0lHTkVEKGNvbnN0IGNoYXIsIGNoYXIpCisrX19TRFRfQ09ORF9TSUdORUQoY29uc3Qgd2NoYXJfdCwgd2NoYXJfdCkKKytfX1NEVF9DT05EX1NJR05FRChjb25zdCB2b2xhdGlsZSBjaGFyLCBjaGFyKQorK19fU0RUX0NPTkRfU0lHTkVEKGNvbnN0IHZvbGF0aWxlIHdjaGFyX3QsIHdjaGFyX3QpCisgI2lmIGRlZmluZWQgKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPiA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID49IDQpKQorIC8qIF9fU0RUX0NPTkRfU0lHTkVEKGNoYXIxNl90KSAqLworIC8qIF9fU0RUX0NPTkRfU0lHTkVEKGNoYXIzMl90KSAqLworZGlmZiAtLWdpdCBhL3N0YXAtc2VydmVyZC5jeHggYi9zdGFwLXNlcnZlcmQuY3h4CitpbmRleCA3Y2Y3NmM2MTcuLjQxZjc3ZWU5ZSAxMDA2NDQKKy0tLSBhL3N0YXAtc2VydmVyZC5jeHgKKysrKyBiL3N0YXAtc2VydmVyZC5jeHgKK0BAIC0xNjA3LDYgKzE2MDcsNyBAQCBnZW5lcmF0ZV9tb2soc3RyaW5nICZtb2tfZmluZ2VycHJpbnQpCisgICBjaGFyIHRtcGRpcltQQVRIX01BWF0gPSB7ICdcMCcgfTsKKyAgIHN0cmluZyBwdWJsaWNfY2VydF9wYXRoLCBwcml2YXRlX2NlcnRfcGF0aCwgZGVzdGRpcjsKKyAgIG1vZGVfdCBvbGRfdW1hc2s7CisrICBpbnQgcmV0bGVuOworIAorICAgbW9rX2ZpbmdlcnByaW50LmNsZWFyICgpOworIAorQEAgLTE2MzEsNyArMTYzMiwxNCBAQCBnZW5lcmF0ZV9tb2soc3RyaW5nICZtb2tfZmluZ2VycHJpbnQpCisgICAgIH0KKyAKKyAgIC8vIE1ha2UgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRvIHN0b3JlIHJlc3VsdHMgaW4uCistICBzbnByaW50ZiAodG1wZGlyLCBQQVRIX01BWCwgIiVzL3N0YXAtc2VydmVyLlhYWFhYWCIsIG1va19wYXRoLmNfc3RyICgpKTsKKysgIHJldGxlbiA9IHNucHJpbnRmICh0bXBkaXIsIFBBVEhfTUFYLCAiJXMvc3RhcC1zZXJ2ZXIuWFhYWFhYIiwgbW9rX3BhdGguY19zdHIgKCkpOworKyAgaWYgKHJldGxlbiA8IDAgfHwgcmV0bGVuID49IFBBVEhfTUFYKQorKyAgICB7CisrICAgICAgc2VydmVyX2Vycm9yIChfRigiQ291bGQgbm90IGNyZWF0ZSAlcyBuYW1lIiwgInRlbXBvcmFyeSBkaXJlY3RvcnkiKSk7CisrICAgICAgdG1wZGlyWzBdID0gJ1wwJzsKKysgICAgICBnb3RvIGNsZWFudXA7CisrICAgIH0KKysKKyAgIGlmIChta2R0ZW1wICh0bXBkaXIpID09IE5VTEwpCisgICAgIHsKKyAgICAgICBzZXJ2ZXJfZXJyb3IgKF9GKCJDb3VsZCBub3QgY3JlYXRlIHRlbXBvcmFyeSBkaXJlY3RvcnkgJXM6ICVzIiwgdG1wZGlyLCAKK0BAIC0xNzA0LDYgKzE3MTIsNyBAQCBoYW5kbGVSZXF1ZXN0IChjb25zdCBzdHJpbmcgJnJlcXVlc3REaXJOYW1lLCBjb25zdCBzdHJpbmcgJnJlc3BvbnNlRGlyTmFtZSwgc3RyaQorICAgdW5zaWduZWQgdTsKKyAgIHVuc2lnbmVkIGk7CisgICBGSUxFKiBmOworKyAgaW50IHJldGxlbjsKKyAKKyAgIC8vIFNhdmUgdGhlIHNlcnZlciB2ZXJzaW9uLiBEbyB0aGlzIGVhcmx5LCBzbyB0aGUgY2xpZW50IGtub3dzIHdoYXQgdmVyc2lvbiBvZiB0aGUgc2VydmVyCisgICAvLyBpdCBpcyBkZWFsaW5nIHdpdGgsIGV2ZW4gaWYgdGhlIHJlcXVlc3QgaXMgbm90IGZ1bGx5IGNvbXBsZXRlZC4KK0BAIC0xNzgyLDcgKzE3OTEsMTIgQEAgaGFuZGxlUmVxdWVzdCAoY29uc3Qgc3RyaW5nICZyZXF1ZXN0RGlyTmFtZSwgY29uc3Qgc3RyaW5nICZyZXNwb25zZURpck5hbWUsIHN0cmkKKyAgICAgICBzdHJ1Y3Qgc3RhdCBzdDsKKyAgICAgICBjaGFyICphcmc7CisgCistICAgICAgc25wcmludGYgKHN0YXBhcmdmaWxlLCBQQVRIX01BWCwgIiVzL2FyZ3YlZCIsIHJlcXVlc3REaXJOYW1lLmNfc3RyICgpLCBpKTsKKysgICAgICByZXRsZW4gPSBzbnByaW50ZiAoc3RhcGFyZ2ZpbGUsIFBBVEhfTUFYLCAiJXMvYXJndiVkIiwgcmVxdWVzdERpck5hbWUuY19zdHIgKCksIGkpOworKyAgICAgIGlmIChyZXRsZW4gPCAwIHx8IHJldGxlbiA+PSBQQVRIX01BWCkKKysgICAgICAgIHsKKysgICAgICAgICAgc2VydmVyX2Vycm9yIChfRigiRXJyb3IgY3JlYXRpbmcgJXMgbmFtZSIsICJwYXRoIikpOworKyAgICAgICAgICByZXR1cm47CisrICAgICAgICB9CisgCisgICAgICAgcmMgPSBzdGF0KHN0YXBhcmdmaWxlLCAmIHN0KTsKKyAgICAgICBpZiAocmMpIGJyZWFrOworQEAgLTE4ODgsNyArMTkwMiwxNSBAQCBoYW5kbGVSZXF1ZXN0IChjb25zdCBzdHJpbmcgJnJlcXVlc3REaXJOYW1lLCBjb25zdCBzdHJpbmcgJnJlc3BvbnNlRGlyTmFtZSwgc3RyaQorICAgICB7CisgICAgICAgZ2xvYl90IGdsb2JiZXI7CisgICAgICAgY2hhciBwYXR0ZXJuW1BBVEhfTUFYXTsKKy0gICAgICBzbnByaW50ZiAocGF0dGVybiwgUEFUSF9NQVgsICIlcy8qLmtvIiwgbmV3X3N0YXB0bXBkaXIuY19zdHIoKSk7CisrICAgICAgaW50IHJldGxlbjsKKysKKysgICAgICByZXRsZW4gPSBzbnByaW50ZiAocGF0dGVybiwgUEFUSF9NQVgsICIlcy8qLmtvIiwgbmV3X3N0YXB0bXBkaXIuY19zdHIoKSk7CisrICAgICAgaWYgKHJldGxlbiA8IDAgfHwgcmV0bGVuID49IFBBVEhfTUFYKQorKyAgICAgICAgeworKyAgICAgICAgICBzZXJ2ZXJfZXJyb3IgKF9GKCJFcnJvciBjcmVhdGluZyAlcyBuYW1lIiwgInBhdHRlcm4iKSk7CisrICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysKKyAgICAgICByYyA9IGdsb2IgKHBhdHRlcm4sIEdMT0JfRVJSLCBOVUxMLCAmZ2xvYmJlcik7CisgICAgICAgaWYgKHJjKQorICAgICAgICAgc2VydmVyX2Vycm9yIChfRigiVW5hYmxlIHRvIGZpbmQgYSBtb2R1bGUgaW4gJXMiLCBuZXdfc3RhcHRtcGRpci5jX3N0cigpKSk7CitAQCAtMjE2NCw2ICsyMTg2LDcgQEAgaGFuZGxlX2Nvbm5lY3Rpb24gKHZvaWQgKmFyZykKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5IGZvciBlYWNoIGNvbm5lY3Rpb24uKi8KKyAgIHZlY3RvcjxzdHJpbmc+ICAgICBhcmd2OworICAgUFJJbnQzMiAgICAgICAgICAgIGJ5dGVzUmVhZDsKKysgIGludAkJICAgICByZXRsZW47CisgCisgICAvKiBEZXRhdGNoIHRvIGF2b2lkIGEgbWVtb3J5IGxlYWsgKi8KKyAgIGlmKG1heF90aHJlYWRzID4gMCkKK0BAIC0yMjEzLDcgKzIyMzYsMTMgQEAgaGFuZGxlX2Nvbm5lY3Rpb24gKHZvaWQgKmFyZykKKyAjZW5kaWYKKyAKKyAgIHNlY1N0YXR1cyA9IFNFQ0ZhaWx1cmU7CistICBzbnByaW50Zih0bXBkaXIsIFBBVEhfTUFYLCAiJXMvc3RhcC1zZXJ2ZXIuWFhYWFhYIiwgZ2V0ZW52KCJUTVBESVIiKSA/OiAiL3RtcCIpOworKyAgcmV0bGVuID0gc25wcmludGYodG1wZGlyLCBQQVRIX01BWCwgIiVzL3N0YXAtc2VydmVyLlhYWFhYWCIsIGdldGVudigiVE1QRElSIikgPzogIi90bXAiKTsKKysgIGlmIChyZXRsZW4gPCAwIHx8IHJldGxlbiA+PSBQQVRIX01BWCkKKysgICAgeworKyAgICAgIHNlcnZlcl9lcnJvciAoX0YoIkVycm9yIGNyZWF0aW5nICVzIG5hbWUiLCAidGVtcG9yYXJ5IGRpcmVjdG9yeSIpKTsKKysgICAgICB0bXBkaXJbMF09MDsgLyogcHJldmVudCAvYmluL3JtICovCisrICAgICAgZ290byBjbGVhbnVwOworKyAgICB9CisgICByYzEgPSBta2R0ZW1wKHRtcGRpcik7CisgICBpZiAoISByYzEpCisgICAgIHsKK0BAIC0yMjIzLDkgKzIyNTIsMjAgQEAgaGFuZGxlX2Nvbm5lY3Rpb24gKHZvaWQgKmFyZykKKyAgICAgfQorIAorICAgLyogQ3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGVzIG5hbWVzIGFuZCBkaXJlY3Rvcmllcy4gICovCistICBzbnByaW50ZiAocmVxdWVzdEZpbGVOYW1lLCBQQVRIX01BWCwgIiVzL3JlcXVlc3QuemlwIiwgdG1wZGlyKTsKKysgIHJldGxlbiA9IHNucHJpbnRmIChyZXF1ZXN0RmlsZU5hbWUsIFBBVEhfTUFYLCAiJXMvcmVxdWVzdC56aXAiLCB0bXBkaXIpOworKyAgaWYgKHJldGxlbiA8IDAgfHwgcmV0bGVuID49IFBBVEhfTUFYKQorKyAgICB7CisrICAgICAgc2VydmVyX2Vycm9yIChfRigiRXJyb3IgY3JlYXRpbmcgJXMgbmFtZSIsICJyZXF1ZXN0LnppcCBwYXRoIikpOworKyAgICAgIGdvdG8gY2xlYW51cDsKKysgICAgfQorKworKyAgcmV0bGVuID0gc25wcmludGYgKHJlcXVlc3REaXJOYW1lLCBQQVRIX01BWCwgIiVzL3JlcXVlc3QiLCB0bXBkaXIpOworKyAgaWYgKHJldGxlbiA8IDAgfHwgcmV0bGVuID49IFBBVEhfTUFYKQorKyAgICB7CisrICAgICAgc2VydmVyX2Vycm9yIChfRigiRXJyb3IgY3JlYXRpbmcgJXMgbmFtZSIsICJyZXF1ZXN0IGRpcmVjdG9yeSBwYXRoIikpOworKyAgICAgIGdvdG8gY2xlYW51cDsKKysgICAgfQorIAorLSAgc25wcmludGYgKHJlcXVlc3REaXJOYW1lLCBQQVRIX01BWCwgIiVzL3JlcXVlc3QiLCB0bXBkaXIpOworICAgcmMgPSBta2RpcihyZXF1ZXN0RGlyTmFtZSwgMDcwMCk7CisgICBpZiAocmMpCisgICAgIHsKK0BAIC0yMjMzLDcgKzIyNzMsMTMgQEAgaGFuZGxlX2Nvbm5lY3Rpb24gKHZvaWQgKmFyZykKKyAgICAgICBnb3RvIGNsZWFudXA7CisgICAgIH0KKyAKKy0gIHNucHJpbnRmIChyZXNwb25zZURpck5hbWUsIFBBVEhfTUFYLCAiJXMvcmVzcG9uc2UiLCB0bXBkaXIpOworKyAgcmV0bGVuID0gc25wcmludGYgKHJlc3BvbnNlRGlyTmFtZSwgUEFUSF9NQVgsICIlcy9yZXNwb25zZSIsIHRtcGRpcik7CisrICBpZiAocmV0bGVuIDwgMCB8fCByZXRsZW4gPj0gUEFUSF9NQVgpCisrICAgIHsKKysgICAgICBzZXJ2ZXJfZXJyb3IgKF9GKCJFcnJvciBjcmVhdGluZyAlcyBuYW1lIiwgInJlc3BvbnNlIGRpcmVjdG9yeSBwYXRoIikpOworKyAgICAgIGdvdG8gY2xlYW51cDsKKysgICAgfQorKworICAgcmMgPSBta2RpcihyZXNwb25zZURpck5hbWUsIDA3MDApOworICAgaWYgKHJjKQorICAgICB7CitAQCAtMjI0Myw3ICsyMjg5LDEyIEBAIGhhbmRsZV9jb25uZWN0aW9uICh2b2lkICphcmcpCisgICAvLyBTZXQgdGhpcyBlYXJseSwgc2luY2UgaXQgZ2V0cyB1c2VkIGZvciBlcnJvcnMgdG8gYmUgcmV0dXJuZWQgdG8gdGhlIGNsaWVudC4KKyAgIHN0YXBzdGRlcnIgPSBzdHJpbmcocmVzcG9uc2VEaXJOYW1lKSArICIvc3RkZXJyIjsKKyAKKy0gIHNucHJpbnRmIChyZXNwb25zZUZpbGVOYW1lLCBQQVRIX01BWCwgIiVzL3Jlc3BvbnNlLnppcCIsIHRtcGRpcik7CisrICByZXRsZW4gPSBzbnByaW50ZiAocmVzcG9uc2VGaWxlTmFtZSwgUEFUSF9NQVgsICIlcy9yZXNwb25zZS56aXAiLCB0bXBkaXIpOworKyAgaWYgKHJldGxlbiA8IDAgfHwgcmV0bGVuID49IFBBVEhfTUFYKQorKyAgICB7CisrICAgICAgc2VydmVyX2Vycm9yIChfRigiRXJyb3IgY3JlYXRpbmcgJXMgbmFtZSIsICJyZXNwb25zZS56aXAgcGF0aCIpKTsKKysgICAgICBnb3RvIGNsZWFudXA7CisrICAgIH0KKyAKKyAgIC8qIFJlYWQgZGF0YSBmcm9tIHRoZSBzb2NrZXQuCisgICAgKiBJZiB0aGUgdXNlciBpcyByZXF1ZXN0aW5nL3JlcXVpcmluZyBhdXRoZW50aWNhdGlvbiwgYXV0aGVudGljYXRlCitkaWZmIC0tZ2l0IGEvdHJhbnNsYXRlLmN4eCBiL3RyYW5zbGF0ZS5jeHgKK2luZGV4IDEyNDBhODBlYy4uNGFkZTA2ZmRkIDEwMDY0NAorLS0tIGEvdHJhbnNsYXRlLmN4eAorKysrIGIvdHJhbnNsYXRlLmN4eAorQEAgLTc4NjAsNyArNzg2MCw3IEBAIHRyYW5zbGF0ZV9wYXNzIChzeXN0ZW10YXBfc2Vzc2lvbiYgcykKKyAJICBpZiAodmVyc2lvbnMuc2l6ZSgpID49IDMgJiYgcy52ZXJib3NlID4gMSkKKyAJICAgIGNsb2cgPDwgX0YoImlnbm9yaW5nIGV4dHJhIHBhcnRzIG9mIGNvbXBhdCB2ZXJzaW9uOiAlcyIsIHMuY29tcGF0aWJsZS5jX3N0cigpKSA8PCBlbmRsOworIAl9CistICAgICAgY2F0Y2ggKGNvbnN0IHJ1bnRpbWVfZXJyb3IpCisrICAgICAgY2F0Y2ggKGNvbnN0IHJ1bnRpbWVfZXJyb3ImKQorIAl7CisgCSAgdGhyb3cgU0VNQU5USUNfRVJST1IoX0YoInBhcnNlIGVycm9yIGluIGNvbXBhdGliaWxpdHkgdmVyc2lvbjogJXMiLCBzLmNvbXBhdGlibGUuY19zdHIoKSkpOworIAl9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtTWFrZS1zdXJlLXN5c3Jvb3QtcGF0aHMtZG9uLXQtZW5kLXdpdGgtYS1zbGFzaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1NYWtlLXN1cmUtc3lzcm9vdC1wYXRocy1kb24tdC1lbmQtd2l0aC1hLXNsYXNoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjZDkwMzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtTWFrZS1zdXJlLXN5c3Jvb3QtcGF0aHMtZG9uLXQtZW5kLXdpdGgtYS1zbGFzaC5wYXRjaApAQCAtMCwwICsxLDEyOCBAQAorRnJvbSA0MWVmYWQwNDczMGJlODk4ODlkMTQ4MzcxOWY5YTZjOTM5NmRjMjUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGF2aWQgU21pdGggPGRzbWl0aEByZWRoYXQuY29tPgorRGF0ZTogV2VkLCAxNCBNYXIgMjAxOCAxNzowNToyNSAtMDUwMAorU3ViamVjdDogW1BBVENIXSBNYWtlIHN1cmUgc3lzcm9vdCBwYXRocyBkb24ndCBlbmQgd2l0aCBhIHNsYXNoLgorCisqIHNlc3Npb24uY3h4IChwYXJzZV9jbWRsaW5lKTogTWFrZSBzdXJlIGEgc3lzcm9vdCBwYXRoIGRvZXMgbm90IGVuZCB3aXRoCisgIGEgJy8nLCBzaW5jZSB3ZSBidWlsZCBwYXRocyBsaWtlOiBzeXNyb290ICsgIi9saWIvbW9kdWxlcyIuIElmIHRoZQorICBzeXNyb290IHBhdGggZW5kcyB3aXRoIGEgJy8nLCB3ZSBlbmQgdXAgd2l0aCBwYXRocyBsaWtlCisgICcvU1lTUk9PVC8vbGliL21vZHVsZXMnLgorICAoc2V0dXBfa2VybmVsX3JlbGVhc2UpOiBUYWtlIGEgc3RyaW5nIHBhcmFtZXRlciwgbm90IGEgY2hhcmFjdGVyIHBvaW50ZXIuCisqIHNlc3Npb24uaDogVXBkYXRlIHNldHVwX2tlcm5lbF9yZWxlYXNlKCkgcHJvdG90eXBlLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KKy0tLQorIHNlc3Npb24uY3h4IHwgMzQgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQorIHNlc3Npb24uaCAgIHwgIDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK0luZGV4OiBnaXQvc2Vzc2lvbi5jeHgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zZXNzaW9uLmN4eAorKysrIGdpdC9zZXNzaW9uLmN4eAorQEAgLTcyMiw2ICs3MjIsOSBAQCBzeXN0ZW10YXBfc2Vzc2lvbjo6cGFyc2VfY21kbGluZSAoaW50IGFyCisgICBjbGllbnRfb3B0aW9uc19kaXNhbGxvd2VkX2Zvcl91bnByaXZpbGVnZWQgPSAiIjsKKyAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBhZGRpdGlvbmFsX3Vud2luZHN5bV9tb2R1bGVzOworICAgc3RydWN0IHJsaW1pdCBvdXJfcmxpbWl0OworKyAgYm9vbCBzeXNyb290X29wdGlvbl9zZWVuID0gZmFsc2U7CisrICBzdHJpbmcga2VybmVsX3JlbGVhc2VfdmFsdWU7CisrCisgICB3aGlsZSAodHJ1ZSkKKyAgICAgeworICAgICAgIGNoYXIgKiBudW1fZW5kcHRyOworQEAgLTg4Nyw3ICs4OTAsNyBAQCBzeXN0ZW10YXBfc2Vzc2lvbjo6cGFyc2VfY21kbGluZSAoaW50IGFyCisgCSAgICAvLyBOb3RlIHRoYXQgJy0nIG11c3QgY29tZSBsYXN0IGluIGEgcmVnZXggYnJhY2tldCBleHByZXNzaW9uLgorICAgICAgICAgICAgIGFzc2VydF9yZWdleHBfbWF0Y2goIi1yIHBhcmFtZXRlciBmcm9tIGNsaWVudCIsIG9wdGFyZywgIl5bYS16MC05Xy4rLV0rJCIpOworIAkgIHNlcnZlcl9hcmdzLnB1c2hfYmFjayAoc3RyaW5nICgiLSIpICsgKGNoYXIpZ3JjICsgb3B0YXJnKTsKKy0gICAgICAgICAgc2V0dXBfa2VybmVsX3JlbGVhc2Uob3B0YXJnKTsKKysJICBrZXJuZWxfcmVsZWFzZV92YWx1ZSA9IG9wdGFyZzsKKyAgICAgICAgICAgYnJlYWs7CisgCisgICAgICAgICBjYXNlICdhJzoKK0BAIC0xNDczLDcgKzE0NzYsNyBAQCBzeXN0ZW10YXBfc2Vzc2lvbjo6cGFyc2VfY21kbGluZSAoaW50IGFyCisgCSAgaWYgKGNsaWVudF9vcHRpb25zKSB7CisgCSAgICAgIGNlcnIgPDwgX0YoIkVSUk9SOiAlcyBpbnZhbGlkIHdpdGggJXMiLCAiLS1zeXNyb290IiwgIi0tY2xpZW50LW9wdGlvbnMiKSA8PCBlbmRsOworIAkgICAgICByZXR1cm4gMTsKKy0JICB9IGVsc2UgaWYgKCFzeXNyb290LmVtcHR5KCkpIHsKKysJICB9IGVsc2UgaWYgKHN5c3Jvb3Rfb3B0aW9uX3NlZW4pIHsKKyAJICAgICAgY2VyciA8PCAiRVJST1I6IG11bHRpcGxlIC0tc3lzcm9vdCBvcHRpb25zIG5vdCBzdXBwb3J0ZWQiIDw8IGVuZGw7CisgCSAgICAgIHJldHVybiAxOworIAkgIH0gZWxzZSB7CitAQCAtMTQ4NywxMSArMTQ5MCwxNyBAQCBzeXN0ZW10YXBfc2Vzc2lvbjo6cGFyc2VfY21kbGluZSAoaW50IGFyCisgCisgCSAgICAgIHN5c3Jvb3QgPSBzdHJpbmcoc3BhdGgpOworIAkgICAgICBmcmVlIChzcGF0aCk7CistCSAgICAgIGlmIChzeXNyb290W3N5c3Jvb3Quc2l6ZSgpIC0gMV0gIT0gJy8nKQorLQkJICBzeXNyb290LmFwcGVuZCgiLyIpOworIAorLQkgICAgICBicmVhazsKKysJICAgICAgLy8gV2UgZG8gcGF0aCBjcmVhdGlvbiBsaWtlIHRoaXM6CisrCSAgICAgIC8vICAgc3lzcm9vdCArICIvbGliL21vZHVsZXMiCisrCSAgICAgIC8vIFNvLCB3ZSBkb24ndCB3YW50IHRoZSBzeXNyb290IHBhdGggdG8gZW5kIHdpdGggYSAnLycsCisrCSAgICAgIC8vIG90aGVyd2lzZSB3ZSdsbCBlbmQgdXAgd2l0aCAnL2Zvby8vbGliL21vZHVsZXMnLgorKwkgICAgICBpZiAoc3lzcm9vdC5iYWNrKCkgPT0gJy8nKSB7CisrCQkgIHN5c3Jvb3QucG9wX2JhY2soKTsKKysJICAgICAgfQorIAkgIH0KKysJICBzeXNyb290X29wdGlvbl9zZWVuID0gdHJ1ZTsKKysJICBicmVhazsKKyAKKyAJY2FzZSBMT05HX09QVF9TWVNFTlY6CisgCSAgaWYgKGNsaWVudF9vcHRpb25zKSB7CitAQCAtMTUwMSw3ICsxNTEwLDcgQEAgc3lzdGVtdGFwX3Nlc3Npb246OnBhcnNlX2NtZGxpbmUgKGludCBhcgorIAkgICAgICBzdHJpbmcgc3lzZW52X3N0ciA9IG9wdGFyZzsKKyAJICAgICAgc3RyaW5nIHZhbHVlOworIAkgICAgICBzaXplX3QgcG9zOworLQkgICAgICBpZiAoc3lzcm9vdC5lbXB0eSgpKSB7CisrCSAgICAgIGlmICghIHN5c3Jvb3Rfb3B0aW9uX3NlZW4pIHsKKyAJCSAgY2VyciA8PCAiRVJST1I6IC0tc3lzZW52IG11c3QgZm9sbG93IC0tc3lzcm9vdCIgPDwgZW5kbDsKKyAJCSAgcmV0dXJuIDE7CisgCSAgICAgIH0KK0BAIC0xNjQ2LDYgKzE2NTUsMTUgQEAgc3lzdGVtdGFwX3Nlc3Npb246OnBhcnNlX2NtZGxpbmUgKGludCBhcgorIAl9CisgICAgIH0KKyAKKysgIGlmICghIGtlcm5lbF9yZWxlYXNlX3ZhbHVlLmVtcHR5KCkpCisrICB7CisrICAgICAgc2V0dXBfa2VybmVsX3JlbGVhc2Uoa2VybmVsX3JlbGVhc2VfdmFsdWUpOworKyAgfQorKyAgZWxzZSBpZiAoISBzeXNyb290LmVtcHR5KCkpCisrICB7CisrICAgICAga2VybmVsX2J1aWxkX3RyZWUgPSBzeXNyb290ICsgIi9saWIvbW9kdWxlcy8iICsga2VybmVsX3JlbGVhc2UgICsgIi9idWlsZCI7CisrICB9CisrCisgICByZXR1cm4gMDsKKyB9CisgCitAQCAtMjE1Miw3ICsyMTcwLDcgQEAgdm9pZCBzeXN0ZW10YXBfc2Vzc2lvbjo6aW5zZXJ0X2xvYWRlZF9tbworIH0KKyAKKyB2b2lkCistc3lzdGVtdGFwX3Nlc3Npb246OnNldHVwX2tlcm5lbF9yZWxlYXNlIChjb25zdCBjaGFyKiBrc3RyKSAKKytzeXN0ZW10YXBfc2Vzc2lvbjo6c2V0dXBfa2VybmVsX3JlbGVhc2UgKGNvbnN0IHN0cmluZyYga3N0cikgCisgeworICAgLy8gU29tZXRpbWVzIHdlIG1heSBnZXQgZHVwZXMgaGVyZS4uLiBlLmcuIGEgc2VydmVyIG1heSBoYXZlIGEgZnVsbAorICAgLy8gLXIgL3BhdGgvdG8va2VybmVsIGZvbGxvd2VkIGJ5IGEgY2xpZW50J3MgLXIga2VybmVsLgorQEAgLTIxODMsNyArMjIwMSw3IEBAIHN5c3RlbXRhcF9zZXNzaW9uOjpzZXR1cF9rZXJuZWxfcmVsZWFzZQorICAgZWxzZQorICAgICB7CisgICAgICAgdXBkYXRlX3JlbGVhc2Vfc3lzcm9vdCA9IHRydWU7CistICAgICAga2VybmVsX3JlbGVhc2UgPSBzdHJpbmcgKGtzdHIpOworKyAgICAgIGtlcm5lbF9yZWxlYXNlID0ga3N0cjsKKyAgICAgICBpZiAoIWtlcm5lbF9yZWxlYXNlLmVtcHR5KCkpCisgICAgICAgICBrZXJuZWxfYnVpbGRfdHJlZSA9ICIvbGliL21vZHVsZXMvIiArIGtlcm5lbF9yZWxlYXNlICsgIi9idWlsZCI7CisgCitJbmRleDogZ2l0L3Nlc3Npb24uaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3Nlc3Npb24uaAorKysrIGdpdC9zZXNzaW9uLmgKK0BAIC0xNDQsNyArMTQ0LDcgQEAgcHVibGljOgorIAorICAgLy8gTkI6IEl0IGlzIHZlcnkgaW1wb3J0YW50IGZvciBhbGwgb2YgdGhlIGFib3ZlIChhbmQgYmVsb3cpIGZpZWxkcworICAgLy8gdG8gYmUgY2xlYXJlZCBpbiB0aGUgc3lzdGVtdGFwX3Nlc3Npb24gY3RvciAoc2Vzc2lvbi5jeHgpLgorLSAgdm9pZCBzZXR1cF9rZXJuZWxfcmVsZWFzZSAoY29uc3QgY2hhcioga3N0cik7CisrICB2b2lkIHNldHVwX2tlcm5lbF9yZWxlYXNlIChjb25zdCBzdGQ6OnN0cmluZyYga3N0cik7CisgICB2b2lkIGluc2VydF9sb2FkZWRfbW9kdWxlcyAoKTsKKyAKKyAgIC8vIGNvbW1hbmQgbGluZSBwYXJzaW5nCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtVXNlLXN5c3Jvb3Qtd2hlbi1sb29raW5nLWZvci10aGUtU3lzdGVtLm1hcC1maWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLVVzZS1zeXNyb290LXdoZW4tbG9va2luZy1mb3ItdGhlLVN5c3RlbS5tYXAtZmlsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjgyMGIzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLVVzZS1zeXNyb290LXdoZW4tbG9va2luZy1mb3ItdGhlLVN5c3RlbS5tYXAtZmlsZS5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDQzNjA2M2Q1ZTQ3MzhhOWIwMzUzNWQzMzBhMjI0MmJlNTExOGU3NDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEYXZpZCBTbWl0aCA8ZHNtaXRoQHJlZGhhdC5jb20+CitEYXRlOiBUaHUsIDggTWFyIDIwMTggMTY6MDE6NTggLTA2MDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIHN5c3Jvb3Qgd2hlbiBsb29raW5nIGZvciB0aGUgU3lzdGVtLm1hcCBmaWxlLgorCitBZGQgc3lzcm9vdCB0byBzeXN0ZW1fbWFwX3BhdGggKyAiL2Jvb3QvU3lzdGVtLm1hcCIgY2FzZS4gT3RoZXJ3aXNlCitzdGFwIHRyaWVzIHRvIGxvb2sgc3ltYm9scyBvbiBob3N0IHN5c3RlbSBhbmQgaXQgcHJvZHVjZSBlcnJvciBsaWtlIHRoaXM6CisKKz4gS2VybmVsIHN5bWJvbCB0YWJsZSAvYm9vdC9TeXN0ZW0ubWFwLTQuOS43OC15b2N0by1zdGFuZGFyZCB1bmF2YWlsYWJsZSwgKE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkpCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorLS0tCisgc2Vzc2lvbi5jeHggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK0luZGV4OiBnaXQvc2Vzc2lvbi5jeHgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zZXNzaW9uLmN4eAorKysrIGdpdC9zZXNzaW9uLmN4eAorQEAgLTIwMTMsNyArMjAxMyw3IEBAIHN5c3RlbXRhcF9zZXNzaW9uOjpwYXJzZV9rZXJuZWxfZnVuY3Rpb24KKyAJY2xvZyA8PCBfRigiS2VybmVsIHN5bWJvbCB0YWJsZSAlcyB1bmF2YWlsYWJsZSwgKCVzKSIsCisgCQkgICBzeXN0ZW1fbWFwX3BhdGguY19zdHIoKSwgc3RyZXJyb3IoZXJybm8pKSA8PCBlbmRsOworIAorLSAgICAgIHN5c3RlbV9tYXBfcGF0aCA9ICIvYm9vdC9TeXN0ZW0ubWFwLSIgKyBrZXJuZWxfcmVsZWFzZTsKKysgICAgICBzeXN0ZW1fbWFwX3BhdGggPSBzeXNyb290ICsgIi9ib290L1N5c3RlbS5tYXAtIiArIGtlcm5lbF9yZWxlYXNlOworICAgICAgIHN5c3RlbV9tYXAuY2xlYXIoKTsKKyAgICAgICBzeXN0ZW1fbWFwLm9wZW4oc3lzdGVtX21hcF9wYXRoLmNfc3RyKCksIGlmc3RyZWFtOjppbik7CisgICAgICAgaWYgKCEgc3lzdGVtX21hcC5pc19vcGVuKCkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtX3N0cF91bW9kdWxlX3JlbG9jYXRlLW5lZWRzLXRhcmdldC1maWxlLXBhdGgtbm90LWhvcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1fc3RwX3Vtb2R1bGVfcmVsb2NhdGUtbmVlZHMtdGFyZ2V0LWZpbGUtcGF0aC1ub3QtaG9zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4MTgxYTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtX3N0cF91bW9kdWxlX3JlbG9jYXRlLW5lZWRzLXRhcmdldC1maWxlLXBhdGgtbm90LWhvcy5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIDE4M2M3YTdhODE2NzMzM2M4NzM1MjVmNzkwODkxMzgzN2I4ZGMzY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KK0RhdGU6IFR1ZSwgMjAgTWFyIDIwMTggMTI6NDE6MDUgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gX3N0cF91bW9kdWxlX3JlbG9jYXRlIG5lZWRzIHRhcmdldCBmaWxlIHBhdGgsIG5vdCBob3N0IGZpbGUKKyBwYXRoCisKK1N0cmlwIG9mIHN5c3Jvb3QgZnJvbSBtb2R1bGUgbmFtZSBpcyByZXF1aXJlZCB3aGVuIF9zdHBfdW1vZHVsZV9yZWxvY2F0ZQorY2FsbCBpcyBnZW5lcmF0ZWQuIE90aGVyd2lzZSBwYXRoIHdvbid0IG1hdGNoIHBhdGggb24gdGFyZ2V0IGFuZCBjb3VsZAord2lsbCBmYWlsIHRvIGNhbGN1bGF0ZWQgYWRkcmVzcyB3aXRoaW4gdGhlIGZpbGUuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorLS0tCisgbG9jMnN0YXAuY3h4IHwgNSArKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xvYzJzdGFwLmN4eCBiL2xvYzJzdGFwLmN4eAoraW5kZXggNDgxOGVlMC4uZTA5OTU0ZiAxMDA2NDQKKy0tLSBhL2xvYzJzdGFwLmN4eAorKysrIGIvbG9jMnN0YXAuY3h4CitAQCAtMTcsNiArMTcsNyBAQAorIAorICNpbmNsdWRlICJsb2Myc3RhcC5oIgorICNpbmNsdWRlICJkd2ZscHAuaCIKKysjaW5jbHVkZSAidGFwc2V0cy5oIgorIAorICNpZiAhIF9FTEZVVElMU19QUkVSRVEoMCwgMTUzKQorICNkZWZpbmUgRFdfT1BfR05VX2VudHJ5X3ZhbHVlIDB4ZjMKK0BAIC0xMDYsNyArMTA3LDkgQEAgbG9jYXRpb25fY29udGV4dDo6dHJhbnNsYXRlX2FkZHJlc3MoRHdhcmZfQWRkciBhZGRyKQorICAgICAgICAgICBjID0gIi8qIHByYWdtYTp2bWEgKi8gIgorICAgICAgICAgICAgICAgIih7IHVuc2lnbmVkIGxvbmcgYWRkciA9IDA7ICIKKyAgICAgICAgICAgICAgICJhZGRyID0gX3N0cF91bW9kdWxlX3JlbG9jYXRlIChcIiIKKy0gICAgICAgICAgICAgICsgcmVzb2x2ZV9wYXRoKGR3LT5tb2R1bGVfbmFtZS5jX3N0cigpKSArICJcIiwgIgorKyAgICAgICAgICAgICAgKyBwYXRoX3JlbW92ZV9zeXNyb290KGR3LT5zZXNzLAorKwkJCQkgICAgcmVzb2x2ZV9wYXRoKGR3LT5tb2R1bGVfbmFtZS5jX3N0cigpKSkKKysJICAgICAgKyAiXCIsICIKKyAgICAgICAgICAgICAgICsgbGV4X2Nhc3RfaGV4IChhZGRyKQorIAkgICAgICArICIsIGN1cnJlbnQpOyBhZGRyOyB9KSI7CisgCX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1kZWJ1Z2luZm8tbG9va3VwLXdpdGgtc3lzcm9vdC1jYXNlLWRvLW5vdC1yZW1vdmUtc3lzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLWRlYnVnaW5mby1sb29rdXAtd2l0aC1zeXNyb290LWNhc2UtZG8tbm90LXJlbW92ZS1zeXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYwNjQyZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1kZWJ1Z2luZm8tbG9va3VwLXdpdGgtc3lzcm9vdC1jYXNlLWRvLW5vdC1yZW1vdmUtc3lzLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gYjI5ZTQ0OGUxMjA0MGVkOGY0ZDgzNzQzYTE0ZGIwZjEzOGE3Y2M2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorRGF0ZTogV2VkLCAxNCBNYXIgMjAxOCAxNjo1NDowOCAtMDUwMAorU3ViamVjdDogW1BBVENIXSBkZWJ1Z2luZm8gbG9va3VwIHdpdGggc3lzcm9vdCBjYXNlIGRvIG5vdCByZW1vdmUgc3lzcm9vdCBmcm9tCisgZmlsZV9uYW1lCisKK0lmIHN5c3Jvb3Qgb3B0aW9uIGlzIHBhc3NlZCwgYW5kIGRlYnVnIHN5bWJvbHMgcmVzaWRlIGluIHN5c3Jvb3QgYWxvbmcKK3dpdGggZXhlY3V0YWJsZSA8Zm9vPiBpbiA8Zm9vX2Rpcj4vLmRlYnVnLzxmb29fZmlsZT4gZGlyZWN0b3J5LAorc3RhcCBmYWlscyB0byBmaW5kIGRlYnVnaW5mbyBiZWNhdXNlIGl0IHN0cmlwcyBvdXQgc3lzcm9vdCBwYXRoCitmcm9tIGZpbGVfbmFtZSBzbyBkd2ZsX3N0YW5kYXJkX2ZpbmRfZGVidWdpbmZvIGVuZHMgdXAgbG9va2luZyBhdAoraG9zdCA8Zm9vX2Rpcj4vLmRlYnVnLzxmb29fZmlsZT4gcmF0aGVyIHRoZW4gY2hlY2tpbmcKKzxzeXNyb290Pi88Zm9vX2Rpcj4vLmRlYnVnLzxmb29fZmlsZT4uCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorLS0tCisgc2V0dXBkd2ZsLmN4eCB8IDEyIC0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NldHVwZHdmbC5jeHggYi9zZXR1cGR3ZmwuY3h4CitpbmRleCAxMWUwYmIyLi4yYTg3OTgyIDEwMDY0NAorLS0tIGEvc2V0dXBkd2ZsLmN4eAorKysrIGIvc2V0dXBkd2ZsLmN4eAorQEAgLTYyNywxOCArNjI3LDYgQEAgaW50ZXJuYWxfZmluZF9kZWJ1Z2luZm8gKER3ZmxfTW9kdWxlICptb2QsCisgCisgICBjYWxsX2R3Zmxfc3RhbmRhcmRfZmluZF9kZWJ1Z2luZm86CisgCistICBpZiAoY3VycmVudF9zZXNzaW9uX2Zvcl9maW5kX2RlYnVnaW5mbykKKy0gICAgeworLSAgICAgIHN0cmluZyBzeXNyb290ID0gY3VycmVudF9zZXNzaW9uX2Zvcl9maW5kX2RlYnVnaW5mby0+c3lzcm9vdCArICIvKiI7CistICAgICAgaW50ICAgIGZvdW5kICAgPSBmbm1hdGNoKHN5c3Jvb3QuY19zdHIoKSwgZmlsZV9uYW1lLCAwKTsKKy0KKy0gICAgICBpZiAoZm91bmQpCistCXsKKy0JICBmaWxlX25hbWUgPSBmaWxlX25hbWUKKy0JICAgICsgY3VycmVudF9zZXNzaW9uX2Zvcl9maW5kX2RlYnVnaW5mby0+c3lzcm9vdC5sZW5ndGgoKSAtIDE7CistCX0KKy0gICAgfQorLQorICAgLyogQ2FsbCB0aGUgb3JpZ2luYWwgZHdmbF9zdGFuZGFyZF9maW5kX2RlYnVnaW5mbyAqLworICAgcmV0dXJuIGR3Zmxfc3RhbmRhcmRfZmluZF9kZWJ1Z2luZm8obW9kLCB1c2VyZGF0YSwgbW9kbmFtZSwgYmFzZSwKKyAgICAgICAgICAgICAgIGZpbGVfbmFtZSwgZGVidWdsaW5rX2ZpbGUsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtc3lzcm9vdC1maXgtc2hvcnQtcmVsZWFzZS1yLW9wdGlvbi1oYW5kbGluZy1mb2xsb3ctdS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1zeXNyb290LWZpeC1zaG9ydC1yZWxlYXNlLXItb3B0aW9uLWhhbmRsaW5nLWZvbGxvdy11LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmZTdkNGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtc3lzcm9vdC1maXgtc2hvcnQtcmVsZWFzZS1yLW9wdGlvbi1oYW5kbGluZy1mb2xsb3ctdS5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIDdlMTFmMTI5ZmYzNzBjZTVmMzk4MTJjZTJhZTZjZTQwODE4YTM0N2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KK0RhdGU6IFRodSwgMjIgTWFyIDIwMTggMTY6MDI6MDIgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3lzcm9vdDogZml4IHNob3J0IHJlbGVhc2UgLXIgb3B0aW9uIGhhbmRsaW5nIGZvbGxvdyB1cAorCitJbiBjYXNlIG9mIHN5c3Jvb3Qgc2V0IGFuZCBzaG9ydCByZWxlYXNlIC1yIG9wdGlvbiBpdCBkb2VzIG5vdCBtYWtlIHNlbnNlCit0byBwYXNzIHNob3J0IHJlbGVhc2UgbmFtZSBpbnRvIGR3ZmxfbGludXhfa2VybmVsX3JlcG9ydF9vZmZsaW5lCitmdW5jdGlvbi4gVGhpcyBmdW5jdGlvbiBpcyBub3QgYXdhcmUgYWJvdXQgc3lzcm9vdCBhbmQgaXQgd29uJ3QgbG9vayBmb3IKK2tlcm5lbCBtb2R1bGVzIHVuZGVyIHN5c3Jvb3QgZGlyZWN0b3J5LgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KKy0tLQorIHNldHVwZHdmbC5jeHggfCAxMCArKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc2V0dXBkd2ZsLmN4eCBiL3NldHVwZHdmbC5jeHgKK2luZGV4IGM0MTlhZmEuLjBjZjU4MTAgMTAwNjQ0CistLS0gYS9zZXR1cGR3ZmwuY3h4CisrKysgYi9zZXR1cGR3ZmwuY3h4CitAQCAtMzY3LDcgKzM2NywxNSBAQCBzZXR1cF9kd2ZsX2tlcm5lbCAodW5zaWduZWQgKm1vZHVsZXNfZm91bmQsIHN5c3RlbXRhcF9zZXNzaW9uICZzKQorICAgLy8gaGFyZC1jb2RlIHRoaXMgbWFnaWMgaGVyZS4KKyAgIHN0cmluZyBsaWJfcGF0aCA9IHMuc3lzcm9vdCArICIvbGliL21vZHVsZXMvIiArIHMua2VybmVsX3JlbGVhc2UgKyAiL2J1aWxkIjsKKyAgIGlmIChzLmtlcm5lbF9idWlsZF90cmVlID09IGxpYl9wYXRoKQorLSAgICBlbGZ1dGlsc19rZXJuZWxfcGF0aCA9IHMua2VybmVsX3JlbGVhc2U7CisrICAgIHsKKysgICAgICBpZiAocy5zeXNyb290ICE9ICIiKQorKyAgICAgICAgLy8gSWYgd2UgaGF2ZSBzeXNyb290IHNldCBkb2VzIG5vdCBtYWtlIHNlbnNlIHRvIHBhc3MKKysgICAgICAgIC8vIHNob3J0IHJlbGVhc2UgdG8gZHdmbCwgaXQgd29uJ3QgdGFrZSBhIHN5c3Jvb3QgaW50bworKyAgICAgICAgLy8gYWNjb3VudC4gTGV0J3MgY29uc3RydWN0IGZ1bGwgcGF0aCBpbiBzdWNoIGNhc2UuCisrCWVsZnV0aWxzX2tlcm5lbF9wYXRoID0gc3RyaW5nKHMuc3lzcm9vdCArICIvbGliL21vZHVsZXMvIiArIHMua2VybmVsX3JlbGVhc2UpOworKyAgICAgIGVsc2UKKysJZWxmdXRpbHNfa2VybmVsX3BhdGggPSBzLmtlcm5lbF9yZWxlYXNlOworKyAgICB9CisgICBlbHNlCisgICAgIGVsZnV0aWxzX2tlcm5lbF9wYXRoID0gcy5rZXJuZWxfYnVpbGRfdHJlZTsKKyAgIG9mZmxpbmVfbW9kdWxlc19mb3VuZCA9IDA7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1zeXNyb290LWZpeC1zaG9ydC1yZWxlYXNlLXItb3B0aW9uLWhhbmRsaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLXN5c3Jvb3QtZml4LXNob3J0LXJlbGVhc2Utci1vcHRpb24taGFuZGxpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjMxZDYyNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1zeXNyb290LWZpeC1zaG9ydC1yZWxlYXNlLXItb3B0aW9uLWhhbmRsaW5nLnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gYTljZTg5YmNkMmQ3ODcyOGZhZWY1OWJkYTYwZTc1NTEwOTcyY2Q1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorRGF0ZTogV2VkLCAxNCBNYXIgMjAxOCAxNzowOTo0NCAtMDUwMAorU3ViamVjdDogW1BBVENIXSBzeXNyb290OiBmaXggc2hvcnQgcmVsZWFzZSAtciBvcHRpb24gaGFuZGxpbmcKKworKiBzZXR1cGR3ZmwuY3h4IChkZWJ1Z2luZm9fcGF0aF9pbnNlcnRfc3lzcm9vdCk6IEFkZCBhICcvJyB0byB0aGUgZW5kIG9mCisgIHRoZSBzeXNyb290IGZvciBwYXRoX2luc2VydF9zeXNyb290KCkuCisgIChzZXR1cF9kd2ZsX2tlcm5lbCk6IFNpbXBsaWZ5IGxvZ2ljIHdoZW4gZmluZGluZyB0aGUga2VybmVsIHBhdGggdG8gc2VuZAorICB0byBlbGZ1dGlscy4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+CistLS0KKyBzZXR1cGR3ZmwuY3h4IHwgMTkgKysrKysrKysrKysrLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc2V0dXBkd2ZsLmN4eCBiL3NldHVwZHdmbC5jeHgKK2luZGV4IDJhODc5ODIuLmY2YzMxNTcgMTAwNjQ0CistLS0gYS9zZXR1cGR3ZmwuY3h4CisrKysgYi9zZXR1cGR3ZmwuY3h4CitAQCAtMzM5LDYgKzMzOSwxMyBAQCBzdGF0aWMgY2hhciAqIHBhdGhfaW5zZXJ0X3N5c3Jvb3Qoc3RyaW5nIHN5c3Jvb3QsIHN0cmluZyBwYXRoKQorIAorIHZvaWQgZGVidWdpbmZvX3BhdGhfaW5zZXJ0X3N5c3Jvb3Qoc3RyaW5nIHN5c3Jvb3QpCisgeworKyAgLy8gRklYTUU6IFRoaXMgaXMgYSBzaG9ydC10ZXJtIGZpeCwgdW50aWwgd2UgZXhwZWN0IHN5c3Jvb3QgcGF0aHMgdG8KKysgIC8vIGFsd2F5cyBlbmQgd2l0aCBhICcvJyAoYW5kIG5ldmVyIGJlIGVtcHR5KS4KKysgIC8vCisrICAvLyBUaGUgcGF0aF9pbnNlcnRfc3lzcm9vdCgpIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCBzeXNyb290IGhhcyBhICcvJworKyAgLy8gb24gdGhlIGVuZC4gTWFrZSBzdXJlIHRoYXQgaXMgdHJ1ZS4KKysgIGlmIChzeXNyb290LmJhY2soKSAhPSAnLycpCisrICAgIHN5c3Jvb3QucHVzaF9iYWNrKCcvJyk7CisgICBkZWJ1Z2luZm9fcGF0aCA9IHBhdGhfaW5zZXJ0X3N5c3Jvb3Qoc3lzcm9vdCwgZGVidWdpbmZvX3BhdGgpOworICAgZGVidWdpbmZvX3Vzcl9wYXRoID0gcGF0aF9pbnNlcnRfc3lzcm9vdChzeXNyb290LCBkZWJ1Z2luZm9fdXNyX3BhdGgpOworIH0KK0BAIC0zNTgsMTMgKzM2NSwxMSBAQCBzZXR1cF9kd2ZsX2tlcm5lbCAodW5zaWduZWQgKm1vZHVsZXNfZm91bmQsIHN5c3RlbXRhcF9zZXNzaW9uICZzKQorICAgLy8gbm8gd2F5IHRvIHNldCB0aGUgZHdmbF9jYWxsYmFjay5kZWJ1Z2luZm9fcGF0aCBhbmQgYWx3YXlzCisgICAvLyBwYXNzcyB0aGUgcGxhaW4ga2VybmVsX3JlbGVhc2UgaGVyZS4gIFNvIGluc3RlYWQgd2UgaGF2ZSB0bworICAgLy8gaGFyZC1jb2RlIHRoaXMgbWFnaWMgaGVyZS4KKy0gICBzdHJpbmcgbGliX3BhdGggPSAiL2xpYi9tb2R1bGVzLyIgKyBzLmtlcm5lbF9yZWxlYXNlICsgIi9idWlsZCI7CistICAgaWYgKHMua2VybmVsX2J1aWxkX3RyZWUgPT0gc3RyaW5nKHMuc3lzcm9vdCArIGxpYl9wYXRoKSB8fAorLSAgICAgICAocy5rZXJuZWxfYnVpbGRfdHJlZSA9PSBsaWJfcGF0aAorLQkmJiBzLnN5c3Jvb3QgPT0gIi8iKSkKKy0gICAgICBlbGZ1dGlsc19rZXJuZWxfcGF0aCA9IHMua2VybmVsX3JlbGVhc2U7CistICAgZWxzZQorLSAgICAgIGVsZnV0aWxzX2tlcm5lbF9wYXRoID0gcy5rZXJuZWxfYnVpbGRfdHJlZTsKKysgIHN0cmluZyBsaWJfcGF0aCA9IHMuc3lzcm9vdCArICIvbGliL21vZHVsZXMvIiArIHMua2VybmVsX3JlbGVhc2UgKyAiL2J1aWxkIjsKKysgIGlmIChzLmtlcm5lbF9idWlsZF90cmVlID09IGxpYl9wYXRoKQorKyAgICBlbGZ1dGlsc19rZXJuZWxfcGF0aCA9IHMua2VybmVsX3JlbGVhc2U7CisrICBlbHNlCisrICAgIGVsZnV0aWxzX2tlcm5lbF9wYXRoID0gcy5rZXJuZWxfYnVpbGRfdHJlZTsKKyAgIG9mZmxpbmVfbW9kdWxlc19mb3VuZCA9IDA7CisgCisgICAvLyBGaXJzdCB0cnkgdG8gcmVwb3J0IGZ1bGwgcGF0aCBtb2R1bGVzLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLXN5c3Jvb3QtaGFuZGxlLXN5bWJvbGljLWxpbmtzLXdpdGgtYWJzb2x1dGUtbmFtZS1yZWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtc3lzcm9vdC1oYW5kbGUtc3ltYm9saWMtbGlua3Mtd2l0aC1hYnNvbHV0ZS1uYW1lLXJlbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTNkMzlhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLXN5c3Jvb3QtaGFuZGxlLXN5bWJvbGljLWxpbmtzLXdpdGgtYWJzb2x1dGUtbmFtZS1yZWwucGF0Y2gKQEAgLTAsMCArMSwxMTcgQEAKK0Zyb20gMjA0MTA4NWQxYTcwMDIwMWRjMDg4OTkxY2E4MTM2ZTc5MzViZjQyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorRGF0ZTogV2VkLCAyMSBNYXIgMjAxOCAxMTozNToyNiAtMDUwMAorU3ViamVjdDogW1BBVENIXSBzeXNyb290OiBoYW5kbGUgc3ltYm9saWMgbGlua3Mgd2l0aCBhYnNvbHV0ZSBuYW1lIHJlbGF0aXZlIHRvCisgc3lzcm9vdAorCitJbiBjYXNlIG9mIHN5bWJvbGljIGxpbmsgZm91bmQgdW5kZXIgc3lzcm9vdCBwb2ludCB0byBhYnNvbHV0ZSBwYXRoLAoraW5zdGVhZCBvZiB0cnlpbmcgdG8gbG9vayBmb3Igc3VjaCBhYnNvbHV0ZSBwYXRoIGluIGhvc3Qgc3lzdGVtLAorYXBwbHkgc3lzcm9vdCBwcmVmaXggZmlyc3QuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgorLS0tCisgdXRpbC5jeHggfCA3NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDc2IGluc2VydGlvbnMoKykKKworSW5kZXg6IGdpdC91dGlsLmN4eAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3V0aWwuY3h4CisrKysgZ2l0L3V0aWwuY3h4CitAQCAtNDQxLDYgKzQ0MSw2NCBAQCBzcGxpdF9saW5lcyhjb25zdCBjaGFyICpidWYsIHNpemVfdCBuKQorICAgcmV0dXJuIGxpbmVzOworIH0KKyAKKytzdGF0aWMgc3RyaW5nCisrZm9sbG93X2xpbmsoY29uc3Qgc3RyaW5nJiBuYW1lLCBjb25zdCBzdHJpbmcmIHN5c3Jvb3QpCisreworKyAgY2hhciAqbGlua25hbWU7CisrICBzc2l6ZV90IHI7CisrICBzdHJpbmcgcmV0cGF0aDsKKysgIHN0cnVjdCBzdGF0IHN0OworKworKyAgY29uc3QgY2hhciAqZiA9IG5hbWUuY19zdHIoKTsKKysKKysgIGxzdGF0KGYsICZzdCk7CisrCisrICBsaW5rbmFtZSA9IChjaGFyICopIG1hbGxvYyhzdC5zdF9zaXplICsgMSk7CisrCisrICBpZiAobGlua25hbWUpCisrICAgIHsKKysgICAgICByID0gcmVhZGxpbmsoZiwgbGlua25hbWUsIHN0LnN0X3NpemUgKyAxKTsKKysgICAgICBsaW5rbmFtZVtzdC5zdF9zaXplXSA9ICdcMCc7CisrICAgICAgLyoKKysgICAgICAgKiBJZiB3ZSBoYXZlIG5vbi1lbXB0eSBzeXNyb290IGFuZCB3ZSBnb3QgbGluayB0aGF0CisrICAgICAgICogcG9pbnRzIHRvIGFic29sdXRlIHBhdGggbmFtZSwgd2UgbmVlZCB0byBsb29rIGF0CisrICAgICAgICogdGhpcyBwYXRoIHJlbGF0aXZlIHRvIHN5c3Jvb3QgaXRzZWxmLiBhY2Nlc3MgYW5kCisrICAgICAgICogc3RhdCB3aWxsIGZvbGxvdyBzeW1ib2xpYyBsaW5rcyBjb3JyZWN0bHkgb25seSBpbgorKyAgICAgICAqIGNhc2Ugd2l0aCBlbXB0eSBzeXNyb290LgorKyAgICAgICAqLworKyAgICAgIHdoaWxlIChyICE9IC0xICYmIGxpbmtuYW1lICYmIGxpbmtuYW1lWzBdID09ICcvJykKKysJeworKwkgIHN0cmluZyBmbmFtZTEgPSBzeXNyb290ICsgbGlua25hbWU7CisrCSAgY29uc3QgY2hhciAqZjEgPSBmbmFtZTEuY19zdHIoKTsKKysJICBpZiAoYWNjZXNzKGYxLCBYX09LKSA9PSAwCisrCSAgICAgICYmIHN0YXQoZjEsICZzdCkgPT0gMAorKwkgICAgICAmJiBTX0lTUkVHKHN0LnN0X21vZGUpKQorKwkgICAgeworKwkgICAgICByZXRwYXRoID0gZm5hbWUxOworKwkgICAgICBicmVhazsKKysJICAgIH0KKysJICBlbHNlIGlmIChsc3RhdChmMSwgJnN0KSA9PSAwCisrCQkgICAmJiBTX0lTTE5LKHN0LnN0X21vZGUpKQorKwkgICAgeworKwkgICAgICBmcmVlKGxpbmtuYW1lKTsKKysJICAgICAgbGlua25hbWUgPSAoY2hhciAqKSBtYWxsb2Moc3Quc3Rfc2l6ZSArIDEpOworKwkgICAgICBpZiAobGlua25hbWUpCisrCQl7CisrCQkgIHIgPSByZWFkbGluayhmMSwgbGlua25hbWUsIHN0LnN0X3NpemUgKyAxKTsKKysJCSAgbGlua25hbWVbc3Quc3Rfc2l6ZV0gPSAnXDAnOworKwkJfQorKwkgICAgfQorKwkgIGVsc2UKKysJICAgIHsKKysJICAgICAgYnJlYWs7CisrCSAgICB9CisrCX0KKysgICAgfQorKyAgZnJlZShsaW5rbmFtZSk7CisrCisrICByZXR1cm4gcmV0cGF0aDsKKyt9CisrCisgLy8gUmVzb2x2ZSBhbiBleGVjdXRhYmxlIG5hbWUgdG8gYSBjYW5vbmljYWwgZnVsbCBwYXRoIG5hbWUsIHdpdGggdGhlCisgLy8gc2FtZSBwb2xpY3kgYXMgZXhlY3ZwKCkuICBBIHByb2dyYW0gbmFtZSBub3QgY29udGFpbmluZyBhIHNsYXNoCisgLy8gd2lsbCBiZSBzZWFyY2hlZCBhbG9uZyB0aGUgJFBBVEguCitAQCAtNDY1LDYgKzUyMywxNCBAQCBzdHJpbmcgZmluZF9leGVjdXRhYmxlKGNvbnN0IHN0cmluZyYgbmFtCisgICBpZiAobmFtZS5maW5kKCcvJykgIT0gc3RyaW5nOjpucG9zKSAvLyBzbGFzaCBpbiB0aGUgcGF0aCBhbHJlYWR5PworICAgICB7CisgICAgICAgcmV0cGF0aCA9IHN5c3Jvb3QgKyBuYW1lOworKworKyAgICAgIGNvbnN0IGNoYXIgKmYgPSByZXRwYXRoLmNfc3RyKCk7CisrICAgICAgaWYgKHN5c3Jvb3QgIT0gIiIKKysJICAmJiBsc3RhdChmLCAmc3QpID09IDAKKysJICAmJiBTX0lTTE5LKHN0LnN0X21vZGUpKQorKwl7CisrCSAgcmV0cGF0aCA9IGZvbGxvd19saW5rKGYsIHN5c3Jvb3QpOworKwl9CisgICAgIH0KKyAgIGVsc2UgLy8gTm9wZSwgc2VhcmNoICRQQVRILgorICAgICB7CitAQCAtNDkzLDYgKzU1OSwxNiBAQCBzdHJpbmcgZmluZF9leGVjdXRhYmxlKGNvbnN0IHN0cmluZyYgbmFtCisgICAgICAgICAgICAgICAgICAgcmV0cGF0aCA9IGZuYW1lOworICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICBlbHNlIGlmIChzeXNyb290ICE9ICIiCisrICAgICAgICAgICAgICAgICAgICAgICAmJiBsc3RhdChmLCAmc3QpID09IDAKKysgICAgICAgICAgICAgICAgICAgICAgICYmIFNfSVNMTksoc3Quc3RfbW9kZSkpCisrCQl7CisrCQkgIHJldHBhdGggPSBmb2xsb3dfbGluayhmLCBzeXNyb290KTsKKysJCSAgaWYgKHJldHBhdGggIT0gIiIpCisrCQkgICAgeworKwkJICAgICAgYnJlYWs7CisrCQkgICAgfQorKwkJfQorICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC9zeXN0ZW1fbWFwX2xvY2F0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC9zeXN0ZW1fbWFwX2xvY2F0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTNhZjVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvc3lzdGVtX21hcF9sb2NhdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLXN5c3RlbXRhcDogQ3Jvc3MgY29tcGlsYXRpb24gZml4Ci0KLVRoaXMgaXMgYSBjcm9zcyBjb21waWxhdGlvbiBmaXguIEl0IGFsbG93cyBzeXN0ZW10YXAgdG8gZmluZAotdGhlIGtlcm5lbCBtYXAgZmlsZSBpbiB0aGUgcmlnaHQgcGxhY2UsIGkuZS4gaW4gdGhlIGtlcm5lbCBidWlsZCB0cmVlLgotV2l0aG91dCB0aGlzIGZpeCBpdCB0YWtlcyBhIG1hcCBmaWxlIGZyb20gdGhlIGJ1aWxkIGhvc3QsIGlmIGF2YWlsYWJsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IE1pa2hhaWwgRHVybmV2IDxtaWtoYWlsX2R1cm5ldkBtZW50b3IuY29tPgotCi1JbmRleDogZ2l0L3Nlc3Npb24uY3h4Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvc2Vzc2lvbi5jeHgKLSsrKyBnaXQvc2Vzc2lvbi5jeHgKLUBAIC0xNjM0LDcgKzE2MzQsNyBAQCBzeXN0ZW10YXBfc2Vzc2lvbjo6cGFyc2Vfa2VybmVsX2Z1bmN0aW9uCi0gCWNsb2cgPDwgX0YoIktlcm5lbCBzeW1ib2wgdGFibGUgJXMgdW5hdmFpbGFibGUsICglcykiLAotIAkJICAgc3lzdGVtX21hcF9wYXRoLmNfc3RyKCksIHN0cmVycm9yKGVycm5vKSkgPDwgZW5kbDsKLSAKLS0gICAgICBzeXN0ZW1fbWFwX3BhdGggPSAiL2Jvb3QvU3lzdGVtLm1hcC0iICsga2VybmVsX3JlbGVhc2U7Ci0rICAgICAgc3lzdGVtX21hcF9wYXRoID0ga2VybmVsX2J1aWxkX3RyZWUgKyAiL1N5c3RlbS5tYXAtIiArIGtlcm5lbF9yZWxlYXNlOwotICAgICAgIHN5c3RlbV9tYXAuY2xlYXIoKTsKLSAgICAgICBzeXN0ZW1fbWFwLm9wZW4oc3lzdGVtX21hcF9wYXRoLmNfc3RyKCksIGlmc3RyZWFtOjppbik7Ci0gICAgICAgaWYgKCEgc3lzdGVtX21hcC5pc19vcGVuKCkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmJiCmluZGV4IDQ3NWIyMDcuLmIyODBmNTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmJiCkBAIC0zLDkgKzMsNyBAQAogCiByZXF1aXJlIHN5c3RlbXRhcF9naXQuaW5jCiAKLURFUEVORFMgPSAiYm9vc3QgZWxmdXRpbHMiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24zLWNvcmUgYmFzaCBwZXJsIgorREVQRU5EUyA9ICJlbGZ1dGlscyIKIAogRVhUUkFfT0VDT05GICs9ICItLXdpdGgtbGliZWxmPSR7U1RBR0lOR19ESVJfVEFSR0VUfSAtLXdpdGhvdXQtcnBtIFwKICAgICAgICAgICAgIC0td2l0aG91dC1uc3MgLS13aXRob3V0LWF2YWhpIC0td2l0aG91dC1keW5pbnN0IFwKQEAgLTE4LDcgKzE2LDggQEAKIAogRVhUUkFfT0VDT05GICs9ICIke1NUQVBfRE9DU30gIgogCi1QQUNLQUdFQ09ORklHID8/PSAic3FsaXRlIG1vbml0b3IgcHl0aG9uMy1wcm9iZXMiCitQQUNLQUdFQ09ORklHID8/PSAidHJhbnNsYXRvciBzcWxpdGUgbW9uaXRvciBweXRob24zLXByb2JlcyIKK1BBQ0tBR0VDT05GSUdbdHJhbnNsYXRvcl0gPSAiLS1lbmFibGUtdHJhbnNsYXRvciwtLWRpc2FibGUtdHJhbnNsYXRvcixib29zdCxweXRob24zLWNvcmUgYmFzaCBwZXJsIgogUEFDS0FHRUNPTkZJR1tsaWJ2aXJ0XSA9ICItLWVuYWJsZS1saWJ2aXJ0LC0tZGlzYWJsZS1saWJ2aXJ0LGxpYnZpcnQiCiBQQUNLQUdFQ09ORklHW3NxbGl0ZV0gPSAiLS1lbmFibGUtc3FsaXRlLC0tZGlzYWJsZS1zcWxpdGUsc3FsaXRlMyIKIFBBQ0tBR0VDT05GSUdbbW9uaXRvcl0gPSAiLS1lbmFibGUtbW9uaXRvciwtLWRpc2FibGUtbW9uaXRvcixuY3Vyc2VzIGpzb24tYyIKQEAgLTI2LDQgKzI1LDEyIEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIGRpc3R1dGlsczMtYmFzZQogCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICBpZiBbICEgLWYgJHtEfSR7YmluZGlyfS9zdGFwIF07IHRoZW4KKyAgICAgICMgdHJhbnNsYXRvciBkaXNhYmxlZCBjYXNlLCBuZWVkIHRvIGxlYXZlIG9ubHkgbWluaW1hbCBydW50aW1lCisgICAgICBybSAtcmYgJHtEfSR7ZGF0YWRpcn0vJHtQTn0KKyAgICAgIHJtICR7RH0ke2xpYmV4ZWNkaXJ9LyR7UE59L3N0YXAtZW52CisgICBmaQorfQorCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmluYwppbmRleCAzZGM2ODhhLi5lMmY1MjA0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuaW5jCkBAIC0xLDEwICsxLDkgQEAKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLVNSQ1JFViA9ICI0NWQwZTdhMDlhMTVhMjEwNzhkMGViZjJkYjUxNzVlZDllODcwMTRlIgotUFYgPSAiMy4xIgorU1JDUkVWID0gIjQwNTFjNzBjOTMxOGM4Mzc5ODEzODRjYmIyM2YzZTllYjFiZDA4OTIiCitQViA9ICIzLjIiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L3N5c3RlbXRhcC5naXQgXAotICAgICAgICAgICBmaWxlOi8vc3lzdGVtX21hcF9sb2NhdGlvbi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJ2aXJ0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3gzMl9hYmlfdGltZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9tb25pdG9yLW9wdGlvbi5wYXRjaCBcCkBAIC0xMywxMCArMTIsMjEgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtSW5zdGFsbC1weXRob24tbW9kdWxlcy10by1jb3JyZWN0LWxpYnJhcnktZGlyLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGRydW4tcmVtb3ZlLXF1b3Rlcy1hcm91bmQtSS1pbmNsdWRlLWxpbmUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1zdGFwcnVuLXN0YXBicGYtZG9uLXQtc3VwcG9ydC1pbnN0YWxsaW5nLWEtbm9uLXJvb3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtUFIyMjU1MS1ieS11cGRhdGluZy10aGUtdXNlLW9mLXRpbWVycy1mb3ItdGhlLTQuLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4ZXMtZm9yLWdjYy04LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXN5c3Jvb3Qtd2hlbi1sb29raW5nLWZvci10aGUtU3lzdGVtLm1hcC1maWxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZGVidWdpbmZvLWxvb2t1cC13aXRoLXN5c3Jvb3QtY2FzZS1kby1ub3QtcmVtb3ZlLXN5cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2Utc3VyZS1zeXNyb290LXBhdGhzLWRvbi10LWVuZC13aXRoLWEtc2xhc2gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zeXNyb290LWZpeC1zaG9ydC1yZWxlYXNlLXItb3B0aW9uLWhhbmRsaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRGVsYXktYWRkaW5nLXN5c3Jvb3QtcGF0aC10by1tb2R1bGUtbmFtZS1pbi1jYXNlLW9mLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZGVkLWEtY291cGxlLW9mLXNtYWxsLXN5c3Jvb3QtZml4ZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1fc3RwX3Vtb2R1bGVfcmVsb2NhdGUtbmVlZHMtdGFyZ2V0LWZpbGUtcGF0aC1ub3QtaG9zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3lzcm9vdC1oYW5kbGUtc3ltYm9saWMtbGlua3Mtd2l0aC1hYnNvbHV0ZS1uYW1lLXJlbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN5c3Jvb3QtZml4LXNob3J0LXJlbGVhc2Utci1vcHRpb24taGFuZGxpbmctZm9sbG93LXUucGF0Y2ggXAogICAgICAgICAgICAiCiAKLSMgc3lzdGVtdGFwIGRvZXNuJ3Qgc3VwcG9ydCBtaXBzCi1DT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NHxpLjg2fHBvd2VycGN8YXJtfGFhcmNoNjQpLiotbGludXgnCitDT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NHxpLjg2fHBvd2VycGN8YXJtfGFhcmNoNjR8bWljcm9ibGF6ZWVsfG1pcHMpLiotbGludXgnCitDT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsID0gJ251bGwnCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3RyYWNlLWNtZC90cmFjZS1jbWQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZC5pbmMKaW5kZXggMDAyZWU2NS4uMGExNzg5YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZC5pbmMKQEAgLTEsMTEgKzEsMTEgQEAKLVNSQ1JFViA9ICIwMjE3MTBlMTA3M2ZlMjAzMzQxYjQyN2NkMWE0YmFjNTc3ZWM4OTljIgotUFYgPSAiMi42LjEiCitTUkNSRVYgPSAiN2QwMTQ3YmJiYTNlZDFkNWVmNmVlYTRlZWMzZjBhZDRjOThmMDJiNSIKK1BWID0gIjIuNyIKIAogaW5oZXJpdCBwa2djb25maWcKIAogRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vdHJhY2UtY21kOiIKIAotU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvcm9zdGVkdC90cmFjZS1jbWQuZ2l0O2JyYW5jaD10cmFjZS1jbWQtc3RhYmxlLXYyLjYgXAorU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvcm9zdGVkdC90cmFjZS1jbWQuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL2Jsa3RyYWNlLWFwaS1jb21wYXRpYmlsaXR5LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1saW1pdHMuaC1zby10aGF0LVBBVEhfTUFYLWlzLWRlZmluZWQtYW4taXNzdS5wYXRjaCBcCiAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi9DaGVjay1pZi13b3JkZXhwLWZ1bmN0aW9uLWlzLXN1cHBvcnRlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliL0NoZWNrLWlmLXdvcmRleHAtZnVuY3Rpb24taXMtc3VwcG9ydGVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTVlNDhhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliL0NoZWNrLWlmLXdvcmRleHAtZnVuY3Rpb24taXMtc3VwcG9ydGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSAzNDA4ZjhlNzg3NzZiMTJmMTMxZTQzMzc0OTcyMTYwMmY4N2UwYTcwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIkhvbmcgSC4gUGhhbSIgPGhvbmcucGhhbUB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAyOSBBdWcgMjAxNCAxNzoxMzo1NSArMDMwMAotU3ViamVjdDogW1BBVENIXSBDaGVjayBpZiB3b3JkZXhwIGZ1bmN0aW9uIGlzIHN1cHBvcnRlZAotCi1lZ2xpYmMgY291bGQgYmUgY29uZmlndXJlZCB0byBidWlsZCB3aXRob3V0IHdvcmRleHAsIHNvIGl0IGlzIG5vdCBlbm91Z2gKLXRvIGNoZWNrIGlmIHdvcmRleHAuaCBleGlzdHMgKHRoZSBoZWFkZXIgZmlsZSBjb3VsZCBiZSBpbnN0YWxsZWQsIGJ1dCBpdCdzCi1wb3NzaWJsZSB0aGF0IHRoZSB3b3JkZXhwKCkgZnVuY3Rpb24gaXMgbm90IHN1cHBvcnRlZCkuICBBbiBhZGRpdGlvbmFsCi1jaGVjayBpZiB3b3JkZXhwKCkgaXMgc3VwcG9ydGVkIGJ5IHRoZSBzeXN0ZW0gQyBsaWJyYXJ5IGlzIG5lZWRlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBIb25nIEguIFBoYW0gPGhvbmcucGhhbUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogQ3Jpc3RpYW4gSW9yZ2EgPGNyaXN0aWFuLmlvcmdhQGludGVsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyAgIHwgNSArKysrLQotIHNyYy91c2VyZmlsZS5jIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA5NDkwZDM5Li5iMDhhOTBhIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0yOTUsNyArMjk1LDEwIEBAIGZpCi0gQUNfU1VCU1QoQUxTQV9ERVBMSUJTKQotIAotIGRubCBDaGVjayBmb3IgaGVhZGVycwotLUFDX0NIRUNLX0hFQURFUlMoW3dvcmRleHAuaCBlbmRpYW4uaCBzeXMvZW5kaWFuLmggc3lzL3NobS5oXSkKLStBQ19DSEVDS19IRUFERVJTKFt3b3JkZXhwLmggZW5kaWFuLmggc3lzL2VuZGlhbi5oIHN5cy9zaG0uaF0sCi0rICBkbmwgTWFrZSBzdXJlIHdvcmRleHAgaXMgc3VwcG9ydGVkIGJ5IHRoZSBDIGxpYnJhcnkKLSsgIEFDX0NIRUNLX0ZVTkNTKFt3b3JkZXhwXSkKLSspCi0gCi0gZG5sIENoZWNrIGZvciByZXNtZ3Igc3VwcG9ydC4uLgotIEFDX01TR19DSEVDS0lORyhmb3IgcmVzbWdyIHN1cHBvcnQpCi1kaWZmIC0tZ2l0IGEvc3JjL3VzZXJmaWxlLmMgYi9zcmMvdXNlcmZpbGUuYwotaW5kZXggNzI3NzlkYS4uZTlkMTNlNiAxMDA2NDQKLS0tLSBhL3NyYy91c2VyZmlsZS5jCi0rKysgYi9zcmMvdXNlcmZpbGUuYwotQEAgLTMyLDcgKzMyLDcgQEAKLSAgKiBzdG9yZXMgdGhlIGZpcnN0IG1hdGNoaW5lIG9uZS4gIFRoZSByZXR1cm5lZCBzdHJpbmcgaXMgc3RyZHVwJ2VkLgotICAqLwotIAotLSNpZmRlZiBIQVZFX1dPUkRFWFBfSAotKyNpZiAoZGVmaW5lZChIQVZFX1dPUkRFWFBfSCkgJiYgZGVmaW5lZChIQVZFX1dPUkRFWFApKQotICNpbmNsdWRlIDx3b3JkZXhwLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotIGludCBzbmRfdXNlcl9maWxlKGNvbnN0IGNoYXIgKmZpbGUsIGNoYXIgKipyZXN1bHQpCi0tLSAKLTIuNi40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvYXZvaWQtaW5jbHVkaW5nLXN5cy1wb2xsLmgtZGlyZWN0bHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkNDQ1ODUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvYXZvaWQtaW5jbHVkaW5nLXN5cy1wb2xsLmgtZGlyZWN0bHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxODMgKzAsMCBAQAotRnJvbSBjMmMxM2NmMGM0Njk4NjJjZDM5YjJhNjk4NjIwMDIzMzFhYjdjOGNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgOSBGZWIgMjAxNiAxNDowMToxOCAtMDgwMAotU3ViamVjdDogW1BBVENIXSBhdm9pZCBpbmNsdWRpbmcgPHN5cy9wb2xsLmg+IGRpcmVjdGx5Ci0KLUZpeGVzIGNvbXBpbGVyIHdhcm5pbmdzIHdoZW4gYnVpbGRpbmcgd2l0aCBtdXNsIGxpYmMuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotLS0tCi0gYXNlcnZlci9hc2VydmVyLmMgICAgICAgICB8IDIgKy0KLSBpbmNsdWRlL2Fzb3VuZGxpYi1oZWFkLmggIHwgMiArLQotIGluY2x1ZGUvYXNvdW5kbGliLmggICAgICAgfCAyICstCi0gaW5jbHVkZS9sb2NhbC5oICAgICAgICAgICB8IDIgKy0KLSBzcmMvY29udHJvbC9jb250cm9sLmMgICAgIHwgMiArLQotIHNyYy9jb250cm9sL2NvbnRyb2xfc2htLmMgfCAyICstCi0gc3JjL3BjbS9wY21fZGlyZWN0LmMgICAgICB8IDIgKy0KLSBzcmMvcGNtL3BjbV9tbWFwLmMgICAgICAgIHwgMiArLQotIHNyYy9wY20vcGNtX3NoYXJlLmMgICAgICAgfCAyICstCi0gc3JjL3BjbS9wY21fc2htLmMgICAgICAgICB8IDIgKy0KLSBzcmMvc2VxL3NlcS5jICAgICAgICAgICAgIHwgMiArLQotIHNyYy9zaG1hcmVhLmMgICAgICAgICAgICAgfCAyICstCi0gMTIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9hc2VydmVyL2FzZXJ2ZXIuYyBiL2FzZXJ2ZXIvYXNlcnZlci5jCi1pbmRleCBhYzIwNzA2Li40NmY3MzFhIDEwMDY0NAotLS0tIGEvYXNlcnZlci9hc2VydmVyLmMKLSsrKyBiL2FzZXJ2ZXIvYXNlcnZlci5jCi1AQCAtMjAsNyArMjAsNyBAQAotIAotICNpbmNsdWRlIDxzeXMvc2htLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLS0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjaW5jbHVkZSA8cG9sbC5oPgotICNpbmNsdWRlIDxzeXMvdW4uaD4KLSAjaW5jbHVkZSA8c3lzL3Vpby5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNvdW5kbGliLWhlYWQuaCBiL2luY2x1ZGUvYXNvdW5kbGliLWhlYWQuaAotaW5kZXggMWVjNjExZS4uMjFlMzJjNiAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvYXNvdW5kbGliLWhlYWQuaAotKysrIGIvaW5jbHVkZS9hc291bmRsaWItaGVhZC5oCi1AQCAtMzUsNiArMzUsNiBAQAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0tI2luY2x1ZGUgPHN5cy9wb2xsLmg+Ci0rI2luY2x1ZGUgPHBvbGwuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc291bmRsaWIuaCBiL2luY2x1ZGUvYXNvdW5kbGliLmgKLWluZGV4IDNjMjc2NmUuLmE1NDYxOTQgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2Fzb3VuZGxpYi5oCi0rKysgYi9pbmNsdWRlL2Fzb3VuZGxpYi5oCi1AQCAtMzUsNyArMzUsNyBAQAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0tI2luY2x1ZGUgPHN5cy9wb2xsLmg+Ci0rI2luY2x1ZGUgPHBvbGwuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci0gI2luY2x1ZGUgPGVuZGlhbi5oPgotZGlmZiAtLWdpdCBhL2luY2x1ZGUvbG9jYWwuaCBiL2luY2x1ZGUvbG9jYWwuaAotaW5kZXggMzE3ZjJlMy4uNmE0M2E0NyAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvbG9jYWwuaAotKysrIGIvaW5jbHVkZS9sb2NhbC5oCi1AQCAtNDcsNyArNDcsNyBAQAotICNlcnJvciBIZWFkZXIgZGVmaW5pbmcgZW5kaWFubmVzcyBub3QgZGVmaW5lZAotICNlbmRpZgotICNpbmNsdWRlIDxzdGRhcmcuaD4KLS0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjaW5jbHVkZSA8cG9sbC5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaWYgZGVmaW5lZChfX2xpbnV4X18pCi1kaWZmIC0tZ2l0IGEvc3JjL2NvbnRyb2wvY29udHJvbC5jIGIvc3JjL2NvbnRyb2wvY29udHJvbC5jCi1pbmRleCA2YzAwYjhlLi5mZDBjMzAzIDEwMDY0NAotLS0tIGEvc3JjL2NvbnRyb2wvY29udHJvbC5jCi0rKysgYi9zcmMvY29udHJvbC9jb250cm9sLmMKLUBAIC05MCw3ICs5MCw3IEBAIEkvTyBvcGVyYXRpb25zLgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0tI2luY2x1ZGUgPHN5cy9wb2xsLmg+Ci0rI2luY2x1ZGUgPHBvbGwuaD4KLSAjaW5jbHVkZSA8c3RkYm9vbC5oPgotICNpbmNsdWRlICJjb250cm9sX2xvY2FsLmgiCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL2NvbnRyb2wvY29udHJvbF9zaG0uYyBiL3NyYy9jb250cm9sL2NvbnRyb2xfc2htLmMKLWluZGV4IGJkMDdkNGEuLjlhMmUyNjggMTAwNjQ0Ci0tLS0gYS9zcmMvY29udHJvbC9jb250cm9sX3NobS5jCi0rKysgYi9zcmMvY29udHJvbC9jb250cm9sX3NobS5jCi1AQCAtMjcsNyArMjcsNyBAQAotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzeXMvc2htLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLS0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjaW5jbHVkZSA8cG9sbC5oPgotICNpbmNsdWRlIDxzeXMvdW4uaD4KLSAjaW5jbHVkZSA8c3lzL3Vpby5oPgotICNpbmNsdWRlIDxzeXMvbW1hbi5oPgotZGlmZiAtLWdpdCBhL3NyYy9wY20vcGNtX2RpcmVjdC5jIGIvc3JjL3BjbS9wY21fZGlyZWN0LmMKLWluZGV4IGMzOTI1Y2MuLjE4ZjFkZDUgMTAwNjQ0Ci0tLS0gYS9zcmMvcGNtL3BjbV9kaXJlY3QuYwotKysrIGIvc3JjL3BjbS9wY21fZGlyZWN0LmMKLUBAIC0zMCw3ICszMCw3IEBACi0gI2luY2x1ZGUgPGdycC5oPgotICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSAjaW5jbHVkZSA8c3lzL21tYW4uaD4KLS0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjaW5jbHVkZSA8cG9sbC5oPgotICNpbmNsdWRlIDxzeXMvc2htLmg+Ci0gI2luY2x1ZGUgPHN5cy9zZW0uaD4KLSAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KLWRpZmYgLS1naXQgYS9zcmMvcGNtL3BjbV9tbWFwLmMgYi9zcmMvcGNtL3BjbV9tbWFwLmMKLWluZGV4IDE5NDgyODkuLjRjZjIyMGEgMTAwNjQ0Ci0tLS0gYS9zcmMvcGNtL3BjbV9tbWFwLmMKLSsrKyBiL3NyYy9wY20vcGNtX21tYXAuYwotQEAgLTIyLDcgKzIyLDcgQEAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8bWFsbG9jLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotLSNpbmNsdWRlIDxzeXMvcG9sbC5oPgotKyNpbmNsdWRlIDxwb2xsLmg+Ci0gI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci0gI2lmZGVmIEhBVkVfU1lTX1NITV9ICi0gI2luY2x1ZGUgPHN5cy9zaG0uaD4KLWRpZmYgLS1naXQgYS9zcmMvcGNtL3BjbV9zaGFyZS5jIGIvc3JjL3BjbS9wY21fc2hhcmUuYwotaW5kZXggNWQ4YWFmMi4uMjFhNTdmYyAxMDA2NDQKLS0tLSBhL3NyYy9wY20vcGNtX3NoYXJlLmMKLSsrKyBiL3NyYy9wY20vcGNtX3NoYXJlLmMKLUBAIC0zNCw3ICszNCw3IEBACi0gI2luY2x1ZGUgPHNpZ25hbC5oPgotICNpbmNsdWRlIDxtYXRoLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLS0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjaW5jbHVkZSA8cG9sbC5oPgotICNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0gI2luY2x1ZGUgInBjbV9sb2NhbC5oIgotIAotZGlmZiAtLWdpdCBhL3NyYy9wY20vcGNtX3NobS5jIGIvc3JjL3BjbS9wY21fc2htLmMKLWluZGV4IGE4MTVhYzYuLjRlZTk1OGMgMTAwNjQ0Ci0tLS0gYS9zcmMvcGNtL3BjbV9zaG0uYwotKysrIGIvc3JjL3BjbS9wY21fc2htLmMKLUBAIC0zNiw3ICszNiw3IEBACi0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotICNpbmNsdWRlIDxzeXMvc2htLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLS0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjaW5jbHVkZSA8cG9sbC5oPgotICNpbmNsdWRlIDxzeXMvdW4uaD4KLSAjaW5jbHVkZSA8c3lzL21tYW4uaD4KLSAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotZGlmZiAtLWdpdCBhL3NyYy9zZXEvc2VxLmMgYi9zcmMvc2VxL3NlcS5jCi1pbmRleCA5Mjc5ODMwLi5kMjAyN2NiIDEwMDY0NAotLS0tIGEvc3JjL3NlcS9zZXEuYwotKysrIGIvc3JjL3NlcS9zZXEuYwotQEAgLTc3Nyw3ICs3NzcsNyBAQCB2b2lkIGV2ZW50X2ZpbHRlcihzbmRfc2VxX3QgKnNlcSwgc25kX3NlcV9ldmVudF90ICpldikKLSAKLSAqLwotIAotLSNpbmNsdWRlIDxzeXMvcG9sbC5oPgotKyNpbmNsdWRlIDxwb2xsLmg+Ci0gI2luY2x1ZGUgInNlcV9sb2NhbC5oIgotIAotIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1kaWZmIC0tZ2l0IGEvc3JjL3NobWFyZWEuYyBiL3NyYy9zaG1hcmVhLmMKLWluZGV4IDk4NDNhYTguLmVhYTcxZjAgMTAwNjQ0Ci0tLS0gYS9zcmMvc2htYXJlYS5jCi0rKysgYi9zcmMvc2htYXJlYS5jCi1AQCAtMjcsNyArMjcsNyBAQAotICNpbmNsdWRlIDxtYWxsb2MuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPHN5cy9wb2xsLmg+Ci0rI2luY2x1ZGUgPHBvbGwuaD4KLSAjaW5jbHVkZSA8c3lzL21tYW4uaD4KLSAjaW5jbHVkZSA8c3lzL3NobS5oPgotICNpbmNsdWRlICJsaXN0LmgiCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS40LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYl8xLjEuNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2RlYWUxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1TVU1NQVJZID0gIkFMU0Egc291bmQgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgotU0VDVElPTiA9ICJsaWJzL211bHRpbWVkaWEiCi1MSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3NvY2tldC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjY7bWQ1PTExZmY4OWE4YTdhNGE2OTBhNWM3OGVmZmU4MTU5NTQ1IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL2xpYi8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL0NoZWNrLWlmLXdvcmRleHAtZnVuY3Rpb24taXMtc3VwcG9ydGVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyOWZhM2U2OTEyMmQzY2YzZThmMGUwMWEwY2IxZDE4MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MWJiODcwYzE0ZDFjN2MyNjkyMTMyODVlZWVkODc0ZmEzZDI4MTEyMDc3ZGIwNjFhM2FmODAxMGQwODg1Yjc2IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotcmVxdWlyZSBhbHNhLWZwdS5pbmMKLUVYVFJBX09FQ09ORiArPSAiJHtAZ2V0X2Fsc2FfZnB1X3NldHRpbmcoYmIsIGQpfSAiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXB5dGhvbiIKLQotUEFDS0FHRVMgPSsgImFsc2Etc2VydmVyIGxpYmFzb3VuZCBhbHNhLWNvbmYgYWxzYS1kb2MiCi1GSUxFU19saWJhc291bmQgPSAiJHtsaWJkaXJ9L2xpYmFzb3VuZC5zby4qIgotRklMRVNfYWxzYS1zZXJ2ZXIgPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU19hbHNhLWNvbmYgPSAiJHtkYXRhZGlyfS9hbHNhLyIKLQotUkRFUEVORFNfbGliYXNvdW5kID0gImFsc2EtY29uZiIKLQotIyBhbHNhLWxpYiBnZXRzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gYWxzYS1saWItZGV2IGRlcGVuZGVuY2llcywgYnV0IHRoZQotIyBhbHNhLWxpYiBwYWNrYWdlIGRvZXNuJ3QgZXhpc3QuIGxpYmFzb3VuZCBpcyB0aGUgcmVhbCBsaWJyYXJ5IHBhY2thZ2UuCi1SREVQRU5EU18ke1BOfS1kZXYgPSAibGliYXNvdW5kIgotCi0jIHVwZ3JhZGUgcGF0aAotUlBST1ZJREVTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKLVJSRVBMQUNFU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCi1SQ09ORkxJQ1RTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKLQotUlBST1ZJREVTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKLVJSRVBMQUNFU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCi1SQ09ORkxJQ1RTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWJfMS4xLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzViZjEwNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS41LmJiCkBAIC0wLDAgKzEsNDAgQEAKK1NVTU1BUlkgPSAiQUxTQSBzb3VuZCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCitTRUNUSU9OID0gImxpYnMvbXVsdGltZWRpYSIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc29ja2V0LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNjttZDU9MTFmZjg5YThhN2E0YTY5MGE1Yzc4ZWZmZTgxNTk1NDUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworU1JDX1VSSSA9ICJmdHA6Ly9mdHAuYWxzYS1wcm9qZWN0Lm9yZy9wdWIvbGliLyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiYTJiNDY1YzNhNTI2NWQ4YTU3ZjNmZjM5YzZjNGZjMjkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjRmNjhhZDNjNmRhMzZiMGI1MjQxYWMzYzc5OGE3YTcxZTBlOTdkNTFmOTcyZTlmNzIzYjNmMjBhOTY1MGFlNiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK3JlcXVpcmUgYWxzYS1mcHUuaW5jCitFWFRSQV9PRUNPTkYgKz0gIiR7QGdldF9hbHNhX2ZwdV9zZXR0aW5nKGJiLCBkKX0gIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1weXRob24iCisKK1BBQ0tBR0VTID0rICJhbHNhLXNlcnZlciBsaWJhc291bmQgYWxzYS1jb25mIGFsc2EtZG9jIgorRklMRVNfbGliYXNvdW5kID0gIiR7bGliZGlyfS9saWJhc291bmQuc28uKiIKK0ZJTEVTX2Fsc2Etc2VydmVyID0gIiR7YmluZGlyfS8qIgorRklMRVNfYWxzYS1jb25mID0gIiR7ZGF0YWRpcn0vYWxzYS8iCisKK1JERVBFTkRTX2xpYmFzb3VuZCA9ICJhbHNhLWNvbmYiCisKKyMgYWxzYS1saWIgZ2V0cyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIGFsc2EtbGliLWRldiBkZXBlbmRlbmNpZXMsIGJ1dCB0aGUKKyMgYWxzYS1saWIgcGFja2FnZSBkb2Vzbid0IGV4aXN0LiBsaWJhc291bmQgaXMgdGhlIHJlYWwgbGlicmFyeSBwYWNrYWdlLgorUkRFUEVORFNfJHtQTn0tZGV2ID0gImxpYmFzb3VuZCIKKworIyB1cGdyYWRlIHBhdGgKK1JQUk9WSURFU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCitSUkVQTEFDRVNfJHtQTn0tZGV2ID0gImFsc2EtZGV2IgorUkNPTkZMSUNUU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCisKK1JQUk9WSURFU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCitSUkVQTEFDRVNfYWxzYS1jb25mID0gImFsc2EtY29uZi1iYXNlIgorUkNPTkZMSUNUU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXBsdWdpbnNfMS4xLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXBsdWdpbnNfMS4xLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3Zjc5YjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLVNVTU1BUlkgPSAiQUxTQSBQbHVnaW5zIgotSE9NRVBBR0UgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmciCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKLVNFQ1RJT04gPSAibXVsdGltZWRpYSIKLQotIyBUaGUgcHJpbWFyeSBsaWNlbnNlIG9mIGFsc2EtcGx1Z2lucyBpcyBMR1BMdjIuMS4KLSMKLSMgbTQvYXR0cmlidXRlcy5tNCBpcyBsaWNlbnNlZCB1bmRlciBHUEx2MisuIG00L2F0dHJpYnV0ZXMubTQgaXMgcGFydCBvZiB0aGUKLSMgYnVpbGQgc3lzdGVtLCBhbmQgZG9lc24ndCBhZmZlY3QgdGhlIGxpY2Vuc2luZyBvZiB0aGUgYnVpbGQgcmVzdWx0LgotIwotIyBUaGUgc2FtcGxlcmF0ZSBwbHVnaW4gc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgR1BMdjIrIHRvIGJlIGNvbnNpc3RlbnQKLSMgd2l0aCB0aGUgbGlic2FtcGxlcmF0ZSBsaWNlbnNlLiBIb3dldmVyLCBpZiB0aGUgbGljZW5zZWUgaGFzIGEgY29tbWVyY2lhbAotIyBsaWNlbnNlIGZvciBsaWJzYW1wbGVyYXRlLCB0aGUgc2FtcGxlcmF0ZSBwbHVnaW4gbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zCi0jIG9mIExHUEx2Mi4xIGxpa2UgdGhlIHJlc3Qgb2YgdGhlIHBsdWdpbnMuCi1MSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJcCi0gICAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCBcCi0gICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICBmaWxlOi8vbTQvYXR0cmlidXRlcy5tNDtlbmRsaW5lPTMzO21kNT1iMjU5NThkYTQ0YzAyMjMxZTM2NDFmMWJjY2VmNTNlYiBcCi0gICAgICAgIGZpbGU6Ly9yYXRlL3JhdGVfc2FtcGxlcmF0ZS5jO2VuZGxpbmU9MzU7bWQ1PWZkNzdiY2U4NWY0YTMzOGMwZThhYjE4NDMwYjY5ZmFlIFwKLSIKLQotU1JDX1VSSSA9ICJmdHA6Ly9mdHAuYWxzYS1wcm9qZWN0Lm9yZy9wdWIvcGx1Z2lucy8ke0JQfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gImRlNTExMzBhNzQ0NGI3OWIyZGQzYzI1ZTI4NDIwNzU0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUzMGQxYzNiZGFlYjA1OGYyYTAzNjA3YTMzYjllMTZlZTUzNjliZmQzMGE5NmJjMDliZDJjNjliNGRkZDFhOGEiCi0KLURFUEVORFMgKz0gImFsc2EtbGliIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIlwKLSAgICAgICAgc2FtcGxlcmF0ZSBcCi0gICAgICAgIHNwZWV4ZHNwIFwKLSAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncHVsc2VhdWRpbycsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2F2Y29kZWNdID0gIi0tZW5hYmxlLWF2Y29kZWMsLS1kaXNhYmxlLWF2Y29kZWMsbGliYXYiCi1QQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWphY2ssLS1kaXNhYmxlLWphY2ssamFjayIKLVBBQ0tBR0VDT05GSUdbbWFlbW8tcGx1Z2luXSA9ICItLWVuYWJsZS1tYWVtby1wbHVnaW4sLS1kaXNhYmxlLW1hZW1vLXBsdWdpbiIKLVBBQ0tBR0VDT05GSUdbbWFlbW8tcmVzb3VyY2UtbWFuYWdlcl0gPSAiLS1lbmFibGUtbWFlbW8tcmVzb3VyY2UtbWFuYWdlciwtLWRpc2FibGUtbWFlbW8tcmVzb3VyY2UtbWFuYWdlcixkYnVzIgotUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItLWVuYWJsZS1wdWxzZWF1ZGlvLC0tZGlzYWJsZS1wdWxzZWF1ZGlvLHB1bHNlYXVkaW8iCi1QQUNLQUdFQ09ORklHW3NhbXBsZXJhdGVdID0gIi0tZW5hYmxlLXNhbXBsZXJhdGUsLS1kaXNhYmxlLXNhbXBsZXJhdGUsbGlic2FtcGxlcmF0ZTAiCi1QQUNLQUdFQ09ORklHW3NwZWV4ZHNwXSA9ICItLXdpdGgtc3BlZXg9bGliLC0td2l0aC1zcGVleD1ubyxzcGVleGRzcCIKLQotUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B1bHNlYXVkaW8nLCAnYWxzYS1wbHVnaW5zLXB1bHNlYXVkaW8tY29uZicsICcnLCBkKX0iCi0KLVBBQ0tBR0VTX0RZTkFNSUMgPSAiXmxpYmFzb3VuZC1tb2R1bGUtLioiCi0KLSMgVGhlIGFsc2EtcGx1Z2lucyBwYWNrYWdlIGRvZXNuJ3QgaXRzZWxmIGNvbnRhaW4gYW55dGhpbmcsIGl0IGp1c3QgZGVwZW5kcyBvbgotIyBhbGwgYnVpbHQgcGx1Z2lucy4KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCXJtICR7RH0ke2xpYmRpcn0vYWxzYS1saWIvKi5sYQotCi0JIyBXZSB1c2UgdGhlIGV4YW1wbGUgYXMgaXMsIHNvIGp1c3QgZHJvcCB0aGUgLmV4YW1wbGUgc3VmZml4LgotCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B1bHNlYXVkaW8nLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KLQkJbXYgJHtEfSR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZi5leGFtcGxlICR7RH0ke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYKLQlmaQotfQotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKLSAgICBwbHVnaW5kaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2Fsc2EtbGliLycpCi0gICAgcGFja2FnZXMgPSAiICIuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBwbHVnaW5kaXIsICdebGliYXNvdW5kX21vZHVsZV8oLiopXC5zbyQnLCAnbGliYXNvdW5kLW1vZHVsZS0lcycsICdBbHNhIHBsdWdpbiBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnKSkKLSAgICBkLnNldFZhcigiUkRFUEVORFNfYWxzYS1wbHVnaW5zIiwgcGFja2FnZXMpCi19Ci0KLSMgVGhlIHJhdGUgcGx1Z2lucyBjcmVhdGUgc29tZSBzeW1saW5rcy4gRm9yIGV4YW1wbGUsIHRoZSBzYW1wbGVyYXRlIHBsdWdpbgotIyBjcmVhdGVzIHRoZXNlIGxpbmtzIHRvIHRoZSBtYWluIHBsdWdpbiBmaWxlOgotIwotIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX2Jlc3Quc28KLSMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9saW5lYXIuc28KLSMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9tZWRpdW0uc28KLSMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9vcmRlci5zbwotIwotIyBUaGUgb3RoZXIgcmF0ZSBwbHVnaW5zIGNyZWF0ZSBzaW1pbGFyIGxpbmtzLiBXZSBoYXZlIHRvIGFkZCB0aGUgbGlua3MgdG8KLSMgRklMRVMgbWFudWFsbHksIGJlY2F1c2UgZG9fc3BsaXRfcGFja2FnZXMoKSBza2lwcyB0aGUgbGlua3MgKHdoaWNoIGlzIGdvb2QsCi0jIGJlY2F1c2Ugd2Ugd291bGRuJ3Qgd2FudCBkb19zcGxpdF9wYWNrYWdlcygpIHRvIGNyZWF0ZSBzZXBhcmF0ZSBwYWNrYWdlcyBmb3IKLSMgdGhlIHN5bWxpbmtzKS4KLSMKLSMgVGhlIHN5bWxpbmtzIGNhdXNlIFFBIGVycm9ycywgYmVjYXVzZSB1c3VhbGx5IGl0J3MgYSBidWcgaWYgYSBub24KLSMgLWRldi8tZGJnLy1uYXRpdmVzZGsgcGFja2FnZSBjb250YWlucyBsaW5rcyB0byAuc28gZmlsZXMsIGJ1dCBpbiB0aGlzIGNhc2UKLSMgdGhlIGVycm9ycyBhcmUgZmFsc2UgcG9zaXRpdmVzLCBzbyB3ZSBkaXNhYmxlIHRoZSBRQSBjaGVja3MuCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZjcmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX2xhdmNyYXRlXyouc28iCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc2FtcGxlcmF0ZV8qLnNvIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc3BlZXhyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc3BlZXhyYXRlXyouc28iCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZjcmF0ZSA9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlID0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNwZWV4cmF0ZSA9ICJkZXYtc28iCi0KLSMgNTAtcHVsc2VhdWRpby5jb25mIGRlZmluZXMgYSBkZXZpY2UgbmFtZWQgInB1bHNlIiB0aGF0IGFwcGxpY2F0aW9ucyBjYW4gdXNlCi0jIGlmIHRoZXkgZXhwbGljaXRseSB3YW50IHRvIHVzZSB0aGUgUHVsc2VBdWRpbyBwbHVnaW4uCi0jIDk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mIGNvbmZpZ3VyZXMgdGhlICJkZWZhdWx0IiBkZXZpY2UgdG8gdXNlIHRoZQotIyBQdWxzZUF1ZGlvIHBsdWdpbi4KLUZJTEVTXyR7UE59LXB1bHNlYXVkaW8tY29uZiArPSAiXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNTAtcHVsc2VhdWRpby5jb25mIFwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tcHVsc2VhdWRpby1jb25mICs9ICJcCi0gICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtY29uZi1wdWxzZSBcCi0gICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtY3RsLXB1bHNlIFwKLSAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1wY20tcHVsc2UgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZDBhY2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXBsdWdpbnNfMS4xLjUuYmIKQEAgLTAsMCArMSwxMDMgQEAKK1NVTU1BUlkgPSAiQUxTQSBQbHVnaW5zIgorSE9NRVBBR0UgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmciCitCVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKK1NFQ1RJT04gPSAibXVsdGltZWRpYSIKKworIyBUaGUgcHJpbWFyeSBsaWNlbnNlIG9mIGFsc2EtcGx1Z2lucyBpcyBMR1BMdjIuMS4KKyMKKyMgbTQvYXR0cmlidXRlcy5tNCBpcyBsaWNlbnNlZCB1bmRlciBHUEx2MisuIG00L2F0dHJpYnV0ZXMubTQgaXMgcGFydCBvZiB0aGUKKyMgYnVpbGQgc3lzdGVtLCBhbmQgZG9lc24ndCBhZmZlY3QgdGhlIGxpY2Vuc2luZyBvZiB0aGUgYnVpbGQgcmVzdWx0LgorIworIyBUaGUgc2FtcGxlcmF0ZSBwbHVnaW4gc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgR1BMdjIrIHRvIGJlIGNvbnNpc3RlbnQKKyMgd2l0aCB0aGUgbGlic2FtcGxlcmF0ZSBsaWNlbnNlLiBIb3dldmVyLCBpZiB0aGUgbGljZW5zZWUgaGFzIGEgY29tbWVyY2lhbAorIyBsaWNlbnNlIGZvciBsaWJzYW1wbGVyYXRlLCB0aGUgc2FtcGxlcmF0ZSBwbHVnaW4gbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zCisjIG9mIExHUEx2Mi4xIGxpa2UgdGhlIHJlc3Qgb2YgdGhlIHBsdWdpbnMuCitMSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJcCisgICAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCBcCisgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgICAgICBmaWxlOi8vbTQvYXR0cmlidXRlcy5tNDtlbmRsaW5lPTMzO21kNT1iMjU5NThkYTQ0YzAyMjMxZTM2NDFmMWJjY2VmNTNlYiBcCisgICAgICAgIGZpbGU6Ly9yYXRlL3JhdGVfc2FtcGxlcmF0ZS5jO2VuZGxpbmU9MzU7bWQ1PWZkNzdiY2U4NWY0YTMzOGMwZThhYjE4NDMwYjY5ZmFlIFwKKyIKKworU1JDX1VSSSA9ICJmdHA6Ly9mdHAuYWxzYS1wcm9qZWN0Lm9yZy9wdWIvcGx1Z2lucy8ke0JQfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gImY4OThiMGU2ZThhY2YzZjZmODJiYzJhMGYwYzg0YTk3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc5N2RhNWY4ZjUzMzc5ZmJlYTI4ODE3YmM0NjZkZTE2YWZmZDJjMDc4NDllODRmMWFmOGQ1ZTIyZjdiYjdmMWMiCisKK0RFUEVORFMgKz0gImFsc2EtbGliIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRUNPTkZJRyA/Pz0gIlwKKyAgICAgICAgc2FtcGxlcmF0ZSBcCisgICAgICAgIHNwZWV4ZHNwIFwKKyAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncHVsc2VhdWRpbycsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW2F2Y29kZWNdID0gIi0tZW5hYmxlLWF2Y29kZWMsLS1kaXNhYmxlLWF2Y29kZWMsbGliYXYiCitQQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWphY2ssLS1kaXNhYmxlLWphY2ssamFjayIKK1BBQ0tBR0VDT05GSUdbbWFlbW8tcGx1Z2luXSA9ICItLWVuYWJsZS1tYWVtby1wbHVnaW4sLS1kaXNhYmxlLW1hZW1vLXBsdWdpbiIKK1BBQ0tBR0VDT05GSUdbbWFlbW8tcmVzb3VyY2UtbWFuYWdlcl0gPSAiLS1lbmFibGUtbWFlbW8tcmVzb3VyY2UtbWFuYWdlciwtLWRpc2FibGUtbWFlbW8tcmVzb3VyY2UtbWFuYWdlcixkYnVzIgorUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItLWVuYWJsZS1wdWxzZWF1ZGlvLC0tZGlzYWJsZS1wdWxzZWF1ZGlvLHB1bHNlYXVkaW8iCitQQUNLQUdFQ09ORklHW3NhbXBsZXJhdGVdID0gIi0tZW5hYmxlLXNhbXBsZXJhdGUsLS1kaXNhYmxlLXNhbXBsZXJhdGUsbGlic2FtcGxlcmF0ZTAiCitQQUNLQUdFQ09ORklHW3NwZWV4ZHNwXSA9ICItLXdpdGgtc3BlZXg9bGliLC0td2l0aC1zcGVleD1ubyxzcGVleGRzcCIKKworUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B1bHNlYXVkaW8nLCAnYWxzYS1wbHVnaW5zLXB1bHNlYXVkaW8tY29uZicsICcnLCBkKX0iCisKK1BBQ0tBR0VTX0RZTkFNSUMgPSAiXmxpYmFzb3VuZC1tb2R1bGUtLioiCisKKyMgVGhlIGFsc2EtcGx1Z2lucyBwYWNrYWdlIGRvZXNuJ3QgaXRzZWxmIGNvbnRhaW4gYW55dGhpbmcsIGl0IGp1c3QgZGVwZW5kcyBvbgorIyBhbGwgYnVpbHQgcGx1Z2lucy4KK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCXJtICR7RH0ke2xpYmRpcn0vYWxzYS1saWIvKi5sYQorCisJIyBXZSB1c2UgdGhlIGV4YW1wbGUgYXMgaXMsIHNvIGp1c3QgZHJvcCB0aGUgLmV4YW1wbGUgc3VmZml4LgorCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B1bHNlYXVkaW8nLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KKwkJbXYgJHtEfSR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZi5leGFtcGxlICR7RH0ke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYKKwlmaQorfQorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKKyAgICBwbHVnaW5kaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2Fsc2EtbGliLycpCisgICAgcGFja2FnZXMgPSAiICIuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBwbHVnaW5kaXIsICdebGliYXNvdW5kX21vZHVsZV8oLiopXC5zbyQnLCAnbGliYXNvdW5kLW1vZHVsZS0lcycsICdBbHNhIHBsdWdpbiBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnKSkKKyAgICBkLnNldFZhcigiUkRFUEVORFNfYWxzYS1wbHVnaW5zIiwgcGFja2FnZXMpCit9CisKKyMgVGhlIHJhdGUgcGx1Z2lucyBjcmVhdGUgc29tZSBzeW1saW5rcy4gRm9yIGV4YW1wbGUsIHRoZSBzYW1wbGVyYXRlIHBsdWdpbgorIyBjcmVhdGVzIHRoZXNlIGxpbmtzIHRvIHRoZSBtYWluIHBsdWdpbiBmaWxlOgorIworIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX2Jlc3Quc28KKyMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9saW5lYXIuc28KKyMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9tZWRpdW0uc28KKyMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9vcmRlci5zbworIworIyBUaGUgb3RoZXIgcmF0ZSBwbHVnaW5zIGNyZWF0ZSBzaW1pbGFyIGxpbmtzLiBXZSBoYXZlIHRvIGFkZCB0aGUgbGlua3MgdG8KKyMgRklMRVMgbWFudWFsbHksIGJlY2F1c2UgZG9fc3BsaXRfcGFja2FnZXMoKSBza2lwcyB0aGUgbGlua3MgKHdoaWNoIGlzIGdvb2QsCisjIGJlY2F1c2Ugd2Ugd291bGRuJ3Qgd2FudCBkb19zcGxpdF9wYWNrYWdlcygpIHRvIGNyZWF0ZSBzZXBhcmF0ZSBwYWNrYWdlcyBmb3IKKyMgdGhlIHN5bWxpbmtzKS4KKyMKKyMgVGhlIHN5bWxpbmtzIGNhdXNlIFFBIGVycm9ycywgYmVjYXVzZSB1c3VhbGx5IGl0J3MgYSBidWcgaWYgYSBub24KKyMgLWRldi8tZGJnLy1uYXRpdmVzZGsgcGFja2FnZSBjb250YWlucyBsaW5rcyB0byAuc28gZmlsZXMsIGJ1dCBpbiB0aGlzIGNhc2UKKyMgdGhlIGVycm9ycyBhcmUgZmFsc2UgcG9zaXRpdmVzLCBzbyB3ZSBkaXNhYmxlIHRoZSBRQSBjaGVja3MuCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZjcmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX2xhdmNyYXRlXyouc28iCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc2FtcGxlcmF0ZV8qLnNvIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc3BlZXhyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc3BlZXhyYXRlXyouc28iCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZjcmF0ZSA9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlID0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNwZWV4cmF0ZSA9ICJkZXYtc28iCisKKyMgNTAtcHVsc2VhdWRpby5jb25mIGRlZmluZXMgYSBkZXZpY2UgbmFtZWQgInB1bHNlIiB0aGF0IGFwcGxpY2F0aW9ucyBjYW4gdXNlCisjIGlmIHRoZXkgZXhwbGljaXRseSB3YW50IHRvIHVzZSB0aGUgUHVsc2VBdWRpbyBwbHVnaW4uCisjIDk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mIGNvbmZpZ3VyZXMgdGhlICJkZWZhdWx0IiBkZXZpY2UgdG8gdXNlIHRoZQorIyBQdWxzZUF1ZGlvIHBsdWdpbi4KK0ZJTEVTXyR7UE59LXB1bHNlYXVkaW8tY29uZiArPSAiXAorICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNTAtcHVsc2VhdWRpby5jb25mIFwKKyAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mIFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHVsc2VhdWRpby1jb25mICs9ICJcCisgICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtY29uZi1wdWxzZSBcCisgICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtY3RsLXB1bHNlIFwKKyAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1wY20tcHVsc2UgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy8wMDAxLWFzMTBrMS1NYWtlLW91dHB1dF90cmFtX2xpbmUtc3RhdGljLWlubGluZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHMvMDAwMS1hczEwazEtTWFrZS1vdXRwdXRfdHJhbV9saW5lLXN0YXRpYy1pbmxpbmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwNDlhMzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy8wMDAxLWFzMTBrMS1NYWtlLW91dHB1dF90cmFtX2xpbmUtc3RhdGljLWlubGluZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gMWU1OTI2ZGY3NGEzNWZlMmNkOTBiYzU5ZjUyNjRhODcxNWM5NDA0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDcgU2VwIDIwMTUgMDg6MTY6NTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXMxMGsxOiBNYWtlIG91dHB1dF90cmFtX2xpbmUoKSBzdGF0aWMgaW5saW5lCi0KLVRoZSBmdW5jdGlvbiBpcyBub3QgdXNlZCBpbiBhbnkgb3RoZXIgZmlsZSwgaXRzIGJldHRlciB0byBtYWtlIGl0IHN0YXRpYwotaW5saW5lIHNvIGNvbXBpbGVyIGhhcyBhIGJldHRlciBjaGFuY2Ugb2Ygb3B0aW1pemluZyBoZXJlCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gYXMxMGsxL2FzMTBrMS5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYXMxMGsxL2FzMTBrMS5jIGIvYXMxMGsxL2FzMTBrMS5jCi1pbmRleCA5NmFmMGMzLi5kMDc2NmZkIDEwMDY0NAotLS0tIGEvYXMxMGsxL2FzMTBrMS5jCi0rKysgYi9hczEwazEvYXMxMGsxLmMKLUBAIC0zNjYsNyArMzY2LDcgQEAgdm9pZCBhc19leGl0KGNvbnN0IGNoYXIgKm1lc3NhZ2UpCi0gCWV4aXQoMSk7Ci0gfQotIAotLWlubGluZSB2b2lkIG91dHB1dF90cmFtX2xpbmUoIHN0cnVjdCBsaXN0X2hlYWQgKmxpbmVfaGVhZCwgaW50IHR5cGUpewotK3N0YXRpYyBpbmxpbmUgdm9pZCBvdXRwdXRfdHJhbV9saW5lKCBzdHJ1Y3QgbGlzdF9oZWFkICpsaW5lX2hlYWQsIGludCB0eXBlKXsKLSAgICAgICAgIAotICAgICAgICAgc3RydWN0IHRyYW0gKnRyYW1fc3ltOwotICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqZW50cnk7Ci0tLSAKLTIuNS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHMvYXV0b3Rvb2xzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy9hdXRvdG9vbHMucGF0Y2gKaW5kZXggMzE5ZjI1ZC4uMmU3NDk2MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy9hdXRvdG9vbHMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy9hdXRvdG9vbHMucGF0Y2gKQEAgLTIwLDcgKzIwLDcgQEAKIC0tLSBhbHNhLXRvb2xzLTEuMC4yNC4xLW9yaWcvL01ha2VmaWxlCTIwMTEtMDctMDYgMTE6Mjc6NDAuMjA3NjY1MDAwICswODAwCiArKysgYWxzYS10b29scy0xLjAuMjQuMS9NYWtlZmlsZQkyMDExLTA3LTE0IDE1OjA4OjA4Ljg3NzY2NTAwOSArMDgwMAogQEAgLTEsOCArMSw4IEBACi0gVkVSU0lPTiA9IDEuMS4wCisgVkVSU0lPTiA9IDEuMS41CiAgVE9QID0gLgogLVNVQkRJUlMgPSBhczEwazEgZW52eTI0Y29udHJvbCBoZHNwbG9hZGVyIGhkc3Bjb25mIGhkc3BtaXhlciBcCiArU1VCRElSUyA9IGFzMTBrMSBlbnZ5MjRjb250cm9sIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHMvbWFrZWZpbGVfbm9fZ3RrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy9tYWtlZmlsZV9ub19ndGsucGF0Y2gKaW5kZXggOWJkNjg0OC4uNTQzNzNkMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy9tYWtlZmlsZV9ub19ndGsucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29scy9tYWtlZmlsZV9ub19ndGsucGF0Y2gKQEAgLTE0LDcgKzE0LDcgQEAKIC0tLSBhL01ha2VmaWxlCiArKysgYi9NYWtlZmlsZQogQEAgLTEsOSArMSw5IEBACi0gVkVSU0lPTiA9IDEuMS4wCisgVkVSU0lPTiA9IDEuMS41CiAgVE9QID0gLgogLVNVQkRJUlMgPSBhczEwazEgZW52eTI0Y29udHJvbCBcCiAtCSAgbWl4YXJ0bG9hZGVyIHBjeGhybG9hZGVyIHJtZWRpZ2ljb250cm9sIHNiMTZfY3NwIHNlcSBzc2NhcGVfY3RsIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHNfMS4xLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzXzEuMS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTk3YzBlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHNfMS4xLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1TVU1NQVJZID0gIkFkdmFuY2VkIHRvb2xzIGZvciBjZXJ0YWluIEFMU0Egc291bmQgY2FyZCBkcml2ZXJzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyKyIKLURFUEVORFMgPSAiYWxzYS1saWIgbmN1cnNlcyBnbGliLTIuMCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vaGRzcGxvYWRlci9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9sZDEwazEvQ09QWUlORy5MSUI7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IgotCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi90b29scy8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2F1dG90b29scy5wYXRjaCBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJycsICdmaWxlOi8vbWFrZWZpbGVfbm9fZ3RrLnBhdGNoJywgZCl9IFwKLSAgICAgICAgICAgZmlsZTovL2dpdGNvbXBpbGVfaGRhamFja3NlbnNldGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWFzMTBrMS1NYWtlLW91dHB1dF90cmFtX2xpbmUtc3RhdGljLWlubGluZS5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImIyM2VhYWU2ODdkNTU0MTBiOTI1ODdjMjA1M2IzMDFmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ4OGYxZGNkNjg3MjEyMTM4M2VkZWQ1ZmEyNGUzMjhlNjhjNTRlNTI3ZGI0NTQ3ZTE0MzVkNWVhYmMyYjY3MDkiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKLQotQ0xFQU5CUk9LRU4gPSAiMSIKLQotRVhUUkFfT0VNQUtFICs9ICJHSVRDT01QSUxFX0FSR1M9Jy0taG9zdD0ke0hPU1RfU1lTfSAtLWJ1aWxkPSR7QlVJTERfU1lTfSAtLXRhcmdldD0ke1RBUkdFVF9TWVN9IC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSAtLXByZWZpeD0ke3ByZWZpeH0nIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnZ3RrKycsICcnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2d0aytdID0gIiwsZ3RrKyBndGsrMywiCi0KLSMgY29uZmlndXJlLmFjLy5pbiBkb2Vzbid0IGV4aXN0IHNvIGZvcmNlIGNvcHkKLUFVVE9UT09MU19DT1BZQUNMT0NBTCA9ICIxIgotCi1kb19jb21waWxlX3ByZXBlbmQgKCkgewotICAgICNBdXRvbWFrZSBkaXIgaXMgbm90IGNvcnJlY3RseSBkZXRlY3RlZCBpbiBjcm9zcyBjb21waWxhdGlvbiBjYXNlCi0gICAgZXhwb3J0IEFVVE9NQUtFX0RJUj0iJChhdXRvbWFrZSAtLXByaW50LWxpYmRpcikiCi0gICAgZXhwb3J0IEFDTE9DQUxfRkxBR1M9Ii0tc3lzdGVtLWFjZGlyPSR7QUNMT0NBTERJUn0vICR7QUNMT0NBTEVYVFJBUEFUSH0iCi0KLSAgICBjcCAke1dPUktESVJ9L2dpdGNvbXBpbGVfaGRhamFja3NlbnNldGVzdCAke1N9L2hkYWphY2tzZW5zZXRlc3QvZ2l0Y29tcGlsZQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9sZDEwazEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzXzEuMS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29sc18xLjEuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmU0M2FhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29sc18xLjEuNS5iYgpAQCAtMCwwICsxLDQwIEBACitTVU1NQVJZID0gIkFkdmFuY2VkIHRvb2xzIGZvciBjZXJ0YWluIEFMU0Egc291bmQgY2FyZCBkcml2ZXJzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyKyIKK0RFUEVORFMgPSAiYWxzYS1saWIgbmN1cnNlcyBnbGliLTIuMCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vaGRzcGxvYWRlci9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9sZDEwazEvQ09QWUlORy5MSUI7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IgorCitTUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi90b29scy8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2F1dG90b29scy5wYXRjaCBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJycsICdmaWxlOi8vbWFrZWZpbGVfbm9fZ3RrLnBhdGNoJywgZCl9IFwKKyAgICAgICAgICAgZmlsZTovL2dpdGNvbXBpbGVfaGRhamFja3NlbnNldGVzdCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjNhZmI5MmViMWI0ZjJlZGM4NjkxNDk4ZTU3YzNlYzc4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJjM2M2NTY3ZGU4MzUyMjNlZTdkNjk0ODdiOGMyMmZiMzk1YTJlOGM2MTMzNDFiMGM5NmU2YTVmNmEyYmQ1MzQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKKworQ0xFQU5CUk9LRU4gPSAiMSIKKworRVhUUkFfT0VNQUtFICs9ICJHSVRDT01QSUxFX0FSR1M9Jy0taG9zdD0ke0hPU1RfU1lTfSAtLWJ1aWxkPSR7QlVJTERfU1lTfSAtLXRhcmdldD0ke1RBUkdFVF9TWVN9IC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSAtLXByZWZpeD0ke3ByZWZpeH0nIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnZ3RrKycsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW2d0aytdID0gIiwsZ3RrKyBndGsrMywiCisKKyMgY29uZmlndXJlLmFjLy5pbiBkb2Vzbid0IGV4aXN0IHNvIGZvcmNlIGNvcHkKK0FVVE9UT09MU19DT1BZQUNMT0NBTCA9ICIxIgorCitkb19jb21waWxlX3ByZXBlbmQgKCkgeworICAgICNBdXRvbWFrZSBkaXIgaXMgbm90IGNvcnJlY3RseSBkZXRlY3RlZCBpbiBjcm9zcyBjb21waWxhdGlvbiBjYXNlCisgICAgZXhwb3J0IEFVVE9NQUtFX0RJUj0iJChhdXRvbWFrZSAtLXByaW50LWxpYmRpcikiCisgICAgZXhwb3J0IEFDTE9DQUxfRkxBR1M9Ii0tc3lzdGVtLWFjZGlyPSR7QUNMT0NBTERJUn0vICR7QUNMT0NBTEVYVFJBUEFUSH0iCisKKyAgICBjcCAke1dPUktESVJ9L2dpdGNvbXBpbGVfaGRhamFja3NlbnNldGVzdCAke1N9L2hkYWphY2tzZW5zZXRlc3QvZ2l0Y29tcGlsZQorfQorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9sZDEwazEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzLXNjcmlwdHNfMS4xLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzLXNjcmlwdHNfMS4xLjUuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMtc2NyaXB0c18xLjEuNC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlscy1zY3JpcHRzXzEuMS41LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzLzAwMDEtYWxzYWN0bC1kb24tdC1sZXQtc3lzdGVtZC11bml0LXJlc3RvcmUtdGhlLXZvbHVtZS13aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMvMDAwMS1hbHNhY3RsLWRvbi10LWxldC1zeXN0ZW1kLXVuaXQtcmVzdG9yZS10aGUtdm9sdW1lLXdoLnBhdGNoCmluZGV4IGU1NzhkZmUuLjkwN2NhNWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMvMDAwMS1hbHNhY3RsLWRvbi10LWxldC1zeXN0ZW1kLXVuaXQtcmVzdG9yZS10aGUtdm9sdW1lLXdoLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMvMDAwMS1hbHNhY3RsLWRvbi10LWxldC1zeXN0ZW1kLXVuaXQtcmVzdG9yZS10aGUtdm9sdW1lLXdoLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA4YzNlMGVmOTYyNTA2NmMyYmI2N2VlM2QyYjhjZDM3ZmQ0NGVhZGFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiOWQ0MWI3ODQ2NTcxNTJhNGM1NjgzYTk0NThkZmZhYjU1N2YwNjg5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KIERhdGU6IEZyaSwgMjkgQXVnIDIwMTQgMTg6NTg6NTYgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSF0gYWxzYWN0bDogZG9uJ3QgbGV0IHN5c3RlbWQgdW5pdCByZXN0b3JlIHRoZSB2b2x1bWUgd2hlbgpAQCAtMjIsNyArMjIsNyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYWxzYWN0bC9NYWtlZmlsZS5hbSBiL2Fsc2FjdGwvTWFrZWZpbGUuYW0KLWluZGV4IGNhYzgwOTQuLmZmODY1ZGMgMTAwNjQ0CitpbmRleCA5MGZhYjlkLi4xOTA1MjVhIDEwMDY0NAogLS0tIGEvYWxzYWN0bC9NYWtlZmlsZS5hbQogKysrIGIvYWxzYWN0bC9NYWtlZmlsZS5hbQogQEAgLTM4LDkgKzM4LDEwIEBAIGluc3RhbGwtZGF0YS1ob29rOgpAQCAtNDAsMTcgKzQwLDE3IEBACiAgCiAgYWxzYS1zdGF0ZS5zZXJ2aWNlOiBhbHNhLXN0YXRlLnNlcnZpY2UuaW4KIGRpZmYgLS1naXQgYS9hbHNhY3RsL2Fsc2EtcmVzdG9yZS5zZXJ2aWNlLmluIGIvYWxzYWN0bC9hbHNhLXJlc3RvcmUuc2VydmljZS5pbgotaW5kZXggMjg4NDA5OC4uYmFjM2NjYyAxMDA2NDQKK2luZGV4IDgwZmQ1ZmQuLjZiZWIzNmQgMTAwNjQ0CiAtLS0gYS9hbHNhY3RsL2Fsc2EtcmVzdG9yZS5zZXJ2aWNlLmluCiArKysgYi9hbHNhY3RsL2Fsc2EtcmVzdG9yZS5zZXJ2aWNlLmluCi1AQCAtOCw2ICs4LDcgQEAgRGVzY3JpcHRpb249U2F2ZS9SZXN0b3JlIFNvdW5kIENhcmQgU3RhdGUKK0BAIC03LDYgKzcsNyBAQAorIERlc2NyaXB0aW9uPVNhdmUvUmVzdG9yZSBTb3VuZCBDYXJkIFN0YXRlCiAgQ29uZGl0aW9uUGF0aEV4aXN0cz0hQGRhZW1vbnN3aXRjaEAKICBDb25kaXRpb25QYXRoRXhpc3RzR2xvYj0vZGV2L3NuZC9jb250cm9sKgotIEFmdGVyPWFsc2Etc3RhdGUuc2VydmljZQogK0NvbmRpdGlvblBhdGhFeGlzdHM9QGxvY2Fsc3RhdGVkaXJAL2xpYi9hbHNhL2Fzb3VuZC5zdGF0ZQogIAogIFtTZXJ2aWNlXQogIFR5cGU9b25lc2hvdAogLS0gCi0yLjcuMC5yYzMKKzIuMTQuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhmNGI4Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAgQEAKLVNVTU1BUlkgPSAiQUxTQSBzb3VuZCB1dGlsaXRpZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmciCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYWxzYWN0bC91dGlscy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWZlOTUyNmIwNTVlMjQ2YjU1NTg4MDlhNWFlMjVjMGI5IgotREVQRU5EUyA9ICJhbHNhLWxpYiBuY3Vyc2VzIGxpYnNhbXBsZXJhdGUwIgotCi1QQUNLQUdFQ09ORklHID8/PSAidWRldiIKLQotIyBhbHNhYmF0IGNhbiBiZSBidWlsdCBhbHNvIHdpdGhvdXQgZmZ0dyBzdXBwb3J0ICh3aXRoIHJlZHVjZWQgZnVuY3Rpb25hbGl0eSkuCi0jIEl0IHdvdWxkIGJlIGJldHRlciB0byBhbHdheXMgZW5hYmxlIGFsc2FiYXQsIGJ1dCBwcm92aWRlIGFuIG9wdGlvbiBmb3IKLSMgZW5hYmxpbmcvZGlzYWJsaW5nIGZmdHcuIFRoZSBjb25maWd1cmUgc2NyaXB0IGRvZXNuJ3Qgc3VwcG9ydCB0aGF0LCBob3dldmVyCi0jIChhdCBsZWFzdCBpbiBhbnkgb2J2aW91cyB3YXkpLCBzbyBmb3Igbm93IHdlIG9ubHkgc3VwcG9ydCBhbHNhYmF0IHdpdGggZmZ0dwotIyBvciBubyBhbHNhYmF0IGF0IGFsbC4KLVBBQ0tBR0VDT05GSUdbYmF0XSA9ICItLWVuYWJsZS1iYXQsLS1kaXNhYmxlLWJhdCxmZnR3ZiIKLQotUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItLXdpdGgtdWRldi1ydWxlcy1kaXI9YHBrZy1jb25maWcgLS12YXJpYWJsZT11ZGV2ZGlyIHVkZXZgL3J1bGVzLmQsLHVkZXYiCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS14bWx0bywgLS1kaXNhYmxlLXhtbHRvLCB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgotCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi91dGlscy9hbHNhLXV0aWxzLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hbHNhY3RsLWRvbi10LWxldC1zeXN0ZW1kLXVuaXQtcmVzdG9yZS10aGUtdm9sdW1lLXdoLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwMWUzOTM0Y2E1YmQyMmE4MGMyNzI4OWQxYjBhZGNkYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhNzgzMTA0NGRlOTJjNWJmMzNiZjMzNjVhM2YzNmU0OTM5N2Y0MTkxZTkzNGRmNDYwYWUxY2ExNTEzOGM5ZDlkIgotCi0jIE9uIGJ1aWxkIG1hY2hpbmVzIHdpdGggcHl0aG9uLWRvY3V0aWxzIChub3QgcHl0aG9uMy1kb2N1dGlscyAhISkgaW5zdGFsbGVkCi0jIHJzdDJtYW4gKG5vdCByc3QybWFuLnB5KSBpcyBkZXRlY3RlZCBhbmQgY29tcGlsZSBmYWlscyB3aXRoCi0jIHwgbWFrZVsxXTogKioqIE5vIHJ1bGUgdG8gbWFrZSB0YXJnZXQgJ2Fsc2F1Y20uMScsIG5lZWRlZCBieSAnYWxsLWFtJy4gIFN0b3AuCi0jIEF2b2lkIHRoaXMgYnkgZGlzYWJsaW5nIGV4cGljaXRseQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1yc3QybWFuIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBtYW5wYWdlcwotCi0jIFRoaXMgYXJlIGFsbCBwYWNrYWdlcyB0aGF0IHdlIG5lZWQgdG8gbWFrZS4gQWxzbywgdGhlIG5vdyBlbXB0eSBhbHNhLXV0aWxzCi0jIGlwayBkZXBlbmRzIG9uIHRoZW0uCi0KLUFMU0FfVVRJTFNfUEtHUyA9ICJcCi0gICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYmF0JywgJ2Fsc2EtdXRpbHMtYWxzYWJhdCcsICcnLCBkKX0gXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYW1peGVyIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2F0cGxnIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLW1pZGkgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXBsYXkgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYW1peGVyIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFjb25uZWN0IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWllY3NldCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1zcGVha2VydGVzdCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hc2VxbmV0IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFzZXFkdW1wIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2FjdGwgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYWxvb3AgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYXVjbSBcCi0gICAgICAgICAgICAiCi0KLVBBQ0tBR0VTICs9ICIke0FMU0FfVVRJTFNfUEtHU30iCi1SREVQRU5EU18ke1BOfSArPSAiJHtBTFNBX1VUSUxTX1BLR1N9IgotCi1GSUxFU18ke1BOfSA9ICIiCi1GSUxFU19hbHNhLXV0aWxzLWFsc2FiYXQgICAgID0gIiR7YmluZGlyfS9hbHNhYmF0IgotRklMRVNfYWxzYS11dGlscy1hbHNhdHBsZyAgICA9ICIke2JpbmRpcn0vYWxzYXRwbGciCi1GSUxFU19hbHNhLXV0aWxzLWFwbGF5ICAgICAgID0gIiR7YmluZGlyfS9hcGxheSAke2JpbmRpcn0vYXJlY29yZCIKLUZJTEVTX2Fsc2EtdXRpbHMtYW1peGVyICAgICAgPSAiJHtiaW5kaXJ9L2FtaXhlciIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYW1peGVyICAgPSAiJHtiaW5kaXJ9L2Fsc2FtaXhlciIKLUZJTEVTX2Fsc2EtdXRpbHMtc3BlYWtlcnRlc3QgPSAiJHtiaW5kaXJ9L3NwZWFrZXItdGVzdCAke2RhdGFkaXJ9L3NvdW5kcy9hbHNhLyAke2RhdGFkaXJ9L2Fsc2Evc3BlYWtlci10ZXN0LyIKLUZJTEVTX2Fsc2EtdXRpbHMtbWlkaSAgICAgICAgPSAiJHtiaW5kaXJ9L2FwbGF5bWlkaSAke2JpbmRpcn0vYXJlY29yZG1pZGkgJHtiaW5kaXJ9L2FtaWRpIgotRklMRVNfYWxzYS11dGlscy1hY29ubmVjdCAgICA9ICIke2JpbmRpcn0vYWNvbm5lY3QiCi1GSUxFU19hbHNhLXV0aWxzLWFzZXFuZXQgICAgID0gIiR7YmluZGlyfS9hc2VxbmV0IgotRklMRVNfYWxzYS11dGlscy1pZWNzZXQgICAgICA9ICIke2JpbmRpcn0vaWVjc2V0IgotRklMRVNfYWxzYS11dGlscy1hbHNhY3RsICAgICA9ICIke3NiaW5kaXJ9L2Fsc2FjdGwgKi91ZGV2L3J1bGVzLmQgKi8qL3VkZXYvcnVsZXMuZCAke3N5c3RlbWRfdW5pdGRpcn0gJHtsb2NhbHN0YXRlZGlyfS9saWIvYWxzYSAke2RhdGFkaXJ9L2Fsc2EvaW5pdC8iCi1GSUxFU19hbHNhLXV0aWxzLWFzZXFkdW1wICAgID0gIiR7YmluZGlyfS9hc2VxZHVtcCIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYWxvb3AgICAgPSAiJHtiaW5kaXJ9L2Fsc2Fsb29wIgotRklMRVNfYWxzYS11dGlscy1hbHNhdWNtICAgICA9ICIke2JpbmRpcn0vYWxzYXVjbSIKLQotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FiYXQgICAgICA9ICJDb21tYW5kLWxpbmUgc291bmQgdGVzdGVyIGZvciBBTFNBIHNvdW5kIGNhcmQgZHJpdmVyIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2F0cGxnICAgICA9ICJDb252ZXJ0cyB0b3BvbG9neSB0ZXh0IGZpbGVzIGludG8gYmluYXJ5IGZvcm1hdCBmb3Iga2VybmVsIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFwbGF5ICAgICAgICA9ICJQbGF5IChhbmQgcmVjb3JkKSBzb3VuZCBmaWxlcyB1c2luZyBBTFNBIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFtaXhlciAgICAgICA9ICJDb21tYW5kLWxpbmUgY29udHJvbCBmb3IgQUxTQSBtaXhlciBhbmQgc2V0dGluZ3MiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYW1peGVyICAgID0gIm5jdXJzZXMtYmFzZWQgY29udHJvbCBmb3IgQUxTQSBtaXhlciBhbmQgc2V0dGluZ3MiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtc3BlYWtlcnRlc3QgID0gIkFMU0Egc3Vycm91bmQgc3BlYWtlciB0ZXN0IHV0aWxpdHkiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtbWlkaSAgICAgICAgID0gIk1pc2NlbGxhbmVvdXMgTUlESSB1dGlsaXRpZXMgZm9yIEFMU0EiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWNvbm5lY3QgICAgID0gIkFMU0Egc2VxdWVuY2VyIGNvbm5lY3Rpb24gbWFuYWdlciIKLVNVTU1BUllfYWxzYS11dGlscy1hc2VxbmV0ICAgICAgPSAiTmV0d29yayBjbGllbnQvc2VydmVyIGZvciBBTFNBIHNlcXVlbmNlciIKLVNVTU1BUllfYWxzYS11dGlscy1pZWNzZXQgICAgICAgPSAiQUxTQSB1dGlsaXR5IGZvciBzZXR0aW5nL3Nob3dpbmcgSUVDOTU4IChTL1BESUYpIHN0YXR1cyBiaXRzIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FjdGwgICAgICA9ICJTYXZlcy9yZXN0b3JlcyBBTFNBLXNldHRpbmdzIGluIC9ldGMvYXNvdW5kLnN0YXRlIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFzZXFkdW1wICAgICA9ICJTaG93cyB0aGUgZXZlbnRzIHJlY2VpdmVkIGF0IGFuIEFMU0Egc2VxdWVuY2VyIHBvcnQiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWxvb3AgICAgID0gIkFMU0EgUENNIGxvb3BiYWNrIHV0aWxpdHkiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYXVjbSAgICAgID0gIkFMU0EgVXNlIENhc2UgTWFuYWdlciIKLQotUlJFQ09NTUVORFNfYWxzYS11dGlscy1hbHNhY3RsID0gImFsc2Etc3RhdGVzIgotCi1BTExPV19FTVBUWV9hbHNhLXV0aWxzID0gIjEiCi0KLWRvX2luc3RhbGwoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCSMgV2UgZG9uJ3Qgc2hpcCB0aGlzIGhlcmUgYmVjYXVzZSBpdCByZXF1aXJlcyBhIGRlcGVuZGVuY3kgb24gYmFzaC4KLQkjIFNlZSBhbHNhLXV0aWxzLXNjcmlwdHNfJHtQVn0uYmIKLQlybSAke0R9JHtzYmluZGlyfS9hbHNhY29uZgotCXJtICR7RH0ke3NiaW5kaXJ9L2Fsc2EtaW5mby5zaAotCXJtIC1mICR7RH0ke3NiaW5kaXJ9L2Fsc2FiYXQtdGVzdC5zaAotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndWRldicsICdmYWxzZScsICd0cnVlJywgZCl9OyB0aGVuCi0JCSMgVGhpcyBpcyB3aGVyZSBhbHNhLXV0aWxzIHdpbGwgaW5zdGFsbCBpdHMgcnVsZXMgaWYgd2UgZG9uJ3QgdGVsbCBpdCBhbnl0aGluZyBlbHNlLgotCQlybSAtcmYgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldgotCQlybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfQotCWZpCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzIxNWJmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuNS5iYgpAQCAtMCwwICsxLDEwOCBAQAorU1VNTUFSWSA9ICJBTFNBIHNvdW5kIHV0aWxpdGllcyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hbHNhY3RsL3V0aWxzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9ZmU5NTI2YjA1NWUyNDZiNTU1ODgwOWE1YWUyNWMwYjkiCitERVBFTkRTID0gImFsc2EtbGliIG5jdXJzZXMgbGlic2FtcGxlcmF0ZTAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJ1ZGV2IgorCisjIGFsc2FiYXQgY2FuIGJlIGJ1aWx0IGFsc28gd2l0aG91dCBmZnR3IHN1cHBvcnQgKHdpdGggcmVkdWNlZCBmdW5jdGlvbmFsaXR5KS4KKyMgSXQgd291bGQgYmUgYmV0dGVyIHRvIGFsd2F5cyBlbmFibGUgYWxzYWJhdCwgYnV0IHByb3ZpZGUgYW4gb3B0aW9uIGZvcgorIyBlbmFibGluZy9kaXNhYmxpbmcgZmZ0dy4gVGhlIGNvbmZpZ3VyZSBzY3JpcHQgZG9lc24ndCBzdXBwb3J0IHRoYXQsIGhvd2V2ZXIKKyMgKGF0IGxlYXN0IGluIGFueSBvYnZpb3VzIHdheSksIHNvIGZvciBub3cgd2Ugb25seSBzdXBwb3J0IGFsc2FiYXQgd2l0aCBmZnR3CisjIG9yIG5vIGFsc2FiYXQgYXQgYWxsLgorUEFDS0FHRUNPTkZJR1tiYXRdID0gIi0tZW5hYmxlLWJhdCwtLWRpc2FibGUtYmF0LGZmdHdmIgorCitQQUNLQUdFQ09ORklHW3VkZXZdID0gIi0td2l0aC11ZGV2LXJ1bGVzLWRpcj1gcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAvcnVsZXMuZCwtLXdpdGgtdWRldi1ydWxlcy1kaXI9L3Vud2FudGVkL3J1bGVzLmQsdWRldiIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLXhtbHRvLCAtLWRpc2FibGUteG1sdG8sIHhtbHRvLW5hdGl2ZSBkb2Nib29rLXhtbC1kdGQ0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUiCisKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL3V0aWxzL2Fsc2EtdXRpbHMtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFsc2FjdGwtZG9uLXQtbGV0LXN5c3RlbWQtdW5pdC1yZXN0b3JlLXRoZS12b2x1bWUtd2gucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImRmZTZlYTE0N2E1ZTA3YTA1NjkxOTU5MWMyZjVkYWMzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMyMGJkMjg1ZTkxZGI2ZTdmZDdkYjNjOWVjNmY1NWIwMmYzNTQ0OWZmMjczYzc4NDQ3ODBhYzZhNWEzZGUyZTgiCisKKyMgT24gYnVpbGQgbWFjaGluZXMgd2l0aCBweXRob24tZG9jdXRpbHMgKG5vdCBweXRob24zLWRvY3V0aWxzICEhKSBpbnN0YWxsZWQKKyMgcnN0Mm1hbiAobm90IHJzdDJtYW4ucHkpIGlzIGRldGVjdGVkIGFuZCBjb21waWxlIGZhaWxzIHdpdGgKKyMgfCBtYWtlWzFdOiAqKiogTm8gcnVsZSB0byBtYWtlIHRhcmdldCAnYWxzYXVjbS4xJywgbmVlZGVkIGJ5ICdhbGwtYW0nLiAgU3RvcC4KKyMgQXZvaWQgdGhpcyBieSBkaXNhYmxpbmcgZXhwaWNpdGx5CitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXJzdDJtYW4iCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIG1hbnBhZ2VzCisKKyMgVGhpcyBhcmUgYWxsIHBhY2thZ2VzIHRoYXQgd2UgbmVlZCB0byBtYWtlLiBBbHNvLCB0aGUgbm93IGVtcHR5IGFsc2EtdXRpbHMKKyMgaXBrIGRlcGVuZHMgb24gdGhlbS4KKworQUxTQV9VVElMU19QS0dTID0gIlwKKyAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdiYXQnLCAnYWxzYS11dGlscy1hbHNhYmF0JywgJycsIGQpfSBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhbWl4ZXIgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYXRwbGcgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtbWlkaSBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hcGxheSBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbWl4ZXIgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWNvbm5lY3QgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtaWVjc2V0IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLXNwZWFrZXJ0ZXN0IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFzZXFuZXQgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXNlcWR1bXAgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYWN0bCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhbG9vcCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhdWNtIFwKKyAgICAgICAgICAgICIKKworUEFDS0FHRVMgKz0gIiR7QUxTQV9VVElMU19QS0dTfSIKK1JERVBFTkRTXyR7UE59ICs9ICIke0FMU0FfVVRJTFNfUEtHU30iCisKK0ZJTEVTXyR7UE59ID0gIiIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWxzYWJhdCAgICAgPSAiJHtiaW5kaXJ9L2Fsc2FiYXQiCitGSUxFU19hbHNhLXV0aWxzLWFsc2F0cGxnICAgID0gIiR7YmluZGlyfS9hbHNhdHBsZyIKK0ZJTEVTX2Fsc2EtdXRpbHMtYXBsYXkgICAgICAgPSAiJHtiaW5kaXJ9L2FwbGF5ICR7YmluZGlyfS9hcmVjb3JkIgorRklMRVNfYWxzYS11dGlscy1hbWl4ZXIgICAgICA9ICIke2JpbmRpcn0vYW1peGVyIgorRklMRVNfYWxzYS11dGlscy1hbHNhbWl4ZXIgICA9ICIke2JpbmRpcn0vYWxzYW1peGVyIgorRklMRVNfYWxzYS11dGlscy1zcGVha2VydGVzdCA9ICIke2JpbmRpcn0vc3BlYWtlci10ZXN0ICR7ZGF0YWRpcn0vc291bmRzL2Fsc2EvICR7ZGF0YWRpcn0vYWxzYS9zcGVha2VyLXRlc3QvIgorRklMRVNfYWxzYS11dGlscy1taWRpICAgICAgICA9ICIke2JpbmRpcn0vYXBsYXltaWRpICR7YmluZGlyfS9hcmVjb3JkbWlkaSAke2JpbmRpcn0vYW1pZGkiCitGSUxFU19hbHNhLXV0aWxzLWFjb25uZWN0ICAgID0gIiR7YmluZGlyfS9hY29ubmVjdCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYXNlcW5ldCAgICAgPSAiJHtiaW5kaXJ9L2FzZXFuZXQiCitGSUxFU19hbHNhLXV0aWxzLWllY3NldCAgICAgID0gIiR7YmluZGlyfS9pZWNzZXQiCitGSUxFU19hbHNhLXV0aWxzLWFsc2FjdGwgICAgID0gIiR7c2JpbmRpcn0vYWxzYWN0bCAqL3VkZXYvcnVsZXMuZCAqLyovdWRldi9ydWxlcy5kICR7c3lzdGVtZF91bml0ZGlyfSAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9hbHNhICR7ZGF0YWRpcn0vYWxzYS9pbml0LyIKK0ZJTEVTX2Fsc2EtdXRpbHMtYXNlcWR1bXAgICAgPSAiJHtiaW5kaXJ9L2FzZXFkdW1wIgorRklMRVNfYWxzYS11dGlscy1hbHNhbG9vcCAgICA9ICIke2JpbmRpcn0vYWxzYWxvb3AiCitGSUxFU19hbHNhLXV0aWxzLWFsc2F1Y20gICAgID0gIiR7YmluZGlyfS9hbHNhdWNtIgorCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWJhdCAgICAgID0gIkNvbW1hbmQtbGluZSBzb3VuZCB0ZXN0ZXIgZm9yIEFMU0Egc291bmQgY2FyZCBkcml2ZXIiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYXRwbGcgICAgID0gIkNvbnZlcnRzIHRvcG9sb2d5IHRleHQgZmlsZXMgaW50byBiaW5hcnkgZm9ybWF0IGZvciBrZXJuZWwiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYXBsYXkgICAgICAgID0gIlBsYXkgKGFuZCByZWNvcmQpIHNvdW5kIGZpbGVzIHVzaW5nIEFMU0EiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYW1peGVyICAgICAgID0gIkNvbW1hbmQtbGluZSBjb250cm9sIGZvciBBTFNBIG1peGVyIGFuZCBzZXR0aW5ncyIKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhbWl4ZXIgICAgPSAibmN1cnNlcy1iYXNlZCBjb250cm9sIGZvciBBTFNBIG1peGVyIGFuZCBzZXR0aW5ncyIKK1NVTU1BUllfYWxzYS11dGlscy1zcGVha2VydGVzdCAgPSAiQUxTQSBzdXJyb3VuZCBzcGVha2VyIHRlc3QgdXRpbGl0eSIKK1NVTU1BUllfYWxzYS11dGlscy1taWRpICAgICAgICAgPSAiTWlzY2VsbGFuZW91cyBNSURJIHV0aWxpdGllcyBmb3IgQUxTQSIKK1NVTU1BUllfYWxzYS11dGlscy1hY29ubmVjdCAgICAgPSAiQUxTQSBzZXF1ZW5jZXIgY29ubmVjdGlvbiBtYW5hZ2VyIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFzZXFuZXQgICAgICA9ICJOZXR3b3JrIGNsaWVudC9zZXJ2ZXIgZm9yIEFMU0Egc2VxdWVuY2VyIgorU1VNTUFSWV9hbHNhLXV0aWxzLWllY3NldCAgICAgICA9ICJBTFNBIHV0aWxpdHkgZm9yIHNldHRpbmcvc2hvd2luZyBJRUM5NTggKFMvUERJRikgc3RhdHVzIGJpdHMiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWN0bCAgICAgID0gIlNhdmVzL3Jlc3RvcmVzIEFMU0Etc2V0dGluZ3MgaW4gL2V0Yy9hc291bmQuc3RhdGUiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYXNlcWR1bXAgICAgID0gIlNob3dzIHRoZSBldmVudHMgcmVjZWl2ZWQgYXQgYW4gQUxTQSBzZXF1ZW5jZXIgcG9ydCIKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhbG9vcCAgICAgPSAiQUxTQSBQQ00gbG9vcGJhY2sgdXRpbGl0eSIKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhdWNtICAgICAgPSAiQUxTQSBVc2UgQ2FzZSBNYW5hZ2VyIgorCitSUkVDT01NRU5EU19hbHNhLXV0aWxzLWFsc2FjdGwgPSAiYWxzYS1zdGF0ZXMiCisKK0FMTE9XX0VNUFRZX2Fsc2EtdXRpbHMgPSAiMSIKKworZG9faW5zdGFsbCgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCisJIyBXZSBkb24ndCBzaGlwIHRoaXMgaGVyZSBiZWNhdXNlIGl0IHJlcXVpcmVzIGEgZGVwZW5kZW5jeSBvbiBiYXNoLgorCSMgU2VlIGFsc2EtdXRpbHMtc2NyaXB0c18ke1BWfS5iYgorCXJtICR7RH0ke3NiaW5kaXJ9L2Fsc2Fjb25mCisJcm0gJHtEfSR7c2JpbmRpcn0vYWxzYS1pbmZvLnNoCisJcm0gLWYgJHtEfSR7c2JpbmRpcn0vYWxzYWJhdC10ZXN0LnNoCisKKwkjIElmIHVkZXYgaXMgZGlzYWJsZWQsIHdlIHRvbGQgY29uZmlndXJlIHRvIGluc3RhbGwgdGhlIHJ1bGVzCisJIyBpbiAvdW53YW50ZWQsIHNvIHdlIGNhbiByZW1vdmUgdGhlbSBub3cuIElmIHVkZXYgaXMgZW5hYmxlZCwKKwkjIHRoZW4gL3Vud2FudGVkIHdvbid0IGV4aXN0IGFuZCB0aGlzIHdpbGwgaGF2ZSBubyBlZmZlY3QuCisJcm0gLXJmICR7RH0vdW53YW50ZWQKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnLzAwMDEtYnVpbGQtZml4LWZvci1taXBzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvMDAwMS1idWlsZC1maXgtZm9yLW1pcHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmODIyNGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvMDAwMS1idWlsZC1maXgtZm9yLW1pcHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIGYzNGM1NjcwNDViZWE1YTdkZWQ5YmNmYThlNzg1Y2ZkMjRjYzdkZGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTaGl2cmFqIFBhdGlsIDxzaGl2cmFqLnBhdGlsQGltZ3RlYy5jb20+Ci1EYXRlOiBUdWUsIDQgQXByIDIwMTcgMTg6NTY6MDEgKzA1MzAKLVN1YmplY3Q6IFtQQVRDSF0gYnVpbGQgZml4IGZvciBtaXBzCi0KLVNpZ25lZC1vZmYtYnk6IFNoaXZyYWogUGF0aWwgPHNoaXZyYWoucGF0aWxAaW1ndGVjLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFJvbmFsZCBTLiBCdWx0amUgPHJzYnVsdGplQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0gbGliYXZjb2RlYy9taXBzL2hldmNwcmVkX2luaXRfbWlwcy5jIHwgMyArKy0KLSBsaWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMgICAgICAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfaW5pdF9taXBzLmMgYi9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfaW5pdF9taXBzLmMKLWluZGV4IDMzMWNmYWMxMTUuLmU5ODc2OThkNjYgMTAwNjQ0Ci0tLS0gYS9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfaW5pdF9taXBzLmMKLSsrKyBiL2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9pbml0X21pcHMuYwotQEAgLTE4LDcgKzE4LDggQEAKLSAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0gICovCi0gCi0tI2luY2x1ZGUgImxpYmF2Y29kZWMvaGV2Yy5oIgotKyNpbmNsdWRlICJjb25maWcuaCIKLSsjaW5jbHVkZSAibGliYXZ1dGlsL2F0dHJpYnV0ZXMuaCIKLSAjaW5jbHVkZSAibGliYXZjb2RlYy9taXBzL2hldmNwcmVkX21pcHMuaCIKLSAKLSAjaWYgSEFWRV9NU0EKLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMgYi9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMKLWluZGV4IDZhM2IyODE1ZmQuLjk2M2M2NGM4NjEgMTAwNjQ0Ci0tLS0gYS9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMKLSsrKyBiL2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9tc2EuYwotQEAgLTE4LDcgKzE4LDcgQEAKLSAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0gICovCi0gCi0tI2luY2x1ZGUgImxpYmF2Y29kZWMvaGV2Yy5oIgotKyNpbmNsdWRlICJsaWJhdmNvZGVjL2hldmNkZWMuaCIKLSAjaW5jbHVkZSAibGliYXZ1dGlsL21pcHMvZ2VuZXJpY19tYWNyb3NfbXNhLmgiCi0gI2luY2x1ZGUgImhldmNwcmVkX21pcHMuaCIKLSAKLS0tIAotMi4xMy4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4YmFhMTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIDEyNGViMjAyZTcwNjc4NTM5NTQ0ZjYyNjhlZmM5ODEzMWYxOWZhNDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/PUU1PUFEPTk5PUU2PUI1PUE5PTIwYW5kPTIwPUU1PUJDPUEwPUU2PUI0PUFBPUU0PUJBPUFFPTI4Pz0KLSA9P1VURi04P3E/PUU2PTlDPTlCPUU1PTg4PTlEPTI5Pz0gPHRvbnkuc2ggYW5kIHdhbmdjaHUuemhsQGFsaWJhYmEtaW5jLmNvbT4KLURhdGU6IEZyaSwgMjUgQXVnIDIwMTcgMDE6MTU6MjggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZmb3JtYXQvcm1kZWM6IEZpeCBEb1MgZHVlIHRvIGxhY2sgb2YgZW9mIGNoZWNrCi0KLUZpeGVzOiBsb29wLml2cgotCi1Gb3VuZC1ieTogWGlhb2hlaSBhbmQgV2FuZ2NodSBmcm9tIEFsaWJhYmEgU2VjdXJpdHkgVGVhbQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KLQotQ1ZFOiBDVkUtMjAxNy0xNDA1NAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJhdmZvcm1hdC9ybWRlYy5jIHwgNSArKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L3JtZGVjLmMgYi9saWJhdmZvcm1hdC9ybWRlYy5jCi1pbmRleCAxNzhlYWVhLi5kNmQ3ZDljIDEwMDY0NAotLS0tIGEvbGliYXZmb3JtYXQvcm1kZWMuYwotKysrIGIvbGliYXZmb3JtYXQvcm1kZWMuYwotQEAgLTEyMjMsOCArMTIyMywxMSBAQCBzdGF0aWMgaW50IGl2cl9yZWFkX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKnMpCi0gICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19ERUJVRywgIiVzID0gJyVzJ1xuIiwga2V5LCB2YWwpOwotICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IDQpIHsKLSAgICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0RFQlVHLCAiJXMgPSAnMHgiLCBrZXkpOwotLSAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBsZW47IGorKykKLSsgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgbGVuOyBqKyspIHsKLSsgICAgICAgICAgICAgICAgaWYgKGF2aW9fZmVvZihwYikpCi0rICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICAgICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19ERUJVRywgIiVYIiwgYXZpb19yOChwYikpOwotKyAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0RFQlVHLCAiJ1xuIik7Ci0gICAgICAgICB9IGVsc2UgaWYgKGxlbiA9PSA0ICYmIHR5cGUgPT0gMyAmJiAhc3RybmNtcChrZXksICJTdHJlYW1Db3VudCIsIHRsZW4pKSB7Ci0gICAgICAgICAgICAgbmJfc3RyZWFtcyA9IHZhbHVlID0gYXZpb19yYjMyKHBiKTsKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1NS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzdkMGQxYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gNGYwNWUyZTJkYzFhODlmMzhjZDlmMDk2MGE2NTYxMDgzZDcxNGYxZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+Ci1EYXRlOiBGcmksIDI1IEF1ZyAyMDE3IDAxOjE1OjMwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L212ZGVjOiBGaXggRG9TIGR1ZSB0byBsYWNrIG9mIGVvZiBjaGVjawotCi1GaXhlczogbG9vcC5tdgotCi1Gb3VuZC1ieTogWGlhb2hlaSBhbmQgV2FuZ2NodSBmcm9tIEFsaWJhYmEgU2VjdXJpdHkgVGVhbQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KLQotQ1ZFOiBDVkUtMjAxNy0xNDA1NQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJhdmZvcm1hdC9tdmRlYy5jIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L212ZGVjLmMgYi9saWJhdmZvcm1hdC9tdmRlYy5jCi1pbmRleCAwZTEyYzhjLi5mN2FhNGNiIDEwMDY0NAotLS0tIGEvbGliYXZmb3JtYXQvbXZkZWMuYwotKysrIGIvbGliYXZmb3JtYXQvbXZkZWMuYwotQEAgLTM0Miw2ICszNDIsOCBAQCBzdGF0aWMgaW50IG12X3JlYWRfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqYXZjdHgpCi0gICAgICAgICAgICAgdWludDMyX3QgcG9zICAgPSBhdmlvX3JiMzIocGIpOwotICAgICAgICAgICAgIHVpbnQzMl90IGFzaXplID0gYXZpb19yYjMyKHBiKTsKLSAgICAgICAgICAgICB1aW50MzJfdCB2c2l6ZSA9IGF2aW9fcmIzMihwYik7Ci0rICAgICAgICAgICAgaWYgKGF2aW9fZmVvZihwYikpCi0rICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotICAgICAgICAgICAgIGF2aW9fc2tpcChwYiwgOCk7Ci0gICAgICAgICAgICAgYXZfYWRkX2luZGV4X2VudHJ5KGFzdCwgcG9zLCB0aW1lc3RhbXAsIGFzaXplLCAwLCBBVklOREVYX0tFWUZSQU1FKTsKLSAgICAgICAgICAgICBhdl9hZGRfaW5kZXhfZW50cnkodnN0LCBwb3MgKyBhc2l6ZSwgaSwgdnNpemUsIDAsIEFWSU5ERVhfS0VZRlJBTUUpOwotLS0gCi0yLjEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODhiMzU3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSA5NmYyNGQxYmVlN2ZlN2JhYzA4ZTJiN2M3NGRiMWEwNDZjOWRjMGRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xPz1FNT1BRD05OT1FNj1CNT1BOT0yMGFuZD0yMD1FNT1CQz1BMD1FNj1CND1BQT1FND1CQT1BRT0yOD89Ci0gPT9VVEYtOD9xPz1FNj05Qz05Qj1FNT04OD05RD0yOT89IDx0b255LnNoIGFuZCB3YW5nY2h1LnpobEBhbGliYWJhLWluYy5jb20+Ci1EYXRlOiBGcmksIDI1IEF1ZyAyMDE3IDAxOjE1OjI5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L3JsMjogRml4IERvUyBkdWUgdG8gbGFjayBvZiBlb2YgY2hlY2sKLQotRml4ZXM6IGxvb3AucmwyCi0KLUZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgotCi1DVkU6IENWRS0yMDE3LTE0MDU2Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmF2Zm9ybWF0L3JsMi5jIHwgMTUgKysrKysrKysrKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9ybDIuYyBiL2xpYmF2Zm9ybWF0L3JsMi5jCi1pbmRleCAwYmVjOGYxLi5lYjE2ODJkIDEwMDY0NAotLS0tIGEvbGliYXZmb3JtYXQvcmwyLmMKLSsrKyBiL2xpYmF2Zm9ybWF0L3JsMi5jCi1AQCAtMTcwLDEyICsxNzAsMjEgQEAgc3RhdGljIGF2X2NvbGQgaW50IHJsMl9yZWFkX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKnMpCi0gICAgIH0KLSAKLSAgICAgLyoqIHJlYWQgb2Zmc2V0IGFuZCBzaXplIHRhYmxlcyAqLwotLSAgICBmb3IoaT0wOyBpIDwgZnJhbWVfY291bnQ7aSsrKQotKyAgICBmb3IoaT0wOyBpIDwgZnJhbWVfY291bnQ7aSsrKSB7Ci0rICAgICAgICBpZiAoYXZpb19mZW9mKHBiKSkKLSsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICAgICAgIGNodW5rX3NpemVbaV0gPSBhdmlvX3JsMzIocGIpOwotLSAgICBmb3IoaT0wOyBpIDwgZnJhbWVfY291bnQ7aSsrKQotKyAgICB9Ci0rICAgIGZvcihpPTA7IGkgPCBmcmFtZV9jb3VudDtpKyspIHsKLSsgICAgICAgIGlmIChhdmlvX2Zlb2YocGIpKQotKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotICAgICAgICAgY2h1bmtfb2Zmc2V0W2ldID0gYXZpb19ybDMyKHBiKTsKLS0gICAgZm9yKGk9MDsgaSA8IGZyYW1lX2NvdW50O2krKykKLSsgICAgfQotKyAgICBmb3IoaT0wOyBpIDwgZnJhbWVfY291bnQ7aSsrKSB7Ci0rICAgICAgICBpZiAoYXZpb19mZW9mKHBiKSkKLSsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICAgICAgIGF1ZGlvX3NpemVbaV0gPSBhdmlvX3JsMzIocGIpICYgMHhGRkZGOwotKyAgICB9Ci0gCi0gICAgIC8qKiBidWlsZCB0aGUgc2FtcGxlIGluZGV4ICovCi0gICAgIGZvcihpPTA7aTxmcmFtZV9jb3VudDtpKyspewotLS0gCi0yLjEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1Ny5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzAxZDIzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotRnJvbSA3ZjllYzU1OTNlMDQ4MjcyNDllN2FlYjQ2NmRhMDZhOThhMGQ3MzI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xPz1FNT1BRD05OT1FNj1CNT1BOT0yMGFuZD0yMD1FNT1CQz1BMD1FNj1CND1BQT1FND1CQT1BRT0yOD89Ci0gPT9VVEYtOD9xPz1FNj05Qz05Qj1FNT04OD05RD0yOT89IDx0b255LnNoIGFuZCB3YW5nY2h1LnpobEBhbGliYWJhLWluYy5jb20+Ci1EYXRlOiBGcmksIDI1IEF1ZyAyMDE3IDEyOjM3OjI1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L2FzZmRlYzogRml4IERvUyBkdWUgdG8gbGFjayBvZiBlb2YgY2hlY2sKLQotRml4ZXM6IGxvb3AuYXNmCi0KLUZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgotCi1DVkU6IENWRS0yMDE3LTE0MDU3Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmF2Zm9ybWF0L2FzZmRlY19mLmMgfCA2ICsrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9hc2ZkZWNfZi5jIGIvbGliYXZmb3JtYXQvYXNmZGVjX2YuYwotaW5kZXggYmUwOWE5Mi4uZjNhY2JhZSAxMDA2NDQKLS0tLSBhL2xpYmF2Zm9ybWF0L2FzZmRlY19mLmMKLSsrKyBiL2xpYmF2Zm9ybWF0L2FzZmRlY19mLmMKLUBAIC03NDksMTMgKzc0OSwxNSBAQCBzdGF0aWMgaW50IGFzZl9yZWFkX21hcmtlcihBVkZvcm1hdENvbnRleHQgKnMsIGludDY0X3Qgc2l6ZSkKLSAgICAgY291bnQgPSBhdmlvX3JsMzIocGIpOyAgICAvLyBtYXJrZXJzIGNvdW50Ci0gICAgIGF2aW9fcmwxNihwYik7ICAgICAgICAgICAgLy8gcmVzZXJ2ZWQgMiBieXRlcwotICAgICBuYW1lX2xlbiA9IGF2aW9fcmwxNihwYik7IC8vIG5hbWUgbGVuZ3RoCi0tICAgIGZvciAoaSA9IDA7IGkgPCBuYW1lX2xlbjsgaSsrKQotLSAgICAgICAgYXZpb19yOChwYik7IC8vIHNraXAgdGhlIG5hbWUKLSsgICAgYXZpb19za2lwKHBiLCBuYW1lX2xlbik7Ci0gCi0gICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Ci0gICAgICAgICBpbnQ2NF90IHByZXNfdGltZTsKLSAgICAgICAgIGludCBuYW1lX2xlbjsKLSAKLSsgICAgICAgIGlmIChhdmlvX2Zlb2YocGIpKQotKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotKwotICAgICAgICAgYXZpb19ybDY0KHBiKTsgICAgICAgICAgICAgLy8gb2Zmc2V0LCA4IGJ5dGVzCi0gICAgICAgICBwcmVzX3RpbWUgPSBhdmlvX3JsNjQocGIpOyAvLyBwcmVzZW50YXRpb24gdGltZQotICAgICAgICAgcHJlc190aW1lIC09IGFzZi0+aGRyLnByZXJvbGwgKiAxMDAwMDsKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1OC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU4MDNjZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLUZyb20gN2VjNDE0ODkyZGRjYWQ4ODMxMzg0ODQ5NGI2ZmM1ZjQzN2M5Y2E0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+Ci1EYXRlOiBTYXQsIDI2IEF1ZyAyMDE3IDAxOjI2OjU4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L2hsczogRml4IERvUyBkdWUgdG8gaW5maW5pdGUgbG9vcAotCi1GaXhlczogbG9vcC5tM3UKLQotVGhlIGRlZmF1bHQgbWF4IGl0ZXJhdGlvbiBjb3VudCBvZiAxMDAwIGlzIGFyYml0cmFyeSBhbmQgaWRlYXMgZm9yIGEgYmV0dGVyIHNvbHV0aW9uIGFyZSB3ZWxjb21lCi0KLUZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCi0KLVByZXZpb3VzIHZlcnNpb24gcmV2aWV3ZWQtYnk6IFN0ZXZlbiBMaXUgPGxpbmdqaXVqaWFua2VAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KLQotQ1ZFOiBDVkUtMjAxNy0xNDA1OAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBkb2MvZGVtdXhlcnMudGV4aSB8IDE4ICsrKysrKysrKysrKysrKysrKwotIGxpYmF2Zm9ybWF0L2hscy5jIHwgIDcgKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZG9jL2RlbXV4ZXJzLnRleGkgYi9kb2MvZGVtdXhlcnMudGV4aQotaW5kZXggMjlhMjNkNC4uNzNkYzBmZSAxMDA2NDQKLS0tLSBhL2RvYy9kZW11eGVycy50ZXhpCi0rKysgYi9kb2MvZGVtdXhlcnMudGV4aQotQEAgLTMwMCw2ICszMDAsMjQgQEAgdXNlZCB0byBlbmQgdGhlIG91dHB1dCB2aWRlbyBhdCB0aGUgbGVuZ3RoIG9mIHRoZSBzaG9ydGVzdCBpbnB1dCBmaWxlLAotIHdoaWNoIGluIHRoaXMgY2FzZSBpcyBAZmlsZXtpbnB1dC5tcDR9IGFzIHRoZSBHSUYgaW4gdGhpcyBleGFtcGxlIGxvb3BzCi0gaW5maW5pdGVseS4KLSAKLStAc2VjdGlvbiBobHMKLSsKLStITFMgZGVtdXhlcgotKwotK0l0IGFjY2VwdHMgdGhlIGZvbGxvd2luZyBvcHRpb25zOgotKwotK0B0YWJsZSBAb3B0aW9uCi0rQGl0ZW0gbGl2ZV9zdGFydF9pbmRleAotK3NlZ21lbnQgaW5kZXggdG8gc3RhcnQgbGl2ZSBzdHJlYW1zIGF0IChuZWdhdGl2ZSB2YWx1ZXMgYXJlIGZyb20gdGhlIGVuZCkuCi0rCi0rQGl0ZW0gYWxsb3dlZF9leHRlbnNpb25zCi0rJywnIHNlcGFyYXRlZCBsaXN0IG9mIGZpbGUgZXh0ZW5zaW9ucyB0aGF0IGhscyBpcyBhbGxvd2VkIHRvIGFjY2Vzcy4KLSsKLStAaXRlbSBtYXhfcmVsb2FkCi0rTWF4aW11bSBudW1iZXIgb2YgdGltZXMgYSBpbnN1ZmZpY2llbnQgbGlzdCBpcyBhdHRlbXB0ZWQgdG8gYmUgcmVsb2FkZWQuCi0rRGVmYXVsdCB2YWx1ZSBpcyAxMDAwLgotK0BlbmQgdGFibGUKLSsKLSBAc2VjdGlvbiBpbWFnZTIKLSAKLSBJbWFnZSBmaWxlIGRlbXV4ZXIuCi1kaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvaGxzLmMgYi9saWJhdmZvcm1hdC9obHMuYwotaW5kZXggMDE3MzFiZC4uMDk5NTM0NSAxMDA2NDQKLS0tLSBhL2xpYmF2Zm9ybWF0L2hscy5jCi0rKysgYi9saWJhdmZvcm1hdC9obHMuYwotQEAgLTIwNSw2ICsyMDUsNyBAQCB0eXBlZGVmIHN0cnVjdCBITFNDb250ZXh0IHsKLSAgICAgQVZEaWN0aW9uYXJ5ICphdmlvX29wdHM7Ci0gICAgIGludCBzdHJpY3Rfc3RkX2NvbXBsaWFuY2U7Ci0gICAgIGNoYXIgKmFsbG93ZWRfZXh0ZW5zaW9uczsKLSsgICAgaW50IG1heF9yZWxvYWQ7Ci0gfSBITFNDb250ZXh0OwotIAotIHN0YXRpYyBpbnQgcmVhZF9jaG9tcF9saW5lKEFWSU9Db250ZXh0ICpzLCBjaGFyICpidWYsIGludCBtYXhsZW4pCi1AQCAtMTI2Myw2ICsxMjY0LDcgQEAgc3RhdGljIGludCByZWFkX2RhdGEodm9pZCAqb3BhcXVlLCB1aW50OF90ICpidWYsIGludCBidWZfc2l6ZSkKLSAgICAgSExTQ29udGV4dCAqYyA9IHYtPnBhcmVudC0+cHJpdl9kYXRhOwotICAgICBpbnQgcmV0LCBpOwotICAgICBpbnQganVzdF9vcGVuZWQgPSAwOwotKyAgICBpbnQgcmVsb2FkX2NvdW50ID0gMDsKLSAKLSByZXN0YXJ0OgotICAgICBpZiAoIXYtPm5lZWRlZCkKLUBAIC0xMjk0LDYgKzEyOTYsOSBAQCByZXN0YXJ0OgotICAgICAgICAgcmVsb2FkX2ludGVydmFsID0gZGVmYXVsdF9yZWxvYWRfaW50ZXJ2YWwodik7Ci0gCi0gcmVsb2FkOgotKyAgICAgICAgcmVsb2FkX2NvdW50Kys7Ci0rICAgICAgICBpZiAocmVsb2FkX2NvdW50ID4gYy0+bWF4X3JlbG9hZCkKLSsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9FT0Y7Ci0gICAgICAgICBpZiAoIXYtPmZpbmlzaGVkICYmCi0gICAgICAgICAgICAgYXZfZ2V0dGltZV9yZWxhdGl2ZSgpIC0gdi0+bGFzdF9sb2FkX3RpbWUgPj0gcmVsb2FkX2ludGVydmFsKSB7Ci0gICAgICAgICAgICAgaWYgKChyZXQgPSBwYXJzZV9wbGF5bGlzdChjLCB2LT51cmwsIHYsIE5VTEwpKSA8IDApIHsKLUBAIC0yMTUwLDYgKzIxNTUsOCBAQCBzdGF0aWMgY29uc3QgQVZPcHRpb24gaGxzX29wdGlvbnNbXSA9IHsKLSAgICAgICAgIE9GRlNFVChhbGxvd2VkX2V4dGVuc2lvbnMpLCBBVl9PUFRfVFlQRV9TVFJJTkcsCi0gICAgICAgICB7LnN0ciA9ICIzZ3AsYWFjLGF2aSxmbGFjLG1rdixtM3U4LG00YSxtNHMsbTR2LG1wZyxtb3YsbXAyLG1wMyxtcDQsbXBlZyxtcGVndHMsb2dnLG9ndixvZ2EsdHMsdm9iLHdhdiJ9LAotICAgICAgICAgSU5UX01JTiwgSU5UX01BWCwgRkxBR1N9LAotKyAgICB7Im1heF9yZWxvYWQiLCAiTWF4aW11bSBudW1iZXIgb2YgdGltZXMgYSBpbnN1ZmZpY2llbnQgbGlzdCBpcyBhdHRlbXB0ZWQgdG8gYmUgcmVsb2FkZWQiLAotKyAgICAgICAgT0ZGU0VUKG1heF9yZWxvYWQpLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0ID0gMTAwMH0sIDAsIElOVF9NQVgsIEZMQUdTfSwKLSAgICAge05VTEx9Ci0gfTsKLSAKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1OS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRmZGUwYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1OS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gN2U4MGI2M2VjZDI1OWQ2OWQzODM2MjNlNzViMzE4YmYyYmQ0OTFmNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT89RTU9QUQ9OTk9RTY9QjU9QTk9MjBhbmQ9MjA9RTU9QkM9QTA9RTY9QjQ9QUE9RTQ9QkE9QUU9Mjg/PQotID0/VVRGLTg/cT89RTY9OUM9OUI9RTU9ODg9OUQ9Mjk/PSA8dG9ueS5zaCBhbmQgd2FuZ2NodS56aGxAYWxpYmFiYS1pbmMuY29tPgotRGF0ZTogRnJpLCAyNSBBdWcgMjAxNyAwMToxNToyNyArMDIwMAotU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9jaW5lZGVjOiBGaXggRG9TIGR1ZSB0byBsYWNrIG9mIGVvZiBjaGVjawotCi1GaXhlczogbG9vcC5jaW5lCi0KLUZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgotCi1DVkU6IENWRS0yMDE3LTE0MDU5Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmF2Zm9ybWF0L2NpbmVkZWMuYyB8IDYgKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvY2luZWRlYy5jIGIvbGliYXZmb3JtYXQvY2luZWRlYy5jCi1pbmRleCA3NjNiOTNiLi5kZTM0ZmI5IDEwMDY0NAotLS0tIGEvbGliYXZmb3JtYXQvY2luZWRlYy5jCi0rKysgYi9saWJhdmZvcm1hdC9jaW5lZGVjLmMKLUBAIC0yNjcsOCArMjY3LDEyIEBAIHN0YXRpYyBpbnQgY2luZV9yZWFkX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKmF2Y3R4KQotIAotICAgICAvKiBwYXJzZSBpbWFnZSBvZmZzZXRzICovCi0gICAgIGF2aW9fc2VlayhwYiwgb2ZmSW1hZ2VPZmZzZXRzLCBTRUVLX1NFVCk7Ci0tICAgIGZvciAoaSA9IDA7IGkgPCBzdC0+ZHVyYXRpb247IGkrKykKLSsgICAgZm9yIChpID0gMDsgaSA8IHN0LT5kdXJhdGlvbjsgaSsrKSB7Ci0rICAgICAgICBpZiAoYXZpb19mZW9mKHBiKSkKLSsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSsKLSAgICAgICAgIGF2X2FkZF9pbmRleF9lbnRyeShzdCwgYXZpb19ybDY0KHBiKSwgaSwgMCwgMCwgQVZJTkRFWF9LRVlGUkFNRSk7Ci0rICAgIH0KLSAKLSAgICAgcmV0dXJuIDA7Ci0gfQotLS0gCi0yLjEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDE2OS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTY5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTI4NGZhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTY5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotRnJvbSA5ZDAwZmI5ZDcwZWU4YzBjYzcwMDJiODkzMThjNWJlMDBmMWJiZGFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xPz1FNT1BRD05OT1FNj1CNT1BOT0yOD1FNj05OT05Mz1FOT1CQj05MT0yOT89Ci0gPHRvbnkuc2hAYWxpYmFiYS1pbmMuY29tPgotRGF0ZTogVHVlLCAyOSBBdWcgMjAxNyAyMzo1OToyMSArMDIwMAotU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9teGZkZWM6IEZpeCBTaWduIGVycm9yIGluIG14Zl9yZWFkX3ByaW1lcl9wYWNrKCkKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotRml4ZXM6IDIwMTcwODI5Qi5teGYKLQotQ28tQXV0aG9yOiDlvKDmtKrkuq4o5pyb5YidKSIgPHdhbmdjaHUuemhsQGFsaWJhYmEtaW5jLmNvbT4KLUZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgotCi1DVkU6IENWRS0yMDE3LTE0MTY5Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmF2Zm9ybWF0L214ZmRlYy5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbXhmZGVjLmMgYi9saWJhdmZvcm1hdC9teGZkZWMuYwotaW5kZXggNmFkYjc3ZC4uOTE3MzFhNyAxMDA2NDQKLS0tLSBhL2xpYmF2Zm9ybWF0L214ZmRlYy5jCi0rKysgYi9saWJhdmZvcm1hdC9teGZkZWMuYwotQEAgLTUwMCw3ICs1MDAsNyBAQCBzdGF0aWMgaW50IG14Zl9yZWFkX3ByaW1lcl9wYWNrKHZvaWQgKmFyZywgQVZJT0NvbnRleHQgKnBiLCBpbnQgdGFnLCBpbnQgc2l6ZSwgVQotICAgICAgICAgYXZwcml2X3JlcXVlc3Rfc2FtcGxlKHBiLCAiUHJpbWVyIHBhY2sgaXRlbSBsZW5ndGggJWQiLCBpdGVtX2xlbik7Ci0gICAgICAgICByZXR1cm4gQVZFUlJPUl9QQVRDSFdFTENPTUU7Ci0gICAgIH0KLS0gICAgaWYgKGl0ZW1fbnVtID4gNjU1MzYpIHsKLSsgICAgaWYgKGl0ZW1fbnVtID4gNjU1MzYgfHwgaXRlbV9udW0gPCAwKSB7Ci0gICAgICAgICBhdl9sb2cobXhmLT5mYywgQVZfTE9HX0VSUk9SLCAiaXRlbV9udW0gJWQgaXMgdG9vIGxhcmdlXG4iLCBpdGVtX251bSk7Ci0gICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICAgfQotLS0gCi0yLjEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDE3MC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTcwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODYwMTI1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTcwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotRnJvbSA5MDBmMzk2OTJjYTAzMzdhOThhN2NmMDQ3ZTRlMjYxMTA3MTgxMGMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xPz1FNT1BRD05OT1FNj1CNT1BOT0yOD1FNj05OT05Mz1FOT1CQj05MT0yOT89Ci0gPHRvbnkuc2hAYWxpYmFiYS1pbmMuY29tPgotRGF0ZTogVHVlLCAyOSBBdWcgMjAxNyAyMzo1OToyMSArMDIwMAotU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9teGZkZWM6IEZpeCBEb1MgaXNzdWVzIGluCi0gbXhmX3JlYWRfaW5kZXhfZW50cnlfYXJyYXkoKQotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1GaXhlczogMjAxNzA4MjlBLm14ZgotCi1Dby1BdXRob3I6IOW8oOa0quS6rijmnJvliJ0pIiA8d2FuZ2NodS56aGxAYWxpYmFiYS1pbmMuY29tPgotRm91bmQtYnk6IFhpYW9oZWkgYW5kIFdhbmdjaHUgZnJvbSBBbGliYWJhIFNlY3VyaXR5IFRlYW0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+Ci0KLUNWRTogQ1ZFLTIwMTctMTQxNzAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliYXZmb3JtYXQvbXhmZGVjLmMgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9teGZkZWMuYyBiL2xpYmF2Zm9ybWF0L214ZmRlYy5jCi1pbmRleCBmOGQwZjllLi42YWRiNzdkIDEwMDY0NAotLS0tIGEvbGliYXZmb3JtYXQvbXhmZGVjLmMKLSsrKyBiL2xpYmF2Zm9ybWF0L214ZmRlYy5jCi1AQCAtODk5LDYgKzg5OSw4IEBAIHN0YXRpYyBpbnQgbXhmX3JlYWRfaW5kZXhfZW50cnlfYXJyYXkoQVZJT0NvbnRleHQgKnBiLCBNWEZJbmRleFRhYmxlU2VnbWVudCAqc2VnCi0gICAgIHNlZ21lbnQtPm5iX2luZGV4X2VudHJpZXMgPSBhdmlvX3JiMzIocGIpOwotIAotICAgICBsZW5ndGggPSBhdmlvX3JiMzIocGIpOwotKyAgICBpZihzZWdtZW50LT5uYl9pbmRleF9lbnRyaWVzICYmIGxlbmd0aCA8IDExKQotKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gCi0gICAgIGlmICghKHNlZ21lbnQtPnRlbXBvcmFsX29mZnNldF9lbnRyaWVzPWF2X2NhbGxvYyhzZWdtZW50LT5uYl9pbmRleF9lbnRyaWVzLCBzaXplb2YoKnNlZ21lbnQtPnRlbXBvcmFsX29mZnNldF9lbnRyaWVzKSkpIHx8Ci0gICAgICAgICAhKHNlZ21lbnQtPmZsYWdfZW50cmllcyAgICAgICAgICA9IGF2X2NhbGxvYyhzZWdtZW50LT5uYl9pbmRleF9lbnRyaWVzLCBzaXplb2YoKnNlZ21lbnQtPmZsYWdfZW50cmllcykpKSB8fAotQEAgLTkwOSw2ICs5MTEsOCBAQCBzdGF0aWMgaW50IG14Zl9yZWFkX2luZGV4X2VudHJ5X2FycmF5KEFWSU9Db250ZXh0ICpwYiwgTVhGSW5kZXhUYWJsZVNlZ21lbnQgKnNlZwotICAgICB9Ci0gCi0gICAgIGZvciAoaSA9IDA7IGkgPCBzZWdtZW50LT5uYl9pbmRleF9lbnRyaWVzOyBpKyspIHsKLSsgICAgICAgIGlmKGF2aW9fZmVvZihwYikpCi0rICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gICAgICAgICBzZWdtZW50LT50ZW1wb3JhbF9vZmZzZXRfZW50cmllc1tpXSA9IGF2aW9fcjgocGIpOwotICAgICAgICAgYXZpb19yOChwYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEtleUZyYW1lT2Zmc2V0ICovCi0gICAgICAgICBzZWdtZW50LT5mbGFnX2VudHJpZXNbaV0gPSBhdmlvX3I4KHBiKTsKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQxNzEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDE3MS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTJhZTIwNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDE3MS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUZyb20gYzI0YmNiNTUzNjUwYjkxZTllZmYxNWVmNmU1NGNhNzNkZTI0NTNiNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT89RTU9QUQ9OTk9RTY9QjU9QTk9Mjg9RTY9OTk9OTM9RTk9QkI9OTE9Mjk/PQotIDx0b255LnNoQGFsaWJhYmEtaW5jLmNvbT4KLURhdGU6IFR1ZSwgMjkgQXVnIDIwMTcgMjM6NTk6MjEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZmb3JtYXQvbnN2ZGVjOiBGaXggRG9TIGR1ZSB0byBsYWNrIG9mIGVvZiBjaGVjayBpbgotIG5zdnNfZmlsZV9vZmZzZXQgbG9vcC4KLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotRml4ZXM6IDIwMTcwODI5Lm5zdgotCi1Dby1BdXRob3I6IOW8oOa0quS6rijmnJvliJ0pIiA8d2FuZ2NodS56aGxAYWxpYmFiYS1pbmMuY29tPgotRm91bmQtYnk6IFhpYW9oZWkgYW5kIFdhbmdjaHUgZnJvbSBBbGliYWJhIFNlY3VyaXR5IFRlYW0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+Ci0KLUNWRTogQ1ZFLTIwMTctMTQxNzEKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliYXZmb3JtYXQvbnN2ZGVjLmMgfCA1ICsrKystCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbnN2ZGVjLmMgYi9saWJhdmZvcm1hdC9uc3ZkZWMuYwotaW5kZXggYzZkZGI2Ny4uZDhjZTY1NiAxMDA2NDQKLS0tLSBhL2xpYmF2Zm9ybWF0L25zdmRlYy5jCi0rKysgYi9saWJhdmZvcm1hdC9uc3ZkZWMuYwotQEAgLTMzNSw4ICszMzUsMTEgQEAgc3RhdGljIGludCBuc3ZfcGFyc2VfTlNWZl9oZWFkZXIoQVZGb3JtYXRDb250ZXh0ICpzKQotICAgICAgICAgaWYgKCFuc3YtPm5zdnNfZmlsZV9vZmZzZXQpCi0gICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKLSAKLS0gICAgICAgIGZvcihpPTA7aTx0YWJsZV9lbnRyaWVzX3VzZWQ7aSsrKQotKyAgICAgICAgZm9yKGk9MDtpPHRhYmxlX2VudHJpZXNfdXNlZDtpKyspIHsKLSsgICAgICAgICAgICBpZiAoYXZpb19mZW9mKHBiKSkKLSsgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gICAgICAgICAgICAgbnN2LT5uc3ZzX2ZpbGVfb2Zmc2V0W2ldID0gYXZpb19ybDMyKHBiKSArIHNpemU7Ci0rICAgICAgICB9Ci0gCi0gICAgICAgICBpZih0YWJsZV9lbnRyaWVzID4gdGFibGVfZW50cmllc191c2VkICYmCi0gICAgICAgICAgICBhdmlvX3JsMzIocGIpID09IE1LVEFHKCdUJywnTycsJ0MnLCcyJykpIHsKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDIyMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWUwMjAzNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDIyMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gOWNiNGViNzcyODM5YzVlMWRlMjg1NWQxMjZiZjc0ZmYxNmQxMzM4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+Ci1EYXRlOiBUdWUsIDUgU2VwIDIwMTcgMDA6MTY6MjkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZmb3JtYXQvbW92OiBGaXggRG9TIGluIHJlYWRfdGZyYSgpCi0KLUZpeGVzOiBNaXNzaW5nIEVPRiBjaGVjayBpbiBsb29wCi1ObyB0ZXN0Y2FzZQotCi1Gb3VuZC1ieTogWGlhb2hlaSBhbmQgV2FuZ2NodSBmcm9tIEFsaWJhYmEgU2VjdXJpdHkgVGVhbQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KLQotQ1ZFOiBDVkUtMjAxNy0xNDIyMgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJhdmZvcm1hdC9tb3YuYyB8IDcgKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L21vdi5jIGIvbGliYXZmb3JtYXQvbW92LmMKLWluZGV4IDk5NGU5YzYuLjI1MTk3MDcgMTAwNjQ0Ci0tLS0gYS9saWJhdmZvcm1hdC9tb3YuYwotKysrIGIvbGliYXZmb3JtYXQvbW92LmMKLUBAIC02MDk0LDYgKzYwOTQsMTMgQEAgc3RhdGljIGludCByZWFkX3RmcmEoTU9WQ29udGV4dCAqbW92LCBBVklPQ29udGV4dCAqZikKLSAgICAgfQotICAgICBmb3IgKGkgPSAwOyBpIDwgaW5kZXgtPml0ZW1fY291bnQ7IGkrKykgewotICAgICAgICAgaW50NjRfdCB0aW1lLCBvZmZzZXQ7Ci0rCi0rICAgICAgICBpZiAoYXZpb19mZW9mKGYpKSB7Ci0rICAgICAgICAgICAgaW5kZXgtPml0ZW1fY291bnQgPSAwOwotKyAgICAgICAgICAgIGF2X2ZyZWVwKCZpbmRleC0+aXRlbXMpOwotKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotKyAgICAgICAgfQotKwotICAgICAgICAgaWYgKHZlcnNpb24gPT0gMSkgewotICAgICAgICAgICAgIHRpbWUgICA9IGF2aW9fcmI2NChmKTsKLSAgICAgICAgICAgICBvZmZzZXQgPSBhdmlvX3JiNjQoZik7Ci0tLSAKLTIuMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MjIzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxZmVmNmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIGFmYzljNjgzZWQ5ZGIwMWVkYjM1N2JjOGMxOWVkYWQ0MjgyYjNhOTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgotRGF0ZTogVHVlLCA1IFNlcCAyMDE3IDAwOjE2OjI5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L2FzZmRlYzogRml4IERvUyBpbiBhc2ZfYnVpbGRfc2ltcGxlX2luZGV4KCkKLQotRml4ZXM6IE1pc3NpbmcgRU9GIGNoZWNrIGluIGxvb3AKLU5vIHRlc3RjYXNlCi0KLUZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgotCi1DVkU6IENWRS0yMDE3LTE0MjIzCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmF2Zm9ybWF0L2FzZmRlY19mLmMgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvYXNmZGVjX2YuYyBiL2xpYmF2Zm9ybWF0L2FzZmRlY19mLmMKLWluZGV4IGYzYWNiYWUuLmNjNjQ4YjkgMTAwNjQ0Ci0tLS0gYS9saWJhdmZvcm1hdC9hc2ZkZWNfZi5jCi0rKysgYi9saWJhdmZvcm1hdC9hc2ZkZWNfZi5jCi1AQCAtMTYxMCw2ICsxNjEwLDExIEBAIHN0YXRpYyBpbnQgYXNmX2J1aWxkX3NpbXBsZV9pbmRleChBVkZvcm1hdENvbnRleHQgKnMsIGludCBzdHJlYW1faW5kZXgpCi0gICAgICAgICAgICAgaW50NjRfdCBwb3MgICAgICAgPSBzLT5pbnRlcm5hbC0+ZGF0YV9vZmZzZXQgKyBzLT5wYWNrZXRfc2l6ZSAqIChpbnQ2NF90KXBrdG51bTsKLSAgICAgICAgICAgICBpbnQ2NF90IGluZGV4X3B0cyA9IEZGTUFYKGF2X3Jlc2NhbGUoaXRpbWUsIGksIDEwMDAwKSAtIGFzZi0+aGRyLnByZXJvbGwsIDApOwotIAotKyAgICAgICAgICAgIGlmIChhdmlvX2Zlb2Yocy0+cGIpKSB7Ci0rICAgICAgICAgICAgICAgIHJldCA9IEFWRVJST1JfSU5WQUxJRERBVEE7Ci0rICAgICAgICAgICAgICAgIGdvdG8gZW5kOwotKyAgICAgICAgICAgIH0KLSsKLSAgICAgICAgICAgICBpZiAocG9zICE9IGxhc3RfcG9zKSB7Ci0gICAgICAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfREVCVUcsICJwa3RudW06JWQsIHBrdGN0OiVkICBwdHM6ICUiUFJJZDY0IlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHBrdG51bSwgcGt0Y3QsIGluZGV4X3B0cyk7Ci0tLSAKLTIuMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MjI1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlNjg0NWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TdWJqZWN0OiBbUEFUQ0hdIGZmcHJvYmU6IEZpeCBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2l0aCBjb2xvciBwcmltYXJpZXMKLQotRm91bmQtYnk6IEFELWxhYiBvZiB2ZW51c3RlY2gKLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+Ci0KLUNWRTogQ1ZFLTIwMTctMTQyMjUKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gZmZwcm9iZS5jIHwgMTUgKysrKysrKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9mZnByb2JlLmMgYi9mZnByb2JlLmMKLWluZGV4IGEyMTlmYzEuLmRmMjJiMzAgMTAwNjQ0Ci0tLS0gYS9mZnByb2JlLmMKLSsrKyBiL2ZmcHJvYmUuYwotQEAgLTE4OTksNiArMTg5OSwxNiBAQCBzdGF0aWMgdm9pZCBwcmludF9wa3Rfc2lkZV9kYXRhKFdyaXRlckNvbnRleHQgKncsCi0gICAgIHdyaXRlcl9wcmludF9zZWN0aW9uX2Zvb3Rlcih3KTsKLSB9Ci0gCi0rc3RhdGljIHZvaWQgcHJpbnRfcHJpbWFyaWVzKFdyaXRlckNvbnRleHQgKncsIGVudW0gQVZDb2xvclByaW1hcmllcyBjb2xvcl9wcmltYXJpZXMpCi0rewotKyAgICBjb25zdCBjaGFyICp2YWwgPSBhdl9jb2xvcl9wcmltYXJpZXNfbmFtZShjb2xvcl9wcmltYXJpZXMpOwotKyAgICBpZiAoIXZhbCB8fCBjb2xvcl9wcmltYXJpZXMgPT0gQVZDT0xfUFJJX1VOU1BFQ0lGSUVEKSB7Ci0rCXByaW50X3N0cl9vcHQoImNvbG9yX3ByaW1hcmllcyIsICJ1bmtub3duIik7Ci0rICAgIH0gZWxzZSB7Ci0rCXByaW50X3N0cigiY29sb3JfcHJpbWFyaWVzIiwgdmFsKTsKLSsgICAgfQotK30KLSsKLSBzdGF0aWMgdm9pZCBjbGVhcl9sb2coaW50IG5lZWRfbG9jaykKLSB7Ci0gICAgIGludCBpOwotQEAgLTI0MjAsMTAgKzI0MzAsNyBAQCBzdGF0aWMgaW50IHNob3dfc3RyZWFtKFdyaXRlckNvbnRleHQgKncsIEFWRm9ybWF0Q29udGV4dCAqZm10X2N0eCwgaW50IHN0cmVhbV9pZAotICAgICAgICAgZWxzZQotICAgICAgICAgICAgIHByaW50X3N0cl9vcHQoImNvbG9yX3RyYW5zZmVyIiwgYXZfY29sb3JfdHJhbnNmZXJfbmFtZShwYXItPmNvbG9yX3RyYykpOwotIAotLSAgICAgICAgaWYgKHBhci0+Y29sb3JfcHJpbWFyaWVzICE9IEFWQ09MX1BSSV9VTlNQRUNJRklFRCkKLS0gICAgICAgICAgICBwcmludF9zdHIoImNvbG9yX3ByaW1hcmllcyIsIGF2X2NvbG9yX3ByaW1hcmllc19uYW1lKHBhci0+Y29sb3JfcHJpbWFyaWVzKSk7Ci0tICAgICAgICBlbHNlCi0tICAgICAgICAgICAgcHJpbnRfc3RyX29wdCgiY29sb3JfcHJpbWFyaWVzIiwgYXZfY29sb3JfcHJpbWFyaWVzX25hbWUocGFyLT5jb2xvcl9wcmltYXJpZXMpKTsKLSsgICAgICAgIHByaW50X3ByaW1hcmllcyh3LCBwYXItPmNvbG9yX3ByaW1hcmllcyk7Ci0gCi0gICAgICAgICBpZiAocGFyLT5jaHJvbWFfbG9jYXRpb24gIT0gQVZDSFJPTUFfTE9DX1VOU1BFQ0lGSUVEKQotICAgICAgICAgICAgIHByaW50X3N0cigiY2hyb21hX2xvY2F0aW9uIiwgYXZfY2hyb21hX2xvY2F0aW9uX25hbWUocGFyLT5jaHJvbWFfbG9jYXRpb24pKTsKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWdfMy4zLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ18zLjMuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzFlYmVjZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ18zLjMuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi1TVU1NQVJZID0gIkEgY29tcGxldGUsIGNyb3NzLXBsYXRmb3JtIHNvbHV0aW9uIHRvIHJlY29yZCwgY29udmVydCBhbmQgc3RyZWFtIGF1ZGlvIGFuZCB2aWRlby4iCi1ERVNDUklQVElPTiA9ICJGRm1wZWcgaXMgdGhlIGxlYWRpbmcgbXVsdGltZWRpYSBmcmFtZXdvcmssIGFibGUgdG8gZGVjb2RlLCBlbmNvZGUsIHRyYW5zY29kZSwgXAotICAgICAgICAgICAgICAgbXV4LCBkZW11eCwgc3RyZWFtLCBmaWx0ZXIgYW5kIHBsYXkgcHJldHR5IG11Y2ggYW55dGhpbmcgdGhhdCBodW1hbnMgYW5kIG1hY2hpbmVzIFwKLSAgICAgICAgICAgICAgIGhhdmUgY3JlYXRlZC4gSXQgc3VwcG9ydHMgdGhlIG1vc3Qgb2JzY3VyZSBhbmNpZW50IGZvcm1hdHMgdXAgdG8gdGhlIGN1dHRpbmcgZWRnZS4iCi1IT01FUEFHRSA9ICJodHRwczovL3d3dy5mZm1wZWcub3JnLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJCU0QgJiBHUEx2MisgJiBMR1BMdjIuMSsgJiBNSVQiCi1MSUNFTlNFXyR7UE59ID0gIkdQTHYyKyIKLUxJQ0VOU0VfbGliYXZjb2RlYyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZkZXZpY2UgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYmF2ZmlsdGVyID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJhdmZvcm1hdCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZyZXNhbXBsZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZ1dGlsID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJwb3N0cHJvYyA9ICJHUEx2MisiCi1MSUNFTlNFX2xpYnN3cmVzYW1wbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYnN3c2NhbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuR1BMdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYyLjE7bWQ1PWJkN2E0NDMzMjBhZjhjODEyZTRjMThkMWI3OWRmMDA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKLQotU1JDX1VSSSA9ICJodHRwczovL3d3dy5mZm1wZWcub3JnL3JlbGVhc2VzLyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9taXBzNjRfY3B1X2RldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLWZpeC1mb3ItbWlwcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDA1NC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDA1NS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDA1Ni5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDA1Ny5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDA1OC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDA1OS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDE2OS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDE3MC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDE3MS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDIyMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDIyMy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDIyNS5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjc0M2RjNjZlYmU2NzE4MDI4M2I5MmQwMjlmNjkwZDBmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQyYTkwMDJjZGM2YjUzM2I1OTcyODgyNzE4NmMwNDRhZDAyYmE2NDg0MWYxYjdjZDZjMjE3Nzk4NzU0NTNhMWUiCi0KLSMgQnVpbGQgZmFpbHMgd2hlbiB0aHVtYiBpcyBlbmFibGVkOiBodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MTcKLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgotCi0jIFNob3VsZCBiZSBBUEkgY29tcGF0aWJsZSB3aXRoIGxpYmF2ICh3aGljaCB3YXMgYSBmb3JrIG9mIGZmbXBlZykKLSMgbGlicG9zdHByb2Mgd2FzIHByZXZpb3VzbHkgcGFja2FnZWQgZnJvbSBhIHNlcGFyYXRlIHJlY2lwZQotUFJPVklERVMgPSAibGliYXYgbGlicG9zdHByb2MiCi0KLURFUEVORFMgPSAiYWxzYS1saWIgemxpYiBsaWJvZ2cgeWFzbS1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHID8/PSAiYXZkZXZpY2UgYXZmaWx0ZXIgYXZjb2RlYyBhdmZvcm1hdCBzd3Jlc2FtcGxlIHN3c2NhbGUgcG9zdHByb2MgXAotICAgICAgICAgICAgICAgICAgIGJ6bGliIGdwbCBsem1hIHRoZW9yYSB4MjY0IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4dicsICcnLCBkKX0iCi0KLSMgbGlicmFyaWVzIHRvIGJ1aWxkIGluIGFkZGl0aW9uIHRvIGF2dXRpbAotUEFDS0FHRUNPTkZJR1thdmRldmljZV0gPSAiLS1lbmFibGUtYXZkZXZpY2UsLS1kaXNhYmxlLWF2ZGV2aWNlIgotUEFDS0FHRUNPTkZJR1thdmZpbHRlcl0gPSAiLS1lbmFibGUtYXZmaWx0ZXIsLS1kaXNhYmxlLWF2ZmlsdGVyIgotUEFDS0FHRUNPTkZJR1thdmNvZGVjXSA9ICItLWVuYWJsZS1hdmNvZGVjLC0tZGlzYWJsZS1hdmNvZGVjIgotUEFDS0FHRUNPTkZJR1thdmZvcm1hdF0gPSAiLS1lbmFibGUtYXZmb3JtYXQsLS1kaXNhYmxlLWF2Zm9ybWF0IgotUEFDS0FHRUNPTkZJR1tzd3Jlc2FtcGxlXSA9ICItLWVuYWJsZS1zd3Jlc2FtcGxlLC0tZGlzYWJsZS1zd3Jlc2FtcGxlIgotUEFDS0FHRUNPTkZJR1tzd3NjYWxlXSA9ICItLWVuYWJsZS1zd3NjYWxlLC0tZGlzYWJsZS1zd3NjYWxlIgotUEFDS0FHRUNPTkZJR1twb3N0cHJvY10gPSAiLS1lbmFibGUtcG9zdHByb2MsLS1kaXNhYmxlLXBvc3Rwcm9jIgotUEFDS0FHRUNPTkZJR1thdnJlc2FtcGxlXSA9ICItLWVuYWJsZS1hdnJlc2FtcGxlLC0tZGlzYWJsZS1hdnJlc2FtcGxlIgotCi0jIGZlYXR1cmVzIHRvIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbYnpsaWJdID0gIi0tZW5hYmxlLWJ6bGliLC0tZGlzYWJsZS1iemxpYixiemlwMiIKLVBBQ0tBR0VDT05GSUdbZ3BsXSA9ICItLWVuYWJsZS1ncGwsLS1kaXNhYmxlLWdwbCIKLVBBQ0tBR0VDT05GSUdbZ3NtXSA9ICItLWVuYWJsZS1saWJnc20sLS1kaXNhYmxlLWxpYmdzbSxsaWJnc20iCi1QQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWluZGV2PWphY2ssLS1kaXNhYmxlLWluZGV2PWphY2ssamFjayIKLVBBQ0tBR0VDT05GSUdbbGlidm9yYmlzXSA9ICItLWVuYWJsZS1saWJ2b3JiaXMsLS1kaXNhYmxlLWxpYnZvcmJpcyxsaWJ2b3JiaXMiCi1QQUNLQUdFQ09ORklHW2x6bWFdID0gIi0tZW5hYmxlLWx6bWEsLS1kaXNhYmxlLWx6bWEseHoiCi1QQUNLQUdFQ09ORklHW21wM2xhbWVdID0gIi0tZW5hYmxlLWxpYm1wM2xhbWUsLS1kaXNhYmxlLWxpYm1wM2xhbWUsbGFtZSIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS1lbmFibGUtb3BlbnNzbCwtLWRpc2FibGUtb3BlbnNzbCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tzY2hyb2VkaW5nZXJdID0gIi0tZW5hYmxlLWxpYnNjaHJvZWRpbmdlciwtLWRpc2FibGUtbGlic2Nocm9lZGluZ2VyLHNjaHJvZWRpbmdlciIKLVBBQ0tBR0VDT05GSUdbc2RsMl0gPSAiLS1lbmFibGUtc2RsMiwtLWRpc2FibGUtc2RsMix2aXJ0dWFsL2xpYnNkbDIiCi1QQUNLQUdFQ09ORklHW3NwZWV4XSA9ICItLWVuYWJsZS1saWJzcGVleCwtLWRpc2FibGUtbGlic3BlZXgsc3BlZXgiCi1QQUNLQUdFQ09ORklHW3RoZW9yYV0gPSAiLS1lbmFibGUtbGlidGhlb3JhLC0tZGlzYWJsZS1saWJ0aGVvcmEsbGlidGhlb3JhIgotUEFDS0FHRUNPTkZJR1t2YWFwaV0gPSAiLS1lbmFibGUtdmFhcGksLS1kaXNhYmxlLXZhYXBpLGxpYnZhIgotUEFDS0FHRUNPTkZJR1t2ZHBhdV0gPSAiLS1lbmFibGUtdmRwYXUsLS1kaXNhYmxlLXZkcGF1LGxpYnZkcGF1IgotUEFDS0FHRUNPTkZJR1t2cHhdID0gIi0tZW5hYmxlLWxpYnZweCwtLWRpc2FibGUtbGlidnB4LGxpYnZweCIKLVBBQ0tBR0VDT05GSUdbeDI2NF0gPSAiLS1lbmFibGUtbGlieDI2NCwtLWRpc2FibGUtbGlieDI2NCx4MjY0IgotUEFDS0FHRUNPTkZJR1t4dl0gPSAiLS1lbmFibGUtb3V0ZGV2PXh2LC0tZGlzYWJsZS1vdXRkZXY9eHYsbGlieHYiCi0KLSMgQ2hlY2sgY29kZWNzIHRoYXQgcmVxdWlyZSAtLWVuYWJsZS1ub25mcmVlCi1VU0VfTk9ORlJFRSA9ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ1BBQ0tBR0VDT05GSUcnLCBbICdvcGVuc3NsJyBdLCAneWVzJywgJycsIGQpfSIKLQotZGVmIGNwdShkKToKLSAgICBmb3IgYXJnIGluIChkLmdldFZhcignVFVORV9DQ0FSR1MnKSBvciAnJykuc3BsaXQoKToKLSAgICAgICAgaWYgYXJnLnN0YXJ0c3dpdGgoJy1tY3B1PScpOgotICAgICAgICAgICAgcmV0dXJuIGFyZ1s2Ol0KLSAgICByZXR1cm4gJ2dlbmVyaWMnCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1zdHJpcHBpbmcgXAotICAgIC0tZW5hYmxlLXBpYyBcCi0gICAgLS1lbmFibGUtc2hhcmVkIFwKLSAgICAtLWVuYWJsZS1wdGhyZWFkcyBcCi0gICAgLS1kaXNhYmxlLWxpYnhjYiBcCi0gICAgLS1kaXNhYmxlLWxpYnhjYi1zaG0gXAotICAgIC0tZGlzYWJsZS1saWJ4Y2IteGZpeGVzIFwKLSAgICAtLWRpc2FibGUtbGlieGNiLXNoYXBlIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnVVNFX05PTkZSRUUnLCAneWVzJywgJy0tZW5hYmxlLW5vbmZyZWUnLCAnJywgZCl9IFwKLSAgICBcCi0gICAgLS1jcm9zcy1wcmVmaXg9JHtUQVJHRVRfUFJFRklYfSBcCi0gICAgXAotICAgIC0tbGQ9IiR7Q0NMRH0iIFwKLSAgICAtLWNjPSIke0NDfSIgXAotICAgIC0tY3h4PSIke0NYWH0iIFwKLSAgICAtLWFyY2g9JHtUQVJHRVRfQVJDSH0gXAotICAgIC0tdGFyZ2V0LW9zPSJsaW51eCIgXAotICAgIC0tZW5hYmxlLWNyb3NzLWNvbXBpbGUgXAotICAgIC0tZXh0cmEtY2ZsYWdzPSIke1RBUkdFVF9DRkxBR1N9ICR7SE9TVF9DQ19BUkNIfSR7VE9PTENIQUlOX09QVElPTlN9IiBcCi0gICAgLS1leHRyYS1sZGZsYWdzPSIke1RBUkdFVF9MREZMQUdTfSIgXAotICAgIC0tc3lzcm9vdD0iJHtTVEFHSU5HX0RJUl9UQVJHRVR9IiBcCi0gICAgLS1lbmFibGUtaGFyZGNvZGVkLXRhYmxlcyBcCi0gICAgJHtFWFRSQV9GRkNPTkZ9IFwKLSAgICAtLWxpYmRpcj0ke2xpYmRpcn0gXAotICAgIC0tc2hsaWJkaXI9JHtsaWJkaXJ9IFwKLSAgICAtLWRhdGFkaXI9JHtkYXRhZGlyfS9mZm1wZWcgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBVkFJTFRVTkVTJywgJ21pcHMzMnIyJywgJycsICctLWRpc2FibGUtbWlwc2RzcCAtLWRpc2FibGUtbWlwc2RzcHIyJywgZCl9IFwKLSAgICAtLWNwdT0ke0BjcHUoZCl9IFwKLSAgICAtLXBrZy1jb25maWc9cGtnLWNvbmZpZyBcCi0iCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfbGludXgtZ251eDMyID0gIiAtLWRpc2FibGUtYXNtIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgJHtTfS9jb25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9Ci19Ci0KLVBBQ0tBR0VTID0rICJsaWJhdmNvZGVjIFwKLSAgICAgICAgICAgICBsaWJhdmRldmljZSBcCi0gICAgICAgICAgICAgbGliYXZmaWx0ZXIgXAotICAgICAgICAgICAgIGxpYmF2Zm9ybWF0IFwKLSAgICAgICAgICAgICBsaWJhdnJlc2FtcGxlIFwKLSAgICAgICAgICAgICBsaWJhdnV0aWwgXAotICAgICAgICAgICAgIGxpYnBvc3Rwcm9jIFwKLSAgICAgICAgICAgICBsaWJzd3Jlc2FtcGxlIFwKLSAgICAgICAgICAgICBsaWJzd3NjYWxlIgotCi1GSUxFU19saWJhdmNvZGVjID0gIiR7bGliZGlyfS9saWJhdmNvZGVjJHtTT0xJQlN9IgotRklMRVNfbGliYXZkZXZpY2UgPSAiJHtsaWJkaXJ9L2xpYmF2ZGV2aWNlJHtTT0xJQlN9IgotRklMRVNfbGliYXZmaWx0ZXIgPSAiJHtsaWJkaXJ9L2xpYmF2ZmlsdGVyJHtTT0xJQlN9IgotRklMRVNfbGliYXZmb3JtYXQgPSAiJHtsaWJkaXJ9L2xpYmF2Zm9ybWF0JHtTT0xJQlN9IgotRklMRVNfbGliYXZyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGliYXZyZXNhbXBsZSR7U09MSUJTfSIKLUZJTEVTX2xpYmF2dXRpbCA9ICIke2xpYmRpcn0vbGliYXZ1dGlsJHtTT0xJQlN9IgotRklMRVNfbGlicG9zdHByb2MgPSAiJHtsaWJkaXJ9L2xpYnBvc3Rwcm9jJHtTT0xJQlN9IgotRklMRVNfbGlic3dyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGlic3dyZXNhbXBsZSR7U09MSUJTfSIKLUZJTEVTX2xpYnN3c2NhbGUgPSAiJHtsaWJkaXJ9L2xpYnN3c2NhbGUke1NPTElCU30iCi0KLSMgZmZtcGVnIGRpc2FibGVzIFBJQyBvbiBzb21lIHBsYXRmb3JtcyAoZS5nLiB4ODYtMzIpCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2Y29kZWMgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZkZXZpY2UgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmaWx0ZXIgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmb3JtYXQgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZ1dGlsID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2cmVzYW1wbGUgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlic3dzY2FsZSA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJzd3Jlc2FtcGxlID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnBvc3Rwcm9jID0gInRleHRyZWwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ18zLjQuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzMuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3OWNmN2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ18zLjQuMi5iYgpAQCAtMCwwICsxLDE1MSBAQAorU1VNTUFSWSA9ICJBIGNvbXBsZXRlLCBjcm9zcy1wbGF0Zm9ybSBzb2x1dGlvbiB0byByZWNvcmQsIGNvbnZlcnQgYW5kIHN0cmVhbSBhdWRpbyBhbmQgdmlkZW8uIgorREVTQ1JJUFRJT04gPSAiRkZtcGVnIGlzIHRoZSBsZWFkaW5nIG11bHRpbWVkaWEgZnJhbWV3b3JrLCBhYmxlIHRvIGRlY29kZSwgZW5jb2RlLCB0cmFuc2NvZGUsIFwKKyAgICAgICAgICAgICAgIG11eCwgZGVtdXgsIHN0cmVhbSwgZmlsdGVyIGFuZCBwbGF5IHByZXR0eSBtdWNoIGFueXRoaW5nIHRoYXQgaHVtYW5zIGFuZCBtYWNoaW5lcyBcCisgICAgICAgICAgICAgICBoYXZlIGNyZWF0ZWQuIEl0IHN1cHBvcnRzIHRoZSBtb3N0IG9ic2N1cmUgYW5jaWVudCBmb3JtYXRzIHVwIHRvIHRoZSBjdXR0aW5nIGVkZ2UuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZmZtcGVnLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQlNEICYgR1BMdjIrICYgTEdQTHYyLjErICYgTUlUIgorTElDRU5TRV8ke1BOfSA9ICJHUEx2MisiCitMSUNFTlNFX2xpYmF2Y29kZWMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2ZGV2aWNlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJhdmZpbHRlciA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGliYXZmb3JtYXQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2cmVzYW1wbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2dXRpbCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGlicG9zdHByb2MgPSAiR1BMdjIrIgorTElDRU5TRV9saWJzd3Jlc2FtcGxlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJzd3NjYWxlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkdQTHYyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTHYzO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEx2Mi4xO21kNT1iZDdhNDQzMzIwYWY4YzgxMmU0YzE4ZDFiNzlkZjAwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEx2MzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cuZmZtcGVnLm9yZy9yZWxlYXNlcy8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vbWlwczY0X2NwdV9kZXRlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiY2JmNGVhZDIyN2ZjZWRkZGY1NGM4NjAxMzcwNWE5ODgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmI5MmU5NTc4ZWY4YjNlNDllZWFiMjI5ZTY5MzA1ZjVmNGNiYzFmZGFhMjJlOTI3ZmM3ZmNhMThhY2NjZDc0MCIKKworIyBCdWlsZCBmYWlscyB3aGVuIHRodW1iIGlzIGVuYWJsZWQ6IGh0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxNworQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCisKKyMgU2hvdWxkIGJlIEFQSSBjb21wYXRpYmxlIHdpdGggbGliYXYgKHdoaWNoIHdhcyBhIGZvcmsgb2YgZmZtcGVnKQorIyBsaWJwb3N0cHJvYyB3YXMgcHJldmlvdXNseSBwYWNrYWdlZCBmcm9tIGEgc2VwYXJhdGUgcmVjaXBlCitQUk9WSURFUyA9ICJsaWJhdiBsaWJwb3N0cHJvYyIKKworREVQRU5EUyA9ICJhbHNhLWxpYiB6bGliIGxpYm9nZyB5YXNtLW5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz89ICJhdmRldmljZSBhdmZpbHRlciBhdmNvZGVjIGF2Zm9ybWF0IHN3cmVzYW1wbGUgc3dzY2FsZSBwb3N0cHJvYyBcCisgICAgICAgICAgICAgICAgICAgYnpsaWIgZ3BsIGx6bWEgdGhlb3JhIHgyNjQgXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3h2JywgJycsIGQpfSIKKworIyBsaWJyYXJpZXMgdG8gYnVpbGQgaW4gYWRkaXRpb24gdG8gYXZ1dGlsCitQQUNLQUdFQ09ORklHW2F2ZGV2aWNlXSA9ICItLWVuYWJsZS1hdmRldmljZSwtLWRpc2FibGUtYXZkZXZpY2UiCitQQUNLQUdFQ09ORklHW2F2ZmlsdGVyXSA9ICItLWVuYWJsZS1hdmZpbHRlciwtLWRpc2FibGUtYXZmaWx0ZXIiCitQQUNLQUdFQ09ORklHW2F2Y29kZWNdID0gIi0tZW5hYmxlLWF2Y29kZWMsLS1kaXNhYmxlLWF2Y29kZWMiCitQQUNLQUdFQ09ORklHW2F2Zm9ybWF0XSA9ICItLWVuYWJsZS1hdmZvcm1hdCwtLWRpc2FibGUtYXZmb3JtYXQiCitQQUNLQUdFQ09ORklHW3N3cmVzYW1wbGVdID0gIi0tZW5hYmxlLXN3cmVzYW1wbGUsLS1kaXNhYmxlLXN3cmVzYW1wbGUiCitQQUNLQUdFQ09ORklHW3N3c2NhbGVdID0gIi0tZW5hYmxlLXN3c2NhbGUsLS1kaXNhYmxlLXN3c2NhbGUiCitQQUNLQUdFQ09ORklHW3Bvc3Rwcm9jXSA9ICItLWVuYWJsZS1wb3N0cHJvYywtLWRpc2FibGUtcG9zdHByb2MiCitQQUNLQUdFQ09ORklHW2F2cmVzYW1wbGVdID0gIi0tZW5hYmxlLWF2cmVzYW1wbGUsLS1kaXNhYmxlLWF2cmVzYW1wbGUiCisKKyMgZmVhdHVyZXMgdG8gc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tiemxpYl0gPSAiLS1lbmFibGUtYnpsaWIsLS1kaXNhYmxlLWJ6bGliLGJ6aXAyIgorUEFDS0FHRUNPTkZJR1tncGxdID0gIi0tZW5hYmxlLWdwbCwtLWRpc2FibGUtZ3BsIgorUEFDS0FHRUNPTkZJR1tnc21dID0gIi0tZW5hYmxlLWxpYmdzbSwtLWRpc2FibGUtbGliZ3NtLGxpYmdzbSIKK1BBQ0tBR0VDT05GSUdbamFja10gPSAiLS1lbmFibGUtaW5kZXY9amFjaywtLWRpc2FibGUtaW5kZXY9amFjayxqYWNrIgorUEFDS0FHRUNPTkZJR1tsaWJ2b3JiaXNdID0gIi0tZW5hYmxlLWxpYnZvcmJpcywtLWRpc2FibGUtbGlidm9yYmlzLGxpYnZvcmJpcyIKK1BBQ0tBR0VDT05GSUdbbHptYV0gPSAiLS1lbmFibGUtbHptYSwtLWRpc2FibGUtbHptYSx4eiIKK1BBQ0tBR0VDT05GSUdbbXAzbGFtZV0gPSAiLS1lbmFibGUtbGlibXAzbGFtZSwtLWRpc2FibGUtbGlibXAzbGFtZSxsYW1lIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLC0tZGlzYWJsZS1vcGVuc3NsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3NkbDJdID0gIi0tZW5hYmxlLXNkbDIsLS1kaXNhYmxlLXNkbDIsdmlydHVhbC9saWJzZGwyIgorUEFDS0FHRUNPTkZJR1tzcGVleF0gPSAiLS1lbmFibGUtbGlic3BlZXgsLS1kaXNhYmxlLWxpYnNwZWV4LHNwZWV4IgorUEFDS0FHRUNPTkZJR1t0aGVvcmFdID0gIi0tZW5hYmxlLWxpYnRoZW9yYSwtLWRpc2FibGUtbGlidGhlb3JhLGxpYnRoZW9yYSIKK1BBQ0tBR0VDT05GSUdbdmFhcGldID0gIi0tZW5hYmxlLXZhYXBpLC0tZGlzYWJsZS12YWFwaSxsaWJ2YSIKK1BBQ0tBR0VDT05GSUdbdmRwYXVdID0gIi0tZW5hYmxlLXZkcGF1LC0tZGlzYWJsZS12ZHBhdSxsaWJ2ZHBhdSIKK1BBQ0tBR0VDT05GSUdbdnB4XSA9ICItLWVuYWJsZS1saWJ2cHgsLS1kaXNhYmxlLWxpYnZweCxsaWJ2cHgiCitQQUNLQUdFQ09ORklHW3gyNjRdID0gIi0tZW5hYmxlLWxpYngyNjQsLS1kaXNhYmxlLWxpYngyNjQseDI2NCIKK1BBQ0tBR0VDT05GSUdbeHZdID0gIi0tZW5hYmxlLW91dGRldj14diwtLWRpc2FibGUtb3V0ZGV2PXh2LGxpYnh2IgorCisjIENoZWNrIGNvZGVjcyB0aGF0IHJlcXVpcmUgLS1lbmFibGUtbm9uZnJlZQorVVNFX05PTkZSRUUgPSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdQQUNLQUdFQ09ORklHJywgWyAnb3BlbnNzbCcgXSwgJ3llcycsICcnLCBkKX0iCisKK2RlZiBjcHUoZCk6CisgICAgZm9yIGFyZyBpbiAoZC5nZXRWYXIoJ1RVTkVfQ0NBUkdTJykgb3IgJycpLnNwbGl0KCk6CisgICAgICAgIGlmIGFyZy5zdGFydHN3aXRoKCctbWNwdT0nKToKKyAgICAgICAgICAgIHJldHVybiBhcmdbNjpdCisgICAgcmV0dXJuICdnZW5lcmljJworCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWRpc2FibGUtc3RyaXBwaW5nIFwKKyAgICAtLWVuYWJsZS1waWMgXAorICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgLS1lbmFibGUtcHRocmVhZHMgXAorICAgIC0tZGlzYWJsZS1saWJ4Y2IgXAorICAgIC0tZGlzYWJsZS1saWJ4Y2Itc2htIFwKKyAgICAtLWRpc2FibGUtbGlieGNiLXhmaXhlcyBcCisgICAgLS1kaXNhYmxlLWxpYnhjYi1zaGFwZSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1VTRV9OT05GUkVFJywgJ3llcycsICctLWVuYWJsZS1ub25mcmVlJywgJycsIGQpfSBcCisgICAgXAorICAgIC0tY3Jvc3MtcHJlZml4PSR7VEFSR0VUX1BSRUZJWH0gXAorICAgIFwKKyAgICAtLWxkPSIke0NDTER9IiBcCisgICAgLS1jYz0iJHtDQ30iIFwKKyAgICAtLWN4eD0iJHtDWFh9IiBcCisgICAgLS1hcmNoPSR7VEFSR0VUX0FSQ0h9IFwKKyAgICAtLXRhcmdldC1vcz0ibGludXgiIFwKKyAgICAtLWVuYWJsZS1jcm9zcy1jb21waWxlIFwKKyAgICAtLWV4dHJhLWNmbGFncz0iJHtUQVJHRVRfQ0ZMQUdTfSAke0hPU1RfQ0NfQVJDSH0ke1RPT0xDSEFJTl9PUFRJT05TfSIgXAorICAgIC0tZXh0cmEtbGRmbGFncz0iJHtUQVJHRVRfTERGTEFHU30iIFwKKyAgICAtLXN5c3Jvb3Q9IiR7U1RBR0lOR19ESVJfVEFSR0VUfSIgXAorICAgIC0tZW5hYmxlLWhhcmRjb2RlZC10YWJsZXMgXAorICAgICR7RVhUUkFfRkZDT05GfSBcCisgICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAtLXNobGliZGlyPSR7bGliZGlyfSBcCisgICAgLS1kYXRhZGlyPSR7ZGF0YWRpcn0vZmZtcGVnIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnQVZBSUxUVU5FUycsICdtaXBzMzJyMicsICcnLCAnLS1kaXNhYmxlLW1pcHNkc3AgLS1kaXNhYmxlLW1pcHNkc3ByMicsIGQpfSBcCisgICAgLS1jcHU9JHtAY3B1KGQpfSBcCisgICAgLS1wa2ctY29uZmlnPXBrZy1jb25maWcgXAorIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpbnV4LWdudXgzMiA9ICIgLS1kaXNhYmxlLWFzbSIKKworZG9fY29uZmlndXJlKCkgeworICAgICR7U30vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQorfQorCitQQUNLQUdFUyA9KyAibGliYXZjb2RlYyBcCisgICAgICAgICAgICAgbGliYXZkZXZpY2UgXAorICAgICAgICAgICAgIGxpYmF2ZmlsdGVyIFwKKyAgICAgICAgICAgICBsaWJhdmZvcm1hdCBcCisgICAgICAgICAgICAgbGliYXZyZXNhbXBsZSBcCisgICAgICAgICAgICAgbGliYXZ1dGlsIFwKKyAgICAgICAgICAgICBsaWJwb3N0cHJvYyBcCisgICAgICAgICAgICAgbGlic3dyZXNhbXBsZSBcCisgICAgICAgICAgICAgbGlic3dzY2FsZSIKKworRklMRVNfbGliYXZjb2RlYyA9ICIke2xpYmRpcn0vbGliYXZjb2RlYyR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2ZGV2aWNlID0gIiR7bGliZGlyfS9saWJhdmRldmljZSR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2ZmlsdGVyID0gIiR7bGliZGlyfS9saWJhdmZpbHRlciR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2Zm9ybWF0ID0gIiR7bGliZGlyfS9saWJhdmZvcm1hdCR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2cmVzYW1wbGUgPSAiJHtsaWJkaXJ9L2xpYmF2cmVzYW1wbGUke1NPTElCU30iCitGSUxFU19saWJhdnV0aWwgPSAiJHtsaWJkaXJ9L2xpYmF2dXRpbCR7U09MSUJTfSIKK0ZJTEVTX2xpYnBvc3Rwcm9jID0gIiR7bGliZGlyfS9saWJwb3N0cHJvYyR7U09MSUJTfSIKK0ZJTEVTX2xpYnN3cmVzYW1wbGUgPSAiJHtsaWJkaXJ9L2xpYnN3cmVzYW1wbGUke1NPTElCU30iCitGSUxFU19saWJzd3NjYWxlID0gIiR7bGliZGlyfS9saWJzd3NjYWxlJHtTT0xJQlN9IgorCisjIGZmbXBlZyBkaXNhYmxlcyBQSUMgb24gc29tZSBwbGF0Zm9ybXMgKGUuZy4geDg2LTMyKQorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmNvZGVjID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2ZGV2aWNlID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2ZmlsdGVyID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2Zm9ybWF0ID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2dXRpbCA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdnJlc2FtcGxlID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnN3c2NhbGUgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlic3dyZXNhbXBsZSA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJwb3N0cHJvYyA9ICJ0ZXh0cmVsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy8wMDAxLWdzdC1nc3RwbHVnaW5sb2FkZXIuYy13aGVuLWVudi12YXItaXMtc2V0LWRvLW5vdC1mYWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzLzAwMDEtZ3N0LWdzdHBsdWdpbmxvYWRlci5jLXdoZW4tZW52LXZhci1pcy1zZXQtZG8tbm90LWZhbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2E4NzJjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy8wMDAxLWdzdC1nc3RwbHVnaW5sb2FkZXIuYy13aGVuLWVudi12YXItaXMtc2V0LWRvLW5vdC1mYWwucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSBhMWQ3YzU4MjM5MmM4YmM4N2ZhOTQxMWFmNzdiMjBlMDExOTQ0MzU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDI1IEphbiAyMDE4IDE3OjU1OjAyICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGdzdC9nc3RwbHVnaW5sb2FkZXIuYzogd2hlbiBlbnYgdmFyIGlzIHNldCBkbyBub3QgZmFsbAorIHRocm91Z2ggdG8gc3lzdGVtIHBsdWdpbiBzY2FubmVyCisKK0lmIHdlIHNldCBhIGN1c3RvbSBHU1RfUExVR0lOX1NDQU5ORVIgZW52IHZhciwgdGhlbiB3ZSBwcm9iYWJseSB3YW50IHRvIHVzZSB0aGF0IGFuZCBvbmx5IHRoYXQuCisKK0ZhbGxpbmcgdGhyb3VnaCB0byB0aGUgb25lIGluc3RhbGxlZCBvbiB0aGUgc3lzdGVtIGlzIHByb2JsYW1hdGljIGluIGNyb3NzLWNvbXBpbGF0aW9uCitlbnZpcm9uZW1udHMsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvbmUgcG9pbnRlZCB0byBieSB0aGUgZW52IHZhciBzdWNjZWVkZWQgb3IgZmFpbGVkLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgZ3N0L2dzdHBsdWdpbmxvYWRlci5jIHwgNCArLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ3N0L2dzdHBsdWdpbmxvYWRlci5jIGIvZ3N0L2dzdHBsdWdpbmxvYWRlci5jCitpbmRleCA0MzA4MjlkLi4zYTc1NzMxIDEwMDY0NAorLS0tIGEvZ3N0L2dzdHBsdWdpbmxvYWRlci5jCisrKysgYi9nc3QvZ3N0cGx1Z2lubG9hZGVyLmMKK0BAIC00NzEsOSArNDcxLDcgQEAgZ3N0X3BsdWdpbl9sb2FkZXJfc3Bhd24gKEdzdFBsdWdpbkxvYWRlciAqIGxvYWRlcikKKyAgICAgaGVscGVyX2JpbiA9IGdfc3RyZHVwIChlbnYpOworICAgICByZXMgPSBnc3RfcGx1Z2luX2xvYWRlcl90cnlfaGVscGVyIChsb2FkZXIsIGhlbHBlcl9iaW4pOworICAgICBnX2ZyZWUgKGhlbHBlcl9iaW4pOworLSAgfQorLQorLSAgaWYgKCFyZXMpIHsKKysgIH0gZWxzZSB7CisgICAgIEdTVF9MT0cgKCJUcnlpbmcgaW5zdGFsbGVkIHBsdWdpbiBzY2FubmVyIik7CisgCisgI2lmZGVmIEdfT1NfV0lOMzIKKy0tIAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvZ3RrLWRvYy10d2Vha3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzL2d0ay1kb2MtdHdlYWtzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4NmM3OGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzL2d0ay1kb2MtdHdlYWtzLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gNzAxOGNhMWM0YmYyNmM4MzE3ZTdmY2QyZTdlNGU2NDgxOTVmNDJjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBXZWQsIDIwIERlYyAyMDE3IDEzOjAzOjAzICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGdzdHJlYW1lcjogdXNlIGEgcGF0Y2ggaW5zdGVhZCBvZiBzZWQgdG8gZml4IGd0ay1kb2MKKworUGF0Y2ggdGhlIGd0ay1kb2MgbWFrZWZpbGVzIHNvIHRoYXQgdGhlIHFlbXUgd3JhcHBlciBpcyB1c2VkIHRvIHJ1biB0cmFuc2llbnQKK2JpbmFyaWVzIGluc3RlYWQgb2YgbGlidG9vbCB3cmFwcGVyIG9yIHJ1bm5pbmcgdGhlbSBkaXJlY3RseS4KKworQWxzbyBzdWJzdGl0dXRlIGEgYm9ndXMgcGx1Z2luIHNjYW5uZXIsIGFzIHRyeWluZyB0byBydW4gdGhlIHJlYWwgb25lIGlzIGNhdXNpbmcKK2lzc3VlcyBkdXJpbmcgYnVpbGQgb24geDg2XzY0LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKKy0tLQorIGNvbW1vbi9ndGstZG9jLm1hayB8IDUgKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29tbW9uL2d0ay1kb2MubWFrIGIvY29tbW9uL2d0ay1kb2MubWFrCitpbmRleCAzZjgzNDkxLi5lNWNiMGQxIDEwMDY0NAorLS0tIGEvY29tbW9uL2d0ay1kb2MubWFrCisrKysgYi9jb21tb24vZ3RrLWRvYy5tYWsKK0BAIC02LDExICs2LDExIEBACisgaWYgR1RLX0RPQ19VU0VfTElCVE9PTAorIEdUS0RPQ19DQyA9ICQoTElCVE9PTCkgLS10YWc9Q0MgLS1tb2RlPWNvbXBpbGUgJChDQykgJChJTkNMVURFUykgJChHVEtET0NfREVQU19DRkxBR1MpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykKKyBHVEtET0NfTEQgPSAkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1saW5rICQoQ0MpICQoR1RLRE9DX0RFUFNfTElCUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpICQoTERGTEFHUykKKy1HVEtET0NfUlVOID0gJChMSUJUT09MKSAtLW1vZGU9ZXhlY3V0ZQorK0dUS0RPQ19SVU4gPSAkKHRvcF9idWlsZGRpcikvZ3RrZG9jLXFlbXV3cmFwcGVyCisgZWxzZQorIEdUS0RPQ19DQyA9ICQoQ0MpICQoSU5DTFVERVMpICQoR1RLRE9DX0RFUFNfQ0ZMQUdTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpCisgR1RLRE9DX0xEID0gJChDQykgJChHVEtET0NfREVQU19MSUJTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpICQoQU1fTERGTEFHUykgJChMREZMQUdTKQorLUdUS0RPQ19SVU4gPQorK0dUS0RPQ19SVU4gPSAkKHRvcF9idWlsZGRpcikvZ3RrZG9jLXFlbXV3cmFwcGVyCisgZW5kaWYKKyAKKyAjIFdlIHNldCBHUEFUSCBoZXJlOyB0aGlzIGdpdmVzIHVzIHNlbWFudGljcyBmb3IgR05VIG1ha2UKK0BAIC0xMDEsNiArMTAxLDcgQEAgc2Nhbi1idWlsZC5zdGFtcDogJChIRklMRV9HTE9CKSAkKENGSUxFX0dMT0IpCisgCSAgICBHU1RfUExVR0lOX1BBVEhfMV8wPQkJCQkJXAorIAkgICAgR1NUX1JFR0lTVFJZXzFfMD1kb2MtcmVnaXN0cnkueG1sCQkJCVwKKyAJICAgICQoR1RLRE9DX0VYVFJBX0VOVklST05NRU5UKQkJCQkJXAorKwkgICAgR1NUX1BMVUdJTl9TQ0FOTkVSXzFfMD0iJCh0b3BfYnVpbGRkaXIpL2xpYnMvZ3N0L2hlbHBlcnMvZ3N0LXBsdWdpbi1zY2FubmVyLWR1bW15IiBcCisgCSAgICBDQz0iJChHVEtET0NfQ0MpIiBMRD0iJChHVEtET0NfTEQpIiBSVU49IiQoR1RLRE9DX1JVTikiCVwKKyAJICAgIENGTEFHUz0iJChHVEtET0NfQ0ZMQUdTKSAkKENGTEFHUykiCQkJCVwKKyAJICAgIExERkxBR1M9IiQoR1RLRE9DX0xJQlMpICQoTERGTEFHUykiCQkJCVwKKy0tIAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LWV4YW1wbGVzLzAwMDEtTWFrZS1wbGF5ZXItZXhhbXBsZXMtaW5zdGFsbGFibGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1leGFtcGxlcy8wMDAxLU1ha2UtcGxheWVyLWV4YW1wbGVzLWluc3RhbGxhYmxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzMzhiYWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1leGFtcGxlcy8wMDAxLU1ha2UtcGxheWVyLWV4YW1wbGVzLWluc3RhbGxhYmxlLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gNzU1ZjZkYWIwNzU2NWFjYTdiNmFlZmFjYWQ4YmU2NWRlMzY0ZmY3NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBUaHUsIDE3IEF1ZyAyMDE3IDExOjA3OjAyICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2UgcGxheWVyIGV4YW1wbGVzIGluc3RhbGxhYmxlCisKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbVXBzdHJlYW0gY29uc2lkZXJzIHRoZXNlIGNvZGUgZXhhbXBsZXMsIGZvciBub3cgYSBsZWFzdF0KKworaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc3NzgyNworLS0tCisgcGxheWJhY2svcGxheWVyL2dzdC1wbGF5L21lc29uLmJ1aWxkIHwgMSArCisgcGxheWJhY2svcGxheWVyL2d0ay9tZXNvbi5idWlsZCAgICAgIHwgMSArCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3BsYXliYWNrL3BsYXllci9nc3QtcGxheS9tZXNvbi5idWlsZCBiL3BsYXliYWNrL3BsYXllci9nc3QtcGxheS9tZXNvbi5idWlsZAoraW5kZXggNzE5YjU1Yi4uYTU2ZmUxMyAxMDA2NDQKKy0tLSBhL3BsYXliYWNrL3BsYXllci9nc3QtcGxheS9tZXNvbi5idWlsZAorKysrIGIvcGxheWJhY2svcGxheWVyL2dzdC1wbGF5L21lc29uLmJ1aWxkCitAQCAtOCw1ICs4LDYgQEAgZXhlY3V0YWJsZSgnZ3N0LXBsYXknLAorICAgICBbJ2dzdC1wbGF5LmMnLAorICAgICAgJ2dzdC1wbGF5LWtiLmMnLAorICAgICAgJ2dzdC1wbGF5LWtiLmgnXSwKKysgICAgaW5zdGFsbDogdHJ1ZSwKKyAgICAgZGVwZW5kZW5jaWVzIDogW2dzdF9kZXAsIGdzdHBsYXllcl9kZXAsIG1fZGVwXSkKKyAKK2RpZmYgLS1naXQgYS9wbGF5YmFjay9wbGF5ZXIvZ3RrL21lc29uLmJ1aWxkIGIvcGxheWJhY2svcGxheWVyL2d0ay9tZXNvbi5idWlsZAoraW5kZXggMDhhYWU0Zi4uNjcxYTY1ZCAxMDA2NDQKKy0tLSBhL3BsYXliYWNrL3BsYXllci9ndGsvbWVzb24uYnVpbGQKKysrKyBiL3BsYXliYWNrL3BsYXllci9ndGsvbWVzb24uYnVpbGQKK0BAIC0xOCw1ICsxOCw2IEBAIGV4ZWN1dGFibGUoJ2d0ay1wbGF5JywKKyAgICAgICBndGtfcGxheV9yZXNvdXJjZXMsCisgICAgICAnZ3RrLXZpZGVvLXJlbmRlcmVyLmgnLAorICAgICAgJ2d0ay12aWRlby1yZW5kZXJlci5jJ10sCisrICAgIGluc3RhbGw6IHRydWUsCisgICAgIGRlcGVuZGVuY2llcyA6IFtnbGliX2RlcCwgZ29iamVjdF9kZXAsIGdtb2R1bGVfZGVwLCBnc3RfZGVwLCBnc3R0YWdfZGVwLCBnc3RwbGF5ZXJfZGVwLCBndGtfZGVwLCB4MTFfZGVwXSkKKyAKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllci9nc3QtcGxheWVyLmRlc2t0b3AgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1leGFtcGxlcy9nc3QtcGxheWVyLmRlc2t0b3AKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllci9nc3QtcGxheWVyLmRlc2t0b3AKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LWV4YW1wbGVzL2dzdC1wbGF5ZXIuZGVza3RvcApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtZXhhbXBsZXNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtZXhhbXBsZXNfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkODdmMjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1leGFtcGxlc19naXQuYmIKQEAgLTAsMCArMSwzMiBAQAorU1VNTUFSWSA9ICJHU3RyZWFtZXIgZXhhbXBsZXMgKGluY2x1ZGluZyBndGstcGxheSwgZ3N0LXBsYXkpIgorTElDRU5TRSA9ICJMR1BMLTIuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9wbGF5YmFjay9wbGF5ZXIvZ3RrL2d0ay1wbGF5LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9ZjhjNzJkYWUzZDM2ODIzZWM3MTZhOWViY2FlNTkzYjkiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIGd0ayszIGdsaWItMi4wLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LWV4YW1wbGVzIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZS1wbGF5ZXItZXhhbXBsZXMtaW5zdGFsbGFibGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ3N0LXBsYXllci5kZXNrdG9wIgorCitTUkNSRVYgPSAiNDgyNDdjNmFiNjgwN2Q2YWUxNzljZjY1M2NiZGM2NDcxNGQzMzEzYyIKK1BWID0gIjAuMC4xK2dpdCR7U1JDUFZ9IgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworCitBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaW5zdGFsbCAtbSAwNjQ0IC1EICR7V09SS0RJUn0vZ3N0LXBsYXllci5kZXNrdG9wICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9nc3QtcGxheWVyLmRlc2t0b3AKK30KKworUkRFUEVORFNfJHtQTn0gPSAiZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS1wbGF5YmFjayIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UtbWV0YSBcCisgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLW1ldGEgXAorICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLW1ldGEgXAorICAgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCIsICJjb21tZXJjaWFsIiwgImdzdHJlYW1lcjEuMC1saWJhdiIsICIiLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUIiwgImNvbW1lcmNpYWwiLCAiZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseS1tZXRhIiwgIiIsIGQpfSIKK1JQUk9WSURFU18ke1BOfSArPSAiZ3N0LXBsYXllciBnc3QtcGxheWVyLWJpbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllcl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXJfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmU4ZmRlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllcl9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1TVU1NQVJZID0gIkdTdHJlYW1lciBwbGF5YmFjayBoZWxwZXIgbGlicmFyeSBhbmQgZXhhbXBsZXMiCi1MSUNFTlNFID0gIkxHUEwtMi4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2d0ay9ndGstcGxheS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWY4YzcyZGFlM2QzNjgyM2VjNzE2YTllYmNhZTU5M2I5IgotCi1ERVBFTkRTID0gImdsaWItMi4wIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCBndGsrMyBnbGliLTIuMC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zZHJvZWdlL2dzdC1wbGF5ZXIuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovL2dzdC1wbGF5ZXIuZGVza3RvcCIKLQotU1JDUkVWID0gImVlM2MyMjZjODI3NjdhMDg5NzQzZTRlMDYwNTg3NDNlNjdmNzNjZGIiCi1QViA9ICIwLjAuMStnaXQke1NSQ1BWfSIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLUFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEszRElTVFJPRkVBVFVSRVN9IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQl0b3VjaCAke1N9L0NoYW5nZUxvZwotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1tIDA2NDQgLUQgJHtXT1JLRElSfS9nc3QtcGxheWVyLmRlc2t0b3AgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zL2dzdC1wbGF5ZXIuZGVza3RvcAotfQotCi1SREVQRU5EU18ke1BOfSA9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLXBsYXliYWNrIgotUlJFQ09NTUVORFNfJHtQTn0gPSAiZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS1tZXRhIFwKLSAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QtbWV0YSBcCi0gICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQtbWV0YSBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUIiwgImNvbW1lcmNpYWwiLCAiZ3N0cmVhbWVyMS4wLWxpYmF2IiwgIiIsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygiTElDRU5TRV9GTEFHU19XSElURUxJU1QiLCAiY29tbWVyY2lhbCIsICJnc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5LW1ldGEiLCAiIiwgZCl9IgotUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1iaW4iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC12YWxpZGF0ZV8xLjEyLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC12YWxpZGF0ZV8xLjEyLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGYyNTg1YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXZhbGlkYXRlXzEuMTIuNC5iYgpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZID0gIkdzdHJlYW1lciB2YWxpZGF0aW9uIHRvb2wiCitERVNDUklQVElPTiA9ICJBIFRvb2wgdG8gdGVzdCBHU3RyZWFtZXIgY29tcG9uZW50cyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9nc3QtdmFsaWRhdGUvMS4xMi4zLmh0bWwiCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyIKKworU1JDX1VSSSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7QlBOfS8ke0JQfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiYmMwNzRkNDk2NzcwODFmOWMyN2RlMTFhMDkxNjU3NDYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjlkYTlkZmU2ZTVkNmY1YmEzYjM4YzU3NTJiNDJkM2Y5Mjc3MTU5MDQ5NDJiNDA1YzI5MjRkM2NiNzdhZmJhMSIKKworREVQRU5EUyA9ICJqc29uLWdsaWIgZ2xpYi0yLjAgZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UiCitSUkVDT01NRU5EU18ke1BOfSA9ICJnaXQiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2dzdHJlYW1lci0xLjAvKiAke2xpYmRpcn0vZ3N0LXZhbGlkYXRlLWxhdW5jaGVyLyogJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKiIKKworaW5oZXJpdCBwa2djb25maWcgZ2V0dGV4dCBhdXRvdG9vbHMgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKKyMgV2l0aCBndGstZG9jIGVuYWJsZWQgdGhpcyByZWNpcGUgZmFpbHMgdG8gYnVpbGQsIHNvIGZvcmNpYmx5IGRpc2FibGUgaXQ6CisjIFdPUktESVIvYnVpbGQvZG9jcy92YWxpZGF0ZS9nc3QtdmFsaWRhdGUtc2NhbjogbGluZSAxMTc6CisjIFdPUktESVIvYnVpbGQvZG9jcy92YWxpZGF0ZS8ubGlicy9sdC1nc3QtdmFsaWRhdGUtc2NhbjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorR1RLRE9DX0VOQUJMRUQgPSAiRmFsc2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjEyLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNWJiZDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS4xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtbGliYXYuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9leHQvbGliYXYvZ3N0YXYuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTE4O21kNT1hNzUyYzM1MjY3ZDgyNzZmZDljYTNkYjY5OTRmY2E5YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5HUEx2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkxHUEx2Mi4xO21kNT1iZDdhNDQzMzIwYWY4YzgxMmU0YzE4ZDFiNzlkZjAwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5MR1BMdjM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgotCi1TUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtbGliYXYvZ3N0LWxpYmF2LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUteWFzbS1mb3ItbGliYXYtd2hlbi1kaXNhYmxlLXlhc20ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vd29ya2Fyb3VuZC10by1idWlsZC1nc3QtbGliYXYtZm9yLWk1ODYtd2l0aC1nY2MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWlwczY0X2NwdV9kZXRlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtY2hlY2stZm9yLWFybXY3dmUtdmFyaWFudC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWhldmNwcmVkX21zYS5jLUZpeC1idWlsZC1ieS1JbmNsdWRpbmctbGliYXZjb2RlYy1oZXYucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiODc4OGFlY2MwMzJhMjg3MjI3YjRiZDIzOWQxYjk5OGEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWJiNzM1YjliYjIxOGI2NTJhZTQwNzFlYTZmNmJlOGVhYWU1NWU5ZDMyMzNhZWMyZjM2Yjg4MmEyNzU0MmRiMyIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1saWJhdi0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjU0N2JhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS4xMi40LmJiCkBAIC0wLDAgKzEsMjEgQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLWxpYmF2LmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXh0L2xpYmF2L2dzdGF2Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xODttZDU9YTc1MmMzNTI2N2Q4Mjc2ZmQ5Y2EzZGI2OTk0ZmNhOWMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuR1BMdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkdQTHYzO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5MR1BMdjIuMTttZDU9YmQ3YTQ0MzMyMGFmOGM4MTJlNGMxOGQxYjc5ZGYwMDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuTEdQTHYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKKworU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LWxpYmF2L2dzdC1saWJhdi0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLXlhc20tZm9yLWxpYmF2LXdoZW4tZGlzYWJsZS15YXNtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3dvcmthcm91bmQtdG8tYnVpbGQtZ3N0LWxpYmF2LWZvci1pNTg2LXdpdGgtZ2NjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21pcHM2NF9jcHVfZGV0ZWN0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLWNoZWNrLWZvci1hcm12N3ZlLXZhcmlhbnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1oZXZjcHJlZF9tc2EuYy1GaXgtYnVpbGQtYnktSW5jbHVkaW5nLWxpYmF2Y29kZWMtaGV2LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjhhODUxYmYyZTQ3NWU5MGEzZmRhYzk1MDZlM2U0ZGJkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJhNTZhYTVkMmQ4Y2Q5MTJmMmJjZTE3ZjE3NDcxM2QyYzQxN2NhMjk4ZjFmOWMyOGVlNjZkNGFhMWUxZDllNjIiCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtbGliYXYtJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFkNDU3Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotaW5jbHVkZSBnc3RyZWFtZXIxLjAtb214LmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9vbXgvZ3N0b214Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9NWM4ZTFmY2EzMjcwNDQ4OGU3NmQyYmE5ZGRmYTkzNWYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1vbXgvZ3N0LW9teC0ke1BWfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0YTE0MDRhMjBiNzJlNGFiNmU4MjY1MDAyMThlYzMwOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYjIyMzk4ZjQ1YTAyN2U5NzdkMmI1MzA5NjI1ZWM5MWNkY2FmMGRhODc1MWNiYzdmNTk2ZDYzOWE0NWJhMjk4IgotCi1TID0gIiR7V09SS0RJUn0vZ3N0LW9teC0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjEyLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmN2VhZTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMi40LmJiCkBAIC0wLDAgKzEsMTEgQEAKK2luY2x1ZGUgZ3N0cmVhbWVyMS4wLW9teC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vb214L2dzdG9teC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PTVjOGUxZmNhMzI3MDQ0ODhlNzZkMmJhOWRkZmE5MzVmIgorCitTUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3Qtb214L2dzdC1vbXgtJHtQVn0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZWI4ZDVhZTNiNjljZmVlZDlkYzc3YzU5MjEwNjI0N2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTAyNWZhMjQyNDJlYzg2OGZlMGZmMWU2NmQ4MDZhMTA3MGJjYmM3YzE0YTk4N2E4OWNkYzMzOTVkMGQ1NmQ1ZiIKKworUyA9ICIke1dPUktESVJ9L2dzdC1vbXgtJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC5pbmMKaW5kZXggN2JlMTVkOS4uY2EyZWE5ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLmluYwpAQCAtMjIsNyArMjIsNyBAQAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCiAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnZGlyZWN0ZmIgdnVsa2FuJywgZCl9IFwKICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCBlZ2wnLCAnJywgZCl9IFwKLSAgICBiejIgY3VybCBkYXNoIGR0bHMgaGxzIG5lb24gcnN2ZyBzYmMgc21vb3Roc3RyZWFtaW5nIHNuZGZpbGUgdXZjaDI2NCB3ZWJwIFwKKyAgICBiejIgY3VybCBkYXNoIGR0bHMgaGxzIHJzdmcgc2JjIHNtb290aHN0cmVhbWluZyBzbmRmaWxlIHV2Y2gyNjQgd2VicCBcCiAiCiAKIFBBQ0tBR0VDT05GSUdbYXNzcmVuZGVyXSAgICAgICA9ICItLWVuYWJsZS1hc3NyZW5kZXIsLS1kaXNhYmxlLWFzc3JlbmRlcixsaWJhc3MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLVByZXBlbmQtUEtHX0NPTkZJR19TWVNST09UX0RJUi10by1wa2ctY29uZmlnLW91dHB1dC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtUHJlcGVuZC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLXRvLXBrZy1jb25maWctb3V0cHV0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGQ5M2FiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtUHJlcGVuZC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLXRvLXBrZy1jb25maWctb3V0cHV0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotRnJvbSA3YzhmNjhjNTQyODM4MGI5MzA1NzlkYzllZjI3Yzg1MzI2NDQ0OGZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTUgTWF5IDIwMTcgMTU6MDY6MTEgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gUHJlcGVuZCBQS0dfQ09ORklHX1NZU1JPT1RfRElSIHRvIHBrZy1jb25maWcgb3V0cHV0Ci0KLUluIGNyb3NzIGVudmlyb25tZW50IHdlIGhhdmUgdG8gcHJlcGVuZCB0aGUgc3lzcm9vdCB0byB0aGUgcGF0aCBmb3VuZCBieQotcGtnY29uZmlnIHNpbmNlIHRoZSBwYXRoIHJldHVybmVkIGZyb20gcGtnY29uZmlnIGRvZXMgbm90IGhhdmUgc3lzcm9vdCBwcmVmaXhlZAotaXQgZW5kcyB1cCB1c2luZyB0aGUgZmlsZXMgZnJvbSBob3N0IHN5c3RlbS4gSWYgYnVpbGQgaG9zdCBoYXMgd2F5bGFuZCBpbnN0YWxsZWQKLXRoZSBidWlsZCB3aWxsIHN1Y2NlZWQgYnV0IGlmIHlvdSBkb250IGhhdmUgd2F5bGFuZC1wcm90b2NvbHMgaW5zdGFsbGVkIG9uIGJ1aWxkCi1ob3N0IHRoZW4gaXQgd29udCBmaW5kIHRoZSBmaWxlcyBvbiBidWlsZCBob3N0Ci0KLVRoaXMgc2hvdWxkIHdvcmsgb2sgd2l0aCBub24gc3lzcm9vdGVkIGJ1aWxkcyB0b28gc2luY2UKLWluIHRob3NlIGNhc2VzIFBLR19DT05GSUdfU1lTUk9PVF9ESVIgd2lsbCBiZSBlbXB0eQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBlMzA3YmU2Li44M2NkZWIwIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0yMjcyLDcgKzIyNzIsNyBAQCBBR19HU1RfQ0hFQ0tfRkVBVFVSRShXQVlMQU5ELCBbd2F5bGFuZCBzaW5rXSwgd2F5bGFuZCAsIFsKLSAgIFBLR19DSEVDS19NT0RVTEVTKFdBWUxBTkQsIHdheWxhbmQtY2xpZW50ID49IDEuNC4wIGxpYmRybSA+PSAyLjQuNTUgd2F5bGFuZC1wcm90b2NvbHMgPj0gMS40LCBbCi0gICAgIGlmIHRlc3QgIngkd2F5bGFuZF9zY2FubmVyIiAhPSAieCI7IHRoZW4KLSAgICAgICBIQVZFX1dBWUxBTkQ9InllcyIKLS0gICAgICBBQ19TVUJTVChXQVlMQU5EX1BST1RPQ09MU19EQVRBRElSLCBgJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYCkKLSsgICAgICBBQ19TVUJTVChXQVlMQU5EX1BST1RPQ09MU19EQVRBRElSLCAke1dBWUxBTkRfUFJPVE9DT0xTX1NZU1JPT1RfRElSfWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1wcm90b2NvbHNgKQotICAgICBlbHNlCi0gICAgICAgQUNfTVNHX1JFU1VMVChbd2F5bGFuZC1zY2FubmVyIGlzIHJlcXVpcmVkIHRvIGJ1aWxkIHRoZSB3YXlsYW5kIHBsdWdpbl0pCi0gICAgICAgSEFWRV9XQVlMQU5EPSJubyIKLS0tIAotMi40LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvY29uZmlndXJlLWFsbG93LXRvLWRpc2FibGUtbGlic3NoMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLWxpYnNzaDIucGF0Y2gKaW5kZXggZDUyYWZkNS4uYWQ4NjMyOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvY29uZmlndXJlLWFsbG93LXRvLWRpc2FibGUtbGlic3NoMi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJzc2gyLnBhdGNoCkBAIC0xOCwxMSArMTgsMTEgQEAKICBjb25maWd1cmUuYWMgfCAgIDIzICsrKysrKysrKysrKysrKysrLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDBlOTVjNWMuLjEyMTUzYjQgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE5MDEsNiArMTkwMSwxNSBAQCBBR19HU1RfQ0hFQ0tfRkVBVFVSRShDSFJPTUFQUklOVCwgW2Nocm9tYXByaW50XSwgY2hyb21hcHJpbnQsIFsKK0luZGV4OiBnc3QtcGx1Z2lucy1iYWQtMS4xMi4zL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1wbHVnaW5zLWJhZC0xLjEyLjMub3JpZy9jb25maWd1cmUuYWMKKysrKyBnc3QtcGx1Z2lucy1iYWQtMS4xMi4zL2NvbmZpZ3VyZS5hYworQEAgLTIxMzksNiArMjEzOSwxNSBAQCBBR19HU1RfQ0hFQ0tfRkVBVFVSRShDSFJPTUFQUklOVCwgW2Nocm9tCiAgXSkKICAKICBkbmwgKioqIEN1cmwgKioqCkBAIC0zNyw4ICszNyw4IEBACiArCiAgdHJhbnNsaXQoZG5tLCBtLCBsKSBBTV9DT05ESVRJT05BTChVU0VfQ1VSTCwgdHJ1ZSkKICBBR19HU1RfQ0hFQ0tfRkVBVFVSRShDVVJMLCBbQ3VybCBwbHVnaW5dLCBjdXJsLCBbCi0gICBQS0dfQ0hFQ0tfTU9EVUxFUyhDVVJMLCBsaWJjdXJsID49IDcuMjEuMCwgWwotQEAgLTE5MTUsMTIgKzE5MjQsMTQgQEAgQUdfR1NUX0NIRUNLX0ZFQVRVUkUoQ1VSTCwgW0N1cmwgcGx1Z2luXSwgY3VybCwgWworICAgUEtHX0NIRUNLX01PRFVMRVMoQ1VSTCwgbGliY3VybCA+PSA3LjM1LjAsIFsKK0BAIC0yMTYxLDEyICsyMTcwLDE0IEBAIEFHX0dTVF9DSEVDS19GRUFUVVJFKENVUkwsIFtDdXJsIHBsdWdpbl0KICAgIF0pCiAgICBBQ19TVUJTVChDVVJMX0NGTEFHUykKICAgIEFDX1NVQlNUKENVUkxfTElCUykKQEAgLTU5LDYgKzU5LDMgQEAKICAgIEFNX0NPTkRJVElPTkFMKFVTRV9TU0gyLCB0ZXN0ICJ4JEhBVkVfU1NIMiIgPSAieHllcyIpCiAgICBBQ19TVUJTVChTU0gyX0NGTEFHUykKICAgIEFDX1NVQlNUKFNTSDJfTElCUykKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjEyLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzMjFkYTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTczYTU4NTVhODExOWRlYjAxN2Y1ZjEzY2YzMjcwOTVkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yMTY4MmU0ZThmZWE1MjQxM2ZkMjZjNjBhY2I5MDdlNSAiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFkL2dzdC1wbHVnaW5zLWJhZC0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJzc2gyLnBhdGNoIFwKLSAgICBmaWxlOi8vZml4LW1heWJlLXVuaW5pdGlhbGl6ZWQtd2FybmluZ3Mtd2hlbi1jb21waWxpbmctd2l0aC1Pcy5wYXRjaCBcCi0gICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKLSAgICBmaWxlOi8vZW5zdXJlLXZhbGlkLXNlbnRpbmVscy1mb3ItZ3N0X3N0cnVjdHVyZV9nZXQtZXRjLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA5LWdsaW1hZ2VzaW5rLURvd25yYW5rLXRvLW1hcmdpbmFsLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1QcmVwZW5kLVBLR19DT05GSUdfU1lTUk9PVF9ESVItdG8tcGtnLWNvbmZpZy1vdXRwdXQucGF0Y2ggXAotICAgIGZpbGU6Ly9saW5rLXdpdGgtbGlidmNob3N0aWYucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLXZrZGlzcGxheS1Vc2UtaWZkZWYtZm9yLXBsYXRmb3JtLXNwZWNpZmljLWRlZmluZXMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLXZ1bGthbi1Vc2UtdGhlLWdlbmVyYXRlZC12ZXJzaW9uLW9mLXZrY29uZmlnLmgucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjU2ODNmMGVhOTFmOWUxZTA2MTNiMGY2ZjcyOTk4MGE3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljMmM3ZWRkZTRmNTlkNzRlYjQxNGUwNzAxYzU1MTMxZjU2MmU1YzYwNWEzY2U5YjA5MTc1NGYxMDZjMDllMzciCi0KLVMgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1iYWQtJHtQVn0iCi0KLUVYVFJBX09FQ09ORiArPSAiV0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVI9JHtSRUNJUEVfU1lTUk9PVH0iCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXzEuMTIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXzEuMTIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmM3ZmZjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xMi40LmJiCkBAIC0wLDAgKzEsMjQgQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03M2E1ODU1YTgxMTlkZWIwMTdmNWYxM2NmMzI3MDk1ZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MjE2ODJlNGU4ZmVhNTI0MTNmZDI2YzYwYWNiOTA3ZTUgIgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWJhZC9nc3QtcGx1Z2lucy1iYWQtJHtQVn0udGFyLnh6IFwKKyAgICBmaWxlOi8vY29uZmlndXJlLWFsbG93LXRvLWRpc2FibGUtbGlic3NoMi5wYXRjaCBcCisgICAgZmlsZTovL2ZpeC1tYXliZS11bmluaXRpYWxpemVkLXdhcm5pbmdzLXdoZW4tY29tcGlsaW5nLXdpdGgtT3MucGF0Y2ggXAorICAgIGZpbGU6Ly9hdm9pZC1pbmNsdWRpbmctc3lzLXBvbGwuaC1kaXJlY3RseS5wYXRjaCBcCisgICAgZmlsZTovL2Vuc3VyZS12YWxpZC1zZW50aW5lbHMtZm9yLWdzdF9zdHJ1Y3R1cmVfZ2V0LWV0Yy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtZ3N0cmVhbWVyLWdsLnBjLmluLWRvbi10LWFwcGVuZC1HTF9DRkxBR1MtdG8tQ0ZMQUdTLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwOS1nbGltYWdlc2luay1Eb3ducmFuay10by1tYXJnaW5hbC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCisgICAgZmlsZTovL2xpbmstd2l0aC1saWJ2Y2hvc3RpZi5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtdmtkaXNwbGF5LVVzZS1pZmRlZi1mb3ItcGxhdGZvcm0tc3BlY2lmaWMtZGVmaW5lcy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItdnVsa2FuLVVzZS10aGUtZ2VuZXJhdGVkLXZlcnNpb24tb2Ytdmtjb25maWcuaC5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiNjRiZjE2Y2YxNWVkYWFiMWMwZTAyYzhkZWU3MTcwZDAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGM3ODU3YmUxNjY4NmQ1YzFiYTZlMzRiZDMzODY2NGQzZDQ1OTlkMzI3MTRhOGVjYTVjOGE0MWExMDFlMmQwOCIKKworUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWJhZC0ke1BWfSIKKworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMi1NYWtlZmlsZS5hbS1wcmVmaXgtY2FsbHMtdG8tcGtnLWNvbmZpZy13aXRoLVBLR19DT05GLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDItTWFrZWZpbGUuYW0tcHJlZml4LWNhbGxzLXRvLXBrZy1jb25maWctd2l0aC1QS0dfQ09ORi5wYXRjaAppbmRleCAwYThiYzliLi42NjE2ZTJjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMi1NYWtlZmlsZS5hbS1wcmVmaXgtY2FsbHMtdG8tcGtnLWNvbmZpZy13aXRoLVBLR19DT05GLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAyLU1ha2VmaWxlLmFtLXByZWZpeC1jYWxscy10by1wa2ctY29uZmlnLXdpdGgtUEtHX0NPTkYucGF0Y2gKQEAgLTIwLDExICsyMCwxMSBAQAogIGdzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbSAgICAgIHwgIDggKysrKy0tLS0KICAxMSBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KLWluZGV4IGJjN2Y1M2EuLjBlZjVmODYgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KLUBAIC0zNSw3ICszNSw3IEBAIEdzdEFsbG9jYXRvcnMtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0YWxsb2NhdG9ycy1ACitJbmRleDogZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy5vcmlnL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtCisrKysgZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KK0BAIC0zNiw3ICszNiw3IEBAIEdzdEFsbG9jYXRvcnMtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKEkKICAJCS0tYy1pbmNsdWRlICJnc3QvYWxsb2NhdG9ycy9hbGxvY2F0b3JzLmgiIFwKICAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCiAgCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCkBAIC0zMyw3ICszMyw3IEBACiAgCQktLWxpYnJhcnk9bGliZ3N0YWxsb2NhdG9ycy1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0tbGlidG9vbD0iJChMSUJUT09MKSIgXAotQEAgLTU5LDcgKzU5LDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQorQEAgLTYwLDcgKzYwLDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPQogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCiAgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCkBAIC00MiwxMSArNDIsMTEgQEAKICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQogIAogIENMRUFORklMRVMgPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvYXBwL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbQotaW5kZXggZGNjMmZlMC4uZGMwNzZjYiAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0KLUBAIC00OCw4ICs0OCw4IEBAIEdzdEFwcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RhcHAtQEdTVF9BUElfVkVSU0lPCitJbmRleDogZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zLm9yaWcvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0KK0BAIC00OCw4ICs0OCw4IEBAIEdzdEFwcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEUKICAJCS0tYy1pbmNsdWRlICJnc3QvYXBwL2FwcC5oIiBcCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAogIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXApAQCAtNTcsMTEgKzU3LDExIEBACiAgCQktLWxpYnJhcnk9bGliZ3N0YXBwLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQotaW5kZXggMjM3NDE5Ni4uMjk1ZWI0MiAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L2F1ZGlvL01ha2VmaWxlLmFtCi1AQCAtMTA2LDEyICsxMDYsMTIgQEAgR3N0QXVkaW8tQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0YXVkaW8tQEdTVF9BUElfVkUKK0luZGV4OiBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy5vcmlnL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQorQEAgLTE2NywxMiArMTY3LDEyIEBAIEdzdEF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1MKICAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCiAgCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCiAgCQktLWMtaW5jbHVkZSAiZ3N0L2F1ZGlvL2F1ZGlvLmgiIFwKQEAgLTc4LDcgKzc4LDcgQEAKICAJCS0tbGlicmFyeS1wYXRoPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3RhZy8iIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTE0MCw4ICsxNDAsOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCitAQCAtMjAxLDggKzIwMSw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0KICAJCS0taW5jbHVkZWRpcj0kKHNyY2RpcikgXAogIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC90YWcvIiBcCkBAIC04OSwxMSArODksMTEgQEAKICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQogIAogIENMRUFORklMRVMgKz0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2ZmdC9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9mZnQvTWFrZWZpbGUuYW0KLWluZGV4IGY1NDUzNTQuLjFiYjYyNDMgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvZmZ0L01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvZmZ0L01ha2VmaWxlLmFtCi1AQCAtNjIsNyArNjIsNyBAQCBHc3RGZnQtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0ZmZ0LUBHU1RfQVBJX1ZFUlNJTworSW5kZXg6IGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9mZnQvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy5vcmlnL2dzdC1saWJzL2dzdC9mZnQvTWFrZWZpbGUuYW0KKysrKyBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvZmZ0L01ha2VmaWxlLmFtCitAQCAtNjMsNyArNjMsNyBAQCBHc3RGZnQtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFCiAgCQktLWMtaW5jbHVkZSAiZ3N0L2ZmdC9mZnQuaCIgXAogIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKICAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKQEAgLTEwMiw3ICsxMDIsNyBAQAogIAkJLS1saWJyYXJ5PWxpYmdzdGZmdC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0tbGlidG9vbD0iJChMSUJUT09MKSIgXAotQEAgLTg2LDcgKzg2LDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQorQEAgLTg3LDcgKzg3LDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPQogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCiAgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCkBAIC0xMTEsMTEgKzExMSwxMSBAQAogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCiAgCiAgQ0xFQU5GSUxFUyA9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9wYnV0aWxzL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvTWFrZWZpbGUuYW0KLWluZGV4IDkxZGMyMTQuLmRjOGUxZDMgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvTWFrZWZpbGUuYW0KLUBAIC04NCwxNCArODQsMTQgQEAgR3N0UGJ1dGlscy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RwYnV0aWxzLUBHU1RfQVAKK0luZGV4OiBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zLm9yaWcvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvTWFrZWZpbGUuYW0KKysrKyBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbQorQEAgLTg1LDE0ICs4NSwxNCBAQCBHc3RQYnV0aWxzLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRSCiAgCQktLWMtaW5jbHVkZSAiZ3N0L3BidXRpbHMvcGJ1dGlscy5oIiBcCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAogIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXApAQCAtMTM0LDcgKzEzNCw3IEBACiAgCQktLWxpYnJhcnktcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC90YWcvIiBcCiAgCQktLWxpYnJhcnktcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC92aWRlby8iIFwKICAJCS0tbGlicmFyeS1wYXRoPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2F1ZGlvLyIgXAotQEAgLTEyNCw4ICsxMjQsOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCitAQCAtMTI1LDggKzEyNSw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0KICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAogIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXApAQCAtMTQ1LDExICsxNDUsMTEgQEAKICAJCS0taW5jbHVkZWRpcj0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC90YWcvIiBcCiAgCQktLWluY2x1ZGVkaXI9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdmlkZW8vIiBcCiAgCQktLWluY2x1ZGVkaXI9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYXVkaW8vIiBcCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbQotaW5kZXggM2JkOGZjMC4uMGExMTVjYyAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbQotQEAgLTQxLDggKzQxLDggQEAgbGliZ3N0cmlmZl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9MREZMQUdTID0gJChHU1RfTElCX0xERkxBR1MpICQoR1NUX0FMTF9MREZMQUdTKQorSW5kZXg6IGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMub3JpZy9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCitAQCAtNDIsOCArNDIsOCBAQCBsaWJnc3RyaWZmX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MKICAjCQktLWMtaW5jbHVkZSAiZ3N0L3JpZmYvcmlmZi5oIiBcCiAgIwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoYnVpbGRkaXIpLy4uL3RhZyBcCiAgIwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoYnVpbGRkaXIpLy4uL2F1ZGlvIFwKQEAgLTE2MCw3ICsxNjAsNyBAQAogICMJCS0tbGlicmFyeT1saWJnc3RyaWZmLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAjCQktLWluY2x1ZGU9R3N0QXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgXAogICMJCS0taW5jbHVkZT1Hc3RUYWctQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTczLDggKzczLDggQEAgbGliZ3N0cmlmZl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9MREZMQUdTID0gJChHU1RfTElCX0xERkxBR1MpICQoR1NUX0FMTF9MREZMQUdTKQorQEAgLTc0LDggKzc0LDggQEAgbGliZ3N0cmlmZl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9MREZMQUdTCiAgIwkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKICAjCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikvLi4vdGFnIFwKICAjCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikvLi4vYXVkaW8gXApAQCAtMTcxLDExICsxNzEsMTEgQEAKICAjCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKICAjCiAgI0NMRUFORklMRVMgPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcnRwL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQotaW5kZXggZjU0NDVjMS4uNTI3YzBiNCAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0KLUBAIC02MCw4ICs2MCw4IEBAIEdzdFJ0cC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RydHAtQEdTVF9BUElfVkVSU0lPCitJbmRleDogZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zLm9yaWcvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0KK0BAIC02MSw4ICs2MSw4IEBAIEdzdFJ0cC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEUKICAJCS0tYy1pbmNsdWRlICJnc3QvcnRwL3J0cC5oIiBcCiAgCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXApAQCAtMTg2LDcgKzE4Niw3IEBACiAgCQktLWxpYnJhcnk9bGliZ3N0cnRwLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTg4LDggKzg4LDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQorQEAgLTg5LDggKzg5LDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPQogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCiAgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCkBAIC0xOTcsMTEgKzE5NywxMSBAQAogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCiAgCiAgQ0xFQU5GSUxFUyArPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtCi1pbmRleCA5YjBiMjU4Li40ZjZkOWY4IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtCi1AQCAtNjcsNyArNjcsNyBAQCBHc3RSdHNwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHJ0c3AtQEdTVF9BUElfVkVSUworSW5kZXg6IGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMub3JpZy9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtCitAQCAtNjgsNyArNjgsNyBAQCBHc3RSdHNwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQCiAgCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAogIAkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoYnVpbGRkaXIpLy4uL3NkcCBcCkBAIC0yMTAsNyArMjEwLDcgQEAKICAJCS0tbGlicmFyeT1saWJnc3RydHNwLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1HaW8tMi4wIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTk3LDcgKzk3LDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQorQEAgLTk4LDcgKzk4LDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPQogIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXAogIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpLy4uL3NkcCBcCkBAIC0yMTksMTEgKzIxOSwxMSBAQAogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCiAgCiAgQ0xFQU5GSUxFUyArPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3Qvc2RwL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbQotaW5kZXggMGUxNDliOC4uOWFhMDUxMiAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9zZHAvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC9zZHAvTWFrZWZpbGUuYW0KLUBAIC0yOSw3ICsyOSw3IEBAIEdzdFNkcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RzZHAtQEdTVF9BUElfVkVSU0lPCitJbmRleDogZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zLm9yaWcvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9zZHAvTWFrZWZpbGUuYW0KK0BAIC0zMCw3ICszMCw3IEBAIEdzdFNkcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEUKICAJCS0td2Fybi1hbGwgXAogIAkJLS1jLWluY2x1ZGUgImdzdC9zZHAvc2RwLmgiIFwKICAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCkBAIC0yMzIsNyArMjMyLDcgQEAKICAJCS0tbGlicmFyeT1saWJnc3RzZHAtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWxpYnRvb2w9IiQoTElCVE9PTCkiIFwKLUBAIC01Myw3ICs1Myw3IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKK0BAIC01NCw3ICs1NCw3IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0KICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAogIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXApAQCAtMjQxLDExICsyNDEsMTEgQEAKICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQogIAogIENMRUFORklMRVMgPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3RhZy9NYWtlZmlsZS5hbQotaW5kZXggY2FmYWZkMy4uYmE5OTI3OSAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC90YWcvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC90YWcvTWFrZWZpbGUuYW0KLUBAIC00MCw4ICs0MCw4IEBAIEdzdFRhZy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3R0YWctQEdTVF9BUElfVkVSU0lPCitJbmRleDogZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3RhZy9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zLm9yaWcvZ3N0LWxpYnMvZ3N0L3RhZy9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC90YWcvTWFrZWZpbGUuYW0KK0BAIC01OSw4ICs1OSw4IEBAIEdzdFRhZy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEUKICAJCS0tYy1pbmNsdWRlICJnc3QvdGFnL3RhZy5oIiBcCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAogIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXApAQCAtMjU2LDMzICsyNTYsNyBAQAogIAkJLS1saWJyYXJ5PWxpYmdzdHRhZy1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKLUBAIC02OCw4ICs2OCw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKLSAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAotIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCi0gCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXAotLQkJLS1pbmNsdWRlZGlyPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKLSAKLSBDTEVBTkZJTEVTID0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtCi1pbmRleCBhYzY0ZWIzLi4zNDJjOGM2IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0KLUBAIC0xMTEsOCArMTExLDggQEAgR3N0VmlkZW8tQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0dmlkZW8tQEdTVF9BUElfVkUKLSAJCS0tYy1pbmNsdWRlICJnc3QvdmlkZW8vdmlkZW8uaCIgXAotIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKLSAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1saWJyYXJ5PWxpYmdzdHZpZGVvLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKLSAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAotIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTEzOSw4ICsxMzksOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCitAQCAtODcsOCArODcsOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9CiAgCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpIFwKICAJCS0taW5jbHVkZWRpcj0kKHNyY2RpcikgXAogIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKQEAgLTI5Myw2ICsyNjcsMjkgQEAKICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQogIAogIENMRUFORklMRVMgKz0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCi0tLSAKLTIuNi4yCi0KK0luZGV4OiBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy5vcmlnL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbQorKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbQorQEAgLTExNiw4ICsxMTYsOCBAQCBHc3RWaWRlby1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TCisgCQktLWMtaW5jbHVkZSAiZ3N0L3ZpZGVvL3ZpZGVvLmgiIFwKKyAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCisgCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCistCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKKy0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCisrCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCisrCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKKyAJCS0tbGlicmFyeT1saWJnc3R2aWRlby1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCisgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKKyAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKK0BAIC0xNDQsOCArMTQ0LDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPQorIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCisgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKKyAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCistCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKKy0JCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCisrCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCisrCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKKyAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQorIAorIENMRUFORklMRVMgKz0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRlMGI4Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfMS4xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNTRjZTkzNDU3MjcxNzVmZjY2ZDE3YjY3ZmY1MWY1OCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY29tbW9uL2NvdmVyYWdlL2NvdmVyYWdlLXJlcG9ydC5wbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTE3O21kNT1hNGUxODMwZmNlMDc4MDI4YzhmMDk3NDE2MTI3MjYwNyIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1iYXNlL2dzdC1wbHVnaW5zLWJhc2UtJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vZ2V0LWNhcHMtZnJvbS1zcmMtcGFkLXdoZW4tcXVlcnktY2Fwcy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDMtc3NhcGFyc2UtZW5oYW5jZS1TU0EtdGV4dC1saW5lcy1wYXJzaW5nLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNC1zdWJwYXJzZS1zZXQtbmVlZF9zZWdtZW50LWFmdGVyLXNpbmstcGFkLXJlY2VpdmVkLUdTLnBhdGNoIFwKLSAgICBmaWxlOi8vbWFrZS1naW9fdW5peF8yXzAtZGVwZW5kZW5jeS1jb25maWd1cmFibGUucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjc3ZjUzNzljNGNhNjc3NjE2YjQxNWUzYjNmZjk1NTc4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUwNjdkY2UzYWZlMTk3YTk1MzZmZWEwMTA3Yzc3MjEzZmFiNTM2ZGZmNGEyMTNiMDdmYzYwMzc4ZDU1MTA2NzUiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1iYXNlLSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjEyLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ4OTViYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjEyLjQuYmIKQEAgLTAsMCArMSwxOCBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNTRjZTkzNDU3MjcxNzVmZjY2ZDE3YjY3ZmY1MWY1OCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY29tbW9uL2NvdmVyYWdlL2NvdmVyYWdlLXJlcG9ydC5wbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTE3O21kNT1hNGUxODMwZmNlMDc4MDI4YzhmMDk3NDE2MTI3MjYwNyIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1iYXNlL2dzdC1wbHVnaW5zLWJhc2UtJHtQVn0udGFyLnh6IFwKKyAgICBmaWxlOi8vZ2V0LWNhcHMtZnJvbS1zcmMtcGFkLXdoZW4tcXVlcnktY2Fwcy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtc3NhcGFyc2UtZW5oYW5jZS1TU0EtdGV4dC1saW5lcy1wYXJzaW5nLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNC1zdWJwYXJzZS1zZXQtbmVlZF9zZWdtZW50LWFmdGVyLXNpbmstcGFkLXJlY2VpdmVkLUdTLnBhdGNoIFwKKyAgICBmaWxlOi8vbWFrZS1naW9fdW5peF8yXzAtZGVwZW5kZW5jeS1jb25maWd1cmFibGUucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gImIzNWIwNDA3MWY2OWI4YWI2OWE3ZjNhNDk3ZmYwMTMxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRjMzA2YjAzZGYwMjEyZjFiODkwMzc4NGUyOWJiMzQ5MzMxOWJhMTllYmViZjEzYjBjNTZhMTc4NzAyOTIyODIiCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1iYXNlLSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzAwMDEtdjRsMi1GaXgtNEstY29sb3JpbWV0cnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvMDAwMS12NGwyLUZpeC00Sy1jb2xvcmltZXRyeS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc4ODE4YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvMDAwMS12NGwyLUZpeC00Sy1jb2xvcmltZXRyeS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gNTQ1NjQ2Y2NjYmEyNDMyMzZlMTAzNjJmZTczMjVmODliZTU3ZGExZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY29sYXMgRHVmcmVzbmUgPG5pY29sYXMuZHVmcmVzbmVAY29sbGFib3JhLmNvbT4KLURhdGU6IFR1ZSwgMTggSnVsIDIwMTcgMTE6Mjg6MzcgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gdjRsMjogRml4IDRLIGNvbG9yaW1ldHJ5Ci0KLVNpbmNlIDEuNiwgdGhlIHRyYW5zZmVyIGZ1bmN0aW9uIGZvciBCVDIwMjAgaGFzIGJlZW4gY2hhbmdlZCBmcm9tIEJUNzA5Ci10byBCVDIwMjBfMTIuIEl0J3MgdGhlIHNhbWUgZnVuY3Rpb24sIGJ1dCB3aXRoIG1vcmUgcHJlY2lzaW9uLiBBcyBhIHNpZGUKLWVmZmVjdCwgdGhlIFY0TDIgY29sb3Jwc2FjZSBkaWRuJ3QgbWF0Y2ggR1N0cmVhbWVyIGNvbG9yc3BhY2UuIFdoZW4KLUdTdHJlYW1lciBlbmRlZCB1cCBtYWtpbmcgYSBndWVzcywgaXQgd291bGQgbm90IG1hdGNoIGFueXRoaW5nIHN1cHBvcnRlZAotYnkgVjRMMiBhbnltb3JlLiBUaGlzIHRoaXMgYnkgdXNpbmcgQlQyMDIwXzEyIGZvciBCVDIwMjAgY29sb3JzcGFjZSBhbmQKLUJUMjAyMCB0cmFuc2ZlciBmdW5jdGlvbiBpbiByZXBsYWNlbWVudCBvZiBCVDcwOSB3aGVuZXZlciBhIDRLCi1yZXNvbHV0aW9uIGlzIGRldGVjdGVkLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBOaWNvbGFzIERlY2hlc25lIDxuaWNvbGFzLmRlY2hlc25lQGxpbmFyby5vcmc+Ci0KLS0tLQotIHN5cy92NGwyL2dzdHY0bDJvYmplY3QuYyB8IDcgKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zeXMvdjRsMi9nc3R2NGwyb2JqZWN0LmMgYi9zeXMvdjRsMi9nc3R2NGwyb2JqZWN0LmMKLWluZGV4IDYxMjQ0NDU1Zi4uYWFlMmM1NWU3IDEwMDY0NAotLS0tIGEvc3lzL3Y0bDIvZ3N0djRsMm9iamVjdC5jCi0rKysgYi9zeXMvdjRsMi9nc3R2NGwyb2JqZWN0LmMKLUBAIC0xOTYwLDcgKzE5NjAsNyBAQCBnc3RfdjRsMl9vYmplY3RfZ2V0X2NvbG9yc3BhY2UgKHN0cnVjdCB2NGwyX2Zvcm1hdCAqZm10LAotICAgICBjYXNlIFY0TDJfQ09MT1JTUEFDRV9CVDIwMjA6Ci0gICAgICAgY2luZm8tPnJhbmdlID0gR1NUX1ZJREVPX0NPTE9SX1JBTkdFXzE2XzIzNTsKLSAgICAgICBjaW5mby0+bWF0cml4ID0gR1NUX1ZJREVPX0NPTE9SX01BVFJJWF9CVDIwMjA7Ci0tICAgICAgY2luZm8tPnRyYW5zZmVyID0gR1NUX1ZJREVPX1RSQU5TRkVSX0JUNzA5OwotKyAgICAgIGNpbmZvLT50cmFuc2ZlciA9IEdTVF9WSURFT19UUkFOU0ZFUl9CVDIwMjBfMTI7Ci0gICAgICAgY2luZm8tPnByaW1hcmllcyA9IEdTVF9WSURFT19DT0xPUl9QUklNQVJJRVNfQlQyMDIwOwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIFY0TDJfQ09MT1JTUEFDRV9TTVBURTI0ME06Ci1AQCAtMjA2Miw3ICsyMDYyLDEwIEBAIGdzdF92NGwyX29iamVjdF9nZXRfY29sb3JzcGFjZSAoc3RydWN0IHY0bDJfZm9ybWF0ICpmbXQsCi0gCi0gICBzd2l0Y2ggKHRyYW5zZmVyKSB7Ci0gICAgIGNhc2UgVjRMMl9YRkVSX0ZVTkNfNzA5OgotLSAgICAgIGNpbmZvLT50cmFuc2ZlciA9IEdTVF9WSURFT19UUkFOU0ZFUl9CVDcwOTsKLSsgICAgICBpZiAoZm10LT5mbXQucGl4LmhlaWdodCA+IDIxNjApCi0rICAgICAgICBjaW5mby0+dHJhbnNmZXIgPSBHU1RfVklERU9fVFJBTlNGRVJfQlQyMDIwXzEyOwotKyAgICAgIGVsc2UKLSsgICAgICAgIGNpbmZvLT50cmFuc2ZlciA9IEdTVF9WSURFT19UUkFOU0ZFUl9CVDcwOTsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBWNEwyX1hGRVJfRlVOQ19TUkdCOgotICAgICAgIGNpbmZvLT50cmFuc2ZlciA9IEdTVF9WSURFT19UUkFOU0ZFUl9TUkdCOwotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF8xLjEyLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5NTkzYzkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY29tbW9uL2NvdmVyYWdlL2NvdmVyYWdlLXJlcG9ydC5wbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTE3O21kNT1hNGUxODMwZmNlMDc4MDI4YzhmMDk3NDE2MTI3MjYwNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvcmVwbGF5Z2Fpbi9yZ2FuYWx5c2lzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMzttZDU9YjYwZWJlZmQ1YjJmNWE4ZTBjYWI2YmZlZTM5MWE1ZmUiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtZ29vZC9nc3QtcGx1Z2lucy1nb29kLSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovLzAwMDEtZ3N0cnRwbXA0Z3BheS1zZXQtZGFmYXVsdC12YWx1ZS1mb3ItTVBFRzQtd2l0aG91dC1jby5wYXRjaCBcCi0gICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKLSAgICBmaWxlOi8vZW5zdXJlLXZhbGlkLXNlbnRpbmVsLWZvci1nc3Rfc3RydWN0dXJlX2dldC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtdjRsMi1GaXgtNEstY29sb3JpbWV0cnkucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjIwMjU0MjE3ZDk4MDU0ODQ1MzJlMDhmZjFjM2FhMjk2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU1OTFlZTcyMDhhYjMwMjg5YTMwNjU4YTgyYjc2YmY4NzE2OWM5Mjc1NzJkOWI3OTRmM2E0MWVkNDhlMWVlOTYiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1nb29kLSR7UFZ9IgotCi1SUFJPVklERVNfJHtQTn0tcHVsc2VhdWRpbyArPSAiJHtQTn0tcHVsc2UiCi1SUFJPVklERVNfJHtQTn0tc291cCArPSAiJHtQTn0tc291cGh0dHBzcmMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS4xMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDYwOTY0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTIuNC5iYgpAQCAtMCwwICsxLDIwIEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NvbW1vbi9jb3ZlcmFnZS9jb3ZlcmFnZS1yZXBvcnQucGw7YmVnaW5saW5lPTI7ZW5kbGluZT0xNzttZDU9YTRlMTgzMGZjZTA3ODAyOGM4ZjA5NzQxNjEyNzI2MDcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0L3JlcGxheWdhaW4vcmdhbmFseXNpcy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjM7bWQ1PWI2MGViZWZkNWIyZjVhOGUwY2FiNmJmZWUzOTFhNWZlIgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWdvb2QvZ3N0LXBsdWdpbnMtZ29vZC0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly8wMDAxLWdzdHJ0cG1wNGdwYXktc2V0LWRhZmF1bHQtdmFsdWUtZm9yLU1QRUc0LXdpdGhvdXQtY28ucGF0Y2ggXAorICAgIGZpbGU6Ly9hdm9pZC1pbmNsdWRpbmctc3lzLXBvbGwuaC1kaXJlY3RseS5wYXRjaCBcCisgICAgZmlsZTovL2Vuc3VyZS12YWxpZC1zZW50aW5lbC1mb3ItZ3N0X3N0cnVjdHVyZV9nZXQucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gImJkZjQ3OTFhMmI3ODhlYzZhMTQ5YjgxZmY0MDMyMDM4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY0OWY0OWJlYzYwODkyZDQ3ZWU2NzMxYjkyMjY2OTc0YzcyMzU1NGRhMWM2NjQ5ZjIxMjk2MDk3NzE1ZWI5NTciCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1nb29kLSR7UFZ9IgorCitSUFJPVklERVNfJHtQTn0tcHVsc2VhdWRpbyArPSAiJHtQTn0tcHVsc2UiCitSUFJPVklERVNfJHtQTn0tc291cCArPSAiJHtQTn0tc291cGh0dHBzcmMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk1NmM4NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5LmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy9jaGVjay9lbGVtZW50cy94aW5nbXV4LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9NGM3NzFiOGFmMTg4NzI0ODU1Y2I5OWNhZGQzOTAwNjgiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtdWdseS9nc3QtcGx1Z2lucy11Z2x5LSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiZWI2MzkwMjE5MDVhMzJjZjMwMTNjYTViYWMxYjY5NGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWNjMzk0MmJiZjNlYTg3ZGEzZTM1NDM3ZDRlMDE0ZTk5MWIxMDNkYjIyYTYxNzRmNjJhOThjODljM2Y1ZjQ2NiIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLXVnbHktJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODMzMzUxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTIuNC5iYgpAQCAtMCwwICsxLDEzIEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHkuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3hpbmdtdXguYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT00Yzc3MWI4YWYxODg3MjQ4NTVjYjk5Y2FkZDM5MDA2OCIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy11Z2x5L2dzdC1wbHVnaW5zLXVnbHktJHtQVn0udGFyLnh6IFwKKyAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMmI4MzZmYjI3NDdmNmFlM2ExYTZmMzNhOWQ4Yzk1MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxYzE2NWI4ZDg4OGVkMzUwYWNkOGU2YWM5ZjZmZTA2NTA4ZTZmY2MwYTNhZmM2Y2NjOWZiZWIzMGRmOWJlNTIyIgorCitTID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtdWdseS0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKaW5kZXggYzQwZDM5OC4uNTkwNmU0YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKQEAgLTUsNiArNSw4IEBACiAKIERFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIGdsaWItMi4wLW5hdGl2ZSIKIAorU1JDX1VSSV9hcHBlbmQgPSAiIGZpbGU6Ly9ndGstZG9jLXR3ZWFrcy5wYXRjaCIKKwogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYwogCiBhY3BhdGhzID0gIi1JICR7U30vY29tbW9uL200IC1JICR7U30vbTQiCkBAIC0zNCwyMSArMzYsNiBAQAogCXJtIC1mICIke1N9L2NvbW1vbi9tNC9ndGstZG9jLm00IgogfQogCi0jIGdzdHJlYW1lciBpcyBub3QgdXNpbmcgc3lzdGVtLXdpZGUgbWFrZWZpbGVzICh3aGljaCB3ZSBwYXRjaCBpbiBndGtkb2MgcmVjaXBlLAotIyBidXQgaXRzIG93biBjdXN0b20gb25lcywgd2hpY2ggd2UgaGF2ZSB0byBwYXRjaCBoZXJlCi1wYXRjaF9ndGtfZG9jX21ha2VmaWxlcygpIHsKLSAgICAgICAgIyBQYXRjaCB0aGUgZ3RrLWRvYyBtYWtlZmlsZXMgc28gdGhhdCB0aGUgcWVtdSB3cmFwcGVyIGlzIHVzZWQgdG8gcnVuIHRyYW5zaWVudCBiaW5hcmllcwotICAgICAgICAjIGluc3RlYWQgb2YgbGlidG9vbCB3cmFwcGVyIG9yIHJ1bm5pbmcgdGhlbSBkaXJlY3RseQotICAgICAgICAjIEFsc28gc3Vic3RpdHV0ZSBhIGJvZ3VzIHBsdWdpbiBzY2FubmVyLCBhcyB0cnlpbmcgdG8gcnVuIHRoZSByZWFsIG9uZSBpcyBjYXVzaW5nIGlzc3VlcyBkdXJpbmcgYnVpbGQgb24geDg2XzY0LgotICAgICAgICBzZWQgLWkgXAotICAgICAgICAgICAtZSAic3xHVEtET0NfUlVOID0uKnxHVEtET0NfUlVOID0gXCQodG9wX2J1aWxkZGlyKS9ndGtkb2MtcWVtdXdyYXBwZXJ8IiBcCi0gICAgICAgICAgIC1lICJzfFwkKEdUS0RPQ19FWFRSQV9FTlZJUk9OTUVOVCl8XCQoR1RLRE9DX0VYVFJBX0VOVklST05NRU5UKSBHU1RfUExVR0lOX1NDQU5ORVJfMV8wPVwkKHRvcF9idWlsZGRpcikvbGlicy9nc3QvaGVscGVycy9nc3QtcGx1Z2luLXNjYW5uZXItZHVtbXl8IiBcCi0gICAgICAgICAgICR7U30vY29tbW9uL2d0ay1kb2MqbWFrCi19Ci0KLWRvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gIiBkZWxldGVfcGtnX200X2ZpbGUgcGF0Y2hfZ3RrX2RvY19tYWtlZmlsZXMiCitkb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICIgZGVsZXRlX3BrZ19tNF9maWxlIgogCiBQQUNLQUdFU19EWU5BTUlDID0gIl4ke1BOfS0uKiIKLQotIyBxZW11LW1pcHM2NDogZXJyb3Igd2hpbGUgbG9hZGluZyBzaGFyZWQgbGlicmFyaWVzOiAuLi4vcmVjaXBlLXN5c3Jvb3QvdXNyL2xpYi9saWJndGhyZWFkLTIuMC5zby4wOiBFTEYgZmlsZSBkYXRhIGVuY29kaW5nIG5vdCBsaXR0bGUtZW5kaWFuCi1FWFRSQV9PRUNPTkZfYXBwZW5kX21pcHM2NCA9ICIgLS1kaXNhYmxlLWludHJvc3BlY3Rpb24gIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbi5pbmMKaW5kZXggOTYxYjkzMC4uMzYxZjBiYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob24uaW5jCkBAIC04LDggKzgsNiBAQAogCiBQTlJFQUwgPSAiZ3N0LXB5dGhvbiIKIAotU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvJHtQTlJFQUx9LyR7UE5SRUFMfS0ke1BWfS50YXIueHoiCi0KIFMgPSAiJHtXT1JLRElSfS8ke1BOUkVBTH0tJHtQVn0iCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0dXRpbHMzLWJhc2UgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uXzEuMTIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbl8xLjEyLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyZGMwNWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uXzEuMTIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcHl0aG9uLmluYwotCi1TUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke1BOUkVBTH0vJHtQTlJFQUx9LSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkYTVjOWZhNDIyOTBiYzMwMDY2NjFjODY5ZTA3NmZmZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNGNjMzJhZDQ2YTY1M2UxYWUyZjI3YWMyYTE2MDc4YjAwMDc1YzkxMDZiMjc4NGExYThkMWYzMWM1MDY5ZTQ3IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jMzRkZWFlNGUzOTVjYTA3ZTcyNWFiMDA3NmE1Zjc0MCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbl8xLjEyLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob25fMS4xMi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhZWMzNTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob25fMS4xMi40LmJiCkBAIC0wLDAgKzEsNyBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtcHl0aG9uLmluYworCitTUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke1BOUkVBTH0vJHtQTlJFQUx9LSR7UFZ9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJmMWZkMDQ2ZWE3ODE3MzZhNzk0ZjlmNTUyZDc3YzUwZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMGNlNmFmNjYxNWM5YTQ0MGMxOTI4YzMxMjU5YTc4MjI2NTE2ZDA2YmYxYTY1Zjg4OGM2ZDEwOTgyNmZhM2VhIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jMzRkZWFlNGUzOTVjYTA3ZTcyNWFiMDA3NmE1Zjc0MCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyLmluYwppbmRleCA2ODE3M2NlLi4zNzc2ZjkyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlci5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jCkBAIC0zLDE4ICszLDIxIEBACiBTRUNUSU9OID0gIm11bHRpbWVkaWEiCiBMSUNFTlNFID0gIkxHUEx2MiIKIAotREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgbGliY2dyb3VwIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgbGliY2hlY2siCitERVBFTkRTID0gImdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgogCiBQTlJFQUwgPSAiZ3N0LXJ0c3Atc2VydmVyIgogCiBTUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke1BOUkVBTH0vJHtQTlJFQUx9LSR7UFZ9LnRhci54eiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LWhhcmRjb2RlLWxpYnRvb2wtbmFtZS13aGVuLXVzaW5nLWludHJvc3BlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIgorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2d0ay1kb2MtdHdlYWtzLnBhdGNoIgogCiBTID0gIiR7V09SS0RJUn0vJHtQTlJFQUx9LSR7UFZ9IgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jCiAKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZXhhbXBsZXMgLS1kaXNhYmxlLXRlc3RzIgorCiAjIFN0YXJ0aW5nIHdpdGggMS44LjAgZ3N0LXJ0c3Atc2VydmVyIGluY2x1ZGVzIGRlcGVuZGVuY3ktbGVzcyBwbHVnaW5zIGFzIHdlbGwKIExJQlYgPSAiMS4wIgogcmVxdWlyZSBnc3QtcGx1Z2lucy1wYWNrYWdlLmluYwpAQCAtMjQsMTcgKzI3LDUgQEAKICAgICAgICAgcm0gIiR7U30vY29tbW9uL200L3BrZy5tNCIgfHwgdHJ1ZQogfQogCi0jIGdzdHJlYW1lciBpcyBub3QgdXNpbmcgc3lzdGVtLXdpZGUgbWFrZWZpbGVzICh3aGljaCB3ZSBwYXRjaCBpbiBndGtkb2MgcmVjaXBlLAotIyBidXQgaXRzIG93biBjdXN0b20gb25lcywgd2hpY2ggd2UgaGF2ZSB0byBwYXRjaCBoZXJlCi1wYXRjaF9ndGtfZG9jX21ha2VmaWxlcygpIHsKLSAgICAgICAgIyBQYXRjaCB0aGUgZ3RrLWRvYyBtYWtlZmlsZXMgc28gdGhhdCB0aGUgcWVtdSB3cmFwcGVyIGlzIHVzZWQgdG8gcnVuIHRyYW5zaWVudCBiaW5hcmllcwotICAgICAgICAjIGluc3RlYWQgb2YgbGlidG9vbCB3cmFwcGVyIG9yIHJ1bm5pbmcgdGhlbSBkaXJlY3RseQotICAgICAgICBzZWQgLWkgXAotICAgICAgICAgICAtZSAic3xHVEtET0NfUlVOID0uKnxHVEtET0NfUlVOID0gXCQodG9wX2J1aWxkZGlyKS9ndGtkb2MtcWVtdXdyYXBwZXJ8IiBcCi0gICAgICAgICAgICR7U30vY29tbW9uL2d0ay1kb2MqbWFrCi19Citkb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICIgZGVsZXRlX3BrZ19tNF9maWxlIgogCi1kb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICIgZGVsZXRlX3BrZ19tNF9maWxlIHBhdGNoX2d0a19kb2NfbWFrZWZpbGVzIgotCi0jIE5lZWRzIHRvIGJlIGRpc2FibGUgZHVlIHRvIGEgZGVwZW5kZW5jeSBvbiBnc3RyZWFtZXItcGx1Z2lucyBpbnRyb3NwZWN0aW9uIGZpbGVzCi1FWFRSQV9PRUNPTkZfYXBwZW5kX21pcHM2NCA9ICIgLS1kaXNhYmxlLWludHJvc3BlY3Rpb24gIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDI2Y2NhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyXzEuMTIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwMjI3NTdjYWIxODNmNWI5NzAwODZlOTEwMWM2MGE5OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkOGJhOTI2NGU4YWU2ZTQ0MDI5MzMyOGU3NTllNDA0NTZmMTYxYWE2NjA3N2IzMTQzZGQwNzU4MTEzNjE5MGIzIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyXzEuMTIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyXzEuMTIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTY4ZGNiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xMi40LmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhZDcwYTk3MzVmNThkYTIxZDBmNWNlZGY0OGNjYWRkMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3NjYwMTEyZWJkNTk4MzhmMTA1NDc5NmIzODEwOWRjYmUzMmYwYTA0MGUzYTI1MmE2OGE4MTA1NWFlYWE1NmE5IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmJkOWY4Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaV8xLjEyLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXZhYXBpLmluYwotU1JDX1VSSVttZDVzdW1dID0gImJlYTAxNWYzMzY5NmExNWFkOTU3NWZiNzFhZjg2MmVkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIzYzcxNGUwNDc0YjNjN2FlNmZmODg4NGFlYmY4NTAzYTFiYzNkZWQzMzVmYTJkMmIyYWMzMTc4ODQ2NjE2M2EiCi0KLURFUEVORFMgKz0gImdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGYyMzAxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGlfMS4xMi40LmJiCkBAIC0wLDAgKzEsNSBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtdmFhcGkuaW5jCitTUkNfVVJJW21kNXN1bV0gPSAiMjE0OTk4MmNkYjM0ODEzOWJjYTk0NmJiNjM3NjZmNGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWMyZDc3MjQyZTFmMzBjNGQxMzk0NjM2Y2FlOWY2ODc3MjI4YTAxNzk2MGZjYTk2ODgxZTAwODBkOGI2ZTljOSIKKworREVQRU5EUyArPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAuaW5jCmluZGV4IDMyOTE5MzQuLmMyZGYxZjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC5pbmMKQEAgLTE2LDYgKzE2LDggQEAKIAogU1JDX1VSSV9hcHBlbmQgPSAiIFwKICAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKKyAgICBmaWxlOi8vZ3RrLWRvYy10d2Vha3MucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWdzdC1nc3RwbHVnaW5sb2FkZXIuYy13aGVuLWVudi12YXItaXMtc2V0LWRvLW5vdC1mYWwucGF0Y2ggXAogIgogCiBQQUNLQUdFQ09ORklHID8/PSAiIgpAQCAtNTIsMTkgKzU0LDcgQEAKICAgICAgICAgcm0gLWYgIiR7U30vY29tbW9uL200L2d0ay1kb2MubTQiCiB9CiAKLSMgZ3N0cmVhbWVyIGlzIG5vdCB1c2luZyBzeXN0ZW0td2lkZSBtYWtlZmlsZXMgKHdoaWNoIHdlIHBhdGNoIGluIGd0a2RvYyByZWNpcGUsCi0jIGJ1dCBpdHMgb3duIGN1c3RvbSBvbmVzLCB3aGljaCB3ZSBoYXZlIHRvIHBhdGNoIGhlcmUKLXBhdGNoX2d0a19kb2NfbWFrZWZpbGVzKCkgewotICAgICAgICAjIFBhdGNoIHRoZSBndGstZG9jIG1ha2VmaWxlcyBzbyB0aGF0IHRoZSBxZW11IHdyYXBwZXIgaXMgdXNlZCB0byBydW4gdHJhbnNpZW50IGJpbmFyaWVzCi0gICAgICAgICMgaW5zdGVhZCBvZiBsaWJ0b29sIHdyYXBwZXIgb3IgcnVubmluZyB0aGVtIGRpcmVjdGx5Ci0gICAgICAgICMgQWxzbyBzdWJzdGl0dXRlIGEgYm9ndXMgcGx1Z2luIHNjYW5uZXIsIGFzIHRyeWluZyB0byBydW4gdGhlIHJlYWwgb25lIGlzIGNhdXNpbmcgaXNzdWVzIGR1cmluZyBidWlsZCBvbiB4ODZfNjQuCi0gICAgICAgIHNlZCAtaSBcCi0gICAgICAgICAgIC1lICJzfEdUS0RPQ19SVU4gPS4qfEdUS0RPQ19SVU4gPSBcJCh0b3BfYnVpbGRkaXIpL2d0a2RvYy1xZW11d3JhcHBlcnwiIFwKLSAgICAgICAgICAgLWUgInN8XCQoR1RLRE9DX0VYVFJBX0VOVklST05NRU5UKXxcJChHVEtET0NfRVhUUkFfRU5WSVJPTk1FTlQpIEdTVF9QTFVHSU5fU0NBTk5FUl8xXzA9XCQodG9wX2J1aWxkZGlyKS9saWJzL2dzdC9oZWxwZXJzL2dzdC1wbHVnaW4tc2Nhbm5lci1kdW1teXwiIFwKLSAgICAgICAgICAgJHtTfS9jb21tb24vZ3RrLWRvYyptYWsKLX0KLQotZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiIGRlbGV0ZV9wa2dfbTRfZmlsZSBwYXRjaF9ndGtfZG9jX21ha2VmaWxlcyIKK2RvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gImRlbGV0ZV9wa2dfbTRfZmlsZSIKIAogZG9fY29tcGlsZV9wcmVwZW5kKCkgewogICAgICAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9nc3QvLmxpYnM6JHtCfS9saWJzL2dzdC9iYXNlLy5saWJzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvMDAwMS1jb25maWd1cmUtQWRkLXN3aXRjaGVzLWZvci1lbmFibGluZy1kaXNhYmxpbmctbGliZHctLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvMDAwMS1jb25maWd1cmUtQWRkLXN3aXRjaGVzLWZvci1lbmFibGluZy1kaXNhYmxpbmctbGliZHctLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTMyZmQ1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDEtY29uZmlndXJlLUFkZC1zd2l0Y2hlcy1mb3ItZW5hYmxpbmctZGlzYWJsaW5nLWxpYmR3LS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLUZyb20gYTBjYjQxYmE3MjkxM2VkYTA2MDQ5ZDI2NmVjNDNlYThmNTJiNWJlZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENhcmxvcyBSYWZhZWwgR2lhbmkgPGR2QHBzZXVkb3Rlcm1pbmFsLm9yZz4KLURhdGU6IEZyaSwgMTEgQXVnIDIwMTcgMjE6MjE6MzYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBBZGQgc3dpdGNoZXMgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyBsaWJkdyBhbmQKLSBsaWJ1bndpbmQKLQotW09yaWdpbmFsIHBhdGNoIG1vZGlmaWVkIHRvIGJlIGFwcGxpY2FibGUgdG8gMS4xMi4yXQotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc3ODE5M10KLQotU2lnbmVkLW9mZi1ieTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8ZHZAcHNldWRvdGVybWluYWwub3JnPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYjZiMjkyMy4uMzJkZDgyNyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtODIxLDE1ICs4MjEsNDEgQEAgZmkKLSBBTV9DT05ESVRJT05BTChIQVZFX0dUSywgdGVzdCAieCRIQVZFX0dUSyIgPSAieHllcyIpCi0gCi0gZG5sIGxpYnVud2luZCBpcyBvcHRpb25hbGx5IHVzZWQgYnkgdGhlIGxlYWtzIHRyYWNlcgotLVBLR19DSEVDS19NT0RVTEVTKFVOV0lORCwgbGlidW53aW5kLCBIQVZFX1VOV0lORD15ZXMsIEhBVkVfVU5XSU5EPW5vKQotLWlmIHRlc3QgIngkSEFWRV9VTldJTkQiID0gInh5ZXMiOyB0aGVuCi0tICBBQ19ERUZJTkUoSEFWRV9VTldJTkQsIDEsIFtsaWJ1bndpbmQgYXZhaWxhYmxlXSkKLStBQ19BUkdfV0lUSChbdW53aW5kXSxbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC11bndpbmQ9eWVzfG5vfGF1dG9dLFt1c2UgbGlidW53aW5kXSldLAotKyAgICAgICAgICAgIFtdLCBbd2l0aF91bndpbmQ9YXV0b10pCi0raWYgWyB0ZXN0ICJ4JHt3aXRoX3Vud2luZH0iICE9ICJ4bm8iIF07IHRoZW4KLSsgIFBLR19DSEVDS19NT0RVTEVTKFVOV0lORCwgW2xpYnVud2luZF0sCi0rICAgICAgWwotKyAgICAgICAgSEFWRV9VTldJTkQ9eWVzCi0rICAgICAgICBBQ19ERUZJTkUoSEFWRV9VTldJTkQsIDEsIFtsaWJ1bndpbmQgYXZhaWxhYmxlXSkKLSsgICAgICBdLAotKyAgICAgIFsKLSsgICAgICAgIEhBVkVfVU5XSU5EPW5vCi0rICAgICAgICBpZiBbIHRlc3QgIngke3dpdGhfdW53aW5kfSIgPSAieHllcyIgXTsgdGhlbgotKyAgICAgICAgICBBQ19NU0dfRVJST1IoW2NvdWxkIG5vdCBmaW5kIGxpYnVud2luZF0pCi0rICAgICAgICBmaQotKyAgICAgIF0pCi0rZWxzZQotKyAgSEFWRV9VTldJTkQ9bm8KLSBmaQotIAotIGRubCBsaWJkdyBpcyBvcHRpb25hbGx5IHVzZWQgdG8gYWRkIHNvdXJjZSBsaW5lcyBhbmQgbnVtYmVycyB0byBiYWNrdHJhY2VzCi0tUEtHX0NIRUNLX01PRFVMRVMoRFcsIGxpYmR3LCBIQVZFX0RXPXllcywgSEFWRV9EVz1ubykKLS1pZiB0ZXN0ICJ4JEhBVkVfRFciID0gInh5ZXMiOyB0aGVuCi0tICBBQ19ERUZJTkUoSEFWRV9EVywgMSwgW2xpYmR3IGF2YWlsYWJsZV0pCi0rQUNfQVJHX1dJVEgoW2R3XSxbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1kdz15ZXN8bm98YXV0b10sW3VzZSBsaWJkd10pXSwKLSsgICAgICAgICAgICBbXSwgW3dpdGhfZHc9YXV0b10pCi0raWYgWyB0ZXN0ICJ4JHt3aXRoX2R3fSIgIT0gInhubyIgXTsgdGhlbgotKyAgUEtHX0NIRUNLX01PRFVMRVMoRFcsIFtsaWJkd10sCi0rICAgICAgWwotKyAgICAgICAgSEFWRV9EVz15ZXMKLSsgICAgICAgIEFDX0RFRklORShIQVZFX0RXLCAxLCBbbGliZHcgYXZhaWxhYmxlXSkKLSsgICAgICBdLAotKyAgICAgIFsKLSsgICAgICAgIEhBVkVfRFc9bm8KLSsgICAgICAgIGlmIFsgdGVzdCAieCR7d2l0aF9kd30iID0gInh5ZXMiIF07IHRoZW4KLSsgICAgICAgICAgQUNfTVNHX0VSUk9SKFtjb3VsZCBub3QgZmluZCBsaWJkd10pCi0rICAgICAgICBmaQotKyAgICAgIF0pCi0rZWxzZQotKyAgSEFWRV9EVz1ubwotIGZpCi0gCi0gZG5sIENoZWNrIGZvciBiYWNrdHJhY2UoKSBmcm9tIGxpYmMKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDQxYTU5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wXzEuMTIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvZ3N0Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9ZTA1OTEzODQ4MTIwNWVlMmM2ZmMxYzA3OWMwMTZkMGQiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0cmVhbWVyL2dzdHJlYW1lci0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1BZGQtc3dpdGNoZXMtZm9yLWVuYWJsaW5nLWRpc2FibGluZy1saWJkdy0ucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjQ3NDg4NjA2MjE2MDdmZmQ5NjI0NGZiNzljODZjMjM4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlmZGUzZjM5YTJlYTk4NGY5ZTA3Y2UwOTI1MDI4NWNlOTFmNmUzNjE5ZDE4Njg4OWY3NWI1MTU0ZWNmOTk0YmEiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3RyZWFtZXItJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjEyLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjEyLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFiMjM5NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wXzEuMTIuNC5iYgpAQCAtMCwwICsxLDE0IEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0L2dzdC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PWUwNTkxMzg0ODEyMDVlZTJjNmZjMWMwNzljMDE2ZDBkIgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdHJlYW1lci9nc3RyZWFtZXItJHtQVn0udGFyLnh6IFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5ZDI2OGYyZTg5MWNjZTFhYzA4MzJmMWNjNDY3ZDRlYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1YTg3MDRhYTRjMmVlYjA0ZGExOTJjNGE5OTQyZjk0Zjg2MGFjMWE1ODVkZTkwZDlmOTE0YmFjMjZhOTcwNjc0IgorCitTID0gIiR7V09SS0RJUn0vZ3N0cmVhbWVyLSR7UFZ9IgorCitDVkVfUFJPRFVDVCA9ICJnc3RyZWFtZXIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lL2xhbWUtMy45OS41X2ZpeF9mb3JfYXV0b21ha2UtMS4xMi54LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xhbWUvbGFtZS9sYW1lLTMuOTkuNV9maXhfZm9yX2F1dG9tYWtlLTEuMTIueC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTFiYWVmMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lL2xhbWUtMy45OS41X2ZpeF9mb3JfYXV0b21ha2UtMS4xMi54LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUZpeCB0aGlzIGtpbmQgb2YgZXJyb3JzIHdpdGggYXV0b21ha2UgMS4xMi54OgotfCBkb2MvbWFuL01ha2VmaWxlLmFtOjM6IGVycm9yOiBhdXRvbWF0aWMgZGUtQU5TSS1maWNhdGlvbiBzdXBwb3J0IGhhcyBiZWVuIHJlbW92ZWQKLXwgYXV0b3JlY29uZjogYXV0b21ha2UgZmFpbGVkIHdpdGggZXhpdCBzdGF0dXM6IDEKLQotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLTIwMTIvMDcvMTMKLQotSW5kZXg6IGxhbWUtMy45OS41L2NvbmZpZ3VyZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxhbWUtMy45OS41Lm9yaWcvY29uZmlndXJlLmluCi0rKysgbGFtZS0zLjk5LjUvY29uZmlndXJlLmluCi1AQCAtNzcsOSArNzcsNiBAQCBpZiB0ZXN0ICIke0dDQ30iID0gInllcyI7IHRoZW4KLSAJQUNfTVNHX1JFU1VMVCgke0dDQ192ZXJzaW9ufSkKLSBmaQotIAotLWRubCBtb3JlIGF1dG9tYWtlIHN0dWZmCi0tQU1fQ19QUk9UT1RZUEVTCi0tCi0gQUNfQ0hFQ0tfSEVBREVSKGRtYWxsb2MuaCkKLSBpZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9kbWFsbG9jX2h9IiA9ICJ5ZXMiOyB0aGVuCi0gCUFNX1dJVEhfRE1BTExPQwotSW5kZXg6IGxhbWUtMy45OS41L2RvYy9odG1sL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGFtZS0zLjk5LjUub3JpZy9kb2MvaHRtbC9NYWtlZmlsZS5hbQotKysrIGxhbWUtMy45OS41L2RvYy9odG1sL01ha2VmaWxlLmFtCi1AQCAtMSw2ICsxLDYgQEAKLSAjIyAkSWQ6IE1ha2VmaWxlLmFtLHYgMS43IDIwMTAvMDkvMzAgMjA6NTg6NDAgamF6MDAxIEV4cCAkCi0gCi0tQVVUT01BS0VfT1BUSU9OUyA9IGZvcmVpZ24gYW5zaTJrbnIKLStBVVRPTUFLRV9PUFRJT05TID0gZm9yZWlnbgotIAotIGRvY2RpciA9ICQoZGF0YWRpcikvZG9jCi0gcGtnZG9jZGlyID0gJChkb2NkaXIpLyQoUEFDS0FHRSkKLUluZGV4OiBsYW1lLTMuOTkuNS9saWJtcDNsYW1lL2kzODYvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsYW1lLTMuOTkuNS5vcmlnL2xpYm1wM2xhbWUvaTM4Ni9NYWtlZmlsZS5hbQotKysrIGxhbWUtMy45OS41L2xpYm1wM2xhbWUvaTM4Ni9NYWtlZmlsZS5hbQotQEAgLTEsNiArMSw2IEBACi0gIyMgJElkOiBNYWtlZmlsZS5hbSx2IDEuMjYgMjAxMS8wNC8wNCAwOTo0MjozNCBhbGVpZGluZ2VyIEV4cCAkCi0gCi0tQVVUT01BS0VfT1BUSU9OUyA9IGZvcmVpZ24gJCh0b3Bfc3JjZGlyKS9hbnNpMmtucgotK0FVVE9NQUtFX09QVElPTlMgPSBmb3JlaWduCi0gCi0gREVGUyA9IEBERUZTQCBAQ09ORklHX0RFRlNACi0gCi1JbmRleDogbGFtZS0zLjk5LjUvZG9jL21hbi9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxhbWUtMy45OS41Lm9yaWcvZG9jL21hbi9NYWtlZmlsZS5hbQotKysrIGxhbWUtMy45OS41L2RvYy9tYW4vTWFrZWZpbGUuYW0KLUBAIC0xLDYgKzEsNiBAQAotICMjICRJZDogTWFrZWZpbGUuYW0sdiAxLjEgMjAwMC8xMC8yMiAxMTozOTo0NCBhbGVpZGluZ2VyIEV4cCAkCi0gCi0tQVVUT01BS0VfT1BUSU9OUyA9IGZvcmVpZ24gYW5zaTJrbnIKLStBVVRPTUFLRV9PUFRJT05TID0gZm9yZWlnbgotIAotIG1hbl9NQU5TID0gbGFtZS4xCi0gRVhUUkFfRElTVCA9ICR7bWFuX01BTlN9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lXzMuMTAwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xhbWUvbGFtZV8zLjEwMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjZhYzdlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xhbWUvbGFtZV8zLjEwMC5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIkhpZ2ggcXVhbGl0eSBNUDMgYXVkaW8gZW5jb2RlciIKK0hPTUVQQUdFID0gImh0dHA6Ly9sYW1lLnNvdXJjZWZvcmdlLm5ldC8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9MjkwJmF0aWQ9MTAwMjkwIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJMR1BMdjIrIgorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorCitERVBFTkRTID0gIm5jdXJzZXMgZ2V0dGV4dC1uYXRpdmUiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM0NmJkYTAwZmZiYjBiYTFkYWMyMmY4ZDA4N2Y1NGQ5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvbGFtZS5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWEyMjU4MTgyYzU5M2MzOThkMTVhNDgyNjIxMzBhOTJiIFwKKyIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vbGFtZS9sYW1lLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9uby1ndGsxLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiODNlMjYwYWNiZTQzODliNTRmZTA4ZTBiZGJmN2NkZGIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGRmZTM2Y2FiODczNzk0MDM4YWUyYzEyMTA1NTdhZDM0ODU3YTRiNmJkYzUxNTc4NWQxZGE5ZTE3NWIxZGExZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BBQ0tBR0VTICs9ICJsaWJtcDNsYW1lIGxpYm1wM2xhbWUtZGV2IgorRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L2xhbWUiCitGSUxFU19saWJtcDNsYW1lID0gIiR7bGliZGlyfS9saWJtcDNsYW1lLnNvLioiCitGSUxFU19saWJtcDNsYW1lLWRldiA9ICIke2luY2x1ZGVkaXJ9ICR7bGliZGlyfS8qIgorRklMRVNfJHtQTn0tZGV2ID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9sYW1lL2xhbWVfMy45OS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xhbWUvbGFtZV8zLjk5LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0Nzc2MTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xhbWUvbGFtZV8zLjk5LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1TVU1NQVJZID0gIkhpZ2ggcXVhbGl0eSBNUDMgYXVkaW8gZW5jb2RlciIKLUhPTUVQQUdFID0gImh0dHA6Ly9sYW1lLnNvdXJjZWZvcmdlLm5ldC8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9MjkwJmF0aWQ9MTAwMjkwIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJMR1BMdjIrIgotTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgotCi1ERVBFTkRTID0gIm5jdXJzZXMgZ2V0dGV4dC1uYXRpdmUiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM0NmJkYTAwZmZiYjBiYTFkYWMyMmY4ZDA4N2Y1NGQ5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvbGFtZS5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWEyMjU4MTgyYzU5M2MzOThkMTVhNDgyNjIxMzBhOTJiIFwKLSIKLVBSID0gInIxIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9sYW1lL2xhbWUtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL25vLWd0azEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGFtZS0zLjk5LjVfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLngucGF0Y2ggIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODQ4MzViMzEzZDRhOGI2OGY1MzQ5ODE2ZDMzZTA3Y2UiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjQzNDZiNDE1OGU0YWYzYmQ5ZjJlMTk0YmIyM2ViNDczYzc1ZmI3Mzc3MDExNTIzMzUzMTk2YjE5YjlhMjNmZiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VTICs9ICJsaWJtcDNsYW1lIGxpYm1wM2xhbWUtZGV2IgotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L2xhbWUiCi1GSUxFU19saWJtcDNsYW1lID0gIiR7bGliZGlyfS9saWJtcDNsYW1lLnNvLioiCi1GSUxFU19saWJtcDNsYW1lLWRldiA9ICIke2luY2x1ZGVkaXJ9ICR7bGliZGlyfS8qIgotRklMRVNfJHtQTn0tZGV2ID0gIiIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlNfYXBwZW5kX3g4NiA9ICIgYWNfY3ZfaGVhZGVyX2VtbWludHJpbl9oPW5vIGFjX2N2X2hlYWRlcl94bW1pbnRyaW5faD1ubyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJvZ2cvbGlib2dnXzEuMy4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm9nZy9saWJvZ2dfMS4zLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxNDJlMGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm9nZy9saWJvZ2dfMS4zLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIk9nZyBiaXRzdHJlYW0gYW5kIGZyYW1pbmcgbGliYXJ5IgotREVTQ1JJUFRJT04gPSAibGlib2dnIGlzIHRoZSBiaXRzdHJlYW0gYW5kIGZyYW1pbmcgbGlicmFyeSBcCi1mb3IgdGhlIE9nZyBwcm9qZWN0LiBJdCBwcm92aWRlcyBmdW5jdGlvbnMgd2hpY2ggYXJlIFwKLW5lY2Vzc2FyeSB0byBjb2RlYyBsaWJyYXJpZXMgbGlrZSBsaWJ2b3JiaXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3hpcGgub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly90cmFjLnhpcGgub3JnL25ld3RpY2tldCIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGIxYjdhNjY4YjJhNmY0N2IyYWY4OGZiMDA4YWQ1NTUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9vZ2cvb2dnLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xMTttZDU9ZWRhODEyODU2ZjEzYTNiMTMyNmViOGYwMjBjYzNiMGIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy54aXBoLm9yZy9yZWxlYXNlcy9vZ2cvJHtCUH0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNWMzYTM0MzA5ZDhiOTg2NDA4MjdlNWQwOTkxYTQwMTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2Y2ODdjY2RkNWFjOGI1MmQ3NjMyOGZiYmZlYmM3MGM0NTlhNDBlYTg5MWRiZjNkY2NiNzRhMjEwODI2ZTc5YiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlib2dnL2xpYm9nZ18xLjMuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJvZ2cvbGlib2dnXzEuMy4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkODhmMWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlib2dnL2xpYm9nZ18xLjMuMy5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIk9nZyBiaXRzdHJlYW0gYW5kIGZyYW1pbmcgbGliYXJ5IgorREVTQ1JJUFRJT04gPSAibGlib2dnIGlzIHRoZSBiaXRzdHJlYW0gYW5kIGZyYW1pbmcgbGlicmFyeSBcCitmb3IgdGhlIE9nZyBwcm9qZWN0LiBJdCBwcm92aWRlcyBmdW5jdGlvbnMgd2hpY2ggYXJlIFwKK25lY2Vzc2FyeSB0byBjb2RlYyBsaWJyYXJpZXMgbGlrZSBsaWJ2b3JiaXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3hpcGgub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly90cmFjLnhpcGgub3JnL25ld3RpY2tldCIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGIxYjdhNjY4YjJhNmY0N2IyYWY4OGZiMDA4YWQ1NTUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9vZ2cvb2dnLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xMTttZDU9ZWRhODEyODU2ZjEzYTNiMTMyNmViOGYwMjBjYzNiMGIiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy54aXBoLm9yZy9yZWxlYXNlcy9vZ2cvJHtCUH0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiODdlZDc0MjA0N2YwNjUwNDZlYjZjMzY3NDVkODcxYjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGYzZmM2MTc4YTUzM2QzOTIwNjRmMTQ3NzZiMjNjMzk3ZWQ0YjlmNDhmNWRlMjk3YWJhNzNiNjQzZjk1NWMwOCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMzEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMzEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5NmVhMTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjMxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotU1VNTUFSWSA9ICJQTkcgaW1hZ2UgZm9ybWF0IGRlY29kaW5nIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYnBuZy5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMaWJwbmciCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02ZjIxZTRlMWY3OTU4MTBiNWVhNDkxYjMzM2JjNmVhMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9wbmcuaDtlbmRsaW5lPTE0NDttZDU9YWYzMDBjNDE5YTQ1YzUzYThkMmRhYTBiN2QxNjdhNjYiCi1ERVBFTkRTID0gInpsaWIiCi0KLUxJQlYgPSAiMTYiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvJHtCUE59LyR7QlBOfSR7TElCVn0vJHtQVn0vJHtCUH0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gIjFiMzRlYWI0NDAyNjNlMzJjZmEzOWQxOTQxM2ZhZDU0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIzMmE2MDJkZTA0OTE2YjJiNWNlNmY5MDE4MjljYWY0MTk1MTllNmExNmNjOWNkN2MxYzkxMTg3ZDNlZThiNDEiCi0KLU1JUlJPUlMgKz0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0LyR7QlBOfS8ke0JQTn0ke0xJQlZ9LyR7UFZ9LyAke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUE59JHtMSUJWfS9vbGRlci1yZWxlYXNlcy8ke1BWfS8iCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vbGlicG5nLWNvbmZpZyAke2JpbmRpcn0vbGlicG5nMTYtY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnCi0KLSMgV29yayBhcm91bmQgbWlzc2luZyBzeW1ib2xzCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibmVvbiIsICItLWVuYWJsZS1hcm0tbmVvbj1vbiIsICItLWVuYWJsZS1hcm0tbmVvbj1vZmYiICxkKX0iCi0KLVBBQ0tBR0VTID0rICIke1BOfS10b29scyIKLQotRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9L3BuZy1maXgtaXR4dCAke2JpbmRpcn0vcG5nZml4ICR7YmluZGlyfS9wbmdjcCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjM0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjM0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MmQwMzIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMzQuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJQTkcgaW1hZ2UgZm9ybWF0IGRlY29kaW5nIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYnBuZy5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMaWJwbmciCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yZGI3MTdhMDVhMjBlMzZmMmZhNjczMjY1YmQzMTU2OCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9wbmcuaDtlbmRsaW5lPTE0NDttZDU9M2FjOWZkMjUwYTg3ODZhZTU4MWUzNDI1NGJmNzk0MjkiCitERVBFTkRTID0gInpsaWIiCisKK0xJQlYgPSAiMTYiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvJHtCUE59LyR7QlBOfSR7TElCVn0vJHtQVn0vJHtCUH0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gImMwNWI2Y2E3MTkwYTVlMzg3Yjc4NjU3ZGJlNTUzNmIyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJmMWU5NjBkOTJjZTNiM2FiZDAzZDA2ZGZlYzk2MzdkZmJkMjJmZWJmMTA3YTUzNmI0NGY3YTQ3YzYwNjU5ZjYiCisKK01JUlJPUlMgKz0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0LyR7QlBOfS8ke0JQTn0ke0xJQlZ9LyR7UFZ9LyAke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUE59JHtMSUJWfS9vbGRlci1yZWxlYXNlcy8ke1BWfS8iCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vbGlicG5nLm9yZy9wdWIvcG5nL2xpYnBuZy5odG1sIgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2xpYnBuZy1jb25maWcgJHtiaW5kaXJ9L2xpYnBuZzE2LWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZworCisjIFdvcmsgYXJvdW5kIG1pc3Npbmcgc3ltYm9scworRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm5lb24iLCAiLS1lbmFibGUtYXJtLW5lb249b24iLCAiLS1lbmFibGUtYXJtLW5lb249b2ZmIiAsZCl9IgorCitQQUNLQUdFUyA9KyAiJHtQTn0tdG9vbHMiCisKK0ZJTEVTXyR7UE59LXRvb2xzID0gIiR7YmluZGlyfS9wbmctZml4LWl0eHQgJHtiaW5kaXJ9L3BuZ2ZpeCAke2JpbmRpcn0vcG5nY3AiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTEwNjg4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTA2ODgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZGI5NjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTA2ODgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi1Gcm9tIDMzM2JhNTU5OWU4N2JkNzc0NzUxNmQ3ODYzZDYxNzY0ZTRjYTJkOTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdEBzcGF0aWFseXMuY29tPgotRGF0ZTogRnJpLCAzMCBKdW4gMjAxNyAxNzoyOTo0NCArMDAwMAotU3ViamVjdDogW1BBVENIXSAqIGxpYnRpZmYvdGlmX2RpcndyaXRlLmM6IGluCi0gVElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZFhYWFgoKSBmdW5jdGlvbnMgYXNzb2NpYXRlZCB3aXRoIExPTkc4L1NMT05HOAotIGRhdGEgdHlwZSwgcmVwbGFjZSBhc3NlcnRpb24gdGhhdCB0aGUgZmlsZSBpcyBCaWdUSUZGLCBieSBhIG5vbi1mYXRhbCBlcnJvci4KLSBGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzEyIFJlcG9ydGVkIGJ5IHRlYW0KLSBPV0wzMzcKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vZ2l0aHViLmNvbS92YWR6L2xpYnRpZmYvY29tbWl0LzYxNzNhNTdkMzllMDRkNjhiMTM5ZjhjMWFhNDk5YTI0ZGJlNzRiYTFdCi0KLUNWRTogQ1ZFLTIwMTctMTA2ODgKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gQ2hhbmdlTG9nICAgICAgICAgICAgICB8ICA4ICsrKysrKysrCi0gbGlidGlmZi90aWZfZGlyd3JpdGUuYyB8IDIwICsrKysrKysrKysrKysrKystLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCi1pbmRleCAwMjQwZjBiLi40MmVhZWI3IDEwMDY0NAotLS0tIGEvQ2hhbmdlTG9nCi0rKysgYi9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTEgQEAKLSsyMDE3LTA2LTMwICBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotKwotKwkqIGxpYnRpZmYvdGlmX2RpcndyaXRlLmM6IGluIFRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRYWFhYKCkKLSsJZnVuY3Rpb25zIGFzc29jaWF0ZWQgd2l0aCBMT05HOC9TTE9ORzggZGF0YSB0eXBlLCByZXBsYWNlIGFzc2VydGlvbiB0aGF0Ci0rCXRoZSBmaWxlIGlzIEJpZ1RJRkYsIGJ5IGEgbm9uLWZhdGFsIGVycm9yLgotKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzEyCi0rCVJlcG9ydGVkIGJ5IHRlYW0gT1dMMzM3Ci0rCi0gMjAxNy0wNi0yNiAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSAKLSAJKiBsaWJ0aWZmL3RpZl9qYmlnLmM6IGZpeCBtZW1vcnkgbGVhayBpbiBlcnJvciBjb2RlIHBhdGggb2YgSkJJR0RlY29kZSgpCi1kaWZmIC0tZ2l0IGEvbGlidGlmZi90aWZfZGlyd3JpdGUuYyBiL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKLWluZGV4IDI5NjdkYTUuLjhkNjY4NmIgMTAwNjQ0Ci0tLS0gYS9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jCi0rKysgYi9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jCi1AQCAtMjExMSw3ICsyMTExLDEwIEBAIFRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRMb25nOChUSUZGKiB0aWYsIHVpbnQzMiogbmRpciwgVElGRkRpckVudHJ5KiBkaXIsIHVpCi0gewotIAl1aW50NjQgbTsKLSAJYXNzZXJ0KHNpemVvZih1aW50NjQpPT04KTsKLS0JYXNzZXJ0KHRpZi0+dGlmX2ZsYWdzJlRJRkZfQklHVElGRik7Ci0rCWlmKCAhKHRpZi0+dGlmX2ZsYWdzJlRJRkZfQklHVElGRikgKSB7Ci0rCQlUSUZGRXJyb3JFeHQodGlmLT50aWZfY2xpZW50ZGF0YSwiVElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZExvbmc4IiwiTE9ORzggbm90IGFsbG93ZWQgZm9yIENsYXNzaWNUSUZGIik7Ci0rCQlyZXR1cm4oMCk7Ci0rCX0KLSAJbT12YWx1ZTsKLSAJaWYgKHRpZi0+dGlmX2ZsYWdzJlRJRkZfU1dBQikKLSAJCVRJRkZTd2FiTG9uZzgoJm0pOwotQEAgLTIxMjQsNyArMjEyNywxMCBAQCBUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkTG9uZzhBcnJheShUSUZGKiB0aWYsIHVpbnQzMiogbmRpciwgVElGRkRpckVudHJ5KiBkaQotIHsKLSAJYXNzZXJ0KGNvdW50PDB4MjAwMDAwMDApOwotIAlhc3NlcnQoc2l6ZW9mKHVpbnQ2NCk9PTgpOwotLQlhc3NlcnQodGlmLT50aWZfZmxhZ3MmVElGRl9CSUdUSUZGKTsKLSsJaWYoICEodGlmLT50aWZfZmxhZ3MmVElGRl9CSUdUSUZGKSApIHsKLSsJCVRJRkZFcnJvckV4dCh0aWYtPnRpZl9jbGllbnRkYXRhLCJUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkTG9uZzgiLCJMT05HOCBub3QgYWxsb3dlZCBmb3IgQ2xhc3NpY1RJRkYiKTsKLSsJCXJldHVybigwKTsKLSsJfQotIAlpZiAodGlmLT50aWZfZmxhZ3MmVElGRl9TV0FCKQotIAkJVElGRlN3YWJBcnJheU9mTG9uZzgodmFsdWUsY291bnQpOwotIAlyZXR1cm4oVElGRldyaXRlRGlyZWN0b3J5VGFnRGF0YSh0aWYsbmRpcixkaXIsdGFnLFRJRkZfTE9ORzgsY291bnQsY291bnQqOCx2YWx1ZSkpOwotQEAgLTIxMzYsNyArMjE0MiwxMCBAQCBUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkU2xvbmc4KFRJRkYqIHRpZiwgdWludDMyKiBuZGlyLCBUSUZGRGlyRW50cnkqIGRpciwgdQotIHsKLSAJaW50NjQgbTsKLSAJYXNzZXJ0KHNpemVvZihpbnQ2NCk9PTgpOwotLQlhc3NlcnQodGlmLT50aWZfZmxhZ3MmVElGRl9CSUdUSUZGKTsKLSsJaWYoICEodGlmLT50aWZfZmxhZ3MmVElGRl9CSUdUSUZGKSApIHsKLSsJCVRJRkZFcnJvckV4dCh0aWYtPnRpZl9jbGllbnRkYXRhLCJUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkTG9uZzgiLCJTTE9ORzggbm90IGFsbG93ZWQgZm9yIENsYXNzaWNUSUZGIik7Ci0rCQlyZXR1cm4oMCk7Ci0rCX0KLSAJbT12YWx1ZTsKLSAJaWYgKHRpZi0+dGlmX2ZsYWdzJlRJRkZfU1dBQikKLSAJCVRJRkZTd2FiTG9uZzgoKHVpbnQ2NCopKCZtKSk7Ci1AQCAtMjE0OSw3ICsyMTU4LDEwIEBAIFRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRTbG9uZzhBcnJheShUSUZGKiB0aWYsIHVpbnQzMiogbmRpciwgVElGRkRpckVudHJ5KiBkCi0gewotIAlhc3NlcnQoY291bnQ8MHgyMDAwMDAwMCk7Ci0gCWFzc2VydChzaXplb2YoaW50NjQpPT04KTsKLS0JYXNzZXJ0KHRpZi0+dGlmX2ZsYWdzJlRJRkZfQklHVElGRik7Ci0rCWlmKCAhKHRpZi0+dGlmX2ZsYWdzJlRJRkZfQklHVElGRikgKSB7Ci0rCQlUSUZGRXJyb3JFeHQodGlmLT50aWZfY2xpZW50ZGF0YSwiVElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZExvbmc4IiwiU0xPTkc4IG5vdCBhbGxvd2VkIGZvciBDbGFzc2ljVElGRiIpOwotKwkJcmV0dXJuKDApOwotKwl9Ci0gCWlmICh0aWYtPnRpZl9mbGFncyZUSUZGX1NXQUIpCi0gCQlUSUZGU3dhYkFycmF5T2ZMb25nOCgodWludDY0Kil2YWx1ZSxjb3VudCk7Ci0gCXJldHVybihUSUZGV3JpdGVEaXJlY3RvcnlUYWdEYXRhKHRpZixuZGlyLGRpcix0YWcsVElGRl9TTE9ORzgsY291bnQsY291bnQqOCx2YWx1ZSkpOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy0xMTMzNS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTExMzM1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDhlNzYxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTExMzM1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSBlOGIxNWNjZjhjOWM1OTMwMDBmODIwMmNmMzRjYzZjNGI5MzZkMDFlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHRAc3BhdGlhbHlzLmNvbT4KLURhdGU6IFNhdCwgMTUgSnVsIDIwMTcgMTE6MTM6NDYgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gKiB0b29scy90aWZmMnBkZi5jOiBwcmV2ZW50IGhlYXAgYnVmZmVyIG92ZXJmbG93IHdyaXRlIGluCi0gIlJhdyIgbW9kZSBvbiBQbGFuYXJDb25maWc9Q29udGlnIGlucHV0IGltYWdlcy4gRml4ZXMKLSBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzE1IFJlcG9ydGVkIGJ5IHRlYW0gT1dMMzM3Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdGh1Yi5jb20vdmFkei9saWJ0aWZmL2NvbW1pdC82OWJmZWVjMjQ3ODk5Nzc2YjFiMzk2NjUxYWRiNDc0MzZlNWYxNTU2XQotCi1DVkU6IENWRS0yMDE3LTExMzU1Ci0KLVNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIENoYW5nZUxvZyAgICAgICAgfCA3ICsrKysrKysKLSB0b29scy90aWZmMnBkZi5jIHwgNyArKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKLWluZGV4IDQyZWFlYjcuLjY5ODBkYTggMTAwNjQ0Ci0tLS0gYS9DaGFuZ2VMb2cKLSsrKyBiL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMCBAQAotKzIwMTctMDctMTUgIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0rCi0rCSogdG9vbHMvdGlmZjJwZGYuYzogcHJldmVudCBoZWFwIGJ1ZmZlciBvdmVyZmxvdyB3cml0ZSBpbiAiUmF3IgotKwltb2RlIG9uIFBsYW5hckNvbmZpZz1Db250aWcgaW5wdXQgaW1hZ2VzLgotKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzE1Ci0rCVJlcG9ydGVkIGJ5IHRlYW0gT1dMMzM3Ci0rCi0gMjAxNy0wNi0zMCAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSAKLSAJKiBsaWJ0aWZmL3RpZl9kaXJ3cml0ZS5jOiBpbiBUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkWFhYWCgpCi1kaWZmIC0tZ2l0IGEvdG9vbHMvdGlmZjJwZGYuYyBiL3Rvb2xzL3RpZmYycGRmLmMKLWluZGV4IGRiMTk2ZTAuLmNkMWUyMzUgMTAwNjQ0Ci0tLS0gYS90b29scy90aWZmMnBkZi5jCi0rKysgYi90b29scy90aWZmMnBkZi5jCi1AQCAtMTczNyw3ICsxNzM3LDEyIEBAIHZvaWQgdDJwX3JlYWRfdGlmZl9kYXRhKFQyUCogdDJwLCBUSUZGKiBpbnB1dCl7Ci0gCSAgICByZXR1cm47Ci0gCi0gCXQycC0+cGRmX3RyYW5zY29kZSA9IFQyUF9UUkFOU0NPREVfRU5DT0RFOwotLQlpZih0MnAtPnBkZl9ub3Bhc3N0aHJvdWdoPT0wKXsKLSsgICAgICAgIC8qIEl0IHNlZW1zIHRoYXQgVDJQX1RSQU5TQ09ERV9SQVcgbW9kZSBkb2Vzbid0IHN1cHBvcnQgc2VwYXJhdGUtPmNvbnRpZyAqLwotKyAgICAgICAgLyogY29udmVyc2lvbi4gQXQgbGVhc3QgdDJwX3JlYWRfdGlmZl9zaXplIGFuZCB0MnBfcmVhZF90aWZmX3NpemVfdGlsZSAqLwotKyAgICAgICAgLyogZG8gbm90IHRha2UgaW50byBhY2NvdW50IHRoZSBudW1iZXIgb2Ygc2FtcGxlcywgYW5kIHRodXMgKi8KLSsgICAgICAgIC8qIHRoYXQgY2FuIGNhdXNlIGhlYXAgYnVmZmVyIG92ZXJmbG93cyBzdWNoIGFzIGluICovCi0rICAgICAgICAvKiBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzE1ICovCi0rCWlmKHQycC0+cGRmX25vcGFzc3Rocm91Z2g9PTAgJiYgdDJwLT50aWZmX3BsYW5hciE9UExBTkFSQ09ORklHX1NFUEFSQVRFKXsKLSAjaWZkZWYgQ0NJVFRfU1VQUE9SVAotIAkJaWYodDJwLT50aWZmX2NvbXByZXNzaW9uPT1DT01QUkVTU0lPTl9DQ0lUVEZBWDQgIAotIAkJCSl7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTEzNzI2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTM3MjYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2MGZmYTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTM3MjYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIDUzMTdjZTIxNTkzNmNlNjExODQ2NTU3YmIxMDRiNDlkM2I0YzgzNDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdEBzcGF0aWFseXMuY29tPgotRGF0ZTogV2VkLCAyMyBBdWcgMjAxNyAxMzoyMTo0MSArMDAwMAotU3ViamVjdDogW1BBVENIXSAqIGxpYnRpZmYvdGlmX2RpcndyaXRlLmM6IHJlcGxhY2UgYXNzZXJ0aW9uIHJlbGF0ZWQgdG8gbm90Ci0gZmluZGluZyB0aGUgU3ViSUZEIHRhZyBieSBydW50aW1lIGNoZWNrLiBGaXhlcwotIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MjcgUmVwb3J0ZWQgYnkgdGVhbSBPV0wzMzcKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vZ2l0aHViLmNvbS92YWR6L2xpYnRpZmYvY29tbWl0L2Y5MWNhODNhMjFhNmE1ODMwNTBlNWE1NzU1Y2UxNDQxYjJiZjFkN2VdCi0KLUNWRTogQ1ZFLTIwMTctMTM3MjYKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gQ2hhbmdlTG9nICAgICAgICAgICAgICB8IDcgKysrKysrKwotIGxpYnRpZmYvdGlmX2RpcndyaXRlLmMgfCA3ICsrKysrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwotaW5kZXggNjk4MGRhOC4uM2UyOTlkOSAxMDA2NDQKLS0tLSBhL0NoYW5nZUxvZwotKysrIGIvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDEwIEBACi0rMjAxNy0wOC0yMyAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsKLSsJKiBsaWJ0aWZmL3RpZl9kaXJ3cml0ZS5jOiByZXBsYWNlIGFzc2VydGlvbiByZWxhdGVkIHRvIG5vdCBmaW5kaW5nIHRoZQotKwlTdWJJRkQgdGFnIGJ5IHJ1bnRpbWUgY2hlY2suCi0rCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MjcKLSsJUmVwb3J0ZWQgYnkgdGVhbSBPV0wzMzcKLSsKLSAyMDE3LTA3LTE1ICBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotIAotIAkqIHRvb2xzL3RpZmYycGRmLmM6IHByZXZlbnQgaGVhcCBidWZmZXIgb3ZlcmZsb3cgd3JpdGUgaW4gIlJhdyIKLWRpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jIGIvbGlidGlmZi90aWZfZGlyd3JpdGUuYwotaW5kZXggOGQ2Njg2Yi4uMTQwOTBhZSAxMDA2NDQKLS0tLSBhL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKLSsrKyBiL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKLUBAIC04MjEsNyArODIxLDEyIEBAIFRJRkZXcml0ZURpcmVjdG9yeVNlYyhUSUZGKiB0aWYsIGludCBpc2ltYWdlLCBpbnQgaW1hZ2Vkb25lLCB1aW50NjQqIHBkaXJvZmYpCi0gCQkJVElGRkRpckVudHJ5KiBuYjsKLSAJCQlmb3IgKG5hPTAsIG5iPWRpcjsgOyBuYSsrLCBuYisrKQotIAkJCXsKLS0JCQkJYXNzZXJ0KG5hPG5kaXIpOwotKwkJCQlpZiggbmEgPT0gbmRpciApCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElGRkVycm9yRXh0KHRpZi0+dGlmX2NsaWVudGRhdGEsbW9kdWxlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IGZpbmQgU3ViSUZEIHRhZyIpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gYmFkOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotIAkJCQlpZiAobmItPnRkaXJfdGFnPT1USUZGVEFHX1NVQklGRCkKLSAJCQkJCWJyZWFrOwotIAkJCX0KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTM3MjcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy0xMzcyNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTIyOGMyZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy0xMzcyNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLUZyb20gYTVlODI0NWNjNjc2NDZmN2I0NDhiNGNhMjkyNThlYWFjNDE4MTAyYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0QHNwYXRpYWx5cy5jb20+Ci1EYXRlOiBXZWQsIDIzIEF1ZyAyMDE3IDEzOjMzOjQyICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdICogbGlidGlmZi90aWZfZGlyd3JpdGUuYzogcmVwbGFjZSBhc3NlcnRpb24gdG8gdGFnIHZhbHVlIG5vdAotIGZpdHRpbmcgb24gdWludDMyIHdoZW4gc2VsZWN0aW5nIHRoZSB2YWx1ZSBvZiBTdWJJRkQgdGFnIGJ5IHJ1bnRpbWUgY2hlY2sgKGluCi0gVElGRldyaXRlRGlyZWN0b3J5VGFnU3ViaWZkKCkpLiBGaXhlcwotIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MjggUmVwb3J0ZWQgYnkgdGVhbSBPV0wzMzcKLQotU3ViSUZEIHRhZyBieSBydW50aW1lIGNoZWNrIChpbiBUSUZGV3JpdGVEaXJlY3RvcnlTZWMoKSkKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vZ2l0aHViLmNvbS92YWR6L2xpYnRpZmYvY29tbWl0L2I2YWYxMzdiZjllZjg1MmYxYTQ4YTUwYTVhZmI4OGY5ZTlkYTAxY2NdCi0KLUNWRTogQ1ZFLTIwMTctMTM3MjcKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gQ2hhbmdlTG9nICAgICAgICAgICAgICB8IDEwICsrKysrKysrKy0KLSBsaWJ0aWZmL3RpZl9kaXJ3cml0ZS5jIHwgIDkgKysrKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCi1pbmRleCAzZTI5OWQ5Li44ZjVlZmU5IDEwMDY0NAotLS0tIGEvQ2hhbmdlTG9nCi0rKysgYi9DaGFuZ2VMb2cKLUBAIC0xLDcgKzEsMTUgQEAKLSAyMDE3LTA4LTIzICBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotIAotKwkqIGxpYnRpZmYvdGlmX2RpcndyaXRlLmM6IHJlcGxhY2UgYXNzZXJ0aW9uIHRvIHRhZyB2YWx1ZSBub3QgZml0dGluZwotKwlvbiB1aW50MzIgd2hlbiBzZWxlY3RpbmcgdGhlIHZhbHVlIG9mIFN1YklGRCB0YWcgYnkgcnVudGltZSBjaGVjawotKwkoaW4gVElGRldyaXRlRGlyZWN0b3J5VGFnU3ViaWZkKCkpLgotKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzI4Ci0rCVJlcG9ydGVkIGJ5IHRlYW0gT1dMMzM3Ci0rCi0rMjAxNy0wOC0yMyAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsKLSAJKiBsaWJ0aWZmL3RpZl9kaXJ3cml0ZS5jOiByZXBsYWNlIGFzc2VydGlvbiByZWxhdGVkIHRvIG5vdCBmaW5kaW5nIHRoZQotLQlTdWJJRkQgdGFnIGJ5IHJ1bnRpbWUgY2hlY2suCi0rCVN1YklGRCB0YWcgYnkgcnVudGltZSBjaGVjayAoaW4gVElGRldyaXRlRGlyZWN0b3J5U2VjKCkpCi0gCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MjcKLSAJUmVwb3J0ZWQgYnkgdGVhbSBPV0wzMzcKLSAKLWRpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jIGIvbGlidGlmZi90aWZfZGlyd3JpdGUuYwotaW5kZXggMTQwOTBhZS4uZjBhNGJhYSAxMDA2NDQKLS0tLSBhL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKLSsrKyBiL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKLUBAIC0xOTQ5LDcgKzE5NDksMTQgQEAgVElGRldyaXRlRGlyZWN0b3J5VGFnU3ViaWZkKFRJRkYqIHRpZiwgdWludDMyKiBuZGlyLCBUSUZGRGlyRW50cnkqIGRpcikKLSAJCWZvciAocD0wOyBwIDwgdGlmLT50aWZfZGlyLnRkX25zdWJpZmQ7IHArKykKLSAJCXsKLSAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQocGEgIT0gMCk7Ci0tCQkJYXNzZXJ0KCpwYSA8PSAweEZGRkZGRkZGVUwpOwotKwotKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIENvdWxkIGhhcHBlbiBpZiBhbiBjbGFzc2ljVElGRiBoYXMgYSBTdWJJRkQgb2YgdHlwZSBMT05HOCAod2hpY2ggaXMgaWxsZWdhbCkgKi8KLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiggKnBhID4gMHhGRkZGRkZGRlVMKQotKyAgICAgICAgICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElGRkVycm9yRXh0KHRpZi0+dGlmX2NsaWVudGRhdGEsbW9kdWxlLCJJbGxlZ2FsIHZhbHVlIGZvciBTdWJJRkQgdGFnIik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9USUZGZnJlZShvKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuKDApOwotKyAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAJCQkqcGIrKz0odWludDMyKSgqcGErKyk7Ci0gCQl9Ci0gCQluPVRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRJZmRBcnJheSh0aWYsbmRpcixkaXIsVElGRlRBR19TVUJJRkQsdGlmLT50aWZfZGlyLnRkX25zdWJpZmQsbyk7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTE4MDEzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTgwMTMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc4ZTBkZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTE4MDEzLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gMjkzYzhiMDI5OGU5MWQyMGJhNTEyOTFlMjM1MWFiN2QxMTA2NzFkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0QHNwYXRpYWx5cy5jb20+CitEYXRlOiBTdW4sIDMxIERlYyAyMDE3IDE1OjA5OjQxICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYnRpZmYvdGlmX3ByaW50LmM6IFRJRkZQcmludERpcmVjdG9yeSgpOiBmaXggbnVsbCBwb2ludGVyCisgZGVyZWZlcmVuY2Ugb24gY29ycnVwdGVkIGZpbGUuIEZpeGVzCisgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc3MAorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXRsYWIuY29tL2xpYnRpZmYvbGlidGlmZi9jb21taXQvYzZmNDFkZjdiNTgxNDAyZGZiYTNjMTlhMWUzZGY0NDU0YzU1MWEwMV0KKworQ1ZFOiBDVkUtMjAxNy0xODAxMworCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJ0aWZmL3RpZl9wcmludC5jIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9wcmludC5jIGIvbGlidGlmZi90aWZfcHJpbnQuYworaW5kZXggMjRkNGI5OC4uZjQ5NGNmYiAxMDA2NDQKKy0tLSBhL2xpYnRpZmYvdGlmX3ByaW50LmMKKysrKyBiL2xpYnRpZmYvdGlmX3ByaW50LmMKK0BAIC02NjcsMTMgKzY2NywxMyBAQCBUSUZGUHJpbnREaXJlY3RvcnkoVElGRiogdGlmLCBGSUxFKiBmZCwgbG9uZyBmbGFncykKKyAjaWYgZGVmaW5lZChfX1dJTjMyX18pICYmIChkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fTUlOR1czMl9fKSkKKyAJCQlmcHJpbnRmKGZkLCAiICAgICUzbHU6IFslOEk2NHUsICU4STY0dV1cbiIsCisgCQkJICAgICh1bnNpZ25lZCBsb25nKSBzLAorLQkJCSAgICAodW5zaWduZWQgX19pbnQ2NCkgdGQtPnRkX3N0cmlwb2Zmc2V0W3NdLAorLQkJCSAgICAodW5zaWduZWQgX19pbnQ2NCkgdGQtPnRkX3N0cmlwYnl0ZWNvdW50W3NdKTsKKysJCQkgICAgdGQtPnRkX3N0cmlwb2Zmc2V0ID8gKHVuc2lnbmVkIF9faW50NjQpIHRkLT50ZF9zdHJpcG9mZnNldFtzXSA6IDAsCisrCQkJICAgIHRkLT50ZF9zdHJpcGJ5dGVjb3VudCA/ICh1bnNpZ25lZCBfX2ludDY0KSB0ZC0+dGRfc3RyaXBieXRlY291bnRbc10gOiAwKTsKKyAjZWxzZQorIAkJCWZwcmludGYoZmQsICIgICAgJTNsdTogWyU4bGx1LCAlOGxsdV1cbiIsCisgCQkJICAgICh1bnNpZ25lZCBsb25nKSBzLAorLQkJCSAgICAodW5zaWduZWQgbG9uZyBsb25nKSB0ZC0+dGRfc3RyaXBvZmZzZXRbc10sCistCQkJICAgICh1bnNpZ25lZCBsb25nIGxvbmcpIHRkLT50ZF9zdHJpcGJ5dGVjb3VudFtzXSk7CisrCQkJICAgIHRkLT50ZF9zdHJpcG9mZnNldCA/ICh1bnNpZ25lZCBsb25nIGxvbmcpIHRkLT50ZF9zdHJpcG9mZnNldFtzXSA6IDAsCisrCQkJICAgIHRkLT50ZF9zdHJpcGJ5dGVjb3VudCA/ICh1bnNpZ25lZCBsb25nIGxvbmcpIHRkLT50ZF9zdHJpcGJ5dGVjb3VudFtzXSA6IDApOworICNlbmRpZgorIAl9CisgfQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy05MTQ3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctOTE0Ny5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM5MjI4NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy05MTQ3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjA2ICswLDAgQEAKLUZyb20gMGFjZjAxZmVhNzE0YWY1NzNiODE0ZTEwY2YxMDVjMzM1OWEyMzZjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGVyb3VhdWx0IDxlcm91YXVsdD4KLURhdGU6IFRodSwgMSBKdW4gMjAxNyAxMjo0NDowNCArMDAwMAotU3ViamVjdDogW1BBVENIXSAqIGxpYnRpZmYvdGlmX2RpcmluZm8uYywgdGlmX2RpcnJlYWQuYzogYWRkIF9USUZGQ2hlY2tGaWVsZElzVmFsaWRGb3JDb2RlYygpLAotYW5kIHVzZSBpdCBpbiBUSUZGUmVhZERpcmVjdG9yeSgpIHNvIGFzIHRvIGlnbm9yZSBmaWVsZHMgd2hvc2UgdGFnIGlzIGEKLWNvZGVjLXNwZWNpZmllZCB0YWcgYnV0IHRoaXMgY29kZWMgaXMgbm90IGVuYWJsZWQuIFRoaXMgYXZvaWRzIFRJRkZHZXRGaWVsZCgpCi10byBiZWhhdmUgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGNvZGVjIGlzIGVuYWJsZWQgb3Igbm90LCBhbmQKLXRodXMgY2FuIGF2b2lkIHN0YWNrIGJhc2VkIGJ1ZmZlciBvdmVyZmxvd3MgaW4gYSBudW1iZXIgb2YgVElGRiB1dGlsaXRpZXMKLXN1Y2ggYXMgdGlmZnNwbGl0LCB0aWZmY21wLCB0aHVtYm5haWwsIGV0Yy4KLVBhdGNoIGRlcml2ZWQgZnJvbSAwMDYzLUhhbmRsZS1wcm9wZXJseS1DT0RFQy1zcGVjaWZpYy10YWdzLnBhdGNoCi0oaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4MCkgYnkgUmFwaGHDq2wgSGVydHpvZy4KLUZpeGVzOgotaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4MAotaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MwotaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYyNSAoQ1ZFLTIwMTYtMTAwOTUpCi1odHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTY0IChDVkUtMjAxNS03NTU0KQotaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU2MSAoQ1ZFLTIwMTYtNTMxOCkKLWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI0OTkgKENWRS0yMDE0LTgxMjgpCi1odHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDQxCi1odHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMzCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdGh1Yi5jb20vdmFkei9saWJ0aWZmL2NvbW1pdC80ZDRmYTBiNjhhZTlhZTAzODk1OWVlNGY2OWViZTI4OGVjODkyZjA2XQotCi1DVkU6IENWRS0yMDE3LTkxNDcKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gQ2hhbmdlTG9nICAgICAgICAgICAgIHwgIDIwICsrKysrKysrKysKLSBsaWJ0aWZmL3RpZl9kaXIuaCAgICAgfCAgIDEgKwotIGxpYnRpZmYvdGlmX2RpcmluZm8uYyB8IDEwMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGxpYnRpZmYvdGlmX2RpcnJlYWQuYyB8ICAgNCArKwotIDQgZmlsZXMgY2hhbmdlZCwgMTI4IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwotaW5kZXggZWU4ZDlkMC4uNTczOTI5MiAxMDA2NDQKLS0tLSBhL0NoYW5nZUxvZwotKysrIGIvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDIzIEBACi0rMjAxNy0wNi0wMSAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsKLSsJKiBsaWJ0aWZmL3RpZl9kaXJpbmZvLmMsIHRpZl9kaXJyZWFkLmM6IGFkZCBfVElGRkNoZWNrRmllbGRJc1ZhbGlkRm9yQ29kZWMoKSwKLSsJYW5kIHVzZSBpdCBpbiBUSUZGUmVhZERpcmVjdG9yeSgpIHNvIGFzIHRvIGlnbm9yZSBmaWVsZHMgd2hvc2UgdGFnIGlzIGEKLSsJY29kZWMtc3BlY2lmaWVkIHRhZyBidXQgdGhpcyBjb2RlYyBpcyBub3QgZW5hYmxlZC4gVGhpcyBhdm9pZHMgVElGRkdldEZpZWxkKCkKLSsJdG8gYmVoYXZlIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBjb2RlYyBpcyBlbmFibGVkIG9yIG5vdCwgYW5kCi0rCXRodXMgY2FuIGF2b2lkIHN0YWNrIGJhc2VkIGJ1ZmZlciBvdmVyZmxvd3MgaW4gYSBudW1iZXIgb2YgVElGRiB1dGlsaXRpZXMKLSsJc3VjaCBhcyB0aWZmc3BsaXQsIHRpZmZjbXAsIHRodW1ibmFpbCwgZXRjLgotKwlQYXRjaCBkZXJpdmVkIGZyb20gMDA2My1IYW5kbGUtcHJvcGVybHktQ09ERUMtc3BlY2lmaWMtdGFncy5wYXRjaAotKwkoaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4MCkgYnkgUmFwaGHDq2wgSGVydHpvZy4KLSsJRml4ZXM6Ci0rCWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI1ODAKLSsJaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MwotKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjI1IChDVkUtMjAxNi0xMDA5NSkKLSsJaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU2NCAoQ1ZFLTIwMTUtNzU1NCkKLSsJaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU2MSAoQ1ZFLTIwMTYtNTMxOCkKLSsJaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ5OSAoQ1ZFLTIwMTQtODEyOCkKLSsJaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ0MQotKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMzCi0rCi0gMjAxNy0wNS0yMSAgQm9iIEZyaWVzZW5oYWhuICA8YmZyaWVzZW5Ac2ltcGxlLmRhbGxhcy50eC51cz4KLSAKLSAJKiBjb25maWd1cmUuYWM6IGxpYnRpZmYgNC4wLjggcmVsZWFzZWQuCi1kaWZmIC0tZ2l0IGEvbGlidGlmZi90aWZfZGlyLmggYi9saWJ0aWZmL3RpZl9kaXIuaAotaW5kZXggZTEyYjQ0Yi4uNTIwNmJlNCAxMDA2NDQKLS0tLSBhL2xpYnRpZmYvdGlmX2Rpci5oCi0rKysgYi9saWJ0aWZmL3RpZl9kaXIuaAotQEAgLTI5MSw2ICsyOTEsNyBAQCBzdHJ1Y3QgX1RJRkZGaWVsZCB7Ci0gZXh0ZXJuIGludCBfVElGRk1lcmdlRmllbGRzKFRJRkYqLCBjb25zdCBUSUZGRmllbGRbXSwgdWludDMyKTsKLSBleHRlcm4gY29uc3QgVElGRkZpZWxkKiBfVElGRkZpbmRPclJlZ2lzdGVyRmllbGQoVElGRiAqLCB1aW50MzIsIFRJRkZEYXRhVHlwZSk7Ci0gZXh0ZXJuICBUSUZGRmllbGQqIF9USUZGQ3JlYXRlQW5vbkZpZWxkKFRJRkYgKiwgdWludDMyLCBUSUZGRGF0YVR5cGUpOwotK2V4dGVybiBpbnQgX1RJRkZDaGVja0ZpZWxkSXNWYWxpZEZvckNvZGVjKFRJRkYgKnRpZiwgdHRhZ190IHRhZyk7Ci0gCi0gI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCi0gfQotZGlmZiAtLWdpdCBhL2xpYnRpZmYvdGlmX2RpcmluZm8uYyBiL2xpYnRpZmYvdGlmX2RpcmluZm8uYwotaW5kZXggMGM4ZWY0Mi4uOTdjMGRmMCAxMDA2NDQKLS0tLSBhL2xpYnRpZmYvdGlmX2RpcmluZm8uYwotKysrIGIvbGlidGlmZi90aWZfZGlyaW5mby5jCi1AQCAtOTU2LDYgKzk1NiwxMDkgQEAgVElGRk1lcmdlRmllbGRJbmZvKFRJRkYqIHRpZiwgY29uc3QgVElGRkZpZWxkSW5mbyBpbmZvW10sIHVpbnQzMiBuKQotIAlyZXR1cm4gMDsKLSB9Ci0gCi0raW50Ci0rX1RJRkZDaGVja0ZpZWxkSXNWYWxpZEZvckNvZGVjKFRJRkYgKnRpZiwgdHRhZ190IHRhZykKLSt7Ci0rCS8qIEZpbHRlciBvdXQgbm9uLWNvZGVjIHNwZWNpZmljIHRhZ3MgKi8KLSsJc3dpdGNoICh0YWcpIHsKLSsJICAgIC8qIFNoYXJlZCB0YWdzICovCi0rCSAgICBjYXNlIFRJRkZUQUdfUFJFRElDVE9SOgotKwkgICAgLyogSlBFRyB0YWdzICovCi0rCSAgICBjYXNlIFRJRkZUQUdfSlBFR1RBQkxFUzoKLSsJICAgIC8qIE9KUEVHIHRhZ3MgKi8KLSsJICAgIGNhc2UgVElGRlRBR19KUEVHSUZPRkZTRVQ6Ci0rCSAgICBjYXNlIFRJRkZUQUdfSlBFR0lGQllURUNPVU5UOgotKwkgICAgY2FzZSBUSUZGVEFHX0pQRUdRVEFCTEVTOgotKwkgICAgY2FzZSBUSUZGVEFHX0pQRUdEQ1RBQkxFUzoKLSsJICAgIGNhc2UgVElGRlRBR19KUEVHQUNUQUJMRVM6Ci0rCSAgICBjYXNlIFRJRkZUQUdfSlBFR1BST0M6Ci0rCSAgICBjYXNlIFRJRkZUQUdfSlBFR1JFU1RBUlRJTlRFUlZBTDoKLSsJICAgIC8qIENDSVRUKiAqLwotKwkgICAgY2FzZSBUSUZGVEFHX0JBREZBWExJTkVTOgotKwkgICAgY2FzZSBUSUZGVEFHX0NMRUFORkFYREFUQToKLSsJICAgIGNhc2UgVElGRlRBR19DT05TRUNVVElWRUJBREZBWExJTkVTOgotKwkgICAgY2FzZSBUSUZGVEFHX0dST1VQM09QVElPTlM6Ci0rCSAgICBjYXNlIFRJRkZUQUdfR1JPVVA0T1BUSU9OUzoKLSsJCWJyZWFrOwotKwkgICAgZGVmYXVsdDoKLSsJCXJldHVybiAxOwotKwl9Ci0rCS8qIENoZWNrIGlmIGNvZGVjIHNwZWNpZmljIHRhZ3MgYXJlIGFsbG93ZWQgZm9yIHRoZSBjdXJyZW50Ci0rCSAqIGNvbXByZXNzaW9uIHNjaGVtZSAoY29kZWMpICovCi0rCXN3aXRjaCAodGlmLT50aWZfZGlyLnRkX2NvbXByZXNzaW9uKSB7Ci0rCSAgICBjYXNlIENPTVBSRVNTSU9OX0xaVzoKLSsJCWlmICh0YWcgPT0gVElGRlRBR19QUkVESUNUT1IpCi0rCQkgICAgcmV0dXJuIDE7Ci0rCQlicmVhazsKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fUEFDS0JJVFM6Ci0rCQkvKiBObyBjb2RlYy1zcGVjaWZpYyB0YWdzICovCi0rCQlicmVhazsKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fVEhVTkRFUlNDQU46Ci0rCQkvKiBObyBjb2RlYy1zcGVjaWZpYyB0YWdzICovCi0rCQlicmVhazsKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fTkVYVDoKLSsJCS8qIE5vIGNvZGVjLXNwZWNpZmljIHRhZ3MgKi8KLSsJCWJyZWFrOwotKwkgICAgY2FzZSBDT01QUkVTU0lPTl9KUEVHOgotKwkJaWYgKHRhZyA9PSBUSUZGVEFHX0pQRUdUQUJMRVMpCi0rCQkgICAgcmV0dXJuIDE7Ci0rCQlicmVhazsKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fT0pQRUc6Ci0rCQlzd2l0Y2ggKHRhZykgewotKwkJICAgIGNhc2UgVElGRlRBR19KUEVHSUZPRkZTRVQ6Ci0rCQkgICAgY2FzZSBUSUZGVEFHX0pQRUdJRkJZVEVDT1VOVDoKLSsJCSAgICBjYXNlIFRJRkZUQUdfSlBFR1FUQUJMRVM6Ci0rCQkgICAgY2FzZSBUSUZGVEFHX0pQRUdEQ1RBQkxFUzoKLSsJCSAgICBjYXNlIFRJRkZUQUdfSlBFR0FDVEFCTEVTOgotKwkJICAgIGNhc2UgVElGRlRBR19KUEVHUFJPQzoKLSsJCSAgICBjYXNlIFRJRkZUQUdfSlBFR1JFU1RBUlRJTlRFUlZBTDoKLSsJCQlyZXR1cm4gMTsKLSsJCX0KLSsJCWJyZWFrOwotKwkgICAgY2FzZSBDT01QUkVTU0lPTl9DQ0lUVFJMRToKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fQ0NJVFRSTEVXOgotKwkgICAgY2FzZSBDT01QUkVTU0lPTl9DQ0lUVEZBWDM6Ci0rCSAgICBjYXNlIENPTVBSRVNTSU9OX0NDSVRURkFYNDoKLSsJCXN3aXRjaCAodGFnKSB7Ci0rCQkgICAgY2FzZSBUSUZGVEFHX0JBREZBWExJTkVTOgotKwkJICAgIGNhc2UgVElGRlRBR19DTEVBTkZBWERBVEE6Ci0rCQkgICAgY2FzZSBUSUZGVEFHX0NPTlNFQ1VUSVZFQkFERkFYTElORVM6Ci0rCQkJcmV0dXJuIDE7Ci0rCQkgICAgY2FzZSBUSUZGVEFHX0dST1VQM09QVElPTlM6Ci0rCQkJaWYgKHRpZi0+dGlmX2Rpci50ZF9jb21wcmVzc2lvbiA9PSBDT01QUkVTU0lPTl9DQ0lUVEZBWDMpCi0rCQkJICAgIHJldHVybiAxOwotKwkJCWJyZWFrOwotKwkJICAgIGNhc2UgVElGRlRBR19HUk9VUDRPUFRJT05TOgotKwkJCWlmICh0aWYtPnRpZl9kaXIudGRfY29tcHJlc3Npb24gPT0gQ09NUFJFU1NJT05fQ0NJVFRGQVg0KQotKwkJCSAgICByZXR1cm4gMTsKLSsJCQlicmVhazsKLSsJCX0KLSsJCWJyZWFrOwotKwkgICAgY2FzZSBDT01QUkVTU0lPTl9KQklHOgotKwkJLyogTm8gY29kZWMtc3BlY2lmaWMgdGFncyAqLwotKwkJYnJlYWs7Ci0rCSAgICBjYXNlIENPTVBSRVNTSU9OX0RFRkxBVEU6Ci0rCSAgICBjYXNlIENPTVBSRVNTSU9OX0FET0JFX0RFRkxBVEU6Ci0rCQlpZiAodGFnID09IFRJRkZUQUdfUFJFRElDVE9SKQotKwkJICAgIHJldHVybiAxOwotKwkJYnJlYWs7Ci0rCSAgIGNhc2UgQ09NUFJFU1NJT05fUElYQVJMT0c6Ci0rCQlpZiAodGFnID09IFRJRkZUQUdfUFJFRElDVE9SKQotKwkJICAgIHJldHVybiAxOwotKwkJYnJlYWs7Ci0rCSAgICBjYXNlIENPTVBSRVNTSU9OX1NHSUxPRzoKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fU0dJTE9HMjQ6Ci0rCQkvKiBObyBjb2RlYy1zcGVjaWZpYyB0YWdzICovCi0rCQlicmVhazsKLSsJICAgIGNhc2UgQ09NUFJFU1NJT05fTFpNQToKLSsJCWlmICh0YWcgPT0gVElGRlRBR19QUkVESUNUT1IpCi0rCQkgICAgcmV0dXJuIDE7Ci0rCQlicmVhazsKLSsKLSsJfQotKwlyZXR1cm4gMDsKLSt9Ci0rCi0gLyogdmltOiBzZXQgdHM9OCBzdHM9OCBzdz04IG5vZXQ6ICovCi0gCi0gLyoKLWRpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9kaXJyZWFkLmMgYi9saWJ0aWZmL3RpZl9kaXJyZWFkLmMKLWluZGV4IDFkNGYwYjkuLmYxZGMzZDcgMTAwNjQ0Ci0tLS0gYS9saWJ0aWZmL3RpZl9kaXJyZWFkLmMKLSsrKyBiL2xpYnRpZmYvdGlmX2RpcnJlYWQuYwotQEAgLTM1ODAsNiArMzU4MCwxMCBAQCBUSUZGUmVhZERpcmVjdG9yeShUSUZGKiB0aWYpCi0gCQkJCQkJCWdvdG8gYmFkOwotIAkJCQkJCWRwLT50ZGlyX3RhZz1JR05PUkU7Ci0gCQkJCQkJYnJlYWs7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggIV9USUZGQ2hlY2tGaWVsZElzVmFsaWRGb3JDb2RlYyh0aWYsIGRwLT50ZGlyX3RhZykgKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRwLT50ZGlyX3RhZz1JR05PUkU7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAJCQkJfQotIAkJCX0KLSAJCX0KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctOTkzNS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTk5MzUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA2ODRkZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTk5MzUucGF0Y2gKQEAgLTAsMCArMSwxNjAgQEAKK0Zyb20gYWJiMDA1NWQyMWM1MmE5OTI1MzE0ZDViMDYyOGZiMmI2MzA3NjE5YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJyaWFuIE1heSA8YnJpYW5AbGludXhwZW5ndWlucy54eXo+CitEYXRlOiBUaHUsIDcgRGVjIDIwMTcgMDc6NDY6NDcgKzExMDAKK1N1YmplY3Q6IFtQQVRDSF0gdGlmZjJwZGY6IEZpeCBDVkUtMjAxNy05OTM1CisKK0ZpeCBmb3IgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjcwNAorCitUaGlzIHZ1bG5lcmFiaWxpdHkgLSBhdCBsZWFzdCBmb3IgdGhlIHN1cHBsaWVkIHRlc3QgY2FzZSAtIGlzIGJlY2F1c2Ugd2UKK2Fzc3VtZSB0aGF0IGEgdGlmZiB3aWxsIG9ubHkgaGF2ZSBvbmUgdHJhbnNmZXIgZnVuY3Rpb24gdGhhdCBpcyB0aGUgc2FtZQorZm9yIGFsbCBwYWdlcy4gVGhpcyBpcyBub3QgcmVxdWlyZWQgYnkgdGhlIFRJRkYgc3RhbmRhcmRzLgorCitXZSB0aGFuIHJlYWQgdGhlIHRyYW5zZmVyIGZ1bmN0aW9uIGZvciBldmVyeSBwYWdlLiAgRGVwZW5kaW5nIG9uIHRoZQordHJhbnNmZXIgZnVuY3Rpb24sIHdlIGFsbG9jYXRlIGVpdGhlciAyIG9yIDQgYnl0ZXMgdG8gdGhlIFhSRUYgYnVmZmVyLgorV2UgYWxsb2NhdGUgdGhpcyBtZW1vcnkgYWZ0ZXIgd2UgcmVhZCBpbiB0aGUgdHJhbnNmZXIgZnVuY3Rpb24gZm9yIHRoZQorcGFnZS4KKworRm9yIHRoZSBmaXJzdCBleHBsb2l0IC0gUE9DMSwgdGhpcyBmaWxlIGhhcyAzIHBhZ2VzLiBGb3IgdGhlIGZpcnN0IHBhZ2UKK3dlIGFsbG9jYXRlIDIgZXh0cmEgZXh0cmEgWFJFRiBlbnRyaWVzLiBUaGVuIGZvciB0aGUgbmV4dCBwYWdlIDIgbW9yZQorZW50cmllcy4gVGhlbiBmb3IgdGhlIGxhc3QgcGFnZSB0aGUgdHJhbnNmZXIgZnVuY3Rpb24gY2hhbmdlcyBhbmQgd2UKK2FsbG9jYXRlIDQgbW9yZSBlbnRyaWVzLgorCitXaGVuIHdlIHJlYWQgdGhlIGZpbGUgaW50byBtZW1vcnksIHdlIGFzc3VtZSB3ZSBoYXZlIDQgYnl0ZXMgZXh0cmEgZm9yCitlYWNoIGFuZCBldmVyeSBwYWdlIChhcyBwZXIgdGhlIGxhc3QgdHJhbnNmZXIgZnVuY3Rpb24gd2UgcmVhZCkuIFdoaWNoCitpcyBub3QgY29ycmVjdCwgd2Ugb25seSBoYXZlIDIgYnl0ZXMgZXh0cmEgZm9yIHRoZSBmaXJzdCAyIHBhZ2VzLiBBcyBhCityZXN1bHQsIHdlIGVuZCB1cCB3cml0aW5nIHBhc3QgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLgorCitUaGVyZSBhcmUgYWxzbyBzb21lIHJlbGF0ZWQgaXNzdWVzIHRoYXQgdGhpcyBhbHNvIGZpeGVzLiBGb3IgZXhhbXBsZSwKK1RJRkZHZXRGaWVsZCBjYW4gcmV0dXJuIHVuaW5pdGFsaXplZCBwb2ludGVyIHZhbHVlcywgYW5kIHRoZSBsb2dpYyB0bworZGV0ZWN0IGEgTj0zIHZzIE49MSB0cmFuc2ZlciBmdW5jdGlvbiBzZWVtZWQgcmF0aGVyIHN0cmFuZ2UuCisKK0l0IGlzIGFsc28gc3RyYW5nZSB0aGF0IHdlIGRlY2xhcmUgdGhlIHRyYW5zZmVyIGZ1bmN0aW9ucyB0byBiZSBvZiB0eXBlCitmbG9hdCwgd2hlbiB0aGUgc3RhbmRhcmQgc2F5cyB0aGV5IGFyZSB1bnNpZ25lZCAxNiBiaXQgdmFsdWVzLiBUaGlzIGlzCitmaXhlZCBpbiBhbm90aGVyIHBhdGNoLgorCitUaGlzIHBhdGNoIHdpbGwgY2hlY2sgdG8gZW5zdXJlIHRoYXQgdGhlIE4gdmFsdWUgZm9yIGV2ZXJ5IHRyYW5zZmVyCitmdW5jdGlvbiBpcyB0aGUgc2FtZSBmb3IgZXZlcnkgcGFnZS4gSWYgdGhpcyBjaGFuZ2VzLCB3ZSBhYm9ydCB3aXRoIGFuCitlcnJvci4gSW4gdGhlb3J5LCB3ZSBzaG91bGQgcGVyaGFwcyBjaGVjayB0aGF0IHRoZSB0cmFuc2ZlciBmdW5jdGlvbgoraXRzZWxmIGlzIGlkZW50aWNhbCBmb3IgZXZlcnkgcGFnZSwgaG93ZXZlciB3ZSBkb24ndCBkbyB0aGF0IGR1ZSB0byB0aGUKK2NvbmZ1c2lvbiBvZiB0aGUgdHlwZSBvZiB0aGUgZGF0YSBpbiB0aGUgdHJhbnNmZXIgZnVuY3Rpb24uCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGxhYi5jb20vbGlidGlmZi9saWJ0aWZmL2NvbW1pdC8zZGQ4ZjZhMzU3OTgxYTQwOTBmMTI2YWI5MDI1MDU2YzkzOGI2OTQwXQorCitDVkU6IENWRS0yMDE3LTk5MzUKKworU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgbGlidGlmZi90aWZfZGlyLmMgfCAgMyArKysKKyB0b29scy90aWZmMnBkZi5jICB8IDY1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDQ3IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGlidGlmZi90aWZfZGlyLmMgYi9saWJ0aWZmL3RpZl9kaXIuYworaW5kZXggZjAwZjgwOC4uYzM2YTVmMyAxMDA2NDQKKy0tLSBhL2xpYnRpZmYvdGlmX2Rpci5jCisrKysgYi9saWJ0aWZmL3RpZl9kaXIuYworQEAgLTEwNjcsNiArMTA2Nyw5IEBAIF9USUZGVkdldEZpZWxkKFRJRkYqIHRpZiwgdWludDMyIHRhZywgdmFfbGlzdCBhcCkKKyAJCQlpZiAodGQtPnRkX3NhbXBsZXNwZXJwaXhlbCAtIHRkLT50ZF9leHRyYXNhbXBsZXMgPiAxKSB7CisgCQkJCSp2YV9hcmcoYXAsIHVpbnQxNioqKSA9IHRkLT50ZF90cmFuc2ZlcmZ1bmN0aW9uWzFdOworIAkJCQkqdmFfYXJnKGFwLCB1aW50MTYqKikgPSB0ZC0+dGRfdHJhbnNmZXJmdW5jdGlvblsyXTsKKysJCQl9IGVsc2UgeworKwkJCQkqdmFfYXJnKGFwLCB1aW50MTYqKikgPSBOVUxMOworKwkJCQkqdmFfYXJnKGFwLCB1aW50MTYqKikgPSBOVUxMOworIAkJCX0KKyAJCQlicmVhazsKKyAJCWNhc2UgVElGRlRBR19SRUZFUkVOQ0VCTEFDS1dISVRFOgorZGlmZiAtLWdpdCBhL3Rvb2xzL3RpZmYycGRmLmMgYi90b29scy90aWZmMnBkZi5jCitpbmRleCA0NTRiZWZiLi4wYjU5NzNlIDEwMDY0NAorLS0tIGEvdG9vbHMvdGlmZjJwZGYuYworKysrIGIvdG9vbHMvdGlmZjJwZGYuYworQEAgLTEwNDcsNiArMTA0Nyw4IEBAIHZvaWQgdDJwX3JlYWRfdGlmZl9pbml0KFQyUCogdDJwLCBUSUZGKiBpbnB1dCl7CisgCXVpbnQxNiBwYWdlbj0wOworIAl1aW50MTYgcGFnZWQ9MDsKKyAJdWludDE2IHh1aW50MTY9MDsKKysJdWludDE2IHRpZmZfdHJhbnNmZXJmdW5jdGlvbmNvdW50PTA7CisrCWZsb2F0KiB0aWZmX3RyYW5zZmVyZnVuY3Rpb25bM107CisgCisgCWRpcmVjdG9yeWNvdW50PVRJRkZOdW1iZXJPZkRpcmVjdG9yaWVzKGlucHV0KTsKKyAJdDJwLT50aWZmX3BhZ2VzID0gKFQyUF9QQUdFKikgX1RJRkZtYWxsb2MoVElGRlNhZmVNdWx0aXBseSh0bXNpemVfdCxkaXJlY3Rvcnljb3VudCxzaXplb2YoVDJQX1BBR0UpKSk7CitAQCAtMTE0NywyNiArMTE0OSw0OCBAQCB2b2lkIHQycF9yZWFkX3RpZmZfaW5pdChUMlAqIHQycCwgVElGRiogaW5wdXQpeworICAgICAgICAgICAgICAgICB9CisgI2VuZGlmCisgCQlpZiAoVElGRkdldEZpZWxkKGlucHV0LCBUSUZGVEFHX1RSQU5TRkVSRlVOQ1RJT04sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJih0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvblswXSksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJih0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvblsxXSksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJih0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvblsyXSkpKSB7CistCQkJaWYoKHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzFdICE9IChmbG9hdCopIE5VTEwpICYmCistICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzJdICE9IChmbG9hdCopIE5VTEwpICYmCistICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzFdICE9CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzBdKSkgeworLQkJCQl0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvbmNvdW50ID0gMzsKKy0JCQkJdDJwLT50aWZmX3BhZ2VzW2ldLnBhZ2VfZXh0cmEgKz0gNDsKKy0JCQkJdDJwLT5wZGZfeHJlZmNvdW50ICs9IDQ7CistCQkJfSBlbHNlIHsKKy0JCQkJdDJwLT50aWZmX3RyYW5zZmVyZnVuY3Rpb25jb3VudCA9IDE7CistCQkJCXQycC0+dGlmZl9wYWdlc1tpXS5wYWdlX2V4dHJhICs9IDI7CistCQkJCXQycC0+cGRmX3hyZWZjb3VudCArPSAyOworLQkJCX0KKy0JCQlpZih0MnAtPnBkZl9taW5vcnZlcnNpb24gPCAyKQorLQkJCQl0MnAtPnBkZl9taW5vcnZlcnNpb24gPSAyOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYodGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzBdKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKHRpZmZfdHJhbnNmZXJmdW5jdGlvblsxXSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJih0aWZmX3RyYW5zZmVyZnVuY3Rpb25bMl0pKSkgeworKworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKCh0aWZmX3RyYW5zZmVyZnVuY3Rpb25bMV0gIT0gKGZsb2F0KikgTlVMTCkgJiYKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAodGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzJdICE9IChmbG9hdCopIE5VTEwpCisrICAgICAgICAgICAgICAgICAgICAgICAgICApIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlmZl90cmFuc2ZlcmZ1bmN0aW9uY291bnQ9MzsKKysgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWZmX3RyYW5zZmVyZnVuY3Rpb25jb3VudD0xOworKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKy0JCQl0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvbmNvdW50PTA7CisrCQkJdGlmZl90cmFuc2ZlcmZ1bmN0aW9uY291bnQ9MDsKKyAJCX0KKysKKysgICAgICAgICAgICAgICAgaWYgKGkgPiAwKXsKKysgICAgICAgICAgICAgICAgICAgIGlmICh0aWZmX3RyYW5zZmVyZnVuY3Rpb25jb3VudCAhPSB0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvbmNvdW50KXsKKysgICAgICAgICAgICAgICAgICAgICAgICBUSUZGRXJyb3IoCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJRkYyUERGX01PRFVMRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRpZmZlcmVudCB0cmFuc2ZlciBmdW5jdGlvbiBvbiBwYWdlICVkIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgdDJwLT50MnBfZXJyb3IgPSBUMlBfRVJSX0VSUk9SOworKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgICAgICB0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvbmNvdW50ID0gdGlmZl90cmFuc2ZlcmZ1bmN0aW9uY291bnQ7CisrICAgICAgICAgICAgICAgIHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzBdID0gdGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzBdOworKyAgICAgICAgICAgICAgICB0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvblsxXSA9IHRpZmZfdHJhbnNmZXJmdW5jdGlvblsxXTsKKysgICAgICAgICAgICAgICAgdDJwLT50aWZmX3RyYW5zZmVyZnVuY3Rpb25bMl0gPSB0aWZmX3RyYW5zZmVyZnVuY3Rpb25bMl07CisrICAgICAgICAgICAgICAgIGlmKHRpZmZfdHJhbnNmZXJmdW5jdGlvbmNvdW50ID09IDMpeworKyAgICAgICAgICAgICAgICAgICAgICAgIHQycC0+dGlmZl9wYWdlc1tpXS5wYWdlX2V4dHJhICs9IDQ7CisrICAgICAgICAgICAgICAgICAgICAgICAgdDJwLT5wZGZfeHJlZmNvdW50ICs9IDQ7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYodDJwLT5wZGZfbWlub3J2ZXJzaW9uIDwgMikKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQycC0+cGRmX21pbm9ydmVyc2lvbiA9IDI7CisrICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGlmZl90cmFuc2ZlcmZ1bmN0aW9uY291bnQgPT0gMSl7CisrICAgICAgICAgICAgICAgICAgICAgICAgdDJwLT50aWZmX3BhZ2VzW2ldLnBhZ2VfZXh0cmEgKz0gMjsKKysgICAgICAgICAgICAgICAgICAgICAgICB0MnAtPnBkZl94cmVmY291bnQgKz0gMjsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZih0MnAtPnBkZl9taW5vcnZlcnNpb24gPCAyKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdDJwLT5wZGZfbWlub3J2ZXJzaW9uID0gMjsKKysgICAgICAgICAgICAgICAgfQorKworIAkJaWYoIFRJRkZHZXRGaWVsZCgKKyAJCQlpbnB1dCwgCisgCQkJVElGRlRBR19JQ0NQUk9GSUxFLCAKK0BAIC0xODI4LDkgKzE4NTIsOCBAQCB2b2lkIHQycF9yZWFkX3RpZmZfZGF0YShUMlAqIHQycCwgVElGRiogaW5wdXQpeworIAkJCSAmKHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzFdKSwKKyAJCQkgJih0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvblsyXSkpKSB7CisgCQlpZigodDJwLT50aWZmX3RyYW5zZmVyZnVuY3Rpb25bMV0gIT0gKGZsb2F0KikgTlVMTCkgJiYKKy0gICAgICAgICAgICAgICAgICAgKHQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzJdICE9IChmbG9hdCopIE5VTEwpICYmCistICAgICAgICAgICAgICAgICAgICh0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvblsxXSAhPQorLSAgICAgICAgICAgICAgICAgICAgdDJwLT50aWZmX3RyYW5zZmVyZnVuY3Rpb25bMF0pKSB7CisrICAgICAgICAgICAgICAgICAgICh0MnAtPnRpZmZfdHJhbnNmZXJmdW5jdGlvblsyXSAhPSAoZmxvYXQqKSBOVUxMKQorKyAgICAgICAgICAgICAgICAgICkgeworIAkJCXQycC0+dGlmZl90cmFuc2ZlcmZ1bmN0aW9uY291bnQ9MzsKKyAJCX0gZWxzZSB7CisgCQkJdDJwLT50aWZmX3RyYW5zZmVyZnVuY3Rpb25jb3VudD0xOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy05OTM2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctOTkzNi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM5OTM2My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy05OTM2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotRnJvbSA2MmVmZWE3NjU5MjY0NzQyNmRlZWM1NTkyZmQ3Mjc0ZDVjOTUwNjQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHRAc3BhdGlhbHlzLmNvbT4KLURhdGU6IE1vbiwgMjYgSnVuIDIwMTcgMTU6MTk6NTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gKiBsaWJ0aWZmL3RpZl9qYmlnLmM6IGZpeCBtZW1vcnkgbGVhayBpbiBlcnJvciBjb2RlIHBhdGggb2YKLSBKQklHRGVjb2RlKCkgRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjcwNiBSZXBvcnRlZAotIGJ5IHRlYW0gT1dMMzM3Ci0KLSogbGlidGlmZi90aWZfanBlZy5jOiBlcnJvciBvdXQgYXQgZGVjb2RpbmcgdGltZSBpZiBhbnRpY2lwYXRlZCBsaWJqcGVnCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdGh1Yi5jb20vdmFkei9saWJ0aWZmL2NvbW1pdC9mZThkNzE2NTk1NmI4OGRmNDgzNzAzNGE5MTYxZGM1ZmQyMGNmNjdhXQotCi1DVkU6IENWRS0yMDE3LTk5MzYKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gQ2hhbmdlTG9nICAgICAgICAgIHwgNiArKysrKysKLSBsaWJ0aWZmL3RpZl9qYmlnLmMgfCAxICsKLSAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCi1pbmRleCA1NzM5MjkyLi4wMjQwZjBiIDEwMDY0NAotLS0tIGEvQ2hhbmdlTG9nCi0rKysgYi9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOSBAQAotKzIwMTctMDYtMjYgIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0rCi0rCSogbGlidGlmZi90aWZfamJpZy5jOiBmaXggbWVtb3J5IGxlYWsgaW4gZXJyb3IgY29kZSBwYXRoIG9mIEpCSUdEZWNvZGUoKQotKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzA2Ci0rCVJlcG9ydGVkIGJ5IHRlYW0gT1dMMzM3Ci0rCi0gMjAxNy0wNi0wMSAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSAKLSAJKiBsaWJ0aWZmL3RpZl9kaXJpbmZvLmMsIHRpZl9kaXJyZWFkLmM6IGFkZCBfVElGRkNoZWNrRmllbGRJc1ZhbGlkRm9yQ29kZWMoKSwKLWRpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9qYmlnLmMgYi9saWJ0aWZmL3RpZl9qYmlnLmMKLWluZGV4IDVmNWY3NWUuLmM3NWYzMWQgMTAwNjQ0Ci0tLS0gYS9saWJ0aWZmL3RpZl9qYmlnLmMKLSsrKyBiL2xpYnRpZmYvdGlmX2piaWcuYwotQEAgLTk0LDYgKzk0LDcgQEAgc3RhdGljIGludCBKQklHRGVjb2RlKFRJRkYqIHRpZiwgdWludDgqIGJ1ZmZlciwgdG1zaXplX3Qgc2l6ZSwgdWludDE2IHMpCi0gCQkJICAgICBqYmdfc3RyZXJyb3IoZGVjb2RlU3RhdHVzKQotICNlbmRpZgotIAkJCSAgICAgKTsKLSsJCWpiZ19kZWNfZnJlZSgmZGVjb2Rlcik7Ci0gCQlyZXR1cm4gMDsKLSAJfQotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxOC01Nzg0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTgtNTc4NC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDYwMDFkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTgtNTc4NC5wYXRjaApAQCAtMCwwICsxLDEzNSBAQAorRnJvbSA2Y2RlYTE1MjEzYmU2YjY3ZDlmODM4MGM3YmI0MGUzMjVkM2FkYWNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTmF0aGFuIEJha2VyIDxuYXRoYW5iQGxlbm92by1jaHJvbWUuY29tPgorRGF0ZTogVHVlLCA2IEZlYiAyMDE4IDEwOjEzOjU3IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBmb3IgYnVnIDI3NzIKKworSXQgaXMgcG9zc2libGUgdG8gY3JhZnQgYSBUSUZGIGRvY3VtZW50IHdoZXJlIHRoZSBJRkQgbGlzdCBpcyBjaXJjdWxhciwKK2xlYWRpbmcgdG8gYW4gaW5maW5pdGUgbG9vcCB3aGlsZSB0cmF2ZXJzaW5nIHRoZSBjaGFpbi4gVGhlIGxpYnRpZmYKK2RpcmVjdG9yeSByZWFkZXIgaGFzIGEgZmFpbHNhZmUgdGhhdCB3aWxsIGJyZWFrIG91dCBvZiB0aGlzIGxvb3AgYWZ0ZXIKK3JlYWRpbmcgNjU1MzUgZGlyZWN0b3J5IGVudHJpZXMsIGJ1dCBpdCB3aWxsIGNvbnRpbnVlIHByb2Nlc3NpbmcsCitjb25zdW1pbmcgdGltZSBhbmQgcmVzb3VyY2VzIHRvIHByb2Nlc3Mgd2hhdCBpcyBlc3NlbnRpYWxseSBhIGJvZ3VzIFRJRkYKK2RvY3VtZW50LgorCitUaGlzIGNoYW5nZSBmaXhlcyB0aGUgYWJvdmUgYmVoYXZpb3IgYnkgYnJlYWtpbmcgb3V0IG9mIHByb2Nlc3Npbmcgd2hlbgorYSBUSUZGIGRvY3VtZW50IGhhcyA+PSA2NTUzNSBkaXJlY3RvcmllcyBhbmQgdGVybWluYXRpbmcgd2l0aCBhbiBlcnJvci4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0bGFiLmNvbS9saWJ0aWZmL2xpYnRpZmYvY29tbWl0LzQ3Mzg1MWQyMTFjZjg4MDVhMTYxODIwMzM3Y2E3NGNjOTYxNWQ2ZWZdCisKK0NWRTogQ1ZFLTIwMTgtNTc4NAorCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBjb250cmliL2FkZHRpZmZvL3RpZl9vdmVydmlldy5jIHwgMTQgKysrKysrKysrKysrKy0KKyB0b29scy90aWZmMnBkZi5jICAgICAgICAgICAgICAgIHwgMTAgKysrKysrKysrKworIHRvb2xzL3RpZmZjcm9wLmMgICAgICAgICAgICAgICAgfCAxMyArKysrKysrKysrKy0tCisgMyBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29udHJpYi9hZGR0aWZmby90aWZfb3ZlcnZpZXcuYyBiL2NvbnRyaWIvYWRkdGlmZm8vdGlmX292ZXJ2aWV3LmMKK2luZGV4IGM2MWZmYmIuLjAzYjM1NzMgMTAwNjQ0CistLS0gYS9jb250cmliL2FkZHRpZmZvL3RpZl9vdmVydmlldy5jCisrKysgYi9jb250cmliL2FkZHRpZmZvL3RpZl9vdmVydmlldy5jCitAQCAtNjUsNiArNjUsOCBAQAorICMgIGRlZmluZSBNQVgoYSxiKSAgICAgICgoYT5iKSA/IGEgOiBiKQorICNlbmRpZgorIAorKyNkZWZpbmUgVElGRl9ESVJfTUFYICA2NTUzNAorKworIHZvaWQgVElGRkJ1aWxkT3ZlcnZpZXdzKCBUSUZGICosIGludCwgaW50ICosIGludCwgY29uc3QgY2hhciAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKCopKGRvdWJsZSx2b2lkKiksIHZvaWQgKiApOworIAorQEAgLTkxLDYgKzkzLDcgQEAgdWludDMyIFRJRkZfV3JpdGVPdmVydmlldyggVElGRiAqaFRJRkYsIHVpbnQzMiBuWFNpemUsIHVpbnQzMiBuWVNpemUsCisgeworICAgICB0b2ZmX3QJbkJhc2VEaXJPZmZzZXQ7CisgICAgIHRvZmZfdAluT2Zmc2V0OworKyAgICB0ZGlyX3QJaU51bURpcjsKKyAKKyAgICAgKHZvaWQpIGJVc2VTdWJJRkRzOworIAorQEAgLTE0Nyw3ICsxNTAsMTYgQEAgdWludDMyIFRJRkZfV3JpdGVPdmVydmlldyggVElGRiAqaFRJRkYsIHVpbnQzMiBuWFNpemUsIHVpbnQzMiBuWVNpemUsCisgICAgICAgICByZXR1cm4gMDsKKyAKKyAgICAgVElGRldyaXRlRGlyZWN0b3J5KCBoVElGRiApOworLSAgICBUSUZGU2V0RGlyZWN0b3J5KCBoVElGRiwgKHRkaXJfdCkgKFRJRkZOdW1iZXJPZkRpcmVjdG9yaWVzKGhUSUZGKS0xKSApOworKyAgICBpTnVtRGlyID0gVElGRk51bWJlck9mRGlyZWN0b3JpZXMoaFRJRkYpOworKyAgICBpZiggaU51bURpciA+IFRJRkZfRElSX01BWCApCisrICAgIHsKKysgICAgICAgIFRJRkZFcnJvckV4dCggVElGRkNsaWVudGRhdGEoaFRJRkYpLAorKyAgICAgICAgICAgICAgICAgICAgICAiVElGRl9Xcml0ZU92ZXJ2aWV3IiwKKysgICAgICAgICAgICAgICAgICAgICAgIkZpbGUgYCVzJyBoYXMgdG9vIG1hbnkgZGlyZWN0b3JpZXMuXG4iLAorKyAgICAgICAgICAgICAgICAgICAgICBUSUZGRmlsZU5hbWUoaFRJRkYpICk7CisrICAgICAgICBleGl0KC0xKTsKKysgICAgfQorKyAgICBUSUZGU2V0RGlyZWN0b3J5KCBoVElGRiwgKHRkaXJfdCkgKGlOdW1EaXIgLSAxKSApOworIAorICAgICBuT2Zmc2V0ID0gVElGRkN1cnJlbnREaXJPZmZzZXQoIGhUSUZGICk7CisgCitkaWZmIC0tZ2l0IGEvdG9vbHMvdGlmZjJwZGYuYyBiL3Rvb2xzL3RpZmYycGRmLmMKK2luZGV4IDBiNTk3M2UuLmVmNWQ2YTAgMTAwNjQ0CistLS0gYS90b29scy90aWZmMnBkZi5jCisrKysgYi90b29scy90aWZmMnBkZi5jCitAQCAtNjgsNiArNjgsOCBAQCBleHRlcm4gaW50IGdldG9wdChpbnQsIGNoYXIqKiwgY2hhciopOworIAorICNkZWZpbmUgUFNfVU5JVF9TSVpFCTcyLjBGCisgCisrI2RlZmluZSBUSUZGX0RJUl9NQVggICAgNjU1MzQKKysKKyAvKiBUaGlzIHR5cGUgaXMgb2YgUERGIGNvbG9yIHNwYWNlcy4gKi8KKyB0eXBlZGVmIGVudW0geworIAlUMlBfQ1NfQklMRVZFTCA9IDB4MDEsCS8qIEJpbGV2ZWwsIGJsYWNrIGFuZCB3aGl0ZSAqLworQEAgLTEwNTEsNiArMTA1MywxNCBAQCB2b2lkIHQycF9yZWFkX3RpZmZfaW5pdChUMlAqIHQycCwgVElGRiogaW5wdXQpeworIAlmbG9hdCogdGlmZl90cmFuc2ZlcmZ1bmN0aW9uWzNdOworIAorIAlkaXJlY3Rvcnljb3VudD1USUZGTnVtYmVyT2ZEaXJlY3RvcmllcyhpbnB1dCk7CisrCWlmKGRpcmVjdG9yeWNvdW50ID4gVElGRl9ESVJfTUFYKSB7CisrCQlUSUZGRXJyb3IoCisrCQkJVElGRjJQREZfTU9EVUxFLAorKwkJCSJUSUZGIGNvbnRhaW5zIHRvbyBtYW55IGRpcmVjdG9yaWVzLCAlcyIsCisrCQkJVElGRkZpbGVOYW1lKGlucHV0KSk7CisrCQl0MnAtPnQycF9lcnJvciA9IFQyUF9FUlJfRVJST1I7CisrCQlyZXR1cm47CisrCX0KKyAJdDJwLT50aWZmX3BhZ2VzID0gKFQyUF9QQUdFKikgX1RJRkZtYWxsb2MoVElGRlNhZmVNdWx0aXBseSh0bXNpemVfdCxkaXJlY3Rvcnljb3VudCxzaXplb2YoVDJQX1BBR0UpKSk7CisgCWlmKHQycC0+dGlmZl9wYWdlcz09TlVMTCl7CisgCQlUSUZGRXJyb3IoCitkaWZmIC0tZ2l0IGEvdG9vbHMvdGlmZmNyb3AuYyBiL3Rvb2xzL3RpZmZjcm9wLmMKK2luZGV4IGM2OTE3N2UuLmM2MGNiMzggMTAwNjQ0CistLS0gYS90b29scy90aWZmY3JvcC5jCisrKysgYi90b29scy90aWZmY3JvcC5jCitAQCAtMjE3LDYgKzIxNyw4IEBAIGV4dGVybiBpbnQgZ2V0b3B0KGludCBhcmdjLCBjaGFyICogY29uc3QgYXJndltdLCBjb25zdCBjaGFyICpvcHRzdHJpbmcpOworICNkZWZpbmUgRFVNUF9URVhUICAgMQorICNkZWZpbmUgRFVNUF9SQVcgICAgMgorIAorKyNkZWZpbmUgVElGRl9ESVJfTUFYICA2NTUzNAorKworIC8qIE9mZnNldHMgaW50byBidWZmZXIgZm9yIG1hcmdpbnMgYW5kIGZpeGVkIHdpZHRoIGFuZCBsZW5ndGggc2VnbWVudHMgKi8KKyBzdHJ1Y3Qgb2Zmc2V0IHsKKyAgIHVpbnQzMiAgdG1hcmdpbjsKK0BAIC0yMjMzLDcgKzIyMzUsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCisgICAgIHBhZ2VOdW0gPSAtMTsKKyAgIGVsc2UKKyAgICAgdG90YWxfaW1hZ2VzID0gMDsKKy0gIC8qIHJlYWQgbXVsdGlwbGUgaW5wdXQgZmlsZXMgYW5kIHdyaXRlIHRvIG91dHB1dCBmaWxlKHMpICovCisrICAvKiBSZWFkIG11bHRpcGxlIGlucHV0IGZpbGVzIGFuZCB3cml0ZSB0byBvdXRwdXQgZmlsZShzKSAqLworICAgd2hpbGUgKG9wdGluZCA8IGFyZ2MgLSAxKQorICAgICB7CisgICAgIGluID0gVElGRk9wZW4gKGFyZ3Zbb3B0aW5kXSwgInIiKTsKK0BAIC0yMjQxLDcgKzIyNDMsMTQgQEAgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQorICAgICAgIHJldHVybiAoLTMpOworIAorICAgICAvKiBJZiBvbmx5IG9uZSBpbnB1dCBmaWxlIGlzIHNwZWNpZmllZCwgd2UgY2FuIHVzZSBkaXJlY3RvcnkgY291bnQgKi8KKy0gICAgdG90YWxfaW1hZ2VzID0gVElGRk51bWJlck9mRGlyZWN0b3JpZXMoaW4pOyAKKysgICAgdG90YWxfaW1hZ2VzID0gVElGRk51bWJlck9mRGlyZWN0b3JpZXMoaW4pOworKyAgICBpZiAodG90YWxfaW1hZ2VzID4gVElGRl9ESVJfTUFYKQorKyAgICAgIHsKKysgICAgICBUSUZGRXJyb3IgKFRJRkZGaWxlTmFtZShpbiksICJGaWxlIGNvbnRhaW5zIHRvbyBtYW55IGRpcmVjdG9yaWVzIik7CisrICAgICAgaWYgKG91dCAhPSBOVUxMKQorKyAgICAgICAgKHZvaWQpIFRJRkZDbG9zZShvdXQpOworKyAgICAgIHJldHVybiAoMSk7CisrICAgICAgfQorICAgICBpZiAoaW1hZ2VfY291bnQgPT0gMCkKKyAgICAgICB7CisgICAgICAgZGlybnVtID0gMDsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvbGlidG9vbDIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9saWJ0b29sMi5wYXRjaAppbmRleCA0NTcyMDJlLi5hODRjNjg4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9saWJ0b29sMi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9saWJ0b29sMi5wYXRjaApAQCAtNCwxMyArNCwxMyBAQAogIGNvbmZpZ3VyZS5hYyB8ICAgIDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotSW5kZXg6IHRpZmYtMy45LjUvY29uZmlndXJlLmFjCitJbmRleDogdGlmZi00LjAuOS9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTMuOS41Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgdGlmZi0zLjkuNS9jb25maWd1cmUuYWMKKy0tLSB0aWZmLTQuMC45Lm9yaWcvY29uZmlndXJlLmFjCisrKysgdGlmZi00LjAuOS9jb25maWd1cmUuYWMKIEBAIC0yNyw3ICsyNyw3IEBAIGRubCBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9jb25mIHRvIHAKICBBQ19QUkVSRVEoMi42NCkKLSBBQ19JTklUKFtMaWJUSUZGIFNvZnR3YXJlXSxbMy45LjVdLFt0aWZmQGxpc3RzLm1hcHRvb2xzLm9yZ10sW3RpZmZdKQorIEFDX0lOSVQoW0xpYlRJRkYgU29mdHdhcmVdLFs0LjAuOV0sW3RpZmZAbGlzdHMubWFwdG9vbHMub3JnXSxbdGlmZl0pCiAgQUNfQ09ORklHX0FVWF9ESVIoY29uZmlnKQogLUFDX0NPTkZJR19NQUNST19ESVIobTQpCiArZG5sIEFDX0NPTkZJR19NQUNST19ESVIobTQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi90aWZmXzQuMC44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvdGlmZl80LjAuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJlZTZmOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi90aWZmXzQuMC44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotU1VNTUFSWSA9ICJQcm92aWRlcyBzdXBwb3J0IGZvciB0aGUgVGFnIEltYWdlIEZpbGUgRm9ybWF0IChUSUZGKSIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0zNGRhM2RiNDZmYWI3NTAxOTkyZjk2MTVkN2UxNThjZiIKLQotQ1ZFX1BST0RVQ1QgPSAibGlidGlmZiIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQub3NnZW8ub3JnL2xpYnRpZmYvdGlmZi0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbGlidG9vbDIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTE0Ny5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05OTM2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwNjg4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTExMzM1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEzNzI2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEzNzI3LnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyYTdkMWMxMzE4NDE2ZGRmMzZkNWY2ZmE0NjAwMDY5YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1OWQ3YTVhOGNjZDkyMDU5OTEzZjI0Njg3N2RiOTVhMjkxOGU2YzA0ZmI5ZDQzZmQ3NGU1YzMzOTBkYWMyOTEwIgotCi0jIGV4Y2x1ZGUgYmV0YXMKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInRpZmYtKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbXVsdGlsaWJfaGVhZGVyCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTID0gImF4X2N2X2NoZWNrX2dsX2xpYmdsPW5vIgotCi1QQUNLQUdFQ09ORklHID89ICJjeHgganBlZyB6bGliIGx6bWEgXAotICAgICAgICAgICAgICAgICAgc3RyaXAtY2hvcHBpbmcgZXh0cmFzYW1wbGUtYXMtYWxwaGEgY2hlY2steWNiY3Itc3Vic2FtcGxpbmciCi0KLVBBQ0tBR0VDT05GSUdbY3h4XSA9ICItLWVuYWJsZS1jeHgsLS1kaXNhYmxlLWN4eCwsIgotUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItLWVuYWJsZS1qcGVnLC0tZGlzYWJsZS1qcGVnLGpwZWcsIgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLWVuYWJsZS16bGliLC0tZGlzYWJsZS16bGliLHpsaWIsIgotUEFDS0FHRUNPTkZJR1tsem1hXSA9ICItLWVuYWJsZS1sem1hLC0tZGlzYWJsZS1sem1hLHh6LCIKLQotIyBDb252ZXJ0IHNpbmdsZS1zdHJpcCB1bmNvbXByZXNzZWQgaW1hZ2VzIHRvIG11bHRpcGxlIHN0cmlwcyBvZiBzcGVjaWZpZWQKLSMgc2l6ZSAoZGVmYXVsdDogODE5MikgdG8gcmVkdWNlIG1lbW9yeSB1c2FnZQotUEFDS0FHRUNPTkZJR1tzdHJpcC1jaG9wcGluZ10gPSAiLS1lbmFibGUtc3RyaXAtY2hvcHBpbmcsLS1kaXNhYmxlLXN0cmlwLWNob3BwaW5nLCwiCi0KLSMgVHJlYXQgYSBmb3VydGggc2FtcGxlIHdpdGggbm8gRVhUUkFTQU1QTEVfIHZhbHVlIGFzIGJlaW5nIEFTU09DQUxQSEEKLVBBQ0tBR0VDT05GSUdbZXh0cmFzYW1wbGUtYXMtYWxwaGFdID0gIi0tZW5hYmxlLWV4dHJhc2FtcGxlLWFzLWFscGhhLC0tZGlzYWJsZS1leHRyYXNhbXBsZS1hcy1hbHBoYSwsIgotCi0jIENvbnRyb2wgcGlja2luZyB1cCBZQ2JDciBzdWJzYW1wbGUgaW5mby4gRGlzYWJsZSB0byBzdXBwb3J0IGZpbGVzIGxhY2tpbmcKLSMgdGhlIHRhZwotUEFDS0FHRUNPTkZJR1tjaGVjay15Y2Jjci1zdWJzYW1wbGluZ10gPSAiLS1lbmFibGUtY2hlY2steWNiY3Itc3Vic2FtcGxpbmcsLS1kaXNhYmxlLWNoZWNrLXljYmNyLXN1YnNhbXBsaW5nLCwiCi0KLSMgU3VwcG9ydCBhIG1lY2hhbmlzbSBhbGxvd2luZyByZWFkaW5nIGxhcmdlIHN0cmlwcyAodXN1YWxseSBvbmUgc3RyaXAgZmlsZXMpCi0jIGluIGNodW5rcyB3aGVuIHVzaW5nIFRJRkZSZWFkU2NhbmxpbmUuIEV4cGVyaW1lbnRhbCA0LjArIGZlYXR1cmUKLVBBQ0tBR0VDT05GSUdbY2h1bmt5LXN0cmlwLXJlYWRdID0gIi0tZW5hYmxlLWNodW5reS1zdHJpcC1yZWFkLC0tZGlzYWJsZS1jaHVua3ktc3RyaXAtcmVhZCwsIgotCi1QQUNLQUdFUyA9KyAidGlmZnh4IHRpZmYtdXRpbHMiCi1GSUxFU190aWZmeHggPSAiJHtsaWJkaXJ9L2xpYnRpZmZ4eC5zby4qIgotRklMRVNfdGlmZi11dGlscyA9ICIke2JpbmRpcn0vKiIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgb2VfbXVsdGlsaWJfaGVhZGVyIHRpZmZjb25mLmgKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi90aWZmXzQuMC45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvdGlmZl80LjAuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzNiYmE1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvdGlmZl80LjAuOS5iYgpAQCAtMCwwICsxLDU1IEBACitTVU1NQVJZID0gIlByb3ZpZGVzIHN1cHBvcnQgZm9yIHRoZSBUYWcgSW1hZ2UgRmlsZSBGb3JtYXQgKFRJRkYpIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PTM0ZGEzZGI0NmZhYjc1MDE5OTJmOTYxNWQ3ZTE1OGNmIgorCitDVkVfUFJPRFVDVCA9ICJsaWJ0aWZmIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5vc2dlby5vcmcvbGlidGlmZi90aWZmLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9saWJ0b29sMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05OTM1LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE4MDEzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTU3ODQucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjU0YmFkMjExMjc5Y2M5M2ViNGZjYTMxYmE5YmZkYzc5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZlN2JkZWVjMmMzMTA3MzRlNzM0ZDE5YWFlM2E3MWViZTM3YTRkODQyZTBlMjNkYmIxYjg5MjFjMDAyNmNmY2QiCisKKyMgZXhjbHVkZSBiZXRhcworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAidGlmZi0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgorCitpbmhlcml0IGF1dG90b29scyBtdWx0aWxpYl9oZWFkZXIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYXhfY3ZfY2hlY2tfZ2xfbGliZ2w9bm8iCisKK1BBQ0tBR0VDT05GSUcgPz0gImN4eCBqcGVnIHpsaWIgbHptYSBcCisgICAgICAgICAgICAgICAgICBzdHJpcC1jaG9wcGluZyBleHRyYXNhbXBsZS1hcy1hbHBoYSBjaGVjay15Y2Jjci1zdWJzYW1wbGluZyIKKworUEFDS0FHRUNPTkZJR1tjeHhdID0gIi0tZW5hYmxlLWN4eCwtLWRpc2FibGUtY3h4LCwiCitQQUNLQUdFQ09ORklHW2pwZWddID0gIi0tZW5hYmxlLWpwZWcsLS1kaXNhYmxlLWpwZWcsanBlZywiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0tZW5hYmxlLXpsaWIsLS1kaXNhYmxlLXpsaWIsemxpYiwiCitQQUNLQUdFQ09ORklHW2x6bWFdID0gIi0tZW5hYmxlLWx6bWEsLS1kaXNhYmxlLWx6bWEseHosIgorCisjIENvbnZlcnQgc2luZ2xlLXN0cmlwIHVuY29tcHJlc3NlZCBpbWFnZXMgdG8gbXVsdGlwbGUgc3RyaXBzIG9mIHNwZWNpZmllZAorIyBzaXplIChkZWZhdWx0OiA4MTkyKSB0byByZWR1Y2UgbWVtb3J5IHVzYWdlCitQQUNLQUdFQ09ORklHW3N0cmlwLWNob3BwaW5nXSA9ICItLWVuYWJsZS1zdHJpcC1jaG9wcGluZywtLWRpc2FibGUtc3RyaXAtY2hvcHBpbmcsLCIKKworIyBUcmVhdCBhIGZvdXJ0aCBzYW1wbGUgd2l0aCBubyBFWFRSQVNBTVBMRV8gdmFsdWUgYXMgYmVpbmcgQVNTT0NBTFBIQQorUEFDS0FHRUNPTkZJR1tleHRyYXNhbXBsZS1hcy1hbHBoYV0gPSAiLS1lbmFibGUtZXh0cmFzYW1wbGUtYXMtYWxwaGEsLS1kaXNhYmxlLWV4dHJhc2FtcGxlLWFzLWFscGhhLCwiCisKKyMgQ29udHJvbCBwaWNraW5nIHVwIFlDYkNyIHN1YnNhbXBsZSBpbmZvLiBEaXNhYmxlIHRvIHN1cHBvcnQgZmlsZXMgbGFja2luZworIyB0aGUgdGFnCitQQUNLQUdFQ09ORklHW2NoZWNrLXljYmNyLXN1YnNhbXBsaW5nXSA9ICItLWVuYWJsZS1jaGVjay15Y2Jjci1zdWJzYW1wbGluZywtLWRpc2FibGUtY2hlY2steWNiY3Itc3Vic2FtcGxpbmcsLCIKKworIyBTdXBwb3J0IGEgbWVjaGFuaXNtIGFsbG93aW5nIHJlYWRpbmcgbGFyZ2Ugc3RyaXBzICh1c3VhbGx5IG9uZSBzdHJpcCBmaWxlcykKKyMgaW4gY2h1bmtzIHdoZW4gdXNpbmcgVElGRlJlYWRTY2FubGluZS4gRXhwZXJpbWVudGFsIDQuMCsgZmVhdHVyZQorUEFDS0FHRUNPTkZJR1tjaHVua3ktc3RyaXAtcmVhZF0gPSAiLS1lbmFibGUtY2h1bmt5LXN0cmlwLXJlYWQsLS1kaXNhYmxlLWNodW5reS1zdHJpcC1yZWFkLCwiCisKK1BBQ0tBR0VTID0rICJ0aWZmeHggdGlmZi11dGlscyIKK0ZJTEVTX3RpZmZ4eCA9ICIke2xpYmRpcn0vbGlidGlmZnh4LnNvLioiCitGSUxFU190aWZmLXV0aWxzID0gIiR7YmluZGlyfS8qIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBvZV9tdWx0aWxpYl9oZWFkZXIgdGlmZmNvbmYuaAorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE3LTE0NjMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXMvQ1ZFLTIwMTctMTQ2MzIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDAzNmI5NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE3LTE0NjMyLnBhdGNoCkBAIC0wLDAgKzEsNjIgQEAKK0Zyb20gMzk3MDRjZTE2ODM1ZTVjMDE5YmIwM2Y2YTk0ZGMxZjA2Nzc0MDZjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9HdWlkbz0yMEc9QzM9QkNudGhlcj89IDxhZ3hAc2lneGNwdS5vcmc+CitEYXRlOiBXZWQsIDE1IE5vdiAyMDE3IDE4OjIyOjU5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIENWRS0yMDE3LTE0NjMyOiB2b3JiaXNfYW5hbHlzaXNfaGVhZGVyX291dDogRG9uJ3QgY2xlYXIgb3BiCisgaWYgbm90IGluaXRpYWxpemVkCisKK0lmIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgaXMgbm90IHdpdGhpbiB0aGUgYWxsb3dlZCByYW5nZQord2UgY2FsbCBvZ2diYWNrX3dyaXRlY2xlYXIgYWx0b3VnaCBpdCdzIG5vdCBpbml0aWFsaXplZCB5ZXQuCisKK1RoaXMgZml4ZXMKKworICAgID0yMzM3MT09IEludmFsaWQgZnJlZSgpIC8gZGVsZXRlIC8gZGVsZXRlW10gLyByZWFsbG9jKCkKKyAgICA9PTIzMzcxPT0gICAgYXQgMHg0QzJDRTFCOiBmcmVlICh2Z19yZXBsYWNlX21hbGxvYy5jOjUzMCkKKyAgICA9PTIzMzcxPT0gICAgYnkgMHg4MjlDQTMxOiBvZ2dwYWNrX3dyaXRlY2xlYXIgKGluIC91c3IvbGliL3g4Nl82NC1saW51eC1nbnUvbGlib2dnLnNvLjAuOC4yKQorICAgID09MjMzNzE9PSAgICBieSAweDg0Qjk2RUU6IHZvcmJpc19hbmFseXNpc19oZWFkZXJvdXQgKGluZm8uYzo2NTIpCisgICAgPT0yMzM3MT09ICAgIGJ5IDB4OUZCQ0JDQzogPz8/IChpbiAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L3NveC9saWJzb3hfZm10X3ZvcmJpcy5zbykKKyAgICA9PTIzMzcxPT0gICAgYnkgMHg0RTUyNEYxOiA/Pz8gKGluIC91c3IvbGliL3g4Nl82NC1saW51eC1nbnUvbGlic294LnNvLjIuMC4xKQorICAgID09MjMzNzE9PSAgICBieSAweDRFNTJDQ0E6IHNveF9vcGVuX3dyaXRlIChpbiAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L2xpYnNveC5zby4yLjAuMSkKKyAgICA9PTIzMzcxPT0gICAgYnkgMHgxMEQ4MkE6IG9wZW5fb3V0cHV0X2ZpbGUgKHNveC5jOjE1NTYpCisgICAgPT0yMzM3MT09ICAgIGJ5IDB4MTBEODJBOiBwcm9jZXNzIChzb3guYzoxNzUzKQorICAgID09MjMzNzE9PSAgICBieSAweDEwRDgyQTogbWFpbiAoc294LmM6MzAxMikKKyAgICA9PTIzMzcxPT0gIEFkZHJlc3MgMHg2ODc2OGM4IGlzIDQ4OCBieXRlcyBpbnNpZGUgYSBibG9jayBvZiBzaXplIDg4MCBhbGxvYydkCisgICAgPT0yMzM3MT09ICAgIGF0IDB4NEMyQkIxRjogbWFsbG9jICh2Z19yZXBsYWNlX21hbGxvYy5jOjI5OCkKKyAgICA9PTIzMzcxPT0gICAgYnkgMHg0QzJERTlGOiByZWFsbG9jICh2Z19yZXBsYWNlX21hbGxvYy5jOjc4NSkKKyAgICA9PTIzMzcxPT0gICAgYnkgMHg0RTU0NUMyOiBsc3hfcmVhbGxvYyAoaW4gL3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS9saWJzb3guc28uMi4wLjEpCisgICAgPT0yMzM3MT09ICAgIGJ5IDB4OUZCQzlBMDogPz8/IChpbiAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L3NveC9saWJzb3hfZm10X3ZvcmJpcy5zbykKKyAgICA9PTIzMzcxPT0gICAgYnkgMHg0RTUyNEYxOiA/Pz8gKGluIC91c3IvbGliL3g4Nl82NC1saW51eC1nbnUvbGlic294LnNvLjIuMC4xKQorICAgID09MjMzNzE9PSAgICBieSAweDRFNTJDQ0E6IHNveF9vcGVuX3dyaXRlIChpbiAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L2xpYnNveC5zby4yLjAuMSkKKyAgICA9PTIzMzcxPT0gICAgYnkgMHgxMEQ4MkE6IG9wZW5fb3V0cHV0X2ZpbGUgKHNveC5jOjE1NTYpCisgICAgPT0yMzM3MT09ICAgIGJ5IDB4MTBEODJBOiBwcm9jZXNzIChzb3guYzoxNzUzKQorICAgID09MjMzNzE9PSAgICBieSAweDEwRDgyQTogbWFpbiAoc294LmM6MzAxMikKKworYXMgc2VlbiB3aGVuIHVzaW5nIHRoZSB0ZXN0Y2FzZSBmcm9tIENWRS0yMDE3LTExMzMzIHdpdGgKKzAwOGQyM2I3ODJiZTA5YzhkNzViYTgxOTBiMTc5NGFiZDY2YzcxMjEgYXBwbGllZC4gSG93ZXZlciB0aGUgZXJyb3Igd2FzCit0aGVyZSBiZWZvcmUuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK0NWRTogQ1ZFLTIwMTctMTQ2MzIKKworUmVmZXJlbmNlIHRvIHVwc3RyZWFtIHBhdGNoOgoraHR0cHM6Ly9naXQueGlwaC5vcmcvP3A9dm9yYmlzLmdpdDthPWNvbW1pdGRpZmY7aD1jMWMyODMxZmM3MzA2ZDVmYmQ3YmM4MDAzMjRlZmQxMmIyOGQzMjdmCisKK1NpZ25lZC1vZmYtYnk6IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KKy0tLQorIGxpYi9pbmZvLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2xpYi9pbmZvLmMgYi9saWIvaW5mby5jCitpbmRleCA4MWI3NTU3Li40ZDgyNTY4IDEwMDY0NAorLS0tIGEvbGliL2luZm8uYworKysrIGIvbGliL2luZm8uYworQEAgLTU4NCw2ICs1ODQsNyBAQCBpbnQgdm9yYmlzX2FuYWx5c2lzX2hlYWRlcm91dCh2b3JiaXNfZHNwX3N0YXRlICp2LAorICAgcHJpdmF0ZV9zdGF0ZSAqYj12LT5iYWNrZW5kX3N0YXRlOworIAorICAgaWYoIWJ8fHZpLT5jaGFubmVsczw9MHx8dmktPmNoYW5uZWxzPjI1Nil7CisrICAgIGIgPSBOVUxMOworICAgICByZXQ9T1ZfRUZBVUxUOworICAgICBnb3RvIGVycl9vdXQ7CisgICB9CistLSAKKzIuMTYuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpcy9DVkUtMjAxNy0xNDYzMy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE3LTE0NjMzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljOWU2ODgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpcy9DVkUtMjAxNy0xNDYzMy5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIDA3ZWRhNTVmMzM2ZTVjNDRkZmMwZTRhMWUyMTYyOGZhZWQ3MjU1ZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/R3VpZG89MjBHPUMzPUJDbnRoZXI/PSA8YWd4QHNpZ3hjcHUub3JnPgorRGF0ZTogVHVlLCAzMSBPY3QgMjAxNyAxODozMjo0NiArMDEwMAorU3ViamVjdDogW1BBVENIXSBDVkUtMjAxNy0xNDYzMzogRG9uJ3QgYWxsb3cgZm9yIG1vcmUgdGhhbiAyNTYgY2hhbm5lbHMKKworT3RoZXJ3aXNlCisKKyBmb3IoaT0wO2k8dmktPmNoYW5uZWxzO2krKyl7CisgICAgICAvKiB0aGUgZW5jb2RlciBzZXR1cCBhc3N1bWVzIHRoYXQgYWxsIHRoZSBtb2RlcyB1c2VkIGJ5IGFueQorICAgICAgICAgc3BlY2lmaWMgYml0cmF0ZSB0d2Vha2luZyB1c2UgdGhlIHNhbWUgZmxvb3IgKi8KKyAgICAgIGludCBzdWJtYXA9aW5mby0+Y2htdXhsaXN0W2ldOworCitvdmVycmVhZHMgbGF0ZXIgaW4gbWFwcGluZzBfZm9yd2FyZCBzaW5jZSBjaG11eGxpc3QgaXMgYSBmaXhlZCBhcnJheSBvZgorMjU2IGVsZW1lbnRzIG1heC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNy0xNDYzMworCitSZWZlcmVuY2UgdG8gdXBzdHJlYW0gcGF0Y2g6CitodHRwczovL2dpdC54aXBoLm9yZy8/cD12b3JiaXMuZ2l0O2E9Y29tbWl0ZGlmZjtoPTY2N2NlYjRhYWI2MGMxZjc0MDYwMTQzYmIyNGU1ZjQyN2IzY2NlNWYKKworU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorLS0tCisgbGliL2luZm8uYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYi9pbmZvLmMgYi9saWIvaW5mby5jCitpbmRleCBlNDQ3YTBjLi44MWI3NTU3IDEwMDY0NAorLS0tIGEvbGliL2luZm8uYworKysrIGIvbGliL2luZm8uYworQEAgLTU4Myw3ICs1ODMsNyBAQCBpbnQgdm9yYmlzX2FuYWx5c2lzX2hlYWRlcm91dCh2b3JiaXNfZHNwX3N0YXRlICp2LAorICAgb2dncGFja19idWZmZXIgb3BiOworICAgcHJpdmF0ZV9zdGF0ZSAqYj12LT5iYWNrZW5kX3N0YXRlOworIAorLSAgaWYoIWJ8fHZpLT5jaGFubmVsczw9MCl7CisrICBpZighYnx8dmktPmNoYW5uZWxzPD0wfHx2aS0+Y2hhbm5lbHM+MjU2KXsKKyAgICAgcmV0PU9WX0VGQVVMVDsKKyAgICAgZ290byBlcnJfb3V0OworICAgfQorLS0gCisyLjE2LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXMvQ1ZFLTIwMTgtNTE0Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE4LTUxNDYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ0MDUyYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE4LTUxNDYucGF0Y2gKQEAgLTAsMCArMSwxMDAgQEAKK0Zyb20gM2EwMTdmNTkxNDU3YmY2ZTgwMjMxYjU2M2JmODNlZTU4M2ZkYmNhOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRob21hcyBEYWVkZSA8ZGFlZGUwMDNAdW1uLmVkdT4KK0RhdGU6IFRodSwgMTUgTWFyIDIwMTggMTQ6MTU6MzEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gQ1ZFLTIwMTgtNTE0NjogUHJldmVudCBvdXQtb2YtYm91bmRzIHdyaXRlIGluIGNvZGVib29rCisgZGVjb2RpbmcuCisKK0NvZGVib29rcyB0aGF0IGFyZSBub3QgYW4gZXhhY3QgZGl2aXNvciBvZiB0aGUgcGFydGl0aW9uIHNpemUgYXJlIG5vdwordHJ1bmNhdGVkIHRvIGZpdCB3aXRoaW4gdGhlIHBhcnRpdGlvbi4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxOC01MTQ2CisKK1JlZmVyZW5jZSB0byB1cHN0cmVhbSBwYXRjaDoKK2h0dHBzOi8vZ2l0LnhpcGgub3JnLz9wPXZvcmJpcy5naXQ7YT1jb21taXRkaWZmO2g9NjY3Y2ViNGFhYjYwYzFmNzQwNjAxNDNiYjI0ZTVmNDI3YjNjY2U1ZgorCitTaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+CistLS0KKyBsaWIvY29kZWJvb2suYyB8IDQ4ICsrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYi9jb2RlYm9vay5jIGIvbGliL2NvZGVib29rLmMKK2luZGV4IDhiNzY2ZTguLjcwMjJmZDIgMTAwNjQ0CistLS0gYS9saWIvY29kZWJvb2suYworKysrIGIvbGliL2NvZGVib29rLmMKK0BAIC0zODcsNyArMzg3LDcgQEAgbG9uZyB2b3JiaXNfYm9va19kZWNvZGV2c19hZGQoY29kZWJvb2sgKmJvb2ssZmxvYXQgKmEsb2dncGFja19idWZmZXIgKmIsaW50IG4peworICAgICAgIHRbaV0gPSBib29rLT52YWx1ZWxpc3QrZW50cnlbaV0qYm9vay0+ZGltOworICAgICB9CisgICAgIGZvcihpPTAsbz0wO2k8Ym9vay0+ZGltO2krKyxvKz1zdGVwKQorLSAgICAgIGZvciAoaj0wO2o8c3RlcDtqKyspCisrICAgICAgZm9yIChqPTA7bytqPG4gJiYgajxzdGVwO2orKykKKyAgICAgICAgIGFbbytqXSs9dFtqXVtpXTsKKyAgIH0KKyAgIHJldHVybigwKTsKK0BAIC0zOTksNDEgKzM5OSwxMiBAQCBsb25nIHZvcmJpc19ib29rX2RlY29kZXZfYWRkKGNvZGVib29rICpib29rLGZsb2F0ICphLG9nZ3BhY2tfYnVmZmVyICpiLGludCBuKXsKKyAgICAgaW50IGksaixlbnRyeTsKKyAgICAgZmxvYXQgKnQ7CisgCistICAgIGlmKGJvb2stPmRpbT44KXsKKy0gICAgICBmb3IoaT0wO2k8bjspeworLSAgICAgICAgZW50cnkgPSBkZWNvZGVfcGFja2VkX2VudHJ5X251bWJlcihib29rLGIpOworLSAgICAgICAgaWYoZW50cnk9PS0xKXJldHVybigtMSk7CistICAgICAgICB0ICAgICA9IGJvb2stPnZhbHVlbGlzdCtlbnRyeSpib29rLT5kaW07CistICAgICAgICBmb3IgKGo9MDtqPGJvb2stPmRpbTspCistICAgICAgICAgIGFbaSsrXSs9dFtqKytdOworLSAgICAgIH0KKy0gICAgfWVsc2V7CistICAgICAgZm9yKGk9MDtpPG47KXsKKy0gICAgICAgIGVudHJ5ID0gZGVjb2RlX3BhY2tlZF9lbnRyeV9udW1iZXIoYm9vayxiKTsKKy0gICAgICAgIGlmKGVudHJ5PT0tMSlyZXR1cm4oLTEpOworLSAgICAgICAgdCAgICAgPSBib29rLT52YWx1ZWxpc3QrZW50cnkqYm9vay0+ZGltOworLSAgICAgICAgaj0wOworLSAgICAgICAgc3dpdGNoKChpbnQpYm9vay0+ZGltKXsKKy0gICAgICAgIGNhc2UgODoKKy0gICAgICAgICAgYVtpKytdKz10W2orK107CistICAgICAgICBjYXNlIDc6CistICAgICAgICAgIGFbaSsrXSs9dFtqKytdOworLSAgICAgICAgY2FzZSA2OgorLSAgICAgICAgICBhW2krK10rPXRbaisrXTsKKy0gICAgICAgIGNhc2UgNToKKy0gICAgICAgICAgYVtpKytdKz10W2orK107CistICAgICAgICBjYXNlIDQ6CistICAgICAgICAgIGFbaSsrXSs9dFtqKytdOworLSAgICAgICAgY2FzZSAzOgorLSAgICAgICAgICBhW2krK10rPXRbaisrXTsKKy0gICAgICAgIGNhc2UgMjoKKy0gICAgICAgICAgYVtpKytdKz10W2orK107CistICAgICAgICBjYXNlIDE6CistICAgICAgICAgIGFbaSsrXSs9dFtqKytdOworLSAgICAgICAgY2FzZSAwOgorLSAgICAgICAgICBicmVhazsKKy0gICAgICAgIH0KKy0gICAgICB9CisrICAgIGZvcihpPTA7aTxuOyl7CisrICAgICAgZW50cnkgPSBkZWNvZGVfcGFja2VkX2VudHJ5X251bWJlcihib29rLGIpOworKyAgICAgIGlmKGVudHJ5PT0tMSlyZXR1cm4oLTEpOworKyAgICAgIHQgICAgID0gYm9vay0+dmFsdWVsaXN0K2VudHJ5KmJvb2stPmRpbTsKKysgICAgICBmb3Ioaj0wO2k8biAmJiBqPGJvb2stPmRpbTspCisrICAgICAgICBhW2krK10rPXRbaisrXTsKKyAgICAgfQorICAgfQorICAgcmV0dXJuKDApOworQEAgLTQ3MSwxMiArNDQyLDEzIEBAIGxvbmcgdm9yYmlzX2Jvb2tfZGVjb2RldnZfYWRkKGNvZGVib29rICpib29rLGZsb2F0ICoqYSxsb25nIG9mZnNldCxpbnQgY2gsCisgICBsb25nIGksaixlbnRyeTsKKyAgIGludCBjaHB0cj0wOworICAgaWYoYm9vay0+dXNlZF9lbnRyaWVzPjApeworLSAgICBmb3IoaT1vZmZzZXQvY2g7aTwob2Zmc2V0K24pL2NoOyl7CisrICAgIGludCBtPShvZmZzZXQrbikvY2g7CisrICAgIGZvcihpPW9mZnNldC9jaDtpPG07KXsKKyAgICAgICBlbnRyeSA9IGRlY29kZV9wYWNrZWRfZW50cnlfbnVtYmVyKGJvb2ssYik7CisgICAgICAgaWYoZW50cnk9PS0xKXJldHVybigtMSk7CisgICAgICAgeworICAgICAgICAgY29uc3QgZmxvYXQgKnQgPSBib29rLT52YWx1ZWxpc3QrZW50cnkqYm9vay0+ZGltOworLSAgICAgICAgZm9yIChqPTA7ajxib29rLT5kaW07aisrKXsKKysgICAgICAgIGZvciAoaj0wO2k8bSAmJiBqPGJvb2stPmRpbTtqKyspeworICAgICAgICAgICBhW2NocHRyKytdW2ldKz10W2pdOworICAgICAgICAgICBpZihjaHB0cj09Y2gpeworICAgICAgICAgICAgIGNocHRyPTA7CistLSAKKzIuMTYuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpc18xLjMuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzXzEuMy41LmJiCmluZGV4IDU2YzViMGEuLjIwZjg4N2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzXzEuMy41LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzXzEuMy41LmJiCkBAIC0xMiw2ICsxMiw5IEBACiAKIFNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy54aXBoLm9yZy9yZWxlYXNlcy92b3JiaXMvJHtCUH0udGFyLnh6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLUNoZWNrLWZvci1jbGFuZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDYzMy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDYzMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC01MTQ2LnBhdGNoIFwKICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiMjhjYjI4MDk3YzA3YTczNWQ2YWY1NmU1OThlMWM5MGYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTRmOTRhOTUyN2ZmMGE4ODQ3N2JlMGE3MWMwYmFiMDlhNGMzZmViZTBlZDg3OGIyNDgyNDkwNmNkNGIwZTFkMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGcxMjMvbXBnMTIzXzEuMjUuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBnMTIzL21wZzEyM18xLjI1LjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyOTA2OWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBnMTIzL21wZzEyM18xLjI1LjEwLmJiCkBAIC0wLDAgKzEsNTEgQEAKK1NVTU1BUlkgPSAiQXVkaW8gZGVjb2RlciBmb3IgTVBFRy0xIExheWVyIDEvMi8zIgorREVTQ1JJUFRJT04gPSAiVGhlIGNvcmUgb2YgbXBnMTIzIGlzIGFuIE1QRUctMSBMYXllciAxLzIvMyBkZWNvZGluZyBsaWJyYXJ5LCB3aGljaCBjYW4gYmUgdXNlZCBieSBvdGhlciBwcm9ncmFtcy4gXAorbXBnMTIzIGFsc28gY29tZXMgd2l0aCBhIGNvbW1hbmQtbGluZSB0b29sIHdoaWNoIGNhbiBwbGF5YmFjayB1c2luZyBBTFNBLCBQdWxzZUF1ZGlvLCBPU1MsIGFuZCBzZXZlcmFsIG90aGVyIEFQSXMsIFwKK2FuZCBhbHNvIGNhbiB3cml0ZSB0aGUgZGVjb2RlZCBhdWRpbyB0byBXQVYuIgorSE9NRVBBR0UgPSAiaHR0cDovL21wZzEyMy5kZS8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9tcGcxMjMvYnVncy8iCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZTg2NzUzNjM4ZDNjZjI1MTI1MjhiOTkwNzliYzRmMyIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5tcGcxMjMuZGUvZG93bmxvYWQvJHtCUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlYTMyY2FhNjFkNDFkOGJlNzk3ZjBiMDRhMWI0M2FkOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2YzEzMzdhZWUyZTRiZjk5MzI5OTg1MWM3MGI3ZGIxMWZhZWM3ODUzMDNjZmNhM2E1YzNlYjVmMzI5YmE3MDIzIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworIyBUaGUgb3B0aW9ucyBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlIGZvciBjb25maWd1cmF0aW9uIHNjcmlwdC4KKyMgSWYgYm90aCBhbHNhIGFuZCBwdWxzZWF1ZGlvIGFyZSBzcGVjaWZpZWQgKGFzIGluIHRoZSBkZWZhdWx0IGRpc3RybyBmZWF0dXJlcykKKyMgcHVsc2VhdWRpbyB0YWtlcyBwcmVjZWRlbmNlLgorUEFDS0FHRUNPTkZJR19BTFNBID0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2Fsc2EnLCBkKX0iCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdWxzZWF1ZGlvJywgJ3B1bHNlYXVkaW8nLCAnJHtQQUNLQUdFQ09ORklHX0FMU0F9JywgZCl9IgorCitQQUNLQUdFQ09ORklHW2Fsc2FdID0gIi0td2l0aC1kZWZhdWx0LWF1ZGlvPWFsc2EsLGFsc2EtbGliIgorUEFDS0FHRUNPTkZJR1tlc2RdID0gIiwsZXNvdW5kIgorUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICIsLGphY2siCitQQUNLQUdFQ09ORklHW29wZW5hbF0gPSAiLCxvcGVuYWwtc29mdCIKK1BBQ0tBR0VDT05GSUdbcG9ydGF1ZGlvXSA9ICIsLHBvcnRhdWRpby12MTkiCitQQUNLQUdFQ09ORklHW3B1bHNlYXVkaW9dID0gIi0td2l0aC1kZWZhdWx0LWF1ZGlvPXB1bHNlLCxwdWxzZWF1ZGlvIgorUEFDS0FHRUNPTkZJR1tzZGxdID0gIiwsbGlic2RsIgorCisjIEZvbGxvd2luZyBhcmUgcG9zc2libGUgc291bmQgb3V0cHV0IG1vZHVsZXM6CisjIGFsc2EgYXJ0cyBjb3JlYXVkaW8gZHVtbXkgZXNkIGphY2sgbmFzIG9wZW5hbCBvczIgb3NzIHBvcnRhdWRpbyBwdWxzZSBzZGwgc25kaW8gc3VuIHRpbnlhbHNhIHdpbjMyIHdpbjMyX3dhc2FwaQorQVVESU9NT0RTICs9ICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAnYWxzYSBlc2QgamFjayBvcGVuYWwgcG9ydGF1ZGlvIHNkbCcsIGQpfSIKK0FVRElPTU9EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHVsc2VhdWRpbycsICdwdWxzZScsICcnLCBkKX0iCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgLS13aXRoLWF1ZGlvPScke0FVRElPTU9EU30nIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICduZW9uJywgJy0td2l0aC1jcHU9bmVvbicsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2FsdGl2ZWMnLCAnLS13aXRoLWNwdT1hbHRpdmVjJywgJycsIGQpfSBcCisiCisjIEZhaWxzIHRvIGJ1aWxkIHdpdGggdGh1bWItMSAocWVtdWFybSkKKyN8IHtzdGFuZGFyZCBpbnB1dH06IEFzc2VtYmxlciBtZXNzYWdlczoKKyN8IHtzdGFuZGFyZCBpbnB1dH06NDc6IEVycm9yOiBzZWxlY3RlZCBwcm9jZXNzb3IgZG9lcyBub3Qgc3VwcG9ydCBUaHVtYiBtb2RlIGBzbXVsbCByNSxyNixyNyxyNCcKKyN8IHtzdGFuZGFyZCBpbnB1dH06NDg6IEVycm9yOiBzaGlmdHMgaW4gQ01QL01PViBpbnN0cnVjdGlvbnMgYXJlIG9ubHkgc3VwcG9ydGVkIGluIHVuaWZpZWQgc3ludGF4IC0tIGBtb3YgcjUscjUsbHNyIzI0JworIy4uLgorI3wgbWFrZVszXTogKioqIFtlcXVhbGl6ZXIubG9dIEVycm9yIDEKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBnMTIzL21wZzEyM18xLjI1LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBnMTIzL21wZzEyM18xLjI1LjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiODYxOTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL21wZzEyMy9tcGcxMjNfMS4yNS42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotU1VNTUFSWSA9ICJBdWRpbyBkZWNvZGVyIGZvciBNUEVHLTEgTGF5ZXIgMS8yLzMiCi1ERVNDUklQVElPTiA9ICJUaGUgY29yZSBvZiBtcGcxMjMgaXMgYW4gTVBFRy0xIExheWVyIDEvMi8zIGRlY29kaW5nIGxpYnJhcnksIHdoaWNoIGNhbiBiZSB1c2VkIGJ5IG90aGVyIHByb2dyYW1zLiBcCi1tcGcxMjMgYWxzbyBjb21lcyB3aXRoIGEgY29tbWFuZC1saW5lIHRvb2wgd2hpY2ggY2FuIHBsYXliYWNrIHVzaW5nIEFMU0EsIFB1bHNlQXVkaW8sIE9TUywgYW5kIHNldmVyYWwgb3RoZXIgQVBJcywgXAotYW5kIGFsc28gY2FuIHdyaXRlIHRoZSBkZWNvZGVkIGF1ZGlvIHRvIFdBVi4iCi1IT01FUEFHRSA9ICJodHRwOi8vbXBnMTIzLmRlLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wL21wZzEyMy9idWdzLyIKLVNFQ1RJT04gPSAibXVsdGltZWRpYSIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFlODY3NTM2MzhkM2NmMjUxMjUyOGI5OTA3OWJjNGYzIgotCi1TUkNfVVJJID0gImh0dHBzOi8vd3d3Lm1wZzEyMy5kZS9kb3dubG9hZC8ke0JQfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gIjQzMzM2YmVmNzhmNjdjMmU2NmM0ZjZjMjg4Y2ExZWIzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBmMDQ1OGM5Yjg3Nzk5YmMyYzliZjk0NTUyNzljYzRkMzA1ZTI0NWRiNDNiNTFhMzllZjI3YWZlMDI1YzVhOGUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi0jIFRoZSBvcHRpb25zIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmUgZm9yIGNvbmZpZ3VyYXRpb24gc2NyaXB0LgotIyBJZiBib3RoIGFsc2EgYW5kIHB1bHNlYXVkaW8gYXJlIHNwZWNpZmllZCAoYXMgaW4gdGhlIGRlZmF1bHQgZGlzdHJvIGZlYXR1cmVzKQotIyBwdWxzZWF1ZGlvIHRha2VzIHByZWNlZGVuY2UuCi1QQUNLQUdFQ09ORklHX0FMU0EgPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWxzYScsIGQpfSIKLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B1bHNlYXVkaW8nLCAncHVsc2VhdWRpbycsICcke1BBQ0tBR0VDT05GSUdfQUxTQX0nLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbYWxzYV0gPSAiLS13aXRoLWRlZmF1bHQtYXVkaW89YWxzYSwsYWxzYS1saWIiCi1QQUNLQUdFQ09ORklHW2VzZF0gPSAiLCxlc291bmQiCi1QQUNLQUdFQ09ORklHW2phY2tdID0gIiwsamFjayIKLVBBQ0tBR0VDT05GSUdbb3BlbmFsXSA9ICIsLG9wZW5hbC1zb2Z0IgotUEFDS0FHRUNPTkZJR1twb3J0YXVkaW9dID0gIiwscG9ydGF1ZGlvLXYxOSIKLVBBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS13aXRoLWRlZmF1bHQtYXVkaW89cHVsc2UsLHB1bHNlYXVkaW8iCi1QQUNLQUdFQ09ORklHW3NkbF0gPSAiLCxsaWJzZGwiCi0KLSMgRm9sbG93aW5nIGFyZSBwb3NzaWJsZSBzb3VuZCBvdXRwdXQgbW9kdWxlczoKLSMgYWxzYSBhcnRzIGNvcmVhdWRpbyBkdW1teSBlc2QgamFjayBuYXMgb3BlbmFsIG9zMiBvc3MgcG9ydGF1ZGlvIHB1bHNlIHNkbCBzbmRpbyBzdW4gdGlueWFsc2Egd2luMzIgd2luMzJfd2FzYXBpCi1BVURJT01PRFMgKz0gIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdhbHNhIGVzZCBqYWNrIG9wZW5hbCBwb3J0YXVkaW8gc2RsJywgZCl9IgotQVVESU9NT0RTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ3B1bHNlJywgJycsIGQpfSIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1lbmFibGUtc2hhcmVkIFwKLSAgICAtLXdpdGgtYXVkaW89JyR7QVVESU9NT0RTfScgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ25lb24nLCAnLS13aXRoLWNwdT1uZW9uJywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnYWx0aXZlYycsICctLXdpdGgtY3B1PWFsdGl2ZWMnLCAnJywgZCl9IFwKLSIKLSMgRmFpbHMgdG8gYnVpbGQgd2l0aCB0aHVtYi0xIChxZW11YXJtKQotI3wge3N0YW5kYXJkIGlucHV0fTogQXNzZW1ibGVyIG1lc3NhZ2VzOgotI3wge3N0YW5kYXJkIGlucHV0fTo0NzogRXJyb3I6IHNlbGVjdGVkIHByb2Nlc3NvciBkb2VzIG5vdCBzdXBwb3J0IFRodW1iIG1vZGUgYHNtdWxsIHI1LHI2LHI3LHI0JwotI3wge3N0YW5kYXJkIGlucHV0fTo0ODogRXJyb3I6IHNoaWZ0cyBpbiBDTVAvTU9WIGluc3RydWN0aW9ucyBhcmUgb25seSBzdXBwb3J0ZWQgaW4gdW5pZmllZCBzeW50YXggLS0gYG1vdiByNSxyNSxsc3IjMjQnCi0jLi4uCi0jfCBtYWtlWzNdOiAqKiogW2VxdWFsaXplci5sb10gRXJyb3IgMQotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby5pbmMKaW5kZXggZmRiZjVhYi4uODE4OWE1NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby5pbmMKQEAgLTE2MCw3ICsxNjAsNyBAQAogfQogCiBVU0VSQUREX1BBQ0tBR0VTID0gInB1bHNlYXVkaW8tc2VydmVyIgotR1JPVVBBRERfUEFSQU1fcHVsc2VhdWRpby1zZXJ2ZXIgPSAicHVsc2UiCitHUk9VUEFERF9QQVJBTV9wdWxzZWF1ZGlvLXNlcnZlciA9ICItLXN5c3RlbSBwdWxzZSIKIFVTRVJBRERfUEFSQU1fcHVsc2VhdWRpby1zZXJ2ZXIgPSAiLS1zeXN0ZW0gLS1ob21lIC92YXIvcnVuL3B1bHNlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tbm8tY3JlYXRlLWhvbWUgLS1zaGVsbCAvYmluL2ZhbHNlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZ3JvdXBzIGF1ZGlvLHB1bHNlIC0tZ2lkIHB1bHNlIHB1bHNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLW1lbWZkLXdyYXBwZXJzLW9ubHktZGVmaW5lLW1lbWZkX2NyZWF0ZS1pZi1ub3QtYWxyZWEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDEtbWVtZmQtd3JhcHBlcnMtb25seS1kZWZpbmUtbWVtZmRfY3JlYXRlLWlmLW5vdC1hbHJlYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzkxZjM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLW1lbWZkLXdyYXBwZXJzLW9ubHktZGVmaW5lLW1lbWZkX2NyZWF0ZS1pZi1ub3QtYWxyZWEucGF0Y2gKQEAgLTAsMCArMSw2NiBAQAorRnJvbSAwY2I2NmMwYzVhYWZkNDhiNjNhNzU1ODYwNzQ2ZTcwYWZiMzMyYzhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorRGF0ZTogV2VkLCAyNCBKYW4gMjAxOCAwMzo1MTo0OSArMDIwMAorU3ViamVjdDogW1BBVENIXSBtZW1mZC13cmFwcGVyczogb25seSBkZWZpbmUgbWVtZmRfY3JlYXRlKCkgaWYgbm90IGFscmVhZHkKKyBkZWZpbmVkCisKK2dsaWJjIDIuMjcgaXMgdG8gYmUgcmVsZWFzZWQgc29vbiwgYW5kIGl0IHdpbGwgcHJvdmlkZSBtZW1mZF9jcmVhdGUoKS4KK0lmIGdsaWJjIHByb3ZpZGVzIHRoZSBmdW5jdGlvbiwgd2UgbXVzdCBub3QgZGVmaW5lIGl0IG91cnNlbHZlcywKK290aGVyd2lzZSBidWlsZGluZyBmYWlscyBkdWUgdG8gY29uZmxpY3QgYmV0d2VlbiB0aGUgdHdvIGltcGxlbWVudGF0aW9ucworb2YgdGhlIHNhbWUgZnVuY3Rpb24uCisKK0J1Z0xpbms6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDczMworLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9hdHRhY2htZW50LmNnaT9pZD0xMzY5MjddCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgIHwgMyArKysKKyBzcmMvcHVsc2Vjb3JlL21lbWZkLXdyYXBwZXJzLmggfCA3ICsrKystLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNzdiNWZmNS4uM2E3MWZkOCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNjA3LDYgKzYwNyw5IEBAIEFTX0lGKFt0ZXN0ICJ4JGVuYWJsZV9tZW1mZCIgPSAieHllcyIgJiYgdGVzdCAieCRIQVZFX01FTUZEIiA9ICJ4MCJdLAorICAgICBbQUNfTVNHX0VSUk9SKFsqKiogWW91ciBMaW51eCBrZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBtZW1mZCBzaGFyZWQgbWVtb3J5LgorICAgICAgICAgICAgICAgICAgICoqKiBVc2UgbGludXggdjMuMTcgb3IgaGlnaGVyIGZvciBzdWNoIGEgZmVhdHVyZS5dKV0pCisgCisrQVNfSUYoW3Rlc3QgIngkSEFWRV9NRU1GRCIgPSAieDEiXSwKKysgICAgQUNfQ0hFQ0tfRlVOQ1MoW21lbWZkX2NyZWF0ZV0pKQorKworIEFDX1NVQlNUKEhBVkVfTUVNRkQpCisgQU1fQ09ORElUSU9OQUwoW0hBVkVfTUVNRkRdLCBbdGVzdCAieCRIQVZFX01FTUZEIiA9IHgxXSkKKyBBU19JRihbdGVzdCAieCRIQVZFX01FTUZEIiA9ICJ4MSJdLCBBQ19ERUZJTkUoW0hBVkVfTUVNRkRdLCAxLCBbSGF2ZSBtZW1mZCBzaGFyZWQgbWVtb3J5Ll0pKQorZGlmZiAtLWdpdCBhL3NyYy9wdWxzZWNvcmUvbWVtZmQtd3JhcHBlcnMuaCBiL3NyYy9wdWxzZWNvcmUvbWVtZmQtd3JhcHBlcnMuaAoraW5kZXggM2JlZDliMi4uYzdhYWRmZCAxMDA2NDQKKy0tLSBhL3NyYy9wdWxzZWNvcmUvbWVtZmQtd3JhcHBlcnMuaAorKysrIGIvc3JjL3B1bHNlY29yZS9tZW1mZC13cmFwcGVycy5oCitAQCAtMjAsMTMgKzIwLDE0IEBACisgICBMaWNlbnNlIGFsb25nIHdpdGggUHVsc2VBdWRpbzsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICoqKi8KKyAKKy0jaWZkZWYgSEFWRV9NRU1GRAorKyNpZiBkZWZpbmVkKEhBVkVfTUVNRkQpICYmICFkZWZpbmVkKEhBVkVfTUVNRkRfQ1JFQVRFKQorIAorICNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorICNpbmNsdWRlIDxmY250bC5oPgorIAorIC8qCistICogTm8gZ2xpYmMgd3JhcHBlcnMgZXhpc3QgZm9yIG1lbWZkX2NyZWF0ZSgyKSwgc28gcHJvdmlkZSBvdXIgb3duLgorKyAqIEJlZm9yZSBnbGliYyB2ZXJzaW9uIDIuMjcgdGhlcmUgd2FzIG5vIHdyYXBwZXIgZm9yIG1lbWZkX2NyZWF0ZSgyKSwKKysgKiBzbyB3ZSBoYXZlIHRvIHByb3ZpZGUgb3VyIG93bi4KKyAgKgorICAqIEFsc28gZGVmaW5lIG1lbWZkIGZjbnRsIHNlYWxpbmcgbWFjcm9zLiBXaGlsZSB0aGV5IGFyZSBhbHJlYWR5CisgICogZGVmaW5lZCBpbiB0aGUga2VybmVsIGhlYWRlciBmaWxlIDxsaW51eC9mY250bC5oPiwgdGhhdCBmaWxlIGFzCitAQCAtNjMsNiArNjQsNiBAQCBzdGF0aWMgaW5saW5lIGludCBtZW1mZF9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgaW50IGZsYWdzKSB7CisgI2RlZmluZSBGX1NFQUxfV1JJVEUgICAgMHgwMDA4ICAvKiBwcmV2ZW50IHdyaXRlcyAqLworICNlbmRpZgorIAorLSNlbmRpZiAvKiBIQVZFX01FTUZEICovCisrI2VuZGlmIC8qIEhBVkVfTUVNRkQgJiYgIUhBVkVfTUVNRkRfQ1JFQVRFICovCisgCisgI2VuZGlmCistLSAKKzIuMTYuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8tZGlzY3Vzcy1pb2NoYW5uZWwtZG9uLXQtdXNlLXZhcmlhYmxlLWxlbmd0aC1hcnJheS1pbi11bmlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vcHVsc2VhdWRpby1kaXNjdXNzLWlvY2hhbm5lbC1kb24tdC11c2UtdmFyaWFibGUtbGVuZ3RoLWFycmF5LWluLXVuaW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWI1NmFiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vcHVsc2VhdWRpby1kaXNjdXNzLWlvY2hhbm5lbC1kb24tdC11c2UtdmFyaWFibGUtbGVuZ3RoLWFycmF5LWluLXVuaW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotRnJvbSBwYXRjaHdvcmsgU2F0IEZlYiAgNCAxMjoxOTowMSAyMDE3Ci1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9InV0Zi04IgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQKLVN1YmplY3Q6IFtwdWxzZWF1ZGlvLWRpc2N1c3NdIGlvY2hhbm5lbDogZG9uJ3QgdXNlIHZhcmlhYmxlIGxlbmd0aCBhcnJheSBpbgotIHVuaW9uCi1Gcm9tOiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+Ci1YLVBhdGNod29yay1JZDogMTM2ODg1Ci1NZXNzYWdlLUlkOiA8MjAxNzAyMDQxMjE5MDEuMTc0MjgtMS10YW51a0Bpa2kuZmk+Ci1UbzogcHVsc2VhdWRpby1kaXNjdXNzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwotRGF0ZTogU2F0LCAgNCBGZWIgMjAxNyAxNDoxOTowMSArMDIwMAotCi1DbGFuZyBkaWRuJ3QgbGlrZSB0aGUgdmFyaWFibGUgbGVuZ3RoIGFycmF5OgotCi1wdWxzZWNvcmUvaW9jaGFubmVsLmM6MzU4OjE3OiBlcnJvcjogZmllbGRzIG11c3QgaGF2ZSBhIGNvbnN0YW50IHNpemU6Ci0ndmFyaWFibGUgbGVuZ3RoIGFycmF5IGluIHN0cnVjdHVyZScgZXh0ZW5zaW9uIHdpbGwgbmV2ZXIgYmUgc3VwcG9ydGVkCi0gICAgICAgIHVpbnQ4X3QgZGF0YVtDTVNHX1NQQUNFKHNpemVvZihpbnQpICogbmZkKV07Ci0gICAgICAgICAgICAgICAgXgotCi1Db21taXQgNDUxZDFkNjc2MiBpbnRyb2R1Y2VkIHRoZSB2YXJpYWJsZSBsZW5ndGggYXJyYXkgaW4gb3JkZXIgdG8gaGF2ZQotdGhlIGNvcnJlY3QgdmFsdWUgaW4gbXNnX2NvbnRyb2xsZW4uIFRoaXMgcGF0Y2ggcmV2ZXJ0cyB0aGF0IGNvbW1pdCBhbmQKLXVzZXMgYSBkaWZmZXJlbnQgd2F5IHRvIGFjaGlldmUgdGhlIHNhbWUgZ29hbC4KLQotQnVnTGluazogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk0NTgKLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotIHNyYy9wdWxzZWNvcmUvaW9jaGFubmVsLmMgfCAxMCArKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9wdWxzZWNvcmUvaW9jaGFubmVsLmMgYi9zcmMvcHVsc2Vjb3JlL2lvY2hhbm5lbC5jCi1pbmRleCA4YWNlMjk3ZmYuLjg5NzMzNzUyMiAxMDA2NDQKLS0tLSBhL3NyYy9wdWxzZWNvcmUvaW9jaGFubmVsLmMKLSsrKyBiL3NyYy9wdWxzZWNvcmUvaW9jaGFubmVsLmMKLUBAIC0zNTUsNyArMzU1LDcgQEAgc3NpemVfdCBwYV9pb2NoYW5uZWxfd3JpdGVfd2l0aF9mZHMocGFfaW9jaGFubmVsKmlvLCBjb25zdCB2b2lkKmRhdGEsIHNpemVfdCBsLAotICAgICBzdHJ1Y3QgaW92ZWMgaW92OwotICAgICB1bmlvbiB7Ci0gICAgICAgICBzdHJ1Y3QgY21zZ2hkciBoZHI7Ci0tICAgICAgICB1aW50OF90IGRhdGFbQ01TR19TUEFDRShzaXplb2YoaW50KSAqIG5mZCldOwotKyAgICAgICAgdWludDhfdCBkYXRhW0NNU0dfU1BBQ0Uoc2l6ZW9mKGludCkgKiBNQVhfQU5DSUxfREFUQV9GRFMpXTsKLSAgICAgfSBjbXNnOwotIAotICAgICBwYV9hc3NlcnQoaW8pOwotQEAgLTM4Miw3ICszODIsMTMgQEAgc3NpemVfdCBwYV9pb2NoYW5uZWxfd3JpdGVfd2l0aF9mZHMocGFfaW9jaGFubmVsKmlvLCBjb25zdCB2b2lkKmRhdGEsIHNpemVfdCBsLAotICAgICBtaC5tc2dfaW92ID0gJmlvdjsKLSAgICAgbWgubXNnX2lvdmxlbiA9IDE7Ci0gICAgIG1oLm1zZ19jb250cm9sID0gJmNtc2c7Ci0tICAgIG1oLm1zZ19jb250cm9sbGVuID0gc2l6ZW9mKGNtc2cpOwotKwotKyAgICAvKiBJZiB3ZSBmb2xsb3dlZCB0aGUgZXhhbXBsZSBvbiB0aGUgY21zZyBtYW4gcGFnZSwgd2UnZCB1c2UKLSsgICAgICogc2l6ZW9mKGNtc2cuZGF0YSkgaGVyZSwgYnV0IGlmIG5mZCA8IE1BWF9BTkNJTF9EQVRBX0ZEUywgdGhlbiB0aGUgZGF0YQotKyAgICAgKiBidWZmZXIgaXMgbGFyZ2VyIHRoYW4gbmVlZGVkLCBhbmQgdGhlIGtlcm5lbCBkb2Vzbid0IGxpa2UgaXQgaWYgd2Ugc2V0Ci0rICAgICAqIG1zZ19jb250cm9sbGVuIHRvIGEgbGFyZ2VyIHRoYW4gbmVjZXNzYXJ5IHZhbHVlLiBUaGUgY29tbWl0IG1lc3NhZ2UgZm9yCi0rICAgICAqIGNvbW1pdCA0NTFkMWQ2NzYyIGNvbnRhaW5zIGEgbG9uZ2VyIGV4cGxhbmF0aW9uLiAqLwotKyAgICBtaC5tc2dfY29udHJvbGxlbiA9IENNU0dfU1BBQ0Uoc2l6ZW9mKGludCkgKiBuZmQpOwotIAotICAgICBpZiAoKHIgPSBzZW5kbXNnKGlvLT5vZmQsICZtaCwgTVNHX05PU0lHTkFMKSkgPj0gMCkgewotICAgICAgICAgaW8tPndyaXRhYmxlID0gaW8tPmh1bmd1cCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTM0YWZhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fMTAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLXJlcXVpcmUgcHVsc2VhdWRpby5pbmMKLQotU1JDX1VSSSA9ICJodHRwOi8vZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL3B1bHNlYXVkaW8vcmVsZWFzZXMvJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcGFkc3AtTWFrZS1pdC1jb21waWxlLW9uLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jbGllbnQtY29uZi1BZGQtYWxsb3ctYXV0b3NwYXduLWZvci1yb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3B1bHNlYXVkaW8tZGlzY3Vzcy1pb2NoYW5uZWwtZG9uLXQtdXNlLXZhcmlhYmxlLWxlbmd0aC1hcnJheS1pbi11bmlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuMDRfcHVsc2UgXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjQ5NTBkMjc5OWJmNTVhYjkxZjZiN2Y5OTBiN2YwOTcxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEzMTg2ODI0ZGU5ZjBkMjA5NWRlZDVkMGQwZGIwNDA1ZGM3MzEzMzk4M2MyZmJiMzcyOTE1NDdlMzc0NjJmNTciCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBta2RpciAtcCAke1N9L2xpYmx0ZGwKLSAgICBjcCAke1NUQUdJTkdfTElCRElSfS9saWJsdGRsKiAke1N9L2xpYmx0ZGwKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fMTEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fMTEuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDUzMDJkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMS4xLmJiCkBAIC0wLDAgKzEsMTUgQEAKK3JlcXVpcmUgcHVsc2VhdWRpby5pbmMKKworU1JDX1VSSSA9ICJodHRwOi8vZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL3B1bHNlYXVkaW8vcmVsZWFzZXMvJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcGFkc3AtTWFrZS1pdC1jb21waWxlLW9uLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jbGllbnQtY29uZi1BZGQtYWxsb3ctYXV0b3NwYXduLWZvci1yb290LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy4wNF9wdWxzZSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lbWZkLXdyYXBwZXJzLW9ubHktZGVmaW5lLW1lbWZkX2NyZWF0ZS1pZi1ub3QtYWxyZWEucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMzkwZGUzODIzMWQ1Y2RkNmI0M2FkYTg5MzllYjc0ZjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjI1MjFjNTI1YTc3MTY2MTg5ZTNjYjkxNjlmNzVjMmVlMmI4MmZhM2ZjZjk0NzYwMjRmYmMyYzNhNmM5Y2Q5ZSIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIG1rZGlyIC1wICR7U30vbGlibHRkbAorICAgIGNwICR7U1RBR0lOR19MSUJESVJ9L2xpYmx0ZGwqICR7U30vbGlibHRkbAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8wLjYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJwL2xpYndlYnBfMC42LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNTY1ZTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8wLjYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLVNVTU1BUlkgPSAiV2ViUCBpcyBhbiBpbWFnZSBmb3JtYXQgZGVzaWduZWQgZm9yIHRoZSBXZWIiCi1ERVNDUklQVElPTiA9ICJXZWJQIGlzIGEgbWV0aG9kIG9mIGxvc3N5IGFuZCBsb3NzbGVzcyBjb21wcmVzc2lvbiB0aGF0IGNhbiBiZSBcCi0gICAgICAgICAgICAgICB1c2VkIG9uIGEgbGFyZ2UgdmFyaWV0eSBvZiBwaG90b2dyYXBoaWMsIHRyYW5zbHVjZW50IGFuZCBcCi0gICAgICAgICAgICAgICBncmFwaGljYWwgaW1hZ2VzIGZvdW5kIG9uIHRoZSB3ZWIuIFRoZSBkZWdyZWUgb2YgbG9zc3kgXAotICAgICAgICAgICAgICAgY29tcHJlc3Npb24gaXMgYWRqdXN0YWJsZSBzbyBhIHVzZXIgY2FuIGNob29zZSB0aGUgdHJhZGUtb2ZmIFwKLSAgICAgICAgICAgICAgIGJldHdlZW4gZmlsZSBzaXplIGFuZCBpbWFnZSBxdWFsaXR5LiBXZWJQIHR5cGljYWxseSBhY2hpZXZlcyBcCi0gICAgICAgICAgICAgICBhbiBhdmVyYWdlIG9mIDMwJSBtb3JlIGNvbXByZXNzaW9uIHRoYW4gSlBFRyBhbmQgSlBFRyAyMDAwLCBcCi0gICAgICAgICAgICAgICB3aXRob3V0IGxvc3Mgb2YgaW1hZ2UgcXVhbGl0eS4iCi1IT01FUEFHRSA9ICJodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9zcGVlZC93ZWJwLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02ZThkZWU5MzJjMjZmMmRhYjUwM2FiZjcwYzk2ZDhiYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9QQVRFTlRTO21kNT1jNjkyNmQwY2IwN2QyOTZmODg2YWI2ZTBjYzVhODViNyIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLndlYm1wcm9qZWN0Lm9yZy9yZWxlYXNlcy93ZWJwLyR7QlB9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIxOWE2ZTkyNmFiMTcyMTI2OGRmMDMxNjFiODRiYjRhMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjOTI4MTE5MjI5ZDRmOGYzNWUyMDExM2ZmYjYxZjI4MWVkYTI2NzYzNGE4ZGMyMjg1YWY0YjBlZTI3Y2YyYjQwIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy53ZWJtcHJvamVjdC5vcmcvcmVsZWFzZXMvd2VicC9pbmRleC5odG1sIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWRpc2FibGUtZXhwZXJpbWVudGFsIFwKLSAgICAtLWRpc2FibGUtd2ljIFwKLSAgICAtLWVuYWJsZS1saWJ3ZWJwbXV4IFwKLSAgICAtLWVuYWJsZS1saWJ3ZWJwZGVtdXggXAotICAgIC0tZW5hYmxlLXRocmVhZGluZyBcCi0iCi0jIERvIG5vdCB0cnVzdCBjb25maWd1cmUgdG8gZGV0ZXJtaW5lIGlmIG5lb24gaXMgYXZhaWxhYmxlLgotIwotRVhUUkFfT0VDT05GX2FwcGVuZF9hcm0gPSAiIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsIm5lb24iLCItLWVuYWJsZS1uZW9uIiwiLS1kaXNhYmxlLW5lb24iLGQpfSBcCi0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi0KLSMgbGlid2VicGRlY29kZXIgaXMgYSBzdWJzZXQgb2YgbGlid2VicCwgZG9uJ3QgYnVpbGQgaXQgdW5sZXNzIHJlcXVlc3RlZAotUEFDS0FHRUNPTkZJR1tkZWNvZGVyXSA9ICItLWVuYWJsZS1saWJ3ZWJwZGVjb2RlciwtLWRpc2FibGUtbGlid2VicGRlY29kZXIiCi0KLSMgQXBwbHkgZm9yIGV4YW1wbGVzIHByb2dyYW1zOiBjd2VicCBhbmQgZHdlYnAKLVBBQ0tBR0VDT05GSUdbZ2lmXSA9ICItLWVuYWJsZS1naWYsLS1kaXNhYmxlLWdpZixnaWZsaWIiCi1QQUNLQUdFQ09ORklHW2pwZWddID0gIi0tZW5hYmxlLWpwZWcsLS1kaXNhYmxlLWpwZWcsanBlZyIKLVBBQ0tBR0VDT05GSUdbcG5nXSA9ICItLWVuYWJsZS1wbmcsLS1kaXNhYmxlLXBuZywsbGlicG5nIgotUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItLWVuYWJsZS10aWZmLC0tZGlzYWJsZS10aWZmLHRpZmYiCi0KLSMgQXBwbHkgb25seSBmb3IgZXhhbXBsZSBwcm9ncmFtIHZ3ZWJwCi1QQUNLQUdFQ09ORklHW2dsXSA9ICItLWVuYWJsZS1nbCwtLWRpc2FibGUtZ2wsbWVzYS1nbHV0IgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZ2lmMndlYnAiCi0KLURFU0NSSVBUSU9OXyR7UE59LWdpZjJ3ZWJwID0gIlNpbXBsZSB0b29sIHRvIGNvbnZlcnQgYW5pbWF0ZWQgR0lGcyB0byBXZWJQIgotRklMRVNfJHtQTn0tZ2lmMndlYnAgPSAiJHtiaW5kaXJ9L2dpZjJ3ZWJwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8wLjYuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJwL2xpYndlYnBfMC42LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTlkNGQ3OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJwL2xpYndlYnBfMC42LjEuYmIKQEAgLTAsMCArMSw1NCBAQAorU1VNTUFSWSA9ICJXZWJQIGlzIGFuIGltYWdlIGZvcm1hdCBkZXNpZ25lZCBmb3IgdGhlIFdlYiIKK0RFU0NSSVBUSU9OID0gIldlYlAgaXMgYSBtZXRob2Qgb2YgbG9zc3kgYW5kIGxvc3NsZXNzIGNvbXByZXNzaW9uIHRoYXQgY2FuIGJlIFwKKyAgICAgICAgICAgICAgIHVzZWQgb24gYSBsYXJnZSB2YXJpZXR5IG9mIHBob3RvZ3JhcGhpYywgdHJhbnNsdWNlbnQgYW5kIFwKKyAgICAgICAgICAgICAgIGdyYXBoaWNhbCBpbWFnZXMgZm91bmQgb24gdGhlIHdlYi4gVGhlIGRlZ3JlZSBvZiBsb3NzeSBcCisgICAgICAgICAgICAgICBjb21wcmVzc2lvbiBpcyBhZGp1c3RhYmxlIHNvIGEgdXNlciBjYW4gY2hvb3NlIHRoZSB0cmFkZS1vZmYgXAorICAgICAgICAgICAgICAgYmV0d2VlbiBmaWxlIHNpemUgYW5kIGltYWdlIHF1YWxpdHkuIFdlYlAgdHlwaWNhbGx5IGFjaGlldmVzIFwKKyAgICAgICAgICAgICAgIGFuIGF2ZXJhZ2Ugb2YgMzAlIG1vcmUgY29tcHJlc3Npb24gdGhhbiBKUEVHIGFuZCBKUEVHIDIwMDAsIFwKKyAgICAgICAgICAgICAgIHdpdGhvdXQgbG9zcyBvZiBpbWFnZSBxdWFsaXR5LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3NwZWVkL3dlYnAvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZlOGRlZTkzMmMyNmYyZGFiNTAzYWJmNzBjOTZkOGJiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL1BBVEVOVFM7bWQ1PWM2OTI2ZDBjYjA3ZDI5NmY4ODZhYjZlMGNjNWE4NWI3IgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMud2VibXByb2plY3Qub3JnL3JlbGVhc2VzL3dlYnAvJHtCUH0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gImI0OWNlOWMzZTNlOWFjYWU0ZDkxYmNhNDRiYjg1YTcyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA2NTAzYzc4MmQ5ZjE1MWJhYTMyNTU5MWMzNTc5YzY4ZWQ3MDBmZmM2MmQ0ZjVhMzJmZWVhZDBmZjAxN2Q4YWIiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLndlYm1wcm9qZWN0Lm9yZy9yZWxlYXNlcy93ZWJwL2luZGV4Lmh0bWwiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZGlzYWJsZS1leHBlcmltZW50YWwgXAorICAgIC0tZGlzYWJsZS13aWMgXAorICAgIC0tZW5hYmxlLWxpYndlYnBtdXggXAorICAgIC0tZW5hYmxlLWxpYndlYnBkZW11eCBcCisgICAgLS1lbmFibGUtdGhyZWFkaW5nIFwKKyIKKyMgRG8gbm90IHRydXN0IGNvbmZpZ3VyZSB0byBkZXRlcm1pbmUgaWYgbmVvbiBpcyBhdmFpbGFibGUuCisjCitFWFRSQV9PRUNPTkZfYXBwZW5kX2FybSA9ICIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwibmVvbiIsIi0tZW5hYmxlLW5lb24iLCItLWRpc2FibGUtbmVvbiIsZCl9IFwKKyIKKworaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKKworIyBsaWJ3ZWJwZGVjb2RlciBpcyBhIHN1YnNldCBvZiBsaWJ3ZWJwLCBkb24ndCBidWlsZCBpdCB1bmxlc3MgcmVxdWVzdGVkCitQQUNLQUdFQ09ORklHW2RlY29kZXJdID0gIi0tZW5hYmxlLWxpYndlYnBkZWNvZGVyLC0tZGlzYWJsZS1saWJ3ZWJwZGVjb2RlciIKKworIyBBcHBseSBmb3IgZXhhbXBsZXMgcHJvZ3JhbXM6IGN3ZWJwIGFuZCBkd2VicAorUEFDS0FHRUNPTkZJR1tnaWZdID0gIi0tZW5hYmxlLWdpZiwtLWRpc2FibGUtZ2lmLGdpZmxpYiIKK1BBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyxqcGVnIgorUEFDS0FHRUNPTkZJR1twbmddID0gIi0tZW5hYmxlLXBuZywtLWRpc2FibGUtcG5nLCxsaWJwbmciCitQQUNLQUdFQ09ORklHW3RpZmZdID0gIi0tZW5hYmxlLXRpZmYsLS1kaXNhYmxlLXRpZmYsdGlmZiIKKworIyBBcHBseSBvbmx5IGZvciBleGFtcGxlIHByb2dyYW0gdndlYnAKK1BBQ0tBR0VDT05GSUdbZ2xdID0gIi0tZW5hYmxlLWdsLC0tZGlzYWJsZS1nbCxtZXNhLWdsdXQiCisKK1BBQ0tBR0VTID0rICIke1BOfS1naWYyd2VicCIKKworREVTQ1JJUFRJT05fJHtQTn0tZ2lmMndlYnAgPSAiU2ltcGxlIHRvb2wgdG8gY29udmVydCBhbmltYXRlZCBHSUZzIHRvIFdlYlAiCitGSUxFU18ke1BOfS1naWYyd2VicCA9ICIke2JpbmRpcn0vZ2lmMndlYnAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0L2Rvbi10LWRlZmF1bHQtdG8tY29ydGV4LWE5LXdpdGgtbmVvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjQvZG9uLXQtZGVmYXVsdC10by1jb3J0ZXgtYTktd2l0aC1uZW9uLnBhdGNoCmluZGV4IDczZjJhYWMuLjA2NWUzYjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjQvZG9uLXQtZGVmYXVsdC10by1jb3J0ZXgtYTktd2l0aC1uZW9uLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjQvZG9uLXQtZGVmYXVsdC10by1jb3J0ZXgtYTktd2l0aC1uZW9uLnBhdGNoCkBAIC0xLDIwICsxLDMzIEBACi0tbWFyY2ggZmxhZyBpcyBub3QgaW4gQ0ZMQUdTIHNvIHRoaXMgd2lsbCBhbHdheXMgZGVmYXVsdCB0byAtbWNwdT1jb3J0ZXgtYTgKLS1tZnB1PW5lb24uCitGcm9tIGE3MmJmNDk5YTA2NzRmYzc1ZWVkZjE1MDA4YjQyNGUyOGY2N2U0YmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+CitEYXRlOiBGcmksIDIgRmViIDIwMTggMTU6MTA6MDggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gZG9udCBkZWZhdWx0IHRvIGNvcnRleC1hOSB3aXRoIG5lb24KKworLW1hcmNoIGZsYWcgaXMgbm90IGluIENGTEFHUyBzbyB0aGlzIHdpbGwgYWx3YXlzIGRlZmF1bHQgdG8KKyAtbWNwdT1jb3J0ZXgtYTggLW1mcHU9bmVvbi4KIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKIFNpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgorLS0tCisgY29uZmlndXJlIHwgMyAtLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggOWQxNTg2Yy4uMzEwOWVjNCAxMDA3NTUKK2luZGV4IDBlM2VmMjMuLjk1NWI5OTMgMTAwNzU1CiAtLS0gYS9jb25maWd1cmUKICsrKyBiL2NvbmZpZ3VyZQotQEAgLTg3NCw5ICs4NzQsNiBAQCBpZiBbICRhc20gPSBhdXRvIC1hIFwoICRBUkNIID0gWDg2IC1vICRBUkNIID0gWDg2XzY0IFwpIF0gOyB0aGVuCitAQCAtOTExLDkgKzkxMSw2IEBAIGlmIFsgJGFzbSA9IGF1dG8gLWEgXCggJEFSQ0ggPSBYODYgLW8gJEFSQ0ggPSBYODZfNjQgXCkgXSA7IHRoZW4KICBmaQogIAogIGlmIFsgJGFzbSA9IGF1dG8gLWEgJEFSQ0ggPSBBUk0gXSA7IHRoZW4KIC0gICAgIyBzZXQgZmxhZ3Mgc28gbmVvbiBpcyBidWlsdCBieSBkZWZhdWx0Ci0tICAgIGVjaG8gJENGTEFHUyB8IGdyZXAgLUVxICcoLW1jcHV8LW1hcmNofC1tZnB1KScgfHwgQ0ZMQUdTPSIkQ0ZMQUdTIC1tY3B1PWNvcnRleC1hOCAtbWZwdT1uZW9uIgorLSAgICBbICRjb21waWxlciA9PSBDTCBdIHx8IGVjaG8gJENGTEFHUyB8IGdyZXAgLUVxICcoLW1jcHV8LW1hcmNofC1tZnB1KScgfHwgQ0ZMQUdTPSIkQ0ZMQUdTIC1tY3B1PWNvcnRleC1hOCAtbWZwdT1uZW9uIgogLQotICAgICBpZiAgY2NfY2hlY2sgJycgJycgJ19fYXNtX18oInJldiBpcCwgaXAiKTsnIDsgdGhlbiAgICAgIGRlZmluZSBIQVZFX0FSTVY2Ci0gICAgICAgICBjY19jaGVjayAnJyAnJyAnX19hc21fXygibW92dCByMCwgIzAiKTsnICAgICAgICAgJiYgZGVmaW5lIEhBVkVfQVJNVjZUMgotICAgICAgICAgY2NfY2hlY2sgJycgJycgJ19fYXNtX18oInZhZGQuaTE2IHEwLCBxMCwgcTAiKTsnICYmIGRlZmluZSBIQVZFX05FT04KKyAgICAgY2NfY2hlY2sgJycgJycgJ19fYXNtX18oImFkZCByMCwgcjEsIHIyIik7JyAmJiBkZWZpbmUgSEFWRV9BUk1fSU5MSU5FX0FTTQorICAgICBpZiBbICRjb21waWxlciA9IENMIF0gJiYgY3BwX2NoZWNrICcnICcnICdkZWZpbmVkKF9NX0FSTSkgJiYgX01fQVJNID49IDcnIDsgdGhlbgorICAgICAgICAgZGVmaW5lIEhBVkVfQVJNVjYKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYgppbmRleCBjNTQ3NmM3Li5jNDQ1ZDE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYgpAQCAtNiwxNyArNiwxNyBAQAogTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCiAKLURFUEVORFMgPSAieWFzbS1uYXRpdmUiCitERVBFTkRTID0gIm5hc20tbmF0aXZlIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbWlycm9yL3gyNjQ7YnJhbmNoPXN0YWJsZSBcCiAgICAgICAgICAgIGZpbGU6Ly9kb24tdC1kZWZhdWx0LXRvLWNvcnRleC1hOS13aXRoLW5lb24ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vRml4LVgzMi1idWlsZC1ieS1kaXNhYmxpbmctYXNtLnBhdGNoIFwKICAgICAgICAgICAgIgotVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCitVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCiAKLVNSQ1JFViA9ICIyYjc0MWY4MWU1MWY5MmQwNTNkODdhNDlmNTlmZjEwMjY1NTNhMGY2IgorU1JDUkVWID0gImU5YTU5MDNlZGY4Y2E1OWVmMjBlNmY0ODk0YzE5NmYxMzVhZjczNWUiCiAKLVBWID0gInIyNzMxK2dpdCR7U1JDUFZ9IgorUFYgPSAicjI4NTQrZ2l0JHtTUkNQVn0iCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKQEAgLTQzLDYgKzQzLDggQEAKICAgICAgICAgICAgICAgICcKIAogZG9fY29uZmlndXJlKCkgeworICAgIGluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLmd1ZXNzICR7U30KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nbnUtY29uZmlnL2NvbmZpZy5zdWIgJHtTfQogICAgIC4vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQogfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXJ0L2ltYWdlcy9jb3JlLWltYWdlLXJ0LXNkay5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvaW1hZ2VzL2NvcmUtaW1hZ2UtcnQtc2RrLmJiCmluZGV4IDdjMWU1YmYuLjBmN2YwOTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvaW1hZ2VzL2NvcmUtaW1hZ2UtcnQtc2RrLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvaW1hZ2VzL2NvcmUtaW1hZ2UtcnQtc2RrLmJiCkBAIC01LDcgKzUsNyBAQAogIyB0byBidWlsZCBtdWx0aXBsZSB2aXJ0dWFsL2tlcm5lbCBwcm92aWRlcnMuCiBweXRob24gKCkgewogICAgIGlmIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSAibGludXgteW9jdG8tcnQiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJTZXQgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIHRvIGxpbnV4LXlvY3RvLXJ0IHRvIGVuYWJsZSBpdCIpCiB9CiAKIERFU0NSSVBUSU9OID0gIlNtYWxsIGltYWdlIGNhcGFibGUgb2YgYm9vdGluZyBhIGRldmljZSB3aXRoIGEgdGVzdCBzdWl0ZSBhbmQgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9pbWFnZXMvY29yZS1pbWFnZS1ydC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvaW1hZ2VzL2NvcmUtaW1hZ2UtcnQuYmIKaW5kZXggZDhiYjA0YS4uOWNiOTNiMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9pbWFnZXMvY29yZS1pbWFnZS1ydC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXJ0L2ltYWdlcy9jb3JlLWltYWdlLXJ0LmJiCkBAIC01LDcgKzUsNyBAQAogIyB0byBidWlsZCBtdWx0aXBsZSB2aXJ0dWFsL2tlcm5lbCBwcm92aWRlcnMuCiBweXRob24gKCkgewogICAgIGlmIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSAibGludXgteW9jdG8tcnQiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJTZXQgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIHRvIGxpbnV4LXlvY3RvLXJ0IHRvIGVuYWJsZSBpdCIpCiB9CiAKIERFU0NSSVBUSU9OID0gIkEgc21hbGwgaW1hZ2UganVzdCBjYXBhYmxlIG9mIGFsbG93aW5nIGEgZGV2aWNlIHRvIGJvb3QgcGx1cyBhIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvaHdsYXRkZXRlY3RfMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9od2xhdGRldGVjdF8xLjEuYmIKaW5kZXggMDEyYjJkZC4uNWY2MWM0ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9od2xhdGRldGVjdF8xLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9od2xhdGRldGVjdF8xLjEuYmIKQEAgLTIyLDUgKzIyLDUgQEAKIH0KIAogRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vZGlzdC1wYWNrYWdlcy9od2xhdGRldGVjdC5weSIKLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbjMgcHl0aG9uMy1zdWJwcm9jZXNzIHB5dGhvbjMtdGV4dHV0aWxzIgorUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1jb3JlICIKIFJSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUtaHdsYXQtZGV0ZWN0b3IiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzXzEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHNfMS4xLmJiCmluZGV4IDQzMzZjNTAuLjQ5NmYwNGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHNfMS4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHNfMS4xLmJiCkBAIC0yNiw2ICsyNiw2IEBACiAgICAgICAgIGNwICR7V09SS0RJUn0vcnRfYm1hcmsucHkgJHtEfSR7UFRFU1RfUEFUSH0KIH0KIAotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBzdHJlc3MgcHl0aG9uMyBweXRob24zLXN1YnByb2Nlc3MgcHl0aG9uMy1tdWx0aXByb2Nlc3NpbmcgcHl0aG9uMy1kYXRldGltZSBweXRob24zLXJlIHB5dGhvbjMtbGFuZyBweXRob24zLW1pc2MiCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIHN0cmVzcyBweXRob24zIHB5dGhvbjMtbXVsdGlwcm9jZXNzaW5nIHB5dGhvbjMtZGF0ZXRpbWUgcHl0aG9uMy1taXNjIgogCiBGSUxFU18ke1BOfSArPSAiJHtwcmVmaXh9L3NyYy9iYWNrZmlyZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXgxMS1zYXRvLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUteDExLXNhdG8uYmIKaW5kZXggOTdjY2VkNy4uMjI0NDI4ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUteDExLXNhdG8uYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUteDExLXNhdG8uYmIKQEAgLTQ2LDcgKzQ2LDcgQEAKIFNVTU1BUllfJHtQTn0tYXBwcyA9ICJTYXRvIGRlc2t0b3AgLSBhcHBsaWNhdGlvbnMiCiBSREVQRU5EU18ke1BOfS1hcHBzID0gIlwKICAgICBsM2FmcGFkIFwKLSAgICBnc3QtcGxheWVyIFwKKyAgICBnc3QtZXhhbXBsZXMgXAogICAgIG1hdGNoYm94LXRlcm1pbmFsIFwKICAgICBzYXRvLXNjcmVlbnNob3QgXAogICAgICR7RklMRU1BTkFHRVJ9IFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wY21hbmZtL3BjbWFuZm1fMS4yLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcGNtYW5mbS9wY21hbmZtXzEuMi41LmJiCmluZGV4IDc1ZmY3NzMuLjQxMjdhMDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wY21hbmZtL3BjbWFuZm1fMS4yLjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BjbWFuZm0vcGNtYW5mbV8xLjIuNS5iYgpAQCAtOSw5ICs5LDYgQEAKIFNFQ1RJT04gPSAieDExIgogREVQRU5EUyA9ICJndGsrMyBzdGFydHVwLW5vdGlmaWNhdGlvbiBsaWJmbSBpbnRsdG9vbC1uYXRpdmUgZ2V0dGV4dC1uYXRpdmUgZ2xpYi0yLjAtbmF0aXZlIgogCi0KLUNPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0Lip8aS44Ni4qfGFhcmNoNjQuKnxhcm0uKnxtaXBzLip8cG93ZXJwYy4qfHNoLiopLShsaW51eHxmcmVlYnNkLiopJwotCiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wY21hbmZtL3BjbWFuZm0tJHtQVn0udGFyLnh6IFwKIAkgICBmaWxlOi8vZ25vbWUtZnMtZGlyZWN0b3J5LnBuZyBcCiAJICAgZmlsZTovL2dub21lLWZzLXJlZ3VsYXIucG5nIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzLzAwMDEtQ2xhcmlmeS1jb25kaXRpb25zLXRvLWF2b2lkLWNvbXBpbGVyLWVycm9ycy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzLzAwMDEtQ2xhcmlmeS1jb25kaXRpb25zLXRvLWF2b2lkLWNvbXBpbGVyLWVycm9ycy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODlhYTE1OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy8wMDAxLUNsYXJpZnktY29uZGl0aW9ucy10by1hdm9pZC1jb21waWxlci1lcnJvcnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1Gcm9tIDcyZjJlOTA0M2VmNTA5OTkyZGZhNjE3OTE2MzhkYjg3YmYwYWUzN2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCA2IERlYyAyMDE2IDAxOjIwOjAwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIENsYXJpZnkgY29uZGl0aW9ucyB0byBhdm9pZCBjb21waWxlciBlcnJvcnMKLQotRml4IGVycm9ycyBwb2ludGVkIG91dCBieSBjbGFuZwotCi1lcnJvcjogbG9naWNhbCBub3QgaXMgb25seSBhcHBsaWVkIHRvIHRoZSBsZWZ0IGhhbmQgc2lkZSBvZiB0aGlzIGJpdHdpc2Ugb3BlcmF0b3IgWy1XZXJyb3IsLVdsb2dpY2FsLW5vdC1wYXJlbnRoZXNlc10KLXwgICAgICAgICBpZiAob25seV9pbW11dGFibGUgJiYgIWNvcHktPmZsYWdzW2ldICYgRkxBR19JTU1VVEFCTEUpIGNvbnRpbnVlOwotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLSBzaWducG9zdC5jIHwgMiArLQotIHRyYWNrcy5jICAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zaWducG9zdC5jIGIvc2lnbnBvc3QuYwotaW5kZXggYWEyZTEzYS4uMmUyZGZmMiAxMDA2NDQKLS0tLSBhL3NpZ25wb3N0LmMKLSsrKyBiL3NpZ25wb3N0LmMKLUBAIC0yODQsNyArMjg0LDcgQEAgc3RhdGljIGludCBjaGVja19udW1zKGdhbWVfc3RhdGUgKm9yaWcsIGdhbWVfc3RhdGUgKmNvcHksIGludCBvbmx5X2ltbXV0YWJsZSkKLSAgICAgaW50IGksIHJldCA9IDE7Ci0gICAgIGFzc2VydChjb3B5LT5uID09IG9yaWctPm4pOwotICAgICBmb3IgKGkgPSAwOyBpIDwgY29weS0+bjsgaSsrKSB7Ci0tICAgICAgICBpZiAob25seV9pbW11dGFibGUgJiYgIWNvcHktPmZsYWdzW2ldICYgRkxBR19JTU1VVEFCTEUpIGNvbnRpbnVlOwotKyAgICAgICAgaWYgKG9ubHlfaW1tdXRhYmxlICYmICEoY29weS0+ZmxhZ3NbaV0gJiBGTEFHX0lNTVVUQUJMRSkpIGNvbnRpbnVlOwotICAgICAgICAgYXNzZXJ0KGNvcHktPm51bXNbaV0gPj0gMCk7Ci0gICAgICAgICBhc3NlcnQoY29weS0+bnVtc1tpXSA8PSBjb3B5LT5uKTsKLSAgICAgICAgIGlmIChjb3B5LT5udW1zW2ldICE9IG9yaWctPm51bXNbaV0pIHsKLWRpZmYgLS1naXQgYS90cmFja3MuYyBiL3RyYWNrcy5jCi1pbmRleCA1YjI3MzUwLi5jYTQ0Y2UxIDEwMDY0NAotLS0tIGEvdHJhY2tzLmMKLSsrKyBiL3RyYWNrcy5jCi1AQCAtMTA3Miw3ICsxMDcyLDcgQEAgc3RhdGljIGludCBzb2x2ZV9jaGVja19zaW5nbGVfc3ViKGdhbWVfc3RhdGUgKnN0YXRlLCBpbnQgc2ksIGludCBpZCwgaW50IG4sCi0gICAgICAgICB4ID0gaSV3OwotICAgICAgICAgeSA9IGkvdzsKLSAgICAgICAgIGlmIChhYnMob3gteCkgPiAxIHx8IGFicyhveS15KSA+IDEpIHsKLS0gICAgICAgICAgICBpZiAoIXN0YXRlLT5zZmxhZ3NbaV0gJiBTX1RSQUNLKQotKyAgICAgICAgICAgIGlmICghKHN0YXRlLT5zZmxhZ3NbaV0gJiBTX1RSQUNLKSkKLSAgICAgICAgICAgICAgICAgZGlkICs9IHNvbHZlX3NldF9zZmxhZyhzdGF0ZSwgeCwgeSwgU19OT1RSQUNLLCB3aGF0KTsKLSAgICAgICAgIH0KLSAgICAgfQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9wdXp6bGVzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiCmluZGV4IGRlY2QyYTguLmJmZDgxNzcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiCkBAIC03LDE4ICs3LDE3IEBACiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTMzYmNkNGJjZThmM2MxOTdmMmFlZmJkYmQyZDI5OWJjIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9ZGE2MTEwZDRlZDEyMjVhMjg3ZWFiMmJmMGFjMDE5M2IiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnRhcnRhcnVzLm9yZy9zaW1vbi9wdXp6bGVzLmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtY29tcGlsaW5nLWZhaWx1cmUtd2l0aC1vcHRpb24tZy1PLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLWxhYnMtaW5zdGVhZC1vZi1hYnMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1wYWxpc2FkZS1GaXgtd2FybmluZ3Mtd2l0aC1jbGFuZy1vbi1hcm0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1DbGFyaWZ5LWNvbmRpdGlvbnMtdG8tYXZvaWQtY29tcGlsZXItZXJyb3JzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLVduby1lcnJvci1mb3JtYXQtb3ZlcmZsb3ctaWYtdGhlLWNvbXBpbGVyLXN1cHBvci5wYXRjaCBcCiAgICAgICAgICAgICIKLVVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgotU1JDUkVWID0gIjhkZmU1Y2VjMzFlNzg0ZTRlY2UyOTU1ZWNjOGNjMzVlZTdlOGZiYjMiCi1QRSA9ICIxIgorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgorU1JDUkVWID0gIjJhZGYwMDUyZDY2ZWFlODhjN2E1ZTU1ZTY3ZmUxNmUxM2Y3MDE4YjUiCitQRSA9ICIyIgogUFYgPSAiMC4wK2dpdCR7U1JDUFZ9IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3J4dnQtdW5pY29kZS9yeHZ0LXVuaWNvZGUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3J4dnQtdW5pY29kZS9yeHZ0LXVuaWNvZGUuaW5jCmluZGV4IDRkNWRhYTYuLmI1NjhmMDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9yeHZ0LXVuaWNvZGUvcnh2dC11bmljb2RlLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcnh2dC11bmljb2RlL3J4dnQtdW5pY29kZS5pbmMKQEAgLTEyLDcgKzEyLDcgQEAKIAkgICBmaWxlOi8vcnh2dC5kZXNrdG9wIFwKIAkgICBmaWxlOi8vcnh2dC5wbmciCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cGRhdGUtYWx0ZXJuYXRpdmVzCiAKIFBST1ZJREVTID0gInZpcnR1YWwveC10ZXJtaW5hbC1lbXVsYXRvciIKIEFMVEVSTkFUSVZFXyR7UE59ID0gIngtdGVybWluYWwtZW11bGF0b3IiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vc2V0dGluZ3MtZGFlbW9uL3NldHRpbmdzLWRhZW1vbl8wLjAuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9zZXR0aW5ncy1kYWVtb24vc2V0dGluZ3MtZGFlbW9uXzAuMC4yLmJiCmluZGV4IGNlYWVjY2EuLmJiNmI2OWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9zZXR0aW5ncy1kYWVtb24vc2V0dGluZ3MtZGFlbW9uXzAuMC4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9zZXR0aW5ncy1kYWVtb24vc2V0dGluZ3MtZGFlbW9uXzAuMC4yLmJiCkBAIC0xMCw3ICsxMCw3IEBACiAjIFNSQ1JFViB0YWdnZWQgMC4wLjIKIFNSQ1JFViA9ICJiMmU1ZGE1MDJmOGM1ZmY3NWU5ZTZkYTc3MTM3MmVmOGU0MGZkOWEyIgogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy94c2V0dGluZ3MtZGFlbW9uIFwKLSAgICAgICAgICAgZmlsZTovL2FkZHNvdW5ka2V5cy5wYXRjaDthcHBseT15ZXMgXAorICAgICAgICAgICBmaWxlOi8vYWRkc291bmRrZXlzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzcwc2V0dGluZ3MtZGFlbW9uLnNoIFwKICAgICAgICAgICAgIgogVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+KFxkKyhcLlxkKykrKSkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLUZpeC1nbGVzMy1oZWFkZXItd2hlbi1nbGVzMi1pcy1lbmFibGVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1GaXgtZ2xlczMtaGVhZGVyLXdoZW4tZ2xlczItaXMtZW5hYmxlZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTU3NDA3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1GaXgtZ2xlczMtaGVhZGVyLXdoZW4tZ2xlczItaXMtZW5hYmxlZC5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIGFkZjNkNGM5ZDQxMzNiZDY5OTU1OTBkOTIxYzBjY2FlYzUyNTRkYTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCaGFyZ2F2YSBTcmVla2FudGFwcGEgR2F5YXRocmkKKyA8YmhhcmdhdmEuc3JlZWthbnRhcHBhLWdheWF0aHJpQHhpbGlueC5jb20+CitEYXRlOiBUdWUsIDI3IEZlYiAyMDE4IDE2OjA5OjMxIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBnbGVzMyBoZWFkZXIgd2hlbiBnbGVzMiBpcyBlbmFibGVkCisKK0EgR0xFUyAyIGFwcGxpY2F0aW9uIHNob3VsZCBub3QgdXNlIGdsMy5oLgorRml4IHRoZSBnbGVzMyBoZWFkZXIgZmFpbHVyZSB3aGlsZSBjb21waWxpbmcgd2Via2l0Z3RrLgorCitGQUlMRUQ6CitTb3VyY2UvV2ViQ29yZS9DTWFrZUZpbGVzL1dlYkNvcmUuZGlyL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAubworICAgICAgICAgICBefn5+fn5+fn5+fn5+Citjb21waWxhdGlvbiB0ZXJtaW5hdGVkLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitJbXBvcnRlZCBwYXRjaCBmcm9tOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMDA4CisKK1NpZ25lZC1vZmYtYnk6IEJoYXJnYXZhIFNyZWVrYW50YXBwYSBHYXlhdGhyaSA8YmhhcmdhdmEuc3JlZWthbnRhcHBhLWdheWF0aHJpQHhpbGlueC5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYW5qdWt1bWFyIE1hdGhhIDxtYW5qdWt1bWFyLmhhcnRoaWtvdGUtbWF0aGFAeGlsaW54LmNvbT4KKy0tLQorIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAgfCAxIC0KKyAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKK2luZGV4IDU5OWRjYzAuLjQ2ZDJmZDQgMTAwNjQ0CistLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCisrKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCitAQCAtMzEsNyArMzEsNiBAQAorICNlbGlmIFVTRShPUEVOR0xfRVNfMikKKyAjZGVmaW5lIEdMX0dMRVhUX1BST1RPVFlQRVMgMQorICNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKy0jaW5jbHVkZSA8R0xFUzMvZ2wzLmg+CisgI2VuZGlmCisKKyAjaWYgVVNFKEdMWCkKKy0tCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLVdlYktpdE1hY3Jvcy1BcHBlbmQtdG8tSS1hbmQtbm90LXRvLWlzeXN0ZW0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLVdlYktpdE1hY3Jvcy1BcHBlbmQtdG8tSS1hbmQtbm90LXRvLWlzeXN0ZW0ucGF0Y2gKaW5kZXggZGZkYzExNi4uOWZjMTQyMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1XZWJLaXRNYWNyb3MtQXBwZW5kLXRvLUktYW5kLW5vdC10by1pc3lzdGVtLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtV2ViS2l0TWFjcm9zLUFwcGVuZC10by1JLWFuZC1ub3QtdG8taXN5c3RlbS5wYXRjaApAQCAtMTYsNiArMTYsNyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9zaGVsbC9DTWFrZUxpc3RzLnR4dCB8IDIgKy0KICBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSAgICAgICAgICAgfCA2ICsrKy0tLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4xOC42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4xOC42LmJiCmluZGV4IDlmYWMwNDQuLmMyOWZhN2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrXzIuMTguNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjE4LjYuYmIKQEAgLTIxLDYgKzIxLDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtV2ViS2l0TWFjcm9zLUFwcGVuZC10by1JLWFuZC1ub3QtdG8taXN5c3RlbS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZml4LWNvbmZpZ3VyZS1mYWlsdXJlLWFhcmNoNjQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtZ2xlczMtaGVhZGVyLXdoZW4tZ2xlczItaXMtZW5hYmxlZC5wYXRjaCBcCiAgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gImMxYTU0ODU5NTEzNWVlNzVhZDNiZjJlMThhYzgzMTEyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHItdXRpbF8xLjYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLXV0aWxfMS42LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0OGQxOTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHItdXRpbF8xLjYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLVNVTU1BUlkgPSAiQXBhY2hlIFBvcnRhYmxlIFJ1bnRpbWUgKEFQUikgY29tcGFuaW9uIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vYXByLmFwYWNoZS5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotREVQRU5EUyA9ICJhcHIgZXhwYXQgZ2RibSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xNThhYTBiMWVmZTBjMTJmMjNkNGIwMDdkZGI5YTVkYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL2FwdV92ZXJzaW9uLmg7ZW5kbGluZT0xNzttZDU9ODA2Njg1YTg0ZTcxZjEwYzgwMTQ0YzQ4ZWIzNWRmNDIiCi0KLVNSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS9hcHIvJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWdmaXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlX2ZpeGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzYjAzZGJmZjYwNzI4YTRmNGMzM2Y1ZDkyOWU4YjM1YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0ODNlZjRkNTllNmFjOWEzNmM3ZDNmZDg3YWQ3YjlkYjdhZDhhZTI5YzA2YjlkZDhmZjIyZGRhMWNjNDE2Mzg5IgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHItMS1jb25maWcgXCAKLQkJLS13aXRob3V0LW9kYmMgXAotCQktLXdpdGhvdXQtcGdzcWwgXAotCQktLXdpdGgtZGJtPWdkYm0gXAotCQktLXdpdGgtZ2RibT0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKLQkJLS13aXRob3V0LXNxbGl0ZTIgXAotCQktLXdpdGgtZXhwYXQ9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSIKLQotCi1pbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBiaW5jb25maWcKLQotUFIgPSAicjEiCi0KLU9FX0JJTkNPTkZJR19FWFRSQV9NQU5HTEUgPSAiIC1lICdzOmxvY2F0aW9uPXNvdXJjZTpsb2NhdGlvbj1pbnN0YWxsZWQ6JyIKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLQlpZiBbICIke0NMQVNTT1ZFUlJJREV9IiA9ICJjbGFzcy10YXJnZXQiIF07IHRoZW4KLQkJY3AgJHtTVEFHSU5HX0RBVEFESVJ9L2Fwci9hcHJfcnVsZXMubWsgJHtCfS9idWlsZC9ydWxlcy5tawotCWZpCi19Ci1kb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0JbWtkaXIgJHtCfS9idWlsZAotCWNwICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vYXByL2Fwcl9ydWxlcy5tayAke0J9L2J1aWxkL3J1bGVzLm1rCi19Ci1kb19jb25maWd1cmVfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQlzZWQgLWkgInMjTElCVE9PTD1cJChTSEVMTCkgXCQoYXByX2J1aWxkZGlyKSNMSUJUT09MPVwkKFNIRUxMKSAke1NUQUdJTkdfQklORElSX05BVElWRX0jIiAke0J9L2J1aWxkL3J1bGVzLm1rCi0JIyBzb21ldGltZXMgdGhlcmUgaXNuJ3QgU0hFTEwKLQlzZWQgLWkgInMjTElCVE9PTD1cJChhcHJfYnVpbGRkaXIpI0xJQlRPT0w9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9IyIgJHtCfS9idWlsZC9ydWxlcy5tawotfQotCi1kb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0JY3AgJHtTVEFHSU5HX0RBVEFESVJ9L2Fwci9hcHJfcnVsZXMubWsgJHtTfS9idWlsZC9ydWxlcy5tawotfQotCi1kb19jb25maWd1cmVfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLQlzZWQgLWkgInMjXChhcHJfYnVpbGRkaXJcKT0uKiNcMT0ke1NUQUdJTkdfREFUQURJUn0vYnVpbGQtMSMiICR7Qn0vYnVpbGQvcnVsZXMubWsKLQlzZWQgLWkgInMjXChhcHJfYnVpbGRlcnNcKT0uKiNcMT0ke1NUQUdJTkdfREFUQURJUn0vYnVpbGQtMSMiICR7Qn0vYnVpbGQvcnVsZXMubWsKLQlzZWQgLWkgInMjXCh0b3BfYnVpbGRkaXJcKT0uKiNcMT0ke1NUQUdJTkdfREFUQURJUn0vYnVpbGQtMSMiICR7Qn0vYnVpbGQvcnVsZXMubWsKLQlzZWQgLWkgInMjXChMSUJUT09MPVwkKGFwcl9idWlsZGRpcilcKS4qI1wxL2xpYnRvb2wjIiAke0J9L2J1aWxkL3J1bGVzLm1rCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLQlzZWQgLWkgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgXAotCSAgICAgICAtZSAncyxBUFVfU09VUkNFX0RJUj0uKixBUFJfU09VUkNFX0RJUj0sZycgXAotCSAgICAgICAtZSAncyxBUFVfQlVJTERfRElSPS4qLEFQUl9CVUlMRF9ESVI9LGcnICR7RH0ke2JpbmRpcn0vYXB1LTEtY29uZmlnCi19Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICJjcnlwdG8iCi1QQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwLC0td2l0aG91dC1sZGFwLG9wZW5sZGFwIgotUEFDS0FHRUNPTkZJR1tjcnlwdG9dID0gIi0td2l0aC1vcGVuc3NsPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gLS13aXRoLWNyeXB0bywtLXdpdGhvdXQtY3J5cHRvLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3NxbGl0ZTNdID0gIi0td2l0aC1zcWxpdGUzPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0sLS13aXRob3V0LXNxbGl0ZTMsc3FsaXRlMyIKLQotI2ZpbGVzICR7bGliZGlyfS9hcHItdXRpbC0xLyouc28gYXJlIG5vdCBzeW1saW5rcyBidXQgbG9hZGFibGUgbW9kdWxlcyB0aHVzIHRoZXkgYXJlIHBhY2thZ2VkIGluICR7UE59Ci1GSUxFU18ke1BOfSAgICAgKz0gIiR7bGliZGlyfS9hcHItdXRpbC0xL2Fwcioke1NPTElCU30gJHtsaWJkaXJ9L2Fwci11dGlsLTEvYXByKiR7U09MSUJTREVWfSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2FwcnV0aWwuZXhwICR7bGliZGlyfS9hcHItdXRpbC0xLyoubGEiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9hcHItdXRpbC0xLyouYSIKLQotSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyIKLQotaW5oZXJpdCBwdGVzdAotCi1SREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtZ2NvbnYtaXNvODg1OS0xIGdsaWJjLWdjb252LWlzbzg4NTktMiBnbGliYy1nY29udi11dGYtNyIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQljZCAke0J9L3Rlc3QKLQlvZV9ydW5tYWtlCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JdD0ke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ci0JbWtkaXIgJHQKLQlmb3IgaSBpbiB0ZXN0YWxsIGRhdGE7IGRvIFwKLQkgIGNwIC1yICR7Qn0vdGVzdC8kaSAkdDsgXAotCWRvbmUKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLXV0aWxfMS42LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci11dGlsXzEuNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4YjQzMDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci11dGlsXzEuNi4xLmJiCkBAIC0wLDAgKzEsOTMgQEAKK1NVTU1BUlkgPSAiQXBhY2hlIFBvcnRhYmxlIFJ1bnRpbWUgKEFQUikgY29tcGFuaW9uIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vYXByLmFwYWNoZS5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyA9ICJhcHIgZXhwYXQgZ2RibSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xNThhYTBiMWVmZTBjMTJmMjNkNGIwMDdkZGI5YTVkYiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL2FwdV92ZXJzaW9uLmg7ZW5kbGluZT0xNzttZDU9ODA2Njg1YTg0ZTcxZjEwYzgwMTQ0YzQ4ZWIzNWRmNDIiCisKK1NSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS9hcHIvJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWdmaXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlX2ZpeGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiZDUwMmI5YTg2NzBhODAxMmM0ZDkwYzMxYTg0OTU1ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiNjVlNDA3MTNkYTU3ZDAwNDEyM2I2MzE5ODI4YmU3ZjEyNzNmYmM2NDkwZTE0NTg3NGVlMTE3N2UxMTJjNDU5IgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHItMS1jb25maWcgXCAKKwkJLS13aXRob3V0LW9kYmMgXAorCQktLXdpdGhvdXQtcGdzcWwgXAorCQktLXdpdGgtZGJtPWdkYm0gXAorCQktLXdpdGgtZ2RibT0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKKwkJLS13aXRob3V0LXNxbGl0ZTIgXAorCQktLXdpdGgtZXhwYXQ9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSIKKworCitpbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBiaW5jb25maWcKKworT0VfQklOQ09ORklHX0VYVFJBX01BTkdMRSA9ICIgLWUgJ3M6bG9jYXRpb249c291cmNlOmxvY2F0aW9uPWluc3RhbGxlZDonIgorCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworCWlmIFsgIiR7Q0xBU1NPVkVSUklERX0iID0gImNsYXNzLXRhcmdldCIgXTsgdGhlbgorCQljcCAke1NUQUdJTkdfREFUQURJUn0vYXByL2Fwcl9ydWxlcy5tayAke0J9L2J1aWxkL3J1bGVzLm1rCisJZmkKK30KK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwlta2RpciAke0J9L2J1aWxkCisJY3AgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9hcHIvYXByX3J1bGVzLm1rICR7Qn0vYnVpbGQvcnVsZXMubWsKK30KK2RvX2NvbmZpZ3VyZV9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCXNlZCAtaSAicyNMSUJUT09MPVwkKFNIRUxMKSBcJChhcHJfYnVpbGRkaXIpI0xJQlRPT0w9XCQoU0hFTEwpICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfSMiICR7Qn0vYnVpbGQvcnVsZXMubWsKKwkjIHNvbWV0aW1lcyB0aGVyZSBpc24ndCBTSEVMTAorCXNlZCAtaSAicyNMSUJUT09MPVwkKGFwcl9idWlsZGRpcikjTElCVE9PTD0ke1NUQUdJTkdfQklORElSX05BVElWRX0jIiAke0J9L2J1aWxkL3J1bGVzLm1rCit9CisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKwljcCAke1NUQUdJTkdfREFUQURJUn0vYXByL2Fwcl9ydWxlcy5tayAke1N9L2J1aWxkL3J1bGVzLm1rCit9CisKK2RvX2NvbmZpZ3VyZV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworCXNlZCAtaSAicyNcKGFwcl9idWlsZGRpclwpPS4qI1wxPSR7U1RBR0lOR19EQVRBRElSfS9idWlsZC0xIyIgJHtCfS9idWlsZC9ydWxlcy5taworCXNlZCAtaSAicyNcKGFwcl9idWlsZGVyc1wpPS4qI1wxPSR7U1RBR0lOR19EQVRBRElSfS9idWlsZC0xIyIgJHtCfS9idWlsZC9ydWxlcy5taworCXNlZCAtaSAicyNcKHRvcF9idWlsZGRpclwpPS4qI1wxPSR7U1RBR0lOR19EQVRBRElSfS9idWlsZC0xIyIgJHtCfS9idWlsZC9ydWxlcy5taworCXNlZCAtaSAicyNcKExJQlRPT0w9XCQoYXByX2J1aWxkZGlyKVwpLiojXDEvbGlidG9vbCMiICR7Qn0vYnVpbGQvcnVsZXMubWsKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworCXNlZCAtaSAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyBcCisJICAgICAgIC1lICdzLEFQVV9TT1VSQ0VfRElSPS4qLEFQUl9TT1VSQ0VfRElSPSxnJyBcCisJICAgICAgIC1lICdzLEFQVV9CVUlMRF9ESVI9LiosQVBSX0JVSUxEX0RJUj0sZycgJHtEfSR7YmluZGlyfS9hcHUtMS1jb25maWcKK30KKworUEFDS0FHRUNPTkZJRyA/Pz0gImNyeXB0byIKK1BBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS13aXRoLWxkYXAsLS13aXRob3V0LWxkYXAsb3BlbmxkYXAiCitQQUNLQUdFQ09ORklHW2NyeXB0b10gPSAiLS13aXRoLW9wZW5zc2w9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSAtLXdpdGgtY3J5cHRvLC0td2l0aG91dC1jcnlwdG8sb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbc3FsaXRlM10gPSAiLS13aXRoLXNxbGl0ZTM9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSwtLXdpdGhvdXQtc3FsaXRlMyxzcWxpdGUzIgorCisjZmlsZXMgJHtsaWJkaXJ9L2Fwci11dGlsLTEvKi5zbyBhcmUgbm90IHN5bWxpbmtzIGJ1dCBsb2FkYWJsZSBtb2R1bGVzIHRodXMgdGhleSBhcmUgcGFja2FnZWQgaW4gJHtQTn0KK0ZJTEVTXyR7UE59ICAgICArPSAiJHtsaWJkaXJ9L2Fwci11dGlsLTEvYXByKiR7U09MSUJTfSAke2xpYmRpcn0vYXByLXV0aWwtMS9hcHIqJHtTT0xJQlNERVZ9IgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vYXBydXRpbC5leHAgJHtsaWJkaXJ9L2Fwci11dGlsLTEvKi5sYSIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2Fwci11dGlsLTEvKi5hIgorCitJTlNBTkVfU0tJUF8ke1BOfSArPSAiZGV2LXNvIgorCitpbmhlcml0IHB0ZXN0CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy1nY29udi1pc284ODU5LTEgZ2xpYmMtZ2NvbnYtaXNvODg1OS0yIGdsaWJjLWdjb252LXV0Zi03IgorCitkb19jb21waWxlX3B0ZXN0KCkgeworCWNkICR7Qn0vdGVzdAorCW9lX3J1bm1ha2UKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwl0PSR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwlta2RpciAkdAorCWZvciBpIGluIHRlc3RhbGwgZGF0YTsgZG8gXAorCSAgY3AgLXIgJHtCfS90ZXN0LyRpICR0OyBcCisJZG9uZQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMS1hcHItZml4LW9mZl90LXNpemUtZG9lc24tdC1tYXRjaC1pbi1nbGliYy13aGVuLWNyb3NzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMS1hcHItZml4LW9mZl90LXNpemUtZG9lc24tdC1tYXRjaC1pbi1nbGliYy13aGVuLWNyb3NzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWU5MmFjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDEtYXByLWZpeC1vZmZfdC1zaXplLWRvZXNuLXQtbWF0Y2gtaW4tZ2xpYmMtd2hlbi1jcm9zcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLUZyb20gZjI2ZThiODhkMmM5MGVkN2ViOWQ0ZTI3NjQxMmIwOTIzYzIzZDEwZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDE0IERlYyAyMDE2IDE4OjEzOjA4ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFwcjogZml4IG9mZl90IHNpemUgZG9lc24ndCBtYXRjaCBpbiBnbGliYyB3aGVuIGNyb3NzCi0gY29tcGlsaW5nCi0KLUluIGNvbmZpZ3VyZS5pbiwgaXQgY29udGFpbnMgdGhlIGZvbGxvd2luZzoKLQotCUFQUl9DSEVDS19TSVpFT0ZfRVhURU5ERUQoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD5dLCBvZmZfdCwgOCkKLQotdGhlIG1hY3JvICJBUFJfQ0hFQ0tfU0laRU9GX0VYVEVOREVEIiB3YXMgZGVmaW5lZCBpbiBidWlsZC9hcHJfY29tbW9uLm00LAotaXQgdXNlIHRoZSAiQUNfVFJZX1JVTiIgbWFjcm8sIHRoaXMgbWFjcm8gbGV0IHRoZSBvZmZfdCB0byA4LCB3aGVuIGNyb3NzCi1jb21waWxpbmcgZW5hYmxlLgotCi1TbyBpdCB3YXMgaGFyZGNvZGVkIGZvciBjcm9zcyBjb21waWxpbmcsIHdlIHNob3VsZCBkZXRlY3QgaXQgZHluYW1pYyBiYXNlZCBvbgotdGhlIHN5c3Jvb3QncyBnbGliYy4gV2UgY2hhbmdlIGl0IHRvIHRoZSBmb2xsb3dpbmc6Ci0KLQlBQ19DSEVDS19TSVpFT0Yob2ZmX3QpCi0KLVRoZSBzYW1lIGZvciB0aGUgZm9sbG93aW5nIGhhcmRjb2RlZCB0eXBlcyBmb3IgY3Jvc3MgY29tcGlsaW5nOgotCi0JcGlkX3QJOAotCXNzaXplX3QJOAotCXNpemVfdAk4Ci0Jb2ZmX3QJOAotCi1DaGFuZ2UgdGhlIGFib3ZlIGNvcnJlc3BvbmRpbmdseS4KLQotU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBjb25maWd1cmUuaW4gfCA4ICsrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggOWQ1N2FlNi4uNWIxOTk0MCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtMTY4MSw3ICsxNjgxLDcgQEAgZWxzZQotICAgICBzb2NrbGVuX3RfdmFsdWU9ImludCIKLSBmaQotIAotLUFQUl9DSEVDS19TSVpFT0ZfRVhURU5ERUQoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD5dLCBwaWRfdCwgOCkKLStBQ19DSEVDS19TSVpFT0YocGlkX3QpCi0gCi0gaWYgdGVzdCAiJGFjX2N2X3NpemVvZl9waWRfdCIgPSAiJGFjX2N2X3NpemVvZl9zaG9ydCI7IHRoZW4KLSAgICAgcGlkX3RfZm10PScjZGVmaW5lIEFQUl9QSURfVF9GTVQgImhkIicKLUBAIC0xNzUwLDcgKzE3NTAsNyBAQCBBUFJfQ0hFQ0tfVFlQRVNfQ09NUEFUSUJMRShzc2l6ZV90LCBsb25nLCBbc3NpemVfdF9mbXQ9ImxkIl0pCi0gQVBSX0NIRUNLX1RZUEVTX0NPTVBBVElCTEUoc2l6ZV90LCB1bnNpZ25lZCBpbnQsIFtzaXplX3RfZm10PSJ1Il0pCi0gQVBSX0NIRUNLX1RZUEVTX0NPTVBBVElCTEUoc2l6ZV90LCB1bnNpZ25lZCBsb25nLCBbc2l6ZV90X2ZtdD0ibHUiXSkKLSAKLS1BUFJfQ0hFQ0tfU0laRU9GX0VYVEVOREVEKFsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+XSwgc3NpemVfdCwgOCkKLStBQ19DSEVDS19TSVpFT0Yoc3NpemVfdCkKLSAKLSBBQ19NU0dfQ0hFQ0tJTkcoW3doaWNoIGZvcm1hdCB0byB1c2UgZm9yIGFwcl9zc2l6ZV90XSkKLSBpZiB0ZXN0IC1uICIkc3NpemVfdF9mbXQiOyB0aGVuCi1AQCAtMTc2Nyw3ICsxNzY3LDcgQEAgZmkKLSAKLSBzc2l6ZV90X2ZtdD0iI2RlZmluZSBBUFJfU1NJWkVfVF9GTVQgXCIkc3NpemVfdF9mbXRcIiIKLSAKLS1BUFJfQ0hFQ0tfU0laRU9GX0VYVEVOREVEKFsjaW5jbHVkZSA8c3RkZGVmLmg+XSwgc2l6ZV90LCA4KQotK0FDX0NIRUNLX1NJWkVPRihzaXplX3QpCi0gCi0gQUNfTVNHX0NIRUNLSU5HKFt3aGljaCBmb3JtYXQgdG8gdXNlIGZvciBhcHJfc2l6ZV90XSkKLSBpZiB0ZXN0IC1uICIkc2l6ZV90X2ZtdCI7IHRoZW4KLUBAIC0xNzg0LDcgKzE3ODQsNyBAQCBmaQotIAotIHNpemVfdF9mbXQ9IiNkZWZpbmUgQVBSX1NJWkVfVF9GTVQgXCIkc2l6ZV90X2ZtdFwiIgotIAotLUFQUl9DSEVDS19TSVpFT0ZfRVhURU5ERUQoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD5dLCBvZmZfdCwgOCkKLStBQ19DSEVDS19TSVpFT0Yob2ZmX3QpCi0gCi0gaWYgdGVzdCAiJHthY19jdl9zaXplb2Zfb2ZmX3R9JHthcHJfY3ZfdXNlX2xmczY0fSIgPSAiNHllcyI7IHRoZW4KLSAgICAgIyBFbmFibGUgTEZTCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDEtYnVpbGQtYnVpbGRjaGVjay5zaC1pbXByb3ZlLWxpYnRvb2wtZGV0ZWN0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMS1idWlsZC1idWlsZGNoZWNrLnNoLWltcHJvdmUtbGlidG9vbC1kZXRlY3Rpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk3YzE5NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDEtYnVpbGQtYnVpbGRjaGVjay5zaC1pbXByb3ZlLWxpYnRvb2wtZGV0ZWN0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gNGVmZGMwNmZiMTdiOGEwMGE5ZWNhOTIzY2FhMTc2YmU3NDFkMWUwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMSBGZWIgMjAxOCAxNDo1NjoxMyArMDgwMAorU3ViamVjdDogW1BBVENIIDEvN10gYnVpbGQvYnVpbGRjaGVjay5zaDogaW1wcm92ZSBsaWJ0b29sIGRldGVjdGlvbgorCitTdXBwb3J0IGN1c3RvbWl6ZSBsaWJ0b29sIGJ5IHZhcmlhYmxlIGFzc2lnbmluZywgaXQgaXMgaGVscGZ1bAorZm9yIGNyb3NzIGNvbXBpbGVpbmcgKHN1Y2ggYXMgbGlidG9vbD1hYXJjaDY0LWxpbnV4LWxpYnRvb2wpCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL2Fwci9wdWxsLzhdCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBidWlsZC9idWlsZGNoZWNrLnNoIHwgNCArKystCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYnVpbGQvYnVpbGRjaGVjay5zaCBiL2J1aWxkL2J1aWxkY2hlY2suc2gKK2luZGV4IGFiNWRmNDQuLmYxOTFhNDEgMTAwNzU1CistLS0gYS9idWlsZC9idWlsZGNoZWNrLnNoCisrKysgYi9idWlsZC9idWlsZGNoZWNrLnNoCitAQCAtNDAsNyArNDAsOSBAQCBmaQorICMgb3V0cHV0IGlzIG11bHRpbGluZSBmcm9tIDEuNSBvbndhcmRzCisgCisgIyBSZXF1aXJlIGxpYnRvb2wgMS40IG9yIG5ld2VyCistbGlidG9vbD1gYnVpbGQvUHJpbnRQYXRoIGdsaWJ0b29sMSBnbGlidG9vbCBsaWJ0b29sIGxpYnRvb2wxNSBsaWJ0b29sMTRgCisraWYgdGVzdCAteiAiJGxpYnRvb2wiOyB0aGVuCisrICBsaWJ0b29sPWBidWlsZC9QcmludFBhdGggZ2xpYnRvb2wxIGdsaWJ0b29sIGxpYnRvb2wgbGlidG9vbDE1IGxpYnRvb2wxNGAKKytmaQorIGx0X3B2ZXJzaW9uPWAkbGlidG9vbCAtLXZlcnNpb24gMj4vZGV2L251bGx8c2VkIC1lICdzLyhbXildKikvL2c7cy9eW14wLTldKi8vO3MvWy0gXS4qLy9nO3EnYAorIGlmIHRlc3QgLXogIiRsdF9wdmVyc2lvbiI7IHRoZW4KKyAgIGVjaG8gImJ1aWxkY29uZjogbGlidG9vbCBub3QgZm91bmQuIgorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDItYXByLVJlbW92ZS13b3JrZGlyLXBhdGgtcmVmZXJlbmNlcy1mcm9tLWluc3RhbGxlZC1hcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDItYXByLVJlbW92ZS13b3JrZGlyLXBhdGgtcmVmZXJlbmNlcy1mcm9tLWluc3RhbGxlZC1hcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmU3MDZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMi1hcHItUmVtb3ZlLXdvcmtkaXItcGF0aC1yZWZlcmVuY2VzLWZyb20taW5zdGFsbGVkLWFwLnBhdGNoCkBAIC0wLDAgKzEsNzQgQEAKK0Zyb20gNTkyNWIyMGRhOGJiYzM0ZDliZjVhNWRjYTEyM2VmMzg4NjRkNDNjNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMzAgSmFuIDIwMTggMDk6Mzk6MDYgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzddIGFwcjogUmVtb3ZlIHdvcmtkaXIgcGF0aCByZWZlcmVuY2VzIGZyb20gaW5zdGFsbGVkIGFwcgorIGZpbGVzCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KKworU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CisKK1RoZSBnZW5lcmF0ZWQgYGFwci0xLWNvbmZpZycgaXMgdXNlZCBieSBvdGhlciByZWNpcGVzIGF0IGJ1aWxkIHRpbWUgb3IKK3BhY2thZ2VzIGF0IHRhcmdldCBydW4gdGltZSwgdGhlIHdvcmtkaXIgcGF0aCBjYXVzZWQgY29uZnVzaW9uLgorCitSZWJhc2UgdG8gMS42LjMKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYXByLWNvbmZpZy5pbiB8IDI2ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9hcHItY29uZmlnLmluIGIvYXByLWNvbmZpZy5pbgoraW5kZXggODRiNDA3My4uYmJiZjY1MSAxMDA2NDQKKy0tLSBhL2Fwci1jb25maWcuaW4KKysrKyBiL2Fwci1jb25maWcuaW4KK0BAIC0xNTIsMTQgKzE1Miw3IEBAIHdoaWxlIHRlc3QgJCMgLWd0IDA7IGRvCisgICAgIGZsYWdzPSIkZmxhZ3MgJExERkxBR1MiCisgICAgIDs7CisgICAgIC0taW5jbHVkZXMpCistICAgIGlmIHRlc3QgIiRsb2NhdGlvbiIgPSAiaW5zdGFsbGVkIjsgdGhlbgorICAgICAgICAgZmxhZ3M9IiRmbGFncyAtSSRpbmNsdWRlZGlyICRFWFRSQV9JTkNMVURFUyIKKy0gICAgZWxpZiB0ZXN0ICIkbG9jYXRpb24iID0gInNvdXJjZSI7IHRoZW4KKy0gICAgICAgIGZsYWdzPSIkZmxhZ3MgLUkkQVBSX1NPVVJDRV9ESVIvaW5jbHVkZSAkRVhUUkFfSU5DTFVERVMiCistICAgIGVsc2UKKy0gICAgICAgICMgdGhpcyBpcyBmb3IgVlBBVEggYnVpbGRzCistICAgICAgICBmbGFncz0iJGZsYWdzIC1JJEFQUl9CVUlMRF9ESVIvaW5jbHVkZSAtSSRBUFJfU09VUkNFX0RJUi9pbmNsdWRlICRFWFRSQV9JTkNMVURFUyIKKy0gICAgZmkKKyAgICAgOzsKKyAgICAgLS1zcmNkaXIpCisgICAgIGVjaG8gJEFQUl9TT1VSQ0VfRElSCitAQCAtMTgxLDI5ICsxNzQsMTQgQEAgd2hpbGUgdGVzdCAkIyAtZ3QgMDsgZG8KKyAgICAgZXhpdCAwCisgICAgIDs7CisgICAgIC0tbGluay1sZCkKKy0gICAgaWYgdGVzdCAiJGxvY2F0aW9uIiA9ICJpbnN0YWxsZWQiOyB0aGVuCistICAgICAgICAjIyMgYXZvaWQgdXNpbmcgLUwgaWYgbGliZGlyIGlzIGEgInN0YW5kYXJkIiBsb2NhdGlvbiBsaWtlIC91c3IvbGliCistICAgICAgICBmbGFncz0iJGZsYWdzIC1MJGxpYmRpciAtbCR7QVBSX0xJQk5BTUV9IgorLSAgICBlbHNlCistICAgICAgICAjIyMgdGhpcyBzdXJlbHkgY2FuJ3Qgd29yayBzaW5jZSB0aGUgbGlicmFyeSBpcyBpbiAubGlicz8KKy0gICAgICAgIGZsYWdzPSIkZmxhZ3MgLUwkQVBSX0JVSUxEX0RJUiAtbCR7QVBSX0xJQk5BTUV9IgorLSAgICBmaQorKyAgICAgICAgZmxhZ3M9IiRmbGFncyAtbCR7QVBSX0xJQk5BTUV9IgorICAgICA7OworICAgICAtLWxpbmstbGlidG9vbCkKKyAgICAgIyBJZiB0aGUgTEFfRklMRSBleGlzdHMgd2hlcmUgd2UgdGhpbmsgaXQgc2hvdWxkIGJlLCB1c2UgaXQuICBJZiB3ZSdyZQorICAgICAjIGluc3RhbGxlZCBhbmQgdGhlIExBX0ZJTEUgZG9lcyBub3QgZXhpc3QsIGFzc3VtZSB0byB1c2UgLUwvLWwKKyAgICAgIyAodGhlIExBX0ZJTEUgbWF5IG5vdCBoYXZlIGJlZW4gaW5zdGFsbGVkKS4gIElmIHdlJ3JlIGJ1aWxkaW5nIG91cnNlbHZlcywKKyAgICAgIyB3ZSdsbCBhc3N1bWUgdGhhdCBhdCBzb21lIHBvaW50IHRoZSAubGEgZmlsZSBiZSBjcmVhdGVkLgorLSAgICBpZiB0ZXN0IC1mICIkTEFfRklMRSI7IHRoZW4KKy0gICAgICAgIGZsYWdzPSIkZmxhZ3MgJExBX0ZJTEUiCistICAgIGVsaWYgdGVzdCAiJGxvY2F0aW9uIiA9ICJpbnN0YWxsZWQiOyB0aGVuCistICAgICAgICAjIyMgYXZvaWQgdXNpbmcgLUwgaWYgbGliZGlyIGlzIGEgInN0YW5kYXJkIiBsb2NhdGlvbiBsaWtlIC91c3IvbGliCistICAgICAgICAjIFNpbmNlIHRoZSB1c2VyIGlzIHNwZWNpZnlpbmcgdGhleSBhcmUgbGlua2luZyB3aXRoIGxpYnRvb2wsIHdlCistICAgICAgICAjICprbm93KiB0aGF0IC1SIHdpbGwgYmUgcmVjb2duaXplZCBieSBsaWJ0b29sLgorLSAgICAgICAgZmxhZ3M9IiRmbGFncyAtTCRsaWJkaXIgLVIkbGliZGlyIC1sJHtBUFJfTElCTkFNRX0iCistICAgIGVsc2UKKy0gICAgICAgIGZsYWdzPSIkZmxhZ3MgJExBX0ZJTEUiCistICAgIGZpCisrICAgICAgICBmbGFncz0iJGZsYWdzIC1sJHtBUFJfTElCTkFNRX0iCisgICAgIDs7CisgICAgIC0tc2hsaWItcGF0aC12YXIpCisgICAgIGVjaG8gIiRTSExJQlBBVEhfVkFSIgorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDItZXhwbGljaXRseS1saW5rLWxpYmFwci1hZ2FpbnN0LXBodHJlYWQtdG8tbWFrZS1nb2xkLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDItZXhwbGljaXRseS1saW5rLWxpYmFwci1hZ2FpbnN0LXBodHJlYWQtdG8tbWFrZS1nb2xkLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2QwZGRkYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDAyLWV4cGxpY2l0bHktbGluay1saWJhcHItYWdhaW5zdC1waHRyZWFkLXRvLW1ha2UtZ29sZC0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1Gcm9tIDk0ZDFjYTAyNjZhMGY5YzA0NDZmMTI5OWI1NGY3NTJlODdiOGE2OTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBGcmksIDMgTWFyIDIwMTcgMjI6MjQ6MTcgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gZXhwbGljaXRseSBsaW5rIGxpYmFwciBhZ2FpbnN0IHBodHJlYWQgdG8gbWFrZSBnb2xkIGhhcHB5IG9uCi0gdGVzdAotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi18IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9tdXRleGF0dHJfaW5pdCcKLXwgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlJwotfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfbXV0ZXhhdHRyX2Rlc3Ryb3knCi18IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9tdXRleF90cnlsb2NrJwotfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfYXR0cl9zZXRzdGFja3NpemUnCi18IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9jcmVhdGUnCi18IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9qb2luJwotfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfZGV0YWNoJwotfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfc2lnbWFzaycKLXwgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX29uY2UnCi18IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9rZXlfY3JlYXRlJwotfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfZ2V0c3BlY2lmaWMnCi18IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9rZXlfZGVsZXRlJwotfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfc2V0c3BlY2lmaWMnCi18IGNvbGxlY3QyOiBlcnJvcjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwotfCBNYWtlZmlsZToxMTQ6IHJlY2lwZSBmb3IgdGFyZ2V0ICdnbG9iYWxtdXRleGNoaWxkJyBmYWlsZWQKLXwgbWFrZVsxXTogKioqIFtnbG9iYWxtdXRleGNoaWxkXSBFcnJvciAxCi18IG1ha2VbMV06IExlYXZpbmcgZGlyZWN0b3J5ICcvaG9tZS9zdXBlcmFuZHkvdG1wL29lLWNvcmUtZ2xpYmMvd29yay9jb3J0ZXhhN3QyaGYtbmVvbi12ZnB2NC1hbmdzdHJvbS1saW51eC1nbnVlYWJpL2Fwci8xLjUuMi1yMC9hcHItMS41LjIvdGVzdCcKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5pbiB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCi1pbmRleCA1YjE5OTQwLi5jZGY0ZDU4IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmluCi0rKysgYi9jb25maWd1cmUuaW4KLUBAIC03NjYsNiArNzY2LDcgQEAgZWxzZQotICAgICAgICAgICBBUFJfUFRIUkVBRFNfQ0hFQ0tfUkVTVE9SRSBdICkKLSAgICAgZmkKLSAgICAgaWYgdGVzdCAiJHB0aHJlYWRoIiA9ICIxIjsgdGhlbgotKyAgICAgICAgQVBSX0FERFRPKExJQlMsWy1scHRocmVhZF0pCi0gICAgICAgICBBUFJfQ0hFQ0tfUFRIUkVBRF9HRVRTUEVDSUZJQ19UV09fQVJHUwotICAgICAgICAgQVBSX0NIRUNLX1BUSFJFQURfQVRUUl9HRVRERVRBQ0hTVEFURV9PTkVfQVJHCi0gICAgICAgICBBUFJfQ0hFQ0tfUFRIUkVBRF9SRUNVUlNJVkVfTVVURVgKLS0tIAotMi45LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMy1NYWtlZmlsZS5pbi1jb25maWd1cmUuaW4tc3VwcG9ydC1jcm9zcy1jb21waWxpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDAzLU1ha2VmaWxlLmluLWNvbmZpZ3VyZS5pbi1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGQ1M2JkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMy1NYWtlZmlsZS5pbi1jb25maWd1cmUuaW4tc3VwcG9ydC1jcm9zcy1jb21waWxpbmcucGF0Y2gKQEAgLTAsMCArMSw2MyBAQAorRnJvbSBkNTAyOGMxMGYxNTZjMjI0NDc1YjM0MGNmYjFiYTAyNWQ2Nzk3MjQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAyIEZlYiAyMDE4IDE1OjUxOjQyICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMy83XSBNYWtlZmlsZS5pbi9jb25maWd1cmUuaW46IHN1cHBvcnQgY3Jvc3MgY29tcGlsaW5nCisKK1doaWxlIGNyb3NzIGNvbXBpbGluZywgdGhlIHRvb2xzL2dlbl90ZXN0X2NoYXIgY291bGQgbm90CitiZSBleGVjdXRlZCBhdCBidWlsZCB0aW1lLCB1c2UgQVhfUFJPR19DQ19GT1JfQlVJTEQgdG8KK2J1aWxkIG5hdGl2ZSB0b29scy9nZW5fdGVzdF9jaGFyCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL2Fwci9wdWxsLzhdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIE1ha2VmaWxlLmluICB8IDEwICsrKy0tLS0tLS0KKyBjb25maWd1cmUuaW4gfCAgMyArKysKKyAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KK2luZGV4IDVmYjc2MGUuLjg2NzVmOTAgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC00Niw3ICs0Niw3IEBAIExUX1ZFUlNJT04gPSBATFRfVkVSU0lPTkAKKyAKKyBDTEVBTl9UQVJHRVRTID0gYXByLWNvbmZpZy5vdXQgYXByLmV4cCBleHBvcnRzLmMgZXhwb3J0X3ZhcnMuYyAubWFrZS5kaXJzIFwKKyAJYnVpbGQvYXByX3J1bGVzLm91dCB0b29scy9nZW5fdGVzdF9jaGFyQEVYRUVYVEAgXAorLQl0b29scy9nZW5fdGVzdF9jaGFyLm8gdG9vbHMvZ2VuX3Rlc3RfY2hhci5sbyBcCisrCXRvb2xzL2dlbl90ZXN0X2NoYXIubyBcCisgCWluY2x1ZGUvcHJpdmF0ZS9hcHJfZXNjYXBlX3Rlc3RfY2hhci5oCisgRElTVENMRUFOX1RBUkdFVFMgPSBjb25maWcuY2FjaGUgY29uZmlnLmxvZyBjb25maWcuc3RhdHVzIFwKKyAJaW5jbHVkZS9hcHIuaCBpbmNsdWRlL2FyY2gvdW5peC9hcHJfcHJpdmF0ZS5oIFwKK0BAIC0xMzEsMTMgKzEzMSw5IEBAIGNoZWNrOiAkKFRBUkdFVF9MSUIpCisgZXRhZ3M6CisgCWV0YWdzIGBmaW5kIC4gLW5hbWUgJyouW2NoXSdgCisgCistT0JKRUNUU19nZW5fdGVzdF9jaGFyID0gdG9vbHMvZ2VuX3Rlc3RfY2hhci5sbyAkKExPQ0FMX0xJQlMpCistdG9vbHMvZ2VuX3Rlc3RfY2hhci5sbzogdG9vbHMvZ2VuX3Rlc3RfY2hhci5jCisrdG9vbHMvZ2VuX3Rlc3RfY2hhckBFWEVFWFRAOiB0b29scy9nZW5fdGVzdF9jaGFyLmMKKyAJJChBUFJfTUtESVIpIHRvb2xzCistCSQoTFRfQ09NUElMRSkKKy0KKy10b29scy9nZW5fdGVzdF9jaGFyQEVYRUVYVEA6ICQoT0JKRUNUU19nZW5fdGVzdF9jaGFyKQorLQkkKExJTktfUFJPRykgJChPQkpFQ1RTX2dlbl90ZXN0X2NoYXIpICQoQUxMX0xJQlMpCisrCSQoQ0NfRk9SX0JVSUxEKSAkKENGTEFHU19GT1JfQlVJTEQpICQ8IC1vICRACisgCisgaW5jbHVkZS9wcml2YXRlL2Fwcl9lc2NhcGVfdGVzdF9jaGFyLmg6IHRvb2xzL2dlbl90ZXN0X2NoYXJARVhFRVhUQAorIAkkKEFQUl9NS0RJUikgaW5jbHVkZS9wcml2YXRlCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCitpbmRleCA3MTlmMzMxLi4zNjExMjBmIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmluCisrKysgYi9jb25maWd1cmUuaW4KK0BAIC0xODMsNiArMTgzLDkgQEAgZG5sIGNhbiBvbmx5IGJlIHVzZWQgb25jZSB3aXRoaW4gYSBjb25maWd1cmUgc2NyaXB0LCBzbyB0aGlzIHByZXZlbnRzIGEKKyBkbmwgcHJlbG9hZCBzZWN0aW9uIGZyb20gaW52b2tpbmcgdGhlIG1hY3JvIHRvIGdldCBjb21waWxlciBpbmZvLgorIEFDX1BST0dfQ0MKKyAKKytkbmwgQ2hlY2sgYnVpbGQgQ0MgZm9yIGdlbl90ZXN0X2NoYXIgY29tcGlsaW5nIHdoaWNoIGlzIGV4ZWN1dGVkIGF0IGJ1aWxkIHRpbWUuCisrQVhfUFJPR19DQ19GT1JfQlVJTEQKKysKKyBkbmwgQUNfUFJPR19TRUQgaXMgb25seSBhdmFsaWFibGUgaW4gcmVjZW50IGF1dG9jb25mIHZlcnNpb25zLgorIGRubCBVc2UgQUNfQ0hFQ0tfUFJPRyBpbnN0ZWFkIGlmIEFDX1BST0dfU0VEIGlzIG5vdCBwcmVzZW50LgorIGlmZGVmKFtBQ19QUk9HX1NFRF0sCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwNC1GaXgtcGFja2V0LWRpc2NhcmRzLUhUVFAtcmVkaXJlY3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDA0LUZpeC1wYWNrZXQtZGlzY2FyZHMtSFRUUC1yZWRpcmVjdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMGZjMDdkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwNC1GaXgtcGFja2V0LWRpc2NhcmRzLUhUVFAtcmVkaXJlY3QucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSA3OTI1ZWIxNzY2YTAwY2NlZTA1YzZlODBiMWQzNGYxNjNhMDRiN2IxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAzMCBKYW4gMjAxOCAwOTo0MzozNCArMDgwMAorU3ViamVjdDogW1BBVENIIDQvN10gRml4IHBhY2tldCBkaXNjYXJkcyBIVFRQIHJlZGlyZWN0LgorCitEaXNjb25uZWN0IHRoZSBjb25uZWN0aW9uIGJ5IHBvbGwoKSB0aW1lb3V0LgorSWYgdGltZW91dD0wIGFuZCBhcHJfd2FpdF9mb3JfaW9fb3JfdGltZW91dCgpPUFQUl9USU1FVVAgdGhlbgorYXByX3NvY2tldF9yZWN2KCkgcmV0dXJucyBFQUdBSU4uCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBOb3JpYWtpIFlvc2hpdGFuZSA8eW9zaGl0YW5lLm5yc0BjbnQubmNvcy5uZWMuY28uanA+CitTaWduZWQtb2ZmLWJ5OiBMaSBXYW5nIDxsaS53YW5nQHdpbmRyaXZlci5jb20+CisKK1JlYmFzZSB0byAxLjYuMworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBuZXR3b3JrX2lvL3VuaXgvc2VuZHJlY3YuYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL25ldHdvcmtfaW8vdW5peC9zZW5kcmVjdi5jIGIvbmV0d29ya19pby91bml4L3NlbmRyZWN2LmMKK2luZGV4IDRjMGUwYTYuLjFiZGFmYmEgMTAwNjQ0CistLS0gYS9uZXR3b3JrX2lvL3VuaXgvc2VuZHJlY3YuYworKysrIGIvbmV0d29ya19pby91bml4L3NlbmRyZWN2LmMKK0BAIC04NSw2ICs4NSwxMCBAQCBhcHJfc3RhdHVzX3QgYXByX3NvY2tldF9yZWN2KGFwcl9zb2NrZXRfdCAqc29jaywgY2hhciAqYnVmLCBhcHJfc2l6ZV90ICpsZW4pCisgICAgICAgICAgICAgICAgICAgICAgICYmIChzb2NrLT50aW1lb3V0ID4gMCkpIHsKKyBkb19zZWxlY3Q6CisgICAgICAgICBhcnYgPSBhcHJfd2FpdF9mb3JfaW9fb3JfdGltZW91dChOVUxMLCBzb2NrLCAxKTsKKysgICAgICAgIGlmICgoYXJ2ID09IEFQUl9USU1FVVApICYmIChzb2NrLT50aW1lb3V0ID09IDApKSB7CisrICAgICAgICAgICAgKmxlbiA9IDA7CisrICAgICAgICAgICAgcmV0dXJuIEVBR0FJTjsKKysgICAgICAgIH0KKyAgICAgICAgIGlmIChhcnYgIT0gQVBSX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgICAqbGVuID0gMDsKKyAgICAgICAgICAgICByZXR1cm4gYXJ2OworLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDUtY29uZmlndXJlLmluLWZpeC1MVEZMQUdTLXRvLW1ha2UtaXQtd29yay13aXRoLWNjYWNoZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDUtY29uZmlndXJlLmluLWZpeC1MVEZMQUdTLXRvLW1ha2UtaXQtd29yay13aXRoLWNjYWNoZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjYzNGU2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwNS1jb25maWd1cmUuaW4tZml4LUxURkxBR1MtdG8tbWFrZS1pdC13b3JrLXdpdGgtY2NhY2hlLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gMmU2NmNlY2UwYzNhZGZmOTI3MzMzMzIxMTEyMDRkZGMxZDczMGEwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxOSBOb3YgMjAxNSAxODoyNTozOCAtMDgwMAorU3ViamVjdDogW1BBVENIIDUvN10gY29uZmlndXJlLmluOiBmaXggTFRGTEFHUyB0byBtYWtlIGl0IHdvcmsgd2l0aCBjY2FjaGUKKworV2hlbiBjY2FjaGUgaXMgZW5hYmxlZCwgbGlidG9vbCByZXF1aXJlcyAtLXRhZz1DQyB3aGVuIHVzZSBjY2FjaGUsCitvdGhlcndpc2Ugd2hlbiBidWlsZGluZyBhcHItdXRpbCB3aXRoIGNjYWNoZSBlbmFibGVkOgorCit8IGxpYnRvb2w6IGNvbXBpbGU6IHVuYWJsZSB0byBpbmZlciB0YWdnZWQgY29uZmlndXJhdGlvbgorfCBsaWJ0b29sOiBlcnJvcjogc3BlY2lmeSBhIHRhZyB3aXRoICctLXRhZycKK3wgbGlidG9vbDogY29tcGlsZTogdW5hYmxlIHRvIGluZmVyIHRhZ2dlZCBjb25maWd1cmF0aW9uCit8IG1ha2VbMV06ICoqKiBbYnVja2V0cy9hcHJfYnVja2V0cy5sb10gRXJyb3IgMQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KK2luZGV4IDM2MTEyMGYuLjNiMTA0MjIgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuaW4KKysrKyBiL2NvbmZpZ3VyZS5pbgorQEAgLTI0OSw3ICsyNDksNyBAQCBjYXNlICRob3N0IGluCisgICAgIDs7CisgKikKKyAgICAgaWYgdGVzdCAieCRMVEZMQUdTIiA9ICJ4IjsgdGhlbgorLSAgICAgICAgTFRGTEFHUz0nLS1zaWxlbnQnCisrICAgICAgICBMVEZMQUdTPSctLXNpbGVudCAtLXRhZz1DQycKKyAgICAgZmkKKyAgICAgaWYgdGVzdCAiJGV4cGVyaW1lbnRhbF9saWJ0b29sIiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgICAjIFVzZSBhIGN1c3RvbS1tYWRlIGxpYnRvb2wgcmVwbGFjZW1lbnQKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDA2LWFwci1maXgtb2ZmX3Qtc2l6ZS1kb2Vzbi10LW1hdGNoLWluLWdsaWJjLXdoZW4tY3Jvc3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDA2LWFwci1maXgtb2ZmX3Qtc2l6ZS1kb2Vzbi10LW1hdGNoLWluLWdsaWJjLXdoZW4tY3Jvc3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY1ZTdlYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDYtYXByLWZpeC1vZmZfdC1zaXplLWRvZXNuLXQtbWF0Y2gtaW4tZ2xpYmMtd2hlbi1jcm9zcy5wYXRjaApAQCAtMCwwICsxLDc4IEBACitGcm9tIGY0ZDZlNDVlZDVkMmNjZmZkMWFmNGMyY2NkZjcwOTliYTBkY2UxMzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxNCBEZWMgMjAxNiAxODoxMzowOCArMDgwMAorU3ViamVjdDogW1BBVENIIDYvN10gYXByOiBmaXggb2ZmX3Qgc2l6ZSBkb2Vzbid0IG1hdGNoIGluIGdsaWJjIHdoZW4gY3Jvc3MKKyBjb21waWxpbmcKKworSW4gY29uZmlndXJlLmluLCBpdCBjb250YWlucyB0aGUgZm9sbG93aW5nOgorCisJQVBSX0NIRUNLX1NJWkVPRl9FWFRFTkRFRChbI2luY2x1ZGUgPHN5cy90eXBlcy5oPl0sIG9mZl90LCA4KQorCit0aGUgbWFjcm8gIkFQUl9DSEVDS19TSVpFT0ZfRVhURU5ERUQiIHdhcyBkZWZpbmVkIGluIGJ1aWxkL2Fwcl9jb21tb24ubTQsCitpdCB1c2UgdGhlICJBQ19UUllfUlVOIiBtYWNybywgdGhpcyBtYWNybyBsZXQgdGhlIG9mZl90IHRvIDgsIHdoZW4gY3Jvc3MKK2NvbXBpbGluZyBlbmFibGUuCisKK1NvIGl0IHdhcyBoYXJkY29kZWQgZm9yIGNyb3NzIGNvbXBpbGluZywgd2Ugc2hvdWxkIGRldGVjdCBpdCBkeW5hbWljIGJhc2VkIG9uCit0aGUgc3lzcm9vdCdzIGdsaWJjLiBXZSBjaGFuZ2UgaXQgdG8gdGhlIGZvbGxvd2luZzoKKworCUFDX0NIRUNLX1NJWkVPRihvZmZfdCkKKworVGhlIHNhbWUgZm9yIHRoZSBmb2xsb3dpbmcgaGFyZGNvZGVkIHR5cGVzIGZvciBjcm9zcyBjb21waWxpbmc6CisKKwlwaWRfdAk4CisJc3NpemVfdAk4CisJc2l6ZV90CTgKKwlvZmZfdAk4CisKK0NoYW5nZSB0aGUgYWJvdmUgY29ycmVzcG9uZGluZ2x5LgorCitTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGNvbmZpZ3VyZS5pbiB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCitpbmRleCAzYjEwNDIyLi5hMjI3ZTcyIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmluCisrKysgYi9jb25maWd1cmUuaW4KK0BAIC0xNzY5LDcgKzE3NjksNyBAQCBlbHNlCisgICAgIHNvY2tsZW5fdF92YWx1ZT0iaW50IgorIGZpCisgCistQVBSX0NIRUNLX1NJWkVPRl9FWFRFTkRFRChbI2luY2x1ZGUgPHN5cy90eXBlcy5oPl0sIHBpZF90LCA4KQorK0FDX0NIRUNLX1NJWkVPRihwaWRfdCkKKyAKKyBpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX3BpZF90IiA9ICIkYWNfY3Zfc2l6ZW9mX3Nob3J0IjsgdGhlbgorICAgICBwaWRfdF9mbXQ9JyNkZWZpbmUgQVBSX1BJRF9UX0ZNVCAiaGQiJworQEAgLTE4MzgsNyArMTgzOCw3IEBAIEFQUl9DSEVDS19UWVBFU19DT01QQVRJQkxFKHNzaXplX3QsIGxvbmcsIFtzc2l6ZV90X2ZtdD0ibGQiXSkKKyBBUFJfQ0hFQ0tfVFlQRVNfQ09NUEFUSUJMRShzaXplX3QsIHVuc2lnbmVkIGludCwgW3NpemVfdF9mbXQ9InUiXSkKKyBBUFJfQ0hFQ0tfVFlQRVNfQ09NUEFUSUJMRShzaXplX3QsIHVuc2lnbmVkIGxvbmcsIFtzaXplX3RfZm10PSJsdSJdKQorIAorLUFQUl9DSEVDS19TSVpFT0ZfRVhURU5ERUQoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD5dLCBzc2l6ZV90LCA4KQorK0FDX0NIRUNLX1NJWkVPRihzc2l6ZV90KQorIAorIEFDX01TR19DSEVDS0lORyhbd2hpY2ggZm9ybWF0IHRvIHVzZSBmb3IgYXByX3NzaXplX3RdKQorIGlmIHRlc3QgLW4gIiRzc2l6ZV90X2ZtdCI7IHRoZW4KK0BAIC0xODU1LDcgKzE4NTUsNyBAQCBmaQorIAorIHNzaXplX3RfZm10PSIjZGVmaW5lIEFQUl9TU0laRV9UX0ZNVCBcIiRzc2l6ZV90X2ZtdFwiIgorIAorLUFQUl9DSEVDS19TSVpFT0ZfRVhURU5ERUQoWyNpbmNsdWRlIDxzdGRkZWYuaD5dLCBzaXplX3QsIDgpCisrQUNfQ0hFQ0tfU0laRU9GKHNpemVfdCkKKyAKKyBBQ19NU0dfQ0hFQ0tJTkcoW3doaWNoIGZvcm1hdCB0byB1c2UgZm9yIGFwcl9zaXplX3RdKQorIGlmIHRlc3QgLW4gIiRzaXplX3RfZm10IjsgdGhlbgorQEAgLTE4NzIsNyArMTg3Miw3IEBAIGZpCisgCisgc2l6ZV90X2ZtdD0iI2RlZmluZSBBUFJfU0laRV9UX0ZNVCBcIiRzaXplX3RfZm10XCIiCisgCistQVBSX0NIRUNLX1NJWkVPRl9FWFRFTkRFRChbI2luY2x1ZGUgPHN5cy90eXBlcy5oPl0sIG9mZl90LCA4KQorK0FDX0NIRUNLX1NJWkVPRihvZmZfdCkKKyAKKyBpZiB0ZXN0ICIke2FjX2N2X3NpemVvZl9vZmZfdH0ke2Fwcl9jdl91c2VfbGZzNjR9IiA9ICI0eWVzIjsgdGhlbgorICAgICAjIEVuYWJsZSBMRlMKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDA3LWV4cGxpY2l0bHktbGluay1saWJhcHItYWdhaW5zdC1waHRyZWFkLXRvLW1ha2UtZ29sZC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDA3LWV4cGxpY2l0bHktbGluay1saWJhcHItYWdhaW5zdC1waHRyZWFkLXRvLW1ha2UtZ29sZC0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc2MGIwMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDctZXhwbGljaXRseS1saW5rLWxpYmFwci1hZ2FpbnN0LXBodHJlYWQtdG8tbWFrZS1nb2xkLS5wYXRjaApAQCAtMCwwICsxLDUwIEBACitGcm9tIGM2YWZjNGE0YTc2NjQ3OGNiNmFhNmI0M2E1MDA1MTg4MWI2MzE4ZDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+CitEYXRlOiBGcmksIDMgTWFyIDIwMTcgMjI6MjQ6MTcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCA3LzddIGV4cGxpY2l0bHkgbGluayBsaWJhcHIgYWdhaW5zdCBwaHRyZWFkIHRvIG1ha2UgZ29sZCBoYXBweQorIG9uIHRlc3QKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfbXV0ZXhhdHRyX2luaXQnCit8IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZScKK3wgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX211dGV4YXR0cl9kZXN0cm95JworfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfbXV0ZXhfdHJ5bG9jaycKK3wgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX2F0dHJfc2V0c3RhY2tzaXplJworfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfY3JlYXRlJworfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfam9pbicKK3wgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX2RldGFjaCcKK3wgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX3NpZ21hc2snCit8IC4uLy5saWJzL2xpYmFwci0xLnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAncHRocmVhZF9vbmNlJworfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfa2V5X2NyZWF0ZScKK3wgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX2dldHNwZWNpZmljJworfCAuLi8ubGlicy9saWJhcHItMS5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3B0aHJlYWRfa2V5X2RlbGV0ZScKK3wgLi4vLmxpYnMvbGliYXByLTEuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdwdGhyZWFkX3NldHNwZWNpZmljJworfCBjb2xsZWN0MjogZXJyb3I6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKK3wgTWFrZWZpbGU6MTE0OiByZWNpcGUgZm9yIHRhcmdldCAnZ2xvYmFsbXV0ZXhjaGlsZCcgZmFpbGVkCit8IG1ha2VbMV06ICoqKiBbZ2xvYmFsbXV0ZXhjaGlsZF0gRXJyb3IgMQorfCBtYWtlWzFdOiBMZWF2aW5nIGRpcmVjdG9yeSAnL2hvbWUvc3VwZXJhbmR5L3RtcC9vZS1jb3JlLWdsaWJjL3dvcmsvY29ydGV4YTd0MmhmLW5lb24tdmZwdjQtYW5nc3Ryb20tbGludXgtZ251ZWFiaS9hcHIvMS41LjItcjAvYXByLTEuNS4yL3Rlc3QnCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuaW4gfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgoraW5kZXggYTIyN2U3Mi4uY2JjMGY5MCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtNzg0LDYgKzc4NCw3IEBAIGVsc2UKKyAgICAgICAgICAgQVBSX1BUSFJFQURTX0NIRUNLX1JFU1RPUkUgXSApCisgICAgIGZpCisgICAgIGlmIHRlc3QgIiRwdGhyZWFkaCIgPSAiMSI7IHRoZW4KKysgICAgICAgIEFQUl9BRERUTyhMSUJTLFstbHB0aHJlYWRdKQorICAgICAgICAgQVBSX0NIRUNLX1BUSFJFQURfR0VUU1BFQ0lGSUNfVFdPX0FSR1MKKyAgICAgICAgIEFQUl9DSEVDS19QVEhSRUFEX0FUVFJfR0VUREVUQUNIU1RBVEVfT05FX0FSRworICAgICAgICAgQVBSX0NIRUNLX1BUSFJFQURfUkVDVVJTSVZFX01VVEVYCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvRml4LXBhY2tldC1kaXNjYXJkcy1IVFRQLXJlZGlyZWN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvRml4LXBhY2tldC1kaXNjYXJkcy1IVFRQLXJlZGlyZWN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODA1YjhiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByL0ZpeC1wYWNrZXQtZGlzY2FyZHMtSFRUUC1yZWRpcmVjdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZpeCBwYWNrZXQgZGlzY2FyZHMgSFRUUCByZWRpcmVjdC4KLQotRGlzY29ubmVjdCB0aGUgY29ubmVjdGlvbiBieSBwb2xsKCkgdGltZW91dC4KLUlmIHRpbWVvdXQ9MCBhbmQgYXByX3dhaXRfZm9yX2lvX29yX3RpbWVvdXQoKT1BUFJfVElNRVVQIHRoZW4KLWFwcl9zb2NrZXRfcmVjdigpIHJldHVybnMgRUFHQUlOLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTm9yaWFraSBZb3NoaXRhbmUgPHlvc2hpdGFuZS5ucnNAY250Lm5jb3MubmVjLmNvLmpwPgotU2lnbmVkLW9mZi1ieTogTGkgV2FuZyA8bGkud2FuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gbmV0d29ya19pby91bml4L3NlbmRyZWN2LmMgfCAgICA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9uZXR3b3JrX2lvL3VuaXgvc2VuZHJlY3YuYyBiL25ldHdvcmtfaW8vdW5peC9zZW5kcmVjdi5jCi1pbmRleCBjMTMzYTI2Li5lOGZhZjE1IDEwMDY0NAotLS0tIGEvbmV0d29ya19pby91bml4L3NlbmRyZWN2LmMKLSsrKyBiL25ldHdvcmtfaW8vdW5peC9zZW5kcmVjdi5jCi1AQCAtODUsNiArODUsMTAgQEAgYXByX3N0YXR1c190IGFwcl9zb2NrZXRfcmVjdihhcHJfc29ja2V0X3QgKnNvY2ssIGNoYXIgKmJ1ZiwgYXByX3NpemVfdCAqbGVuKQotICAgICAgICAgICAgICAgICAgICAgICAmJiAoc29jay0+dGltZW91dCA+IDApKSB7Ci0gZG9fc2VsZWN0OgotICAgICAgICAgYXJ2ID0gYXByX3dhaXRfZm9yX2lvX29yX3RpbWVvdXQoTlVMTCwgc29jaywgMSk7Ci0rICAgICAgICBpZiAoKGFydiA9PSBBUFJfVElNRVVQKSAmJiAoc29jay0+dGltZW91dCA9PSAwKSkgewotKyAgICAgICAgICAgICpsZW4gPSAwOwotKyAgICAgICAgICAgIHJldHVybiBFQUdBSU47Ci0rICAgICAgICB9Ci0gICAgICAgICBpZiAoYXJ2ICE9IEFQUl9TVUNDRVNTKSB7Ci0gICAgICAgICAgICAgKmxlbiA9IDA7Ci0gICAgICAgICAgICAgcmV0dXJuIGFydjsKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci9jbGVhbnVwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvY2xlYW51cC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY3ODRlMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci9jbGVhbnVwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1JbmRleDogYXByLTEuNC4yL2J1aWxkL2J1aWxkY2hlY2suc2gKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhcHItMS40LjIub3JpZy9idWlsZC9idWlsZGNoZWNrLnNoCTIwMDktMTEtMTMgMDg6Mjc6MTYuMDAwMDAwMDAwICswODAwCi0rKysgYXByLTEuNC4yL2J1aWxkL2J1aWxkY2hlY2suc2gJMjAxMC0xMS0yNiAxNTo0NDowMC4wMDAwMDAwMDAgKzA4MDAKLUBAIC0zMiwzNSArMzIsNCBAQAotIGVjaG8gImJ1aWxkY29uZjogYXV0b2NvbmYgdmVyc2lvbiAkYWNfdmVyc2lvbiAob2spIgotIGZpCi0gCi0tIyBTYW1wbGUgbGlidG9vbCAtLXZlcnNpb24gb3V0cHV0czoKLS0jIGx0bWFpbi5zaCAoR05VIGxpYnRvb2wpIDEuMy4zICgxLjM4NS4yLjE4MSAxOTk5LzA3LzAyIDE1OjQ5OjExKQotLSMgbHRtYWluLnNoIChHTlUgbGlidG9vbCAxLjEzNjEgMjAwNC8wMS8wMiAyMzoxMDo1MikgMS41YQotLSMgb3V0cHV0IGlzIG11bHRpbGluZSBmcm9tIDEuNSBvbndhcmRzCi0tCi0tIyBSZXF1aXJlIGxpYnRvb2wgMS40IG9yIG5ld2VyCi0tbGlidG9vbD1gYnVpbGQvUHJpbnRQYXRoIGdsaWJ0b29sMSBnbGlidG9vbCBsaWJ0b29sIGxpYnRvb2wxNSBsaWJ0b29sMTRgCi0tbHRfcHZlcnNpb249YCRsaWJ0b29sIC0tdmVyc2lvbiAyPi9kZXYvbnVsbHxzZWQgLWUgJ3MvKFteKV0qKS8vZztzL15bXjAtOV0qLy87cy9bLSBdLiovL2c7cSdgCi0taWYgdGVzdCAteiAiJGx0X3B2ZXJzaW9uIjsgdGhlbgotLWVjaG8gImJ1aWxkY29uZjogbGlidG9vbCBub3QgZm91bmQuIgotLWVjaG8gIiAgICAgICAgICAgWW91IG5lZWQgbGlidG9vbCB2ZXJzaW9uIDEuNCBvciBuZXdlciBpbnN0YWxsZWQiCi0tZWNobyAiICAgICAgICAgICB0byBidWlsZCBBUFIgZnJvbSBTVk4uIgotLWV4aXQgMQotLWZpCi0tbHRfdmVyc2lvbj1gZWNobyAkbHRfcHZlcnNpb258c2VkIC1lICdzL1woW2Etel0qXCkkLy5cMS8nYAotLUlGUz0uOyBzZXQgJGx0X3ZlcnNpb247IElGUz0nICcKLS1sdF9zdGF0dXM9Imdvb2QiCi0taWYgdGVzdCAiJDEiID0gIjEiOyB0aGVuCi0tICAgaWYgdGVzdCAiJDIiIC1sdCAiNCI7IHRoZW4KLS0gICAgICBsdF9zdGF0dXM9ImJhZCIKLS0gICBmaQotLWZpCi0taWYgdGVzdCAkbHRfc3RhdHVzID0gImdvb2QiOyB0aGVuCi0tICAgZWNobyAiYnVpbGRjb25mOiBsaWJ0b29sIHZlcnNpb24gJGx0X3B2ZXJzaW9uIChvaykiCi0tICAgZXhpdCAwCi0tZmkKLS0KLS1lY2hvICJidWlsZGNvbmY6IGxpYnRvb2wgdmVyc2lvbiAkbHRfcHZlcnNpb24gZm91bmQuIgotLWVjaG8gIiAgICAgICAgICAgWW91IG5lZWQgbGlidG9vbCB2ZXJzaW9uIDEuNCBvciBuZXdlciBpbnN0YWxsZWQiCi0tZWNobyAiICAgICAgICAgICB0byBidWlsZCBBUFIgZnJvbSBTVk4uIgotLQotLWV4aXQgMQotK2V4aXQgMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvY29uZmlnZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvY29uZmlnZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDVjNGY2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByL2NvbmZpZ2ZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotSW5kZXg6IGFwci0xLjMuMy9hcHItY29uZmlnLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYXByLTEuMy4zLm9yaWcvYXByLWNvbmZpZy5pbgkyMDA5LTAxLTEyIDE1OjE2OjMxLjAwMDAwMDAwMCArMDAwMAotKysrIGFwci0xLjMuMy9hcHItY29uZmlnLmluCTIwMDktMDEtMTIgMTU6MTk6MjUuMDAwMDAwMDAwICswMDAwCi1AQCAtMTUyLDE0ICsxNTIsNyBAQAotICAgICBmbGFncz0iJGZsYWdzICRMREZMQUdTIgotICAgICA7OwotICAgICAtLWluY2x1ZGVzKQotLSAgICBpZiB0ZXN0ICIkbG9jYXRpb24iID0gImluc3RhbGxlZCI7IHRoZW4KLSAgICAgICAgIGZsYWdzPSIkZmxhZ3MgLUkkaW5jbHVkZWRpciAkRVhUUkFfSU5DTFVERVMiCi0tICAgIGVsaWYgdGVzdCAiJGxvY2F0aW9uIiA9ICJzb3VyY2UiOyB0aGVuCi0tICAgICAgICBmbGFncz0iJGZsYWdzIC1JJEFQUl9TT1VSQ0VfRElSL2luY2x1ZGUgJEVYVFJBX0lOQ0xVREVTIgotLSAgICBlbHNlCi0tICAgICAgICAjIHRoaXMgaXMgZm9yIFZQQVRIIGJ1aWxkcwotLSAgICAgICAgZmxhZ3M9IiRmbGFncyAtSSRBUFJfQlVJTERfRElSL2luY2x1ZGUgLUkkQVBSX1NPVVJDRV9ESVIvaW5jbHVkZSAkRVhUUkFfSU5DTFVERVMiCi0tICAgIGZpCi0gICAgIDs7Ci0gICAgIC0tc3JjZGlyKQotICAgICBlY2hvICRBUFJfU09VUkNFX0RJUgotQEAgLTE4MSwyOSArMTY3LDE0IEBACi0gICAgIGV4aXQgMAotICAgICA7OwotICAgICAtLWxpbmstbGQpCi0tICAgIGlmIHRlc3QgIiRsb2NhdGlvbiIgPSAiaW5zdGFsbGVkIjsgdGhlbgotLSAgICAgICAgIyMjIGF2b2lkIHVzaW5nIC1MIGlmIGxpYmRpciBpcyBhICJzdGFuZGFyZCIgbG9jYXRpb24gbGlrZSAvdXNyL2xpYgotLSAgICAgICAgZmxhZ3M9IiRmbGFncyAtTCRsaWJkaXIgLWwke0FQUl9MSUJOQU1FfSIKLS0gICAgZWxzZQotLSAgICAgICAgIyMjIHRoaXMgc3VyZWx5IGNhbid0IHdvcmsgc2luY2UgdGhlIGxpYnJhcnkgaXMgaW4gLmxpYnM/Ci0tICAgICAgICBmbGFncz0iJGZsYWdzIC1MJEFQUl9CVUlMRF9ESVIgLWwke0FQUl9MSUJOQU1FfSIKLS0gICAgZmkKLSsgICAgICAgIGZsYWdzPSIkZmxhZ3MgLWwke0FQUl9MSUJOQU1FfSIKLSAgICAgOzsKLSAgICAgLS1saW5rLWxpYnRvb2wpCi0gICAgICMgSWYgdGhlIExBX0ZJTEUgZXhpc3RzIHdoZXJlIHdlIHRoaW5rIGl0IHNob3VsZCBiZSwgdXNlIGl0LiAgSWYgd2UncmUKLSAgICAgIyBpbnN0YWxsZWQgYW5kIHRoZSBMQV9GSUxFIGRvZXMgbm90IGV4aXN0LCBhc3N1bWUgdG8gdXNlIC1MLy1sCi0gICAgICMgKHRoZSBMQV9GSUxFIG1heSBub3QgaGF2ZSBiZWVuIGluc3RhbGxlZCkuICBJZiB3ZSdyZSBidWlsZGluZyBvdXJzZWx2ZXMsCi0gICAgICMgd2UnbGwgYXNzdW1lIHRoYXQgYXQgc29tZSBwb2ludCB0aGUgLmxhIGZpbGUgYmUgY3JlYXRlZC4KLS0gICAgaWYgdGVzdCAtZiAiJExBX0ZJTEUiOyB0aGVuCi0tICAgICAgICBmbGFncz0iJGZsYWdzICRMQV9GSUxFIgotLSAgICBlbGlmIHRlc3QgIiRsb2NhdGlvbiIgPSAiaW5zdGFsbGVkIjsgdGhlbgotLSAgICAgICAgIyMjIGF2b2lkIHVzaW5nIC1MIGlmIGxpYmRpciBpcyBhICJzdGFuZGFyZCIgbG9jYXRpb24gbGlrZSAvdXNyL2xpYgotLSAgICAgICAgIyBTaW5jZSB0aGUgdXNlciBpcyBzcGVjaWZ5aW5nIHRoZXkgYXJlIGxpbmtpbmcgd2l0aCBsaWJ0b29sLCB3ZQotLSAgICAgICAgIyAqa25vdyogdGhhdCAtUiB3aWxsIGJlIHJlY29nbml6ZWQgYnkgbGlidG9vbC4KLS0gICAgICAgIGZsYWdzPSIkZmxhZ3MgLUwkbGliZGlyIC1SJGxpYmRpciAtbCR7QVBSX0xJQk5BTUV9IgotLSAgICBlbHNlCi0tICAgICAgICBmbGFncz0iJGZsYWdzICRMQV9GSUxFIgotLSAgICBmaQotKyAgICAgICAgZmxhZ3M9IiRmbGFncyAtbCR7QVBSX0xJQk5BTUV9IgotICAgICA7OwotICAgICAtLXNobGliLXBhdGgtdmFyKQotICAgICBlY2hvICIkU0hMSUJQQVRIX1ZBUiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByL2NvbmZpZ3VyZS5pbi1maXgtTFRGTEFHUy10by1tYWtlLWl0LXdvcmstd2l0aC1jY2FjaGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci9jb25maWd1cmUuaW4tZml4LUxURkxBR1MtdG8tbWFrZS1pdC13b3JrLXdpdGgtY2NhY2hlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTIxZWViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByL2NvbmZpZ3VyZS5pbi1maXgtTFRGTEFHUy10by1tYWtlLWl0LXdvcmstd2l0aC1jY2FjaGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIGQ0MzkwOTNhYTA3YTQ4NmY1NTkyMDZhYzllNTgwOGE2YTE4MjE4Y2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMTkgTm92IDIwMTUgMTg6MjU6MzggLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmluOiBmaXggTFRGTEFHUyB0byBtYWtlIGl0IHdvcmsgd2l0aCBjY2FjaGUKLQotV2hlbiBjY2FjaGUgaXMgZW5hYmxlZCwgbGlidG9vbCByZXF1aXJlcyAtLXRhZz1DQyB3aGVuIHVzZSBjY2FjaGUsCi1vdGhlcndpc2Ugd2hlbiBidWlsZGluZyBhcHItdXRpbCB3aXRoIGNjYWNoZSBlbmFibGVkOgotCi18IGxpYnRvb2w6IGNvbXBpbGU6IHVuYWJsZSB0byBpbmZlciB0YWdnZWQgY29uZmlndXJhdGlvbgotfCBsaWJ0b29sOiBlcnJvcjogc3BlY2lmeSBhIHRhZyB3aXRoICctLXRhZycKLXwgbGlidG9vbDogY29tcGlsZTogdW5hYmxlIHRvIGluZmVyIHRhZ2dlZCBjb25maWd1cmF0aW9uCi18IG1ha2VbMV06ICoqKiBbYnVja2V0cy9hcHJfYnVja2V0cy5sb10gRXJyb3IgMQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuaW4gfCAgICAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDVhNGE5ODguLjlkNTdhZTYgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTI0Niw3ICsyNDYsNyBAQCBjYXNlICRob3N0IGluCi0gICAgIDs7Ci0gKikKLSAgICAgaWYgdGVzdCAieCRMVEZMQUdTIiA9ICJ4IjsgdGhlbgotLSAgICAgICAgTFRGTEFHUz0nLS1zaWxlbnQnCi0rICAgICAgICBMVEZMQUdTPSctLXNpbGVudCAtLXRhZz1DQycKLSAgICAgZmkKLSAgICAgaWYgdGVzdCAiJGV4cGVyaW1lbnRhbF9saWJ0b29sIiA9ICJ5ZXMiOyB0aGVuCi0gICAgICAgICAjIFVzZSBhIGN1c3RvbS1tYWRlIGxpYnRvb2wgcmVwbGFjZW1lbnQKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci9jb25maWd1cmVfZml4ZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci9jb25maWd1cmVfZml4ZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1MTQwMDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvY29uZmlndXJlX2ZpeGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1JbmRleDogYXByLTEuMy4zL2NvbmZpZ3VyZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGFwci0xLjMuMy5vcmlnL2NvbmZpZ3VyZS5pbgotKysrIGFwci0xLjMuMy9jb25maWd1cmUuaW4KLUBAIC03OTQsMzkgKzc5NCw2IEBAIEFDX0NIRUNLX0ZVTkNTKFttbWFwIG11bm1hcCBzaG1fb3BlbiBzaG0KLSAgICAgICAgICAgICAgICAgY3JlYXRlX2FyZWFdKQotIAotIEFQUl9DSEVDS19ERUZJTkUoTUFQX0FOT04sIHN5cy9tbWFuLmgpCi0tQUNfQ0hFQ0tfRklMRSgvZGV2L3plcm8pCi0tCi0tIyBOb3QgYWxsIHN5c3RlbXMgY2FuIG1tYXAgL2Rldi96ZXJvIChzdWNoIGFzIEhQLVVYKS4gIENoZWNrIGZvciB0aGF0LgotLWlmIHRlc3QgIiRhY19jdl9mdW5jX21tYXAiID0gInllcyIgJiYKLS0gICB0ZXN0ICIkYWNfY3ZfZmlsZV9fZGV2X3plcm8iID0gInllcyI7IHRoZW4KLS0gICAgQUNfTVNHX0NIRUNLSU5HKGZvciBtbWFwIHRoYXQgY2FuIG1hcCAvZGV2L3plcm8pCi0tICAgIEFDX1RSWV9SVU4oWwotLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLS0jaW5jbHVkZSA8ZmNudGwuaD4KLS0jaWZkZWYgSEFWRV9TWVNfTU1BTl9ICi0tI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci0tI2VuZGlmCi0tICAgIGludCBtYWluKCkKLS0gICAgewotLSAgICAgICAgaW50IGZkOwotLSAgICAgICAgdm9pZCAqbTsKLS0gICAgICAgIGZkID0gb3BlbigiL2Rldi96ZXJvIiwgT19SRFdSKTsKLS0gICAgICAgIGlmIChmZCA8IDApIHsKLS0gICAgICAgICAgICByZXR1cm4gMTsKLS0gICAgICAgIH0KLS0gICAgICAgIG0gPSBtbWFwKDAsIHNpemVvZih2b2lkKiksIFBST1RfUkVBRHxQUk9UX1dSSVRFLCBNQVBfU0hBUkVELCBmZCwgMCk7Ci0tICAgICAgICBpZiAobSA9PSAodm9pZCAqKS0xKSB7ICAvKiBha2EgTUFQX0ZBSUxFRCAqLwotLSAgICAgICAgICAgIHJldHVybiAyOwotLSAgICAgICAgfQotLSAgICAgICAgaWYgKG11bm1hcChtLCBzaXplb2Yodm9pZCopKSA8IDApIHsKLS0gICAgICAgICAgICByZXR1cm4gMzsKLS0gICAgICAgIH0KLS0gICAgICAgIHJldHVybiAwOwotLSAgICB9XSwgW10sIFthY19jdl9maWxlX19kZXZfemVybz1ub10sIFthY19jdl9maWxlX19kZXZfemVybz1ub10pCi0tCi0tICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2ZpbGVfX2Rldl96ZXJvKQotLWZpCi0gCi0gIyBOb3cgd2UgZGV0ZXJtaW5lIHdoaWNoIG9uZSBpcyBvdXIgYW5vbnltb3VzIHNobWVtIHByZWZlcmVuY2UuCi0gaGF2ZXNobWdldGFub249IjAiCi1AQCAtMTUxOCwxMyArMTQ4NSwxNCBAQCBlbHNlCi0gICAgIGJpZ2VuZGlhbj0wCi0gZmkKLSAKLS1BUFJfQ0hFQ0tfU0laRU9GX0VYVEVOREVEKFsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tI2luY2x1ZGUgPHN5cy91aW8uaD5dLHN0cnVjdCBpb3ZlYywwKQotLWlmIHRlc3QgIiRhY19jdl9zaXplb2Zfc3RydWN0X2lvdmVjIiA9ICIwIjsgdGhlbgotLSAgICBoYXZlX2lvdmVjPTAKLS1lbHNlCi0tICAgIGhhdmVfaW92ZWM9MQotLWZpCi0rI0FQUl9DSEVDS19TSVpFT0ZfRVhURU5ERUQoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsjI2luY2x1ZGUgPHN5cy91aW8uaD5dLHN0cnVjdCBpb3ZlYywwKQotKyNpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX3N0cnVjdF9pb3ZlYyIgPSAiMCI7IHRoZW4KLSsjICAgIGhhdmVfaW92ZWM9MAotKyNlbHNlCi0rIyAgICBoYXZlX2lvdmVjPTEKLSsjZmkKLStoYXZlX2lvdmVjPTEKLSAKLSBBQ19TVUJTVCh2b2lkcF9zaXplKQotIEFDX1NVQlNUKHNob3J0X3ZhbHVlKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvdXBncmFkZS1hbmQtZml4LTEuNS4xLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvdXBncmFkZS1hbmQtZml4LTEuNS4xLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjQ5OWY1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByL3VwZ3JhZGUtYW5kLWZpeC0xLjUuMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLU1ha2VmaWxlLmluOiBmaXggY3Jvc3MgY29tcGlsaW5nIGZhaWxlZAotCi1UaGUgdG9vbHMvZ2VuX3Rlc3RfY2hhciB3YXMgaW52b2tlZCBhdCBidWlsZCB0aW1lLAotYW5kIGl0IGRpZG4ndCB3b3JrIGZvciB0aGUgY3Jvc3MgY29tcGlsaW5nLCBzbyB3ZQotY29tcGlsZSBpdCB3aXRoICRCVUlMRF9DQy4KLQotUmVtb3ZlIHRoZSAndG9vbHMnIGRpciBjcmVhdGlvbiwgaXQgYWx3YXlzIGV4aXN0ZWQuCi1BbmQgaXQgY2F1c2VkIGdlbl90ZXN0X2NoYXIgdW5leHBlY3RlZCByZWJ1aWx0IGF0Ci1kb19pbnN0YWxsIHRpbWUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIE1ha2VmaWxlLmluIHwgMTAgKystLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCi1pbmRleCBhMmE1MTk0Li41ZmUwMjhmIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuaW4KLSsrKyBiL01ha2VmaWxlLmluCi1AQCAtNDYsNyArNDYsNiBAQCBMVF9WRVJTSU9OID0gQExUX1ZFUlNJT05ACi0gCi0gQ0xFQU5fVEFSR0VUUyA9IGFwci1jb25maWcub3V0IGFwci5leHAgZXhwb3J0cy5jIGV4cG9ydF92YXJzLmMgLm1ha2UuZGlycyBcCi0gCWJ1aWxkL2Fwcl9ydWxlcy5vdXQgdG9vbHMvZ2VuX3Rlc3RfY2hhckBFWEVFWFRAIFwKLS0JdG9vbHMvZ2VuX3Rlc3RfY2hhci5vIHRvb2xzL2dlbl90ZXN0X2NoYXIubG8gXAotIAlpbmNsdWRlL3ByaXZhdGUvYXByX2VzY2FwZV90ZXN0X2NoYXIuaAotIERJU1RDTEVBTl9UQVJHRVRTID0gY29uZmlnLmNhY2hlIGNvbmZpZy5sb2cgY29uZmlnLnN0YXR1cyBcCi0gCWluY2x1ZGUvYXByLmggaW5jbHVkZS9hcmNoL3VuaXgvYXByX3ByaXZhdGUuaCBcCi1AQCAtMTI5LDEzICsxMjgsOCBAQCBjaGVjazogJChUQVJHRVRfTElCKQotIGV0YWdzOgotIAlldGFncyBgZmluZCAuIC1uYW1lICcqLltjaF0nYAotIAotLU9CSkVDVFNfZ2VuX3Rlc3RfY2hhciA9IHRvb2xzL2dlbl90ZXN0X2NoYXIubG8gJChMT0NBTF9MSUJTKQotLXRvb2xzL2dlbl90ZXN0X2NoYXIubG86IHRvb2xzL2dlbl90ZXN0X2NoYXIuYwotLQkkKEFQUl9NS0RJUikgdG9vbHMKLS0JJChMVF9DT01QSUxFKQotLQotLXRvb2xzL2dlbl90ZXN0X2NoYXJARVhFRVhUQDogJChPQkpFQ1RTX2dlbl90ZXN0X2NoYXIpCi0tCSQoTElOS19QUk9HKSAkKE9CSkVDVFNfZ2VuX3Rlc3RfY2hhcikgJChBTExfTElCUykKLSt0b29scy9nZW5fdGVzdF9jaGFyQEVYRUVYVEA6IHRvb2xzL2dlbl90ZXN0X2NoYXIuYwotKwkkKEJVSUxEX0NDKSAkKENGTEFHU19GT1JfQlVJTEQpICQ8IC1vICRACi0gCi0gaW5jbHVkZS9wcml2YXRlL2Fwcl9lc2NhcGVfdGVzdF9jaGFyLmg6IHRvb2xzL2dlbl90ZXN0X2NoYXJARVhFRVhUQAotIAkkKEFQUl9NS0RJUikgaW5jbHVkZS9wcml2YXRlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwcl8xLjYuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmVlZDUzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLVNVTU1BUlkgPSAiQXBhY2hlIFBvcnRhYmxlIFJ1bnRpbWUgKEFQUikgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly9hcHIuYXBhY2hlLm9yZy8iCi1TRUNUSU9OID0gImxpYnMiCi1ERVBFTkRTID0gInV0aWwtbGludXgiCi0KLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTRkZmQ0Y2QyMTY4MjhjOGNhZTVkZTVhMTJmMzg0NGM4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvYXByX2xpYi5oO2VuZGxpbmU9MTc7bWQ1PWVlNDJmYTc1NzVkYzQwNTgwYTllMDFjMWI3NWZhZTk2IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVNSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS9hcHIvJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlX2ZpeGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NsZWFudXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY29uZmlnZml4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly91cGdyYWRlLWFuZC1maXgtMS41LjEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vRml4LXBhY2tldC1kaXNjYXJkcy1IVFRQLXJlZGlyZWN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5pbi1maXgtTFRGTEFHUy10by1tYWtlLWl0LXdvcmstd2l0aC1jY2FjaGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hcHItZml4LW9mZl90LXNpemUtZG9lc24tdC1tYXRjaC1pbi1nbGliYy13aGVuLWNyb3NzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItZXhwbGljaXRseS1saW5rLWxpYmFwci1hZ2FpbnN0LXBodHJlYWQtdG8tbWFrZS1nb2xkLS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlODFhODUxOTY3Yzc5YjVjZTliZmJjOTA5ZTRiZjczNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwOTEwOWNlYTM3N2JhYjAwMjhiYmExOWE5MmI1YjBlODk2MDNkZjllYWIwNWMwZjdkYmQ0ZGQ4M2Q0OGRjZWJkIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgbGliX3BhY2thZ2UgYmluY29uZmlnIG11bHRpbGliX2hlYWRlciBwdGVzdAotCi1PRV9CSU5DT05GSUdfRVhUUkFfTUFOR0xFID0gIiAtZSAnczpsb2NhdGlvbj1zb3VyY2U6bG9jYXRpb249aW5zdGFsbGVkOiciCi0KLSMgQWRkZWQgdG8gZml4IHNvbWUgaXNzdWVzIHdpdGggY21ha2UuIFJlZmVyIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9ibXdjYXJpdC9tZXRhLXJvcy9pc3N1ZXMvNjgjaXNzdWVjb21tZW50LTE5ODk2OTI4Ci1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYXByX2N2X211dGV4X3JlY3Vyc2l2ZT15ZXMiCi0KLSMgQWxzbyBzdXBwcmVzcyB0cnlpbmcgdG8gdXNlIHNjdHAuCi0jCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPW5vIGFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfdWlvX2g9bm8iCi0KLSMgT3RoZXJ3aXNlIGxpYnRvb2wgZmFpbHMgdG8gY29tcGlsZSBhcHItdXRpbHMKLSMgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGNvbXBpbGU6IHVuYWJsZSB0byBpbmZlciB0YWdnZWQgY29uZmlndXJhdGlvbgotIyB4ODZfNjQtbGludXgtbGlidG9vbDogICBlcnJvcjogc3BlY2lmeSBhIHRhZyB3aXRoICctLXRhZycKLUNDQUNIRSA9ICIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0JIyBBdm9pZCBhYnNvbHV0ZSBwYXRocyBmb3IgZ3JlcCBzaW5jZSBpdCBjYXVzZXMgZmFpbHVyZXMKLQkjIHdoZW4gdXNpbmcgc3N0YXRlIGJldHdlZW4gZGlmZmVyZW50IGhvc3RzIHdpdGggZGlmZmVyZW50Ci0JIyBpbnN0YWxsIHBhdGhzIGZvciBncmVwLgotCWV4cG9ydCBHUkVQPSJncmVwIgotCi0JY2QgJHtTfQotCS4vYnVpbGRjb25mCi19Ci0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2Fwci5leHAgJHtkYXRhZGlyfS9idWlsZC0xLyoiCi1SREVQRU5EU18ke1BOfS1kZXYgKz0gImJhc2giCi0KLSNmb3Igc29tZSByZWFzb24sIGJ1aWxkL2xpYnRvb2wubTQgaGFuZGxlZCBieSBidWlsZGNvbmYgc3RpbGwgYmUgb3ZlcndyaXR0ZW4KLSN3aGVuIGF1dG9jb25mLCBzbyBoYW5kbGUgaXQgYWdhaW4uCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCXNlZCAtaSAtZSAncy9MSUJUT09MPVwoLipcKXRvcF9idWlsZC9MSUJUT09MPVwxYXByX2J1aWxkLycgJHtTfS9idWlsZC9saWJ0b29sLm00Ci0Jc2VkIC1pIC1lICdzL0xJQlRPT0w9XCguKlwpdG9wX2J1aWxkL0xJQlRPT0w9XDFhcHJfYnVpbGQvJyAke1N9L2J1aWxkL2Fwcl9ydWxlcy5tawotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlvZV9tdWx0aWxpYl9oZWFkZXIgYXByLmgKLQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FwcgotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0Jc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnICR7RH0ke2RhdGFkaXJ9L2J1aWxkLTEvYXByX3J1bGVzLm1rCi0Jc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIFwKLQkgICAgICAgLWUgJ3MsQVBSX1NPVVJDRV9ESVI9LiosQVBSX1NPVVJDRV9ESVI9LGcnIFwKLQkgICAgICAgLWUgJ3MsQVBSX0JVSUxEX0RJUj0uKixBUFJfQlVJTERfRElSPSxnJyAke0R9JHtiaW5kaXJ9L2Fwci0xLWNvbmZpZwotfQotCi1TU1RBVEVfU0NBTl9GSUxFUyArPSAiYXByX3J1bGVzLm1rIGxpYnRvb2wiCi0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAiYXByX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLQotYXByX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7Ci0JZD0ke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2FwcgotCWluc3RhbGwgLWQgJGQvCi0JY3AgJHtTfS9idWlsZC9hcHJfcnVsZXMubWsgJGQvCi0Jc2VkIC1pIHMsYXByX2J1aWxkZGlyPS4qLGFwcl9idWlsZGRpcj0sZyAkZC9hcHJfcnVsZXMubWsKLQlzZWQgLWkgcyxhcHJfYnVpbGRlcnM9LiosYXByX2J1aWxkZXJzPSxnICRkL2Fwcl9ydWxlcy5tawotCXNlZCAtaSBzLExJQlRPT0w9LiosTElCVE9PTD0ke0hPU1RfU1lTfS1saWJ0b29sLGcgJGQvYXByX3J1bGVzLm1rCi0Jc2VkIC1pIHMsXCRcKGFwcl9idWlsZGVyc1wpLCR7U1RBR0lOR19EQVRBRElSfS9hcHIvLGcgJGQvYXByX3J1bGVzLm1rCi0JY3AgJHtTfS9idWlsZC9ta2Rpci5zaCAkZC8KLQljcCAke1N9L2J1aWxkL21ha2VfZXhwb3J0cy5hd2sgJGQvCi0JY3AgJHtTfS9idWlsZC9tYWtlX3Zhcl9leHBvcnQuYXdrICRkLwotCWNwICR7U30vJHtIT1NUX1NZU30tbGlidG9vbCAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2J1aWxkLTEvbGlidG9vbAotfQotCi1kb19jb21waWxlX3B0ZXN0KCkgewotCWNkICR7U30vdGVzdAotCW9lX3J1bm1ha2UKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQl0PSR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQlta2RpciAtcCAkdC8ubGlicwotCWNwIC1yICR7U30vdGVzdC9kYXRhICR0LwotCWNwIC1yICR7U30vdGVzdC8ubGlicy8qLnNvICR0Ly5saWJzLwotCWNwICR7U30vdGVzdC9wcm9jX2NoaWxkICR0LwotCWNwICR7U30vdGVzdC9yZWFkY2hpbGQgJHQvCi0JY3AgJHtTfS90ZXN0L3NvY2tjaGlsZCAkdC8KLQljcCAke1N9L3Rlc3Qvc29ja3BlcmYgJHQvCi0JY3AgJHtTfS90ZXN0L3Rlc3RhbGwgJHQvCi0JY3AgJHtTfS90ZXN0L3RyeXJlYWQgJHQvCi19Ci0KLWV4cG9ydCBDT05GSUdfU0hFTEw9Ii9iaW4vYmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNi4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHJfMS42LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdiODc4NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNi4zLmJiCkBAIC0wLDAgKzEsMTE3IEBACitTVU1NQVJZID0gIkFwYWNoZSBQb3J0YWJsZSBSdW50aW1lIChBUFIpIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vYXByLmFwYWNoZS5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyA9ICJ1dGlsLWxpbnV4IgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00ZGZkNGNkMjE2ODI4YzhjYWU1ZGU1YTEyZjM4NDRjOCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL2Fwcl9saWIuaDtlbmRsaW5lPTE3O21kNT1lZTQyZmE3NTc1ZGM0MDU4MGE5ZTAxYzFiNzVmYWU5NiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vYXByLyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLWJ1aWxkY2hlY2suc2gtaW1wcm92ZS1saWJ0b29sLWRldGVjdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWFwci1SZW1vdmUtd29ya2Rpci1wYXRoLXJlZmVyZW5jZXMtZnJvbS1pbnN0YWxsZWQtYXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1NYWtlZmlsZS5pbi1jb25maWd1cmUuaW4tc3VwcG9ydC1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1GaXgtcGFja2V0LWRpc2NhcmRzLUhUVFAtcmVkaXJlY3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1jb25maWd1cmUuaW4tZml4LUxURkxBR1MtdG8tbWFrZS1pdC13b3JrLXdpdGgtY2NhY2hlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtYXByLWZpeC1vZmZfdC1zaXplLWRvZXNuLXQtbWF0Y2gtaW4tZ2xpYmMtd2hlbi1jcm9zcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LWV4cGxpY2l0bHktbGluay1saWJhcHItYWdhaW5zdC1waHRyZWFkLXRvLW1ha2UtZ29sZC0ucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTJmMmEzNDk0ODNhZDZmMTJkYjQ5YmEwMWZiZmRiZmEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTMxZjA2ZDE2ZDdhYWJkMDk3ZmE5OTJhMzNlZWMyYjZhZjM5NjJmOTNlNmQ1NzBhOWJkNGQ4NWU5NTk5MzE3MiIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGxpYl9wYWNrYWdlIGJpbmNvbmZpZyBtdWx0aWxpYl9oZWFkZXIgcHRlc3QKKworT0VfQklOQ09ORklHX0VYVFJBX01BTkdMRSA9ICIgLWUgJ3M6bG9jYXRpb249c291cmNlOmxvY2F0aW9uPWluc3RhbGxlZDonIgorCisjIEFkZGVkIHRvIGZpeCBzb21lIGlzc3VlcyB3aXRoIGNtYWtlLiBSZWZlciB0byBodHRwczovL2dpdGh1Yi5jb20vYm13Y2FyaXQvbWV0YS1yb3MvaXNzdWVzLzY4I2lzc3VlY29tbWVudC0xOTg5NjkyOAorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFwcl9jdl9tdXRleF9yZWN1cnNpdmU9eWVzIgorCisjIEFsc28gc3VwcHJlc3MgdHJ5aW5nIHRvIHVzZSBzY3RwLgorIworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfaD1ubyBhY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX3Vpb19oPW5vIgorCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3Zfc2l6ZW9mX3N0cnVjdF9pb3ZlYz15ZXMiCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfZmlsZV9fZGV2X3plcm89eWVzIgorCisjIE90aGVyd2lzZSBsaWJ0b29sIGZhaWxzIHRvIGNvbXBpbGUgYXByLXV0aWxzCisjIHg4Nl82NC1saW51eC1saWJ0b29sOiBjb21waWxlOiB1bmFibGUgdG8gaW5mZXIgdGFnZ2VkIGNvbmZpZ3VyYXRpb24KKyMgeDg2XzY0LWxpbnV4LWxpYnRvb2w6ICAgZXJyb3I6IHNwZWNpZnkgYSB0YWcgd2l0aCAnLS10YWcnCitDQ0FDSEUgPSAiIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCSMgQXZvaWQgYWJzb2x1dGUgcGF0aHMgZm9yIGdyZXAgc2luY2UgaXQgY2F1c2VzIGZhaWx1cmVzCisJIyB3aGVuIHVzaW5nIHNzdGF0ZSBiZXR3ZWVuIGRpZmZlcmVudCBob3N0cyB3aXRoIGRpZmZlcmVudAorCSMgaW5zdGFsbCBwYXRocyBmb3IgZ3JlcC4KKwlleHBvcnQgR1JFUD0iZ3JlcCIKKworCWNkICR7U30KKwlsaWJ0b29sPScke0hPU1RfU1lTfS1saWJ0b29sJyAuL2J1aWxkY29uZgorfQorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9hcHIuZXhwICR7ZGF0YWRpcn0vYnVpbGQtMS8qIgorUkRFUEVORFNfJHtQTn0tZGV2ICs9ICJiYXNoIgorCisjZm9yIHNvbWUgcmVhc29uLCBidWlsZC9saWJ0b29sLm00IGhhbmRsZWQgYnkgYnVpbGRjb25mIHN0aWxsIGJlIG92ZXJ3cml0dGVuCisjd2hlbiBhdXRvY29uZiwgc28gaGFuZGxlIGl0IGFnYWluLgorZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKwlzZWQgLWkgLWUgJ3MvTElCVE9PTD1cKC4qXCl0b3BfYnVpbGQvTElCVE9PTD1cMWFwcl9idWlsZC8nICR7U30vYnVpbGQvbGlidG9vbC5tNAorCXNlZCAtaSAtZSAncy9MSUJUT09MPVwoLipcKXRvcF9idWlsZC9MSUJUT09MPVwxYXByX2J1aWxkLycgJHtTfS9idWlsZC9hcHJfcnVsZXMubWsKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJb2VfbXVsdGlsaWJfaGVhZGVyIGFwci5oCisJaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9hcHIKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworCXNlZCAtaSAtZSAncywke0RFQlVHX1BSRUZJWF9NQVB9LCxnJyBcCisJICAgICAgIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnICR7RH0ke2RhdGFkaXJ9L2J1aWxkLTEvYXByX3J1bGVzLm1rCisJc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIFwKKwkgICAgICAgLWUgJ3MsQVBSX1NPVVJDRV9ESVI9LiosQVBSX1NPVVJDRV9ESVI9LGcnIFwKKwkgICAgICAgLWUgJ3MsQVBSX0JVSUxEX0RJUj0uKixBUFJfQlVJTERfRElSPSxnJyAke0R9JHtiaW5kaXJ9L2Fwci0xLWNvbmZpZworfQorCitTU1RBVEVfU0NBTl9GSUxFUyArPSAiYXByX3J1bGVzLm1rIGxpYnRvb2wiCisKK1NZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAiYXByX3N5c3Jvb3RfcHJlcHJvY2VzcyIKKworYXByX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7CisJZD0ke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2FwcgorCWluc3RhbGwgLWQgJGQvCisJY3AgJHtTfS9idWlsZC9hcHJfcnVsZXMubWsgJGQvCisJc2VkIC1pIHMsYXByX2J1aWxkZGlyPS4qLGFwcl9idWlsZGRpcj0sZyAkZC9hcHJfcnVsZXMubWsKKwlzZWQgLWkgcyxhcHJfYnVpbGRlcnM9LiosYXByX2J1aWxkZXJzPSxnICRkL2Fwcl9ydWxlcy5taworCXNlZCAtaSBzLExJQlRPT0w9LiosTElCVE9PTD0ke0hPU1RfU1lTfS1saWJ0b29sLGcgJGQvYXByX3J1bGVzLm1rCisJc2VkIC1pIHMsXCRcKGFwcl9idWlsZGVyc1wpLCR7U1RBR0lOR19EQVRBRElSfS9hcHIvLGcgJGQvYXByX3J1bGVzLm1rCisJY3AgJHtTfS9idWlsZC9ta2Rpci5zaCAkZC8KKwljcCAke1N9L2J1aWxkL21ha2VfZXhwb3J0cy5hd2sgJGQvCisJY3AgJHtTfS9idWlsZC9tYWtlX3Zhcl9leHBvcnQuYXdrICRkLworCWNwICR7U30vJHtIT1NUX1NZU30tbGlidG9vbCAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2J1aWxkLTEvbGlidG9vbAorfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworCWNkICR7U30vdGVzdAorCW9lX3J1bm1ha2UKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwl0PSR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwlta2RpciAtcCAkdC8ubGlicworCWNwIC1yICR7U30vdGVzdC9kYXRhICR0LworCWNwIC1yICR7U30vdGVzdC8ubGlicy8qLnNvICR0Ly5saWJzLworCWNwICR7U30vdGVzdC9wcm9jX2NoaWxkICR0LworCWNwICR7U30vdGVzdC9yZWFkY2hpbGQgJHQvCisJY3AgJHtTfS90ZXN0L3NvY2tjaGlsZCAkdC8KKwljcCAke1N9L3Rlc3Qvc29ja3BlcmYgJHQvCisJY3AgJHtTfS90ZXN0L3Rlc3RhbGwgJHQvCisJY3AgJHtTfS90ZXN0L3RyeXJlYWQgJHQvCit9CisKK2V4cG9ydCBDT05GSUdfU0hFTEw9Ii9iaW4vYmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1hdGtfMi4yNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjI0LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhMGU0MTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjI0LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIkFULVNQSSAyIFRvb2xraXQgQnJpZGdlIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvYWNjZXNzaWJpbGl0eS9kLWJ1cyIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTlmMjg4YmE5ODJkNjA1MThmMzc1YjU4OTgyODM4ODYiCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI3OTM4OGZiYzRkYzdmMjczOTQ1NTZkZDM4OWFlYjU5NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MGRjOTBhYzRmNzRiOGZmZTk2YTkzNjNjMjUyMDhhNDQzYjM4MWJhY2VjZmVmZWE2ZGU1NDlmMjBlZDY5NTdkIgotCi1ERVBFTkRTID0gImRidXMgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGF0ayBhdC1zcGkyLWNvcmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLSMgVGhlIGF0LXNwaTItY29yZSByZXF1aXJlcyB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZ25vbWUgJHtQTn0tZ3RrMiIKLQotRklMRVNfJHtQTn0tZ25vbWUgPSAiJHtsaWJkaXJ9L2dub21lLXNldHRpbmdzLWRhZW1vbi0zLjAvZ3RrLW1vZHVsZXMiCi1GSUxFU18ke1BOfS1ndGsyID0gIiR7bGliZGlyfS9ndGstMi4wL21vZHVsZXMvbGliYXRrLWJyaWRnZS4qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjI2LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItYXRrXzIuMjYuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjE3YmI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjI2LjEuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJBVC1TUEkgMiBUb29sa2l0IEJyaWRnZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5saW51eGZvdW5kYXRpb24ub3JnL2FjY2Vzc2liaWxpdHkvZC1idXMiCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU5ZjI4OGJhOTgyZDYwNTE4ZjM3NWI1ODk4MjgzODg2IgorCitNQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiZWVlYzZjZWFkMzM1MGRjYTQ4YTIzNTI3MWMxMDViM2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjRmMGMyN2I2MWRiZmZiYTdhNWI1YmEyZmY4OGM4Y2VlMTBmZjhkYWM3NzRmYTViNzljZTkwNjg1MzYyM2I3NSIKKworREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBhdGsgYXQtc3BpMi1jb3JlIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorCisjIFRoZSBhdC1zcGkyLWNvcmUgcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworUEFDS0FHRVMgPSsgIiR7UE59LWdub21lICR7UE59LWd0azIiCisKK0ZJTEVTXyR7UE59LWdub21lID0gIiR7bGliZGlyfS9nbm9tZS1zZXR0aW5ncy1kYWVtb24tMy4wL2d0ay1tb2R1bGVzIgorRklMRVNfJHtQTn0tZ3RrMiA9ICIke2xpYmRpcn0vZ3RrLTIuMC9tb2R1bGVzL2xpYmF0ay1icmlkZ2UuKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlLzAwMDEtYnVpbGQtQWRkLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmUvMDAwMS1idWlsZC1BZGQtd2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXIucGF0Y2gKaW5kZXggNDEwM2VhYS4uMWY4YzlmMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmUvMDAwMS1idWlsZC1BZGQtd2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmUvMDAwMS1idWlsZC1BZGQtd2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXIucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDJmNDdjOTc1ZWJlNTJiNjkxNmE0NWFkZTAyM2FlM2JhYzIxYmIwZTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGZhMzc2NzYyYjkyNDA0YjllM2M0MzAwNTRiOGMzMzQxY2EwZmRkOGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogRGF0ZTogVHVlLCAyMSBKdW4gMjAxNiAxNjowMDowMiArMDMwMAogU3ViamVjdDogW1BBVENIXSBidWlsZDogQWRkIC0td2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXIKQEAgLTgsMjkgKzgsMzAgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03Njc5MTFdCiBTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorCiAtLS0KICBidXMvTWFrZWZpbGUuYW0gfCAyICstCi0gY29uZmlndXJlLmFjICAgIHwgNyArKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBjb25maWd1cmUuYWMgICAgfCA5ICsrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvYnVzL01ha2VmaWxlLmFtIGIvYnVzL01ha2VmaWxlLmFtCi1pbmRleCBiMTg5ZTAyLi41MmZiYjBiIDEwMDY0NAoraW5kZXggNjg4ZjgyYS4uMTBjZGU2MiAxMDA2NDQKIC0tLSBhL2J1cy9NYWtlZmlsZS5hbQogKysrIGIvYnVzL01ha2VmaWxlLmFtCi1AQCAtMjYsNyArMjYsNyBAQCBkYnVzc2VydmljZV9EQVRBID0gb3JnLmExMXkuQnVzLnNlcnZpY2UKLSBvcmcuYTExeS5CdXMuc2VydmljZTogb3JnLmExMXkuQnVzLnNlcnZpY2UuaW4KLSAJc2VkIC1lICQoc3Vic3RpdHV0aW9ucykgJDwgPiAkQC50bXAgJiYgbXYgJEAudG1wICRACitAQCAtMjksNyArMjksNyBAQCBvcmcuYTExeS5CdXMuc2VydmljZTogb3JnLmExMXkuQnVzLnNlcnZpY2UuaW4KKyBFWFRSQV9ESVNUICs9IG9yZy5hMTF5LkJ1cy5zZXJ2aWNlLmluCisgQ0xFQU5GSUxFUyArPSBvcmcuYTExeS5CdXMuc2VydmljZQogIAogLXN5c3RlbWRfdXNlcmRpciA9ICQocHJlZml4KS9saWIvc3lzdGVtZC91c2VyCiArc3lzdGVtZF91c2VyZGlyID0gJChzeXN0ZW1kdXNlcnVuaXRkaXIpCiAgc3lzdGVtZF91c2VyX0RBVEEgPSBhdC1zcGktZGJ1cy1idXMuc2VydmljZQogIGF0LXNwaS1kYnVzLWJ1cy5zZXJ2aWNlOiBhdC1zcGktZGJ1cy1idXMuc2VydmljZS5pbiBNYWtlZmlsZQotIAlzZWQgLWUgJChzdWJzdGl0dXRpb25zKSAkPCA+ICRALnRtcCAmJiBtdiAkQC50bXAgJEAKKyAJJChBTV9WX0dFTikgJChTRUQpIC1lICQoc3Vic3RpdHV0aW9ucykgJDwgPiAkQC50bXAgJiYgbXYgJEAudG1wICRACiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBmOTA2MWMyLi4yYjhlZWVkIDEwMDY0NAoraW5kZXggOGM0ZmNhMi4uMTQxNWNjYSAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTgzLDYgKzE4MywxMyBAQCBlbHNlCitAQCAtMTQ2LDYgKzE0NiwxNSBAQCBlbHNlCiAgZmkKICBBQ19TVUJTVChEQlVTX1NFUlZJQ0VTX0RJUikKICAKQEAgLTQxLDkgKzQyLDExIEBACiArICAgICAgICAgICAgW3dpdGhfc3lzdGVtZHVzZXJ1bml0ZGlyPSQoJFBLR19DT05GSUcgLS12YXJpYWJsZT1zeXN0ZW1kdXNlcnVuaXRkaXIgc3lzdGVtZCldKQogK0FDX1NVQlNUKFtzeXN0ZW1kdXNlcnVuaXRkaXJdLCBbJHdpdGhfc3lzdGVtZHVzZXJ1bml0ZGlyXSkKICsKLSBBQ19QQVRIX1BST0coR0xJQl9NS0VOVU1TLCBnbGliLW1rZW51bXMpCisrQUNfUEFUSF9QUk9HKEdMSUJfTUtFTlVNUywgZ2xpYi1ta2VudW1zKQorKworIEdPQkpFQ1RfSU5UUk9TUEVDVElPTl9DSEVDSyhbMS4zMi4wXSkKICAKLSBHT0JKRUNUX0lOVFJPU1BFQ1RJT05fQ0hFQ0soWzAuOS42XSkKKyBBQ19TVUJTVChMSUJUT09MX0VYUE9SVF9PUFRJT05TKQogLS0gCi0yLjEuNAorMi4xNC4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlLzAwMDEtbmxzLm00LVRha2UtaXQtZnJvbS1nZXR0ZXh0LTAuMTUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZS8wMDAxLW5scy5tNC1UYWtlLWl0LWZyb20tZ2V0dGV4dC0wLjE1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OWE1MWQ1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlLzAwMDEtbmxzLm00LVRha2UtaXQtZnJvbS1nZXR0ZXh0LTAuMTUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIGMzMjA3OTljOTQxZDQyYTliN2UzNTE4MDUzNTk2OTRlYTNiMzZkMmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU3VuLCA1IEFwciAyMDE1IDA5OjA4OjM4IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIG5scy5tNDogVGFrZSBpdCBmcm9tIGdldHRleHQtMC4xNQotCi1JdCBvdGhlcndpc2UgZXhwZWN0cyBnZXR0ZXh0IHRvIHByb3ZpZGUgaXQuIExldHMgZ28gaW5kZXBlbmRlbnQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBtNC9ubHMubTQgfCAzMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBtNC9ubHMubTQKLQotZGlmZiAtLWdpdCBhL200L25scy5tNCBiL200L25scy5tNAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjJjOGZlNjkKLS0tLSAvZGV2L251bGwKLSsrKyBiL200L25scy5tNAotQEAgLTAsMCArMSwzMCBAQAotK2RubCBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwMywgMjAwNS0yMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAotK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCi0rZG5sCi0rZG5sIFRoaXMgZmlsZSBjYW4gY2FuIGJlIHVzZWQgaW4gcHJvamVjdHMgd2hpY2ggYXJlIG5vdCBhdmFpbGFibGUgdW5kZXIKLStkbmwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIG9yIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotK2RubCBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0Ci0rZG5sIGZ1bmN0aW9uYWxpdHkuCi0rZG5sIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCBjb2RlIG9mIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGlzIGNvdmVyZWQKLStkbmwgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCi0rZG5sIGdldHRleHQgcGFja2FnZSBwYWNrYWdlIGlzIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotK2RubCBUaGV5IGFyZSBub3QgaW4gdGhlIHB1YmxpYyBkb21haW4uCi0rCi0rZG5sIEF1dGhvcnM6Ci0rZG5sIFVscmljaCBEcmVwcGVyIGRyZXBwZXJAY3lnbnVzLmNvbSwgMTk5NS0yMDAwLgotK2RubCBCcnVubyBIYWlibGUgaGFpYmxlQGNsaXNwLmNvbnMub3JnLCAyMDAwLTIwMDMuCi0rCi0rQUNfUFJFUkVRKDIuNTApCi0rCi0rQUNfREVGVU4oW0FNX05MU10sCi0rWwotK0FDX01TR19DSEVDS0lORyhbd2hldGhlciBOTFMgaXMgcmVxdWVzdGVkXSkKLStkbmwgRGVmYXVsdCBpcyBlbmFibGVkIE5MUwotK0FDX0FSR19FTkFCTEUobmxzLAotK1sgLS1kaXNhYmxlLW5scyBkbyBub3QgdXNlIE5hdGl2ZSBMYW5ndWFnZSBTdXBwb3J0XSwKLStVU0VfTkxTPSRlbmFibGV2YWwsIFVTRV9OTFM9eWVzKQotK0FDX01TR19SRVNVTFQoJFVTRV9OTFMpCi0rQUNfU1VCU1QoVVNFX05MUykKLStdKQotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjI0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjI0LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2ODdhZTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmVfMi4yNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJBc3Npc3RpdmUgVGVjaG5vbG9neSBTZXJ2aWNlIFByb3ZpZGVyIEludGVyZmFjZSAoZGJ1cyBjb3JlKSIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5saW51eGZvdW5kYXRpb24ub3JnL2FjY2Vzc2liaWxpdHkvZC1idXMiCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU5ZjI4OGJhOTgyZDYwNTE4ZjM3NWI1ODk4MjgzODg2IgotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1ubHMubTQtVGFrZS1pdC1mcm9tLWdldHRleHQtMC4xNS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLUFkZC13aXRoLXN5c3RlbWR1c2VydW5pdGRpci5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjFkMGE0NzFlNjkzMjkyOTM0YTczZjI4OGViZmYzNWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWU5MGQwNjRiOTM3YWFjZmU3OWE5NjIzMmFjN2U2M2QyOGQ3MTZlODViZDlmZjQzMzNmODY1MzA1YTk1OWI1YiIKLQotREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIHZpcnR1YWwvbGlieDExIGxpYnhpIGxpYnh0c3QgaW50bHRvb2wtbmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scyBndGstZG9jIGdldHRleHQgc3lzdGVtZCBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLSMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS14ZXZpZSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXN5c3RlbWR1c2VydW5pdGRpcj0ke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWRidXMtZGFlbW9uZGlyPSR7YmluZGlyfSIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzLyouc2VydmljZSBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvYWNjZXNzaWJpbGl0eS1zZXJ2aWNlcy8qLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGVmYXVsdHMvYXQtc3BpMiBcCi0gICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0vYXQtc3BpLWRidXMtYnVzLnNlcnZpY2XCoFwKLSAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjI2LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjI2LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIxZWUzYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlXzIuMjYuMi5iYgpAQCAtMCwwICsxLDI5IEBACitTVU1NQVJZID0gIkFzc2lzdGl2ZSBUZWNobm9sb2d5IFNlcnZpY2UgUHJvdmlkZXIgSW50ZXJmYWNlIChkYnVzIGNvcmUpIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvYWNjZXNzaWJpbGl0eS9kLWJ1cyIKK0xJQ0VOU0UgPSAiTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTlmMjg4YmE5ODJkNjA1MThmMzc1YjU4OTgyODM4ODYiCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLUFkZC13aXRoLXN5c3RlbWR1c2VydW5pdGRpci5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjRhMDQyZTRjODAxZmRiNzkzNzg4Yjc0OWVhYjIxNDg1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM4MGUwY2RmNWUzZDcxMzQwMDMxNWI2M2M3ZGVmZmE1NjEwMzJhNmMzNzI4OTIxMWQ4YWZjZmFhMjY3YzI2MTUiCisKK0RFUEVORFMgPSAiZGJ1cyBnbGliLTIuMCB2aXJ0dWFsL2xpYngxMSBsaWJ4aSBsaWJ4dHN0IgorCitpbmhlcml0IGF1dG90b29scyBndGstZG9jIGdldHRleHQgc3lzdGVtZCBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKyMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgICAgICAgICAgICAgLS13aXRoLXN5c3RlbWR1c2VydW5pdGRpcj0ke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCisgICAgICAgICAgICAgICAgLS13aXRoLWRidXMtZGFlbW9uZGlyPSR7YmluZGlyfSIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzLyouc2VydmljZSBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvYWNjZXNzaWJpbGl0eS1zZXJ2aWNlcy8qLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGVmYXVsdHMvYXQtc3BpMiBcCisgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0vYXQtc3BpLWRidXMtYnVzLnNlcnZpY2XCoFwKKyAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjI0LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjI0LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2MjMxOWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4yNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJBY2Nlc3NpYmlsaXR5IHRvb2xraXQgZm9yIEdOT01FIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL0dBUC8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLVNFQ1RJT04gPSAieDExL2xpYnMiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F0ay9hdGt1dGlsLmM7ZW5kbGluZT0xODttZDU9NmZkMzFjZDJmZGM5YjMwZjYxOWNhOGQ4MTliYzEyZDMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXRrL2F0ay5oO2VuZGxpbmU9MTg7bWQ1PWZjZDc3MTAxODdlMGVhZTQ4NWUzNTZjMzBkMWIwYzNiIgotCi1ERVBFTkRTID0gImdsaWItMi4wIgotCi1pbmhlcml0IGdub21lYmFzZSBndGstZG9jIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIzNzQ3YTgwMDg5ZGZhM2MwYmJjZjIxYWRmZmY5OTY4YiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImJiMmRhYTlhODA4YzczYTdhNzlkMjk4M2YzMzNlMGJhNzRiZTQyZmM1MWUzYmExZmFmMjU1MWE2MzY0ODdhNDkiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWdsaWJ0ZXN0IFwKLSAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMjYuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMjYuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODViNTk5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4yNi4xLmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiQWNjZXNzaWJpbGl0eSB0b29sa2l0IGZvciBHTk9NRSIKK0hPTUVQQUdFID0gImh0dHA6Ly9saXZlLmdub21lLm9yZy9HQVAvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCitTRUNUSU9OID0gIngxMS9saWJzIgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdGsvYXRrdXRpbC5jO2VuZGxpbmU9MTg7bWQ1PTZmZDMxY2QyZmRjOWIzMGY2MTljYThkODE5YmMxMmQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F0ay9hdGsuaDtlbmRsaW5lPTE4O21kNT1mY2Q3NzEwMTg3ZTBlYWU0ODVlMzU2YzMwZDFiMGMzYiIKKworREVQRU5EUyA9ICJnbGliLTIuMCIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiN2NkZGNjMzEzYjlhM2VmZDE5YjJkZGYwNzliYTY4ZjUiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJlZjAwZmY2YjgzODUxZGRkYzhkYjM4YjRkOWZhZWZmYjk5NTcyYmExNTBiMDY2NGVlMDJlNDZmMDE1ZWE5N2NiIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3Rlc3QtZml4LWluc3VmZmljaWVudC1xdW90aW5nLW9mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3Rlc3QtZml4LWluc3VmZmljaWVudC1xdW90aW5nLW9mLnBhdGNoCmluZGV4IDBiMzUwYmUuLmYzOTI0NjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeC1pbnN1ZmZpY2llbnQtcXVvdGluZy1vZi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvdGVzdC1maXgtaW5zdWZmaWNpZW50LXF1b3Rpbmctb2YucGF0Y2gKQEAgLTM1LDYxICszNSw1NiBAQAogCiBTaWduZWQtb2ZmLWJ5OiBLYW1pbCBEdWRrYSA8a2R1ZGthQHJlZGhhdC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gdGVzdC9jcC50ZXN0ICAgICAgICAgICAgfCAyICstCi0gdGVzdC9taXNjLnRlc3QgICAgICAgICAgfCA2ICsrKy0tLQotIHRlc3Qvc2JpdHMtcmVzdG9yZS50ZXN0IHwgNiArKystLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL3Rlc3QvY3AudGVzdCBiL3Rlc3QvY3AudGVzdAotaW5kZXggMDg2N2Y2My4uYTkyNzE5NSAxMDA2NDQKLS0tLSBhL3Rlc3QvY3AudGVzdAotKysrIGIvdGVzdC9jcC50ZXN0Ci1AQCAtOSw3ICs5LDcgQEAgVGhlIGNwIHV0aWxpdHkgc2hvdWxkIG9ubHkgY29weSBBQ0xzIGlmIGAtcCcgaXMgZ2l2ZW4uCitJbmRleDogYWNsLTIuMi41Mi90ZXN0L2NwLnRlc3QKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhY2wtMi4yLjUyLm9yaWcvdGVzdC9jcC50ZXN0CisrKysgYWNsLTIuMi41Mi90ZXN0L2NwLnRlc3QKK0BAIC05LDcgKzksNyBAQCBUaGUgY3AgdXRpbGl0eSBzaG91bGQgb25seSBjb3B5IEFDTHMgaWYKICAJPiAtcnctcnctci0tKwotCisgCQogIAkkIGNwIGYgZwogLQkkIGxzIC1sIGcgfCBhd2sgLS0gJ3sgcHJpbnQgJDEgfScgfCBzZWQgJ3MvXC4kLy9nJwogKwkkIGxzIC1sIGcgfCBhd2sgLS0gJ3sgcHJpbnQgJDEgfScgfCBzZWQgJ3MvXFwuJC8vZycKICAJPiAtcnctci0tci0tCi0KKyAJCiAgCSQgcm0gZwotZGlmZiAtLWdpdCBhL3Rlc3QvbWlzYy50ZXN0IGIvdGVzdC9taXNjLnRlc3QKLWluZGV4IDZlOTgwNTMuLjI5MzcyYjcgMTAwNjQ0Ci0tLS0gYS90ZXN0L21pc2MudGVzdAotKysrIGIvdGVzdC9taXNjLnRlc3QKK0luZGV4OiBhY2wtMi4yLjUyL3Rlc3QvbWlzYy50ZXN0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYWNsLTIuMi41Mi5vcmlnL3Rlc3QvbWlzYy50ZXN0CisrKysgYWNsLTIuMi41Mi90ZXN0L21pc2MudGVzdAogQEAgLTI1NCw3ICsyNTQsNyBAQCBBZGQgc29tZSB1c2VycyBhbmQgZ3JvdXBzCiAgU3ltbGluayBpbiBkaXJlY3Rvcnkgd2l0aCBkZWZhdWx0IEFDTD8KLQorIAkgCiAgCSQgbG4gLXMgZCBkL2wKIC0JJCBscyAtZGwgZC9sIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy9cLiQvL2cnCiArCSQgbHMgLWRsIGQvbCB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXFwuJC8vZycKICAJPiBscnd4cnd4cnd4Ci0KKyAKICAJJCBscyAtZGwgLUwgZC9sIHwgYXdrICd7cHJpbnQgJDF9JwogQEAgLTM0Myw3ICszNDMsNyBAQCBSZW1vdmUgdGhlIGRlZmF1bHQgQUNMCiAgUmVzZXQgdG8gYmFzZSBlbnRyaWVzCi0KKyAJIAogIAkkIHNldGZhY2wgLWIgZAogLQkkIGxzIC1kbCBkIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy9cLiQvL2cnCiArCSQgbHMgLWRsIGQgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1xcLiQvL2cnCiAgCT4gZHJ3eHIteC0tLQotCisgCiAgCSQgZ2V0ZmFjbCAtLW9taXQtaGVhZGVyIGQKIEBAIC0zNTUsNyArMzU1LDcgQEAgUmVzZXQgdG8gYmFzZSBlbnRyaWVzCiAgTm93LCBjaG1vZCBzaG91bGQgY2hhbmdlIHRoZSBncm91cF9vYmogZW50cnkKLQorIAkgCiAgCSQgY2htb2QgNzc1IGQKIC0JJCBscyAtZGwgZCB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXC4kLy9nJwogKwkkIGxzIC1kbCBkIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy9cXC4kLy9nJwogIAk+IGRyd3hyd3hyLXgKLQorIAkKICAJJCBnZXRmYWNsIC0tb21pdC1oZWFkZXIgZAotZGlmZiAtLWdpdCBhL3Rlc3Qvc2JpdHMtcmVzdG9yZS50ZXN0IGIvdGVzdC9zYml0cy1yZXN0b3JlLnRlc3QKLWluZGV4IGRlMjEzNDAuLjU4OTliMGEgMTAwNjQ0Ci0tLS0gYS90ZXN0L3NiaXRzLXJlc3RvcmUudGVzdAotKysrIGIvdGVzdC9zYml0cy1yZXN0b3JlLnRlc3QKLUBAIC0xMywxMCArMTMsMTAgQEAgRW5zdXJlIHNldHRpbmcgb2YgU1VJRC9TR0lEL3N0aWNreSB2aWEgLS1yZXN0b3JlIHdvcmtzCitJbmRleDogYWNsLTIuMi41Mi90ZXN0L3NiaXRzLXJlc3RvcmUudGVzdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGFjbC0yLjIuNTIub3JpZy90ZXN0L3NiaXRzLXJlc3RvcmUudGVzdAorKysrIGFjbC0yLjIuNTIvdGVzdC9zYml0cy1yZXN0b3JlLnRlc3QKK0BAIC0xMywxMCArMTMsMTAgQEAgRW5zdXJlIHNldHRpbmcgb2YgU1VJRC9TR0lEL3N0aWNreSB2aWEgLQogIAkkIHRvdWNoIGQvZwogIAkkIHRvdWNoIGQvdQogIAkkIHNldGZhY2wgLS1yZXN0b3JlIGQuYWNsCkBAIC0xMDMsNiArOTgsMyBAQAogKwkkIGxzIC1kbCBkL2cgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1xcLiQvL2cnCiAgCT4gLXJ3LXItU3ItLQogIAkkIHJtIC1SZiBkCi0tLQotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZWEtYWNsLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2VhLWFjbC5pbmMKaW5kZXggZTZmNGM3Mi4uMTMzOWVjYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZWEtYWNsLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9lYS1hY2wuaW5jCkBAIC0xNyw3ICsxNyw3IEBACiBFWFRSQV9PRU1BS0UgPSAiUEtHX0xJQl9ESVI9JHtiYXNlX2xpYmRpcn0gUEtHX0RFVkxJQl9ESVI9JHtsaWJkaXJ9IgogCiBkb19pbnN0YWxsICgpIHsKLQlvZV9ydW5tYWtlIGluc3RhbGwgaW5zdGFsbC1saWIgaW5zdGFsbC1kZXYgRElTVF9ST09UPSIke0R9IgorCW9lX3J1bm1ha2UgaW5zdGFsbCBpbnN0YWxsLWxpYiBpbnN0YWxsLWRldiBESVNUX1JPT1Q9IiR7RH0iIFpJUD0iZ3ppcCAtbiIKIH0KIAogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ibWFwLXRvb2xzL2JtYXAtdG9vbHNfMy40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JtYXAtdG9vbHMvYm1hcC10b29sc18zLjQuYmIKaW5kZXggNzBiNmU5MS4uOWQ4MTkxZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JtYXAtdG9vbHMvYm1hcC10b29sc18zLjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JtYXAtdG9vbHMvYm1hcC10b29sc18zLjQuYmIKQEAgLTksMTAgKzksMTIgQEAKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKIAotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ludGVsL2JtYXAtdG9vbHMuZ2l0IgotU1JDUkVWID0gIjlkYWQ3MjQxMDRkZjI2NTQ0MjIyNjk3MmExZTMxMDgxM2Y5ZmZjYmEiCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9LyR7QlB9LnRneiIKIAotUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4ODM0MjAxODM2MTFhYTEzN2NiYWY2OGE5MWVmMGQ3ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMDY0ODkxMjcwYzE4MGMxOTBmNDE5MjViMGY2ZmI5Y2VjYWMzMDU2ZjExNjhkMjU5MmRiZTkwZTVmMjI2YzBhIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsLyR7QlBOfS9yZWxlYXNlcyIKIAogUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1jb3JlIHB5dGhvbjMtY29tcHJlc3Npb24gcHl0aG9uMy1tbWFwIHB5dGhvbjMtc2V0dXB0b29scyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjQuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjY0LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2MDEzZjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLXJlcXVpcmUgYm9vc3QtJHtQVn0uaW5jCi0KLVNVTU1BUlkgPSAiUG9ydGFibGUgQm9vc3QuSmFtIGJ1aWxkIHRvb2wgZm9yIGJvb3N0IgotU0VDVElPTiA9ICJkZXZlbCIKLQotaW5oZXJpdCBuYXRpdmUKLQotU1JDX1VSSSArPSAiZmlsZTovL2JqYW0tbmF0aXZlLWJ1aWxkLWJqYW0uZGVidWcucGF0Y2giCi0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgLi9ib290c3RyYXAuc2ggLS13aXRoLXRvb2xzZXQ9Z2NjCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LwotICAgICMgaW5zdGFsbCB1bnN0cmlwcGVkIHZlcnNpb24gZm9yIGJqYW0KLSAgICBpbnN0YWxsIC1jIC1tIDc1NSBiamFtLmRlYnVnICR7RH0ke2JpbmRpcn0vYmphbQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjY2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJjODZhMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjY2LjAuYmIKQEAgLTAsMCArMSwxOSBAQAorcmVxdWlyZSBib29zdC0ke1BWfS5pbmMKKworU1VNTUFSWSA9ICJQb3J0YWJsZSBCb29zdC5KYW0gYnVpbGQgdG9vbCBmb3IgYm9vc3QiCitTRUNUSU9OID0gImRldmVsIgorCitpbmhlcml0IG5hdGl2ZQorCitTUkNfVVJJICs9ICJmaWxlOi8vYmphbS1uYXRpdmUtYnVpbGQtYmphbS5kZWJ1Zy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYS1zdHJhbmdlLWFzc2VydC10eXBvLWhvdy13YXMtdGhpcy1yZWxlYXNlZC13aXRoLnBhdGNoIgorCitkb19jb21waWxlKCkgeworICAgIC4vYm9vdHN0cmFwLnNoIC0td2l0aC10b29sc2V0PWdjYworfQorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8KKyAgICAjIGluc3RhbGwgdW5zdHJpcHBlZCB2ZXJzaW9uIGZvciBiamFtCisgICAgaW5zdGFsbCAtYyAtbSA3NTUgYmphbS5kZWJ1ZyAke0R9JHtiaW5kaXJ9L2JqYW0KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjY0LjAuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNjQuMC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjN2IxYTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNjQuMC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0jIFRoZSBCb29zdCB3ZWIgc2l0ZSBwcm92aWRlcyBmcmVlIHBlZXItcmV2aWV3ZWQgcG9ydGFibGUKLSMgQysrIHNvdXJjZSBsaWJyYXJpZXMuIFRoZSBlbXBoYXNpcyBpcyBvbiBsaWJyYXJpZXMgd2hpY2gKLSMgd29yayB3ZWxsIHdpdGggdGhlIEMrKyBTdGFuZGFyZCBMaWJyYXJ5LiBUaGUgbGlicmFyaWVzIGFyZQotIyBpbnRlbmRlZCB0byBiZSB3aWRlbHkgdXNlZnVsLCBhbmQgYXJlIGluIHJlZ3VsYXIgdXNlIGJ5Ci0jIHRob3VzYW5kcyBvZiBwcm9ncmFtbWVycyBhY3Jvc3MgYSBicm9hZCBzcGVjdHJ1bSBvZiBhcHBsaWNhdGlvbnMuCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmJvb3N0Lm9yZy8iCi1MSUNFTlNFID0gIkJTTC0xLjAgJiBNSVQgJiBQeXRob24tMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRV8xXzAudHh0O21kNT1lNDIyNGNjYWVjYjE0ZDk0MmM3MWQzMWJlZjIwZDc4YyIKLQotQk9PU1RfVkVSID0gIiR7QCJfIi5qb2luKGQuZ2V0VmFyKCJQViIpLnNwbGl0KCIuIikpfSIKLUJPT1NUX01BSiA9ICIke0AiXyIuam9pbihkLmdldFZhcigiUFYiKS5zcGxpdCgiLiIpWzA6Ml0pfSIKLUJPT1NUX1AgPSAiYm9vc3RfJHtCT09TVF9WRVJ9IgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2Jvb3N0L2Jvb3N0LyR7UFZ9LyR7Qk9PU1RfUH0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5M2VlY2NlMmFiZWQ5ZDI0NDJjOTY3NjkxNDcwOTM0OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3YmNjNWNhYWNlOTdiYWE5NDg5MzFkNzEyZWE1ZjM3MDM4ZGJiMWM1ZDg5YjQzYWQ0ZGVmNGVkN2NiNjgzMzMyIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5ib29zdC5vcmcvdXNlcnMvZG93bmxvYWQvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiYm9vc3RvcmcvcmVsZWFzZS8oP1A8cHZlcj4uKikvc291cmNlLyIKLQotUyA9ICIke1dPUktESVJ9LyR7Qk9PU1RfUH0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS42Ni4wLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjY2LjAuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMmI4NjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS42Ni4wLmluYwpAQCAtMCwwICsxLDIxIEBACisjIFRoZSBCb29zdCB3ZWIgc2l0ZSBwcm92aWRlcyBmcmVlIHBlZXItcmV2aWV3ZWQgcG9ydGFibGUKKyMgQysrIHNvdXJjZSBsaWJyYXJpZXMuIFRoZSBlbXBoYXNpcyBpcyBvbiBsaWJyYXJpZXMgd2hpY2gKKyMgd29yayB3ZWxsIHdpdGggdGhlIEMrKyBTdGFuZGFyZCBMaWJyYXJ5LiBUaGUgbGlicmFyaWVzIGFyZQorIyBpbnRlbmRlZCB0byBiZSB3aWRlbHkgdXNlZnVsLCBhbmQgYXJlIGluIHJlZ3VsYXIgdXNlIGJ5CisjIHRob3VzYW5kcyBvZiBwcm9ncmFtbWVycyBhY3Jvc3MgYSBicm9hZCBzcGVjdHJ1bSBvZiBhcHBsaWNhdGlvbnMuCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmJvb3N0Lm9yZy8iCitMSUNFTlNFID0gIkJTTC0xLjAgJiBNSVQgJiBQeXRob24tMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRV8xXzAudHh0O21kNT1lNDIyNGNjYWVjYjE0ZDk0MmM3MWQzMWJlZjIwZDc4YyIKKworQk9PU1RfVkVSID0gIiR7QCJfIi5qb2luKGQuZ2V0VmFyKCJQViIpLnNwbGl0KCIuIikpfSIKK0JPT1NUX01BSiA9ICIke0AiXyIuam9pbihkLmdldFZhcigiUFYiKS5zcGxpdCgiLiIpWzA6Ml0pfSIKK0JPT1NUX1AgPSAiYm9vc3RfJHtCT09TVF9WRVJ9IgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2Jvb3N0L2Jvb3N0LyR7UFZ9LyR7Qk9PU1RfUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiMmRmYmQ2YzcxN2JlNGE3YmIyZDg4MDE4ZWFjY2Y3NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1NzIxODE4MjUzZTZhMDk4OTU4MzE5MmY5Njc4MmM0YTk4ZWI2MjA0OTY1MzE2ZGY5ZjVhZDc1ODE5MjI1Y2E5IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5ib29zdC5vcmcvdXNlcnMvZG93bmxvYWQvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiYm9vc3RvcmcvcmVsZWFzZS8oP1A8cHZlcj4uKikvc291cmNlLyIKKworUyA9ICIke1dPUktESVJ9LyR7Qk9PU1RfUH0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LmluYwppbmRleCA0MWZjOTBmLi4wNDYxZWM2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC5pbmMKQEAgLTEzNSwyOSArMTM1LDcgQEAKIAogIyB1c2UgUEFSQUxMRUxfTUFLRSB0byBzcGVlZCB1cCB0aGUgYnVpbGQsIGJ1dCBsaW1pdCBpdCBieSAtaiA2NCwgZ3JlYXRlciBwYXJhbGxlbGlzbSBjYXVzZXMgYmphbSB0byBzZWdmYXVsdCBvciB0byBpZ25vcmUgLWoKICMgaHR0cHM6Ly9zdm4uYm9vc3Qub3JnL3RyYWMvYm9vc3QvdGlja2V0Lzc2MzQKLWRlZiBnZXRfYm9vc3RfcGFyYWxsZWxfbWFrZShkKToKLSAgICBwbSA9IGQuZ2V0VmFyKCdQQVJBTExFTF9NQUtFJykKLSAgICBpZiBwbToKLSAgICAgICAgIyBsb29rIGZvciAnLWonIGFuZCB0aHJvdyBvdGhlciBvcHRpb25zIChlLmcuICctbCcpIGF3YXkKLSAgICAgICAgIyBiZWNhdXNlIHRoZXkgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgbWVhbmluZyBpbiBiamFtCi0gICAgICAgIHBtID0gcG0uc3BsaXQoKQotICAgICAgICB3aGlsZSBwbToKLSAgICAgICAgICAgIHYgPSBOb25lCi0gICAgICAgICAgICBvcHQgPSBwbS5wb3AoMCkKLSAgICAgICAgICAgIGlmIG9wdCA9PSAnLWonOgotICAgICAgICAgICAgICAgIHYgPSBwbS5wb3AoMCkKLSAgICAgICAgICAgIGVsaWYgb3B0LnN0YXJ0c3dpdGgoJy1qJyk6Ci0gICAgICAgICAgICAgICAgdiA9IG9wdFsyOl0uc3RyaXAoKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB2ID0gTm9uZQotCi0gICAgICAgICAgICBpZiB2OgotICAgICAgICAgICAgICAgIHYgPSBtaW4oNjQsIGludCh2KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gJy1qJyArIHN0cih2KQotCi0gICAgcmV0dXJuICIiCi0KLUJPT1NUX1BBUkFMTEVMX01BS0UgPSAiJHtAZ2V0X2Jvb3N0X3BhcmFsbGVsX21ha2UoZCl9IgorQk9PU1RfUEFSQUxMRUxfTUFLRSA9ICIke0BvZS51dGlscy5wYXJhbGxlbF9tYWtlX2FyZ3VtZW50KGQsICctaiVkJywgbGltaXQ9NjQpfSIKIEJKQU1fT1BUUyAgICA9ICcke0JPT1NUX1BBUkFMTEVMX01BS0V9IC1kKzIgLXEgXAogCQkke0JKQU1fVE9PTFN9IFwKIAkJLXNCT09TVF9CVUlMRF9VU0VSX0NPTkZJRz0ke1dPUktESVJ9L3VzZXItY29uZmlnLmphbSBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1ib29zdC1hc2lvLWRldGFpbC1zb2NrZXRfdHlwZXMuaHBwLWZpeC1wb2xsLmgtaW5jbHVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDEtYm9vc3QtYXNpby1kZXRhaWwtc29ja2V0X3R5cGVzLmhwcC1maXgtcG9sbC5oLWluY2x1ZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE4NWFhYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1ib29zdC1hc2lvLWRldGFpbC1zb2NrZXRfdHlwZXMuaHBwLWZpeC1wb2xsLmgtaW5jbHVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotRnJvbSA0MDE5MjMwMTEzMGRjZDkxM2FhNmQ5Y2I5ZGJhOWU1ZjhkYmQ5ZDE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHI9QzM9QTk9MjBEcmFzemlrPz0gPGFkcmFzemlrQHR5Y29pbnQuY29tPgotRGF0ZTogV2VkLCAyNCBBdWcgMjAxNiAyMTowMTo0MyArMDEwMAotU3ViamVjdDogW1BBVENIIDEvNF0gdXNlIFBPU0lYIHBvbGwuaCBpbnN0ZWFkIG9mIHN5cy9wb2xsLmgKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotUE9TSVggc3BlY2lmaWVzIHRoYXQgPHBvbGwuaD4gaXMgdGhlIGNvcnJlY3QgaGVhZGVyIHRvCi1pbmNsdWRlIGZvciBwb2xsKCkKLSAgaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS9mdW5jdGlvbnMvcG9sbC5odG1sCi13aGVyZWFzIDxzeXMvcG9sbC5oPiBpcyBvbmx5IG5lZWRlZCBmb3IgYW5jaWVudCBnbGliYyAoPDIuMyksCi1zbyBsZXQncyBmb2xsb3cgUE9TSVggaW5zdGVhZC4KLQotQXMgYSBzaWRlLWVmZmVjdCwgdGhpcyBzaWxlbmNlcyBhIHdhcm5pbmcgd2hlbiBjb21waWxpbmcKLWFnYWluc3QgdGhlIG11c2wgQy1saWJyYXJ5OgotCi1JbiBmaWxlIGluY2x1ZGVkIGZyb20gLi9ib29zdC9hc2lvL2RldGFpbC9zb2NrZXRfdHlwZXMuaHBwOjYxOjAsCi0gICAgICAgICAgICAgICAgIGZyb20gLi9ib29zdC9hc2lvL2lwL2FkZHJlc3NfdjQuaHBwOjIxLAotICAgICAgICAgICAgICAgICBmcm9tIC4vYm9vc3QvYXNpby9pcC9hZGRyZXNzLmhwcDoyMSwKLSAgICAgICAgICAgICAgICAgZnJvbSBsaWJzL2xvZy9zcmMvaW5pdF9mcm9tX3NldHRpbmdzLmNwcDo2NToKLTxzeXNyb290Pi91c3IvaW5jbHVkZS9zeXMvcG9sbC5oOjE6Mjogd2FybmluZzogI3dhcm5pbmcgcmVkaXJlY3RpbmcgaW5jb3JyZWN0ICNpbmNsdWRlIDxzeXMvcG9sbC5oPiB0byA8cG9sbC5oPiBbLVdjcHBdCi0gI3dhcm5pbmcgcmVkaXJlY3RpbmcgaW5jb3JyZWN0ICNpbmNsdWRlIDxzeXMvcG9sbC5oPiB0byA8cG9sbC5oPgotICBefn5+fn5+Ci0KLWV0Yy4KLQotU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFkcmFzemlrQHR5Y29pbnQuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBodHRwczovL3N2bi5ib29zdC5vcmcvdHJhYy9ib29zdC90aWNrZXQvMTI0MTkKLSBib29zdC9hc2lvL2RldGFpbC9zb2NrZXRfdHlwZXMuaHBwIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYm9vc3QvYXNpby9kZXRhaWwvc29ja2V0X3R5cGVzLmhwcCBiL2Jvb3N0L2FzaW8vZGV0YWlsL3NvY2tldF90eXBlcy5ocHAKLWluZGV4IGU4YzcxMDkuLjdlNjVkM2MgMTAwNjQ0Ci0tLS0gYS9ib29zdC9hc2lvL2RldGFpbC9zb2NrZXRfdHlwZXMuaHBwCi0rKysgYi9ib29zdC9hc2lvL2RldGFpbC9zb2NrZXRfdHlwZXMuaHBwCi1AQCAtNTgsNyArNTgsNyBAQAotICNlbHNlCi0gIyBpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSAjIGlmICFkZWZpbmVkKF9fU1lNQklBTjMyX18pCi0tIyAgaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjICBpbmNsdWRlIDxwb2xsLmg+Ci0gIyBlbmRpZgotICMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gIyBpbmNsdWRlIDxzeXMvc3RhdC5oPgotLS0gCi0yLjkuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1jb3JyZWN0LWVycm9yLXdoaWNoLWFwcGVhcmVkLXdoZW4tY29tcGlsaW5nLW5vbi1jLWNvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDEtY29ycmVjdC1lcnJvci13aGljaC1hcHBlYXJlZC13aGVuLWNvbXBpbGluZy1ub24tYy1jby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjk2MDA1ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1jb3JyZWN0LWVycm9yLXdoaWNoLWFwcGVhcmVkLXdoZW4tY29tcGlsaW5nLW5vbi1jLWNvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSAwMmZhNWNlZTFiOGQwMzIxNzg3MTEzZTJkYzEwYjE2MmM2NTdmMzMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFJhbWV5IDxyYW1leUBycnNkLmNvbT4KLURhdGU6IFdlZCwgMSBGZWIgMjAxNyAxNjo0Mzo1OSAtMDgwMAotU3ViamVjdDogW1BBVENIXSBjb3JyZWN0IGVycm9yIHdoaWNoIGFwcGVhcmVkIHdoZW4gY29tcGlsaW5nIG5vbiBjKysgY29tcGxpYW50Ci0gY29kZSBmb3IgYXJyYXlzCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2V4cGVjdGVkIHRvIGJlIHJlbGVhc2VkIGluIHYxLjY1XQotCi0tLS0KLSBib29zdC9zZXJpYWxpemF0aW9uL2FycmF5LmhwcCB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9ib29zdC9zZXJpYWxpemF0aW9uL2FycmF5LmhwcCBiL2Jvb3N0L3NlcmlhbGl6YXRpb24vYXJyYXkuaHBwCi1pbmRleCA2MTcwOGIzLi42MTJkMWE2IDEwMDY0NAotLS0tIGEvYm9vc3Qvc2VyaWFsaXphdGlvbi9hcnJheS5ocHAKLSsrKyBiL2Jvb3N0L3NlcmlhbGl6YXRpb24vYXJyYXkuaHBwCi1AQCAtMjMsNiArMjMsOCBAQCBuYW1lc3BhY2Ugc3RkewotIH0gLy8gbmFtZXNwYWNlIHN0ZAotICNlbmRpZgotIAotKyNpbmNsdWRlIDxib29zdC9zZXJpYWxpemF0aW9uL2FycmF5X3dyYXBwZXIuaHBwPgotKwotICNpZm5kZWYgQk9PU1RfTk9fQ1hYMTFfSERSX0FSUkFZCi0gCi0gI2luY2x1ZGUgPGFycmF5PgotLS0gCi0yLjkuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMi1Eb24tdC1zZXQtdXAtbTMyLW02NC13ZS1kby10aGF0LW91cnNlbHZlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAyLURvbi10LXNldC11cC1tMzItbTY0LXdlLWRvLXRoYXQtb3Vyc2VsdmVzLnBhdGNoCmluZGV4IGU5YzdlNGMuLjI2ZjNjYmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAyLURvbi10LXNldC11cC1tMzItbTY0LXdlLWRvLXRoYXQtb3Vyc2VsdmVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAyLURvbi10LXNldC11cC1tMzItbTY0LXdlLWRvLXRoYXQtb3Vyc2VsdmVzLnBhdGNoCkBAIC0xLDk3ICsxLDY1IEBACi1Gcm9tIGMwZTc4NWY4ZGEyY2FhNjYxNzA1MmIxYzdiMzQ3ZTBkZmZiMTUyMGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGU0ZDNhNzQ3MGIzMDc2OTM2NjBkMDQxMjczMmU3MjY2ZDE3MzhkOGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgogRGF0ZTogVHVlLCAxMyBEZWMgMjAxNiAxMDoyOToxNyAtMDcwMAotU3ViamVjdDogW1BBVENIIDIvM10gRG9uJ3Qgc2V0IHVwIC1tMzIvLW02NCwgd2UgZG8gdGhhdCBvdXJzZWx2ZXMKK1N1YmplY3Q6IFtQQVRDSCA2LzZdIERvbid0IHNldCB1cCAtbTMyLy1tNjQsIHdlIGRvIHRoYXQgb3Vyc2VsdmVzCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KKwogLS0tCi0gdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL2djYy5qYW0gfCAxMCAtLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGRlbGV0aW9ucygtKQorIHRvb2xzL2J1aWxkL3NyYy90b29scy9nY2MuamFtIHwgMzkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDM5IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL2djYy5qYW0gYi90b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbQotaW5kZXggMGYzNDZhNS4uOTQyZjE0MSAxMDA2NDQKK2luZGV4IGU0ZmM2YzMyLi4zNzkxNGZkMCAxMDA2NDQKIC0tLSBhL3Rvb2xzL2J1aWxkL3NyYy90b29scy9nY2MuamFtCiArKysgYi90b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbQotQEAgLTUwOSw3ICs1MDksNiBAQCBydWxlIGNvbXBpbGUuYysrLnBjaCAoIHRhcmdldHMgKiA6IHNvdXJjZXMgKiA6IHByb3BlcnRpZXMgKiApCi0gewotICAgICBzZXR1cC10aHJlYWRpbmcgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLSAgICAgc2V0dXAtZnBpYyAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotLSAgICBzZXR1cC1hZGRyZXNzLW1vZGVsICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7CitAQCAtMzM3LDQ1ICszMzcsNiBAQCBydWxlIHNldC1hZGRyZXNzLW1vZGVsLW9wdGlvbnMgKCB0YXJnZXRzICogOiBzb3VyY2VzICogOiBwcm9wZXJ0aWVzICogKQorICAgICB7CisgICAgICAgICBsb2NhbCBvcHRpb24gOworICAgICAgICAgbG9jYWwgdGFyZ2V0LW9zID0gWyBmZWF0dXJlLmdldC12YWx1ZXMgdGFyZ2V0LW9zIDogJChwcm9wZXJ0aWVzKSBdIDsKKy0gICAgICAgIGlmICQodGFyZ2V0LW9zKSA9IGFpeAorLSAgICAgICAgeworLSAgICAgICAgICAgIGlmICQobW9kZWwpID0gMzIKKy0gICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIG9wdGlvbiA9IC1tYWl4MzIgOworLSAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBvcHRpb24gPSAtbWFpeDY0IDsKKy0gICAgICAgICAgICB9CistICAgICAgICB9CistICAgICAgICBlbHNlIGlmICQodGFyZ2V0LW9zKSA9IGhwdXgKKy0gICAgICAgIHsKKy0gICAgICAgICAgICBpZiAkKG1vZGVsKSA9IDMyCistICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBvcHRpb24gPSAtbWlscDMyIDsKKy0gICAgICAgICAgICB9CistICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgb3B0aW9uID0gLW1scDY0IDsKKy0gICAgICAgICAgICB9CistICAgICAgICB9CistICAgICAgICBlbHNlCistICAgICAgICB7CistICAgICAgICAgICAgbG9jYWwgYXJjaCA9IFsgZmVhdHVyZS5nZXQtdmFsdWVzIGFyY2hpdGVjdHVyZSA6ICQocHJvcGVydGllcykgXSA7CistICAgICAgICAgICAgaWYgJChhcmNoKSA9IHBvd2VyIHx8ICQoYXJjaCkgPSBzcGFyYyB8fCAkKGFyY2gpID0geDg2CistICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBpZiAkKG1vZGVsKSA9IDMyCistICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgIG9wdGlvbiA9IC1tMzIgOworLSAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIGVsc2UgaWYgJChtb2RlbCkgPSA2NAorLSAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICBvcHRpb24gPSAtbTY0IDsKKy0gICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAjIEZvciBkYXJ3aW4sIHRoZSBtb2RlbCBjYW4gYmUgMzJfNjQuIGRhcndpbi5qYW0gd2lsbCBoYW5kbGUgdGhhdAorLSAgICAgICAgICAgICMgb24gaXRzIG93bi4KKy0gICAgICAgIH0KKyAgICAgICAgIE9QVElPTlMgb24gJCh0YXJnZXRzKSArPSAkKG9wdGlvbikgOworICAgICB9CiAgfQotIAotIGFjdGlvbnMgY29tcGlsZS5jKysucGNoCi1AQCAtNTIxLDcgKzUyMCw2IEBAIHJ1bGUgY29tcGlsZS5jLnBjaCAoIHRhcmdldHMgKiA6IHNvdXJjZXMgKiA6IHByb3BlcnRpZXMgKiApCi0gewotICAgICBzZXR1cC10aHJlYWRpbmcgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLSAgICAgc2V0dXAtZnBpYyAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotLSAgICBzZXR1cC1hZGRyZXNzLW1vZGVsICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0gfQotIAotIGFjdGlvbnMgY29tcGlsZS5jLnBjaAotQEAgLTUzMyw3ICs1MzEsNiBAQCBydWxlIGNvbXBpbGUuYysrLnByZXByb2Nlc3MgKCB0YXJnZXRzICogOiBzb3VyY2VzICogOiBwcm9wZXJ0aWVzICogKQotIHsKLSAgICAgc2V0dXAtdGhyZWFkaW5nICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0gICAgIHNldHVwLWZwaWMgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLS0gICAgc2V0dXAtYWRkcmVzcy1tb2RlbCAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotIAotICAgICAjIFNvbWUgZXh0ZW5zaW9ucyBhcmUgY29tcGlsZWQgYXMgQysrIGJ5IGRlZmF1bHQuIEZvciBvdGhlcnMsIHdlIG5lZWQgdG8KLSAgICAgIyBwYXNzIC14IGMrKy4gV2UgY291bGQgYWx3YXlzIHBhc3MgLXggYysrIGJ1dCBkaXN0Y2MgZG9lcyBub3Qgd29yayB3aXRoIGl0LgotQEAgLTU0OCw3ICs1NDUsNiBAQCBydWxlIGNvbXBpbGUuYy5wcmVwcm9jZXNzICggdGFyZ2V0cyAqIDogc291cmNlcyAqIDogcHJvcGVydGllcyAqICkKLSB7Ci0gICAgIHNldHVwLXRocmVhZGluZyAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotICAgICBzZXR1cC1mcGljICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0tICAgIHNldHVwLWFkZHJlc3MtbW9kZWwgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLSAKLSAgICAgIyBJZiB3ZSB1c2UgdGhlIG5hbWUgZysrIHRoZW4gZGVmYXVsdCBmaWxlIHN1ZmZpeCAtPiBsYW5ndWFnZSBtYXBwaW5nIGRvZXMKLSAgICAgIyBub3Qgd29yay4gU28gaGF2ZSB0byBwYXNzIC14IG9wdGlvbi4gTWF5YmUsIHdlIGNhbiB3b3JrIGFyb3VuZCB0aGlzIGJ5Ci1AQCAtNTY0LDcgKzU2MCw2IEBAIHJ1bGUgY29tcGlsZS5jKysgKCB0YXJnZXRzICogOiBzb3VyY2VzICogOiBwcm9wZXJ0aWVzICogKQotIHsKLSAgICAgc2V0dXAtdGhyZWFkaW5nICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0gICAgIHNldHVwLWZwaWMgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLS0gICAgc2V0dXAtYWRkcmVzcy1tb2RlbCAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotIAotICAgICAjIFNvbWUgZXh0ZW5zaW9ucyBhcmUgY29tcGlsZWQgYXMgQysrIGJ5IGRlZmF1bHQuIEZvciBvdGhlcnMsIHdlIG5lZWQgdG8KLSAgICAgIyBwYXNzIC14IGMrKy4gV2UgY291bGQgYWx3YXlzIHBhc3MgLXggYysrIGJ1dCBkaXN0Y2MgZG9lcyBub3Qgd29yayB3aXRoIGl0LgotQEAgLTU5NCw3ICs1ODksNiBAQCBydWxlIGNvbXBpbGUuYyAoIHRhcmdldHMgKiA6IHNvdXJjZXMgKiA6IHByb3BlcnRpZXMgKiApCi0gewotICAgICBzZXR1cC10aHJlYWRpbmcgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLSAgICAgc2V0dXAtZnBpYyAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotLSAgICBzZXR1cC1hZGRyZXNzLW1vZGVsICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0gCi0gICAgICMgSWYgd2UgdXNlIHRoZSBuYW1lIGcrKyB0aGVuIGRlZmF1bHQgZmlsZSBzdWZmaXggLT4gbGFuZ3VhZ2UgbWFwcGluZyBkb2VzCi0gICAgICMgbm90IHdvcmsuIFNvIGhhdmUgdG8gcGFzcyAteCBvcHRpb24uIE1heWJlLCB3ZSBjYW4gd29yayBhcm91bmQgdGhpcyBieQotQEAgLTYxMCw3ICs2MDQsNiBAQCBydWxlIGNvbXBpbGUuZm9ydHJhbiAoIHRhcmdldHMgKiA6IHNvdXJjZXMgKiA6IHByb3BlcnRpZXMgKiApCi0gewotICAgICBzZXR1cC10aHJlYWRpbmcgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLSAgICAgc2V0dXAtZnBpYyAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotLSAgICBzZXR1cC1hZGRyZXNzLW1vZGVsICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0gfQotIAotIGFjdGlvbnMgY29tcGlsZS5jKysgYmluZCBQQ0hfRklMRQotQEAgLTY0MSw3ICs2MzQsNiBAQCBhY3Rpb25zIGNvbXBpbGUuZm9ydHJhbgotIHJ1bGUgY29tcGlsZS5hc20gKCB0YXJnZXRzICogOiBzb3VyY2VzICogOiBwcm9wZXJ0aWVzICogKQotIHsKLSAgICAgc2V0dXAtZnBpYyAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotLSAgICBzZXR1cC1hZGRyZXNzLW1vZGVsICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0gICAgIExBTkcgb24gJCg8KSA9ICIteCBhc3NlbWJsZXItd2l0aC1jcHAiIDsKLSB9Ci0gCi1AQCAtOTUwLDcgKzk0Miw2IEBAIHJ1bGUgcXVvdGUtcnBhdGggKCB0YXJnZXRzICogKQotIHJ1bGUgbGluayAoIHRhcmdldHMgKiA6IHNvdXJjZXMgKiA6IHByb3BlcnRpZXMgKiApCi0gewotICAgICBzZXR1cC10aHJlYWRpbmcgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLS0gICAgc2V0dXAtYWRkcmVzcy1tb2RlbCAkKHRhcmdldHMpIDogJChzb3VyY2VzKSA6ICQocHJvcGVydGllcykgOwotICAgICBTUEFDRSBvbiAkKHRhcmdldHMpID0gIiAiIDsKLSAgICAgIyBTZXJpYWxpemUgZXhlY3V0aW9uIG9mIHRoZSAnbGluaycgYWN0aW9uLCBzaW5jZSBydW5uaW5nIE4gbGlua3MgaW4KLSAgICAgIyBwYXJhbGxlbCBpcyBqdXN0IHNsb3dlci4gRm9yIG5vdywgc2VyaWFsaXplIG9ubHkgZ2NjIGxpbmtzLCBpdCBtaWdodCBiZSBhCi1AQCAtMTAxOCw3ICsxMDA5LDYgQEAgYWN0aW9ucyBwaWVjZW1lYWwgYXJjaGl2ZQotIHJ1bGUgbGluay5kbGwgKCB0YXJnZXRzICogOiBzb3VyY2VzICogOiBwcm9wZXJ0aWVzICogKQotIHsKLSAgICAgc2V0dXAtdGhyZWFkaW5nICQodGFyZ2V0cykgOiAkKHNvdXJjZXMpIDogJChwcm9wZXJ0aWVzKSA7Ci0tICAgIHNldHVwLWFkZHJlc3MtbW9kZWwgJCh0YXJnZXRzKSA6ICQoc291cmNlcykgOiAkKHByb3BlcnRpZXMpIDsKLSAgICAgU1BBQ0Ugb24gJCh0YXJnZXRzKSA9ICIgIiA7Ci0gICAgIEpBTV9TRU1BUEhPUkUgb24gJCh0YXJnZXRzKSA9IDxzPmdjYy1saW5rLXNlbWFwaG9yZSA7Ci0gICAgIHF1b3RlLXJwYXRoICQodGFyZ2V0cykgOwogLS0gCi0yLjguMAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAzLURvbi10LXNldC11cC1hcmNoLWluc3RydWN0aW9uLXNldC1mbGFncy13ZS1kby10aGF0LW8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMy1Eb24tdC1zZXQtdXAtYXJjaC1pbnN0cnVjdGlvbi1zZXQtZmxhZ3Mtd2UtZG8tdGhhdC1vLnBhdGNoCmluZGV4IDZiYjI1ZjguLmZiNmQ5NzEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAzLURvbi10LXNldC11cC1hcmNoLWluc3RydWN0aW9uLXNldC1mbGFncy13ZS1kby10aGF0LW8ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDMtRG9uLXQtc2V0LXVwLWFyY2gtaW5zdHJ1Y3Rpb24tc2V0LWZsYWdzLXdlLWRvLXRoYXQtby5wYXRjaApAQCAtMSwyMCArMSwyMSBAQAotRnJvbSA3YzQ5NTI1ODEyNTY3ZjEyMTk3MDZjNGVkMzMwYjNiZDJjYzhlOTRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAwODY4NzYxZTdkMmQ3NWQ0NzIwOTBlM2VmOTZmM2QyZjljZWQyN2YzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KIERhdGU6IFR1ZSwgMTMgRGVjIDIwMTYgMTA6Mjk6MzIgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzNdIERvbid0IHNldCB1cCBhcmNoL2luc3RydWN0aW9uLXNldCBmbGFncywgd2UgZG8gdGhhdAorU3ViamVjdDogW1BBVENIIDUvNl0gRG9uJ3Qgc2V0IHVwIGFyY2gvaW5zdHJ1Y3Rpb24tc2V0IGZsYWdzLCB3ZSBkbyB0aGF0CiAgb3Vyc2VsdmVzCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KKwogLS0tCi0gdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL2djYy5qYW0gfCAxMjEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEyMSBkZWxldGlvbnMoLSkKKyB0b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbSB8IDEyNyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTI3IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL2djYy5qYW0gYi90b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbQotaW5kZXggOTQyZjE0MS4uZDA2MmMyMCAxMDA2NDQKK2luZGV4IGUzYjFiOTUyLi5lNGZjNmMzMiAxMDA2NDQKIC0tLSBhL3Rvb2xzL2J1aWxkL3NyYy90b29scy9nY2MuamFtCiArKysgYi90b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbQotQEAgLTEwNjgsMTI0ICsxMDY4LDMgQEAgbG9jYWwgcnVsZSBjcHUtZmxhZ3MgKCB0b29sc2V0IHZhcmlhYmxlIDogYXJjaGl0ZWN0dXJlIDogaW5zdHJ1Y3Rpb24tc2V0ICsgOgorQEAgLTEyNzYsMTMwICsxMjc2LDMgQEAgbG9jYWwgcnVsZSBjcHUtZmxhZ3MgKCB0b29sc2V0IHZhcmlhYmxlIDogYXJjaGl0ZWN0dXJlIDogaW5zdHJ1Y3Rpb24tc2V0ICsgOgogICAgICAgICAgPGFyY2hpdGVjdHVyZT4kKGFyY2hpdGVjdHVyZSkvPGluc3RydWN0aW9uLXNldD4kKGluc3RydWN0aW9uLXNldCkKICAgICAgICAgIDogJCh2YWx1ZXMpIDsKICB9CkBAIC02MCw2ICs2MSwxMCBAQAogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGNvcmUtYXZ4LWkgOiAtbWFyY2g9Y29yZS1hdngtaSA7CiAtY3B1LWZsYWdzIGdjYyBPUFRJT05TIDogeDg2IDogaXZ5LWJyaWRnZSA6IC1tYXJjaD1jb3JlLWF2eC1pIDsKIC1jcHUtZmxhZ3MgZ2NjIE9QVElPTlMgOiB4ODYgOiBoYXN3ZWxsIDogLW1hcmNoPWNvcmUtYXZ4LWkgLW1hdngyIC1tZm1hIC1tYm1pIC1tYm1pMiAtbWx6Y250IDsKKy1jcHUtZmxhZ3MgZ2NjIE9QVElPTlMgOiB4ODYgOiBicm9hZHdlbGwgOiAtbWFyY2g9YnJvYWR3ZWxsIDsKKy1jcHUtZmxhZ3MgZ2NjIE9QVElPTlMgOiB4ODYgOiBza3lsYWtlIDogLW1hcmNoPXNreWxha2UgOworLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IHNreWxha2UtYXZ4NTEyIDogLW1hcmNoPXNreWxha2UtYXZ4NTEyIDsKKy1jcHUtZmxhZ3MgZ2NjIE9QVElPTlMgOiB4ODYgOiBjYW5ub25sYWtlIDogLW1hcmNoPXNreWxha2UtYXZ4NTEyIC1tYXZ4NTEydmJtaSAtbWF2eDUxMmlmbWEgLW1zaGEgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGs2IDogLW1hcmNoPWs2IDsKIC1jcHUtZmxhZ3MgZ2NjIE9QVElPTlMgOiB4ODYgOiBrNi0yIDogLW1hcmNoPWs2LTIgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGs2LTMgOiAtbWFyY2g9azYtMyA7CkBAIC04MSw4ICs4NiwxMCBAQAogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGJkdmVyMSA6IC1tYXJjaD1iZHZlcjEgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGJkdmVyMiA6IC1tYXJjaD1iZHZlcjIgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGJkdmVyMyA6IC1tYXJjaD1iZHZlcjMgOworLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGJkdmVyNCA6IC1tYXJjaD1iZHZlcjQgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGJ0dmVyMSA6IC1tYXJjaD1idHZlcjEgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGJ0dmVyMiA6IC1tYXJjaD1idHZlcjIgOworLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IHpudmVyMSA6IC1tYXJjaD16bnZlcjEgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IHdpbmNoaXAtYzYgOiAtbWFyY2g9d2luY2hpcC1jNiA7CiAtY3B1LWZsYWdzIGdjYyBPUFRJT05TIDogeDg2IDogd2luY2hpcDIgOiAtbWFyY2g9d2luY2hpcDIgOwogLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHg4NiA6IGMzIDogLW1hcmNoPWMzIDsKQEAgLTE0MCw0ICsxNDcsNSBAQAogLSMgQUlYIHZhcmlhbnQgb2YgUlMvNjAwMCAmIFBvd2VyUEMKIC10b29sc2V0LmZsYWdzIGdjYyBBUk9QVElPTlMgPGFkZHJlc3MtbW9kZWw+NjQvPHRhcmdldC1vcz5haXggOiAiLVg2NCIgOwogLS0gCi0yLjguMAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjY0LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS42NC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWMyMGUxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjY0LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1yZXF1aXJlIGJvb3N0LSR7UFZ9LmluYwotcmVxdWlyZSBib29zdC5pbmMKLQotU1JDX1VSSSArPSAiXAotICAgIGZpbGU6Ly9hcm0taW50cmluc2ljcy5wYXRjaCBcCi0gICAgZmlsZTovL2Jvb3N0LUNWRS0yMDEyLTI2NzcucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWJvb3N0LWFzaW8tZGV0YWlsLXNvY2tldF90eXBlcy5ocHAtZml4LXBvbGwuaC1pbmNsdWQucGF0Y2ggXAotICAgIGZpbGU6Ly9ib29zdC1tYXRoLWRpc2FibGUtcGNoLWZvci1nY2MucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLUFwcGx5LWJvb3N0LTEuNjIuMC1uby1mb3JjZWQtZmxhZ3MucGF0Y2gucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLURvbi10LXNldC11cC1hcmNoLWluc3RydWN0aW9uLXNldC1mbGFncy13ZS1kby10aGF0LW8ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLURvbi10LXNldC11cC1tMzItbTY0LXdlLWRvLXRoYXQtb3Vyc2VsdmVzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1jb3JyZWN0LWVycm9yLXdoaWNoLWFwcGVhcmVkLXdoZW4tY29tcGlsaW5nLW5vbi1jLWNvLnBhdGNoIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjY2LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS42Ni4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzYjgyYTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS42Ni4wLmJiCkBAIC0wLDAgKzEsMTEgQEAKK3JlcXVpcmUgYm9vc3QtJHtQVn0uaW5jCityZXF1aXJlIGJvb3N0LmluYworCitTUkNfVVJJICs9ICJcCisgICAgZmlsZTovL2FybS1pbnRyaW5zaWNzLnBhdGNoIFwKKyAgICBmaWxlOi8vYm9vc3QtQ1ZFLTIwMTItMjY3Ny5wYXRjaCBcCisgICAgZmlsZTovL2Jvb3N0LW1hdGgtZGlzYWJsZS1wY2gtZm9yLWdjYy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtQXBwbHktYm9vc3QtMS42Mi4wLW5vLWZvcmNlZC1mbGFncy5wYXRjaC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtRG9uLXQtc2V0LXVwLWFyY2gtaW5zdHJ1Y3Rpb24tc2V0LWZsYWdzLXdlLWRvLXRoYXQtby5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItRG9uLXQtc2V0LXVwLW0zMi1tNjQtd2UtZG8tdGhhdC1vdXJzZWx2ZXMucGF0Y2ggXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2ZpbGVzLzAwMDEtRml4LWEtc3RyYW5nZS1hc3NlcnQtdHlwby1ob3ctd2FzLXRoaXMtcmVsZWFzZWQtd2l0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9maWxlcy8wMDAxLUZpeC1hLXN0cmFuZ2UtYXNzZXJ0LXR5cG8taG93LXdhcy10aGlzLXJlbGVhc2VkLXdpdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc1MTMzZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9maWxlcy8wMDAxLUZpeC1hLXN0cmFuZ2UtYXNzZXJ0LXR5cG8taG93LXdhcy10aGlzLXJlbGVhc2VkLXdpdGgucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSA1Njg1NTI3MzY0MTk4NTk3ZjI1ZmMxYzYyMzZjYjY0Y2JjM2RlNDRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDQgT2N0IDIwMTcgMTg6MTY6MDggKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGEgc3RyYW5nZSBhc3NlcnQgdHlwbzsgaG93IHdhcyB0aGlzIHJlbGVhc2VkIHdpdGhvdXQKKyBub3RpY2luZz8KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHRvb2xzL2J1aWxkL3NyYy9lbmdpbmUvZGVidWdnZXIuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90b29scy9idWlsZC9zcmMvZW5naW5lL2RlYnVnZ2VyLmMgYi90b29scy9idWlsZC9zcmMvZW5naW5lL2RlYnVnZ2VyLmMKK2luZGV4IDgwMmYyNjIuLjE1MmE3ZTYgMTAwNjQ0CistLS0gYS90b29scy9idWlsZC9zcmMvZW5naW5lL2RlYnVnZ2VyLmMKKysrKyBiL3Rvb2xzL2J1aWxkL3NyYy9lbmdpbmUvZGVidWdnZXIuYworQEAgLTEwOTIsNyArMTA5Miw3IEBAIHN0YXRpYyB2b2lkIGRlYnVnX3N0YXJ0X2NoaWxkKCBpbnQgYXJnYywgY29uc3QgY2hhciAqICogYXJndiApCisgICAgIFBST0NFU1NfSU5GT1JNQVRJT04gcGkgPSB7IE5VTEwsIE5VTEwsIDAsIDAgfTsKKyAgICAgU1RBUlRVUElORk8gc2kgPSB7IHNpemVvZiggU1RBUlRVUElORk8gKSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDAgfTsKKy0gICAgYXNzZXJ0KCBERUJVR19TVEFURSA9PSBERUJVR19OT19DSElMRCApOworKyAgICBhc3NlcnQoIGRlYnVnX3N0YXRlID09IERFQlVHX05PX0NISUxEICk7CisgICAgIGlmICggISBDcmVhdGVQaXBlKCAmcGlwZTFbIDAgXSwgJnBpcGUxWyAxIF0sICZzYSwgMCApICkKKyAgICAgeworICAgICAgICAgcHJpbnRmKCJpbnRlcm5hbCBlcnJvclxuIik7CitAQCAtMTE3Niw3ICsxMTc2LDcgQEAgc3RhdGljIHZvaWQgZGVidWdfc3RhcnRfY2hpbGQoIGludCBhcmdjLCBjb25zdCBjaGFyICogKiBhcmd2ICkKKyAgICAgaW50IHJlYWRfZmQ7CisgICAgIGludCBwaWQ7CisgICAgIGludCBpOworLSAgICBhc3NlcnQoIERFQlVHX1NUQVRFID09IERFQlVHX05PX0NISUxEICk7CisrICAgIGFzc2VydCggZGVidWdfc3RhdGUgPT0gREVCVUdfTk9fQ0hJTEQgKTsKKyAgICAgcGlwZShwaXBlMSk7CisgICAgIHBpcGUocGlwZTIpOworICAgICBwaWQgPSBmb3JrKCk7CistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlcy8wMDAzLXVwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtdXNlLXJlbGF0aXZlLXN5bWxpbmtzLWZyb20tRVQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlcy8wMDAzLXVwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtdXNlLXJlbGF0aXZlLXN5bWxpbmtzLWZyb20tRVQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJkOTY3ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jYS1jZXJ0aWZpY2F0ZXMvY2EtY2VydGlmaWNhdGVzLzAwMDMtdXBkYXRlLWNhLWNlcnRpZmljYXRlcy11c2UtcmVsYXRpdmUtc3ltbGlua3MtZnJvbS1FVC5wYXRjaApAQCAtMCwwICsxLDcxIEBACitGcm9tIGE5ZmMxM2IyYWVlNTU2NTVkNThmY2I3N2EzMTgwZmE5OWY5NjQzOGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMERyYXN6aWs/PSA8YW5kcmUuZHJhc3ppa0BqY2kuY29tPgorRGF0ZTogV2VkLCAyOCBNYXIgMjAxOCAxNjo0NTowNSArMDEwMAorU3ViamVjdDogW1BBVENIXSB1cGRhdGUtY2EtY2VydGlmaWNhdGVzOiB1c2UgcmVsYXRpdmUgc3ltbGlua3MgZnJvbQorICRFVENDRVJUU0RJUgorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCit1cGRhdGUtY2EtY2VydGlmaWNhdGVzIHN5bWxpbmtzICh0cnVzdGVkKSBjZXJ0aWZpY2F0ZXMKK2Zyb20gJENFUlRTRElSIG9yICRMT0NBTENFUlRTRElSIGludG8gJEVUQ0NFUlRTRElSLgordXBkYXRlLWNhLWNlcnRpZmljYXRlcyBjYW4gY2FsbCBob29rIHNjcmlwdHMgaW5zdGFsbGVkCitpbnRvIC9ldGMvY2EtY2VydGlmaWNhdGVzL3VwZGF0ZS5kLiBUaG9zZSBzY3JpcHRzIGFyZQorcGFzc2VkIHRoZSBwZW0gZmlsZSBpbiAvZXRjL3NzbC9jZXJ0cy8gdGhhdCB3YXMgYWRkZWQgb3IKK3JlbW92ZWQgaW4gdGhpcyBydW4gYW5kIHRob3NlIHBlbSBmaWxlcyBhcmUgYWJzb2x1dGUKK3N5bWxpbmtzIGludG8gJENFUlRTRElSIG9yICRMT0NBTENFUlRTRElSIGF0IHRoZSBtb21lbnQuCisKK1doZW4gcnVubmluZyB1cGRhdGUtY2EtY2VydGlmaWNhdGVzIGR1cmluZyBpbWFnZSBidWlsZAordGltZSwgdGhleSB0aHVzbHkgYWxsIHBvaW50IGludG8gdGhlIGhvc3QncyBmaWxlIHN5c3RlbSwKK25vdCBpbnRvIHRoZSAkU1lTUk9PVC4gVGhpcyBtZWFuczoKKyogdGhlIGhvc3QncyBmaWxlIHN5c3RlbSBsYXlvdXQgbXVzdCBtYXRjaCB0aGUgb25lCisgIHByb2R1Y2VkIGJ5IE9FLCBhbmQKKyogaXQgYWxzbyBtZWFucyB0aGF0IHRoZSBob3N0IG11c3QgaGF2ZSBpbnN0YWxsZWQgdGhlIHNhbWUKKyAgKG9yIG1vcmUpIGNlcnRpZmljYXRlcyBhcyB0aGUgdGFyZ2V0IGluICRDRVJUU0RJUiBhbmQKKyAgJExPQ0FMQ0VSVFNESVIKKworVGhpcyBpcyBhIHByb2JsZW0gd2hlbiB3YW50aW5nIHRvIGV4ZWN1dGUgaG9vayBzY3JpcHRzLAorYmVjYXVzZSB0aGV5IGFsbCBuZWVkIHRvIGJlIHRhdWdodCBhYm91dCAkU1lTUk9PVCwgYW5kCitiZWhhdmUgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhleSdyZSBjYWxsZWQKK2F0IGltYWdlIGJ1aWxkIHRpbWUsIG9yIG9uIHRoZSB0YXJnZXQsIGFzIG90aGVyd2lzZSB0aGV5Cit3aWxsIGJlIHRyeWluZyB0byBhY3R1YWxseSByZWFkIHRoZSBob3N0J3MgY2VydGlmaWNhdGVzCitmcm9tICRDRVJUU0RJUiBvciAkTE9DQUxDRVJUU0RJUi4KKworVGhpcyBhbHNvIGlzIGEgcHJvYmxlbSB3aGVuIHJ1bm5pbmcgYW55dGhpbmcgZWxzZSBkdXJpbmcKK2ltYWdlIGJ1aWxkIHRpbWUgdGhhdCBkZXBlbmRzIG9uIHRoZSB0cnVzdGVkIENBCitjZXJ0aWZpY2F0ZXMuCisKK0NoYW5naW5nIHRoZSBzeW1saW5rIHRvIGJlIHJlbGF0aXZlIHNvbHZlcyBhbGwgb2YgdGhlc2UKK3Byb2JsZW1zLiBEbyBzby4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1zcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxhbmRyZS5kcmFzemlrQGpjaS5jb20+CistLS0KKyBzYmluL3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMgfCA2ICsrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zYmluL3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMgYi9zYmluL3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMKK2luZGV4IDAwZjgwYzcuLjdlOTExYTkgMTAwNzU1CistLS0gYS9zYmluL3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMKKysrKyBiL3NiaW4vdXBkYXRlLWNhLWNlcnRpZmljYXRlcworQEAgLTI5LDYgKzI5LDcgQEAgQ0VSVFNESVI9JFNZU1JPT1QvdXNyL3NoYXJlL2NhLWNlcnRpZmljYXRlcworIExPQ0FMQ0VSVFNESVI9JFNZU1JPT1QvdXNyL2xvY2FsL3NoYXJlL2NhLWNlcnRpZmljYXRlcworIENFUlRCVU5ETEU9Y2EtY2VydGlmaWNhdGVzLmNydAorIEVUQ0NFUlRTRElSPSRTWVNST09UL2V0Yy9zc2wvY2VydHMKKytGU1JPT1Q9Li4vLi4vLi4vICMgdG8gZ2V0IGZyb20gJEVUQ0NFUlRTRElSIHRvIHRoZSByb290IG9mIHRoZSBmaWxlIHN5c3RlbQorIEhPT0tTRElSPSRTWVNST09UL2V0Yy9jYS1jZXJ0aWZpY2F0ZXMvdXBkYXRlLmQKKyAKKyB3aGlsZSBbICQjIC1ndCAwIF07CitAQCAtMTI1LDkgKzEyNiwxMCBAQCBhZGQoKSB7CisgICBQRU09IiRFVENDRVJUU0RJUi8kKGJhc2VuYW1lICIkQ0VSVCIgLmNydCB8IHNlZCAtZSAncy8gL18vZycgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWUgJ3MvWygpXS89L2cnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1lICdzLywvXy9nJykucGVtIgorLSAgaWYgISB0ZXN0IC1lICIkUEVNIiB8fCBbICIkKHJlYWRsaW5rICIkUEVNIikiICE9ICIke0NFUlQjIyRTWVNST09UfSIgXQorKyAgRFNUPSIkKGVjaG8gJHtDRVJUfSB8IHNlZCAtZSAic3xeJFNZU1JPT1R8fCIgLWUgInN8Xi98JEZTUk9PVHwiICkiCisrICBpZiAhIHRlc3QgLWUgIiRQRU0iIHx8IFsgIiQocmVhZGxpbmsgIiRQRU0iKSIgIT0gIiR7RFNUfSIgXQorICAgdGhlbgorLSAgICBsbiAtc2YgIiR7Q0VSVCMjJFNZU1JPT1R9IiAiJFBFTSIKKysgICAgbG4gLXNmICIke0RTVH0iICIkUEVNIgorICAgICBlY2hvICIrJFBFTSIgPj4gIiRBRERFRCIKKyAgIGZpCisgICAjIEFkZCB0cmFpbGluZyBuZXdsaW5lIHRvIGNlcnRpZmljYXRlLCBpZiBpdCBpcyBtaXNzaW5nICgjNjM1NTcwKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2NhLWNlcnRpZmljYXRlcy9jYS1jZXJ0aWZpY2F0ZXNfMjAxNzA3MTcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlc18yMDE3MDcxNy5iYgppbmRleCBlNGZmYmQzLi4zNTAyOTQ4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlc18yMDE3MDcxNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlc18yMDE3MDcxNy5iYgpAQCAtMTYsMTUgKzE2LDE3IEBACiAKIFNSQ1JFViA9ICIzNGI4ZTE5ZTU0MWI4YWY0MDc2NjE2YjJlMTcwYzdhNzBjZGFkZWQwIgogCi1TUkNfVVJJID0gImdpdDovL2Fub25zY20uZGViaWFuLm9yZy9jb2xsYWItbWFpbnQvY2EtY2VydGlmaWNhdGVzLmdpdCBcCitTUkNfVVJJID0gImdpdDovL3NhbHNhLmRlYmlhbi5vcmcvZGViaWFuL2NhLWNlcnRpZmljYXRlcy5naXQ7cHJvdG9jb2w9aHR0cHMgXAogICAgICAgICAgICBmaWxlOi8vMDAwMi11cGRhdGUtY2EtY2VydGlmaWNhdGVzLXVzZS1TWVNST09ULnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtdXBkYXRlLWNhLWNlcnRpZmljYXRlcy1kb24tdC11c2UtRGViaWFuaXNtcy1pbi1ydW4tcC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly91cGRhdGUtY2EtY2VydGlmaWNhdGVzLXN1cHBvcnQtVG95Ym94LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2RlZmF1bHQtc3lzcm9vdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zYmluZGlyLnBhdGNoIgorICAgICAgICAgICBmaWxlOi8vc2JpbmRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLXVwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtdXNlLXJlbGF0aXZlLXN5bWxpbmtzLWZyb20tRVQucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCi1TWVNST09UX0RJUlNfY2xhc3MtbmF0aXZlICs9ICIvZXRjIgorU1lTUk9PVF9ESVJTX2NsYXNzLW5hdGl2ZSArPSAiJHtzeXNjb25mZGlyfSAke2RhdGFkaXJ9L2NhLWNlcnRpZmljYXRlcyIKIAogaW5oZXJpdCBhbGxhcmNoCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvMDAwMS1yZXBsYWNlLWtyYjUtY29uZmlnLXdpdGgtcGtnLWNvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvMDAwMS1yZXBsYWNlLWtyYjUtY29uZmlnLXdpdGgtcGtnLWNvbmZpZy5wYXRjaAppbmRleCA3NGU1ZDk5Li5hN2RiMWIzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsLzAwMDEtcmVwbGFjZS1rcmI1LWNvbmZpZy13aXRoLXBrZy1jb25maWcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC8wMDAxLXJlcGxhY2Uta3JiNS1jb25maWctd2l0aC1wa2ctY29uZmlnLnBhdGNoCkBAIC0xLDE3ICsxLDIxIEBACi1bUEFUQ0hdIHJlcGxhY2Uga3JiNS1jb25maWcgd2l0aCBwa2ctY29uZmlnCitGcm9tIGVkNzBmMDYyMzcwOGI4YTZjMWY1OGE1ZDI0M2Q4N2M1ZmY0NWIyNGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDI2IEFwciAyMDE2IDEzOjEzOjAxICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHJlcGxhY2Uga3JiNS1jb25maWcgd2l0aCBwa2ctY29uZmlnCiAKIFVwc3RyZWFtLVN0YXR1czogIFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBjb25maWd1cmUuYWMgfCA2ICsrKy0tLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGU5OWIzMDMuLmRjOTNmMzkgMTAwNjQ0CitpbmRleCA1NTY5YTI2Li41NmIwMzgwIDEwMDc1NQogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMTk2LDcgKzExOTYsNyBAQCBBQ19BUkdfV0lUSChnc3NhcGksCitAQCAtMTI5MCw3ICsxMjkwLDcgQEAgQUNfQVJHX1dJVEgoZ3NzYXBpLAogICAgZmkKICBdKQogIApAQCAtMjAsNyArMjQsNyBAQAogIAogIHNhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKICBBQ19NU0dfQ0hFQ0tJTkcoW2lmIEdTUy1BUEkgc3VwcG9ydCBpcyByZXF1ZXN0ZWRdKQotQEAgLTEyMDcsNyArMTIwNyw3IEBAIGlmIHRlc3QgeCIkd2FudF9nc3MiID0geHllczsgdGhlbgorQEAgLTEzMDEsNyArMTMwMSw3IEBAIGlmIHRlc3QgeCIkd2FudF9nc3MiID0geHllczsgdGhlbgogICAgICAgaWYgdGVzdCAtbiAiJGhvc3RfYWxpYXMiIC1hIC1mICIkR1NTQVBJX1JPT1QvYmluLyRob3N0X2FsaWFzLWtyYjUtY29uZmlnIjsgdGhlbgogICAgICAgICAgR1NTQVBJX0lOQ1M9YCRHU1NBUElfUk9PVC9iaW4vJGhvc3RfYWxpYXMta3JiNS1jb25maWcgLS1jZmxhZ3MgZ3NzYXBpYAogICAgICAgZWxpZiB0ZXN0IC1mICIkS1JCNUNPTkZJRyI7IHRoZW4KQEAgLTI5LDcgKzMzLDcgQEAKICAgICAgIGVsaWYgdGVzdCAiJEdTU0FQSV9ST09UIiAhPSAieWVzIjsgdGhlbgogICAgICAgICAgR1NTQVBJX0lOQ1M9Ii1JJEdTU0FQSV9ST09UL2luY2x1ZGUiCiAgICAgICBmaQotQEAgLTEzMDAsNyArMTMwMCw3IEBAIGlmIHRlc3QgeCIkd2FudF9nc3MiID0geHllczsgdGhlbgorQEAgLTEzOTQsNyArMTM5NCw3IEBAIGlmIHRlc3QgeCIkd2FudF9nc3MiID0geHllczsgdGhlbgogICAgICAgICAgZWxpZiB0ZXN0IC1mICIkS1JCNUNPTkZJRyI7IHRoZW4KICAgICAgICAgICAgIGRubCBrcmI1LWNvbmZpZyBkb2Vzbid0IGhhdmUgLS1saWJzLW9ubHktTCBvciBzaW1pbGFyLCBwdXQgZXZlcnl0aGluZwogICAgICAgICAgICAgZG5sIGludG8gTElCUwpAQCAtMzgsNiArNDIsMyBAQAogICAgICAgICAgICAgTElCUz0iJGdzc19saWJzICRMSUJTIgogICAgICAgICAgZWxzZQogICAgICAgICAgICAgY2FzZSAkaG9zdCBpbgotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAwOTkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAwOTkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2ZmYxYjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMDk5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbSBjOTMzMmZhNWU4NGYyNGRhMzAwYjQyYjFhOTMxYWRlOTI5ZDNlMjdkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHRAc3BhdGlhbHlzLmNvbT4KLURhdGU6IFR1ZSwgMSBBdWcgMjAxNyAxNzoxNzowNiArMDIwMAotU3ViamVjdDogW1BBVENIXSBmaWxlOiBvdXRwdXQgdGhlIGNvcnJlY3QgYnVmZmVyIHRvIHRoZSB1c2VyCi0KLVJlZ3Jlc3Npb24gYnJvdWdodCBieSA3YzMxMmY4NGVhOTMwZDggKEFwcmlsIDIwMTcpCi0KLUNWRTogQ1ZFLTIwMTctMTAwMDA5OQotCi1CdWc6IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvYWR2XzIwMTcwODA5Qy5odG1sCi0KLUNyZWRpdCB0byBPU1MtRnV6eiBmb3IgdGhlIGRpc2NvdmVyeQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1odHRwczovL2dpdGh1Yi5jb20vY3VybC9jdXJsL2NvbW1pdC9jOTMzMmZhNWU4NGYyNGRhMzAwYjQyYjFhOTMxYWRlOTI5ZDNlMjdkCi0KLVNpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliL2ZpbGUuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYi9maWxlLmMgYi9saWIvZmlsZS5jCi1pbmRleCBiZDQyNmVhYzIuLjY2NmNiZTc1YiAxMDA2NDQKLS0tLSBhL2xpYi9maWxlLmMKLSsrKyBiL2xpYi9maWxlLmMKLUBAIC00OTksMTEgKzQ5OSwxMSBAQCBzdGF0aWMgQ1VSTGNvZGUgZmlsZV9kbyhzdHJ1Y3QgY29ubmVjdGRhdGEgKmNvbm4sIGJvb2wgKmRvbmUpCi0gICAgICAgICAgICAgIEN1cmxfbW9udGhbdG0tPnRtX21vbl0sCi0gICAgICAgICAgICAgIHRtLT50bV95ZWFyICsgMTkwMCwKLSAgICAgICAgICAgICAgdG0tPnRtX2hvdXIsCi0gICAgICAgICAgICAgIHRtLT50bV9taW4sCi0gICAgICAgICAgICAgIHRtLT50bV9zZWMpOwotLSAgICByZXN1bHQgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT1RILCBidWYsIDApOwotKyAgICByZXN1bHQgPSBDdXJsX2NsaWVudF93cml0ZShjb25uLCBDTElFTlRXUklURV9CT1RILCBoZWFkZXIsIDApOwotICAgICBpZighcmVzdWx0KQotICAgICAgIC8qIHNldCB0aGUgZmlsZSBzaXplIHRvIG1ha2UgaXQgYXZhaWxhYmxlIHBvc3QgdHJhbnNmZXIgKi8KLSAgICAgICBDdXJsX3BncnNTZXREb3dubG9hZFNpemUoZGF0YSwgZXhwZWN0ZWRfc2l6ZSk7Ci0gICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAxMDAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAxMDAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3NGYxZGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMTAwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSAzNThiMmIxMzFhZDZjMDk1Njk2ZjIwZGNmYTYyYjgzMDUyNjNmODk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGFuaWVsIFN0ZW5iZXJnIDxkYW5pZWxAaGF4eC5zZT4KLURhdGU6IFR1ZSwgMSBBdWcgMjAxNyAxNzoxNjo0NiArMDIwMAotU3ViamVjdDogW1BBVENIXSB0ZnRwOiByZWplY3QgZmlsZSBuYW1lIGxlbmd0aHMgdGhhdCBkb24ndCBmaXQKLQotLi4uIGFuZCB0aGVyZWJ5IGF2b2lkIHRlbGxpbmcgc2VuZCgpIHRvIHNlbmQgb2ZmIG1vcmUgYnl0ZXMgdGhhbiB0aGUKLXNpemUgb2YgdGhlIGJ1ZmZlciEKLQotQ1ZFOiBDVkUtMjAxNy0xMDAwMTAwCi0KLUJ1ZzogaHR0cHM6Ly9jdXJsLmhheHguc2UvZG9jcy9hZHZfMjAxNzA4MDlCLmh0bWwKLVJlcG9ydGVkLWJ5OiBFdmVuIFJvdWF1bHQKLQotQ3JlZGl0IHRvIE9TUy1GdXp6IGZvciB0aGUgZGlzY292ZXJ5Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLWh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwvY29tbWl0LzM1OGIyYjEzMWFkNmMwOTU2OTZmMjBkY2ZhNjJiODMwNTI2M2Y4OTgKLQotU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWIvdGZ0cC5jIHwgICAgNyArKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliL3RmdHAuYyBiL2xpYi90ZnRwLmMKLWluZGV4IDAyYmQ4NDIuLmY2ZjRiY2UgMTAwNjQ0Ci0tLS0gYS9saWIvdGZ0cC5jCi0rKysgYi9saWIvdGZ0cC5jCi1AQCAtNSw3ICs1LDcgQEAKLSAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXwotICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcX19ffFxfX18vfF98IFxfXF9fX19ffAotICAqCi0tICogQ29weXJpZ2h0IChDKSAxOTk4IC0gMjAxNiwgRGFuaWVsIFN0ZW5iZXJnLCA8ZGFuaWVsQGhheHguc2U+LCBldCBhbC4KLSsgKiBDb3B5cmlnaHQgKEMpIDE5OTggLSAyMDE3LCBEYW5pZWwgU3RlbmJlcmcsIDxkYW5pZWxAaGF4eC5zZT4sIGV0IGFsLgotICAqCi0gICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgQ09QWUlORywgd2hpY2gKLSAgKiB5b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYXMgcGFydCBvZiB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIHRlcm1zCi1AQCAtNDkxLDYgKzQ5MSwxMSBAQCBzdGF0aWMgQ1VSTGNvZGUgdGZ0cF9zZW5kX2ZpcnN0KHRmdHBfc3RhdGVfZGF0YV90ICpzdGF0ZSwgdGZ0cF9ldmVudF90IGV2ZW50KQotICAgICBpZihyZXN1bHQpCi0gICAgICAgcmV0dXJuIHJlc3VsdDsKLSAKLSsgICAgaWYoc3RybGVuKGZpbGVuYW1lKSA+IChzdGF0ZS0+Ymxrc2l6ZSAtIHN0cmxlbihtb2RlKSAtIDQpKSB7Ci0rICAgICAgZmFpbGYoZGF0YSwgIlRGVFAgZmlsZSBuYW1lIHRvbyBsb25nXG4iKTsKLSsgICAgICByZXR1cm4gQ1VSTEVfVEZUUF9JTExFR0FMOyAvKiB0b28gbG9uZyBmaWxlIG5hbWUgZmllbGQgKi8KLSsgICAgfQotKwotICAgICBzbnByaW50ZigoY2hhciAqKXN0YXRlLT5zcGFja2V0LmRhdGErMiwKLSAgICAgICAgICAgICAgc3RhdGUtPmJsa3NpemUsCi0gICAgICAgICAgICAgICIlcyVjJXMlYyIsIGZpbGVuYW1lLCAnXDAnLCAgbW9kZSwgJ1wwJyk7Ci0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMTAxLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMTAxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzAwZmZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDEwMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLUZyb20gNDUzZTdhN2EwM2EyY2VjNzQ5YWJkMzg3OGE0OGU3MjhjNTE1Y2NhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERhbmllbCBTdGVuYmVyZyA8ZGFuaWVsQGhheHguc2U+Ci1EYXRlOiBUdWUsIDEgQXVnIDIwMTcgMTc6MTY6MDcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gZ2xvYjogZG8gbm90IGNvbnRpbnVlIHBhcnNpbmcgYWZ0ZXIgYSBzdHJ0b3VsKCkgb3ZlcmZsb3cKLSByYW5nZQotCi1BZGRlZCB0ZXN0IDEyODkgdG8gdmVyaWZ5LgotCi1DVkU6IENWRS0yMDE3LTEwMDAxMDEKLQotQnVnOiBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2Fkdl8yMDE3MDgwOUEuaHRtbAotUmVwb3J0ZWQtYnk6IEJyaWFuIENhcnBlbnRlcgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1odHRwczovL2dpdGh1Yi5jb20vY3VybC9jdXJsL2NvbW1pdC80NTNlN2E3YTAzYTJjZWM3NDlhYmQzODc4YTQ4ZTcyOGM1MTVjY2E3Ci0KLVJlYmFzZSB0aGUgdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMgY2hhbmdlcyBmb3IgY3VybCA3LjU0LjEuCi0KLVNpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL3Rvb2xfdXJsZ2xvYi5jICAgICAgfCAgNSArKysrLQotIHRlc3RzL2RhdGEvTWFrZWZpbGUuaW5jIHwgIDIgKy0KLSB0ZXN0cy9kYXRhL3Rlc3QxMjg5ICAgICB8IDM1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9kYXRhL3Rlc3QxMjg5Ci0KLWRpZmYgLS1naXQgYS9zcmMvdG9vbF91cmxnbG9iLmMgYi9zcmMvdG9vbF91cmxnbG9iLmMKLWluZGV4IDZiMWVjZTAuLmQ1NmRjZDkgMTAwNjQ0Ci0tLS0gYS9zcmMvdG9vbF91cmxnbG9iLmMKLSsrKyBiL3NyYy90b29sX3VybGdsb2IuYwotQEAgLTI3Myw3ICsyNzMsMTAgQEAgc3RhdGljIENVUkxjb2RlIGdsb2JfcmFuZ2UoVVJMR2xvYiAqZ2xvYiwgY2hhciAqKnBhdHRlcm5wLAotICAgICAgICAgfQotICAgICAgICAgZXJybm8gPSAwOwotICAgICAgICAgbWF4X24gPSBzdHJ0b3VsKHBhdHRlcm4sICZlbmRwLCAxMCk7Ci0tICAgICAgICBpZihlcnJubyB8fCAoKmVuZHAgPT0gJzonKSkgewotKyAgICAgICAgaWYoZXJybm8pCi0rICAgICAgICAgIC8qIG92ZXJmbG93ICovCi0rICAgICAgICAgIGVuZHAgPSBOVUxMOwotKyAgICAgICAgZWxzZSBpZigqZW5kcCA9PSAnOicpIHsKLSAgICAgICAgICAgcGF0dGVybiA9IGVuZHArMTsKLSAgICAgICAgICAgZXJybm8gPSAwOwotICAgICAgICAgICBzdGVwX24gPSBzdHJ0b3VsKHBhdHRlcm4sICZlbmRwLCAxMCk7Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMgYi90ZXN0cy9kYXRhL01ha2VmaWxlLmluYwotaW5kZXggMTU1MzIwYS4uN2FkYmVlNiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2RhdGEvTWFrZWZpbGUuaW5jCi0rKysgYi90ZXN0cy9kYXRhL01ha2VmaWxlLmluYwotQEAgLTEzMiw3ICsxMzIsNyBAQCB0ZXN0MTI1MiB0ZXN0MTI1MyB0ZXN0MTI1NCB0ZXN0MTI1NSB0ZXN0MTI1NiB0ZXN0MTI1NyB0ZXN0MTI1OCB0ZXN0MTI1OSBcCi0gdGVzdDEyNjAgdGVzdDEyNjEgdGVzdDEyNjIgXAotIFwKLSB0ZXN0MTI4MCB0ZXN0MTI4MSB0ZXN0MTI4MiB0ZXN0MTI4MyB0ZXN0MTI4NCB0ZXN0MTI4NSB0ZXN0MTI4NiB0ZXN0MTI4NyBcCi0tdGVzdDEyODggXAotK3Rlc3QxMjg4IHRlc3QxMjg5IFwKLSBcCi0gdGVzdDEzMDAgdGVzdDEzMDEgdGVzdDEzMDIgdGVzdDEzMDMgdGVzdDEzMDQgdGVzdDEzMDUgdGVzdDEzMDYgdGVzdDEzMDcgXAotIHRlc3QxMzA4IHRlc3QxMzA5IHRlc3QxMzEwIHRlc3QxMzExIHRlc3QxMzEyIHRlc3QxMzEzIHRlc3QxMzE0IHRlc3QxMzE1IFwKLWRpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMjg5IGIvdGVzdHMvZGF0YS90ZXN0MTI4OQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmQ2NzljYzAKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Rlc3RzL2RhdGEvdGVzdDEyODkKLUBAIC0wLDAgKzEsMzUgQEAKLSs8dGVzdGNhc2U+Ci0rPGluZm8+Ci0rPGtleXdvcmRzPgotK0hUVFAKLStIVFRQIEdFVAotK2dsb2JiaW5nCi0rPC9rZXl3b3Jkcz4KLSs8L2luZm8+Ci0rCi0rIwotKyMgU2VydmVyLXNpZGUKLSs8cmVwbHk+Ci0rPC9yZXBseT4KLSsKLSsjIENsaWVudC1zaWRlCi0rPGNsaWVudD4KLSs8c2VydmVyPgotK2h0dHAKLSs8L3NlcnZlcj4KLSs8bmFtZT4KLStnbG9iYmluZyB3aXRoIG92ZXJmbG93IGFuZCBiYWQgc3ludHh4Ci0rPC9uYW1lPgotKzxjb21tYW5kPgotK2h0dHA6Ly91ciUyMFswLTYwMDAwMDAwMDAwMDAwMDAwMDAwCi0rPC9jb21tYW5kPgotKzwvY2xpZW50PgotKwotKyMgVmVyaWZ5IGRhdGEgYWZ0ZXIgdGhlIHRlc3QgaGFzIGJlZW4gInNob3QiCi0rPHZlcmlmeT4KLSsjIGN1cmw6ICgzKSBbZ2xvYmJpbmddIGJhZCByYW5nZSBpbiBjb2x1bW4gCi0rPGVycm9yY29kZT4KLSszCi0rPC9lcnJvcmNvZGU+Ci0rPC92ZXJpZnk+Ci0rPC90ZXN0Y2FzZT4KLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDI1NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDI1NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIwNzk4Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAyNTQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzggKzAsMCBAQAotRnJvbSAxYjJlYmE2Zjk3NDVjMDY0ZjcyODNlMGFkYThmNDZkZjlkOWQ2ZTQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTGkgWmhvdSA8bGkuemhvdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAwMDoyNjo1MCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBGVFA6IHplcm8gdGVybWluYXRlIHRoZSBlbnRyeSBwYXRoIGV2ZW4gb24gYmFkIGlucHV0Ci0KLS4uLiBhIHNpbmdsZSBkb3VibGUgcXVvdGUgY291bGQgbGVhdmUgdGhlIGVudHJ5IHBhdGggYnVmZmVyIHdpdGhvdXQgYSB6ZXJvCi10ZXJtaW5hdGluZyBieXRlLiBDVkUtMjAxNy0xMDAwMjU0Ci0KLVRlc3QgMTE1MiBhZGRlZCB0byB2ZXJpZnkuCi0KLVJlcG9ydGVkLWJ5OiBNYXggRHltb25kCi1CdWc6IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvYWR2XzIwMTcxMDA0Lmh0bWwKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy0xMDAwMjU0Ci1TaWduZWQtb2ZmLWJ5OiBMaSBaaG91IDxsaS56aG91QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWIvZnRwLmMgICAgICAgICAgICAgICB8ICA3ICsrKystLQotIHRlc3RzL2RhdGEvTWFrZWZpbGUuaW5jIHwgIDIgKysKLSB0ZXN0cy9kYXRhL3Rlc3QxMTUyICAgICB8IDYxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2RhdGEvdGVzdDExNTIKLQotZGlmZiAtLWdpdCBhL2xpYi9mdHAuYyBiL2xpYi9mdHAuYwotaW5kZXggNWVkZWMzNy4uNDkzZGJmOSAxMDA2NDQKLS0tLSBhL2xpYi9mdHAuYwotKysrIGIvbGliL2Z0cC5jCi1AQCAtMjgyNiw2ICsyODI2LDcgQEAgc3RhdGljIENVUkxjb2RlIGZ0cF9zdGF0ZW1hY2hfYWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKLSAgICAgICAgIGNvbnN0IHNpemVfdCBidWZfc2l6ZSA9IGRhdGEtPnNldC5idWZmZXJfc2l6ZTsKLSAgICAgICAgIGNoYXIgKmRpcjsKLSAgICAgICAgIGNoYXIgKnN0b3JlOwotKyAgICAgICAgYm9vbCBlbnRyeV9leHRyYWN0ZWQgPSBGQUxTRTsKLSAKLSAgICAgICAgIGRpciA9IG1hbGxvYyhucmVhZCArIDEpOwotICAgICAgICAgaWYoIWRpcikKLUBAIC0yODU3LDcgKzI4NTgsNyBAQCBzdGF0aWMgQ1VSTGNvZGUgZnRwX3N0YXRlbWFjaF9hY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQotICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgIC8qIGVuZCBvZiBwYXRoICovCi0tICAgICAgICAgICAgICAgICpzdG9yZSA9ICdcMCc7IC8qIHplcm8gdGVybWluYXRlICovCi0rICAgICAgICAgICAgICAgIGVudHJ5X2V4dHJhY3RlZCA9IFRSVUU7Ci0gICAgICAgICAgICAgICAgIGJyZWFrOyAvKiBnZXQgb3V0IG9mIHRoaXMgbG9vcCAqLwotICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0KLUBAIC0yODY2LDcgKzI4NjcsOSBAQCBzdGF0aWMgQ1VSTGNvZGUgZnRwX3N0YXRlbWFjaF9hY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQotICAgICAgICAgICAgIHN0b3JlKys7Ci0gICAgICAgICAgICAgcHRyKys7Ci0gICAgICAgICAgIH0KLS0KLSsgICAgICAgICAgKnN0b3JlID0gJ1wwJzsgLyogemVybyB0ZXJtaW5hdGUgKi8KLSsgICAgICAgIH0KLSsgICAgICAgIGlmKGVudHJ5X2V4dHJhY3RlZCkgewotICAgICAgICAgICAvKiBJZiB0aGUgcGF0aCBuYW1lIGRvZXMgbm90IGxvb2sgbGlrZSBhbiBhYnNvbHV0ZSBwYXRoIChpLmUuOiBpdAotICAgICAgICAgICAgICBkb2VzIG5vdCBzdGFydCB3aXRoIGEgJy8nKSwgd2UgcHJvYmFibHkgbmVlZCBzb21lIHNlcnZlci1kZXBlbmRlbnQKLSAgICAgICAgICAgICAgYWRqdXN0bWVudHMuIEZvciBleGFtcGxlLCB0aGlzIGlzIHRoZSBjYXNlIHdoZW4gY29ubmVjdGluZyB0bwotZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvTWFrZWZpbGUuaW5jIGIvdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMKLWluZGV4IDdhZGJlZTYuLjUyODQ2NTQgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9kYXRhL01ha2VmaWxlLmluYwotKysrIGIvdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMKLUBAIC0xMjEsNiArMTIxLDggQEAgdGVzdDExMjAgdGVzdDExMjEgdGVzdDExMjIgdGVzdDExMjMgdGVzdDExMjQgdGVzdDExMjUgdGVzdDExMjYgdGVzdDExMjcgXAotIHRlc3QxMTI4IHRlc3QxMTI5IHRlc3QxMTMwIHRlc3QxMTMxIHRlc3QxMTMyIHRlc3QxMTMzIHRlc3QxMTM0IHRlc3QxMTM1IFwKLSB0ZXN0MTEzNiB0ZXN0MTEzNyB0ZXN0MTEzOCB0ZXN0MTEzOSB0ZXN0MTE0MCB0ZXN0MTE0MSB0ZXN0MTE0MiB0ZXN0MTE0MyBcCi0gdGVzdDExNDQgdGVzdDExNDUgdGVzdDExNDYgXAotK3Rlc3QxMTUyIFwKLStcCi0gdGVzdDEyMDAgdGVzdDEyMDEgdGVzdDEyMDIgdGVzdDEyMDMgdGVzdDEyMDQgdGVzdDEyMDUgdGVzdDEyMDYgdGVzdDEyMDcgXAotIHRlc3QxMjA4IHRlc3QxMjA5IHRlc3QxMjEwIHRlc3QxMjExIHRlc3QxMjEyIHRlc3QxMjEzIHRlc3QxMjE0IHRlc3QxMjE1IFwKLSB0ZXN0MTIxNiB0ZXN0MTIxNyB0ZXN0MTIxOCB0ZXN0MTIxOSBcCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTE1MiBiL3Rlc3RzL2RhdGEvdGVzdDExNTIKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hYThjMGE3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi90ZXN0cy9kYXRhL3Rlc3QxMTUyCi1AQCAtMCwwICsxLDYxIEBACi0rPHRlc3RjYXNlPgotKzxpbmZvPgotKzxrZXl3b3Jkcz4KLStGVFAKLStQQVNWCi0rTElTVAotKzwva2V5d29yZHM+Ci0rPC9pbmZvPgotKyMKLSsjIFNlcnZlci1zaWRlCi0rPHJlcGx5PgotKzxzZXJ2ZXJjbWQ+Ci0rUkVQTFkgUFdEIDI1NyAianVzdCBvbmUKLSs8L3NlcnZlcmNtZD4KLSsKLSsjIFdoZW4gZG9pbmcgTElTVCwgd2UgZ2V0IHRoZSBkZWZhdWx0IGxpc3Qgb3V0cHV0IGhhcmQtY29kZWQgaW4gdGhlIHRlc3QKLSsjIEZUUCBzZXJ2ZXIKLSs8ZGF0YSBtb2RlPSJ0ZXh0Ij4KLSt0b3RhbCAyMAotK2Ryd3hyLXhyLXggICA4IDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgT2N0IDIyIDEzOjA2IC4KLStkcnd4ci14ci14ICAgOCA5OCAgICAgICA5OCAgICAgICAgICAgNTEyIE9jdCAyMiAxMzowNiAuLgotK2Ryd3hyLXhyLXggICAyIDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgTWF5ICAyICAxOTk2IGN1cmwtcmVsZWFzZXMKLSstci0tci0tci0tICAgMSAwICAgICAgICAxICAgICAgICAgICAgIDM1IEp1bCAxNiAgMTk5NiBSRUFETUUKLStscnd4cnd4cnd4ICAgMSAwICAgICAgICAxICAgICAgICAgICAgICA3IERlYyAgOSAgMTk5OSBiaW4gLT4gdXNyL2JpbgotK2RyLXhyLXhyLXggICAyIDAgICAgICAgIDEgICAgICAgICAgICA1MTIgT2N0ICAxICAxOTk3IGRldgotK2Ryd3hyd3hyd3ggICAyIDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgTWF5IDI5IDE2OjA0IGRvd25sb2FkLmh0bWwKLStkci14ci14ci14ICAgMiAwICAgICAgICAxICAgICAgICAgICAgNTEyIE5vdiAzMCAgMTk5NSBldGMKLStkcnd4cnd4cnd4ICAgMiA5OCAgICAgICAxICAgICAgICAgICAgNTEyIE9jdCAzMCAxNDozMyBwdWIKLStkci14ci14ci14ICAgNSAwICAgICAgICAxICAgICAgICAgICAgNTEyIE9jdCAgMSAgMTk5NyB1c3IKLSs8L2RhdGE+Ci0rPC9yZXBseT4KLSsKLSsjCi0rIyBDbGllbnQtc2lkZQotKzxjbGllbnQ+Ci0rPHNlcnZlcj4KLStmdHAKLSs8L3NlcnZlcj4KLSsgPG5hbWU+Ci0rRlRQIHdpdGggdW5ldmVuIHF1b3RlIGluIFBXRCByZXNwb25zZQotKyA8L25hbWU+Ci0rIDxjb21tYW5kPgotK2Z0cDovLyVIT1NUSVA6JUZUUFBPUlQvdGVzdC0xMTUyLwotKzwvY29tbWFuZD4KLSs8L2NsaWVudD4KLSsKLSsjCi0rIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKLSs8dmVyaWZ5PgotKzxwcm90b2NvbD4KLStVU0VSIGFub255bW91cwotK1BBU1MgZnRwQGV4YW1wbGUuY29tCi0rUFdECi0rQ1dEIHRlc3QtMTE1MgotK0VQU1YKLStUWVBFIEEKLStMSVNUCi0rUVVJVAotKzwvcHJvdG9jb2w+Ci0rPC92ZXJpZnk+Ci0rPC90ZXN0Y2FzZT4KLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvY29uZmlndXJlX2FjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9jb25maWd1cmVfYWMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4YmQzMDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9jb25maWd1cmVfYWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6ICBQZW5kaW5nCi0KLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjgxLDcgKzI4MSw3IEBAIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAKLSBDVVJMX0NIRUNLX0NPTVBJTEVSCi0gQ1VSTF9TRVRfQ09NUElMRVJfQkFTSUNfT1BUUwotLUNVUkxfU0VUX0NPTVBJTEVSX0RFQlVHX09QVFMKLStkbmwgQ1VSTF9TRVRfQ09NUElMRVJfREVCVUdfT1BUUwotIENVUkxfU0VUX0NPTVBJTEVSX09QVElNSVpFX09QVFMKLSBDVVJMX1NFVF9DT01QSUxFUl9XQVJOSU5HX09QVFMKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvcmVwcm9kdWNpYmxlLW1raGVscC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvcmVwcm9kdWNpYmxlLW1raGVscC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjY4YmJlYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL3JlcHJvZHVjaWJsZS1ta2hlbHAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIDFmZTkyZmQzZGQ2NGM3MjI4ZjZmZjQxZTNmYzE2YzRmMjM5MjQ3MWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotRGF0ZTogRnJpLCAyNyBPY3QgMjAxNyAwODoyODoyNSAtMDcwMAotU3ViamVjdDogbWtoZWxwLnBsOiBzdXBwb3J0IHJlcHJvZHVjaWJsZSBidWlsZAotCi1EbyBub3QgZ2VuZXJhdGUgbGluZSB3aXRoIHRoZSBjdXJyZW50IGRhdGUsIHN1Y2ggYXM6Ci0KLSogR2VuZXJhdGlvbiB0aW1lOiBUdWUgT2N0LTI0IDE4OjAxOjQxIDIwMTcKLQotVGhpcyB3aWxsIGltcHJvdmUgcmVwcm9kdWNpYmlsaXR5LiBUaGUgZ2VuZXJhdGVkIHN0cmluZyBpcyBvbmx5Ci1wYXJ0IG9mIGEgY29tbWVudCwgc28gdGhlcmUgc2hvdWxkIGJlIG5vIGFkdmVyc2UgY29uc2VxdWVuY2VzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbIGh0dHBzOi8vZ2l0aHViLmNvbS9jdXJsL2N1cmwvcHVsbC8yMDI2IF0KLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL3NyYy9ta2hlbHAucGwgYi9zcmMvbWtoZWxwLnBsCi1pbmRleCAyNzBkYWEyLi43NTdmMDI0IDEwMDc1NQotLS0tIGEvc3JjL21raGVscC5wbAotKysrIGIvc3JjL21raGVscC5wbAotQEAgLTEwMiwxMSArMTAyLDkgQEAgd2hpbGUoPFJFQUQ+KSB7Ci0gfQotIGNsb3NlKFJFQUQpOwotIAotLSRub3cgPSBsb2NhbHRpbWU7Ci0gcHJpbnQgPDxIRUFECi0gLyoKLSAgKiBORVZFUiBFVkVSIGVkaXQgdGhpcyBtYW51YWxseSwgZml4IHRoZSBta2hlbHAucGwgc2NyaXB0IGluc3RlYWQhCi0tICogR2VuZXJhdGlvbiB0aW1lOiAkbm93Ci0gICovCi0gI2lmZGVmIFVTRV9NQU5VQUwKLSAjaW5jbHVkZSAidG9vbF9odWdlaGVscC5oIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybF83LjU0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsXzcuNTQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThmMDUzMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsXzcuNTQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLVNVTU1BUlkgPSAiQ29tbWFuZCBsaW5lIHRvb2wgYW5kIGxpYnJhcnkgZm9yIGNsaWVudC1zaWRlIFVSTCB0cmFuc2ZlcnMiCi1IT01FUEFHRSA9ICJodHRwOi8vY3VybC5oYXh4LnNlLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpc3QuY2dpP2xpc3Q9Y3VybC10cmFja2VyIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7YmVnaW5saW5lPTg7bWQ1PTNhMzQ5NDJmNGFlM2ZiZjFhMzAzMTYwNzE0ZTY2NGFjIgotCi1TUkNfVVJJID0gImh0dHA6Ly9jdXJsLmhheHguc2UvZG93bmxvYWQvY3VybC0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcmVwbGFjZS1rcmI1LWNvbmZpZy13aXRoLXBrZy1jb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTAwMDA5OS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMDAwMTAwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwMDAxMDEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTAwMDI1NC5wYXRjaCBcCi0iCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAotICAgICAgICAgICBmaWxlOi8vcmVwcm9kdWNpYmxlLW1raGVscC5wYXRjaCBcCi0iCi0KLSMgY3VybCBsaWtlcyB0byBzZXQgLWcwIGluIENGTEFHUywgc28gd2Ugc3RvcCBpdAotIyBmcm9tIG11Y2tpbmcgYXJvdW5kIHdpdGggZGVidWcgb3B0aW9ucwotIwotU1JDX1VSSSArPSAiIGZpbGU6Ly9jb25maWd1cmVfYWMucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2YjZlYjcyMmY1MTJlN2EyNDg1NWZmMDg0ZjU0ZmU1NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmZGZjNGRmMmQwMDFlZTBjNDRlYzA3MTE4NmU3NzAwNDYyNDkyNjNjNDkxZmNhZTQ4ZGYwZTFhM2NhOGYyNWEwIgotCi1DVkVfUFJPRFVDVCA9ICJsaWJjdXJsIgotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZyBtdWx0aWxpYl9oZWFkZXIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gZ251dGxzIHByb3h5IHRocmVhZGVkLXJlc29sdmVyIHpsaWIiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICJpcHY2IHByb3h5IHNzbCB0aHJlYWRlZC1yZXNvbHZlciB6bGliIgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiaXB2NiBwcm94eSBzc2wgdGhyZWFkZWQtcmVzb2x2ZXIgemxpYiIKLQotIyAnYXJlcycgYW5kICd0aHJlYWRlZC1yZXNvbHZlcicgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZQotUEFDS0FHRUNPTkZJR1thcmVzXSA9ICItLWVuYWJsZS1hcmVzLC0tZGlzYWJsZS1hcmVzLGMtYXJlcyIKLVBBQ0tBR0VDT05GSUdbZGljdF0gPSAiLS1lbmFibGUtZGljdCwtLWRpc2FibGUtZGljdCwiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscywtLXdpdGhvdXQtZ251dGxzLGdudXRscyIKLVBBQ0tBR0VDT05GSUdbZ29waGVyXSA9ICItLWVuYWJsZS1nb3BoZXIsLS1kaXNhYmxlLWdvcGhlciwiCi1QQUNLQUdFQ09ORklHW2ltYXBdID0gIi0tZW5hYmxlLWltYXAsLS1kaXNhYmxlLWltYXAsIgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKLVBBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS1lbmFibGUtbGRhcCwtLWRpc2FibGUtbGRhcCwiCi1QQUNLQUdFQ09ORklHW2xkYXBzXSA9ICItLWVuYWJsZS1sZGFwcywtLWRpc2FibGUtbGRhcHMsIgotUEFDS0FHRUNPTkZJR1tsaWJpZG5dID0gIi0td2l0aC1saWJpZG4sLS13aXRob3V0LWxpYmlkbixsaWJpZG4iCi1QQUNLQUdFQ09ORklHW2xpYnNzaDJdID0gIi0td2l0aC1saWJzc2gyLC0td2l0aG91dC1saWJzc2gyLGxpYnNzaDIiCi1QQUNLQUdFQ09ORklHW3BvcDNdID0gIi0tZW5hYmxlLXBvcDMsLS1kaXNhYmxlLXBvcDMsIgotUEFDS0FHRUNPTkZJR1twcm94eV0gPSAiLS1lbmFibGUtcHJveHksLS1kaXNhYmxlLXByb3h5LCIKLVBBQ0tBR0VDT05GSUdbcnRtcGR1bXBdID0gIi0td2l0aC1saWJydG1wLC0td2l0aG91dC1saWJydG1wLHJ0bXBkdW1wIgotUEFDS0FHRUNPTkZJR1tydHNwXSA9ICItLWVuYWJsZS1ydHNwLC0tZGlzYWJsZS1ydHNwLCIKLVBBQ0tBR0VDT05GSUdbc21iXSA9ICItLWVuYWJsZS1zbWIsLS1kaXNhYmxlLXNtYiwiCi1QQUNLQUdFQ09ORklHW3NtdHBdID0gIi0tZW5hYmxlLXNtdHAsLS1kaXNhYmxlLXNtdHAsIgotUEFDS0FHRUNPTkZJR1tzc2xdID0gIi0td2l0aC1zc2wgLS13aXRoLXJhbmRvbT0vZGV2L3VyYW5kb20sLS13aXRob3V0LXNzbCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1t0ZWxuZXRdID0gIi0tZW5hYmxlLXRlbG5ldCwtLWRpc2FibGUtdGVsbmV0LCIKLVBBQ0tBR0VDT05GSUdbdGZ0cF0gPSAiLS1lbmFibGUtdGZ0cCwtLWRpc2FibGUtdGZ0cCwiCi1QQUNLQUdFQ09ORklHW3RocmVhZGVkLXJlc29sdmVyXSA9ICItLWVuYWJsZS10aHJlYWRlZC1yZXNvbHZlciwtLWRpc2FibGUtdGhyZWFkZWQtcmVzb2x2ZXIiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliPSR7U1RBR0lOR19MSUJESVJ9Ly4uLywtLXdpdGhvdXQtemxpYix6bGliIgotUEFDS0FHRUNPTkZJR1trcmI1XSA9ICItLXdpdGgtZ3NzYXBpLC0td2l0aG91dC1nc3NhcGksa3JiNSIKLVBBQ0tBR0VDT05GSUdbbmdodHRwMl0gPSAiLS13aXRoLW5naHR0cDIsLS13aXRob3V0LW5naHR0cDIsbmdodHRwMiIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1lbmFibGUtY3J5cHRvLWF1dGggXAotICAgIC0td2l0aC1jYS1idW5kbGU9JHtzeXNjb25mZGlyfS9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCBcCi0gICAgLS13aXRob3V0LWxpYm1ldGFsaW5rIFwKLSAgICAtLXdpdGhvdXQtbGlicHNsIFwKLSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jb2VfbXVsdGlsaWJfaGVhZGVyIGN1cmwvY3VybGJ1aWxkLmgKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotCSMgY2xlYW51cCBidWlsZHBhdGhzIGZyb20gY3VybC1jb25maWcKLQlzZWQgLWkgXAotCSAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCi0JICAgIC1lICdzLC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCi0JICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKLQkgICAgJHtEfSR7YmluZGlyfS9jdXJsLWNvbmZpZwotfQotCi1QQUNLQUdFUyA9KyAibGliJHtCUE59IgotCi1GSUxFU19saWIke0JQTn0gPSAiJHtsaWJkaXJ9L2xpYiouc28uKiIKLVJSRUNPTU1FTkRTX2xpYiR7QlBOfSArPSAiY2EtY2VydGlmaWNhdGVzIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS96c2giCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy42MC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybF83LjYwLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUwNGZhNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy42MC4wLmJiCkBAIC0wLDAgKzEsNzAgQEAKK1NVTU1BUlkgPSAiQ29tbWFuZCBsaW5lIHRvb2wgYW5kIGxpYnJhcnkgZm9yIGNsaWVudC1zaWRlIFVSTCB0cmFuc2ZlcnMiCitIT01FUEFHRSA9ICJodHRwOi8vY3VybC5oYXh4LnNlLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpc3QuY2dpP2xpc3Q9Y3VybC10cmFja2VyIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7YmVnaW5saW5lPTg7bWQ1PTNhMzQ5NDJmNGFlM2ZiZjFhMzAzMTYwNzE0ZTY2NGFjIgorCitTUkNfVVJJID0gImh0dHA6Ly9jdXJsLmhheHguc2UvZG93bmxvYWQvY3VybC0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcmVwbGFjZS1rcmI1LWNvbmZpZy13aXRoLXBrZy1jb25maWcucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmQyYWFiZjc4ZGVkNmE5YWVjOGE1NDUzMmZkNmI1ZDciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODk3ZGZiMjIwNGJkOTliZTMyODI3OWY4OGY1NWI3YzYxNTkyMjE2YjA1NDJmY2JlOTk1YzYwYWE5Mjg3MWU5YiIKKworQ1ZFX1BST0RVQ1QgPSAibGliY3VybCIKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWcgbXVsdGlsaWJfaGVhZGVyCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IGdudXRscyBwcm94eSB0aHJlYWRlZC1yZXNvbHZlciB6bGliIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiaXB2NiBwcm94eSBzc2wgdGhyZWFkZWQtcmVzb2x2ZXIgemxpYiIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gImlwdjYgcHJveHkgc3NsIHRocmVhZGVkLXJlc29sdmVyIHpsaWIiCisKKyMgJ2FyZXMnIGFuZCAndGhyZWFkZWQtcmVzb2x2ZXInIGFyZSBtdXR1YWxseSBleGNsdXNpdmUKK1BBQ0tBR0VDT05GSUdbYXJlc10gPSAiLS1lbmFibGUtYXJlcywtLWRpc2FibGUtYXJlcyxjLWFyZXMiCitQQUNLQUdFQ09ORklHW2RpY3RdID0gIi0tZW5hYmxlLWRpY3QsLS1kaXNhYmxlLWRpY3QsIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsLS13aXRob3V0LWdudXRscyxnbnV0bHMiCitQQUNLQUdFQ09ORklHW2dvcGhlcl0gPSAiLS1lbmFibGUtZ29waGVyLC0tZGlzYWJsZS1nb3BoZXIsIgorUEFDS0FHRUNPTkZJR1tpbWFwXSA9ICItLWVuYWJsZS1pbWFwLC0tZGlzYWJsZS1pbWFwLCIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCitQQUNLQUdFQ09ORklHW2tyYjVdID0gIi0td2l0aC1nc3NhcGksLS13aXRob3V0LWdzc2FwaSxrcmI1IgorUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLWVuYWJsZS1sZGFwLC0tZGlzYWJsZS1sZGFwLCIKK1BBQ0tBR0VDT05GSUdbbGRhcHNdID0gIi0tZW5hYmxlLWxkYXBzLC0tZGlzYWJsZS1sZGFwcywiCitQQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLS13aXRoLWxpYmlkbjIsLS13aXRob3V0LWxpYmlkbjIsbGliaWRuMiIKK1BBQ0tBR0VDT05GSUdbbGlic3NoMl0gPSAiLS13aXRoLWxpYnNzaDIsLS13aXRob3V0LWxpYnNzaDIsbGlic3NoMiIKK1BBQ0tBR0VDT05GSUdbbmdodHRwMl0gPSAiLS13aXRoLW5naHR0cDIsLS13aXRob3V0LW5naHR0cDIsbmdodHRwMiIKK1BBQ0tBR0VDT05GSUdbcG9wM10gPSAiLS1lbmFibGUtcG9wMywtLWRpc2FibGUtcG9wMywiCitQQUNLQUdFQ09ORklHW3Byb3h5XSA9ICItLWVuYWJsZS1wcm94eSwtLWRpc2FibGUtcHJveHksIgorUEFDS0FHRUNPTkZJR1tydG1wZHVtcF0gPSAiLS13aXRoLWxpYnJ0bXAsLS13aXRob3V0LWxpYnJ0bXAscnRtcGR1bXAiCitQQUNLQUdFQ09ORklHW3J0c3BdID0gIi0tZW5hYmxlLXJ0c3AsLS1kaXNhYmxlLXJ0c3AsIgorUEFDS0FHRUNPTkZJR1tzbWJdID0gIi0tZW5hYmxlLXNtYiwtLWRpc2FibGUtc21iLCIKK1BBQ0tBR0VDT05GSUdbc210cF0gPSAiLS1lbmFibGUtc210cCwtLWRpc2FibGUtc210cCwiCitQQUNLQUdFQ09ORklHW3NzbF0gPSAiLS13aXRoLXNzbCAtLXdpdGgtcmFuZG9tPS9kZXYvdXJhbmRvbSwtLXdpdGhvdXQtc3NsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3RlbG5ldF0gPSAiLS1lbmFibGUtdGVsbmV0LC0tZGlzYWJsZS10ZWxuZXQsIgorUEFDS0FHRUNPTkZJR1t0ZnRwXSA9ICItLWVuYWJsZS10ZnRwLC0tZGlzYWJsZS10ZnRwLCIKK1BBQ0tBR0VDT05GSUdbdGhyZWFkZWQtcmVzb2x2ZXJdID0gIi0tZW5hYmxlLXRocmVhZGVkLXJlc29sdmVyLC0tZGlzYWJsZS10aHJlYWRlZC1yZXNvbHZlciIKK1BBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWI9JHtTVEFHSU5HX0xJQkRJUn0vLi4vLC0td2l0aG91dC16bGliLHpsaWIiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZW5hYmxlLWNyeXB0by1hdXRoIFwKKyAgICAtLXdpdGgtY2EtYnVuZGxlPSR7c3lzY29uZmRpcn0vc3NsL2NlcnRzL2NhLWNlcnRpZmljYXRlcy5jcnQgXAorICAgIC0td2l0aG91dC1saWJtZXRhbGluayBcCisgICAgLS13aXRob3V0LWxpYnBzbCBcCisiCisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKwkjIGNsZWFudXAgYnVpbGRwYXRocyBmcm9tIGN1cmwtY29uZmlnCisJc2VkIC1pIFwKKwkgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAncywtLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICAgICR7RH0ke2JpbmRpcn0vY3VybC1jb25maWcKK30KKworUEFDS0FHRVMgPSsgImxpYiR7QlBOfSIKKworRklMRVNfbGliJHtCUE59ID0gIiR7bGliZGlyfS9saWIqLnNvLioiCitSUkVDT01NRU5EU19saWIke0JQTn0gKz0gImNhLWNlcnRpZmljYXRlcyIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0venNoIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGJfNS4zLjI4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiXzUuMy4yOC5iYgppbmRleCBmYjRiZWZiLi4wOTNlZTQ0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGJfNS4zLjI4LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYl81LjMuMjguYmIKQEAgLTEyLDkgKzEyLDExIEBACiBTVU1NQVJZID0gIkJlcmtlbGV5IERhdGFiYXNlIHY1IgogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcmFjbGUuY29tL3RlY2huZXR3b3JrL2RhdGFiYXNlL2RhdGFiYXNlLXRlY2hub2xvZ2llcy9iZXJrZWxleWRiL292ZXJ2aWV3L2luZGV4Lmh0bWwiCiBMSUNFTlNFID0gIlNsZWVweWNhdCIKLVZJUlRVQUxfTkFNRSA/PSAidmlydHVhbC9kYiIKIFJDT05GTElDVFNfJHtQTn0gPSAiZGIzIgogCitDVkVfUFJPRFVDVCA9ICJvcmFjbGVfYmVya2VsZXlfZGIiCitDVkVfVkVSU0lPTiA9ICIxMS4yLiR7UFZ9IgorCiBQUiA9ICJyMSIKIFBFID0gIjEiCiAKQEAgLTM3LDE1ICszOSw2IEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzCiAKLSMgUHV0IHZpcnR1YWwvZGIgaW4gYW55IGFwcHJvcHJpYXRlIHByb3ZpZGVyIG9mIGEKLSMgcmVsYXRpb25hbCBkYXRhYmFzZSwgdXNlIGl0IGFzIGEgZGVwZW5kZW5jeSBpbgotIyBwbGFjZSBvZiBhIHNwZWNpZmljIGRiIGFuZCB1c2U6Ci0jCi0jIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2RiCi0jCi0jIHRvIHNlbGVjdCB0aGUgY29ycmVjdCBkYiBpbiB0aGUgYnVpbGQgKGRpc3RybykgLmNvbmYKLVBST1ZJREVTICs9ICIke1ZJUlRVQUxfTkFNRX0iCi0KICMgVGhlIGV4ZWN1dGFibGVzIGdvIGluIGEgc2VwYXJhdGUgcGFja2FnZSAtIHR5cGljYWxseSB0aGVyZQogIyBpcyBubyBuZWVkIHRvIGluc3RhbGwgdGhlc2UgdW5sZXNzIGRvaW5nIHJlYWwgZGF0YWJhc2UKICMgbWFuYWdlbWVudCBvbiB0aGUgc3lzdGVtLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RlYmlhbnV0aWxzL2RlYmlhbnV0aWxzXzQuOC4xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTg1N2Q0Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLVNVTU1BUlkgPSAiTWlzY2VsbGFuZW91cyB1dGlsaXRpZXMgc3BlY2lmaWMgdG8gRGViaWFuIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MiAmIFNNQUlMX0dQTCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWYwMWE1MjAzZDUwNTEyZmM0ODMwYjQzMzJiNjk2YTlmIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTcwNDAyVDIxMTczMlovcG9vbC9tYWluL2QvJHtCUE59LyR7QlBOfV8ke1BWfS50YXIueHoiCi0jIHRoZSBwYWNrYWdlIGlzIHRha2VuIGZyb20gc25hcHNob3RzLmRlYmlhbi5vcmc7IHRoYXQgc291cmNlIGlzIHN0YXRpYyBhbmQgZ29lcyBzdGFsZQotIyBzbyB3ZSBjaGVjayB0aGUgbGF0ZXN0IHVwc3RyZWFtIGZyb20gYSBkaXJlY3RvcnkgdGhhdCBkb2VzIGdldCB1cGRhdGVkCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2QvJHtCUE59LyIKLQotU1JDX1VSSVttZDVzdW1dID0gImVlNWZjZWNhYWIwNzFiZDBjOTNlOGEwY2VlNjVkNmM0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA2NDQ2Y2Q0YzBkMzA5ZmQzMWEwNjgyYzVjMmYwN2Y3NjEzZmI4NjdmNzY5NDE0YjljYzUxZjE1NWFkNzMxNzIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lICdzOnRlbXBmaWxlLjEgd2hpY2guMTp3aGljaC4xOmcnICR7U30vTWFrZWZpbGUuYW0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaWYgWyAiJHtiYXNlX2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF07IHRoZW4KLSAgICAgICAgIyBEZWJpYW4gcGxhY2VzIHNvbWUgdXRpbHMgaW50byAke2Jhc2VfYmluZGlyfSBhcyBkb2VzIGJ1c3lib3gKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLSAgICAgICAgZm9yIGFwcCBpbiBydW4tcGFydHMgdGVtcGZpbGU7IGRvCi0gICAgICAgICAgICBtdiAke0R9JHtiaW5kaXJ9LyRhcHAgJHtEfSR7YmFzZV9iaW5kaXJ9LyRhcHAKLSAgICAgICAgZG9uZQotICAgIGZpCi19Ci0KLSMgTm90ZSB0aGF0IHdlIHBhY2thZ2UgdGhlIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgbmFtZS4KLSMKLVBBQ0tBR0VTID0rICIke1BOfS1ydW4tcGFydHMiCi1GSUxFU18ke1BOfS1ydW4tcGFydHMgPSAiJHtiYXNlX2JpbmRpcn0vcnVuLXBhcnRzLmRlYmlhbnV0aWxzIgotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0tcnVuLXBhcnRzIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLQotQUxURVJOQVRJVkVfUFJJT1JJVFk9IjMwIgotQUxURVJOQVRJVkVfJHtQTn0gPSAiYWRkLXNoZWxsIGluc3RhbGxrZXJuZWwgcmVtb3ZlLXNoZWxsIHNhdmVsb2cgdGVtcGZpbGUgd2hpY2giCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZXyR7UE59LXJ1bi1wYXJ0cyA9ICI2MCIKLUFMVEVSTkFUSVZFXyR7UE59LXJ1bi1wYXJ0cyA9ICJydW4tcGFydHMiCi0KLUFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJ3aGljaC4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3doaWNoLjFdID0gIiR7bWFuZGlyfS9tYW4xL3doaWNoLjEiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVthZGQtc2hlbGxdPSIke3NiaW5kaXJ9L2FkZC1zaGVsbCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtpbnN0YWxsa2VybmVsXT0iJHtzYmluZGlyfS9pbnN0YWxsa2VybmVsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3JlbW92ZS1zaGVsbF09IiR7c2JpbmRpcn0vcmVtb3ZlLXNoZWxsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3J1bi1wYXJ0c109IiR7YmFzZV9iaW5kaXJ9L3J1bi1wYXJ0cyIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzYXZlbG9nXT0iJHtiaW5kaXJ9L3NhdmVsb2ciCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbdGVtcGZpbGVdPSIke2Jhc2VfYmluZGlyfS90ZW1wZmlsZSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt3aGljaF09IiR7YmluZGlyfS93aGljaCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzAwZTZmMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjguNC5iYgpAQCAtMCwwICsxLDU3IEBACitTVU1NQVJZID0gIk1pc2NlbGxhbmVvdXMgdXRpbGl0aWVzIHNwZWNpZmljIHRvIERlYmlhbiIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBTTUFJTF9HUEwiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT1mMDFhNTIwM2Q1MDUxMmZjNDgzMGI0MzMyYjY5NmE5ZiIKKworU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE4MDEyOVQxNjQ3MjdaL3Bvb2wvbWFpbi9kLyR7QlBOfS8ke0JQTn1fJHtQVn0udGFyLnh6IgorIyB0aGUgcGFja2FnZSBpcyB0YWtlbiBmcm9tIHNuYXBzaG90cy5kZWJpYW4ub3JnOyB0aGF0IHNvdXJjZSBpcyBzdGF0aWMgYW5kIGdvZXMgc3RhbGUKKyMgc28gd2UgY2hlY2sgdGhlIGxhdGVzdCB1cHN0cmVhbSBmcm9tIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBnZXQgdXBkYXRlZAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9kLyR7QlBOfS8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhNmRjZDQ5NmI0Zjc5YjNjNDUyYzNhNzRjMmQzZjg5YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjMDYxYWI5OWFlYTYxZjg5MjA0M2I3NjI0YjAyMWFiNWIxOTNlOWM2YmJmZDQ3NGRhMGZiY2RkNTA2YmUxZWIyIgorCitTID0gIiR7V09SS0RJUn0vJHtCUE59IgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIHNlZCAtaSAtZSAnczp0ZW1wZmlsZS4xIHdoaWNoLjE6d2hpY2guMTpnJyAke1N9L01ha2VmaWxlLmFtCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGlmIFsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdOyB0aGVuCisgICAgICAgICMgRGViaWFuIHBsYWNlcyBzb21lIHV0aWxzIGludG8gJHtiYXNlX2JpbmRpcn0gYXMgZG9lcyBidXN5Ym94CisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisgICAgICAgIGZvciBhcHAgaW4gcnVuLXBhcnRzIHRlbXBmaWxlOyBkbworICAgICAgICAgICAgbXYgJHtEfSR7YmluZGlyfS8kYXBwICR7RH0ke2Jhc2VfYmluZGlyfS8kYXBwCisgICAgICAgIGRvbmUKKyAgICBmaQorfQorCisjIE5vdGUgdGhhdCB3ZSBwYWNrYWdlIHRoZSB1cGRhdGUtYWx0ZXJuYXRpdmVzIG5hbWUuCisjCitQQUNLQUdFUyA9KyAiJHtQTn0tcnVuLXBhcnRzIgorRklMRVNfJHtQTn0tcnVuLXBhcnRzID0gIiR7YmFzZV9iaW5kaXJ9L3J1bi1wYXJ0cy5kZWJpYW51dGlscyIKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXJ1bi1wYXJ0cyIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZPSIzMCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gImFkZC1zaGVsbCBpbnN0YWxsa2VybmVsIHJlbW92ZS1zaGVsbCBzYXZlbG9nIHRlbXBmaWxlIHdoaWNoIgorCitBTFRFUk5BVElWRV9QUklPUklUWV8ke1BOfS1ydW4tcGFydHMgPSAiNjAiCitBTFRFUk5BVElWRV8ke1BOfS1ydW4tcGFydHMgPSAicnVuLXBhcnRzIgorCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAid2hpY2guMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt3aGljaC4xXSA9ICIke21hbmRpcn0vbWFuMS93aGljaC4xIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbYWRkLXNoZWxsXT0iJHtzYmluZGlyfS9hZGQtc2hlbGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaW5zdGFsbGtlcm5lbF09IiR7c2JpbmRpcn0vaW5zdGFsbGtlcm5lbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtyZW1vdmUtc2hlbGxdPSIke3NiaW5kaXJ9L3JlbW92ZS1zaGVsbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtydW4tcGFydHNdPSIke2Jhc2VfYmluZGlyfS9ydW4tcGFydHMiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc2F2ZWxvZ109IiR7YmluZGlyfS9zYXZlbG9nIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3RlbXBmaWxlXT0iJHtiYXNlX2JpbmRpcn0vdGVtcGZpbGUiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbd2hpY2hdPSIke2JpbmRpcn0vd2hpY2giCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjEzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjEzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmJlMTQ3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2dkYm1fMS4xMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLVNVTU1BUlkgPSAiS2V5L3ZhbHVlIGRhdGFiYXNlIGxpYnJhcnkgd2l0aCBleHRlbnNpYmxlIGhhc2hpbmciCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ2RibS8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjQxZGExYjlmZTQyZTY0MmNiYjJjMjRkNWUwYzRkMjQiCi0KLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dkYm0vZ2RibS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL3B0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4OTI5ZGNkYTJhOGRlM2ZkMjM2N2JkYmY2Njc2OTM3NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZDI1MmNiZDdkNzkzZjdiMTJiY2NlYWRkZGE5OGQyNTdjMTRmNGQxODkwZDg1MWMzODZjMzcyMDcwMDBhMjUzIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gbGliX3BhY2thZ2UgcHRlc3QKLQotIyBOZWVkZWQgZm9yIGRibSBweXRob24gbW9kdWxlCi1FWFRSQV9PRUNPTkYgPSAiLWVuYWJsZS1saWJnZGJtLWNvbXBhdCIKLQotIyBTdG9wIHByZXNlbmNlIG9mIGRibS9uYmRtIG9uIHRoZSBob3N0IGNvbnRhbWluYXRpbmcgYnVpbGRzCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfbGliX25kYm1fbWFpbj1ubyBhY19jdl9saWJfZGJtX21haW49bm8iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgICMgQ3JlYXRlIGEgc3ltbGluayB0byBuZGJtLmggYW5kIGdkYm0uaCBpbiBpbmNsdWRlL2dkYm0gdG8gbGV0IG90aGVyIHBhY2thZ2VzIHRvIGZpbmQKLSAgICAjIHRoZXNlIGhlYWRlcnMKLSAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L2dkYm0KLSAgICBsbiAtc2YgLi4vbmRibS5oICR7RH0vJHtpbmNsdWRlZGlyfS9nZGJtL25kYm0uaAotICAgIGxuIC1zZiAuLi9nZGJtLmggJHtEfS8ke2luY2x1ZGVkaXJ9L2dkYm0vZ2RibS5oCi19Ci0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJkaWZmdXRpbHMiCi0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgb2VfcnVubWFrZSAtQyB0ZXN0cyBidWlsZHRlc3RzCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1jb21wYXQgXAotICAgICAgICAgICAgIgotRklMRVNfJHtQTn0tY29tcGF0ID0gIiR7bGliZGlyfS9saWJnZGJtX2NvbXBhdCR7U09MSUJTfSBcCi0gICAgICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2dkYm1fMS4xNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0ZTU2OTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTQuMS5iYgpAQCAtMCwwICsxLDQzIEBACitTVU1NQVJZID0gIktleS92YWx1ZSBkYXRhYmFzZSBsaWJyYXJ5IHdpdGggZXh0ZW5zaWJsZSBoYXNoaW5nIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dkYm0vIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI0MWRhMWI5ZmU0MmU2NDJjYmIyYzI0ZDVlMGM0ZDI0IgorCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9nZGJtL2dkYm0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzJkZGNiMzg5N2VmYTBmNTc0ODRhZjJiZDRmNGY4NDgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2RjZWZmMDBmZmUwMTQ0OTViZWQzYWVkNzFjNzkxMGFhODhiZjI5Mzc5Zjc5NWFiYzBmNDZkNGVlNWY4YmM1ZiIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIGxpYl9wYWNrYWdlIHB0ZXN0CisKKyMgTmVlZGVkIGZvciBkYm0gcHl0aG9uIG1vZHVsZQorRVhUUkFfT0VDT05GID0gIi1lbmFibGUtbGliZ2RibS1jb21wYXQiCisKKyMgU3RvcCBwcmVzZW5jZSBvZiBkYm0vbmJkbSBvbiB0aGUgaG9zdCBjb250YW1pbmF0aW5nIGJ1aWxkcworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2xpYl9uZGJtX21haW49bm8gYWNfY3ZfbGliX2RibV9tYWluPW5vIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICAjIENyZWF0ZSBhIHN5bWxpbmsgdG8gbmRibS5oIGFuZCBnZGJtLmggaW4gaW5jbHVkZS9nZGJtIHRvIGxldCBvdGhlciBwYWNrYWdlcyB0byBmaW5kCisgICAgIyB0aGVzZSBoZWFkZXJzCisgICAgaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfS9nZGJtCisgICAgbG4gLXNmIC4uL25kYm0uaCAke0R9LyR7aW5jbHVkZWRpcn0vZ2RibS9uZGJtLmgKKyAgICBsbiAtc2YgLi4vZ2RibS5oICR7RH0vJHtpbmNsdWRlZGlyfS9nZGJtL2dkYm0uaAorfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiZGlmZnV0aWxzIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgIG9lX3J1bm1ha2UgLUMgdGVzdHMgYnVpbGR0ZXN0cworfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tY29tcGF0IFwKKyAgICAgICAgICAgICIKK0ZJTEVTXyR7UE59LWNvbXBhdCA9ICIke2xpYmRpcn0vbGliZ2RibV9jb21wYXQke1NPTElCU30gXAorICAgICAgICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvMDAwMS1jb25maXVyZS5hYy1CZWxpZXZlLXRoZS1jZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yLzAwMDEtY29uZml1cmUuYWMtQmVsaWV2ZS10aGUtY2ZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2gKaW5kZXggNjY1MzY3Ni4uMWU0NzkyNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvMDAwMS1jb25maXVyZS5hYy1CZWxpZXZlLXRoZS1jZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi8wMDAxLWNvbmZpdXJlLmFjLUJlbGlldmUtdGhlLWNmbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoCkBAIC0xOCwxMyArMTgsMTMgQEAKICBjb25maWd1cmUuYWMgfCAxMSAtLS0tLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAxMSBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggODU3ZWEzYi4uMzU5ZTkxOSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNjA3LDE1ICs2MDcsNiBAQCBjYXNlICRob3N0IGluCi0gICAgIEdNUF9JTkNMVURFX01QTihhcm0vYXJtLWRlZnMubTQpCi0gICAgIENBTExJTkdfQ09OVkVOVElPTlNfT0JKUz0nYXJtMzJjYWxsLmxvIGFybTMyY2hlY2subG8nCitJbmRleDogZ21wLTYuMS4yL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdtcC02LjEuMi5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGdtcC02LjEuMi9jb25maWd1cmUuYWMKK0BAIC02MDQsMTUgKzYwNCw2IEBAIGNhc2UgJGhvc3QgaW4KKyAgICAgYW55XzMyX3Rlc3RsaXN0PSJzaXplb2YtbG9uZy00IgorICAgICBhbnlfNjRfdGVzdGxpc3Q9InNpemVvZi1sb25nLTgiCiAgCiAtICAgICMgVGhpcyBpcyBuZWVkZWQgZm9yIGNsYW5nLCB3aGljaCBpcyBub3QgY29udGVudCB3aXRoIGZsYWdzIGxpa2UgLW1mcHU9bmVvbgogLSAgICAjIGFsb25lLgpAQCAtMzgsNyArMzgsNyBAQAogICAgICAjIEZJWE1FOiBXZSBtYWtlIG1hbmRhdG9yeSBjb21waWxlciBvcHRpb25zIG9wdGlvbmFsIGhlcmUuICBXZSBzaG91bGQKICAgICAgIyBlaXRoZXIgZW5mb3JjZSB0aGVtLCBvciBvcmdhbmlzZSB0byBzdHJpcCBwYXRocyBhcyB0aGUgY29ycmVzcG9uZGluZwogICAgICAjIG9wdGlvbnMgZmFpbC4KLUBAIC02ODYsOCArNjc3LDYgQEAgY2FzZSAkaG9zdCBpbgorQEAgLTc0Niw4ICs3MzcsNiBAQCBjYXNlICRob3N0IGluCiAgCTs7CiAgICAgICAgKikKICAJcGF0aD0iYXJtIgpAQCAtNDcsNiArNDcsMyBAQAogIAk7OwogICAgICBlc2FjCiAgICAgIDs7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yL2FtZDY0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvYW1kNjQucGF0Y2gKaW5kZXggNTY0ZDEyZC4uMzkzNTU4OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvYW1kNjQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvYW1kNjQucGF0Y2gKQEAgLTEsMTAgKzEsMTAgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCi1JbmRleDogZ21wLTUuMC4zL2xvbmdsb25nLmgKK0luZGV4OiBnbXAtNi4xLjIvbG9uZ2xvbmcuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdtcC01LjAuMy5vcmlnL2xvbmdsb25nLmgKLSsrKyBnbXAtNS4wLjMvbG9uZ2xvbmcuaAotQEAgLTk5NCw4ICs5OTQsMTAgQEAgZXh0ZXJuIFVXdHlwZSBfX01QTih1ZGl2X3Fybm5kKSBfUFJPVE8gKAorLS0tIGdtcC02LjEuMi5vcmlnL2xvbmdsb25nLmgKKysrKyBnbXAtNi4xLjIvbG9uZ2xvbmcuaAorQEAgLTEwMzYsOCArMTAzNiwxMCBAQCBleHRlcm4gVVd0eXBlIF9fTVBOKHVkaXZfcXJubmQpIChVV3R5cGUKICAgICBjb3VudCBpcyBvbmx5IGFuIGludC4gKi8KICAjZGVmaW5lIGNvdW50X3RyYWlsaW5nX3plcm9zKGNvdW50LCB4KQkJCQkJXAogICAgZG8gewkJCQkJCQkJCVwKQEAgLTE0LDUgKzE0LDUgQEAKICsgICAgX19hc21fXyAoImJzZnEgJTEsJTAiIDogIj1yIiAoX19jYnRtcCkgOiAicm0iICgoVURJdHlwZSkoeCkpKTsJXAogKyAgICAoY291bnQpID0gX19jYnRtcDsJCQkJCQkJXAogICAgfSB3aGlsZSAoMCkKLSAjZW5kaWYgLyogeDg2XzY0ICovCisgI2VuZGlmIC8qIF9fYW1kNjRfXyAqLwogIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvdXNlLWluY2x1ZGVkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi91c2UtaW5jbHVkZWRpci5wYXRjaAppbmRleCA3NDkwNGEyLi42YjA4OWNmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi91c2UtaW5jbHVkZWRpci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi91c2UtaW5jbHVkZWRpci5wYXRjaApAQCAtMSwxNSArMSwxNSBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLUluZGV4OiBnbXAtNC4yLjQvTWFrZWZpbGUuYW0KK0luZGV4OiBnbXAtNi4xLjIvTWFrZWZpbGUuYW0KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnbXAtNC4yLjQub3JpZy9NYWtlZmlsZS5hbQkyMDA4LTA5LTEwIDE5OjMxOjI3LjAwMDAwMDAwMCArMDAwMAotKysrIGdtcC00LjIuNC9NYWtlZmlsZS5hbQkyMDA5LTA3LTA2IDIwOjE5OjE5LjAwMDAwMDAwMCArMDAwMAotQEAgLTEwNiw3ICsxMDYsNyBAQAotICMgYnV0IGFueW9uZSBrbm93bGVkZ2FibGUgZW5vdWdoIHRvIGJlIHBsYXlpbmcgd2l0aCBleGVjX3ByZWZpeCB3aWxsIGJlIGFibGUKKy0tLSBnbXAtNi4xLjIub3JpZy9NYWtlZmlsZS5hbQorKysrIGdtcC02LjEuMi9NYWtlZmlsZS5hbQorQEAgLTEzMCw3ICsxMzAsNyBAQCBFWFRSQV9ESVNUICs9IGdtcHh4LmgKKyAjIGJ1dCBhbnlvbmUga25vd2xlZGdlYWJsZSBlbm91Z2ggdG8gYmUgcGxheWluZyB3aXRoIGV4ZWNfcHJlZml4IHdpbGwgYmUgYWJsZQogICMgdG8gYWRkcmVzcyB0aGF0LgogICMKIC1pbmNsdWRlZXhlY2RpciA9ICQoZXhlY19wcmVmaXgpL2luY2x1ZGUKICtpbmNsdWRlZXhlY2RpciA9ICQoaW5jbHVkZWRpcikKICBpbmNsdWRlX0hFQURFUlMgPSAkKEdNUFhYX0hFQURFUlNfT1BUSU9OKQotIG5vZGlzdF9pbmNsdWRlZXhlY19IRUFERVJTID0gZ21wLmggJChNUEJTRF9IRUFERVJTX09QVElPTikKLSBsaWJfTFRMSUJSQVJJRVMgPSBsaWJnbXAubGEgJChHTVBYWF9MVExJQlJBUklFU19PUFRJT04pICQoTVBCU0RfTFRMSUJSQVJJRVNfT1BUSU9OKQorIG5vZGlzdF9pbmNsdWRlZXhlY19IRUFERVJTID0gZ21wLmgKKyBsaWJfTFRMSUJSQVJJRVMgPSBsaWJnbXAubGEgJChHTVBYWF9MVExJQlJBUklFU19PUFRJT04pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvMDAwMS1jb25maWd1cmUuYWMtdXNlLWEtY3VzdG9tLXZhbHVlLWZvci10aGUtbG9jYXRpb24tb2YtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDEtY29uZmlndXJlLmFjLXVzZS1hLWN1c3RvbS12YWx1ZS1mb3ItdGhlLWxvY2F0aW9uLW9mLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTNhNjRkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDEtY29uZmlndXJlLmFjLXVzZS1hLWN1c3RvbS12YWx1ZS1mb3ItdGhlLWxvY2F0aW9uLW9mLS5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDBiOTcxNDhjM2FhZDA5OTNhOWFlYjA4ODU5NmZhNjNhMmZlYzUzMjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMjIgSmFuIDIwMTggMTg6MDA6MjEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiB1c2UgYSBjdXN0b20gdmFsdWUgZm9yIHRoZSBsb2NhdGlvbiBvZgorIGdwZy1hZ2VudCBzb2NrZXQgaW4gdGhlIGZpbGVzeXN0ZW0KKworVGhpcyBzaG91bGQgYXZvaWQgY2xhc2hlcyB3aXRoIHRoZSBob3N0IGdwZy1hZ2VudCBvYnNlcnZlZCBvbiBhdXRvYnVpbGRlcnMuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpYywgYW5kIG9ubHkgZm9yIC1uYXRpdmVdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMzgyZWYxZC4uMDU3MGQ3YyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTgxOCw3ICsxODE4LDcgQEAgQUNfREVGSU5FX1VOUVVPVEVEKEdQR0NPTkZfRElTUF9OQU1FLCAiR1BHQ29uZiIsCisgCisgQUNfREVGSU5FX1VOUVVPVEVEKEdQR1RBUl9OQU1FLCAiZ3BndGFyIiwgW1RoZSBuYW1lIG9mIHRoZSBncGd0YXIgdG9vbF0pCisgCistQUNfREVGSU5FX1VOUVVPVEVEKEdQR19BR0VOVF9TT0NLX05BTUUsICJTLmdwZy1hZ2VudCIsCisrQUNfREVGSU5FX1VOUVVPVEVEKEdQR19BR0VOVF9TT0NLX05BTUUsICJTLmdwZy1hZ2VudC55b2N0by1uYXRpdmUiLAorICAgICAgICAgICAgICAgICAgICBbVGhlIG5hbWUgb2YgdGhlIGFnZW50IHNvY2tldF0pCisgQUNfREVGSU5FX1VOUVVPVEVEKEdQR19BR0VOVF9FWFRSQV9TT0NLX05BTUUsICJTLmdwZy1hZ2VudC5leHRyYSIsCisgICAgICAgICAgICAgICAgICAgIFtUaGUgbmFtZSBvZiB0aGUgYWdlbnQgc29ja2V0IGZvciByZW1vdGUgYWNjZXNzXSkKKy0tIAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18yLjIuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18yLjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE3NmRkZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4yLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1TVU1NQVJZID0gIkdOVSBQcml2YWN5IEd1YXJkIC0gZW5jcnlwdGlvbiBhbmQgc2lnbmluZyB0b29scyAoMi54KSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnLyIKLUxJQ0VOU0UgPSAiR1BMdjMgJiBMR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xODlhZjhhZmNhNmQ2MDc1YmE2YzllMGFhODA3NzYyNiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEwzO21kNT1hMmI2YmYyY2IzOGVlNTI2MTllNjBmMzBhMWZjNzI1NyIKLQotREVQRU5EUyA9ICJucHRoIGxpYmFzc3VhbiBsaWJrc2JhIHpsaWIgYnppcDIgcmVhZGxpbmUgbGliZ2NyeXB0IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gcGtnY29uZmlnCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgotU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXBrZy1jb25maWctdG8tZmluZC1wdGgtaW5zdGVhZC1vZi1wdGgtY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItdXNlLXBrZ2NvbmZpZy1pbnN0ZWFkLW9mLW5wdGgtY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtZGlybW5nci11c2VzLWxpYmdwZy1lcnJvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWF1dG9nZW4uc2gtZml4LWZpbmQtdmVyc2lvbi1mb3ItYmV0YS1jaGVja2luZy5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzg5ZjE2OTQ5ZmFlMmQwMDNkMzg3ZjQ5ZTlkYTRiNzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDQ1MTRhMGJlMGY3YTFmZjI2MzE5MzMzMDAxOWViNGI1M2M4MmYwZjVlMjMwYWYzYzE0ZGYzNzEyNzFhNDVlNiIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1sZGFwIFwKLQkJLS1kaXNhYmxlLWNjaWQtZHJpdmVyIFwKLQkJLS13aXRoLXpsaWI9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotCQktLXdpdGgtYnppcDI9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotCQktLXdpdGgtcmVhZGxpbmU9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotCQktLWVuYWJsZS1ncGctaXMtZ3BnMiBcCi0gICAgICAgICAgICAgICAiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJwaW5lbnRyeSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcm5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKLQlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAotCXJtIC1mICR7U30vbTQvbGliYXNzdWFuLm00Ci0Jcm0gLWYgJHtTfS9tNC9rc2JhLm00Ci0Jcm0gLWYgJHtTfS9tNC9saWJnY3J5cHQubTQKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JbG4gLXNmIGdwZzIgJHtEfSR7YmluZGlyfS9ncGcKLQlsbiAtc2YgZ3BndjIgJHtEfSR7YmluZGlyfS9ncGd2Ci19Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICJnbnV0bHMiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS1lbmFibGUtZ251dGxzLCAtLWRpc2FibGUtZ251dGxzLCBnbnV0bHMiCi1QQUNLQUdFQ09ORklHW3NxbGl0ZTNdID0gIi0tZW5hYmxlLXNxbGl0ZSwgLS1kaXNhYmxlLXNxbGl0ZSwgc3FsaXRlMyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18yLjIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18yLjIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2YxYThmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMi40LmJiCkBAIC0wLDAgKzEsNTAgQEAKK1NVTU1BUlkgPSAiR05VIFByaXZhY3kgR3VhcmQgLSBlbmNyeXB0aW9uIGFuZCBzaWduaW5nIHRvb2xzICgyLngpIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvIgorTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE4OWFmOGFmY2E2ZDYwNzViYTZjOWUwYWE4MDc3NjI2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTDM7bWQ1PWEyYjZiZjJjYjM4ZWU1MjYxOWU2MGYzMGExZmM3MjU3IgorCitERVBFTkRTID0gIm5wdGggbGliYXNzdWFuIGxpYmtzYmEgemxpYiBiemlwMiByZWFkbGluZSBsaWJnY3J5cHQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBwa2djb25maWcKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtcGtnLWNvbmZpZy10by1maW5kLXB0aC1pbnN0ZWFkLW9mLXB0aC1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi11c2UtcGtnY29uZmlnLWluc3RlYWQtb2YtbnB0aC1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1kaXJtbmdyLXVzZXMtbGliZ3BnLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtYXV0b2dlbi5zaC1maXgtZmluZC12ZXJzaW9uLWZvci1iZXRhLWNoZWNraW5nLnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy11c2UtYS1jdXN0b20tdmFsdWUtZm9yLXRoZS1sb2NhdGlvbi1vZi0ucGF0Y2giCisKKworU1JDX1VSSVttZDVzdW1dID0gIjcwOWU1YWY1YmJhODRkMjUxYzUyMDIyMmU3MjA5NzJmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQwMWEzZTY0NzgwZmRmYTZkNzY3MGRlMDg4MGFhNWM5ZDU4OWIzZGI3YTcwOTg5NzlkNzYwNmNlYzU0NmYyZWMiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtbGRhcCBcCisJCS0tZGlzYWJsZS1jY2lkLWRyaXZlciBcCisJCS0td2l0aC16bGliPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKwkJLS13aXRoLWJ6aXAyPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKwkJLS13aXRoLXJlYWRsaW5lPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKwkJLS1lbmFibGUtZ3BnLWlzLWdwZzIgXAorICAgICAgICAgICAgICAgIgorUlJFQ09NTUVORFNfJHtQTn0gPSAicGluZW50cnkiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIEVsc2UgdGhlc2UgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJuY2UgdG8gdGhvc2UgaW4gYWNsb2NhbC1jb3B5CisJcm0gLWYgJHtTfS9tNC9ncGctZXJyb3IubTQKKwlybSAtZiAke1N9L200L2xpYmFzc3Vhbi5tNAorCXJtIC1mICR7U30vbTQva3NiYS5tNAorCXJtIC1mICR7U30vbTQvbGliZ2NyeXB0Lm00Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWxuIC1zZiBncGcyICR7RH0ke2JpbmRpcn0vZ3BnCisJbG4gLXNmIGdwZ3YyICR7RH0ke2JpbmRpcn0vZ3BndgorfQorCitQQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0tZW5hYmxlLWdudXRscywgLS1kaXNhYmxlLWdudXRscywgZ251dGxzIgorUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLWVuYWJsZS1zcWxpdGUsIC0tZGlzYWJsZS1zcWxpdGUsIHNxbGl0ZTMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMuaW5jCmluZGV4IDI5YjVkZDYuLjdiY2I5MTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy5pbmMKQEAgLTIxLDcgKzIxLDcgQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWcgcGtnY29uZmlnIGdldHRleHQgbGliX3BhY2thZ2UgZ3RrLWRvYwogCi1QQUNLQUdFQ09ORklHID8/PSAibGliaWRuIHpsaWIiCitQQUNLQUdFQ09ORklHID8/PSAibGliaWRuIgogCiAjIFlvdSBtdXN0IGFsc28gaGF2ZSBDT05GSUdfU0VDQ09NUCBlbmFibGVkIGluIHRoZSBrZXJuZWwgZm9yCiAjIHNlY2NvbXAgdG8gd29yay4KQEAgLTMyLDcgKzMyLDYgQEAKIFBBQ0tBR0VDT05GSUdbbGlidGFzbjFdID0gIi0td2l0aC1pbmNsdWRlZC1saWJ0YXNuMT1ubywtLXdpdGgtaW5jbHVkZWQtbGlidGFzbjEsbGlidGFzbjEiCiBQQUNLQUdFQ09ORklHW3AxMS1raXRdID0gIi0td2l0aC1wMTEta2l0LC0td2l0aG91dC1wMTEta2l0LHAxMS1raXQiCiBQQUNLQUdFQ09ORklHW3RwbV0gPSAiLS13aXRoLXRwbSwtLXdpdGhvdXQtdHBtLHRyb3VzZXJzIgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliIgogCiBFWFRSQV9PRUNPTkYgPSAiIFwKICAgICAtLWVuYWJsZS1kb2MgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvMDAwMS1jb25maWd1cmUuYWMtZml4LXNlZC1jb21tYW5kLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvMDAwMS1jb25maWd1cmUuYWMtZml4LXNlZC1jb21tYW5kLnBhdGNoCmluZGV4IGYwYjdjYTIuLmI2ZTdiYzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzLzAwMDEtY29uZmlndXJlLmFjLWZpeC1zZWQtY29tbWFuZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtc2VkLWNvbW1hbmQucGF0Y2gKQEAgLTE0LDE5ICsxNCwxNiBAQAogIGNvbmZpZ3VyZS5hYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNjkwN2IyMS4uN2M3MGQ5ZSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtOTQ4LDcgKzk0OCw3IEBAIFlFQVI9YGRhdGUgKyVZYAorSW5kZXg6IGdudXRscy0zLjUuMTYvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ251dGxzLTMuNS4xNi5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGdudXRscy0zLjUuMTYvY29uZmlndXJlLmFjCitAQCAtOTU1LDcgKzk1NSw3IEBAIFlFQVI9YGRhdGUgKyVZYAogIEFDX1NVQlNUKFtZRUFSXSwgJFlFQVIpCiAgCiAgZm9yIGkgaW4gJHtzcmNkaXJ9L3NyYy8qLWFyZ3MuYy5iYWsgJHtzcmNkaXJ9L3NyYy8qLWFyZ3MuaC5iYWs7IGRvCiAtCW5hbT0kKGJhc2VuYW1lICRpfHNlZCAncy8uYmFrLy9nJykKICsJbmFtPSQoYmFzZW5hbWUgJGl8c2VkICdzL1wuYmFrJC8vJykKICAJaWYgdGVzdCAiJGNyZWF0ZV9saWJvcHRzX2xpbmtzIiA9ICJ5ZXMiO3RoZW4KKyAJCXJtIC1mICJzcmMvJG5hbS5zdGFtcCIKICAJCXJtIC1mICJzcmMvJG5hbSIKLSAJCUFDX0NPTkZJR19MSU5LUyhbc3JjLyRuYW06JGldKQotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvdXNlLXBrZy1jb25maWctdG8tbG9jYXRlLXpsaWIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy91c2UtcGtnLWNvbmZpZy10by1sb2NhdGUtemxpYi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWUxNDFhNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy91c2UtcGtnLWNvbmZpZy10by1sb2NhdGUtemxpYi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLUZyb20gMTgwODEwNjhhOTdjMDAwMTVhYWJjNWZhMzIxNjY0OTUxNDU4ZWEwZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZhbiBYaW4gPGZhbi54aW5AanAuZnVqaXRzdS5jb20+Ci1EYXRlOiBGcmksIDkgSnVuIDIwMTcgMTU6MjA6MzEgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gRnJvbSBjZWU4MGFmMWZlOTNmNWI3Njc2NWFmZWViZmNjM2I5MDI3NjhmNWQ2IE1vbiBTZXAgMTcKLSAwMDowMDowMCAyMDAxIEZyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+IERhdGU6IFR1ZSwgMjYgTWF5Ci0gMjAxNSAyMTo0MToyNCAtMDcwMCBTdWJqZWN0OiBbUEFUQ0hdIHVzZSBwa2ctY29uZmlnIHRvIGxvY2F0ZSB6bGliCi0KLUFDX0xJQl9IQVZFX0xJTktGTEFHUyBjYW4gc29tZXRpbWVzIGZpbmQgaG9zdCBsaWJzIGFuZCBpcyB0aGVyZWZvcmUgbm90Ci1yb2J1c3Qgd2hlbiBjcm9zcy1jb21waWxpbmcuIFJlbW92ZSBpdCBmb3IgemxpYiBhbmQgdXNlIFBLR19DSEVDS19NT0RVTEVTCi1pbnN0ZWFkLgotCi1SZW1vdmluZyBBQ19MSUJfSEFWRV9MSU5LRkxBR1MgZm9yIHpsaWIgYWxzbyByZW1vdmVzIHRoZSAtLXdpdGgtbGliei1wcmVmaXgKLWNvbmZpZ3VyZSBvcHRpb24uIElmIHpsaWIgc3VwcG9ydCBpcyBlbmFibGVkLCB0aGVuIGZhaWx1cmUgdG8gZmluZCB6bGliIHZpYQotcGtnLWNvbmZpZyBpcyBub3cgdHJlYXRlZCBhcyBhIGZhdGFsIGVycm9yLgotCi1DaGFuZ2UgYmFzZWQgb24gQ2hyb21lT1MgZ251dGxzIDIuMTIuMjMgY3Jvc3MtY29tcGlsZSBmaXhlcyBwYXRjaDoKLQotICBodHRwczovL2Nocm9taXVtLXJldmlldy5nb29nbGVzb3VyY2UuY29tLyMvYy8yNzE2NjEvCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLQotUmViYXNlIG9uIGdudXRscyAzLjUuMTMKLQotU2lnbmVkLW9mZi1ieTogRmFuIFhpbiA8ZmFuLnhpbkBqcC5mdWppdHN1LmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDI1ICsrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYzY1MjY4ZS4uZjZhMThhYSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNzM1LDI4ICs3MzUsMjEgQEAgQUNfQVJHX1dJVEgoemxpYiwgQVNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC16bGliXSwKLSBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gaW5jbHVkZSB6bGliIGNvbXByZXNzaW9uIHN1cHBvcnRdKQotIGlmIHRlc3QgeCRhY196bGliICE9IHhubzsgdGhlbgotICBBQ19NU0dfUkVTVUxUKHllcykKLS0gQUNfTElCX0hBVkVfTElOS0ZMQUdTKHosLCBbI2luY2x1ZGUgPHpsaWIuaD5dLCBbY29tcHJlc3MgKDAsIDAsIDAsIDApO10pCi0tIGlmIHRlc3QgeCRhY19jdl9saWJ6ICE9IHh5ZXM7IHRoZW4KLS0gICBBQ19NU0dfV0FSTigKLS0qKiogCi0tKioqIFpMSUIgd2FzIG5vdCBmb3VuZC4gWW91IHdpbGwgbm90IGJlIGFibGUgdG8gdXNlIFpMSUIgY29tcHJlc3Npb24uKQotLSBmaQotIGVsc2UKLSAgQUNfTVNHX1JFU1VMVChubykKLSBmaQotIAotLVBLR19DSEVDS19FWElTVFMoemxpYiwgWkxJQl9IQVNfUEtHQ09ORklHPXksIFpMSUJfSEFTX1BLR0NPTkZJRz1uKQotLQotIGlmIHRlc3QgeCRhY196bGliICE9IHhubzsgdGhlbgotLSAgaWYgdGVzdCAiJFpMSUJfSEFTX1BLR0NPTkZJRyIgPSAieSIgOyB0aGVuCi0tICAgIGlmIHRlc3QgIngkR05VVExTX1JFUVVJUkVTX1BSSVZBVEUiID0geDsgdGhlbgotLSAgICAgIEdOVVRMU19SRVFVSVJFU19QUklWQVRFPSJSZXF1aXJlcy5wcml2YXRlOiB6bGliIgotLSAgICBlbHNlCi0tICAgICAgR05VVExTX1JFUVVJUkVTX1BSSVZBVEU9IiRHTlVUTFNfUkVRVUlSRVNfUFJJVkFURSwgemxpYiIKLS0gICAgZmkKLS0gICAgTElCWl9QQz0iIgotKyAgUEtHX0NIRUNLX01PRFVMRVMoWkxJQiwgemxpYikKLSsgIEhBVkVfTElCWj15ZXMKLSsgIEFDX0RFRklORShbSEFWRV9MSUJaXSwgWzFdLCBbemxpYiBpcyBlbmFibGVkXSkKLSsgIEFDX1NVQlNUKEhBVkVfTElCWikKLSsgIExUTElCWj0kWkxJQl9MSUJTCi0rICBBQ19TVUJTVChMVExJQlopCi0rICBpZiB0ZXN0ICJ4JEdOVVRMU19SRVFVSVJFU19QUklWQVRFIiA9IHg7IHRoZW4KLSsgICAgR05VVExTX1JFUVVJUkVTX1BSSVZBVEU9IlJlcXVpcmVzLnByaXZhdGU6IHpsaWIiCi0gICBlbHNlCi0tICAgIExJQlpfUEM9JExJQloKLSsgICAgR05VVExTX1JFUVVJUkVTX1BSSVZBVEU9IiRHTlVUTFNfUkVRVUlSRVNfUFJJVkFURSwgemxpYiIKLSAgIGZpCi0gZmkKLSBBQ19TVUJTVChMSUJaX1BDKQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjUuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjUuMTMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1ZDdkMDkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHNfMy41LjEzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSBnbnV0bHMuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtc2VkLWNvbW1hbmQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3VzZS1wa2ctY29uZmlnLXRvLWxvY2F0ZS16bGliLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9hcm1fZWFiaS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZmQ0MWFkODY1NzI5MzNjMjM3OWI0Y2MzMjFhMDk1OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3OWY1NDgwYWQxOThkYWQ1YmM3OGUwNzVmNGE0MGM0YTMxNWExYjIwNzI2NjY5MTlkMmQwNWEwOGFlYzEzMDk2IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjYuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2MjRhMjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjYuMS5iYgpAQCAtMCwwICsxLDkgQEAKK3JlcXVpcmUgZ251dGxzLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtZml4LXNlZC1jb21tYW5kLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9hcm1fZWFiaS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0YjY1YWUzZmZlZjU5ZjNlZWVkNTFhNjE2NmZmMTJiMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMGIxMGQyYzk5OTRiYzAzMjgyNDMxNDcxNGQwZTg0YzBmMTliZGIzZDcxNWQ4ZWQ1NWJlYjczNjRhOGViYWVkIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xL0NWRS0yMDE3LTEwNzkwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMS9DVkUtMjAxNy0xMDc5MC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU4NDM4MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xL0NWRS0yMDE3LTEwNzkwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotRnJvbSBkOGQ4MDVlMWYyZTY3OTliYjJkZmY0ODcxYTg1OThkYzgzMDg4YTM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmlrb3MgTWF2cm9naWFubm9wb3Vsb3MgPG5tYXZAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgMjIgSnVuIDIwMTcgMTY6MzE6MzcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gX2FzbjFfY2hlY2tfaWRlbnRpZmllcjogc2FmZXIgYWNjZXNzIHRvIHZhbHVlcyByZWFkCi0KLVNpZ25lZC1vZmYtYnk6IE5pa29zIE1hdnJvZ2lhbm5vcG91bG9zIDxubWF2QHJlZGhhdC5jb20+Ci0KLWh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9bGlidGFzbjEuZ2l0O2E9Y29tbWl0O2g9ZDhkODA1ZTFmMmU2Nzk5YmIyZGZmNDg3MWE4NTk4ZGM4MzA4OGEzOQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1DVkU6IENWRS0yMDE3LTEwNzkwCi0KLVNpZ25lZC1vZmYtYnk6IFl1ZSBUYW8gPFl1ZS5UYW9Ad2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliL3BhcnNlcl9hdXguYyB8ICAgMTcgKysrKysrKysrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYi9wYXJzZXJfYXV4LmMgYi9saWIvcGFyc2VyX2F1eC5jCi1pbmRleCA5NzZhYjM4Li43ODZlYTY0IDEwMDY0NAotLS0tIGEvbGliL3BhcnNlcl9hdXguYwotKysrIGIvbGliL3BhcnNlcl9hdXguYwotQEAgLTk1NSw3ICs5NTUsNyBAQCBfYXNuMV9jaGVja19pZGVudGlmaWVyIChhc24xX25vZGUgbm9kZSkKLSAJICBpZiAocDIgPT0gTlVMTCkKLSAJICAgIHsKLSAJICAgICAgaWYgKHAtPnZhbHVlKQotLQkJX2FzbjFfc3RyY3B5IChfYXNuMV9pZGVudGlmaWVyTWlzc2luZywgcC0+dmFsdWUpOwotKwkJX2FzbjFfc3RyX2NweSAoX2FzbjFfaWRlbnRpZmllck1pc3NpbmcsIHNpemVvZihfYXNuMV9pZGVudGlmaWVyTWlzc2luZyksIChjaGFyKilwLT52YWx1ZSk7Ci0gCSAgICAgIGVsc2UKLSAJCV9hc24xX3N0cmNweSAoX2FzbjFfaWRlbnRpZmllck1pc3NpbmcsICIobnVsbCkiKTsKLSAJICAgICAgcmV0dXJuIEFTTjFfSURFTlRJRklFUl9OT1RfRk9VTkQ7Ci1AQCAtOTY4LDkgKzk2OCwxNSBAQCBfYXNuMV9jaGVja19pZGVudGlmaWVyIChhc24xX25vZGUgbm9kZSkKLSAJICBpZiAocDIgJiYgKHR5cGVfZmllbGQgKHAyLT50eXBlKSA9PSBBU04xX0VUWVBFX0RFRkFVTFQpKQotIAkgICAgewotIAkgICAgICBfYXNuMV9zdHJfY3B5IChuYW1lMiwgc2l6ZW9mIChuYW1lMiksIG5vZGUtPm5hbWUpOwotLQkgICAgICBfYXNuMV9zdHJfY2F0IChuYW1lMiwgc2l6ZW9mIChuYW1lMiksICIuIik7Ci0tCSAgICAgIF9hc24xX3N0cl9jYXQgKG5hbWUyLCBzaXplb2YgKG5hbWUyKSwgKGNoYXIgKikgcDItPnZhbHVlKTsKLS0JICAgICAgX2FzbjFfc3RyY3B5IChfYXNuMV9pZGVudGlmaWVyTWlzc2luZywgcDItPnZhbHVlKTsKLSsJICAgICAgaWYgKHAyLT52YWx1ZSkKLSsJICAgICAgICB7Ci0rCSAgICAgICAgICBfYXNuMV9zdHJfY2F0IChuYW1lMiwgc2l6ZW9mIChuYW1lMiksICIuIik7Ci0rCSAgICAgICAgICBfYXNuMV9zdHJfY2F0IChuYW1lMiwgc2l6ZW9mIChuYW1lMiksIChjaGFyICopIHAyLT52YWx1ZSk7Ci0rCSAgICAgICAgICBfYXNuMV9zdHJfY3B5IChfYXNuMV9pZGVudGlmaWVyTWlzc2luZywgc2l6ZW9mKF9hc24xX2lkZW50aWZpZXJNaXNzaW5nKSwgKGNoYXIqKXAyLT52YWx1ZSk7Ci0rCSAgICAgICAgfQotKwkgICAgICBlbHNlCi0rCQlfYXNuMV9zdHJjcHkgKF9hc24xX2lkZW50aWZpZXJNaXNzaW5nLCAiKG51bGwpIik7Ci0rCi0gCSAgICAgIHAyID0gYXNuMV9maW5kX25vZGUgKG5vZGUsIG5hbWUyKTsKLSAJICAgICAgaWYgKCFwMiB8fCAodHlwZV9maWVsZCAocDItPnR5cGUpICE9IEFTTjFfRVRZUEVfT0JKRUNUX0lEKSB8fAotIAkJICAhKHAyLT50eXBlICYgQ09OU1RfQVNTSUdOKSkKLUBAIC05OTAsNyArOTk2LDggQEAgX2FzbjFfY2hlY2tfaWRlbnRpZmllciAoYXNuMV9ub2RlIG5vZGUpCi0gCQkgIF9hc24xX3N0cl9jcHkgKG5hbWUyLCBzaXplb2YgKG5hbWUyKSwgbm9kZS0+bmFtZSk7Ci0gCQkgIF9hc24xX3N0cl9jYXQgKG5hbWUyLCBzaXplb2YgKG5hbWUyKSwgIi4iKTsKLSAJCSAgX2FzbjFfc3RyX2NhdCAobmFtZTIsIHNpemVvZiAobmFtZTIpLCAoY2hhciAqKSBwMi0+dmFsdWUpOwotLQkJICBfYXNuMV9zdHJjcHkgKF9hc24xX2lkZW50aWZpZXJNaXNzaW5nLCBwMi0+dmFsdWUpOwotKwkJICBfYXNuMV9zdHJfY3B5IChfYXNuMV9pZGVudGlmaWVyTWlzc2luZywgc2l6ZW9mKF9hc24xX2lkZW50aWZpZXJNaXNzaW5nKSwgKGNoYXIqKXAyLT52YWx1ZSk7Ci0rCi0gCQkgIHAyID0gYXNuMV9maW5kX25vZGUgKG5vZGUsIG5hbWUyKTsKLSAJCSAgaWYgKCFwMiB8fCAodHlwZV9maWVsZCAocDItPnR5cGUpICE9IEFTTjFfRVRZUEVfT0JKRUNUX0lEKQotIAkJICAgICAgfHwgIShwMi0+dHlwZSAmIENPTlNUX0FTU0lHTikpCi0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMV80LjEyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMV80LjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTc1NzFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjFfNC4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBmb3IgQVNOLjEgYW5kIERFUiBtYW5pcHVsYXRpb24iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGlidGFzbjEvIgotCi1MSUNFTlNFID0gIkdQTHYzKyAmIExHUEx2Mi4xKyIKLUxJQ0VOU0VfJHtQTn0tYmluID0gIkdQTHYzKyIKLUxJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL1JFQURNRTtlbmRsaW5lPTg7bWQ1PWMzODAzYTNlOGNhNWFiNWViMWU1OTEyZmFhNDA1MzUxIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGlidGFzbjEvbGlidGFzbjEtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc3RkaW50Lm00LXJlaW50cm9kdWNlLUdOVUxJQl9PVkVSUklERVNfV0lOVF9ULWNoZWNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwNzkwLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1ERVBFTkRTID0gImJpc29uLW5hdGl2ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjVjNzI0YmQxZjczYWFmNGEzMTE4MzNlMWNkMjk3YjIxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY3NTNkYTJlNjIxMjU3ZjMzZjViMDUxY2MxMTRkNDE3ZTUyMDZhMDgxOGZlMGIxZWNmZDYxNTNmNzA5MzQ3NTMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnIGxpYl9wYWNrYWdlIGd0ay1kb2MKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQyMjM4NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjFfNC4xMy5iYgpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZID0gIkxpYnJhcnkgZm9yIEFTTi4xIGFuZCBERVIgbWFuaXB1bGF0aW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYnRhc24xLyIKKworTElDRU5TRSA9ICJHUEx2MysgJiBMR1BMdjIuMSsiCitMSUNFTlNFXyR7UE59LWJpbiA9ICJHUEx2MysiCitMSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9SRUFETUU7ZW5kbGluZT04O21kNT1jMzgwM2EzZThjYTVhYjVlYjFlNTkxMmZhYTQwNTM1MSIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2xpYnRhc24xL2xpYnRhc24xLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN0ZGludC5tNC1yZWludHJvZHVjZS1HTlVMSUJfT1ZFUlJJREVTX1dJTlRfVC1jaGVjay5wYXRjaCBcCisgICAgICAgICAgICIKKworREVQRU5EUyA9ICJiaXNvbi1uYXRpdmUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjZTJiYTRkMzA4ODExOWI0OGU3NTMxYTcwMzY2OWM1MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZTUyOGU4YzMxN2RkZDE1NjIzMGM0ZTMxZDA4MmNkMTNlN2RkZWI3YTU0ODI0YmU4MjYzMjIwOTU1MGM4Y2NhIgorCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGJpbmNvbmZpZyBsaWJfcGFja2FnZSBndGstZG9jCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDEtcGtnY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDEtcGtnY29uZmlnLnBhdGNoCmluZGV4IDE0YTQzZWUuLmYxOTk3ZTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAxLXBrZ2NvbmZpZy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMS1wa2djb25maWcucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDhhZTE0OTAzNWM5N2QyN2NkMmM2MjQ3MDRkMTY1MTgwNmM1MzU3N2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDI2NWZhZjhmZTBhY2FjYTIwNDNhMjQ4YTRkZjAyYjA4NjhmZmE2ZGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KIERhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMDI6MDA6MDggLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzVdIHBrZ2NvbmZpZworU3ViamVjdDogW1BBVENIIDEvNF0gcGtnY29uZmlnCiAKIFVwZGF0ZSBncGdtZSB0byB1c2UgcGtnY29uZmlnIGluc3RlYWQgb2YgLWNvbmZpZyBmaWxlcyBzaW5jZSBpdHMKIHNpbXBsZXIgYW5kIGxlc3MgZXJyb3IgcHJvbmUgd2hlbiBjcm9zcyBjb21waWxpbmcuCkBAIC0yNSwxMCArMjUsMTAgQEAKICBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2dwZ21lLnBjLmluCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDBkYWM2Y2UuLjZhOWU1MDcgMTAwNjQ0CitpbmRleCA2ZWE0YmNkLi4yYTBkNTI4IDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC04NjYsNiArODY2LDcgQEAgQUNfQ09ORklHX0ZJTEVTKE1ha2VmaWxlIHNyYy9NYWtlZmlsZQorQEAgLTg4Nyw2ICs4ODcsNyBAQCBBQ19DT05GSUdfRklMRVMoTWFrZWZpbGUgc3JjL01ha2VmaWxlCiAgICAgICAgICAgICAgICAgIHNyYy92ZXJzaW9uaW5mby5yYwogICAgICAgICAgICAgICAgICBzcmMvZ3BnbWUuaCkKICBBQ19DT05GSUdfRklMRVMoc3JjL2dwZ21lLWNvbmZpZywgY2htb2QgK3ggc3JjL2dwZ21lLWNvbmZpZykKQEAgLTI5OSw1ICsyOTksNSBAQAogK1JlcXVpcmVzOiBsaWJhc3N1YW4gZ3BnLWVycm9yCiBcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKIC0tIAotMi44LjEKKzEuOC4zLjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDItZ3BnbWUtbGFuZy1weXRob24tZ3BnLWVycm9yLWNvbmZpZy1zaG91bGQtbm90LWJlLXVzZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAyLWdwZ21lLWxhbmctcHl0aG9uLWdwZy1lcnJvci1jb25maWctc2hvdWxkLW5vdC1iZS11c2UucGF0Y2gKaW5kZXggZjFmOGM5MS4uZDIwMjcxZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDItZ3BnbWUtbGFuZy1weXRob24tZ3BnLWVycm9yLWNvbmZpZy1zaG91bGQtbm90LWJlLXVzZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMi1ncGdtZS1sYW5nLXB5dGhvbi1ncGctZXJyb3ItY29uZmlnLXNob3VsZC1ub3QtYmUtdXNlLnBhdGNoCkBAIC0xLDI5ICsxLDI4IEBACi1Gcm9tIGZiMTY1YzliZDk2YWNhOGM5ZWUzZTQ1MDljOWI2ZTM1ZDIzOGFkMmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDE2IEF1ZyAyMDE3IDAyOjAyOjQ3IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMi81XSBncGdtZS9sYW5nL3B5dGhvbjogZ3BnLWVycm9yLWNvbmZpZyBzaG91bGQgbm90IGJlIHVzZWQuCitGcm9tIDMwZjdhNjk0Y2M0NTY4ZWNiMjRmNzdjODNhNjEyM2VkM2Y0MDc1ZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDMxIEphbiAyMDE4IDEwOjQ0OjE5ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGdwZ21lL2xhbmcvcHl0aG9uOiBncGctZXJyb3ItY29uZmlnIHNob3VsZCBub3QgYmUgdXNlZAogCi1ncGctZXJyb3ItY29uZmlnIHdhcyBtb2RpZmllZCBieSBPRSB0byBhbHdheXMgcmV0dXJuIGFuIGVycm9yLiAgU28gd2Ugd2FudAotdG8gZmluZCBhbiBhbHRlcm5hdGl2ZSB3YXkgdG8gcmV0cmlldmUgd2hhdGV2ZXIgaXQgaXMgd2UgbmVlZC4gIEl0IHR1cm5zCi1vdXQgdGhhdCB0aGUgc3lzdGVtIGlzIGp1c3QgdHJ5aW5nIHRvIGZpbmQgdGhlIHBhdGggdG8gdGhlIGdwZy1lcnJvci5oLCB3aGljaAotd2UgY2FuIHB1bGwgaW4gZnJvbSB0aGUgU1RBR0lOR19JTkMgZW52aXJvbm1lbnQuCitncGctZXJyb3ItY29uZmlnIHdhcyBtb2RpZmllZCBieSBPRSB0byBhbHdheXMgcmV0dXJuIGFuIGVycm9yLgorU28gd2Ugd2FudCB0byBmaW5kIGFuIGFsdGVybmF0aXZlIHdheSB0byByZXRyaWV2ZSB3aGF0ZXZlciBpdAoraXMgd2UgbmVlZC4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjaGFuZ2VzIGFyZSBzcGVjaWZpYyB0byBPRV0KIAogU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgogCi1SZWJhc2UgdG8gMS45LjAKK1Jld29yayB0byAxLjEwLjAKIAogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogLS0tCi0gbGFuZy9weXRob24vc2V0dXAucHkuaW4gfCAxNSArKy0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKKyBsYW5nL3B5dGhvbi9zZXR1cC5weS5pbiB8IDEwICstLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDkgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9sYW5nL3B5dGhvbi9zZXR1cC5weS5pbiBiL2xhbmcvcHl0aG9uL3NldHVwLnB5LmluCi1pbmRleCBiZjRlZmEzLi43YzM0NDg3IDEwMDc1NQoraW5kZXggZjlkZGEyMC4uOWY1ZDYxZiAxMDA3NTUKIC0tLSBhL2xhbmcvcHl0aG9uL3NldHVwLnB5LmluCiArKysgYi9sYW5nL3B5dGhvbi9zZXR1cC5weS5pbgotQEAgLTI0LDcgKzI0LDYgQEAgaW1wb3J0IGdsb2IKK0BAIC0yNiw3ICsyNiw2IEBAIGltcG9ydCBzaHV0aWwKICBpbXBvcnQgc3VicHJvY2VzcwogIAogICMgT3V0LW9mLXRyZWUgYnVpbGQgb2YgdGhlIGdwZyBiaW5kaW5ncy4KQEAgLTMxLDM1ICszMCwyMiBAQAogIGdwZ21lX2NvbmZpZ19mbGFncyA9IFsiLS10aHJlYWQ9cHRocmVhZCJdCiAgZ3BnbWVfY29uZmlnID0gWyJncGdtZS1jb25maWciXSArIGdwZ21lX2NvbmZpZ19mbGFncwogIGdwZ21lX2ggPSAiIgotQEAgLTUyLDEzICs1MSw2IEBAIGVsc2U6Ci0gICAgIGRldm51bGwgPSBvcGVuKG9zLmRldm51bGwsICJ3IikKK0BAIC0xNzQsMTQgKzE3Myw3IEBAIGNsYXNzIEJ1aWxkRXh0Rmlyc3RIYWNrKGJ1aWxkKToKICAKLSB0cnk6Ci0tICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChncGdfZXJyb3JfY29uZmlnICsgWyctLXZlcnNpb24nXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1kZXZudWxsKQotLWV4Y2VwdDoKLS0gICAgc3lzLmV4aXQoIkNvdWxkIG5vdCBmaW5kIGdwZy1lcnJvci1jb25maWcuICAiICsKLS0gICAgICAgICAgICAgIlBsZWFzZSBpbnN0YWxsIHRoZSBsaWJncGctZXJyb3IgZGV2ZWxvcG1lbnQgcGFja2FnZS4iKQorICAgICBkZWYgX2dlbmVyYXRlX2Vycm9yc19pKHNlbGYpOgorIAorLSAgICAgICAgdHJ5OgorLSAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChncGdfZXJyb3JfY29uZmlnICsgWyctLXZlcnNpb24nXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PWRldm51bGwpCistICAgICAgICBleGNlcHQ6CistICAgICAgICAgICAgc3lzLmV4aXQoIkNvdWxkIG5vdCBmaW5kIGdwZy1lcnJvci1jb25maWcuICAiICsKKy0gICAgICAgICAgICAgICAgICAgICAiUGxlYXNlIGluc3RhbGwgdGhlIGxpYmdwZy1lcnJvciBkZXZlbG9wbWVudCBwYWNrYWdlLiIpCiAtCi0tdHJ5OgotICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoZ3BnbWVfY29uZmlnICsgWyctLXZlcnNpb24nXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1kZXZudWxsKQotIGV4Y2VwdDoKLUBAIC04MSwxMiArNzMsOSBAQCBpZiBub3QgKG1ham9yID4gMSBvciAobWFqb3IgPT0gMSBhbmQgbWlub3IgPj0gNykpOgotIGlmIG5vdCBncGdtZV9oOgotICAgICBncGdtZV9oID0gb3MucGF0aC5qb2luKGdldGNvbmZpZygicHJlZml4IilbMF0sICJpbmNsdWRlIiwgImdwZ21lLmgiKQorLSAgICAgICAgZ3BnX2Vycm9yX2NvbnRlbnQgPSBzZWxmLl9yZWFkX2hlYWRlcigiZ3BnLWVycm9yLmgiLCBnZXRjb25maWcoImNmbGFncyIsIGNvbmZpZz1ncGdfZXJyb3JfY29uZmlnKSkKKysgICAgICAgIGdwZ19lcnJvcl9jb250ZW50ID0gc2VsZi5fcmVhZF9oZWFkZXIoImdwZy1lcnJvci5oIiwgb3MuZW52aXJvbi5nZXQoJ0NGTEFHUycpLnNwbGl0KCkpCiAgCi0tZ3BnX2Vycm9yX3ByZWZpeCA9IGdldGNvbmZpZygicHJlZml4IiwgY29uZmlnPWdwZ19lcnJvcl9jb25maWcpWzBdCi0tZ3BnX2Vycm9yX2ggPSBvcy5wYXRoLmpvaW4oZ3BnX2Vycm9yX3ByZWZpeCwgImluY2x1ZGUiLCAiZ3BnLWVycm9yLmgiKQotK2dwZ19lcnJvcl9oID0gb3MucGF0aC5qb2luKG9zLmdldGVudignU1RBR0lOR19JTkNESVInKSwgImdwZy1lcnJvci5oIikKLSBpZiBub3Qgb3MucGF0aC5leGlzdHMoZ3BnX2Vycm9yX2gpOgotLSAgICBncGdfZXJyb3JfaCA9IFwKLS0gICAgICAgIGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oZ3BnX2Vycm9yX3ByZWZpeCwgImluY2x1ZGUiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKiIsICJncGctZXJyb3IuaCIpKVswXQotKyAgICBzeXMuZXhpdCgiZ3BnX2Vycm9yX2ggbm90IGZvdW5kOiAlcyIgJSBncGdfZXJyb3JfaCkKLSAKLSBwcmludCgiQnVpbGRpbmcgcHl0aG9uIGdwZyBtb2R1bGUgdXNpbmcge30gYW5kIHt9LiIuZm9ybWF0KGdwZ21lX2gsIGdwZ19lcnJvcl9oKSkKLSAKKyAgICAgICAgIGZpbHRlcl9yZSA9IHJlLmNvbXBpbGUocidHUEdfRVJSX1teIF0qID0nKQorICAgICAgICAgcmV3cml0ZV9yZSA9IHJlLmNvbXBpbGUocicgKiguKikgPSAuKicpCiAtLSAKLTIuOC4xCisxLjguMy4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAzLUNvcnJlY3RseS1pbnN0YWxsLXB5dGhvbi1tb2R1bGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDMtQ29ycmVjdGx5LWluc3RhbGwtcHl0aG9uLW1vZHVsZXMucGF0Y2gKaW5kZXggZDM4MzMxMS4uN2M5Y2NjYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDMtQ29ycmVjdGx5LWluc3RhbGwtcHl0aG9uLW1vZHVsZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDMtQ29ycmVjdGx5LWluc3RhbGwtcHl0aG9uLW1vZHVsZXMucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDYyMzMyZWVjNzUyZGQ3OTBmNGRkMDcxZGZiMGRiZTg2YmUzNzcyMDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMDI6MDU6MzQgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzVdIENvcnJlY3RseSBpbnN0YWxsIHB5dGhvbiBtb2R1bGVzCitGcm9tIDkzYWFlMzRlZTcwYjhkNTBiMzFhMTlhNjVkNmFjODI5MGNiMTQ4YWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDMwIEphbiAyMDE4IDE1OjI4OjQ5ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMi80XSBDb3JyZWN0bHkgaW5zdGFsbCBweXRob24gbW9kdWxlcwogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KQEAgLTksMjIgKzksMjUgQEAKIFJlYmFzZSB0byAxLjkuMAogCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKK1JlYmFzZSB0byAxLjEwLjAKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIC0tLQogIGxhbmcvcHl0aG9uL01ha2VmaWxlLmFtIHwgMSArCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCiAKIGRpZmYgLS1naXQgYS9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbSBiL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCi1pbmRleCBkOTFlYWQ5Li42N2Y3Y2RjIDEwMDY0NAoraW5kZXggOGQ3NGNiZC4uY2U0ZjBhNSAxMDA2NDQKIC0tLSBhL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCiArKysgYi9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbQotQEAgLTEwNiw2ICsxMDYsNyBAQCBpbnN0YWxsLWV4ZWMtbG9jYWw6Ci0gCSAgY2QgcHl0aG9uJCR7VkVSU0lPTn0tZ3BnIDsgXAotIAkgICQkUFlUSE9OIHNldHVwLnB5IGluc3RhbGwgXAotIAkgIC0tcHJlZml4ICQoREVTVERJUikkKHByZWZpeCkgXAorQEAgLTkxLDYgKzkxLDcgQEAgaW5zdGFsbC1leGVjLWxvY2FsOgorIAkgIC0tYnVpbGQtYmFzZT0iJCQoYmFzZW5hbWUgIiQke1BZVEhPTn0iKS1ncGciIFwKKyAJICBpbnN0YWxsIFwKKyAJICAtLXByZWZpeCAiJChERVNURElSKSQocHJlZml4KSIgXAogKwkgIC0taW5zdGFsbC1saWI9JChERVNURElSKSR7cHl0aG9uZGlyfSBcCi0gCSAgLS1yZWNvcmQgZmlsZXMudHh0IFwKICAJICAtLXZlcmJvc2UgOyBcCi0gCSAgY2F0IGZpbGVzLnR4dCA+PiAuLi9pbnN0YWxsX2ZpbGVzLnR4dCA7IFwKKyAJZG9uZQorIAogLS0gCi0yLjguMQorMS44LjMuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNC1weXRob24taW1wb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDQtcHl0aG9uLWltcG9ydC5wYXRjaAppbmRleCA5MzA3MTAzLi5kMmIwMzlkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNC1weXRob24taW1wb3J0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA0LXB5dGhvbi1pbXBvcnQucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGNjYmYwMjhlZWE4ODE1ZDNiMTZkNmMzNGI1MjcyNTNhNmIxMDhlYzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDMyZWNjM2YwNTgzMDcwNjBlNDBhZjg2MTI3Y2QyMjYyNDhhNzNjNDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAwMjowNjo0NSAtMDQwMAotU3ViamVjdDogW1BBVENIIDQvNV0gcHl0aG9uIGltcG9ydAorU3ViamVjdDogW1BBVENIIDMvNF0gcHl0aG9uIGltcG9ydAogCiBEb24ndCBjaGVjayBmb3Igb3V0cHV0IG9uIHN0ZGVyciB0byBrbm93IGlmIGFuIGltcG9ydCB3b3JrZWQsIGhvc3QgaW5wdXRyYyBhbmQKIHN5c3Jvb3QgcmVhZGxpbmUgY2FuIGNhdXNlIHdhcm5pbmdzIG9uIHN0ZGVyci4KQEAgLTMwLDUgKzMwLDUgQEAKICAJZWxzZQogIAkJQUNfTVNHX1JFU1VMVChbbm9dKQogLS0gCi0yLjguMQorMS44LjMuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNS1ncGdtZS1jb25maWctc2tpcC1hbGwtbGliLW9yLXVzci1saWItZGlyZWN0b3JpZXMtaW4tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDUtZ3BnbWUtY29uZmlnLXNraXAtYWxsLWxpYi1vci11c3ItbGliLWRpcmVjdG9yaWVzLWluLS5wYXRjaAppbmRleCA3YTZjYzdiLi45NjNhZTg3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNS1ncGdtZS1jb25maWctc2tpcC1hbGwtbGliLW9yLXVzci1saWItZGlyZWN0b3JpZXMtaW4tLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA1LWdwZ21lLWNvbmZpZy1za2lwLWFsbC1saWItb3ItdXNyLWxpYi1kaXJlY3Rvcmllcy1pbi0ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDA2NGFlNDQ0MWUyYzExMzI5NzQ4YTE4MTU3OTg4ZjllOTUzZjk3NTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDZkY2VkYzRkZDA1NWFmOTAyNzE5YjFhMWNiMTBkYWE5MzVhMjdmNTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMTMgQXByIDIwMTcgMTY6NDA6MjcgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCA1LzVdIGdwZ21lLWNvbmZpZzogc2tpcCBhbGwgL2xpYiogb3IgL3Vzci9saWIqIGRpcmVjdG9yaWVzIGluCitTdWJqZWN0OiBbUEFUQ0ggNC80XSBncGdtZS1jb25maWc6IHNraXAgYWxsIC9saWIqIG9yIC91c3IvbGliKiBkaXJlY3RvcmllcyBpbgogIG91dHB1dAogCiBUaGUgbG9naWMgd2FzIG5vdCB3b3JraW5nIGluIG11bHRpbGliIHNldHVwcyB3aGljaCB1c2Ugb3RoZXIKQEAgLTI3LDUgKzI3LDUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICAtTCp8LWwqKQogLS0gCi0yLjguMQorMS44LjMuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNi1maXgtYnVpbGQtcGF0aC1pc3N1ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA2LWZpeC1idWlsZC1wYXRoLWlzc3VlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjYzg5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNi1maXgtYnVpbGQtcGF0aC1pc3N1ZS5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIDE4MGE1NjY5ZTRhMTNhNTUwYjFiMGRjZWYxNjg5YjZjMDQ3MGZlNTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDMxIEphbiAyMDE4IDExOjAxOjA5ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBidWlsZCBwYXRoIGlzc3VlCisKK0dldCB0aGUgIi0tcm9vdCIgZGlyZWN0b3J5IHN1cHBsaWVkIHRvIHRoZSAiaW5zdGFsbCIgY29tbWFuZCwKK2FuZCB1c2UgaXQgYXMgYSBwcmVmaXggdG8gc3RyaXAgb2ZmIHRoZSBwdXJwb3J0ZWQgZmlsZW5hbWUKK2VuY29kZWQgaW4gYnl0ZWNvZGUgZmlsZXMuCisKK1NpbmNlIC0tcm9vdCBhZGRlZCwgd2UgbmVlZCB0byB0d2VhayAtLXByZWZpeCBhbmQgLS1pbnN0YWxsLWxpYgordG8gdXNlIHJlbGF0aXZlIHBhdGguCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtnbnVwZy1kZXZlbEBnbnVwZy5vcmddCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBsYW5nL3B5dGhvbi9NYWtlZmlsZS5hbSB8IDUgKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGFuZy9weXRob24vTWFrZWZpbGUuYW0gYi9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbQoraW5kZXggY2U0ZjBhNS4uNWE0NjhmMSAxMDA2NDQKKy0tLSBhL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCisrKysgYi9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbQorQEAgLTkwLDggKzkwLDkgQEAgaW5zdGFsbC1leGVjLWxvY2FsOgorIAkgIGJ1aWxkIFwKKyAJICAtLWJ1aWxkLWJhc2U9IiQkKGJhc2VuYW1lICIkJHtQWVRIT059IiktZ3BnIiBcCisgCSAgaW5zdGFsbCBcCistCSAgLS1wcmVmaXggIiQoREVTVERJUikkKHByZWZpeCkiIFwKKy0JICAtLWluc3RhbGwtbGliPSQoREVTVERJUikke3B5dGhvbmRpcn0gXAorKwkgIC0tcm9vdD0ke0RFU1RESVJ9IFwKKysJICAtLXByZWZpeCAiJChwcmVmaXgpIiBcCisrCSAgLS1pbnN0YWxsLWxpYj0ke3B5dGhvbmRpcn0gXAorIAkgIC0tdmVyYm9zZSA7IFwKKyAJZG9uZQorIAorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA3LXF0LXB5dGhvbi1BZGQtdmFyaWFibGVzLXRvLXRlc3RzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDctcXQtcHl0aG9uLUFkZC12YXJpYWJsZXMtdG8tdGVzdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UzNzQ1YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA3LXF0LXB5dGhvbi1BZGQtdmFyaWFibGVzLXRvLXRlc3RzLnBhdGNoCkBAIC0wLDAgKzEsNzggQEAKK0Zyb20gZjQ3ZThjNmY5ZTQ2MTgwMzQ2OGE2NDU4MWQzNjQwZDg3MzM1MmVhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMSBGZWIgMjAxOCAxMDoxNDozMCArMDgwMAorU3ViamVjdDogW1BBVENIXSBxdC9weXRob246IEFkZCB2YXJpYWJsZXMgdG8gdGVzdHMKKworKiBjb25maWd1cmUuYWMsIGxhbmcvcHl0aG9uL01ha2VmaWxlLmFtOgorICBOZXcgdmFyaWFibGUgdG8gYGxhbmcvcHl0aG9uJywgc2V0IHRvIGBsYW5nL3B5dGhvbicgaWYgUlVOX0xBTkdfUFlUSE9OX1RFU1RTCisKKyogY29uZmlndXJlLmFjLCBsYW5nL3F0L01ha2VmaWxlLmFtOgorICBOZXcgdmFyaWFibGUgdG8gYGxhbmcvcXQnLCBzZXQgdG8gYGxhbmcvcXQnIGlmIFJVTl9MQU5HX1FUX1RFU1RTCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtnbnVwZy1kZXZlbEBnbnVwZy5vcmddCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgIHwgMTEgKysrKysrKysrKysKKyBsYW5nL3B5dGhvbi9NYWtlZmlsZS5hbSB8ICAzICsrKworIGxhbmcvcXQvTWFrZWZpbGUuYW0gICAgIHwgIDggKysrKysrKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNjA4YzM3Ni4uZmFkNzQ2NyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNTM2LDYgKzUzNiwxNyBAQCBBQ19BUkdfRU5BQkxFKGcxMy10ZXN0LAorICAgICAgICAgIHJ1bl9nMTNfdGVzdD0kZW5hYmxldmFsKQorIEFNX0NPTkRJVElPTkFMKFJVTl9HMTNfVEVTVFMsIHRlc3QgIiRydW5fZzEzX3Rlc3QiID0gInllcyIpCisgCisrcnVuX2xhbmdfcHl0aG9uX3Rlc3Q9InllcyIKKytBQ19BUkdfRU5BQkxFKGxhbmctcHl0aG9uLXRlc3QsCisrICBBQ19IRUxQX1NUUklORyhbLS1kaXNhYmxlLWxhbmctcHl0aG9uLXRlc3RdLCBbZGlzYWJsZSBQeXRob24gcmVncmVzc2lvbiB0ZXN0XSksCisrICAgICAgICAgcnVuX2xhbmdfcHl0aG9uX3Rlc3Q9JGVuYWJsZXZhbCkKKytBTV9DT05ESVRJT05BTChSVU5fTEFOR19QWVRIT05fVEVTVFMsIHRlc3QgIiRydW5fbGFuZ19weXRob25fdGVzdCIgPSAieWVzIikKKysKKytydW5fbGFuZ19xdF90ZXN0PSJ5ZXMiCisrQUNfQVJHX0VOQUJMRShsYW5nLXF0LXRlc3QsCisrICBBQ19IRUxQX1NUUklORyhbLS1kaXNhYmxlLWxhbmctcXQtdGVzdF0sIFtkaXNhYmxlIFF0IHJlZ3Jlc3Npb24gdGVzdF0pLAorKyAgICAgICAgIHJ1bl9sYW5nX3F0X3Rlc3Q9JGVuYWJsZXZhbCkKKytBTV9DT05ESVRJT05BTChSVU5fTEFOR19RVF9URVNUUywgdGVzdCAiJHJ1bl9sYW5nX3F0X3Rlc3QiID0gInllcyIpCisgCisgIyBDaGVja3MgZm9yIGhlYWRlciBmaWxlcy4KKyBBQ19DSEVDS19IRUFERVJTX09OQ0UoW2xvY2FsZS5oIHN5cy9zZWxlY3QuaCBzeXMvdWlvLmggYXJncC5oCitkaWZmIC0tZ2l0IGEvbGFuZy9weXRob24vTWFrZWZpbGUuYW0gYi9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbQoraW5kZXggOGQ3NGNiZC4uNDNiNWQxZSAxMDA2NDQKKy0tLSBhL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCisrKysgYi9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbQorQEAgLTI0LDcgKzI0LDEwIEBAIEVYVFJBX0RJU1QgPSBcCisgCWV4YW1wbGVzIFwKKyAJc3JjCisgCisraWYgUlVOX0xBTkdfUFlUSE9OX1RFU1RTCisgU1VCRElSUyA9IC4gdGVzdHMKKytlbmRpZgorKworIAorIC5QSE9OWTogcHJlcGFyZQorIHByZXBhcmU6IGNvcHlzdGFtcAorZGlmZiAtLWdpdCBhL2xhbmcvcXQvTWFrZWZpbGUuYW0gYi9sYW5nL3F0L01ha2VmaWxlLmFtCitpbmRleCBhYjg1OTYwLi5hMjQ0ZWRlIDEwMDY0NAorLS0tIGEvbGFuZy9xdC9NYWtlZmlsZS5hbQorKysrIGIvbGFuZy9xdC9NYWtlZmlsZS5hbQorQEAgLTE5LDYgKzE5LDEyIEBACisgIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKKyAjIDAyMTExLTEzMDcsIFVTQQorIAorLVNVQkRJUlMgPSBzcmMgdGVzdHMgZG9jCisraWYgUlVOX0xBTkdfUVRfVEVTVFMKKytxdHRlc3RzID0gdGVzdHMKKytlbHNlCisrcXR0ZXN0cyA9CisrZW5kaWYKKysKKytTVUJESVJTID0gc3JjICR7cXR0ZXN0c30gZG9jCisgCisgRVhUUkFfRElTVCA9IFJFQURNRQorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZV8xLjEwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWVfMS4xMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMTVmM2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWVfMS4xMC4wLmJiCkBAIC0wLDAgKzEsODYgQEAKK1NVTU1BUlkgPSAiSGlnaC1sZXZlbCBHbnVQRyBlbmNyeXB0aW9uL3NpZ25pbmcgQVBJIgorREVTQ1JJUFRJT04gPSAiR251UEcgTWFkZSBFYXN5IChHUEdNRSkgaXMgYSBsaWJyYXJ5IGRlc2lnbmVkIHRvIG1ha2UgYWNjZXNzIHRvIEdudVBHIGVhc2llciBmb3IgYXBwbGljYXRpb25zLiBJdCBwcm92aWRlcyBhIEhpZ2gtTGV2ZWwgQ3J5cHRvIEFQSSBmb3IgZW5jcnlwdGlvbiwgZGVjcnlwdGlvbiwgc2lnbmluZywgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBhbmQga2V5IG1hbmFnZW1lbnQiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9ncGdtZS5odG1sIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZzEwY29kZS5jb20vZ251cGcvaW5kZXgiCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVI7bWQ1PWJiYjQ2MTIxMWEzM2IxMzRkNDJlZDVlZTgwMmIzN2ZmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9ncGdtZS5oLmluO2VuZGxpbmU9MjM7bWQ1PTlkMTU3ZDA4YTY5MDU5MzQ0ZTZmODJhYmQyZDI1NzgxIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9lbmdpbmUuaDtlbmRsaW5lPTIyO21kNT00YjZkOGJhMzEzZDliNTY0Y2M0ZDRjZmIxNjQwYWY5ZCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9ncGdtZS8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcGtnY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItZ3BnbWUtbGFuZy1weXRob24tZ3BnLWVycm9yLWNvbmZpZy1zaG91bGQtbm90LWJlLXVzZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUNvcnJlY3RseS1pbnN0YWxsLXB5dGhvbi1tb2R1bGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtcHl0aG9uLWltcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LWdwZ21lLWNvbmZpZy1za2lwLWFsbC1saWItb3ItdXNyLWxpYi1kaXJlY3Rvcmllcy1pbi0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1maXgtYnVpbGQtcGF0aC1pc3N1ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LXF0LXB5dGhvbi1BZGQtdmFyaWFibGVzLXRvLXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3OGIxNTMzYzU5MzQ3ODk4MmVlMmZjNTQ4MjYwYzU2MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxYThmZWQxMTk3YzNiOTljMzVmNDAzMDY2YmIzNDRhMjYyMjRkMjkyYWZjMDQ4Y2ZkZmM0Y2NkNTY5MGEwNjkzIgorCitERVBFTkRTID0gImxpYmdwZy1lcnJvciBsaWJhc3N1YW4iCitSREVQRU5EU18ke1BOfS1jcHAgKz0gImxpYnN0ZGMrKyIKKworUkRFUEVORFNfcHl0aG9uMi1ncGcgKz0gInB5dGhvbi11bml4YWRtaW4iCitSREVQRU5EU19weXRob24zLWdwZyArPSAicHl0aG9uMy11bml4YWRtaW4iCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vZ3BnbWUtY29uZmlnIgorCisjIE5vdGUgc2VsZWN0IHB5dGhvbjIgb3IgcHl0aG9uMywgYnV0IHlvdSBjYW4ndCBzZWxlY3QgYm90aCBhdCB0aGUgc2FtZSB0aW1lCitQQUNLQUdFQ09ORklHID8/PSAicHl0aG9uMyIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uMl0gPSAiLCxweXRob24gc3dpZy1uYXRpdmUsIgorUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICIsLHB5dGhvbjMgc3dpZy1uYXRpdmUsIgorCisjIERlZmF1bHQgaW4gY29uZmlndXJlLmFjOiAiY2wgY3BwIHB5dGhvbiBxdCIKKyMgU3VwcG9ydGVkOiAiY2wgY3BwIHB5dGhvbiBweXRob24yIHB5dGhvbjMgcXQiCisjIHB5dGhvbiBzYXlzICdzZWFyY2ggYW5kIGZpbmQgcHl0aG9uMiBvciBweXRob24zJworCisjIEJ1aWxkaW5nIHRoZSBDKysgYmluZGluZ3MgZm9yIG5hdGl2ZSByZXF1aXJlcyBhIEMrKyBjb21waWxlciB3aXRoIEMrKzExCisjIHN1cHBvcnQuIFNpbmNlIHRoZXNlIGJpbmRpbmdzIGFyZSBjdXJyZW50bHkgbm90IG5lZWRlZCwgd2UgY2FuIGRpc2FibGUgdGhlbS4KK0RFRkFVTFRfTEFOR1VBR0VTID0gIiIKK0RFRkFVTFRfTEFOR1VBR0VTX2NsYXNzLXRhcmdldCA9ICJjcHAiCitMQU5HVUFHRVMgPz0gIiR7REVGQVVMVF9MQU5HVUFHRVN9IgorTEFOR1VBR0VTIC49ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24yJywgJyBweXRob24yJywgJycsIGQpfSIKK0xBTkdVQUdFUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICcgcHl0aG9uMycsICcnLCBkKX0iCisKK1BZVEhPTl9JTkhFUklUID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjInLCAncHl0aG9ubmF0aXZlJywgJycsIGQpfSIKK1BZVEhPTl9JTkhFUklUIC49ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3B5dGhvbjNuYXRpdmUnLCAnJywgZCl9IgorCitFWFRSQV9PRUNPTkYgKz0gJy0tZW5hYmxlLWxhbmd1YWdlcz0iJHtMQU5HVUFHRVN9IiBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ncGdjb25mLXRlc3QgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ3BnLXRlc3QgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ3Bnc20tdGVzdCBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1nMTMtdGVzdCBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1sYW5nLXF0LXRlc3QgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGFuZy1weXRob24tdGVzdCBcCisnCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZyAke1BZVEhPTl9JTkhFUklUfQorCitleHBvcnQgUEtHX0NPTkZJRz0ncGtnLWNvbmZpZycKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tY3BwIgorUEFDS0FHRVMgPS4gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjInLCAncHl0aG9uMi1ncGcgJywgJycsIGQpfSIKK1BBQ0tBR0VTID0uICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3B5dGhvbjMtZ3BnICcsICcnLCBkKX0iCisKK0ZJTEVTXyR7UE59LWNwcCA9ICIke2xpYmRpcn0vbGliZ3BnbWVwcC5zby4qIgorRklMRVNfcHl0aG9uMi1ncGcgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKK0ZJTEVTX3B5dGhvbjMtZ3BnID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vY29tbW9uLWxpc3Avc291cmNlL2dwZ21lLyogXAorICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vY21ha2UvKiBcCisiCisKK0NGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtRF9fZXJyb3JfdF9kZWZpbmVkICIKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIEVsc2UgdGhlc2UgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRob3NlIGluIGFjbG9jYWwtY29weQorCXJtIC1mICR7U30vbTQvZ3BnLWVycm9yLm00CisJcm0gLWYgJHtTfS9tNC9saWJhc3N1YW4ubTQKKwlybSAtZiAke1N9L200L3B5dGhvbi5tNAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lXzEuOS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lXzEuOS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjVjMzQ2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZV8xLjkuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLVNVTU1BUlkgPSAiSGlnaC1sZXZlbCBHbnVQRyBlbmNyeXB0aW9uL3NpZ25pbmcgQVBJIgotREVTQ1JJUFRJT04gPSAiR251UEcgTWFkZSBFYXN5IChHUEdNRSkgaXMgYSBsaWJyYXJ5IGRlc2lnbmVkIHRvIG1ha2UgYWNjZXNzIHRvIEdudVBHIGVhc2llciBmb3IgYXBwbGljYXRpb25zLiBJdCBwcm92aWRlcyBhIEhpZ2gtTGV2ZWwgQ3J5cHRvIEFQSSBmb3IgZW5jcnlwdGlvbiwgZGVjcnlwdGlvbiwgc2lnbmluZywgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBhbmQga2V5IG1hbmFnZW1lbnQiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9ncGdtZS5odG1sIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZzEwY29kZS5jb20vZ251cGcvaW5kZXgiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVI7bWQ1PWJiYjQ2MTIxMWEzM2IxMzRkNDJlZDVlZTgwMmIzN2ZmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9ncGdtZS5oLmluO2VuZGxpbmU9MjM7bWQ1PTlkMTU3ZDA4YTY5MDU5MzQ0ZTZmODJhYmQyZDI1NzgxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9lbmdpbmUuaDtlbmRsaW5lPTIyO21kNT00YjZkOGJhMzEzZDliNTY0Y2M0ZDRjZmIxNjQwYWY5ZCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCi1TUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9ncGdtZS8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcGtnY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItZ3BnbWUtbGFuZy1weXRob24tZ3BnLWVycm9yLWNvbmZpZy1zaG91bGQtbm90LWJlLXVzZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLUNvcnJlY3RseS1pbnN0YWxsLXB5dGhvbi1tb2R1bGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtcHl0aG9uLWltcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LWdwZ21lLWNvbmZpZy1za2lwLWFsbC1saWItb3ItdXNyLWxpYi1kaXJlY3Rvcmllcy1pbi0ucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFlMDBiYjhlZjA0ZDFkMDVkNWEwZjE5ZTE0Mzg1NGMzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFiMjlmZWRiOGJmYWQ3NzVlNzBlYWZhYzViMDU5MDYyMTY4M2IyZDk4NjlkYjk5NDU2OGU2NDAxZjQwMzRjZWIiCi0KLURFUEVORFMgPSAibGliZ3BnLWVycm9yIGxpYmFzc3VhbiIKLVJERVBFTkRTXyR7UE59LWNwcCArPSAibGlic3RkYysrIgotCi1SREVQRU5EU19weXRob24yLWdwZyArPSAicHl0aG9uLXVuaXhhZG1pbiIKLVJERVBFTkRTX3B5dGhvbjMtZ3BnICs9ICJweXRob24zLXVuaXhhZG1pbiIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9ncGdtZS1jb25maWciCi0KLSMgTm90ZSBzZWxlY3QgcHl0aG9uMiBvciBweXRob24zLCBidXQgeW91IGNhbid0IHNlbGVjdCBib3RoIGF0IHRoZSBzYW1lIHRpbWUKLVBBQ0tBR0VDT05GSUcgPz89ICJweXRob24zIgotUEFDS0FHRUNPTkZJR1tweXRob24yXSA9ICIsLHB5dGhvbiBzd2lnLW5hdGl2ZSwiCi1QQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIiwscHl0aG9uMyBzd2lnLW5hdGl2ZSwiCi0KLSMgRGVmYXVsdCBpbiBjb25maWd1cmUuYWM6ICJjbCBjcHAgcHl0aG9uIHF0IgotIyBTdXBwb3J0ZWQ6ICJjbCBjcHAgcHl0aG9uIHB5dGhvbjIgcHl0aG9uMyBxdCIKLSMgcHl0aG9uIHNheXMgJ3NlYXJjaCBhbmQgZmluZCBweXRob24yIG9yIHB5dGhvbjMnCi0KLSMgQnVpbGRpbmcgdGhlIEMrKyBiaW5kaW5ncyBmb3IgbmF0aXZlIHJlcXVpcmVzIGEgQysrIGNvbXBpbGVyIHdpdGggQysrMTEKLSMgc3VwcG9ydC4gU2luY2UgdGhlc2UgYmluZGluZ3MgYXJlIGN1cnJlbnRseSBub3QgbmVlZGVkLCB3ZSBjYW4gZGlzYWJsZSB0aGVtLgotREVGQVVMVF9MQU5HVUFHRVMgPSAiIgotREVGQVVMVF9MQU5HVUFHRVNfY2xhc3MtdGFyZ2V0ID0gImNwcCIKLUxBTkdVQUdFUyA/PSAiJHtERUZBVUxUX0xBTkdVQUdFU30iCi1MQU5HVUFHRVMgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjInLCAnIHB5dGhvbjInLCAnJywgZCl9IgotTEFOR1VBR0VTIC49ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJyBweXRob24zJywgJycsIGQpfSIKLQotUFlUSE9OX0lOSEVSSVQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMicsICdweXRob25uYXRpdmUnLCAnJywgZCl9IgotUFlUSE9OX0lOSEVSSVQgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAncHl0aG9uM25hdGl2ZScsICcnLCBkKX0iCi0KLUVYVFJBX09FQ09ORiArPSAnLS1lbmFibGUtbGFuZ3VhZ2VzPSIke0xBTkdVQUdFU30iJwotCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcgJHtQWVRIT05fSU5IRVJJVH0KLQotZXhwb3J0IFBLR19DT05GSUc9J3BrZy1jb25maWcnCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWNwcCIKLVBBQ0tBR0VTID0uICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24yJywgJ3B5dGhvbjItZ3BnICcsICcnLCBkKX0iCi1QQUNLQUdFUyA9LiAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdweXRob24zLWdwZyAnLCAnJywgZCl9IgotCi1GSUxFU18ke1BOfS1jcHAgPSAiJHtsaWJkaXJ9L2xpYmdwZ21lcHAuc28uKiIKLUZJTEVTX3B5dGhvbjItZ3BnID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCi1GSUxFU19weXRob24zLWdwZyA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NvbW1vbi1saXNwL3NvdXJjZS9ncGdtZS8qIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2NtYWtlLyogXAotIgotCi1DRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLURfX2Vycm9yX3RfZGVmaW5lZCAiCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JIyBFbHNlIHRoZXNlIGNvdWxkIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKLQlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAotCXJtIC1mICR7U30vbTQvbGliYXNzdWFuLm00Ci0Jcm0gLWYgJHtTfS9tNC9weXRob24ubTQKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1LmluYwppbmRleCBhMWVmOWVjLi45ODMxMThjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UuaW5jCkBAIC0xNyw2ICsxNyw4IEBACiAKIEJJTkNPTkZJRyA9ICIke2JpbmRpcn0vaWN1LWNvbmZpZyIKIAorSUNVX01BSk9SX1ZFUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfSIKKwogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZwogCiAjIElDVSBuZWVkcyB0aGUgbmF0aXZlIGJ1aWxkIGRpcmVjdG9yeSBhcyBhbiBhcmd1bWVudCB0byBpdHMgLS13aXRoLWNyb3NzLWJ1aWxkIG9wdGlvbiB3aGVuCkBAIC0yNiw2ICsyOCw4IEBACiBFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIiIKIEVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiLS13aXRoLWNyb3NzLWJ1aWxkPSR7U1RBR0lOR19JQ1VfRElSX05BVElWRX0iCiAKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2JlJywgJyAtLXdpdGgtZGF0YS1wYWNrYWdpbmc9YXJjaGl2ZScsICcnLCBkKX0iCitUQVJHRVRfQ1hYRkxBR1NfYXBwZW5kID0gIiR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2JlJywgJyAtRElDVV9EQVRBX0RJUj1cXCIiJHtkYXRhZGlyfS8ke0JQTn0vJHtQVn1cXCIiJywgJycsIGQpfSIKIAogIyBzdHJ0b2RfbCgpIGlzIG5vdCBzdXBwb3J0ZWQgYnkgbXVzbDsgYWxzbyB4bG9jYWxlLmggaXMgbWlzc2luZwogIyBJdCBpcyBub3QgcG9zc2libGUgdG8gZGlzYWJsZSBpdHMgdXNlIHZpYSBjb25maWd1cmUgc3dpdGNoZXMgb3IgZW52IHZhcnMKQEAgLTM0LDYgKzM4LDE1IEBACiAgICAgc2VkIC1pIC1lICdzLERVX0hBVkVfU1RSVE9EX0w9MSxEVV9IQVZFX1NUUlRPRF9MPTAsJyAke1N9L2NvbmZpZ3VyZS5hYwogfQogCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKKwkjIE1ha2Ugc3VyZSBjZXJ0YWluIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcyBkbyBub3QgZW5kIHVwIGJlaW5nIGNvbXBpbGVkCisJIyBpbiB0aGUgaW1hZ2UuIFRoaXMgb25seSBhZmZlY3RzIGxpYmljdXR1IGFuZCBpY3UtZGJnCisJc2VkICBcCisJICAgIC1lICdzLERVX0JVSUxEPSxEVV9CVUlMRF91bnVzZWQ9LGcnIFwKKwkgICAgLWUgJy9eQ1BQRkxBR1MuKi8gcywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1pICR7Qn0vdG9vbHMvdG9vbHV0aWwvTWFrZWZpbGUKK30KKwogUFJFUFJPQ0VTU19SRUxPQ0FURV9ESVJTID0gIiR7ZGF0YWRpcn0vJHtCUE59LyR7UFZ9IgogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewogCW1rZGlyIC1wICR7RH0vJHtTVEFHSU5HX0lDVV9ESVJfTkFUSVZFfS9jb25maWcKQEAgLTQ0LDYgKzU3LDIzIEBACiAJY3AgLXIgJHtCfS90b29scyAke0R9LyR7U1RBR0lOR19JQ1VfRElSX05BVElWRX0KIH0KIAorZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICMgVGhlIG5hdGl2ZSBwa2dkYXRhIGNhbiBub3QgZ2VuZXJhdGUgdGhlIGNvcnJlY3QgZGF0YSBmaWxlLgorICAgICMgVXNlIGljdXBrZyB0byByZS1nZW5lcmF0ZSBpdC4KKyAgICBpZiBbICIke1NJVEVJTkZPX0VORElBTk5FU1N9IiA9ICJiZSIgXSA7IHRoZW4KKyAgICAgICAgcm0gLWYgJHtEfS8ke2RhdGFkaXJ9LyR7QlBOfS8ke1BWfS9pY3VkdCR7SUNVX01BSk9SX1ZFUn1iLmRhdAorICAgICAgICBpY3Vwa2cgLXRiICR7U30vZGF0YS9pbi9pY3VkdCR7SUNVX01BSk9SX1ZFUn1sLmRhdCAke0R9LyR7ZGF0YWRpcn0vJHtCUE59LyR7UFZ9L2ljdWR0JHtJQ1VfTUFKT1JfVkVSfWIuZGF0CisgICAgZmkKKwkKKwkjIFJlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMuLi4KKwlzZWQgLWkgIFwKKwkgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgICR7RH0vJHtiaW5kaXJ9L2ljdS1jb25maWcgJHtEfS8ke2xpYmRpcn0vJHtCUE59LyR7UFZ9L01ha2VmaWxlLmluYyBcCisJICAgICR7RH0vJHtsaWJkaXJ9LyR7QlBOfS8ke1BWfS9wa2dkYXRhLmluYworfQorCiBQQUNLQUdFUyA9KyAibGliaWN1ZGF0YSBsaWJpY3V1YyBsaWJpY3VpMThuIGxpYmljdXR1IGxpYmljdWlvIgogCiBGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS8ke0JQTn0vIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvMDAwMS1pMThuLURyb3AtaW5jbHVkZS14bG9jYWxlLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS8wMDAxLWkxOG4tRHJvcC1pbmNsdWRlLXhsb2NhbGUuaC5wYXRjaAppbmRleCBhZGQwZDc2Li5mMGM0OWUxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS8wMDAxLWkxOG4tRHJvcC1pbmNsdWRlLXhsb2NhbGUuaC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS8wMDAxLWkxOG4tRHJvcC1pbmNsdWRlLXhsb2NhbGUuaC5wYXRjaApAQCAtMSwzMSArMSwzNCBAQAotRnJvbSBjNDI1NGZkOGZmMTg4OGNhMjg1ZTMyNDJiODEyMDEwMzU3Y2UyYjNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkNmI1N2MxYjRlYjlhMjRkOWQ5NTM0MmE5NjFjOTM5NDY1MzljOTNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFNhdCwgMjQgSnVuIDIwMTcgMjI6NTI6NDAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gaTE4bjogRHJvcCBpbmNsdWRlIDx4bG9jYWxlLmg+CitTdWJqZWN0OiBbUEFUQ0ggMy80XSBpMThuOiBEcm9wIGluY2x1ZGUgPHhsb2NhbGUuaD4KIAogZ2xpYmMgMi4yNiBkcm9wcyB0aGlzIGhlYWRlcgogCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAKLSBpMThuL2RpZ2l0bHN0LmNwcCB8IDYgKy0tLS0tCistLS0KKyBzb3VyY2UvaTE4bi9kaWdpdGxzdC5jcHAgfCA2ICstLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNSBkZWxldGlvbnMoLSkKIAotSW5kZXg6IHNvdXJjZS9pMThuL2RpZ2l0bHN0LmNwcAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHNvdXJjZS5vcmlnL2kxOG4vZGlnaXRsc3QuY3BwCi0rKysgc291cmNlL2kxOG4vZGlnaXRsc3QuY3BwCi1AQCAtNjEsMTEgKzYxLDcgQEAKK2RpZmYgLS1naXQgYS9zb3VyY2UvaTE4bi9kaWdpdGxzdC5jcHAgYi9zb3VyY2UvaTE4bi9kaWdpdGxzdC5jcHAKK2luZGV4IDhlODZmYTcuLjBiZGJiMmMgMTAwNjQ0CistLS0gYS9pMThuL2RpZ2l0bHN0LmNwcAorKysrIGIvaTE4bi9kaWdpdGxzdC5jcHAKK0BAIC02MiwxMSArNjIsNyBAQAogICNlbmRpZgogIAogICNpZiBVX1VTRV9TVFJUT0RfTAotLSMgaWYgVV9QTEFURk9STV9VU0VTX09OTFlfV0lOMzJfQVBJIHx8IFVfUExBVEZPUk0gPT0gVV9QRl9DWUdXSU4KLS0jICAgaW5jbHVkZSA8bG9jYWxlLmg+Ci0tIyBlbHNlCistIyBpZiBVX0hBVkVfWExPQ0FMRV9ICiAtIyAgIGluY2x1ZGUgPHhsb2NhbGUuaD4KKy0jIGVsc2UKKy0jICAgaW5jbHVkZSA8bG9jYWxlLmg+CiAtIyBlbmRpZgogKyMgaW5jbHVkZSA8bG9jYWxlLmg+CiAgI2VuZGlmCiAgCiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLSAKKzIuMTQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS9DVkUtMjAxNy0xNDk1Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1L0NWRS0yMDE3LTE0OTUyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzU5ZWZjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1L0NWRS0yMDE3LTE0OTUyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSBmYzgzY2Q4MzI3MjVkMzk2ODAxMWYxMTg2MzdiOWY1ZDIxMmU4NzE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogT3ZpZGl1IFBhbmFpdCA8b3ZpZGl1LnBhbmFpdEB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAxMCBOb3YgMjAxNyAxNjo1MToyNSArMDIwMAotU3ViamVjdDogW1BBVENIXSBSZW1vdmVkIHJlZHVuZGFudCBVVmVjdG9yIGVudHJ5IGNsZWFuIHVwIGZ1bmN0aW9uIGNhbGwuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctMTQ5NTIKLQotU2lnbmVkLW9mZi1ieTogT3ZpZGl1IFBhbmFpdCA8b3ZpZGl1LnBhbmFpdEB3aW5kcml2ZXIuY29tPgotLS0tCi0gaTE4bi96b25lbWV0YS5jcHAgfCAxIC0KLSAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvaTE4bi96b25lbWV0YS5jcHAgYi9pMThuL3pvbmVtZXRhLmNwcAotaW5kZXggODRhOTY1Ny4uZTE2M2IwMCAxMDA2NDQKLS0tLSBhL2kxOG4vem9uZW1ldGEuY3BwCi0rKysgYi9pMThuL3pvbmVtZXRhLmNwcAotQEAgLTY5MCw3ICs2OTAsNiBAQCBab25lTWV0YTo6Y3JlYXRlTWV0YXpvbmVNYXBwaW5ncyhjb25zdCBVbmljb2RlU3RyaW5nICZ0emlkKSB7Ci0gICAgICAgICAgICAgICAgICAgICBtek1hcHBpbmdzID0gbmV3IFVWZWN0b3IoZGVsZXRlT2xzb25Ub01ldGFNYXBwaW5nRW50cnksIE5VTEwsIHN0YXR1cyk7Ci0gICAgICAgICAgICAgICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgbXpNYXBwaW5nczsKLS0gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVPbHNvblRvTWV0YU1hcHBpbmdFbnRyeShlbnRyeSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgdXBydl9mcmVlKGVudHJ5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgIH0KLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1L2ZpeC1pbnN0YWxsLW1hbngucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS9maXgtaW5zdGFsbC1tYW54LnBhdGNoCmluZGV4IGVjNjNmNTAuLjgxODZmYjQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1L2ZpeC1pbnN0YWxsLW1hbngucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvZml4LWluc3RhbGwtbWFueC5wYXRjaApAQCAtMSwzICsxLDggQEAKK0Zyb20gMzA2M2E5MjExNjY5YmVlNjczODQwZWU4MWY4MWQzMDY5OWI5YjcwMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBGcmksIDkgT2N0IDIwMTUgMTc6NTA6NDEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzRdIGljdTogZml4IGluc3RhbGwgcmFjZQorCiBUaGUgZ2VuZXJpYyByZWN1cnNpdmUgdGFyZ2V0IGNhbGxzIHRhcmdldC1sb2NhbCBzbyBhbHNvIGFkZGluZyBpdCB0byB0aGUKIGRlcGVuZGVuY3kgbGlzdCByZXN1bHRzIGluIHJhY2VzIGR1ZSB0byBpbnN0YWxsLWxvY2FsIGJlaW5nIGV4ZWN1dGVkIHR3aWNlIGluCiBwYXJhbGxlbC4gIEZvciBleGFtcGxlLCBpbnN0YWxsLW1hbnggY2FuIGZhaWwgaWYgdGhlIHR3byBpbnN0YWxsIHByb2Nlc3NlcyByYWNlCkBAIC05LDEyICsxNCwxNSBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogCistLS0KKyBzb3VyY2UvTWFrZWZpbGUuaW4gfCA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IDlkYjZjNTIuLjM0NDFhZmEgMTAwNjQ0CitkaWZmIC0tZ2l0IGEvc291cmNlL01ha2VmaWxlLmluIGIvc291cmNlL01ha2VmaWxlLmluCitpbmRleCBjMWRiMTViLi40OTQ4ZGViIDEwMDY0NAogLS0tIGEvTWFrZWZpbGUuaW4KICsrKyBiL01ha2VmaWxlLmluCi1AQCAtNzEsNyArNzEsNyBAQCBFWFRSQV9EQVRBID0KK0BAIC03Myw3ICs3Myw3IEBAIEVYVFJBX0RBVEEgPQogIAogICMjIExpc3Qgb2YgcGhvbnkgdGFyZ2V0cwogIC5QSE9OWSA6IGFsbCBhbGwtbG9jYWwgYWxsLXJlY3Vyc2l2ZSBpbnN0YWxsIGluc3RhbGwtbG9jYWwgaW5zdGFsbC11ZGF0YSBpbnN0YWxsLXVkYXRhLWZpbGVzIGluc3RhbGwtdWRhdGEtZGxscwkJXApAQCAtMjMsNyArMzEsNyBAQAogIGRpc3RjbGVhbi1sb2NhbCBkaXN0Y2xlYW4tcmVjdXJzaXZlIGRvYyBkaXN0IGRpc3QtbG9jYWwgZGlzdC1yZWN1cnNpdmUJXAogIGNoZWNrIGNoZWNrLWxvY2FsIGNoZWNrLXJlY3Vyc2l2ZSBjbGVhbi1yZWN1cnNpdmUtd2l0aC10d2lzdCBpbnN0YWxsLWljdSBcCiAgZG9jIGluc3RhbGwtZG9jIHRlc3RzIGljdTRqLWRhdGEgaWN1NGotZGF0YS1pbnN0YWxsIHVwZGF0ZS13aW5kb3dzLW1ha2VmaWxlcyB4Y2hlY2stbG9jYWwgeGNoZWNrLXJlY3Vyc2l2ZSB4cGVyZiB4Y2hlY2sgeHBlcmYtcmVjdXJzaXZlIFwKLUBAIC04MiwxMCArODIsMTAgQEAgY2hlY2stZXhoYXVzdGl2ZSBjaGVjay1leGhhdXN0aXZlLWxvY2FsIGNoZWNrLWV4aGF1c3RpdmUtcmVjdXJzaXZlIHJlbGVhc2VEaXN0CitAQCAtODQsOSArODQsOSBAQCBjaGVjay1leGhhdXN0aXZlIGNoZWNrLWV4aGF1c3RpdmUtbG9jYWwgY2hlY2stZXhoYXVzdGl2ZS1yZWN1cnNpdmUgcmVsZWFzZURpc3QKICAKICAjIyBMaXN0IG9mIHN0YW5kYXJkIHRhcmdldHMKICBhbGw6IGFsbC1sb2NhbCBhbGwtcmVjdXJzaXZlCkBAIC0zMSwxMyArMzksMTEgQEAKICtpbnN0YWxsOiBpbnN0YWxsLXJlY3Vyc2l2ZQogIGNsZWFuOiBjbGVhbi1yZWN1cnNpdmUtd2l0aC10d2lzdCBjbGVhbi1sb2NhbAogLWRpc3RjbGVhbiA6IGRpc3RjbGVhbi1yZWN1cnNpdmUgZGlzdGNsZWFuLWxvY2FsCi0tZGlzdDogZGlzdC1yZWN1cnNpdmUgZGlzdC1sb2NhbAogK2Rpc3RjbGVhbiA6IGRpc3RjbGVhbi1yZWN1cnNpdmUKLStkaXN0OiBkaXN0LXJlY3Vyc2l2ZQorIGRpc3Q6IGRpc3QtcmVjdXJzaXZlCiAgY2hlY2s6IGFsbCBjaGVjay1yZWN1cnNpdmUKICBjaGVjay1yZWN1cnNpdmU6IGFsbAotIHhjaGVjazogYWxsIHhjaGVjay1yZWN1cnNpdmUKLUBAIC0zNTIsNyArMzUyLDcgQEAgY29uZmlnLnN0YXR1czogJChzcmNkaXIpL2NvbmZpZ3VyZSAkKHNyY2RpcikvY29tbW9uL3VuaWNvZGUvdXZlcm51bS5oCitAQCAtMzUwLDcgKzM1MCw3IEBAIGNvbmZpZy5zdGF0dXM6ICQoc3JjZGlyKS9jb25maWd1cmUgJChzcmNkaXIpL2NvbW1vbi91bmljb2RlL3V2ZXJudW0uaAogIAogIGluc3RhbGwtbWFueDogJChNQU5YX0ZJTEVTKQogIAkkKE1LSU5TVEFMTERJUlMpICQoREVTVERJUikkKG1hbmRpcikvbWFuJChTRUNUSU9OKQpAQCAtNDYsMyArNTIsNiBAQAogIAogIGNvbmZpZy8lLiQoU0VDVElPTik6ICQoc3JjZGlyKS9jb25maWcvJS4kKFNFQ1RJT04pLmluCiAgCWNkICQodG9wX2J1aWxkZGlyKSBcCistLSAKKzIuMTQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV81OS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3VfNTkuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWZiMWJlOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV81OS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotcmVxdWlyZSBpY3UuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0xJQ0VOU0U7bWQ1PWZlOWUxZjJjNTAwNDY2ZDhmMThkZjJjZDA2OGU0Yjc0IgotCi1kZWYgaWN1X2Rvd25sb2FkX3ZlcnNpb24oZCk6Ci0gICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKLSAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KLQotSUNVX1BWID0gIiR7QGljdV9kb3dubG9hZF92ZXJzaW9uKGQpfSIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjA0ODYvCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotCi1CQVNFX1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmljdS1wcm9qZWN0Lm9yZy9maWxlcy9pY3U0Yy8ke1BWfS9pY3U0Yy0ke0lDVV9QVn0tc3JjLnRneiIKLVNSQ19VUkkgPSAiJHtCQVNFX1NSQ19VUkl9IFwKLSAgICAgICAgICAgZmlsZTovL2ljdS1wa2dkYXRhLWxhcmdlLWNtZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtaW5zdGFsbC1tYW54LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaTE4bi1Ecm9wLWluY2x1ZGUteGxvY2FsZS5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0OTUyLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLUxERkxBR1NJQ1VEVC1mb3ItTGludXgucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1NDkyM2ZhOWZhYjViMmI4M2YyMzVmYjcyNTIzZGUzNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3MTMyZmRhZjkzNzk0MjlkMDA0MDA1MjE3ZjEwZTAwYjdkMjMxOWQwZmVhMjJiZGZkZGVmODk5MWM0NWI3NWZlIgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykvIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5pY3UtcHJvamVjdC5vcmcvZmlsZXMvaWN1NGMvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3VfNjAuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzYwLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg1YTkyYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzYwLjIuYmIKQEAgLTAsMCArMSwyOSBAQAorcmVxdWlyZSBpY3UuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0xJQ0VOU0U7bWQ1PTY3NWYyZDA2OTQzNGQ4YTFlNGU2YjBkY2Y0Mzc5MjI2IgorCitkZWYgaWN1X2Rvd25sb2FkX3ZlcnNpb24oZCk6CisgICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKKyAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KKworSUNVX1BWID0gIiR7QGljdV9kb3dubG9hZF92ZXJzaW9uKGQpfSIKKworIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjA0ODYvCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorCitCQVNFX1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmljdS1wcm9qZWN0Lm9yZy9maWxlcy9pY3U0Yy8ke1BWfS9pY3U0Yy0ke0lDVV9QVn0tc3JjLnRneiIKK1NSQ19VUkkgPSAiJHtCQVNFX1NSQ19VUkl9IFwKKyAgICAgICAgICAgZmlsZTovL2ljdS1wa2dkYXRhLWxhcmdlLWNtZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtaW5zdGFsbC1tYW54LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaTE4bi1Ecm9wLWluY2x1ZGUteGxvY2FsZS5oLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLUxERkxBR1NJQ1VEVC1mb3ItTGludXgucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0Mzg2MWIxMjc3NDRiM2MwYjlkN2YzODZmNGI5ZmE0MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmMDczZWE4ZjM1YjkyNmQ3MGJiMzNlNjU3NzUwOGFhNjQyYThiMzE2YTgwM2YxMWJlMjBhZjM4NDgxMWRiNDE4IgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykvIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5pY3UtcHJvamVjdC5vcmcvZmlsZXMvaWN1NGMvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2lzby1jb2Rlcy9pc28tY29kZXNfMy43NS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pc28tY29kZXMvaXNvLWNvZGVzXzMuNzUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmM2Q1M2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2lzby1jb2Rlcy9pc28tY29kZXNfMy43NS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAiSVNPIGxhbmd1YWdlLCB0ZXJyaXRvcnksIGN1cnJlbmN5LCBzY3JpcHQgY29kZXMgYW5kIHRoZWlyIHRyYW5zbGF0aW9ucyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLQotU1JDX1VSSSA9ICJodHRwczovL3BrZy1pc29jb2Rlcy5hbGlvdGguZGViaWFuLm9yZy9kb3dubG9hZHMvaXNvLWNvZGVzLSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5YmExNzNiNjlkNDM2MDAwMzQxNGYyMzgzNzU5N2E5MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3MzM1ZTAzMDFjZDc3Y2Q0ZWUwMTliZjVkMzcwOWFhNzkzMDlkNDlkZDY2ZTg1YmEzNTBjYWY2N2UwMGIwMGNkIgotCi0jIGluaGVyaXQgZ2V0dGV4dCBjYW5ub3QgYmUgdXNlZCwgYmVjYXVzZSBpdCBhZGRzIGdldHRleHQtbmF0aXZlIHRvIEJBU0VERVBFTkRTIHdoaWNoCi0jIGFyZSBpbmhpYml0ZWQgYnkgYWxsYXJjaAotREVQRU5EUyA9ICJnZXR0ZXh0LW5hdGl2ZSIKLQotaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scwotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94bWwvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2lzby1jb2Rlcy9pc28tY29kZXNfMy43Ny5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pc28tY29kZXMvaXNvLWNvZGVzXzMuNzcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ2MTNhYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pc28tY29kZXMvaXNvLWNvZGVzXzMuNzcuYmIKQEAgLTAsMCArMSwxNSBAQAorU1VNTUFSWSA9ICJJU08gbGFuZ3VhZ2UsIHRlcnJpdG9yeSwgY3VycmVuY3ksIHNjcmlwdCBjb2RlcyBhbmQgdGhlaXIgdHJhbnNsYXRpb25zIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitTUkNfVVJJID0gImh0dHBzOi8vcGtnLWlzb2NvZGVzLmFsaW90aC5kZWJpYW4ub3JnL2Rvd25sb2Fkcy9pc28tY29kZXMtJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjlkMGQwNmNmYjQ2MzQ0MjhiMzAwODQ1ZWRjZDcxNDBhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIxY2Q3M2E0YzZmOTVkOTQ3NGViZmNmZmQ0ZTA2NTIyMzg1NzcyMGYyNDg1OGU1NjRmNDQwOWIxOWY3ZjBkOTAiCisKKyMgaW5oZXJpdCBnZXR0ZXh0IGNhbm5vdCBiZSB1c2VkLCBiZWNhdXNlIGl0IGFkZHMgZ2V0dGV4dC1uYXRpdmUgdG8gQkFTRURFUEVORFMgd2hpY2gKKyMgYXJlIGluaGliaXRlZCBieSBhbGxhcmNoCitERVBFTkRTID0gImdldHRleHQtbmF0aXZlIgorCitpbmhlcml0IGFsbGFyY2ggYXV0b3Rvb2xzCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3htbC8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXNzdWFuL2xpYmFzc3Vhbi9saWJhc3N1YW4tYWRkLXBrZ2NvbmZpZy1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmFzc3Vhbi9saWJhc3N1YW4vbGliYXNzdWFuLWFkZC1wa2djb25maWctc3VwcG9ydC5wYXRjaAppbmRleCBiNmNjZGRhLi41MjViMDc2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXNzdWFuL2xpYmFzc3Vhbi9saWJhc3N1YW4tYWRkLXBrZ2NvbmZpZy1zdXBwb3J0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhc3N1YW4vbGliYXNzdWFuL2xpYmFzc3Vhbi1hZGQtcGtnY29uZmlnLXN1cHBvcnQucGF0Y2gKQEAgLTYsMzIgKzYsMTUgQEAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIFNpZ25lZC1vZmYtYnk6IENvbnN0YW50aW4gTXVzY2EgPGNvbnN0YW50aW54Lm11c2NhQGludGVsLmNvbT4KIAotSW5kZXg6IGxpYmFzc3Vhbi0yLjEuMi9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYmFzc3Vhbi0yLjEuMi5vcmlnL01ha2VmaWxlLmFtCi0rKysgbGliYXNzdWFuLTIuMS4yL01ha2VmaWxlLmFtCi1AQCAtMjQsMTAgKzI0LDEzIEBAIEFVVE9NQUtFX09QVElPTlMgPSBkaXN0LWJ6aXAyIG5vLWRpc3QtZ3oKLSAjIChBIHN1aXRhYmxlIGdpdGxvZy10by1jaGFuZ2Vsb2cgc2NyaXB0IGNhbiBiZSBmb3VuZCBpbiBHbnVQRyBtYXN0ZXIuKQotIEdJVExPR19UT19DSEFOR0VMT0c9Z2l0bG9nLXRvLWNoYW5nZWxvZwotIAotK3BrZ2NvbmZpZ2RpciA9ICQobGliZGlyKS9wa2djb25maWcKLStwa2djb25maWdfREFUQSA9IGxpYmFzc3Vhbi5wYwotKwotIEVYVFJBX0RJU1QgPSBhdXRvZ2VuLnNoIGF1dG9nZW4ucmMgUkVBRE1FLkdJVCAgICAgICAgIAkgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICBDaGFuZ2VMb2ctMjAxMSBkb2MvQ2hhbmdlTG9nLTIwMTEgc3JjL0NoYW5nZUxvZy0yMDExIAlcCi0gICAgICAgICAgICAgIHRlc3RzL0NoYW5nZUxvZy0yMDExIGNvbnRyaWIvQ2hhbmdlTG9nLTIwMTEgICAgIAkJXAotLSAgICAgICAgICAgICBidWlsZC1hdXgvZ2l0LWxvZy1mb290ZXIgYnVpbGQtYXV4L2dpdC1sb2ctZml4Ci0rICAgICAgICAgICAgIGJ1aWxkLWF1eC9naXQtbG9nLWZvb3RlciBidWlsZC1hdXgvZ2l0LWxvZy1maXggbGliYXNzdWFuLnBjLmluCi0gCi0gU1VCRElSUyA9IG00IHNyYyBkb2MgdGVzdHMKLSAKLUluZGV4OiBsaWJhc3N1YW4tMi4xLjIvbGliYXNzdWFuLnBjLmluCitmb3J3YXJkIHBvcnRlZCB0byAyLjQuNAorU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+CisKK0luZGV4OiBsaWJhc3N1YW4tMi40LjQvbGliYXNzdWFuLnBjLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCi0rKysgbGliYXNzdWFuLTIuMS4yL2xpYmFzc3Vhbi5wYy5pbgotQEAgLTAsMCArMSwxNCBAQAotK3ByZWZpeD1AcHJlZml4QAotK2V4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKysrKyBsaWJhc3N1YW4tMi40LjQvbGliYXNzdWFuLnBjLmluCitAQCAtMCwwICsxLDEzIEBACisrcHJlZml4PUBleGVjX3ByZWZpeEAKICtsaWJkaXI9QGxpYmRpckAKICtpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAogK2FwaV92ZXJzaW9uPUBMSUJBU1NVQU5fQ09ORklHX0FQSV9WRVJTSU9OQApAQCAtNDQsMjQgKzI3LDQyIEBACiArTGliczogLUwke2xpYmRpcn0gLWxhc3N1YW4KICtMaWJzLnByaXZhdGU6IC1sZ3BnLWVycm9yCiArQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0KLUluZGV4OiBsaWJhc3N1YW4tMi4xLjIvY29uZmlndXJlLmFjCitJbmRleDogbGliYXNzdWFuLTIuNC40L01ha2VmaWxlLmFtCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliYXNzdWFuLTIuMS4yLm9yaWcvY29uZmlndXJlLmFjCi0rKysgbGliYXNzdWFuLTIuMS4yL2NvbmZpZ3VyZS5hYwotQEAgLTQzOSw3ICs0MzksNyBAQCBBQ19DT05GSUdfRklMRVMoW2RvYy9NYWtlZmlsZV0pCistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC0yNSwxMCArMjUsMTMgQEAgRElTVENIRUNLX0NPTkZJR1VSRV9GTEFHUyA9IC0tZW5hYmxlLWRvYworICMgKEEgc3VpdGFibGUgZ2l0bG9nLXRvLWNoYW5nZWxvZyBzY3JpcHQgY2FuIGJlIGZvdW5kIGluIEdudVBHIG1hc3Rlci4pCisgR0lUTE9HX1RPX0NIQU5HRUxPRz1naXRsb2ctdG8tY2hhbmdlbG9nCisgCisrcGtnY29uZmlnZGlyID0gJChsaWJkaXIpL3BrZ2NvbmZpZworK3BrZ2NvbmZpZ19EQVRBID0gbGliYXNzdWFuLnBjCisrCisgRVhUUkFfRElTVCA9IGF1dG9nZW4uc2ggYXV0b2dlbi5yYyBSRUFETUUuR0lUIFZFUlNJT04gICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICBDaGFuZ2VMb2ctMjAxMSBkb2MvQ2hhbmdlTG9nLTIwMTEgc3JjL0NoYW5nZUxvZy0yMDExIAlcCisgICAgICAgICAgICAgIHRlc3RzL0NoYW5nZUxvZy0yMDExIGNvbnRyaWIvQ2hhbmdlTG9nLTIwMTEgICAgIAkJXAorLSAgICAgICAgICAgICBidWlsZC1hdXgvZ2l0LWxvZy1mb290ZXIgYnVpbGQtYXV4L2dpdC1sb2ctZml4CisrICAgICAgICAgICAgIGJ1aWxkLWF1eC9naXQtbG9nLWZvb3RlciBidWlsZC1hdXgvZ2l0LWxvZy1maXggbGliYXNzdWFuLnBjLmluCisgCisgaWYgQlVJTERfRE9DCisgZG9jID0gZG9jCitJbmRleDogMi40LjQtcjAvbGliYXNzdWFuLTIuNC40L2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC00ODUsNiArNDg1LDcgQEAgQUNfQ09ORklHX0ZJTEVTKFtkb2MvTWFrZWZpbGVdKQogIEFDX0NPTkZJR19GSUxFUyhbdGVzdHMvTWFrZWZpbGVdKQogIEFDX0NPTkZJR19GSUxFUyhbc3JjL2xpYmFzc3Vhbi1jb25maWddLCBbY2htb2QgK3ggc3JjL2xpYmFzc3Vhbi1jb25maWddKQogIEFDX0NPTkZJR19GSUxFUyhbc3JjL3ZlcnNpb25pbmZvLnJjXSkKLS0KICtBQ19DT05GSUdfRklMRVMoW2xpYmFzc3Vhbi5wY10pCisgCiAgQUNfT1VUUFVUCiAgCi0gZWNobyAiCi1JbmRleDogbGliYXNzdWFuLTIuMS4yL3NyYy9saWJhc3N1YW4ubTQKK0luZGV4OiBsaWJhc3N1YW4tMi40LjQvc3JjL2xpYmFzc3Vhbi5tNAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYmFzc3Vhbi0yLjEuMi5vcmlnL3NyYy9saWJhc3N1YW4ubTQKLSsrKyBsaWJhc3N1YW4tMi4xLjIvc3JjL2xpYmFzc3Vhbi5tNAotQEAgLTE1LDE4ICsxNSw2IEBAIGRubCBSZXR1cm5zIG9rIHNldCB0byB5ZXMgb3Igbm8uCistLS0gYS9zcmMvbGliYXNzdWFuLm00CisrKysgYi9zcmMvbGliYXNzdWFuLm00CitAQCAtMTYsMTggKzE2LDYgQEAgZG5sIFJldHVybnMgb2sgc2V0IHRvIHllcyBvciBuby4KICBkbmwKICBBQ19ERUZVTihbX0FNX1BBVEhfTElCQVNTVUFOX0NPTU1PTl0sCiAgWyBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pCkBAIC04MCw3ICs4MSw3IEBACiAgCiAgICB0bXA9aWZlbHNlKFskMV0sICwxOjAuOS4yLCQxKQogICAgaWYgZWNobyAiJHRtcCIgfCBncmVwICc6JyA+L2Rldi9udWxsIDI+L2Rldi9udWxsIDsgdGhlbgotQEAgLTM3LDUxICsyNSwxMiBAQCBBQ19ERUZVTihbX0FNX1BBVEhfTElCQVNTVUFOX0NPTU1PTl0sCitAQCAtMzgsNTEgKzI2LDEyIEBAIEFDX0RFRlVOKFtfQU1fUEFUSF9MSUJBU1NVQU5fQ09NTU9OXSwKICAgICAgbWluX2xpYmFzc3Vhbl92ZXJzaW9uPSIkdG1wIgogICAgZmkKICAKQEAgLTEwNSw3ICsxMDYsNyBAQAogLQogLSAgICBpZiB0ZXN0ICIkbWFqb3IiIC1ndCAiJHJlcV9tYWpvciI7IHRoZW4KIC0gICAgICAgIG9rPXllcwotLSAgICBlbHNlIAorLSAgICBlbHNlCiAtICAgICAgICBpZiB0ZXN0ICIkbWFqb3IiIC1lcSAiJHJlcV9tYWpvciI7IHRoZW4KIC0gICAgICAgICAgICBpZiB0ZXN0ICIkbWlub3IiIC1ndCAiJHJlcV9taW5vciI7IHRoZW4KIC0gICAgICAgICAgICAgICBvaz15ZXMKQEAgLTEzNCw3ICsxMzUsNyBAQAogICAgICAgIGlmIHRlc3QgIiR0bXAiIC1ndCAwIDsgdGhlbgogICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtMSUJBU1NVQU4gQVBJIHZlcnNpb25dKQogICAgICAgICAgaWYgdGVzdCAiJHJlcV9saWJhc3N1YW5fYXBpIiAtZXEgIiR0bXAiIDsgdGhlbgotQEAgLTk2LDcgKzQ1LDcgQEAgQUNfREVGVU4oW19BTV9QQVRIX0xJQkFTU1VBTl9DT01NT05dLAorQEAgLTk3LDcgKzQ2LDcgQEAgQUNfREVGVU4oW19BTV9QQVRIX0xJQkFTU1VBTl9DT01NT05dLAogIAogICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KICAgICAgaWYgdGVzdCB4IiRob3N0IiAhPSB4IDsgdGhlbgpAQCAtMTQzLDcgKzE0NCw3IEBACiAgICAgICAgaWYgdGVzdCB4IiRsaWJhc3N1YW5fY29uZmlnX2hvc3QiICE9IHhub25lIDsgdGhlbgogICAgICAgICAgaWYgdGVzdCB4IiRsaWJhc3N1YW5fY29uZmlnX2hvc3QiICE9IHgiJGhvc3QiIDsgdGhlbgogICAgQUNfTVNHX1dBUk4oW1sKLUBAIC0xMzcsMTIgKzg2LDggQEAgZG5sCitAQCAtMTM4LDEyICs4Nyw4IEBAIGRubAogIEFDX0RFRlVOKFtBTV9QQVRIX0xJQkFTU1VBTl0sCiAgWyBfQU1fUEFUSF9MSUJBU1NVQU5fQ09NTU9OKCQxKQogICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhc3N1YW4vbGliYXNzdWFuXzIuNC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmFzc3Vhbi9saWJhc3N1YW5fMi40LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNmMyNzkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmFzc3Vhbi9saWJhc3N1YW5fMi40LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIklQQyBsaWJyYXJ5IHVzZWQgYnkgR251UEcgYW5kIEdQR01FIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvcmVsYXRlZF9zb2Z0d2FyZS9saWJhc3N1YW4vIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZzEwY29kZS5jb20vZ251cGcvaW5kZXgiCi0KLUxJQ0VOU0UgPSAiR1BMdjMrICYgTEdQTHYyLjErIgotTElDRU5TRV8ke1BOfSA9ICJMR1BMdjIuMSsiCi1MSUNFTlNFXyR7UE59LWRvYyA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMjdkZWZlMWU5NmMyZTFlY2Q0ZTBjOWJlODk2Nzk0OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2Fzc3Vhbi5jO2VuZGxpbmU9MjA7bWQ1PTBmNDY1NTQ0MTgzNDA1MDU1ZWMxNzk4NjlmYzViNWJhIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9hc3N1YW4tZGVmcy5oO2VuZGxpbmU9MjA7bWQ1PTIwY2Q1NTUzNTI2MGNhMTc3OWVkYWU1YzdiODBiMjFlIgotCi1ERVBFTkRTID0gImxpYmdwZy1lcnJvciIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCi1TUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9saWJhc3N1YW4vbGliYXNzdWFuLSR7UFZ9LnRhci5iejIgXAotCSAgIGZpbGU6Ly9saWJhc3N1YW4tYWRkLXBrZ2NvbmZpZy1zdXBwb3J0LnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOGUwMWE3YzcyZDNlNWQxNTQ0ODEyMzA2NjhlNmViNWEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjI4NDNhM2JkYjI1NmY1OWJlNDk4NDJhYmYyNGRhNzY3MDAzNTQyOTNhMDY2ZDgyYWRlODEzNGJiNWFhMmI3MSIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9saWJhc3N1YW4tY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhvc2UgaW4gYWNsb2NhbC1jb3B5Ci0Jcm0gLWYgJHtTfS9tNC8qLm00Ci19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhc3N1YW4vbGliYXNzdWFuXzIuNS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmFzc3Vhbi9saWJhc3N1YW5fMi41LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRkNWYxNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhc3N1YW4vbGliYXNzdWFuXzIuNS4xLmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAiSVBDIGxpYnJhcnkgdXNlZCBieSBHbnVQRyBhbmQgR1BHTUUiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9yZWxhdGVkX3NvZnR3YXJlL2xpYmFzc3Vhbi8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKKworTElDRU5TRSA9ICJHUEx2MysgJiBMR1BMdjIuMSsiCitMSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyIKK0xJQ0VOU0VfJHtQTn0tZG9jID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYyN2RlZmUxZTk2YzJlMWVjZDRlMGM5YmU4OTY3OTQ5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvYXNzdWFuLmM7ZW5kbGluZT0yMDttZDU9YWI5MjE0M2E1YTJhZGFiZDA2ZDc5OTRkMTQ2N2VhNWNcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvYXNzdWFuLWRlZnMuaDtlbmRsaW5lPTIwO21kNT0xNWQ5NTBjODNlODI5NzhlMzViMzVlNzkwZDdlNGQzOSIKKworREVQRU5EUyA9ICJsaWJncGctZXJyb3IiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgorU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vbGliYXNzdWFuL2xpYmFzc3Vhbi0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2xpYmFzc3Vhbi1hZGQtcGtnY29uZmlnLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjQzNTRiN2FlMjk2ODk0ZjIzMmFkYTIyNmEwNjJkN2Q3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ3Zjk2YzM3YjRmMmFhYzI4OWYwYmMxYmFjZmE4YmQ4YjRiMjA5YTQ4OGQzZDE1ZTIyMjljYjZjYzliMjY0NDkiCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vbGliYXNzdWFuLWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIEVsc2UgdGhlc2UgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRob3NlIGluIGFjbG9jYWwtY29weQorCXJtIC1mICR7U30vbTQvKi5tNAorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzLzAwMDEtQWRkLWluaXRpYWwtbmlvczItYXJjaGl0ZWN0dXJlLXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzLzAwMDEtQWRkLWluaXRpYWwtbmlvczItYXJjaGl0ZWN0dXJlLXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwNTEwNzUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmF0b21pYy1vcHMvbGliYXRvbWljLW9wcy8wMDAxLUFkZC1pbml0aWFsLW5pb3MyLWFyY2hpdGVjdHVyZS1zdXBwb3J0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotRnJvbSA0YjAwNWVlNTY4OTgzMDllOGFmYmE5YjNjNDhjZjk0ZjBmNWY3OGU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+Ci1EYXRlOiBUdWUsIDE1IE1hciAyMDE2IDEwOjA5OjI2ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBpbml0aWFsIG5pb3MyIGFyY2hpdGVjdHVyZSBzdXBwb3J0Ci0KLSogc3JjL01ha2VmaWxlLmFtIChub2Jhc2VfcHJpdmF0ZV9IRUFERVJTKTogQWRkIG5pb3MyLmguCi0qIHNyYy9hdG9taWNfb3BzLmg6IEluY2x1ZGUgbmlvczIuaCBpZiBfX25pb3MyX18uCi0qIHNyYy9hdG9taWNfb3BzL3N5c2RlcHMvZ2NjL25pb3MyLmg6IE5ldyBmaWxlLgotCi1TaWduZWQtb2ZmLWJ5OiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWyBodHRwczovL2dpdGh1Yi5jb20vaXZtYWkvbGliYXRvbWljX29wcy5naXQgNGIwMDVlZTU2ODk4MzA5ZThhZmJhOWIzYzQ4Y2Y5NGYwZjVmNzhlNCBdCi0tLS0KLSBzcmMvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgIHwgIDEgKwotIHNyYy9hdG9taWNfb3BzLmggICAgICAgICAgICAgICAgICAgfCAgMyArKysKLSBzcmMvYXRvbWljX29wcy9zeXNkZXBzL2djYy9uaW9zMi5oIHwgMTcgKysrKysrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2F0b21pY19vcHMvc3lzZGVwcy9nY2MvbmlvczIuaAotCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCBmYzA5YjI3Li5kNDYzNDI3IDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC03OSw2ICs3OSw3IEBAIG5vYmFzZV9wcml2YXRlX0hFQURFUlMgPSBhdG9taWNfb3BzL2FvX3ZlcnNpb24uaCBcCi0gICAgICAgICAgIGF0b21pY19vcHMvc3lzZGVwcy9nY2MvaWE2NC5oIFwKLSAgICAgICAgICAgYXRvbWljX29wcy9zeXNkZXBzL2djYy9tNjhrLmggXAotICAgICAgICAgICBhdG9taWNfb3BzL3N5c2RlcHMvZ2NjL21pcHMuaCBcCi0rICAgICAgICAgIGF0b21pY19vcHMvc3lzZGVwcy9nY2MvbmlvczIuaCBcCi0gICAgICAgICAgIGF0b21pY19vcHMvc3lzZGVwcy9nY2MvcG93ZXJwYy5oIFwKLSAgICAgICAgICAgYXRvbWljX29wcy9zeXNkZXBzL2djYy9zMzkwLmggXAotICAgICAgICAgICBhdG9taWNfb3BzL3N5c2RlcHMvZ2NjL3NoLmggXAotZGlmZiAtLWdpdCBhL3NyYy9hdG9taWNfb3BzLmggYi9zcmMvYXRvbWljX29wcy5oCi1pbmRleCAzM2ZlMDBlLi5lYzAyYmE0IDEwMDY0NAotLS0tIGEvc3JjL2F0b21pY19vcHMuaAotKysrIGIvc3JjL2F0b21pY19vcHMuaAotQEAgLTI2Miw2ICsyNjIsOSBAQAotICMgaWYgZGVmaW5lZChfX202OGtfXykKLSAjICAgaW5jbHVkZSAiYXRvbWljX29wcy9zeXNkZXBzL2djYy9tNjhrLmgiCi0gIyBlbmRpZiAvKiBfX202OGtfXyAqLwotKyMgaWYgZGVmaW5lZChfX25pb3MyX18pCi0rIyAgIGluY2x1ZGUgImF0b21pY19vcHMvc3lzZGVwcy9nY2MvbmlvczIuaCIKLSsjIGVuZGlmIC8qIF9fbmlvczJfXyAqLwotICMgaWYgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkKF9fUFBDX18pIFwKLSAgICAgIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykgfHwgZGVmaW5lZChfX3BwYzY0X18pCi0gIyAgIGluY2x1ZGUgImF0b21pY19vcHMvc3lzZGVwcy9nY2MvcG93ZXJwYy5oIgotZGlmZiAtLWdpdCBhL3NyYy9hdG9taWNfb3BzL3N5c2RlcHMvZ2NjL25pb3MyLmggYi9zcmMvYXRvbWljX29wcy9zeXNkZXBzL2djYy9uaW9zMi5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZjQwMmNiYgotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL2F0b21pY19vcHMvc3lzZGVwcy9nY2MvbmlvczIuaAotQEAgLTAsMCArMSwxNyBAQAotKy8qCi0rICogQ29weXJpZ2h0IChDKSAyMDE2IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgotKyAqCi0rICogVEhJUyBNQVRFUklBTCBJUyBQUk9WSURFRCBBUyBJUywgV0lUSCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZIEVYUFJFU1NFRAotKyAqIE9SIElNUExJRUQuIEFOWSBVU0UgSVMgQVQgWU9VUiBPV04gUklTSy4KLSsgKgotKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQgdG8gdXNlIG9yIGNvcHkgdGhpcyBwcm9ncmFtCi0rICogZm9yIGFueSBwdXJwb3NlLCBwcm92aWRlZCB0aGUgYWJvdmUgbm90aWNlcyBhcmUgcmV0YWluZWQgb24gYWxsIGNvcGllcy4KLSsgKiBQZXJtaXNzaW9uIHRvIG1vZGlmeSB0aGUgY29kZSBhbmQgdG8gZGlzdHJpYnV0ZSBtb2RpZmllZCBjb2RlIGlzIGdyYW50ZWQsCi0rICogcHJvdmlkZWQgdGhlIGFib3ZlIG5vdGljZXMgYXJlIHJldGFpbmVkLCBhbmQgYSBub3RpY2UgdGhhdCB0aGUgY29kZSB3YXMKLSsgKiBtb2RpZmllZCBpcyBpbmNsdWRlZCB3aXRoIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLgotKyAqLwotKwotKyNpbmNsdWRlICIuLi90ZXN0X2FuZF9zZXRfdF9pc19hb190LmgiCi0rI2luY2x1ZGUgImdlbmVyaWMuaCIKLSsKLSsjZGVmaW5lIEFPX1RfSVNfSU5UCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy42LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzXzcuNi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDYzZDg2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy42LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TVU1NQVJZID0gIkEgbGlicmFyeSBmb3IgYXRvbWljIGludGVnZXIgb3BlcmF0aW9ucyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pdm1haS9saWJhdG9taWNfb3BzLyIKLVNFQ1RJT04gPSAib3B0aW9uYWwiCi1QUk9WSURFUyArPSAibGliYXRvbWljcy1vcHMiCi1MSUNFTlNFID0gIkdQTHYyICYgTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL0xJQ0VOU0lORy50eHQ7bWQ1PWUwMGRkNWM4YWMwM2ExNGM1YWU1MjI1YTQ1MjVmYTJkIFwKLQkJICAgIgotUFYgLj0gIitnaXQke1NSQ1BWfSIKLQotU1JDUkVWID0gIjczYzYwYzVlZjFlZDM3MDExMTU0OWVlNWFhYjZkNDAyMGJhNzBlZDQiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaXZtYWkvbGliYXRvbWljX29wcyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy42LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzXzcuNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3YjQxNjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzXzcuNi4yLmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciBhdG9taWMgaW50ZWdlciBvcGVyYXRpb25zIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2l2bWFpL2xpYmF0b21pY19vcHMvIgorU0VDVElPTiA9ICJvcHRpb25hbCIKK1BST1ZJREVTICs9ICJsaWJhdG9taWNzLW9wcyIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvTElDRU5TSU5HLnR4dDttZDU9ZTAwZGQ1YzhhYzAzYTE0YzVhZTUyMjVhNDUyNWZhMmQgXAorCQkgICAiCitQViAuPSAiK2dpdCR7U1JDUFZ9IgorU1JDQlJBTkNIID89ICJyZWxlYXNlLTdfNiIKKworU1JDUkVWID0gIjVhZTRiNGFlZWEyYmFmMTM3NTJkMDdlMzAzOGM0N2Y3MGYwNmRjYWMiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaXZtYWkvbGliYXRvbWljX29wczticmFuY2g9JHtTUkNCUkFOQ0h9IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2QvMDAwMS1SZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2QvMDAwMS1SZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoCmluZGV4IGU5N2UzMGUuLjU0NjE3YjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkLzAwMDEtUmVwbGFjZS1fX0JFR0lOX0RFQ0xTLWFuZC1fX0VORF9ERUNMUy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZC8wMDAxLVJlcGxhY2UtX19CRUdJTl9ERUNMUy1hbmQtX19FTkRfREVDTFMucGF0Y2gKQEAgLTQsNiArNCw3IEBACiBTdWJqZWN0OiBbUEFUQ0ggMS8zXSBSZXBsYWNlIF9fQkVHSU5fREVDTFMgYW5kIF9fRU5EX0RFQ0xTCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CiAtLS0KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCkBAIC0xMywxNCArMTQsMTQgQEAKICBpbmNsdWRlL2JzZC9ubGlzdC5oICAgICAgICAgIHwgMTAgKysrKysrKystLQogIGluY2x1ZGUvYnNkL3JlYWRwYXNzcGhyYXNlLmggfCAxMCArKysrKysrKy0tCiAgaW5jbHVkZS9ic2Qvc3RkaW8uaCAgICAgICAgICB8IDEwICsrKysrKysrLS0KLSBpbmNsdWRlL2JzZC9zdGRsaWIuaCAgICAgICAgIHwgMTAgKysrKysrKystLQotIGluY2x1ZGUvYnNkL3N0cmluZy5oICAgICAgICAgfCAxMCArKysrKysrKy0tCisgaW5jbHVkZS9ic2Qvc3RkbGliLmggICAgICAgICB8IDEyICsrKysrKysrKy0tLQorIGluY2x1ZGUvYnNkL3N0cmluZy5oICAgICAgICAgfCAxMiArKysrKysrKystLS0KICBpbmNsdWRlL2JzZC9zdHJpbmdsaXN0LmggICAgIHwgMTAgKysrKysrKystLQogIGluY2x1ZGUvYnNkL3VuaXN0ZC5oICAgICAgICAgfCAxMCArKysrKysrKy0tCiAgaW5jbHVkZS9ic2QvdmlzLmggICAgICAgICAgICB8IDEwICsrKysrKysrLS0KICBpbmNsdWRlL2JzZC93Y2hhci5oICAgICAgICAgIHwgMTAgKysrKysrKystLQogIHNyYy9oYXNoL3NoYTUxMi5oICAgICAgICAgICAgfCAxMCArKysrKysrKy0tCi0gMTMgZmlsZXMgY2hhbmdlZCwgMTA0IGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQorIDEzIGZpbGVzIGNoYW5nZWQsIDEwNiBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL2Vyci5oIGIvaW5jbHVkZS9ic2QvZXJyLmgKIGluZGV4IDEyZmQwNTEuLjQzZGZjMzIgMTAwNjQ0CkBAIC01MCw3ICs1MSw3IEBACiAgCiAgI2VuZGlmCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2QvbGlidXRpbC5oIGIvaW5jbHVkZS9ic2QvbGlidXRpbC5oCi1pbmRleCBlYmI2MTYwLi4yOGI5MTlkIDEwMDY0NAoraW5kZXggNDViM2IxNS4uOWM5MzZlNSAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvYnNkL2xpYnV0aWwuaAogKysrIGIvaW5jbHVkZS9ic2QvbGlidXRpbC5oCiBAQCAtNTMsNyArNTMsMTAgQEAgc3RydWN0IHBpZGZoIHsKQEAgLTc4LDcgKzc5LDcgQEAKICAvKiBodW1hbml6ZV9udW1iZXIoMykgKi8KICAjZGVmaW5lIEhOX0RFQ0lNQUwgICAgICAgICAgICAgIDB4MDEKIGRpZmYgLS1naXQgYS9pbmNsdWRlL2JzZC9tZDUuaCBiL2luY2x1ZGUvYnNkL21kNS5oCi1pbmRleCA5YTc1ZmFkLi4zNTMxZmQ2IDEwMDY0NAoraW5kZXggNWYzYWU0Ni4uNWQ4MGU1YyAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvYnNkL21kNS5oCiArKysgYi9pbmNsdWRlL2JzZC9tZDUuaAogQEAgLTMwLDcgKzMwLDEwIEBAIHR5cGVkZWYgc3RydWN0IE1ENUNvbnRleHQgewpAQCAtMTAzLDE0ICsxMDQsMTQgQEAKICsjZW5kaWYKICsvKiBfX0VORF9ERUNMUyAqLwogIAotICNlbmRpZiAvKiBfTUQ1X0hfICovCisgI2VuZGlmIC8qIExJQkJTRF9NRDVfSCAqLwogZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL25saXN0LmggYi9pbmNsdWRlL2JzZC9ubGlzdC5oCi1pbmRleCAyNzMwMjM3Li4wMzg5YWI3IDEwMDY0NAoraW5kZXggY2IyOTdlOC4uZTYzYmJiZCAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvYnNkL25saXN0LmgKICsrKyBiL2luY2x1ZGUvYnNkL25saXN0LmgKLUBAIC0zMCw4ICszMCwxNCBAQAotICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLSAjaW5jbHVkZSA8YS5vdXQuaD4KK0BAIC04OCw4ICs4OCwxNCBAQCBzdHJ1Y3Qgbmxpc3QgeworIAorICNkZWZpbmUgTl9GT1JNQVQJIiUwOHgiCS8qIG5hbWVsaXN0IHZhbHVlIGZvcm1hdDsgWFhYICovCiAgCiAtX19CRUdJTl9ERUNMUwogKy8qIF9fQkVHSU5fREVDTFMgKi8KQEAgLTEyNiw3ICsxMjcsNyBAQAogIAogICNlbmRpZgogZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL3JlYWRwYXNzcGhyYXNlLmggYi9pbmNsdWRlL2JzZC9yZWFkcGFzc3BocmFzZS5oCi1pbmRleCBlMWRhY2MzLi43NmUwZDMzIDEwMDY0NAoraW5kZXggMTQ3NDRiOC4uZmE3MzM2MSAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvYnNkL3JlYWRwYXNzcGhyYXNlLmgKICsrKyBiL2luY2x1ZGUvYnNkL3JlYWRwYXNzcGhyYXNlLmgKIEBAIC0zNCw4ICszNCwxNCBAQApAQCAtMTQ1LDEzICsxNDYsMTMgQEAKICsjZW5kaWYKICsvKiBfX0VORF9ERUNMUyAqLwogIAotICNlbmRpZiAvKiAhX1JFQURQQVNTUEhSQVNFX0hfICovCisgI2VuZGlmIC8qICFMSUJCU0RfUkVBRFBBU1NQSFJBU0VfSCAqLwogZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL3N0ZGlvLmggYi9pbmNsdWRlL2JzZC9zdGRpby5oCi1pbmRleCA3Njk3NDI1Li5iNWIzZWZkIDEwMDY0NAoraW5kZXggNGI2OTk4My4uMTg2NDViNyAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvYnNkL3N0ZGlvLmgKICsrKyBiL2luY2x1ZGUvYnNkL3N0ZGlvLmgKLUBAIC00MSw3ICs0MSwxMCBAQAotICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KK0BAIC00NSw3ICs0NSwxMCBAQAorICNlbmRpZgogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICAKIC1fX0JFR0lOX0RFQ0xTCkBAIC0xNjIsNyArMTYzLDcgQEAKICBjb25zdCBjaGFyICpmbXRjaGVjayhjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CiAgCiAgLyogWFhYOiBUaGUgZnVuY3Rpb24gcmVxdWlyZXMgY29vcGVyYXRpb24gZnJvbSB0aGUgc3lzdGVtIGxpYmMgdG8gc3RvcmUgdGhlCi1AQCAtNjksNyArNzIsMTAgQEAgRklMRSAqZnVub3Blbihjb25zdCB2b2lkICpjb29raWUsCitAQCAtNzMsNyArNzYsMTAgQEAgRklMRSAqZnVub3Blbihjb25zdCB2b2lkICpjb29raWUsCiAgI2RlZmluZSBmd29wZW4oY29va2llLCBmbikgZnVub3Blbihjb29raWUsIE5VTEwsIGZuLCBOVUxMLCBOVUxMKQogIAogIGludCBmcHVyZ2UoRklMRSAqZnApOwpAQCAtMTc1LDcgKzE3Niw3IEBACiAgI2VuZGlmCiAgI2VuZGlmCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2Qvc3RkbGliLmggYi9pbmNsdWRlL2JzZC9zdGRsaWIuaAotaW5kZXggMDYwNGNhZC4uYjlmMDUxNSAxMDA2NDQKK2luZGV4IGViYzk2MzguLmM0YjU0YjYgMTAwNjQ0CiAtLS0gYS9pbmNsdWRlL2JzZC9zdGRsaWIuaAogKysrIGIvaW5jbHVkZS9ic2Qvc3RkbGliLmgKIEBAIC00Niw3ICs0NiwxMCBAQApAQCAtMTg5LDggKzE5MCwxNyBAQAogKyNlbmRpZgogIHVpbnQzMl90IGFyYzRyYW5kb20odm9pZCk7CiAgdm9pZCBhcmM0cmFuZG9tX3N0aXIodm9pZCk7Ci0gdm9pZCBhcmM0cmFuZG9tX2FkZHJhbmRvbSh1X2NoYXIgKmRhdCwgaW50IGRhdGxlbik7Ci1AQCAtNzMsNiArNzYsOSBAQCBsb25nIGxvbmcgc3RydG9udW0oY29uc3QgY2hhciAqbnB0ciwgbG9uZyBsb25nIG1pbnZhbCwgbG9uZyBsb25nIG1heHZhbCwKKyB2b2lkIGFyYzRyYW5kb21fYWRkcmFuZG9tKHVuc2lnbmVkIGNoYXIgKmRhdCwgaW50IGRhdGxlbik7CitAQCAtNjcsNyArNzAsNyBAQCBpbnQgc3JhZGl4c29ydChjb25zdCB1bnNpZ25lZCBjaGFyICoqYmFzZSwgaW50IG5tZW1iLAorICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnRhYmxlLCB1bnNpZ25lZCBlbmRieXRlKTsKKyAKKyB2b2lkICpyZWFsbG9jZih2b2lkICpwdHIsIHNpemVfdCBzaXplKTsKKy0jaWYgZGVmaW5lZChfR05VX1NPVVJDRSkgJiYgZGVmaW5lZChfX0dMSUJDX18pICYmICFfX0dMSUJDX1BSRVJFUSgyLCAyNikKKysjaWYgZGVmaW5lZChfR05VX1NPVVJDRSkgJiYgZGVmaW5lZChfX0dMSUJDX18pCisgdm9pZCAqcmVhbGxvY2FycmF5KHZvaWQgKnB0ciwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSk7CisgI2VuZGlmCisgCitAQCAtNzUsNiArNzgsOSBAQCBsb25nIGxvbmcgc3RydG9udW0oY29uc3QgY2hhciAqbnB0ciwgbG9uZyBsb25nIG1pbnZhbCwgbG9uZyBsb25nIG1heHZhbCwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmVycnN0cik7CiAgCiAgY2hhciAqZ2V0YnNpemUoaW50ICpoZWFkZXJsZW5wLCBsb25nICpibG9ja3NpemVwKTsKQEAgLTIwMiwxMCArMjEyLDEwIEBACiAgCiAgI2VuZGlmCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2Qvc3RyaW5nLmggYi9pbmNsdWRlL2JzZC9zdHJpbmcuaAotaW5kZXggZWUyZjk1My4uZmJmOGM1NCAxMDA2NDQKK2luZGV4IDY3OThiZjYuLmZhMTE5M2YgMTAwNjQ0CiAtLS0gYS9pbmNsdWRlL2JzZC9zdHJpbmcuaAogKysrIGIvaW5jbHVkZS9ic2Qvc3RyaW5nLmgKLUBAIC0zNiwxMyArMzYsMTkgQEAKK0BAIC0zNiwxNSArMzYsMjEgQEAKICAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CiAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogIApAQCAtMjE5LDcgKzIyOSwxMCBAQAogIGNoYXIgKnN0cm5zdHIoY29uc3QgY2hhciAqc3RyLCBjb25zdCBjaGFyICpmaW5kLCBzaXplX3Qgc3RyX2xlbik7CiAgdm9pZCBzdHJtb2RlKG1vZGVfdCBtb2RlLCBjaGFyICpzdHIpOwogIAorLSNpZiBkZWZpbmVkKF9HTlVfU09VUkNFKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIV9fR0xJQkNfUFJFUkVRKDIsIDI1KQorKyNpZiBkZWZpbmVkKF9HTlVfU09VUkNFKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykKICB2b2lkIGV4cGxpY2l0X2J6ZXJvKHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbik7CisgI2VuZGlmCiAtX19FTkRfREVDTFMKICsjaWZkZWYgX19jcGx1c3BsdXMKICt9CkBAIC0yMjgsNyArMjQxLDcgQEAKICAKICAjZW5kaWYKIGRpZmYgLS1naXQgYS9pbmNsdWRlL2JzZC9zdHJpbmdsaXN0LmggYi9pbmNsdWRlL2JzZC9zdHJpbmdsaXN0LmgKLWluZGV4IGUzYzQyZTkuLjQwZDBhNTIgMTAwNjQ0CitpbmRleCBmZjMwY2FjLi40NjAwZjZiIDEwMDY0NAogLS0tIGEvaW5jbHVkZS9ic2Qvc3RyaW5nbGlzdC5oCiArKysgYi9pbmNsdWRlL2JzZC9zdHJpbmdsaXN0LmgKIEBAIC00MywxMiArNDMsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgX3N0cmluZ2xpc3QgewpAQCAtMjUxLDcgKzI2NCw3IEBACiArI2VuZGlmCiArLyogX19FTkRfREVDTFMgKi8KICAKLSAjZW5kaWYgLyogX1NUUklOR0xJU1RfSCAqLworICNlbmRpZiAvKiBMSUJCU0RfU1RSSU5HTElTVF9IICovCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2QvdW5pc3RkLmggYi9pbmNsdWRlL2JzZC91bmlzdGQuaAogaW5kZXggMWY5YzVmOC4uNWIyZjRjNyAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvYnNkL3VuaXN0ZC5oCkBAIC0yODAsNyArMjkzLDcgQEAKICAKICAjZW5kaWYKIGRpZmYgLS1naXQgYS9pbmNsdWRlL2JzZC92aXMuaCBiL2luY2x1ZGUvYnNkL3Zpcy5oCi1pbmRleCA4MzVkMmQ2Li42M2M5NTFlIDEwMDY0NAoraW5kZXggOTcwZGZkZC4uNjIxZDNjNiAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvYnNkL3Zpcy5oCiArKysgYi9pbmNsdWRlL2JzZC92aXMuaAogQEAgLTc0LDcgKzc0LDEwIEBACkBAIC0zMDUsNyArMzE4LDcgQEAKICsjZW5kaWYKICsvKiBfX0VORF9ERUNMUyAqLwogIAotICNlbmRpZiAvKiAhX1ZJU19IXyAqLworICNlbmRpZiAvKiAhTElCQlNEX1ZJU19IICovCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2Qvd2NoYXIuaCBiL2luY2x1ZGUvYnNkL3djaGFyLmgKIGluZGV4IDMzYTUwMGUuLmFhNzA3NDIgMTAwNjQ0CiAtLS0gYS9pbmNsdWRlL2JzZC93Y2hhci5oCkBAIC0zNTksNSArMzcyLDUgQEAKICAKICAjZW5kaWYgLyogIV9TSEE1MTJfSF8gKi8KIC0tIAotMi4xMC4yCisxLjkuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZF8wLjguNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOC42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODI1NDNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOC42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTMgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLSMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKLQotU1VNTUFSWSA9ICJMaWJyYXJ5IG9mIHV0aWxpdHkgZnVuY3Rpb25zIGZyb20gQlNEIHN5c3RlbXMiCi1ERVNDUklQVElPTiA9ICJUaGlzIGxpYnJhcnkgcHJvdmlkZXMgdXNlZnVsIGZ1bmN0aW9ucyBjb21tb25seSBmb3VuZCBvbiBCU0Qgc3lzdGVtcywgXAotICAgICAgICAgICAgICAgYW5kIGxhY2tpbmcgb24gb3RoZXJzIGxpa2UgR05VIHN5c3RlbXMsIHRodXMgbWFraW5nIGl0IGVhc2llciB0byBwb3J0IFwKLSAgICAgICAgICAgICAgIHByb2plY3RzIHdpdGggc3Ryb25nIEJTRCBvcmlnaW5zLCB3aXRob3V0IG5lZWRpbmcgdG8gZW1iZWQgdGhlIHNhbWUgXAotICAgICAgICAgICAgICAgY29kZSBvdmVyIGFuZCBvdmVyIGFnYWluIG9uIGVhY2ggcHJvamVjdC4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9saWJic2QuZnJlZWRlc2t0b3Aub3JnL3dpa2kvIgotIyBUaGVyZSBzZWVtcyB0byBiZSBtb3JlIGxpY2Vuc2VzIHVzZWQgaW4gdGhlIGNvZGUsIEkgZG9uJ3QgdGhpbmsgd2Ugd2FudCB0byBsaXN0IHRoZW0gYWxsIGhlcmUsIGNvbXBsZXRlIGxpc3Q6Ci0jIE9FIEAgfi9wcm9qZWN0cy9saWJic2QgJCBncmVwIF5MaWNlbnNlOiBDT1BZSU5HICB8IHNvcnQKLSMgTGljZW5zZTogQlNELTItY2xhdXNlCi0jIExpY2Vuc2U6IEJTRC0yLWNsYXVzZQotIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UtTmV0QlNECi0jIExpY2Vuc2U6IEJTRC0yLWNsYXVzZS1hdXRob3IKLSMgTGljZW5zZTogQlNELTItY2xhdXNlLXZlcmJhdGltCi0jIExpY2Vuc2U6IEJTRC0zLWNsYXVzZQotIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UKLSMgTGljZW5zZTogQlNELTMtY2xhdXNlCi0jIExpY2Vuc2U6IEJTRC0zLWNsYXVzZS1QZXRlci1XZW1tCi0jIExpY2Vuc2U6IEJTRC0zLWNsYXVzZS1SZWdlbnRzCi0jIExpY2Vuc2U6IEJTRC00LWNsYXVzZS1DaHJpc3RvcGhlci1HLURlbWV0cmlvdQotIyBMaWNlbnNlOiBCU0QtNC1jbGF1c2UtTmllbHMtUHJvdm9zCi0jIExpY2Vuc2U6IEJTRC01LWNsYXVzZS1QZXRlci1XZW1tCi0jIExpY2Vuc2U6IEJlZXJ3YXJlCi0jIExpY2Vuc2U6IEV4cGF0Ci0jIExpY2Vuc2U6IElTQwotIyBMaWNlbnNlOiBJU0MtT3JpZ2luYWwKLSMgTGljZW5zZTogcHVibGljLWRvbWFpbgotIyBMaWNlbnNlOiBwdWJsaWMtZG9tYWluLUNvbGluLVBsdW1iCi1MSUNFTlNFID0gIkJTRC00LUNsYXVzZSAmIElTQyAmIFBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDhmYzRlNjZiZTQ1MjY3MTVkYWIwOWM1ZmJhNWU5ZTgiCi1TRUNUSU9OID0gImxpYnMiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vbGliYnNkLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vMDAwMS1zcmMtbGliYnNkLW92ZXJsYXkucGMuaW4tU2V0LUNmbGFncy10by11c2UtSS1pbnN0ZWFkLnBhdGNoIFwKLSIKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCAgPSAiIFwKLSAgICBmaWxlOi8vMDAwMS1SZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1SZW1vdmUtZnVub3Blbi5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0YWI3YmVjNjM5YWYxN2QwYWFjYjUwMjIyYjQ3OTExMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NjdmYmY5ZGYxZjQ5YWYxMWY3ZjY4NjY5MTA1N2M4YzBhNzYxM2FlNWE4NzA1NzdiZWY5MTU1ZGUzOWY5Njg3IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC44LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZF8wLjguNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTJhODVjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC44LjcuYmIKQEAgLTAsMCArMSw1MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTMgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworU1VNTUFSWSA9ICJMaWJyYXJ5IG9mIHV0aWxpdHkgZnVuY3Rpb25zIGZyb20gQlNEIHN5c3RlbXMiCitERVNDUklQVElPTiA9ICJUaGlzIGxpYnJhcnkgcHJvdmlkZXMgdXNlZnVsIGZ1bmN0aW9ucyBjb21tb25seSBmb3VuZCBvbiBCU0Qgc3lzdGVtcywgXAorICAgICAgICAgICAgICAgYW5kIGxhY2tpbmcgb24gb3RoZXJzIGxpa2UgR05VIHN5c3RlbXMsIHRodXMgbWFraW5nIGl0IGVhc2llciB0byBwb3J0IFwKKyAgICAgICAgICAgICAgIHByb2plY3RzIHdpdGggc3Ryb25nIEJTRCBvcmlnaW5zLCB3aXRob3V0IG5lZWRpbmcgdG8gZW1iZWQgdGhlIHNhbWUgXAorICAgICAgICAgICAgICAgY29kZSBvdmVyIGFuZCBvdmVyIGFnYWluIG9uIGVhY2ggcHJvamVjdC4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly9saWJic2QuZnJlZWRlc2t0b3Aub3JnL3dpa2kvIgorIyBUaGVyZSBzZWVtcyB0byBiZSBtb3JlIGxpY2Vuc2VzIHVzZWQgaW4gdGhlIGNvZGUsIEkgZG9uJ3QgdGhpbmsgd2Ugd2FudCB0byBsaXN0IHRoZW0gYWxsIGhlcmUsIGNvbXBsZXRlIGxpc3Q6CisjIE9FIEAgfi9wcm9qZWN0cy9saWJic2QgJCBncmVwIF5MaWNlbnNlOiBDT1BZSU5HICB8IHNvcnQKKyMgTGljZW5zZTogQlNELTItY2xhdXNlCisjIExpY2Vuc2U6IEJTRC0yLWNsYXVzZQorIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UtTmV0QlNECisjIExpY2Vuc2U6IEJTRC0yLWNsYXVzZS1hdXRob3IKKyMgTGljZW5zZTogQlNELTItY2xhdXNlLXZlcmJhdGltCisjIExpY2Vuc2U6IEJTRC0zLWNsYXVzZQorIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UKKyMgTGljZW5zZTogQlNELTMtY2xhdXNlCisjIExpY2Vuc2U6IEJTRC0zLWNsYXVzZS1QZXRlci1XZW1tCisjIExpY2Vuc2U6IEJTRC0zLWNsYXVzZS1SZWdlbnRzCisjIExpY2Vuc2U6IEJTRC00LWNsYXVzZS1DaHJpc3RvcGhlci1HLURlbWV0cmlvdQorIyBMaWNlbnNlOiBCU0QtNC1jbGF1c2UtTmllbHMtUHJvdm9zCisjIExpY2Vuc2U6IEJTRC01LWNsYXVzZS1QZXRlci1XZW1tCisjIExpY2Vuc2U6IEJlZXJ3YXJlCisjIExpY2Vuc2U6IEV4cGF0CisjIExpY2Vuc2U6IElTQworIyBMaWNlbnNlOiBJU0MtT3JpZ2luYWwKKyMgTGljZW5zZTogcHVibGljLWRvbWFpbgorIyBMaWNlbnNlOiBwdWJsaWMtZG9tYWluLUNvbGluLVBsdW1iCitMSUNFTlNFID0gIkJTRC00LUNsYXVzZSAmIElTQyAmIFBEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDhmYzRlNjZiZTQ1MjY3MTVkYWIwOWM1ZmJhNWU5ZTgiCitTRUNUSU9OID0gImxpYnMiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vbGliYnNkLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICBmaWxlOi8vMDAwMS1zcmMtbGliYnNkLW92ZXJsYXkucGMuaW4tU2V0LUNmbGFncy10by11c2UtSS1pbnN0ZWFkLnBhdGNoIFwKKyIKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCAgPSAiIFwKKyAgICBmaWxlOi8vMDAwMS1SZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1SZW1vdmUtZnVub3Blbi5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkOWU2OTgwZmJmZTQ0Zjk0ZmQ5MmI4OWEzM2NjZTY3ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNTQ4ZjEwZTVhZjVhMDhiMWUyMjg4OWNlODQzMTViMWViZTQxNTA1YjAxNWM5NTk2YmFkMDNmZDEzYTEyYjMxIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrXzAuMTAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjaGVjay9saWJjaGVja18wLjEwLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkMzQxOTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrXzAuMTAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVNVTU1BUlkgID0gIkNoZWNrIC0gdW5pdCB0ZXN0aW5nIGZyYW1ld29yayBmb3IgQyBjb2RlIgotSE9NRVBBR0UgPSAiaHR0cDovL2NoZWNrLnNvdXJjZWZvcmdlLm5ldC8iCi1TRUNUSU9OID0gImRldmVsIgotCi1MSUNFTlNFICA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2NoZWNrL2NoZWNrLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTNjNWU1Yzc3ZDA5MGUxMDNhMTdmM2VkN2ZkN2Q4YjgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjVmNTA3NjZhYTZmOGZlNWEyZGY3NTI2NjZjYTAxYTk1MGFkZDQ1MDc5YWEwNjQxNmI4Mzc2NWIxY2Y3MTA1MiIKLQotUyA9ICIke1dPUktESVJ9L2NoZWNrLSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdGV4aW5mbwotCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9BV0tfUEFUSD0ke2JpbmRpcn0vZ2F3ayIKLQotUlJFUExBQ0VTXyR7UE59ID0gImNoZWNrICg8PSAwLjkuNSkiCi1SREVQRU5EU18ke1BOfSArPSAiZ2F3ayIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjaGVjay9saWJjaGVja18wLjEyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2hlY2svbGliY2hlY2tfMC4xMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2NDZkNDMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2hlY2svbGliY2hlY2tfMC4xMi4wLmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgID0gIkNoZWNrIC0gdW5pdCB0ZXN0aW5nIGZyYW1ld29yayBmb3IgQyBjb2RlIgorSE9NRVBBR0UgPSAiaHR0cDovL2NoZWNrLnNvdXJjZWZvcmdlLm5ldC8iCitTRUNUSU9OID0gImRldmVsIgorCitMSUNFTlNFICA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS9jaGVjay9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS9jaGVjay0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiMzFiMTdjNjA3NTgyMGE0MzQxMTk1OTI5NDExODZmNzAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDY0MjAxMDk4YmVlMDBlOTBmNWM0YmRmYTk0YTVkM2VhZDhkNjQxZjkwMjViNTYwYTI3NzU1YTgzYjgyNDIzNCIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliY2hlY2svY2hlY2svcmVsZWFzZXMvIgorCitTID0gIiR7V09SS0RJUn0vY2hlY2stJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB0ZXhpbmZvCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX0FXS19QQVRIPSR7YmluZGlyfS9nYXdrIgorCitSUkVQTEFDRVNfJHtQTn0gPSAiY2hlY2sgKDw9IDAuOS41KSIKK1JERVBFTkRTXyR7UE59ICs9ICJnYXdrIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNyb2NvL2xpYmNyb2NvXzAuNi4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjcm9jby9saWJjcm9jb18wLjYuMTIuYmIKaW5kZXggYjBhZjc1OS4uZDg2ZGRkNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNyb2NvL2xpYmNyb2NvXzAuNi4xMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY3JvY28vbGliY3JvY29fMC42LjEyLmJiCkBAIC05LDEyICs5LDEyIEBACiAKIFNFQ1RJT04gPSAieDExL3V0aWxzIgogREVQRU5EUyA9ICJnbGliLTIuMCBsaWJ4bWwyIHpsaWIiCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIEVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtQnN5bWJvbGljPWF1dG8iCiAKIEJJTkNPTkZJRyA9ICIke2JpbmRpcn0vY3JvY28tMC42LWNvbmZpZyIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdub21lYmFzZSBndGstZG9jIGJpbmNvbmZpZy1kaXNhYmxlZAoraW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBiaW5jb25maWctZGlzYWJsZWQKIAogU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYmMwOTg0ZmNlMDc4YmEyY2UyOWY5NTAwYzZiOWRkY2UiCiBTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJkZGM0YjU1NDZjOWZiNDI4MGE1MDE3ZTI3MDdmYmQ0ODM5MDM0ZWQxYWJhNWI3ZDQzNzIyMTJmMzRmODRmODYwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzQwZGEyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjUuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVNVTU1BUlkgPSAiV3JhcHBlciBsaWJyYXJ5IGZvciBldmRldiBkZXZpY2VzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9saWJldmRldi8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTUlULVgiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NWFhZTBkMzhmZWVhNmZkYTk3Y2EzODFjYjkxMzJlYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJldmRldi9saWJldmRldi5oO2VuZGxpbmU9MjE7bWQ1PTdmZjRmMGI1MTEzMjUyYzJmMWE4MjhlMGJiYWQ5OGQxIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL2xpYmV2ZGV2LyR7QlB9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRmMWNmYWVlOGQ3NWVhM2ZiYmZlYjk5YTk4NzMwOTUyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImExZTU5ZTM3YTJmMGQzOTdmZmQ3ZTgzYjczYWYwZTYzOGRiODNiOGRkMDg5MDJlZjBmNjUxYTIxY2MxZGQ0MjIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMzgwMTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXZfMS41LjguYmIKQEAgLTAsMCArMSwxNCBAQAorU1VNTUFSWSA9ICJXcmFwcGVyIGxpYnJhcnkgZm9yIGV2ZGV2IGRldmljZXMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL2xpYmV2ZGV2LyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJNSVQtWCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1YWFlMGQzOGZlZWE2ZmRhOTdjYTM4MWNiOTEzMmViIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmV2ZGV2L2xpYmV2ZGV2Lmg7ZW5kbGluZT0yMTttZDU9N2ZmNGYwYjUxMTMyNTJjMmYxYTgyOGUwYmJhZDk4ZDEiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvbGliZXZkZXYvJHtCUH0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzI1YThjMzkzOWU0YWQ1OWE1ZTllNWUxZTM1NDgzMmQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjA4M2Q4MWU0NjYwOWRhOGJhODBjYjgyNmMwMmQ5MDgwNzY0YTZkZWMzM2M4MjY3Y2NiN2UxNTg4MzNkNGM2ZCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnQvMDAwMS10ZXN0LWZpeC0zMmJpdC1saW51eC1yZWdyZXNzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50LzAwMDEtdGVzdC1maXgtMzJiaXQtbGludXgtcmVncmVzcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmQwODIwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50LzAwMDEtdGVzdC1maXgtMzJiaXQtbGludXgtcmVncmVzcy5wYXRjaApAQCAtMCwwICsxLDQ4IEBACitGcm9tIDY5YTM4MTNjNTEzYzg0ZTAyMjEyMjUwYzNkNWI4YTAyZWNlZmE2OTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAxNSBKYW4gMjAxOCAwODowMDozMyArMDAwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0OiBmaXggMzJiaXQgbGludXggcmVncmVzcworCitUaGlzIHBhdGNoIGNvbWVzIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2xpYmV2ZW50L2xpYmV2ZW50LmdpdCwKK3RoZSBjb21taXQgaXMgNjNjNGJmNzhkNmFmM2M2ZmY0NmQyZThlNGI1M2RkOWY1NzdhOWNhOQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgICAgICAgIHwgMSArCisgdGVzdC9yZWdyZXNzX3V0aWwuYyB8IDIgKysKKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA3NTI4ZDM3Li5lNjRjYjFmIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC02NjMsNiArNjYzLDcgQEAgQUNfQ0hFQ0tfU0laRU9GKHNob3J0KQorIEFDX0NIRUNLX1NJWkVPRihzaXplX3QpCisgQUNfQ0hFQ0tfU0laRU9GKHZvaWQgKikKKyBBQ19DSEVDS19TSVpFT0Yob2ZmX3QpCisrQUNfQ0hFQ0tfU0laRU9GKHRpbWVfdCkKKyAKKyBBQ19DSEVDS19UWVBFUyhbc3RydWN0IGluNl9hZGRyLCBzdHJ1Y3Qgc29ja2FkZHJfaW42LCBzYV9mYW1pbHlfdCwgc3RydWN0IGFkZHJpbmZvLCBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZV0sICwgLAorIFsjZGVmaW5lIF9HTlVfU09VUkNFCitkaWZmIC0tZ2l0IGEvdGVzdC9yZWdyZXNzX3V0aWwuYyBiL3Rlc3QvcmVncmVzc191dGlsLmMKK2luZGV4IGVmNmExNDguLjBjN2VhZmIgMTAwNjQ0CistLS0gYS90ZXN0L3JlZ3Jlc3NfdXRpbC5jCisrKysgYi90ZXN0L3JlZ3Jlc3NfdXRpbC5jCitAQCAtMTQxMiwxMCArMTQxMiwxMiBAQCBzdGF0aWMgc3RydWN0IGRhdGVfcmZjMTEyM19jYXNlIHsKKyAJeyAgMTI4OTQzMzYwMCwgIlRodSwgMTEgTm92IDIwMTAgMDA6MDA6MDAgR01UIn0sCisgCXsgIDEzMjM2NDgwMDAsICJNb24sIDEyIERlYyAyMDExIDAwOjAwOjAwIEdNVCJ9LAorICNpZm5kZWYgX1dJTjMyCisrI2lmIEVWRU5UX19TSVpFT0ZfVElNRV9UID4gNAorIAkvKiogSW4gd2luMzIgY2FzZSB3ZSBoYXZlIG1heCAgICIyMzo1OTo1OSBKYW51YXJ5IDE4LCAyMDM4LCBVVEMiIGZvciB0aW1lMzIgKi8KKyAJeyAgNDI5NDk2NzI5NiwgIlN1biwgMDcgRmViIDIxMDYgMDY6Mjg6MTYgR01UIn0gLyogMl4zMiAqLywKKyAJLyoqIEluIHdpbjMyIGNhc2Ugd2UgaGF2ZSBtYXggIjIzOjU5OjU5LCBEZWNlbWJlciAzMSwgMzAwMCwgVVRDIiBmb3IgdGltZTY0ICovCisgCXsyNTM0MDIzMDA3OTksICJGcmksIDMxIERlYyA5OTk5IDIzOjU5OjU5IEdNVCJ9IC8qIGxvbmcgbG9uZyBmdXR1cmUgbm8gb25lIGNhbiBpbWFnaW5lICovLAorKyNlbmRpZiAvKiB0aW1lX3QgIT0gMzJiaXQgKi8KKyAJeyAgMTQ1NjcwNDAwMCwgIk1vbiwgMjkgRmViIDIwMTYgMDA6MDA6MDAgR01UIn0gLyogbGVhcCB5ZWFyICovLAorICNlbmRpZgorIAl7ICAxNDM1NzA4ODAwLCAiV2VkLCAwMSBKdWwgMjAxNSAwMDowMDowMCBHTVQifSAvKiBsZWFwIHNlY29uZCAqLywKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudF8yLjEuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudF8yLjEuOC5iYgppbmRleCAxMjcwZDYyLi44M2NlNDY0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnRfMi4xLjguYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMS44LmJiCkBAIC05LDYgKzksNyBAQAogU1JDX1VSSSA9ICIgXAogICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9saWJldmVudC9saWJldmVudC9yZWxlYXNlcy9kb3dubG9hZC9yZWxlYXNlLSR7UFZ9LXN0YWJsZS8ke0JQfS1zdGFibGUudGFyLmd6IFwKICAgICBmaWxlOi8vTWFrZWZpbGUtbWlzc2luZy10ZXN0LWRpci5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtdGVzdC1maXgtMzJiaXQtbGludXgtcmVncmVzcy5wYXRjaCBcCiAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpL25vdC13aW4zMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpL25vdC13aW4zMi5wYXRjaAppbmRleCAxZTkwMTI1Li44MGM0MGE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS9ub3Qtd2luMzIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvbm90LXdpbjMyLnBhdGNoCkBAIC0xMSwxMiArMTEsMTYgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIAotLS0tIGEvY29uZmlndXJlLmFjfgkyMDE0LTExLTEyIDExOjU2OjUxLjAwMDAwMDAwMCArMDAwMAotKysrIGIvY29uZmlndXJlLmFjCTIwMTYtMDItMDQgMTQ6MDI6NTMuNzY1NzEwNTMyICswMDAwCi1AQCAtNTkzLDUgKzU5Myw1IEBACitJbmRleDogbGliZmZpLTMuMi4xL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYmZmaS0zLjIuMS5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGxpYmZmaS0zLjIuMS9jb25maWd1cmUuYWMKK0BAIC01OTIsNyArNTkyLDcgQEAgQUNfQVJHX0VOQUJMRShwdXJpZnktc2FmZXR5LAorIAogICMgVGhlc2UgdmFyaWFibGVzIGFyZSBvbmx5IGV2ZXIgdXNlZCB3aGVuIHdlIGNyb3NzLWJ1aWxkIHRvIFg4Nl9XSU4zMi4KICAjIEFuZCB3ZSBvbmx5IHN1cHBvcnQgdGhpcyB3aXRoIEdDQywgc28uLi4KIC1pZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyI7IHRoZW4KICtpZiBmYWxzZTsgdGhlbgogICAgaWYgdGVzdCAtbiAiJHdpdGhfY3Jvc3NfaG9zdCIgJiYKLSAgICAgIHRlc3QgeCIkd2l0aF9jcm9zc19ob3N0IiAhPSB4Im5vIjsgdGhlbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgICAgIHRlc3QgeCIkd2l0aF9jcm9zc19ob3N0IiAhPSB4Im5vIjsgdGhlbgorICAgICB0b29sZXhlY2Rpcj0iJHtleGVjX3ByZWZpeH0iLyckKHRhcmdldF9hbGlhcyknCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm0tZXh0cmFfMS4yLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm0tZXh0cmFfMS4yLjUuYmIKaW5kZXggMDEzNDU3Mi4uYzBmZDgzZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtLWV4dHJhXzEuMi41LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbS1leHRyYV8xLjIuNS5iYgpAQCAtNSw3ICs1LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy9mbS1leHRyYS5oO2JlZ2lubGluZT04O2VuZGxpbmU9MjE7bWQ1PWVmMWY4NGRhNjRiM2MwMWNjYTQ0NzIxMmY3ZWY2MDA3IgogCiBTRUNUSU9OID0gIngxMS9saWJzIgotREVQRU5EUyA9ICJnbGliLTIuMCBpbnRsdG9vbC1uYXRpdmUgZ2V0dGV4dC1uYXRpdmUiCitERVBFTkRTID0gImdsaWItMi4wLW5hdGl2ZSBnbGliLTIuMCBpbnRsdG9vbC1uYXRpdmUiCiAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3BjbWFuZm0vbGliZm0tJHtQVn0udGFyLnh6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtbmxzLm00LVRha2UtaXQtZnJvbS1nZXR0ZXh0LTAuMTUucGF0Y2ggXApAQCAtMTgsNiArMTgsNiBAQAogCiBFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWV4dHJhLW9ubHkgLS13aXRoLWd0az1ubyIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGdldHRleHQKIAogZG9fY29uZmlndXJlW2RpcnNdID0rICIke1N9L200IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtLzAwMDEtRW5jbG9zZS10ZXh0LWluLXByb2dyYW1saXN0aW5nLWludG8tQ0RBVEEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm0vMDAwMS1FbmNsb3NlLXRleHQtaW4tcHJvZ3JhbWxpc3RpbmctaW50by1DREFUQS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGU1MzI5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtLzAwMDEtRW5jbG9zZS10ZXh0LWluLXByb2dyYW1saXN0aW5nLWludG8tQ0RBVEEucGF0Y2gKQEAgLTAsMCArMSw3NiBAQAorRnJvbSBlZDRjYThjMGIxN2ZmNWQzYzc2OGI5MjQwOWMxNzg3ZTNmM2YxODQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcml5IEdyeXRzZW5rbyA8YW5kcmVqQHJlcC5raWV2LnVhPgorRGF0ZTogU3VuLCAyNiBOb3YgMjAxNyAyMjozMDoxNSArMDIwMAorU3ViamVjdDogW1BBVENIIDIvMl0gRW5jbG9zZSB0ZXh0IGluIDxwcm9ncmFtbGlzdGluZz4gaW50byA8IVtDREFUQVsKKworTmV3IGd0ay1kb2MgZmFpbHMgb24gdGFnLWxpa2UgZGF0YSBpbiBpdC4KK1NlZSBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE1ODUKK1RoYXQgaXMgZGVmaW5pdGVseSBidWcgb2YgZ3RrLWRvYyBidXQgbGV0IHdvcmthcm91bmQgaXQuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0Lmx4ZGUub3JnL2dpdHdlYi8/cD1seGRlL2xpYmZtLmdpdDthPWNvbW1pdDtoPWIwNzJlZTA0MDA0MzJkNzJmZGY4NmJhOWZlZDc0YTdlMGVjMTFlYzFdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9iYXNlL2ZtLW1vZHVsZS5jIHwgMTIgKysrKysrLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNlL2ZtLW1vZHVsZS5jIGIvc3JjL2Jhc2UvZm0tbW9kdWxlLmMKK2luZGV4IGQzNjRiMmQuLjJlOGM5NzggMTAwNjQ0CistLS0gYS9zcmMvYmFzZS9mbS1tb2R1bGUuYworKysrIGIvc3JjL2Jhc2UvZm0tbW9kdWxlLmMKK0BAIC00NCw3ICs0NCw3IEBACisgICogb2YgdGhhdCB0eXBlIHNob3VsZCBpbmNsdWRlOgorICAqIDxleGFtcGxlIGlkPSJleGFtcGxlLWZtLWR1bW15LWgiPgorICAqIDx0aXRsZT5TYW1wbGUgb2YgZm0tZHVtbXkuaDwvdGl0bGU+CistICogPHByb2dyYW1saXN0aW5nPgorKyAqIDxwcm9ncmFtbGlzdGluZz48IVtDREFUQVsKKyAgKiAjaW5jbHVkZSA8bGliZm0vZm0uaD4KKyAgKgorICAqICNkZWZpbmUgRk1fTU9EVUxFX2R1bW15X1ZFUlNJT04gMQorQEAgLTU0LDcgKzU0LDcgQEAKKyAgKiB9IEZtRHVtbXlJbml0OworICAqCisgICogZXh0ZXJuIEZtRHVtbXlJbml0IGZtX21vZHVsZV9pbml0X2R1bW15OworLSAqIDwvcHJvZ3JhbWxpc3Rpbmc+CisrICogXV0+PC9wcm9ncmFtbGlzdGluZz4KKyAgKiA8L2V4YW1wbGU+CisgICogVGhlIEZNX01PRFVMRV9kdW1teV9WRVJTSU9OIGlzIGEgbnVtYmVyIHdoaWNoIHNob3VsZCBiZSBpbmNyZWFzZWQgZWFjaAorICAqIHRpbWUgc29tZXRoaW5nIGluIEZtRHVtbXlJbml0IHN0cnVjdHVyZSBpcyBjaGFuZ2VkLiBUaGUgRm1EdW1teUluaXQKK0BAIC02NSw3ICs2NSw3IEBACisgICogbW9kdWxlIGhhbmRsaW5nIGluIHlvdXIgY29kZToKKyAgKiA8ZXhhbXBsZSBpZD0iZXhhbXBsZS1mbS1kdW1teS13aWRnZXQtYyI+CisgICogPHRpdGxlPlNhbXBsZSBvZiBmbS1kdW1teS13aWRnZXQuYzwvdGl0bGU+CistICogPHByb2dyYW1saXN0aW5nPgorKyAqIDxwcm9ncmFtbGlzdGluZz48IVtDREFUQVsKKyAgKiAjaW5jbHVkZSAiZm0tZHVtbXkuaCIKKyAgKgorICAqIEZNX01PRFVMRV9ERUZJTkVfVFlQRShkdW1teSwgRm1EdW1teUluaXQsIDEpCitAQCAtODcsNyArODcsNyBAQAorICAqICAgICAgICAgcmVzdWx0ID0gbW9kdWxlLT5nZXRfbmV3KCJ0ZXN0IHNhbXBsZSIpOworICAqICAgICByZXR1cm4gcmVzdWx0OworICAqIH0KKy0gKiA8L3Byb2dyYW1saXN0aW5nPgorKyAqIF1dPjwvcHJvZ3JhbWxpc3Rpbmc+CisgICogPC9leGFtcGxlPgorICAqCisgICogVGhpcmQgdGhpbmcgYXBwbGljYXRpb24gc2hvdWxkIGRvIGlzIHRvIHJlZ2lzdGVyIG1vZHVsZSB0eXBlIG9uIHRoZQorQEAgLTEwOCw3ICsxMDgsNyBAQAorICAqIGludGVyZmFjZSAoc2VlIHRoZSBmbS1kdW1teS5oIGhlYWRlciBleGFtcGxlIGFib3ZlKToKKyAgKiA8ZXhhbXBsZSBpZD0iZXhhbXBsZS1mbS1kdW1teS10ZXN0LWMiPgorICAqIDx0aXRsZT5TYW1wbGUgb2YgbW9kdWxlIGR1bW15L3Rlc3Q8L3RpdGxlPgorLSAqIDxwcm9ncmFtbGlzdGluZz4KKysgKiA8cHJvZ3JhbWxpc3Rpbmc+PCFbQ0RBVEFbCisgICogI2luY2x1ZGUgImZtLWR1bW15LmgiCisgICoKKyAgKiBGTV9ERUZJTkVfTU9EVUxFKGR1bW15LCB0ZXN0KQorQEAgLTEyMSw3ICsxMjEsNyBAQAorICAqIEZtRHVtbXlJbml0IGZtX21vZHVsZV9pbml0X2R1bW15ID0geworICAqICAgICBmbV9kdW1teV90ZXN0X2dldF9uZXc7CisgICogfTsKKy0gKiA8L3Byb2dyYW1saXN0aW5nPgorKyAqIF1dPjwvcHJvZ3JhbWxpc3Rpbmc+CisgICogPC9leGFtcGxlPgorICAqIFRoZSBmbV9tb2R1bGVfaW5pdF9kdW1teSBzaG91bGQgYmUgZXhhY3RseSB0aGUgc2FtZSBzdHJ1Y3R1cmUgdGhhdCBpcworICAqIGRlZmluZWQgaW4gdGhlIGhlYWRlciBmaWxlIGFib3ZlLgorLS0gCisyLjE1LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtXzEuMi41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtXzEuMi41LmJiCmluZGV4IDFkZGRkZmQuLjU5NjQwODMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbV8xLjIuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm1fMS4yLjUuYmIKQEAgLTksMjIgKzksMzYgQEAKIAogCiBTRUNUSU9OID0gIngxMS9saWJzIgotREVQRU5EUyA9ICJnbGliLTIuMCBwYW5nbyBndGsrMyBtZW51LWNhY2hlIGludGx0b29sLW5hdGl2ZSBsaWJleGlmIGxpYmZtLWV4dHJhIGdldHRleHQtbmF0aXZlIgorREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgcGFuZ28gZ3RrKzMgbWVudS1jYWNoZSBpbnRsdG9vbC1uYXRpdmUgbGliZXhpZiBsaWJmbS1leHRyYSIKIAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcGNtYW5mbS9saWJmbS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Db3JyZWN0bHktY2hlY2stdGhlLXN0YW1wLWZpbGUtdGhhdC1pbmRpY2F0ZXMtaWYtd2UtLnBhdGNoIgorICAgICAgICAgICBmaWxlOi8vMDAwMS1Db3JyZWN0bHktY2hlY2stdGhlLXN0YW1wLWZpbGUtdGhhdC1pbmRpY2F0ZXMtaWYtd2UtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRW5jbG9zZS10ZXh0LWluLXByb2dyYW1saXN0aW5nLWludG8tQ0RBVEEucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJhMWJhOWFlNWU5MjBmMzhiNjQ3ZGQ1MTFlZGQ2YzgwNyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNzA2YmIxMDIwY2Y1ZjJkNmY1YTkyMjZmNjkyY2UxOTg1OTQ3MTM0ZGNmMmJkZTY0Mjc4YmQwNDIwNzc5YjVhIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGdldHRleHQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCiBBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKIAogRVhUUkFfT0VDT05GID0gIi0td2l0aC1ndGs9MyIKIAogZG9fY29uZmlndXJlW2RpcnNdID0rICIke1N9L200IgogCitQQUNLQUdFUyA9KyAibGliZm0tZ3RrIgogUEFDS0FHRVMgKz0gIiR7UE59LW1pbWUiCitGSUxFU19saWJmbS1ndGsgPSAiIFwKKyAgICAke2xpYmRpcn0vbGliZm0tZ3RrKnNvLiogXAorICAgICR7bGliZGlyfS9saWJmbS9tb2R1bGVzL2d0ayogXAorICAgICR7YmluZGlyfS9saWJmbS1wcmVmLWFwcHMgXAorICAgICR7YmluZGlyfS9seHNob3J0Y3V0IFwKKyAgICAke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9saWJmbS1wcmVmLWFwcHMuZGVza3RvcCBcCisgICAgJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvbHhzaG9ydGN1dC5kZXNrdG9wIFwKKyAgICAke2RhdGFkaXJ9L2xpYmZtL2ltYWdlcy9mb2xkZXIucG5nIFwKKyAgICAke2RhdGFkaXJ9L2xpYmZtL2ltYWdlcy91bmtub3duLnBuZyBcCisgICAgJHtkYXRhZGlyfS9saWJmbS91aS8qLnVpIFwKKyIKIEZJTEVTXyR7UE59LW1pbWUgPSAiJHtkYXRhZGlyfS9taW1lLyIKIAogZG9faW5zdGFsbF9hcHBlbmQgKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDA1LWVjYy1BZGQtaW5wdXQtdmFsaWRhdGlvbi1mb3ItWDI1NTE5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDA1LWVjYy1BZGQtaW5wdXQtdmFsaWRhdGlvbi1mb3ItWDI1NTE5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmZkZDc0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwNS1lY2MtQWRkLWlucHV0LXZhbGlkYXRpb24tZm9yLVgyNTUxOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1OCArMCwwIEBACi1Gcm9tIGVmNTcwZTNkMjc3M2MxMjEyNmU3ZDNmY2RjNGRiOWVmODBhNWUyMTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOSUlCRSBZdXRha2EgPGduaWliZUBmc2lqLm9yZz4KLURhdGU6IEZyaSwgMjUgQXVnIDIwMTcgMTg6MTM6MjggKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gZWNjOiBBZGQgaW5wdXQgdmFsaWRhdGlvbiBmb3IgWDI1NTE5LgotCi0qIGNpcGhlci9lY2MuYyAoZWNjX2RlY3J5cHRfcmF3KTogQWRkIGlucHV0IHZhbGlkYXRpb24uCi0qIG1waS9lYy5jIChlY19wX2luaXQpOiBVc2Ugc2NyYXRjaCBidWZmZXIgZm9yIGJhZCBwb2ludHMuCi0oX2djcnlfbXBpX2VjX2JhZF9wb2ludCk6IE5ldy4KLQotLS0KLQotRm9sbG93aW5nIGlzIHRoZSBwYXBlciBkZXNjcmliaW5nIHRoZSBhdHRhY2s6Ci0KLSAgICBNYXkgdGhlIEZvdXJ0aCBCZSBXaXRoIFlvdTogQSBNaWNyb2FyY2hpdGVjdHVyYWwgU2lkZSBDaGFubmVsIEF0dGFjawotICAgIG9uIFJlYWwtV29ybGQgQXBwbGljYXRpb25zIG9mIEN1cnZlMjU1MTkKLSAgICBieSBEYW5pZWwgR2Vua2luLCBMdWtlIFZhbGVudGEsIGFuZCBZdXZhbCBZYXJvbQotCi1JbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgd2UgZG8gb3V0cHV0IGNoZWNraW5nIGFuZCBpdCByZXN1bHRzIGFuCi1lcnJvciBmb3IgdGhvc2UgYmFkIHBvaW50cy4gIEhvd2V2ZXIsIHdoZW4gYXR0YWNrZWQsIHRoZSBjb21wdXRhdGlvbgotd2lsbCBkb25lIHdpdGggbGVhayBvZiBwcml2YXRlIGtleSwgZXZlbiBpdCB3aWxsIHJlc3VsdHMgZXJyb3JzLiAgVG8KLW1pdGlnYXRlIGxlYWssIHdlIGFkZGVkIGlucHV0IHZhbGlkYXRpb24uCi0KLU5vdGUgdGhhdCB3ZSBvbmx5IGxpc3QgYmFkIHBvaW50cyB3aXRoIE1TQj0wLiAgQnkgWDI1NTE5LCBNU0IgaXMKLWFsd2F5cyBjbGVhcmVkLgotCi1JbiBmdXR1cmUsIHdlIHNob3VsZCBpbXBsZW1lbnQgY29uc3RhbnQtdGltZSBmaWVsZCBjb21wdXRhdGlvbi4gIFRoZW4sCi10aGlzIGlucHV0IHZhbGlkYXRpb24gY291bGQgYmUgcmVtb3ZlZCwgaWYgcGVyZm9ybWFuY2UgaXMgaW1wb3J0YW50Ci1hbmQgd2UgYXJlIHN1cmUgZm9yIG5vIGxlYWsuCi0KLUNWRS1pZDogQ1ZFLTIwMTctMDM3OQotU2lnbmVkLW9mZi1ieTogTklJQkUgWXV0YWthIDxnbmlpYmVAZnNpai5vcmc+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctMDM3OQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY2lwaGVyL2VjYy5jIHwgMTcgKysrKysrKysrKysrKysrLS0KLSBtcGkvZWMuYyAgICAgfCA1MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KLSBzcmMvbXBpLmggICAgfCAgMSArCi0gMyBmaWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY2lwaGVyL2VjYy5jIGIvY2lwaGVyL2VjYy5jCi1pbmRleCBlMjViZjA5Li40ZTNlNWIxIDEwMDY0NAotLS0tIGEvY2lwaGVyL2VjYy5jCi0rKysgYi9jaXBoZXIvZWNjLmMKLUBAIC0xNjI4LDkgKzE2MjgsMjIgQEAgZWNjX2RlY3J5cHRfcmF3IChnY3J5X3NleHBfdCAqcl9wbGFpbiwgZ2NyeV9zZXhwX3Qgc19kYXRhLCBnY3J5X3NleHBfdCBrZXlwYXJtcykKLSAgIGlmIChEQkdfQ0lQSEVSKQotICAgICBsb2dfcHJpbnRwbnQgKCJlY2NfZGVjcnlwdCAgICBrRyIsICZrRywgTlVMTCk7Ci0gCi0tICBpZiAoIShmbGFncyAmIFBVQktFWV9GTEFHX0RKQl9UV0VBSykKLSsgIGlmICgoZmxhZ3MgJiBQVUJLRVlfRkxBR19ESkJfVFdFQUspKQotKyAgICB7Ci0gICAgICAgLyogRm9yIFgyNTUxOSwgYnkgaXRzIGRlZmluaXRpb24sIHZhbGlkYXRpb24gc2hvdWxkIG5vdCBiZSBkb25lLiAgKi8KLS0gICAgICAmJiAhX2djcnlfbXBpX2VjX2N1cnZlX3BvaW50ICgma0csIGVjKSkKLSsgICAgICAvKiAoSW5zdGVhZCwgd2UgZG8gb3V0cHV0IGNoZWNrLikKLSsgICAgICAgKgotKyAgICAgICAqIEhvd2V2ZXIsIHRvIG1pdGlnYXRlIHNlY3JldCBrZXkgbGVhayBmcm9tIG91ciBpbXBsZW1lbnRhdGlvbiwKLSsgICAgICAgKiB3ZSBhbHNvIGRvIGlucHV0IHZhbGlkYXRpb24gaGVyZS4gIEZvciBjb25zdGFudC10aW1lCi0rICAgICAgICogaW1wbGVtZW50YXRpb24sIHdlIGNhbiByZW1vdmUgdGhpcyBpbnB1dCB2YWxpZGF0aW9uLgotKyAgICAgICAqLwotKyAgICAgIGlmIChfZ2NyeV9tcGlfZWNfYmFkX3BvaW50ICgma0csIGVjKSkKLSsgICAgICAgIHsKLSsgICAgICAgICAgcmMgPSBHUEdfRVJSX0lOVl9EQVRBOwotKyAgICAgICAgICBnb3RvIGxlYXZlOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmICghX2djcnlfbXBpX2VjX2N1cnZlX3BvaW50ICgma0csIGVjKSkKLSAgICAgewotICAgICAgIHJjID0gR1BHX0VSUl9JTlZfREFUQTsKLSAgICAgICBnb3RvIGxlYXZlOwotZGlmZiAtLWdpdCBhL21waS9lYy5jIGIvbXBpL2VjLmMKLWluZGV4IGEwZjczNTcuLjRjMTY2MDMgMTAwNjQ0Ci0tLS0gYS9tcGkvZWMuYwotKysrIGIvbXBpL2VjLmMKLUBAIC0zOTYsNiArMzk2LDI5IEBAIGVjX2dldF90d29faW52X3AgKG1waV9lY190IGVjKQotIH0KLSAKLSAKLStzdGF0aWMgY29uc3QgY2hhciAqY3VydmUyNTUxOV9iYWRfcG9pbnRzW10gPSB7Ci0rICAiMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwKLSsgICIweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEiLAotKyAgIjB4MDBiODQ5NWYxNjA1NjI4NmZkYjEzMjljZWI4ZDA5ZGE2YWM0OWZmMWZhZTM1NjE2YWViODQxM2I3YzdhZWJlMCIsCi0rICAiMHg1NzExOWZkMGRkNGUyMmQ4ODY4ZTFjNThjNDVjNDQwNDViZWY4MzljNTViMWQwYjEyNDhjNTBhM2JjOTU5YzVmIiwKLSsgICIweDdmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZWMiLAotKyAgIjB4N2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZlZCIsCi0rICAiMHg3ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmVlIiwKLSsgIE5VTEwKLSt9OwotKwotK3N0YXRpYyBnY3J5X21waV90Ci0rc2NhbnZhbCAoY29uc3QgY2hhciAqc3RyaW5nKQotK3sKLSsgIGdwZ19lcnJfY29kZV90IHJjOwotKyAgZ2NyeV9tcGlfdCB2YWw7Ci0rCi0rICByYyA9IF9nY3J5X21waV9zY2FuICgmdmFsLCBHQ1JZTVBJX0ZNVF9IRVgsIHN0cmluZywgMCwgTlVMTCk7Ci0rICBpZiAocmMpCi0rICAgIGxvZ19mYXRhbCAoInNjYW5uaW5nIEVDQyBwYXJhbWV0ZXIgZmFpbGVkOiAlc1xuIiwgZ3BnX3N0cmVycm9yIChyYykpOwotKyAgcmV0dXJuIHZhbDsKLSt9Ci0rCi0gCi0gLyogVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplZCBhIGNvbnRleHQgZm9yIGVsbGlwdGljIGN1cnZlIGJhc2VkIG9uIHRoZQotICAgIGZpZWxkIEdGKHApLiAgUCBpcyB0aGUgcHJpbWUgc3BlY2lmeWluZyB0aGlzIGZpZWxkLCBBIGlzIHRoZSBmaXJzdAotQEAgLTQzNCw5ICs0NTcsMTcgQEAgZWNfcF9pbml0IChtcGlfZWNfdCBjdHgsIGVudW0gZ2NyeV9tcGlfZWNfbW9kZWxzIG1vZGVsLAotIAotICAgX2djcnlfbXBpX2VjX2dldF9yZXNldCAoY3R4KTsKLSAKLS0gIC8qIEFsbG9jYXRlIHNjcmF0Y2ggdmFyaWFibGVzLiAgKi8KLS0gIGZvciAoaT0wOyBpPCBESU0oY3R4LT50LnNjcmF0Y2gpOyBpKyspCi0tICAgIGN0eC0+dC5zY3JhdGNoW2ldID0gbXBpX2FsbG9jX2xpa2UgKGN0eC0+cCk7Ci0rICBpZiAobW9kZWwgPT0gTVBJX0VDX01PTlRHT01FUlkpCi0rICAgIHsKLSsgICAgICBmb3IgKGk9MDsgaTwgRElNKGN0eC0+dC5zY3JhdGNoKSAmJiBjdXJ2ZTI1NTE5X2JhZF9wb2ludHNbaV07IGkrKykKLSsgICAgICAgIGN0eC0+dC5zY3JhdGNoW2ldID0gc2NhbnZhbCAoY3VydmUyNTUxOV9iYWRfcG9pbnRzW2ldKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgLyogQWxsb2NhdGUgc2NyYXRjaCB2YXJpYWJsZXMuICAqLwotKyAgICAgIGZvciAoaT0wOyBpPCBESU0oY3R4LT50LnNjcmF0Y2gpOyBpKyspCi0rICAgICAgICBjdHgtPnQuc2NyYXRjaFtpXSA9IG1waV9hbGxvY19saWtlIChjdHgtPnApOwotKyAgICB9Ci0gCi0gICAvKiBQcmVwYXJlIGZvciBmYXN0IHJlZHVjdGlvbi4gICovCi0gICAvKiBGSVhNRTogbmVlZCBhIHRlc3QgZm9yIE5JU1QgdmFsdWVzLiAgSG93ZXZlciBpdCBkb2VzIG5vdCBnYWluIHVzCi1AQCAtMTU3MiwzICsxNjAzLDE3IEBAIF9nY3J5X21waV9lY19jdXJ2ZV9wb2ludCAoZ2NyeV9tcGlfcG9pbnRfdCBwb2ludCwgbXBpX2VjX3QgY3R4KQotIAotICAgcmV0dXJuIHJlczsKLSB9Ci0rCi0rCi0raW50Ci0rX2djcnlfbXBpX2VjX2JhZF9wb2ludCAoZ2NyeV9tcGlfcG9pbnRfdCBwb2ludCwgbXBpX2VjX3QgY3R4KQotK3sKLSsgIGludCBpOwotKyAgZ2NyeV9tcGlfdCB4X2JhZDsKLSsKLSsgIGZvciAoaSA9IDA7ICh4X2JhZCA9IGN0eC0+dC5zY3JhdGNoW2ldKTsgaSsrKQotKyAgICBpZiAoIW1waV9jbXAgKHBvaW50LT54LCB4X2JhZCkpCi0rICAgICAgcmV0dXJuIDE7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0IGEvc3JjL21waS5oIGIvc3JjL21waS5oCi1pbmRleCBiNTM4NWI1Li5hZWJhN2Y4IDEwMDY0NAotLS0tIGEvc3JjL21waS5oCi0rKysgYi9zcmMvbXBpLmgKLUBAIC0yOTYsNiArMjk2LDcgQEAgdm9pZCBfZ2NyeV9tcGlfZWNfbXVsX3BvaW50IChtcGlfcG9pbnRfdCByZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY3J5X21waV90IHNjYWxhciwgbXBpX3BvaW50X3QgcG9pbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtcGlfZWNfdCBjdHgpOwotIGludCAgX2djcnlfbXBpX2VjX2N1cnZlX3BvaW50IChnY3J5X21waV9wb2ludF90IHBvaW50LCBtcGlfZWNfdCBjdHgpOwotK2ludCBfZ2NyeV9tcGlfZWNfYmFkX3BvaW50IChnY3J5X21waV9wb2ludF90IHBvaW50LCBtcGlfZWNfdCBjdHgpOwotIAotIGdjcnlfbXBpX3QgX2djcnlfbXBpX2VjX2VjMm9zIChnY3J5X21waV9wb2ludF90IHBvaW50LCBtcGlfZWNfdCBlY3R4KTsKLSAKLS0tIAotMS44LjMuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDYtRml4LWJ1aWxkaW5nLUFBcmNoMzItQ0UtaW1wbGVtZW50YXRpb25zLXdoZW4tdGFyZ2V0LS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwNi1GaXgtYnVpbGRpbmctQUFyY2gzMi1DRS1pbXBsZW1lbnRhdGlvbnMtd2hlbi10YXJnZXQtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NWI5ZmQ0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwNi1GaXgtYnVpbGRpbmctQUFyY2gzMi1DRS1pbXBsZW1lbnRhdGlvbnMtd2hlbi10YXJnZXQtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotRnJvbSA0YTdhYTMwYWU5ZjNjZTc5OGRkODg2YzJmMmQ0MTY0YzQzMDI3NzQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS2l2aWxpbm5hIDxqdXNzaS5raXZpbGlubmFAaWtpLmZpPgotRGF0ZTogU2F0LCAyOSBKdWwgMjAxNyAxNDozNDoyMyArMDMwMAotU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGRpbmcgQUFyY2gzMiBDRSBpbXBsZW1lbnRhdGlvbnMgd2hlbiB0YXJnZXQgaXMgQVJNdjYKLSBhcmNoCi0KLSogY2lwaGVyL2NpcGhlci1nY20tYXJtdjgtYWFyY2gzMi1jZS5TOiBTZWxlY3QgQVJNdjggYXJjaGl0ZWN1cmUuCi0qIGNpcGhlci9yaWpuZGFlbC1hcm12OC1hYXJjaDMyLWNlLlM6IERpdHRvLgotKiBjaXBoZXIvc2hhMS1hcm12OC1hYXJjaDMyLWNlLlM6IERpdHRvLgotKiBjaXBoZXIvc2hhMjU2LWFybXY4LWFhcmNoMzItY2UuUzogRGl0dG8uCi0qIGNvbmZpZ3VyZS5hYyAoZ2NyeV9jdl9nY2NfaW5saW5lX2FzbV9hYXJjaDMyX2NyeXB0byk6IERpdHRvLgotLS0KLQotUmFzcGJpYW4gZGlzdHJpYnV0aW9uIGRlZmF1bHRzIHRvIEFSTXY2IGFyY2hpdGVjdHVyZSB0aHVzICdyYml0JwotaW5zdHJ1Y3Rpb24gaXMgbm90IGF2YWlsYWJsZSB3aXRoIGRlZmF1bHQgY29tcGlsZXIgZmxhZ3MuIFBhdGNoCi1hZGRzIGV4cGxpY2l0IGFyY2hpdGVjdHVyZSBzZWxlY3Rpb24gZm9yIEFSTXY4IHRvIGVuYWJsZSAncmJpdCcKLXVzYWdlIHdpdGggQVJNdjgvQUFyY2gzMi1DRSBhc3NlbWJseSBpbXBsZW1lbnRhdGlvbnMgb2YgU0hBLAotR0hBU0ggYW5kIEFFUy4KLQotUmVwb3J0ZWQtYnk6IENocmlzIEhvcnJ5IDx6ZXJiZXlAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogSnVzc2kgS2l2aWxpbm5hIDxqdXNzaS5raXZpbGlubmFAaWtpLmZpPgotCi1TaWduZWQtb2ZmLWJ5OiBQYXVsIEJhcmtlciA8cGJhcmtlckB0b2dhbmxhYnMuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0tLS0KLSBjaXBoZXIvY2lwaGVyLWdjbS1hcm12OC1hYXJjaDMyLWNlLlMgfCAxICsKLSBjaXBoZXIvcmlqbmRhZWwtYXJtdjgtYWFyY2gzMi1jZS5TICAgfCAxICsKLSBjaXBoZXIvc2hhMS1hcm12OC1hYXJjaDMyLWNlLlMgICAgICAgfCAxICsKLSBjaXBoZXIvc2hhMjU2LWFybXY4LWFhcmNoMzItY2UuUyAgICAgfCAxICsKLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgfCAxICsKLSA1IGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY2lwaGVyL2NpcGhlci1nY20tYXJtdjgtYWFyY2gzMi1jZS5TIGIvY2lwaGVyL2NpcGhlci1nY20tYXJtdjgtYWFyY2gzMi1jZS5TCi1pbmRleCBiNjFhNzg3MS4uMWRlNjZhMTYgMTAwNjQ0Ci0tLS0gYS9jaXBoZXIvY2lwaGVyLWdjbS1hcm12OC1hYXJjaDMyLWNlLlMKLSsrKyBiL2NpcGhlci9jaXBoZXItZ2NtLWFybXY4LWFhcmNoMzItY2UuUwotQEAgLTI0LDYgKzI0LDcgQEAKLSAgICAgZGVmaW5lZChIQVZFX0dDQ19JTkxJTkVfQVNNX0FBUkNIMzJfQ1JZUFRPKQotIAotIC5zeW50YXggdW5pZmllZAotKy5hcmNoIGFybXY4LWEKLSAuZnB1IGNyeXB0by1uZW9uLWZwLWFybXY4Ci0gLmFybQotIAotZGlmZiAtLWdpdCBhL2NpcGhlci9yaWpuZGFlbC1hcm12OC1hYXJjaDMyLWNlLlMgYi9jaXBoZXIvcmlqbmRhZWwtYXJtdjgtYWFyY2gzMi1jZS5TCi1pbmRleCBmMzc1ZjY3My4uNWM4ZmEzYzAgMTAwNjQ0Ci0tLS0gYS9jaXBoZXIvcmlqbmRhZWwtYXJtdjgtYWFyY2gzMi1jZS5TCi0rKysgYi9jaXBoZXIvcmlqbmRhZWwtYXJtdjgtYWFyY2gzMi1jZS5TCi1AQCAtMjQsNiArMjQsNyBAQAotICAgICBkZWZpbmVkKEhBVkVfR0NDX0lOTElORV9BU01fQUFSQ0gzMl9DUllQVE8pCi0gCi0gLnN5bnRheCB1bmlmaWVkCi0rLmFyY2ggYXJtdjgtYQotIC5mcHUgY3J5cHRvLW5lb24tZnAtYXJtdjgKLSAuYXJtCi0gCi1kaWZmIC0tZ2l0IGEvY2lwaGVyL3NoYTEtYXJtdjgtYWFyY2gzMi1jZS5TIGIvY2lwaGVyL3NoYTEtYXJtdjgtYWFyY2gzMi1jZS5TCi1pbmRleCBiMGJjNWZmZS4uYmYyYjIzM2IgMTAwNjQ0Ci0tLS0gYS9jaXBoZXIvc2hhMS1hcm12OC1hYXJjaDMyLWNlLlMKLSsrKyBiL2NpcGhlci9zaGExLWFybXY4LWFhcmNoMzItY2UuUwotQEAgLTI0LDYgKzI0LDcgQEAKLSAgICAgZGVmaW5lZChIQVZFX0dDQ19JTkxJTkVfQVNNX0FBUkNIMzJfQ1JZUFRPKSAmJiBkZWZpbmVkKFVTRV9TSEExKQotIAotIC5zeW50YXggdW5pZmllZAotKy5hcmNoIGFybXY4LWEKLSAuZnB1IGNyeXB0by1uZW9uLWZwLWFybXY4Ci0gLmFybQotIAotZGlmZiAtLWdpdCBhL2NpcGhlci9zaGEyNTYtYXJtdjgtYWFyY2gzMi1jZS5TIGIvY2lwaGVyL3NoYTI1Ni1hcm12OC1hYXJjaDMyLWNlLlMKLWluZGV4IDIwNDFhMjM3Li4yYjE3YWIxYiAxMDA2NDQKLS0tLSBhL2NpcGhlci9zaGEyNTYtYXJtdjgtYWFyY2gzMi1jZS5TCi0rKysgYi9jaXBoZXIvc2hhMjU2LWFybXY4LWFhcmNoMzItY2UuUwotQEAgLTI0LDYgKzI0LDcgQEAKLSAgICAgZGVmaW5lZChIQVZFX0dDQ19JTkxJTkVfQVNNX0FBUkNIMzJfQ1JZUFRPKSAmJiBkZWZpbmVkKFVTRV9TSEEyNTYpCi0gCi0gLnN5bnRheCB1bmlmaWVkCi0rLmFyY2ggYXJtdjgtYQotIC5mcHUgY3J5cHRvLW5lb24tZnAtYXJtdjgKLSAuYXJtCi0gCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyN2ZhYTdmNC4uNjZlN2NkNjcgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE2MTksNiArMTYxOSw3IEBAIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIEdDQyBpbmxpbmUgYXNzZW1ibGVyIHN1cHBvcnRzIEFBcmNoMzIgQ3J5cHRvIEV4dGVuc2lvbiBpCi0gICAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRSgKLSAgICAgICAgICAgW1tfX2FzbV9fKAotICAgICAgICAgICAgICAgICAiLnN5bnRheCB1bmlmaWVkXG5cdCIKLSsgICAgICAgICAgICAgICAgIi5hcmNoIGFybXY4LWFcblx0IgotICAgICAgICAgICAgICAgICAiLmFybVxuXHQiCi0gICAgICAgICAgICAgICAgICIuZnB1IGNyeXB0by1uZW9uLWZwLWFybXY4XG5cdCIKLSAKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0XzEuOC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHRfMS44LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyOTgyZjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHRfMS44LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1TVU1NQVJZID0gIkdlbmVyYWwgcHVycG9zZSBjcnlwdG9ncmFwaGljIGxpYnJhcnkgYmFzZWQgb24gdGhlIGNvZGUgZnJvbSBHbnVQRyIKLUhPTUVQQUdFID0gImh0dHA6Ly9kaXJlY3RvcnkuZnNmLm9yZy9wcm9qZWN0L2xpYmdjcnlwdC8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKLVNFQ1RJT04gPSAibGlicyIKLQotIyBoZWxwZXIgcHJvZ3JhbSBnY3J5cHRybmQgYW5kIGdldHJhbmRvbSBhcmUgdW5kZXIgR1BMLCByZXN0IExHUEwKLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErICYgR1BMdjMrIgotTElDRU5TRV8ke1BOfSA9ICJMR1BMdjIuMSsiCi1MSUNFTlNFXyR7UE59LWRldiA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCi1MSUNFTlNFX2R1bXBzZXhwLWRldiA9ICJHUEx2MysiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1iYmI0NjEyMTFhMzNiMTM0ZDQyZWQ1ZWU4MDJiMzdmZiIKLQotREVQRU5EUyA9ICJsaWJncGctZXJyb3IiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgotU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vbGliZ2NyeXB0L2xpYmdjcnlwdC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtYW5kLXVzZS1wa2ctY29uZmlnLWZvci1saWJnY3J5cHQtaW5zdGVhZC1vZi1jb25mLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtdGVzdHMtYmVuY2gtc2xvcGUuYy13b3JrYXJvdW5kLUlDRS1mYWlsdXJlLW9uLW1pcHMtdy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWxpYmdjcnlwdC1maXgtYnVpbGRpbmctZXJyb3Itd2l0aC1PMi1pbi1zeXNyb290LXBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC10ZXN0cy1NYWtlZmlsZS5hbS1maXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1wdGhyZWFkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtZWNjLUFkZC1pbnB1dC12YWxpZGF0aW9uLWZvci1YMjU1MTkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1GaXgtYnVpbGRpbmctQUFyY2gzMi1DRS1pbXBsZW1lbnRhdGlvbnMtd2hlbi10YXJnZXQtLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIxMTBjZTQzNTJmOWVhNmY1NjBiZGM2YzU2NDRhZTkzYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNmU0NzBiN2YyZDNhNzAzZTg3NDdmMDVhOGMxOWQ5ZTEwZTI2ZWJmMmQ1ZjNkNzFmZjc1YTQwZjUwNGUxMmVlIgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2xpYmdjcnlwdC1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWFzbSIKLUVYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAiTElCVE9PTEZMQUdTPSctLXRhZz1DQyciCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJjYXBhYmlsaXRpZXMiCi1QQUNLQUdFQ09ORklHW2NhcGFiaWxpdGllc10gPSAiLS13aXRoLWNhcGFiaWxpdGllcywtLXdpdGhvdXQtY2FwYWJpbGl0aWVzLGxpYmNhcCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgRWxzZSB0aGlzIGNvdWxkIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aGUgb25lIGluIGFjbG9jYWwtY29weQotCXJtIC1mICR7U30vbTQvZ3BnLWVycm9yLm00Ci19Ci0KLSMgbGliZ2NyeXB0LnBjIGlzIGFkZGVkIGxvY2FsbHkgYW5kIHRodXMgaW5zdGFsbGVkIGhlcmUKLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWluc3RhbGwgLWQgJHtEfS8ke2xpYmRpcn0vcGtnY29uZmlnCi0JaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vc3JjL2xpYmdjcnlwdC5wYyAke0R9LyR7bGliZGlyfS9wa2djb25maWcvCi19Ci0KLVBBQ0tBR0VTID0rICJkdW1wc2V4cC1kZXYiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2htYWMyNTYiCi1GSUxFU19kdW1wc2V4cC1kZXYgKz0gIiR7YmluZGlyfS9kdW1wc2V4cCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHRfMS44LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjguMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzZlNjUzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHRfMS44LjIuYmIKQEAgLTAsMCArMSw1MyBAQAorU1VNTUFSWSA9ICJHZW5lcmFsIHB1cnBvc2UgY3J5cHRvZ3JhcGhpYyBsaWJyYXJ5IGJhc2VkIG9uIHRoZSBjb2RlIGZyb20gR251UEciCitIT01FUEFHRSA9ICJodHRwOi8vZGlyZWN0b3J5LmZzZi5vcmcvcHJvamVjdC9saWJnY3J5cHQvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZzEwY29kZS5jb20vZ251cGcvaW5kZXgiCitTRUNUSU9OID0gImxpYnMiCisKKyMgaGVscGVyIHByb2dyYW0gZ2NyeXB0cm5kIGFuZCBnZXRyYW5kb20gYXJlIHVuZGVyIEdQTCwgcmVzdCBMR1BMCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyAmIEdQTHYzKyIKK0xJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIgorTElDRU5TRV8ke1BOfS1kZXYgPSAiR1BMdjIrICYgTEdQTHYyLjErIgorTElDRU5TRV9kdW1wc2V4cC1kZXYgPSAiR1BMdjMrIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9YmJiNDYxMjExYTMzYjEzNGQ0MmVkNWVlODAyYjM3ZmYiCisKK0RFUEVORFMgPSAibGliZ3BnLWVycm9yIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKK1NSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L2xpYmdjcnlwdC9saWJnY3J5cHQtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1hbmQtdXNlLXBrZy1jb25maWctZm9yLWxpYmdjcnlwdC1pbnN0ZWFkLW9mLWNvbmYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy10ZXN0cy1iZW5jaC1zbG9wZS5jLXdvcmthcm91bmQtSUNFLWZhaWx1cmUtb24tbWlwcy13LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItbGliZ2NyeXB0LWZpeC1idWlsZGluZy1lcnJvci13aXRoLU8yLWluLXN5c3Jvb3QtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LXRlc3RzLU1ha2VmaWxlLmFtLWZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLXB0aHJlYWQucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gImNmYjBiNWM3OWVhYjA3Njg2YjY4OTgxNjBhNDA3MTM5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM4MDY0Y2FlNzU1ODE0NGIxM2VmMGViODcwOTM0MTIzODBlZmExNmM0ZWUzMGFkMTJlY2I1NDg4NmE1MjRjMDciCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vbGliZ2NyeXB0LWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtYXNtIgorRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICJMSUJUT09MRkxBR1M9Jy0tdGFnPUNDJyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImNhcGFiaWxpdGllcyIKK1BBQ0tBR0VDT05GSUdbY2FwYWJpbGl0aWVzXSA9ICItLXdpdGgtY2FwYWJpbGl0aWVzLC0td2l0aG91dC1jYXBhYmlsaXRpZXMsbGliY2FwIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJIyBFbHNlIHRoaXMgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRoZSBvbmUgaW4gYWNsb2NhbC1jb3B5CisJcm0gLWYgJHtTfS9tNC9ncGctZXJyb3IubTQKK30KKworIyBsaWJnY3J5cHQucGMgaXMgYWRkZWQgbG9jYWxseSBhbmQgdGh1cyBpbnN0YWxsZWQgaGVyZQorZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaW5zdGFsbCAtZCAke0R9LyR7bGliZGlyfS9wa2djb25maWcKKwlpbnN0YWxsIC1tIDA2NDQgJHtCfS9zcmMvbGliZ2NyeXB0LnBjICR7RH0vJHtsaWJkaXJ9L3BrZ2NvbmZpZy8KK30KKworUEFDS0FHRVMgPSsgImR1bXBzZXhwLWRldiIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vaG1hYzI1NiIKK0ZJTEVTX2R1bXBzZXhwLWRldiArPSAiJHtiaW5kaXJ9L2R1bXBzZXhwIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8xLjI3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4yNy5iYgppbmRleCBiMmUyZDUwLi5iNzRmMDc5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8xLjI3LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMjcuYmIKQEAgLTIxLDcgKzIxLDcgQEAKIAogQklOQ09ORklHID0gIiR7YmluZGlyfS9ncGctZXJyb3ItY29uZmlnIgogCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnIGdldHRleHQKK2luaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcgZ2V0dGV4dCBtdWx0aWxpYl9oZWFkZXIKIENQUEZMQUdTICs9ICItUCIKIGRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKIAlUQVJHRVRfRklMRT1saW51eC1nbnUKQEAgLTUzLDYgKzUzLDcgQEAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewogCSMgd2UgZG9uJ3QgaGF2ZSBjb21tb24gbGlzcCBpbiBPRQogCXJtIC1yZiAiJHtEfSR7ZGF0YWRpcn0vY29tbW9uLWxpc3AvIgorCW9lX211bHRpbGliX2hlYWRlciBncGctZXJyb3IuaCBncGdydC5oCiB9CiAKIEZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2dwZy1lcnJvciIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY2FsL2xpYmljYWwvUmVtb3ZlLWNtYWtlLWNoZWNrLWZvci1QZXJsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbC9SZW1vdmUtY21ha2UtY2hlY2stZm9yLVBlcmwucGF0Y2gKaW5kZXggYzVjMGNiMC4uYjUwZjUwZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbC9SZW1vdmUtY21ha2UtY2hlY2stZm9yLVBlcmwucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbC9SZW1vdmUtY21ha2UtY2hlY2stZm9yLVBlcmwucGF0Y2gKQEAgLTE0LDExICsxNCwxMSBAQAogIENNYWtlTGlzdHMudHh0IHwgMyArLS0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBkNWFhZDgwLi41Y2M5ODYzIDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtOTEsOCArOTEsNyBAQCBpZihTSEFSRURfT05MWSkKK0luZGV4OiBsaWJpY2FsLTIuMC4wL0NNYWtlTGlzdHMudHh0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGliaWNhbC0yLjAuMC5vcmlnL0NNYWtlTGlzdHMudHh0CisrKysgbGliaWNhbC0yLjAuMC9DTWFrZUxpc3RzLnR4dAorQEAgLTExNiw4ICsxMTYsNyBAQCBpZihTSEFSRURfT05MWSkKICAgIHNldChMSUJSQVJZX1RZUEUgU0hBUkVEKQogIGVuZGlmKCkKICAKQEAgLTI2LDggKzI2LDUgQEAKIC1maW5kX3BhY2thZ2UoUGVybCBSRVFVSVJFRCkKICtzZXQoUEVSTF9FWEVDVVRBQkxFIHBlcmwpCiAgCi0gIyBNU1ZDIHNwZWNpZmljIGRlZmluaXRpb25zCi0gaWYoV0lOMzIpCi0tLSAKLTIuMS40Ci0KKyAjIEVuc3VyZSBmaW5kaW5nIDY0Yml0IGxpYnMgd2hlbiB1c2luZyA2NC1iaXQgY29tcGlsZXJzCisgaWYoQ01BS0VfQ0xfNjQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNhbC9saWJpY2FsXzIuMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbF8yLjAuMC5iYgppbmRleCBkNGZlODY4Li5kY2MyMWNjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNhbC9saWJpY2FsXzIuMC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY2FsL2xpYmljYWxfMi4wLjAuYmIKQEAgLTE3LDUgKzE3LDMgQEAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliaWNhbC9saWJpY2FsL3JlbGVhc2VzIgogCiBpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZwotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZS8qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmtzYmEvbGlia3NiYS9rc2JhLWFkZC1wa2djb25maWctc3VwcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJrc2JhL2xpYmtzYmEva3NiYS1hZGQtcGtnY29uZmlnLXN1cHBvcnQucGF0Y2gKaW5kZXggZDI4ZGZkOS4uNWFmZTZkZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmtzYmEvbGlia3NiYS9rc2JhLWFkZC1wa2djb25maWctc3VwcG9ydC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlia3NiYS9saWJrc2JhL2tzYmEtYWRkLXBrZ2NvbmZpZy1zdXBwb3J0LnBhdGNoCkBAIC02LDEzICs2LDEzIEBACiAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIAotSW5kZXg6IGxpYmtzYmEtMS4zLjAvTWFrZWZpbGUuYW0KK0luZGV4OiBsaWJrc2JhLTEuMy41L01ha2VmaWxlLmFtCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGlia3NiYS0xLjMuMC5vcmlnL01ha2VmaWxlLmFtCTIwMTQtMDUtMTMgMjE6Mzk6MjIuMzkwMzg1NjQ2ICswMDAwCi0rKysgbGlia3NiYS0xLjMuMC9NYWtlZmlsZS5hbQkyMDE0LTA1LTEzIDIxOjM5OjIyLjQ2MjM4NTY0NiArMDAwMAotQEAgLTIxLDYgKzIxLDkgQEAKKy0tLSBsaWJrc2JhLTEuMy41Lm9yaWcvTWFrZWZpbGUuYW0KKysrKyBsaWJrc2JhLTEuMy41L01ha2VmaWxlLmFtCitAQCAtMjAsNiArMjAsOSBAQAorIAogIEFDTE9DQUxfQU1GTEFHUyA9IC1JIG00IC1JIGdsL200Ci0gQVVUT01BS0VfT1BUSU9OUyA9IGRpc3QtYnppcDIgbm8tZGlzdC1nemlwCiAgCiArcGtnY29uZmlnZGlyID0gJHtsaWJkaXJ9L3BrZ2NvbmZpZwogK3BrZ2NvbmZpZ19EQVRBID0ga3NiYS5wYwpAQCAtMjAsMTEgKzIwLDExIEBACiAgIyAoQSBzdWl0YWJsZSBnaXRsb2ctdG8tY2hhbmdlbG9nIHNjcmlwdCBjYW4gYmUgZm91bmQgaW4gR251UEcgbWFzdGVyLikKICBHSVRMT0dfVE9fQ0hBTkdFTE9HPWdpdGxvZy10by1jaGFuZ2Vsb2cKICAKLUluZGV4OiBsaWJrc2JhLTEuMy4wL2NvbmZpZ3VyZS5hYworSW5kZXg6IGxpYmtzYmEtMS4zLjUvY29uZmlndXJlLmFjCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGlia3NiYS0xLjMuMC5vcmlnL2NvbmZpZ3VyZS5hYwkyMDE0LTA1LTEzIDIxOjM5OjIyLjM5MDM4NTY0NiArMDAwMAotKysrIGxpYmtzYmEtMS4zLjAvY29uZmlndXJlLmFjCTIwMTQtMDUtMTMgMjE6Mzk6MjIuNDYyMzg1NjQ2ICswMDAwCi1AQCAtNDAwLDYgKzQwMCw3IEBACistLS0gbGlia3NiYS0xLjMuNS5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGxpYmtzYmEtMS4zLjUvY29uZmlndXJlLmFjCitAQCAtNDE0LDYgKzQxNCw3IEBAIGdsL01ha2VmaWxlCiAgc3JjL01ha2VmaWxlCiAgc3JjL2tzYmEtY29uZmlnCiAgc3JjL3ZlcnNpb25pbmZvLnJjCkBAIC0zMiwxMCArMzIsMTAgQEAKICB0ZXN0cy9NYWtlZmlsZQogIGRvYy9NYWtlZmlsZQogIF0pCi1JbmRleDogbGlia3NiYS0xLjMuMC9rc2JhLnBjLmluCitJbmRleDogbGlia3NiYS0xLjMuNS9rc2JhLnBjLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgbGlia3NiYS0xLjMuMC9rc2JhLnBjLmluCTIwMTQtMDUtMTMgMjE6Mzk6MjIuNDYyMzg1NjQ2ICswMDAwCistLS0gL2Rldi9udWxsCisrKysgbGlia3NiYS0xLjMuNS9rc2JhLnBjLmluCiBAQCAtMCwwICsxLDE3IEBACiArcHJlZml4PUBwcmVmaXhACiArZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QApAQCAtNTQsMTEgKzU0LDExIEBACiArTGlicy5wcml2YXRlOiAtTCR7bGliZGlyfSAtbGdwZy1lcnJvcgogK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9CiArCi1JbmRleDogbGlia3NiYS0xLjMuMC9zcmMva3NiYS5tNAorSW5kZXg6IGxpYmtzYmEtMS4zLjUvc3JjL2tzYmEubTQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJrc2JhLTEuMy4wLm9yaWcvc3JjL2tzYmEubTQJMjAxNC0wNS0xMyAyMTozOToyMi4zOTAzODU2NDYgKzAwMDAKLSsrKyBsaWJrc2JhLTEuMy4wL3NyYy9rc2JhLm00CTIwMTQtMDUtMTMgMjE6NDk6MDMuNjUwMzgyNjk2ICswMDAwCi1AQCAtMjIsMTggKzIyLDcgQEAKKy0tLSBsaWJrc2JhLTEuMy41Lm9yaWcvc3JjL2tzYmEubTQKKysrKyBsaWJrc2JhLTEuMy41L3NyYy9rc2JhLm00CitAQCAtMjIsMTggKzIyLDcgQEAgZG5sIHdpdGggYSBjaGFuZ2VkIEFQSS4KICBkbmwKICBBQ19ERUZVTihbQU1fUEFUSF9LU0JBXSwKICBbQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQpAQCAtNzcsNyArNzcsNyBAQAogICAgdG1wPWlmZWxzZShbJDFdLCAsMToxLjAuMCwkMSkKICAgIGlmIGVjaG8gIiR0bXAiIHwgZ3JlcCAnOicgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbCA7IHRoZW4KICAgICAgIHJlcV9rc2JhX2FwaT1gZWNobyAiJHRtcCIgICAgIHwgc2VkICdzL1woLipcKTpcKC4qXCkvXDEvJ2AKLUBAIC00Myw0OCArMzIsMTMgQEAKK0BAIC00Myw0OCArMzIsMTMgQEAgQUNfREVGVU4oW0FNX1BBVEhfS1NCQV0sCiAgICAgICBtaW5fa3NiYV92ZXJzaW9uPSIkdG1wIgogICAgZmkKICAKQEAgLTEyOSw3ICsxMjksNyBAQAogICAgICAgICAgaWYgdGVzdCAiJHRtcCIgLWd0IDAgOyB0aGVuCiAgICAgICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW0tTQkEgQVBJIHZlcnNpb25dKQogICAgICAgICAgICAgaWYgdGVzdCAiJHJlcV9rc2JhX2FwaSIgLWVxICIkdG1wIiA7IHRoZW4KLUBAIC05NywxMCArNTEsOCBAQAorQEAgLTk3LDEwICs1MSw4IEBAIEFDX0RFRlVOKFtBTV9QQVRIX0tTQkFdLAogICAgICAgZmkKICAgIGZpCiAgICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgpAQCAtMTQxLDcgKzE0MSw3IEBACiAgICAgIGlmIHRlc3QgeCIkbGlia3NiYV9jb25maWdfaG9zdCIgIT0geG5vbmUgOyB0aGVuCiAgICAgICAgaWYgdGVzdCB4IiRsaWJrc2JhX2NvbmZpZ19ob3N0IiAhPSB4IiRob3N0IiA7IHRoZW4KICAgIEFDX01TR19XQVJOKFtbCi1AQCAtMTE0LDggKzY2LDYgQEAKK0BAIC0xMTQsOCArNjYsNiBAQCBBQ19ERUZVTihbQU1fUEFUSF9LU0JBXSwKICAgICAgICBmaQogICAgICBmaQogICAgZWxzZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmtzYmEvbGlia3NiYV8xLjMuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJrc2JhL2xpYmtzYmFfMS4zLjUuYmIKaW5kZXggMzZiNjY3MC4uYTdlYTUzZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmtzYmEvbGlia3NiYV8xLjMuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlia3NiYS9saWJrc2JhXzEuMy41LmJiCkBAIC0yNCwzICsyNCw1IEBACiAJIyBFbHNlIHRoZXNlIGNvdWxkIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKIAlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAogfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJtcGMvbGlibXBjXzEuMC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm1wYy9saWJtcGNfMS4wLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4ODEzMjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm1wYy9saWJtcGNfMS4wLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1yZXF1aXJlIGxpYm1wYy5pbmMKLQotREVQRU5EUyA9ICJnbXAgbXBmciIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MRVNTRVI7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgotU1JDX1VSSSA9ICJodHRwczovL2Z0cC5nbnUub3JnL2dudS9tcGMvbXBjLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ2YTFkNWY4ZGRlYTNhYmQyY2MzZTk4ZjU4MzUyZDI2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYxN2RlY2M2ZWEwOTg4OWZiMDhlZGUzMzA5MTdhMDBiMTY4MDliOGRiODhjMjljMzFiZmJiNDljYmY4OGVjYzMiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3Lm11bHRpcHJlY2lzaW9uLm9yZy9pbmRleC5waHA/cHJvZz1tcGMmcGFnZT1kb3dubG9hZCIKLQotUyA9ICIke1dPUktESVJ9L21wYy0ke1BWfSIKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm1wYy9saWJtcGNfMS4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibXBjL2xpYm1wY18xLjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDI1ZDM4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm1wYy9saWJtcGNfMS4xLjAuYmIKQEAgLTAsMCArMSwxNSBAQAorcmVxdWlyZSBsaWJtcGMuaW5jCisKK0RFUEVORFMgPSAiZ21wIG1wZnIiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9mdHAuZ251Lm9yZy9nbnUvbXBjL21wYy0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MTI1NDA0ZTQxZTQ4MmVjNjgyODJhMmU2ODdmNmM3MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2OTg1YzUzODE0M2MxMjA4ZGNiMWFjNDJjZWRhZDZmZjUyZTI2N2I0N2U1Zjk3MDE4M2EzZTc1MTI1YjQzYzJlIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5tdWx0aXByZWNpc2lvbi5vcmcvbXBjL2Rvd25sb2FkLmh0bWwiCisKK1MgPSAiJHtXT1JLRElSfS9tcGMtJHtQVn0iCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubC8wMDAxLVBBVENILWZpeC1saWJubC0zLjQuMC1tdXNsLWNvbXBpbGUtcHJvYmxlbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubC8wMDAxLVBBVENILWZpeC1saWJubC0zLjQuMC1tdXNsLWNvbXBpbGUtcHJvYmxlbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjBhMjk5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sLzAwMDEtUEFUQ0gtZml4LWxpYm5sLTMuNC4wLW11c2wtY29tcGlsZS1wcm9ibGVtLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IGxpYm5sLTMuNC4wIG11c2wgY29tcGlsZSBwcm9ibGVtICAKK0F2b2lkIGluNl9hZGRyIHJlZGVmaW5pdGlvbgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSHVhbmcgUWl5dSA8aHVhbmdxeS5mbnN0QGNuLmZ1aml0c3UuY29tPgorLS0tCisgaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lmX2JyaWRnZS5oIHwgMSAtCisgaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lwdjYuaCAgICAgIHwgMSAtCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lmX2JyaWRnZS5oIGIvaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lmX2JyaWRnZS5oCitpbmRleCBmMjQwNTBiLi44Zjc0OTBjIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lmX2JyaWRnZS5oCisrKysgYi9pbmNsdWRlL2xpbnV4LXByaXZhdGUvbGludXgvaWZfYnJpZGdlLmgKK0BAIC0xNSw3ICsxNSw2IEBACisgCisgI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisgI2luY2x1ZGUgPGxpbnV4L2lmX2V0aGVyLmg+CistI2luY2x1ZGUgPGxpbnV4L2luNi5oPgorIAorICNkZWZpbmUgU1lTRlNfQlJJREdFX0FUVFIJImJyaWRnZSIKKyAjZGVmaW5lIFNZU0ZTX0JSSURHRV9GREIJImJyZm9yd2FyZCIKK2RpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4LXByaXZhdGUvbGludXgvaXB2Ni5oIGIvaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lwdjYuaAoraW5kZXggZTA1ZTY4NC4uZjE2MzQ5ZCAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvbGludXgtcHJpdmF0ZS9saW51eC9pcHY2LmgKKysrKyBiL2luY2x1ZGUvbGludXgtcHJpdmF0ZS9saW51eC9pcHY2LmgKK0BAIC0yLDcgKzIsNiBAQAorICNkZWZpbmUgX0lQVjZfSAorIAorICNpbmNsdWRlIDxhc20vYnl0ZW9yZGVyLmg+CistI2luY2x1ZGUgPGxpbnV4L2luNi5oPgorIAorIC8qIFRoZSBsYXRlc3QgZHJhZnRzIGRlY2xhcmVkIGluY3JlYXNlIGluIG1pbmltYWwgbXR1IHVwIHRvIDEyODAuICovCisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubC9maXgtcGt0bG9jX3N5bnRheF9oLXJhY2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibmwvbGlibmwvZml4LXBrdGxvY19zeW50YXhfaC1yYWNlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWFhMGJkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubC9maXgtcGt0bG9jX3N5bnRheF9oLXJhY2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLWxpYm5sIGhhcyBwcm9ncmVzc2VkIHRvIDAuMy4yIGFuZCB0aGVyZSBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYW55Ci0ibWFrZSAtaiIgaXNzdWVzIHdpdGggdGhpcyBidWlsZCBhZnRlciBteSBsaW1pdGVkIHRlc3Rpbmcgb24gdGhhdAotbmV3ZXIgdmVyc2lvbiBzbyB3ZSBjYW4gYXNzdW1lIHRoaXMgaXNzdWUgaXMgZml4ZWQgdXBzdHJlYW0KLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxtYXJ0aW4uamFuc2FAZ21haWwuY29tPgotCi1JbmRleDogbGlibmwtMy4yLjI1L2xpYi9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYm5sLTMuMi4yNS5vcmlnL2xpYi9NYWtlZmlsZS5hbQotKysrIGxpYm5sLTMuMi4yNS9saWIvTWFrZWZpbGUuYW0KLUBAIC00Niw5ICs0NiwxMiBAQCBDTEVBTkZJTEVTID0gXAotIAotICMgSGFjayB0byBhdm9pZCB1c2luZyB5bHdyYXAuIEl0IGRvZXMgbm90IGZ1bmN0aW9uIGNvcnJlY3RseSBpbiBjb21iaW5hdGlvbgotICMgd2l0aCAtLWhlYWRlci1maWxlPQotK3JvdXRlL3BrdGxvYy5sbzogcm91dGUvcGt0bG9jX3N5bnRheC5oIHJvdXRlL3BrdGxvY19ncmFtbWFyLmgKLStyb3V0ZS9wa3Rsb2NfZ3JhbW1hci5oOiByb3V0ZS9wa3Rsb2NfZ3JhbW1hci5jCi0gcm91dGUvcGt0bG9jX2dyYW1tYXIuYzogcm91dGUvcGt0bG9jX2dyYW1tYXIubAotIAkkKEFNX1ZfR0VOKSAkKE1LRElSX1ApIHJvdXRlOyAkKEZMRVgpIC0taGVhZGVyLWZpbGU9cm91dGUvcGt0bG9jX2dyYW1tYXIuaCAkKExGTEFHUykgLW8gJEAgJF4KLSAKLStyb3V0ZS9wa3Rsb2Nfc3ludGF4Lmg6IHJvdXRlL3BrdGxvY19zeW50YXguYwotIHJvdXRlL3BrdGxvY19zeW50YXguYzogcm91dGUvcGt0bG9jX3N5bnRheC55Ci0gCSQoQU1fVl9HRU4pICQoTUtESVJfUCkgcm91dGU7ICQoWUFDQykgLWQgJChZRkxBR1MpIC1vICRAICReCi0gCi1AQCAtMTAyLDcgKzEwNSw5IEBAIEJVSUxUX1NPVVJDRVMgPSBcCi0gCXJvdXRlL2Nscy9lbWF0Y2hfZ3JhbW1hci5jIFwKLSAJcm91dGUvY2xzL2VtYXRjaF9zeW50YXguYyBcCi0gCXJvdXRlL3BrdGxvY19ncmFtbWFyLmMgXAotLQlyb3V0ZS9wa3Rsb2Nfc3ludGF4LmMKLSsgICByb3V0ZS9wa3Rsb2Nfc3ludGF4LmMgXAotKyAgIHJvdXRlL3BrdGxvY19zeW50YXguaCBcCi0rICAgcm91dGUvcGt0bG9jX2dyYW1tYXIuaAotIAotIEVYVFJBX0RJU1QgPSBcCi0gCXJvdXRlL3BrdGxvY19ncmFtbWFyLmwgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sXzMuMi4yOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubF8zLjIuMjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkNDgzOWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sXzMuMi4yOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciBhcHBsaWNhdGlvbnMgZGVhbGluZyB3aXRoIG5ldGxpbmsgc29ja2V0cyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuaW5mcmFkZWFkLm9yZy9+dGdyL2xpYm5sLyIKLVNFQ1RJT04gPSAibGlicy9uZXR3b3JrIgotCi1QRSA9ICIxIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLURFUEVORFMgPSAiZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS90aG9tMzExLyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke0JQTn0ke0BkLmdldFZhcignUFYnKS5yZXBsYWNlKCcuJywnXycpfS8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZml4LXBrdGxvY19zeW50YXhfaC1yYWNlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1wYy1maWxlLnBhdGNoIFwKLSIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vdGhvbTMxMS8ke0JQTn0vcmVsZWFzZXMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhOGJhNjJhNWM0Zjg4M2Y0ZTQ5M2E0NmQxZjM3MzNmZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwYmViNTkzZGM2YWJmZmZhMThhNWM3ODdiMjc4ODQ5NzljMWI3ZTdmMWZkNDY4YzgwMWUzY2M5MzhhNjg1OTIyIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYm5sLTMuc28uKiBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibmwuc28uKiBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9IgotUlJFUExBQ0VTXyR7UE59ID0gImxpYm5sMiIKLVJDT05GTElDVFNfJHtQTn0gPSAibGlibmwyIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbGlibmwvY2xpLyovKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2xpYm5sL2NsaS8qLyouYSIKLQotUEFDS0FHRVMgKz0gIiR7UE59LWNsaSAke1BOfS1nZW5sICR7UE59LWlkaWFnICR7UE59LW5mICR7UE59LXJvdXRlICR7UE59LXhmcm0iCi1GSUxFU18ke1BOfS1jbGkgICA9ICIke2xpYmRpcn0vbGlibmwtY2xpLTMuc28uKiBcCi0gICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibmwvY2xpLyovKi5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZ2VubC1jdHJsLWxpc3QgXAotICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2lkaWFnLXNvY2tldC1kZXRhaWxzIFwKLSAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9uZi0qIFwKLSAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9ubC0qIgotRklMRVNfJHtQTn0tZ2VubCAgPSAiJHtsaWJkaXJ9L2xpYm5sLWdlbmwtMy5zby4qIFwKLSAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJubC1nZW5sLnNvLioiCi1GSUxFU18ke1BOfS1pZGlhZyA9ICIke2xpYmRpcn0vbGlibmwtaWRpYWctMy5zby4qIgotRklMRVNfJHtQTn0tbmYgICAgPSAiJHtsaWJkaXJ9L2xpYm5sLW5mLTMuc28uKiIKLUZJTEVTXyR7UE59LXJvdXRlID0gIiR7bGliZGlyfS9saWJubC1yb3V0ZS0zLnNvLioiCi1GSUxFU18ke1BOfS14ZnJtICA9ICIke2xpYmRpcn0vbGlibmwteGZybS0zLnNvLioiCi1SUkVQTEFDRVNfJHtQTn0tZ2VubCA9ICJsaWJubC1nZW5sMiIKLVJDT05GTElDVFNfJHtQTn0tZ2VubCA9ICJsaWJubC1nZW5sMiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubF8zLjQuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubF8zLjQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGRjNjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sXzMuNC4wLmJiCkBAIC0wLDAgKzEsNDYgQEAKK1NVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciBhcHBsaWNhdGlvbnMgZGVhbGluZyB3aXRoIG5ldGxpbmsgc29ja2V0cyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuaW5mcmFkZWFkLm9yZy9+dGdyL2xpYm5sLyIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorCitQRSA9ICIxIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK0RFUEVORFMgPSAiZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS90aG9tMzExLyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke0JQTn0ke0BkLmdldFZhcignUFYnKS5yZXBsYWNlKCcuJywnXycpfS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZml4LXBjLWZpbGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1QQVRDSC1maXgtbGlibmwtMy40LjAtbXVzbC1jb21waWxlLXByb2JsZW0ucGF0Y2ggXAorIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Rob20zMTEvJHtCUE59L3JlbGVhc2VzIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOGY3MTkxMGMwM2RiMzYzYjQxZTJlYTYyMDU3YTQzMTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjcyODc2MzdhZTcxYzZkYjZmODllMTQyMmM5OTVmMDQwN2ZmMmZlNTBjZWNkNjFhMzEyYjZhOWIwOTIxZjViZiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWJubC0zLnNvLiogXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm5sLnNvLiogXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfSIKK1JSRVBMQUNFU18ke1BOfSA9ICJsaWJubDIiCitSQ09ORkxJQ1RTXyR7UE59ID0gImxpYm5sMiIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2xpYm5sL2NsaS8qLyoubGEiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9saWJubC9jbGkvKi8qLmEiCisKK1BBQ0tBR0VTICs9ICIke1BOfS1jbGkgJHtQTn0tZ2VubCAke1BOfS1pZGlhZyAke1BOfS1uZiAke1BOfS1yb3V0ZSAke1BOfS14ZnJtIgorRklMRVNfJHtQTn0tY2xpICAgPSAiJHtsaWJkaXJ9L2xpYm5sLWNsaS0zLnNvLiogXAorICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm5sL2NsaS8qLyouc28gXAorICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2dlbmwtY3RybC1saXN0IFwKKyAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9pZGlhZy1zb2NrZXQtZGV0YWlscyBcCisgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbmYtKiBcCisgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbmwtKiIKK0ZJTEVTXyR7UE59LWdlbmwgID0gIiR7bGliZGlyfS9saWJubC1nZW5sLTMuc28uKiBcCisgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibmwtZ2VubC5zby4qIgorRklMRVNfJHtQTn0taWRpYWcgPSAiJHtsaWJkaXJ9L2xpYm5sLWlkaWFnLTMuc28uKiIKK0ZJTEVTXyR7UE59LW5mICAgID0gIiR7bGliZGlyfS9saWJubC1uZi0zLnNvLioiCitGSUxFU18ke1BOfS1yb3V0ZSA9ICIke2xpYmRpcn0vbGlibmwtcm91dGUtMy5zby4qIgorRklMRVNfJHtQTn0teGZybSAgPSAiJHtsaWJkaXJ9L2xpYm5sLXhmcm0tMy5zby4qIgorUlJFUExBQ0VTXyR7UE59LWdlbmwgPSAibGlibmwtZ2VubDIiCitSQ09ORkxJQ1RTXyR7UE59LWdlbmwgPSAibGlibmwtZ2VubDIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMi9saWJwY3JlMi1DVkUtMjAxNy03MTg2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTIvbGlicGNyZTItQ1ZFLTIwMTctNzE4Ni5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZhM2JmZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMi9saWJwY3JlMi1DVkUtMjAxNy03MTg2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotbGlicGNyZTItMTAuMjM6IEZpeCBDVkUtMjAxNy03MTg2Ci0KLUEgZnV6eiBvbiBsaWJwY3JlMSB0aHJvdWdoIHRoZSBwY3JldGVzdCB1dGlsaXR5IHJldmVhbGVkIGFuIGludmFsaWQgcmVhZCBpbiB0aGUKLWxpYnJhcnkuIEZvciB3aG8gaXMgaW50ZXJlc3RlZCBpbiBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBidWcsIHdpbGwKLWZvbGxvdyBhIGZlZWRiYWNrIGZyb20gdXBzdHJlYW06Ci0KLVRoaXMgd2FzIGEgZ2VudWluZSBidWcgaW4gdGhlIDMyLWJpdCBsaWJyYXJ5LiBUaGFua3MgZm9yIGZpbmRpbmcgaXQuIFRoZSBjcmFzaAotd2FzIGNhdXNlZCBieSB0cnlpbmcgdG8gZmluZCBhIFVuaWNvZGUgcHJvcGVydHkgZm9yIGEgY29kZSB2YWx1ZSBncmVhdGVyIHRoYW4KLTB4MTBmZmZmLCB0aGUgVW5pY29kZSBtYXhpbXVtLCB3aGVuIHJ1bm5pbmcgaW4gbm9uLVVURiBtb2RlICh3aGVyZSBjaGFyYWN0ZXIKLXZhbHVlcyBjYW4gYmUgdXAgdG8gMHhmZmZmZmZmZikuCi0KLVRoZSBjb21wbGV0ZSBBU2FuIG91dHB1dDoKLQotIyBwY3JldGVzdCAtMzIgLWQgJEZJTEUKLT09MTQ3ODg9PUVSUk9SOiBBZGRyZXNzU2FuaXRpemVyOiBTRUdWIG9uIHVua25vd24gYWRkcmVzcyAweDdmMWJiZmZlZDRkZiAocGMgMHg3ZjFiYmVlM2ZlNmIgYnAgMHg3ZmZmOGI1MGQ4YzAgc3AgMHg3ZmZmOGI1MGQzYTAgVDApCi09PTE0Nzg4PT1UaGUgc2lnbmFsIGlzIGNhdXNlZCBieSBhIFJFQUQgbWVtb3J5IGFjY2Vzcy4KLSAgICAjMCAweDdmMWJiZWUzZmU2YSBpbiBtYXRjaCAvdG1wL3BvcnRhZ2UvZGV2LWxpYnMvbGlicGNyZS04LjQwL3dvcmsvcGNyZS04LjQwL3BjcmVfZXhlYy5jOjU0NzM6MTgKLSAgICAjMSAweDdmMWJiZWUwOTIyNiBpbiBwY3JlMzJfZXhlYyAvdG1wL3BvcnRhZ2UvZGV2LWxpYnMvbGlicGNyZS04LjQwL3dvcmsvcGNyZS04LjQwL3BjcmVfZXhlYy5jOjY5MzY6OAotICAgICMyIDB4NTI3ZDZjIGluIG1haW4gL3RtcC9wb3J0YWdlL2Rldi1saWJzL2xpYnBjcmUtOC40MC93b3JrL3BjcmUtOC40MC9wY3JldGVzdC5jOjUyMTg6OQotICAgICMzIDB4N2YxYmJkZGQ2NzhmIGluIF9fbGliY19zdGFydF9tYWluIC90bXAvcG9ydGFnZS9zeXMtbGlicy9nbGliYy0yLjIzLXIzL3dvcmsvZ2xpYmMtMi4yMy9jc3UvLi4vY3N1L2xpYmMtc3RhcnQuYzoyODkKLSAgICAjNCAweDQxYjQzOCBpbiBfaW5pdCAoL3Vzci9iaW4vcGNyZXRlc3QrMHg0MWI0MzgpCi0KLUFkZHJlc3NTYW5pdGl6ZXIgY2FuIG5vdCBwcm92aWRlIGFkZGl0aW9uYWwgaW5mby4KLVNVTU1BUlk6IEFkZHJlc3NTYW5pdGl6ZXI6IFNFR1YgL3RtcC9wb3J0YWdlL2Rldi1saWJzL2xpYnBjcmUtOC40MC93b3JrL3BjcmUtOC40MC9wY3JlX2V4ZWMuYzo1NDczOjE4IGluIG1hdGNoCi09PTE0Nzg4PT1BQk9SVElORwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3Zjcy5wY3JlLm9yZy9wY3JlMi9jb2RlL3RydW5rL3NyYy9wY3JlMl91Y2QuYz92aWV3PXBhdGNoJnIxPTMxNiZyMj02NzAmc29ydGJ5PWRhdGUgXAotICAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly92Y3MucGNyZS5vcmcvcGNyZTIvY29kZS90cnVuay9zcmMvcGNyZTJfaW50ZXJuYWwuaD92aWV3PXBhdGNoJnIxPTYwMCZyMj02NzAmc29ydGJ5PWRhdGVdCi1DVkU6IENWRS0yMDE3LTcxODYKLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0KLS0tLSB0cnVuay9zcmMvcGNyZTJfdWNkLmMgIDIwMTUvMDcvMTcgMTU6NDQ6NTEgMzE2Ci0rKysgdHJ1bmsvc3JjL3BjcmUyX3VjZC5jICAyMDE3LzAyLzI0IDE4OjI1OjMyIDY3MAotQEAgLTQxLDYgKzQxLDIwIEBACi0gCi0gY29uc3QgY2hhciAqUFJJVih1bmljb2RlX3ZlcnNpb24pID0gIjguMC4wIjsKLSAKLSsvKiBJZiB0aGUgMzItYml0IGxpYnJhcnkgaXMgcnVuIGluIG5vbi0zMi1iaXQgbW9kZSwgY2hhcmFjdGVyIHZhbHVlcwotK2dyZWF0ZXIgdGhhbiAweDEwZmZmZiBtYXkgYmUgZW5jb3VudGVyZWQuIEZvciB0aGVzZSB3ZSBzZXQgdXAgYQotK3NwZWNpYWwgcmVjb3JkLiAqLwotKwotKyNpZiBQQ1JFMl9DT0RFX1VOSVRfV0lEVEggPT0gMzIKLStjb25zdCB1Y2RfcmVjb3JkIFBSSVYoZHVtbXlfdWNkX3JlY29yZClbXSA9IHt7Ci0rICB1Y3BfQ29tbW9uLCAgICAvKiBzY3JpcHQgKi8KLSsgIHVjcF9DbiwgICAgICAgIC8qIHR5cGUgdW5hc3NpZ25lZCAqLwotKyAgdWNwX2diT3RoZXIsICAgLyogZ3JhcGhlbWUgYnJlYWsgcHJvcGVydHkgKi8KLSsgIDAsICAgICAgICAgICAgIC8qIGNhc2Ugc2V0ICovCi0rICAwLCAgICAgICAgICAgICAvKiBvdGhlciBjYXNlICovCi0rICB9fTsKLSsjZW5kaWYKLSsKLSAvKiBXaGVuIHJlY29tcGlsaW5nIHRhYmxlcyB3aXRoIGEgbmV3IFVuaWNvZGUgdmVyc2lvbiwgcGxlYXNlIGNoZWNrIHRoZQotIHR5cGVzIGluIHRoaXMgc3RydWN0dXJlIGRlZmluaXRpb24gZnJvbSBwY3JlMl9pbnRlcm5hbC5oICh0aGUgYWN0dWFsCi0gZmllbGQgbmFtZXMgd2lsbCBiZSBkaWZmZXJlbnQpOgotLS0tIHRydW5rL3NyYy9wY3JlMl9pbnRlcm5hbC5oIDIwMTYvMTEvMTkgMTI6NDY6MjQgNjAwCi0rKysgdHJ1bmsvc3JjL3BjcmUyX2ludGVybmFsLmggMjAxNy8wMi8yNCAxODoyNTozMiA2NzAKLUBAIC0xNzc0LDEwICsxNzc0LDE3IEBACi0gLyogVUNEIGFjY2VzcyBtYWNyb3MgKi8KLSAKLSAjZGVmaW5lIFVDRF9CTE9DS19TSVpFIDEyOAotLSNkZWZpbmUgR0VUX1VDRChjaCkgKFBSSVYodWNkX3JlY29yZHMpICsgXAotKyNkZWZpbmUgUkVBTF9HRVRfVUNEKGNoKSAoUFJJVih1Y2RfcmVjb3JkcykgKyBcCi0gICAgICAgICBQUklWKHVjZF9zdGFnZTIpW1BSSVYodWNkX3N0YWdlMSlbKGludCkoY2gpIC8gVUNEX0JMT0NLX1NJWkVdICogXAotICAgICAgICAgVUNEX0JMT0NLX1NJWkUgKyAoaW50KShjaCkgJSBVQ0RfQkxPQ0tfU0laRV0pCi0gCi0rI2lmIFBDUkUyX0NPREVfVU5JVF9XSURUSCA9PSAzMgotKyNkZWZpbmUgR0VUX1VDRChjaCkgKChjaCA+IE1BWF9VVEZfQ09ERV9QT0lOVCk/IFwKLSsgIFBSSVYoZHVtbXlfdWNkX3JlY29yZCkgOiBSRUFMX0dFVF9VQ0QoY2gpKQotKyNlbHNlCi0rI2RlZmluZSBHRVRfVUNEKGNoKSBSRUFMX0dFVF9VQ0QoY2gpCi0rI2VuZGlmCi0rCi0gI2RlZmluZSBVQ0RfQ0hBUlRZUEUoY2gpICAgIEdFVF9VQ0QoY2gpLT5jaGFydHlwZQotICNkZWZpbmUgVUNEX1NDUklQVChjaCkgICAgICBHRVRfVUNEKGNoKS0+c2NyaXB0Ci0gI2RlZmluZSBVQ0RfQ0FURUdPUlkoY2gpICAgIFBSSVYodWNwX2dlbnR5cGUpW1VDRF9DSEFSVFlQRShjaCldCi1AQCAtMTgzNCw2ICsxODQxLDkgQEAKLSAjZGVmaW5lIF9wY3JlMl9kZWZhdWx0X2NvbXBpbGVfY29udGV4dCBQQ1JFMl9TVUZGSVgoX3BjcmUyX2RlZmF1bHRfY29tcGlsZV9jb250ZXh0XykKLSAjZGVmaW5lIF9wY3JlMl9kZWZhdWx0X21hdGNoX2NvbnRleHQgICBQQ1JFMl9TVUZGSVgoX3BjcmUyX2RlZmF1bHRfbWF0Y2hfY29udGV4dF8pCi0gI2RlZmluZSBfcGNyZTJfZGVmYXVsdF90YWJsZXMgICAgICAgICAgUENSRTJfU1VGRklYKF9wY3JlMl9kZWZhdWx0X3RhYmxlc18pCi0rI2lmIFBDUkUyX0NPREVfVU5JVF9XSURUSCA9PSAzMgotKyNkZWZpbmUgX3BjcmUyX2R1bW15X3VjZF9yZWNvcmQgICAgICAgIFBDUkUyX1NVRkZJWChfcGNyZTJfZHVtbXlfdWNkX3JlY29yZF8pCi0rI2VuZGlmCi0gI2RlZmluZSBfcGNyZTJfaHNwYWNlX2xpc3QgICAgICAgICAgICAgUENSRTJfU1VGRklYKF9wY3JlMl9oc3BhY2VfbGlzdF8pCi0gI2RlZmluZSBfcGNyZTJfdnNwYWNlX2xpc3QgICAgICAgICAgICAgUENSRTJfU1VGRklYKF9wY3JlMl92c3BhY2VfbGlzdF8pCi0gI2RlZmluZSBfcGNyZTJfdWNkX2Nhc2VsZXNzX3NldHMgICAgICAgUENSRTJfU1VGRklYKF9wY3JlMl91Y2RfY2FzZWxlc3Nfc2V0c18pCi1AQCAtMTg1OCw2ICsxODY4LDkgQEAKLSBleHRlcm4gY29uc3QgdWludDMyX3QgICAgICAgICAgICAgICAgICBQUklWKHZzcGFjZV9saXN0KVtdOwotIGV4dGVybiBjb25zdCB1aW50MzJfdCAgICAgICAgICAgICAgICAgIFBSSVYodWNkX2Nhc2VsZXNzX3NldHMpW107Ci0gZXh0ZXJuIGNvbnN0IHVjZF9yZWNvcmQgICAgICAgICAgICAgICAgUFJJVih1Y2RfcmVjb3JkcylbXTsKLSsjaWYgUENSRTJfQ09ERV9VTklUX1dJRFRIID09IDMyCi0rZXh0ZXJuIGNvbnN0IHVjZF9yZWNvcmQgICAgICAgICAgICAgICAgUFJJVihkdW1teV91Y2RfcmVjb3JkKVtdOwotKyNlbmRpZgotIGV4dGVybiBjb25zdCB1aW50OF90ICAgICAgICAgICAgICAgICAgIFBSSVYodWNkX3N0YWdlMSlbXTsKLSBleHRlcm4gY29uc3QgdWludDE2X3QgICAgICAgICAgICAgICAgICBQUklWKHVjZF9zdGFnZTIpW107Ci0gZXh0ZXJuIGNvbnN0IHVpbnQzMl90ICAgICAgICAgICAgICAgICAgUFJJVih1Y3BfZ2J0YWJsZSlbXTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyL2xpYnBjcmUyLUNWRS0yMDE3LTg3ODYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMi9saWJwY3JlMi1DVkUtMjAxNy04Nzg2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYWZhZmMxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyL2xpYnBjcmUyLUNWRS0yMDE3LTg3ODYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi1saWJwY3JlMi0xMC4yMzogRml4IENWRS0yMDE3LTg3ODYKLQotVGhlIHBjcmUydGVzdC5jIGluIFBDUkUyIDEwLjIzIGFsbG93cyByZW1vdGUgYXR0YWNrZXJzIHRvIGNhdXNlIGEgZGVuaWFsIG9mCi1zZXJ2aWNlIChoZWFwLWJhc2VkIGJ1ZmZlciBvdmVyZmxvdykgb3IgcG9zc2libHkgaGF2ZSB1bnNwZWNpZmllZCBvdGhlciBpbXBhY3QKLXZpYSBhIGNyYWZ0ZWQgcmVndWxhciBleHByZXNzaW9uLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3Zjcy5wY3JlLm9yZy9wY3JlMi9jb2RlL3RydW5rL3NyYy9wY3JlMnRlc3QuYz9yMT02OTImcjI9Njk3JnZpZXc9cGF0Y2hdCi1DVkU6IENWRS0yMDE3LTg3ODYKLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0KLS0tLSB0cnVuay9zcmMvcGNyZTJ0ZXN0LmMgIDIwMTcvMDMvMjEgMTY6MTg6NTQgNjkyCi0rKysgdHJ1bmsvc3JjL3BjcmUydGVzdC5jICAyMDE3LzAzLzIxIDE4OjM2OjEzIDY5NwotQEAgLTEwMTcsOSArMTAxNyw5IEBACi0gICBpZiAodGVzdF9tb2RlID09IFBDUkU4X01PREUpIFwKLSAgICAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzgoYSxHKGIsOCksRyhHKGIsOCksX3NpemUpKTsgXAotICAgZWxzZSBpZiAodGVzdF9tb2RlID09IFBDUkUxNl9NT0RFKSBcCi0tICAgIHIgPSBwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZV8xNihhLEcoYiwxNiksRyhHKGIsMTYpLF9zaXplKSk7IFwKLSsgICAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzE2KGEsRyhiLDE2KSxHKEcoYiwxNiksX3NpemUvMikpOyBcCi0gICBlbHNlIFwKLS0gICAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzMyKGEsRyhiLDMyKSxHKEcoYiwzMiksX3NpemUpKQotKyAgICByID0gcGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfMzIoYSxHKGIsMzIpLEcoRyhiLDMyKSxfc2l6ZS80KSkKLSAKLSAjZGVmaW5lIFBDUkUyX0dFVF9PVkVDVE9SX0NPVU5UKGEsYikgXAotICAgaWYgKHRlc3RfbW9kZSA9PSBQQ1JFOF9NT0RFKSBcCi1AQCAtMTM5OSw2ICsxMzk5LDkgQEAKLSAKLSAvKiAtLS0tLSBDb21tb24gbWFjcm9zIGZvciB0d28tbW9kZSBjYXNlcyAtLS0tLSAqLwotIAotKyNkZWZpbmUgQllURU9ORSAoQklUT05FLzgpCi0rI2RlZmluZSBCWVRFVFdPIChCSVRUV08vOCkKLSsKLSAjZGVmaW5lIENBU1RGTEQodCxhLGIpIFwKLSAgICgodGVzdF9tb2RlID09IEcoRyhQQ1JFLEJJVE9ORSksX01PREUpKT8gKHQpKEcoYSxCSVRPTkUpLT5iKSA6IFwKLSAgICAgKHQpKEcoYSxCSVRUV08pLT5iKSkKLUBAIC0xNDgxLDkgKzE0ODQsOSBAQAotIAotICNkZWZpbmUgUENSRTJfR0VUX0VSUk9SX01FU1NBR0UocixhLGIpIFwKLSAgIGlmICh0ZXN0X21vZGUgPT0gRyhHKFBDUkUsQklUT05FKSxfTU9ERSkpIFwKLS0gICAgciA9IEcocGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfLEJJVE9ORSkoYSxHKGIsQklUT05FKSxHKEcoYixCSVRPTkUpLF9zaXplKSk7IFwKLSsgICAgciA9IEcocGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfLEJJVE9ORSkoYSxHKGIsQklUT05FKSxHKEcoYixCSVRPTkUpLF9zaXplL0JZVEVPTkUpKTsgXAotICAgZWxzZSBcCi0tICAgIHIgPSBHKHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXyxCSVRUV08pKGEsRyhiLEJJVFRXTyksRyhHKGIsQklUVFdPKSxfc2l6ZSkpCi0rICAgIHIgPSBHKHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXyxCSVRUV08pKGEsRyhiLEJJVFRXTyksRyhHKGIsQklUVFdPKSxfc2l6ZS9CWVRFVFdPKSkKLSAKLSAjZGVmaW5lIFBDUkUyX0dFVF9PVkVDVE9SX0NPVU5UKGEsYikgXAotICAgaWYgKHRlc3RfbW9kZSA9PSBHKEcoUENSRSxCSVRPTkUpLF9NT0RFKSkgXAotQEAgLTE5MDQsNyArMTkwNyw3IEBACi0gI2RlZmluZSBQQ1JFMl9ERkFfTUFUQ0goYSxiLGMsZCxlLGYsZyxoLGksaikgXAotICAgYSA9IHBjcmUyX2RmYV9tYXRjaF8xNihHKGIsMTYpLChQQ1JFMl9TUFRSMTYpYyxkLGUsZixHKGcsMTYpLGgsaSxqKQotICNkZWZpbmUgUENSRTJfR0VUX0VSUk9SX01FU1NBR0UocixhLGIpIFwKLS0gIHIgPSBwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZV8xNihhLEcoYiwxNiksRyhHKGIsMTYpLF9zaXplKSkKLSsgIHIgPSBwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZV8xNihhLEcoYiwxNiksRyhHKGIsMTYpLF9zaXplLzIpKQotICNkZWZpbmUgUENSRTJfR0VUX09WRUNUT1JfQ09VTlQoYSxiKSBhID0gcGNyZTJfZ2V0X292ZWN0b3JfY291bnRfMTYoRyhiLDE2KSkKLSAjZGVmaW5lIFBDUkUyX0dFVF9TVEFSVENIQVIoYSxiKSBhID0gcGNyZTJfZ2V0X3N0YXJ0Y2hhcl8xNihHKGIsMTYpKQotICNkZWZpbmUgUENSRTJfSklUX0NPTVBJTEUocixhLGIpIHIgPSBwY3JlMl9qaXRfY29tcGlsZV8xNihHKGEsMTYpLGIpCi1AQCAtMjAwMCw3ICsyMDAzLDcgQEAKLSAjZGVmaW5lIFBDUkUyX0RGQV9NQVRDSChhLGIsYyxkLGUsZixnLGgsaSxqKSBcCi0gICBhID0gcGNyZTJfZGZhX21hdGNoXzMyKEcoYiwzMiksKFBDUkUyX1NQVFIzMiljLGQsZSxmLEcoZywzMiksaCxpLGopCi0gI2RlZmluZSBQQ1JFMl9HRVRfRVJST1JfTUVTU0FHRShyLGEsYikgXAotLSAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzMyKGEsRyhiLDMyKSxHKEcoYiwzMiksX3NpemUpKQotKyAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzMyKGEsRyhiLDMyKSxHKEcoYiwzMiksX3NpemUvNCkpCi0gI2RlZmluZSBQQ1JFMl9HRVRfT1ZFQ1RPUl9DT1VOVChhLGIpIGEgPSBwY3JlMl9nZXRfb3ZlY3Rvcl9jb3VudF8zMihHKGIsMzIpKQotICNkZWZpbmUgUENSRTJfR0VUX1NUQVJUQ0hBUihhLGIpIGEgPSBwY3JlMl9nZXRfc3RhcnRjaGFyXzMyKEcoYiwzMikpCi0gI2RlZmluZSBQQ1JFMl9KSVRfQ09NUElMRShyLGEsYikgciA9IHBjcmUyX2ppdF9jb21waWxlXzMyKEcoYSwzMiksYikKLUBAIC0yODg5LDcgKzI4OTIsNyBAQAotICAgewotICAgaWYgKHBidWZmZXIzMiAhPSBOVUxMKSBmcmVlKHBidWZmZXIzMik7Ci0gICBwYnVmZmVyMzJfc2l6ZSA9IDQqbGVuICsgNDsKLS0gIGlmIChwYnVmZmVyMzJfc2l6ZSA8IDI1NikgcGJ1ZmZlcjMyX3NpemUgPSAyNTY7Ci0rICBpZiAocGJ1ZmZlcjMyX3NpemUgPCA1MTIpIHBidWZmZXIzMl9zaXplID0gNTEyOwotICAgcGJ1ZmZlcjMyID0gKHVpbnQzMl90ICopbWFsbG9jKHBidWZmZXIzMl9zaXplKTsKLSAgIGlmIChwYnVmZmVyMzIgPT0gTlVMTCkKLSAgICAgewotQEAgLTc2MDAsNyArNzYwMyw4IEBACi0gICBpbnQgZXJyY29kZTsKLSAgIGNoYXIgKmVuZHB0cjsKLSAKLS0vKiBFbnN1cmUgdGhlIHJlbGV2YW50IG5vbi04LWJpdCBidWZmZXIgaXMgYXZhaWxhYmxlLiAqLwotKy8qIEVuc3VyZSB0aGUgcmVsZXZhbnQgbm9uLTgtYml0IGJ1ZmZlciBpcyBhdmFpbGFibGUuIEVuc3VyZSB0aGF0IGl0IGlzIGF0IAotK2xlYXN0IDEyOCBjb2RlIHVuaXRzLCBiZWNhdXNlIGl0IGlzIHVzZWQgZm9yIHJldHJpZXZpbmcgZXJyb3IgbWVzc2FnZXMuICovCi0gCi0gI2lmZGVmIFNVUFBPUlRfUENSRTJfMTYKLSAgIGlmICh0ZXN0X21vZGUgPT0gUENSRTE2X01PREUpCi1AQCAtNzYyMCw3ICs3NjI0LDcgQEAKLSAjaWZkZWYgU1VQUE9SVF9QQ1JFMl8zMgotICAgaWYgKHRlc3RfbW9kZSA9PSBQQ1JFMzJfTU9ERSkKLSAgICAgewotLSAgICBwYnVmZmVyMzJfc2l6ZSA9IDI1NjsKLSsgICAgcGJ1ZmZlcjMyX3NpemUgPSA1MTI7Ci0gICAgIHBidWZmZXIzMiA9ICh1aW50MzJfdCAqKW1hbGxvYyhwYnVmZmVyMzJfc2l6ZSk7Ci0gICAgIGlmIChwYnVmZmVyMzIgPT0gTlVMTCkKLSAgICAgICB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMi9wY3JlLWNyb3NzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTIvcGNyZS1jcm9zcy5wYXRjaAppbmRleCA5NTE2Y2FmLi44NzFjZGZjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMi9wY3JlLWNyb3NzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyL3BjcmUtY3Jvc3MucGF0Y2gKQEAgLTksMTEgKzksMTEgQEAKIAogU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CiAKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCAzOGYxZDQxLi4yYmRlMDgzIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMjk4LDkgKzI5OCwyMSBAQCBiaW5fU0NSSVBUUyA9IHBjcmUyLWNvbmZpZworSW5kZXg6IHBjcmUyLTEwLjMwL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcGNyZTItMTAuMzAub3JpZy9NYWtlZmlsZS5hbQorKysrIHBjcmUyLTEwLjMwL01ha2VmaWxlLmFtCitAQCAtMzI1LDkgKzMyNSwyMSBAQCBiaW5fU0NSSVBUUyA9IHBjcmUyLWNvbmZpZwogICMjIHRvIGNvcHkgYSBkaXN0cmlidXRlZCBzZXQgb2YgdGFibGVzIHRoYXQgYXJlIGRlZmluZWQgZm9yIEFTQ0lJIGNvZGUuIEluIHRoaXMKICAjIyBjYXNlLCBkZnRhYmxlcyBpcyBub3QgbmVlZGVkLgogIApAQCAtMzUsMTMgKzM1LDEzIEBACiAgc3JjL3BjcmUyX2NoYXJ0YWJsZXMuYzogZGZ0YWJsZXMkKEVYRUVYVCkKICAJcm0gLWYgJEAKICAJLi9kZnRhYmxlcyQoRVhFRVhUKSAkQAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggZDdjNTdhYS4uZDZlYjBhYSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNTksNiArNTksMjMgQEAgdGhlbgotICAgZmkKLSBmaQorSW5kZXg6IHBjcmUyLTEwLjMwL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBjcmUyLTEwLjMwLm9yaWcvY29uZmlndXJlLmFjCisrKysgcGNyZTItMTAuMzAvY29uZmlndXJlLmFjCitAQCAtNjAsNiArNjAsMjMgQEAgZmkKKyAjIFRoaXMgaXMgYSBuZXcgdGhpbmcgcmVxdWlyZWQgdG8gc3RvcCBhIHdhcm5pbmcgZnJvbSBhdXRvbWFrZSAxLjEyCisgbTRfaWZkZWYoW0FNX1BST0dfQVJdLCBbQU1fUFJPR19BUl0pCiAgCiAraWYgdGVzdCB4IiRjcm9zc19jb21waWxpbmciID0geHllczsgdGhlbgogKyAgICBDQ19GT1JfQlVJTEQ9IiR7Q0NfRk9SX0JVSUxELWdjY30iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMl8xMC4yMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjIzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTJiMDI4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjIzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhlcmUgYXJlIHR3byBtYWpvciB2ZXJzaW9ucyBvZiB0aGUgUENSRSBsaWJyYXJ5LiBUaGUgXAotbmV3ZXN0IHZlcnNpb24gaXMgUENSRTIsIHdoaWNoIGlzIGEgcmUtd29ya2luZyBvZiB0aGUgb3JpZ2luYWwgUENSRSBcCi1saWJyYXJ5IHRvIHByb3ZpZGUgYW4gZW50aXJlbHkgbmV3IEFQSS4gVGhlIG9yaWdpbmFsLCB2ZXJ5IHdpZGVseSBcCi1kZXBsb3llZCBQQ1JFIGxpYnJhcnkncyBBUEkgYW5kIGZlYXR1cmUgYXJlIHN0YWJsZSwgZnV0dXJlIHJlbGVhc2VzIFwKLSB3aWxsIGJlIGZvciBidWdmaXhlcyBvbmx5LiBBbGwgbmV3IGZ1dHVyZSBmZWF0dXJlcyB3aWxsIGJlIHRvIFBDUkUyLCBcCi1ub3QgdGhlIG9yaWdpbmFsIFBDUkUgOC54IHNlcmllcy4iCi1TVU1NQVJZID0gIlBlcmwgQ29tcGF0aWJsZSBSZWd1bGFyIEV4cHJlc3Npb25zIHZlcnNpb24gMiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucGNyZS5vcmciCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT0zZGUzNGRmNDllMWZlM2MzYjU5YTA4ZGZmMjE0NDg4YiIKLQotU1JDX1VSSSA9ICJodHRwczovL2Z0cC5wY3JlLm9yZy9wdWIvcGNyZS9wY3JlMi0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3BjcmUtY3Jvc3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGlicGNyZTItQ1ZFLTIwMTctODc4Ni5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJwY3JlMi1DVkUtMjAxNy03MTg2LnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImIyY2QwMGNhN2UyNDA0OTA0MDA5OWIwYTQ2YmIzNjQ5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRmYzc5YjkxODc3MWYwMmQzMzk2OGJkMzRhNzQ5YWQ3NDg3ZmExMDE0YWViNzg3ZmFkMjlkZDM5MmI3OGM1NmUiCi0KLUNWRV9QUk9EVUNUID0gInBjcmUyIgotCi1TID0gIiR7V09SS0RJUn0vcGNyZTItJHtQVn0iCi0KLVBST1ZJREVTICs9ICJwY3JlMiIKLURFUEVORFMgKz0gImJ6aXAyIHpsaWIiCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vcGNyZTItY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLWVuYWJsZS1uZXdsaW5lLWlzLWxmIFwKLSAgICAtLWVuYWJsZS1yZWJ1aWxkLWNoYXJ0YWJsZXMgXAotICAgIC0td2l0aC1saW5rLXNpemU9MiBcCi0gICAgLS13aXRoLW1hdGNoLWxpbWl0PTEwMDAwMDAwIFwKLSIKLQotIyBTZXQgTElOS19TSVpFIGluIEJVSUxEX0NGTEFHUyBnaXZlbiB0aGF0IHRoZSBhdXRvdG9vbHMgYmJjbGFzcyB1c2UgaXQgdG8KLSMgc2V0IENGTEFHU19GT1JfQlVJTEQsIHJlcXVpcmVkIGZvciB0aGUgbGlicGNyZSBidWlsZC4KLUJVSUxEX0NGTEFHUyA9KyAiLURMSU5LX1NJWkU9MiAtSSR7Qn0vc3JjIgotQ0ZMQUdTICs9ICItRF9SRUVOVFJBTlQiCi1DWFhGTEFHU19hcHBlbmRfcG93ZXJwYyA9ICIgLWxzdGRjKysiCi0KLWV4cG9ydCBDQ0xEX0ZPUl9CVUlMRCA9IiR7QlVJTERfQ0NMRH0iCi0KLVBBQ0tBR0VTID0rICJwY3JlMmdyZXAgcGNyZTJncmVwLWRvYyBwY3JlMnRlc3QgcGNyZTJ0ZXN0LWRvYyIKLQotU1VNTUFSWV9wY3JlMmdyZXAgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIgotU1VNTUFSWV9wY3JlMmdyZXAtZG9jID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyAtIGRvY3MiCi1TVU1NQVJZX3BjcmUydGVzdCA9ICJwcm9ncmFtIGZvciB0ZXN0aW5nIFBlcmwtY29tYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMiCi1TVU1NQVJZX3BjcmUydGVzdC1kb2MgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIC0gZG9jcyIKLQotRklMRVNfcGNyZTJncmVwID0gIiR7YmluZGlyfS9wY3JlMmdyZXAiCi1GSUxFU19wY3JlMmdyZXAtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmUyZ3JlcC4xIgotRklMRVNfcGNyZTJ0ZXN0ID0gIiR7YmluZGlyfS9wY3JlMnRlc3QiCi1GSUxFU19wY3JlMnRlc3QtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmUydGVzdC4xIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMl8xMC4zMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjMwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2YzJkNjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMl8xMC4zMC5iYgpAQCAtMCwwICsxLDYxIEBACitERVNDUklQVElPTiA9ICJUaGVyZSBhcmUgdHdvIG1ham9yIHZlcnNpb25zIG9mIHRoZSBQQ1JFIGxpYnJhcnkuIFRoZSBcCituZXdlc3QgdmVyc2lvbiBpcyBQQ1JFMiwgd2hpY2ggaXMgYSByZS13b3JraW5nIG9mIHRoZSBvcmlnaW5hbCBQQ1JFIFwKK2xpYnJhcnkgdG8gcHJvdmlkZSBhbiBlbnRpcmVseSBuZXcgQVBJLiBUaGUgb3JpZ2luYWwsIHZlcnkgd2lkZWx5IFwKK2RlcGxveWVkIFBDUkUgbGlicmFyeSdzIEFQSSBhbmQgZmVhdHVyZSBhcmUgc3RhYmxlLCBmdXR1cmUgcmVsZWFzZXMgXAorIHdpbGwgYmUgZm9yIGJ1Z2ZpeGVzIG9ubHkuIEFsbCBuZXcgZnV0dXJlIGZlYXR1cmVzIHdpbGwgYmUgdG8gUENSRTIsIFwKK25vdCB0aGUgb3JpZ2luYWwgUENSRSA4Lnggc2VyaWVzLiIKK1NVTU1BUlkgPSAiUGVybCBDb21wYXRpYmxlIFJlZ3VsYXIgRXhwcmVzc2lvbnMgdmVyc2lvbiAyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wY3JlLm9yZyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTEyZDU1ZTE1YTBjNmRhNWM2NDViYTQwMzgyYmQzMjkzIgorCitTUkNfVVJJID0gImh0dHBzOi8vZnRwLnBjcmUub3JnL3B1Yi9wY3JlL3BjcmUyLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcGNyZS1jcm9zcy5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkM2FkZjRiMTMwZWVkODU0YTUzMDM5MGYwMDAyMGE2NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5MGJkNDFjNjA1ZDMwZTM3NDU3NzFlYjgxOTI4ZDc3OWYxNTgwODFhNTFiMmYzMTRiYmNjMWY3M2RlNTc3M2RiIgorCitDVkVfUFJPRFVDVCA9ICJwY3JlMiIKKworUyA9ICIke1dPUktESVJ9L3BjcmUyLSR7UFZ9IgorCitQUk9WSURFUyArPSAicGNyZTIiCitERVBFTkRTICs9ICJiemlwMiB6bGliIgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3BjcmUyLWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkCisKK0VYVFJBX09FQ09ORiA9ICJcCisgICAgLS1lbmFibGUtbmV3bGluZS1pcy1sZiBcCisgICAgLS1lbmFibGUtcmVidWlsZC1jaGFydGFibGVzIFwKKyAgICAtLXdpdGgtbGluay1zaXplPTIgXAorICAgIC0td2l0aC1tYXRjaC1saW1pdD0xMDAwMDAwMCBcCisgICAgLS1lbmFibGUtcGNyZTItMTYgXAorICAgIC0tZW5hYmxlLXBjcmUyLTMyIFwKKyIKKyMgU2V0IExJTktfU0laRSBpbiBCVUlMRF9DRkxBR1MgZ2l2ZW4gdGhhdCB0aGUgYXV0b3Rvb2xzIGJiY2xhc3MgdXNlIGl0IHRvCisjIHNldCBDRkxBR1NfRk9SX0JVSUxELCByZXF1aXJlZCBmb3IgdGhlIGxpYnBjcmUgYnVpbGQuCitCVUlMRF9DRkxBR1MgPSsgIi1ETElOS19TSVpFPTIgLUkke0J9L3NyYyIKK0NGTEFHUyArPSAiLURfUkVFTlRSQU5UIgorQ1hYRkxBR1NfYXBwZW5kX3Bvd2VycGMgPSAiIC1sc3RkYysrIgorCitleHBvcnQgQ0NMRF9GT1JfQlVJTEQgPSIke0JVSUxEX0NDTER9IgorCitQQUNLQUdFUyA9KyAibGlicGNyZTItMTYgbGlicGNyZTItMzIgcGNyZTJncmVwIHBjcmUyZ3JlcC1kb2MgcGNyZTJ0ZXN0IHBjcmUydGVzdC1kb2MiCisKK1NVTU1BUllfcGNyZTJncmVwID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyIKK1NVTU1BUllfcGNyZTJncmVwLWRvYyA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMgLSBkb2NzIgorU1VNTUFSWV9wY3JlMnRlc3QgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIgorU1VNTUFSWV9wY3JlMnRlc3QtZG9jID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyAtIGRvY3MiCisKK0ZJTEVTX2xpYnBjcmUyLTE2ID0gIiR7bGliZGlyfS9saWJwY3JlMi0xNi5zby4qIgorRklMRVNfbGlicGNyZTItMzIgPSAiJHtsaWJkaXJ9L2xpYnBjcmUyLTMyLnNvLioiCitGSUxFU19wY3JlMmdyZXAgPSAiJHtiaW5kaXJ9L3BjcmUyZ3JlcCIKK0ZJTEVTX3BjcmUyZ3JlcC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZTJncmVwLjEiCitGSUxFU19wY3JlMnRlc3QgPSAiJHtiaW5kaXJ9L3BjcmUydGVzdCIKK0ZJTEVTX3BjcmUydGVzdC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZTJ0ZXN0LjEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmVfOC40MS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmVfOC40MS5iYgppbmRleCAwZWFlZDE4Li4wMTg3YzA4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguNDEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQxLmJiCkBAIC04MCw0ICs4MCw4IEBACiAJZm9yIGkgaW4gUnVuVGVzdCBSdW5HcmVwVGVzdCB0ZXN0LWRyaXZlcjsgXAogCSAgZG8gY3AgJHtTfS8kaSAkdDsgXAogCWRvbmUKKwkjIFNraXAgdGhlIGZyX0ZSIGxvY2FsZSB0ZXN0LiBJZiB0aGUgbG9jYWxlIGZyX0ZSIGlzIGZvdW5kLCBpdCBpcyB0ZXN0ZWQuCisJIyBJZiBub3QgZm91bmQsIHRoZSB0ZXN0IGlzIHNraXBwZWQuIFRoZSB0ZXN0IHByb2dyYW0gYXNzdW1lcyBmcl9GUiBpcyBub24tVVRGLTgKKwkjIGxvY2FsZSBzbyB0aGUgdGVzdCBmYWlscyBpZiBmcl9GUiBpcyBVVEYtOCBsb2NhbGUuCisJc2VkIC1pIC1lICdzOmRvMz15ZXM6ZG8zPW5vOmcnICR7RH0ke1BURVNUX1BBVEh9L1J1blRlc3QgCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHJveHkvbGlicHJveHlfMC40LjE0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnByb3h5L2xpYnByb3h5XzAuNC4xNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGMzOWY1Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHJveHkvbGlicHJveHlfMC40LjE0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IHByb3ZpZGluZyBhdXRvbWF0aWMgcHJveHkgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYnByb3h5L2xpYnByb3h5IgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vbGlicHJveHkvbGlicHJveHkvaXNzdWVzIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly91dGlscy9wcm94eS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MTg7bWQ1PTU1MTUyYTEwMDZkN2RhZmJlZjMyYmFmOWMzMGE5OWMwIgotCi1ERVBFTkRTID0gImdsaWItMi4wIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlNzUxNGY3OGY1NDMyMjEwZTE3YTAxYjZiNjE4ZGRlMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMjVkMDQ2ODUwMzQ2YTUwNWMwNjE3NjQ2ZjFlNjhiNjYwMDkyZWZhZGY2NjU1NDhhODljMjgwOTAwMjYyZWE2IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYnByb3h5L2xpYnByb3h5L3JlbGVhc2VzIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibGlicHJveHktKD9QPHB2ZXI+LiopXC50YXIiCi0KLWluaGVyaXQgY21ha2UgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ2dub21lJywgJycsIGQpfSBnbm9tZTMiCi1QQUNLQUdFQ09ORklHW2dub21lXSA9ICItRFdJVEhfR05PTUU9eWVzLC1EV0lUSF9HTk9NRT1ubyxnY29uZiIKLVBBQ0tBR0VDT05GSUdbZ25vbWUzXSA9ICItRFdJVEhfR05PTUUzPXllcywtRFdJVEhfR05PTUUzPW5vIgotCi1FWFRSQV9PRUNNQUtFICs9ICIgXAotICAgIC1EV0lUSF9LREU0PW5vIFwKLSAgICAtRFdJVEhfTU9aSlM9bm8gXAotICAgIC1EV0lUSF9OTT1ubyBcCi0gICAgLURXSVRIX1BFUkw9bm8gXAotICAgIC1EV0lUSF9QWVRIT049bm8gXAotICAgIC1EV0lUSF9XRUJLSVQ9bm8gXAotICAgIC1ETElCX0lOU1RBTExfRElSPSR7bGliZGlyfSBcCi0gICAgLURMSUJFWEVDX0lOU1RBTExfRElSPSR7bGliZXhlY2Rpcn0gXAotIgotU0VDVVJJVFlfUElFX0NGTEFHU19yZW1vdmUgPSAiLWZQSUUgLXBpZSIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8ke0JQTn0vJHtQVn0vbW9kdWxlcyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jbWFrZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwcm94eS9saWJwcm94eV8wLjQuMTUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHJveHkvbGlicHJveHlfMC40LjE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5MWM5ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHJveHkvbGlicHJveHlfMC40LjE1LmJiCkBAIC0wLDAgKzEsMzYgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBwcm92aWRpbmcgYXV0b21hdGljIHByb3h5IGNvbmZpZ3VyYXRpb24gbWFuYWdlbWVudCIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJwcm94eS9saWJwcm94eSIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYnByb3h5L2xpYnByb3h5L2lzc3VlcyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdXRpbHMvcHJveHkuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTE4O21kNT01NTE1MmExMDA2ZDdkYWZiZWYzMmJhZjljMzBhOTljMCIKKworREVQRU5EUyA9ICJnbGliLTIuMCIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiZjZiMWQyYTFlMTdhOTljZDNkZWJhYWU2ZDA0YWIxNTIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjU0ZGI0NjQxMjBjOTUzNDY1NDU5MGI2NjgzYzdmYTM4ODdiM2RhZDBjYTFjNGNkNDEyYWYyNGZiZmNhNmQ0ZiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJwcm94eS9saWJwcm94eS9yZWxlYXNlcyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxpYnByb3h5LSg/UDxwdmVyPi4qKVwudGFyIgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdnbm9tZScsICcnLCBkKX0gZ25vbWUzIgorUEFDS0FHRUNPTkZJR1tnbm9tZV0gPSAiLURXSVRIX0dOT01FPXllcywtRFdJVEhfR05PTUU9bm8sZ2NvbmYiCitQQUNLQUdFQ09ORklHW2dub21lM10gPSAiLURXSVRIX0dOT01FMz15ZXMsLURXSVRIX0dOT01FMz1ubyIKKworRVhUUkFfT0VDTUFLRSArPSAiIFwKKyAgICAtRFdJVEhfS0RFND1ubyBcCisgICAgLURXSVRIX01PWkpTPW5vIFwKKyAgICAtRFdJVEhfTk09bm8gXAorICAgIC1EV0lUSF9QRVJMPW5vIFwKKyAgICAtRFdJVEhfUFlUSE9OPW5vIFwKKyAgICAtRFdJVEhfV0VCS0lUPW5vIFwKKyAgICAtRExJQl9JTlNUQUxMX0RJUj0ke2xpYmRpcn0gXAorICAgIC1ETElCRVhFQ19JTlNUQUxMX0RJUj0ke2xpYmV4ZWNkaXJ9IFwKKyIKK1NFQ1VSSVRZX1BJRV9DRkxBR1NfcmVtb3ZlID0gIi1mUElFIC1waWUiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vJHtCUE59LyR7UFZ9L21vZHVsZXMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjU4LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjU4LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5Zjk1ZTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi41OC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotU1VNTUFSWSA9ICJBbiBIVFRQIGxpYnJhcnkgaW1wbGVtZW50YXRpb24gaW4gQyIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvUHJvamVjdHMvbGlic291cCIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotU0VDVElPTiA9ICJ4MTEvZ25vbWUvbGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYnhtbDIgc3FsaXRlMyBpbnRsdG9vbC1uYXRpdmUiCi0KLVNIUlRfVkVSID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9saWJzb3VwLyR7U0hSVF9WRVJ9L2xpYnNvdXAtJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZWIzM2FkYjQ1OWMyMjgzZWZjNWM3ZDA5Y2NkYmJjZmMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDQyMzAwY2ExYjFiZjhhM2JiZjJmNzg4MjAzMjg3ZmY4NjI1NDJkNGZjMDQ4ZjE5YTkyYTA2OGEyN2QxN2I3MiIKLQotUyA9ICIke1dPUktESVJ9L2xpYnNvdXAtJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYwotCi0jIGxpYnNvdXAtZ25vbWUgaXMgZW50aXJlbHkgZGVwcmVjYXRlZCBhbmQganVzdCBzdHVicyBpbiAyLjQyIG9ud2FyZHMuIERpc2FibGUgYnkgZGVmYXVsdC4KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2dub21lXSA9ICItLXdpdGgtZ25vbWUsLS13aXRob3V0LWdub21lIgotUEFDS0FHRUNPTkZJR1tnc3NhcGldID0gIi0td2l0aC1nc3NhcGksLS13aXRob3V0LWdzc2FwaSxrcmI1IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXZhbGEiCi0KLSMgV2hlbiBidWlsdCB3aXRob3V0IGdub21lIHN1cHBvcnQsIGxpYnNvdXAtMi40IHdpbGwgY29udGFpbiBvbmx5IG9uZSBzaGFyZWQgbGliCi0jIGFuZCB3aWxsIHRoZXJlZm9yZSBiZWNvbWUgc3ViamVjdCB0byByZW5hbWluZyBieSBkZWJpYW4uYmJjbGFzcy4gUHJldmVudAotIyByZW5hbWluZyBpbiBvcmRlciB0byBrZWVwIHRoZSBwYWNrYWdlIG5hbWUgY29uc2lzdGVudCByZWdhcmRsZXNzIG9mIHdoZXRoZXIKLSMgZ25vbWUgc3VwcG9ydCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgotREVCSUFOX05PQVVUT05BTUVfJHtQTn0gPSAiMSIKLQotIyBnbGliLW5ldHdvcmtpbmcgaXMgbmVlZGVkIGZvciBTU0wsIHByb3hpZXMsIGV0Yy4KLVJSRUNPTU1FTkRTXyR7UE59ID0gImdsaWItbmV0d29ya2luZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNjAuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNjAuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmU3ZmY0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi42MC4zLmJiCkBAIC0wLDAgKzEsMzUgQEAKK1NVTU1BUlkgPSAiQW4gSFRUUCBsaWJyYXJ5IGltcGxlbWVudGF0aW9uIGluIEMiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL1Byb2plY3RzL2xpYnNvdXAiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKK1NFQ1RJT04gPSAieDExL2dub21lL2xpYnMiCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBsaWJ4bWwyIHNxbGl0ZTMgaW50bHRvb2wtbmF0aXZlIgorCitTSFJUX1ZFUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfS4ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzFdfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vbGlic291cC8ke1NIUlRfVkVSfS9saWJzb3VwLSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gIjRjZjg5MzdkMTYxZDNkZDcxYTY1ZjE2ODRlMzE3ODI0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFiMGRjNzYyZjIzYWJlNGUwZDI5Yjc3MzcwZTUzOWZkMzVmMzFkOGU4ZTAzMThkNmRkY2NmZjM5NWJlNjhhMjIiCisKK1MgPSAiJHtXT1JLRElSfS9saWJzb3VwLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MKKworIyBsaWJzb3VwLWdub21lIGlzIGVudGlyZWx5IGRlcHJlY2F0ZWQgYW5kIGp1c3Qgc3R1YnMgaW4gMi40MiBvbndhcmRzLiBEaXNhYmxlIGJ5IGRlZmF1bHQuCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tnbm9tZV0gPSAiLS13aXRoLWdub21lLC0td2l0aG91dC1nbm9tZSIKK1BBQ0tBR0VDT05GSUdbZ3NzYXBpXSA9ICItLXdpdGgtZ3NzYXBpLC0td2l0aG91dC1nc3NhcGksa3JiNSIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS12YWxhIgorCisjIFdoZW4gYnVpbHQgd2l0aG91dCBnbm9tZSBzdXBwb3J0LCBsaWJzb3VwLTIuNCB3aWxsIGNvbnRhaW4gb25seSBvbmUgc2hhcmVkIGxpYgorIyBhbmQgd2lsbCB0aGVyZWZvcmUgYmVjb21lIHN1YmplY3QgdG8gcmVuYW1pbmcgYnkgZGViaWFuLmJiY2xhc3MuIFByZXZlbnQKKyMgcmVuYW1pbmcgaW4gb3JkZXIgdG8ga2VlcCB0aGUgcGFja2FnZSBuYW1lIGNvbnNpc3RlbnQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyCisjIGdub21lIHN1cHBvcnQgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KK0RFQklBTl9OT0FVVE9OQU1FXyR7UE59ID0gIjEiCisKKyMgZ2xpYi1uZXR3b3JraW5nIGlzIG5lZWRlZCBmb3IgU1NMLCBwcm94aWVzLCBldGMuCitSUkVDT01NRU5EU18ke1BOfSA9ICJnbGliLW5ldHdvcmtpbmciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZy9pY29udi1tNC1yZW1vdmUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZy9pY29udi1tNC1yZW1vdmUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2gKaW5kZXggZDQ0ODkxNi4uOWU4Y2UyMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVuaXN0cmluZy9saWJ1bmlzdHJpbmcvaWNvbnYtbTQtcmVtb3ZlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bmlzdHJpbmcvbGlidW5pc3RyaW5nL2ljb252LW00LXJlbW92ZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaApAQCAtMSw2ICsxLDYgQEAKLUZyb20gOGQ5OWEzNjg2MTU2NTZhODM1ZjU1MDIzMjZhZmQzMWNlYzJjZWJmZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMzA1NjIwNjViYTllNGMyMzhlNzYxMDBiNWY5ZjBjNWFkZDBlNjM1YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDE2IFNlcCAyMDEzIDE4OjE2OjEyICswODAwCitEYXRlOiBUdWUsIDUgRGVjIDIwMTcgMDk6MzA6MzYgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gcmVtb3ZlIHRoZSB0ZXN0IHRvIGNvbnZlcnQgZXVjLWpwCiAKIFJlbW92ZSB0aGUgdGVzdCAiVGVzdCBhZ2FpbnN0IEhQLVVYIDExLjExIGJ1ZzoKQEAgLTEzLDI4ICsxMyw0NCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgogLS0tCi0gZ251bGliLW00L2ljb252Lm00IHwgICAxMSAtLS0tLS0tLS0tLQotIDEgZmlsZXMgY2hhbmdlZCwgMCBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKKy0tLQorIGdudWxpYi1tNC9pY29udi5tNCB8IDIzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIzIGRlbGV0aW9ucygtKQogCi1JbmRleDogbGlidW5pc3RyaW5nLTAuOS40L2dudWxpYi1tNC9pY29udi5tNAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYnVuaXN0cmluZy0wLjkuNC5vcmlnL2dudWxpYi1tNC9pY29udi5tNAkyMDE0LTExLTAzIDE3OjQxOjI5Ljc1NTAxMTkxNyArMDAwMAotKysrIGxpYnVuaXN0cmluZy0wLjkuNC9nbnVsaWItbTQvaWNvbnYubTQJMjAxNC0xMS0wMyAxNzo0MzowMy43OTUwMTQ0ODAgKzAwMDAKLUBAIC0xNTksMTcgKzE1OSw2IEBACitkaWZmIC0tZ2l0IGEvZ251bGliLW00L2ljb252Lm00IGIvZ251bGliLW00L2ljb252Lm00CitpbmRleCBiMzNlY2QwLi43M2I2YWExIDEwMDY0NAorLS0tIGEvZ251bGliLW00L2ljb252Lm00CisrKysgYi9nbnVsaWItbTQvaWNvbnYubTQKK0BAIC0xNjUsMjkgKzE2NSw2IEBAIEFDX0RFRlVOKFtBTV9JQ09OVl9MSU5LXSwKICAgICAgICB9CiAgICB9CiAgI2VuZGlmCiAtICAvKiBUZXN0IGFnYWluc3QgSFAtVVggMTEuMTEgYnVnOiBObyBjb252ZXJ0ZXIgZnJvbSBFVUMtSlAgdG8gVVRGLTggaXMKIC0gICAgIHByb3ZpZGVkLiAgKi8KLS0gIGlmICgvKiBUcnkgc3RhbmRhcmRpemVkIG5hbWVzLiAgKi8KLS0gICAgICBpY29udl9vcGVuICgiVVRGLTgiLCAiRVVDLUpQIikgPT0gKGljb252X3QpKC0xKQotLSAgICAgIC8qIFRyeSBJUklYLCBPU0YvMSBuYW1lcy4gICovCi0tICAgICAgJiYgaWNvbnZfb3BlbiAoIlVURi04IiwgImV1Y0pQIikgPT0gKGljb252X3QpKC0xKQotLSAgICAgIC8qIFRyeSBBSVggbmFtZXMuICAqLwotLSAgICAgICYmIGljb252X29wZW4gKCJVVEYtOCIsICJJQk0tZXVjSlAiKSA9PSAoaWNvbnZfdCkoLTEpCi0tICAgICAgLyogVHJ5IEhQLVVYIG5hbWVzLiAgKi8KLS0gICAgICAmJiBpY29udl9vcGVuICgidXRmOCIsICJldWNKUCIpID09IChpY29udl90KSgtMSkpCi0tICAgIHJlc3VsdCB8PSAxNjsKKy0gIHsKKy0gICAgLyogVHJ5IHN0YW5kYXJkaXplZCBuYW1lcy4gICovCistICAgIGljb252X3QgY2QxID0gaWNvbnZfb3BlbiAoIlVURi04IiwgIkVVQy1KUCIpOworLSAgICAvKiBUcnkgSVJJWCwgT1NGLzEgbmFtZXMuICAqLworLSAgICBpY29udl90IGNkMiA9IGljb252X29wZW4gKCJVVEYtOCIsICJldWNKUCIpOworLSAgICAvKiBUcnkgQUlYIG5hbWVzLiAgKi8KKy0gICAgaWNvbnZfdCBjZDMgPSBpY29udl9vcGVuICgiVVRGLTgiLCAiSUJNLWV1Y0pQIik7CistICAgIC8qIFRyeSBIUC1VWCBuYW1lcy4gICovCistICAgIGljb252X3QgY2Q0ID0gaWNvbnZfb3BlbiAoInV0ZjgiLCAiZXVjSlAiKTsKKy0gICAgaWYgKGNkMSA9PSAoaWNvbnZfdCkoLTEpICYmIGNkMiA9PSAoaWNvbnZfdCkoLTEpCistICAgICAgICAmJiBjZDMgPT0gKGljb252X3QpKC0xKSAmJiBjZDQgPT0gKGljb252X3QpKC0xKSkKKy0gICAgICByZXN1bHQgfD0gMTY7CistICAgIGlmIChjZDEgIT0gKGljb252X3QpKC0xKSkKKy0gICAgICBpY29udl9jbG9zZSAoY2QxKTsKKy0gICAgaWYgKGNkMiAhPSAoaWNvbnZfdCkoLTEpKQorLSAgICAgIGljb252X2Nsb3NlIChjZDIpOworLSAgICBpZiAoY2QzICE9IChpY29udl90KSgtMSkpCistICAgICAgaWNvbnZfY2xvc2UgKGNkMyk7CistICAgIGlmIChjZDQgIT0gKGljb252X3QpKC0xKSkKKy0gICAgICBpY29udl9jbG9zZSAoY2Q0KTsKKy0gIH0KICAgIHJldHVybiByZXN1bHQ7Ci0gfV1dKV0sCi0gICAgICAgICBbYW1fY3ZfZnVuY19pY29udl93b3Jrcz15ZXNdLAorIF1dKV0sCisgICAgICAgICAgIFthbV9jdl9mdW5jX2ljb252X3dvcmtzPXllc10sICwKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVuaXN0cmluZy9saWJ1bmlzdHJpbmdfMC45LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZ18wLjkuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc3YTIxMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZ18wLjkuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBmb3IgbWFuaXB1bGF0aW5nIEMgYW5kIFVuaWNvZGUgc3RyaW5ncyIKLQotREVTQ1JJUFRJT04gPSAiVGV4dCBmaWxlcyBhcmUgbm93YWRheXMgdXN1YWxseSBlbmNvZGVkIGluIFVuaWNvZGUsIGFuZCBtYXlcCi0gY29uc2lzdCBvZiB2ZXJ5IGRpZmZlcmVudCBzY3JpcHRzIGZyb20gTGF0aW4gbGV0dGVycyB0byBDaGluZXNlIEhhbnppXAotIHdpdGggbWFueSBraW5kcyBvZiBzcGVjaWFsIGNoYXJhY3RlcnMgYWNjZW50cywgcmlnaHQtdG8tbGVmdCB3cml0aW5nXAotIG1hcmtzLCBoeXBoZW5zLCBSb21hbiBudW1iZXJzLCBhbmQgbXVjaCBtb3JlLiBCdXQgdGhlIFBPU0lYIHBsYXRmb3JtXAotIEFQSXMgZm9yIHRleHQgZG8gbm90IGNvbnRhaW4gYWRlcXVhdGUgZnVuY3Rpb25zIGZvciBkZWFsaW5nIHdpdGhcCi0gcGFydGljdWxhciBwcm9wZXJ0aWVzIG9mIG1hbnkgVW5pY29kZSBjaGFyYWN0ZXJzLiBJbiBmYWN0LCB0aGUgUE9TSVhcCi0gQVBJcyBmb3IgdGV4dCBoYXZlIHNldmVyYWwgYXNzdW1wdGlvbnMgYXQgdGhlaXIgYmFzZSB3aGljaCBkb24ndCBob2xkXAotIGZvciBVbmljb2RlIHRleHQuICBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBtYW5pcHVsYXRpbmdcCi0gVW5pY29kZSBzdHJpbmdzIGFuZCBmb3IgbWFuaXB1bGF0aW5nIEMgc3RyaW5ncyBhY2NvcmRpbmcgdG8gdGhlIFVuaWNvZGVcCi0gc3RhbmRhcmQuICBUaGlzIHBhY2thZ2UgY29udGFpbnMgZG9jdW1lbnRhdGlvbi4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJ1bmlzdHJpbmcvIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiTEdQTHYzKyB8IEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9NDU7ZW5kbGluZT02NTttZDU9MDgyODdkMTZiYThkODM5ZmFlZDhkMmRjMTRkN2Q2YTUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL2xpYnVuaXN0cmluZy50ZXhpO21kNT1iODZjOWZkN2FjYWFjNjIzMDE3MjM5NjQwNjMxOTEyYyBcCi0gICAgICAgICAgICAgICAgICAgIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vaWNvbnYtbTQtcmVtb3ZlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjhlNjYzNDU0YWEzNzIxODFlZThlNDZlZGFhM2JhNGM4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljZTA4MWNiZWUxOTUxYjU1NTk3YjMwZTcwMzBiZGE5ZDdiMmYwMzRlZjkwMWExMzVmZjNhMDIwYmU1YTQxZTUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bmlzdHJpbmcvbGlidW5pc3RyaW5nXzAuOS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVuaXN0cmluZy9saWJ1bmlzdHJpbmdfMC45LjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWI3Y2JhNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bmlzdHJpbmcvbGlidW5pc3RyaW5nXzAuOS45LmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3IgbWFuaXB1bGF0aW5nIEMgYW5kIFVuaWNvZGUgc3RyaW5ncyIKKworREVTQ1JJUFRJT04gPSAiVGV4dCBmaWxlcyBhcmUgbm93YWRheXMgdXN1YWxseSBlbmNvZGVkIGluIFVuaWNvZGUsIGFuZCBtYXlcCisgY29uc2lzdCBvZiB2ZXJ5IGRpZmZlcmVudCBzY3JpcHRzIGZyb20gTGF0aW4gbGV0dGVycyB0byBDaGluZXNlIEhhbnppXAorIHdpdGggbWFueSBraW5kcyBvZiBzcGVjaWFsIGNoYXJhY3RlcnMgYWNjZW50cywgcmlnaHQtdG8tbGVmdCB3cml0aW5nXAorIG1hcmtzLCBoeXBoZW5zLCBSb21hbiBudW1iZXJzLCBhbmQgbXVjaCBtb3JlLiBCdXQgdGhlIFBPU0lYIHBsYXRmb3JtXAorIEFQSXMgZm9yIHRleHQgZG8gbm90IGNvbnRhaW4gYWRlcXVhdGUgZnVuY3Rpb25zIGZvciBkZWFsaW5nIHdpdGhcCisgcGFydGljdWxhciBwcm9wZXJ0aWVzIG9mIG1hbnkgVW5pY29kZSBjaGFyYWN0ZXJzLiBJbiBmYWN0LCB0aGUgUE9TSVhcCisgQVBJcyBmb3IgdGV4dCBoYXZlIHNldmVyYWwgYXNzdW1wdGlvbnMgYXQgdGhlaXIgYmFzZSB3aGljaCBkb24ndCBob2xkXAorIGZvciBVbmljb2RlIHRleHQuICBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBtYW5pcHVsYXRpbmdcCisgVW5pY29kZSBzdHJpbmdzIGFuZCBmb3IgbWFuaXB1bGF0aW5nIEMgc3RyaW5ncyBhY2NvcmRpbmcgdG8gdGhlIFVuaWNvZGVcCisgc3RhbmRhcmQuICBUaGlzIHBhY2thZ2UgY29udGFpbnMgZG9jdW1lbnRhdGlvbi4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJ1bmlzdHJpbmcvIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiTEdQTHYzKyB8IEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9NDU7ZW5kbGluZT02NTttZDU9MDgyODdkMTZiYThkODM5ZmFlZDhkMmRjMTRkN2Q2YTUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL2xpYnVuaXN0cmluZy50ZXhpO21kNT1lZmI4MGEzNzk5YTYwZjk1ZmVhZjgwNjYxZDRmMjA0YyBcCisgICAgICAgICAgICAgICAgICAgIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vaWNvbnYtbTQtcmVtb3ZlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjRmNjg5ZTM3ZTRjM2JkNjdkZTU3ODZhYTUxZDk4YjEzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImY1ZTkwYzA4ZjllNTQyN2NhM2EyYzBjNTNmMTlhYTM4YjI1YzUwMDkxMzUxMGFkMjVhZmVmODY0NDhiZWE4NGEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kL0FkZC1BT19SRVFVSVJFX0NBUy10by1maXgtYnVpbGQtb24tQVJNLXY2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQvQWRkLUFPX1JFUVVJUkVfQ0FTLXRvLWZpeC1idWlsZC1vbi1BUk0tdjYucGF0Y2gKaW5kZXggMGRmZjJjOC4uYzhmYWNhNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQvQWRkLUFPX1JFUVVJUkVfQ0FTLXRvLWZpeC1idWlsZC1vbi1BUk0tdjYucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQvQWRkLUFPX1JFUVVJUkVfQ0FTLXRvLWZpeC1idWlsZC1vbi1BUk0tdjYucGF0Y2gKQEAgLTI4LDEwICsyOCwxMCBAQAogIGluY2x1ZGUvbGlidW53aW5kX2kuaCB8IDEgKwogIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvYWNpbmNsdWRlLm00IGIvYWNpbmNsdWRlLm00Ci1pbmRleCA0OTdmN2MyLi45YzE1YWYxIDEwMDY0NAotLS0tIGEvYWNpbmNsdWRlLm00Ci0rKysgYi9hY2luY2x1ZGUubTQKK0luZGV4OiBsaWJ1bndpbmQtMS4yLjEvYWNpbmNsdWRlLm00Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGlidW53aW5kLTEuMi4xLm9yaWcvYWNpbmNsdWRlLm00CisrKysgbGlidW53aW5kLTEuMi4xL2FjaW5jbHVkZS5tNAogQEAgLTIyLDExICsyMiw1IEBAIGZpXSkKICBBQ19ERUZVTihbQ0hFQ0tfQVRPTUlDX09QU10sCiAgW2RubCBDaGVjayB3aGV0aGVyIHRoZSBzeXN0ZW0gaGFzIHRoZSBhdG9taWNfb3BzIHBhY2thZ2UgaW5zdGFsbGVkLgpAQCAtNDUsMTggKzQ1LDE1IEBACiAtIyAgQUNfQ0hFQ0tfTElCKGF0b21pY19vcHMsIG1haW4pCiArICBBQ19DSEVDS19MSUIoYXRvbWljX29wcywgbWFpbikKICBdKQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGlidW53aW5kX2kuaCBiL2luY2x1ZGUvbGlidW53aW5kX2kuaAotaW5kZXggMjNmNjE1ZS4uZGVhYmRmZCAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvbGlidW53aW5kX2kuaAotKysrIGIvaW5jbHVkZS9saWJ1bndpbmRfaS5oCi1AQCAtOTUsNiArOTUsNyBAQCBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICovCi0gCShwdGhyZWFkX211dGV4X3VubG9jayAhPSBOVUxMID8gcHRocmVhZF9tdXRleF91bmxvY2sgKGwpIDogMCkKK0luZGV4OiBsaWJ1bndpbmQtMS4yLjEvaW5jbHVkZS9saWJ1bndpbmRfaS5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGlidW53aW5kLTEuMi4xLm9yaWcvaW5jbHVkZS9saWJ1bndpbmRfaS5oCisrKysgbGlidW53aW5kLTEuMi4xL2luY2x1ZGUvbGlidW53aW5kX2kuaAorQEAgLTExNiw2ICsxMTYsNyBAQCBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFCisgICAgICAgICAocHRocmVhZF9tdXRleF91bmxvY2sgIT0gTlVMTCA/IHB0aHJlYWRfbXV0ZXhfdW5sb2NrIChsKSA6IDApCiAgCiAgI2lmZGVmIEhBVkVfQVRPTUlDX09QU19ICiArIyBkZWZpbmUgQU9fUkVRVUlSRV9DQVMKICAjIGluY2x1ZGUgPGF0b21pY19vcHMuaD4KICBzdGF0aWMgaW5saW5lIGludAogIGNtcHhjaGdfcHRyICh2b2lkICphZGRyLCB2b2lkICpvbGQsIHZvaWQgKm5ldykKLS0tIAotMS45LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQvZml4LW1pcHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC9maXgtbWlwcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAyMjIzNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC9maXgtbWlwcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDVmMzU0Y2I3YjljODRkYWUwMDZmMGViZDhhZDdhNzhkN2UyYWFkMGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEYXZlIFdhdHNvbiA8ZGF2ZWp3YXRzb25AZmIuY29tPgotRGF0ZTogV2VkLCAyNSBKYW4gMjAxNyAxNjoxODowMiAtMDgwMAotU3ViamVjdDogW1BBVENIXSBtaXBzL3RpbGVneDogQWRkIG1pc3NpbmcgdW53aW5kX2kuaCBoZWFkZXIgZmlsZQotCi1yZXBvcnRlZC1ieTogSm9obiBLbmlnaHQgPEpvaG4uS25pZ2h0QGJlbGtpbi5jb20+Ci0tLS0KLSBzcmMvTWFrZWZpbGUuYW0gfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCA1ZDg3NDc1NS4uN2RlNGM0MjUgMTAwNjQ0Ci0tLS0gYS9zcmMvTWFrZWZpbGUuYW0KLSsrKyBiL3NyYy9NYWtlZmlsZS5hbQotQEAgLTI4MCw3ICsyODAsNyBAQCBsaWJ1bndpbmRfaHBwYV9sYV9TT1VSQ0VTX2hwcGEgPSAkKGxpYnVud2luZF9sYV9TT1VSQ0VTX2hwcGFfY29tbW9uKQlcCi0gCWhwcGEvR3Jlc3VtZS5jIGhwcGEvR3N0ZXAuYwotIAotICMgVGhlIGxpc3Qgb2YgZmlsZXMgdGhhdCBnbyBpbmZvIGxpYnVud2luZCBhbmQgbGlidW53aW5kLW1pcHM6Ci0tbm9pbnN0X0hFQURFUlMgKz0gbWlwcy9pbml0LmggbWlwcy9vZmZzZXRzLmgKLStub2luc3RfSEVBREVSUyArPSBtaXBzL2luaXQuaCBtaXBzL29mZnNldHMuaCBtaXBzL3Vud2luZF9pLmgKLSBsaWJ1bndpbmRfbGFfU09VUkNFU19taXBzX2NvbW1vbiA9ICQobGlidW53aW5kX2xhX1NPVVJDRVNfY29tbW9uKQkgICAgXAotIAltaXBzL2lzX2ZwcmVnLmMgbWlwcy9yZWduYW1lLmMKLSAKLUBAIC0yOTksNyArMjk5LDcgQEAgbGlidW53aW5kX21pcHNfbGFfU09VUkNFU19taXBzID0gJChsaWJ1bndpbmRfbGFfU09VUkNFU19taXBzX2NvbW1vbikJICAgIFwKLSAJbWlwcy9HaXNfc2lnbmFsX2ZyYW1lLmMgbWlwcy9HcmVncy5jIG1pcHMvR3Jlc3VtZS5jIG1pcHMvR3N0ZXAuYwotIAotICMgVGhlIGxpc3Qgb2YgZmlsZXMgdGhhdCBnbyBpbmZvIGxpYnVud2luZCBhbmQgbGlidW53aW5kLXRpbGVneDoKLS1ub2luc3RfSEVBREVSUyArPSB0aWxlZ3gvaW5pdC5oIHRpbGVneC9vZmZzZXRzLmgKLStub2luc3RfSEVBREVSUyArPSB0aWxlZ3gvaW5pdC5oIHRpbGVneC9vZmZzZXRzLmggdGlsZWd4L3Vud2luZF9pLmgKLSBsaWJ1bndpbmRfbGFfU09VUkNFU190aWxlZ3hfY29tbW9uID0gJChsaWJ1bndpbmRfbGFfU09VUkNFU19jb21tb24pCSAgICBcCi0gCXRpbGVneC9pc19mcHJlZy5jIHRpbGVneC9yZWduYW1lLmMKLSAKLWRpZmYgLS1naXQgYS9zcmMvbWlwcy91bndpbmRfaS5oIGIvc3JjL21pcHMvdW53aW5kX2kuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjMzODJkY2YKLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9taXBzL3Vud2luZF9pLmgKLUBAIC0wLDAgKzEsNDMgQEAKLSsvKiBsaWJ1bndpbmQgLSBhIHBsYXRmb3JtLWluZGVwZW5kZW50IHVud2luZCBsaWJyYXJ5Ci0rICAgQ29weXJpZ2h0IChDKSAyMDA4IENvZGVTb3VyY2VyeQotKwotK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIGxpYnVud2luZC4KLSsKLStQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSthIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSsiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0rd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotK2Rpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotK3Blcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotK3RoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSsKLStUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQotK2luY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotKwotK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAotK0VYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotK01FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECi0rTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQotK0xJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KLStPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KLStXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICovCi0rCi0rI2lmbmRlZiB1bndpbmRfaV9oCi0rI2RlZmluZSB1bndpbmRfaV9oCi0rCi0rI2luY2x1ZGUgPHN0ZGludC5oPgotKwotKyNpbmNsdWRlIDxsaWJ1bndpbmQtbWlwcy5oPgotKwotKyNpbmNsdWRlICJsaWJ1bndpbmRfaS5oIgotKwotKyNkZWZpbmUgbWlwc19sb2NrICAgICAgICAgICAgICAgICAgICAgICBVTldfT0JKKGxvY2spCi0rI2RlZmluZSBtaXBzX2xvY2FsX3Jlc3VtZSAgICAgICAgICAgICAgIFVOV19PQkoobG9jYWxfcmVzdW1lKQotKyNkZWZpbmUgbWlwc19sb2NhbF9hZGRyX3NwYWNlX2luaXQgICAgICBVTldfT0JKKGxvY2FsX2FkZHJfc3BhY2VfaW5pdCkKLSsKLStleHRlcm4gaW50IG1pcHNfbG9jYWxfcmVzdW1lICh1bndfYWRkcl9zcGFjZV90IGFzLCB1bndfY3Vyc29yX3QgKmN1cnNvciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZyk7Ci0rCi0rZXh0ZXJuIHZvaWQgbWlwc19sb2NhbF9hZGRyX3NwYWNlX2luaXQgKHZvaWQpOwotKwotKyNlbmRpZiAvKiB1bndpbmRfaV9oICovCi1kaWZmIC0tZ2l0IGEvc3JjL3RpbGVneC91bndpbmRfaS5oIGIvc3JjL3RpbGVneC91bndpbmRfaS5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYWFjN2JlMwotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL3RpbGVneC91bndpbmRfaS5oCi1AQCAtMCwwICsxLDQ0IEBACi0rLyogbGlidW53aW5kIC0gYSBwbGF0Zm9ybS1pbmRlcGVuZGVudCB1bndpbmQgbGlicmFyeQotKyAgIENvcHlyaWdodCAoQykgMjAwOCBDb2RlU291cmNlcnkKLSsKLStUaGlzIGZpbGUgaXMgcGFydCBvZiBsaWJ1bndpbmQuCi0rCi0rUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0rYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi0rIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotK3dpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLStkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLStwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSt0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0rCi0rVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKLStpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSsKLStUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKLStFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLStNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAotK05PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUKLStMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCi0rT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCi0rV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuICAqLwotKwotKyNpZm5kZWYgdW53aW5kX2lfaAotKyNkZWZpbmUgdW53aW5kX2lfaAotKwotKyNpbmNsdWRlIDxtZW1vcnkuaD4KLSsjaW5jbHVkZSA8c3RkaW50Lmg+Ci0rCi0rI2luY2x1ZGUgPGxpYnVud2luZC10aWxlZ3guaD4KLSsKLSsjaW5jbHVkZSAibGlidW53aW5kX2kuaCIKLSsKLSsjZGVmaW5lIHRpbGVneF9sb2NhbF9yZXN1bWUgICAgICAgICAgICBVTldfT0JKKGxvY2FsX3Jlc3VtZSkKLSsjZGVmaW5lIHRpbGVneF9sb2NhbF9hZGRyX3NwYWNlX2luaXQgICBVTldfT0JKKGxvY2FsX2FkZHJfc3BhY2VfaW5pdCkKLSsKLStleHRlcm4gaW50IHRpbGVneF9sb2NhbF9yZXN1bWUgKHVud19hZGRyX3NwYWNlX3QgYXMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bndfY3Vyc29yX3QgKmN1cnNvciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZyk7Ci0rCi0rZXh0ZXJuIHZvaWQgdGlsZWd4X2xvY2FsX2FkZHJfc3BhY2VfaW5pdCAodm9pZCk7Ci0rCi0rI2VuZGlmIC8qIHVud2luZF9pX2ggKi8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kXzEuMi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmRfMS4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdhNzYyNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kXzEuMi4xLmJiCkBAIC0wLDAgKzEsMjMgQEAKK3JlcXVpcmUgbGlidW53aW5kLmluYworCitTUkNfVVJJW21kNXN1bV0gPSAiMDZiYTllNjBkOTJmZDZmNTVjZDlkYWRiMDg0ZGYxOWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2YzZWNiOTBlMjhjYmU1M2ZiYTdhNGEyN2NjY2U3YWFkMTg4ZDMyMTBiYjE5NjRhOTIzYTczMWEyN2E3NWFjYiIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuc2F2YW5uYWgubm9uZ251Lm9yZy9yZWxlYXNlcy9saWJ1bndpbmQvbGlidW53aW5kLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9BZGQtQU9fUkVRVUlSRV9DQVMtdG8tZml4LWJ1aWxkLW9uLUFSTS12Ni5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJhY2t0cmFjZS1Vc2Utb25seS13aXRoLWdsaWJjLWFuZC11Y2xpYmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS14ODYtU3R1Yi1vdXQteDg2X2xvY2FsX3Jlc3VtZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1vbi1taXBzLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hZGQta25vYnMtdG8tZGlzYWJsZS1lbmFibGUtdGVzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wcGMzMi1Db25zaWRlci11Y29udGV4dC1taXNtYXRjaGVzLWJldHdlZW4tZ2xpYmMtYW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpYnVud2luZC0xLjEteDMyLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly9tdXNsLWhlYWRlci1jb25mbGljdC5wYXRjaCIKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiAtLWRpc2FibGUtdGVzdHMgIgorCisjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDQ4Ny8KK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCisKK0xERkxBR1MgKz0gIi1XbCwteixyZWxybywteixub3cgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsZC1pcy1nb2xkJywgJyAtZnVzZS1sZD1iZmQgJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kXzEuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kXzEuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzYzMTJmMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZF8xLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1yZXF1aXJlIGxpYnVud2luZC5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gImVlZmNiNWQ3Zjc4ZmRjOGYxZWQxNzJhMjZlYTQyMDJmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFkZTM4ZmZiZGM4OGJkNjk0ZDEwMDgxODY1ODcxY2QyYmZiYjAyYWQ4ZWY5ZTE2MDZhZWUxOGQ2NTUzMmI5OTIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLnNhdmFubmFoLm5vbmdudS5vcmcvcmVsZWFzZXMvbGlidW53aW5kL2xpYnVud2luZC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vQWRkLUFPX1JFUVVJUkVfQ0FTLXRvLWZpeC1idWlsZC1vbi1BUk0tdjYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1iYWNrdHJhY2UtVXNlLW9ubHktd2l0aC1nbGliYy1hbmQtdWNsaWJjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEteDg2LVN0dWItb3V0LXg4Nl9sb2NhbF9yZXN1bWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtb24tbWlwcy1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYWRkLWtub2JzLXRvLWRpc2FibGUtZW5hYmxlLXRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcHBjMzItQ29uc2lkZXItdWNvbnRleHQtbWlzbWF0Y2hlcy1iZXR3ZWVuLWdsaWJjLWFuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ1bndpbmQtMS4xLXgzMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtbWlwcy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vbXVzbC1oZWFkZXItY29uZmxpY3QucGF0Y2giCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLWRvY3VtZW50YXRpb24gLS1kaXNhYmxlLXRlc3RzICIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjA0ODcvCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotCi1MREZMQUdTICs9ICItV2wsLXoscmVscm8sLXosbm93ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICcgLWZ1c2UtbGQ9YmZkICcsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXJjdS9saWJ1cmN1XzAuMTAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZWNiMjBiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotU1VNTUFSWSA9ICJVc2Vyc3BhY2UgUkNVIChyZWFkLWNvcHktdXBkYXRlKSBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL2x0dG5nLm9yZy91cmN1IgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vbHR0bmcub3JnL3Byb2plY3QvaXNzdWVzIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyAmIE1JVC1zdHlsZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU1NDhkMjg3MzcyODlkNzVhOGYxZTAxYmEyZmQ3ODI1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy91cmN1Lmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0zMjttZDU9NGRlMGQ2OGQzYTk5NzY0MzcxNTAzNmQyMjA5YWUxZDkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS91cmN1L3VhdG9taWMveDg2Lmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0yMTttZDU9NThlNTBiYmQ4YTJmMDczYmI1NTAwZTY1NTRhZjBkMGIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2x0dG5nLm9yZy9maWxlcy91cmN1L3VzZXJzcGFjZS1yY3UtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjY5ZGFiODViNjkyOWMzNzgzMzhiOTUwNGFkYzZhZWE3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdjYjU4YTdiYTUxNTExOTgwODdmMDI1ZGM4ZDE5ZDg5MThlOWM2ZDU2NzcyZjAzOTY5NmMxMTFkOWFhZDMxOTAiCi0KLVMgPSAiJHtXT1JLRElSfS91c2Vyc3BhY2UtcmN1LSR7UFZ9IgotaW5oZXJpdCBhdXRvdG9vbHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjEwLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU5YzA0YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMC4xLmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiVXNlcnNwYWNlIFJDVSAocmVhZC1jb3B5LXVwZGF0ZSkgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9sdHRuZy5vcmcvdXJjdSIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2x0dG5nLm9yZy9wcm9qZWN0L2lzc3VlcyIKKworTElDRU5TRSA9ICJMR1BMdjIuMSsgJiBNSVQtc3R5bGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNTQ4ZDI4NzM3Mjg5ZDc1YThmMWUwMWJhMmZkNzgyNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvdXJjdS5oO2JlZ2lubGluZT00O2VuZGxpbmU9MzI7bWQ1PTRkZTBkNjhkM2E5OTc2NDM3MTUwMzZkMjIwOWFlMWQ5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvdXJjdS91YXRvbWljL3g4Ni5oO2JlZ2lubGluZT00O2VuZGxpbmU9MjE7bWQ1PTU4ZTUwYmJkOGEyZjA3M2JiNTUwMGU2NTU0YWYwZDBiIgorCitTUkNfVVJJID0gImh0dHA6Ly9sdHRuZy5vcmcvZmlsZXMvdXJjdS91c2Vyc3BhY2UtcmN1LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyODFhMmY5MmZkYzM5YzQwYWQ2Yjc2ZjY2MzFmZGJkNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5YzA5MjIwYmU0NDM1ZGMyN2ZjZDIyZDI5MTcwN2I5NGI5N2YxNTllMGM0NDJmYmNkNjBjMTY4ZjhmNzllYjA2IgorCitTID0gIiR7V09SS0RJUn0vdXNlcnNwYWNlLXJjdS0ke1BWfSIKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0NQUEZMQUdTX2FwcGVuZF9yaXNjdjY0ICA9ICIgLXB0aHJlYWQgLURfUkVFTlRSQU5UIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdC8wMDAxLUNoZWNrLWZvci1pbnRlZ2VyLW92ZXJmbG93LWluLXhzbHRBZGRUZXh0U3RyaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdC8wMDAxLUNoZWNrLWZvci1pbnRlZ2VyLW92ZXJmbG93LWluLXhzbHRBZGRUZXh0U3RyaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2FhYWNjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHQvMDAwMS1DaGVjay1mb3ItaW50ZWdlci1vdmVyZmxvdy1pbi14c2x0QWRkVGV4dFN0cmluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLUZyb20gMDhhYjI3NzRiODcwZGUxYzdiNWE0ODY5M2RmNzVlODE1NGFkZGFlNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgV2VsbG5ob2ZlciA8d2VsbG5ob2ZlckBhZXZ1bS5kZT4KLURhdGU6IFRodSwgMTIgSmFuIDIwMTcgMTU6Mzk6NTIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQ2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgaW4geHNsdEFkZFRleHRTdHJpbmcKLQotTGltaXQgYnVmZmVyIHNpemUgaW4geHNsdEFkZFRleHRTdHJpbmcgdG8gSU5UX01BWC4gVGhlIGlzc3VlIGNhbiBiZQotZXhwbG9pdGVkIHRvIHRyaWdnZXIgYW4gb3V0IG9mIGJvdW5kcyB3cml0ZSBvbiA2NC1iaXQgc3lzdGVtcy4KLQotT3JpZ2luYWxseSByZXBvcnRlZCB0byBDaHJvbWl1bToKLQotaHR0cHM6Ly9jcmJ1Zy5jb20vNjc2NjIzCi0KLUNWRTogQ1ZFLTIwMTctNTAyOQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBGYW4gWGluIDxmYW4ueGluQGpwLmZ1aml0dXMuY29tPgotCi0tLS0KLSBsaWJ4c2x0L3RyYW5zZm9ybS5jICAgICB8IDI1ICsrKysrKysrKysrKysrKysrKysrKystLS0KLSBsaWJ4c2x0L3hzbHRJbnRlcm5hbHMuaCB8ICA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJ4c2x0L3RyYW5zZm9ybS5jIGIvbGlieHNsdC90cmFuc2Zvcm0uYwotaW5kZXggNTE5MTMzZi4uMDJiZmYzNCAxMDA2NDQKLS0tLSBhL2xpYnhzbHQvdHJhbnNmb3JtLmMKLSsrKyBiL2xpYnhzbHQvdHJhbnNmb3JtLmMKLUBAIC04MTMsMTMgKzgxMywzMiBAQCB4c2x0QWRkVGV4dFN0cmluZyh4c2x0VHJhbnNmb3JtQ29udGV4dFB0ciBjdHh0LCB4bWxOb2RlUHRyIHRhcmdldCwKLSAgICAgICAgIHJldHVybih0YXJnZXQpOwotIAotICAgICBpZiAoY3R4dC0+bGFzdHRleHQgPT0gdGFyZ2V0LT5jb250ZW50KSB7Ci0rICAgICAgICBpbnQgbWluU2l6ZTsKLSAKLS0JaWYgKGN0eHQtPmxhc3R0dXNlICsgbGVuID49IGN0eHQtPmxhc3R0c2l6ZSkgewotKyAgICAgICAgLyogQ2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgYWNjb3VudGluZyBmb3IgTlVMIHRlcm1pbmF0b3IuICovCi0rICAgICAgICBpZiAobGVuID49IElOVF9NQVggLSBjdHh0LT5sYXN0dHVzZSkgewotKyAgICAgICAgICAgIHhzbHRUcmFuc2Zvcm1FcnJvcihjdHh0LCBOVUxMLCB0YXJnZXQsCi0rICAgICAgICAgICAgICAgICJ4c2x0Q29weVRleHQ6IHRleHQgYWxsb2NhdGlvbiBmYWlsZWRcbiIpOwotKyAgICAgICAgICAgIHJldHVybihOVUxMKTsKLSsgICAgICAgIH0KLSsgICAgICAgIG1pblNpemUgPSBjdHh0LT5sYXN0dHVzZSArIGxlbiArIDE7Ci0rCi0rICAgICAgICBpZiAoY3R4dC0+bGFzdHRzaXplIDwgbWluU2l6ZSkgewotIAkgICAgeG1sQ2hhciAqbmV3YnVmOwotIAkgICAgaW50IHNpemU7Ci0rICAgICAgICAgICAgaW50IGV4dHJhOwotKwotKyAgICAgICAgICAgIC8qIERvdWJsZSBidWZmZXIgc2l6ZSBidXQgaW5jcmVhc2UgYnkgYXQgbGVhc3QgMTAwIGJ5dGVzLiAqLwotKyAgICAgICAgICAgIGV4dHJhID0gbWluU2l6ZSA8IDEwMCA/IDEwMCA6IG1pblNpemU7Ci0rCi0rICAgICAgICAgICAgLyogQ2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cuICovCi0rICAgICAgICAgICAgaWYgKGV4dHJhID4gSU5UX01BWCAtIGN0eHQtPmxhc3R0c2l6ZSkgewotKyAgICAgICAgICAgICAgICBzaXplID0gSU5UX01BWDsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgZWxzZSB7Ci0rICAgICAgICAgICAgICAgIHNpemUgPSBjdHh0LT5sYXN0dHNpemUgKyBleHRyYTsKLSsgICAgICAgICAgICB9Ci0gCi0tCSAgICBzaXplID0gY3R4dC0+bGFzdHRzaXplICsgbGVuICsgMTAwOwotLQkgICAgc2l6ZSAqPSAyOwotIAkgICAgbmV3YnVmID0gKHhtbENoYXIgKikgeG1sUmVhbGxvYyh0YXJnZXQtPmNvbnRlbnQsc2l6ZSk7Ci0gCSAgICBpZiAobmV3YnVmID09IE5VTEwpIHsKLSAJCXhzbHRUcmFuc2Zvcm1FcnJvcihjdHh0LCBOVUxMLCB0YXJnZXQsCi1kaWZmIC0tZ2l0IGEvbGlieHNsdC94c2x0SW50ZXJuYWxzLmggYi9saWJ4c2x0L3hzbHRJbnRlcm5hbHMuaAotaW5kZXggMDYwYjE3OC4uNWFkMTc3MSAxMDA2NDQKLS0tLSBhL2xpYnhzbHQveHNsdEludGVybmFscy5oCi0rKysgYi9saWJ4c2x0L3hzbHRJbnRlcm5hbHMuaAotQEAgLTE3NTQsOCArMTc1NCw4IEBAIHN0cnVjdCBfeHNsdFRyYW5zZm9ybUNvbnRleHQgewotICAgICAgKiBTcGVlZCBvcHRpbWl6YXRpb24gd2hlbiBjb2FsZXNjaW5nIHRleHQgbm9kZXMKLSAgICAgICovCi0gICAgIGNvbnN0IHhtbENoYXIgICpsYXN0dGV4dDsJCS8qIGxhc3QgdGV4dCBub2RlIGNvbnRlbnQgKi8KLS0gICAgdW5zaWduZWQgaW50ICAgIGxhc3R0c2l6ZTsJCS8qIGxhc3QgdGV4dCBub2RlIHNpemUgKi8KLS0gICAgdW5zaWduZWQgaW50ICAgIGxhc3R0dXNlOwkJLyogbGFzdCB0ZXh0IG5vZGUgdXNlICovCi0rICAgIGludCAgICAgICAgICAgICBsYXN0dHNpemU7CQkvKiBsYXN0IHRleHQgbm9kZSBzaXplICovCi0rICAgIGludCAgICAgICAgICAgICBsYXN0dHVzZTsJCS8qIGxhc3QgdGV4dCBub2RlIHVzZSAqLwotICAgICAvKgotICAgICAgKiBQZXIgQ29udGV4dCBEZWJ1Z2dpbmcKLSAgICAgICovCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHQvMDAwMS1MaW5rLWxpYnJhcmllcy13aXRoLWxpYm0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0LzAwMDEtTGluay1saWJyYXJpZXMtd2l0aC1saWJtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmZmZWJhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHQvMDAwMS1MaW5rLWxpYnJhcmllcy13aXRoLWxpYm0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1Gcm9tIDQ4N2UyZjdlMzVkYWQzZGVlYzc5NzhjZTQ0NzhhM2Q0ZWE1MDcwZTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogRnJpLCAxMCBGZWIgMjAxNyAxNDoyNjo1OSArMDIwMAotU3ViamVjdDogW1BBVENIXSBMaW5rIGxpYnJhcmllcyB3aXRoIGxpYm0KLQotT3RoZXJ3aXNlIGxpbmtpbmcgdGhlIHJlc3VsdGluZyBsaWJyYXJpZXMgdG8gYSBiaW5hcnkgKGUuZy4geHNsdHByb2MpCi1mYWlscyB3aGVuIHVzaW5nIGdvbGQgbGlua2VyOgotfMKgLi4vbGlieHNsdC8ubGlicy9saWJ4c2x0LnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAnZm1vZCcKLXzCoC4uL2xpYnhzbHQvLmxpYnMvbGlieHNsdC5zbzogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ3BvdycKLXzCoC4uL2xpYmV4c2x0Ly5saWJzL2xpYmV4c2x0LnNvOiBlcnJvcjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byAnZmxvb3InCi18wqBjb2xsZWN0MjogZXJyb3I6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW21haWxpbmcgbGlzdCwgRmViIDEwIDIwMTddCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gbGliZXhzbHQvTWFrZWZpbGUuYW0gfCAyICstCi0gbGlieHNsdC9NYWtlZmlsZS5hbSAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJleHNsdC9NYWtlZmlsZS5hbSBiL2xpYmV4c2x0L01ha2VmaWxlLmFtCi1pbmRleCAxY2Y1MTM4Li41NDQ5NTI0IDEwMDY0NAotLS0tIGEvbGliZXhzbHQvTWFrZWZpbGUuYW0KLSsrKyBiL2xpYmV4c2x0L01ha2VmaWxlLmFtCi1AQCAtMjcsNyArMjcsNyBAQCBsaWJleHNsdF9sYV9TT1VSQ0VTID0gICAgICAgICAgICAgICAgICAgXAotIAlsaWJleHNsdC5oCQkJXAotIAlkeW5hbWljLmMKLSAKLS1saWJleHNsdF9sYV9MSUJBREQgPSAkKHRvcF9idWlsZGRpcikvbGlieHNsdC9saWJ4c2x0LmxhICQoRVhUUkFfTElCUykgJChMSUJHQ1JZUFRfTElCUykKLStsaWJleHNsdF9sYV9MSUJBREQgPSAkKHRvcF9idWlsZGRpcikvbGlieHNsdC9saWJ4c2x0LmxhICQoRVhUUkFfTElCUykgJChMSUJHQ1JZUFRfTElCUykgJChNX0xJQlMpCi0gbGliZXhzbHRfbGFfTERGTEFHUyA9ICQoV0lOMzJfRVhUUkFfTERGTEFHUykgLXZlcnNpb24taW5mbyAkKExJQkVYU0xUX1ZFUlNJT05fSU5GTykKLSAKLSBtYW5fTUFOUyA9IGxpYmV4c2x0LjMKLWRpZmYgLS1naXQgYS9saWJ4c2x0L01ha2VmaWxlLmFtIGIvbGlieHNsdC9NYWtlZmlsZS5hbQotaW5kZXggZDlmZWQ2OC4uOWQ0NGMzZCAxMDA2NDQKLS0tLSBhL2xpYnhzbHQvTWFrZWZpbGUuYW0KLSsrKyBiL2xpYnhzbHQvTWFrZWZpbGUuYW0KLUBAIC02Miw3ICs2Miw3IEBAIGVsc2UKLSBMSUJYU0xUX1ZFUlNJT05fU0NSSVBUID0KLSBlbmRpZgotIAotLWxpYnhzbHRfbGFfTElCQUREID0gJChMSUJYTUxfTElCUykgJChFWFRSQV9MSUJTKQotK2xpYnhzbHRfbGFfTElCQUREID0gJChMSUJYTUxfTElCUykgJChNX0xJQlMpICQoRVhUUkFfTElCUykKLSBsaWJ4c2x0X2xhX0xERkxBR1MgPQkJCQkJXAotIAkJJChXSU4zMl9FWFRSQV9MREZMQUdTKQkJCVwKLSAJCSQoTElCWFNMVF9WRVJTSU9OX1NDUklQVCkJCVwKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdC8wMDAxLVVzZS1wa2ctY29uZmlnLXRvLWZpbmQtZ2NyeXB0LWFuZC1saWJ4bWwyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdC8wMDAxLVVzZS1wa2ctY29uZmlnLXRvLWZpbmQtZ2NyeXB0LWFuZC1saWJ4bWwyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTg2NzA2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHQvMDAwMS1Vc2UtcGtnLWNvbmZpZy10by1maW5kLWdjcnlwdC1hbmQtbGlieG1sMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMCArMCwwIEBACi1Gcm9tIGVkNzFhYzk1NDhhMmJiNmVjZDJkYzVhZDg4MGM2MDQ5NzVmODcyYjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMiBKdW4gMjAxNiAxNDoyMDowNCArMDMwMAotU3ViamVjdDogW1BBVENIXSBVc2UgcGtnLWNvbmZpZyB0byBmaW5kIGdjcnlwdCBhbmQgbGlieG1sMi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtsaWJ4bWwyIGlzIHVwc3RyZWFtYWJsZV0KLQotUlAgMjAxNC81LzIyCi0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmluIHwgNzAgKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDU4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCi1pbmRleCA4YmRmNDVhLi4wYjJiMzEyIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmluCi0rKysgYi9jb25maWd1cmUuaW4KLUBAIC0zNzcsNiArMzc3LDggQEAgQUNfU1VCU1QocHl0aG9uZGlyKQotIEFDX1NVQlNUKFBZVEhPTl9TVUJESVIpCi0gQUNfU1VCU1QoUFlUSE9OX0xJQlMpCi0gCi0rUEtHX1BST0dfUEtHX0NPTkZJRwotKwotIEFDX0FSR19XSVRIKGNyeXB0bywgWyAgLS13aXRoLWNyeXB0byAgICAgICAgICAgQWRkIGNyeXB0byBzdXBwb3J0IHRvIGV4c2x0IChvbildKQotIFdJVEhfQ1JZUFRPPTAKLSBDUllQVE9fVEVTVERJUj0KLUBAIC0zOTQsMjcgKzM5NiwxNCBAQCBjYXNlICRob3N0IGluCi0gICAgIENSWVBUT19URVNURElSPWNyeXB0bwotICAgICA7OwotICAgKikKLS0gICAgQUNfUEFUSF9UT09MKExJQkdDUllQVF9DT05GSUcsIGxpYmdjcnlwdC1jb25maWcsIG5vKQotLSAgICBpZiB0ZXN0ICIkTElCR0NSWVBUX0NPTkZJRyIgIT0gIm5vIiA7IHRoZW4KLS0gICAgICBMSUJHQ1JZUFRfVkVSU0lPTj1gJExJQkdDUllQVF9DT05GSUcgLS12ZXJzaW9uYAotLSAgICAgIGlmIHRlc3QgVkVSU0lPTl9UT19OVU1CRVIoZWNobyAkTElCR0NSWVBUX1ZFUlNJT04pIC1sdCBWRVJTSU9OX1RPX05VTUJFUihlY2hvICIxLjEuNDIiKQotLSAgICAgIHRoZW4KLS0gICAgICAgIExJQkdDUllQVF9DRkxBR1M9IiIKLS0gICAgICAgIExJQkdDUllQVF9MSUJTPSIiCi0tICAgICAgICBlY2hvICdnY3J5cHQgbGlicmFyeSB2ZXJzaW9uIDwgMS4xLjQyIC0gQ3J5cHRvIGV4dGVuc2lvbnMgd2lsbCBub3QgYmUgYXZhaWxhYmxlLicKLS0gICAgICBlbHNlCi0tICAgICAgICBMSUJHQ1JZUFRfQ0ZMQUdTPWAkTElCR0NSWVBUX0NPTkZJRyAkbGliZ2NyeXB0X2NvbmZpZ19hcmdzIC0tY2ZsYWdzYAotLSAgICAgICAgTElCR0NSWVBUX0xJQlM9YCRMSUJHQ1JZUFRfQ09ORklHICRsaWJnY3J5cHRfY29uZmlnX2FyZ3MgLS1saWJzYAotLSAgICAgICAgQUNfREVGSU5FKEhBVkVfR0NSWVBULCAxLCBbRGVmaW5lIGlmIGdjcnlwdCBsaWJyYXJ5IGlzIGF2YWlsYWJsZS5dKQotLSAgICAgICAgZWNobyAnQ3J5cHRvIGV4dGVuc2lvbnMgd2lsbCBiZSBhdmFpbGFibGUuJwotKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhMSUJHQ1JZUFQsIFtsaWJnY3J5cHQgPj0gMS4xLjQyXSwgWwotKyAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9HQ1JZUFQsIDEsIFtEZWZpbmUgaWYgZ2NyeXB0IGxpYnJhcnkgaXMgYXZhaWxhYmxlLl0pCi0rICAgICAgICAgIGVjaG8gJ0NyeXB0byBleHRlbnNpb25zIHdpbGwgYmUgYXZhaWxhYmxlLicKLSAgICAgICAgIFdJVEhfQ1JZUFRPPTEKLSAgICAgICAgIENSWVBUT19URVNURElSPWNyeXB0bwotLSAgICAgIGZpCi0tICAgIGVsc2UKLS0gICAgICBMSUJHQ1JZUFRfQ0ZMQUdTPSIiCi0tICAgICAgTElCR0NSWVBUX0xJQlM9IiIKLS0gICAgICBlY2hvICdDcnlwdG8gZXh0ZW5zaW9ucyB3aWxsIG5vdCBiZSBhdmFpbGFibGUuIEluc3RhbGwgbGliZ2NyeXB0IGFuZCByZWNvbmZpZ3VyZSB0byBtYWtlIGF2YWlsYWJsZS4nCi0tICAgIGZpCi0rICAgICAgIF0sIFsKLSsgICAgICAgICAgZWNobyAnQ3J5cHRvIGV4dGVuc2lvbnMgd2lsbCBub3QgYmUgYXZhaWxhYmxlLiBJbnN0YWxsIGxpYmdjcnlwdCA+PSAxLjEuNDIgYW5kIHJlY29uZmlndXJlIHRvIG1ha2UgYXZhaWxhYmxlLicKLSsgICAgICAgIF0pCi0gZXNhYwotIGZpCi0gQUNfU1VCU1QoV0lUSF9DUllQVE8pCi1AQCAtNDc2LDI0ICs0NjUsOCBAQCBkbmwgb3JpZ2luYWwgd29yayAtIE1hdGhpZXUgTGFjYWdlIDMwLzAzLzIwMDAKLSBkbmwgc29tZSB0d2Vha2luZyAtIERhdmlkIEjDpHJkZW1hbiAzMC8xMC8yMDAxCi0gZG5sCi0gCi0tTElCWE1MX0NPTkZJR19QUkVGSVg9IiIKLSBMSUJYTUxfU1JDPSIiCi0gCi0tQUNfQVJHX1dJVEgobGlieG1sLXByZWZpeCwKLS0gICAgICAgIFsgIC0td2l0aC1saWJ4bWwtcHJlZml4PVtQRlhdCQlTcGVjaWZ5IGxvY2F0aW9uIG9mIGxpYnhtbCBjb25maWddLAotLQlMSUJYTUxfQ09ORklHX1BSRUZJWD0kd2l0aHZhbAotLSkKLS0gICAgICAgIAotLUFDX0FSR19XSVRIKGxpYnhtbC1pbmNsdWRlLXByZWZpeCwKLS0gICAgICAgIFsgIC0td2l0aC1saWJ4bWwtaW5jbHVkZS1wcmVmaXg9W1BGWF0JU3BlY2lmeSBsb2NhdGlvbiBvZiBsaWJ4bWwgaGVhZGVyc10sCi0tICAgICAgICBMSUJYTUxfQ0ZMQUdTPSItSSR3aXRodmFsIgotLSkKLS0KLS1BQ19BUkdfV0lUSChsaWJ4bWwtbGlicy1wcmVmaXgsCi0tICAgICAgICBbICAtLXdpdGgtbGlieG1sLWxpYnMtcHJlZml4PVtQRlhdCVNwZWNpZnkgbG9jYXRpb24gb2YgbGlieG1sIGxpYnNdLAotLSAgICAgICAgTElCWE1MX0xJQlM9Ii1MJHdpdGh2YWwiCi0tKQotLQotIEFDX0FSR19XSVRIKGxpYnhtbC1zcmMsCi0gCVsgIC0td2l0aC1saWJ4bWwtc3JjPVtESVJdICAgICAgICAgICAgICBGb3IgbGlieG1sIHRoYXRzIG5vdCBpbnN0YWxsZWQgeWV0IChzZXRzIGFsbCB0aHJlZSBhYm92ZSldLAotIAlMSUJYTUxfU1JDPSIkd2l0aHZhbCIKLUBAIC01NTYsMjggKzUyOSw5IEBAIHRoZW4KLSAJZmkKLSBmaQotIAotLWRubAotLWRubCBtYWtlIHN1cmUgeG1sMi1jb25maWcgaXMgZXhlY3V0YWJsZSwKLS1kbmwgdGVzdCB2ZXJzaW9uIGFuZCBpbml0IG91ciB2YXJpYWJsZXMKLS1kbmwKLS0KLS1pZiAke1hNTF9DT05GSUd9IC0tbGlicyBwcmludCA+IC9kZXYvbnVsbCAyPiYxCi0tdGhlbgotLQlYTUxWRVJTPWAkWE1MX0NPTkZJRyAtLXZlcnNpb25gCi0tCWlmIHRlc3QgVkVSU0lPTl9UT19OVU1CRVIoZWNobyAkWE1MVkVSUykgLWdlIFZFUlNJT05fVE9fTlVNQkVSKGVjaG8gJExJQlhNTF9SRVFVSVJFRF9WRVJTSU9OKQotLQl0aGVuCi0tCQlBQ19NU0dfUkVTVUxUKCRYTUxWRVJTIGZvdW5kKQotLQllbHNlCi0tCQlBQ19NU0dfRVJST1IoVmVyc2lvbiAkWE1MVkVSUyBmb3VuZC4gWW91IG5lZWQgYXQgbGVhc3QgbGlieG1sMiAkTElCWE1MX1JFUVVJUkVEX1ZFUlNJT04gZm9yIHRoaXMgdmVyc2lvbiBvZiBsaWJ4c2x0KQotLQlmaQotLQlMSUJYTUxfTElCUz0iJExJQlhNTF9MSUJTIGAkWE1MX0NPTkZJRyAtLWxpYnNgIgotLQlpZiB0ZXN0ICJ4JExJQlhNTF9TUkMiID0gIngiOyB0aGVuCi0tCQlMSUJYTUxfQ0ZMQUdTPSIkTElCWE1MX0NGTEFHUyBgJFhNTF9DT05GSUcgLS1jZmxhZ3NgIgotLQlmaQotLWVsc2UKLS0JQUNfTVNHX0VSUk9SKFtDb3VsZCBub3QgZmluZCBsaWJ4bWwyIGFueXdoZXJlLCBjaGVjayBmdHA6Ly94bWxzb2Z0Lm9yZy8uXSkKLS1maQotLQotK1BLR19DSEVDS19NT0RVTEVTKExJQlhNTCwgW2xpYnhtbC0yLjAgPj0gJExJQlhNTF9SRVFVSVJFRF9WRVJTSU9OXSwsCi0rICAgIFtBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIGxpYnhtbC0yLjAgPj0gJExJQlhNTF9SRVFVSVJFRF9WRVJTSU9OIGFueXdoZXJlLCBjaGVjayBmdHA6Ly94bWxzb2Z0Lm9yZy8uXSldCi0rKQotIAotIEFDX1NVQlNUKENGTEFHUykKLSBBQ19TVUJTVChDUFBGTEFHUykKLUBAIC02MDIsNyArNTU2LDcgQEAgZmkKLSAKLSBpZiB0ZXN0ICIkd2l0aF9wbHVnaW5zIiA9ICJ5ZXMiIDsgdGhlbgotICAgQUNfTVNHX0NIRUNLSU5HKFtsaWJ4bWwyIG1vZHVsZSBzdXBwb3J0XSkKLS0gIFdJVEhfTU9EVUxFUz0iYCRYTUxfQ09ORklHIC0tbW9kdWxlc2AiCi0rICBXSVRIX01PRFVMRVM9ImAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPW1vZHVsZXMgbGlieG1sLTIuMGAiCi0gICBpZiB0ZXN0ICIke1dJVEhfTU9EVUxFU30iID0gIjEiOyB0aGVuCi0gICAgIEFDX01TR19SRVNVTFQoeWVzKQotICAgZWxzZQotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0L3BrZ2NvbmZpZ19maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0L3BrZ2NvbmZpZ19maXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2YTgwMTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdC9wa2djb25maWdfZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1JbmRleDogbGlieHNsdC0xLjEuMjcvbGliZXhzbHQucGMuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJ4c2x0LTEuMS4yNy5vcmlnL2xpYmV4c2x0LnBjLmluCi0rKysgbGlieHNsdC0xLjEuMjcvbGliZXhzbHQucGMuaW4KLUBAIC04LDUgKzgsNSBAQCBOYW1lOiBsaWJleHNsdAotIFZlcnNpb246IEBMSUJFWFNMVF9WRVJTSU9OQAotIERlc2NyaXB0aW9uOiBFWFNMVCBFeHRlbnNpb24gbGlicmFyeQotIFJlcXVpcmVzOiBsaWJ4bWwtMi4wCi0tTGliczogQEVYU0xUX0xJQkRJUkAgQEVYU0xUX0xJQlNACi0rTGliczogLWxleHNsdCBARVhTTFRfTElCRElSQCBARVhTTFRfTElCU0AKLSBDZmxhZ3M6IEBFWFNMVF9JTkNMVURFRElSQAotSW5kZXg6IGxpYnhzbHQtMS4xLjI3L2xpYnhzbHQucGMuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJ4c2x0LTEuMS4yNy5vcmlnL2xpYnhzbHQucGMuaW4KLSsrKyBsaWJ4c2x0LTEuMS4yNy9saWJ4c2x0LnBjLmluCi1AQCAtOCw1ICs4LDUgQEAgTmFtZTogbGlieHNsdAotIFZlcnNpb246IEBWRVJTSU9OQAotIERlc2NyaXB0aW9uOiBYU0xUIGxpYnJhcnkgdmVyc2lvbiAyLgotIFJlcXVpcmVzOiBsaWJ4bWwtMi4wCi0tTGliczogQFhTTFRfTElCRElSQCBAWFNMVF9MSUJTQCBARVhUUkFfTElCU0AKLStMaWJzOiAtbHhzbHQgQFhTTFRfTElCRElSQCBAWFNMVF9MSUJTQCBARVhUUkFfTElCU0AKLSBDZmxhZ3M6IEBYU0xUX0lOQ0xVREVESVJACmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0XzEuMS4yOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjI5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjExYmMyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjI5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotU1VNTUFSWSA9ICJHTk9NRSBYU0xUIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8veG1sc29mdC5vcmcvWFNMVC8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Db3B5cmlnaHQ7bWQ1PTBjZDlhMDdhZmJlYjI0MDI2YzliMDNhZWNmZWJhNDU4IgotCi1TRUNUSU9OID0gImxpYnMiCi1ERVBFTkRTID0gImxpYnhtbDIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3htbHNvZnQub3JnL3NvdXJjZXMvbGlieHNsdC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnX2ZpeC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1wa2ctY29uZmlnLXRvLWZpbmQtZ2NyeXB0LWFuZC1saWJ4bWwyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTGluay1saWJyYXJpZXMtd2l0aC1saWJtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQ2hlY2stZm9yLWludGVnZXItb3ZlcmZsb3ctaW4teHNsdEFkZFRleHRTdHJpbmcucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhMTI5ZDNjNDRjMDIyZGUzYjlkY2Y2ZDZmMjg4ZDcyZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNTk3NmUzODU3ODM3ZTc2MTdiMjlmMjI0OWViYjVlZWFjMzRlMjQ5MjA4ZDMxZjFmYmY3YTZiYTdhNDA5MGNlIgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJsaWJ4c2x0LSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgotCi1TID0gIiR7V09SS0RJUn0vbGlieHNsdC0ke1BWfSIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS94c2x0LWNvbmZpZyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZy1kaXNhYmxlZCBsaWJfcGFja2FnZQotCi0jIFdlIGRvbid0IERFUEVORCBvbiBiaW51dGlscyBmb3IgYW5zaWRlY2wuaCBzbyBlbnN1cmUgd2UgZG9uJ3QgdXNlIHRoZSBoZWFkZXIKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlzZWQgLWkgLWUgJ3MvYW5zaWRlY2wuaC8vJyAke1N9L2NvbmZpZ3VyZS5pbgotCi0JIyBUaGUgdGltZXN0YW1wcyBpbiB0aGUgMS4xLjI4IHRhcmJhbGwgYXJlIG1lc3NlZCB1cCBjYXVzaW5nIHRoaXMgZmlsZSB0bwotCSMgYXBwZWFyIG91dCBvZiBkYXRlLiAgVG91Y2ggaXQgc28gdGhhdCB3ZSBkb24ndCB0cnkgdG8gcmVnZW5lcmF0ZSBpdC4KLQl0b3VjaCAke1N9L2RvYy94c2x0cHJvYy4xCi19Ci0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtcHl0aG9uIC0td2l0aG91dC1kZWJ1ZyAtLXdpdGhvdXQtbWVtLWRlYnVnIC0td2l0aG91dC1jcnlwdG8iCi0jIG9sZGVyIHZlcnNpb25zIG9mIHRoaXMgcmVjaXBlIGhhZCAke1BOfS11dGlscwotUlBST1ZJREVTXyR7UE59LWJpbiArPSAiJHtQTn0tdXRpbHMiCi1SQ09ORkxJQ1RTXyR7UE59LWJpbiArPSAiJHtQTn0tdXRpbHMiCi1SUkVQTEFDRVNfJHtQTn0tYmluICs9ICIke1BOfS11dGlscyIKLQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgewotICAgIGNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L3hzbHRwcm9jIFhNTF9DQVRBTE9HX0ZJTEVTPSR7c3lzY29uZmRpcn0veG1sL2NhdGFsb2cueG1sCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbGlieHNsdC1wbHVnaW5zIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0veHNsdENvbmYuc2giCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjMyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdF8xLjEuMzIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmEwM2Y3NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjMyLmJiCkBAIC0wLDAgKzEsNDYgQEAKK1NVTU1BUlkgPSAiR05PTUUgWFNMVCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3htbHNvZnQub3JnL1hTTFQvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weXJpZ2h0O21kNT0wY2Q5YTA3YWZiZWIyNDAyNmM5YjAzYWVjZmViYTQ1OCIKKworU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyA9ICJsaWJ4bWwyIgorCitTUkNfVVJJID0gImh0dHA6Ly94bWxzb2Z0Lm9yZy9zb3VyY2VzL2xpYnhzbHQtJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjFmYzcyZjk4ZTk4YmY0NDQzZjE2NTExNjVmM2FhMTQ2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUyNmVjZDBhYmFmNGE3Nzg5MDQxNjIyYzM5NTBjMGU3ZjJjNGM4ODM1NDcxNTE1ZmQ3N2VlYzY4NGEzNTU0NjAiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxpYnhzbHQtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCisKK1MgPSAiJHtXT1JLRElSfS9saWJ4c2x0LSR7UFZ9IgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3hzbHQtY29uZmlnIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnLWRpc2FibGVkIGxpYl9wYWNrYWdlCisKKyMgV2UgZG9uJ3QgREVQRU5EIG9uIGJpbnV0aWxzIGZvciBhbnNpZGVjbC5oIHNvIGVuc3VyZSB3ZSBkb24ndCB1c2UgdGhlIGhlYWRlcgorZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCXNlZCAtaSAtZSAncy9hbnNpZGVjbC5oLy8nICR7U30vY29uZmlndXJlLmFjCisKKwkjIFRoZSB0aW1lc3RhbXBzIGluIHRoZSAxLjEuMjggdGFyYmFsbCBhcmUgbWVzc2VkIHVwIGNhdXNpbmcgdGhpcyBmaWxlIHRvCisJIyBhcHBlYXIgb3V0IG9mIGRhdGUuICBUb3VjaCBpdCBzbyB0aGF0IHdlIGRvbid0IHRyeSB0byByZWdlbmVyYXRlIGl0LgorCXRvdWNoICR7U30vZG9jL3hzbHRwcm9jLjEKK30KKworRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1weXRob24gLS13aXRob3V0LWRlYnVnIC0td2l0aG91dC1tZW0tZGVidWcgLS13aXRob3V0LWNyeXB0byIKKyMgb2xkZXIgdmVyc2lvbnMgb2YgdGhpcyByZWNpcGUgaGFkICR7UE59LXV0aWxzCitSUFJPVklERVNfJHtQTn0tYmluICs9ICIke1BOfS11dGlscyIKK1JDT05GTElDVFNfJHtQTn0tYmluICs9ICIke1BOfS11dGlscyIKK1JSRVBMQUNFU18ke1BOfS1iaW4gKz0gIiR7UE59LXV0aWxzIgorCisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisgICAgY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0veHNsdHByb2MgWE1MX0NBVEFMT0dfRklMRVM9JHtzeXNjb25mZGlyfS94bWwvY2F0YWxvZy54bWwKK30KKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9saWJ4c2x0LXBsdWdpbnMiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS94c2x0Q29uZi5zaCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6by9sem8vYWNpbmNsdWRlLm00IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6by9sem8vYWNpbmNsdWRlLm00CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGQyY2NkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sem8vbHpvL2FjaW5jbHVkZS5tNAorKysgL2Rldi9udWxsCkBAIC0xLDM1OCArMCwwIEBACi0KLUFDX0RFRlVOKFttZnhfQUNDX0NIRUNLX0VORElBTl0sIFsKLUFDX0NfQklHRU5ESUFOKFtBQ19ERUZJTkUoQUNDX0FCSV9CSUdfRU5ESUFOLDEsW0RlZmluZSB0byAxIGlmIHlvdXIgbWFjaGluZSBpcyBiaWcgZW5kaWFuLl0pXSxbQUNfREVGSU5FKEFDQ19BQklfTElUVExFX0VORElBTiwxLFtEZWZpbmUgdG8gMSBpZiB5b3VyIG1hY2hpbmUgaXMgbGl0dGxlIGVuZGlhbi5dKV0pCi1dKSMKLQotQUNfREVGVU4oW21meF9BQ0NfQ0hFQ0tfSEVBREVSU10sIFsKLUFDX0hFQURFUl9USU1FCi1BQ19DSEVDS19IRUFERVJTKFthc3NlcnQuaCBjdHlwZS5oIGRpcmVudC5oIGVycm5vLmggZmNudGwuaCBmbG9hdC5oIGxpbWl0cy5oIG1hbGxvYy5oIG1lbW9yeS5oIHNldGptcC5oIHNpZ25hbC5oIHN0ZGFyZy5oIHN0ZGRlZi5oIHN0ZGludC5oIHN0ZGlvLmggc3RkbGliLmggc3RyaW5nLmggc3RyaW5ncy5oIHRpbWUuaCB1bmlzdGQuaCB1dGltZS5oIHN5cy9zdGF0Lmggc3lzL3RpbWUuaCBzeXMvdHlwZXMuaCBzeXMvd2FpdC5oXSkKLV0pIwotCi1BQ19ERUZVTihbbWZ4X0FDQ19DSEVDS19GVU5DU10sIFsKLUFDX0NIRUNLX0ZVTkNTKGFjY2VzcyBhbGxvY2EgYXRleGl0IGF0b2kgYXRvbCBjaG1vZCBjaG93biBjdGltZSBkaWZmdGltZSBmc3RhdCBnZXR0aW1lb2ZkYXkgZ210aW1lIGxvY2FsdGltZSBsb25nam1wIGxzdGF0IG1lbWNtcCBtZW1jcHkgbWVtbW92ZSBtZW1zZXQgbWt0aW1lIHFzb3J0IHJhaXNlIHNldGptcCBzaWduYWwgc25wcmludGYgc3RyY2FzZWNtcCBzdHJjaHIgc3RyZHVwIHN0cmVycm9yIHN0cmZ0aW1lIHN0cmljbXAgc3RybmNhc2VjbXAgc3RybmljbXAgc3RycmNociBzdHJzdHIgdGltZSB1bWFzayB1dGltZSB2c25wcmludGYpCi1dKSMKLQotCi1BQ19ERUZVTihbbWZ4X0FDQ19DSEVDS19TSVpFT0ZdLCBbCi1BQ19DSEVDS19TSVpFT0Yoc2hvcnQpCi1BQ19DSEVDS19TSVpFT0YoaW50KQotQUNfQ0hFQ0tfU0laRU9GKGxvbmcpCi0KLUFDX0NIRUNLX1NJWkVPRihsb25nIGxvbmcpCi1BQ19DSEVDS19TSVpFT0YoX19pbnQxNikKLUFDX0NIRUNLX1NJWkVPRihfX2ludDMyKQotQUNfQ0hFQ0tfU0laRU9GKF9faW50NjQpCi0KLUFDX0NIRUNLX1NJWkVPRih2b2lkICopCi1BQ19DSEVDS19TSVpFT0Yoc2l6ZV90KQotQUNfQ0hFQ0tfU0laRU9GKHB0cmRpZmZfdCkKLV0pIwotCi0KLSMgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jIC8vIENoZWNrIGZvciBBQ0NfY29uZm9ybWFuY2UKLSMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1BQ19ERUZVTihbbWZ4X0FDQ19BQ0NDSEtdLCBbCi1tZnhfdG1wPSQxCi1tZnhfc2F2ZV9DUFBGTEFHUz0kQ1BQRkxBR1MKLWRubCBpbiBNYWtlZmlsZS5pbiAkKElOQ0xVREVTKSB3aWxsIGJlIGJlZm9yZSAkKENQUEZMQUdTKSwgc28gd2UgbWltaWMgdGhpcyBoZXJlCi10ZXN0ICJYJG1meF90bXAiID0gIlgiIHx8IENQUEZMQUdTPSIkbWZ4X3RtcCAkQ1BQRkxBR1MiCi0KLUFDX01TR19DSEVDS0lORyhbd2hldGhlciB5b3VyIGNvbXBpbGVyIHBhc3NlcyB0aGUgQUNDIGNvbmZvcm1hbmNlIHRlc3RdKQotCi1BQ19MQU5HX0NPTkZURVNUKFtBQ19MQU5HX1BST0dSQU0oCi1bWyNkZWZpbmUgQUNDX0NPTkZJR19OT19IRUFERVIgMQotI2luY2x1ZGUgImFjYy9hY2MuaCIKLSNpbmNsdWRlICJhY2MvYWNjX2luY2QuaCIKLSN1bmRlZiBBQ0NDSEtfQVNTRVJUCi0jZGVmaW5lIEFDQ0NIS19BU1NFUlQoZXhwcikgICAgIEFDQ19DT01QSUxFX1RJTUVfQVNTRVJUX0hFQURFUihleHByKQotI2luY2x1ZGUgImFjYy9hY2NfY2hrLmNoIgotI3VuZGVmIEFDQ0NIS19BU1NFUlQKLXN0YXRpYyB2b2lkIHRlc3RfYWNjX2NvbXBpbGVfdGltZV9hc3NlcnQodm9pZCkgewotI2RlZmluZSBBQ0NDSEtfQVNTRVJUKGV4cHIpICAgICBBQ0NfQ09NUElMRV9USU1FX0FTU0VSVChleHByKQotI2luY2x1ZGUgImFjYy9hY2NfY2hrLmNoIgotI3VuZGVmIEFDQ0NIS19BU1NFUlQKLX0KLSN1bmRlZiBOREVCVUcKLSNpbmNsdWRlIDxhc3NlcnQuaD4KLXN0YXRpYyBpbnQgdGVzdF9hY2NfcnVuX3RpbWVfYXNzZXJ0KGludCByKSB7Ci0jZGVmaW5lIEFDQ0NIS19BU1NFUlQoZXhwcikgICAgIGFzc2VydChleHByKTsKLSNpbmNsdWRlICJhY2MvYWNjX2Noay5jaCIKLSN1bmRlZiBBQ0NDSEtfQVNTRVJUCi1yZXR1cm4gcjsKLX0KLV1dLCBbWwotdGVzdF9hY2NfY29tcGlsZV90aW1lX2Fzc2VydCgpOwotaWYgKHRlc3RfYWNjX3J1bl90aW1lX2Fzc2VydCgxKSAhPSAxKSByZXR1cm4gMTsKLV1dCi0pXSkKLQotbWZ4X3RtcD1GQUlMRUQKLV9BQ19DT01QSUxFX0lGRUxTRShbXSwgW21meF90bXA9eWVzXSkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19leHQgY29uZnRlc3QuJGFjX29iamV4dAotCi1DUFBGTEFHUz0kbWZ4X3NhdmVfQ1BQRkxBR1MKLQotQUNfTVNHX1JFU1VMVChbJG1meF90bXBdKQotY2FzZSB4JG1meF90bXAgaW4KLSAgeHBhc3NlZCB8IHh5ZXMpIDs7Ci0gICopCi0gICAgQUNfTVNHX05PVElDRShbXSkKLSAgICBBQ19NU0dfTk9USUNFKFtZb3VyIGNvbXBpbGVyIGZhaWxlZCB0aGUgQUNDIGNvbmZvcm1hbmNlIHRlc3QgLSBmb3IgZGV0YWlscyBzZWUgXSkKLSAgICBBQ19NU0dfTk9USUNFKFtgY29uZmlnLmxvZycuIFBsZWFzZSBjaGVjayB0aGF0IGxvZyBmaWxlIGFuZCBjb25zaWRlciBzZW5kaW5nXSkKLSAgICBBQ19NU0dfTk9USUNFKFthIHBhdGNoIG9yIGJ1Zy1yZXBvcnQgdG8gPCR7UEFDS0FHRV9CVUdSRVBPUlR9Pi5dKQotICAgIEFDX01TR19OT1RJQ0UoW1RoYW5rcyBmb3IgeW91ciBzdXBwb3J0Ll0pCi0gICAgQUNfTVNHX05PVElDRShbXSkKLSAgICBBQ19NU0dfRVJST1IoW0FDQyBjb25mb3JtYW5jZSB0ZXN0IGZhaWxlZC4gU3RvcC5dKQotZG5sICAgIEFTX0VYSVQKLSAgICA7OwotZXNhYwotXSkjIG1meF9BQ0NfQUNDQ0hLCi0KLQotIyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgLy8gQ2hlY2sgZm9yIEFDQ19jb25mb3JtYW5jZQotIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLUFDX0RFRlVOKFttZnhfTUlOSUFDQ19BQ0NDSEtdLCBbCi1tZnhfdG1wPSQxCi1tZnhfc2F2ZV9DUFBGTEFHUz0kQ1BQRkxBR1MKLWRubCBpbiBNYWtlZmlsZS5pbiAkKElOQ0xVREVTKSB3aWxsIGJlIGJlZm9yZSAkKENQUEZMQUdTKSwgc28gd2UgbWltaWMgdGhpcyBoZXJlCi10ZXN0ICJYJG1meF90bXAiID0gIlgiIHx8IENQUEZMQUdTPSIkbWZ4X3RtcCAkQ1BQRkxBR1MiCi0KLUFDX01TR19DSEVDS0lORyhbd2hldGhlciB5b3VyIGNvbXBpbGVyIHBhc3NlcyB0aGUgQUNDIGNvbmZvcm1hbmNlIHRlc3RdKQotCi1BQ19MQU5HX0NPTkZURVNUKFtBQ19MQU5HX1BST0dSQU0oCi1bWyNkZWZpbmUgQUNDX0NPTkZJR19OT19IRUFERVIgMQotI2RlZmluZSBBQ0NfV0FOVF9BQ0NfSU5DRF9IIDEKLSNpbmNsdWRlICQyCi0KLSNkZWZpbmUgQUNDX1dBTlRfQUNDX0NIS19DSCAxCi0jdW5kZWYgQUNDQ0hLX0FTU0VSVAotI2RlZmluZSBBQ0NDSEtfQVNTRVJUKGV4cHIpICAgICBBQ0NfQ09NUElMRV9USU1FX0FTU0VSVF9IRUFERVIoZXhwcikKLSNpbmNsdWRlICQyCi0KLSNkZWZpbmUgQUNDX1dBTlRfQUNDX0NIS19DSCAxCi0jdW5kZWYgQUNDQ0hLX0FTU0VSVAotI2RlZmluZSBBQ0NDSEtfQVNTRVJUKGV4cHIpICAgICBBQ0NfQ09NUElMRV9USU1FX0FTU0VSVChleHByKQotc3RhdGljIHZvaWQgdGVzdF9hY2NfY29tcGlsZV90aW1lX2Fzc2VydCh2b2lkKSB7Ci0jaW5jbHVkZSAkMgotfQotCi0jdW5kZWYgTkRFQlVHCi0jaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0jZGVmaW5lIEFDQ19XQU5UX0FDQ19DSEtfQ0ggMQotI3VuZGVmIEFDQ0NIS19BU1NFUlQKLSNkZWZpbmUgQUNDQ0hLX0FTU0VSVChleHByKSAgYXNzZXJ0KGV4cHIpOwotc3RhdGljIGludCB0ZXN0X2FjY19ydW5fdGltZV9hc3NlcnQoaW50IHIpIHsKLSNpbmNsdWRlICQyCi1yZXR1cm4gcjsKLX0KLV1dLCBbWwotdGVzdF9hY2NfY29tcGlsZV90aW1lX2Fzc2VydCgpOwotaWYgKHRlc3RfYWNjX3J1bl90aW1lX2Fzc2VydCgxKSAhPSAxKSByZXR1cm4gMTsKLV1dCi0pXSkKLQotbWZ4X3RtcD1GQUlMRUQKLV9BQ19DT01QSUxFX0lGRUxTRShbXSwgW21meF90bXA9eWVzXSkKLXJtIC1mIGNvbmZ0ZXN0LiRhY19leHQgY29uZnRlc3QuJGFjX29iamV4dAotCi1DUFBGTEFHUz0kbWZ4X3NhdmVfQ1BQRkxBR1MKLQotQUNfTVNHX1JFU1VMVChbJG1meF90bXBdKQotY2FzZSB4JG1meF90bXAgaW4KLSAgeHBhc3NlZCB8IHh5ZXMpIDs7Ci0gICopCi0gICAgQUNfTVNHX05PVElDRShbXSkKLSAgICBBQ19NU0dfTk9USUNFKFtZb3VyIGNvbXBpbGVyIGZhaWxlZCB0aGUgQUNDIGNvbmZvcm1hbmNlIHRlc3QgLSBmb3IgZGV0YWlscyBzZWUgXSkKLSAgICBBQ19NU0dfTk9USUNFKFtgY29uZmlnLmxvZycuIFBsZWFzZSBjaGVjayB0aGF0IGxvZyBmaWxlIGFuZCBjb25zaWRlciBzZW5kaW5nXSkKLSAgICBBQ19NU0dfTk9USUNFKFthIHBhdGNoIG9yIGJ1Zy1yZXBvcnQgdG8gPCR7UEFDS0FHRV9CVUdSRVBPUlR9Pi5dKQotICAgIEFDX01TR19OT1RJQ0UoW1RoYW5rcyBmb3IgeW91ciBzdXBwb3J0Ll0pCi0gICAgQUNfTVNHX05PVElDRShbXSkKLSAgICBBQ19NU0dfRVJST1IoW0FDQyBjb25mb3JtYW5jZSB0ZXN0IGZhaWxlZC4gU3RvcC5dKQotZG5sICAgIEFTX0VYSVQKLSAgICA7OwotZXNhYwotXSkjIG1meF9NSU5JQUNDX0FDQ0NISwotCi0KLQotIyBzZXJpYWwgMQotCi1BQ19ERUZVTihbbWZ4X1BST0dfQ1BQRkxBR1NdLCBbCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlIEMgcHJlcHJvY2Vzc29yIG5lZWRzIHNwZWNpYWwgZmxhZ3NdKQotCi1BQ19MQU5HX0NPTkZURVNUKFtBQ19MQU5HX1BST0dSQU0oCi1bWyNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpZiAoMzI3NjcgPj0gNDI5NDk2NzI5NXVsKSB8fCAoNjU1MzV1ID49IDQyOTQ5NjcyOTV1bCkKLSMgIGluY2x1ZGUgInlvdXIgQyBwcmVwcm9jZXNzb3IgaXMgYnJva2VuIDEiCi0jZWxpZiAoMHhmZmZmdSA9PSAweGZmZmZmZmZmdWwpCi0jICBpbmNsdWRlICJ5b3VyIEMgcHJlcHJvY2Vzc29yIGlzIGJyb2tlbiAyIgotI2VsaWYgKDMyNzY3ID49IFVMT05HX01BWCkgfHwgKDY1NTM1dSA+PSBVTE9OR19NQVgpCi0jICBpbmNsdWRlICJ5b3VyIEMgcHJlcHJvY2Vzc29yIGlzIGJyb2tlbiAzIgotI2VuZGlmCi1dXSwgW1sgXV0KLSldKQotCi1tZnhfc2F2ZV9DUFBGTEFHUz0kQ1BQRkxBR1MKLW1meF90bXA9RVJST1IKLWZvciBtZnhfYXJnIGluICIiIC1uby1jcHAtcHJlY29tcAotZG8KLSAgQ1BQRkxBR1M9IiRtZnhfYXJnICRtZnhfc2F2ZV9DUFBGTEFHUyIKLSAgX0FDX0NPTVBJTEVfSUZFTFNFKFtdLAotW21meF90bXA9JG1meF9hcmcKLWJyZWFrXSkKLWRvbmUKLUNQUEZMQUdTPSRtZnhfc2F2ZV9DUFBGTEFHUwotcm0gLWYgY29uZnRlc3QuJGFjX2V4dCBjb25mdGVzdC4kYWNfb2JqZXh0Ci1jYXNlIHgkbWZ4X3RtcCBpbgotICB4KQotICAgIEFDX01TR19SRVNVTFQoW25vbmUgbmVlZGVkXSkgOzsKLSAgeEVSUk9SKQotICAgIEFDX01TR19SRVNVTFQoW0VSUk9SXSkKLSAgICBBQ19NU0dfRVJST1IoW3lvdXIgQyBwcmVwcm9jZXNzb3IgaXMgYnJva2VuIC0gZm9yIGRldGFpbHMgc2VlIGNvbmZpZy5sb2ddKQotICAgIDs7Ci0gICopCi0gICAgQUNfTVNHX1JFU1VMVChbJG1meF90bXBdKQotICAgIENQUEZMQUdTPSIkbWZ4X3RtcCAkQ1BQRkxBR1MiCi0gICAgOzsKLWVzYWMKLV0pIyBtZnhfUFJPR19DUFBGTEFHUwotCi0KLQotIyBzZXJpYWwgMwotCi1BQ19ERUZVTihbbWZ4X0NIRUNLX0hFQURFUl9TQU5FX0xJTUlUU19IXSwgWwotQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgbGltaXRzLmggaXMgc2FuZV0sCi1tZnhfY3ZfaGVhZGVyX3NhbmVfbGltaXRzX2gsCi1bQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWyNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpZiAoMzI3NjcgPj0gNDI5NDk2NzI5NXVsKSB8fCAoNjU1MzV1ID49IDQyOTQ5NjcyOTV1bCkKLSMgIGlmIGRlZmluZWQoX19BUFBMRV9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKQotIyAgICBlcnJvciAieW91ciBwcmVwcm9jZXNzb3IgaXMgYnJva2VuIC0gdXNlIGNvbXBpbGVyIG9wdGlvbiAtbm8tY3BwLXByZWNvbXAiCi0jICBlbHNlCi0jICAgIGluY2x1ZGUgInlvdXIgcHJlcHJvY2Vzc29yIGlzIGJyb2tlbiIKLSMgIGVuZGlmCi0jZW5kaWYKLSNkZWZpbmUgTUZYXzB4ZmZmZiAgICAgICAgICAweGZmZmYKLSNkZWZpbmUgTUZYXzB4ZmZmZmZmZmZMICAgICA0Mjk0OTY3Mjk1dWwKLSNpZiAhZGVmaW5lZChDSEFSX0JJVCkgfHwgKENIQVJfQklUICE9IDgpCi0jICBpbmNsdWRlICJlcnJvciBDSEFSX0JJVCIKLSNlbmRpZgotI2lmICFkZWZpbmVkKFVDSEFSX01BWCkKLSMgIGluY2x1ZGUgImVycm9yIFVDSEFSX01BWCAxIgotI2VuZGlmCi0jaWYgIWRlZmluZWQoVVNIUlRfTUFYKQotIyAgaW5jbHVkZSAiZXJyb3IgVVNIUlRfTUFYIDEiCi0jZW5kaWYKLSNpZiAhZGVmaW5lZChVSU5UX01BWCkKLSMgIGluY2x1ZGUgImVycm9yIFVJTlRfTUFYIDEiCi0jZW5kaWYKLSNpZiAhZGVmaW5lZChVTE9OR19NQVgpCi0jICBpbmNsdWRlICJlcnJvciBVTE9OR19NQVggMSIKLSNlbmRpZgotI2lmICFkZWZpbmVkKFNIUlRfTUFYKQotIyAgaW5jbHVkZSAiZXJyb3IgU0hSVF9NQVggMSIKLSNlbmRpZgotI2lmICFkZWZpbmVkKElOVF9NQVgpCi0jICBpbmNsdWRlICJlcnJvciBJTlRfTUFYIDEiCi0jZW5kaWYKLSNpZiAhZGVmaW5lZChMT05HX01BWCkKLSMgIGluY2x1ZGUgImVycm9yIExPTkdfTUFYIDEiCi0jZW5kaWYKLSNpZiAoVUNIQVJfTUFYIDwgMSkKLSMgIGluY2x1ZGUgImVycm9yIFVDSEFSX01BWCAyIgotI2VuZGlmCi0jaWYgKFVTSFJUX01BWCA8IDEpCi0jICBpbmNsdWRlICJlcnJvciBVU0hSVF9NQVggMiIKLSNlbmRpZgotI2lmIChVSU5UX01BWCA8IDEpCi0jICBpbmNsdWRlICJlcnJvciBVSU5UX01BWCAyIgotI2VuZGlmCi0jaWYgKFVMT05HX01BWCA8IDEpCi0jICBpbmNsdWRlICJlcnJvciBVTE9OR19NQVggMiIKLSNlbmRpZgotI2lmIChVQ0hBUl9NQVggPCAweGZmKQotIyAgaW5jbHVkZSAiZXJyb3IgVUNIQVJfTUFYIDMiCi0jZW5kaWYKLSNpZiAoVVNIUlRfTUFYIDwgTUZYXzB4ZmZmZikKLSMgIGluY2x1ZGUgImVycm9yIFVTSFJUX01BWCAzIgotI2VuZGlmCi0jaWYgKFVJTlRfTUFYIDwgTUZYXzB4ZmZmZikKLSMgIGluY2x1ZGUgImVycm9yIFVJTlRfTUFYIDMiCi0jZW5kaWYKLSNpZiAoVUxPTkdfTUFYIDwgTUZYXzB4ZmZmZmZmZmZMKQotIyAgaW5jbHVkZSAiZXJyb3IgVUxPTkdfTUFYIDMiCi0jZW5kaWYKLSNpZiAoVVNIUlRfTUFYID4gVUlOVF9NQVgpCi0jICBpbmNsdWRlICJlcnJvciBVU0hSVF9NQVggdnMgVUlOVF9NQVgiCi0jZW5kaWYKLSNpZiAoVUlOVF9NQVggPiBVTE9OR19NQVgpCi0jICBpbmNsdWRlICJlcnJvciBVSU5UX01BWCB2cyBVTE9OR19NQVgiCi0jZW5kaWYKLV1dLCBbWwotI2lmIChVU0hSVF9NQVggPT0gTUZYXzB4ZmZmZikKLXsgdHlwZWRlZiBjaGFyIGFfc2hvcnQyYVsxIC0gMiAqICEoc2l6ZW9mKHNob3J0KSA9PSAyKV07IH0KLSNlbGlmIChVU0hSVF9NQVggPj0gTUZYXzB4ZmZmZikKLXsgdHlwZWRlZiBjaGFyIGFfc2hvcnQyYlsxIC0gMiAqICEoc2l6ZW9mKHNob3J0KSA+IDIpXTsgfQotI2VuZGlmCi0jaWYgKFVJTlRfTUFYID09IE1GWF8weGZmZmYpCi17IHR5cGVkZWYgY2hhciBhX2ludDJhWzEgLSAyICogIShzaXplb2YoaW50KSA9PSAyKV07IH0KLSNlbGlmIChVSU5UX01BWCA+PSBNRlhfMHhmZmZmKQoteyB0eXBlZGVmIGNoYXIgYV9pbnQyYlsxIC0gMiAqICEoc2l6ZW9mKGludCkgPiAyKV07IH0KLSNlbmRpZgotI2lmIChVTE9OR19NQVggPT0gTUZYXzB4ZmZmZikKLXsgdHlwZWRlZiBjaGFyIGFfbG9uZzJhWzEgLSAyICogIShzaXplb2YobG9uZykgPT0gMildOyB9Ci0jZWxpZiAoVUxPTkdfTUFYID49IE1GWF8weGZmZmYpCi17IHR5cGVkZWYgY2hhciBhX2xvbmcyYlsxIC0gMiAqICEoc2l6ZW9mKGxvbmcpID4gMildOyB9Ci0jZW5kaWYKLSNpZiAoVVNIUlRfTUFYID09IE1GWF8weGZmZmZmZmZmTCkKLXsgdHlwZWRlZiBjaGFyIGFfc2hvcnQ0YVsxIC0gMiAqICEoc2l6ZW9mKHNob3J0KSA9PSA0KV07IH0KLSNlbGlmIChVU0hSVF9NQVggPj0gTUZYXzB4ZmZmZmZmZmZMKQoteyB0eXBlZGVmIGNoYXIgYV9zaG9ydDRiWzEgLSAyICogIShzaXplb2Yoc2hvcnQpID4gNCldOyB9Ci0jZW5kaWYKLSNpZiAoVUlOVF9NQVggPT0gTUZYXzB4ZmZmZmZmZmZMKQoteyB0eXBlZGVmIGNoYXIgYV9pbnQ0YVsxIC0gMiAqICEoc2l6ZW9mKGludCkgPT0gNCldOyB9Ci0jZWxpZiAoVUlOVF9NQVggPj0gTUZYXzB4ZmZmZmZmZmZMKQoteyB0eXBlZGVmIGNoYXIgYV9pbnQ0YlsxIC0gMiAqICEoc2l6ZW9mKGludCkgPiA0KV07IH0KLSNlbmRpZgotI2lmIChVTE9OR19NQVggPT0gTUZYXzB4ZmZmZmZmZmZMKQoteyB0eXBlZGVmIGNoYXIgYV9sb25nNGFbMSAtIDIgKiAhKHNpemVvZihsb25nKSA9PSA0KV07IH0KLSNlbGlmIChVTE9OR19NQVggPj0gTUZYXzB4ZmZmZmZmZmZMKQoteyB0eXBlZGVmIGNoYXIgYV9sb25nNGJbMSAtIDIgKiAhKHNpemVvZihsb25nKSA+IDQpXTsgfQotI2VuZGlmCi1dXSldLAotW21meF9jdl9oZWFkZXJfc2FuZV9saW1pdHNfaD15ZXNdLAotW21meF9jdl9oZWFkZXJfc2FuZV9saW1pdHNfaD1ub10pXSkKLV0pCi0KLSMgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jIC8vIHN0YW5kYXJkCi0jICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotQUNfREVGVU4oW21meF9MWk9fQ0hFQ0tfRU5ESUFOXSwgWwotQUNfQ19CSUdFTkRJQU4oW0FDX0RFRklORShMWk9fQUJJX0JJR19FTkRJQU4sMSxbRGVmaW5lIHRvIDEgaWYgeW91ciBtYWNoaW5lIGlzIGJpZyBlbmRpYW4uXSldLFtBQ19ERUZJTkUoTFpPX0FCSV9MSVRUTEVfRU5ESUFOLDEsW0RlZmluZSB0byAxIGlmIHlvdXIgbWFjaGluZSBpcyBsaXR0bGUgZW5kaWFuLl0pXSkKLV0pIwotCi0KLSMgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jIC8vCi0jICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotZG5sIG1vcmUgdHlwZXMgd2hpY2ggYXJlIG5vdCB5ZXQgY292ZXJlZCBieSBBQ0MKLQotQUNfREVGVU4oW21meF9DSEVDS19TSVpFT0ZdLCBbCi1BQ19DSEVDS19TSVpFT0YoX19pbnQzMikKLUFDX0NIRUNLX1NJWkVPRihpbnRtYXhfdCkKLUFDX0NIRUNLX1NJWkVPRih1aW50bWF4X3QpCi1BQ19DSEVDS19TSVpFT0YoaW50cHRyX3QpCi1BQ19DSEVDS19TSVpFT0YodWludHB0cl90KQotCi1BQ19DSEVDS19TSVpFT0YoZmxvYXQpCi1BQ19DSEVDS19TSVpFT0YoZG91YmxlKQotQUNfQ0hFQ0tfU0laRU9GKGxvbmcgZG91YmxlKQotCi1BQ19DSEVDS19TSVpFT0YoZGV2X3QpCi1BQ19DSEVDS19TSVpFT0YoZnBvc190KQotQUNfQ0hFQ0tfU0laRU9GKG1vZGVfdCkKLUFDX0NIRUNLX1NJWkVPRihvZmZfdCkKLUFDX0NIRUNLX1NJWkVPRihzc2l6ZV90KQotQUNfQ0hFQ0tfU0laRU9GKHRpbWVfdCkKLV0pIwotCi0KLQotQUNfREVGVU4oW21meF9DSEVDS19MSUJfV0lOTU1dLCBbCi1pZiB0ZXN0ICJYJEdDQyIgPSBYeWVzOyB0aGVuCi1jYXNlICRob3N0X29zIGluCi1jeWd3aW4qIHwgbWluZ3cqIHwgcHczMiopCi0gICAgIHRlc3QgIlgkTElCUyIgIT0gIlgiICYmIExJQlM9IiRMSUJTICIKLSAgICAgTElCUz0iJHtMSUJTfS1sd2lubW0iIDs7Ci0qKQotICAgICA7OwotZXNhYwotZmkKLV0pIwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHpvL2x6b18yLjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6by9sem9fMi4xMC5iYgppbmRleCA0OTBkMjMwLi44ZWVmZWMzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHpvL2x6b18yLjEwLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sem8vbHpvXzIuMTAuYmIKQEAgLTgsNyArOCw2IEBACiBTUkNfVVJJID0gImh0dHA6Ly93d3cub2Jlcmh1bWVyLmNvbS9vcGVuc291cmNlL2x6by9kb3dubG9hZC9sem8tJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLW1lbWNweS1pbnN0ZWFkLW9mLXJlaW52ZW50aW5nLWl0LnBhdGNoIFwKIAkgICBmaWxlOi8vMDAwMS1BZGQtcGtnY29uZmlnZGlyLXRvLXNvbHZlLXRoZS11bmRlZmluZS1lcnJvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hY2luY2x1ZGUubTQgXAogICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKICAgICAgICAgICAgIgogCkBAIC0xOSwxMCArMTgsNiBAQAogCiBFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2hhcmVkIgogCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JY3AgJHtXT1JLRElSfS9hY2luY2x1ZGUubTQgJHtTfS8KLX0KLQogZG9faW5zdGFsbF9wdGVzdCgpIHsKIAl0PSR7RH0ke1BURVNUX1BBVEh9CiAJY3AgJHtTfS91dGlsL2NoZWNrLnNoICR0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnIuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjNmOTE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnIuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1TVU1NQVJZID0gIkMgbGlicmFyeSBmb3IgbXVsdGlwbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGNvbXB1dGF0aW9ucyB3aXRoIGV4YWN0IHJvdW5kaW5nIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tcGZyLm9yZy8iCi1MSUNFTlNFID0gIkxHUEx2MysiCi1TRUNUSU9OID0gImRldmVsIgotCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyXzMuMS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L21wZnIvbXBmcl8zLjEuNS5iYgppbmRleCAyZDU5YzRhLi5hNzhjMGJkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyXzMuMS41LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnJfMy4xLjUuYmIKQEAgLTEsNiArMSwxMCBAQAotcmVxdWlyZSBtcGZyLmluYworU1VNTUFSWSA9ICJDIGxpYnJhcnkgZm9yIG11bHRpcGxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBjb21wdXRhdGlvbnMgd2l0aCBleGFjdCByb3VuZGluZyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubXBmci5vcmcvIgorTElDRU5TRSA9ICJMR1BMdjMrIgorU0VDVElPTiA9ICJkZXZlbCIKIAotTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MyIKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KKwogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAogCQkgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiIKIERFUEVORFMgPSAiZ21wIgpAQCAtMTMsNiArMTcsNCBAQAogCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5tcGZyLm9yZy9tcGZyLWN1cnJlbnQvIgogCi1TID0gIiR7V09SS0RJUn0vbXBmci0ke1BWfSIKLQogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25lb24vbmVvbi9wa2djb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmVvbi9uZW9uL3BrZ2NvbmZpZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM5ZGJhOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmVvbi9uZW9uL3BrZ2NvbmZpZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotLS0tCi0gbmVvbi5wYy5pbiB8ICAgIDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotLS0tIG5lb24tMC4zMC4xLm9yaWcvbmVvbi5wYy5pbgotKysrIG5lb24tMC4zMC4xL25lb24ucGMuaW4KLUBAIC03LDUgKzcsNSBAQCBOYW1lOiBuZW9uCi0gRGVzY3JpcHRpb246IEhUVFAvV2ViREFWIGNsaWVudCBsaWJyYXJ5Ci0gVmVyc2lvbjogQE5FT05fVkVSU0lPTkAKLSBMaWJzOiAtTCR7bGliZGlyfSAtbG5lb24gQE5FT05fUENfTElCU0AKLS1MaWJzLnByaXZhdGU6IEBORU9OX0xJQlNACi0rTGlicy5wcml2YXRlOiAtTCR7bGliZGlyfSAtbHogLWxnY3J5cHQgLWxncGctZXJyb3IgLWxleHBhdCAtbGdudXRscwotIENmbGFnczogLUkke2luY2x1ZGVkaXJ9L25lb24gQE5FT05fQ0ZMQUdTQApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25lb24vbmVvbl8wLjMwLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmVvbi9uZW9uXzAuMzAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTc5MmM1Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmVvbi9uZW9uXzAuMzAuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLVNVTU1BUlkgPSAiQW4gSFRUUCBhbmQgV2ViREFWIGNsaWVudCBsaWJyYXJ5IHdpdGggYSBDIGludGVyZmFjZSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cud2ViZGF2Lm9yZy9uZW9uLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy9DT1BZSU5HLkxJQjttZDU9ZjMwYTk3MTZlZjM3NjJlMzQ2N2EyZjYyYmY3OTBmMGEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL25lX3V0aWxzLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9MmNhY2E2MDk1MzhlZGRhYTZmNmFkZjEyMGEyMTgwMzciCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy53ZWJkYXYub3JnLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3BrZ2NvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTI4ZDc3YmYxNDAzMmQ3ZjUwNDZiMzkzMDcwNGVmNDEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGIwYmQ4Y2RlYzMyOWI0OGY1M2E2ZjAwMTk5YzkyZDViYTQwYjBmMDE1YjE1MzcxOGQxYjE1ZDNkOTY3ZmJjYSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkIGxpYl9wYWNrYWdlIHBrZ2NvbmZpZwotCi0jIEVuYWJsZSBnbnV0bHMgb3Igb3BlbnNzbCwgbm90IGJvdGgKLVBBQ0tBR0VDT05GSUcgPz0gImV4cGF0IGdudXRscyBsaWJwcm94eSB3ZWJkYXYgemxpYiIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gImV4cGF0IGdudXRscyB3ZWJkYXYgemxpYiIKLQotUEFDS0FHRUNPTkZJR1tleHBhdF0gPSAiLS13aXRoLWV4cGF0LC0td2l0aG91dC1leHBhdCxleHBhdCIKLVBBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLXdpdGgtc3NsPWdudXRscywsZ251dGxzIgotUEFDS0FHRUNPTkZJR1tnc3NhcGldID0gIi0td2l0aC1nc3NhcGksLS13aXRob3V0LWdzc2FwaSxrcmI1IgotUEFDS0FHRUNPTkZJR1tsaWJwcm94eV0gPSAiLS13aXRoLWxpYnByb3h5LC0td2l0aG91dC1saWJwcm94eSxsaWJwcm94eSIKLVBBQ0tBR0VDT05GSUdbbGlieG1sMl0gPSAiLS13aXRoLWxpYnhtbDIsLS13aXRob3V0LWxpYnhtbDIsbGlieG1sMiIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLXNzbD1vcGVuc3NsLCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1t3ZWJkYXZdID0gIi0tZW5hYmxlLXdlYmRhdiwtLWRpc2FibGUtd2ViZGF2LCIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWIsLS13aXRob3V0LXpsaWIsemxpYiIKLQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1zaGFyZWQiCi0KLWRvX2NvbXBpbGVfYXBwZW5kKCkgewotCW9lX3J1bm1ha2UgLUMgdGVzdAotfQotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L25lb24tY29uZmlnIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvZmlsZXMvQWRkLXRhcmdldC10by1vbmx5LWJ1aWxkLXRlc3RzLW5vdC1ydW4tdGhlbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvZmlsZXMvQWRkLXRhcmdldC10by1vbmx5LWJ1aWxkLXRlc3RzLW5vdC1ydW4tdGhlbS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNkYTc3Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL2ZpbGVzL0FkZC10YXJnZXQtdG8tb25seS1idWlsZC10ZXN0cy1ub3QtcnVuLXRoZW0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIDQ2ZWRmMDFjYzk4ZGI5ZjlmZWVjOTg0ODk3ODM2ZGZkZDI2YmRjOGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogV2VkLCAxMiBBdWcgMjAxNSAyMzoyNzoyNyArMDMwMAotU3ViamVjdDogW1BBVENIXSBBZGQgdGFyZ2V0IHRvIG9ubHkgYnVpbGQgdGVzdHMgKG5vdCBydW4gdGhlbSkKLQotTm90IHNlbmRpbmcgdXBzdHJlYW0gYXMgdGhpcyBpcyBvbmx5IGEgc3RhcnQgb2YgYSBzb2x1dGlvbiB0bwotaW5zdGFsbGFibGUgdGVzdHM6IEl0J3MgdXNlZnVsIGZvciB1cyBhbHJlYWR5IGFzIGlzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW25vdCBhIGNvbXBsZXRlIHNvbHV0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gTWFrZWZpbGUuaW4gICAgICAgICAgIHwgMyArKysKLSB0ZXN0c3VpdGUvTWFrZWZpbGUuaW4gfCAyICsrCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IDA4ZWZiN2QuLjc5MDkzNDIgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KLUBAIC01NSw2ICs1NSw5IEBAIGNsZWFuIGRpc3RjbGVhbiBtb3N0bHljbGVhbiBtYWludGFpbmVyLWNsZWFuIHRhZ3M6Ci0gCSAgZWNobyAiTWFraW5nICRAIGluICQkZCIgOyAoY2QgJCRkICYmICQoTUFLRSkgJEApOyBkb25lCi0gCSQoTUFLRSkgJEAtaGVyZQotIAotK2J1aWxkdGVzdDoKLSsJZWNobyAiTWFraW5nICRAIGluIHRlc3RzdWl0ZSIgOyAoY2QgdGVzdHN1aXRlICYmICQoTUFLRSkgJEApCi0rCi0gY2hlY2staGVyZToKLSAJdHJ1ZQotIAotZGlmZiAtLWdpdCBhL3Rlc3RzdWl0ZS9NYWtlZmlsZS5pbiBiL3Rlc3RzdWl0ZS9NYWtlZmlsZS5pbgotaW5kZXggNmJjMTkwNy4uYmI2NWJmMCAxMDA2NDQKLS0tLSBhL3Rlc3RzdWl0ZS9NYWtlZmlsZS5pbgotKysrIGIvdGVzdHN1aXRlL01ha2VmaWxlLmluCi1AQCAtMTE2LDYgKzExNiw4IEBAICQoVEFSR0VUUykgJChFWFRSQV9UQVJHRVRTKTogdGVzdHV0aWxzLiQoT0JKRVhUKSAuLi9uZXR0bGUtaW50ZXJuYWwuJChPQkpFWFQpIFwKLSAjIGRhdGEuCi0gVkFMR1JJTkQgPSB2YWxncmluZCAtLWVycm9yLWV4aXRjb2RlPTEgLS1sZWFrLWNoZWNrPWZ1bGwgLS1zaG93LXJlYWNoYWJsZT15ZXMgQElGX0FTTUAgLS1wYXJ0aWFsLWxvYWRzLW9rPXllcwotIAotK2J1aWxkdGVzdDogJChUU19BTEwpCi0rCi0gIyBUaGUgUEFUSCB1cGRhdGUgaXMgZm9yIGxvY2F0aW5nIGRsbHMgb24gdypuZG93cy4KLSBjaGVjazogJChUU19BTEwpCi0gCUxEX0xJQlJBUllfUEFUSD0uLi8ubGliIFBBVEg9Ii4uLy5saWI6JCRQQVRIIiBzcmNkaXI9IiQoc3JjZGlyKSIgXAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZS0zLjMvY2hlY2staGVhZGVyLWZpbGVzLW9mLW9wZW5zc2wtb25seS1pZi1lbmFibGVfLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUtMy4zL2NoZWNrLWhlYWRlci1maWxlcy1vZi1vcGVuc3NsLW9ubHktaWYtZW5hYmxlXy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcyMTZiYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZS0zLjMvY2hlY2staGVhZGVyLWZpbGVzLW9mLW9wZW5zc2wtb25seS1pZi1lbmFibGVfLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotRnJvbSBmZmVlNmI1ZjYyMDRhMDIxMGY3MTc5NjhlYzZjZTUxNGQ3MGFjY2ExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSGFpcWluZyBCYWkgPEhhaXFpbmcuQmFpQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDkgRGVjIDIwMTYgMTU6MjM6MTcgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbmV0dGxlOiBjaGVjayBoZWFkZXIgZmlsZXMgb2Ygb3BlbnNzbCBvbmx5IGlmCi0gJ2VuYWJsZV9vcGVuc3NsPXllcycuCi0KLVRoZSBvcmlnaW5hbCBjb25maWd1cmUgc2NyaXB0IGNoZWNrcyBvcGVuc3NsIGhlYWRlciBmaWxlcyB0byBnZW5lcmF0ZQotY29uZmlnLmggZXZlbiBpZiAnZW5hYmxlX29wZW5zc2wnIGlzIG5vdCBzZXQgdG8geWVzLCB0aGlzIG1hZGUgaW5jb25zaXN0ZW50Ci1idWlsZGluZyBmb3IgbmV0dGxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEhhaXFpbmcgQmFpIDxIYWlxaW5nLkJhaUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgOCArKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDRlYWQ1MmMuLjk4Mjc2MGYgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE4NSw5ICsxODUsMTEgQEAgQUNfSEVBREVSX1RJTUUKLSBBQ19DSEVDS19TSVpFT0YobG9uZykKLSBBQ19DSEVDS19TSVpFT0Yoc2l6ZV90KQotIAotLUFDX0NIRUNLX0hFQURFUlMoW29wZW5zc2wvYmxvd2Zpc2guaCBvcGVuc3NsL2Rlcy5oIG9wZW5zc2wvY2FzdC5oIG9wZW5zc2wvYWVzLmggb3BlbnNzbC9lY2RzYS5oXSwsCi0tW2VuYWJsZV9vcGVuc3NsPW5vCi0tIGJyZWFrXSkKLStpZiB0ZXN0ICJ4JGVuYWJsZV9vcGVuc3NsIiA9ICJ4eWVzIjsgdGhlbgotKyAgQUNfQ0hFQ0tfSEVBREVSUyhbb3BlbnNzbC9ibG93ZmlzaC5oIG9wZW5zc2wvZGVzLmggb3BlbnNzbC9jYXN0Lmggb3BlbnNzbC9hZXMuaCBvcGVuc3NsL2VjZHNhLmhdLCwKLSsgIFtlbmFibGVfb3BlbnNzbD1ubwotKyAgYnJlYWtdKQotK2ZpCi0gCi0gQUNfQ0hFQ0tfSEVBREVSUyhbdmFsZ3JpbmQvbWVtY2hlY2suaF0pCi0gCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuNC9BZGQtdGFyZ2V0LXRvLW9ubHktYnVpbGQtdGVzdHMtbm90LXJ1bi10aGVtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUtMy40L0FkZC10YXJnZXQtdG8tb25seS1idWlsZC10ZXN0cy1ub3QtcnVuLXRoZW0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzAwNzA2MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuNC9BZGQtdGFyZ2V0LXRvLW9ubHktYnVpbGQtdGVzdHMtbm90LXJ1bi10aGVtLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0FkZCB0YXJnZXQgdG8gb25seSBidWlsZCB0ZXN0cyAobm90IHJ1biB0aGVtKQorCitOb3Qgc2VuZGluZyB1cHN0cmVhbSBhcyB0aGlzIGlzIG9ubHkgYSBzdGFydCBvZiBhIHNvbHV0aW9uIHRvCitpbnN0YWxsYWJsZSB0ZXN0czogSXQncyB1c2VmdWwgZm9yIHVzIGFscmVhZHkgYXMgaXMuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbm90IGEgY29tcGxldGUgc29sdXRpb25dCisKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitSZWZhY3RvcmVkIGZvciAzLjQKK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgorCitJbmRleDogbmV0dGxlLTMuNC9NYWtlZmlsZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5ldHRsZS0zLjQub3JpZy9NYWtlZmlsZS5pbgorKysrIG5ldHRsZS0zLjQvTWFrZWZpbGUuaW4KK0BAIC01NSw2ICs1NSw5IEBAIGNsZWFuIGRpc3RjbGVhbiBtb3N0bHljbGVhbiBtYWludGFpbmVyLWMKKyAJICBlY2hvICJNYWtpbmcgJEAgaW4gJCRkIiA7IChjZCAkJGQgJiYgJChNQUtFKSAkQCk7IGRvbmUKKyAJJChNQUtFKSAkQC1oZXJlCisgCisrYnVpbGR0ZXN0OgorKwllY2hvICJNYWtpbmcgJEAgaW4gdGVzdHN1aXRlIiA7IChjZCB0ZXN0c3VpdGUgJiYgJChNQUtFKSAkQCkKKysKKyBjaGVjay1oZXJlOgorIAl0cnVlCisgCitJbmRleDogbmV0dGxlLTMuNC90ZXN0c3VpdGUvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBuZXR0bGUtMy40Lm9yaWcvdGVzdHN1aXRlL01ha2VmaWxlLmluCisrKysgbmV0dGxlLTMuNC90ZXN0c3VpdGUvTWFrZWZpbGUuaW4KK0BAIC0xMzEsNiArMTMxLDggQEAgJChUQVJHRVRTKSAkKEVYVFJBX1RBUkdFVFMpOiB0ZXN0dXRpbHMuJAorICMgZGF0YS4KKyBWQUxHUklORCA9IHZhbGdyaW5kIC0tZXJyb3ItZXhpdGNvZGU9MSAtLWxlYWstY2hlY2s9ZnVsbCAtLXNob3ctcmVhY2hhYmxlPXllcyBASUZfQVNNQCAtLXBhcnRpYWwtbG9hZHMtb2s9eWVzCisgCisrYnVpbGR0ZXN0OiAkKFRTX0FMTCkKKysKKyAjIFRoZSBQQVRIIHVwZGF0ZSBpcyBmb3Igd2luZG93cyBkbGxzLCBEWUxEX0xJQlJBUllfUEFUSCBpcyBmb3IgT1NYLgorIGNoZWNrOiAkKFRTX0FMTCkKKyAJTERfTElCUkFSWV9QQVRIPS4uLy5saWIgUEFUSD0iLi4vLmxpYjokJFBBVEgiIERZTERfTElCUkFSWV9QQVRIPS4uLy5saWIgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUtMy40L2NoZWNrLWhlYWRlci1maWxlcy1vZi1vcGVuc3NsLW9ubHktaWYtZW5hYmxlXy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuNC9jaGVjay1oZWFkZXItZmlsZXMtb2Ytb3BlbnNzbC1vbmx5LWlmLWVuYWJsZV8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVmMjY2NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuNC9jaGVjay1oZWFkZXItZmlsZXMtb2Ytb3BlbnNzbC1vbmx5LWlmLWVuYWJsZV8ucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSBmZmVlNmI1ZjYyMDRhMDIxMGY3MTc5NjhlYzZjZTUxNGQ3MGFjY2ExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSGFpcWluZyBCYWkgPEhhaXFpbmcuQmFpQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDkgRGVjIDIwMTYgMTU6MjM6MTcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbmV0dGxlOiBjaGVjayBoZWFkZXIgZmlsZXMgb2Ygb3BlbnNzbCBvbmx5IGlmCisgJ2VuYWJsZV9vcGVuc3NsPXllcycuCisKK1RoZSBvcmlnaW5hbCBjb25maWd1cmUgc2NyaXB0IGNoZWNrcyBvcGVuc3NsIGhlYWRlciBmaWxlcyB0byBnZW5lcmF0ZQorY29uZmlnLmggZXZlbiBpZiAnZW5hYmxlX29wZW5zc2wnIGlzIG5vdCBzZXQgdG8geWVzLCB0aGlzIG1hZGUgaW5jb25zaXN0ZW50CitidWlsZGluZyBmb3IgbmV0dGxlLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEhhaXFpbmcgQmFpIDxIYWlxaW5nLkJhaUB3aW5kcml2ZXIuY29tPgorCityZWZhY3RvcmVkIGZvciAzLjQuIHBlbmRpbmcgbm90IGluIGFzIG9mIDMuNAorCitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KKworSW5kZXg6IG5ldHRsZS0zLjQvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmV0dGxlLTMuNC5vcmlnL2NvbmZpZ3VyZS5hYworKysrIG5ldHRsZS0zLjQvY29uZmlndXJlLmFjCitAQCAtMTg1LDkgKzE4NSwxMSBAQCBBQ19IRUFERVJfVElNRQorIEFDX0NIRUNLX1NJWkVPRihsb25nKQorIEFDX0NIRUNLX1NJWkVPRihzaXplX3QpCisgCistQUNfQ0hFQ0tfSEVBREVSUyhbb3BlbnNzbC9ldnAuaCBvcGVuc3NsL2VjZHNhLmhdLCwKKy1bZW5hYmxlX29wZW5zc2w9bm8KKy0gYnJlYWtdKQorK2lmIHRlc3QgIngkZW5hYmxlX29wZW5zc2wiID0gInh5ZXMiOyB0aGVuCisrICBBQ19DSEVDS19IRUFERVJTKFtvcGVuc3NsL2V2cC5oIG9wZW5zc2wvZWNkc2EuaF0sLAorKyAgW2VuYWJsZV9vcGVuc3NsPW5vCisrICAgYnJlYWtdKQorK2ZpCisgCisgIyBGb3IgdXNlIGJ5IHRoZSB0ZXN0c3VpdGUKKyBBQ19DSEVDS19IRUFERVJTKFt2YWxncmluZC9tZW1jaGVjay5oXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuMy9kbG9wZW4tdGVzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuNC9kbG9wZW4tdGVzdC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUtMy4zL2Rsb3Blbi10ZXN0LnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZS0zLjQvZGxvcGVuLXRlc3QucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvZmlsZXMvcnVuLXB0ZXN0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUtMy40L3J1bi1wdGVzdApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9maWxlcy9ydW4tcHRlc3QKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLTMuNC9ydW4tcHRlc3QKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWY1MWZiNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIkEgbG93IGxldmVsIGNyeXB0b2dyYXBoaWMgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubHlzYXRvci5saXUuc2Uvfm5pc3NlL25ldHRsZS8iCi1TRUNUSU9OID0gImxpYnMiCi0KLURFUEVORFMgKz0gImdtcCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lmx5c2F0b3IubGl1LnNlL35uaXNzZS9hcmNoaXZlLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9BZGQtdGFyZ2V0LXRvLW9ubHktYnVpbGQtdGVzdHMtbm90LXJ1bi10aGVtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibmV0dGxlLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdAotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLW9wZW5zc2wiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgICAgIGlmIFsgISAtZSAke1N9L2FjaW5jbHVkZS5tNCAtYSAtZSAke1N9L2FjbG9jYWwubTQgXTsgdGhlbgotICAgICAgICAgICAgICAgY3AgJHtTfS9hY2xvY2FsLm00ICR7U30vYWNpbmNsdWRlLm00Ci0gICAgICAgZmkKLX0KLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLSAgICAgICAgb2VfcnVubWFrZSBidWlsZHRlc3QKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0c3VpdGUvCi0gICAgICAgIGluc3RhbGwgJHtTfS90ZXN0c3VpdGUvZ29sZC1idWcudHh0ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzdWl0ZS8KLSAgICAgICAgaW5zdGFsbCAke1N9L3Rlc3RzdWl0ZS8qLXRlc3QgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHN1aXRlLwotICAgICAgICAjIHRvb2xzIGNhbiBiZSBmb3VuZCBpbiBQQVRILCBub3QgaW4gLi4vdG9vbHMvCi0gICAgICAgIHNlZCAtaSAtZSAnc3wuLi90b29scy98fCcgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHN1aXRlLyotdGVzdAotICAgICAgICBpbnN0YWxsICR7Qn0vdGVzdHN1aXRlLyotdGVzdCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0c3VpdGUvCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlXzMuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlXzMuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzk1MTY3OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZV8zLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1yZXF1aXJlIG5ldHRsZS5pbmMKLQotTElDRU5TRSA9ICJMR1BMdjMrIHwgR1BMdjIrIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxFU1NFUnYzO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NlcnBlbnQtZGVjcnlwdC5jO2JlZ2lubGluZT0xNDtlbmRsaW5lPTM2O21kNT1jYTBkMjIwYmM0MTNlMTg0MmVjYzUwNzY5MGNlNDE2ZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zZXJwZW50LXNldC1rZXkuYztiZWdpbmxpbmU9MTQ7ZW5kbGluZT0zNjttZDU9Y2EwZDIyMGJjNDEzZTE4NDJlY2M1MDc2OTBjZTQxNmUiCi0KLVNSQ19VUkkgKz0gIlwKLSAgICAgICAgICAgIGZpbGU6Ly9jaGVjay1oZWFkZXItZmlsZXMtb2Ytb3BlbnNzbC1vbmx5LWlmLWVuYWJsZV8ucGF0Y2ggXAotICAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAotICAgICAgICAgICAgZmlsZTovL2Rsb3Blbi10ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjEwZjk2OWY3OGE0NjM3MDRhZTczNTI5OTc4MTQ4ZGJlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ2OTQyNjI3ZDVkMGNhMTE3MjBmZWMxOGQ4MWZjMzhmN2VmODM3ZWE0MTk3YzFmNjMwZTcxY2UwZDQ3MGIxMWUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZV8zLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZV8zLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EzY2M2NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlXzMuNC5iYgpAQCAtMCwwICsxLDQ3IEBACitTVU1NQVJZID0gIkEgbG93IGxldmVsIGNyeXB0b2dyYXBoaWMgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubHlzYXRvci5saXUuc2Uvfm5pc3NlL25ldHRsZS8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2MysgfCBHUEx2MisiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTEVTU0VSdjM7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkd2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc2VycGVudC1kZWNyeXB0LmM7YmVnaW5saW5lPTE0O2VuZGxpbmU9MzY7bWQ1PWNhMGQyMjBiYzQxM2UxODQyZWNjNTA3NjkwY2U0MTZlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NlcnBlbnQtc2V0LWtleS5jO2JlZ2lubGluZT0xNDtlbmRsaW5lPTM2O21kNT1jYTBkMjIwYmM0MTNlMTg0MmVjYzUwNzY5MGNlNDE2ZSIKKworREVQRU5EUyArPSAiZ21wIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9BZGQtdGFyZ2V0LXRvLW9ubHktYnVpbGQtdGVzdHMtbm90LXJ1bi10aGVtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9jaGVjay1oZWFkZXItZmlsZXMtb2Ytb3BlbnNzbC1vbmx5LWlmLWVuYWJsZV8ucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCisgICAgICAgICAgICBmaWxlOi8vZGxvcGVuLXRlc3QucGF0Y2ggXAorICAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZGMwZjEzMDI4MjY0OTkyZjU4ZTY3YjRlODkxNWY1M2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWU3YTQyZGYwMjY1NTBiODVkYWNhODM4OWI2YTYwYmE2MzEzYjA1NjdmMzc0MzkyZTU0OTE4NTg4YTQxMWU5NCIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibmV0dGxlLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitpbmhlcml0IGF1dG90b29scyBwdGVzdAorCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YWNsb2NhbCIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1vcGVuc3NsIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgICAgICBvZV9ydW5tYWtlIGJ1aWxkdGVzdAorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzdWl0ZS8KKyAgICAgICAgaW5zdGFsbCAke1N9L3Rlc3RzdWl0ZS9nb2xkLWJ1Zy50eHQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHN1aXRlLworICAgICAgICBpbnN0YWxsICR7U30vdGVzdHN1aXRlLyotdGVzdCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0c3VpdGUvCisgICAgICAgICMgdG9vbHMgY2FuIGJlIGZvdW5kIGluIFBBVEgsIG5vdCBpbiAuLi90b29scy8KKyAgICAgICAgc2VkIC1pIC1lICdzfC4uL3Rvb2xzL3x8JyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0c3VpdGUvKi10ZXN0CisgICAgICAgIGluc3RhbGwgJHtCfS90ZXN0c3VpdGUvKi10ZXN0ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzdWl0ZS8KK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25wdGgvbnB0aF8xLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnB0aC9ucHRoXzEuNS5iYgppbmRleCA1NGRlNzBjLi5lN2RiNmFlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnB0aC9ucHRoXzEuNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnB0aC9ucHRoXzEuNS5iYgpAQCAtMTksMyArMTksNSBAQAogCiBGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGlibnB0aC5zby4qIgogRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vbnB0aC1jb25maWciCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci8wMDAxLWluY2x1ZGUtc3RkaW50LmgtZm9yLVNTSVpFX01BWC1hbmQtU0laRV9NQVgtZGVmaW5pdGkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItU1NJWkVfTUFYLWFuZC1TSVpFX01BWC1kZWZpbml0aS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNiZGQ4ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItU1NJWkVfTUFYLWFuZC1TSVpFX01BWC1kZWZpbml0aS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gZjc1NTFlYzU4ZTJmMGE4OTIyOTVlMGMyYTY1MDA4MzEwMWUxMmM1NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDIwIE1heSAyMDE3IDEzOjI0OjI2IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgc3RkaW50LmggZm9yIFNTSVpFX01BWCBhbmQgU0laRV9NQVggZGVmaW5pdGlvbnMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBwci90ZXN0cy9wcmZ6LmMgfCA0ICsrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9wci90ZXN0cy9wcmZ6LmMgYi9wci90ZXN0cy9wcmZ6LmMKLWluZGV4IDBjNWE0MzIuLjljMTc1OTAgMTAwNjQ0Ci0tLS0gYS9wci90ZXN0cy9wcmZ6LmMKLSsrKyBiL3ByL3Rlc3RzL3ByZnouYwotQEAgLTEwLDcgKzEwLDkgQEAKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPGxpbWl0cy5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0KLSsjaWZkZWYgWFBfVU5JWAotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSsjZW5kaWYKLSBpbnQKLSBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSB7Ci0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL2ZpeC1idWlsZC1vbi14ODZfNjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL2ZpeC1idWlsZC1vbi14ODZfNjQucGF0Y2gKaW5kZXggYzJiNzI1OC4uZjEyYWNjOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9maXgtYnVpbGQtb24teDg2XzY0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvZml4LWJ1aWxkLW9uLXg4Nl82NC5wYXRjaApAQCAtNDksNCArNDksNCBAQAogLSAgICAgICAgICAgIFBSX01EX0FTRklMRVM9b3NfTGludXhfcHBjLnMKICAgICAgICAgIGZpCiAgICAgICAgICA7OwotICAgICBtNjhrKQorICAgICBlc2FjICAgIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9yZW1vdmUtcnBhdGgtZnJvbS10ZXN0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvcmVtb3ZlLXJwYXRoLWZyb20tdGVzdHMucGF0Y2gKaW5kZXggYTdlNzg1My4uZWNjNmQzMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9yZW1vdmUtcnBhdGgtZnJvbS10ZXN0cy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL3JlbW92ZS1ycGF0aC1mcm9tLXRlc3RzLnBhdGNoCkBAIC0xMSwxMiArMTEsMTIgQEAKIFNpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCi1JbmRleDogbnNwci00LjguOS9tb3ppbGxhL25zcHJwdWIvcHIvdGVzdHMvTWFrZWZpbGUuaW4KK0luZGV4OiBuc3ByL3ByL3Rlc3RzL01ha2VmaWxlLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbnNwcnB1Yi5vcmlnL3ByL3Rlc3RzL01ha2VmaWxlLmluCTIwMTItMDItMTEgMDA6MDE6MTAuNDc2MjIwNTA1ICswMjAwCi0rKysgbnNwcnB1Yi9wci90ZXN0cy9NYWtlZmlsZS5pbgkyMDEyLTAyLTEwIDIzOjU3OjQwLjAwMDAwMDAwMCArMDIwMAotQEAgLTM3OSw3ICszNzksNyBAQAotIGVuZGlmCistLS0gbnNwci5vcmlnL3ByL3Rlc3RzL01ha2VmaWxlLmluCisrKysgbnNwci9wci90ZXN0cy9NYWtlZmlsZS5pbgorQEAgLTMxNSw3ICszMTUsNyBAQCBpZmVxICgkKE9TX0FSQ0gpLCBTdW5PUykKKyBlbmRpZiAjIFN1bk9TCiAgCiAgaWZlcSAoLCQoZmlsdGVyLW91dCBMaW51eCBHTlUgR05VXyUsJChPU19BUkNIKSkpCiAtICAgIExET1BUUyArPSAtWGxpbmtlciAtcnBhdGggJChBQlNPTFVURV9MSUJfRElSKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjE2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjE2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGVmOTk0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHJfNC4xNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5MSArMCwwIEBACi1TVU1NQVJZID0gIk5ldHNjYXBlIFBvcnRhYmxlIFJ1bnRpbWUgTGlicmFyeSIKLUhPTUVQQUdFID0gICJodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL25zcHIvIgotTElDRU5TRSA9ICJHUEwtMi4wIHwgTVBMLTIuMCB8IExHUEwtMi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vY29uZmlndXJlLmluO2JlZ2lubGluZT0zO2VuZGxpbmU9NjttZDU9OTBjMmZkZWUzOGU0NWQ2MzAyYWJjZmU0NzVjOGI1YzUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUuaW47YmVnaW5saW5lPTQ7ZW5kbGluZT0zODttZDU9YmVkYTFkYmI5OGE1MTVmNTU3ZDNlNThlZjA2YmNhOTkiCi1TRUNUSU9OID0gImxpYnMvbmV0d29yayIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLm1vemlsbGEub3JnL3B1Yi9uc3ByL3JlbGVhc2VzL3Yke1BWfS9zcmMvbnNwci0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXJwYXRoLWZyb20tdGVzdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWJ1aWxkLW9uLXg4Nl82NC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtc3JjZGlyLWZyb20tY29uZmlndXJlLWluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLW5pb3MyLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci1TU0laRV9NQVgtYW5kLVNJWkVfTUFYLWRlZmluaXRpLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbWQtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uc3ByLnBjLmluIFwKLSIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgQ0ZMQUdTPScke0NGTEFHU30gLURfUFJfUE9MTF9BVkFJTEFCTEUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLURfUFJfSEFWRV9PRkY2NF9UIC1EX1BSX0lORVQ2IC1EX1BSX0hBVkVfSU5FVF9OVE9QIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1EX1BSX0hBVkVfR0VUSE9TVEJZTkFNRTIgLURfUFJfSEFWRV9HRVRBRERSSU5GTyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtRF9QUl9JTkVUNl9QUk9CRSAtRE5PX0RMT1BFTl9OVUxMJyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9mdHAubW96aWxsYS5vcmcvcHViL25zcHIvcmVsZWFzZXMvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAidig/UDxwdmVyPlxkKyhcLlxkKykrKS8iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0MmZkODk2M2E0YjM5NGY2MmQ0M2JhNjA0ZjAzZmFiNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5YjMxMDJkOTc2NjU1MDRhZWVlNzMzNjNjMTFhMjFjMDYyYWQ2N2EyNTIyMjQyMzY4YjdmMDE5Zjk2YTUzY2QxIgotCi1DVkVfUFJPRFVDVCA9ICJuZXRzY2FwZV9wb3J0YWJsZV9ydW50aW1lIgotCi1TID0gIiR7V09SS0RJUn0vbnNwci0ke1BWfS9uc3ByIgotCi1SREVQRU5EU18ke1BOfS1kZXYgKz0gInBlcmwiCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotVEVTVFMgPSAiIFwKLSAgICBhY2NlcHQgXAotICAgIGFjY2VwdHJlYWQgXAotICAgIGFjY2VwdHJlYWRlbXUgXAotICAgIGFmZmluaXR5IFwKLSAgICBhbGFybSBcCi0gICAgYW5vbmZtIFwKLSAgICBhdG9taWMgXAotICAgIGF0dGFjaCBcCi0gICAgYmlnZmlsZSBcCi0gICAgY2xlYW51cCBcCi0gICAgY2x0c3J2ICBcCi0gICAgY29uY3VyIFwKLSAgICBjdmFyIFwKLSAgICBjdmFyMiBcCi0gICAgZGxsdGVzdCBcCi0gICAgZHRvYSBcCi0gICAgZXJyY29kZXMgXAotICAgIGV4aXQgXAotICAgIGZkY2FjaCBcCi0gICAgZmlsZWlvIFwKLSAgICBmb3JlaWduIFwKLSAgICBmb3JtYXR0bSBcCi0gICAgZnN5bmMgXAotICAgIGdldGhvc3QgXAotICAgIGdldHByb3RvIFwKLSAgICBpMmwgXAotICAgIGluaXRjbGsgXAotICAgIGlucnZhbCBcCi0gICAgaW5zdHJ1bXQgXAotICAgIGludHJpbyBcCi0gICAgaW50cnVwdCBcCi0gICAgaW9fdGltZW91dCBcCi0gICAgaW9jb250aHIgXAotICAgIGpvaW4gXAotICAgIGpvaW5rayBcCi0gICAgam9pbmt1IFwKLSAgICBqb2ludWsgXAotICAgIGpvaW51dSBcCi0gICAgbGF5ZXIgXAotICAgIGxhenlpbml0IFwKLSAgICBsaWJmaWxlbmFtZSBcCi0gICAgbGx0ZXN0IFwKLSAgICBsb2NrIFwKLSAgICBsb2NrZmlsZSBcCi0gICAgbG9nZmlsZSBcCi0gICAgbG9nZ2VyIFwKLSAgICBtYW55X2N2IFwKLSAgICBtdWx0aXdhaXQgXAotICAgIG5hbWVzaG0xIFwKLSAgICBuYmxheWVyIFwKLSAgICBub25ibG9jayBcCi0gICAgbnRpb3RvIFwKLSAgICBudG9oIFwKLSAgICBvcF8ybG9uZyBcCi0gICAgb3BfZXhjbCBcCi0gICAgb3BfZmlsbmYgXAotICAgIG9wX2ZpbG9rIFwKLSAgICBvcF9ub2ZpbCBcCi0gICAgcGFyZW50IFwKLSAgICBwYXJzZXRtIFwKLSAgICBwZWVrIFwKLSAgICBwZXJmIFwKLSAgICBwaXBlcGluZyBcCi0gICAgcGlwZXBpbmcyIFwKLSAgICBwaXBlc2VsZiBcCi0gICAgcG9sbF9ubSBcCi0gICAgcG9sbF90byBcCi0gICAgcG9sbGFibGUgXAotICAgIHByZnRlc3QgXAotICAgIHByaW1ibG9rIFwKLSAgICBwcm92aWRlciBcCi0gICAgcHJwb2xsbWwgXAotICAgIHJhbmZpbGUgXAotICAgIHJhbmRzZWVkIFwKLSAgICByZWluaXQgXAotICAgIHJ3bG9ja3Rlc3QgXAotICAgIHNlbF9zcGQgXAotICAgIHNlbGN0X2VyIFwKLSAgICBzZWxjdF9ubSBcCi0gICAgc2VsY3RfdG8gXAotICAgIHNlbGludHIgXAotICAgIHNlbWEgXAotICAgIHNlbWFlcnIgXAotICAgIHNlbWFwaW5nIFwKLSAgICBzZW5kemxmIFwKLSAgICBzZXJ2ZXJfdGVzdCBcCi0gICAgc2VydnJfa2sgXAotICAgIHNlcnZyX3VrIFwKLSAgICBzZXJ2cl9rdSBcCi0gICAgc2VydnJfdXUgXAotICAgIHNob3J0X3RocmVhZCBcCi0gICAgc2lncGlwZSBcCi0gICAgc29ja2V0IFwKLSAgICBzb2Nrb3B0IFwKLSAgICBzb2NrcGluZyBcCi0gICAgc3ByaW50ZiBcCi0gICAgc3RhY2sgXAotICAgIHN0ZGlvIFwKLSAgICBzdHIyYWRkciBcCi0gICAgc3Ryb2QgXAotICAgIHN3aXRjaCBcCi0gICAgc3lzdGVtIFwKLSAgICB0ZXN0Yml0IFwKLSAgICB0ZXN0ZmlsZSBcCi0gICAgdGhyZWFkcyBcCi0gICAgdGltZW1hYyBcCi0gICAgdGltZXRlc3QgXAotICAgIHRwZCBcCi0gICAgdWRwc3J2IFwKLSAgICB2ZXJjaGVjayBcCi0gICAgdmVyc2lvbiBcCi0gICAgd3JpdGV2IFwKLSAgICB4bm90aWZ5IFwKLSAgICB6ZXJvbGVuIgotCi1pbmhlcml0IGF1dG90b29scwotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLQlvZV9ydW5tYWtlIENST1NTX0NPTVBJTEU9MSBDRkxBR1M9Ii1EWFBfVU5JWCAke0JVSUxEX0NGTEFHU30iIExERkxBR1M9IiIgQ0M9IiR7QlVJTERfQ0N9IiAtQyBjb25maWcgZXhwb3J0Ci19Ci0KLWRvX2NvbXBpbGVfYXBwZW5kKCkgewotCW9lX3J1bm1ha2UgLUMgcHIvdGVzdHMKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtRCAke1dPUktESVJ9L25zcHIucGMuaW4gJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNwci5wYwotICAgIHNlZCAtaSAgXAotICAgIC1lICdzOk5TUFJWRVJTSU9OOiR7UFZ9OmcnIFwKLSAgICAtZSAnczpPRVBSRUZJWDoke3ByZWZpeH06ZycgXAotICAgIC1lICdzOk9FTElCRElSOiR7bGliZGlyfTpnJyBcCi0gICAgLWUgJ3M6T0VJTkNESVI6JHtpbmNsdWRlZGlyfTpnJyBcCi0gICAgLWUgJ3M6T0VFWEVDUFJFRklYOiR7ZXhlY19wcmVmaXh9OmcnIFwKLSAgICAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3ByLnBjCi0KLSAgICBta2RpciAtcCAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9wci90ZXN0cy9ydW50ZXN0cy5wbCAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9wci90ZXN0cy9ydW50ZXN0cy5zaCAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKLSAgICBjZCAke0J9L3ByL3Rlc3RzCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7VEVTVFN9ICR7RH0ke2xpYmRpcn0vbnNwci90ZXN0cwotCi0gICAgIyBkZWxldGUgY29tcGlsZS1ldC5wbCBhbmQgcGVyci5wcm9wZXJ0aWVzIGZyb20gJHtiaW5kaXJ9IGJlY2F1c2UgdGhlc2UgYXJlCi0gICAgIyBvbmx5IHVzZWQgdG8gZ2VuZXJhdGUgcHJlcnIuYyBhbmQgcHJlcnIuaCBmaWxlcyBmcm9tIHByZXJyLmV0IGF0IGNvbXBpbGUKLSAgICAjIHRpbWUKLSAgICBybSAke0R9JHtiaW5kaXJ9L2NvbXBpbGUtZXQucGwgJHtEfSR7YmluZGlyfS9wcmVyci5wcm9wZXJ0aWVzCi19Ci0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWIqLnNvIgotRklMRVNfJHtQTn0tZGV2ID0gIiR7YmluZGlyfS8qICR7bGliZGlyfS9uc3ByL3Rlc3RzLyogJHtsaWJkaXJ9L3BrZ2NvbmZpZyBcCi0gICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS8qICR7ZGF0YWRpcn0vYWNsb2NhbC8qICIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjE5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjE5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlMmM4NzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByXzQuMTkuYmIKQEAgLTAsMCArMSwxOTAgQEAKK1NVTU1BUlkgPSAiTmV0c2NhcGUgUG9ydGFibGUgUnVudGltZSBMaWJyYXJ5IgorSE9NRVBBR0UgPSAgImh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvbnNwci8iCitMSUNFTlNFID0gIkdQTC0yLjAgfCBNUEwtMi4wIHwgTEdQTC0yLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9jb25maWd1cmUuaW47YmVnaW5saW5lPTM7ZW5kbGluZT02O21kNT05MGMyZmRlZTM4ZTQ1ZDYzMDJhYmNmZTQ3NWM4YjVjNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS5pbjtiZWdpbmxpbmU9NDtlbmRsaW5lPTM4O21kNT1iZWRhMWRiYjk4YTUxNWY1NTdkM2U1OGVmMDZiY2E5OSIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorCitTUkNfVVJJID0gImh0dHA6Ly9mdHAubW96aWxsYS5vcmcvcHViL25zcHIvcmVsZWFzZXMvdiR7UFZ9L3NyYy9uc3ByLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtcnBhdGgtZnJvbS10ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtYnVpbGQtb24teDg2XzY0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlbW92ZS1zcmNkaXItZnJvbS1jb25maWd1cmUtaW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGQtbmlvczItc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1kLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbnNwci5wYy5pbiBcCisiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTX2FwcGVuZF9saWJjLW11c2wgPSAiIENGTEFHUz0nJHtDRkxBR1N9IC1EX1BSX1BPTExfQVZBSUxBQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1EX1BSX0hBVkVfT0ZGNjRfVCAtRF9QUl9JTkVUNiAtRF9QUl9IQVZFX0lORVRfTlRPUCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtRF9QUl9IQVZFX0dFVEhPU1RCWU5BTUUyIC1EX1BSX0hBVkVfR0VUQUREUklORk8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLURfUFJfSU5FVDZfUFJPQkUgLUROT19ETE9QRU5fTlVMTCciCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZnRwLm1vemlsbGEub3JnL3B1Yi9uc3ByL3JlbGVhc2VzLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInYoP1A8cHZlcj5cZCsoXC5cZCspKykvIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTFkMjcyODJhZDYyODZiNjlkNmI5ZmQwNzIwMWQzZGQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmVkOTU5MTdmYTIyNzc5MTBkMWQxY2YzNjAzMDYwN2RjY2MwYmE1MjJiYmEwOGUyYWYxM2MxMTNkY2Q4ZjcyOSIKKworQ1ZFX1BST0RVQ1QgPSAibmV0c2NhcGVfcG9ydGFibGVfcnVudGltZSIKKworUyA9ICIke1dPUktESVJ9L25zcHItJHtQVn0vbnNwciIKKworUkRFUEVORFNfJHtQTn0tZGV2ICs9ICJwZXJsIgorVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCisKK1RFU1RTID0gIiBcCisgICAgYWNjZXB0IFwKKyAgICBhY2NlcHRyZWFkIFwKKyAgICBhY2NlcHRyZWFkZW11IFwKKyAgICBhZmZpbml0eSBcCisgICAgYWxhcm0gXAorICAgIGFub25mbSBcCisgICAgYXRvbWljIFwKKyAgICBhdHRhY2ggXAorICAgIGJpZ2ZpbGUgXAorICAgIGNsZWFudXAgXAorICAgIGNsdHNydiAgXAorICAgIGNvbmN1ciBcCisgICAgY3ZhciBcCisgICAgY3ZhcjIgXAorICAgIGRsbHRlc3QgXAorICAgIGR0b2EgXAorICAgIGVycmNvZGVzIFwKKyAgICBleGl0IFwKKyAgICBmZGNhY2ggXAorICAgIGZpbGVpbyBcCisgICAgZm9yZWlnbiBcCisgICAgZm9ybWF0dG0gXAorICAgIGZzeW5jIFwKKyAgICBnZXRob3N0IFwKKyAgICBnZXRwcm90byBcCisgICAgaTJsIFwKKyAgICBpbml0Y2xrIFwKKyAgICBpbnJ2YWwgXAorICAgIGluc3RydW10IFwKKyAgICBpbnRyaW8gXAorICAgIGludHJ1cHQgXAorICAgIGlvX3RpbWVvdXQgXAorICAgIGlvY29udGhyIFwKKyAgICBqb2luIFwKKyAgICBqb2lua2sgXAorICAgIGpvaW5rdSBcCisgICAgam9pbnVrIFwKKyAgICBqb2ludXUgXAorICAgIGxheWVyIFwKKyAgICBsYXp5aW5pdCBcCisgICAgbGliZmlsZW5hbWUgXAorICAgIGxsdGVzdCBcCisgICAgbG9jayBcCisgICAgbG9ja2ZpbGUgXAorICAgIGxvZ2ZpbGUgXAorICAgIGxvZ2dlciBcCisgICAgbWFueV9jdiBcCisgICAgbXVsdGl3YWl0IFwKKyAgICBuYW1lc2htMSBcCisgICAgbmJsYXllciBcCisgICAgbm9uYmxvY2sgXAorICAgIG50aW90byBcCisgICAgbnRvaCBcCisgICAgb3BfMmxvbmcgXAorICAgIG9wX2V4Y2wgXAorICAgIG9wX2ZpbG5mIFwKKyAgICBvcF9maWxvayBcCisgICAgb3Bfbm9maWwgXAorICAgIHBhcmVudCBcCisgICAgcGFyc2V0bSBcCisgICAgcGVlayBcCisgICAgcGVyZiBcCisgICAgcGlwZXBpbmcgXAorICAgIHBpcGVwaW5nMiBcCisgICAgcGlwZXNlbGYgXAorICAgIHBvbGxfbm0gXAorICAgIHBvbGxfdG8gXAorICAgIHBvbGxhYmxlIFwKKyAgICBwcmZ0ZXN0IFwKKyAgICBwcmltYmxvayBcCisgICAgcHJvdmlkZXIgXAorICAgIHBycG9sbG1sIFwKKyAgICByYW5maWxlIFwKKyAgICByYW5kc2VlZCBcCisgICAgcmVpbml0IFwKKyAgICByd2xvY2t0ZXN0IFwKKyAgICBzZWxfc3BkIFwKKyAgICBzZWxjdF9lciBcCisgICAgc2VsY3Rfbm0gXAorICAgIHNlbGN0X3RvIFwKKyAgICBzZWxpbnRyIFwKKyAgICBzZW1hIFwKKyAgICBzZW1hZXJyIFwKKyAgICBzZW1hcGluZyBcCisgICAgc2VuZHpsZiBcCisgICAgc2VydmVyX3Rlc3QgXAorICAgIHNlcnZyX2trIFwKKyAgICBzZXJ2cl91ayBcCisgICAgc2VydnJfa3UgXAorICAgIHNlcnZyX3V1IFwKKyAgICBzaG9ydF90aHJlYWQgXAorICAgIHNpZ3BpcGUgXAorICAgIHNvY2tldCBcCisgICAgc29ja29wdCBcCisgICAgc29ja3BpbmcgXAorICAgIHNwcmludGYgXAorICAgIHN0YWNrIFwKKyAgICBzdGRpbyBcCisgICAgc3RyMmFkZHIgXAorICAgIHN0cm9kIFwKKyAgICBzd2l0Y2ggXAorICAgIHN5c3RlbSBcCisgICAgdGVzdGJpdCBcCisgICAgdGVzdGZpbGUgXAorICAgIHRocmVhZHMgXAorICAgIHRpbWVtYWMgXAorICAgIHRpbWV0ZXN0IFwKKyAgICB0cGQgXAorICAgIHVkcHNydiBcCisgICAgdmVyY2hlY2sgXAorICAgIHZlcnNpb24gXAorICAgIHdyaXRldiBcCisgICAgeG5vdGlmeSBcCisgICAgemVyb2xlbiIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJb2VfcnVubWFrZSBDUk9TU19DT01QSUxFPTEgQ0ZMQUdTPSItRFhQX1VOSVggJHtCVUlMRF9DRkxBR1N9IiBMREZMQUdTPSIiIENDPSIke0JVSUxEX0NDfSIgLUMgY29uZmlnIGV4cG9ydAorfQorCitkb19jb21waWxlX2FwcGVuZCgpIHsKKwlvZV9ydW5tYWtlIC1DIHByL3Rlc3RzCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLUQgJHtXT1JLRElSfS9uc3ByLnBjLmluICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcHIucGMKKyAgICBzZWQgLWkgIFwKKyAgICAtZSAnczpOU1BSVkVSU0lPTjoke1BWfTpnJyBcCisgICAgLWUgJ3M6T0VQUkVGSVg6JHtwcmVmaXh9OmcnIFwKKyAgICAtZSAnczpPRUxJQkRJUjoke2xpYmRpcn06ZycgXAorICAgIC1lICdzOk9FSU5DRElSOiR7aW5jbHVkZWRpcn06ZycgXAorICAgIC1lICdzOk9FRVhFQ1BSRUZJWDoke2V4ZWNfcHJlZml4fTpnJyBcCisgICAgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNwci5wYworCisgICAgbWtkaXIgLXAgJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vcHIvdGVzdHMvcnVudGVzdHMucGwgJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vcHIvdGVzdHMvcnVudGVzdHMuc2ggJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCisgICAgY2QgJHtCfS9wci90ZXN0cworICAgIGluc3RhbGwgLW0gMDc1NSAke1RFU1RTfSAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKKworICAgICMgZGVsZXRlIGNvbXBpbGUtZXQucGwgYW5kIHBlcnIucHJvcGVydGllcyBmcm9tICR7YmluZGlyfSBiZWNhdXNlIHRoZXNlIGFyZQorICAgICMgb25seSB1c2VkIHRvIGdlbmVyYXRlIHByZXJyLmMgYW5kIHByZXJyLmggZmlsZXMgZnJvbSBwcmVyci5ldCBhdCBjb21waWxlCisgICAgIyB0aW1lCisgICAgcm0gJHtEfSR7YmluZGlyfS9jb21waWxlLWV0LnBsICR7RH0ke2JpbmRpcn0vcHJlcnIucHJvcGVydGllcworfQorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliKi5zbyIKK0ZJTEVTXyR7UE59LWRldiA9ICIke2JpbmRpcn0vKiAke2xpYmRpcn0vbnNwci90ZXN0cy8qICR7bGliZGlyfS9wa2djb25maWcgXAorICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vKiAke2RhdGFkaXJ9L2FjbG9jYWwvKiAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzLzAwMDEtQnVnLTE0Mzc3MzQtVXNlLXNucHJpbnRmLWluLXNpZ24uYy1yLXR0YXViZXJ0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvMDAwMS1CdWctMTQzNzczNC1Vc2Utc25wcmludGYtaW4tc2lnbi5jLXItdHRhdWJlcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMxMGYzMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzLzAwMDEtQnVnLTE0Mzc3MzQtVXNlLXNucHJpbnRmLWluLXNpZ24uYy1yLXR0YXViZXJ0LnBhdGNoCkBAIC0wLDAgKzEsMTE5IEBACitGcm9tIDZmN2Q3YmU5OTk3YmE2NzI3YTVhZDdjMzgwMGRmOTA1MTE2MGRjMTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJ0aW4gVGhvbXNvbiA8bWFydGluLnRob21zb25AZ21haWwuY29tPgorRGF0ZTogVHVlLCAxMyBGZWIgMjAxOCAxMjozMDo1OCArMTEwMAorU3ViamVjdDogW1BBVENIXSBCdWcgMTQzNzczNCAtIFVzZSBzbnByaW50ZiBpbiBzaWduLmMsIHI9dHRhdWJlcnQKKworLS1IRy0tCitleHRyYSA6IHJlYmFzZV9zb3VyY2UgOiA5NzkyMWVjZTcxZmY4NmIxOGQzMmI4OTE1OTE2MDgyOTBlZWQ0ZDgzCistLS0KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbnNzLWRldi9uc3MvY29tbWl0LzBhOTA3OGIzY2RlOTdhZGQ3YzgyNWM5ZDEzNDY3YTg0MDFhZDBjODgjZGlmZi1iNDI1MTIxNTFkYzEzNzUzNzA5MWY4MjNmNzcwMTgwNC5wYXRjaF0KKworIG5zcy9jbWQvc2lnbnRvb2wvc2lnbi5jIHwgNTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL25zcy9jbWQvc2lnbnRvb2wvc2lnbi5jIGIvbnNzL2NtZC9zaWdudG9vbC9zaWduLmMKK2luZGV4IDZlNzc2MDY5YS4uNmY4ZTQzOTQ2IDEwMDY0NAorLS0tIGEvbnNzL2NtZC9zaWdudG9vbC9zaWduLmMKKysrKyBiL25zcy9jbWQvc2lnbnRvb2wvc2lnbi5jCitAQCAtNDMsNiArNDMsNyBAQCBTaWduQXJjaGl2ZShjaGFyICp0cmVlLCBjaGFyICprZXlOYW1lLCBjaGFyICp6aXBfZmlsZSwgaW50IGphdmFzY3JpcHQsCisgICAgIGludCBzdGF0dXM7CisgICAgIGNoYXIgdGVtcGZuW0ZOU0laRV0sIGZ1bGxmbltGTlNJWkVdOworICAgICBpbnQga2V5VHlwZSA9IHJzYUtleTsKKysgICAgaW50IGNvdW50OworIAorICAgICBtZXRhZmlsZSA9IG1ldGFfZmlsZTsKKyAgICAgb3B0aW1pemUgPSBfb3B0aW1pemU7CitAQCAtODEsOSArODIsMTggQEAgU2lnbkFyY2hpdmUoY2hhciAqdHJlZSwgY2hhciAqa2V5TmFtZSwgY2hhciAqemlwX2ZpbGUsIGludCBqYXZhc2NyaXB0LAorICAgICAgICAgfQorIAorICAgICAgICAgLyogcnNhL2RzYSB0byB6aXAgKi8KKy0gICAgICAgIHNwcmludGYodGVtcGZuLCAiTUVUQS1JTkYvJXMuJXMiLCBiYXNlLCAoa2V5VHlwZSA9PSBkc2FLZXkgPyAiZHNhIgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJyc2EiKSk7CistICAgICAgICBzcHJpbnRmKGZ1bGxmbiwgIiVzLyVzIiwgdHJlZSwgdGVtcGZuKTsKKysgICAgICAgIGNvdW50ID0gc25wcmludGYodGVtcGZuLCBzaXplb2YodGVtcGZuKSwgIk1FVEEtSU5GLyVzLiVzIiwgYmFzZSwgKGtleVR5cGUgPT0gZHNhS2V5ID8gImRzYSIgOiAicnNhIikpOworKyAgICAgICAgaWYgKGNvdW50ID49IHNpemVvZih0ZW1wZm4pKSB7CisrICAgICAgICAgICAgUFJfZnByaW50ZihlcnJvckZELCAidW5hYmxlIHRvIHdyaXRlIGtleSBtZXRhZGF0YVxuIik7CisrICAgICAgICAgICAgZXJyb3JDb3VudCsrOworKyAgICAgICAgICAgIGV4aXQoRVJSWCk7CisrICAgICAgICB9CisrICAgICAgICBjb3VudCA9IHNucHJpbnRmKGZ1bGxmbiwgc2l6ZW9mKGZ1bGxmbiksICIlcy8lcyIsIHRyZWUsIHRlbXBmbik7CisrICAgICAgICBpZiAoY291bnQgPj0gc2l6ZW9mKGZ1bGxmbikpIHsKKysgICAgICAgICAgICBQUl9mcHJpbnRmKGVycm9yRkQsICJ1bmFibGUgdG8gd3JpdGUga2V5IG1ldGFkYXRhXG4iKTsKKysgICAgICAgICAgICBlcnJvckNvdW50Kys7CisrICAgICAgICAgICAgZXhpdChFUlJYKTsKKysgICAgICAgIH0KKyAgICAgICAgIEp6aXBBZGQoZnVsbGZuLCB0ZW1wZm4sIHppcGZpbGUsIGNvbXByZXNzaW9uX2xldmVsKTsKKyAKKyAgICAgICAgIC8qIExvb3AgdGhyb3VnaCBhbGwgZmlsZXMgJiBzdWJkaXJlY3RvcmllcywgYWRkIHRvIGFyY2hpdmUgKi8KK0BAIC05MywyMCArMTAzLDQ0IEBAIFNpZ25BcmNoaXZlKGNoYXIgKnRyZWUsIGNoYXIgKmtleU5hbWUsIGNoYXIgKnppcF9maWxlLCBpbnQgamF2YXNjcmlwdCwKKyAgICAgfQorICAgICAvKiBtZiB0byB6aXAgKi8KKyAgICAgc3RyY3B5KHRlbXBmbiwgIk1FVEEtSU5GL21hbmlmZXN0Lm1mIik7CistICAgIHNwcmludGYoZnVsbGZuLCAiJXMvJXMiLCB0cmVlLCB0ZW1wZm4pOworKyAgICBjb3VudCA9IHNucHJpbnRmKGZ1bGxmbiwgc2l6ZW9mKGZ1bGxmbiksICIlcy8lcyIsIHRyZWUsIHRlbXBmbik7CisrICAgIGlmIChjb3VudCA+PSBzaXplb2YoZnVsbGZuKSkgeworKyAgICAgICAgUFJfZnByaW50ZihlcnJvckZELCAidW5hYmxlIHRvIHdyaXRlIG1hbmlmZXN0XG4iKTsKKysgICAgICAgIGVycm9yQ291bnQrKzsKKysgICAgICAgIGV4aXQoRVJSWCk7CisrICAgIH0KKyAgICAgSnppcEFkZChmdWxsZm4sIHRlbXBmbiwgemlwZmlsZSwgY29tcHJlc3Npb25fbGV2ZWwpOworIAorICAgICAvKiBzZiB0byB6aXAgKi8KKy0gICAgc3ByaW50Zih0ZW1wZm4sICJNRVRBLUlORi8lcy5zZiIsIGJhc2UpOworLSAgICBzcHJpbnRmKGZ1bGxmbiwgIiVzLyVzIiwgdHJlZSwgdGVtcGZuKTsKKysgICAgY291bnQgPSBzbnByaW50Zih0ZW1wZm4sIHNpemVvZih0ZW1wZm4pLCAiTUVUQS1JTkYvJXMuc2YiLCBiYXNlKTsKKysgICAgaWYgKGNvdW50ID49IHNpemVvZih0ZW1wZm4pKSB7CisrICAgICAgICBQUl9mcHJpbnRmKGVycm9yRkQsICJ1bmFibGUgdG8gd3JpdGUgc2YgbWV0YWRhdGFcbiIpOworKyAgICAgICAgZXJyb3JDb3VudCsrOworKyAgICAgICAgZXhpdChFUlJYKTsKKysgICAgfQorKyAgICBjb3VudCA9IHNucHJpbnRmKGZ1bGxmbiwgc2l6ZW9mKGZ1bGxmbiksICIlcy8lcyIsIHRyZWUsIHRlbXBmbik7CisrICAgIGlmIChjb3VudCA+PSBzaXplb2YoZnVsbGZuKSkgeworKyAgICAgICAgUFJfZnByaW50ZihlcnJvckZELCAidW5hYmxlIHRvIHdyaXRlIHNmIG1ldGFkYXRhXG4iKTsKKysgICAgICAgIGVycm9yQ291bnQrKzsKKysgICAgICAgIGV4aXQoRVJSWCk7CisrICAgIH0KKyAgICAgSnppcEFkZChmdWxsZm4sIHRlbXBmbiwgemlwZmlsZSwgY29tcHJlc3Npb25fbGV2ZWwpOworIAorICAgICAvKiBBZGQgdGhlIHJzYS9kc2EgZmlsZSB0byB0aGUgemlwIGFyY2hpdmUgbm9ybWFsbHkgKi8KKyAgICAgaWYgKCF4cGlfYXJjKSB7CisgICAgICAgICAvKiByc2EvZHNhIHRvIHppcCAqLworLSAgICAgICAgc3ByaW50Zih0ZW1wZm4sICJNRVRBLUlORi8lcy4lcyIsIGJhc2UsIChrZXlUeXBlID09IGRzYUtleSA/ICJkc2EiCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogInJzYSIpKTsKKy0gICAgICAgIHNwcmludGYoZnVsbGZuLCAiJXMvJXMiLCB0cmVlLCB0ZW1wZm4pOworKyAgICAgICAgY291bnQgPSBzbnByaW50Zih0ZW1wZm4sIHNpemVvZih0ZW1wZm4pLCAiTUVUQS1JTkYvJXMuJXMiLCBiYXNlLCAoa2V5VHlwZSA9PSBkc2FLZXkgPyAiZHNhIiA6ICJyc2EiKSk7CisrICAgICAgICBpZiAoY291bnQgPj0gc2l6ZW9mKHRlbXBmbikpIHsKKysgICAgICAgICAgICBQUl9mcHJpbnRmKGVycm9yRkQsICJ1bmFibGUgdG8gd3JpdGUga2V5IG1ldGFkYXRhXG4iKTsKKysgICAgICAgICAgICBlcnJvckNvdW50Kys7CisrICAgICAgICAgICAgZXhpdChFUlJYKTsKKysgICAgICAgIH0KKysgICAgICAgIGNvdW50ID0gc25wcmludGYoZnVsbGZuLCBzaXplb2YoZnVsbGZuKSwgIiVzLyVzIiwgdHJlZSwgdGVtcGZuKTsKKysgICAgICAgIGlmIChjb3VudCA+PSBzaXplb2YoZnVsbGZuKSkgeworKyAgICAgICAgICAgIFBSX2ZwcmludGYoZXJyb3JGRCwgInVuYWJsZSB0byB3cml0ZSBrZXkgbWV0YWRhdGFcbiIpOworKyAgICAgICAgICAgIGVycm9yQ291bnQrKzsKKysgICAgICAgICAgICBleGl0KEVSUlgpOworKyAgICAgICAgfQorICAgICAgICAgSnppcEFkZChmdWxsZm4sIHRlbXBmbiwgemlwZmlsZSwgY29tcHJlc3Npb25fbGV2ZWwpOworICAgICB9CisgCitAQCAtNDA4LDYgKzQ0Miw3IEBAIHN0YXRpYyBpbnQKKyBtYW5pZmVzdG9feHBpX2ZuKGNoYXIgKnJlbHBhdGgsIGNoYXIgKmJhc2VkaXIsIGNoYXIgKnJlbGRpciwgY2hhciAqZmlsZW5hbWUsIHZvaWQgKmFyZykKKyB7CisgICAgIGNoYXIgZnVsbG5hbWVbRk5TSVpFXTsKKysgICAgaW50IGNvdW50OworIAorICAgICBpZiAodmVyYm9zaXR5ID49IDApIHsKKyAgICAgICAgIFBSX2ZwcmludGYob3V0cHV0RkQsICItLT4gJXNcbiIsIHJlbHBhdGgpOworQEAgLTQyMSw3ICs0NTYsMTAgQEAgbWFuaWZlc3RvX3hwaV9mbihjaGFyICpyZWxwYXRoLCBjaGFyICpiYXNlZGlyLCBjaGFyICpyZWxkaXIsIGNoYXIgKmZpbGVuYW1lLCB2b2kKKyAgICAgICAgIGlmICghUExfSGFzaFRhYmxlTG9va3VwKGV4dGVuc2lvbnMsIGV4dCkpCisgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKy0gICAgc3ByaW50ZihmdWxsbmFtZSwgIiVzLyVzIiwgYmFzZWRpciwgcmVscGF0aCk7CisrICAgIGNvdW50ID0gc25wcmludGYoZnVsbG5hbWUsIHNpemVvZihmdWxsbmFtZSksICIlcy8lcyIsIGJhc2VkaXIsIHJlbHBhdGgpOworKyAgICBpZiAoY291bnQgPj0gc2l6ZW9mKGZ1bGxuYW1lKSkgeworKyAgICAgICAgcmV0dXJuIDE7CisrICAgIH0KKyAgICAgSnppcEFkZChmdWxsbmFtZSwgcmVscGF0aCwgemlwZmlsZSwgY29tcHJlc3Npb25fbGV2ZWwpOworIAorICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1idWlsZC1oYWNsLXBvbHkxMzA1LWFhcmNoNjQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9uc3MtYnVpbGQtaGFjbC1wb2x5MTMwNS1hYXJjaDY0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNzZmODkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9uc3MtYnVpbGQtaGFjbC1wb2x5MTMwNS1hYXJjaDY0LnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKKyMgSEcgY2hhbmdlc2V0IHBhdGNoCisjIFVzZXIgRGFpa2kgVWVubyA8ZHVlbm9AcmVkaGF0LmNvbT4KKyMgRGF0ZSAxNTE2NzEwNTc0IC0zNjAwCisjICAgICAgVHVlIEphbiAyMyAxMzoyOTozNCAyMDE4ICswMTAwCisjIE5vZGUgSUQgMjdmMjdjZTIxYzJjNmZmNWE0N2ZhOWUxN2M0MzhiMDAwMzY2YzljOQorIyBQYXJlbnQgIGJlMWRjYTVhYzgwNTQxZDNiODFhOGRhOWQ0Mjg1NGQ4YjFjY2VlZmIKK0J1aWxkIEhhY2xfUG9seTEzMDVfNjQubyBvbiBhYXJjaDY0IGV2ZW4gd2l0aCBtYWtlCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK2h0dHBzOi8vYnVnMTQzMjQ1NS5ibW9hdHRhY2htZW50cy5vcmcvYXR0YWNobWVudC5jZ2k/aWQ9ODk0NDY5MQorU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+CisKK0luZGV4OiBuc3MtMy4zNS9uc3MvbGliL2ZyZWVibC9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5zcy0zLjM1Lm9yaWcvbnNzL2xpYi9mcmVlYmwvTWFrZWZpbGUKKysrKyBuc3MtMy4zNS9uc3MvbGliL2ZyZWVibC9NYWtlZmlsZQorQEAgLTUzMyw3ICs1MzMsMTIgQEAgaWZuZGVmIE5TU19ESVNBQkxFX0NIQUNIQVBPTFkKKyAgICAgICAgICAgICBFWFRSQV9TUkNTICs9IGNoYWNoYTIwX3ZlYy5jCisgICAgICAgICBlbmRpZgorICAgICBlbHNlCistICAgICAgICBFWFRSQV9TUkNTICs9IHBvbHkxMzA1LmMKKysgICAgICAgIGlmZXEgKCQoQ1BVX0FSQ0gpLGFhcmNoNjQpCisrICAgICAgICAgICAgRVhUUkFfU1JDUyArPSBIYWNsX1BvbHkxMzA1XzY0LmMKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICBFWFRSQV9TUkNTICs9IHBvbHkxMzA1LmMKKysgICAgICAgIGVuZGlmCisrCisgICAgICAgICBFWFRSQV9TUkNTICs9IGNoYWNoYTIwLmMKKyAgICAgICAgIFZFUklGSUVEX1NSQ1MgKz0gSGFjbF9DaGFjaGEyMC5jCisgICAgIGVuZGlmICMgeDg2XzY0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjMxLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjMxLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiYjliZGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3NfMy4zMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUzICswLDAgQEAKLVNVTU1BUlkgPSAiTW96aWxsYSdzIFNTTCBhbmQgVExTIGltcGxlbWVudGF0aW9uIgotREVTQ1JJUFRJT04gPSAiTmV0d29yayBTZWN1cml0eSBTZXJ2aWNlcyAoTlNTKSBpcyBhIHNldCBvZiBsaWJyYXJpZXMgXAotZGVzaWduZWQgdG8gc3VwcG9ydCBjcm9zcy1wbGF0Zm9ybSBkZXZlbG9wbWVudCBvZiBcCi1zZWN1cml0eS1lbmFibGVkIGNsaWVudCBhbmQgc2VydmVyIGFwcGxpY2F0aW9ucy4gXAotQXBwbGljYXRpb25zIGJ1aWx0IHdpdGggTlNTIGNhbiBzdXBwb3J0IFNTTCB2MiBhbmQgdjMsIFwKLVRMUywgUEtDUyA1LCBQS0NTIDcsIFBLQ1MgMTEsIFBLQ1MgMTIsIFMvTUlNRSwgWC41MDkgXAotdjMgY2VydGlmaWNhdGVzLCBhbmQgb3RoZXIgc2VjdXJpdHkgc3RhbmRhcmRzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvc2VjdXJpdHkvcGtpL25zcy8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTVBMLTIuMCB8IChNUEwtMi4wICYgR1BMLTIuMCspIHwgKE1QTC0yLjAgJiBMR1BMLTIuMSspIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9uc3MvQ09QWUlORzttZDU9M2IxZTg4ZTFiOWMwYjVhNGIyODgxZDQ2Y2NlMDZhMTggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbnNzL2xpYi9mcmVlYmwvbXBpL2RvYy9MSUNFTlNFO21kNT00OTFmMTU4ZDA5ZDk0ODQ2NmFmY2U4NWQ2ZjFmZTE4ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9uc3MvbGliL2ZyZWVibC9tcGkvZG9jL0xJQ0VOU0UtTVBMO21kNT01ZDQyNWM4ZjMxNTdkYmYyMTJkYjJlYzUzZDllNTEzMiIKLQotVkVSU0lPTl9ESVIgPSAiJHtAZC5nZXRWYXIoJ0JQJykudXBwZXIoKS5yZXBsYWNlKCctJywgJ18nKS5yZXBsYWNlKCcuJywgJ18nKSArICdfUlRNJ30iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5tb3ppbGxhLm9yZy9wdWIvbW96aWxsYS5vcmcvc2VjdXJpdHkvbnNzL3JlbGVhc2VzLyR7VkVSU0lPTl9ESVJ9L3NyYy8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbnNzLnBjLmluIFwKLSAgICAgICAgICAgZmlsZTovL3NpZ25saWJzLnNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbnNzLWZpeC1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uc3Mtbm8tcnBhdGgtZm9yLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uc3MtZml4LWluY29ycmVjdC1zaGViYW5nLW9mLXBlcmwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbnNzLWZpeC1uc2luc3RhbGwtYnVpbGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1XdmFyYXJncy13aXRoLWNsYW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BxZy5jLVVMTF9hZGRlbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vRml4LWNvbXBpbGF0aW9uLWZvci1YMzIucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlYmI0NGYxMzk0MjUwZDJjZjZlYzNjMmUzZDcxZmEyMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MzM0MzkyMTRkYzAzZWU2MGU4NmQxNDE5YzE5ZTE1Njg5OThiMDc3NmRkZTk4N2Y0MWZhNzBjZWQ2Y2QwOGRjIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Nb3ppbGxhL1Byb2plY3RzL05TUy9OU1NfUmVsZWFzZXMiCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJOU1NfKD9QPHB2ZXI+LispX3JlbGVhc2Vfbm90ZXMiCi0KLWluaGVyaXQgc2l0ZWluZm8KLQotREVQRU5EUyA9ICJzcWxpdGUzIG5zcHIgemxpYiBuc3MtbmF0aXZlIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAic3FsaXRlMy1uYXRpdmUgbnNwci1uYXRpdmUgemxpYi1uYXRpdmUiCi1SREVQRU5EU18ke1BOfS1zbWltZSA9ICJwZXJsIgotCi1URCA9ICIke1N9L3RlbnRhdGl2ZS1kaXN0IgotVERTID0gIiR7U30vdGVudGF0aXZlLWRpc3Qtc3RhZ2luZyIKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2xpYmMtbXVzbCAoKSB7Ci0gICAgc2VkIC1pIC1lICcvLURIQVZFX1NZU19DREVGU19IL2QnICR7U30vbnNzL2xpYi9kYm0vY29uZmlnL2NvbmZpZy5tawotfQotCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgIGV4cG9ydCBOU1BSX0lOQ0xVREVfRElSPSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfQotICAgIGV4cG9ydCBOU1BSX0xJQl9ESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9Ci0gICAgZXhwb3J0IE5TU19FTkFCTEVfV0VSUk9SPTAKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLSAgICBleHBvcnQgTERGTEFHUz0iIgotfQotCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgICMgTmVlZCB0byBzZXQgUlBBVEggc28gdGhhdCBjaHJwYXRoIHdpbGwgZG8gaXRzIGpvYiBjb3JyZWN0bHkKLSAgICBSUEFUSD0iLVdsLC1ycGF0aC1saW5rLCR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0JBU0VfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aCwke1NUQUdJTkdfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aCwke1NUQUdJTkdfQkFTRV9MSUJESVJfTkFUSVZFfSIKLX0KLQotZG9fY29tcGlsZSgpIHsKLSAgICBleHBvcnQgQ1JPU1NfQ09NUElMRT0xCi0gICAgZXhwb3J0IE5BVElWRV9DQz0iJHtCVUlMRF9DQ30iCi0gICAgZXhwb3J0IE5BVElWRV9GTEFHUz0iJHtCVUlMRF9DRkxBR1N9IgotICAgIGV4cG9ydCBCVUlMRF9PUFQ9MQotCi0gICAgZXhwb3J0IEZSRUVCTF9OT19ERVBFTkQ9MQotICAgIGV4cG9ydCBGUkVFQkxfTE9XSEFTSD0xCi0KLSAgICBleHBvcnQgTElCRElSPSR7bGliZGlyfQotICAgIGV4cG9ydCBNT1pJTExBX0NMSUVOVD0xCi0gICAgZXhwb3J0IE5TX1VTRV9HQ0M9MQotICAgIGV4cG9ydCBOU1NfVVNFX1NZU1RFTV9TUUxJVEU9MQotICAgIGV4cG9ydCBOU1NfRU5BQkxFX0VDQz0xCi0KLSAgICBleHBvcnQgT1NfUkVMRUFTRT0zLjQKLSAgICBleHBvcnQgT1NfVEFSR0VUPUxpbnV4Ci0gICAgZXhwb3J0IE9TX0FSQ0g9TGludXgKLQotICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjIiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9cHBjCi0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYzY0IiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9cHBjNjQKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHNlbCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjQiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0ZWwiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1taXBzCi0gICAgZWxzZQotICAgICAgICBPU19URVNUPSIke1RBUkdFVF9BUkNIfSIKLSAgICBmaQotCi0gICAgaWYgWyAiJHtTSVRFSU5GT19CSVRTfSIgPSAiNjQiIF07IHRoZW4KLSAgICAgICAgZXhwb3J0IFVTRV82ND0xCi0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiAtYSAiJHtTSVRFSU5GT19CSVRTfSIgPSAiMzIiIF07IHRoZW4KLSAgICAgICAgZXhwb3J0IFVTRV9YMzI9MQotICAgIGZpCi0KLSAgICBleHBvcnQgTlNTX0RJU0FCTEVfR1RFU1RTPTEKLQotICAgICMgV2UgY2FuIG1vZGlmeSBDQyBpbiB0aGUgZW52aXJvbm1lbnQsIGJ1dCBpZiB3ZSBzZXQgaXQgdmlhIGFuCi0gICAgIyBhcmd1bWVudCB0byBtYWtlLCBuc2luc3RhbGwsIGEgaG9zdCBwcm9ncmFtLCB3aWxsIGFsc28gYnVpbGQgd2l0aCBpdCEKLSAgICAjCi0gICAgIyBuc3MgcHJldHR5IG11Y2ggZG9lcyBpdHMgb3duIHRoaW5nIHdpdGggQ0ZMQUdTLCBzbyB3ZSBwdXQgdGhlbSBpbnRvIENDLgotICAgICMgT3B0aW1pemF0aW9uIHdpbGwgZ2V0IGNsb2JiZXJlZCwgYnV0IG1vc3Qgb2YgdGhlIHN0dWZmIHdpbGwgc3Vydml2ZS4KLSAgICAjIFRoZSBtb3RpdmF0aW9uIGZvciB0aGlzIGlzIHRvIHBvaW50IHRvIHRoZSBjb3JyZWN0IHBsYWNlIGZvciBkZWJ1ZwotICAgICMgc291cmNlIGZpbGVzIGFuZCBDRkxBR1MgZG9lcyB0aGF0LiAgTm90aGluZyB1c2VzIENDQy4KLSAgICAjCi0gICAgZXhwb3J0IENDPSIke0NDfSAke0NGTEFHU30iCi0gICAgbWFrZSAtQyAuL25zcyBDQ0M9IiR7Q1hYfSAtZyIgXAotICAgICAgICBPU19URVNUPSR7T1NfVEVTVH0gXAotICAgICAgICBSUEFUSD0iJHtSUEFUSH0iCi19Ci1kb19jb21waWxlW3ZhcmRlcHNleGNsdWRlXSArPSAiU0lURUlORk9fQklUUyIKLQotCi1kb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotICAgIGV4cG9ydCBMREZMQUdTPSIiCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgZXhwb3J0IENST1NTX0NPTVBJTEU9MQotICAgIGV4cG9ydCBOQVRJVkVfQ0M9IiR7QlVJTERfQ0N9IgotICAgIGV4cG9ydCBCVUlMRF9PUFQ9MQotCi0gICAgZXhwb3J0IEZSRUVCTF9OT19ERVBFTkQ9MQotCi0gICAgZXhwb3J0IExJQkRJUj0ke2xpYmRpcn0KLSAgICBleHBvcnQgTU9aSUxMQV9DTElFTlQ9MQotICAgIGV4cG9ydCBOU19VU0VfR0NDPTEKLSAgICBleHBvcnQgTlNTX1VTRV9TWVNURU1fU1FMSVRFPTEKLSAgICBleHBvcnQgTlNTX0VOQUJMRV9FQ0M9MQotCi0gICAgZXhwb3J0IE9TX1JFTEVBU0U9My40Ci0gICAgZXhwb3J0IE9TX1RBUkdFVD1MaW51eAotICAgIGV4cG9ydCBPU19BUkNIPUxpbnV4Ci0KLSAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgotICAgICAgICBPU19URVNUPXBwYwotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgotICAgICAgICBPU19URVNUPXBwYzY0Ci0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAibWlwcyIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzZWwiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0IiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NGVsIiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9bWlwcwotICAgIGVsc2UKLSAgICAgICAgT1NfVEVTVD0iJHtUQVJHRVRfQVJDSH0iCi0gICAgZmkKLSAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTsgdGhlbgotICAgICAgICBleHBvcnQgVVNFXzY0PTEKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIC1hICIke1NJVEVJTkZPX0JJVFN9IiA9ICIzMiIgXTsgdGhlbgotICAgICAgICBleHBvcnQgVVNFX1gzMj0xCi0gICAgZmkKLQotICAgIGV4cG9ydCBOU1NfRElTQUJMRV9HVEVTVFM9MQotCi0gICAgbWFrZSAtQyAuL25zcyBcCi0gICAgICAgIENDQz0iJHtDWFh9IiBcCi0gICAgICAgIE9TX1RFU1Q9JHtPU19URVNUfSBcCi0gICAgICAgIFNPVVJDRV9MSUJfRElSPSIke1REfS8ke2xpYmRpcn0iIFwKLSAgICAgICAgU09VUkNFX0JJTl9ESVI9IiR7VER9LyR7YmluZGlyfSIgXAotICAgICAgICBpbnN0YWxsCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtsaWJkaXJ9LwotICAgIGZvciBmaWxlIGluICR7U30vZGlzdC8qLk9CSi9saWIvKi5zbzsgZG8KLSAgICAgICAgZWNobyAiSW5zdGFsbGluZyBgYmFzZW5hbWUgJGZpbGVgLi4uIgotICAgICAgICBjcCAkZmlsZSAgJHtEfS8ke2xpYmRpcn0vCi0gICAgZG9uZQotCi0gICAgZm9yIHNoYXJlZF9saWIgaW4gJHtURH0vJHtsaWJkaXJ9Lyouc28uKjsgZG8KLSAgICAgICAgaWYgWyAtZiAkc2hhcmVkX2xpYiBdOyB0aGVuCi0gICAgICAgICAgICBjcCAkc2hhcmVkX2xpYiAke0R9LyR7bGliZGlyfQotICAgICAgICAgICAgbG4gLXNmICQoYmFzZW5hbWUgJHNoYXJlZF9saWIpICR7RH0vJHtsaWJkaXJ9LyQoYmFzZW5hbWUgJHNoYXJlZF9saWIgLjFvZSkKLSAgICAgICAgZmkKLSAgICBkb25lCi0gICAgZm9yIHNoYXJlZF9saWIgaW4gJHtURH0vJHtsaWJkaXJ9Lyouc287IGRvCi0gICAgICAgIGlmIFsgLWYgJHNoYXJlZF9saWIgLWEgISAtZSAke0R9LyR7bGliZGlyfS8kc2hhcmVkX2xpYiBdOyB0aGVuCi0gICAgICAgICAgICBjcCAkc2hhcmVkX2xpYiAke0R9LyR7bGliZGlyfQotICAgICAgICBmaQotICAgIGRvbmUKLQotICAgIGluc3RhbGwgLWQgJHtEfS8ke2luY2x1ZGVkaXJ9L25zczMKLSAgICBpbnN0YWxsIC1tIDY0NCAtdCAke0R9LyR7aW5jbHVkZWRpcn0vbnNzMyBkaXN0L3B1YmxpYy9uc3MvKgotCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7YmluZGlyfQotICAgIGZvciBiaW5hcnkgaW4gJHtURH0vJHtiaW5kaXJ9Lyo7IGRvCi0gICAgICAgIGluc3RhbGwgLW0gNzU1IC10ICR7RH0vJHtiaW5kaXJ9ICRiaW5hcnkKLSAgICBkb25lCi19Ci1kb19pbnN0YWxsW3ZhcmRlcHNleGNsdWRlXSArPSAiU0lURUlORk9fQklUUyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBDcmVhdGUgZW1wdHkgLmNoayBmaWxlcyBmb3IgdGhlIE5TUyBsaWJyYXJpZXMgYXQgYnVpbGQgdGltZS4gVGhleSBjb3VsZAotICAgICMgYmUgcmVnZW5lcmF0ZWQgYXQgdGFyZ2V0J3MgYm9vdCB0aW1lLgotICAgIGZvciBmaWxlIGluIGxpYnNvZnRva24zLmNoayBsaWJmcmVlYmwzLmNoayBsaWJuc3NkYm0zLmNoazsgZG8KLSAgICAgICAgdG91Y2ggJHtEfS8ke2xpYmRpcn0vJGZpbGUKLSAgICAgICAgY2htb2QgNzU1ICR7RH0vJHtsaWJkaXJ9LyRmaWxlCi0gICAgZG9uZQotICAgIGluc3RhbGwgLUQgLW0gNzU1ICR7V09SS0RJUn0vc2lnbmxpYnMuc2ggJHtEfS8ke2JpbmRpcn0vc2lnbmxpYnMuc2gKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcvCi0gICAgc2VkICdzLyVOU1NfVkVSU0lPTiUvJHtQVn0vJyAke1dPUktESVJ9L25zcy5wYy5pbiB8IHNlZCAncy8lTlNQUl9WRVJTSU9OJS80LjkuMi8nID4gJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi0gICAgc2VkIC1pIHM6T0VQUkVGSVg6JHtwcmVmaXh9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi0gICAgc2VkIC1pIHM6T0VFWEVDUFJFRklYOiR7ZXhlY19wcmVmaXh9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi0gICAgc2VkIC1pIHM6T0VMSUJESVI6JHtsaWJkaXJ9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi0gICAgc2VkIC1pIHM6T0VJTkNESVI6JHtpbmNsdWRlZGlyfS9uc3MzOmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICAjIENyZWF0ZSBhIGJsYW5rIGNlcnRpZmljYXRlCi0gICAgbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiLwotICAgIHRvdWNoIC4vZW1wdHlfcGFzc3dvcmQKLSAgICBjZXJ0dXRpbCAtTiAtZCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvIC1mIC4vZW1wdHlfcGFzc3dvcmQKLSAgICBjaG1vZCA2NDQgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiLyouZGIKLSAgICBybSAuL2VtcHR5X3Bhc3N3b3JkCi19Ci0KLVBBQ0tBR0VfV1JJVEVfREVQUyArPSAibnNzLW5hdGl2ZSIKLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0gICAgaWYgWyAtbiAiJEQiIF07IHRoZW4KLSAgICAgICAgZm9yIEkgaW4gJEQke2xpYmRpcn0vbGliKi5jaGs7IGRvCi0gICAgICAgICAgICBETj1gZGlybmFtZSAkSWAKLSAgICAgICAgICAgIEJOPWBiYXNlbmFtZSAkSSAuY2hrYAotICAgICAgICAgICAgRk49JEROLyRCTi5zbwotICAgICAgICAgICAgc2hsaWJzaWduIC1pICRGTgotICAgICAgICAgICAgaWYgWyAkPyAtbmUgMCBdOyB0aGVuCi0gICAgICAgICAgICAgICAgZXhpdCAxCi0gICAgICAgICAgICBmaQotICAgICAgICBkb25lCi0gICAgZWxzZQotICAgICAgICBzaWdubGlicy5zaAotICAgIGZpCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1zbWltZSIKLUZJTEVTXyR7UE59LXNtaW1lID0gIlwKLSAgICAke2JpbmRpcn0vc21pbWUgXAotIgotRklMRVNfJHtQTn0gPSAiXAotICAgICR7c3lzY29uZmRpcn0gXAotICAgICR7YmluZGlyfSBcCi0gICAgJHtsaWJkaXJ9L2xpYiouY2hrIFwKLSAgICAke2xpYmRpcn0vbGliKi5zbyBcCi0gICAgIgotRklMRVNfJHtQTn0tZGV2ID0gIlwKLSAgICAke2xpYmRpcn0vbnNzIFwKLSAgICAke2xpYmRpcn0vcGtnY29uZmlnLyogXAotICAgICR7aW5jbHVkZWRpcn0vKiBcCi0gICAgIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuMzUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjM1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0ZjE5MTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjM1LmJiCkBAIC0wLDAgKzEsMjU1IEBACitTVU1NQVJZID0gIk1vemlsbGEncyBTU0wgYW5kIFRMUyBpbXBsZW1lbnRhdGlvbiIKK0RFU0NSSVBUSU9OID0gIk5ldHdvcmsgU2VjdXJpdHkgU2VydmljZXMgKE5TUykgaXMgYSBzZXQgb2YgbGlicmFyaWVzIFwKK2Rlc2lnbmVkIHRvIHN1cHBvcnQgY3Jvc3MtcGxhdGZvcm0gZGV2ZWxvcG1lbnQgb2YgXAorc2VjdXJpdHktZW5hYmxlZCBjbGllbnQgYW5kIHNlcnZlciBhcHBsaWNhdGlvbnMuIFwKK0FwcGxpY2F0aW9ucyBidWlsdCB3aXRoIE5TUyBjYW4gc3VwcG9ydCBTU0wgdjIgYW5kIHYzLCBcCitUTFMsIFBLQ1MgNSwgUEtDUyA3LCBQS0NTIDExLCBQS0NTIDEyLCBTL01JTUUsIFguNTA5IFwKK3YzIGNlcnRpZmljYXRlcywgYW5kIG90aGVyIHNlY3VyaXR5IHN0YW5kYXJkcy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL3NlY3VyaXR5L3BraS9uc3MvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIk1QTC0yLjAgfCAoTVBMLTIuMCAmIEdQTC0yLjArKSB8IChNUEwtMi4wICYgTEdQTC0yLjErKSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbnNzL0NPUFlJTkc7bWQ1PTNiMWU4OGUxYjljMGI1YTRiMjg4MWQ0NmNjZTA2YTE4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL25zcy9saWIvZnJlZWJsL21waS9kb2MvTElDRU5TRTttZDU9NDkxZjE1OGQwOWQ5NDg0NjZhZmNlODVkNmYxZmUxOGYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbnNzL2xpYi9mcmVlYmwvbXBpL2RvYy9MSUNFTlNFLU1QTDttZDU9NWQ0MjVjOGYzMTU3ZGJmMjEyZGIyZWM1M2Q5ZTUxMzIiCisKK1ZFUlNJT05fRElSID0gIiR7QGQuZ2V0VmFyKCdCUCcpLnVwcGVyKCkucmVwbGFjZSgnLScsICdfJykucmVwbGFjZSgnLicsICdfJykgKyAnX1JUTSd9IgorCitTUkNfVVJJID0gImh0dHA6Ly9mdHAubW96aWxsYS5vcmcvcHViL21vemlsbGEub3JnL3NlY3VyaXR5L25zcy9yZWxlYXNlcy8ke1ZFUlNJT05fRElSfS9zcmMvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL25zcy5wYy5pbiBcCisgICAgICAgICAgIGZpbGU6Ly9zaWdubGlicy5zaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5zcy1maXgtc3VwcG9ydC1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbnNzLW5vLXJwYXRoLWZvci1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbnNzLWZpeC1pbmNvcnJlY3Qtc2hlYmFuZy1vZi1wZXJsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25zcy1maXgtbnNpbnN0YWxsLWJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtV3ZhcmFyZ3Mtd2l0aC1jbGFuZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wcWcuYy1VTExfYWRkZW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0ZpeC1jb21waWxhdGlvbi1mb3ItWDMyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25zcy1idWlsZC1oYWNsLXBvbHkxMzA1LWFhcmNoNjQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1CdWctMTQzNzczNC1Vc2Utc25wcmludGYtaW4tc2lnbi5jLXItdHRhdWJlcnQucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5NDY3ZWM5ZTY1YzVhZWIzMjU0YTUwMjUwNDkwZjVmNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNDEyN2RlMDliZWRlMzlmNWZkMGY3ODlkMzNjMzUwNGM1ZDI2MWU2OWVhMDMwMjJkNDZiMzE5YjNlMzJmNmZhIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Nb3ppbGxhL1Byb2plY3RzL05TUy9OU1NfUmVsZWFzZXMiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJOU1NfKD9QPHB2ZXI+LispX3JlbGVhc2Vfbm90ZXMiCisKK2luaGVyaXQgc2l0ZWluZm8KKworREVQRU5EUyA9ICJzcWxpdGUzIG5zcHIgemxpYiBuc3MtbmF0aXZlIgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAic3FsaXRlMy1uYXRpdmUgbnNwci1uYXRpdmUgemxpYi1uYXRpdmUiCitSREVQRU5EU18ke1BOfS1zbWltZSA9ICJwZXJsIgorCitURCA9ICIke1N9L3RlbnRhdGl2ZS1kaXN0IgorVERTID0gIiR7U30vdGVudGF0aXZlLWRpc3Qtc3RhZ2luZyIKKworVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2xpYmMtbXVzbCAoKSB7CisgICAgc2VkIC1pIC1lICcvLURIQVZFX1NZU19DREVGU19IL2QnICR7U30vbnNzL2xpYi9kYm0vY29uZmlnL2NvbmZpZy5taworfQorCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgIGV4cG9ydCBOU1BSX0lOQ0xVREVfRElSPSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfQorICAgIGV4cG9ydCBOU1BSX0xJQl9ESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9CisgICAgZXhwb3J0IE5TU19FTkFCTEVfV0VSUk9SPTAKK30KKworZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKyAgICBleHBvcnQgTERGTEFHUz0iIgorfQorCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgICMgTmVlZCB0byBzZXQgUlBBVEggc28gdGhhdCBjaHJwYXRoIHdpbGwgZG8gaXRzIGpvYiBjb3JyZWN0bHkKKyAgICBSUEFUSD0iLVdsLC1ycGF0aC1saW5rLCR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0JBU0VfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aCwke1NUQUdJTkdfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aCwke1NUQUdJTkdfQkFTRV9MSUJESVJfTkFUSVZFfSIKK30KKworZG9fY29tcGlsZSgpIHsKKyAgICBleHBvcnQgQ1JPU1NfQ09NUElMRT0xCisgICAgZXhwb3J0IE5BVElWRV9DQz0iJHtCVUlMRF9DQ30iCisgICAgZXhwb3J0IE5BVElWRV9GTEFHUz0iJHtCVUlMRF9DRkxBR1N9IgorICAgIGV4cG9ydCBCVUlMRF9PUFQ9MQorCisgICAgZXhwb3J0IEZSRUVCTF9OT19ERVBFTkQ9MQorICAgIGV4cG9ydCBGUkVFQkxfTE9XSEFTSD0xCisKKyAgICBleHBvcnQgTElCRElSPSR7bGliZGlyfQorICAgIGV4cG9ydCBNT1pJTExBX0NMSUVOVD0xCisgICAgZXhwb3J0IE5TX1VTRV9HQ0M9MQorICAgIGV4cG9ydCBOU1NfVVNFX1NZU1RFTV9TUUxJVEU9MQorICAgIGV4cG9ydCBOU1NfRU5BQkxFX0VDQz0xCisKKyAgICBleHBvcnQgT1NfUkVMRUFTRT0zLjQKKyAgICBleHBvcnQgT1NfVEFSR0VUPUxpbnV4CisgICAgZXhwb3J0IE9TX0FSQ0g9TGludXgKKworICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjIiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9cHBjCisgICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYzY0IiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9cHBjNjQKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHNlbCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjQiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0ZWwiIF07IHRoZW4KKyAgICAgICAgT1NfVEVTVD1taXBzCisgICAgZWxzZQorICAgICAgICBPU19URVNUPSIke1RBUkdFVF9BUkNIfSIKKyAgICBmaQorCisgICAgaWYgWyAiJHtTSVRFSU5GT19CSVRTfSIgPSAiNjQiIF07IHRoZW4KKyAgICAgICAgZXhwb3J0IFVTRV82ND0xCisgICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiAtYSAiJHtTSVRFSU5GT19CSVRTfSIgPSAiMzIiIF07IHRoZW4KKyAgICAgICAgZXhwb3J0IFVTRV9YMzI9MQorICAgIGZpCisKKyAgICBleHBvcnQgTlNTX0RJU0FCTEVfR1RFU1RTPTEKKworICAgICMgV2UgY2FuIG1vZGlmeSBDQyBpbiB0aGUgZW52aXJvbm1lbnQsIGJ1dCBpZiB3ZSBzZXQgaXQgdmlhIGFuCisgICAgIyBhcmd1bWVudCB0byBtYWtlLCBuc2luc3RhbGwsIGEgaG9zdCBwcm9ncmFtLCB3aWxsIGFsc28gYnVpbGQgd2l0aCBpdCEKKyAgICAjCisgICAgIyBuc3MgcHJldHR5IG11Y2ggZG9lcyBpdHMgb3duIHRoaW5nIHdpdGggQ0ZMQUdTLCBzbyB3ZSBwdXQgdGhlbSBpbnRvIENDLgorICAgICMgT3B0aW1pemF0aW9uIHdpbGwgZ2V0IGNsb2JiZXJlZCwgYnV0IG1vc3Qgb2YgdGhlIHN0dWZmIHdpbGwgc3Vydml2ZS4KKyAgICAjIFRoZSBtb3RpdmF0aW9uIGZvciB0aGlzIGlzIHRvIHBvaW50IHRvIHRoZSBjb3JyZWN0IHBsYWNlIGZvciBkZWJ1ZworICAgICMgc291cmNlIGZpbGVzIGFuZCBDRkxBR1MgZG9lcyB0aGF0LiAgTm90aGluZyB1c2VzIENDQy4KKyAgICAjCisgICAgZXhwb3J0IENDPSIke0NDfSAke0NGTEFHU30iCisgICAgbWFrZSAtQyAuL25zcyBDQ0M9IiR7Q1hYfSAtZyIgXAorICAgICAgICBPU19URVNUPSR7T1NfVEVTVH0gXAorICAgICAgICBSUEFUSD0iJHtSUEFUSH0iCit9Citkb19jb21waWxlW3ZhcmRlcHNleGNsdWRlXSArPSAiU0lURUlORk9fQklUUyIKKworCitkb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworICAgIGV4cG9ydCBMREZMQUdTPSIiCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgZXhwb3J0IENST1NTX0NPTVBJTEU9MQorICAgIGV4cG9ydCBOQVRJVkVfQ0M9IiR7QlVJTERfQ0N9IgorICAgIGV4cG9ydCBCVUlMRF9PUFQ9MQorCisgICAgZXhwb3J0IEZSRUVCTF9OT19ERVBFTkQ9MQorCisgICAgZXhwb3J0IExJQkRJUj0ke2xpYmRpcn0KKyAgICBleHBvcnQgTU9aSUxMQV9DTElFTlQ9MQorICAgIGV4cG9ydCBOU19VU0VfR0NDPTEKKyAgICBleHBvcnQgTlNTX1VTRV9TWVNURU1fU1FMSVRFPTEKKyAgICBleHBvcnQgTlNTX0VOQUJMRV9FQ0M9MQorCisgICAgZXhwb3J0IE9TX1JFTEVBU0U9My40CisgICAgZXhwb3J0IE9TX1RBUkdFVD1MaW51eAorICAgIGV4cG9ydCBPU19BUkNIPUxpbnV4CisKKyAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgorICAgICAgICBPU19URVNUPXBwYworICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgorICAgICAgICBPU19URVNUPXBwYzY0CisgICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAibWlwcyIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzZWwiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0IiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NGVsIiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9bWlwcworICAgIGVsc2UKKyAgICAgICAgT1NfVEVTVD0iJHtUQVJHRVRfQVJDSH0iCisgICAgZmkKKyAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFXzY0PTEKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIC1hICIke1NJVEVJTkZPX0JJVFN9IiA9ICIzMiIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFX1gzMj0xCisgICAgZmkKKworICAgIGV4cG9ydCBOU1NfRElTQUJMRV9HVEVTVFM9MQorCisgICAgbWFrZSAtQyAuL25zcyBcCisgICAgICAgIENDQz0iJHtDWFh9IiBcCisgICAgICAgIE9TX1RFU1Q9JHtPU19URVNUfSBcCisgICAgICAgIFNPVVJDRV9MSUJfRElSPSIke1REfS8ke2xpYmRpcn0iIFwKKyAgICAgICAgU09VUkNFX0JJTl9ESVI9IiR7VER9LyR7YmluZGlyfSIgXAorICAgICAgICBpbnN0YWxsCisKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtsaWJkaXJ9LworICAgIGZvciBmaWxlIGluICR7U30vZGlzdC8qLk9CSi9saWIvKi5zbzsgZG8KKyAgICAgICAgZWNobyAiSW5zdGFsbGluZyBgYmFzZW5hbWUgJGZpbGVgLi4uIgorICAgICAgICBjcCAkZmlsZSAgJHtEfS8ke2xpYmRpcn0vCisgICAgZG9uZQorCisgICAgZm9yIHNoYXJlZF9saWIgaW4gJHtURH0vJHtsaWJkaXJ9Lyouc28uKjsgZG8KKyAgICAgICAgaWYgWyAtZiAkc2hhcmVkX2xpYiBdOyB0aGVuCisgICAgICAgICAgICBjcCAkc2hhcmVkX2xpYiAke0R9LyR7bGliZGlyfQorICAgICAgICAgICAgbG4gLXNmICQoYmFzZW5hbWUgJHNoYXJlZF9saWIpICR7RH0vJHtsaWJkaXJ9LyQoYmFzZW5hbWUgJHNoYXJlZF9saWIgLjFvZSkKKyAgICAgICAgZmkKKyAgICBkb25lCisgICAgZm9yIHNoYXJlZF9saWIgaW4gJHtURH0vJHtsaWJkaXJ9Lyouc287IGRvCisgICAgICAgIGlmIFsgLWYgJHNoYXJlZF9saWIgLWEgISAtZSAke0R9LyR7bGliZGlyfS8kc2hhcmVkX2xpYiBdOyB0aGVuCisgICAgICAgICAgICBjcCAkc2hhcmVkX2xpYiAke0R9LyR7bGliZGlyfQorICAgICAgICBmaQorICAgIGRvbmUKKworICAgIGluc3RhbGwgLWQgJHtEfS8ke2luY2x1ZGVkaXJ9L25zczMKKyAgICBpbnN0YWxsIC1tIDY0NCAtdCAke0R9LyR7aW5jbHVkZWRpcn0vbnNzMyBkaXN0L3B1YmxpYy9uc3MvKgorCisgICAgaW5zdGFsbCAtZCAke0R9LyR7YmluZGlyfQorICAgIGZvciBiaW5hcnkgaW4gJHtURH0vJHtiaW5kaXJ9Lyo7IGRvCisgICAgICAgIGluc3RhbGwgLW0gNzU1IC10ICR7RH0vJHtiaW5kaXJ9ICRiaW5hcnkKKyAgICBkb25lCit9Citkb19pbnN0YWxsW3ZhcmRlcHNleGNsdWRlXSArPSAiU0lURUlORk9fQklUUyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyBDcmVhdGUgZW1wdHkgLmNoayBmaWxlcyBmb3IgdGhlIE5TUyBsaWJyYXJpZXMgYXQgYnVpbGQgdGltZS4gVGhleSBjb3VsZAorICAgICMgYmUgcmVnZW5lcmF0ZWQgYXQgdGFyZ2V0J3MgYm9vdCB0aW1lLgorICAgIGZvciBmaWxlIGluIGxpYnNvZnRva24zLmNoayBsaWJmcmVlYmwzLmNoayBsaWJuc3NkYm0zLmNoazsgZG8KKyAgICAgICAgdG91Y2ggJHtEfS8ke2xpYmRpcn0vJGZpbGUKKyAgICAgICAgY2htb2QgNzU1ICR7RH0vJHtsaWJkaXJ9LyRmaWxlCisgICAgZG9uZQorICAgIGluc3RhbGwgLUQgLW0gNzU1ICR7V09SS0RJUn0vc2lnbmxpYnMuc2ggJHtEfS8ke2JpbmRpcn0vc2lnbmxpYnMuc2gKKworICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcvCisgICAgc2VkICdzLyVOU1NfVkVSU0lPTiUvJHtQVn0vJyAke1dPUktESVJ9L25zcy5wYy5pbiB8IHNlZCAncy8lTlNQUl9WRVJTSU9OJS80LjkuMi8nID4gJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCisgICAgc2VkIC1pIHM6T0VQUkVGSVg6JHtwcmVmaXh9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCisgICAgc2VkIC1pIHM6T0VFWEVDUFJFRklYOiR7ZXhlY19wcmVmaXh9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCisgICAgc2VkIC1pIHM6T0VMSUJESVI6JHtsaWJkaXJ9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCisgICAgc2VkIC1pIHM6T0VJTkNESVI6JHtpbmNsdWRlZGlyfS9uc3MzOmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAjIENyZWF0ZSBhIGJsYW5rIGNlcnRpZmljYXRlCisgICAgbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiLworICAgIHRvdWNoIC4vZW1wdHlfcGFzc3dvcmQKKyAgICBjZXJ0dXRpbCAtTiAtZCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvIC1mIC4vZW1wdHlfcGFzc3dvcmQKKyAgICBjaG1vZCA2NDQgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiLyouZGIKKyAgICBybSAuL2VtcHR5X3Bhc3N3b3JkCit9CisKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAibnNzLW5hdGl2ZSIKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisgICAgaWYgWyAtbiAiJEQiIF07IHRoZW4KKyAgICAgICAgZm9yIEkgaW4gJEQke2xpYmRpcn0vbGliKi5jaGs7IGRvCisgICAgICAgICAgICBETj1gZGlybmFtZSAkSWAKKyAgICAgICAgICAgIEJOPWBiYXNlbmFtZSAkSSAuY2hrYAorICAgICAgICAgICAgRk49JEROLyRCTi5zbworICAgICAgICAgICAgc2hsaWJzaWduIC1pICRGTgorICAgICAgICAgICAgaWYgWyAkPyAtbmUgMCBdOyB0aGVuCisgICAgICAgICAgICAgICAgZXhpdCAxCisgICAgICAgICAgICBmaQorICAgICAgICBkb25lCisgICAgZWxzZQorICAgICAgICBzaWdubGlicy5zaAorICAgIGZpCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1zbWltZSIKK0ZJTEVTXyR7UE59LXNtaW1lID0gIlwKKyAgICAke2JpbmRpcn0vc21pbWUgXAorIgorRklMRVNfJHtQTn0gPSAiXAorICAgICR7c3lzY29uZmRpcn0gXAorICAgICR7YmluZGlyfSBcCisgICAgJHtsaWJkaXJ9L2xpYiouY2hrIFwKKyAgICAke2xpYmRpcn0vbGliKi5zbyBcCisgICAgIgorRklMRVNfJHtQTn0tZGV2ID0gIlwKKyAgICAke2xpYmRpcn0vbnNzIFwKKyAgICAke2xpYmRpcn0vcGtnY29uZmlnLyogXAorICAgICR7aW5jbHVkZWRpcn0vKiBcCisgICAgIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeS0xLjAuMC9ncGctZXJyb3JfcGtjb25mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5LTEuMS4wL2dwZy1lcnJvcl9wa2NvbmYucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeS0xLjAuMC9ncGctZXJyb3JfcGtjb25mLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnktMS4xLjAvZ3BnLWVycm9yX3BrY29uZi5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5LTEuMC4wL2xpYmFzc3Vhbl9wa2djb25mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5LTEuMS4wL2xpYmFzc3Vhbl9wa2djb25mLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnktMS4wLjAvbGliYXNzdWFuX3BrZ2NvbmYucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeS0xLjEuMC9saWJhc3N1YW5fcGtnY29uZi5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5XzEuMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5XzEuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTlhY2QzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeV8xLjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLVNVTU1BUlkgPSAiQ29sbGVjdGlvbiBvZiBzaW1wbGUgUElOIG9yIHBhc3NwaHJhc2UgZW50cnkgZGlhbG9ncyIKLURFU0NSSVBUSU9OID0gIlwKLQlQaW5lbnRyeSBpcyBhIGNvbGxlY3Rpb24gb2Ygc2ltcGxlIFBJTiBvciBwYXNzcGhyYXNlIGVudHJ5IGRpYWxvZ3Mgd2hpY2ggXAotCXV0aWxpemUgdGhlIEFzc3VhbiBwcm90b2NvbCBhcyBkZXNjcmliZWQgYnkgdGhlIGFlZ3lwdGVuIHByb2plY3Q7IHNlZSBcCi0JaHR0cDovL3d3dy5nbnVwZy5vcmcvYWVneXB0ZW4vIGZvciBkZXRhaWxzLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvcmVsYXRlZF9zb2Z0d2FyZS9waW5lbnRyeS9pbmRleC5lbi5odG1sIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWNiYmQ3OTRlMmEwYTI4OWI5ZGZjYzlmNTEzZDE5OTZlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotREVQRU5EUyA9ICJnZXR0ZXh0LW5hdGl2ZSBsaWJhc3N1YW4gbGliZ3BnLWVycm9yIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKLVNSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJhc3N1YW5fcGtnY29uZi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ncGctZXJyb3JfcGtjb25mLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRhM2ZhZDhiMzFmOWI0YzU1MjZjODgzNzQ5NTAxNWRjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE2NzJjMmVkYzFmZWIwMzYwNzViMTg3YzA3NzM3ODdiMmFmZDA1NDRmNTUwMjVjNjQ1YTcxYjRjMmY3OTI3NWEiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtcnBhdGggLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1waW5lbnRyeS1xdDUgIFwKLSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIm5jdXJzZXMgbGliY2FwIgotCi1QQUNLQUdFQ09ORklHW25jdXJzZXNdID0gIi0tZW5hYmxlLW5jdXJzZXMgIC0td2l0aC1uY3Vyc2VzLWluY2x1ZGUtZGlyPSR7U1RBR0lOR19JTkNESVJ9LCAtLWRpc2FibGUtbmN1cnNlcywgbmN1cnNlcyIKLVBBQ0tBR0VDT05GSUdbbGliY2FwXSA9ICItLXdpdGgtbGliY2FwLCAtLXdpdGhvdXQtbGliY2FwLCBsaWJjYXAiCi1QQUNLQUdFQ09ORklHW3F0XSA9ICItLWVuYWJsZS1waW5lbnRyeS1xdCwgLS1kaXNhYmxlLXBpbmVudHJ5LXF0LCBxdDQteDExIgotUEFDS0FHRUNPTkZJR1tndGsyXSA9ICItLWVuYWJsZS1waW5lbnRyeS1ndGsyLCAtLWRpc2FibGUtcGluZW50cnktZ3RrMiwgZ3RrKyBnbGliLTIuMCIKLQotI1RvIHVzZSBsaWJzZWNyZXQsIGFkZCBtZXRhLWdub21lCi1QQUNLQUdFQ09ORklHW3NlY3JldF0gPSAiLS1lbmFibGUtbGlic2VjcmV0LCAtLWRpc2FibGUtbGlic2VjcmV0LCBsaWJzZWNyZXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnlfMS4xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnlfMS4xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWVhYTI2MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeV8xLjEuMC5iYgpAQCAtMCwwICsxLDM4IEBACitTVU1NQVJZID0gIkNvbGxlY3Rpb24gb2Ygc2ltcGxlIFBJTiBvciBwYXNzcGhyYXNlIGVudHJ5IGRpYWxvZ3MiCitERVNDUklQVElPTiA9ICJcCisJUGluZW50cnkgaXMgYSBjb2xsZWN0aW9uIG9mIHNpbXBsZSBQSU4gb3IgcGFzc3BocmFzZSBlbnRyeSBkaWFsb2dzIHdoaWNoIFwKKwl1dGlsaXplIHRoZSBBc3N1YW4gcHJvdG9jb2wgYXMgZGVzY3JpYmVkIGJ5IHRoZSBhZWd5cHRlbiBwcm9qZWN0OyBzZWUgXAorCWh0dHA6Ly93d3cuZ251cGcub3JnL2FlZ3lwdGVuLyBmb3IgZGV0YWlscy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnL3JlbGF0ZWRfc29mdHdhcmUvcGluZW50cnkvaW5kZXguZW4uaHRtbCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jYmJkNzk0ZTJhMGEyODliOWRmY2M5ZjUxM2QxOTk2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0RFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUgbGliYXNzdWFuIGxpYmdwZy1lcnJvciIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vbGliYXNzdWFuX3BrZ2NvbmYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ3BnLWVycm9yX3BrY29uZi5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzODI5MzE1Y2IwYTFlOWNlZGMwNWZmZTZkZWY3YTJjNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2ODA3NjY4NmZhNzI0YTI5MGVhNDljZGYwZDFjMGMxNTAwOTA3ZDFiNzU5YTNiY2JmYmVjMDI5M2U4ZjU2NTcwIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXJwYXRoIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtcGluZW50cnktcXQ1ICBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJuY3Vyc2VzIGxpYmNhcCIKKworUEFDS0FHRUNPTkZJR1tuY3Vyc2VzXSA9ICItLWVuYWJsZS1uY3Vyc2VzICAtLXdpdGgtbmN1cnNlcy1pbmNsdWRlLWRpcj0ke1NUQUdJTkdfSU5DRElSfSwgLS1kaXNhYmxlLW5jdXJzZXMsIG5jdXJzZXMiCitQQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLS13aXRoLWxpYmNhcCwgLS13aXRob3V0LWxpYmNhcCwgbGliY2FwIgorUEFDS0FHRUNPTkZJR1txdF0gPSAiLS1lbmFibGUtcGluZW50cnktcXQsIC0tZGlzYWJsZS1waW5lbnRyeS1xdCwgcXQ0LXgxMSIKK1BBQ0tBR0VDT05GSUdbZ3RrMl0gPSAiLS1lbmFibGUtcGluZW50cnktZ3RrMiwgLS1kaXNhYmxlLXBpbmVudHJ5LWd0azIsIGd0aysgZ2xpYi0yLjAiCisKKyNUbyB1c2UgbGlic2VjcmV0LCBhZGQgbWV0YS1nbm9tZQorUEFDS0FHRUNPTkZJR1tzZWNyZXRdID0gIi0tZW5hYmxlLWxpYnNlY3JldCwgLS1kaXNhYmxlLWxpYnNlY3JldCwgbGlic2VjcmV0IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wdGVzdC1ydW5uZXIvcHRlc3QtcnVubmVyXzIuMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4xLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTViNzFjMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wdGVzdC1ydW5uZXIvcHRlc3QtcnVubmVyXzIuMS4xLmJiCkBAIC0wLDAgKzEsMjYgQEAKK1NVTU1BUlkgPSAiQSBDIHByb2dyYW0gdG8gcnVuIGFsbCBpbnN0YWxsZWQgcHRlc3RzIgorREVTQ1JJUFRJT04gPSAiVGhlIHB0ZXN0LXJ1bm5lcjIgcGFja2FnZSBpbnN0YWxscyBhIHB0ZXN0LXJ1bm5lciBcCitwcm9ncmFtIHdoaWNoIGxvb3BzIHRocm91Z2ggYWxsIGluc3RhbGxlZCBwdGVzdCB0ZXN0IHN1aXRlcyBhbmQgXAorcnVucyB0aGVtIGluIHNlcXVlbmNlLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3B0ZXN0LXJ1bm5lcjIvYWJvdXQvIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK1NSQ1JFViA9ICIxNjQxM2Q3MWNjMDZiMDJhNmQ4NTljMzVhMDE3Y2M0OWI4ODI4M2Y3IgorUFYgPSAiMi4xLjErZ2l0JHtTUkNQVn0iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcHRlc3QtcnVubmVyMiIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9wdGVzdC1ydW5uZXIiCisKK0VYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgorCitkb19jb21waWxlICgpIHsKKwlvZV9ydW5tYWtlCit9CisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLUQgLW0gMDc1NSAke1N9L3B0ZXN0LXJ1bm5lciAke0R9JHtiaW5kaXJ9L3B0ZXN0LXJ1bm5lcgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWMxZGFiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wdGVzdC1ydW5uZXIvcHRlc3QtcnVubmVyXzIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBDIHByb2dyYW0gdG8gcnVuIGFsbCBpbnN0YWxsZWQgcHRlc3RzIgotREVTQ1JJUFRJT04gPSAiVGhlIHB0ZXN0LXJ1bm5lcjIgcGFja2FnZSBpbnN0YWxscyBhIHB0ZXN0LXJ1bm5lciBcCi1wcm9ncmFtIHdoaWNoIGxvb3BzIHRocm91Z2ggYWxsIGluc3RhbGxlZCBwdGVzdCB0ZXN0IHN1aXRlcyBhbmQgXAotcnVucyB0aGVtIGluIHNlcXVlbmNlLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3B0ZXN0LXJ1bm5lcjIvYWJvdXQvIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLVNSQ1JFViA9ICI4YTkzODMyZGFkNjIxNTM1ZTkwYWE4ZTFmYjc0YWU1YmE3NDNmYzNlIgotUFYgPSAiMi4xK2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3B0ZXN0LXJ1bm5lcjIiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vcHRlc3QtcnVubmVyIgotCi1FWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKLQotZG9fY29tcGlsZSAoKSB7Ci0Jb2VfcnVubWFrZQotfQotCi1kb19pbnN0YWxsICgpIHsKLQlpbnN0YWxsIC1EIC1tIDA3NTUgJHtTfS9wdGVzdC1ydW5uZXIgJHtEfSR7YmluZGlyfS9wdGVzdC1ydW5uZXIKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3JlYWRfZXJyb3JfbXNnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvcmVhZF9lcnJvcl9tc2cucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFhMTNiZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3JlYWRfZXJyb3JfbXNnLnBhdGNoCkBAIC0wLDAgKzEsOTggQEAKK3JuZy10b29sczogbW9kaWZ5ICdyZWFkIGVycm9yJyBtZXNzYWdlCisKK01ha2UgdGhlICdyZWFkIGVycm9yJyBtZXNzYWdlIG1vcmUgZGVzY3JpcHRpdmUuCisKK0NvcGllZCBmcm9tIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9hdHRhY2htZW50LmNnaT9pZD0xMjk1ODU3CithbmQgbW9kaWZpZWQgaW4gb25lIHBsYWNlIHRvIGFwcGx5IHN1Y2Nlc3NmdWxseS4gIEVycm9yIG1lc3NhZ2UgZHVyaW5nCitib290c3RyYXAgbW9kaWZpZWQgdG8gc2hvdyBkZXZpY2UgbmFtZS4KKworVXBzdHJlYW0tU3RhdHVzOiBwZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KKworCistLS0gYS9ybmdkLmMKKysrKyBiL3JuZ2QuYworQEAgLTI0Nyw4ICsyNDcsMTEgQEAgc3RhdGljIHZvaWQgZG9fbG9vcChpbnQgcmFuZG9tX3N0ZXApCisgCQkJCWNvbnRpbnVlOwkvKiBmYWlsZWQsIG5vIHdvcmsgKi8KKyAKKyAJCQlyZXR2YWwgPSBpdGVyLT54cmVhZChidWYsIHNpemVvZiBidWYsIGl0ZXIpOworLQkJCWlmIChyZXR2YWwpCisrCQkJaWYgKHJldHZhbCkgeworKwkJCQltZXNzYWdlKExPR19EQUVNT058TE9HX0VSUiwKKysJCQkJCSJFcnJvciByZWFkaW5nIGZyb20gZW50cm9weSBzb3VyY2VcbiIpOworIAkJCQljb250aW51ZTsJLyogZmFpbGVkLCBubyB3b3JrICovCisrCQkJfQorIAorIAkJCXdvcmtfZG9uZSA9IHRydWU7CisgCistLS0gYS9ybmdkX2VudHNvdXJjZS5jCisrKysgYi9ybmdkX2VudHNvdXJjZS5jCitAQCAtNjMsMTAgKzYzLDggQEAgaW50IHhyZWFkKHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUsIHN0cnVjdAorIAkJc2l6ZSAtPSByOworIAl9CisgCistCWlmIChzaXplKSB7CistCQltZXNzYWdlKExPR19EQUVNT058TE9HX0VSUiwgInJlYWQgZXJyb3JcbiIpOworKwlpZiAoc2l6ZSkKKyAJCXJldHVybiAtMTsKKy0JfQorIAlyZXR1cm4gMDsKKyB9CisgCitAQCAtMTUyLDcgKzE1MCw3IEBAIGVycm9yX291dDoKKyB9CisgCisgLyogSW5pdGlhbGl6ZSBlbnRyb3B5IHNvdXJjZSAqLworLXN0YXRpYyBpbnQgZGlzY2FyZF9pbml0aWFsX2RhdGEoc3RydWN0IHJuZyAqZW50X3NyYykKKytzdGF0aWMgaW50IGRpc2NhcmRfaW5pdGlhbF9kYXRhKHN0cnVjdCBybmcgKmVudF9zcmMsIGludCAqYnVmKQorIHsKKyAJLyogVHJhc2ggMzIgYml0cyBvZiB3aGF0IGlzIHByb2JhYmx5IHN0YWxlIChub24tcmFuZG9tKQorIAkgKiBpbml0aWFsIHN0YXRlIGZyb20gdGhlIFJORy4gIEZvciBJbnRlbCdzLCA4IGJpdHMgd291bGQKK0BAIC0xNjQsMTAgKzE2MiwxMiBAQCBzdGF0aWMgaW50IGRpc2NhcmRfaW5pdGlhbF9kYXRhKHN0cnVjdCByCisgCXhyZWFkKHRlbXBidWYsIHNpemVvZih0ZW1wYnVmKSwgZW50X3NyYyk7CisgCisgCS8qIFJldHVybiAzMiBiaXRzIG9mIGJvb3RzdHJhcCBkYXRhICovCistCXhyZWFkKHRlbXBidWYsIHNpemVvZih0ZW1wYnVmKSwgZW50X3NyYyk7CisrCWlmICh4cmVhZCh0ZW1wYnVmLCBzaXplb2YodGVtcGJ1ZiksIGVudF9zcmMpICE9IDApCisrCQlyZXR1cm4gLTE7CisgCistCXJldHVybiB0ZW1wYnVmWzBdIHwgKHRlbXBidWZbMV0gPDwgOCkgfAorKwkqYnVmID0gdGVtcGJ1ZlswXSB8ICh0ZW1wYnVmWzFdIDw8IDgpIHwKKyAJCSh0ZW1wYnVmWzJdIDw8IDE2KSB8ICh0ZW1wYnVmWzNdIDw8IDI0KTsKKysJcmV0dXJuIDA7CisgfQorIAorIC8qCitAQCAtMTc1LDYgKzE3NSw4IEBAIHN0YXRpYyBpbnQgZGlzY2FyZF9pbml0aWFsX2RhdGEoc3RydWN0IHIKKyAgKi8KKyBpbnQgaW5pdF9lbnRyb3B5X3NvdXJjZShzdHJ1Y3Qgcm5nICplbnRfc3JjKQorIHsKKysJaW50IGJvb3RzdHJhcDsKKysKKyAJZW50X3NyYy0+cm5nX2ZkID0gb3BlbihlbnRfc3JjLT5ybmdfbmFtZSwgT19SRE9OTFkpOworIAlpZiAoZW50X3NyYy0+cm5nX2ZkID09IC0xKSB7CisgCQlyZXR1cm4gMTsKK0BAIC0xODIsNyArMTg0LDExIEBAIGludCBpbml0X2VudHJvcHlfc291cmNlKHN0cnVjdCBybmcgKmVudF8KKyAJc3JjX2xpc3RfYWRkKGVudF9zcmMpOworIAkvKiBCb290c3RyYXAgRklQUyB0ZXN0cyAqLworIAllbnRfc3JjLT5maXBzY3R4ID0gbWFsbG9jKHNpemVvZihmaXBzX2N0eF90KSk7CistCWZpcHNfaW5pdChlbnRfc3JjLT5maXBzY3R4LCBkaXNjYXJkX2luaXRpYWxfZGF0YShlbnRfc3JjKSk7CisrCWlmIChkaXNjYXJkX2luaXRpYWxfZGF0YShlbnRfc3JjLCAmYm9vdHN0cmFwKSAhPSAwKSB7CisrCQltZXNzYWdlKExPR19FUlJ8TE9HX0lORk8sICJSZWFkIGZhaWx1cmUgaW4gJXMgZHVyaW5nIGJvb3RzdHJhcFxuIixlbnRfc3JjLT5ybmdfbmFtZSk7CisrCQlyZXR1cm4gMTsKKysJfQorKwlmaXBzX2luaXQoZW50X3NyYy0+Zmlwc2N0eCwgYm9vdHN0cmFwKTsKKyAJcmV0dXJuIDA7CisgfQorIAorLS0tIGEvcm5ndGVzdC5jCisrKysgYi9ybmd0ZXN0LmMKK0BAIC0zMzUsNiArMzM1LDcgQEAgc3RhdGljIGludCBkaXNjYXJkX2luaXRpYWxfZGF0YSh2b2lkKQorIAorIAlyZXR1cm4gdGVtcGJ1ZlswXSB8ICh0ZW1wYnVmWzFdIDw8IDgpIHwKKyAJCSh0ZW1wYnVmWzJdIDw8IDE2KSB8ICh0ZW1wYnVmWzNdIDw8IDI0KTsKKysKKyB9CisgCisgc3RhdGljIHZvaWQgZG9fcm5nX2ZpcHNfdGVzdF9sb29wKCB2b2lkICkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzXzUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29sc181LmJiCmluZGV4IDRhNjZiZWQuLmIzYzlmZDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzXzUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHNfNS5iYgpAQCAtNyw2ICs3LDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLWFyZ3VtZW50LXRvLWNvbnRyb2wtdGhlLWxpYmFyZ3AtZGVwZW5kZW5jeS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly91bmRlcnF1b3RlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3JuZy10b29scy01LWZpeC10ZXh0cmVscy1vbi1QSUMteDg2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlYWRfZXJyb3JfbXNnLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2luaXQgXAogICAgICAgICAgICBmaWxlOi8vZGVmYXVsdCBcCiAgICAgICAgICAgIGZpbGU6Ly9ybmdkLnNlcnZpY2UgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NlcmYvc2VyZi9ub3JwYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NlcmYvc2VyZi9ub3JwYXRoLnBhdGNoCmluZGV4IDM4MGY1ZDAuLmMzOTI0NDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zZXJmL3NlcmYvbm9ycGF0aC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2VyZi9zZXJmL25vcnBhdGgucGF0Y2gKQEAgLTUsMTEgKzUsMTEgQEAKIAogUlAgMjAxNC83LzE3CiAKLUluZGV4OiBzZXJmLTEuMy42L1NDb25zdHJ1Y3QKK0luZGV4OiBzZXJmLTEuMy45L1NDb25zdHJ1Y3QKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzZXJmLTEuMy42Lm9yaWcvU0NvbnN0cnVjdAkyMDE0LTA3LTE3IDE5OjU3OjU3LjcyNDM4OTE1MCArMDAwMAotKysrIHNlcmYtMS4zLjYvU0NvbnN0cnVjdAkyMDE0LTA3LTE3IDIwOjA0OjIxLjc4NDM5OTYxNiArMDAwMAotQEAgLTIxOCw4ICsyMTgsNyBAQAorLS0tIHNlcmYtMS4zLjkub3JpZy9TQ29uc3RydWN0CisrKysgc2VyZi0xLjMuOS9TQ29uc3RydWN0CitAQCAtMjI0LDggKzIyNCw3IEBAIGlmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgogIGVsc2U6CiAgICBMSUJOQU1FU1RBVElDID0gJ3NlcmYtJHtNQUpPUn0nCiAgCkBAIC0xNyw5ICsxNyw5IEBACiAtICAgICAgICAgICBQREI9JyR7VEFSR0VULmZpbGViYXNlfS5wZGInKQogK2Vudi5BcHBlbmQoUERCPScke1RBUkdFVC5maWxlYmFzZX0ucGRiJykKICAKLSAjZm9yIGkgaW4gZW52OgotICMgICAgcHJpbnQoc3RyKGVudltpXSkpCi1AQCAtMzcxLDEyICszNzAsNiBAQAorIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAjICBsaW5rZmxhZ3MuYXBwZW5kKCctV2wsLWluc3RhbGxfbmFtZSxAZXhlY3V0YWJsZV9wYXRoLyVzLmR5bGliJyAlIChMSUJOQU1FLCkpCitAQCAtMzg1LDEyICszODQsNiBAQCBpZiBnc3NhcGkgYW5kIENBTExPVVRfT0tBWToKICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgIGVudi5BcHBlbmQoQ1BQREVGSU5FUz1bJ1NFUkZfSEFWRV9TU1BJJ10pCiAgCkBAIC0zMiw4ICszMiw4IEBACiAgIyBTZXQgdXAgdGhlIGNvbnN0cnVjdGlvbiBvZiBzZXJmLSoucGMKICBwa2djb25maWcgPSBlbnYuVGV4dGZpbGUoJ3NlcmYtJWQucGMnICUgKE1BSk9SLCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudi5GaWxlKCdidWlsZC9zZXJmLnBjLmluJyksCi1AQCAtNDQ2LDcgKzQzOSw2IEBACi0gICAgICAgICAgICAgICAgICAgICAgICAgICBFTlY9eydQQVRIJyA6IG9zLmVudmlyb25bJ1BBVEgnXX0pKQorQEAgLTQ2MSw3ICs0NTQsNiBAQCBlbHNlOgorICAgVEVTVF9FWEVTID0gWyBvcy5wYXRoLmpvaW4oJ3Rlc3QnLCAnJXMnICUgKHByb2cpKSBmb3IgcHJvZyBpbiBURVNUX1BST0dSQU1TIF0KICAKICAjIEZpbmQgdGhlIChkeW5hbWljKSBsaWJyYXJ5IGluIHRoaXMgZGlyZWN0b3J5CiAtdGVudi5SZXBsYWNlKFJQQVRIPXRoaXNkaXIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvL2luc3RhbGwtZGF0YS1ob29rLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby9pbnN0YWxsLWRhdGEtaG9vay5wYXRjaAppbmRleCAzYzlmMWVhLi4yNjJmZjc1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvL2luc3RhbGwtZGF0YS1ob29rLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm8vaW5zdGFsbC1kYXRhLWhvb2sucGF0Y2gKQEAgLTgsMTYgKzgsMTggQEAKIAogU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8anNsYXRlckB3aW5kcml2ZXIuY29tPgogCi0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC00NCw3ICs0NCw5IEBAICQocGtnY29uZmlnX0RBVEEpOiBjb25maWcuc3RhdHVzCi0gQElOVExUT09MX1hNTF9SVUxFQAotIEBJTlRMVE9PTF9ERVNLVE9QX1JVTEVACitJbmRleDogc2hhcmVkLW1pbWUtaW5mby0xLjkvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzaGFyZWQtbWltZS1pbmZvLTEuOS5vcmlnL01ha2VmaWxlLmFtCisrKysgc2hhcmVkLW1pbWUtaW5mby0xLjkvTWFrZWZpbGUuYW0KK0BAIC01MCw3ICs1MCw5IEBAIGVsc2UKKyAgIHVwZGF0ZV9taW1lX2RhdGFiYXNlPSIkKHRvcF9idWlsZGRpcikvdXBkYXRlLW1pbWUtZGF0YWJhc2UkKEVYRUVYVCkiCisgZW5kaWYKICAKIC1pbnN0YWxsLWRhdGEtaG9vazogaW5zdGFsbC1iaW5QUk9HUkFNUwogKyMgZG8gTk9UIG1ha2UgdGhpcyBkZXBlbmRlbnQgb24gYW55dGhpbmchCiArIwogK2luc3RhbGwtZGF0YS1ob29rOgogIGlmIEVOQUJMRV9VUERBVEVfTUlNRURCCi0gCSQoREVTVERJUikiJChiaW5kaXIpL3VwZGF0ZS1taW1lLWRhdGFiYXNlIiAtViAiJChERVNURElSKSQoZGF0YWRpcikvbWltZSIKKyAJJCh1cGRhdGVfbWltZV9kYXRhYmFzZSkgLVYgIiQoREVTVERJUikkKGRhdGFkaXIpL21pbWUiCiAgZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm8vcGFyYWxsZWxtYWtlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby9wYXJhbGxlbG1ha2UucGF0Y2gKaW5kZXggODRjNGQwMy4uZmVhMzRhNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby9wYXJhbGxlbG1ha2UucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby9wYXJhbGxlbG1ha2UucGF0Y2gKQEAgLTExLDE3ICsxMSwxNyBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBDb25zdGFudGluIE11c2NhIDxjb25zdGFudGlueC5tdXNjYUBpbnRlbC5jb20+CiAKLUluZGV4OiBzaGFyZWQtbWltZS1pbmZvLTEuMC9NYWtlZmlsZS5hbQorSW5kZXg6IHNoYXJlZC1taW1lLWluZm8tMS45L01ha2VmaWxlLmFtCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc2hhcmVkLW1pbWUtaW5mby0xLjAub3JpZy9NYWtlZmlsZS5hbQotKysrIHNoYXJlZC1taW1lLWluZm8tMS4wL01ha2VmaWxlLmFtCistLS0gc2hhcmVkLW1pbWUtaW5mby0xLjkub3JpZy9NYWtlZmlsZS5hbQorKysrIHNoYXJlZC1taW1lLWluZm8tMS45L01ha2VmaWxlLmFtCiBAQCAtMSw1ICsxLDMgQEAKIC1TVUJESVJTPS4gcG8KIC0KICBBTV9DUFBGTEFHUyA9ICQoQUxMX0NGTEFHUykKICAKICBwYWNrYWdlc2RpciA9ICQoZGF0YWRpcikvbWltZS9wYWNrYWdlcwotQEAgLTcyLDggKzcwLDcgQEAgdW5pbnN0YWxsLWhvb2s6CitAQCAtODEsOCArNzksNyBAQCBlbmRpZgogIAogIGFsbDogJChkZWZhdWx0bWFrZWRlcHMpCiAgCkBAIC0yOSw1ICsyOSw1IEBACiAtCSQoQU1fVl9HRU4pICQoTUFLRSkgLUMgcG8gc2hhcmVkLW1pbWUtaW5mby5wb3QKICtjcmVhdGUtcG90OiBwbwogIAotIGNoZWNrOiBjcmVhdGUtcG90IGZyZWVkZXNrdG9wLm9yZy54bWwgdXBkYXRlLW1pbWUtZGF0YWJhc2UgY2hlY2stdHJhbnNsYXRpb25zCi0gCWlmIHRlc3QgLWUgJCh0b3BfYnVpbGRkaXIpL2ZyZWVkZXNrdG9wLm9yZy54bWw7IHRoZW4gXAorIGxvY2FsLXRlc3Q6IGNyZWF0ZS1wb3QgZnJlZWRlc2t0b3Aub3JnLnhtbCB1cGRhdGUtbWltZS1kYXRhYmFzZSQoRVhFRVhUKQorIGlmIENST1NTX0NPTVBJTElORwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mb18xLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvXzEuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ5ZDk5OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvXzEuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcmVxdWlyZSBzaGFyZWQtbWltZS1pbmZvLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vcGFyYWxsZWxtYWtlLnBhdGNoIFwKLQkgICAgZmlsZTovL2luc3RhbGwtZGF0YS1ob29rLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjZkY2FkY2U3NjQ2MDU1NTJmYzk1NjU2M2VmYTA1OGMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmFmNTVlZjFhMDMxOTgwNWI3NGFiNDBkMzMxYTM5NjJjOTA1NDc3ZDc2YzA4NmY0OWUzNGRjOTYzNjM1ODllOSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm9fMS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mb18xLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjliMjczZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm9fMS45LmJiCkBAIC0wLDAgKzEsNyBAQAorcmVxdWlyZSBzaGFyZWQtbWltZS1pbmZvLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vcGFyYWxsZWxtYWtlLnBhdGNoIFwKKwkgICAgZmlsZTovL2luc3RhbGwtZGF0YS1ob29rLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDUxMDM4ODliOTEyNDI4NTBhYTQ3ZjA5MzI1ZTc5OGIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWMwMTMzZWM0ZTIyOGU0MWJkZjUyZjcyNmQyNzFhMmQ4MjE0OTljMmFiOTdhZmQzYWEzZDZjZjQzZWZjZGM4MyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvZmlsZXMvc3FsaXRlMy1maXgtQ1ZFLTIwMTctMTM2ODUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL2ZpbGVzL3NxbGl0ZTMtZml4LUNWRS0yMDE3LTEzNjg1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYWM0MjhjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvZmlsZXMvc3FsaXRlMy1maXgtQ1ZFLTIwMTctMTM2ODUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1GaXggQ1ZFLTIwMTctMTM2ODUKLQotVGhlIGR1bXBfY2FsbGJhY2sgZnVuY3Rpb24gaW4gU1FMaXRlIDMuMjAuMCBhbGxvd3MgcmVtb3RlIGF0dGFja2VycyB0bwotY2F1c2UgYSBkZW5pYWwgb2Ygc2VydmljZSAoRVhDX0JBRF9BQ0NFU1MgYW5kIGFwcGxpY2F0aW9uIGNyYXNoKSB2aWEgYQotY3JhZnRlZCBmaWxlLgotCi1SZWZlcmVuY2VzOgotaHR0cHM6Ly9zcWxpdGUub3JnL3NyYy9pbmZvLzAyZjBmNGM1NGYyODE5YjMKLWh0dHA6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9zcWxpdGUtdXNlcnMlNDBtYWlsaW5nbGlzdHMuc3FsaXRlLm9yZy9tc2cxMDUzMTQuaHRtbAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3NxbGl0ZS5vcmcvc3JjL2luZm8vY2YwZDM3MTVjYWFjOTE0OV0KLQotQ1ZFOiBDVkUtMjAxNy0xMzY4NQotCi1TaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KLQotSW5kZXg6IHNyYy9zaGVsbC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzcmMvc2hlbGwuYwotKysrIHNyYy9zaGVsbC5jCi1AQCAtMjY1NywxMCArMjY1NywxMSBAQAotICAgaW50ICphaVR5cGUgICAgICAvKiBDb2x1bW4gdHlwZXMgKi8KLSApewotICAgaW50IGk7Ci0gICBTaGVsbFN0YXRlICpwID0gKFNoZWxsU3RhdGUqKXBBcmc7Ci0gCi0rICBpZiggYXpBcmc9PTAgKSByZXR1cm4gMDsKLSAgIHN3aXRjaCggcC0+Y01vZGUgKXsKLSAgICAgY2FzZSBNT0RFX0xpbmU6IHsKLSAgICAgICBpbnQgdyA9IDU7Ci0gICAgICAgaWYoIGF6QXJnPT0wICkgYnJlYWs7Ci0gICAgICAgZm9yKGk9MDsgaTxuQXJnOyBpKyspewotQEAgLTMwMDcsMTAgKzMwMDgsMTEgQEAKLSAqLwotIHN0YXRpYyBpbnQgY2FwdHVyZU91dHB1dENhbGxiYWNrKHZvaWQgKnBBcmcsIGludCBuQXJnLCBjaGFyICoqYXpBcmcsIGNoYXIgKipheil7Ci0gICBTaGVsbFRleHQgKnAgPSAoU2hlbGxUZXh0KilwQXJnOwotICAgaW50IGk7Ci0gICBVTlVTRURfUEFSQU1FVEVSKGF6KTsKLSsgIGlmKCBhekFyZz09MCApIHJldHVybiAwOwotICAgaWYoIHAtPm4gKSBhcHBlbmRUZXh0KHAsICJ8IiwgMCk7Ci0gICBmb3IoaT0wOyBpPG5Bcmc7IGkrKyl7Ci0gICAgIGlmKCBpICkgYXBwZW5kVGV4dChwLCAiLCIsIDApOwotICAgICBpZiggYXpBcmdbaV0gKSBhcHBlbmRUZXh0KHAsIGF6QXJnW2ldLCAwKTsKLSAgIH0KLUBAIC0zODg4LDExICszODkwLDExIEBACi0gICBjb25zdCBjaGFyICp6VHlwZTsKLSAgIGNvbnN0IGNoYXIgKnpTcWw7Ci0gICBTaGVsbFN0YXRlICpwID0gKFNoZWxsU3RhdGUgKilwQXJnOwotIAotICAgVU5VU0VEX1BBUkFNRVRFUihhek5vdFVzZWQpOwotLSAgaWYoIG5BcmchPTMgKSByZXR1cm4gMTsKLSsgIGlmKCBuQXJnIT0zIHx8IGF6QXJnPT0wICkgcmV0dXJuIDA7Ci0gICB6VGFibGUgPSBhekFyZ1swXTsKLSAgIHpUeXBlID0gYXpBcmdbMV07Ci0gICB6U3FsID0gYXpBcmdbMl07Ci0gCi0gICBpZiggc3RyY21wKHpUYWJsZSwgInNxbGl0ZV9zZXF1ZW5jZSIpPT0wICl7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4yMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTUwODI1OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4yMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotcmVxdWlyZSBzcWxpdGUzLmluYwotCi1MSUNFTlNFID0gIlBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3FsaXRlMy5oO2VuZGxpbmU9MTE7bWQ1PTc4NmQzZGM1ODFlZmYwM2Y0ZmQ5ZTRhNzdlZDAwYzY2IgotCi1TUkNfVVJJID0gIlwKLSAgaHR0cDovL3d3dy5zcWxpdGUub3JnLzIwMTcvc3FsaXRlLWF1dG9jb25mLSR7U1FMSVRFX1BWfS50YXIuZ3ogXAotICBmaWxlOi8vc3FsaXRlMy1maXgtQ1ZFLTIwMTctMTM2ODUucGF0Y2ggXAotICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiZTI2MmEyOGI3M2NjMzMwZTdlODM1MjBjOGNlMTRlNGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzgxNGM2ZjYyOWZmOTM5NjhiMmIzN2E3MDQ5N2NmZTk4YjM2NmJmNTg3YTIyNjFhNTZhNWY3NTBhZjZhZTZhMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlM18zLjIyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4yMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmODg2NTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4yMi4wLmJiCkBAIC0wLDAgKzEsMTAgQEAKK3JlcXVpcmUgc3FsaXRlMy5pbmMKKworTElDRU5TRSA9ICJQRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NxbGl0ZTMuaDtlbmRsaW5lPTExO21kNT03ODZkM2RjNTgxZWZmMDNmNGZkOWU0YTc3ZWQwMGM2NiIKKworU1JDX1VSSSA9ICJcCisgIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy8yMDE4L3NxbGl0ZS1hdXRvY29uZi0ke1NRTElURV9QVn0udGFyLmd6IFwKKyAgIgorU1JDX1VSSVttZDVzdW1dID0gIjk2YjU2NDhkNTQyZThhZmE2YWI3ZmZiOGRiOGRkYzNkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI4MjRhYjEyMzhiNzA2YmM2NjEyNzMyMGFmYmRmZmIwOTYzNjExMzBlMjMyOTFmMjY5MjhhMDI3Yjg4NWM2MTIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjQ4LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjQ4LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3MjA4NDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC40OC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotU1VNTUFSWSA9ICJWaXJ0dWFsIHRlcm1pbmFsIGVtdWxhdG9yIEdUSysgd2lkZ2V0IGxpYnJhcnkiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2J1Z2xpc3QuY2dpP3Byb2R1Y3Q9dnRlIgotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi1ERVBFTkRTID0gImdsaWItMi4wIGd0ayszIGxpYnBjcmUyIGludGx0b29sLW5hdGl2ZSBsaWJ4bWwyLW5hdGl2ZSBncGVyZi1uYXRpdmUiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1pbmhlcml0IGdub21lYmFzZSBndGstZG9jIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLSMgdmFwaWdlbi5tNCBpcyByZXF1aXJlZCB3aGVuIHZhbGEgaXMgbm90IHByZXNlbnQgKGJ1dCB0aGUgb25lIGZyb20gdmFsYSBzaG91bGQgYmUgdXNlZCBub3JtYWxseSkKLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLURvbi10LWVuYWJsZS1zdGFjay1wcm90ZWN0aW9uLWJ5LWRlZmF1bHQucGF0Y2ggXAotICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndmFsYScsICcnLCAnZmlsZTovLzAwMDEtQWRkLW00LXZhcGlnZW4ubTQucGF0Y2gnLCBkKSB9IFwKLSAgICAgICAgICAgICIKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImIzMDA2NzVhYzVmMjY5YWE2ZWI0OGZlODlhMGQ3MjZkIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYTNhOWZiMTgyNzQwYjM5MmE0NWNkM2Y0NmZhNjFhOTg1ZjY4YmI2YjE4MTdiNTJkYWVjMjIwMzRjNDYxNThjMyIKLQotQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCi0KLSMgSW5zdGVhZCBvZiAiaW5oZXJpdCB2YWxhIiB3ZSBkbyB0aGUgcmVsZXZhbnQgc2V0dGluZ3MgaGVyZSBzbyB3ZSBjYW4KLSMgc2V0IERFUEVORFMgYmFzZWQgb24gUEFDS0FHRUNPTkZJRy4KLQotIyBPdXIgcGF0Y2hlZCB2ZXJzaW9uIG9mIFZhbGEgbG9va3MgaW4gU1RBR0lOR19EQVRBRElSIGZvciAudmFwaSBmaWxlcwotZXhwb3J0IFNUQUdJTkdfREFUQURJUgotIyBVcHN0cmVhbSBWYWxhID49IDAuMTEgbG9va3MgaW4gWERHX0RBVEFfRElSUyBmb3IgLnZhcGkgZmlsZXMKLWV4cG9ydCBYREdfREFUQV9ESVJTID0gIiR7U1RBR0lOR19EQVRBRElSfSIKLQotIyBIZWxwIGctaXItc2Nhbm5lciBmaW5kIHRoZSAuc28gZm9yIGxpbmtpbmcKLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICAgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vc3JjLy5saWJzIgotfQotCi0jIFBhY2thZ2UgYWRkaXRpb25hbCBmaWxlcwotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L3ZhbGEvdmFwaS8qIgotCi1QQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIgotUEFDS0FHRUNPTkZJR1t2YWxhXSA9ICItLWVuYWJsZS12YWxhLC0tZGlzYWJsZS12YWxhLHZhbGEtbmF0aXZlIHZhbGEiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscywtLXdpdGhvdXQtZ251dGxzLGdudXRscyIKLQotQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXRlc3QtYXBwbGljYXRpb24iCi0KLSMgbGlidG9vbCBhZGRzICItbm9zdGRsaWIiIHdoZW4gZysrIGlzIHVzZWQuIFRoaXMgYnJlYWtzIFBJRSBidWlsZHMuCi0jIFVzZSBsaWJ0b29sLWNyb3NzICh3aGljaCBoYXMgYSBoYWNrIHRvIHByZXZlbnQgdGhhdCkgaW5zdGVhZC4KLUVYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAiTElCVE9PTD0ke1NUQUdJTkdfQklORElSX0NST1NTfS8ke0hPU1RfU1lTfS1saWJ0b29sIgotCi1QQUNLQUdFUyA9KyAibGlidnRlIgotRklMRVNfbGlidnRlID0gIiR7bGliZGlyfS8qLnNvLiogJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0xLjAvKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuNTAuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuNTAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjllZTMzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC41MC4yLmJiCkBAIC0wLDAgKzEsNDggQEAKK1NVTU1BUlkgPSAiVmlydHVhbCB0ZXJtaW5hbCBlbXVsYXRvciBHVEsrIHdpZGdldCBsaWJyYXJ5IgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9idWdsaXN0LmNnaT9wcm9kdWN0PXZ0ZSIKK0xJQ0VOU0UgPSAiTEdQTHYyLjErIgorREVQRU5EUyA9ICJnbGliLTIuMCBndGsrMyBsaWJwY3JlMiBpbnRsdG9vbC1uYXRpdmUgbGlieG1sMi1uYXRpdmUgZ3BlcmYtbmF0aXZlIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCisjIHZhcGlnZW4ubTQgaXMgcmVxdWlyZWQgd2hlbiB2YWxhIGlzIG5vdCBwcmVzZW50IChidXQgdGhlIG9uZSBmcm9tIHZhbGEgc2hvdWxkIGJlIHVzZWQgbm9ybWFsbHkpCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1Eb24tdC1lbmFibGUtc3RhY2stcHJvdGVjdGlvbi1ieS1kZWZhdWx0LnBhdGNoIFwKKyAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3ZhbGEnLCAnJywgJ2ZpbGU6Ly8wMDAxLUFkZC1tNC12YXBpZ2VuLm00LnBhdGNoJywgZCkgfSBcCisgICAgICAgICAgICAiCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIxOTEyY2ZkMWQ5Y2RkMzBjZWJlYjkwODUwN2FjYWRjNSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjc5ZGQzMTZiZmFmZjQ4ZjJmYjc0ZDA2NmJhYWUwZDgzMGUxZjQ0NDM2Nzk2ZmU0MTBhNTcyOTdlNWM1ZjA5Y2YiCisKK0FOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEszRElTVFJPRkVBVFVSRVN9IgorCisjIEluc3RlYWQgb2YgImluaGVyaXQgdmFsYSIgd2UgZG8gdGhlIHJlbGV2YW50IHNldHRpbmdzIGhlcmUgc28gd2UgY2FuCisjIHNldCBERVBFTkRTIGJhc2VkIG9uIFBBQ0tBR0VDT05GSUcuCisKKyMgT3VyIHBhdGNoZWQgdmVyc2lvbiBvZiBWYWxhIGxvb2tzIGluIFNUQUdJTkdfREFUQURJUiBmb3IgLnZhcGkgZmlsZXMKK2V4cG9ydCBTVEFHSU5HX0RBVEFESVIKKyMgVXBzdHJlYW0gVmFsYSA+PSAwLjExIGxvb2tzIGluIFhER19EQVRBX0RJUlMgZm9yIC52YXBpIGZpbGVzCitleHBvcnQgWERHX0RBVEFfRElSUyA9ICIke1NUQUdJTkdfREFUQURJUn0iCisKKyMgSGVscCBnLWlyLXNjYW5uZXIgZmluZCB0aGUgLnNvIGZvciBsaW5raW5nCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L3NyYy8ubGlicyIKK30KKworIyBQYWNrYWdlIGFkZGl0aW9uYWwgZmlsZXMKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS92YWxhL3ZhcGkvKiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyIKK1BBQ0tBR0VDT05GSUdbdmFsYV0gPSAiLS1lbmFibGUtdmFsYSwtLWRpc2FibGUtdmFsYSx2YWxhLW5hdGl2ZSB2YWxhIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsLS13aXRob3V0LWdudXRscyxnbnV0bHMiCisKK0NGTEFHUyArPSAiLURfR05VX1NPVVJDRSIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS10ZXN0LWFwcGxpY2F0aW9uIgorCisjIGxpYnRvb2wgYWRkcyAiLW5vc3RkbGliIiB3aGVuIGcrKyBpcyB1c2VkLiBUaGlzIGJyZWFrcyBQSUUgYnVpbGRzLgorIyBVc2UgbGlidG9vbC1jcm9zcyAod2hpY2ggaGFzIGEgaGFjayB0byBwcmV2ZW50IHRoYXQpIGluc3RlYWQuCitFWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gIkxJQlRPT0w9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vJHtIT1NUX1NZU30tbGlidG9vbCIKKworUEFDS0FHRVMgPSsgImxpYnZ0ZSIKK0ZJTEVTX2xpYnZ0ZSA9ICIke2xpYmRpcn0vKi5zby4qICR7bGliZGlyfS9naXJlcG9zaXRvcnktMS4wLyoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2FybS1saW51eCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvYXJtLWxpbnV4CmluZGV4IGU2YjlhNzIuLmZiM2M4MWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvYXJtLWxpbnV4CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvYXJtLWxpbnV4CkBAIC0zLDcgKzMsNiBAQAogYWNfY3Zfc2l6ZW9mX2NoYXI9JHthY19jdl9zaXplb2ZfY2hhcj0xfQogYWNfY3Zfc2l6ZW9mX3djaGFyX3Q9JHthY19jdl9zaXplb2Zfd2NoYXJfdD0xfQogYWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX2NoYXI9JHthY19jdl9zaXplb2ZfdW5zaWduZWRfY2hhcj0xfQotYWNfY3Zfc2l6ZW9mX2Jvb2w9JHthY19jdl9zaXplb2ZfYm9vbD0xfQogYWNfY3Zfc2l6ZW9mX2NoYXJfcD0ke2FjX2N2X3NpemVvZl9pbnRfcD00fQogYWNfY3Zfc2l6ZW9mX2ludD0ke2FjX2N2X3NpemVvZl9pbnQ9NH0KIGFjX2N2X3NpemVvZl9pbnRfcD0ke2FjX2N2X3NpemVvZl9pbnRfcD00fQpAQCAtMTQyLDcgKzE0MSw2IEBACiBjbGFtYXZfYXZfZnVuY193b3JraW5nX3NucHJpbnRmX2xvbmc9JHtjbGFtYXZfYXZfZnVuY193b3JraW5nX3NucHJpbnRmX2xvbmc9eWVzfQogY2xhbWF2X2F2X2hhdmVfaW5fcG9ydF90PSR7Y2xhbWF2X2F2X2hhdmVfaW5fcG9ydF90PXllc30KIGNsYW1hdl9hdl9oYXZlX2luX2FkZHJfdD0ke2NsYW1hdl9hdl9oYXZlX2luX2FkZHJfdD15ZXN9Ci1hY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPSR7YWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD15ZXN9CiAKICNkYnVzCiBhY19jdl9oYXZlX2Fic3RyYWN0X3NvY2tldHM9JHthY19jdl9oYXZlX2Fic3RyYWN0X3NvY2tldHM9eWVzfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9jb21tb24gYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2NvbW1vbgppbmRleCA1Y2NjMTRmLi5mZjU1MjMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2NvbW1vbgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2NvbW1vbgpAQCAtMTgsNCArMTgsNCBAQAogIyBweXRob246IGRlYWN0aXZhdGUgYSBydW50aW1lIGNoZWNrIGZvciBpcHY2LXN1cHBvcnQgaW4gcHl0aG9uID49Mi43LjEgdGhhdCBmYWlscyB3aGVuIGNyb3NzLWNvbXBpbGluZwogYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm89bm8KIAotYWNfY3ZfcGF0aF9TRUQ9c2VkCithY19jdl9wYXRoX1NFRD0ke2FjX2N2X3BhdGhfU0VEPXNlZH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvY29tbW9uLWxpbnV4IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9jb21tb24tbGludXgKaW5kZXggMjk1ODcxNi4uNzFlYzk2MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9jb21tb24tbGludXgKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9jb21tb24tbGludXgKQEAgLTQ4LDYgKzQ4LDcgQEAKIAogIyBjb3JldXRpbHMKIGdsX2N2X2Z1bmNfZnN0YXRhdF96ZXJvX2ZsYWc9JHtnbF9jdl9mdW5jX2ZzdGF0YXRfemVyb19mbGFnPXllc30KK2dsX2N2X2hhdmVfcHJvY191cHRpbWU9JHtnbF9jdl9oYXZlX3Byb2NfdXB0aW1lPXllc30KIAogIyBteXNxbAogYWNfY3Zfc3lzX3Jlc3RhcnRhYmxlX3N5c2NhbGxzPSR7YWNfY3Zfc3lzX3Jlc3RhcnRhYmxlX3N5c2NhbGxzPXllc30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvY29tbW9uLW11c2wgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2NvbW1vbi1tdXNsCmluZGV4IDI2ZmMxMDMuLjFiNGZjMzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvY29tbW9uLW11c2wKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9jb21tb24tbXVzbApAQCAtMTIsNiArMTIsNyBAQAogYWNfY3ZfZnVuY19wb3NpeF9nZXRwd3VpZF9yPSR7YWNfY3ZfZnVuY19wb3NpeF9nZXRwd3VpZF9yPXllc30KIGFjX2N2X2Z1bmNfcG9zaXhfZ2V0Z3JnaWRfcj0ke2FjX2N2X2Z1bmNfcG9zaXhfZ2V0Z3JnaWRfcj15ZXN9CiBhY19jdl9mdW5jX2dldGFkZHJpbmZvPSR7YWNfY3ZfZnVuY19nZXRhZGRyaW5mbz15ZXN9CithY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPSR7YWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD15ZXN9CiAKICMgZ2xpYgogZ2xpYl9jdl9zdHJsY3B5PSR7Z2xpYl9jdl9zdHJsY3B5PW5vfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9peDg2LWNvbW1vbiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvaXg4Ni1jb21tb24KaW5kZXggNGZiZjU4Yy4uYzVlMzU0YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9peDg2LWNvbW1vbgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2l4ODYtY29tbW9uCkBAIC01Myw3ICs1Myw2IEBACiBjbGFtYXZfYXZfZnVuY193b3JraW5nX3NucHJpbnRmX2xvbmc9JHtjbGFtYXZfYXZfZnVuY193b3JraW5nX3NucHJpbnRmX2xvbmc9eWVzfQogY2xhbWF2X2F2X2hhdmVfaW5fcG9ydF90PSR7Y2xhbWF2X2F2X2hhdmVfaW5fcG9ydF90PXllc30KIGNsYW1hdl9hdl9oYXZlX2luX2FkZHJfdD0ke2NsYW1hdl9hdl9oYXZlX2luX2FkZHJfdD15ZXN9Ci1hY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPSR7YWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD15ZXN9CiAKICMgY3ZzCiBjdnNfY3ZfZnVuY19wcmludGZfcHRyPSR7Y3ZzX2N2X2Z1bmNfcHJpbnRmX3B0cj15ZXN9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL21pY3JvYmxhemUtbGludXggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL21pY3JvYmxhemUtbGludXgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZhNDBjNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbWljcm9ibGF6ZS1saW51eApAQCAtMCwwICsxLDU0IEBACisjIGdlbmVyYWwKK2FjX2N2X3ZhX3ZhbF9jb3B5PSR7YWNfY3ZfdmFfdmFsX2NvcHk9eWVzfQorYWNfY3Zfc2l6ZW9mX19faW50NjQ9JHthY19jdl9zaXplb2ZfX19pbnQ2ND0wfQorYWNfY3Zfc2l6ZW9mX2NoYXI9JHthY19jdl9zaXplb2ZfY2hhcj0xfQorYWNfY3Zfc2l6ZW9mX2ludD0ke2FjX2N2X3NpemVvZl9pbnQ9NH0KK2FjX2N2X3NpemVvZl9sb25nPSR7YWNfY3Zfc2l6ZW9mX2xvbmc9NH0KK2FjX2N2X3NpemVvZl9sb25nX2ludD0ke2FjX2N2X3NpemVvZl9sb25nX2ludD00fQorYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZz0ke2FjX2N2X3NpemVvZl9sb25nX2xvbmc9OH0KK2FjX2N2X3NpemVvZl9zaG9ydD0ke2FjX2N2X3NpemVvZl9zaG9ydD0yfQorYWNfY3Zfc2l6ZW9mX3Nob3J0X2ludD0ke2FjX2N2X3NpemVvZl9zaG9ydF9pbnQ9Mn0KK2FjX2N2X3NpemVvZl9zaXplX3Q9JHthY19jdl9zaXplb2Zfc2l6ZV90PTR9CithY19jdl9zaXplb2Zfc3NpemVfdD0ke2FjX2N2X3NpemVvZl9zaXplX3Q9NH0KK2FjX2N2X3NpemVvZl92b2lkX3A9JHthY19jdl9zaXplb2Zfdm9pZF9wPTR9CithY19jdl9zaXplb2ZfZmxvYXQ9JHthY19jdl9zaXplb2ZfZmxvYXQ9NH0KK2FjX2N2X3NpemVvZl9kb3VibGU9JHthY19jdl9zaXplb2ZfZG91YmxlPTh9CithY19jdl9zaXplb2ZfbG9uZ19kb3VibGU9JHthY19jdl9zaXplb2ZfbG9uZ19kb3VibGU9OH0KK2FjX2N2X3NpemVvZl91bnNpZ25lZD0ke2FjX2N2X3NpemVvZl91bnNpZ25lZD00fQorYWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX2NoYXI9JHthY19jdl9zaXplb2ZfdW5zaWduZWRfY2hhcj0xfQorYWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX3Nob3J0PSR7YWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX3Nob3J0PTJ9CithY19jdl9zaXplb2ZfdW5zaWduZWRfaW50PSR7YWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX2ludD00fQorYWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX2xvbmc9JHthY19jdl9zaXplb2ZfdW5zaWduZWRfbG9uZz00fQorYWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX2xvbmdfbG9uZz0ke2FjX2N2X3NpemVvZl91bnNpZ25lZF9sb25nX2xvbmc9OH0KK2FjX2N2X3NpemVvZl9zaWduZWRfY2hhcj0ke2FjX2N2X3NpemVvZl9zaWduZWRfY2hhcj0xfQorYWNfY3ZfdWNoYXI9JHthY19jdl91Y2hhcj1ub30KK2FjX2N2X3VpbnQ9JHthY19jdl91aW50PXllc30KK2FjX2N2X3Vsb25nPSR7YWNfY3ZfdWxvbmc9eWVzfQorYWNfY3ZfdXNob3J0PSR7YWNfY3ZfdXNob3J0PXllc30KKworIyBnbGliCitnbGliX2N2X3N0YWNrX2dyb3dzPSR7Z2xpYl9jdl9zdGFja19ncm93cz1ub30KK2dsaWJfY3ZfaGFzX19pbmxpbmU9JHtnbGliX2N2X2hhc19faW5saW5lPXllc30KK2dsaWJfY3ZfaGFzX19pbmxpbmVfXz0ke2dsaWJfY3ZfaGFzX19pbmxpbmVfXz15ZXN9CitnbGliX2N2X2hhc2lubGluZT0ke2dsaWJfY3ZfaGFzaW5saW5lPXllc30KK2dsaWJfY3Zfc2FuZV9yZWFsbG9jPSR7Z2xpYl9jdl9zYW5lX3JlYWxsb2M9eWVzfQorZ2xpYl9jdl91c2NvcmU9JHtnbGliX2N2X3VzY29yZT1ub30KK2dsaWJfY3ZfdmFfY29weT0ke2dsaWJfY3ZfdmFfY29weT15ZXN9CitnbGliX2N2X3ZhX3ZhbF9jb3B5PSR7Z2xpYl9jdl92YV92YWxfY29weT15ZXN9CitnbGliX2N2X19fdmFfY29weT0ke2dsaWJfY3ZfX192YV9jb3B5PXllc30KKworIyBnbGliLTIuMAorZ2xpYl9jdl9sb25nX2xvbmdfZm9ybWF0PSR7Z2xpYl9jdl9sb25nX2xvbmdfZm9ybWF0PWxsfQorYWNfY3ZfYWxpZ25vZl9ndWludDMyPTQKK2FjX2N2X2FsaWdub2ZfZ3VpbnQ2ND04CithY19jdl9hbGlnbm9mX3Vuc2lnbmVkX2xvbmc9NAorZ2xpYl9jdl9zaXplb2ZfZ211dGV4PSR7Z2xpYl9jdl9zaXplb2ZfZ211dGV4PTI0fQorZ2xpYl9jdl9zaXplb2ZfaW50bWF4X3Q9JHtnbGliX2N2X3NpemVvZl9pbnRtYXhfdD04fQorZ2xpYl9jdl9zaXplb2ZfcHRyZGlmZl90PSR7Z2xpYl9jdl9zaXplb2ZfcHRyZGlmZl90PTR9CitnbGliX2N2X3NpemVvZl9zaXplX3Q9JHtnbGliX2N2X3NpemVvZl9zaXplX3Q9NH0KK2dsaWJfY3Zfc2l6ZW9mX3N5c3RlbV90aHJlYWQ9JHtnbGliX2N2X3NpemVvZl9zeXN0ZW1fdGhyZWFkPTR9CitnbGliX2N2X3N5c191c2VfcGlkX25pY2VuZXNzX3N1cnJvZ2F0ZT0ke2dsaWJfY3Zfc3lzX3VzZV9waWRfbmljZW5lc3Nfc3Vycm9nYXRlPXllc30KKworIyBzdGFydHVwLW5vdGlmaWNhdGlvbgorbGZfY3Zfc2FuZV9yZWFsbG9jPXllcworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL25pb3MyLWxpbnV4IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9uaW9zMi1saW51eAppbmRleCA1YmFlNzQ4Li42N2EzZmM4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL25pb3MyLWxpbnV4CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbmlvczItbGludXgKQEAgLTIzMiw3ICsyMzIsNiBAQAogYWNfY3Zfc2l6ZW9mX2NoYXI9JHthY19jdl9zaXplb2ZfY2hhcj0xfQogYWNfY3Zfc2l6ZW9mX3djaGFyX3Q9JHthY19jdl9zaXplb2Zfd2NoYXJfdD0xfQogYWNfY3Zfc2l6ZW9mX3Vuc2lnbmVkX2NoYXI9JHthY19jdl9zaXplb2ZfdW5zaWduZWRfY2hhcj0xfQotYWNfY3Zfc2l6ZW9mX2Jvb2w9JHthY19jdl9zaXplb2ZfYm9vbD0xfQogYWNfY3Zfc2l6ZW9mX2NoYXJfcD0ke2FjX2N2X3NpemVvZl9pbnRfcD00fQogYWNfY3Zfc2l6ZW9mX2ludD0ke2FjX2N2X3NpemVvZl9pbnQ9NH0KIGFjX2N2X3NpemVvZl9pbnRfcD0ke2FjX2N2X3NpemVvZl9pbnRfcD00fQpAQCAtMzcyLDcgKzM3MSw2IEBACiBjbGFtYXZfYXZfZnVuY193b3JraW5nX3NucHJpbnRmX2xvbmc9JHtjbGFtYXZfYXZfZnVuY193b3JraW5nX3NucHJpbnRmX2xvbmc9eWVzfQogY2xhbWF2X2F2X2hhdmVfaW5fcG9ydF90PSR7Y2xhbWF2X2F2X2hhdmVfaW5fcG9ydF90PXllc30KIGNsYW1hdl9hdl9oYXZlX2luX2FkZHJfdD0ke2NsYW1hdl9hdl9oYXZlX2luX2FkZHJfdD15ZXN9Ci1hY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPSR7YWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD15ZXN9CiAKICNkYnVzCiBhY19jdl9oYXZlX2Fic3RyYWN0X3NvY2tldHM9JHthY19jdl9oYXZlX2Fic3RyYWN0X3NvY2tldHM9eWVzfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9wb3dlcnBjMzItbGludXggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3Bvd2VycGMzMi1saW51eAppbmRleCAwNmQ5NjFmLi5mMzdlOTE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3Bvd2VycGMzMi1saW51eAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3Bvd2VycGMzMi1saW51eApAQCAtMSw2ICsxLDUgQEAKIGFjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD1ubwogYWNfY3Zfc2l6ZW9mX19faW50NjQ9JHthY19jdl9zaXplb2ZfX19pbnQ2ND0wfQotYWNfY3Zfc2l6ZW9mX2Jvb2w9JHthY19jdl9zaXplb2ZfYm9vbD0xfQogYWNfY3Zfc2l6ZW9mX2NoYXI9JHthY19jdl9zaXplb2ZfY2hhcj0xfQogYWNfY3Zfc2l6ZW9mX2NoYXJfcD0ke2FjX2N2X3NpemVvZl9jaGFyX3A9NH0KIGFjX2N2X3NpemVvZl9kb3VibGU9JHthY19jdl9zaXplb2ZfZG91YmxlPTh9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3Jpc2N2MzItbGludXggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3Jpc2N2MzItbGludXgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdkZTYyOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvcmlzY3YzMi1saW51eApAQCAtMCwwICsxLDExIEBACisjIGdlbmVyYWwKK2FjX2N2X2FsaWdub2ZfZ3VpbnQzMj00CithY19jdl9hbGlnbm9mX2d1aW50NjQ9OAorYWNfY3ZfYWxpZ25vZl91bnNpZ25lZF9sb25nPTQKKworIyBnbGliLTIuMAorZ2xpYl9jdl9zdGFja19ncm93cz0ke2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9bm99CitnbGliX2N2X3VzY29yZT0ke2dsaWJfY3ZfdXNjb3JlPW5vfQorCisjIHN0YXJ0dXAtbm90aWZpY2F0aW9uCitsZl9jdl9zYW5lX3JlYWxsb2M9JHtsZl9jdl9zYW5lX3JlYWxsb2M9eWVzfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9yaXNjdjY0LWxpbnV4IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9yaXNjdjY0LWxpbnV4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4YmM1ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3Jpc2N2NjQtbGludXgKQEAgLTAsMCArMSwxMSBAQAorIyBnZW5lcmFsCithY19jdl9hbGlnbm9mX2d1aW50MzI9NAorYWNfY3ZfYWxpZ25vZl9ndWludDY0PTgKK2FjX2N2X2FsaWdub2ZfdW5zaWduZWRfbG9uZz04CisKKyMgZ2xpYi0yLjAKK2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9JHtnbGliX2N2X3N0YWNrX2dyb3dzPW5vfQorZ2xpYl9jdl91c2NvcmU9JHtnbGliX2N2X3VzY29yZT1ub30KKworIyBzdGFydHVwLW5vdGlmaWNhdGlvbgorbGZfY3Zfc2FuZV9yZWFsbG9jPSR7bGZfY3Zfc2FuZV9yZWFsbG9jPXllc30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvc2gtY29tbW9uIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9zaC1jb21tb24KaW5kZXggZmM0ZDZhZC4uOTdjOTY5MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9zaC1jb21tb24KKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9zaC1jb21tb24KQEAgLTIyNyw3ICsyMjcsNiBAQAogY2xhbWF2X2F2X2Z1bmNfd29ya2luZ19zbnByaW50Zl9sb25nPSR7Y2xhbWF2X2F2X2Z1bmNfd29ya2luZ19zbnByaW50Zl9sb25nPXllc30KIGNsYW1hdl9hdl9oYXZlX2luX3BvcnRfdD0ke2NsYW1hdl9hdl9oYXZlX2luX3BvcnRfdD15ZXN9CiBjbGFtYXZfYXZfaGF2ZV9pbl9hZGRyX3Q9JHtjbGFtYXZfYXZfaGF2ZV9pbl9hZGRyX3Q9eWVzfQotYWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD0ke2FjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQ9eWVzfQogCiAjIGxpYm5ldCAKIGFjX2N2X2xibF91bmFsaWduZWRfZmFpbD0ke2FjX2N2X2xibF91bmFsaWduZWRfZmFpbD1ub30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2J1aWxkaGlzdG9yeS1kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvYnVpbGRoaXN0b3J5LWRpZmYKaW5kZXggZTc5Y2I3YS4uNzA4MDViMCAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvYnVpbGRoaXN0b3J5LWRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvYnVpbGRoaXN0b3J5LWRpZmYKQEAgLTM4LDcgKzM4LDcgQEAKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYScsICctLXJlcG9ydC1hbGwnLAogICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3JlcG9ydF9hbGwnLAotICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nRmFsc2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlJlcG9ydCBhbGwgY2hhbmdlcywgbm90IGp1c3QgdGhlIGRlZmF1bHQgc2lnbmlmaWNhbnQgb25lcyIpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXMnLCAnLS0tc2lnbmF0dXJlcycsCiAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLApAQCAtNTMsNiArNTMsMTAgQEAKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctZScsICctLWV4Y2x1ZGUtcGF0aCcsCiAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J2FwcGVuZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJFeGNsdWRlIHBhdGggZnJvbSB0aGUgb3V0cHV0IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYycsICctLWNvbG91cicsCisgICAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPSgneWVzJywgJ25vJywgJ2F1dG8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9ImF1dG8iLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iV2hldGhlciB0byBjb2xvdXJpc2UgKGRlZmF1bHRzIHRvIGF1dG8pIikKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdyZXZpc2lvbnMnLAogICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCA9IFsnYnVpbGQtbWludXMtMScsICdIRUFEJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICBuYXJncz0nKicsCkBAIC0xMDcsMTAgKzExMSwxMSBAQAogICAgIGVsaWYgbGVuKGFyZ3MucmV2aXNpb25zKSA9PSAyOgogICAgICAgICBmcm9tcmV2LCB0b3JldiA9IGFyZ3MucmV2aXNpb25zCiAKLSAgICBmcm9tIG9lLmJ1aWxkaGlzdG9yeV9hbmFseXNpcyBpbXBvcnQgcHJvY2Vzc19jaGFuZ2VzCi0KKyAgICBmcm9tIG9lLmJ1aWxkaGlzdG9yeV9hbmFseXNpcyBpbXBvcnQgaW5pdF9jb2xvdXJzLCBwcm9jZXNzX2NoYW5nZXMKICAgICBpbXBvcnQgZ2l0ZGIKIAorICAgIGluaXRfY29sb3Vycyh7InllcyI6IFRydWUsICJubyI6IEZhbHNlLCAiYXV0byI6IHN5cy5zdGRvdXQuaXNhdHR5KCl9W2FyZ3MuY29sb3VyXSkKKwogICAgIHRyeToKICAgICAgICAgY2hhbmdlcyA9IHByb2Nlc3NfY2hhbmdlcyhhcmdzLmJ1aWxkaGlzdG9yeV9kaXIsIGZyb21yZXYsIHRvcmV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MucmVwb3J0X2FsbCwgYXJncy5yZXBvcnRfdmVyLCBhcmdzLnNpZ3MsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jb250cmliL2JidmFycy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvYmJ2YXJzLnB5CmluZGV4IGQ4ZDA1OTQuLjI4NmI1YTkgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvYmJ2YXJzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvYmJ2YXJzLnB5CkBAIC0yMyw2MiArMjMsMzggQEAKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgcmUKIAorIyBTZXQgdXAgc3lzLnBhdGggdG8gbGV0IHVzIGltcG9ydCB0aW5mb2lsCitzY3JpcHRzX3BhdGggPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGgucmVhbHBhdGgoX19maWxlX18pKSkKK2xpYl9wYXRoID0gc2NyaXB0c19wYXRoICsgJy9saWInCitzeXMucGF0aC5pbnNlcnQoMCwgbGliX3BhdGgpCitpbXBvcnQgc2NyaXB0cGF0aAorc2NyaXB0cGF0aC5hZGRfYml0YmFrZV9saWJfcGF0aCgpCitpbXBvcnQgYmIudGluZm9pbAorCiBkZWYgdXNhZ2UoKToKLSAgICBwcmludCgnVXNhZ2U6ICVzIC1kIEZJTEVOQU1FIFstZCBGSUxFTkFNRV0qIC1tIE1FVEFESVIgWy1tIE1BVEFESVJdKicgJSBvcy5wYXRoLmJhc2VuYW1lKHN5cy5hcmd2WzBdKSkKKyAgICBwcmludCgnVXNhZ2U6ICVzIC1kIEZJTEVOQU1FIFstZCBGSUxFTkFNRV0qJyAlIG9zLnBhdGguYmFzZW5hbWUoc3lzLmFyZ3ZbMF0pKQogICAgIHByaW50KCcgIC1kIEZJTEVOQU1FICAgICAgICAgZG9jdW1lbnRhdGlvbiBmaWxlIHRvIHNlYXJjaCcpCiAgICAgcHJpbnQoJyAgLWgsIC0taGVscCAgICAgICAgICBkaXNwbGF5IHRoaXMgaGVscCBhbmQgZXhpdCcpCi0gICAgcHJpbnQoJyAgLW0gTUVUQURJUiAgICAgICAgICBtZXRhIGRpcmVjdG9yeSB0byBzZWFyY2ggZm9yIHJlY2lwZXMnKQogICAgIHByaW50KCcgIC10IEZJTEVOQU1FICAgICAgICAgZG9jdW1lbnRhdGlvbiBjb25maWcgZmlsZSAoZm9yIGRvYyB0YWdzKScpCiAgICAgcHJpbnQoJyAgLVQgICAgICAgICAgICAgICAgICBPbmx5IGRpc3BsYXkgdmFyaWFibGVzIHdpdGggZG9jIHRhZ3MgKHJlcXVpcmVzIC10KScpCiAKLWRlZiByZWNpcGVfYmJ2YXJzKHJlY2lwZSk6Ci0gICAgJycnIFJldHVybiBhIHVuaXF1ZSBzZXQgb2YgZXZlcnkgYmJ2YXIgZW5jb3VudGVyZWQgaW4gdGhlIHJlY2lwZSAnJycKLSAgICBwcm9nID0gcmUuY29tcGlsZSgiW0EtWl9dKyIpCi0gICAgdnNldCA9IHNldCgpCi0gICAgdHJ5OgotICAgICAgICByID0gb3BlbihyZWNpcGUpCi0gICAgZXhjZXB0IElPRXJyb3IgYXMgZXJyOgotICAgICAgICBwcmludCgnV0FSTklORzogRmFpbGVkIHRvIG9wZW4gcmVjaXBlICcsIHJlY2lwZSkKLSAgICAgICAgcHJpbnQoZXJyLmFyZ3NbMV0pCitkZWYgYmJ2YXJfaXNfZG9jdW1lbnRlZCh2YXIsIGRvY3VtZW50ZWRfdmFycyk6CisgICAgJycnIENoZWNrIGlmIHZhcmlhYmxlICh2YXIpIGlzIGluIHRoZSBsaXN0IG9mIGRvY3VtZW50ZWQgdmFyaWFibGVzKGRvY3VtZW50ZWRfdmFycykgJycnCisgICAgaWYgdmFyIGluIGRvY3VtZW50ZWRfdmFyczoKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgIGZvciBsaW5lIGluIHI6Ci0gICAgICAgICMgU3RyaXAgYW55IGNvbW1lbnRzIGZyb20gdGhlIGxpbmUKLSAgICAgICAgbGluZSA9IGxpbmUucnNwbGl0KCcjJylbMF0KLSAgICAgICAgdnNldCA9IHZzZXQudW5pb24oc2V0KHByb2cuZmluZGFsbChsaW5lKSkpCi0gICAgci5jbG9zZSgpCitkZWYgY29sbGVjdF9kb2N1bWVudGVkX3ZhcnMoZG9jZmlsZXMpOgorICAgICcnJyBXYWxrIHRoZSBkb2NmaWxlcyBhbmQgY29sbGVjdCB0aGUgZG9jdW1lbnRlZCB2YXJpYWJsZXMgJycnCisgICAgZG9jdW1lbnRlZF92YXJzID0gW10KKyAgICBwcm9nID0gcmUuY29tcGlsZSgiLiooJHxbXkEtWl9dKTxnbG9zc2VudHJ5IGlkPVwndmFyLSIpCisgICAgdmFyX3Byb2cgPSByZS5jb21waWxlKCc8Z2xvc3NlbnRyeSBpZD1cJ3Zhci0oLiopXCc+JykKKyAgICBmb3IgZCBpbiBkb2NmaWxlczoKKyAgICAgICAgd2l0aCBvcGVuKGQpIGFzIGY6CisgICAgICAgICAgICBkb2N1bWVudGVkX3ZhcnMgKz0gdmFyX3Byb2cuZmluZGFsbChmLnJlYWQoKSkKIAotICAgIGJidmFycyA9IHt9Ci0gICAgZm9yIHYgaW4gdnNldDoKLSAgICAgICAgYmJ2YXJzW3ZdID0gMQotCi0gICAgcmV0dXJuIGJidmFycwotCi1kZWYgY29sbGVjdF9iYnZhcnMobWV0YWRpcik6Ci0gICAgJycnIFdhbGsgdGhlIG1ldGFkaXIgYW5kIGNvbGxlY3QgdGhlIGJidmFycyBmcm9tIGVhY2ggcmVjaXBlIGZvdW5kICcnJwotICAgIGJidmFycyA9IHt9Ci0gICAgZm9yIHJvb3QsZGlycyxmaWxlcyBpbiBvcy53YWxrKG1ldGFkaXIpOgotICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKLSAgICAgICAgICAgIGlmIG5hbWUuZmluZCgiLmJiIikgPj0gMDoKLSAgICAgICAgICAgICAgICBmb3Iga2V5IGluIHJlY2lwZV9iYnZhcnMob3MucGF0aC5qb2luKHJvb3QsbmFtZSkpLmtleXMoKToKLSAgICAgICAgICAgICAgICAgICAgaWYga2V5IGluIGJidmFyczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJidmFyc1trZXldID0gYmJ2YXJzW2tleV0gKyAxCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBiYnZhcnNba2V5XSA9IDEKLSAgICByZXR1cm4gYmJ2YXJzCi0KLWRlZiBiYnZhcl9pc19kb2N1bWVudGVkKHZhciwgZG9jZmlsZXMpOgotICAgIHByb2cgPSByZS5jb21waWxlKCIuKigkfFteQS1aX10pJXMoW15BLVpfXXwkKSIgJSAodmFyKSkKLSAgICBmb3IgZG9jIGluIGRvY2ZpbGVzOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmID0gb3Blbihkb2MpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGVycjoKLSAgICAgICAgICAgIHByaW50KCdXQVJOSU5HOiBGYWlsZWQgdG8gb3BlbiBkb2MgJywgZG9jKQotICAgICAgICAgICAgcHJpbnQoZXJyLmFyZ3NbMV0pCi0gICAgICAgIGZvciBsaW5lIGluIGY6Ci0gICAgICAgICAgICBpZiBwcm9nLm1hdGNoKGxpbmUpOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGYuY2xvc2UoKQotICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiBkb2N1bWVudGVkX3ZhcnMKIAogZGVmIGJidmFyX2RvY3RhZyh2YXIsIGRvY2NvbmYpOgogICAgIHByb2cgPSByZS5jb21waWxlKCdeJXNcW2RvY1xdICo9ICoiKC4qKSInICUgKHZhcikpCkBAIC0xMDAsOCArNzYsNyBAQAogCiBkZWYgbWFpbigpOgogICAgIGRvY2ZpbGVzID0gW10KLSAgICBtZXRhZGlycyA9IFtdCi0gICAgYmJ2YXJzID0ge30KKyAgICBiYnZhcnMgPSBzZXQoKQogICAgIHVuZG9jdW1lbnRlZCA9IFtdCiAgICAgZG9jY29uZiA9ICIiCiAgICAgb25seWRvY3RhZ3MgPSBGYWxzZQpAQCAtMTI0LDEyICs5OSw2IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHByaW50KCdFUlJPUjogZG9jdW1lbnRhdGlvbiBmaWxlICVzIGlzIG5vdCBhIHJlZ3VsYXIgZmlsZScgJSBhKQogICAgICAgICAgICAgICAgIHN5cy5leGl0KDMpCi0gICAgICAgIGVsaWYgbyA9PSAnLW0nOgotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihhKToKLSAgICAgICAgICAgICAgICBtZXRhZGlycy5hcHBlbmQoYSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQoJ0VSUk9SOiBtZXRhIGRpcmVjdG9yeSAlcyBpcyBub3QgYSBkaXJlY3RvcnknICUgYSkKLSAgICAgICAgICAgICAgICBzeXMuZXhpdCg0KQogICAgICAgICBlbGlmIG8gPT0gIi10IjoKICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGEpOgogICAgICAgICAgICAgICAgIGRvY2NvbmYgPSBhCkBAIC0xNDMsNDMgKzExMiw2OCBAQAogICAgICAgICB1c2FnZSgpCiAgICAgICAgIHN5cy5leGl0KDUpCiAKLSAgICBpZiBsZW4obWV0YWRpcnMpID09IDA6Ci0gICAgICAgIHByaW50KCdFUlJPUjogbm8gbWV0YWRpciBzcGVjaWZpZWQnKQotICAgICAgICB1c2FnZSgpCi0gICAgICAgIHN5cy5leGl0KDYpCi0KICAgICBpZiBvbmx5ZG9jdGFncyBhbmQgZG9jY29uZiA9PSAiIjoKICAgICAgICAgcHJpbnQoJ0VSUk9SOiBubyBkb2Njb25mIHNwZWNpZmllZCcpCiAgICAgICAgIHVzYWdlKCkKICAgICAgICAgc3lzLmV4aXQoNykKIAotICAgICMgQ29sbGVjdCBhbGwgdGhlIHZhcmlhYmxlIG5hbWVzIGZyb20gdGhlIHJlY2lwZXMgaW4gdGhlIG1ldGFkaXJzCi0gICAgZm9yIG0gaW4gbWV0YWRpcnM6Ci0gICAgICAgIGZvciBrZXksY250IGluIGNvbGxlY3RfYmJ2YXJzKG0pLml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiBrZXkgaW4gYmJ2YXJzOgotICAgICAgICAgICAgICAgIGJidmFyc1trZXldID0gYmJ2YXJzW2tleV0gKyBjbnQKKyAgICBwcm9nID0gcmUuY29tcGlsZSgiXlteYS16XSokIikKKyAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6CisgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1GYWxzZSkKKyAgICAgICAgcGFyc2VyID0gYmIuY29kZXBhcnNlci5QeXRob25QYXJzZXIoJ3BhcnNlcicsIE5vbmUpCisgICAgICAgIGRhdGFzdG9yZSA9IHRpbmZvaWwuY29uZmlnX2RhdGEKKworICAgICAgICBkZWYgYmJ2YXJzX3VwZGF0ZShkYXRhKToKKyAgICAgICAgICAgIGlmIHByb2cubWF0Y2goZGF0YSk6CisgICAgICAgICAgICAgICAgYmJ2YXJzLmFkZChkYXRhKQorICAgICAgICAgICAgaWYgdGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXJGbGFnKGRhdGEsICdweXRob24nKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHBhcnNlci5wYXJzZV9weXRob24odGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoZGF0YSkpCisgICAgICAgICAgICAgICAgZXhjZXB0IGJiLmRhdGFfc21hcnQuRXhwYW5zaW9uRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBmb3IgdmFyIGluIHBhcnNlci5yZWZlcmVuY2VzOgorICAgICAgICAgICAgICAgICAgICBpZiBwcm9nLm1hdGNoKHZhcik6CisgICAgICAgICAgICAgICAgICAgICAgICBiYnZhcnMuYWRkKHZhcikKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYmJ2YXJzW2tleV0gPSBjbnQKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkVmFyID0gZGF0YXN0b3JlLmV4cGFuZFdpdGhSZWZzKGRhdGFzdG9yZS5nZXRWYXIoZGF0YSwgRmFsc2UpLCBkYXRhKQorICAgICAgICAgICAgICAgICAgICBmb3IgdmFyIGluIGV4cGFuZGVkVmFyLnJlZmVyZW5jZXM6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBwcm9nLm1hdGNoKHZhcik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmJ2YXJzLmFkZCh2YXIpCisgICAgICAgICAgICAgICAgZXhjZXB0IGJiLmRhdGFfc21hcnQuRXhwYW5zaW9uRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAjIFVzZSB0aW5mb2lsIHRvIGNvbGxlY3QgYWxsIHRoZSB2YXJpYWJsZSBuYW1lcyBnbG9iYWxseQorICAgICAgICBmb3IgZGF0YSBpbiBkYXRhc3RvcmU6CisgICAgICAgICAgICBiYnZhcnNfdXBkYXRlKGRhdGEpCisKKyAgICAgICAgIyBDb2xsZWN0IHZhcmlhYmxlcyBmcm9tIGFsbCByZWNpcGVzCisgICAgICAgIGZvciByZWNpcGUgaW4gdGluZm9pbC5hbGxfcmVjaXBlX2ZpbGVzKHZhcmlhbnRzPUZhbHNlKToKKyAgICAgICAgICAgIHByaW50KCJDaGVja2luZyAlcyIgJSByZWNpcGUpCisgICAgICAgICAgICBmb3IgZGF0YSBpbiB0aW5mb2lsLnBhcnNlX3JlY2lwZV9maWxlKHJlY2lwZSk6CisgICAgICAgICAgICAgICAgYmJ2YXJzX3VwZGF0ZShkYXRhKQorCisgICAgZG9jdW1lbnRlZF92YXJzID0gY29sbGVjdF9kb2N1bWVudGVkX3ZhcnMoZG9jZmlsZXMpCiAKICAgICAjIENoZWNrIGVhY2ggdmFyIGZvciBkb2N1bWVudGF0aW9uCiAgICAgdmFybGVuID0gMAotICAgIGZvciB2IGluIGJidmFycy5rZXlzKCk6CisgICAgZm9yIHYgaW4gYmJ2YXJzOgogICAgICAgICBpZiBsZW4odikgPiB2YXJsZW46CiAgICAgICAgICAgICB2YXJsZW4gPSBsZW4odikKLSAgICAgICAgaWYgbm90IGJidmFyX2lzX2RvY3VtZW50ZWQodiwgZG9jZmlsZXMpOgorICAgICAgICBpZiBub3QgYmJ2YXJfaXNfZG9jdW1lbnRlZCh2LCBkb2N1bWVudGVkX3ZhcnMpOgogICAgICAgICAgICAgdW5kb2N1bWVudGVkLmFwcGVuZCh2KQogICAgIHVuZG9jdW1lbnRlZC5zb3J0KCkKICAgICB2YXJsZW4gPSB2YXJsZW4gKyAxCiAKICAgICAjIFJlcG9ydCBhbGwgdW5kb2N1bWVudGVkIHZhcmlhYmxlcwogICAgIHByaW50KCdGb3VuZCAlZCB1bmRvY3VtZW50ZWQgYmIgdmFyaWFibGVzIChvdXQgb2YgJWQpOicgJSAobGVuKHVuZG9jdW1lbnRlZCksIGxlbihiYnZhcnMpKSkKLSAgICBoZWFkZXIgPSAnJXMlcyVzJyAlIChzdHIoIlZBUklBQkxFIikubGp1c3QodmFybGVuKSwgc3RyKCJDT1VOVCIpLmxqdXN0KDYpLCBzdHIoIkRPQ1RBRyIpLmxqdXN0KDcpKQorICAgIGhlYWRlciA9ICclcyVzJyAlIChzdHIoIlZBUklBQkxFIikubGp1c3QodmFybGVuKSwgc3RyKCJET0NUQUciKS5sanVzdCg3KSkKICAgICBwcmludChoZWFkZXIpCiAgICAgcHJpbnQoc3RyKCIiKS5sanVzdChsZW4oaGVhZGVyKSwgJz0nKSkKICAgICBmb3IgdiBpbiB1bmRvY3VtZW50ZWQ6CiAgICAgICAgIGRvY3RhZyA9IGJidmFyX2RvY3RhZyh2LCBkb2Njb25mKQogICAgICAgICBpZiBub3Qgb25seWRvY3RhZ3Mgb3Igbm90IGRvY3RhZyA9PSAiIjoKLSAgICAgICAgICAgIHByaW50KCclcyVzJXMnICUgKHYubGp1c3QodmFybGVuKSwgc3RyKGJidmFyc1t2XSkubGp1c3QoNiksIGRvY3RhZykpCisgICAgICAgICAgICBwcmludCgnJXMlcycgJSAodi5sanVzdCh2YXJsZW4pLCBkb2N0YWcpKQogCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jb250cmliL2J1aWxkLXBlcmYtdGVzdC5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvYnVpbGQtcGVyZi10ZXN0LnNoCmluZGV4IDdkOTkyMjguLjlhMDkxZWQgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvYnVpbGQtcGVyZi10ZXN0LnNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvYnVpbGQtcGVyZi10ZXN0LnNoCkBAIC0yODMsNyArMjgzLDcgQEAKIAogdGVzdDFfcDEgKCkgewogICAgIGxvZyAiUnVubmluZyBUZXN0IDEsIHBhcnQgMS8zOiBNZWFzdXJlIHdhbGwgY2xvY2sgb2YgYml0YmFrZSAkSU1BR0UgYW5kIHNpemUgb2YgdG1wLyBkaXIiCi0gICAgYmJub3RpbWUgJElNQUdFIC1jIGZldGNoYWxsCisgICAgYmJub3RpbWUgJElNQUdFIC0tcnVuYWxsPWZldGNoCiAgICAgZG9fcm10bXAKICAgICBkb19ybXNzdGF0ZQogICAgIGRvX3N5bmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvcHl0aG9uL2dlbmVyYXRlLW1hbmlmZXN0LTIuNy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIvcHl0aG9uL2dlbmVyYXRlLW1hbmlmZXN0LTIuNy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNTg2YjMyOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jb250cmliL3B5dGhvbi9nZW5lcmF0ZS1tYW5pZmVzdC0yLjcucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0MjEgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0KLSMgZ2VuZXJhdGUgUHl0aG9uIE1hbmlmZXN0IGZvciB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQotIyAoQykgMjAwMi0yMDEwIE1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1sYXVlckB2YW5pbGxlLW1lZGlhLmRlPgotIyAoQykgMjAwNyBKZXJlbXkgTGFpbmUKLSMgbGljZW5zZWQgdW5kZXIgTUlULCBzZWUgQ09QWUlORy5NSVQKLSMKLSMgSnVuZSAyMiwgMjAxMSAtLSBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci0jICAqIFVwZGF0ZWQgdG8gbm8gbG9uZ2VyIGdlbmVyYXRlIHNwZWNpYWwgLWRiZyBwYWNrYWdlLCBpbnN0ZWFkIHVzZSB0aGUKLSMgICAgc2luZ2xlIHN5c3RlbSAtZGJnCi0jICAqIFVwZGF0ZSB2ZXJzaW9uIHdpdGggIi4xIiB0byBpbmRpY2F0ZSB0aGlzIGNoYW5nZQotIwotIyBGZWJydWFyeSAyNiwgMjAxNyAtLSBNaW5nIExpdSA8cGV0ZXIueC5saXVAZXh0ZXJuYWwuYXRsYXNjb3Bjby5jb20+Ci0jICAqIFVwZGF0ZWQgdG8gc3VwcG9ydCBnZW5lcmF0aW5nIG1hbmlmZXN0IGZvciBuYXRpdmUgcHl0aG9uCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKLWltcG9ydCBhcmdwYXJzZQotCi1WRVJTSU9OID0gIjIuNy4yIgotCi1fX2F1dGhvcl9fID0gIk1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1sYXVlckB2YW5pbGxlLW1lZGlhLmRlPiIKLV9fdmVyc2lvbl9fID0gIjIwMTEwMjIyLjIiCi0KLWNsYXNzIE1ha2VmaWxlTWFrZXI6Ci0KLSAgICBkZWYgX19pbml0X18oIHNlbGYsIG91dGZpbGUsIGlzTmF0aXZlICk6Ci0gICAgICAgICIiImluaXRpYWxpemUiIiIKLSAgICAgICAgc2VsZi5wYWNrYWdlcyA9IHt9Ci0gICAgICAgIHNlbGYuZXhjbHVkZWRfcGtncyA9IFtdCi0gICAgICAgIHNlbGYudGFyZ2V0UHJlZml4ID0gIiR7bGliZGlyfS9weXRob24lcy8iICUgVkVSU0lPTls6M10KLSAgICAgICAgc2VsZi5pc05hdGl2ZSA9IGlzTmF0aXZlCi0gICAgICAgIHNlbGYub3V0cHV0ID0gb3V0ZmlsZQotICAgICAgICBzZWxmLm91dCggIiIiCi0jIFdBUk5JTkc6IFRoaXMgZmlsZSBpcyBBVVRPIEdFTkVSQVRFRDogTWFudWFsIGVkaXRzIHdpbGwgYmUgbG9zdCBuZXh0IHRpbWUgSSByZWdlbmVyYXRlIHRoZSBmaWxlLgotIyBHZW5lcmF0b3I6ICclcyVzJyBWZXJzaW9uICVzIChDKSAyMDAyLTIwMTAgTWljaGFlbCAnTWlja2V5JyBMYXVlciA8bWxhdWVyQHZhbmlsbGUtbWVkaWEuZGU+Ci0iIiIgJSAoIHN5cy5hcmd2WzBdLCAnIC0tbmF0aXZlJyBpZiBpc05hdGl2ZSBlbHNlICcnLCBfX3ZlcnNpb25fXyApICkKLQotICAgICMKLSAgICAjIGhlbHBlciBmdW5jdGlvbnMKLSAgICAjCi0KLSAgICBkZWYgb3V0KCBzZWxmLCBkYXRhICk6Ci0gICAgICAgICIiInByaW50IGEgbGluZSB0byB0aGUgb3V0cHV0IGZpbGUiIiIKLSAgICAgICAgc2VsZi5vdXRwdXQud3JpdGUoICIlc1xuIiAlIGRhdGEgKQotCi0gICAgZGVmIHNldFByZWZpeCggc2VsZiwgdGFyZ2V0UHJlZml4ICk6Ci0gICAgICAgICIiInNldCBhIGZpbGUgcHJlZml4IGZvciBhZGRQYWNrYWdlIGZpbGVzIiIiCi0gICAgICAgIHNlbGYudGFyZ2V0UHJlZml4ID0gdGFyZ2V0UHJlZml4Ci0KLSAgICBkZWYgZG9Qcm9sb2coIHNlbGYgKToKLSAgICAgICAgc2VsZi5vdXQoICIiIiAiIiIgKQotICAgICAgICBzZWxmLm91dCggIiIgKQotCi0gICAgZGVmIGFkZFBhY2thZ2UoIHNlbGYsIG5hbWUsIGRlc2NyaXB0aW9uLCBkZXBlbmRlbmNpZXMsIGZpbGVuYW1lcywgbW9kX2V4Y2x1ZGUgPSBGYWxzZSApOgotICAgICAgICAiIiJhZGQgYSBwYWNrYWdlIHRvIHRoZSBNYWtlZmlsZSIiIgotICAgICAgICBpZiB0eXBlKCBmaWxlbmFtZXMgKSA9PSB0eXBlKCAiIiApOgotICAgICAgICAgICAgZmlsZW5hbWVzID0gZmlsZW5hbWVzLnNwbGl0KCkKLSAgICAgICAgZnVsbEZpbGVuYW1lcyA9IFtdCi0gICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlbmFtZXM6Ci0gICAgICAgICAgICBpZiBmaWxlbmFtZVswXSAhPSAiJCI6Ci0gICAgICAgICAgICAgICAgZnVsbEZpbGVuYW1lcy5hcHBlbmQoICIlcyVzIiAlICggc2VsZi50YXJnZXRQcmVmaXgsIGZpbGVuYW1lICkgKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmdWxsRmlsZW5hbWVzLmFwcGVuZCggZmlsZW5hbWUgKQotICAgICAgICBpZiBtb2RfZXhjbHVkZToKLSAgICAgICAgICAgIHNlbGYuZXhjbHVkZWRfcGtncy5hcHBlbmQoIG5hbWUgKQotICAgICAgICBzZWxmLnBhY2thZ2VzW25hbWVdID0gZGVzY3JpcHRpb24sIGRlcGVuZGVuY2llcywgZnVsbEZpbGVuYW1lcwotCi0gICAgZGVmIGRvQm9keSggc2VsZiApOgotICAgICAgICAiIiJnZW5lcmF0ZSBib2R5IG9mIE1ha2VmaWxlIiIiCi0KLSAgICAgICAgZ2xvYmFsIFZFUlNJT04KLQotICAgICAgICAjCi0gICAgICAgICMgZ2VuZXJhdGUgcnByb3ZpZGVzIGxpbmUgZm9yIG5hdGl2ZQotICAgICAgICAjCi0KLSAgICAgICAgaWYgc2VsZi5pc05hdGl2ZToKLSAgICAgICAgICAgIHBrZ2xpc3QgPSBbXQotICAgICAgICAgICAgZm9yIG5hbWUgaW4gWycke1BOfS1tb2R1bGVzJ10gKyBzb3J0ZWQoc2VsZi5wYWNrYWdlcyk6Ci0gICAgICAgICAgICAgICAgcGtnbGlzdC5hcHBlbmQoJyVzLW5hdGl2ZScgJSBuYW1lLnJlcGxhY2UoJyR7UE59JywgJ3B5dGhvbicpKQotCi0gICAgICAgICAgICBzZWxmLm91dCgnUlBST1ZJREVTICs9ICIlcyInICUgIiAiLmpvaW4ocGtnbGlzdCkpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAjCi0gICAgICAgICMgZ2VuZXJhdGUgcHJvdmlkZXMgbGluZQotICAgICAgICAjCi0KLSAgICAgICAgcHJvdmlkZUxpbmUgPSAnUFJPVklERVMrPSInCi0gICAgICAgIGZvciBuYW1lIGluIHNvcnRlZChzZWxmLnBhY2thZ2VzKToKLSAgICAgICAgICAgIHByb3ZpZGVMaW5lICs9ICIlcyAiICUgbmFtZQotICAgICAgICBwcm92aWRlTGluZSArPSAnIicKLQotICAgICAgICBzZWxmLm91dCggcHJvdmlkZUxpbmUgKQotICAgICAgICBzZWxmLm91dCggIiIgKQotCi0gICAgICAgICMKLSAgICAgICAgIyBnZW5lcmF0ZSBwYWNrYWdlIGxpbmUKLSAgICAgICAgIwotCi0gICAgICAgIHBhY2thZ2VMaW5lID0gJ1BBQ0tBR0VTPSIke1BOfS1kYmcgJwotICAgICAgICBmb3IgbmFtZSBpbiBzb3J0ZWQoc2VsZi5wYWNrYWdlcyk6Ci0gICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoIiR7UE59LWRpc3R1dGlscyIpOgotICAgICAgICAgICAgICAgIGlmIG5hbWUgPT0gIiR7UE59LWRpc3R1dGlscyI6Ci0gICAgICAgICAgICAgICAgICAgIHBhY2thZ2VMaW5lICs9ICIlcy1zdGF0aWNkZXYgJXMgIiAlIChuYW1lLCBuYW1lKQotICAgICAgICAgICAgZWxpZiBuYW1lICE9ICcke1BOfS1kYmcnOgotICAgICAgICAgICAgICAgIHBhY2thZ2VMaW5lICs9ICIlcyAiICUgbmFtZQotICAgICAgICBwYWNrYWdlTGluZSArPSAnJHtQTn0tbW9kdWxlcyInCi0KLSAgICAgICAgc2VsZi5vdXQoIHBhY2thZ2VMaW5lICkKLSAgICAgICAgc2VsZi5vdXQoICIiICkKLQotICAgICAgICAjCi0gICAgICAgICMgZ2VuZXJhdGUgcGFja2FnZSB2YXJpYWJsZXMKLSAgICAgICAgIwotCi0gICAgICAgIGZvciBuYW1lLCBkYXRhIGluIHNvcnRlZChzZWxmLnBhY2thZ2VzLml0ZW1zKCkpOgotICAgICAgICAgICAgZGVzYywgZGVwcywgZmlsZXMgPSBkYXRhCi0KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgd3JpdGUgb3V0IHRoZSBkZXNjcmlwdGlvbiwgcmV2aXNpb24gYW5kIGRlcGVuZGVuY2llcwotICAgICAgICAgICAgIwotICAgICAgICAgICAgc2VsZi5vdXQoICdTVU1NQVJZXyVzPSIlcyInICUgKCBuYW1lLCBkZXNjICkgKQotICAgICAgICAgICAgc2VsZi5vdXQoICdSREVQRU5EU18lcz0iJXMiJyAlICggbmFtZSwgZGVwcyApICkKLQotICAgICAgICAgICAgbGluZSA9ICdGSUxFU18lcz0iJyAlIG5hbWUKLQotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyBjaGVjayB3aGljaCBkaXJlY3RvcmllcyB0byBtYWtlIGluIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5Ci0gICAgICAgICAgICAjCi0KLSAgICAgICAgICAgIGRpcnNldCA9IHt9ICMgaWYgcHl0aG9uIGhhZCBhIHNldC1kYXRhdHlwZSB0aGlzIHdvdWxkIGJlIHN1ZmZpY2llbnQuIGZvciBub3csIHdlJ3JlIHVzaW5nIGEgZGljdCBpbnN0ZWFkLgotICAgICAgICAgICAgZm9yIHRhcmdldCBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICBkaXJzZXRbb3MucGF0aC5kaXJuYW1lKCB0YXJnZXQgKV0gPSBUcnVlCi0KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgZ2VuZXJhdGUgd2hpY2ggZmlsZXMgdG8gY29weSBmb3IgdGhlIHRhcmdldCAoLWRmUiBiZWNhdXNlIHdob2xlIGRpcmVjdG9yaWVzIGFyZSBhbHNvIGFsbG93ZWQpCi0gICAgICAgICAgICAjCi0KLSAgICAgICAgICAgIGZvciB0YXJnZXQgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgbGluZSArPSAiJXMgIiAlIHRhcmdldAotCi0gICAgICAgICAgICBsaW5lICs9ICciJwotICAgICAgICAgICAgc2VsZi5vdXQoIGxpbmUgKQotICAgICAgICAgICAgc2VsZi5vdXQoICIiICkKLQotICAgICAgICBzZWxmLm91dCggJ1NVTU1BUllfJHtQTn0tbW9kdWxlcz0iQWxsIFB5dGhvbiBtb2R1bGVzIicgKQotICAgICAgICBsaW5lID0gJ1JERVBFTkRTXyR7UE59LW1vZHVsZXM9IicKLQotICAgICAgICBmb3IgbmFtZSwgZGF0YSBpbiBzb3J0ZWQoc2VsZi5wYWNrYWdlcy5pdGVtcygpKToKLSAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIFsnJHtQTn0tZGV2JywgJyR7UE59LWRpc3R1dGlscy1zdGF0aWNkZXYnXSBhbmQgbmFtZSBub3QgaW4gc2VsZi5leGNsdWRlZF9wa2dzOgotICAgICAgICAgICAgICAgIGxpbmUgKz0gIiVzICIgJSBuYW1lCi0KLSAgICAgICAgc2VsZi5vdXQoICIlcyBcIiIgJSBsaW5lICkKLSAgICAgICAgc2VsZi5vdXQoICdBTExPV19FTVBUWV8ke1BOfS1tb2R1bGVzID0gIjEiJyApCi0KLSAgICBkZWYgZG9FcGlsb2coIHNlbGYgKToKLSAgICAgICAgc2VsZi5vdXQoICIiIiIiIiApCi0gICAgICAgIHNlbGYub3V0KCAiIiApCi0KLSAgICBkZWYgbWFrZSggc2VsZiApOgotICAgICAgICBzZWxmLmRvUHJvbG9nKCkKLSAgICAgICAgc2VsZi5kb0JvZHkoKQotICAgICAgICBzZWxmLmRvRXBpbG9nKCkKLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlciggZGVzY3JpcHRpb249J2dlbmVyYXRlIHB5dGhvbiBtYW5pZmVzdCcgKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoICctbicsICctLW5hdGl2ZScsIGhlbHA9J2dlbmVyYXRlIG1hbmlmZXN0IGZvciBuYXRpdmUgcHl0aG9uJywgYWN0aW9uPSdzdG9yZV90cnVlJyApCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCggJ291dGZpbGUnLCBtZXRhdmFyPSdPVVRQVVRfRklMRScsIG5hcmdzPSc/JywgZGVmYXVsdD0nJywgaGVscD0nT3V0cHV0IGZpbGUgKGRlZmF1bHRzIHRvIHN0ZG91dCknICkKLSAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgaWYgYXJncy5vdXRmaWxlOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcy51bmxpbmsoIGFyZ3Mub3V0ZmlsZSApCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICBzeXMuZXhjX2NsZWFyKCkKLSAgICAgICAgb3V0ZmlsZSA9IG9wZW4oIGFyZ3Mub3V0ZmlsZSwgInciICkKLSAgICBlbHNlOgotICAgICAgICBvdXRmaWxlID0gc3lzLnN0ZG91dAotCi0gICAgbSA9IE1ha2VmaWxlTWFrZXIoIG91dGZpbGUsIGFyZ3MubmF0aXZlICkKLQotICAgICMgQWRkIHBhY2thZ2VzIGhlcmUuIE9ubHkgc3BlY2lmeSBkbG9wZW4tc3R5bGUgbGlicmFyeSBkZXBlbmRlbmNpZXMgaGVyZSwgbm8gbGRkLXN0eWxlIGRlcGVuZGVuY2llcyEKLSAgICAjIFBhcmFtZXRlcnM6IHJldmlzaW9uLCBuYW1lLCBkZXNjcmlwdGlvbiwgZGVwZW5kZW5jaWVzLCBmaWxlbmFtZXMKLSAgICAjCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1jb3JlIiwgIlB5dGhvbiBpbnRlcnByZXRlciBhbmQgY29yZSBtb2R1bGVzIiwgIiR7UE59LWxhbmcgJHtQTn0tcmUiLAotICAgICJfX2Z1dHVyZV9fLiogX2FiY29sbC4qIGFiYy4qIGFzdC4qIGNvcHkuKiBjb3B5X3JlZy4qIENvbmZpZ1BhcnNlci4qICIgKwotICAgICJnZW5lcmljcGF0aC4qIGdldG9wdC4qIGxpbmVjYWNoZS4qIG5ldy4qICIgKwotICAgICJvcy4qIHBvc2l4cGF0aC4qIHN0cnVjdC4qICIgKwotICAgICJ3YXJuaW5ncy4qIHNpdGUuKiBzdGF0LiogIiArCi0gICAgIlVzZXJEaWN0LiogVXNlckxpc3QuKiBVc2VyU3RyaW5nLiogIiArCi0gICAgImxpYi1keW5sb2FkL2JpbmFzY2lpLnNvIGxpYi1keW5sb2FkL19zdHJ1Y3Quc28gbGliLWR5bmxvYWQvdGltZS5zbyAiICsKLSAgICAibGliLWR5bmxvYWQveHJlYWRsaW5lcy5zbyB0eXBlcy4qIHBsYXRmb3JtLiogJHtiaW5kaXJ9L3B5dGhvbiogIiAgKwotICAgICJfd2Vha3JlZnNldC4qIHN5c2NvbmZpZy4qIF9zeXNjb25maWdkYXRhLiogIiArCi0gICAgIiR7aW5jbHVkZWRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9weWNvbmZpZyouaCAiICsKLSAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2l0ZWN1c3RvbWl6ZS5weSAiKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tZGV2IiwgIlB5dGhvbiBkZXZlbG9wbWVudCBwYWNrYWdlIiwgIiR7UE59LWNvcmUiLAotICAgICIke2luY2x1ZGVkaXJ9ICIgKwotICAgICIke2xpYmRpcn0vbGliKiR7U09MSUJTREVWfSAiICsKLSAgICAiJHtsaWJkaXJ9LyoubGEgIiArCi0gICAgIiR7bGliZGlyfS8qLmEgIiArCi0gICAgIiR7bGliZGlyfS8qLm8gIiArCi0gICAgIiR7bGliZGlyfS9wa2djb25maWcgIiArCi0gICAgIiR7YmFzZV9saWJkaXJ9LyouYSAiICsKLSAgICAiJHtiYXNlX2xpYmRpcn0vKi5vICIgKwotICAgICIke2RhdGFkaXJ9L2FjbG9jYWwgIiArCi0gICAgIiR7ZGF0YWRpcn0vcGtnY29uZmlnICIgKwotICAgICJjb25maWcvTWFrZWZpbGUgIikKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LTJ0bzMiLCAiUHl0aG9uIGF1dG9tYXRlZCBQeXRob24gMiB0byAzIGNvZGUgdHJhbnNsYXRvciIsICIke1BOfS1jb3JlIiwKLSAgICAiJHtiaW5kaXJ9LzJ0bzMgbGliMnRvMyIgKSAjIHBhY2thZ2UKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWlkbGUiLCAiUHl0aG9uIEludGVncmF0ZWQgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQiLCAiJHtQTn0tY29yZSAke1BOfS10a2ludGVyIiwKLSAgICAiJHtiaW5kaXJ9L2lkbGUgaWRsZWxpYiIgKSAjIHBhY2thZ2UKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXB5ZG9jIiwgIlB5dGhvbiBpbnRlcmFjdGl2ZSBoZWxwIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1sYW5nICR7UE59LXN0cmluZ29sZCAke1BOfS1yZSIsCi0gICAgIiR7YmluZGlyfS9weWRvYyBweWRvYy4qIHB5ZG9jX2RhdGEiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXNtdHBkIiwgIlB5dGhvbiBTaW1wbGUgTWFpbCBUcmFuc3BvcnQgRGFlbW9uIiwgIiR7UE59LWNvcmUgJHtQTn0tbmV0c2VydmVyICR7UE59LWVtYWlsICR7UE59LW1pbWUiLAotICAgICIke2JpbmRpcn0vc210cGQuKiBzbXRwZC4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1hdWRpbyIsICJQeXRob24gQXVkaW8gSGFuZGxpbmciLCAiJHtQTn0tY29yZSIsCi0gICAgIndhdmUuKiBjaHVuay4qIHNuZGhkci4qIGxpYi1keW5sb2FkL29zc2F1ZGlvZGV2LnNvIGxpYi1keW5sb2FkL2F1ZGlvb3Auc28gYXVkaW9kZXYuKiBzdW5hdWRpby4qIHN1bmF1LiogdG9haWZmLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWJzZGRiIiwgIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIEJlcmtlbGV5IERhdGFiYXNlIiwgIiR7UE59LWNvcmUiLAotICAgICJic2RkYiBsaWItZHlubG9hZC9fYnNkZGIuc28iICkgIyBwYWNrYWdlCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1jb2RlY3MiLCAiUHl0aG9uIGNvZGVjcywgZW5jb2RpbmdzICYgaTE4biBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tbGFuZyIsCi0gICAgImNvZGVjcy4qIGVuY29kaW5ncyBnZXR0ZXh0LiogbG9jYWxlLiogbGliLWR5bmxvYWQvX2xvY2FsZS5zbyBsaWItZHlubG9hZC9fY29kZWNzKiBsaWItZHlubG9hZC9fbXVsdGlieXRlY29kZWMuc28gbGliLWR5bmxvYWQvdW5pY29kZWRhdGEuc28gc3RyaW5ncHJlcC4qIHhkcmxpYi4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1jb21waWxlIiwgIlB5dGhvbiBieXRlY29kZSBjb21waWxhdGlvbiBzdXBwb3J0IiwgIiR7UE59LWNvcmUiLAotICAgICJweV9jb21waWxlLiogY29tcGlsZWFsbC4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1jb21waWxlciIsICJQeXRob24gY29tcGlsZXIgc3VwcG9ydCIsICIke1BOfS1jb3JlIiwKLSAgICAiY29tcGlsZXIiICkgIyBwYWNrYWdlCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1jb21wcmVzc2lvbiIsICJQeXRob24gaGlnaC1sZXZlbCBjb21wcmVzc2lvbiBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0temxpYiIsCi0gICAgImd6aXAuKiB6aXBmaWxlLiogdGFyZmlsZS4qIGxpYi1keW5sb2FkL2J6Mi5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tY3J5cHQiLCAiUHl0aG9uIGJhc2ljIGNyeXB0b2dyYXBoaWMgYW5kIGhhc2hpbmcgc3VwcG9ydCIsICIke1BOfS1jb3JlIiwKLSAgICAiaGFzaGxpYi4qIG1kNS4qIHNoYS4qIGxpYi1keW5sb2FkL2NyeXB0LnNvIGxpYi1keW5sb2FkL19oYXNobGliLnNvIGxpYi1keW5sb2FkL19zaGEyNTYuc28gbGliLWR5bmxvYWQvX3NoYTUxMi5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tdGV4dHV0aWxzIiwgIlB5dGhvbiBvcHRpb24gcGFyc2luZywgdGV4dCB3cmFwcGluZyBhbmQgQ1NWIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1pbyAke1BOfS1yZSAke1BOfS1zdHJpbmdvbGQiLAotICAgICJsaWItZHlubG9hZC9fY3N2LnNvIGNzdi4qIG9wdHBhcnNlLiogdGV4dHdyYXAuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tY3Vyc2VzIiwgIlB5dGhvbiBjdXJzZXMgc3VwcG9ydCIsICIke1BOfS1jb3JlIiwKLSAgICAiY3Vyc2VzIGxpYi1keW5sb2FkL19jdXJzZXMuc28gbGliLWR5bmxvYWQvX2N1cnNlc19wYW5lbC5zbyIgKSAjIGRpcmVjdG9yeSArIGxvdyBsZXZlbCBtb2R1bGUKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWN0eXBlcyIsICJQeXRob24gQyB0eXBlcyBzdXBwb3J0IiwgIiR7UE59LWNvcmUiLAotICAgICJjdHlwZXMgbGliLWR5bmxvYWQvX2N0eXBlcy5zbyBsaWItZHlubG9hZC9fY3R5cGVzX3Rlc3Quc28iICkgIyBkaXJlY3RvcnkgKyBsb3cgbGV2ZWwgbW9kdWxlCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1kYXRldGltZSIsICJQeXRob24gY2FsZW5kYXIgYW5kIHRpbWUgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWNvZGVjcyIsCi0gICAgIl9zdHJwdGltZS4qIGNhbGVuZGFyLiogbGliLWR5bmxvYWQvZGF0ZXRpbWUuc28iICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWRiIiwgIlB5dGhvbiBmaWxlLWJhc2VkIGRhdGFiYXNlIHN1cHBvcnQiLCAiJHtQTn0tY29yZSIsCi0gICAgImFueWRibS4qIGR1bWJkYm0uKiB3aGljaGRiLiogIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1kZWJ1Z2dlciIsICJQeXRob24gZGVidWdnZXIiLCAiJHtQTn0tY29yZSAke1BOfS1pbyAke1BOfS1sYW5nICR7UE59LXJlICR7UE59LXN0cmluZ29sZCAke1BOfS1zaGVsbCAke1BOfS1wcHJpbnQiLAotICAgICJiZGIuKiBwZGIuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tZGlmZmxpYiIsICJQeXRob24gaGVscGVycyBmb3IgY29tcHV0aW5nIGRlbHRhcyBiZXR3ZWVuIG9iamVjdHMiLCAiJHtQTn0tbGFuZyAke1BOfS1yZSIsCi0gICAgImRpZmZsaWIuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2RldiIsICJQeXRob24gZGlzdHJpYnV0aW9uIHV0aWxpdGllcyAoc3RhdGljIGxpYnJhcmllcykiLCAiJHtQTn0tZGlzdHV0aWxzIiwKLSAgICAiY29uZmlnL2xpYiouYSIgKSAjIHBhY2thZ2UKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWRpc3R1dGlscyIsICJQeXRob24gRGlzdHJpYnV0aW9uIFV0aWxpdGllcyIsICIke1BOfS1jb3JlICR7UE59LWVtYWlsIiwKLSAgICAiY29uZmlnIGRpc3R1dGlscyIgKSAjIHBhY2thZ2UKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWRvY3Rlc3QiLCAiUHl0aG9uIGZyYW1ld29yayBmb3IgcnVubmluZyBleGFtcGxlcyBpbiBkb2NzdHJpbmdzIiwgIiR7UE59LWNvcmUgJHtQTn0tbGFuZyAke1BOfS1pbyAke1BOfS1yZSAke1BOfS11bml0dGVzdCAke1BOfS1kZWJ1Z2dlciAke1BOfS1kaWZmbGliIiwKLSAgICAiZG9jdGVzdC4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1lbWFpbCIsICJQeXRob24gZW1haWwgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWlvICR7UE59LXJlICR7UE59LW1pbWUgJHtQTn0tYXVkaW8gJHtQTn0taW1hZ2UgJHtQTn0tbmV0Y2xpZW50IiwKLSAgICAiaW1hcGxpYi4qIGVtYWlsIiApICMgcGFja2FnZQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tZmNudGwiLCAiUHl0aG9uJ3MgZmNudGwgaW50ZXJmYWNlIiwgIiR7UE59LWNvcmUiLAotICAgICJsaWItZHlubG9hZC9mY250bC5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0taG90c2hvdCIsICJQeXRob24gaG90c2hvdCBwZXJmb3JtYW5jZSBwcm9maWxlciIsICIke1BOfS1jb3JlIiwKLSAgICAiaG90c2hvdCBsaWItZHlubG9hZC9faG90c2hvdC5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0taHRtbCIsICJQeXRob24gSFRNTCBwcm9jZXNzaW5nIHN1cHBvcnQiLCAiJHtQTn0tY29yZSIsCi0gICAgImZvcm1hdHRlci4qIGh0bWxlbnRpdHlkZWZzLiogaHRtbGxpYi4qIG1hcmt1cGJhc2UuKiBzZ21sbGliLiogSFRNTFBhcnNlci4qICIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0taW1wb3J0bGliIiwgIlB5dGhvbiBpbXBvcnQgaW1wbGVtZW50YXRpb24gbGlicmFyeSIsICIke1BOfS1jb3JlIiwKLSAgICAiaW1wb3J0bGliIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1nZGJtIiwgIlB5dGhvbiBHTlUgZGF0YWJhc2Ugc3VwcG9ydCIsICIke1BOfS1jb3JlIiwKLSAgICAibGliLWR5bmxvYWQvZ2RibS5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0taW1hZ2UiLCAiUHl0aG9uIGdyYXBoaWNhbCBpbWFnZSBoYW5kbGluZyIsICIke1BOfS1jb3JlIiwKLSAgICAiY29sb3JzeXMuKiBpbWdoZHIuKiBsaWItZHlubG9hZC9pbWFnZW9wLnNvIGxpYi1keW5sb2FkL3JnYmltZy5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0taW8iLCAiUHl0aG9uIGxvdy1sZXZlbCBJL08iLCAiJHtQTn0tY29yZSAke1BOfS1tYXRoICR7UE59LXRleHR1dGlscyAke1BOfS1uZXRjbGllbnQgJHtQTn0tY29udGV4dGxpYiIsCi0gICAgImxpYi1keW5sb2FkL19zb2NrZXQuc28gbGliLWR5bmxvYWQvX2lvLnNvIGxpYi1keW5sb2FkL19zc2wuc28gbGliLWR5bmxvYWQvc2VsZWN0LnNvIGxpYi1keW5sb2FkL3Rlcm1pb3Muc28gbGliLWR5bmxvYWQvY1N0cmluZ0lPLnNvICIgKwotICAgICJwaXBlcy4qIHNvY2tldC4qIHNzbC4qIHRlbXBmaWxlLiogU3RyaW5nSU8uKiBpby4qIF9weWlvLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWpzb24iLCAiUHl0aG9uIEpTT04gc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LW1hdGggJHtQTn0tcmUgJHtQTn0tY29kZWNzIiwKLSAgICAianNvbiBsaWItZHlubG9hZC9fanNvbi5zbyIgKSAjIHBhY2thZ2UKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWxhbmciLCAiUHl0aG9uIGxvdy1sZXZlbCBsYW5ndWFnZSBzdXBwb3J0IiwgIiR7UE59LWNvcmUiLAotICAgICJsaWItZHlubG9hZC9fYmlzZWN0LnNvIGxpYi1keW5sb2FkL19jb2xsZWN0aW9ucy5zbyBsaWItZHlubG9hZC9faGVhcHEuc28gbGliLWR5bmxvYWQvX3dlYWtyZWYuc28gbGliLWR5bmxvYWQvX2Z1bmN0b29scy5zbyAiICsKLSAgICAibGliLWR5bmxvYWQvYXJyYXkuc28gbGliLWR5bmxvYWQvaXRlcnRvb2xzLnNvIGxpYi1keW5sb2FkL29wZXJhdG9yLnNvIGxpYi1keW5sb2FkL3BhcnNlci5zbyAiICsKLSAgICAiYXRleGl0LiogYmlzZWN0LiogY29kZS4qIGNvZGVvcC4qIGNvbGxlY3Rpb25zLiogZGlzLiogZnVuY3Rvb2xzLiogaGVhcHEuKiBpbnNwZWN0Lioga2V5d29yZC4qIG9wY29kZS4qIHN5bWJvbC4qIHJlcHIuKiB0b2tlbi4qICIgKwotICAgICJ0b2tlbml6ZS4qIHRyYWNlYmFjay4qIHdlYWtyZWYuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tbG9nZ2luZyIsICJQeXRob24gbG9nZ2luZyBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0taW8gJHtQTn0tbGFuZyAke1BOfS1waWNrbGUgJHtQTn0tc3RyaW5nb2xkIiwKLSAgICAibG9nZ2luZyIgKSAjIHBhY2thZ2UKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LW1haWxib3giLCAiUHl0aG9uIG1haWxib3ggZm9ybWF0IHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1taW1lIiwKLSAgICAibWFpbGJveC4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1tYXRoIiwgIlB5dGhvbiBtYXRoIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1jcnlwdCIsCi0gICAgImxpYi1keW5sb2FkL2NtYXRoLnNvIGxpYi1keW5sb2FkL21hdGguc28gbGliLWR5bmxvYWQvX3JhbmRvbS5zbyByYW5kb20uKiBzZXRzLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LW1pbWUiLCAiUHl0aG9uIE1JTUUgaGFuZGxpbmcgQVBJcyIsICIke1BOfS1jb3JlICR7UE59LWlvIiwKLSAgICAibWltZXRvb2xzLiogdXUuKiBxdW9wcmkuKiByZmM4MjIuKiBNaW1lV3JpdGVyLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LW1tYXAiLCAiUHl0aG9uIG1lbW9yeS1tYXBwZWQgZmlsZSBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0taW8iLAotICAgICJsaWItZHlubG9hZC9tbWFwLnNvICIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tbXVsdGlwcm9jZXNzaW5nIiwgIlB5dGhvbiBtdWx0aXByb2Nlc3Npbmcgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWlvICR7UE59LWxhbmcgJHtQTn0tcGlja2xlICR7UE59LXRocmVhZGluZyAke1BOfS1jdHlwZXMgJHtQTn0tbW1hcCIsCi0gICAgImxpYi1keW5sb2FkL19tdWx0aXByb2Nlc3Npbmcuc28gbXVsdGlwcm9jZXNzaW5nIiApICMgcGFja2FnZQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tbmV0Y2xpZW50IiwgIlB5dGhvbiBJbnRlcm5ldCBQcm90b2NvbCBjbGllbnRzIiwgIiR7UE59LWNvcmUgJHtQTn0tY3J5cHQgJHtQTn0tZGF0ZXRpbWUgJHtQTn0taW8gJHtQTn0tbGFuZyAke1BOfS1sb2dnaW5nICR7UE59LW1pbWUiLAotICAgICIqQ29va2llKi4qICIgKwotICAgICJiYXNlNjQuKiBjb29raWVsaWIuKiBmdHBsaWIuKiBnb3BoZXJsaWIuKiBobWFjLiogaHR0cGxpYi4qIG1pbWV0eXBlcy4qIG5udHBsaWIuKiBwb3BsaWIuKiBzbXRwbGliLiogdGVsbmV0bGliLiogdXJsbGliLiogdXJsbGliMi4qIHVybHBhcnNlLiogdXVpZC4qIHJmYzgyMi4qIG1pbWV0b29scy4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1uZXRzZXJ2ZXIiLCAiUHl0aG9uIEludGVybmV0IFByb3RvY29sIHNlcnZlcnMiLCAiJHtQTn0tY29yZSAke1BOfS1uZXRjbGllbnQgJHtQTn0tc2hlbGwgJHtQTn0tdGhyZWFkaW5nIiwKLSAgICAiY2dpLiogKkhUVFBTZXJ2ZXIuKiBTb2NrZXRTZXJ2ZXIuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tbnVtYmVycyIsICJQeXRob24gbnVtYmVyIEFQSXMiLCAiJHtQTn0tY29yZSAke1BOfS1sYW5nICR7UE59LXJlIiwKLSAgICAiZGVjaW1hbC4qIGZyYWN0aW9ucy4qIG51bWJlcnMuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tcGlja2xlIiwgIlB5dGhvbiBzZXJpYWxpc2F0aW9uL3BlcnNpc3RlbmNlIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1jb2RlY3MgJHtQTn0taW8gJHtQTn0tcmUiLAotICAgICJwaWNrbGUuKiBzaGVsdmUuKiBsaWItZHlubG9hZC9jUGlja2xlLnNvIHBpY2tsZXRvb2xzLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXBrZ3V0aWwiLCAiUHl0aG9uIHBhY2thZ2UgZXh0ZW5zaW9uIHV0aWxpdHkgc3VwcG9ydCIsICIke1BOfS1jb3JlIiwKLSAgICAicGtndXRpbC4qIikKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXBsaXN0bGliIiwgIkdlbmVyYXRlIGFuZCBwYXJzZSBNYWMgT1MgWCAucGxpc3QgZmlsZXMiLCAiJHtQTn0tY29yZSAke1BOfS1kYXRldGltZSAke1BOfS1pbyIsCi0gICAgInBsaXN0bGliLioiKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tcHByaW50IiwgIlB5dGhvbiBwcmV0dHktcHJpbnQgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWlvIiwKLSAgICAicHByaW50LioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXByb2ZpbGUiLCAiUHl0aG9uIGJhc2ljIHBlcmZvcm1hbmNlIHByb2ZpbGluZyBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tdGV4dHV0aWxzIiwKLSAgICAicHJvZmlsZS4qIHBzdGF0cy4qIGNQcm9maWxlLiogbGliLWR5bmxvYWQvX2xzcHJvZi5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tcmUiLCAiUHl0aG9uIFJlZ3VsYXIgRXhwcmVzc2lvbiBBUElzIiwgIiR7UE59LWNvcmUiLAotICAgICJyZS4qIHNyZS4qIHNyZV9jb21waWxlLiogc3JlX2NvbnN0YW50cyogc3JlX3BhcnNlLioiICkgIyBfc3JlIGlzIGJ1aWx0aW4KLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXJlYWRsaW5lIiwgIlB5dGhvbiByZWFkbGluZSBzdXBwb3J0IiwgIiR7UE59LWNvcmUiLAotICAgICJsaWItZHlubG9hZC9yZWFkbGluZS5zbyBybGNvbXBsZXRlci4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1yZXNvdXJjZSIsICJQeXRob24gcmVzb3VyY2UgY29udHJvbCBpbnRlcmZhY2UiLCAiJHtQTn0tY29yZSIsCi0gICAgImxpYi1keW5sb2FkL3Jlc291cmNlLnNvIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1zaGVsbCIsICJQeXRob24gc2hlbGwtbGlrZSBmdW5jdGlvbmFsaXR5IiwgIiR7UE59LWNvcmUgJHtQTn0tcmUiLAotICAgICJjbWQuKiBjb21tYW5kcy4qIGRpcmNhY2hlLiogZm5tYXRjaC4qIGdsb2IuKiBwb3BlbjIuKiBzaGxleC4qIHNodXRpbC4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1yb2JvdHBhcnNlciIsICJQeXRob24gcm9ib3RzLnR4dCBwYXJzZXIiLCAiJHtQTn0tY29yZSAke1BOfS1uZXRjbGllbnQiLAotICAgICJyb2JvdHBhcnNlci4qIikKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXN1YnByb2Nlc3MiLCAiUHl0aG9uIHN1YnByb2Nlc3Mgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWlvICR7UE59LXJlICR7UE59LWZjbnRsICR7UE59LXBpY2tsZSIsCi0gICAgInN1YnByb2Nlc3MuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tc3FsaXRlMyIsICJQeXRob24gU3FsaXRlMyBkYXRhYmFzZSBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tZGF0ZXRpbWUgJHtQTn0tbGFuZyAke1BOfS1jcnlwdCAke1BOfS1pbyAke1BOfS10aHJlYWRpbmcgJHtQTn0temxpYiIsCi0gICAgImxpYi1keW5sb2FkL19zcWxpdGUzLnNvIHNxbGl0ZTMvZGJhcGkyLiogc3FsaXRlMy9fX2luaXRfXy4qIHNxbGl0ZTMvZHVtcC4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1zcWxpdGUzLXRlc3RzIiwgIlB5dGhvbiBTcWxpdGUzIGRhdGFiYXNlIHN1cHBvcnQgdGVzdHMiLCAiJHtQTn0tY29yZSAke1BOfS1zcWxpdGUzIiwKLSAgICAic3FsaXRlMy90ZXN0IiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1zdHJpbmdvbGQiLCAiUHl0aG9uIHN0cmluZyBBUElzIFtkZXByZWNhdGVkXSIsICIke1BOfS1jb3JlICR7UE59LXJlIiwKLSAgICAibGliLWR5bmxvYWQvc3Ryb3Auc28gc3RyaW5nLiogc3RyaW5nb2xkLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXN5c2xvZyIsICJQeXRob24gc3lzbG9nIGludGVyZmFjZSIsICIke1BOfS1jb3JlIiwKLSAgICAibGliLWR5bmxvYWQvc3lzbG9nLnNvIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS10ZXJtaW5hbCIsICJQeXRob24gdGVybWluYWwgY29udHJvbGxpbmcgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWlvIiwKLSAgICAicHR5LiogdHR5LioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXRlc3RzIiwgIlB5dGhvbiB0ZXN0cyIsICIke1BOfS1jb3JlICR7UE59LW1vZHVsZXMiLAotICAgICJ0ZXN0IiwgVHJ1ZSApICMgcGFja2FnZQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tdGhyZWFkaW5nIiwgIlB5dGhvbiB0aHJlYWRpbmcgJiBzeW5jaHJvbml6YXRpb24gc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWxhbmciLAotICAgICJfdGhyZWFkaW5nX2xvY2FsLiogZHVtbXlfdGhyZWFkLiogZHVtbXlfdGhyZWFkaW5nLiogbXV0ZXguKiB0aHJlYWRpbmcuKiBRdWV1ZS4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS10a2ludGVyIiwgIlB5dGhvbiBUY2wvVGsgYmluZGluZ3MiLCAiJHtQTn0tY29yZSIsCi0gICAgImxpYi1keW5sb2FkL190a2ludGVyLnNvIGxpYi10ayIgKSAjIHBhY2thZ2UKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXVuaXR0ZXN0IiwgIlB5dGhvbiB1bml0IHRlc3RpbmcgZnJhbWV3b3JrIiwgIiR7UE59LWNvcmUgJHtQTn0tc3RyaW5nb2xkICR7UE59LWxhbmcgJHtQTn0taW8gJHtQTn0tZGlmZmxpYiAke1BOfS1wcHJpbnQgJHtQTn0tc2hlbGwiLAotICAgICJ1bml0dGVzdC8iICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXVuaXhhZG1pbiIsICJQeXRob24gVW5peCBhZG1pbmlzdHJhdGlvbiBzdXBwb3J0IiwgIiR7UE59LWNvcmUiLAotICAgICJsaWItZHlubG9hZC9uaXMuc28gbGliLWR5bmxvYWQvZ3JwLnNvIGxpYi1keW5sb2FkL3B3ZC5zbyBnZXRwYXNzLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXhtbCIsICJQeXRob24gYmFzaWMgWE1MIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1yZSIsCi0gICAgImxpYi1keW5sb2FkL19lbGVtZW50dHJlZS5zbyBsaWItZHlubG9hZC9weWV4cGF0LnNvIHhtbCB4bWxsaWIuKiIgKSAjIHBhY2thZ2UKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXhtbHJwYyIsICJQeXRob24gWE1MLVJQQyBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0teG1sICR7UE59LW5ldHNlcnZlciAke1BOfS1sYW5nIiwKLSAgICAieG1scnBjbGliLiogU2ltcGxlWE1MUlBDU2VydmVyLiogRG9jWE1MUlBDU2VydmVyLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXpsaWIiLCAiUHl0aG9uIHpsaWIgY29tcHJlc3Npb24gc3VwcG9ydCIsICIke1BOfS1jb3JlIiwKLSAgICAibGliLWR5bmxvYWQvemxpYi5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tbWFpbGJveCIsICJQeXRob24gbWFpbGJveCBmb3JtYXQgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LW1pbWUiLAotICAgICJtYWlsYm94LioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWFyZ3BhcnNlIiwgIlB5dGhvbiBjb21tYW5kIGxpbmUgYXJndW1lbnQgcGFyc2VyIiwgIiR7UE59LWNvcmUgJHtQTn0tY29kZWNzICR7UE59LXRleHR1dGlscyIsCi0gICAgImFyZ3BhcnNlLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWNvbnRleHRsaWIiLCAiUHl0aG9uIHV0aWxpdGllcyBmb3Igd2l0aC1zdGF0ZW1lbnQiICsKLSAgICAiY29udGV4dHMuIiwgIiR7UE59LWNvcmUiLAotICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb250ZXh0bGliLioiICkKLQotICAgIG0ubWFrZSgpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jb250cmliL3B5dGhvbi9nZW5lcmF0ZS1tYW5pZmVzdC0zLjUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jb250cmliL3B5dGhvbi9nZW5lcmF0ZS1tYW5pZmVzdC0zLjUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDYzNTJmOGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY29udHJpYi9weXRob24vZ2VuZXJhdGUtbWFuaWZlc3QtMy41LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDMzICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotCi0jIGdlbmVyYXRlIFB5dGhvbiBNYW5pZmVzdCBmb3IgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0KLSMgKEMpIDIwMDItMjAxMCBNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtbGF1ZXJAdmFuaWxsZS1tZWRpYS5kZT4KLSMgKEMpIDIwMDcgSmVyZW15IExhaW5lCi0jIGxpY2Vuc2VkIHVuZGVyIE1JVCwgc2VlIENPUFlJTkcuTUlUCi0jCi0jIEp1bmUgMjIsIDIwMTEgLS0gTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotIyAgKiBVcGRhdGVkIHRvIG5vIGxvbmdlciBnZW5lcmF0ZSBzcGVjaWFsIC1kYmcgcGFja2FnZSwgaW5zdGVhZCB1c2UgdGhlCi0jICAgIHNpbmdsZSBzeXN0ZW0gLWRiZwotIyAgKiBVcGRhdGUgdmVyc2lvbiB3aXRoICIuMSIgdG8gaW5kaWNhdGUgdGhpcyBjaGFuZ2UKLSMKLSMgMjAxNCBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotIyBBZGRlZCBweXRob24zIHN1cHBvcnQKLSMKLSMgRmVicnVhcnkgMjYsIDIwMTcgLS0gTWluZyBMaXUgPHBldGVyLngubGl1QGV4dGVybmFsLmF0bGFzY29wY28uY29tPgotIyAqIFVwZGF0ZWQgdG8gc3VwcG9ydCBnZW5lcmF0aW5nIG1hbmlmZXN0IGZvciBuYXRpdmUgcHl0aG9uMwotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCB0aW1lCi1pbXBvcnQgYXJncGFyc2UKLQotVkVSU0lPTiA9ICIzLjUuMCIKLQotX19hdXRob3JfXyA9ICJNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtbGF1ZXJAdmFuaWxsZS1tZWRpYS5kZT4iCi1fX3ZlcnNpb25fXyA9ICIyMDE0MDEzMSIKLQotY2xhc3MgTWFrZWZpbGVNYWtlcjoKLQotICAgIGRlZiBfX2luaXRfXyggc2VsZiwgb3V0ZmlsZSwgaXNOYXRpdmUgKToKLSAgICAgICAgIiIiaW5pdGlhbGl6ZSIiIgotICAgICAgICBzZWxmLnBhY2thZ2VzID0ge30KLSAgICAgICAgc2VsZi5leGNsdWRlZF9wa2dzID0gW10KLSAgICAgICAgc2VsZi50YXJnZXRQcmVmaXggPSAiJHtsaWJkaXJ9L3B5dGhvbiVzLyIgJSBWRVJTSU9OWzozXQotICAgICAgICBzZWxmLmlzTmF0aXZlID0gaXNOYXRpdmUKLSAgICAgICAgc2VsZi5vdXRwdXQgPSBvdXRmaWxlCi0gICAgICAgIHNlbGYub3V0KCAiIiIKLSMgV0FSTklORzogVGhpcyBmaWxlIGlzIEFVVE8gR0VORVJBVEVEOiBNYW51YWwgZWRpdHMgd2lsbCBiZSBsb3N0IG5leHQgdGltZSBJIHJlZ2VuZXJhdGUgdGhlIGZpbGUuCi0jIEdlbmVyYXRvcjogJyVzJXMnIFZlcnNpb24gJXMgKEMpIDIwMDItMjAxMCBNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtbGF1ZXJAdmFuaWxsZS1tZWRpYS5kZT4KLSIiIiAlICggc3lzLmFyZ3ZbMF0sICcgLS1uYXRpdmUnIGlmIGlzTmF0aXZlIGVsc2UgJycsIF9fdmVyc2lvbl9fICkgKQotCi0gICAgIwotICAgICMgaGVscGVyIGZ1bmN0aW9ucwotICAgICMKLQotICAgIGRlZiBvdXQoIHNlbGYsIGRhdGEgKToKLSAgICAgICAgIiIicHJpbnQgYSBsaW5lIHRvIHRoZSBvdXRwdXQgZmlsZSIiIgotICAgICAgICBzZWxmLm91dHB1dC53cml0ZSggIiVzXG4iICUgZGF0YSApCi0KLSAgICBkZWYgc2V0UHJlZml4KCBzZWxmLCB0YXJnZXRQcmVmaXggKToKLSAgICAgICAgIiIic2V0IGEgZmlsZSBwcmVmaXggZm9yIGFkZFBhY2thZ2UgZmlsZXMiIiIKLSAgICAgICAgc2VsZi50YXJnZXRQcmVmaXggPSB0YXJnZXRQcmVmaXgKLQotICAgIGRlZiBkb1Byb2xvZyggc2VsZiApOgotICAgICAgICBzZWxmLm91dCggIiIiICIiIiApCi0gICAgICAgIHNlbGYub3V0KCAiIiApCi0KLSAgICBkZWYgYWRkUGFja2FnZSggc2VsZiwgbmFtZSwgZGVzY3JpcHRpb24sIGRlcGVuZGVuY2llcywgZmlsZW5hbWVzLCBtb2RfZXhjbHVkZSA9IEZhbHNlICk6Ci0gICAgICAgICIiImFkZCBhIHBhY2thZ2UgdG8gdGhlIE1ha2VmaWxlIiIiCi0gICAgICAgIGlmIHR5cGUoIGZpbGVuYW1lcyApID09IHR5cGUoICIiICk6Ci0gICAgICAgICAgICBmaWxlbmFtZXMgPSBmaWxlbmFtZXMuc3BsaXQoKQotICAgICAgICBmdWxsRmlsZW5hbWVzID0gW10KLSAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVuYW1lczoKLSAgICAgICAgICAgIGlmIGZpbGVuYW1lWzBdICE9ICIkIjoKLSAgICAgICAgICAgICAgICBmdWxsRmlsZW5hbWVzLmFwcGVuZCggIiVzJXMiICUgKCBzZWxmLnRhcmdldFByZWZpeCwgZmlsZW5hbWUgKSApCi0gICAgICAgICAgICAgICAgZnVsbEZpbGVuYW1lcy5hcHBlbmQoICIlcyVzIiAlICggc2VsZi50YXJnZXRQcmVmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5weWNhY2hlUGF0aCggZmlsZW5hbWUgKSApICkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZnVsbEZpbGVuYW1lcy5hcHBlbmQoIGZpbGVuYW1lICkKLSAgICAgICAgaWYgbW9kX2V4Y2x1ZGU6Ci0gICAgICAgICAgICBzZWxmLmV4Y2x1ZGVkX3BrZ3MuYXBwZW5kKCBuYW1lICkKLSAgICAgICAgc2VsZi5wYWNrYWdlc1tuYW1lXSA9IGRlc2NyaXB0aW9uLCBkZXBlbmRlbmNpZXMsIGZ1bGxGaWxlbmFtZXMKLQotICAgIGRlZiBweWNhY2hlUGF0aCggc2VsZiwgZmlsZW5hbWUgKToKLSAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguZGlybmFtZSggZmlsZW5hbWUgKQotICAgICAgICBiYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoIGZpbGVuYW1lICkKLSAgICAgICAgaWYgJy4nIGluIGJhc2VuYW1lOgotICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbiggZGlybmFtZSwgJ19fcHljYWNoZV9fJywgYmFzZW5hbWUgKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbiggZGlybmFtZSwgYmFzZW5hbWUsICdfX3B5Y2FjaGVfXycgKQotCi0gICAgZGVmIGRvQm9keSggc2VsZiApOgotICAgICAgICAiIiJnZW5lcmF0ZSBib2R5IG9mIE1ha2VmaWxlIiIiCi0KLSAgICAgICAgZ2xvYmFsIFZFUlNJT04KLQotICAgICAgICAjCi0gICAgICAgICMgZ2VuZXJhdGUgcnByb3ZpZGVzIGxpbmUgZm9yIG5hdGl2ZQotICAgICAgICAjCi0KLSAgICAgICAgaWYgc2VsZi5pc05hdGl2ZToKLSAgICAgICAgICAgIHBrZ2xpc3QgPSBbXQotICAgICAgICAgICAgZm9yIG5hbWUgaW4gWycke1BOfS1tb2R1bGVzJ10gKyBzb3J0ZWQoc2VsZi5wYWNrYWdlcyk6Ci0gICAgICAgICAgICAgICAgcGtnbGlzdC5hcHBlbmQoJyVzLW5hdGl2ZScgJSBuYW1lLnJlcGxhY2UoJyR7UE59JywgJ3B5dGhvbjMnKSkKLQotICAgICAgICAgICAgc2VsZi5vdXQoJ1JQUk9WSURFUyArPSAiJXMiJyAlICIgIi5qb2luKHBrZ2xpc3QpKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgIwotICAgICAgICAjIGdlbmVyYXRlIHByb3ZpZGVzIGxpbmUKLSAgICAgICAgIwotCi0gICAgICAgIHByb3ZpZGVMaW5lID0gJ1BST1ZJREVTKz0iJwotICAgICAgICBmb3IgbmFtZSBpbiBzb3J0ZWQoc2VsZi5wYWNrYWdlcyk6Ci0gICAgICAgICAgICBwcm92aWRlTGluZSArPSAiJXMgIiAlIG5hbWUKLSAgICAgICAgcHJvdmlkZUxpbmUgKz0gJyInCi0KLSAgICAgICAgc2VsZi5vdXQoIHByb3ZpZGVMaW5lICkKLSAgICAgICAgc2VsZi5vdXQoICIiICkKLQotICAgICAgICAjCi0gICAgICAgICMgZ2VuZXJhdGUgcGFja2FnZSBsaW5lCi0gICAgICAgICMKLQotICAgICAgICBwYWNrYWdlTGluZSA9ICdQQUNLQUdFUz0iJHtQTn0tZGJnICcKLSAgICAgICAgZm9yIG5hbWUgaW4gc29ydGVkKHNlbGYucGFja2FnZXMpOgotICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCIke1BOfS1kaXN0dXRpbHMiKToKLSAgICAgICAgICAgICAgICBpZiBuYW1lID09ICIke1BOfS1kaXN0dXRpbHMiOgotICAgICAgICAgICAgICAgICAgICBwYWNrYWdlTGluZSArPSAiJXMtc3RhdGljZGV2ICVzICIgJSAobmFtZSwgbmFtZSkKLSAgICAgICAgICAgIGVsaWYgbmFtZSAhPSAnJHtQTn0tZGJnJzoKLSAgICAgICAgICAgICAgICBwYWNrYWdlTGluZSArPSAiJXMgIiAlIG5hbWUKLSAgICAgICAgcGFja2FnZUxpbmUgKz0gJyR7UE59LW1vZHVsZXMiJwotCi0gICAgICAgIHNlbGYub3V0KCBwYWNrYWdlTGluZSApCi0gICAgICAgIHNlbGYub3V0KCAiIiApCi0KLSAgICAgICAgIwotICAgICAgICAjIGdlbmVyYXRlIHBhY2thZ2UgdmFyaWFibGVzCi0gICAgICAgICMKLQotICAgICAgICBmb3IgbmFtZSwgZGF0YSBpbiBzb3J0ZWQoc2VsZi5wYWNrYWdlcy5pdGVtcygpKToKLSAgICAgICAgICAgIGRlc2MsIGRlcHMsIGZpbGVzID0gZGF0YQotCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIHdyaXRlIG91dCB0aGUgZGVzY3JpcHRpb24sIHJldmlzaW9uIGFuZCBkZXBlbmRlbmNpZXMKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgIHNlbGYub3V0KCAnU1VNTUFSWV8lcz0iJXMiJyAlICggbmFtZSwgZGVzYyApICkKLSAgICAgICAgICAgIHNlbGYub3V0KCAnUkRFUEVORFNfJXM9IiVzIicgJSAoIG5hbWUsIGRlcHMgKSApCi0KLSAgICAgICAgICAgIGxpbmUgPSAnRklMRVNfJXM9IicgJSBuYW1lCi0KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgY2hlY2sgd2hpY2ggZGlyZWN0b3JpZXMgdG8gbWFrZSBpbiB0aGUgdGVtcG9yYXJ5IGRpcmVjdG9yeQotICAgICAgICAgICAgIwotCi0gICAgICAgICAgICBkaXJzZXQgPSB7fSAjIGlmIHB5dGhvbiBoYWQgYSBzZXQtZGF0YXR5cGUgdGhpcyB3b3VsZCBiZSBzdWZmaWNpZW50LiBmb3Igbm93LCB3ZSdyZSB1c2luZyBhIGRpY3QgaW5zdGVhZC4KLSAgICAgICAgICAgIGZvciB0YXJnZXQgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgZGlyc2V0W29zLnBhdGguZGlybmFtZSggdGFyZ2V0ICldID0gVHJ1ZQotCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIGdlbmVyYXRlIHdoaWNoIGZpbGVzIHRvIGNvcHkgZm9yIHRoZSB0YXJnZXQgKC1kZlIgYmVjYXVzZSB3aG9sZSBkaXJlY3RvcmllcyBhcmUgYWxzbyBhbGxvd2VkKQotICAgICAgICAgICAgIwotCi0gICAgICAgICAgICBmb3IgdGFyZ2V0IGluIGZpbGVzOgotICAgICAgICAgICAgICAgIGxpbmUgKz0gIiVzICIgJSB0YXJnZXQKLQotICAgICAgICAgICAgbGluZSArPSAnIicKLSAgICAgICAgICAgIHNlbGYub3V0KCBsaW5lICkKLSAgICAgICAgICAgIHNlbGYub3V0KCAiIiApCi0KLSAgICAgICAgc2VsZi5vdXQoICdTVU1NQVJZXyR7UE59LW1vZHVsZXM9IkFsbCBQeXRob24gbW9kdWxlcyInICkKLSAgICAgICAgbGluZSA9ICdSREVQRU5EU18ke1BOfS1tb2R1bGVzPSInCi0KLSAgICAgICAgZm9yIG5hbWUsIGRhdGEgaW4gc29ydGVkKHNlbGYucGFja2FnZXMuaXRlbXMoKSk6Ci0gICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBbJyR7UE59LWRldicsICcke1BOfS1kaXN0dXRpbHMtc3RhdGljZGV2J10gYW5kIG5hbWUgbm90IGluIHNlbGYuZXhjbHVkZWRfcGtnczoKLSAgICAgICAgICAgICAgICBsaW5lICs9ICIlcyAiICUgbmFtZQotCi0gICAgICAgIHNlbGYub3V0KCAiJXMgXCIiICUgbGluZSApCi0gICAgICAgIHNlbGYub3V0KCAnQUxMT1dfRU1QVFlfJHtQTn0tbW9kdWxlcyA9ICIxIicgKQotCi0gICAgZGVmIGRvRXBpbG9nKCBzZWxmICk6Ci0gICAgICAgIHNlbGYub3V0KCAiIiIiIiIgKQotICAgICAgICBzZWxmLm91dCggIiIgKQotCi0gICAgZGVmIG1ha2UoIHNlbGYgKToKLSAgICAgICAgc2VsZi5kb1Byb2xvZygpCi0gICAgICAgIHNlbGYuZG9Cb2R5KCkKLSAgICAgICAgc2VsZi5kb0VwaWxvZygpCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoIGRlc2NyaXB0aW9uPSdnZW5lcmF0ZSBweXRob24zIG1hbmlmZXN0JyApCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCggJy1uJywgJy0tbmF0aXZlJywgaGVscD0nZ2VuZXJhdGUgbWFuaWZlc3QgZm9yIG5hdGl2ZSBweXRob24zJywgYWN0aW9uPSdzdG9yZV90cnVlJyApCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCggJ291dGZpbGUnLCBtZXRhdmFyPSdPVVRQVVRfRklMRScsIG5hcmdzPSc/JywgZGVmYXVsdD0nJywgaGVscD0nT3V0cHV0IGZpbGUgKGRlZmF1bHRzIHRvIHN0ZG91dCknICkKLSAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgaWYgYXJncy5vdXRmaWxlOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcy51bmxpbmsoIGFyZ3Mub3V0ZmlsZSApCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICBzeXMuZXhjX2NsZWFyKCkKLSAgICAgICAgb3V0ZmlsZSA9IG9wZW4oIGFyZ3Mub3V0ZmlsZSwgInciICkKLSAgICBlbHNlOgotICAgICAgICBvdXRmaWxlID0gc3lzLnN0ZG91dAotCi0gICAgbSA9IE1ha2VmaWxlTWFrZXIoIG91dGZpbGUsIGFyZ3MubmF0aXZlICkKLQotICAgICMgQWRkIHBhY2thZ2VzIGhlcmUuIE9ubHkgc3BlY2lmeSBkbG9wZW4tc3R5bGUgbGlicmFyeSBkZXBlbmRlbmNpZXMgaGVyZSwgbm8gbGRkLXN0eWxlIGRlcGVuZGVuY2llcyEKLSAgICAjIFBhcmFtZXRlcnM6IHJldmlzaW9uLCBuYW1lLCBkZXNjcmlwdGlvbiwgZGVwZW5kZW5jaWVzLCBmaWxlbmFtZXMKLSAgICAjCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1jb3JlIiwgIlB5dGhvbiBpbnRlcnByZXRlciBhbmQgY29yZSBtb2R1bGVzIiwgIiR7UE59LWxhbmcgJHtQTn0tcmUgJHtQTn0tcmVwcmxpYiAke1BOfS1jb2RlY3MgJHtQTn0taW8gJHtQTn0tbWF0aCIsCi0gICAgIl9fZnV0dXJlX18uKiBfYWJjb2xsLiogYWJjLiogYXN0LiogY29weS4qIGNvcHlyZWcuKiBjb25maWdwYXJzZXIuKiAiICsKLSAgICAiZ2VuZXJpY3BhdGguKiBnZXRvcHQuKiBsaW5lY2FjaGUuKiBuZXcuKiAiICsKLSAgICAib3MuKiBwb3NpeHBhdGguKiBzdHJ1Y3QuKiAiICsKLSAgICAid2FybmluZ3MuKiBzaXRlLiogc3RhdC4qICIgKwotICAgICJVc2VyRGljdC4qIFVzZXJMaXN0LiogVXNlclN0cmluZy4qICIgKwotICAgICJsaWItZHlubG9hZC9iaW5hc2NpaS4qLnNvIGxpYi1keW5sb2FkL19zdHJ1Y3QuKi5zbyBsaWItZHlubG9hZC90aW1lLiouc28gIiArCi0gICAgImxpYi1keW5sb2FkL3hyZWFkbGluZXMuKi5zbyB0eXBlcy4qIHBsYXRmb3JtLiogJHtiaW5kaXJ9L3B5dGhvbiogIiAgKyAKLSAgICAiX3dlYWtyZWZzZXQuKiBzeXNjb25maWcuKiBfc3lzY29uZmlnZGF0YS4qICIgKwotICAgICIke2luY2x1ZGVkaXJ9L3B5dGhvbiR7UFlUSE9OX0JJTkFCSX0vcHljb25maWcqLmggIiArCi0gICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbGxlY3Rpb25zICIgKwotICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fY29sbGVjdGlvbnNfYWJjLiogIiArCi0gICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zaXRlYnVpbHRpbnMuKiAiICsKLSAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2l0ZWN1c3RvbWl6ZS5weSAiKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tZGV2IiwgIlB5dGhvbiBkZXZlbG9wbWVudCBwYWNrYWdlIiwgIiR7UE59LWNvcmUiLAotICAgICIke2luY2x1ZGVkaXJ9ICIgKwotICAgICIke2xpYmRpcn0vbGliKiR7U09MSUJTREVWfSAiICsKLSAgICAiJHtsaWJkaXJ9LyoubGEgIiArCi0gICAgIiR7bGliZGlyfS8qLmEgIiArCi0gICAgIiR7bGliZGlyfS8qLm8gIiArCi0gICAgIiR7bGliZGlyfS9wa2djb25maWcgIiArCi0gICAgIiR7YmFzZV9saWJkaXJ9LyouYSAiICsKLSAgICAiJHtiYXNlX2xpYmRpcn0vKi5vICIgKwotICAgICIke2RhdGFkaXJ9L2FjbG9jYWwgIiArCi0gICAgIiR7ZGF0YWRpcn0vcGtnY29uZmlnICIgKwotICAgICJjb25maWcqL01ha2VmaWxlICIpCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS0ydG8zIiwgIlB5dGhvbiBhdXRvbWF0ZWQgUHl0aG9uIDIgdG8gMyBjb2RlIHRyYW5zbGF0b3IiLCAiJHtQTn0tY29yZSIsCi0gICAgImxpYjJ0bzMiICkgIyBwYWNrYWdlCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1pZGxlIiwgIlB5dGhvbiBJbnRlZ3JhdGVkIERldmVsb3BtZW50IEVudmlyb25tZW50IiwgIiR7UE59LWNvcmUgJHtQTn0tdGtpbnRlciIsCi0gICAgIiR7YmluZGlyfS9pZGxlIGlkbGVsaWIiICkgIyBwYWNrYWdlCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1weWRvYyIsICJQeXRob24gaW50ZXJhY3RpdmUgaGVscCBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tbGFuZyAke1BOfS1zdHJpbmdvbGQgJHtQTn0tcmUiLAotICAgICIke2JpbmRpcn0vcHlkb2MgcHlkb2MuKiBweWRvY19kYXRhIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1zbXRwZCIsICJQeXRob24gU2ltcGxlIE1haWwgVHJhbnNwb3J0IERhZW1vbiIsICIke1BOfS1jb3JlICR7UE59LW5ldHNlcnZlciAke1BOfS1lbWFpbCAke1BOfS1taW1lIiwKLSAgICAiJHtiaW5kaXJ9L3NtdHBkLiogc210cGQuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tYXVkaW8iLCAiUHl0aG9uIEF1ZGlvIEhhbmRsaW5nIiwgIiR7UE59LWNvcmUiLAotICAgICJ3YXZlLiogY2h1bmsuKiBzbmRoZHIuKiBsaWItZHlubG9hZC9vc3NhdWRpb2Rldi4qLnNvIGxpYi1keW5sb2FkL2F1ZGlvb3AuKi5zbyBhdWRpb2Rldi4qIHN1bmF1ZGlvLiogc3VuYXUuKiB0b2FpZmYuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tYXJncGFyc2UiLCAiUHl0aG9uIGNvbW1hbmQgbGluZSBhcmd1bWVudCBwYXJzZXIiLCAiJHtQTn0tY29yZSAke1BOfS1jb2RlY3MgJHtQTn0tdGV4dHV0aWxzIiwKLSAgICAiYXJncGFyc2UuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tYXN5bmNpbyIsICJQeXRob24gQXN5bmNocm9ub3VzIEkvTywgZXZlbnQgbG9vcCwgY29yb3V0aW5lcyBhbmQgdGFza3MiLCAiJHtQTn0tY29yZSIsCi0gICAgImFzeW5jaW8iICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWNvZGVjcyIsICJQeXRob24gY29kZWNzLCBlbmNvZGluZ3MgJiBpMThuIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1sYW5nIiwKLSAgICAiY29kZWNzLiogZW5jb2RpbmdzIGdldHRleHQuKiBsb2NhbGUuKiBsaWItZHlubG9hZC9fbG9jYWxlLiouc28gbGliLWR5bmxvYWQvX2NvZGVjcyogbGliLWR5bmxvYWQvX211bHRpYnl0ZWNvZGVjLiouc28gbGliLWR5bmxvYWQvdW5pY29kZWRhdGEuKi5zbyBzdHJpbmdwcmVwLiogeGRybGliLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWNvbXBpbGUiLCAiUHl0aG9uIGJ5dGVjb2RlIGNvbXBpbGF0aW9uIHN1cHBvcnQiLCAiJHtQTn0tY29yZSIsCi0gICAgInB5X2NvbXBpbGUuKiBjb21waWxlYWxsLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWNvbXByZXNzaW9uIiwgIlB5dGhvbiBoaWdoLWxldmVsIGNvbXByZXNzaW9uIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1jb2RlY3MgJHtQTn0taW1wb3J0bGliICR7UE59LXRocmVhZGluZyAke1BOfS1zaGVsbCIsCi0gICAgImd6aXAuKiB6aXBmaWxlLiogdGFyZmlsZS4qIGxpYi1keW5sb2FkL2J6Mi4qLnNvIGxpYi1keW5sb2FkL3psaWIuKi5zbyBiejIucHkgbHptYS5weSBfY29tcHJlc3Npb24ucHkiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWNyeXB0IiwgIlB5dGhvbiBiYXNpYyBjcnlwdG9ncmFwaGljIGFuZCBoYXNoaW5nIHN1cHBvcnQiLCAiJHtQTn0tY29yZSIsCi0gICAgImhhc2hsaWIuKiBtZDUuKiBzaGEuKiBsaWItZHlubG9hZC9jcnlwdC4qLnNvIGxpYi1keW5sb2FkL19oYXNobGliLiouc28gbGliLWR5bmxvYWQvX3NoYTI1Ni4qLnNvIGxpYi1keW5sb2FkL19zaGE1MTIuKi5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tdGV4dHV0aWxzIiwgIlB5dGhvbiBvcHRpb24gcGFyc2luZywgdGV4dCB3cmFwcGluZyBhbmQgQ1NWIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1pbyAke1BOfS1yZSAke1BOfS1zdHJpbmdvbGQiLAotICAgICJsaWItZHlubG9hZC9fY3N2Liouc28gY3N2Liogb3B0cGFyc2UuKiB0ZXh0d3JhcC4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1jdXJzZXMiLCAiUHl0aG9uIGN1cnNlcyBzdXBwb3J0IiwgIiR7UE59LWNvcmUiLAotICAgICJjdXJzZXMgbGliLWR5bmxvYWQvX2N1cnNlcy4qLnNvIGxpYi1keW5sb2FkL19jdXJzZXNfcGFuZWwuKi5zbyIgKSAjIGRpcmVjdG9yeSArIGxvdyBsZXZlbCBtb2R1bGUKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWN0eXBlcyIsICJQeXRob24gQyB0eXBlcyBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tc3VicHJvY2VzcyIsCi0gICAgImN0eXBlcyBsaWItZHlubG9hZC9fY3R5cGVzLiouc28gbGliLWR5bmxvYWQvX2N0eXBlc190ZXN0Liouc28iICkgIyBkaXJlY3RvcnkgKyBsb3cgbGV2ZWwgbW9kdWxlCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1kYXRldGltZSIsICJQeXRob24gY2FsZW5kYXIgYW5kIHRpbWUgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWNvZGVjcyIsCi0gICAgIl9zdHJwdGltZS4qIGNhbGVuZGFyLiogZGF0ZXRpbWUuKiBsaWItZHlubG9hZC9fZGF0ZXRpbWUuKi5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tZGIiLCAiUHl0aG9uIGZpbGUtYmFzZWQgZGF0YWJhc2Ugc3VwcG9ydCIsICIke1BOfS1jb3JlIiwKLSAgICAiYW55ZGJtLiogZHVtYmRibS4qIHdoaWNoZGIuKiBkYm0gbGliLWR5bmxvYWQvX2RibS4qLnNvIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1kZWJ1Z2dlciIsICJQeXRob24gZGVidWdnZXIiLCAiJHtQTn0tY29yZSAke1BOfS1pbyAke1BOfS1sYW5nICR7UE59LXJlICR7UE59LXN0cmluZ29sZCAke1BOfS1zaGVsbCAke1BOfS1wcHJpbnQgJHtQTn0taW1wb3J0bGliICR7UE59LXBrZ3V0aWwiLAotICAgICJiZGIuKiBwZGIuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tZGlmZmxpYiIsICJQeXRob24gaGVscGVycyBmb3IgY29tcHV0aW5nIGRlbHRhcyBiZXR3ZWVuIG9iamVjdHMiLCAiJHtQTn0tbGFuZyAke1BOfS1yZSIsCi0gICAgImRpZmZsaWIuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tZGlzdHV0aWxzLXN0YXRpY2RldiIsICJQeXRob24gZGlzdHJpYnV0aW9uIHV0aWxpdGllcyAoc3RhdGljIGxpYnJhcmllcykiLCAiJHtQTn0tZGlzdHV0aWxzIiwKLSAgICAiY29uZmlnL2xpYiouYSIgKSAjIHBhY2thZ2UKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWRpc3R1dGlscyIsICJQeXRob24gRGlzdHJpYnV0aW9uIFV0aWxpdGllcyIsICIke1BOfS1jb3JlICR7UE59LWVtYWlsIiwKLSAgICAiY29uZmlnIGRpc3R1dGlscyIgKSAjIHBhY2thZ2UKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWRvY3Rlc3QiLCAiUHl0aG9uIGZyYW1ld29yayBmb3IgcnVubmluZyBleGFtcGxlcyBpbiBkb2NzdHJpbmdzIiwgIiR7UE59LWNvcmUgJHtQTn0tbGFuZyAke1BOfS1pbyAke1BOfS1yZSAke1BOfS11bml0dGVzdCAke1BOfS1kZWJ1Z2dlciAke1BOfS1kaWZmbGliIiwKLSAgICAiZG9jdGVzdC4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1lbWFpbCIsICJQeXRob24gZW1haWwgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWlvICR7UE59LXJlICR7UE59LW1pbWUgJHtQTn0tYXVkaW8gJHtQTn0taW1hZ2UgJHtQTn0tbmV0Y2xpZW50IiwKLSAgICAiaW1hcGxpYi4qIGVtYWlsIiApICMgcGFja2FnZQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tZW51bSIsICJQeXRob24gc3VwcG9ydCBmb3IgZW51bWVyYXRpb25zIiwgIiR7UE59LWNvcmUiLAotICAgICJlbnVtLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWZjbnRsIiwgIlB5dGhvbidzIGZjbnRsIGludGVyZmFjZSIsICIke1BOfS1jb3JlIiwKLSAgICAibGliLWR5bmxvYWQvZmNudGwuKi5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0taHRtbCIsICJQeXRob24gSFRNTCBwcm9jZXNzaW5nIHN1cHBvcnQiLCAiJHtQTn0tY29yZSIsCi0gICAgImZvcm1hdHRlci4qIGh0bWxlbnRpdHlkZWZzLiogaHRtbCBodG1sbGliLiogbWFya3VwYmFzZS4qIHNnbWxsaWIuKiBIVE1MUGFyc2VyLiogIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1pbXBvcnRsaWIiLCAiUHl0aG9uIGltcG9ydCBpbXBsZW1lbnRhdGlvbiBsaWJyYXJ5IiwgIiR7UE59LWNvcmUgJHtQTn0tbGFuZyIsCi0gICAgImltcG9ydGxpYiBpbXAuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tZ2RibSIsICJQeXRob24gR05VIGRhdGFiYXNlIHN1cHBvcnQiLCAiJHtQTn0tY29yZSIsCi0gICAgImxpYi1keW5sb2FkL19nZGJtLiouc28iICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWltYWdlIiwgIlB5dGhvbiBncmFwaGljYWwgaW1hZ2UgaGFuZGxpbmciLCAiJHtQTn0tY29yZSIsCi0gICAgImNvbG9yc3lzLiogaW1naGRyLiogbGliLWR5bmxvYWQvaW1hZ2VvcC4qLnNvIGxpYi1keW5sb2FkL3JnYmltZy4qLnNvIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1pbyIsICJQeXRob24gbG93LWxldmVsIEkvTyIsICIke1BOfS1jb3JlICR7UE59LW1hdGgiLAotICAgICJsaWItZHlubG9hZC9fc29ja2V0Liouc28gbGliLWR5bmxvYWQvX2lvLiouc28gbGliLWR5bmxvYWQvX3NzbC4qLnNvIGxpYi1keW5sb2FkL3NlbGVjdC4qLnNvIGxpYi1keW5sb2FkL3Rlcm1pb3MuKi5zbyBsaWItZHlubG9hZC9jU3RyaW5nSU8uKi5zbyAiICsKLSAgICAiaXBhZGRyZXNzLiogcGlwZXMuKiBzb2NrZXQuKiBzc2wuKiB0ZW1wZmlsZS4qIFN0cmluZ0lPLiogaW8uKiBfcHlpby4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1qc29uIiwgIlB5dGhvbiBKU09OIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1tYXRoICR7UE59LXJlIiwKLSAgICAianNvbiBsaWItZHlubG9hZC9fanNvbi4qLnNvIiApICMgcGFja2FnZQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tbGFuZyIsICJQeXRob24gbG93LWxldmVsIGxhbmd1YWdlIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1pbXBvcnRsaWIiLAotICAgICJsaWItZHlubG9hZC9fYmlzZWN0Liouc28gbGliLWR5bmxvYWQvX2NvbGxlY3Rpb25zLiouc28gbGliLWR5bmxvYWQvX2hlYXBxLiouc28gbGliLWR5bmxvYWQvX3dlYWtyZWYuKi5zbyBsaWItZHlubG9hZC9fZnVuY3Rvb2xzLiouc28gIiArCi0gICAgImxpYi1keW5sb2FkL2FycmF5Liouc28gbGliLWR5bmxvYWQvaXRlcnRvb2xzLiouc28gbGliLWR5bmxvYWQvb3BlcmF0b3IuKi5zbyBsaWItZHlubG9hZC9wYXJzZXIuKi5zbyAiICsKLSAgICAiYXRleGl0LiogYmlzZWN0LiogY29kZS4qIGNvZGVvcC4qIGNvbGxlY3Rpb25zLiogX2NvbGxlY3Rpb25zX2FiYy4qIGNvbnRleHRsaWIuKiBkaXMuKiBmdW5jdG9vbHMuKiBoZWFwcS4qIGluc3BlY3QuKiBrZXl3b3JkLiogb3Bjb2RlLiogb3BlcmF0b3IuKiBzeW1ib2wuKiByZXByLiogdG9rZW4uKiAiICsKLSAgICAidG9rZW5pemUuKiB0cmFjZWJhY2suKiB3ZWFrcmVmLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LWxvZ2dpbmciLCAiUHl0aG9uIGxvZ2dpbmcgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWlvICR7UE59LWxhbmcgJHtQTn0tcGlja2xlICR7UE59LXN0cmluZ29sZCIsCi0gICAgImxvZ2dpbmciICkgIyBwYWNrYWdlCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1tYWlsYm94IiwgIlB5dGhvbiBtYWlsYm94IGZvcm1hdCBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tbWltZSIsCi0gICAgIm1haWxib3guKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tbWF0aCIsICJQeXRob24gbWF0aCBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tY3J5cHQiLAotICAgICJsaWItZHlubG9hZC9jbWF0aC4qLnNvIGxpYi1keW5sb2FkL21hdGguKi5zbyBsaWItZHlubG9hZC9fcmFuZG9tLiouc28gcmFuZG9tLiogc2V0cy4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1taW1lIiwgIlB5dGhvbiBNSU1FIGhhbmRsaW5nIEFQSXMiLCAiJHtQTn0tY29yZSAke1BOfS1pbyIsCi0gICAgIm1pbWV0b29scy4qIHV1LiogcXVvcHJpLiogcmZjODIyLiogTWltZVdyaXRlci4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1tbWFwIiwgIlB5dGhvbiBtZW1vcnktbWFwcGVkIGZpbGUgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWlvIiwKLSAgICAibGliLWR5bmxvYWQvbW1hcC4qLnNvICIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tbXVsdGlwcm9jZXNzaW5nIiwgIlB5dGhvbiBtdWx0aXByb2Nlc3Npbmcgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWlvICR7UE59LWxhbmcgJHtQTn0tcGlja2xlICR7UE59LXRocmVhZGluZyAke1BOfS1jdHlwZXMgJHtQTn0tbW1hcCIsCi0gICAgImxpYi1keW5sb2FkL19tdWx0aXByb2Nlc3NpbmcuKi5zbyBtdWx0aXByb2Nlc3NpbmciICkgIyBwYWNrYWdlCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1uZXRjbGllbnQiLCAiUHl0aG9uIEludGVybmV0IFByb3RvY29sIGNsaWVudHMiLCAiJHtQTn0tYXJncGFyc2UgJHtQTn0tY29yZSAke1BOfS1jcnlwdCAke1BOfS1kYXRldGltZSAke1BOfS1pbyAke1BOfS1sYW5nICR7UE59LWxvZ2dpbmcgJHtQTn0tbWltZSAke1BOfS1odG1sIiwKLSAgICAiKkNvb2tpZSouKiAiICsKLSAgICAiYmFzZTY0LiogY29va2llbGliLiogZnRwbGliLiogZ29waGVybGliLiogaG1hYy4qIGh0dHAqIGh0dHBsaWIuKiBtaW1ldHlwZXMuKiBubnRwbGliLiogcG9wbGliLiogc210cGxpYi4qIHRlbG5ldGxpYi4qIHVybGxpYiAgdXVpZC4qIHJmYzgyMi4qIG1pbWV0b29scy4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1uZXRzZXJ2ZXIiLCAiUHl0aG9uIEludGVybmV0IFByb3RvY29sIHNlcnZlcnMiLCAiJHtQTn0tY29yZSAke1BOfS1uZXRjbGllbnQgJHtQTn0tc2hlbGwgJHtQTn0tdGhyZWFkaW5nIiwKLSAgICAiY2dpLiogc29ja2V0c2VydmVyLiogKkhUVFBTZXJ2ZXIuKiBTb2NrZXRTZXJ2ZXIuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tbnVtYmVycyIsICJQeXRob24gbnVtYmVyIEFQSXMiLCAiJHtQTn0tY29yZSAke1BOfS1sYW5nICR7UE59LXJlIiwKLSAgICAiZGVjaW1hbC4qIGZyYWN0aW9ucy4qIG51bWJlcnMuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tcGlja2xlIiwgIlB5dGhvbiBzZXJpYWxpc2F0aW9uL3BlcnNpc3RlbmNlIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1jb2RlY3MgJHtQTn0taW8gJHtQTn0tcmUiLAotICAgICJfY29tcGF0X3BpY2tsZS4qIHBpY2tsZS4qIHNoZWx2ZS4qIGxpYi1keW5sb2FkL2NQaWNrbGUuKi5zbyBwaWNrbGV0b29scy4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1wa2d1dGlsIiwgIlB5dGhvbiBwYWNrYWdlIGV4dGVuc2lvbiB1dGlsaXR5IHN1cHBvcnQiLCAiJHtQTn0tY29yZSIsCi0gICAgInBrZ3V0aWwuKiIpCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1wcHJpbnQiLCAiUHl0aG9uIHByZXR0eS1wcmludCBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0taW8iLAotICAgICJwcHJpbnQuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tcHJvZmlsZSIsICJQeXRob24gYmFzaWMgcGVyZm9ybWFuY2UgcHJvZmlsaW5nIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS10ZXh0dXRpbHMiLAotICAgICJwcm9maWxlLiogcHN0YXRzLiogY1Byb2ZpbGUuKiBsaWItZHlubG9hZC9fbHNwcm9mLiouc28iICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXJlIiwgIlB5dGhvbiBSZWd1bGFyIEV4cHJlc3Npb24gQVBJcyIsICIke1BOfS1jb3JlIiwKLSAgICAicmUuKiBzcmUuKiBzcmVfY29tcGlsZS4qIHNyZV9jb25zdGFudHMqIHNyZV9wYXJzZS4qIiApICMgX3NyZSBpcyBidWlsdGluCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1yZWFkbGluZSIsICJQeXRob24gcmVhZGxpbmUgc3VwcG9ydCIsICIke1BOfS1jb3JlIiwKLSAgICAibGliLWR5bmxvYWQvcmVhZGxpbmUuKi5zbyBybGNvbXBsZXRlci4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1yZXBybGliIiwgIlB5dGhvbiBhbHRlcm5hdGUgcmVwcigpIGltcGxlbWVudGF0aW9uIiwgIiR7UE59LWNvcmUiLAotICAgICJyZXBybGliLnB5IiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1yZXNvdXJjZSIsICJQeXRob24gcmVzb3VyY2UgY29udHJvbCBpbnRlcmZhY2UiLCAiJHtQTn0tY29yZSIsCi0gICAgImxpYi1keW5sb2FkL3Jlc291cmNlLiouc28iICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXNlbGVjdG9ycyIsICJQeXRob24gSGlnaC1sZXZlbCBJL08gbXVsdGlwbGV4aW5nIiwgIiR7UE59LWNvcmUiLAotICAgICJzZWxlY3RvcnMuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tc2hlbGwiLCAiUHl0aG9uIHNoZWxsLWxpa2UgZnVuY3Rpb25hbGl0eSIsICIke1BOfS1jb3JlICR7UE59LXJlICR7UE59LWNvbXByZXNzaW9uIiwKLSAgICAiY21kLiogY29tbWFuZHMuKiBkaXJjYWNoZS4qIGZubWF0Y2guKiBnbG9iLiogcG9wZW4yLiogc2hsZXguKiBzaHV0aWwuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tc2lnbmFsIiwgIlB5dGhvbiBzZXQgaGFuZGxlcnMgZm9yIGFzeW5jaHJvbm91cyBldmVudHMgc3VwcG9ydCIsICIke1BOfS1jb3JlICR7UE59LWVudW0iLAotICAgICJzaWduYWwuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tc3VicHJvY2VzcyIsICJQeXRob24gc3VicHJvY2VzcyBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0taW8gJHtQTn0tcmUgJHtQTn0tZmNudGwgJHtQTn0tcGlja2xlICR7UE59LXRocmVhZGluZyAke1BOfS1zaWduYWwgJHtQTn0tc2VsZWN0b3JzIiwKLSAgICAic3VicHJvY2Vzcy4qIGxpYi1keW5sb2FkL19wb3NpeHN1YnByb2Nlc3MuKi5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tc3FsaXRlMyIsICJQeXRob24gU3FsaXRlMyBkYXRhYmFzZSBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tZGF0ZXRpbWUgJHtQTn0tbGFuZyAke1BOfS1jcnlwdCAke1BOfS1pbyAke1BOfS10aHJlYWRpbmciLAotICAgICJsaWItZHlubG9hZC9fc3FsaXRlMy4qLnNvIHNxbGl0ZTMvZGJhcGkyLiogc3FsaXRlMy9fX2luaXRfXy4qIHNxbGl0ZTMvZHVtcC4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1zcWxpdGUzLXRlc3RzIiwgIlB5dGhvbiBTcWxpdGUzIGRhdGFiYXNlIHN1cHBvcnQgdGVzdHMiLCAiJHtQTn0tY29yZSAke1BOfS1zcWxpdGUzIiwKLSAgICAic3FsaXRlMy90ZXN0IiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS1zdHJpbmdvbGQiLCAiUHl0aG9uIHN0cmluZyBBUElzIFtkZXByZWNhdGVkXSIsICIke1BOfS1jb3JlICR7UE59LXJlIiwKLSAgICAibGliLWR5bmxvYWQvc3Ryb3AuKi5zbyBzdHJpbmcuKiBzdHJpbmdvbGQuKiIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tc3lzbG9nIiwgIlB5dGhvbiBzeXNsb2cgaW50ZXJmYWNlIiwgIiR7UE59LWNvcmUiLAotICAgICJsaWItZHlubG9hZC9zeXNsb2cuKi5zbyIgKQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0tdGVybWluYWwiLCAiUHl0aG9uIHRlcm1pbmFsIGNvbnRyb2xsaW5nIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1pbyIsCi0gICAgInB0eS4qIHR0eS4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS10ZXN0cyIsICJQeXRob24gdGVzdHMiLCAiJHtQTn0tY29yZSAke1BOfS1jb21wcmVzc2lvbiIsCi0gICAgInRlc3QiLCBUcnVlICkgIyBwYWNrYWdlCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS10aHJlYWRpbmciLCAiUHl0aG9uIHRocmVhZGluZyAmIHN5bmNocm9uaXphdGlvbiBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tbGFuZyIsCi0gICAgIl90aHJlYWRpbmdfbG9jYWwuKiBkdW1teV90aHJlYWQuKiBkdW1teV90aHJlYWRpbmcuKiBtdXRleC4qIHRocmVhZGluZy4qIHF1ZXVlLioiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXRraW50ZXIiLCAiUHl0aG9uIFRjbC9UayBiaW5kaW5ncyIsICIke1BOfS1jb3JlIiwKLSAgICAibGliLWR5bmxvYWQvX3RraW50ZXIuKi5zbyBsaWItdGsgdGtpbnRlciIgKSAjIHBhY2thZ2UKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LXR5cGluZyIsICJQeXRob24gdHlwaW5nIHN1cHBvcnQiLCAiJHtQTn0tY29yZSIsCi0gICAgInR5cGluZy4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS11bml0dGVzdCIsICJQeXRob24gdW5pdCB0ZXN0aW5nIGZyYW1ld29yayIsICIke1BOfS1jb3JlICR7UE59LXN0cmluZ29sZCAke1BOfS1sYW5nICR7UE59LWlvICR7UE59LWRpZmZsaWIgJHtQTn0tcHByaW50ICR7UE59LXNoZWxsIiwKLSAgICAidW5pdHRlc3QvIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS11bml4YWRtaW4iLCAiUHl0aG9uIFVuaXggYWRtaW5pc3RyYXRpb24gc3VwcG9ydCIsICIke1BOfS1jb3JlIiwKLSAgICAibGliLWR5bmxvYWQvbmlzLiouc28gbGliLWR5bmxvYWQvZ3JwLiouc28gbGliLWR5bmxvYWQvcHdkLiouc28gZ2V0cGFzcy4qIiApCi0KLSAgICBtLmFkZFBhY2thZ2UoICIke1BOfS14bWwiLCAiUHl0aG9uIGJhc2ljIFhNTCBzdXBwb3J0IiwgIiR7UE59LWNvcmUgJHtQTn0tcmUiLAotICAgICJsaWItZHlubG9hZC9fZWxlbWVudHRyZWUuKi5zbyBsaWItZHlubG9hZC9weWV4cGF0Liouc28geG1sIHhtbGxpYi4qIiApICMgcGFja2FnZQotCi0gICAgbS5hZGRQYWNrYWdlKCAiJHtQTn0teG1scnBjIiwgIlB5dGhvbiBYTUwtUlBDIHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS14bWwgJHtQTn0tbmV0c2VydmVyICR7UE59LWxhbmcgJHtQTn0tcHlkb2MiLAotICAgICJ4bWxycGNsaWIuKiBTaW1wbGVYTUxSUENTZXJ2ZXIuKiBEb2NYTUxSUENTZXJ2ZXIuKiB4bWxycGMiICkKLQotICAgIG0uYWRkUGFja2FnZSggIiR7UE59LW1haWxib3giLCAiUHl0aG9uIG1haWxib3ggZm9ybWF0IHN1cHBvcnQiLCAiJHtQTn0tY29yZSAke1BOfS1taW1lIiwKLSAgICAibWFpbGJveC4qIiApCi0KLSAgICBtLm1ha2UoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY29udHJpYi95b2N0by1ic3Ata2VybmVsLXVwZGF0ZS5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2NvbnRyaWIveW9jdG8tYnNwLWtlcm5lbC11cGRhdGUuc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGIzYWE3MDUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY29udHJpYi95b2N0by1ic3Ata2VybmVsLXVwZGF0ZS5zaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLSMhL2Jpbi9zaAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgIHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgIHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUKLSMgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyAgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQotIwotIyBEZXNjcmlwdGlvbjogY3JlYXRlcyBhIG5ldyBzZXQgb2Yga2VybmVsIHRlbXBsYXRlcyBiYXNlZCBvbiB2ZXJzaW9uCi0jCi0KLXNldCAtbyBub3Vuc2V0Ci1zZXQgLW8gZXJyZXhpdAotCi1pZiBbICQjIC1uZSA0IF07IHRoZW4KLSAgICBjYXQgPDwgRU9GCi11c2FnZTogJDAgZnJvbV9tYXlvciBmcm9tX21pbm9yIHRvX21heW9yIHRvX21pbm9yCi1FT0YKLSAgICBleGl0IDEKLWVsc2UKLSAgICBmbWE9JDEgIyBmcm9tIG1heW9yCi0gICAgZm1pPSQyICMgZnJvbSBtaW5vcgotICAgIHRtYT0kMyAjIHRvIG1heW9yCi0gICAgdG1pPSQ0ICMgdG8gbWlub3IKLWZpCi0KLXBva3k9JChyZWFkbGluayAtZSAkKGRpcm5hbWUgJChkaXJuYW1lICQoZGlybmFtZSAkMCkpKSkKLWFyY2g9JHBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaAotCi0KLSMgY29weS9yZW5hbWUgdGVtcGxhdGVzCi1mb3IgZnJvbSBpbiAkKGxzIC0xICRhcmNoLyovcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8qXyRmbWFcLiRmbWkuYmJhcHBlbmQpCi1kbwotICAgIHRvPSQoZWNobyAkZnJvbSB8IHNlZCBzLyRmbWFcLiRmbWkvJHRtYVwuJHRtaS8pCi0gICAgY3AgJGZyb20gJHRvCi1kb25lCi0KLSMgcmVwbGFjZSB2ZXJzaW9ucyBzdHJpbmcgaW5zaWRlIG5ldyB0ZW1wbGF0ZXMKLWZvciBiYmFwcGVuZCBpbiAkKGxzIC0xICRhcmNoLyovcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8qXyR0bWFcLiR0bWkuYmJhcHBlbmQpCi1kbwotICAgIHNlZCAtaSAxcy8kZm1hXC4kZm1pLyR0bWFcLiR0bWkvICRiYmFwcGVuZAotICAgIHNlZCAtaSBcJHMvJGZtYVwuJGZtaS8kdG1hXC4kdG1pLyAkYmJhcHBlbmQKLWRvbmUKLQotIyB1cGRhdGUgdGhlIG5vaW5zdGFsbCBmaWxlcwotZm9yIG5vaW5zdGFsbCBpbiAkKGxzIC0xICRhcmNoLyovcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWxpc3Qubm9pbnN0YWxsKQotZG8KLSAgICBzZWQgLWkgcy8kZm1hXC4kZm1pLyR0bWFcLiR0bWkvZyAkbm9pbnN0YWxsOwotZG9uZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvY3Jvc3N0YXAgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jcm9zc3RhcAppbmRleCAzOTczOWJiLi5lMzNmYTRhIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jcm9zc3RhcAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9jcm9zc3RhcApAQCAtMSwxNSArMSwyMiBAQAotIyEvYmluL2Jhc2gKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKICMKLSMgUnVuIGEgc3lzdGVtdGFwIHNjcmlwdCBvbiByZW1vdGUgdGFyZ2V0CisjIEJ1aWxkIGEgc3lzdGVtdGFwIHNjcmlwdCBmb3IgYSBnaXZlbiBpbWFnZSwga2VybmVsCiAjCi0jIEV4YW1wbGVzIChydW4gb24gYnVpbGQgaG9zdCwgdGFyZ2V0IGlzIDE5Mi4xNjguMS54eHgpOgotIyAgICQgc291cmNlIG9lLWluaXQtYnVpbGQtZW52IgotIyAgICQgY2Qgfi9teS9zeXN0ZW10YXAvc2NyaXB0cyIKKyMgRWZmZWN0aXZlbHkgc2NyaXB0IGV4dHJhY3RzIG5lZWRlZCBpbmZvcm1hdGlvbiBmcm9tIHNldCBvZgorIyAnYml0YmFrZSAtZScgY29tbWFuZHMgYW5kIGNvbnRydWN0cyBwcm9wZXIgaW52b2NhdGlvbiBvZiBzdGFwIG9uCisjIGhvc3QgdG8gYnVpbGQgc3lzdGVtdGFwIHNjcmlwdCBmb3IgYSBnaXZlbiB0YXJnZXQuCiAjCi0jICAgJCBjcm9zc3RhcCByb290QDE5Mi4xNjguMS54eHggbXlzY3JpcHQuc3RwIgotIyAgICQgY3Jvc3N0YXAgcm9vdEAxOTIuMTY4LjEueHh4IG15c2NyaXB0LXdpdGgtYXJncy5zdHAgOTkgbmluZXR5bmluZSIKKyMgQnkgZGVmYXVsdCBzY3JpcHQgd2lsbCBjb21waWxlIHNjcmlwdG5hbWUua28gdGhhdCBjb3VsZCBiZSBjb3BpZWQKKyMgdG8gdGFnZXQgYW5kIGFjdGl2YXRlZCB3aXRoICdzdGFwcnVuIHNjcmlwdG5hbWUua28nIGNvbW1hbmQuIE9yIGlmCisjIC0tcmVtb3RlIHVzZXJAaG9zdG5hbWUgb3B0aW9uIGlzIHNwZWNpZmllZCBzY3JpcHQgd2lsbCBidWlsZCwgbG9hZAorIyBleGVjdXRlIHNjcmlwdCBvbiB0YXJnZXQuCiAjCi0jIENvcHlyaWdodCAoYykgMjAxMiwgSW50ZWwgQ29ycG9yYXRpb24uCisjIFRoaXMgc2NyaXB0IGlzIHZlcnkgc2ltaWxhciBhbmQgaW5zcGlyZWQgYnkgY3Jvc3N0YXAgc2hlbGwgc2NyaXB0LgorIyBUaGUgbWFqb3IgZGlmZmVyZW5jZSB0aGF0IHRoaXMgc2NyaXB0IHN1cHBvcnRzIHVzZXItbGFuZCByZWxhdGVkCisjIHN5c3RlbXRhcCBzY3JpcHQsIHdoZXJlYXMgY3Jvc3N0YXAgY291bGQgZGVhbCBvbmx5IHdpdGggc2NyaXB0cworIyByZWxhdGVkIHRvIGtlcm5lbC4KKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE4LCBDaXNjbyBTeXN0ZW1zLgogIyBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtMjUsMTMxICszMiw0MzggQEAKICMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIAotZnVuY3Rpb24gdXNhZ2UoKSB7Ci0gICAgZWNobyAiVXNhZ2U6ICQwIDx1c2VyQGhvc3RuYW1lPiA8c3l0ZW10YXAtc2NyaXB0PiBbYWRkaXRpb25hbCBzeXN0ZW10YXAtc2NyaXB0IGFyZ3NdIgotfQoraW1wb3J0IHN5cworaW1wb3J0IHJlCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IG9zCitpbXBvcnQgb3B0cGFyc2UKIAotZnVuY3Rpb24gc2V0dXBfdXNhZ2UoKSB7Ci0gICAgZWNobyAiIgotICAgIGVjaG8gIidjcm9zc3RhcCcgcmVxdWlyZXMgYSBsb2NhbCBzZGsgYnVpbGQgb2YgdGhlIHRhcmdldCBzeXN0ZW0iCi0gICAgZWNobyAiKG9yIGEgYnVpbGQgdGhhdCBpbmNsdWRlcyAndG9vbHMtcHJvZmlsZScpIGluIG9yZGVyIHRvIGJ1aWxkIgotICAgIGVjaG8gImtlcm5lbCBtb2R1bGVzIHRoYXQgY2FuIHByb2JlIHRoZSB0YXJnZXQgc3lzdGVtLiIKLSAgICBlY2hvICIiCi0gICAgZWNobyAiUHJhY3RpY2FsbHkgc3BlYWtpbmcsIHRoYXQgbWVhbnMgeW91IG5lZWQgdG8gZG8gdGhlIGZvbGxvd2luZzoiCi0gICAgZWNobyAiICAtIElmIHlvdSdyZSBydW5uaW5nIGEgcHJlLWJ1aWx0IGltYWdlLCBkb3dubG9hZCB0aGUgcmVsZWFzZSIKLSAgICBlY2hvICIgICAgYW5kL29yIEJTUCB0YXJiYWxscyB1c2VkIHRvIGJ1aWxkIHRoZSBpbWFnZS4iCi0gICAgZWNobyAiICAtIElmIHlvdSdyZSB3b3JraW5nIGZyb20gZ2l0IHNvdXJjZXMsIGp1c3QgY2xvbmUgdGhlIG1ldGFkYXRhIgotICAgIGVjaG8gIiAgICBhbmQgQlNQIGxheWVycyBuZWVkZWQgdG8gYnVpbGQgdGhlIGltYWdlIHlvdSdsbCBiZSBib290aW5nLiIKLSAgICBlY2hvICIgIC0gTWFrZSBzdXJlIHlvdSdyZSBwcm9wZXJseSBzZXQgdXAgdG8gYnVpbGQgYSBuZXcgaW1hZ2UgKHNlZSIKLSAgICBlY2hvICIgICAgdGhlIEJTUCBSRUFETUUgYW5kL29yIHRoZSB3aWRlbHkgYXZhaWxhYmxlIGJhc2ljIGRvY3VtZW50YXRpb24iCi0gICAgZWNobyAiICAgIHRoYXQgZGlzY3Vzc2VzIGhvdyB0byBidWlsZCBpbWFnZXMpLiIKLSAgICBlY2hvICIgIC0gQnVpbGQgYW4gLXNkayB2ZXJzaW9uIG9mIHRoZSBpbWFnZSBlLmcuOiIKLSAgICBlY2hvICIgICAgICAkIGJpdGJha2UgY29yZS1pbWFnZS1zYXRvLXNkayIKLSAgICBlY2hvICIgIE9SIgotICAgIGVjaG8gIiAgLSBCdWlsZCBhIG5vbi1zZGsgaW1hZ2UgYnV0IGluY2x1ZGUgdGhlIHByb2ZpbGluZyB0b29sczoiCi0gICAgZWNobyAiICAgICAgWyBlZGl0IGxvY2FsLmNvbmYgYW5kIGFkZCAndG9vbHMtcHJvZmlsZScgdG8gdGhlIGVuZCBvZiIKLSAgICBlY2hvICIgICAgICAgIHRoZSBFWFRSQV9JTUFHRV9GRUFUVVJFUyB2YXJpYWJsZSBdIgotICAgIGVjaG8gIiAgICAgICQgYml0YmFrZSBjb3JlLWltYWdlLXNhdG8iCi0gICAgZWNobyAiIgotICAgIGVjaG8gIiAgWyBOT1RFIHRoYXQgJ2Nyb3NzdGFwJyBuZWVkcyB0byBiZSBhYmxlIHRvIHNzaCBpbnRvIHRoZSB0YXJnZXQiCi0gICAgZWNobyAiICAgIHN5c3RlbSwgd2hpY2ggaXNuJ3QgZW5hYmxlZCBieSBkZWZhdWx0IGluIC1taW5pbWFsIGltYWdlcy4gXSIKLSAgICBlY2hvICIiCi0gICAgZWNobyAiT25jZSB5b3UndmUgYnVpbGQgdGhlIGltYWdlIG9uIHRoZSBob3N0IHN5c3RlbSwgeW91J3JlIHJlYWR5IHRvIgotICAgIGVjaG8gImJvb3QgaXQgKG9yIHRoZSBlcXVpdmFsZW50IHByZS1idWlsdCBpbWFnZSkgYW5kIHVzZSAnY3Jvc3N0YXAnIgotICAgIGVjaG8gInRvIHByb2JlIGl0ICh5b3UgbmVlZCB0byBzb3VyY2UgdGhlIGVudmlyb25tZW50IGFzIHVzdWFsIGZpcnN0KToiCi0gICAgZWNobyAiIgotICAgIGVjaG8gIiAgICAkIHNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudiIKLSAgICBlY2hvICIgICAgJCBjZCB+L215L3N5c3RlbXRhcC9zY3JpcHRzIgotICAgIGVjaG8gIiAgICAkIGNyb3NzdGFwIHJvb3RAMTkyLjE2OC4xLnh4eCBteXNjcmlwdC5zdHAiCi0gICAgZWNobyAiIgotfQorY2xhc3MgU3RhcChvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzY3JpcHQsIG1vZHVsZSwgcmVtb3RlKToKKyAgICAgICAgc2VsZi5zY3JpcHQgPSBzY3JpcHQKKyAgICAgICAgc2VsZi5tb2R1bGUgPSBtb2R1bGUKKyAgICAgICAgc2VsZi5yZW1vdGUgPSByZW1vdGUKKyAgICAgICAgc2VsZi5zdGFwID0gTm9uZQorICAgICAgICBzZWxmLnN5c3Jvb3QgPSBOb25lCisgICAgICAgIHNlbGYucnVudGltZSA9IE5vbmUKKyAgICAgICAgc2VsZi50YXBzZXQgPSBOb25lCisgICAgICAgIHNlbGYuYXJjaCA9IE5vbmUKKyAgICAgICAgc2VsZi5jcm9zc19jb21waWxlID0gTm9uZQorICAgICAgICBzZWxmLmtlcm5lbF9yZWxlYXNlID0gTm9uZQorICAgICAgICBzZWxmLnRhcmdldF9wYXRoID0gTm9uZQorICAgICAgICBzZWxmLnRhcmdldF9sZF9saWJyYXJ5X3BhdGggPSBOb25lCiAKLWZ1bmN0aW9uIHN5c3RlbXRhcF90YXJnZXRfYXJjaCgpIHsKLSAgICBTWVNURU1UQVBfVEFSR0VUX0FSQ0g9JDEKLSAgICBjYXNlICRTWVNURU1UQVBfVEFSR0VUX0FSQ0ggaW4KLSAgICAgICAgaT84NikKLSAgICAgICAgICAgIFNZU1RFTVRBUF9UQVJHRVRfQVJDSD0iaTM4NiIKLSAgICAgICAgICAgIDs7Ci0gICAgICAgIHg4Nj82NCopCi0gICAgICAgICAgICBTWVNURU1UQVBfVEFSR0VUX0FSQ0g9Ing4Nl82NCIKLSAgICAgICAgICAgIDs7Ci0gICAgICAgIGFybSopCi0gICAgICAgICAgICBTWVNURU1UQVBfVEFSR0VUX0FSQ0g9ImFybSIKLSAgICAgICAgICAgIDs7Ci0gICAgICAgIHBvd2VycGMqKQotICAgICAgICAgICAgU1lTVEVNVEFQX1RBUkdFVF9BUkNIPSJwb3dlcnBjIgotICAgICAgICAgICAgOzsKLSAgICAgICAgKikKLSAgICAgICAgICAgIDs7Ci0gICAgZXNhYwotfQorICAgICAgICBpZiBub3Qgc2VsZi5yZW1vdGU6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5tb2R1bGU6CisgICAgICAgICAgICAgICAgIyBkZXJpdmUgbW9kdWxlIG5hbWUgZnJvbSBzY3JpcHQKKyAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZSA9IG9zLnBhdGguYmFzZW5hbWUoc2VsZi5zY3JpcHQpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5tb2R1bGVbLTQ6XSA9PSAiLnN0cCI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlID0gc2VsZi5tb2R1bGVbOi00XQorICAgICAgICAgICAgICAgICAgICAjIHJlcGxhY2UgLSBpZiBhbnkgd2l0aCBfCisgICAgICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlID0gc2VsZi5tb2R1bGUucmVwbGFjZSgiLSIsICJfIikKIAotaWYgWyAkIyAtbHQgMiBdOyB0aGVuCi0JdXNhZ2UKLQlleGl0IDEKLWZpCisgICAgZGVmIGNvbW1hbmQoc2VsZiwgYXJncyk6CisgICAgICAgIHJldCA9IFtdCisgICAgICAgIHJldC5hcHBlbmQoc2VsZi5zdGFwKQogCi1pZiBbIC16ICIkQlVJTERESVIiIF07IHRoZW4KLSAgICBlY2hvICJFcnJvcjogVW5hYmxlIHRvIGZpbmQgdGhlIEJVSUxERElSIGVudmlyb25tZW50IHZhcmlhYmxlLiIKLSAgICBlY2hvICJEaWQgeW91IGZvcmdldCB0byBzb3VyY2UgeW91ciBidWlsZCBzeXN0ZW0gZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0PyIKLSAgICBleGl0IDEKLWZpCisgICAgICAgIGlmIHNlbGYucmVtb3RlOgorICAgICAgICAgICAgcmV0LmFwcGVuZCgiLS1yZW1vdGUiKQorICAgICAgICAgICAgcmV0LmFwcGVuZChzZWxmLnJlbW90ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldC5hcHBlbmQoIi1wNCIpCisgICAgICAgICAgICByZXQuYXBwZW5kKCItbSIpCisgICAgICAgICAgICByZXQuYXBwZW5kKHNlbGYubW9kdWxlKQogCi1wdXNoZCAkUFdECi1jZCAkQlVJTERESVIKLUJJVEJBS0VfVkFSUz1gYml0YmFrZSAtZSB2aXJ0dWFsL2tlcm5lbGAKLXBvcGQKKyAgICAgICAgcmV0LmFwcGVuZCgiLWEiKQorICAgICAgICByZXQuYXBwZW5kKHNlbGYuYXJjaCkKIAotU1RBR0lOR19CSU5ESVJfVE9PTENIQUlOPSQoZWNobyAiJEJJVEJBS0VfVkFSUyIgfCBncmVwIF5TVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU4gXAotICB8IGN1dCAtZCAnPScgLWYyIHwgY3V0IC1kICciJyAtZjIpCi1TVEFHSU5HX0JJTkRJUl9UT09MUFJFRklYPSQoZWNobyAiJEJJVEJBS0VfVkFSUyIgfCBncmVwIF5UQVJHRVRfUFJFRklYIFwKLSAgfCBjdXQgLWQgJz0nIC1mMiB8IGN1dCAtZCAnIicgLWYyKQotVEFSR0VUX0FSQ0g9JChlY2hvICIkQklUQkFLRV9WQVJTIiB8IGdyZXAgXlRSQU5TTEFURURfVEFSR0VUX0FSQ0ggXAotICB8IGN1dCAtZCAnPScgLWYyIHwgY3V0IC1kICciJyAtZjIpCi1UQVJHRVRfS0VSTkVMX0JVSUxERElSPSQoZWNobyAiJEJJVEJBS0VfVkFSUyIgfCBncmVwIF5CPSBcCi0gIHwgY3V0IC1kICc9JyAtZjIgfCBjdXQgLWQgJyInIC1mMikKKyAgICAgICAgcmV0LmFwcGVuZCgiLUIiKQorICAgICAgICByZXQuYXBwZW5kKCJDUk9TU19DT01QSUxFPSIgKyBzZWxmLmNyb3NzX2NvbXBpbGUpCiAKLSMgQnVpbGQgYW5kIHBvcHVsYXRlIHRoZSByZWNpcGUtc3lzcm9vdC1uYXRpdmUgd2l0aCBzeXN0ZW10YXAtbmF0aXZlCi1wdXNoZCAkUFdECi1jZCAkQlVJTERESVIKLUJJVEJBS0VfVkFSUz1gYml0YmFrZSAtZSBzeXN0ZW10YXAtbmF0aXZlYAotcG9wZAotU1lTVEVNVEFQX0hPU1RfSU5TVEFMTERJUj0kKGVjaG8gIiRCSVRCQUtFX1ZBUlMiIHwgZ3JlcCBeU1RBR0lOR19ESVJfTkFUSVZFIFwKLSAgfCBjdXQgLWQgJz0nIC1mMiB8IGN1dCAtZCAnIicgLWYyKQorICAgICAgICByZXQuYXBwZW5kKCItciIpCisgICAgICAgIHJldC5hcHBlbmQoc2VsZi5rZXJuZWxfcmVsZWFzZSkKIAotc3lzdGVtdGFwX3RhcmdldF9hcmNoICIkVEFSR0VUX0FSQ0giCisgICAgICAgIHJldC5hcHBlbmQoIi1JIikKKyAgICAgICAgcmV0LmFwcGVuZChzZWxmLnRhcHNldCkKIAotaWYgWyAhIC1kICRUQVJHRVRfS0VSTkVMX0JVSUxERElSIF0gfHwKLSAgIFsgISAtZiAkVEFSR0VUX0tFUk5FTF9CVUlMRERJUi92bWxpbnV4IF07IHRoZW4KLSAgICBlY2hvIC1lICJcbkVycm9yOiBObyB0YXJnZXQga2VybmVsIGJ1aWxkIGZvdW5kLiIKLSAgICBlY2hvIC1lICJEaWQgeW91IGZvcmdldCB0byBjcmVhdGUgYSBsb2NhbCBidWlsZCBvZiB5b3VyIGltYWdlPyIKLSAgICBzZXR1cF91c2FnZQotICAgIGV4aXQgMQotZmkKKyAgICAgICAgcmV0LmFwcGVuZCgiLVIiKQorICAgICAgICByZXQuYXBwZW5kKHNlbGYucnVudGltZSkKIAotaWYgWyAhIC1mICRTWVNURU1UQVBfSE9TVF9JTlNUQUxMRElSL3Vzci9iaW4vc3RhcCBdOyB0aGVuCi0gICAgZWNobyAtZSAiXG5FcnJvcjogTmF0aXZlIChob3N0KSBzeXN0ZW10YXAgbm90IGZvdW5kLiIKLSAgICBlY2hvIC1lICJEaWQgeW91IGFjY2lkZW50YWxseSBidWlsZCBhIGxvY2FsIG5vbi1zZGsgaW1hZ2U/IChvciBmb3JnZXQgdG8iCi0gICAgZWNobyAtZSAiYWRkICd0b29scy1wcm9maWxlJyB0byBFWFRSQV9JTUFHRV9GRUFUVVJFUyBpbiB5b3VyIGxvY2FsLmNvbmYpPyIKLSAgICBlY2hvIC1lICJZb3UgY2FuIGFsc286IGJpdGJha2UgLWMgYWRkdG9fcmVjaXBlX3N5c3Jvb3Qgc3lzdGVtdGFwLW5hdGl2ZSIKLSAgICBzZXR1cF91c2FnZQotICAgIGV4aXQgMQotZmkKKyAgICAgICAgaWYgc2VsZi5zeXNyb290OgorICAgICAgICAgICAgcmV0LmFwcGVuZCgiLS1zeXNyb290IikKKyAgICAgICAgICAgIHJldC5hcHBlbmQoc2VsZi5zeXNyb290KQogCi10YXJnZXRfdXNlcl9ob3N0bmFtZT0iJDEiCi1mdWxsX3NjcmlwdF9uYW1lPSIkMiIKLXNjcmlwdF9uYW1lPSQoYmFzZW5hbWUgIiQyIikKLXNjcmlwdF9iYXNlPSR7c2NyaXB0X25hbWUlLip9Ci1zaGlmdCAyCisgICAgICAgICAgICByZXQuYXBwZW5kKCItLXN5c2Vudj1QQVRIPSIgKyBzZWxmLnRhcmdldF9wYXRoKQorICAgICAgICAgICAgcmV0LmFwcGVuZCgiLS1zeXNlbnY9TERfTElCUkFSWV9QQVRIPSIgKyBzZWxmLnRhcmdldF9sZF9saWJyYXJ5X3BhdGgpCiAKLSR7U1lTVEVNVEFQX0hPU1RfSU5TVEFMTERJUn0vdXNyL2Jpbi9zdGFwIFwKLSAgLWEgJHtTWVNURU1UQVBfVEFSR0VUX0FSQ0h9IFwKLSAgLUIgQ1JPU1NfQ09NUElMRT0iJHtTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU59LyR7U1RBR0lOR19CSU5ESVJfVE9PTFBSRUZJWH0iIFwKLSAgLXIgJHtUQVJHRVRfS0VSTkVMX0JVSUxERElSfSBcCi0gIC1JICR7U1lTVEVNVEFQX0hPU1RfSU5TVEFMTERJUn0vdXNyL3NoYXJlL3N5c3RlbXRhcC90YXBzZXQgXAotICAtUiAke1NZU1RFTVRBUF9IT1NUX0lOU1RBTExESVJ9L3Vzci9zaGFyZS9zeXN0ZW10YXAvcnVudGltZSBcCi0gIC0tcmVtb3RlPSR0YXJnZXRfdXNlcl9ob3N0bmFtZSBcCi0gIC1tICRzY3JpcHRfYmFzZSBcCi0gICAkZnVsbF9zY3JpcHRfbmFtZSAiJEAiCisgICAgICAgIHJldCA9IHJldCArIGFyZ3MKIAotZXhpdCAwCisgICAgICAgIHJldC5hcHBlbmQoc2VsZi5zY3JpcHQpCisgICAgICAgIHJldHVybiByZXQKKworICAgIGRlZiBhZGRpdGlvbmFsX2Vudmlyb25tZW50KHNlbGYpOgorICAgICAgICByZXQgPSB7fQorICAgICAgICByZXRbIlNZU1RFTVRBUF9ERUJVR0lORk9fUEFUSCJdID0gIis6LmRlYnVnOmJ1aWxkIgorICAgICAgICByZXR1cm4gcmV0CisKKyAgICBkZWYgZW52aXJvbm1lbnQoc2VsZik6CisgICAgICAgIHJldCA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgIGFkZGl0aW9uYWwgPSBzZWxmLmFkZGl0aW9uYWxfZW52aXJvbm1lbnQoKQorICAgICAgICBmb3IgZSBpbiBhZGRpdGlvbmFsOgorICAgICAgICAgICAgcmV0W2VdID0gYWRkaXRpb25hbFtlXQorICAgICAgICByZXR1cm4gcmV0CisKKyAgICBkZWYgZGlzcGxheV9jb21tYW5kKHNlbGYsIGFyZ3MpOgorICAgICAgICBhZGRpdGlvbmFsX2VudiA9IHNlbGYuYWRkaXRpb25hbF9lbnZpcm9ubWVudCgpCisgICAgICAgIGNvbW1hbmQgPSBzZWxmLmNvbW1hbmQoYXJncykKKworICAgICAgICBwcmludCgiIyEvYmluL3NoIikKKyAgICAgICAgZm9yIGUgaW4gYWRkaXRpb25hbF9lbnY6CisgICAgICAgICAgICBwcmludCgiZXhwb3J0ICVzPVwiJXNcIiIgJSAoZSwgYWRkaXRpb25hbF9lbnZbZV0pKQorICAgICAgICBwcmludCgiICIuam9pbihjb21tYW5kKSkKKworY2xhc3MgQml0YmFrZUVudkludm9jYXRpb25FeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSk6CisgICAgICAgIHNlbGYubWVzc2FnZSA9IG1lc3NhZ2UKKworY2xhc3MgQml0YmFrZUVudihvYmplY3QpOgorICAgIEJJVEJBS0U9ImJpdGJha2UiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFja2FnZSk6CisgICAgICAgIHNlbGYucGFja2FnZSA9IHBhY2thZ2UKKyAgICAgICAgc2VsZi5jbWQgPSBCaXRiYWtlRW52LkJJVEJBS0UgKyAiIC1lICIgKyBzZWxmLnBhY2thZ2UKKyAgICAgICAgc2VsZi5wb3BlbiA9IHN1YnByb2Nlc3MuUG9wZW4oc2VsZi5jbWQsIHNoZWxsPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKKyAgICAgICAgc2VsZi5fX2xpbmVzID0gc2VsZi5wb3Blbi5zdGRvdXQucmVhZGxpbmVzKCkKKyAgICAgICAgc2VsZi5wb3Blbi53YWl0KCkKKworICAgICAgICBzZWxmLmxpbmVzID0gW10KKyAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5fX2xpbmVzOgorICAgICAgICAgICAgICAgIHNlbGYubGluZXMuYXBwZW5kKGxpbmUuZGVjb2RlKCd1dGYtOCcpKQorCisgICAgZGVmIGdldF92YXJzKHNlbGYsIHZhcnMpOgorICAgICAgICBpZiBzZWxmLnBvcGVuLnJldHVybmNvZGU6CisgICAgICAgICAgICByYWlzZSBCaXRiYWtlRW52SW52b2NhdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAiXG5GYWlsZWQgdG8gZXhlY3V0ZSAnIiArIHNlbGYuY21kICsKKyAgICAgICAgICAgICAgICAiJyB3aXRoIHRoZSBmb2xsb3dpbmcgbWVzc2FnZTpcbiIgKworICAgICAgICAgICAgICAgICcnLmpvaW4oc2VsZi5saW5lcykpCisKKyAgICAgICAgc2VhcmNoX3BhdHRlcm5zID0gW10KKyAgICAgICAgcmV0ZGljdCA9IHt9CisgICAgICAgIGZvciB2YXIgaW4gdmFyczoKKyAgICAgICAgICAgICMgcmVndWxhciBub3QgZXhwb3J0ZWQgdmFyaWFibGUKKyAgICAgICAgICAgIHJleHByID0gIl4iICsgdmFyICsgIj1cIiguKilcIiIKKyAgICAgICAgICAgIHJlX2NvbXBpbGVkID0gcmUuY29tcGlsZShyZXhwcikKKyAgICAgICAgICAgIHNlYXJjaF9wYXR0ZXJucy5hcHBlbmQoKHZhciwgcmVfY29tcGlsZWQpKQorCisgICAgICAgICAgICAjIGV4cG9ydGVkIHZhcmlhYmxlCisgICAgICAgICAgICByZXhwciA9ICJeZXhwb3J0ICIgKyB2YXIgKyAiPVwiKC4qKVwiIgorICAgICAgICAgICAgcmVfY29tcGlsZWQgPSByZS5jb21waWxlKHJleHByKQorICAgICAgICAgICAgc2VhcmNoX3BhdHRlcm5zLmFwcGVuZCgodmFyLCByZV9jb21waWxlZCkpCisKKyAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYubGluZXM6CisgICAgICAgICAgICAgICAgZm9yIHZhciwgcmV4cHIgaW4gc2VhcmNoX3BhdHRlcm5zOgorICAgICAgICAgICAgICAgICAgICBtID0gcmV4cHIubWF0Y2gobGluZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbS5ncm91cCgxKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0ZGljdFt2YXJdID0gdmFsdWUKKworICAgICAgICAjIGZpbGwgdmFyaWFibGVzIHZhbHVlcyBpbiBvcmRlciBob3cgdGhleSB3ZXJlIHJlcXVlc3RlZAorICAgICAgICByZXQgPSBbXQorICAgICAgICBmb3IgdmFyIGluIHZhcnM6CisgICAgICAgICAgICByZXQuYXBwZW5kKHJldGRpY3QuZ2V0KHZhcikpCisKKyAgICAgICAgIyBpZiBpdCBpcyBzaW5nbGUgdmFsdWUgbGlzdCByZXR1cm4gaXQgYXMgc2NhbGFyLCBub3QgdGhlIGxpc3QKKyAgICAgICAgaWYgbGVuKHJldCkgPT0gMToKKyAgICAgICAgICAgIHJldCA9IHJldFswXQorCisgICAgICAgIHJldHVybiByZXQKKworY2xhc3MgUGFyYW1EaXNjb3Zlcnkob2JqZWN0KToKKyAgICBTWU1CT0xTX0NIRUNLX01FU1NBR0UgPSAiIiIKK1dBUk5JTkc6IGltYWdlICclcycgZG9lcyBub3QgaGF2ZSBkYmctcGtncyBJTUFHRV9GRUFUVVJFUyBlbmFibGVkIGFuZCBubworImltYWdlLWNvbWJpbmVkLWRiZyIgaW4gaW5oZXJpdGVkIGNsYXNzZXMgaXMgc3BlY2lmaWVkLiBBcyByZXN1bHQgdGhlIGltYWdlCitkb2VzIG5vdCBoYXZlIHN5bWJvbHMgZm9yIHVzZXItbGFuZCBwcm9jZXNzZXMgRFdBUkYgYmFzZWQgcHJvYmVzLiBDb25zaWRlcgorYWRkaW5nICdkYmctcGtncycgdG8gRVhUUkFfSU1BR0VfRkVBVFVSRVMgb3IgYWRkaW5nICJpbWFnZS1jb21iaW5lZC1kYmciIHRvCitVU0VSX0NMQVNTRVMuIEkuZSBhZGQgdGhpcyBsaW5lICdVU0VSX0NMQVNTRVMgKz0gImltYWdlLWNvbWJpbmVkLWRiZyInIHRvCitsb2NhbC5jb25mIGZpbGUuCisKK09yIHlvdSBtYXkgdXNlIElNQUdFX0dFTl9ERUJVR0ZTPSIxIiBvcHRpb24sIGFuZCB0aGVuIGFmdGVyIGJ1aWxkIHlvdSBuZWVkCityZWNvbWJpbmUvdW5wYWNrIGltYWdlIGFuZCBpbWFnZS1kYmcgdGFyYmFsbHMgYW5kIHBhc3MgcmVzdWx0aW5nIGRpciBsb2NhdGlvbgord2l0aCAtLXN5c3Jvb3Qgb3B0aW9uLgorIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaW1hZ2UpOgorICAgICAgICBzZWxmLmltYWdlID0gaW1hZ2UKKworICAgICAgICBzZWxmLmltYWdlX3Jvb3RmcyA9IE5vbmUKKyAgICAgICAgc2VsZi5pbWFnZV9mZWF0dXJlcyA9IE5vbmUKKyAgICAgICAgc2VsZi5pbWFnZV9nZW5fZGVidWdmcyA9IE5vbmUKKyAgICAgICAgc2VsZi5pbmhlcml0ID0gTm9uZQorICAgICAgICBzZWxmLmJhc2VfYmluZGlyID0gTm9uZQorICAgICAgICBzZWxmLmJhc2Vfc2JpbmRpciA9IE5vbmUKKyAgICAgICAgc2VsZi5iYXNlX2xpYmRpciA9IE5vbmUKKyAgICAgICAgc2VsZi5iaW5kaXIgPSBOb25lCisgICAgICAgIHNlbGYuc2JpbmRpciA9IE5vbmUKKyAgICAgICAgc2VsZi5saWJkaXIgPSBOb25lCisKKyAgICAgICAgc2VsZi5zdGFnaW5nX2JpbmRpcl90b29sY2hhaW4gPSBOb25lCisgICAgICAgIHNlbGYudGFyZ2V0X3ByZWZpeCA9IE5vbmUKKyAgICAgICAgc2VsZi50YXJnZXRfYXJjaCA9IE5vbmUKKyAgICAgICAgc2VsZi50YXJnZXRfa2VybmVsX2J1aWxkZGlyID0gTm9uZQorCisgICAgICAgIHNlbGYuc3RhZ2luZ19kaXJfbmF0aXZlID0gTm9uZQorCisgICAgICAgIHNlbGYuaW1hZ2VfY29tYmluZWRfZGJnID0gRmFsc2UKKworICAgIGRlZiBkaXNjb3ZlcihzZWxmKToKKyAgICAgICAgaWYgc2VsZi5pbWFnZToKKyAgICAgICAgICAgIGJlbnZfaW1hZ2UgPSBCaXRiYWtlRW52KHNlbGYuaW1hZ2UpCisgICAgICAgICAgICAoc2VsZi5pbWFnZV9yb290ZnMsCisgICAgICAgICAgICAgc2VsZi5pbWFnZV9mZWF0dXJlcywKKyAgICAgICAgICAgICBzZWxmLmltYWdlX2dlbl9kZWJ1Z2ZzLAorICAgICAgICAgICAgIHNlbGYuaW5oZXJpdCwKKyAgICAgICAgICAgICBzZWxmLmJhc2VfYmluZGlyLAorICAgICAgICAgICAgIHNlbGYuYmFzZV9zYmluZGlyLAorICAgICAgICAgICAgIHNlbGYuYmFzZV9saWJkaXIsCisgICAgICAgICAgICAgc2VsZi5iaW5kaXIsCisgICAgICAgICAgICAgc2VsZi5zYmluZGlyLAorICAgICAgICAgICAgIHNlbGYubGliZGlyCisgICAgICAgICAgICApID0gYmVudl9pbWFnZS5nZXRfdmFycygKKyAgICAgICAgICAgICAgICAgKCJJTUFHRV9ST09URlMiLAorICAgICAgICAgICAgICAgICAgIklNQUdFX0ZFQVRVUkVTIiwKKyAgICAgICAgICAgICAgICAgICJJTUFHRV9HRU5fREVCVUdGUyIsCisgICAgICAgICAgICAgICAgICAiSU5IRVJJVCIsCisgICAgICAgICAgICAgICAgICAiYmFzZV9iaW5kaXIiLAorICAgICAgICAgICAgICAgICAgImJhc2Vfc2JpbmRpciIsCisgICAgICAgICAgICAgICAgICAiYmFzZV9saWJkaXIiLAorICAgICAgICAgICAgICAgICAgImJpbmRpciIsCisgICAgICAgICAgICAgICAgICAic2JpbmRpciIsCisgICAgICAgICAgICAgICAgICAibGliZGlyIgorICAgICAgICAgICAgICAgICAgKSkKKworICAgICAgICBiZW52X2tlcm5lbCA9IEJpdGJha2VFbnYoInZpcnR1YWwva2VybmVsIikKKyAgICAgICAgKHNlbGYuc3RhZ2luZ19iaW5kaXJfdG9vbGNoYWluLAorICAgICAgICAgc2VsZi50YXJnZXRfcHJlZml4LAorICAgICAgICAgc2VsZi50YXJnZXRfYXJjaCwKKyAgICAgICAgIHNlbGYudGFyZ2V0X2tlcm5lbF9idWlsZGRpcgorICAgICAgICApID0gYmVudl9rZXJuZWwuZ2V0X3ZhcnMoCisgICAgICAgICAgICAgKCJTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU4iLAorICAgICAgICAgICAgICAiVEFSR0VUX1BSRUZJWCIsCisgICAgICAgICAgICAgICJUUkFOU0xBVEVEX1RBUkdFVF9BUkNIIiwKKyAgICAgICAgICAgICAgIkIiCisgICAgICAgICAgICApKQorCisgICAgICAgIGJlbnZfc3lzdGVtdGFwID0gQml0YmFrZUVudigic3lzdGVtdGFwLW5hdGl2ZSIpCisgICAgICAgIChzZWxmLnN0YWdpbmdfZGlyX25hdGl2ZQorICAgICAgICApID0gYmVudl9zeXN0ZW10YXAuZ2V0X3ZhcnMoWyJTVEFHSU5HX0RJUl9OQVRJVkUiXSkKKworICAgICAgICBpZiBzZWxmLmluaGVyaXQ6CisgICAgICAgICAgICBpZiAiaW1hZ2UtY29tYmluZWQtZGJnIiBpbiBzZWxmLmluaGVyaXQuc3BsaXQoKToKKyAgICAgICAgICAgICAgICBzZWxmLmltYWdlX2NvbWJpbmVkX2RiZyA9IFRydWUKKworICAgIGRlZiBjaGVjayhzZWxmLCBzeXNyb290X29wdGlvbik6CisgICAgICAgIHJldCA9IFRydWUKKyAgICAgICAgaWYgc2VsZi5pbWFnZV9yb290ZnM6CisgICAgICAgICAgICBzeXNyb290ID0gc2VsZi5pbWFnZV9yb290ZnMKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHNlbGYuaW1hZ2Vfcm9vdGZzKToKKyAgICAgICAgICAgICAgICBwcmludCgiRVJST1I6IENhbm5vdCBmaW5kICciICsgc3lzcm9vdCArCisgICAgICAgICAgICAgICAgICAgICAgIicgZGlyZWN0b3J5LiBXYXMgJyIgKyBzZWxmLmltYWdlICsgIicgaW1hZ2UgYnVpbHQ/IikKKyAgICAgICAgICAgICAgICByZXQgPSBGYWxzZQorCisgICAgICAgIHN0YXAgPSBzZWxmLnN0YWdpbmdfZGlyX25hdGl2ZSArICIvdXNyL2Jpbi9zdGFwIgorICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoc3RhcCk6CisgICAgICAgICAgICBwcmludCgiRVJST1I6IENhbm5vdCBmaW5kICciICsgc3RhcCArCisgICAgICAgICAgICAgICAgICAiJy4gV2FzICdzeXN0ZW10YXAtbmF0aXZlJyBidWlsdD8iKQorICAgICAgICAgICAgcmV0ID0gRmFsc2UKKworICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihzZWxmLnRhcmdldF9rZXJuZWxfYnVpbGRkaXIpOgorICAgICAgICAgICAgcHJpbnQoIkVSUk9SOiBDYW5ub3QgZmluZCAnIiArIHNlbGYudGFyZ2V0X2tlcm5lbF9idWlsZGRpciArCisgICAgICAgICAgICAgICAgICAiJyBkaXJlY3RvcnkuIFdhcyAna2VybmVsL3ZpcnR1YWwnIGJ1aWx0PyIpCisgICAgICAgICAgICByZXQgPSBGYWxzZQorCisgICAgICAgIGlmIG5vdCBzeXNyb290X29wdGlvbiBhbmQgc2VsZi5pbWFnZV9yb290ZnM6CisgICAgICAgICAgICBkYmdfcGtnc19mb3VuZCA9IEZhbHNlCisKKyAgICAgICAgICAgIGlmIHNlbGYuaW1hZ2VfZmVhdHVyZXM6CisgICAgICAgICAgICAgICAgaW1hZ2VfZmVhdHVyZXMgPSBzZWxmLmltYWdlX2ZlYXR1cmVzLnNwbGl0KCkKKyAgICAgICAgICAgICAgICBpZiAiZGJnLXBrZ3MiIGluIGltYWdlX2ZlYXR1cmVzOgorICAgICAgICAgICAgICAgICAgICBkYmdfcGtnc19mb3VuZCA9IFRydWUKKworICAgICAgICAgICAgaWYgbm90IGRiZ19wa2dzX2ZvdW5kIFwKKyAgICAgICAgICAgICAgIGFuZCBub3Qgc2VsZi5pbWFnZV9jb21iaW5lZF9kYmc6CisgICAgICAgICAgICAgICAgcHJpbnQoUGFyYW1EaXNjb3ZlcnkuU1lNQk9MU19DSEVDS19NRVNTQUdFICUgKHNlbGYuaW1hZ2UpKQorCisgICAgICAgIGlmIG5vdCByZXQ6CisgICAgICAgICAgICBwcmludCgiIikKKworICAgICAgICByZXR1cm4gcmV0CisKKyAgICBkZWYgX19tYXBfc3lzdGVtdGFwX2FyY2goc2VsZik6CisgICAgICAgIGEgPSBzZWxmLnRhcmdldF9hcmNoCisgICAgICAgIHJldCA9IGEKKyAgICAgICAgaWYgICByZS5tYXRjaCgnKGF0aGxvbnx4ODYuNjQpJCcsIGEpOgorICAgICAgICAgICAgcmV0ID0gJ3g4Nl82NCcKKyAgICAgICAgZWxpZiByZS5tYXRjaCgnaS44NiQnLCBhKToKKyAgICAgICAgICAgIHJldCA9ICdpMzg2JworICAgICAgICBlbGlmIHJlLm1hdGNoKCdhcm0kJywgYSk6CisgICAgICAgICAgICByZXQgPSAnYXJtJworICAgICAgICBlbGlmIHJlLm1hdGNoKCdhYXJjaDY0JCcsIGEpOgorICAgICAgICAgICAgcmV0ID0gJ2FybTY0JworICAgICAgICBlbGlmIHJlLm1hdGNoKCdtaXBzKGlzYXwpKDMyfDY0fCkocjZ8KShlbHwpJCcsIGEpOgorICAgICAgICAgICAgcmV0ID0gJ21pcHMnCisgICAgICAgIGVsaWYgcmUubWF0Y2goJ3AocGN8b3dlcnBjKSh8NjQpJywgYSk6CisgICAgICAgICAgICByZXQgPSAncG93ZXJwYycKKyAgICAgICAgcmV0dXJuIHJldAorCisgICAgZGVmIGZpbGxfc3RhcChzZWxmLCBzdGFwKToKKyAgICAgICAgc3RhcC5zdGFwID0gc2VsZi5zdGFnaW5nX2Rpcl9uYXRpdmUgKyAiL3Vzci9iaW4vc3RhcCIKKyAgICAgICAgaWYgbm90IHN0YXAuc3lzcm9vdDoKKyAgICAgICAgICAgIGlmIHNlbGYuaW1hZ2Vfcm9vdGZzOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuaW1hZ2VfY29tYmluZWRfZGJnOgorICAgICAgICAgICAgICAgICAgICBzdGFwLnN5c3Jvb3QgPSBzZWxmLmltYWdlX3Jvb3RmcyArICItZGJnIgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHN0YXAuc3lzcm9vdCA9IHNlbGYuaW1hZ2Vfcm9vdGZzCisgICAgICAgIHN0YXAucnVudGltZSA9IHNlbGYuc3RhZ2luZ19kaXJfbmF0aXZlICsgIi91c3Ivc2hhcmUvc3lzdGVtdGFwL3J1bnRpbWUiCisgICAgICAgIHN0YXAudGFwc2V0ID0gc2VsZi5zdGFnaW5nX2Rpcl9uYXRpdmUgKyAiL3Vzci9zaGFyZS9zeXN0ZW10YXAvdGFwc2V0IgorICAgICAgICBzdGFwLmFyY2ggPSBzZWxmLl9fbWFwX3N5c3RlbXRhcF9hcmNoKCkKKyAgICAgICAgc3RhcC5jcm9zc19jb21waWxlID0gc2VsZi5zdGFnaW5nX2JpbmRpcl90b29sY2hhaW4gKyAiLyIgKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGFyZ2V0X3ByZWZpeAorICAgICAgICBzdGFwLmtlcm5lbF9yZWxlYXNlID0gc2VsZi50YXJnZXRfa2VybmVsX2J1aWxkZGlyCisKKyAgICAgICAgIyBkbyB3ZSBoYXZlIHN0YW5kYXJkIHRoYXQgdGVsbHMgaW4gd2hpY2ggb3JkZXIgdGhlc2UgbmVlZCB0byBhcHBlYXIKKyAgICAgICAgdGFyZ2V0X3BhdGggPSBbXQorICAgICAgICBpZiBzZWxmLnNiaW5kaXI6CisgICAgICAgICAgICB0YXJnZXRfcGF0aC5hcHBlbmQoc2VsZi5zYmluZGlyKQorICAgICAgICBpZiBzZWxmLmJpbmRpcjoKKyAgICAgICAgICAgIHRhcmdldF9wYXRoLmFwcGVuZChzZWxmLmJpbmRpcikKKyAgICAgICAgaWYgc2VsZi5iYXNlX3NiaW5kaXI6CisgICAgICAgICAgICB0YXJnZXRfcGF0aC5hcHBlbmQoc2VsZi5iYXNlX3NiaW5kaXIpCisgICAgICAgIGlmIHNlbGYuYmFzZV9iaW5kaXI6CisgICAgICAgICAgICB0YXJnZXRfcGF0aC5hcHBlbmQoc2VsZi5iYXNlX2JpbmRpcikKKyAgICAgICAgc3RhcC50YXJnZXRfcGF0aCA9ICI6Ii5qb2luKHRhcmdldF9wYXRoKQorCisgICAgICAgIHRhcmdldF9sZF9saWJyYXJ5X3BhdGggPSBbXQorICAgICAgICBpZiBzZWxmLmxpYmRpcjoKKyAgICAgICAgICAgIHRhcmdldF9sZF9saWJyYXJ5X3BhdGguYXBwZW5kKHNlbGYubGliZGlyKQorICAgICAgICBpZiBzZWxmLmJhc2VfbGliZGlyOgorICAgICAgICAgICAgdGFyZ2V0X2xkX2xpYnJhcnlfcGF0aC5hcHBlbmQoc2VsZi5iYXNlX2xpYmRpcikKKyAgICAgICAgc3RhcC50YXJnZXRfbGRfbGlicmFyeV9wYXRoID0gIjoiLmpvaW4odGFyZ2V0X2xkX2xpYnJhcnlfcGF0aCkKKworCitkZWYgbWFpbigpOgorICAgIHVzYWdlID0gIiIidXNhZ2U6ICVwcm9nIC1zIDxzeXN0ZW10YXAtc2NyaXB0PiBbb3B0aW9uc10gWy0tIFtzeXN0ZW10YXAgb3B0aW9uc11dCisKKyVwcm9nIGNyb3NzIGNvbXBpbGUgZ2l2ZW4gU3lzdGVtVGFwIHNjcmlwdCBhZ2FpbnN0IGdpdmVuIGltYWdlLCBrZXJuZWwKKworSXQgbmVlZHMgdG8gcnVuIGluIGVudmlyb250bWVudCBzZXQgZm9yIGJpdGJha2UgLSBpdCB1c2VzIGJpdGJha2UgLWUKK2ludm9jYXRpb25zIHRvIHJldHJpZXZlIGluZm9ybWF0aW9uIHRvIGNvbnN0cnVjdCBwcm9wZXIgc3RhcCBjcm9zcyBidWlsZAoraW52b2NhdGlvbiBhcmd1bWVudHMuIEl0IGFzc3VtZXMgdGhhdCBzeXN0ZW10YXAtbmF0aXZlIGlzIGJ1aWx0IGluIGdpdmVuCitiaXRiYWtlIHdvcmtzcGFjZS4KKworQW55dGhpbmcgYWZ0ZXIgLS0gb3B0aW9uIGlzIHBhc3NlZCBkaXJlY3RseSB0byBzdGFwLgorCitMZWdhY3kgc2NyaXB0IGludm9jYXRpb24gc3R5bGUgc3VwcG9ydGVkIGJ1dCBkZXByZWNpYXRlZDoKKyAgJXByb2cgPHVzZXJAaG9zdG5hbWU+IDxzeXRlbXRhcC1zY3JpcHQ+IFtzeXN0ZW10YXAgb3B0aW9uc10KKworVG8gZW5hYmxlIG1vc3Qgb3V0IG9mIHN5c3RlbXRhcCB0aGUgZm9sbG93aW5nIHNpdGUuY29uZiBvciBsb2NhbC5jb25mCitjb25maWd1cmF0aW9uIGlzIHJlY29tbWVuZGVkOgorCisjIGVuYWJsZXMgc3ltYm9sICsgdGFyZ2V0IGJpbmFyaWVzIHJvb3Rmcy1kYmcgaW4gd29ya3NwYWNlCitJTUFHRV9HRU5fREVCVUdGUyA9ICIxIgorSU1BR0VfRlNUWVBFU19ERUJVR0ZTID0gInRhci5iejIiCitVU0VSX0NMQVNTRVMgKz0gImltYWdlLWNvbWJpbmVkLWRiZyIKKworIyBlbmFibGVzIGtlcm5lbCBkZWJ1ZyBzeW1ib2xzCitLRVJORUxfRVhUUkFfRkVBVFVSRVNfYXBwZW5kID0gIiBmZWF0dXJlcy9kZWJ1Zy9kZWJ1Zy1rZXJuZWwuc2NjIgorCisjIG1pbmltYWwsIGp1c3QgcnVuLXRpbWUgc3lzdGVtdGFwIGNvbmZpZ3VyYXRpb24gaW4gdGFyZ2V0IGltYWdlCitQQUNLQUdFQ09ORklHX3BuLXN5c3RlbXRhcCA9ICJtb25pdG9yIgorCisjIGFkZCBzeXN0ZW10YXAgcnVuLXRpbWUgaW50byB0YXJnZXQgaW1hZ2UgaWYgaXQgaXMgbm90IHRoZXJlIHlldAorSU1BR0VfSU5TVEFMTF9hcHBlbmQgPSAiIHN5c3RlbXRhcCIKKyIiIgorICAgIG9wdGlvbl9wYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2U9dXNhZ2UpCisKKyAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oIi1zIiwgIi0tc2NyaXB0IiwgZGVzdD0ic2NyaXB0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ic3BlY2lmeSBpbnB1dCBzY3JpcHQgRklMRSBuYW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YXZhcj0iRklMRSIpCisKKyAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oIi1pIiwgIi0taW1hZ2UiLCBkZXN0PSJpbWFnZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9InNwZWNpZnkgaW1hZ2UgbmFtZSBmb3Igd2hpY2ggc2NyaXB0IHNob3VsZCBiZSBjb21waWxlZCIpCisKKyAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oIi1yIiwgIi0tcmVtb3RlIiwgZGVzdD0icmVtb3RlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ic3BlY2lmeSB1c2VybmFtZUBob3N0bmFtZSBvZiByZW1vdGUgdGFyZ2V0IHRvIHJ1biBzY3JpcHQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3B0aW9uYWwsIGl0IGFzc3VtZXMgdGhhdCByZW1vdGUgdGFyZ2V0IGNhbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIHNzaCIpCisKKyAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oIi1tIiwgIi0tbW9kdWxlIiwgZGVzdD0ibW9kdWxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ic3BlY2lmeSBtb2R1bGUgbmFtZSwgb3B0aW9uYWwsIGhhcyBlZmZlY3Qgb25seSBpZiAtLXJlbW90ZSBpcyBub3QgdXNlZCwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWYgbm90IHNwZWNpZmllZCBtb2R1bGUgbmFtZSB3aWxsIGJlIGRlcml2ZWQgZnJvbSBwYXNzZWQgc2NyaXB0IG5hbWUiKQorCisgICAgb3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCIteSIsICItLXN5c3Jvb3QiLCBkZXN0PSJzeXNyb290IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iZXhwbGljaXRlbHkgc3BlY2lmeSBpbWFnZSBzeXNyb290IGxvY2F0aW9uLiBNYXkgbmVlZCB0byB1c2UgaXQgaW4gY2FzZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aGVuIElNQUdFX0dFTl9ERUJVR0ZTPVwiMVwiIG9wdGlvbiBpcyB1c2VkIGFuZCByZWNvbWJpbmVkIHdpdGggc3ltYm9scyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiBkaWZmZXJlbnQgbG9jYXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhdmFyPSJESVIiKQorCisgICAgb3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCItbyIsICItLW91dCIsIGRlc3Q9Im91dCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9Im91dHB1dCBzaGVsbCBzY3JpcHQgdGhhdCBlcXV2aXZhbGVudCBpbnZvY2F0aW9uIG9mIHRoaXMgc2NyaXB0IHdpdGggIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2l2ZW4gc2V0IG9mIGFyZ3VtZW50cywgaW4gZ2l2ZW4gYml0YmFrZSBlbnZpcm9ubWVudC4gSXQgY291bGQgYmUgc3RvcmVkIGluICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlcGFyYXRlIHNoZWxsIHNjcmlwdCBhbmQgY291bGQgYmUgcmVwZWF0ZWQgd2l0aG91dCBpbmN1cmluZyBiaXRiYWtlIC1lICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludm9jYXRpb24gb3ZlcmhlYWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlKQorCisgICAgb3B0aW9uX3BhcnNlci5hZGRfb3B0aW9uKCItZCIsICItLWRlYnVnIiwgZGVzdD0iZGVidWciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJlbmFibGUgZGVidWcgb3V0cHV0LiBVc2UgdGhpcyBvcHRpb24gdG8gc2VlIHJlc3VsdGluZyBzdGFwIGludm9jYXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlKQorCisgICAgIyBpcyBpbnZvY2F0aW9uIGZvbGxvdyBzeW50YXggZnJvbSBvcmlnbmFsIGNyb3NzdGFwIHNoZWxsIHNjcmlwdAorICAgIGxlZ2FjeV9hcmdzID0gRmFsc2UKKworICAgICMgY2hlY2sgaWYgd2UgY2FsbGVkIHRoZSBsZWdhY3kgd2F5CisgICAgaWYgbGVuKHN5cy5hcmd2KSA+PSAzOgorICAgICAgICBpZiBzeXMuYXJndlsxXS5maW5kKCJAIikgIT0gLTEgYW5kIG9zLnBhdGguZXhpc3RzKHN5cy5hcmd2WzJdKToKKyAgICAgICAgICAgIGxlZ2FjeV9hcmdzID0gVHJ1ZQorCisgICAgICAgICAgICAjIGZpbGwgb3B0aW9ucyB2YWx1ZXMgZm9yIGxlZ2FjeSBpbnZvY2F0aW9uIGNhc2UKKyAgICAgICAgICAgIG9wdGlvbnMgPSBvcHRwYXJzZS5WYWx1ZXMKKyAgICAgICAgICAgIG9wdGlvbnMuc2NyaXB0ID0gc3lzLmFyZ3ZbMl0KKyAgICAgICAgICAgIG9wdGlvbnMucmVtb3RlID0gc3lzLmFyZ3ZbMV0KKyAgICAgICAgICAgIG9wdGlvbnMuaW1hZ2UgPSBOb25lCisgICAgICAgICAgICBvcHRpb25zLm1vZHVsZSA9IE5vbmUKKyAgICAgICAgICAgIG9wdGlvbnMuc3lzcm9vdCA9IE5vbmUKKyAgICAgICAgICAgIG9wdGlvbnMub3V0ID0gTm9uZQorICAgICAgICAgICAgb3B0aW9ucy5kZWJ1ZyA9IE5vbmUKKyAgICAgICAgICAgIHJlbWFpbmluZ19hcmdzID0gc3lzLmFyZ3ZbMzpdCisKKyAgICBpZiBub3QgbGVnYWN5X2FyZ3M6CisgICAgICAgIChvcHRpb25zLCByZW1haW5pbmdfYXJncykgPSBvcHRpb25fcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgaWYgbm90IG9wdGlvbnMuc2NyaXB0IG9yIG5vdCBvcy5wYXRoLmV4aXN0cyhvcHRpb25zLnNjcmlwdCk6CisgICAgICAgIHByaW50KCInLXMgRklMRScgb3B0aW9uIGlzIG1pc3NpbmdcbiIpCisgICAgICAgIG9wdGlvbl9wYXJzZXIucHJpbnRfaGVscCgpCisgICAgZWxzZToKKyAgICAgICAgc3RhcCA9IFN0YXAob3B0aW9ucy5zY3JpcHQsIG9wdGlvbnMubW9kdWxlLCBvcHRpb25zLnJlbW90ZSkKKyAgICAgICAgZGlzY292ZXJ5ID0gUGFyYW1EaXNjb3Zlcnkob3B0aW9ucy5pbWFnZSkKKyAgICAgICAgZGlzY292ZXJ5LmRpc2NvdmVyKCkKKyAgICAgICAgaWYgbm90IGRpc2NvdmVyeS5jaGVjayhvcHRpb25zLnN5c3Jvb3QpOgorICAgICAgICAgICAgb3B0aW9uX3BhcnNlci5wcmludF9oZWxwKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHN0YXAuc3lzcm9vdCA9IG9wdGlvbnMuc3lzcm9vdAorICAgICAgICAgICAgZGlzY292ZXJ5LmZpbGxfc3RhcChzdGFwKQorCisgICAgICAgICAgICBpZiBvcHRpb25zLm91dDoKKyAgICAgICAgICAgICAgICBzdGFwLmRpc3BsYXlfY29tbWFuZChyZW1haW5pbmdfYXJncykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY21kID0gc3RhcC5jb21tYW5kKHJlbWFpbmluZ19hcmdzKQorICAgICAgICAgICAgICAgIGVudiA9IHN0YXAuZW52aXJvbm1lbnQoKQorCisgICAgICAgICAgICAgICAgaWYgb3B0aW9ucy5kZWJ1ZzoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAiLmpvaW4oY21kKSkKKworICAgICAgICAgICAgICAgIG9zLmV4ZWN2ZShjbWRbMF0sIGNtZCwgZW52KQorCittYWluKCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2RldnRvb2wgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9kZXZ0b29sCmluZGV4IDUyOTJmMTguLmQ2ODFhMTkgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2RldnRvb2wKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvZGV2dG9vbApAQCAtMTEzLDIyICsxMTMsMzAgQEAKICAgICBleHRlcm5hbHNyY19yZSA9IHJlLmNvbXBpbGUocideRVhURVJOQUxTUkMoX3BuLShbXiA9XSspKT8gKj0gKiIoW14iXSopIiQnKQogICAgIGZvciBmbiBpbiBnbG9iLmdsb2Iob3MucGF0aC5qb2luKGNvbmZpZy53b3Jrc3BhY2VfcGF0aCwgJ2FwcGVuZHMnLCAnKi5iYmFwcGVuZCcpKToKICAgICAgICAgd2l0aCBvcGVuKGZuLCAncicpIGFzIGY6CisgICAgICAgICAgICBwbnZhbHVlcyA9IHt9CiAgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgogICAgICAgICAgICAgICAgIHJlcyA9IGV4dGVybmFsc3JjX3JlLm1hdGNoKGxpbmUucnN0cmlwKCkpCiAgICAgICAgICAgICAgICAgaWYgcmVzOgotICAgICAgICAgICAgICAgICAgICBwbiA9IHJlcy5ncm91cCgyKSBvciBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoZm4pKVswXS5zcGxpdCgnXycpWzBdCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZXBuID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKGZuKSlbMF0uc3BsaXQoJ18nKVswXQorICAgICAgICAgICAgICAgICAgICBwbiA9IHJlcy5ncm91cCgyKSBvciByZWNpcGVwbgogICAgICAgICAgICAgICAgICAgICAjIEZpbmQgdGhlIHJlY2lwZSBmaWxlIHdpdGhpbiB0aGUgd29ya3NwYWNlLCBpZiBhbnkKICAgICAgICAgICAgICAgICAgICAgYmJmaWxlID0gb3MucGF0aC5iYXNlbmFtZShmbikucmVwbGFjZSgnLmJiYXBwZW5kJywgJy5iYicpLnJlcGxhY2UoJyUnLCAnKicpCiAgICAgICAgICAgICAgICAgICAgIHJlY2lwZWZpbGUgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKGNvbmZpZy53b3Jrc3BhY2VfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlY2lwZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlcG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJiZmlsZSkpCiAgICAgICAgICAgICAgICAgICAgIGlmIHJlY2lwZWZpbGU6CiAgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGVmaWxlID0gcmVjaXBlZmlsZVswXQotICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2VbcG5dID0geydzcmN0cmVlJzogcmVzLmdyb3VwKDMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYmFwcGVuZCc6IGZuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWNpcGVmaWxlJzogcmVjaXBlZmlsZX0KLSAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCdGb3VuZCByZWNpcGUgJXMnICUgd29ya3NwYWNlW3BuXSkKKyAgICAgICAgICAgICAgICAgICAgcG52YWx1ZXNbJ3NyY3RyZWUnXSA9IHJlcy5ncm91cCgzKQorICAgICAgICAgICAgICAgICAgICBwbnZhbHVlc1snYmJhcHBlbmQnXSA9IGZuCisgICAgICAgICAgICAgICAgICAgIHBudmFsdWVzWydyZWNpcGVmaWxlJ10gPSByZWNpcGVmaWxlCisgICAgICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJyMgc3JjdHJlZWJhc2U6ICcpOgorICAgICAgICAgICAgICAgICAgICBwbnZhbHVlc1snc3JjdHJlZWJhc2UnXSA9IGxpbmUuc3BsaXQoJzonLCAxKVsxXS5zdHJpcCgpCisgICAgICAgICAgICBpZiBwbnZhbHVlczoKKyAgICAgICAgICAgICAgICBpZiBub3QgcG52YWx1ZXMuZ2V0KCdzcmN0cmVlYmFzZScsIE5vbmUpOgorICAgICAgICAgICAgICAgICAgICBwbnZhbHVlc1snc3JjdHJlZWJhc2UnXSA9IHBudmFsdWVzWydzcmN0cmVlJ10KKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ0ZvdW5kIHJlY2lwZSAlcycgJSBwbnZhbHVlcykKKyAgICAgICAgICAgICAgICB3b3Jrc3BhY2VbcG5dID0gcG52YWx1ZXMKIAogZGVmIGNyZWF0ZV93b3Jrc3BhY2UoYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKToKICAgICBpZiBhcmdzLmxheWVycGF0aDoKQEAgLTE1Nyw2ICsxNjUsNyBAQAogICAgICAgICAgICAgZi53cml0ZSgnQkJGSUxFX1BBVFRFUk5fd29ya3NwYWNlbGF5ZXIgPSAiXiQnICsgJ3tMQVlFUkRJUn0vIlxuJykKICAgICAgICAgICAgIGYud3JpdGUoJ0JCRklMRV9QQVRURVJOX0lHTk9SRV9FTVBUWV93b3Jrc3BhY2VsYXllciA9ICIxIlxuJykKICAgICAgICAgICAgIGYud3JpdGUoJ0JCRklMRV9QUklPUklUWV93b3Jrc3BhY2VsYXllciA9ICI5OSJcbicpCisgICAgICAgICAgICBmLndyaXRlKCdMQVlFUlNFUklFU19DT01QQVRfd29ya3NwYWNlbGF5ZXIgPSAiJHtMQVlFUlNFUklFU19DT01QQVRfY29yZX0iXG4nKQogICAgICAgICAjIEFkZCBhIFJFQURNRSBmaWxlCiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4od29ya3NwYWNlZGlyLCAnUkVBRE1FJyksICd3JykgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoJ1RoaXMgbGF5ZXIgd2FzIGNyZWF0ZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBkZXZ0b29sIHV0aWxpdHkgaW4gb3JkZXIgdG9cbicpCkBAIC0xODIsNyArMTkxLDExIEBACiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGJibGF5ZXJzX2NvbmYpOgogICAgICAgICBsb2dnZXIuZXJyb3IoJ1VuYWJsZSB0byBmaW5kIGJibGF5ZXJzLmNvbmYnKQogICAgICAgICByZXR1cm4KLSAgICBfLCBhZGRlZCA9IGJiLnV0aWxzLmVkaXRfYmJsYXllcnNfY29uZihiYmxheWVyc19jb25mLCB3b3Jrc3BhY2VkaXIsIGNvbmZpZy53b3Jrc3BhY2VfcGF0aCkKKyAgICBpZiBvcy5wYXRoLmFic3BhdGgod29ya3NwYWNlZGlyKSAhPSBvcy5wYXRoLmFic3BhdGgoY29uZmlnLndvcmtzcGFjZV9wYXRoKToKKyAgICAgICAgcmVtb3ZlZGlyID0gY29uZmlnLndvcmtzcGFjZV9wYXRoCisgICAgZWxzZToKKyAgICAgICAgcmVtb3ZlZGlyID0gTm9uZQorICAgIF8sIGFkZGVkID0gYmIudXRpbHMuZWRpdF9iYmxheWVyc19jb25mKGJibGF5ZXJzX2NvbmYsIHdvcmtzcGFjZWRpciwgcmVtb3ZlZGlyKQogICAgIGlmIGFkZGVkOgogICAgICAgICBsb2dnZXIuaW5mbygnRW5hYmxpbmcgd29ya3NwYWNlIGxheWVyIGluIGJibGF5ZXJzLmNvbmYnKQogICAgIGlmIGNvbmZpZy53b3Jrc3BhY2VfcGF0aCAhPSB3b3Jrc3BhY2VkaXI6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9kaXN0cm8vYnVpbGQtcmVjaXBlLWxpc3QucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9kaXN0cm8vYnVpbGQtcmVjaXBlLWxpc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjE2Mjc2NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2Rpc3Ryby9idWlsZC1yZWNpcGUtbGlzdC5weQpAQCAtMCwwICsxLDEyOSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIworIyBDb3B5cmlnaHQgKGMpIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAorIyB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisjIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgorIyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisjIG1vcmUgZGV0YWlscy4KKyMKKworaW1wb3J0IG9zCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgY3N2CitpbXBvcnQgc3lzCitpbXBvcnQgYXJncGFyc2UKKworX192ZXJzaW9uX18gPSAiMC4xLjAiCisKKyMgc2V0IG9mIEJQTnMKK3JlY2lwZW5hbWVzID0gc2V0KCkKKyMgbWFwIG9mIHJlY2lwZSAtPiBkYXRhCithbGxyZWNpcGVzID0ge30KKworZGVmIG1ha2VfYnBuKHJlY2lwZSk6CisgICAgcHJlZml4ZXMgPSAoIm5hdGl2ZXNkay0iLCkKKyAgICBzdWZmaXhlcyA9ICgiLW5hdGl2ZSIsICItY3Jvc3MiLCAiLWluaXRpYWwiLCAiLWludGVybWVkaWF0ZSIsICItY3Jvc3NzZGsiLCAiLWNyb3NzLWNhbmFkaWFuIikKKyAgICBmb3IgaXggaW4gcHJlZml4ZXMgKyBzdWZmaXhlczoKKyAgICAgICAgaWYgaXggaW4gcmVjaXBlOgorICAgICAgICAgICAgcmVjaXBlID0gcmVjaXBlLnJlcGxhY2UoaXgsICIiKQorICAgIHJldHVybiByZWNpcGUKKworZGVmIGdhdGhlcl9yZWNpcGVzKHJvd3MpOgorICAgIGZvciByb3cgaW4gcm93czoKKyAgICAgICAgcmVjaXBlID0gcm93WzBdCisgICAgICAgIGJwbiA9IG1ha2VfYnBuKHJlY2lwZSkKKyAgICAgICAgaWYgYnBuIG5vdCBpbiByZWNpcGVuYW1lczoKKyAgICAgICAgICAgIHJlY2lwZW5hbWVzLmFkZChicG4pCisgICAgICAgIGlmIHJlY2lwZSBub3QgaW4gYWxscmVjaXBlczoKKyAgICAgICAgICAgIGFsbHJlY2lwZXNbcmVjaXBlXSA9IHJvdworCitkZWYgZ2VuZXJhdGVfcmVjaXBlX2xpc3QoKToKKyAgICAjIG1hY2hpbmUgbGlzdAorICAgIG1hY2hpbmVfbGlzdCA9ICggInFlbXVhcm02NCIsICJxZW11YXJtIiwgInFlbXVtaXBzNjQiLCAicWVtdW1pcHMiLCAicWVtdXBwYyIsICJxZW11eDg2LTY0IiwgInFlbXV4ODYiICkKKyAgICAjIHNldCBmaWxlbmFtZSBmb3JtYXQKKyAgICBmbmZvcm1hdCA9ICdkaXN0cm9kYXRhLiVzLmNzdicKKworICAgICMgc3RvcmUgYWxsIGRhdGEgZmlsZXMgaW4gZGlzdHJvZGF0YQorICAgIGRhdGFkaXIgPSAnZGlzdHJvZGF0YScKKworICAgICMgY3JlYXRlIHRoZSBkaXJlY3RvcnkgaWYgaXQgZG9lcyBub3QgZXhpc3RzCisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRhdGFkaXIpOgorICAgICAgICBvcy5ta2RpcihkYXRhZGlyKQorCisgICAgIyBkb2luZyBiaXRiYWtlIGRpc3Ryb2RhdGEKKyAgICBmb3IgbWFjaGluZSBpbiBtYWNoaW5lX2xpc3Q6CisgICAgICAgIG9zLnN5c3RlbSgnTUFDSElORT0nKyBtYWNoaW5lICsgJyBiaXRiYWtlIC1rIHVuaXZlcnNlIC1jIGRpc3Ryb2RhdGEnKQorICAgICAgICBzaHV0aWwuY29weSgndG1wL2xvZy9kaXN0cm9kYXRhLmNzdicsICdkaXN0cm9kYXRhLycgKyBmbmZvcm1hdCAlIG1hY2hpbmUpCisKKyAgICBmb3IgbWFjaGluZSBpbiBtYWNoaW5lX2xpc3Q6CisgICAgICAgIHdpdGggb3BlbignZGlzdHJvZGF0YS8nICsgZm5mb3JtYXQgJSBtYWNoaW5lKSBhcyBmOgorICAgICAgICAgICAgcmVhZGVyID0gY3N2LnJlYWRlcihmKQorICAgICAgICAgICAgcm93cyA9IHJlYWRlci5fX2l0ZXJfXygpCisgICAgICAgICAgICBnYXRoZXJfcmVjaXBlcyhyb3dzKQorCisgICAgd2l0aCBvcGVuKCdyZWNpcGUtbGlzdC50eHQnLCAndycpIGFzIGY6CisgICAgICAgIGZvciByZWNpcGUgaW4gc29ydGVkKHJlY2lwZW5hbWVzKToKKyAgICAgICAgICAgIGYud3JpdGUoIiVzXG4iICUgcmVjaXBlKQorICAgIHByaW50KCJmaWxlIDogcmVjaXBlLWxpc3QudHh0IGlzIGNyZWF0ZWQgd2l0aCAlZCBlbnRyaWVzLiIgJSBsZW4ocmVjaXBlbmFtZXMpKQorCisgICAgd2l0aCBvcGVuKCdhbGwtcmVjaXBlLWxpc3QudHh0JywgJ3cnKSBhcyBmOgorICAgICAgICBmb3IgcmVjaXBlLCByb3cgaW4gc29ydGVkKGFsbHJlY2lwZXMuaXRlbXMoKSk6CisgICAgICAgICAgICBmLndyaXRlKCIlc1xuIiAlICcsJy5qb2luKHJvdykpCisKKworZGVmIGRpZmZfZm9yX25ld19yZWNpcGVzKHJlY2lwZTEsIHJlY2lwZTIpOgorICAgIHByZXZfcmVjaXBlX3BhdGggPSByZWNpcGUxICsgJy8nCisgICAgY3Vycl9yZWNpcGVfcGF0aCA9IHJlY2lwZTIgKyAnLycKKyAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUocHJldl9yZWNpcGVfcGF0aCArICdyZWNpcGUtbGlzdC50eHQnKSBvciBub3Qgb3MucGF0aC5pc2ZpbGUoY3Vycl9yZWNpcGVfcGF0aCArICdyZWNpcGUtbGlzdC50eHQnKToKKyAgICAgICAgcHJpbnQoInJlY2lwZSBmaWxlcyBkbyBub3QgZXhpc3RzLiBwbGVhc2UgdmVyaWZ5IHRoYXQgdGhlIGZpbGUgZXhpc3RzLiIpCisgICAgICAgIGV4aXQoMSkKKworICAgIGltcG9ydCBjc3YKKworICAgIHByZXYgPSBbXQorICAgIG5ldyA9IFtdCisKKyAgICB3aXRoIG9wZW4ocHJldl9yZWNpcGVfcGF0aCArICdyZWNpcGUtbGlzdC50eHQnKSBhcyBmOgorICAgICAgICBwcmV2ID0gZi5yZWFkbGluZXMoKQorCisgICAgd2l0aCBvcGVuKGN1cnJfcmVjaXBlX3BhdGggKyAncmVjaXBlLWxpc3QudHh0JykgYXMgZjoKKyAgICAgICAgbmV3ID0gZi5yZWFkbGluZXMoKQorCisgICAgdXBkYXRlcyA9IFtdCisgICAgZm9yIHBuIGluIG5ldzoKKyAgICAgICAgaWYgbm90IHBuIGluIHByZXY6CisgICAgICAgICAgICB1cGRhdGVzLmFwcGVuZChwbi5yc3RyaXAoKSkKKworICAgIGFsbHJlY2lwZSA9IFtdCisgICAgd2l0aCBvcGVuKHJlY2lwZTEgKyAnXycgKyByZWNpcGUyICsgJ19uZXdfcmVjaXBlX2xpc3QudHh0JywndycpIGFzIGRyOgorICAgICAgICB3aXRoIG9wZW4oY3Vycl9yZWNpcGVfcGF0aCArICdhbGwtcmVjaXBlLWxpc3QudHh0JykgYXMgZjoKKyAgICAgICAgICAgIHJlYWRlciA9IGNzdi5yZWFkZXIoZiwgZGVsaW1pdGVyPScsJykKKyAgICAgICAgICAgIGZvciByb3cgaW4gcmVhZGVyOgorICAgICAgICAgICAgICAgIGlmIHJvd1swXSBpbiB1cGRhdGVzOgorICAgICAgICAgICAgICAgICAgICBkci53cml0ZSgiJXMsJXMsJXMiICUgKHJvd1swXSwgcm93WzNdLCByb3dbNV0pKQorICAgICAgICAgICAgICAgICAgICBpZiBsZW4ocm93Wzk6XSkgPiAwOgorICAgICAgICAgICAgICAgICAgICAgICAgZHIud3JpdGUoIiwlcyIgJSAnLCcuam9pbihyb3dbOTpdKSkKKyAgICAgICAgICAgICAgICAgICAgZHIud3JpdGUoIlxuIikKKworZGVmIG1haW4oYXJndik6CisgICAgaWYgYXJndlswXSA9PSAiZ2VuZXJhdGVfcmVjaXBlX2xpc3QiOgorICAgICAgICBnZW5lcmF0ZV9yZWNpcGVfbGlzdCgpCisgICAgZWxpZiBhcmd2WzBdID09ICJjb21wYXJlX3JlY2lwZSI6CisgICAgICAgIGRpZmZfZm9yX25ld19yZWNpcGVzKGFyZ3ZbMV0sIGFyZ3ZbMl0pCisgICAgZWxzZToKKyAgICAgICAgcHJpbnQoIm5vIHN1Y2ggb3B0aW9uLiBjaG9vc2UgZWl0aGVyICdnZW5lcmF0ZV9yZWNpcGVfbGlzdCcgb3IgJ2NvbXBhcmVfcmVjaXBlJyIpCisKKyAgICBleGl0KDApCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdHJ5OgorICAgICAgICBzeXMuZXhpdChtYWluKHN5cy5hcmd2WzE6XSkpCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBwcmludCgiRXhjZXB0aW9uIDoiLCBlKQorICAgICAgICBzeXMuZXhpdCgxKQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9kaXN0cm8vZGlzdHJvY29tcGFyZS5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2Rpc3Ryby9kaXN0cm9jb21wYXJlLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjkwODc2MGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9kaXN0cm8vZGlzdHJvY29tcGFyZS5zaApAQCAtMCwwICsxLDEyMyBAQAorIyEvdXNyL2Jpbi9lbnYgYmFzaAorIworIyBDb3B5cmlnaHQgKGMpIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorIworIyBkaXN0cm9jb21wYXJlLnNoIDogcHJvdmlkZXMgY2FwYWJpbGl0eSB0byBnZXQgYSBsaXN0IG9mIG5ldyBwYWNrYWdlcworIyAgICAgICAgICAgICAgICAgICAgYmFzZWQgb24gdHdvIGRpc3RpbmN0IGJyYW5jaGVzLiBUaGlzIHNjcmlwdCB0YWtlcworIyAgICAgICAgICAgICAgICAgICAgMiBwYXJhbWV0ZXJzOyBlaXRoZXIgYSBjb21taXQtaXNoIG9yIGEgYnJhbmNoIG5hbWUKKyMKKyMgICAgICAgICAgICAgICAgICAgIFRvIHJ1biA6IGRpc3Ryb2NvbXBhcmUuc2ggPG9sZGVyIGhhc2g+IDxuZXdlciBoYXNoPgorIyAgICAgICAgICAgICAgICAgICAgRS5nLiBkaXN0cm9jb21wYXJlLnNoIG1vcnR5IDkyYWEwZTcKKyMgICAgICAgICAgICAgICAgICAgIEUuZy4gZGlzdHJvY29tcGFyZS5zaCBtb3J0eSBweXJvCisjCisKKyMgZ2V0IGlucHV0IGFzIHZlcnNpb24KK3ByZXZpb3VzX3ZlcnNpb249JDEKK2N1cnJlbnRfdmVyc2lvbj0kMgorCisjIHNldCBwcmV2aW91cyBhbmQgY3VycmVudCB2ZXJzaW9uCitpZiBbIC16ICIkMiIgXTsgdGhlbgorICAgIHByZXZpb3VzX3ZlcnNpb249JDEKKyAgICBjdXJyZW50X3ZlcnNpb249ImN1cnJlbnQiCitmaQorCisjIGdldCBzY3JpcHQgbG9jYXRpb24uIFRoYXQncyB3aGVyZSB0aGUgc291cmNlIHN1cHBvc2VkbHkgbG9jYXRlZCBhcyB3ZWxsLgorc2NyaXB0ZGlyPSIkKCByZWFscGF0aCAkKGRpcm5hbWUgIiR7QkFTSF9TT1VSQ0VbMF19IiApKSIKK3NvdXJjZWRpcj0iJCggcmVhbHBhdGggJHNjcmlwdGRpci8uLi8uLiApIgorCisjIGNyZWF0ZSB3b3JraW5nIGRpcmVjdG9yeQord29ya2Rpcj0kKG1rdGVtcCAtZCkKKworIyBwcmVwYXJlIHRvIHJvbGxiYWNrIHRvIHRoZSBicmFuY2ggaWYgbm90IHNpbWlsYXIKK2JyYW5jaD1gY2QgJHNvdXJjZWRpcjsgZ2l0IGJyYW5jaCB8IGdyZXAgXCogfCBjdXQgLWQgJyAnIC1mMmAKKworIyBzZXQgY3VycmVudCB3b3JrZGlyIHRvIHN0b3JlIGZpbmFsIHJlc3VsdAorY3VycmVudHdvcmtkaXI9YHB3ZGAKKworIyBwZXJzaXN0cyB0aGUgZmlsZSBhZnRlciBsb2NhbCByZXBvIGNoYW5nZQorY3AgJHNjcmlwdGRpci9idWlsZC1yZWNpcGUtbGlzdC5weSAkd29ya2RpcgorCisjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2Z1bmN0aW9uIGJha2VfZGlzdHJvZGF0YSB7CisgICAgIyBnZXQgdG8gc291cmNlIGRpcmVjdG9yeSBvZiB0aGUgZ2l0CisgICAgY2QgJHNvdXJjZWRpcgorCisgICAgIyBjaGFuZ2UgdGhlIGJyYW5jaCAvIGNvbW1pdC4gRG8gbm90IGNoYW5nZSBpZiBpbnB1dCBpcyBjdXJyZW50CisgICAgaWYgWyAiJDEiICE9ICJjdXJyZW50IiBdOyB0aGVuCisgICAgICAgIG91dHB1dD0kKGdpdCBjaGVja291dCAkMSAyPiYxKQorCisgICAgICAgICMgZXhpdCBpZiBnaXQgZmFpbHMKKyAgICAgICAgaWYgW1sgJG91dHB1dCA9PSAqImVycm9yIiogXV07IHRoZW4KKyAgICAgICAgICAgIGVjaG8gImdpdCBlcnJvciA6ICRvdXRwdXQiCisgICAgICAgICAgICBlY2hvICJleGl0aW5nIC4uLiAiCisgICAgICAgICAgICBybSAtcmYgJHdvcmtkaXIKKyAgICAgICAgICAgIGV4aXQKKyAgICAgICAgZmkKKyAgICBmaQorCisgICAgIyBtYWtlIHRtcCBhcyB3b3JrZGlyCisgICAgY2QgJHdvcmtkaXIKKworICAgICMgc291cmNlIG9lLWluaXQgdG8gZ2VuZXJhdGUgYSBuZXcgYnVpbGQgZm9sZGVyCisgICAgc291cmNlICRzb3VyY2VkaXIvb2UtaW5pdC1idWlsZC1lbnYgJDEKKworICAgICMgaWYgZmlsZSBhbHJlYWR5IGV4aXN0cyB3aXRoIGRpc3Ryb2RhdGEsIGRvIG5vdCBhcHBlbmQKKyAgICBpZiAhIGdyZXAgLXEgImRpc3Ryb2RhdGEiICJjb25mL2xvY2FsLmNvbmYiOyB0aGVuCisgICAgICAgICMgYWRkIGluaGVyaXQgZGlzdHJvZGF0YSB0byBsb2NhbC5jb25mIHRvIGVuYWJsZSBkaXN0cm9kYXRhIGZlYXR1cmUKKyAgICAgICAgZWNobyAnSU5IRVJJVCArPSAiZGlzdHJvZGF0YSInID4+IGNvbmYvbG9jYWwuY29uZgorICAgIGZpCisKKyAgICAjIHVzZSBmcm9tIHRtcAorICAgICR3b3JrZGlyL2J1aWxkLXJlY2lwZS1saXN0LnB5IGdlbmVyYXRlX3JlY2lwZV9saXN0Cit9CisKK2Jha2VfZGlzdHJvZGF0YSAkcHJldmlvdXNfdmVyc2lvbgorYmFrZV9kaXN0cm9kYXRhICRjdXJyZW50X3ZlcnNpb24KKworIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitjZCAkd29ya2RpcgorCisjIGNvbXBhcmUgdGhlIDIgZ2VuZXJhdGVkIHJlY2lwZS1saXN0LnR4dAorJHdvcmtkaXIvYnVpbGQtcmVjaXBlLWxpc3QucHkgY29tcGFyZV9yZWNpcGUgJHByZXZpb3VzX3ZlcnNpb24gJGN1cnJlbnRfdmVyc2lvbgorCisjIGNvcHkgZmluYWwgcmVzdWx0IHRvIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKK2NwICR3b3JrZGlyLypfbmV3X3JlY2lwZV9saXN0LnR4dCAkY3VycmVudHdvcmtkaXIKKworaWYgWyAkPyAtbmUgMCBdOyB0aGVuCisgICAgcm0gLXJmICR3b3JrZGlyLyRwcmV2aW91c192ZXJzaW9uCisgICAgcm0gLXJmICR3b3JrZGlyLyRjdXJyZW50X3ZlcnNpb24KKyAgICBybSAkd29ya2Rpci9idWlsZC1yZWNpcGUtbGlzdC5weQorICAgICMgcHJlc2VydmUgdGhlIHJlc3VsdCBpbiAvdG1wL2Rpc3Ryb2RhdGEgaWYgZmFpbCB0byBjb3B5IHRoZSByZXN1bHQgb3ZlcgorICAgIGV4aXQKK2ZpCisKKyMgY2xlYW51cAorcm0gLXJmICR3b3JrZGlyCisKKyMgcGVyZm9ybSByb2xsYmFjayBicmFuY2gKK2NkICRzb3VyY2VkaXIKK2N1cnJlbnRicmFuY2g9YGdpdCBicmFuY2ggfCBncmVwIFwqIHwgY3V0IC1kICcgJyAtZjJgCitpZiBbICIkY3VycmVudGJyYW5jaCIgIT0gIiRicmFuY2giIF07IHRoZW4KKyAgICBnaXQgY2hlY2tvdXQgJGJyYW5jaAorZmkKKworY2QgJGN1cnJlbnR3b3JrZGlyCisKKyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3AvX19pbml0X18ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YmJiNmUxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3AvX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0jCi0jIFlvY3RvIEJTUCB0b29scyBsaWJyYXJ5Ci0jCi0jIENvcHlyaWdodCAoYykgMjAxMiwgSW50ZWwgQ29ycG9yYXRpb24uCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCi0jIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAotIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgotIwotIyBBVVRIT1JTCi0jIFRvbSBaYW51c3NpIDx0b20uemFudXNzaSAoYXRdIGludGVsLmNvbT4KLSMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3AvZW5naW5lLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9lbmdpbmUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3YTE1YmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9lbmdpbmUucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxOTMxICswLDAgQEAKLSMgZXg6dHM9NDpzdz00OnN0cz00OmV0Ci0jIC0qLSB0YWItd2lkdGg6IDQ7IGMtYmFzaWMtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWwgLSotCi0jCi0jIENvcHlyaWdodCAoYykgMjAxMiwgSW50ZWwgQ29ycG9yYXRpb24uCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCi0jIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAotIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgotIwotIyBERVNDUklQVElPTgotIyBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIHRoZSB0ZW1wbGF0aW5nIGVuZ2luZSB1c2VkIGJ5ICd5b2N0by1ic3AnIHRvCi0jIGNyZWF0ZSBCU1BzLiAgVGhlIEJTUCB0ZW1wbGF0ZXMgYXJlIHNpbXBseSB0aGUgc2V0IG9mIGZpbGVzIGV4cGVjdGVkCi0jIHRvIGFwcGVhciBpbiBhIGdlbmVyYXRlZCBCU1AsIG1hcmtlZCB1cCB3aXRoIGEgc21hbGwgc2V0IG9mIHRhZ3MKLSMgdXNlZCB0byBjdXN0b21pemUgdGhlIG91dHB1dC4gIFRoZSBlbmdpbmUgcGFyc2VzIHRocm91Z2ggdGhlCi0jIHRlbXBsYXRlcyBhbmQgZ2VuZXJhdGVzIGEgUHl0aG9uIHByb2dyYW0gY29udGFpbmluZyBhbGwgdGhlIGxvZ2ljCi0jIGFuZCBpbnB1dCBlbGVtZW50cyBuZWVkZWQgdG8gZGlzcGxheSBhbmQgcmV0cmlldmUgQlNQLXNwZWNpZmljCi0jIGluZm9ybWF0aW9uIGZyb20gdGhlIHVzZXIuICBUaGUgcmVzdWx0aW5nIHByb2dyYW0gdXNlcyB0aG9zZSByZXN1bHRzCi0jIHRvIGdlbmVyYXRlIHRoZSBmaW5hbCBCU1AgZmlsZXMuCi0jCi0jIEFVVEhPUlMKLSMgVG9tIFphbnVzc2kgPHRvbS56YW51c3NpIChhdF0gaW50ZWwuY29tPgotIwotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLWZyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1ldGhvZAotZnJvbSAudGFncyBpbXBvcnQgKgotaW1wb3J0IHNobGV4Ci1pbXBvcnQganNvbgotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBzaHV0aWwKLQotY2xhc3MgTGluZShtZXRhY2xhc3M9QUJDTWV0YSk6Ci0gICAgIiIiCi0gICAgR2VuZXJpYyAoYWJzdHJhY3QpIGNvbnRhaW5lciByZXByZXNlbnRpbmcgYSBsaW5lIHRoYXQgd2lsbCBhcHBlYXIKLSAgICBpbiB0aGUgQlNQLWdlbmVyYXRpbmcgcHJvZ3JhbS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaW5lKToKLSAgICAgICAgc2VsZi5saW5lID0gbGluZQotICAgICAgICBzZWxmLmdlbmVyYXRlZF9saW5lID0gIiIKLSAgICAgICAgc2VsZi5wcmlvID0gc3lzLm1heHNpemUKLSAgICAgICAgc2VsZi5kaXNjYXJkID0gRmFsc2UKLQotICAgIEBhYnN0cmFjdG1ldGhvZAotICAgIGRlZiBnZW4oc2VsZiwgY29udGV4dCA9IE5vbmUpOgotICAgICAgICAiIiIKLSAgICAgICAgR2VuZXJhdGUgdGhlIGZpbmFsIGV4ZWN1dGFibGUgbGluZSB0aGF0IHdpbGwgYXBwZWFyIGluIHRoZQotICAgICAgICBCU1AtZ2VuZXJhdGlvbiBwcm9ncmFtLgotICAgICAgICAiIiIKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGVzY2FwZShzZWxmLCBsaW5lKToKLSAgICAgICAgIiIiCi0gICAgICAgIEVzY2FwZSBzaW5nbGUgYW5kIGRvdWJsZSBxdW90ZXMgYW5kIGJhY2tzbGFzaGVzIHVudGlsIEkgZmluZAotICAgICAgICBzb21ldGhpbmcgYmV0dGVyIChyZS5lc2NhcGUoKSBlc2NhcGVzIHdheSB0b28gbXVjaCkuCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gbGluZS5yZXBsYWNlKCJcXCIsICJcXFxcIikucmVwbGFjZSgiXCIiLCAiXFxcIiIpLnJlcGxhY2UoIiciLCAiXFwnIikKLQotICAgIGRlZiBwYXJzZV9lcnJvcihzZWxmLCBtc2csIGxpbmVubywgbGluZSk6Ci0gICAgICAgICByYWlzZSBTeW50YXhFcnJvcigiJXM6ICVzIiAlIChtc2csIGxpbmUpKQotCi0KLWNsYXNzIE5vcm1hbExpbmUoTGluZSk6Ci0gICAgIiIiCi0gICAgQ29udGFpbmVyIGZvciBub3JtYWwgKG5vbi10YWcpIGxpbmVzLgotICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaW5lKToKLSAgICAgICAgTGluZS5fX2luaXRfXyhzZWxmLCBsaW5lKQotICAgICAgICBzZWxmLmlzX2ZpbGVuYW1lID0gRmFsc2UKLSAgICAgICAgc2VsZi5pc19kaXJuYW1lID0gRmFsc2UKLSAgICAgICAgc2VsZi5vdXRfZmlsZWJhc2UgPSBOb25lCi0KLSAgICBkZWYgZ2VuKHNlbGYsIGNvbnRleHQgPSBOb25lKToKLSAgICAgICAgaWYgc2VsZi5pc19maWxlbmFtZToKLSAgICAgICAgICAgIGxpbmUgPSAiY3VycmVudF9maWxlID0gXCIiICsgb3MucGF0aC5qb2luKHNlbGYub3V0X2ZpbGViYXNlLCBzZWxmLmVzY2FwZShzZWxmLmxpbmUpKSArICJcIjsgb2YgPSBvcGVuKGN1cnJlbnRfZmlsZSwgXCJ3XCIpIgotICAgICAgICBlbGlmIHNlbGYuaXNfZGlybmFtZToKLSAgICAgICAgICAgIGRpcm5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5vdXRfZmlsZWJhc2UsIHNlbGYuZXNjYXBlKHNlbGYubGluZSkpCi0gICAgICAgICAgICBsaW5lID0gImlmIG5vdCBvcy5wYXRoLmV4aXN0cyhcIiIgKyBkaXJuYW1lICsgIlwiKTogb3MubWtkaXIoXCIiICsgZGlybmFtZSArICJcIikiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsaW5lID0gIm9mLndyaXRlKFwiIiArIHNlbGYuZXNjYXBlKHNlbGYubGluZSkgKyAiXFxuXCIpIgotICAgICAgICByZXR1cm4gbGluZQotCi0KLWNsYXNzIENvZGVMaW5lKExpbmUpOgotICAgICIiIgotICAgIENvbnRhaW5lciBmb3IgUHl0aG9uIGNvZGUgdGFnIGxpbmVzLgotICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaW5lKToKLSAgICAgICAgTGluZS5fX2luaXRfXyhzZWxmLCBsaW5lKQotCi0gICAgZGVmIGdlbihzZWxmLCBjb250ZXh0ID0gTm9uZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLmxpbmUKLQotCi1jbGFzcyBBc3NpZ25tZW50OgotICAgICIiIgotICAgIFJlcHJlc2VudGF0aW9uIG9mIGV2ZXJ5dGhpbmcgd2Uga25vdyBhYm91dCB7ez1uYW1lIH19IHRhZ3MuCi0gICAgSW5zdGFuY2VzIG9mIHRoZXNlIGFyZSB1c2VkIGJ5IEFzc2lnbm1lbnQgbGluZXMuCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0YXJ0LCBlbmQsIG5hbWUpOgotICAgICAgICBzZWxmLnN0YXJ0ID0gc3RhcnQKLSAgICAgICAgc2VsZi5lbmQgPSBlbmQKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotCi0KLWNsYXNzIEFzc2lnbm1lbnRMaW5lKE5vcm1hbExpbmUpOgotICAgICIiIgotICAgIENvbnRhaW5lciBmb3Igbm9ybWFsIGxpbmVzIGNvbnRhaW5pbmcgYXNzaWdubWVudCB0YWdzLiAgQXNzaWdubWVudAotICAgIHRhZ3MgbXVzdCBiZSBpbiBhc2NlbmRpbmcgb3JkZXIgb2YgJ3N0YXJ0JyB2YWx1ZS4KLSAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbGluZSk6Ci0gICAgICAgIE5vcm1hbExpbmUuX19pbml0X18oc2VsZiwgbGluZSkKLSAgICAgICAgc2VsZi5hc3NpZ25tZW50cyA9IFtdCi0KLSAgICBkZWYgYWRkX2Fzc2lnbm1lbnQoc2VsZiwgc3RhcnQsIGVuZCwgbmFtZSk6Ci0gICAgICAgIHNlbGYuYXNzaWdubWVudHMuYXBwZW5kKEFzc2lnbm1lbnQoc3RhcnQsIGVuZCwgbmFtZSkpCi0KLSAgICBkZWYgZ2VuKHNlbGYsIGNvbnRleHQgPSBOb25lKToKLSAgICAgICAgbGluZSA9IHNlbGYuZXNjYXBlKHNlbGYubGluZSkKLQotICAgICAgICBmb3IgYXNzaWdubWVudCBpbiBzZWxmLmFzc2lnbm1lbnRzOgotICAgICAgICAgICAgcmVwbGFjZW1lbnQgPSAiXCIgKyAiICsgYXNzaWdubWVudC5uYW1lICsgIiArIFwiIgotICAgICAgICAgICAgaWR4ID0gbGluZS5maW5kKEFTU0lHTl9UQUcpCi0gICAgICAgICAgICBsaW5lID0gbGluZVs6aWR4XSArIHJlcGxhY2VtZW50ICsgbGluZVtpZHggKyBhc3NpZ25tZW50LmVuZCAtIGFzc2lnbm1lbnQuc3RhcnQ6XQotICAgICAgICBpZiBzZWxmLmlzX2ZpbGVuYW1lOgotICAgICAgICAgICAgcmV0dXJuICJjdXJyZW50X2ZpbGUgPSBcIiIgKyBvcy5wYXRoLmpvaW4oc2VsZi5vdXRfZmlsZWJhc2UsIGxpbmUpICsgIlwiOyBvZiA9IG9wZW4oY3VycmVudF9maWxlLCBcIndcIikiCi0gICAgICAgIGVsaWYgc2VsZi5pc19kaXJuYW1lOgotICAgICAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguam9pbihzZWxmLm91dF9maWxlYmFzZSwgbGluZSkKLSAgICAgICAgICAgIHJldHVybiAiaWYgbm90IG9zLnBhdGguZXhpc3RzKFwiIiArIGRpcm5hbWUgKyAiXCIpOiBvcy5ta2RpcihcIiIgKyBkaXJuYW1lICsgIlwiKSIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAib2Yud3JpdGUoXCIiICsgbGluZSArICJcXG5cIikiCi0KLQotY2xhc3MgSW5wdXRMaW5lKExpbmUpOgotICAgICIiIgotICAgIEJhc2UgY2xhc3MgZm9yIElucHV0IGxpbmVzLgotICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm9wcywgdGFnLCBsaW5lbm8pOgotICAgICAgICBMaW5lLl9faW5pdF9fKHNlbGYsIHRhZykKLSAgICAgICAgc2VsZi5wcm9wcyA9IHByb3BzCi0gICAgICAgIHNlbGYubGluZW5vID0gbGluZW5vCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5wcmlvID0gaW50KHByb3BzWyJwcmlvIl0pCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHNlbGYucHJpbyA9IHN5cy5tYXhzaXplCi0KLSAgICBkZWYgZ2VuKHNlbGYsIGNvbnRleHQgPSBOb25lKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGVwZW5kc19vbiA9IHNlbGYucHJvcHNbImRlcGVuZHMtb24iXQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGRlcGVuZHNfb25fdmFsID0gc2VsZi5wcm9wc1siZGVwZW5kcy1vbi12YWwiXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHNlbGYucGFyc2VfZXJyb3IoIk5vICdkZXBlbmRzLW9uLXZhbCcgZm9yICdkZXBlbmRzLW9uJyBwcm9wZXJ0eSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmVubywgc2VsZi5saW5lKQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0KLQotY2xhc3MgRWRpdEJveElucHV0TGluZShJbnB1dExpbmUpOgotICAgICIiIgotICAgIEJhc2UgY2xhc3MgZm9yICdlZGl0Ym94JyBJbnB1dCBsaW5lcy4KLQotICAgIHByb3BzOgotICAgICAgICBuYW1lOiBleGFtcGxlIC0gIkxvYWQgYWRkcmVzcyIKLSAgICAgICAgbXNnOiBleGFtcGxlIC0gIlBsZWFzZSBlbnRlciB0aGUgbG9hZCBhZGRyZXNzIgotICAgIHJlc3VsdDoKLSAgICAgICAgU2V0cyB0aGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxlIHNwZWNpZmllZCBieSAnbmFtZScgdG8KLSAgICAgICAgd2hhdGV2ZXIgdGhlIHVzZXIgdHlwZWQuCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb3BzLCB0YWcsIGxpbmVubyk6Ci0gICAgICAgIElucHV0TGluZS5fX2luaXRfXyhzZWxmLCBwcm9wcywgdGFnLCBsaW5lbm8pCi0KLSAgICBkZWYgZ2VuKHNlbGYsIGNvbnRleHQgPSBOb25lKToKLSAgICAgICAgSW5wdXRMaW5lLmdlbihzZWxmLCBjb250ZXh0KQotICAgICAgICBuYW1lID0gc2VsZi5wcm9wc1sibmFtZSJdCi0gICAgICAgIGlmIG5vdCBuYW1lOgotICAgICAgICAgICAgc2VsZi5wYXJzZV9lcnJvcigiTm8gaW5wdXQgJ25hbWUnIHByb3BlcnR5IGZvdW5kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8sIHNlbGYubGluZSkKLSAgICAgICAgbXNnID0gc2VsZi5wcm9wc1sibXNnIl0KLSAgICAgICAgaWYgbm90IG1zZzoKLSAgICAgICAgICAgIHNlbGYucGFyc2VfZXJyb3IoIk5vIGlucHV0ICdtc2cnIHByb3BlcnR5IGZvdW5kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8sIHNlbGYubGluZSkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkZWZhdWx0X2Nob2ljZSA9IHNlbGYucHJvcHNbImRlZmF1bHQiXQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBkZWZhdWx0X2Nob2ljZSA9ICIiCi0KLSAgICAgICAgbXNnICs9ICIgW2RlZmF1bHQ6ICIgKyBkZWZhdWx0X2Nob2ljZSArICJdIgotCi0gICAgICAgIGxpbmUgPSBuYW1lICsgIiA9IGRlZmF1bHQoaW5wdXQoXCIiICsgbXNnICsgIiBcIiksICIgKyBuYW1lICsgIikiCi0KLSAgICAgICAgcmV0dXJuIGxpbmUKLQotCi1jbGFzcyBHaXRSZXBvRWRpdEJveElucHV0TGluZShFZGl0Qm94SW5wdXRMaW5lKToKLSAgICAiIiIKLSAgICBCYXNlIGNsYXNzIGZvciAnZWRpdGJveCcgSW5wdXQgbGluZXMgZm9yIHVzZXIgaW5wdXQgb2YgcmVtb3RlIGdpdAotICAgIHJlcG9zLiAgVGhpcyBjbGFzcyB2ZXJpZmllcyB0aGUgZXhpc3RlbmNlIGFuZCBjb25uZWN0aXZpdHkgb2YgdGhlCi0gICAgc3BlY2lmaWVkIGdpdCByZXBvLgotCi0gICAgcHJvcHM6Ci0gICAgICAgIG5hbWU6IGV4YW1wbGUgLSAiTG9hZCBhZGRyZXNzIgotICAgICAgICBtc2c6IGV4YW1wbGUgLSAiUGxlYXNlIGVudGVyIHRoZSBsb2FkIGFkZHJlc3MiCi0gICAgcmVzdWx0OgotICAgICAgICBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgc3BlY2lmaWVkIGJ5ICduYW1lJyB0bwotICAgICAgICB3aGF0ZXZlciB0aGUgdXNlciB0eXBlZC4KLSAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcHJvcHMsIHRhZywgbGluZW5vKToKLSAgICAgICAgRWRpdEJveElucHV0TGluZS5fX2luaXRfXyhzZWxmLCBwcm9wcywgdGFnLCBsaW5lbm8pCi0KLSAgICBkZWYgZ2VuKHNlbGYsIGNvbnRleHQgPSBOb25lKToKLSAgICAgICAgRWRpdEJveElucHV0TGluZS5nZW4oc2VsZiwgY29udGV4dCkKLSAgICAgICAgbmFtZSA9IHNlbGYucHJvcHNbIm5hbWUiXQotICAgICAgICBpZiBub3QgbmFtZToKLSAgICAgICAgICAgIHNlbGYucGFyc2VfZXJyb3IoIk5vIGlucHV0ICduYW1lJyBwcm9wZXJ0eSBmb3VuZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubGluZW5vLCBzZWxmLmxpbmUpCi0gICAgICAgIG1zZyA9IHNlbGYucHJvcHNbIm1zZyJdCi0gICAgICAgIGlmIG5vdCBtc2c6Ci0gICAgICAgICAgICBzZWxmLnBhcnNlX2Vycm9yKCJObyBpbnB1dCAnbXNnJyBwcm9wZXJ0eSBmb3VuZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubGluZW5vLCBzZWxmLmxpbmUpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGVmYXVsdF9jaG9pY2UgPSBzZWxmLnByb3BzWyJkZWZhdWx0Il0KLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgZGVmYXVsdF9jaG9pY2UgPSAiIgotCi0gICAgICAgIG1zZyArPSAiIFtkZWZhdWx0OiAiICsgZGVmYXVsdF9jaG9pY2UgKyAiXSIKLQotICAgICAgICBsaW5lID0gbmFtZSArICIgPSBnZXRfdmVyaWZpZWRfZ2l0X3JlcG8oXCIiICsgbXNnICsgIlwiLCIgKyBuYW1lICsgIikiCi0KLSAgICAgICAgcmV0dXJuIGxpbmUKLQotCi1jbGFzcyBGaWxlRWRpdEJveElucHV0TGluZShFZGl0Qm94SW5wdXRMaW5lKToKLSAgICAiIiIKLSAgICBCYXNlIGNsYXNzIGZvciAnZWRpdGJveCcgSW5wdXQgbGluZXMgZm9yIHVzZXIgaW5wdXQgb2YgZXhpc3RpbmcKLSAgICBmaWxlcy4gIFRoaXMgY2xhc3MgdmVyaWZpZXMgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgc3BlY2lmaWVkIGZpbGUuCi0KLSAgICBwcm9wczoKLSAgICAgICAgbmFtZTogZXhhbXBsZSAtICJMb2FkIGFkZHJlc3MiCi0gICAgICAgIG1zZzogZXhhbXBsZSAtICJQbGVhc2UgZW50ZXIgdGhlIGxvYWQgYWRkcmVzcyIKLSAgICByZXN1bHQ6Ci0gICAgICAgIFNldHMgdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSBzcGVjaWZpZWQgYnkgJ25hbWUnIHRvCi0gICAgICAgIHdoYXRldmVyIHRoZSB1c2VyIHR5cGVkLgotICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm9wcywgdGFnLCBsaW5lbm8pOgotICAgICAgICBFZGl0Qm94SW5wdXRMaW5lLl9faW5pdF9fKHNlbGYsIHByb3BzLCB0YWcsIGxpbmVubykKLQotICAgIGRlZiBnZW4oc2VsZiwgY29udGV4dCA9IE5vbmUpOgotICAgICAgICBFZGl0Qm94SW5wdXRMaW5lLmdlbihzZWxmLCBjb250ZXh0KQotICAgICAgICBuYW1lID0gc2VsZi5wcm9wc1sibmFtZSJdCi0gICAgICAgIGlmIG5vdCBuYW1lOgotICAgICAgICAgICAgc2VsZi5wYXJzZV9lcnJvcigiTm8gaW5wdXQgJ25hbWUnIHByb3BlcnR5IGZvdW5kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8sIHNlbGYubGluZSkKLSAgICAgICAgbXNnID0gc2VsZi5wcm9wc1sibXNnIl0KLSAgICAgICAgaWYgbm90IG1zZzoKLSAgICAgICAgICAgIHNlbGYucGFyc2VfZXJyb3IoIk5vIGlucHV0ICdtc2cnIHByb3BlcnR5IGZvdW5kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8sIHNlbGYubGluZSkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkZWZhdWx0X2Nob2ljZSA9IHNlbGYucHJvcHNbImRlZmF1bHQiXQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBkZWZhdWx0X2Nob2ljZSA9ICIiCi0KLSAgICAgICAgbXNnICs9ICIgW2RlZmF1bHQ6ICIgKyBkZWZhdWx0X2Nob2ljZSArICJdIgotCi0gICAgICAgIGxpbmUgPSBuYW1lICsgIiA9IGdldF92ZXJpZmllZF9maWxlKFwiIiArIG1zZyArICJcIiwiICsgbmFtZSArICIsIFRydWUpIgotCi0gICAgICAgIHJldHVybiBsaW5lCi0KLQotY2xhc3MgQm9vbGVhbklucHV0TGluZShJbnB1dExpbmUpOgotICAgICIiIgotICAgIEJhc2UgY2xhc3MgZm9yIGJvb2xlYW4gSW5wdXQgbGluZXMuCi0gICAgcHJvcHM6Ci0gICAgICAgIG5hbWU6IGV4YW1wbGUgLSAia2V5Ym9hcmQiCi0gICAgICAgIG1zZzogIGV4YW1wbGUgLSAiR290IGtleWJvYXJkPyIKLSAgICByZXN1bHQ6Ci0gICAgICAgIFNldHMgdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSBzcGVjaWZpZWQgYnkgJ25hbWUnIHRvICJ5ZXMiIG9yICJubyIKLSAgICAgICAgZXhhbXBsZSAtIGtleWJvYXJkID0gInllcyIKLSAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcHJvcHMsIHRhZywgbGluZW5vKToKLSAgICAgICAgSW5wdXRMaW5lLl9faW5pdF9fKHNlbGYsIHByb3BzLCB0YWcsIGxpbmVubykKLQotICAgIGRlZiBnZW4oc2VsZiwgY29udGV4dCA9IE5vbmUpOgotICAgICAgICBJbnB1dExpbmUuZ2VuKHNlbGYsIGNvbnRleHQpCi0gICAgICAgIG5hbWUgPSBzZWxmLnByb3BzWyJuYW1lIl0KLSAgICAgICAgaWYgbm90IG5hbWU6Ci0gICAgICAgICAgICBzZWxmLnBhcnNlX2Vycm9yKCJObyBpbnB1dCAnbmFtZScgcHJvcGVydHkgZm91bmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmVubywgc2VsZi5saW5lKQotICAgICAgICBtc2cgPSBzZWxmLnByb3BzWyJtc2ciXQotICAgICAgICBpZiBub3QgbXNnOgotICAgICAgICAgICAgc2VsZi5wYXJzZV9lcnJvcigiTm8gaW5wdXQgJ21zZycgcHJvcGVydHkgZm91bmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmVubywgc2VsZi5saW5lKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGRlZmF1bHRfY2hvaWNlID0gc2VsZi5wcm9wc1siZGVmYXVsdCJdCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIGRlZmF1bHRfY2hvaWNlID0gIiIKLQotICAgICAgICBtc2cgKz0gIiBbZGVmYXVsdDogIiArIGRlZmF1bHRfY2hvaWNlICsgIl0iCi0KLSAgICAgICAgbGluZSA9IG5hbWUgKyAiID0gYm9vbGVhbihpbnB1dChcIiIgKyBtc2cgKyAiIFwiKSwgIiArIG5hbWUgKyAiKSIKLQotICAgICAgICByZXR1cm4gbGluZQotCi0KLWNsYXNzIExpc3RJbnB1dExpbmUoSW5wdXRMaW5lLCBtZXRhY2xhc3M9QUJDTWV0YSk6Ci0gICAgIiIiCi0gICAgQmFzZSBjbGFzcyBmb3IgTGlzdC1iYXNlZCBJbnB1dCBsaW5lcy4gZS5nLiBDaG9pY2VsaXN0LCBDaGVja2xpc3QuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcHJvcHMsIHRhZywgbGluZW5vKToKLSAgICAgICAgSW5wdXRMaW5lLl9faW5pdF9fKHNlbGYsIHByb3BzLCB0YWcsIGxpbmVubykKLSAgICAgICAgc2VsZi5jaG9pY2VzID0gW10KLQotICAgIGRlZiBnZW5fY2hvaWNlcGFpcl9saXN0KHNlbGYpOgotICAgICAgICAiIiJHZW5lcmF0ZSBhIGxpc3Qgb2YgMi1pdGVtIHZhbDpkZXNjIGxpc3RzIGZyb20gc2VsZi5jaG9pY2VzLiIiIgotICAgICAgICBpZiBub3Qgc2VsZi5jaG9pY2VzOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBjaG9pY2VwYWlyX2xpc3QgPSBsaXN0KCkKLQotICAgICAgICBmb3IgY2hvaWNlIGluIHNlbGYuY2hvaWNlczoKLSAgICAgICAgICAgIGNob2ljZXBhaXIgPSBbXQotICAgICAgICAgICAgY2hvaWNlcGFpci5hcHBlbmQoY2hvaWNlLnZhbCkKLSAgICAgICAgICAgIGNob2ljZXBhaXIuYXBwZW5kKGNob2ljZS5kZXNjKQotICAgICAgICAgICAgY2hvaWNlcGFpcl9saXN0LmFwcGVuZChjaG9pY2VwYWlyKQotCi0gICAgICAgIHJldHVybiBjaG9pY2VwYWlyX2xpc3QKLQotICAgIGRlZiBnZW5fZGVnZW5lcmF0ZV9jaG9pY2VwYWlyX2xpc3Qoc2VsZiwgY2hvaWNlcyk6Ci0gICAgICAgICIiIkdlbmVyYXRlIGEgbGlzdCBvZiAyLWl0ZW0gdmFsOmRlc2Mgd2l0aCB2YWw9ZGVzYyBmcm9tIHBhc3NlZC1pbiBjaG9pY2VzLiIiIgotICAgICAgICBjaG9pY2VwYWlyX2xpc3QgPSBsaXN0KCkKLQotICAgICAgICBmb3IgY2hvaWNlIGluIGNob2ljZXM6Ci0gICAgICAgICAgICBjaG9pY2VwYWlyID0gW10KLSAgICAgICAgICAgIGNob2ljZXBhaXIuYXBwZW5kKGNob2ljZSkKLSAgICAgICAgICAgIGNob2ljZXBhaXIuYXBwZW5kKGNob2ljZSkKLSAgICAgICAgICAgIGNob2ljZXBhaXJfbGlzdC5hcHBlbmQoY2hvaWNlcGFpcikKLQotICAgICAgICByZXR1cm4gY2hvaWNlcGFpcl9saXN0Ci0KLSAgICBkZWYgZXhlY19saXN0Z2VuX2ZuKHNlbGYsIGNvbnRleHQgPSBOb25lKToKLSAgICAgICAgIiIiCi0gICAgICAgIEV4ZWN1dGUgdGhlIGxpc3QtZ2VuZXJhdGluZyBmdW5jdGlvbiBjb250YWluZWQgYXMgYSBzdHJpbmcgaW4KLSAgICAgICAgdGhlICJnZW4iIHByb3BlcnR5LgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dmFsID0gTm9uZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmbmFtZSA9IHNlbGYucHJvcHNbImdlbiJdCi0gICAgICAgICAgICBtb2RzcGxpdCA9IGZuYW1lLnNwbGl0KCcuJykKLSAgICAgICAgICAgIG1vZF9mbiA9IG1vZHNwbGl0LnBvcCgpCi0gICAgICAgICAgICBtb2QgPSAnLicuam9pbihtb2RzcGxpdCkKLQotICAgICAgICAgICAgX19pbXBvcnRfXyhtb2QpCi0gICAgICAgICAgICAjIHB5dGhvbiAyLjcgaGFzIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzIHVzaW5nIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlCi0gICAgICAgICAgICBtID0gc3lzLm1vZHVsZXNbbW9kXQotCi0gICAgICAgICAgICBmbiA9IGdldGF0dHIobSwgbW9kX2ZuKQotICAgICAgICAgICAgaWYgbm90IGZuOgotICAgICAgICAgICAgICAgIHNlbGYucGFyc2VfZXJyb3IoImNvdWxkbid0IGxvYWQgZnVuY3Rpb24gc3BlY2lmaWVkIGZvciAnZ2VuJyBwcm9wZXJ0eSAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8sIHNlbGYubGluZSkKLSAgICAgICAgICAgIHJldHZhbCA9IGZuKGNvbnRleHQpCi0gICAgICAgICAgICBpZiBub3QgcmV0dmFsOgotICAgICAgICAgICAgICAgIHNlbGYucGFyc2VfZXJyb3IoImZ1bmN0aW9uIHNwZWNpZmllZCBmb3IgJ2dlbicgcHJvcGVydHkgcmV0dXJuZWQgbm90aGluZyAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8sIHNlbGYubGluZSkKLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIHJldHVybiByZXR2YWwKLQotICAgIGRlZiBnZW5fY2hvaWNlc19zdHIoc2VsZiwgY2hvaWNlcGFpcnMpOgotICAgICAgICAiIiIKLSAgICAgICAgR2VuZXJhdGUgYSBudW1iZXJlZCBsaXN0IG9mIGNob2ljZXMgZnJvbSBhIGxpc3Qgb2YgY2hvaWNlcGFpcnMKLSAgICAgICAgZm9yIGRpc3BsYXkgdG8gdGhlIHVzZXIuCi0gICAgICAgICIiIgotICAgICAgICBjaG9pY2VzX3N0ciA9ICIiCi0KLSAgICAgICAgZm9yIGksIGNob2ljZXBhaXIgaW4gZW51bWVyYXRlKGNob2ljZXBhaXJzKToKLSAgICAgICAgICAgIGNob2ljZXNfc3RyICs9ICJcdCIgKyBzdHIoaSArIDEpICsgIikgIiArIGNob2ljZXBhaXJbMV0gKyAiXG4iCi0KLSAgICAgICAgcmV0dXJuIGNob2ljZXNfc3RyCi0KLSAgICBkZWYgZ2VuX2Nob2ljZXNfdmFsX3N0cihzZWxmLCBjaG9pY2VwYWlycyk6Ci0gICAgICAgICIiIgotICAgICAgICBHZW5lcmF0ZSBhbiBhcnJheSBvZiBjaG9pY2UgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlCi0gICAgICAgIG51bWJlcmVkIGxpc3QgZ2VuZXJhdGVkIGJ5IGdlbl9jaG9pY2VzX3N0cigpLgotICAgICAgICAiIiIKLSAgICAgICAgY2hvaWNlc192YWxfbGlzdCA9ICJbIgotCi0gICAgICAgIGZvciBpLCBjaG9pY2VwYWlyIGluIGVudW1lcmF0ZShjaG9pY2VwYWlycyk6Ci0gICAgICAgICAgICBjaG9pY2VzX3ZhbF9saXN0ICs9ICJcIiIgKyBjaG9pY2VwYWlyWzBdICsgIlwiLCIKLSAgICAgICAgY2hvaWNlc192YWxfbGlzdCArPSAiXSIKLQotICAgICAgICByZXR1cm4gY2hvaWNlc192YWxfbGlzdAotCi0gICAgZGVmIGdlbl9jaG9pY2VzX3ZhbF9saXN0KHNlbGYsIGNob2ljZXBhaXJzKToKLSAgICAgICAgIiIiCi0gICAgICAgIEdlbmVyYXRlIGFuIGFycmF5IG9mIGNob2ljZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUKLSAgICAgICAgbnVtYmVyZWQgbGlzdCBnZW5lcmF0ZWQgYnkgZ2VuX2Nob2ljZXNfc3RyKCkuCi0gICAgICAgICIiIgotICAgICAgICBjaG9pY2VzX3ZhbF9saXN0ID0gW10KLQotICAgICAgICBmb3IgaSwgY2hvaWNlcGFpciBpbiBlbnVtZXJhdGUoY2hvaWNlcGFpcnMpOgotICAgICAgICAgICAgY2hvaWNlc192YWxfbGlzdC5hcHBlbmQoY2hvaWNlcGFpclswXSkKLQotICAgICAgICByZXR1cm4gY2hvaWNlc192YWxfbGlzdAotCi0gICAgZGVmIGdlbl9jaG9pY2VzX2xpc3Qoc2VsZiwgY29udGV4dCA9IE5vbmUsIGNoZWNrbGlzdCA9IEZhbHNlKToKLSAgICAgICAgIiIiCi0gICAgICAgIEdlbmVyYXRlIGFuIGFycmF5IG9mIGNob2ljZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUKLSAgICAgICAgbnVtYmVyZWQgbGlzdCBnZW5lcmF0ZWQgYnkgZ2VuX2Nob2ljZXNfc3RyKCkuCi0gICAgICAgICIiIgotICAgICAgICBjaG9pY2VzID0gc2VsZi5leGVjX2xpc3RnZW5fZm4oY29udGV4dCkKLSAgICAgICAgaWYgY2hvaWNlczoKLSAgICAgICAgICAgIGlmIGxlbihjaG9pY2VzKSA9PSAwOgotICAgICAgICAgICAgICAgIHNlbGYucGFyc2VfZXJyb3IoIk5vIGVudHJpZXMgYXZhaWxhYmxlIGZvciBpbnB1dCBsaXN0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubGluZW5vLCBzZWxmLmxpbmUpCi0gICAgICAgICAgICBjaG9pY2VwYWlycyA9IHNlbGYuZ2VuX2RlZ2VuZXJhdGVfY2hvaWNlcGFpcl9saXN0KGNob2ljZXMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBsZW4oc2VsZi5jaG9pY2VzKSA9PSAwOgotICAgICAgICAgICAgICAgIHNlbGYucGFyc2VfZXJyb3IoIk5vIGVudHJpZXMgYXZhaWxhYmxlIGZvciBpbnB1dCBsaXN0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubGluZW5vLCBzZWxmLmxpbmUpCi0gICAgICAgICAgICBjaG9pY2VwYWlycyA9IHNlbGYuZ2VuX2Nob2ljZXBhaXJfbGlzdCgpCi0KLSAgICAgICAgcmV0dXJuIGNob2ljZXBhaXJzCi0KLSAgICBkZWYgZ2VuX2Nob2ljZXMoc2VsZiwgY29udGV4dCA9IE5vbmUsIGNoZWNrbGlzdCA9IEZhbHNlKToKLSAgICAgICAgIiIiCi0gICAgICAgIEdlbmVyYXRlIGFuIGFycmF5IG9mIGNob2ljZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUKLSAgICAgICAgbnVtYmVyZWQgbGlzdCBnZW5lcmF0ZWQgYnkgZ2VuX2Nob2ljZXNfc3RyKCksIGRpc3BsYXkgaXQgdG8KLSAgICAgICAgdGhlIHVzZXIsIGFuZCBwcm9jZXNzIHRoZSByZXN1bHQuCi0gICAgICAgICIiIgotICAgICAgICBtc2cgPSBzZWxmLnByb3BzWyJtc2ciXQotICAgICAgICBpZiBub3QgbXNnOgotICAgICAgICAgICAgc2VsZi5wYXJzZV9lcnJvcigiTm8gaW5wdXQgJ21zZycgcHJvcGVydHkgZm91bmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmVubywgc2VsZi5saW5lKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGRlZmF1bHRfY2hvaWNlID0gc2VsZi5wcm9wc1siZGVmYXVsdCJdCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIGRlZmF1bHRfY2hvaWNlID0gIiIKLQotICAgICAgICBtc2cgKz0gIiBbZGVmYXVsdDogIiArIGRlZmF1bHRfY2hvaWNlICsgIl0iCi0KLSAgICAgICAgY2hvaWNlcGFpcnMgPSBzZWxmLmdlbl9jaG9pY2VzX2xpc3QoY29udGV4dCwgY2hlY2tsaXN0KQotCi0gICAgICAgIGNob2ljZXNfc3RyID0gc2VsZi5nZW5fY2hvaWNlc19zdHIoY2hvaWNlcGFpcnMpCi0gICAgICAgIGNob2ljZXNfdmFsX2xpc3QgPSBzZWxmLmdlbl9jaG9pY2VzX3ZhbF9saXN0KGNob2ljZXBhaXJzKQotICAgICAgICBpZiBjaGVja2xpc3Q6Ci0gICAgICAgICAgICBjaG9pY2V2YWwgPSBkZWZhdWx0KGZpbmRfY2hvaWNldmFscyhpbnB1dChtc2cgKyAiXG4iICsgY2hvaWNlc19zdHIpLCBjaG9pY2VzX3ZhbF9saXN0KSwgZGVmYXVsdF9jaG9pY2UpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjaG9pY2V2YWwgPSBkZWZhdWx0KGZpbmRfY2hvaWNldmFsKGlucHV0KG1zZyArICJcbiIgKyBjaG9pY2VzX3N0ciksIGNob2ljZXNfdmFsX2xpc3QpLCBkZWZhdWx0X2Nob2ljZSkKLQotICAgICAgICByZXR1cm4gY2hvaWNldmFsCi0KLQotZGVmIGZpbmRfY2hvaWNldmFsKGNob2ljZV9zdHIsIGNob2ljZV9saXN0KToKLSAgICAiIiIKLSAgICBUYWtlIG51bWJlciBhcyBzdHJpbmcgYW5kIHJldHVybiB2YWwgc3RyaW5nIGZyb20gY2hvaWNlX2xpc3QsCi0gICAgZW1wdHkgc3RyaW5nIGlmIG9vYi4gIGNob2ljZV9saXN0IGlzIGEgc2ltcGxlIHB5dGhvbiBsaXN0LgotICAgICIiIgotICAgIGNob2ljZV92YWwgPSAiIgotCi0gICAgdHJ5OgotICAgICAgICBjaG9pY2VfaWR4ID0gaW50KGNob2ljZV9zdHIpCi0gICAgICAgIGlmIGNob2ljZV9pZHggPD0gbGVuKGNob2ljZV9saXN0KToKLSAgICAgICAgICAgIGNob2ljZV9pZHggLT0gMQotICAgICAgICAgICAgY2hvaWNlX3ZhbCA9IGNob2ljZV9saXN0W2Nob2ljZV9pZHhdCi0gICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgIHBhc3MKLQotICAgIHJldHVybiBjaG9pY2VfdmFsCi0KLQotZGVmIGZpbmRfY2hvaWNldmFscyhjaG9pY2Vfc3RyLCBjaG9pY2VfbGlzdCk6Ci0gICAgIiIiCi0gICAgVGFrZSBudW1iZXJzIGFzIHNwYWNlLXNlcGFyYXRlZCBzdHJpbmcgYW5kIHJldHVybiB2YWxzIGxpc3QgZnJvbQotICAgIGNob2ljZV9saXN0LCBlbXB0eSBsaXN0IGlmIG9vYi4gIGNob2ljZV9saXN0IGlzIGEgc2ltcGxlIHB5dGhvbgotICAgIGxpc3QuCi0gICAgIiIiCi0gICAgY2hvaWNlX3ZhbHMgPSBbXQotCi0gICAgY2hvaWNlcyA9IGNob2ljZV9zdHIuc3BsaXQoKQotICAgIGZvciBjaG9pY2UgaW4gY2hvaWNlczoKLSAgICAgICAgY2hvaWNlX3ZhbHMuYXBwZW5kKGZpbmRfY2hvaWNldmFsKGNob2ljZSwgY2hvaWNlX2xpc3QpKQotCi0gICAgcmV0dXJuIGNob2ljZV92YWxzCi0KLQotZGVmIGRlZmF1bHQoaW5wdXRfc3RyLCBuYW1lKToKLSAgICAiIiIKLSAgICBSZXR1cm4gZGVmYXVsdCBpZiBubyBpbnB1dF9zdHIsIG90aGVyd2lzZSBzdHJpcHBlZCBpbnB1dF9zdHIuCi0gICAgIiIiCi0gICAgaWYgbm90IGlucHV0X3N0cjoKLSAgICAgICAgcmV0dXJuIG5hbWUKLQotICAgIHJldHVybiBpbnB1dF9zdHIuc3RyaXAoKQotCi0KLWRlZiB2ZXJpZnlfZ2l0X3JlcG8oZ2l0dXJsKToKLSAgICAiIiIKLSAgICBWZXJpZnkgdGhhdCB0aGUgZ2l0dXJsIHBhc3NlZCBpbiBjYW4gYmUgY29ubmVjdGVkIHRvLiAgVGhpcyBjYW4gYmUKLSAgICB1c2VkIGFzIGEgY2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2YgdGhlIGdpdmVuIHJlcG8gYW5kL29yIGJhc2ljCi0gICAgZ2l0IHJlbW90ZSBjb25uZWN0aXZpdHkuCi0KLSAgICBSZXR1cm5zIFRydWUgaWYgdGhlIGNvbm5lY3Rpb24gd2FzIHN1Y2Nlc3NmdWwsIGZhbHMgb3RoZXJ3aXNlCi0gICAgIiIiCi0gICAgaWYgbm90IGdpdHVybDoKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBnaXRjbWQgPSAiZ2l0IGxzLXJlbW90ZSAlcyA+IC9kZXYvbnVsbCAyPiYxIiAlIChnaXR1cmwpCi0gICAgcmMgPSBzdWJwcm9jZXNzLmNhbGwoZ2l0Y21kLCBzaGVsbD1UcnVlKQotICAgIGlmIHJjID09IDA6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICByZXR1cm4gRmFsc2UKLQotCi1kZWYgZ2V0X3ZlcmlmaWVkX2dpdF9yZXBvKGlucHV0X3N0ciwgbmFtZSk6Ci0gICAgIiIiCi0gICAgUmV0dXJuIGdpdCByZXBvIGlmIHZlcmlmaWVkLCBvdGhlcndpc2UgbG9vcCBmb3JldmVyIGFza2luZyB1c2VyCi0gICAgZm9yIGZpbGVuYW1lLgotICAgICIiIgotICAgIG1zZyA9IGlucHV0X3N0ci5zdHJpcCgpICsgIiAiCi0KLSAgICBnaXR1cmwgPSBkZWZhdWx0KGlucHV0KG1zZyksIG5hbWUpCi0KLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBpZiB2ZXJpZnlfZ2l0X3JlcG8oZ2l0dXJsKToKLSAgICAgICAgICAgIHJldHVybiBnaXR1cmwKLSAgICAgICAgZ2l0dXJsID0gZGVmYXVsdChpbnB1dChtc2cpLCBuYW1lKQotCi0KLWRlZiBnZXRfdmVyaWZpZWRfZmlsZShpbnB1dF9zdHIsIG5hbWUsIGZpbGVuYW1lX2Nhbl9iZV9udWxsKToKLSAgICAiIiIKLSAgICBSZXR1cm4gZmlsZW5hbWUgaWYgdGhlIGZpbGUgZXhpc3RzLCBvdGhlcndpc2UgbG9vcCBmb3JldmVyIGFza2luZwotICAgIHVzZXIgZm9yIGZpbGVuYW1lLgotICAgICIiIgotICAgIG1zZyA9IGlucHV0X3N0ci5zdHJpcCgpICsgIiAiCi0KLSAgICBmaWxlbmFtZSA9IGRlZmF1bHQoaW5wdXQobXNnKSwgbmFtZSkKLQotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIGlmIG5vdCBmaWxlbmFtZSBhbmQgZmlsZW5hbWVfY2FuX2JlX251bGw6Ci0gICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUKLSAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZmlsZW5hbWUpOgotICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCi0gICAgICAgIGZpbGVuYW1lID0gZGVmYXVsdChpbnB1dChtc2cpLCBuYW1lKQotCi0KLWRlZiByZXBsYWNlX2ZpbGUocmVwbGFjZV90aGlzLCB3aXRoX3RoaXMpOgotICAgICIiIgotICAgIFJlcGxhY2UgdGhlIGdpdmVuIGZpbGUgd2l0aCB0aGUgY29udGVudHMgb2YgZmlsZW5hbWUsIHJldGFpbmluZwotICAgIHRoZSBvcmlnaW5hbCBmaWxlbmFtZS4KLSAgICAiIiIKLSAgICB0cnk6Ci0gICAgICAgIHJlcGxhY2VfdGhpcy5jbG9zZSgpCi0gICAgICAgIHNodXRpbC5jb3B5KHdpdGhfdGhpcywgcmVwbGFjZV90aGlzLm5hbWUpCi0gICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgIHBhc3MKLQotCi1kZWYgYm9vbGVhbihpbnB1dF9zdHIsIG5hbWUpOgotICAgICIiIgotICAgIFJldHVybiBsb3dlcmNhc2UgdmVyc2lvbiBvZiBmaXJzdCBjaGFyIGluIHN0cmluZywgb3IgdmFsdWUgaW4gbmFtZS4KLSAgICAiIiIKLSAgICBpZiBub3QgaW5wdXRfc3RyOgotICAgICAgICByZXR1cm4gbmFtZQotCi0gICAgc3RyID0gaW5wdXRfc3RyLmxvd2VyKCkuc3RyaXAoKQotICAgIGlmIHN0ciBhbmQgc3RyWzBdID09ICJ5IiBvciBzdHJbMF0gPT0gIm4iOgotICAgICAgICByZXR1cm4gc3RyWzBdCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIG5hbWUKLQotCi1kZWYgc3RyaXBfYmFzZShpbnB1dF9zdHIpOgotICAgICIiIgotICAgIHN0cmlwICcvYmFzZScgb2ZmIHRoZSBlbmQgb2YgaW5wdXRfc3RyLCBzbyB3ZSBjYW4gdXNlICdiYXNlJyBpbgotICAgIHRoZSBicmFuY2ggbmFtZXMgd2UgcHJlc2VudCB0byB0aGUgdXNlci4KLSAgICAiIiIKLSAgICBpZiBpbnB1dF9zdHIgYW5kIGlucHV0X3N0ci5lbmRzd2l0aCgiL2Jhc2UiKToKLSAgICAgICAgcmV0dXJuIGlucHV0X3N0cls6LWxlbigiL2Jhc2UiKV0KLSAgICByZXR1cm4gaW5wdXRfc3RyLnN0cmlwKCkKLQotCi1kZWZlcnJlZF9jaG9pY2VzID0ge30KLQotZGVmIGdlbl9jaG9pY2VzX2RlZmVyKGlucHV0X2xpbmUsIGNvbnRleHQsIGNoZWNrbGlzdCA9IEZhbHNlKToKLSAgICAiIiIKLSAgICBTYXZlIHRoZSBjb250ZXh0IGhhc2hlZCB0aGUgbmFtZSBvZiB0aGUgaW5wdXQgaXRlbSwgd2hpY2ggd2lsbCBiZQotICAgIHBhc3NlZCB0byB0aGUgZ2VuIGZ1bmN0aW9uIGxhdGVyLgotICAgICIiIgotICAgIG5hbWUgPSBpbnB1dF9saW5lLnByb3BzWyJuYW1lIl0KLQotICAgIHRyeToKLSAgICAgICAgbmFtZWFwcGVuZCA9IGlucHV0X2xpbmUucHJvcHNbIm5hbWVhcHBlbmQiXQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgbmFtZWFwcGVuZCA9ICIiCi0KLSAgICB0cnk6Ci0gICAgICAgIGJyYW5jaGVzX2Jhc2UgPSBpbnB1dF9saW5lLnByb3BzWyJicmFuY2hlc19iYXNlIl0KLSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIGJyYW5jaGVzX2Jhc2UgPSAiIgotCi0gICAgZmlsZW5hbWUgPSBpbnB1dF9saW5lLnByb3BzWyJmaWxlbmFtZSJdCi0KLSAgICBjbG9zZXRhZ19zdGFydCA9IGZpbGVuYW1lLmZpbmQoQ0xPU0VfVEFHKQotCi0gICAgaWYgY2xvc2V0YWdfc3RhcnQgIT0gLTE6Ci0gICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWVbY2xvc2V0YWdfc3RhcnQgKyBsZW4oQ0xPU0VfVEFHKTpdCi0KLSAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnN0cmlwKCkKLSAgICBmaWxlbmFtZSA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzBdCi0KLSAgICBjYXB0dXJlZF9jb250ZXh0ID0gY2FwdHVyZV9jb250ZXh0KGNvbnRleHQpCi0gICAgY29udGV4dFsiZmlsZW5hbWUiXSA9IGZpbGVuYW1lCi0gICAgY2FwdHVyZWRfY29udGV4dFsiZmlsZW5hbWUiXSA9IGZpbGVuYW1lCi0gICAgY29udGV4dFsibmFtZWFwcGVuZCJdID0gbmFtZWFwcGVuZAotICAgIGNhcHR1cmVkX2NvbnRleHRbIm5hbWVhcHBlbmQiXSA9IG5hbWVhcHBlbmQKLSAgICBjb250ZXh0WyJicmFuY2hlc19iYXNlIl0gPSBicmFuY2hlc19iYXNlCi0gICAgY2FwdHVyZWRfY29udGV4dFsiYnJhbmNoZXNfYmFzZSJdID0gYnJhbmNoZXNfYmFzZQotCi0gICAgZGVmZXJyZWRfY2hvaWNlID0gKGlucHV0X2xpbmUsIGNhcHR1cmVkX2NvbnRleHQsIGNoZWNrbGlzdCkKLSAgICBrZXkgPSBuYW1lICsgIl8iICsgZmlsZW5hbWUgKyAiXyIgKyBuYW1lYXBwZW5kCi0gICAgZGVmZXJyZWRfY2hvaWNlc1trZXldID0gZGVmZXJyZWRfY2hvaWNlCi0KLQotZGVmIGludm9rZV9kZWZlcnJlZF9jaG9pY2VzKG5hbWUpOgotICAgICIiIgotICAgIEludm9rZSB0aGUgY2hvaWNlIGdlbmVyYXRpb24gZnVuY3Rpb24gdXNpbmcgdGhlIGNvbnRleHQgaGFzaGVkIGJ5Ci0gICAgJ25hbWUnLgotICAgICIiIgotICAgIGRlZmVycmVkX2Nob2ljZSA9IGRlZmVycmVkX2Nob2ljZXNbbmFtZV0KLSAgICBpbnB1dF9saW5lID0gZGVmZXJyZWRfY2hvaWNlWzBdCi0gICAgY29udGV4dCA9IGRlZmVycmVkX2Nob2ljZVsxXQotICAgIGNoZWNrbGlzdCA9IGRlZmVycmVkX2Nob2ljZVsyXQotCi0gICAgY29udGV4dFsibmFtZSJdID0gbmFtZQotCi0gICAgY2hvaWNlcyA9IGlucHV0X2xpbmUuZ2VuX2Nob2ljZXMoY29udGV4dCwgY2hlY2tsaXN0KQotCi0gICAgcmV0dXJuIGNob2ljZXMKLQotCi1jbGFzcyBDaG9pY2VsaXN0SW5wdXRMaW5lKExpc3RJbnB1dExpbmUpOgotICAgICIiIgotICAgIEJhc2UgY2xhc3MgZm9yIGNob2ljZWxpc3QgSW5wdXQgbGluZXMuCi0gICAgcHJvcHM6Ci0gICAgICAgIG5hbWU6IGV4YW1wbGUgLSAieHNlcnZlcl9jaG9pY2UiCi0gICAgICAgIG1zZzogIGV4YW1wbGUgLSAiUGxlYXNlIHNlbGVjdCBhbiB4c2VydmVyIGZvciB0aGlzIG1hY2hpbmUiCi0gICAgcmVzdWx0OgotICAgICAgICBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgc3BlY2lmaWVkIGJ5ICduYW1lJyB0byB3aGljaGV2ZXIgQ2hvaWNlIHdhcyBjaG9zZW4KLSAgICAgICAgZXhhbXBsZSAtIHhzZXJ2ZXJfY2hvaWNlID0gInhzZXJ2ZXJfdmVzYSIKLSAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcHJvcHMsIHRhZywgbGluZW5vKToKLSAgICAgICAgTGlzdElucHV0TGluZS5fX2luaXRfXyhzZWxmLCBwcm9wcywgdGFnLCBsaW5lbm8pCi0KLSAgICBkZWYgZ2VuKHNlbGYsIGNvbnRleHQgPSBOb25lKToKLSAgICAgICAgSW5wdXRMaW5lLmdlbihzZWxmLCBjb250ZXh0KQotCi0gICAgICAgIGdlbl9jaG9pY2VzX2RlZmVyKHNlbGYsIGNvbnRleHQpCi0gICAgICAgIG5hbWUgPSBzZWxmLnByb3BzWyJuYW1lIl0KLSAgICAgICAgbmFtZWFwcGVuZCA9IGNvbnRleHRbIm5hbWVhcHBlbmQiXQotICAgICAgICBmaWxlbmFtZSA9IGNvbnRleHRbImZpbGVuYW1lIl0KLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkZWZhdWx0X2Nob2ljZSA9IHNlbGYucHJvcHNbImRlZmF1bHQiXQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBkZWZhdWx0X2Nob2ljZSA9ICIiCi0KLSAgICAgICAgbGluZSA9IG5hbWUgKyAiID0gZGVmYXVsdChpbnZva2VfZGVmZXJyZWRfY2hvaWNlcyhcIiIgKyBuYW1lICsgIl8iICsgZmlsZW5hbWUgKyAiXyIgKyBuYW1lYXBwZW5kICsgIlwiKSwgXCIiICsgZGVmYXVsdF9jaG9pY2UgKyAiXCIpIgotCi0gICAgICAgIHJldHVybiBsaW5lCi0KLQotY2xhc3MgTGlzdFZhbElucHV0TGluZShJbnB1dExpbmUpOgotICAgICIiIgotICAgIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGNob2ljZSBhbmQgY2hlY2tib3ggSW5wdXQgbGluZXMuCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb3BzLCB0YWcsIGxpbmVubyk6Ci0gICAgICAgIElucHV0TGluZS5fX2luaXRfXyhzZWxmLCBwcm9wcywgdGFnLCBsaW5lbm8pCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi52YWwgPSBzZWxmLnByb3BzWyJ2YWwiXQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBzZWxmLnBhcnNlX2Vycm9yKCJObyBpbnB1dCAndmFsJyBwcm9wZXJ0eSBmb3VuZCIsIHNlbGYubGluZW5vLCBzZWxmLmxpbmUpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5kZXNjID0gc2VsZi5wcm9wc1sibXNnIl0KLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgc2VsZi5wYXJzZV9lcnJvcigiTm8gaW5wdXQgJ21zZycgcHJvcGVydHkgZm91bmQiLCBzZWxmLmxpbmVubywgc2VsZi5saW5lKQotCi0KLWNsYXNzIENob2ljZUlucHV0TGluZShMaXN0VmFsSW5wdXRMaW5lKToKLSAgICAiIiIKLSAgICBCYXNlIGNsYXNzIGZvciBjaG9pY2VsaXN0IGl0ZW0gSW5wdXQgbGluZXMuCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb3BzLCB0YWcsIGxpbmVubyk6Ci0gICAgICAgIExpc3RWYWxJbnB1dExpbmUuX19pbml0X18oc2VsZiwgcHJvcHMsIHRhZywgbGluZW5vKQotCi0gICAgZGVmIGdlbihzZWxmLCBjb250ZXh0ID0gTm9uZSk6Ci0gICAgICAgIHJldHVybiBOb25lCi0KLQotY2xhc3MgQ2hlY2tsaXN0SW5wdXRMaW5lKExpc3RJbnB1dExpbmUpOgotICAgICIiIgotICAgIEJhc2UgY2xhc3MgZm9yIGNoZWNrbGlzdCBJbnB1dCBsaW5lcy4KLSAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcHJvcHMsIHRhZywgbGluZW5vKToKLSAgICAgICAgTGlzdElucHV0TGluZS5fX2luaXRfXyhzZWxmLCBwcm9wcywgdGFnLCBsaW5lbm8pCi0KLSAgICBkZWYgZ2VuKHNlbGYsIGNvbnRleHQgPSBOb25lKToKLSAgICAgICAgSW5wdXRMaW5lLmdlbihzZWxmLCBjb250ZXh0KQotCi0gICAgICAgIGdlbl9jaG9pY2VzX2RlZmVyKHNlbGYsIGNvbnRleHQsIFRydWUpCi0gICAgICAgIG5hbWUgPSBzZWxmLnByb3BzWyJuYW1lIl0KLSAgICAgICAgbmFtZWFwcGVuZCA9IGNvbnRleHRbIm5hbWVhcHBlbmQiXQotICAgICAgICBmaWxlbmFtZSA9IGNvbnRleHRbImZpbGVuYW1lIl0KLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkZWZhdWx0X2Nob2ljZSA9IHNlbGYucHJvcHNbImRlZmF1bHQiXQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBkZWZhdWx0X2Nob2ljZSA9ICIiCi0KLSAgICAgICAgbGluZSA9IG5hbWUgKyAiID0gZGVmYXVsdChpbnZva2VfZGVmZXJyZWRfY2hvaWNlcyhcIiIgKyBuYW1lICsgIl8iICsgZmlsZW5hbWUgKyAiXyIgKyBuYW1lYXBwZW5kICsgIlwiKSwgXCIiICsgZGVmYXVsdF9jaG9pY2UgKyAiXCIpIgotCi0gICAgICAgIHJldHVybiBsaW5lCi0KLQotY2xhc3MgQ2hlY2tJbnB1dExpbmUoTGlzdFZhbElucHV0TGluZSk6Ci0gICAgIiIiCi0gICAgQmFzZSBjbGFzcyBmb3IgY2hlY2tsaXN0IGl0ZW0gSW5wdXQgbGluZXMuCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb3BzLCB0YWcsIGxpbmVubyk6Ci0gICAgICAgIExpc3RWYWxJbnB1dExpbmUuX19pbml0X18oc2VsZiwgcHJvcHMsIHRhZywgbGluZW5vKQotCi0gICAgZGVmIGdlbihzZWxmLCBjb250ZXh0ID0gTm9uZSk6Ci0gICAgICAgIHJldHVybiBOb25lCi0KLQotZGlybmFtZV9zdWJzdGl0dXRpb25zID0ge30KLQotY2xhc3MgU3Vic3RyYXRlQmFzZShvYmplY3QpOgotICAgICIiIgotICAgIEJhc2UgY2xhc3MgZm9yIGJvdGggZXhwYW5kZWQgYW5kIHVuZXhwYW5kZWQgZmlsZSBhbmQgZGlyIGNvbnRhaW5lcgotICAgIG9iamVjdHMuCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBmaWxlYmFzZSwgb3V0X2ZpbGViYXNlKToKLSAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGVuYW1lCi0gICAgICAgIHNlbGYuZmlsZWJhc2UgPSBmaWxlYmFzZQotICAgICAgICBzZWxmLnRyYW5zbGF0ZWRfZmlsZW5hbWUgPSBmaWxlbmFtZQotICAgICAgICBzZWxmLm91dF9maWxlYmFzZSA9IG91dF9maWxlYmFzZQotICAgICAgICBzZWxmLnJhd19saW5lcyA9IFtdCi0gICAgICAgIHNlbGYuZXhwYW5kZWRfbGluZXMgPSBbXQotICAgICAgICBzZWxmLnByZXZfY2hvaWNlbGlzdCA9IE5vbmUKLQotICAgIGRlZiBwYXJzZV9lcnJvcihzZWxmLCBtc2csIGxpbmVubywgbGluZSk6Ci0gICAgICAgICByYWlzZSBTeW50YXhFcnJvcigiJXM6IFslczogJWRdOiAlcyIgJSAobXNnLCBzZWxmLmZpbGVuYW1lLCBsaW5lbm8sIGxpbmUpKQotCi0gICAgZGVmIGV4cGFuZF9pbnB1dF90YWcoc2VsZiwgdGFnLCBsaW5lbm8pOgotICAgICAgICAiIiIKLSAgICAgICAgSW5wdXQgdGFncyBjb25zaXN0IG9mIHRoZSB3b3JkICdpbnB1dCcgYXQgdGhlIGJlZ2lubmluZywKLSAgICAgICAgZm9sbG93ZWQgYnkgbmFtZTp2YWx1ZSBwcm9wZXJ0eSBwYWlycyB3aGljaCBhcmUgY29udmVydGVkIGludG8KLSAgICAgICAgYSBkaWN0aW9uYXJ5LgotICAgICAgICAiIiIKLSAgICAgICAgcHJvcHN0ciA9IHRhZ1tsZW4oSU5QVVRfVEFHKTpdCi0KLSAgICAgICAgcHJvcHMgPSBkaWN0KHByb3Auc3BsaXQoIjoiLCAxKSBmb3IgcHJvcCBpbiBzaGxleC5zcGxpdChwcm9wc3RyKSkKLSAgICAgICAgcHJvcHNbImZpbGVuYW1lIl0gPSBzZWxmLmZpbGVuYW1lCi0KLSAgICAgICAgaW5wdXRfdHlwZSA9IHByb3BzW0lOUFVUX1RZUEVfUFJPUEVSVFldCi0gICAgICAgIGlmIG5vdCBwcm9wc1tJTlBVVF9UWVBFX1BST1BFUlRZXToKLSAgICAgICAgICAgIHNlbGYucGFyc2VfZXJyb3IoIk5vIGlucHV0ICd0eXBlJyBwcm9wZXJ0eSBmb3VuZCIsIGxpbmVubywgdGFnKQotCi0gICAgICAgIGlmIGlucHV0X3R5cGUgPT0gImJvb2xlYW4iOgotICAgICAgICAgICAgcmV0dXJuIEJvb2xlYW5JbnB1dExpbmUocHJvcHMsIHRhZywgbGluZW5vKQotICAgICAgICBpZiBpbnB1dF90eXBlID09ICJlZGl0IjoKLSAgICAgICAgICAgIHJldHVybiBFZGl0Qm94SW5wdXRMaW5lKHByb3BzLCB0YWcsIGxpbmVubykKLSAgICAgICAgaWYgaW5wdXRfdHlwZSA9PSAiZWRpdC1naXQtcmVwbyI6Ci0gICAgICAgICAgICByZXR1cm4gR2l0UmVwb0VkaXRCb3hJbnB1dExpbmUocHJvcHMsIHRhZywgbGluZW5vKQotICAgICAgICBpZiBpbnB1dF90eXBlID09ICJlZGl0LWZpbGUiOgotICAgICAgICAgICAgcmV0dXJuIEZpbGVFZGl0Qm94SW5wdXRMaW5lKHByb3BzLCB0YWcsIGxpbmVubykKLSAgICAgICAgZWxpZiBpbnB1dF90eXBlID09ICJjaG9pY2VsaXN0IjoKLSAgICAgICAgICAgIHNlbGYucHJldl9jaG9pY2VsaXN0ID0gQ2hvaWNlbGlzdElucHV0TGluZShwcm9wcywgdGFnLCBsaW5lbm8pCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5wcmV2X2Nob2ljZWxpc3QKLSAgICAgICAgZWxpZiBpbnB1dF90eXBlID09ICJjaG9pY2UiOgotICAgICAgICAgICAgaWYgbm90IHNlbGYucHJldl9jaG9pY2VsaXN0OgotICAgICAgICAgICAgICAgIHNlbGYucGFyc2VfZXJyb3IoIkZvdW5kICdjaG9pY2UnIGlucHV0IHRhZyBidXQgbm8gcHJldmlvdXMgY2hvaWNlbGlzdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm8sIHRhZykKLSAgICAgICAgICAgIGNob2ljZSA9IENob2ljZUlucHV0TGluZShwcm9wcywgdGFnLCBsaW5lbm8pCi0gICAgICAgICAgICBzZWxmLnByZXZfY2hvaWNlbGlzdC5jaG9pY2VzLmFwcGVuZChjaG9pY2UpCi0gICAgICAgICAgICByZXR1cm4gY2hvaWNlCi0gICAgICAgIGVsaWYgaW5wdXRfdHlwZSA9PSAiY2hlY2tsaXN0IjoKLSAgICAgICAgICAgIHJldHVybiBDaGVja2xpc3RJbnB1dExpbmUocHJvcHMsIHRhZywgbGluZW5vKQotICAgICAgICBlbGlmIGlucHV0X3R5cGUgPT0gImNoZWNrIjoKLSAgICAgICAgICAgIHJldHVybiBDaGVja0lucHV0TGluZShwcm9wcywgdGFnLCBsaW5lbm8pCi0KLSAgICBkZWYgZXhwYW5kX2Fzc2lnbm1lbnRfdGFnKHNlbGYsIHN0YXJ0LCBsaW5lLCBsaW5lbm8pOgotICAgICAgICAiIiIKLSAgICAgICAgRXhwYW5kIGFsbCB0YWdzIGluIGEgbGluZS4KLSAgICAgICAgIiIiCi0gICAgICAgIGV4cGFuZGVkX2xpbmUgPSBBc3NpZ25tZW50TGluZShsaW5lLnJzdHJpcCgpKQotCi0gICAgICAgIHdoaWxlIHN0YXJ0ICE9IC0xOgotICAgICAgICAgICAgZW5kID0gbGluZS5maW5kKENMT1NFX1RBRywgc3RhcnQpCi0gICAgICAgICAgICBpZiBlbmQgPT0gLTE6Ci0gICAgICAgICAgICAgICAgc2VsZi5wYXJzZV9lcnJvcigiTm8gY2xvc2UgdGFnIGZvdW5kIGZvciBhc3NpZ25tZW50IHRhZyIsIGxpbmVubywgbGluZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbmFtZSA9IGxpbmVbc3RhcnQgKyBsZW4oQVNTSUdOX1RBRyk6ZW5kXS5zdHJpcCgpCi0gICAgICAgICAgICAgICAgZXhwYW5kZWRfbGluZS5hZGRfYXNzaWdubWVudChzdGFydCwgZW5kICsgbGVuKENMT1NFX1RBRyksIG5hbWUpCi0gICAgICAgICAgICAgICAgc3RhcnQgPSBsaW5lLmZpbmQoQVNTSUdOX1RBRywgZW5kKQotCi0gICAgICAgIHJldHVybiBleHBhbmRlZF9saW5lCi0KLSAgICBkZWYgZXhwYW5kX3RhZyhzZWxmLCBsaW5lLCBsaW5lbm8pOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJucyBhIHByb2Nlc3NlZCB0YWcgbGluZSwgb3IgTm9uZSBpZiB0aGVyZSB3YXMgbm8gdGFnCi0KLSAgICAgICAgVGhlIHJ1bGVzIGZvciB0YWdzIGFyZSB2ZXJ5IHNpbXBsZToKLSAgICAgICAgICAgIC0gTm8gbmVzdGVkIHRhZ3MKLSAgICAgICAgICAgIC0gVGFncyBzdGFydCB3aXRoIHt7IGFuZCBlbmQgd2l0aCB9fQotICAgICAgICAgICAgLSBBbiBhc3NpZ24gdGFnLCB7ez0sIGNhbiBhcHBlYXIgYW55d2hlcmUgYW5kIHdpbGwKLSAgICAgICAgICAgICAgYmUgcmVwbGFjZWQgd2l0aCB3aGF0IHRoZSBhc3NpZ25tZW50IGV2YWx1YXRlcyB0bwotICAgICAgICAgICAgLSBBbnkgb3RoZXIgdGFnIG9jY3VwaWVzIHRoZSB3aG9sZSBsaW5lIGl0IGlzIG9uCi0gICAgICAgICAgICAgICAgLSBpZiB0aGVyZSdzIGFueXRoaW5nIGVsc2Ugb24gdGhlIHRhZyBsaW5lLCBpdCdzIGFuIGVycm9yCi0gICAgICAgICAgICAgICAgLSBpZiBpdCBzdGFydHMgd2l0aCAnaW5wdXQnLCBpdCdzIGFuIGlucHV0IHRhZyBhbmQKLSAgICAgICAgICAgICAgICAgIHdpbGwgb25seSBiZSB1c2VkIGZvciBwcm9tcHRpbmcgYW5kIHNldHRpbmcgdmFyaWFibGVzCi0gICAgICAgICAgICAgICAgLSBhbnl0aGluZyBlbHNlIGlzIHN0cmFpZ2h0IFB5dGhvbgotICAgICAgICAgICAgICAgIC0gdGFncyBhcmUgaW4gZWZmZWN0IG9ubHkgdW50aWwgdGhlIG5leHQgYmxhbmsgbGluZSBvciB0YWcgb3IgJ3Bhc3MnIHRhZwotICAgICAgICAgICAgICAgIC0gd2UgZG9uJ3QgaGF2ZSBpbmRlbnRhdGlvbiBpbiB0YWdzLCBidXQgd2UgbmVlZCBzb21lIHdheSB0byBlbmQgYSBibG9jawotICAgICAgICAgICAgICAgICAgZm9yY2VmdWxseSB3aXRob3V0IGJsYW5rIGxpbmVzIG9yIG90aGVyIHRhZ3MgLSB0aGF0J3MgdGhlICdwYXNzJyB0YWcKLSAgICAgICAgICAgICAgICAtIHRvZG86IGltcGxlbWVudCBwYXNzIHRhZwotICAgICAgICAgICAgICAgIC0gZGlyZWN0b3JpZXMgYW5kIGZpbGVuYW1lcyBjYW4gaGF2ZSB0YWdzIGFzIHdlbGwsIGJ1dCBvbmx5IGFzc2lnbm1lbnQKLSAgICAgICAgICAgICAgICAgIGFuZCAnaWYnIGNvZGUgbGluZXMKLSAgICAgICAgICAgICAgICAtIGRpcmVjdG9yaWVzIGFuZCBmaWxlbmFtZXMgYXJlIHRoZSBvbmx5IGNhc2Ugd2hlcmUgbm9ybWFsIHRhZ3MgY2FuCi0gICAgICAgICAgICAgICAgICBjb2V4aXN0IHdpdGggbm9ybWFsIHRleHQgb24gdGhlIHNhbWUgJ2xpbmUnCi0gICAgICAgICIiIgotICAgICAgICBzdGFydCA9IGxpbmUuZmluZChBU1NJR05fVEFHKQotICAgICAgICBpZiBzdGFydCAhPSAtMToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmV4cGFuZF9hc3NpZ25tZW50X3RhZyhzdGFydCwgbGluZSwgbGluZW5vKQotCi0gICAgICAgIHN0YXJ0ID0gbGluZS5maW5kKE9QRU5fVEFHKQotICAgICAgICBpZiBzdGFydCA9PSAtMToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgZW5kID0gbGluZS5maW5kKENMT1NFX1RBRywgMCkKLSAgICAgICAgaWYgZW5kID09IC0xOgotICAgICAgICAgICAgIHNlbGYucGFyc2VfZXJyb3IoIk5vIGNsb3NlIHRhZyBmb3VuZCBmb3Igb3BlbiB0YWciLCBsaW5lbm8sIGxpbmUpCi0KLSAgICAgICAgdGFnID0gbGluZVtzdGFydCArIGxlbihPUEVOX1RBRyk6ZW5kXS5zdHJpcCgpCi0KLSAgICAgICAgaWYgbm90IHRhZy5sc3RyaXAoKS5zdGFydHN3aXRoKElOUFVUX1RBRyk6Ci0gICAgICAgICAgICByZXR1cm4gQ29kZUxpbmUodGFnKQotCi0gICAgICAgIHJldHVybiBzZWxmLmV4cGFuZF9pbnB1dF90YWcodGFnLCBsaW5lbm8pCi0KLSAgICBkZWYgYXBwZW5kX3RyYW5zbGF0ZWRfZmlsZW5hbWUoc2VsZiwgZmlsZW5hbWUpOgotICAgICAgICAiIiIKLSAgICAgICAgU2ltcGx5IGFwcGVuZCBmaWxlbmFtZSB0byB0cmFuc2xhdGVkX2ZpbGVuYW1lCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLnRyYW5zbGF0ZWRfZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi50cmFuc2xhdGVkX2ZpbGVuYW1lLCBmaWxlbmFtZSkKLQotICAgIGRlZiBnZXRfc3Vic3RpdHV0ZWRfZmlsZV9vcl9kaXJfbmFtZShzZWxmLCBmaXJzdF9saW5lLCB0YWcpOgotICAgICAgICAiIiIKLSAgICAgICAgSWYgZmlsZSBvciBkaXIgbmFtZXMgY29udGFpbiBuYW1lIHN1YnN0aXR1dGlvbnMsIHJldHVybiB0aGUgbmFtZQotICAgICAgICB0byBzdWJzdGl0dXRlLiAgTm90ZSB0aGF0IHRoaXMgaXMganVzdCB0aGUgZmlsZSBvciBkaXJuYW1lIGFuZAotICAgICAgICBkb2Vzbid0IGluY2x1ZGUgdGhlIHBhdGguCi0gICAgICAgICIiIgotICAgICAgICBmaWxlbmFtZSA9IGZpcnN0X2xpbmUuZmluZCh0YWcpCi0gICAgICAgIGlmIGZpbGVuYW1lICE9IC0xOgotICAgICAgICAgICAgZmlsZW5hbWUgKz0gbGVuKHRhZykKLSAgICAgICAgc3Vic3RpdHV0ZWRfZmlsZW5hbWUgPSBmaXJzdF9saW5lW2ZpbGVuYW1lOl0uc3RyaXAoKQotICAgICAgICB0aGlzID0gc3Vic3RpdHV0ZWRfZmlsZW5hbWUuZmluZCgiIHRoaXMiKQotICAgICAgICBpZiB0aGlzICE9IC0xOgotICAgICAgICAgICAgaGVhZCwgdGFpbCA9IG9zLnBhdGguc3BsaXQoc2VsZi5maWxlbmFtZSkKLSAgICAgICAgICAgIHN1YnN0aXR1dGVkX2ZpbGVuYW1lID0gc3Vic3RpdHV0ZWRfZmlsZW5hbWVbOnRoaXMgKyAxXSArIHRhaWwKLSAgICAgICAgICAgIGlmIHRhZyA9PSBESVJOQU1FX1RBRzogIyBnZXQgcmlkIG9mIC5ub2luc3RhbGwgaW4gZGlybmFtZQotICAgICAgICAgICAgICAgIHN1YnN0aXR1dGVkX2ZpbGVuYW1lID0gc3Vic3RpdHV0ZWRfZmlsZW5hbWUuc3BsaXQoJy4nKVswXQotCi0gICAgICAgIHJldHVybiBzdWJzdGl0dXRlZF9maWxlbmFtZQotCi0gICAgZGVmIGdldF9zdWJzdGl0dXRlZF9maWxlbmFtZShzZWxmLCBmaXJzdF9saW5lKToKLSAgICAgICAgIiIiCi0gICAgICAgIElmIGEgZmlsZW5hbWUgY29udGFpbnMgYSBuYW1lIHN1YnN0aXR1dGlvbiwgcmV0dXJuIHRoZSBuYW1lIHRvCi0gICAgICAgIHN1YnN0aXR1dGUuICBOb3RlIHRoYXQgdGhpcyBpcyBqdXN0IHRoZSBmaWxlbmFtZSBhbmQgZG9lc24ndAotICAgICAgICBpbmNsdWRlIHRoZSBwYXRoLgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X3N1YnN0aXR1dGVkX2ZpbGVfb3JfZGlyX25hbWUoZmlyc3RfbGluZSwgRklMRU5BTUVfVEFHKQotCi0gICAgZGVmIGdldF9zdWJzdGl0dXRlZF9kaXJuYW1lKHNlbGYsIGZpcnN0X2xpbmUpOgotICAgICAgICAiIiIKLSAgICAgICAgSWYgYSBkaXJuYW1lIGNvbnRhaW5zIGEgbmFtZSBzdWJzdGl0dXRpb24sIHJldHVybiB0aGUgbmFtZSB0bwotICAgICAgICBzdWJzdGl0dXRlLiAgTm90ZSB0aGF0IHRoaXMgaXMganVzdCB0aGUgZGlybmFtZSBhbmQgZG9lc24ndAotICAgICAgICBpbmNsdWRlIHRoZSBwYXRoLgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X3N1YnN0aXR1dGVkX2ZpbGVfb3JfZGlyX25hbWUoZmlyc3RfbGluZSwgRElSTkFNRV9UQUcpCi0KLSAgICBkZWYgc3Vic3RpdHV0ZV9maWxlbmFtZShzZWxmLCBmaXJzdF9saW5lKToKLSAgICAgICAgIiIiCi0gICAgICAgIEZpbmQgdGhlIGZpbGVuYW1lIGluIGZpcnN0X2xpbmUgYW5kIGFwcGVuZCBpdCB0byB0cmFuc2xhdGVkX2ZpbGVuYW1lLgotICAgICAgICAiIiIKLSAgICAgICAgc3Vic3RpdHV0ZWRfZmlsZW5hbWUgPSBzZWxmLmdldF9zdWJzdGl0dXRlZF9maWxlbmFtZShmaXJzdF9saW5lKQotICAgICAgICBzZWxmLmFwcGVuZF90cmFuc2xhdGVkX2ZpbGVuYW1lKHN1YnN0aXR1dGVkX2ZpbGVuYW1lKTsKLQotICAgIGRlZiBzdWJzdGl0dXRlX2Rpcm5hbWUoc2VsZiwgZmlyc3RfbGluZSk6Ci0gICAgICAgICIiIgotICAgICAgICBGaW5kIHRoZSBkaXJuYW1lIGluIGZpcnN0X2xpbmUgYW5kIGFwcGVuZCBpdCB0byB0cmFuc2xhdGVkX2ZpbGVuYW1lLgotICAgICAgICAiIiIKLSAgICAgICAgc3Vic3RpdHV0ZWRfZGlybmFtZSA9IHNlbGYuZ2V0X3N1YnN0aXR1dGVkX2Rpcm5hbWUoZmlyc3RfbGluZSkKLSAgICAgICAgc2VsZi5hcHBlbmRfdHJhbnNsYXRlZF9maWxlbmFtZShzdWJzdGl0dXRlZF9kaXJuYW1lKTsKLQotICAgIGRlZiBpc19maWxlbmFtZV9zdWJzdGl0dXRpb24oc2VsZiwgbGluZSk6Ci0gICAgICAgICIiIgotICAgICAgICBEbyB3ZSBoYXZlIGEgZmlsZW5hbWUgc3VidXN0aXRpb24/Ci0gICAgICAgICIiIgotICAgICAgICBpZiBsaW5lLmZpbmQoRklMRU5BTUVfVEFHKSAhPSAtMToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIGlzX2Rpcm5hbWVfc3Vic3RpdHV0aW9uKHNlbGYsIGxpbmUpOgotICAgICAgICAiIiIKLSAgICAgICAgRG8gd2UgaGF2ZSBhIGRpcm5hbWUgc3VidXN0aXRpb24/Ci0gICAgICAgICIiIgotICAgICAgICBpZiBsaW5lLmZpbmQoRElSTkFNRV9UQUcpICE9IC0xOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgdHJhbnNsYXRlX2Rpcm5hbWUoc2VsZiwgZmlyc3RfbGluZSk6Ci0gICAgICAgICIiIgotICAgICAgICBKdXN0IHNhdmUgdGhlIGZpcnN0X2xpbmUgbWFwcGVkIGJ5IGZpbGVuYW1lLiAgVGhlIGxhdGVyIHBhc3MKLSAgICAgICAgdGhyb3VnaCB0aGUgZGlyZWN0b3JpZXMgd2lsbCBsb29rIGZvciBhIGRpcm5hbWUubm9pbnN0YWxsCi0gICAgICAgIG1hdGNoIGFuZCBncmFiIHRoZSBzdWJzdGl0dXRpb24gbGluZS4KLSAgICAgICAgIiIiCi0gICAgICAgIGRpcm5hbWVfc3Vic3RpdHV0aW9uc1tzZWxmLmZpbGVuYW1lXSA9IGZpcnN0X2xpbmUKLQotICAgIGRlZiB0cmFuc2xhdGVfZGlybmFtZXNfaW5fcGF0aChzZWxmLCBwYXRoKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRyYW5zbGF0ZSBkaXJuYW1lcyBiZWxvdyB0aGlzIGZpbGUgb3IgZGlyLCBub3QgaW5jbHVkaW5nIHRhaWwuCi0gICAgICAgIGRpcm5hbWVfc3Vic3RpdGl0aW9ucyBpcyBrZXllZCBvbiBhY3R1YWwgdW50cmFuc2xhdGVkIGZpbGVuYW1lcy4KLSAgICAgICAgdHJhbnNsYXRlZF9wYXRoIGNvbnRhaW5zIHRoZSBzdWJzaXRpdHV0aW9ucyBmb3IgZWFjaCBlbGVtZW50LgotICAgICAgICAiIiIKLSAgICAgICAgcmVtYWluZGVyID0gcGF0aFtsZW4oc2VsZi5maWxlYmFzZSkrMTpdCi0gICAgICAgIHRyYW5zbGF0ZWRfcGF0aCA9IHVudHJhbnNsYXRlZF9wYXRoID0gc2VsZi5maWxlYmFzZQotCi0gICAgICAgIHVudHJhbnNsYXRlZF9kaXJzID0gcmVtYWluZGVyLnNwbGl0KG9zLnNlcCkKLQotICAgICAgICBmb3IgZGlyIGluIHVudHJhbnNsYXRlZF9kaXJzOgotICAgICAgICAgICAga2V5ID0gb3MucGF0aC5qb2luKHVudHJhbnNsYXRlZF9wYXRoLCBkaXIgKyAnLm5vaW5zdGFsbCcpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZmlyc3RfbGluZSA9IGRpcm5hbWVfc3Vic3RpdHV0aW9uc1trZXldCi0gICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgdHJhbnNsYXRlZF9wYXRoID0gb3MucGF0aC5qb2luKHRyYW5zbGF0ZWRfcGF0aCwgZGlyKQotICAgICAgICAgICAgICAgIHVudHJhbnNsYXRlZF9wYXRoID0gb3MucGF0aC5qb2luKHVudHJhbnNsYXRlZF9wYXRoLCBkaXIpCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHN1YnN0aXR1dGVkX2RpciA9IHNlbGYuZ2V0X3N1YnN0aXR1dGVkX2Rpcm5hbWUoZmlyc3RfbGluZSkKLSAgICAgICAgICAgIHRyYW5zbGF0ZWRfcGF0aCA9IG9zLnBhdGguam9pbih0cmFuc2xhdGVkX3BhdGgsIHN1YnN0aXR1dGVkX2RpcikKLSAgICAgICAgICAgIHVudHJhbnNsYXRlZF9wYXRoID0gb3MucGF0aC5qb2luKHVudHJhbnNsYXRlZF9wYXRoLCBkaXIpCi0KLSAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZWRfcGF0aAotCi0gICAgZGVmIHRyYW5zbGF0ZV9maWxlX29yX2Rpcl9uYW1lKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgT3JpZ2luYWxseSB3ZSB3ZXJlIGFsbG93ZWQgdG8gdXNlIG9wZW4vY2xvc2UvYXNzaWduIHRhZ3MgYW5kIHB5dGhvbgotICAgICAgICBjb2RlIGluIHRoZSBmaWxlbmFtZSwgd2hpY2ggZml0IGluIG5pY2VseSB3aXRoIHRoZSB3YXkgd2UKLSAgICAgICAgcHJvY2Vzc2VkIHRoZSB0ZW1wbGF0ZXMgYW5kIGdlbmVyYXRlZCBjb2RlLiAgTm93IHRoYXQgd2UgY2FuJ3QKLSAgICAgICAgZG8gdGhhdCwgd2UgbWFrZSB0aG9zZSB0YWdzIHByb3BlciBmaWxlIGNvbnRlbnRzIGFuZCBoYXZlIHRoaXMKLSAgICAgICAgcGFzcyBzdWJzdGl0dXRlIHRoZSBuaWNlIGJ1dCBub24tZnVuY3Rpb25hbCBuYW1lcyB3aXRoIHRob3NlCi0gICAgICAgICdzdHJhbmdlJyBvbmVzLCBhbmQgdGhlbiBwcm9jZWVkIGFzIHVzdWFsLgotCi0gICAgICAgIFNvLCBpZiBmaWxlcyBvciBtYXRjaGluZyBkaXI8Lm5vaW5zdGFsbD4gZmlsZXMgY29udGFpbgotICAgICAgICBmaWxlbmFtZSBzdWJzdGl0dXRpb25zLCB0aGlzIGZ1bmN0aW9uIHRyYW5zbGF0ZXMgdGhlbSBpbnRvIHRoZQotICAgICAgICBjb3JyZXNwb25kaW5nICdzdHJhbmdlJyBuYW1lcywgd2hpY2ggZnV0dXJlIHBhc3NlcyB3aWxsIGV4cGFuZAotICAgICAgICBhcyB0aGV5IGFsd2F5cyBoYXZlLiAgVGhlIHJlc3VsdGluZyBwYXRobmFtZSBpcyBrZXB0IGluIHRoZQotICAgICAgICBmaWxlIG9yIGRpcmVjdG9yeSdzIHRyYW5zbGF0ZWRfZmlsZW5hbWUuICBBbm90aGVyIHdheSB0byB0aGluawotICAgICAgICBhYm91dCBpdCBpcyB0aGF0IHNlbGYuZmlsZW5hbWUgaXMgdGhlIGlucHV0IGZpbGVuYW1lLCBhbmQKLSAgICAgICAgdHJhbnNsYXRlZF9maWxlbmFtZSBpcyB0aGUgb3V0cHV0IGZpbGVuYW1lIGJlZm9yZSBleHBhbnNpb24uCi0gICAgICAgICIiIgotICAgICAgICAjIHJlbW92ZSBsZWFmIGZpbGUgb3IgZGlybmFtZQotICAgICAgICBoZWFkLCB0YWlsID0gb3MucGF0aC5zcGxpdChzZWxmLmZpbGVuYW1lKQotICAgICAgICB0cmFuc2xhdGVkX3BhdGggPSBzZWxmLnRyYW5zbGF0ZV9kaXJuYW1lc19pbl9wYXRoKGhlYWQpCi0gICAgICAgIHNlbGYudHJhbnNsYXRlZF9maWxlbmFtZSA9IHRyYW5zbGF0ZWRfcGF0aAotCi0gICAgICAgICMgVGhpcyBpcyBhIGRpcm5hbWUgLSBkb2VzIGl0IGhhdmUgYSBtYXRjaGluZyAubm9pbnN0YWxsIHdpdGgKLSAgICAgICAgIyBhIHN1YnN0aXR1dGlvbj8gIElmIHNvLCBhcHBseSB0aGUgZGlybmFtZSBzdWJzaXRpdHV0aW9uLgotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoc2VsZi5maWxlbmFtZSk6Ci0gICAgICAgICAgICBrZXkgPSBzZWxmLmZpbGVuYW1lICsgIi5ub2luc3RhbGwiCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZmlyc3RfbGluZSA9IGRpcm5hbWVfc3Vic3RpdHV0aW9uc1trZXldCi0gICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgc2VsZi5hcHBlbmRfdHJhbnNsYXRlZF9maWxlbmFtZSh0YWlsKQotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgc2VsZi5zdWJzdGl0dXRlX2Rpcm5hbWUoZmlyc3RfbGluZSkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGYgPSBvcGVuKHNlbGYuZmlsZW5hbWUpCi0gICAgICAgIGZpcnN0X2xpbmUgPSBmLnJlYWRsaW5lKCkKLSAgICAgICAgZi5jbG9zZSgpCi0KLSAgICAgICAgIyBUaGlzIGlzIGEgbm9ybWFsIGZpbGVuYW1lIG5vdCBuZWVkaW5nIHRyYW5zbGF0aW9uLCBqdXN0IHVzZQotICAgICAgICAjIGl0IGFzLWlzLgotICAgICAgICBpZiBub3QgZmlyc3RfbGluZSBvciBub3QgZmlyc3RfbGluZS5zdGFydHN3aXRoKCIjIik6Ci0gICAgICAgICAgICBzZWxmLmFwcGVuZF90cmFuc2xhdGVkX2ZpbGVuYW1lKHRhaWwpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAjIElmIHdlIGhhdmUgYSBmaWxlbmFtZSBzdWJzdGl0dXRpb24gKGZpcnN0IGxpbmUgaW4gdGhlIGZpbGUKLSAgICAgICAgIyBpcyBhIEZJTEVOQU1FX1RBRyBsaW5lKSBkbyB0aGUgc3Vic3RpdHV0aW9uIG5vdy4gIElmIHdlIGhhdmUKLSAgICAgICAgIyBhIGRpcm5hbWUgc3Vic3RpdHV0aW9uIChESVJOQU1FX1RBRyBpbiBkaXJuYW1lLm5vaW5zdGFsbAotICAgICAgICAjIG1ldGEtZmlsZSksIGhhc2ggaXQgc28gd2UgY2FuIGFwcGx5IGl0IHdoZW4gd2Ugc2VlIHRoZQotICAgICAgICAjIG1hdGNoaW5nIGRpcm5hbWUgbGF0ZXIuICBPdGhlcndpc2Ugd2UgaGF2ZSBhIHJlZ3VsYXIKLSAgICAgICAgIyBmaWxlbmFtZSwganVzdCB1c2UgaXQgYXMtaXMuCi0gICAgICAgIGlmIHNlbGYuaXNfZmlsZW5hbWVfc3Vic3RpdHV0aW9uKGZpcnN0X2xpbmUpOgotICAgICAgICAgICAgc2VsZi5zdWJzdGl0dXRlX2ZpbGVuYW1lKGZpcnN0X2xpbmUpCi0gICAgICAgIGVsaWYgc2VsZi5pc19kaXJuYW1lX3N1YnN0aXR1dGlvbihmaXJzdF9saW5lKToKLSAgICAgICAgICAgIHNlbGYudHJhbnNsYXRlX2Rpcm5hbWUoZmlyc3RfbGluZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYXBwZW5kX3RyYW5zbGF0ZWRfZmlsZW5hbWUodGFpbCkKLQotICAgIGRlZiBleHBhbmRfZmlsZV9vcl9kaXJfbmFtZShzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIEV4cGFuZCBmaWxlIG9yIGRpciBuYW1lcyBpbnRvIGNvZGVsaW5lLiAgRGlybmFtZXMgYW5kCi0gICAgICAgIGZpbGVuYW1lcyBjYW4gb25seSBoYXZlIGFzc2lnbm1lbnRzIG9yIGlmIHN0YXRlbWVudHMuICBGaXJzdAotICAgICAgICB0cmFuc2xhdGUgaWYgc3RhdGVtZW50cyBpbnRvIENvZGVMaW5lICsgKGRpcm5hbWUgb3IgZmlsZW5hbWUKLSAgICAgICAgY3JlYXRpb24pLgotICAgICAgICAiIiIKLSAgICAgICAgbGluZW5vID0gMAotCi0gICAgICAgIGxpbmUgPSBzZWxmLnRyYW5zbGF0ZWRfZmlsZW5hbWVbbGVuKHNlbGYuZmlsZWJhc2UpOl0KLSAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCIvIik6Ci0gICAgICAgICAgICBsaW5lID0gbGluZVsxOl0KLSAgICAgICAgb3BlbnRhZ19zdGFydCA9IC0xCi0KLSAgICAgICAgc3RhcnQgPSBsaW5lLmZpbmQoT1BFTl9UQUcpCi0gICAgICAgIHdoaWxlIHN0YXJ0ICE9IC0xOgotICAgICAgICAgICAgaWYgbm90IGxpbmVbc3RhcnQ6XS5zdGFydHN3aXRoKEFTU0lHTl9UQUcpOgotICAgICAgICAgICAgICAgIG9wZW50YWdfc3RhcnQgPSBzdGFydAotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBzdGFydCArPSBsZW4oQVNTSUdOX1RBRykKLSAgICAgICAgICAgIHN0YXJ0ID0gbGluZS5maW5kKE9QRU5fVEFHLCBzdGFydCkKLQotICAgICAgICBpZiBvcGVudGFnX3N0YXJ0ICE9IC0xOgotICAgICAgICAgICAgZW5kID0gbGluZS5maW5kKENMT1NFX1RBRywgb3BlbnRhZ19zdGFydCkKLSAgICAgICAgICAgIGlmIGVuZCA9PSAtMToKLSAgICAgICAgICAgICAgICBzZWxmLnBhcnNlX2Vycm9yKCJObyBjbG9zZSB0YWcgZm91bmQgZm9yIG9wZW4gdGFnIiwgbGluZW5vLCBsaW5lKQotICAgICAgICAgICAgIyB3ZSBoYXZlIGEge3sgdGFnIGkuZS4gY29kZQotICAgICAgICAgICAgdGFnID0gbGluZVtvcGVudGFnX3N0YXJ0ICsgbGVuKE9QRU5fVEFHKTplbmRdLnN0cmlwKCkKLSAgICAgICAgICAgIGlmIG5vdCB0YWcubHN0cmlwKCkuc3RhcnRzd2l0aChJRl9UQUcpOgotICAgICAgICAgICAgICAgIHNlbGYucGFyc2VfZXJyb3IoIk9ubHkgJ2lmJyB0YWdzIGFyZSBhbGxvd2VkIGluIGZpbGUgb3IgZGlyZWN0b3J5IG5hbWVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubywgbGluZSkKLSAgICAgICAgICAgIHNlbGYuZXhwYW5kZWRfbGluZXMuYXBwZW5kKENvZGVMaW5lKHRhZykpCi0KLSAgICAgICAgICAgICMgZXZlcnl0aGluZyBhZnRlciB9fSBpcyB0aGUgYWN0dWFsIGZpbGVuYW1lIChwb3NzaWJseSB3aXRoIGFzc2lnbm1lbnRzKQotICAgICAgICAgICAgIyBldmVyeXRoaW5nIGJlZm9yZSBpcyB0aGUgcGF0aG5hbWUKLSAgICAgICAgICAgIGxpbmUgPSBsaW5lWzpvcGVudGFnX3N0YXJ0XSArIGxpbmVbZW5kICsgbGVuKENMT1NFX1RBRyk6XS5zdHJpcCgpCi0KLSAgICAgICAgYXNzaWduX3N0YXJ0ID0gbGluZS5maW5kKEFTU0lHTl9UQUcpCi0gICAgICAgIGlmIGFzc2lnbl9zdGFydCAhPSAtMToKLSAgICAgICAgICAgIGFzc2lnbm1lbnRfdGFnID0gc2VsZi5leHBhbmRfYXNzaWdubWVudF90YWcoYXNzaWduX3N0YXJ0LCBsaW5lLCBsaW5lbm8pCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYsIFN1YnN0cmF0ZUZpbGUpOgotICAgICAgICAgICAgICAgIGFzc2lnbm1lbnRfdGFnLmlzX2ZpbGVuYW1lID0gVHJ1ZQotICAgICAgICAgICAgICAgIGFzc2lnbm1lbnRfdGFnLm91dF9maWxlYmFzZSA9IHNlbGYub3V0X2ZpbGViYXNlCi0gICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc2VsZiwgU3Vic3RyYXRlRGlyKToKLSAgICAgICAgICAgICAgICBhc3NpZ25tZW50X3RhZy5pc19kaXJuYW1lID0gVHJ1ZQotICAgICAgICAgICAgICAgIGFzc2lnbm1lbnRfdGFnLm91dF9maWxlYmFzZSA9IHNlbGYub3V0X2ZpbGViYXNlCi0gICAgICAgICAgICBzZWxmLmV4cGFuZGVkX2xpbmVzLmFwcGVuZChhc3NpZ25tZW50X3RhZykKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIG5vcm1hbF9saW5lID0gTm9ybWFsTGluZShsaW5lKQotICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYsIFN1YnN0cmF0ZUZpbGUpOgotICAgICAgICAgICAgbm9ybWFsX2xpbmUuaXNfZmlsZW5hbWUgPSBUcnVlCi0gICAgICAgICAgICBub3JtYWxfbGluZS5vdXRfZmlsZWJhc2UgPSBzZWxmLm91dF9maWxlYmFzZQotICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc2VsZiwgU3Vic3RyYXRlRGlyKToKLSAgICAgICAgICAgIG5vcm1hbF9saW5lLmlzX2Rpcm5hbWUgPSBUcnVlCi0gICAgICAgICAgICBub3JtYWxfbGluZS5vdXRfZmlsZWJhc2UgPSBzZWxmLm91dF9maWxlYmFzZQotICAgICAgICBzZWxmLmV4cGFuZGVkX2xpbmVzLmFwcGVuZChub3JtYWxfbGluZSkKLQotICAgIGRlZiBleHBhbmQoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBFeHBhbmQgdGhlIGZpbGUgb3IgZGlyIG5hbWUgZmlyc3QsIGV2ZW50dWFsbHkgdGhpcyBlbmRzIHVwCi0gICAgICAgIGNyZWF0aW5nIHRoZSBmaWxlIG9yIGRpci4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYudHJhbnNsYXRlX2ZpbGVfb3JfZGlyX25hbWUoKQotICAgICAgICBzZWxmLmV4cGFuZF9maWxlX29yX2Rpcl9uYW1lKCkKLQotCi1jbGFzcyBTdWJzdHJhdGVGaWxlKFN1YnN0cmF0ZUJhc2UpOgotICAgICIiIgotICAgIENvbnRhaW5lciBmb3IgYm90aCBleHBhbmRlZCBhbmQgdW5leHBhbmRlZCBzdWJzdHJhdGUgZmlsZXMuCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBmaWxlYmFzZSwgb3V0X2ZpbGViYXNlKToKLSAgICAgICAgU3Vic3RyYXRlQmFzZS5fX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgZmlsZWJhc2UsIG91dF9maWxlYmFzZSkKLQotICAgIGRlZiByZWFkKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnJhd19saW5lczoKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBmID0gb3BlbihzZWxmLmZpbGVuYW1lKQotICAgICAgICBzZWxmLnJhd19saW5lcyA9IGYucmVhZGxpbmVzKCkKLQotICAgIGRlZiBleHBhbmQoc2VsZik6Ci0gICAgICAgICIiIkV4cGFuZCB0aGUgY29udGVudHMgb2YgYWxsIHRlbXBsYXRlIHRhZ3MgaW4gdGhlIGZpbGUuIiIiCi0gICAgICAgIFN1YnN0cmF0ZUJhc2UuZXhwYW5kKHNlbGYpCi0gICAgICAgIHNlbGYucmVhZCgpCi0KLSAgICAgICAgZm9yIGxpbmVubywgbGluZSBpbiBlbnVtZXJhdGUoc2VsZi5yYXdfbGluZXMpOgotICAgICAgICAgICAgIyBvbmx5IGZpcnN0IGxpbmUgY2FuIGJlIGEgZmlsZW5hbWUgc3Vic3RpdGl0aW9uCi0gICAgICAgICAgICBpZiBsaW5lbm8gPT0gMCBhbmQgbGluZS5zdGFydHN3aXRoKCIjIikgYW5kIEZJTEVOQU1FX1RBRyBpbiBsaW5lOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlICMgc2tpcCBpdCAtIHdlJ3ZlIGFscmVhZHkgZXhwYW5kZWQgaXQKLSAgICAgICAgICAgIGV4cGFuZGVkX2xpbmUgPSBzZWxmLmV4cGFuZF90YWcobGluZSwgbGluZW5vICsgMSkgIyBodW1hbnMgbm90IDAtYmFzZWQKLSAgICAgICAgICAgIGlmIG5vdCBleHBhbmRlZF9saW5lOgotICAgICAgICAgICAgICAgIGV4cGFuZGVkX2xpbmUgPSBOb3JtYWxMaW5lKGxpbmUucnN0cmlwKCkpCi0gICAgICAgICAgICBzZWxmLmV4cGFuZGVkX2xpbmVzLmFwcGVuZChleHBhbmRlZF9saW5lKQotCi0gICAgZGVmIGdlbihzZWxmLCBjb250ZXh0ID0gTm9uZSk6Ci0gICAgICAgICIiIkdlbmVyYXRlIHRoZSBjb2RlIHRoYXQgZ2VuZXJhdGVzIHRoZSBCU1AuIiIiCi0gICAgICAgIGJhc2VfaW5kZW50ID0gMAotCi0gICAgICAgIGluZGVudCA9IG5ld19pbmRlbnQgPSBiYXNlX2luZGVudAotCi0gICAgICAgIGZvciBsaW5lIGluIHNlbGYuZXhwYW5kZWRfbGluZXM6Ci0gICAgICAgICAgICBnZW5saW5lID0gbGluZS5nZW4oY29udGV4dCkKLSAgICAgICAgICAgIGlmIG5vdCBnZW5saW5lOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGxpbmUsIElucHV0TGluZSk6Ci0gICAgICAgICAgICAgICAgbGluZS5nZW5lcmF0ZWRfbGluZSA9IGdlbmxpbmUKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgZ2VubGluZS5zdGFydHN3aXRoKE9QRU5fU1RBUlQpOgotICAgICAgICAgICAgICAgIGlmIGluZGVudCA9PSAxOgotICAgICAgICAgICAgICAgICAgICBiYXNlX2luZGVudCA9IDEKLSAgICAgICAgICAgIGlmIGluZGVudDoKLSAgICAgICAgICAgICAgICBpZiBnZW5saW5lID09IEJMQU5LTElORV9TVFIgb3IgKG5vdCBnZW5saW5lLnN0YXJ0c3dpdGgoTk9STUFMX1NUQVJUKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG5vdCBnZW5saW5lLnN0YXJ0c3dpdGgoT1BFTl9TVEFSVCkpOgotICAgICAgICAgICAgICAgICAgICBpbmRlbnQgPSBuZXdfaW5kZW50ID0gYmFzZV9pbmRlbnQKLSAgICAgICAgICAgIGlmIGdlbmxpbmUuZW5kc3dpdGgoIjoiKToKLSAgICAgICAgICAgICAgICBuZXdfaW5kZW50ID0gYmFzZV9pbmRlbnQgKyAxCi0gICAgICAgICAgICBsaW5lLmdlbmVyYXRlZF9saW5lID0gKGluZGVudCAqIElOREVOVF9TVFIpICsgZ2VubGluZQotICAgICAgICAgICAgaW5kZW50ID0gbmV3X2luZGVudAotCi0KLWNsYXNzIFN1YnN0cmF0ZURpcihTdWJzdHJhdGVCYXNlKToKLSAgICAiIiIKLSAgICBDb250YWluZXIgZm9yIGJvdGggZXhwYW5kZWQgYW5kIHVuZXhwYW5kZWQgc3Vic3RyYXRlIGRpcnMuCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBmaWxlYmFzZSwgb3V0X2ZpbGViYXNlKToKLSAgICAgICAgU3Vic3RyYXRlQmFzZS5fX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgZmlsZWJhc2UsIG91dF9maWxlYmFzZSkKLQotICAgIGRlZiBleHBhbmQoc2VsZik6Ci0gICAgICAgIFN1YnN0cmF0ZUJhc2UuZXhwYW5kKHNlbGYpCi0KLSAgICBkZWYgZ2VuKHNlbGYsIGNvbnRleHQgPSBOb25lKToKLSAgICAgICAgIiIiR2VuZXJhdGUgdGhlIGNvZGUgdGhhdCBnZW5lcmF0ZXMgdGhlIEJTUC4iIiIKLSAgICAgICAgaW5kZW50ID0gbmV3X2luZGVudCA9IDAKLSAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5leHBhbmRlZF9saW5lczoKLSAgICAgICAgICAgIGdlbmxpbmUgPSBsaW5lLmdlbihjb250ZXh0KQotICAgICAgICAgICAgaWYgbm90IGdlbmxpbmU6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIGdlbmxpbmUuZW5kc3dpdGgoIjoiKToKLSAgICAgICAgICAgICAgICBuZXdfaW5kZW50ID0gMQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBuZXdfaW5kZW50ID0gMAotICAgICAgICAgICAgbGluZS5nZW5lcmF0ZWRfbGluZSA9IChpbmRlbnQgKiBJTkRFTlRfU1RSKSArIGdlbmxpbmUKLSAgICAgICAgICAgIGluZGVudCA9IG5ld19pbmRlbnQKLQotCi1kZWYgZXhwYW5kX3RhcmdldCh0YXJnZXQsIGFsbF9maWxlcywgb3V0X2ZpbGViYXNlKToKLSAgICAiIiIKLSAgICBFeHBhbmQgdGhlIGNvbnRlbnRzIG9mIGFsbCB0ZW1wbGF0ZSB0YWdzIGluIHRoZSB0YXJnZXQuICBUaGlzCi0gICAgbWVhbnMgcmVtb3ZpbmcgdGFncyBhbmQgY2F0ZWdvcml6aW5nIG9yIGNyZWF0aW5nIGxpbmVzIHNvIHRoYXQKLSAgICBmdXR1cmUgcGFzc2VzIGNhbiBwcm9jZXNzIGFuZCBwcmVzZW50IGlucHV0IGxpbmVzIGFuZCBnZW5lcmF0ZSB0aGUKLSAgICBjb3JyZXNwb25kaW5nIGxpbmVzIG9mIHRoZSBQeXRob24gcHJvZ3JhbSB0aGF0IHdpbGwgYmUgZXhlYydlZCB0bwotICAgIGFjdHVhbGx5IHByb2R1Y2UgdGhlIGZpbmFsIEJTUC4gICdhbGxfZmlsZXMnIGluY2x1ZGVzIGRpcmVjdG9yaWVzLgotICAgICIiIgotICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHRhcmdldCk6Ci0gICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgotICAgICAgICAgICAgaWYgZmlsZS5lbmRzd2l0aCgifiIpIG9yIGZpbGUuZW5kc3dpdGgoIiMiKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZiA9IG9zLnBhdGguam9pbihyb290LCBmaWxlKQotICAgICAgICAgICAgc2ZpbGUgPSBTdWJzdHJhdGVGaWxlKGYsIHRhcmdldCwgb3V0X2ZpbGViYXNlKQotICAgICAgICAgICAgc2ZpbGUuZXhwYW5kKCkKLSAgICAgICAgICAgIGFsbF9maWxlcy5hcHBlbmQoc2ZpbGUpCi0KLSAgICAgICAgZm9yIGRpciBpbiBkaXJzOgotICAgICAgICAgICAgZCA9IG9zLnBhdGguam9pbihyb290LCBkaXIpCi0gICAgICAgICAgICBzZGlyID0gU3Vic3RyYXRlRGlyKGQsIHRhcmdldCwgb3V0X2ZpbGViYXNlKQotICAgICAgICAgICAgc2Rpci5leHBhbmQoKQotICAgICAgICAgICAgYWxsX2ZpbGVzLmFwcGVuZChzZGlyKQotCi0KLWRlZiBnZW5fcHJvZ3JhbV9tYWNoaW5lX2xpbmVzKG1hY2hpbmUsIHByb2dyYW1fbGluZXMpOgotICAgICIiIgotICAgIFVzZSB0aGUgaW5wdXQgdmFsdWVzIHdlIGdvdCBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCi0gICAgIiIiCi0gICAgbGluZSA9ICJtYWNoaW5lID0gXCIiICsgbWFjaGluZSArICJcIiIKLSAgICBwcm9ncmFtX2xpbmVzLmFwcGVuZChsaW5lKQotCi0gICAgbGluZSA9ICJsYXllcl9uYW1lID0gXCIiICsgbWFjaGluZSArICJcIiIKLSAgICBwcm9ncmFtX2xpbmVzLmFwcGVuZChsaW5lKQotCi0KLWRlZiBzb3J0X2lucHV0bGluZXMoaW5wdXRfbGluZXMpOgotICAgICIiIlNvcnQgaW5wdXQgbGluZXMgYWNjb3JkaW5nIHRvIHByaW9yaXR5IChwb3NpdGlvbikuIiIiCi0gICAgaW5wdXRfbGluZXMuc29ydChrZXkgPSBsYW1iZGEgbDogbC5wcmlvKQotCi0KLWRlZiBmaW5kX3BhcmVudF9kZXBlbmRlbmN5KGxpbmVzLCBkZXBlbmRzX29uKToKLSAgICBmb3IgaSwgbGluZSBpbiBsaW5lczoKLSAgICAgICAgaWYgaXNpbnN0YW5jZShsaW5lLCBDb2RlTGluZSk6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiBsaW5lLnByb3BzWyJuYW1lIl0gPT0gZGVwZW5kc19vbjoKLSAgICAgICAgICAgIHJldHVybiBpCi0KLSAgICByZXR1cm4gLTEKLQotCi1kZWYgcHJvY2Vzc19pbnB1dGxpbmVfZGVwZW5kZW5jaWVzKGlucHV0X2xpbmVzLCBhbGxfaW5wdXRsaW5lcyk6Ci0gICAgIiIiSWYgYW55IGlucHV0IGxpbmVzIGRlcGVuZCBvbiBvdGhlcnMsIHB1dCB0aGUgb3RoZXJzIGZpcnN0LiIiIgotICAgIGZvciBsaW5lIGluIGlucHV0X2xpbmVzOgotICAgICAgICBpZiBpc2luc3RhbmNlKGxpbmUsIElucHV0TGluZUdyb3VwKToKLSAgICAgICAgICAgIGdyb3VwX2lucHV0bGluZXMgPSBbXQotICAgICAgICAgICAgcHJvY2Vzc19pbnB1dGxpbmVfZGVwZW5kZW5jaWVzKGxpbmUuZ3JvdXAsIGdyb3VwX2lucHV0bGluZXMpCi0gICAgICAgICAgICBsaW5lLmdyb3VwID0gZ3JvdXBfaW5wdXRsaW5lcwotICAgICAgICAgICAgYWxsX2lucHV0bGluZXMuYXBwZW5kKGxpbmUpCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgQ29kZUxpbmUpIG9yIGlzaW5zdGFuY2UobGluZSwgTm9ybWFsTGluZSk6Ci0gICAgICAgICAgICBhbGxfaW5wdXRsaW5lcy5hcHBlbmQobGluZSkKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGVwZW5kc19vbiA9IGxpbmUucHJvcHNbImRlcGVuZHMtb24iXQotICAgICAgICAgICAgZGVwZW5kc19jb2RlbGluZSA9ICJpZiAiICsgbGluZS5wcm9wc1siZGVwZW5kcy1vbiJdICsgIiA9PSBcIiIgKyBsaW5lLnByb3BzWyJkZXBlbmRzLW9uLXZhbCJdICsgIlwiOiIKLSAgICAgICAgICAgIGFsbF9pbnB1dGxpbmVzLmFwcGVuZChDb2RlTGluZShkZXBlbmRzX2NvZGVsaW5lKSkKLSAgICAgICAgICAgIGFsbF9pbnB1dGxpbmVzLmFwcGVuZChsaW5lKQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBhbGxfaW5wdXRsaW5lcy5hcHBlbmQobGluZSkKLQotCi1kZWYgY29uZGl0aW9uYWxfZmlsZW5hbWUoZmlsZW5hbWUpOgotICAgICIiIgotICAgIENoZWNrIGlmIHRoZSBmaWxlbmFtZSBpdHNlbGYgY29udGFpbnMgYSBjb25kaXRpb25hbCBzdGF0ZW1lbnQuICBJZgotICAgIHNvLCByZXR1cm4gYSBjb2RlbGluZSBmb3IgaXQuCi0gICAgIiIiCi0gICAgb3BlbnRhZ19zdGFydCA9IGZpbGVuYW1lLmZpbmQoT1BFTl9UQUcpCi0KLSAgICBpZiBvcGVudGFnX3N0YXJ0ICE9IC0xOgotICAgICAgICBpZiBmaWxlbmFtZVtvcGVudGFnX3N0YXJ0Ol0uc3RhcnRzd2l0aChBU1NJR05fVEFHKToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGVuZCA9IGZpbGVuYW1lLmZpbmQoQ0xPU0VfVEFHLCBvcGVudGFnX3N0YXJ0KQotICAgICAgICBpZiBlbmQgPT0gLTE6Ci0gICAgICAgICAgICBwcmludCgiTm8gY2xvc2UgdGFnIGZvdW5kIGZvciBvcGVuIHRhZyBpbiBmaWxlbmFtZSAlcyIgJSBmaWxlbmFtZSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICAgICAgIyB3ZSBoYXZlIGEge3sgdGFnIGkuZS4gY29kZQotICAgICAgICB0YWcgPSBmaWxlbmFtZVtvcGVudGFnX3N0YXJ0ICsgbGVuKE9QRU5fVEFHKTplbmRdLnN0cmlwKCkKLSAgICAgICAgaWYgbm90IHRhZy5sc3RyaXAoKS5zdGFydHN3aXRoKElGX1RBRyk6Ci0gICAgICAgICAgICBwcmludCgiT25seSAnaWYnIHRhZ3MgYXJlIGFsbG93ZWQgaW4gZmlsZSBvciBkaXJlY3RvcnkgbmFtZXMsIGZpbGVuYW1lOiAlcyIgJSBmaWxlbmFtZSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICAgICAgcmV0dXJuIENvZGVMaW5lKHRhZykKLQotICAgIHJldHVybiBOb25lCi0KLQotY2xhc3MgSW5wdXRMaW5lR3JvdXAoSW5wdXRMaW5lKToKLSAgICAiIiIKLSAgICBJbnB1dExpbmUgdGhhdCBkb2VzIG5vdGhpbmcgYnV0IGdyb3VwIG90aGVyIGlucHV0IGxpbmVzCi0gICAgY29ycmVzcG9uZGluZyB0byBhbGwgdGhlIGlucHV0IGxpbmVzIGluIGEgU3Vic3RyYXRlRmlsZSBzbyB0aGV5Ci0gICAgY2FuIGJlIGdlbmVyYXRlZCBhcyBhIGdyb3VwLiAgcHJpbyBpcyB0aGUgb25seSBwcm9wZXJ0eSB1c2VkLgotICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb2RlbGluZSk6Ci0gICAgICAgIElucHV0TGluZS5fX2luaXRfXyhzZWxmLCB7fSwgIiIsIDApCi0gICAgICAgIHNlbGYuZ3JvdXAgPSBbXQotICAgICAgICBzZWxmLnByaW8gPSBzeXMubWF4c2l6ZQotICAgICAgICBzZWxmLmdyb3VwLmFwcGVuZChjb2RlbGluZSkKLQotICAgIGRlZiBhcHBlbmQoc2VsZiwgbGluZSk6Ci0gICAgICAgIHNlbGYuZ3JvdXAuYXBwZW5kKGxpbmUpCi0gICAgICAgIGlmIGxpbmUucHJpbyA8IHNlbGYucHJpbzoKLSAgICAgICAgICAgIHNlbGYucHJpbyA9IGxpbmUucHJpbwotCi0gICAgZGVmIGxlbihzZWxmKToKLSAgICAgICAgcmV0dXJuIGxlbihzZWxmLmdyb3VwKQotCi0KLWRlZiBnYXRoZXJfaW5wdXRsaW5lcyhmaWxlcyk6Ci0gICAgIiIiCi0gICAgR2F0aGVyIGFsbCB0aGUgSW5wdXRMaW5lcyAtIHdlIHdhbnQgdG8gZ2VuZXJhdGUgdGhlbSBmaXJzdC4KLSAgICAiIiIKLSAgICBhbGxfaW5wdXRsaW5lcyA9IFtdCi0gICAgaW5wdXRfbGluZXMgPSBbXQotCi0gICAgZm9yIGZpbGUgaW4gZmlsZXM6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZSwgU3Vic3RyYXRlRmlsZSk6Ci0gICAgICAgICAgICBncm91cCA9IE5vbmUKLSAgICAgICAgICAgIGJhc2VuYW1lID0gb3MucGF0aC5iYXNlbmFtZShmaWxlLnRyYW5zbGF0ZWRfZmlsZW5hbWUpCi0KLSAgICAgICAgICAgIGNvZGVsaW5lID0gY29uZGl0aW9uYWxfZmlsZW5hbWUoYmFzZW5hbWUpCi0gICAgICAgICAgICBpZiBjb2RlbGluZToKLSAgICAgICAgICAgICAgICBncm91cCA9IElucHV0TGluZUdyb3VwKGNvZGVsaW5lKQotCi0gICAgICAgICAgICBoYXZlX2NvbmRpdGlvbiA9IEZhbHNlCi0gICAgICAgICAgICBjb25kaXRpb25fdG9fd3JpdGUgPSBOb25lCi0gICAgICAgICAgICBmb3IgbGluZSBpbiBmaWxlLmV4cGFuZGVkX2xpbmVzOgotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgQ29kZUxpbmUpOgotICAgICAgICAgICAgICAgICAgICBoYXZlX2NvbmRpdGlvbiA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uX3RvX3dyaXRlID0gbGluZQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgSW5wdXRMaW5lKToKLSAgICAgICAgICAgICAgICAgICAgaWYgZ3JvdXA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBjb25kaXRpb25fdG9fd3JpdGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uX3RvX3dyaXRlLnByaW8gPSBsaW5lLnByaW8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fdG9fd3JpdGUuZGlzY2FyZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cC5hcHBlbmQoY29uZGl0aW9uX3RvX3dyaXRlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl90b193cml0ZSA9IE5vbmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmFwcGVuZChsaW5lKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29uZGl0aW9uX3RvX3dyaXRlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbl90b193cml0ZS5wcmlvID0gbGluZS5wcmlvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uX3RvX3dyaXRlLmRpc2NhcmQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfbGluZXMuYXBwZW5kKGNvbmRpdGlvbl90b193cml0ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fdG9fd3JpdGUgPSBOb25lCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9saW5lcy5hcHBlbmQobGluZSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpZiBjb25kaXRpb25fdG9fd3JpdGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25fdG9fd3JpdGUgPSBOb25lCi0gICAgICAgICAgICAgICAgICAgIGlmIGhhdmVfY29uZGl0aW9uOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGxpbmUubGluZS5zdHJpcCgpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUuZGlzY2FyZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9saW5lcy5hcHBlbmQobGluZSkKLSAgICAgICAgICAgICAgICAgICAgaGF2ZV9jb25kaXRpb24gPSBGYWxzZQotCi0gICAgICAgICAgICBpZiBncm91cCBhbmQgZ3JvdXAubGVuKCkgPiAxOgotICAgICAgICAgICAgICAgIGlucHV0X2xpbmVzLmFwcGVuZChncm91cCkKLQotICAgIHNvcnRfaW5wdXRsaW5lcyhpbnB1dF9saW5lcykKLSAgICBwcm9jZXNzX2lucHV0bGluZV9kZXBlbmRlbmNpZXMoaW5wdXRfbGluZXMsIGFsbF9pbnB1dGxpbmVzKQotCi0gICAgcmV0dXJuIGFsbF9pbnB1dGxpbmVzCi0KLQotZGVmIHJ1bl9wcm9ncmFtX2xpbmVzKGxpbmVsaXN0LCBjb2RlZHVtcCk6Ci0gICAgIiIiCi0gICAgRm9yIGEgc2luZ2xlIGZpbGUsIHByaW50IGFsbCB0aGUgcHl0aG9uIGNvZGUgaW50byBhIGJ1ZiBhbmQgZXhlY3V0ZSBpdC4KLSAgICAiIiIKLSAgICBidWYgPSAiXG4iLmpvaW4obGluZWxpc3QpCi0KLSAgICBpZiBjb2RlZHVtcDoKLSAgICAgICAgb2YgPSBvcGVuKCJic3BnZW4ub3V0IiwgInciKQotICAgICAgICBvZi53cml0ZShidWYpCi0gICAgICAgIG9mLmNsb3NlKCkKLSAgICBleGVjKGJ1ZikKLQotCi1kZWYgZ2VuX3RhcmdldChmaWxlcywgY29udGV4dCA9IE5vbmUpOgotICAgICIiIgotICAgIEdlbmVyYXRlIHRoZSBweXRob24gY29kZSBmb3IgZWFjaCBmaWxlLgotICAgICIiIgotICAgIGZvciBmaWxlIGluIGZpbGVzOgotICAgICAgICBmaWxlLmdlbihjb250ZXh0KQotCi0KLWRlZiBnZW5fcHJvZ3JhbV9oZWFkZXJfbGluZXMocHJvZ3JhbV9saW5lcyk6Ci0gICAgIiIiCi0gICAgR2VuZXJhdGUgYW55IGltcG9ydHMgd2UgbmVlZC4KLSAgICAiIiIKLSAgICBwcm9ncmFtX2xpbmVzLmFwcGVuZCgiY3VycmVudF9maWxlID0gXCJcIiIpCi0KLQotZGVmIGdlbl9zdXBwbGllZF9wcm9wZXJ0eV92YWxzKHByb3BlcnRpZXMsIHByb2dyYW1fbGluZXMpOgotICAgICIiIgotICAgIEdlbmVyYXRlIHVzZXItc3BlY2lmaWVkIGVudHJpZXMgZm9yIGlucHV0IHZhbHVlcyBpbnN0ZWFkIG9mCi0gICAgZ2VuZXJhdGluZyBpbnB1dCBwcm9tcHRzLgotICAgICIiIgotICAgIGZvciBuYW1lLCB2YWwgaW4gcHJvcGVydGllcy5pdGVtcygpOgotICAgICAgICBwcm9ncmFtX2xpbmUgPSBuYW1lICsgIiA9IFwiIiArIHZhbCArICJcIiIKLSAgICAgICAgcHJvZ3JhbV9saW5lcy5hcHBlbmQocHJvZ3JhbV9saW5lKQotCi0KLWRlZiBnZW5faW5pdGlhbF9wcm9wZXJ0eV92YWxzKGlucHV0X2xpbmVzLCBwcm9ncmFtX2xpbmVzKToKLSAgICAiIiIKLSAgICBHZW5lcmF0ZSBudWxsIG9yIGRlZmF1bHQgZW50cmllcyBmb3IgaW5wdXQgdmFsdWVzLCBzbyB3ZSBkb24ndAotICAgIGhhdmUgdW5kZWZpbmVkIHZhcmlhYmxlcy4KLSAgICAiIiIKLSAgICBmb3IgbGluZSBpbiBpbnB1dF9saW5lczoKLSAgICAgICAgaWYgaXNpbnN0YW5jZShsaW5lLCBJbnB1dExpbmVHcm91cCk6Ci0gICAgICAgICAgICBnZW5faW5pdGlhbF9wcm9wZXJ0eV92YWxzKGxpbmUuZ3JvdXAsIHByb2dyYW1fbGluZXMpCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgSW5wdXRMaW5lKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBuYW1lID0gbGluZS5wcm9wc1sibmFtZSJdCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X3ZhbCA9ICJcIiIgKyBsaW5lLnByb3BzWyJkZWZhdWx0Il0gKyAiXCIiCi0gICAgICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X3ZhbCA9ICJcIlwiIgotICAgICAgICAgICAgICAgIHByb2dyYW1fbGluZSA9IG5hbWUgKyAiID0gIiArIGRlZmF1bHRfdmFsCi0gICAgICAgICAgICAgICAgcHJvZ3JhbV9saW5lcy5hcHBlbmQocHJvZ3JhbV9saW5lKQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLQotCi1kZWYgZ2VuX3Byb2dyYW1faW5wdXRfbGluZXMoaW5wdXRfbGluZXMsIHByb2dyYW1fbGluZXMsIGNvbnRleHQsIGluX2dyb3VwID0gRmFsc2UpOgotICAgICIiIgotICAgIEdlbmVyYXRlIG9ubHkgdGhlIGlucHV0IGxpbmVzIHVzZWQgZm9yIHByb21wdGluZyB0aGUgdXNlci4gIEZvcgotICAgIHRoYXQsIHdlIG9ubHkgaGF2ZSBpbnB1dCBsaW5lcyBhbmQgQ29kZUxpbmVzIHRoYXQgYWZmZWN0IHRoZSBuZXh0Ci0gICAgaW5wdXQgbGluZS4KLSAgICAiIiIKLSAgICBpbmRlbnQgPSBuZXdfaW5kZW50ID0gMAotCi0gICAgZm9yIGxpbmUgaW4gaW5wdXRfbGluZXM6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgSW5wdXRMaW5lR3JvdXApOgotICAgICAgICAgICAgZ2VuX3Byb2dyYW1faW5wdXRfbGluZXMobGluZS5ncm91cCwgcHJvZ3JhbV9saW5lcywgY29udGV4dCwgVHJ1ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGlmIG5vdCBsaW5lLmxpbmUuc3RyaXAoKToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgZ2VubGluZSA9IGxpbmUuZ2VuKGNvbnRleHQpCi0gICAgICAgIGlmIG5vdCBnZW5saW5lOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgZ2VubGluZS5lbmRzd2l0aCgiOiIpOgotICAgICAgICAgICAgbmV3X2luZGVudCArPSAxCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBpbmRlbnQgPiAxIG9yIChub3QgaW5fZ3JvdXAgYW5kIGluZGVudCk6Ci0gICAgICAgICAgICAgICAgbmV3X2luZGVudCAtPSAxCi0KLSAgICAgICAgbGluZS5nZW5lcmF0ZWRfbGluZSA9IChpbmRlbnQgKiBJTkRFTlRfU1RSKSArIGdlbmxpbmUKLSAgICAgICAgcHJvZ3JhbV9saW5lcy5hcHBlbmQobGluZS5nZW5lcmF0ZWRfbGluZSkKLQotICAgICAgICBpbmRlbnQgPSBuZXdfaW5kZW50Ci0KLQotZGVmIGdlbl9wcm9ncmFtX2xpbmVzKHRhcmdldF9maWxlcywgcHJvZ3JhbV9saW5lcyk6Ci0gICAgIiIiCi0gICAgR2VuZXJhdGUgdGhlIHByb2dyYW0gbGluZXMgdGhhdCBtYWtlIHVwIHRoZSBCU1AgZ2VuZXJhdGlvbgotICAgIHByb2dyYW0uICBUaGlzIGFwcGVuZHMgdGhlIGdlbmVyYXRlZCBsaW5lcyBvZiBhbGwgdGFyZ2V0X2ZpbGVzIHRvCi0gICAgcHJvZ3JhbV9saW5lcywgYW5kIHNraXBzIGlucHV0IGxpbmVzLCB3aGljaCBhcmUgZGVhbHQgd2l0aAotICAgIHNlcGFyYXRlbHksIG9yIG9taXR0ZWQuCi0gICAgIiIiCi0gICAgZm9yIGZpbGUgaW4gdGFyZ2V0X2ZpbGVzOgotICAgICAgICBpZiBmaWxlLmZpbGVuYW1lLmVuZHN3aXRoKCJub2luc3RhbGwiKToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgZm9yIGxpbmUgaW4gZmlsZS5leHBhbmRlZF9saW5lczoKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgSW5wdXRMaW5lKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgbGluZS5kaXNjYXJkOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIHByb2dyYW1fbGluZXMuYXBwZW5kKGxpbmUuZ2VuZXJhdGVkX2xpbmUpCi0KLQotZGVmIGNyZWF0ZV9jb250ZXh0KG1hY2hpbmUsIGFyY2gsIHNjcmlwdHNfcGF0aCk6Ci0gICAgIiIiCi0gICAgQ3JlYXRlIGEgY29udGV4dCBvYmplY3QgZm9yIHVzZSBpbiBkZWZlcnJlZCBmdW5jdGlvbiBpbnZvY2F0aW9uLgotICAgICIiIgotICAgIGNvbnRleHQgPSB7fQotCi0gICAgY29udGV4dFsibWFjaGluZSJdID0gbWFjaGluZQotICAgIGNvbnRleHRbImFyY2giXSA9IGFyY2gKLSAgICBjb250ZXh0WyJzY3JpcHRzX3BhdGgiXSA9IHNjcmlwdHNfcGF0aAotCi0gICAgcmV0dXJuIGNvbnRleHQKLQotCi1kZWYgY2FwdHVyZV9jb250ZXh0KGNvbnRleHQpOgotICAgICIiIgotICAgIENyZWF0ZSBhIGNvbnRleHQgb2JqZWN0IGZvciB1c2UgaW4gZGVmZXJyZWQgZnVuY3Rpb24gaW52b2NhdGlvbi4KLSAgICAiIiIKLSAgICBjYXB0dXJlZF9jb250ZXh0ID0ge30KLQotICAgIGNhcHR1cmVkX2NvbnRleHRbIm1hY2hpbmUiXSA9IGNvbnRleHRbIm1hY2hpbmUiXQotICAgIGNhcHR1cmVkX2NvbnRleHRbImFyY2giXSA9IGNvbnRleHRbImFyY2giXQotICAgIGNhcHR1cmVkX2NvbnRleHRbInNjcmlwdHNfcGF0aCJdID0gY29udGV4dFsic2NyaXB0c19wYXRoIl0KLQotICAgIHJldHVybiBjYXB0dXJlZF9jb250ZXh0Ci0KLQotZGVmIGV4cGFuZF90YXJnZXRzKGNvbnRleHQsIGJzcF9vdXRwdXRfZGlyLCBleHBhbmRfY29tbW9uPVRydWUpOgotICAgICIiIgotICAgIEV4cGFuZCBhbGwgdGhlIHRhZ3MgaW4gYm90aCB0aGUgY29tbW9uIGFuZCBtYWNoaW5lLXNwZWNpZmljCi0gICAgJ3RhcmdldHMnLgotCi0gICAgSWYgZXhwYW5kX2NvbW1vbiBpcyBGYWxzZSwgZG9uJ3QgZXhwYW5kIHRoZSBjb21tb24gdGFyZ2V0ICh0aGlzCi0gICAgb3B0aW9uIGlzIHVzZWQgdG8gY3JlYXRlIHNwZWNpYWwtcHVycG9zZSBsYXllcnMpLgotICAgICIiIgotICAgIHRhcmdldF9maWxlcyA9IFtdCi0KLSAgICBtYWNoaW5lID0gY29udGV4dFsibWFjaGluZSJdCi0gICAgYXJjaCA9IGNvbnRleHRbImFyY2giXQotICAgIHNjcmlwdHNfcGF0aCA9IGNvbnRleHRbInNjcmlwdHNfcGF0aCJdCi0KLSAgICBsaWJfcGF0aCA9IHNjcmlwdHNfcGF0aCArICcvbGliJwotICAgIGJzcF9wYXRoID0gbGliX3BhdGggKyAnL2JzcCcKLSAgICBhcmNoX3BhdGggPSBic3BfcGF0aCArICcvc3Vic3RyYXRlL3RhcmdldC9hcmNoJwotCi0gICAgaWYgZXhwYW5kX2NvbW1vbjoKLSAgICAgICAgY29tbW9uID0gb3MucGF0aC5qb2luKGFyY2hfcGF0aCwgImNvbW1vbiIpCi0gICAgICAgIGV4cGFuZF90YXJnZXQoY29tbW9uLCB0YXJnZXRfZmlsZXMsIGJzcF9vdXRwdXRfZGlyKQotCi0gICAgYXJjaGVzID0gb3MubGlzdGRpcihhcmNoX3BhdGgpCi0gICAgaWYgYXJjaCBub3QgaW4gYXJjaGVzIG9yIGFyY2ggPT0gImNvbW1vbiI6Ci0gICAgICAgIHByaW50KCJJbnZhbGlkIGthcmNoLCBleGl0aW5nXG4iKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgdGFyZ2V0ID0gb3MucGF0aC5qb2luKGFyY2hfcGF0aCwgYXJjaCkKLSAgICBleHBhbmRfdGFyZ2V0KHRhcmdldCwgdGFyZ2V0X2ZpbGVzLCBic3Bfb3V0cHV0X2RpcikKLQotICAgIGdlbl90YXJnZXQodGFyZ2V0X2ZpbGVzLCBjb250ZXh0KQotCi0gICAgcmV0dXJuIHRhcmdldF9maWxlcwotCi0KLWRlZiB5b2N0b19jb21tb25fY3JlYXRlKG1hY2hpbmUsIHRhcmdldCwgc2NyaXB0c19wYXRoLCBsYXllcl9vdXRwdXRfZGlyLCBjb2RlZHVtcCwgcHJvcGVydGllc19maWxlLCBwcm9wZXJ0aWVzX3N0cj0iIiwgZXhwYW5kX2NvbW1vbj1UcnVlKToKLSAgICAiIiIKLSAgICBDb21tb24gbGF5ZXItY3JlYXRpb24gY29kZQotCi0gICAgbWFjaGluZSAtIHVzZXItZGVmaW5lZCBtYWNoaW5lIG5hbWUgKGlmIG5lZWRlZCwgd2lsbCBnZW5lcmF0ZSAnbWFjaGluZScgdmFyKQotICAgIHRhcmdldCAtIHRoZSAndGFyZ2V0JyB0aGUgbGF5ZXIgd2lsbCBiZSBiYXNlZCBvbiwgbXVzdCBiZSBvbmUgaW4KLSAgICAgICAgICAgc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaAotICAgIHNjcmlwdHNfcGF0aCAtIGFic29sdXRlIHBhdGggdG8geW9jdG8gL3NjcmlwdHMgZGlyCi0gICAgbGF5ZXJfb3V0cHV0X2RpciAtIGRpcm5hbWUgdG8gY3JlYXRlIGZvciBsYXllcgotICAgIGNvZGVkdW1wIC0gZHVtcCBnZW5lcmF0ZWQgY29kZSB0byBic3BnZW4ub3V0Ci0gICAgcHJvcGVydGllc19maWxlIC0gdXNlIHZhbHVlcyBmcm9tIHRoaXMgZmlsZSBpZiBub25lbXB0eSBpLmUgbm8gcHJvbXB0aW5nCi0gICAgcHJvcGVydGllc19zdHIgLSB1c2UgdmFsdWVzIGZyb20gdGhpcyBzdHJpbmcgaWYgbm9uZW1wdHkgaS5lIG5vIHByb21wdGluZwotICAgIGV4cGFuZF9jb21tb24gLSBib29sZWFuLCB1c2UgdGhlIGNvbnRlbnRzIG9mIChmb3IgYnNwIGxheWVycykgYXJjaC9jb21tb24KLSAgICAiIiIKLSAgICBpZiBvcy5wYXRoLmV4aXN0cyhsYXllcl9vdXRwdXRfZGlyKToKLSAgICAgICAgcHJpbnQoIlxubGF5ZXIgb3V0cHV0IGRpciBhbHJlYWR5IGV4aXN0cywgZXhpdGluZy4gKCVzKSIgJSBsYXllcl9vdXRwdXRfZGlyKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgcHJvcGVydGllcyA9IE5vbmUKLQotICAgIGlmIHByb3BlcnRpZXNfZmlsZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaW5maWxlID0gb3Blbihwcm9wZXJ0aWVzX2ZpbGUsICJyIikKLSAgICAgICAgICAgIHByb3BlcnRpZXMgPSBqc29uLmxvYWQoaW5maWxlKQotICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgIHByaW50KCJDb3VsZG4ndCBvcGVuIHByb3BlcnRpZXMgZmlsZSAlcyBmb3IgcmVhZGluZywgZXhpdGluZyIgJSBwcm9wZXJ0aWVzX2ZpbGUpCi0gICAgICAgICAgICBzeXMuZXhpdCgxKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHByaW50KCJXcm9uZyBmb3JtYXQgb24gcHJvcGVydGllcyBmaWxlICVzLCBleGl0aW5nIiAlIHByb3BlcnRpZXNfZmlsZSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICBpZiBwcm9wZXJ0aWVzX3N0ciBhbmQgbm90IHByb3BlcnRpZXM6Ci0gICAgICAgIHByb3BlcnRpZXMgPSBqc29uLmxvYWRzKHByb3BlcnRpZXNfc3RyKQotCi0gICAgb3MubWtkaXIobGF5ZXJfb3V0cHV0X2RpcikKLQotICAgIGNvbnRleHQgPSBjcmVhdGVfY29udGV4dChtYWNoaW5lLCB0YXJnZXQsIHNjcmlwdHNfcGF0aCkKLSAgICB0YXJnZXRfZmlsZXMgPSBleHBhbmRfdGFyZ2V0cyhjb250ZXh0LCBsYXllcl9vdXRwdXRfZGlyLCBleHBhbmRfY29tbW9uKQotCi0gICAgaW5wdXRfbGluZXMgPSBnYXRoZXJfaW5wdXRsaW5lcyh0YXJnZXRfZmlsZXMpCi0KLSAgICBwcm9ncmFtX2xpbmVzID0gW10KLQotICAgIGdlbl9wcm9ncmFtX2hlYWRlcl9saW5lcyhwcm9ncmFtX2xpbmVzKQotCi0gICAgZ2VuX2luaXRpYWxfcHJvcGVydHlfdmFscyhpbnB1dF9saW5lcywgcHJvZ3JhbV9saW5lcykKLQotICAgIGlmIHByb3BlcnRpZXM6Ci0gICAgICAgIGdlbl9zdXBwbGllZF9wcm9wZXJ0eV92YWxzKHByb3BlcnRpZXMsIHByb2dyYW1fbGluZXMpCi0KLSAgICBnZW5fcHJvZ3JhbV9tYWNoaW5lX2xpbmVzKG1hY2hpbmUsIHByb2dyYW1fbGluZXMpCi0KLSAgICBpZiBub3QgcHJvcGVydGllczoKLSAgICAgICAgZ2VuX3Byb2dyYW1faW5wdXRfbGluZXMoaW5wdXRfbGluZXMsIHByb2dyYW1fbGluZXMsIGNvbnRleHQpCi0KLSAgICBnZW5fcHJvZ3JhbV9saW5lcyh0YXJnZXRfZmlsZXMsIHByb2dyYW1fbGluZXMpCi0KLSAgICBydW5fcHJvZ3JhbV9saW5lcyhwcm9ncmFtX2xpbmVzLCBjb2RlZHVtcCkKLQotCi1kZWYgeW9jdG9fbGF5ZXJfY3JlYXRlKGxheWVyX25hbWUsIHNjcmlwdHNfcGF0aCwgbGF5ZXJfb3V0cHV0X2RpciwgY29kZWR1bXAsIHByb3BlcnRpZXNfZmlsZSwgcHJvcGVydGllcz0iIik6Ci0gICAgIiIiCi0gICAgQ3JlYXRlIHlvY3RvIGxheWVyCi0KLSAgICBsYXllcl9uYW1lIC0gdXNlci1kZWZpbmVkIGxheWVyIG5hbWUKLSAgICBzY3JpcHRzX3BhdGggLSBhYnNvbHV0ZSBwYXRoIHRvIHlvY3RvIC9zY3JpcHRzIGRpcgotICAgIGxheWVyX291dHB1dF9kaXIgLSBkaXJuYW1lIHRvIGNyZWF0ZSBmb3IgbGF5ZXIKLSAgICBjb2RlZHVtcCAtIGR1bXAgZ2VuZXJhdGVkIGNvZGUgdG8gYnNwZ2VuLm91dAotICAgIHByb3BlcnRpZXNfZmlsZSAtIHVzZSB2YWx1ZXMgZnJvbSB0aGlzIGZpbGUgaWYgbm9uZW1wdHkgaS5lIG5vIHByb21wdGluZwotICAgIHByb3BlcnRpZXMgLSB1c2UgdmFsdWVzIGZyb20gdGhpcyBzdHJpbmcgaWYgbm9uZW1wdHkgaS5lIG5vIHByb21wdGluZwotICAgICIiIgotICAgIHlvY3RvX2NvbW1vbl9jcmVhdGUobGF5ZXJfbmFtZSwgImxheWVyIiwgc2NyaXB0c19wYXRoLCBsYXllcl9vdXRwdXRfZGlyLCBjb2RlZHVtcCwgcHJvcGVydGllc19maWxlLCBwcm9wZXJ0aWVzLCBGYWxzZSkKLQotICAgIHByaW50KCJcbk5ldyBsYXllciBjcmVhdGVkIGluICVzLlxuIiAlIGxheWVyX291dHB1dF9kaXIpCi0gICAgcHJpbnQoIkRvbid0IGZvcmdldCB0byBhZGQgaXQgdG8geW91ciBCQkxBWUVSUyAoZm9yIGRldGFpbHMgc2VlICVzL1JFQURNRSkuIiAlIGxheWVyX291dHB1dF9kaXIpCi0KLQotZGVmIHlvY3RvX2JzcF9jcmVhdGUobWFjaGluZSwgYXJjaCwgc2NyaXB0c19wYXRoLCBic3Bfb3V0cHV0X2RpciwgY29kZWR1bXAsIHByb3BlcnRpZXNfZmlsZSwgcHJvcGVydGllcz1Ob25lKToKLSAgICAiIiIKLSAgICBDcmVhdGUgYnNwCi0KLSAgICBtYWNoaW5lIC0gdXNlci1kZWZpbmVkIG1hY2hpbmUgbmFtZQotICAgIGFyY2ggLSB0aGUgYXJjaCB0aGUgYnNwIHdpbGwgYmUgYmFzZWQgb24sIG11c3QgYmUgb25lIGluCi0gICAgICAgICAgIHNjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gKLSAgICBzY3JpcHRzX3BhdGggLSBhYnNvbHV0ZSBwYXRoIHRvIHlvY3RvIC9zY3JpcHRzIGRpcgotICAgIGJzcF9vdXRwdXRfZGlyIC0gZGlybmFtZSB0byBjcmVhdGUgZm9yIEJTUAotICAgIGNvZGVkdW1wIC0gZHVtcCBnZW5lcmF0ZWQgY29kZSB0byBic3BnZW4ub3V0Ci0gICAgcHJvcGVydGllc19maWxlIC0gdXNlIHZhbHVlcyBmcm9tIHRoaXMgZmlsZSBpZiBub25lbXB0eSBpLmUgbm8gcHJvbXB0aW5nCi0gICAgcHJvcGVydGllcyAtIHVzZSB2YWx1ZXMgZnJvbSB0aGlzIHN0cmluZyBpZiBub25lbXB0eSBpLmUgbm8gcHJvbXB0aW5nCi0gICAgIiIiCi0gICAgeW9jdG9fY29tbW9uX2NyZWF0ZShtYWNoaW5lLCBhcmNoLCBzY3JpcHRzX3BhdGgsIGJzcF9vdXRwdXRfZGlyLCBjb2RlZHVtcCwgcHJvcGVydGllc19maWxlLCBwcm9wZXJ0aWVzKQotCi0gICAgcHJpbnQoIlxuTmV3ICVzIEJTUCBjcmVhdGVkIGluICVzIiAlIChhcmNoLCBic3Bfb3V0cHV0X2RpcikpCi0KLQotZGVmIHByaW50X2RpY3QoaXRlbXMsIGluZGVudCA9IDApOgotICAgICIiIgotICAgIFByaW50IHRoZSB2YWx1ZXMgaW4gYSBwb3NzaWJseSBuZXN0ZWQgZGljdGlvbmFyeS4KLSAgICAiIiIKLSAgICBmb3Iga2V5LCB2YWwgaW4gaXRlbXMuaXRlbXMoKToKLSAgICAgICAgcHJpbnQoIiAgICAiKmluZGVudCArICJcIiVzXCIgOiIgJSBrZXkpCi0gICAgICAgIGlmIHR5cGUodmFsKSA9PSBkaWN0OgotICAgICAgICAgICAgcHJpbnQoInsiKQotICAgICAgICAgICAgcHJpbnRfZGljdCh2YWwsIGluZGVudCArIDEpCi0gICAgICAgICAgICBwcmludCgiICAgICIqaW5kZW50ICsgIn0iKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJpbnQoIiVzIiAlIHZhbCkKLQotCi1kZWYgZ2V0X3Byb3BlcnRpZXMoaW5wdXRfbGluZXMpOgotICAgICIiIgotICAgIEdldCB0aGUgY29tcGxldGUgc2V0IG9mIHByb3BlcnRpZXMgZm9yIGFsbCB0aGUgaW5wdXQgaXRlbXMgaW4gdGhlCi0gICAgQlNQLCBhcyBhIHBvc3NpYmx5IG5lc3RlZCBkaWN0aW9uYXJ5LgotICAgICIiIgotICAgIHByb3BlcnRpZXMgPSB7fQotCi0gICAgZm9yIGxpbmUgaW4gaW5wdXRfbGluZXM6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgSW5wdXRMaW5lR3JvdXApOgotICAgICAgICAgICAgc3RhdGVtZW50ID0gbGluZS5ncm91cFswXS5saW5lCi0gICAgICAgICAgICBncm91cF9wcm9wZXJ0aWVzID0gZ2V0X3Byb3BlcnRpZXMobGluZS5ncm91cCkKLSAgICAgICAgICAgIHByb3BlcnRpZXNbc3RhdGVtZW50XSA9IGdyb3VwX3Byb3BlcnRpZXMKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobGluZSwgSW5wdXRMaW5lKToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgaXNpbnN0YW5jZShsaW5lLCBDaG9pY2VJbnB1dExpbmUpOgotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBwcm9wcyA9IGxpbmUucHJvcHMKLSAgICAgICAgaXRlbSA9IHt9Ci0gICAgICAgIG5hbWUgPSBwcm9wc1sibmFtZSJdCi0gICAgICAgIGZvciBrZXksIHZhbCBpbiBwcm9wcy5pdGVtcygpOgotICAgICAgICAgICAgaWYgbm90IGtleSA9PSAibmFtZSI6Ci0gICAgICAgICAgICAgICAgaXRlbVtrZXldID0gdmFsCi0gICAgICAgIHByb3BlcnRpZXNbbmFtZV0gPSBpdGVtCi0KLSAgICByZXR1cm4gcHJvcGVydGllcwotCi0KLWRlZiB5b2N0b19sYXllcl9saXN0X3Byb3BlcnRpZXMoYXJjaCwgc2NyaXB0c19wYXRoLCBwcm9wZXJ0aWVzX2ZpbGUsIGV4cGFuZF9jb21tb249VHJ1ZSk6Ci0gICAgIiIiCi0gICAgTGlzdCB0aGUgY29tcGxldGUgc2V0IG9mIHByb3BlcnRpZXMgZm9yIGFsbCB0aGUgaW5wdXQgaXRlbXMgaW4gdGhlCi0gICAgbGF5ZXIuICBJZiBwcm9wZXJ0aWVzX2ZpbGUgaXMgbm9uLW51bGwsIHdyaXRlIHRoZSBjb21wbGV0ZSBzZXQgb2YKLSAgICBwcm9wZXJ0aWVzIGFzIGEgbmVzdGVkIEpTT04gb2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8gYSBwb3NzaWJseQotICAgIG5lc3RlZCBkaWN0aW9uYXJ5LgotICAgICIiIgotICAgIGNvbnRleHQgPSBjcmVhdGVfY29udGV4dCgidW51c2VkIiwgYXJjaCwgc2NyaXB0c19wYXRoKQotICAgIHRhcmdldF9maWxlcyA9IGV4cGFuZF90YXJnZXRzKGNvbnRleHQsICJ1bnVzZWQiLCBleHBhbmRfY29tbW9uKQotCi0gICAgaW5wdXRfbGluZXMgPSBnYXRoZXJfaW5wdXRsaW5lcyh0YXJnZXRfZmlsZXMpCi0KLSAgICBwcm9wZXJ0aWVzID0gZ2V0X3Byb3BlcnRpZXMoaW5wdXRfbGluZXMpCi0gICAgaWYgcHJvcGVydGllc19maWxlOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvZiA9IG9wZW4ocHJvcGVydGllc19maWxlLCAidyIpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICAgICAgcHJpbnQoIkNvdWxkbid0IG9wZW4gcHJvcGVydGllcyBmaWxlICVzIGZvciB3cml0aW5nLCBleGl0aW5nIiAlIHByb3BlcnRpZXNfZmlsZSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICAgICAganNvbi5kdW1wKHByb3BlcnRpZXMsIG9mLCBpbmRlbnQ9MSkKLSAgICBlbHNlOgotICAgICAgICBwcmludF9kaWN0KHByb3BlcnRpZXMpCi0KLQotZGVmIHNwbGl0X25lc3RlZF9wcm9wZXJ0eShwcm9wZXJ0eSk6Ci0gICAgIiIiCi0gICAgQSBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBmb3JtIHgueSBkZXNjcmliZXMgYSBuZXN0ZWQgcHJvcGVydHkKLSAgICBpLmUuIHRoZSBwcm9wZXJ0eSB5IGlzIGNvbnRhaW5lZCB3aXRoaW4geCBhbmQgY2FuIGJlIGFkZHJlc3NlZAotICAgIHVzaW5nIHN0YW5kYXJkIEpTT04gc3ludGF4IGZvciBuZXN0ZWQgcHJvcGVydGllcy4gIE5vdGUgdGhhdCBpZiBhCi0gICAgcHJvcGVydHkgbmFtZSBpdHNlbGYgY29udGFpbnMgJy4nLCBpdCBzaG91bGQgYmUgY29udGFpbmVkIGluCi0gICAgZG91YmxlIHF1b3Rlcy4KLSAgICAiIiIKLSAgICBzcGxpdHRhYmxlX3Byb3BlcnR5ID0gIiIKLSAgICBpbl9xdW90ZXMgPSBGYWxzZQotICAgIGZvciBjIGluIHByb3BlcnR5OgotICAgICAgICBpZiBjID09ICcuJyBhbmQgbm90IGluX3F1b3RlczoKLSAgICAgICAgICAgIHNwbGl0dGFibGVfcHJvcGVydHkgKz0gJ1xuJwotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgYyA9PSAnIic6Ci0gICAgICAgICAgICBpbl9xdW90ZXMgPSBub3QgaW5fcXVvdGVzCi0gICAgICAgIHNwbGl0dGFibGVfcHJvcGVydHkgKz0gYwotCi0gICAgc3BsaXRfcHJvcGVydGllcyA9IHNwbGl0dGFibGVfcHJvcGVydHkuc3BsaXQoJ1xuJykKLQotICAgIGlmIGxlbihzcGxpdF9wcm9wZXJ0aWVzKSA+IDE6Ci0gICAgICAgIHJldHVybiBzcGxpdF9wcm9wZXJ0aWVzCi0KLSAgICByZXR1cm4gTm9uZQotCi0KLWRlZiBmaW5kX2lucHV0X2xpbmVfZ3JvdXAoc3Vic3RyaW5nLCBpbnB1dF9saW5lcyk6Ci0gICAgIiIiCi0gICAgRmluZCBhbmQgcmV0dXJuIHRoZSBJbnB1dExpbmVHcm91cCBjb250YWluaW5nIHRoZSBzcGVjaWZpZWQgc3Vic3RyaW5nLgotICAgICIiIgotICAgIGZvciBsaW5lIGluIGlucHV0X2xpbmVzOgotICAgICAgICBpZiBpc2luc3RhbmNlKGxpbmUsIElucHV0TGluZUdyb3VwKToKLSAgICAgICAgICAgIGlmIHN1YnN0cmluZyBpbiBsaW5lLmdyb3VwWzBdLmxpbmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUKLQotICAgIHJldHVybiBOb25lCi0KLQotZGVmIGZpbmRfaW5wdXRfbGluZShuYW1lLCBpbnB1dF9saW5lcyk6Ci0gICAgIiIiCi0gICAgRmluZCB0aGUgaW5wdXQgbGluZSB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZS4KLSAgICAiIiIKLSAgICBmb3IgbGluZSBpbiBpbnB1dF9saW5lczoKLSAgICAgICAgaWYgaXNpbnN0YW5jZShsaW5lLCBJbnB1dExpbmVHcm91cCk6Ci0gICAgICAgICAgICBsID0gZmluZF9pbnB1dF9saW5lKG5hbWUsIGxpbmUuZ3JvdXApCi0gICAgICAgICAgICBpZiBsOgotICAgICAgICAgICAgICAgIHJldHVybiBsCi0KLSAgICAgICAgaWYgaXNpbnN0YW5jZShsaW5lLCBJbnB1dExpbmUpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGlmIGxpbmUucHJvcHNbIm5hbWUiXSA9PSBuYW1lOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGluZQotICAgICAgICAgICAgICAgIGlmIGxpbmUucHJvcHNbIm5hbWUiXSArICJfIiArIGxpbmUucHJvcHNbIm5hbWVhcHBlbmQiXSA9PSBuYW1lOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGluZQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLQotICAgIHJldHVybiBOb25lCi0KLQotZGVmIHByaW50X3ZhbHVlcyh0eXBlLCB2YWx1ZXNfbGlzdCk6Ci0gICAgIiIiCi0gICAgUHJpbnQgdGhlIHZhbHVlcyBpbiB0aGUgZ2l2ZW4gbGlzdCBvZiB2YWx1ZXMuCi0gICAgIiIiCi0gICAgaWYgdHlwZSA9PSAiY2hvaWNlbGlzdCI6Ci0gICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXNfbGlzdDoKLSAgICAgICAgICAgIHByaW50KCJbXCIlc1wiLCBcIiVzXCJdIiAlICh2YWx1ZVswXSwgdmFsdWVbMV0pKQotICAgIGVsaWYgdHlwZSA9PSAiYm9vbGVhbiI6Ci0gICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXNfbGlzdDoKLSAgICAgICAgICAgIHByaW50KCJbXCIlc1wiLCBcIiVzXCJdIiAlICh2YWx1ZVswXSwgdmFsdWVbMV0pKQotCi0KLWRlZiB5b2N0b19sYXllcl9saXN0X3Byb3BlcnR5X3ZhbHVlcyhhcmNoLCBwcm9wZXJ0eSwgc2NyaXB0c19wYXRoLCBwcm9wZXJ0aWVzX2ZpbGUsIGV4cGFuZF9jb21tb249VHJ1ZSk6Ci0gICAgIiIiCi0gICAgTGlzdCB0aGUgcG9zc2libGUgdmFsdWVzIGZvciBhIGdpdmVuIGlucHV0IHByb3BlcnR5LiAgSWYKLSAgICBwcm9wZXJ0aWVzX2ZpbGUgaXMgbm9uLW51bGwsIHdyaXRlIHRoZSBjb21wbGV0ZSBzZXQgb2YgcHJvcGVydGllcwotICAgIGFzIGEgSlNPTiBvYmplY3QgY29ycmVzcG9uZGluZyB0byBhbiBhcnJheSBvZiBwb3NzaWJsZSB2YWx1ZXMuCi0gICAgIiIiCi0gICAgY29udGV4dCA9IGNyZWF0ZV9jb250ZXh0KCJ1bnVzZWQiLCBhcmNoLCBzY3JpcHRzX3BhdGgpCi0gICAgY29udGV4dFsibmFtZSJdID0gcHJvcGVydHkKLQotICAgIHRhcmdldF9maWxlcyA9IGV4cGFuZF90YXJnZXRzKGNvbnRleHQsICJ1bnVzZWQiLCBleHBhbmRfY29tbW9uKQotCi0gICAgaW5wdXRfbGluZXMgPSBnYXRoZXJfaW5wdXRsaW5lcyh0YXJnZXRfZmlsZXMpCi0KLSAgICBwcm9wZXJ0aWVzID0gZ2V0X3Byb3BlcnRpZXMoaW5wdXRfbGluZXMpCi0KLSAgICBuZXN0ZWRfcHJvcGVydGllcyA9IHNwbGl0X25lc3RlZF9wcm9wZXJ0eShwcm9wZXJ0eSkKLSAgICBpZiBuZXN0ZWRfcHJvcGVydGllczoKLSAgICAgICAgIyBjdXJyZW50bHkgdGhlIG91dGVyIHByb3BlcnR5IG9mIGEgbmVzdGVkIHByb3BlcnR5IGFsd2F5cwotICAgICAgICAjIGNvcnJlc3BvbmRzIHRvIGFuIGlucHV0IGxpbmUgZ3JvdXAKLSAgICAgICAgaW5wdXRfbGluZV9ncm91cCA9IGZpbmRfaW5wdXRfbGluZV9ncm91cChuZXN0ZWRfcHJvcGVydGllc1swXSwgaW5wdXRfbGluZXMpCi0gICAgICAgIGlmIGlucHV0X2xpbmVfZ3JvdXA6Ci0gICAgICAgICAgICBpbnB1dF9saW5lc1s6XSA9IGlucHV0X2xpbmVfZ3JvdXAuZ3JvdXBbMTpdCi0gICAgICAgICAgICAjIFRoZSBpbm5lciBwcm9wZXJ0eSBvZiBhIG5lc3RlZCBwcm9wZXJ0eSBuYW1lIGlzIHRoZQotICAgICAgICAgICAgIyBhY3R1YWwgcHJvcGVydHkgbmFtZSB3ZSB3YW50LCBzbyByZXNldCB0byB0aGF0Ci0gICAgICAgICAgICBwcm9wZXJ0eSA9IG5lc3RlZF9wcm9wZXJ0aWVzWzFdCi0KLSAgICBpbnB1dF9saW5lID0gZmluZF9pbnB1dF9saW5lKHByb3BlcnR5LCBpbnB1dF9saW5lcykKLSAgICBpZiBub3QgaW5wdXRfbGluZToKLSAgICAgICAgcHJpbnQoIkNvdWxkbid0IGZpbmQgdmFsdWVzIGZvciBwcm9wZXJ0eSAlcyIgJSBwcm9wZXJ0eSkKLSAgICAgICAgcmV0dXJuCi0KLSAgICB2YWx1ZXNfbGlzdCA9IFtdCi0KLSAgICB0eXBlID0gaW5wdXRfbGluZS5wcm9wc1sidHlwZSJdCi0gICAgaWYgdHlwZSA9PSAiYm9vbGVhbiI6Ci0gICAgICAgIHZhbHVlc19saXN0LmFwcGVuZChbInkiLCAibiJdKQotICAgIGVsaWYgdHlwZSA9PSAiY2hvaWNlbGlzdCIgb3IgdHlwZSA9PSAiY2hlY2tsaXN0IjoKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZ2VuX2ZuID0gaW5wdXRfbGluZS5wcm9wc1siZ2VuIl0KLSAgICAgICAgICAgIGlmIG5lc3RlZF9wcm9wZXJ0aWVzOgotICAgICAgICAgICAgICAgIGNvbnRleHRbImZpbGVuYW1lIl0gPSBuZXN0ZWRfcHJvcGVydGllc1swXQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dFsiYnJhbmNoZXNfYmFzZSJdID0gaW5wdXRfbGluZS5wcm9wc1siYnJhbmNoZXNfYmFzZSJdCi0gICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgICAgICBjb250ZXh0WyJicmFuY2hlc19iYXNlIl0gPSBOb25lCi0gICAgICAgICAgICB2YWx1ZXNfbGlzdCA9IGlucHV0X2xpbmUuZ2VuX2Nob2ljZXNfbGlzdChjb250ZXh0LCBGYWxzZSkKLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgZm9yIGNob2ljZSBpbiBpbnB1dF9saW5lLmNob2ljZXM6Ci0gICAgICAgICAgICAgICAgY2hvaWNlcGFpciA9IFtdCi0gICAgICAgICAgICAgICAgY2hvaWNlcGFpci5hcHBlbmQoY2hvaWNlLnZhbCkKLSAgICAgICAgICAgICAgICBjaG9pY2VwYWlyLmFwcGVuZChjaG9pY2UuZGVzYykKLSAgICAgICAgICAgICAgICB2YWx1ZXNfbGlzdC5hcHBlbmQoY2hvaWNlcGFpcikKLQotICAgIGlmIHByb3BlcnRpZXNfZmlsZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb2YgPSBvcGVuKHByb3BlcnRpZXNfZmlsZSwgInciKQotICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgIHByaW50KCJDb3VsZG4ndCBvcGVuIHByb3BlcnRpZXMgZmlsZSAlcyBmb3Igd3JpdGluZywgZXhpdGluZyIgJSBwcm9wZXJ0aWVzX2ZpbGUpCi0gICAgICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgICAgIGpzb24uZHVtcCh2YWx1ZXNfbGlzdCwgb2YpCi0KLSAgICBwcmludF92YWx1ZXModHlwZSwgdmFsdWVzX2xpc3QpCi0KLQotZGVmIHlvY3RvX2JzcF9saXN0KGFyZ3MsIHNjcmlwdHNfcGF0aCk6Ci0gICAgIiIiCi0gICAgUHJpbnQgYXZhaWxhYmxlIGFyY2hpdGVjdHVyZXMsIG9yIHRoZSBjb21wbGV0ZSBsaXN0IG9mIHByb3BlcnRpZXMKLSAgICBkZWZpbmVkIGJ5IHRoZSBCU1AsIG9yIHRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yIGEgcGFydGljdWxhciBCU1AKLSAgICBwcm9wZXJ0eS4KLSAgICAiIiIKLSAgICBpZiBhcmdzLmthcmNoID09ICJrYXJjaCI6Ci0gICAgICAgIGxpYl9wYXRoID0gc2NyaXB0c19wYXRoICsgJy9saWInCi0gICAgICAgIGJzcF9wYXRoID0gbGliX3BhdGggKyAnL2JzcCcKLSAgICAgICAgYXJjaF9wYXRoID0gYnNwX3BhdGggKyAnL3N1YnN0cmF0ZS90YXJnZXQvYXJjaCcKLSAgICAgICAgcHJpbnQoIkFyY2hpdGVjdHVyZXMgYXZhaWxhYmxlOiIpCi0gICAgICAgIGZvciBhcmNoIGluIG9zLmxpc3RkaXIoYXJjaF9wYXRoKToKLSAgICAgICAgICAgIGlmIGFyY2ggPT0gImNvbW1vbiIgb3IgYXJjaCA9PSAibGF5ZXIiOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBwcmludCgiICAgICVzIiAlIGFyY2gpCi0gICAgICAgIHJldHVybgotCi0gICAgaWYgYXJncy5wcm9wZXJ0aWVzOgotICAgICAgICB5b2N0b19sYXllcl9saXN0X3Byb3BlcnRpZXMoYXJncy5rYXJjaCwgc2NyaXB0c19wYXRoLCBhcmdzLnByb3BlcnRpZXNfZmlsZSkKLSAgICBlbGlmIGFyZ3MucHJvcGVydHk6Ci0gICAgICAgIHlvY3RvX2xheWVyX2xpc3RfcHJvcGVydHlfdmFsdWVzKGFyZ3Mua2FyY2gsIGFyZ3MucHJvcGVydHksIHNjcmlwdHNfcGF0aCwgYXJncy5wcm9wZXJ0aWVzX2ZpbGUpCi0KLQotCi1kZWYgeW9jdG9fbGF5ZXJfbGlzdChhcmdzLCBzY3JpcHRzX3BhdGgsIHByb3BlcnRpZXNfZmlsZSk6Ci0gICAgIiIiCi0gICAgUHJpbnQgdGhlIGNvbXBsZXRlIGxpc3Qgb2YgaW5wdXQgcHJvcGVydGllcyBkZWZpbmVkIGJ5IHRoZSBsYXllciwKLSAgICBvciB0aGUgcG9zc2libGUgdmFsdWVzIGZvciBhIHBhcnRpY3VsYXIgbGF5ZXIgcHJvcGVydHkuCi0gICAgIiIiCi0gICAgaWYgbGVuKGFyZ3MpIDwgMToKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBpZiBsZW4oYXJncykgPCAxIG9yIGxlbihhcmdzKSA+IDI6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgaWYgbGVuKGFyZ3MpID09IDE6Ci0gICAgICAgIGlmIGFyZ3NbMF0gPT0gInByb3BlcnRpZXMiOgotICAgICAgICAgICAgeW9jdG9fbGF5ZXJfbGlzdF9wcm9wZXJ0aWVzKCJsYXllciIsIHNjcmlwdHNfcGF0aCwgcHJvcGVydGllc19maWxlLCBGYWxzZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgaWYgbGVuKGFyZ3MpID09IDI6Ci0gICAgICAgIGlmIGFyZ3NbMF0gPT0gInByb3BlcnR5IjoKLSAgICAgICAgICAgIHlvY3RvX2xheWVyX2xpc3RfcHJvcGVydHlfdmFsdWVzKCJsYXllciIsIGFyZ3NbMV0sIHNjcmlwdHNfcGF0aCwgcHJvcGVydGllc19maWxlLCBGYWxzZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgcmV0dXJuIFRydWUKLQotCi1kZWYgbWFwX3N0YW5kYXJkX2ticmFuY2gobmVlZF9uZXdfa2JyYW5jaCwgbmV3X2ticmFuY2gsIGV4aXN0aW5nX2ticmFuY2gpOgotICAgICIiIgotICAgIFJldHVybiB0aGUgbGludXgteW9jdG8gYnNwIGJyYW5jaCB0byB1c2Ugd2l0aCB0aGUgc3BlY2lmaWVkCi0gICAga2JyYW5jaC4gIFRoaXMgaGFuZGxlcyB0aGUgLXN0YW5kYXJkIHZhcmlhbnRzIGZvciAzLjQgYW5kIDMuODsgdGhlCi0gICAgb3RoZXIgdmFyaWFudHMgZG9uJ3QgbmVlZCBtYXBwaW5ncy4KLSAgICAiIiIKLSAgICBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjoKLSAgICAgICAga2JyYW5jaCA9IG5ld19rYnJhbmNoCi0gICAgZWxzZToKLSAgICAgICAga2JyYW5jaCA9IGV4aXN0aW5nX2ticmFuY2gKLQotICAgIGlmIGticmFuY2guc3RhcnRzd2l0aCgic3RhbmRhcmQvY29tbW9uLXBjLTY0Iik6Ci0gICAgICAgIHJldHVybiAiYnNwL2NvbW1vbi1wYy02NC9jb21tb24tcGMtNjQtc3RhbmRhcmQuc2NjIgotICAgIGlmIGticmFuY2guc3RhcnRzd2l0aCgic3RhbmRhcmQvY29tbW9uLXBjIik6Ci0gICAgICAgIHJldHVybiAiYnNwL2NvbW1vbi1wYy9jb21tb24tcGMtc3RhbmRhcmQuc2NjIgotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAia3R5cGVzL3N0YW5kYXJkL3N0YW5kYXJkLnNjYyIKLQotCi1kZWYgbWFwX3ByZWVtcHRfcnRfa2JyYW5jaChuZWVkX25ld19rYnJhbmNoLCBuZXdfa2JyYW5jaCwgZXhpc3Rpbmdfa2JyYW5jaCk6Ci0gICAgIiIiCi0gICAgUmV0dXJuIHRoZSBsaW51eC15b2N0byBic3AgYnJhbmNoIHRvIHVzZSB3aXRoIHRoZSBzcGVjaWZpZWQKLSAgICBrYnJhbmNoLiAgVGhpcyBoYW5kbGVzIHRoZSAtcHJlZW1wdC1ydCB2YXJpYW50cyBmb3IgMy40IGFuZCAzLjg7Ci0gICAgdGhlIG90aGVyIHZhcmlhbnRzIGRvbid0IG5lZWQgbWFwcGluZ3MuCi0gICAgIiIiCi0gICAgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6Ci0gICAgICAgIGticmFuY2ggPSBuZXdfa2JyYW5jaAotICAgIGVsc2U6Ci0gICAgICAgIGticmFuY2ggPSBleGlzdGluZ19rYnJhbmNoCi0KLSAgICBpZiBrYnJhbmNoLnN0YXJ0c3dpdGgoInN0YW5kYXJkL3ByZWVtcHQtcnQvY29tbW9uLXBjLTY0Iik6Ci0gICAgICAgIHJldHVybiAiYnNwL2NvbW1vbi1wYy02NC9jb21tb24tcGMtNjQtcHJlZW1wdC1ydC5zY2MiCi0gICAgaWYga2JyYW5jaC5zdGFydHN3aXRoKCJzdGFuZGFyZC9wcmVlbXB0LXJ0L2NvbW1vbi1wYyIpOgotICAgICAgICByZXR1cm4gImJzcC9jb21tb24tcGMvY29tbW9uLXBjLXByZWVtcHQtcnQuc2NjIgotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAia3R5cGVzL3ByZWVtcHQtcnQvcHJlZW1wdC1ydC5zY2MiCi0KLQotZGVmIG1hcF90aW55X2ticmFuY2gobmVlZF9uZXdfa2JyYW5jaCwgbmV3X2ticmFuY2gsIGV4aXN0aW5nX2ticmFuY2gpOgotICAgICIiIgotICAgIFJldHVybiB0aGUgbGludXgteW9jdG8gYnNwIGJyYW5jaCB0byB1c2Ugd2l0aCB0aGUgc3BlY2lmaWVkCi0gICAga2JyYW5jaC4gIFRoaXMgaGFuZGxlcyB0aGUgLXRpbnkgdmFyaWFudHMgZm9yIDMuNCBhbmQgMy44OyB0aGUKLSAgICBvdGhlciB2YXJpYW50cyBkb24ndCBuZWVkIG1hcHBpbmdzLgotICAgICIiIgotICAgIGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOgotICAgICAgICBrYnJhbmNoID0gbmV3X2ticmFuY2gKLSAgICBlbHNlOgotICAgICAgICBrYnJhbmNoID0gZXhpc3Rpbmdfa2JyYW5jaAotCi0gICAgaWYga2JyYW5jaC5zdGFydHN3aXRoKCJzdGFuZGFyZC90aW55L2NvbW1vbi1wYyIpOgotICAgICAgICByZXR1cm4gImJzcC9jb21tb24tcGMvY29tbW9uLXBjLXRpbnkuc2NjIgotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAia3R5cGVzL3RpbnkvdGlueS5zY2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL2hlbHAucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL2hlbHAucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1ZDQ0NmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9oZWxwLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTA1NCArMCwwIEBACi0jIGV4OnRzPTQ6c3c9NDpzdHM9NDpldAotIyAtKi0gdGFiLXdpZHRoOiA0OyBjLWJhc2ljLW9mZnNldDogNDsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLQotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTIsIEludGVsIENvcnBvcmF0aW9uLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwotIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMKLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSMgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKLSMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KLSMKLSMgREVTQ1JJUFRJT04KLSMgVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBzb21lIGJhc2ljIGhlbHAgaW52b2NhdGlvbiBmdW5jdGlvbnMgYWxvbmcKLSMgd2l0aCB0aGUgYnVsayBvZiB0aGUgaGVscCB0b3BpYyB0ZXh0IGZvciB0aGUgWW9jdG8gQlNQIFRvb2xzLgotIwotIyBBVVRIT1JTCi0jIFRvbSBaYW51c3NpIDx0b20uemFudXNzaSAoYXRdIGludGVsLmNvbT4KLSMKLQotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBsb2dnaW5nCi0KLQotZGVmIHN1YmNvbW1hbmRfZXJyb3IoYXJncyk6Ci0gICAgbG9nZ2luZy5pbmZvKCJpbnZhbGlkIHN1YmNvbW1hbmQgJXMiICUgYXJnc1swXSkKLQotCi1kZWYgZGlzcGxheV9oZWxwKHN1YmNvbW1hbmQsIHN1YmNvbW1hbmRzKToKLSAgICAiIiIKLSAgICBEaXNwbGF5IGhlbHAgZm9yIHN1YmNvbW1hbmQuCi0gICAgIiIiCi0gICAgaWYgc3ViY29tbWFuZCBub3QgaW4gc3ViY29tbWFuZHM6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgaGVscCA9IHN1YmNvbW1hbmRzLmdldChzdWJjb21tYW5kLCBzdWJjb21tYW5kX2Vycm9yKVsyXQotICAgIHBhZ2VyID0gc3VicHJvY2Vzcy5Qb3BlbignbGVzcycsIHN0ZGluPXN1YnByb2Nlc3MuUElQRSkKLSAgICBwYWdlci5jb21tdW5pY2F0ZShieXRlcyhoZWxwLCAnVVRGLTgnKSkKLQotICAgIHJldHVybiBUcnVlCi0KLQotZGVmIHlvY3RvX2hlbHAoYXJncywgdXNhZ2Vfc3RyLCBzdWJjb21tYW5kcyk6Ci0gICAgIiIiCi0gICAgU3ViY29tbWFuZCBoZWxwIGRpc3BhdGNoZXIuCi0gICAgIiIiCi0gICAgaWYgbGVuKGFyZ3MpID09IDEgb3Igbm90IGRpc3BsYXlfaGVscChhcmdzWzFdLCBzdWJjb21tYW5kcyk6Ci0gICAgICAgIHByaW50KHVzYWdlX3N0cikKLQotCi1kZWYgaW52b2tlX3N1YmNvbW1hbmQoYXJncywgcGFyc2VyLCBtYWluX2NvbW1hbmRfdXNhZ2UsIHN1YmNvbW1hbmRzKToKLSAgICAiIiIKLSAgICBEaXNwYXRjaCB0byBzdWJjb21tYW5kIGhhbmRsZXIgYm9ycm93ZWQgZnJvbSBjb21iby1sYXllci4KLSAgICBTaG91bGQgdXNlIGFyZ3BhcnNlLCBidXQgaGFzIHRvIHdvcmsgaW4gMi42LgotICAgICIiIgotICAgIGlmIG5vdCBhcmdzOgotICAgICAgICBsb2dnaW5nLmVycm9yKCJObyBzdWJjb21tYW5kIHNwZWNpZmllZCwgZXhpdGluZyIpCi0gICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKLSAgICBlbGlmIGFyZ3NbMF0gPT0gImhlbHAiOgotICAgICAgICB5b2N0b19oZWxwKGFyZ3MsIG1haW5fY29tbWFuZF91c2FnZSwgc3ViY29tbWFuZHMpCi0gICAgZWxpZiBhcmdzWzBdIG5vdCBpbiBzdWJjb21tYW5kczoKLSAgICAgICAgbG9nZ2luZy5lcnJvcigiVW5zdXBwb3J0ZWQgc3ViY29tbWFuZCAlcywgZXhpdGluZ1xuIiAlIChhcmdzWzBdKSkKLSAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQotICAgIGVsc2U6Ci0gICAgICAgIHVzYWdlID0gc3ViY29tbWFuZHMuZ2V0KGFyZ3NbMF0sIHN1YmNvbW1hbmRfZXJyb3IpWzFdCi0gICAgICAgIHN1YmNvbW1hbmRzLmdldChhcmdzWzBdLCBzdWJjb21tYW5kX2Vycm9yKVswXShhcmdzWzE6XSwgdXNhZ2UpCi0KLQotIyMKLSMgeW9jdG8tYnNwIGhlbHAgYW5kIHVzYWdlIHN0cmluZ3MKLSMjCi0KLXlvY3RvX2JzcF91c2FnZSA9ICIiIgotCi0gQ3JlYXRlIGEgY3VzdG9taXplZCBZb2N0byBCU1AgbGF5ZXIuCi0KLSB1c2FnZTogeW9jdG8tYnNwIFstLXZlcnNpb25dIFstLWhlbHBdIENPTU1BTkQgW0FSR1NdCi0KLSBDdXJyZW50ICd5b2N0by1ic3AnIGNvbW1hbmRzIGFyZToKLSAgICBjcmVhdGUgICAgICAgICAgICBDcmVhdGUgYSBuZXcgWW9jdG8gQlNQCi0gICAgbGlzdCAgICAgICAgICAgICAgTGlzdCBhdmFpbGFibGUgdmFsdWVzIGZvciBvcHRpb25zIGFuZCBCU1AgcHJvcGVydGllcwotCi0gU2VlICd5b2N0by1ic3AgaGVscCBDT01NQU5EJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBhIHNwZWNpZmljIGNvbW1hbmQuCi0iIiIKLQoteW9jdG9fYnNwX2hlbHBfdXNhZ2UgPSAiIiIKLQotIHVzYWdlOiB5b2N0by1ic3AgaGVscCA8c3ViY29tbWFuZD4KLQotIFRoaXMgY29tbWFuZCBkaXNwbGF5cyBkZXRhaWxlZCBoZWxwIGZvciB0aGUgc3BlY2lmaWVkIHN1YmNvbW1hbmQuCi0iIiIKLQoteW9jdG9fYnNwX2NyZWF0ZV91c2FnZSA9ICIiIgotCi0gQ3JlYXRlIGEgbmV3IFlvY3RvIEJTUAotCi0gdXNhZ2U6IHlvY3RvLWJzcCBjcmVhdGUgPGJzcC1uYW1lPiA8a2FyY2g+IFstbyA8RElSTkFNRT4gfCAtLW91dGRpciA8RElSTkFNRT5dCi0gICAgICAgICAgICBbLWkgPEpTT04gUFJPUEVSVFkgRklMRT4gfCAtLWluZmlsZSA8SlNPTiBQUk9QRVJUWV9GSUxFPl0KLSAgICAgICAgICAgIFstYyB8IC0tY29kZWR1bXBdIFstcyB8IC0tc2tpcC1naXQtY2hlY2tdCi0KLSBUaGlzIGNvbW1hbmQgY3JlYXRlcyBhIFlvY3RvIEJTUCBiYXNlZCBvbiB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMuCi0gVGhlIG5ldyBCU1Agd2lsbCBiZSBhIG5ldyBZb2N0byBCU1AgbGF5ZXIgY29udGFpbmVkIGJ5IGRlZmF1bHQgd2l0aGluCi0gdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnkgc3BlY2lmaWVkIGFzICdtZXRhLWJzcC1uYW1lJy4gIFRoZSAtbyBvcHRpb24KLSBjYW4gYmUgdXNlZCB0byBwbGFjZSB0aGUgQlNQIGxheWVyIGluIGEgZGlyZWN0b3J5IHdpdGggYSBkaWZmZXJlbnQKLSBuYW1lIGFuZCBsb2NhdGlvbi4KLQotIFRoZSB2YWx1ZSBvZiB0aGUgJ2thcmNoJyBwYXJhbWV0ZXIgZGV0ZXJtaW5lcyB0aGUgc2V0IG9mIGZpbGVzIHRoYXQKLSB3aWxsIGJlIGdlbmVyYXRlZCBmb3IgdGhlIEJTUCwgYWxvbmcgd2l0aCB0aGUgc3BlY2lmaWMgc2V0IG9mCi0gJ3Byb3BlcnRpZXMnIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGZpbGwgb3V0IHRoZSBCU1Atc3BlY2lmaWMgcG9ydGlvbnMKLSBvZiB0aGUgQlNQLiAgVGhlIHBvc3NpYmxlIHZhbHVlcyBmb3IgdGhlICdrYXJjaCcgcGFyYW1ldGVyIGNhbiBiZQotIGxpc3RlZCB2aWEgJ3lvY3RvLWJzcCBsaXN0IGthcmNoJy4KLQotIE5PVEU6IE9uY2UgY3JlYXRlZCwgeW91IHNob3VsZCBhZGQgeW91ciBuZXcgbGF5ZXIgdG8geW91cgotIGJibGF5ZXJzLmNvbmYgZmlsZSBpbiBvcmRlciBmb3IgaXQgdG8gYmUgc3Vic2VxdWVudGx5IHNlZW4gYW5kCi0gbW9kaWZpZWQgYnkgdGhlIHlvY3RvLWtlcm5lbCB0b29sLgotCi0gU2VlICd5b2N0byBic3AgaGVscCBjcmVhdGUnIGZvciBtb3JlIGRldGFpbGVkIGluc3RydWN0aW9ucy4KLSIiIgotCi15b2N0b19ic3BfY3JlYXRlX2hlbHAgPSAiIiIKLQotTkFNRQotICAgIHlvY3RvLWJzcCBjcmVhdGUgLSBDcmVhdGUgYSBuZXcgWW9jdG8gQlNQCi0KLVNZTk9QU0lTCi0gICAgeW9jdG8tYnNwIGNyZWF0ZSA8YnNwLW5hbWU+IDxrYXJjaD4gWy1vIDxESVJOQU1FPiB8IC0tb3V0ZGlyIDxESVJOQU1FPl0KLSAgICAgICAgWy1pIDxKU09OIFBST1BFUlRZIEZJTEU+IHwgLS1pbmZpbGUgPEpTT04gUFJPUEVSVFlfRklMRT5dCi0gICAgICAgIFstYyB8IC0tY29kZWR1bXBdIFstcyB8IC0tc2tpcC1naXQtY2hlY2tdCi0KLURFU0NSSVBUSU9OCi0gICAgVGhpcyBjb21tYW5kIGNyZWF0ZXMgYSBZb2N0byBCU1AgYmFzZWQgb24gdGhlIHNwZWNpZmllZAotICAgIHBhcmFtZXRlcnMuICBUaGUgbmV3IEJTUCB3aWxsIGJlIGEgbmV3IFlvY3RvIEJTUCBsYXllciBjb250YWluZWQKLSAgICBieSBkZWZhdWx0IHdpdGhpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeSBzcGVjaWZpZWQgYXMKLSAgICAnbWV0YS1ic3AtbmFtZScuICBUaGUgLW8gb3B0aW9uIGNhbiBiZSB1c2VkIHRvIHBsYWNlIHRoZSBCU1AgbGF5ZXIKLSAgICBpbiBhIGRpcmVjdG9yeSB3aXRoIGEgZGlmZmVyZW50IG5hbWUgYW5kIGxvY2F0aW9uLgotCi0gICAgVGhlIHZhbHVlIG9mIHRoZSAna2FyY2gnIHBhcmFtZXRlciBkZXRlcm1pbmVzIHRoZSBzZXQgb2YgZmlsZXMKLSAgICB0aGF0IHdpbGwgYmUgZ2VuZXJhdGVkIGZvciB0aGUgQlNQLCBhbG9uZyB3aXRoIHRoZSBzcGVjaWZpYyBzZXQgb2YKLSAgICAncHJvcGVydGllcycgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZmlsbCBvdXQgdGhlIEJTUC1zcGVjaWZpYwotICAgIHBvcnRpb25zIG9mIHRoZSBCU1AuICBUaGUgcG9zc2libGUgdmFsdWVzIGZvciB0aGUgJ2thcmNoJyBwYXJhbWV0ZXIKLSAgICBjYW4gYmUgbGlzdGVkIHZpYSAneW9jdG8tYnNwIGxpc3Qga2FyY2gnLgotCi0gICAgVGhlIEJTUC1zcGVjaWZpYyBwcm9wZXJ0aWVzIHRoYXQgZGVmaW5lIHRoZSB2YWx1ZXMgdGhhdCB3aWxsIGJlCi0gICAgdXNlZCB0byBnZW5lcmF0ZSBhIHBhcnRpY3VsYXIgQlNQIGNhbiBiZSBzcGVjaWZpZWQgb24gdGhlCi0gICAgY29tbWFuZC1saW5lIHVzaW5nIHRoZSAtaSBvcHRpb24gYW5kIHN1cHBseWluZyBhIEpTT04gb2JqZWN0Ci0gICAgY29uc2lzdGluZyBvZiB0aGUgc2V0IG9mIG5hbWU6dmFsdWUgcGFpcnMgbmVlZGVkIGJ5IHRoZSBCU1AuCi0KLSAgICBJZiB0aGUgLWkgb3B0aW9uIGlzIG5vdCB1c2VkLCB0aGUgdXNlciB3aWxsIGJlIGludGVyYWN0aXZlbHkKLSAgICBwcm9tcHRlZCBmb3IgZWFjaCBvZiB0aGUgcmVxdWlyZWQgcHJvcGVydHkgdmFsdWVzLCB3aGljaCB3aWxsIHRoZW4KLSAgICBiZSB1c2VkIGFzIHZhbHVlcyBmb3IgQlNQIGdlbmVyYXRpb24uCi0KLSAgICBUaGUgc2V0IG9mIHByb3BlcnRpZXMgYXZhaWxhYmxlIGZvciBhIGdpdmVuIGFyY2hpdGVjdHVyZSBjYW4gYmUKLSAgICBsaXN0ZWQgdXNpbmcgdGhlICd5b2N0by1ic3AgbGlzdCcgY29tbWFuZC4KLQotICAgIFNwZWNpZnlpbmcgLWMgY2F1c2VzIHRoZSBQeXRob24gY29kZSBnZW5lcmF0ZWQgYW5kIGV4ZWN1dGVkIHRvCi0gICAgY3JlYXRlIHRoZSBCU1AgdG8gYmUgZHVtcGVkIHRvIHRoZSAnYnNwZ2VuLm91dCcgZmlsZSBpbiB0aGUKLSAgICBjdXJyZW50IGRpcmVjdG9yeSwgYW5kIGlzIHVzZWZ1bCBmb3IgZGVidWdnaW5nLgotCi0gICAgTk9URTogT25jZSBjcmVhdGVkLCB5b3Ugc2hvdWxkIGFkZCB5b3VyIG5ldyBsYXllciB0byB5b3VyCi0gICAgYmJsYXllcnMuY29uZiBmaWxlIGluIG9yZGVyIGZvciBpdCB0byBiZSBzdWJzZXF1ZW50bHkgc2VlbiBhbmQKLSAgICBtb2RpZmllZCBieSB0aGUgeW9jdG8ta2VybmVsIHRvb2wuCi0KLSAgICBGb3IgZXhhbXBsZSwgYXNzdW1pbmcgeW91ciBwb2t5IHJlcG8gaXMgYXQgL3BhdGgvdG8vcG9reSwgeW91ciBuZXcKLSAgICBCU1AgbGF5ZXIgaXMgYXQgL3BhdGgvdG8vcG9reS9tZXRhLW15YnNwLCBhbmQgeW91ciBidWlsZCBkaXJlY3RvcnkKLSAgICBpcyAvcGF0aC90by9idWlsZDoKLQotICAgICQgZ2VkaXQgL3BhdGgvdG8vYnVpbGQvY29uZi9iYmxheWVycy5jb25mCi0KLSAgICBCQkxBWUVSUyA/PSAiIFxcCi0gICAgICAvcGF0aC90by9wb2t5L21ldGEgXFwKLSAgICAgIC9wYXRoL3RvL3Bva3kvbWV0YS1wb2t5IFxcCi0gICAgICAvcGF0aC90by9wb2t5L21ldGEtbXlic3AgXFwKLSAgICAgICIKLSIiIgotCi15b2N0b19ic3BfbGlzdF91c2FnZSA9ICIiIgotCi0gdXNhZ2U6IHlvY3RvLWJzcCBsaXN0IGthcmNoCi0gICAgICAgIHlvY3RvLWJzcCBsaXN0IDxrYXJjaD4gLS1wcm9wZXJ0aWVzCi0gICAgICAgICAgICAgICAgWy1vIDxKU09OIFBST1BFUlRZIEZJTEU+IHwgLS1vdXRmaWxlIDxKU09OIFBST1BFUlRZX0ZJTEU+XQotICAgICAgICB5b2N0by1ic3AgbGlzdCA8a2FyY2g+IC0tcHJvcGVydHkgPHh4eD4KLSAgICAgICAgICAgICAgICBbLW8gPEpTT04gUFJPUEVSVFkgRklMRT4gfCAtLW91dGZpbGUgPEpTT04gUFJPUEVSVFlfRklMRT5dCi0KLSBUaGlzIGNvbW1hbmQgZW51bWVyYXRlcyB0aGUgY29tcGxldGUgc2V0IG9mIHBvc3NpYmxlIHZhbHVlcyBmb3IgYQotIHNwZWNpZmllZCBvcHRpb24gb3IgcHJvcGVydHkgbmVlZGVkIGJ5IHRoZSBCU1AgY3JlYXRpb24gcHJvY2Vzcy4KLQotIFRoZSBmaXJzdCBmb3JtIGVudW1lcmF0ZXMgYWxsIHRoZSBwb3NzaWJsZSB2YWx1ZXMgdGhhdCBleGlzdCBhbmQgY2FuCi0gYmUgc3BlY2lmaWVkIGZvciB0aGUgJ2thcmNoJyBwYXJhbWV0ZXIgdG8gdGhlICd5b2N0byBic3AgY3JlYXRlJwotIGNvbW1hbmQuCi0KLSBUaGUgc2Vjb25kIGZvcm0gZW51bWVyYXRlcyBhbGwgdGhlIHBvc3NpYmxlIHByb3BlcnRpZXMgdGhhdCBleGlzdCBhbmQKLSBtdXN0IGhhdmUgdmFsdWVzIHNwZWNpZmllZCBmb3IgdGhlbSBpbiB0aGUgJ3lvY3RvIGJzcCBjcmVhdGUnIGNvbW1hbmQKLSBmb3IgdGhlIGdpdmVuICdrYXJjaCcuCi0KLSBUaGUgdGhpcmQgZm9ybSBlbnVtZXJhdGVzIGFsbCB0aGUgcG9zc2libGUgdmFsdWVzIHRoYXQgZXhpc3QgYW5kIGNhbgotIGJlIHNwZWNpZmllZCBmb3IgYW55IG9mIHRoZSBlbnVtZXJhYmxlIHByb3BlcnRpZXMgb2YgdGhlIGdpdmVuCi0gJ2thcmNoJyBpbiB0aGUgJ3lvY3RvIGJzcCBjcmVhdGUnIGNvbW1hbmQuCi0KLSBTZWUgJ3lvY3RvLWJzcCBoZWxwIGxpc3QnIGZvciBtb3JlIGRldGFpbHMuCi0iIiIKLQoteW9jdG9fYnNwX2xpc3RfaGVscCA9ICIiIgotCi1OQU1FCi0gICAgeW9jdG8tYnNwIGxpc3QgLSBMaXN0IGF2YWlsYWJsZSB2YWx1ZXMgZm9yIG9wdGlvbnMgYW5kIEJTUCBwcm9wZXJ0aWVzCi0KLVNZTk9QU0lTCi0gICAgeW9jdG8tYnNwIGxpc3Qga2FyY2gKLSAgICB5b2N0by1ic3AgbGlzdCA8a2FyY2g+IC0tcHJvcGVydGllcwotICAgICAgICAgICAgWy0tbyA8SlNPTiBQUk9QRVJUWSBGSUxFPiB8IC1vdXRmaWxlIDxKU09OIFBST1BFUlRZX0ZJTEU+XQotICAgIHlvY3RvLWJzcCBsaXN0IDxrYXJjaD4gLS1wcm9wZXJ0eSA8eHh4PgotICAgICAgICAgICAgWy0tbyA8SlNPTiBQUk9QRVJUWSBGSUxFPiB8IC1vdXRmaWxlIDxKU09OIFBST1BFUlRZX0ZJTEU+XQotCi1ERVNDUklQVElPTgotICAgIFRoaXMgY29tbWFuZCBlbnVtZXJhdGVzIHRoZSBjb21wbGV0ZSBzZXQgb2YgcG9zc2libGUgdmFsdWVzIGZvciBhCi0gICAgc3BlY2lmaWVkIG9wdGlvbiBvciBwcm9wZXJ0eSBuZWVkZWQgYnkgdGhlIEJTUCBjcmVhdGlvbiBwcm9jZXNzLgotCi0gICAgVGhlIGZpcnN0IGZvcm0gZW51bWVyYXRlcyBhbGwgdGhlIHBvc3NpYmxlIHZhbHVlcyB0aGF0IGV4aXN0IGFuZAotICAgIGNhbiBiZSBzcGVjaWZpZWQgZm9yIHRoZSAna2FyY2gnIHBhcmFtZXRlciB0byB0aGUgJ3lvY3RvIGJzcAotICAgIGNyZWF0ZScgY29tbWFuZC4gIEV4YW1wbGUgb3V0cHV0IGZvciB0aGUgJ2xpc3Qga2FyY2gnIGNvbW1hbmQ6Ci0KLSAgICAkIHlvY3RvLWJzcCBsaXN0IGthcmNoCi0gICAgQXJjaGl0ZWN0dXJlcyBhdmFpbGFibGU6Ci0gICAgICAgIGFybQotICAgICAgICBwb3dlcnBjCi0gICAgICAgIGkzODYKLSAgICAgICAgbWlwcwotICAgICAgICBtaXBzNjQKLSAgICAgICAgeDg2XzY0Ci0gICAgICAgIHFlbXUKLQotICAgIFRoZSBzZWNvbmQgZm9ybSBlbnVtZXJhdGVzIGFsbCB0aGUgcG9zc2libGUgcHJvcGVydGllcyB0aGF0IGV4aXN0Ci0gICAgYW5kIG11c3QgaGF2ZSB2YWx1ZXMgc3BlY2lmaWVkIGZvciB0aGVtIGluIHRoZSAneW9jdG8gYnNwIGNyZWF0ZScKLSAgICBjb21tYW5kIGZvciB0aGUgZ2l2ZW4gJ2thcmNoJy4gIFRoaXMgY29tbWFuZCBpcyBtYWlubHkgbWVhbnQgdG8KLSAgICBhbGxvdyB0aGUgZGV2ZWxvcG1lbnQgdXNlciBpbnRlcmZhY2UgYWx0ZXJuYXRpdmVzIHRvIHRoZSBkZWZhdWx0Ci0gICAgdGV4dC1iYXNlZCBwcm9tcHRpbmcgaW50ZXJmYWNlLiAgSWYgdGhlIC1vIG9wdGlvbiBpcyBzcGVjaWZpZWQsCi0gICAgdGhlIGxpc3Qgb2YgcHJvcGVydGllcywgaW4gYWRkaXRpb24gdG8gYmVpbmcgZGlzcGxheWVkLCB3aWxsIGJlCi0gICAgd3JpdHRlbiB0byB0aGUgc3BlY2lmaWVkIGZpbGUgYXMgYSBKU09OIG9iamVjdC4gIEluIHRoaXMgY2FzZSwgdGhlCi0gICAgb2JqZWN0IHdpbGwgY29uc2lzdCBvZiB0aGUgc2V0IG9mIG5hbWU6dmFsdWUgcGFpcnMgY29ycmVzcG9uZGluZwotICAgIHRvIHRoZSAocG9zc2libHkgbmVzdGVkKSBkaWN0aW9uYXJ5IG9mIHByb3BlcnRpZXMgZGVmaW5lZCBieSB0aGUKLSAgICBpbnB1dCBzdGF0ZW1lbnRzIHVzZWQgYnkgdGhlIEJTUC4gIFNvbWUgZXhhbXBsZSBvdXRwdXQgZm9yIHRoZQotICAgICdsaXN0IC0tcHJvcGVydGllcycgY29tbWFuZDoKLQotICAgICQgeW9jdG8tYnNwIGxpc3QgYXJtIC0tcHJvcGVydGllcwotICAgICJ0b3VjaHNjcmVlbiIgOiB7Ci0gICAgICAgICJtc2ciIDogRG9lcyB5b3VyIEJTUCBoYXZlIGEgdG91Y2hzY3JlZW4/ICh5L04pCi0gICAgICAgICJkZWZhdWx0IiA6IG4KLSAgICAgICAgInR5cGUiIDogYm9vbGVhbgotICAgIH0KLSAgICAidWJvb3RfbG9hZGFkZHJlc3MiIDogewotICAgICAgICAibXNnIiA6IFBsZWFzZSBzcGVjaWZ5IGEgdmFsdWUgZm9yIFVCT09UX0xPQURBRERSRVNTLgotICAgICAgICAiZGVmYXVsdCIgOiAweDgwMDA4MDAwCi0gICAgICAgICJ0eXBlIiA6IGVkaXQKLSAgICAgICAgInByaW8iIDogNDAKLSAgICB9Ci0gICAgImtlcm5lbF9jaG9pY2UiIDogewotICAgICAgICAicHJpbyIgOiAxMAotICAgICAgICAiZGVmYXVsdCIgOiBsaW51eC15b2N0b18zLjIKLSAgICAgICAgImRlcGVuZHMtb24iIDogdXNlX2RlZmF1bHRfa2VybmVsCi0gICAgICAgICJkZXBlbmRzLW9uLXZhbCIgOiBuCi0gICAgICAgICJtc2ciIDogUGxlYXNlIGNob29zZSB0aGUga2VybmVsIHRvIHVzZSBpbiB0aGlzIEJTUCA9PgotICAgICAgICAidHlwZSIgOiBjaG9pY2VsaXN0Ci0gICAgICAgICJnZW4iIDogYnNwLmtlcm5lbC5rZXJuZWxzCi0gICAgfQotICAgICJpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b18zLjAiOiIgOiB7Ci0gICAgICAgICJiYXNlX2ticmFuY2hfbGludXhfeW9jdG9fM18wIiA6IHsKLSAgICAgICAgICAgICJwcmlvIiA6IDIwCi0gICAgICAgICAgICAiZGVmYXVsdCIgOiB5b2N0by9zdGFuZGFyZAotICAgICAgICAgICAgImRlcGVuZHMtb24iIDogbmV3X2ticmFuY2hfbGludXhfeW9jdG9fM18wCi0gICAgICAgICAgICAiZGVwZW5kcy1vbi12YWwiIDogeQotICAgICAgICAgICAgIm1zZyIgOiBQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbiA9PgotICAgICAgICAgICAgInR5cGUiIDogY2hvaWNlbGlzdAotICAgICAgICAgICAgImdlbiIgOiBic3Aua2VybmVsLmFsbF9icmFuY2hlcwotICAgIH0KLSAgICAuCi0gICAgLgotICAgIC4KLQotICAgIEVhY2ggZW50cnkgaW4gdGhlIG91dHB1dCBjb25zaXN0cyBvZiB0aGUgbmFtZSBvZiB0aGUgaW5wdXQgZWxlbWVudAotICAgIGUuZy4gInRvdWNoc2NyZWVuIiwgZm9sbG93ZWQgYnkgdGhlIHByb3BlcnRpZXMgZGVmaW5lZCBmb3IgdGhhdAotICAgIGVsZW1lbnQgZW5jbG9zZWQgaW4gYnJhY2VzLiAgVGhpcyBpbmZvcm1hdGlvbiBzaG91bGQgcHJvdmlkZQotICAgIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24gdG8gY3JlYXRlIGEgY29tcGxldGUgdXNlciBpbnRlcmZhY2Ugd2l0aC4KLSAgICBUd28gZmVhdHVyZXMgb2YgdGhlIHNjaGVtZSBwcm92aWRlIGZvciBjb25kaXRpb25hbCBpbnB1dC4gIEZpcnN0LAotICAgIGlmIGEgUHl0aG9uICJpZiIgc3RhdGVtZW50IGFwcGVhcnMgaW4gcGxhY2Ugb2YgYW4gaW5wdXQgZWxlbWVudAotICAgIG5hbWUsIHRoZSBzZXQgb2YgZW5jbG9zZWQgaW5wdXQgZWxlbWVudHMgYXBwbHkgYW5kIHNob3VsZCBiZQotICAgIHByZXNlbnRlZCB0byB0aGUgdXNlciBvbmx5IGlmIHRoZSAnaWYnIHN0YXRlbWVudCBldmFsdWF0ZXMgdG8KLSAgICB0cnVlLiAgVGhlIHRlc3QgaW4gdGhlIGlmIHN0YXRlbWVudCB3aWxsIGFsd2F5cyByZWZlcmVuY2UgYW5vdGhlcgotICAgIGlucHV0IGVsZW1lbnQgaW4gdGhlIGxpc3QsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGVsZW1lbnQgYmVpbmcKLSAgICB0ZXN0ZWQgc2hvdWxkIGJlIHByZXNlbnRlZCB0byB0aGUgdXNlciBiZWZvcmUgdGhlIGVsZW1lbnRzCi0gICAgZW5jbG9zZWQgYnkgdGhlIGlmIGJsb2NrLiAgU2Vjb25kbHksIGluIGEgc2ltaWxhciB3YXksIHNvbWUKLSAgICBlbGVtZW50cyBjb250YWluICJkZXBlbmRzLW9uIiBhbmQgZGVwZW5kcy1vbi12YWwiIHRhZ3MsIHdoaWNoIG1lYW4KLSAgICB0aGF0IHRoZSBhZmZlY3RlZCBpbnB1dCBlbGVtZW50IHNob3VsZCBvbmx5IGJlIHByZXNlbnRlZCB0byB0aGUKLSAgICB1c2VyIGlmIHRoZSBlbGVtZW50IGl0IGRlcGVuZHMgb24gaGFzIGFscmVhZHkgYmVlbiBwcmVzZW50ZWQgdG8KLSAgICB0aGUgdXNlciBhbmQgdGhlIHVzZXIgaGFzIHNlbGVjdGVkIHRoZSBzcGVjaWZpZWQgdmFsdWUgZm9yIHRoYXQKLSAgICBlbGVtZW50LgotCi0gICAgVGhlIHRoaXJkIGZvcm0gZW51bWVyYXRlcyBhbGwgdGhlIHBvc3NpYmxlIHZhbHVlcyB0aGF0IGV4aXN0IGFuZAotICAgIGNhbiBiZSBzcGVjaWZpZWQgZm9yIGFueSBvZiB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9mIHRoZSBnaXZlbgotICAgICdrYXJjaCcgaW4gdGhlICd5b2N0byBic3AgY3JlYXRlJyBjb21tYW5kLiAgSWYgdGhlIC1vIG9wdGlvbiBpcwotICAgIHNwZWNpZmllZCwgdGhlIGxpc3Qgb2YgdmFsdWVzIGZvciB0aGUgZ2l2ZW4gcHJvcGVydHksIGluIGFkZGl0aW9uCi0gICAgdG8gYmVpbmcgZGlzcGxheWVkLCB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhlIHNwZWNpZmllZCBmaWxlIGFzIGEKLSAgICBKU09OIG9iamVjdC4gIEluIHRoaXMgY2FzZSwgdGhlIG9iamVjdCB3aWxsIGNvbnNpc3Qgb2YgdGhlIHNldCBvZgotICAgIG5hbWU6dmFsdWUgcGFpcnMgY29ycmVzcG9uZGluZyB0byB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzCi0gICAgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm9wZXJ0eS4KLQotICAgICQgeW9jdG8tYnNwIGxpc3QgaTM4NiAtLXByb3BlcnR5IHhzZXJ2ZXJfY2hvaWNlCi0gICAgICAgIFsieHNlcnZlcl92ZXNhIiwgIlZFU0EgeHNlcnZlciBzdXBwb3J0Il0KLSAgICAgICAgWyJ4c2VydmVyX2k5MTUiLCAiaTkxNSB4c2VydmVyIHN1cHBvcnQiXQotCi0gICAgJCB5b2N0by1ic3AgbGlzdCBhcm0gLS1wcm9wZXJ0eSBiYXNlX2ticmFuY2hfbGludXhfeW9jdG9fM18wCi0gICAgICAgIEdldHRpbmcgYnJhbmNoZXMgZnJvbSByZW1vdGUgcmVwbyBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by0zLjAuLi4KLSAgICAgICAgWyJ5b2N0by9iYXNlIiwgInlvY3RvL2Jhc2UiXQotICAgICAgICBbInlvY3RvL2VnMjB0IiwgInlvY3RvL2VnMjB0Il0KLSAgICAgICAgWyJ5b2N0by9nbWE1MDAiLCAieW9jdG8vZ21hNTAwIl0KLSAgICAgICAgWyJ5b2N0by9wdnIiLCAieW9jdG8vcHZyIl0KLSAgICAgICAgWyJ5b2N0by9zdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIsICJ5b2N0by9zdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyJdCi0gICAgICAgIFsieW9jdG8vc3RhbmRhcmQvYmFzZSIsICJ5b2N0by9zdGFuZGFyZC9iYXNlIl0KLSAgICAgICAgWyJ5b2N0by9zdGFuZGFyZC9jZWRhcnRyYWlsIiwgInlvY3RvL3N0YW5kYXJkL2NlZGFydHJhaWwiXQotICAgICAgICAuCi0gICAgICAgIC4KLSAgICAgICAgLgotICAgICAgICBbInlvY3RvL3N0YW5kYXJkL3FlbXUtcHBjMzIiLCAieW9jdG8vc3RhbmRhcmQvcWVtdS1wcGMzMiJdCi0gICAgICAgIFsieW9jdG8vc3RhbmRhcmQvcm91dGVyc3RhdGlvbnBybyIsICJ5b2N0by9zdGFuZGFyZC9yb3V0ZXJzdGF0aW9ucHJvIl0KLQotICAgIFRoZSB0aGlyZCBmb3JtIGFzIHdlbGwgaXMgbWVhbnQgbWFpbmx5IGZvciBkZXZlbG9wZXJzIG9mCi0gICAgYWx0ZXJuYXRpdmUgaW50ZXJmYWNlcyAtIGl0IGFsbG93cyB0aGUgZGV2ZWxvcGVyIHRvIGZldGNoIHRoZQotICAgIHBvc3NpYmxlIHZhbHVlcyBmb3IgYSBnaXZlbiBpbnB1dCBlbGVtZW50IG9uLWRlbWFuZC4gIFRoaXMKLSAgICBvbi1kZW1hbmQgY2FwYWJpbGl0eSBpcyBlc3BlY2lhbGx5IHZhbHVhYmxlIGZvciBlbGVtZW50cyB0aGF0Ci0gICAgcmVxdWlyZSByZWxhdGl2ZWx5IGV4cGVuc2l2ZSByZW1vdGUgb3BlcmF0aW9ucyB0byBmdWxmaWxsLCBzdWNoIGFzCi0gICAgdGhlIGV4YW1wbGUgdGhhdCByZXR1cm5zIHRoZSBzZXQgb2YgYnJhbmNoZXMgYXZhaWxhYmxlIGluIGEgcmVtb3RlCi0gICAgZ2l0IHRyZWUgYWJvdmUuCi0KLSIiIgotCi0jIwotIyB5b2N0by1rZXJuZWwgaGVscCBhbmQgdXNhZ2Ugc3RyaW5ncwotIyMKLQoteW9jdG9fa2VybmVsX3VzYWdlID0gIiIiCi0KLSBNb2RpZnkgYW5kIGxpc3QgWW9jdG8gQlNQIGtlcm5lbCBjb25maWcgaXRlbXMgYW5kIHBhdGNoZXMuCi0KLSB1c2FnZTogeW9jdG8ta2VybmVsIFstLXZlcnNpb25dIFstLWhlbHBdIENPTU1BTkQgW0FSR1NdCi0KLSBDdXJyZW50ICd5b2N0by1rZXJuZWwnIGNvbW1hbmRzIGFyZToKLSAgIGNvbmZpZyBsaXN0ICAgICAgIExpc3QgdGhlIG1vZGlmaWFibGUgc2V0IG9mIGJhcmUga2VybmVsIGNvbmZpZyBvcHRpb25zIGZvciBhIEJTUAotICAgY29uZmlnIGFkZCAgICAgICAgQWRkIG9yIG1vZGlmeSBiYXJlIGtlcm5lbCBjb25maWcgb3B0aW9ucyBmb3IgYSBCU1AKLSAgIGNvbmZpZyBybSAgICAgICAgIFJlbW92ZSBiYXJlIGtlcm5lbCBjb25maWcgb3B0aW9ucyBmcm9tIGEgQlNQCi0gICBwYXRjaCBsaXN0ICAgICAgICBMaXN0IHRoZSBwYXRjaGVzIGFzc29jaWF0ZWQgd2l0aCBhIEJTUAotICAgcGF0Y2ggYWRkICAgICAgICAgUGF0Y2ggdGhlIFlvY3RvIGtlcm5lbCBmb3IgYSBCU1AKLSAgIHBhdGNoIHJtICAgICAgICAgIFJlbW92ZSBwYXRjaGVzIGZyb20gYSBCU1AKLSAgIGZlYXR1cmUgbGlzdCAgICAgIExpc3QgdGhlIGZlYXR1cmVzIHVzZWQgYnkgYSBCU1AKLSAgIGZlYXR1cmUgYWRkICAgICAgIEhhdmUgYSBCU1AgdXNlIGEgZmVhdHVyZQotICAgZmVhdHVyZSBybSAgICAgICAgSGF2ZSBhIEJTUCBzdG9wIHVzaW5nIGEgZmVhdHVyZQotICAgZmVhdHVyZXMgbGlzdCAgICAgTGlzdCB0aGUgZmVhdHVyZXMgYXZhaWxhYmxlIHRvIEJTUHMKLSAgIGZlYXR1cmUgZGVzY3JpYmUgIERlc2NyaWJlIGEgcGFydGljdWxhciBmZWF0dXJlCi0gICBmZWF0dXJlIGNyZWF0ZSAgICBDcmVhdGUgYSBuZXcgQlNQLWxvY2FsIGZlYXR1cmUKLSAgIGZlYXR1cmUgZGVzdHJveSAgIFJlbW92ZSBhIEJTUC1sb2NhbCBmZWF0dXJlCi0KLSBTZWUgJ3lvY3RvLWtlcm5lbCBoZWxwIENPTU1BTkQnIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGEgc3BlY2lmaWMgY29tbWFuZC4KLQotIiIiCi0KLQoteW9jdG9fa2VybmVsX2hlbHBfdXNhZ2UgPSAiIiIKLQotIHVzYWdlOiB5b2N0by1rZXJuZWwgaGVscCA8c3ViY29tbWFuZD4KLQotIFRoaXMgY29tbWFuZCBkaXNwbGF5cyBkZXRhaWxlZCBoZWxwIGZvciB0aGUgc3BlY2lmaWVkIHN1YmNvbW1hbmQuCi0iIiIKLQoteW9jdG9fa2VybmVsX2NvbmZpZ19saXN0X3VzYWdlID0gIiIiCi0KLSBMaXN0IHRoZSBtb2RpZmlhYmxlIHNldCBvZiBiYXJlIGtlcm5lbCBjb25maWcgb3B0aW9ucyBmb3IgYSBCU1AKLQotIHVzYWdlOiB5b2N0by1rZXJuZWwgY29uZmlnIGxpc3QgPGJzcC1uYW1lPgotCi0gVGhpcyBjb21tYW5kIGxpc3RzIHRoZSAnbW9kaWZpYWJsZScgY29uZmlnIGl0ZW1zIGZvciBhIEJTUCBpLmUuIHRoZQotIGl0ZW1zIHdoaWNoIGFyZSBlbGlnaWJsZSBmb3IgbW9kaWZpY2F0aW9uIG9yIHJlbW92YWwgYnkgb3RoZXIKLSB5b2N0by1rZXJuZWwgY29tbWFuZHMuCi0KLSAnbW9kaWZpYWJsZScgY29uZmlnIGl0ZW1zIGFyZSB0aGUgY29uZmlnIGl0ZW1zIGNvbnRhaW5lZCBhIEJTUCdzCi0gdXNlci1jb25maWcuY2ZnIGJhc2UgY29uZmlnLgotIiIiCi0KLQoteW9jdG9fa2VybmVsX2NvbmZpZ19saXN0X2hlbHAgPSAiIiIKLQotTkFNRQotICAgIHlvY3RvLWtlcm5lbCBjb25maWcgbGlzdCAtIExpc3QgdGhlIG1vZGlmaWFibGUgc2V0IG9mIGJhcmUga2VybmVsCi0gICAgY29uZmlnIG9wdGlvbnMgZm9yIGEgQlNQCi0KLVNZTk9QU0lTCi0gICAgeW9jdG8ta2VybmVsIGNvbmZpZyBsaXN0IDxic3AtbmFtZT4KLQotREVTQ1JJUFRJT04KLSAgICBUaGlzIGNvbW1hbmQgbGlzdHMgdGhlICdtb2RpZmlhYmxlJyBjb25maWcgaXRlbXMgZm9yIGEgQlNQCi0gICAgaS5lLiB0aGUgaXRlbXMgd2hpY2ggYXJlIGVsaWdpYmxlIGZvciBtb2RpZmljYXRpb24gb3IgcmVtb3ZhbCBieQotICAgIG90aGVyIHlvY3RvLWtlcm5lbCBjb21tYW5kcy4KLSIiIgotCi0KLXlvY3RvX2tlcm5lbF9jb25maWdfYWRkX3VzYWdlID0gIiIiCi0KLSBBZGQgb3IgbW9kaWZ5IGJhcmUga2VybmVsIGNvbmZpZyBvcHRpb25zIGZvciBhIEJTUAotCi0gdXNhZ2U6IHlvY3RvLWtlcm5lbCBjb25maWcgYWRkIDxic3AtbmFtZT4gWzxDT05GSUdfWFhYPXg+IC4uLl0KLQotIFRoaXMgY29tbWFuZCBhZGRzIG9uZSBvciBtb3JlIENPTkZJR19YWFg9eCBpdGVtcyB0byBhIEJTUCdzIHVzZXItY29uZmlnLmNmZwotIGJhc2UgY29uZmlnLgotIiIiCi0KLQoteW9jdG9fa2VybmVsX2NvbmZpZ19hZGRfaGVscCA9ICIiIgotCi1OQU1FCi0gICAgeW9jdG8ta2VybmVsIGNvbmZpZyBhZGQgLSBBZGQgb3IgbW9kaWZ5IGJhcmUga2VybmVsIGNvbmZpZyBvcHRpb25zCi0gICAgZm9yIGEgQlNQCi0KLVNZTk9QU0lTCi0gICAgeW9jdG8ta2VybmVsIGNvbmZpZyBhZGQgPGJzcC1uYW1lPiBbPENPTkZJR19YWFg9eD4gLi4uXQotCi1ERVNDUklQVElPTgotICAgIFRoaXMgY29tbWFuZCBhZGRzIG9uZSBvciBtb3JlIENPTkZJR19YWFg9eCBpdGVtcyB0byBhIEJTUCdzCi0gICAgZm9vLmNmZyBiYXNlIGNvbmZpZy4KLQotICAgIE5PVEU6IEl0J3MgdXAgdG8gdGhlIHVzZXIgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRoZSBjb25maWcKLSAgICBvcHRpb25zIGJlaW5nIGFkZGVkIG1ha2Ugc2Vuc2Ugb3Igbm90IC0gdGhpcyBjb21tYW5kIGRvZXMgbm8KLSAgICBzYW5pdHkgY2hlY2tpbmcgb3IgdmVyaWZpY2F0aW9uIG9mIGFueSBraW5kIHRvIGVuc3VyZSB0aGF0IGEKLSAgICBjb25maWcgb3B0aW9uIHJlYWxseSBtYWtlcyBzZW5zZSBhbmQgd2lsbCBhY3R1YWxseSBiZSBzZXQgaW4gaW4KLSAgICB0aGUgZmluYWwgY29uZmlnLiAgRm9yIGV4YW1wbGUsIGlmIGEgY29uZmlnIG9wdGlvbiBkZXBlbmRzIG9uCi0gICAgb3RoZXIgY29uZmlnIG9wdGlvbnMsIGl0IHdpbGwgYmUgdHVybmVkIG9mZiBieSBrY29uZmlnIGlmIHRoZQotICAgIG90aGVyIG9wdGlvbnMgYXJlbid0IHNldCBjb3JyZWN0bHkuCi0iIiIKLQotCi15b2N0b19rZXJuZWxfY29uZmlnX3JtX3VzYWdlID0gIiIiCi0KLSBSZW1vdmUgYmFyZSBrZXJuZWwgY29uZmlnIG9wdGlvbnMgZnJvbSBhIEJTUAotCi0gdXNhZ2U6IHlvY3RvLWtlcm5lbCBjb25maWcgcm0gPGJzcC1uYW1lPgotCi0gVGhpcyBjb21tYW5kIHJlbW92ZXMgKHR1cm5zIG9mZikgb25lIG9yIG1vcmUgQ09ORklHX1hYWCBpdGVtcyBmcm9tIGEKLSBCU1AncyB1c2VyLWNvbmZpZy5jZmcgYmFzZSBjb25maWcuCi0KLSBUaGUgc2V0IG9mIGNvbmZpZyBpdGVtcyBhdmFpbGFibGUgdG8gYmUgcmVtb3ZlZCBieSB0aGlzIGNvbW1hbmQgZm9yIGEKLSBCU1AgaXMgbGlzdGVkIGFuZCB0aGUgdXNlciBwcm9tcHRlZCBmb3IgdGhlIHNwZWNpZmljIGl0ZW1zIHRvIHJlbW92ZS4KLSIiIgotCi0KLXlvY3RvX2tlcm5lbF9jb25maWdfcm1faGVscCA9ICIiIgotCi1OQU1FCi0gICAgeW9jdG8ta2VybmVsIGNvbmZpZyBybSAtIFJlbW92ZSBiYXJlIGtlcm5lbCBjb25maWcgb3B0aW9ucyBmcm9tIGEKLSAgICBCU1AKLQotU1lOT1BTSVMKLSAgICB5b2N0by1rZXJuZWwgY29uZmlnIHJtIDxic3AtbmFtZT4KLQotREVTQ1JJUFRJT04KLSAgICBUaGlzIGNvbW1hbmQgcmVtb3ZlcyAodHVybnMgb2ZmKSBvbmUgb3IgbW9yZSBDT05GSUdfWFhYIGl0ZW1zIGZyb20gYQotICAgIEJTUCdzIHVzZXItY29uZmlnLmNmZyBiYXNlIGNvbmZpZy4KLQotICAgIFRoZSBzZXQgb2YgY29uZmlnIGl0ZW1zIGF2YWlsYWJsZSB0byBiZSByZW1vdmVkIGJ5IHRoaXMgY29tbWFuZAotICAgIGZvciBhIEJTUCBpcyBsaXN0ZWQgYW5kIHRoZSB1c2VyIHByb21wdGVkIGZvciB0aGUgc3BlY2lmaWMgaXRlbXMKLSAgICB0byByZW1vdmUuCi0iIiIKLQotCi15b2N0b19rZXJuZWxfcGF0Y2hfbGlzdF91c2FnZSA9ICIiIgotCi0gTGlzdCB0aGUgcGF0Y2hlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGtlcm5lbCBmb3IgYSBCU1AKLQotIHVzYWdlOiB5b2N0by1rZXJuZWwgcGF0Y2ggbGlzdCA8YnNwLW5hbWU+Ci0KLSBUaGlzIGNvbW1hbmQgbGlzdHMgdGhlIHBhdGNoZXMgYXNzb2NpYXRlZCB3aXRoIGEgQlNQLgotCi0gTk9URTogdGhpcyBvbmx5IGFwcGxpZXMgdG8gcGF0Y2hlcyBsaXN0ZWQgaW4gdGhlIGtlcm5lbCByZWNpcGUncwotIHVzZXItcGF0Y2hlcy5zY2MgZmlsZSAoYW5kIGN1cnJlbnRseSByZXBlYXRlZCBpbiBpdHMgU1JDX1VSSSkuCi0iIiIKLQotCi15b2N0b19rZXJuZWxfcGF0Y2hfbGlzdF9oZWxwID0gIiIiCi0KLU5BTUUKLSAgICB5b2N0by1rZXJuZWwgcGF0Y2ggbGlzdCAtIExpc3QgdGhlIHBhdGNoZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBrZXJuZWwKLSAgICBmb3IgYSBCU1AKLQotU1lOT1BTSVMKLSAgICB5b2N0by1rZXJuZWwgcGF0Y2ggbGlzdCA8YnNwLW5hbWU+Ci0KLURFU0NSSVBUSU9OCi0gICAgVGhpcyBjb21tYW5kIGxpc3RzIHRoZSBwYXRjaGVzIGFzc29jaWF0ZWQgd2l0aCBhIEJTUC4KLQotICAgIE5PVEU6IHRoaXMgb25seSBhcHBsaWVzIHRvIHBhdGNoZXMgbGlzdGVkIGluIHRoZSBrZXJuZWwgcmVjaXBlJ3MKLSAgICB1c2VyLXBhdGNoZXMuc2NjIGZpbGUgKGFuZCBjdXJyZW50bHkgcmVwZWF0ZWQgaW4gaXRzIFNSQ19VUkkpLgotIiIiCi0KLQoteW9jdG9fa2VybmVsX3BhdGNoX2FkZF91c2FnZSA9ICIiIgotCi0gUGF0Y2ggdGhlIFlvY3RvIGtlcm5lbCBmb3IgYSBzcGVjaWZpYyBCU1AKLQotIHVzYWdlOiB5b2N0by1rZXJuZWwgcGF0Y2ggYWRkIDxic3AtbmFtZT4gWzxQQVRDSD4gLi4uXQotCi0gVGhpcyBjb21tYW5kIGFkZHMgb25lIG9yIG1vcmUgcGF0Y2hlcyB0byBhIEJTUCdzIG1hY2hpbmUgYnJhbmNoLiAgVGhlCi0gcGF0Y2ggd2lsbCBiZSBhZGRlZCB0byB0aGUgQlNQJ3MgbGludXgteW9jdG8ga2VybmVsIHVzZXItcGF0Y2hlcy5zY2MKLSBmaWxlIChhbmQgY3VycmVudGx5IHJlcGVhdGVkIGluIGl0cyBTUkNfVVJJKSBhbmQgd2lsbCBiZSBndWFyYW50ZWVkCi0gdG8gYmUgYXBwbGllZCBpbiB0aGUgb3JkZXIgc3BlY2lmaWVkLgotIiIiCi0KLQoteW9jdG9fa2VybmVsX3BhdGNoX2FkZF9oZWxwID0gIiIiCi0KLU5BTUUKLSAgICB5b2N0by1rZXJuZWwgcGF0Y2ggYWRkIC0gUGF0Y2ggdGhlIFlvY3RvIGtlcm5lbCBmb3IgYSBzcGVjaWZpYyBCU1AKLQotU1lOT1BTSVMKLSAgICB5b2N0by1rZXJuZWwgcGF0Y2ggYWRkIDxic3AtbmFtZT4gWzxQQVRDSD4gLi4uXQotCi1ERVNDUklQVElPTgotICAgIFRoaXMgY29tbWFuZCBhZGRzIG9uZSBvciBtb3JlIHBhdGNoZXMgdG8gYSBCU1AncyBtYWNoaW5lIGJyYW5jaC4KLSAgICBUaGUgcGF0Y2ggd2lsbCBiZSBhZGRlZCB0byB0aGUgQlNQJ3MgbGludXgteW9jdG8ga2VybmVsCi0gICAgdXNlci1wYXRjaGVzLnNjYyBmaWxlIChhbmQgY3VycmVudGx5IHJlcGVhdGVkIGluIGl0cyBTUkNfVVJJKSBhbmQKLSAgICB3aWxsIGJlIGd1YXJhbnRlZWQgdG8gYmUgYXBwbGllZCBpbiB0aGUgb3JkZXIgc3BlY2lmaWVkLgotCi0gICAgTk9URTogSXQncyB1cCB0byB0aGUgdXNlciB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgdGhlIHBhdGNoZXMKLSAgICBiZWluZyBhZGRlZCBtYWtlcyBzZW5zZSBvciBub3QgLSB0aGlzIGNvbW1hbmQgZG9lcyBubyBzYW5pdHkKLSAgICBjaGVja2luZyBvciB2ZXJpZmljYXRpb24gb2YgYW55IGtpbmQgdG8gZW5zdXJlIHRoYXQgYSBwYXRjaCBjYW4KLSAgICBhY3R1YWxseSBiZSBhcHBsaWVkIHRvIHRoZSBCU1AncyBrZXJuZWwgYnJhbmNoOyBpdCdzIGFzc3VtZWQgdGhhdAotICAgIHRoZSB1c2VyIGhhcyBhbHJlYWR5IGRvbmUgdGhhdC4KLSIiIgotCi0KLXlvY3RvX2tlcm5lbF9wYXRjaF9ybV91c2FnZSA9ICIiIgotCi0gUmVtb3ZlIGEgcGF0Y2ggZnJvbSB0aGUgWW9jdG8ga2VybmVsIGZvciBhIHNwZWNpZmljIEJTUAotCi0gdXNhZ2U6IHlvY3RvLWtlcm5lbCBwYXRjaCBybSA8YnNwLW5hbWU+Ci0KLSBUaGlzIGNvbW1hbmQgcmVtb3ZlcyBvbmUgb3IgbW9yZSBwYXRjaGVzIGZyb20gYSBCU1AncyBtYWNoaW5lIGJyYW5jaC4KLSBUaGUgcGF0Y2ggd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIEJTUCdzIGxpbnV4LXlvY3RvIGtlcm5lbAotIHVzZXItcGF0Y2hlcy5zY2MgZmlsZSAoYW5kIGN1cnJlbnRseSByZXBlYXRlZCBpbiBpdHMgU1JDX1VSSSkgYW5kCi0ga2VybmVsIFNSQ19VUkkgZGlyLgotCi0gVGhlIHNldCBvZiBwYXRjaGVzIGF2YWlsYWJsZSB0byBiZSByZW1vdmVkIGJ5IHRoaXMgY29tbWFuZCBmb3IgYSBCU1AKLSBpcyBsaXN0ZWQgYW5kIHRoZSB1c2VyIHByb21wdGVkIGZvciB0aGUgc3BlY2lmaWMgcGF0Y2hlcyB0byByZW1vdmUuCi0iIiIKLQotCi15b2N0b19rZXJuZWxfcGF0Y2hfcm1faGVscCA9ICIiIgotCi1OQU1FCi0gICAgeW9jdG8ta2VybmVsIHBhdGNoIHJtIC0gUmVtb3ZlIGEgcGF0Y2ggZnJvbSB0aGUgWW9jdG8ga2VybmVsIGZvciBhIHNwZWNpZmljIEJTUAotCi1TWU5PUFNJUwotICAgIHlvY3RvLWtlcm5lbCBwYXRjaCBybSA8YnNwLW5hbWU+Ci0KLURFU0NSSVBUSU9OCi0gICAgVGhpcyBjb21tYW5kIHJlbW92ZXMgb25lIG9yIG1vcmUgcGF0Y2hlcyBmcm9tIGEgQlNQJ3MgbWFjaGluZQotICAgIGJyYW5jaC4gIFRoZSBwYXRjaCB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgQlNQJ3MgbGludXgteW9jdG8KLSAgICBrZXJuZWwgdXNlci1wYXRjaGVzLnNjYyBmaWxlIChhbmQgY3VycmVudGx5IHJlcGVhdGVkIGluIGl0cwotICAgIFNSQ19VUkkpLgotCi0gICAgVGhlIHNldCBvZiBwYXRjaGVzIGF2YWlsYWJsZSB0byBiZSByZW1vdmVkIGJ5IHRoaXMgY29tbWFuZCBmb3IgYQotICAgIEJTUCBpcyBsaXN0ZWQgYW5kIHRoZSB1c2VyIHByb21wdGVkIGZvciB0aGUgc3BlY2lmaWMgcGF0Y2hlcyB0bwotICAgIHJlbW92ZS4KLSIiIgotCi15b2N0b19rZXJuZWxfZmVhdHVyZV9saXN0X3VzYWdlID0gIiIiCi0KLSBMaXN0IHRoZSBCU1AgZmVhdHVyZXMgdGhhdCBhcmUgYmVpbmcgdXNlZCBieSBhIEJTUAotCi0gdXNhZ2U6IHlvY3RvLWtlcm5lbCBmZWF0dXJlIGxpc3QgPGJzcC1uYW1lPgotCi0gVGhpcyBjb21tYW5kIGxpc3RzIHRoZSBmZWF0dXJlcyBiZWluZyB1c2VkIGJ5IGEgQlNQIGkuZS4gdGhlIGZlYXR1cmVzCi0gd2hpY2ggYXJlIGVsaWdpYmxlIGZvciBtb2RpZmljYXRpb24gb3IgcmVtb3ZhbCBieSBvdGhlciB5b2N0by1rZXJuZWwKLSBjb21tYW5kcy4KLQotICdtb2RpZmlhYmxlJyBmZWF0dXJlcyBhcmUgdGhlIGZlYXR1cmVzIGxpc3RlZCBpbiBhIEJTUCdzCi0gdXNlci1mZWF0dXJlcy5zY2MgZmlsZS4KLSIiIgotCi0KLXlvY3RvX2tlcm5lbF9mZWF0dXJlX2xpc3RfaGVscCA9ICIiIgotCi1OQU1FCi0gICAgeW9jdG8ta2VybmVsIGZlYXR1cmUgbGlzdCAtIExpc3QgdGhlIG1vZGlmaWFibGUgc2V0IG9mIGZlYXR1cmVzCi0gICAgYmVpbmcgdXNlZCBieSBhIEJTUAotCi1TWU5PUFNJUwotICAgIHlvY3RvLWtlcm5lbCBmZWF0dXJlIGxpc3QgPGJzcC1uYW1lPgotCi1ERVNDUklQVElPTgotICAgIFRoaXMgY29tbWFuZCBsaXN0cyB0aGUgJ21vZGlmaWFibGUnIGZlYXR1cmVzIGJlaW5nIHVzZWQgYnkgYSBCU1AKLSAgICBpLmUuIHRoZSBmZWF0dXJlcyB3aGljaCBhcmUgZWxpZ2libGUgZm9yIG1vZGlmaWNhdGlvbiBvciByZW1vdmFsCi0gICAgYnkgb3RoZXIgeW9jdG8ta2VybmVsIGNvbW1hbmRzLgotIiIiCi0KLQoteW9jdG9fa2VybmVsX2ZlYXR1cmVfYWRkX3VzYWdlID0gIiIiCi0KLSBBZGQgdG8gb3IgbW9kaWZ5IHRoZSBsaXN0IG9mIGZlYXR1cmVzIGJlaW5nIHVzZWQgZm9yIGEgQlNQCi0KLSB1c2FnZTogeW9jdG8ta2VybmVsIGZlYXR1cmUgYWRkIDxic3AtbmFtZT4gWy94eHh4L3l5eXkvZmVhdHVyZS5zY2MgLi4uXQotCi0gVGhpcyBjb21tYW5kIGFkZHMgb25lIG9yIG1vcmUgZmVhdHVyZSBpdGVtcyB0byBhIEJTUCdzIGtlcm5lbAotIHVzZXItZmVhdHVyZXMuc2NjIGZpbGUsIHdoaWNoIGlzIHRoZSBmaWxlIHVzZWQgdG8gbWFuYWdlIGZlYXR1cmVzIGluCi0gYSB5b2N0by1ic3AtZ2VuZXJhdGVkIEJTUC4gIEZlYXR1cmVzIHRvIGJlIGFkZGVkIG11c3QgYmUgc3BlY2lmaWVkIGFzCi0gZnVsbHktcXVhbGlmaWVkIGZlYXR1cmUgbmFtZXMuCi0iIiIKLQotCi15b2N0b19rZXJuZWxfZmVhdHVyZV9hZGRfaGVscCA9ICIiIgotCi1OQU1FCi0gICAgeW9jdG8ta2VybmVsIGZlYXR1cmUgYWRkIC0gQWRkIHRvIG9yIG1vZGlmeSB0aGUgbGlzdCBvZiBmZWF0dXJlcwotICAgIGJlaW5nIHVzZWQgZm9yIGEgQlNQCi0KLVNZTk9QU0lTCi0gICAgeW9jdG8ta2VybmVsIGZlYXR1cmUgYWRkIDxic3AtbmFtZT4gWy94eHh4L3l5eXkvZmVhdHVyZS5zY2MgLi4uXQotCi1ERVNDUklQVElPTgotICAgIFRoaXMgY29tbWFuZCBhZGRzIG9uZSBvciBtb3JlIGZlYXR1cmUgaXRlbXMgdG8gYSBCU1AncwotICAgIHVzZXItZmVhdHVyZXMuc2NjIGZpbGUsIHdoaWNoIGlzIHRoZSBmaWxlIHVzZWQgdG8gbWFuYWdlIGZlYXR1cmVzCi0gICAgaW4gYSB5b2N0by1ic3AtZ2VuZXJhdGVkIEJTUC4gIEZlYXR1cmVzIHRvIGJlIGFkZGVkIG11c3QgYmUKLSAgICBzcGVjaWZpZWQgYXMgZnVsbHktcXVhbGlmaWVkIGZlYXR1cmUgbmFtZXMuCi0iIiIKLQotCi15b2N0b19rZXJuZWxfZmVhdHVyZV9ybV91c2FnZSA9ICIiIgotCi0gUmVtb3ZlIGEgZmVhdHVyZSBmcm9tIHRoZSBsaXN0IG9mIGZlYXR1cmVzIGJlaW5nIHVzZWQgZm9yIGEgQlNQCi0KLSB1c2FnZTogeW9jdG8ta2VybmVsIGZlYXR1cmUgcm0gPGJzcC1uYW1lPgotCi0gVGhpcyBjb21tYW5kIHJlbW92ZXMgKHR1cm5zIG9mZikgb25lIG9yIG1vcmUgZmVhdHVyZXMgZnJvbSBhIEJTUCdzCi0gdXNlci1mZWF0dXJlcy5zY2MgZmlsZSwgd2hpY2ggaXMgdGhlIGZpbGUgdXNlZCB0byBtYW5hZ2UgZmVhdHVyZXMgaW4KLSBhIHlvY3RvLWJzcC1nZW5lcmF0ZWQgQlNQLgotCi0gVGhlIHNldCBvZiBmZWF0dXJlcyBhdmFpbGFibGUgdG8gYmUgcmVtb3ZlZCBieSB0aGlzIGNvbW1hbmQgZm9yIGEgQlNQCi0gaXMgbGlzdGVkIGFuZCB0aGUgdXNlciBwcm9tcHRlZCBmb3IgdGhlIHNwZWNpZmljIGl0ZW1zIHRvIHJlbW92ZS4KLSIiIgotCi0KLXlvY3RvX2tlcm5lbF9mZWF0dXJlX3JtX2hlbHAgPSAiIiIKLQotTkFNRQotICAgIHlvY3RvLWtlcm5lbCBmZWF0dXJlIHJtIC0gUmVtb3ZlIGEgZmVhdHVyZSBmcm9tIHRoZSBsaXN0IG9mCi0gICAgZmVhdHVyZXMgYmVpbmcgdXNlZCBmb3IgYSBCU1AKLQotU1lOT1BTSVMKLSAgICB5b2N0by1rZXJuZWwgZmVhdHVyZSBybSA8YnNwLW5hbWU+Ci0KLURFU0NSSVBUSU9OCi0gICAgVGhpcyBjb21tYW5kIHJlbW92ZXMgKHR1cm5zIG9mZikgb25lIG9yIG1vcmUgZmVhdHVyZXMgZnJvbSBhIEJTUCdzCi0gICAgdXNlci1mZWF0dXJlcy5zY2MgZmlsZSwgd2hpY2ggaXMgdGhlIGZpbGUgdXNlZCB0byBtYW5hZ2UgZmVhdHVyZXMKLSAgICBpbiBhIHlvY3RvLWJzcC1nZW5lcmF0ZWQgQlNQLgotCi0gICAgVGhlIHNldCBvZiBmZWF0dXJlcyBhdmFpbGFibGUgdG8gYmUgcmVtb3ZlZCBieSB0aGlzIGNvbW1hbmQgZm9yIGEKLSAgICBCU1AgaXMgbGlzdGVkIGFuZCB0aGUgdXNlciBwcm9tcHRlZCBmb3IgdGhlIHNwZWNpZmljIGl0ZW1zIHRvCi0gICAgcmVtb3ZlLgotIiIiCi0KLQoteW9jdG9fa2VybmVsX2F2YWlsYWJsZV9mZWF0dXJlc19saXN0X3VzYWdlID0gIiIiCi0KLSBMaXN0IHRoZSBzZXQgb2Yga2VybmVsIGZlYXR1cmVzIGF2YWlsYWJsZSB0byBhIEJTUAotCi0gdXNhZ2U6IHlvY3RvLWtlcm5lbCBmZWF0dXJlcyBsaXN0IDxic3AtbmFtZT4KLQotIFRoaXMgY29tbWFuZCBsaXN0cyB0aGUgY29tcGxldGUgc2V0IG9mIGtlcm5lbCBmZWF0dXJlcyBhdmFpbGFibGUgdG8gYQotIEJTUC4gIFRoaXMgaW5jbHVkZXMgdGhlIGZlYXR1cmVzIGNvbnRhaW5lZCBpbiBsaW51eC15b2N0byBtZXRhCi0gYnJhbmNoZXMgYXMgd2VsbCBhcyByZWNpcGUtc3BhY2UgZmVhdHVyZXMgZGVmaW5lZCBsb2NhbGx5IHRvIHRoZSBCU1AuCi0iIiIKLQotCi15b2N0b19rZXJuZWxfYXZhaWxhYmxlX2ZlYXR1cmVzX2xpc3RfaGVscCA9ICIiIgotCi1OQU1FCi0gICAgeW9jdG8ta2VybmVsIGZlYXR1cmVzIGxpc3QgLSBMaXN0IHRoZSBzZXQgb2Yga2VybmVsIGZlYXR1cmVzCi0gICAgYXZhaWxhYmxlIHRvIGEgQlNQCi0KLVNZTk9QU0lTCi0gICAgeW9jdG8ta2VybmVsIGZlYXR1cmVzIGxpc3QgPGJzcC1uYW1lPgotCi1ERVNDUklQVElPTgotICAgICBUaGlzIGNvbW1hbmQgbGlzdHMgdGhlIGNvbXBsZXRlIHNldCBvZiBrZXJuZWwgZmVhdHVyZXMgYXZhaWxhYmxlCi0gICAgIHRvIGEgQlNQLiAgVGhpcyBpbmNsdWRlcyB0aGUgZmVhdHVyZXMgY29udGFpbmVkIGluIGxpbnV4LXlvY3RvCi0gICAgIG1ldGEgYnJhbmNoZXMgYXMgd2VsbCBhcyByZWNpcGUtc3BhY2UgZmVhdHVyZXMgZGVmaW5lZCBsb2NhbGx5IHRvCi0gICAgIHRoZSBCU1AuCi0iIiIKLQotCi15b2N0b19rZXJuZWxfZmVhdHVyZV9kZXNjcmliZV91c2FnZSA9ICIiIgotCi0gUHJpbnQgdGhlIGRlc2NyaXB0aW9uIGFuZCBjb21wYXRpYmlsaXR5IGluZm9ybWF0aW9uIGZvciBhIGdpdmVuIGtlcm5lbCBmZWF0dXJlCi0KLSB1c2FnZTogeW9jdG8ta2VybmVsIGZlYXR1cmUgZGVzY3JpYmUgPGJzcC1uYW1lPiBbL3h4eHgveXl5eS9mZWF0dXJlLnNjYyAuLi5dCi0KLSBUaGlzIGNvbW1hbmQgcHJpbnRzIHRoZSBkZXNjcmlwdGlvbiBhbmQgY29tcGF0aWJpbGl0eSBvZiBhIHNwZWNpZmljCi0gZmVhdHVyZSBpbiB0aGUgZm9ybWF0ICdkZXNjcmlwdGlvbiBbY29tcGF0aWJpbGl0eV0uCi0iIiIKLQotCi15b2N0b19rZXJuZWxfZmVhdHVyZV9kZXNjcmliZV9oZWxwID0gIiIiCi0KLU5BTUUKLSAgICB5b2N0by1rZXJuZWwgZmVhdHVyZSBkZXNjcmliZSAtIHByaW50IHRoZSBkZXNjcmlwdGlvbiBhbmQKLSAgICBjb21wYXRpYmlsaXR5IGluZm9ybWF0aW9uIGZvciBhIGdpdmVuIGtlcm5lbCBmZWF0dXJlCi0KLVNZTk9QU0lTCi0gICAgeW9jdG8ta2VybmVsIGZlYXR1cmUgZGVzY3JpYmUgPGJzcC1uYW1lPiBbL3h4eHgveXl5eS9mZWF0dXJlLnNjYyAuLi5dCi0KLURFU0NSSVBUSU9OCi0gICAgVGhpcyBjb21tYW5kIHByaW50cyB0aGUgZGVzY3JpcHRpb24gYW5kIGNvbXBhdGliaWxpdHkgb2YgYQotICAgIHNwZWNpZmljIGZlYXR1cmUgaW4gdGhlIGZvcm1hdCAnZGVzY3JpcHRpb24gW2NvbXBhdGliaWxpdHldLiAgSWYKLSAgICB0aGUgZmVhdHVyZSBkb2Vzbid0IGRlZmluZSBhIGRlc2NyaXB0aW9uIG9yIGNvbXBhdGliaWxpdHksIGEKLSAgICBzdHJpbmcgd2l0aCBnZW5lcmljIHVua25vd24gdmFsdWVzIHdpbGwgYmUgcHJpbnRlZC4KLSIiIgotCi0KLXlvY3RvX2tlcm5lbF9mZWF0dXJlX2NyZWF0ZV91c2FnZSA9ICIiIgotCi0gQ3JlYXRlIGEgcmVjaXBlLXNwYWNlIGtlcm5lbCBmZWF0dXJlIGluIGEgQlNQCi0KLSB1c2FnZTogeW9jdG8ta2VybmVsIGZlYXR1cmUgY3JlYXRlIDxic3AtbmFtZT4gbmV3ZmVhdHVyZS5zY2MgXAotICAgICAgICAiRmVhdHVyZSBEZXNjcmlwdGlvbiIgY2FwYWJpbGl0aWVzIFs8Q09ORklHX1hYWD14PiAuLi5dIFs8UEFUQ0g+IC4uLl0KLQotIFRoaXMgY29tbWFuZCBjcmVhdGVzIGEgbmV3IGtlcm5lbCBmZWF0dXJlIGZyb20gdGhlIGJhcmUgY29uZmlnCi0gb3B0aW9ucyBhbmQgcGF0Y2hlcyBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQtbGluZS4KLSIiIgotCi0KLXlvY3RvX2tlcm5lbF9mZWF0dXJlX2NyZWF0ZV9oZWxwID0gIiIiCi0KLU5BTUUKLSAgICB5b2N0by1rZXJuZWwgZmVhdHVyZSBjcmVhdGUgLSBjcmVhdGUgYSByZWNpcGUtc3BhY2Uga2VybmVsIGZlYXR1cmUKLSAgICBpbiBhIEJTUAotCi1TWU5PUFNJUwotICAgIHlvY3RvLWtlcm5lbCBmZWF0dXJlIGNyZWF0ZSA8YnNwLW5hbWU+IG5ld2ZlYXR1cmUuc2NjIFwKLSAgICAgICAgIkZlYXR1cmUgRGVzY3JpcHRpb24iIGNhcGFiaWxpdGllcyBbPENPTkZJR19YWFg9eD4gLi4uXSBbPFBBVENIPiAuLi5dCi0KLURFU0NSSVBUSU9OCi0gICAgVGhpcyBjb21tYW5kIGNyZWF0ZXMgYSBuZXcga2VybmVsIGZlYXR1cmUgZnJvbSB0aGUgYmFyZSBjb25maWcKLSAgICBvcHRpb25zIGFuZCBwYXRjaGVzIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZC1saW5lLiAgVGhlIG5ldwotICAgIGZlYXR1cmUgd2lsbCBiZSBjcmVhdGVkIGluIHJlY2lwZS1zcGFjZSwgc3BlY2lmaWNhbGx5IGluIGVpdGhlcgotICAgIHRoZSBrZXJuZWwgLmJiYXBwZW5kJ3MgL2ZpbGVzL2NmZyBvciAvZmlsZXMvZmVhdHVyZXMgc3ViZGlyZWN0b3J5LAotICAgIGRlcGVuZGluZyBvbiB3aGV0aGVyIG9yIG5vdCB0aGUgZmVhdHVyZSBjb250YWlucyBjb25maWcgaXRlbXMgb25seQotICAgIG9yIGNvbmZpZyBpdGVtcyBhbG9uZyB3aXRoIHBhdGNoZXMuICBUaGUgbmFtZWQgZmVhdHVyZSBtdXN0IGVuZAotICAgIHdpdGggLnNjYyBhbmQgbXVzdCBub3QgY29udGFpbiBhIGZlYXR1cmUgZGlyZWN0b3J5IHRvIGNvbnRhaW4gdGhlCi0gICAgZmVhdHVyZSAodGhpcyB3aWxsIGJlIGRldGVybWluZWQgYXV0b21hdGljYWxseSksIGFuZCBhIGZlYXR1cmUKLSAgICBkZXNjcmlwdGlvbiBpbiBkb3VibGUtcXVvdGVzIGFsb25nIHdpdGggYSBjYXBhYmlsaXRpZXMgc3RyaW5nCi0gICAgKHdoaWNoIGZvciB0aGUgdGltZSBiZWluZyBjYW4gYmUgb25lIG9mOiAnYWxsJyBvciAnYm9hcmQnKS4KLSIiIgotCi0KLXlvY3RvX2tlcm5lbF9mZWF0dXJlX2Rlc3Ryb3lfdXNhZ2UgPSAiIiIKLQotIERlc3Ryb3kgYSByZWNpcGUtc3BhY2Uga2VybmVsIGZlYXR1cmUgaW4gYSBCU1AKLQotIHVzYWdlOiB5b2N0by1rZXJuZWwgZmVhdHVyZSBkZXN0cm95IDxic3AtbmFtZT4gZmVhdHVyZS5zY2MKLQotIFRoaXMgY29tbWFuZCBkZXN0cm95cyBhIGtlcm5lbCBmZWF0dXJlIGRlZmluZWQgaW4gdGhlIHNwZWNpZmllZCBCU1AncwotIHJlY2lwZS1zcGFjZSBrZXJuZWwgZGVmaW5pdGlvbi4KLSIiIgotCi0KLXlvY3RvX2tlcm5lbF9mZWF0dXJlX2Rlc3Ryb3lfaGVscCA9ICIiIgotCi1OQU1FCi0gICAgeW9jdG8ta2VybmVsIGZlYXR1cmUgZGVzdHJveSA8YnNwLW5hbWU+IGZlYXR1cmUuc2NjIC0gZGVzdHJveSBhCi0gICAgcmVjaXBlLXNwYWNlIGtlcm5lbCBmZWF0dXJlIGluIGEgQlNQCi0KLVNZTk9QU0lTCi0gICAgeW9jdG8ta2VybmVsIGZlYXR1cmUgZGVzdHJveSA8YnNwLW5hbWU+IGZlYXR1cmUuc2NjCi0KLURFU0NSSVBUSU9OCi0gICAgVGhpcyBjb21tYW5kIGRlc3Ryb3lzIGEga2VybmVsIGZlYXR1cmUgZGVmaW5lZCBpbiB0aGUgc3BlY2lmaWVkCi0gICAgQlNQJ3MgcmVjaXBlLXNwYWNlIGtlcm5lbCBkZWZpbml0aW9uLiAgVGhlIG5hbWVkIGZlYXR1cmUgbXVzdCBlbmQKLSAgICB3aXRoIC5zY2MgYW5kIG11c3Qgbm90IGNvbnRhaW4gYSBmZWF0dXJlIGRpcmVjdG9yeSB0byBjb250YWluIHRoZQotICAgIGZlYXR1cmUgKHRoaXMgd2lsbCBiZSBkZXRlcm1pbmVkIGF1dG9tYXRpY2FsbHkpLiAgSWYgdGhlIGtlcm5lbAotICAgIGZlYXR1cmUgaXMgaW4gdXNlIGJ5IGEgQlNQLCBpdCBjYW4ndCBiZSByZW1vdmVkIHVudGlsIHRoZSBCU1AKLSAgICBzdG9wcyB1c2luZyBpdCAoc2VlIHlvY3RvLWtlcm5lbCBmZWF0dXJlIHJtIHRvIHN0b3AgdXNpbmcgaXQpLgotIiIiCi0KLSMjCi0jIHlvY3RvLWxheWVyIGhlbHAgYW5kIHVzYWdlIHN0cmluZ3MKLSMjCi0KLXlvY3RvX2xheWVyX3VzYWdlID0gIiIiCi0KLSBDcmVhdGUgYSBnZW5lcmljIFlvY3RvIGxheWVyLgotCi0gdXNhZ2U6IHlvY3RvLWxheWVyIFstLXZlcnNpb25dIFstLWhlbHBdIENPTU1BTkQgW0FSR1NdCi0KLSBDdXJyZW50ICd5b2N0by1sYXllcicgY29tbWFuZHMgYXJlOgotICAgIGNyZWF0ZSAgICAgICAgICAgIENyZWF0ZSBhIG5ldyBnZW5lcmljIFlvY3RvIGxheWVyCi0gICAgbGlzdCAgICAgICAgICAgICAgTGlzdCBhdmFpbGFibGUgdmFsdWVzIGZvciBpbnB1dCBvcHRpb25zIGFuZCBwcm9wZXJ0aWVzCi0KLSBTZWUgJ3lvY3RvLWxheWVyIGhlbHAgQ09NTUFORCcgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gYSBzcGVjaWZpYyBjb21tYW5kLgotIiIiCi0KLXlvY3RvX2xheWVyX2hlbHBfdXNhZ2UgPSAiIiIKLQotIHVzYWdlOiB5b2N0by1sYXllciBoZWxwIDxzdWJjb21tYW5kPgotCi0gVGhpcyBjb21tYW5kIGRpc3BsYXlzIGRldGFpbGVkIGhlbHAgZm9yIHRoZSBzcGVjaWZpZWQgc3ViY29tbWFuZC4KLSIiIgotCi15b2N0b19sYXllcl9jcmVhdGVfdXNhZ2UgPSAiIiIKLQotIFdBUk5JTkc6IHRoaXMgcGx1Z2luIHdpbGwgYmUgcmVtb3ZlZCBzdGFydGluZyAyLjUgZGV2ZWxvcG1lbnQgaW4gZmF2b3VyCi0gb2YgdXNpbmcgJ2JpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllcicgc2NyaXB0L3BsdWdpbiwgb2ZmZXJpbmcgYSBzaW5nbGUKLSBzY3JpcHQgdG8gbWFuYWdlIGxheWVycy4KLQotIENyZWF0ZSBhIG5ldyBnZW5lcmljIFlvY3RvIGxheWVyCi0KLSB1c2FnZTogeW9jdG8tbGF5ZXIgY3JlYXRlIDxsYXllci1uYW1lPiBbbGF5ZXJfcHJpb3JpdHldCi0gICAgICAgICAgICBbLW8gPERJUk5BTUU+IHwgLS1vdXRkaXIgPERJUk5BTUU+XQotICAgICAgICAgICAgWy1pIDxKU09OIFBST1BFUlRZIEZJTEU+IHwgLS1pbmZpbGUgPEpTT04gUFJPUEVSVFlfRklMRT5dCi0KLSBUaGlzIGNvbW1hbmQgY3JlYXRlcyBhIGdlbmVyaWMgWW9jdG8gbGF5ZXIgYmFzZWQgb24gdGhlIHNwZWNpZmllZAotIHBhcmFtZXRlcnMuICBUaGUgbmV3IGxheWVyIHdpbGwgYmUgYSBuZXcgWW9jdG8gbGF5ZXIgY29udGFpbmVkIGJ5Ci0gZGVmYXVsdCB3aXRoaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnkgc3BlY2lmaWVkIGFzCi0gJ21ldGEtbGF5ZXItbmFtZScuICBUaGUgLW8gb3B0aW9uIGNhbiBiZSB1c2VkIHRvIHBsYWNlIHRoZSBsYXllciBpbiBhCi0gZGlyZWN0b3J5IHdpdGggYSBkaWZmZXJlbnQgbmFtZSBhbmQgbG9jYXRpb24uCi0KLSBJZiBsYXllcl9wcmlvcml0eSBpcyBzcGVjaWZpZWQsIGEgc2ltcGxlIGxheWVyIHdpbGwgYmUgY3JlYXRlZCB1c2luZwotIHRoZSBnaXZlbiBsYXllciBwcmlvcml0eSwgYW5kIHRoZSB1c2VyIHdpbGwgbm90IGJlIHByb21wdGVkIGZvcgotIGZ1cnRoZXIgaW5wdXQuCi0KLSBOT1RFOiBPbmNlIGNyZWF0ZWQsIHlvdSBzaG91bGQgYWRkIHlvdXIgbmV3IGxheWVyIHRvIHlvdXIKLSBiYmxheWVycy5jb25mIGZpbGUgaW4gb3JkZXIgZm9yIGl0IHRvIGJlIHN1YnNlcXVlbnRseSBzZWVuIGFuZAotIG1vZGlmaWVkIGJ5IHRoZSB5b2N0by1rZXJuZWwgdG9vbC4gIEluc3RydWN0aW9ucyBmb3IgZG9pbmcgdGhpcyBjYW4KLSBiZSBmb3VuZCBpbiB0aGUgUkVBRE1FIGZpbGUgZ2VuZXJhdGVkIGluIHRoZSBsYXllcidzIHRvcC1sZXZlbAotIGRpcmVjdG9yeS4KLQotIFNlZSAneW9jdG8gbGF5ZXIgaGVscCBjcmVhdGUnIGZvciBtb3JlIGRldGFpbGVkIGluc3RydWN0aW9ucy4KLSIiIgotCi15b2N0b19sYXllcl9jcmVhdGVfaGVscCA9ICIiIgotCi1XQVJOSU5HOiB0aGlzIHBsdWdpbiB3aWxsIGJlIHJlbW92ZWQgc3RhcnRpbmcgMi41IGRldmVsb3BtZW50IGluIGZhdm91cgotb2YgdXNpbmcgJ2JpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllcicgc2NyaXB0L3BsdWdpbiwgb2ZmZXJpbmcgYSBzaW5nbGUKLXNjcmlwdCB0byBtYW5hZ2UgbGF5ZXJzLgotCi1OQU1FCi0gICAgeW9jdG8tbGF5ZXIgY3JlYXRlIC0gQ3JlYXRlIGEgbmV3IGdlbmVyaWMgWW9jdG8gbGF5ZXIKLQotU1lOT1BTSVMKLSAgICB5b2N0by1sYXllciBjcmVhdGUgPGxheWVyLW5hbWU+IFtsYXllcl9wcmlvcml0eV0KLSAgICAgICAgWy1vIDxESVJOQU1FPiB8IC0tb3V0ZGlyIDxESVJOQU1FPl0KLSAgICAgICAgWy1pIDxKU09OIFBST1BFUlRZIEZJTEU+IHwgLS1pbmZpbGUgPEpTT04gUFJPUEVSVFlfRklMRT5dCi0KLURFU0NSSVBUSU9OCi0gICAgVGhpcyBjb21tYW5kIGNyZWF0ZXMgYSBnZW5lcmljIFlvY3RvIGxheWVyIGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQKLSAgICBwYXJhbWV0ZXJzLiAgVGhlIG5ldyBsYXllciB3aWxsIGJlIGEgbmV3IFlvY3RvIGxheWVyIGNvbnRhaW5lZCBieQotICAgIGRlZmF1bHQgd2l0aGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5IHNwZWNpZmllZCBhcwotICAgICdtZXRhLWxheWVyLW5hbWUnLiAgVGhlIC1vIG9wdGlvbiBjYW4gYmUgdXNlZCB0byBwbGFjZSB0aGUgbGF5ZXIKLSAgICBpbiBhIGRpcmVjdG9yeSB3aXRoIGEgZGlmZmVyZW50IG5hbWUgYW5kIGxvY2F0aW9uLgotCi0gICAgSWYgbGF5ZXJfcHJpb3JpdHkgaXMgc3BlY2lmaWVkLCBhIHNpbXBsZSBsYXllciB3aWxsIGJlIGNyZWF0ZWQKLSAgICB1c2luZyB0aGUgZ2l2ZW4gbGF5ZXIgcHJpb3JpdHksIGFuZCB0aGUgdXNlciB3aWxsIG5vdCBiZSBwcm9tcHRlZAotICAgIGZvciBmdXJ0aGVyIGlucHV0LgotCi0gICAgVGhlIGxheWVyLXNwZWNpZmljIHByb3BlcnRpZXMgdGhhdCBkZWZpbmUgdGhlIHZhbHVlcyB0aGF0IHdpbGwgYmUKLSAgICB1c2VkIHRvIGdlbmVyYXRlIHRoZSBsYXllciBjYW4gYmUgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kLWxpbmUKLSAgICB1c2luZyB0aGUgLWkgb3B0aW9uIGFuZCBzdXBwbHlpbmcgYSBKU09OIG9iamVjdCBjb25zaXN0aW5nIG9mIHRoZQotICAgIHNldCBvZiBuYW1lOnZhbHVlIHBhaXJzIG5lZWRlZCBieSB0aGUgbGF5ZXIuCi0KLSAgICBJZiB0aGUgLWkgb3B0aW9uIGlzIG5vdCB1c2VkLCB0aGUgdXNlciB3aWxsIGJlIGludGVyYWN0aXZlbHkKLSAgICBwcm9tcHRlZCBmb3IgZWFjaCBvZiB0aGUgcmVxdWlyZWQgcHJvcGVydHkgdmFsdWVzLCB3aGljaCB3aWxsIHRoZW4KLSAgICBiZSB1c2VkIGFzIHZhbHVlcyBmb3IgbGF5ZXIgZ2VuZXJhdGlvbi4KLQotICAgIFRoZSBzZXQgb2YgcHJvcGVydGllcyBhdmFpbGFibGUgY2FuIGJlIGxpc3RlZCB1c2luZyB0aGUKLSAgICAneW9jdG8tbGF5ZXIgbGlzdCcgY29tbWFuZC4KLQotICAgIFNwZWNpZnlpbmcgLWMgY2F1c2VzIHRoZSBQeXRob24gY29kZSBnZW5lcmF0ZWQgYW5kIGV4ZWN1dGVkIHRvCi0gICAgY3JlYXRlIHRoZSBsYXllciB0byBiZSBkdW1wZWQgdG8gdGhlICdic3BnZW4ub3V0JyBmaWxlIGluIHRoZQotICAgIGN1cnJlbnQgZGlyZWN0b3J5LCBhbmQgaXMgdXNlZnVsIGZvciBkZWJ1Z2dpbmcuCi0KLSAgICBOT1RFOiBPbmNlIGNyZWF0ZWQsIHlvdSBzaG91bGQgYWRkIHlvdXIgbmV3IGxheWVyIHRvIHlvdXIKLSAgICBiYmxheWVycy5jb25mIGZpbGUgaW4gb3JkZXIgZm9yIGl0IHRvIGJlIHN1YnNlcXVlbnRseSBzZWVuIGFuZAotICAgIG1vZGlmaWVkIGJ5IHRoZSB5b2N0by1rZXJuZWwgdG9vbC4gIEluc3RydWN0aW9ucyBmb3IgZG9pbmcgdGhpcwotICAgIGNhbiBiZSBmb3VuZCBpbiB0aGUgUkVBRE1FIGZpbGUgZ2VuZXJhdGVkIGluIHRoZSBsYXllcidzIHRvcC1sZXZlbAotICAgIGRpcmVjdG9yeS4KLQotICAgIEZvciBleGFtcGxlLCBhc3N1bWluZyB5b3VyIHBva3kgcmVwbyBpcyBhdCAvcGF0aC90by9wb2t5LCB5b3VyIG5ldwotICAgIGxheWVyIGlzIGF0IC9wYXRoL3RvL3Bva3kvbWV0YS1teWxheWVyLCBhbmQgeW91ciBidWlsZCBkaXJlY3RvcnkKLSAgICBpcyAvcGF0aC90by9idWlsZDoKLQotICAgICQgZ2VkaXQgL3BhdGgvdG8vYnVpbGQvY29uZi9iYmxheWVycy5jb25mCi0KLSAgICBCQkxBWUVSUyA/PSAiIFxcCi0gICAgICAvcGF0aC90by9wb2t5L21ldGEgXFwKLSAgICAgIC9wYXRoL3RvL3Bva3kvbWV0YS15b2N0byBcXAotICAgICAgL3BhdGgvdG8vcG9reS9tZXRhLW15bGF5ZXIgXFwKLSAgICAgICIKLSIiIgotCi15b2N0b19sYXllcl9saXN0X3VzYWdlID0gIiIiCi0KLSB1c2FnZTogeW9jdG8tbGF5ZXIgbGlzdCBwcm9wZXJ0aWVzCi0gICAgICAgICAgICAgICAgWy1vIDxKU09OIFBST1BFUlRZIEZJTEU+IHwgLS1vdXRmaWxlIDxKU09OIFBST1BFUlRZX0ZJTEU+XQotICAgICAgICB5b2N0by1sYXllciBsaXN0IHByb3BlcnR5IDx4eHg+Ci0gICAgICAgICAgICAgICAgWy1vIDxKU09OIFBST1BFUlRZIEZJTEU+IHwgLS1vdXRmaWxlIDxKU09OIFBST1BFUlRZX0ZJTEU+XQotCi0gVGhpcyBjb21tYW5kIGVudW1lcmF0ZXMgdGhlIGNvbXBsZXRlIHNldCBvZiBwb3NzaWJsZSB2YWx1ZXMgZm9yIGEKLSBzcGVjaWZpZWQgb3B0aW9uIG9yIHByb3BlcnR5IG5lZWRlZCBieSB0aGUgbGF5ZXIgY3JlYXRpb24gcHJvY2Vzcy4KLQotIFRoZSBmaXJzdCBmb3JtIGVudW1lcmF0ZXMgYWxsIHRoZSBwb3NzaWJsZSBwcm9wZXJ0aWVzIHRoYXQgZXhpc3QgYW5kCi0gbXVzdCBoYXZlIHZhbHVlcyBzcGVjaWZpZWQgZm9yIHRoZW0gaW4gdGhlICd5b2N0by1sYXllciBjcmVhdGUnCi0gY29tbWFuZC4KLQotIFRoZSBzZWNvbmQgZm9ybSBlbnVtZXJhdGVzIGFsbCB0aGUgcG9zc2libGUgdmFsdWVzIHRoYXQgZXhpc3QgYW5kIGNhbgotIGJlIHNwZWNpZmllZCBmb3IgYW55IG9mIHRoZSBlbnVtZXJhYmxlIHByb3BlcnRpZXMgaW4gdGhlICd5b2N0by1sYXllcgotIGNyZWF0ZScgY29tbWFuZC4KLQotIFNlZSAneW9jdG8tbGF5ZXIgaGVscCBsaXN0JyBmb3IgbW9yZSBkZXRhaWxzLgotIiIiCi0KLXlvY3RvX2xheWVyX2xpc3RfaGVscCA9ICIiIgotCi1OQU1FCi0gICAgeW9jdG8tbGF5ZXIgbGlzdCAtIExpc3QgYXZhaWxhYmxlIHZhbHVlcyBmb3IgbGF5ZXIgaW5wdXQgb3B0aW9ucyBhbmQgcHJvcGVydGllcwotCi1TWU5PUFNJUwotICAgIHlvY3RvLWxheWVyIGxpc3QgcHJvcGVydGllcwotICAgICAgICAgICAgWy0tbyA8SlNPTiBQUk9QRVJUWSBGSUxFPiB8IC1vdXRmaWxlIDxKU09OIFBST1BFUlRZX0ZJTEU+XQotICAgIHlvY3RvLWxheWVyIGxpc3QgcHJvcGVydHkgPHh4eD4KLSAgICAgICAgICAgIFstLW8gPEpTT04gUFJPUEVSVFkgRklMRT4gfCAtb3V0ZmlsZSA8SlNPTiBQUk9QRVJUWV9GSUxFPl0KLQotREVTQ1JJUFRJT04KLSAgICBUaGlzIGNvbW1hbmQgZW51bWVyYXRlcyB0aGUgY29tcGxldGUgc2V0IG9mIHBvc3NpYmxlIHZhbHVlcyBmb3IgYQotICAgIHNwZWNpZmllZCBvcHRpb24gb3IgcHJvcGVydHkgbmVlZGVkIGJ5IHRoZSBsYXllciBjcmVhdGlvbiBwcm9jZXNzLgotCi0gICAgVGhlIGZpcnN0IGZvcm0gZW51bWVyYXRlcyBhbGwgdGhlIHBvc3NpYmxlIHByb3BlcnRpZXMgdGhhdCBleGlzdAotICAgIGFuZCBtdXN0IGhhdmUgdmFsdWVzIHNwZWNpZmllZCBmb3IgdGhlbSBpbiB0aGUgJ3lvY3RvLWxheWVyCi0gICAgY3JlYXRlJyBjb21tYW5kLiAgVGhpcyBjb21tYW5kIGlzIG1haW5seSBtZWFudCB0byBhaWQgdGhlCi0gICAgZGV2ZWxvcG1lbnQgb2YgdXNlciBpbnRlcmZhY2UgYWx0ZXJuYXRpdmVzIHRvIHRoZSBkZWZhdWx0Ci0gICAgdGV4dC1iYXNlZCBwcm9tcHRpbmcgaW50ZXJmYWNlLiAgSWYgdGhlIC1vIG9wdGlvbiBpcyBzcGVjaWZpZWQsCi0gICAgdGhlIGxpc3Qgb2YgcHJvcGVydGllcywgaW4gYWRkaXRpb24gdG8gYmVpbmcgZGlzcGxheWVkLCB3aWxsIGJlCi0gICAgd3JpdHRlbiB0byB0aGUgc3BlY2lmaWVkIGZpbGUgYXMgYSBKU09OIG9iamVjdC4gIEluIHRoaXMgY2FzZSwgdGhlCi0gICAgb2JqZWN0IHdpbGwgY29uc2lzdCBvZiB0aGUgc2V0IG9mIG5hbWU6dmFsdWUgcGFpcnMgY29ycmVzcG9uZGluZwotICAgIHRvIHRoZSAocG9zc2libHkgbmVzdGVkKSBkaWN0aW9uYXJ5IG9mIHByb3BlcnRpZXMgZGVmaW5lZCBieSB0aGUKLSAgICBpbnB1dCBzdGF0ZW1lbnRzIHVzZWQgYnkgdGhlIEJTUC4gIFNvbWUgZXhhbXBsZSBvdXRwdXQgZm9yIHRoZQotICAgICdsaXN0IHByb3BlcnRpZXMnIGNvbW1hbmQ6Ci0KLSAgICAkIHlvY3RvLWxheWVyIGxpc3QgcHJvcGVydGllcwotICAgICJleGFtcGxlX2JiYXBwZW5kX25hbWUiIDogewotICAgICAgICAiZGVmYXVsdCIgOiBleGFtcGxlCi0gICAgICAgICJtc2ciIDogUGxlYXNlIGVudGVyIHRoZSBuYW1lIHlvdSdkIGxpa2UgdG8gdXNlIGZvciB5b3VyIGJiYXBwZW5kIGZpbGU6Ci0gICAgICAgICJ0eXBlIiA6IGVkaXQKLSAgICAgICAgInByaW8iIDogMjAKLSAgICAgICAgImZpbGVuYW1lIiA6IC9ob21lL3Ryei95b2N0by95b2N0by1sYXllci1kZXYvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9sYXllci1xdWVzdGlvbnMubm9pbnN0YWxsCi0gICAgfQotICAgICJjcmVhdGVfZXhhbXBsZV9yZWNpcGUiIDogewotICAgICAgICAiZGVmYXVsdCIgOiBuCi0gICAgICAgICJtc2ciIDogV291bGQgeW91IGxpa2UgdG8gaGF2ZSBhbiBleGFtcGxlIHJlY2lwZSBjcmVhdGVkPyAoeS9uKQotICAgICAgICAidHlwZSIgOiBib29sZWFuCi0gICAgICAgICJwcmlvIiA6IDIwCi0gICAgICAgICJmaWxlbmFtZSIgOiAvaG9tZS90cnoveW9jdG8veW9jdG8tbGF5ZXItZGV2L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvbGF5ZXItcXVlc3Rpb25zLm5vaW5zdGFsbAotICAgIH0KLSAgICAiZXhhbXBsZV9yZWNpcGVfbmFtZSIgOiB7Ci0gICAgICAgICJkZWZhdWx0IiA6IGV4YW1wbGUKLSAgICAgICAgIm1zZyIgOiBQbGVhc2UgZW50ZXIgdGhlIG5hbWUgeW91J2QgbGlrZSB0byB1c2UgZm9yIHlvdXIgZXhhbXBsZSByZWNpcGU6Ci0gICAgICAgICJ0eXBlIiA6IGVkaXQKLSAgICAgICAgInByaW8iIDogMjAKLSAgICAgICAgImZpbGVuYW1lIiA6IC9ob21lL3Ryei95b2N0by95b2N0by1sYXllci1kZXYvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9sYXllci1xdWVzdGlvbnMubm9pbnN0YWxsCi0gICAgfQotICAgICJsYXllcl9wcmlvcml0eSIgOiB7Ci0gICAgICAgICJkZWZhdWx0IiA6IDYKLSAgICAgICAgIm1zZyIgOiBQbGVhc2UgZW50ZXIgdGhlIGxheWVyIHByaW9yaXR5IHlvdSdkIGxpa2UgdG8gdXNlIGZvciB0aGUgbGF5ZXI6Ci0gICAgICAgICJ0eXBlIiA6IGVkaXQKLSAgICAgICAgInByaW8iIDogMjAKLSAgICAgICAgImZpbGVuYW1lIiA6IC9ob21lL3Ryei95b2N0by95b2N0by1sYXllci1kZXYvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9sYXllci1xdWVzdGlvbnMubm9pbnN0YWxsCi0gICAgfQotICAgICJjcmVhdGVfZXhhbXBsZV9iYmFwcGVuZCIgOiB7Ci0gICAgICAgICJkZWZhdWx0IiA6IG4KLSAgICAgICAgIm1zZyIgOiBXb3VsZCB5b3UgbGlrZSB0byBoYXZlIGFuIGV4YW1wbGUgYmJhcHBlbmQgZmlsZSBjcmVhdGVkPyAoeS9uKQotICAgICAgICAidHlwZSIgOiBib29sZWFuCi0gICAgICAgICJwcmlvIiA6IDIwCi0gICAgICAgICJmaWxlbmFtZSIgOiAvaG9tZS90cnoveW9jdG8veW9jdG8tbGF5ZXItZGV2L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvbGF5ZXItcXVlc3Rpb25zLm5vaW5zdGFsbAotICAgIH0KLSAgICAiZXhhbXBsZV9iYmFwcGVuZF92ZXJzaW9uIiA6IHsKLSAgICAgICAgImRlZmF1bHQiIDogMC4xCi0gICAgICAgICJtc2ciIDogUGxlYXNlIGVudGVyIHRoZSB2ZXJzaW9uIG51bWJlciB5b3UnZCBsaWtlIHRvIHVzZSBmb3IgeW91ciBiYmFwcGVuZCBmaWxlICh0aGlzIHNob3VsZCBtYXRjaCB0aGUgcmVjaXBlIHlvdSdyZSBhcHBlbmRpbmcgdG8pOgotICAgICAgICAidHlwZSIgOiBlZGl0Ci0gICAgICAgICJwcmlvIiA6IDIwCi0gICAgICAgICJmaWxlbmFtZSIgOiAvaG9tZS90cnoveW9jdG8veW9jdG8tbGF5ZXItZGV2L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvbGF5ZXItcXVlc3Rpb25zLm5vaW5zdGFsbAotICAgIH0KLQotICAgIEVhY2ggZW50cnkgaW4gdGhlIG91dHB1dCBjb25zaXN0cyBvZiB0aGUgbmFtZSBvZiB0aGUgaW5wdXQgZWxlbWVudAotICAgIGUuZy4gImxheWVyX3ByaW9yaXR5IiwgZm9sbG93ZWQgYnkgdGhlIHByb3BlcnRpZXMgZGVmaW5lZCBmb3IgdGhhdAotICAgIGVsZW1lbnQgZW5jbG9zZWQgaW4gYnJhY2VzLiAgVGhpcyBpbmZvcm1hdGlvbiBzaG91bGQgcHJvdmlkZQotICAgIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24gdG8gY3JlYXRlIGEgY29tcGxldGUgdXNlciBpbnRlcmZhY2UuICBUd28KLSAgICBmZWF0dXJlcyBvZiB0aGUgc2NoZW1lIHByb3ZpZGUgZm9yIGNvbmRpdGlvbmFsIGlucHV0LiAgRmlyc3QsIGlmIGEKLSAgICBQeXRob24gImlmIiBzdGF0ZW1lbnQgYXBwZWFycyBpbiBwbGFjZSBvZiBhbiBpbnB1dCBlbGVtZW50IG5hbWUsCi0gICAgdGhlIHNldCBvZiBlbmNsb3NlZCBpbnB1dCBlbGVtZW50cyBhcHBseSBhbmQgc2hvdWxkIGJlIHByZXNlbnRlZAotICAgIHRvIHRoZSB1c2VyIG9ubHkgaWYgdGhlICdpZicgc3RhdGVtZW50IGV2YWx1YXRlcyB0byB0cnVlLiAgVGhlCi0gICAgdGVzdCBpbiB0aGUgaWYgc3RhdGVtZW50IHdpbGwgYWx3YXlzIHJlZmVyZW5jZSBhbm90aGVyIGlucHV0Ci0gICAgZWxlbWVudCBpbiB0aGUgbGlzdCwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgZWxlbWVudCBiZWluZyB0ZXN0ZWQKLSAgICBzaG91bGQgYmUgcHJlc2VudGVkIHRvIHRoZSB1c2VyIGJlZm9yZSB0aGUgZWxlbWVudHMgZW5jbG9zZWQgYnkKLSAgICB0aGUgaWYgYmxvY2suICBTZWNvbmRseSwgaW4gYSBzaW1pbGFyIHdheSwgc29tZSBlbGVtZW50cyBjb250YWluCi0gICAgImRlcGVuZHMtb24iIGFuZCBkZXBlbmRzLW9uLXZhbCIgdGFncywgd2hpY2ggbWVhbiB0aGF0IHRoZQotICAgIGFmZmVjdGVkIGlucHV0IGVsZW1lbnQgc2hvdWxkIG9ubHkgYmUgcHJlc2VudGVkIHRvIHRoZSB1c2VyIGlmIHRoZQotICAgIGVsZW1lbnQgaXQgZGVwZW5kcyBvbiBoYXMgYWxyZWFkeSBiZWVuIHByZXNlbnRlZCB0byB0aGUgdXNlciBhbmQKLSAgICB0aGUgdXNlciBoYXMgc2VsZWN0ZWQgdGhlIHNwZWNpZmllZCB2YWx1ZSBmb3IgdGhhdCBlbGVtZW50LgotCi0gICAgVGhlIHNlY29uZCBmb3JtIGVudW1lcmF0ZXMgYWxsIHRoZSBwb3NzaWJsZSB2YWx1ZXMgdGhhdCBleGlzdCBhbmQKLSAgICBjYW4gYmUgc3BlY2lmaWVkIGZvciBhbnkgb2YgdGhlIGVudW1lcmFibGUgcHJvcGVydGllcyBpbiB0aGUKLSAgICAneW9jdG8tbGF5ZXIgY3JlYXRlJyBjb21tYW5kLiAgSWYgdGhlIC1vIG9wdGlvbiBpcyBzcGVjaWZpZWQsIHRoZQotICAgIGxpc3Qgb2YgdmFsdWVzIGZvciB0aGUgZ2l2ZW4gcHJvcGVydHksIGluIGFkZGl0aW9uIHRvIGJlaW5nCi0gICAgZGlzcGxheWVkLCB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhlIHNwZWNpZmllZCBmaWxlIGFzIGEgSlNPTiBvYmplY3QuCi0gICAgSW4gdGhpcyBjYXNlLCB0aGUgb2JqZWN0IHdpbGwgY29uc2lzdCBvZiB0aGUgc2V0IG9mIG5hbWU6dmFsdWUKLSAgICBwYWlycyBjb3JyZXNwb25kaW5nIHRvIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSB2YWx1ZXMgYXNzb2NpYXRlZAotICAgIHdpdGggdGhlIHByb3BlcnR5LgotCi0gICAgJCB5b2N0by1sYXllciBsaXN0IHByb3BlcnR5IGxheWVyX3ByaW9yaXR5Ci0gICAgIFtubyBvdXRwdXQgLSBsYXllcl9wcmlvcml0eSBpcyBhIHRleHQgZmllbGQgdGhhdCBoYXMgbm8gZW51bWVyYWJsZSB2YWx1ZXNdCi0KLSAgICBUaGUgc2Vjb25kIGZvcm0gYXMgd2VsbCBpcyBtZWFudCBtYWlubHkgZm9yIGRldmVsb3BlcnMgb2YKLSAgICBhbHRlcm5hdGl2ZSBpbnRlcmZhY2VzIC0gaXQgYWxsb3dzIHRoZSBkZXZlbG9wZXIgdG8gZmV0Y2ggdGhlCi0gICAgcG9zc2libGUgdmFsdWVzIGZvciBhIGdpdmVuIGlucHV0IGVsZW1lbnQgb24tZGVtYW5kLiAgVGhpcwotICAgIG9uLWRlbWFuZCBjYXBhYmlsaXR5IGlzIGVzcGVjaWFsbHkgdmFsdWFibGUgZm9yIGVsZW1lbnRzIHRoYXQKLSAgICByZXF1aXJlIHJlbGF0aXZlbHkgZXhwZW5zaXZlIHJlbW90ZSBvcGVyYXRpb25zIHRvIGZ1bGZpbGwsIHN1Y2ggYXMKLSAgICB0aGUgZXhhbXBsZSB0aGF0IHJldHVybnMgdGhlIHNldCBvZiBicmFuY2hlcyBhdmFpbGFibGUgaW4gYSByZW1vdGUKLSAgICBnaXQgdHJlZSBhYm92ZS4KLQotIiIiCi0KLSMjCi0jIHRlc3QgY29kZQotIyMKLQotdGVzdF9ic3BfcHJvcGVydGllcyA9IHsKLSAgICAnc21wJzogJ3llcycsCi0gICAgJ3RvdWNoc2NyZWVuJzogJ3llcycsCi0gICAgJ2tleWJvYXJkJzogJ25vJywKLSAgICAneHNlcnZlcic6ICd5ZXMnLAotICAgICd4c2VydmVyX2Nob2ljZSc6ICd4c2VydmVyLWk5MTUnLAotICAgICdmZWF0dXJlcyc6IFsnZ29vZGZlYXR1cmUnLCAnZ3JlYXRmZWF0dXJlJ10sCi0gICAgJ3R1bmVmaWxlJzogJ3R1bmUtcXVhcmsnLAotfQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL2tlcm5lbC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Ava2VybmVsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2VlMzI1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Ava2VybmVsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTA2OSArMCwwIEBACi0jIGV4OnRzPTQ6c3c9NDpzdHM9NDpldAotIyAtKi0gdGFiLXdpZHRoOiA0OyBjLWJhc2ljLW9mZnNldDogNDsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLQotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTIsIEludGVsIENvcnBvcmF0aW9uLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwotIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMKLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSMgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKLSMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KLSMKLSMgREVTQ1JJUFRJT04KLSMgVGhpcyBtb2R1bGUgaW1wbGVtZW50cyB0aGUga2VybmVsLXJlbGF0ZWQgZnVuY3Rpb25zIHVzZWQgYnkKLSMgJ3lvY3RvLWtlcm5lbCcgdG8gbWFuYWdlIGtlcm5lbCBjb25maWcgaXRlbXMgYW5kIHBhdGNoZXMgZm9yIFlvY3RvCi0jIEJTUHMuCi0jCi0jIEFVVEhPUlMKLSMgVG9tIFphbnVzc2kgPHRvbS56YW51c3NpIChhdF0gaW50ZWwuY29tPgotIwotCi1pbXBvcnQgc3lzCi1pbXBvcnQgb3MKLWltcG9ydCBzaHV0aWwKLWZyb20gLnRhZ3MgaW1wb3J0ICoKLWltcG9ydCBnbG9iCi1pbXBvcnQgc3VicHJvY2VzcwotZnJvbSAuZW5naW5lIGltcG9ydCBjcmVhdGVfY29udGV4dAotCi1kZWYgZmluZF9iYmxheWVycygpOgotICAgICIiIgotICAgIEZpbmQgYW5kIHJldHVybiBhIHNhbml0aXplZCBsaXN0IG9mIHRoZSBsYXllcnMgZm91bmQgaW4gQkJMQVlFUlMuCi0gICAgIiIiCi0gICAgdHJ5OgotICAgICAgICBidWlsZGRpciA9IG9zLmVudmlyb25bIkJVSUxERElSIl0KLSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIHByaW50KCJCVUlMRERJUiBub3QgZm91bmQsIGV4aXRpbmcuIChEaWQgeW91IGZvcmdldCB0byBzb3VyY2Ugb2UtaW5pdC1idWlsZC1lbnY/KSIpCi0gICAgICAgIHN5cy5leGl0KDEpCi0gICAgYmJsYXllcnNfY29uZiA9IG9zLnBhdGguam9pbihidWlsZGRpciwgImNvbmYvYmJsYXllcnMuY29uZiIpCi0KLSAgICBsYXllcnMgPSBbXQotCi0gICAgYml0YmFrZV9lbnZfY21kID0gImJpdGJha2UgLWUiCi0gICAgYml0YmFrZV9lbnZfbGluZXMgPSBzdWJwcm9jZXNzLlBvcGVuKGJpdGJha2VfZW52X2NtZCwgc2hlbGw9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuc3Rkb3V0LnJlYWQoKS5kZWNvZGUoJ3V0Zi04JykKLQotICAgIGlmIG5vdCBiaXRiYWtlX2Vudl9saW5lczoKLSAgICAgICAgcHJpbnQoIkNvdWxkbid0IGdldCAnJXMnIG91dHB1dCwgZXhpdGluZy4iICUgYml0YmFrZV9lbnZfY21kKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgZm9yIGxpbmUgaW4gYml0YmFrZV9lbnZfbGluZXMuc3BsaXQoJ1xuJyk6Ci0gICAgICAgIGJibGF5ZXJzID0gZ2V0X2xpbmVfdmFsKGxpbmUsICJCQkxBWUVSUyIpCi0gICAgICAgIGlmIChiYmxheWVycyk6Ci0gICAgICAgICAgICBicmVhawotCi0gICAgaWYgbm90IGJibGF5ZXJzOgotICAgICAgICBwcmludCgiQ291bGRuJ3QgZmluZCBCQkxBWUVSUyBpbiAlcyBvdXRwdXQsIGV4aXRpbmcuIiAlIGJpdGJha2VfZW52X2NtZCkKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIHJhd19sYXllcnMgPSBiYmxheWVycy5zcGxpdCgpCi0KLSAgICBmb3IgbGF5ZXIgaW4gcmF3X2xheWVyczoKLSAgICAgICAgaWYgbGF5ZXIgPT0gJ0JCTEFZRVJTJyBvciAnPScgaW4gbGF5ZXI6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBsYXllcnMuYXBwZW5kKGxheWVyKQotCi0gICAgcmV0dXJuIGxheWVycwotCi0KLWRlZiBnZXRfbGluZV92YWwobGluZSwga2V5KToKLSAgICAiIiIKLSAgICBFeHRyYWN0IHRoZSB2YWx1ZSBmcm9tIHRoZSBWQVI9InZhbCIgc3RyaW5nCi0gICAgIiIiCi0gICAgaWYgbGluZS5zdGFydHN3aXRoKGtleSArICI9Iik6Ci0gICAgICAgIHN0cmlwcGVkX2xpbmUgPSBsaW5lLnNwbGl0KCc9JylbMV0KLSAgICAgICAgc3RyaXBwZWRfbGluZSA9IHN0cmlwcGVkX2xpbmUucmVwbGFjZSgnXCInLCAnJykKLSAgICAgICAgcmV0dXJuIHN0cmlwcGVkX2xpbmUKLSAgICByZXR1cm4gTm9uZQotCi0KLWRlZiBmaW5kX21ldGFfbGF5ZXIoKToKLSAgICAiIiIKLSAgICBGaW5kIGFuZCByZXR1cm4gdGhlIG1ldGEgbGF5ZXIgaW4gQkJMQVlFUlMuCi0gICAgIiIiCi0gICAgbGF5ZXJzID0gZmluZF9iYmxheWVycygpCi0KLSAgICBmb3IgbGF5ZXIgaW4gbGF5ZXJzOgotICAgICAgICBpZiBsYXllci5lbmRzd2l0aCgibWV0YSIpOgotICAgICAgICAgICAgcmV0dXJuIGxheWVyCi0KLSAgICByZXR1cm4gTm9uZQotCi0KLWRlZiBmaW5kX2JzcF9sYXllcihtYWNoaW5lKToKLSAgICAiIiIKLSAgICBGaW5kIGFuZCByZXR1cm4gYSBtYWNoaW5lJ3MgQlNQIGxheWVyIGluIEJCTEFZRVJTLgotICAgICIiIgotICAgIGxheWVycyA9IGZpbmRfYmJsYXllcnMoKQotCi0gICAgZm9yIGxheWVyIGluIGxheWVyczoKLSAgICAgICAgaWYgbGF5ZXIuZW5kc3dpdGgobWFjaGluZSk6Ci0gICAgICAgICAgICByZXR1cm4gbGF5ZXIKLQotICAgIHByaW50KCJVbmFibGUgdG8gZmluZCB0aGUgQlNQIGxheWVyIGZvciBtYWNoaW5lICVzLiIgJSBtYWNoaW5lKQotICAgIHByaW50KCJQbGVhc2UgbWFrZSBzdXJlIGl0IGlzIGxpc3RlZCBpbiBiYmxheWVycy5jb25mIikKLSAgICBzeXMuZXhpdCgxKQotCi0KLWRlZiBnZW5fY2hvaWNlc19zdHIoY2hvaWNlcyk6Ci0gICAgIiIiCi0gICAgR2VuZXJhdGUgYSBudW1iZXJlZCBsaXN0IG9mIGNob2ljZXMgZnJvbSBhIGxpc3Qgb2YgY2hvaWNlcyBmb3IKLSAgICBkaXNwbGF5IHRvIHRoZSB1c2VyLgotICAgICIiIgotICAgIGNob2ljZXNfc3RyID0gIiIKLQotICAgIGZvciBpLCBjaG9pY2UgaW4gZW51bWVyYXRlKGNob2ljZXMpOgotICAgICAgICBjaG9pY2VzX3N0ciArPSAiXHQiICsgc3RyKGkgKyAxKSArICIpICIgKyBjaG9pY2UgKyAiXG4iCi0KLSAgICByZXR1cm4gY2hvaWNlc19zdHIKLQotCi1kZWYgb3Blbl91c2VyX2ZpbGUoc2NyaXB0c19wYXRoLCBtYWNoaW5lLCB1c2VyZmlsZSwgbW9kZSk6Ci0gICAgIiIiCi0gICAgRmluZCBvbmUgb2YgdGhlIHVzZXIgZmlsZXMgKHVzZXItY29uZmlnLmNmZywgdXNlci1wYXRjaGVzLnNjYykKLSAgICBhc3NvY2lhdGVkIHdpdGggdGhlIG1hY2hpbmUgKGNvdWxkIGJlIGluIGZpbGVzLywKLSAgICBsaW51eC15b2N0by1jdXN0b20vLCBldGMpLiAgUmV0dXJucyB0aGUgb3BlbiBmaWxlIGlmIGZvdW5kLCBOb25lCi0gICAgb3RoZXJ3aXNlLgotCi0gICAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgY2xvc2luZyB0aGUgZmlsZSByZXR1cm5lZC4KLSAgICAiIiIKLSAgICBsYXllciA9IGZpbmRfYnNwX2xheWVyKG1hY2hpbmUpCi0gICAgbGludXhkaXIgPSBvcy5wYXRoLmpvaW4obGF5ZXIsICJyZWNpcGVzLWtlcm5lbC9saW51eCIpCi0gICAgbGludXhkaXJfbGlzdCA9IG9zLmxpc3RkaXIobGludXhkaXIpCi0gICAgZm9yIGZpbGVvYmogaW4gbGludXhkaXJfbGlzdDoKLSAgICAgICAgZmlsZW9ial9wYXRoID0gb3MucGF0aC5qb2luKGxpbnV4ZGlyLCBmaWxlb2JqKQotICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGZpbGVvYmpfcGF0aCk6Ci0gICAgICAgICAgICB1c2VyZmlsZV9uYW1lID0gb3MucGF0aC5qb2luKGZpbGVvYmpfcGF0aCwgdXNlcmZpbGUpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZiA9IG9wZW4odXNlcmZpbGVfbmFtZSwgbW9kZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZgotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICByZXR1cm4gTm9uZQotCi0KLWRlZiByZWFkX2NvbmZpZ19pdGVtcyhzY3JpcHRzX3BhdGgsIG1hY2hpbmUpOgotICAgICIiIgotICAgIEZpbmQgYW5kIHJldHVybiBhIGxpc3Qgb2YgY29uZmlnIGl0ZW1zIChDT05GSUdfWFhYKSBpbiBhIG1hY2hpbmUncwotICAgIHVzZXItZGVmaW5lZCBjb25maWcgZnJhZ21lbnQgWyR7bWFjaGluZX0tdXNlci1jb25maWcuY2ZnXS4KLSAgICAiIiIKLSAgICBjb25maWdfaXRlbXMgPSBbXQotCi0gICAgZiA9IG9wZW5fdXNlcl9maWxlKHNjcmlwdHNfcGF0aCwgbWFjaGluZSwgbWFjaGluZSsiLXVzZXItY29uZmlnLmNmZyIsICJyIikKLSAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKLSAgICBmb3IgbGluZSBpbiBsaW5lczoKLSAgICAgICAgcyA9IGxpbmUuc3RyaXAoKQotICAgICAgICBpZiBzIGFuZCBub3Qgcy5zdGFydHN3aXRoKCIjIik6Ci0gICAgICAgICAgICBjb25maWdfaXRlbXMuYXBwZW5kKHMpCi0gICAgZi5jbG9zZSgpCi0KLSAgICByZXR1cm4gY29uZmlnX2l0ZW1zCi0KLQotZGVmIHdyaXRlX2NvbmZpZ19pdGVtcyhzY3JpcHRzX3BhdGgsIG1hY2hpbmUsIGNvbmZpZ19pdGVtcyk6Ci0gICAgIiIiCi0gICAgV3JpdGUgKHJlcGxhY2UpIHRoZSBsaXN0IG9mIGNvbmZpZyBpdGVtcyAoQ09ORklHX1hYWCkgaW4gYQotICAgIG1hY2hpbmUncyB1c2VyLWRlZmluZWQgY29uZmlnIGZyYWdtZW50IFske21hY2hpbmV9PXVzZXItY29uZmlnLmNmZ10uCi0gICAgIiIiCi0gICAgZiA9IG9wZW5fdXNlcl9maWxlKHNjcmlwdHNfcGF0aCwgbWFjaGluZSwgbWFjaGluZSsiLXVzZXItY29uZmlnLmNmZyIsICJ3IikKLSAgICBmb3IgaXRlbSBpbiBjb25maWdfaXRlbXM6Ci0gICAgICAgIGYud3JpdGUoaXRlbSArICJcbiIpCi0gICAgZi5jbG9zZSgpCi0KLSAgICBrZXJuZWxfY29udGVudHNfY2hhbmdlZChzY3JpcHRzX3BhdGgsIG1hY2hpbmUpCi0KLQotZGVmIHlvY3RvX2tlcm5lbF9jb25maWdfbGlzdChzY3JpcHRzX3BhdGgsIG1hY2hpbmUpOgotICAgICIiIgotICAgIERpc3BsYXkgdGhlIGxpc3Qgb2YgY29uZmlnIGl0ZW1zIChDT05GSUdfWFhYKSBpbiBhIG1hY2hpbmUncwotICAgIHVzZXItZGVmaW5lZCBjb25maWcgZnJhZ21lbnQgWyR7bWFjaGluZX0tdXNlci1jb25maWcuY2ZnXS4KLSAgICAiIiIKLSAgICBjb25maWdfaXRlbXMgPSByZWFkX2NvbmZpZ19pdGVtcyhzY3JpcHRzX3BhdGgsIG1hY2hpbmUpCi0KLSAgICBwcmludCgiVGhlIGN1cnJlbnQgc2V0IG9mIG1hY2hpbmUtc3BlY2lmaWMga2VybmVsIGNvbmZpZyBpdGVtcyBmb3IgJXMgaXM6IiAlIG1hY2hpbmUpCi0gICAgcHJpbnQoZ2VuX2Nob2ljZXNfc3RyKGNvbmZpZ19pdGVtcykpCi0KLQotZGVmIHlvY3RvX2tlcm5lbF9jb25maWdfcm0oc2NyaXB0c19wYXRoLCBtYWNoaW5lKToKLSAgICAiIiIKLSAgICBEaXNwbGF5IHRoZSBsaXN0IG9mIGNvbmZpZyBpdGVtcyAoQ09ORklHX1hYWCkgaW4gYSBtYWNoaW5lJ3MKLSAgICB1c2VyLWRlZmluZWQgY29uZmlnIGZyYWdtZW50IFske21hY2hpbmV9LXVzZXItY29uZmlnLmNmZ10sIHByb21wdCB0aGUgdXNlcgotICAgIGZvciBvbmUgb3IgbW9yZSB0byByZW1vdmUsIGFuZCByZW1vdmUgdGhlbS4KLSAgICAiIiIKLSAgICBjb25maWdfaXRlbXMgPSByZWFkX2NvbmZpZ19pdGVtcyhzY3JpcHRzX3BhdGgsIG1hY2hpbmUpCi0KLSAgICBwcmludCgiU3BlY2lmeSB0aGUga2VybmVsIGNvbmZpZyBpdGVtcyB0byByZW1vdmU6IikKLSAgICBpbnAgPSBpbnB1dChnZW5fY2hvaWNlc19zdHIoY29uZmlnX2l0ZW1zKSkKLSAgICBybV9jaG9pY2VzID0gaW5wLnNwbGl0KCkKLSAgICBybV9jaG9pY2VzLnNvcnQoKQotCi0gICAgcmVtb3ZlZCA9IFtdCi0KLSAgICBmb3IgY2hvaWNlIGluIHJldmVyc2VkKHJtX2Nob2ljZXMpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZHggPSBpbnQoY2hvaWNlKSAtIDEKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBwcmludCgiSW52YWxpZCBjaG9pY2UgKCVzKSwgZXhpdGluZyIgJSBjaG9pY2UpCi0gICAgICAgICAgICBzeXMuZXhpdCgxKQotICAgICAgICBpZiBpZHggPCAwIG9yIGlkeCA+PSBsZW4oY29uZmlnX2l0ZW1zKToKLSAgICAgICAgICAgIHByaW50KCJJbnZhbGlkIGNob2ljZSAoJWQpLCBleGl0aW5nIiAlIChpZHggKyAxKSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIHJlbW92ZWQuYXBwZW5kKGNvbmZpZ19pdGVtcy5wb3AoaWR4KSkKLQotICAgIHdyaXRlX2NvbmZpZ19pdGVtcyhzY3JpcHRzX3BhdGgsIG1hY2hpbmUsIGNvbmZpZ19pdGVtcykKLQotICAgIHByaW50KCJSZW1vdmVkIGl0ZW1zOiIpCi0gICAgZm9yIHIgaW4gcmVtb3ZlZDoKLSAgICAgICAgcHJpbnQoIlx0JXMiICUgcikKLQotCi1kZWYgeW9jdG9fa2VybmVsX2NvbmZpZ19hZGQoc2NyaXB0c19wYXRoLCBtYWNoaW5lLCBjb25maWdfaXRlbXMpOgotICAgICIiIgotICAgIEFkZCBvbmUgb3IgbW9yZSBjb25maWcgaXRlbXMgKENPTkZJR19YWFgpIHRvIGEgbWFjaGluZSdzCi0gICAgdXNlci1kZWZpbmVkIGNvbmZpZyBmcmFnbWVudCBbJHttYWNoaW5lfS11c2VyLWNvbmZpZy5jZmddLgotICAgICIiIgotICAgIG5ld19pdGVtcyA9IFtdCi0gICAgZHVwX2l0ZW1zID0gW10KLQotICAgIGN1cl9pdGVtcyA9IHJlYWRfY29uZmlnX2l0ZW1zKHNjcmlwdHNfcGF0aCwgbWFjaGluZSkKLQotICAgIGZvciBpdGVtIGluIGNvbmZpZ19pdGVtczoKLSAgICAgICAgaWYgbm90IGl0ZW0uc3RhcnRzd2l0aCgiQ09ORklHIikgb3IgKG5vdCAiPXkiIGluIGl0ZW0gYW5kIG5vdCAiPW0iIGluIGl0ZW0pOgotICAgICAgICAgICAgcHJpbnQoIkludmFsaWQgY29uZmlnIGl0ZW0gKCVzKSwgZXhpdGluZyIgJSBpdGVtKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAgICAgaWYgaXRlbSBub3QgaW4gY3VyX2l0ZW1zIGFuZCBpdGVtIG5vdCBpbiBuZXdfaXRlbXM6Ci0gICAgICAgICAgICBuZXdfaXRlbXMuYXBwZW5kKGl0ZW0pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkdXBfaXRlbXMuYXBwZW5kKGl0ZW0pCi0KLSAgICBpZiBsZW4obmV3X2l0ZW1zKSA+IDA6Ci0gICAgICAgIGN1cl9pdGVtcy5leHRlbmQobmV3X2l0ZW1zKQotICAgICAgICB3cml0ZV9jb25maWdfaXRlbXMoc2NyaXB0c19wYXRoLCBtYWNoaW5lLCBjdXJfaXRlbXMpCi0gICAgICAgIHByaW50KCJBZGRlZCBpdGVtJXM6IiAlICgiIiBpZiBsZW4obmV3X2l0ZW1zKT09MSBlbHNlICJzIikpCi0gICAgICAgIGZvciBuIGluIG5ld19pdGVtczoKLSAgICAgICAgICAgIHByaW50KCJcdCVzIiAlIG4pCi0KLSAgICBpZiBsZW4oZHVwX2l0ZW1zKSA+IDA6Ci0gICAgICAgIG91dHB1dD0iVGhlIGZvbGxvd2luZyBpdGVtJXMgYWxyZWFkeSBleGlzdCVzIGluIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24sIGlnbm9yaW5nICVzOiIgJSBcCi0gICAgICAgICAgICAoKCIiLCJzIiwgIml0IikgaWYgbGVuKGR1cF9pdGVtcyk9PTEgZWxzZSAoInMiLCAiIiwgInRoZW0iICkpCi0gICAgICAgIHByaW50KG91dHB1dCkKLSAgICAgICAgZm9yIG4gaW4gZHVwX2l0ZW1zOgotICAgICAgICAgICAgcHJpbnQoIlx0JXMiICUgbikKLQotZGVmIGZpbmRfY3VycmVudF9rZXJuZWwoYnNwX2xheWVyLCBtYWNoaW5lKToKLSAgICAiIiIKLSAgICBEZXRlcm1pbmUgdGhlIGtlcm5lbCBhbmQgdmVyc2lvbiBjdXJyZW50bHkgYmVpbmcgdXNlZCBpbiB0aGUgQlNQLgotICAgICIiIgotICAgIG1hY2hpbmVfY29uZiA9IG9zLnBhdGguam9pbihic3BfbGF5ZXIsICJjb25mL21hY2hpbmUvIiArIG1hY2hpbmUgKyAiLmNvbmYiKQotCi0gICAgcHJlZmVycmVkX2tlcm5lbCA9IHByZWZlcnJlZF9rZXJuZWxfdmVyc2lvbiA9IHByZWZlcnJlZF92ZXJzaW9uX3Zhcm5hbWUgPSBOb25lCi0KLSAgICBmID0gb3BlbihtYWNoaW5lX2NvbmYsICJyIikKLSAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKLSAgICBmb3IgbGluZSBpbiBsaW5lczoKLSAgICAgICAgaWYgbGluZS5zdHJpcCgpLnN0YXJ0c3dpdGgoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCIpOgotICAgICAgICAgICAgcHJlZmVycmVkX2tlcm5lbCA9IGxpbmUuc3BsaXQoKVstMV0KLSAgICAgICAgICAgIHByZWZlcnJlZF9rZXJuZWwgPSBwcmVmZXJyZWRfa2VybmVsLnJlcGxhY2UoJ1wiJywnJykKLSAgICAgICAgICAgIHByZWZlcnJlZF92ZXJzaW9uX3Zhcm5hbWUgPSAiUFJFRkVSUkVEX1ZFUlNJT05fIiArIHByZWZlcnJlZF9rZXJuZWwKLSAgICAgICAgaWYgcHJlZmVycmVkX3ZlcnNpb25fdmFybmFtZSBhbmQgbGluZS5zdHJpcCgpLnN0YXJ0c3dpdGgocHJlZmVycmVkX3ZlcnNpb25fdmFybmFtZSk6Ci0gICAgICAgICAgICBwcmVmZXJyZWRfa2VybmVsX3ZlcnNpb24gPSBsaW5lLnNwbGl0KClbLTFdCi0gICAgICAgICAgICBwcmVmZXJyZWRfa2VybmVsX3ZlcnNpb24gPSBwcmVmZXJyZWRfa2VybmVsX3ZlcnNpb24ucmVwbGFjZSgnXCInLCcnKQotICAgICAgICAgICAgcHJlZmVycmVkX2tlcm5lbF92ZXJzaW9uID0gcHJlZmVycmVkX2tlcm5lbF92ZXJzaW9uLnJlcGxhY2UoJyUnLCcnKQotCi0gICAgaWYgcHJlZmVycmVkX2tlcm5lbCBhbmQgcHJlZmVycmVkX2tlcm5lbF92ZXJzaW9uOgotICAgICAgICByZXR1cm4gcHJlZmVycmVkX2tlcm5lbCArICJfIiArIHByZWZlcnJlZF9rZXJuZWxfdmVyc2lvbgotICAgIGVsaWYgcHJlZmVycmVkX2tlcm5lbDoKLSAgICAgICAgcmV0dXJuIHByZWZlcnJlZF9rZXJuZWwKLQotCi1kZWYgZmluZF9maWxlc2RpcihzY3JpcHRzX3BhdGgsIG1hY2hpbmUpOgotICAgICIiIgotICAgIEZpbmQgdGhlIG5hbWUgb2YgdGhlICdmaWxlcycgZGlyIGFzc29jaWF0ZWQgd2l0aCB0aGUgbWFjaGluZQotICAgIChjb3VsZCBiZSBpbiBmaWxlcy8sIGxpbnV4LXlvY3RvLWN1c3RvbS8sIGV0YykuICBSZXR1cm5zIHRoZSBuYW1lCi0gICAgb2YgdGhlIGZpbGVzIGRpciBpZiBmb3VuZCwgTm9uZSBvdGhlcndpc2UuCi0gICAgIiIiCi0gICAgbGF5ZXIgPSBmaW5kX2JzcF9sYXllcihtYWNoaW5lKQotICAgIGZpbGVzZGlyID0gTm9uZQotICAgIGxpbnV4ZGlyID0gb3MucGF0aC5qb2luKGxheWVyLCAicmVjaXBlcy1rZXJuZWwvbGludXgiKQotICAgIGxpbnV4ZGlyX2xpc3QgPSBvcy5saXN0ZGlyKGxpbnV4ZGlyKQotICAgIGZvciBmaWxlb2JqIGluIGxpbnV4ZGlyX2xpc3Q6Ci0gICAgICAgIGZpbGVvYmpfcGF0aCA9IG9zLnBhdGguam9pbihsaW51eGRpciwgZmlsZW9iaikKLSAgICAgICAgaWYgb3MucGF0aC5pc2RpcihmaWxlb2JqX3BhdGgpOgotICAgICAgICAgICAgIyB0aGlzIGNvdWxkIGJlIGZpbGVzLyBvciBsaW51eC15b2N0by1jdXN0b20vLCB3ZSBoYXZlIG5vIHdheSBvZiBkaXN0aW5ndWlzaGluZwotICAgICAgICAgICAgIyBzbyB3ZSB0YWtlIHRoZSBmaXJzdCAoYW5kIG5vcm1hbGx5IG9ubHkpIGRpciB3ZSBmaW5kIGFzIHRoZSAnZmlsZXNkaXInCi0gICAgICAgICAgICBmaWxlc2RpciA9IGZpbGVvYmpfcGF0aAotCi0gICAgcmV0dXJuIGZpbGVzZGlyCi0KLQotZGVmIHJlYWRfcGF0Y2hfaXRlbXMoc2NyaXB0c19wYXRoLCBtYWNoaW5lKToKLSAgICAiIiIKLSAgICBGaW5kIGFuZCByZXR1cm4gYSBsaXN0IG9mIHBhdGNoIGl0ZW1zIGluIGEgbWFjaGluZSdzIHVzZXItZGVmaW5lZAotICAgIHBhdGNoIGxpc3QgWyR7bWFjaGluZX0tdXNlci1wYXRjaGVzLnNjY10uCi0gICAgIiIiCi0gICAgcGF0Y2hfaXRlbXMgPSBbXQotCi0gICAgZiA9IG9wZW5fdXNlcl9maWxlKHNjcmlwdHNfcGF0aCwgbWFjaGluZSwgbWFjaGluZSsiLXVzZXItcGF0Y2hlcy5zY2MiLCAiciIpCi0gICAgbGluZXMgPSBmLnJlYWRsaW5lcygpCi0gICAgZm9yIGxpbmUgaW4gbGluZXM6Ci0gICAgICAgIHMgPSBsaW5lLnN0cmlwKCkKLSAgICAgICAgaWYgcyBhbmQgbm90IHMuc3RhcnRzd2l0aCgiIyIpOgotICAgICAgICAgICAgZmllbGRzID0gcy5zcGxpdCgpCi0gICAgICAgICAgICBpZiBub3QgZmllbGRzWzBdID09ICJwYXRjaCI6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHBhdGNoX2l0ZW1zLmFwcGVuZChmaWVsZHNbMV0pCi0gICAgZi5jbG9zZSgpCi0KLSAgICByZXR1cm4gcGF0Y2hfaXRlbXMKLQotCi1kZWYgd3JpdGVfcGF0Y2hfaXRlbXMoc2NyaXB0c19wYXRoLCBtYWNoaW5lLCBwYXRjaF9pdGVtcyk6Ci0gICAgIiIiCi0gICAgV3JpdGUgKHJlcGxhY2UpIHRoZSBsaXN0IG9mIHBhdGNoZXMgaW4gYSBtYWNoaW5lJ3MgdXNlci1kZWZpbmVkCi0gICAgcGF0Y2ggbGlzdCBbJHttYWNoaW5lfS11c2VyLXBhdGNoZXMuc2NjXS4KLSAgICAiIiIKLSAgICBmID0gb3Blbl91c2VyX2ZpbGUoc2NyaXB0c19wYXRoLCBtYWNoaW5lLCBtYWNoaW5lKyItdXNlci1wYXRjaGVzLnNjYyIsICJ3IikKLSAgICBmb3IgaXRlbSBpbiBwYXRjaF9pdGVtczoKLSAgICAgICAgZi53cml0ZSgicGF0Y2ggIiArIGl0ZW0gKyAiXG4iKQotICAgIGYuY2xvc2UoKQotCi0gICAga2VybmVsX2NvbnRlbnRzX2NoYW5nZWQoc2NyaXB0c19wYXRoLCBtYWNoaW5lKQotCi0KLWRlZiB5b2N0b19rZXJuZWxfcGF0Y2hfbGlzdChzY3JpcHRzX3BhdGgsIG1hY2hpbmUpOgotICAgICIiIgotICAgIERpc3BsYXkgdGhlIGxpc3Qgb2YgcGF0Y2hlcyBpbiBhIG1hY2hpbmUncyB1c2VyLWRlZmluZWQgcGF0Y2ggbGlzdAotICAgIFske21hY2hpbmV9LXVzZXItcGF0Y2hlcy5zY2NdLgotICAgICIiIgotICAgIHBhdGNoZXMgPSByZWFkX3BhdGNoX2l0ZW1zKHNjcmlwdHNfcGF0aCwgbWFjaGluZSkKLQotICAgIHByaW50KCJUaGUgY3VycmVudCBzZXQgb2YgbWFjaGluZS1zcGVjaWZpYyBwYXRjaGVzIGZvciAlcyBpczoiICUgbWFjaGluZSkKLSAgICBwcmludChnZW5fY2hvaWNlc19zdHIocGF0Y2hlcykpCi0KLQotZGVmIHlvY3RvX2tlcm5lbF9wYXRjaF9ybShzY3JpcHRzX3BhdGgsIG1hY2hpbmUpOgotICAgICIiIgotICAgIFJlbW92ZSBvbmUgb3IgbW9yZSBwYXRjaGVzIGZyb20gYSBtYWNoaW5lJ3MgdXNlci1kZWZpbmVkIHBhdGNoCi0gICAgbGlzdCBbJHttYWNoaW5lfS11c2VyLXBhdGNoZXMuc2NjXS4KLSAgICAiIiIKLSAgICBwYXRjaGVzID0gcmVhZF9wYXRjaF9pdGVtcyhzY3JpcHRzX3BhdGgsIG1hY2hpbmUpCi0KLSAgICBwcmludCgiU3BlY2lmeSB0aGUgcGF0Y2hlcyB0byByZW1vdmU6IikKLSAgICBpbnAgPSBpbnB1dChnZW5fY2hvaWNlc19zdHIocGF0Y2hlcykpCi0gICAgcm1fY2hvaWNlcyA9IGlucC5zcGxpdCgpCi0gICAgcm1fY2hvaWNlcy5zb3J0KCkKLQotICAgIHJlbW92ZWQgPSBbXQotCi0gICAgZmlsZXNkaXIgPSBmaW5kX2ZpbGVzZGlyKHNjcmlwdHNfcGF0aCwgbWFjaGluZSkKLSAgICBpZiBub3QgZmlsZXNkaXI6Ci0gICAgICAgIHByaW50KCJDb3VsZG4ndCBybSBwYXRjaChlcykgc2luY2Ugd2UgY291bGRuJ3QgZmluZCBhICdmaWxlcycgZGlyIikKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIGZvciBjaG9pY2UgaW4gcmV2ZXJzZWQocm1fY2hvaWNlcyk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlkeCA9IGludChjaG9pY2UpIC0gMQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHByaW50KCJJbnZhbGlkIGNob2ljZSAoJXMpLCBleGl0aW5nIiAlIGNob2ljZSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIGlmIGlkeCA8IDAgb3IgaWR4ID49IGxlbihwYXRjaGVzKToKLSAgICAgICAgICAgIHByaW50KCJJbnZhbGlkIGNob2ljZSAoJWQpLCBleGl0aW5nIiAlIChpZHggKyAxKSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIGZpbGVzZGlyX3BhdGNoID0gb3MucGF0aC5qb2luKGZpbGVzZGlyLCBwYXRjaGVzW2lkeF0pCi0gICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZpbGVzZGlyX3BhdGNoKToKLSAgICAgICAgICAgIG9zLnJlbW92ZShmaWxlc2Rpcl9wYXRjaCkKLSAgICAgICAgcmVtb3ZlZC5hcHBlbmQocGF0Y2hlc1tpZHhdKQotICAgICAgICBwYXRjaGVzLnBvcChpZHgpCi0KLSAgICB3cml0ZV9wYXRjaF9pdGVtcyhzY3JpcHRzX3BhdGgsIG1hY2hpbmUsIHBhdGNoZXMpCi0KLSAgICBwcmludCgiUmVtb3ZlZCBwYXRjaGVzOiIpCi0gICAgZm9yIHIgaW4gcmVtb3ZlZDoKLSAgICAgICAgcHJpbnQoIlx0JXMiICUgcikKLQotCi1kZWYgeW9jdG9fa2VybmVsX3BhdGNoX2FkZChzY3JpcHRzX3BhdGgsIG1hY2hpbmUsIHBhdGNoZXMpOgotICAgICIiIgotICAgIEFkZCBvbmUgb3IgbW9yZSBwYXRjaGVzIHRvIGEgbWFjaGluZSdzIHVzZXItZGVmaW5lZCBwYXRjaCBsaXN0Ci0gICAgWyR7bWFjaGluZX0tdXNlci1wYXRjaGVzLnNjY10uCi0gICAgIiIiCi0gICAgZXhpc3RpbmdfcGF0Y2hlcyA9IHJlYWRfcGF0Y2hfaXRlbXMoc2NyaXB0c19wYXRoLCBtYWNoaW5lKQotCi0gICAgZm9yIHBhdGNoIGluIHBhdGNoZXM6Ci0gICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUocGF0Y2gpIGluIGV4aXN0aW5nX3BhdGNoZXM6Ci0gICAgICAgICAgICBwcmludCgiQ291bGRuJ3QgYWRkIHBhdGNoICglcykgc2luY2UgaXQncyBhbHJlYWR5IGJlZW4gYWRkZWQiICUgb3MucGF0aC5iYXNlbmFtZShwYXRjaCkpCi0gICAgICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgZmlsZXNkaXIgPSBmaW5kX2ZpbGVzZGlyKHNjcmlwdHNfcGF0aCwgbWFjaGluZSkKLSAgICBpZiBub3QgZmlsZXNkaXI6Ci0gICAgICAgIHByaW50KCJDb3VsZG4ndCBhZGQgcGF0Y2ggKCVzKSBzaW5jZSB3ZSBjb3VsZG4ndCBmaW5kIGEgJ2ZpbGVzJyBkaXIgdG8gYWRkIGl0IHRvIiAlIG9zLnBhdGguYmFzZW5hbWUocGF0Y2gpKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgbmV3X3BhdGNoZXMgPSBbXQotCi0gICAgZm9yIHBhdGNoIGluIHBhdGNoZXM6Ci0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShwYXRjaCk6Ci0gICAgICAgICAgICBwcmludCgiQ291bGRuJ3QgZmluZCBwYXRjaCAoJXMpLCBleGl0aW5nIiAlIHBhdGNoKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAgICAgYmFzZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHBhdGNoKQotICAgICAgICBmaWxlc2Rpcl9wYXRjaCA9IG9zLnBhdGguam9pbihmaWxlc2RpciwgYmFzZW5hbWUpCi0gICAgICAgIHNodXRpbC5jb3B5ZmlsZShwYXRjaCwgZmlsZXNkaXJfcGF0Y2gpCi0gICAgICAgIG5ld19wYXRjaGVzLmFwcGVuZChiYXNlbmFtZSkKLQotICAgIGN1cl9pdGVtcyA9IHJlYWRfcGF0Y2hfaXRlbXMoc2NyaXB0c19wYXRoLCBtYWNoaW5lKQotICAgIGN1cl9pdGVtcy5leHRlbmQobmV3X3BhdGNoZXMpCi0gICAgd3JpdGVfcGF0Y2hfaXRlbXMoc2NyaXB0c19wYXRoLCBtYWNoaW5lLCBjdXJfaXRlbXMpCi0KLSAgICBwcmludCgiQWRkZWQgcGF0Y2hlczoiKQotICAgIGZvciBuIGluIG5ld19wYXRjaGVzOgotICAgICAgICBwcmludCgiXHQlcyIgJSBuKQotCi0KLWRlZiBpbmNfcHIobGluZSk6Ci0gICAgIiIiCi0gICAgQWRkIDEgdG8gdGhlIFBSIHZhbHVlIGluIHRoZSBnaXZlbiBiYmFwcGVuZCBQUiBsaW5lLiAgRm9yIHRoZSBQUgotICAgIGxpbmVzIGluIGtlcm5lbCAuYmJhcHBlbmRzIGFmdGVyIG1vZGlmaWNhdGlvbnMuICBIYW5kbGVzIFBScyBvZgotICAgIHRoZSBmb3JtIFBSIDo9ICIke1BSfS4xIiBhcyB3ZWxsIGFzIFBSID0gInIwIi4KLSAgICAiIiIKLSAgICBpZHggPSBsaW5lLmZpbmQoIlwiIikKLQotICAgIHByX3N0ciA9IGxpbmVbaWR4Ol0KLSAgICBwcl9zdHIgPSBwcl9zdHIucmVwbGFjZSgnXCInLCcnKQotICAgIGZpZWxkcyA9IHByX3N0ci5zcGxpdCgnLicpCi0gICAgaWYgbGVuKGZpZWxkcykgPiAxOgotICAgICAgICBmaWVsZHNbMV0gPSBzdHIoaW50KGZpZWxkc1sxXSkgKyAxKQotICAgICAgICBwcl9zdHIgPSAiXCIiICsgJy4nLmpvaW4oZmllbGRzKSArICJcIlxuIgotICAgIGVsc2U6Ci0gICAgICAgIHByX3ZhbCA9IHByX3N0clsxOl0KLSAgICAgICAgcHJfc3RyID0gIlwiIiArICJyIiArIHN0cihpbnQocHJfdmFsKSArIDEpICsgIlwiXG4iCi0gICAgaWR4MiA9IGxpbmUuZmluZCgiXCIiLCBpZHggKyAxKQotICAgIGxpbmUgPSBsaW5lWzppZHhdICsgcHJfc3RyCi0gICAgCi0gICAgcmV0dXJuIGxpbmUKLQotCi1kZWYga2VybmVsX2NvbnRlbnRzX2NoYW5nZWQoc2NyaXB0c19wYXRoLCBtYWNoaW5lKToKLSAgICAiIiIKLSAgICBEbyB3aGF0IHdlIG5lZWQgdG8gZG8gdG8gbm90aWZ5IHRoZSBzeXN0ZW0gdGhhdCB0aGUga2VybmVsCi0gICAgcmVjaXBlJ3MgY29udGVudHMgaGF2ZSBjaGFuZ2VkLgotICAgICIiIgotICAgIGxheWVyID0gZmluZF9ic3BfbGF5ZXIobWFjaGluZSkKLQotICAgIGtlcm5lbCA9IGZpbmRfY3VycmVudF9rZXJuZWwobGF5ZXIsIG1hY2hpbmUpCi0gICAgaWYgbm90IGtlcm5lbDoKLSAgICAgICAgcHJpbnQoIkNvdWxkbid0IGRldGVybWluZSB0aGUga2VybmVsIGZvciB0aGlzIEJTUCwgZXhpdGluZy4iKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAga2VybmVsX2JiZmlsZSA9IG9zLnBhdGguam9pbihsYXllciwgInJlY2lwZXMta2VybmVsL2xpbnV4LyIgKyBrZXJuZWwgKyAiLmJiYXBwZW5kIikKLSAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoa2VybmVsX2JiZmlsZSk6Ci0gICAgICAgIGtlcm5lbF9iYmZpbGUgPSBvcy5wYXRoLmpvaW4obGF5ZXIsICJyZWNpcGVzLWtlcm5lbC9saW51eC8iICsga2VybmVsICsgIi5iYiIpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShrZXJuZWxfYmJmaWxlKToKLSAgICAgICAgICAgIHJldHVybgotICAgIGtlcm5lbF9iYmZpbGVfcHJldiA9IGtlcm5lbF9iYmZpbGUgKyAiLnByZXYiCi0gICAgc2h1dGlsLmNvcHlmaWxlKGtlcm5lbF9iYmZpbGUsIGtlcm5lbF9iYmZpbGVfcHJldikKLQotICAgIGlmaWxlID0gb3BlbihrZXJuZWxfYmJmaWxlX3ByZXYsICJyIikKLSAgICBvZmlsZSA9IG9wZW4oa2VybmVsX2JiZmlsZSwgInciKQotICAgIGlmaWxlX2xpbmVzID0gaWZpbGUucmVhZGxpbmVzKCkKLSAgICBmb3IgaWZpbGVfbGluZSBpbiBpZmlsZV9saW5lczoKLSAgICAgICAgaWYgaWZpbGVfbGluZS5zdHJpcCgpLnN0YXJ0c3dpdGgoIlBSIik6Ci0gICAgICAgICAgICBpZmlsZV9saW5lID0gaW5jX3ByKGlmaWxlX2xpbmUpCi0gICAgICAgIG9maWxlLndyaXRlKGlmaWxlX2xpbmUpCi0gICAgb2ZpbGUuY2xvc2UoKQotICAgIGlmaWxlLmNsb3NlKCkKLQotCi1kZWYga2VybmVscyhjb250ZXh0KToKLSAgICAiIiIKLSAgICBSZXR1cm4gdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGtlcm5lbHMgaW4gdGhlIEJTUCBpLmUuIGNvcnJlc3BvbmRpbmcKLSAgICB0byB0aGUga2VybmVsIC5iYmFwcGVuZHMgZm91bmQgaW4gdGhlIGxheWVyLgotICAgICIiIgotICAgIGFyY2hkaXIgPSBvcy5wYXRoLmpvaW4oY29udGV4dFsic2NyaXB0c19wYXRoIl0sICJsaWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC8iICsgY29udGV4dFsiYXJjaCJdKQotICAgIGtlcm5kaXIgPSBvcy5wYXRoLmpvaW4oYXJjaGRpciwgInJlY2lwZXMta2VybmVsL2xpbnV4IikKLSAgICBiYmdsb2IgPSBvcy5wYXRoLmpvaW4oa2VybmRpciwgIiouYmJhcHBlbmQiKQotCi0gICAgYmJhcHBlbmRzID0gZ2xvYi5nbG9iKGJiZ2xvYikKLQotICAgIGtlcm5lbHMgPSBbXQotCi0gICAgZm9yIGtlcm5lbCBpbiBiYmFwcGVuZHM6Ci0gICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKGtlcm5lbCkpWzBdCi0gICAgICAgIGlkeCA9IGZpbGVuYW1lLmZpbmQoQ0xPU0VfVEFHKQotICAgICAgICBpZiBpZHggIT0gLTE6Ci0gICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lW2lkeCArIGxlbihDTE9TRV9UQUcpOl0uc3RyaXAoKQotICAgICAgICBrZXJuZWxzLmFwcGVuZChmaWxlbmFtZSkKLQotICAgIGtlcm5lbHMuYXBwZW5kKCJjdXN0b20iKQotCi0gICAgcmV0dXJuIGtlcm5lbHMKLQotCi1kZWYgZXh0cmFjdF9naXR1cmwoZmlsZSk6Ci0gICAgIiIiCi0gICAgRXh0cmFjdCB0aGUgZ2l0IHVybCBvZiB0aGUga2VybmVsIHJlcG8gZnJvbSB0aGUga2VybmVsIHJlY2lwZSdzCi0gICAgU1JDX1VSSS4KLSAgICAiIiIKLSAgICB1cmwgPSBOb25lCi0gICAgZiA9IG9wZW4oZmlsZSwgInIiKQotICAgIGxpbmVzID0gZi5yZWFkbGluZXMoKQotICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCi0gICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiU1JDX1VSSSIpOgotICAgICAgICAgICAgbGluZSA9IGxpbmVbbGVuKCJTUkNfVVJJIik6XS5zdHJpcCgpCi0gICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIj0iKToKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZVsxOl0uc3RyaXAoKQotICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiXCIiKToKLSAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbMTpdLnN0cmlwKCkKLSAgICAgICAgICAgICAgICAgICAgcHJvdCA9ICJnaXQiCi0gICAgICAgICAgICAgICAgICAgIGZvciBzIGluIGxpbmUuc3BsaXQoIjsiKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHMuc3RhcnRzd2l0aCgiZ2l0Oi8vIik6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gcwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgcy5zdGFydHN3aXRoKCJwcm90b2NvbD0iKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ID0gcy5zcGxpdCgiPSIpWzFdCi0gICAgICAgICAgICAgICAgICAgIGlmIHVybDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9IHByb3QgKyB1cmxbMzpdCi0gICAgcmV0dXJuIHVybAotCi0KLWRlZiBmaW5kX2dpdHVybChjb250ZXh0KToKLSAgICAiIiIKLSAgICBGaW5kIHRoZSBnaXQgdXJsIG9mIHRoZSBrZXJuZWwgcmVwbyBmcm9tIHRoZSBrZXJuZWwgcmVjaXBlJ3MKLSAgICBTUkNfVVJJLgotICAgICIiIgotICAgIG5hbWUgPSBjb250ZXh0WyJuYW1lIl0KLSAgICBmaWxlYmFzZSA9IGNvbnRleHRbImZpbGVuYW1lIl0KLSAgICBzY3JpcHRzX3BhdGggPSBjb250ZXh0WyJzY3JpcHRzX3BhdGgiXQotCi0gICAgbWV0YV9sYXllciA9IGZpbmRfbWV0YV9sYXllcigpCi0KLSAgICBrZXJuZGlyID0gb3MucGF0aC5qb2luKG1ldGFfbGF5ZXIsICJyZWNpcGVzLWtlcm5lbC9saW51eCIpCi0gICAgYmJnbG9iID0gb3MucGF0aC5qb2luKGtlcm5kaXIsICIqLmJiIikKLSAgICBiYnMgPSBnbG9iLmdsb2IoYmJnbG9iKQotICAgIGZvciBrZXJuZWwgaW4gYmJzOgotICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShrZXJuZWwpKVswXQotICAgICAgICBpZiBmaWxlbmFtZSBpbiBmaWxlYmFzZToKLSAgICAgICAgICAgIGdpdHVybCA9IGV4dHJhY3RfZ2l0dXJsKGtlcm5lbCkKLSAgICAgICAgICAgIHJldHVybiBnaXR1cmwKLSAgICAKLSAgICByZXR1cm4gTm9uZQotCi0KLWRlZiByZWFkX2ZlYXR1cmVzKHNjcmlwdHNfcGF0aCwgbWFjaGluZSk6Ci0gICAgIiIiCi0gICAgRmluZCBhbmQgcmV0dXJuIGEgbGlzdCBvZiBmZWF0dXJlcyBpbiBhIG1hY2hpbmUncyB1c2VyLWRlZmluZWQKLSAgICBmZWF0dXJlcyBmcmFnbWVudCBbJHttYWNoaW5lfS11c2VyLWZlYXR1cmVzLnNjY10uCi0gICAgIiIiCi0gICAgZmVhdHVyZXMgPSBbXQotCi0gICAgZiA9IG9wZW5fdXNlcl9maWxlKHNjcmlwdHNfcGF0aCwgbWFjaGluZSwgbWFjaGluZSsiLXVzZXItZmVhdHVyZXMuc2NjIiwgInIiKQotICAgIGxpbmVzID0gZi5yZWFkbGluZXMoKQotICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICBzID0gbGluZS5zdHJpcCgpCi0gICAgICAgIGlmIHMgYW5kIG5vdCBzLnN0YXJ0c3dpdGgoIiMiKToKLSAgICAgICAgICAgIGZlYXR1cmVfaW5jbHVkZSA9IHMuc3BsaXQoKQotICAgICAgICAgICAgZmVhdHVyZXMuYXBwZW5kKGZlYXR1cmVfaW5jbHVkZVsxXS5zdHJpcCgpKQotICAgIGYuY2xvc2UoKQotCi0gICAgcmV0dXJuIGZlYXR1cmVzCi0KLQotZGVmIHdyaXRlX2ZlYXR1cmVzKHNjcmlwdHNfcGF0aCwgbWFjaGluZSwgZmVhdHVyZXMpOgotICAgICIiIgotICAgIFdyaXRlIChyZXBsYWNlKSB0aGUgbGlzdCBvZiBmZWF0dXJlIGl0ZW1zIGluIGEKLSAgICBtYWNoaW5lJ3MgdXNlci1kZWZpbmVkIGZlYXR1cmVzIGZyYWdtZW50IFske21hY2hpbmV9PXVzZXItZmVhdHVyZXMuY2ZnXS4KLSAgICAiIiIKLSAgICBmID0gb3Blbl91c2VyX2ZpbGUoc2NyaXB0c19wYXRoLCBtYWNoaW5lLCBtYWNoaW5lKyItdXNlci1mZWF0dXJlcy5zY2MiLCAidyIpCi0gICAgZm9yIGl0ZW0gaW4gZmVhdHVyZXM6Ci0gICAgICAgIGYud3JpdGUoImluY2x1ZGUgIiArIGl0ZW0gKyAiXG4iKQotICAgIGYuY2xvc2UoKQotCi0gICAga2VybmVsX2NvbnRlbnRzX2NoYW5nZWQoc2NyaXB0c19wYXRoLCBtYWNoaW5lKQotCi0KLWRlZiB5b2N0b19rZXJuZWxfZmVhdHVyZV9saXN0KHNjcmlwdHNfcGF0aCwgbWFjaGluZSk6Ci0gICAgIiIiCi0gICAgRGlzcGxheSB0aGUgbGlzdCBvZiBmZWF0dXJlcyB1c2VkIGluIGEgbWFjaGluZSdzIHVzZXItZGVmaW5lZAotICAgIGZlYXR1cmVzIGZyYWdtZW50IFske21hY2hpbmV9LXVzZXItZmVhdHVyZXMuc2NjXS4KLSAgICAiIiIKLSAgICBmZWF0dXJlcyA9IHJlYWRfZmVhdHVyZXMoc2NyaXB0c19wYXRoLCBtYWNoaW5lKQotCi0gICAgcHJpbnQoIlRoZSBjdXJyZW50IHNldCBvZiBtYWNoaW5lLXNwZWNpZmljIGZlYXR1cmVzIGZvciAlcyBpczoiICUgbWFjaGluZSkKLSAgICBwcmludChnZW5fY2hvaWNlc19zdHIoZmVhdHVyZXMpKQotCi0KLWRlZiB5b2N0b19rZXJuZWxfZmVhdHVyZV9ybShzY3JpcHRzX3BhdGgsIG1hY2hpbmUpOgotICAgICIiIgotICAgIERpc3BsYXkgdGhlIGxpc3Qgb2YgZmVhdHVyZXMgdXNlZCBpbiBhIG1hY2hpbmUncyB1c2VyLWRlZmluZWQKLSAgICBmZWF0dXJlcyBmcmFnbWVudCBbJHttYWNoaW5lfS11c2VyLWZlYXR1cmVzLnNjY10sIHByb21wdCB0aGUgdXNlcgotICAgIGZvciBvbmUgb3IgbW9yZSB0byByZW1vdmUsIGFuZCByZW1vdmUgdGhlbS4KLSAgICAiIiIKLSAgICBmZWF0dXJlcyA9IHJlYWRfZmVhdHVyZXMoc2NyaXB0c19wYXRoLCBtYWNoaW5lKQotCi0gICAgcHJpbnQoIlNwZWNpZnkgdGhlIGZlYXR1cmVzIHRvIHJlbW92ZToiKQotICAgIGlucCA9IGlucHV0KGdlbl9jaG9pY2VzX3N0cihmZWF0dXJlcykpCi0gICAgcm1fY2hvaWNlcyA9IGlucC5zcGxpdCgpCi0gICAgcm1fY2hvaWNlcy5zb3J0KCkKLQotICAgIHJlbW92ZWQgPSBbXQotCi0gICAgZm9yIGNob2ljZSBpbiByZXZlcnNlZChybV9jaG9pY2VzKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWR4ID0gaW50KGNob2ljZSkgLSAxCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgcHJpbnQoIkludmFsaWQgY2hvaWNlICglcyksIGV4aXRpbmciICUgY2hvaWNlKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAgICAgaWYgaWR4IDwgMCBvciBpZHggPj0gbGVuKGZlYXR1cmVzKToKLSAgICAgICAgICAgIHByaW50KCJJbnZhbGlkIGNob2ljZSAoJWQpLCBleGl0aW5nIiAlIChpZHggKyAxKSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIHJlbW92ZWQuYXBwZW5kKGZlYXR1cmVzLnBvcChpZHgpKQotCi0gICAgd3JpdGVfZmVhdHVyZXMoc2NyaXB0c19wYXRoLCBtYWNoaW5lLCBmZWF0dXJlcykKLQotICAgIHByaW50KCJSZW1vdmVkIGZlYXR1cmVzOiIpCi0gICAgZm9yIHIgaW4gcmVtb3ZlZDoKLSAgICAgICAgcHJpbnQoIlx0JXMiICUgcikKLQotCi1kZWYgeW9jdG9fa2VybmVsX2ZlYXR1cmVfYWRkKHNjcmlwdHNfcGF0aCwgbWFjaGluZSwgZmVhdHVyZXMpOgotICAgICIiIgotICAgIEFkZCBvbmUgb3IgbW9yZSBmZWF0dXJlcyBhIG1hY2hpbmUncyB1c2VyLWRlZmluZWQgZmVhdHVyZXMKLSAgICBmcmFnbWVudCBbJHttYWNoaW5lfS11c2VyLWZlYXR1cmVzLnNjY10uCi0gICAgIiIiCi0gICAgbmV3X2l0ZW1zID0gW10KLQotICAgIGZvciBpdGVtIGluIGZlYXR1cmVzOgotICAgICAgICBpZiBub3QgaXRlbS5lbmRzd2l0aCgiLnNjYyIpOgotICAgICAgICAgICAgcHJpbnQoIkludmFsaWQgZmVhdHVyZSAoJXMpLCBleGl0aW5nIiAlIGl0ZW0pCi0gICAgICAgICAgICBzeXMuZXhpdCgxKQotICAgICAgICBuZXdfaXRlbXMuYXBwZW5kKGl0ZW0pCi0KLSAgICBjdXJfaXRlbXMgPSByZWFkX2ZlYXR1cmVzKHNjcmlwdHNfcGF0aCwgbWFjaGluZSkKLSAgICBjdXJfaXRlbXMuZXh0ZW5kKG5ld19pdGVtcykKLQotICAgIHdyaXRlX2ZlYXR1cmVzKHNjcmlwdHNfcGF0aCwgbWFjaGluZSwgY3VyX2l0ZW1zKQotCi0gICAgcHJpbnQoIkFkZGVkIGZlYXR1cmVzOiIpCi0gICAgZm9yIG4gaW4gbmV3X2l0ZW1zOgotICAgICAgICBwcmludCgiXHQlcyIgJSBuKQotCi0KLWRlZiBmaW5kX2ZlYXR1cmVfdXJsKGdpdF91cmwpOgotICAgICIiIgotICAgIEZpbmQgdGhlIHVybCBvZiB0aGUga2Vybi1mZWF0dXJlcy5yYyBrZXJuZWwgZm9yIHRoZSBrZXJuZWwgcmVwbwotICAgIHNwZWNpZmllZCBmcm9tIHRoZSBCU1AncyBrZXJuZWwgcmVjaXBlIFNSQ19VUkkuCi0gICAgIiIiCi0gICAgZmVhdHVyZV91cmwgPSAiIgotICAgIGlmIGdpdF91cmwuc3RhcnRzd2l0aCgiZ2l0Oi8vIik6Ci0gICAgICAgIGdpdF91cmwgPSBnaXRfdXJsW2xlbigiZ2l0Oi8vIik6XS5zdHJpcCgpCi0gICAgICAgIHMgPSBnaXRfdXJsLnNwbGl0KCIvIikKLSAgICAgICAgaWYgc1sxXS5lbmRzd2l0aCgiLmdpdCIpOgotICAgICAgICAgICAgc1sxXSA9IHNbMV1bOmxlbihzWzFdKSAtIGxlbigiLmdpdCIpXQotICAgICAgICBmZWF0dXJlX3VybCA9ICJodHRwOi8vIiArIHNbMF0gKyAiL2NnaXQvY2dpdC5jZ2kvIiArIHNbMV0gKyBcCi0gICAgICAgICAgICAiL3BsYWluL21ldGEvY2ZnL2tlcm4tZmVhdHVyZXMucmM/aD1tZXRhIgotCi0gICAgcmV0dXJuIGZlYXR1cmVfdXJsCi0KLQotZGVmIGZpbmRfZmVhdHVyZV9kZXNjKGxpbmVzKToKLSAgICAiIiIKLSAgICBGaW5kIHRoZSBmZWF0dXJlIGRlc2NyaXB0aW9uIGFuZCBjb21wYXRpYmlsaXR5IGluIHRoZSBwYXNzZWQtaW4KLSAgICBzZXQgb2YgbGluZXMuICBSZXR1cm5zIGEgc3RyaW5nIHN0cmluZyBvZiB0aGUgZm9ybSAnZGVzYwotICAgIFtjb21wYXRdJy4KLSAgICAiIiIKLSAgICBkZXNjID0gIm5vIGRlc2NyaXB0aW9uIGF2YWlsYWJsZSIKLSAgICBjb21wYXQgPSAidW5rbm93biIKLQotICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICBpZHggPSBsaW5lLmZpbmQoIktGRUFUVVJFX0RFU0NSSVBUSU9OIikKLSAgICAgICAgaWYgaWR4ICE9IC0xOgotICAgICAgICAgICAgZGVzYyA9IGxpbmVbaWR4ICsgbGVuKCJLRkVBVFVSRV9ERVNDUklQVElPTiIpOl0uc3RyaXAoKQotICAgICAgICAgICAgaWYgZGVzYy5zdGFydHN3aXRoKCJcIiIpOgotICAgICAgICAgICAgICAgIGRlc2MgPSBkZXNjWzE6XQotICAgICAgICAgICAgICAgIGlmIGRlc2MuZW5kc3dpdGgoIlwiIik6Ci0gICAgICAgICAgICAgICAgICAgIGRlc2MgPSBkZXNjWzotMV0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlkeCA9IGxpbmUuZmluZCgiS0ZFQVRVUkVfQ09NUEFUSUJJTElUWSIpCi0gICAgICAgICAgICBpZiBpZHggIT0gLTE6Ci0gICAgICAgICAgICAgICAgY29tcGF0ID0gbGluZVtpZHggKyBsZW4oIktGRUFUVVJFX0NPTVBBVElCSUxJVFkiKTpdLnN0cmlwKCkKLQotICAgIHJldHVybiBkZXNjICsgIiBbIiArIGNvbXBhdCArICJdIgotCi0KLWRlZiBwcmludF9mZWF0dXJlX2Rlc2NzKGxheWVyLCBmZWF0dXJlX2Rpcik6Ci0gICAgIiIiCi0gICAgUHJpbnQgdGhlIGZlYXR1cmUgZGVzY3JpcHRpb25zIGZvciB0aGUgZmVhdHVyZXMgaW4gZmVhdHVyZV9kaXIuCi0gICAgIiIiCi0gICAga2VybmVsX2ZpbGVzX2ZlYXR1cmVzID0gb3MucGF0aC5qb2luKGxheWVyLCAicmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVfZGlyKQotICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGtlcm5lbF9maWxlc19mZWF0dXJlcyk6Ci0gICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgotICAgICAgICAgICAgaWYgZmlsZS5lbmRzd2l0aCgifiIpIG9yIGZpbGUuZW5kc3dpdGgoIiMiKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgZmlsZS5lbmRzd2l0aCgiLnNjYyIpOgotICAgICAgICAgICAgICAgIGZ1bGxwYXRoID0gb3MucGF0aC5qb2luKGxheWVyLCAicmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZV9kaXIgKyAiLyIgKyBmaWxlKQotICAgICAgICAgICAgICAgIGYgPSBvcGVuKGZ1bGxwYXRoKQotICAgICAgICAgICAgICAgIGZlYXR1cmVfZGVzYyA9IGZpbmRfZmVhdHVyZV9kZXNjKGYucmVhZGxpbmVzKCkpCi0gICAgICAgICAgICAgICAgcHJpbnQoZmVhdHVyZV9kaXIgKyAiLyIgKyBmaWxlICsgIjogIiArIGZlYXR1cmVfZGVzYykKLQotCi1kZWYgeW9jdG9fa2VybmVsX2F2YWlsYWJsZV9mZWF0dXJlc19saXN0KHNjcmlwdHNfcGF0aCwgbWFjaGluZSk6Ci0gICAgIiIiCi0gICAgRGlzcGxheSB0aGUgbGlzdCBvZiBhbGwgdGhlIGtlcm5lbCBmZWF0dXJlcyBhdmFpbGFibGUgZm9yIHVzZSBpbgotICAgIEJTUHMsIGFzIGdhdGhlcmVkIGZyb20gdGhlIHNldCBvZiBmZWF0dXJlIHNvdXJjZXMuCi0gICAgIiIiCi0gICAgbGF5ZXIgPSBmaW5kX2JzcF9sYXllcihtYWNoaW5lKQotICAgIGtlcm5lbCA9IGZpbmRfY3VycmVudF9rZXJuZWwobGF5ZXIsIG1hY2hpbmUpCi0gICAgaWYgbm90IGtlcm5lbDoKLSAgICAgICAgcHJpbnQoIkNvdWxkbid0IGRldGVybWluZSB0aGUga2VybmVsIGZvciB0aGlzIEJTUCwgZXhpdGluZy4iKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgY29udGV4dCA9IGNyZWF0ZV9jb250ZXh0KG1hY2hpbmUsICJhcmNoIiwgc2NyaXB0c19wYXRoKQotICAgIGNvbnRleHRbIm5hbWUiXSA9ICJuYW1lIgotICAgIGNvbnRleHRbImZpbGVuYW1lIl0gPSBrZXJuZWwKLSAgICBnaXR1cmwgPSBmaW5kX2dpdHVybChjb250ZXh0KQotICAgIGZlYXR1cmVfdXJsID0gZmluZF9mZWF0dXJlX3VybChnaXR1cmwpCi0KLSAgICBmZWF0dXJlX2NtZCA9ICJ3Z2V0IC1xIC1PIC0gIiArIGZlYXR1cmVfdXJsCi0gICAgdG1wID0gc3VicHJvY2Vzcy5Qb3BlbihmZWF0dXJlX2NtZCwgc2hlbGw9VHJ1ZSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuc3Rkb3V0LnJlYWQoKS5kZWNvZGUoJ3V0Zi04JykKLQotICAgIHByaW50KCJUaGUgY3VycmVudCBzZXQgb2Yga2VybmVsIGZlYXR1cmVzIGF2YWlsYWJsZSB0byAlcyBpczpcbiIgJSBtYWNoaW5lKQotCi0gICAgaWYgdG1wOgotICAgICAgICB0bXBsaW5lID0gdG1wLnNwbGl0KCJcbiIpCi0gICAgICAgIGluX2tlcm5lbF9vcHRpb25zID0gRmFsc2UKLSAgICAgICAgZm9yIGxpbmUgaW4gdG1wbGluZToKLSAgICAgICAgICAgIGlmIG5vdCAiPSIgaW4gbGluZToKLSAgICAgICAgICAgICAgICBpZiBpbl9rZXJuZWxfb3B0aW9uczoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBpZiAia2VybmVsLW9wdGlvbnMiIGluIGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgIGluX2tlcm5lbF9vcHRpb25zID0gVHJ1ZQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBpbl9rZXJuZWxfb3B0aW9uczoKLSAgICAgICAgICAgICAgICBmZWF0dXJlX2RlZiA9IGxpbmUuc3BsaXQoIj0iKQotICAgICAgICAgICAgICAgIGZlYXR1cmVfdHlwZSA9IGZlYXR1cmVfZGVmWzBdLnN0cmlwKCkKLSAgICAgICAgICAgICAgICBmZWF0dXJlID0gZmVhdHVyZV9kZWZbMV0uc3RyaXAoKQotICAgICAgICAgICAgICAgIGRlc2MgPSBnZXRfZmVhdHVyZV9kZXNjKGdpdHVybCwgZmVhdHVyZSkKLSAgICAgICAgICAgICAgICBwcmludCgiJXM6ICVzIiAlIChmZWF0dXJlLCBkZXNjKSkKLQotICAgIHByaW50KCJbbG9jYWxdIikKLQotICAgIHByaW50X2ZlYXR1cmVfZGVzY3MobGF5ZXIsICJjZmciKQotICAgIHByaW50X2ZlYXR1cmVfZGVzY3MobGF5ZXIsICJmZWF0dXJlcyIpCi0KLQotZGVmIGZpbmRfZmVhdHVyZV9kZXNjX3VybChnaXRfdXJsLCBmZWF0dXJlKToKLSAgICAiIiIKLSAgICBGaW5kIHRoZSB1cmwgb2YgdGhlIGtlcm5lbCBmZWF0dXJlIGluIHRoZSBrZXJuZWwgcmVwbyBzcGVjaWZpZWQKLSAgICBmcm9tIHRoZSBCU1AncyBrZXJuZWwgcmVjaXBlIFNSQ19VUkkuCi0gICAgIiIiCi0gICAgZmVhdHVyZV9kZXNjX3VybCA9ICIiCi0gICAgaWYgZ2l0X3VybC5zdGFydHN3aXRoKCJnaXQ6Ly8iKToKLSAgICAgICAgZ2l0X3VybCA9IGdpdF91cmxbbGVuKCJnaXQ6Ly8iKTpdLnN0cmlwKCkKLSAgICAgICAgcyA9IGdpdF91cmwuc3BsaXQoIi8iKQotICAgICAgICBpZiBzWzFdLmVuZHN3aXRoKCIuZ2l0Iik6Ci0gICAgICAgICAgICBzWzFdID0gc1sxXVs6bGVuKHNbMV0pIC0gbGVuKCIuZ2l0IildCi0gICAgICAgIGZlYXR1cmVfZGVzY191cmwgPSAiaHR0cDovLyIgKyBzWzBdICsgIi9jZ2l0L2NnaXQuY2dpLyIgKyBzWzFdICsgXAotICAgICAgICAgICAgIi9wbGFpbi9tZXRhL2NmZy9rZXJuZWwtY2FjaGUvIiArIGZlYXR1cmUgKyAiP2g9bWV0YSIKLQotICAgIHJldHVybiBmZWF0dXJlX2Rlc2NfdXJsCi0KLQotZGVmIGdldF9mZWF0dXJlX2Rlc2MoZ2l0X3VybCwgZmVhdHVyZSk6Ci0gICAgIiIiCi0gICAgUmV0dXJuIGEgZmVhdHVyZSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybSAnZGVzY3JpcHRpb24gW2NvbXBhdGliaWxpdHldCi0gICAgQlNQcywgYXMgZ2F0aGVyZWQgZnJvbSB0aGUgc2V0IG9mIGZlYXR1cmUgc291cmNlcy4KLSAgICAiIiIKLSAgICBmZWF0dXJlX2Rlc2NfdXJsID0gZmluZF9mZWF0dXJlX2Rlc2NfdXJsKGdpdF91cmwsIGZlYXR1cmUpCi0gICAgZmVhdHVyZV9kZXNjX2NtZCA9ICJ3Z2V0IC1xIC1PIC0gIiArIGZlYXR1cmVfZGVzY191cmwKLSAgICB0bXAgPSBzdWJwcm9jZXNzLlBvcGVuKGZlYXR1cmVfZGVzY19jbWQsIHNoZWxsPVRydWUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0ZG91dC5yZWFkKCkuZGVjb2RlKCd1dGYtOCcpCi0KLSAgICByZXR1cm4gZmluZF9mZWF0dXJlX2Rlc2ModG1wLnNwbGl0KCJcbiIpKQotCi0KLWRlZiB5b2N0b19rZXJuZWxfZmVhdHVyZV9kZXNjcmliZShzY3JpcHRzX3BhdGgsIG1hY2hpbmUsIGZlYXR1cmUpOgotICAgICIiIgotICAgIERpc3BsYXkgdGhlIGRlc2NyaXB0aW9uIG9mIGEgc3BlY2lmaWMga2VybmVsIGZlYXR1cmUgYXZhaWxhYmxlIGZvcgotICAgIHVzZSBpbiBhIEJTUC4KLSAgICAiIiIKLSAgICBsYXllciA9IGZpbmRfYnNwX2xheWVyKG1hY2hpbmUpCi0KLSAgICBrZXJuZWwgPSBmaW5kX2N1cnJlbnRfa2VybmVsKGxheWVyLCBtYWNoaW5lKQotICAgIGlmIG5vdCBrZXJuZWw6Ci0gICAgICAgIHByaW50KCJDb3VsZG4ndCBkZXRlcm1pbmUgdGhlIGtlcm5lbCBmb3IgdGhpcyBCU1AsIGV4aXRpbmcuIikKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIGNvbnRleHQgPSBjcmVhdGVfY29udGV4dChtYWNoaW5lLCAiYXJjaCIsIHNjcmlwdHNfcGF0aCkKLSAgICBjb250ZXh0WyJuYW1lIl0gPSAibmFtZSIKLSAgICBjb250ZXh0WyJmaWxlbmFtZSJdID0ga2VybmVsCi0gICAgZ2l0dXJsID0gZmluZF9naXR1cmwoY29udGV4dCkKLQotICAgIGRlc2MgPSBnZXRfZmVhdHVyZV9kZXNjKGdpdHVybCwgZmVhdHVyZSkKLQotICAgIHByaW50KGRlc2MpCi0KLQotZGVmIGNoZWNrX2ZlYXR1cmVfbmFtZShmZWF0dXJlX25hbWUpOgotICAgICIiIgotICAgIFNhbml0eS1jaGVjayB0aGUgZmVhdHVyZSBuYW1lIGZvciBjcmVhdGUvZGVzdHJveS4gIFJldHVybiBGYWxzZSBpZiBub3QgT0suCi0gICAgIiIiCi0gICAgaWYgbm90IGZlYXR1cmVfbmFtZS5lbmRzd2l0aCgiLnNjYyIpOgotICAgICAgICBwcmludCgiSW52YWxpZCBmZWF0dXJlIG5hbWUgKG11c3QgZW5kIHdpdGggLnNjYykgWyVzXSwgZXhpdGluZyIgJSBmZWF0dXJlX25hbWUpCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgaWYgIi8iIGluIGZlYXR1cmVfbmFtZToKLSAgICAgICAgcHJpbnQoIkludmFsaWQgZmVhdHVyZSBuYW1lIChkb24ndCBzcGVjaWZ5IGRpcmVjdG9yeSkgWyVzXSwgZXhpdGluZyIgJSBmZWF0dXJlX25hbWUpCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgcmV0dXJuIFRydWUKLQotCi1kZWYgY2hlY2tfY3JlYXRlX2lucHV0KGZlYXR1cmVfaXRlbXMpOgotICAgICIiIgotICAgIFNhbml0eS1jaGVjayB0aGUgY3JlYXRlIGlucHV0LiAgUmV0dXJuIEZhbHNlIGlmIG5vdCBPSy4KLSAgICAiIiIKLSAgICBpZiBub3QgY2hlY2tfZmVhdHVyZV9uYW1lKGZlYXR1cmVfaXRlbXNbMF0pOgotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGlmIGZlYXR1cmVfaXRlbXNbMV0uZW5kc3dpdGgoIi5wYXRjaCIpIG9yIGZlYXR1cmVfaXRlbXNbMV0uc3RhcnRzd2l0aCgiQ09ORklHXyIpOgotICAgICAgICBwcmludCgiTWlzc2luZyBkZXNjcmlwdGlvbiBhbmQvb3IgY29tcGF0aWJpbHR5IFslc10sIGV4aXRpbmciICUgZmVhdHVyZV9pdGVtc1sxXSkKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBpZiBmZWF0dXJlX2l0ZW1zWzJdLmVuZHN3aXRoKCIucGF0Y2giKSBvciBmZWF0dXJlX2l0ZW1zWzJdLnN0YXJ0c3dpdGgoIkNPTkZJR18iKToKLSAgICAgICAgcHJpbnQoIk1pc3NpbmcgZGVzY3JpcHRpb24gYW5kL29yIGNvbXBhdGliaWxpdHkgWyVzXSwgZXhpdGluZyIgJSBmZWF0dXJlX2l0ZW1zWzFdKQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIHJldHVybiBUcnVlCi0KLQotZGVmIHlvY3RvX2tlcm5lbF9mZWF0dXJlX2NyZWF0ZShzY3JpcHRzX3BhdGgsIG1hY2hpbmUsIGZlYXR1cmVfaXRlbXMpOgotICAgICIiIgotICAgIENyZWF0ZSBhIHJlY2lwZS1zcGFjZSBrZXJuZWwgZmVhdHVyZSBpbiBhIEJTUC4KLSAgICAiIiIKLSAgICBpZiBub3QgY2hlY2tfY3JlYXRlX2lucHV0KGZlYXR1cmVfaXRlbXMpOgotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgZmVhdHVyZSA9IGZlYXR1cmVfaXRlbXNbMF0KLSAgICBmZWF0dXJlX2Jhc2VuYW1lID0gZmVhdHVyZS5zcGxpdCgiLiIpWzBdCi0gICAgZmVhdHVyZV9kZXNjcmlwdGlvbiA9IGZlYXR1cmVfaXRlbXNbMV0KLSAgICBmZWF0dXJlX2NvbXBhdCA9IGZlYXR1cmVfaXRlbXNbMl0KLQotICAgIHBhdGNoZXMgPSBbXQotICAgIGNmZ19pdGVtcyA9IFtdCi0KLSAgICBmb3IgaXRlbSBpbiBmZWF0dXJlX2l0ZW1zWzM6XToKLSAgICAgICAgaWYgaXRlbS5lbmRzd2l0aCgiLnBhdGNoIik6Ci0gICAgICAgICAgICBwYXRjaGVzLmFwcGVuZChpdGVtKQotICAgICAgICBlbGlmIGl0ZW0uc3RhcnRzd2l0aCgiQ09ORklHIik6Ci0gICAgICAgICAgICBpZiAoIj15IiBpbiBpdGVtIG9yICI9bSIgaW4gaXRlbSk6Ci0gICAgICAgICAgICAgICAgY2ZnX2l0ZW1zLmFwcGVuZChpdGVtKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJpbnQoIkludmFsaWQgZmVhdHVyZSBpdGVtIChtdXN0IGJlIC5wYXRjaCBvciBDT05GSUdfKikgWyVzXSwgZXhpdGluZyIgJSBpdGVtKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIGZlYXR1cmVfZGlybmFtZSA9ICJjZmciCi0gICAgaWYgcGF0Y2hlczoKLSAgICAgICAgZmVhdHVyZV9kaXJuYW1lID0gImZlYXR1cmVzIgotCi0gICAgZmlsZXNkaXIgPSBmaW5kX2ZpbGVzZGlyKHNjcmlwdHNfcGF0aCwgbWFjaGluZSkKLSAgICBpZiBub3QgZmlsZXNkaXI6Ci0gICAgICAgIHByaW50KCJDb3VsZG4ndCBhZGQgZmVhdHVyZSAoJXMpLCBubyAnZmlsZXMnIGRpciBmb3VuZCIgJSBmZWF0dXJlKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgZmVhdGRpciA9IG9zLnBhdGguam9pbihmaWxlc2RpciwgZmVhdHVyZV9kaXJuYW1lKQotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmZWF0ZGlyKToKLSAgICAgICAgb3MubWtkaXIoZmVhdGRpcikKLQotICAgIGZvciBwYXRjaCBpbiBwYXRjaGVzOgotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUocGF0Y2gpOgotICAgICAgICAgICAgcHJpbnQoIkNvdWxkbid0IGZpbmQgcGF0Y2ggKCVzKSwgZXhpdGluZyIgJSBwYXRjaCkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIGJhc2VuYW1lID0gb3MucGF0aC5iYXNlbmFtZShwYXRjaCkKLSAgICAgICAgZmVhdGRpcl9wYXRjaCA9IG9zLnBhdGguam9pbihmZWF0ZGlyLCBiYXNlbmFtZSkKLSAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHBhdGNoLCBmZWF0ZGlyX3BhdGNoKQotCi0gICAgbmV3X2NmZ19maWxlbmFtZSA9IG9zLnBhdGguam9pbihmZWF0ZGlyLCBmZWF0dXJlX2Jhc2VuYW1lICsgIi5jZmciKQotICAgIG5ld19jZmdfZmlsZSA9IG9wZW4obmV3X2NmZ19maWxlbmFtZSwgInciKQotICAgIGZvciBjZmdfaXRlbSBpbiBjZmdfaXRlbXM6Ci0gICAgICAgIG5ld19jZmdfZmlsZS53cml0ZShjZmdfaXRlbSArICJcbiIpCi0gICAgbmV3X2NmZ19maWxlLmNsb3NlKCkKLQotICAgIG5ld19mZWF0dXJlX2ZpbGVuYW1lID0gb3MucGF0aC5qb2luKGZlYXRkaXIsIGZlYXR1cmVfYmFzZW5hbWUgKyAiLnNjYyIpCi0gICAgbmV3X2ZlYXR1cmVfZmlsZSA9IG9wZW4obmV3X2ZlYXR1cmVfZmlsZW5hbWUsICJ3IikKLSAgICBuZXdfZmVhdHVyZV9maWxlLndyaXRlKCJkZWZpbmUgS0ZFQVRVUkVfREVTQ1JJUFRJT04gXCIiICsgZmVhdHVyZV9kZXNjcmlwdGlvbiArICJcIlxuIikKLSAgICBuZXdfZmVhdHVyZV9maWxlLndyaXRlKCJkZWZpbmUgS0ZFQVRVUkVfQ09NUEFUSUJJTElUWSAiICsgZmVhdHVyZV9jb21wYXQgKyAiXG5cbiIpCi0KLSAgICBmb3IgcGF0Y2ggaW4gcGF0Y2hlczoKLSAgICAgICAgcGF0Y2hfZGlyLCBwYXRjaF9maWxlID0gb3MucGF0aC5zcGxpdChwYXRjaCkKLSAgICAgICAgbmV3X2ZlYXR1cmVfZmlsZS53cml0ZSgicGF0Y2ggIiArIHBhdGNoX2ZpbGUgKyAiXG4iKQotCi0gICAgbmV3X2ZlYXR1cmVfZmlsZS53cml0ZSgia2NvbmYgbm9uLWhhcmR3YXJlICIgKyBmZWF0dXJlX2Jhc2VuYW1lICsgIi5jZmdcbiIpCi0gICAgbmV3X2ZlYXR1cmVfZmlsZS5jbG9zZSgpCi0KLSAgICBwcmludCgiQWRkZWQgZmVhdHVyZToiKQotICAgIHByaW50KCJcdCVzIiAlIGZlYXR1cmVfZGlybmFtZSArICIvIiArIGZlYXR1cmUpCi0KLQotZGVmIGZlYXR1cmVfaW5fdXNlKHNjcmlwdHNfcGF0aCwgbWFjaGluZSwgZmVhdHVyZSk6Ci0gICAgIiIiCi0gICAgRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBmZWF0dXJlIGlzIGluIHVzZSBieSB0aGUgQlNQLgotICAgIFJldHVybiBUcnVlIGlmIHNvLCBGYWxzZSBvdGhlcndpc2UuCi0gICAgIiIiCi0gICAgZmVhdHVyZXMgPSByZWFkX2ZlYXR1cmVzKHNjcmlwdHNfcGF0aCwgbWFjaGluZSkKLSAgICBmb3IgZiBpbiBmZWF0dXJlczoKLSAgICAgICAgaWYgZiA9PSBmZWF0dXJlOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICByZXR1cm4gRmFsc2UKLQotCi1kZWYgZmVhdHVyZV9yZW1vdmUoc2NyaXB0c19wYXRoLCBtYWNoaW5lLCBmZWF0dXJlKToKLSAgICAiIiIKLSAgICBSZW1vdmUgdGhlIHNwZWNpZmllZCBmZWF0dXJlIGZyb20gdGhlIGF2YWlsYWJsZSByZWNpcGUtc3BhY2UKLSAgICBmZWF0dXJlcyBkZWZpbmVkIGZvciB0aGUgQlNQLgotICAgICIiIgotICAgIGZlYXR1cmVzID0gcmVhZF9mZWF0dXJlcyhzY3JpcHRzX3BhdGgsIG1hY2hpbmUpCi0gICAgbmV3X2ZlYXR1cmVzID0gW10KLSAgICBmb3IgZiBpbiBmZWF0dXJlczoKLSAgICAgICAgaWYgZiA9PSBmZWF0dXJlOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgbmV3X2ZlYXR1cmVzLmFwcGVuZChmKQotICAgIHdyaXRlX2ZlYXR1cmVzKHNjcmlwdHNfcGF0aCwgbWFjaGluZSwgbmV3X2ZlYXR1cmVzKQotCi0KLWRlZiB5b2N0b19rZXJuZWxfZmVhdHVyZV9kZXN0cm95KHNjcmlwdHNfcGF0aCwgbWFjaGluZSwgZmVhdHVyZSk6Ci0gICAgIiIiCi0gICAgUmVtb3ZlIGEgcmVjaXBlLXNwYWNlIGtlcm5lbCBmZWF0dXJlIGZyb20gYSBCU1AuCi0gICAgIiIiCi0gICAgaWYgbm90IGNoZWNrX2ZlYXR1cmVfbmFtZShmZWF0dXJlKToKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIGlmIGZlYXR1cmVfaW5fdXNlKHNjcmlwdHNfcGF0aCwgbWFjaGluZSwgImZlYXR1cmVzLyIgKyBmZWF0dXJlKSBvciBcCi0gICAgICAgICAgICBmZWF0dXJlX2luX3VzZShzY3JpcHRzX3BhdGgsIG1hY2hpbmUsICJjZmcvIiArIGZlYXR1cmUpOgotICAgICAgICBwcmludCgiRmVhdHVyZSAlcyBpcyBpbiB1c2UgKHVzZSAnZmVhdHVyZSBybScgdG8gdW4tdXNlIGl0IGZpcnN0KSwgZXhpdGluZyIgJSBmZWF0dXJlKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgZmlsZXNkaXIgPSBmaW5kX2ZpbGVzZGlyKHNjcmlwdHNfcGF0aCwgbWFjaGluZSkKLSAgICBpZiBub3QgZmlsZXNkaXI6Ci0gICAgICAgIHByaW50KCJDb3VsZG4ndCBkZXN0cm95IGZlYXR1cmUgKCVzKSwgbm8gJ2ZpbGVzJyBkaXIgZm91bmQiICUgZmVhdHVyZSkKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIGZlYXR1cmVfZGlybmFtZSA9ICJmZWF0dXJlcyIKLSAgICBmZWF0ZGlyID0gb3MucGF0aC5qb2luKGZpbGVzZGlyLCBmZWF0dXJlX2Rpcm5hbWUpCi0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZlYXRkaXIpOgotICAgICAgICBwcmludCgiQ291bGRuJ3QgZmluZCBmZWF0dXJlIGRpcmVjdG9yeSAoJXMpIiAlIGZlYXR1cmVfZGlybmFtZSkKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIGZlYXR1cmVfZnFuID0gb3MucGF0aC5qb2luKGZlYXRkaXIsIGZlYXR1cmUpCi0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZlYXR1cmVfZnFuKToKLSAgICAgICAgZmVhdHVyZV9kaXJuYW1lID0gImNmZyIKLSAgICAgICAgZmVhdGRpciA9IG9zLnBhdGguam9pbihmaWxlc2RpciwgZmVhdHVyZV9kaXJuYW1lKQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZmVhdGRpcik6Ci0gICAgICAgICAgICBwcmludCgiQ291bGRuJ3QgZmluZCBmZWF0dXJlIGRpcmVjdG9yeSAoJXMpIiAlIGZlYXR1cmVfZGlybmFtZSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIGZlYXR1cmVfZnFuID0gb3MucGF0aC5qb2luKGZlYXRkaXIsIGZlYXR1cmVfZmlsZW5hbWUpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmZWF0dXJlX2Zxbik6Ci0gICAgICAgICAgICBwcmludCgiQ291bGRuJ3QgZmluZCBmZWF0dXJlICglcykiICUgZmVhdHVyZSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICBmID0gb3BlbihmZWF0dXJlX2ZxbiwgInIiKQotICAgIGxpbmVzID0gZi5yZWFkbGluZXMoKQotICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICBzID0gbGluZS5zdHJpcCgpCi0gICAgICAgIGlmIHMuc3RhcnRzd2l0aCgicGF0Y2ggIikgb3Igcy5zdGFydHN3aXRoKCJrY29uZiAiKToKLSAgICAgICAgICAgIHNwbGl0X2xpbmUgPSBzLnNwbGl0KCkKLSAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKGZlYXRkaXIsIHNwbGl0X2xpbmVbLTFdKQotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZmlsZW5hbWUpOgotICAgICAgICAgICAgICAgIG9zLnJlbW92ZShmaWxlbmFtZSkKLSAgICBmLmNsb3NlKCkKLSAgICBvcy5yZW1vdmUoZmVhdHVyZV9mcW4pCi0KLSAgICBmZWF0dXJlX3JlbW92ZShzY3JpcHRzX3BhdGgsIG1hY2hpbmUsIGZlYXR1cmUpCi0KLSAgICBwcmludCgiUmVtb3ZlZCBmZWF0dXJlOiIpCi0gICAgcHJpbnQoIlx0JXMiICUgZmVhdHVyZV9kaXJuYW1lICsgIi8iICsgZmVhdHVyZSkKLQotCi1kZWYgYmFzZV9icmFuY2hlcyhjb250ZXh0KToKLSAgICAiIiIKLSAgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSBiYXNlIGJyYW5jaGVzIGZvdW5kIGluIHRoZSBrZXJuZWwgZ2l0IHJlcG8uCi0gICAgIiIiCi0gICAgZ2l0dXJsID0gZmluZF9naXR1cmwoY29udGV4dCkKLQotICAgIHByaW50KCJHZXR0aW5nIGJyYW5jaGVzIGZyb20gcmVtb3RlIHJlcG8gJXMuLi4iICUgZ2l0dXJsKQotCi0gICAgZ2l0Y21kID0gImdpdCBscy1yZW1vdGUgJXMgKmhlYWRzKiAyPiYxIiAlIChnaXR1cmwpCi0gICAgdG1wID0gc3VicHJvY2Vzcy5Qb3BlbihnaXRjbWQsIHNoZWxsPVRydWUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0ZG91dC5yZWFkKCkuZGVjb2RlKCd1dGYtOCcpCi0KLSAgICBicmFuY2hlcyA9IFtdCi0KLSAgICBpZiB0bXA6Ci0gICAgICAgIHRtcGxpbmUgPSB0bXAuc3BsaXQoIlxuIikKLSAgICAgICAgZm9yIGxpbmUgaW4gdG1wbGluZToKLSAgICAgICAgICAgIGlmIGxlbihsaW5lKT09MDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGlmIG5vdCBsaW5lLmVuZHN3aXRoKCJiYXNlIik6Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZHggPSBsaW5lLmZpbmQoInJlZnMvaGVhZHMvIikKLSAgICAgICAgICAgIGticmFuY2ggPSBsaW5lW2lkeCArIGxlbigicmVmcy9oZWFkcy8iKTpdCi0gICAgICAgICAgICBpZiBrYnJhbmNoLmZpbmQoIi8iKSA9PSAtMSBhbmQga2JyYW5jaC5maW5kKCJiYXNlIikgPT0gLTE6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlkeCA9IGticmFuY2guZmluZCgiYmFzZSIpCi0gICAgICAgICAgICBicmFuY2hlcy5hcHBlbmQoa2JyYW5jaFs6aWR4IC0gMV0pCi0KLSAgICByZXR1cm4gYnJhbmNoZXMKLQotCi1kZWYgYWxsX2JyYW5jaGVzKGNvbnRleHQpOgotICAgICIiIgotICAgIFJldHVybiBhIGxpc3Qgb2YgYWxsIHRoZSBicmFuY2hlcyBmb3VuZCBpbiB0aGUga2VybmVsIGdpdCByZXBvLgotICAgICIiIgotICAgIGdpdHVybCA9IGZpbmRfZ2l0dXJsKGNvbnRleHQpCi0KLSAgICBwcmludCgiR2V0dGluZyBicmFuY2hlcyBmcm9tIHJlbW90ZSByZXBvICVzLi4uIiAlIGdpdHVybCkKLQotICAgIGdpdGNtZCA9ICJnaXQgbHMtcmVtb3RlICVzICpoZWFkcyogMj4mMSIgJSAoZ2l0dXJsKQotICAgIHRtcCA9IHN1YnByb2Nlc3MuUG9wZW4oZ2l0Y21kLCBzaGVsbD1UcnVlLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKS5zdGRvdXQucmVhZCgpLmRlY29kZSgndXRmLTgnKQotCi0gICAgYnJhbmNoZXMgPSBbXQotCi0gICAgYmFzZV9wcmVmaXhlcyA9IE5vbmUKLQotICAgIHRyeToKLSAgICAgICAgYnJhbmNoZXNfYmFzZSA9IGNvbnRleHRbImJyYW5jaGVzX2Jhc2UiXQotICAgICAgICBpZiBicmFuY2hlc19iYXNlOgotICAgICAgICAgICAgYmFzZV9wcmVmaXhlcyA9IGJyYW5jaGVzX2Jhc2Uuc3BsaXQoIjoiKQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgcGFzcwotCi0gICAgYXJjaCA9IGNvbnRleHRbImFyY2giXQotCi0gICAgaWYgdG1wOgotICAgICAgICB0bXBsaW5lID0gdG1wLnNwbGl0KCJcbiIpCi0gICAgICAgIGZvciBsaW5lIGluIHRtcGxpbmU6Ci0gICAgICAgICAgICBpZiBsZW4obGluZSk9PTA6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZHggPSBsaW5lLmZpbmQoInJlZnMvaGVhZHMvIikKLSAgICAgICAgICAgIGticmFuY2ggPSBsaW5lW2lkeCArIGxlbigicmVmcy9oZWFkcy8iKTpdCi0gICAgICAgICAgICBrYnJhbmNoX3ByZWZpeCA9IGticmFuY2gucnNwbGl0KCIvIiwgMSlbMF0KLQotICAgICAgICAgICAgaWYgYmFzZV9wcmVmaXhlczoKLSAgICAgICAgICAgICAgICBmb3IgYmFzZV9wcmVmaXggaW4gYmFzZV9wcmVmaXhlczoKLSAgICAgICAgICAgICAgICAgICAgaWYga2JyYW5jaF9wcmVmaXggPT0gYmFzZV9wcmVmaXg6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmFuY2hlcy5hcHBlbmQoa2JyYW5jaCkKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICBpZiAoa2JyYW5jaC5maW5kKCIvIikgIT0gLTEgYW5kCi0gICAgICAgICAgICAgICAgKGticmFuY2guZmluZCgic3RhbmRhcmQiKSAhPSAtMSBvciBrYnJhbmNoLmZpbmQoImJhc2UiKSAhPSAtMSkgb3IKLSAgICAgICAgICAgICAgICBrYnJhbmNoID09ICJiYXNlIik6Ci0gICAgICAgICAgICAgICAgYnJhbmNoZXMuYXBwZW5kKGticmFuY2gpCi0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAgIHJldHVybiBicmFuY2hlcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtLy5naXRpZ25vcmUgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vLmdpdGlnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY5ZGUyOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vLmdpdGlnbm9yZQorKysgL2Rldi9udWxsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9jb25mL21hY2hpbmUvbWFjaGluZS5jb25mCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjQ3NTBjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9jb25mL21hY2hpbmUvbWFjaGluZS5jb25mCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS5jb25mCi0jQFRZUEU6IE1hY2hpbmUKLSNATkFNRToge3s9bWFjaGluZX19Ci0KLSNAREVTQ1JJUFRJT046IE1hY2hpbmUgY29uZmlndXJhdGlvbiBmb3Ige3s9bWFjaGluZX19IHN5c3RlbXMKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToieHNlcnZlciIgcHJpbzoiNTAiIG1zZzoiRG8geW91IG5lZWQgc3VwcG9ydCBmb3IgWD8gKHkvbikiIGRlZmF1bHQ6InkiIH19Ci17eyBpZiB4c2VydmVyID09ICJ5IjogfX0KLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3hzZXJ2ZXIgPz0gInhzZXJ2ZXIteG9yZyIKLVhTRVJWRVIgPz0gInhzZXJ2ZXIteG9yZyBcCi0gICAgICAgICAgIHhmODYtdmlkZW8tZmJkZXYgXAotICAgICAgICAgICAiCi0KLU1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgPSAiIGtlcm5lbC1tb2R1bGVzIGtlcm5lbC1kZXZpY2V0cmVlIgotCi1FWFRSQV9JTUFHRURFUEVORFMgKz0gInUtYm9vdCIKLQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToidHVuZWZpbGUiIHByaW86IjQwIiBtc2c6IldoaWNoIG1hY2hpbmUgdHVuaW5nIHdvdWxkIHlvdSBsaWtlIHRvIHVzZT8iIGRlZmF1bHQ6InR1bmVfY29ydGV4YTgiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoidHVuZV9hcm0xMTM2amZfcyIgbXNnOiJhcm0xMTM2amYtcyB0dW5pbmcgb3B0aW1pemF0aW9ucyIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJ0dW5lX2FybTkyMHQiIG1zZzoiYXJtOTIwdCB0dW5pbmcgb3B0aW1pemF0aW9ucyIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJ0dW5lX2FybTkyNmVqcyIgbXNnOiJhcm05MjZlanMgdHVuaW5nIG9wdGltaXphdGlvbnMiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoidHVuZV9hcm05dGRtaSIgbXNnOiJhcm05dGRtaSB0dW5pbmcgb3B0aW1pemF0aW9ucyIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJ0dW5lX2NvcnRleGE1IiBtc2c6ImNvcnRleGE1IHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfY29ydGV4YTciIG1zZzoiY29ydGV4YTcgdHVuaW5nIG9wdGltaXphdGlvbnMiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoidHVuZV9jb3J0ZXhhOCIgbXNnOiJjb3J0ZXhhOCB0dW5pbmcgb3B0aW1pemF0aW9ucyIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJ0dW5lX2NvcnRleGE5IiBtc2c6ImNvcnRleGE5IHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfY29ydGV4YTE1IiBtc2c6ImNvcnRleGExNSB0dW5pbmcgb3B0aW1pemF0aW9ucyIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJ0dW5lX2NvcnRleG0xIiBtc2c6ImNvcnRleG0xIHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfY29ydGV4bTMiIG1zZzoiY29ydGV4bTMgdHVuaW5nIG9wdGltaXphdGlvbnMiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoidHVuZV9jb3J0ZXhyNCIgbXNnOiJjb3J0ZXhyNCB0dW5pbmcgb3B0aW1pemF0aW9ucyIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJ0dW5lX2VwOTMxMiIgbXNnOiJlcDkzMTIgdHVuaW5nIG9wdGltaXphdGlvbnMiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoidHVuZV9pd21teHQiIG1zZzoiaXdtbXh0IHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfc3Ryb25nYXJtMTEwMCIgbXNnOiJzdHJvbmdhcm0xMTAwIHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfeHNjYWxlIiBtc2c6InhzY2FsZSB0dW5pbmcgb3B0aW1pemF0aW9ucyIgfX0KLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX2FybTExMzZqZl9zIjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm0xMTM2amYtcy5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX2FybTkyMHQiOiB9fQotaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWFybTkyMHQuaW5jCi17eyBpZiB0dW5lZmlsZSA9PSAidHVuZV9hcm05MjZlanMiOiB9fQotaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWFybTkyNmVqcy5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX2FybTl0ZG1pIjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm05dGRtaS5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX2NvcnRleGE1IjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhhNS5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX2NvcnRleGE3IjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhhNy5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX2NvcnRleGE4IjogfX0KLURFRkFVTFRUVU5FID89ICJjb3J0ZXhhOGhmLW5lb24iCi1pbmNsdWRlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29ydGV4YTguaW5jCi17eyBpZiB0dW5lZmlsZSA9PSAidHVuZV9jb3J0ZXhhOSI6IH19Ci1pbmNsdWRlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29ydGV4YTkuaW5jCi17eyBpZiB0dW5lZmlsZSA9PSAidHVuZV9jb3J0ZXhhMTUiOiB9fQotaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGExNS5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX2NvcnRleG0xIjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhtMS5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX2NvcnRleG0zIjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhtMy5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX2NvcnRleHI0IjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhyNC5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX2VwOTMxMiI6IH19Ci1pbmNsdWRlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtZXA5MzEyLmluYwote3sgaWYgdHVuZWZpbGUgPT0gInR1bmVfaXdtbXh0IjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1pd21teHQuaW5jCi17eyBpZiB0dW5lZmlsZSA9PSAidHVuZV9zdHJvbmdhcm0xMTAwIjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1zdHJvbmdhcm0xMTAwLmluYwote3sgaWYgdHVuZWZpbGUgPT0gInR1bmVfeHNjYWxlIjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS14c2NhbGUuaW5jCi0KLUlNQUdFX0ZTVFlQRVMgKz0gInRhci5iejIgamZmczIiCi1FWFRSQV9JTUFHRUNNRF9qZmZzMiA9ICItbG5wICIKLQotU0VSSUFMX0NPTlNPTEUgPSAiMTE1MjAwIHR0eU8wIgotCi17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJjdXN0b20iOiBwcmVmZXJyZWRfa2VybmVsID0gImxpbnV4LXlvY3RvLWN1c3RvbSIgfX0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLWRldiI6IHByZWZlcnJlZF9rZXJuZWwgPSAibGludXgteW9jdG8tZGV2IiB9fQote3sgaWYga2VybmVsX2Nob2ljZSA9PSAiY3VzdG9tIiBvciBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by1kZXYiIDogfX0KLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAie3s9cHJlZmVycmVkX2tlcm5lbH19IgotCi17eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iIGFuZCBrZXJuZWxfY2hvaWNlICE9ICJsaW51eC15b2N0by1kZXYiOiBwcmVmZXJyZWRfa2VybmVsID0ga2VybmVsX2Nob2ljZS5zcGxpdCgnXycpWzBdIH19Ci17eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iIGFuZCBrZXJuZWxfY2hvaWNlICE9ICJsaW51eC15b2N0by1kZXYiOiBwcmVmZXJyZWRfa2VybmVsX3ZlcnNpb24gPSBrZXJuZWxfY2hvaWNlLnNwbGl0KCdfJylbMV0gfX0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSIgYW5kIGtlcm5lbF9jaG9pY2UgIT0gImxpbnV4LXlvY3RvLWRldiI6IH19Ci1QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gInt7PXByZWZlcnJlZF9rZXJuZWx9fSIKLVBSRUZFUlJFRF9WRVJTSU9OX3t7PXByZWZlcnJlZF9rZXJuZWx9fSA/PSAie3s9cHJlZmVycmVkX2tlcm5lbF92ZXJzaW9ufX0lIgotCi1LRVJORUxfSU1BR0VUWVBFID0gInVJbWFnZSIKLUtFUk5FTF9ERVZJQ0VUUkVFID0gImFtMzM1eC1ib25lLmR0YiBhbTMzNXgtYm9uZWJsYWNrLmR0YiIKLUtFUk5FTF9FWFRSQV9BUkdTICs9ICJMT0FEQUREUj0ke1VCT09UX0VOVFJZUE9JTlR9IgotCi1TUExfQklOQVJZID0gIk1MTyIKLVVCT09UX1NVRkZJWCA9ICJpbWciCi17eyBpbnB1dCB0eXBlOiJlZGl0IiBuYW1lOiJ1Ym9vdF9tYWNoaW5lIiBwcmlvOiI0MCIgbXNnOiJQbGVhc2Ugc3BlY2lmeSBhIHZhbHVlIGZvciBVQk9PVF9NQUNISU5FOiIgZGVmYXVsdDoiYW0zMzV4X2V2bV9jb25maWciIH19Ci1VQk9PVF9NQUNISU5FID0gInt7PXVib290X21hY2hpbmV9fSIKLXt7IGlucHV0IHR5cGU6ImVkaXQiIG5hbWU6InVib290X2VudHJ5cG9pbnQiIHByaW86IjQwIiBtc2c6IlBsZWFzZSBzcGVjaWZ5IGEgdmFsdWUgZm9yIFVCT09UX0VOVFJZUE9JTlQ6IiBkZWZhdWx0OiIweDgwMDA4MDAwIiB9fQotVUJPT1RfRU5UUllQT0lOVCA9ICJ7ez11Ym9vdF9lbnRyeXBvaW50fX0iCi17eyBpbnB1dCB0eXBlOiJlZGl0IiBuYW1lOiJ1Ym9vdF9sb2FkYWRkcmVzcyIgcHJpbzoiNDAiIG1zZzoiUGxlYXNlIHNwZWNpZnkgYSB2YWx1ZSBmb3IgVUJPT1RfTE9BREFERFJFU1M6IiBkZWZhdWx0OiIweDgwMDA4MDAwIiB9fQotVUJPT1RfTE9BREFERFJFU1MgPSAie3s9dWJvb3RfbG9hZGFkZHJlc3N9fSIKLQotTUFDSElORV9GRUFUVVJFUyA9ICJ1c2JnYWRnZXQgdXNiaG9zdCB2ZmF0IGFsc2EiCi0KLUlNQUdFX0JPT1RfRklMRVMgPz0gInUtYm9vdC4ke1VCT09UX1NVRkZJWH0gTUxPIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvbWFjaGluZS5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9tYWNoaW5lLm5vaW5zdGFsbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQ0MmQwMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9tYWNoaW5lLm5vaW5zdGFsbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWRpcm5hbWUge3s9bWFjaGluZX19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9tYWNoaW5lL3hvcmcuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL21hY2hpbmUveG9yZy5jb25mCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzUyODkzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL21hY2hpbmUveG9yZy5jb25mCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYgeHNlcnZlciA9PSAieSI6IH19IHRoaXMKLVNlY3Rpb24gIk1vZHVsZSIKLQlMb2FkCSJleHRtb2QiCi0JTG9hZAkiZGJlIgotCUxvYWQJImdseCIKLQlMb2FkCSJmcmVldHlwZSIKLQlMb2FkCSJ0eXBlMSIKLQlMb2FkCSJyZWNvcmQiCi0JTG9hZAkiZHJpIgotRW5kU2VjdGlvbgotCi1TZWN0aW9uICJNb25pdG9yIgotCUlkZW50aWZpZXIJIkJ1aWx0aW4gRGVmYXVsdCBNb25pdG9yIgotRW5kU2VjdGlvbgotCi1TZWN0aW9uICJEZXZpY2UiCi0JSWRlbnRpZmllcgkiQnVpbHRpbiBEZWZhdWx0IGZiZGV2IERldmljZSAwIgotCURyaXZlcgkJIm9tYXBmYiIKLUVuZFNlY3Rpb24KLQotU2VjdGlvbiAiU2NyZWVuIgotCUlkZW50aWZpZXIJIkJ1aWx0aW4gRGVmYXVsdCBmYmRldiBTY3JlZW4gMCIKLQlEZXZpY2UJCSJCdWlsdGluIERlZmF1bHQgZmJkZXYgRGV2aWNlIDAiCi0JTW9uaXRvcgkJIkJ1aWx0aW4gRGVmYXVsdCBNb25pdG9yIgotRW5kU2VjdGlvbgotCi1TZWN0aW9uICJTZXJ2ZXJMYXlvdXQiCi0JSWRlbnRpZmllcgkiQnVpbHRpbiBEZWZhdWx0IExheW91dCIKLQlTY3JlZW4JCSJCdWlsdGluIERlZmF1bHQgZmJkZXYgU2NyZWVuIDAiCi1FbmRTZWN0aW9uCi0KLVNlY3Rpb24gIlNlcnZlckZsYWdzIgotCU9wdGlvbgkJIkRvbnRaYXAiICAiMCIKLUVuZFNlY3Rpb24KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnXzAuMS5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnXzAuMS5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA4MzAwMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZ18wLjEuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIHhzZXJ2ZXIgPT0gInkiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMubm9pbnN0YWxsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzLm5vaW5zdGFsbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWUwZDkyYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMubm9pbnN0YWxsCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZGlybmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iOiB9fSBmaWxlcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtbm9uX2hhcmR3YXJlLmNmZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLW5vbl9oYXJkd2FyZS5jZmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliZmM5MGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtbm9uX2hhcmR3YXJlLmNmZworKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS1ub25faGFyZHdhcmUuY2ZnCi0jCi0jIE1pc2NlbGxhbmVvdXMgZmlsZXN5c3RlbXMKLSMKLUNPTkZJR19ORlNfREVGX0ZJTEVfSU9fU0laRT0xMDI0Ci0KLSMKLSMgTXVsdGlwbGUgRGV2aWNlIFN1cHBvcnQKLSMKLSMgQ09ORklHX01EIGlzIG5vdCBzZXQKLQotIyBLZXJuZWwgRmVhdHVyZXMKLSMKLUNPTkZJR19OT19IWj15Ci0KLSMKLSMgQ1BVSWRsZQotIwotQ09ORklHX0NQVV9JRExFPXkKLUNPTkZJR19DUFVfSURMRV9HT1ZfTEFEREVSPXkKLUNPTkZJR19DUFVfSURMRV9HT1ZfTUVOVT15Ci0KLSMKLSMgS2VybmVsIGhhY2tpbmcKLSMKLUNPTkZJR19ERUJVR19GUz15Ci0KLSMKLSMgUG93ZXIgbWFuYWdlbWVudCBvcHRpb25zCi0jCi1DT05GSUdfUE1fREVCVUc9eQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtcHJlZW1wdC1ydC5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1wcmVlbXB0LXJ0LnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE2OTY2Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1wcmVlbXB0LXJ0LnNjYworKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS1wcmVlbXB0LXJ0LnNjYwotZGVmaW5lIEtNQUNISU5FIHt7PW1hY2hpbmV9fQotCi1kZWZpbmUgS0FSQ0ggYXJtCi0KLWluY2x1ZGUge3s9bWFwX3ByZWVtcHRfcnRfa2JyYW5jaChuZWVkX25ld19rYnJhbmNoLCBuZXdfa2JyYW5jaCwgZXhpc3Rpbmdfa2JyYW5jaCl9fQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci1kZWZpbmUgS1RZUEUge3s9bmV3X2ticmFuY2h9fQotYnJhbmNoIHt7PW1hY2hpbmV9fQotCi1pbmNsdWRlIHt7PW1hY2hpbmV9fS5zY2MKLQotIyBkZWZhdWx0IHBvbGljeSBmb3IgcHJlZW1wdC1ydCBrZXJuZWxzCi1pbmNsdWRlIGZlYXR1cmVzL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC5zY2MKLWluY2x1ZGUgZmVhdHVyZXMvcHJvZmlsaW5nL3Byb2ZpbGluZy5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXN0YW5kYXJkLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXN0YW5kYXJkLnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE4ODE1Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1zdGFuZGFyZC5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjCi1kZWZpbmUgS01BQ0hJTkUge3s9bWFjaGluZX19Ci0KLWRlZmluZSBLQVJDSCBhcm0KLQotaW5jbHVkZSB7ez1tYXBfc3RhbmRhcmRfa2JyYW5jaChuZWVkX25ld19rYnJhbmNoLCBuZXdfa2JyYW5jaCwgZXhpc3Rpbmdfa2JyYW5jaCl9fSBub3BhdGNoCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLWRlZmluZSBLVFlQRSB7ez1uZXdfa2JyYW5jaH19Ci1icmFuY2gge3s9bWFjaGluZX19Ci0KLWluY2x1ZGUge3s9bWFjaGluZX19LnNjYwotCi0jIGRlZmF1bHQgcG9saWN5IGZvciBzdGFuZGFyZCBrZXJuZWxzCi1pbmNsdWRlIGZlYXR1cmVzL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC5zY2MKLWluY2x1ZGUgZmVhdHVyZXMvcHJvZmlsaW5nL3Byb2ZpbGluZy5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXRpbnkuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdGlueS5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyMWI3ZTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdGlueS5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tdGlueS5zY2MKLWRlZmluZSBLTUFDSElORSB7ez1tYWNoaW5lfX0KLQotZGVmaW5lIEtBUkNIIGFybQotCi1pbmNsdWRlIHt7PW1hcF90aW55X2ticmFuY2gobmVlZF9uZXdfa2JyYW5jaCwgbmV3X2ticmFuY2gsIGV4aXN0aW5nX2ticmFuY2gpfX0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQotZGVmaW5lIEtUWVBFIHt7PW5ld19rYnJhbmNofX0KLWJyYW5jaCB7ez1tYWNoaW5lfX0KLQotaW5jbHVkZSB7ez1tYWNoaW5lfX0uc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWNvbmZpZy5jZmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWNvbmZpZy5jZmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3NDg5ZTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1jb25maWcuY2ZnCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1mZWF0dXJlcy5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWZlYXR1cmVzLnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTgyNzU5ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWZlYXR1cmVzLnNjYworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1wYXRjaGVzLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItcGF0Y2hlcy5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3Zjc0N2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1wYXRjaGVzLnNjYworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5jZmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5jZmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyZTFhZTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuY2ZnCisrKyAvZGV2L251bGwKQEAgLTEsMzIxICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS5jZmcKLSMKLSMgU3lzdGVtIFR5cGUKLSMKLUNPTkZJR19BUkNIX09NQVA9eQotCi0jCi0jIFRJIE9NQVAgSW1wbGVtZW50YXRpb25zCi0jCi0jIENPTkZJR19BUkNIX09NQVAyIGlzIG5vdCBzZXQKLUNPTkZJR19BUkNIX09NQVAzPXkKLQotIwotIyBUSSBPTUFQIENvbW1vbiBGZWF0dXJlcwotIwotQ09ORklHX0FSQ0hfT01BUDJQTFVTPXkKLQotIwotIyBPTUFQIEZlYXR1cmUgU2VsZWN0aW9ucwotIwotQ09ORklHX09NQVBfMzJLX1RJTUVSPXkKLUNPTkZJR19PTUFQXzMyS19USU1FUl9IWj0xMjgKLUNPTkZJR19PTUFQX0RNX1RJTUVSPXkKLUNPTkZJR19PTUFQX1JFU0VUX0NMT0NLUz15Ci1DT05GSUdfT01BUF9TTUFSVFJFRkxFWD15Ci1DT05GSUdfT01BUF9TTUFSVFJFRkxFWF9DTEFTUzM9eQotQ09ORklHX09NQVBfTUJPWF9GV0s9bQotQ09ORklHX09NQVBfTUJPWF9LRklGT19TSVpFPTI1NgotCi0jCi0jIE9NQVAgQm9hcmQgVHlwZQotIwotQ09ORklHX01BQ0hfT01BUDNfQkVBR0xFPXkKLQotIwotIyBQcm9jZXNzb3IgRmVhdHVyZXMKLSMKLUNPTkZJR19BUk1fVEhVTUJFRT15Ci1DT05GSUdfQVJNX0VSUkFUQV80MzA5NzM9eQotCi0jCi0jIEtlcm5lbCBGZWF0dXJlcwotIwotQ09ORklHX0xFRFM9eQotCi0KLSMKLSMgU2VyaWFsIGRyaXZlcnMKLSMKLUNPTkZJR19TRVJJQUxfT01BUD15Ci1DT05GSUdfU0VSSUFMX09NQVBfQ09OU09MRT15Ci0KLSMKLSMgQXQgbGVhc3Qgb25lIGVtdWxhdGlvbiBtdXN0IGJlIHNlbGVjdGVkCi0jCi1DT05GSUdfVkZQPXkKLUNPTkZJR19ORU9OPXkKLQotIwotIyBQb3dlciBtYW5hZ2VtZW50IG9wdGlvbnMKLSMKLUNPTkZJR19QTT15Ci1DT05GSUdfUE1fUlVOVElNRT15Ci0KLSMKLSMgR2VuZXJpYyBEcml2ZXIgT3B0aW9ucwotIwotQ09ORklHX01URD15Ci1DT05GSUdfTVREX0NNRExJTkVfUEFSVFM9eQotIwotIyBVc2VyIE1vZHVsZXMgQW5kIFRyYW5zbGF0aW9uIExheWVycwotIwotQ09ORklHX01URF9CTEtERVZTPXkKLUNPTkZJR19NVERfQkxPQ0s9eQotCi0jCi0jIFJBTS9ST00vRmxhc2ggY2hpcCBkcml2ZXJzCi0jCi1DT05GSUdfTVREX0NGST15Ci1DT05GSUdfTVREX0NGSV9JTlRFTEVYVD15Ci0KLSMKLSMgRGlzay1Pbi1DaGlwIERldmljZSBEcml2ZXJzCi0jCi1DT05GSUdfTVREX05BTkQ9eQotCi1DT05GSUdfTVREX05BTkRfT01BUDI9eQotCi1DT05GSUdfTVREX1VCST15Ci0KLSMKLSMgU0NTSSBkZXZpY2Ugc3VwcG9ydAotIwotQ09ORklHX1NDU0k9eQotCi0jCi0jIFNDU0kgc3VwcG9ydCB0eXBlIChkaXNrLCB0YXBlLCBDRC1ST00pCi0jCi1DT05GSUdfQkxLX0RFVl9TRD15Ci0KLSMKLSMgRXRoZXJuZXQgKDEwIG9yIDEwME1iaXQpCi0jCi1DT05GSUdfU01TQzkxMVg9eQotQ09ORklHX1VTQl9ORVRfU01TQzk1WFg9eQotCi0jCi0jIFVzZXJsYW5kIGludGVyZmFjZXMKLSMKLUNPTkZJR19JTlBVVF9FVkRFVj15Ci0KLSMKLSMgSW5wdXQgRGV2aWNlIERyaXZlcnMKLSMKLUNPTkZJR19LRVlCT0FSRF9UV0w0MDMwPXkKLUNPTkZJR19JTlBVVF9UT1VDSFNDUkVFTj15Ci1DT05GSUdfVE9VQ0hTQ1JFRU5fQURTNzg0Nj15Ci0KLSMKLSMgTWlzY2VsbGFuZW91cyBJMkMgQ2hpcCBzdXBwb3J0Ci0jCi1DT05GSUdfSTJDPXkKLUNPTkZJR19JMkNfT01BUD15Ci1DT05GSUdfU1BJPXkKLUNPTkZJR19TUElfTUFTVEVSPXkKLUNPTkZJR19TUElfT01BUDI0WFg9eQotCi0jCi0jIEkyQyBHUElPIGV4cGFuZGVyczoKLSMKLUNPTkZJR19HUElPX1RXTDQwMzA9eQotCi0jCi0jIFNQSSBHUElPIGV4cGFuZGVyczoKLSMKLUNPTkZJR19PTUFQX1dBVENIRE9HPXkKLUNPTkZJR19XQVRDSERPR19OT1dBWU9VVD15Ci0KLSMKLSMgTXVsdGlmdW5jdGlvbiBkZXZpY2UgZHJpdmVycwotIwotQ09ORklHX1RXTDQwMzBfQ09SRT15Ci1DT05GSUdfUkVHVUxBVE9SPXkKLUNPTkZJR19SRUdVTEFUT1JfRFVNTVk9eQotQ09ORklHX1JFR1VMQVRPUl9UV0w0MDMwPXkKLQotIwotIyBHcmFwaGljcyBzdXBwb3J0Ci0jCi1DT05GSUdfRkI9eQotQ09ORklHX0RSTT1tCi0jIENPTkZJR19WR0FTVEFURSBpcyBub3Qgc2V0Ci0jIENPTkZJR19WSURFT19PVVRQVVRfQ09OVFJPTCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GSVJNV0FSRV9FRElEIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZCX0REQyBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQl9CT09UX1ZFU0FfU1VQUE9SVCBpcyBub3Qgc2V0Ci1DT05GSUdfRkJfQ0ZCX0ZJTExSRUNUPXkKLUNPTkZJR19GQl9DRkJfQ09QWUFSRUE9eQotQ09ORklHX0ZCX0NGQl9JTUFHRUJMSVQ9eQotIyBDT05GSUdfRkJfQ0ZCX1JFVl9QSVhFTFNfSU5fQllURSBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQl9TWVNfRklMTFJFQ1QgaXMgbm90IHNldAotIyBDT05GSUdfRkJfU1lTX0NPUFlBUkVBIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZCX1NZU19JTUFHRUJMSVQgaXMgbm90IHNldAotIyBDT05GSUdfRkJfRk9SRUlHTl9FTkRJQU4gaXMgbm90IHNldAotIyBDT05GSUdfRkJfU1lTX0ZPUFMgaXMgbm90IHNldAotIyBDT05GSUdfRkJfU1ZHQUxJQiBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQl9NQUNNT0RFUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQl9CQUNLTElHSFQgaXMgbm90IHNldAotQ09ORklHX0ZCX01PREVfSEVMUEVSUz15Ci0jIENPTkZJR19GQl9USUxFQkxJVFRJTkcgaXMgbm90IHNldAotCi0jCi0jIEZyYW1lIGJ1ZmZlciBoYXJkd2FyZSBkcml2ZXJzCi0jCi0jIENPTkZJR19GQl9TMUQxM1hYWCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQl9UTUlPIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZCX1ZJUlRVQUwgaXMgbm90IHNldAotIyBDT05GSUdfRkJfTUVUUk9OT01FIGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZCX01CODYyWFggaXMgbm90IHNldAotIyBDT05GSUdfRkJfQlJPQURTSEVFVCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GQl9PTUFQX0JPT1RMT0FERVJfSU5JVCBpcyBub3Qgc2V0Ci1DT05GSUdfT01BUDJfVlJBTT15Ci1DT05GSUdfT01BUDJfVlJGQj15Ci1DT05GSUdfT01BUDJfRFNTPXkKLUNPTkZJR19PTUFQMl9WUkFNX1NJWkU9MTQKLUNPTkZJR19PTUFQMl9EU1NfREVCVUdfU1VQUE9SVD15Ci0jIENPTkZJR19PTUFQMl9EU1NfQ09MTEVDVF9JUlFfU1RBVFMgaXMgbm90IHNldAotQ09ORklHX09NQVAyX0RTU19EUEk9eQotIyBDT05GSUdfT01BUDJfRFNTX1JGQkkgaXMgbm90IHNldAotQ09ORklHX09NQVAyX0RTU19WRU5DPXkKLSMgQ09ORklHX09NQVAyX0RTU19TREkgaXMgbm90IHNldAotQ09ORklHX09NQVAyX0RTU19EU0k9eQotIyBDT05GSUdfT01BUDJfRFNTX0ZBS0VfVlNZTkMgaXMgbm90IHNldAotQ09ORklHX09NQVAyX0RTU19NSU5fRkNLX1BFUl9QQ0s9MAotQ09ORklHX0ZCX09NQVAyPXkKLUNPTkZJR19GQl9PTUFQMl9ERUJVR19TVVBQT1JUPXkKLUNPTkZJR19GQl9PTUFQMl9OVU1fRkJTPTIKLQotIwotIyBPTUFQMi8zIERpc3BsYXkgRGV2aWNlIERyaXZlcnMKLSMKLUNPTkZJR19QQU5FTF9HRU5FUklDX0RQST15Ci1DT05GSUdfUEFORUxfRFZJPXkKLUNPTkZJR19QQU5FTF9TSEFSUF9MUzAzN1Y3RFcwMT15Ci0jIENPTkZJR19QQU5FTF9MR1BISUxJUFNfTEIwMzVRMDIgaXMgbm90IHNldAotIyBDT05GSUdfUEFORUxfVEFBTCBpcyBub3Qgc2V0Ci1DT05GSUdfUEFORUxfVFBPX1REMDQzTVRFQTE9bQotIyBDT05GSUdfQkFDS0xJR0hUX0xDRF9TVVBQT1JUIGlzIG5vdCBzZXQKLUNPTkZJR19CQUNLTElHSFRfQ0xBU1NfREVWSUNFPXkKLQotIwotIyBEaXNwbGF5IGRldmljZSBzdXBwb3J0Ci0jCi1DT05GSUdfRElTUExBWV9TVVBQT1JUPXkKLUNPTkZJR19EVU1NWV9DT05TT0xFPXkKLSMgQ09ORklHX0ZSQU1FQlVGRkVSX0NPTlNPTEVfREVURUNUX1BSSU1BUlkgaXMgbm90IHNldAotQ09ORklHX0ZSQU1FQlVGRkVSX0NPTlNPTEVfUk9UQVRJT049eQotIyBDT05GSUdfRk9OVFMgaXMgbm90IHNldAotQ09ORklHX0ZPTlRfOHg4PXkKLUNPTkZJR19GT05UXzh4MTY9eQotIyBDT05GSUdfTE9HT19MSU5VWF9NT05PIGlzIG5vdCBzZXQKLSMgQ09ORklHX0xPR09fTElOVVhfVkdBMTYgaXMgbm90IHNldAotCi0jCi0jIENvbnNvbGUgZGlzcGxheSBkcml2ZXIgc3VwcG9ydAotIwotQ09ORklHX0ZSQU1FQlVGRkVSX0NPTlNPTEU9eQotQ09ORklHX0xPR089eQotIyBDT05GSUdfVkdBX0NPTlNPTEUgaXMgbm90IHNldAotCi0jIERNQSBEZXZpY2VzCi1DT05GSUdfRE1BREVWSUNFUz15Ci1DT05GSUdfRE1BX09NQVA9eQotQ09ORklHX0RNQV9PRj15Ci0KLUNPTkZJR19TT1VORD15Ci1DT05GSUdfU05EPXkKLUNPTkZJR19TTkRfU09DPXkKLUNPTkZJR19TTkRfT01BUF9TT0M9eQotQ09ORklHX1NORF9PTUFQX1NPQ19PTUFQX1RXTDQwMzA9eQotCi0jCi0jIFVTQiBJbnB1dCBEZXZpY2VzCi0jCi1DT05GSUdfVVNCPXkKLUNPTkZJR19VU0JfU1VQUE9SVD15Ci0KLSMKLSMgTWlzY2VsbGFuZW91cyBVU0Igb3B0aW9ucwotIwotQ09ORklHX1VTQl9PVEc9eQotIyBDT05GSUdfVVNCX09UR19XSElURUxJU1QgaXMgbm90IHNldAotCi0jCi0jIFVTQiBIb3N0IENvbnRyb2xsZXIgRHJpdmVycwotIwotQ09ORklHX1VTQl9FSENJX0hDRD15Ci1DT05GSUdfVVNCX0VIQ0lfVFRfTkVXU0NIRUQ9eQotQ09ORklHX1VTQl9FSENJX1JPT1RfSFVCX1RUPXkKLUNPTkZJR19VU0JfTVVTQl9IRFJDPXkKLUNPTkZJR19VU0JfTVVTQl9PTUFQMlBMVVM9eQotQ09ORklHX1VTQl9PTUFQPXkKLQotIwotIyBPTUFQIDM0M3ggaGlnaCBzcGVlZCBVU0Igc3VwcG9ydAotIwotQ09ORklHX1VTQl9NVVNCX09URz15Ci1DT05GSUdfVVNCX0dBREdFVF9NVVNCX0hEUkM9eQotQ09ORklHX1VTQl9NVVNCX0hEUkNfSENEPXkKLUNPTkZJR19VU0JfSU5WRU5UUkFfRE1BPXkKLQotIwotIyBOT1RFOiBVU0JfU1RPUkFHRSBlbmFibGVzIFNDU0ksIGFuZCAnU0NTSSBkaXNrIHN1cHBvcnQnCi0jCi0KLSMKLSMgbWF5IGFsc28gYmUgbmVlZGVkOyBzZWUgVVNCX1NUT1JBR0UgSGVscCBmb3IgbW9yZSBpbmZvcm1hdGlvbgotIwotQ09ORklHX1VTQl9TVE9SQUdFPXkKLQotIwotIyBVU0IgTWlzY2VsbGFuZW91cyBkcml2ZXJzCi0jCi1DT05GSUdfVVNCX0dBREdFVD15Ci1DT05GSUdfVVNCX0dBREdFVF9EVUFMU1BFRUQ9eQotQ09ORklHX1VTQl9PVEdfVVRJTFM9eQotQ09ORklHX1RXTDQwMzBfVVNCPXkKLQotIyBVU0IgZ2FkZ2V0IG1vZHVsZXMKLUNPTkZJR19VU0JfR19OQ009eQotQ09ORklHX1VTQl9NQVNTX1NUT1JBR0U9eQotCi1DT05GSUdfTU1DPXkKLQotIwotIyBNTUMvU0QgSG9zdCBDb250cm9sbGVyIERyaXZlcnMKLSMKLUNPTkZJR19NTUNfT01BUF9IUz15Ci0KLSMKLSMgUmVhbCBUaW1lIENsb2NrCi0jCi1DT05GSUdfUlRDX0xJQj15Ci1DT05GSUdfUlRDX0NMQVNTPXkKLUNPTkZJR19SVENfRFJWX1RXTDQwMzA9eQotCi0jCi0jIERPUy9GQVQvTlQgRmlsZXN5c3RlbXMKLSMKLUNPTkZJR19WRkFUX0ZTPXkKLQotIwotIyBNdWx0aW1lZGlhIGNvcmUgc3VwcG9ydAotIwotCi0jIENPTkZJR19WSURFT19IRUxQRVJfQ0hJUFNfQVVUTyBpcyBub3Qgc2V0Ci0KLSMKLSMgQWR2YW5jZWQgUG93ZXIgTWFuYWdlbWVudCBFbXVsYXRpb24gc3VwcG9ydAotIwotQ09ORklHX0FQTV9FTVVMQVRJT049eQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjM4NjZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYworKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LnNjYwota2NvbmYgaGFyZHdhcmUge3s9bWFjaGluZX19LmNmZwota2NvbmYgbm9uLWhhcmR3YXJlIHt7bWFjaGluZX19LW5vbl9oYXJkd2FyZS5jZmcKLQotaW5jbHVkZSBmZWF0dXJlcy91c2ItbmV0L3VzYi1uZXQuc2NjCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWxpc3Qubm9pbnN0YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTdmMGUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLXt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSI6IH19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJ1c2VfZGVmYXVsdF9rZXJuZWwiIHByaW86IjEwIiBtc2c6IldvdWxkIHlvdSBsaWtlIHRvIHVzZSB0aGUgZGVmYXVsdCAoNC4xMikga2VybmVsPyAoeS9uKSIgZGVmYXVsdDoieSJ9fQotCi17eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iIGFuZCB1c2VfZGVmYXVsdF9rZXJuZWwgPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToia2VybmVsX2Nob2ljZSIgZ2VuOiJic3Aua2VybmVsLmtlcm5lbHMiIHByaW86IjEwIiBtc2c6IlBsZWFzZSBjaG9vc2UgdGhlIGtlcm5lbCB0byB1c2UgaW4gdGhpcyBCU1A6IiBkZWZhdWx0OiJsaW51eC15b2N0b180LjEyIn19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJlZDI3My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tZGV2IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6ImkzODYiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IldvdWxkIHlvdSBsaWtlIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhZTk0M2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xMCI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEwIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmM2UxMDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xMiI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEwIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmQxODE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC40IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuNCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2FybS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmYmVjYjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjEwIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEwIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTg3NGM5ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuMTIiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvYXJtL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTgwOWM3Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9hcm0vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC40IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjQiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vQ09QWUlORy5NSVQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vQ09QWUlORy5NSVQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiOTUwZGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL0NPUFlJTkcuTUlUCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSAKLW9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIAotaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyAKLXRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgCi1jb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgCi1mdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotCi1UaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiAKLWFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotCi1USEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiAKLUlNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCAKLUZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSAKLUFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgCi1MSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCAKLU9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gCi1USEUgU09GVFdBUkUuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vUkVBRE1FIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL1JFQURNRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTI4NjU5Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vUkVBRE1FCisrKyAvZGV2L251bGwKQEAgLTEsMTE4ICswLDAgQEAKLVRoaXMgUkVBRE1FIGZpbGUgY29udGFpbnMgaW5mb3JtYXRpb24gb24gYnVpbGRpbmcgdGhlIG1ldGEte3s9bWFjaGluZX19Ci1CU1AgbGF5ZXIsIGFuZCBib290aW5nIHRoZSBpbWFnZXMgY29udGFpbmVkIGluIHRoZSAvYmluYXJ5IGRpcmVjdG9yeS4KLVBsZWFzZSBzZWUgdGhlIGNvcnJlc3BvbmRpbmcgc2VjdGlvbnMgYmVsb3cgZm9yIGRldGFpbHMuCi0KLQotRGVwZW5kZW5jaWVzCi09PT09PT09PT09PT0KLQotVGhpcyBsYXllciBkZXBlbmRzIG9uOgotCi0gIFVSSTogZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvYml0YmFrZQotICBicmFuY2g6IG1hc3RlcgotCi0gIFVSSTogZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvb3BlbmVtYmVkZGVkLWNvcmUKLSAgbGF5ZXJzOiBtZXRhCi0gIGJyYW5jaDogbWFzdGVyCi0KLSAgVVJJOiBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy94eHh4Ci0gIGxheWVyczogeHh4eAotICBicmFuY2g6IG1hc3RlcgotCi0KLVBhdGNoZXMKLT09PT09PT0KLQotUGxlYXNlIHN1Ym1pdCBhbnkgcGF0Y2hlcyBhZ2FpbnN0IHRoaXMgQlNQIHRvIHRoZSBZb2N0byBtYWlsaW5nIGxpc3QKLSh5b2N0b0B5b2N0b3Byb2plY3Qub3JnKSBhbmQgY2M6IHRoZSBtYWludGFpbmVyOgotCi1NYWludGFpbmVyOiBYWFggWVlZWVlZIDx4eHgueXl5eXl5QHp6enp6LmNvbT4KLQotUGxlYXNlIHNlZSB0aGUgbWV0YS14eHh4L01BSU5UQUlORVJTIGZpbGUgZm9yIG1vcmUgZGV0YWlscy4KLQotCi1UYWJsZSBvZiBDb250ZW50cwotPT09PT09PT09PT09PT09PT0KLQotICBJLiBCdWlsZGluZyB0aGUgbWV0YS17ez1tYWNoaW5lfX0gQlNQIGxheWVyCi0gSUkuIEJvb3RpbmcgdGhlIGltYWdlcyBpbiAvYmluYXJ5Ci0KLQotSS4gQnVpbGRpbmcgdGhlIG1ldGEte3s9bWFjaGluZX19IEJTUCBsYXllcgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0tLS0gcmVwbGFjZSB3aXRoIHNwZWNpZmljIGluc3RydWN0aW9ucyBmb3IgeW91ciBsYXllciAtLS0KLQotSW4gb3JkZXIgdG8gYnVpbGQgYW4gaW1hZ2Ugd2l0aCBCU1Agc3VwcG9ydCBmb3IgYSBnaXZlbiByZWxlYXNlLCB5b3UKLW5lZWQgdG8gZG93bmxvYWQgdGhlIGNvcnJlc3BvbmRpbmcgQlNQIHRhcmJhbGwgZnJvbSB0aGUgJ0JvYXJkIFN1cHBvcnQKLVBhY2thZ2UgKEJTUCkgRG93bmxvYWRzJyBwYWdlIG9mIHRoZSBZb2N0byBQcm9qZWN0IHdlYnNpdGUuCi0KLUhhdmluZyBkb25lIHRoYXQsIGFuZCBhc3N1bWluZyB5b3UgZXh0cmFjdGVkIHRoZSBCU1AgdGFyYmFsbCBjb250ZW50cwotYXQgdGhlIHRvcC1sZXZlbCBvZiB5b3VyIHlvY3RvIGJ1aWxkIHRyZWUsIHlvdSBjYW4gYnVpbGQgYQote3s9bWFjaGluZX19IGltYWdlIGJ5IGFkZGluZyB0aGUgbG9jYXRpb24gb2YgdGhlIG1ldGEte3s9bWFjaGluZX19Ci1sYXllciB0byBiYmxheWVycy5jb25mLCBhbG9uZyB3aXRoIGFueSBvdGhlciBsYXllcnMgbmVlZGVkICh0byBhY2Nlc3MKLWNvbW1vbiBtZXRhZGF0YSBzaGFyZWQgYmV0d2VlbiBCU1BzKSBlLmcuOgotCi0gIHlvY3RvL21ldGEteHh4eCBcCi0gIHlvY3RvL21ldGEteHh4eC9tZXRhLXt7PW1hY2hpbmV9fSBcCi0KLVRvIGVuYWJsZSB0aGUge3s9bWFjaGluZX19IGxheWVyLCBhZGQgdGhlIHt7PW1hY2hpbmV9fSBNQUNISU5FIHRvIGxvY2FsLmNvbmY6Ci0KLSAgTUFDSElORSA/PSAie3s9bWFjaGluZX19IgotCi1Zb3Ugc2hvdWxkIHRoZW4gYmUgYWJsZSB0byBidWlsZCBhIHt7PW1hY2hpbmV9fSBpbWFnZSBhcyBzdWNoOgotCi0gICQgc291cmNlIG9lLWluaXQtYnVpbGQtZW52Ci0gICQgYml0YmFrZSBjb3JlLWltYWdlLXNhdG8KLQotQXQgdGhlIGVuZCBvZiBhIHN1Y2Nlc3NmdWwgYnVpbGQsIHlvdSBzaG91bGQgaGF2ZSBhIGxpdmUgaW1hZ2UgdGhhdAoteW91IGNhbiBib290IGZyb20gYSBVU0IgZmxhc2ggZHJpdmUgKHNlZSBpbnN0cnVjdGlvbnMgb24gaG93IHRvIGRvCi10aGF0IGJlbG93LCBpbiB0aGUgc2VjdGlvbiAnQm9vdGluZyB0aGUgaW1hZ2VzIGZyb20gL2JpbmFyeScpLgotCi1BcyBhbiBhbHRlcm5hdGl2ZSB0byBkb3dubG9hZGluZyB0aGUgQlNQIHRhcmJhbGwsIHlvdSBjYW4gYWxzbyB3b3JrCi1kaXJlY3RseSBmcm9tIHRoZSBtZXRhLXh4eHggZ2l0IHJlcG9zaXRvcnkuICBGb3IgZWFjaCBCU1AgaW4gdGhlCi0nbWV0YS14eHh4JyByZXBvc2l0b3J5LCB0aGVyZSBhcmUgbXVsdGlwbGUgYnJhbmNoZXMsIG9uZSBjb3JyZXNwb25kaW5nCi10byBlYWNoIG1ham9yIHJlbGVhc2Ugc3RhcnRpbmcgd2l0aCAnbGF2ZXJuZScgKDAuOTApLCBpbiBhZGRpdGlvbiB0bwotdGhlIGxhdGVzdCBjb2RlIHdoaWNoIHRyYWNrcyB0aGUgY3VycmVudCBtYXN0ZXIgKG5vdGUgdGhhdCBub3QgYWxsCi1CU1BzIGFyZSBwcmVzZW50IGluIGV2ZXJ5IHJlbGVhc2UpLiAgSW5zdGVhZCBvZiBleHRyYWN0aW5nIGEgQlNQCi10YXJiYWxsIGF0IHRoZSB0b3AgbGV2ZWwgb2YgeW91ciB5b2N0byBidWlsZCB0cmVlLCB5b3UgY2FuCi1lcXVpdmFsZW50bHkgY2hlY2sgb3V0IHRoZSBhcHByb3ByaWF0ZSBicmFuY2ggZnJvbSB0aGUgbWV0YS14eHh4Ci1yZXBvc2l0b3J5IGF0IHRoZSBzYW1lIGxvY2F0aW9uLgotCi0KLUlJLiBCb290aW5nIHRoZSBpbWFnZXMgaW4gL2JpbmFyeQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLS0tLSByZXBsYWNlIHdpdGggc3BlY2lmaWMgaW5zdHJ1Y3Rpb25zIGZvciB5b3VyIHBsYXRmb3JtIC0tLQotCi1UaGlzIEJTUCBjb250YWlucyBib290YWJsZSBsaXZlIGltYWdlcywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZGlyZWN0bHkKLWJvb3QgWW9jdG8gb2ZmIG9mIGEgVVNCIGZsYXNoIGRyaXZlLgotCi1VbmRlciBMaW51eCwgaW5zZXJ0IGEgVVNCIGZsYXNoIGRyaXZlLiAgQXNzdW1pbmcgdGhlIFVTQiBmbGFzaCBkcml2ZQotdGFrZXMgZGV2aWNlIC9kZXYvc2RmLCB1c2UgZGQgdG8gY29weSB0aGUgbGl2ZSBpbWFnZSB0byBpdC4gIEZvcgotZXhhbXBsZToKLQotIyBkZCBpZj1jb3JlLWltYWdlLXNhdG8te3s9bWFjaGluZX19LTIwMTAxMjA3MDUzNzM4LmhkZGltZyBvZj0vZGV2L3NkZgotIyBzeW5jCi0jIGVqZWN0IC9kZXYvc2RmCi0KLVRoaXMgc2hvdWxkIGdpdmUgeW91IGEgYm9vdGFibGUgVVNCIGZsYXNoIGRldmljZS4gIEluc2VydCB0aGUgZGV2aWNlCi1pbnRvIGEgYm9vdGFibGUgVVNCIHNvY2tldCBvbiB0aGUgdGFyZ2V0LCBhbmQgcG93ZXIgb24uICBUaGlzIHNob3VsZAotcmVzdWx0IGluIGEgc3lzdGVtIGJvb3RlZCB0byB0aGUgU2F0byBncmFwaGljYWwgZGVza3RvcC4KLQotSWYgeW91IHdhbnQgYSB0ZXJtaW5hbCwgdXNlIHRoZSBhcnJvd3MgYXQgdGhlIHRvcCBvZiB0aGUgVUkgdG8gbW92ZSB0bwotZGlmZmVyZW50IHBhZ2VzIG9mIGF2YWlsYWJsZSBhcHBsaWNhdGlvbnMsIG9uZSBvZiB3aGljaCBpcyBuYW1lZAotJ1Rlcm1pbmFsJy4gIENsaWNraW5nIHRoYXQgc2hvdWxkIGdpdmUgeW91IGEgcm9vdCB0ZXJtaW5hbC4KLQotSWYgeW91IHdhbnQgdG8gc3NoIGludG8gdGhlIHN5c3RlbSwgeW91IGNhbiB1c2UgdGhlIHJvb3QgdGVybWluYWwgdG8KLWlmY29uZmlnIHRoZSBJUCBhZGRyZXNzIGFuZCB1c2UgdGhhdCB0byBzc2ggaW4uICBUaGUgcm9vdCBwYXNzd29yZCBpcwotZW1wdHksIHNvIHRvIGxvZyBpbiB0eXBlICdyb290JyBmb3IgdGhlIHVzZXIgbmFtZSBhbmQgaGl0ICdFbnRlcicgYXQKLXRoZSBQYXNzd29yZCBwcm9tcHQ6IGFuZCB5b3Ugc2hvdWxkIGJlIGluLgotCi0tLS0tCi0KLUlmIHlvdSBmaW5kIHlvdSdyZSBnZXR0aW5nIGNvcnJ1cHQgaW1hZ2VzIG9uIHRoZSBVU0IgKGl0IGRvZXNuJ3Qgc2hvdwotdGhlIHN5c2xpbnV4IGJvb3Q6IHByb21wdCwgb3IgdGhlIGJvb3Q6IHByb21wdCBjb250YWlucyBzdHJhbmdlCi1jaGFyYWN0ZXJzKSwgdHJ5IGRvaW5nIHRoaXMgZmlyc3Q6Ci0KLSMgZGQgaWY9L2Rldi96ZXJvIG9mPS9kZXYvc2RmIGJzPTFNIGNvdW50PTUxMgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL1JFQURNRS5zb3VyY2VzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL1JFQURNRS5zb3VyY2VzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzRjYjdiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9SRUFETUUuc291cmNlcworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSBzb3VyY2VzIGZvciB0aGUgcGFja2FnZXMgY29tcHJpc2luZyB0aGUgaW1hZ2VzIHNoaXBwZWQgd2l0aCB0aGlzCi1CU1AgY2FuIGJlIGZvdW5kIGF0IHRoZSBmb2xsb3dpbmcgbG9jYXRpb246Ci0KLWh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy8KLQotVGhlIG1ldGFkYXRhIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGltYWdlcyBzaGlwcGVkIHdpdGggdGhpcyBCU1AsIGluCi1hZGRpdGlvbiB0byB0aGUgY29kZSBjb250YWluZWQgaW4gdGhpcyBCU1AsIGNhbiBiZSBmb3VuZCBhdCB0aGUKLWZvbGxvd2luZyBsb2NhdGlvbjoKLQotaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2Rvd25sb2Fkcy95b2N0by0xLjEvcG9reS1lZGlzb24tNi4wLnRhci5iejIKLQotVGhlIG1ldGFkYXRhIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGltYWdlcyBzaGlwcGVkIHdpdGggdGhpcyBCU1AsIGluCi1hZGRpdGlvbiB0byB0aGUgY29kZSBjb250YWluZWQgaW4gdGhpcyBCU1AsIGNhbiBhbHNvIGJlIGZvdW5kIGF0IHRoZQotZm9sbG93aW5nIGxvY2F0aW9uczoKLQotZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reS5naXQKLWdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL21ldGEteHh4eApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL2JpbmFyeS8uZ2l0aWdub3JlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL2JpbmFyeS8uZ2l0aWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjlkZTI5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9iaW5hcnkvLmdpdGlnbm9yZQorKysgL2Rldi9udWxsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vY29uZi9sYXllci5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL2NvbmYvbGF5ZXIuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTUyOWY0NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vY29uZi9sYXllci5jb25mCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotIyBXZSBoYXZlIGEgY29uZiBhbmQgY2xhc3NlcyBkaXJlY3RvcnksIGFkZCB0byBCQlBBVEgKLUJCUEFUSCAuPSAiOiR7TEFZRVJESVJ9IgotCi0jIFdlIGhhdmUgYSByZWNpcGVzLSogZGlyZWN0b3JpZXMsIGFkZCB0byBCQkZJTEVTCi1CQkZJTEVTICs9ICIke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiIFwKLQkke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiYXBwZW5kIgotCi1CQkZJTEVfQ09MTEVDVElPTlMgKz0gInt7PW1hY2hpbmV9fSIKLUJCRklMRV9QQVRURVJOX3t7PW1hY2hpbmV9fSA9ICJeJHtMQVlFUkRJUn0vIgotQkJGSUxFX1BSSU9SSVRZX3t7PW1hY2hpbmV9fSA9ICI2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMtYnNwL2Zvcm1mYWN0b3IvZm9ybWZhY3Rvci9tYWNoaW5lLm5vaW5zdGFsbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWJzcC9mb3JtZmFjdG9yL2Zvcm1mYWN0b3IvbWFjaGluZS5ub2luc3RhbGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0NDJkMDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMtYnNwL2Zvcm1mYWN0b3IvZm9ybWZhY3Rvci9tYWNoaW5lLm5vaW5zdGFsbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWRpcm5hbWUge3s9bWFjaGluZX19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vcmVjaXBlcy1ic3AvZm9ybWZhY3Rvci9mb3JtZmFjdG9yL21hY2hpbmUvbWFjaGNvbmZpZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWJzcC9mb3JtZmFjdG9yL2Zvcm1mYWN0b3IvbWFjaGluZS9tYWNoY29uZmlnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjg1ZDM4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWJzcC9mb3JtZmFjdG9yL2Zvcm1mYWN0b3IvbWFjaGluZS9tYWNoY29uZmlnCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0jIEFzc3VtZSBhIFVTQiBtb3VzZSBhbmQga2V5Ym9hcmQgYXJlIGNvbm5lY3RlZAote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToidG91Y2hzY3JlZW4iIG1zZzoiRG9lcyB5b3VyIEJTUCBoYXZlIGEgdG91Y2hzY3JlZW4/ICh5L24pIiBkZWZhdWx0OiJuIiB9fQotSEFWRV9UT1VDSFNDUkVFTj17ez10b3VjaHNjcmVlbn19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJrZXlib2FyZCIgbXNnOiJEb2VzIHlvdXIgQlNQIGhhdmUgYSBrZXlib2FyZD8gKHkvbikiIGRlZmF1bHQ6InkiIH19Ci1IQVZFX0tFWUJPQVJEPXt7PWtleWJvYXJkfX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWJzcC9mb3JtZmFjdG9yL2Zvcm1mYWN0b3JfMC4wLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMtYnNwL2Zvcm1mYWN0b3IvZm9ybWZhY3Rvcl8wLjAuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkNDgwNGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMtYnNwL2Zvcm1mYWN0b3IvZm9ybWZhY3Rvcl8wLjAuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2M2RkZGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLXt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImN1c3RvbSI6IH19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJjdXN0b21fa2VybmVsX3JlbW90ZSIgcHJpbzoiMjAiIG1zZzoiSXMgdGhlIGN1c3RvbSBrZXJuZWwgeW91J2QgbGlrZSB0byB1c2UgaW4gYSByZW1vdGUgZ2l0IHJlcG8/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImN1c3RvbSIgYW5kIGN1c3RvbV9rZXJuZWxfcmVtb3RlID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImVkaXQtZ2l0LXJlcG8iIG5hbWU6ImN1c3RvbV9rZXJuZWxfcmVtb3RlX3BhdGgiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBlbnRlciB0aGUgZnVsbCBVUkkgdG8gdGhlIHJlbW90ZSBnaXQgcmVwbyAodGhlIGRlZmF1bHQgY29ycmVzcG9uZHMgdG8gbGludXgtc3RhYmxlIHYzLjE2LjMpIiBkZWZhdWx0OiJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvc3RhYmxlL2xpbnV4LXN0YWJsZS5naXQifX0KLQote3sgaWYga2VybmVsX2Nob2ljZSA9PSAiY3VzdG9tIiBhbmQgY3VzdG9tX2tlcm5lbF9yZW1vdGUgPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiZWRpdC1naXQtcmVwbyIgbmFtZToiY3VzdG9tX2tlcm5lbF9sb2NhbF9wYXRoIiBwcmlvOiIyMCIgbXNnOiJZb3UndmUgaW5kaWNhdGVkIHRoYXQgeW91J3JlIG5vdCB1c2luZyBhIHJlbW90ZSBnaXQgcmVwby4gIFBsZWFzZSBlbnRlciB0aGUgZnVsbCBwYXRoIHRvIHRoZSBsb2NhbCBnaXQgcmVwbyB5b3Ugd2FudCB0byB1c2UgKHRoZSBkZWZhdWx0IGFzc3VtZXMgYSBsb2NhbCBsaW51eC1zdGFibGUgdjMuMTYuMykiIGRlZmF1bHQ6Ii9ob21lL3Ryei95b2N0by9rZXJuZWxzL2xpbnV4LXN0YWJsZS5naXQifX0KLQote3sgaWYga2VybmVsX2Nob2ljZSA9PSAiY3VzdG9tIjogfX0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6ImN1c3RvbV9rZXJuZWxfbmVlZF9rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCB0byB1c2UgYSBzcGVjaWZpYyAobm9uLW1hc3RlcikgYnJhbmNoPyAoeS9uKSIgZGVmYXVsdDoibiJ9fQotCi17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJjdXN0b20iIGFuZCBjdXN0b21fa2VybmVsX25lZWRfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJlZGl0IiBuYW1lOiJjdXN0b21fa2VybmVsX2ticmFuY2giIHByaW86IjIwIiBtc2c6IlBsZWFzZSBlbnRlciB0aGUgYnJhbmNoIHlvdSB3YW50IHRvIHVzZSAodGhlIGRlZmF1bHQgYnJhbmNoIGNvcnJlc3BvbmRzIHRvIHRoZSBsaW51eC1zdGFibGUgJ2xpbnV4LTMuMTYueScgYnJhbmNoKToiIGRlZmF1bHQ6ImxpbnV4LTMuMTYueSJ9fQotCi17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJjdXN0b20iOiB9fQote3sgaW5wdXQgdHlwZToiZWRpdCIgbmFtZToiY3VzdG9tX2tlcm5lbF9zcmNyZXYiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBlbnRlciB0aGUgU1JDUkVWIChjb21taXQgaWQpIHlvdSdkIGxpa2UgdG8gdXNlICh1c2UgJyR7QVVUT1JFVn0nIHRvIHRyYWNrIHRoZSBjdXJyZW50IEhFQUQpOiIgZGVmYXVsdDoiJHtBVVRPUkVWfSJ9fQotCi17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJjdXN0b20iOiB9fQote3sgaW5wdXQgdHlwZToiZWRpdCIgbmFtZToiY3VzdG9tX2tlcm5lbF9saW51eF92ZXJzaW9uIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgZW50ZXIgdGhlIExpbnV4IHZlcnNpb24gb2YgdGhlIGtlcm5lbCB5b3UndmUgc3BlY2lmaWVkOiIgZGVmYXVsdDoiMy4xNi4zIn19Ci0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImN1c3RvbSI6IH19Ci17eyBpbnB1dCB0eXBlOiJlZGl0IiBuYW1lOiJjdXN0b21fa2VybmVsX2xpbnV4X3ZlcnNpb25fZXh0ZW5zaW9uIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgZW50ZXIgYSBMaW51eCB2ZXJzaW9uIGV4dGVuc2lvbiBpZiB5b3Ugd2FudCAoaXQgd2lsbCBzaG93IHVwIGF0IHRoZSBlbmQgb2YgdGhlIGtlcm5lbCBuYW1lIHNob3duIGJ5IHVuYW1lKToiIGRlZmF1bHQ6Ii1jdXN0b20ifX0KLQote3sgaWYga2VybmVsX2Nob2ljZSA9PSAiY3VzdG9tIjogfX0KLXt7IGlucHV0IHR5cGU6ImVkaXQtZmlsZSIgbmFtZToiY3VzdG9tX2tlcm5lbF9kZWZjb25maWciIHByaW86IjIwIiBtc2c6Ikl0J3MgcmVjb21tZW5kZWQgKGJ1dCBub3QgcmVxdWlyZWQpIHRoYXQgY3VzdG9tIGtlcm5lbHMgYmUgYnVpbHQgdXNpbmcgYSBkZWZjb25maWcuICBQbGVhc2UgZW50ZXIgdGhlIGZ1bGwgcGF0aCB0byB0aGUgZGVmY29uZmlnIGZvciB5b3VyIGtlcm5lbCAoTk9URTogaWYgeW91IGRvbid0IHNwZWNpZnkgYSBkZWZjb25maWcgdGhlIGtlcm5lbCBwcm9iYWJseSB3b24ndCBidWlsZCBvciBib290KToiIGRlZmF1bHQ6IiJ9fQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWN1c3RvbS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiYTQyMjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWN1c3RvbS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImN1c3RvbSI6IH19IHRoaXMKLSMgVGhpcyBmaWxlIHdhcyBkZXJpdmVkIGZyb20gdGhlIGxpbnV4LXlvY3RvLWN1c3RvbS5iYiByZWNpcGUgaW4KLSMgb2UtY29yZS4KLSMKLSMgbGludXgteW9jdG8tY3VzdG9tLmJiOgotIwotIyAgIEEgeW9jdG8tYnNwLWdlbmVyYXRlZCBrZXJuZWwgcmVjaXBlIHRoYXQgdXNlcyB0aGUgbGludXgteW9jdG8gYW5kCi0jICAgb2UtY29yZSBrZXJuZWwgY2xhc3NlcyB0byBhcHBseSBhIHN1YnNldCBvZiB5b2N0byBrZXJuZWwKLSMgICBtYW5hZ2VtZW50IHRvIGdpdCBtYW5hZ2VkIGtlcm5lbCByZXBvc2l0b3JpZXMuCi0jCi0jIFdhcm5pbmc6Ci0jCi0jICAgQnVpbGRpbmcgdGhpcyBrZXJuZWwgd2l0aG91dCBwcm92aWRpbmcgYSBkZWZjb25maWcgb3IgQlNQCi0jICAgY29uZmlndXJhdGlvbiB3aWxsIHJlc3VsdCBpbiBidWlsZCBvciBib290IGVycm9ycy4gVGhpcyBpcyBub3QgYQotIyAgIGJ1Zy4KLSMKLSMgTm90ZXM6Ci0jCi0jICAgcGF0Y2hlczogcGF0Y2hlcyBjYW4gYmUgbWVyZ2VkIGludG8gdG8gdGhlIHNvdXJjZSBnaXQgdHJlZSBpdHNlbGYsCi0jICAgICAgICAgICAgYWRkZWQgdmlhIHRoZSBTUkNfVVJJLCBvciBjb250cm9sbGVkIHZpYSBhIEJTUAotIyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uCi0jCi0jICAgZXhhbXBsZSBjb25maWd1cmF0aW9uIGFkZGl0aW9uOgotIyAgICAgICAgICAgIFNSQ19VUkkgKz0gImZpbGU6Ly9zbXAuY2ZnIgotIyAgIGV4YW1wbGUgcGF0Y2ggYWRkaXRpb246Ci0jICAgICAgICAgICAgU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtbGludXgtdmVyc2lvbi10d2Vhay5wYXRjaAotIyAgIGV4YW1wbGUgZmVhdHVyZSBhZGRpdGlvbjoKLSMgICAgICAgICAgICBTUkNfVVJJICs9ICJmaWxlOi8vZmVhdHVyZS5zY2MiCi0jCi0KLWluaGVyaXQga2VybmVsCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJjdXN0b20iIGFuZCBjdXN0b21fa2VybmVsX3JlbW90ZSA9PSAieSI6IH19Ci1TUkNfVVJJID0gInt7PWN1c3RvbV9rZXJuZWxfcmVtb3RlX3BhdGh9fTtwcm90b2NvbD1naXQ7YmFyZWNsb25lPTE7YnJhbmNoPSR7S0JSQU5DSH0iCi17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJjdXN0b20iIGFuZCBjdXN0b21fa2VybmVsX3JlbW90ZSA9PSAibiI6IH19Ci1TUkNfVVJJID0gImdpdDovL3t7PWN1c3RvbV9rZXJuZWxfbG9jYWxfcGF0aH19O3Byb3RvY29sPWZpbGU7YmFyZWNsb25lPTE7YnJhbmNoPSR7S0JSQU5DSH0iCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9kZWZjb25maWciCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJjdXN0b20iIGFuZCBjdXN0b21fa2VybmVsX25lZWRfa2JyYW5jaCA9PSAieSIgYW5kIGN1c3RvbV9rZXJuZWxfa2JyYW5jaCBhbmQgY3VzdG9tX2tlcm5lbF9rYnJhbmNoICE9ICJtYXN0ZXIiOiB9fQotS0JSQU5DSCA9ICJ7ez1jdXN0b21fa2VybmVsX2ticmFuY2h9fSIKLQotTElOVVhfVkVSU0lPTiA/PSAie3s9Y3VzdG9tX2tlcm5lbF9saW51eF92ZXJzaW9ufX0iCi1MSU5VWF9WRVJTSU9OX0VYVEVOU0lPTiA/PSAie3s9Y3VzdG9tX2tlcm5lbF9saW51eF92ZXJzaW9uX2V4dGVuc2lvbn19IgotCi1TUkNSRVY9Int7PWN1c3RvbV9rZXJuZWxfc3JjcmV2fX0iCi0KLVBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWN1c3RvbS5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tY3VzdG9tLm5vaW5zdGFsbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE3ZDIwNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tY3VzdG9tLm5vaW5zdGFsbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWRpcm5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAiY3VzdG9tIjogfX0gbGludXgteW9jdG8tY3VzdG9tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tY3VzdG9tL2RlZmNvbmZpZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20vZGVmY29uZmlnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWIwZmZhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20vZGVmY29uZmlnCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0jCi0jIFBsYWNlaG9sZGVyIGZvciBjdXN0b20gZGVmYXVsdCBrZXJuZWwgY29uZmlndXJhdGlvbi4gIHlvY3RvLWJzcCB3aWxsCi0jIHJlcGxhY2UgdGhpcyBmaWxlIHdpdGggYSB1c2VyLXNwZWNpZmllZCBkZWZjb25maWcuCi0jCi17eyBpZiBjdXN0b21fa2VybmVsX2RlZmNvbmZpZzogcmVwbGFjZV9maWxlKG9mLCBjdXN0b21fa2VybmVsX2RlZmNvbmZpZykgfX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20vbWFjaGluZS11c2VyLWNvbmZpZy5jZmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tY3VzdG9tL21hY2hpbmUtdXNlci1jb25maWcuY2ZnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjIzMDlkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20vbWFjaGluZS11c2VyLWNvbmZpZy5jZmcKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcKLSMKLSMgVXNlZCBieSB5b2N0by1rZXJuZWwgdG8gbWFuYWdlIGNvbmZpZyBvcHRpb25zLgotIwotIyB5b2N0by1rZXJuZWwgbWF5IGNoYW5nZSB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGluIGFueQotIyB3YXkgaXQgc2VlcyBmaXQsIGluY2x1ZGluZyByZW1vdmluZyBjb21tZW50cyBsaWtlIHRoaXMsCi0jIHNvIGRvbid0IG1hbnVhbGx5IG1ha2UgYW55IG1vZGlmaWNhdGlvbnMgeW91IGRvbid0IHdhbnQKLSMgdG8gbG9zZS4KLSMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20vbWFjaGluZS11c2VyLWZlYXR1cmVzLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20vbWFjaGluZS11c2VyLWZlYXR1cmVzLnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTgyNzU5ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tY3VzdG9tL21hY2hpbmUtdXNlci1mZWF0dXJlcy5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20vbWFjaGluZS11c2VyLXBhdGNoZXMuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWN1c3RvbS9tYWNoaW5lLXVzZXItcGF0Y2hlcy5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkMTEzOGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWN1c3RvbS9tYWNoaW5lLXVzZXItcGF0Y2hlcy5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjCi0jCi0jIFVzZWQgYnkgeW9jdG8ta2VybmVsIHRvIG1hbmFnZSBwYXRjaGVzLgotIwotIyB5b2N0by1rZXJuZWwgbWF5IGNoYW5nZSB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGluIGFueQotIyB3YXkgaXQgc2VlcyBmaXQsIGluY2x1ZGluZyByZW1vdmluZyBjb21tZW50cyBsaWtlIHRoaXMsCi0jIHNvIGRvbid0IG1hbnVhbGx5IG1ha2UgYW55IG1vZGlmaWNhdGlvbnMgeW91IGRvbid0IHdhbnQKLSMgdG8gbG9zZS4KLSMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20vbWFjaGluZS5jZmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9jb21tb24vcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tY3VzdG9tL21hY2hpbmUuY2ZnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmE4MjAxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20vbWFjaGluZS5jZmcKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS5jZmcKLSMKLSMgQSBjb252ZW5pZW50IHBsYWNlIHRvIGFkZCBjb25maWcgb3B0aW9ucywgbm90aGluZyBtb3JlLgotIwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWN1c3RvbS9tYWNoaW5lLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2NvbW1vbi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1jdXN0b20vbWFjaGluZS5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0ZDNlZDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvY29tbW9uL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWN1c3RvbS9tYWNoaW5lLnNjYworKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS5zY2MKLSMKLSMgVGhlIHRvcC1sZXZlbCAnZmVhdHVyZScgZm9yIHRoZSB7ez1tYWNoaW5lfX0gY3VzdG9tIGtlcm5lbC4KLSMKLSMgRXNzZW50aWFsbHkgdGhpcyBpcyBhIGNvbnZlbmllbnQgdG9wLWxldmVsIGNvbnRhaW5lciBvciBzdGFydGluZwotIyBwb2ludCBmb3IgYWRkaW5nIGxvd2VyLWxldmVsIGNvbmZpZyBmcmFnZW1lbnRzIGFuZCBmZWF0dXJlcy4KLSMKLQotIyB7ez1tYWNoaW5lfX0uY2ZnIGluIHRoZSBsaW51eC15b2N0by1jdXN0b20gc3ViZGlyIGlzIGp1c3QgYQotIyBjb252ZW5pZW50IHBsYWNlIGZvciBhZGRpbmcgcmFuZG9tIGNvbmZpZyBmcmFnbWVudHMuCi0KLWtjb25mIGhhcmR3YXJlIHt7PW1hY2hpbmV9fS5jZmcKLQotIyBUaGVzZSBhcmUgdXNlZCBieSB5b2N0by1rZXJuZWwgdG8gYWRkIGNvbmZpZyBmcmFnbWVudHMgYW5kIGZlYXR1cmVzLgotIyBEb24ndCByZW1vdmUgaWYgeW91IHBsYW4gb24gdXNpbmcgeW9jdG8ta2VybmVsIHdpdGggdGhpcyBCU1AuCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc0NWMxYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L2NvbmYvbWFjaGluZS9tYWNoaW5lLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0uY29uZgotI0BUWVBFOiBNYWNoaW5lCi0jQE5BTUU6IHt7PW1hY2hpbmV9fQotCi0jQERFU0NSSVBUSU9OOiBNYWNoaW5lIGNvbmZpZ3VyYXRpb24gZm9yIHt7PW1hY2hpbmV9fSBzeXN0ZW1zCi0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImN1c3RvbSI6IHByZWZlcnJlZF9rZXJuZWwgPSAibGludXgteW9jdG8tY3VzdG9tIiB9fQote3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tZGV2IjogcHJlZmVycmVkX2tlcm5lbCA9ICJsaW51eC15b2N0by1kZXYiIH19Ci17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJjdXN0b20iIG9yIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLWRldiIgOiB9fQotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID89ICJ7ez1wcmVmZXJyZWRfa2VybmVsfX0iCi0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSIgYW5kIGtlcm5lbF9jaG9pY2UgIT0gImxpbnV4LXlvY3RvLWRldiI6IHByZWZlcnJlZF9rZXJuZWwgPSBrZXJuZWxfY2hvaWNlLnNwbGl0KCdfJylbMF0gfX0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSIgYW5kIGtlcm5lbF9jaG9pY2UgIT0gImxpbnV4LXlvY3RvLWRldiI6IHByZWZlcnJlZF9rZXJuZWxfdmVyc2lvbiA9IGtlcm5lbF9jaG9pY2Uuc3BsaXQoJ18nKVsxXSB9fQote3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQga2VybmVsX2Nob2ljZSAhPSAibGludXgteW9jdG8tZGV2IjogfX0KLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAie3s9cHJlZmVycmVkX2tlcm5lbH19IgotUFJFRkVSUkVEX1ZFUlNJT05fe3s9cHJlZmVycmVkX2tlcm5lbH19ID89ICJ7ez1wcmVmZXJyZWRfa2VybmVsX3ZlcnNpb259fSUiCi0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6InR1bmVmaWxlIiBwcmlvOiI0MCIgbXNnOiJXaGljaCBtYWNoaW5lIHR1bmluZyB3b3VsZCB5b3UgbGlrZSB0byB1c2U/IiBkZWZhdWx0OiJ0dW5lX2NvcmUyIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfaTU4NiIgbXNnOiJpNTg2IHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfYXRvbSIgbXNnOiJBdG9tIHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfY29yZTIiIG1zZzoiQ29yZTIgdHVuaW5nIG9wdGltaXphdGlvbnMiIH19Ci17eyBpZiB0dW5lZmlsZSA9PSAidHVuZV9pNTg2IjogfX0KLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1pNTg2LmluYwote3sgaWYgdHVuZWZpbGUgPT0gInR1bmVfYXRvbSI6IH19Ci1yZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtYXRvbS5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX2NvcmUyIjogfX0KLURFRkFVTFRUVU5FPSJjb3JlMi0zMiIKLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3JlMi5pbmMKLQotcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS94ODYtYmFzZS5pbmMKLQotTUFDSElORV9GRUFUVVJFUyArPSAid2lmaSBlZmkgcGNiaW9zIgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJ4c2VydmVyIiBwcmlvOiI1MCIgbXNnOiJEbyB5b3UgbmVlZCBzdXBwb3J0IGZvciBYPyAoeS9uKSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgeHNlcnZlciA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJ4c2VydmVyX2Nob2ljZSIgcHJpbzoiNTAiIG1zZzoiUGxlYXNlIHNlbGVjdCBhbiB4c2VydmVyIGZvciB0aGlzIG1hY2hpbmU6IiBkZWZhdWx0OiJ4c2VydmVyX3Zlc2EiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoieHNlcnZlcl92ZXNhIiBtc2c6IlZFU0EgeHNlcnZlciBzdXBwb3J0IiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InhzZXJ2ZXJfaTkxNSIgbXNnOiJpOTE1IHhzZXJ2ZXIgc3VwcG9ydCIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJ4c2VydmVyX2k5NjUiIG1zZzoiaTk2NSB4c2VydmVyIHN1cHBvcnQiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoieHNlcnZlcl9mYmRldiIgbXNnOiJmYmRldiB4c2VydmVyIHN1cHBvcnQiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoieHNlcnZlcl9tb2Rlc2V0dGluZyIgbXNnOiJtb2Rlc2V0dGluZyB4c2VydmVyIHN1cHBvcnQiIH19Ci0KLXt7IGlmIHhzZXJ2ZXIgPT0gInkiIGFuZCBrZXJuZWxfY2hvaWNlICE9ICJsaW51eC15b2N0b180LjgiIGFuZCBrZXJuZWxfY2hvaWNlICE9ICJsaW51eC15b2N0b180LjQiIGFuZCBrZXJuZWxfY2hvaWNlICE9ICJsaW51eC15b2N0b180LjEiIGFuZCBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iOiB4c2VydmVyX2Nob2ljZSA9ICJ4c2VydmVyX2k5MTUiIH19Ci0KLXt7IGlmIHhzZXJ2ZXIgPT0gInkiOiB9fQotWFNFUlZFUiA/PSAiJHtYU0VSVkVSX1g4Nl9CQVNFfSBcCi0gICAgICAgICAgICR7WFNFUlZFUl9YODZfRVhUfSBcCi17eyBpZiB4c2VydmVyID09ICJ5IiBhbmQgeHNlcnZlcl9jaG9pY2UgPT0gInhzZXJ2ZXJfdmVzYSI6IH19Ci0gICAgICAgICAgICR7WFNFUlZFUl9YODZfVkVTQX0gXAote3sgaWYgeHNlcnZlciA9PSAieSIgYW5kIHhzZXJ2ZXJfY2hvaWNlID09ICJ4c2VydmVyX2k5MTUiOiB9fQotICAgICAgICAgICAke1hTRVJWRVJfWDg2X0k5MTV9IFwKLXt7IGlmIHhzZXJ2ZXIgPT0gInkiIGFuZCB4c2VydmVyX2Nob2ljZSA9PSAieHNlcnZlcl9pOTY1IjogfX0KLSAgICAgICAgICAgJHtYU0VSVkVSX1g4Nl9JOTY1fSBcCi17eyBpZiB4c2VydmVyID09ICJ5IiBhbmQgeHNlcnZlcl9jaG9pY2UgPT0gInhzZXJ2ZXJfZmJkZXYiOiB9fQotICAgICAgICAgICAke1hTRVJWRVJfWDg2X0ZCREVWfSBcCi17eyBpZiB4c2VydmVyID09ICJ5IiBhbmQgeHNlcnZlcl9jaG9pY2UgPT0gInhzZXJ2ZXJfbW9kZXNldHRpbmciOiB9fQotICAgICAgICAgICAke1hTRVJWRVJfWDg2X01PREVTRVRUSU5HfSBcCi17eyBpZiB4c2VydmVyID09ICJ5IjogfX0KLSAgICAgICAgICAgIgotCi1NQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTICs9ICJsaW51eC1maXJtd2FyZSB2ODZkIGVlZS1hY3BpLXNjcmlwdHMiCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfcG4tbWF0Y2hib3gtcGFuZWwtMiA9ICIgLS13aXRoLWJhdHRlcnk9YWNwaSIKLQotR0xJQkNfQURET05TID0gIm5wdGwiCi0KLXt7IGlmIHhzZXJ2ZXIgPT0gInkiIGFuZCB4c2VydmVyX2Nob2ljZSA9PSAieHNlcnZlcl92ZXNhIjogfX0KLUFQUEVORCArPSAidmlkZW89dmVzYWZiIHZnYT0weDMxOCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9tYWNoaW5lLm5vaW5zdGFsbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9tYWNoaW5lLm5vaW5zdGFsbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQ0MmQwMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvbWFjaGluZS5ub2luc3RhbGwKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1kaXJuYW1lIHt7PW1hY2hpbmV9fQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL21hY2hpbmUveG9yZy5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL21hY2hpbmUveG9yZy5jb25mCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzlhMGYxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9tYWNoaW5lL3hvcmcuY29uZgorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIHhzZXJ2ZXIgPT0gInkiOiB9fSB0aGlzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWdfMC4xLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnXzAuMS5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA4MzAwMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWdfMC4xLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiB4c2VydmVyID09ICJ5IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzLm5vaW5zdGFsbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWUwZDkyYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzLm5vaW5zdGFsbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWRpcm5hbWUge3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIjogfX0gZmlsZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1wcmVlbXB0LXJ0LnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1wcmVlbXB0LXJ0LnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzE0NmUyMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtcHJlZW1wdC1ydC5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tcHJlZW1wdC1ydC5zY2MKLWRlZmluZSBLTUFDSElORSB7ez1tYWNoaW5lfX0KLQotZGVmaW5lIEtBUkNIIGkzODYKLQotaW5jbHVkZSB7ez1tYXBfcHJlZW1wdF9ydF9rYnJhbmNoKG5lZWRfbmV3X2ticmFuY2gsIG5ld19rYnJhbmNoLCBleGlzdGluZ19rYnJhbmNoKX19Ci17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLWRlZmluZSBLVFlQRSB7ez1uZXdfa2JyYW5jaH19Ci1icmFuY2gge3s9bWFjaGluZX19Ci0KLWluY2x1ZGUge3s9bWFjaGluZX19LnNjYwotCi0jIGRlZmF1bHQgcG9saWN5IGZvciBwcmVlbXB0LXJ0IGtlcm5lbHMKLWluY2x1ZGUgY2ZnL3VzYi1tYXNzLXN0b3JhZ2Uuc2NjCi1pbmNsdWRlIGNmZy9ib290LWxpdmUuc2NjCi1pbmNsdWRlIGZlYXR1cmVzL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC5zY2MKLWluY2x1ZGUgZmVhdHVyZXMvcHJvZmlsaW5nL3Byb2ZpbGluZy5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1zdGFuZGFyZC5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtc3RhbmRhcmQuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGQxY2E1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1zdGFuZGFyZC5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjCi1kZWZpbmUgS01BQ0hJTkUge3s9bWFjaGluZX19Ci0KLWRlZmluZSBLQVJDSCBpMzg2Ci0KLWluY2x1ZGUge3s9bWFwX3N0YW5kYXJkX2ticmFuY2gobmVlZF9uZXdfa2JyYW5jaCwgbmV3X2ticmFuY2gsIGV4aXN0aW5nX2ticmFuY2gpfX0gbm9wYXRjaAote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci1kZWZpbmUgS1RZUEUge3s9bmV3X2ticmFuY2h9fQotYnJhbmNoIHt7PW1hY2hpbmV9fQotCi1pbmNsdWRlIHt7PW1hY2hpbmV9fS5zY2MKLQotIyBkZWZhdWx0IHBvbGljeSBmb3Igc3RhbmRhcmQga2VybmVscwotaW5jbHVkZSBjZmcvdXNiLW1hc3Mtc3RvcmFnZS5zY2MKLWluY2x1ZGUgY2ZnL2Jvb3QtbGl2ZS5zY2MKLWluY2x1ZGUgZmVhdHVyZXMvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wLnNjYwotaW5jbHVkZSBmZWF0dXJlcy9wcm9maWxpbmcvcHJvZmlsaW5nLnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXRpbnkuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXRpbnkuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTM3M2IzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS10aW55LnNjYworKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS10aW55LnNjYwotZGVmaW5lIEtNQUNISU5FIHt7PW1hY2hpbmV9fQotCi1kZWZpbmUgS0FSQ0ggaTM4NgotCi1pbmNsdWRlIHt7PW1hcF90aW55X2ticmFuY2gobmVlZF9uZXdfa2JyYW5jaCwgbmV3X2ticmFuY2gsIGV4aXN0aW5nX2ticmFuY2gpfX0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQotZGVmaW5lIEtUWVBFIHt7PW5ld19rYnJhbmNofX0KLWJyYW5jaCB7ez1tYWNoaW5lfX0KLQotaW5jbHVkZSB7ez1tYWNoaW5lfX0uc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1jb25maWcuY2ZnIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItY29uZmlnLmNmZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjllZmRjYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1jb25maWcuY2ZnCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWZlYXR1cmVzLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWZlYXR1cmVzLnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODViZTI2ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1mZWF0dXJlcy5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1wYXRjaGVzLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLXBhdGNoZXMuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzU5ZGFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLXBhdGNoZXMuc2NjCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuY2ZnIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLmNmZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU1Yjg4Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuY2ZnCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LmNmZwotQ09ORklHX1g4Nl8zMj15Ci0jIE11c3QgZXhwbGljaXRseSBkaXNhYmxlIDY0QklUCi0jIENPTkZJR182NEJJVCBpcyBub3Qgc2V0Ci0KLUNPTkZJR19NQVRPTT15Ci1DT05GSUdfUFJJTlRLPXkKLQotIyBCYXNpYyBoYXJkd2FyZSBzdXBwb3J0IGZvciB0aGUgYm94IC0gbmV0d29yaywgVVNCLCBQQ0ksIHNvdW5kCi1DT05GSUdfTkVUREVWSUNFUz15Ci1DT05GSUdfQVRBPXkKLUNPTkZJR19BVEFfR0VORVJJQz15Ci1DT05GSUdfQVRBX1NGRj15Ci1DT05GSUdfUENJPXkKLUNPTkZJR19NTUM9eQotQ09ORklHX01NQ19TREhDST15Ci1DT05GSUdfVVNCX1NVUFBPUlQ9eQotQ09ORklHX1VTQj15Ci1DT05GSUdfVVNCX0FSQ0hfSEFTX0VIQ0k9eQotQ09ORklHX1I4MTY5PXkKLUNPTkZJR19QQVRBX1NDSD15Ci1DT05GSUdfTU1DX1NESENJX1BDST15Ci1DT05GSUdfVVNCX0VIQ0lfSENEPXkKLUNPTkZJR19QQ0lFUE9SVEJVUz15Ci1DT05GSUdfTkVUPXkKLUNPTkZJR19VU0JfVUhDSV9IQ0Q9eQotQ09ORklHX1VTQl9PSENJX0hDRD15Ci1DT05GSUdfQkxLX0RFVl9TRD15Ci1DT05GSUdfQ0hSX0RFVl9TRz15Ci1DT05GSUdfU09VTkQ9eQotQ09ORklHX1NORD15Ci1DT05GSUdfU05EX0hEQV9JTlRFTD15Ci1DT05GSUdfU0FUQV9BSENJPXkKLUNPTkZJR19BR1A9eQotQ09ORklHX1BNPXkKLUNPTkZJR19BQ1BJPXkKLUNPTkZJR19CQUNLTElHSFRfTENEX1NVUFBPUlQ9eQotQ09ORklHX0JBQ0tMSUdIVF9DTEFTU19ERVZJQ0U9eQotQ09ORklHX0lOUFVUPXkKLQotIyBNYWtlIHN1cmUgdGhlc2UgYXJlIG9uLCBvdGhlcndpc2UgdGhlIGJvb3R1cCB3b24ndCBiZSBmdW4KLUNPTkZJR19FWFQzX0ZTPXkKLUNPTkZJR19VTklYPXkKLUNPTkZJR19JTkVUPXkKLUNPTkZJR19NT0RVTEVTPXkKLUNPTkZJR19TSE1FTT15Ci1DT05GSUdfVE1QRlM9eQotQ09ORklHX1BBQ0tFVD15Ci0KLSMgTmVlZGVkIGZvciBib290aW5nIChhbmQgdXNpbmcpIFVTQiBtZW1vcnkgc3RpY2tzCi1DT05GSUdfQkxLX0RFVl9MT09QPXkKLUNPTkZJR19OTFNfQ09ERVBBR0VfNDM3PXkKLUNPTkZJR19OTFNfSVNPODg1OV8xPXkKLQotQ09ORklHX1JEX0daSVA9eQotCi0jIE5lZWRlZCBmb3IgYm9vdGluZyAoYW5kIHVzaW5nKSBDRCBpbWFnZXMKLUNPTkZJR19CTEtfREVWX1NSPXkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTRjNTRmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0uc2NjCi1rY29uZiBoYXJkd2FyZSB7ez1tYWNoaW5lfX0uY2ZnCi0KLWluY2x1ZGUgZmVhdHVyZXMvaW50ZWwtZTF4eHh4L2ludGVsLWUxMDAuc2NjCi1pbmNsdWRlIGZlYXR1cmVzL2ludGVsLWUxeHh4eC9pbnRlbC1lMXh4eHguc2NjCi0KLXt7IGlmIHhzZXJ2ZXIgPT0gInkiIGFuZCB4c2VydmVyX2Nob2ljZSA9PSAieHNlcnZlcl9pOTE1IiBvciB4c2VydmVyX2Nob2ljZSA9PSAieHNlcnZlcl9pOTY1IjogfX0KLWluY2x1ZGUgZmVhdHVyZXMvaTkxNS9pOTE1LnNjYwotCi1pbmNsdWRlIGZlYXR1cmVzL3NlcmlhbC84MjUwLnNjYwotaW5jbHVkZSBmZWF0dXJlcy9lcmljc3Nvbi0zZy9mNTUyMWd3LnNjYwotCi17eyBpZiB4c2VydmVyID09ICJ5IiBhbmQgeHNlcnZlcl9jaG9pY2UgPT0gInhzZXJ2ZXJfdmVzYSI6IH19Ci1pbmNsdWRlIGNmZy92ZXNhZmIuc2NjCi0KLWluY2x1ZGUgY2ZnL3VzYi1tYXNzLXN0b3JhZ2Uuc2NjCi1pbmNsdWRlIGNmZy9ib290LWxpdmUuc2NjCi1pbmNsdWRlIGZlYXR1cmVzL3Bvd2VyL2ludGVsLnNjYwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWxpc3Qubm9pbnN0YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTdmMGUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWxpc3Qubm9pbnN0YWxsCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi17eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iOiB9fQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToidXNlX2RlZmF1bHRfa2VybmVsIiBwcmlvOiIxMCIgbXNnOiJXb3VsZCB5b3UgbGlrZSB0byB1c2UgdGhlIGRlZmF1bHQgKDQuMTIpIGtlcm5lbD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLQote3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQgdXNlX2RlZmF1bHRfa2VybmVsID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Imtlcm5lbF9jaG9pY2UiIGdlbjoiYnNwLmtlcm5lbC5rZXJuZWxzIiBwcmlvOiIxMCIgbXNnOiJQbGVhc2UgY2hvb3NlIHRoZSBrZXJuZWwgdG8gdXNlIGluIHRoaXMgQlNQOiIgZGVmYXVsdDoibGludXgteW9jdG9fNC4xMiJ9fQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJlZDI3My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLWRldiI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19Igote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6ImkzODYiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJXb3VsZCB5b3UgbGlrZSBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhZTk0M2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by10aW55XzQuMTAiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xMCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmM2UxMDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by10aW55XzQuMTIiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xMCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmQxODE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by10aW55XzQuNCI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjQiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4NjE2ZWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC4xMCI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkOnN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQ6c3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xMCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2kzODYvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjBkNTdmNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjEyIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQ6c3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZDpzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEwIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvaTM4Ni9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGE5ZDQ3NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9pMzg2L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuNCI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkOnN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQ6c3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC40IgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvQ09QWUlORy5NSVQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9DT1BZSU5HLk1JVApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODlkZTM1NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9DT1BZSU5HLk1JVAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLW9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCi1pbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCi10byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCi1jb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLWZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0KLVRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi1hbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLQotVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLUlNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi1BVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi1MSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAotT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgotVEhFIFNPRlRXQVJFLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvUkVBRE1FIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvUkVBRE1FCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTY1MjdjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2xheWVyL1JFQURNRQorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLVRoaXMgUkVBRE1FIGZpbGUgY29udGFpbnMgaW5mb3JtYXRpb24gb24gdGhlIGNvbnRlbnRzIG9mIHRoZQote3s9bGF5ZXJfbmFtZX19IGxheWVyLgotCi1QbGVhc2Ugc2VlIHRoZSBjb3JyZXNwb25kaW5nIHNlY3Rpb25zIGJlbG93IGZvciBkZXRhaWxzLgotCi0KLURlcGVuZGVuY2llcwotPT09PT09PT09PT09Ci0KLVRoaXMgbGF5ZXIgZGVwZW5kcyBvbjoKLQotICBVUkk6IGdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2UKLSAgYnJhbmNoOiBtYXN0ZXIKLQotICBVUkk6IGdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL29wZW5lbWJlZGRlZC1jb3JlCi0gIGxheWVyczogbWV0YQotICBicmFuY2g6IG1hc3RlcgotCi0gIFVSSTogZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveHh4eAotICBsYXllcnM6IHh4eHgKLSAgYnJhbmNoOiBtYXN0ZXIKLQotCi1QYXRjaGVzCi09PT09PT09Ci0KLVBsZWFzZSBzdWJtaXQgYW55IHBhdGNoZXMgYWdhaW5zdCB0aGUge3s9bGF5ZXJfbmFtZX19IGxheWVyIHRvIHRoZQoteHh4eCBtYWlsaW5nIGxpc3QgKHh4eHhAenp6ei5vcmcpIGFuZCBjYzogdGhlIG1haW50YWluZXI6Ci0KLU1haW50YWluZXI6IFhYWCBZWVlZWVkgPHh4eC55eXl5eXlAenp6enouY29tPgotCi0KLVRhYmxlIG9mIENvbnRlbnRzCi09PT09PT09PT09PT09PT09PQotCi0gIEkuIEFkZGluZyB0aGUge3s9bGF5ZXJfbmFtZX19IGxheWVyIHRvIHlvdXIgYnVpbGQKLSBJSS4gTWlzYwotCi0KLUkuIEFkZGluZyB0aGUge3s9bGF5ZXJfbmFtZX19IGxheWVyIHRvIHlvdXIgYnVpbGQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotLS0tIHJlcGxhY2Ugd2l0aCBzcGVjaWZpYyBpbnN0cnVjdGlvbnMgZm9yIHRoZSB7ez1sYXllcl9uYW1lfX0gbGF5ZXIgLS0tCi0KLUluIG9yZGVyIHRvIHVzZSB0aGlzIGxheWVyLCB5b3UgbmVlZCB0byBtYWtlIHRoZSBidWlsZCBzeXN0ZW0gYXdhcmUgb2YKLWl0LgotCi1Bc3N1bWluZyB0aGUge3s9bGF5ZXJfbmFtZX19IGxheWVyIGV4aXN0cyBhdCB0aGUgdG9wLWxldmVsIG9mIHlvdXIKLXlvY3RvIGJ1aWxkIHRyZWUsIHlvdSBjYW4gYWRkIGl0IHRvIHRoZSBidWlsZCBzeXN0ZW0gYnkgYWRkaW5nIHRoZQotbG9jYXRpb24gb2YgdGhlIHt7PWxheWVyX25hbWV9fSBsYXllciB0byBiYmxheWVycy5jb25mLCBhbG9uZyB3aXRoIGFueQotb3RoZXIgbGF5ZXJzIG5lZWRlZC4gZS5nLjoKLQotICBCQkxBWUVSUyA/PSAiIFwKLSAgICAvcGF0aC90by95b2N0by9tZXRhIFwKLSAgICAvcGF0aC90by95b2N0by9tZXRhLXBva3kgXAotICAgIC9wYXRoL3RvL3lvY3RvL21ldGEteW9jdG8tYnNwIFwKLSAgICAvcGF0aC90by95b2N0by9tZXRhLXt7PWxheWVyX25hbWV9fSBcCi0gICAgIgotCi0KLUlJLiBNaXNjCi09PT09PT09PQotCi0tLS0gcmVwbGFjZSB3aXRoIHNwZWNpZmljIGluZm9ybWF0aW9uIGFib3V0IHRoZSB7ez1sYXllcl9uYW1lfX0gbGF5ZXIgLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9jb25mL2xheWVyLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9jb25mL2xheWVyLmNvbmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkZmZlMTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvY29uZi9sYXllci5jb25mCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotIyBXZSBoYXZlIGEgY29uZiBhbmQgY2xhc3NlcyBkaXJlY3RvcnksIGFkZCB0byBCQlBBVEgKLUJCUEFUSCAuPSAiOiR7TEFZRVJESVJ9IgotCi0jIFdlIGhhdmUgcmVjaXBlcy0qIGRpcmVjdG9yaWVzLCBhZGQgdG8gQkJGSUxFUwotQkJGSUxFUyArPSAiJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYiBcCi0JJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYmFwcGVuZCIKLQotQkJGSUxFX0NPTExFQ1RJT05TICs9ICJ7ez1sYXllcl9uYW1lfX0iCi1CQkZJTEVfUEFUVEVSTl97ez1sYXllcl9uYW1lfX0gPSAiXiR7TEFZRVJESVJ9LyIKLUJCRklMRV9QUklPUklUWV97ez1sYXllcl9uYW1lfX0gPSAie3s9bGF5ZXJfcHJpb3JpdHl9fSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2xheWVyL2xheWVyLXF1ZXN0aW9ucy5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9sYXllci1xdWVzdGlvbnMubm9pbnN0YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmE4OWMzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2xheWVyL2xheWVyLXF1ZXN0aW9ucy5ub2luc3RhbGwKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi17eyBpbnB1dCB0eXBlOiJlZGl0IiBuYW1lOiJsYXllcl9wcmlvcml0eSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGVudGVyIHRoZSBsYXllciBwcmlvcml0eSB5b3UnZCBsaWtlIHRvIHVzZSBmb3IgdGhlIGxheWVyOiIgZGVmYXVsdDoiNiJ9fQotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJjcmVhdGVfZXhhbXBsZV9yZWNpcGUiIHByaW86IjIwIiBtc2c6IldvdWxkIHlvdSBsaWtlIHRvIGhhdmUgYW4gZXhhbXBsZSByZWNpcGUgY3JlYXRlZD8gKHkvbikiIGRlZmF1bHQ6Im4ifX0KLQote3sgaWYgY3JlYXRlX2V4YW1wbGVfcmVjaXBlID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImVkaXQiIG5hbWU6ImV4YW1wbGVfcmVjaXBlX25hbWUiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBlbnRlciB0aGUgbmFtZSB5b3UnZCBsaWtlIHRvIHVzZSBmb3IgeW91ciBleGFtcGxlIHJlY2lwZToiIGRlZmF1bHQ6ImV4YW1wbGUifX0KLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToiY3JlYXRlX2V4YW1wbGVfYmJhcHBlbmQiIHByaW86IjIwIiBtc2c6IldvdWxkIHlvdSBsaWtlIHRvIGhhdmUgYW4gZXhhbXBsZSBiYmFwcGVuZCBmaWxlIGNyZWF0ZWQ/ICh5L24pIiBkZWZhdWx0OiJuIn19Ci0KLXt7IGlmIGNyZWF0ZV9leGFtcGxlX2JiYXBwZW5kID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImVkaXQiIG5hbWU6ImV4YW1wbGVfYmJhcHBlbmRfbmFtZSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGVudGVyIHRoZSBuYW1lIHlvdSdkIGxpa2UgdG8gdXNlIGZvciB5b3VyIGJiYXBwZW5kIGZpbGU6IiBkZWZhdWx0OiJleGFtcGxlIn19Ci0KLXt7IGlmIGNyZWF0ZV9leGFtcGxlX2JiYXBwZW5kID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImVkaXQiIG5hbWU6ImV4YW1wbGVfYmJhcHBlbmRfdmVyc2lvbiIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGVudGVyIHRoZSB2ZXJzaW9uIG51bWJlciB5b3UnZCBsaWtlIHRvIHVzZSBmb3IgeW91ciBiYmFwcGVuZCBmaWxlICh0aGlzIHNob3VsZCBtYXRjaCB0aGUgcmVjaXBlIHlvdSdyZSBhcHBlbmRpbmcgdG8pOiIgZGVmYXVsdDoiMC4xIn19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9yZWNpcGVzLWV4YW1wbGUtYmJhcHBlbmQubm9pbnN0YWxsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvcmVjaXBlcy1leGFtcGxlLWJiYXBwZW5kLm5vaW5zdGFsbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU5NGU2NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9yZWNpcGVzLWV4YW1wbGUtYmJhcHBlbmQubm9pbnN0YWxsCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZGlybmFtZSB7eyBpZiBjcmVhdGVfZXhhbXBsZV9iYmFwcGVuZCA9PSAieSI6IH19IHJlY2lwZXMtZXhhbXBsZS1iYmFwcGVuZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvcmVjaXBlcy1leGFtcGxlLWJiYXBwZW5kL2V4YW1wbGUtYmJhcHBlbmQvZXhhbXBsZS1iYmFwcGVuZC12ZXJzaW9uLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvcmVjaXBlcy1leGFtcGxlLWJiYXBwZW5kL2V4YW1wbGUtYmJhcHBlbmQvZXhhbXBsZS1iYmFwcGVuZC12ZXJzaW9uLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTMxMzMwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2xheWVyL3JlY2lwZXMtZXhhbXBsZS1iYmFwcGVuZC9leGFtcGxlLWJiYXBwZW5kL2V4YW1wbGUtYmJhcHBlbmQtdmVyc2lvbi5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9ZXhhbXBsZV9iYmFwcGVuZF9uYW1lfX1fe3s9ZXhhbXBsZV9iYmFwcGVuZF92ZXJzaW9ufX0uYmJhcHBlbmQKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59LSR7UFZ9OiIKLQotIwotIyBUaGlzIC5iYmFwcGVuZCBkb2Vzbid0IHlldCBkbyBhbnl0aGluZyAtIHJlcGxhY2UgdGhpcyB0ZXh0IHdpdGgKLSMgbW9kaWZpY2F0aW9ucyB0byB0aGUgZXhhbXBsZV8wLjEuYmIgcmVjaXBlLCBvciB3aGF0ZXZlciByZWNpcGUgaXQgaXMKLSMgdGhhdCB5b3Ugd2FudCB0byBtb2RpZnkgd2l0aCB0aGlzIC5iYmFwcGVuZCAobWFrZSBzdXJlIHlvdSBjaGFuZ2UKLSMgdGhlIHJlY2lwZSBuYW1lIChQTikgYW5kIHZlcnNpb24gKFBWKSB0byBtYXRjaCkuCi0jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9yZWNpcGVzLWV4YW1wbGUtYmJhcHBlbmQvZXhhbXBsZS1iYmFwcGVuZC9leGFtcGxlLWJiYXBwZW5kLXZlcnNpb24ubm9pbnN0YWxsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvcmVjaXBlcy1leGFtcGxlLWJiYXBwZW5kL2V4YW1wbGUtYmJhcHBlbmQvZXhhbXBsZS1iYmFwcGVuZC12ZXJzaW9uLm5vaW5zdGFsbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDZkZjhhOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9yZWNpcGVzLWV4YW1wbGUtYmJhcHBlbmQvZXhhbXBsZS1iYmFwcGVuZC9leGFtcGxlLWJiYXBwZW5kLXZlcnNpb24ubm9pbnN0YWxsCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZGlybmFtZSB7ez1leGFtcGxlX2JiYXBwZW5kX25hbWV9fS17ez1leGFtcGxlX2JiYXBwZW5kX3ZlcnNpb259fQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvcmVjaXBlcy1leGFtcGxlLWJiYXBwZW5kL2V4YW1wbGUtYmJhcHBlbmQvZXhhbXBsZS1iYmFwcGVuZC12ZXJzaW9uL2V4YW1wbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9yZWNpcGVzLWV4YW1wbGUtYmJhcHBlbmQvZXhhbXBsZS1iYmFwcGVuZC9leGFtcGxlLWJiYXBwZW5kLXZlcnNpb24vZXhhbXBsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjAwMGEzNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9yZWNpcGVzLWV4YW1wbGUtYmJhcHBlbmQvZXhhbXBsZS1iYmFwcGVuZC9leGFtcGxlLWJiYXBwZW5kLXZlcnNpb24vZXhhbXBsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLSMKLSMgVGhpcyBpcyBhIG5vbi1mdW5jdGlvbmFsIHBsYWNlaG9sZGVyIGZpbGUsIGhlcmUgZm9yIGV4YW1wbGUgcHVycG9zZXMKLSMgb25seS4KLSMKLSMgSWYgeW91IGhhZCBhIHBhdGNoIGZvciB5b3VyIHJlY2lwZSwgeW91J2QgcHV0IGl0IGluIHRoaXMgZGlyZWN0b3J5Ci0jIGFuZCByZWZlcmVuY2UgaXQgZnJvbSB5b3VyIHJlY2lwZSdzIFNSQ19VUkk6Ci0jCi0jICBTUkNfVVJJICs9ICJmaWxlOi8vZXhhbXBsZS5wYXRjaCIKLSMKLSMgTm90ZSB0aGF0IHlvdSBjb3VsZCBhbHNvIHJlbmFtZSB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhpcyBwYXRjaAotIyB0byByZW1vdmUgdGhlIHZlcnNpb24gbnVtYmVyIG9yIHNpbXBseSByZW5hbWUgaXQgJ2ZpbGVzJy4gIERvaW5nIHNvCi0jIGFsbG93cyB5b3UgdG8gdXNlIHRoZSBzYW1lIGRpcmVjdG9yeSBmb3IgbXVsdGlwbGUgcmVjaXBlcy4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2xheWVyL3JlY2lwZXMtZXhhbXBsZS5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9yZWNpcGVzLWV4YW1wbGUubm9pbnN0YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDA2OWIxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2xheWVyL3JlY2lwZXMtZXhhbXBsZS5ub2luc3RhbGwKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1kaXJuYW1lIHt7IGlmIGNyZWF0ZV9leGFtcGxlX3JlY2lwZSA9PSAieSI6IH19IHJlY2lwZXMtZXhhbXBsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvcmVjaXBlcy1leGFtcGxlL2V4YW1wbGUvZXhhbXBsZS1yZWNpcGUtMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvcmVjaXBlcy1leGFtcGxlL2V4YW1wbGUvZXhhbXBsZS1yZWNpcGUtMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTM0ZDM2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2xheWVyL3JlY2lwZXMtZXhhbXBsZS9leGFtcGxlL2V4YW1wbGUtcmVjaXBlLTAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PWV4YW1wbGVfcmVjaXBlX25hbWV9fV8wLjEuYmIKLSMKLSMgVGhpcyBmaWxlIHdhcyBkZXJpdmVkIGZyb20gdGhlICdIZWxsbyBXb3JsZCEnIGV4YW1wbGUgcmVjaXBlIGluIHRoZQotIyBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IE1hbnVhbC4KLSMKLQotU1VNTUFSWSA9ICJTaW1wbGUgaGVsbG93b3JsZCBhcHBsaWNhdGlvbiIKLVNFQ1RJT04gPSAiZXhhbXBsZXMiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9NSVQ7bWQ1PTA4MzVhZGU2OThlMGJjZjg1MDZlY2RhMmY3YjRmMzAyIgotCi1TUkNfVVJJID0gImZpbGU6Ly9oZWxsb3dvcmxkLmMiCi0KLVMgPSAiJHtXT1JLRElSfSIKLQotZG9fY29tcGlsZSgpIHsKLQkgICAgICR7Q0N9ICR7TERGTEFHU30gaGVsbG93b3JsZC5jIC1vIGhlbGxvd29ybGQKLX0KLQotZG9faW5zdGFsbCgpIHsKLQkgICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCSAgICAgaW5zdGFsbCAtbSAwNzU1IGhlbGxvd29ybGQgJHtEfSR7YmluZGlyfQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvcmVjaXBlcy1leGFtcGxlL2V4YW1wbGUvZXhhbXBsZS1yZWNpcGUtMC4xLm5vaW5zdGFsbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2xheWVyL3JlY2lwZXMtZXhhbXBsZS9leGFtcGxlL2V4YW1wbGUtcmVjaXBlLTAuMS5ub2luc3RhbGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzMTljMTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvcmVjaXBlcy1leGFtcGxlL2V4YW1wbGUvZXhhbXBsZS1yZWNpcGUtMC4xLm5vaW5zdGFsbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWRpcm5hbWUge3s9ZXhhbXBsZV9yZWNpcGVfbmFtZX19LTAuMQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbGF5ZXIvcmVjaXBlcy1leGFtcGxlL2V4YW1wbGUvZXhhbXBsZS1yZWNpcGUtMC4xL2V4YW1wbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9yZWNpcGVzLWV4YW1wbGUvZXhhbXBsZS9leGFtcGxlLXJlY2lwZS0wLjEvZXhhbXBsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjAwMGEzNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9yZWNpcGVzLWV4YW1wbGUvZXhhbXBsZS9leGFtcGxlLXJlY2lwZS0wLjEvZXhhbXBsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLSMKLSMgVGhpcyBpcyBhIG5vbi1mdW5jdGlvbmFsIHBsYWNlaG9sZGVyIGZpbGUsIGhlcmUgZm9yIGV4YW1wbGUgcHVycG9zZXMKLSMgb25seS4KLSMKLSMgSWYgeW91IGhhZCBhIHBhdGNoIGZvciB5b3VyIHJlY2lwZSwgeW91J2QgcHV0IGl0IGluIHRoaXMgZGlyZWN0b3J5Ci0jIGFuZCByZWZlcmVuY2UgaXQgZnJvbSB5b3VyIHJlY2lwZSdzIFNSQ19VUkk6Ci0jCi0jICBTUkNfVVJJICs9ICJmaWxlOi8vZXhhbXBsZS5wYXRjaCIKLSMKLSMgTm90ZSB0aGF0IHlvdSBjb3VsZCBhbHNvIHJlbmFtZSB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhpcyBwYXRjaAotIyB0byByZW1vdmUgdGhlIHZlcnNpb24gbnVtYmVyIG9yIHNpbXBseSByZW5hbWUgaXQgJ2ZpbGVzJy4gIERvaW5nIHNvCi0jIGFsbG93cyB5b3UgdG8gdXNlIHRoZSBzYW1lIGRpcmVjdG9yeSBmb3IgbXVsdGlwbGUgcmVjaXBlcy4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2xheWVyL3JlY2lwZXMtZXhhbXBsZS9leGFtcGxlL2V4YW1wbGUtcmVjaXBlLTAuMS9oZWxsb3dvcmxkLmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9sYXllci9yZWNpcGVzLWV4YW1wbGUvZXhhbXBsZS9leGFtcGxlLXJlY2lwZS0wLjEvaGVsbG93b3JsZC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWYyZTQ2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL2xheWVyL3JlY2lwZXMtZXhhbXBsZS9leGFtcGxlL2V4YW1wbGUtcmVjaXBlLTAuMS9oZWxsb3dvcmxkLmMKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLSNpbmNsdWRlIDxzdGRpby5oPgotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi17Ci0gICAgcHJpbnRmKCJIZWxsbyBXb3JsZCFcbiIpOwotCi0gICAgcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzLy5naXRpZ25vcmUgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzLy5naXRpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2OWRlMjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy8uZ2l0aWdub3JlCisrKyAvZGV2L251bGwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzdkYTI1My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL2NvbmYvbWFjaGluZS9tYWNoaW5lLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0uY29uZgotI0BUWVBFOiBNYWNoaW5lCi0jQE5BTUU6IHt7PW1hY2hpbmV9fQotCi0jQERFU0NSSVBUSU9OOiBNYWNoaW5lIGNvbmZpZ3VyYXRpb24gZm9yIHt7PW1hY2hpbmV9fSBzeXN0ZW1zCi0KLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1taXBzMzIuaW5jCi0KLU1BQ0hJTkVfRkVBVFVSRVMgPSAic2NyZWVuIGtleWJvYXJkIHBjaSB1c2Job3N0IGV4dDIgZXh0MyBzZXJpYWwiCi0KLUtFUk5FTF9JTUFHRVRZUEUgPSAidm1saW51eCIKLUtFUk5FTF9BTFRfSU1BR0VUWVBFID0gInZtbGludXguYmluIgotS0VSTkVMX0lNQUdFX1NUUklQX0VYVFJBX1NFQ1RJT05TICA9ICIuY29tbWVudCIKLQote3sgaWYga2VybmVsX2Nob2ljZSA9PSAiY3VzdG9tIjogcHJlZmVycmVkX2tlcm5lbCA9ICJsaW51eC15b2N0by1jdXN0b20iIH19Ci17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by1kZXYiOiBwcmVmZXJyZWRfa2VybmVsID0gImxpbnV4LXlvY3RvLWRldiIgfX0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImN1c3RvbSIgb3Iga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tZGV2IiA6IH19Ci1QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gInt7PXByZWZlcnJlZF9rZXJuZWx9fSIKLQote3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQga2VybmVsX2Nob2ljZSAhPSAibGludXgteW9jdG8tZGV2IjogcHJlZmVycmVkX2tlcm5lbCA9IGtlcm5lbF9jaG9pY2Uuc3BsaXQoJ18nKVswXSB9fQote3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQga2VybmVsX2Nob2ljZSAhPSAibGludXgteW9jdG8tZGV2IjogcHJlZmVycmVkX2tlcm5lbF92ZXJzaW9uID0ga2VybmVsX2Nob2ljZS5zcGxpdCgnXycpWzFdIH19Ci17eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iIGFuZCBrZXJuZWxfY2hvaWNlICE9ICJsaW51eC15b2N0by1kZXYiOiB9fQotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID89ICJ7ez1wcmVmZXJyZWRfa2VybmVsfX0iCi1QUkVGRVJSRURfVkVSU0lPTl97ez1wcmVmZXJyZWRfa2VybmVsfX0gPz0gInt7PXByZWZlcnJlZF9rZXJuZWxfdmVyc2lvbn19JSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToieHNlcnZlciIgcHJpbzoiNTAiIG1zZzoiRG8geW91IG5lZWQgc3VwcG9ydCBmb3IgWD8gKHkvbikiIGRlZmF1bHQ6InkiIH19Ci17eyBpZiB4c2VydmVyID09ICJ5IjogfX0KLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3hzZXJ2ZXIgPz0gInhzZXJ2ZXIteG9yZyIKLVhTRVJWRVIgPz0gInhzZXJ2ZXIteG9yZyBcCi0gICAgICAgICAgICB4Zjg2LXZpZGVvLWZiZGV2IgotCi1TRVJJQUxfQ09OU09MRSA9ICIxMTUyMDAgdHR5UzAiCi1VU0VfVlQgPz0gIjAiCi0KLU1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgPSAiIGtlcm5lbC1tb2R1bGVzIgotCi1JTUFHRV9GU1RZUEVTID89ICJqZmZzMiB0YXIuYnoyIgotSkZGUzJfRVJBU0VCTE9DSyA9ICIweDEwMDAwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzLm5vaW5zdGFsbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWUwZDkyYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzLm5vaW5zdGFsbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWRpcm5hbWUge3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIjogfX0gZmlsZXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1wcmVlbXB0LXJ0LnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1wcmVlbXB0LXJ0LnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTEyODI1NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtcHJlZW1wdC1ydC5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tcHJlZW1wdC1ydC5zY2MKLWRlZmluZSBLTUFDSElORSB7ez1tYWNoaW5lfX0KLQotZGVmaW5lIEtBUkNIIG1pcHMKLQotaW5jbHVkZSB7ez1tYXBfcHJlZW1wdF9ydF9rYnJhbmNoKG5lZWRfbmV3X2ticmFuY2gsIG5ld19rYnJhbmNoLCBleGlzdGluZ19rYnJhbmNoKX19Ci17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLWRlZmluZSBLVFlQRSB7ez1uZXdfa2JyYW5jaH19Ci1icmFuY2gge3s9bWFjaGluZX19Ci0KLWluY2x1ZGUge3s9bWFjaGluZX19LnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXN0YW5kYXJkLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1zdGFuZGFyZC5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzNGYzZDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXN0YW5kYXJkLnNjYworKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MKLWRlZmluZSBLTUFDSElORSB7ez1tYWNoaW5lfX0KLQotZGVmaW5lIEtBUkNIIG1pcHMKLQotaW5jbHVkZSB7ez1tYXBfc3RhbmRhcmRfa2JyYW5jaChuZWVkX25ld19rYnJhbmNoLCBuZXdfa2JyYW5jaCwgZXhpc3Rpbmdfa2JyYW5jaCl9fSBub3BhdGNoCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLWRlZmluZSBLVFlQRSB7ez1uZXdfa2JyYW5jaH19Ci1icmFuY2gge3s9bWFjaGluZX19Ci0KLWluY2x1ZGUge3s9bWFjaGluZX19LnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXRpbnkuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXRpbnkuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NGYzOTViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS10aW55LnNjYworKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS10aW55LnNjYwotZGVmaW5lIEtNQUNISU5FIHt7PW1hY2hpbmV9fQotCi1kZWZpbmUgS0FSQ0ggbWlwcwotCi1pbmNsdWRlIHt7PW1hcF90aW55X2ticmFuY2gobmVlZF9uZXdfa2JyYW5jaCwgbmV3X2ticmFuY2gsIGV4aXN0aW5nX2ticmFuY2gpfX0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQotZGVmaW5lIEtUWVBFIHt7PW5ld19rYnJhbmNofX0KLWJyYW5jaCB7ez1tYWNoaW5lfX0KLQotaW5jbHVkZSB7ez1tYWNoaW5lfX0uc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1jb25maWcuY2ZnIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItY29uZmlnLmNmZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc0ODllNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1jb25maWcuY2ZnCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItZmVhdHVyZXMuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItZmVhdHVyZXMuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWJlMjZkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWZlYXR1cmVzLnNjYworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLXBhdGNoZXMuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItcGF0Y2hlcy5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3Zjc0N2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItcGF0Y2hlcy5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLmNmZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5jZmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmZTQ3NjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLmNmZworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LmNmZwotQ09ORklHX01JUFM9eQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5MmZkYzkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYworKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LnNjYwota2NvbmYgaGFyZHdhcmUge3s9bWFjaGluZX19LmNmZwotCi1pbmNsdWRlIGNmZy91c2ItbWFzcy1zdG9yYWdlLnNjYwotaW5jbHVkZSBjZmcvZnMvdmZhdC5zY2MKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE3ZjBlMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAote3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIjogfX0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InVzZV9kZWZhdWx0X2tlcm5lbCIgcHJpbzoiMTAiIG1zZzoiV291bGQgeW91IGxpa2UgdG8gdXNlIHRoZSBkZWZhdWx0ICg0LjEyKSBrZXJuZWw/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSIgYW5kIHVzZV9kZWZhdWx0X2tlcm5lbCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJrZXJuZWxfY2hvaWNlIiBnZW46ImJzcC5rZXJuZWwua2VybmVscyIgcHJpbzoiMTAiIG1zZzoiUGxlYXNlIGNob29zZSB0aGUga2VybmVsIHRvIHVzZSBpbiB0aGlzIEJTUDoiIGRlZmF1bHQ6ImxpbnV4LXlvY3RvXzQuMTIifX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyZWQyNzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by1kZXYiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiV291bGQgeW91IGxpa2UgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYWU5NDNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjEwIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjNlMTA0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjEyIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjJkMTgxNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjQiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC40IgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmJlY2I1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuMTAiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4NzRjOWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC4xMiI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xMCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4MDljNzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjQiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuNCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC8uZ2l0aWdub3JlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0Ly5naXRpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2OWRlMjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0Ly5naXRpZ25vcmUKKysrIC9kZXYvbnVsbApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L2NvbmYvbWFjaGluZS9tYWNoaW5lLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYThlZWEyYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZgorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS5jb25mCi0jQFRZUEU6IE1hY2hpbmUKLSNATkFNRToge3s9bWFjaGluZX19Ci0KLSNAREVTQ1JJUFRJT046IE1hY2hpbmUgY29uZmlndXJhdGlvbiBmb3Ige3s9bWFjaGluZX19IHN5c3RlbXMKLQotcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLW1pcHM2NC5pbmMKLQotTUFDSElORV9GRUFUVVJFUyA9ICJwY2kgZXh0MiBleHQzIHNlcmlhbCIKLQotS0VSTkVMX0lNQUdFVFlQRSA9ICJ2bWxpbnV4IgotS0VSTkVMX0FMVF9JTUFHRVRZUEUgPSAidm1saW51eC5iaW4iCi1LRVJORUxfSU1BR0VfU1RSSVBfRVhUUkFfU0VDVElPTlMgID0gIi5jb21tZW50IgotCi17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJjdXN0b20iOiBwcmVmZXJyZWRfa2VybmVsID0gImxpbnV4LXlvY3RvLWN1c3RvbSIgfX0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLWRldiI6IHByZWZlcnJlZF9rZXJuZWwgPSAibGludXgteW9jdG8tZGV2IiB9fQote3sgaWYga2VybmVsX2Nob2ljZSA9PSAiY3VzdG9tIiBvciBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by1kZXYiIDogfX0KLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAie3s9cHJlZmVycmVkX2tlcm5lbH19IgotCi17eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iIGFuZCBrZXJuZWxfY2hvaWNlICE9ICJsaW51eC15b2N0by1kZXYiOiBwcmVmZXJyZWRfa2VybmVsID0ga2VybmVsX2Nob2ljZS5zcGxpdCgnXycpWzBdIH19Ci17eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iIGFuZCBrZXJuZWxfY2hvaWNlICE9ICJsaW51eC15b2N0by1kZXYiOiBwcmVmZXJyZWRfa2VybmVsX3ZlcnNpb24gPSBrZXJuZWxfY2hvaWNlLnNwbGl0KCdfJylbMV0gfX0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSIgYW5kIGtlcm5lbF9jaG9pY2UgIT0gImxpbnV4LXlvY3RvLWRldiI6IH19Ci1QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gInt7PXByZWZlcnJlZF9rZXJuZWx9fSIKLVBSRUZFUlJFRF9WRVJTSU9OX3t7PXByZWZlcnJlZF9rZXJuZWx9fSA/PSAie3s9cHJlZmVycmVkX2tlcm5lbF92ZXJzaW9ufX0lIgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJ4c2VydmVyIiBwcmlvOiI1MCIgbXNnOiJEbyB5b3UgbmVlZCBzdXBwb3J0IGZvciBYPyAoeS9uKSIgZGVmYXVsdDoieSIgfX0KLXt7IGlmIHhzZXJ2ZXIgPT0gInkiOiB9fQotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwveHNlcnZlciA/PSAieHNlcnZlci14b3JnIgotWFNFUlZFUiA/PSAieHNlcnZlci14b3JnIFwKLSAgICAgICAgICAgIHhmODYtdmlkZW8tZmJkZXYiCi0KLVNFUklBTF9DT05TT0xFID0gIjExNTIwMCB0dHlTMCIKLVVTRV9WVCA/PSAiMCIKLQotTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyA9ICIga2VybmVsLW1vZHVsZXMiCi0KLUlNQUdFX0ZTVFlQRVMgPz0gImpmZnMyIHRhci5iejIiCi1KRkZTMl9FUkFTRUJMT0NLID0gIjB4MTAwMDAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMubm9pbnN0YWxsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzLm5vaW5zdGFsbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWUwZDkyYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMubm9pbnN0YWxsCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZGlybmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iOiB9fSBmaWxlcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtcHJlZW1wdC1ydC5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1wcmVlbXB0LXJ0LnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTEyODI1NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1wcmVlbXB0LXJ0LnNjYworKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS1wcmVlbXB0LXJ0LnNjYwotZGVmaW5lIEtNQUNISU5FIHt7PW1hY2hpbmV9fQotCi1kZWZpbmUgS0FSQ0ggbWlwcwotCi1pbmNsdWRlIHt7PW1hcF9wcmVlbXB0X3J0X2ticmFuY2gobmVlZF9uZXdfa2JyYW5jaCwgbmV3X2ticmFuY2gsIGV4aXN0aW5nX2ticmFuY2gpfX0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQotZGVmaW5lIEtUWVBFIHt7PW5ld19rYnJhbmNofX0KLWJyYW5jaCB7ez1tYWNoaW5lfX0KLQotaW5jbHVkZSB7ez1tYWNoaW5lfX0uc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1zdGFuZGFyZC5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1zdGFuZGFyZC5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzNGYzZDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtc3RhbmRhcmQuc2NjCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYwotZGVmaW5lIEtNQUNISU5FIHt7PW1hY2hpbmV9fQotCi1kZWZpbmUgS0FSQ0ggbWlwcwotCi1pbmNsdWRlIHt7PW1hcF9zdGFuZGFyZF9rYnJhbmNoKG5lZWRfbmV3X2ticmFuY2gsIG5ld19rYnJhbmNoLCBleGlzdGluZ19rYnJhbmNoKX19IG5vcGF0Y2gKLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQotZGVmaW5lIEtUWVBFIHt7PW5ld19rYnJhbmNofX0KLWJyYW5jaCB7ez1tYWNoaW5lfX0KLQotaW5jbHVkZSB7ez1tYWNoaW5lfX0uc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS10aW55LnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXRpbnkuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NGYzOTViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXRpbnkuc2NjCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXRpbnkuc2NjCi1kZWZpbmUgS01BQ0hJTkUge3s9bWFjaGluZX19Ci0KLWRlZmluZSBLQVJDSCBtaXBzCi0KLWluY2x1ZGUge3s9bWFwX3Rpbnlfa2JyYW5jaChuZWVkX25ld19rYnJhbmNoLCBuZXdfa2JyYW5jaCwgZXhpc3Rpbmdfa2JyYW5jaCl9fQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci1kZWZpbmUgS1RZUEUge3s9bmV3X2ticmFuY2h9fQotYnJhbmNoIHt7PW1hY2hpbmV9fQotCi1pbmNsdWRlIHt7PW1hY2hpbmV9fS5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItY29uZmlnLmNmZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItY29uZmlnLmNmZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjllZmRjYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWNvbmZpZy5jZmcKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1mZWF0dXJlcy5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWZlYXR1cmVzLnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODViZTI2ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWZlYXR1cmVzLnNjYworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItcGF0Y2hlcy5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLXBhdGNoZXMuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzU5ZGFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItcGF0Y2hlcy5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLmNmZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLmNmZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNjOTA2Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5jZmcKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0uY2ZnCi0jU09DCi1DT05GSUdfQ0FWSVVNX09DVEVPTl9TT0M9eQotQ09ORklHX0NBVklVTV9DTjYzWFhQMT15Ci1DT05GSUdfQ0FWSVVNX09DVEVPTl9DVk1TRUdfU0laRT0yCi0KLSNLZXJuZWwKLUNPTkZJR19TTVA9eQotQ09ORklHX05SX0NQVVM9MzIKLSNFeGVjdXRhYmxlIGZpbGUgZm9ybWF0cwotQ09ORklHX01JUFMzMl9DT01QQVQ9eQotQ09ORklHX01JUFMzMl9PMzI9eQotQ09ORklHX01JUFMzMl9OMzI9eQotCi0KLSNQQ0kKLUNPTkZJR19QQ0k9eQotQ09ORklHX1BDSV9NU0k9eQotCi0jSTJDCi1DT05GSUdfSTJDPXkKLUNPTkZJR19JMkNfT0NURU9OPXkKLQotQ09ORklHX0hXX1JBTkRPTV9PQ1RFT049eQotCi0jU1BJCi1DT05GSUdfU1BJPXkKLUNPTkZJR19TUElfT0NURU9OPXkKLQotI01pc2MKLUNPTkZJR19FRVBST01fQVQyND15Ci1DT05GSUdfRUVQUk9NX0FUMjU9eQotQ09ORklHX09DVEVPTl9XRFQ9eQotCi1DT05GSUdfU1RBR0lORz15Ci0KLSNFdGhlcm5ldAotQ09ORklHX09DVEVPTl9FVEhFUk5FVD15Ci1DT05GSUdfT0NURU9OX01HTVRfRVRIRVJORVQ9eQotQ09ORklHX01ESU9fT0NURU9OPXkKLQotI1BIWQotQ09ORklHX01BUlZFTExfUEhZPXkKLUNPTkZJR19CUk9BRENPTV9QSFk9eQotQ09ORklHX0JDTTg3WFhfUEhZPXkKLQotCi0jVVNCCi1DT05GSUdfVVNCPXkKLUNPTkZJR19PQ1RFT05fVVNCPXkKLUNPTkZJR19VU0JfT0NURU9OX0VIQ0k9eQotQ09ORklHX1VTQl9PQ1RFT05fT0hDST15Ci1DT05GSUdfVVNCX09DVEVPTjJfQ09NTU9OPXkKLQotQ09ORklHX01URD15Ci1DT05GSUdfTVREX0JMT0NLPXkKLUNPTkZJR19NVERfQ0ZJPXkKLUNPTkZJR19NVERfQ0ZJX0FNRFNURD15Ci1DT05GSUdfTVREX0NNRExJTkVfUEFSVFM9eQotCi1DT05GSUdfU0VSSUFMXzgyNTA9eQotQ09ORklHX1NFUklBTF84MjUwX0NPTlNPTEU9eQotQ09ORklHX1NFUklBTF84MjUwX05SX1VBUlRTPTIKLUNPTkZJR19TRVJJQUxfODI1MF9SVU5USU1FX1VBUlRTPTIKLUNPTkZJR19TRVJJQUxfODI1MF9EVz15Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzkyZmRjOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS5zY2MKLWtjb25mIGhhcmR3YXJlIHt7PW1hY2hpbmV9fS5jZmcKLQotaW5jbHVkZSBjZmcvdXNiLW1hc3Mtc3RvcmFnZS5zY2MKLWluY2x1ZGUgY2ZnL2ZzL3ZmYXQuc2NjCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWxpc3Qubm9pbnN0YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTdmMGUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLXt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSI6IH19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJ1c2VfZGVmYXVsdF9rZXJuZWwiIHByaW86IjEwIiBtc2c6IldvdWxkIHlvdSBsaWtlIHRvIHVzZSB0aGUgZGVmYXVsdCAoNC4xMikga2VybmVsPyAoeS9uKSIgZGVmYXVsdDoieSJ9fQotCi17eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iIGFuZCB1c2VfZGVmYXVsdF9rZXJuZWwgPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToia2VybmVsX2Nob2ljZSIgZ2VuOiJic3Aua2VybmVsLmtlcm5lbHMiIHByaW86IjEwIiBtc2c6IlBsZWFzZSBjaG9vc2UgdGhlIGtlcm5lbCB0byB1c2UgaW4gdGhpcyBCU1A6IiBkZWZhdWx0OiJsaW51eC15b2N0b180LjEyIn19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJlZDI3My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tZGV2IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6ImkzODYiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IldvdWxkIHlvdSBsaWtlIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhZTk0M2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xMCI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEwIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmM2UxMDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xMiI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEwIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmQxODE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC40IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuNCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL21pcHM2NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzNmE5NTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjEwIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvZWRnZXJvdXRlciIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9lZGdlcm91dGVyIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEwIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTMzM2MzMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuMTIiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9lZGdlcm91dGVyIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2VkZ2Vyb3V0ZXIiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvbWlwczY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2QxODU2Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9taXBzNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC40IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvZWRnZXJvdXRlciIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9lZGdlcm91dGVyIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjQiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjLy5naXRpZ25vcmUgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjLy5naXRpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2OWRlMjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy8uZ2l0aWdub3JlCisrKyAvZGV2L251bGwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzUyYjk3Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL2NvbmYvbWFjaGluZS9tYWNoaW5lLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0uY29uZgotI0BUWVBFOiBNYWNoaW5lCi0jQE5BTUU6IHt7PW1hY2hpbmV9fQotCi0jQERFU0NSSVBUSU9OOiBNYWNoaW5lIGNvbmZpZ3VyYXRpb24gZm9yIHt7PW1hY2hpbmV9fSBzeXN0ZW1zCi0KLVRBUkdFVF9GUFUgPSAiIgotCi17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJ0dW5lZmlsZSIgcHJpbzoiNDAiIG1zZzoiV2hpY2ggbWFjaGluZSB0dW5pbmcgd291bGQgeW91IGxpa2UgdG8gdXNlPyIgZGVmYXVsdDoidHVuZV9wcGNlMzAwYzMiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoidHVuZV9wcGM0NzYiIG1zZzoicHBjNDc2IHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfcHBjNjAzZSIgbXNnOiJwcGM2MDNlIHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfcHBjNzQwMCIgbXNnOiJwcGM3NDAwIHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfcHBjZTMwMGMyIiBtc2c6InBwY2UzMDBjMiB0dW5pbmcgb3B0aW1pemF0aW9ucyIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJ0dW5lX3BwY2UzMDBjMyIgbXNnOiJwcGNlMzAwYzMgdHVuaW5nIG9wdGltaXphdGlvbnMiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoidHVuZV9wcGNlNTAwIiBtc2c6InBwY2U1MDAgdHVuaW5nIG9wdGltaXphdGlvbnMiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoidHVuZV9wcGNlNTAwbWMiIG1zZzoicHBjZTUwMG1jIHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfcHBjZTUwMHYyIiBtc2c6InBwY2U1MDB2MiB0dW5pbmcgb3B0aW1pemF0aW9ucyIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJ0dW5lX3BwY2U1NTAwIiBtc2c6InBwY2U1NTAwIHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfcHBjZTY1MDAiIG1zZzoicHBjZTY1MDAgdHVuaW5nIG9wdGltaXphdGlvbnMiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoidHVuZV9wb3dlcjUiIG1zZzoicG93ZXI1IHR1bmluZyBvcHRpbWl6YXRpb25zIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InR1bmVfcG93ZXI2IiBtc2c6InBvd2VyNiB0dW5pbmcgb3B0aW1pemF0aW9ucyIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJ0dW5lX3Bvd2VyNyIgbXNnOiJwb3dlcjcgdHVuaW5nIG9wdGltaXphdGlvbnMiIH19Ci17eyBpZiB0dW5lZmlsZSA9PSAidHVuZV9wcGM0NzYiOiB9fQotaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwYzQ3Ni5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX3BwYzYwM2UiOiB9fQotaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwYzYwM2UuaW5jCi17eyBpZiB0dW5lZmlsZSA9PSAidHVuZV9wcGM3NDAwIjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGM3NDAwLmluYwote3sgaWYgdHVuZWZpbGUgPT0gInR1bmVfcHBjZTMwMGMyIjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGNlMzAwYzIuaW5jCi17eyBpZiB0dW5lZmlsZSA9PSAidHVuZV9wcGNlMzAwYzMiOiB9fQotaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2UzMDBjMy5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX3BwY2U1MDAiOiB9fQotaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U1MDAuaW5jCi17eyBpZiB0dW5lZmlsZSA9PSAidHVuZV9wcGNlNTAwbWMiOiB9fQotaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U1MDBtYy5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX3BwY2U1MDB2MiI6IH19Ci1pbmNsdWRlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjZTUwMHYyLmluYwote3sgaWYgdHVuZWZpbGUgPT0gInR1bmVfcHBjZTU1MDAiOiB9fQotaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U1NTAwLmluYwote3sgaWYgdHVuZWZpbGUgPT0gInR1bmVfcHBjZTY1MDAiOiB9fQotaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U2NTAwLmluYwote3sgaWYgdHVuZWZpbGUgPT0gInR1bmVfcG93ZXI1IjogfX0KLWluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wb3dlcjUuaW5jCi17eyBpZiB0dW5lZmlsZSA9PSAidHVuZV9wb3dlcjYiOiB9fQotaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBvd2VyNi5pbmMKLXt7IGlmIHR1bmVmaWxlID09ICJ0dW5lX3Bvd2VyNyI6IH19Ci1pbmNsdWRlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcG93ZXI3LmluYwotCi1LRVJORUxfSU1BR0VUWVBFID0gInVJbWFnZSIKLQotRVhUUkFfSU1BR0VERVBFTkRTICs9ICJ1LWJvb3QiCi1VQk9PVF9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJNUEM4MzE1RVJEQl9jb25maWciCi0KLVNFUklBTF9DT05TT0xFID0gIjExNTIwMCB0dHlTMCIKLQotTUFDSElORV9GRUFUVVJFUyA9ICJrZXlib2FyZCBwY2kgZXh0MiBleHQzIHNlcmlhbCIKLQote3sgaWYga2VybmVsX2Nob2ljZSA9PSAiY3VzdG9tIjogcHJlZmVycmVkX2tlcm5lbCA9ICJsaW51eC15b2N0by1jdXN0b20iIH19Ci17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by1kZXYiOiBwcmVmZXJyZWRfa2VybmVsID0gImxpbnV4LXlvY3RvLWRldiIgfX0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImN1c3RvbSIgb3Iga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tZGV2IiA6IH19Ci1QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gInt7PXByZWZlcnJlZF9rZXJuZWx9fSIKLQote3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQga2VybmVsX2Nob2ljZSAhPSAibGludXgteW9jdG8tZGV2IjogcHJlZmVycmVkX2tlcm5lbCA9IGtlcm5lbF9jaG9pY2Uuc3BsaXQoJ18nKVswXSB9fQote3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQga2VybmVsX2Nob2ljZSAhPSAibGludXgteW9jdG8tZGV2IjogcHJlZmVycmVkX2tlcm5lbF92ZXJzaW9uID0ga2VybmVsX2Nob2ljZS5zcGxpdCgnXycpWzFdIH19Ci17eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iIGFuZCBrZXJuZWxfY2hvaWNlICE9ICJsaW51eC15b2N0by1kZXYiOiB9fQotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID89ICJ7ez1wcmVmZXJyZWRfa2VybmVsfX0iCi1QUkVGRVJSRURfVkVSU0lPTl97ez1wcmVmZXJyZWRfa2VybmVsfX0gPz0gInt7PXByZWZlcnJlZF9rZXJuZWxfdmVyc2lvbn19JSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToieHNlcnZlciIgcHJpbzoiNTAiIG1zZzoiRG8geW91IG5lZWQgc3VwcG9ydCBmb3IgWD8gKHkvbikiIGRlZmF1bHQ6InkiIH19Ci17eyBpZiB4c2VydmVyID09ICJ5IjogfX0KLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3hzZXJ2ZXIgPz0gInhzZXJ2ZXIteG9yZyIKLVhTRVJWRVIgPz0gInhzZXJ2ZXIteG9yZyBcCi0gICAgICAgICAgIHhmODYtdmlkZW8tZmJkZXYiCi0KLVBSRUZFUlJFRF9WRVJTSU9OX3UtYm9vdCA/PSAidjIwMTYuMDElIgote3sgaW5wdXQgdHlwZToiZWRpdCIgbmFtZToidWJvb3RfZW50cnlwb2ludCIgcHJpbzoiNDAiIG1zZzoiUGxlYXNlIHNwZWNpZnkgYSB2YWx1ZSBmb3IgVUJPT1RfRU5UUllQT0lOVDoiIGRlZmF1bHQ6IjB4MDAwMDAwMDAiIH19Ci1VQk9PVF9FTlRSWVBPSU5UID0gInt7PXVib290X2VudHJ5cG9pbnR9fSIKLQote3sgaW5wdXQgdHlwZToiZWRpdCIgbmFtZToia2VybmVsX2RldmljZXRyZWUiIHByaW86IjQwIiBtc2c6IlBsZWFzZSBzcGVjaWZ5IGEgW2FyY2gvcG93ZXJwYy9ib290L2R0cy94eHhdIHZhbHVlIGZvciBLRVJORUxfREVWSUNFVFJFRToiIGRlZmF1bHQ6Im1wYzgzMTVlcmRiLmR0cyIgfX0KLUtFUk5FTF9ERVZJQ0VUUkVFID0gIiR7U30vYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL3t7PWtlcm5lbF9kZXZpY2V0cmVlfX0iCi0KLU1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgPSAiIGtlcm5lbC1tb2R1bGVzIgotCi1JTUFHRV9GU1RZUEVTID89ICJqZmZzMiB0YXIuYnoyIgotSkZGUzJfRVJBU0VCTE9DSyA9ICIweDQwMDAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzLm5vaW5zdGFsbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMubm9pbnN0YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTBkOTJjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMubm9pbnN0YWxsCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZGlybmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iOiB9fSBmaWxlcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXByZWVtcHQtcnQuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXByZWVtcHQtcnQuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MWNjZmI4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1wcmVlbXB0LXJ0LnNjYworKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS1wcmVlbXB0LXJ0LnNjYwotZGVmaW5lIEtNQUNISU5FIHt7PW1hY2hpbmV9fQotCi1kZWZpbmUgS0FSQ0ggcG93ZXJwYwotCi1pbmNsdWRlIHt7PW1hcF9wcmVlbXB0X3J0X2ticmFuY2gobmVlZF9uZXdfa2JyYW5jaCwgbmV3X2ticmFuY2gsIGV4aXN0aW5nX2ticmFuY2gpfX0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQotZGVmaW5lIEtUWVBFIHt7PW5ld19rYnJhbmNofX0KLWJyYW5jaCB7ez1tYWNoaW5lfX0KLQotaW5jbHVkZSB7ez1tYWNoaW5lfX0uc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtc3RhbmRhcmQuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXN0YW5kYXJkLnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE2NmZjZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtc3RhbmRhcmQuc2NjCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYwotZGVmaW5lIEtNQUNISU5FIHt7PW1hY2hpbmV9fQotCi1kZWZpbmUgS0FSQ0ggcG93ZXJwYwotCi1pbmNsdWRlIHt7PW1hcF9zdGFuZGFyZF9rYnJhbmNoKG5lZWRfbmV3X2ticmFuY2gsIG5ld19rYnJhbmNoLCBleGlzdGluZ19rYnJhbmNoKX19IG5vcGF0Y2gKLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQotZGVmaW5lIEtUWVBFIHt7PW5ld19rYnJhbmNofX0KLWJyYW5jaCB7ez1tYWNoaW5lfX0KLQotaW5jbHVkZSB7ez1tYWNoaW5lfX0uc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdGlueS5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdGlueS5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3MDFmZDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXRpbnkuc2NjCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXRpbnkuc2NjCi1kZWZpbmUgS01BQ0hJTkUge3s9bWFjaGluZX19Ci0KLWRlZmluZSBLQVJDSCBwb3dlcnBjCi0KLWluY2x1ZGUge3s9bWFwX3Rpbnlfa2JyYW5jaChuZWVkX25ld19rYnJhbmNoLCBuZXdfa2JyYW5jaCwgZXhpc3Rpbmdfa2JyYW5jaCl9fQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci1kZWZpbmUgS1RZUEUge3s9bmV3X2ticmFuY2h9fQotYnJhbmNoIHt7PW1hY2hpbmV9fQotCi1pbmNsdWRlIHt7PW1hY2hpbmV9fS5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWNvbmZpZy5jZmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1jb25maWcuY2ZnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzQ4OWU0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWNvbmZpZy5jZmcKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1mZWF0dXJlcy5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1mZWF0dXJlcy5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4Mjc1OWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItZmVhdHVyZXMuc2NjCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1wYXRjaGVzLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLXBhdGNoZXMuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2Y3NDdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLXBhdGNoZXMuc2NjCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5jZmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuY2ZnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YmZlMWZlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5jZmcKKysrIC9kZXYvbnVsbApAQCAtMSwxNjQgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LmNmZwotLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdBUk5JTkcKLS4KLS4gVGhpcyBmaWxlIGlzIGEga2VybmVsIGNvbmZpZ3VyYXRpb24gZnJhZ21lbnQsIGFuZCBub3QgYSBmdWxsIGtlcm5lbAotLiBjb25maWd1cmF0aW9uIGZpbGUuICBUaGUgZmluYWwga2VybmVsIGNvbmZpZ3VyYXRpb24gaXMgbWFkZSB1cCBvZgotLiBhbiBhc3NlbWJseSBvZiBwcm9jZXNzZWQgZnJhZ21lbnRzLCBlYWNoIG9mIHdoaWNoIGlzIGRlc2lnbmVkIHRvCi0uIGNhcHR1cmUgYSBzcGVjaWZpYyBwYXJ0IG9mIHRoZSBmaW5hbCBjb25maWd1cmF0aW9uIChlLmcuIHBsYXRmb3JtCi0uIGNvbmZpZ3VyYXRpb24sIGZlYXR1cmUgY29uZmlndXJhdGlvbiwgYW5kIGJvYXJkIHNwZWNpZmljIGhhcmR3YXJlCi0uIGNvbmZpZ3VyYXRpb24pLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24ga2VybmVsIGNvbmZpZ3VyYXRpb24sIHBsZWFzZQotLiBjb25zdWx0IHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24uCi0uCi0uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgotQ09ORklHX1BQQzMyPXkKLUNPTkZJR19QUENfT0Y9eQotQ09ORklHX1BQQ19VREJHXzE2NTUwPXkKLQotIwotIyBQcm9jZXNzb3Igc3VwcG9ydAotIwotQ09ORklHX1BQQ184M3h4PXkKLQotIwotIyBQbGF0Zm9ybSBzdXBwb3J0Ci0jCi1DT05GSUdfTVBDODMxeF9SREI9eQotIyBDT05GSUdfUFBDX0NIUlAgaXMgbm90IHNldAotIyBDT05GSUdfUFBDX1BNQUMgaXMgbm90IHNldAotCi0jCi0jIEJ1cyBvcHRpb25zCi0jCi1DT05GSUdfUENJPXkKLQotIwotIyBNZW1vcnkgVGVjaG5vbG9neSBEZXZpY2VzIChNVEQpCi0jCi1DT05GSUdfTVREPXkKLUNPTkZJR19NVERfUEFSVElUSU9OUz15Ci1DT05GSUdfTVREX0NNRExJTkVfUEFSVFM9eQotQ09ORklHX01URF9PRl9QQVJUUz15Ci0KLSMKLSMgVXNlciBNb2R1bGVzIEFuZCBUcmFuc2xhdGlvbiBMYXllcnMKLSMKLUNPTkZJR19NVERfQ0hBUj15Ci1DT05GSUdfTVREX0JMT0NLPXkKLQotIwotIyBSQU0vUk9NL0ZsYXNoIGNoaXAgZHJpdmVycwotIwotQ09ORklHX01URF9DRkk9eQotQ09ORklHX01URF9DRklfQU1EU1REPXkKLQotIwotIyBNYXBwaW5nIGRyaXZlcnMgZm9yIGNoaXAgYWNjZXNzCi0jCi1DT05GSUdfTVREX1BIWVNNQVBfT0Y9eQotCi0jCi0jIE5BTkQgRmxhc2ggRGV2aWNlIERyaXZlcnMKLSMKLUNPTkZJR19NVERfTkFORD15Ci0KLSMKLSMgRXRoZXJuZXQgKDEwMDAgTWJpdCkKLSMKLUNPTkZJR19HSUFORkFSPXkKLQotIwotIyBTZXJpYWwgZHJpdmVycwotIwotQ09ORklHX1NFUklBTF84MjUwPXkKLUNPTkZJR19TRVJJQUxfODI1MF9DT05TT0xFPXkKLUNPTkZJR19TRVJJQUxfODI1MF9OUl9VQVJUUz0yCi0KLSMKLSMgV2F0Y2hkb2cgRGV2aWNlIERyaXZlcnMKLSMKLUNPTkZJR184eHh4X1dEVD15Ci0KLSMKLSMgSTJDIHN1cHBvcnQKLSMKLUNPTkZJR19JMkM9eQotQ09ORklHX0kyQ19DSEFSREVWPXkKLQotIwotIyBJMkMgSGFyZHdhcmUgQnVzIHN1cHBvcnQKLSMKLUNPTkZJR19JMkNfTVBDPXkKLQotQ09ORklHX1NFTlNPUlNfTE03NT15Ci0KLUNPTkZJR19NSVNDX0RFVklDRVM9eQotCi0jCi0jIE1pc2NlbGxhbmVvdXMgSTJDIENoaXAgc3VwcG9ydAotIwotQ09ORklHX0VFUFJPTV9BVDI0PXkKLQotIwotIyBTUEkgc3VwcG9ydAotIwotQ09ORklHX1NQST15Ci0jIENPTkZJR19TUElfREVCVUcgaXMgbm90IHNldAotQ09ORklHX1NQSV9NQVNURVI9eQotCi0jCi0jIFNQSSBNYXN0ZXIgQ29udHJvbGxlciBEcml2ZXJzCi0jCi1DT05GSUdfU1BJX01QQzh4eHg9eQotCi0jCi0jIFNQSSBQcm90b2NvbCBNYXN0ZXJzCi0jCi1DT05GSUdfSFdNT049eQotCi0jCi0jIFNDU0kgZGV2aWNlIHN1cHBvcnQKLSMKLUNPTkZJR19TQ1NJPXkKLUNPTkZJR19CTEtfREVWX1NEPXkKLUNPTkZJR19DSFJfREVWX1NHPXkKLUNPTkZJR19TQ1NJX0xPR0dJTkc9eQotCi1DT05GSUdfQVRBPXkKLUNPTkZJR19BVEFfVkVSQk9TRV9FUlJPUj15Ci1DT05GSUdfU0FUQV9GU0w9eQotQ09ORklHX0FUQV9TRkY9eQotCi0jCi0jIFVTQiBzdXBwb3J0Ci0jCi1DT05GSUdfVVNCPW0KLUNPTkZJR19VU0JfREVWSUNFRlM9eQotCi0jCi0jIFVTQiBIb3N0IENvbnRyb2xsZXIgRHJpdmVycwotIwotQ09ORklHX1VTQl9FSENJX0hDRD1tCi1DT05GSUdfVVNCX0VIQ0lfRlNMPXkKLUNPTkZJR19VU0JfU1RPUkFHRT1tCi0KLSMKLSMgUmVhbCBUaW1lIENsb2NrCi0jCi1DT05GSUdfUlRDX0NMQVNTPXkKLQotIwotIyBJMkMgUlRDIGRyaXZlcnMKLSMKLUNPTkZJR19SVENfRFJWX0RTMTMwNz15Ci0KLUNPTkZJR19LR0RCXzgyNTA9bQotCi1DT05GSUdfQ1JZUFRPX0RFVl9UQUxJVE9TPW0KLQotQ09ORklHX0ZTTF9ETUE9eQotCi1DT05GSUdfTU1DPXkKLUNPTkZJR19NTUNfU1BJPW0KLQotQ09ORklHX1VTQl9GU0xfTVBIX0RSX09GPXkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWJiOTdlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS5zY2MKLWtjb25mIGhhcmR3YXJlIHt7PW1hY2hpbmV9fS5jZmcKLQotaW5jbHVkZSBjZmcvdXNiLW1hc3Mtc3RvcmFnZS5zY2MKLWluY2x1ZGUgY2ZnL2ZzL3ZmYXQuc2NjCi0KLWluY2x1ZGUgY2ZnL2RtYWVuZ2luZS5zY2MKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE3ZjBlMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAote3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIjogfX0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InVzZV9kZWZhdWx0X2tlcm5lbCIgcHJpbzoiMTAiIG1zZzoiV291bGQgeW91IGxpa2UgdG8gdXNlIHRoZSBkZWZhdWx0ICg0LjEyKSBrZXJuZWw/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSIgYW5kIHVzZV9kZWZhdWx0X2tlcm5lbCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJrZXJuZWxfY2hvaWNlIiBnZW46ImJzcC5rZXJuZWwua2VybmVscyIgcHJpbzoiMTAiIG1zZzoiUGxlYXNlIGNob29zZSB0aGUga2VybmVsIHRvIHVzZSBpbiB0aGlzIEJTUDoiIGRlZmF1bHQ6ImxpbnV4LXlvY3RvXzQuMTIifX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyZWQyNzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by1kZXYiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiV291bGQgeW91IGxpa2UgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYWU5NDNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjEwIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZjNlMTA0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjEyIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjJkMTgxNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjQiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC40IgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmJlY2I1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuMTAiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9wb3dlcnBjL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4NzRjOWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC4xMiI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xMCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3Bvd2VycGMvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4MDljNzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcG93ZXJwYy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjQiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuNCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE4ODg1OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L2NvbmYvbWFjaGluZS9tYWNoaW5lLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0uY29uZgotI0BUWVBFOiBNYWNoaW5lCi0jQE5BTUU6IHt7PW1hY2hpbmV9fQotCi0jQERFU0NSSVBUSU9OOiBNYWNoaW5lIGNvbmZpZ3VyYXRpb24gZm9yIHt7PW1hY2hpbmV9fSBzeXN0ZW1zCi0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImN1c3RvbSI6IHByZWZlcnJlZF9rZXJuZWwgPSAibGludXgteW9jdG8tY3VzdG9tIiB9fQote3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tZGV2IjogcHJlZmVycmVkX2tlcm5lbCA9ICJsaW51eC15b2N0by1kZXYiIH19Ci17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJjdXN0b20iIG9yIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLWRldiIgOiB9fQotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID89ICJ7ez1wcmVmZXJyZWRfa2VybmVsfX0iCi0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSIgYW5kIGtlcm5lbF9jaG9pY2UgIT0gImxpbnV4LXlvY3RvLWRldiI6IHByZWZlcnJlZF9rZXJuZWwgPSBrZXJuZWxfY2hvaWNlLnNwbGl0KCdfJylbMF0gfX0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSIgYW5kIGtlcm5lbF9jaG9pY2UgIT0gImxpbnV4LXlvY3RvLWRldiI6IHByZWZlcnJlZF9rZXJuZWxfdmVyc2lvbiA9IGtlcm5lbF9jaG9pY2Uuc3BsaXQoJ18nKVsxXSB9fQote3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQga2VybmVsX2Nob2ljZSAhPSAibGludXgteW9jdG8tZGV2IjogfX0KLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAie3s9cHJlZmVycmVkX2tlcm5lbH19IgotUFJFRkVSUkVEX1ZFUlNJT05fe3s9cHJlZmVycmVkX2tlcm5lbH19ID89ICJ7ez1wcmVmZXJyZWRfa2VybmVsX3ZlcnNpb259fSUiCi0KLXt7IGlmIHFlbXVhcmNoID09ICJpMzg2IiBvciBxZW11YXJjaCA9PSAieDg2XzY0IjogfX0KLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3hzZXJ2ZXIgPz0gInhzZXJ2ZXIteG9yZyIKLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmdsID89ICJtZXNhIgotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliZ2xlczEgPz0gIm1lc2EiCi1QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJnbGVzMiA/PSAibWVzYSIKLQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToicWVtdWFyY2giIHByaW86IjUiIG1zZzoiV2hpY2ggcWVtdSBhcmNoaXRlY3R1cmUgd291bGQgeW91IGxpa2UgdG8gdXNlPyIgZGVmYXVsdDoiaTM4NiIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJpMzg2IiBtc2c6ImkzODYgICAgKDMyLWJpdCkiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoieDg2XzY0IiBtc2c6Ing4Nl82NCAgKDY0LWJpdCkiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoiYXJtIiBtc2c6IkFSTSAgICAgKDMyLWJpdCkiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoicG93ZXJwYyIgbXNnOiJQb3dlclBDICgzMi1iaXQpIiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6Im1pcHMiIG1zZzoiTUlQUyAgICAoMzItYml0KSIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJtaXBzNjQiIG1zZzoiTUlQUzY0ICAoNjQtYml0KSIgfX0KLXt7IGlmIHFlbXVhcmNoID09ICJpMzg2IjogfX0KLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMKLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1pNTg2LmluYwote3sgaWYgcWVtdWFyY2ggPT0gIng4Nl82NCI6IH19Ci1yZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jCi1ERUZBVUxUVFVORSA/PSAiY29yZTItNjQiCi1yZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29yZTIuaW5jCi17eyBpZiBxZW11YXJjaCA9PSAiYXJtIjogfX0KLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMKLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm05MjZlanMuaW5jCi17eyBpZiBxZW11YXJjaCA9PSAicG93ZXJwYyI6IH19Ci1yZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jCi1yZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjNzQwMC5pbmMKLXt7IGlmIHFlbXVhcmNoID09ICJtaXBzIjogfX0KLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMKLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1taXBzMzIuaW5jCi17eyBpZiBxZW11YXJjaCA9PSAibWlwczY0IjogfX0KLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMKLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1taXBzNjQuaW5jCi0KLXt7IGlmIHFlbXVhcmNoID09ICJpMzg2IiBvciBxZW11YXJjaCA9PSAieDg2XzY0IjogfX0KLU1BQ0hJTkVfRkVBVFVSRVMgKz0gIng4NiIKLUtFUk5FTF9JTUFHRVRZUEUgPSAiYnpJbWFnZSIKLVNFUklBTF9DT05TT0xFID0gIjExNTIwMCB0dHlTMCIKLVhTRVJWRVIgPSAieHNlcnZlci14b3JnIFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnbWVzYS1kcml2ZXItc3dyYXN0JywgJycsIGQpfSBcCi0gICAgICAgICAgIHhmODYtdmlkZW8tdm13YXJlIgotCi17eyBpZiBxZW11YXJjaCA9PSAiYXJtIjogfX0KLUtFUk5FTF9JTUFHRVRZUEUgPSAiekltYWdlIgotU0VSSUFMX0NPTlNPTEUgPSAiMTE1MjAwIHR0eUFNQTAiCi0KLXt7IGlmIHFlbXVhcmNoID09ICJwb3dlcnBjIjogfX0KLUtFUk5FTF9JTUFHRVRZUEUgPSAidm1saW51eCIKLVNFUklBTF9DT05TT0xFID0gIjExNTIwMCB0dHlTMCIKLQote3sgaWYgcWVtdWFyY2ggPT0gIm1pcHMiIG9yIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQotS0VSTkVMX0lNQUdFVFlQRSA9ICJ2bWxpbnV4IgotS0VSTkVMX0FMVF9JTUFHRVRZUEUgPSAidm1saW51eC5iaW4iCi1TRVJJQUxfQ09OU09MRSA9ICIxMTUyMDAgdHR5UzAiCi1NQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTID0gIiBrZXJuZWwtbW9kdWxlcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1jb3JlL2luaXQtaWZ1cGRvd24vaW5pdC1pZnVwZG93bi9tYWNoaW5lLm5vaW5zdGFsbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1jb3JlL2luaXQtaWZ1cGRvd24vaW5pdC1pZnVwZG93bi9tYWNoaW5lLm5vaW5zdGFsbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQ0MmQwMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMtY29yZS9pbml0LWlmdXBkb3duL2luaXQtaWZ1cGRvd24vbWFjaGluZS5ub2luc3RhbGwKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1kaXJuYW1lIHt7PW1hY2hpbmV9fQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWNvcmUvaW5pdC1pZnVwZG93bi9pbml0LWlmdXBkb3duL21hY2hpbmUvaW50ZXJmYWNlcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1jb3JlL2luaXQtaWZ1cGRvd24vaW5pdC1pZnVwZG93bi9tYWNoaW5lL2ludGVyZmFjZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2OTY3NzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWNvcmUvaW5pdC1pZnVwZG93bi9pbml0LWlmdXBkb3duL21hY2hpbmUvaW50ZXJmYWNlcworKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotIyAvZXRjL25ldHdvcmsvaW50ZXJmYWNlcyAtLSBjb25maWd1cmF0aW9uIGZpbGUgZm9yIGlmdXAoOCksIGlmZG93big4KQotIAotIyBUaGUgbG9vcGJhY2sgaW50ZXJmYWNlCi1hdXRvIGxvCi1pZmFjZSBsbyBpbmV0IGxvb3BiYWNrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMtY29yZS9pbml0LWlmdXBkb3duL2luaXQtaWZ1cGRvd25fMS4wLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWNvcmUvaW5pdC1pZnVwZG93bi9pbml0LWlmdXBkb3duXzEuMC5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzJkOTkxYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMtY29yZS9pbml0LWlmdXBkb3duL2luaXQtaWZ1cGRvd25fMS4wLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL21hY2hpbmUubm9pbnN0YWxsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL21hY2hpbmUubm9pbnN0YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDQyZDAyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9tYWNoaW5lLm5vaW5zdGFsbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWRpcm5hbWUge3s9bWFjaGluZX19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvbWFjaGluZS94b3JnLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvbWFjaGluZS94b3JnLmNvbmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiZGRlNzkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL21hY2hpbmUveG9yZy5jb25mCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotCi1TZWN0aW9uICJGaWxlcyIKLUVuZFNlY3Rpb24KLQotU2VjdGlvbiAiSW5wdXREZXZpY2UiCi0gICAgSWRlbnRpZmllciAgICAiR2VuZXJpYyBLZXlib2FyZCIKLSAgICBEcml2ZXIgICAgICAgICJldmRldiIKLSAgICBPcHRpb24gICAgICAgICJDb3JlS2V5Ym9hcmQiCi0gICAgT3B0aW9uICAgICAgICAiRGV2aWNlIiAgICAgICIvZGV2L2lucHV0L2J5LXBhdGgvcGxhdGZvcm0taTgwNDItc2VyaW8tMC1ldmVudC1rYmQiCi0gICAgT3B0aW9uICAgICAgICAiWGtiUnVsZXMiICAgICJ4b3JnIgotICAgIE9wdGlvbiAgICAgICAgIlhrYk1vZGVsIiAgICAiZXZkZXYiCi0gICAgT3B0aW9uICAgICAgICAiWGtiTGF5b3V0IiAgICAidXMiCi1FbmRTZWN0aW9uCi0KLVNlY3Rpb24gIklucHV0RGV2aWNlIgotICAgIElkZW50aWZpZXIgICAgIkNvbmZpZ3VyZWQgTW91c2UiCi17eyBpZiBxZW11YXJjaCA9PSAiYXJtIiBvciBxZW11YXJjaCA9PSAicG93ZXJwYyIgb3IgcWVtdWFyY2ggPT0gIm1pcHMiIG9yIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQotICAgIERyaXZlciAgICAgICAgIm1vdXNlIgote3sgaWYgcWVtdWFyY2ggPT0gImkzODYiIG9yIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQotICAgIERyaXZlciAgICAgICAgInZtbW91c2UiCi0KLSAgICBPcHRpb24gICAgICAgICJDb3JlUG9pbnRlciIKLSAgICBPcHRpb24gICAgICAgICJEZXZpY2UiICAgICAgICAiL2Rldi9pbnB1dC9taWNlIgotICAgIE9wdGlvbiAgICAgICAgIlByb3RvY29sIiAgICAgICAgIkltUFMvMiIKLSAgICBPcHRpb24gICAgICAgICJaQXhpc01hcHBpbmciICAgICAgICAiNCA1IgotICAgIE9wdGlvbiAgICAgICAgIkVtdWxhdGUzQnV0dG9ucyIgICAgInRydWUiCi1FbmRTZWN0aW9uCi0KLVNlY3Rpb24gIklucHV0RGV2aWNlIgotICAgIElkZW50aWZpZXIgICAgIlFlbXUgVGFibGV0IgotICAgIERyaXZlciAgICAgICAgImV2ZGV2IgotICAgIE9wdGlvbiAgICAgICAgIkNvcmVQb2ludGVyIgotICAgIE9wdGlvbiAgICAgICAgIkRldmljZSIgICAgICAgICIvZGV2L2lucHV0L3RvdWNoc2NyZWVuMCIKLSAgICBPcHRpb24gICAgICAgICJVU0IiICAgICAgICAgICAib24iCi1FbmRTZWN0aW9uCi0KLVNlY3Rpb24gIkRldmljZSIKLSAgICBJZGVudGlmaWVyICAgICJHcmFwaGljcyBDb250cm9sbGVyIgote3sgaWYgcWVtdWFyY2ggPT0gImFybSIgb3IgcWVtdWFyY2ggPT0gInBvd2VycGMiIG9yIHFlbXVhcmNoID09ICJtaXBzIiBvciBxZW11YXJjaCA9PSAibWlwczY0IjogfX0KLSAgICBEcml2ZXIgICAgICAgICJmYmRldiIKLXt7IGlmIHFlbXVhcmNoID09ICJpMzg2IiBvciBxZW11YXJjaCA9PSAieDg2XzY0IjogfX0KLSAgICBEcml2ZXIgICAgICAgICJ2bXdhcmUiCi0KLUVuZFNlY3Rpb24KLQotU2VjdGlvbiAiTW9uaXRvciIKLSAgICBJZGVudGlmaWVyICAgICJHZW5lcmljIE1vbml0b3IiCi0gICAgT3B0aW9uICAgICAgICAiRFBNUyIKLSAgICAjIDEwMjR4NjAwIDU5Ljg1IEh6IChDVlQpIGhzeW5jOiAzNy4zNSBrSHo7IHBjbGs6IDQ5LjAwIE1IegotICAgIE1vZGVsaW5lICIxMDI0eDYwMF82MC4wMCIgICA0OS4wMCAgMTAyNCAxMDcyIDExNjggMTMxMiAgNjAwIDYwMyA2MTMgNjI0IC1oc3luYyArdnN5bmMKLSAgICAjIDY0MHg0ODAgQCA2MEh6IChJbmR1c3RyeSBzdGFuZGFyZCkgaHN5bmM6IDMxLjVrSHoKLSAgICBNb2RlTGluZSAiNjQweDQ4MCIgICAgMjUuMiAgNjQwICA2NTYgIDc1MiAgODAwICAgIDQ4MCAgNDkwICA0OTIgIDUyNSAtaHN5bmMgLXZzeW5jCi0gICAgIyA2NDB4NDgwIEAgNzJIeiAoVkVTQSkgaHN5bmM6IDM3LjlrSHoKLSAgICBNb2RlTGluZSAiNjQweDQ4MCIgICAgMzEuNSAgNjQwICA2NjQgIDcwNCAgODMyICAgIDQ4MCAgNDg5ICA0OTEgIDUyMCAtaHN5bmMgLXZzeW5jCi0gICAgIyA2NDB4NDgwIEAgNzVIeiAoVkVTQSkgaHN5bmM6IDM3LjVrSHoKLSAgICBNb2RlTGluZSAiNjQweDQ4MCIgICAgMzEuNSAgNjQwICA2NTYgIDcyMCAgODQwICAgIDQ4MCAgNDgxICA0ODQgIDUwMCAtaHN5bmMgLXZzeW5jCi0gICAgIyA2NDB4NDgwIEAgODVIeiAoVkVTQSkgaHN5bmM6IDQzLjNrSHoKLSAgICBNb2RlTGluZSAiNjQweDQ4MCIgICAgMzYuMCAgNjQwICA2OTYgIDc1MiAgODMyICAgIDQ4MCAgNDgxICA0ODQgIDUwOSAtaHN5bmMgLXZzeW5jCi1FbmRTZWN0aW9uCi0KLVNlY3Rpb24gIlNjcmVlbiIKLSAgICBJZGVudGlmaWVyICAgICJEZWZhdWx0IFNjcmVlbiIKLSAgICBEZXZpY2UgICAgICAgICJHcmFwaGljcyBDb250cm9sbGVyIgotICAgIE1vbml0b3IgICAgICAgICJHZW5lcmljIE1vbml0b3IiCi0gICAgU3ViU2VjdGlvbiAiRGlzcGxheSIKLSAgICAgICAgTW9kZXMgICAgICI2NDB4NDgwIgotICAgIEVuZFN1YlNlY3Rpb24KLUVuZFNlY3Rpb24KLQotU2VjdGlvbiAiU2VydmVyTGF5b3V0IgotICAgIElkZW50aWZpZXIgICAgIkRlZmF1bHQgTGF5b3V0IgotICAgIFNjcmVlbiAgICAgICAgIkRlZmF1bHQgU2NyZWVuIgotICAgIElucHV0RGV2aWNlICAgICJHZW5lcmljIEtleWJvYXJkIgotICAgICMgSW5wdXREZXZpY2UgICAgIkNvbmZpZ3VyZWQgTW91c2UiCi0gICAgSW5wdXREZXZpY2UgICAgIlFFTVUgVGFibGV0IgotICAgIE9wdGlvbiAgICAgICAgICJBbGxvd0VtcHR5SW5wdXQiICJubyIKLUVuZFNlY3Rpb24KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZ18wLjEuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWdfMC4xLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MmQ5OTFjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZ18wLjEuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzLm5vaW5zdGFsbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMubm9pbnN0YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmI1MjgzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMubm9pbnN0YWxsCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZGlybmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iOiB9fSBmaWxlcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1wcmVlbXB0LXJ0LnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1wcmVlbXB0LXJ0LnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTgxYjg1OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtcHJlZW1wdC1ydC5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tcHJlZW1wdC1ydC5zY2MKLWRlZmluZSBLTUFDSElORSB7ez1tYWNoaW5lfX0KLQotZGVmaW5lIEtBUkNIIHt7PXFlbXVhcmNofX0KLQotaW5jbHVkZSB7ez1tYXBfcHJlZW1wdF9ydF9rYnJhbmNoKG5lZWRfbmV3X2ticmFuY2gsIG5ld19rYnJhbmNoLCBleGlzdGluZ19rYnJhbmNoKX19Ci17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLWRlZmluZSBLVFlQRSB7ez1uZXdfa2JyYW5jaH19Ci1icmFuY2gge3s9bWFjaGluZX19Ci0KLWluY2x1ZGUge3s9bWFjaGluZX19LnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXN0YW5kYXJkLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1zdGFuZGFyZC5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzY2Y2NDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXN0YW5kYXJkLnNjYworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MKLWRlZmluZSBLTUFDSElORSB7ez1tYWNoaW5lfX0KLQotZGVmaW5lIEtBUkNIIHt7PXFlbXVhcmNofX0KLQote3sgaWYgcWVtdWFyY2ggPT0gImkzODYiIG9yIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQotaW5jbHVkZSB7ez1tYXBfc3RhbmRhcmRfa2JyYW5jaChuZWVkX25ld19rYnJhbmNoLCBuZXdfa2JyYW5jaCwgZXhpc3Rpbmdfa2JyYW5jaCl9fSBub3BhdGNoCi17eyBpZiBxZW11YXJjaCA9PSAiYXJtIjogfX0KLWluY2x1ZGUgYnNwL2FybS12ZXJzYXRpbGUtOTI2ZWpzL2FybS12ZXJzYXRpbGUtOTI2ZWpzLXN0YW5kYXJkIG5vcGF0Y2gKLXt7IGlmIHFlbXVhcmNoID09ICJwb3dlcnBjIjogfX0KLWluY2x1ZGUgYnNwL3FlbXUtcHBjMzIvcWVtdS1wcGMzMi1zdGFuZGFyZCBub3BhdGNoCi17eyBpZiBxZW11YXJjaCA9PSAibWlwcyI6IH19Ci1pbmNsdWRlIGJzcC9tdGktbWFsdGEzMi9tdGktbWFsdGEzMi1iZS1zdGFuZGFyZCBub3BhdGNoCi17eyBpZiBxZW11YXJjaCA9PSAibWlwczY0IjogfX0KLWluY2x1ZGUgYnNwL210aS1tYWx0YTY0L210aS1tYWx0YTY0LWJlLXN0YW5kYXJkIG5vcGF0Y2gKLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQotZGVmaW5lIEtUWVBFIHt7PW5ld19rYnJhbmNofX0KLWJyYW5jaCB7ez1tYWNoaW5lfX0KLQotaW5jbHVkZSB7ez1tYWNoaW5lfX0uc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdGlueS5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdGlueS5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxZDRjNmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXRpbnkuc2NjCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXRpbnkuc2NjCi1kZWZpbmUgS01BQ0hJTkUge3s9bWFjaGluZX19Ci0KLWRlZmluZSBLQVJDSCB7ez1xZW11YXJjaH19Ci0KLWluY2x1ZGUge3s9bWFwX3Rpbnlfa2JyYW5jaChuZWVkX25ld19rYnJhbmNoLCBuZXdfa2JyYW5jaCwgZXhpc3Rpbmdfa2JyYW5jaCl9fQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci1kZWZpbmUgS1RZUEUge3s9bmV3X2ticmFuY2h9fQotYnJhbmNoIHt7PW1hY2hpbmV9fQotCi1pbmNsdWRlIHt7PW1hY2hpbmV9fS5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWNvbmZpZy5jZmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1jb25maWcuY2ZnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OWVmZGNjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWNvbmZpZy5jZmcKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItZmVhdHVyZXMuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItZmVhdHVyZXMuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODI3NTllLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLWZlYXR1cmVzLnNjYworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItcGF0Y2hlcy5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1wYXRjaGVzLnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM1OWRhYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1wYXRjaGVzLnNjYworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLmNmZyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5jZmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmYTRlZDAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLmNmZworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LmNmZwote3sgaWYgcWVtdWFyY2ggPT0gImkzODYiOiB9fQotIyBDT05GSUdfNjRCSVQgaXMgbm90IHNldApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyNWQwYTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LnNjYwota2NvbmYgaGFyZHdhcmUge3s9bWFjaGluZX19LmNmZwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1saXN0Lm5vaW5zdGFsbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWxpc3Qubm9pbnN0YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTdmMGUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWxpc3Qubm9pbnN0YWxsCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi17eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iOiB9fQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToidXNlX2RlZmF1bHRfa2VybmVsIiBwcmlvOiIxMCIgbXNnOiJXb3VsZCB5b3UgbGlrZSB0byB1c2UgdGhlIGRlZmF1bHQgKDQuMTIpIGtlcm5lbD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLQote3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQgdXNlX2RlZmF1bHRfa2VybmVsID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Imtlcm5lbF9jaG9pY2UiIGdlbjoiYnNwLmtlcm5lbC5rZXJuZWxzIiBwcmlvOiIxMCIgbXNnOiJQbGVhc2UgY2hvb3NlIHRoZSBrZXJuZWwgdG8gdXNlIGluIHRoaXMgQlNQOiIgZGVmYXVsdDoibGludXgteW9jdG9fNC4xMiJ9fQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdiOWNlZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLWRldiI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19Igote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gImFybSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHlvdXIgbmV3IEJTUCBicmFuY2ggb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gImFybSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhbiBleGlzdGluZyBtYWNoaW5lIGJyYW5jaCB0byB1c2UgZm9yIHRoaXMgQlNQOiIgZGVmYXVsdDoic3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAicG93ZXJwYyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoicG93ZXJwYyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJwb3dlcnBjIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6InBvd2VycGMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3FlbXVwcGMiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAiaTM4NiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJpMzg2IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6ImkzODYiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAieDg2XzY0IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJ4ODZfNjQiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiAgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gIng4Nl82NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJ4ODZfNjQiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiAgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIm1pcHMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Im1pcHMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAibWlwcyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9tdGktbWFsdGEzMiIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Im1pcHM2NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9tdGktbWFsdGE2NCIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpZiBxZW11YXJjaCAhPSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiV291bGQgeW91IGxpa2UgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzBmZDE1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tdGlueV80LjEwIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJhcm0iIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gImFybSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJhcm0iIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gInBvd2VycGMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6InBvd2VycGMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gInBvd2VycGMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoicG93ZXJwYyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAiaTM4NiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAiaTM4NiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvY29tbW9uLXBjIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIng4Nl82NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoieDg2XzY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoieDg2XzY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJtaXBzIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Im1pcHMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIm1pcHM2NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpZiBxZW11YXJjaCAhPSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEwIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNlYjIxNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xMiI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19Igote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gImFybSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiYXJtIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJhcm0iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiYXJtIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJwb3dlcnBjIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJwb3dlcnBjIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJwb3dlcnBjIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6InBvd2VycGMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gImkzODYiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6ImkzODYiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gImkzODYiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2NvbW1vbi1wYyIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAieDg2XzY0IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAibWlwcyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwcyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAibWlwcyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Im1pcHM2NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAibWlwczY0IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Im1pcHM2NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaWYgcWVtdWFyY2ggIT0gImFybSI6IH19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xMCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMmFiYzIzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjQuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by10aW55XzQuNCI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19Igote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gImFybSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiYXJtIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJhcm0iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiYXJtIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJwb3dlcnBjIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJwb3dlcnBjIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJwb3dlcnBjIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6InBvd2VycGMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gImkzODYiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6ImkzODYiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gImkzODYiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2NvbW1vbi1wYyIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAieDg2XzY0IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAibWlwcyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwcyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAibWlwcyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZC90aW55IiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL3RpbnkvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Im1pcHM2NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAibWlwczY0IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Im1pcHM2NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaWYgcWVtdWFyY2ggIT0gImFybSI6IH19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IkRvIHlvdSBuZWVkIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdGlueS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC40IgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gvcWVtdS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTFkOTZjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuMTAiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJhcm0iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB5b3VyIG5ldyBCU1AgYnJhbmNoIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJhcm0iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYW4gZXhpc3RpbmcgbWFjaGluZSBicmFuY2ggdG8gdXNlIGZvciB0aGlzIEJTUDoiIGRlZmF1bHQ6InN0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gInBvd2VycGMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6InBvd2VycGMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAicG93ZXJwYyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJwb3dlcnBjIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9xZW11cHBjIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gImkzODYiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6ImkzODYiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAiaTM4NiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIng4Nl82NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoieDg2XzY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoieDg2XzY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Im1pcHMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL210aS1tYWx0YTMyIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gIm1pcHM2NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzNjQiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL210aS1tYWx0YTY0IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIm1pcHMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Im1pcHMiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAibWlwczY0IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzNjQiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaWYgcWVtdWFyY2ggIT0gImFybSI6IH19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IldvdWxkIHlvdSBsaWtlIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG9fe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotI0xJTlVYX1ZFUlNJT04gPSAiNC4xMCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdjZTM3ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjEyIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgeW91ciBuZXcgQlNQIGJyYW5jaCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGFuIGV4aXN0aW5nIG1hY2hpbmUgYnJhbmNoIHRvIHVzZSBmb3IgdGhpcyBCU1A6IiBkZWZhdWx0OiJzdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJwb3dlcnBjIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJwb3dlcnBjIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gInBvd2VycGMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoicG93ZXJwYyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvcWVtdXBwYyIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJpMzg2IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gImkzODYiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiICBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAieDg2XzY0IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiICBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAibWlwcyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9tdGktbWFsdGEzMiIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9tdGktbWFsdGE2NCIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJtaXBzIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIm1pcHM2NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlmIHFlbXVhcmNoICE9ICJhcm0iOiB9fQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJXb3VsZCB5b3UgbGlrZSBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC9xZW11L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWJlOTEzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3FlbXUvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC40IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgeW91ciBuZXcgQlNQIGJyYW5jaCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAiYXJtIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGFuIGV4aXN0aW5nIG1hY2hpbmUgYnJhbmNoIHRvIHVzZSBmb3IgdGhpcyBCU1A6IiBkZWZhdWx0OiJzdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJwb3dlcnBjIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJwb3dlcnBjIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gInBvd2VycGMiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoicG93ZXJwYyIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvcWVtdXBwYyIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJpMzg2IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJpMzg2IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIiBhbmQgcWVtdWFyY2ggPT0gImkzODYiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJ4ODZfNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiICBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAieDg2XzY0IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIG5hbWVhcHBlbmQ6Ing4Nl82NCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiICBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iIGFuZCBxZW11YXJjaCA9PSAibWlwcyI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9tdGktbWFsdGEzMiIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiIgYW5kIHFlbXVhcmNoID09ICJtaXBzNjQiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9tdGktbWFsdGE2NCIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSIgYW5kIHFlbXVhcmNoID09ICJtaXBzIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBuYW1lYXBwZW5kOiJtaXBzIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IiBhbmQgcWVtdWFyY2ggPT0gIm1pcHM2NCI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgbmFtZWFwcGVuZDoibWlwczY0IiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlmIHFlbXVhcmNoICE9ICJhcm0iOiB9fQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJXb3VsZCB5b3UgbGlrZSBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuNCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC8uZ2l0aWdub3JlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0Ly5naXRpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2OWRlMjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0Ly5naXRpZ25vcmUKKysrIC9kZXYvbnVsbApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L2NvbmYvbWFjaGluZS9tYWNoaW5lLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTRiODI1MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvY29uZi9tYWNoaW5lL21hY2hpbmUuY29uZgorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS5jb25mCi0jQFRZUEU6IE1hY2hpbmUKLSNATkFNRToge3s9bWFjaGluZX19Ci0KLSNAREVTQ1JJUFRJT046IE1hY2hpbmUgY29uZmlndXJhdGlvbiBmb3Ige3s9bWFjaGluZX19IHN5c3RlbXMKLQote3sgaWYga2VybmVsX2Nob2ljZSA9PSAiY3VzdG9tIjogcHJlZmVycmVkX2tlcm5lbCA9ICJsaW51eC15b2N0by1jdXN0b20iIH19Ci17eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0by1kZXYiOiBwcmVmZXJyZWRfa2VybmVsID0gImxpbnV4LXlvY3RvLWRldiIgfX0KLXt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImN1c3RvbSIgb3Iga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tZGV2IiA6IH19Ci1QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gInt7PXByZWZlcnJlZF9rZXJuZWx9fSIKLQote3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQga2VybmVsX2Nob2ljZSAhPSAibGludXgteW9jdG8tZGV2IjogcHJlZmVycmVkX2tlcm5lbCA9IGtlcm5lbF9jaG9pY2Uuc3BsaXQoJ18nKVswXSB9fQote3sgaWYga2VybmVsX2Nob2ljZSAhPSAiY3VzdG9tIiBhbmQga2VybmVsX2Nob2ljZSAhPSAibGludXgteW9jdG8tZGV2IjogcHJlZmVycmVkX2tlcm5lbF92ZXJzaW9uID0ga2VybmVsX2Nob2ljZS5zcGxpdCgnXycpWzFdIH19Ci17eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iIGFuZCBrZXJuZWxfY2hvaWNlICE9ICJsaW51eC15b2N0by1kZXYiOiB9fQotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID89ICJ7ez1wcmVmZXJyZWRfa2VybmVsfX0iCi1QUkVGRVJSRURfVkVSU0lPTl97ez1wcmVmZXJyZWRfa2VybmVsfX0gPz0gInt7PXByZWZlcnJlZF9rZXJuZWxfdmVyc2lvbn19JSIKLQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToidHVuZWZpbGUiIHByaW86IjQwIiBtc2c6IldoaWNoIG1hY2hpbmUgdHVuaW5nIHdvdWxkIHlvdSBsaWtlIHRvIHVzZT8iIGRlZmF1bHQ6InR1bmVfY29yZTIiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoidHVuZV9jb3JlMiIgbXNnOiJDb3JlMiB0dW5pbmcgb3B0aW1pemF0aW9ucyIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJ0dW5lX2NvcmVpNyIgbXNnOiJDb3JlaTcgdHVuaW5nIG9wdGltaXphdGlvbnMiIH19Ci17eyBpZiB0dW5lZmlsZSA9PSAidHVuZV9jb3JlMiI6IH19Ci1ERUZBVUxUVFVORSA/PSAiY29yZTItNjQiCi1yZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29yZTIuaW5jCi17eyBpZiB0dW5lZmlsZSA9PSAidHVuZV9jb3JlaTciOiB9fQotREVGQVVMVFRVTkUgPz0gImNvcmVpNy02NCIKLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3JlaTcuaW5jCi0KLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2LWJhc2UuaW5jCi0KLU1BQ0hJTkVfRkVBVFVSRVMgKz0gIndpZmkgZWZpIHBjYmlvcyIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToieHNlcnZlciIgcHJpbzoiNTAiIG1zZzoiRG8geW91IG5lZWQgc3VwcG9ydCBmb3IgWD8gKHkvbikiIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIHhzZXJ2ZXIgPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToieHNlcnZlcl9jaG9pY2UiIHByaW86IjUwIiBtc2c6IlBsZWFzZSBzZWxlY3QgYW4geHNlcnZlciBmb3IgdGhpcyBtYWNoaW5lOiIgZGVmYXVsdDoieHNlcnZlcl9pOTE1IiB9fQotCi17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoieHNlcnZlcl92ZXNhIiBtc2c6IlZFU0EgeHNlcnZlciBzdXBwb3J0IiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlIiB2YWw6InhzZXJ2ZXJfaTkxNSIgbXNnOiJpOTE1IHhzZXJ2ZXIgc3VwcG9ydCIgfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZSIgdmFsOiJ4c2VydmVyX2k5NjUiIG1zZzoiaTk2NSB4c2VydmVyIHN1cHBvcnQiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoieHNlcnZlcl9mYmRldiIgbXNnOiJmYmRldiB4c2VydmVyIHN1cHBvcnQiIH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2UiIHZhbDoieHNlcnZlcl9tb2Rlc2V0dGluZyIgbXNnOiJtb2Rlc2V0dGluZyB4c2VydmVyIHN1cHBvcnQiIH19Ci17eyBpZiB4c2VydmVyID09ICJ5IjogfX0KLVhTRVJWRVIgPz0gIiR7WFNFUlZFUl9YODZfQkFTRX0gXAotICAgICAgICAgICAke1hTRVJWRVJfWDg2X0VYVH0gXAote3sgaWYgeHNlcnZlciA9PSAieSIgYW5kIHhzZXJ2ZXJfY2hvaWNlID09ICJ4c2VydmVyX3Zlc2EiOiB9fQotICAgICAgICAgICAke1hTRVJWRVJfWDg2X1ZFU0F9IFwKLXt7IGlmIHhzZXJ2ZXIgPT0gInkiIGFuZCB4c2VydmVyX2Nob2ljZSA9PSAieHNlcnZlcl9pOTE1IjogfX0KLSAgICAgICAgICAgJHtYU0VSVkVSX1g4Nl9JOTE1fSBcCi17eyBpZiB4c2VydmVyID09ICJ5IiBhbmQgeHNlcnZlcl9jaG9pY2UgPT0gInhzZXJ2ZXJfaTk2NSI6IH19Ci0gICAgICAgICAgICR7WFNFUlZFUl9YODZfSTk2NX0gXAote3sgaWYgeHNlcnZlciA9PSAieSIgYW5kIHhzZXJ2ZXJfY2hvaWNlID09ICJ4c2VydmVyX2ZiZGV2IjogfX0KLSAgICAgICAgICAgJHtYU0VSVkVSX1g4Nl9GQkRFVn0gXAote3sgaWYgeHNlcnZlciA9PSAieSIgYW5kIHhzZXJ2ZXJfY2hvaWNlID09ICJ4c2VydmVyX21vZGVzZXR0aW5nIjogfX0KLSAgICAgICAgICAgJHtYU0VSVkVSX1g4Nl9NT0RFU0VUVElOR30gXAote3sgaWYgeHNlcnZlciA9PSAieSI6IH19Ci0gICAgICAgICAgICIKLQotTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyArPSAibGludXgtZmlybXdhcmUgdjg2ZCBlZWUtYWNwaS1zY3JpcHRzIgotCi1FWFRSQV9PRUNPTkZfYXBwZW5kX3BuLW1hdGNoYm94LXBhbmVsLTIgPSAiIC0td2l0aC1iYXR0ZXJ5PWFjcGkiCi0KLUdMSUJDX0FERE9OUyA9ICJucHRsIgotCi17eyBpZiB4c2VydmVyID09ICJ5IiBhbmQgeHNlcnZlcl9jaG9pY2UgPT0gInhzZXJ2ZXJfdmVzYSI6IH19Ci1BUFBFTkQgKz0gInZpZGVvPXZlc2FmYiB2Z2E9MHgzMTgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9tYWNoaW5lLm5vaW5zdGFsbCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL21hY2hpbmUubm9pbnN0YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDQyZDAyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL21hY2hpbmUubm9pbnN0YWxsCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZGlybmFtZSB7ez1tYWNoaW5lfX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL21hY2hpbmUveG9yZy5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvbWFjaGluZS94b3JnLmNvbmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjOWEwZjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvbWFjaGluZS94b3JnLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiB4c2VydmVyID09ICJ5IjogfX0gdGhpcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWdfMC4xLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWdfMC4xLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDgzMDAzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnXzAuMS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYgeHNlcnZlciA9PSAieSI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMubm9pbnN0YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTBkOTJjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy5ub2luc3RhbGwKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1kaXJuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSI6IH19IGZpbGVzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1wcmVlbXB0LXJ0LnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXByZWVtcHQtcnQuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYmVlZWNkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXByZWVtcHQtcnQuc2NjCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXByZWVtcHQtcnQuc2NjCi1kZWZpbmUgS01BQ0hJTkUge3s9bWFjaGluZX19Ci0KLWRlZmluZSBLQVJDSCB4ODZfNjQKLQotaW5jbHVkZSB7ez1tYXBfcHJlZW1wdF9ydF9rYnJhbmNoKG5lZWRfbmV3X2ticmFuY2gsIG5ld19rYnJhbmNoLCBleGlzdGluZ19rYnJhbmNoKX19Ci17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLWRlZmluZSBLVFlQRSB7ez1uZXdfa2JyYW5jaH19Ci1icmFuY2gge3s9bWFjaGluZX19Ci0KLWluY2x1ZGUge3s9bWFjaGluZX19LnNjYwotCi0jIGRlZmF1bHQgcG9saWN5IGZvciBwcmVlbXB0LXJ0IGtlcm5lbHMKLWluY2x1ZGUgY2ZnL3VzYi1tYXNzLXN0b3JhZ2Uuc2NjCi1pbmNsdWRlIGNmZy9ib290LWxpdmUuc2NjCi1pbmNsdWRlIGZlYXR1cmVzL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC5zY2MKLWluY2x1ZGUgZmVhdHVyZXMvcHJvZmlsaW5nL3Byb2ZpbGluZy5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXN0YW5kYXJkLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXN0YW5kYXJkLnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTJiMjkxMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS1zdGFuZGFyZC5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjCi1kZWZpbmUgS01BQ0hJTkUge3s9bWFjaGluZX19Ci0KLWRlZmluZSBLQVJDSCB4ODZfNjQKLQotaW5jbHVkZSB7ez1tYXBfc3RhbmRhcmRfa2JyYW5jaChuZWVkX25ld19rYnJhbmNoLCBuZXdfa2JyYW5jaCwgZXhpc3Rpbmdfa2JyYW5jaCl9fSBub3BhdGNoCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLWRlZmluZSBLVFlQRSB7ez1uZXdfa2JyYW5jaH19Ci1icmFuY2gge3s9bWFjaGluZX19Ci0KLWluY2x1ZGUge3s9bWFjaGluZX19LnNjYwotCi0jIGRlZmF1bHQgcG9saWN5IGZvciBzdGFuZGFyZCBrZXJuZWxzCi1pbmNsdWRlIGNmZy91c2ItbWFzcy1zdG9yYWdlLnNjYwotaW5jbHVkZSBjZmcvYm9vdC1saXZlLnNjYwotaW5jbHVkZSBmZWF0dXJlcy9sYXRlbmN5dG9wL2xhdGVuY3l0b3Auc2NjCi1pbmNsdWRlIGZlYXR1cmVzL3Byb2ZpbGluZy9wcm9maWxpbmcuc2NjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS10aW55LnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXRpbnkuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTM3MDZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXRpbnkuc2NjCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3s9bWFjaGluZX19LXRpbnkuc2NjCi1kZWZpbmUgS01BQ0hJTkUge3s9bWFjaGluZX19Ci0KLWRlZmluZSBLQVJDSCB4ODZfNjQKLQotaW5jbHVkZSB7ez1tYXBfdGlueV9rYnJhbmNoKG5lZWRfbmV3X2ticmFuY2gsIG5ld19rYnJhbmNoLCBleGlzdGluZ19rYnJhbmNoKX19Ci17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLWRlZmluZSBLVFlQRSB7ez1uZXdfa2JyYW5jaH19Ci1icmFuY2gge3s9bWFjaGluZX19Ci0KLWluY2x1ZGUge3s9bWFjaGluZX19LnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1jb25maWcuY2ZnIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1jb25maWcuY2ZnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzQ4OWU0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItY29uZmlnLmNmZworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItZmVhdHVyZXMuc2NjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1mZWF0dXJlcy5zY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4Mjc1OWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUtdXNlci1mZWF0dXJlcy5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItcGF0Y2hlcy5zY2MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS11c2VyLXBhdGNoZXMuc2NjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2Y3NDdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLXVzZXItcGF0Y2hlcy5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuY2ZnIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2ZpbGVzL21hY2hpbmUuY2ZnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjkwZGRlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLmNmZworKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7PW1hY2hpbmV9fS5jZmcKLUNPTkZJR19QUklOVEs9eQotCi0jIEJhc2ljIGhhcmR3YXJlIHN1cHBvcnQgZm9yIHRoZSBib3ggLSBuZXR3b3JrLCBVU0IsIFBDSSwgc291bmQgICAgICAgICAgICAgICAgICAgICAKLUNPTkZJR19ORVRERVZJQ0VTPXkKLUNPTkZJR19BVEE9eQotQ09ORklHX0FUQV9HRU5FUklDPXkKLUNPTkZJR19BVEFfU0ZGPXkKLUNPTkZJR19QQ0k9eQotQ09ORklHX01NQz15Ci1DT05GSUdfTU1DX1NESENJPXkKLUNPTkZJR19VU0JfU1VQUE9SVD15Ci1DT05GSUdfVVNCPXkKLUNPTkZJR19VU0JfQVJDSF9IQVNfRUhDST15Ci1DT05GSUdfUjgxNjk9eQotQ09ORklHX1BBVEFfU0NIPXkKLUNPTkZJR19NTUNfU0RIQ0lfUENJPXkKLUNPTkZJR19VU0JfRUhDSV9IQ0Q9eQotQ09ORklHX1BDSUVQT1JUQlVTPXkKLUNPTkZJR19ORVQ9eQotQ09ORklHX1VTQl9VSENJX0hDRD15Ci1DT05GSUdfQkxLX0RFVl9TRD15Ci1DT05GSUdfQ0hSX0RFVl9TRz15Ci1DT05GSUdfU09VTkQ9eQotQ09ORklHX1NORD15Ci1DT05GSUdfU05EX0hEQV9JTlRFTD15Ci0KLSMgTWFrZSBzdXJlIHRoZXNlIGFyZSBvbiwgb3RoZXJ3aXNlIHRoZSBib290dXAgd29uJ3QgYmUgZnVuICAgICAgICAgICAgICAgICAgICAgICAgIAotQ09ORklHX0VYVDNfRlM9eQotQ09ORklHX1VOSVg9eQotQ09ORklHX0lORVQ9eQotQ09ORklHX01PRFVMRVM9eQotQ09ORklHX1NITUVNPXkKLUNPTkZJR19UTVBGUz15Ci1DT05GSUdfUEFDS0VUPXkKLQotQ09ORklHX0kyQz15ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi1DT05GSUdfQUdQPXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLUNPTkZJR19QTT15ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotQ09ORklHX0FDUEk9eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi1DT05GSUdfSU5QVVQ9eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotIyBOZWVkZWQgZm9yIGJvb3RpbmcgKGFuZCB1c2luZykgVVNCIG1lbW9yeSBzdGlja3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi1DT05GSUdfQkxLX0RFVl9MT09QPXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLUNPTkZJR19OTFNfQ09ERVBBR0VfNDM3PXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotQ09ORklHX05MU19JU084ODU5XzE9eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLUNPTkZJR19SRF9HWklQPXkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9maWxlcy9tYWNoaW5lLnNjYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQyMGQxOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvZmlsZXMvbWFjaGluZS5zY2MKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7ez1tYWNoaW5lfX0uc2NjCi1rY29uZiBoYXJkd2FyZSB7ez1tYWNoaW5lfX0uY2ZnCi0KLWluY2x1ZGUgZmVhdHVyZXMvc2VyaWFsLzgyNTAuc2NjCi17eyBpZiB4c2VydmVyID09ICJ5IiBhbmQgeHNlcnZlcl9jaG9pY2UgPT0gInhzZXJ2ZXJfdmVzYSI6IH19Ci1pbmNsdWRlIGNmZy92ZXNhZmIuc2NjCi17eyBpZiB4c2VydmVyID09ICJ5IiBhbmQgeHNlcnZlcl9jaG9pY2UgPT0gInhzZXJ2ZXJfaTkxNSIgb3IgeHNlcnZlcl9jaG9pY2UgPT0gInhzZXJ2ZXJfaTk2NSI6IH19Ci1pbmNsdWRlIGZlYXR1cmVzL2k5MTUvaTkxNS5zY2MKLQotaW5jbHVkZSBjZmcvdXNiLW1hc3Mtc3RvcmFnZS5zY2MKLWluY2x1ZGUgZmVhdHVyZXMvcG93ZXIvaW50ZWwuc2NjCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWxpc3Qubm9pbnN0YWxsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTdmMGUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtbGlzdC5ub2luc3RhbGwKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLXt7IGlmIGtlcm5lbF9jaG9pY2UgIT0gImN1c3RvbSI6IH19Ci17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJ1c2VfZGVmYXVsdF9rZXJuZWwiIHByaW86IjEwIiBtc2c6IldvdWxkIHlvdSBsaWtlIHRvIHVzZSB0aGUgZGVmYXVsdCAoNC4xMikga2VybmVsPyAoeS9uKSIgZGVmYXVsdDoieSJ9fQotCi17eyBpZiBrZXJuZWxfY2hvaWNlICE9ICJjdXN0b20iIGFuZCB1c2VfZGVmYXVsdF9rZXJuZWwgPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToia2VybmVsX2Nob2ljZSIgZ2VuOiJic3Aua2VybmVsLmtlcm5lbHMiIHByaW86IjEwIiBtc2c6IlBsZWFzZSBjaG9vc2UgdGhlIGtlcm5lbCB0byB1c2UgaW4gdGhpcyBCU1A6IiBkZWZhdWx0OiJsaW51eC15b2N0b180LjEyIn19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJlZDI3My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG8tZGV2IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIG5hbWVhcHBlbmQ6ImkzODYiIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgbmFtZWFwcGVuZDoiaTM4NiIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci1LQlJBTkNIX3t7PW1hY2hpbmV9fSAgPSAie3s9ZXhpc3Rpbmdfa2JyYW5jaH19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJzbXAiIHByaW86IjMwIiBtc2c6IldvdWxkIHlvdSBsaWtlIFNNUCBzdXBwb3J0PyAoeS9uKSIgZGVmYXVsdDoieSJ9fQote3sgaWYgc21wID09ICJ5IjogfX0KLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfe3s9bWFjaGluZX19ICs9ICIgY2ZnL3NtcC5zY2MiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly97ez1tYWNoaW5lfX0uc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0uY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tc3RhbmRhcmQuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1mZWF0dXJlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLXBhdGNoZXMuc2NjIFwKLSAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhZTk0M2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xMCI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEwIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmM2UxMDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC4xMiI6IH19IHRoaXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotUFIgOj0gIiR7UFJ9LjEiCi0KLUNPTVBBVElCTEVfTUFDSElORV97ez1tYWNoaW5lfX0gPSAie3s9bWFjaGluZX19IgotCi17eyBpbnB1dCB0eXBlOiJib29sZWFuIiBuYW1lOiJuZWVkX25ld19rYnJhbmNoIiBwcmlvOiIyMCIgbXNnOiJEbyB5b3UgbmVlZCBhIG5ldyBtYWNoaW5lIGJyYW5jaCBmb3IgdGhpcyBCU1AgKHRoZSBhbHRlcm5hdGl2ZSBpcyB0byByZS11c2UgYW4gZXhpc3RpbmcgYnJhbmNoKT8gW3kvbl0iIGRlZmF1bHQ6InkiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gInkiOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToibmV3X2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkL3RpbnkiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvdGlueS9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS10aW55LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvLXRpbnlfe3s9bWFjaGluZX19ID89ICIke0FVVE9SRVZ9IgotU1JDUkVWX21ldGFfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEwIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmQxODE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvLXRpbnlfNC40IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQote3sgaW5wdXQgdHlwZToiY2hvaWNlbGlzdCIgbmFtZToiZXhpc3Rpbmdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQvdGlueSIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC90aW55L2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXRpbnkuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1jb25maWcuY2ZnIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIgotCi0jIHJlcGxhY2UgdGhlc2UgU1JDUkVWcyB3aXRoIHRoZSByZWFsIGNvbW1pdCBpZHMgb25jZSB5b3UndmUgaGFkCi0jIHRoZSBhcHByb3ByaWF0ZSBjaGFuZ2VzIGNvbW1pdHRlZCB0byB0aGUgdXBzdHJlYW0gbGludXgteW9jdG8gcmVwbwotU1JDUkVWX21hY2hpbmVfcG4tbGludXgteW9jdG8tdGlueV97ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0by10aW55X3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuNCIKLSNSZW1vdmUgdGhlIGZvbGxvd2luZyBsaW5lIG9uY2UgQVVUT1JFViBpcyBsb2NrZWQgdG8gYSBjZXJ0YWluIFNSQ1JFVgotS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9ic3Avc3Vic3RyYXRlL3RhcmdldC9hcmNoL3g4Nl82NC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmYmVjYjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jIHlvY3RvLWJzcC1maWxlbmFtZSB7eyBpZiBrZXJuZWxfY2hvaWNlID09ICJsaW51eC15b2N0b180LjEwIjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjEwIgotI1JlbW92ZSB0aGUgZm9sbG93aW5nIGxpbmUgb25jZSBBVVRPUkVWIGlzIGxvY2tlZCB0byBhIGNlcnRhaW4gU1JDUkVWCi1LRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmJhcHBlbmQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTg3NGM5ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgeW9jdG8tYnNwLWZpbGVuYW1lIHt7IGlmIGtlcm5lbF9jaG9pY2UgPT0gImxpbnV4LXlvY3RvXzQuMTIiOiB9fSB0aGlzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVBSIDo9ICIke1BSfS4xIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfe3s9bWFjaGluZX19ID0gInt7PW1hY2hpbmV9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToibmVlZF9uZXdfa2JyYW5jaCIgcHJpbzoiMjAiIG1zZzoiRG8geW91IG5lZWQgYSBuZXcgbWFjaGluZSBicmFuY2ggZm9yIHRoaXMgQlNQICh0aGUgYWx0ZXJuYXRpdmUgaXMgdG8gcmUtdXNlIGFuIGV4aXN0aW5nIGJyYW5jaCk/IFt5L25dIiBkZWZhdWx0OiJ5IiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJ5IjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6Im5ld19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLXt7IGlucHV0IHR5cGU6ImNob2ljZWxpc3QiIG5hbWU6ImV4aXN0aW5nX2ticmFuY2giIGdlbjoiYnNwLmtlcm5lbC5hbGxfYnJhbmNoZXMiIGJyYW5jaGVzX2Jhc2U6InN0YW5kYXJkIiBwcmlvOiIyMCIgbXNnOiJQbGVhc2UgY2hvb3NlIGEgbWFjaGluZSBicmFuY2ggdG8gYmFzZSB0aGlzIEJTUCBvbjoiIGRlZmF1bHQ6InN0YW5kYXJkL2Jhc2UiIH19Ci0KLXt7IGlmIG5lZWRfbmV3X2ticmFuY2ggPT0gIm4iOiB9fQotS0JSQU5DSF97ez1tYWNoaW5lfX0gID0gInt7PWV4aXN0aW5nX2ticmFuY2h9fSIKLQote3sgaW5wdXQgdHlwZToiYm9vbGVhbiIgbmFtZToic21wIiBwcmlvOiIzMCIgbXNnOiJEbyB5b3UgbmVlZCBTTVAgc3VwcG9ydD8gKHkvbikiIGRlZmF1bHQ6InkifX0KLXt7IGlmIHNtcCA9PSAieSI6IH19Ci1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3t7PW1hY2hpbmV9fSArPSAiIGNmZy9zbXAuc2NjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8ve3s9bWFjaGluZX19LnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXN0YW5kYXJkLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItY29uZmlnLmNmZyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItZmVhdHVyZXMuc2NjIFwKLSAgICAgICAgICAgIGZpbGU6Ly97ez1tYWNoaW5lfX0tdXNlci1wYXRjaGVzLnNjYyBcCi0gICAgICAgICAgICIKLQotIyByZXBsYWNlIHRoZXNlIFNSQ1JFVnMgd2l0aCB0aGUgcmVhbCBjb21taXQgaWRzIG9uY2UgeW91J3ZlIGhhZAotIyB0aGUgYXBwcm9wcmlhdGUgY2hhbmdlcyBjb21taXR0ZWQgdG8gdGhlIHVwc3RyZWFtIGxpbnV4LXlvY3RvIHJlcG8KLVNSQ1JFVl9tYWNoaW5lX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLVNSQ1JFVl9tZXRhX3BuLWxpbnV4LXlvY3RvX3t7PW1hY2hpbmV9fSA/PSAiJHtBVVRPUkVWfSIKLSNMSU5VWF9WRVJTSU9OID0gIjQuMTAiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC9zdWJzdHJhdGUvdGFyZ2V0L2FyY2gveDg2XzY0L3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTgwOWM3Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3N1YnN0cmF0ZS90YXJnZXQvYXJjaC94ODZfNjQvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyB5b2N0by1ic3AtZmlsZW5hbWUge3sgaWYga2VybmVsX2Nob2ljZSA9PSAibGludXgteW9jdG9fNC40IjogfX0gdGhpcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZmlsZXM6IgotCi1QUiA6PSAiJHtQUn0uMSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3t7PW1hY2hpbmV9fSA9ICJ7ez1tYWNoaW5lfX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6Im5lZWRfbmV3X2ticmFuY2giIHByaW86IjIwIiBtc2c6IkRvIHlvdSBuZWVkIGEgbmV3IG1hY2hpbmUgYnJhbmNoIGZvciB0aGlzIEJTUCAodGhlIGFsdGVybmF0aXZlIGlzIHRvIHJlLXVzZSBhbiBleGlzdGluZyBicmFuY2gpPyBbeS9uXSIgZGVmYXVsdDoieSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAieSI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJuZXdfa2JyYW5jaCIgZ2VuOiJic3Aua2VybmVsLmFsbF9icmFuY2hlcyIgYnJhbmNoZXNfYmFzZToic3RhbmRhcmQiIHByaW86IjIwIiBtc2c6IlBsZWFzZSBjaG9vc2UgYSBtYWNoaW5lIGJyYW5jaCB0byBiYXNlIHRoaXMgQlNQIG9uOiIgZGVmYXVsdDoic3RhbmRhcmQvYmFzZSIgfX0KLQote3sgaWYgbmVlZF9uZXdfa2JyYW5jaCA9PSAibiI6IH19Ci17eyBpbnB1dCB0eXBlOiJjaG9pY2VsaXN0IiBuYW1lOiJleGlzdGluZ19rYnJhbmNoIiBnZW46ImJzcC5rZXJuZWwuYWxsX2JyYW5jaGVzIiBicmFuY2hlc19iYXNlOiJzdGFuZGFyZCIgcHJpbzoiMjAiIG1zZzoiUGxlYXNlIGNob29zZSBhIG1hY2hpbmUgYnJhbmNoIHRvIGJhc2UgdGhpcyBCU1Agb246IiBkZWZhdWx0OiJzdGFuZGFyZC9iYXNlIiB9fQotCi17eyBpZiBuZWVkX25ld19rYnJhbmNoID09ICJuIjogfX0KLUtCUkFOQ0hfe3s9bWFjaGluZX19ICA9ICJ7ez1leGlzdGluZ19rYnJhbmNofX0iCi0KLXt7IGlucHV0IHR5cGU6ImJvb2xlYW4iIG5hbWU6InNtcCIgcHJpbzoiMzAiIG1zZzoiRG8geW91IG5lZWQgU01QIHN1cHBvcnQ/ICh5L24pIiBkZWZhdWx0OiJ5In19Ci17eyBpZiBzbXAgPT0gInkiOiB9fQotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF97ez1tYWNoaW5lfX0gKz0gIiBjZmcvc21wLnNjYyIKLQotU1JDX1VSSSArPSAiZmlsZTovL3t7PW1hY2hpbmV9fS5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS1zdGFuZGFyZC5zY2MgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWNvbmZpZy5jZmcgXAotICAgICAgICAgICAgZmlsZTovL3t7PW1hY2hpbmV9fS11c2VyLWZlYXR1cmVzLnNjYyBcCi0gICAgICAgICAgICBmaWxlOi8ve3s9bWFjaGluZX19LXVzZXItcGF0Y2hlcy5zY2MgXAotICAgICAgICAgICAiCi0KLSMgcmVwbGFjZSB0aGVzZSBTUkNSRVZzIHdpdGggdGhlIHJlYWwgY29tbWl0IGlkcyBvbmNlIHlvdSd2ZSBoYWQKLSMgdGhlIGFwcHJvcHJpYXRlIGNoYW5nZXMgY29tbWl0dGVkIHRvIHRoZSB1cHN0cmVhbSBsaW51eC15b2N0byByZXBvCi1TUkNSRVZfbWFjaGluZV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi1TUkNSRVZfbWV0YV9wbi1saW51eC15b2N0b197ez1tYWNoaW5lfX0gPz0gIiR7QVVUT1JFVn0iCi0jTElOVVhfVkVSU0lPTiA9ICI0LjQiCi0jUmVtb3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBvbmNlIEFVVE9SRVYgaXMgbG9ja2VkIHRvIGEgY2VydGFpbiBTUkNSRVYKLUtFUk5FTF9WRVJTSU9OX1NBTklUWV9TS0lQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3RhZ3MucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvYnNwL3RhZ3MucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3MTk0MjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2JzcC90YWdzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotIyBleDp0cz00OnN3PTQ6c3RzPTQ6ZXQKLSMgLSotIHRhYi13aWR0aDogNDsgYy1iYXNpYy1vZmZzZXQ6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbCAtKi0KLSMKLSMgQ29weXJpZ2h0IChjKSAyMDEyLCBJbnRlbCBDb3Jwb3JhdGlvbi4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKLSMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0jIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCi0jIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCi0jCi0jIERFU0NSSVBUSU9OCi0jIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgcGxhY2UgdG8gZGVmaW5lIGNvbW1vbiBjb25zdGFudHMgZm9yIHRoZQotIyBZb2N0byBCU1AgVG9vbHMuCi0jCi0jIEFVVEhPUlMKLSMgVG9tIFphbnVzc2kgPHRvbS56YW51c3NpIChhdF0gaW50ZWwuY29tPgotIwotCi1PUEVOX1RBRyA9ICAgICAie3siCi1DTE9TRV9UQUcgPSAgICAifX0iCi1BU1NJR05fVEFHID0gICAie3s9IgotSU5QVVRfVEFHID0gICAgImlucHV0IgotSUZfVEFHID0gICAgICAgImlmIgotRklMRU5BTUVfVEFHID0gInlvY3RvLWJzcC1maWxlbmFtZSIKLURJUk5BTUVfVEFHID0gICJ5b2N0by1ic3AtZGlybmFtZSIKLQotSU5ERU5UX1NUUiA9ICAiICAgICIKLQotQkxBTktMSU5FX1NUUiA9ICJvZi53cml0ZShcIlxcblwiKSIKLU5PUk1BTF9TVEFSVCA9ICAib2Yud3JpdGUiCi1PUEVOX1NUQVJUID0gICAgImN1cnJlbnRfZmlsZSA9IgotCi1JTlBVVF9UWVBFX1BST1BFUlRZID0gInR5cGUiCi0KLVNSQ19VUklfRklMRSA9ICJmaWxlOi8vIgotCi1HSVRfQ0hFQ0tfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLWRldi5naXQiCi0KLQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY2hlY2tsYXllci9fX2luaXRfXy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL19faW5pdF9fLnB5CmluZGV4IDI4OGM0NTcuLjI2MTg0MTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL19faW5pdF9fLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL19faW5pdF9fLnB5CkBAIC01Niw5ICs1NiwxMSBAQAogICAgICAgICBwcmlvcml0eSA9IGxkYXRhLmdldFZhcignQkJGSUxFX1BSSU9SSVRZXyVzJyAlIG5hbWUpCiAgICAgICAgIHBhdHRlcm4gPSBsZGF0YS5nZXRWYXIoJ0JCRklMRV9QQVRURVJOXyVzJyAlIG5hbWUpCiAgICAgICAgIGRlcGVuZHMgPSBsZGF0YS5nZXRWYXIoJ0xBWUVSREVQRU5EU18lcycgJSBuYW1lKQorICAgICAgICBjb21wYXQgPSBsZGF0YS5nZXRWYXIoJ0xBWUVSU0VSSUVTX0NPTVBBVF8lcycgJSBuYW1lKQogICAgICAgICBjb2xsZWN0aW9uc1tuYW1lXVsncHJpb3JpdHknXSA9IHByaW9yaXR5CiAgICAgICAgIGNvbGxlY3Rpb25zW25hbWVdWydwYXR0ZXJuJ10gPSBwYXR0ZXJuCiAgICAgICAgIGNvbGxlY3Rpb25zW25hbWVdWydkZXBlbmRzJ10gPSBkZXBlbmRzCisgICAgICAgIGNvbGxlY3Rpb25zW25hbWVdWydjb21wYXQnXSA9IGNvbXBhdAogCiAgICAgcmV0dXJuIGNvbGxlY3Rpb25zCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL2Nhc2VzL2NvbW1vbi5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL2Nhc2VzL2NvbW1vbi5weQppbmRleCBhMTNjMTA4Li4xYmVmNjFiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvY2hlY2tsYXllci9jYXNlcy9jb21tb24ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2NoZWNrbGF5ZXIvY2FzZXMvY29tbW9uLnB5CkBAIC01MSwzICs1MSw4IEBACiAgICAgICAgIG1zZyA9IGNvbXBhcmVfc2lnbmF0dXJlcyhzZWxmLnRkWydzaWdzJ10sIGN1cnJfc2lncykKICAgICAgICAgaWYgbXNnIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5mYWlsKCdBZGRpbmcgbGF5ZXIgJXMgY2hhbmdlZCBzaWduYXR1cmVzLlxuJXMnICUgKHNlbGYudGMubGF5ZXJbJ25hbWUnXSwgbXNnKSkKKworICAgIGRlZiB0ZXN0X2xheWVyc2VyaWVzX2NvbXBhdChzZWxmKToKKyAgICAgICAgZm9yIGNvbGxlY3Rpb25fbmFtZSwgY29sbGVjdGlvbl9kYXRhIGluIHNlbGYudGMubGF5ZXJbJ2NvbGxlY3Rpb25zJ10uaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2xsZWN0aW9uX2RhdGFbJ2NvbXBhdCddLCAiQ29sbGVjdGlvbiAlcyBmcm9tIGxheWVyICVzIGRvZXMgbm90IHNldCBjb21wYXRpYmxlIG9lLWNvcmUgdmVyc2lvbnMgdmlhIExBWUVSU0VSSUVTX0NPTVBBVF9jb2xsZWN0aW9uLiIgXAorICAgICAgICAgICAgICAgICAlIChjb2xsZWN0aW9uX25hbWUsIHNlbGYudGMubGF5ZXJbJ25hbWUnXSkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9fX2luaXRfXy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL19faW5pdF9fLnB5CmluZGV4IDk0ZTNkN2QuLjg5ZjA5OGEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL19faW5pdF9fLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL19faW5pdF9fLnB5CkBAIC0yMjAsNiArMjIwLDIwIEBACiAgICAgICAgIGNvbW1pdF9jbWQgKz0gWyctbScsIGNvbW1pdG1zZ10KICAgICAgICAgYmIucHJvY2Vzcy5ydW4oY29tbWl0X2NtZCwgY3dkPXJlcG9kaXIpCiAKKyAgICAjIEVuc3VyZSBzaW5nbGV0YXNrLmxvY2sgKGFzIHVzZWQgYnkgZXh0ZXJuYWxzcmMuYmJjbGFzcykgaXMgaWdub3JlZCBieSBnaXQKKyAgICBleGNsdWRlcyA9IFtdCisgICAgZXhjbHVkZWZpbGUgPSBvcy5wYXRoLmpvaW4ocmVwb2RpciwgJy5naXQnLCAnaW5mbycsICdleGNsdWRlJykKKyAgICB0cnk6CisgICAgICAgIHdpdGggb3BlbihleGNsdWRlZmlsZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgZXhjbHVkZXMgPSBmLnJlYWRsaW5lcygpCisgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICBwYXNzCisgICAgaWYgJ3NpbmdsZXRhc2subG9ja1xuJyBub3QgaW4gZXhjbHVkZXM6CisgICAgICAgIGV4Y2x1ZGVzLmFwcGVuZCgnc2luZ2xldGFzay5sb2NrXG4nKQorICAgIHdpdGggb3BlbihleGNsdWRlZmlsZSwgJ3cnKSBhcyBmOgorICAgICAgICBmb3IgbGluZSBpbiBleGNsdWRlczoKKyAgICAgICAgICAgIGYud3JpdGUobGluZSkKKwogICAgIGJiLnByb2Nlc3MucnVuKCdnaXQgY2hlY2tvdXQgLWIgJXMnICUgZGV2YnJhbmNoLCBjd2Q9cmVwb2RpcikKICAgICBiYi5wcm9jZXNzLnJ1bignZ2l0IHRhZyAtZiAlcycgJSBiYXNldGFnLCBjd2Q9cmVwb2RpcikKIApAQCAtMzM3LDMgKzM1MSwzMyBAQAogICAgICAgICAgICAgZm9yIHBuIGluIG5ld3VubG9ja2VkOgogICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAnICsgcG4pCiAgICAgICAgICAgICBmLndyaXRlKCciJykKKworZGVmIGNoZWNrX3ByZXJlbGVhc2VfdmVyc2lvbih2ZXIsIG9wZXJhdGlvbik6CisgICAgaWYgJ3ByZScgaW4gdmVyIG9yICdyYycgaW4gdmVyOgorICAgICAgICBsb2dnZXIud2FybmluZygnVmVyc2lvbiAiJXMiIGxvb2tzIGxpa2UgYSBwcmUtcmVsZWFzZSB2ZXJzaW9uLiAnCisgICAgICAgICAgICAgICAgICAgICAgICdJZiB0aGF0IGlzIHRoZSBjYXNlLCBpbiBvcmRlciB0byBlbnN1cmUgdGhhdCB0aGUgJworICAgICAgICAgICAgICAgICAgICAgICAndmVyc2lvbiBkb2VzblwndCBhcHBlYXIgdG8gZ28gYmFja3dhcmRzIHdoZW4geW91ICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2xhdGVyIHVwZ3JhZGUgdG8gdGhlIGZpbmFsIHJlbGVhc2UgdmVyc2lvbiwgaXQgaXMgJworICAgICAgICAgICAgICAgICAgICAgICAncmVjb21tbWVuZGVkIHRoYXQgaW5zdGVhZCB5b3UgdXNlICcKKyAgICAgICAgICAgICAgICAgICAgICAgJzxjdXJyZW50IHZlcnNpb24+KzxwcmUtcmVsZWFzZSB2ZXJzaW9uPiBlLmcuIGlmICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3VwZ3JhZGluZyBmcm9tIDEuOSB0byAyLjAtcmMyIHVzZSAiMS45KzIuMC1yYzIiLiAnCisgICAgICAgICAgICAgICAgICAgICAgICdJZiB5b3UgcHJlZmVyIG5vdCB0byByZXNldCBhbmQgcmUtdHJ5LCB5b3UgY2FuIGNoYW5nZSAnCisgICAgICAgICAgICAgICAgICAgICAgICd0aGUgdmVyc2lvbiBhZnRlciAlcyBzdWNjZWVkcyB1c2luZyAiZGV2dG9vbCByZW5hbWUiICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3dpdGggLVYvLS12ZXJzaW9uLicgJSAodmVyLCBvcGVyYXRpb24pKQorCitkZWYgY2hlY2tfZ2l0X3JlcG9fZGlydHkocmVwb2Rpcik6CisgICAgIiIiQ2hlY2sgaWYgYSBnaXQgcmVwb3NpdG9yeSBpcyBjbGVhbiBvciBub3QiIiIKKyAgICBzdGRvdXQsIF8gPSBiYi5wcm9jZXNzLnJ1bignZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbicsIGN3ZD1yZXBvZGlyKQorICAgIHJldHVybiBzdGRvdXQKKworZGVmIGNoZWNrX2dpdF9yZXBvX29wKHNyY3RyZWUsIGlnbm9yZWRpcnM9Tm9uZSk6CisgICAgIiIiQ2hlY2sgaWYgYSBnaXQgcmVwb3NpdG9yeSBpcyBpbiB0aGUgbWlkZGxlIG9mIGEgcmViYXNlIiIiCisgICAgc3Rkb3V0LCBfID0gYmIucHJvY2Vzcy5ydW4oJ2dpdCByZXYtcGFyc2UgLS1zaG93LXRvcGxldmVsJywgY3dkPXNyY3RyZWUpCisgICAgdG9wbGV2ZWxkaXIgPSBzdGRvdXQuc3RyaXAoKQorICAgIGlmIGlnbm9yZWRpcnMgYW5kIHRvcGxldmVsZGlyIGluIGlnbm9yZWRpcnM6CisgICAgICAgIHJldHVybgorICAgIGdpdGRpciA9IG9zLnBhdGguam9pbih0b3BsZXZlbGRpciwgJy5naXQnKQorICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihnaXRkaXIsICdyZWJhc2UtbWVyZ2UnKSk6CisgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcigiU291cmNlIHRyZWUgJXMgYXBwZWFycyB0byBiZSBpbiB0aGUgbWlkZGxlIG9mIGEgcmViYXNlIC0gcGxlYXNlIHJlc29sdmUgdGhpcyBmaXJzdCIgJSBzcmN0cmVlKQorICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihnaXRkaXIsICdyZWJhc2UtYXBwbHknKSk6CisgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcigiU291cmNlIHRyZWUgJXMgYXBwZWFycyB0byBiZSBpbiB0aGUgbWlkZGxlIG9mICdnaXQgYW0nIG9yICdnaXQgYXBwbHknIC0gcGxlYXNlIHJlc29sdmUgdGhpcyBmaXJzdCIgJSBzcmN0cmVlKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvZGVwbG95LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvZGVwbG95LnB5CmluZGV4IDljYzQ5MjcuLjUyZTI2MWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL2RlcGxveS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9kZXBsb3kucHkKQEAgLTIxMyw5ICsyMTMsNyBAQAogCiAgICAgICAgIHNjcF9wb3J0ID0gJycKICAgICAgICAgc3NoX3BvcnQgPSAnJwotICAgICAgICBpZiBub3QgYXJncy5wb3J0OgotICAgICAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCJJZiB5b3Ugc3BlY2lmeSAtUC8tLXBvcnQgdGhlbiB5b3UgbXVzdCBwcm92aWRlIHRoZSBwb3J0IHRvIGJlIHVzZWQgdG8gY29ubmVjdCB0byB0aGUgdGFyZ2V0IikKLSAgICAgICAgZWxzZToKKyAgICAgICAgaWYgYXJncy5wb3J0OgogICAgICAgICAgICAgc2NwX3BvcnQgPSAiLVAgJXMiICUgYXJncy5wb3J0CiAgICAgICAgICAgICBzc2hfcG9ydCA9ICItcCAlcyIgJSBhcmdzLnBvcnQKIApAQCAtMjgwLDkgKzI3OCw3IEBACiAKICAgICBzY3BfcG9ydCA9ICcnCiAgICAgc3NoX3BvcnQgPSAnJwotICAgIGlmIG5vdCBhcmdzLnBvcnQ6Ci0gICAgICAgIHJhaXNlIERldnRvb2xFcnJvcigiSWYgeW91IHNwZWNpZnkgLVAvLS1wb3J0IHRoZW4geW91IG11c3QgcHJvdmlkZSB0aGUgcG9ydCB0byBiZSB1c2VkIHRvIGNvbm5lY3QgdG8gdGhlIHRhcmdldCIpCi0gICAgZWxzZToKKyAgICBpZiBhcmdzLnBvcnQ6CiAgICAgICAgIHNjcF9wb3J0ID0gIi1QICVzIiAlIGFyZ3MucG9ydAogICAgICAgICBzc2hfcG9ydCA9ICItcCAlcyIgJSBhcmdzLnBvcnQKIApAQCAtMzI4LDcgKzMyNCw3IEBACiAgICAgcGFyc2VyX2RlcGxveS5hZGRfYXJndW1lbnQoJy1uJywgJy0tZHJ5LXJ1bicsIGhlbHA9J0xpc3QgZmlsZXMgdG8gYmUgZGVwbG95ZWQgb25seScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgcGFyc2VyX2RlcGxveS5hZGRfYXJndW1lbnQoJy1wJywgJy0tbm8tcHJlc2VydmUnLCBoZWxwPSdEbyBub3QgcHJlc2VydmUgZXhpc3RpbmcgZmlsZXMnLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgIHBhcnNlcl9kZXBsb3kuYWRkX2FyZ3VtZW50KCctLW5vLWNoZWNrLXNwYWNlJywgaGVscD0nRG8gbm90IGNoZWNrIGZvciBhdmFpbGFibGUgc3BhY2UgYmVmb3JlIGRlcGxveWluZycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCi0gICAgcGFyc2VyX2RlcGxveS5hZGRfYXJndW1lbnQoJy1QJywgJy0tcG9ydCcsIGRlZmF1bHQ9JzIyJywgaGVscD0nUG9ydCB0byB1c2UgZm9yIGNvbm5lY3Rpb24gdG8gdGhlIHRhcmdldCcpCisgICAgcGFyc2VyX2RlcGxveS5hZGRfYXJndW1lbnQoJy1QJywgJy0tcG9ydCcsIGhlbHA9J1NwZWNpZnkgcG9ydCB0byB1c2UgZm9yIGNvbm5lY3Rpb24gdG8gdGhlIHRhcmdldCcpCiAKICAgICBzdHJpcF9vcHRzID0gcGFyc2VyX2RlcGxveS5hZGRfbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwKHJlcXVpcmVkPUZhbHNlKQogICAgIHN0cmlwX29wdHMuYWRkX2FyZ3VtZW50KCctUycsICctLXN0cmlwJywKQEAgLTM1MCw1ICszNDYsNSBAQAogICAgIHBhcnNlcl91bmRlcGxveS5hZGRfYXJndW1lbnQoJy1zJywgJy0tc2hvdy1zdGF0dXMnLCBoZWxwPSdTaG93IHByb2dyZXNzL3N0YXR1cyBvdXRwdXQnLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgIHBhcnNlcl91bmRlcGxveS5hZGRfYXJndW1lbnQoJy1hJywgJy0tYWxsJywgaGVscD0nVW5kZXBsb3kgYWxsIHJlY2lwZXMgZGVwbG95ZWQgb24gdGhlIHRhcmdldCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgcGFyc2VyX3VuZGVwbG95LmFkZF9hcmd1bWVudCgnLW4nLCAnLS1kcnktcnVuJywgaGVscD0nTGlzdCBmaWxlcyB0byBiZSB1bmRlcGxveWVkIG9ubHknLCBhY3Rpb249J3N0b3JlX3RydWUnKQotICAgIHBhcnNlcl91bmRlcGxveS5hZGRfYXJndW1lbnQoJy1QJywgJy0tcG9ydCcsIGRlZmF1bHQ9JzIyJywgaGVscD0nUG9ydCB0byB1c2UgZm9yIGNvbm5lY3Rpb24gdG8gdGhlIHRhcmdldCcpCisgICAgcGFyc2VyX3VuZGVwbG95LmFkZF9hcmd1bWVudCgnLVAnLCAnLS1wb3J0JywgaGVscD0nU3BlY2lmeSBwb3J0IHRvIHVzZSBmb3IgY29ubmVjdGlvbiB0byB0aGUgdGFyZ2V0JykKICAgICBwYXJzZXJfdW5kZXBsb3kuc2V0X2RlZmF1bHRzKGZ1bmM9dW5kZXBsb3kpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zZWFyY2gucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zZWFyY2gucHkKaW5kZXggMDU0OTg1Yi4uYjRmMjA5YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvc2VhcmNoLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL3NlYXJjaC5weQpAQCAtMzYsNDQgKzM2LDc0IEBACiAKICAgICAgICAga2V5d29yZF9yYyA9IHJlLmNvbXBpbGUoYXJncy5rZXl3b3JkKQogCi0gICAgICAgIGZvciBmbiBpbiBvcy5saXN0ZGlyKHBrZ2RhdGFfZGlyKToKLSAgICAgICAgICAgIHBmbiA9IG9zLnBhdGguam9pbihwa2dkYXRhX2RpciwgZm4pCi0gICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUocGZuKToKKyAgICAgICAgZGVmIHByaW50X21hdGNoKHBuKToKKyAgICAgICAgICAgIHJkID0gcGFyc2VfcmVjaXBlKGNvbmZpZywgdGluZm9pbCwgcG4sIFRydWUpCisgICAgICAgICAgICBpZiBub3QgcmQ6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBzdW1tYXJ5ID0gcmQuZ2V0VmFyKCdTVU1NQVJZJykKKyAgICAgICAgICAgIGlmIHN1bW1hcnkgPT0gcmQuZXhwYW5kKGRlZnN1bW1hcnkpOgorICAgICAgICAgICAgICAgIHN1bW1hcnkgPSAnJworICAgICAgICAgICAgcHJpbnQoIiVzICAlcyIgJSAocG4ubGp1c3QoMjApLCBzdW1tYXJ5KSkKKworCisgICAgICAgIG1hdGNoZXMgPSBbXQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwa2dkYXRhX2Rpcik6CisgICAgICAgICAgICBmb3IgZm4gaW4gb3MubGlzdGRpcihwa2dkYXRhX2Rpcik6CisgICAgICAgICAgICAgICAgcGZuID0gb3MucGF0aC5qb2luKHBrZ2RhdGFfZGlyLCBmbikKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUocGZuKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIHBhY2thZ2VzID0gW10KKyAgICAgICAgICAgICAgICBtYXRjaCA9IEZhbHNlCisgICAgICAgICAgICAgICAgaWYga2V5d29yZF9yYy5zZWFyY2goZm4pOgorICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IFRydWUKKworICAgICAgICAgICAgICAgIGlmIG5vdCBtYXRjaDoKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHBmbiwgJ3InKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ1BBQ0tBR0VTOicpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyA9IGxpbmUuc3BsaXQoJzonLCAxKVsxXS5zdHJpcCgpLnNwbGl0KCkKKworICAgICAgICAgICAgICAgICAgICBmb3IgcGtnIGluIHBhY2thZ2VzOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYga2V5d29yZF9yYy5zZWFyY2gocGtnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHBrZ2RhdGFfZGlyLCAncnVudGltZScsIHBrZyArICcucGFja2FnZWQnKSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihwa2dkYXRhX2RpciwgJ3J1bnRpbWUnLCBwa2cpLCAncicpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAnOiAnIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaXRsaW5lID0gbGluZS5zcGxpdCgnOicsIDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ID0gc3BsaXRsaW5lWzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzcGxpdGxpbmVbMV0uc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYga2V5IGluIFsnUEtHXyVzJyAlIHBrZywgJ0RFU0NSSVBUSU9OJywgJ0ZJTEVTX0lORk8nXSBvciBrZXkuc3RhcnRzd2l0aCgnRklMRVJQUk9WSURFU18nKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBrZXl3b3JkX3JjLnNlYXJjaCh2YWx1ZSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAgICAgICAgICAgICBwcmludF9tYXRjaChmbikKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQoZm4pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2dnZXIud2FybmluZygnUGFja2FnZSBkYXRhIGlzIG5vdCBhdmFpbGFibGUsIHJlc3VsdHMgbWF5IGJlIGxpbWl0ZWQnKQorCisgICAgICAgIGZvciByZWNpcGUgaW4gdGluZm9pbC5hbGxfcmVjaXBlcygpOgorICAgICAgICAgICAgaWYgYXJncy5maXhlZF9zZXR1cCBhbmQgJ25hdGl2ZXNkaycgaW4gcmVjaXBlLmluaGVyaXRzKCk6CiAgICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgcGFja2FnZXMgPSBbXQogICAgICAgICAgICAgbWF0Y2ggPSBGYWxzZQotICAgICAgICAgICAgaWYga2V5d29yZF9yYy5zZWFyY2goZm4pOgorICAgICAgICAgICAgaWYga2V5d29yZF9yYy5zZWFyY2gocmVjaXBlLnBuKToKICAgICAgICAgICAgICAgICBtYXRjaCA9IFRydWUKLQotICAgICAgICAgICAgaWYgbm90IG1hdGNoOgotICAgICAgICAgICAgICAgIHdpdGggb3BlbihwZm4sICdyJykgYXMgZjoKLSAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnUEFDS0FHRVM6Jyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZXMgPSBsaW5lLnNwbGl0KCc6JywgMSlbMV0uc3RyaXAoKS5zcGxpdCgpCi0KLSAgICAgICAgICAgICAgICBmb3IgcGtnIGluIHBhY2thZ2VzOgotICAgICAgICAgICAgICAgICAgICBpZiBrZXl3b3JkX3JjLnNlYXJjaChwa2cpOgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmb3IgcHJvdiBpbiByZWNpcGUucHJvdmlkZXM6CisgICAgICAgICAgICAgICAgICAgIGlmIGtleXdvcmRfcmMuc2VhcmNoKHByb3YpOgogICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4ocGtnZGF0YV9kaXIsICdydW50aW1lJywgcGtnICsgJy5wYWNrYWdlZCcpKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4ocGtnZGF0YV9kaXIsICdydW50aW1lJywgcGtnKSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGY6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICc6ICcgaW4gbGluZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGl0bGluZSA9IGxpbmUuc3BsaXQoJzonLCAxKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ID0gc3BsaXRsaW5lWzBdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNwbGl0bGluZVsxXS5zdHJpcCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGtleSBpbiBbJ1BLR18lcycgJSBwa2csICdERVNDUklQVElPTicsICdGSUxFU19JTkZPJ10gb3Iga2V5LnN0YXJ0c3dpdGgoJ0ZJTEVSUFJPVklERVNfJyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBrZXl3b3JkX3JjLnNlYXJjaCh2YWx1ZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAgICAgaWYgbWF0Y2g6Ci0gICAgICAgICAgICAgICAgcmQgPSBwYXJzZV9yZWNpcGUoY29uZmlnLCB0aW5mb2lsLCBmbiwgVHJ1ZSkKLSAgICAgICAgICAgICAgICBzdW1tYXJ5ID0gcmQuZ2V0VmFyKCdTVU1NQVJZJykKLSAgICAgICAgICAgICAgICBpZiBzdW1tYXJ5ID09IHJkLmV4cGFuZChkZWZzdW1tYXJ5KToKLSAgICAgICAgICAgICAgICAgICAgc3VtbWFyeSA9ICcnCi0gICAgICAgICAgICAgICAgcHJpbnQoIiVzICAlcyIgJSAoZm4ubGp1c3QoMjApLCBzdW1tYXJ5KSkKKyAgICAgICAgICAgICAgICBpZiBub3QgbWF0Y2g6CisgICAgICAgICAgICAgICAgICAgIGZvciBycHJvdiBpbiByZWNpcGUucnByb3ZpZGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYga2V5d29yZF9yYy5zZWFyY2gocnByb3YpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZiBtYXRjaCBhbmQgbm90IHJlY2lwZS5wbiBpbiBtYXRjaGVzOgorICAgICAgICAgICAgICAgIHByaW50X21hdGNoKHJlY2lwZS5wbikKICAgICBmaW5hbGx5OgogICAgICAgICB0aW5mb2lsLnNodXRkb3duKCkKIApAQCAtODIsNyArMTEyLDcgQEAKIGRlZiByZWdpc3Rlcl9jb21tYW5kcyhzdWJwYXJzZXJzLCBjb250ZXh0KToKICAgICAiIiJSZWdpc3RlciBkZXZ0b29sIHN1YmNvbW1hbmRzIGZyb20gdGhpcyBwbHVnaW4iIiIKICAgICBwYXJzZXJfc2VhcmNoID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdzZWFyY2gnLCBoZWxwPSdTZWFyY2ggYXZhaWxhYmxlIHJlY2lwZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nU2VhcmNoZXMgZm9yIGF2YWlsYWJsZSB0YXJnZXQgcmVjaXBlcy4gTWF0Y2hlcyBvbiByZWNpcGUgbmFtZSwgcGFja2FnZSBuYW1lLCBkZXNjcmlwdGlvbiBhbmQgaW5zdGFsbGVkIGZpbGVzLCBhbmQgcHJpbnRzIHRoZSByZWNpcGUgbmFtZSBvbiBtYXRjaC4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nU2VhcmNoZXMgZm9yIGF2YWlsYWJsZSByZWNpcGVzLiBNYXRjaGVzIG9uIHJlY2lwZSBuYW1lLCBwYWNrYWdlIG5hbWUsIGRlc2NyaXB0aW9uIGFuZCBpbnN0YWxsZWQgZmlsZXMsIGFuZCBwcmludHMgdGhlIHJlY2lwZSBuYW1lIGFuZCBzdW1tYXJ5IG9uIG1hdGNoLicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwPSdpbmZvJykKLSAgICBwYXJzZXJfc2VhcmNoLmFkZF9hcmd1bWVudCgna2V5d29yZCcsIGhlbHA9J0tleXdvcmQgdG8gc2VhcmNoIGZvciAocmVndWxhciBleHByZXNzaW9uIHN5bnRheCBhbGxvd2VkKScpCi0gICAgcGFyc2VyX3NlYXJjaC5zZXRfZGVmYXVsdHMoZnVuYz1zZWFyY2gsIG5vX3dvcmtzcGFjZT1UcnVlKQorICAgIHBhcnNlcl9zZWFyY2guYWRkX2FyZ3VtZW50KCdrZXl3b3JkJywgaGVscD0nS2V5d29yZCB0byBzZWFyY2ggZm9yIChyZWd1bGFyIGV4cHJlc3Npb24gc3ludGF4IGFsbG93ZWQsIHVzZSBxdW90ZXMgdG8gYXZvaWQgc2hlbGwgZXhwYW5zaW9uKScpCisgICAgcGFyc2VyX3NlYXJjaC5zZXRfZGVmYXVsdHMoZnVuYz1zZWFyY2gsIG5vX3dvcmtzcGFjZT1UcnVlLCBmaXhlZF9zZXR1cD1jb250ZXh0LmZpeGVkX3NldHVwKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvc3RhbmRhcmQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weQppbmRleCBiZWVhMGQ0Li5hMWU4ZTFkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weQpAQCAtMzAsMTEgKzMwLDEzIEBACiBpbXBvcnQgZ2xvYgogaW1wb3J0IGZpbGVjbXAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0Ci1mcm9tIGRldnRvb2wgaW1wb3J0IGV4ZWNfYnVpbGRfZW52X2NvbW1hbmQsIHNldHVwX3RpbmZvaWwsIGNoZWNrX3dvcmtzcGFjZV9yZWNpcGUsIHVzZV9leHRlcm5hbF9idWlsZCwgc2V0dXBfZ2l0X3JlcG8sIHJlY2lwZV90b19hcHBlbmQsIGdldF9iYmNsYXNzZXh0ZW5kX3RhcmdldHMsIHVwZGF0ZV91bmxvY2tlZHNpZ3MsIERldnRvb2xFcnJvcgorZnJvbSBkZXZ0b29sIGltcG9ydCBleGVjX2J1aWxkX2Vudl9jb21tYW5kLCBzZXR1cF90aW5mb2lsLCBjaGVja193b3Jrc3BhY2VfcmVjaXBlLCB1c2VfZXh0ZXJuYWxfYnVpbGQsIHNldHVwX2dpdF9yZXBvLCByZWNpcGVfdG9fYXBwZW5kLCBnZXRfYmJjbGFzc2V4dGVuZF90YXJnZXRzLCB1cGRhdGVfdW5sb2NrZWRzaWdzLCBjaGVja19wcmVyZWxlYXNlX3ZlcnNpb24sIGNoZWNrX2dpdF9yZXBvX2RpcnR5LCBjaGVja19naXRfcmVwb19vcCwgRGV2dG9vbEVycm9yCiBmcm9tIGRldnRvb2wgaW1wb3J0IHBhcnNlX3JlY2lwZQogCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignZGV2dG9vbCcpCiAKK292ZXJyaWRlX2JyYW5jaF9wcmVmaXggPSAnZGV2dG9vbC1vdmVycmlkZS0nCisKIAogZGVmIGFkZChhcmdzLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UpOgogICAgICIiIkVudHJ5IHBvaW50IGZvciB0aGUgZGV2dG9vbCAnYWRkJyBzdWJjb21tYW5kIiIiCkBAIC0yOTgsNiArMzAwLDggQEAKIAogICAgICAgICBfYWRkX21kNShjb25maWcsIHJlY2lwZW5hbWUsIGFwcGVuZGZpbGUpCiAKKyAgICAgICAgY2hlY2tfcHJlcmVsZWFzZV92ZXJzaW9uKHJkLmdldFZhcignUFYnKSwgJ2RldnRvb2wgYWRkJykKKwogICAgICAgICBsb2dnZXIuaW5mbygnUmVjaXBlICVzIGhhcyBiZWVuIGF1dG9tYXRpY2FsbHkgY3JlYXRlZDsgZnVydGhlciBlZGl0aW5nIG1heSBiZSByZXF1aXJlZCB0byBtYWtlIGl0IGZ1bGx5IGZ1bmN0aW9uYWwnICUgcmVjaXBlZmlsZSkKIAogICAgIGZpbmFsbHk6CkBAIC0zMzksMTkgKzM0Myw0NSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyb20gd29ya2luZy4gWW91IHdpbGwgbmVlZCB0byBkaXNhYmxlIHRoaXMgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpcnN0LiIgJSBwbikKIAotZGVmIF9tb3ZlX2ZpbGUoc3JjLCBkc3QpOgotICAgICIiIk1vdmUgYSBmaWxlLiBDcmVhdGVzIGFsbCB0aGUgZGlyZWN0b3J5IGNvbXBvbmVudHMgb2YgZGVzdGluYXRpb24gcGF0aC4iIiIKK2RlZiBfZHJ5X3J1bl9jb3B5KHNyYywgZHN0LCBkcnlfcnVuX291dGRpciwgYmFzZV9vdXRkaXIpOgorICAgICIiIkNvbW1vbiBmdW5jdGlvbiBmb3IgY29weWluZyBhIGZpbGUgdG8gdGhlIGRyeSBydW4gb3V0cHV0IGRpcmVjdG9yeSIiIgorICAgIHJlbHBhdGggPSBvcy5wYXRoLnJlbHBhdGgoZHN0LCBiYXNlX291dGRpcikKKyAgICBpZiByZWxwYXRoLnN0YXJ0c3dpdGgoJy4uJyk6CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignSW5jb3JyZWN0IGJhc2UgcGF0aCAlcyBmb3IgcGF0aCAlcycgJSAoYmFzZV9vdXRkaXIsIGRzdCkpCisgICAgZHN0ID0gb3MucGF0aC5qb2luKGRyeV9ydW5fb3V0ZGlyLCByZWxwYXRoKQogICAgIGRzdF9kID0gb3MucGF0aC5kaXJuYW1lKGRzdCkKICAgICBpZiBkc3RfZDoKICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGRzdF9kKQotICAgIHNodXRpbC5tb3ZlKHNyYywgZHN0KQorICAgICMgRG9uJ3Qgb3ZlcndyaXRlIGV4aXN0aW5nIGZpbGVzLCBvdGhlcndpc2UgaW4gdGhlIGNhc2Ugb2YgYW4gdXBncmFkZQorICAgICMgdGhlIGRyeS1ydW4gd3JpdHRlbiBvdXQgcmVjaXBlIHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCBhbiB1bm1vZGlmaWVkCisgICAgIyB2ZXJzaW9uCisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRzdCk6CisgICAgICAgIHNodXRpbC5jb3B5KHNyYywgZHN0KQogCi1kZWYgX2NvcHlfZmlsZShzcmMsIGRzdCk6CitkZWYgX21vdmVfZmlsZShzcmMsIGRzdCwgZHJ5X3J1bl9vdXRkaXI9Tm9uZSwgYmFzZV9vdXRkaXI9Tm9uZSk6CisgICAgIiIiTW92ZSBhIGZpbGUuIENyZWF0ZXMgYWxsIHRoZSBkaXJlY3RvcnkgY29tcG9uZW50cyBvZiBkZXN0aW5hdGlvbiBwYXRoLiIiIgorICAgIGRyeV9ydW5fc3VmZml4ID0gJyAoZHJ5LXJ1biknIGlmIGRyeV9ydW5fb3V0ZGlyIGVsc2UgJycKKyAgICBsb2dnZXIuZGVidWcoJ01vdmluZyAlcyB0byAlcyVzJyAlIChzcmMsIGRzdCwgZHJ5X3J1bl9zdWZmaXgpKQorICAgIGlmIGRyeV9ydW5fb3V0ZGlyOgorICAgICAgICAjIFdlIHdhbnQgdG8gY29weSBoZXJlLCBub3QgbW92ZQorICAgICAgICBfZHJ5X3J1bl9jb3B5KHNyYywgZHN0LCBkcnlfcnVuX291dGRpciwgYmFzZV9vdXRkaXIpCisgICAgZWxzZToKKyAgICAgICAgZHN0X2QgPSBvcy5wYXRoLmRpcm5hbWUoZHN0KQorICAgICAgICBpZiBkc3RfZDoKKyAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihkc3RfZCkKKyAgICAgICAgc2h1dGlsLm1vdmUoc3JjLCBkc3QpCisKK2RlZiBfY29weV9maWxlKHNyYywgZHN0LCBkcnlfcnVuX291dGRpcj1Ob25lKToKICAgICAiIiJDb3B5IGEgZmlsZS4gQ3JlYXRlcyBhbGwgdGhlIGRpcmVjdG9yeSBjb21wb25lbnRzIG9mIGRlc3RpbmF0aW9uIHBhdGguIiIiCi0gICAgZHN0X2QgPSBvcy5wYXRoLmRpcm5hbWUoZHN0KQotICAgIGlmIGRzdF9kOgotICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoZHN0X2QpCi0gICAgc2h1dGlsLmNvcHkoc3JjLCBkc3QpCisgICAgZHJ5X3J1bl9zdWZmaXggPSAnIChkcnktcnVuKScgaWYgZHJ5X3J1bl9vdXRkaXIgZWxzZSAnJworICAgIGxvZ2dlci5kZWJ1ZygnQ29weWluZyAlcyB0byAlcyVzJyAlIChzcmMsIGRzdCwgZHJ5X3J1bl9zdWZmaXgpKQorICAgIGlmIGRyeV9ydW5fb3V0ZGlyOgorICAgICAgICBfZHJ5X3J1bl9jb3B5KHNyYywgZHN0LCBkcnlfcnVuX291dGRpciwgYmFzZV9vdXRkaXIpCisgICAgZWxzZToKKyAgICAgICAgZHN0X2QgPSBvcy5wYXRoLmRpcm5hbWUoZHN0KQorICAgICAgICBpZiBkc3RfZDoKKyAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihkc3RfZCkKKyAgICAgICAgc2h1dGlsLmNvcHkoc3JjLCBkc3QpCiAKIGRlZiBfZ2l0X2xzX3RyZWUocmVwb2RpciwgdHJlZWlzaD0nSEVBRCcsIHJlY3Vyc2l2ZT1GYWxzZSk6CiAgICAgIiIiTGlzdCBjb250ZW50cyBvZiBhIGdpdCB0cmVlaXNoIiIiCkBAIC0zOTcsNyArNDI3LDcgQEAKICAgICAiIiJFbnRyeSBwb2ludCBmb3IgdGhlIGRldnRvb2wgJ2V4dHJhY3QnIHN1YmNvbW1hbmQiIiIKICAgICBpbXBvcnQgYmIKIAotICAgIHRpbmZvaWwgPSBzZXR1cF90aW5mb2lsKGJhc2VwYXRoPWJhc2VwYXRoKQorICAgIHRpbmZvaWwgPSBzZXR1cF90aW5mb2lsKGJhc2VwYXRoPWJhc2VwYXRoLCB0cmFja2luZz1UcnVlKQogICAgIGlmIG5vdCB0aW5mb2lsOgogICAgICAgICAjIEVycm9yIGFscmVhZHkgc2hvd24KICAgICAgICAgcmV0dXJuIDEKQEAgLTQwNyw3ICs0MzcsNyBAQAogICAgICAgICAgICAgcmV0dXJuIDEKIAogICAgICAgICBzcmN0cmVlID0gb3MucGF0aC5hYnNwYXRoKGFyZ3Muc3JjdHJlZSkKLSAgICAgICAgaW5pdGlhbF9yZXYgPSBfZXh0cmFjdF9zb3VyY2Uoc3JjdHJlZSwgYXJncy5rZWVwX3RlbXAsIGFyZ3MuYnJhbmNoLCBGYWxzZSwgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlLCBhcmdzLmZpeGVkX3NldHVwLCByZCwgdGluZm9pbCkKKyAgICAgICAgaW5pdGlhbF9yZXYsIF8gPSBfZXh0cmFjdF9zb3VyY2Uoc3JjdHJlZSwgYXJncy5rZWVwX3RlbXAsIGFyZ3MuYnJhbmNoLCBGYWxzZSwgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlLCBhcmdzLmZpeGVkX3NldHVwLCByZCwgdGluZm9pbCwgbm9fb3ZlcnJpZGVzPWFyZ3Mubm9fb3ZlcnJpZGVzKQogICAgICAgICBsb2dnZXIuaW5mbygnU291cmNlIHRyZWUgZXh0cmFjdGVkIHRvICVzJyAlIHNyY3RyZWUpCiAKICAgICAgICAgaWYgaW5pdGlhbF9yZXY6CkBAIC00MjEsNyArNDUxLDcgQEAKICAgICAiIiJFbnRyeSBwb2ludCBmb3IgdGhlIGRldnRvb2wgJ3N5bmMnIHN1YmNvbW1hbmQiIiIKICAgICBpbXBvcnQgYmIKIAotICAgIHRpbmZvaWwgPSBzZXR1cF90aW5mb2lsKGJhc2VwYXRoPWJhc2VwYXRoKQorICAgIHRpbmZvaWwgPSBzZXR1cF90aW5mb2lsKGJhc2VwYXRoPWJhc2VwYXRoLCB0cmFja2luZz1UcnVlKQogICAgIGlmIG5vdCB0aW5mb2lsOgogICAgICAgICAjIEVycm9yIGFscmVhZHkgc2hvd24KICAgICAgICAgcmV0dXJuIDEKQEAgLTQzMSw3ICs0NjEsNyBAQAogICAgICAgICAgICAgcmV0dXJuIDEKIAogICAgICAgICBzcmN0cmVlID0gb3MucGF0aC5hYnNwYXRoKGFyZ3Muc3JjdHJlZSkKLSAgICAgICAgaW5pdGlhbF9yZXYgPSBfZXh0cmFjdF9zb3VyY2Uoc3JjdHJlZSwgYXJncy5rZWVwX3RlbXAsIGFyZ3MuYnJhbmNoLCBUcnVlLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UsIGFyZ3MuZml4ZWRfc2V0dXAsIHJkLCB0aW5mb2lsKQorICAgICAgICBpbml0aWFsX3JldiwgXyA9IF9leHRyYWN0X3NvdXJjZShzcmN0cmVlLCBhcmdzLmtlZXBfdGVtcCwgYXJncy5icmFuY2gsIFRydWUsIGNvbmZpZywgYmFzZXBhdGgsIHdvcmtzcGFjZSwgYXJncy5maXhlZF9zZXR1cCwgcmQsIHRpbmZvaWwsIG5vX292ZXJyaWRlcz1UcnVlKQogICAgICAgICBsb2dnZXIuaW5mbygnU291cmNlIHRyZWUgJXMgc3luY2hyb25pemVkJyAlIHNyY3RyZWUpCiAKICAgICAgICAgaWYgaW5pdGlhbF9yZXY6CkBAIC00NDIsNyArNDcyLDcgQEAKICAgICAgICAgdGluZm9pbC5zaHV0ZG93bigpCiAKIAotZGVmIF9leHRyYWN0X3NvdXJjZShzcmN0cmVlLCBrZWVwX3RlbXAsIGRldmJyYW5jaCwgc3luYywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlLCBmaXhlZF9zZXR1cCwgZCwgdGluZm9pbCk6CitkZWYgX2V4dHJhY3Rfc291cmNlKHNyY3RyZWUsIGtlZXBfdGVtcCwgZGV2YnJhbmNoLCBzeW5jLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UsIGZpeGVkX3NldHVwLCBkLCB0aW5mb2lsLCBub19vdmVycmlkZXM9RmFsc2UpOgogICAgICIiIkV4dHJhY3Qgc291cmNlcyBvZiBhIHJlY2lwZSIiIgogICAgIGltcG9ydCBvZS5yZWNpcGV1dGlscwogICAgIGltcG9ydCBvZS5wYXRjaApAQCAtNDcyLDYgKzUwMiwxNiBAQAogICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoc3JjdHJlZSkKICAgICAgICAgb3Mucm1kaXIoc3JjdHJlZSkKIAorICAgIGV4dHJhX292ZXJyaWRlcyA9IFtdCisgICAgaWYgbm90IG5vX292ZXJyaWRlczoKKyAgICAgICAgaGlzdG9yeSA9IGQudmFyaGlzdG9yeS52YXJpYWJsZSgnU1JDX1VSSScpCisgICAgICAgIGZvciBldmVudCBpbiBoaXN0b3J5OgorICAgICAgICAgICAgaWYgbm90ICdmbGFnJyBpbiBldmVudDoKKyAgICAgICAgICAgICAgICBpZiBldmVudFsnb3AnXS5zdGFydHN3aXRoKCgnX2FwcGVuZFsnLCAnX3ByZXBlbmRbJykpOgorICAgICAgICAgICAgICAgICAgICBleHRyYV9vdmVycmlkZXMuYXBwZW5kKGV2ZW50WydvcCddLnNwbGl0KCdbJylbMV0uc3BsaXQoJ10nKVswXSkKKyAgICAgICAgaWYgZXh0cmFfb3ZlcnJpZGVzOgorICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1NSQ19VUkkgY29udGFpbnMgc29tZSBjb25kaXRpb25hbCBhcHBlbmRzL3ByZXBlbmRzIC0gd2lsbCBjcmVhdGUgYnJhbmNoZXMgdG8gcmVwcmVzZW50IHRoZXNlJykKKwogICAgIGluaXRpYWxfcmV2ID0gTm9uZQogCiAgICAgYXBwZW5kZXhpc3RlZCA9IEZhbHNlCkBAIC01MTQsNiArNTU0LDggQEAKICAgICAgICAgICAgIGlmIG5vdCBpc19rZXJuZWxfeW9jdG86CiAgICAgICAgICAgICAgICAgZi53cml0ZSgnUEFUQ0hUT09MID0gImdpdCJcbicpCiAgICAgICAgICAgICAgICAgZi53cml0ZSgnUEFUQ0hfQ09NTUlUX0ZVTkNUSU9OUyA9ICIxIlxuJykKKyAgICAgICAgICAgIGlmIGV4dHJhX292ZXJyaWRlczoKKyAgICAgICAgICAgICAgICBmLndyaXRlKCdERVZUT09MX0VYVFJBX09WRVJSSURFUyA9ICIlcyJcbicgJSAnOicuam9pbihleHRyYV9vdmVycmlkZXMpKQogICAgICAgICAgICAgZi53cml0ZSgnaW5oZXJpdCBkZXZ0b29sLXNvdXJjZVxuJykKICAgICAgICAgICAgIGYud3JpdGUoJyMjIy0tLSBfZXh0cmFjdF9zb3VyY2VcbicpCiAKQEAgLTU0MiwxMSArNTg0LDE1IEBACiAgICAgICAgIGlmIG5vdCByZXM6CiAgICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoJ0V4dHJhY3Rpbmcgc291cmNlIGZvciAlcyBmYWlsZWQnICUgcG4pCiAKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnaW5pdGlhbF9yZXYnKSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgaW5pdGlhbF9yZXYgPSBmLnJlYWQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHRlbXBkaXIsICdpbml0aWFsX3JldicpLCAncicpIGFzIGY6CisgICAgICAgICAgICAgICAgaW5pdGlhbF9yZXYgPSBmLnJlYWQoKQogCi0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4odGVtcGRpciwgJ3NyY3N1YmRpcicpLCAncicpIGFzIGY6Ci0gICAgICAgICAgICBzcmNzdWJkaXIgPSBmLnJlYWQoKQorICAgICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnc3Jjc3ViZGlyJyksICdyJykgYXMgZjoKKyAgICAgICAgICAgICAgICBzcmNzdWJkaXIgPSBmLnJlYWQoKQorICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcignU29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCBzb3VyY2UgZXh0cmFjdGlvbiAtIHRoZSBkZXZ0b29sLXNvdXJjZSBjbGFzcyB3YXMgbm90IGFjdGl2ZSBvciBkaWQgbm90IGZ1bmN0aW9uIGNvcnJlY3RseTpcbiVzJyAlIHN0cihlKSkKKyAgICAgICAgc3Jjc3ViZGlyX3JlbCA9IG9zLnBhdGgucmVscGF0aChzcmNzdWJkaXIsIG9zLnBhdGguam9pbih0ZW1wZGlyLCAnd29ya2RpcicpKQogCiAgICAgICAgIHRlbXBkaXJfbG9jYWxkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ29lLWxvY2FsLWZpbGVzJykKICAgICAgICAgc3JjdHJlZV9sb2NhbGRpciA9IG9zLnBhdGguam9pbihzcmN0cmVlLCAnb2UtbG9jYWwtZmlsZXMnKQpAQCAtNjEzLDcgKzY1OSw3IEBACiAgICAgICAgICAgICBsb2dnZXIuaW5mbygnUHJlc2VydmluZyB0ZW1wb3JhcnkgZGlyZWN0b3J5ICVzJyAlIHRlbXBkaXIpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzaHV0aWwucm10cmVlKHRlbXBkaXIpCi0gICAgcmV0dXJuIGluaXRpYWxfcmV2CisgICAgcmV0dXJuIGluaXRpYWxfcmV2LCBzcmNzdWJkaXJfcmVsCiAKIGRlZiBfYWRkX21kNShjb25maWcsIHJlY2lwZW5hbWUsIGZpbGVuYW1lKToKICAgICAiIiJSZWNvcmQgY2hlY2tzdW0gb2YgYSBmaWxlIChvciByZWN1cnNpdmVseSBmb3IgYSBkaXJlY3RvcnkpIHRvIHRoZSBtZDUtZmlsZSBvZiB0aGUgd29ya3NwYWNlIiIiCkBAIC02NzAsMTIgKzcxNiwxMyBAQAogICAgICIiIkVudHJ5IHBvaW50IGZvciB0aGUgZGV2dG9vbCAnbW9kaWZ5JyBzdWJjb21tYW5kIiIiCiAgICAgaW1wb3J0IGJiCiAgICAgaW1wb3J0IG9lLnJlY2lwZXV0aWxzCisgICAgaW1wb3J0IG9lLnBhdGNoCiAKICAgICBpZiBhcmdzLnJlY2lwZW5hbWUgaW4gd29ya3NwYWNlOgogICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoInJlY2lwZSAlcyBpcyBhbHJlYWR5IGluIHlvdXIgd29ya3NwYWNlIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnJlY2lwZW5hbWUpCiAKLSAgICB0aW5mb2lsID0gc2V0dXBfdGluZm9pbChiYXNlcGF0aD1iYXNlcGF0aCkKKyAgICB0aW5mb2lsID0gc2V0dXBfdGluZm9pbChiYXNlcGF0aD1iYXNlcGF0aCwgdHJhY2tpbmc9VHJ1ZSkKICAgICB0cnk6CiAgICAgICAgIHJkID0gcGFyc2VfcmVjaXBlKGNvbmZpZywgdGluZm9pbCwgYXJncy5yZWNpcGVuYW1lLCBUcnVlKQogICAgICAgICBpZiBub3QgcmQ6CkBAIC03MTAsMTQgKzc1NywxNiBAQAogCiAgICAgICAgIGluaXRpYWxfcmV2ID0gTm9uZQogICAgICAgICBjb21taXRzID0gW10KKyAgICAgICAgY2hlY2tfY29tbWl0cyA9IEZhbHNlCiAgICAgICAgIGlmIG5vdCBhcmdzLm5vX2V4dHJhY3Q6Ci0gICAgICAgICAgICBpbml0aWFsX3JldiA9IF9leHRyYWN0X3NvdXJjZShzcmN0cmVlLCBhcmdzLmtlZXBfdGVtcCwgYXJncy5icmFuY2gsIEZhbHNlLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UsIGFyZ3MuZml4ZWRfc2V0dXAsIHJkLCB0aW5mb2lsKQorICAgICAgICAgICAgaW5pdGlhbF9yZXYsIF8gPSBfZXh0cmFjdF9zb3VyY2Uoc3JjdHJlZSwgYXJncy5rZWVwX3RlbXAsIGFyZ3MuYnJhbmNoLCBGYWxzZSwgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlLCBhcmdzLmZpeGVkX3NldHVwLCByZCwgdGluZm9pbCwgbm9fb3ZlcnJpZGVzPWFyZ3Mubm9fb3ZlcnJpZGVzKQogICAgICAgICAgICAgaWYgbm90IGluaXRpYWxfcmV2OgogICAgICAgICAgICAgICAgIHJldHVybiAxCiAgICAgICAgICAgICBsb2dnZXIuaW5mbygnU291cmNlIHRyZWUgZXh0cmFjdGVkIHRvICVzJyAlIHNyY3RyZWUpCiAgICAgICAgICAgICAjIEdldCBsaXN0IG9mIGNvbW1pdHMgc2luY2UgdGhpcyByZXZpc2lvbgogICAgICAgICAgICAgKHN0ZG91dCwgXykgPSBiYi5wcm9jZXNzLnJ1bignZ2l0IHJldi1saXN0IC0tcmV2ZXJzZSAlcy4uSEVBRCcgJSBpbml0aWFsX3JldiwgY3dkPXNyY3RyZWUpCiAgICAgICAgICAgICBjb21taXRzID0gc3Rkb3V0LnNwbGl0KCkKKyAgICAgICAgICAgIGNoZWNrX2NvbW1pdHMgPSBUcnVlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc3JjdHJlZSwgJy5naXQnKSk6CiAgICAgICAgICAgICAgICAgIyBDaGVjayBpZiBpdCdzIGEgdHJlZSBwcmV2aW91c2x5IGV4dHJhY3RlZCBieSB1cwpAQCAtNzI1LDYgKzc3NCw4IEBACiAgICAgICAgICAgICAgICAgICAgIChzdGRvdXQsIF8pID0gYmIucHJvY2Vzcy5ydW4oJ2dpdCBicmFuY2ggLS1jb250YWlucyBkZXZ0b29sLWJhc2UnLCBjd2Q9c3JjdHJlZSkKICAgICAgICAgICAgICAgICBleGNlcHQgYmIucHJvY2Vzcy5FeGVjdXRpb25FcnJvcjoKICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0ID0gJycKKyAgICAgICAgICAgICAgICBpZiBzdGRvdXQ6CisgICAgICAgICAgICAgICAgICAgIGNoZWNrX2NvbW1pdHMgPSBUcnVlCiAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gc3Rkb3V0LnNwbGl0bGluZXMoKToKICAgICAgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCcqJyk6CiAgICAgICAgICAgICAgICAgICAgICAgICAoc3Rkb3V0LCBfKSA9IGJiLnByb2Nlc3MucnVuKCdnaXQgcmV2LXBhcnNlIGRldnRvb2wtYmFzZScsIGN3ZD1zcmN0cmVlKQpAQCAtNzM0LDYgKzc4NSwzMyBAQAogICAgICAgICAgICAgICAgICAgICAoc3Rkb3V0LCBfKSA9IGJiLnByb2Nlc3MucnVuKCdnaXQgcmV2LXBhcnNlIEhFQUQnLCBjd2Q9c3JjdHJlZSkKICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbF9yZXYgPSBzdGRvdXQucnN0cmlwKCkKIAorICAgICAgICBicmFuY2hfcGF0Y2hlcyA9IHt9CisgICAgICAgIGlmIGNoZWNrX2NvbW1pdHM6CisgICAgICAgICAgICAjIENoZWNrIGlmIHRoZXJlIGFyZSBvdmVycmlkZSBicmFuY2hlcworICAgICAgICAgICAgKHN0ZG91dCwgXykgPSBiYi5wcm9jZXNzLnJ1bignZ2l0IGJyYW5jaCcsIGN3ZD1zcmN0cmVlKQorICAgICAgICAgICAgYnJhbmNoZXMgPSBbXQorICAgICAgICAgICAgZm9yIGxpbmUgaW4gc3Rkb3V0LnJzdHJpcCgpLnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgICAgICBicmFuY2huYW1lID0gbGluZVsyOl0ucnN0cmlwKCkKKyAgICAgICAgICAgICAgICBpZiBicmFuY2huYW1lLnN0YXJ0c3dpdGgob3ZlcnJpZGVfYnJhbmNoX3ByZWZpeCk6CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaGVzLmFwcGVuZChicmFuY2huYW1lKQorICAgICAgICAgICAgaWYgYnJhbmNoZXM6CisgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ1NSQ19VUkkgaXMgY29uZGl0aW9uYWxseSBvdmVycmlkZGVuIGluIHRoaXMgcmVjaXBlLCB0aHVzIHNldmVyYWwgJXMqIGJyYW5jaGVzIGhhdmUgYmVlbiBjcmVhdGVkLCBvbmUgZm9yIGVhY2ggb3ZlcnJpZGUgdGhhdCBtYWtlcyBjaGFuZ2VzIHRvIFNSQ19VUkkuIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IG1ha2UgY2hhbmdlcyB0byB0aGUgJXMgYnJhbmNoIGZpcnN0LCB0aGVuIGNoZWNrb3V0IGFuZCByZWJhc2UgZWFjaCAlcyogYnJhbmNoIGFuZCB1cGRhdGUgYW55IHVuaXF1ZSBwYXRjaGVzIHRoZXJlIChkdXBsaWNhdGVzIG9uIHRob3NlIGJyYW5jaGVzIHdpbGwgYmUgaWdub3JlZCBieSBkZXZ0b29sIGZpbmlzaC91cGRhdGUtcmVjaXBlKScgJSAob3ZlcnJpZGVfYnJhbmNoX3ByZWZpeCwgYXJncy5icmFuY2gsIG92ZXJyaWRlX2JyYW5jaF9wcmVmaXgpKQorICAgICAgICAgICAgYnJhbmNoZXMuaW5zZXJ0KDAsIGFyZ3MuYnJhbmNoKQorICAgICAgICAgICAgc2Vlbl9wYXRjaGVzID0gW10KKyAgICAgICAgICAgIGZvciBicmFuY2ggaW4gYnJhbmNoZXM6CisgICAgICAgICAgICAgICAgYnJhbmNoX3BhdGNoZXNbYnJhbmNoXSA9IFtdCisgICAgICAgICAgICAgICAgKHN0ZG91dCwgXykgPSBiYi5wcm9jZXNzLnJ1bignZ2l0IGxvZyBkZXZ0b29sLWJhc2UuLiVzJyAlIGJyYW5jaCwgY3dkPXNyY3RyZWUpCisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gc3Rkb3V0LnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgob2UucGF0Y2guR2l0QXBwbHlUcmVlLnBhdGNoX2xpbmVfcHJlZml4KToKKyAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdwYXRjaCA9IGxpbmVbbGVuKG9lLnBhdGNoLkdpdEFwcGx5VHJlZS5wYXRjaF9saW5lX3ByZWZpeCk6XS5zcGxpdCgnOicsIDEpWy0xXS5zdHJpcCgpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgb3JpZ3BhdGNoIGluIHNlZW5fcGF0Y2hlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVuX3BhdGNoZXMuYXBwZW5kKG9yaWdwYXRjaCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2hfcGF0Y2hlc1ticmFuY2hdLmFwcGVuZChvcmlncGF0Y2gpCisKKyAgICAgICAgIyBOZWVkIHRvIGdyYWIgdGhpcyBoZXJlIGluIGNhc2UgdGhlIHNvdXJjZSBpcyB3aXRoaW4gYSBzdWJkaXJlY3RvcnkKKyAgICAgICAgc3JjdHJlZWJhc2UgPSBzcmN0cmVlCisKICAgICAgICAgIyBDaGVjayB0aGF0IHJlY2lwZSBpc24ndCB1c2luZyBhIHNoYXJlZCB3b3JrZGlyCiAgICAgICAgIHMgPSBvcy5wYXRoLmFic3BhdGgocmQuZ2V0VmFyKCdTJykpCiAgICAgICAgIHdvcmtkaXIgPSBvcy5wYXRoLmFic3BhdGgocmQuZ2V0VmFyKCdXT1JLRElSJykpCkBAIC03NDgsNyArODI2LDggQEAKICAgICAgICAgICAgICMgTG9jYWwgZmlsZXMgY2FuIGJlIG1vZGlmaWVkL3RyYWNrZWQgaW4gc2VwYXJhdGUgc3ViZGlyIHVuZGVyIHNyY3RyZWUKICAgICAgICAgICAgICMgTW9zdGx5IHVzZWZ1bCBmb3IgcGFja2FnZXMgd2l0aCBTICE9IFdPUktESVIKICAgICAgICAgICAgIGYud3JpdGUoJ0ZJTEVTUEFUSF9wcmVwZW5kIDo9ICIlczoiXG4nICUKLSAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNyY3RyZWUsICdvZS1sb2NhbC1maWxlcycpKQorICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3JjdHJlZWJhc2UsICdvZS1sb2NhbC1maWxlcycpKQorICAgICAgICAgICAgZi53cml0ZSgnIyBzcmN0cmVlYmFzZTogJXNcbicgJSBzcmN0cmVlYmFzZSkKIAogICAgICAgICAgICAgZi53cml0ZSgnXG5pbmhlcml0IGV4dGVybmFsc3JjXG4nKQogICAgICAgICAgICAgZi53cml0ZSgnIyBOT1RFOiBXZSB1c2UgcG4tIG92ZXJyaWRlcyBoZXJlIHRvIGF2b2lkIGFmZmVjdGluZyBtdWx0aXBsZSB2YXJpYW50cyBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgcmVjaXBlIHVzZXMgQkJDTEFTU0VYVEVORFxuJykKQEAgLTc3Miw2ICs4NTEsMTEgQEAKICAgICAgICAgICAgICAgICBmLndyaXRlKCdcbiMgaW5pdGlhbF9yZXY6ICVzXG4nICUgaW5pdGlhbF9yZXYpCiAgICAgICAgICAgICAgICAgZm9yIGNvbW1pdCBpbiBjb21taXRzOgogICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcjIGNvbW1pdDogJXNcbicgJSBjb21taXQpCisgICAgICAgICAgICBpZiBicmFuY2hfcGF0Y2hlczoKKyAgICAgICAgICAgICAgICBmb3IgYnJhbmNoIGluIGJyYW5jaF9wYXRjaGVzOgorICAgICAgICAgICAgICAgICAgICBpZiBicmFuY2ggPT0gYXJncy5icmFuY2g6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcjIHBhdGNoZXNfJXM6ICVzXG4nICUgKGJyYW5jaCwgJywnLmpvaW4oYnJhbmNoX3BhdGNoZXNbYnJhbmNoXSkpKQogCiAgICAgICAgIHVwZGF0ZV91bmxvY2tlZHNpZ3MoYmFzZXBhdGgsIHdvcmtzcGFjZSwgYXJncy5maXhlZF9zZXR1cCwgW3BuXSkKIApAQCAtOTc3LDIxICsxMDYxLDI5IEBACiAgICAgcmV0dXJuIDAKIAogCi1kZWYgX2dldF9wYXRjaHNldF9yZXZzKHNyY3RyZWUsIHJlY2lwZV9wYXRoLCBpbml0aWFsX3Jldj1Ob25lKToKK2RlZiBfZ2V0X3BhdGNoc2V0X3JldnMoc3JjdHJlZSwgcmVjaXBlX3BhdGgsIGluaXRpYWxfcmV2PU5vbmUsIGZvcmNlX3BhdGNoX3JlZnJlc2g9RmFsc2UpOgogICAgICIiIkdldCBpbml0aWFsIGFuZCB1cGRhdGUgcmV2IG9mIGEgcmVjaXBlLiBUaGVzZSBhcmUgdGhlIHN0YXJ0IHBvaW50IG9mIHRoZQogICAgIHdob2xlIHBhdGNoc2V0IGFuZCBzdGFydCBwb2ludCBmb3IgdGhlIHBhdGNoZXMgdG8gYmUgcmUtZ2VuZXJhdGVkL3VwZGF0ZWQuCiAgICAgIiIiCiAgICAgaW1wb3J0IGJiCiAKKyAgICAjIEdldCBjdXJyZW50IGJyYW5jaAorICAgIHN0ZG91dCwgXyA9IGJiLnByb2Nlc3MucnVuKCdnaXQgcmV2LXBhcnNlIC0tYWJicmV2LXJlZiBIRUFEJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9c3JjdHJlZSkKKyAgICBicmFuY2huYW1lID0gc3Rkb3V0LnJzdHJpcCgpCisKICAgICAjIFBhcnNlIGluaXRpYWwgcmV2IGZyb20gcmVjaXBlIGlmIG5vdCBzcGVjaWZpZWQKICAgICBjb21taXRzID0gW10KKyAgICBwYXRjaGVzID0gW10KICAgICB3aXRoIG9wZW4ocmVjaXBlX3BhdGgsICdyJykgYXMgZjoKICAgICAgICAgZm9yIGxpbmUgaW4gZjoKICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnIyBpbml0aWFsX3JldjonKToKICAgICAgICAgICAgICAgICBpZiBub3QgaW5pdGlhbF9yZXY6CiAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxfcmV2ID0gbGluZS5zcGxpdCgnOicpWy0xXS5zdHJpcCgpCi0gICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnIyBjb21taXQ6Jyk6CisgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnIyBjb21taXQ6JykgYW5kIG5vdCBmb3JjZV9wYXRjaF9yZWZyZXNoOgogICAgICAgICAgICAgICAgIGNvbW1pdHMuYXBwZW5kKGxpbmUuc3BsaXQoJzonKVstMV0uc3RyaXAoKSkKKyAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCcjIHBhdGNoZXNfJXM6JyAlIGJyYW5jaG5hbWUpOgorICAgICAgICAgICAgICAgIHBhdGNoZXMgPSBsaW5lLnNwbGl0KCc6JylbLTFdLnN0cmlwKCkuc3BsaXQoJywnKQogCiAgICAgdXBkYXRlX3JldiA9IGluaXRpYWxfcmV2CiAgICAgY2hhbmdlZF9yZXZzID0gTm9uZQpAQCAtMTAxMCw3ICsxMTAyLDcgQEAKICAgICAgICAgZXhjZXB0IGJiLnByb2Nlc3MuRXhlY3V0aW9uRXJyb3IgYXMgZXJyOgogICAgICAgICAgICAgc3Rkb3V0ID0gTm9uZQogCi0gICAgICAgIGlmIHN0ZG91dCBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgc3Rkb3V0IGlzIG5vdCBOb25lIGFuZCBub3QgZm9yY2VfcGF0Y2hfcmVmcmVzaDoKICAgICAgICAgICAgIGNoYW5nZWRfcmV2cyA9IFtdCiAgICAgICAgICAgICBmb3IgbGluZSBpbiBzdGRvdXQuc3BsaXRsaW5lcygpOgogICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnKyAnKToKQEAgLTEwMTgsNyArMTExMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIHJldiBpbiBuZXdjb21taXRzOgogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZF9yZXZzLmFwcGVuZChyZXYpCiAKLSAgICByZXR1cm4gaW5pdGlhbF9yZXYsIHVwZGF0ZV9yZXYsIGNoYW5nZWRfcmV2cworICAgIHJldHVybiBpbml0aWFsX3JldiwgdXBkYXRlX3JldiwgY2hhbmdlZF9yZXZzLCBwYXRjaGVzCiAKIGRlZiBfcmVtb3ZlX2ZpbGVfZW50cmllcyhzcmN1cmksIGZpbGVsaXN0KToKICAgICAiIiJSZW1vdmUgZmlsZTovLyBlbnRyaWVzIGZyb20gU1JDX1VSSSIiIgpAQCAtMTA0NCw4ICsxMTM2LDExIEBACiAgICAgICAgICAgICBzcmN1cmkuaW5zZXJ0KGksIG5ld2VudHJ5KQogICAgICAgICAgICAgYnJlYWsKIAotZGVmIF9yZW1vdmVfc291cmNlX2ZpbGVzKGFwcGVuZCwgZmlsZXMsIGRlc3RwYXRoKToKK2RlZiBfcmVtb3ZlX3NvdXJjZV9maWxlcyhhcHBlbmQsIGZpbGVzLCBkZXN0cGF0aCwgbm9fcmVwb3J0X3JlbW92ZT1GYWxzZSwgZHJ5X3J1bj1GYWxzZSk6CiAgICAgIiIiVW5saW5rIGV4aXN0aW5nIHBhdGNoIGZpbGVzIiIiCisKKyAgICBkcnlfcnVuX3N1ZmZpeCA9ICcgKGRyeS1ydW4pJyBpZiBkcnlfcnVuIGVsc2UgJycKKwogICAgIGZvciBwYXRoIGluIGZpbGVzOgogICAgICAgICBpZiBhcHBlbmQ6CiAgICAgICAgICAgICBpZiBub3QgZGVzdHBhdGg6CkBAIC0xMDUzLDE5ICsxMTQ4LDIxIEBACiAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGRlc3RwYXRoLCBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpKQogCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGgpOgotICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1JlbW92aW5nIGZpbGUgJXMnICUgcGF0aCkKLSAgICAgICAgICAgICMgRklYTUUgImdpdCBybSIgaGVyZSB3b3VsZCBiZSBuaWNlIGlmIHRoZSBmaWxlIGluIHF1ZXN0aW9uIGlzCi0gICAgICAgICAgICAjICAgICAgIHRyYWNrZWQKLSAgICAgICAgICAgICMgRklYTUUgdGhlcmUncyBhIGNoYW5jZSB0aGF0IHRoaXMgZmlsZSBpcyByZWZlcnJlZCB0byBieQotICAgICAgICAgICAgIyAgICAgICBhbm90aGVyIHJlY2lwZSwgaW4gd2hpY2ggY2FzZSBkZWxldGluZyB3b3VsZG4ndCBiZSB0aGUKLSAgICAgICAgICAgICMgICAgICAgcmlnaHQgdGhpbmcgdG8gZG8KLSAgICAgICAgICAgIG9zLnJlbW92ZShwYXRoKQotICAgICAgICAgICAgIyBSZW1vdmUgZGlyZWN0b3J5IGlmIGVtcHR5Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgb3Mucm1kaXIob3MucGF0aC5kaXJuYW1lKHBhdGgpKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgb3NlOgotICAgICAgICAgICAgICAgIGlmIG9zZS5lcnJubyAhPSBlcnJuby5FTk9URU1QVFk6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBpZiBub3Qgbm9fcmVwb3J0X3JlbW92ZToKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnUmVtb3ZpbmcgZmlsZSAlcyVzJyAlIChwYXRoLCBkcnlfcnVuX3N1ZmZpeCkpCisgICAgICAgICAgICBpZiBub3QgZHJ5X3J1bjoKKyAgICAgICAgICAgICAgICAjIEZJWE1FICJnaXQgcm0iIGhlcmUgd291bGQgYmUgbmljZSBpZiB0aGUgZmlsZSBpbiBxdWVzdGlvbiBpcworICAgICAgICAgICAgICAgICMgICAgICAgdHJhY2tlZAorICAgICAgICAgICAgICAgICMgRklYTUUgdGhlcmUncyBhIGNoYW5jZSB0aGF0IHRoaXMgZmlsZSBpcyByZWZlcnJlZCB0byBieQorICAgICAgICAgICAgICAgICMgICAgICAgYW5vdGhlciByZWNpcGUsIGluIHdoaWNoIGNhc2UgZGVsZXRpbmcgd291bGRuJ3QgYmUgdGhlCisgICAgICAgICAgICAgICAgIyAgICAgICByaWdodCB0aGluZyB0byBkbworICAgICAgICAgICAgICAgIG9zLnJlbW92ZShwYXRoKQorICAgICAgICAgICAgICAgICMgUmVtb3ZlIGRpcmVjdG9yeSBpZiBlbXB0eQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgb3Mucm1kaXIob3MucGF0aC5kaXJuYW1lKHBhdGgpKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG9zZToKKyAgICAgICAgICAgICAgICAgICAgaWYgb3NlLmVycm5vICE9IGVycm5vLkVOT1RFTVBUWToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAKIAogZGVmIF9leHBvcnRfcGF0Y2hlcyhzcmN0cmVlLCByZCwgc3RhcnRfcmV2LCBkZXN0ZGlyLCBjaGFuZ2VkX3JldnM9Tm9uZSk6CkBAIC0xMDg1LDYgKzExODIsNyBAQAogCiAgICAgZXhpc3RpbmdfcGF0Y2hlcyA9IGRpY3QoKG9zLnBhdGguYmFzZW5hbWUocGF0aCksIHBhdGgpIGZvciBwYXRoIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2UucmVjaXBldXRpbHMuZ2V0X3JlY2lwZV9wYXRjaGVzKHJkKSkKKyAgICBsb2dnZXIuZGVidWcoJ0V4aXN0aW5nIHBhdGNoZXM6ICVzJyAlIGV4aXN0aW5nX3BhdGNoZXMpCiAKICAgICAjIEdlbmVyYXRlIHBhdGNoZXMgZnJvbSBHaXQsIGV4Y2x1ZGUgbG9jYWwgZmlsZXMgZGlyZWN0b3J5CiAgICAgcGF0Y2hfcGF0aHNwZWMgPSBfZ2l0X2V4Y2x1ZGVfcGF0aChzcmN0cmVlLCAnb2UtbG9jYWwtZmlsZXMnKQpAQCAtMTE2Niw3ICsxMjY0LDcgQEAKICAgICByZXR1cm4gRmFsc2UKIAogCi1kZWYgX2V4cG9ydF9sb2NhbF9maWxlcyhzcmN0cmVlLCByZCwgZGVzdGRpcik6CitkZWYgX2V4cG9ydF9sb2NhbF9maWxlcyhzcmN0cmVlLCByZCwgZGVzdGRpciwgc3JjdHJlZWJhc2UpOgogICAgICIiIkNvcHkgbG9jYWwgZmlsZXMgZnJvbSBzcmN0cmVlIHRvIGdpdmVuIGxvY2F0aW9uLgogICAgICAgIFJldHVybnMgdGhyZWUtdHVwbGUgb2YgZGljdHM6CiAgICAgICAgICAxLiB1cGRhdGVkIC0gZmlsZXMgdGhhdCBhbHJlYWR5IGV4aXN0IGluIFNSQ1VSSQpAQCAtMTE4Niw3ICsxMjg0LDcgQEAKICAgICB1cGRhdGVkID0gT3JkZXJlZERpY3QoKQogICAgIGFkZGVkID0gT3JkZXJlZERpY3QoKQogICAgIHJlbW92ZWQgPSBPcmRlcmVkRGljdCgpCi0gICAgbG9jYWxfZmlsZXNfZGlyID0gb3MucGF0aC5qb2luKHNyY3RyZWUsICdvZS1sb2NhbC1maWxlcycpCisgICAgbG9jYWxfZmlsZXNfZGlyID0gb3MucGF0aC5qb2luKHNyY3RyZWViYXNlLCAnb2UtbG9jYWwtZmlsZXMnKQogICAgIGdpdF9maWxlcyA9IF9naXRfbHNfdHJlZShzcmN0cmVlKQogICAgIGlmICdvZS1sb2NhbC1maWxlcycgaW4gZ2l0X2ZpbGVzOgogICAgICAgICAjIElmIHRyYWNrZWQgYnkgR2l0LCB0YWtlIHRoZSBmaWxlcyBmcm9tIHNyY3RyZWUgSEVBRC4gRmlyc3QgZ2V0CkBAIC0xMTk5LDkgKzEyOTcsOSBAQAogICAgICAgICBuZXdfc2V0ID0gbGlzdChfZ2l0X2xzX3RyZWUoc3JjdHJlZSwgdHJlZSwgVHJ1ZSkua2V5cygpKQogICAgIGVsaWYgb3MucGF0aC5pc2Rpcihsb2NhbF9maWxlc19kaXIpOgogICAgICAgICAjIElmIG5vdCB0cmFja2VkIGJ5IEdpdCwganVzdCBjb3B5IGZyb20gd29ya2luZyBjb3B5Ci0gICAgICAgIG5ld19zZXQgPSBfbHNfdHJlZShvcy5wYXRoLmpvaW4oc3JjdHJlZSwgJ29lLWxvY2FsLWZpbGVzJykpCisgICAgICAgIG5ld19zZXQgPSBfbHNfdHJlZShsb2NhbF9maWxlc19kaXIpCiAgICAgICAgIGJiLnByb2Nlc3MucnVuKFsnY3AnLCAnLWF4JywKLSAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzcmN0cmVlLCAnb2UtbG9jYWwtZmlsZXMnLCAnLicpLCBkZXN0ZGlyXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihsb2NhbF9maWxlc19kaXIsICcuJyksIGRlc3RkaXJdKQogICAgIGVsc2U6CiAgICAgICAgIG5ld19zZXQgPSBbXQogCkBAIC0xMjY2LDEzICsxMzY0LDE2IEBACiAgICAgcmV0dXJuIG9zLnBhdGguam9pbihyZWNpcGVkaXIsIHJkLmdldFZhcignQlBOJykpCiAKIAotZGVmIF91cGRhdGVfcmVjaXBlX3NyY3JldihzcmN0cmVlLCByZCwgYXBwZW5kbGF5ZXJkaXIsIHdpbGRjYXJkX3ZlcnNpb24sIG5vX3JlbW92ZSk6CitkZWYgX3VwZGF0ZV9yZWNpcGVfc3JjcmV2KHJlY2lwZW5hbWUsIHdvcmtzcGFjZSwgc3JjdHJlZSwgcmQsIGFwcGVuZGxheWVyZGlyLCB3aWxkY2FyZF92ZXJzaW9uLCBub19yZW1vdmUsIG5vX3JlcG9ydF9yZW1vdmUsIGRyeV9ydW5fb3V0ZGlyPU5vbmUpOgogICAgICIiIkltcGxlbWVudCB0aGUgJ3NyY3JldicgbW9kZSBvZiB1cGRhdGUtcmVjaXBlIiIiCiAgICAgaW1wb3J0IGJiCiAgICAgaW1wb3J0IG9lLnJlY2lwZXV0aWxzCiAKKyAgICBkcnlfcnVuX3N1ZmZpeCA9ICcgKGRyeS1ydW4pJyBpZiBkcnlfcnVuX291dGRpciBlbHNlICcnCisKICAgICByZWNpcGVmaWxlID0gcmQuZ2V0VmFyKCdGSUxFJykKLSAgICBsb2dnZXIuaW5mbygnVXBkYXRpbmcgU1JDUkVWIGluIHJlY2lwZSAlcycgJSBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpKQorICAgIHJlY2lwZWRpciA9IG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkKKyAgICBsb2dnZXIuaW5mbygnVXBkYXRpbmcgU1JDUkVWIGluIHJlY2lwZSAlcyVzJyAlIChyZWNpcGVkaXIsIGRyeV9ydW5fc3VmZml4KSkKIAogICAgICMgR2V0IEhFQUQgcmV2aXNpb24KICAgICB0cnk6CkBAIC0xMjkyLDkgKzEzOTMsMTEgQEAKICAgICBzcmN1cmkgPSBvcmlnX3NyY191cmkuc3BsaXQoKQogICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbCcpCiAgICAgdXBkYXRlX3NyY3VyaSA9IEZhbHNlCisgICAgYXBwZW5kZmlsZSA9IE5vbmUKICAgICB0cnk6CiAgICAgICAgIGxvY2FsX2ZpbGVzX2RpciA9IHRlbXBmaWxlLm1rZHRlbXAoZGlyPXRlbXBkaXIpCi0gICAgICAgIHVwZF9mLCBuZXdfZiwgZGVsX2YgPSBfZXhwb3J0X2xvY2FsX2ZpbGVzKHNyY3RyZWUsIHJkLCBsb2NhbF9maWxlc19kaXIpCisgICAgICAgIHNyY3RyZWViYXNlID0gd29ya3NwYWNlW3JlY2lwZW5hbWVdWydzcmN0cmVlYmFzZSddCisgICAgICAgIHVwZF9mLCBuZXdfZiwgZGVsX2YgPSBfZXhwb3J0X2xvY2FsX2ZpbGVzKHNyY3RyZWUsIHJkLCBsb2NhbF9maWxlc19kaXIsIHNyY3RyZWViYXNlKQogICAgICAgICBpZiBub3Qgbm9fcmVtb3ZlOgogICAgICAgICAgICAgIyBGaW5kIGxpc3Qgb2YgZXhpc3RpbmcgcGF0Y2hlcyBpbiByZWNpcGUgZmlsZQogICAgICAgICAgICAgcGF0Y2hlc19kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKGRpcj10ZW1wZGlyKQpAQCAtMTMxNiwyOSArMTQxOSwzNiBAQAogICAgICAgICAgICAgaWYgdXBkYXRlX3NyY3VyaToKICAgICAgICAgICAgICAgICByZW1vdmV2YWx1ZXMgID0geydTUkNfVVJJJzogcmVtb3ZlZGVudHJpZXN9CiAgICAgICAgICAgICAgICAgcGF0Y2hmaWVsZHNbJ1NSQ19VUkknXSA9ICdcXFxuICAgICcuam9pbihzcmN1cmkpCi0gICAgICAgICAgICBfLCBkZXN0cGF0aCA9IG9lLnJlY2lwZXV0aWxzLmJiYXBwZW5kX3JlY2lwZSgKLSAgICAgICAgICAgICAgICAgICAgcmQsIGFwcGVuZGxheWVyZGlyLCBmaWxlcywgd2lsZGNhcmR2ZXI9d2lsZGNhcmRfdmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgZXh0cmFsaW5lcz1wYXRjaGZpZWxkcywgcmVtb3ZldmFsdWVzPXJlbW92ZXZhbHVlcykKKyAgICAgICAgICAgIGlmIGRyeV9ydW5fb3V0ZGlyOgorICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdDcmVhdGluZyBiYmFwcGVuZCAoZHJ5LXJ1biknKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhcHBlbmRmaWxlLCBkZXN0cGF0aCA9IG9lLnJlY2lwZXV0aWxzLmJiYXBwZW5kX3JlY2lwZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIHJkLCBhcHBlbmRsYXllcmRpciwgZmlsZXMsIHdpbGRjYXJkdmVyPXdpbGRjYXJkX3ZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWxpbmVzPXBhdGNoZmllbGRzLCByZW1vdmV2YWx1ZXM9cmVtb3ZldmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3Rfb3V0cHV0PWRyeV9ydW5fb3V0ZGlyKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZmlsZXNfZGlyID0gX2RldGVybWluZV9maWxlc19kaXIocmQpCiAgICAgICAgICAgICBmb3IgYmFzZXBhdGgsIHBhdGggaW4gdXBkX2YuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnVXBkYXRpbmcgZmlsZSAlcycgJSBiYXNlcGF0aCkKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnVXBkYXRpbmcgZmlsZSAlcyVzJyAlIChiYXNlcGF0aCwgZHJ5X3J1bl9zdWZmaXgpKQogICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNhYnMoYmFzZXBhdGgpOgogICAgICAgICAgICAgICAgICAgICAjIE9yaWdpbmFsIGZpbGUgKHByb2JhYmx5IHdpdGggc3ViZGlyIHBvaW50aW5nIGluc2lkZSBzb3VyY2UgdHJlZSkKICAgICAgICAgICAgICAgICAgICAgIyBzbyB3ZSBkbyBub3Qgd2FudCB0byBtb3ZlIGl0LCBqdXN0IGNvcHkKLSAgICAgICAgICAgICAgICAgICAgX2NvcHlfZmlsZShiYXNlcGF0aCwgcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgX2NvcHlfZmlsZShiYXNlcGF0aCwgcGF0aCwgZHJ5X3J1bl9vdXRkaXI9ZHJ5X3J1bl9vdXRkaXIsIGJhc2Vfb3V0ZGlyPXJlY2lwZWRpcikKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBfbW92ZV9maWxlKG9zLnBhdGguam9pbihsb2NhbF9maWxlc19kaXIsIGJhc2VwYXRoKSwgcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgX21vdmVfZmlsZShvcy5wYXRoLmpvaW4obG9jYWxfZmlsZXNfZGlyLCBiYXNlcGF0aCksIHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJ5X3J1bl9vdXRkaXI9ZHJ5X3J1bl9vdXRkaXIsIGJhc2Vfb3V0ZGlyPXJlY2lwZWRpcikKICAgICAgICAgICAgICAgICB1cGRhdGVfc3JjdXJpPSBUcnVlCiAgICAgICAgICAgICBmb3IgYmFzZXBhdGgsIHBhdGggaW4gbmV3X2YuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnQWRkaW5nIG5ldyBmaWxlICVzJyAlIGJhc2VwYXRoKQorICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdBZGRpbmcgbmV3IGZpbGUgJXMlcycgJSAoYmFzZXBhdGgsIGRyeV9ydW5fc3VmZml4KSkKICAgICAgICAgICAgICAgICBfbW92ZV9maWxlKG9zLnBhdGguam9pbihsb2NhbF9maWxlc19kaXIsIGJhc2VwYXRoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihmaWxlc19kaXIsIGJhc2VwYXRoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihmaWxlc19kaXIsIGJhc2VwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyeV9ydW5fb3V0ZGlyPWRyeV9ydW5fb3V0ZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZV9vdXRkaXI9cmVjaXBlZGlyKQogICAgICAgICAgICAgICAgIHNyY3VyaS5hcHBlbmQoJ2ZpbGU6Ly8lcycgJSBiYXNlcGF0aCkKICAgICAgICAgICAgICAgICB1cGRhdGVfc3JjdXJpID0gVHJ1ZQogICAgICAgICAgICAgaWYgdXBkYXRlX3NyY3VyaToKICAgICAgICAgICAgICAgICBwYXRjaGZpZWxkc1snU1JDX1VSSSddID0gJyAnLmpvaW4oc3JjdXJpKQotICAgICAgICAgICAgb2UucmVjaXBldXRpbHMucGF0Y2hfcmVjaXBlKHJkLCByZWNpcGVmaWxlLCBwYXRjaGZpZWxkcykKKyAgICAgICAgICAgIHJldCA9IG9lLnJlY2lwZXV0aWxzLnBhdGNoX3JlY2lwZShyZCwgcmVjaXBlZmlsZSwgcGF0Y2hmaWVsZHMsIHJlZGlyZWN0X291dHB1dD1kcnlfcnVuX291dGRpcikKICAgICBmaW5hbGx5OgogICAgICAgICBzaHV0aWwucm10cmVlKHRlbXBkaXIpCiAgICAgaWYgbm90ICdnaXQ6Ly8nIGluIG9yaWdfc3JjX3VyaToKQEAgLTEzNDYsNDcgKzE0NTYsNjIgQEAKICAgICAgICAgICAgICAgICAgICAgJ3BvaW50IHRvIGEgZ2l0IHJlcG9zaXRvcnkgd2hlcmUgeW91IGhhdmUgcHVzaGVkIHlvdXIgJwogICAgICAgICAgICAgICAgICAgICAnY2hhbmdlcycpCiAKLSAgICBfcmVtb3ZlX3NvdXJjZV9maWxlcyhhcHBlbmRsYXllcmRpciwgcmVtb3ZlX2ZpbGVzLCBkZXN0cGF0aCkKLSAgICByZXR1cm4gVHJ1ZQorICAgIF9yZW1vdmVfc291cmNlX2ZpbGVzKGFwcGVuZGxheWVyZGlyLCByZW1vdmVfZmlsZXMsIGRlc3RwYXRoLCBub19yZXBvcnRfcmVtb3ZlLCBkcnlfcnVuPWRyeV9ydW5fb3V0ZGlyKQorICAgIHJldHVybiBUcnVlLCBhcHBlbmRmaWxlLCByZW1vdmVfZmlsZXMKIAotZGVmIF91cGRhdGVfcmVjaXBlX3BhdGNoKHJlY2lwZW5hbWUsIHdvcmtzcGFjZSwgc3JjdHJlZSwgcmQsIGFwcGVuZGxheWVyZGlyLCB3aWxkY2FyZF92ZXJzaW9uLCBub19yZW1vdmUsIGluaXRpYWxfcmV2KToKK2RlZiBfdXBkYXRlX3JlY2lwZV9wYXRjaChyZWNpcGVuYW1lLCB3b3Jrc3BhY2UsIHNyY3RyZWUsIHJkLCBhcHBlbmRsYXllcmRpciwgd2lsZGNhcmRfdmVyc2lvbiwgbm9fcmVtb3ZlLCBub19yZXBvcnRfcmVtb3ZlLCBpbml0aWFsX3JldiwgZHJ5X3J1bl9vdXRkaXI9Tm9uZSwgZm9yY2VfcGF0Y2hfcmVmcmVzaD1GYWxzZSk6CiAgICAgIiIiSW1wbGVtZW50IHRoZSAncGF0Y2gnIG1vZGUgb2YgdXBkYXRlLXJlY2lwZSIiIgogICAgIGltcG9ydCBiYgogICAgIGltcG9ydCBvZS5yZWNpcGV1dGlscwogCiAgICAgcmVjaXBlZmlsZSA9IHJkLmdldFZhcignRklMRScpCisgICAgcmVjaXBlZGlyID0gb3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpCiAgICAgYXBwZW5kID0gd29ya3NwYWNlW3JlY2lwZW5hbWVdWydiYmFwcGVuZCddCiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGFwcGVuZCk6CiAgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcigndW5hYmxlIHRvIGZpbmQgd29ya3NwYWNlIGJiYXBwZW5kIGZvciByZWNpcGUgJXMnICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZW5hbWUpCiAKLSAgICBpbml0aWFsX3JldiwgdXBkYXRlX3JldiwgY2hhbmdlZF9yZXZzID0gX2dldF9wYXRjaHNldF9yZXZzKHNyY3RyZWUsIGFwcGVuZCwgaW5pdGlhbF9yZXYpCisgICAgaW5pdGlhbF9yZXYsIHVwZGF0ZV9yZXYsIGNoYW5nZWRfcmV2cywgZmlsdGVyX3BhdGNoZXMgPSBfZ2V0X3BhdGNoc2V0X3JldnMoc3JjdHJlZSwgYXBwZW5kLCBpbml0aWFsX3JldiwgZm9yY2VfcGF0Y2hfcmVmcmVzaCkKICAgICBpZiBub3QgaW5pdGlhbF9yZXY6CiAgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcignVW5hYmxlIHRvIGZpbmQgaW5pdGlhbCByZXZpc2lvbiAtIHBsZWFzZSBzcGVjaWZ5ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpdCB3aXRoIC0taW5pdGlhbC1yZXYnKQogCisgICAgYXBwZW5kZmlsZSA9IE5vbmUKICAgICBkbF9kaXIgPSByZC5nZXRWYXIoJ0RMX0RJUicpCiAgICAgaWYgbm90IGRsX2Rpci5lbmRzd2l0aCgnLycpOgogICAgICAgICBkbF9kaXIgKz0gJy8nCiAKKyAgICBkcnlfcnVuX3N1ZmZpeCA9ICcgKGRyeS1ydW4pJyBpZiBkcnlfcnVuX291dGRpciBlbHNlICcnCisKICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2wnKQogICAgIHRyeToKICAgICAgICAgbG9jYWxfZmlsZXNfZGlyID0gdGVtcGZpbGUubWtkdGVtcChkaXI9dGVtcGRpcikKLSAgICAgICAgdXBkX2YsIG5ld19mLCBkZWxfZiA9IF9leHBvcnRfbG9jYWxfZmlsZXMoc3JjdHJlZSwgcmQsIGxvY2FsX2ZpbGVzX2RpcikKKyAgICAgICAgaWYgZmlsdGVyX3BhdGNoZXM6CisgICAgICAgICAgICB1cGRfZiA9IHt9CisgICAgICAgICAgICBuZXdfZiA9IHt9CisgICAgICAgICAgICBkZWxfZiA9IHt9CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzcmN0cmVlYmFzZSA9IHdvcmtzcGFjZVtyZWNpcGVuYW1lXVsnc3JjdHJlZWJhc2UnXQorICAgICAgICAgICAgdXBkX2YsIG5ld19mLCBkZWxfZiA9IF9leHBvcnRfbG9jYWxfZmlsZXMoc3JjdHJlZSwgcmQsIGxvY2FsX2ZpbGVzX2Rpciwgc3JjdHJlZWJhc2UpCiAKICAgICAgICAgcmVtb3ZlX2ZpbGVzID0gW10KICAgICAgICAgaWYgbm90IG5vX3JlbW92ZToKICAgICAgICAgICAgICMgR2V0IGFsbCBwYXRjaGVzIGZyb20gc291cmNlIHRyZWUgYW5kIGNoZWNrIGlmIGFueSBzaG91bGQgYmUgcmVtb3ZlZAogICAgICAgICAgICAgYWxsX3BhdGNoZXNfZGlyID0gdGVtcGZpbGUubWtkdGVtcChkaXI9dGVtcGRpcikKLSAgICAgICAgICAgIHVwZF9wLCBuZXdfcCwgZGVsX3AgPSBfZXhwb3J0X3BhdGNoZXMoc3JjdHJlZSwgcmQsIGluaXRpYWxfcmV2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxfcGF0Y2hlc19kaXIpCisgICAgICAgICAgICBfLCBfLCBkZWxfcCA9IF9leHBvcnRfcGF0Y2hlcyhzcmN0cmVlLCByZCwgaW5pdGlhbF9yZXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxfcGF0Y2hlc19kaXIpCiAgICAgICAgICAgICAjIFJlbW92ZSBkZWxldGVkIGxvY2FsIGZpbGVzIGFuZCAgcGF0Y2hlcwogICAgICAgICAgICAgcmVtb3ZlX2ZpbGVzID0gbGlzdChkZWxfZi52YWx1ZXMoKSkgKyBsaXN0KGRlbF9wLnZhbHVlcygpKQogCiAgICAgICAgICMgR2V0IHVwZGF0ZWQgcGF0Y2hlcyBmcm9tIHNvdXJjZSB0cmVlCiAgICAgICAgIHBhdGNoZXNfZGlyID0gdGVtcGZpbGUubWtkdGVtcChkaXI9dGVtcGRpcikKLSAgICAgICAgdXBkX3AsIG5ld19wLCBkZWxfcCA9IF9leHBvcnRfcGF0Y2hlcyhzcmN0cmVlLCByZCwgdXBkYXRlX3JldiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaGVzX2RpciwgY2hhbmdlZF9yZXZzKQorICAgICAgICB1cGRfcCwgbmV3X3AsIF8gPSBfZXhwb3J0X3BhdGNoZXMoc3JjdHJlZSwgcmQsIHVwZGF0ZV9yZXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaGVzX2RpciwgY2hhbmdlZF9yZXZzKQorICAgICAgICBsb2dnZXIuZGVidWcoJ1ByZS1maWx0ZXJpbmc6IHVwZGF0ZTogJXMsIG5ldzogJXMnICUgKGRpY3QodXBkX3ApLCBkaWN0KG5ld19wKSkpCisgICAgICAgIGlmIGZpbHRlcl9wYXRjaGVzOgorICAgICAgICAgICAgbmV3X3AgPSB7fQorICAgICAgICAgICAgdXBkX3AgPSB7azp2IGZvciBrLHYgaW4gdXBkX3AuaXRlbXMoKSBpZiBrIGluIGZpbHRlcl9wYXRjaGVzfQorICAgICAgICAgICAgcmVtb3ZlX2ZpbGVzID0gW2YgZm9yIGYgaW4gcmVtb3ZlX2ZpbGVzIGlmIGYgaW4gZmlsdGVyX3BhdGNoZXNdCiAgICAgICAgIHVwZGF0ZWZpbGVzID0gRmFsc2UKICAgICAgICAgdXBkYXRlcmVjaXBlID0gRmFsc2UKICAgICAgICAgZGVzdHBhdGggPSBOb25lCkBAIC0xNDA1LDEwICsxNTMwLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcgPSBbJ2ZpbGU6Ly8nICsgb3MucGF0aC5iYXNlbmFtZShpdGVtKSBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtIGluIHJlbWFpbmluZ10KICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZXZhbHVlcyA9IHsnU1JDX1VSSSc6IHJlbW92ZWRlbnRyaWVzICsgcmVtYWluaW5nfQotICAgICAgICAgICAgICAgIF8sIGRlc3RwYXRoID0gb2UucmVjaXBldXRpbHMuYmJhcHBlbmRfcmVjaXBlKAorICAgICAgICAgICAgICAgIGFwcGVuZGZpbGUsIGRlc3RwYXRoID0gb2UucmVjaXBldXRpbHMuYmJhcHBlbmRfcmVjaXBlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZCwgYXBwZW5kbGF5ZXJkaXIsIGZpbGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxkY2FyZHZlcj13aWxkY2FyZF92ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmV2YWx1ZXM9cmVtb3ZldmFsdWVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmV2YWx1ZXM9cmVtb3ZldmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdF9vdXRwdXQ9ZHJ5X3J1bl9vdXRkaXIpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdObyBwYXRjaGVzIG9yIGxvY2FsIHNvdXJjZSBmaWxlcyBuZWVkZWQgdXBkYXRpbmcnKQogICAgICAgICBlbHNlOgpAQCAtMTQxOSw5ICsxNTQ1LDExIEBACiAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2FicyhiYXNlcGF0aCk6CiAgICAgICAgICAgICAgICAgICAgICMgT3JpZ2luYWwgZmlsZSAocHJvYmFibHkgd2l0aCBzdWJkaXIgcG9pbnRpbmcgaW5zaWRlIHNvdXJjZSB0cmVlKQogICAgICAgICAgICAgICAgICAgICAjIHNvIHdlIGRvIG5vdCB3YW50IHRvIG1vdmUgaXQsIGp1c3QgY29weQotICAgICAgICAgICAgICAgICAgICBfY29weV9maWxlKGJhc2VwYXRoLCBwYXRoKQorICAgICAgICAgICAgICAgICAgICBfY29weV9maWxlKGJhc2VwYXRoLCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyeV9ydW5fb3V0ZGlyPWRyeV9ydW5fb3V0ZGlyLCBiYXNlX291dGRpcj1yZWNpcGVkaXIpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgX21vdmVfZmlsZShvcy5wYXRoLmpvaW4obG9jYWxfZmlsZXNfZGlyLCBiYXNlcGF0aCksIHBhdGgpCisgICAgICAgICAgICAgICAgICAgIF9tb3ZlX2ZpbGUob3MucGF0aC5qb2luKGxvY2FsX2ZpbGVzX2RpciwgYmFzZXBhdGgpLCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyeV9ydW5fb3V0ZGlyPWRyeV9ydW5fb3V0ZGlyLCBiYXNlX291dGRpcj1yZWNpcGVkaXIpCiAgICAgICAgICAgICAgICAgdXBkYXRlZmlsZXMgPSBUcnVlCiAgICAgICAgICAgICBmb3IgYmFzZXBhdGgsIHBhdGggaW4gdXBkX3AuaXRlbXMoKToKICAgICAgICAgICAgICAgICBwYXRjaGZuID0gb3MucGF0aC5qb2luKHBhdGNoZXNfZGlyLCBiYXNlcGF0aCkKQEAgLTE0MzMsMzkgKzE1NjEsNDUgQEAKICAgICAgICAgICAgICAgICAgICAgX3JlcGxhY2Vfc3JjdXJpX2VudHJ5KHNyY3VyaSwgYmFzZXBhdGgsICdmaWxlOi8vJXMnICUgYmFzZXBhdGgpCiAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZXJlY2lwZSA9IFRydWUKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnVXBkYXRpbmcgcGF0Y2ggJXMnICUgYmFzZXBhdGgpCi0gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCdNb3ZpbmcgbmV3IHBhdGNoICVzIHRvICVzJyAlIChwYXRjaGZuLCBwYXRoKSkKLSAgICAgICAgICAgICAgICBfbW92ZV9maWxlKHBhdGNoZm4sIHBhdGgpCisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdVcGRhdGluZyBwYXRjaCAlcyVzJyAlIChiYXNlcGF0aCwgZHJ5X3J1bl9zdWZmaXgpKQorICAgICAgICAgICAgICAgIF9tb3ZlX2ZpbGUocGF0Y2hmbiwgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyeV9ydW5fb3V0ZGlyPWRyeV9ydW5fb3V0ZGlyLCBiYXNlX291dGRpcj1yZWNpcGVkaXIpCiAgICAgICAgICAgICAgICAgdXBkYXRlZmlsZXMgPSBUcnVlCiAgICAgICAgICAgICAjIEFkZCBhbnkgbmV3IGZpbGVzCiAgICAgICAgICAgICBmb3IgYmFzZXBhdGgsIHBhdGggaW4gbmV3X2YuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnQWRkaW5nIG5ldyBmaWxlICVzJyAlIGJhc2VwYXRoKQorICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdBZGRpbmcgbmV3IGZpbGUgJXMlcycgJSAoYmFzZXBhdGgsIGRyeV9ydW5fc3VmZml4KSkKICAgICAgICAgICAgICAgICBfbW92ZV9maWxlKG9zLnBhdGguam9pbihsb2NhbF9maWxlc19kaXIsIGJhc2VwYXRoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihmaWxlc19kaXIsIGJhc2VwYXRoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihmaWxlc19kaXIsIGJhc2VwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyeV9ydW5fb3V0ZGlyPWRyeV9ydW5fb3V0ZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZV9vdXRkaXI9cmVjaXBlZGlyKQogICAgICAgICAgICAgICAgIHNyY3VyaS5hcHBlbmQoJ2ZpbGU6Ly8lcycgJSBiYXNlcGF0aCkKICAgICAgICAgICAgICAgICB1cGRhdGVyZWNpcGUgPSBUcnVlCiAgICAgICAgICAgICBmb3IgYmFzZXBhdGgsIHBhdGggaW4gbmV3X3AuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnQWRkaW5nIG5ldyBwYXRjaCAlcycgJSBiYXNlcGF0aCkKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnQWRkaW5nIG5ldyBwYXRjaCAlcyVzJyAlIChiYXNlcGF0aCwgZHJ5X3J1bl9zdWZmaXgpKQogICAgICAgICAgICAgICAgIF9tb3ZlX2ZpbGUob3MucGF0aC5qb2luKHBhdGNoZXNfZGlyLCBiYXNlcGF0aCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oZmlsZXNfZGlyLCBiYXNlcGF0aCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oZmlsZXNfZGlyLCBiYXNlcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkcnlfcnVuX291dGRpcj1kcnlfcnVuX291dGRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2Vfb3V0ZGlyPXJlY2lwZWRpcikKICAgICAgICAgICAgICAgICBzcmN1cmkuYXBwZW5kKCdmaWxlOi8vJXMnICUgYmFzZXBhdGgpCiAgICAgICAgICAgICAgICAgdXBkYXRlcmVjaXBlID0gVHJ1ZQogICAgICAgICAgICAgIyBVcGRhdGUgcmVjaXBlLCBpZiBuZWVkZWQKICAgICAgICAgICAgIGlmIF9yZW1vdmVfZmlsZV9lbnRyaWVzKHNyY3VyaSwgcmVtb3ZlX2ZpbGVzKVswXToKICAgICAgICAgICAgICAgICB1cGRhdGVyZWNpcGUgPSBUcnVlCiAgICAgICAgICAgICBpZiB1cGRhdGVyZWNpcGU6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1VwZGF0aW5nIHJlY2lwZSAlcycgJSBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpKQotICAgICAgICAgICAgICAgIG9lLnJlY2lwZXV0aWxzLnBhdGNoX3JlY2lwZShyZCwgcmVjaXBlZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydTUkNfVVJJJzogJyAnLmpvaW4oc3JjdXJpKX0pCisgICAgICAgICAgICAgICAgaWYgbm90IGRyeV9ydW5fb3V0ZGlyOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnVXBkYXRpbmcgcmVjaXBlICVzJyAlIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkpCisgICAgICAgICAgICAgICAgcmV0ID0gb2UucmVjaXBldXRpbHMucGF0Y2hfcmVjaXBlKHJkLCByZWNpcGVmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J1NSQ19VUkknOiAnICcuam9pbihzcmN1cmkpfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3Rfb3V0cHV0PWRyeV9ydW5fb3V0ZGlyKQogICAgICAgICAgICAgZWxpZiBub3QgdXBkYXRlZmlsZXM6CiAgICAgICAgICAgICAgICAgIyBOZWl0aGVyIHBhdGNoZXMgbm9yIHJlY2lwZSB3ZXJlIHVwZGF0ZWQKICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnTm8gcGF0Y2hlcyBvciBmaWxlcyBuZWVkIHVwZGF0aW5nJykKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UsIE5vbmUsIFtdCiAgICAgZmluYWxseToKICAgICAgICAgc2h1dGlsLnJtdHJlZSh0ZW1wZGlyKQogCi0gICAgX3JlbW92ZV9zb3VyY2VfZmlsZXMoYXBwZW5kbGF5ZXJkaXIsIHJlbW92ZV9maWxlcywgZGVzdHBhdGgpCi0gICAgcmV0dXJuIFRydWUKKyAgICBfcmVtb3ZlX3NvdXJjZV9maWxlcyhhcHBlbmRsYXllcmRpciwgcmVtb3ZlX2ZpbGVzLCBkZXN0cGF0aCwgbm9fcmVwb3J0X3JlbW92ZSwgZHJ5X3J1bj1kcnlfcnVuX291dGRpcikKKyAgICByZXR1cm4gVHJ1ZSwgYXBwZW5kZmlsZSwgcmVtb3ZlX2ZpbGVzCiAKIGRlZiBfZ3Vlc3NfcmVjaXBlX3VwZGF0ZV9tb2RlKHNyY3RyZWUsIHJkYXRhKToKICAgICAiIiJHdWVzcyB0aGUgcmVjaXBlIHVwZGF0ZSBtb2RlIHRvIHVzZSIiIgpAQCAtMTQ4OSwxOCArMTYyMyw3MyBAQAogCiAgICAgcmV0dXJuICdwYXRjaCcKIAotZGVmIF91cGRhdGVfcmVjaXBlKHJlY2lwZW5hbWUsIHdvcmtzcGFjZSwgcmQsIG1vZGUsIGFwcGVuZGxheWVyZGlyLCB3aWxkY2FyZF92ZXJzaW9uLCBub19yZW1vdmUsIGluaXRpYWxfcmV2KToKK2RlZiBfdXBkYXRlX3JlY2lwZShyZWNpcGVuYW1lLCB3b3Jrc3BhY2UsIHJkLCBtb2RlLCBhcHBlbmRsYXllcmRpciwgd2lsZGNhcmRfdmVyc2lvbiwgbm9fcmVtb3ZlLCBpbml0aWFsX3Jldiwgbm9fcmVwb3J0X3JlbW92ZT1GYWxzZSwgZHJ5X3J1bl9vdXRkaXI9Tm9uZSwgbm9fb3ZlcnJpZGVzPUZhbHNlLCBmb3JjZV9wYXRjaF9yZWZyZXNoPUZhbHNlKToKICAgICBzcmN0cmVlID0gd29ya3NwYWNlW3JlY2lwZW5hbWVdWydzcmN0cmVlJ10KICAgICBpZiBtb2RlID09ICdhdXRvJzoKICAgICAgICAgbW9kZSA9IF9ndWVzc19yZWNpcGVfdXBkYXRlX21vZGUoc3JjdHJlZSwgcmQpCiAKLSAgICBpZiBtb2RlID09ICdzcmNyZXYnOgotICAgICAgICB1cGRhdGVkID0gX3VwZGF0ZV9yZWNpcGVfc3JjcmV2KHNyY3RyZWUsIHJkLCBhcHBlbmRsYXllcmRpciwgd2lsZGNhcmRfdmVyc2lvbiwgbm9fcmVtb3ZlKQotICAgIGVsaWYgbW9kZSA9PSAncGF0Y2gnOgotICAgICAgICB1cGRhdGVkID0gX3VwZGF0ZV9yZWNpcGVfcGF0Y2gocmVjaXBlbmFtZSwgd29ya3NwYWNlLCBzcmN0cmVlLCByZCwgYXBwZW5kbGF5ZXJkaXIsIHdpbGRjYXJkX3ZlcnNpb24sIG5vX3JlbW92ZSwgaW5pdGlhbF9yZXYpCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCd1cGRhdGVfcmVjaXBlOiBpbnZhbGlkIG1vZGUgJXMnICUgbW9kZSkKLSAgICByZXR1cm4gdXBkYXRlZAorICAgIG92ZXJyaWRlX2JyYW5jaGVzID0gW10KKyAgICBtYWluYnJhbmNoID0gTm9uZQorICAgIHN0YXJ0YnJhbmNoID0gTm9uZQorICAgIGlmIG5vdCBub19vdmVycmlkZXM6CisgICAgICAgIHN0ZG91dCwgXyA9IGJiLnByb2Nlc3MucnVuKCdnaXQgYnJhbmNoJywgY3dkPXNyY3RyZWUpCisgICAgICAgIG90aGVyX2JyYW5jaGVzID0gW10KKyAgICAgICAgZm9yIGxpbmUgaW4gc3Rkb3V0LnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgIGJyYW5jaG5hbWUgPSBsaW5lWzI6XQorICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCcqICcpOgorICAgICAgICAgICAgICAgIHN0YXJ0YnJhbmNoID0gYnJhbmNobmFtZQorICAgICAgICAgICAgaWYgYnJhbmNobmFtZS5zdGFydHN3aXRoKG92ZXJyaWRlX2JyYW5jaF9wcmVmaXgpOgorICAgICAgICAgICAgICAgIG92ZXJyaWRlX2JyYW5jaGVzLmFwcGVuZChicmFuY2huYW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBvdGhlcl9icmFuY2hlcy5hcHBlbmQoYnJhbmNobmFtZSkKKworICAgICAgICBpZiBvdmVycmlkZV9icmFuY2hlczoKKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnX3VwZGF0ZV9yZWNpcGU6IG92ZXJyaWRlIGJyYW5jaGVzOiAlcycgJSBvdmVycmlkZV9icmFuY2hlcykKKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnX3VwZGF0ZV9yZWNpcGU6IG90aGVyIGJyYW5jaGVzOiAlcycgJSBvdGhlcl9icmFuY2hlcykKKyAgICAgICAgICAgIGlmIHN0YXJ0YnJhbmNoLnN0YXJ0c3dpdGgob3ZlcnJpZGVfYnJhbmNoX3ByZWZpeCk6CisgICAgICAgICAgICAgICAgaWYgbGVuKG90aGVyX2JyYW5jaGVzKSA9PSAxOgorICAgICAgICAgICAgICAgICAgICBtYWluYnJhbmNoID0gb3RoZXJfYnJhbmNoZXNbMV0KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoJ1VuYWJsZSB0byBkZXRlcm1pbmUgbWFpbiBicmFuY2ggLSBwbGVhc2UgY2hlY2sgb3V0IHRoZSBtYWluIGJyYW5jaCBpbiBzb3VyY2UgdHJlZSBmaXJzdCcpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1haW5icmFuY2ggPSBzdGFydGJyYW5jaAorCisgICAgY2hlY2tlZG91dCA9IE5vbmUKKyAgICBhbnl1cGRhdGVkID0gRmFsc2UKKyAgICBhcHBlbmRmaWxlID0gTm9uZQorICAgIGFsbHJlbW92ZWQgPSBbXQorICAgIGlmIG92ZXJyaWRlX2JyYW5jaGVzOgorICAgICAgICBsb2dnZXIuaW5mbygnSGFuZGxpbmcgbWFpbiBicmFuY2ggKCVzKS4uLicgJSBtYWluYnJhbmNoKQorICAgICAgICBpZiBzdGFydGJyYW5jaCAhPSBtYWluYnJhbmNoOgorICAgICAgICAgICAgYmIucHJvY2Vzcy5ydW4oJ2dpdCBjaGVja291dCAlcycgJSBtYWluYnJhbmNoLCBjd2Q9c3JjdHJlZSkKKyAgICAgICAgY2hlY2tlZG91dCA9IG1haW5icmFuY2gKKyAgICB0cnk6CisgICAgICAgIGJyYW5jaGxpc3QgPSBbbWFpbmJyYW5jaF0gKyBvdmVycmlkZV9icmFuY2hlcworICAgICAgICBmb3IgYnJhbmNoIGluIGJyYW5jaGxpc3Q6CisgICAgICAgICAgICBjcmQgPSBiYi5kYXRhLmNyZWF0ZUNvcHkocmQpCisgICAgICAgICAgICBpZiBicmFuY2ggIT0gbWFpbmJyYW5jaDoKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnSGFuZGxpbmcgYnJhbmNoICVzLi4uJyAlIGJyYW5jaCkKKyAgICAgICAgICAgICAgICBvdmVycmlkZSA9IGJyYW5jaFtsZW4ob3ZlcnJpZGVfYnJhbmNoX3ByZWZpeCk6XQorICAgICAgICAgICAgICAgIGNyZC5hcHBlbmRWYXIoJ09WRVJSSURFUycsICc6JXMnICUgb3ZlcnJpZGUpCisgICAgICAgICAgICAgICAgYmIucHJvY2Vzcy5ydW4oJ2dpdCBjaGVja291dCAlcycgJSBicmFuY2gsIGN3ZD1zcmN0cmVlKQorICAgICAgICAgICAgICAgIGNoZWNrZWRvdXQgPSBicmFuY2gKKworICAgICAgICAgICAgaWYgbW9kZSA9PSAnc3JjcmV2JzoKKyAgICAgICAgICAgICAgICB1cGRhdGVkLCBhcHBlbmRmLCByZW1vdmVkID0gX3VwZGF0ZV9yZWNpcGVfc3JjcmV2KHJlY2lwZW5hbWUsIHdvcmtzcGFjZSwgc3JjdHJlZSwgY3JkLCBhcHBlbmRsYXllcmRpciwgd2lsZGNhcmRfdmVyc2lvbiwgbm9fcmVtb3ZlLCBub19yZXBvcnRfcmVtb3ZlLCBkcnlfcnVuX291dGRpcikKKyAgICAgICAgICAgIGVsaWYgbW9kZSA9PSAncGF0Y2gnOgorICAgICAgICAgICAgICAgIHVwZGF0ZWQsIGFwcGVuZGYsIHJlbW92ZWQgPSBfdXBkYXRlX3JlY2lwZV9wYXRjaChyZWNpcGVuYW1lLCB3b3Jrc3BhY2UsIHNyY3RyZWUsIGNyZCwgYXBwZW5kbGF5ZXJkaXIsIHdpbGRjYXJkX3ZlcnNpb24sIG5vX3JlbW92ZSwgbm9fcmVwb3J0X3JlbW92ZSwgaW5pdGlhbF9yZXYsIGRyeV9ydW5fb3V0ZGlyLCBmb3JjZV9wYXRjaF9yZWZyZXNoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoJ3VwZGF0ZV9yZWNpcGU6IGludmFsaWQgbW9kZSAlcycgJSBtb2RlKQorICAgICAgICAgICAgaWYgdXBkYXRlZDoKKyAgICAgICAgICAgICAgICBhbnl1cGRhdGVkID0gVHJ1ZQorICAgICAgICAgICAgaWYgYXBwZW5kZjoKKyAgICAgICAgICAgICAgICBhcHBlbmRmaWxlID0gYXBwZW5kZgorICAgICAgICAgICAgYWxscmVtb3ZlZC5leHRlbmQocmVtb3ZlZCkKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiBzdGFydGJyYW5jaCBhbmQgY2hlY2tlZG91dCAhPSBzdGFydGJyYW5jaDoKKyAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCdnaXQgY2hlY2tvdXQgJXMnICUgc3RhcnRicmFuY2gsIGN3ZD1zcmN0cmVlKQorCisgICAgcmV0dXJuIGFueXVwZGF0ZWQsIGFwcGVuZGZpbGUsIGFsbHJlbW92ZWQKIAogZGVmIHVwZGF0ZV9yZWNpcGUoYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKToKICAgICAiIiJFbnRyeSBwb2ludCBmb3IgdGhlIGRldnRvb2wgJ3VwZGF0ZS1yZWNpcGUnIHN1YmNvbW1hbmQiIiIKQEAgLTE1MjEsNyArMTcxMCwxMiBAQAogICAgICAgICBpZiBub3QgcmQ6CiAgICAgICAgICAgICByZXR1cm4gMQogCi0gICAgICAgIHVwZGF0ZWQgPSBfdXBkYXRlX3JlY2lwZShhcmdzLnJlY2lwZW5hbWUsIHdvcmtzcGFjZSwgcmQsIGFyZ3MubW9kZSwgYXJncy5hcHBlbmQsIGFyZ3Mud2lsZGNhcmRfdmVyc2lvbiwgYXJncy5ub19yZW1vdmUsIGFyZ3MuaW5pdGlhbF9yZXYpCisgICAgICAgIGRyeV9ydW5fb3V0cHV0ID0gTm9uZQorICAgICAgICBkcnlfcnVuX291dGRpciA9IE5vbmUKKyAgICAgICAgaWYgYXJncy5kcnlfcnVuOgorICAgICAgICAgICAgZHJ5X3J1bl9vdXRwdXQgPSB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkocHJlZml4PSdkZXZ0b29sJykKKyAgICAgICAgICAgIGRyeV9ydW5fb3V0ZGlyID0gZHJ5X3J1bl9vdXRwdXQubmFtZQorICAgICAgICB1cGRhdGVkLCBfLCBfID0gX3VwZGF0ZV9yZWNpcGUoYXJncy5yZWNpcGVuYW1lLCB3b3Jrc3BhY2UsIHJkLCBhcmdzLm1vZGUsIGFyZ3MuYXBwZW5kLCBhcmdzLndpbGRjYXJkX3ZlcnNpb24sIGFyZ3Mubm9fcmVtb3ZlLCBhcmdzLmluaXRpYWxfcmV2LCBkcnlfcnVuX291dGRpcj1kcnlfcnVuX291dGRpciwgbm9fb3ZlcnJpZGVzPWFyZ3Mubm9fb3ZlcnJpZGVzLCBmb3JjZV9wYXRjaF9yZWZyZXNoPWFyZ3MuZm9yY2VfcGF0Y2hfcmVmcmVzaCkKIAogICAgICAgICBpZiB1cGRhdGVkOgogICAgICAgICAgICAgcmYgPSByZC5nZXRWYXIoJ0ZJTEUnKQpAQCAtMTU1MCw2ICsxNzQ0LDcgQEAKIAogZGVmIF9yZXNldChyZWNpcGVzLCBub19jbGVhbiwgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKToKICAgICAiIiJSZXNldCBvbmUgb3IgbW9yZSByZWNpcGVzIiIiCisgICAgaW1wb3J0IG9lLnBhdGgKIAogICAgIGRlZiBjbGVhbl9wcmVmZXJyZWRfcHJvdmlkZXIocG4sIGxheWVyY29uZl9wYXRoKToKICAgICAgICAgIiIiUmVtb3ZlIFBSRUZFUlJFRF9QUk9WSURFUiBmcm9tIGxheWVyLmNvbmYnIiIiCkBAIC0xNTk2LDYgKzE3OTEsMTMgQEAKICAgICBmb3IgcG4gaW4gcmVjaXBlczoKICAgICAgICAgX2NoZWNrX3ByZXNlcnZlKGNvbmZpZywgcG4pCiAKKyAgICAgICAgYXBwZW5kZmlsZSA9IHdvcmtzcGFjZVtwbl1bJ2JiYXBwZW5kJ10KKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoYXBwZW5kZmlsZSk6CisgICAgICAgICAgICAjIFRoaXMgc2hvdWxkbid0IGhhcHBlbiwgYnV0IGlzIHBvc3NpYmxlIGlmIGRldnRvb2wgZXJyb3JlZCBvdXQgcHJpb3IgdG8KKyAgICAgICAgICAgICMgd3JpdGluZyB0aGUgbWQ1IGZpbGUuIFdlIG5lZWQgdG8gZGVsZXRlIHRoaXMgaGVyZSBvciB0aGUgcmVjaXBlIHdvbid0CisgICAgICAgICAgICAjIGFjdHVhbGx5IGJlIHJlc2V0CisgICAgICAgICAgICBvcy5yZW1vdmUoYXBwZW5kZmlsZSkKKwogICAgICAgICBwcmVzZXJ2ZXBhdGggPSBvcy5wYXRoLmpvaW4oY29uZmlnLndvcmtzcGFjZV9wYXRoLCAnYXR0aWMnLCBwbiwgcG4pCiAgICAgICAgIGRlZiBwcmVzZXJ2ZWRpcihvcmlnZGlyKToKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9yaWdkaXIpOgpAQCAtMTYwOCwyMCArMTgxMCwyMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VydmVkaXIob3MucGF0aC5qb2luKHJvb3QsIGRuKSkKICAgICAgICAgICAgICAgICBvcy5ybWRpcihvcmlnZGlyKQogCi0gICAgICAgIHByZXNlcnZlZGlyKG9zLnBhdGguam9pbihjb25maWcud29ya3NwYWNlX3BhdGgsICdyZWNpcGVzJywgcG4pKQorICAgICAgICByZWNpcGVmaWxlID0gd29ya3NwYWNlW3BuXVsncmVjaXBlZmlsZSddCisgICAgICAgIGlmIHJlY2lwZWZpbGUgYW5kIG9lLnBhdGguaXNfcGF0aF9wYXJlbnQoY29uZmlnLndvcmtzcGFjZV9wYXRoLCByZWNpcGVmaWxlKToKKyAgICAgICAgICAgICMgVGhpcyBzaG91bGQgYWx3YXlzIGJlIHRydWUgaWYgcmVjaXBlZmlsZSBpcyBzZXQsIGJ1dCBqdXN0IGluIGNhc2UKKyAgICAgICAgICAgIHByZXNlcnZlZGlyKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSkKICAgICAgICAgIyBXZSBkb24ndCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSB0aGlzIGRpciBuZXh0IHRvIGFwcGVuZHMsIGJ1dCB0aGUgdXNlciBjYW4KICAgICAgICAgcHJlc2VydmVkaXIob3MucGF0aC5qb2luKGNvbmZpZy53b3Jrc3BhY2VfcGF0aCwgJ2FwcGVuZHMnLCBwbikpCiAKLSAgICAgICAgc3JjdHJlZSA9IHdvcmtzcGFjZVtwbl1bJ3NyY3RyZWUnXQotICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHNyY3RyZWUpOgotICAgICAgICAgICAgaWYgb3MubGlzdGRpcihzcmN0cmVlKToKKyAgICAgICAgc3JjdHJlZWJhc2UgPSB3b3Jrc3BhY2VbcG5dWydzcmN0cmVlYmFzZSddCisgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoc3JjdHJlZWJhc2UpOgorICAgICAgICAgICAgaWYgb3MubGlzdGRpcihzcmN0cmVlYmFzZSk6CiAgICAgICAgICAgICAgICAgIyBXZSBkb24ndCB3YW50IHRvIHJpc2sgd2lwaW5nIG91dCBhbnkgd29yayBpbiBwcm9ncmVzcwogICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdMZWF2aW5nIHNvdXJjZSB0cmVlICVzIGFzLWlzOyBpZiB5b3Ugbm8gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb25nZXIgbmVlZCBpdCB0aGVuIHBsZWFzZSBkZWxldGUgaXQgbWFudWFsbHknCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBzcmN0cmVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgc3JjdHJlZWJhc2UpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgVGhpcyBpcyB1bmxpa2VseSwgYnV0IGlmIGl0J3MgZW1wdHkgd2UgY2FuIGp1c3QgcmVtb3ZlIGl0Ci0gICAgICAgICAgICAgICAgb3Mucm1kaXIoc3JjdHJlZSkKKyAgICAgICAgICAgICAgICBvcy5ybWRpcihzcmN0cmVlYmFzZSkKIAogICAgICAgICBjbGVhbl9wcmVmZXJyZWRfcHJvdmlkZXIocG4sIGNvbmZpZy53b3Jrc3BhY2VfcGF0aCkKIApAQCAtMTY1Niw5ICsxODYxLDcgQEAKICAgICAgICAgbGF5ZXJkaXIgPSBsYXllcnMuZ2V0KCdtZXRhJywgTm9uZSkKICAgICBlbHNlOgogICAgICAgICBsYXllcmRpciA9IGxheWVycy5nZXQobGF5ZXJuYW1lLCBOb25lKQotICAgIGlmIGxheWVyZGlyOgotICAgICAgICBsYXllcmRpciA9IG9zLnBhdGguYWJzcGF0aChsYXllcmRpcikKLSAgICByZXR1cm4gbGF5ZXJkaXIgb3IgbGF5ZXJuYW1lCisgICAgcmV0dXJuIG9zLnBhdGguYWJzcGF0aChsYXllcmRpciBvciBsYXllcm5hbWUpCiAKIGRlZiBmaW5pc2goYXJncywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlKToKICAgICAiIiJFbnRyeSBwb2ludCBmb3IgdGhlIGRldnRvb2wgJ2ZpbmlzaCcgc3ViY29tbWFuZCIiIgpAQCAtMTY2Nyw2ICsxODcwLDIwIEBACiAKICAgICBjaGVja193b3Jrc3BhY2VfcmVjaXBlKHdvcmtzcGFjZSwgYXJncy5yZWNpcGVuYW1lKQogCisgICAgZHJ5X3J1bl9zdWZmaXggPSAnIChkcnktcnVuKScgaWYgYXJncy5kcnlfcnVuIGVsc2UgJycKKworICAgICMgR3JhYiB0aGUgZXF1aXZhbGVudCBvZiBDT1JFQkFTRSB3aXRob3V0IGhhdmluZyB0byBpbml0aWFsaXNlIHRpbmZvaWwKKyAgICBjb3JlYmFzZWRpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJy4uJywgJy4uJykpCisKKyAgICBzcmN0cmVlID0gd29ya3NwYWNlW2FyZ3MucmVjaXBlbmFtZV1bJ3NyY3RyZWUnXQorICAgIGNoZWNrX2dpdF9yZXBvX29wKHNyY3RyZWUsIFtjb3JlYmFzZWRpcl0pCisgICAgZGlydHkgPSBjaGVja19naXRfcmVwb19kaXJ0eShzcmN0cmVlKQorICAgIGlmIGRpcnR5OgorICAgICAgICBpZiBhcmdzLmZvcmNlOgorICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ1NvdXJjZSB0cmVlIGlzIG5vdCBjbGVhbiwgY29udGludWluZyBhcyByZXF1ZXN0ZWQgYnkgLWYvLS1mb3JjZScpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoJ1NvdXJjZSB0cmVlIGlzIG5vdCBjbGVhbjpcblxuJXNcbkVuc3VyZSB5b3UgaGF2ZSBjb21taXR0ZWQgeW91ciBjaGFuZ2VzIG9yIHVzZSAtZi8tLWZvcmNlIGlmIHlvdSBhcmUgc3VyZSB0aGVyZVwncyBub3RoaW5nIHRoYXQgbmVlZHMgdG8gYmUgY29tbWl0dGVkJyAlIGRpcnR5KQorCiAgICAgbm9fY2xlYW4gPSBGYWxzZQogICAgIHRpbmZvaWwgPSBzZXR1cF90aW5mb2lsKGJhc2VwYXRoPWJhc2VwYXRoLCB0cmFja2luZz1UcnVlKQogICAgIHRyeToKQEAgLTE2NzUsNyArMTg5Miw5IEBACiAgICAgICAgICAgICByZXR1cm4gMQogCiAgICAgICAgIGRlc3RsYXllcmRpciA9IF9nZXRfbGF5ZXIoYXJncy5kZXN0aW5hdGlvbiwgdGluZm9pbC5jb25maWdfZGF0YSkKLSAgICAgICAgb3JpZ2xheWVyZGlyID0gb2UucmVjaXBldXRpbHMuZmluZF9sYXllcmRpcihyZC5nZXRWYXIoJ0ZJTEUnKSkKKyAgICAgICAgcmVjaXBlZmlsZSA9IHJkLmdldFZhcignRklMRScpCisgICAgICAgIHJlY2lwZWRpciA9IG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKQorICAgICAgICBvcmlnbGF5ZXJkaXIgPSBvZS5yZWNpcGV1dGlscy5maW5kX2xheWVyZGlyKHJlY2lwZWZpbGUpCiAKICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoZGVzdGxheWVyZGlyKToKICAgICAgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcignVW5hYmxlIHRvIGZpbmQgbGF5ZXIgb3IgZGlyZWN0b3J5IG1hdGNoaW5nICIlcyInICUgYXJncy5kZXN0aW5hdGlvbikKQEAgLTE2OTQsNiArMTkxMyw4IEBACiAgICAgICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJyMgb3JpZ2luYWxfZmlsZXM6Jyk6CiAgICAgICAgICAgICAgICAgICAgIG9yaWdmaWxlbGlzdCA9IGxpbmUuc3BsaXQoJzonKVsxXS5zcGxpdCgpCiAKKyAgICAgICAgZGVzdGxheWVyYmFzZWRpciA9IG9lLnJlY2lwZXV0aWxzLmZpbmRfbGF5ZXJkaXIoZGVzdGxheWVyZGlyKQorCiAgICAgICAgIGlmIG9yaWdsYXllcmRpciA9PSBjb25maWcud29ya3NwYWNlX3BhdGg6CiAgICAgICAgICAgICAjIFJlY2lwZSBmaWxlIGl0c2VsZiBpcyBpbiB3b3Jrc3BhY2UsIHVwZGF0ZSBpdCB0aGVyZSBmaXJzdAogICAgICAgICAgICAgYXBwZW5kbGF5ZXJkaXIgPSBOb25lCkBAIC0xNzA3LDcgKzE5MjgsNyBAQAogICAgICAgICAgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcigiVW5hYmxlIHRvIGRldGVybWluZSBkZXN0aW5hdGlvbiBsYXllciBwYXRoIC0gY2hlY2sgdGhhdCAlcyBzcGVjaWZpZXMgYW4gYWN0dWFsIGxheWVyIGFuZCAlcy9jb25mL2xheWVyLmNvbmYgc3BlY2lmaWVzIEJCRklMRVMuIFlvdSBtYXkgYWxzbyBuZWVkIHRvIHNwZWNpZnkgYSBtb3JlIGNvbXBsZXRlIHBhdGguIiAlIChhcmdzLmRlc3RpbmF0aW9uLCBkZXN0bGF5ZXJkaXIpKQogICAgICAgICAgICAgIyBXYXJuIGlmIHRoZSBsYXllciBpc24ndCBpbiBiYmxheWVycy5jb25mICh0aGUgY29kZSB0byBjcmVhdGUgYSBiYmFwcGVuZCB3aWxsIGRvIHRoaXMgaW4gb3RoZXIgY2FzZXMpCiAgICAgICAgICAgICBsYXllcmRpcnMgPSBbb3MucGF0aC5hYnNwYXRoKGxheWVyZGlyKSBmb3IgbGF5ZXJkaXIgaW4gcmQuZ2V0VmFyKCdCQkxBWUVSUycpLnNwbGl0KCldCi0gICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5hYnNwYXRoKGRlc3RsYXllcmRpcikgaW4gbGF5ZXJkaXJzOgorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguYWJzcGF0aChkZXN0bGF5ZXJiYXNlZGlyKSBpbiBsYXllcmRpcnM6CiAgICAgICAgICAgICAgICAgYmIud2FybignU3BlY2lmaWVkIGRlc3RpbmF0aW9uIGxheWVyIGlzIG5vdCBjdXJyZW50bHkgZW5hYmxlZCBpbiBiYmxheWVycy5jb25mLCBzbyB0aGUgJXMgcmVjaXBlIHdpbGwgbm93IGJlIHVuYXZhaWxhYmxlIGluIHlvdXIgY3VycmVudCBjb25maWd1cmF0aW9uIHVudGlsIHlvdSBhZGQgdGhlIGxheWVyIHRoZXJlJyAlIGFyZ3MucmVjaXBlbmFtZSkKIAogICAgICAgICBlbGlmIGRlc3RsYXllcmRpciA9PSBvcmlnbGF5ZXJkaXI6CkBAIC0xNzE5LDM3ICsxOTQwLDEwMyBAQAogICAgICAgICAgICAgYXBwZW5kbGF5ZXJkaXIgPSBkZXN0bGF5ZXJkaXIKICAgICAgICAgICAgIGRlc3RwYXRoID0gTm9uZQogCisgICAgICAgICMgQWN0dWFsbHkgdXBkYXRlIHRoZSByZWNpcGUgLyBiYmFwcGVuZAorICAgICAgICByZW1vdmluZ19vcmlnaW5hbCA9IChvcmlncGF0aCBhbmQgb3JpZ2ZpbGVsaXN0IGFuZCBvZS5yZWNpcGV1dGlscy5maW5kX2xheWVyZGlyKG9yaWdwYXRoKSA9PSBkZXN0bGF5ZXJiYXNlZGlyKQorICAgICAgICBkcnlfcnVuX291dHB1dCA9IE5vbmUKKyAgICAgICAgZHJ5X3J1bl9vdXRkaXIgPSBOb25lCisgICAgICAgIGlmIGFyZ3MuZHJ5X3J1bjoKKyAgICAgICAgICAgIGRyeV9ydW5fb3V0cHV0ID0gdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KHByZWZpeD0nZGV2dG9vbCcpCisgICAgICAgICAgICBkcnlfcnVuX291dGRpciA9IGRyeV9ydW5fb3V0cHV0Lm5hbWUKKyAgICAgICAgdXBkYXRlZCwgYXBwZW5kZmlsZSwgcmVtb3ZlZCA9IF91cGRhdGVfcmVjaXBlKGFyZ3MucmVjaXBlbmFtZSwgd29ya3NwYWNlLCByZCwgYXJncy5tb2RlLCBhcHBlbmRsYXllcmRpciwgd2lsZGNhcmRfdmVyc2lvbj1UcnVlLCBub19yZW1vdmU9RmFsc2UsIG5vX3JlcG9ydF9yZW1vdmU9cmVtb3Zpbmdfb3JpZ2luYWwsIGluaXRpYWxfcmV2PWFyZ3MuaW5pdGlhbF9yZXYsIGRyeV9ydW5fb3V0ZGlyPWRyeV9ydW5fb3V0ZGlyLCBub19vdmVycmlkZXM9YXJncy5ub19vdmVycmlkZXMsIGZvcmNlX3BhdGNoX3JlZnJlc2g9YXJncy5mb3JjZV9wYXRjaF9yZWZyZXNoKQorICAgICAgICByZW1vdmVkID0gW29zLnBhdGgucmVscGF0aChwdGgsIHJlY2lwZWRpcikgZm9yIHB0aCBpbiByZW1vdmVkXQorCiAgICAgICAgICMgUmVtb3ZlIGFueSBvbGQgZmlsZXMgaW4gdGhlIGNhc2Ugb2YgYW4gdXBncmFkZQotICAgICAgICBpZiBvcmlncGF0aCBhbmQgb3JpZ2ZpbGVsaXN0IGFuZCBvZS5yZWNpcGV1dGlscy5maW5kX2xheWVyZGlyKG9yaWdwYXRoKSA9PSBvZS5yZWNpcGV1dGlscy5maW5kX2xheWVyZGlyKGRlc3RsYXllcmRpcik6CisgICAgICAgIGlmIHJlbW92aW5nX29yaWdpbmFsOgogICAgICAgICAgICAgZm9yIGZuIGluIG9yaWdmaWxlbGlzdDoKICAgICAgICAgICAgICAgICBmbnAgPSBvcy5wYXRoLmpvaW4ob3JpZ3BhdGgsIGZuKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGZucCkKLSAgICAgICAgICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKLQotICAgICAgICAjIEFjdHVhbGx5IHVwZGF0ZSB0aGUgcmVjaXBlIC8gYmJhcHBlbmQKLSAgICAgICAgX3VwZGF0ZV9yZWNpcGUoYXJncy5yZWNpcGVuYW1lLCB3b3Jrc3BhY2UsIHJkLCBhcmdzLm1vZGUsIGFwcGVuZGxheWVyZGlyLCB3aWxkY2FyZF92ZXJzaW9uPVRydWUsIG5vX3JlbW92ZT1GYWxzZSwgaW5pdGlhbF9yZXY9YXJncy5pbml0aWFsX3JldikKKyAgICAgICAgICAgICAgICBpZiBmbiBpbiByZW1vdmVkIG9yIG5vdCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4ocmVjaXBlZGlyLCBmbikpOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnUmVtb3ZpbmcgZmlsZSAlcyVzJyAlIChmbnAsIGRyeV9ydW5fc3VmZml4KSkKKyAgICAgICAgICAgICAgICBpZiBub3QgYXJncy5kcnlfcnVuOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZm5wKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgaWYgb3JpZ2xheWVyZGlyID09IGNvbmZpZy53b3Jrc3BhY2VfcGF0aCBhbmQgZGVzdHBhdGg6CiAgICAgICAgICAgICAjIFJlY2lwZSBmaWxlIGl0c2VsZiBpcyBpbiB0aGUgd29ya3NwYWNlIC0gbmVlZCB0byBtb3ZlIGl0IGFuZCBhbnkKICAgICAgICAgICAgICMgYXNzb2NpYXRlZCBmaWxlcyB0byB0aGUgc3BlY2lmaWVkIGxheWVyCiAgICAgICAgICAgICBub19jbGVhbiA9IFRydWUKLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdNb3ZpbmcgcmVjaXBlIGZpbGUgdG8gJXMnICUgZGVzdHBhdGgpCi0gICAgICAgICAgICByZWNpcGVkaXIgPSBvcy5wYXRoLmRpcm5hbWUocmQuZ2V0VmFyKCdGSUxFJykpCisgICAgICAgICAgICBsb2dnZXIuaW5mbygnTW92aW5nIHJlY2lwZSBmaWxlIHRvICVzJXMnICUgKGRlc3RwYXRoLCBkcnlfcnVuX3N1ZmZpeCkpCiAgICAgICAgICAgICBmb3Igcm9vdCwgXywgZmlsZXMgaW4gb3Mud2FsayhyZWNpcGVkaXIpOgogICAgICAgICAgICAgICAgIGZvciBmbiBpbiBmaWxlczoKICAgICAgICAgICAgICAgICAgICAgc3JjcGF0aCA9IG9zLnBhdGguam9pbihyb290LCBmbikKICAgICAgICAgICAgICAgICAgICAgcmVscHRoID0gb3MucGF0aC5yZWxwYXRoKG9zLnBhdGguZGlybmFtZShzcmNwYXRoKSwgcmVjaXBlZGlyKQogICAgICAgICAgICAgICAgICAgICBkZXN0ZGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihkZXN0cGF0aCwgcmVscHRoKSkKLSAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGRlc3RkaXIpCi0gICAgICAgICAgICAgICAgICAgIHNodXRpbC5tb3ZlKHNyY3BhdGgsIG9zLnBhdGguam9pbihkZXN0ZGlyLCBmbikpCisgICAgICAgICAgICAgICAgICAgIGRlc3RmcCA9IG9zLnBhdGguam9pbihkZXN0ZGlyLCBmbikKKyAgICAgICAgICAgICAgICAgICAgX21vdmVfZmlsZShzcmNwYXRoLCBkZXN0ZnAsIGRyeV9ydW5fb3V0ZGlyPWRyeV9ydW5fb3V0ZGlyLCBiYXNlX291dGRpcj1kZXN0cGF0aCkKIAorICAgICAgICBpZiBkcnlfcnVuX291dGRpcjoKKyAgICAgICAgICAgIGltcG9ydCBkaWZmbGliCisgICAgICAgICAgICBjb21wYXJlbGlzdCA9IFtdCisgICAgICAgICAgICBmb3Igcm9vdCwgXywgZmlsZXMgaW4gb3Mud2FsayhkcnlfcnVuX291dGRpcik6CisgICAgICAgICAgICAgICAgZm9yIGZuIGluIGZpbGVzOgorICAgICAgICAgICAgICAgICAgICBvdXRmID0gb3MucGF0aC5qb2luKHJvb3QsIGZuKQorICAgICAgICAgICAgICAgICAgICByZWxmID0gb3MucGF0aC5yZWxwYXRoKG91dGYsIGRyeV9ydW5fb3V0ZGlyKQorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ2RyeS1ydW46IG91dHB1dCBmaWxlICVzJyAlIHJlbGYpCisgICAgICAgICAgICAgICAgICAgIGlmIGZuLmVuZHN3aXRoKCcuYmInKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9yaWdmaWxlbGlzdCBhbmQgb3JpZ3BhdGggYW5kIGRlc3RwYXRoOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTmVlZCB0byBtYXRjaCB0aGlzIHVwIHdpdGggdGhlIHByZS11cGdyYWRlIHJlY2lwZSBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG9yaWdmIGluIG9yaWdmaWxlbGlzdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgb3JpZ2YuZW5kc3dpdGgoJy5iYicpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFyZWxpc3QuYXBwZW5kKChvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9yaWdwYXRoLCBvcmlnZikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKGRlc3RwYXRoLCByZWxmKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDb21wYXJlIHRvIHRoZSBleGlzdGluZyByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXJlbGlzdC5hcHBlbmQoKHJlY2lwZWZpbGUsIG91dGYsIHJlY2lwZWZpbGUpKQorICAgICAgICAgICAgICAgICAgICBlbGlmIGZuLmVuZHN3aXRoKCcuYmJhcHBlbmQnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGFwcGVuZGZpbGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoYXBwZW5kZmlsZSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhcmVsaXN0LmFwcGVuZCgoYXBwZW5kZmlsZSwgb3V0ZiwgYXBwZW5kZmlsZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFyZWxpc3QuYXBwZW5kKChOb25lLCBvdXRmLCBhcHBlbmRmaWxlKSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlc3RwYXRoOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZWRlc3QgPSBkZXN0cGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBhcHBlbmRmaWxlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZWRlc3QgPSBvcy5wYXRoLmRpcm5hbWUoYXBwZW5kZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlZGVzdCA9IG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGZwID0gb3MucGF0aC5qb2luKHJlY2lwZWRlc3QsIHJlbGYpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkZXN0ZnApOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhcmVsaXN0LmFwcGVuZCgoZGVzdGZwLCBvdXRmLCBkZXN0ZnApKQorICAgICAgICAgICAgb3V0cHV0ID0gJycKKyAgICAgICAgICAgIGZvciBvbGRmaWxlLCBuZXdmaWxlLCBuZXdmaWxlc2hvdyBpbiBjb21wYXJlbGlzdDoKKyAgICAgICAgICAgICAgICBpZiBvbGRmaWxlOgorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4ob2xkZmlsZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICAgICAgb2xkbGluZXMgPSBmLnJlYWRsaW5lcygpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgb2xkZmlsZSA9ICcvZGV2L251bGwnCisgICAgICAgICAgICAgICAgICAgIG9sZGxpbmVzID0gW10KKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4obmV3ZmlsZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICBuZXdsaW5lcyA9IGYucmVhZGxpbmVzKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgbmV3ZmlsZXNob3c6CisgICAgICAgICAgICAgICAgICAgIG5ld2ZpbGVzaG93ID0gbmV3ZmlsZQorICAgICAgICAgICAgICAgIGRpZmYgPSBkaWZmbGliLnVuaWZpZWRfZGlmZihvbGRsaW5lcywgbmV3bGluZXMsIG9sZGZpbGUsIG5ld2ZpbGVzaG93KQorICAgICAgICAgICAgICAgIGRpZmZsaW5lcyA9IGxpc3QoZGlmZikKKyAgICAgICAgICAgICAgICBpZiBkaWZmbGluZXM6CisgICAgICAgICAgICAgICAgICAgIG91dHB1dCArPSAnJy5qb2luKGRpZmZsaW5lcykKKyAgICAgICAgICAgIGlmIG91dHB1dDoKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnRGlmZiBvZiBjaGFuZ2VkIGZpbGVzOlxuJXMnICUgb3V0cHV0KQogICAgIGZpbmFsbHk6CiAgICAgICAgIHRpbmZvaWwuc2h1dGRvd24oKQogCiAgICAgIyBFdmVyeXRoaW5nIGVsc2UgaGFzIHN1Y2NlZWRlZCwgd2UgY2FuIG5vdyByZXNldAotICAgIF9yZXNldChbYXJncy5yZWNpcGVuYW1lXSwgbm9fY2xlYW49bm9fY2xlYW4sIGNvbmZpZz1jb25maWcsIGJhc2VwYXRoPWJhc2VwYXRoLCB3b3Jrc3BhY2U9d29ya3NwYWNlKQorICAgIGlmIGFyZ3MuZHJ5X3J1bjoKKyAgICAgICAgbG9nZ2VyLmluZm8oJ1Jlc2V0dGluZyByZWNpcGUgKGRyeS1ydW4pJykKKyAgICBlbHNlOgorICAgICAgICBfcmVzZXQoW2FyZ3MucmVjaXBlbmFtZV0sIG5vX2NsZWFuPW5vX2NsZWFuLCBjb25maWc9Y29uZmlnLCBiYXNlcGF0aD1iYXNlcGF0aCwgd29ya3NwYWNlPXdvcmtzcGFjZSkKIAogICAgIHJldHVybiAwCiAKQEAgLTE4MDMsNiArMjA5MCw3IEBACiAgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXNhbWUtZGlyJywgJy1zJywgaGVscD0nQnVpbGQgaW4gc2FtZSBkaXJlY3RvcnkgYXMgc291cmNlJywgYWN0aW9uPSJzdG9yZV90cnVlIikKICAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tbm8tc2FtZS1kaXInLCBoZWxwPSdGb3JjZSBidWlsZCBpbiBhIHNlcGFyYXRlIGJ1aWxkIGRpcmVjdG9yeScsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCiAgICAgcGFyc2VyX21vZGlmeS5hZGRfYXJndW1lbnQoJy0tYnJhbmNoJywgJy1iJywgZGVmYXVsdD0iZGV2dG9vbCIsIGhlbHA9J05hbWUgZm9yIGRldmVsb3BtZW50IGJyYW5jaCB0byBjaGVja291dCAod2hlbiBub3QgdXNpbmcgLW4vLS1uby1leHRyYWN0KSAoZGVmYXVsdCAiJShkZWZhdWx0KXMiKScpCisgICAgcGFyc2VyX21vZGlmeS5hZGRfYXJndW1lbnQoJy0tbm8tb3ZlcnJpZGVzJywgJy1PJywgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0nRG8gbm90IGNyZWF0ZSBicmFuY2hlcyBmb3Igb3RoZXIgb3ZlcnJpZGUgY29uZmlndXJhdGlvbnMnKQogICAgIHBhcnNlcl9tb2RpZnkuYWRkX2FyZ3VtZW50KCctLWtlZXAtdGVtcCcsIGhlbHA9J0tlZXAgdGVtcG9yYXJ5IGRpcmVjdG9yeSAoZm9yIGRlYnVnZ2luZyknLCBhY3Rpb249InN0b3JlX3RydWUiKQogICAgIHBhcnNlcl9tb2RpZnkuc2V0X2RlZmF1bHRzKGZ1bmM9bW9kaWZ5LCBmaXhlZF9zZXR1cD1jb250ZXh0LmZpeGVkX3NldHVwKQogCkBAIC0xODEyLDYgKzIxMDAsNyBAQAogICAgIHBhcnNlcl9leHRyYWN0LmFkZF9hcmd1bWVudCgncmVjaXBlbmFtZScsIGhlbHA9J05hbWUgb2YgcmVjaXBlIHRvIGV4dHJhY3QgdGhlIHNvdXJjZSBmb3InKQogICAgIHBhcnNlcl9leHRyYWN0LmFkZF9hcmd1bWVudCgnc3JjdHJlZScsIGhlbHA9J1BhdGggdG8gd2hlcmUgdG8gZXh0cmFjdCB0aGUgc291cmNlIHRyZWUnKQogICAgIHBhcnNlcl9leHRyYWN0LmFkZF9hcmd1bWVudCgnLS1icmFuY2gnLCAnLWInLCBkZWZhdWx0PSJkZXZ0b29sIiwgaGVscD0nTmFtZSBmb3IgZGV2ZWxvcG1lbnQgYnJhbmNoIHRvIGNoZWNrb3V0IChkZWZhdWx0ICIlKGRlZmF1bHQpcyIpJykKKyAgICBwYXJzZXJfZXh0cmFjdC5hZGRfYXJndW1lbnQoJy0tbm8tb3ZlcnJpZGVzJywgJy1PJywgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0nRG8gbm90IGNyZWF0ZSBicmFuY2hlcyBmb3Igb3RoZXIgb3ZlcnJpZGUgY29uZmlndXJhdGlvbnMnKQogICAgIHBhcnNlcl9leHRyYWN0LmFkZF9hcmd1bWVudCgnLS1rZWVwLXRlbXAnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdLZWVwIHRlbXBvcmFyeSBkaXJlY3RvcnkgKGZvciBkZWJ1Z2dpbmcpJykKICAgICBwYXJzZXJfZXh0cmFjdC5zZXRfZGVmYXVsdHMoZnVuYz1leHRyYWN0LCBmaXhlZF9zZXR1cD1jb250ZXh0LmZpeGVkX3NldHVwKQogCkBAIC0xODQzLDYgKzIxMzIsOSBAQAogICAgIHBhcnNlcl91cGRhdGVfcmVjaXBlLmFkZF9hcmd1bWVudCgnLS1hcHBlbmQnLCAnLWEnLCBoZWxwPSdXcml0ZSBjaGFuZ2VzIHRvIGEgYmJhcHBlbmQgaW4gdGhlIHNwZWNpZmllZCBsYXllciBpbnN0ZWFkIG9mIHRoZSByZWNpcGUnLCBtZXRhdmFyPSdMQVlFUkRJUicpCiAgICAgcGFyc2VyX3VwZGF0ZV9yZWNpcGUuYWRkX2FyZ3VtZW50KCctLXdpbGRjYXJkLXZlcnNpb24nLCAnLXcnLCBoZWxwPSdJbiBjb25qdW5jdGlvbiB3aXRoIC1hLy0tYXBwZW5kLCB1c2UgYSB3aWxkY2FyZCB0byBtYWtlIHRoZSBiYmFwcGVuZCBhcHBseSB0byBhbnkgcmVjaXBlIHZlcnNpb24nLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgIHBhcnNlcl91cGRhdGVfcmVjaXBlLmFkZF9hcmd1bWVudCgnLS1uby1yZW1vdmUnLCAnLW4nLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdEb25cJ3QgcmVtb3ZlIHBhdGNoZXMsIG9ubHkgYWRkIG9yIHVwZGF0ZScpCisgICAgcGFyc2VyX3VwZGF0ZV9yZWNpcGUuYWRkX2FyZ3VtZW50KCctLW5vLW92ZXJyaWRlcycsICctTycsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9J0RvIG5vdCBoYW5kbGUgb3RoZXIgb3ZlcnJpZGUgYnJhbmNoZXMgKGlmIHRoZXkgZXhpc3QpJykKKyAgICBwYXJzZXJfdXBkYXRlX3JlY2lwZS5hZGRfYXJndW1lbnQoJy0tZHJ5LXJ1bicsICctTicsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9J0RyeS1ydW4gKGp1c3QgcmVwb3J0IGNoYW5nZXMgaW5zdGVhZCBvZiB3cml0aW5nIHRoZW0pJykKKyAgICBwYXJzZXJfdXBkYXRlX3JlY2lwZS5hZGRfYXJndW1lbnQoJy0tZm9yY2UtcGF0Y2gtcmVmcmVzaCcsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9J1VwZGF0ZSBwYXRjaGVzIGluIHRoZSBsYXllciBldmVuIGlmIHRoZXkgaGF2ZSBub3QgYmVlbiBtb2RpZmllZCAodXNlZnVsIGZvciByZWZyZXNoaW5nIHBhdGNoIGNvbnRleHQpJykKICAgICBwYXJzZXJfdXBkYXRlX3JlY2lwZS5zZXRfZGVmYXVsdHMoZnVuYz11cGRhdGVfcmVjaXBlKQogCiAgICAgcGFyc2VyX3N0YXR1cyA9IHN1YnBhcnNlcnMuYWRkX3BhcnNlcignc3RhdHVzJywgaGVscD0nU2hvdyB3b3Jrc3BhY2Ugc3RhdHVzJywKQEAgLTE4NTksMTAgKzIxNTEsMTQgQEAKICAgICBwYXJzZXJfcmVzZXQuc2V0X2RlZmF1bHRzKGZ1bmM9cmVzZXQpCiAKICAgICBwYXJzZXJfZmluaXNoID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdmaW5pc2gnLCBoZWxwPSdGaW5pc2ggd29ya2luZyBvbiBhIHJlY2lwZSBpbiB5b3VyIHdvcmtzcGFjZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdQdXNoZXMgYW55IGNvbW1pdHRlZCBjaGFuZ2VzIHRvIHRoZSBzcGVjaWZpZWQgcmVjaXBlIHRvIHRoZSBzcGVjaWZpZWQgbGF5ZXIgYW5kIHJlbW92ZXMgaXQgZnJvbSB5b3VyIHdvcmtzcGFjZS4gUm91Z2hseSBlcXVpdmFsZW50IHRvIGFuIHVwZGF0ZS1yZWNpcGUgZm9sbG93ZWQgYnkgcmVzZXQsIGV4Y2VwdCB0aGUgdXBkYXRlLXJlY2lwZSBzdGVwIHdpbGwgZG8gdGhlICJyaWdodCB0aGluZyIgZGVwZW5kaW5nIG9uIHRoZSByZWNpcGUgYW5kIHRoZSBkZXN0aW5hdGlvbiBsYXllciBzcGVjaWZpZWQuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J1B1c2hlcyBhbnkgY29tbWl0dGVkIGNoYW5nZXMgdG8gdGhlIHNwZWNpZmllZCByZWNpcGUgdG8gdGhlIHNwZWNpZmllZCBsYXllciBhbmQgcmVtb3ZlcyBpdCBmcm9tIHlvdXIgd29ya3NwYWNlLiBSb3VnaGx5IGVxdWl2YWxlbnQgdG8gYW4gdXBkYXRlLXJlY2lwZSBmb2xsb3dlZCBieSByZXNldCwgZXhjZXB0IHRoZSB1cGRhdGUtcmVjaXBlIHN0ZXAgd2lsbCBkbyB0aGUgInJpZ2h0IHRoaW5nIiBkZXBlbmRpbmcgb24gdGhlIHJlY2lwZSBhbmQgdGhlIGRlc3RpbmF0aW9uIGxheWVyIHNwZWNpZmllZC4gTm90ZSB0aGF0IHlvdXIgY2hhbmdlcyBtdXN0IGhhdmUgYmVlbiBjb21taXR0ZWQgdG8gdGhlIGdpdCByZXBvc2l0b3J5IGluIG9yZGVyIHRvIGJlIHJlY29nbmlzZWQuJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA9J3dvcmtpbmcnLCBvcmRlcj0tMTAwKQogICAgIHBhcnNlcl9maW5pc2guYWRkX2FyZ3VtZW50KCdyZWNpcGVuYW1lJywgaGVscD0nUmVjaXBlIHRvIGZpbmlzaCcpCiAgICAgcGFyc2VyX2ZpbmlzaC5hZGRfYXJndW1lbnQoJ2Rlc3RpbmF0aW9uJywgaGVscD0nTGF5ZXIvcGF0aCB0byBwdXQgcmVjaXBlIGludG8uIENhbiBiZSB0aGUgbmFtZSBvZiBhIGxheWVyIGNvbmZpZ3VyZWQgaW4geW91ciBiYmxheWVycy5jb25mLCB0aGUgcGF0aCB0byB0aGUgYmFzZSBvZiBhIGxheWVyLCBvciBhIHBhcnRpYWwgcGF0aCBpbnNpZGUgYSBsYXllci4gJShwcm9nKXMgd2lsbCBhdHRlbXB0IHRvIGNvbXBsZXRlIHRoZSBwYXRoIGJhc2VkIG9uIHRoZSBsYXllclwncyBzdHJ1Y3R1cmUuJykKICAgICBwYXJzZXJfZmluaXNoLmFkZF9hcmd1bWVudCgnLS1tb2RlJywgJy1tJywgY2hvaWNlcz1bJ3BhdGNoJywgJ3NyY3JldicsICdhdXRvJ10sIGRlZmF1bHQ9J2F1dG8nLCBoZWxwPSdVcGRhdGUgbW9kZSAod2hlcmUgJShtZXRhdmFyKXMgaXMgJShjaG9pY2VzKXM7IGRlZmF1bHQgaXMgJShkZWZhdWx0KXMpJywgbWV0YXZhcj0nTU9ERScpCiAgICAgcGFyc2VyX2ZpbmlzaC5hZGRfYXJndW1lbnQoJy0taW5pdGlhbC1yZXYnLCBoZWxwPSdPdmVycmlkZSBzdGFydGluZyByZXZpc2lvbiBmb3IgcGF0Y2hlcycpCisgICAgcGFyc2VyX2ZpbmlzaC5hZGRfYXJndW1lbnQoJy0tZm9yY2UnLCAnLWYnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdGb3JjZSBjb250aW51aW5nIGV2ZW4gaWYgdGhlcmUgYXJlIHVuY29tbWl0dGVkIGNoYW5nZXMgaW4gdGhlIHNvdXJjZSB0cmVlIHJlcG9zaXRvcnknKQorICAgIHBhcnNlcl9maW5pc2guYWRkX2FyZ3VtZW50KCctLW5vLW92ZXJyaWRlcycsICctTycsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9J0RvIG5vdCBoYW5kbGUgb3RoZXIgb3ZlcnJpZGUgYnJhbmNoZXMgKGlmIHRoZXkgZXhpc3QpJykKKyAgICBwYXJzZXJfZmluaXNoLmFkZF9hcmd1bWVudCgnLS1kcnktcnVuJywgJy1OJywgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0nRHJ5LXJ1biAoanVzdCByZXBvcnQgY2hhbmdlcyBpbnN0ZWFkIG9mIHdyaXRpbmcgdGhlbSknKQorICAgIHBhcnNlcl9maW5pc2guYWRkX2FyZ3VtZW50KCctLWZvcmNlLXBhdGNoLXJlZnJlc2gnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdVcGRhdGUgcGF0Y2hlcyBpbiB0aGUgbGF5ZXIgZXZlbiBpZiB0aGV5IGhhdmUgbm90IGJlZW4gbW9kaWZpZWQgKHVzZWZ1bCBmb3IgcmVmcmVzaGluZyBwYXRjaCBjb250ZXh0KScpCiAgICAgcGFyc2VyX2ZpbmlzaC5zZXRfZGVmYXVsdHMoZnVuYz1maW5pc2gpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC91cGdyYWRlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvdXBncmFkZS5weQppbmRleCBmMWIzZmYwLi5jM2ZkODY2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvZGV2dG9vbC91cGdyYWRlLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL3VwZ3JhZGUucHkKQEAgLTMzLDcgKzMzLDcgQEAKIAogaW1wb3J0IG9lLnJlY2lwZXV0aWxzCiBmcm9tIGRldnRvb2wgaW1wb3J0IHN0YW5kYXJkCi1mcm9tIGRldnRvb2wgaW1wb3J0IGV4ZWNfYnVpbGRfZW52X2NvbW1hbmQsIHNldHVwX3RpbmZvaWwsIERldnRvb2xFcnJvciwgcGFyc2VfcmVjaXBlLCB1c2VfZXh0ZXJuYWxfYnVpbGQsIHVwZGF0ZV91bmxvY2tlZHNpZ3MKK2Zyb20gZGV2dG9vbCBpbXBvcnQgZXhlY19idWlsZF9lbnZfY29tbWFuZCwgc2V0dXBfdGluZm9pbCwgRGV2dG9vbEVycm9yLCBwYXJzZV9yZWNpcGUsIHVzZV9leHRlcm5hbF9idWlsZCwgdXBkYXRlX3VubG9ja2Vkc2lncywgY2hlY2tfcHJlcmVsZWFzZV92ZXJzaW9uCiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdkZXZ0b29sJykKIApAQCAtNTUsMTcgKzU1LDYgQEAKICAgICAgICAgZGVzdF9wYXRoID0gb3MucGF0aC5qb2luKGRlc3QsIHBhdGgpCiAgICAgICAgIHNodXRpbC5tb3ZlKG9zLnBhdGguam9pbihvcmlnLCBwYXRoKSwgZGVzdF9wYXRoKQogCi1kZWYgX2dldF9jaGVja3N1bXMocmYpOgotICAgIGltcG9ydCByZQotICAgIGNoZWNrc3VtcyA9IHt9Ci0gICAgd2l0aCBvcGVuKHJmKSBhcyBmOgotICAgICAgICBmb3IgbGluZSBpbiBmOgotICAgICAgICAgICAgZm9yIGNzIGluIFsnbWQ1c3VtJywgJ3NoYTI1NnN1bSddOgotICAgICAgICAgICAgICAgIG0gPSByZS5tYXRjaCgiXlNSQ19VUklcWyVzXF0uKj0uKlwiKC4qKVwiIiAlIGNzLCBsaW5lKQotICAgICAgICAgICAgICAgIGlmIG06Ci0gICAgICAgICAgICAgICAgICAgIGNoZWNrc3Vtc1tjc10gPSBtLmdyb3VwKDEpCi0gICAgcmV0dXJuIGNoZWNrc3VtcwotCiBkZWYgX3JlbW92ZV9wYXRjaF9kaXJzKHJlY2lwZWZvbGRlcik6CiAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsocmVjaXBlZm9sZGVyKToKICAgICAgICAgZm9yIGQgaW4gZGlyczoKQEAgLTIwMiw2ICsxOTEsOCBAQAogICAgICAgICBfX3J1bignZ2l0IHRhZyAtZiBkZXZ0b29sLWJhc2UtbmV3JykKICAgICAgICAgbWQ1ID0gTm9uZQogICAgICAgICBzaGEyNTYgPSBOb25lCisgICAgICAgIF8sIF8sIF8sIF8sIF8sIHBhcmFtcyA9IGJiLmZldGNoMi5kZWNvZGV1cmwodXJpKQorICAgICAgICBzcmNzdWJkaXJfcmVsID0gcGFyYW1zLmdldCgnZGVzdHN1ZmZpeCcsICdnaXQnKQogICAgICAgICBpZiBub3Qgc3JjYnJhbmNoOgogICAgICAgICAgICAgY2hlY2tfYnJhbmNoLCBjaGVja19icmFuY2hfZXJyID0gX19ydW4oJ2dpdCBicmFuY2ggLXIgLS1jb250YWlucyAlcycgJSBzcmNyZXYpCiAgICAgICAgICAgICBnZXRfYnJhbmNoID0gW3guc3RyaXAoKSBmb3IgeCBpbiBjaGVja19icmFuY2guc3BsaXRsaW5lcygpXQpAQCAtMjM2LDYgKzIyNyw3IEBACiAKICAgICAgICAgdG1wc3JjdHJlZSA9IF9nZXRfc3JjdHJlZSh0bXBkaXIpCiAgICAgICAgIHNyY3RyZWUgPSBvcy5wYXRoLmFic3BhdGgoc3JjdHJlZSkKKyAgICAgICAgc3Jjc3ViZGlyX3JlbCA9IG9zLnBhdGgucmVscGF0aCh0bXBzcmN0cmVlLCB0bXBkaXIpCiAKICAgICAgICAgIyBEZWxldGUgYWxsIHNvdXJjZXMgc28gd2UgZW5zdXJlIG5vIHN0cmF5IGZpbGVzIGFyZSBsZWZ0IG92ZXIKICAgICAgICAgZm9yIGl0ZW0gaW4gb3MubGlzdGRpcihzcmN0cmVlKToKQEAgLTI1MSw4ICsyNDMsMTUgQEAKICAgICAgICAgX2NvcHlfc291cmNlX2NvZGUodG1wc3JjdHJlZSwgc3JjdHJlZSkKIAogICAgICAgICAoc3Rkb3V0LF8pID0gX19ydW4oJ2dpdCBscy1maWxlcyAtLW1vZGlmaWVkIC0tb3RoZXJzIC0tZXhjbHVkZS1zdGFuZGFyZCcpCi0gICAgICAgIGZvciBmIGluIHN0ZG91dC5zcGxpdGxpbmVzKCk6Ci0gICAgICAgICAgICBfX3J1bignZ2l0IGFkZCAiJXMiJyAlIGYpCisgICAgICAgIGZpbGVsaXN0ID0gc3Rkb3V0LnNwbGl0bGluZXMoKQorICAgICAgICBwYmFyID0gYmIudWkua25vdHR5LkJCUHJvZ3Jlc3MoJ0FkZGluZyBjaGFuZ2VkIGZpbGVzJywgbGVuKGZpbGVsaXN0KSkKKyAgICAgICAgcGJhci5zdGFydCgpCisgICAgICAgIGJhdGNoc2l6ZSA9IDEwMAorICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oZmlsZWxpc3QpLCBiYXRjaHNpemUpOgorICAgICAgICAgICAgYmF0Y2ggPSBmaWxlbGlzdFtpOmkrYmF0Y2hzaXplXQorICAgICAgICAgICAgX19ydW4oJ2dpdCBhZGQgLUEgJXMnICUgJyAnLmpvaW4oWyciJXMiJyAlIGl0ZW0gZm9yIGl0ZW0gaW4gYmF0Y2hdKSkKKyAgICAgICAgICAgIHBiYXIudXBkYXRlKGkpCisgICAgICAgIHBiYXIuZmluaXNoKCkKIAogICAgICAgICB1c2Vyb3B0aW9ucyA9IFtdCiAgICAgICAgIG9lLnBhdGNoLkdpdEFwcGx5VHJlZS5naXRDb21tYW5kVXNlck9wdGlvbnModXNlcm9wdGlvbnMsIGQ9cmQpCkBAIC0yNjQsMTAgKzI2Myw4IEBACiAKICAgICBpZiBub19wYXRjaDoKICAgICAgICAgcGF0Y2hlcyA9IG9lLnJlY2lwZXV0aWxzLmdldF9yZWNpcGVfcGF0Y2hlcyhjcmQpCi0gICAgICAgIGlmIGxlbihwYXRjaGVzKToKLSAgICAgICAgICAgIGxvZ2dlci53YXJuKCdCeSB1c2VyIGNob2ljZSwgdGhlIGZvbGxvd2luZyBwYXRjaGVzIHdpbGwgTk9UIGJlIGFwcGxpZWQnKQotICAgICAgICAgICAgZm9yIHBhdGNoIGluIHBhdGNoZXM6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oIiVzIiAlIG9zLnBhdGguYmFzZW5hbWUocGF0Y2gpKQorICAgICAgICBpZiBwYXRjaGVzOgorICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ0J5IHVzZXIgY2hvaWNlLCB0aGUgZm9sbG93aW5nIHBhdGNoZXMgd2lsbCBOT1QgYmUgYXBwbGllZCB0byB0aGUgbmV3IHNvdXJjZSB0cmVlOlxuICAlcycgJSAnXG4gICcuam9pbihbb3MucGF0aC5iYXNlbmFtZShwYXRjaCkgZm9yIHBhdGNoIGluIHBhdGNoZXNdKSkKICAgICBlbHNlOgogICAgICAgICBfX3J1bignZ2l0IGNoZWNrb3V0IGRldnRvb2wtcGF0Y2hlZCAtYiAlcycgJSBicmFuY2gpCiAgICAgICAgIHNraXB0YWcgPSBGYWxzZQpAQCAtMjkyLDkgKzI4OSwyOCBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSh0bXBzcmN0cmVlKQogCi0gICAgcmV0dXJuIChyZXYsIG1kNSwgc2hhMjU2LCBzcmNicmFuY2gpCisgICAgcmV0dXJuIChyZXYsIG1kNSwgc2hhMjU2LCBzcmNicmFuY2gsIHNyY3N1YmRpcl9yZWwpCiAKLWRlZiBfY3JlYXRlX25ld19yZWNpcGUobmV3cHYsIG1kNSwgc2hhMjU2LCBzcmNyZXYsIHNyY2JyYW5jaCwgd29ya3NwYWNlLCB0aW5mb2lsLCByZCk6CitkZWYgX2FkZF9saWNlbnNlX2RpZmZfdG9fcmVjaXBlKHBhdGgsIGRpZmYpOgorICAgIG5vdGljZV90ZXh0ID0gIiIiIyBGSVhNRTogdGhlIExJQ19GSUxFU19DSEtTVU0gdmFsdWVzIGhhdmUgYmVlbiB1cGRhdGVkIGJ5ICdkZXZ0b29sIHVwZ3JhZGUnLgorIyBUaGUgZm9sbG93aW5nIGlzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIG9sZCBhbmQgdGhlIG5ldyBsaWNlbnNlIHRleHQuCisjIFBsZWFzZSB1cGRhdGUgdGhlIExJQ0VOU0UgdmFsdWUgaWYgbmVlZGVkLCBhbmQgc3VtbWFyaXplIHRoZSBjaGFuZ2VzIGluCisjIHRoZSBjb21taXQgbWVzc2FnZSB2aWEgJ0xpY2Vuc2UtVXBkYXRlOicgdGFnLgorIyAoZXhhbXBsZTogJ0xpY2Vuc2UtVXBkYXRlOiBjb3B5cmlnaHQgeWVhcnMgdXBkYXRlZC4nKQorIworIyBUaGUgY2hhbmdlczoKKyMKKyIiIgorICAgIGNvbW1lbnRlZF9kaWZmID0gIlxuIi5qb2luKFsiIyB7fSIuZm9ybWF0KGwpIGZvciBsIGluIGRpZmYuc3BsaXQoJ1xuJyldKQorICAgIHdpdGggb3BlbihwYXRoLCAncmInKSBhcyBmOgorICAgICAgICBvcmlnX2NvbnRlbnQgPSBmLnJlYWQoKQorICAgIHdpdGggb3BlbihwYXRoLCAnd2InKSBhcyBmOgorICAgICAgICBmLndyaXRlKG5vdGljZV90ZXh0LmVuY29kZSgpKQorICAgICAgICBmLndyaXRlKGNvbW1lbnRlZF9kaWZmLmVuY29kZSgpKQorICAgICAgICBmLndyaXRlKCJcbiNcblxuIi5lbmNvZGUoKSkKKyAgICAgICAgZi53cml0ZShvcmlnX2NvbnRlbnQpCisKK2RlZiBfY3JlYXRlX25ld19yZWNpcGUobmV3cHYsIG1kNSwgc2hhMjU2LCBzcmNyZXYsIHNyY2JyYW5jaCwgc3Jjc3ViZGlyX29sZCwgc3Jjc3ViZGlyX25ldywgd29ya3NwYWNlLCB0aW5mb2lsLCByZCwgbGljZW5zZV9kaWZmLCBuZXdfbGljZW5zZXMpOgogICAgICIiIkNyZWF0ZXMgdGhlIG5ldyByZWNpcGUgdW5kZXIgd29ya3NwYWNlIiIiCiAKICAgICBicG4gPSByZC5nZXRWYXIoJ0JQTicpCkBAIC0zNDYsOSArMzYyLDY3IEBACiAKICAgICBuZXd2YWx1ZXNbJ1BSJ10gPSBOb25lCiAKKyAgICAjIFdvcmsgb3V0IHdoaWNoIFNSQ19VUkkgZW50cmllcyBoYXZlIGNoYW5nZWQgaW4gY2FzZSB0aGUgZW50cnkgdXNlcyBhIG5hbWUKKyAgICBjcmQgPSByZC5jcmVhdGVDb3B5KCkKKyAgICBjcmQuc2V0VmFyKCdQVicsIG5ld3B2KQorICAgIGZvciB2YXIsIHZhbHVlIGluIG5ld3ZhbHVlcy5pdGVtcygpOgorICAgICAgICBjcmQuc2V0VmFyKHZhciwgdmFsdWUpCisgICAgb2xkX3NyY191cmkgPSAocmQuZ2V0VmFyKCdTUkNfVVJJJykgb3IgJycpLnNwbGl0KCkKKyAgICBuZXdfc3JjX3VyaSA9IChjcmQuZ2V0VmFyKCdTUkNfVVJJJykgb3IgJycpLnNwbGl0KCkKKyAgICBuZXduYW1lcyA9IFtdCisgICAgYWRkbmFtZXMgPSBbXQorICAgIGZvciBuZXdlbnRyeSBpbiBuZXdfc3JjX3VyaToKKyAgICAgICAgXywgXywgXywgXywgXywgcGFyYW1zID0gYmIuZmV0Y2gyLmRlY29kZXVybChuZXdlbnRyeSkKKyAgICAgICAgaWYgJ25hbWUnIGluIHBhcmFtczoKKyAgICAgICAgICAgIG5ld25hbWVzLmFwcGVuZChwYXJhbXNbJ25hbWUnXSkKKyAgICAgICAgICAgIGlmIG5ld2VudHJ5IG5vdCBpbiBvbGRfc3JjX3VyaToKKyAgICAgICAgICAgICAgICBhZGRuYW1lcy5hcHBlbmQocGFyYW1zWyduYW1lJ10pCisgICAgIyBGaW5kIHdoYXQncyBiZWVuIHNldCBpbiB0aGUgb3JpZ2luYWwgcmVjaXBlCisgICAgb2xkbmFtZXMgPSBbXQorICAgIG5vbmFtZSA9IEZhbHNlCisgICAgZm9yIHZhcmZsYWcgaW4gcmQuZ2V0VmFyRmxhZ3MoJ1NSQ19VUkknKToKKyAgICAgICAgaWYgdmFyZmxhZy5lbmRzd2l0aCgoJy5tZDVzdW0nLCAnLnNoYTI1NnN1bScpKToKKyAgICAgICAgICAgIG5hbWUgPSB2YXJmbGFnLnJzcGxpdCgnLicsIDEpWzBdCisgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBvbGRuYW1lczoKKyAgICAgICAgICAgICAgICBvbGRuYW1lcy5hcHBlbmQobmFtZSkKKyAgICAgICAgZWxpZiB2YXJmbGFnIGluIFsnbWQ1c3VtJywgJ3NoYTI1NnN1bSddOgorICAgICAgICAgICAgbm9uYW1lID0gVHJ1ZQorICAgICMgRXZlbiBpZiBTUkNfVVJJIGhhcyBuYW1lZCBlbnRyaWVzIGl0IGRvZXNuJ3QgaGF2ZSB0byBhY3R1YWxseSB1c2UgdGhlIG5hbWUKKyAgICBpZiBub25hbWUgYW5kIGFkZG5hbWVzIGFuZCBhZGRuYW1lc1swXSBub3QgaW4gb2xkbmFtZXM6CisgICAgICAgIGFkZG5hbWVzID0gW10KKyAgICAjIERyb3AgYW55IG9sZCBuYW1lcyAodGhlIG5hbWUgYWN0dWFsbHkgbWlnaHQgaW5jbHVkZSAke1BWfSkKKyAgICBmb3IgbmFtZSBpbiBvbGRuYW1lczoKKyAgICAgICAgaWYgbmFtZSBub3QgaW4gbmV3bmFtZXM6CisgICAgICAgICAgICBuZXd2YWx1ZXNbJ1NSQ19VUklbJXMubWQ1c3VtXScgJSBuYW1lXSA9IE5vbmUKKyAgICAgICAgICAgIG5ld3ZhbHVlc1snU1JDX1VSSVslcy5zaGEyNTZzdW1dJyAlIG5hbWVdID0gTm9uZQorCiAgICAgaWYgbWQ1IGFuZCBzaGEyNTY6Ci0gICAgICAgIG5ld3ZhbHVlc1snU1JDX1VSSVttZDVzdW1dJ10gPSBtZDUKLSAgICAgICAgbmV3dmFsdWVzWydTUkNfVVJJW3NoYTI1NnN1bV0nXSA9IHNoYTI1NgorICAgICAgICBpZiBhZGRuYW1lczoKKyAgICAgICAgICAgIG5hbWVwcmVmaXggPSAnJXMuJyAlIGFkZG5hbWVzWzBdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBuYW1lcHJlZml4ID0gJycKKyAgICAgICAgbmV3dmFsdWVzWydTUkNfVVJJWyVzbWQ1c3VtXScgJSBuYW1lcHJlZml4XSA9IG1kNQorICAgICAgICBuZXd2YWx1ZXNbJ1NSQ19VUklbJXNzaGEyNTZzdW1dJyAlIG5hbWVwcmVmaXhdID0gc2hhMjU2CisKKyAgICBpZiBzcmNzdWJkaXJfbmV3ICE9IHNyY3N1YmRpcl9vbGQ6CisgICAgICAgIHNfc3ViZGlyX29sZCA9IG9zLnBhdGgucmVscGF0aChvcy5wYXRoLmFic3BhdGgocmQuZ2V0VmFyKCdTJykpLCByZC5nZXRWYXIoJ1dPUktESVInKSkKKyAgICAgICAgc19zdWJkaXJfbmV3ID0gb3MucGF0aC5yZWxwYXRoKG9zLnBhdGguYWJzcGF0aChjcmQuZ2V0VmFyKCdTJykpLCBjcmQuZ2V0VmFyKCdXT1JLRElSJykpCisgICAgICAgIGlmIHNyY3N1YmRpcl9vbGQgPT0gc19zdWJkaXJfb2xkIGFuZCBzcmNzdWJkaXJfbmV3ICE9IHNfc3ViZGlyX25ldzoKKyAgICAgICAgICAgICMgU3ViZGlyIGZvciBvbGQgZXh0cmFjdGVkIHNvdXJjZSBtYXRjaGVzIHdoYXQgUyBwb2ludHMgdG8gKGl0IHNob3VsZCEpCisgICAgICAgICAgICAjIGJ1dCBzdWJkaXIgZm9yIG5ldyBleHRyYWN0ZWQgc291cmNlIGRvZXNuJ3QgbWF0Y2ggd2hhdCBTIHdpbGwgYmUKKyAgICAgICAgICAgIG5ld3ZhbHVlc1snUyddID0gJyR7V09SS0RJUn0vJXMnICUgc3Jjc3ViZGlyX25ldy5yZXBsYWNlKG5ld3B2LCAnJHtQVn0nKQorICAgICAgICAgICAgaWYgY3JkLmV4cGFuZChuZXd2YWx1ZXNbJ1MnXSkgPT0gY3JkLmV4cGFuZCgnJHtXT1JLRElSfS8ke0JQfScpOgorICAgICAgICAgICAgICAgICMgSXQncyB0aGUgZGVmYXVsdCwgZHJvcCBpdAorICAgICAgICAgICAgICAgICMgRklYTUUgd2hhdCBpZiBTIGlzIGJlaW5nIHNldCBpbiBhIC5pbmM/CisgICAgICAgICAgICAgICAgbmV3dmFsdWVzWydTJ10gPSBOb25lCisgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1NvdXJjZSBzdWJkaXJlY3RvcnkgaGFzIGNoYW5nZWQsIGRyb3BwaW5nIFMgdmFsdWUgc2luY2UgaXQgbm93IG1hdGNoZXMgdGhlIGRlZmF1bHQgKCIke1dPUktESVJ9LyR7QlB9IiknKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnU291cmNlIHN1YmRpcmVjdG9yeSBoYXMgY2hhbmdlZCwgdXBkYXRpbmcgUyB2YWx1ZScpCisKKyAgICBpZiBsaWNlbnNlX2RpZmY6CisgICAgICAgIG5ld2xpY2Noa3N1bSA9ICIgIi5qb2luKFsiZmlsZTovL3t9O21kNT17fSIuZm9ybWF0KGxbInBhdGgiXSwgbFsiYWN0dWFsX21kNSJdKSArICgiO2JlZ2lubGluZT17fSIuZm9ybWF0KGxbImJlZ2lubGluZSJdKSBpZiBsWyJiZWdpbmxpbmUiXSBlbHNlICIiKSArICgiO2VuZGxpbmU9e30iLmZvcm1hdChsWyJlbmRsaW5lIl0pIGlmIGxbImVuZGxpbmUiXSBlbHNlICIiKSBmb3IgbCBpbiBuZXdfbGljZW5zZXNdKQorICAgICAgICBuZXd2YWx1ZXNbIkxJQ19GSUxFU19DSEtTVU0iXSA9IG5ld2xpY2Noa3N1bQorICAgICAgICBfYWRkX2xpY2Vuc2VfZGlmZl90b19yZWNpcGUoZnVsbHBhdGgsIGxpY2Vuc2VfZGlmZikKIAogICAgIHJkID0gdGluZm9pbC5wYXJzZV9yZWNpcGVfZmlsZShmdWxscGF0aCwgRmFsc2UpCiAgICAgb2UucmVjaXBldXRpbHMucGF0Y2hfcmVjaXBlKHJkLCBmdWxscGF0aCwgbmV3dmFsdWVzKQpAQCAtMzc3LDE0ICs0NTEsNTMgQEAKICAgICBpZiBjb25maWdlcnI6CiAgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcignWW91ciBnaXQgY29uZmlndXJhdGlvbiBpcyBpbmNvbXBsZXRlIHdoaWNoIHdpbGwgcHJldmVudCByZWJhc2VzIGZyb20gd29ya2luZzpcbicgKyAnXG4nLmpvaW4oY29uZmlnZXJyKSkKIAorZGVmIF9leHRyYWN0X2xpY2Vuc2VzKHNyY3BhdGgsIHJlY2lwZV9saWNlbnNlcyk6CisgICAgbGljZW5zZXMgPSBbXQorICAgIGZvciB1cmwgaW4gcmVjaXBlX2xpY2Vuc2VzLnNwbGl0KCk6CisgICAgICAgIGxpY2Vuc2UgPSB7fQorICAgICAgICAodHlwZSwgaG9zdCwgcGF0aCwgdXNlciwgcHN3ZCwgcGFybSkgPSBiYi5mZXRjaC5kZWNvZGV1cmwodXJsKQorICAgICAgICBsaWNlbnNlWydwYXRoJ10gPSBwYXRoCisgICAgICAgIGxpY2Vuc2VbJ21kNSddID0gcGFybS5nZXQoJ21kNScsICcnKQorICAgICAgICBsaWNlbnNlWydiZWdpbmxpbmUnXSwgbGljZW5zZVsnZW5kbGluZSddID0gMCwgMAorICAgICAgICBpZiAnYmVnaW5saW5lJyBpbiBwYXJtOgorICAgICAgICAgICAgbGljZW5zZVsnYmVnaW5saW5lJ10gPSBpbnQocGFybVsnYmVnaW5saW5lJ10pCisgICAgICAgIGlmICdlbmRsaW5lJyBpbiBwYXJtOgorICAgICAgICAgICAgbGljZW5zZVsnZW5kbGluZSddID0gaW50KHBhcm1bJ2VuZGxpbmUnXSkKKyAgICAgICAgbGljZW5zZVsndGV4dCddID0gW10KKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzcmNwYXRoLCBwYXRoKSwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIGltcG9ydCBoYXNobGliCisgICAgICAgICAgICBhY3R1YWxfbWQ1ID0gaGFzaGxpYi5tZDUoKQorICAgICAgICAgICAgbGluZW5vID0gMAorICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICBsaW5lbm8gKz0gMQorICAgICAgICAgICAgICAgIGlmIChsaW5lbm8gPj0gbGljZW5zZVsnYmVnaW5saW5lJ10pIGFuZCAoKGxpbmVubyA8PSBsaWNlbnNlWydlbmRsaW5lJ10pIG9yIG5vdCBsaWNlbnNlWydlbmRsaW5lJ10pOgorICAgICAgICAgICAgICAgICAgICBsaWNlbnNlWyd0ZXh0J10uYXBwZW5kKGxpbmUuZGVjb2RlKGVycm9ycz0naWdub3JlJykpCisgICAgICAgICAgICAgICAgICAgIGFjdHVhbF9tZDUudXBkYXRlKGxpbmUpCisgICAgICAgIGxpY2Vuc2VbJ2FjdHVhbF9tZDUnXSA9IGFjdHVhbF9tZDUuaGV4ZGlnZXN0KCkKKyAgICAgICAgbGljZW5zZXMuYXBwZW5kKGxpY2Vuc2UpCisgICAgcmV0dXJuIGxpY2Vuc2VzCisKK2RlZiBfZ2VuZXJhdGVfbGljZW5zZV9kaWZmKG9sZF9saWNlbnNlcywgbmV3X2xpY2Vuc2VzKToKKyAgICBuZWVkX2RpZmYgPSBGYWxzZQorICAgIGZvciBsIGluIG5ld19saWNlbnNlczoKKyAgICAgICAgaWYgbFsnbWQ1J10gIT0gbFsnYWN0dWFsX21kNSddOgorICAgICAgICAgICAgbmVlZF9kaWZmID0gVHJ1ZQorICAgICAgICAgICAgYnJlYWsKKyAgICBpZiBuZWVkX2RpZmYgPT0gRmFsc2U6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBpbXBvcnQgZGlmZmxpYgorICAgIGRpZmYgPSAnJworICAgIGZvciBvbGQsIG5ldyBpbiB6aXAob2xkX2xpY2Vuc2VzLCBuZXdfbGljZW5zZXMpOgorICAgICAgICBmb3IgbGluZSBpbiBkaWZmbGliLnVuaWZpZWRfZGlmZihvbGRbJ3RleHQnXSwgbmV3Wyd0ZXh0J10sIG9sZFsncGF0aCddLCBuZXdbJ3BhdGgnXSk6CisgICAgICAgICAgICBkaWZmID0gZGlmZiArIGxpbmUKKyAgICByZXR1cm4gZGlmZgogCiBkZWYgdXBncmFkZShhcmdzLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UpOgogICAgICIiIkVudHJ5IHBvaW50IGZvciB0aGUgZGV2dG9vbCAndXBncmFkZScgc3ViY29tbWFuZCIiIgogCiAgICAgaWYgYXJncy5yZWNpcGVuYW1lIGluIHdvcmtzcGFjZToKICAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCJyZWNpcGUgJXMgaXMgYWxyZWFkeSBpbiB5b3VyIHdvcmtzcGFjZSIgJSBhcmdzLnJlY2lwZW5hbWUpCi0gICAgaWYgbm90IGFyZ3MudmVyc2lvbiBhbmQgbm90IGFyZ3Muc3JjcmV2OgotICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoIllvdSBtdXN0IHByb3ZpZGUgYSB2ZXJzaW9uIHVzaW5nIHRoZSAtLXZlcnNpb24vLVYgb3B0aW9uLCBvciBmb3IgcmVjaXBlcyB0aGF0IGZldGNoIGZyb20gYW4gU0NNIHN1Y2ggYXMgZ2l0LCB0aGUgLS1zcmNyZXYvLVMgb3B0aW9uIikKICAgICBpZiBhcmdzLnNyY2JyYW5jaCBhbmQgbm90IGFyZ3Muc3JjcmV2OgogICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoIklmIHlvdSBzcGVjaWZ5IC0tc3JjYnJhbmNoLy1CIHRoZW4geW91IG11c3QgdXNlIC0tc3JjcmV2Ly1TIHRvIHNwZWNpZnkgdGhlIHJldmlzaW9uIiAlIGFyZ3MucmVjaXBlbmFtZSkKIApAQCAtNDA3LDIyICs1MjAsNDMgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNyY3RyZWUgPSBzdGFuZGFyZC5nZXRfZGVmYXVsdF9zcmN0cmVlKGNvbmZpZywgcG4pCiAKKyAgICAgICAgIyB0cnkgdG8gYXV0b21hdGljYWxseSBkaXNjb3ZlciBsYXRlc3QgdmVyc2lvbiBhbmQgcmV2aXNpb24gaWYgbm90IHByb3ZpZGVkIG9uIGNvbW1hbmQgbGluZQorICAgICAgICBpZiBub3QgYXJncy52ZXJzaW9uIGFuZCBub3QgYXJncy5zcmNyZXY6CisgICAgICAgICAgICB2ZXJzaW9uX2luZm8gPSBvZS5yZWNpcGV1dGlscy5nZXRfcmVjaXBlX3Vwc3RyZWFtX3ZlcnNpb24ocmQpCisgICAgICAgICAgICBpZiB2ZXJzaW9uX2luZm9bJ3ZlcnNpb24nXSBhbmQgbm90IHZlcnNpb25faW5mb1sndmVyc2lvbiddLmVuZHN3aXRoKCJuZXctY29tbWl0cy1hdmFpbGFibGUiKToKKyAgICAgICAgICAgICAgICBhcmdzLnZlcnNpb24gPSB2ZXJzaW9uX2luZm9bJ3ZlcnNpb24nXQorICAgICAgICAgICAgaWYgdmVyc2lvbl9pbmZvWydyZXZpc2lvbiddOgorICAgICAgICAgICAgICAgIGFyZ3Muc3JjcmV2ID0gdmVyc2lvbl9pbmZvWydyZXZpc2lvbiddCisgICAgICAgIGlmIG5vdCBhcmdzLnZlcnNpb24gYW5kIG5vdCBhcmdzLnNyY3JldjoKKyAgICAgICAgICAgIHJhaXNlIERldnRvb2xFcnJvcigiQXV0b21hdGljIGRpc2NvdmVyeSBvZiBsYXRlc3QgdmVyc2lvbi9yZXZpc2lvbiBmYWlsZWQgLSB5b3UgbXVzdCBwcm92aWRlIGEgdmVyc2lvbiB1c2luZyB0aGUgLS12ZXJzaW9uLy1WIG9wdGlvbiwgb3IgZm9yIHJlY2lwZXMgdGhhdCBmZXRjaCBmcm9tIGFuIFNDTSBzdWNoIGFzIGdpdCwgdGhlIC0tc3JjcmV2Ly1TIG9wdGlvbi4iKQorCiAgICAgICAgIHN0YW5kYXJkLl9jaGVja19jb21wYXRpYmxlX3JlY2lwZShwbiwgcmQpCiAgICAgICAgIG9sZF9zcmNyZXYgPSByZC5nZXRWYXIoJ1NSQ1JFVicpCiAgICAgICAgIGlmIG9sZF9zcmNyZXYgPT0gJ0lOVkFMSUQnOgogICAgICAgICAgICAgb2xkX3NyY3JldiA9IE5vbmUKICAgICAgICAgaWYgb2xkX3NyY3JldiBhbmQgbm90IGFyZ3Muc3JjcmV2OgogICAgICAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCJSZWNpcGUgc3BlY2lmaWVzIGEgU1JDUkVWIHZhbHVlOyB5b3UgbXVzdCBzcGVjaWZ5IGEgbmV3IG9uZSB3aGVuIHVwZ3JhZGluZyIpCi0gICAgICAgIGlmIHJkLmdldFZhcignUFYnKSA9PSBhcmdzLnZlcnNpb24gYW5kIG9sZF9zcmNyZXYgPT0gYXJncy5zcmNyZXY6CisgICAgICAgIG9sZF92ZXIgPSByZC5nZXRWYXIoJ1BWJykKKyAgICAgICAgaWYgb2xkX3ZlciA9PSBhcmdzLnZlcnNpb24gYW5kIG9sZF9zcmNyZXYgPT0gYXJncy5zcmNyZXY6CiAgICAgICAgICAgICByYWlzZSBEZXZ0b29sRXJyb3IoIkN1cnJlbnQgYW5kIHVwZ3JhZGUgdmVyc2lvbnMgYXJlIHRoZSBzYW1lIHZlcnNpb24iKQorICAgICAgICBpZiBhcmdzLnZlcnNpb246CisgICAgICAgICAgICBpZiBiYi51dGlscy52ZXJjbXBfc3RyaW5nKGFyZ3MudmVyc2lvbiwgb2xkX3ZlcikgPCAwOgorICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdVcGdyYWRlIHZlcnNpb24gJXMgY29tcGFyZXMgYXMgbGVzcyB0aGFuIHRoZSBjdXJyZW50IHZlcnNpb24gJXMuIElmIHlvdSBhcmUgdXNpbmcgYSBwYWNrYWdlIGZlZWQgZm9yIG9uLXRhcmdldCB1cGdyYWRlcyBvciBwcm92aWRpbmcgdGhpcyByZWNpcGUgZm9yIGdlbmVyYWwgY29uc3VtcHRpb24sIHRoZW4geW91IHNob3VsZCBpbmNyZW1lbnQgUEUgaW4gdGhlIHJlY2lwZSAob3IgaWYgdGhlcmUgaXMgbm8gY3VycmVudCBQRSB2YWx1ZSBzZXQsIHNldCBpdCB0byAiMSIpJyAlIChhcmdzLnZlcnNpb24sIG9sZF92ZXIpKQorICAgICAgICAgICAgY2hlY2tfcHJlcmVsZWFzZV92ZXJzaW9uKGFyZ3MudmVyc2lvbiwgJ2RldnRvb2wgdXBncmFkZScpCiAKICAgICAgICAgcmYgPSBOb25lCisgICAgICAgIGxpY2Vuc2VfZGlmZiA9IE5vbmUKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV2MSA9IHN0YW5kYXJkLl9leHRyYWN0X3NvdXJjZShzcmN0cmVlLCBGYWxzZSwgJ2RldnRvb2wtb3JpZycsIEZhbHNlLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UsIGFyZ3MuZml4ZWRfc2V0dXAsIHJkLCB0aW5mb2lsKQotICAgICAgICAgICAgcmV2MiwgbWQ1LCBzaGEyNTYsIHNyY2JyYW5jaCA9IF9leHRyYWN0X25ld19zb3VyY2UoYXJncy52ZXJzaW9uLCBzcmN0cmVlLCBhcmdzLm5vX3BhdGNoLAorICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ0V4dHJhY3RpbmcgY3VycmVudCB2ZXJzaW9uIHNvdXJjZS4uLicpCisgICAgICAgICAgICByZXYxLCBzcmNzdWJkaXIxID0gc3RhbmRhcmQuX2V4dHJhY3Rfc291cmNlKHNyY3RyZWUsIEZhbHNlLCAnZGV2dG9vbC1vcmlnJywgRmFsc2UsIGNvbmZpZywgYmFzZXBhdGgsIHdvcmtzcGFjZSwgYXJncy5maXhlZF9zZXR1cCwgcmQsIHRpbmZvaWwsIG5vX292ZXJyaWRlcz1hcmdzLm5vX292ZXJyaWRlcykKKyAgICAgICAgICAgIG9sZF9saWNlbnNlcyA9IF9leHRyYWN0X2xpY2Vuc2VzKHNyY3RyZWUsIHJkLmdldFZhcignTElDX0ZJTEVTX0NIS1NVTScpKQorICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ0V4dHJhY3RpbmcgdXBncmFkZWQgdmVyc2lvbiBzb3VyY2UuLi4nKQorICAgICAgICAgICAgcmV2MiwgbWQ1LCBzaGEyNTYsIHNyY2JyYW5jaCwgc3Jjc3ViZGlyMiA9IF9leHRyYWN0X25ld19zb3VyY2UoYXJncy52ZXJzaW9uLCBzcmN0cmVlLCBhcmdzLm5vX3BhdGNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Muc3JjcmV2LCBhcmdzLnNyY2JyYW5jaCwgYXJncy5icmFuY2gsIGFyZ3Mua2VlcF90ZW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbmZvaWwsIHJkKQotICAgICAgICAgICAgcmYsIGNvcGllZCA9IF9jcmVhdGVfbmV3X3JlY2lwZShhcmdzLnZlcnNpb24sIG1kNSwgc2hhMjU2LCBhcmdzLnNyY3Jldiwgc3JjYnJhbmNoLCBjb25maWcud29ya3NwYWNlX3BhdGgsIHRpbmZvaWwsIHJkKQorICAgICAgICAgICAgbmV3X2xpY2Vuc2VzID0gX2V4dHJhY3RfbGljZW5zZXMoc3JjdHJlZSwgcmQuZ2V0VmFyKCdMSUNfRklMRVNfQ0hLU1VNJykpCisgICAgICAgICAgICBsaWNlbnNlX2RpZmYgPSBfZ2VuZXJhdGVfbGljZW5zZV9kaWZmKG9sZF9saWNlbnNlcywgbmV3X2xpY2Vuc2VzKQorICAgICAgICAgICAgcmYsIGNvcGllZCA9IF9jcmVhdGVfbmV3X3JlY2lwZShhcmdzLnZlcnNpb24sIG1kNSwgc2hhMjU2LCBhcmdzLnNyY3Jldiwgc3JjYnJhbmNoLCBzcmNzdWJkaXIxLCBzcmNzdWJkaXIyLCBjb25maWcud29ya3NwYWNlX3BhdGgsIHRpbmZvaWwsIHJkLCBsaWNlbnNlX2RpZmYsIG5ld19saWNlbnNlcykKICAgICAgICAgZXhjZXB0IGJiLnByb2Nlc3MuQ21kRXJyb3IgYXMgZToKICAgICAgICAgICAgIF91cGdyYWRlX2Vycm9yKGUsIHJmLCBzcmN0cmVlKQogICAgICAgICBleGNlcHQgRGV2dG9vbEVycm9yIGFzIGU6CkBAIC00MzMsMTAgKzU2NywzMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29waWVkLCBjb25maWcud29ya3NwYWNlX3BhdGgsIHJkKQogICAgICAgICBzdGFuZGFyZC5fYWRkX21kNShjb25maWcsIHBuLCBhZikKIAotICAgICAgICB1cGRhdGVfdW5sb2NrZWRzaWdzKGJhc2VwYXRoLCB3b3Jrc3BhY2UsIFtwbl0sIGFyZ3MuZml4ZWRfc2V0dXApCisgICAgICAgIHVwZGF0ZV91bmxvY2tlZHNpZ3MoYmFzZXBhdGgsIHdvcmtzcGFjZSwgYXJncy5maXhlZF9zZXR1cCwgW3BuXSkKIAogICAgICAgICBsb2dnZXIuaW5mbygnVXBncmFkZWQgc291cmNlIGV4dHJhY3RlZCB0byAlcycgJSBzcmN0cmVlKQogICAgICAgICBsb2dnZXIuaW5mbygnTmV3IHJlY2lwZSBpcyAlcycgJSByZikKKyAgICAgICAgaWYgbGljZW5zZV9kaWZmOgorICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ0xpY2Vuc2UgY2hlY2tzdW1zIGhhdmUgYmVlbiB1cGRhdGVkIGluIHRoZSBuZXcgcmVjaXBlOyBwbGVhc2UgcmVmZXIgdG8gaXQgZm9yIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIG9sZCBhbmQgdGhlIG5ldyBsaWNlbnNlIHRleHRzLicpCisgICAgZmluYWxseToKKyAgICAgICAgdGluZm9pbC5zaHV0ZG93bigpCisgICAgcmV0dXJuIDAKKworZGVmIGxhdGVzdF92ZXJzaW9uKGFyZ3MsIGNvbmZpZywgYmFzZXBhdGgsIHdvcmtzcGFjZSk6CisgICAgIiIiRW50cnkgcG9pbnQgZm9yIHRoZSBkZXZ0b29sICdsYXRlc3RfdmVyc2lvbicgc3ViY29tbWFuZCIiIgorICAgIHRpbmZvaWwgPSBzZXR1cF90aW5mb2lsKGJhc2VwYXRoPWJhc2VwYXRoLCB0cmFja2luZz1UcnVlKQorICAgIHRyeToKKyAgICAgICAgcmQgPSBwYXJzZV9yZWNpcGUoY29uZmlnLCB0aW5mb2lsLCBhcmdzLnJlY2lwZW5hbWUsIFRydWUpCisgICAgICAgIGlmIG5vdCByZDoKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIHZlcnNpb25faW5mbyA9IG9lLnJlY2lwZXV0aWxzLmdldF9yZWNpcGVfdXBzdHJlYW1fdmVyc2lvbihyZCkKKyAgICAgICAgIyAibmV3LWNvbW1pdHMtYXZhaWxhYmxlIiBpcyBhbiBpbmRpY2F0aW9uIHRoYXQgdXBzdHJlYW0gbmV2ZXIgaXNzdWVzIHZlcnNpb24gdGFncworICAgICAgICBpZiBub3QgdmVyc2lvbl9pbmZvWyd2ZXJzaW9uJ10uZW5kc3dpdGgoIm5ldy1jb21taXRzLWF2YWlsYWJsZSIpOgorICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkN1cnJlbnQgdmVyc2lvbjoge30iLmZvcm1hdCh2ZXJzaW9uX2luZm9bJ2N1cnJlbnRfdmVyc2lvbiddKSkKKyAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJMYXRlc3QgdmVyc2lvbjoge30iLmZvcm1hdCh2ZXJzaW9uX2luZm9bJ3ZlcnNpb24nXSkpCisgICAgICAgICAgICBpZiB2ZXJzaW9uX2luZm9bJ3JldmlzaW9uJ106CisgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkxhdGVzdCB2ZXJzaW9uJ3MgY29tbWl0OiB7fSIuZm9ybWF0KHZlcnNpb25faW5mb1sncmV2aXNpb24nXSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2dnZXIuaW5mbygiTGF0ZXN0IGNvbW1pdDoge30iLmZvcm1hdCh2ZXJzaW9uX2luZm9bJ3JldmlzaW9uJ10pKQogICAgIGZpbmFsbHk6CiAgICAgICAgIHRpbmZvaWwuc2h1dGRvd24oKQogICAgIHJldHVybiAwCkBAIC00NTEsMTMgKzYwNywyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwPSdzdGFydGluZycpCiAgICAgcGFyc2VyX3VwZ3JhZGUuYWRkX2FyZ3VtZW50KCdyZWNpcGVuYW1lJywgaGVscD0nTmFtZSBvZiByZWNpcGUgdG8gdXBncmFkZSAoanVzdCBuYW1lIC0gbm8gdmVyc2lvbiwgcGF0aCBvciBleHRlbnNpb24pJykKICAgICBwYXJzZXJfdXBncmFkZS5hZGRfYXJndW1lbnQoJ3NyY3RyZWUnLCAgbmFyZ3M9Jz8nLCBoZWxwPSdQYXRoIHRvIHdoZXJlIHRvIGV4dHJhY3QgdGhlIHNvdXJjZSB0cmVlLiBJZiBub3Qgc3BlY2lmaWVkLCBhIHN1YmRpcmVjdG9yeSBvZiAlcyB3aWxsIGJlIHVzZWQuJyAlIGRlZnNyY3RyZWUpCi0gICAgcGFyc2VyX3VwZ3JhZGUuYWRkX2FyZ3VtZW50KCctLXZlcnNpb24nLCAnLVYnLCBoZWxwPSdWZXJzaW9uIHRvIHVwZ3JhZGUgdG8gKFBWKScpCi0gICAgcGFyc2VyX3VwZ3JhZGUuYWRkX2FyZ3VtZW50KCctLXNyY3JldicsICctUycsIGhlbHA9J1NvdXJjZSByZXZpc2lvbiB0byB1cGdyYWRlIHRvIChyZXF1aXJlZCBpZiBmZXRjaGluZyBmcm9tIGFuIFNDTSBzdWNoIGFzIGdpdCknKQorICAgIHBhcnNlcl91cGdyYWRlLmFkZF9hcmd1bWVudCgnLS12ZXJzaW9uJywgJy1WJywgaGVscD0nVmVyc2lvbiB0byB1cGdyYWRlIHRvIChQVikuIElmIG9taXR0ZWQsIGxhdGVzdCB1cHN0cmVhbSB2ZXJzaW9uIHdpbGwgYmUgZGV0ZXJtaW5lZCBhbmQgdXNlZCwgaWYgcG9zc2libGUuJykKKyAgICBwYXJzZXJfdXBncmFkZS5hZGRfYXJndW1lbnQoJy0tc3JjcmV2JywgJy1TJywgaGVscD0nU291cmNlIHJldmlzaW9uIHRvIHVwZ3JhZGUgdG8gKHVzZWZ1bCB3aGVuIGZldGNoaW5nIGZyb20gYW4gU0NNIHN1Y2ggYXMgZ2l0KScpCiAgICAgcGFyc2VyX3VwZ3JhZGUuYWRkX2FyZ3VtZW50KCctLXNyY2JyYW5jaCcsICctQicsIGhlbHA9J0JyYW5jaCBpbiBzb3VyY2UgcmVwb3NpdG9yeSBjb250YWluaW5nIHRoZSByZXZpc2lvbiB0byB1c2UgKGlmIGZldGNoaW5nIGZyb20gYW4gU0NNIHN1Y2ggYXMgZ2l0KScpCiAgICAgcGFyc2VyX3VwZ3JhZGUuYWRkX2FyZ3VtZW50KCctLWJyYW5jaCcsICctYicsIGRlZmF1bHQ9ImRldnRvb2wiLCBoZWxwPSdOYW1lIGZvciBuZXcgZGV2ZWxvcG1lbnQgYnJhbmNoIHRvIGNoZWNrb3V0IChkZWZhdWx0ICIlKGRlZmF1bHQpcyIpJykKICAgICBwYXJzZXJfdXBncmFkZS5hZGRfYXJndW1lbnQoJy0tbm8tcGF0Y2gnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdEbyBub3QgYXBwbHkgcGF0Y2hlcyBmcm9tIHRoZSByZWNpcGUgdG8gdGhlIG5ldyBzb3VyY2UgY29kZScpCisgICAgcGFyc2VyX3VwZ3JhZGUuYWRkX2FyZ3VtZW50KCctLW5vLW92ZXJyaWRlcycsICctTycsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9J0RvIG5vdCBjcmVhdGUgYnJhbmNoZXMgZm9yIG90aGVyIG92ZXJyaWRlIGNvbmZpZ3VyYXRpb25zJykKICAgICBncm91cCA9IHBhcnNlcl91cGdyYWRlLmFkZF9tdXR1YWxseV9leGNsdXNpdmVfZ3JvdXAoKQogICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1zYW1lLWRpcicsICctcycsIGhlbHA9J0J1aWxkIGluIHNhbWUgZGlyZWN0b3J5IGFzIHNvdXJjZScsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCiAgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLW5vLXNhbWUtZGlyJywgaGVscD0nRm9yY2UgYnVpbGQgaW4gYSBzZXBhcmF0ZSBidWlsZCBkaXJlY3RvcnknLCBhY3Rpb249InN0b3JlX3RydWUiKQogICAgIHBhcnNlcl91cGdyYWRlLmFkZF9hcmd1bWVudCgnLS1rZWVwLXRlbXAnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdLZWVwIHRlbXBvcmFyeSBkaXJlY3RvcnkgKGZvciBkZWJ1Z2dpbmcpJykKICAgICBwYXJzZXJfdXBncmFkZS5zZXRfZGVmYXVsdHMoZnVuYz11cGdyYWRlLCBmaXhlZF9zZXR1cD1jb250ZXh0LmZpeGVkX3NldHVwKQorCisgICAgcGFyc2VyX2xhdGVzdF92ZXJzaW9uID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdsYXRlc3QtdmVyc2lvbicsIGhlbHA9J1JlcG9ydCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgYW4gZXhpc3RpbmcgcmVjaXBlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J1F1ZXJpZXMgdGhlIHVwc3RyZWFtIHNlcnZlciBmb3Igd2hhdCB0aGUgbGF0ZXN0IHVwc3RyZWFtIHJlbGVhc2UgaXMgKGZvciBnaXQsIHRhZ3MgYXJlIGNoZWNrZWQsIGZvciB0YXJiYWxscywgYSBsaXN0IG9mIHRoZW0gaXMgb2J0YWluZWQsIGFuZCBvbmUgd2l0aCB0aGUgaGlnaGVzdCB2ZXJzaW9uIG51bWJlciBpcyByZXBvcnRlZCknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cD0naW5mbycpCisgICAgcGFyc2VyX2xhdGVzdF92ZXJzaW9uLmFkZF9hcmd1bWVudCgncmVjaXBlbmFtZScsIGhlbHA9J05hbWUgb2YgcmVjaXBlIHRvIHF1ZXJ5IChqdXN0IG5hbWUgLSBubyB2ZXJzaW9uLCBwYXRoIG9yIGV4dGVuc2lvbiknKQorICAgIHBhcnNlcl9sYXRlc3RfdmVyc2lvbi5zZXRfZGVmYXVsdHMoZnVuYz1sYXRlc3RfdmVyc2lvbikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL3V0aWxjbWRzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvdXRpbGNtZHMucHkKaW5kZXggYjc0NTExNi4uN2NkMTM5ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvdXRpbGNtZHMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvdXRpbGNtZHMucHkKQEAgLTMyLDYgKzMyLDEyIEBACiAKIGRlZiBfZmluZF9yZWNpcGVfcGF0aChhcmdzLCBjb25maWcsIGJhc2VwYXRoLCB3b3Jrc3BhY2UpOgogICAgIGlmIGFyZ3MuYW55X3JlY2lwZToKKyAgICAgICAgbG9nZ2VyLndhcm5pbmcoJy1hLy0tYW55LXJlY2lwZSBvcHRpb24gaXMgbm93IGFsd2F5cyBhY3RpdmUsIGFuZCB0aHVzIHRoZSBvcHRpb24gd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UnKQorICAgIGlmIGFyZ3MucmVjaXBlbmFtZSBpbiB3b3Jrc3BhY2U6CisgICAgICAgIHJlY2lwZWZpbGUgPSB3b3Jrc3BhY2VbYXJncy5yZWNpcGVuYW1lXVsncmVjaXBlZmlsZSddCisgICAgZWxzZToKKyAgICAgICAgcmVjaXBlZmlsZSA9IE5vbmUKKyAgICBpZiBub3QgcmVjaXBlZmlsZToKICAgICAgICAgdGluZm9pbCA9IHNldHVwX3RpbmZvaWwoY29uZmlnX29ubHk9RmFsc2UsIGJhc2VwYXRoPWJhc2VwYXRoKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZCA9IHBhcnNlX3JlY2lwZShjb25maWcsIHRpbmZvaWwsIGFyZ3MucmVjaXBlbmFtZSwgVHJ1ZSkKQEAgLTQwLDEyICs0Niw2IEBACiAgICAgICAgICAgICByZWNpcGVmaWxlID0gcmQuZ2V0VmFyKCdGSUxFJykKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHRpbmZvaWwuc2h1dGRvd24oKQotICAgIGVsc2U6Ci0gICAgICAgIGNoZWNrX3dvcmtzcGFjZV9yZWNpcGUod29ya3NwYWNlLCBhcmdzLnJlY2lwZW5hbWUpCi0gICAgICAgIHJlY2lwZWZpbGUgPSB3b3Jrc3BhY2VbYXJncy5yZWNpcGVuYW1lXVsncmVjaXBlZmlsZSddCi0gICAgICAgIGlmIG5vdCByZWNpcGVmaWxlOgotICAgICAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCJSZWNpcGUgZmlsZSBmb3IgJXMgaXMgbm90IHVuZGVyIHRoZSB3b3Jrc3BhY2UiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnJlY2lwZW5hbWUpCiAgICAgcmV0dXJuIHJlY2lwZWZpbGUKIAogCkBAIC0yMjIsMTkgKzIyMiwyMSBAQAogCiBkZWYgcmVnaXN0ZXJfY29tbWFuZHMoc3VicGFyc2VycywgY29udGV4dCk6CiAgICAgIiIiUmVnaXN0ZXIgZGV2dG9vbCBzdWJjb21tYW5kcyBmcm9tIHRoaXMgcGx1Z2luIiIiCi0gICAgcGFyc2VyX2VkaXRfcmVjaXBlID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdlZGl0LXJlY2lwZScsIGhlbHA9J0VkaXQgYSByZWNpcGUgZmlsZSBpbiB5b3VyIHdvcmtzcGFjZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdSdW5zIHRoZSBkZWZhdWx0IGVkaXRvciAoYXMgc3BlY2lmaWVkIGJ5IHRoZSBFRElUT1IgdmFyaWFibGUpIG9uIHRoZSBzcGVjaWZpZWQgcmVjaXBlLiBOb3RlIHRoYXQgdGhlIHJlY2lwZSBmaWxlIGl0c2VsZiBtdXN0IGJlIGluIHRoZSB3b3Jrc3BhY2UgKGkuZS4gYXMgYSByZXN1bHQgb2YgImRldnRvb2wgYWRkIiBvciAiZGV2dG9vbCB1cGdyYWRlIik7IHlvdSBjYW4gb3ZlcnJpZGUgdGhpcyB3aXRoIHRoZSAtYS8tLWFueS1yZWNpcGUgb3B0aW9uLicsCisgICAgcGFyc2VyX2VkaXRfcmVjaXBlID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdlZGl0LXJlY2lwZScsIGhlbHA9J0VkaXQgYSByZWNpcGUgZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdSdW5zIHRoZSBkZWZhdWx0IGVkaXRvciAoYXMgc3BlY2lmaWVkIGJ5IHRoZSBFRElUT1IgdmFyaWFibGUpIG9uIHRoZSBzcGVjaWZpZWQgcmVjaXBlLiBOb3RlIHRoYXQgdGhpcyB3aWxsIGJlIHF1aWNrZXIgZm9yIHJlY2lwZXMgaW4gdGhlIHdvcmtzcGFjZSBhcyB0aGUgY2FjaGUgZG9lcyBub3QgbmVlZCB0byBiZSBsb2FkZWQgaW4gdGhhdCBjYXNlLicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwPSd3b3JraW5nJykKICAgICBwYXJzZXJfZWRpdF9yZWNpcGUuYWRkX2FyZ3VtZW50KCdyZWNpcGVuYW1lJywgaGVscD0nUmVjaXBlIHRvIGVkaXQnKQotICAgIHBhcnNlcl9lZGl0X3JlY2lwZS5hZGRfYXJndW1lbnQoJy0tYW55LXJlY2lwZScsICctYScsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9J0VkaXQgYW55IHJlY2lwZSwgbm90IGp1c3Qgd2hlcmUgdGhlIHJlY2lwZSBmaWxlIGl0c2VsZiBpcyBpbiB0aGUgd29ya3NwYWNlJykKKyAgICAjIEZJWE1FIGRyb3AgLWEgYXQgc29tZSBwb2ludCBpbiBmdXR1cmUKKyAgICBwYXJzZXJfZWRpdF9yZWNpcGUuYWRkX2FyZ3VtZW50KCctLWFueS1yZWNpcGUnLCAnLWEnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdEb2VzIG5vdGhpbmcgKGV4aXN0cyBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkpJykKICAgICBwYXJzZXJfZWRpdF9yZWNpcGUuc2V0X2RlZmF1bHRzKGZ1bmM9ZWRpdF9yZWNpcGUpCiAKICAgICAjIEZpbmQtcmVjaXBlCi0gICAgcGFyc2VyX2ZpbmRfcmVjaXBlID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdmaW5kLXJlY2lwZScsIGhlbHA9J0ZpbmQgYSByZWNpcGUgZmlsZSBpbiB5b3VyIHdvcmtzcGFjZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdCeSBkZWZhdWx0LCB0aGlzIHdpbGwgZmluZCBhIHJlY2lwZSBmaWxlIGluIHlvdXIgd29ya3NwYWNlOyB5b3UgY2FuIG92ZXJyaWRlIHRoaXMgd2l0aCB0aGUgLWEvLS1hbnktcmVjaXBlIG9wdGlvbi4nLAorICAgIHBhcnNlcl9maW5kX3JlY2lwZSA9IHN1YnBhcnNlcnMuYWRkX3BhcnNlcignZmluZC1yZWNpcGUnLCBoZWxwPSdGaW5kIGEgcmVjaXBlIGZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nRmluZHMgYSByZWNpcGUgZmlsZS4gTm90ZSB0aGF0IHRoaXMgd2lsbCBiZSBxdWlja2VyIGZvciByZWNpcGVzIGluIHRoZSB3b3Jrc3BhY2UgYXMgdGhlIGNhY2hlIGRvZXMgbm90IG5lZWQgdG8gYmUgbG9hZGVkIGluIHRoYXQgY2FzZS4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cD0nd29ya2luZycpCiAgICAgcGFyc2VyX2ZpbmRfcmVjaXBlLmFkZF9hcmd1bWVudCgncmVjaXBlbmFtZScsIGhlbHA9J1JlY2lwZSB0byBmaW5kJykKLSAgICBwYXJzZXJfZmluZF9yZWNpcGUuYWRkX2FyZ3VtZW50KCctLWFueS1yZWNpcGUnLCAnLWEnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdGaW5kIGFueSByZWNpcGUsIG5vdCBqdXN0IHdoZXJlIHRoZSByZWNpcGUgZmlsZSBpdHNlbGYgaXMgaW4gdGhlIHdvcmtzcGFjZScpCisgICAgIyBGSVhNRSBkcm9wIC1hIGF0IHNvbWUgcG9pbnQgaW4gZnV0dXJlCisgICAgcGFyc2VyX2ZpbmRfcmVjaXBlLmFkZF9hcmd1bWVudCgnLS1hbnktcmVjaXBlJywgJy1hJywgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0nRG9lcyBub3RoaW5nIChleGlzdHMgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5KScpCiAgICAgcGFyc2VyX2ZpbmRfcmVjaXBlLnNldF9kZWZhdWx0cyhmdW5jPWZpbmRfcmVjaXBlKQogCiAgICAgIyBOT1RFOiBOZWVkZWQgdG8gb3ZlcnJpZGUgdGhlIHVzYWdlIHN0cmluZyBoZXJlIHNpbmNlIHRoZSBkZWZhdWx0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGUucHkKaW5kZXggNWJmOTM5ZS4uYTM3MTAyOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZS5weQpAQCAtMzgzLDggKzM4MywxMCBAQAogICAgICAgICAjIHdoaWNoIGNhdXNlcyBkZWNvZGV1cmwgdG8gZmFpbCBnZXR0aW5nIHRoZSByaWdodCBob3N0IGFuZCBwYXRoCiAgICAgICAgIGlmIGxlbihob3N0LnNwbGl0KCc6JykpID4gMToKICAgICAgICAgICAgIHNwbGl0c2xhc2ggPSBob3N0LnNwbGl0KCc6JykKLSAgICAgICAgICAgIGhvc3QgPSBzcGxpdHNsYXNoWzBdCi0gICAgICAgICAgICBwYXRoID0gJy8nICsgc3BsaXRzbGFzaFsxXSArIHBhdGgKKyAgICAgICAgICAgICMgUG9ydCBudW1iZXIgc2hvdWxkIG5vdCBiZSBzcGxpdCBmcm9tIGhvc3QKKyAgICAgICAgICAgIGlmIG5vdCByZS5tYXRjaCgnXlswLTldKyQnLCBzcGxpdHNsYXNoWzFdKToKKyAgICAgICAgICAgICAgICBob3N0ID0gc3BsaXRzbGFzaFswXQorICAgICAgICAgICAgICAgIHBhdGggPSAnLycgKyBzcGxpdHNsYXNoWzFdICsgcGF0aAogICAgICAgICAjQWxnb3JpdGhtOgogICAgICAgICAjIGlmIHVzZXIgaXMgZGVmaW5lZCwgYXBwZW5kIHByb3RvY29sPXNzaCBvciBpZiBhIHByb3RvY29sIGlzIGRlZmluZWQsIHRoZW4gaG9ub3IgdGhlIHVzZXItZGVmaW5lZCBwcm90b2NvbAogICAgICAgICAjIGlmIG5vIHVzZXIgJiBwYXNzd29yZCBpcyBkZWZpbmVkLCBjaGVjayBmb3Igc2NoZW1lIHR5cGUgYW5kIGFwcGVuZCB0aGUgcHJvdG9jb2wgd2l0aCB0aGUgc2NoZW1lIHR5cGUKQEAgLTQzMyw2ICs0MzUsOSBAQAogICAgICAgICBzb3VyY2UgPSAnZmlsZTovLyVzJyAlIG9zLnBhdGguYWJzcGF0aChzb3VyY2UpCiAKICAgICBpZiBzY3JpcHR1dGlscy5pc19zcmNfdXJsKHNvdXJjZSk6CisgICAgICAgICMgV2FybiBhYm91dCBnaXRodWIgYXJjaGl2ZSBVUkxzCisgICAgICAgIGlmIHJlLm1hdGNoKCdodHRwcz86Ly9naXRodWIuY29tL1teL10rL1teL10rL2FyY2hpdmUvLisoXC50YXJcLi4qfFwuemlwKSQnLCBzb3VyY2UpOgorICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ2dpdGh1YiBhcmNoaXZlIGZpbGVzIGFyZSBub3QgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUgYW5kIG1heSBiZSByZS1nZW5lcmF0ZWQgb3ZlciB0aW1lLiBJZiB0aGUgbGF0dGVyIG9jY3VycywgdGhlIGNoZWNrc3VtcyB3aWxsIGxpa2VseSBjaGFuZ2UgYW5kIHRoZSByZWNpcGUgd2lsbCBmYWlsIGF0IGRvX2ZldGNoLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBwb2ludCB0byBhbiBhY3R1YWwgY29tbWl0IG9yIHRhZyBpbiB0aGUgcmVwb3NpdG9yeSBpbnN0ZWFkICh1c2luZyB0aGUgcmVwb3NpdG9yeSBVUkwgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgLVMvLS1zcmNyZXYgb3B0aW9uKS4nKQogICAgICAgICAjIEZldGNoIGEgVVJMCiAgICAgICAgIGZldGNodXJpID0gcmVmb3JtYXRfZ2l0X3VyaSh1cmxkZWZyYWcoc291cmNlKVswXSkKICAgICAgICAgaWYgYXJncy5iaW5hcnk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfbnBtLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX25wbS5weQppbmRleCBhZTUzOTcyLi5iYjQyYTVjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfbnBtLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZV9ucG0ucHkKQEAgLTczLDcgKzczLDYgQEAKICAgICAgICAgICAgICAgICAgICAgbGljZW5zZSA9IGxpY2Vuc2UucmVwbGFjZSgnICcsICdfJykKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGxpY2Vuc2VbMF0gPT0gJygnOgogICAgICAgICAgICAgICAgICAgICAgICAgbGljZW5zZSA9ICcoJyArIGxpY2Vuc2UgKyAnKScKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ0xJQ0VOU0U6IHt9Jy5mb3JtYXQobGljZW5zZSkpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgbGljZW5zZSA9IGxpY2Vuc2UucmVwbGFjZSgnQU5EJywgJyYnKQogICAgICAgICAgICAgICAgICAgICBpZiBsaWNlbnNlWzBdID09ICcoJzoKQEAgLTMyMSw2ICszMjAsNyBAQAogICAgICAgICAgICAgICAgICAgICBibGFja2xpc3QgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBpZiAobm90IGJsYWNrbGlzdCBhbmQgJ2xpbnV4JyBub3QgaW4gcGtnX29zKSBvciAnIWxpbnV4JyBpbiBwa2dfb3M6CisgICAgICAgICAgICAgICAgcGtnID0gcGRhdGEuZ2V0KCduYW1lJywgJ1VubmFtZWQgcGFja2FnZScpCiAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICJTa2lwcGluZyAlcyBzaW5jZSBpdCdzIGluY29tcGF0aWJsZSB3aXRoIExpbnV4IiAlIHBrZykKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJuIFRydWUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9lZmktYm9vdGRpc2sud2tzLmluIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL2VmaS1ib290ZGlzay53a3MuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzMwMGU2NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9lZmktYm9vdGRpc2sud2tzLmluCkBAIC0wLDAgKzEsMyBAQAorYm9vdGxvYWRlciAtLXB0YWJsZSBncHQKK3BhcnQgL2Jvb3QgLS1zb3VyY2Ugcm9vdGZzIC0tcm9vdGZzLWRpcj0ke0lNQUdFX1JPT1RGU30vYm9vdCAtLWZzdHlwZT12ZmF0IC0tbGFiZWwgYm9vdCAtLWFjdGl2ZSAtLWFsaWduIDEwMjQgLS11c2UtdXVpZCAtLW92ZXJoZWFkLWZhY3RvciAxLjAKK3BhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1mc3R5cGU9ZXh0NCAtLWxhYmVsIHJvb3QgLS1hbGlnbiAxMDI0IC0tZXhjbHVkZS1wYXRoIGJvb3QvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2ZpbGVtYXAucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2ZpbGVtYXAucHkKaW5kZXggNzdlMzJiOS4uYTcyZmEwOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9maWxlbWFwLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvZmlsZW1hcC5weQpAQCAtMzcsNyArMzcsMTUgQEAKICAgICAjIEdldCB0aGUgYmxvY2sgc2l6ZSBvZiB0aGUgaG9zdCBmaWxlLXN5c3RlbSBmb3IgdGhlIGltYWdlIGZpbGUgYnkgY2FsbGluZwogICAgICMgdGhlIEZJR0VUQlNaIGlvY3RsIChudW1iZXIgMikuCiAgICAgYmluYXJ5X2RhdGEgPSBmY250bC5pb2N0bChmaWxlX29iaiwgMiwgc3RydWN0LnBhY2soJ0knLCAwKSkKLSAgICByZXR1cm4gc3RydWN0LnVucGFjaygnSScsIGJpbmFyeV9kYXRhKVswXQorICAgIGJzaXplID0gc3RydWN0LnVucGFjaygnSScsIGJpbmFyeV9kYXRhKVswXQorICAgIGlmIG5vdCBic2l6ZToKKyAgICAgICAgaW1wb3J0IG9zCisgICAgICAgIHN0YXQgPSBvcy5mc3RhdChmaWxlX29iai5maWxlbm8oKSkKKyAgICAgICAgaWYgaGFzYXR0cihzdGF0LCAnc3RfYmxrc2l6ZScpOgorICAgICAgICAgICAgYnNpemUgPSBzdGF0LnN0X2Jsa3NpemUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoIlVuYWJsZSB0byBkZXRlcm1pbmUgYmxvY2sgc2l6ZSIpCisgICAgcmV0dXJuIGJzaXplCiAKIGNsYXNzIEVycm9yTm90U3VwcChFeGNlcHRpb24pOgogICAgICIiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9oZWxwLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9oZWxwLnB5CmluZGV4IDJhYzQ1ZTAuLjg0MmI4NjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvaGVscC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2hlbHAucHkKQEAgLTU3Niw2ICs1NzYsMTAgQEAKICAgICAgICAgICBwYXJ0aXRpb24uIEluIG90aGVyIHdvcmRzLCBpdCAncHJlcGFyZXMnIHRoZSBmaW5hbCBwYXJ0aXRpb24KICAgICAgICAgICBpbWFnZSB3aGljaCB3aWxsIGJlIGluY29ycG9yYXRlZCBpbnRvIHRoZSBkaXNrIGltYWdlLgogCisgICAgICBkb19wb3N0X3BhcnRpdGlvbigpCisgICAgICAgICAgQ2FsbGVkIGFmdGVyIHRoZSBwYXJ0aXRpb24gaXMgY3JlYXRlZC4gSXQgaXMgdXNlZnVsIHRvIGFkZCBwb3N0CisgICAgICAgICAgb3BlcmF0aW9ucyBlLmcuIHNpZ25pbmcgdGhlIHBhcnRpdGlvbi4KKwogICAgICAgZG9fY29uZmlndXJlX3BhcnRpdGlvbigpCiAgICAgICAgICAgQ2FsbGVkIGJlZm9yZSBkb19wcmVwYXJlX3BhcnRpdGlvbigpLCB0eXBpY2FsbHkgdXNlZCB0bwogICAgICAgICAgIGNyZWF0ZSBjdXN0b20gY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgYSBwYXJ0aXRpb24sIGZvcgpAQCAtODYzLDcgKzg2NywxMCBAQAogICAgICAgIFRoaXMgaXMgYWNoaWV2ZWQgYnkgd2ljIGFkZGluZyBlbnRyaWVzIHRvIHRoZSBmc3RhYiBkdXJpbmcgaW1hZ2UKICAgICAgICBnZW5lcmF0aW9uLiBJbiBvcmRlciBmb3IgYSB2YWxpZCBmc3RhYiB0byBiZSBnZW5lcmF0ZWQgb25lIG9mIHRoZQogICAgICAgIC0tb25kcml2ZSwgLS1vbmRpc2sgb3IgLS11c2UtdXVpZCBwYXJ0aXRpb24gb3B0aW9ucyBtdXN0IGJlIHVzZWQgZm9yCi0gICAgICAgZWFjaCBwYXJ0aXRpb24gdGhhdCBzcGVjaWZpZXMgYSBtb3VudHBvaW50LgorICAgICAgIGVhY2ggcGFydGl0aW9uIHRoYXQgc3BlY2lmaWVzIGEgbW91bnRwb2ludC4gIE5vdGUgdGhhdCB3aXRoIC0tdXNlLXV1aWQKKyAgICAgICBhbmQgbm9uLXJvb3QgPG1vdW50cG9pbnQ+LCBpbmNsdWRpbmcgc3dhcCwgdGhlIG1vdW50IHByb2dyYW0gbXVzdAorICAgICAgIHVuZGVyc3RhbmQgdGhlIFBBUlRVVUlEIHN5bnRheC4gIFRoaXMgY3VycmVudGx5IGV4Y2x1ZGVzIHRoZSBidXN5Ym94CisgICAgICAgdmVyc2lvbnMgb2YgdGhlc2UgYXBwbGljYXRpb25zLgogCiAKICAgICAgICBUaGUgZm9sbG93aW5nIGFyZSBzdXBwb3J0ZWQgJ3BhcnQnIG9wdGlvbnM6CkBAIC05ODYsNiArOTkzLDExIEBACiAgICAgICAgICAgICAgICAgIGluIGJvb3Rsb2FkZXIgY29uZmlndXJhdGlvbiBiZWZvcmUgcnVubmluZyB3aWMuIEluIHRoaXMgY2FzZSAud2tzIGZpbGUgY2FuCiAgICAgICAgICAgICAgICAgIGJlIGdlbmVyYXRlZCBvciBtb2RpZmllZCB0byBzZXQgcHJlY29uZmlndXJlZCBwYXJpdGlvbiBVVUlEIHVzaW5nIHRoaXMgb3B0aW9uLgogCisgICAgICAgICAtLWZzdXVpZDogVGhpcyBvcHRpb24gaXMgc3BlY2lmaWMgdG8gd2ljLiBJdCBzcGVjaWZpZXMgZmlsZXN5c3RlbSBVVUlELgorICAgICAgICAgICAgICAgICAgIEl0J3MgdXNlZnVsIGlmIHByZWNvbmZpZ3VyZWQgZmlsZXN5c3RlbSBVVUlEIGlzIGFkZGVkIHRvIGtlcm5lbCBjb21tYW5kIGxpbmUKKyAgICAgICAgICAgICAgICAgICBpbiBib290bG9hZGVyIGNvbmZpZ3VyYXRpb24gYmVmb3JlIHJ1bm5pbmcgd2ljLiBJbiB0aGlzIGNhc2UgLndrcyBmaWxlIGNhbgorICAgICAgICAgICAgICAgICAgIGJlIGdlbmVyYXRlZCBvciBtb2RpZmllZCB0byBzZXQgcHJlY29uZmlndXJlZCBmaWxlc3lzdGVtIFVVSUQgdXNpbmcgdGhpcyBvcHRpb24uCisKICAgICAgICAgIC0tc3lzdGVtLWlkOiBUaGlzIG9wdGlvbiBpcyBzcGVjaWZpYyB0byB3aWMuIEl0IHNwZWNpZmllcyBwYXJ0aXRpb24gc3lzdGVtIGlkLiBJdCdzIHVzZWZ1bAogICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgaGFyd2FyZSB0aGF0IHJlcXVpcmVzIG5vbi1kZWZhdWx0IHBhcnRpdGlvbiBzeXN0ZW0gaWRzLiBUaGUgcGFyYW1ldGVyCiAgICAgICAgICAgICAgICAgICAgICAgaW4gb25lIGJ5dGUgbG9uZyBoZXggbnVtYmVyIGVpdGhlciB3aXRoIDB4IHByZWZpeCBvciB3aXRob3V0IGl0LgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9rc3BhcnNlci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMva3NwYXJzZXIucHkKaW5kZXggNzg1MGU4MS4uZTU5MGIyZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9rc3BhcnNlci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL2tzcGFyc2VyLnB5CkBAIC0xNjEsNiArMTYxLDcgQEAKICAgICAgICAgcGFydC5hZGRfYXJndW1lbnQoJy0tc3lzdGVtLWlkJywgdHlwZT1zeXN0ZW1pZHR5cGUpCiAgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLXVzZS11dWlkJywgYWN0aW9uPSdzdG9yZV90cnVlJykKICAgICAgICAgcGFydC5hZGRfYXJndW1lbnQoJy0tdXVpZCcpCisgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLWZzdXVpZCcpCiAKICAgICAgICAgYm9vdGxvYWRlciA9IHN1YnBhcnNlcnMuYWRkX3BhcnNlcignYm9vdGxvYWRlcicpCiAgICAgICAgIGJvb3Rsb2FkZXIuYWRkX2FyZ3VtZW50KCctLWFwcGVuZCcpCkBAIC0xOTUsNiArMTk2LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBLaWNrU3RhcnRFcnJvcignJXM6JWQ6ICVzJyAlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25mcGF0aCwgbGluZW5vLCBlcnIpKQogICAgICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ3BhcnQnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgU3F1YXNoRlMgZG9lcyBub3Qgc3VwcG9ydCBVVUlECisgICAgICAgICAgICAgICAgICAgICAgICBpZiBwYXJzZWQuZnN0eXBlID09ICdzcXVhc2hmcycgYW5kIHBhcnNlZC51c2VfdXVpZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSAiJXM6JWQ6IFNxdWFzaEZTIGRvZXMgbm90IHN1cHBvcnQgVVVJRCIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNvbmZwYXRoLCBsaW5lbm8pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgS2lja1N0YXJ0RXJyb3IoZXJyKQogICAgICAgICAgICAgICAgICAgICAgICAgIyB1c2luZyBBcmd1bWVudFBhcnNlciBvbmUgY2Fubm90IGVhc2lseSB0ZWxsIGlmIG9wdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgIyB3YXMgcGFzc2VkIGFzIGFyZ3VtZW50LCBpZiBzYWlkIG9wdGlvbiBoYXMgYSBkZWZhdWx0CiAgICAgICAgICAgICAgICAgICAgICAgICAjIHZhbHVlOyAtLW92ZXJoZWFkLWZhY3Rvci8tLWV4dHJhLXNwYWNlIGNhbm5vdCBiZSB1c2VkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BhcnRpdGlvbi5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGFydGl0aW9uLnB5CmluZGV4IDg0ZmU4NWQuLjNmZTVjNGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGFydGl0aW9uLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGFydGl0aW9uLnB5CkBAIC0yNiw2ICsyNiw3IEBACiAKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKK2ltcG9ydCB1dWlkCiAKIGZyb20gd2ljIGltcG9ydCBXaWNFcnJvcgogZnJvbSB3aWMubWlzYyBpbXBvcnQgZXhlY19jbWQsIGV4ZWNfbmF0aXZlX2NtZCwgZ2V0X2JpdGJha2VfdmFyCkBAIC02MSw2ICs2Miw3IEBACiAgICAgICAgIHNlbGYuc3lzdGVtX2lkID0gYXJncy5zeXN0ZW1faWQKICAgICAgICAgc2VsZi51c2VfdXVpZCA9IGFyZ3MudXNlX3V1aWQKICAgICAgICAgc2VsZi51dWlkID0gYXJncy51dWlkCisgICAgICAgIHNlbGYuZnN1dWlkID0gYXJncy5mc3V1aWQKIAogICAgICAgICBzZWxmLmxpbmVubyA9IGxpbmVubwogICAgICAgICBzZWxmLnNvdXJjZV9maWxlID0gIiIKQEAgLTE4Myw2ICsxODUsOSBAQAogICAgICAgICBwbHVnaW4uZG9fcHJlcGFyZV9wYXJ0aXRpb24oc2VsZiwgc3JjcGFyYW1zX2RpY3QsIGNyZWF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcl93b3JrZGlyLCBvZV9idWlsZGRpciwgYm9vdGltZ19kaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWxfZGlyLCByb290ZnNfZGlyLCBuYXRpdmVfc3lzcm9vdCkKKyAgICAgICAgcGx1Z2luLmRvX3Bvc3RfcGFydGl0aW9uKHNlbGYsIHNyY3BhcmFtc19kaWN0LCBjcmVhdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jfd29ya2Rpciwgb2VfYnVpbGRkaXIsIGJvb3RpbWdfZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsX2Rpciwgcm9vdGZzX2RpciwgbmF0aXZlX3N5c3Jvb3QpCiAKICAgICAgICAgIyBmdXJ0aGVyIHByb2Nlc3NpbmcgcmVxdWlyZWQgUGFydGl0aW9uLnNpemUgdG8gYmUgYW4gaW50ZWdlciwgbWFrZQogICAgICAgICAjIHN1cmUgdGhhdCBpdCBpcyBvbmUKQEAgLTE5NywxMiArMjAyLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5tb3VudHBvaW50LCBzZWxmLnNpemUsIHNlbGYuZml4ZWRfc2l6ZSkpCiAKICAgICBkZWYgcHJlcGFyZV9yb290ZnMoc2VsZiwgY3Jfd29ya2Rpciwgb2VfYnVpbGRkaXIsIHJvb3Rmc19kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9zeXNyb290KToKKyAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX3N5c3Jvb3QsIHJlYWxfcm9vdGZzID0gVHJ1ZSk6CiAgICAgICAgICIiIgogICAgICAgICBQcmVwYXJlIGNvbnRlbnQgZm9yIGEgcm9vdGZzIHBhcnRpdGlvbiBpLmUuIGNyZWF0ZSBhIHBhcnRpdGlvbgogICAgICAgICBhbmQgZmlsbCBpdCBmcm9tIGEgL3Jvb3RmcyBkaXIuCiAKLSAgICAgICAgQ3VycmVudGx5IGhhbmRsZXMgZXh0Mi8zLzQsIGJ0cmZzIGFuZCB2ZmF0LgorICAgICAgICBDdXJyZW50bHkgaGFuZGxlcyBleHQyLzMvNCwgYnRyZnMsIHZmYXQgYW5kIHNxdWFzaGZzLgogICAgICAgICAiIiIKICAgICAgICAgcF9wcmVmaXggPSBvcy5lbnZpcm9uLmdldCgiUFNFVURPX1BSRUZJWCIsICIlcy91c3IiICUgbmF0aXZlX3N5c3Jvb3QpCiAgICAgICAgIHBfbG9jYWxzdGF0ZWRpciA9IG9zLmVudmlyb24uZ2V0KCJQU0VVRE9fTE9DQUxTVEFURURJUiIsCkBAIC0yMjEsNyArMjI2LDcgQEAKICAgICAgICAgICAgIG9zLnJlbW92ZShyb290ZnMpCiAKICAgICAgICAgIyBHZXQgcm9vdGZzIHNpemUgZnJvbSBiaXRiYWtlIHZhcmlhYmxlIGlmIGl0J3Mgbm90IHNldCBpbiAua3MgZmlsZQotICAgICAgICBpZiBub3Qgc2VsZi5zaXplOgorICAgICAgICBpZiBub3Qgc2VsZi5zaXplIGFuZCByZWFsX3Jvb3RmczoKICAgICAgICAgICAgICMgQml0YmFrZSB2YXJpYWJsZSBST09URlNfU0laRSBpcyBjYWxjdWxhdGVkIGluCiAgICAgICAgICAgICAjIEltYWdlLl9nZXRfcm9vdGZzX3NpemUgbWV0aG9kIGZyb20gbWV0YS9saWIvb2UvaW1hZ2UucHkKICAgICAgICAgICAgICMgdXNpbmcgSU1BR0VfUk9PVEZTX1NJWkUsIElNQUdFX1JPT1RGU19BTElHTk1FTlQsCkBAIC0yNjQsOCArMjY5LDggQEAKICAgICAgICAgaWYgc2VsZi5sYWJlbDoKICAgICAgICAgICAgIGxhYmVsX3N0ciA9ICItTCAlcyIgJSBzZWxmLmxhYmVsCiAKLSAgICAgICAgbWtmc19jbWQgPSAibWtmcy4lcyAlcyAlcyAlcyAtZCAlcyIgJSBcCi0gICAgICAgICAgICAoc2VsZi5mc3R5cGUsIGV4dHJhb3B0cywgcm9vdGZzLCBsYWJlbF9zdHIsIHJvb3Rmc19kaXIpCisgICAgICAgIG1rZnNfY21kID0gIm1rZnMuJXMgJXMgJXMgJXMgLVUgJXMgLWQgJXMiICUgXAorICAgICAgICAgICAgKHNlbGYuZnN0eXBlLCBleHRyYW9wdHMsIHJvb3RmcywgbGFiZWxfc3RyLCBzZWxmLmZzdXVpZCwgcm9vdGZzX2RpcikKICAgICAgICAgZXhlY19uYXRpdmVfY21kKG1rZnNfY21kLCBuYXRpdmVfc3lzcm9vdCwgcHNldWRvPXBzZXVkbykKIAogICAgICAgICBta2ZzX2NtZCA9ICJmc2NrLiVzIC1wdmZEICVzIiAlIChzZWxmLmZzdHlwZSwgcm9vdGZzKQpAQCAtMjc1LDggKzI4MCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9zeXNyb290LCBwc2V1ZG8pOgogICAgICAgICAiIiIKICAgICAgICAgUHJlcGFyZSBjb250ZW50IGZvciBhIGJ0cmZzIHJvb3RmcyBwYXJ0aXRpb24uCi0KLSAgICAgICAgQ3VycmVudGx5IGhhbmRsZXMgZXh0Mi8zLzQgYW5kIGJ0cmZzLgogICAgICAgICAiIiIKICAgICAgICAgZHVfY21kID0gImR1IC1rcyAlcyIgJSByb290ZnNfZGlyCiAgICAgICAgIG91dCA9IGV4ZWNfY21kKGR1X2NtZCkKQEAgLTI5MSw5ICsyOTQsOSBAQAogICAgICAgICBpZiBzZWxmLmxhYmVsOgogICAgICAgICAgICAgbGFiZWxfc3RyID0gIi1MICVzIiAlIHNlbGYubGFiZWwKIAotICAgICAgICBta2ZzX2NtZCA9ICJta2ZzLiVzIC1iICVkIC1yICVzICVzICVzICVzIiAlIFwKKyAgICAgICAgbWtmc19jbWQgPSAibWtmcy4lcyAtYiAlZCAtciAlcyAlcyAlcyAtVSAlcyAlcyIgJSBcCiAgICAgICAgICAgICAoc2VsZi5mc3R5cGUsIHJvb3Rmc19zaXplICogMTAyNCwgcm9vdGZzX2RpciwgbGFiZWxfc3RyLAotICAgICAgICAgICAgIHNlbGYubWtmc19leHRyYW9wdHMsIHJvb3RmcykKKyAgICAgICAgICAgICBzZWxmLm1rZnNfZXh0cmFvcHRzLCBzZWxmLmZzdXVpZCwgcm9vdGZzKQogICAgICAgICBleGVjX25hdGl2ZV9jbWQobWtmc19jbWQsIG5hdGl2ZV9zeXNyb290LCBwc2V1ZG89cHNldWRvKQogCiAgICAgZGVmIHByZXBhcmVfcm9vdGZzX21zZG9zKHNlbGYsIHJvb3Rmcywgb2VfYnVpbGRkaXIsIHJvb3Rmc19kaXIsCkBAIC0zMTcsOCArMzIwLDkgQEAKIAogICAgICAgICBleHRyYW9wdHMgPSBzZWxmLm1rZnNfZXh0cmFvcHRzIG9yICctUyA1MTInCiAKLSAgICAgICAgZG9zZnNfY21kID0gIm1rZG9zZnMgJXMgJXMgJXMgLUMgJXMgJWQiICUgXAotICAgICAgICAgICAgICAgICAgICAobGFiZWxfc3RyLCBzaXplX3N0ciwgZXh0cmFvcHRzLCByb290ZnMsIHJvb3Rmc19zaXplKQorICAgICAgICBkb3Nmc19jbWQgPSAibWtkb3NmcyAlcyAtaSAlcyAlcyAlcyAtQyAlcyAlZCIgJSBcCisgICAgICAgICAgICAgICAgICAgIChsYWJlbF9zdHIsIHNlbGYuZnN1dWlkLCBzaXplX3N0ciwgZXh0cmFvcHRzLCByb290ZnMsCisgICAgICAgICAgICAgICAgICAgICBtYXgoODI1MCwgcm9vdGZzX3NpemUpKQogICAgICAgICBleGVjX25hdGl2ZV9jbWQoZG9zZnNfY21kLCBuYXRpdmVfc3lzcm9vdCkKIAogICAgICAgICBtY29weV9jbWQgPSAibWNvcHkgLWkgJXMgLXMgJXMvKiA6Oi8iICUgKHJvb3Rmcywgcm9vdGZzX2RpcikKQEAgLTM1NCw4ICszNTgsOCBAQAogICAgICAgICBpZiBzZWxmLmxhYmVsOgogICAgICAgICAgICAgbGFiZWxfc3RyID0gIi1MICVzIiAlIHNlbGYubGFiZWwKIAotICAgICAgICBta2ZzX2NtZCA9ICJta2ZzLiVzIC1GICVzICVzICVzIiAlIFwKLSAgICAgICAgICAgIChzZWxmLmZzdHlwZSwgZXh0cmFvcHRzLCBsYWJlbF9zdHIsIHJvb3RmcykKKyAgICAgICAgbWtmc19jbWQgPSAibWtmcy4lcyAtRiAlcyAlcyAtVSAlcyAlcyIgJSBcCisgICAgICAgICAgICAoc2VsZi5mc3R5cGUsIGV4dHJhb3B0cywgbGFiZWxfc3RyLCBzZWxmLmZzdXVpZCwgcm9vdGZzKQogICAgICAgICBleGVjX25hdGl2ZV9jbWQobWtmc19jbWQsIG5hdGl2ZV9zeXNyb290KQogCiAgICAgZGVmIHByZXBhcmVfZW1wdHlfcGFydGl0aW9uX2J0cmZzKHNlbGYsIHJvb3Rmcywgb2VfYnVpbGRkaXIsCkBAIC0zNzEsOCArMzc1LDggQEAKICAgICAgICAgaWYgc2VsZi5sYWJlbDoKICAgICAgICAgICAgIGxhYmVsX3N0ciA9ICItTCAlcyIgJSBzZWxmLmxhYmVsCiAKLSAgICAgICAgbWtmc19jbWQgPSAibWtmcy4lcyAtYiAlZCAlcyAlcyAlcyIgJSBcCi0gICAgICAgICAgICAgICAgICAgKHNlbGYuZnN0eXBlLCBzZWxmLnNpemUgKiAxMDI0LCBsYWJlbF9zdHIsCisgICAgICAgIG1rZnNfY21kID0gIm1rZnMuJXMgLWIgJWQgJXMgLVUgJXMgJXMgJXMiICUgXAorICAgICAgICAgICAgICAgICAgIChzZWxmLmZzdHlwZSwgc2VsZi5zaXplICogMTAyNCwgbGFiZWxfc3RyLCBzZWxmLmZzdXVpZCwKICAgICAgICAgICAgICAgICAgICAgc2VsZi5ta2ZzX2V4dHJhb3B0cywgcm9vdGZzKQogICAgICAgICBleGVjX25hdGl2ZV9jbWQobWtmc19jbWQsIG5hdGl2ZV9zeXNyb290KQogCkBAIC0zOTMsOCArMzk3LDkgQEAKIAogICAgICAgICBleHRyYW9wdHMgPSBzZWxmLm1rZnNfZXh0cmFvcHRzIG9yICctUyA1MTInCiAKLSAgICAgICAgZG9zZnNfY21kID0gIm1rZG9zZnMgJXMgJXMgJXMgLUMgJXMgJWQiICUgXAotICAgICAgICAgICAgICAgICAgICAobGFiZWxfc3RyLCBleHRyYW9wdHMsIHNpemVfc3RyLCByb290ZnMsIGJsb2NrcykKKyAgICAgICAgZG9zZnNfY21kID0gIm1rZG9zZnMgJXMgLWkgJXMgJXMgJXMgLUMgJXMgJWQiICUgXAorICAgICAgICAgICAgICAgICAgICAobGFiZWxfc3RyLCBzZWxmLmZzdXVpZCwgZXh0cmFvcHRzLCBzaXplX3N0ciwgcm9vdGZzLAorICAgICAgICAgICAgICAgICAgICAgYmxvY2tzKQogCiAgICAgICAgIGV4ZWNfbmF0aXZlX2NtZChkb3Nmc19jbWQsIG5hdGl2ZV9zeXNyb290KQogCkBAIC00MTIsOSArNDE3LDkgQEAKICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICd3JykgYXMgc3BhcnNlOgogICAgICAgICAgICAgb3MuZnRydW5jYXRlKHNwYXJzZS5maWxlbm8oKSwgc2VsZi5zaXplICogMTAyNCkKIAotICAgICAgICBpbXBvcnQgdXVpZAogICAgICAgICBsYWJlbF9zdHIgPSAiIgogICAgICAgICBpZiBzZWxmLmxhYmVsOgogICAgICAgICAgICAgbGFiZWxfc3RyID0gIi1MICVzIiAlIHNlbGYubGFiZWwKLSAgICAgICAgbWtzd2FwX2NtZCA9ICJta3N3YXAgJXMgLVUgJXMgJXMiICUgKGxhYmVsX3N0ciwgc3RyKHV1aWQudXVpZDEoKSksIHBhdGgpCisKKyAgICAgICAgbWtzd2FwX2NtZCA9ICJta3N3YXAgJXMgLVUgJXMgJXMiICUgKGxhYmVsX3N0ciwgc2VsZi5mc3V1aWQsIHBhdGgpCiAgICAgICAgIGV4ZWNfbmF0aXZlX2NtZChta3N3YXBfY21kLCBuYXRpdmVfc3lzcm9vdCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2luYmFzZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2luYmFzZS5weQppbmRleCBjMDA5ODIwLi42ODZkMmZlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbmJhc2UucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5iYXNlLnB5CkBAIC0xMzcsMyArMTM3LDEzIEBACiAgICAgICAgICdwcmVwYXJlcycgdGhlIHBhcnRpdGlvbiB0byBiZSBpbmNvcnBvcmF0ZWQgaW50byB0aGUgaW1hZ2UuCiAgICAgICAgICIiIgogICAgICAgICBsb2dnZXIuZGVidWcoIlNvdXJjZVBsdWdpbjogZG9fcHJlcGFyZV9wYXJ0aXRpb246IHBhcnQ6ICVzIiwgcGFydCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkb19wb3N0X3BhcnRpdGlvbihjbHMsIHBhcnQsIHNvdXJjZV9wYXJhbXMsIGNyZWF0b3IsIGNyX3dvcmtkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9lX2J1aWxkZGlyLCBib290aW1nX2Rpciwga2VybmVsX2Rpciwgcm9vdGZzX2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX3N5c3Jvb3QpOgorICAgICAgICAiIiIKKyAgICAgICAgQ2FsbGVkIGFmdGVyIHRoZSBwYXJ0aXRpb24gaXMgY3JlYXRlZC4gSXQgaXMgdXNlZnVsIHRvIGFkZCBwb3N0CisgICAgICAgIG9wZXJhdGlvbnMgZS5nLiBzZWN1cml0eSBzaWduaW5nIHRoZSBwYXJ0aXRpb24uCisgICAgICAgICIiIgorICAgICAgICBsb2dnZXIuZGVidWcoIlNvdXJjZVBsdWdpbjogZG9fcG9zdF9wYXJ0aXRpb246IHBhcnQ6ICVzIiwgcGFydCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9pbWFnZXIvZGlyZWN0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL2ltYWdlci9kaXJlY3QucHkKaW5kZXggZGExYzA2MS4uMWZhNmI5MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL2ltYWdlci9kaXJlY3QucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL2ltYWdlci9kaXJlY3QucHkKQEAgLTYzLDYgKzYzLDcgQEAKIAogICAgICAgICAjIHBhcnNlIHBvc3NpYmxlICdyb290ZnM9bmFtZScgaXRlbXMKICAgICAgICAgc2VsZi5yb290ZnNfZGlyID0gZGljdChyZGlyLnNwbGl0KCc9JykgZm9yIHJkaXIgaW4gcm9vdGZzX2Rpci5zcGxpdCgnICcpKQorICAgICAgICBzZWxmLnJlcGxhY2VkX3Jvb3Rmc19wYXRocyA9IHt9CiAgICAgICAgIHNlbGYuYm9vdGltZ19kaXIgPSBib290aW1nX2RpcgogICAgICAgICBzZWxmLmtlcm5lbF9kaXIgPSBrZXJuZWxfZGlyCiAgICAgICAgIHNlbGYubmF0aXZlX3N5c3Jvb3QgPSBuYXRpdmVfc3lzcm9vdApAQCAtMTQxLDcgKzE0MiwxNSBAQAogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgIGlmIHBhcnQudXNlX3V1aWQ6Ci0gICAgICAgICAgICAgICAgZGV2aWNlX25hbWUgPSAiUEFSVFVVSUQ9JXMiICUgcGFydC51dWlkCisgICAgICAgICAgICAgICAgaWYgcGFydC5mc3V1aWQ6CisgICAgICAgICAgICAgICAgICAgICMgRkFUIFVVSUQgaXMgZGlmZmVyZW50IGZyb20gb3RoZXJzCisgICAgICAgICAgICAgICAgICAgIGlmIGxlbihwYXJ0LmZzdXVpZCkgPT0gMTA6CisgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VfbmFtZSA9ICJVVUlEPSVzLSVzIiAlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJ0LmZzdXVpZFsyOjZdLCBwYXJ0LmZzdXVpZFs2Ol0pCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VfbmFtZSA9ICJVVUlEPSVzIiAlIHBhcnQuZnN1dWlkCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZGV2aWNlX25hbWUgPSAiUEFSVFVVSUQ9JXMiICUgcGFydC51dWlkCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgbW1jIGRldmljZSBwYXJ0aXRpb25zIGFyZSBuYW1lZCBtbWNibGswcDEsIG1tY2JsazBwMi4uCiAgICAgICAgICAgICAgICAgcHJlZml4ID0gJ3AnIGlmICBwYXJ0LmRpc2suc3RhcnRzd2l0aCgnbW1jYmxrJykgZWxzZSAnJwpAQCAtMTc1LDYgKzE4NCw3IEBACiAgICAgICAgICAgICBuZXdfcm9vdGZzID0gc2VsZi5fd3JpdGVfZnN0YWIoc2VsZi5yb290ZnNfZGlyLmdldCgiUk9PVEZTX0RJUiIpKQogICAgICAgICBpZiBuZXdfcm9vdGZzOgogICAgICAgICAgICAgIyByb290ZnMgd2FzIGNvcGllZCB0byB1cGRhdGUgZnN0YWIKKyAgICAgICAgICAgIHNlbGYucmVwbGFjZWRfcm9vdGZzX3BhdGhzW25ld19yb290ZnNdID0gc2VsZi5yb290ZnNfZGlyWydST09URlNfRElSJ10KICAgICAgICAgICAgIHNlbGYucm9vdGZzX2RpclsnUk9PVEZTX0RJUiddID0gbmV3X3Jvb3RmcwogCiAgICAgICAgIGZvciBwYXJ0IGluIHNlbGYucGFydHM6CkBAIC0yNTAsNyArMjYwLDEwIEBACiAgICAgICAgICAgICAgICAgc3VmZml4ID0gJzonCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHN1ZmZpeCA9ICdbIiVzIl06JyAlIChwYXJ0Lm1vdW50cG9pbnQgb3IgcGFydC5sYWJlbCkKLSAgICAgICAgICAgIG1zZyArPSAnICBST09URlNfRElSJXMlc1xuJyAlIChzdWZmaXgubGp1c3QoMjApLCBwYXJ0LnJvb3Rmc19kaXIpCisgICAgICAgICAgICByb290ZGlyID0gcGFydC5yb290ZnNfZGlyCisgICAgICAgICAgICBpZiByb290ZGlyIGluIHNlbGYucmVwbGFjZWRfcm9vdGZzX3BhdGhzOgorICAgICAgICAgICAgICAgIHJvb3RkaXIgPSBzZWxmLnJlcGxhY2VkX3Jvb3Rmc19wYXRoc1tyb290ZGlyXQorICAgICAgICAgICAgbXNnICs9ICcgIFJPT1RGU19ESVIlcyVzXG4nICUgKHN1ZmZpeC5sanVzdCgyMCksIHJvb3RkaXIpCiAKICAgICAgICAgbXNnICs9ICcgIEJPT1RJTUdfRElSOiAgICAgICAgICAgICAgICAgICVzXG4nICUgc2VsZi5ib290aW1nX2RpcgogICAgICAgICBtc2cgKz0gJyAgS0VSTkVMX0RJUjogICAgICAgICAgICAgICAgICAgJXNcbicgJSBzZWxmLmtlcm5lbF9kaXIKQEAgLTMzNCwxMyArMzQ3LDE4IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgcGFydC5yZWFsbnVtID0gcmVhbG51bQogCi0gICAgICAgICMgZ2VuZXJhdGUgcGFyaXRpb24gVVVJRHMKKyAgICAgICAgIyBnZW5lcmF0ZSBwYXJpdGlvbiBhbmQgZmlsZXN5c3RlbSBVVUlEcwogICAgICAgICBmb3IgcGFydCBpbiBzZWxmLnBhcnRpdGlvbnM6CiAgICAgICAgICAgICBpZiBub3QgcGFydC51dWlkIGFuZCBwYXJ0LnVzZV91dWlkOgogICAgICAgICAgICAgICAgIGlmIHNlbGYucHRhYmxlX2Zvcm1hdCA9PSAnZ3B0JzoKICAgICAgICAgICAgICAgICAgICAgcGFydC51dWlkID0gc3RyKHV1aWQudXVpZDQoKSkKICAgICAgICAgICAgICAgICBlbHNlOiAjIG1zZG9zIHBhcnRpdGlvbiB0YWJsZQogICAgICAgICAgICAgICAgICAgICBwYXJ0LnV1aWQgPSAnJTA4eC0lMDJkJyAlIChzZWxmLmlkZW50aWZpZXIsIHBhcnQucmVhbG51bSkKKyAgICAgICAgICAgIGlmIG5vdCBwYXJ0LmZzdXVpZDoKKyAgICAgICAgICAgICAgICBpZiBwYXJ0LmZzdHlwZSA9PSAndmZhdCcgb3IgcGFydC5mc3R5cGUgPT0gJ21zZG9zJzoKKyAgICAgICAgICAgICAgICAgICAgcGFydC5mc3V1aWQgPSAnMHgnICsgc3RyKHV1aWQudXVpZDQoKSlbOjhdLnVwcGVyKCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBwYXJ0LmZzdXVpZCA9IHN0cih1dWlkLnV1aWQ0KCkpCiAKICAgICBkZWYgcHJlcGFyZShzZWxmLCBpbWFnZXIpOgogICAgICAgICAiIiJQcmVwYXJlIGFuIGltYWdlLiBDYWxsIHByZXBhcmUgbWV0aG9kIG9mIGFsbCBpbWFnZSBwYXJ0aXRpb25zLiIiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9ib290aW1nLWVmaS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvYm9vdGltZy1lZmkucHkKaW5kZXggNGM0ZjM2YS4uYmViNzRkNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9ib290aW1nLWVmaS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2Jvb3RpbWctZWZpLnB5CkBAIC0yNDAsNyArMjQwLDggQEAKICAgICAgICAgIyBkb3NmcyBpbWFnZSwgY3JlYXRlZCBieSBta2Rvc2ZzCiAgICAgICAgIGJvb3RpbWcgPSAiJXMvYm9vdC5pbWciICUgY3Jfd29ya2RpcgogCi0gICAgICAgIGRvc2ZzX2NtZCA9ICJta2Rvc2ZzIC1uIGVmaSAtQyAlcyAlZCIgJSAoYm9vdGltZywgYmxvY2tzKQorICAgICAgICBkb3Nmc19jbWQgPSAibWtkb3NmcyAtbiBlZmkgLWkgJXMgLUMgJXMgJWQiICUgXAorICAgICAgICAgICAgICAgICAgICAocGFydC5mc3V1aWQsIGJvb3RpbWcsIGJsb2NrcykKICAgICAgICAgZXhlY19uYXRpdmVfY21kKGRvc2ZzX2NtZCwgbmF0aXZlX3N5c3Jvb3QpCiAKICAgICAgICAgbWNvcHlfY21kID0gIm1jb3B5IC1pICVzIC1zICVzLyogOjovIiAlIChib290aW1nLCBoZGRkaXIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2Jvb3RpbWctcGFydGl0aW9uLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9ib290aW1nLXBhcnRpdGlvbi5weQppbmRleCA2N2U1NDk4Li5iMjM5ZmMwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2Jvb3RpbWctcGFydGl0aW9uLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvYm9vdGltZy1wYXJ0aXRpb24ucHkKQEAgLTEyOSw0ICsxMjksNCBAQAogCiAgICAgICAgIGxvZ2dlci5kZWJ1ZygnUHJlcGFyZSBib290IHBhcnRpdGlvbiB1c2luZyByb290ZnMgaW4gJXMnLCBoZGRkaXIpCiAgICAgICAgIHBhcnQucHJlcGFyZV9yb290ZnMoY3Jfd29ya2Rpciwgb2VfYnVpbGRkaXIsIGhkZGRpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVfc3lzcm9vdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVfc3lzcm9vdCwgRmFsc2UpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2Jvb3RpbWctcGNiaW9zLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9ib290aW1nLXBjYmlvcy5weQppbmRleCA1NmRhNDY4Li5kNTk5MTEyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2Jvb3RpbWctcGNiaW9zLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvYm9vdGltZy1wY2Jpb3MucHkKQEAgLTE4Niw3ICsxODYsOCBAQAogICAgICAgICAjIGRvc2ZzIGltYWdlLCBjcmVhdGVkIGJ5IG1rZG9zZnMKICAgICAgICAgYm9vdGltZyA9ICIlcy9ib290JXMuaW1nIiAlIChjcl93b3JrZGlyLCBwYXJ0LmxpbmVubykKIAotICAgICAgICBkb3Nmc19jbWQgPSAibWtkb3NmcyAtbiBib290IC1TIDUxMiAtQyAlcyAlZCIgJSAoYm9vdGltZywgYmxvY2tzKQorICAgICAgICBkb3Nmc19jbWQgPSAibWtkb3NmcyAtbiBib290IC1pICVzIC1TIDUxMiAtQyAlcyAlZCIgJSBcCisgICAgICAgICAgICAgICAgICAgIChwYXJ0LmZzdXVpZCwgYm9vdGltZywgYmxvY2tzKQogICAgICAgICBleGVjX25hdGl2ZV9jbWQoZG9zZnNfY21kLCBuYXRpdmVfc3lzcm9vdCkKIAogICAgICAgICBtY29weV9jbWQgPSAibWNvcHkgLWkgJXMgLXMgJXMvKiA6Oi8iICUgKGJvb3RpbWcsIGhkZGRpcikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLWJ1aWxkZW52LWludGVybmFsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtYnVpbGRlbnYtaW50ZXJuYWwKaW5kZXggNzdmOThhMy4uNjc3Mzg3MiAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtYnVpbGRlbnYtaW50ZXJuYWwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtYnVpbGRlbnYtaW50ZXJuYWwKQEAgLTEwMSw2ICsxMDEsNyBAQAogCiBpZiBbIC16ICIkQklUQkFLRURJUiIgXTsgdGhlbgogICAgIEJJVEJBS0VESVI9IiRPRVJPT1QvYml0YmFrZSRCQkVYVFJBIgorICAgIHRlc3QgLWQgIiRCSVRCQUtFRElSIiB8fCBCSVRCQUtFRElSPSIkT0VST09ULy4uL2JpdGJha2UkQkJFWFRSQSIKIGZpCiAKIEJJVEJBS0VESVI9JChyZWFkbGluayAtZiAiJEJJVEJBS0VESVIiKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtZGVwZW5kcy1kb3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9vZS1kZXBlbmRzLWRvdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41Y2VjMjNiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtZGVwZW5kcy1kb3QKQEAgLTAsMCArMSwxMjEgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE4IFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKyMgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQorCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCByZQorCitjbGFzcyBEb3Qob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKAorICAgICAgICAgICAgZGVzY3JpcHRpb249IkFuYWx5c2UgcmVjaXBlLWRlcGVuZHMuZG90IGdlbmVyYXRlZCBieSBiaXRiYWtlIC1nIiwKKyAgICAgICAgICAgIGVwaWxvZz0iVXNlICUocHJvZylzIC0taGVscCB0byBnZXQgaGVscCIpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoImRvdGZpbGUiLAorICAgICAgICAgICAgaGVscCA9ICJTcGVjaWZ5IHRoZSBkb3RmaWxlIiwgbmFyZ3MgPSAxLCBhY3Rpb249J3N0b3JlJywgZGVmYXVsdD0nJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLWsiLCAiLS1rZXkiLAorICAgICAgICAgICAgaGVscCA9ICJTcGVjaWZ5IHRoZSBrZXksIGUuZy4sIHJlY2lwZSBuYW1lIiwKKyAgICAgICAgICAgIGFjdGlvbj0ic3RvcmUiLCBkZWZhdWx0PScnKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItZCIsICItLWRlcGVuZHMiLAorICAgICAgICAgICAgaGVscCA9ICJQcmludCB0aGUga2V5J3MgZGVwZW5kZW5jaWVzIiwKKyAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi13IiwgIi0td2h5IiwKKyAgICAgICAgICAgIGhlbHAgPSAiUHJpbnQgd2h5IHRoZSBrZXkgaXMgYnVpbHQiLAorICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSkKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLXIiLCAiLS1yZW1vdmUiLAorICAgICAgICAgICAgaGVscCA9ICJSZW1vdmUgZHVwbGljYXRlZCBkZXBlbmRlbmNpZXMgdG8gcmVkdWNlIHRoZSBzaXplIG9mIHRoZSBkb3QgZmlsZXMuIgorICAgICAgICAgICAgICAgICAgICAiIEZvciBleGFtcGxlLCBBLT5CLCBCLT5DLCBBLT5DLCB0aGVuIEEtPkMgY2FuIGJlIHJlbW92ZWQuIiwKKyAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UpCisKKyAgICAgICAgc2VsZi5hcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgICAgIGlmIGxlbihzeXMuYXJndikgIT0gMyBhbmQgbGVuKHN5cy5hcmd2KSA8IDU6CisgICAgICAgICAgICBwcmludCgnRVJST1I6IE5vdCBlbm91Z2ggYXJncywgc2VlIC0taGVscCBmb3IgdXNhZ2UnKQorCisgICAgZGVmIG1haW4oc2VsZik6CisgICAgICAgICNwcmludChzZWxmLmFyZ3MuZG90ZmlsZVswXSkKKyAgICAgICAgIyBUaGUgZm9ybWF0IGlzIHtrZXk6IGRlcGVuZHN9CisgICAgICAgIGRlcGVuZHMgPSB7fQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5hcmdzLmRvdGZpbGVbMF0sICdyJykgYXMgZjoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6CisgICAgICAgICAgICAgICAgaWYgJyAtPiAnIG5vdCBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGxpbmVfbm9fcXVvdGVzID0gbGluZS5yZXBsYWNlKCciJywgJycpCisgICAgICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCIoLiopIC0+ICguKikiLCBsaW5lX25vX3F1b3RlcykKKyAgICAgICAgICAgICAgICBpZiBub3QgbToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ1dBUk5JTkc6IEZvdW5kIHVuZXhwZWN0ZWQgbGluZTogJXMnICUgbGluZSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBrZXkgPSBtLmdyb3VwKDEpCisgICAgICAgICAgICAgICAgaWYga2V5ID09ICJtZXRhLXdvcmxkLXBrZ2RhdGEiOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGRlcCA9IG0uZ3JvdXAoMikKKyAgICAgICAgICAgICAgICBpZiBrZXkgaW4gZGVwZW5kczoKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGtleSBpbiBkZXBlbmRzW2tleV06CisgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzW2tleV0uYWRkKGRlcCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdXQVJOSU5HOiBGb251ZCBkdXBsaWNhdGVkIGxpbmU6ICVzJyAlIGxpbmUpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kc1trZXldID0gc2V0KCkKKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kc1trZXldLmFkZChkZXApCisKKyAgICAgICAgaWYgc2VsZi5hcmdzLnJlbW92ZToKKyAgICAgICAgICAgIHJlZHVjZWRfZGVwZW5kcyA9IHt9CisgICAgICAgICAgICBmb3IgaywgZGVwcyBpbiBkZXBlbmRzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgY2hpbGRfZGVwcyA9IHNldCgpCisgICAgICAgICAgICAgICAgYWRkZWQgPSBzZXQoKQorICAgICAgICAgICAgICAgICMgQm90aCBkaXJlY3QgYW5kIGluZGlyZWN0IGRlcGVuZHMgYXJlIGFscmVhZHkgaW4gdGhlIGRpY3QsIHNvCisgICAgICAgICAgICAgICAgIyB3ZSBkb24ndCBoYXZlIHRvIGRvIHRoaXMgcmVjdXJzaXZlbHkuCisgICAgICAgICAgICAgICAgZm9yIGRlcCBpbiBkZXBzOgorICAgICAgICAgICAgICAgICAgICBpZiBkZXAgaW4gZGVwZW5kczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkX2RlcHMgfD0gZGVwZW5kc1tkZXBdCisKKyAgICAgICAgICAgICAgICByZWR1Y2VkX2RlcGVuZHNba10gPSBkZXBzIC0gY2hpbGRfZGVwcworICAgICAgICAgICAgICAgIG91dGZpbGU9ICclcy1yZWR1Y2VkJXMnICUgKHNlbGYuYXJncy5kb3RmaWxlWzBdWzotNF0sIHNlbGYuYXJncy5kb3RmaWxlWzBdWy00Ol0pCisgICAgICAgICAgICB3aXRoIG9wZW4ob3V0ZmlsZSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgICAgIHByaW50KCdTYXZpbmcgcmVkdWNlZCBkb3QgZmlsZSB0byAlcycgJSBvdXRmaWxlKQorICAgICAgICAgICAgICAgIGYud3JpdGUoJ2RpZ3JhcGggZGVwZW5kcyB7XG4nKQorICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIHJlZHVjZWRfZGVwZW5kcy5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICBmb3IgZGVwIGluIHY6CisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCciJXMiIC0+ICIlcyJcbicgJSAoaywgZGVwKSkKKyAgICAgICAgICAgICAgICBmLndyaXRlKCd9XG4nKQorICAgICAgICAgICAgc3lzLmV4aXQoMCkKKworICAgICAgICBpZiBzZWxmLmFyZ3Mua2V5IG5vdCBpbiBkZXBlbmRzOgorICAgICAgICAgICAgcHJpbnQoIkVSUk9SOiBDYW4ndCBmaW5kIGtleSAlcyBpbiAlcyIgJSAoc2VsZi5hcmdzLmtleSwgc2VsZi5hcmdzLmRvdGZpbGVbMF0pKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKworICAgICAgICBpZiBzZWxmLmFyZ3MuZGVwZW5kczoKKyAgICAgICAgICAgIGlmIHNlbGYuYXJncy5rZXkgaW4gZGVwZW5kczoKKyAgICAgICAgICAgICAgICBwcmludCgnRGVwZW5kczogJXMnICUgJyAnLmpvaW4oZGVwZW5kc1tzZWxmLmFyZ3Mua2V5XSkpCisKKyAgICAgICAgcmV2ZXJzZV9kZXBzID0gW10KKyAgICAgICAgaWYgc2VsZi5hcmdzLndoeToKKyAgICAgICAgICAgIGZvciBrLCB2IGluIGRlcGVuZHMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmFyZ3Mua2V5IGluIHYgYW5kIG5vdCBrIGluIHJldmVyc2VfZGVwczoKKyAgICAgICAgICAgICAgICAgICAgcmV2ZXJzZV9kZXBzLmFwcGVuZChrKQorICAgICAgICAgICAgcHJpbnQoJ0JlY2F1c2U6ICVzJyAlICcgJy5qb2luKHJldmVyc2VfZGVwcykpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdHJ5OgorICAgICAgICBkb3QgPSBEb3QoKQorICAgICAgICByZXQgPSBkb3QubWFpbigpCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlc2M6CisgICAgICAgIHJldCA9IDEKKyAgICAgICAgaW1wb3J0IHRyYWNlYmFjaworICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKKyAgICBzeXMuZXhpdChyZXQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9vZS1wa2dkYXRhLXV0aWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9vZS1wa2dkYXRhLXV0aWwKaW5kZXggYzZmYmE1Ni4uYWVhOGE1NyAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2UtcGtnZGF0YS11dGlsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLXBrZ2RhdGEtdXRpbApAQCAtMjUyLDMyICsyNTIsNzIgQEAKICAgICBwcmludCgnXG4nLmpvaW4oaXRlbXMpKQogCiBkZWYgbG9va3VwX3JlY2lwZShhcmdzKToKKyAgICBkZWYgcGFyc2VfcGtnZGF0YWZpbGUocGtnZGF0YWZpbGUpOgorICAgICAgICB3aXRoIG9wZW4ocGtnZGF0YWZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIGZvdW5kID0gRmFsc2UKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdQTjonKToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiVzIiAlIGxpbmUuc3BsaXQoJzonLCAxKVsxXS5zdHJpcCgpKQorICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIG5vdCBmb3VuZDoKKyAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIlVuYWJsZSB0byBmaW5kIFBOIGVudHJ5IGluICVzIiAlIHBrZ2RhdGFmaWxlKQorICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCisKICAgICAjIEhhbmRsZSBib3RoIG11bHRpcGxlIGFyZ3VtZW50cyBhbmQgbXVsdGlwbGUgdmFsdWVzIHdpdGhpbiBhbiBhcmcgKG9sZCBzeW50YXgpCiAgICAgcGtncyA9IFtdCiAgICAgZm9yIHBrZ2l0ZW0gaW4gYXJncy5wa2c6CiAgICAgICAgIHBrZ3MuZXh0ZW5kKHBrZ2l0ZW0uc3BsaXQoKSkKIAotICAgIG1hcHBpbmdzID0gZGVmYXVsdGRpY3QobGlzdCkKICAgICBmb3IgcGtnIGluIHBrZ3M6Ci0gICAgICAgIHBrZ2ZpbGUgPSBvcy5wYXRoLmpvaW4oYXJncy5wa2dkYXRhX2RpciwgJ3J1bnRpbWUtcmV2ZXJzZScsIHBrZykKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGtnZmlsZSk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGtnZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGY6Ci0gICAgICAgICAgICAgICAgICAgIGZpZWxkcyA9IGxpbmUucnN0cmlwKCkuc3BsaXQoJzogJykKLSAgICAgICAgICAgICAgICAgICAgaWYgZmllbGRzWzBdID09ICdQTic6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nc1twa2ddLmFwcGVuZChmaWVsZHNbMV0pCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgIGlmIGxlbihtYXBwaW5ncykgPCBsZW4ocGtncyk6Ci0gICAgICAgIG1pc3NpbmcgPSBsaXN0KHNldChwa2dzKSAtIHNldChtYXBwaW5ncy5rZXlzKCkpKQotICAgICAgICBsb2dnZXIuZXJyb3IoIlRoZSBmb2xsb3dpbmcgcGFja2FnZXMgY291bGQgbm90IGJlIGZvdW5kOiAlcyIgJSAnLCAnLmpvaW4obWlzc2luZykpCi0gICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICBpdGVtcyA9IFtdCi0gICAgZm9yIHBrZyBpbiBwa2dzOgotICAgICAgICBpdGVtcy5leHRlbmQobWFwcGluZ3MuZ2V0KHBrZywgW10pKQotICAgIHByaW50KCdcbicuam9pbihpdGVtcykpCisgICAgICAgIHByb3ZpZGVwa2dwYXRoID0gb3MucGF0aC5qb2luKGFyZ3MucGtnZGF0YV9kaXIsICJydW50aW1lLXJwcm92aWRlcyIsIHBrZykKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocHJvdmlkZXBrZ3BhdGgpOgorICAgICAgICAgICAgZm9yIGYgaW4gb3MubGlzdGRpcihwcm92aWRlcGtncGF0aCk6CisgICAgICAgICAgICAgICAgaWYgZiAhPSBwa2c6CisgICAgICAgICAgICAgICAgICAgIHByaW50KCIlcyBpcyBpbiB0aGUgUlBST1ZJREVTIG9mICVzOiIgJSAocGtnLCBmKSkKKyAgICAgICAgICAgICAgICBwa2dkYXRhZmlsZSA9IG9zLnBhdGguam9pbihhcmdzLnBrZ2RhdGFfZGlyLCAicnVudGltZSIsIGYpCisgICAgICAgICAgICAgICAgcGFyc2VfcGtnZGF0YWZpbGUocGtnZGF0YWZpbGUpCisgICAgICAgICAgICBicmVhaworICAgICAgICBwa2dkYXRhZmlsZSA9IG9zLnBhdGguam9pbihhcmdzLnBrZ2RhdGFfZGlyLCAncnVudGltZS1yZXZlcnNlJywgcGtnKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGtnZGF0YWZpbGUpOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJUaGUgZm9sbG93aW5nIHBhY2thZ2VzIGNvdWxkIG5vdCBiZSBmb3VuZDogJXMiICUgcGtnKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgcGFyc2VfcGtnZGF0YWZpbGUocGtnZGF0YWZpbGUpCiAKIGRlZiBwYWNrYWdlX2luZm8oYXJncyk6CisgICAgZGVmIHBhcnNlX3BrZ2RhdGFmaWxlKHBrZ2RhdGFmaWxlKToKKyAgICAgICAgd2l0aCBvcGVuKHBrZ2RhdGFmaWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICBwa2dlID0gJycKKyAgICAgICAgICAgIHBrZ3IgPSAnJworICAgICAgICAgICAgcGUgPSAnJworICAgICAgICAgICAgcHIgPSAnJworICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ1BLR1Y6Jyk6CisgICAgICAgICAgICAgICAgICAgIHBrZ192ZXJzaW9uID0gbGluZS5zcGxpdCgnOicsIDEpWzFdLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnUEtHRTonKToKKyAgICAgICAgICAgICAgICAgICAgcGtnZSA9IGxpbmUuc3BsaXQoJzonLCAxKVsxXS5zdHJpcCgpCisgICAgICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJ1BLR1I6Jyk6CisgICAgICAgICAgICAgICAgICAgIHBrZ3IgPSBsaW5lLnNwbGl0KCc6JywgMSlbMV0uc3RyaXAoKQorICAgICAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCdQTjonKToKKyAgICAgICAgICAgICAgICAgICAgcmVjaXBlID0gbGluZS5zcGxpdCgnOicsIDEpWzFdLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnUFY6Jyk6CisgICAgICAgICAgICAgICAgICAgIHJlY2lwZV92ZXJzaW9uID0gbGluZS5zcGxpdCgnOicsIDEpWzFdLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnUEU6Jyk6CisgICAgICAgICAgICAgICAgICAgIHBlID0gbGluZS5zcGxpdCgnOicsIDEpWzFdLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnUFI6Jyk6CisgICAgICAgICAgICAgICAgICAgIHByID0gbGluZS5zcGxpdCgnOicsIDEpWzFdLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnUEtHU0laRScpOgorICAgICAgICAgICAgICAgICAgICBwa2dfc2l6ZSA9IGxpbmUuc3BsaXQoJzonLCAxKVsxXS5zdHJpcCgpCisgICAgICAgICAgICBpZiBwa2dlOgorICAgICAgICAgICAgICAgIHBrZ192ZXJzaW9uID0gcGtnZSArICI6IiArIHBrZ192ZXJzaW9uCisgICAgICAgICAgICBpZiBwa2dyOgorICAgICAgICAgICAgICAgIHBrZ192ZXJzaW9uID0gcGtnX3ZlcnNpb24gKyAiLSIgKyBwa2dyCisgICAgICAgICAgICBpZiBwZToKKyAgICAgICAgICAgICAgICByZWNpcGVfdmVyc2lvbiA9IHBlICsgIjoiICsgcmVjaXBlX3ZlcnNpb24KKyAgICAgICAgICAgIGlmIHByOgorICAgICAgICAgICAgICAgIHJlY2lwZV92ZXJzaW9uID0gcmVjaXBlX3ZlcnNpb24gKyAiLSIgKyBwcgorICAgICAgICAgICAgcHJpbnQoIiVzICVzICVzICVzICVzIiAlIChwa2csIHBrZ192ZXJzaW9uLCByZWNpcGUsIHJlY2lwZV92ZXJzaW9uLCBwa2dfc2l6ZSkpCisKICAgICAjIEhhbmRsZSBib3RoIG11bHRpcGxlIGFyZ3VtZW50cyBhbmQgbXVsdGlwbGUgdmFsdWVzIHdpdGhpbiBhbiBhcmcgKG9sZCBzeW50YXgpCiAgICAgcGFja2FnZXMgPSBbXQogICAgIGlmIGFyZ3MuZmlsZToKQEAgLTI5Myw1MSArMzMzLDIwIEBACiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIk5vIHBhY2thZ2VzIHNwZWNpZmllZCIpCiAgICAgICAgICAgICBzeXMuZXhpdCgxKQogCi0gICAgbWFwcGluZ3MgPSBkZWZhdWx0ZGljdChsYW1iZGE6IGRlZmF1bHRkaWN0KHN0cikpCiAgICAgZm9yIHBrZyBpbiBwYWNrYWdlczoKLSAgICAgICAgcGtnZmlsZSA9IG9zLnBhdGguam9pbihhcmdzLnBrZ2RhdGFfZGlyLCAncnVudGltZS1yZXZlcnNlJywgcGtnKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwa2dmaWxlKToKLSAgICAgICAgICAgIHdpdGggb3Blbihwa2dmaWxlLCAncicpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKLSAgICAgICAgICAgICAgICAgICAgZmllbGRzID0gbGluZS5yc3RyaXAoKS5zcGxpdCgnOiAnKQotICAgICAgICAgICAgICAgICAgICBpZiBmaWVsZHNbMF0uZW5kc3dpdGgoIl8iICsgcGtnKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBmaWVsZHNbMF1bOmxlbihmaWVsZHNbMF0pIC0gbGVuKHBrZykgLSAxXQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgayA9IGZpZWxkc1swXQotICAgICAgICAgICAgICAgICAgICB2ID0gZmllbGRzWzFdIGlmIGxlbihmaWVsZHMpID09IDIgZWxzZSAiIgotICAgICAgICAgICAgICAgICAgICBtYXBwaW5nc1twa2ddW2tdID0gdgotCi0gICAgaWYgbGVuKG1hcHBpbmdzKSA8IGxlbihwYWNrYWdlcyk6Ci0gICAgICAgIG1pc3NpbmcgPSBsaXN0KHNldChwYWNrYWdlcykgLSBzZXQobWFwcGluZ3Mua2V5cygpKSkKLSAgICAgICAgbG9nZ2VyLmVycm9yKCJUaGUgZm9sbG93aW5nIHBhY2thZ2VzIGNvdWxkIG5vdCBiZSBmb3VuZDogJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICcsICcuam9pbihtaXNzaW5nKSkKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIGl0ZW1zID0gW10KLSAgICBmb3IgcGtnIGluIHBhY2thZ2VzOgotICAgICAgICBwa2dfdmVyc2lvbiA9IG1hcHBpbmdzW3BrZ11bJ1BLR1YnXQotICAgICAgICBpZiBtYXBwaW5nc1twa2ddWydQS0dFJ106Ci0gICAgICAgICAgICBwa2dfdmVyc2lvbiA9IG1hcHBpbmdzW3BrZ11bJ1BLR0UnXSArICI6IiArIHBrZ192ZXJzaW9uCi0gICAgICAgIGlmIG1hcHBpbmdzW3BrZ11bJ1BLR1InXToKLSAgICAgICAgICAgIHBrZ192ZXJzaW9uID0gcGtnX3ZlcnNpb24gKyAiLSIgKyBtYXBwaW5nc1twa2ddWydQS0dSJ10KLSAgICAgICAgcmVjaXBlID0gbWFwcGluZ3NbcGtnXVsnUE4nXQotICAgICAgICByZWNpcGVfdmVyc2lvbiA9IG1hcHBpbmdzW3BrZ11bJ1BWJ10KLSAgICAgICAgaWYgbWFwcGluZ3NbcGtnXVsnUEUnXToKLSAgICAgICAgICAgIHJlY2lwZV92ZXJzaW9uID0gbWFwcGluZ3NbcGtnXVsnUEUnXSArICI6IiArIHJlY2lwZV92ZXJzaW9uCi0gICAgICAgIGlmIG1hcHBpbmdzW3BrZ11bJ1BSJ106Ci0gICAgICAgICAgICByZWNpcGVfdmVyc2lvbiA9IHJlY2lwZV92ZXJzaW9uICsgIi0iICsgbWFwcGluZ3NbcGtnXVsnUFInXQotICAgICAgICBwa2dfc2l6ZSA9IG1hcHBpbmdzW3BrZ11bJ1BLR1NJWkUnXQotCi0gICAgICAgIGxpbmUgPSAiJXMgJXMgJXMgJXMgJXMiICUgKHBrZywgcGtnX3ZlcnNpb24sIHJlY2lwZSwgcmVjaXBlX3ZlcnNpb24sIHBrZ19zaXplKQotCi0gICAgICAgIGlmIGFyZ3MuZXh0cmE6Ci0gICAgICAgICAgICBmb3IgdmFyIGluIGFyZ3MuZXh0cmE6Ci0gICAgICAgICAgICAgICAgdmFsID0gbWFwcGluZ3NbcGtnXVt2YXJdLnN0cmlwKCkKLSAgICAgICAgICAgICAgICB2YWwgPSByZS5zdWIocidccysnLCAnICcsIHZhbCkKLSAgICAgICAgICAgICAgICBsaW5lICs9ICcgIiVzIicgJSB2YWwKLQotICAgICAgICBpdGVtcy5hcHBlbmQobGluZSkKLSAgICBwcmludCgnXG4nLmpvaW4oaXRlbXMpKQorICAgICAgICBwcm92aWRlcGtncGF0aCA9IG9zLnBhdGguam9pbihhcmdzLnBrZ2RhdGFfZGlyLCAicnVudGltZS1ycHJvdmlkZXMiLCBwa2cpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHByb3ZpZGVwa2dwYXRoKToKKyAgICAgICAgICAgIGZvciBmIGluIG9zLmxpc3RkaXIocHJvdmlkZXBrZ3BhdGgpOgorICAgICAgICAgICAgICAgIGlmIGYgIT0gcGtnOgorICAgICAgICAgICAgICAgICAgICBwcmludCgiJXMgaXMgaW4gdGhlIFJQUk9WSURFUyBvZiAlczoiICUgKHBrZywgZikpCisgICAgICAgICAgICAgICAgcGtnZGF0YWZpbGUgPSBvcy5wYXRoLmpvaW4oYXJncy5wa2dkYXRhX2RpciwgInJ1bnRpbWUiLCBmKQorICAgICAgICAgICAgICAgIHBhcnNlX3BrZ2RhdGFmaWxlKHBrZ2RhdGFmaWxlKQorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgcGtnZGF0YWZpbGUgPSBvcy5wYXRoLmpvaW4oYXJncy5wa2dkYXRhX2RpciwgInJ1bnRpbWUtcmV2ZXJzZSIsIHBrZykKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBrZ2RhdGFmaWxlKToKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiVW5hYmxlIHRvIGZpbmQgYW55IGJ1aWx0IHJ1bnRpbWUgcGFja2FnZSBuYW1lZCAlcyIgJSBwa2cpCisgICAgICAgICAgICBzeXMuZXhpdCgxKQorICAgICAgICBwYXJzZV9wa2dkYXRhZmlsZShwa2dkYXRhZmlsZSkKIAogZGVmIGdldF9yZWNpcGVfcGtncyhwa2dkYXRhX2RpciwgcmVjaXBlLCB1bnBhY2thZ2VkKToKICAgICByZWNpcGVkYXRhZmlsZSA9IG9zLnBhdGguam9pbihwa2dkYXRhX2RpciwgcmVjaXBlKQpAQCAtNDI2LDYgKzQzNSwyNiBAQAogCiBkZWYgbGlzdF9wa2dfZmlsZXMoYXJncyk6CiAgICAgaW1wb3J0IGpzb24KKyAgICBkZWYgcGFyc2VfcGtnZGF0YWZpbGUocGtnZGF0YWZpbGUsIGxvbmc9RmFsc2UpOgorICAgICAgICB3aXRoIG9wZW4ocGtnZGF0YWZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIGZvdW5kID0gRmFsc2UKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdGSUxFU19JTkZPOicpOgorICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgdmFsID0gbGluZS5zcGxpdCgnOicsIDEpWzFdLnN0cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgZGljdHZhbCA9IGpzb24ubG9hZHModmFsKQorICAgICAgICAgICAgICAgICAgICBpZiBsb25nOgorICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBtYXgobWFwKGxlbiwgZGljdHZhbCksIGRlZmF1bHQ9MCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmdWxscHRoIGluIHNvcnRlZChkaWN0dmFsKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiXHR7Ont3aWR0aH19XHR7fSIuZm9ybWF0KGZ1bGxwdGgsIGRpY3R2YWxbZnVsbHB0aF0sIHdpZHRoPXdpZHRoKSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmdWxscHRoIGluIHNvcnRlZChkaWN0dmFsKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiXHQlcyIgJSBmdWxscHRoKQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgbm90IGZvdW5kOgorICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiVW5hYmxlIHRvIGZpbmQgRklMRVNfSU5GTyBlbnRyeSBpbiAlcyIgJSBwa2dkYXRhZmlsZSkKKyAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQorCiAKICAgICBpZiBhcmdzLnJlY2lwZToKICAgICAgICAgaWYgYXJncy5wa2c6CkBAIC00NTUsMjUgKzQ4NCwyMiBAQAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiVW5hYmxlIHRvIGZpbmQgYW55IGJ1aWx0IHJ1bnRpbWUgcGFja2FnZSBuYW1lZCAlcyIgJSBwa2cpCiAgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgICAgIHBhcnNlX3BrZ2RhdGFmaWxlKHBrZ2RhdGFmaWxlLCBhcmdzLmxvbmcpCisKICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHByb3ZpZGVwa2dwYXRoID0gb3MucGF0aC5qb2luKGFyZ3MucGtnZGF0YV9kaXIsICJydW50aW1lLXJwcm92aWRlcyIsIHBrZykKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHByb3ZpZGVwa2dwYXRoKToKKyAgICAgICAgICAgICAgICBmb3IgZiBpbiBvcy5saXN0ZGlyKHByb3ZpZGVwa2dwYXRoKToKKyAgICAgICAgICAgICAgICAgICAgaWYgZiAhPSBwa2c6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiJXMgaXMgaW4gdGhlIFJQUk9WSURFUyBvZiAlczoiICUgKHBrZywgZikpCisgICAgICAgICAgICAgICAgICAgIHBrZ2RhdGFmaWxlID0gb3MucGF0aC5qb2luKGFyZ3MucGtnZGF0YV9kaXIsICJydW50aW1lIiwgZikKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VfcGtnZGF0YWZpbGUocGtnZGF0YWZpbGUsIGFyZ3MubG9uZykKKyAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgcGtnZGF0YWZpbGUgPSBvcy5wYXRoLmpvaW4oYXJncy5wa2dkYXRhX2RpciwgInJ1bnRpbWUiLCBwa2cpCiAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGtnZGF0YWZpbGUpOgogICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiVW5hYmxlIHRvIGZpbmQgYW55IGJ1aWx0IHJlY2lwZS1zcGFjZSBwYWNrYWdlIG5hbWVkICVzIiAlIHBrZykKICAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgICAgIHdpdGggb3Blbihwa2dkYXRhZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgZm91bmQgPSBGYWxzZQotICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKLSAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ0ZJTEVTX0lORk86Jyk6Ci0gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICB2YWwgPSBsaW5lLnNwbGl0KCc6JywgMSlbMV0uc3RyaXAoKQotICAgICAgICAgICAgICAgICAgICBkaWN0dmFsID0ganNvbi5sb2Fkcyh2YWwpCi0gICAgICAgICAgICAgICAgICAgIGZvciBmdWxscHRoIGluIHNvcnRlZChkaWN0dmFsKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJcdCVzIiAlIGZ1bGxwdGgpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBub3QgZm91bmQ6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJVbmFibGUgdG8gZmluZCBGSUxFU19JTkZPIGVudHJ5IGluICVzIiAlIHBrZ2RhdGFmaWxlKQotICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgICAgICBwYXJzZV9wa2dkYXRhZmlsZShwa2dkYXRhZmlsZSwgYXJncy5sb25nKQogCiBkZWYgZmluZF9wYXRoKGFyZ3MpOgogICAgIGltcG9ydCBqc29uCkBAIC01MjcsNiArNTUzLDcgQEAKICAgICBwYXJzZXJfbGlzdF9wa2dfZmlsZXMuYWRkX2FyZ3VtZW50KCctcicsICctLXJ1bnRpbWUnLCBoZWxwPSdTcGVjaWZpZWQgcGFja2FnZShzKSBhcmUgcnVudGltZSBwYWNrYWdlIG5hbWVzIGluc3RlYWQgb2YgcmVjaXBlLXNwYWNlIHBhY2thZ2UgbmFtZXMnLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgIHBhcnNlcl9saXN0X3BrZ19maWxlcy5hZGRfYXJndW1lbnQoJy1wJywgJy0tcmVjaXBlJywgaGVscD0nUmVwb3J0IG9uIGFsbCBwYWNrYWdlcyBwcm9kdWNlZCBieSB0aGUgc3BlY2lmaWVkIHJlY2lwZScpCiAgICAgcGFyc2VyX2xpc3RfcGtnX2ZpbGVzLmFkZF9hcmd1bWVudCgnLXUnLCAnLS11bnBhY2thZ2VkJywgaGVscD0nSW5jbHVkZSB1bnBhY2thZ2VkIChpLmUuIGVtcHR5KSBwYWNrYWdlcyAob25seSB1c2VmdWwgd2l0aCAtcC8tLXJlY2lwZSknLCBhY3Rpb249J3N0b3JlX3RydWUnKQorICAgIHBhcnNlcl9saXN0X3BrZ19maWxlcy5hZGRfYXJndW1lbnQoJy1sJywgJy0tbG9uZycsIGhlbHA9J1Nob3cgbW9yZSBpbmZvcm1hdGlvbiBwZXIgZmlsZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgcGFyc2VyX2xpc3RfcGtnX2ZpbGVzLnNldF9kZWZhdWx0cyhmdW5jPWxpc3RfcGtnX2ZpbGVzKQogCiAgICAgcGFyc2VyX2xvb2t1cF9yZWNpcGUgPSBzdWJwYXJzZXJzLmFkZF9wYXJzZXIoJ2xvb2t1cC1yZWNpcGUnLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2Utc2V0dXAtcnBtcmVwbyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL29lLXNldHVwLXJwbXJlcG8KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGRmMWM2MTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvb2Utc2V0dXAtcnBtcmVwbworKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0jIS9iaW4vYmFzaAotIwotIyBUaGlzIHV0aWxpdHkgc2V0dXAgdGhlIG5lY2Vzc2FyeSBtZXRhZGF0YSBmb3IgYW4gcnBtIHJlcG8KLSMKLSMgQ29weXJpZ2h0IChjKSAyMDExIEludGVsIENvcnAuCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCi0jIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgotIyBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCi0KLQotIyBEb24ndCB1c2UgVE1QRElSIGZyb20gdGhlIGV4dGVybmFsIGVudmlyb25tZW50LCBpdCBtYXkgYmUgYSBkaXN0cm8KLSMgdmFyaWFibGUgcG9pbnRpbmcgdG8gL3RtcCAoZS5nLiB3aXRoaW4gWCBvbiBPcGVuU1VTRSkKLSMgSW5zdGVhZCwgdXNlIE9FX1RNUERJUiBmb3IgcGFzc2luZyB0aGlzIGluIGV4dGVybmFsbHkuCi1UTVBESVI9IiRPRV9UTVBESVIiCi0KLXNldHVwX3RtcGRpcigpIHsKLSAgICBpZiBbIC16ICIkVE1QRElSIiBdOyB0aGVuCi0gICAgICAgICMgVHJ5IHRvIGdldCBUTVBESVIgZnJvbSBiaXRiYWtlCi0gICAgICAgIHR5cGUgLVAgYml0YmFrZSAmPi9kZXYvbnVsbCB8fCB7Ci0gICAgICAgICAgICBlY2hvICJJbiBvcmRlciBmb3IgdGhpcyBzY3JpcHQgdG8gZHluYW1pY2FsbHkgaW5mZXIgcGF0aHMiOwotICAgICAgICAgICAgZWNobyAidG8ga2VybmVscyBvciBmaWxlc3lzdGVtIGltYWdlcywgeW91IGVpdGhlciBuZWVkIjsKLSAgICAgICAgICAgIGVjaG8gImJpdGJha2UgaW4geW91ciBQQVRIIG9yIHRvIHNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudiI7Ci0gICAgICAgICAgICBlY2hvICJiZWZvcmUgcnVubmluZyB0aGlzIHNjcmlwdCIgPiYyOwotICAgICAgICAgICAgZXhpdCAxOyB9Ci0KLSAgICAgICAgIyBXZSBoYXZlIGJpdGJha2UgaW4gUEFUSCwgZ2V0IFRNUERJUiBmcm9tIGJpdGJha2UKLSAgICAgICAgVE1QRElSPWBiaXRiYWtlIC1lIHwgZ3JlcCBeVE1QRElSPVwiIHwgY3V0IC1kICc9JyAtZjIgfCBjdXQgLWQgJyInIC1mMmAKLSAgICAgICAgaWYgWyAteiAiJFRNUERJUiIgXTsgdGhlbgotICAgICAgICAgICAgZWNobyAiRXJyb3I6IHRoaXMgc2NyaXB0IG5lZWRzIHRvIGJlIHJ1biBmcm9tIHlvdXIgYnVpbGQgZGlyZWN0b3J5LCIKLSAgICAgICAgICAgIGVjaG8gIm9yIHlvdSBuZWVkIHRvIGV4cGxpY2l0bHkgc2V0IFRNUERJUiBpbiB5b3VyIGVudmlyb25tZW50IgotICAgICAgICAgICAgZXhpdCAxCi0gICAgICAgIGZpCi0gICAgZmkKLX0KLQotc2V0dXBfdG1wZGlyCi0KLWZ1bmN0aW9uIHVzYWdlKCkgewotICAgIGVjaG8gJ1VzYWdlOiBvZS1zZXR1cC1ycG1yZXBvIHJwbS1kaXInCi0gICAgZWNobyAnJwotICAgIGVjaG8gJ09wZW5FbWJlZGRlZCBzZXR1cC1ycG1yZXBvIC0gc2V0dXAgcnBtIHJlcG9zaXRvcnknCi0gICAgZWNobyAnJwotICAgIGVjaG8gJ2FyZ3VtZW50czonCi0gICAgZWNobyAiICBycG0tZGlyICAgICAgICAgICAgICAgcnBtIHJlcG8gZGlyZWN0b3J5LCBkZWZhdWx0IGlzICRUTVBESVIvZGVwbG95L3JwbSIKLSAgICBlY2hvICcnCi19Ci0KLWlmIFsgJCMgLWd0IDEgLW8gIiQxIiA9ICctLWhlbHAnIC1vICIkMSIgPSAnLWgnIF07IHRoZW4KLSAgICB1c2FnZQotICAgIGV4aXQgMgotZmkKLQotc2V0dXBfc3lzcm9vdCgpIHsKLQkjIFRvb2xjaGFpbiBpbnN0YWxscyBzZXQgdXAgJE9FQ09SRV9OQVRJVkVfU1lTUk9PVCBpbiB0aGVpcgotCSMgZW52aXJvbm1lbnQgc2NyaXB0LiBJZiB0aGF0IHZhcmlhYmxlIGlzbid0IHNldCwgd2UncmUKLQkjIGVpdGhlciBpbiBhbiBpbi10cmVlIHBva3kgc2NlbmFyaW8gb3IgdGhlIGVudmlyb25tZW50Ci0JIyBzY3JpcHQgd2Fzbid0IHNvdXJjZSdkLgotCWlmIFsgLXogIiRPRUNPUkVfTkFUSVZFX1NZU1JPT1QiIF07IHRoZW4KLQkJc2V0dXBfdG1wZGlyCi0JCUJVSUxEX0FSQ0g9YHVuYW1lIC1tYAotCQlCVUlMRF9PUz1gdW5hbWUgfCB0ciAnW0EtWl0nICdbYS16XSdgCi0JCUJVSUxEX1NZUz0iJEJVSUxEX0FSQ0gtJEJVSUxEX09TIgotCi0JCU9FQ09SRV9OQVRJVkVfU1lTUk9PVD0kVE1QRElSL3N5c3Jvb3RzLyRCVUlMRF9TWVMKLQlmaSAKLX0KLQotc2V0dXBfc3lzcm9vdAotCi0KLWlmIFsgLW4gIiQxIiBdOyB0aGVuCi0JUlBNX0RJUj0iJDEiCi1lbHNlCi0JUlBNX0RJUj0iJFRNUERJUi9kZXBsb3kvcnBtIgotZmkKLQotaWYgWyAhIC1kICIkUlBNX0RJUiIgXTsgdGhlbgotICAgCWVjaG8gIkVycm9yOiBycG0gZGlyICRSUE1fRElSIGRvZXNuJ3QgZXhpc3QiCi0JZXhpdCAxCi1maQotCi1DUkVBVEVSRVBPPSRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvdXNyL2Jpbi9jcmVhdGVyZXBvX2MKLWlmIFsgISAtZSAiJENSRUFURVJFUE8iIF07IHRoZW4KLSAgIAllY2hvICJFcnJvcjogY2FuJ3QgZmluZCBjcmVhdGVyZXBvIGJpbmFyeSIKLQllY2hvICJwbGVhc2UgcnVuIGJpdGJha2UgY3JlYXRlcmVwby1uYXRpdmUgZmlyc3QiCi0JZXhpdCAxCi1maQotCi1leHBvcnQgUEFUSD0ke1BBVEh9OiR7T0VDT1JFX05BVElWRV9TWVNST09UfS91c3IvYmluCi0KLSRDUkVBVEVSRVBPICIkUlBNX0RJUiIKLQotZXhpdCAwCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL2RlbGF5X3RvX2ZpcnN0X2Jvb3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL2RlbGF5X3RvX2ZpcnN0X2Jvb3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNkYmVmOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvZGVsYXlfdG9fZmlyc3RfYm9vdApAQCAtMCwwICsxLDIgQEAKKyMhL2Jpbi9zaAorZXhpdCAxCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9ydW5xZW11IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvcnVucWVtdQppbmRleCAwZWQxZWVjLi5kOTk4NDk0IDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy9ydW5xZW11CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3J1bnFlbXUKQEAgLTY5LDYgKzY5LDcgQEAKIG9mIHRoZSBmb2xsb3dpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIChpbiBhbnkgb3JkZXIpOgogICBLRVJORUwgLSB0aGUga2VybmVsIGltYWdlIGZpbGUgdG8gdXNlCiAgIFJPT1RGUyAtIHRoZSByb290ZnMgaW1hZ2UgZmlsZSBvciBuZnNyb290IGRpcmVjdG9yeSB0byB1c2UKKyAgREVWSUNFX1RSRUUgLSB0aGUgZGV2aWNlIHRyZWUgYmxvYiB0byB1c2UKICAgTUFDSElORSAtIHRoZSBtYWNoaW5lIG5hbWUgKG9wdGlvbmFsLCBhdXRvZGV0ZWN0ZWQgZnJvbSBLRVJORUwgZmlsZW5hbWUgaWYgdW5zcGVjaWZpZWQpCiAgIFNpbXBsaWZpZWQgUUVNVSBjb21tYW5kLWxpbmUgb3B0aW9ucyBjYW4gYmUgcGFzc2VkIHdpdGg6CiAgICAgbm9ncmFwaGljIC0gZGlzYWJsZSB2aWRlbyBjb25zb2xlCkBAIC0xNzgsNiArMTc5LDcgQEAKICAgICAgICAgc2VsZi5lbnZfdmFycyA9ICgnTUFDSElORScsCiAgICAgICAgICAgICAgICAgICAgICAgICAnUk9PVEZTJywKICAgICAgICAgICAgICAgICAgICAgICAgICdLRVJORUwnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ0RFVklDRV9UUkVFJywKICAgICAgICAgICAgICAgICAgICAgICAgICdERVBMT1lfRElSX0lNQUdFJywKICAgICAgICAgICAgICAgICAgICAgICAgICdPRV9UTVBESVInLAogICAgICAgICAgICAgICAgICAgICAgICAgJ09FQ09SRV9OQVRJVkVfU1lTUk9PVCcsCkBAIC01ODQsMTYgKzU4NiwyMCBAQAogICAgICAgICAgICAgICAgIHJhaXNlIFJ1blFlbXVFcnJvcigiQ2FuJ3QgZmluZCBPVk1GIGZpcm13YXJlOiAlcyIgJSBvdm1mKQogCiAgICAgZGVmIGNoZWNrX2tlcm5lbChzZWxmKToKLSAgICAgICAgIiIiQ2hlY2sgYW5kIHNldCBrZXJuZWwsIGR0YiIiIgorICAgICAgICAiIiJDaGVjayBhbmQgc2V0IGtlcm5lbCIiIgogICAgICAgICAjIFRoZSB2bSBpbWFnZSBkb2Vzbid0IG5lZWQgYSBrZXJuZWwKICAgICAgICAgaWYgc2VsZi5mc3R5cGUgaW4gc2VsZi52bXR5cGVzOgogICAgICAgICAgICAgcmV0dXJuCiAKKyAgICAgICAgIyBTZWUgaWYgdGhlIHVzZXIgc3VwcGxpZWQgYSBLRVJORUwgb3B0aW9uCisgICAgICAgIGlmIHNlbGYuZ2V0KCdLRVJORUwnKToKKyAgICAgICAgICAgIHNlbGYua2VybmVsID0gc2VsZi5nZXQoJ0tFUk5FTCcpCisKICAgICAgICAgIyBRQl9ERUZBVUxUX0tFUk5FTCBpcyBhbHdheXMgYSBmdWxsIGZpbGUgcGF0aAogICAgICAgICBrZXJuZWxfbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoc2VsZi5nZXQoJ1FCX0RFRkFVTFRfS0VSTkVMJykpCiAKICAgICAgICAgIyBUaGUgdXNlciBkaWRuJ3Qgd2FudCBhIGtlcm5lbCB0byBiZSBsb2FkZWQKLSAgICAgICAgaWYga2VybmVsX25hbWUgPT0gIm5vbmUiOgorICAgICAgICBpZiBrZXJuZWxfbmFtZSA9PSAibm9uZSIgYW5kIG5vdCBzZWxmLmtlcm5lbDoKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGRlcGxveV9kaXJfaW1hZ2UgPSBzZWxmLmdldCgnREVQTE9ZX0RJUl9JTUFHRScpCkBAIC02MDksOCArNjE1LDE4IEBACiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLmtlcm5lbCk6CiAgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoIktFUk5FTCAlcyBub3QgZm91bmQiICUgc2VsZi5rZXJuZWwpCiAKKyAgICBkZWYgY2hlY2tfZHRiKHNlbGYpOgorICAgICAgICAiIiJDaGVjayBhbmQgc2V0IGR0YiIiIgorICAgICAgICAjIERpZCB0aGUgdXNlciBzcGVjaWZ5IGEgZGV2aWNlIHRyZWU/CisgICAgICAgIGlmIHNlbGYuZ2V0KCdERVZJQ0VfVFJFRScpOgorICAgICAgICAgICAgc2VsZi5kdGIgPSBzZWxmLmdldCgnREVWSUNFX1RSRUUnKQorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYuZHRiKToKKyAgICAgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoJ1NwZWNpZmllZCBEVEIgbm90IGZvdW5kOiAlcycgJSBzZWxmLmR0YikKKyAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgIGR0YiA9IHNlbGYuZ2V0KCdRQl9EVEInKQogICAgICAgICBpZiBkdGI6CisgICAgICAgICAgICBkZXBsb3lfZGlyX2ltYWdlID0gc2VsZi5nZXQoJ0RFUExPWV9ESVJfSU1BR0UnKQogICAgICAgICAgICAgY21kX21hdGNoID0gIiVzLyVzIiAlIChkZXBsb3lfZGlyX2ltYWdlLCBkdGIpCiAgICAgICAgICAgICBjbWRfc3RhcnRzd2l0aCA9ICIlcy8lcyoiICUgKGRlcGxveV9kaXJfaW1hZ2UsIGR0YikKICAgICAgICAgICAgIGNtZF93aWxkID0gIiVzLyouZHRiIiAlIGRlcGxveV9kaXJfaW1hZ2UKQEAgLTY3OSw2ICs2OTUsNyBAQAogICAgICAgICBzZWxmLmNoZWNrX3Jvb3RmcygpCiAgICAgICAgIHNlbGYuY2hlY2tfb3ZtZigpCiAgICAgICAgIHNlbGYuY2hlY2tfa2VybmVsKCkKKyAgICAgICAgc2VsZi5jaGVja19kdGIoKQogICAgICAgICBzZWxmLmNoZWNrX2Jpb3NkaXIoKQogICAgICAgICBzZWxmLmNoZWNrX21lbSgpCiAgICAgICAgIHNlbGYuY2hlY2tfdGNwc2VyaWFsKCkKQEAgLTEwODksNiArMTEwNiwxMCBAQAogICAgICAgICAgICAgcWJzeXMgPSAnbWlwc2VsJwogICAgICAgICBlbGlmIG1hY2ggPT0gJ3FlbXVtaXBzNjRlbCc6CiAgICAgICAgICAgICBxYnN5cyA9ICdtaXBzNjRlbCcKKyAgICAgICAgZWxpZiBtYWNoID09ICdxZW11cmlzY3Y2NCc6CisgICAgICAgICAgICBxYnN5cyA9ICdyaXNjdjY0JworICAgICAgICBlbGlmIG1hY2ggPT0gJ3FlbXVyaXNjdjMyJzoKKyAgICAgICAgICAgIHFic3lzID0gJ3Jpc2N2MzInCiAKICAgICAgICAgcmV0dXJuICdxZW11LXN5c3RlbS0lcycgJSBxYnN5cwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy90ZXN0LWRlcGVuZGVuY2llcy5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3Rlc3QtZGVwZW5kZW5jaWVzLnNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwYjk0ZGU4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3Rlc3QtZGVwZW5kZW5jaWVzLnNoCisrKyAvZGV2L251bGwKQEAgLTEsMjg2ICswLDAgQEAKLSMhL2Jpbi9iYXNoCi0KLSMgQXV0aG9yOiBNYXJ0aW4gSmFuc2EgPG1hcnRpbi5qYW5zYUBnbWFpbC5jb20+Ci0jCi0jIENvcHlyaWdodCAoYykgMjAxMyBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci0KLSMgVXNlZCB0byBkZXRlY3QgbWlzc2luZyBkZXBlbmRlbmNpZXMgb3IgYXV0b21hZ2ljYWxseQotIyBlbmFibGVkIGRlcGVuZGVuY2llcyB3aGljaCBhcmVuJ3QgZXhwbGljaXRseSBlbmFibGVkCi0jIG9yIGRpc2FibGVkLiBVc2luZyBiYXNoIHRvIGhhdmUgUElQRVNUQVRVUyB2YXJpYWJsZS4KLQotIyBJdCBkb2VzIDMgYnVpbGRzIG9mIDx0YXJnZXQ+Ci0jIDFzdCB0byBwb3B1bGF0ZSBzc3RhdGUtY2FjaGUgZGlyZWN0b3J5IGFuZCBzeXNyb290Ci0jIDJuZCB0byByZWJ1aWxkIGVhY2ggcmVjaXBlIHdpdGggZXZlcnkgcG9zc2libGUKLSMgICAgIGRlcGVuZGVuY3kgZm91bmQgaW4gc3lzcm9vdCAod2hpY2ggc3RheXMgcG9wdWxhdGVkCi0jICAgICBmcm9tIDFzdCBidWlsZAotIyAzcmQgdG8gcmVidWlsZCBlYWNoIHJlY2lwZSBvbmx5IHdpdGggZGVwZW5kZW5jaWVzIGRlZmluZWQKLSMgICAgIGluIERFUEVORFMKLSMgNHRoIChvcHRpb25hbCkgcmVwZWF0IGJ1aWxkIGxpa2UgM3JkIHRvIG1ha2Ugc3VyZSB0aGF0Ci0jICAgICBtaW5pbWFsIHZlcnNpb25zIG9mIGRlcGVuZGVuY2llcyBkZWZpbmVkIGluIERFUEVORFMKLSMgICAgIGlzIGFsc28gZW5vdWdoCi0KLSMgR2xvYmFsIHZhcnMKLXRtcGRpcj0KLXRhcmdldHM9Ci1yZWNpcGVzPQotYnVpbGRoaXN0b3J5PQotYnVpbGR0eXBlPQotZGVmYXVsdF90YXJnZXRzPSJ3b3JsZCIKLWRlZmF1bHRfYnVpbGRoaXN0b3J5PSJidWlsZGhpc3RvcnkiCi1kZWZhdWx0X2J1aWxkdHlwZT0iMSAyIDMgYyIKLQotdXNhZ2UgKCkgewotICBjYXQgPDwgRU9GCi1XZWxjb21lIHRvIHV0aWxpdHkgdG8gZGV0ZWN0IG1pc3Npbmcgb3IgYXV0b2VuYWJsZWQgZGVwZW5kZW5jaWVzLgotV0FSTklORzogdGhpcyB1dGlsaXR5IHdpbGwgY29tcGxldGVseSByZW1vdmUgeW91ciB0bXBkaXIgKG1ha2Ugc3VyZQotICAgICAgICAgeW91IGRvbid0IGhhdmUgaW1wb3J0YW50IGJ1aWxkaGlzdG9yeSBvciBwZXJzaXN0ZW50IGRpciB0aGVyZSkuCi0kMCA8T1BUSU9OPgotCi1PcHRpb25zOgotICAtaCwgLS1oZWxwCi0gICAgICAgIERpc3BsYXkgdGhpcyBoZWxwIGFuZCBleGl0LgotCi0gIC0tdG1wZGlyPTx0bXBkaXI+Ci0gICAgICAgIFNwZWNpZnkgdG1wZGlyLCB3aWxsIHVzZSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgVE1QRElSIGlmIGl0IGlzIG5vdCBzcGVjaWZpZWQuCi0gICAgICAgIFNvbWV0aGluZyBsaWtlIC9PRS9vZS1jb3JlL3RtcC1lZ2xpYmMgKG5vIC8gYXQgdGhlIGVuZCkuCi0KLSAgLS10YXJnZXRzPTx0YXJnZXRzPgotICAgICAgICBMaXN0IG9mIHRhcmdldHMgc2VwYXJhdGVkIGJ5IHNwYWNlLCB3aWxsIHVzZSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgVEFSR0VUUyBpZiBpdCBpcyBub3Qgc3BlY2lmaWVkLgotICAgICAgICBJdCB3aWxsIHJ1biAiYml0YmFrZSA8dGFyZ2V0cz4iIHRvIHBvcHVsYXRlIHN5c3Jvb3RzLgotICAgICAgICBEZWZhdWx0IHZhbHVlIGlzICJ3b3JsZCIuCi0KLSAgLS1yZWNpcGVzPTxyZWNpcGVzPgotICAgICAgICBGaWxlIHdpdGggbGlzdCBvZiByZWNpcGVzIHdlIHdhbnQgdG8gcmVidWlsZCB3aXRoIG1pbmltYWwgYW5kIG1heGltYWwgc3lzcm9vdC4KLSAgICAgICAgV2lsbCB1c2UgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFJFQ0lQRVMgaWYgaXQgaXMgbm90IHNwZWNpZmllZC4KLSAgICAgICAgRGVmYXVsdCB2YWx1ZSB3aWxsIHVzZSBhbGwgcGFja2FnZXMgZXZlciByZWNvcmRlZCBpbiBidWlsZGhpc3RvcnkgZGlyZWN0b3J5LgotCi0gIC0tYnVpbGRoaXN0b3J5PTxidWlsZGhpc3Rvcnk+Ci0gICAgICAgIFBhdGggdG8gYnVpbGRoaXN0b3J5IGRpcmVjdG9yeSwgaXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBpbiB5b3VyIGNvbmZpZywKLSAgICAgICAgYmVjYXVzZSBpdCdzIHVzZWQgdG8gZGV0ZWN0IGRpZmZlcmVudCBkZXBlbmRlbmNpZXMgYW5kIHRvIGNyZWF0ZSBsaXN0Ci0gICAgICAgIG9mIHJlY2lwZXMgdG8gcmVidWlsZCB3aGVuIGl0J3Mgbm90IHNwZWNpZmllZC4KLSAgICAgICAgV2lsbCB1c2UgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIEJVSUxESElTVE9SWSBpZiBpdCBpcyBub3Qgc3BlY2lmaWVkLgotICAgICAgICBEZWZhdWx0IHZhbHVlIGlzICJidWlsZGhpc3RvcnkiCi0KLSAgLS1idWlsZHR5cGU9PGJ1aWxkdHlwZT4KLSAgICAgICAgVGhlcmUgYXJlIDQgdHlwZXMgb2YgYnVpbGQ6Ci0gICAgICAgICAgMTogYnVpbGQgdG8gcG9wdWxhdGUgc3N0YXRlLWNhY2hlIGRpcmVjdG9yeSBhbmQgc3lzcm9vdAotICAgICAgICAgIDI6IGJ1aWxkIHRvIHJlYnVpbGQgZWFjaCByZWNpcGUgd2l0aCBldmVyeSBwb3NzaWJsZSBkZXAKLSAgICAgICAgICAzOiBidWlsZCB0byByZWJ1aWxkIGVhY2ggcmVjaXBlIHdpdGggbWluaW1hbCBkZXBlbmRlbmNpZXMKLSAgICAgICAgICA0OiBidWlsZCB0byByZWJ1aWxkIGVhY2ggcmVjaXBlIGFnYWluIHdpdGggbWluaW1hbCBkZXBlbmRlbmNpZXMKLSAgICAgICAgICBjOiBjb21wYXJlIGJ1aWxkaGlzdG9yeSBkaXJlY3RvcmllcyBmcm9tIGJ1aWxkIDIgYW5kIDMKLSAgICAgICAgV2lsbCB1c2UgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIEJVSUxEVFlQRSBpZiBpdCBpcyBub3Qgc3BlY2lmaWVkLgotICAgICAgICBEZWZhdWx0IHZhbHVlIGlzICIxIDIgMyBjIiwgb3JkZXIgaXMgaW1wb3J0YW50LCB0eXBlIDQgaXMgb3B0aW9uYWwuCi1FT0YKLX0KLQotIyBQcmludCBlcnJvciBpbmZvcm1hdGlvbiBhbmQgZXhpdC4KLWVjaG9fZXJyb3IgKCkgewotICBlY2hvICJFUlJPUjogJDEiID4mMgotICBleGl0IDEKLX0KLQotd2hpbGUgWyAtbiAiJDEiIF07IGRvCi0gIGNhc2UgJDEgaW4KLSAgICAtLXRtcGRpcj0qKQotICAgICAgdG1wZGlyPWBlY2hvICQxIHwgc2VkIC1lICdzI14tLXRtcGRpcj0jIycgfCB4YXJncyByZWFkbGluayAtZWAKLSAgICAgIFsgLWQgIiR0bXBkaXIiIF0gfHwgZWNob19lcnJvciAiSW52YWxpZCBhcmd1bWVudCB0byAtLXRtcGRpciIKLSAgICAgIHNoaWZ0Ci0gICAgICAgIDs7Ci0gICAgLS10YXJnZXRzPSopCi0gICAgICB0YXJnZXRzPWBlY2hvICQxIHwgc2VkIC1lICdzI14tLXRhcmdldHM9IipcKFteIl0qXCkiKiNcMSMnYAotICAgICAgc2hpZnQKLSAgICAgICAgOzsKLSAgICAtLXJlY2lwZXM9KikKLSAgICAgIHJlY2lwZXM9YGVjaG8gJDEgfCBzZWQgLWUgJ3MjXi0tcmVjaXBlcz0iKlwoW14iXSpcKSIqI1wxIydgCi0gICAgICBzaGlmdAotICAgICAgICA7OwotICAgIC0tYnVpbGRoaXN0b3J5PSopCi0gICAgICBidWlsZGhpc3Rvcnk9YGVjaG8gJDEgfCBzZWQgLWUgJ3MjXi0tYnVpbGRoaXN0b3J5PSIqXChbXiJdKlwpIiojXDEjJ2AKLSAgICAgIHNoaWZ0Ci0gICAgICAgIDs7Ci0gICAgLS1idWlsZHR5cGU9KikKLSAgICAgIGJ1aWxkdHlwZT1gZWNobyAkMSB8IHNlZCAtZSAncyNeLS1idWlsZHR5cGU9IipcKFteIl0qXCkiKiNcMSMnYAotICAgICAgc2hpZnQKLSAgICAgICAgOzsKLSAgICAtLWhlbHB8LWgpCi0gICAgICB1c2FnZQotICAgICAgZXhpdCAwCi0gICAgICAgIDs7Ci0gICAgKikKLSAgICAgIGVjaG8gIkludmFsaWQgYXJndW1lbnRzICQqIgotICAgICAgZWNob19lcnJvciAiVHJ5ICckMCAtaCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgotICAgICAgICA7OwotICBlc2FjCi1kb25lCi0KLSMgdG1wZGlyIGRpcmVjdG9yeSwgdXNlIGVudmlyb25tZW50IHZhcmlhYmxlIFRNUERJUgotIyBpZiBpdCB3YXMgbm90IHNwZWNpZmllZCwgb3RoZXJ3aXNlLCBlcnJvci4KLVsgLW4gIiR0bXBkaXIiIF0gfHwgdG1wZGlyPSRUTVBESVIKLVsgLW4gIiR0bXBkaXIiIF0gfHwgZWNob19lcnJvciAiTm8gdG1wZGlyIGZvdW5kISIKLVsgLWQgIiR0bXBkaXIiIF0gfHwgZWNob19lcnJvciAiSW52YWxpZCB0bXBkaXIgXCIkdG1wZGlyXCIiCi1bIC1uICIkdGFyZ2V0cyIgXSB8fCB0YXJnZXRzPSRUQVJHRVRTCi1bIC1uICIkdGFyZ2V0cyIgXSB8fCB0YXJnZXRzPSRkZWZhdWx0X3RhcmdldHMKLVsgLW4gIiRyZWNpcGVzIiBdIHx8IHJlY2lwZXM9JFJFQ0lQRVMKLVsgLW4gIiRyZWNpcGVzIiAtYSAhIC1mICIkcmVjaXBlcyIgXSAmJiBlY2hvX2Vycm9yICJJbnZhbGlkIGZpbGUgd2l0aCBsaXN0IG9mIHJlY2lwZXMgdG8gcmVidWlsZCIKLVsgLW4gIiRyZWNpcGVzIiBdIHx8IGVjaG8gIkFsbCBwYWNrYWdlcyBldmVyIHJlY29yZGVkIGluIGJ1aWxkaGlzdG9yeSBkaXJlY3Rvcnkgd2lsbCBiZSByZWJ1aWx0IgotWyAtbiAiJGJ1aWxkaGlzdG9yeSIgXSB8fCBidWlsZGhpc3Rvcnk9JEJVSUxESElTVE9SWQotWyAtbiAiJGJ1aWxkaGlzdG9yeSIgXSB8fCBidWlsZGhpc3Rvcnk9JGRlZmF1bHRfYnVpbGRoaXN0b3J5Ci1bIC1kICIkYnVpbGRoaXN0b3J5IiBdIHx8IGVjaG9fZXJyb3IgIkludmFsaWQgYnVpbGRoaXN0b3J5IGRpcmVjdG9yeSBcIiRidWlsZGhpc3RvcnlcIiIKLVsgLW4gIiRidWlsZHR5cGUiIF0gfHwgYnVpbGR0eXBlPSRCVUlMRFRZUEUKLVsgLW4gIiRidWlsZHR5cGUiIF0gfHwgYnVpbGR0eXBlPSRkZWZhdWx0X2J1aWxkdHlwZQotZWNobyAiJGJ1aWxkdHlwZSIgfCBncmVwIC12ICdeWzEyMzRjIF0qJCcgJiYgZWNob19lcnJvciAiSW52YWxpZCBidWlsZHR5cGUgXCIkYnVpbGR0eXBlXCIsIG9ubHkgc29tZSBjb21iaW5hdGlvbiBvZiAxLCAyLCAzLCA0LCBjIHNlcGFyYXRlZCBieSBzcGFjZSBpcyBhbGxvd2VkIgotCi1PVVRQVVRfQkFTRT10ZXN0LWRlcGVuZGVuY2llcy9gZGF0ZSAiKyVzImAKLWRlY2xhcmUgLWkgUkVTVUxUPTAKLQotYnVpbGRfYWxsKCkgewotICBlY2hvICI9PT09PSAxc3QgYnVpbGQgdG8gcG9wdWxhdGUgc3N0YXRlLWNhY2hlIGRpcmVjdG9yeSBhbmQgc3lzcm9vdCA9PT09PSIKLSAgT1VUUFVUMT0ke09VVFBVVF9CQVNFfS8ke1RZUEV9X2FsbAotICBta2RpciAtcCAke09VVFBVVDF9Ci0gIGVjaG8gIkxvZ3Mgd2lsbCBiZSBzdG9yZWQgaW4gJHtPVVRQVVQxfSBkaXJlY3RvcnkiCi0gIGJpdGJha2UgLWsgJHRhcmdldHMgMj4mMSB8IHRlZSAtYSAke09VVFBVVDF9L2NvbXBsZXRlLmxvZwotICBSRVNVTFQrPSR7UElQRVNUQVRVU1swXX0KLSAgZ3JlcCAiRVJST1I6IFRhc2suKmZhaWxlZCIgJHtPVVRQVVQxfS9jb21wbGV0ZS5sb2cgPiAke09VVFBVVDF9L2ZhaWxlZC10YXNrcy5sb2cKLSAgY2F0ICR7T1VUUFVUMX0vZmFpbGVkLXRhc2tzLmxvZyB8IHNlZCAnc0AuKi9AQGc7IHNAXy4qQEBnOyBzQFwuYmIsIC4qQEBnOyBzQFwuYmI6LipAQGcnIHwgc29ydCAtdSA+ICR7T1VUUFVUMX0vZmFpbGVkLXJlY2lwZXMubG9nCi19Ci0KLWJ1aWxkX2V2ZXJ5X3JlY2lwZSgpIHsKLSAgaWYgWyAiJHtUWVBFfSIgPSAiMiIgXSA7IHRoZW4KLSAgICBlY2hvICI9PT09PSAybmQgYnVpbGQgdG8gcmVidWlsZCBlYWNoIHJlY2lwZSB3aXRoIGV2ZXJ5IHBvc3NpYmxlIGRlcCA9PT09PSIKLSAgICBPVVRQVVRfTUFYPSR7T1VUUFVUX0JBU0V9LyR7VFlQRX1fbWF4Ci0gICAgT1VUUFVUQj0ke09VVFBVVF9NQVh9Ci0gIGVsc2UKLSAgICBlY2hvICI9PT09PSAzcmQgb3IgNHRoIGJ1aWxkIHRvIHJlYnVpbGQgZWFjaCByZWNpcGUgd2l0aCBtaW5pbWFsIGRlcGVuZGVuY2llcyA9PT09PSIKLSAgICBPVVRQVVRfTUlOPSR7T1VUUFVUX0JBU0V9LyR7VFlQRX1fbWluCi0gICAgT1VUUFVUQj0ke09VVFBVVF9NSU59Ci0gIGZpCi0KLSAgbWtkaXIgLXAgJHtPVVRQVVRCfSAke09VVFBVVEJ9L2ZhaWxlZCAke09VVFBVVEJ9L29rCi0gIGVjaG8gIkxvZ3Mgd2lsbCBiZSBzdG9yZWQgaW4gJHtPVVRQVVRCfSBkaXJlY3RvcnkiCi0gIGlmIFsgLXogIiRyZWNpcGVzIiBdOyB0aGVuCi0gICAgbHMgLWQgJGJ1aWxkaGlzdG9yeS9wYWNrYWdlcy8qLyogfCB4YXJncyAtbiAxIGJhc2VuYW1lIHwgc29ydCAtdSA+ICR7T1VUUFVUQn0vcmVjaXBlLmxpc3QKLSAgICByZWNpcGVzPSR7T1VUUFVUQn0vcmVjaXBlLmxpc3QKLSAgZmkKLSAgaWYgWyAiJHtUWVBFfSIgIT0gIjIiIF0gOyB0aGVuCi0gICAgZWNobyAiISEhUmVtb3ZpbmcgdG1wZGlyIFwiJHRtcGRpclwiISEhIgotICAgIHJtIC1yZiAkdG1wZGlyL2RlcGxveSAkdG1wZGlyL3BrZ2RhdGEgJHRtcGRpci9zc3RhdGUtY29udHJvbCAkdG1wZGlyL3N0YW1wcyAkdG1wZGlyL3N5c3Jvb3RzICR0bXBkaXIvd29yayAkdG1wZGlyL3dvcmstc2hhcmVkIDI+L2Rldi9udWxsCi0gIGZpCi0gIGk9MQotICBjb3VudD1gY2F0ICRyZWNpcGVzICR7T1VUUFVUMX0vZmFpbGVkLXJlY2lwZXMubG9nIHwgc29ydCAtdSB8IHdjIC1sYAotICBmb3IgcmVjaXBlIGluIGBjYXQgJHJlY2lwZXMgJHtPVVRQVVQxfS9mYWlsZWQtcmVjaXBlcy5sb2cgfCBzb3J0IC11YDsgZG8KLSAgICBlY2hvICJCdWlsZGluZyByZWNpcGU6ICR7cmVjaXBlfSAoJGkvJGNvdW50KSIKLSAgICBkZWNsYXJlIC1pIFJFQ0lQRV9SRVNVTFQ9MAotICAgIGJpdGJha2UgLWMgY2xlYW5zc3RhdGUgJHtyZWNpcGV9ID4gJHtPVVRQVVRCfS8ke3JlY2lwZX0ubG9nIDI+JjE7Ci0gICAgUkVDSVBFX1JFU1VMVCs9JD8KLSAgICBiaXRiYWtlICR7cmVjaXBlfSA+PiAke09VVFBVVEJ9LyR7cmVjaXBlfS5sb2cgMj4mMTsKLSAgICBSRUNJUEVfUkVTVUxUKz0kPwotICAgIGlmIFsgIiR7UkVDSVBFX1JFU1VMVH0iICE9ICIwIiBdIDsgdGhlbgotICAgICAgUkVTVUxUKz0ke1JFQ0lQRV9SRVNVTFR9Ci0gICAgICBtdiAke09VVFBVVEJ9LyR7cmVjaXBlfS5sb2cgJHtPVVRQVVRCfS9mYWlsZWQvCi0gICAgICBncmVwICJFUlJPUjogVGFzay4qZmFpbGVkIiAgJHtPVVRQVVRCfS9mYWlsZWQvJHtyZWNpcGV9LmxvZyB8IHRlZSAtYSAke09VVFBVVEJ9L2ZhaWxlZC10YXNrcy5sb2cKLSAgICAgIGdyZXAgIkVSUk9SOiBUYXNrLipmYWlsZWQiICAke09VVFBVVEJ9L2ZhaWxlZC8ke3JlY2lwZX0ubG9nIHwgc2VkICdzQC4qL0BAZzsgc0BfLipAQGc7IHNAXC5iYiwgLipAQGc7IHNAXC5iYjouKkBAZycgPj4gJHtPVVRQVVRCfS9mYWlsZWQtcmVjaXBlcy5sb2cKLSAgICAgICMgYW5kIGFwcGVuZCBhbHNvICR7cmVjaXBlfSBpbiBjYXNlIHRoZSBmYWlsZWQgdGFzayB3YXMgZnJvbSBzb21lIGRlcGVuZGVuY3kKLSAgICAgIGVjaG8gJHtyZWNpcGV9ID4+ICR7T1VUUFVUQn0vZmFpbGVkLXJlY2lwZXMubG9nCi0gICAgZWxzZQotICAgICAgbXYgJHtPVVRQVVRCfS8ke3JlY2lwZX0ubG9nICR7T1VUUFVUQn0vb2svCi0gICAgZmkKLSAgICBpZiBbICIke1RZUEV9IiAhPSAiMiIgXSA7IHRoZW4KLSAgICAgIHJtIC1yZiAkdG1wZGlyL2RlcGxveSAkdG1wZGlyL3BrZ2RhdGEgJHRtcGRpci9zc3RhdGUtY29udHJvbCAkdG1wZGlyL3N0YW1wcyAkdG1wZGlyL3N5c3Jvb3RzICR0bXBkaXIvd29yayAkdG1wZGlyL3dvcmstc2hhcmVkIDI+L2Rldi9udWxsCi0gICAgZmkKLSAgICBpPWBleHByICRpICsgMWAKLSAgZG9uZQotICBlY2hvICJDb3B5aW5nIGJ1aWxkaGlzdG9yeS9wYWNrYWdlcyB0byAke09VVFBVVEJ9IgotICBjcCAtcmEgJGJ1aWxkaGlzdG9yeS9wYWNrYWdlcyAke09VVFBVVEJ9Ci0gICMgVGhpcyB3aWxsIGJlIHVzZWZ1bGwgdG8gc2VlIHdoaWNoIGxpYnJhcnkgaXMgcHVsbGluZyBuZXcgZGVwZW5kZW5jeQotICBlY2hvICJDb3B5aW5nIGRvX3BhY2thZ2UgbG9ncyB0byAke09VVFBVVEJ9L2RvX3BhY2thZ2UvIgotICBta2RpciAke09VVFBVVEJ9L2RvX3BhY2thZ2UKLSAgZmluZCAkdG1wZGlyL3dvcmsvIC1uYW1lIGxvZy5kb19wYWNrYWdlIDI+L2Rldi9udWxsfCB3aGlsZSByZWFkIGY7IGRvCi0gICAgIyBwbiBpcyAzIGxldmVscyBiYWNrLCBidXQgd2UgZG9uJ3Qga25vdyBpZiB0aGVyZSBpcyBqdXN0IG9uZSBsb2cgcGVyIHBuIChvbmx5IG9uZSBhcmNoIGFuZCB2ZXJzaW9uKQotICAgICMgZGVzdD1gZWNobyAkZiB8IHNlZCAncyNeLiovXChbXi9dKlwpL1woW14vXSpcKS9cKFteL10qXCkvbG9nLmRvX3BhY2thZ2UjXDEjZydgCi0gICAgZGVzdD1gZWNobyAkZiB8IHNlZCAicyMkdG1wZGlyL3dvcmsvIyNnOyBzIy8jXyNnImAKLSAgICBjcCAkZiAke09VVFBVVEJ9L2RvX3BhY2thZ2UvJGRlc3QKLSAgZG9uZQotfQotCi1jb21wYXJlX2RlcHMoKSB7Ci0gICMgeW91IGNhbiBydW4ganVzdCBjb21wYXJlIHRhc2sgd2l0aCBjb21tYW5kIGxpa2UgdGhpcwotICAjIE9VVFBVVF9CQVNFPXRlc3QtZGVwZW5kZW5jaWVzLzEzNzMxNDAxNzIgXAotICAjIE9VVFBVVF9NQVg9JHtPVVRQVVRfQkFTRX0vMl9tYXggXAotICAjIE9VVFBVVF9NSU49JHtPVVRQVVRfQkFTRX0vM19taW4gXAotICAjIG9wZW5lbWJlZGRlZC1jb3JlL3NjcmlwdHMvdGVzdC1kZXBlbmRlbmNpZXMuc2ggLS10bXBkaXI9dG1wLWVnbGliYyAtLXRhcmdldHM9Z2xpYi0yLjAgLS1yZWNpcGVzPXJlY2lwZV9saXN0IC0tYnVpbGR0eXBlPWMKLSAgZWNobyAiPT09PT0gQ29tcGFyZSBkZXBlbmRlbmNpZXMgcmVjb3JkZWQgaW4gXCIke09VVFBVVF9NQVh9XCIgYW5kIFwiJHtPVVRQVVRfTUlOfVwiID09PT09IgotICBbIC1uICIke09VVFBVVEN9IiBdIHx8IE9VVFBVVEM9JHtPVVRQVVRfQkFTRX0vY29tcAotICBta2RpciAtcCAke09VVFBVVEN9Ci0gIE9VVFBVVF9GSUxFPSR7T1VUUFVUQ30vZGVwZW5kZW5jeS1jaGFuZ2VzCi0gIGVjaG8gIkRpZmZlcmVuY2VzIHdpbGwgYmUgc3RvcmVkIGluICR7T1VUUFVUX0ZJTEV9LCBkb3QgaXMgc2hvd24gZm9yIGV2ZXJ5IDEwMCBvZiBjaGVja2VkIHBhY2thZ2VzIgotICBlY2hvID4gJHtPVVRQVVRfRklMRX0KLQotICBbIC1kICR7T1VUUFVUX01BWH0gXSB8fCBlY2hvX2Vycm9yICJEaXJlY3Rvcnkgd2l0aCBvdXRwdXQgZnJvbSBidWlsZCAyIFwiJHtPVVRQVVRfTUFYfVwiIGRvZXMgbm90IGV4aXN0IgotICBbIC1kICR7T1VUUFVUX01JTn0gXSB8fCBlY2hvX2Vycm9yICJEaXJlY3Rvcnkgd2l0aCBvdXRwdXQgZnJvbSBidWlsZCAzIFwiJHtPVVRQVVRfTUlOfVwiIGRvZXMgbm90IGV4aXN0IgotICBbIC1kICR7T1VUUFVUX01BWH0vcGFja2FnZXMvIF0gfHwgZWNob19lcnJvciAiRGlyZWN0b3J5IHdpdGggcGFja2FnZXMgZnJvbSBidWlsZCAyIFwiJHtPVVRQVVRfTUFYfS9wYWNrYWdlcy9cIiBkb2VzIG5vdCBleGlzdCIKLSAgWyAtZCAke09VVFBVVF9NSU59L3BhY2thZ2VzLyBdIHx8IGVjaG9fZXJyb3IgIkRpcmVjdG9yeSB3aXRoIHBhY2thZ2VzIGZyb20gYnVpbGQgMyBcIiR7T1VUUFVUX01JTn0vcGFja2FnZXMvXCIgZG9lcyBub3QgZXhpc3QiCi0gIGk9MAotICBmaW5kICR7T1VUUFVUX01BWH0vcGFja2FnZXMvIC1uYW1lIGxhdGVzdCB8IHNlZCAicyMke09VVFBVVF9NQVh9LyMjZyIgfCB3aGlsZSByZWFkIHBrZzsgZG8KLSAgICBtYXhfcGtnPSR7T1VUUFVUX01BWH0vJHtwa2d9Ci0gICAgbWluX3BrZz0ke09VVFBVVF9NSU59LyR7cGtnfQotICAgICMgcGtnPXBhY2thZ2VzL2FybXY1dGUtb2UtbGludXgtZ251ZWFiaS9saWJ1bmdpZi9saWJ1bmdpZi9sYXRlc3QKLSAgICByZWNpcGU9YGVjaG8gIiR7cGtnfSIgfCBzZWQgJ3MjcGFja2FnZXMvW14vXSovXChbXi9dKlwpL1woW14vXSpcKS9sYXRlc3QjXDEjZydgCi0gICAgcGFja2FnZT1gZWNobyAiJHtwa2d9IiB8IHNlZCAncyNwYWNrYWdlcy9bXi9dKi9cKFteL10qXCkvXChbXi9dKlwpL2xhdGVzdCNcMiNnJ2AKLSAgICBpZiBbICEgLWYgIiR7bWluX3BrZ30iIF0gOyB0aGVuCi0gICAgICBlY2hvICJFUlJPUjogJHtyZWNpcGV9OiAke3BhY2thZ2V9IHBhY2thZ2UgaXNuJ3QgY3JlYXRlZCB3aGVuIGJ1aWxkaW5nIHdpdGggbWluaW1hbCBkZXBlbmRlbmNpZXM/IiB8IHRlZSAtYSAke09VVFBVVF9GSUxFfQotICAgICAgZWNobyAke3JlY2lwZX0gPj4gJHtPVVRQVVRDfS9mYWlsZWQtcmVjaXBlcy5sb2cKLSAgICAgIGNvbnRpbnVlCi0gICAgZmkKLSAgICAjIHN0cmlwIHZlcnNpb24gaW5mb3JtYXRpb24gaW4gcGFyZW50aGVzaXMKLSAgICBtYXhfZGVwcz1gZ3JlcCAiXlJERVBFTkRTID0gIiAke21heF9wa2d9IHwgc2VkICdzL15SREVQRU5EUyA9IC8gL2c7IHMvJC8gL2c7IHMvKFteKF0qKS8vZydgCi0gICAgbWluX2RlcHM9YGdyZXAgIl5SREVQRU5EUyA9ICIgJHttaW5fcGtnfSB8IHNlZCAncy9eUkRFUEVORFMgPSAvIC9nOyBzLyQvIC9nOyBzLyhbXihdKikvL2cnYAotICAgIGlmIFsgIiRpIiA9IDEwMCBdIDsgdGhlbgotICAgICAgZWNobyAtbiAiLiIgIyBjaGVhcCBwcm9ncmVzc2JhcgotICAgICAgaT0wCi0gICAgZmkKLSAgICBpZiBbICIke21heF9kZXBzfSIgPSAiJHttaW5fZGVwc30iIF0gOyB0aGVuCi0gICAgICAjIGl0J3MgYW5ub3lpbmcgbG9uZywgYnV0IGF0IGxlYXN0IGl0J3Mgc2hvd2luZyBzb21lIHByb2dyZXNzLCB3YXJuaW5ncyBhcmUgZ3JlcHBlZCBhdCB0aGUgZW5kCi0gICAgICBlY2hvICJOT1RFOiAke3JlY2lwZX06ICR7cGFja2FnZX0gcmRlcGVuZHMgd2VyZW4ndCBjaGFuZ2VkIiA+PiAke09VVFBVVF9GSUxFfQotICAgIGVsc2UKLSAgICAgIG1pc3NpbmdfZGVwcz0KLSAgICAgIGZvciBkZXAgaW4gJHttYXhfZGVwc307IGRvCi0gICAgICAgIGlmICEgZWNobyAiJHttaW5fZGVwc30iIHwgZ3JlcCAtcSAiICR7ZGVwfSAiIDsgdGhlbgotICAgICAgICAgIG1pc3NpbmdfZGVwcz0iJHttaXNzaW5nX2RlcHN9ICR7ZGVwfSIKLSAgICAgICAgICBlY2hvICMgdG8gZ2V0IHJpZCBvZiBkb3RzIG9uIGxhc3QgbGluZQotICAgICAgICAgIGVjaG8gIldBUk46ICR7cmVjaXBlfTogJHtwYWNrYWdlfSByZGVwZW5kcyBvbiAke2RlcH0sIGJ1dCBpdCBpc24ndCBhIGJ1aWxkIGRlcGVuZGVuY3k/IiB8IHRlZSAtYSAke09VVFBVVF9GSUxFfQotICAgICAgICBmaQotICAgICAgZG9uZQotICAgICAgaWYgWyAtbiAiJHttaXNzaW5nX2RlcHN9IiBdIDsgdGhlbgotICAgICAgICBlY2hvICR7cmVjaXBlfSA+PiAke09VVFBVVEN9L2ZhaWxlZC1yZWNpcGVzLmxvZwotICAgICAgZmkKLSAgICBmaQotICAgIGk9YGV4cHIgJGkgKyAxYAotICBkb25lCi0gIGVjaG8gIyB0byBnZXQgcmlkIG9mIGRvdHMgb24gbGFzdCBsaW5lCi0gIGVjaG8gIkZvdW5kIGRpZmZlcmVuY2VzOiAiCi0gIGdyZXAgIl5XQVJOOiAiICR7T1VUUFVUX0ZJTEV9IHwgdGVlICR7T1VUUFVUX0ZJTEV9Lndhcm4ubG9nCi0gIGVjaG8gIkZvdW5kIGVycm9yczogIgotICBncmVwICJeRVJST1I6ICIgJHtPVVRQVVRfRklMRX0gfCB0ZWUgJHtPVVRQVVRfRklMRX0uZXJyb3IubG9nCi0gIFJFU1VMVCs9YGNhdCAke09VVFBVVF9GSUxFfS53YXJuLmxvZyB8IHdjIC1sYAotICBSRVNVTFQrPWBjYXQgJHtPVVRQVVRfRklMRX0uZXJyb3IubG9nIHwgd2MgLWxgCi19Ci0KLWZvciBUWVBFIGluICRidWlsZHR5cGU7IGRvCi0gIGNhc2UgJHtUWVBFfSBpbgotICAgIDEpIGJ1aWxkX2FsbDs7Ci0gICAgMikgYnVpbGRfZXZlcnlfcmVjaXBlOzsKLSAgICAzKSBidWlsZF9ldmVyeV9yZWNpcGU7OwotICAgIDQpIGJ1aWxkX2V2ZXJ5X3JlY2lwZTs7Ci0gICAgYykgY29tcGFyZV9kZXBzOzsKLSAgICAqKSBlY2hvX2Vycm9yICJJbnZhbGlkIGJ1aWxkdHlwZSBcIiRUWVBFXCIiCi0gIGVzYWMKLWRvbmUKLQotY2F0ICR7T1VUUFVUX0JBU0V9LyovZmFpbGVkLXJlY2lwZXMubG9nIHwgc29ydCAtdSA+PiAke09VVFBVVF9CQVNFfS9mYWlsZWQtcmVjaXBlcy5sb2cKLQotaWYgWyAiJHtSRVNVTFR9IiAhPSAiMCIgXSA7IHRoZW4KLSAgZWNobyAiRVJST1I6ICR7UkVTVUxUfSBpc3N1ZXMgd2VyZSBmb3VuZCBpbiB0aGVzZSByZWNpcGVzOiBgY2F0ICR7T1VUUFVUX0JBU0V9L2ZhaWxlZC1yZWNpcGVzLmxvZyB8IHhhcmdzYCIKLWZpCi0KLWVjaG8gIklORk86IE91dHB1dCB3cml0dGVuIGluOiAke09VVFBVVF9CQVNFfSIKLWV4aXQgJHtSRVNVTFR9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy92ZXJpZnktYmFzaGlzbXMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy92ZXJpZnktYmFzaGlzbXMKaW5kZXggZGFiNjRlZi4uYTk3OWJkMiAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvdmVyaWZ5LWJhc2hpc21zCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3ZlcmlmeS1iYXNoaXNtcwpAQCAtODksNyArODksMTMgQEAKICAgICByZXR1cm4gdGluZm9pbAogCiBpZiBfX25hbWVfXz09J19fbWFpbl9fJzoKLSAgICBpbXBvcnQgc2h1dGlsCisgICAgaW1wb3J0IGFyZ3BhcnNlLCBzaHV0aWwKKworICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSdCYXNoaW0gZGV0ZWN0b3IgZm9yIHNoZWxsIGZyYWdtZW50cyBpbiByZWNpcGVzLicpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgicmVjaXBlcyIsIG1ldGF2YXI9IlJFQ0lQRSIsIG5hcmdzPSIqIiwgaGVscD0icmVjaXBlcyB0byBjaGVjayAoaWYgbm90IHNwZWNpZmllZCwgYWxsIHdpbGwgYmUgY2hlY2tlZCkiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tdmVyYm9zZSIsIGRlZmF1bHQ9RmFsc2UsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKwogICAgIGlmIHNodXRpbC53aGljaCgiY2hlY2tiYXNoaXNtcy5wbCIpIGlzIE5vbmU6CiAgICAgICAgIHByaW50KCJDYW5ub3QgZmluZCBjaGVja2Jhc2hpc21zLnBsIG9uICRQQVRILCBnZXQgaXQgZnJvbSBodHRwczovL2Fub25zY20uZGViaWFuLm9yZy9jZ2l0L2NvbGxhYi1tYWludC9kZXZzY3JpcHRzLmdpdC9wbGFpbi9zY3JpcHRzL2NoZWNrYmFzaGlzbXMucGwiKQogICAgICAgICBzeXMuZXhpdCgxKQpAQCAtOTksNiArMTA1LDggQEAKICAgICAjIGJpdGJha2Ugc2VydmVyIGlzIGNydWNpYWwsIGRvbid0IGNoYW5nZSBpdC4KICAgICBkZWYgZnVuYyhpdGVtKToKICAgICAgICAgKGZpbGVuYW1lLCBrZXksIGxpbmVubyksIHNjcmlwdCA9IGl0ZW0KKyAgICAgICAgaWYgYXJncy52ZXJib3NlOgorICAgICAgICAgICAgcHJpbnQoIlNjYW5uaW5nICVzOiVzIiAlIChmaWxlbmFtZSwga2V5KSkKICAgICAgICAgcmV0dXJuIHByb2Nlc3MoZmlsZW5hbWUsIGtleSwgbGluZW5vLCBzY3JpcHQpCiAKICAgICBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCkBAIC0xMTAsOSArMTE4LDggQEAKICAgICAjIHJlY2lwZWNhY2hlcyB0byBoYW5kbGUgbXVsdGljb25maWcgZW52aXJvbm1lbnRzCiAgICAgcGtnX3BuID0gdGluZm9pbC5jb29rZXIucmVjaXBlY2FjaGVzWyIiXS5wa2dfcG4KIAotICAgICMgVE9ETzogdXNlIGFyZ3BhcnNlIGFuZCBoYXZlIC0taGVscAotICAgIGlmIGxlbihzeXMuYXJndikgPiAxOgotICAgICAgICBpbml0aWFsX3BucyA9IHN5cy5hcmd2WzE6XQorICAgIGlmIGFyZ3MucmVjaXBlczoKKyAgICAgICAgaW5pdGlhbF9wbnMgPSBhcmdzLnJlY2lwZXMKICAgICBlbHNlOgogICAgICAgICBpbml0aWFsX3BucyA9IHNvcnRlZChwa2dfcG4pCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3dpYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3dpYwppbmRleCAwOTcwODRhLi43MzkyYmM0IDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy93aWMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMvd2ljCkBAIC00MCwxNiArNDAsMjkgQEAKIGZyb20gZGlzdHV0aWxzIGltcG9ydCBzcGF3bgogCiAjIEV4dGVybmFsIG1vZHVsZXMKLXNjcmlwdHNfcGF0aCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQorc2NyaXB0c19wYXRoID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGgucmVhbHBhdGgoX19maWxlX18pKQogbGliX3BhdGggPSBzY3JpcHRzX3BhdGggKyAnL2xpYicKIHN5cy5wYXRoLmluc2VydCgwLCBsaWJfcGF0aCkKLW9lX2xpYl9wYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShzY3JpcHRzX3BhdGgpLCAnbWV0YScsICdsaWInKQotc3lzLnBhdGguaW5zZXJ0KDAsIG9lX2xpYl9wYXRoKQoraW1wb3J0IHNjcmlwdHBhdGgKK3NjcmlwdHBhdGguYWRkX29lX2xpYl9wYXRoKCkKKworIyBDaGVjayB3aGV0aGVyIHdpYyBpcyBydW5uaW5nIHdpdGhpbiBlU0RLIGVudmlyb25tZW50CitzZGtyb290ID0gc2NyaXB0c19wYXRoCitpZiBvcy5lbnZpcm9uLmdldCgnU0RLVEFSR0VUU1lTUk9PVCcpOgorICAgIHdoaWxlIHNka3Jvb3QgIT0gJycgYW5kIHNka3Jvb3QgIT0gb3Muc2VwOgorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2Rrcm9vdCwgJy5kZXZ0b29sYmFzZScpKToKKyAgICAgICAgICAgICMgU2V0IEJVSUxERElSIGZvciB3aWMgdG8gd29yayB3aXRoaW4gZVNESworICAgICAgICAgICAgb3MuZW52aXJvblsnQlVJTERESVInXSA9IHNka3Jvb3QKKyAgICAgICAgICAgICMgLmRldnRvb2xiYXNlIG9ubHkgZXhpc3RzIHdpdGhpbiBlU0RLCisgICAgICAgICAgICAjIElmIGZvdW5kLCBpbml0aWFsaXplIGJpdGJha2UgcGF0aCBmb3IgZVNESyBlbnZpcm9ubWVudCBhbmQgYXBwZW5kIHRvIFBBVEgKKyAgICAgICAgICAgIHNka3Jvb3QgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHNjcmlwdHNfcGF0aCksICdiaXRiYWtlJywgJ2JpbicpCisgICAgICAgICAgICBvcy5lbnZpcm9uWydQQVRIJ10gKz0gIjoiICsgc2Rrcm9vdAorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgc2Rrcm9vdCA9IG9zLnBhdGguZGlybmFtZShzZGtyb290KQogCiBiaXRiYWtlX2V4ZSA9IHNwYXduLmZpbmRfZXhlY3V0YWJsZSgnYml0YmFrZScpCiBpZiBiaXRiYWtlX2V4ZToKLSAgICBiaXRiYWtlX3BhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGJpdGJha2VfZXhlKSwgJy4uL2xpYicpCi0gICAgc3lzLnBhdGguaW5zZXJ0KDAsIGJpdGJha2VfcGF0aCkKKyAgICBiaXRiYWtlX3BhdGggPSBzY3JpcHRwYXRoLmFkZF9iaXRiYWtlX2xpYl9wYXRoKCkKICAgICBmcm9tIGJiIGltcG9ydCBjb29rZXJkYXRhCiAgICAgZnJvbSBiYi5tYWluIGltcG9ydCBiaXRiYWtlX21haW4sIEJpdEJha2VDb25maWdQYXJhbWV0ZXJzCiBlbHNlOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMveW9jdG8tYnNwIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMveW9jdG8tYnNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2ZmIxZjQxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3lvY3RvLWJzcAorKysgL2Rldi9udWxsCkBAIC0xLDE2MyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24zCi0jIGV4OnRzPTQ6c3c9NDpzdHM9NDpldAotIyAtKi0gdGFiLXdpZHRoOiA0OyBjLWJhc2ljLW9mZnNldDogNDsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLQotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTIsIEludGVsIENvcnBvcmF0aW9uLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwotIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMKLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSMgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKLSMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KLSMKLSMgREVTQ1JJUFRJT04KLSMgJ3lvY3RvLWJzcCcgaXMgdGhlIFlvY3RvIEJTUCBUb29sIHRoYXQgaGVscHMgdXNlcnMgY3JlYXRlIGEgbmV3Ci0jIFlvY3RvIEJTUC4gIEludm9raW5nIGl0IHdpdGhvdXQgYW55IGFyZ3VtZW50cyB3aWxsIGRpc3BsYXkgaGVscAotIyBzY3JlZW5zIGZvciB0aGUgJ3lvY3RvLWJzcCcgY29tbWFuZCBhbmQgbGlzdCB0aGUgYXZhaWxhYmxlCi0jICd5b2N0by1ic3AnIHN1YmNvbW1hbmRzLiAgSW52b2tpbmcgYSBzdWJjb21tYW5kIHdpdGhvdXQgYW55Ci0jIGFyZ3VtZW50cyB3aWxsIGxpa2V3aXNlIGRpc3BsYXkgaGVscCBzY3JlZW5zIGZvciB0aGUgc3BlY2lmaWVkCi0jIHN1YmNvbW1hbmQuICBQbGVhc2UgdXNlIHRoYXQgaW50ZXJmYWNlIGZvciBkZXRhaWxlZCBoZWxwLgotIwotIyBBVVRIT1JTCi0jIFRvbSBaYW51c3NpIDx0b20uemFudXNzaSAoYXRdIGludGVsLmNvbT4KLSMKLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgYXJncGFyc2UKLWltcG9ydCBsb2dnaW5nCi0KLXNjcmlwdHNfcGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkKLXN5cy5wYXRoLmluc2VydCgwLCBzY3JpcHRzX3BhdGggKyAnL2xpYicpCi1pbXBvcnQgYXJncGFyc2Vfb2UKLQotZnJvbSBic3AuaGVscCBpbXBvcnQgKgotZnJvbSBic3AuZW5naW5lIGltcG9ydCAqCi0KLQotZGVmIGRvX2NyZWF0ZV9ic3AoYXJncyk6Ci0gICAgIiIiCi0gICAgQ29tbWFuZC1saW5lIGhhbmRsaW5nIGZvciBCU1AgY3JlYXRpb24uICBUaGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkKLSAgICBic3AuZW5naW5lLnlvY3RvX2JzcF9jcmVhdGUoKQotICAgICIiIgotICAgIGlmIGFyZ3Mub3V0ZGlyOgotICAgICAgICBic3Bfb3V0cHV0X2RpciA9IGFyZ3Mub3V0ZGlyCi0gICAgZWxzZToKLSAgICAgICAgYnNwX291dHB1dF9kaXIgPSAibWV0YS0iICsgYXJncy5ic3BuYW1lCi0KLSAgICBpZiBhcmdzLmdpdF9jaGVjayBhbmQgbm90IGFyZ3MucHJvcGVydGllc19maWxlOgotICAgICAgICBwcmludCgiQ2hlY2tpbmcgYmFzaWMgZ2l0IGNvbm5lY3Rpdml0eS4uLiIpCi0gICAgICAgIGlmIG5vdCB2ZXJpZnlfZ2l0X3JlcG8oR0lUX0NIRUNLX1VSSSk6Ci0gICAgICAgICAgICBwcmludCgiQ291bGRuJ3QgdmVyaWZ5IGdpdCBjb25uZWN0aXZpdHksIGV4aXRpbmdcbiIpCi0gICAgICAgICAgICBwcmludCgiRGV0YWlsczogY291bGRuJ3QgYWNjZXNzICVzIiAlIEdJVF9DSEVDS19VUkkpCi0gICAgICAgICAgICBwcmludCgiICAgICAgICAgKHRoaXMgbW9zdCBsaWtlbHkgaW5kaWNhdGVzIGEgbmV0d29yayBjb25uZWN0aXZpdHkgcHJvYmxlbSBvciIpCi0gICAgICAgICAgICBwcmludCgiICAgICAgICAgYSBtaXNjb25maWd1cmVkIGdpdCBpbnRhbGxhdGlvbikiKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCJEb25lLlxuIikKLQotICAgIHlvY3RvX2JzcF9jcmVhdGUoYXJncy5ic3BuYW1lLCBhcmdzLmthcmNoLCBzY3JpcHRzX3BhdGgsIGJzcF9vdXRwdXRfZGlyLCBhcmdzLmNvZGVkdW1wLCBhcmdzLnByb3BlcnRpZXNfZmlsZSkKLQotCi1kZWYgZG9fbGlzdF9ic3AoYXJncyk6Ci0gICAgIiIiCi0gICAgQ29tbWFuZC1saW5lIGhhbmRsaW5nIGZvciBsaXN0aW5nIGF2YWlsYWJsZSBCU1AgcHJvcGVydGllcyBhbmQKLSAgICB2YWx1ZXMuICBUaGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkgYnNwLmVuZ2luZS55b2N0b19ic3BfbGlzdCgpCi0gICAgIiIiCi0gICAgeW9jdG9fYnNwX2xpc3QoYXJncywgc2NyaXB0c19wYXRoKQotCi1kZWYgZG9faGVscF9ic3AoYXJncyk6Ci0gICAgIiIiCi0gICAgQ29tbWFuZC1saW5lIGhlbHAgdG9vbAotICAgICIiIgotICAgIGhlbHBfdGV4dCA9IGNvbW1hbmRfaGVscC5nZXQoYXJncy5zdWJjb21tYW5kKQotICAgIHBhZ2VyID0gc3VicHJvY2Vzcy5Qb3BlbignbGVzcycsIHN0ZGluPXN1YnByb2Nlc3MuUElQRSkKLSAgICBwYWdlci5jb21tdW5pY2F0ZShieXRlcyhoZWxwX3RleHQsJ1VURi04JykpCi0KLWNvbW1hbmRfaGVscCA9IHsKLSAgICAiY3JlYXRlIjogeW9jdG9fYnNwX2NyZWF0ZV9oZWxwLAotICAgICJsaXN0IjogIHlvY3RvX2JzcF9saXN0X2hlbHAKLX0KLQotCi1kZWYgc3RhcnRfbG9nZ2luZyhsb2dsZXZlbCk6Ci0gICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhmaWxlbmFtZSA9ICd5b2N0by1ic3AubG9nJywgZmlsZW1vZGUgPSAndycsIGxldmVsPWxvZ2xldmVsKQotCi0KLWRlZiBtYWluKCk6Ci0gICAgcGFyc2VyID0gYXJncGFyc2Vfb2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J0NyZWF0ZSBhIGN1c3RvbWl6ZWQgWW9jdG8gQlNQIGxheWVyLicsCi0gICAgICAgICAgICAgICAgICAgICAgZXBpbG9nPSJTZWUgJyUocHJvZylzIGhlbHAgPHN1YmNvbW1hbmQ+JyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBhIHNwZWNpZmljIGNvbW1hbmQuIikKLQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1EIiwgIi0tZGVidWciLCBhY3Rpb24gPSAic3RvcmVfdHJ1ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCA9IEZhbHNlLCBoZWxwID0gIm91dHB1dCBkZWJ1ZyBpbmZvcm1hdGlvbiIpCi0gICAgc3VicGFyc2VycyA9IHBhcnNlci5hZGRfc3VicGFyc2Vycyh0aXRsZT0nc3ViY29tbWFuZHMnLCBtZXRhdmFyPSc8c3ViY29tbWFuZD4nKQotICAgIHN1YnBhcnNlcnMucmVxdWlyZWQgPSBUcnVlCi0KLSAgICBjcmVhdGVfcGFyc2VyID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdjcmVhdGUnLCBoZWxwPSdDcmVhdGUgYSBuZXcgWW9jdG8gQlNQJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdDcmVhdGUgYSBuZXcgWW9jdG8gQlNQJykKLSAgICBjcmVhdGVfcGFyc2VyLmFkZF9hcmd1bWVudCgnYnNwbmFtZScsIG1ldGF2YXI9J2JzcC1uYW1lJywgaGVscD0nbmFtZSBmb3IgdGhlIG5ldyBCU1AnKQotICAgIGNyZWF0ZV9wYXJzZXIuYWRkX2FyZ3VtZW50KCdrYXJjaCcsIGhlbHA9J2tlcm5lbCBhcmNoaXRlY3R1cmUnKQotICAgIGNyZWF0ZV9wYXJzZXIuYWRkX2FyZ3VtZW50KCItbyIsICItLW91dGRpciIsIGhlbHAgPSAibmFtZSBvZiBCU1AgZGlyIHRvIGNyZWF0ZSIpCi0gICAgY3JlYXRlX3BhcnNlci5hZGRfYXJndW1lbnQoIi1pIiwgIi0taW5maWxlIiwgZGVzdCA9ICJwcm9wZXJ0aWVzX2ZpbGUiLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHAgPSAibmFtZSBvZiBmaWxlIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyBmb3IgQlNQIHByb3BlcnRpZXMgYXMgYSBKU09OIGZpbGUiKQotICAgIGNyZWF0ZV9wYXJzZXIuYWRkX2FyZ3VtZW50KCItYyIsICItLWNvZGVkdW1wIiwgYWN0aW9uID0gInN0b3JlX3RydWUiLCBkZWZhdWx0ID0gRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscCA9ICJkdW1wIHRoZSBnZW5lcmF0ZWQgY29kZSB0byBic3BnZW4ub3V0IikKLSAgICBjcmVhdGVfcGFyc2VyLmFkZF9hcmd1bWVudCgiLXMiLCAiLS1za2lwLWdpdC1jaGVjayIsIGRlc3QgPSAiZ2l0X2NoZWNrIiwgYWN0aW9uID0gInN0b3JlX2ZhbHNlIiwKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0ID0gVHJ1ZSwgaGVscCA9ICJza2lwIHRoZSBnaXQgY29ubmVjdGl2aXR5IGNoZWNrIikKLSAgICBjcmVhdGVfcGFyc2VyLnNldF9kZWZhdWx0cyhmdW5jPWRvX2NyZWF0ZV9ic3ApCi0KLQotICAgIGxpc3RfcGFyc2VyID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdsaXN0JywgaGVscD0nTGlzdCBhdmFpbGFibGUgdmFsdWVzIGZvciBvcHRpb25zIGFuZCBCU1AgcHJvcGVydGllcycpCi0gICAgbGlzdF9wYXJzZXIuYWRkX2FyZ3VtZW50KCdrYXJjaCcsIGhlbHA9J2tlcm5lbCBhcmNoaXRlY3R1cmUnKQotICAgIHByb3BfZ3JvdXAgPSBsaXN0X3BhcnNlci5hZGRfbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwKCkKLSAgICBwcm9wX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1wcm9wZXJ0aWVzIiwgYWN0aW9uID0gInN0b3JlX3RydWUiLCBkZWZhdWx0ID0gRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscCA9ICJsaXN0IGFsbCBwcm9wZXJ0aWVzIGZvciB0aGUga2VybmVsIGFyY2hpdGVjdHVyZSIpCi0gICAgcHJvcF9ncm91cC5hZGRfYXJndW1lbnQoIi0tcHJvcGVydHkiLCBoZWxwID0gImxpc3QgYXZhaWxhYmxlIHZhbHVlcyBmb3IgdGhlIHByb3BlcnR5IikKLSAgICBsaXN0X3BhcnNlci5hZGRfYXJndW1lbnQoIi1vIiwgIi0tb3V0ZmlsZSIsIGRlc3QgPSAicHJvcGVydGllc19maWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwID0gImR1bXAgdGhlIHBvc3NpYmxlIHZhbHVlcyBmb3IgQlNQIHByb3BlcnRpZXMgdG8gYSBKU09OIGZpbGUiKQotCi0gICAgbGlzdF9wYXJzZXIuc2V0X2RlZmF1bHRzKGZ1bmM9ZG9fbGlzdF9ic3ApCi0KLSAgICBoZWxwX3BhcnNlciA9IHN1YnBhcnNlcnMuYWRkX3BhcnNlcignaGVscCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J1RoaXMgY29tbWFuZCBkaXNwbGF5cyBkZXRhaWxlZCBoZWxwIGZvciB0aGUgc3BlY2lmaWVkIHN1YmNvbW1hbmQuJykKLSAgICBoZWxwX3BhcnNlci5hZGRfYXJndW1lbnQoJ3N1YmNvbW1hbmQnLCBuYXJncz0nPycpCi0gICAgaGVscF9wYXJzZXIuc2V0X2RlZmF1bHRzKGZ1bmM9ZG9faGVscF9ic3ApCi0KLSAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgbG9nbGV2ZWwgPSBsb2dnaW5nLklORk8KLSAgICBpZiBhcmdzLmRlYnVnOgotICAgICAgICBsb2dsZXZlbCA9IGxvZ2dpbmcuREVCVUcKLSAgICBzdGFydF9sb2dnaW5nKGxvZ2xldmVsKQotCi0gICAgaWYgYXJncy5fc3VicGFyc2VyX25hbWUgPT0gImxpc3QiOgotICAgICAgICBpZiBub3QgYXJncy5rYXJjaCA9PSAia2FyY2giIGFuZCBub3QgYXJncy5wcm9wZXJ0aWVzIGFuZCBub3QgYXJncy5wcm9wZXJ0eToKLSAgICAgICAgICAgIHByaW50ICgieW9jdG8tYnNwIGxpc3Q6IGVycm9yOiBvbmUgb2YgdGhlIGFyZ3VtZW50cyAtLXByb3BlcnRpZXMgLS1wcm9wZXJ0eSBpcyByZXF1aXJlZCIpCi0gICAgICAgICAgICBsaXN0X3BhcnNlci5wcmludF9oZWxwKCkKLQotICAgIGlmIGFyZ3MuX3N1YnBhcnNlcl9uYW1lID09ICJoZWxwIjoKLSAgICAgICAgaWYgbm90IGFyZ3Muc3ViY29tbWFuZDoKLSAgICAgICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKLSAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgIGVsaWYgbm90IGNvbW1hbmRfaGVscC5nZXQoYXJncy5zdWJjb21tYW5kKToKLSAgICAgICAgICAgIHByaW50ICgieW9jdG8tYnNwIGhlbHA6IE5vIG1hbnVhbCBlbnRyeSBmb3IgJXMiICUgYXJncy5zdWJjb21tYW5kKQotICAgICAgICAgICAgcmV0dXJuIDEKLQotICAgIHJldHVybiBhcmdzLmZ1bmMoYXJncykKLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0cnk6Ci0gICAgICAgIHJldCA9IG1haW4oKQotICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgIHJldCA9IDEKLSAgICAgICAgaW1wb3J0IHRyYWNlYmFjawotICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLSAgICBzeXMuZXhpdChyZXQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy95b2N0by1rZXJuZWwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy95b2N0by1rZXJuZWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDVjNzBkMGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L3NjcmlwdHMveW9jdG8ta2VybmVsCisrKyAvZGV2L251bGwKQEAgLTEsMzk5ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLSMgZXg6dHM9NDpzdz00OnN0cz00OmV0Ci0jIC0qLSB0YWItd2lkdGg6IDQ7IGMtYmFzaWMtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWwgLSotCi0jCi0jIENvcHlyaWdodCAoYykgMjAxMiwgSW50ZWwgQ29ycG9yYXRpb24uCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCi0jIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAotIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgotIwotIyBERVNDUklQVElPTgotIyAneW9jdG8ta2VybmVsJyBpcyB0aGUgWW9jdG8gQlNQIFRvb2wgdGhhdCBoZWxwcyB1c2VycyBtYW5hZ2Uga2VybmVsCi0jIGNvbmZpZyBvcHRpb25zIGFuZCBwYXRjaGVzIGZvciBhIFlvY3RvIEJTUC4gIEludm9raW5nIGl0IHdpdGhvdXQgYW55Ci0jIGFyZ3VtZW50cyB3aWxsIGRpc3BsYXkgaGVscCBzY3JlZW5zIGZvciB0aGUgJ3lvY3RvLWtlcm5lbCcgY29tbWFuZAotIyBhbmQgbGlzdCB0aGUgYXZhaWxhYmxlICd5b2N0by1rZXJuZWwnIHN1YmNvbW1hbmRzLiAgSW52b2tpbmcgYQotIyBzdWJjb21tYW5kIHdpdGhvdXQgYW55IGFyZ3VtZW50cyB3aWxsIGxpa2V3aXNlIGRpc3BsYXkgaGVscCBzY3JlZW5zCi0jIGZvciB0aGUgc3BlY2lmaWVkIHN1YmNvbW1hbmQuICBQbGVhc2UgdXNlIHRoYXQgaW50ZXJmYWNlIGZvcgotIyBkZXRhaWxlZCBoZWxwLgotIwotIyBBVVRIT1JTCi0jIFRvbSBaYW51c3NpIDx0b20uemFudXNzaSAoYXRdIGludGVsLmNvbT4KLSMKLQotX192ZXJzaW9uX18gPSAiMC4xLjAiCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IG9wdHBhcnNlCi1pbXBvcnQgbG9nZ2luZwotCi1zY3JpcHRzX3BhdGggPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChzeXMuYXJndlswXSkpKQotbGliX3BhdGggPSBzY3JpcHRzX3BhdGggKyAnL2xpYicKLXN5cy5wYXRoID0gc3lzLnBhdGggKyBbbGliX3BhdGhdCi0KLWZyb20gYnNwLmhlbHAgaW1wb3J0ICoKLWZyb20gYnNwLmtlcm5lbCBpbXBvcnQgKgotCi0KLWRlZiB5b2N0b19rZXJuZWxfY29uZmlnX2xpc3Rfc3ViY29tbWFuZChhcmdzLCB1c2FnZV9zdHIpOgotICAgICIiIgotICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgbGlzdGluZyBCU1AgY29uZmlnIG9wdGlvbnMuICBUaGUKLSAgICByZWFsIHdvcmsgaXMgZG9uZSBieSBic3Aua2VybmVsLnlvY3RvX2tlcm5lbF9jb25maWdfbGlzdCgpLgotICAgICIiIgotICAgIGxvZ2dpbmcuZGVidWcoInlvY3RvX2tlcm5lbF9jb25maWdfbGlzdF9zdWJjb21tYW5kIikKLQotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZSA9IHVzYWdlX3N0cikKLQotICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCi0KLSAgICBpZiBsZW4oYXJncykgIT0gMToKLSAgICAgICAgbG9nZ2luZy5lcnJvcigiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cywgZXhpdGluZ1xuIikKLSAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgeW9jdG9fa2VybmVsX2NvbmZpZ19saXN0KHNjcmlwdHNfcGF0aCwgYXJnc1swXSkKLQotCi1kZWYgeW9jdG9fa2VybmVsX2NvbmZpZ19hZGRfc3ViY29tbWFuZChhcmdzLCB1c2FnZV9zdHIpOgotICAgICIiIgotICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgYWRkaW5nIEJTUCBjb25maWcgaXRlbXMuICBUaGUgcmVhbCB3b3JrCi0gICAgaXMgZG9uZSBieSBic3Aua2VybmVsLnlvY3RvX2tlcm5lbF9jb25maWdfYWRkKCkuCi0gICAgIiIiCi0gICAgbG9nZ2luZy5kZWJ1ZygieW9jdG9fa2VybmVsX2NvbmZpZ19hZGRfc3ViY29tbWFuZCIpCi0KLSAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2UgPSB1c2FnZV9zdHIpCi0KLSAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzKQotCi0gICAgaWYgbGVuKGFyZ3MpIDwgMjoKLSAgICAgICAgbG9nZ2luZy5lcnJvcigiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cywgZXhpdGluZ1xuIikKLSAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgbWFjaGluZSA9IGFyZ3MucG9wKDApCi0gICAgeW9jdG9fa2VybmVsX2NvbmZpZ19hZGQoc2NyaXB0c19wYXRoLCBtYWNoaW5lLCBhcmdzKQotCi0KLWRlZiB5b2N0b19rZXJuZWxfY29uZmlnX3JtX3N1YmNvbW1hbmQoYXJncywgdXNhZ2Vfc3RyKToKLSAgICAiIiIKLSAgICBDb21tYW5kLWxpbmUgaGFuZGxpbmcgZm9yIHJlbW92aW5nIEJTUCBjb25maWcgaXRlbXMuICBUaGUgcmVhbAotICAgIHdvcmsgaXMgZG9uZSBieSBic3Aua2VybmVsLnlvY3RvX2tlcm5lbF9jb25maWdfcm0oKS4KLSAgICAiIiIKLSAgICBsb2dnaW5nLmRlYnVnKCJ5b2N0b19rZXJuZWxfY29uZmlnX3JtX3N1YmNvbW1hbmQiKQotCi0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlID0gdXNhZ2Vfc3RyKQotCi0gICAgKG9wdGlvbnMsIGFyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJncykKLQotICAgIGlmIGxlbihhcmdzKSAhPSAxOgotICAgICAgICBsb2dnaW5nLmVycm9yKCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzLCBleGl0aW5nXG4iKQotICAgICAgICBwYXJzZXIucHJpbnRfaGVscCgpCi0gICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICB5b2N0b19rZXJuZWxfY29uZmlnX3JtKHNjcmlwdHNfcGF0aCwgYXJnc1swXSkKLQotCi1kZWYgeW9jdG9fa2VybmVsX3BhdGNoX2xpc3Rfc3ViY29tbWFuZChhcmdzLCB1c2FnZV9zdHIpOgotICAgICIiIgotICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgbGlzdGluZyBCU1AgKFNSQ19VUkkgcGF0Y2hlcy4gIFRoZSByZWFsCi0gICAgd29yayBpcyBkb25lIGJ5IGJzcC5rZXJuZWwueW9jdG9fa2VybmVsX3BhdGNoX2xpc3QoKS4KLSAgICAiIiIKLSAgICBsb2dnaW5nLmRlYnVnKCJ5b2N0b19rZXJuZWxfcGF0Y2hfbGlzdF9zdWJjb21tYW5kIikKLQotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZSA9IHVzYWdlX3N0cikKLQotICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCi0KLSAgICBpZiBsZW4oYXJncykgIT0gMToKLSAgICAgICAgbG9nZ2luZy5lcnJvcigiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cywgZXhpdGluZ1xuIikKLSAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgeW9jdG9fa2VybmVsX3BhdGNoX2xpc3Qoc2NyaXB0c19wYXRoLCBhcmdzWzBdKQotCi0KLWRlZiB5b2N0b19rZXJuZWxfcGF0Y2hfYWRkX3N1YmNvbW1hbmQoYXJncywgdXNhZ2Vfc3RyKToKLSAgICAiIiIKLSAgICBDb21tYW5kLWxpbmUgaGFuZGxpbmcgZm9yIGFkZGluZyBCU1AgcGF0Y2hlcy4gIFRoZSByZWFsIHdvcmsgaXMKLSAgICBkb25lIGJ5IGJzcC5rZXJuZWwueW9jdG9fa2VybmVsX3BhdGNoX2FkZCgpLgotICAgICIiIgotICAgIGxvZ2dpbmcuZGVidWcoInlvY3RvX2tlcm5lbF9wYXRjaF9hZGRfc3ViY29tbWFuZCIpCi0KLSAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2UgPSB1c2FnZV9zdHIpCi0KLSAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzKQotCi0gICAgaWYgbGVuKGFyZ3MpIDwgMjoKLSAgICAgICAgbG9nZ2luZy5lcnJvcigiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cywgZXhpdGluZ1xuIikKLSAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgbWFjaGluZSA9IGFyZ3MucG9wKDApCi0gICAgeW9jdG9fa2VybmVsX3BhdGNoX2FkZChzY3JpcHRzX3BhdGgsIG1hY2hpbmUsIGFyZ3MpCi0KLQotZGVmIHlvY3RvX2tlcm5lbF9wYXRjaF9ybV9zdWJjb21tYW5kKGFyZ3MsIHVzYWdlX3N0cik6Ci0gICAgIiIiCi0gICAgQ29tbWFuZC1saW5lIGhhbmRsaW5nIGZvciByZW1vdmluZyBCU1AgcGF0Y2hlcy4gIFRoZSByZWFsIHdvcmsgaXMKLSAgICBkb25lIGJ5IGJzcC5rZXJuZWwueW9jdG9fa2VybmVsX3BhdGNoX3JtKCkuCi0gICAgIiIiCi0gICAgbG9nZ2luZy5kZWJ1ZygieW9jdG9fa2VybmVsX3BhdGNoX3JtX3N1YmNvbW1hbmQiKQotCi0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlID0gdXNhZ2Vfc3RyKQotCi0gICAgKG9wdGlvbnMsIGFyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJncykKLQotICAgIGlmIGxlbihhcmdzKSAhPSAxOgotICAgICAgICBsb2dnaW5nLmVycm9yKCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzLCBleGl0aW5nXG4iKQotICAgICAgICBwYXJzZXIucHJpbnRfaGVscCgpCi0gICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICB5b2N0b19rZXJuZWxfcGF0Y2hfcm0oc2NyaXB0c19wYXRoLCBhcmdzWzBdKQotCi0KLWRlZiB5b2N0b19rZXJuZWxfZmVhdHVyZV9saXN0X3N1YmNvbW1hbmQoYXJncywgdXNhZ2Vfc3RyKToKLSAgICAiIiIKLSAgICBDb21tYW5kLWxpbmUgaGFuZGxpbmcgZm9yIGxpc3RpbmcgdGhlIEJTUCBmZWF0dXJlcyB0aGF0IGFyZSBiZWluZwotICAgIHVzZWQgYnkgdGhlIEJTUC4gIFRoZSByZWFsIHdvcmsgaXMgZG9uZSBieQotICAgIGJzcC5rZXJuZWwueW9jdG9fa2VybmVsX2ZlYXR1cmVfbGlzdCgpLgotICAgICIiIgotICAgIGxvZ2dpbmcuZGVidWcoInlvY3RvX2tlcm5lbF9mZWF0dXJlX2xpc3Rfc3ViY29tbWFuZCIpCi0KLSAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2UgPSB1c2FnZV9zdHIpCi0KLSAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzKQotCi0gICAgaWYgbGVuKGFyZ3MpICE9IDE6Ci0gICAgICAgIGxvZ2dpbmcuZXJyb3IoIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMsIGV4aXRpbmdcbiIpCi0gICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIHlvY3RvX2tlcm5lbF9mZWF0dXJlX2xpc3Qoc2NyaXB0c19wYXRoLCBhcmdzWzBdKQotCi0KLWRlZiB5b2N0b19rZXJuZWxfZmVhdHVyZV9hZGRfc3ViY29tbWFuZChhcmdzLCB1c2FnZV9zdHIpOgotICAgICIiIgotICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgYWRkaW5nIHRoZSB1c2Ugb2Yga2VybmVsIGZlYXR1cmVzIHRvIGEKLSAgICBCU1AuICBUaGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkgYnNwLmtlcm5lbC55b2N0b19rZXJuZWxfZmVhdHVyZV9hZGQoKS4KLSAgICAiIiIKLSAgICBsb2dnaW5nLmRlYnVnKCJ5b2N0b19rZXJuZWxfZmVhdHVyZV9hZGRfc3ViY29tbWFuZCIpCi0KLSAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2UgPSB1c2FnZV9zdHIpCi0KLSAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzKQotCi0gICAgaWYgbGVuKGFyZ3MpIDwgMjoKLSAgICAgICAgbG9nZ2luZy5lcnJvcigiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cywgZXhpdGluZ1xuIikKLSAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgbWFjaGluZSA9IGFyZ3MucG9wKDApCi0gICAgeW9jdG9fa2VybmVsX2ZlYXR1cmVfYWRkKHNjcmlwdHNfcGF0aCwgbWFjaGluZSwgYXJncykKLQotCi1kZWYgeW9jdG9fa2VybmVsX2ZlYXR1cmVfcm1fc3ViY29tbWFuZChhcmdzLCB1c2FnZV9zdHIpOgotICAgICIiIgotICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgcmVtb3ZpbmcgdGhlIHVzZSBvZiBrZXJuZWwgZmVhdHVyZXMgZnJvbQotICAgIGEgQlNQLiAgVGhlIHJlYWwgd29yayBpcyBkb25lIGJ5IGJzcC5rZXJuZWwueW9jdG9fa2VybmVsX2ZlYXR1cmVfcm0oKS4KLSAgICAiIiIKLSAgICBsb2dnaW5nLmRlYnVnKCJ5b2N0b19rZXJuZWxfZmVhdHVyZV9ybV9zdWJjb21tYW5kIikKLQotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZSA9IHVzYWdlX3N0cikKLQotICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCi0KLSAgICBpZiBsZW4oYXJncykgIT0gMToKLSAgICAgICAgbG9nZ2luZy5lcnJvcigiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cywgZXhpdGluZ1xuIikKLSAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgeW9jdG9fa2VybmVsX2ZlYXR1cmVfcm0oc2NyaXB0c19wYXRoLCBhcmdzWzBdKQotCi0KLWRlZiB5b2N0b19rZXJuZWxfYXZhaWxhYmxlX2ZlYXR1cmVzX2xpc3Rfc3ViY29tbWFuZChhcmdzLCB1c2FnZV9zdHIpOgotICAgICIiIgotICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgbGlzdGluZyBhbGwgdGhlIGtlcm5lbCBmZWF0dXJlcwotICAgIGF2YWlsYWJsZSBmb3IgdXNlIGluIGEgQlNQLiAgVGhpcyBpbmNsdWRlcyB0aGUgZmVhdHVyZXMgcHJlc2VudCBpbgotICAgIHRoZSBtZXRhIGJyYW5jaChlcykgb2YgdGhlIHBvaW50ZWQtdG8gcmVwbyhzKSBhcyB3ZWxsIGFzIHRoZSBsb2NhbAotICAgIGZlYXR1cmVzIGFkZGVkIGluIHJlY2lwZS1zcGFjZSB0byB0aGUgY3VycmVudCBCU1AgYXMgd2VsbC4gIFRoZQotICAgIHJlYWwgd29yayBpcyBkb25lIGJ5IGJzcC5rZXJuZWwueW9jdG9fa2VybmVsX2F2YWlsYWJsZV9mZWF0dXJlc19saXN0KCkuCi0gICAgIiIiCi0gICAgbG9nZ2luZy5kZWJ1ZygieW9jdG9fa2VybmVsX2ZlYXR1cmVfYXZhaWxhYmxlX2ZlYXR1cmVzX2xpc3Rfc3ViY29tbWFuZCIpCi0KLSAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2UgPSB1c2FnZV9zdHIpCi0KLSAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzKQotCi0gICAgaWYgbGVuKGFyZ3MpICE9IDE6Ci0gICAgICAgIGxvZ2dpbmcuZXJyb3IoIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMsIGV4aXRpbmdcbiIpCi0gICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIHlvY3RvX2tlcm5lbF9hdmFpbGFibGVfZmVhdHVyZXNfbGlzdChzY3JpcHRzX3BhdGgsIGFyZ3NbMF0pCi0KLQotZGVmIHlvY3RvX2tlcm5lbF9mZWF0dXJlX2Rlc2NyaWJlX3N1YmNvbW1hbmQoYXJncywgdXNhZ2Vfc3RyKToKLSAgICAiIiIKLSAgICBDb21tYW5kLWxpbmUgaGFuZGxpbmcgZm9yIGxpc3RpbmcgdGhlIGRlc2NyaXB0aW9uIG9mIGEgc3BlY2lmaWMKLSAgICBrZXJuZWwgZmVhdHVyZSBhdmFpbGFibGUgZm9yIHVzZSBpbiBhIEJTUC4gIFRoaXMgaW5jbHVkZXMgdGhlCi0gICAgZmVhdHVyZXMgcHJlc2VudCBpbiB0aGUgbWV0YSBicmFuY2goZXMpIG9mIHRoZSBwb2ludGVkLXRvIHJlcG8ocykKLSAgICBhcyB3ZWxsIGFzIHRoZSBsb2NhbCBmZWF0dXJlcyBhZGRlZCBpbiByZWNpcGUtc3BhY2UgdG8gdGhlIGN1cnJlbnQKLSAgICBCU1AgYXMgd2VsbC4gIFRoZSByZWFsIHdvcmsgaXMgZG9uZSBieQotICAgIGJzcC5rZXJuZWwueW9jdG9fa2VybmVsX2ZlYXR1cmVfZGVzY3JpYmUoKS4KLSAgICAiIiIKLSAgICBsb2dnaW5nLmRlYnVnKCJ5b2N0b19rZXJuZWxfZmVhdHVyZV9kZXNjcmliZV9zdWJjb21tYW5kIikKLQotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZSA9IHVzYWdlX3N0cikKLQotICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCi0KLSAgICBpZiBsZW4oYXJncykgIT0gMjoKLSAgICAgICAgbG9nZ2luZy5lcnJvcigiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cywgZXhpdGluZ1xuIikKLSAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgeW9jdG9fa2VybmVsX2ZlYXR1cmVfZGVzY3JpYmUoc2NyaXB0c19wYXRoLCBhcmdzWzBdLCBhcmdzWzFdKQotCi0KLWRlZiB5b2N0b19rZXJuZWxfZmVhdHVyZV9jcmVhdGVfc3ViY29tbWFuZChhcmdzLCB1c2FnZV9zdHIpOgotICAgICIiIgotICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgY3JlYXRpbmcgYSByZWNpcGUtc3BhY2Uga2VybmVsIGZlYXR1cmUKLSAgICBpbiBhIEJTUC4gIFRoZSByZWFsIHdvcmsgaXMgZG9uZSBieQotICAgIGJzcC5rZXJuZWwueW9jdG9fa2VybmVsX2ZlYXR1cmVfY3JlYXRlKCkuCi0gICAgIiIiCi0gICAgbG9nZ2luZy5kZWJ1ZygieW9jdG9fa2VybmVsX2ZlYXR1cmVfY3JlYXRlX3N1YmNvbW1hbmQiKQotCi0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlID0gdXNhZ2Vfc3RyKQotCi0gICAgKG9wdGlvbnMsIGFyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJncykKLQotICAgIGlmIGxlbihhcmdzKSA8IDQ6Ci0gICAgICAgIGxvZ2dpbmcuZXJyb3IoIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMsIGV4aXRpbmdcbiIpCi0gICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIG1hY2hpbmUgPSBhcmdzLnBvcCgwKQotICAgIHlvY3RvX2tlcm5lbF9mZWF0dXJlX2NyZWF0ZShzY3JpcHRzX3BhdGgsIG1hY2hpbmUsIGFyZ3MpCi0KLQotZGVmIHlvY3RvX2tlcm5lbF9mZWF0dXJlX2Rlc3Ryb3lfc3ViY29tbWFuZChhcmdzLCB1c2FnZV9zdHIpOgotICAgICIiIgotICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgcmVtb3ZpbmcgYSByZWNpcGUtc3BhY2Uga2VybmVsIGZlYXR1cmUKLSAgICBmcm9tIGEgQlNQLiAgVGhlIHJlYWwgd29yayBpcyBkb25lIGJ5Ci0gICAgYnNwLmtlcm5lbC55b2N0b19rZXJuZWxfZmVhdHVyZV9kZXN0cm95KCkuCi0gICAgIiIiCi0gICAgbG9nZ2luZy5kZWJ1ZygieW9jdG9fa2VybmVsX2ZlYXR1cmVfZGVzdHJveV9zdWJjb21tYW5kIikKLQotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZSA9IHVzYWdlX3N0cikKLQotICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCi0KLSAgICBpZiBsZW4oYXJncykgIT0gMjoKLSAgICAgICAgbG9nZ2luZy5lcnJvcigiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cywgZXhpdGluZ1xuIikKLSAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgeW9jdG9fa2VybmVsX2ZlYXR1cmVfZGVzdHJveShzY3JpcHRzX3BhdGgsIGFyZ3NbMF0sIGFyZ3NbMV0pCi0KLQotc3ViY29tbWFuZHMgPSB7Ci0gICAgImNvbmZpZy1saXN0IjogW3lvY3RvX2tlcm5lbF9jb25maWdfbGlzdF9zdWJjb21tYW5kLAotICAgICAgICAgICAgICAgICAgICB5b2N0b19rZXJuZWxfY29uZmlnX2xpc3RfdXNhZ2UsCi0gICAgICAgICAgICAgICAgICAgIHlvY3RvX2tlcm5lbF9jb25maWdfbGlzdF9oZWxwXSwKLSAgICAiY29uZmlnLWFkZCI6IFt5b2N0b19rZXJuZWxfY29uZmlnX2FkZF9zdWJjb21tYW5kLAotICAgICAgICAgICAgICAgICAgIHlvY3RvX2tlcm5lbF9jb25maWdfYWRkX3VzYWdlLAotICAgICAgICAgICAgICAgICAgIHlvY3RvX2tlcm5lbF9jb25maWdfYWRkX2hlbHBdLAotICAgICJjb25maWctcm0iOiBbeW9jdG9fa2VybmVsX2NvbmZpZ19ybV9zdWJjb21tYW5kLAotICAgICAgICAgICAgICAgICAgeW9jdG9fa2VybmVsX2NvbmZpZ19ybV91c2FnZSwKLSAgICAgICAgICAgICAgICAgIHlvY3RvX2tlcm5lbF9jb25maWdfcm1faGVscF0sCi0gICAgInBhdGNoLWxpc3QiOiBbeW9jdG9fa2VybmVsX3BhdGNoX2xpc3Rfc3ViY29tbWFuZCwKLSAgICAgICAgICAgICAgICAgICB5b2N0b19rZXJuZWxfcGF0Y2hfbGlzdF91c2FnZSwKLSAgICAgICAgICAgICAgICAgICB5b2N0b19rZXJuZWxfcGF0Y2hfbGlzdF9oZWxwXSwKLSAgICAicGF0Y2gtYWRkIjogW3lvY3RvX2tlcm5lbF9wYXRjaF9hZGRfc3ViY29tbWFuZCwKLSAgICAgICAgICAgICAgICAgIHlvY3RvX2tlcm5lbF9wYXRjaF9hZGRfdXNhZ2UsCi0gICAgICAgICAgICAgICAgICB5b2N0b19rZXJuZWxfcGF0Y2hfYWRkX2hlbHBdLAotICAgICJwYXRjaC1ybSI6IFt5b2N0b19rZXJuZWxfcGF0Y2hfcm1fc3ViY29tbWFuZCwKLSAgICAgICAgICAgICAgICAgeW9jdG9fa2VybmVsX3BhdGNoX3JtX3VzYWdlLAotICAgICAgICAgICAgICAgICB5b2N0b19rZXJuZWxfcGF0Y2hfcm1faGVscF0sCi0gICAgImZlYXR1cmUtbGlzdCI6IFt5b2N0b19rZXJuZWxfZmVhdHVyZV9saXN0X3N1YmNvbW1hbmQsCi0gICAgICAgICAgICAgICAgICAgeW9jdG9fa2VybmVsX2ZlYXR1cmVfbGlzdF91c2FnZSwKLSAgICAgICAgICAgICAgICAgICB5b2N0b19rZXJuZWxfZmVhdHVyZV9saXN0X2hlbHBdLAotICAgICJmZWF0dXJlLWFkZCI6IFt5b2N0b19rZXJuZWxfZmVhdHVyZV9hZGRfc3ViY29tbWFuZCwKLSAgICAgICAgICAgICAgICAgIHlvY3RvX2tlcm5lbF9mZWF0dXJlX2FkZF91c2FnZSwKLSAgICAgICAgICAgICAgICAgIHlvY3RvX2tlcm5lbF9mZWF0dXJlX2FkZF9oZWxwXSwKLSAgICAiZmVhdHVyZS1ybSI6IFt5b2N0b19rZXJuZWxfZmVhdHVyZV9ybV9zdWJjb21tYW5kLAotICAgICAgICAgICAgICAgICB5b2N0b19rZXJuZWxfZmVhdHVyZV9ybV91c2FnZSwKLSAgICAgICAgICAgICAgICAgeW9jdG9fa2VybmVsX2ZlYXR1cmVfcm1faGVscF0sCi0gICAgImZlYXR1cmVzLWxpc3QiOiBbeW9jdG9fa2VybmVsX2F2YWlsYWJsZV9mZWF0dXJlc19saXN0X3N1YmNvbW1hbmQsCi0gICAgICAgICAgICAgICAgIHlvY3RvX2tlcm5lbF9hdmFpbGFibGVfZmVhdHVyZXNfbGlzdF91c2FnZSwKLSAgICAgICAgICAgICAgICAgeW9jdG9fa2VybmVsX2F2YWlsYWJsZV9mZWF0dXJlc19saXN0X2hlbHBdLAotICAgICJmZWF0dXJlLWRlc2NyaWJlIjogW3lvY3RvX2tlcm5lbF9mZWF0dXJlX2Rlc2NyaWJlX3N1YmNvbW1hbmQsCi0gICAgICAgICAgICAgICAgIHlvY3RvX2tlcm5lbF9mZWF0dXJlX2Rlc2NyaWJlX3VzYWdlLAotICAgICAgICAgICAgICAgICB5b2N0b19rZXJuZWxfZmVhdHVyZV9kZXNjcmliZV9oZWxwXSwKLSAgICAiZmVhdHVyZS1jcmVhdGUiOiBbeW9jdG9fa2VybmVsX2ZlYXR1cmVfY3JlYXRlX3N1YmNvbW1hbmQsCi0gICAgICAgICAgICAgICAgIHlvY3RvX2tlcm5lbF9mZWF0dXJlX2NyZWF0ZV91c2FnZSwKLSAgICAgICAgICAgICAgICAgeW9jdG9fa2VybmVsX2ZlYXR1cmVfY3JlYXRlX2hlbHBdLAotICAgICJmZWF0dXJlLWRlc3Ryb3kiOiBbeW9jdG9fa2VybmVsX2ZlYXR1cmVfZGVzdHJveV9zdWJjb21tYW5kLAotICAgICAgICAgICAgICAgICB5b2N0b19rZXJuZWxfZmVhdHVyZV9kZXN0cm95X3VzYWdlLAotICAgICAgICAgICAgICAgICB5b2N0b19rZXJuZWxfZmVhdHVyZV9kZXN0cm95X2hlbHBdLAotfQotCi0KLWRlZiBzdGFydF9sb2dnaW5nKGxvZ2xldmVsKToKLSAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGZpbGVuYW1lID0gJ3lvY3RvLWtlcm5lbC5sb2cnLCBmaWxlbW9kZSA9ICd3JywgbGV2ZWw9bG9nbGV2ZWwpCi0KLQotZGVmIG1haW4oKToKLSAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodmVyc2lvbiA9ICJ5b2N0by1rZXJuZWwgdmVyc2lvbiAlcyIgJSBfX3ZlcnNpb25fXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNhZ2UgPSB5b2N0b19rZXJuZWxfdXNhZ2UpCi0KLSAgICBwYXJzZXIuZGlzYWJsZV9pbnRlcnNwZXJzZWRfYXJncygpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1EIiwgIi0tZGVidWciLCBkZXN0ID0gImRlYnVnIiwgYWN0aW9uID0gInN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgPSBGYWxzZSwgaGVscCA9ICJvdXRwdXQgZGVidWcgaW5mb3JtYXRpb24iKQotCi0gICAgKG9wdGlvbnMsIGFyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgbG9nbGV2ZWwgPSBsb2dnaW5nLklORk8KLSAgICBpZiBvcHRpb25zLmRlYnVnOgotICAgICAgICBsb2dsZXZlbCA9IGxvZ2dpbmcuREVCVUcKLSAgICBzdGFydF9sb2dnaW5nKGxvZ2xldmVsKQotCi0gICAgaWYgbGVuKGFyZ3MpOgotICAgICAgICBpZiBhcmdzWzBdID09ICJoZWxwIjoKLSAgICAgICAgICAgIGlmIGxlbihhcmdzKSA9PSAxOgotICAgICAgICAgICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKLSAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQotICAgICAgICAgICAgc2MgPSAxCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzYyA9IDAKLQotICAgICAgICBpZiBhcmdzW3NjXSA9PSAiY29uZmlnIiBvciBhcmdzW3NjXSA9PSAicGF0Y2giIG9yIFwKLSAgICAgICAgICAgICAgICBhcmdzW3NjXSA9PSAiZmVhdHVyZSIgb3IgYXJnc1tzY10gPT0gImZlYXR1cmVzIjoKLSAgICAgICAgICAgIGlmIGxlbihhcmdzKSA8IDIgKyBzYzoKLSAgICAgICAgICAgICAgICBwYXJzZXIucHJpbnRfaGVscCgpCi0gICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAgICAgICAgIGFyZ3Nbc2NdICs9ICItIiArIGFyZ3Nbc2MgKyAxXQotICAgICAgICAgICAgYXJncy5wb3Aoc2MgKyAxKQotCi0gICAgaW52b2tlX3N1YmNvbW1hbmQoYXJncywgcGFyc2VyLCB5b2N0b19rZXJuZWxfaGVscF91c2FnZSwgc3ViY29tbWFuZHMpCi0KLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0cnk6Ci0gICAgICAgIHJldCA9IG1haW4oKQotICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgIHJldCA9IDEKLSAgICAgICAgaW1wb3J0IHRyYWNlYmFjawotICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLSAgICBzeXMuZXhpdChyZXQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvc2NyaXB0cy95b2N0by1sYXllciBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3lvY3RvLWxheWVyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBkNThmYWNhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9zY3JpcHRzL3lvY3RvLWxheWVyCisrKyAvZGV2L251bGwKQEAgLTEsMTUxICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLSMgZXg6dHM9NDpzdz00OnN0cz00OmV0Ci0jIC0qLSB0YWItd2lkdGg6IDQ7IGMtYmFzaWMtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWwgLSotCi0jCi0jIENvcHlyaWdodCAoYykgMjAxMiwgSW50ZWwgQ29ycG9yYXRpb24uCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCi0jIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAotIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgotIwotIyBERVNDUklQVElPTgotIyAneW9jdG8tbGF5ZXInIGlzIHRoZSBZb2N0byBUb29sIHRoYXQgaGVscHMgdXNlcnMgY3JlYXRlIGEgbmV3IFlvY3RvCi0jIGxheWVyLiAgSW52b2tpbmcgaXQgd2l0aG91dCBhbnkgYXJndW1lbnRzIHdpbGwgZGlzcGxheSBoZWxwIHNjcmVlbnMKLSMgZm9yIHRoZSAneW9jdG8tbGF5ZXInIGNvbW1hbmQgYW5kIGxpc3QgdGhlIGF2YWlsYWJsZSAneW9jdG8tbGF5ZXInCi0jIHN1YmNvbW1hbmRzLiAgSW52b2tpbmcgYSBzdWJjb21tYW5kIHdpdGhvdXQgYW55IGFyZ3VtZW50cyB3aWxsCi0jIGxpa2V3aXNlIGRpc3BsYXkgaGVscCBzY3JlZW5zIGZvciB0aGUgc3BlY2lmaWVkIHN1YmNvbW1hbmQuICBQbGVhc2UKLSMgdXNlIHRoYXQgaW50ZXJmYWNlIGZvciBkZXRhaWxlZCBoZWxwLgotIwotIyBBVVRIT1JTCi0jIFRvbSBaYW51c3NpIDx0b20uemFudXNzaSAoYXRdIGludGVsLmNvbT4KLSMKLQotX192ZXJzaW9uX18gPSAiMC4xLjAiCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IG9wdHBhcnNlCi1pbXBvcnQgbG9nZ2luZwotCi1zY3JpcHRzX3BhdGggPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChzeXMuYXJndlswXSkpKQotbGliX3BhdGggPSBzY3JpcHRzX3BhdGggKyAnL2xpYicKLXN5cy5wYXRoID0gc3lzLnBhdGggKyBbbGliX3BhdGhdCi0KLWZyb20gYnNwLmhlbHAgaW1wb3J0ICoKLWZyb20gYnNwLmVuZ2luZSBpbXBvcnQgKgotCi0KLWRlZiB5b2N0b19sYXllcl9jcmVhdGVfc3ViY29tbWFuZChhcmdzLCB1c2FnZV9zdHIpOgotICAgICIiIgotICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgbGF5ZXIgY3JlYXRpb24uICBUaGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkKLSAgICBic3AuZW5naW5lLnlvY3RvX2xheWVyX2NyZWF0ZSgpCi0gICAgIiIiCi0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlID0gdXNhZ2Vfc3RyKQotCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1vIiwgIi0tb3V0ZGlyIiwgZGVzdCA9ICJvdXRkaXIiLCBhY3Rpb24gPSAic3RvcmUiLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHAgPSAibmFtZSBvZiBsYXllciBkaXIgdG8gY3JlYXRlIikKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLWkiLCAiLS1pbmZpbGUiLCBkZXN0ID0gInByb3BlcnRpZXNfZmlsZSIsIGFjdGlvbiA9ICJzdG9yZSIsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscCA9ICJuYW1lIG9mIGZpbGUgY29udGFpbmluZyB0aGUgdmFsdWVzIGZvciBsYXllciBpbnB1dCBwcm9wZXJ0aWVzIGFzIGEgSlNPTiBmaWxlIikKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLWMiLCAiLS1jb2RlZHVtcCIsIGRlc3QgPSAiY29kZWR1bXAiLCBhY3Rpb24gPSAic3RvcmVfdHJ1ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCA9IEZhbHNlLCBoZWxwID0gImR1bXAgdGhlIGdlbmVyYXRlZCBjb2RlIHRvIGxheWVyZ2VuLm91dCIpCi0gICAgKG9wdGlvbnMsIGFyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJncykKLQotICAgIGlmIGxlbihhcmdzKSA8IDEgb3IgbGVuKGFyZ3MpID4gMjoKLSAgICAgICAgbG9nZ2luZy5lcnJvcigiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cywgZXhpdGluZ1xuIikKLSAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgbGF5ZXJfbmFtZSA9IGFyZ3NbMF0KLSAgICBwcm9wZXJ0aWVzID0gIiIKLQotICAgIGlmIGxlbihhcmdzKSA9PSAyOgotICAgICAgICBsYXllcl9wcmlvcml0eSA9IGFyZ3NbMV0KLSAgICAgICAgcHJvcGVydGllcyA9ICd7ImxheWVyX3ByaW9yaXR5IjoiJyArIGxheWVyX3ByaW9yaXR5ICsgJyJ9JwotCi0gICAgaWYgb3B0aW9ucy5vdXRkaXI6Ci0gICAgICAgIGxheWVyX291dHB1dF9kaXIgPSBvcHRpb25zLm91dGRpcgotICAgIGVsc2U6Ci0gICAgICAgIHByZWZpeD0ibWV0YS0iCi0gICAgICAgIGlmIG5vdCBsYXllcl9uYW1lLnN0YXJ0c3dpdGgocHJlZml4KToKLSAgICAgICAgICAgIGxheWVyX291dHB1dF9kaXI9IiVzJXMiJShwcmVmaXgsbGF5ZXJfbmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxheWVyX291dHB1dF9kaXI9bGF5ZXJfbmFtZQotCi0gICAgeW9jdG9fbGF5ZXJfY3JlYXRlKGxheWVyX25hbWUsIHNjcmlwdHNfcGF0aCwgbGF5ZXJfb3V0cHV0X2Rpciwgb3B0aW9ucy5jb2RlZHVtcCwgb3B0aW9ucy5wcm9wZXJ0aWVzX2ZpbGUsIHByb3BlcnRpZXMpCi0KLQotZGVmIHlvY3RvX2xheWVyX2xpc3Rfc3ViY29tbWFuZChhcmdzLCB1c2FnZV9zdHIpOgotICAgICIiIgotICAgIENvbW1hbmQtbGluZSBoYW5kbGluZyBmb3IgbGlzdGluZyBhdmFpbGFibGUgbGF5ZXIgcHJvcGVydGllcyBhbmQKLSAgICB2YWx1ZXMuICBUaGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkgYnNwLmVuZ2luZS55b2N0b19sYXllcl9saXN0KCkKLSAgICAiIiIKLSAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2UgPSB1c2FnZV9zdHIpCi0KLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLW8iLCAiLS1vdXRmaWxlIiwgYWN0aW9uID0gInN0b3JlIiwgZGVzdCA9ICJwcm9wZXJ0aWVzX2ZpbGUiLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHAgPSAiZHVtcCB0aGUgcG9zc2libGUgdmFsdWVzIGZvciBsYXllciBwcm9wZXJ0aWVzIHRvIGEgSlNPTiBmaWxlIikKLQotICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCi0KLSAgICBpZiBub3QgeW9jdG9fbGF5ZXJfbGlzdChhcmdzLCBzY3JpcHRzX3BhdGgsIG9wdGlvbnMucHJvcGVydGllc19maWxlKToKLSAgICAgICAgbG9nZ2luZy5lcnJvcigiQmFkIGxpc3QgYXJndW1lbnRzLCBleGl0aW5nXG4iKQotICAgICAgICBwYXJzZXIucHJpbnRfaGVscCgpCi0gICAgICAgIHN5cy5leGl0KDEpCi0KLQotc3ViY29tbWFuZHMgPSB7Ci0gICAgImNyZWF0ZSI6IFt5b2N0b19sYXllcl9jcmVhdGVfc3ViY29tbWFuZCwKLSAgICAgICAgICAgICAgIHlvY3RvX2xheWVyX2NyZWF0ZV91c2FnZSwKLSAgICAgICAgICAgICAgIHlvY3RvX2xheWVyX2NyZWF0ZV9oZWxwXSwKLSAgICAibGlzdCI6ICAgW3lvY3RvX2xheWVyX2xpc3Rfc3ViY29tbWFuZCwKLSAgICAgICAgICAgICAgIHlvY3RvX2xheWVyX2xpc3RfdXNhZ2UsCi0gICAgICAgICAgICAgICB5b2N0b19sYXllcl9saXN0X2hlbHBdLAotfQotCi0KLWRlZiBzdGFydF9sb2dnaW5nKGxvZ2xldmVsKToKLSAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGZpbGVuYW1lID0gJ3lvY3RvLWxheWVyLmxvZycsIGZpbGVtb2RlID0gJ3cnLCBsZXZlbD1sb2dsZXZlbCkKLQotCi1kZWYgbWFpbigpOgotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih2ZXJzaW9uID0gInlvY3RvLWxheWVyIHZlcnNpb24gJXMiICUgX192ZXJzaW9uX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzYWdlID0geW9jdG9fbGF5ZXJfdXNhZ2UpCi0KLSAgICBwYXJzZXIuZGlzYWJsZV9pbnRlcnNwZXJzZWRfYXJncygpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1EIiwgIi0tZGVidWciLCBkZXN0ID0gImRlYnVnIiwgYWN0aW9uID0gInN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgPSBGYWxzZSwgaGVscCA9ICJvdXRwdXQgZGVidWcgaW5mb3JtYXRpb24iKQotCi0gICAgKG9wdGlvbnMsIGFyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgbG9nbGV2ZWwgPSBsb2dnaW5nLklORk8KLSAgICBpZiBvcHRpb25zLmRlYnVnOgotICAgICAgICBsb2dsZXZlbCA9IGxvZ2dpbmcuREVCVUcKLSAgICBzdGFydF9sb2dnaW5nKGxvZ2xldmVsKQotCi0gICAgaWYgbGVuKGFyZ3MpOgotICAgICAgICBpZiBhcmdzWzBdID09ICJoZWxwIjoKLSAgICAgICAgICAgIGlmIGxlbihhcmdzKSA9PSAxOgotICAgICAgICAgICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKLSAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgaW52b2tlX3N1YmNvbW1hbmQoYXJncywgcGFyc2VyLCB5b2N0b19sYXllcl9oZWxwX3VzYWdlLCBzdWJjb21tYW5kcykKLQotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRyeToKLSAgICAgICAgcmV0ID0gbWFpbigpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgcmV0ID0gMQotICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCi0gICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQotICAgIHN5cy5leGl0KHJldCkKLQo=